changeset 1333:966032c7a3aa

did: formatting
author sam <sam@basx.dev>
date Thu, 22 Aug 2024 18:32:21 +0700
parents df3c075e5dea
children d5a6f69dc855
files semicongine/audio/generators.nim semicongine/audio/mixer.nim semicongine/audio/platform/linux.nim semicongine/audio/platform/windows.nim semicongine/audio/resources.nim semicongine/build.nim semicongine/contrib/algorithms/collision.nim semicongine/contrib/algorithms/noise.nim semicongine/contrib/algorithms/texture_packing.nim semicongine/contrib/settings.nim semicongine/contrib/steam.nim semicongine/core.nim semicongine/core/buildconfig.nim semicongine/core/matrix.nim semicongine/core/utils.nim semicongine/core/vector.nim semicongine/events.nim semicongine/gltf.nim semicongine/image.nim semicongine/input.nim semicongine/rendering.nim semicongine/rendering/platform/linux.nim semicongine/rendering/platform/windows.nim semicongine/rendering/renderer.nim semicongine/rendering/renderpasses.nim semicongine/rendering/shaders.nim semicongine/rendering/swapchain.nim semicongine/rendering/vulkan/api.nim semicongine/rendering/vulkan/platform/win32.nim semicongine/rendering/vulkan/platform/xlib.nim semicongine/rendering/vulkan_wrappers.nim semicongine/resources.nim semicongine/storage.nim semicongine/text.nim semicongine/text/font.nim semicongine/text/textbox.nim semicongine/thirdparty/db_connector/db_common.nim semicongine/thirdparty/db_connector/db_sqlite.nim semicongine/thirdparty/db_connector/private/dbutils.nim semicongine/thirdparty/db_connector/sqlite3.nim semicongine/thirdparty/winim/winim/clr.nim semicongine/thirdparty/winim/winim/com.nim semicongine/thirdparty/winim/winim/core.nim semicongine/thirdparty/winim/winim/extra.nim semicongine/thirdparty/winim/winim/inc/aclapi.nim semicongine/thirdparty/winim/winim/inc/commctrl.nim semicongine/thirdparty/winim/winim/inc/commdlg.nim semicongine/thirdparty/winim/winim/inc/dde.nim semicongine/thirdparty/winim/winim/inc/dhcpcsdk.nim semicongine/thirdparty/winim/winim/inc/dwmapi.nim semicongine/thirdparty/winim/winim/inc/gdiplus.nim semicongine/thirdparty/winim/winim/inc/http.nim semicongine/thirdparty/winim/winim/inc/imagehlp.nim semicongine/thirdparty/winim/winim/inc/imm.nim semicongine/thirdparty/winim/winim/inc/iphlpapi.nim semicongine/thirdparty/winim/winim/inc/lm.nim semicongine/thirdparty/winim/winim/inc/lzexpand.nim semicongine/thirdparty/winim/winim/inc/mcx.nim semicongine/thirdparty/winim/winim/inc/mmsystem.nim semicongine/thirdparty/winim/winim/inc/mscoree.nim semicongine/thirdparty/winim/winim/inc/mshtml.nim semicongine/thirdparty/winim/winim/inc/msi.nim semicongine/thirdparty/winim/winim/inc/nb30.nim semicongine/thirdparty/winim/winim/inc/objbase.nim semicongine/thirdparty/winim/winim/inc/objext.nim semicongine/thirdparty/winim/winim/inc/odbc.nim semicongine/thirdparty/winim/winim/inc/powrprof.nim semicongine/thirdparty/winim/winim/inc/psapi.nim semicongine/thirdparty/winim/winim/inc/ras.nim semicongine/thirdparty/winim/winim/inc/regstr.nim semicongine/thirdparty/winim/winim/inc/richedit.nim semicongine/thirdparty/winim/winim/inc/rpc.nim semicongine/thirdparty/winim/winim/inc/security.nim semicongine/thirdparty/winim/winim/inc/setupapi.nim semicongine/thirdparty/winim/winim/inc/shellapi.nim semicongine/thirdparty/winim/winim/inc/snmp.nim semicongine/thirdparty/winim/winim/inc/subauth.nim semicongine/thirdparty/winim/winim/inc/tlhelp32.nim semicongine/thirdparty/winim/winim/inc/uiautomation.nim semicongine/thirdparty/winim/winim/inc/usp10.nim semicongine/thirdparty/winim/winim/inc/uxtheme.nim semicongine/thirdparty/winim/winim/inc/vfw.nim semicongine/thirdparty/winim/winim/inc/virtdisk.nim semicongine/thirdparty/winim/winim/inc/vssym32.nim semicongine/thirdparty/winim/winim/inc/winbase.nim semicongine/thirdparty/winim/winim/inc/wincodec.nim semicongine/thirdparty/winim/winim/inc/wincon.nim semicongine/thirdparty/winim/winim/inc/wincred.nim semicongine/thirdparty/winim/winim/inc/wincrypt.nim semicongine/thirdparty/winim/winim/inc/windef.nim semicongine/thirdparty/winim/winim/inc/windns.nim semicongine/thirdparty/winim/winim/inc/winefs.nim semicongine/thirdparty/winim/winim/inc/winerror.nim semicongine/thirdparty/winim/winim/inc/wingdi.nim semicongine/thirdparty/winim/winim/inc/winhttp.nim semicongine/thirdparty/winim/winim/inc/winimbase.nim semicongine/thirdparty/winim/winim/inc/wininet.nim semicongine/thirdparty/winim/winim/inc/winioctl.nim semicongine/thirdparty/winim/winim/inc/winldap.nim semicongine/thirdparty/winim/winim/inc/winnetwk.nim semicongine/thirdparty/winim/winim/inc/winnls.nim semicongine/thirdparty/winim/winim/inc/winperf.nim semicongine/thirdparty/winim/winim/inc/winreg.nim semicongine/thirdparty/winim/winim/inc/winscard.nim semicongine/thirdparty/winim/winim/inc/winsock.nim semicongine/thirdparty/winim/winim/inc/winspool.nim semicongine/thirdparty/winim/winim/inc/winsvc.nim semicongine/thirdparty/winim/winim/inc/wintrust.nim semicongine/thirdparty/winim/winim/inc/winuser.nim semicongine/thirdparty/winim/winim/inc/winver.nim semicongine/thirdparty/winim/winim/shell.nim semicongine/thirdparty/winim/winim/utils.nim semicongine/thirdparty/winim/winim/winstr.nim semicongine/thirdparty/x11/keysym.nim semicongine/thirdparty/x11/x.nim semicongine/thirdparty/x11/x11pragma.nim semicongine/thirdparty/x11/xatom.nim semicongine/thirdparty/x11/xcms.nim semicongine/thirdparty/x11/xf86dga.nim semicongine/thirdparty/x11/xf86vmode.nim semicongine/thirdparty/x11/xft.nim semicongine/thirdparty/x11/xi.nim semicongine/thirdparty/x11/xi2.nim semicongine/thirdparty/x11/xinerama.nim semicongine/thirdparty/x11/xinput.nim semicongine/thirdparty/x11/xinput2.nim semicongine/thirdparty/x11/xkb.nim semicongine/thirdparty/x11/xkblib.nim semicongine/thirdparty/x11/xlib.nim semicongine/thirdparty/x11/xrandr.nim semicongine/thirdparty/x11/xresource.nim semicongine/thirdparty/x11/xshm.nim semicongine/thirdparty/x11/xtst.nim semicongine/thirdparty/x11/xutil.nim semicongine/thirdparty/x11/xv.nim semicongine/thirdparty/x11/xvlib.nim semicongine/thirdparty/zippy/zippy.nim semicongine/thirdparty/zippy/zippy/adler32_simd.nim semicongine/thirdparty/zippy/zippy/bitstreams.nim semicongine/thirdparty/zippy/zippy/common.nim semicongine/thirdparty/zippy/zippy/crc.nim semicongine/thirdparty/zippy/zippy/crc32_simd.nim semicongine/thirdparty/zippy/zippy/deflate.nim semicongine/thirdparty/zippy/zippy/gzip.nim semicongine/thirdparty/zippy/zippy/inflate.nim semicongine/thirdparty/zippy/zippy/internal.nim semicongine/thirdparty/zippy/zippy/lz77.nim semicongine/thirdparty/zippy/zippy/snappy.nim semicongine/thirdparty/zippy/zippy/ziparchives.nim semicongine/thirdparty/zippy/zippy/ziparchives_v1.nim
diffstat 150 files changed, 214599 insertions(+), 51708 deletions(-) [+]
line wrap: on
line diff
--- a/semicongine/audio/generators.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/audio/generators.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,6 +1,7 @@
 proc sinewave(f: float): proc(x: float): float =
   proc ret(x: float): float =
     sin(x * 2 * Pi * f)
+
   result = ret
 
 proc sineSoundData*(f: float, len: float, rate: int, amplitude = 0.5'f32): SoundData =
--- a/semicongine/audio/mixer.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/audio/mixer.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -27,6 +27,7 @@
     levelLeft: Level
     levelRight: Level
     paused: bool
+
   Track = object
     playing: Table[uint64, Playback]
     level: Level
@@ -34,33 +35,29 @@
     fadeTime: float
     fadeStep: float
 
-proc `=copy`(dest: var Playback; source: Playback) {.error.}
-proc `=copy`(dest: var Track; source: Track) {.error.}
+proc `=copy`(dest: var Playback, source: Playback) {.error.}
+proc `=copy`(dest: var Track, source: Track) {.error.}
 
 when defined(windows):
   include ./platform/windows
 when defined(linux):
   include ./platform/linux
 
-type
-  Mixer* = object
-    playbackCounter: uint64
-    tracks: Table[string, Track]
-    sounds*: Table[string, SoundData]
-    level: Level
-    device: NativeSoundDevice
-    lock: Lock
-    buffers: seq[SoundData]
-    currentBuffer: int
-    lastUpdate: MonoTime
+type Mixer* = object
+  playbackCounter: uint64
+  tracks: Table[string, Track]
+  sounds*: Table[string, SoundData]
+  level: Level
+  device: NativeSoundDevice
+  lock: Lock
+  buffers: seq[SoundData]
+  currentBuffer: int
+  lastUpdate: MonoTime
 
-proc `=copy`(dest: var Mixer; source: Mixer) {.error.}
+proc `=copy`(dest: var Mixer, source: Mixer) {.error.}
 
 proc initMixer(): Mixer =
-  result = Mixer(
-    tracks: initTable[string, Track](),
-    level: 1'f,
-  )
+  result = Mixer(tracks: initTable[string, Track](), level: 1'f)
   result.tracks[""] = Track(level: 1)
   result.lock.initLock()
 
@@ -75,8 +72,8 @@
 
 # TODO: this should probably be in the load-code-stuff
 # proc LoadSound*(mixer: var Mixer, name: string, resource: string) =
-  # assert not (name in mixer.sounds)
-  # mixer.sounds[name] = LoadAudio(resource)
+# assert not (name in mixer.sounds)
+# mixer.sounds[name] = LoadAudio(resource)
 
 proc addSound*(mixer: var Mixer, name: string, sound: SoundData) =
   assert not (name in mixer.sounds)
@@ -88,13 +85,20 @@
 
 proc addTrack*(mixer: var Mixer, name: string, level: Level = 1'f) =
   assert not (name in mixer.tracks)
-  mixer.lock.withLock():
+  mixer.lock.withLock:
     mixer.tracks[name] = Track(level: level)
 
-proc play*(mixer: var Mixer, soundName: string, track = "", stopOtherSounds = false, loop = false, levelLeft, levelRight: Level): uint64 =
+proc play*(
+    mixer: var Mixer,
+    soundName: string,
+    track = "",
+    stopOtherSounds = false,
+    loop = false,
+    levelLeft, levelRight: Level,
+): uint64 =
   assert track in mixer.tracks, &"Track '{track}' does not exists"
   assert soundName in mixer.sounds, soundName & " not loaded"
-  mixer.lock.withLock():
+  mixer.lock.withLock:
     if stopOtherSounds:
       mixer.tracks[track].playing.clear()
     mixer.tracks[track].playing[mixer.playbackCounter] = Playback(
@@ -108,7 +112,14 @@
   result = mixer.playbackCounter
   inc mixer.playbackCounter
 
-proc play*(mixer: var Mixer, soundName: string, track = "", stopOtherSounds = false, loop = false, level: Level = 1'f): uint64 =
+proc play*(
+    mixer: var Mixer,
+    soundName: string,
+    track = "",
+    stopOtherSounds = false,
+    loop = false,
+    level: Level = 1'f,
+): uint64 =
   play(
     mixer = mixer,
     soundName = soundName,
@@ -116,69 +127,88 @@
     stopOtherSounds = stopOtherSounds,
     loop = loop,
     levelLeft = level,
-    levelRight = level
+    levelRight = level,
   )
 
 proc stop*(mixer: var Mixer) =
-  mixer.lock.withLock():
+  mixer.lock.withLock:
     for track in mixer.tracks.mvalues:
       track.playing.clear()
 
-proc getLevel*(mixer: var Mixer): Level = mixer.level
-proc getLevel*(mixer: var Mixer, track: string): Level = mixer.tracks[track].level
+proc getLevel*(mixer: var Mixer): Level =
+  mixer.level
+
+proc getLevel*(mixer: var Mixer, track: string): Level =
+  mixer.tracks[track].level
+
 proc getLevel*(mixer: var Mixer, playbackId: uint64): (Level, Level) =
   for track in mixer.tracks.mvalues:
     if playbackId in track.playing:
       return (track.playing[playbackId].levelLeft, track.playing[playbackId].levelRight)
 
-proc setLevel*(mixer: var Mixer, level: Level) = mixer.level = level
+proc setLevel*(mixer: var Mixer, level: Level) =
+  mixer.level = level
+
 proc setLevel*(mixer: var Mixer, track: string, level: Level) =
-  mixer.lock.withLock():
+  mixer.lock.withLock:
     mixer.tracks[track].level = level
+
 proc setLevel*(mixer: var Mixer, playbackId: uint64, levelLeft, levelRight: Level) =
-  mixer.lock.withLock():
+  mixer.lock.withLock:
     for track in mixer.tracks.mvalues:
       if playbackId in track.playing:
         track.playing[playbackId].levelLeft = levelLeft
         track.playing[playbackId].levelRight = levelRight
+
 proc setLevel*(mixer: var Mixer, playbackId: uint64, level: Level) =
   setLevel(mixer, playbackId, level, level)
 
 proc stop*(mixer: var Mixer, track: string) =
   assert track in mixer.tracks
-  mixer.lock.withLock():
+  mixer.lock.withLock:
     mixer.tracks[track].playing.clear()
 
 proc stop*(mixer: var Mixer, playbackId: uint64) =
-  mixer.lock.withLock():
+  mixer.lock.withLock:
     for track in mixer.tracks.mvalues:
       if playbackId in track.playing:
         track.playing.del(playbackId)
         break
 
 proc pause*(mixer: var Mixer, value: bool) =
-  mixer.lock.withLock():
+  mixer.lock.withLock:
     for track in mixer.tracks.mvalues:
       for playback in track.playing.mvalues:
         playback.paused = value
 
 proc pause*(mixer: var Mixer, track: string, value: bool) =
-  mixer.lock.withLock():
+  mixer.lock.withLock:
     for playback in mixer.tracks[track].playing.mvalues:
       playback.paused = value
 
 proc pause*(mixer: var Mixer, playbackId: uint64, value: bool) =
-  mixer.lock.withLock():
+  mixer.lock.withLock:
     for track in mixer.tracks.mvalues:
       if playbackId in track.playing:
         track.playing[playbackId].paused = value
 
-proc pause*(mixer: var Mixer) = mixer.pause(true)
-proc pause*(mixer: var Mixer, track: string) = mixer.pause(track, true)
-proc pause*(mixer: var Mixer, playbackId: uint64) = mixer.pause(playbackId, true)
-proc unpause*(mixer: var Mixer) = mixer.pause(false)
-proc unpause*(mixer: var Mixer, track: string) = mixer.pause(track, false)
-proc unpause*(mixer: var Mixer, playbackId: uint64) = mixer.pause(playbackId, false)
+proc pause*(mixer: var Mixer) =
+  mixer.pause(true)
+
+proc pause*(mixer: var Mixer, track: string) =
+  mixer.pause(track, true)
+
+proc pause*(mixer: var Mixer, playbackId: uint64) =
+  mixer.pause(playbackId, true)
+
+proc unpause*(mixer: var Mixer) =
+  mixer.pause(false)
+
+proc unpause*(mixer: var Mixer, track: string) =
+  mixer.pause(track, false)
+
+proc unpause*(mixer: var Mixer, playbackId: uint64) =
+  mixer.pause(playbackId, false)
 
 proc fadeTo*(mixer: var Mixer, track: string, level: Level, time: float) =
   mixer.tracks[track].targetLevel = level
@@ -186,7 +216,7 @@
   mixer.tracks[track].fadeStep = level.float - mixer.tracks[track].level.float / time
 
 proc isPlaying*(mixer: var Mixer): bool =
-  mixer.lock.withLock():
+  mixer.lock.withLock:
     for track in mixer.tracks.mvalues:
       for playback in track.playing.values:
         if not playback.paused:
@@ -194,7 +224,7 @@
   return false
 
 proc isPlaying*(mixer: var Mixer, track: string): bool =
-  mixer.lock.withLock():
+  mixer.lock.withLock:
     if mixer.tracks.contains(track):
       for playback in mixer.tracks[track].playing.values:
         if not playback.paused:
@@ -209,10 +239,7 @@
 
 # used for combining sounds
 func mix(a, b: Sample): Sample =
-  [
-    clip(int32(a[0]) + int32(b[0])),
-    clip(int32(a[1]) + int32(b[1])),
-  ]
+  [clip(int32(a[0]) + int32(b[0])), clip(int32(a[1]) + int32(b[1]))]
 
 proc updateSoundBuffer(mixer: var Mixer) =
   let t = getMonoTime()
@@ -224,14 +251,15 @@
   for track in mixer.tracks.mvalues:
     if track.fadeTime > 0:
       track.fadeTime -= dt
-      track.level = (track.level.float64 + track.fadeStep.float64 * dt).clamp(Level.low, Level.high)
+      track.level =
+        (track.level.float64 + track.fadeStep.float64 * dt).clamp(Level.low, Level.high)
       if track.fadeTime <= 0:
         track.level = track.targetLevel
   # mix
   var hasData = false
   for i in 0 ..< mixer.buffers[mixer.currentBuffer].len:
     var mixedSample = [0'i16, 0'i16]
-    mixer.lock.withLock():
+    mixer.lock.withLock:
       for track in mixer.tracks.mvalues:
         var stoppedSounds: seq[uint64]
         for (id, playback) in track.playing.mpairs:
@@ -305,7 +333,11 @@
 
 proc audioWorker() {.thread.} =
   mixer[].setupDevice()
-  onThreadDestruction(proc() = mixer[].lock.withLock(mixer[].destroy()); freeShared(mixer))
+  onThreadDestruction(
+    proc() =
+      mixer[].lock.withLock(mixer[].destroy())
+      freeShared(mixer)
+  )
   while true:
     mixer[].updateSoundBuffer()
 
--- a/semicongine/audio/platform/linux.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/audio/platform/linux.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,64 +1,109 @@
 # alsa API
 type
-  OpenMode*{.size: sizeof(culong).} = enum
+  OpenMode* {.size: sizeof(culong).} = enum
     SND_PCM_BLOCK = 0x00000000 # added by semicongine, for clarity
     SND_PCM_NONBLOCK = 0x00000001
+
   StreamMode* {.size: sizeof(cint).} = enum
     SND_PCM_STREAM_PLAYBACK = 0
-  AccessMode*{.size: sizeof(cint).} = enum
+
+  AccessMode* {.size: sizeof(cint).} = enum
     SND_PCM_ACCESS_RW_INTERLEAVED = 3
-  PCMFormat*{.size: sizeof(cint).} = enum
+
+  PCMFormat* {.size: sizeof(cint).} = enum
     SND_PCM_FORMAT_S16_LE = 2
+
   snd_pcm_p* = ptr object
   snd_pcm_hw_params_p* = ptr object
   snd_pcm_uframes_t* = culong
   snd_pcm_sframes_t* = clong
+
 {.pragma: alsafunc, importc, cdecl, dynlib: "libasound.so.2".}
-proc snd_pcm_open*(pcm_ref: ptr snd_pcm_p, name: cstring, streamMode: StreamMode, openmode: OpenMode): cint {.alsafunc.}
+proc snd_pcm_open*(
+  pcm_ref: ptr snd_pcm_p, name: cstring, streamMode: StreamMode, openmode: OpenMode
+): cint {.alsafunc.}
+
 proc snd_pcm_close*(pcm: snd_pcm_p): cint {.alsafunc.}
-proc snd_pcm_hw_params_malloc*(hw_params_ptr: ptr snd_pcm_hw_params_p): cint {.alsafunc.}
+proc snd_pcm_hw_params_malloc*(
+  hw_params_ptr: ptr snd_pcm_hw_params_p
+): cint {.alsafunc.}
+
 proc snd_pcm_hw_params_free*(hw_params: snd_pcm_hw_params_p) {.alsafunc.}
-proc snd_pcm_hw_params_any*(pcm: snd_pcm_p, params: snd_pcm_hw_params_p): cint {.alsafunc.}
-proc snd_pcm_hw_params_set_access*(pcm: snd_pcm_p, params: snd_pcm_hw_params_p, mode: AccessMode): cint {.alsafunc.}
-proc snd_pcm_hw_params_set_format*(pcm: snd_pcm_p, params: snd_pcm_hw_params_p, format: PCMFormat): cint {.alsafunc.}
-proc snd_pcm_hw_params_set_channels*(pcm: snd_pcm_p, params: snd_pcm_hw_params_p, val: cuint): cint {.alsafunc.}
-proc snd_pcm_hw_params_set_buffer_size*(pcm: snd_pcm_p, params: snd_pcm_hw_params_p, size: snd_pcm_uframes_t): cint {.alsafunc.}
-proc snd_pcm_hw_params_set_rate*(pcm: snd_pcm_p, params: snd_pcm_hw_params_p, val: cuint, dir: cint): cint {.alsafunc.}
+proc snd_pcm_hw_params_any*(
+  pcm: snd_pcm_p, params: snd_pcm_hw_params_p
+): cint {.alsafunc.}
+
+proc snd_pcm_hw_params_set_access*(
+  pcm: snd_pcm_p, params: snd_pcm_hw_params_p, mode: AccessMode
+): cint {.alsafunc.}
+
+proc snd_pcm_hw_params_set_format*(
+  pcm: snd_pcm_p, params: snd_pcm_hw_params_p, format: PCMFormat
+): cint {.alsafunc.}
+
+proc snd_pcm_hw_params_set_channels*(
+  pcm: snd_pcm_p, params: snd_pcm_hw_params_p, val: cuint
+): cint {.alsafunc.}
+
+proc snd_pcm_hw_params_set_buffer_size*(
+  pcm: snd_pcm_p, params: snd_pcm_hw_params_p, size: snd_pcm_uframes_t
+): cint {.alsafunc.}
+
+proc snd_pcm_hw_params_set_rate*(
+  pcm: snd_pcm_p, params: snd_pcm_hw_params_p, val: cuint, dir: cint
+): cint {.alsafunc.}
+
 proc snd_pcm_hw_params*(pcm: snd_pcm_p, params: snd_pcm_hw_params_p): cint {.alsafunc.}
-proc snd_pcm_writei*(pcm: snd_pcm_p, buffer: pointer, size: snd_pcm_uframes_t): snd_pcm_sframes_t {.alsafunc.}
+proc snd_pcm_writei*(
+  pcm: snd_pcm_p, buffer: pointer, size: snd_pcm_uframes_t
+): snd_pcm_sframes_t {.alsafunc.}
+
 proc snd_pcm_recover*(pcm: snd_pcm_p, err: cint, silent: cint): cint {.alsafunc.}
 
 template checkAlsaResult(call: untyped) =
   let value = call
   if value < 0:
-    raise newException(Exception, "Alsa error: " & astToStr(call) &
-      " returned " & $value)
+    raise
+      newException(Exception, "Alsa error: " & astToStr(call) & " returned " & $value)
 
 # required for engine:
 
-type
-  NativeSoundDevice* = object
-    handle: snd_pcm_p
-    buffers: seq[ptr SoundData]
+type NativeSoundDevice* = object
+  handle: snd_pcm_p
+  buffers: seq[ptr SoundData]
 
-proc OpenSoundDevice*(sampleRate: uint32, buffers: seq[ptr SoundData]): NativeSoundDevice =
+proc OpenSoundDevice*(
+    sampleRate: uint32, buffers: seq[ptr SoundData]
+): NativeSoundDevice =
   var hw_params: snd_pcm_hw_params_p = nil
-  checkAlsaResult snd_pcm_open(addr result.handle, "default", SND_PCM_STREAM_PLAYBACK, SND_PCM_BLOCK)
+  checkAlsaResult snd_pcm_open(
+    addr result.handle, "default", SND_PCM_STREAM_PLAYBACK, SND_PCM_BLOCK
+  )
 
   # hw parameters, quiet a bit of hardcoding here
   checkAlsaResult snd_pcm_hw_params_malloc(addr hw_params)
   checkAlsaResult snd_pcm_hw_params_any(result.handle, hw_params)
-  checkAlsaResult snd_pcm_hw_params_set_access(result.handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED)
-  checkAlsaResult snd_pcm_hw_params_set_format(result.handle, hw_params, SND_PCM_FORMAT_S16_LE)
+  checkAlsaResult snd_pcm_hw_params_set_access(
+    result.handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED
+  )
+  checkAlsaResult snd_pcm_hw_params_set_format(
+    result.handle, hw_params, SND_PCM_FORMAT_S16_LE
+  )
   checkAlsaResult snd_pcm_hw_params_set_rate(result.handle, hw_params, sampleRate, 0)
   checkAlsaResult snd_pcm_hw_params_set_channels(result.handle, hw_params, 2)
-  checkAlsaResult snd_pcm_hw_params_set_buffer_size(result.handle, hw_params, snd_pcm_uframes_t(buffers[0][].len))
+  checkAlsaResult snd_pcm_hw_params_set_buffer_size(
+    result.handle, hw_params, snd_pcm_uframes_t(buffers[0][].len)
+  )
   checkAlsaResult snd_pcm_hw_params(result.handle, hw_params)
   snd_pcm_hw_params_free(hw_params)
   result.buffers = buffers
 
 proc WriteSoundData*(soundDevice: NativeSoundDevice, buffer: int) =
-  var ret = snd_pcm_writei(soundDevice.handle, addr soundDevice.buffers[buffer][][0], snd_pcm_uframes_t(soundDevice.buffers[buffer][].len))
+  var ret = snd_pcm_writei(
+    soundDevice.handle,
+    addr soundDevice.buffers[buffer][][0],
+    snd_pcm_uframes_t(soundDevice.buffers[buffer][].len),
+  )
   if ret < 0:
     checkAlsaResult snd_pcm_recover(soundDevice.handle, cint(ret), 0)
 
--- a/semicongine/audio/platform/windows.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/audio/platform/windows.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -4,18 +4,20 @@
 
 # import ../../thirdparty/winim/winim/inc/[windef, winuser, wincon, winbase]
 
-
 template CheckWinMMResult*(call: untyped) =
   let value = call
   if value < 0:
-    raise newException(Exception, "Windows multimedia error: " & astToStr(call) &
-      " returned " & $value)
-type
-  NativeSoundDevice* = object
-    handle: HWAVEOUT
-    buffers: seq[WAVEHDR]
+    raise newException(
+      Exception, "Windows multimedia error: " & astToStr(call) & " returned " & $value
+    )
 
-proc OpenSoundDevice*(sampleRate: uint32, buffers: seq[ptr SoundData]): NativeSoundDevice =
+type NativeSoundDevice* = object
+  handle: HWAVEOUT
+  buffers: seq[WAVEHDR]
+
+proc OpenSoundDevice*(
+    sampleRate: uint32, buffers: seq[ptr SoundData]
+): NativeSoundDevice =
   var format = WAVEFORMATEX(
     wFormatTag: WAVE_FORMAT_PCM,
     nChannels: 2,
@@ -25,7 +27,14 @@
     wBitsPerSample: 16,
     cbSize: 0,
   )
-  CheckWinMMResult waveOutOpen(addr result.handle, WAVE_MAPPER, addr format, DWORD_PTR(0), DWORD_PTR(0), CALLBACK_NULL)
+  CheckWinMMResult waveOutOpen(
+    addr result.handle,
+    WAVE_MAPPER,
+    addr format,
+    DWORD_PTR(0),
+    DWORD_PTR(0),
+    CALLBACK_NULL,
+  )
 
   for i in 0 ..< buffers.len:
     result.buffers.add WAVEHDR(
@@ -34,15 +43,23 @@
       dwLoops: 1,
     )
   for i in 0 ..< result.buffers.len:
-    CheckWinMMResult waveOutPrepareHeader(result.handle, addr result.buffers[i], UINT(sizeof(WAVEHDR)))
-    CheckWinMMResult waveOutWrite(result.handle, addr result.buffers[i], UINT(sizeof(WAVEHDR)))
+    CheckWinMMResult waveOutPrepareHeader(
+      result.handle, addr result.buffers[i], UINT(sizeof(WAVEHDR))
+    )
+    CheckWinMMResult waveOutWrite(
+      result.handle, addr result.buffers[i], UINT(sizeof(WAVEHDR))
+    )
 
 proc WriteSoundData*(soundDevice: var NativeSoundDevice, buffer: int) =
   while (soundDevice.buffers[buffer].dwFlags and WHDR_DONE) == 0:
     sleep(1)
-  CheckWinMMResult waveOutWrite(soundDevice.handle, addr soundDevice.buffers[buffer], UINT(sizeof(WAVEHDR)))
+  CheckWinMMResult waveOutWrite(
+    soundDevice.handle, addr soundDevice.buffers[buffer], UINT(sizeof(WAVEHDR))
+  )
 
 proc CloseSoundDevice*(soundDevice: var NativeSoundDevice) =
   for i in 0 ..< soundDevice.buffers.len:
-    discard waveOutUnprepareHeader(soundDevice.handle, addr soundDevice.buffers[i], UINT(sizeof(WAVEHDR)))
+    discard waveOutUnprepareHeader(
+      soundDevice.handle, addr soundDevice.buffers[i], UINT(sizeof(WAVEHDR))
+    )
   waveOutClose(soundDevice.handle)
--- a/semicongine/audio/resources.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/audio/resources.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -48,9 +48,16 @@
 
   assert header.magicNumber == 0x2e736e64
   if header.sampleRate != AUDIO_SAMPLE_RATE:
-    raise newException(Exception, &"Only support sample rate of {AUDIO_SAMPLE_RATE} Hz but got {header.sampleRate} Hz, please resample (e.g. ffmpeg -i <infile> -ar {AUDIO_SAMPLE_RATE} <outfile>)")
+    raise newException(
+      Exception,
+      &"Only support sample rate of {AUDIO_SAMPLE_RATE} Hz but got {header.sampleRate} Hz, please resample (e.g. ffmpeg -i <infile> -ar {AUDIO_SAMPLE_RATE} <outfile>)",
+    )
   if not (header.channels in [1'u32, 2'u32]):
-    raise newException(Exception, "Only support mono and stereo audio at the moment (1 or 2 channels), but found " & $header.channels)
+    raise newException(
+      Exception,
+      "Only support mono and stereo audio at the moment (1 or 2 channels), but found " &
+        $header.channels,
+    )
 
   var annotation: string
   stream.read(annotation)
@@ -61,7 +68,13 @@
 
 {.compile: currentSourcePath.parentDir() & "/stb_vorbis.c".}
 
-proc stb_vorbis_decode_memory(mem: pointer, len: cint, channels: ptr cint, sample_rate: ptr cint, output: ptr ptr cshort): cint {.importc.}
+proc stb_vorbis_decode_memory(
+  mem: pointer,
+  len: cint,
+  channels: ptr cint,
+  sample_rate: ptr cint,
+  output: ptr ptr cshort,
+): cint {.importc.}
 
 proc readVorbis*(stream: Stream): SoundData =
   var
@@ -70,12 +83,19 @@
     sampleRate: cint
     output: ptr cshort
 
-  var nSamples = stb_vorbis_decode_memory(addr data[0], cint(data.len), addr channels, addr sampleRate, addr output)
+  var nSamples = stb_vorbis_decode_memory(
+    addr data[0], cint(data.len), addr channels, addr sampleRate, addr output
+  )
 
   if nSamples < 0:
-    raise newException(Exception, &"Unable to read ogg/vorbis sound file, error code: {nSamples}")
+    raise newException(
+      Exception, &"Unable to read ogg/vorbis sound file, error code: {nSamples}"
+    )
   if sampleRate != AUDIO_SAMPLE_RATE:
-    raise newException(Exception, &"Only support sample rate of {AUDIO_SAMPLE_RATE} Hz but got {sampleRate} Hz, please resample (e.g. ffmpeg -i <infile> -acodec libvorbis -ar {AUDIO_SAMPLE_RATE} <outfile>)")
+    raise newException(
+      Exception,
+      &"Only support sample rate of {AUDIO_SAMPLE_RATE} Hz but got {sampleRate} Hz, please resample (e.g. ffmpeg -i <infile> -acodec libvorbis -ar {AUDIO_SAMPLE_RATE} <outfile>)",
+    )
 
   if channels == 2:
     result.setLen(int(nSamples))
@@ -88,7 +108,11 @@
     nativeFree(output)
   else:
     nativeFree(output)
-    raise newException(Exception, "Only support mono and stereo audio at the moment (1 or 2 channels), but found " & $channels)
+    raise newException(
+      Exception,
+      "Only support mono and stereo audio at the moment (1 or 2 channels), but found " &
+        $channels,
+    )
 
 proc loadAudio*(path: string, package = DEFAULT_PACKAGE): SoundData =
   if path.splitFile().ext.toLowerAscii == ".au":
@@ -97,4 +121,3 @@
     loadResource_intern(path, package = package).readVorbis()
   else:
     raise newException(Exception, "Unsupported audio file type: " & path)
-
--- a/semicongine/build.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/build.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -6,13 +6,17 @@
 
 include ./core/globals
 
-const BLENDER_CONVERT_SCRIPT = currentSourcePath().parentDir().parentDir().joinPath("tools/blender_gltf_converter.py")
-const STEAMCMD_ZIP = currentSourcePath().parentDir().parentDir().joinPath("tools/steamcmd.zip")
+const BLENDER_CONVERT_SCRIPT = currentSourcePath().parentDir().parentDir().joinPath(
+    "tools/blender_gltf_converter.py"
+  )
+const STEAMCMD_ZIP =
+  currentSourcePath().parentDir().parentDir().joinPath("tools/steamcmd.zip")
 const STEAMBUILD_DIR_NAME = "steam"
 
 var STEAMLIB: string
 if defined(linux):
-  STEAMLIB = currentSourcePath().parentDir().parentDir().joinPath("libs/libsteam_api.so")
+  STEAMLIB =
+    currentSourcePath().parentDir().parentDir().joinPath("libs/libsteam_api.so")
 elif defined(windows):
   STEAMLIB = currentSourcePath().parentDir().parentDir().joinPath("libs/steam_api.dll")
 else:
@@ -44,9 +48,12 @@
     raise newException(Exception, "Unsupported platform")
 
   switch("outdir", semicongine_builddir(buildname, builddir = builddir))
-  switch("passL", "-Wl,-rpath,'$ORIGIN'") # adds directory of executable to dynlib search path
+  switch("passL", "-Wl,-rpath,'$ORIGIN'")
+    # adds directory of executable to dynlib search path
 
-proc semicongine_pack*(outdir: string, bundleType: string, resourceRoot: string, withSteam: bool) =
+proc semicongine_pack*(
+    outdir: string, bundleType: string, resourceRoot: string, withSteam: bool
+) =
   switch("define", "PACKAGETYPE=" & bundleType)
 
   assert resourceRoot.dirExists, &"Resource root '{resourceRoot}' does not exists"
@@ -54,7 +61,8 @@
   outdir.rmDir()
   outdir.mkDir()
 
-  echo "BUILD: Packing assets from '" & resourceRoot & "' into directory '" & outdir & "'"
+  echo "BUILD: Packing assets from '" & resourceRoot & "' into directory '" & outdir &
+    "'"
   let outdir_resources = joinPath(outdir, RESOURCEROOT)
   if bundleType == "dir":
     cpDir(resourceRoot, outdir_resources)
@@ -72,7 +80,8 @@
         else:
           raise newException(Exception, "Unsupported platform")
   elif bundleType == "exe":
-    switch("define", "BUILD_RESOURCEROOT=" & joinPath(getCurrentDir(), resourceRoot)) # required for in-exe packing of resources, must be absolute
+    switch("define", "BUILD_RESOURCEROOT=" & joinPath(getCurrentDir(), resourceRoot))
+      # required for in-exe packing of resources, must be absolute
   if withSteam:
     STEAMLIB.cpFile(outdir.joinPath(STEAMLIB.extractFilename))
 
@@ -88,7 +97,6 @@
     else:
       raise newException(Exception, "Unsupported platform")
 
-
 # need this because fileNewer from std/os does not work in Nim VM
 proc fileNewerStatic(file1, file2: string): bool =
   assert file1.fileExists
@@ -98,7 +106,7 @@
     let ex = gorgeEx(command)
     return ex.exitCode == 0
   elif defined(window):
-    {.error "Resource imports not supported on windows for now".}
+    {.error, "Resource imports not supported on windows for now".}
 
 proc import_meshes*(files: seq[(string, string)]) =
   if files.len == 0:
@@ -113,12 +121,16 @@
 
 proc import_audio*(files: seq[(string, string)]) =
   for (input, output) in files:
-    let command = "ffmpeg " & ["-y", "-i", input, "-ar", $AUDIO_SAMPLE_RATE, output].join(" ")
+    let command =
+      "ffmpeg " & ["-y", "-i", input, "-ar", $AUDIO_SAMPLE_RATE, output].join(" ")
     exec(command)
 
 proc semicongine_import_resource_file*(resourceMap: openArray[(string, string)]) =
   when not defined(linux):
-    {.warning: "Resource files can only be imported on linux, please make sure that the required files are created by runing the build on a linux machine.".}
+    {.
+      warning:
+        "Resource files can only be imported on linux, please make sure that the required files are created by runing the build on a linux machine."
+    .}
     return
   var meshfiles: seq[(string, string)]
   var audiofiles: seq[(string, string)]
@@ -142,7 +154,6 @@
   import_meshes meshfiles
   import_audio audiofiles
 
-
 # for steam-buildscript docs see https://partner.steamgames.com/doc/sdk/uploading
 proc semicongine_steam_upload*(steamaccount, password, buildscript: string) =
   let steamdir = thisDir().joinPath(STEAMBUILD_DIR_NAME)
@@ -173,7 +184,11 @@
   exec &"./{steamcmd} +login \"{steamaccount}\" \"{password}\" +run_app_build {scriptPath} +quit"
 
 proc semicongine_sign_executable*(file: string) =
-  const SIGNTOOL_EXE = "C:/Program Files (x86)/Windows Kits/10/App Certification Kit/signtool.exe"
+  const SIGNTOOL_EXE =
+    "C:/Program Files (x86)/Windows Kits/10/App Certification Kit/signtool.exe"
   if not SIGNTOOL_EXE.fileExists:
-    raise newException(Exception, &"signtool.exe not found at ({SIGNTOOL_EXE}), please install the Windows SDK")
+    raise newException(
+      Exception,
+      &"signtool.exe not found at ({SIGNTOOL_EXE}), please install the Windows SDK",
+    )
   exec &"\"{SIGNTOOL_EXE}\" sign /a /tr http://timestamp.globalsign.com/tsa/r6advanced1 /fd SHA256 /td SHA256 {file}"
--- a/semicongine/contrib/algorithms/collision.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/contrib/algorithms/collision.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -7,20 +7,23 @@
 
 type
   ColliderType* = enum
-    Box, Sphere, Points
+    Box
+    Sphere
+    Points
+
   Collider* = object
     transform*: Mat4 = Unit4F32
     case theType*: ColliderType
-      of Box: discard
-      of Sphere: radius*: float32
-      of Points: points*: seq[Vec3f]
+    of Box: discard
+    of Sphere: radius*: float32
+    of Points: points*: seq[Vec3f]
 
 func between(value, b1, b2: float32): bool =
   min(b1, b2) <= value and value <= max(b1, b2)
 
 func contains*(collider: Collider, x: Vec3f): bool =
   # from https://math.stackexchange.com/questions/1472049/check-if-a-point-is-inside-a-rectangular-shaped-area-3d
-  case collider.theType:
+  case collider.theType
   of Box:
     let
       P1 = collider.transform * vec3(0, 0, 0) # origin
@@ -70,7 +73,7 @@
       transform * (Y + Z),
       transform * (X + Y + Z),
     ],
-    direction
+    direction,
   )
 func findFurthestPoint(collider: Collider, direction: Vec3f): Vec3f =
   case collider.theType
@@ -93,7 +96,7 @@
     a = simplex[0]
     b = simplex[1]
     ab = b - a
-    ao = - a
+    ao = -a
 
   if sameDirection(ab, ao):
     direction = cross(cross(ab, ao), ab)
@@ -103,14 +106,16 @@
 
   return false
 
-func triangle(simplex: var seq[Vec3f], direction: var Vec3f, twoDimensional = false): bool =
+func triangle(
+    simplex: var seq[Vec3f], direction: var Vec3f, twoDimensional = false
+): bool =
   let
     a = simplex[0]
     b = simplex[1]
     c = simplex[2]
     ab = b - a
     ac = c - a
-    ao = - a
+    ao = -a
     abc = ab.cross(ac)
 
   if sameDirection(abc.cross(ac), ao):
@@ -144,7 +149,7 @@
     ab = b - a
     ac = c - a
     ad = d - a
-    ao = - a
+    ao = -a
     abc = ab.cross(ac)
     acd = ac.cross(ad)
     adb = ad.cross(ab)
@@ -195,28 +200,32 @@
   else:
     edges.add (faces[a], faces[b])
 
-func nextSimplex(simplex: var seq[Vec3f], direction: var Vec3f, twoDimensional = false): bool =
+func nextSimplex(
+    simplex: var seq[Vec3f], direction: var Vec3f, twoDimensional = false
+): bool =
   case simplex.len
-  of 2: simplex.line(direction)
-  of 3: simplex.triangle(direction, twoDimensional)
-  of 4: simplex.tetrahedron(direction)
-  else: raise newException(Exception, "Error in simplex")
+  of 2:
+    simplex.line(direction)
+  of 3:
+    simplex.triangle(direction, twoDimensional)
+  of 4:
+    simplex.tetrahedron(direction)
+  else:
+    raise newException(Exception, "Error in simplex")
 
-func collisionPoint3D(simplex: var seq[Vec3f], a, b: Collider): tuple[normal: Vec3f, penetrationDepth: float32] =
+func collisionPoint3D(
+    simplex: var seq[Vec3f], a, b: Collider
+): tuple[normal: Vec3f, penetrationDepth: float32] =
   var
     polytope = simplex
-    faces = @[
-      0, 1, 2,
-      0, 3, 1,
-      0, 2, 3,
-      1, 3, 2
-    ]
+    faces = @[0, 1, 2, 0, 3, 1, 0, 2, 3, 1, 3, 2]
     (normals, minFace) = getFaceNormals(polytope, faces)
     minNormal: Vec3f
     minDistance = high(float32)
     iterCount = 0
 
-  while minDistance == high(float32) and iterCount < MAX_COLLISON_POINT_CALCULATION_ITERATIONS:
+  while minDistance == high(float32) and
+      iterCount < MAX_COLLISON_POINT_CALCULATION_ITERATIONS:
     minNormal = normals[minFace].xyz
     minDistance = normals[minFace].w
     var
@@ -273,8 +282,9 @@
 
   result = (normal: minNormal, penetrationDepth: minDistance + 0.001'f32)
 
-
-func collisionPoint2D(polytopeIn: seq[Vec3f], a, b: Collider): tuple[normal: Vec3f, penetrationDepth: float32] =
+func collisionPoint2D(
+    polytopeIn: seq[Vec3f], a, b: Collider
+): tuple[normal: Vec3f, penetrationDepth: float32] =
   var
     polytope = polytopeIn
     minIndex = 0
@@ -282,7 +292,8 @@
     iterCount = 0
     minNormal: Vec2f
 
-  while minDistance == high(float32) and iterCount < MAX_COLLISON_POINT_CALCULATION_ITERATIONS:
+  while minDistance == high(float32) and
+      iterCount < MAX_COLLISON_POINT_CALCULATION_ITERATIONS:
     for i in 0 ..< polytope.len:
       let
         j = (i + 1) mod polytope.len
@@ -306,16 +317,19 @@
       support = supportPoint(a, b, minNormal.ToVec3)
       sDistance = minNormal.dot(support)
 
-    if(abs(sDistance - minDistance) > 0.001):
+    if (abs(sDistance - minDistance) > 0.001):
       minDistance = high(float32)
       polytope.insert(support, minIndex)
     inc iterCount
 
-  result = (normal: vec3(minNormal.x, minNormal.y, 0), penetrationDepth: minDistance + 0.001'f32)
+  result = (
+    normal: vec3(minNormal.x, minNormal.y, 0), penetrationDepth: minDistance + 0.001'f32
+  )
 
 func intersects*(a, b: Collider, as2D = false): bool =
   var
-    support = supportPoint(a, b, vec3(0.8153, -0.4239, if as2D: 0.0 else: 0.5786)) # just random initial vector
+    support = supportPoint(a, b, vec3(0.8153, -0.4239, if as2D: 0.0 else: 0.5786))
+      # just random initial vector
     simplex = newSeq[Vec3f]()
     direction = -support
     n = 0
@@ -332,9 +346,12 @@
       direction[0] = 0.0001
     inc n
 
-func collision*(a, b: Collider, as2D = false): tuple[hasCollision: bool, normal: Vec3f, penetrationDepth: float32] =
+func collision*(
+    a, b: Collider, as2D = false
+): tuple[hasCollision: bool, normal: Vec3f, penetrationDepth: float32] =
   var
-    support = supportPoint(a, b, vec3(0.8153, -0.4239, if as2D: 0.0 else: 0.5786)) # just random initial vector
+    support = supportPoint(a, b, vec3(0.8153, -0.4239, if as2D: 0.0 else: 0.5786))
+      # just random initial vector
     simplex = newSeq[Vec3f]()
     direction = -support
     n = 0
@@ -345,7 +362,11 @@
       return result
     simplex.insert(support, 0)
     if nextSimplex(simplex, direction, twoDimensional = as2D):
-      let (normal, depth) = if as2D: collisionPoint2D(simplex, a, b) else: collisionPoint3D(simplex, a, b)
+      let (normal, depth) =
+        if as2D:
+          collisionPoint2D(simplex, a, b)
+        else:
+          collisionPoint3D(simplex, a, b)
       return (true, normal, depth)
     # prevent numeric instability
     if direction == vec3(0, 0, 0):
@@ -380,7 +401,10 @@
   if theType == Points:
     result = Collider(theType: Points, points: @points)
   else:
-    result = Collider(theType: theType, transform: translate(minX, minY, minZ) * scale(scaleX, scaleY, scaleZ))
+    result = Collider(
+      theType: theType,
+      transform: translate(minX, minY, minZ) * scale(scaleX, scaleY, scaleZ),
+    )
 
     if theType == Sphere:
       result.transform = translate(center)
--- a/semicongine/contrib/algorithms/noise.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/contrib/algorithms/noise.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -4,12 +4,13 @@
 import ../../core
 
 proc randomGradient(pos: Vec2f, seed: int32 = 0): Vec2f =
-  let randomAngle: float32 = TAU * (float32(int(hash((pos.x, pos.y, seed)))) / float32(high(int)))
+  let randomAngle: float32 =
+    TAU * (float32(int(hash((pos.x, pos.y, seed)))) / float32(high(int)))
   return vec2(cos(randomAngle), sin(randomAngle))
 
 proc interpolate(a: float32, b: float32, weight: float32): float32 =
   # with Smootherstep
-  (b - a) * ((weight * (weight * 6.0 - 15.0) + 10.0) * weight * weight * weight) + a;
+  (b - a) * ((weight * (weight * 6.0 - 15.0) + 10.0) * weight * weight * weight) + a
 
 proc perlin*(pos: Vec2f, seed: int32 = 0): float32 =
   let
@@ -29,5 +30,5 @@
   return interpolate(
     interpolate(topleft_dot, bottomleft_dot, yinterpol),
     interpolate(topright_dot, bottomright_dot, yinterpol),
-    xinterpol
+    xinterpol,
   )
--- a/semicongine/contrib/algorithms/texture_packing.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/contrib/algorithms/texture_packing.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -2,28 +2,29 @@
 
 import ../../image
 
-type
-  Rect = tuple
-    i: int
-    x, y, w, h: uint32
+type Rect = tuple[i: int, x, y, w, h: uint32]
 
 func between(a1, a2, b: uint32): bool =
   a1 <= b and b <= a2
 
 func overlap(a1, a2, b1, b2: uint32): bool =
-  return between(a1, a2, b1) or
-         between(a1, a2, b2) or
-         between(b1, b2, a1) or
-         between(b1, b2, a2)
+  return
+    between(a1, a2, b1) or between(a1, a2, b2) or between(b1, b2, a1) or
+    between(b1, b2, a2)
 
 # FYI: also serves as "overlaps"
 func advanceIfOverlap(fix, newRect: Rect): (bool, uint32) =
-  let overlapping = overlap(fix.x, fix.x + fix.w - 1, newRect.x, newRect.x + newRect.w - 1) and
-                    overlap(fix.y, fix.y + fix.h - 1, newRect.y, newRect.y + newRect.h - 1)
-  if overlapping: (true, fix.x + fix.w) # next free x coordinate to the right
-  else: (false, newRect.x) # current position is fine
+  let overlapping =
+    overlap(fix.x, fix.x + fix.w - 1, newRect.x, newRect.x + newRect.w - 1) and
+    overlap(fix.y, fix.y + fix.h - 1, newRect.y, newRect.y + newRect.h - 1)
+  if overlapping:
+    (true, fix.x + fix.w) # next free x coordinate to the right
+  else:
+    (false, newRect.x) # current position is fine
 
-proc findInsertionPosition(alreadyPlaced: seq[Rect], area: tuple[i: int, w, h: uint32], maxDim: uint32): (bool, Rect) =
+proc findInsertionPosition(
+    alreadyPlaced: seq[Rect], area: tuple[i: int, w, h: uint32], maxDim: uint32
+): (bool, Rect) =
   var newRect = (i: area.i, x: 0'u32, y: 0'u32, w: area.w, h: area.h)
 
   while newRect.y + newRect.h <= maxDim:
@@ -32,7 +33,8 @@
 
     for placed in alreadyPlaced:
       (hasOverlap, advanceX) = placed.advanceIfOverlap(newRect)
-      if hasOverlap: # rects were overlapping and newRect needs to be shifted to the right
+      if hasOverlap:
+        # rects were overlapping and newRect needs to be shifted to the right
         newRect.x = advanceX
         break
 
@@ -45,8 +47,9 @@
 
   return (false, newRect)
 
-
-proc pack*[T: PixelType](images: seq[Image[T]]): tuple[atlas: Image[T], coords: seq[tuple[x: uint32, y: uint32]]] =
+proc pack*[T: PixelType](
+    images: seq[Image[T]]
+): tuple[atlas: Image[T], coords: seq[tuple[x: uint32, y: uint32]]] =
   const MAX_ATLAS_SIZE = 4096'u32
   var areas: seq[tuple[i: int, w, h: uint32]]
 
@@ -59,9 +62,11 @@
 
   for area in areasBySize:
     var pos = findInsertionPosition(assignedAreas, area, maxDim)
-    while not pos[0]: # this should actually never loop more than once, but weird things happen ¯\_(ツ)_/¯
+    while not pos[0]:
+      # this should actually never loop more than once, but weird things happen ¯\_(ツ)_/¯
       maxDim = maxDim * 2
-      assert maxDim <= MAX_ATLAS_SIZE, &"Atlas gets bigger than {MAX_ATLAS_SIZE}, cannot pack images"
+      assert maxDim <= MAX_ATLAS_SIZE,
+        &"Atlas gets bigger than {MAX_ATLAS_SIZE}, cannot pack images"
       pos = findInsertionPosition(assignedAreas, area, maxDim)
 
     assignedAreas.add pos[1]
@@ -69,17 +74,21 @@
   # check there are overlaps
   for i in 0 ..< assignedAreas.len - 1:
     for j in i + 1 ..< assignedAreas.len:
-      assert not assignedAreas[i].advanceIfOverlap(assignedAreas[j])[0], &"{assignedAreas[i]} and {assignedAreas[j]} overlap!"
+      assert not assignedAreas[i].advanceIfOverlap(assignedAreas[j])[0],
+        &"{assignedAreas[i]} and {assignedAreas[j]} overlap!"
 
-  result.atlas = Image[T](width: maxDim, height: maxDim, data: newSeq[T](maxDim * maxDim))
+  result.atlas =
+    Image[T](width: maxDim, height: maxDim, data: newSeq[T](maxDim * maxDim))
   result.coords.setLen(images.len)
   for rect in assignedAreas:
     for y in 0 ..< rect.h:
       for x in 0 ..< rect.w:
         when T is Gray:
-          assert result.atlas[rect.x + x, rect.y + y] == [0'u8], "Atlas texture packing encountered an overlap error"
+          assert result.atlas[rect.x + x, rect.y + y] == [0'u8],
+            "Atlas texture packing encountered an overlap error"
         elif T is BGRA:
-          assert result.atlas[rect.x + x, rect.y + y] == [0'u8, 0'u8, 0'u8, 0'u8], "Atlas texture packing encountered an overlap error"
+          assert result.atlas[rect.x + x, rect.y + y] == [0'u8, 0'u8, 0'u8, 0'u8],
+            "Atlas texture packing encountered an overlap error"
         else:
           {.error: "Unsupported type for texture packing".}
         result.atlas[rect.x + x, rect.y + y] = images[rect.i][x, y]
--- a/semicongine/contrib/settings.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/contrib/settings.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -11,10 +11,8 @@
 const CONFIGROOT {.strdefine.}: string = "."
 const CONFIGEXTENSION {.strdefine.}: string = "ini"
 
-
 when CONFIGHOTRELOAD:
-  var
-    configUpdates: Channel[(string, string)]
+  var configUpdates: Channel[(string, string)]
   configUpdates.open()
 
 # runtime configuration
@@ -55,27 +53,35 @@
     raise newException(Exception, &"Settings {namespace}.{section}.{key} was not found")
   allsettings[namespace].getSectionValue(section, key)
 
-proc Setting*[T: int|float|string](key, section, namespace: string): T =
+proc Setting*[T: int | float | string](key, section, namespace: string): T =
   when T is int:
     let value = configStr(key, section, namespace)
     if parseInt(value, result) == 0:
-      raise newException(Exception, &"Unable to parse int from settings {namespace}.{section}.{key}: {value}")
+      raise newException(
+        Exception,
+        &"Unable to parse int from settings {namespace}.{section}.{key}: {value}",
+      )
   elif T is float:
     let value = configStr(key, section, namespace)
     if parseFloat(value, result) == 0:
-      raise newException(Exception, &"Unable to parse float from settings {namespace}.{section}.{key}: {value}")
+      raise newException(
+        Exception,
+        &"Unable to parse float from settings {namespace}.{section}.{key}: {value}",
+      )
   else:
     result = configStr(key, section, namespace)
 
-proc Setting*[T: int|float|string](identifier: string): T =
+proc Setting*[T: int | float | string](identifier: string): T =
   # identifier can be in the form:
   # {namespace}.{key}
   # {namespace}.{section}.{key}
   let parts = identifier.rsplit(".")
   if parts.len == 1:
     raise newException(Exception, &"Setting with name {identifier} has no namespace")
-  if parts.len == 2: result = Setting[T](parts[1], "", parts[0])
-  else: result = Setting[T](parts[^1], parts[^2], joinPath(parts[0 .. ^3]))
+  if parts.len == 2:
+    result = Setting[T](parts[1], "", parts[0])
+  else:
+    result = Setting[T](parts[^1], parts[^2], joinPath(parts[0 .. ^3]))
 
 proc HadConfigUpdate*(): bool =
   when CONFIGHOTRELOAD == true:
@@ -96,5 +102,6 @@
           let configStr = newFileStream(namespace.getFile()).readAll()
           configUpdates.send((namespace, configStr))
       sleep CONFIGHOTRELOADINTERVAL
+
   var thethread: Thread[void]
   createThread(thethread, configFileWatchdog)
--- a/semicongine/contrib/steam.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/contrib/steam.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -12,10 +12,8 @@
   steam_api = "steam_api".loadLib()
   # TODO: maybe should get some error reporting on windows too?
 
-
 # required to store reference, when calling certain APIs
-type
-  SteamUserStatsRef = ptr object
+type SteamUserStatsRef = ptr object
 var userStats: SteamUserStatsRef
 
 # load function pointers for steam API
@@ -23,13 +21,16 @@
   Shutdown*: proc() {.stdcall.}
   Init: proc(msg: ptr array[1024, char]): cint {.stdcall.}
   SteamUserStats: proc(): SteamUserStatsRef {.stdcall.}
-  RequestCurrentStats: proc(self: SteamUserStatsRef): bool {.stdcall.} # needs to be called before the achievment-stuff
+  RequestCurrentStats: proc(self: SteamUserStatsRef): bool {.stdcall.}
+    # needs to be called before the achievment-stuff
   ClearAchievement: proc(self: SteamUserStatsRef, pchName: cstring): bool {.stdcall.}
   SetAchievement: proc(self: SteamUserStatsRef, pchName: cstring): bool {.stdcall.}
-  StoreStats: proc(self: SteamUserStatsRef): bool {.stdcall.}          # needs to be called in order for achievments to be saved
-                                                                       # dynlib-helper function
+  StoreStats: proc(self: SteamUserStatsRef): bool {.stdcall.}
+    # needs to be called in order for achievments to be saved
+    # dynlib-helper function
 proc loadFunc[T](nimFunc: var T, dllFuncName: string) =
   nimFunc = cast[T](steam_api.checkedSymAddr(dllFuncName))
+
 if steam_api != nil:
   loadFunc(Init, "SteamAPI_InitFlat")
   loadFunc(Shutdown, "SteamAPI_Shutdown")
@@ -39,7 +40,6 @@
   loadFunc(SetAchievement, "SteamAPI_ISteamUserStats_SetAchievement")
   loadFunc(StoreStats, "SteamAPI_ISteamUserStats_StoreStats")
 
-
 # nice wrappers for steam API
 
 proc SteamRequestCurrentStats*(): bool =
@@ -57,7 +57,6 @@
 proc SteamShutdown*() =
   Shutdown()
 
-
 # helper funcs
 proc SteamAvailable*(): bool =
   steam_api != nil and steam_is_loaded
--- a/semicongine/core.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/core.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -15,4 +15,3 @@
 include ./core/buildconfig
 include ./core/vector
 include ./core/matrix
-
--- a/semicongine/core/buildconfig.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/core/buildconfig.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -5,16 +5,17 @@
 # checks required build options:
 static:
   if defined(linux):
-    assert defined(VK_USE_PLATFORM_XLIB_KHR), ENGINENAME & " requires --d:VK_USE_PLATFORM_XLIB_KHR for linux builds"
+    assert defined(VK_USE_PLATFORM_XLIB_KHR),
+      ENGINENAME & " requires --d:VK_USE_PLATFORM_XLIB_KHR for linux builds"
   elif defined(windows):
-    assert defined(VK_USE_PLATFORM_WIN32_KHR), ENGINENAME & " requires --d:VK_USE_PLATFORM_WIN32_KHR for windows builds"
+    assert defined(VK_USE_PLATFORM_WIN32_KHR),
+      ENGINENAME & " requires --d:VK_USE_PLATFORM_WIN32_KHR for windows builds"
   else:
     assert false, "trying to build on unsupported platform"
 
 # build configuration
 # =====================
 
-
 # log level
 when not defined(release):
   const LOGLEVEL {.strdefine.}: string = "Debug"
@@ -28,4 +29,6 @@
 const DEFAULT_PACKAGE* = "default"
 const PACKAGETYPE* {.strdefine.}: string = "exe" # dir, zip, exe
 static:
-  assert PACKAGETYPE in ["dir", "zip", "exe"], ENGINENAME & " requires one of -d:PACKAGETYPE=dir -d:PACKAGETYPE=zip -d:PACKAGETYPE=exe"
+  assert PACKAGETYPE in ["dir", "zip", "exe"],
+    ENGINENAME &
+      " requires one of -d:PACKAGETYPE=dir -d:PACKAGETYPE=zip -d:PACKAGETYPE=exe"
--- a/semicongine/core/matrix.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/core/matrix.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -8,20 +8,27 @@
   # Though, great news is that objects have zero overhead!
   TMat2*[T: SomeNumber] = object
     data*: array[4, T]
+
   TMat23*[T: SomeNumber] = object
     data*: array[6, T]
+
   TMat32*[T: SomeNumber] = object
     data*: array[6, T]
+
   TMat3*[T: SomeNumber] = object
     data*: array[9, T]
+
   TMat34*[T: SomeNumber] = object
     data*: array[12, T]
+
   TMat43*[T: SomeNumber] = object
     data*: array[12, T]
+
   TMat4*[T: SomeNumber] = object
     data*: array[16, T]
-  TMat* = TMat2|TMat3|TMat4|TMat23|TMat32|TMat34|TMat43
-  TSquareMat = TMat2|TMat3|TMat4
+
+  TMat* = TMat2 | TMat3 | TMat4 | TMat23 | TMat32 | TMat34 | TMat43
+  TSquareMat = TMat2 | TMat3 | TMat4
   Mat2* = TMat2[float32]
   Mat23* = TMat23[float32]
   Mat32* = TMat32[float32]
@@ -30,45 +37,63 @@
   Mat43* = TMat43[float32]
   Mat4* = TMat4[float32]
 
-func makeUnit2[T: SomeNumber](): auto {.compiletime.} = TMat2[T](data: [
-  T(1), T(0),
-  T(0), T(1),
-])
-func makeUnit3[T: SomeNumber](): auto {.compiletime.} = TMat3[T](data: [
-  T(1), T(0), T(0),
-  T(0), T(1), T(0),
-  T(0), T(0), T(1),
-])
-func makeUnit4[T: SomeNumber](): auto {.compiletime.} = TMat4[T](data: [
-  T(1), T(0), T(0), T(0),
-  T(0), T(1), T(0), T(0),
-  T(0), T(0), T(1), T(0),
-  T(0), T(0), T(0), T(1),
-])
+func makeUnit2[T: SomeNumber](): auto {.compiletime.} =
+  TMat2[T](data: [T(1), T(0), T(0), T(1)])
+func makeUnit3[T: SomeNumber](): auto {.compiletime.} =
+  TMat3[T](data: [T(1), T(0), T(0), T(0), T(1), T(0), T(0), T(0), T(1)])
+func makeUnit4[T: SomeNumber](): auto {.compiletime.} =
+  TMat4[T](
+    data: [
+      T(1),
+      T(0),
+      T(0),
+      T(0),
+      T(0),
+      T(1),
+      T(0),
+      T(0),
+      T(0),
+      T(0),
+      T(1),
+      T(0),
+      T(0),
+      T(0),
+      T(0),
+      T(1),
+    ]
+  )
 
 # generates constants: Unit
 # Also for Y, Z, R, G, B
 # not sure if this is necessary or even a good idea...
 macro generateAllMatrixConsts() =
   result = newStmtList()
-  for theType in ["int", "int8", "int16", "int32", "int64", "float", "float32", "float64"]:
+  for theType in [
+    "int", "int8", "int16", "int32", "int64", "float", "float32", "float64"
+  ]:
     var typename = theType[0 .. 0]
     if theType[^2].isDigit:
       typename = typename & theType[^2]
     if theType[^1].isDigit:
       typename = typename & theType[^1]
-    result.add(newConstStmt(
-      postfix(ident("Unit2" & typename), "*"),
-      newCall(nnkBracketExpr.newTree(ident("makeUnit2"), ident(theType)))
-    ))
-    result.add(newConstStmt(
-      postfix(ident("Unit3" & typename), "*"),
-      newCall(nnkBracketExpr.newTree(ident("makeUnit3"), ident(theType)))
-    ))
-    result.add(newConstStmt(
-      postfix(ident("Unit4" & typename), "*"),
-      newCall(nnkBracketExpr.newTree(ident("makeUnit4"), ident(theType)))
-    ))
+    result.add(
+      newConstStmt(
+        postfix(ident("Unit2" & typename), "*"),
+        newCall(nnkBracketExpr.newTree(ident("makeUnit2"), ident(theType))),
+      )
+    )
+    result.add(
+      newConstStmt(
+        postfix(ident("Unit3" & typename), "*"),
+        newCall(nnkBracketExpr.newTree(ident("makeUnit3"), ident(theType))),
+      )
+    )
+    result.add(
+      newConstStmt(
+        postfix(ident("Unit4" & typename), "*"),
+        newCall(nnkBracketExpr.newTree(ident("makeUnit4"), ident(theType))),
+      )
+    )
 
 generateAllMatrixConsts()
 
@@ -77,30 +102,52 @@
 const Unit4* = makeUnit4[float32]()
 
 template RowCount*(m: typedesc): int =
-  when m is TMat2: 2
-  elif m is TMat23: 2
-  elif m is TMat32: 3
-  elif m is TMat3: 3
-  elif m is TMat34: 3
-  elif m is TMat43: 4
-  elif m is TMat4: 4
+  when m is TMat2:
+    2
+  elif m is TMat23:
+    2
+  elif m is TMat32:
+    3
+  elif m is TMat3:
+    3
+  elif m is TMat34:
+    3
+  elif m is TMat43:
+    4
+  elif m is TMat4:
+    4
+
 template ColumnCount*(m: typedesc): int =
-  when m is TMat2: 2
-  elif m is TMat23: 3
-  elif m is TMat32: 2
-  elif m is TMat3: 3
-  elif m is TMat34: 4
-  elif m is TMat43: 3
-  elif m is TMat4: 4
+  when m is TMat2:
+    2
+  elif m is TMat23:
+    3
+  elif m is TMat32:
+    2
+  elif m is TMat3:
+    3
+  elif m is TMat34:
+    4
+  elif m is TMat43:
+    3
+  elif m is TMat4:
+    4
+
 template matlen(m: typedesc): int =
-  when m is TMat2: 4
-  elif m is TMat23: 6
-  elif m is TMat32: 6
-  elif m is TMat3: 9
-  elif m is TMat34: 12
-  elif m is TMat43: 12
-  elif m is TMat4: 16
-
+  when m is TMat2:
+    4
+  elif m is TMat23:
+    6
+  elif m is TMat32:
+    6
+  elif m is TMat3:
+    9
+  elif m is TMat34:
+    12
+  elif m is TMat43:
+    12
+  elif m is TMat4:
+    16
 
 func toMatString[T: TMat](value: T): string =
   var
@@ -122,56 +169,87 @@
         result &= "  "
       result &= filler & strvalues[i] & "  "
 
-func `$`*(v: TMat2[SomeNumber]): string = toMatString[TMat2[SomeNumber]](v)
-func `$`*(v: TMat23[SomeNumber]): string = toMatString[TMat23[SomeNumber]](v)
-func `$`*(v: TMat32[SomeNumber]): string = toMatString[TMat32[SomeNumber]](v)
-func `$`*(v: TMat3[SomeNumber]): string = toMatString[TMat3[SomeNumber]](v)
-func `$`*(v: TMat34[SomeNumber]): string = toMatString[TMat34[SomeNumber]](v)
-func `$`*(v: TMat43[SomeNumber]): string = toMatString[TMat43[SomeNumber]](v)
-func `$`*(v: TMat4[SomeNumber]): string = toMatString[TMat4[SomeNumber]](v)
+func `$`*(v: TMat2[SomeNumber]): string =
+  toMatString[TMat2[SomeNumber]](v)
+func `$`*(v: TMat23[SomeNumber]): string =
+  toMatString[TMat23[SomeNumber]](v)
+func `$`*(v: TMat32[SomeNumber]): string =
+  toMatString[TMat32[SomeNumber]](v)
+func `$`*(v: TMat3[SomeNumber]): string =
+  toMatString[TMat3[SomeNumber]](v)
+func `$`*(v: TMat34[SomeNumber]): string =
+  toMatString[TMat34[SomeNumber]](v)
+func `$`*(v: TMat43[SomeNumber]): string =
+  toMatString[TMat43[SomeNumber]](v)
+func `$`*(v: TMat4[SomeNumber]): string =
+  toMatString[TMat4[SomeNumber]](v)
 
-func `[]`*[T: TMat](m: T, row, col: int): auto = m.data[col + row * T.ColumnCount]
-func `[]=`*[T: TMat, U](m: var T, row, col: int, value: U) = m.data[col + row * T.ColumnCount] = value
-func `[]`*[T: TMat](m: T, i: int): auto = m.data[i]
-func `[]=`*[T: TMat, U](m: var T, i: int, value: U) = m.data[i] = value
+func `[]`*[T: TMat](m: T, row, col: int): auto =
+  m.data[col + row * T.ColumnCount]
+func `[]=`*[T: TMat, U](m: var T, row, col: int, value: U) =
+  m.data[col + row * T.ColumnCount] = value
+func `[]`*[T: TMat](m: T, i: int): auto =
+  m.data[i]
+func `[]=`*[T: TMat, U](m: var T, i: int, value: U) =
+  m.data[i] = value
 
-func row*[T: TMat2](m: T, i: 0..1): auto = TVec2([m[i, 0], m[i, 1]])
-func row*[T: TMat32](m: T, i: 0..2): auto = TVec2([m[i, 0], m[i, 1]])
-func row*[T: TMat23](m: T, i: 0..1): auto = TVec3([m[i, 0], m[i, 1], m[i, 2]])
-func row*[T: TMat3](m: T, i: 0..2): auto = TVec3([m[i, 0], m[i, 1], m[i, 2]])
-func row*[T: TMat43](m: T, i: 0..3): auto = TVec3([m[i, 0], m[i, 1], m[i, 2]])
-func row*[T: TMat34](m: T, i: 0..2): auto = TVec4([m[i, 0], m[i, 1], m[i, 2], m[i, 3]])
-func row*[T: TMat4](m: T, i: 0..3): auto = TVec4([m[i, 0], m[i, 1], m[i, 2], m[i, 3]])
+func row*[T: TMat2](m: T, i: 0 .. 1): auto =
+  TVec2([m[i, 0], m[i, 1]])
+func row*[T: TMat32](m: T, i: 0 .. 2): auto =
+  TVec2([m[i, 0], m[i, 1]])
+func row*[T: TMat23](m: T, i: 0 .. 1): auto =
+  TVec3([m[i, 0], m[i, 1], m[i, 2]])
+func row*[T: TMat3](m: T, i: 0 .. 2): auto =
+  TVec3([m[i, 0], m[i, 1], m[i, 2]])
+func row*[T: TMat43](m: T, i: 0 .. 3): auto =
+  TVec3([m[i, 0], m[i, 1], m[i, 2]])
+func row*[T: TMat34](m: T, i: 0 .. 2): auto =
+  TVec4([m[i, 0], m[i, 1], m[i, 2], m[i, 3]])
+func row*[T: TMat4](m: T, i: 0 .. 3): auto =
+  TVec4([m[i, 0], m[i, 1], m[i, 2], m[i, 3]])
 
-func col*[T: TMat2](m: T, i: 0..1): auto = TVec2([m[0, i], m[1, i]])
-func col*[T: TMat23](m: T, i: 0..2): auto = TVec2([m[0, i], m[1, i]])
-func col*[T: TMat32](m: T, i: 0..1): auto = TVec3([m[0, i], m[1, i], m[2, i]])
-func col*[T: TMat3](m: T, i: 0..2): auto = TVec3([m[0, i], m[1, i], m[2, i]])
-func col*[T: TMat34](m: T, i: 0..3): auto = TVec3([m[0, i], m[1, i], m[2, i]])
-func col*[T: TMat43](m: T, i: 0..2): auto = TVec4([m[0, i], m[1, i], m[2, i], m[3, i]])
-func col*[T: TMat4](m: T, i: 0..3): auto = TVec4([m[0, i], m[1, i], m[2, i], m[3, i]])
+func col*[T: TMat2](m: T, i: 0 .. 1): auto =
+  TVec2([m[0, i], m[1, i]])
+func col*[T: TMat23](m: T, i: 0 .. 2): auto =
+  TVec2([m[0, i], m[1, i]])
+func col*[T: TMat32](m: T, i: 0 .. 1): auto =
+  TVec3([m[0, i], m[1, i], m[2, i]])
+func col*[T: TMat3](m: T, i: 0 .. 2): auto =
+  TVec3([m[0, i], m[1, i], m[2, i]])
+func col*[T: TMat34](m: T, i: 0 .. 3): auto =
+  TVec3([m[0, i], m[1, i], m[2, i]])
+func col*[T: TMat43](m: T, i: 0 .. 2): auto =
+  TVec4([m[0, i], m[1, i], m[2, i], m[3, i]])
+func col*[T: TMat4](m: T, i: 0 .. 3): auto =
+  TVec4([m[0, i], m[1, i], m[2, i], m[3, i]])
 
-proc createMatMatMultiplicationOperator(leftType: typedesc, rightType: typedesc, outType: typedesc): NimNode =
+proc createMatMatMultiplicationOperator(
+    leftType: typedesc, rightType: typedesc, outType: typedesc
+): NimNode =
   var data = nnkBracket.newTree()
   for i in 0 ..< RowCount(leftType):
     for j in 0 ..< rightType.ColumnCount:
-      data.add(newCall(
-        ident("sum"),
-        infix(
-          newCall(newDotExpr(ident("a"), ident("row")), newLit(i)),
-          "*",
-          newCall(newDotExpr(ident("b"), ident("col")), newLit(j))
+      data.add(
+        newCall(
+          ident("sum"),
+          infix(
+            newCall(newDotExpr(ident("a"), ident("row")), newLit(i)),
+            "*",
+            newCall(newDotExpr(ident("b"), ident("col")), newLit(j)),
+          ),
         )
-      ))
+      )
 
   return newProc(
     postfix(nnkAccQuoted.newTree(ident("*")), "*"),
     params = [
       ident("auto"),
       newIdentDefs(ident("a"), ident(leftType.name)),
-      newIdentDefs(ident("b"), ident(rightType.name))
+      newIdentDefs(ident("b"), ident(rightType.name)),
     ],
-    body = nnkObjConstr.newTree(ident(outType.name), nnkExprColonExpr.newTree(ident("data"), data)),
+    body = nnkObjConstr.newTree(
+      ident(outType.name), nnkExprColonExpr.newTree(ident("data"), data)
+    ),
     procType = nnkFuncDef,
   )
 
@@ -183,37 +261,37 @@
         nnkBracketExpr.newTree(ident("a"), newLit(i)),
         "+",
         nnkBracketExpr.newTree(ident("b"), newLit(i)),
-    ))
+      )
+    )
 
   return newProc(
     postfix(nnkAccQuoted.newTree(ident("+")), "*"),
     params = [
       ident("auto"),
       newIdentDefs(ident("a"), ident(theType.name)),
-      newIdentDefs(ident("b"), ident(theType.name))
+      newIdentDefs(ident("b"), ident(theType.name)),
     ],
-    body = nnkObjConstr.newTree(ident(theType.name), nnkExprColonExpr.newTree(ident("data"), data)),
+    body = nnkObjConstr.newTree(
+      ident(theType.name), nnkExprColonExpr.newTree(ident("data"), data)
+    ),
     procType = nnkFuncDef,
   )
 
 proc createVecMatMultiplicationOperator(matType: typedesc, vecType: typedesc): NimNode =
   var data = nnkBracket.newTree()
   for i in 0 ..< matType.RowCount:
-    data.add(newCall(
-      ident("sum"),
-      infix(
-        ident("v"),
-        "*",
-        newCall(newDotExpr(ident("m"), ident("row")), newLit(i))
+    data.add(
+      newCall(
+        ident("sum"),
+        infix(ident("v"), "*", newCall(newDotExpr(ident("m"), ident("row")), newLit(i))),
       )
-    ))
+    )
 
-  let resultVec = newCall(
-    nnkBracketExpr.newTree(ident(vecType.name), ident("T")),
-    data,
+  let resultVec = newCall(nnkBracketExpr.newTree(ident(vecType.name), ident("T")), data)
+  let name = postfix(nnkAccQuoted.newTree(ident("*")), "*")
+  let genericParams = nnkGenericParams.newTree(
+    nnkIdentDefs.newTree(ident("T"), ident("SomeNumber"), newEmptyNode())
   )
-  let name = postfix(nnkAccQuoted.newTree(ident("*")), "*")
-  let genericParams = nnkGenericParams.newTree(nnkIdentDefs.newTree(ident("T"), ident("SomeNumber"), newEmptyNode()))
   let formalParams = nnkFormalParams.newTree(
     ident("auto"),
     newIdentDefs(ident("m"), nnkBracketExpr.newTree(ident(matType.name), ident("T"))),
@@ -227,49 +305,67 @@
     formalParams,
     newEmptyNode(),
     newEmptyNode(),
-    resultVec
+    resultVec,
   )
 
-
 proc createMatScalarOperator(matType: typedesc, op: string): NimNode =
   result = newStmtList()
 
   var data = nnkBracket.newTree()
   for i in 0 ..< matType.RowCount * matType.ColumnCount:
-    data.add(infix(nnkBracketExpr.newTree(newDotExpr(ident("a"), ident("data")), newLit(i)), op, ident("b")))
-  result.add(newProc(
-    postfix(nnkAccQuoted.newTree(ident(op)), "*"),
-    params = [
-      ident("auto"),
-      newIdentDefs(ident("a"), ident(matType.name)),
-      newIdentDefs(ident("b"), ident("SomeNumber")),
-    ],
-    body = nnkObjConstr.newTree(ident(matType.name), nnkExprColonExpr.newTree(ident("data"), data)),
-    procType = nnkFuncDef,
-  ))
-  result.add(newProc(
-    postfix(nnkAccQuoted.newTree(ident(op)), "*"),
-    params = [
-      ident("auto"),
-      newIdentDefs(ident("b"), ident("SomeNumber")),
-      newIdentDefs(ident("a"), ident(matType.name)),
-    ],
-    body = nnkObjConstr.newTree(ident(matType.name), nnkExprColonExpr.newTree(ident("data"), data)),
-    procType = nnkFuncDef,
-  ))
-  if op == "-":
-    var data2 = nnkBracket.newTree()
-    for i in 0 ..< matType.RowCount * matType.ColumnCount:
-      data2.add(prefix(nnkBracketExpr.newTree(newDotExpr(ident("a"), ident("data")), newLit(i)), op))
-    result.add(newProc(
+    data.add(
+      infix(
+        nnkBracketExpr.newTree(newDotExpr(ident("a"), ident("data")), newLit(i)),
+        op,
+        ident("b"),
+      )
+    )
+  result.add(
+    newProc(
       postfix(nnkAccQuoted.newTree(ident(op)), "*"),
       params = [
         ident("auto"),
         newIdentDefs(ident("a"), ident(matType.name)),
+        newIdentDefs(ident("b"), ident("SomeNumber")),
       ],
-      body = nnkObjConstr.newTree(ident(matType.name), nnkExprColonExpr.newTree(ident("data"), data2)),
+      body = nnkObjConstr.newTree(
+        ident(matType.name), nnkExprColonExpr.newTree(ident("data"), data)
+      ),
+      procType = nnkFuncDef,
+    )
+  )
+  result.add(
+    newProc(
+      postfix(nnkAccQuoted.newTree(ident(op)), "*"),
+      params = [
+        ident("auto"),
+        newIdentDefs(ident("b"), ident("SomeNumber")),
+        newIdentDefs(ident("a"), ident(matType.name)),
+      ],
+      body = nnkObjConstr.newTree(
+        ident(matType.name), nnkExprColonExpr.newTree(ident("data"), data)
+      ),
       procType = nnkFuncDef,
-    ))
+    )
+  )
+  if op == "-":
+    var data2 = nnkBracket.newTree()
+    for i in 0 ..< matType.RowCount * matType.ColumnCount:
+      data2.add(
+        prefix(
+          nnkBracketExpr.newTree(newDotExpr(ident("a"), ident("data")), newLit(i)), op
+        )
+      )
+    result.add(
+      newProc(
+        postfix(nnkAccQuoted.newTree(ident(op)), "*"),
+        params = [ident("auto"), newIdentDefs(ident("a"), ident(matType.name))],
+        body = nnkObjConstr.newTree(
+          ident(matType.name), nnkExprColonExpr.newTree(ident("data"), data2)
+        ),
+        procType = nnkFuncDef,
+      )
+    )
 
 macro createAllMultiplicationOperators() =
   result = newStmtList()
@@ -311,13 +407,13 @@
 
 createAllMultiplicationOperators()
 
-proc `+=`*[T1: TSquareMat, T2: TSquareMat|SomeNumber](a: var T1, b: T2) =
+proc `+=`*[T1: TSquareMat, T2: TSquareMat | SomeNumber](a: var T1, b: T2) =
   a = a + b
 
-proc `-=`*[T1: TSquareMat, T2: TSquareMat|SomeNumber](a: var T1, b: T2) =
+proc `-=`*[T1: TSquareMat, T2: TSquareMat | SomeNumber](a: var T1, b: T2) =
   a = a + b
 
-proc `*=`*[T1: TSquareMat, T2: TSquareMat|SomeNumber](a: var T1, b: T2) =
+proc `*=`*[T1: TSquareMat, T2: TSquareMat | SomeNumber](a: var T1, b: T2) =
   a = a * b
 
 func `*`*(mat: Mat4, vec: Vec3f): Vec3f =
@@ -326,71 +422,100 @@
 func `*`*(mat: Mat3, vec: Vec2f): Vec2f =
   (mat * vec.ToVec3(1)).ToVec2
 
-func transposed*[T](m: TMat2[T]): TMat2[T] = TMat2[T](data: [
-  m[0, 0], m[1, 0],
-  m[0, 1], m[1, 1],
-])
-func transposed*[T](m: TMat23[T]): TMat32[T] = TMat32[T](data: [
-  m[0, 0], m[1, 0],
-  m[0, 1], m[1, 1],
-  m[0, 2], m[1, 2],
-])
-func transposed*[T](m: TMat32[T]): TMat23[T] = TMat23[T](data: [
-  m[0, 0], m[1, 0], m[2, 0],
-  m[0, 1], m[1, 1], m[2, 1],
-])
-func transposed*[T](m: TMat3[T]): TMat3[T] = TMat3[T](data: [
-  m[0, 0], m[1, 0], m[2, 0],
-  m[0, 1], m[1, 1], m[2, 1],
-  m[0, 2], m[1, 2], m[2, 2],
-])
-func transposed*[T](m: TMat43[T]): TMat34[T] = TMat34[T](data: [
-  m[0, 0], m[1, 0], m[2, 0], m[3, 0],
-  m[0, 1], m[1, 1], m[2, 1], m[3, 1],
-  m[0, 2], m[1, 2], m[2, 2], m[3, 2],
-])
-func transposed*[T](m: TMat34[T]): TMat43[T] = TMat43[T](data: [
-  m[0, 0], m[1, 0], m[2, 0],
-  m[0, 1], m[1, 1], m[2, 1],
-  m[0, 2], m[1, 2], m[2, 2],
-  m[0, 3], m[1, 3], m[2, 3],
-])
-func transposed*[T](m: TMat4[T]): TMat4[T] = TMat4[T](data: [
-  m[0, 0], m[1, 0], m[2, 0], m[3, 0],
-  m[0, 1], m[1, 1], m[2, 1], m[3, 1],
-  m[0, 2], m[1, 2], m[2, 2], m[3, 2],
-  m[0, 3], m[1, 3], m[2, 3], m[3, 3],
-])
+func transposed*[T](m: TMat2[T]): TMat2[T] =
+  TMat2[T](data: [m[0, 0], m[1, 0], m[0, 1], m[1, 1]])
+func transposed*[T](m: TMat23[T]): TMat32[T] =
+  TMat32[T](data: [m[0, 0], m[1, 0], m[0, 1], m[1, 1], m[0, 2], m[1, 2]])
+func transposed*[T](m: TMat32[T]): TMat23[T] =
+  TMat23[T](data: [m[0, 0], m[1, 0], m[2, 0], m[0, 1], m[1, 1], m[2, 1]])
+func transposed*[T](m: TMat3[T]): TMat3[T] =
+  TMat3[T](
+    data:
+      [m[0, 0], m[1, 0], m[2, 0], m[0, 1], m[1, 1], m[2, 1], m[0, 2], m[1, 2], m[2, 2]]
+  )
+func transposed*[T](m: TMat43[T]): TMat34[T] =
+  TMat34[T](
+    data: [
+      m[0, 0],
+      m[1, 0],
+      m[2, 0],
+      m[3, 0],
+      m[0, 1],
+      m[1, 1],
+      m[2, 1],
+      m[3, 1],
+      m[0, 2],
+      m[1, 2],
+      m[2, 2],
+      m[3, 2],
+    ]
+  )
+func transposed*[T](m: TMat34[T]): TMat43[T] =
+  TMat43[T](
+    data: [
+      m[0, 0],
+      m[1, 0],
+      m[2, 0],
+      m[0, 1],
+      m[1, 1],
+      m[2, 1],
+      m[0, 2],
+      m[1, 2],
+      m[2, 2],
+      m[0, 3],
+      m[1, 3],
+      m[2, 3],
+    ]
+  )
+func transposed*[T](m: TMat4[T]): TMat4[T] =
+  TMat4[T](
+    data: [
+      m[0, 0],
+      m[1, 0],
+      m[2, 0],
+      m[3, 0],
+      m[0, 1],
+      m[1, 1],
+      m[2, 1],
+      m[3, 1],
+      m[0, 2],
+      m[1, 2],
+      m[2, 2],
+      m[3, 2],
+      m[0, 3],
+      m[1, 3],
+      m[2, 3],
+      m[3, 3],
+    ]
+  )
 
-func translate2d*[T](x, y: T): TMat3[T] = TMat3[T](data: [
-  T(1), T(0), x,
-  T(0), T(1), y,
-  T(0), T(0), T(1),
-])
-func scale2d*[T](sx, sy: T): TMat3[T] = TMat3[T](data: [
-  sx, T(0), T(0),
-  T(0), sy, T(0),
-  T(0), T(0), T(1),
-])
-func rotate2d*[T](angle: T): TMat3[T] = TMat3[T](data: [
-  cos(angle), -sin(angle), T(0),
-  sin(angle), cos(angle), T(0),
-  T(0), T(0), T(1),
-])
-func translate*(x = 0'f32, y = 0'f32, z = 0'f32): TMat4[float32] = Mat4(data: [
-  1'f32, 0'f32, 0'f32, x,
-  0'f32, 1'f32, 0'f32, y,
-  0'f32, 0'f32, 1'f32, z,
-  0'f32, 0'f32, 0'f32, 1'f32,
-])
-func translate*[T: TVec3](v: T): TMat4[float32] = translate(v[0], v[1], v[2])
-func scale*(x = 1'f32, y = 1'f32, z = 1'f32): Mat4 = Mat4(data: [
-  x, 0'f32, 0'f32, 0'f32,
-  0'f32, y, 0'f32, 0'f32,
-  0'f32, 0'f32, z, 0'f32,
-  0'f32, 0'f32, 0'f32, 1'f32,
-])
-func scale*[T: TVec3](v: T): TMat4[float32] = scale(v[0], v[1], v[2])
+func translate2d*[T](x, y: T): TMat3[T] =
+  TMat3[T](data: [T(1), T(0), x, T(0), T(1), y, T(0), T(0), T(1)])
+func scale2d*[T](sx, sy: T): TMat3[T] =
+  TMat3[T](data: [sx, T(0), T(0), T(0), sy, T(0), T(0), T(0), T(1)])
+func rotate2d*[T](angle: T): TMat3[T] =
+  TMat3[T](
+    data:
+      [cos(angle), -sin(angle), T(0), sin(angle), cos(angle), T(0), T(0), T(0), T(1)]
+  )
+func translate*(x = 0'f32, y = 0'f32, z = 0'f32): TMat4[float32] =
+  Mat4(
+    data: [
+      1'f32, 0'f32, 0'f32, x, 0'f32, 1'f32, 0'f32, y, 0'f32, 0'f32, 1'f32, z, 0'f32,
+      0'f32, 0'f32, 1'f32,
+    ]
+  )
+func translate*[T: TVec3](v: T): TMat4[float32] =
+  translate(v[0], v[1], v[2])
+func scale*(x = 1'f32, y = 1'f32, z = 1'f32): Mat4 =
+  Mat4(
+    data: [
+      x, 0'f32, 0'f32, 0'f32, 0'f32, y, 0'f32, 0'f32, 0'f32, 0'f32, z, 0'f32, 0'f32,
+      0'f32, 0'f32, 1'f32,
+    ]
+  )
+func scale*[T: TVec3](v: T): TMat4[float32] =
+  scale(v[0], v[1], v[2])
 func rotate*(angle: float32, a: Vec3f): Mat4 =
   let
     axis = a.normalized()
@@ -399,20 +524,32 @@
     x = axis.x
     y = axis.y
     z = axis.z
-  Mat4(data: [
-    x * x * (1 - cosa) + cosa, y * x * (1 - cosa) - z * sina, z * x * (1 - cosa) + y * sina, 0'f32,
-    x * y * (1 - cosa) + z * sina, y * y * (1 - cosa) + cosa, z * y * (1 - cosa) - x * sina, 0'f32,
-    x * z * (1 - cosa) - y * sina, y * z * (1 - cosa) + x * sina, z * z * (1 - cosa) + cosa, 0'f32,
-    0'f32, 0'f32, 0'f32, 1'f32,
-  ])
+  Mat4(
+    data: [
+      x * x * (1 - cosa) + cosa,
+      y * x * (1 - cosa) - z * sina,
+      z * x * (1 - cosa) + y * sina,
+      0'f32,
+      x * y * (1 - cosa) + z * sina,
+      y * y * (1 - cosa) + cosa,
+      z * y * (1 - cosa) - x * sina,
+      0'f32,
+      x * z * (1 - cosa) - y * sina,
+      y * z * (1 - cosa) + x * sina,
+      z * z * (1 - cosa) + cosa,
+      0'f32,
+      0'f32,
+      0'f32,
+      0'f32,
+      1'f32,
+    ]
+  )
 
 func asMat3(m: Mat4): auto =
-  Mat3(data: [
-    m[0, 0], m[0, 1], m[0, 2],
-    m[1, 0], m[1, 1], m[1, 2],
-    m[2, 0], m[2, 1], m[2, 2],
-  ])
-
+  Mat3(
+    data:
+      [m[0, 0], m[0, 1], m[0, 2], m[1, 0], m[1, 1], m[1, 2], m[2, 0], m[2, 1], m[2, 2]]
+  )
 
 func inversed*(a: Mat4): Mat4 =
   # from: https://stackoverflow.com/a/9614511
@@ -431,27 +568,27 @@
     c0 = a[2, 0] * a[3, 1] - a[3, 0] * a[2, 1]
 
   # Should check for 0 determinant
-  var invdet = 1.0 / (s0 * c5 - s1 * c4 + s2 * c3 + s3 * c2 - s4 * c1 + s5 * c0);
+  var invdet = 1.0 / (s0 * c5 - s1 * c4 + s2 * c3 + s3 * c2 - s4 * c1 + s5 * c0)
 
-  result[0, 0] = ( a[1, 1] * c5 - a[1, 2] * c4 + a[1, 3] * c3) * invdet;
-  result[0, 1] = (-a[0, 1] * c5 + a[0, 2] * c4 - a[0, 3] * c3) * invdet;
-  result[0, 2] = ( a[3, 1] * s5 - a[3, 2] * s4 + a[3, 3] * s3) * invdet;
-  result[0, 3] = (-a[2, 1] * s5 + a[2, 2] * s4 - a[2, 3] * s3) * invdet;
+  result[0, 0] = (a[1, 1] * c5 - a[1, 2] * c4 + a[1, 3] * c3) * invdet
+  result[0, 1] = (-a[0, 1] * c5 + a[0, 2] * c4 - a[0, 3] * c3) * invdet
+  result[0, 2] = (a[3, 1] * s5 - a[3, 2] * s4 + a[3, 3] * s3) * invdet
+  result[0, 3] = (-a[2, 1] * s5 + a[2, 2] * s4 - a[2, 3] * s3) * invdet
 
-  result[1, 0] = (-a[1, 0] * c5 + a[1, 2] * c2 - a[1, 3] * c1) * invdet;
-  result[1, 1] = ( a[0, 0] * c5 - a[0, 2] * c2 + a[0, 3] * c1) * invdet;
-  result[1, 2] = (-a[3, 0] * s5 + a[3, 2] * s2 - a[3, 3] * s1) * invdet;
-  result[1, 3] = ( a[2, 0] * s5 - a[2, 2] * s2 + a[2, 3] * s1) * invdet;
+  result[1, 0] = (-a[1, 0] * c5 + a[1, 2] * c2 - a[1, 3] * c1) * invdet
+  result[1, 1] = (a[0, 0] * c5 - a[0, 2] * c2 + a[0, 3] * c1) * invdet
+  result[1, 2] = (-a[3, 0] * s5 + a[3, 2] * s2 - a[3, 3] * s1) * invdet
+  result[1, 3] = (a[2, 0] * s5 - a[2, 2] * s2 + a[2, 3] * s1) * invdet
 
-  result[2, 0] = ( a[1, 0] * c4 - a[1, 1] * c2 + a[1, 3] * c0) * invdet;
-  result[2, 1] = (-a[0, 0] * c4 + a[0, 1] * c2 - a[0, 3] * c0) * invdet;
-  result[2, 2] = ( a[3, 0] * s4 - a[3, 1] * s2 + a[3, 3] * s0) * invdet;
-  result[2, 3] = (-a[2, 0] * s4 + a[2, 1] * s2 - a[2, 3] * s0) * invdet;
+  result[2, 0] = (a[1, 0] * c4 - a[1, 1] * c2 + a[1, 3] * c0) * invdet
+  result[2, 1] = (-a[0, 0] * c4 + a[0, 1] * c2 - a[0, 3] * c0) * invdet
+  result[2, 2] = (a[3, 0] * s4 - a[3, 1] * s2 + a[3, 3] * s0) * invdet
+  result[2, 3] = (-a[2, 0] * s4 + a[2, 1] * s2 - a[2, 3] * s0) * invdet
 
-  result[3, 0] = (-a[1, 0] * c3 + a[1, 1] * c1 - a[1, 2] * c0) * invdet;
-  result[3, 1] = ( a[0, 0] * c3 - a[0, 1] * c1 + a[0, 2] * c0) * invdet;
-  result[3, 2] = (-a[3, 0] * s3 + a[3, 1] * s1 - a[3, 2] * s0) * invdet;
-  result[3, 3] = ( a[2, 0] * s3 - a[2, 1] * s1 + a[2, 2] * s0) * invdet;
+  result[3, 0] = (-a[1, 0] * c3 + a[1, 1] * c1 - a[1, 2] * c0) * invdet
+  result[3, 1] = (a[0, 0] * c3 - a[0, 1] * c1 + a[0, 2] * c0) * invdet
+  result[3, 2] = (-a[3, 0] * s3 + a[3, 1] * s1 - a[3, 2] * s0) * invdet
+  result[3, 3] = (a[2, 0] * s3 - a[2, 1] * s1 + a[2, 2] * s0) * invdet
 
 func transformed*[T, S](points: openArray[S], mat: TMat4[T]): seq[S] =
   for p in points:
@@ -463,17 +600,45 @@
 
 func projection*(fovy, aspect, zNear, zFar: float32): Mat4 =
   let tanHalfFovy = 1 / tan(fovy / 2)
-  return Mat4(data: [
-    tanHalfFovy / aspect, 0, 0, 0,
-    0, tanHalfFovy, 0, 0,
-    0, 0, zFar / (zFar - zNear), -(zFar * zNear) / (zFar - zNear),
-    0, 0, 1, 0,
-  ])
+  return Mat4(
+    data: [
+      tanHalfFovy / aspect,
+      0,
+      0,
+      0,
+      0,
+      tanHalfFovy,
+      0,
+      0,
+      0,
+      0,
+      zFar / (zFar - zNear),
+      -(zFar * zNear) / (zFar - zNear),
+      0,
+      0,
+      1,
+      0,
+    ]
+  )
 
 func ortho*(left, right, top, bottom, zNear, zFar: float32): Mat4 =
-  Mat4(data: [
-    2 / (right - left), 0, 0, -(right + left) / (right - left),
-    0, 2 / (bottom - top), 0, -(bottom + top) / (bottom - top),
-    0, 0, 1 / (zFar - zNear), zNear / (zFar - zNear),
-    0, 0, 0, 1,
-  ])
+  Mat4(
+    data: [
+      2 / (right - left),
+      0,
+      0,
+      -(right + left) / (right - left),
+      0,
+      2 / (bottom - top),
+      0,
+      -(bottom + top) / (bottom - top),
+      0,
+      0,
+      1 / (zFar - zNear),
+      zNear / (zFar - zNear),
+      0,
+      0,
+      0,
+      1,
+    ]
+  )
--- a/semicongine/core/utils.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/core/utils.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -3,6 +3,7 @@
     Left
     Center
     Right
+
   VerticalAlignment* = enum
     Top
     Center
@@ -15,17 +16,20 @@
       break
 
 func ToCPointer*[T](list: openArray[T]): ptr T =
-  if list.len > 0: addr(list[0]) else: nil
+  if list.len > 0:
+    addr(list[0])
+  else:
+    nil
 
 # required for some external libraries
 proc nativeFree*(p: pointer) {.importc: "free".}
 
 proc StaticExecChecked*(command: string, input = ""): string {.compileTime.} =
-  let (output, exitcode) = gorgeEx(
-      command = command,
-      input = input)
+  let (output, exitcode) = gorgeEx(command = command, input = input)
   if exitcode != 0:
-    raise newException(Exception, &"Running '{command}' produced exit code: {exitcode}" & output)
+    raise newException(
+      Exception, &"Running '{command}' produced exit code: {exitcode}" & output
+    )
   return output
 
 proc AppName*(): string =
@@ -59,5 +63,6 @@
     var i = low(IX)
     while true:
       yield a[i]
-      if i >= high(IX): break
+      if i >= high(IX):
+        break
       inc(i)
--- a/semicongine/core/vector.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/core/vector.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -3,7 +3,7 @@
   TVec2*[T: SomeNumber] = array[2, T]
   TVec3*[T: SomeNumber] = array[3, T]
   TVec4*[T: SomeNumber] = array[4, T]
-  TVec* = TVec1|TVec2|TVec3|TVec4
+  TVec* = TVec1 | TVec2 | TVec3 | TVec4
   Vec1f* = TVec1[float32]
   Vec2f* = TVec2[float32]
   Vec3f* = TVec3[float32]
@@ -21,10 +21,12 @@
   Vec2i8* = TVec2[int8]
   Vec3i8* = TVec3[int8]
 
-converter ToVec1*[T: SomeNumber](orig: TVec3[T]|TVec4[T]): TVec1[T] =
+converter ToVec1*[T: SomeNumber](orig: TVec3[T] | TVec4[T]): TVec1[T] =
   TVec1[T]([orig[0]])
-converter ToVec2*[T: SomeNumber](orig: TVec3[T]|TVec4[T]): TVec2[T] =
+
+converter ToVec2*[T: SomeNumber](orig: TVec3[T] | TVec4[T]): TVec2[T] =
   TVec2[T]([orig[0], orig[1]])
+
 converter ToVec3*[T: SomeNumber](orig: TVec4[T]): TVec3[T] =
   TVec3[T]([orig[0], orig[1], orig[2]])
 
@@ -40,46 +42,75 @@
   Vec1f([float32(x)])
 func vec2*[T, S: SomeNumber](x: T, y: S): Vec2f =
   Vec2f([float32(x), float32(y)])
-func vec2*[T: SomeNumber](x: T): Vec2f = vec2(x, 0)
-func vec2*(): Vec2f = vec2(0, 0)
+func vec2*[T: SomeNumber](x: T): Vec2f =
+  vec2(x, 0)
+func vec2*(): Vec2f =
+  vec2(0, 0)
 func vec3*[T, S, U: SomeNumber](x: T, y: S, z: U): Vec3f =
   Vec3f([float32(x), float32(y), float32(z)])
-func vec3*[T, S: SomeNumber](x: T, y: S): Vec3f = vec3(x, y, 0)
-func vec3*[T: SomeNumber](x: T): Vec3f = vec3(x, 0, 0)
-func vec3*(): Vec3f = vec3(0, 0, 0)
+func vec3*[T, S: SomeNumber](x: T, y: S): Vec3f =
+  vec3(x, y, 0)
+func vec3*[T: SomeNumber](x: T): Vec3f =
+  vec3(x, 0, 0)
+func vec3*(): Vec3f =
+  vec3(0, 0, 0)
 func vec4*[T, S, U, V: SomeNumber](x: T, y: S, z: U, w: V): Vec4f =
   Vec4f([float32(x), float32(y), float32(z), float32(w)])
-func vec4*[T, S, U: SomeNumber](x: T, y: S, z: U): Vec4f = vec4(x, y, z, 0)
-func vec4*[T, S: SomeNumber](x: T, y: S): Vec4f = vec4(x, y, 0, 0)
-func vec4*[T: SomeNumber](x: T): Vec4f = vec4(x, 0, 0, 0)
-func vec4*(): Vec4f = vec4(0, 0, 0, 0)
+func vec4*[T, S, U: SomeNumber](x: T, y: S, z: U): Vec4f =
+  vec4(x, y, z, 0)
+func vec4*[T, S: SomeNumber](x: T, y: S): Vec4f =
+  vec4(x, y, 0, 0)
+func vec4*[T: SomeNumber](x: T): Vec4f =
+  vec4(x, 0, 0, 0)
+func vec4*(): Vec4f =
+  vec4(0, 0, 0, 0)
 
 # shortcuts Vec3i
-func vec1i*[T: SomeInteger](x: T): Vec1i = Vec1i([int32(x)])
-func vec2i*[T, S: SomeInteger](x: T, y: S): Vec2i = Vec2i([int32(x), int32(y)])
-func vec2i*[T: SomeInteger](x: T): Vec2i = vec2i(x, 0)
-func vec2i*(): Vec2i = vec2i(0, 0)
-func vec3i*[T, S, U: SomeInteger](x: T, y: S, z: U): Vec3i = Vec3i([int32(x), int32(y), int32(z)])
-func vec3i*[T, S: SomeInteger](x: T, y: S): Vec3i = vec3i(x, y, 0)
-func vec3i*[T: SomeInteger](x: T): Vec3i = vec3i(x, 0, 0)
-func vec3i*(): Vec3i = vec3i(0, 0, 0)
-func vec4i*[T, S, U, V: SomeInteger](x: T, y: S, z: U, w: V): Vec4i = Vec4i([int32(x), int32(y), int32(z), int32(w)])
-func vec4i*[T, S, U: SomeInteger](x: T, y: S, z: U): Vec4i = vec4i(x, y, z, 0)
-func vec4i*[T, S: SomeInteger](x: T, y: S): Vec4i = vec4i(x, y, 0, 0)
-func vec4i*[T: SomeInteger](x: T): Vec4i = vec4i(x, 0, 0, 0)
-func vec4i*(): Vec4i = vec4i(0, 0, 0, 0)
+func vec1i*[T: SomeInteger](x: T): Vec1i =
+  Vec1i([int32(x)])
+func vec2i*[T, S: SomeInteger](x: T, y: S): Vec2i =
+  Vec2i([int32(x), int32(y)])
+func vec2i*[T: SomeInteger](x: T): Vec2i =
+  vec2i(x, 0)
+func vec2i*(): Vec2i =
+  vec2i(0, 0)
+func vec3i*[T, S, U: SomeInteger](x: T, y: S, z: U): Vec3i =
+  Vec3i([int32(x), int32(y), int32(z)])
+func vec3i*[T, S: SomeInteger](x: T, y: S): Vec3i =
+  vec3i(x, y, 0)
+func vec3i*[T: SomeInteger](x: T): Vec3i =
+  vec3i(x, 0, 0)
+func vec3i*(): Vec3i =
+  vec3i(0, 0, 0)
+func vec4i*[T, S, U, V: SomeInteger](x: T, y: S, z: U, w: V): Vec4i =
+  Vec4i([int32(x), int32(y), int32(z), int32(w)])
+func vec4i*[T, S, U: SomeInteger](x: T, y: S, z: U): Vec4i =
+  vec4i(x, y, z, 0)
+func vec4i*[T, S: SomeInteger](x: T, y: S): Vec4i =
+  vec4i(x, y, 0, 0)
+func vec4i*[T: SomeInteger](x: T): Vec4i =
+  vec4i(x, 0, 0, 0)
+func vec4i*(): Vec4i =
+  vec4i(0, 0, 0, 0)
 
 # shortcuts Vec3i8
-func vec2i8*[T, S: SomeInteger](x: T, y: S): Vec2i8 = Vec2i8([int8(x), int8(y)])
-func vec2i8*[T: SomeInteger](x: T): Vec2i8 = vec2i8(x, 0)
-func vec2i8*(): Vec2i8 = vec2i8(0, 0)
-func vec3i8*[T, S, U: SomeInteger](x: T, y: S, z: U): Vec3i8 = Vec3i8([int8(x), int8(y), int8(z)])
-func vec3i8*[T, S: SomeInteger](x: T, y: S): Vec3i8 = vec3i8(x, y, 0)
-func vec3i8*[T: SomeInteger](x: T): Vec3i8 = vec3i8(x, 0, 0)
-func vec3i8*(): Vec3i8 = vec3i8(0, 0, 0)
+func vec2i8*[T, S: SomeInteger](x: T, y: S): Vec2i8 =
+  Vec2i8([int8(x), int8(y)])
+func vec2i8*[T: SomeInteger](x: T): Vec2i8 =
+  vec2i8(x, 0)
+func vec2i8*(): Vec2i8 =
+  vec2i8(0, 0)
+func vec3i8*[T, S, U: SomeInteger](x: T, y: S, z: U): Vec3i8 =
+  Vec3i8([int8(x), int8(y), int8(z)])
+func vec3i8*[T, S: SomeInteger](x: T, y: S): Vec3i8 =
+  vec3i8(x, y, 0)
+func vec3i8*[T: SomeInteger](x: T): Vec3i8 =
+  vec3i8(x, 0, 0)
+func vec3i8*(): Vec3i8 =
+  vec3i8(0, 0, 0)
 
 # shortcuts color
-func toVec*(value: string, gamma=2.2'f32): Vec4f =
+func toVec*(value: string, gamma = 2.2'f32): Vec4f =
   # converts hex-string to color, also applies gamma of 2.2
   assert value != ""
   var hex = value
@@ -101,7 +132,6 @@
     a = parseHexInt(hex[6 .. 7]).float32 / 255'f32
   return vec4(pow(r, gamma), pow(g, gamma), pow(b, gamma), a)
 
-
 const
   R* = vec4(1, 0, 0, 1)
   G* = vec4(1, 0, 0, 1)
@@ -131,25 +161,41 @@
   YZi8* = vec3i8(0, 1, 1)
   XYZi8* = vec3i8(1, 1, 1)
 
-func to*[T](v: TVec1): auto = TVec1([T(v[0])])
-func to*[T](v: TVec2): auto = TVec2([T(v[0]), T(v[1])])
-func to*[T](v: TVec3): auto = TVec3([T(v[0]), T(v[1]), T(v[2])])
-func to*[T](v: TVec4): auto = TVec4([T(v[0]), T(v[1]), T(v[2]), T(v[3])])
+func to*[T](v: TVec1): auto =
+  TVec1([T(v[0])])
+func to*[T](v: TVec2): auto =
+  TVec2([T(v[0]), T(v[1])])
+func to*[T](v: TVec3): auto =
+  TVec3([T(v[0]), T(v[1]), T(v[2])])
+func to*[T](v: TVec4): auto =
+  TVec4([T(v[0]), T(v[1]), T(v[2]), T(v[3])])
 
-func f32*(v: TVec1): auto = to[float32](v)
-func f32*(v: TVec2): auto = to[float32](v)
-func f32*(v: TVec3): auto = to[float32](v)
-func f32*(v: TVec4): auto = to[float32](v)
+func f32*(v: TVec1): auto =
+  to[float32](v)
+func f32*(v: TVec2): auto =
+  to[float32](v)
+func f32*(v: TVec3): auto =
+  to[float32](v)
+func f32*(v: TVec4): auto =
+  to[float32](v)
 
-func i32*(v: TVec1): auto = to[int32](v)
-func i32*(v: TVec2): auto = to[int32](v)
-func i32*(v: TVec3): auto = to[int32](v)
-func i32*(v: TVec4): auto = to[int32](v)
+func i32*(v: TVec1): auto =
+  to[int32](v)
+func i32*(v: TVec2): auto =
+  to[int32](v)
+func i32*(v: TVec3): auto =
+  to[int32](v)
+func i32*(v: TVec4): auto =
+  to[int32](v)
 
-func i8*(v: TVec1): auto = to[int8](v)
-func i8*(v: TVec2): auto = to[int8](v)
-func i8*(v: TVec3): auto = to[int8](v)
-func i8*(v: TVec4): auto = to[int8](v)
+func i8*(v: TVec1): auto =
+  to[int8](v)
+func i8*(v: TVec2): auto =
+  to[int8](v)
+func i8*(v: TVec3): auto =
+  to[int8](v)
+func i8*(v: TVec4): auto =
+  to[int8](v)
 
 func toVecString[T: TVec](value: T): string =
   var items: seq[string]
@@ -158,46 +204,76 @@
       items.add(&"{item:.5f}")
     else:
       items.add(&"{item}")
-  & "(" & join(items, "  ") & ")"
+  &"(" & join(items, "  ") & ")"
 
-func `$`*(v: TVec1[SomeNumber]): string = toVecString[TVec1[SomeNumber]](v)
-func `$`*(v: TVec2[SomeNumber]): string = toVecString[TVec2[SomeNumber]](v)
-func `$`*(v: TVec3[SomeNumber]): string = toVecString[TVec3[SomeNumber]](v)
-func `$`*(v: TVec4[SomeNumber]): string = toVecString[TVec4[SomeNumber]](v)
+func `$`*(v: TVec1[SomeNumber]): string =
+  toVecString[TVec1[SomeNumber]](v)
+func `$`*(v: TVec2[SomeNumber]): string =
+  toVecString[TVec2[SomeNumber]](v)
+func `$`*(v: TVec3[SomeNumber]): string =
+  toVecString[TVec3[SomeNumber]](v)
+func `$`*(v: TVec4[SomeNumber]): string =
+  toVecString[TVec4[SomeNumber]](v)
 
-func length*(vec: TVec1): auto = vec[0]
-func length*(vec: TVec2[SomeFloat]): auto = sqrt(vec[0] * vec[0] + vec[1] * vec[1])
-func length*(vec: TVec2[SomeInteger]): auto = sqrt(float(vec[0] * vec[0] + vec[1] * vec[1]))
-func length*(vec: TVec3[SomeFloat]): auto = sqrt(vec[0] * vec[0] + vec[1] * vec[1] + vec[2] * vec[2])
-func length*(vec: TVec3[SomeInteger]): auto = sqrt(float(vec[0] * vec[0] + vec[1] * vec[1] + vec[2] * vec[2]))
-func length*(vec: TVec4[SomeFloat]): auto = sqrt(vec[0] * vec[0] + vec[1] * vec[1] + vec[2] * vec[2] + vec[3] * vec[3])
-func length*(vec: TVec4[SomeInteger]): auto = sqrt(float(vec[0] * vec[0] + vec[1] * vec[1] + vec[2] * vec[2] + vec[3] * vec[3]))
+func length*(vec: TVec1): auto =
+  vec[0]
+func length*(vec: TVec2[SomeFloat]): auto =
+  sqrt(vec[0] * vec[0] + vec[1] * vec[1])
+func length*(vec: TVec2[SomeInteger]): auto =
+  sqrt(float(vec[0] * vec[0] + vec[1] * vec[1]))
+func length*(vec: TVec3[SomeFloat]): auto =
+  sqrt(vec[0] * vec[0] + vec[1] * vec[1] + vec[2] * vec[2])
+func length*(vec: TVec3[SomeInteger]): auto =
+  sqrt(float(vec[0] * vec[0] + vec[1] * vec[1] + vec[2] * vec[2]))
+func length*(vec: TVec4[SomeFloat]): auto =
+  sqrt(vec[0] * vec[0] + vec[1] * vec[1] + vec[2] * vec[2] + vec[3] * vec[3])
+func length*(vec: TVec4[SomeInteger]): auto =
+  sqrt(float(vec[0] * vec[0] + vec[1] * vec[1] + vec[2] * vec[2] + vec[3] * vec[3]))
 
+func abs*[T](vec: TVec1[T]): auto =
+  TVec1([abs(vec[0])])
+func abs*[T](vec: TVec2[T]): auto =
+  TVec2([abs(vec[0]), abs(vec[1])])
+func abs*[T](vec: TVec3[T]): auto =
+  TVec3([abs(vec[0]), abs(vec[1]), abs(vec[2])])
+func abs*[T](vec: TVec4[T]): auto =
+  TVec4([abs(vec[0]), abs(vec[1]), abs(vec[2]), abs(vec[3])])
 
-func abs*[T](vec: TVec1[T]): auto = TVec1([abs(vec[0])])
-func abs*[T](vec: TVec2[T]): auto = TVec2([abs(vec[0]), abs(vec[1])])
-func abs*[T](vec: TVec3[T]): auto = TVec3([abs(vec[0]), abs(vec[1]), abs(vec[2])])
-func abs*[T](vec: TVec4[T]): auto = TVec4([abs(vec[0]), abs(vec[1]), abs(vec[2]), abs(vec[3])])
+func round*[T](vec: TVec1[T]): auto =
+  TVec1([round(vec[0])])
+func round*[T](vec: TVec2[T]): auto =
+  TVec2([round(vec[0]), round(vec[1])])
+func round*[T](vec: TVec3[T]): auto =
+  TVec3([round(vec[0]), round(vec[1]), round(vec[2])])
+func round*[T](vec: TVec4[T]): auto =
+  TVec4([round(vec[0]), round(vec[1]), round(vec[2]), round(vec[3])])
 
-func round*[T](vec: TVec1[T]): auto = TVec1([round(vec[0])])
-func round*[T](vec: TVec2[T]): auto = TVec2([round(vec[0]), round(vec[1])])
-func round*[T](vec: TVec3[T]): auto = TVec3([round(vec[0]), round(vec[1]), round(vec[2])])
-func round*[T](vec: TVec4[T]): auto = TVec4([round(vec[0]), round(vec[1]), round(vec[2]), round(vec[3])])
+func floor*[T](vec: TVec1[T]): auto =
+  TVec1([floor(vec[0])])
+func floor*[T](vec: TVec2[T]): auto =
+  TVec2([floor(vec[0]), floor(vec[1])])
+func floor*[T](vec: TVec3[T]): auto =
+  TVec3([floor(vec[0]), floor(vec[1]), floor(vec[2])])
+func floor*[T](vec: TVec4[T]): auto =
+  TVec4([floor(vec[0]), floor(vec[1]), floor(vec[2]), floor(vec[3])])
 
-func floor*[T](vec: TVec1[T]): auto = TVec1([floor(vec[0])])
-func floor*[T](vec: TVec2[T]): auto = TVec2([floor(vec[0]), floor(vec[1])])
-func floor*[T](vec: TVec3[T]): auto = TVec3([floor(vec[0]), floor(vec[1]), floor(vec[2])])
-func floor*[T](vec: TVec4[T]): auto = TVec4([floor(vec[0]), floor(vec[1]), floor(vec[2]), floor(vec[3])])
+func ceil*[T](vec: TVec1[T]): auto =
+  TVec1([ceil(vec[0])])
+func ceil*[T](vec: TVec2[T]): auto =
+  TVec2([ceil(vec[0]), ceil(vec[1])])
+func ceil*[T](vec: TVec3[T]): auto =
+  TVec3([ceil(vec[0]), ceil(vec[1]), ceil(vec[2])])
+func ceil*[T](vec: TVec4[T]): auto =
+  TVec4([ceil(vec[0]), ceil(vec[1]), ceil(vec[2]), ceil(vec[3])])
 
-func ceil*[T](vec: TVec1[T]): auto = TVec1([ceil(vec[0])])
-func ceil*[T](vec: TVec2[T]): auto = TVec2([ceil(vec[0]), ceil(vec[1])])
-func ceil*[T](vec: TVec3[T]): auto = TVec3([ceil(vec[0]), ceil(vec[1]), ceil(vec[2])])
-func ceil*[T](vec: TVec4[T]): auto = TVec4([ceil(vec[0]), ceil(vec[1]), ceil(vec[2]), ceil(vec[3])])
-
-func manhattan*(vec: TVec1): auto = abs(vec[0])
-func manhattan*(vec: TVec2): auto = abs(vec[0]) + abs(vec[1])
-func manhattan*(vec: TVec3): auto = abs(vec[0]) + abs(vec[1]) + abs(vec[2])
-func manhattan*(vec: TVec4): auto = abs(vec[0]) + abs(vec[1]) + abs(vec[2]) + abs(vec[3])
+func manhattan*(vec: TVec1): auto =
+  abs(vec[0])
+func manhattan*(vec: TVec2): auto =
+  abs(vec[0]) + abs(vec[1])
+func manhattan*(vec: TVec3): auto =
+  abs(vec[0]) + abs(vec[1]) + abs(vec[2])
+func manhattan*(vec: TVec4): auto =
+  abs(vec[0]) + abs(vec[1]) + abs(vec[2]) + abs(vec[3])
 
 func normal*[T: SomeFloat](vec: TVec2[T]): auto =
   TVec2[T]([vec[1], -vec[0]])
@@ -206,141 +282,269 @@
   return T(1)
 func normalized*[T: SomeFloat](vec: TVec2[T]): auto =
   let l = vec.length
-  if l == 0: vec
-  else: TVec2[T]([vec[0] / l, vec[1] / l])
+  if l == 0:
+    vec
+  else:
+    TVec2[T]([vec[0] / l, vec[1] / l])
 func normalized*[T: SomeFloat](vec: TVec3[T]): auto =
   let l = vec.length
-  if l == 0: return vec
-  else: TVec3[T]([vec[0] / l, vec[1] / l, vec[2] / l])
+  if l == 0:
+    return vec
+  else:
+    TVec3[T]([vec[0] / l, vec[1] / l, vec[2] / l])
 func normalized*[T: SomeFloat](vec: TVec4[T]): auto =
   let l = vec.length
-  if l == 0: return vec
-  else: TVec4[T]([vec[0] / l, vec[1] / l, vec[2] / l, vec[3] / l])
+  if l == 0:
+    return vec
+  else:
+    TVec4[T]([vec[0] / l, vec[1] / l, vec[2] / l, vec[3] / l])
 
 # scalar operations
-func `+`*(a: TVec1, b: SomeNumber): auto = TVec1([a[0] + b])
-func `+`*(a: TVec2, b: SomeNumber): auto = TVec2([a[0] + b, a[1] + b])
-func `+`*(a: TVec3, b: SomeNumber): auto = TVec3([a[0] + b, a[1] + b, a[2] + b])
-func `+`*(a: TVec4, b: SomeNumber): auto = TVec4([a[0] + b, a[1] + b, a[2] + b, a[3] + b])
-func `-`*(a: TVec1, b: SomeNumber): auto = TVec1([a[0] - b])
-func `-`*(a: TVec2, b: SomeNumber): auto = TVec2([a[0] - b, a[1] - b])
-func `-`*(a: TVec3, b: SomeNumber): auto = TVec3([a[0] - b, a[1] - b, a[2] - b])
-func `-`*(a: TVec4, b: SomeNumber): auto = TVec4([a[0] - b, a[1] - b, a[2] - b,
-    a[3] - b])
-func `*`*(a: TVec1, b: SomeNumber): auto = TVec1([a[0] * b])
-func `*`*(a: TVec2, b: SomeNumber): auto = TVec2([a[0] * b, a[1] * b])
-func `*`*(a: TVec3, b: SomeNumber): auto = TVec3([a[0] * b, a[1] * b, a[2] * b])
-func `*`*(a: TVec4, b: SomeNumber): auto = TVec4([a[0] * b, a[1] * b, a[2] * b,
-    a[3] * b])
-func `div`*[T, S: SomeInteger](a: TVec1[T], b: S): auto = TVec1[T]([a[0] div T(b)])
-func `/`*[T, S: SomeFloat](a: TVec1[T], b: S): auto = TVec1[T]([a[0] / T(b)])
-func `div`*[T, S: SomeInteger](a: TVec2[T], b: S): auto = TVec2([a[0] div T(b), a[1] div T(b)])
-func `/`*[T, S: SomeFloat](a: TVec2[T], b: S): auto = TVec2[T]([a[0] / T(b), a[1] / T(b)])
-func `div`*[T, S: SomeInteger](a: TVec3[T], b: S): auto = TVec3([a[0] div T(b), a[1] div T(b), a[2] div T(b)])
-func `/`*[T, S: SomeFloat](a: TVec3[T], b: S): auto = TVec3[T]([a[0] / T(b), a[1] / T(b), a[2] / T(b)])
-func `div`*[T, S: SomeInteger](a: TVec4[T], b: S): auto = TVec4([a[0] div T(b), a[1] div T(b), a[2] div T(b), a[3] div T(b)])
-func `/`*[T, S: SomeFloat](a: TVec4[T], b: S): auto = TVec4[T]([a[0] / T(b), a[1] / T(b), a[2] / T(b), a[3] / T(b)])
+func `+`*(a: TVec1, b: SomeNumber): auto =
+  TVec1([a[0] + b])
+func `+`*(a: TVec2, b: SomeNumber): auto =
+  TVec2([a[0] + b, a[1] + b])
+func `+`*(a: TVec3, b: SomeNumber): auto =
+  TVec3([a[0] + b, a[1] + b, a[2] + b])
+func `+`*(a: TVec4, b: SomeNumber): auto =
+  TVec4([a[0] + b, a[1] + b, a[2] + b, a[3] + b])
+func `-`*(a: TVec1, b: SomeNumber): auto =
+  TVec1([a[0] - b])
+func `-`*(a: TVec2, b: SomeNumber): auto =
+  TVec2([a[0] - b, a[1] - b])
+func `-`*(a: TVec3, b: SomeNumber): auto =
+  TVec3([a[0] - b, a[1] - b, a[2] - b])
+func `-`*(a: TVec4, b: SomeNumber): auto =
+  TVec4([a[0] - b, a[1] - b, a[2] - b, a[3] - b])
+func `*`*(a: TVec1, b: SomeNumber): auto =
+  TVec1([a[0] * b])
+func `*`*(a: TVec2, b: SomeNumber): auto =
+  TVec2([a[0] * b, a[1] * b])
+func `*`*(a: TVec3, b: SomeNumber): auto =
+  TVec3([a[0] * b, a[1] * b, a[2] * b])
+func `*`*(a: TVec4, b: SomeNumber): auto =
+  TVec4([a[0] * b, a[1] * b, a[2] * b, a[3] * b])
+func `div`*[T, S: SomeInteger](a: TVec1[T], b: S): auto =
+  TVec1[T]([a[0] div T(b)])
+func `/`*[T, S: SomeFloat](a: TVec1[T], b: S): auto =
+  TVec1[T]([a[0] / T(b)])
+func `div`*[T, S: SomeInteger](a: TVec2[T], b: S): auto =
+  TVec2([a[0] div T(b), a[1] div T(b)])
+func `/`*[T, S: SomeFloat](a: TVec2[T], b: S): auto =
+  TVec2[T]([a[0] / T(b), a[1] / T(b)])
+func `div`*[T, S: SomeInteger](a: TVec3[T], b: S): auto =
+  TVec3([a[0] div T(b), a[1] div T(b), a[2] div T(b)])
+func `/`*[T, S: SomeFloat](a: TVec3[T], b: S): auto =
+  TVec3[T]([a[0] / T(b), a[1] / T(b), a[2] / T(b)])
+func `div`*[T, S: SomeInteger](a: TVec4[T], b: S): auto =
+  TVec4([a[0] div T(b), a[1] div T(b), a[2] div T(b), a[3] div T(b)])
+func `/`*[T, S: SomeFloat](a: TVec4[T], b: S): auto =
+  TVec4[T]([a[0] / T(b), a[1] / T(b), a[2] / T(b), a[3] / T(b)])
 
-func `+`*(a: SomeNumber, b: TVec1): auto = TVec1([a + b[0]])
-func `+`*(a: SomeNumber, b: TVec2): auto = TVec2([a + b[0], a + b[1]])
-func `+`*(a: SomeNumber, b: TVec3): auto = TVec3([a + b[0], a + b[1], a + b[2]])
-func `+`*(a: SomeNumber, b: TVec4): auto = TVec4([a + b[0], a + b[1], a + b[2], a + b[3]])
-func `-`*(a: SomeNumber, b: TVec1): auto = TVec1([a - b[0]])
-func `-`*(a: SomeNumber, b: TVec2): auto = TVec2([a - b[0], a - b[1]])
-func `-`*(a: SomeNumber, b: TVec3): auto = TVec3([a - b[0], a - b[1], a - b[2]])
-func `-`*(a: SomeNumber, b: TVec4): auto = TVec4([a - b[0], a - b[1], a - b[2], a - b[3]])
-func `*`*(a: SomeNumber, b: TVec1): auto = TVec1([a * b[0]])
-func `*`*(a: SomeNumber, b: TVec2): auto = TVec2([a * b[0], a * b[1]])
-func `*`*(a: SomeNumber, b: TVec3): auto = TVec3([a * b[0], a * b[1], a * b[2]])
-func `*`*(a: SomeNumber, b: TVec4): auto = TVec4([a * b[0], a * b[1], a * b[2], a * b[3]])
-func `/`*[T: SomeInteger](a: SomeInteger, b: TVec1[T]): auto = TVec1([a div b[0]])
-func `/`*[T: SomeFloat](a: SomeFloat, b: TVec1[T]): auto = TVec1([a / b[0]])
-func `/`*[T: SomeInteger](a: SomeInteger, b: TVec2[T]): auto = TVec2([a div b[0], a div b[1]])
-func `/`*[T: SomeFloat](a: SomeFloat, b: TVec2[T]): auto = TVec2([a / b[0], a / b[1]])
-func `/`*[T: SomeInteger](a: SomeInteger, b: TVec3[T]): auto = TVec3([a div b[0], a div b[1], a div b[2]])
-func `/`*[T: SomeFloat](a: SomeFloat, b: TVec3[T]): auto = TVec3([a / b[0], a / b[1], a / b[2]])
-func `/`*[T: SomeInteger](a: SomeInteger, b: TVec4[T]): auto = TVec4([a div b[0], a div b[1], a div b[2], a div b[3]])
-func `/`*[T: SomeFloat](a: SomeFloat, b: TVec4[T]): auto = TVec4([a / b[0], a /
-    b[1], a / b[2], a / b[3]])
+func `+`*(a: SomeNumber, b: TVec1): auto =
+  TVec1([a + b[0]])
+func `+`*(a: SomeNumber, b: TVec2): auto =
+  TVec2([a + b[0], a + b[1]])
+func `+`*(a: SomeNumber, b: TVec3): auto =
+  TVec3([a + b[0], a + b[1], a + b[2]])
+func `+`*(a: SomeNumber, b: TVec4): auto =
+  TVec4([a + b[0], a + b[1], a + b[2], a + b[3]])
+func `-`*(a: SomeNumber, b: TVec1): auto =
+  TVec1([a - b[0]])
+func `-`*(a: SomeNumber, b: TVec2): auto =
+  TVec2([a - b[0], a - b[1]])
+func `-`*(a: SomeNumber, b: TVec3): auto =
+  TVec3([a - b[0], a - b[1], a - b[2]])
+func `-`*(a: SomeNumber, b: TVec4): auto =
+  TVec4([a - b[0], a - b[1], a - b[2], a - b[3]])
+func `*`*(a: SomeNumber, b: TVec1): auto =
+  TVec1([a * b[0]])
+func `*`*(a: SomeNumber, b: TVec2): auto =
+  TVec2([a * b[0], a * b[1]])
+func `*`*(a: SomeNumber, b: TVec3): auto =
+  TVec3([a * b[0], a * b[1], a * b[2]])
+func `*`*(a: SomeNumber, b: TVec4): auto =
+  TVec4([a * b[0], a * b[1], a * b[2], a * b[3]])
+func `/`*[T: SomeInteger](a: SomeInteger, b: TVec1[T]): auto =
+  TVec1([a div b[0]])
+func `/`*[T: SomeFloat](a: SomeFloat, b: TVec1[T]): auto =
+  TVec1([a / b[0]])
+func `/`*[T: SomeInteger](a: SomeInteger, b: TVec2[T]): auto =
+  TVec2([a div b[0], a div b[1]])
+func `/`*[T: SomeFloat](a: SomeFloat, b: TVec2[T]): auto =
+  TVec2([a / b[0], a / b[1]])
+func `/`*[T: SomeInteger](a: SomeInteger, b: TVec3[T]): auto =
+  TVec3([a div b[0], a div b[1], a div b[2]])
+func `/`*[T: SomeFloat](a: SomeFloat, b: TVec3[T]): auto =
+  TVec3([a / b[0], a / b[1], a / b[2]])
+func `/`*[T: SomeInteger](a: SomeInteger, b: TVec4[T]): auto =
+  TVec4([a div b[0], a div b[1], a div b[2], a div b[3]])
+func `/`*[T: SomeFloat](a: SomeFloat, b: TVec4[T]): auto =
+  TVec4([a / b[0], a / b[1], a / b[2], a / b[3]])
 
 # compontent-wise operations
-func `+`*(a, b: TVec1): auto = TVec1([a[0] + b[0]])
-func `+`*(a, b: TVec2): auto = TVec2([a[0] + b[0], a[1] + b[1]])
-func `+`*(a, b: TVec3): auto = TVec3([a[0] + b[0], a[1] + b[1], a[2] + b[2]])
-func `+`*(a, b: TVec4): auto = TVec4([a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]])
-func `-`*(a: TVec1): auto = TVec1([-a[0]])
-func `-`*(a: TVec2): auto = TVec2([-a[0], -a[1]])
-func `-`*(a: TVec3): auto = TVec3([-a[0], -a[1], -a[2]])
-func `-`*(a: TVec4): auto = TVec4([-a[0], -a[1], -a[2], -a[3]])
-func `-`*(a, b: TVec1): auto = TVec1([a[0] - b[0]])
-func `-`*(a, b: TVec2): auto = TVec2([a[0] - b[0], a[1] - b[1]])
-func `-`*(a, b: TVec3): auto = TVec3([a[0] - b[0], a[1] - b[1], a[2] - b[2]])
-func `-`*(a, b: TVec4): auto = TVec4([a[0] - b[0], a[1] - b[1], a[2] - b[2], a[3] - b[3]])
-func `*`*(a, b: TVec1): auto = TVec1([a[0] * b[0]])
-func `*`*(a, b: TVec2): auto = TVec2([a[0] * b[0], a[1] * b[1]])
-func `*`*(a, b: TVec3): auto = TVec3([a[0] * b[0], a[1] * b[1], a[2] * b[2]])
-func `*`*(a, b: TVec4): auto = TVec4([a[0] * b[0], a[1] * b[1], a[2] * b[2], a[3] * b[3]])
-func `div`*[T: SomeInteger](a, b: TVec1[T]): auto = TVec1([a[0] div b[0]])
-func floorDiv*[T: SomeInteger](a, b: TVec1[T]): auto = TVec1([floorDiv(a[0], b[0])])
-func floorMod*[T: SomeInteger](a, b: TVec1[T]): auto = TVec1([floorMod(a[0], b[0])])
-func `/`*[T: SomeInteger](a, b: TVec1[T]): auto = TVec1([a[0] / b[0]])
-func `/`*[T: SomeFloat](a, b: TVec1[T]): auto = TVec1([a[0] / b[0]])
-func `div`*[T: SomeInteger](a, b: TVec2[T]): auto = TVec2([a[0] div b[0], a[1] div b[1]])
-func floorDiv*[T: SomeInteger](a, b: TVec2[T]): auto = TVec2([floorDiv(a[0], b[0]), floorDiv(a[1], b[1])])
-func floorMod*[T: SomeInteger](a, b: TVec2[T]): auto = TVec2([floorMod(a[0], b[0]), floorMod(a[1], b[1])])
-func `/`*[T: SomeInteger](a, b: TVec2[T]): auto = TVec2([a[0] / b[0], a[1] / b[1]])
-func `/`*[T: SomeFloat](a, b: TVec2[T]): auto = TVec2([a[0] / b[0], a[1] / b[1]])
-func `div`*[T: SomeInteger](a, b: TVec3[T]): auto = TVec3([a[0] div b[0], a[1] div b[1], a[2] div b[2]])
-func floorDiv*[T: SomeInteger](a, b: TVec3[T]): auto = TVec3([floorDiv(a[0], b[0]), floorDiv(a[1], b[1]), floorDiv(a[2], b[2])])
-func floorMod*[T: SomeInteger](a, b: TVec3[T]): auto = TVec3([floorMod(a[0], b[0]), floorMod(a[1], b[1]), floorMod(a[2], b[2])])
-func `/`*[T: SomeInteger](a, b: TVec3[T]): auto = TVec3([a[0] / b[0], a[1] / b[1], a[2] / b[2]])
-func `/`*[T: SomeFloat](a, b: TVec3[T]): auto = TVec3([a[0] / b[0], a[1] / b[1], a[2] / b[2]])
-func `div`*[T: SomeInteger](a, b: TVec4[T]): auto = TVec4([a[0] div b[0], a[1] div b[1], a[2] div b[2], a[3] div b[3]])
-func floorDiv*[T: SomeInteger](a, b: TVec4[T]): auto = TVec4([floorDiv(a[0], b[0]), floorDiv(a[1], b[1]), floorDiv(a[2], b[2]), floorDiv(a[3], b[3])])
-func floorMod*[T: SomeInteger](a, b: TVec4[T]): auto = TVec4([floorMod(a[0], b[0]), floorMod(a[1], b[1]), floorMod(a[2], b[2]), floorMod(a[3], b[3])])
-func `/`*[T: SomeInteger](a, b: TVec4[T]): auto = TVec4([a[0] / b[0], a[1] / b[1], a[2] / b[2], a[3] / b[3]])
-func `/`*[T: SomeFloat](a, b: TVec4[T]): auto = TVec4([a[0] / b[0], a[1] / b[1], a[2] / b[2], a[3] / b[3]])
+func `+`*(a, b: TVec1): auto =
+  TVec1([a[0] + b[0]])
+func `+`*(a, b: TVec2): auto =
+  TVec2([a[0] + b[0], a[1] + b[1]])
+func `+`*(a, b: TVec3): auto =
+  TVec3([a[0] + b[0], a[1] + b[1], a[2] + b[2]])
+func `+`*(a, b: TVec4): auto =
+  TVec4([a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]])
+func `-`*(a: TVec1): auto =
+  TVec1([-a[0]])
+func `-`*(a: TVec2): auto =
+  TVec2([-a[0], -a[1]])
+func `-`*(a: TVec3): auto =
+  TVec3([-a[0], -a[1], -a[2]])
+func `-`*(a: TVec4): auto =
+  TVec4([-a[0], -a[1], -a[2], -a[3]])
+func `-`*(a, b: TVec1): auto =
+  TVec1([a[0] - b[0]])
+func `-`*(a, b: TVec2): auto =
+  TVec2([a[0] - b[0], a[1] - b[1]])
+func `-`*(a, b: TVec3): auto =
+  TVec3([a[0] - b[0], a[1] - b[1], a[2] - b[2]])
+func `-`*(a, b: TVec4): auto =
+  TVec4([a[0] - b[0], a[1] - b[1], a[2] - b[2], a[3] - b[3]])
+func `*`*(a, b: TVec1): auto =
+  TVec1([a[0] * b[0]])
+func `*`*(a, b: TVec2): auto =
+  TVec2([a[0] * b[0], a[1] * b[1]])
+func `*`*(a, b: TVec3): auto =
+  TVec3([a[0] * b[0], a[1] * b[1], a[2] * b[2]])
+func `*`*(a, b: TVec4): auto =
+  TVec4([a[0] * b[0], a[1] * b[1], a[2] * b[2], a[3] * b[3]])
+func `div`*[T: SomeInteger](a, b: TVec1[T]): auto =
+  TVec1([a[0] div b[0]])
+func floorDiv*[T: SomeInteger](a, b: TVec1[T]): auto =
+  TVec1([floorDiv(a[0], b[0])])
+func floorMod*[T: SomeInteger](a, b: TVec1[T]): auto =
+  TVec1([floorMod(a[0], b[0])])
+func `/`*[T: SomeInteger](a, b: TVec1[T]): auto =
+  TVec1([a[0] / b[0]])
+func `/`*[T: SomeFloat](a, b: TVec1[T]): auto =
+  TVec1([a[0] / b[0]])
+func `div`*[T: SomeInteger](a, b: TVec2[T]): auto =
+  TVec2([a[0] div b[0], a[1] div b[1]])
+func floorDiv*[T: SomeInteger](a, b: TVec2[T]): auto =
+  TVec2([floorDiv(a[0], b[0]), floorDiv(a[1], b[1])])
+func floorMod*[T: SomeInteger](a, b: TVec2[T]): auto =
+  TVec2([floorMod(a[0], b[0]), floorMod(a[1], b[1])])
+func `/`*[T: SomeInteger](a, b: TVec2[T]): auto =
+  TVec2([a[0] / b[0], a[1] / b[1]])
+func `/`*[T: SomeFloat](a, b: TVec2[T]): auto =
+  TVec2([a[0] / b[0], a[1] / b[1]])
+func `div`*[T: SomeInteger](a, b: TVec3[T]): auto =
+  TVec3([a[0] div b[0], a[1] div b[1], a[2] div b[2]])
+func floorDiv*[T: SomeInteger](a, b: TVec3[T]): auto =
+  TVec3([floorDiv(a[0], b[0]), floorDiv(a[1], b[1]), floorDiv(a[2], b[2])])
+func floorMod*[T: SomeInteger](a, b: TVec3[T]): auto =
+  TVec3([floorMod(a[0], b[0]), floorMod(a[1], b[1]), floorMod(a[2], b[2])])
+func `/`*[T: SomeInteger](a, b: TVec3[T]): auto =
+  TVec3([a[0] / b[0], a[1] / b[1], a[2] / b[2]])
+func `/`*[T: SomeFloat](a, b: TVec3[T]): auto =
+  TVec3([a[0] / b[0], a[1] / b[1], a[2] / b[2]])
+func `div`*[T: SomeInteger](a, b: TVec4[T]): auto =
+  TVec4([a[0] div b[0], a[1] div b[1], a[2] div b[2], a[3] div b[3]])
+func floorDiv*[T: SomeInteger](a, b: TVec4[T]): auto =
+  TVec4(
+    [
+      floorDiv(a[0], b[0]),
+      floorDiv(a[1], b[1]),
+      floorDiv(a[2], b[2]),
+      floorDiv(a[3], b[3]),
+    ]
+  )
+func floorMod*[T: SomeInteger](a, b: TVec4[T]): auto =
+  TVec4(
+    [
+      floorMod(a[0], b[0]),
+      floorMod(a[1], b[1]),
+      floorMod(a[2], b[2]),
+      floorMod(a[3], b[3]),
+    ]
+  )
+func `/`*[T: SomeInteger](a, b: TVec4[T]): auto =
+  TVec4([a[0] / b[0], a[1] / b[1], a[2] / b[2], a[3] / b[3]])
+func `/`*[T: SomeFloat](a, b: TVec4[T]): auto =
+  TVec4([a[0] / b[0], a[1] / b[1], a[2] / b[2], a[3] / b[3]])
 
-func `mod`*[T: SomeInteger](a, b: TVec1[T]): auto = TVec1([a[0] mod b[0]])
-func `mod`*[T: SomeInteger](a, b: TVec2[T]): auto = TVec2([a[0] mod b[0], a[1] mod b[1]])
-func `mod`*[T: SomeInteger](a, b: TVec3[T]): auto = TVec3([a[0] mod b[0], a[1] mod b[1], a[2] mod b[2]])
-func `mod`*[T: SomeInteger](a, b: TVec4[T]): auto = TVec4([a[0] mod b[0], a[1] mod b[1], a[2] mod b[2], a[3] mod b[3]])
+func `mod`*[T: SomeInteger](a, b: TVec1[T]): auto =
+  TVec1([a[0] mod b[0]])
+func `mod`*[T: SomeInteger](a, b: TVec2[T]): auto =
+  TVec2([a[0] mod b[0], a[1] mod b[1]])
+func `mod`*[T: SomeInteger](a, b: TVec3[T]): auto =
+  TVec3([a[0] mod b[0], a[1] mod b[1], a[2] mod b[2]])
+func `mod`*[T: SomeInteger](a, b: TVec4[T]): auto =
+  TVec4([a[0] mod b[0], a[1] mod b[1], a[2] mod b[2], a[3] mod b[3]])
 
 # assignment operations, scalar
-func `+=`*(a: var TVec1, b: SomeNumber) = a = a + b
-func `+=`*(a: var TVec2, b: SomeNumber) = a = a + b
-func `+=`*(a: var TVec3, b: SomeNumber) = a = a + b
-func `+=`*(a: var TVec4, b: SomeNumber) = a = a + b
-func `-=`*(a: var TVec1, b: SomeNumber) = a = a - b
-func `-=`*(a: var TVec2, b: SomeNumber) = a = a - b
-func `-=`*(a: var TVec3, b: SomeNumber) = a = a - b
-func `-=`*(a: var TVec4, b: SomeNumber) = a = a - b
-func `*=`*(a: var TVec1, b: SomeNumber) = a = a * b
-func `*=`*(a: var TVec2, b: SomeNumber) = a = a * b
-func `*=`*(a: var TVec3, b: SomeNumber) = a = a * b
-func `*=`*(a: var TVec4, b: SomeNumber) = a = a * b
-func `/=`*(a: var TVec1, b: SomeNumber) = a = a / b
-func `/=`*(a: var TVec2, b: SomeNumber) = a = a / b
-func `/=`*(a: var TVec3, b: SomeNumber) = a = a / b
-func `/=`*(a: var TVec4, b: SomeNumber) = a = a / b
+func `+=`*(a: var TVec1, b: SomeNumber) =
+  a = a + b
+func `+=`*(a: var TVec2, b: SomeNumber) =
+  a = a + b
+func `+=`*(a: var TVec3, b: SomeNumber) =
+  a = a + b
+func `+=`*(a: var TVec4, b: SomeNumber) =
+  a = a + b
+func `-=`*(a: var TVec1, b: SomeNumber) =
+  a = a - b
+func `-=`*(a: var TVec2, b: SomeNumber) =
+  a = a - b
+func `-=`*(a: var TVec3, b: SomeNumber) =
+  a = a - b
+func `-=`*(a: var TVec4, b: SomeNumber) =
+  a = a - b
+func `*=`*(a: var TVec1, b: SomeNumber) =
+  a = a * b
+func `*=`*(a: var TVec2, b: SomeNumber) =
+  a = a * b
+func `*=`*(a: var TVec3, b: SomeNumber) =
+  a = a * b
+func `*=`*(a: var TVec4, b: SomeNumber) =
+  a = a * b
+func `/=`*(a: var TVec1, b: SomeNumber) =
+  a = a / b
+func `/=`*(a: var TVec2, b: SomeNumber) =
+  a = a / b
+func `/=`*(a: var TVec3, b: SomeNumber) =
+  a = a / b
+func `/=`*(a: var TVec4, b: SomeNumber) =
+  a = a / b
 # assignment operations, vector
-func `+=`*(a: var TVec1, b: TVec1) = a = a + b
-func `+=`*(a: var TVec2, b: TVec2) = a = a + b
-func `+=`*(a: var TVec3, b: TVec3) = a = a + b
-func `+=`*(a: var TVec4, b: TVec4) = a = a + b
-func `-=`*(a: var TVec1, b: TVec1) = a = a - b
-func `-=`*(a: var TVec2, b: TVec2) = a = a - b
-func `-=`*(a: var TVec3, b: TVec3) = a = a - b
-func `-=`*(a: var TVec4, b: TVec4) = a = a - b
-func `*=`*(a: var TVec1, b: TVec1) = a = a * b
-func `*=`*(a: var TVec2, b: TVec2) = a = a * b
-func `*=`*(a: var TVec3, b: TVec3) = a = a * b
-func `*=`*(a: var TVec4, b: TVec4) = a = a * b
-func `/=`*(a: var TVec1, b: TVec1) = a = a / b
-func `/=`*(a: var TVec2, b: TVec2) = a = a / b
-func `/=`*(a: var TVec3, b: TVec3) = a = a / b
-func `/=`*(a: var TVec4, b: TVec4) = a = a / b
-
+func `+=`*(a: var TVec1, b: TVec1) =
+  a = a + b
+func `+=`*(a: var TVec2, b: TVec2) =
+  a = a + b
+func `+=`*(a: var TVec3, b: TVec3) =
+  a = a + b
+func `+=`*(a: var TVec4, b: TVec4) =
+  a = a + b
+func `-=`*(a: var TVec1, b: TVec1) =
+  a = a - b
+func `-=`*(a: var TVec2, b: TVec2) =
+  a = a - b
+func `-=`*(a: var TVec3, b: TVec3) =
+  a = a - b
+func `-=`*(a: var TVec4, b: TVec4) =
+  a = a - b
+func `*=`*(a: var TVec1, b: TVec1) =
+  a = a * b
+func `*=`*(a: var TVec2, b: TVec2) =
+  a = a * b
+func `*=`*(a: var TVec3, b: TVec3) =
+  a = a * b
+func `*=`*(a: var TVec4, b: TVec4) =
+  a = a * b
+func `/=`*(a: var TVec1, b: TVec1) =
+  a = a / b
+func `/=`*(a: var TVec2, b: TVec2) =
+  a = a / b
+func `/=`*(a: var TVec3, b: TVec3) =
+  a = a / b
+func `/=`*(a: var TVec4, b: TVec4) =
+  a = a / b
 
 # special operations
 func pow*(a: TVec1, b: SomeNumber): auto =
@@ -351,46 +555,45 @@
   TVec3([pow(a[0], b), pow(a[1], b), pow(a[2], b)])
 func pow*(a: TVec4, b: SomeNumber): auto =
   TVec4([pow(a[0], b), pow(a[1], b), pow(a[2], b), pow(a[3], b)])
-func dot*(a, b: TVec1): auto = a[0] * b[0]
-func dot*(a, b: TVec2): auto = a[0] * b[0] + a[1] * b[1]
-func dot*(a, b: TVec3): auto = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]
-func dot*(a, b: TVec4): auto = a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]
-func cross*(a, b: TVec3): auto = TVec3([
-  a[1] * b[2] - a[2] * b[1],
-  a[2] * b[0] - a[0] * b[2],
-  a[0] * b[1] - a[1] * b[0],
-])
-
+func dot*(a, b: TVec1): auto =
+  a[0] * b[0]
+func dot*(a, b: TVec2): auto =
+  a[0] * b[0] + a[1] * b[1]
+func dot*(a, b: TVec3): auto =
+  a[0] * b[0] + a[1] * b[1] + a[2] * b[2]
+func dot*(a, b: TVec4): auto =
+  a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]
+func cross*(a, b: TVec3): auto =
+  TVec3(
+    [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]]
+  )
 
 # macro to allow creation of new vectors by specifying vector components as attributes
 # e.g. myVec.xxy will return a new Vec3 that contains the components x, x an y of the original vector
 # (instead of x, y, z for a simple copy)
 proc vectorAttributeAccessor(accessor: string): seq[NimNode] =
-  const ACCESSOR_INDICES = {
-    'x': 0,
-    'y': 1,
-    'z': 2,
-    'w': 3,
-    'r': 0,
-    'g': 1,
-    'b': 2,
-    'a': 3,
-  }.toTable
+  const ACCESSOR_INDICES =
+    {'x': 0, 'y': 1, 'z': 2, 'w': 3, 'r': 0, 'g': 1, 'b': 2, 'a': 3}.toTable
   var getterCode, setterCode: NimNode
   let accessorvalue = accessor
 
   if accessorvalue.len == 0:
     raise newException(Exception, "empty attribute")
   elif accessorvalue.len == 1:
-    getterCode = nnkBracketExpr.newTree(ident("vec"), newLit(ACCESSOR_INDICES[accessorvalue[0]]))
+    getterCode =
+      nnkBracketExpr.newTree(ident("vec"), newLit(ACCESSOR_INDICES[accessorvalue[0]]))
     setterCode = nnkStmtList.newTree(
       nnkAsgn.newTree(
-        nnkBracketExpr.newTree(ident("vec"), newLit(ACCESSOR_INDICES[accessorvalue[0]])), ident("value"))
+        nnkBracketExpr.newTree(ident("vec"), newLit(ACCESSOR_INDICES[accessorvalue[0]])),
+        ident("value"),
+      )
     )
   if accessorvalue.len > 1:
     var attrs = nnkBracket.newTree()
     for attrname in accessorvalue:
-      attrs.add(nnkBracketExpr.newTree(ident("vec"), newLit(ACCESSOR_INDICES[attrname])))
+      attrs.add(
+        nnkBracketExpr.newTree(ident("vec"), newLit(ACCESSOR_INDICES[attrname]))
+      )
     getterCode = nnkCall.newTree(ident("TVec" & $accessorvalue.len), attrs)
     setterCode = nnkStmtList.newTree()
     var i = 0
@@ -403,26 +606,30 @@
 
   result.add newProc(
     name = nnkPostfix.newTree(ident("*"), ident(accessor)),
-    params = [ident("auto"), nnkIdentDefs.newTree(ident("vec"), ident("TVec"), newEmptyNode())],
+    params =
+      [ident("auto"), nnkIdentDefs.newTree(ident("vec"), ident("TVec"), newEmptyNode())],
     body = newStmtList(getterCode),
     procType = nnkFuncDef,
   )
 
   result.add nnkFuncDef.newTree(
     nnkPostfix.newTree(
-      newIdentNode("*"),
-      nnkAccQuoted.newTree(newIdentNode(accessor), newIdentNode("="))
+      newIdentNode("*"), nnkAccQuoted.newTree(newIdentNode(accessor), newIdentNode("="))
     ),
     newEmptyNode(),
-    nnkGenericParams.newTree(nnkIdentDefs.newTree(newIdentNode("T"), newEmptyNode(), newEmptyNode())),
+    nnkGenericParams.newTree(
+      nnkIdentDefs.newTree(newIdentNode("T"), newEmptyNode(), newEmptyNode())
+    ),
     nnkFormalParams.newTree(
       newEmptyNode(),
-      nnkIdentDefs.newTree(newIdentNode("vec"), nnkVarTy.newTree(newIdentNode("TVec")), newEmptyNode()),
-      nnkIdentDefs.newTree(newIdentNode("value"), newIdentNode("T"), newEmptyNode())
+      nnkIdentDefs.newTree(
+        newIdentNode("vec"), nnkVarTy.newTree(newIdentNode("TVec")), newEmptyNode()
+      ),
+      nnkIdentDefs.newTree(newIdentNode("value"), newIdentNode("T"), newEmptyNode()),
     ),
     newEmptyNode(),
     newEmptyNode(),
-    setterCode
+    setterCode,
   )
 
 macro createVectorAttribAccessorFuncs() =
--- a/semicongine/events.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/events.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,27 +1,112 @@
 type
   EventType* = enum
     Quit
-    ResizedWindow, MinimizedWindow, RestoredWindow
-    KeyPressed, KeyReleased
-    MousePressed, MouseReleased,
+    ResizedWindow
+    MinimizedWindow
+    RestoredWindow
+    KeyPressed
+    KeyReleased
+    MousePressed
+    MouseReleased
     MouseWheel
-    GotFocus, LostFocus
+    GotFocus
+    LostFocus
+
   Key* {.size: sizeof(cint), pure.} = enum
     UNKNOWN
-    Escape, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12
-    NumberRowExtra1, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `0`,
-        NumberRowExtra2, NumberRowExtra3                 # tilde, minus, plus
-    A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z
-    Tab, CapsLock, ShiftL, ShiftR, CtrlL, CtrlR, SuperL, SuperR, AltL, AltR,
-        Space, Enter, Backspace
-    LetterRow1Extra1, LetterRow1Extra2                   # open bracket, close brackt, backslash
-    LetterRow2Extra1, LetterRow2Extra2, LetterRow2Extra3 # semicolon, quote
-    LetterRow3Extra1, LetterRow3Extra2, LetterRow3Extra3 # comma, period, slash
-    Up, Down, Left, Right
-    PageUp, PageDown, Home, End, Insert, Delete
-    PrintScreen, ScrollLock, Pause
+    Escape
+    F1
+    F2
+    F3
+    F4
+    F5
+    F6
+    F7
+    F8
+    F9
+    F10
+    F11
+    F12
+    NumberRowExtra1
+    `1`
+    `2`
+    `3`
+    `4`
+    `5`
+    `6`
+    `7`
+    `8`
+    `9`
+    `0`
+    NumberRowExtra2
+    NumberRowExtra3 # tilde, minus, plus
+    A
+    B
+    C
+    D
+    E
+    F
+    G
+    H
+    I
+    J
+    K
+    L
+    M
+    N
+    O
+    P
+    Q
+    R
+    S
+    T
+    U
+    V
+    W
+    X
+    Y
+    Z
+    Tab
+    CapsLock
+    ShiftL
+    ShiftR
+    CtrlL
+    CtrlR
+    SuperL
+    SuperR
+    AltL
+    AltR
+    Space
+    Enter
+    Backspace
+    LetterRow1Extra1
+    LetterRow1Extra2 # open bracket, close brackt, backslash
+    LetterRow2Extra1
+    LetterRow2Extra2
+    LetterRow2Extra3 # semicolon, quote
+    LetterRow3Extra1
+    LetterRow3Extra2
+    LetterRow3Extra3 # comma, period, slash
+    Up
+    Down
+    Left
+    Right
+    PageUp
+    PageDown
+    Home
+    End
+    Insert
+    Delete
+    PrintScreen
+    ScrollLock
+    Pause
+
   MouseButton* {.size: sizeof(cint), pure.} = enum
-    UNKNOWN, Mouse1, Mouse2, Mouse3 # Left, middle, right
+    UNKNOWN
+    Mouse1
+    Mouse2
+    Mouse3 # Left, middle, right
+
   Event* = object
     case eventType*: EventType
     of KeyPressed, KeyReleased:
--- a/semicongine/gltf.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/gltf.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -16,22 +16,24 @@
     children*: seq[int]
     mesh*: int = -1
     transform*: Mat4 = Unit4
+
   GltfData*[TMesh, TMaterial] = object
     scenes*: seq[seq[int]] # each scene has a seq of node indices
-    nodes*: seq[GltfNode]  # each node has a seq of mesh indices
+    nodes*: seq[GltfNode] # each node has a seq of mesh indices
     meshes*: seq[seq[(TMesh, VkPrimitiveTopology)]]
     materials*: seq[TMaterial]
     textures*: seq[Image[BGRA]]
+
   glTFHeader = object
     magic: uint32
     version: uint32
     length: uint32
+
   glTFData = object
     structuredContent: JsonNode
     binaryBufferData: seq[uint8]
 
-  MaterialAttributeNames* = object
-    # pbr
+  MaterialAttributeNames* = object # pbr
     baseColorTexture*: string
     baseColorTextureUv*: string
     baseColorFactor*: string
@@ -60,10 +62,10 @@
     indices*: string
     material*: string
 
-proc `=copy`(dest: var GltfNode; source: GltfNode) {.error.}
-proc `=copy`(dest: var glTFHeader; source: glTFHeader) {.error.}
-proc `=copy`(dest: var glTFData; source: glTFData) {.error.}
-proc `=copy`[S, T](dest: var GltfData[S, T]; source: GltfData[S, T]) {.error.}
+proc `=copy`(dest: var GltfNode, source: GltfNode) {.error.}
+proc `=copy`(dest: var glTFHeader, source: glTFHeader) {.error.}
+proc `=copy`(dest: var glTFData, source: glTFData) {.error.}
+proc `=copy`[S, T](dest: var GltfData[S, T], source: GltfData[S, T]) {.error.}
 
 const
   HEADER_MAGIC = 0x46546C67
@@ -80,20 +82,22 @@
   SAMPLER_WRAP_MODE_MAP = {
     33071: VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
     33648: VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
-    10497: VK_SAMPLER_ADDRESS_MODE_REPEAT
+    10497: VK_SAMPLER_ADDRESS_MODE_REPEAT,
   }.toTable
   PRIMITIVE_MODE_MAP = [
     0: VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
     1: VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
-    2: VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, # not correct, as mode 2 would be a loo, but vulkan has no concept of this
+    2: VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
+      # not correct, as mode 2 would be a loo, but vulkan has no concept of this
     3: VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
     4: VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
     5: VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
     6: VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
   ]
 
-proc getBufferViewData(bufferView: JsonNode, mainBuffer: seq[uint8],
-    baseBufferOffset = 0): seq[uint8] =
+proc getBufferViewData(
+    bufferView: JsonNode, mainBuffer: seq[uint8], baseBufferOffset = 0
+): seq[uint8] =
   assert bufferView["buffer"].getInt() == 0, "Currently no external buffers supported"
 
   result = newSeq[uint8](bufferView["byteLength"].getInt())
@@ -105,22 +109,36 @@
   copyMem(dstPointer, addr mainBuffer[bufferOffset], result.len)
 
 proc componentTypeId(t: typedesc): int =
-  if t is int8: return 5120
-  elif t is uint8: return 5121
-  elif t is int16: return 5122
-  elif t is uint16: return 5123
-  elif t is uint32: return 5125
-  elif t is float32: return 5126
+  if t is int8:
+    return 5120
+  elif t is uint8:
+    return 5121
+  elif t is int16:
+    return 5122
+  elif t is uint16:
+    return 5123
+  elif t is uint32:
+    return 5125
+  elif t is float32:
+    return 5126
 
 proc componentTypeName(id: int): string =
-  if id == 5120: return int8.name
-  elif id == 5121: return uint8.name
-  elif id == 5122: return int16.name
-  elif id == 5123: return uint16.name
-  elif id == 5125: return uint32.name
-  elif id == 5126: return float32.name
+  if id == 5120:
+    return int8.name
+  elif id == 5121:
+    return uint8.name
+  elif id == 5122:
+    return int16.name
+  elif id == 5123:
+    return uint16.name
+  elif id == 5125:
+    return uint32.name
+  elif id == 5126:
+    return float32.name
 
-proc getAccessorData[T](root: JsonNode, accessor: JsonNode, mainBuffer: seq[uint8]): seq[T] =
+proc getAccessorData[T](
+    root: JsonNode, accessor: JsonNode, mainBuffer: seq[uint8]
+): seq[T] =
   if accessor.hasKey("sparse"):
     raise newException(Exception, "Sparce accessors are currently not supported")
 
@@ -128,18 +146,29 @@
   let itemType = accessor["type"].getStr()
 
   when T is TVec or T is TMat:
-    assert componentTypeId(elementType(default(T))) == componentType, "Requested type '" & name(elementType(default(T))) & $componentTypeId(elementType(default(T))) & "' but actual type is '" & componentTypeName(componentType) & "'"
+    assert componentTypeId(elementType(default(T))) == componentType,
+      "Requested type '" & name(elementType(default(T))) &
+        $componentTypeId(elementType(default(T))) & "' but actual type is '" &
+        componentTypeName(componentType) & "'"
   else:
-    assert componentTypeId(T) == componentType, "Requested type '" & name(T) & "' but actual type is '" & componentTypeName(componentType) & "'"
+    assert componentTypeId(T) == componentType,
+      "Requested type '" & name(T) & "' but actual type is '" &
+        componentTypeName(componentType) & "'"
 
   when T is TVec:
-    when len(default(T)) == 2: assert itemType == "VEC2"
-    elif len(default(T)) == 3: assert itemType == "VEC3"
-    elif len(default(T)) == 4: assert itemType == "VEC4"
+    when len(default(T)) == 2:
+      assert itemType == "VEC2"
+    elif len(default(T)) == 3:
+      assert itemType == "VEC3"
+    elif len(default(T)) == 4:
+      assert itemType == "VEC4"
   elif T is TMat:
-    when T is Mat2: assert itemType == "MAT2"
-    elif T is Mat3: assert itemType == "MAT3"
-    elif T is Mat4: assert itemType == "MAT4"
+    when T is Mat2:
+      assert itemType == "MAT2"
+    elif T is Mat3:
+      assert itemType == "MAT3"
+    elif T is Mat4:
+      assert itemType == "MAT4"
   else:
     assert itemType == "SCALAR"
 
@@ -147,39 +176,49 @@
 
   let bufferView = root["bufferViews"][accessor["bufferView"].getInt()]
   assert bufferView["buffer"].getInt() == 0, "Currently no external buffers supported"
-  let accessorOffset = if accessor.hasKey("byteOffset"): accessor["byteOffset"].getInt() else: 0
-  let bufferOffset = (if "byteOffset" in bufferView: bufferView["byteOffset"].getInt() else: 0) + accessorOffset
+  let accessorOffset =
+    if accessor.hasKey("byteOffset"):
+      accessor["byteOffset"].getInt()
+    else:
+      0
+  let bufferOffset =
+    (if "byteOffset" in bufferView: bufferView["byteOffset"].getInt()
+    else: 0) + accessorOffset
   var dstPointer = result.ToCPointer()
 
   if bufferView.hasKey("byteStride"):
     warn "Congratulations, you try to test a feature (loading buffer data with stride attributes) that we have no idea where it is used and how it can be tested (need a coresponding *.glb file)."
     # we don't support stride, have to convert stuff here... does this even work?
     for i in 0 ..< result.len:
-      copyMem(dstPointer, addr(mainBuffer[bufferOffset + i * bufferView["byteStride"].getInt()]), sizeof(T))
+      copyMem(
+        dstPointer,
+        addr(mainBuffer[bufferOffset + i * bufferView["byteStride"].getInt()]),
+        sizeof(T),
+      )
       dstPointer = cast[typeof(dstPointer)](cast[uint](dstPointer) + sizeof(T).uint)
   else:
     copyMem(dstPointer, addr(mainBuffer[bufferOffset]), result.len * sizeof(T))
 
-proc loadTexture(root: JsonNode, textureNode: JsonNode, mainBuffer: seq[
-    uint8]): Image[BGRA] =
-
+proc loadTexture(
+    root: JsonNode, textureNode: JsonNode, mainBuffer: seq[uint8]
+): Image[BGRA] =
   let imageIndex = textureNode["source"].getInt()
 
   if root["images"][imageIndex].hasKey("uri"):
-    raise newException(Exception, "Unsupported feature: Cannot load images from external files")
+    raise newException(
+      Exception, "Unsupported feature: Cannot load images from external files"
+    )
 
-  let bufferView = root["bufferViews"][root["images"][imageIndex][
-      "bufferView"].getInt()]
+  let bufferView =
+    root["bufferViews"][root["images"][imageIndex]["bufferView"].getInt()]
   result = loadImageData[BGRA](getBufferViewData(bufferView, mainBuffer))
 
   if textureNode.hasKey("sampler"):
     let sampler = root["samplers"][textureNode["sampler"].getInt()]
     if sampler.hasKey("magFilter"):
-      result.magInterpolation = SAMPLER_FILTER_MODE_MAP[sampler[
-          "magFilter"].getInt()]
+      result.magInterpolation = SAMPLER_FILTER_MODE_MAP[sampler["magFilter"].getInt()]
     if sampler.hasKey("minFilter"):
-      result.minInterpolation = SAMPLER_FILTER_MODE_MAP[sampler[
-          "minFilter"].getInt()]
+      result.minInterpolation = SAMPLER_FILTER_MODE_MAP[sampler["minFilter"].getInt()]
     if sampler.hasKey("wrapS"):
       result.wrapU = SAMPLER_WRAP_MODE_MAP[sampler["wrapS"].getInt()]
     if sampler.hasKey("wrapT"):
@@ -189,10 +228,10 @@
   vec4(node[0].getFloat(), node[1].getFloat(), node[2].getFloat(), node[3].getFloat())
 
 proc loadMaterial[TMaterial](
-  root: JsonNode,
-  materialNode: JsonNode,
-  mapping: static MaterialAttributeNames,
-  mainBuffer: seq[uint8],
+    root: JsonNode,
+    materialNode: JsonNode,
+    mapping: static MaterialAttributeNames,
+    mainBuffer: seq[uint8],
 ): TMaterial =
   result = TMaterial()
 
@@ -213,10 +252,10 @@
             {.error: "Unsupported gltf material attribute".}
 
 proc loadPrimitive[TMesh](
-  root: JsonNode,
-  primitive: JsonNode,
-  mapping: static MeshAttributeNames,
-  mainBuffer: seq[uint8]
+    root: JsonNode,
+    primitive: JsonNode,
+    mapping: static MeshAttributeNames,
+    mainBuffer: seq[uint8],
 ): (TMesh, VkPrimitiveTopology) =
   result[0] = TMesh()
   result[1] = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
@@ -233,26 +272,35 @@
           var i = 0
           for mappedIndexName in mappedName:
             if gltfAttribute != "" and resultFieldName == mappedIndexName:
-              assert resultValue is GPUData, "Attribute " & resultFieldName & " must be of type GPUData"
+              assert resultValue is GPUData,
+                "Attribute " & resultFieldName & " must be of type GPUData"
               let gltfAttributeIndexed = gltfAttribute & "_" & $i
               if primitive["attributes"].hasKey(gltfAttributeIndexed):
                 let accessor = primitive["attributes"][gltfAttributeIndexed].getInt()
-                resultValue.data = getAccessorData[elementType(resultValue.data)](root, root["accessors"][accessor], mainBuffer)
+                resultValue.data = getAccessorData[elementType(resultValue.data)](
+                  root, root["accessors"][accessor], mainBuffer
+                )
           inc i
       elif typeof(mappedName) is string:
         when resultFieldName == mappedName:
-          assert resultValue is GPUData or gltfAttribute == "material", "Attribute " & resultFieldName & " must be of type GPUData"
+          assert resultValue is GPUData or gltfAttribute == "material",
+            "Attribute " & resultFieldName & " must be of type GPUData"
           when gltfAttribute == "indices":
             if primitive.hasKey(gltfAttribute):
               let accessor = primitive[gltfAttribute].getInt()
-              resultValue.data = getAccessorData[elementType(resultValue.data)](root, root["accessors"][accessor], mainBuffer)
+              resultValue.data = getAccessorData[elementType(resultValue.data)](
+                root, root["accessors"][accessor], mainBuffer
+              )
           elif gltfAttribute == "material":
-            if primitive.hasKey(gltfAttribute): # assuming here that materials IDs are a normal field on the mesh, not GPUData
+            if primitive.hasKey(gltfAttribute):
+              # assuming here that materials IDs are a normal field on the mesh, not GPUData
               resultValue = typeof(resultValue)(primitive[gltfAttribute].getInt())
           else:
             if primitive["attributes"].hasKey(gltfAttribute):
               let accessor = primitive["attributes"][gltfAttribute].getInt()
-              resultValue.data = getAccessorData[elementType(resultValue.data)](root, root["accessors"][accessor], mainBuffer)
+              resultValue.data = getAccessorData[elementType(resultValue.data)](
+                root, root["accessors"][accessor], mainBuffer
+              )
 
 proc loadNode(node: JsonNode): GltfNode =
   result = GltfNode()
@@ -271,7 +319,7 @@
       t = translate(
         float32(node["translation"][0].getFloat()),
         float32(node["translation"][1].getFloat()),
-        float32(node["translation"][2].getFloat())
+        float32(node["translation"][2].getFloat()),
       )
     if "rotation" in node:
       t = rotate(
@@ -279,22 +327,22 @@
         vec3(
           float32(node["rotation"][0].getFloat()),
           float32(node["rotation"][1].getFloat()),
-          float32(node["rotation"][2].getFloat())
-        )
+          float32(node["rotation"][2].getFloat()),
+        ),
       )
     if "scale" in node:
       t = scale(
         float32(node["scale"][0].getFloat()),
         float32(node["scale"][1].getFloat()),
-        float32(node["scale"][2].getFloat())
+        float32(node["scale"][2].getFloat()),
       )
 
     result.transform = t * r * s
 
 proc ReadglTF*[TMesh, TMaterial](
-  stream: Stream,
-  meshAttributesMapping: static MeshAttributeNames,
-  materialAttributesMapping: static MaterialAttributeNames,
+    stream: Stream,
+    meshAttributesMapping: static MeshAttributeNames,
+    materialAttributesMapping: static MaterialAttributeNames,
 ): GltfData[TMesh, TMaterial] =
   var
     header: glTFHeader
@@ -314,33 +362,40 @@
   assert stream.readUint32() == BINARY_CHUNK
   data.binaryBufferData.setLen(chunkLength)
   assert stream.readData(addr data.binaryBufferData[0], int(chunkLength)) ==
-      int(chunkLength)
+    int(chunkLength)
 
   # check that the refered buffer is the same as the binary chunk
   # external binary buffers are not supported
   assert data.structuredContent["buffers"].len == 1
   assert not data.structuredContent["buffers"][0].hasKey("uri")
-  let bufferLenDiff = int(chunkLength) - data.structuredContent["buffers"][0]["byteLength"].getInt()
-  assert 0 <= bufferLenDiff and bufferLenDiff <= 3 # binary buffer may be aligned to 4 bytes
+  let bufferLenDiff =
+    int(chunkLength) - data.structuredContent["buffers"][0]["byteLength"].getInt()
+  assert 0 <= bufferLenDiff and bufferLenDiff <= 3
+    # binary buffer may be aligned to 4 bytes
 
   debug "Loading mesh: ", data.structuredContent.pretty
 
   if "materials" in data.structuredContent:
     for materialnode in items(data.structuredContent["materials"]):
-      result.materials.add loadMaterial[TMaterial](data.structuredContent,
-          materialnode, materialAttributesMapping, data.binaryBufferData)
+      result.materials.add loadMaterial[TMaterial](
+        data.structuredContent, materialnode, materialAttributesMapping,
+        data.binaryBufferData,
+      )
 
   if "textures" in data.structuredContent:
     for texturenode in items(data.structuredContent["textures"]):
-      result.textures.add loadTexture(data.structuredContent, texturenode,
-          data.binaryBufferData)
+      result.textures.add loadTexture(
+        data.structuredContent, texturenode, data.binaryBufferData
+      )
 
   if "meshes" in data.structuredContent:
     for mesh in items(data.structuredContent["meshes"]):
       var primitives: seq[(TMesh, VkPrimitiveTopology)]
       for primitive in items(mesh["primitives"]):
-        primitives.add loadPrimitive[TMesh](data.structuredContent, primitive,
-            meshAttributesMapping, data.binaryBufferData)
+        primitives.add loadPrimitive[TMesh](
+          data.structuredContent, primitive, meshAttributesMapping,
+          data.binaryBufferData,
+        )
       result.meshes.add primitives
 
   if "nodes" in data.structuredContent:
@@ -356,10 +411,10 @@
         result.scenes.add nodes
 
 proc loadMeshes*[TMesh, TMaterial](
-  path: string,
-  meshAttributesMapping: static MeshAttributeNames,
-  materialAttributesMapping: static MaterialAttributeNames,
-  package = DEFAULT_PACKAGE
+    path: string,
+    meshAttributesMapping: static MeshAttributeNames,
+    materialAttributesMapping: static MaterialAttributeNames,
+    package = DEFAULT_PACKAGE,
 ): GltfData[TMesh, TMaterial] =
   ReadglTF[TMesh, TMaterial](
     stream = loadResource_intern(path, package = package),
--- a/semicongine/image.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/image.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -8,14 +8,16 @@
 
 {.emit: "#define STB_IMAGE_STATIC".}
 {.emit: "#define STB_IMAGE_IMPLEMENTATION".}
-{.emit: "#include \"" & currentSourcePath.parentDir() & "/thirdparty/stb/stb_image.h\"".}
+{.
+  emit: "#include \"" & currentSourcePath.parentDir() & "/thirdparty/stb/stb_image.h\""
+.}
 
 proc stbi_load_from_memory(
   buffer: ptr uint8,
   len: cint,
   x, y: ptr cint,
   channels_in_file: ptr cint,
-  desired_channels: cint
+  desired_channels: cint,
 ): ptr uint8 {.importc, nodecl.}
 
 type
@@ -38,16 +40,17 @@
     samples*: VkSampleCountFlagBits = VK_SAMPLE_COUNT_1_BIT
     when IsArray:
       nLayers*: uint32
+
   Image*[T: PixelType] = ImageObject[T, false]
   ImageArray*[T: PixelType] = ImageObject[T, true]
 
 template nLayers*(image: Image): untyped =
   1
 
-proc `=copy`[S, T](dest: var ImageObject[S, T]; source: ImageObject[S, T]) {.error.}
+proc `=copy`[S, T](dest: var ImageObject[S, T], source: ImageObject[S, T]) {.error.}
 
 # loads single layer image
-proc loadImageData*[T: PixelType](pngData: string|seq[uint8]): Image[T] =
+proc loadImageData*[T: PixelType](pngData: string | seq[uint8]): Image[T] =
   when T is Gray:
     let nChannels = 1.cint
   elif T is BGRA:
@@ -61,7 +64,7 @@
     x = addr(w),
     y = addr(h),
     channels_in_file = addr(c),
-    desired_channels = nChannels
+    desired_channels = nChannels,
   )
   if data == nil:
     raise newException(Exception, "An error occured while loading PNG file")
@@ -75,7 +78,7 @@
     for i in 0 ..< result.data.len:
       swap(result.data[i][0], result.data[i][2])
 
-proc addImageLayer*[T: PixelType](image: var Image[T], pngData: string|seq[uint8]) =
+proc addImageLayer*[T: PixelType](image: var Image[T], pngData: string | seq[uint8]) =
   when T is Gray:
     const nChannels = 1.cint
   elif T is BGRA:
@@ -89,13 +92,15 @@
     x = addr(w),
     y = addr(h),
     channels_in_file = addr(c),
-    desired_channels = nChannels
+    desired_channels = nChannels,
   )
   if data == nil:
     raise newException(Exception, "An error occured while loading PNG file")
 
-  assert w == image.width, "New image layer has dimension {(w, y)} but image has dimension {(image.width, image.height)}"
-  assert h == image.height, "New image layer has dimension {(w, y)} but image has dimension {(image.width, image.height)}"
+  assert w == image.width,
+    "New image layer has dimension {(w, y)} but image has dimension {(image.width, image.height)}"
+  assert h == image.height,
+    "New image layer has dimension {(w, y)} but image has dimension {(image.width, image.height)}"
 
   let imagesize = image.width * image.height * nChannels
   let layerOffset = image.width * image.height * image.nLayers
@@ -109,7 +114,8 @@
       swap(image.data[layerOffset + i][0], image.data[layerOffset + i][2])
 
 proc loadImage*[T: PixelType](path: string, package = DEFAULT_PACKAGE): Image[T] =
-  assert path.splitFile().ext.toLowerAscii == ".png", "Unsupported image type: " & path.splitFile().ext.toLowerAscii
+  assert path.splitFile().ext.toLowerAscii == ".png",
+    "Unsupported image type: " & path.splitFile().ext.toLowerAscii
   when T is Gray:
     let pngType = 0.cint
   elif T is BGRA:
@@ -130,16 +136,22 @@
   image.data[y * image.width + x] = value
 
 proc `[]`*(image: ImageArray, layer, x, y: uint32): auto =
-  assert layer < image.nLayers, &"Tried to access image layer {layer}, but image has only {image.nLayers} layers"
-  assert x < image.width, &"Tried to access pixel coordinate {(x, y)} but image has size {(image.width, image.height)}"
-  assert y < image.height, &"Tried to access pixel coordinate {(x, y)} but image has size {(image.width, image.height)}"
+  assert layer < image.nLayers,
+    &"Tried to access image layer {layer}, but image has only {image.nLayers} layers"
+  assert x < image.width,
+    &"Tried to access pixel coordinate {(x, y)} but image has size {(image.width, image.height)}"
+  assert y < image.height,
+    &"Tried to access pixel coordinate {(x, y)} but image has size {(image.width, image.height)}"
 
   image.data[layer * (image.width * image.height) + y * image.width + x]
 
 proc `[]=`*[T](image: var ImageArray[T], layer, x, y: uint32, value: T) =
-  assert layer < image.nLayers, &"Tried to access image layer {layer}, but image has only {image.nLayers} layers"
-  assert x < image.width, &"Tried to access pixel coordinate {(x, y)} but image has size {(image.width, image.height)}"
-  assert y < image.height, &"Tried to access pixel coordinate {(x, y)} but image has size {(image.width, image.height)}"
+  assert layer < image.nLayers,
+    &"Tried to access image layer {layer}, but image has only {image.nLayers} layers"
+  assert x < image.width,
+    &"Tried to access pixel coordinate {(x, y)} but image has size {(image.width, image.height)}"
+  assert y < image.height,
+    &"Tried to access pixel coordinate {(x, y)} but image has size {(image.width, image.height)}"
 
   image.data[layer * (image.width * image.height) + y * image.width + x] = value
 
--- a/semicongine/input.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/input.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -6,21 +6,20 @@
 import ./rendering
 import ./storage
 
-type
-  Input = object
-    keyIsDown: set[Key]
-    keyWasPressed: set[Key]
-    keyWasReleased: set[Key]
-    mouseIsDown: set[MouseButton]
-    mouseWasPressed: set[MouseButton]
-    mouseWasReleased: set[MouseButton]
-    mousePosition: Vec2i
-    mouseMove: Vec2i
-    mouseWheel: float32
-    windowWasResized: bool = true
-    windowIsMinimized: bool = false
-    lockMouse: bool = false
-    hasFocus: bool = false
+type Input = object
+  keyIsDown: set[Key]
+  keyWasPressed: set[Key]
+  keyWasReleased: set[Key]
+  mouseIsDown: set[MouseButton]
+  mouseWasPressed: set[MouseButton]
+  mouseWasReleased: set[MouseButton]
+  mousePosition: Vec2i
+  mouseMove: Vec2i
+  mouseWheel: float32
+  windowWasResized: bool = true
+  windowIsMinimized: bool = false
+  lockMouse: bool = false
+  hasFocus: bool = false
 
 # warning, shit is not thread safe
 var input = Input()
@@ -45,65 +44,99 @@
 
   var killed = false
   for event in vulkan.window.pendingEvents():
-    case event.eventType:
-      of Quit:
-        killed = true
-      of ResizedWindow:
-        input.windowWasResized = true
-      of KeyPressed:
-        input.keyWasPressed.incl event.key
-        input.keyIsDown.incl event.key
-      of KeyReleased:
-        input.keyWasReleased.incl event.key
-        input.keyIsDown.excl event.key
-      of MousePressed:
-        input.mouseWasPressed.incl event.button
-        input.mouseIsDown.incl event.button
-      of MouseReleased:
-        input.mouseWasReleased.incl event.button
-        input.mouseIsDown.excl event.button
-      of MouseWheel:
-        input.mouseWheel = event.amount
-      of MinimizedWindow:
-        input.windowIsMinimized = true
-      of RestoredWindow:
-        input.windowIsMinimized = false
-      of GotFocus:
-        input.hasFocus = true
-      of LostFocus:
-        input.hasFocus = false
+    case event.eventType
+    of Quit:
+      killed = true
+    of ResizedWindow:
+      input.windowWasResized = true
+    of KeyPressed:
+      input.keyWasPressed.incl event.key
+      input.keyIsDown.incl event.key
+    of KeyReleased:
+      input.keyWasReleased.incl event.key
+      input.keyIsDown.excl event.key
+    of MousePressed:
+      input.mouseWasPressed.incl event.button
+      input.mouseIsDown.incl event.button
+    of MouseReleased:
+      input.mouseWasReleased.incl event.button
+      input.mouseIsDown.excl event.button
+    of MouseWheel:
+      input.mouseWheel = event.amount
+    of MinimizedWindow:
+      input.windowIsMinimized = true
+    of RestoredWindow:
+      input.windowIsMinimized = false
+    of GotFocus:
+      input.hasFocus = true
+    of LostFocus:
+      input.hasFocus = false
 
   return not killed
 
-proc keyIsDown*(key: Key): bool = key in input.keyIsDown
-proc keyWasPressed*(key: Key): bool = key in input.keyWasPressed
-proc keyWasPressed*(): bool = input.keyWasPressed.len > 0
-proc keyWasReleased*(key: Key): bool = key in input.keyWasReleased
-proc mouseIsDown*(button: MouseButton): bool = button in input.mouseIsDown
-proc mouseWasPressed*(): bool = input.mouseWasPressed.len > 0
-proc mouseWasPressed*(button: MouseButton): bool = button in input.mouseWasPressed
-proc mousePressedButtons*(): set[MouseButton] = input.mouseWasPressed
-proc mouseWasReleased*(): bool = input.mouseWasReleased.len > 0
-proc mouseWasReleased*(button: MouseButton): bool = button in input.mouseWasReleased
-proc mouseReleasedButtons*(): set[MouseButton] = input.mouseWasReleased
-proc mousePositionPixel*(): Vec2i = input.mousePosition
+proc keyIsDown*(key: Key): bool =
+  key in input.keyIsDown
+
+proc keyWasPressed*(key: Key): bool =
+  key in input.keyWasPressed
+
+proc keyWasPressed*(): bool =
+  input.keyWasPressed.len > 0
+
+proc keyWasReleased*(key: Key): bool =
+  key in input.keyWasReleased
+
+proc mouseIsDown*(button: MouseButton): bool =
+  button in input.mouseIsDown
+
+proc mouseWasPressed*(): bool =
+  input.mouseWasPressed.len > 0
+
+proc mouseWasPressed*(button: MouseButton): bool =
+  button in input.mouseWasPressed
+
+proc mousePressedButtons*(): set[MouseButton] =
+  input.mouseWasPressed
+
+proc mouseWasReleased*(): bool =
+  input.mouseWasReleased.len > 0
+
+proc mouseWasReleased*(button: MouseButton): bool =
+  button in input.mouseWasReleased
+
+proc mouseReleasedButtons*(): set[MouseButton] =
+  input.mouseWasReleased
+
+proc mousePositionPixel*(): Vec2i =
+  input.mousePosition
+
 proc mousePosition*(): Vec2f =
   result = input.mousePosition.f32 / vulkan.window.size().f32 * 2.0'f32 - 1.0'f32
   result.y = result.y * -1
-proc mouseMove*(): Vec2i = input.mouseMove
-proc mouseWheel*(): float32 = input.mouseWheel
-proc windowWasResized*(): auto = input.windowWasResized
-proc windowIsMinimized*(): auto = input.windowIsMinimized
-proc lockMouse*(value: bool) = input.lockMouse = value
-proc hasFocus*(): bool = input.hasFocus
+
+proc mouseMove*(): Vec2i =
+  input.mouseMove
+
+proc mouseWheel*(): float32 =
+  input.mouseWheel
 
+proc windowWasResized*(): auto =
+  input.windowWasResized
+
+proc windowIsMinimized*(): auto =
+  input.windowIsMinimized
+
+proc lockMouse*(value: bool) =
+  input.lockMouse = value
+
+proc hasFocus*(): bool =
+  input.hasFocus
 
 # actions as a slight abstraction over raw input
 
-type
-  ActionMap = object
-    keyActions: Table[string, set[Key]]
-    mouseActions: Table[string, set[MouseButton]]
+type ActionMap = object
+  keyActions: Table[string, set[Key]]
+  mouseActions: Table[string, set[MouseButton]]
 
 # warning, shit is not thread safe
 var actionMap: ActionMap
@@ -118,7 +151,7 @@
     actionMap.mouseActions[$action] = {}
   actionMap.mouseActions[$action].incl button
 
-proc mapAction*[T: enum](action: T, keys: openArray[Key|MouseButton]) =
+proc mapAction*[T: enum](action: T, keys: openArray[Key | MouseButton]) =
   for key in keys:
     mapAction(action, key)
 
--- a/semicongine/rendering.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/rendering.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -19,12 +19,13 @@
 # - some utils code that is used in mutiple rendering files
 # - inclusion of all rendering files
 
-
 # const definitions
 const INFLIGHTFRAMES* = 2'u32
 const BUFFER_ALIGNMENT = 64'u64 # align offsets inside buffers along this alignment
-const MEMORY_BLOCK_ALLOCATION_SIZE = 100_000_000'u64 # ca. 100mb per block, seems reasonable
-const BUFFER_ALLOCATION_SIZE = 9_000_000'u64 # ca. 9mb per block, seems reasonable, can put 10 buffers into one memory block
+const MEMORY_BLOCK_ALLOCATION_SIZE = 100_000_000'u64
+  # ca. 100mb per block, seems reasonable
+const BUFFER_ALLOCATION_SIZE = 9_000_000'u64
+  # ca. 9mb per block, seems reasonable, can put 10 buffers into one memory block
 const MAX_DESCRIPTORSETS = 4
 const SURFACE_FORMAT* = VK_FORMAT_B8G8R8A8_SRGB
 const DEPTH_FORMAT* = VK_FORMAT_D32_SFLOAT
@@ -32,12 +33,12 @@
 
 # custom pragmas to classify shader attributes
 type DescriptorSetIndex = range[0 .. MAX_DESCRIPTORSETS - 1]
-template VertexAttribute* {.pragma.}
-template InstanceAttribute* {.pragma.}
-template PushConstant* {.pragma.}
-template Pass* {.pragma.}
-template PassFlat* {.pragma.}
-template ShaderOutput* {.pragma.}
+template VertexAttribute*() {.pragma.}
+template InstanceAttribute*() {.pragma.}
+template PushConstant*() {.pragma.}
+template Pass*() {.pragma.}
+template PassFlat*() {.pragma.}
+template ShaderOutput*() {.pragma.}
 template DescriptorSet*(index: DescriptorSetIndex) {.pragma.}
 
 # there is a big, bad global vulkan object
@@ -50,10 +51,18 @@
 
 type
   # type aliases
-  SupportedGPUType = float32 | float64 | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | TVec2[int32] | TVec2[int64] | TVec3[int32] | TVec3[int64] | TVec4[int32] | TVec4[int64] | TVec2[uint32] | TVec2[uint64] | TVec3[uint32] | TVec3[uint64] | TVec4[uint32] | TVec4[uint64] | TVec2[float32] | TVec2[float64] | TVec3[float32] | TVec3[float64] | TVec4[float32] | TVec4[float64] | TMat2[float32] | TMat2[float64] | TMat23[float32] | TMat23[float64] | TMat32[float32] | TMat32[float64] | TMat3[float32] | TMat3[float64] | TMat34[float32] | TMat34[float64] | TMat43[float32] | TMat43[float64] | TMat4[float32] | TMat4[float64]
+  SupportedGPUType =
+    float32 | float64 | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 |
+    TVec2[int32] | TVec2[int64] | TVec3[int32] | TVec3[int64] | TVec4[int32] |
+    TVec4[int64] | TVec2[uint32] | TVec2[uint64] | TVec3[uint32] | TVec3[uint64] |
+    TVec4[uint32] | TVec4[uint64] | TVec2[float32] | TVec2[float64] | TVec3[float32] |
+    TVec3[float64] | TVec4[float32] | TVec4[float64] | TMat2[float32] | TMat2[float64] |
+    TMat23[float32] | TMat23[float64] | TMat32[float32] | TMat32[float64] |
+    TMat3[float32] | TMat3[float64] | TMat34[float32] | TMat34[float64] | TMat43[
+      float32
+    ] | TMat43[float64] | TMat4[float32] | TMat4[float64]
 
-  VulkanGlobals* = object
-    # populated through InitVulkan proc
+  VulkanGlobals* = object # populated through InitVulkan proc
     instance*: VkInstance
     device*: VkDevice
     physicalDevice*: VkPhysicalDevice
@@ -66,10 +75,12 @@
     swapchain*: Swapchain
     # unclear as of yet
     anisotropy*: float32 = 0 # needs to be enable during device creation
+
   RenderPass* = ref object
     vk*: VkRenderPass
     samples*: VkSampleCountFlagBits
     depthBuffer*: bool
+
   Swapchain* = ref object
     # parameters to initSwapchain, required for swapchain recreation
     renderPass*: RenderPass
@@ -103,6 +114,7 @@
   DescriptorSetData*[T: object] = object
     data*: T
     vk: array[INFLIGHTFRAMES.int, VkDescriptorSet]
+
   Pipeline*[TShader] = object
     vk: VkPipeline
     vertexShaderModule: VkShaderModule
@@ -118,11 +130,13 @@
     IndexBufferMapped
     UniformBuffer
     UniformBufferMapped
+
   MemoryBlock* = object
     vk: VkDeviceMemory
     size: uint64
     rawPointer: pointer # if not nil, this is mapped memory
     offsetNextFree: uint64
+
   Buffer* = object
     vk: VkBuffer
     size: uint64
@@ -130,14 +144,17 @@
     offsetNextFree: uint64
     memoryOffset: uint64
     memory: VkDeviceMemory
+
   GPUArray*[T: SupportedGPUType, TBuffer: static BufferType] = object
     data*: seq[T]
     buffer*: Buffer
     offset*: uint64
+
   GPUValue*[T: object, TBuffer: static BufferType] = object
     data*: T
     buffer*: Buffer
     offset: uint64
+
   GPUData* = GPUArray | GPUValue
 
   RenderDataObject = object
@@ -147,25 +164,29 @@
     images: seq[VkImage]
     imageViews: seq[VkImageView]
     samplers: seq[VkSampler]
+
   RenderData* = ref RenderDataObject
 
 var vulkan* = VulkanGlobals()
 var fullscreen_internal: bool
 
-proc `=copy`(dest: var VulkanGlobals; source: VulkanGlobals) {.error.}
-proc `=copy`(dest: var RenderDataObject; source: RenderDataObject) {.error.}
-proc `=copy`[T, S](dest: var GPUValue[T, S]; source: GPUValue[T, S]) {.error.}
-proc `=copy`[T, S](dest: var GPUArray[T, S]; source: GPUArray[T, S]) {.error.}
-proc `=copy`(dest: var MemoryBlock; source: MemoryBlock) {.error.}
-proc `=copy`[T](dest: var Pipeline[T]; source: Pipeline[T]) {.error.}
-proc `=copy`[T](dest: var DescriptorSetData[T]; source: DescriptorSetData[T]) {.error.}
+proc `=copy`(dest: var VulkanGlobals, source: VulkanGlobals) {.error.}
+proc `=copy`(dest: var RenderDataObject, source: RenderDataObject) {.error.}
+proc `=copy`[T, S](dest: var GPUValue[T, S], source: GPUValue[T, S]) {.error.}
+proc `=copy`[T, S](dest: var GPUArray[T, S], source: GPUArray[T, S]) {.error.}
+proc `=copy`(dest: var MemoryBlock, source: MemoryBlock) {.error.}
+proc `=copy`[T](dest: var Pipeline[T], source: Pipeline[T]) {.error.}
+proc `=copy`[T](dest: var DescriptorSetData[T], source: DescriptorSetData[T]) {.error.}
 
 proc `[]`*[T, S](a: GPUArray[T, S], i: int): T =
   a.data[i]
+
 proc `[]=`*[T, S](a: var GPUArray[T, S], i: int, value: T) =
   a.data[i] = value
 
-template forDescriptorFields(shader: typed, valuename, typename, countname, bindingNumber, body: untyped): untyped =
+template forDescriptorFields(
+    shader: typed, valuename, typename, countname, bindingNumber, body: untyped
+): untyped =
   var `bindingNumber` {.inject.} = 0'u32
   for theFieldname, `valuename` in fieldPairs(shader):
     when typeof(`valuename`) is Image:
@@ -194,7 +215,9 @@
           body
           `bindingNumber`.inc
       else:
-        {.error: "Unsupported descriptor type: " & typetraits.name(typeof(`valuename`)).}
+        {.
+          error: "Unsupported descriptor type: " & typetraits.name(typeof(`valuename`))
+        .}
     else:
       {.error: "Unsupported descriptor type: " & typetraits.name(typeof(`valuename`)).}
 
@@ -209,36 +232,46 @@
 include ./rendering/renderer
 
 proc debugCallback(
-  messageSeverity: VkDebugUtilsMessageSeverityFlagBitsEXT,
-  messageTypes: VkDebugUtilsMessageTypeFlagsEXT,
-  pCallbackData: ptr VkDebugUtilsMessengerCallbackDataEXT,
-  userData: pointer
+    messageSeverity: VkDebugUtilsMessageSeverityFlagBitsEXT,
+    messageTypes: VkDebugUtilsMessageTypeFlagsEXT,
+    pCallbackData: ptr VkDebugUtilsMessengerCallbackDataEXT,
+    userData: pointer,
 ): VkBool32 {.cdecl.} =
   const LOG_LEVEL_MAPPING = {
-      VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT: lvlDebug,
-      VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT: lvlInfo,
-      VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT: lvlWarn,
-      VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT: lvlError,
+    VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT: lvlDebug,
+    VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT: lvlInfo,
+    VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT: lvlWarn,
+    VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT: lvlError,
   }.toTable
-  log LOG_LEVEL_MAPPING[messageSeverity], &"{toEnums messageTypes}: {pCallbackData.pMessage}"
+  log LOG_LEVEL_MAPPING[messageSeverity],
+    &"{toEnums messageTypes}: {pCallbackData.pMessage}"
   if messageSeverity == VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT:
     stderr.writeLine "-----------------------------------"
     stderr.write getStackTrace()
-    stderr.writeLine LOG_LEVEL_MAPPING[messageSeverity], &"{toEnums messageTypes}: {pCallbackData.pMessage}"
+    stderr.writeLine LOG_LEVEL_MAPPING[messageSeverity],
+      &"{toEnums messageTypes}: {pCallbackData.pMessage}"
     stderr.writeLine "-----------------------------------"
-    let errorMsg = getStackTrace() & &"\n{toEnums messageTypes}: {pCallbackData.pMessage}"
+    let errorMsg =
+      getStackTrace() & &"\n{toEnums messageTypes}: {pCallbackData.pMessage}"
     raise newException(Exception, errorMsg)
   return false
 
 proc initVulkan*(appName: string = "semicongine app") =
-
   # instance creation
 
   # enagle all kind of debug stuff
   when not defined(release):
-    let requiredExtensions = REQUIRED_PLATFORM_EXTENSIONS & @["VK_KHR_surface", "VK_EXT_debug_utils"]
-    let layers: seq[string] = if hasValidationLayer(): @["VK_LAYER_KHRONOS_validation"] else: @[]
-    putEnv("VK_LAYER_ENABLES", "VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_AMD,VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_NVIDIA,VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXTVK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT,VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT")
+    let requiredExtensions =
+      REQUIRED_PLATFORM_EXTENSIONS & @["VK_KHR_surface", "VK_EXT_debug_utils"]
+    let layers: seq[string] =
+      if hasValidationLayer():
+        @["VK_LAYER_KHRONOS_validation"]
+      else:
+        @[]
+    putEnv(
+      "VK_LAYER_ENABLES",
+      "VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_AMD,VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_NVIDIA,VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXTVK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT,VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT",
+    )
   else:
     let requiredExtensions = REQUIRED_PLATFORM_EXTENSIONS & @["VK_KHR_surface"]
     let layers: seq[string] = @[]
@@ -263,7 +296,7 @@
       enabledLayerCount: layers.len.uint32,
       ppEnabledLayerNames: layersC,
       enabledExtensionCount: requiredExtensions.len.uint32,
-      ppEnabledExtensionNames: instanceExtensionsC
+      ppEnabledExtensionNames: instanceExtensionsC,
     )
   checkVkResult vkCreateInstance(addr(createinfo), nil, addr(vulkan.instance))
   loadVulkan(vulkan.instance)
@@ -295,15 +328,13 @@
       pUserData: nil,
     )
     checkVkResult vkCreateDebugUtilsMessengerEXT(
-      vulkan.instance,
-      addr(debugMessengerCreateInfo),
-      nil,
-      addr(vulkan.debugMessenger)
+      vulkan.instance, addr(debugMessengerCreateInfo), nil, addr(vulkan.debugMessenger)
     )
 
   # get physical device and graphics queue family
   vulkan.physicalDevice = getBestPhysicalDevice(vulkan.instance)
-  vulkan.graphicsQueueFamily = getQueueFamily(vulkan.physicalDevice, VK_QUEUE_GRAPHICS_BIT)
+  vulkan.graphicsQueueFamily =
+    getQueueFamily(vulkan.physicalDevice, VK_QUEUE_GRAPHICS_BIT)
 
   let
     priority = cfloat(1)
@@ -314,12 +345,10 @@
       pQueuePriorities: addr(priority),
     )
     deviceExtensionsC = allocCStringArray(deviceExtensions)
-  defer: deallocCStringArray(deviceExtensionsC)
+  defer:
+    deallocCStringArray(deviceExtensionsC)
   let enabledFeatures = VkPhysicalDeviceFeatures(
-   fillModeNonSolid: true,
-   depthClamp: true,
-   wideLines: true,
-   largePoints: true,
+    fillModeNonSolid: true, depthClamp: true, wideLines: true, largePoints: true
   )
   var createDeviceInfo = VkDeviceCreateInfo(
     sType: VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
@@ -335,9 +364,10 @@
     physicalDevice = vulkan.physicalDevice,
     pCreateInfo = addr createDeviceInfo,
     pAllocator = nil,
-    pDevice = addr vulkan.device
+    pDevice = addr vulkan.device,
   )
-  vulkan.graphicsQueue = svkGetDeviceQueue(vulkan.device, vulkan.graphicsQueueFamily, VK_QUEUE_GRAPHICS_BIT)
+  vulkan.graphicsQueue =
+    svkGetDeviceQueue(vulkan.device, vulkan.graphicsQueueFamily, VK_QUEUE_GRAPHICS_BIT)
 
 proc clearSwapchain*() =
   assert vulkan.swapchain != nil, "Swapchain has not been initialized yet"
@@ -357,8 +387,12 @@
     vkDestroyDebugUtilsMessengerEXT(vulkan.instance, vulkan.debugMessenger, nil)
   vkDestroyInstance(vulkan.instance, nil)
 
-proc showSystemCursor*(value: bool) = vulkan.window.showSystemCursor(value)
-proc fullscreen*(): bool = fullscreen_internal
+proc showSystemCursor*(value: bool) =
+  vulkan.window.showSystemCursor(value)
+
+proc fullscreen*(): bool =
+  fullscreen_internal
+
 proc setFullscreen*(enable: bool) =
   if enable != fullscreen_internal:
     fullscreen_internal = enable
@@ -368,9 +402,12 @@
   assert vulkan.swapchain != nil, "Swapchain has not been initialized yet"
   vulkan.swapchain.width.float32 / vulkan.swapchain.height.float32
 
-proc maxFramebufferSampleCount*(maxSamples = VK_SAMPLE_COUNT_8_BIT): VkSampleCountFlagBits =
+proc maxFramebufferSampleCount*(
+    maxSamples = VK_SAMPLE_COUNT_8_BIT
+): VkSampleCountFlagBits =
   let limits = svkGetPhysicalDeviceProperties().limits
   let available = VkSampleCountFlags(
-    limits.framebufferColorSampleCounts.uint32 and limits.framebufferDepthSampleCounts.uint32
+    limits.framebufferColorSampleCounts.uint32 and
+      limits.framebufferDepthSampleCounts.uint32
   ).toEnums
   return min(max(available), maxSamples)
--- a/semicongine/rendering/platform/linux.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/rendering/platform/linux.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -13,24 +13,92 @@
 
 # got values (keycodes) from xev
 const KeyTypeMap = {
-  9: Escape, 67: F1, 68: F2, 69: F3, 70: F4, 71: F5, 72: F6, 73: F7, 74: F8,
-  75: F9, 76: F10, 95: F11, 96: F12,
-  49: NumberRowExtra1, 10: `1`, 11: `2`, 12: `3`, 13: `4`, 14: `5`, 15: `6`,
-  16: `7`, 17: `8`, 18: `9`, 19: `0`, 20: NumberRowExtra2, 21: NumberRowExtra3,
-  24: Q, 25: W, 26: E, 27: R, 28: T, 29: Y, 30: U, 31: I, 32: O, 33: P, 38: A,
-  39: S, 40: D, 41: Key.F, 42: G, 43: H, 44: J, 45: K, 46: L, 52: Z, 53: X,
-  54: C, 55: V, 56: B, 57: N, 58: M,
-
-  23: Tab, 66: CapsLock, 50: ShiftL, 62: ShiftR, 37: CtrlL, 105: CtrlR,
-  133: SuperL, 134: SuperR,
-  64: AltL, 108: AltR,
-  65: Space, 36: Enter, 22: Backspace,
-  34: LetterRow1Extra1, 35: LetterRow1Extra2,
-  47: LetterRow2Extra1, 48: LetterRow2Extra2, 51: LetterRow2Extra3,
-  59: LetterRow3Extra1, 60: LetterRow3Extra2, 61: LetterRow3Extra3,
-  111: Up, 116: Down, 113: Left, 114: Right,
-  112: PageUp, 117: PageDown, 110: Home, 115: End, 118: Insert, 119: Delete,
-  107: PrintScreen, 78: ScrollLock, 127: Pause,
+  9: Escape,
+  67: F1,
+  68: F2,
+  69: F3,
+  70: F4,
+  71: F5,
+  72: F6,
+  73: F7,
+  74: F8,
+  75: F9,
+  76: F10,
+  95: F11,
+  96: F12,
+  49: NumberRowExtra1,
+  10: `1`,
+  11: `2`,
+  12: `3`,
+  13: `4`,
+  14: `5`,
+  15: `6`,
+  16: `7`,
+  17: `8`,
+  18: `9`,
+  19: `0`,
+  20: NumberRowExtra2,
+  21: NumberRowExtra3,
+  24: Q,
+  25: W,
+  26: E,
+  27: R,
+  28: T,
+  29: Y,
+  30: U,
+  31: I,
+  32: O,
+  33: P,
+  38: A,
+  39: S,
+  40: D,
+  41: Key.F,
+  42: G,
+  43: H,
+  44: J,
+  45: K,
+  46: L,
+  52: Z,
+  53: X,
+  54: C,
+  55: V,
+  56: B,
+  57: N,
+  58: M,
+  23: Tab,
+  66: CapsLock,
+  50: ShiftL,
+  62: ShiftR,
+  37: CtrlL,
+  105: CtrlR,
+  133: SuperL,
+  134: SuperR,
+  64: AltL,
+  108: AltR,
+  65: Space,
+  36: Enter,
+  22: Backspace,
+  34: LetterRow1Extra1,
+  35: LetterRow1Extra2,
+  47: LetterRow2Extra1,
+  48: LetterRow2Extra2,
+  51: LetterRow2Extra3,
+  59: LetterRow3Extra1,
+  60: LetterRow3Extra2,
+  61: LetterRow3Extra3,
+  111: Up,
+  116: Down,
+  113: Left,
+  114: Right,
+  112: PageUp,
+  117: PageDown,
+  110: Home,
+  115: End,
+  118: Insert,
+  119: Delete,
+  107: PrintScreen,
+  78: ScrollLock,
+  127: Pause,
 }.toTable
 
 const MouseButtonTypeMap = {
@@ -41,17 +109,16 @@
 
 var deleteMessage*: Atom
 
-type
-  NativeWindow* = object
-    display*: ptr xlib.Display
-    window*: x11.Window
-    emptyCursor: Cursor
+type NativeWindow* = object
+  display*: ptr xlib.Display
+  window*: x11.Window
+  emptyCursor: Cursor
 
 template checkXlibResult(call: untyped) =
   let value = call
   if value == 0:
-    raise newException(Exception, "Xlib error: " & astToStr(call) &
-        " returned " & $value)
+    raise
+      newException(Exception, "Xlib error: " & astToStr(call) & " returned " & $value)
 
 proc XErrorLogger(display: PDisplay, event: PXErrorEvent): cint {.cdecl.} =
   logging.error &"Xlib: {event[]}"
@@ -75,18 +142,26 @@
   let window = XCreateWindow(
     display,
     rootWindow,
-    (attribs.width - cint(width)) div 2, (attribs.height - cint(height)) div 2,
-    width, height,
+    (attribs.width - cint(width)) div 2,
+    (attribs.height - cint(height)) div 2,
+    width,
+    height,
     0,
     CopyFromParent,
     InputOutput,
     cast[PVisual](CopyFromParent),
     0, # CWOverrideRedirect,
-    addr attrs,
-    # foregroundColor, backgroundColor
+    addr attrs, # foregroundColor, backgroundColor
+  )
+  checkXlibResult XSetStandardProperties(
+    display, window, title, "window", 0, nil, 0, nil
   )
-  checkXlibResult XSetStandardProperties(display, window, title, "window", 0, nil, 0, nil)
-  checkXlibResult XSelectInput(display, window, ButtonPressMask or ButtonReleaseMask or KeyPressMask or KeyReleaseMask or ExposureMask or FocusChangeMask)
+  checkXlibResult XSelectInput(
+    display,
+    window,
+    ButtonPressMask or ButtonReleaseMask or KeyPressMask or KeyReleaseMask or
+      ExposureMask or FocusChangeMask,
+  )
   checkXlibResult XMapWindow(display, window)
 
   deleteMessage = XInternAtom(display, "WM_DELETE_WINDOW", XBool(false))
@@ -95,32 +170,26 @@
   var data = "\0".cstring
   var pixmap = display.XCreateBitmapFromData(window, data, 1, 1)
   var color: XColor
-  var empty_cursor = display.XCreatePixmapCursor(pixmap, pixmap, addr(color), addr(color), 0, 0)
+  var empty_cursor =
+    display.XCreatePixmapCursor(pixmap, pixmap, addr(color), addr(color), 0, 0)
   checkXlibResult display.XFreePixmap(pixmap)
   return NativeWindow(display: display, window: window, emptyCursor: empty_cursor)
 
 proc setTitle*(window: NativeWindow, title: string) =
-  discard XSetStandardProperties(window.display, window.window, title, "window", 0, nil, 0, nil)
+  discard XSetStandardProperties(
+    window.display, window.window, title, "window", 0, nil, 0, nil
+  )
 
 proc setFullscreen*(window: var NativeWindow, enable: bool) =
   var
     wm_state = window.display.XInternAtom("_NET_WM_STATE", 0)
     wm_fullscreen = window.display.XInternAtom("_NET_WM_STATE_FULLSCREEN", 0)
-  var
-    xev: XEvent
+  var xev: XEvent
   xev.xclient = XClientMessageEvent(
     message_type: wm_state,
     format: 32,
     window: window.window,
-    data: XClientMessageData(
-      l: [
-        int(not enable) xor 1,
-        clong(wm_fullscreen),
-        0,
-        0,
-        0
-    ]
-  )
+    data: XClientMessageData(l: [int(not enable) xor 1, clong(wm_fullscreen), 0, 0, 0]),
   )
   xev.theType = ClientMessage
 
@@ -128,7 +197,7 @@
     window.display.DefaultRootWindow(),
     0,
     SubstructureRedirectMask or SubstructureNotifyMask,
-    addr xev
+    addr xev,
   )
   checkXlibResult window.display.XFlush()
 
@@ -161,11 +230,15 @@
     of KeyPress:
       let keyevent = cast[PXKeyEvent](addr(event))
       let xkey = int(keyevent.keycode)
-      result.add Event(eventType: KeyPressed, key: KeyTypeMap.getOrDefault(xkey, Key.UNKNOWN))
+      result.add Event(
+        eventType: KeyPressed, key: KeyTypeMap.getOrDefault(xkey, Key.UNKNOWN)
+      )
     of KeyRelease:
       let keyevent = cast[PXKeyEvent](addr(event))
       let xkey = int(keyevent.keycode)
-      result.add Event(eventType: KeyReleased, key: KeyTypeMap.getOrDefault(xkey, Key.UNKNOWN))
+      result.add Event(
+        eventType: KeyReleased, key: KeyTypeMap.getOrDefault(xkey, Key.UNKNOWN)
+      )
     of ButtonPress:
       let button = int(cast[PXButtonEvent](addr(event)).button)
       if button == Button4:
@@ -173,10 +246,16 @@
       elif button == Button5:
         result.add Event(eventType: MouseWheel, amount: -1'f32)
       else:
-        result.add Event(eventType: MousePressed, button: MouseButtonTypeMap.getOrDefault(button, MouseButton.UNKNOWN))
+        result.add Event(
+          eventType: MousePressed,
+          button: MouseButtonTypeMap.getOrDefault(button, MouseButton.UNKNOWN),
+        )
     of ButtonRelease:
       let button = int(cast[PXButtonEvent](addr(event)).button)
-      result.add Event(eventType: MouseReleased, button: MouseButtonTypeMap.getOrDefault(button, MouseButton.UNKNOWN))
+      result.add Event(
+        eventType: MouseReleased,
+        button: MouseButtonTypeMap.getOrDefault(button, MouseButton.UNKNOWN),
+      )
     of FocusIn:
       result.add Event(eventType: GotFocus)
     of FocusOut:
@@ -186,7 +265,6 @@
     else:
       discard
 
-
 proc getMousePosition*(window: NativeWindow): Vec2i =
   var
     root: x11.Window
@@ -214,7 +292,10 @@
     window.display,
     default(x11.Window),
     window.window,
-    0, 0, 0, 0,
+    0,
+    0,
+    0,
+    0,
     pos.x.cint,
     pos.y.cint,
   )
@@ -225,4 +306,6 @@
     dpy: cast[ptr api.Display](window.display),
     window: cast[api.Window](window.window),
   )
-  checkVkResult vkCreateXlibSurfaceKHR(instance, addr(surfaceCreateInfo), nil, addr(result))
+  checkVkResult vkCreateXlibSurfaceKHR(
+    instance, addr(surfaceCreateInfo), nil, addr(result)
+  )
--- a/semicongine/rendering/platform/windows.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/rendering/platform/windows.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -11,38 +11,97 @@
 const REQUIRED_PLATFORM_EXTENSIONS = @["VK_KHR_win32_surface"]
 
 const KeyTypeMap* = {
-  VK_ESCAPE: Key.Escape, VK_F1: F1, VK_F2: F2, VK_F3: F3, VK_F4: F4, VK_F5: F5,
-  VK_F6: F6, VK_F7: F7, VK_F8: F8, VK_F9: F9, VK_F10: F10, VK_F11: F11,
+  VK_ESCAPE: Key.Escape,
+  VK_F1: F1,
+  VK_F2: F2,
+  VK_F3: F3,
+  VK_F4: F4,
+  VK_F5: F5,
+  VK_F6: F6,
+  VK_F7: F7,
+  VK_F8: F8,
+  VK_F9: F9,
+  VK_F10: F10,
+  VK_F11: F11,
   VK_F12: F12,
-  VK_OEM_3: NumberRowExtra1, int('0'): `0`, int('1'): `1`, int('2'): `2`, int(
-      '3'): `3`, int('4'): `4`, int('5'): `5`, int('6'): `6`, int('7'): `7`,
-      int('8'): `8`, int('9'): `9`, VK_OEM_MINUS: NumberRowExtra2,
-      VK_OEM_PLUS: NumberRowExtra3,
-  int('A'): A, int('B'): B, int('C'): C, int('D'): D, int('E'): E, int('F'): F,
-      int('G'): G, int('H'): H, int('I'): I, int('J'): J, int('K'): K, int(
-      'L'): L, int('M'): M, int('N'): N, int('O'): O, int('P'): P, int('Q'): Q,
-      int('R'): R, int('S'): S, int('T'): T, int('U'): U, int('V'): V, int(
-      'W'): W, int('X'): X, int('Y'): Y, int('Z'): Z,
-  VK_TAB: Tab, VK_CAPITAL: CapsLock, VK_LSHIFT: ShiftL, VK_SHIFT: ShiftL,
-      VK_RSHIFT: ShiftR, VK_LCONTROL: CtrlL, VK_CONTROL: CtrlL,
-      VK_RCONTROL: CtrlR, VK_LWIN: SuperL, VK_RWIN: SuperR, VK_LMENU: AltL,
-      VK_RMENU: AltR, VK_SPACE: Space, VK_RETURN: Enter, VK_BACK: Backspace,
-  VK_OEM_4: LetterRow1Extra1, VK_OEM_6: LetterRow1Extra2,
-      VK_OEM_5: LetterRow2Extra3,
-  VK_OEM_1: LetterRow2Extra1, VK_OEM_7: LetterRow2Extra2,
-  VK_OEM_COMMA: LetterRow3Extra1, VK_OEM_PERIOD: LetterRow3Extra2,
-      VK_OEM_2: LetterRow3Extra3,
-    VK_UP: Up, VK_DOWN: Down, VK_LEFT: Left, VK_RIGHT: Right,
-    VK_PRIOR: PageUp, VK_NEXT: PageDown, VK_HOME: Home, VK_END: End,
-        VK_INSERT: Insert, VK_DELETE: Key.Delete,
+  VK_OEM_3: NumberRowExtra1,
+  int('0'): `0`,
+  int('1'): `1`,
+  int('2'): `2`,
+  int('3'): `3`,
+  int('4'): `4`,
+  int('5'): `5`,
+  int('6'): `6`,
+  int('7'): `7`,
+  int('8'): `8`,
+  int('9'): `9`,
+  VK_OEM_MINUS: NumberRowExtra2,
+  VK_OEM_PLUS: NumberRowExtra3,
+  int('A'): A,
+  int('B'): B,
+  int('C'): C,
+  int('D'): D,
+  int('E'): E,
+  int('F'): F,
+  int('G'): G,
+  int('H'): H,
+  int('I'): I,
+  int('J'): J,
+  int('K'): K,
+  int('L'): L,
+  int('M'): M,
+  int('N'): N,
+  int('O'): O,
+  int('P'): P,
+  int('Q'): Q,
+  int('R'): R,
+  int('S'): S,
+  int('T'): T,
+  int('U'): U,
+  int('V'): V,
+  int('W'): W,
+  int('X'): X,
+  int('Y'): Y,
+  int('Z'): Z,
+  VK_TAB: Tab,
+  VK_CAPITAL: CapsLock,
+  VK_LSHIFT: ShiftL,
+  VK_SHIFT: ShiftL,
+  VK_RSHIFT: ShiftR,
+  VK_LCONTROL: CtrlL,
+  VK_CONTROL: CtrlL,
+  VK_RCONTROL: CtrlR,
+  VK_LWIN: SuperL,
+  VK_RWIN: SuperR,
+  VK_LMENU: AltL,
+  VK_RMENU: AltR,
+  VK_SPACE: Space,
+  VK_RETURN: Enter,
+  VK_BACK: Backspace,
+  VK_OEM_4: LetterRow1Extra1,
+  VK_OEM_6: LetterRow1Extra2,
+  VK_OEM_5: LetterRow2Extra3,
+  VK_OEM_1: LetterRow2Extra1,
+  VK_OEM_7: LetterRow2Extra2,
+  VK_OEM_COMMA: LetterRow3Extra1,
+  VK_OEM_PERIOD: LetterRow3Extra2,
+  VK_OEM_2: LetterRow3Extra3,
+  VK_UP: Up,
+  VK_DOWN: Down,
+  VK_LEFT: Left,
+  VK_RIGHT: Right,
+  VK_PRIOR: PageUp,
+  VK_NEXT: PageDown,
+  VK_HOME: Home,
+  VK_END: End,
+  VK_INSERT: Insert,
+  VK_DELETE: Key.Delete,
 }.toTable
 
-type
-  NativeWindow* = object
-    hinstance*: HINSTANCE
-    hwnd*: HWND
-    g_wpPrev: WINDOWPLACEMENT
-
+type NativeWindow* = object
+  hinstance*: HINSTANCE
+  hwnd*: HWND
+  g_wpPrev: WINDOWPLACEMENT
 
 # sorry, have to use module-global variable to capture windows events
 var currentEvents: seq[Event]
@@ -50,12 +109,15 @@
 template checkWin32Result*(call: untyped) =
   let value = call
   if value == 0:
-    raise newException(Exception, "Win32 error: " & astToStr(call) & " returned " & $value)
+    raise
+      newException(Exception, "Win32 error: " & astToStr(call) & " returned " & $value)
 
 let
   andCursorMask = [0xff]
   xorCursorMask = [0x00]
-  invisibleCursor = CreateCursor(0, 0, 0, 1, 1, pointer(addr andCursorMask), pointer(addr xorCursorMask))
+  invisibleCursor = CreateCursor(
+    0, 0, 0, 1, 1, pointer(addr andCursorMask), pointer(addr xorCursorMask)
+  )
   defaultCursor = LoadCursor(0, IDC_ARROW)
 var currentCursor = defaultCursor
 
@@ -70,16 +132,22 @@
   else:
     key
 
-proc windowHandler(hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.stdcall.} =
+proc windowHandler(
+    hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.stdcall.} =
   case uMsg
   of WM_DESTROY:
     currentEvents.add(Event(eventType: events.EventType.Quit))
   of WM_KEYDOWN, WM_SYSKEYDOWN:
     let key = mapLeftRightKeys(INT(wParam), lParam)
-    currentEvents.add(Event(eventType: KeyPressed, key: KeyTypeMap.getOrDefault(key, Key.UNKNOWN)))
+    currentEvents.add(
+      Event(eventType: KeyPressed, key: KeyTypeMap.getOrDefault(key, Key.UNKNOWN))
+    )
   of WM_KEYUP, WM_SYSKEYUP:
     let key = mapLeftRightKeys(INT(wParam), lParam)
-    currentEvents.add(Event(eventType: KeyReleased, key: KeyTypeMap.getOrDefault(key, Key.UNKNOWN)))
+    currentEvents.add(
+      Event(eventType: KeyReleased, key: KeyTypeMap.getOrDefault(key, Key.UNKNOWN))
+    )
   of WM_LBUTTONDOWN:
     currentEvents.add(Event(eventType: MousePressed, button: MouseButton.Mouse1))
   of WM_LBUTTONUP:
@@ -93,7 +161,12 @@
   of WM_RBUTTONUP:
     currentEvents.add(Event(eventType: MouseReleased, button: MouseButton.Mouse3))
   of WM_MOUSEWHEEL:
-    currentEvents.add(Event(eventType: MouseWheel, amount: float32(GET_WHEEL_DELTA_WPARAM(wParam)) / WHEEL_DELTA))
+    currentEvents.add(
+      Event(
+        eventType: MouseWheel,
+        amount: float32(GET_WHEEL_DELTA_WPARAM(wParam)) / WHEEL_DELTA,
+      )
+    )
   of WM_SIZING:
     currentEvents.add(Event(eventType: ResizedWindow))
   of WM_SIZE:
@@ -114,7 +187,6 @@
   else:
     return DefWindowProc(hwnd, uMsg, wParam, lParam)
 
-
 proc createWindow*(title: string): NativeWindow =
   when not defined(release):
     AllocConsole()
@@ -131,23 +203,26 @@
       lpfnWndProc: windowHandler,
       hInstance: result.hInstance,
       lpszClassName: windowClassName,
-       hcursor: currentCursor,
+      hcursor: currentCursor,
     )
 
-  if(RegisterClassEx(addr(windowClass)) == 0):
+  if (RegisterClassEx(addr(windowClass)) == 0):
     raise newException(Exception, "Unable to register window class")
 
   result.hwnd = CreateWindowEx(
-      DWORD(0),
-      windowClassName,
-      windowName,
-      DWORD(WS_OVERLAPPEDWINDOW),
-      CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
-      HMENU(0),
-      HINSTANCE(0),
-      result.hInstance,
-      nil
-    )
+    DWORD(0),
+    windowClassName,
+    windowName,
+    DWORD(WS_OVERLAPPEDWINDOW),
+    CW_USEDEFAULT,
+    CW_USEDEFAULT,
+    CW_USEDEFAULT,
+    CW_USEDEFAULT,
+    HMENU(0),
+    HINSTANCE(0),
+    result.hInstance,
+    nil,
+  )
 
   result.g_wpPrev.length = UINT(sizeof(WINDOWPLACEMENT))
   discard result.hwnd.ShowWindow(SW_SHOW)
@@ -163,13 +238,32 @@
   let dwStyle: DWORD = GetWindowLong(window.hwnd, GWL_STYLE)
   if enable:
     var mi = MONITORINFO(cbSize: DWORD(sizeof(MONITORINFO)))
-    if GetWindowPlacement(window.hwnd, addr window.g_wpPrev) and GetMonitorInfo(MonitorFromWindow(window.hwnd, MONITOR_DEFAULTTOPRIMARY), addr mi):
+    if GetWindowPlacement(window.hwnd, addr window.g_wpPrev) and
+        GetMonitorInfo(
+          MonitorFromWindow(window.hwnd, MONITOR_DEFAULTTOPRIMARY), addr mi
+        ):
       SetWindowLong(window.hwnd, GWL_STYLE, dwStyle and (not WS_OVERLAPPEDWINDOW))
-      SetWindowPos(window.hwnd, HWND_TOP, mi.rcMonitor.left, mi.rcMonitor.top, mi.rcMonitor.right - mi.rcMonitor.left, mi.rcMonitor.bottom - mi.rcMonitor.top, SWP_NOOWNERZORDER or SWP_FRAMECHANGED)
+      SetWindowPos(
+        window.hwnd,
+        HWND_TOP,
+        mi.rcMonitor.left,
+        mi.rcMonitor.top,
+        mi.rcMonitor.right - mi.rcMonitor.left,
+        mi.rcMonitor.bottom - mi.rcMonitor.top,
+        SWP_NOOWNERZORDER or SWP_FRAMECHANGED,
+      )
   else:
     SetWindowLong(window.hwnd, GWL_STYLE, dwStyle or WS_OVERLAPPEDWINDOW)
     SetWindowPlacement(window.hwnd, addr window.g_wpPrev)
-    SetWindowPos(window.hwnd, HWND(0), 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER or SWP_NOOWNERZORDER or SWP_FRAMECHANGED)
+    SetWindowPos(
+      window.hwnd,
+      HWND(0),
+      0,
+      0,
+      0,
+      0,
+      SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER or SWP_NOOWNERZORDER or SWP_FRAMECHANGED,
+    )
 
 proc showSystemCursor*(window: NativeWindow, value: bool) =
   if value == true:
@@ -215,4 +309,6 @@
     hinstance: cast[HINSTANCE](window.hinstance),
     hwnd: cast[HWND](window.hwnd),
   )
-  checkVkResult vkCreateWin32SurfaceKHR(instance, addr(surfaceCreateInfo), nil, addr(result))
+  checkVkResult vkCreateWin32SurfaceKHR(
+    instance, addr(surfaceCreateInfo), nil, addr(result)
+  )
--- a/semicongine/rendering/renderer.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/rendering/renderer.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -2,19 +2,29 @@
   cast[pointer](cast[T](p) + offset)
 
 func usage(bType: BufferType): seq[VkBufferUsageFlagBits] =
-  case bType:
-    of VertexBuffer: @[VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_BUFFER_USAGE_TRANSFER_DST_BIT]
-    of VertexBufferMapped: @[VK_BUFFER_USAGE_VERTEX_BUFFER_BIT]
-    of IndexBuffer: @[VK_BUFFER_USAGE_INDEX_BUFFER_BIT, VK_BUFFER_USAGE_TRANSFER_DST_BIT]
-    of IndexBufferMapped: @[VK_BUFFER_USAGE_INDEX_BUFFER_BIT]
-    of UniformBuffer: @[VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_BUFFER_USAGE_TRANSFER_DST_BIT]
-    of UniformBufferMapped: @[VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT]
+  case bType
+  of VertexBuffer:
+    @[VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_BUFFER_USAGE_TRANSFER_DST_BIT]
+  of VertexBufferMapped:
+    @[VK_BUFFER_USAGE_VERTEX_BUFFER_BIT]
+  of IndexBuffer:
+    @[VK_BUFFER_USAGE_INDEX_BUFFER_BIT, VK_BUFFER_USAGE_TRANSFER_DST_BIT]
+  of IndexBufferMapped:
+    @[VK_BUFFER_USAGE_INDEX_BUFFER_BIT]
+  of UniformBuffer:
+    @[VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_BUFFER_USAGE_TRANSFER_DST_BIT]
+  of UniformBufferMapped:
+    @[VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT]
 
 proc getVkFormat(grayscale: bool, usage: openArray[VkImageUsageFlagBits]): VkFormat =
-  let formats = if grayscale: [VK_FORMAT_R8_SRGB, VK_FORMAT_R8_UNORM]
-                else: [VK_FORMAT_B8G8R8A8_SRGB, VK_FORMAT_B8G8R8A8_UNORM]
+  let formats =
+    if grayscale:
+      [VK_FORMAT_R8_SRGB, VK_FORMAT_R8_UNORM]
+    else:
+      [VK_FORMAT_B8G8R8A8_SRGB, VK_FORMAT_B8G8R8A8_UNORM]
 
-  var formatProperties = VkImageFormatProperties2(sType: VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2)
+  var formatProperties =
+    VkImageFormatProperties2(sType: VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2)
   for format in formats:
     var formatInfo = VkPhysicalDeviceImageFormatInfo2(
       sType: VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
@@ -24,9 +34,7 @@
       usage: usage.toBits,
     )
     let formatCheck = vkGetPhysicalDeviceImageFormatProperties2(
-      vulkan.physicalDevice,
-      addr formatInfo,
-      addr formatProperties,
+      vulkan.physicalDevice, addr formatInfo, addr formatProperties
     )
     if formatCheck == VK_SUCCESS: # found suitable format
       return format
@@ -37,7 +45,6 @@
 
   assert false, "Unable to find format for textures"
 
-
 func alignedTo[T: SomeInteger](value: T, alignment: T): T =
   let remainder = value mod alignment
   if remainder == 0:
@@ -47,20 +54,25 @@
 
 template bufferType(gpuData: GPUData): untyped =
   typeof(gpuData).TBuffer
+
 func needsMapping(bType: BufferType): bool =
   bType in [VertexBufferMapped, IndexBufferMapped, UniformBufferMapped]
 template needsMapping(gpuData: GPUData): untyped =
   gpuData.bufferType.needsMapping
 
-template size(gpuArray: GPUArray, count=0'u64): uint64 =
-  (if count == 0: gpuArray.data.len.uint64 else: count).uint64 * sizeof(elementType(gpuArray.data)).uint64
+template size(gpuArray: GPUArray, count = 0'u64): uint64 =
+  (if count == 0: gpuArray.data.len.uint64 else: count).uint64 *
+    sizeof(elementType(gpuArray.data)).uint64
+
 template size(gpuValue: GPUValue): uint64 =
   sizeof(gpuValue.data).uint64
+
 func size(image: ImageObject): uint64 =
   image.data.len.uint64 * sizeof(elementType(image.data)).uint64
 
 template rawPointer(gpuArray: GPUArray): pointer =
   addr(gpuArray.data[0])
+
 template rawPointer(gpuValue: GPUValue): pointer =
   addr(gpuValue.data)
 
@@ -71,11 +83,10 @@
   return VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT in flags
 
 proc initDescriptorSet*(
-  renderData: RenderData,
-  layout: VkDescriptorSetLayout,
-  descriptorSet: DescriptorSetData,
+    renderData: RenderData,
+    layout: VkDescriptorSetLayout,
+    descriptorSet: DescriptorSetData,
 ) =
-
   # santization checks
   for theName, value in descriptorSet.data.fieldPairs:
     when typeof(value) is GPUValue:
@@ -106,7 +117,9 @@
     descriptorSetCount: uint32(layouts.len),
     pSetLayouts: layouts.ToCPointer,
   )
-  checkVkResult vkAllocateDescriptorSets(vulkan.device, addr(allocInfo), descriptorSet.vk.ToCPointer)
+  checkVkResult vkAllocateDescriptorSets(
+    vulkan.device, addr(allocInfo), descriptorSet.vk.ToCPointer
+  )
 
   # allocate seq with high cap to prevent realocation while adding to set
   # (which invalidates pointers that are passed to the vulkan api call)
@@ -114,7 +127,10 @@
   var imageWrites = newSeqOfCap[VkDescriptorImageInfo](1024)
   var bufferWrites = newSeqOfCap[VkDescriptorBufferInfo](1024)
 
-  forDescriptorFields(descriptorSet.data, fieldValue, descriptorType, descriptorCount, descriptorBindingNumber):
+  forDescriptorFields(
+    descriptorSet.data, fieldValue, descriptorType, descriptorCount,
+    descriptorBindingNumber,
+  ):
     for i in 0 ..< descriptorSet.vk.len:
       when typeof(fieldValue) is GPUValue:
         bufferWrites.add VkDescriptorBufferInfo(
@@ -169,9 +185,7 @@
         elif elementType(fieldValue) is GPUValue:
           for entry in fieldValue.litems:
             bufferWrites.add VkDescriptorBufferInfo(
-              buffer: entry.buffer.vk,
-              offset: entry.offset,
-              range: entry.size,
+              buffer: entry.buffer.vk, offset: entry.offset, range: entry.size
             )
           descriptorSetWrites.add VkWriteDescriptorSet(
             sType: VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
@@ -184,9 +198,13 @@
             pBufferInfo: addr(bufferWrites[^descriptorCount.int]),
           )
         else:
-          {.error: "Unsupported descriptor type: " & typetraits.name(typeof(fieldValue)).}
+          {.
+            error: "Unsupported descriptor type: " & typetraits.name(typeof(fieldValue))
+          .}
       else:
-        {.error: "Unsupported descriptor type: " & typetraits.name(typeof(fieldValue)).}
+        {.
+          error: "Unsupported descriptor type: " & typetraits.name(typeof(fieldValue))
+        .}
 
   vkUpdateDescriptorSets(
     device = vulkan.device,
@@ -198,10 +216,7 @@
 
 proc allocateNewMemoryBlock(size: uint64, mType: uint32): MemoryBlock =
   result = MemoryBlock(
-    vk: svkAllocateMemory(size, mType),
-    size: size,
-    rawPointer: nil,
-    offsetNextFree: 0,
+    vk: svkAllocateMemory(size, mType), size: size, rawPointer: nil, offsetNextFree: 0
   )
   if mType.isMappable():
     checkVkResult vkMapMemory(
@@ -210,7 +225,7 @@
       offset = 0'u64,
       size = result.size,
       flags = VkMemoryMapFlags(0),
-      ppData = addr(result.rawPointer)
+      ppData = addr(result.rawPointer),
     )
 
 proc flushBuffer*(buffer: Buffer) =
@@ -230,12 +245,19 @@
         flushRegions.add VkMappedMemoryRange(
           sType: VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
           memory: memoryBlock.vk,
-          size: alignedTo(memoryBlock.offsetNextFree, svkGetPhysicalDeviceProperties().limits.nonCoherentAtomSize),
+          size: alignedTo(
+            memoryBlock.offsetNextFree,
+            svkGetPhysicalDeviceProperties().limits.nonCoherentAtomSize,
+          ),
         )
   if flushRegions.len > 0:
-    checkVkResult vkFlushMappedMemoryRanges(vulkan.device, flushRegions.len.uint32, flushRegions.ToCPointer())
+    checkVkResult vkFlushMappedMemoryRanges(
+      vulkan.device, flushRegions.len.uint32, flushRegions.ToCPointer()
+    )
 
-proc allocateNewBuffer(renderData: var RenderData, size: uint64, bufferType: BufferType): Buffer =
+proc allocateNewBuffer(
+    renderData: var RenderData, size: uint64, bufferType: BufferType
+): Buffer =
   result = Buffer(
     vk: svkCreateBuffer(size, bufferType.usage),
     size: size,
@@ -243,12 +265,17 @@
     offsetNextFree: 0,
   )
   let memoryRequirements = svkGetBufferMemoryRequirements(result.vk)
-  let memoryType = bestMemory(mappable = bufferType.needsMapping, filter = memoryRequirements.memoryTypes)
+  let memoryType = bestMemory(
+    mappable = bufferType.needsMapping, filter = memoryRequirements.memoryTypes
+  )
 
   # check if there is an existing allocated memory block that is large enough to be used
   var selectedBlockI = -1
   for i in 0 ..< renderData.memory[memoryType].len:
-    if renderData.memory[memoryType][i].size - alignedTo(renderData.memory[memoryType][i].offsetNextFree, memoryRequirements.alignment) >= memoryRequirements.size:
+    if renderData.memory[memoryType][i].size -
+        alignedTo(
+          renderData.memory[memoryType][i].offsetNextFree, memoryRequirements.alignment
+        ) >= memoryRequirements.size:
       selectedBlockI = i
       break
   # otherwise, allocate a new block of memory and use that
@@ -256,35 +283,41 @@
     selectedBlockI = renderData.memory[memoryType].len
     renderData.memory[memoryType].add allocateNewMemoryBlock(
       size = max(memoryRequirements.size, MEMORY_BLOCK_ALLOCATION_SIZE),
-      mType = memoryType
+      mType = memoryType,
     )
 
-  template selectedBlock(): untyped = renderData.memory[memoryType][selectedBlockI]
+  template selectedBlock(): untyped =
+    renderData.memory[memoryType][selectedBlockI]
+
   # let selectedBlock = 
-  renderData.memory[memoryType][selectedBlockI].offsetNextFree = alignedTo(
-    selectedBlock.offsetNextFree,
-    memoryRequirements.alignment,
-  )
+  renderData.memory[memoryType][selectedBlockI].offsetNextFree =
+    alignedTo(selectedBlock.offsetNextFree, memoryRequirements.alignment)
   checkVkResult vkBindBufferMemory(
-    vulkan.device,
-    result.vk,
-    selectedBlock.vk,
-    selectedBlock.offsetNextFree,
+    vulkan.device, result.vk, selectedBlock.vk, selectedBlock.offsetNextFree
   )
   result.memory = selectedBlock.vk
   result.memoryOffset = selectedBlock.offsetNextFree
-  result.rawPointer = selectedBlock.rawPointer.pointerAddOffset(selectedBlock.offsetNextFree)
+  result.rawPointer =
+    selectedBlock.rawPointer.pointerAddOffset(selectedBlock.offsetNextFree)
   renderData.memory[memoryType][selectedBlockI].offsetNextFree += memoryRequirements.size
 
-proc updateGPUBuffer*(gpuData: GPUData, count=0'u64, flush = false) =
+proc updateGPUBuffer*(gpuData: GPUData, count = 0'u64, flush = false) =
   if gpuData.size() == 0:
     return
 
   when needsMapping(gpuData):
     when gpuData is GPUArray:
-      copyMem(pointerAddOffset(gpuData.buffer.rawPointer, gpuData.offset), gpuData.rawPointer, gpuData.size(count))
+      copyMem(
+        pointerAddOffset(gpuData.buffer.rawPointer, gpuData.offset),
+        gpuData.rawPointer,
+        gpuData.size(count),
+      )
     else:
-      copyMem(pointerAddOffset(gpuData.buffer.rawPointer, gpuData.offset), gpuData.rawPointer, gpuData.size())
+      copyMem(
+        pointerAddOffset(gpuData.buffer.rawPointer, gpuData.offset),
+        gpuData.rawPointer,
+        gpuData.size(),
+      )
     if flush:
       flushBuffer(gpuData.buffer)
   else:
@@ -304,11 +337,8 @@
           updateGPUBuffer(entry, flush = flush)
 
 proc allocateGPUData(
-  renderdata: var RenderData,
-  bufferType: BufferType,
-  size: uint64,
+    renderdata: var RenderData, bufferType: BufferType, size: uint64
 ): (Buffer, uint64) =
-
   # find buffer that has space
   var selectedBufferI = -1
 
@@ -321,16 +351,13 @@
   if selectedBufferI < 0:
     selectedBufferI = renderdata.buffers[bufferType].len
     renderdata.buffers[bufferType].add renderdata.allocateNewBuffer(
-      size = max(size, BUFFER_ALLOCATION_SIZE),
-      bufferType = bufferType,
+      size = max(size, BUFFER_ALLOCATION_SIZE), bufferType = bufferType
     )
 
   # assigne value
   let selectedBuffer = renderdata.buffers[bufferType][selectedBufferI]
-  renderdata.buffers[bufferType][selectedBufferI].offsetNextFree = alignedTo(
-    selectedBuffer.offsetNextFree,
-    BUFFER_ALIGNMENT
-  )
+  renderdata.buffers[bufferType][selectedBufferI].offsetNextFree =
+    alignedTo(selectedBuffer.offsetNextFree, BUFFER_ALIGNMENT)
 
   result[0] = selectedBuffer
   result[1] = renderdata.buffers[bufferType][selectedBufferI].offsetNextFree
@@ -338,13 +365,11 @@
 
 proc assignBuffers*[T](renderdata: var RenderData, data: var T, uploadData = true) =
   for name, value in fieldPairs(data):
-
     when typeof(value) is GPUData:
-      (value.buffer, value.offset) = allocateGPUData(renderdata, value.bufferType, value.size)
-
+      (value.buffer, value.offset) =
+        allocateGPUData(renderdata, value.bufferType, value.size)
     elif typeof(value) is DescriptorSetData:
       assignBuffers(renderdata, value.data, uploadData = uploadData)
-
     elif typeof(value) is array:
       when elementType(value) is GPUValue:
         for v in value.mitems:
@@ -353,15 +378,22 @@
   if uploadData:
     updateAllGPUBuffers(data, flush = true)
 
-proc assignBuffers*(renderdata: var RenderData, descriptorSet: var DescriptorSetData, uploadData = true) =
+proc assignBuffers*(
+    renderdata: var RenderData, descriptorSet: var DescriptorSetData, uploadData = true
+) =
   assignBuffers(renderdata, descriptorSet.data, uploadData = uploadData)
 
 proc initRenderData*(descriptorPoolLimit = 1024'u32): RenderData =
   result = RenderData()
   # allocate descriptor pools
   var poolSizes = [
-    VkDescriptorPoolSize(thetype: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, descriptorCount: descriptorPoolLimit),
-    VkDescriptorPoolSize(thetype: VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, descriptorCount: descriptorPoolLimit),
+    VkDescriptorPoolSize(
+      thetype: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
+      descriptorCount: descriptorPoolLimit,
+    ),
+    VkDescriptorPoolSize(
+      thetype: VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, descriptorCount: descriptorPoolLimit
+    ),
   ]
   var poolInfo = VkDescriptorPoolCreateInfo(
     sType: VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
@@ -369,7 +401,9 @@
     pPoolSizes: poolSizes.ToCPointer,
     maxSets: descriptorPoolLimit,
   )
-  checkVkResult vkCreateDescriptorPool(vulkan.device, addr(poolInfo), nil, addr(result.descriptorPool))
+  checkVkResult vkCreateDescriptorPool(
+    vulkan.device, addr(poolInfo), nil, addr(result.descriptorPool)
+  )
 
 proc destroyRenderData*(renderData: RenderData) =
   vkDestroyDescriptorPool(vulkan.device, renderData.descriptorPool, nil)
@@ -411,12 +445,14 @@
     srcStage: VkPipelineStageFlagBits
     dstStage: VkPipelineStageFlagBits
 
-  if oldLayout == VK_IMAGE_LAYOUT_UNDEFINED and newLayout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
+  if oldLayout == VK_IMAGE_LAYOUT_UNDEFINED and
+      newLayout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
     srcStage = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
     barrier.srcAccessMask = VkAccessFlags(0)
     dstStage = VK_PIPELINE_STAGE_TRANSFER_BIT
     barrier.dstAccessMask = [VK_ACCESS_TRANSFER_WRITE_BIT].toBits
-  elif oldLayout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL and newLayout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
+  elif oldLayout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL and
+      newLayout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
     srcStage = VK_PIPELINE_STAGE_TRANSFER_BIT
     barrier.srcAccessMask = [VK_ACCESS_TRANSFER_WRITE_BIT].toBits
     dstStage = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
@@ -439,12 +475,11 @@
     )
 
 proc createSampler(
-  magFilter = VK_FILTER_LINEAR,
-  minFilter = VK_FILTER_LINEAR,
-  addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT,
-  addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT,
+    magFilter = VK_FILTER_LINEAR,
+    minFilter = VK_FILTER_LINEAR,
+    addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT,
+    addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT,
 ): VkSampler =
-
   let samplerInfo = VkSamplerCreateInfo(
     sType: VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
     magFilter: magFilter,
@@ -472,7 +507,9 @@
     usage.add VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
   let format = getVkFormat(grayscale = elementType(image.data) is Gray, usage = usage)
 
-  image.vk = svkCreate2DImage(image.width, image.height, format, usage, image.samples, image.nLayers)
+  image.vk = svkCreate2DImage(
+    image.width, image.height, format, usage, image.samples, image.nLayers
+  )
   renderData.images.add image.vk
   image.sampler = createSampler(
     magFilter = image.magInterpolation,
@@ -487,7 +524,10 @@
   # check if there is an existing allocated memory block that is large enough to be used
   var selectedBlockI = -1
   for i in 0 ..< renderData.memory[memoryType].len:
-    if renderData.memory[memoryType][i].size - alignedTo(renderData.memory[memoryType][i].offsetNextFree, memoryRequirements.alignment) >= memoryRequirements.size:
+    if renderData.memory[memoryType][i].size -
+        alignedTo(
+          renderData.memory[memoryType][i].offsetNextFree, memoryRequirements.alignment
+        ) >= memoryRequirements.size:
       selectedBlockI = i
       break
   # otherwise, allocate a new block of memory and use that
@@ -495,13 +535,13 @@
     selectedBlockI = renderData.memory[memoryType].len
     renderData.memory[memoryType].add allocateNewMemoryBlock(
       size = max(memoryRequirements.size, MEMORY_BLOCK_ALLOCATION_SIZE),
-      mType = memoryType
+      mType = memoryType,
     )
-  template selectedBlock(): untyped = renderData.memory[memoryType][selectedBlockI]
-  renderData.memory[memoryType][selectedBlockI].offsetNextFree = alignedTo(
-    selectedBlock.offsetNextFree,
-    memoryRequirements.alignment,
-  )
+  template selectedBlock(): untyped =
+    renderData.memory[memoryType][selectedBlockI]
+
+  renderData.memory[memoryType][selectedBlockI].offsetNextFree =
+    alignedTo(selectedBlock.offsetNextFree, memoryRequirements.alignment)
 
   checkVkResult vkBindImageMemory(
     vulkan.device,
@@ -512,20 +552,22 @@
   renderData.memory[memoryType][selectedBlockI].offsetNextFree += memoryRequirements.size
 
   # imageview can only be created after memory is bound
-  image.imageview = svkCreate2DImageView(image.vk, format, nLayers=image.nLayers)
+  image.imageview = svkCreate2DImageView(image.vk, format, nLayers = image.nLayers)
   renderData.imageViews.add image.imageview
 
   # data transfer and layout transition
-  transitionImageLayout(image.vk, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL)
+  transitionImageLayout(
+    image.vk, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
+  )
   if image.data.len > 0:
     withStagingBuffer(
-      (image.vk, image.width, image.height),
-      memoryRequirements.size,
-      stagingPtr
+      (image.vk, image.width, image.height), memoryRequirements.size, stagingPtr
     ):
       copyMem(stagingPtr, image.data.ToCPointer, image.size)
-  transitionImageLayout(image.vk, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)
-
+  transitionImageLayout(
+    image.vk, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+    VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
+  )
 
 proc uploadImages*(renderdata: var RenderData, descriptorSet: var DescriptorSetData) =
   for name, value in fieldPairs(descriptorSet.data):
@@ -538,17 +580,29 @@
 
 type EMPTY = object # only used for static assertions
 
-proc assertCompatibleDescriptorSet(TDescriptorSet, TShader: typedesc, index: static DescriptorSetIndex) =
+proc assertCompatibleDescriptorSet(
+    TDescriptorSet, TShader: typedesc, index: static DescriptorSetIndex
+) =
   for _, fieldvalue in default(TShader).fieldPairs:
     when fieldvalue.hasCustomPragma(DescriptorSet):
       when fieldvalue.getCustomPragmaVal(DescriptorSet) == index:
-        assert TDescriptorSet is typeof(fieldvalue), "Incompatible descriptor set types for set number " & $index & " in shader " & name(TShader)
-
+        assert TDescriptorSet is typeof(fieldvalue),
+          "Incompatible descriptor set types for set number " & $index & " in shader " &
+            name(TShader)
 
-proc bindDescriptorSet*[TDescriptorSet, TShader](commandBuffer: VkCommandBuffer, descriptorSet: DescriptorSetData[TDescriptorSet], index: static DescriptorSetIndex, pipeline: Pipeline[TShader]) =
-  assert descriptorSet.vk[currentFiF()].Valid, "DescriptorSetData not initialized, maybe forgot to call initDescriptorSet"
-  static: assertCompatibleDescriptorSet(TDescriptorSet, TShader, index)
-  svkCmdBindDescriptorSet(commandBuffer, descriptorSet.vk[currentFiF()], index, pipeline.layout)
+proc bindDescriptorSet*[TDescriptorSet, TShader](
+    commandBuffer: VkCommandBuffer,
+    descriptorSet: DescriptorSetData[TDescriptorSet],
+    index: static DescriptorSetIndex,
+    pipeline: Pipeline[TShader],
+) =
+  assert descriptorSet.vk[currentFiF()].Valid,
+    "DescriptorSetData not initialized, maybe forgot to call initDescriptorSet"
+  static:
+    assertCompatibleDescriptorSet(TDescriptorSet, TShader, index)
+  svkCmdBindDescriptorSet(
+    commandBuffer, descriptorSet.vk[currentFiF()], index, pipeline.layout
+  )
 
 proc assertCanRenderMesh(TShader, TMesh, TInstance: typedesc) =
   for attrName, attrValue in default(TShader).fieldPairs:
@@ -556,29 +610,41 @@
       var foundAttr = false
       for meshAttrName, meshAttrValue in default(TMesh).fieldPairs:
         when attrName == meshAttrName:
-          assert typeof(meshAttrValue) is GPUArray, "Mesh attribute '" & attrName & "' must be a GPUArray"
-          assert typeof(attrValue) is elementType(meshAttrValue.data), "Type of shader attribute and mesh attribute '" & attrName & "' is not the same"
+          assert typeof(meshAttrValue) is GPUArray,
+            "Mesh attribute '" & attrName & "' must be a GPUArray"
+          assert typeof(attrValue) is elementType(meshAttrValue.data),
+            "Type of shader attribute and mesh attribute '" & attrName &
+              "' is not the same"
           foundAttr = true
-      assert foundAttr, "Attribute '" & attrName & "' is not provided in mesh type '" & name(TMesh) & "'"
+      assert foundAttr,
+        "Attribute '" & attrName & "' is not provided in mesh type '" & name(TMesh) & "'"
     if hasCustomPragma(attrValue, InstanceAttribute):
       var foundAttr = false
       for instAttrName, instAttrValue in default(TInstance).fieldPairs:
         when attrName == instAttrName:
-          assert typeof(instAttrValue) is GPUArray, "Instance attribute '" & attrName & "' must be a GPUArray"
-          assert foundAttr == false, "Attribute '" & attrName & "' is defined in Mesh and Instance, can only be one"
-          assert typeof(attrValue) is elementType(instAttrValue.data), "Type of shader attribute and mesh attribute '" & attrName & "' is not the same"
+          assert typeof(instAttrValue) is GPUArray,
+            "Instance attribute '" & attrName & "' must be a GPUArray"
+          assert foundAttr == false,
+            "Attribute '" & attrName &
+              "' is defined in Mesh and Instance, can only be one"
+          assert typeof(attrValue) is elementType(instAttrValue.data),
+            "Type of shader attribute and mesh attribute '" & attrName &
+              "' is not the same"
           foundAttr = true
-      assert foundAttr, "Attribute '" & attrName & "' is not provided in instance type '" & name(TInstance) & "'"
+      assert foundAttr,
+        "Attribute '" & attrName & "' is not provided in instance type '" &
+          name(TInstance) & "'"
 
 proc render*[TShader, TMesh, TInstance](
-  commandBuffer: VkCommandBuffer,
-  pipeline: Pipeline[TShader],
-  mesh: TMesh,
-  instances: TInstance,
-  fixedVertexCount = -1,
-  fixedInstanceCount = -1,
+    commandBuffer: VkCommandBuffer,
+    pipeline: Pipeline[TShader],
+    mesh: TMesh,
+    instances: TInstance,
+    fixedVertexCount = -1,
+    fixedInstanceCount = -1,
 ) =
-  static: assertCanRenderMesh(TShader, TMesh, TInstance)
+  static:
+    assertCanRenderMesh(TShader, TMesh, TInstance)
 
   var vertexBuffers: seq[VkBuffer]
   var vertexBuffersOffsets: seq[uint64]
@@ -605,7 +671,7 @@
       firstBinding = 0'u32,
       bindingCount = uint32(vertexBuffers.len),
       pBuffers = vertexBuffers.ToCPointer(),
-      pOffsets = vertexBuffersOffsets.ToCPointer()
+      pOffsets = vertexBuffersOffsets.ToCPointer(),
     )
 
   var indexBuffer: VkBuffer
@@ -630,81 +696,83 @@
       elementCount = meshValue.data.len.uint32
 
   if indexType != VK_INDEX_TYPE_NONE_KHR:
-    vkCmdBindIndexBuffer(
-      commandBuffer,
-      indexBuffer,
-      indexBufferOffset,
-      indexType,
-    )
+    vkCmdBindIndexBuffer(commandBuffer, indexBuffer, indexBufferOffset, indexType)
     vkCmdDrawIndexed(
       commandBuffer = commandBuffer,
       indexCount = elementCount,
-      instanceCount = if fixedInstanceCount == -1: instanceCount else: fixedInstanceCount.uint32,
+      instanceCount =
+        if fixedInstanceCount == -1: instanceCount else: fixedInstanceCount.uint32,
       firstIndex = 0,
       vertexOffset = 0,
-      firstInstance = 0
+      firstInstance = 0,
     )
   else:
     vkCmdDraw(
       commandBuffer = commandBuffer,
       vertexCount = if fixedVertexCount < 0: elementCount else: fixedVertexCount.uint32,
-      instanceCount = if fixedInstanceCount == -1: instanceCount else: fixedInstanceCount.uint32,
+      instanceCount =
+        if fixedInstanceCount == -1: instanceCount else: fixedInstanceCount.uint32,
       firstVertex = 0,
-      firstInstance = 0
+      firstInstance = 0,
     )
 
 proc render*[TShader, TMesh](
-  commandBuffer: VkCommandBuffer,
-  pipeline: Pipeline[TShader],
-  mesh: TMesh,
-  fixedVertexCount = -1,
+    commandBuffer: VkCommandBuffer,
+    pipeline: Pipeline[TShader],
+    mesh: TMesh,
+    fixedVertexCount = -1,
 ) =
   render(commandBuffer, pipeline, mesh, EMPTY(), fixedVertexCount)
 
 proc assertValidPushConstantType(TShader, TPushConstant: typedesc) =
-  assert sizeof(TPushConstant) <= PUSH_CONSTANT_SIZE, "Push constant values must be <= 128 bytes"
+  assert sizeof(TPushConstant) <= PUSH_CONSTANT_SIZE,
+    "Push constant values must be <= 128 bytes"
   var foundPushConstant = false
   for fieldname, fieldvalue in default(TShader).fieldPairs():
     when hasCustomPragma(fieldvalue, PushConstant):
-      assert typeof(fieldvalue) is TPushConstant, "Provided push constant has not same type as declared in shader"
+      assert typeof(fieldvalue) is TPushConstant,
+        "Provided push constant has not same type as declared in shader"
       assert foundPushConstant == false, "More than on push constant found in shader"
       foundPushConstant = true
   assert foundPushConstant == true, "No push constant found in shader"
 
 proc renderWithPushConstant*[TShader, TMesh, TInstance, TPushConstant](
-  commandBuffer: VkCommandBuffer,
-  pipeline: Pipeline[TShader],
-  mesh: TMesh,
-  instances: TInstance,
-  pushConstant: TPushConstant,
-  fixedVertexCount = -1,
+    commandBuffer: VkCommandBuffer,
+    pipeline: Pipeline[TShader],
+    mesh: TMesh,
+    instances: TInstance,
+    pushConstant: TPushConstant,
+    fixedVertexCount = -1,
 ) =
-  static: assertValidPushConstantType(TShader, TPushConstant)
+  static:
+    assertValidPushConstantType(TShader, TPushConstant)
   vkCmdPushConstants(
     commandBuffer = commandBuffer,
     layout = pipeline.layout,
     stageFlags = VkShaderStageFlags(VK_SHADER_STAGE_ALL_GRAPHICS),
     offset = 0,
     size = sizeof(pushConstant).uint32,
-    pValues = addr(pushConstant)
-  );
+    pValues = addr(pushConstant),
+  )
   render(commandBuffer, pipeline, mesh, instances, fixedVertexCount)
+
 proc renderWithPushConstant*[TShader, TMesh, TPushConstant](
-  commandBuffer: VkCommandBuffer,
-  pipeline: Pipeline[TShader],
-  mesh: TMesh,
-  pushConstant: TPushConstant,
-  fixedVertexCount = -1,
+    commandBuffer: VkCommandBuffer,
+    pipeline: Pipeline[TShader],
+    mesh: TMesh,
+    pushConstant: TPushConstant,
+    fixedVertexCount = -1,
 ) =
-  static: assertValidPushConstantType(TShader, TPushConstant)
+  static:
+    assertValidPushConstantType(TShader, TPushConstant)
   vkCmdPushConstants(
     commandBuffer = commandBuffer,
     layout = pipeline.layout,
     stageFlags = VkShaderStageFlags(VK_SHADER_STAGE_ALL_GRAPHICS),
     offset = 0,
     size = sizeof(pushConstant).uint32,
-    pValues = addr(pushConstant)
-  );
+    pValues = addr(pushConstant),
+  )
   render(commandBuffer, pipeline, mesh, EMPTY(), fixedVertexCount)
 
 proc asGPUArray*[T](data: sink openArray[T], bufferType: static BufferType): auto =
--- a/semicongine/rendering/renderpasses.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/rendering/renderpasses.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,17 +1,26 @@
-proc createDirectPresentationRenderPass*(depthBuffer: bool, samples = VK_SAMPLE_COUNT_1_BIT): RenderPass =
+proc createDirectPresentationRenderPass*(
+    depthBuffer: bool, samples = VK_SAMPLE_COUNT_1_BIT
+): RenderPass =
   assert vulkan.instance.Valid, "Vulkan not initialized"
   result = RenderPass(depthBuffer: depthBuffer, samples: samples)
 
-  var attachments = @[VkAttachmentDescription(
-    format: SURFACE_FORMAT,
-    samples: samples,
-    loadOp: VK_ATTACHMENT_LOAD_OP_CLEAR,
-    storeOp: VK_ATTACHMENT_STORE_OP_STORE,
-    stencilLoadOp: VK_ATTACHMENT_LOAD_OP_DONT_CARE,
-    stencilStoreOp: VK_ATTACHMENT_STORE_OP_DONT_CARE,
-    initialLayout: VK_IMAGE_LAYOUT_UNDEFINED,
-    finalLayout: if samples == VK_SAMPLE_COUNT_1_BIT: VK_IMAGE_LAYOUT_PRESENT_SRC_KHR else: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
-  )]
+  var attachments =
+    @[
+      VkAttachmentDescription(
+        format: SURFACE_FORMAT,
+        samples: samples,
+        loadOp: VK_ATTACHMENT_LOAD_OP_CLEAR,
+        storeOp: VK_ATTACHMENT_STORE_OP_STORE,
+        stencilLoadOp: VK_ATTACHMENT_LOAD_OP_DONT_CARE,
+        stencilStoreOp: VK_ATTACHMENT_STORE_OP_DONT_CARE,
+        initialLayout: VK_IMAGE_LAYOUT_UNDEFINED,
+        finalLayout:
+          if samples == VK_SAMPLE_COUNT_1_BIT:
+            VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
+          else:
+            VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
+      )
+    ]
   if depthBuffer:
     attachments.add VkAttachmentDescription(
       format: DEPTH_FORMAT,
@@ -35,56 +44,84 @@
       finalLayout: VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
     )
   var
-    dependencies = @[
-      VkSubpassDependency(
-        srcSubpass: VK_SUBPASS_EXTERNAL,
-        dstSubpass: 0,
-        srcStageMask: toBits [VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT],
-        dstStageMask: toBits [VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT],
-        srcAccessMask: toBits [VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT],
-        dstAccessMask: toBits [VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT],
-      )
-    ]
+    dependencies =
+      @[
+        VkSubpassDependency(
+          srcSubpass: VK_SUBPASS_EXTERNAL,
+          dstSubpass: 0,
+          srcStageMask: toBits [
+            VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
+            VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+          ],
+          dstStageMask: toBits [
+            VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
+            VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
+          ],
+          srcAccessMask: toBits [
+            VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+            VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
+          ],
+          dstAccessMask: toBits [
+            VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+            VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
+          ],
+        )
+      ]
     colorAttachment = VkAttachmentReference(
-      attachment: 0,
-      layout: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
+      attachment: 0, layout: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
     )
     depthAttachment = VkAttachmentReference(
-      attachment: 1,
-      layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
+      attachment: 1, layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
     )
     resolveAttachment = VkAttachmentReference(
-      attachment: (attachments.len - 1).uint32, # depending on whether depthBuffer is used or not
+      attachment: (attachments.len - 1).uint32,
+        # depending on whether depthBuffer is used or not
       layout: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
     )
 
   result.vk = svkCreateRenderPass(
     attachments = attachments,
     colorAttachments = [colorAttachment],
-    depthAttachments = if depthBuffer: @[depthAttachment] else: @[],
-    resolveAttachments = if samples > VK_SAMPLE_COUNT_1_BIT: @[resolveAttachment] else: @[],
+    depthAttachments =
+      if depthBuffer:
+        @[depthAttachment]
+      else:
+        @[],
+    resolveAttachments =
+      if samples > VK_SAMPLE_COUNT_1_BIT:
+        @[resolveAttachment]
+      else:
+        @[],
     dependencies = dependencies,
   )
 
-proc createIndirectPresentationRenderPass*(depthBuffer: bool, samples = VK_SAMPLE_COUNT_1_BIT): (RenderPass, RenderPass) =
+proc createIndirectPresentationRenderPass*(
+    depthBuffer: bool, samples = VK_SAMPLE_COUNT_1_BIT
+): (RenderPass, RenderPass) =
   assert vulkan.instance.Valid, "Vulkan not initialized"
 
   result[0] = RenderPass(depthBuffer: depthBuffer, samples: samples)
   result[1] = RenderPass(depthBuffer: false, samples: VK_SAMPLE_COUNT_1_BIT)
 
   # first renderpass, drawing
-  var
-    attachments = @[VkAttachmentDescription(
-      format: SURFACE_FORMAT, # not strictly necessary
-      samples: samples,
-      loadOp: VK_ATTACHMENT_LOAD_OP_CLEAR,
-      storeOp: VK_ATTACHMENT_STORE_OP_STORE,
-      stencilLoadOp: VK_ATTACHMENT_LOAD_OP_DONT_CARE,
-      stencilStoreOp: VK_ATTACHMENT_STORE_OP_DONT_CARE,
-      initialLayout: VK_IMAGE_LAYOUT_UNDEFINED,
-      # finalLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
-      finalLayout: if samples == VK_SAMPLE_COUNT_1_BIT: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL else: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
-    )]
+  var attachments =
+    @[
+      VkAttachmentDescription(
+        format: SURFACE_FORMAT, # not strictly necessary
+        samples: samples,
+        loadOp: VK_ATTACHMENT_LOAD_OP_CLEAR,
+        storeOp: VK_ATTACHMENT_STORE_OP_STORE,
+        stencilLoadOp: VK_ATTACHMENT_LOAD_OP_DONT_CARE,
+        stencilStoreOp: VK_ATTACHMENT_STORE_OP_DONT_CARE,
+        initialLayout: VK_IMAGE_LAYOUT_UNDEFINED,
+        # finalLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
+        finalLayout:
+          if samples == VK_SAMPLE_COUNT_1_BIT:
+            VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
+          else:
+            VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
+      )
+    ]
   if depthBuffer:
     attachments.add VkAttachmentDescription(
       format: DEPTH_FORMAT,
@@ -109,75 +146,100 @@
     )
 
   var
-    dependencies = @[
-      VkSubpassDependency(
-        srcSubpass: VK_SUBPASS_EXTERNAL,
-        dstSubpass: 0,
-        srcStageMask: toBits [VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT],
-        dstStageMask: toBits [VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT],
-        srcAccessMask: toBits [VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT],
-        dstAccessMask: toBits [VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT],
-      ),
-      VkSubpassDependency(
-        srcSubpass: VK_SUBPASS_EXTERNAL,
-        dstSubpass: 0,
-        srcStageMask: toBits [VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT],
-        dstStageMask: toBits [VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT],
-        srcAccessMask: toBits [VK_ACCESS_SHADER_READ_BIT],
-        dstAccessMask: toBits [VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT],
-      ),
-      VkSubpassDependency(
-        srcSubpass: 0,
-        dstSubpass: VK_SUBPASS_EXTERNAL,
-        srcStageMask: toBits [VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT],
-        dstStageMask: toBits [VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT],
-        srcAccessMask: toBits [VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT],
-        dstAccessMask: toBits [VK_ACCESS_SHADER_READ_BIT],
-      ),
-    ]
+    dependencies =
+      @[
+        VkSubpassDependency(
+          srcSubpass: VK_SUBPASS_EXTERNAL,
+          dstSubpass: 0,
+          srcStageMask: toBits [
+            VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
+            VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+          ],
+          dstStageMask: toBits [
+            VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
+            VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
+          ],
+          srcAccessMask: toBits [
+            VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+            VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
+          ],
+          dstAccessMask: toBits [
+            VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+            VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
+          ],
+        ),
+        VkSubpassDependency(
+          srcSubpass: VK_SUBPASS_EXTERNAL,
+          dstSubpass: 0,
+          srcStageMask: toBits [VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT],
+          dstStageMask: toBits [VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT],
+          srcAccessMask: toBits [VK_ACCESS_SHADER_READ_BIT],
+          dstAccessMask: toBits [VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT],
+        ),
+        VkSubpassDependency(
+          srcSubpass: 0,
+          dstSubpass: VK_SUBPASS_EXTERNAL,
+          srcStageMask: toBits [VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT],
+          dstStageMask: toBits [VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT],
+          srcAccessMask: toBits [VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT],
+          dstAccessMask: toBits [VK_ACCESS_SHADER_READ_BIT],
+        ),
+      ]
     colorAttachment = VkAttachmentReference(
-      attachment: 0,
-      layout: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
+      attachment: 0, layout: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
     )
     depthAttachment = VkAttachmentReference(
-      attachment: 1,
-      layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
+      attachment: 1, layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
     )
     resolveAttachment = VkAttachmentReference(
-      attachment: (attachments.len - 1).uint32, # depending on whether depthBuffer is used or not
+      attachment: (attachments.len - 1).uint32,
+        # depending on whether depthBuffer is used or not
       layout: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
     )
   result[0].vk = svkCreateRenderPass(
     attachments = attachments,
     colorAttachments = [colorAttachment],
-    depthAttachments = if depthBuffer: @[depthAttachment] else: @[],
-    resolveAttachments = if samples > VK_SAMPLE_COUNT_1_BIT: @[resolveAttachment] else: @[],
-    dependencies = dependencies
+    depthAttachments =
+      if depthBuffer:
+        @[depthAttachment]
+      else:
+        @[],
+    resolveAttachments =
+      if samples > VK_SAMPLE_COUNT_1_BIT:
+        @[resolveAttachment]
+      else:
+        @[],
+    dependencies = dependencies,
   )
 
   # second renderpass, presentation
   var
-    presentAttachments = @[VkAttachmentDescription(
-      format: SURFACE_FORMAT,
-      samples: VK_SAMPLE_COUNT_1_BIT,
-      loadOp: VK_ATTACHMENT_LOAD_OP_CLEAR,
-      storeOp: VK_ATTACHMENT_STORE_OP_STORE,
-      stencilLoadOp: VK_ATTACHMENT_LOAD_OP_DONT_CARE,
-      stencilStoreOp: VK_ATTACHMENT_STORE_OP_DONT_CARE,
-      initialLayout: VK_IMAGE_LAYOUT_UNDEFINED,
-      finalLayout: VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
-    )]
-    presentDependencies = @[VkSubpassDependency(
-      srcSubpass: VK_SUBPASS_EXTERNAL,
-      dstSubpass: 0,
-      srcStageMask: toBits [VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT],
-      dstStageMask: toBits [VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT],
-      srcAccessMask: VkAccessFlags(0),
-      dstAccessMask: toBits [VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT],
-    )]
+    presentAttachments =
+      @[
+        VkAttachmentDescription(
+          format: SURFACE_FORMAT,
+          samples: VK_SAMPLE_COUNT_1_BIT,
+          loadOp: VK_ATTACHMENT_LOAD_OP_CLEAR,
+          storeOp: VK_ATTACHMENT_STORE_OP_STORE,
+          stencilLoadOp: VK_ATTACHMENT_LOAD_OP_DONT_CARE,
+          stencilStoreOp: VK_ATTACHMENT_STORE_OP_DONT_CARE,
+          initialLayout: VK_IMAGE_LAYOUT_UNDEFINED,
+          finalLayout: VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
+        )
+      ]
+    presentDependencies =
+      @[
+        VkSubpassDependency(
+          srcSubpass: VK_SUBPASS_EXTERNAL,
+          dstSubpass: 0,
+          srcStageMask: toBits [VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT],
+          dstStageMask: toBits [VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT],
+          srcAccessMask: VkAccessFlags(0),
+          dstAccessMask: toBits [VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT],
+        )
+      ]
     presentColorAttachment = VkAttachmentReference(
-      attachment: 0,
-      layout: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
+      attachment: 0, layout: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
     )
 
   result[1].vk = svkCreateRenderPass(
@@ -185,22 +247,22 @@
     colorAttachments = [presentColorAttachment],
     depthAttachments = [],
     resolveAttachments = [],
-    dependencies = presentDependencies
+    dependencies = presentDependencies,
   )
 
 template withRenderPass*(
-  theRenderPass: RenderPass,
-  theFramebuffer: VkFramebuffer,
-  commandbuffer: VkCommandBuffer,
-  renderWidth: uint32,
-  renderHeight: uint32,
-  clearColor: Vec4f,
-  body: untyped
+    theRenderPass: RenderPass,
+    theFramebuffer: VkFramebuffer,
+    commandbuffer: VkCommandBuffer,
+    renderWidth: uint32,
+    renderHeight: uint32,
+    clearColor: Vec4f,
+    body: untyped,
 ): untyped =
   var
     clearColors = [
       VkClearValue(color: VkClearColorValue(float32: clearColor)),
-      VkClearValue(depthStencil: VkClearDepthStencilValue(depth: 1'f32, stencil: 0))
+      VkClearValue(depthStencil: VkClearDepthStencilValue(depth: 1'f32, stencil: 0)),
     ]
     renderPassInfo = VkRenderPassBeginInfo(
       sType: VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
@@ -223,7 +285,7 @@
     )
     scissor = VkRect2D(
       offset: VkOffset2D(x: 0, y: 0),
-      extent: VkExtent2D(width: renderWidth, height: renderHeight)
+      extent: VkExtent2D(width: renderWidth, height: renderHeight),
     )
 
   vkCmdBeginRenderPass(commandbuffer, addr(renderPassInfo), VK_SUBPASS_CONTENTS_INLINE)
--- a/semicongine/rendering/shaders.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/rendering/shaders.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,103 +1,188 @@
-func glslType[T: SupportedGPUType|ImageObject](value: T): string =
-  when T is float32: "float"
-  elif T is float64: "double"
-  elif T is int8 or T is int16 or T is int32 or T is int64: "int"
-  elif T is uint8 or T is uint16 or T is uint32 or T is uint64: "uint"
-  elif T is TVec2[int32]: "ivec2"
-  elif T is TVec2[int64]: "ivec2"
-  elif T is TVec3[int32]: "ivec3"
-  elif T is TVec3[int64]: "ivec3"
-  elif T is TVec4[int32]: "ivec4"
-  elif T is TVec4[int64]: "ivec4"
-  elif T is TVec2[uint32]: "uvec2"
-  elif T is TVec2[uint64]: "uvec2"
-  elif T is TVec3[uint32]: "uvec3"
-  elif T is TVec3[uint64]: "uvec3"
-  elif T is TVec4[uint32]: "uvec4"
-  elif T is TVec4[uint64]: "uvec4"
-  elif T is TVec2[float32]: "vec2"
-  elif T is TVec2[float64]: "dvec2"
-  elif T is TVec3[float32]: "vec3"
-  elif T is TVec3[float64]: "dvec3"
-  elif T is TVec4[float32]: "vec4"
-  elif T is TVec4[float64]: "dvec4"
-  elif T is TMat2[float32]: "mat2"
-  elif T is TMat2[float64]: "dmat2"
-  elif T is TMat23[float32]: "mat23"
-  elif T is TMat23[float64]: "dmat23"
-  elif T is TMat32[float32]: "mat32"
-  elif T is TMat32[float64]: "dmat32"
-  elif T is TMat3[float32]: "mat3"
-  elif T is TMat3[float64]: "dmat3"
-  elif T is TMat34[float32]: "mat34"
-  elif T is TMat34[float64]: "dmat34"
-  elif T is TMat43[float32]: "mat43"
-  elif T is TMat43[float64]: "dmat43"
-  elif T is TMat4[float32]: "mat4"
-  elif T is TMat4[float64]: "dmat4"
-  elif T is Image: "sampler2D"
-  elif T is ImageArray: "sampler2DArray"
+func glslType[T: SupportedGPUType | ImageObject](value: T): string =
+  when T is float32:
+    "float"
+  elif T is float64:
+    "double"
+  elif T is int8 or T is int16 or T is int32 or T is int64:
+    "int"
+  elif T is uint8 or T is uint16 or T is uint32 or T is uint64:
+    "uint"
+  elif T is TVec2[int32]:
+    "ivec2"
+  elif T is TVec2[int64]:
+    "ivec2"
+  elif T is TVec3[int32]:
+    "ivec3"
+  elif T is TVec3[int64]:
+    "ivec3"
+  elif T is TVec4[int32]:
+    "ivec4"
+  elif T is TVec4[int64]:
+    "ivec4"
+  elif T is TVec2[uint32]:
+    "uvec2"
+  elif T is TVec2[uint64]:
+    "uvec2"
+  elif T is TVec3[uint32]:
+    "uvec3"
+  elif T is TVec3[uint64]:
+    "uvec3"
+  elif T is TVec4[uint32]:
+    "uvec4"
+  elif T is TVec4[uint64]:
+    "uvec4"
+  elif T is TVec2[float32]:
+    "vec2"
+  elif T is TVec2[float64]:
+    "dvec2"
+  elif T is TVec3[float32]:
+    "vec3"
+  elif T is TVec3[float64]:
+    "dvec3"
+  elif T is TVec4[float32]:
+    "vec4"
+  elif T is TVec4[float64]:
+    "dvec4"
+  elif T is TMat2[float32]:
+    "mat2"
+  elif T is TMat2[float64]:
+    "dmat2"
+  elif T is TMat23[float32]:
+    "mat23"
+  elif T is TMat23[float64]:
+    "dmat23"
+  elif T is TMat32[float32]:
+    "mat32"
+  elif T is TMat32[float64]:
+    "dmat32"
+  elif T is TMat3[float32]:
+    "mat3"
+  elif T is TMat3[float64]:
+    "dmat3"
+  elif T is TMat34[float32]:
+    "mat34"
+  elif T is TMat34[float64]:
+    "dmat34"
+  elif T is TMat43[float32]:
+    "mat43"
+  elif T is TMat43[float64]:
+    "dmat43"
+  elif T is TMat4[float32]:
+    "mat4"
+  elif T is TMat4[float64]:
+    "dmat4"
+  elif T is Image:
+    "sampler2D"
+  elif T is ImageArray:
+    "sampler2DArray"
   else:
     const n = typetraits.name(T)
     {.error: "Unsupported data type on GPU: " & n.}
 
 func vkType[T: SupportedGPUType](value: T): VkFormat =
-  when T is float32: VK_FORMAT_R32_SFLOAT
-  elif T is float64: VK_FORMAT_R64_SFLOAT
-  elif T is int8: VK_FORMAT_R8_SINT
-  elif T is int16: VK_FORMAT_R16_SINT
-  elif T is int32: VK_FORMAT_R32_SINT
-  elif T is int64: VK_FORMAT_R64_SINT
-  elif T is uint8: VK_FORMAT_R8_UINT
-  elif T is uint16: VK_FORMAT_R16_UINT
-  elif T is uint32: VK_FORMAT_R32_UINT
-  elif T is uint64: VK_FORMAT_R64_UINT
-  elif T is TVec2[int32]: VK_FORMAT_R32G32_SINT
-  elif T is TVec2[int64]: VK_FORMAT_R64G64_SINT
-  elif T is TVec3[int32]: VK_FORMAT_R32G32B32_SINT
-  elif T is TVec3[int64]: VK_FORMAT_R64G64B64_SINT
-  elif T is TVec4[int32]: VK_FORMAT_R32G32B32A32_SINT
-  elif T is TVec4[int64]: VK_FORMAT_R64G64B64A64_SINT
-  elif T is TVec2[uint32]: VK_FORMAT_R32G32_UINT
-  elif T is TVec2[uint64]: VK_FORMAT_R64G64_UINT
-  elif T is TVec3[uint32]: VK_FORMAT_R32G32B32_UINT
-  elif T is TVec3[uint64]: VK_FORMAT_R64G64B64_UINT
-  elif T is TVec4[uint32]: VK_FORMAT_R32G32B32A32_UINT
-  elif T is TVec4[uint64]: VK_FORMAT_R64G64B64A64_UINT
-  elif T is TVec2[float32]: VK_FORMAT_R32G32_SFLOAT
-  elif T is TVec2[float64]: VK_FORMAT_R64G64_SFLOAT
-  elif T is TVec3[float32]: VK_FORMAT_R32G32B32_SFLOAT
-  elif T is TVec3[float64]: VK_FORMAT_R64G64B64_SFLOAT
-  elif T is TVec4[float32]: VK_FORMAT_R32G32B32A32_SFLOAT
-  elif T is TVec4[float64]: VK_FORMAT_R64G64B64A64_SFLOAT
-  elif T is TMat2[float32]: VK_FORMAT_R32G32_SFLOAT
-  elif T is TMat2[float64]: VK_FORMAT_R64G64_SFLOAT
-  elif T is TMat23[float32]: VK_FORMAT_R32G32B32_SFLOAT
-  elif T is TMat23[float64]: VK_FORMAT_R64G64B64_SFLOAT
-  elif T is TMat32[float32]: VK_FORMAT_R32G32_SFLOAT
-  elif T is TMat32[float64]: VK_FORMAT_R64G64_SFLOAT
-  elif T is TMat3[float32]: VK_FORMAT_R32G32B32_SFLOAT
-  elif T is TMat3[float64]: VK_FORMAT_R64G64B64_SFLOAT
-  elif T is TMat34[float32]: VK_FORMAT_R32G32B32A32_SFLOAT
-  elif T is TMat34[float64]: VK_FORMAT_R64G64B64A64_SFLOAT
-  elif T is TMat43[float32]: VK_FORMAT_R32G32B32_SFLOAT
-  elif T is TMat43[float64]: VK_FORMAT_R64G64B64_SFLOAT
-  elif T is TMat4[float32]: VK_FORMAT_R32G32B32A32_SFLOAT
-  elif T is TMat4[float64]: VK_FORMAT_R64G64B64A64_SFLOAT
-  else: {.error: "Unsupported data type on GPU".}
+  when T is float32:
+    VK_FORMAT_R32_SFLOAT
+  elif T is float64:
+    VK_FORMAT_R64_SFLOAT
+  elif T is int8:
+    VK_FORMAT_R8_SINT
+  elif T is int16:
+    VK_FORMAT_R16_SINT
+  elif T is int32:
+    VK_FORMAT_R32_SINT
+  elif T is int64:
+    VK_FORMAT_R64_SINT
+  elif T is uint8:
+    VK_FORMAT_R8_UINT
+  elif T is uint16:
+    VK_FORMAT_R16_UINT
+  elif T is uint32:
+    VK_FORMAT_R32_UINT
+  elif T is uint64:
+    VK_FORMAT_R64_UINT
+  elif T is TVec2[int32]:
+    VK_FORMAT_R32G32_SINT
+  elif T is TVec2[int64]:
+    VK_FORMAT_R64G64_SINT
+  elif T is TVec3[int32]:
+    VK_FORMAT_R32G32B32_SINT
+  elif T is TVec3[int64]:
+    VK_FORMAT_R64G64B64_SINT
+  elif T is TVec4[int32]:
+    VK_FORMAT_R32G32B32A32_SINT
+  elif T is TVec4[int64]:
+    VK_FORMAT_R64G64B64A64_SINT
+  elif T is TVec2[uint32]:
+    VK_FORMAT_R32G32_UINT
+  elif T is TVec2[uint64]:
+    VK_FORMAT_R64G64_UINT
+  elif T is TVec3[uint32]:
+    VK_FORMAT_R32G32B32_UINT
+  elif T is TVec3[uint64]:
+    VK_FORMAT_R64G64B64_UINT
+  elif T is TVec4[uint32]:
+    VK_FORMAT_R32G32B32A32_UINT
+  elif T is TVec4[uint64]:
+    VK_FORMAT_R64G64B64A64_UINT
+  elif T is TVec2[float32]:
+    VK_FORMAT_R32G32_SFLOAT
+  elif T is TVec2[float64]:
+    VK_FORMAT_R64G64_SFLOAT
+  elif T is TVec3[float32]:
+    VK_FORMAT_R32G32B32_SFLOAT
+  elif T is TVec3[float64]:
+    VK_FORMAT_R64G64B64_SFLOAT
+  elif T is TVec4[float32]:
+    VK_FORMAT_R32G32B32A32_SFLOAT
+  elif T is TVec4[float64]:
+    VK_FORMAT_R64G64B64A64_SFLOAT
+  elif T is TMat2[float32]:
+    VK_FORMAT_R32G32_SFLOAT
+  elif T is TMat2[float64]:
+    VK_FORMAT_R64G64_SFLOAT
+  elif T is TMat23[float32]:
+    VK_FORMAT_R32G32B32_SFLOAT
+  elif T is TMat23[float64]:
+    VK_FORMAT_R64G64B64_SFLOAT
+  elif T is TMat32[float32]:
+    VK_FORMAT_R32G32_SFLOAT
+  elif T is TMat32[float64]:
+    VK_FORMAT_R64G64_SFLOAT
+  elif T is TMat3[float32]:
+    VK_FORMAT_R32G32B32_SFLOAT
+  elif T is TMat3[float64]:
+    VK_FORMAT_R64G64B64_SFLOAT
+  elif T is TMat34[float32]:
+    VK_FORMAT_R32G32B32A32_SFLOAT
+  elif T is TMat34[float64]:
+    VK_FORMAT_R64G64B64A64_SFLOAT
+  elif T is TMat43[float32]:
+    VK_FORMAT_R32G32B32_SFLOAT
+  elif T is TMat43[float64]:
+    VK_FORMAT_R64G64B64_SFLOAT
+  elif T is TMat4[float32]:
+    VK_FORMAT_R32G32B32A32_SFLOAT
+  elif T is TMat4[float64]:
+    VK_FORMAT_R64G64B64A64_SFLOAT
+  else:
+    {.error: "Unsupported data type on GPU".}
 
-
-func numberOfVertexInputAttributeDescriptors[T: SupportedGPUType|ImageObject](value: T): uint32 =
-  when T is TMat2[float32] or T is TMat2[float64] or T is TMat23[float32] or T is TMat23[float64]:
+func numberOfVertexInputAttributeDescriptors[T: SupportedGPUType | ImageObject](
+    value: T
+): uint32 =
+  when T is TMat2[float32] or T is TMat2[float64] or T is TMat23[float32] or
+      T is TMat23[float64]:
     2
-  elif T is TMat32[float32] or T is TMat32[float64] or T is TMat3[float32] or T is TMat3[float64] or T is TMat34[float32] or T is TMat34[float64]:
+  elif T is TMat32[float32] or T is TMat32[float64] or T is TMat3[float32] or
+      T is TMat3[float64] or T is TMat34[float32] or T is TMat34[float64]:
     3
-  elif T is TMat43[float32] or T is TMat43[float64] or T is TMat4[float32] or T is TMat4[float64]:
+  elif T is TMat43[float32] or T is TMat43[float64] or T is TMat4[float32] or
+      T is TMat4[float64]:
     4
   else:
     1
 
-func nLocationSlots[T: SupportedGPUType|ImageObject](value: T): uint32 =
+func nLocationSlots[T: SupportedGPUType | ImageObject](value: T): uint32 =
   #[
   single location:
     - any scalar
@@ -110,17 +195,11 @@
   two locations
     64-bit three- and four-component vectors
   ]#
-  when T is TVec3[int64] or
-    T is TVec4[int64] or
-    T is TVec3[uint64] or
-    T is TVec4[uint64] or
-    T is TVec3[float64] or
-    T is TVec4[float64] or
-    T is TMat23[float64] or
-    T is TMat3[float64] or
-    T is TMat34[float64] or
-    T is TMat43[float64] or
-    T is TMat4[float64]:
+  when T is TVec3[int64] or T is TVec4[int64] or T is TVec3[uint64] or T is TVec4[
+      uint64
+  ] or T is TVec3[float64] or T is TVec4[float64] or T is TMat23[float64] or
+      T is TMat3[float64] or T is TMat34[float64] or T is TMat43[float64] or
+      T is TMat4[float64]:
     return 2
   else:
     return 1
@@ -141,71 +220,83 @@
   var sawDescriptorSets: array[MAX_DESCRIPTORSETS, bool]
   for fieldname, value in fieldPairs(shader):
     # vertex shader inputs
-    when hasCustomPragma(value, VertexAttribute) or hasCustomPragma(value, InstanceAttribute):
+    when hasCustomPragma(value, VertexAttribute) or
+        hasCustomPragma(value, InstanceAttribute):
       assert typeof(value) is SupportedGPUType
-      vsInput.add "layout(location = " & $vsInputLocation & ") in " & glslType(value) & " " & fieldname & ";"
+      vsInput.add "layout(location = " & $vsInputLocation & ") in " & glslType(value) &
+        " " & fieldname & ";"
       for j in 0 ..< numberOfVertexInputAttributeDescriptors(value):
         vsInputLocation += nLocationSlots(value)
 
     # intermediate values, passed between shaders
     elif hasCustomPragma(value, Pass) or hasCustomPragma(value, PassFlat):
       let flat = if hasCustomPragma(value, PassFlat): "flat " else: ""
-      vsOutput.add "layout(location = " & $passLocation & ") " & flat & "out " & glslType(value) & " " & fieldname & ";"
-      fsInput.add "layout(location = " & $passLocation & ") " & flat & "in " & glslType(value) & " " & fieldname & ";"
+      vsOutput.add "layout(location = " & $passLocation & ") " & flat & "out " &
+        glslType(value) & " " & fieldname & ";"
+      fsInput.add "layout(location = " & $passLocation & ") " & flat & "in " &
+        glslType(value) & " " & fieldname & ";"
       passLocation.inc
 
     # fragment shader output
     elif hasCustomPragma(value, ShaderOutput):
-      fsOutput.add &"layout(location = " & $fsOutputLocation & ") out " & glslType(value) & " " & fieldname & ";"
+      fsOutput.add &"layout(location = " & $fsOutputLocation & ") out " & glslType(
+        value
+      ) & " " & fieldname & ";"
       fsOutputLocation.inc
 
     # descriptor sets
     # need to consider 4 cases: uniform block, texture, uniform block array, texture array
     elif hasCustomPragma(value, DescriptorSet):
       let setIndex = value.getCustomPragmaVal(DescriptorSet)
-      assert not sawDescriptorSets[setIndex], "Only one DescriptorSet per index is allowed per shader"
-      assert typeof(value) is object, "Descriptor field '" & fieldname & "' must be of type object"
-      assert setIndex < MAX_DESCRIPTORSETS, typetraits.name(TShader) & ": maximum " & $MAX_DESCRIPTORSETS & " descriptor sets allowed"
+      assert not sawDescriptorSets[setIndex],
+        "Only one DescriptorSet per index is allowed per shader"
+      assert typeof(value) is object,
+        "Descriptor field '" & fieldname & "' must be of type object"
+      assert setIndex < MAX_DESCRIPTORSETS,
+        typetraits.name(TShader) & ": maximum " & $MAX_DESCRIPTORSETS &
+          " descriptor sets allowed"
       sawDescriptorSets[setIndex] = true
 
       var descriptorBinding = 0
       for descriptorName, descriptorValue in fieldPairs(value):
         when typeof(descriptorValue) is ImageObject:
-          samplers.add "layout(set=" & $setIndex & ", binding = " & $descriptorBinding & ") uniform " & glslType(descriptorValue) & " " & descriptorName & ";"
+          samplers.add "layout(set=" & $setIndex & ", binding = " & $descriptorBinding &
+            ") uniform " & glslType(descriptorValue) & " " & descriptorName & ";"
           descriptorBinding.inc
-
         elif typeof(descriptorValue) is GPUValue:
-
-          uniforms.add "layout(set=" & $setIndex & ", binding = " & $descriptorBinding & ") uniform T" & descriptorName & " {"
+          uniforms.add "layout(set=" & $setIndex & ", binding = " & $descriptorBinding &
+            ") uniform T" & descriptorName & " {"
           when typeof(descriptorValue.data) is object:
-
             for blockFieldName, blockFieldValue in descriptorValue.data.fieldPairs():
-              assert typeof(blockFieldValue) is SupportedGPUType, "uniform block field '" & blockFieldName & "' is not a SupportedGPUType"
+              assert typeof(blockFieldValue) is SupportedGPUType,
+                "uniform block field '" & blockFieldName & "' is not a SupportedGPUType"
               uniforms.add "  " & glslType(blockFieldValue) & " " & blockFieldName & ";"
             uniforms.add "} " & descriptorName & ";"
-
           else:
-            {.error: "Unsupported shader descriptor field " & descriptorName & " (must be object)".}
+            {.
+              error:
+                "Unsupported shader descriptor field " & descriptorName &
+                " (must be object)"
+            .}
           descriptorBinding.inc
-
         elif typeof(descriptorValue) is array:
-
           when elementType(descriptorValue) is ImageObject:
-
             let arrayDecl = "[" & $typeof(descriptorValue).len & "]"
-            samplers.add "layout(set=" & $setIndex & ", binding = " & $descriptorBinding & ") uniform " & glslType(default(elementType(descriptorValue))) & " " & descriptorName & "" & arrayDecl & ";"
+            samplers.add "layout(set=" & $setIndex & ", binding = " & $descriptorBinding &
+              ") uniform " & glslType(default(elementType(descriptorValue))) & " " &
+              descriptorName & "" & arrayDecl & ";"
             descriptorBinding.inc
-
           elif elementType(descriptorValue) is GPUValue:
+            uniforms.add "layout(set=" & $setIndex & ", binding = " & $descriptorBinding &
+              ") uniform T" & descriptorName & " {"
 
-            uniforms.add "layout(set=" & $setIndex & ", binding = " & $descriptorBinding & ") uniform T" & descriptorName & " {"
-
-            for blockFieldName, blockFieldValue in default(elementType(descriptorValue)).data.fieldPairs():
-              assert typeof(blockFieldValue) is SupportedGPUType, "uniform block field '" & blockFieldName & "' is not a SupportedGPUType"
+            for blockFieldName, blockFieldValue in default(elementType(descriptorValue)).data
+            .fieldPairs():
+              assert typeof(blockFieldValue) is SupportedGPUType,
+                "uniform block field '" & blockFieldName & "' is not a SupportedGPUType"
               uniforms.add "  " & glslType(blockFieldValue) & " " & blockFieldName & ";"
             uniforms.add "} " & descriptorName & "[" & $descriptorValue.len & "];"
             descriptorBinding.inc
-
           else:
             {.error: "Unsupported shader descriptor field " & descriptorName.}
     elif fieldname in ["vertexCode", "fragmentCode"]:
@@ -216,31 +307,29 @@
       pushConstants.add "layout( push_constant ) uniform constants"
       pushConstants.add "{"
       for constFieldName, constFieldValue in value.fieldPairs():
-        assert typeof(constFieldValue) is SupportedGPUType, "push constant field '" & constFieldName & "' is not a SupportedGPUType"
+        assert typeof(constFieldValue) is SupportedGPUType,
+          "push constant field '" & constFieldName & "' is not a SupportedGPUType"
         pushConstants.add "  " & glslType(constFieldValue) & " " & constFieldName & ";"
       pushConstants.add "} " & fieldname & ";"
     else:
       static:
-        echo "Unsupported shader field '" & typetraits.name(TShader) & "." & fieldname & "' of type " & typetraits.name(typeof(value))
+        echo "Unsupported shader field '" & typetraits.name(TShader) & "." & fieldname &
+          "' of type " & typetraits.name(typeof(value))
       {.error: "Unsupported shader field".}
 
-  result[0] = (@[&"#version {GLSL_VERSION}", "#extension GL_EXT_scalar_block_layout : require", ""] &
-    vsInput &
-    uniforms &
-    pushConstants &
-    samplers &
-    vsOutput &
-    @[shader.vertexCode]).join("\n")
+  result[0] = (
+    @[&"#version {GLSL_VERSION}", "#extension GL_EXT_scalar_block_layout : require", ""] &
+    vsInput & uniforms & pushConstants & samplers & vsOutput & @[shader.vertexCode]
+  ).join("\n")
 
-  result[1] = (@[&"#version {GLSL_VERSION}", "#extension GL_EXT_scalar_block_layout : require", ""] &
-    fsInput &
-    uniforms &
-    pushConstants &
-    samplers &
-    fsOutput &
-    @[shader.fragmentCode]).join("\n")
+  result[1] = (
+    @[&"#version {GLSL_VERSION}", "#extension GL_EXT_scalar_block_layout : require", ""] &
+    fsInput & uniforms & pushConstants & samplers & fsOutput & @[shader.fragmentCode]
+  ).join("\n")
 
-proc compileGlslToSPIRV(stage: VkShaderStageFlagBits, shaderSource: string): seq[uint32] {.compileTime.} =
+proc compileGlslToSPIRV(
+    stage: VkShaderStageFlagBits, shaderSource: string
+): seq[uint32] {.compileTime.} =
   func stage2string(stage: VkShaderStageFlagBits): string {.compileTime.} =
     case stage
     of VK_SHADER_STAGE_VERTEX_BIT: "vert"
@@ -263,19 +352,19 @@
     echo "shader of type ", stage
     for i, line in enumerate(shaderSource.splitlines()):
       echo "  ", i + 1, " ", line
-    var glslExe = currentSourcePath.parentDir.parentDir.parentDir / "tools" / "glslangValidator"
+    var glslExe =
+      currentSourcePath.parentDir.parentDir.parentDir / "tools" / "glslangValidator"
     when defined(windows):
       glslExe = glslExe & "." & ExeExt
-    let command = &"{glslExe} --entry-point main -V --stdin -S {stagename} -o {shaderfile}"
+    let command =
+      &"{glslExe} --entry-point main -V --stdin -S {stagename} -o {shaderfile}"
     echo "run: ", command
-    discard StaticExecChecked(
-        command = command,
-        input = shaderSource
-    )
+    discard StaticExecChecked(command = command, input = shaderSource)
   else:
     echo &"shaderfile {shaderfile} is up-to-date"
 
-  when defined(mingw) and defined(linux): # required for crosscompilation, path separators get messed up
+  when defined(mingw) and defined(linux):
+    # required for crosscompilation, path separators get messed up
     let shaderbinary = staticRead shaderfile.replace("\\", "/")
   else:
     let shaderbinary = staticRead shaderfile
@@ -283,36 +372,41 @@
   var i = 0
   while i < shaderbinary.len:
     result.add(
-      (uint32(shaderbinary[i + 0]) shl 0) or
-      (uint32(shaderbinary[i + 1]) shl 8) or
-      (uint32(shaderbinary[i + 2]) shl 16) or
-      (uint32(shaderbinary[i + 3]) shl 24)
+      (uint32(shaderbinary[i + 0]) shl 0) or (uint32(shaderbinary[i + 1]) shl 8) or
+        (uint32(shaderbinary[i + 2]) shl 16) or (uint32(shaderbinary[i + 3]) shl 24)
     )
     i += 4
 
-
 proc compileShader[TShader](shader: static TShader): (VkShaderModule, VkShaderModule) =
   const (vertexShaderSource, fragmentShaderSource) = generateShaderSource(shader)
 
   let vertexBinary = compileGlslToSPIRV(VK_SHADER_STAGE_VERTEX_BIT, vertexShaderSource)
-  let fragmentBinary = compileGlslToSPIRV(VK_SHADER_STAGE_FRAGMENT_BIT, fragmentShaderSource)
+  let fragmentBinary =
+    compileGlslToSPIRV(VK_SHADER_STAGE_FRAGMENT_BIT, fragmentShaderSource)
 
   var createInfoVertex = VkShaderModuleCreateInfo(
     sType: VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
     codeSize: csize_t(vertexBinary.len * sizeof(uint32)),
     pCode: vertexBinary.ToCPointer,
   )
-  checkVkResult vulkan.device.vkCreateShaderModule(addr(createInfoVertex), nil, addr(result[0]))
+  checkVkResult vulkan.device.vkCreateShaderModule(
+    addr(createInfoVertex), nil, addr(result[0])
+  )
   var createInfoFragment = VkShaderModuleCreateInfo(
     sType: VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
     codeSize: csize_t(fragmentBinary.len * sizeof(uint32)),
     pCode: fragmentBinary.ToCPointer,
   )
-  checkVkResult vulkan.device.vkCreateShaderModule(addr(createInfoFragment), nil, addr(result[1]))
+  checkVkResult vulkan.device.vkCreateShaderModule(
+    addr(createInfoFragment), nil, addr(result[1])
+  )
 
-template ForVertexDataFields(shader: typed, fieldname, valuename, isinstancename, body: untyped): untyped =
+template ForVertexDataFields(
+    shader: typed, fieldname, valuename, isinstancename, body: untyped
+): untyped =
   for theFieldname, value in fieldPairs(shader):
-    when hasCustomPragma(value, VertexAttribute) or hasCustomPragma(value, InstanceAttribute):
+    when hasCustomPragma(value, VertexAttribute) or
+        hasCustomPragma(value, InstanceAttribute):
       when not typeof(value) is seq:
         {.error: "field '" & theFieldname & "' needs to be a seq".}
       when not typeof(value) is SupportedGPUType:
@@ -323,11 +417,15 @@
         const `isinstancename` {.inject.} = hasCustomPragma(value, InstanceAttribute)
         body
 
-proc createDescriptorSetLayouts[TShader](): array[MAX_DESCRIPTORSETS, VkDescriptorSetLayout] =
+proc createDescriptorSetLayouts[TShader](): array[
+    MAX_DESCRIPTORSETS, VkDescriptorSetLayout
+] =
   for _, value in fieldPairs(default(TShader)):
     when hasCustomPragma(value, DescriptorSet):
       var layoutbindings: seq[VkDescriptorSetLayoutBinding]
-      forDescriptorFields(value, fieldValue, descriptorType, descriptorCount, descriptorBindingNumber):
+      forDescriptorFields(
+        value, fieldValue, descriptorType, descriptorCount, descriptorBindingNumber
+      ):
         layoutbindings.add VkDescriptorSetLayoutBinding(
           binding: descriptorBindingNumber,
           descriptorType: descriptorType,
@@ -338,23 +436,23 @@
       var layoutCreateInfo = VkDescriptorSetLayoutCreateInfo(
         sType: VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
         bindingCount: layoutbindings.len.uint32,
-        pBindings: layoutbindings.ToCPointer
+        pBindings: layoutbindings.ToCPointer,
       )
       checkVkResult vkCreateDescriptorSetLayout(
         vulkan.device,
         addr(layoutCreateInfo),
         nil,
-        addr(result[value.getCustomPragmaVal(DescriptorSet)])
+        addr(result[value.getCustomPragmaVal(DescriptorSet)]),
       )
 
 proc createPipeline*[TShader](
-  renderPass: RenderPass,
-  topology: VkPrimitiveTopology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
-  polygonMode: VkPolygonMode = VK_POLYGON_MODE_FILL,
-  cullMode: openArray[VkCullModeFlagBits] = [VK_CULL_MODE_BACK_BIT],
-  frontFace: VkFrontFace = VK_FRONT_FACE_CLOCKWISE,
-  lineWidth = 1'f32,
-  depthClampEnable = false,
+    renderPass: RenderPass,
+    topology: VkPrimitiveTopology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
+    polygonMode: VkPolygonMode = VK_POLYGON_MODE_FILL,
+    cullMode: openArray[VkCullModeFlagBits] = [VK_CULL_MODE_BACK_BIT],
+    frontFace: VkFrontFace = VK_FRONT_FACE_CLOCKWISE,
+    lineWidth = 1'f32,
+    depthClampEnable = false,
 ): Pipeline[TShader] =
   # create pipeline
 
@@ -380,7 +478,9 @@
     pushConstantRangeCount: 1,
     pPushConstantRanges: addr(pushConstant),
   )
-  checkVkResult vkCreatePipelineLayout(vulkan.device, addr(pipelineLayoutInfo), nil, addr(result.layout))
+  checkVkResult vkCreatePipelineLayout(
+    vulkan.device, addr(pipelineLayoutInfo), nil, addr(result.layout)
+  )
 
   let stages = [
     VkPipelineShaderStageCreateInfo(
@@ -405,10 +505,15 @@
     bindings.add VkVertexInputBindingDescription(
       binding: inputBindingNumber,
       stride: sizeof(value).uint32,
-      inputRate: if isInstanceAttr: VK_VERTEX_INPUT_RATE_INSTANCE else: VK_VERTEX_INPUT_RATE_VERTEX,
+      inputRate:
+        if isInstanceAttr:
+          VK_VERTEX_INPUT_RATE_INSTANCE
+        else:
+          VK_VERTEX_INPUT_RATE_VERTEX,
     )
     # allows to submit larger data structures like Mat44, for most other types will be 1
-    let perDescriptorSize = sizeof(value).uint32 div numberOfVertexInputAttributeDescriptors(value)
+    let perDescriptorSize =
+      sizeof(value).uint32 div numberOfVertexInputAttributeDescriptors(value)
     for i in 0'u32 ..< numberOfVertexInputAttributeDescriptors(value):
       attributes.add VkVertexInputAttributeDescription(
         binding: inputBindingNumber,
@@ -471,7 +576,10 @@
       maxDepthBounds: 0'f32,
     )
     colorBlendAttachment = VkPipelineColorBlendAttachmentState(
-      colorWriteMask: toBits [VK_COLOR_COMPONENT_R_BIT, VK_COLOR_COMPONENT_G_BIT, VK_COLOR_COMPONENT_B_BIT, VK_COLOR_COMPONENT_A_BIT],
+      colorWriteMask: toBits [
+        VK_COLOR_COMPONENT_R_BIT, VK_COLOR_COMPONENT_G_BIT, VK_COLOR_COMPONENT_B_BIT,
+        VK_COLOR_COMPONENT_A_BIT,
+      ],
       blendEnable: true,
       srcColorBlendFactor: VK_BLEND_FACTOR_SRC_ALPHA,
       dstColorBlendFactor: VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
@@ -486,7 +594,7 @@
       logicOp: VK_LOGIC_OP_COPY,
       attachmentCount: 1,
       pAttachments: addr(colorBlendAttachment),
-      blendConstants: [0'f32, 0'f32, 0'f32, 0'f32]
+      blendConstants: [0'f32, 0'f32, 0'f32, 0'f32],
     )
     dynamicStates = [VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR]
     dynamicState = VkPipelineDynamicStateCreateInfo(
@@ -503,7 +611,11 @@
     pViewportState: addr(viewportState),
     pRasterizationState: addr(rasterizer),
     pMultisampleState: addr(multisampling),
-    pDepthStencilState: if renderPass.depthBuffer: addr(depthStencil) else: nil,
+    pDepthStencilState:
+      if renderPass.depthBuffer:
+        addr(depthStencil)
+      else:
+        nil,
     pColorBlendState: addr(colorBlending),
     pDynamicState: addr(dynamicState),
     layout: result.layout,
@@ -513,24 +625,20 @@
     basePipelineIndex: -1,
   )
   checkVkResult vkCreateGraphicsPipelines(
-    vulkan.device,
-    VkPipelineCache(0),
-    1,
-    addr(createInfo),
-    nil,
-    addr(result.vk)
+    vulkan.device, VkPipelineCache(0), 1, addr(createInfo), nil, addr(result.vk)
   )
 
 func layout*(pipeline: Pipeline, level: int): VkDescriptorSetLayout =
   pipeline.descriptorSetLayouts[level]
 
-template withPipeline*(commandbuffer: VkCommandBuffer, pipeline: Pipeline, body: untyped): untyped =
+template withPipeline*(
+    commandbuffer: VkCommandBuffer, pipeline: Pipeline, body: untyped
+): untyped =
   block:
     vkCmdBindPipeline(commandbuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline.vk)
     body
 
 proc destroyPipeline*(pipeline: Pipeline) =
-
   for descriptorSetLayout in pipeline.descriptorSetLayouts:
     vkDestroyDescriptorSetLayout(vulkan.device, descriptorSetLayout, nil)
 
--- a/semicongine/rendering/swapchain.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/rendering/swapchain.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,14 +1,14 @@
 const N_FRAMEBUFFERS = 3'u32
 
 proc initSwapchain(
-  renderPass: RenderPass,
-  vSync: bool = false,
-  oldSwapchain: Swapchain = nil,
+    renderPass: RenderPass, vSync: bool = false, oldSwapchain: Swapchain = nil
 ): Swapchain =
   assert vulkan.instance.Valid, "Vulkan not initialized"
 
   var capabilities: VkSurfaceCapabilitiesKHR
-  checkVkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(vulkan.physicalDevice, vulkan.surface, addr(capabilities))
+  checkVkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
+    vulkan.physicalDevice, vulkan.surface, addr(capabilities)
+  )
   let
     width = capabilities.currentExtent.width
     height = capabilities.currentExtent.height
@@ -23,22 +23,33 @@
     minFramebufferCount = min(minFramebufferCount, capabilities.maxImageCount)
 
   # create swapchain
-  let hasTripleBuffering = VK_PRESENT_MODE_MAILBOX_KHR in svkGetPhysicalDeviceSurfacePresentModesKHR()
+  let hasTripleBuffering =
+    VK_PRESENT_MODE_MAILBOX_KHR in svkGetPhysicalDeviceSurfacePresentModesKHR()
   var swapchainCreateInfo = VkSwapchainCreateInfoKHR(
     sType: VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
     surface: vulkan.surface,
     minImageCount: minFramebufferCount,
     imageFormat: SURFACE_FORMAT,
-    imageColorSpace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, # only one supported without special extensions
+    imageColorSpace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
+      # only one supported without special extensions
     imageExtent: capabilities.currentExtent,
     imageArrayLayers: 1,
     imageUsage: toBits [VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT],
     imageSharingMode: VK_SHARING_MODE_EXCLUSIVE,
     preTransform: capabilities.currentTransform,
-    compositeAlpha: VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,  # only used for blending with other windows, can be opaque
-    presentMode: if (vSync or not hasTripleBuffering): VK_PRESENT_MODE_FIFO_KHR else: VK_PRESENT_MODE_MAILBOX_KHR,
+    compositeAlpha: VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
+      # only used for blending with other windows, can be opaque
+    presentMode:
+      if (vSync or not hasTripleBuffering):
+        VK_PRESENT_MODE_FIFO_KHR
+      else:
+        VK_PRESENT_MODE_MAILBOX_KHR,
     clipped: true,
-    oldSwapchain: if oldSwapchain != nil: oldSwapchain.vk else: VkSwapchainKHR(0),
+    oldSwapchain:
+      if oldSwapchain != nil:
+        oldSwapchain.vk
+      else:
+        VkSwapchainKHR(0),
   )
   var swapchain = Swapchain(
     width: width,
@@ -48,7 +59,9 @@
     oldSwapchain: oldSwapchain,
   )
 
-  if vkCreateSwapchainKHR(vulkan.device, addr(swapchainCreateInfo), nil, addr(swapchain.vk)) != VK_SUCCESS:
+  if vkCreateSwapchainKHR(
+    vulkan.device, addr(swapchainCreateInfo), nil, addr(swapchain.vk)
+  ) != VK_SUCCESS:
     return nil
 
   if swapchain.oldSwapchain != nil:
@@ -65,19 +78,15 @@
     )
     let requirements = svkGetImageMemoryRequirements(swapchain.depthImage)
     swapchain.depthMemory = svkAllocateMemory(
-      requirements.size,
-      bestMemory(mappable = false, filter = requirements.memoryTypes)
+      requirements.size, bestMemory(mappable = false, filter = requirements.memoryTypes)
     )
     checkVkResult vkBindImageMemory(
-      vulkan.device,
-      swapchain.depthImage,
-      swapchain.depthMemory,
-      0,
+      vulkan.device, swapchain.depthImage, swapchain.depthMemory, 0
     )
     swapchain.depthImageView = svkCreate2DImageView(
       image = swapchain.depthImage,
       format = DEPTH_FORMAT,
-      aspect = VK_IMAGE_ASPECT_DEPTH_BIT
+      aspect = VK_IMAGE_ASPECT_DEPTH_BIT,
     )
 
   # create msaa image+view if desired
@@ -86,27 +95,29 @@
       width = width,
       height = height,
       format = SURFACE_FORMAT,
-      usage = [VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT],
+      usage =
+        [VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT],
       samples = renderPass.samples,
     )
     let requirements = svkGetImageMemoryRequirements(swapchain.msaaImage)
     swapchain.msaaMemory = svkAllocateMemory(
-      requirements.size,
-      bestMemory(mappable = false, filter = requirements.memoryTypes)
+      requirements.size, bestMemory(mappable = false, filter = requirements.memoryTypes)
     )
     checkVkResult vkBindImageMemory(
-      vulkan.device,
-      swapchain.msaaImage,
-      swapchain.msaaMemory,
-      0,
+      vulkan.device, swapchain.msaaImage, swapchain.msaaMemory, 0
     )
-    swapchain.msaaImageView = svkCreate2DImageView(image = swapchain.msaaImage, format = SURFACE_FORMAT)
+    swapchain.msaaImageView =
+      svkCreate2DImageView(image = swapchain.msaaImage, format = SURFACE_FORMAT)
 
   # create framebuffers
   var actualNFramebuffers: uint32
-  checkVkResult vkGetSwapchainImagesKHR(vulkan.device, swapchain.vk, addr(actualNFramebuffers), nil)
+  checkVkResult vkGetSwapchainImagesKHR(
+    vulkan.device, swapchain.vk, addr(actualNFramebuffers), nil
+  )
   var framebuffers = newSeq[VkImage](actualNFramebuffers)
-  checkVkResult vkGetSwapchainImagesKHR(vulkan.device, swapchain.vk, addr(actualNFramebuffers), framebuffers.ToCPointer)
+  checkVkResult vkGetSwapchainImagesKHR(
+    vulkan.device, swapchain.vk, addr(actualNFramebuffers), framebuffers.ToCPointer
+  )
 
   for framebuffer in framebuffers:
     swapchain.framebufferViews.add svkCreate2DImageView(framebuffer, SURFACE_FORMAT)
@@ -118,7 +129,12 @@
         attachments = @[swapchain.framebufferViews[^1]]
     else:
       if renderPass.depthBuffer:
-        attachments = @[swapchain.msaaImageView, swapchain.depthImageView, swapchain.framebufferViews[^1]]
+        attachments =
+          @[
+            swapchain.msaaImageView,
+            swapchain.depthImageView,
+            swapchain.framebufferViews[^1],
+          ]
       else:
         attachments = @[swapchain.msaaImageView, swapchain.framebufferViews[^1]]
 
@@ -141,14 +157,18 @@
     flags: toBits [VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT],
     queueFamilyIndex: vulkan.graphicsQueueFamily,
   )
-  checkVkResult vkCreateCommandPool(vulkan.device, addr(commandPoolCreateInfo), nil, addr(swapchain.commandBufferPool))
+  checkVkResult vkCreateCommandPool(
+    vulkan.device, addr(commandPoolCreateInfo), nil, addr(swapchain.commandBufferPool)
+  )
   var allocInfo = VkCommandBufferAllocateInfo(
     sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
     commandPool: swapchain.commandBufferPool,
     level: VK_COMMAND_BUFFER_LEVEL_PRIMARY,
     commandBufferCount: INFLIGHTFRAMES,
   )
-  checkVkResult vkAllocateCommandBuffers(vulkan.device, addr(allocInfo), swapchain.commandBuffers.ToCPointer)
+  checkVkResult vkAllocateCommandBuffers(
+    vulkan.device, addr(allocInfo), swapchain.commandBuffers.ToCPointer
+  )
 
   return swapchain
 
@@ -221,7 +241,7 @@
     queue = vulkan.graphicsQueue,
     submitCount = 1,
     pSubmits = addr(submitInfo),
-    fence = swapchain.queueFinishedFence[swapchain.currentFiF]
+    fence = swapchain.queueFinishedFence[swapchain.currentFiF],
   )
 
   var presentInfo = VkPresentInfoKHR(
@@ -249,9 +269,7 @@
 
 proc recreate(swapchain: Swapchain): Swapchain =
   initSwapchain(
-    renderPass = swapchain.renderPass,
-    vSync = swapchain.vSync,
-    oldSwapchain = swapchain,
+    renderPass = swapchain.renderPass, vSync = swapchain.vSync, oldSwapchain = swapchain
   )
 
 template withNextFrame*(framebufferName, commandBufferName, body: untyped): untyped =
@@ -260,12 +278,15 @@
   if maybeFramebuffer.isSome:
     block:
       let `framebufferName` {.inject.} = maybeFramebuffer.get
-      let `commandBufferName` {.inject.} = vulkan.swapchain.commandBuffers[vulkan.swapchain.currentFiF]
+      let `commandBufferName` {.inject.} =
+        vulkan.swapchain.commandBuffers[vulkan.swapchain.currentFiF]
       let beginInfo = VkCommandBufferBeginInfo(
         sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
         flags: VkCommandBufferUsageFlags(VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT),
       )
-      checkVkResult vkResetCommandBuffer(`commandBufferName`, VkCommandBufferResetFlags(0))
+      checkVkResult vkResetCommandBuffer(
+        `commandBufferName`, VkCommandBufferResetFlags(0)
+      )
       checkVkResult vkBeginCommandBuffer(`commandBufferName`, addr(beginInfo))
 
       body
--- a/semicongine/rendering/vulkan/api.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/rendering/vulkan/api.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -8,21 +8,26 @@
 type
   VkHandle* = distinct uint
   VkNonDispatchableHandle* = distinct uint
+
 when defined(linux):
   let vulkanLib* = loadLib("libvulkan.so.1")
 when defined(windows):
   let vulkanLib* = loadLib("vulkan-1.dll")
 if vulkanLib == nil:
   raise newException(Exception, "Unable to load vulkan library")
-func VK_MAKE_API_VERSION*(variant: uint32, major: uint32, minor: uint32, patch: uint32): uint32 {.compileTime.} =
+func VK_MAKE_API_VERSION*(
+    variant: uint32, major: uint32, minor: uint32, patch: uint32
+): uint32 {.compileTime.} =
   (variant shl 29) or (major shl 22) or (minor shl 12) or patch
 
 # custom enum iteration (for enum values > 2^16)
 macro enumFullRange(a: typed): untyped =
-  newNimNode(nnkBracket).add(a.getType[1][1..^1])
+  newNimNode(nnkBracket).add(a.getType[1][1 ..^ 1])
 
 iterator items*[T: HoleyEnum](E: typedesc[T]): T =
-  for a in enumFullRange(E): yield a
+  for a in enumFullRange(E):
+    yield a
+
 const
   VK_MAX_PHYSICAL_DEVICE_NAME_SIZE*: uint32 = 256
   VK_UUID_SIZE*: uint32 = 16
@@ -121,198 +126,583 @@
   VkVideoSessionParametersKHR* = distinct VkNonDispatchableHandle
   VkSemaphoreSciSyncPoolNV* = distinct VkNonDispatchableHandle
   VkRemoteAddressNV* = pointer
-proc `$`*(handle: VkInstance): string = "VkInstance(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkInstance): bool = uint(handle) != 0
-proc Reset*(handle: var VkInstance) = handle = VkInstance(0)
-proc `==`*(a, b: VkInstance): bool = uint(a) == uint(b)
-proc `$`*(handle: VkPhysicalDevice): string = "VkPhysicalDevice(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkPhysicalDevice): bool = uint(handle) != 0
-proc Reset*(handle: var VkPhysicalDevice) = handle = VkPhysicalDevice(0)
-proc `==`*(a, b: VkPhysicalDevice): bool = uint(a) == uint(b)
-proc `$`*(handle: VkDevice): string = "VkDevice(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkDevice): bool = uint(handle) != 0
-proc Reset*(handle: var VkDevice) = handle = VkDevice(0)
-proc `==`*(a, b: VkDevice): bool = uint(a) == uint(b)
-proc `$`*(handle: VkQueue): string = "VkQueue(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkQueue): bool = uint(handle) != 0
-proc Reset*(handle: var VkQueue) = handle = VkQueue(0)
-proc `==`*(a, b: VkQueue): bool = uint(a) == uint(b)
-proc `$`*(handle: VkCommandBuffer): string = "VkCommandBuffer(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkCommandBuffer): bool = uint(handle) != 0
-proc Reset*(handle: var VkCommandBuffer) = handle = VkCommandBuffer(0)
-proc `==`*(a, b: VkCommandBuffer): bool = uint(a) == uint(b)
-proc `$`*(handle: VkDeviceMemory): string = "VkDeviceMemory(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkDeviceMemory): bool = uint(handle) != 0
-proc Reset*(handle: var VkDeviceMemory) = handle = VkDeviceMemory(0)
-proc `==`*(a, b: VkDeviceMemory): bool = uint(a) == uint(b)
-proc `$`*(handle: VkCommandPool): string = "VkCommandPool(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkCommandPool): bool = uint(handle) != 0
-proc Reset*(handle: var VkCommandPool) = handle = VkCommandPool(0)
-proc `==`*(a, b: VkCommandPool): bool = uint(a) == uint(b)
-proc `$`*(handle: VkBuffer): string = "VkBuffer(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkBuffer): bool = uint(handle) != 0
-proc Reset*(handle: var VkBuffer) = handle = VkBuffer(0)
-proc `==`*(a, b: VkBuffer): bool = uint(a) == uint(b)
-proc `$`*(handle: VkBufferView): string = "VkBufferView(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkBufferView): bool = uint(handle) != 0
-proc Reset*(handle: var VkBufferView) = handle = VkBufferView(0)
-proc `==`*(a, b: VkBufferView): bool = uint(a) == uint(b)
-proc `$`*(handle: VkImage): string = "VkImage(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkImage): bool = uint(handle) != 0
-proc Reset*(handle: var VkImage) = handle = VkImage(0)
-proc `==`*(a, b: VkImage): bool = uint(a) == uint(b)
-proc `$`*(handle: VkImageView): string = "VkImageView(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkImageView): bool = uint(handle) != 0
-proc Reset*(handle: var VkImageView) = handle = VkImageView(0)
-proc `==`*(a, b: VkImageView): bool = uint(a) == uint(b)
-proc `$`*(handle: VkShaderModule): string = "VkShaderModule(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkShaderModule): bool = uint(handle) != 0
-proc Reset*(handle: var VkShaderModule) = handle = VkShaderModule(0)
-proc `==`*(a, b: VkShaderModule): bool = uint(a) == uint(b)
-proc `$`*(handle: VkPipeline): string = "VkPipeline(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkPipeline): bool = uint(handle) != 0
-proc Reset*(handle: var VkPipeline) = handle = VkPipeline(0)
-proc `==`*(a, b: VkPipeline): bool = uint(a) == uint(b)
-proc `$`*(handle: VkPipelineLayout): string = "VkPipelineLayout(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkPipelineLayout): bool = uint(handle) != 0
-proc Reset*(handle: var VkPipelineLayout) = handle = VkPipelineLayout(0)
-proc `==`*(a, b: VkPipelineLayout): bool = uint(a) == uint(b)
-proc `$`*(handle: VkSampler): string = "VkSampler(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkSampler): bool = uint(handle) != 0
-proc Reset*(handle: var VkSampler) = handle = VkSampler(0)
-proc `==`*(a, b: VkSampler): bool = uint(a) == uint(b)
-proc `$`*(handle: VkDescriptorSet): string = "VkDescriptorSet(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkDescriptorSet): bool = uint(handle) != 0
-proc Reset*(handle: var VkDescriptorSet) = handle = VkDescriptorSet(0)
-proc `==`*(a, b: VkDescriptorSet): bool = uint(a) == uint(b)
-proc `$`*(handle: VkDescriptorSetLayout): string = "VkDescriptorSetLayout(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkDescriptorSetLayout): bool = uint(handle) != 0
-proc Reset*(handle: var VkDescriptorSetLayout) = handle = VkDescriptorSetLayout(0)
-proc `==`*(a, b: VkDescriptorSetLayout): bool = uint(a) == uint(b)
-proc `$`*(handle: VkDescriptorPool): string = "VkDescriptorPool(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkDescriptorPool): bool = uint(handle) != 0
-proc Reset*(handle: var VkDescriptorPool) = handle = VkDescriptorPool(0)
-proc `==`*(a, b: VkDescriptorPool): bool = uint(a) == uint(b)
-proc `$`*(handle: VkFence): string = "VkFence(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkFence): bool = uint(handle) != 0
-proc Reset*(handle: var VkFence) = handle = VkFence(0)
-proc `==`*(a, b: VkFence): bool = uint(a) == uint(b)
-proc `$`*(handle: VkSemaphore): string = "VkSemaphore(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkSemaphore): bool = uint(handle) != 0
-proc Reset*(handle: var VkSemaphore) = handle = VkSemaphore(0)
-proc `==`*(a, b: VkSemaphore): bool = uint(a) == uint(b)
-proc `$`*(handle: VkEvent): string = "VkEvent(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkEvent): bool = uint(handle) != 0
-proc Reset*(handle: var VkEvent) = handle = VkEvent(0)
-proc `==`*(a, b: VkEvent): bool = uint(a) == uint(b)
-proc `$`*(handle: VkQueryPool): string = "VkQueryPool(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkQueryPool): bool = uint(handle) != 0
-proc Reset*(handle: var VkQueryPool) = handle = VkQueryPool(0)
-proc `==`*(a, b: VkQueryPool): bool = uint(a) == uint(b)
-proc `$`*(handle: VkFramebuffer): string = "VkFramebuffer(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkFramebuffer): bool = uint(handle) != 0
-proc Reset*(handle: var VkFramebuffer) = handle = VkFramebuffer(0)
-proc `==`*(a, b: VkFramebuffer): bool = uint(a) == uint(b)
-proc `$`*(handle: VkRenderPass): string = "VkRenderPass(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkRenderPass): bool = uint(handle) != 0
-proc Reset*(handle: var VkRenderPass) = handle = VkRenderPass(0)
-proc `==`*(a, b: VkRenderPass): bool = uint(a) == uint(b)
-proc `$`*(handle: VkPipelineCache): string = "VkPipelineCache(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkPipelineCache): bool = uint(handle) != 0
-proc Reset*(handle: var VkPipelineCache) = handle = VkPipelineCache(0)
-proc `==`*(a, b: VkPipelineCache): bool = uint(a) == uint(b)
-proc `$`*(handle: VkIndirectCommandsLayoutNV): string = "VkIndirectCommandsLayoutNV(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkIndirectCommandsLayoutNV): bool = uint(handle) != 0
-proc Reset*(handle: var VkIndirectCommandsLayoutNV) = handle = VkIndirectCommandsLayoutNV(0)
-proc `==`*(a, b: VkIndirectCommandsLayoutNV): bool = uint(a) == uint(b)
-proc `$`*(handle: VkDescriptorUpdateTemplate): string = "VkDescriptorUpdateTemplate(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkDescriptorUpdateTemplate): bool = uint(handle) != 0
-proc Reset*(handle: var VkDescriptorUpdateTemplate) = handle = VkDescriptorUpdateTemplate(0)
-proc `==`*(a, b: VkDescriptorUpdateTemplate): bool = uint(a) == uint(b)
-proc `$`*(handle: VkSamplerYcbcrConversion): string = "VkSamplerYcbcrConversion(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkSamplerYcbcrConversion): bool = uint(handle) != 0
-proc Reset*(handle: var VkSamplerYcbcrConversion) = handle = VkSamplerYcbcrConversion(0)
-proc `==`*(a, b: VkSamplerYcbcrConversion): bool = uint(a) == uint(b)
-proc `$`*(handle: VkValidationCacheEXT): string = "VkValidationCacheEXT(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkValidationCacheEXT): bool = uint(handle) != 0
-proc Reset*(handle: var VkValidationCacheEXT) = handle = VkValidationCacheEXT(0)
-proc `==`*(a, b: VkValidationCacheEXT): bool = uint(a) == uint(b)
-proc `$`*(handle: VkAccelerationStructureKHR): string = "VkAccelerationStructureKHR(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkAccelerationStructureKHR): bool = uint(handle) != 0
-proc Reset*(handle: var VkAccelerationStructureKHR) = handle = VkAccelerationStructureKHR(0)
-proc `==`*(a, b: VkAccelerationStructureKHR): bool = uint(a) == uint(b)
-proc `$`*(handle: VkAccelerationStructureNV): string = "VkAccelerationStructureNV(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkAccelerationStructureNV): bool = uint(handle) != 0
-proc Reset*(handle: var VkAccelerationStructureNV) = handle = VkAccelerationStructureNV(0)
-proc `==`*(a, b: VkAccelerationStructureNV): bool = uint(a) == uint(b)
-proc `$`*(handle: VkPerformanceConfigurationINTEL): string = "VkPerformanceConfigurationINTEL(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkPerformanceConfigurationINTEL): bool = uint(handle) != 0
-proc Reset*(handle: var VkPerformanceConfigurationINTEL) = handle = VkPerformanceConfigurationINTEL(0)
-proc `==`*(a, b: VkPerformanceConfigurationINTEL): bool = uint(a) == uint(b)
-proc `$`*(handle: VkBufferCollectionFUCHSIA): string = "VkBufferCollectionFUCHSIA(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkBufferCollectionFUCHSIA): bool = uint(handle) != 0
-proc Reset*(handle: var VkBufferCollectionFUCHSIA) = handle = VkBufferCollectionFUCHSIA(0)
-proc `==`*(a, b: VkBufferCollectionFUCHSIA): bool = uint(a) == uint(b)
-proc `$`*(handle: VkDeferredOperationKHR): string = "VkDeferredOperationKHR(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkDeferredOperationKHR): bool = uint(handle) != 0
-proc Reset*(handle: var VkDeferredOperationKHR) = handle = VkDeferredOperationKHR(0)
-proc `==`*(a, b: VkDeferredOperationKHR): bool = uint(a) == uint(b)
-proc `$`*(handle: VkPrivateDataSlot): string = "VkPrivateDataSlot(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkPrivateDataSlot): bool = uint(handle) != 0
-proc Reset*(handle: var VkPrivateDataSlot) = handle = VkPrivateDataSlot(0)
-proc `==`*(a, b: VkPrivateDataSlot): bool = uint(a) == uint(b)
-proc `$`*(handle: VkCuModuleNVX): string = "VkCuModuleNVX(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkCuModuleNVX): bool = uint(handle) != 0
-proc Reset*(handle: var VkCuModuleNVX) = handle = VkCuModuleNVX(0)
-proc `==`*(a, b: VkCuModuleNVX): bool = uint(a) == uint(b)
-proc `$`*(handle: VkCuFunctionNVX): string = "VkCuFunctionNVX(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkCuFunctionNVX): bool = uint(handle) != 0
-proc Reset*(handle: var VkCuFunctionNVX) = handle = VkCuFunctionNVX(0)
-proc `==`*(a, b: VkCuFunctionNVX): bool = uint(a) == uint(b)
-proc `$`*(handle: VkOpticalFlowSessionNV): string = "VkOpticalFlowSessionNV(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkOpticalFlowSessionNV): bool = uint(handle) != 0
-proc Reset*(handle: var VkOpticalFlowSessionNV) = handle = VkOpticalFlowSessionNV(0)
-proc `==`*(a, b: VkOpticalFlowSessionNV): bool = uint(a) == uint(b)
-proc `$`*(handle: VkMicromapEXT): string = "VkMicromapEXT(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkMicromapEXT): bool = uint(handle) != 0
-proc Reset*(handle: var VkMicromapEXT) = handle = VkMicromapEXT(0)
-proc `==`*(a, b: VkMicromapEXT): bool = uint(a) == uint(b)
-proc `$`*(handle: VkDisplayKHR): string = "VkDisplayKHR(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkDisplayKHR): bool = uint(handle) != 0
-proc Reset*(handle: var VkDisplayKHR) = handle = VkDisplayKHR(0)
-proc `==`*(a, b: VkDisplayKHR): bool = uint(a) == uint(b)
-proc `$`*(handle: VkDisplayModeKHR): string = "VkDisplayModeKHR(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkDisplayModeKHR): bool = uint(handle) != 0
-proc Reset*(handle: var VkDisplayModeKHR) = handle = VkDisplayModeKHR(0)
-proc `==`*(a, b: VkDisplayModeKHR): bool = uint(a) == uint(b)
-proc `$`*(handle: VkSurfaceKHR): string = "VkSurfaceKHR(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkSurfaceKHR): bool = uint(handle) != 0
-proc Reset*(handle: var VkSurfaceKHR) = handle = VkSurfaceKHR(0)
-proc `==`*(a, b: VkSurfaceKHR): bool = uint(a) == uint(b)
-proc `$`*(handle: VkSwapchainKHR): string = "VkSwapchainKHR(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkSwapchainKHR): bool = uint(handle) != 0
-proc Reset*(handle: var VkSwapchainKHR) = handle = VkSwapchainKHR(0)
-proc `==`*(a, b: VkSwapchainKHR): bool = uint(a) == uint(b)
-proc `$`*(handle: VkDebugReportCallbackEXT): string = "VkDebugReportCallbackEXT(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkDebugReportCallbackEXT): bool = uint(handle) != 0
-proc Reset*(handle: var VkDebugReportCallbackEXT) = handle = VkDebugReportCallbackEXT(0)
-proc `==`*(a, b: VkDebugReportCallbackEXT): bool = uint(a) == uint(b)
-proc `$`*(handle: VkDebugUtilsMessengerEXT): string = "VkDebugUtilsMessengerEXT(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkDebugUtilsMessengerEXT): bool = uint(handle) != 0
-proc Reset*(handle: var VkDebugUtilsMessengerEXT) = handle = VkDebugUtilsMessengerEXT(0)
-proc `==`*(a, b: VkDebugUtilsMessengerEXT): bool = uint(a) == uint(b)
-proc `$`*(handle: VkVideoSessionKHR): string = "VkVideoSessionKHR(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkVideoSessionKHR): bool = uint(handle) != 0
-proc Reset*(handle: var VkVideoSessionKHR) = handle = VkVideoSessionKHR(0)
-proc `==`*(a, b: VkVideoSessionKHR): bool = uint(a) == uint(b)
-proc `$`*(handle: VkVideoSessionParametersKHR): string = "VkVideoSessionParametersKHR(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkVideoSessionParametersKHR): bool = uint(handle) != 0
-proc Reset*(handle: var VkVideoSessionParametersKHR) = handle = VkVideoSessionParametersKHR(0)
-proc `==`*(a, b: VkVideoSessionParametersKHR): bool = uint(a) == uint(b)
-proc `$`*(handle: VkSemaphoreSciSyncPoolNV): string = "VkSemaphoreSciSyncPoolNV(" & $(uint(handle)) & ")"
-proc Valid*(handle: VkSemaphoreSciSyncPoolNV): bool = uint(handle) != 0
-proc Reset*(handle: var VkSemaphoreSciSyncPoolNV) = handle = VkSemaphoreSciSyncPoolNV(0)
-proc `==`*(a, b: VkSemaphoreSciSyncPoolNV): bool = uint(a) == uint(b)
+
+proc `$`*(handle: VkInstance): string =
+  "VkInstance(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkInstance): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkInstance) =
+  handle = VkInstance(0)
+
+proc `==`*(a, b: VkInstance): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkPhysicalDevice): string =
+  "VkPhysicalDevice(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkPhysicalDevice): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkPhysicalDevice) =
+  handle = VkPhysicalDevice(0)
+
+proc `==`*(a, b: VkPhysicalDevice): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkDevice): string =
+  "VkDevice(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkDevice): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkDevice) =
+  handle = VkDevice(0)
+
+proc `==`*(a, b: VkDevice): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkQueue): string =
+  "VkQueue(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkQueue): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkQueue) =
+  handle = VkQueue(0)
+
+proc `==`*(a, b: VkQueue): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkCommandBuffer): string =
+  "VkCommandBuffer(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkCommandBuffer): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkCommandBuffer) =
+  handle = VkCommandBuffer(0)
+
+proc `==`*(a, b: VkCommandBuffer): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkDeviceMemory): string =
+  "VkDeviceMemory(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkDeviceMemory): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkDeviceMemory) =
+  handle = VkDeviceMemory(0)
+
+proc `==`*(a, b: VkDeviceMemory): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkCommandPool): string =
+  "VkCommandPool(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkCommandPool): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkCommandPool) =
+  handle = VkCommandPool(0)
+
+proc `==`*(a, b: VkCommandPool): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkBuffer): string =
+  "VkBuffer(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkBuffer): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkBuffer) =
+  handle = VkBuffer(0)
+
+proc `==`*(a, b: VkBuffer): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkBufferView): string =
+  "VkBufferView(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkBufferView): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkBufferView) =
+  handle = VkBufferView(0)
+
+proc `==`*(a, b: VkBufferView): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkImage): string =
+  "VkImage(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkImage): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkImage) =
+  handle = VkImage(0)
+
+proc `==`*(a, b: VkImage): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkImageView): string =
+  "VkImageView(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkImageView): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkImageView) =
+  handle = VkImageView(0)
+
+proc `==`*(a, b: VkImageView): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkShaderModule): string =
+  "VkShaderModule(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkShaderModule): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkShaderModule) =
+  handle = VkShaderModule(0)
+
+proc `==`*(a, b: VkShaderModule): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkPipeline): string =
+  "VkPipeline(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkPipeline): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkPipeline) =
+  handle = VkPipeline(0)
+
+proc `==`*(a, b: VkPipeline): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkPipelineLayout): string =
+  "VkPipelineLayout(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkPipelineLayout): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkPipelineLayout) =
+  handle = VkPipelineLayout(0)
+
+proc `==`*(a, b: VkPipelineLayout): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkSampler): string =
+  "VkSampler(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkSampler): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkSampler) =
+  handle = VkSampler(0)
+
+proc `==`*(a, b: VkSampler): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkDescriptorSet): string =
+  "VkDescriptorSet(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkDescriptorSet): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkDescriptorSet) =
+  handle = VkDescriptorSet(0)
+
+proc `==`*(a, b: VkDescriptorSet): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkDescriptorSetLayout): string =
+  "VkDescriptorSetLayout(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkDescriptorSetLayout): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkDescriptorSetLayout) =
+  handle = VkDescriptorSetLayout(0)
+
+proc `==`*(a, b: VkDescriptorSetLayout): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkDescriptorPool): string =
+  "VkDescriptorPool(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkDescriptorPool): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkDescriptorPool) =
+  handle = VkDescriptorPool(0)
+
+proc `==`*(a, b: VkDescriptorPool): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkFence): string =
+  "VkFence(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkFence): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkFence) =
+  handle = VkFence(0)
+
+proc `==`*(a, b: VkFence): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkSemaphore): string =
+  "VkSemaphore(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkSemaphore): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkSemaphore) =
+  handle = VkSemaphore(0)
+
+proc `==`*(a, b: VkSemaphore): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkEvent): string =
+  "VkEvent(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkEvent): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkEvent) =
+  handle = VkEvent(0)
+
+proc `==`*(a, b: VkEvent): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkQueryPool): string =
+  "VkQueryPool(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkQueryPool): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkQueryPool) =
+  handle = VkQueryPool(0)
+
+proc `==`*(a, b: VkQueryPool): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkFramebuffer): string =
+  "VkFramebuffer(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkFramebuffer): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkFramebuffer) =
+  handle = VkFramebuffer(0)
+
+proc `==`*(a, b: VkFramebuffer): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkRenderPass): string =
+  "VkRenderPass(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkRenderPass): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkRenderPass) =
+  handle = VkRenderPass(0)
+
+proc `==`*(a, b: VkRenderPass): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkPipelineCache): string =
+  "VkPipelineCache(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkPipelineCache): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkPipelineCache) =
+  handle = VkPipelineCache(0)
+
+proc `==`*(a, b: VkPipelineCache): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkIndirectCommandsLayoutNV): string =
+  "VkIndirectCommandsLayoutNV(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkIndirectCommandsLayoutNV): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkIndirectCommandsLayoutNV) =
+  handle = VkIndirectCommandsLayoutNV(0)
+
+proc `==`*(a, b: VkIndirectCommandsLayoutNV): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkDescriptorUpdateTemplate): string =
+  "VkDescriptorUpdateTemplate(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkDescriptorUpdateTemplate): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkDescriptorUpdateTemplate) =
+  handle = VkDescriptorUpdateTemplate(0)
+
+proc `==`*(a, b: VkDescriptorUpdateTemplate): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkSamplerYcbcrConversion): string =
+  "VkSamplerYcbcrConversion(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkSamplerYcbcrConversion): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkSamplerYcbcrConversion) =
+  handle = VkSamplerYcbcrConversion(0)
+
+proc `==`*(a, b: VkSamplerYcbcrConversion): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkValidationCacheEXT): string =
+  "VkValidationCacheEXT(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkValidationCacheEXT): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkValidationCacheEXT) =
+  handle = VkValidationCacheEXT(0)
+
+proc `==`*(a, b: VkValidationCacheEXT): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkAccelerationStructureKHR): string =
+  "VkAccelerationStructureKHR(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkAccelerationStructureKHR): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkAccelerationStructureKHR) =
+  handle = VkAccelerationStructureKHR(0)
+
+proc `==`*(a, b: VkAccelerationStructureKHR): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkAccelerationStructureNV): string =
+  "VkAccelerationStructureNV(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkAccelerationStructureNV): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkAccelerationStructureNV) =
+  handle = VkAccelerationStructureNV(0)
+
+proc `==`*(a, b: VkAccelerationStructureNV): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkPerformanceConfigurationINTEL): string =
+  "VkPerformanceConfigurationINTEL(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkPerformanceConfigurationINTEL): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkPerformanceConfigurationINTEL) =
+  handle = VkPerformanceConfigurationINTEL(0)
+
+proc `==`*(a, b: VkPerformanceConfigurationINTEL): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkBufferCollectionFUCHSIA): string =
+  "VkBufferCollectionFUCHSIA(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkBufferCollectionFUCHSIA): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkBufferCollectionFUCHSIA) =
+  handle = VkBufferCollectionFUCHSIA(0)
+
+proc `==`*(a, b: VkBufferCollectionFUCHSIA): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkDeferredOperationKHR): string =
+  "VkDeferredOperationKHR(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkDeferredOperationKHR): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkDeferredOperationKHR) =
+  handle = VkDeferredOperationKHR(0)
+
+proc `==`*(a, b: VkDeferredOperationKHR): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkPrivateDataSlot): string =
+  "VkPrivateDataSlot(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkPrivateDataSlot): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkPrivateDataSlot) =
+  handle = VkPrivateDataSlot(0)
+
+proc `==`*(a, b: VkPrivateDataSlot): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkCuModuleNVX): string =
+  "VkCuModuleNVX(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkCuModuleNVX): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkCuModuleNVX) =
+  handle = VkCuModuleNVX(0)
+
+proc `==`*(a, b: VkCuModuleNVX): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkCuFunctionNVX): string =
+  "VkCuFunctionNVX(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkCuFunctionNVX): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkCuFunctionNVX) =
+  handle = VkCuFunctionNVX(0)
+
+proc `==`*(a, b: VkCuFunctionNVX): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkOpticalFlowSessionNV): string =
+  "VkOpticalFlowSessionNV(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkOpticalFlowSessionNV): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkOpticalFlowSessionNV) =
+  handle = VkOpticalFlowSessionNV(0)
+
+proc `==`*(a, b: VkOpticalFlowSessionNV): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkMicromapEXT): string =
+  "VkMicromapEXT(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkMicromapEXT): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkMicromapEXT) =
+  handle = VkMicromapEXT(0)
+
+proc `==`*(a, b: VkMicromapEXT): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkDisplayKHR): string =
+  "VkDisplayKHR(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkDisplayKHR): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkDisplayKHR) =
+  handle = VkDisplayKHR(0)
+
+proc `==`*(a, b: VkDisplayKHR): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkDisplayModeKHR): string =
+  "VkDisplayModeKHR(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkDisplayModeKHR): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkDisplayModeKHR) =
+  handle = VkDisplayModeKHR(0)
+
+proc `==`*(a, b: VkDisplayModeKHR): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkSurfaceKHR): string =
+  "VkSurfaceKHR(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkSurfaceKHR): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkSurfaceKHR) =
+  handle = VkSurfaceKHR(0)
+
+proc `==`*(a, b: VkSurfaceKHR): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkSwapchainKHR): string =
+  "VkSwapchainKHR(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkSwapchainKHR): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkSwapchainKHR) =
+  handle = VkSwapchainKHR(0)
+
+proc `==`*(a, b: VkSwapchainKHR): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkDebugReportCallbackEXT): string =
+  "VkDebugReportCallbackEXT(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkDebugReportCallbackEXT): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkDebugReportCallbackEXT) =
+  handle = VkDebugReportCallbackEXT(0)
+
+proc `==`*(a, b: VkDebugReportCallbackEXT): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkDebugUtilsMessengerEXT): string =
+  "VkDebugUtilsMessengerEXT(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkDebugUtilsMessengerEXT): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkDebugUtilsMessengerEXT) =
+  handle = VkDebugUtilsMessengerEXT(0)
+
+proc `==`*(a, b: VkDebugUtilsMessengerEXT): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkVideoSessionKHR): string =
+  "VkVideoSessionKHR(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkVideoSessionKHR): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkVideoSessionKHR) =
+  handle = VkVideoSessionKHR(0)
+
+proc `==`*(a, b: VkVideoSessionKHR): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkVideoSessionParametersKHR): string =
+  "VkVideoSessionParametersKHR(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkVideoSessionParametersKHR): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkVideoSessionParametersKHR) =
+  handle = VkVideoSessionParametersKHR(0)
+
+proc `==`*(a, b: VkVideoSessionParametersKHR): bool =
+  uint(a) == uint(b)
+
+proc `$`*(handle: VkSemaphoreSciSyncPoolNV): string =
+  "VkSemaphoreSciSyncPoolNV(" & $(uint(handle)) & ")"
+
+proc Valid*(handle: VkSemaphoreSciSyncPoolNV): bool =
+  uint(handle) != 0
+
+proc Reset*(handle: var VkSemaphoreSciSyncPoolNV) =
+  handle = VkSemaphoreSciSyncPoolNV(0)
+
+proc `==`*(a, b: VkSemaphoreSciSyncPoolNV): bool =
+  uint(a) == uint(b)
+
 type
   VkFramebufferCreateFlags* = distinct VkFlags
   VkQueryPoolCreateFlags* = distinct VkFlags
@@ -495,7 +885,10 @@
   VkVideoEncodeH265OutputModeFlagsEXT* = distinct VkFlags
   VkVideoEncodeH265CtbSizeFlagsEXT* = distinct VkFlags
   VkVideoEncodeH265TransformBlockSizeFlagsEXT* = distinct VkFlags
-let vkGetInstanceProcAddr = cast[proc(instance: VkInstance, name: cstring): pointer {.stdcall.}](checkedSymAddr(vulkanLib, "vkGetInstanceProcAddr"))
+
+let vkGetInstanceProcAddr = cast[proc(instance: VkInstance, name: cstring): pointer {.
+  stdcall
+.}](checkedSymAddr(vulkanLib, "vkGetInstanceProcAddr"))
 type
   VkImageLayout* {.size: sizeof(cint).} = enum
     VK_IMAGE_LAYOUT_UNDEFINED = 0
@@ -526,23 +919,28 @@
     VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000
     VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001
     VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000
+
   VkAttachmentLoadOp* {.size: sizeof(cint).} = enum
     VK_ATTACHMENT_LOAD_OP_LOAD = 0
     VK_ATTACHMENT_LOAD_OP_CLEAR = 1
     VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2
     VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000
+
   VkAttachmentStoreOp* {.size: sizeof(cint).} = enum
     VK_ATTACHMENT_STORE_OP_STORE = 0
     VK_ATTACHMENT_STORE_OP_DONT_CARE = 1
     VK_ATTACHMENT_STORE_OP_NONE = 1000301000
+
   VkImageType* {.size: sizeof(cint).} = enum
     VK_IMAGE_TYPE_1D = 0
     VK_IMAGE_TYPE_2D = 1
     VK_IMAGE_TYPE_3D = 2
+
   VkImageTiling* {.size: sizeof(cint).} = enum
     VK_IMAGE_TILING_OPTIMAL = 0
     VK_IMAGE_TILING_LINEAR = 1
     VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000
+
   VkImageViewType* {.size: sizeof(cint).} = enum
     VK_IMAGE_VIEW_TYPE_1D = 0
     VK_IMAGE_VIEW_TYPE_2D = 1
@@ -551,9 +949,11 @@
     VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4
     VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5
     VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6
+
   VkCommandBufferLevel* {.size: sizeof(cint).} = enum
     VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0
     VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1
+
   VkComponentSwizzle* {.size: sizeof(cint).} = enum
     VK_COMPONENT_SWIZZLE_IDENTITY = 0
     VK_COMPONENT_SWIZZLE_ZERO = 1
@@ -562,6 +962,7 @@
     VK_COMPONENT_SWIZZLE_G = 4
     VK_COMPONENT_SWIZZLE_B = 5
     VK_COMPONENT_SWIZZLE_A = 6
+
   VkDescriptorType* {.size: sizeof(cint).} = enum
     VK_DESCRIPTOR_TYPE_SAMPLER = 0
     VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1
@@ -580,6 +981,7 @@
     VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000
     VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000
     VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001
+
   VkQueryType* {.size: sizeof(cint).} = enum
     VK_QUERY_TYPE_OCCLUSION = 0
     VK_QUERY_TYPE_PIPELINE_STATISTICS = 1
@@ -594,10 +996,12 @@
     VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000
     VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000
     VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000
-    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000
+    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR =
+      1000386000
     VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR = 1000386001
     VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT = 1000396000
     VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT = 1000396001
+
   VkBorderColor* {.size: sizeof(cint).} = enum
     VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0
     VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1
@@ -607,26 +1011,36 @@
     VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5
     VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003
     VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004
+
   VkPipelineBindPoint* {.size: sizeof(cint).} = enum
     VK_PIPELINE_BIND_POINT_GRAPHICS = 0
     VK_PIPELINE_BIND_POINT_COMPUTE = 1
     VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000
     VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003
+
   VkPipelineCacheHeaderVersion* {.size: sizeof(cint).} = enum
     VK_PIPELINE_CACHE_HEADER_VERSION_ONE_ENUM = 1
     VK_PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE_ENUM = 1000298001
+
   VkPipelineCacheCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 0b00000000000000000000000000000001
+    VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT =
+      0b00000000000000000000000000000001
     VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT = 0b00000000000000000000000000000010
-    VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkPipelineCacheCreateFlagBits]): VkPipelineCacheCreateFlags =
+    VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT =
+      0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkPipelineCacheCreateFlagBits]
+): VkPipelineCacheCreateFlags =
   for flag in flags:
     result = VkPipelineCacheCreateFlags(uint(result) or uint(flag))
 func toEnums*(number: VkPipelineCacheCreateFlags): seq[VkPipelineCacheCreateFlagBits] =
   for value in VkPipelineCacheCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkPipelineCacheCreateFlags): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkPipelineCacheCreateFlags): bool =
+  cint(a) == cint(b)
+
 type
   VkPrimitiveTopology* {.size: sizeof(cint).} = enum
     VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0
@@ -640,27 +1054,33 @@
     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8
     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9
     VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10
+
   VkSharingMode* {.size: sizeof(cint).} = enum
     VK_SHARING_MODE_EXCLUSIVE = 0
     VK_SHARING_MODE_CONCURRENT = 1
+
   VkIndexType* {.size: sizeof(cint).} = enum
     VK_INDEX_TYPE_UINT16 = 0
     VK_INDEX_TYPE_UINT32 = 1
     VK_INDEX_TYPE_NONE_KHR = 1000165000
     VK_INDEX_TYPE_UINT8_EXT = 1000265000
+
   VkFilter* {.size: sizeof(cint).} = enum
     VK_FILTER_NEAREST = 0
     VK_FILTER_LINEAR = 1
     VK_FILTER_CUBIC_EXT = 1000015000
+
   VkSamplerMipmapMode* {.size: sizeof(cint).} = enum
     VK_SAMPLER_MIPMAP_MODE_NEAREST = 0
     VK_SAMPLER_MIPMAP_MODE_LINEAR = 1
+
   VkSamplerAddressMode* {.size: sizeof(cint).} = enum
     VK_SAMPLER_ADDRESS_MODE_REPEAT = 0
     VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1
     VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2
     VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3
     VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4
+
   VkCompareOp* {.size: sizeof(cint).} = enum
     VK_COMPARE_OP_NEVER = 0
     VK_COMPARE_OP_LESS = 1
@@ -670,14 +1090,17 @@
     VK_COMPARE_OP_NOT_EQUAL = 5
     VK_COMPARE_OP_GREATER_OR_EQUAL = 6
     VK_COMPARE_OP_ALWAYS = 7
+
   VkPolygonMode* {.size: sizeof(cint).} = enum
     VK_POLYGON_MODE_FILL = 0
     VK_POLYGON_MODE_LINE = 1
     VK_POLYGON_MODE_POINT = 2
     VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000
+
   VkFrontFace* {.size: sizeof(cint).} = enum
     VK_FRONT_FACE_COUNTER_CLOCKWISE = 0
     VK_FRONT_FACE_CLOCKWISE = 1
+
   VkBlendFactor* {.size: sizeof(cint).} = enum
     VK_BLEND_FACTOR_ZERO = 0
     VK_BLEND_FACTOR_ONE = 1
@@ -698,6 +1121,7 @@
     VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16
     VK_BLEND_FACTOR_SRC1_ALPHA = 17
     VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18
+
   VkBlendOp* {.size: sizeof(cint).} = enum
     VK_BLEND_OP_ADD = 0
     VK_BLEND_OP_SUBTRACT = 1
@@ -750,6 +1174,7 @@
     VK_BLEND_OP_RED_EXT = 1000148043
     VK_BLEND_OP_GREEN_EXT = 1000148044
     VK_BLEND_OP_BLUE_EXT = 1000148045
+
   VkStencilOp* {.size: sizeof(cint).} = enum
     VK_STENCIL_OP_KEEP = 0
     VK_STENCIL_OP_ZERO = 1
@@ -759,6 +1184,7 @@
     VK_STENCIL_OP_INVERT = 5
     VK_STENCIL_OP_INCREMENT_AND_WRAP = 6
     VK_STENCIL_OP_DECREMENT_AND_WRAP = 7
+
   VkLogicOp* {.size: sizeof(cint).} = enum
     VK_LOGIC_OP_CLEAR = 0
     VK_LOGIC_OP_AND = 1
@@ -776,23 +1202,28 @@
     VK_LOGIC_OP_OR_INVERTED = 13
     VK_LOGIC_OP_NAND = 14
     VK_LOGIC_OP_SET = 15
+
   VkInternalAllocationType* {.size: sizeof(cint).} = enum
     VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0
+
   VkSystemAllocationScope* {.size: sizeof(cint).} = enum
     VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0
     VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1
     VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2
     VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3
     VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4
+
   VkPhysicalDeviceType* {.size: sizeof(cint).} = enum
     VK_PHYSICAL_DEVICE_TYPE_OTHER = 0
     VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1
     VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2
     VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3
     VK_PHYSICAL_DEVICE_TYPE_CPU = 4
+
   VkVertexInputRate* {.size: sizeof(cint).} = enum
     VK_VERTEX_INPUT_RATE_VERTEX = 0
     VK_VERTEX_INPUT_RATE_INSTANCE = 1
+
   VkFormat* {.size: sizeof(cint).} = enum
     VK_FORMAT_UNDEFINED = 0
     VK_FORMAT_R4G4_UNORM_PACK8 = 1
@@ -1072,6 +1503,7 @@
     VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000
     VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001
     VK_FORMAT_R16G16_S10_5_NV = 1000464000
+
   VkStructureType* {.size: sizeof(cint).} = enum
     VK_STRUCTURE_TYPE_APPLICATION_INFO = 0
     VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1
@@ -1285,7 +1717,8 @@
     VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000
     VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000
-    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000
+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT =
+      1000081000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001
     VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000
@@ -1300,14 +1733,18 @@
     VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003
     VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX =
+      1000097000
     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000
     VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000
-    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT =
+      1000101000
+    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT =
+      1000101001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000
-    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001
+    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT =
+      1000102001
     VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000
     VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001
@@ -1388,7 +1825,8 @@
     VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004
     VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT =
+      1000148001
     VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002
     VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000
     VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000
@@ -1431,14 +1869,18 @@
     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002
-    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003
-    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO =
+      1000161003
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT =
+      1000161004
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001
-    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000
+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV =
+      1000164000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002
-    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005
+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV =
+      1000164005
     VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000
     VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001
     VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003
@@ -1450,14 +1892,17 @@
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009
     VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011
     VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000
-    VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV =
+      1000166000
+    VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV =
+      1000166001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000
     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000
     VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001
     VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES =
+      1000175000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000
     VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000
     VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001
@@ -1474,7 +1919,8 @@
     VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004
     VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005
     VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT =
+      1000190000
     VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002
     VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000
@@ -1483,12 +1929,15 @@
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000
     VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV =
+      1000201000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR = 1000203000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR =
+      1000203000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000
-    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000
+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV =
+      1000205000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002
     VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000
     VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001
@@ -1498,7 +1947,8 @@
     VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003
     VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004
     VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL =
+      1000209000
     VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000
     VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001
     VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002
@@ -1517,7 +1967,8 @@
     VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES = 1000225000
-    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO = 1000225001
+    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO =
+      1000225001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES = 1000225002
     VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000
     VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001
@@ -1526,13 +1977,16 @@
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT =
+      1000234000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000
     VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001
     VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV =
+      1000240000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES =
+      1000241000
     VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001
     VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000
@@ -1548,11 +2002,14 @@
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000
     VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001
     VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT =
+      1000251000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES =
+      1000253000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = 1000254000
-    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = 1000254001
+    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT =
+      1000254001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = 1000254002
     VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000
     VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001
@@ -1569,7 +2026,8 @@
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR =
+      1000269000
     VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001
     VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002
     VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003
@@ -1585,8 +2043,10 @@
     VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003
     VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004
     VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = 1000276000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES =
+      1000276000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV =
+      1000277000
     VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001
     VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002
     VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003
@@ -1594,13 +2054,15 @@
     VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005
     VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = 1000278000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV =
+      1000278000
     VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = 1000278001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES = 1000280000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES = 1000280001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = 1000281001
-    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000
+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM =
+      1000282000
     VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000
     VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001
@@ -1619,7 +2081,8 @@
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES = 1000295000
     VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO = 1000295001
     VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO = 1000295002
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES = 1000297000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES =
+      1000297000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES = 1000298000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES = 1000298001
     VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO = 1000298002
@@ -1661,7 +2124,8 @@
     VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008
     VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT =
+      1000316001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002
     VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT = 1000316003
     VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT = 1000316004
@@ -1669,31 +2133,45 @@
     VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316006
     VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316007
     VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316008
-    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316009
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT =
+      1000316009
     VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT = 1000316010
     VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT = 1000316011
-    VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT = 1000316012
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT = 1000320000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT = 1000320001
+    VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT =
+      1000316012
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT =
+      1000320000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT =
+      1000320001
     VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT = 1000320002
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD = 1000321000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR = 1000322000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = 1000323000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES = 1000325000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = 1000326000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = 1000326001
-    VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = 1000326002
-    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = 1000327000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD =
+      1000321000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR =
+      1000322000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR =
+      1000323000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES =
+      1000325000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV =
+      1000326000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV =
+      1000326001
+    VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV =
+      1000326002
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV =
+      1000327000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = 1000327001
     VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV = 1000327002
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT = 1000328000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT = 1000328001
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT =
+      1000330000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001
     VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES = 1000335000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR =
+      1000336000
     VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2 = 1000337000
     VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2 = 1000337001
     VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2 = 1000337002
@@ -1705,17 +2183,20 @@
     VK_STRUCTURE_TYPE_IMAGE_BLIT_2 = 1000337008
     VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2 = 1000337009
     VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2 = 1000337010
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT =
+      1000338000
     VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001
     VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002
     VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003
     VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT =
+      1000339000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT = 1000341000
     VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT = 1000341001
     VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT = 1000341002
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT = 1000342000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT =
+      1000342000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = 1000344000
     VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000
@@ -1723,7 +2204,8 @@
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000
     VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT =
+      1000352000
     VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001
     VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = 1000353000
@@ -1731,7 +2213,8 @@
     VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT = 1000354001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT = 1000355000
     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT = 1000355001
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT = 1000356000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT =
+      1000356000
     VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3 = 1000360000
     VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364000
     VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA = 1000364001
@@ -1769,15 +2252,18 @@
     VK_STRUCTURE_TYPE_MEMORY_GET_SCI_BUF_INFO_NV = 1000374002
     VK_STRUCTURE_TYPE_MEMORY_SCI_BUF_PROPERTIES_NV = 1000374003
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV = 1000374004
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT =
+      1000376000
     VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001
     VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000
     VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000
     VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = 1000382000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR = 1000386000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT =
+      1000382000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR =
+      1000386000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000
     VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = 1000391000
@@ -1795,11 +2281,15 @@
     VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT = 1000396007
     VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT = 1000396008
     VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI =
+      1000404000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI =
+      1000404001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000
-    VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000
+    VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT =
+      1000411001
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT =
+      1000412000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES = 1000413000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001
     VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002
@@ -1807,13 +2297,16 @@
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000
     VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE =
+      1000420000
     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001
     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM =
+      1000425000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM =
+      1000425001
     VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001
@@ -1821,12 +2314,14 @@
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000
     VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT = 1000435000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT =
+      1000437000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001
     VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT =
+      1000455001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000
     VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT = 1000458001
     VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000458002
@@ -1834,8 +2329,10 @@
     VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000
     VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001
-    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT =
+      1000462001
+    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT =
+      1000462002
     VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT = 1000462003
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV = 1000464000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV = 1000464001
@@ -1845,26 +2342,36 @@
     VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005
     VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT =
+      1000466000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000
     VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000
     VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM =
+      1000488000
     VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV = 1000489000
     VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV = 1000489001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV = 1000489002
-    VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV = 1000489003
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001
+    VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV =
+      1000489003
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV =
+      1000490000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV =
+      1000490001
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000
-    VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT =
+      1000498000
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM =
+      1000510000
+    VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM =
+      1000510001
+
   VkSubpassContents* {.size: sizeof(cint).} = enum
     VK_SUBPASS_CONTENTS_INLINE = 0
     VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1
+
   VkResult* {.size: sizeof(cint).} = enum
     VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000
     VK_ERROR_NO_PIPELINE_MATCH = -1000298001
@@ -1913,6 +2420,7 @@
     VK_OPERATION_DEFERRED_KHR = 1000268002
     VK_OPERATION_NOT_DEFERRED_KHR = 1000268003
     VK_PIPELINE_COMPILE_REQUIRED = 1000297000
+
   VkDynamicState* {.size: sizeof(cint).} = enum
     VK_DYNAMIC_STATE_VIEWPORT = 0
     VK_DYNAMIC_STATE_SCISSOR = 1
@@ -1985,9 +2493,11 @@
     VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030
     VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031
     VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032
+
   VkDescriptorUpdateTemplateType* {.size: sizeof(cint).} = enum
     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0
     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1
+
   VkObjectType* {.size: sizeof(cint).} = enum
     VK_OBJECT_TYPE_UNKNOWN = 0
     VK_OBJECT_TYPE_INSTANCE = 1
@@ -2038,12 +2548,15 @@
     VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000
     VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000
     VK_OBJECT_TYPE_SEMAPHORE_SCI_SYNC_POOL_NV = 1000489000
+
   VkRayTracingInvocationReorderModeNV* {.size: sizeof(cint).} = enum
     VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0
     VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1
+
   VkDirectDriverLoadingModeLUNARG* {.size: sizeof(cint).} = enum
     VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0
     VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1
+
   VkQueueFlagBits* {.size: sizeof(cint).} = enum
     VK_QUEUE_GRAPHICS_BIT = 0b00000000000000000000000000000001
     VK_QUEUE_COMPUTE_BIT = 0b00000000000000000000000000000010
@@ -2055,6 +2568,7 @@
     VK_QUEUE_RESERVED_7_BIT_QCOM = 0b00000000000000000000000010000000
     VK_QUEUE_OPTICAL_FLOW_BIT_NV = 0b00000000000000000000000100000000
     VK_QUEUE_RESERVED_9_BIT_EXT = 0b00000000000000000000001000000000
+
 func toBits*(flags: openArray[VkQueueFlagBits]): VkQueueFlags =
   for flag in flags:
     result = VkQueueFlags(uint(result) or uint(flag))
@@ -2062,11 +2576,13 @@
   for value in VkQueueFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkQueueFlags): bool = cint(a) == cint(b)
-type
-  VkCullModeFlagBits* {.size: sizeof(cint).} = enum
-    VK_CULL_MODE_FRONT_BIT = 0b00000000000000000000000000000001
-    VK_CULL_MODE_BACK_BIT = 0b00000000000000000000000000000010
+proc `==`*(a, b: VkQueueFlags): bool =
+  cint(a) == cint(b)
+
+type VkCullModeFlagBits* {.size: sizeof(cint).} = enum
+  VK_CULL_MODE_FRONT_BIT = 0b00000000000000000000000000000001
+  VK_CULL_MODE_BACK_BIT = 0b00000000000000000000000000000010
+
 func toBits*(flags: openArray[VkCullModeFlagBits]): VkCullModeFlags =
   for flag in flags:
     result = VkCullModeFlags(uint(result) or uint(flag))
@@ -2074,14 +2590,16 @@
   for value in VkCullModeFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkCullModeFlags): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkCullModeFlags): bool =
+  cint(a) == cint(b)
+
 const
   VK_CULL_MODE_NONE* = 0
   VK_CULL_MODE_FRONT_AND_BACK* = 0x00000003
-type
-  VkRenderPassCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_RENDER_PASS_CREATE_RESERVED_0_BIT_KHR = 0b00000000000000000000000000000001
-    VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 0b00000000000000000000000000000010
+type VkRenderPassCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_RENDER_PASS_CREATE_RESERVED_0_BIT_KHR = 0b00000000000000000000000000000001
+  VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 0b00000000000000000000000000000010
+
 func toBits*(flags: openArray[VkRenderPassCreateFlagBits]): VkRenderPassCreateFlags =
   for flag in flags:
     result = VkRenderPassCreateFlags(uint(result) or uint(flag))
@@ -2089,11 +2607,13 @@
   for value in VkRenderPassCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkRenderPassCreateFlags): bool = cint(a) == cint(b)
-type
-  VkDeviceQueueCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0b00000000000000000000000000000001
-    VK_DEVICE_QUEUE_CREATE_RESERVED_1_BIT_QCOM = 0b00000000000000000000000000000010
+proc `==`*(a, b: VkRenderPassCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkDeviceQueueCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0b00000000000000000000000000000001
+  VK_DEVICE_QUEUE_CREATE_RESERVED_1_BIT_QCOM = 0b00000000000000000000000000000010
+
 func toBits*(flags: openArray[VkDeviceQueueCreateFlagBits]): VkDeviceQueueCreateFlags =
   for flag in flags:
     result = VkDeviceQueueCreateFlags(uint(result) or uint(flag))
@@ -2101,18 +2621,20 @@
   for value in VkDeviceQueueCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkDeviceQueueCreateFlags): bool = cint(a) == cint(b)
-type
-  VkMemoryPropertyFlagBits* {.size: sizeof(cint).} = enum
-    VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0b00000000000000000000000000000001
-    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0b00000000000000000000000000000010
-    VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0b00000000000000000000000000000100
-    VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0b00000000000000000000000000001000
-    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0b00000000000000000000000000010000
-    VK_MEMORY_PROPERTY_PROTECTED_BIT = 0b00000000000000000000000000100000
-    VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 0b00000000000000000000000001000000
-    VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 0b00000000000000000000000010000000
-    VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV = 0b00000000000000000000000100000000
+proc `==`*(a, b: VkDeviceQueueCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkMemoryPropertyFlagBits* {.size: sizeof(cint).} = enum
+  VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0b00000000000000000000000000000001
+  VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0b00000000000000000000000000000010
+  VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0b00000000000000000000000000000100
+  VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0b00000000000000000000000000001000
+  VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0b00000000000000000000000000010000
+  VK_MEMORY_PROPERTY_PROTECTED_BIT = 0b00000000000000000000000000100000
+  VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 0b00000000000000000000000001000000
+  VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 0b00000000000000000000000010000000
+  VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV = 0b00000000000000000000000100000000
+
 func toBits*(flags: openArray[VkMemoryPropertyFlagBits]): VkMemoryPropertyFlags =
   for flag in flags:
     result = VkMemoryPropertyFlags(uint(result) or uint(flag))
@@ -2120,12 +2642,14 @@
   for value in VkMemoryPropertyFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkMemoryPropertyFlags): bool = cint(a) == cint(b)
-type
-  VkMemoryHeapFlagBits* {.size: sizeof(cint).} = enum
-    VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0b00000000000000000000000000000001
-    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0b00000000000000000000000000000010
-    VK_MEMORY_HEAP_SEU_SAFE_BIT = 0b00000000000000000000000000000100
+proc `==`*(a, b: VkMemoryPropertyFlags): bool =
+  cint(a) == cint(b)
+
+type VkMemoryHeapFlagBits* {.size: sizeof(cint).} = enum
+  VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0b00000000000000000000000000000001
+  VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0b00000000000000000000000000000010
+  VK_MEMORY_HEAP_SEU_SAFE_BIT = 0b00000000000000000000000000000100
+
 func toBits*(flags: openArray[VkMemoryHeapFlagBits]): VkMemoryHeapFlags =
   for flag in flags:
     result = VkMemoryHeapFlags(uint(result) or uint(flag))
@@ -2133,37 +2657,42 @@
   for value in VkMemoryHeapFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkMemoryHeapFlags): bool = cint(a) == cint(b)
-type
-  VkAccessFlagBits* {.size: sizeof(cint).} = enum
-    VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0b00000000000000000000000000000001
-    VK_ACCESS_INDEX_READ_BIT = 0b00000000000000000000000000000010
-    VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0b00000000000000000000000000000100
-    VK_ACCESS_UNIFORM_READ_BIT = 0b00000000000000000000000000001000
-    VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0b00000000000000000000000000010000
-    VK_ACCESS_SHADER_READ_BIT = 0b00000000000000000000000000100000
-    VK_ACCESS_SHADER_WRITE_BIT = 0b00000000000000000000000001000000
-    VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0b00000000000000000000000010000000
-    VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0b00000000000000000000000100000000
-    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0b00000000000000000000001000000000
-    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0b00000000000000000000010000000000
-    VK_ACCESS_TRANSFER_READ_BIT = 0b00000000000000000000100000000000
-    VK_ACCESS_TRANSFER_WRITE_BIT = 0b00000000000000000001000000000000
-    VK_ACCESS_HOST_READ_BIT = 0b00000000000000000010000000000000
-    VK_ACCESS_HOST_WRITE_BIT = 0b00000000000000000100000000000000
-    VK_ACCESS_MEMORY_READ_BIT = 0b00000000000000001000000000000000
-    VK_ACCESS_MEMORY_WRITE_BIT = 0b00000000000000010000000000000000
-    VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 0b00000000000000100000000000000000
-    VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 0b00000000000001000000000000000000
-    VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0b00000000000010000000000000000000
-    VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0b00000000000100000000000000000000
-    VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0b00000000001000000000000000000000
-    VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0b00000000010000000000000000000000
-    VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0b00000000100000000000000000000000
-    VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0b00000001000000000000000000000000
-    VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0b00000010000000000000000000000000
-    VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0b00000100000000000000000000000000
-    VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0b00001000000000000000000000000000
+proc `==`*(a, b: VkMemoryHeapFlags): bool =
+  cint(a) == cint(b)
+
+type VkAccessFlagBits* {.size: sizeof(cint).} = enum
+  VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0b00000000000000000000000000000001
+  VK_ACCESS_INDEX_READ_BIT = 0b00000000000000000000000000000010
+  VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0b00000000000000000000000000000100
+  VK_ACCESS_UNIFORM_READ_BIT = 0b00000000000000000000000000001000
+  VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0b00000000000000000000000000010000
+  VK_ACCESS_SHADER_READ_BIT = 0b00000000000000000000000000100000
+  VK_ACCESS_SHADER_WRITE_BIT = 0b00000000000000000000000001000000
+  VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0b00000000000000000000000010000000
+  VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0b00000000000000000000000100000000
+  VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0b00000000000000000000001000000000
+  VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0b00000000000000000000010000000000
+  VK_ACCESS_TRANSFER_READ_BIT = 0b00000000000000000000100000000000
+  VK_ACCESS_TRANSFER_WRITE_BIT = 0b00000000000000000001000000000000
+  VK_ACCESS_HOST_READ_BIT = 0b00000000000000000010000000000000
+  VK_ACCESS_HOST_WRITE_BIT = 0b00000000000000000100000000000000
+  VK_ACCESS_MEMORY_READ_BIT = 0b00000000000000001000000000000000
+  VK_ACCESS_MEMORY_WRITE_BIT = 0b00000000000000010000000000000000
+  VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 0b00000000000000100000000000000000
+  VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 0b00000000000001000000000000000000
+  VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT =
+    0b00000000000010000000000000000000
+  VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0b00000000000100000000000000000000
+  VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0b00000000001000000000000000000000
+  VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0b00000000010000000000000000000000
+  VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR =
+    0b00000000100000000000000000000000
+  VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0b00000001000000000000000000000000
+  VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0b00000010000000000000000000000000
+  VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0b00000100000000000000000000000000
+  VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT =
+    0b00001000000000000000000000000000
+
 func toBits*(flags: openArray[VkAccessFlagBits]): VkAccessFlags =
   for flag in flags:
     result = VkAccessFlags(uint(result) or uint(flag))
@@ -2171,36 +2700,44 @@
   for value in VkAccessFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkAccessFlags): bool = cint(a) == cint(b)
-type
-  VkBufferUsageFlagBits* {.size: sizeof(cint).} = enum
-    VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0b00000000000000000000000000000001
-    VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0b00000000000000000000000000000010
-    VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0b00000000000000000000000000000100
-    VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0b00000000000000000000000000001000
-    VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0b00000000000000000000000000010000
-    VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0b00000000000000000000000000100000
-    VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0b00000000000000000000000001000000
-    VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0b00000000000000000000000010000000
-    VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0b00000000000000000000000100000000
-    VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0b00000000000000000000001000000000
-    VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR = 0b00000000000000000000010000000000
-    VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0b00000000000000000000100000000000
-    VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0b00000000000000000001000000000000
-    VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0b00000000000000000010000000000000
-    VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0b00000000000000000100000000000000
-    VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0b00000000000000001000000000000000
-    VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0b00000000000000010000000000000000
-    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0b00000000000000100000000000000000
-    VK_BUFFER_USAGE_RESERVED_18_BIT_QCOM = 0b00000000000001000000000000000000
-    VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 0b00000000000010000000000000000000
-    VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 0b00000000000100000000000000000000
-    VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 0b00000000001000000000000000000000
-    VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 0b00000000010000000000000000000000
-    VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 0b00000000100000000000000000000000
-    VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 0b00000001000000000000000000000000
-    VK_BUFFER_USAGE_RESERVED_25_BIT_AMD = 0b00000010000000000000000000000000
-    VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 0b00000100000000000000000000000000
+proc `==`*(a, b: VkAccessFlags): bool =
+  cint(a) == cint(b)
+
+type VkBufferUsageFlagBits* {.size: sizeof(cint).} = enum
+  VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0b00000000000000000000000000000001
+  VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0b00000000000000000000000000000010
+  VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0b00000000000000000000000000000100
+  VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0b00000000000000000000000000001000
+  VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0b00000000000000000000000000010000
+  VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0b00000000000000000000000000100000
+  VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0b00000000000000000000000001000000
+  VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0b00000000000000000000000010000000
+  VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0b00000000000000000000000100000000
+  VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0b00000000000000000000001000000000
+  VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR = 0b00000000000000000000010000000000
+  VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0b00000000000000000000100000000000
+  VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT =
+    0b00000000000000000001000000000000
+  VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0b00000000000000000010000000000000
+  VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0b00000000000000000100000000000000
+  VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0b00000000000000001000000000000000
+  VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0b00000000000000010000000000000000
+  VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0b00000000000000100000000000000000
+  VK_BUFFER_USAGE_RESERVED_18_BIT_QCOM = 0b00000000000001000000000000000000
+  VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR =
+    0b00000000000010000000000000000000
+  VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR =
+    0b00000000000100000000000000000000
+  VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 0b00000000001000000000000000000000
+  VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT =
+    0b00000000010000000000000000000000
+  VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT =
+    0b00000000100000000000000000000000
+  VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 0b00000001000000000000000000000000
+  VK_BUFFER_USAGE_RESERVED_25_BIT_AMD = 0b00000010000000000000000000000000
+  VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT =
+    0b00000100000000000000000000000000
+
 func toBits*(flags: openArray[VkBufferUsageFlagBits]): VkBufferUsageFlags =
   for flag in flags:
     result = VkBufferUsageFlags(uint(result) or uint(flag))
@@ -2208,15 +2745,19 @@
   for value in VkBufferUsageFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkBufferUsageFlags): bool = cint(a) == cint(b)
-type
-  VkBufferCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0b00000000000000000000000000000001
-    VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0b00000000000000000000000000000010
-    VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0b00000000000000000000000000000100
-    VK_BUFFER_CREATE_PROTECTED_BIT = 0b00000000000000000000000000001000
-    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0b00000000000000000000000000010000
-    VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0b00000000000000000000000000100000
+proc `==`*(a, b: VkBufferUsageFlags): bool =
+  cint(a) == cint(b)
+
+type VkBufferCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0b00000000000000000000000000000001
+  VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0b00000000000000000000000000000010
+  VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0b00000000000000000000000000000100
+  VK_BUFFER_CREATE_PROTECTED_BIT = 0b00000000000000000000000000001000
+  VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT =
+    0b00000000000000000000000000010000
+  VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT =
+    0b00000000000000000000000000100000
+
 func toBits*(flags: openArray[VkBufferCreateFlagBits]): VkBufferCreateFlags =
   for flag in flags:
     result = VkBufferCreateFlags(uint(result) or uint(flag))
@@ -2224,28 +2765,30 @@
   for value in VkBufferCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkBufferCreateFlags): bool = cint(a) == cint(b)
-type
-  VkShaderStageFlagBits* {.size: sizeof(cint).} = enum
-    VK_SHADER_STAGE_VERTEX_BIT = 0b00000000000000000000000000000001
-    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0b00000000000000000000000000000010
-    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0b00000000000000000000000000000100
-    VK_SHADER_STAGE_GEOMETRY_BIT = 0b00000000000000000000000000001000
-    VK_SHADER_STAGE_FRAGMENT_BIT = 0b00000000000000000000000000010000
-    VK_SHADER_STAGE_COMPUTE_BIT = 0b00000000000000000000000000100000
-    VK_SHADER_STAGE_TASK_BIT_EXT = 0b00000000000000000000000001000000
-    VK_SHADER_STAGE_MESH_BIT_EXT = 0b00000000000000000000000010000000
-    VK_SHADER_STAGE_RAYGEN_BIT_KHR = 0b00000000000000000000000100000000
-    VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 0b00000000000000000000001000000000
-    VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 0b00000000000000000000010000000000
-    VK_SHADER_STAGE_MISS_BIT_KHR = 0b00000000000000000000100000000000
-    VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 0b00000000000000000001000000000000
-    VK_SHADER_STAGE_CALLABLE_BIT_KHR = 0b00000000000000000010000000000000
-    VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = 0b00000000000000000100000000000000
-    VK_SHADER_STAGE_EXT_483_RESERVE_15 = 0b00000000000000001000000000000000
-    VK_SHADER_STAGE_EXT_483_RESERVE_16 = 0b00000000000000010000000000000000
-    VK_SHADER_STAGE_EXT_483_RESERVE_17 = 0b00000000000000100000000000000000
-    VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI = 0b00000000000010000000000000000000
+proc `==`*(a, b: VkBufferCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkShaderStageFlagBits* {.size: sizeof(cint).} = enum
+  VK_SHADER_STAGE_VERTEX_BIT = 0b00000000000000000000000000000001
+  VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0b00000000000000000000000000000010
+  VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0b00000000000000000000000000000100
+  VK_SHADER_STAGE_GEOMETRY_BIT = 0b00000000000000000000000000001000
+  VK_SHADER_STAGE_FRAGMENT_BIT = 0b00000000000000000000000000010000
+  VK_SHADER_STAGE_COMPUTE_BIT = 0b00000000000000000000000000100000
+  VK_SHADER_STAGE_TASK_BIT_EXT = 0b00000000000000000000000001000000
+  VK_SHADER_STAGE_MESH_BIT_EXT = 0b00000000000000000000000010000000
+  VK_SHADER_STAGE_RAYGEN_BIT_KHR = 0b00000000000000000000000100000000
+  VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 0b00000000000000000000001000000000
+  VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 0b00000000000000000000010000000000
+  VK_SHADER_STAGE_MISS_BIT_KHR = 0b00000000000000000000100000000000
+  VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 0b00000000000000000001000000000000
+  VK_SHADER_STAGE_CALLABLE_BIT_KHR = 0b00000000000000000010000000000000
+  VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = 0b00000000000000000100000000000000
+  VK_SHADER_STAGE_EXT_483_RESERVE_15 = 0b00000000000000001000000000000000
+  VK_SHADER_STAGE_EXT_483_RESERVE_16 = 0b00000000000000010000000000000000
+  VK_SHADER_STAGE_EXT_483_RESERVE_17 = 0b00000000000000100000000000000000
+  VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI = 0b00000000000010000000000000000000
+
 func toBits*(flags: openArray[VkShaderStageFlagBits]): VkShaderStageFlags =
   for flag in flags:
     result = VkShaderStageFlags(uint(result) or uint(flag))
@@ -2253,35 +2796,38 @@
   for value in VkShaderStageFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkShaderStageFlags): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkShaderStageFlags): bool =
+  cint(a) == cint(b)
+
 const
   VK_SHADER_STAGE_ALL_GRAPHICS* = 0x0000001F
   VK_SHADER_STAGE_ALL* = 0x7FFFFFFF
-type
-  VkImageUsageFlagBits* {.size: sizeof(cint).} = enum
-    VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0b00000000000000000000000000000001
-    VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0b00000000000000000000000000000010
-    VK_IMAGE_USAGE_SAMPLED_BIT = 0b00000000000000000000000000000100
-    VK_IMAGE_USAGE_STORAGE_BIT = 0b00000000000000000000000000001000
-    VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0b00000000000000000000000000010000
-    VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0b00000000000000000000000000100000
-    VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0b00000000000000000000000001000000
-    VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0b00000000000000000000000010000000
-    VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0b00000000000000000000000100000000
-    VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0b00000000000000000000001000000000
-    VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0b00000000000000000000010000000000
-    VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0b00000000000000000000100000000000
-    VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 0b00000000000000000001000000000000
-    VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0b00000000000000000010000000000000
-    VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0b00000000000000000100000000000000
-    VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR = 0b00000000000000001000000000000000
-    VK_IMAGE_USAGE_RESERVED_16_BIT_QCOM = 0b00000000000000010000000000000000
-    VK_IMAGE_USAGE_RESERVED_17_BIT_QCOM = 0b00000000000000100000000000000000
-    VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 0b00000000000001000000000000000000
-    VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0b00000000000010000000000000000000
-    VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 0b00000000000100000000000000000000
-    VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 0b00000000001000000000000000000000
-    VK_IMAGE_USAGE_RESERVED_22_BIT_EXT = 0b00000000010000000000000000000000
+type VkImageUsageFlagBits* {.size: sizeof(cint).} = enum
+  VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0b00000000000000000000000000000001
+  VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0b00000000000000000000000000000010
+  VK_IMAGE_USAGE_SAMPLED_BIT = 0b00000000000000000000000000000100
+  VK_IMAGE_USAGE_STORAGE_BIT = 0b00000000000000000000000000001000
+  VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0b00000000000000000000000000010000
+  VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0b00000000000000000000000000100000
+  VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0b00000000000000000000000001000000
+  VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0b00000000000000000000000010000000
+  VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR =
+    0b00000000000000000000000100000000
+  VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0b00000000000000000000001000000000
+  VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0b00000000000000000000010000000000
+  VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0b00000000000000000000100000000000
+  VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 0b00000000000000000001000000000000
+  VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0b00000000000000000010000000000000
+  VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0b00000000000000000100000000000000
+  VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR = 0b00000000000000001000000000000000
+  VK_IMAGE_USAGE_RESERVED_16_BIT_QCOM = 0b00000000000000010000000000000000
+  VK_IMAGE_USAGE_RESERVED_17_BIT_QCOM = 0b00000000000000100000000000000000
+  VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 0b00000000000001000000000000000000
+  VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0b00000000000010000000000000000000
+  VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 0b00000000000100000000000000000000
+  VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 0b00000000001000000000000000000000
+  VK_IMAGE_USAGE_RESERVED_22_BIT_EXT = 0b00000000010000000000000000000000
+
 func toBits*(flags: openArray[VkImageUsageFlagBits]): VkImageUsageFlags =
   for flag in flags:
     result = VkImageUsageFlags(uint(result) or uint(flag))
@@ -2289,29 +2835,35 @@
   for value in VkImageUsageFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkImageUsageFlags): bool = cint(a) == cint(b)
-type
-  VkImageCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0b00000000000000000000000000000001
-    VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0b00000000000000000000000000000010
-    VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0b00000000000000000000000000000100
-    VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0b00000000000000000000000000001000
-    VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0b00000000000000000000000000010000
-    VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0b00000000000000000000000000100000
-    VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0b00000000000000000000000001000000
-    VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0b00000000000000000000000010000000
-    VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0b00000000000000000000000100000000
-    VK_IMAGE_CREATE_DISJOINT_BIT = 0b00000000000000000000001000000000
-    VK_IMAGE_CREATE_ALIAS_BIT = 0b00000000000000000000010000000000
-    VK_IMAGE_CREATE_PROTECTED_BIT = 0b00000000000000000000100000000000
-    VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0b00000000000000000001000000000000
-    VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 0b00000000000000000010000000000000
-    VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 0b00000000000000000100000000000000
-    VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 0b00000000000000001000000000000000
-    VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0b00000000000000010000000000000000
-    VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 0b00000000000000100000000000000000
-    VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 0b00000000000001000000000000000000
-    VK_IMAGE_CREATE_RESERVED_19_BIT_EXT = 0b00000000000010000000000000000000
+proc `==`*(a, b: VkImageUsageFlags): bool =
+  cint(a) == cint(b)
+
+type VkImageCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0b00000000000000000000000000000001
+  VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0b00000000000000000000000000000010
+  VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0b00000000000000000000000000000100
+  VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0b00000000000000000000000000001000
+  VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0b00000000000000000000000000010000
+  VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0b00000000000000000000000000100000
+  VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0b00000000000000000000000001000000
+  VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0b00000000000000000000000010000000
+  VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0b00000000000000000000000100000000
+  VK_IMAGE_CREATE_DISJOINT_BIT = 0b00000000000000000000001000000000
+  VK_IMAGE_CREATE_ALIAS_BIT = 0b00000000000000000000010000000000
+  VK_IMAGE_CREATE_PROTECTED_BIT = 0b00000000000000000000100000000000
+  VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT =
+    0b00000000000000000001000000000000
+  VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 0b00000000000000000010000000000000
+  VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 0b00000000000000000100000000000000
+  VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM =
+    0b00000000000000001000000000000000
+  VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT =
+    0b00000000000000010000000000000000
+  VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 0b00000000000000100000000000000000
+  VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT =
+    0b00000000000001000000000000000000
+  VK_IMAGE_CREATE_RESERVED_19_BIT_EXT = 0b00000000000010000000000000000000
+
 func toBits*(flags: openArray[VkImageCreateFlagBits]): VkImageCreateFlags =
   for flag in flags:
     result = VkImageCreateFlags(uint(result) or uint(flag))
@@ -2319,12 +2871,17 @@
   for value in VkImageCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkImageCreateFlags): bool = cint(a) == cint(b)
-type
-  VkImageViewCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 0b00000000000000000000000000000001
-    VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 0b00000000000000000000000000000010
-    VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0b00000000000000000000000000000100
+proc `==`*(a, b: VkImageCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkImageViewCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT =
+    0b00000000000000000000000000000001
+  VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT =
+    0b00000000000000000000000000000010
+  VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT =
+    0b00000000000000000000000000000100
+
 func toBits*(flags: openArray[VkImageViewCreateFlagBits]): VkImageViewCreateFlags =
   for flag in flags:
     result = VkImageViewCreateFlags(uint(result) or uint(flag))
@@ -2332,14 +2889,18 @@
   for value in VkImageViewCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkImageViewCreateFlags): bool = cint(a) == cint(b)
-type
-  VkSamplerCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 0b00000000000000000000000000000001
-    VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 0b00000000000000000000000000000010
-    VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT = 0b00000000000000000000000000000100
-    VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0b00000000000000000000000000001000
-    VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM = 0b00000000000000000000000000010000
+proc `==`*(a, b: VkImageViewCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkSamplerCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 0b00000000000000000000000000000001
+  VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT =
+    0b00000000000000000000000000000010
+  VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT = 0b00000000000000000000000000000100
+  VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT =
+    0b00000000000000000000000000001000
+  VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM = 0b00000000000000000000000000010000
+
 func toBits*(flags: openArray[VkSamplerCreateFlagBits]): VkSamplerCreateFlags =
   for flag in flags:
     result = VkSamplerCreateFlags(uint(result) or uint(flag))
@@ -2347,40 +2908,58 @@
   for value in VkSamplerCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkSamplerCreateFlags): bool = cint(a) == cint(b)
-type
-  VkPipelineCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0b00000000000000000000000000000001
-    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0b00000000000000000000000000000010
-    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0b00000000000000000000000000000100
-    VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0b00000000000000000000000000001000
-    VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0b00000000000000000000000000010000
-    VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0b00000000000000000000000000100000
-    VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 0b00000000000000000000000001000000
-    VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0b00000000000000000000000010000000
-    VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 0b00000000000000000000000100000000
-    VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 0b00000000000000000000001000000000
-    VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT = 0b00000000000000000000010000000000
-    VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 0b00000000000000000000100000000000
-    VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 0b00000000000000000001000000000000
-    VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0b00000000000000000010000000000000
-    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 0b00000000000000000100000000000000
-    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 0b00000000000000001000000000000000
-    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 0b00000000000000010000000000000000
-    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 0b00000000000000100000000000000000
-    VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 0b00000000000001000000000000000000
-    VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 0b00000000000010000000000000000000
-    VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV = 0b00000000000100000000000000000000
-    VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0b00000000001000000000000000000000
-    VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0b00000000010000000000000000000000
-    VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = 0b00000000100000000000000000000000
-    VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 0b00000001000000000000000000000000
-    VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0b00000010000000000000000000000000
-    VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0b00000100000000000000000000000000
-    VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 0b00001000000000000000000000000000
-    VK_PIPELINE_CREATE_RESERVED_BIT_28_NV = 0b00010000000000000000000000000000
-    VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 0b00100000000000000000000000000000
-    VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 0b01000000000000000000000000000000
+proc `==`*(a, b: VkSamplerCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkPipelineCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0b00000000000000000000000000000001
+  VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0b00000000000000000000000000000010
+  VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0b00000000000000000000000000000100
+  VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT =
+    0b00000000000000000000000000001000
+  VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0b00000000000000000000000000010000
+  VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0b00000000000000000000000000100000
+  VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 0b00000000000000000000000001000000
+  VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR =
+    0b00000000000000000000000010000000
+  VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT =
+    0b00000000000000000000000100000000
+  VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 0b00000000000000000000001000000000
+  VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT = 0b00000000000000000000010000000000
+  VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 0b00000000000000000000100000000000
+  VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR =
+    0b00000000000000000001000000000000
+  VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0b00000000000000000010000000000000
+  VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR =
+    0b00000000000000000100000000000000
+  VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR =
+    0b00000000000000001000000000000000
+  VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR =
+    0b00000000000000010000000000000000
+  VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR =
+    0b00000000000000100000000000000000
+  VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 0b00000000000001000000000000000000
+  VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR =
+    0b00000000000010000000000000000000
+  VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV =
+    0b00000000000100000000000000000000
+  VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR =
+    0b00000000001000000000000000000000
+  VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT =
+    0b00000000010000000000000000000000
+  VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT =
+    0b00000000100000000000000000000000
+  VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT =
+    0b00000001000000000000000000000000
+  VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT =
+    0b00000010000000000000000000000000
+  VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT =
+    0b00000100000000000000000000000000
+  VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 0b00001000000000000000000000000000
+  VK_PIPELINE_CREATE_RESERVED_BIT_28_NV = 0b00010000000000000000000000000000
+  VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 0b00100000000000000000000000000000
+  VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 0b01000000000000000000000000000000
+
 func toBits*(flags: openArray[VkPipelineCreateFlagBits]): VkPipelineCreateFlags =
   for flag in flags:
     result = VkPipelineCreateFlags(uint(result) or uint(flag))
@@ -2388,26 +2967,37 @@
   for value in VkPipelineCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkPipelineCreateFlags): bool = cint(a) == cint(b)
-type
-  VkPipelineShaderStageCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT = 0b00000000000000000000000000000001
-    VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT = 0b00000000000000000000000000000010
-    VK_PIPELINE_SHADER_STAGE_CREATE_RESERVED_3_BIT_KHR = 0b00000000000000000000000000001000
-func toBits*(flags: openArray[VkPipelineShaderStageCreateFlagBits]): VkPipelineShaderStageCreateFlags =
+proc `==`*(a, b: VkPipelineCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkPipelineShaderStageCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT =
+    0b00000000000000000000000000000001
+  VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT =
+    0b00000000000000000000000000000010
+  VK_PIPELINE_SHADER_STAGE_CREATE_RESERVED_3_BIT_KHR =
+    0b00000000000000000000000000001000
+
+func toBits*(
+    flags: openArray[VkPipelineShaderStageCreateFlagBits]
+): VkPipelineShaderStageCreateFlags =
   for flag in flags:
     result = VkPipelineShaderStageCreateFlags(uint(result) or uint(flag))
-func toEnums*(number: VkPipelineShaderStageCreateFlags): seq[VkPipelineShaderStageCreateFlagBits] =
+func toEnums*(
+    number: VkPipelineShaderStageCreateFlags
+): seq[VkPipelineShaderStageCreateFlagBits] =
   for value in VkPipelineShaderStageCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkPipelineShaderStageCreateFlags): bool = cint(a) == cint(b)
-type
-  VkColorComponentFlagBits* {.size: sizeof(cint).} = enum
-    VK_COLOR_COMPONENT_R_BIT = 0b00000000000000000000000000000001
-    VK_COLOR_COMPONENT_G_BIT = 0b00000000000000000000000000000010
-    VK_COLOR_COMPONENT_B_BIT = 0b00000000000000000000000000000100
-    VK_COLOR_COMPONENT_A_BIT = 0b00000000000000000000000000001000
+proc `==`*(a, b: VkPipelineShaderStageCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkColorComponentFlagBits* {.size: sizeof(cint).} = enum
+  VK_COLOR_COMPONENT_R_BIT = 0b00000000000000000000000000000001
+  VK_COLOR_COMPONENT_G_BIT = 0b00000000000000000000000000000010
+  VK_COLOR_COMPONENT_B_BIT = 0b00000000000000000000000000000100
+  VK_COLOR_COMPONENT_A_BIT = 0b00000000000000000000000000001000
+
 func toBits*(flags: openArray[VkColorComponentFlagBits]): VkColorComponentFlags =
   for flag in flags:
     result = VkColorComponentFlags(uint(result) or uint(flag))
@@ -2415,10 +3005,12 @@
   for value in VkColorComponentFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkColorComponentFlags): bool = cint(a) == cint(b)
-type
-  VkFenceCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_FENCE_CREATE_SIGNALED_BIT = 0b00000000000000000000000000000001
+proc `==`*(a, b: VkColorComponentFlags): bool =
+  cint(a) == cint(b)
+
+type VkFenceCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_FENCE_CREATE_SIGNALED_BIT = 0b00000000000000000000000000000001
+
 func toBits*(flags: openArray[VkFenceCreateFlagBits]): VkFenceCreateFlags =
   for flag in flags:
     result = VkFenceCreateFlags(uint(result) or uint(flag))
@@ -2426,40 +3018,49 @@
   for value in VkFenceCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkFenceCreateFlags): bool = cint(a) == cint(b)
-type
-  VkFormatFeatureFlagBits* {.size: sizeof(cint).} = enum
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0b00000000000000000000000000000001
-    VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0b00000000000000000000000000000010
-    VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0b00000000000000000000000000000100
-    VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0b00000000000000000000000000001000
-    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0b00000000000000000000000000010000
-    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0b00000000000000000000000000100000
-    VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0b00000000000000000000000001000000
-    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0b00000000000000000000000010000000
-    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0b00000000000000000000000100000000
-    VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0b00000000000000000000001000000000
-    VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0b00000000000000000000010000000000
-    VK_FORMAT_FEATURE_BLIT_DST_BIT = 0b00000000000000000000100000000000
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0b00000000000000000001000000000000
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0b00000000000000000010000000000000
-    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0b00000000000000000100000000000000
-    VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0b00000000000000001000000000000000
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0b00000000000000010000000000000000
-    VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0b00000000000000100000000000000000
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0b00000000000001000000000000000000
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0b00000000000010000000000000000000
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0b00000000000100000000000000000000
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0b00000000001000000000000000000000
-    VK_FORMAT_FEATURE_DISJOINT_BIT = 0b00000000010000000000000000000000
-    VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0b00000000100000000000000000000000
-    VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0b00000001000000000000000000000000
-    VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 0b00000010000000000000000000000000
-    VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 0b00000100000000000000000000000000
-    VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 0b00001000000000000000000000000000
-    VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 0b00010000000000000000000000000000
-    VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0b00100000000000000000000000000000
-    VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0b01000000000000000000000000000000
+proc `==`*(a, b: VkFenceCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkFormatFeatureFlagBits* {.size: sizeof(cint).} = enum
+  VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0b00000000000000000000000000000001
+  VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0b00000000000000000000000000000010
+  VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0b00000000000000000000000000000100
+  VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0b00000000000000000000000000001000
+  VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0b00000000000000000000000000010000
+  VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0b00000000000000000000000000100000
+  VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0b00000000000000000000000001000000
+  VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0b00000000000000000000000010000000
+  VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0b00000000000000000000000100000000
+  VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0b00000000000000000000001000000000
+  VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0b00000000000000000000010000000000
+  VK_FORMAT_FEATURE_BLIT_DST_BIT = 0b00000000000000000000100000000000
+  VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0b00000000000000000001000000000000
+  VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT =
+    0b00000000000000000010000000000000
+  VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0b00000000000000000100000000000000
+  VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0b00000000000000001000000000000000
+  VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0b00000000000000010000000000000000
+  VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0b00000000000000100000000000000000
+  VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT =
+    0b00000000000001000000000000000000
+  VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT =
+    0b00000000000010000000000000000000
+  VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT =
+    0b00000000000100000000000000000000
+  VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT =
+    0b00000000001000000000000000000000
+  VK_FORMAT_FEATURE_DISJOINT_BIT = 0b00000000010000000000000000000000
+  VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0b00000000100000000000000000000000
+  VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0b00000001000000000000000000000000
+  VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 0b00000010000000000000000000000000
+  VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 0b00000100000000000000000000000000
+  VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 0b00001000000000000000000000000000
+  VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 0b00010000000000000000000000000000
+  VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR =
+    0b00100000000000000000000000000000
+  VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR =
+    0b01000000000000000000000000000000
+
 func toBits*(flags: openArray[VkFormatFeatureFlagBits]): VkFormatFeatureFlags =
   for flag in flags:
     result = VkFormatFeatureFlags(uint(result) or uint(flag))
@@ -2467,10 +3068,12 @@
   for value in VkFormatFeatureFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkFormatFeatureFlags): bool = cint(a) == cint(b)
-type
-  VkQueryControlFlagBits* {.size: sizeof(cint).} = enum
-    VK_QUERY_CONTROL_PRECISE_BIT = 0b00000000000000000000000000000001
+proc `==`*(a, b: VkFormatFeatureFlags): bool =
+  cint(a) == cint(b)
+
+type VkQueryControlFlagBits* {.size: sizeof(cint).} = enum
+  VK_QUERY_CONTROL_PRECISE_BIT = 0b00000000000000000000000000000001
+
 func toBits*(flags: openArray[VkQueryControlFlagBits]): VkQueryControlFlags =
   for flag in flags:
     result = VkQueryControlFlags(uint(result) or uint(flag))
@@ -2478,14 +3081,16 @@
   for value in VkQueryControlFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkQueryControlFlags): bool = cint(a) == cint(b)
-type
-  VkQueryResultFlagBits* {.size: sizeof(cint).} = enum
-    VK_QUERY_RESULT_64_BIT = 0b00000000000000000000000000000001
-    VK_QUERY_RESULT_WAIT_BIT = 0b00000000000000000000000000000010
-    VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0b00000000000000000000000000000100
-    VK_QUERY_RESULT_PARTIAL_BIT = 0b00000000000000000000000000001000
-    VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 0b00000000000000000000000000010000
+proc `==`*(a, b: VkQueryControlFlags): bool =
+  cint(a) == cint(b)
+
+type VkQueryResultFlagBits* {.size: sizeof(cint).} = enum
+  VK_QUERY_RESULT_64_BIT = 0b00000000000000000000000000000001
+  VK_QUERY_RESULT_WAIT_BIT = 0b00000000000000000000000000000010
+  VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0b00000000000000000000000000000100
+  VK_QUERY_RESULT_PARTIAL_BIT = 0b00000000000000000000000000001000
+  VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 0b00000000000000000000000000010000
+
 func toBits*(flags: openArray[VkQueryResultFlagBits]): VkQueryResultFlags =
   for flag in flags:
     result = VkQueryResultFlags(uint(result) or uint(flag))
@@ -2493,57 +3098,83 @@
   for value in VkQueryResultFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkQueryResultFlags): bool = cint(a) == cint(b)
-type
-  VkCommandBufferUsageFlagBits* {.size: sizeof(cint).} = enum
-    VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0b00000000000000000000000000000001
-    VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0b00000000000000000000000000000010
-    VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkCommandBufferUsageFlagBits]): VkCommandBufferUsageFlags =
+proc `==`*(a, b: VkQueryResultFlags): bool =
+  cint(a) == cint(b)
+
+type VkCommandBufferUsageFlagBits* {.size: sizeof(cint).} = enum
+  VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0b00000000000000000000000000000001
+  VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0b00000000000000000000000000000010
+  VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkCommandBufferUsageFlagBits]
+): VkCommandBufferUsageFlags =
   for flag in flags:
     result = VkCommandBufferUsageFlags(uint(result) or uint(flag))
 func toEnums*(number: VkCommandBufferUsageFlags): seq[VkCommandBufferUsageFlagBits] =
   for value in VkCommandBufferUsageFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkCommandBufferUsageFlags): bool = cint(a) == cint(b)
-type
-  VkQueryPipelineStatisticFlagBits* {.size: sizeof(cint).} = enum
-    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0b00000000000000000000000000000001
-    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0b00000000000000000000000000000010
-    VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0b00000000000000000000000000000100
-    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0b00000000000000000000000000001000
-    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0b00000000000000000000000000010000
-    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0b00000000000000000000000000100000
-    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0b00000000000000000000000001000000
-    VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0b00000000000000000000000010000000
-    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0b00000000000000000000000100000000
-    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0b00000000000000000000001000000000
-    VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0b00000000000000000000010000000000
-    VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT = 0b00000000000000000000100000000000
-    VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT = 0b00000000000000000001000000000000
-    VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI = 0b00000000000000000010000000000000
-func toBits*(flags: openArray[VkQueryPipelineStatisticFlagBits]): VkQueryPipelineStatisticFlags =
+proc `==`*(a, b: VkCommandBufferUsageFlags): bool =
+  cint(a) == cint(b)
+
+type VkQueryPipelineStatisticFlagBits* {.size: sizeof(cint).} = enum
+  VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT =
+    0b00000000000000000000000000000001
+  VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT =
+    0b00000000000000000000000000000010
+  VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT =
+    0b00000000000000000000000000000100
+  VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT =
+    0b00000000000000000000000000001000
+  VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT =
+    0b00000000000000000000000000010000
+  VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT =
+    0b00000000000000000000000000100000
+  VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT =
+    0b00000000000000000000000001000000
+  VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT =
+    0b00000000000000000000000010000000
+  VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT =
+    0b00000000000000000000000100000000
+  VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT =
+    0b00000000000000000000001000000000
+  VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT =
+    0b00000000000000000000010000000000
+  VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT =
+    0b00000000000000000000100000000000
+  VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT =
+    0b00000000000000000001000000000000
+  VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI =
+    0b00000000000000000010000000000000
+
+func toBits*(
+    flags: openArray[VkQueryPipelineStatisticFlagBits]
+): VkQueryPipelineStatisticFlags =
   for flag in flags:
     result = VkQueryPipelineStatisticFlags(uint(result) or uint(flag))
-func toEnums*(number: VkQueryPipelineStatisticFlags): seq[VkQueryPipelineStatisticFlagBits] =
+func toEnums*(
+    number: VkQueryPipelineStatisticFlags
+): seq[VkQueryPipelineStatisticFlagBits] =
   for value in VkQueryPipelineStatisticFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkQueryPipelineStatisticFlags): bool = cint(a) == cint(b)
-type
-  VkImageAspectFlagBits* {.size: sizeof(cint).} = enum
-    VK_IMAGE_ASPECT_COLOR_BIT = 0b00000000000000000000000000000001
-    VK_IMAGE_ASPECT_DEPTH_BIT = 0b00000000000000000000000000000010
-    VK_IMAGE_ASPECT_STENCIL_BIT = 0b00000000000000000000000000000100
-    VK_IMAGE_ASPECT_METADATA_BIT = 0b00000000000000000000000000001000
-    VK_IMAGE_ASPECT_PLANE_0_BIT = 0b00000000000000000000000000010000
-    VK_IMAGE_ASPECT_PLANE_1_BIT = 0b00000000000000000000000000100000
-    VK_IMAGE_ASPECT_PLANE_2_BIT = 0b00000000000000000000000001000000
-    VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0b00000000000000000000000010000000
-    VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0b00000000000000000000000100000000
-    VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0b00000000000000000000001000000000
-    VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0b00000000000000000000010000000000
+proc `==`*(a, b: VkQueryPipelineStatisticFlags): bool =
+  cint(a) == cint(b)
+
+type VkImageAspectFlagBits* {.size: sizeof(cint).} = enum
+  VK_IMAGE_ASPECT_COLOR_BIT = 0b00000000000000000000000000000001
+  VK_IMAGE_ASPECT_DEPTH_BIT = 0b00000000000000000000000000000010
+  VK_IMAGE_ASPECT_STENCIL_BIT = 0b00000000000000000000000000000100
+  VK_IMAGE_ASPECT_METADATA_BIT = 0b00000000000000000000000000001000
+  VK_IMAGE_ASPECT_PLANE_0_BIT = 0b00000000000000000000000000010000
+  VK_IMAGE_ASPECT_PLANE_1_BIT = 0b00000000000000000000000000100000
+  VK_IMAGE_ASPECT_PLANE_2_BIT = 0b00000000000000000000000001000000
+  VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0b00000000000000000000000010000000
+  VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0b00000000000000000000000100000000
+  VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0b00000000000000000000001000000000
+  VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0b00000000000000000000010000000000
+
 func toBits*(flags: openArray[VkImageAspectFlagBits]): VkImageAspectFlags =
   for flag in flags:
     result = VkImageAspectFlags(uint(result) or uint(flag))
@@ -2551,12 +3182,14 @@
   for value in VkImageAspectFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkImageAspectFlags): bool = cint(a) == cint(b)
-type
-  VkSparseImageFormatFlagBits* {.size: sizeof(cint).} = enum
-    VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0b00000000000000000000000000000001
-    VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0b00000000000000000000000000000010
-    VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0b00000000000000000000000000000100
+proc `==`*(a, b: VkImageAspectFlags): bool =
+  cint(a) == cint(b)
+
+type VkSparseImageFormatFlagBits* {.size: sizeof(cint).} = enum
+  VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0b00000000000000000000000000000001
+  VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0b00000000000000000000000000000010
+  VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0b00000000000000000000000000000100
+
 func toBits*(flags: openArray[VkSparseImageFormatFlagBits]): VkSparseImageFormatFlags =
   for flag in flags:
     result = VkSparseImageFormatFlags(uint(result) or uint(flag))
@@ -2564,10 +3197,12 @@
   for value in VkSparseImageFormatFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkSparseImageFormatFlags): bool = cint(a) == cint(b)
-type
-  VkSparseMemoryBindFlagBits* {.size: sizeof(cint).} = enum
-    VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0b00000000000000000000000000000001
+proc `==`*(a, b: VkSparseImageFormatFlags): bool =
+  cint(a) == cint(b)
+
+type VkSparseMemoryBindFlagBits* {.size: sizeof(cint).} = enum
+  VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0b00000000000000000000000000000001
+
 func toBits*(flags: openArray[VkSparseMemoryBindFlagBits]): VkSparseMemoryBindFlags =
   for flag in flags:
     result = VkSparseMemoryBindFlags(uint(result) or uint(flag))
@@ -2575,35 +3210,41 @@
   for value in VkSparseMemoryBindFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkSparseMemoryBindFlags): bool = cint(a) == cint(b)
-type
-  VkPipelineStageFlagBits* {.size: sizeof(cint).} = enum
-    VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0b00000000000000000000000000000001
-    VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0b00000000000000000000000000000010
-    VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0b00000000000000000000000000000100
-    VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0b00000000000000000000000000001000
-    VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0b00000000000000000000000000010000
-    VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0b00000000000000000000000000100000
-    VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0b00000000000000000000000001000000
-    VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0b00000000000000000000000010000000
-    VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0b00000000000000000000000100000000
-    VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0b00000000000000000000001000000000
-    VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0b00000000000000000000010000000000
-    VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0b00000000000000000000100000000000
-    VK_PIPELINE_STAGE_TRANSFER_BIT = 0b00000000000000000001000000000000
-    VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0b00000000000000000010000000000000
-    VK_PIPELINE_STAGE_HOST_BIT = 0b00000000000000000100000000000000
-    VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0b00000000000000001000000000000000
-    VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0b00000000000000010000000000000000
-    VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 0b00000000000000100000000000000000
-    VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0b00000000000001000000000000000000
-    VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 0b00000000000010000000000000000000
-    VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 0b00000000000100000000000000000000
-    VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 0b00000000001000000000000000000000
-    VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0b00000000010000000000000000000000
-    VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0b00000000100000000000000000000000
-    VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0b00000001000000000000000000000000
-    VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0b00000010000000000000000000000000
+proc `==`*(a, b: VkSparseMemoryBindFlags): bool =
+  cint(a) == cint(b)
+
+type VkPipelineStageFlagBits* {.size: sizeof(cint).} = enum
+  VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0b00000000000000000000000000000001
+  VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0b00000000000000000000000000000010
+  VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0b00000000000000000000000000000100
+  VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0b00000000000000000000000000001000
+  VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0b00000000000000000000000000010000
+  VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT =
+    0b00000000000000000000000000100000
+  VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0b00000000000000000000000001000000
+  VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0b00000000000000000000000010000000
+  VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0b00000000000000000000000100000000
+  VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0b00000000000000000000001000000000
+  VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0b00000000000000000000010000000000
+  VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0b00000000000000000000100000000000
+  VK_PIPELINE_STAGE_TRANSFER_BIT = 0b00000000000000000001000000000000
+  VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0b00000000000000000010000000000000
+  VK_PIPELINE_STAGE_HOST_BIT = 0b00000000000000000100000000000000
+  VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0b00000000000000001000000000000000
+  VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0b00000000000000010000000000000000
+  VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 0b00000000000000100000000000000000
+  VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0b00000000000001000000000000000000
+  VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 0b00000000000010000000000000000000
+  VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 0b00000000000100000000000000000000
+  VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 0b00000000001000000000000000000000
+  VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR =
+    0b00000000010000000000000000000000
+  VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT =
+    0b00000000100000000000000000000000
+  VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0b00000001000000000000000000000000
+  VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR =
+    0b00000010000000000000000000000000
+
 func toBits*(flags: openArray[VkPipelineStageFlagBits]): VkPipelineStageFlags =
   for flag in flags:
     result = VkPipelineStageFlags(uint(result) or uint(flag))
@@ -2611,12 +3252,14 @@
   for value in VkPipelineStageFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkPipelineStageFlags): bool = cint(a) == cint(b)
-type
-  VkCommandPoolCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0b00000000000000000000000000000001
-    VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0b00000000000000000000000000000010
-    VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0b00000000000000000000000000000100
+proc `==`*(a, b: VkPipelineStageFlags): bool =
+  cint(a) == cint(b)
+
+type VkCommandPoolCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0b00000000000000000000000000000001
+  VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0b00000000000000000000000000000010
+  VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0b00000000000000000000000000000100
+
 func toBits*(flags: openArray[VkCommandPoolCreateFlagBits]): VkCommandPoolCreateFlags =
   for flag in flags:
     result = VkCommandPoolCreateFlags(uint(result) or uint(flag))
@@ -2624,11 +3267,13 @@
   for value in VkCommandPoolCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkCommandPoolCreateFlags): bool = cint(a) == cint(b)
-type
-  VkCommandPoolResetFlagBits* {.size: sizeof(cint).} = enum
-    VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0b00000000000000000000000000000001
-    VK_COMMAND_POOL_RESET_RESERVED_1_BIT_COREAVI = 0b00000000000000000000000000000010
+proc `==`*(a, b: VkCommandPoolCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkCommandPoolResetFlagBits* {.size: sizeof(cint).} = enum
+  VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0b00000000000000000000000000000001
+  VK_COMMAND_POOL_RESET_RESERVED_1_BIT_COREAVI = 0b00000000000000000000000000000010
+
 func toBits*(flags: openArray[VkCommandPoolResetFlagBits]): VkCommandPoolResetFlags =
   for flag in flags:
     result = VkCommandPoolResetFlags(uint(result) or uint(flag))
@@ -2636,27 +3281,33 @@
   for value in VkCommandPoolResetFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkCommandPoolResetFlags): bool = cint(a) == cint(b)
-type
-  VkCommandBufferResetFlagBits* {.size: sizeof(cint).} = enum
-    VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0b00000000000000000000000000000001
-func toBits*(flags: openArray[VkCommandBufferResetFlagBits]): VkCommandBufferResetFlags =
+proc `==`*(a, b: VkCommandPoolResetFlags): bool =
+  cint(a) == cint(b)
+
+type VkCommandBufferResetFlagBits* {.size: sizeof(cint).} = enum
+  VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0b00000000000000000000000000000001
+
+func toBits*(
+    flags: openArray[VkCommandBufferResetFlagBits]
+): VkCommandBufferResetFlags =
   for flag in flags:
     result = VkCommandBufferResetFlags(uint(result) or uint(flag))
 func toEnums*(number: VkCommandBufferResetFlags): seq[VkCommandBufferResetFlagBits] =
   for value in VkCommandBufferResetFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkCommandBufferResetFlags): bool = cint(a) == cint(b)
-type
-  VkSampleCountFlagBits* {.size: sizeof(cint).} = enum
-    VK_SAMPLE_COUNT_1_BIT = 0b00000000000000000000000000000001
-    VK_SAMPLE_COUNT_2_BIT = 0b00000000000000000000000000000010
-    VK_SAMPLE_COUNT_4_BIT = 0b00000000000000000000000000000100
-    VK_SAMPLE_COUNT_8_BIT = 0b00000000000000000000000000001000
-    VK_SAMPLE_COUNT_16_BIT = 0b00000000000000000000000000010000
-    VK_SAMPLE_COUNT_32_BIT = 0b00000000000000000000000000100000
-    VK_SAMPLE_COUNT_64_BIT = 0b00000000000000000000000001000000
+proc `==`*(a, b: VkCommandBufferResetFlags): bool =
+  cint(a) == cint(b)
+
+type VkSampleCountFlagBits* {.size: sizeof(cint).} = enum
+  VK_SAMPLE_COUNT_1_BIT = 0b00000000000000000000000000000001
+  VK_SAMPLE_COUNT_2_BIT = 0b00000000000000000000000000000010
+  VK_SAMPLE_COUNT_4_BIT = 0b00000000000000000000000000000100
+  VK_SAMPLE_COUNT_8_BIT = 0b00000000000000000000000000001000
+  VK_SAMPLE_COUNT_16_BIT = 0b00000000000000000000000000010000
+  VK_SAMPLE_COUNT_32_BIT = 0b00000000000000000000000000100000
+  VK_SAMPLE_COUNT_64_BIT = 0b00000000000000000000000001000000
+
 func toBits*(flags: openArray[VkSampleCountFlagBits]): VkSampleCountFlags =
   for flag in flags:
     result = VkSampleCountFlags(uint(result) or uint(flag))
@@ -2664,22 +3315,30 @@
   for value in VkSampleCountFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkSampleCountFlags): bool = cint(a) == cint(b)
-type
-  VkAttachmentDescriptionFlagBits* {.size: sizeof(cint).} = enum
-    VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0b00000000000000000000000000000001
-func toBits*(flags: openArray[VkAttachmentDescriptionFlagBits]): VkAttachmentDescriptionFlags =
+proc `==`*(a, b: VkSampleCountFlags): bool =
+  cint(a) == cint(b)
+
+type VkAttachmentDescriptionFlagBits* {.size: sizeof(cint).} = enum
+  VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0b00000000000000000000000000000001
+
+func toBits*(
+    flags: openArray[VkAttachmentDescriptionFlagBits]
+): VkAttachmentDescriptionFlags =
   for flag in flags:
     result = VkAttachmentDescriptionFlags(uint(result) or uint(flag))
-func toEnums*(number: VkAttachmentDescriptionFlags): seq[VkAttachmentDescriptionFlagBits] =
+func toEnums*(
+    number: VkAttachmentDescriptionFlags
+): seq[VkAttachmentDescriptionFlagBits] =
   for value in VkAttachmentDescriptionFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkAttachmentDescriptionFlags): bool = cint(a) == cint(b)
-type
-  VkStencilFaceFlagBits* {.size: sizeof(cint).} = enum
-    VK_STENCIL_FACE_FRONT_BIT = 0b00000000000000000000000000000001
-    VK_STENCIL_FACE_BACK_BIT = 0b00000000000000000000000000000010
+proc `==`*(a, b: VkAttachmentDescriptionFlags): bool =
+  cint(a) == cint(b)
+
+type VkStencilFaceFlagBits* {.size: sizeof(cint).} = enum
+  VK_STENCIL_FACE_FRONT_BIT = 0b00000000000000000000000000000001
+  VK_STENCIL_FACE_BACK_BIT = 0b00000000000000000000000000000010
+
 func toBits*(flags: openArray[VkStencilFaceFlagBits]): VkStencilFaceFlags =
   for flag in flags:
     result = VkStencilFaceFlags(uint(result) or uint(flag))
@@ -2687,28 +3346,35 @@
   for value in VkStencilFaceFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkStencilFaceFlags): bool = cint(a) == cint(b)
-const
-  VK_STENCIL_FACE_FRONT_AND_BACK* = 0x00000003
-type
-  VkDescriptorPoolCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0b00000000000000000000000000000001
-    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0b00000000000000000000000000000010
-    VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkDescriptorPoolCreateFlagBits]): VkDescriptorPoolCreateFlags =
+proc `==`*(a, b: VkStencilFaceFlags): bool =
+  cint(a) == cint(b)
+
+const VK_STENCIL_FACE_FRONT_AND_BACK* = 0x00000003
+type VkDescriptorPoolCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0b00000000000000000000000000000001
+  VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0b00000000000000000000000000000010
+  VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT = 0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkDescriptorPoolCreateFlagBits]
+): VkDescriptorPoolCreateFlags =
   for flag in flags:
     result = VkDescriptorPoolCreateFlags(uint(result) or uint(flag))
-func toEnums*(number: VkDescriptorPoolCreateFlags): seq[VkDescriptorPoolCreateFlagBits] =
+func toEnums*(
+    number: VkDescriptorPoolCreateFlags
+): seq[VkDescriptorPoolCreateFlagBits] =
   for value in VkDescriptorPoolCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkDescriptorPoolCreateFlags): bool = cint(a) == cint(b)
-type
-  VkDependencyFlagBits* {.size: sizeof(cint).} = enum
-    VK_DEPENDENCY_BY_REGION_BIT = 0b00000000000000000000000000000001
-    VK_DEPENDENCY_VIEW_LOCAL_BIT = 0b00000000000000000000000000000010
-    VK_DEPENDENCY_DEVICE_GROUP_BIT = 0b00000000000000000000000000000100
-    VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 0b00000000000000000000000000001000
+proc `==`*(a, b: VkDescriptorPoolCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkDependencyFlagBits* {.size: sizeof(cint).} = enum
+  VK_DEPENDENCY_BY_REGION_BIT = 0b00000000000000000000000000000001
+  VK_DEPENDENCY_VIEW_LOCAL_BIT = 0b00000000000000000000000000000010
+  VK_DEPENDENCY_DEVICE_GROUP_BIT = 0b00000000000000000000000000000100
+  VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 0b00000000000000000000000000001000
+
 func toBits*(flags: openArray[VkDependencyFlagBits]): VkDependencyFlags =
   for flag in flags:
     result = VkDependencyFlags(uint(result) or uint(flag))
@@ -2716,13 +3382,17 @@
   for value in VkDependencyFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkDependencyFlags): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkDependencyFlags): bool =
+  cint(a) == cint(b)
+
 type
   VkSemaphoreType* {.size: sizeof(cint).} = enum
     VK_SEMAPHORE_TYPE_BINARY = 0
     VK_SEMAPHORE_TYPE_TIMELINE = 1
+
   VkSemaphoreWaitFlagBits* {.size: sizeof(cint).} = enum
     VK_SEMAPHORE_WAIT_ANY_BIT = 0b00000000000000000000000000000001
+
 func toBits*(flags: openArray[VkSemaphoreWaitFlagBits]): VkSemaphoreWaitFlags =
   for flag in flags:
     result = VkSemaphoreWaitFlags(uint(result) or uint(flag))
@@ -2730,7 +3400,9 @@
   for value in VkSemaphoreWaitFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkSemaphoreWaitFlags): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkSemaphoreWaitFlags): bool =
+  cint(a) == cint(b)
+
 type
   VkPresentModeKHR* {.size: sizeof(cint).} = enum
     VK_PRESENT_MODE_IMMEDIATE_KHR = 0
@@ -2739,6 +3411,7 @@
     VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3
     VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000
     VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001
+
   VkColorSpaceKHR* {.size: sizeof(cint).} = enum
     VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0
     VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001
@@ -2756,25 +3429,34 @@
     VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013
     VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014
     VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000
+
   VkDisplayPlaneAlphaFlagBitsKHR* {.size: sizeof(cint).} = enum
     VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0b00000000000000000000000000000001
     VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0b00000000000000000000000000000010
     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0b00000000000000000000000000000100
-    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0b00000000000000000000000000001000
-func toBits*(flags: openArray[VkDisplayPlaneAlphaFlagBitsKHR]): VkDisplayPlaneAlphaFlagsKHR =
+    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR =
+      0b00000000000000000000000000001000
+
+func toBits*(
+    flags: openArray[VkDisplayPlaneAlphaFlagBitsKHR]
+): VkDisplayPlaneAlphaFlagsKHR =
   for flag in flags:
     result = VkDisplayPlaneAlphaFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkDisplayPlaneAlphaFlagsKHR): seq[VkDisplayPlaneAlphaFlagBitsKHR] =
+func toEnums*(
+    number: VkDisplayPlaneAlphaFlagsKHR
+): seq[VkDisplayPlaneAlphaFlagBitsKHR] =
   for value in VkDisplayPlaneAlphaFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkDisplayPlaneAlphaFlagsKHR): bool = cint(a) == cint(b)
-type
-  VkCompositeAlphaFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0b00000000000000000000000000000001
-    VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0b00000000000000000000000000000010
-    VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0b00000000000000000000000000000100
-    VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0b00000000000000000000000000001000
+proc `==`*(a, b: VkDisplayPlaneAlphaFlagsKHR): bool =
+  cint(a) == cint(b)
+
+type VkCompositeAlphaFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0b00000000000000000000000000000001
+  VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0b00000000000000000000000000000010
+  VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0b00000000000000000000000000000100
+  VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0b00000000000000000000000000001000
+
 func toBits*(flags: openArray[VkCompositeAlphaFlagBitsKHR]): VkCompositeAlphaFlagsKHR =
   for flag in flags:
     result = VkCompositeAlphaFlagsKHR(uint(result) or uint(flag))
@@ -2782,49 +3464,66 @@
   for value in VkCompositeAlphaFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkCompositeAlphaFlagsKHR): bool = cint(a) == cint(b)
-type
-  VkSurfaceTransformFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0b00000000000000000000000000000001
-    VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0b00000000000000000000000000000010
-    VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0b00000000000000000000000000000100
-    VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0b00000000000000000000000000001000
-    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0b00000000000000000000000000010000
-    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0b00000000000000000000000000100000
-    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0b00000000000000000000000001000000
-    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0b00000000000000000000000010000000
-    VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0b00000000000000000000000100000000
-func toBits*(flags: openArray[VkSurfaceTransformFlagBitsKHR]): VkSurfaceTransformFlagsKHR =
+proc `==`*(a, b: VkCompositeAlphaFlagsKHR): bool =
+  cint(a) == cint(b)
+
+type VkSurfaceTransformFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0b00000000000000000000000000000001
+  VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0b00000000000000000000000000000010
+  VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0b00000000000000000000000000000100
+  VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0b00000000000000000000000000001000
+  VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0b00000000000000000000000000010000
+  VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR =
+    0b00000000000000000000000000100000
+  VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR =
+    0b00000000000000000000000001000000
+  VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR =
+    0b00000000000000000000000010000000
+  VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0b00000000000000000000000100000000
+
+func toBits*(
+    flags: openArray[VkSurfaceTransformFlagBitsKHR]
+): VkSurfaceTransformFlagsKHR =
   for flag in flags:
     result = VkSurfaceTransformFlagsKHR(uint(result) or uint(flag))
 func toEnums*(number: VkSurfaceTransformFlagsKHR): seq[VkSurfaceTransformFlagBitsKHR] =
   for value in VkSurfaceTransformFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkSurfaceTransformFlagsKHR): bool = cint(a) == cint(b)
-type
-  VkSwapchainImageUsageFlagBitsANDROID* {.size: sizeof(cint).} = enum
-    VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_ANDROID = 0b00000000000000000000000000000001
-func toBits*(flags: openArray[VkSwapchainImageUsageFlagBitsANDROID]): VkSwapchainImageUsageFlagsANDROID =
+proc `==`*(a, b: VkSurfaceTransformFlagsKHR): bool =
+  cint(a) == cint(b)
+
+type VkSwapchainImageUsageFlagBitsANDROID* {.size: sizeof(cint).} = enum
+  VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_ANDROID = 0b00000000000000000000000000000001
+
+func toBits*(
+    flags: openArray[VkSwapchainImageUsageFlagBitsANDROID]
+): VkSwapchainImageUsageFlagsANDROID =
   for flag in flags:
     result = VkSwapchainImageUsageFlagsANDROID(uint(result) or uint(flag))
-func toEnums*(number: VkSwapchainImageUsageFlagsANDROID): seq[VkSwapchainImageUsageFlagBitsANDROID] =
+func toEnums*(
+    number: VkSwapchainImageUsageFlagsANDROID
+): seq[VkSwapchainImageUsageFlagBitsANDROID] =
   for value in VkSwapchainImageUsageFlagBitsANDROID.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkSwapchainImageUsageFlagsANDROID): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkSwapchainImageUsageFlagsANDROID): bool =
+  cint(a) == cint(b)
+
 type
   VkTimeDomainEXT* {.size: sizeof(cint).} = enum
     VK_TIME_DOMAIN_DEVICE_EXT = 0
     VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1
     VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2
     VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3
+
   VkDebugReportFlagBitsEXT* {.size: sizeof(cint).} = enum
     VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0b00000000000000000000000000000001
     VK_DEBUG_REPORT_WARNING_BIT_EXT = 0b00000000000000000000000000000010
     VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0b00000000000000000000000000000100
     VK_DEBUG_REPORT_ERROR_BIT_EXT = 0b00000000000000000000000000001000
     VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0b00000000000000000000000000010000
+
 func toBits*(flags: openArray[VkDebugReportFlagBitsEXT]): VkDebugReportFlagsEXT =
   for flag in flags:
     result = VkDebugReportFlagsEXT(uint(result) or uint(flag))
@@ -2832,7 +3531,9 @@
   for value in VkDebugReportFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkDebugReportFlagsEXT): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkDebugReportFlagsEXT): bool =
+  cint(a) == cint(b)
+
 type
   VkDebugReportObjectTypeEXT* {.size: sizeof(cint).} = enum
     VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0
@@ -2874,51 +3575,73 @@
     VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000
     VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000
     VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000
+
   VkDeviceMemoryReportEventTypeEXT* {.size: sizeof(cint).} = enum
     VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT = 0
     VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT = 1
     VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT = 2
     VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT = 3
     VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT = 4
+
   VkRasterizationOrderAMD* {.size: sizeof(cint).} = enum
     VK_RASTERIZATION_ORDER_STRICT_AMD = 0
     VK_RASTERIZATION_ORDER_RELAXED_AMD = 1
+
   VkExternalMemoryHandleTypeFlagBitsNV* {.size: sizeof(cint).} = enum
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0b00000000000000000000000000000001
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0b00000000000000000000000000000010
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0b00000000000000000000000000000100
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0b00000000000000000000000000001000
-func toBits*(flags: openArray[VkExternalMemoryHandleTypeFlagBitsNV]): VkExternalMemoryHandleTypeFlagsNV =
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV =
+      0b00000000000000000000000000000001
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV =
+      0b00000000000000000000000000000010
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV =
+      0b00000000000000000000000000000100
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV =
+      0b00000000000000000000000000001000
+
+func toBits*(
+    flags: openArray[VkExternalMemoryHandleTypeFlagBitsNV]
+): VkExternalMemoryHandleTypeFlagsNV =
   for flag in flags:
     result = VkExternalMemoryHandleTypeFlagsNV(uint(result) or uint(flag))
-func toEnums*(number: VkExternalMemoryHandleTypeFlagsNV): seq[VkExternalMemoryHandleTypeFlagBitsNV] =
+func toEnums*(
+    number: VkExternalMemoryHandleTypeFlagsNV
+): seq[VkExternalMemoryHandleTypeFlagBitsNV] =
   for value in VkExternalMemoryHandleTypeFlagBitsNV.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkExternalMemoryHandleTypeFlagsNV): bool = cint(a) == cint(b)
-type
-  VkExternalMemoryFeatureFlagBitsNV* {.size: sizeof(cint).} = enum
-    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0b00000000000000000000000000000001
-    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0b00000000000000000000000000000010
-    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkExternalMemoryFeatureFlagBitsNV]): VkExternalMemoryFeatureFlagsNV =
+proc `==`*(a, b: VkExternalMemoryHandleTypeFlagsNV): bool =
+  cint(a) == cint(b)
+
+type VkExternalMemoryFeatureFlagBitsNV* {.size: sizeof(cint).} = enum
+  VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0b00000000000000000000000000000001
+  VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0b00000000000000000000000000000010
+  VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkExternalMemoryFeatureFlagBitsNV]
+): VkExternalMemoryFeatureFlagsNV =
   for flag in flags:
     result = VkExternalMemoryFeatureFlagsNV(uint(result) or uint(flag))
-func toEnums*(number: VkExternalMemoryFeatureFlagsNV): seq[VkExternalMemoryFeatureFlagBitsNV] =
+func toEnums*(
+    number: VkExternalMemoryFeatureFlagsNV
+): seq[VkExternalMemoryFeatureFlagBitsNV] =
   for value in VkExternalMemoryFeatureFlagBitsNV.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkExternalMemoryFeatureFlagsNV): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkExternalMemoryFeatureFlagsNV): bool =
+  cint(a) == cint(b)
+
 type
   VkValidationCheckEXT* {.size: sizeof(cint).} = enum
     VK_VALIDATION_CHECK_ALL_EXT = 0
     VK_VALIDATION_CHECK_SHADERS_EXT = 1
+
   VkValidationFeatureEnableEXT* {.size: sizeof(cint).} = enum
     VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0
     VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1
     VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2
     VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3
     VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4
+
   VkValidationFeatureDisableEXT* {.size: sizeof(cint).} = enum
     VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0
     VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1
@@ -2928,6 +3651,7 @@
     VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5
     VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6
     VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT = 7
+
   VkSubgroupFeatureFlagBits* {.size: sizeof(cint).} = enum
     VK_SUBGROUP_FEATURE_BASIC_BIT = 0b00000000000000000000000000000001
     VK_SUBGROUP_FEATURE_VOTE_BIT = 0b00000000000000000000000000000010
@@ -2938,6 +3662,7 @@
     VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0b00000000000000000000000001000000
     VK_SUBGROUP_FEATURE_QUAD_BIT = 0b00000000000000000000000010000000
     VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0b00000000000000000000000100000000
+
 func toBits*(flags: openArray[VkSubgroupFeatureFlagBits]): VkSubgroupFeatureFlags =
   for flag in flags:
     result = VkSubgroupFeatureFlags(uint(result) or uint(flag))
@@ -2945,23 +3670,34 @@
   for value in VkSubgroupFeatureFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkSubgroupFeatureFlags): bool = cint(a) == cint(b)
-type
-  VkIndirectCommandsLayoutUsageFlagBitsNV* {.size: sizeof(cint).} = enum
-    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 0b00000000000000000000000000000001
-    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 0b00000000000000000000000000000010
-    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkIndirectCommandsLayoutUsageFlagBitsNV]): VkIndirectCommandsLayoutUsageFlagsNV =
+proc `==`*(a, b: VkSubgroupFeatureFlags): bool =
+  cint(a) == cint(b)
+
+type VkIndirectCommandsLayoutUsageFlagBitsNV* {.size: sizeof(cint).} = enum
+  VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV =
+    0b00000000000000000000000000000001
+  VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV =
+    0b00000000000000000000000000000010
+  VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV =
+    0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkIndirectCommandsLayoutUsageFlagBitsNV]
+): VkIndirectCommandsLayoutUsageFlagsNV =
   for flag in flags:
     result = VkIndirectCommandsLayoutUsageFlagsNV(uint(result) or uint(flag))
-func toEnums*(number: VkIndirectCommandsLayoutUsageFlagsNV): seq[VkIndirectCommandsLayoutUsageFlagBitsNV] =
+func toEnums*(
+    number: VkIndirectCommandsLayoutUsageFlagsNV
+): seq[VkIndirectCommandsLayoutUsageFlagBitsNV] =
   for value in VkIndirectCommandsLayoutUsageFlagBitsNV.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkIndirectCommandsLayoutUsageFlagsNV): bool = cint(a) == cint(b)
-type
-  VkIndirectStateFlagBitsNV* {.size: sizeof(cint).} = enum
-    VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 0b00000000000000000000000000000001
+proc `==`*(a, b: VkIndirectCommandsLayoutUsageFlagsNV): bool =
+  cint(a) == cint(b)
+
+type VkIndirectStateFlagBitsNV* {.size: sizeof(cint).} = enum
+  VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 0b00000000000000000000000000000001
+
 func toBits*(flags: openArray[VkIndirectStateFlagBitsNV]): VkIndirectStateFlagsNV =
   for flag in flags:
     result = VkIndirectStateFlagsNV(uint(result) or uint(flag))
@@ -2969,7 +3705,9 @@
   for value in VkIndirectStateFlagBitsNV.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkIndirectStateFlagsNV): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkIndirectStateFlagsNV): bool =
+  cint(a) == cint(b)
+
 type
   VkIndirectCommandsTokenTypeNV* {.size: sizeof(cint).} = enum
     VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0
@@ -2981,101 +3719,156 @@
     VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6
     VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7
     VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV = 1000328000
+
   VkPrivateDataSlotCreateFlagBits* {.size: sizeof(cint).} = enum
     VK_PRIVATE_DATA_SLOT_CREATE_RESERVED_0_BIT_NV = 0b00000000000000000000000000000001
-func toBits*(flags: openArray[VkPrivateDataSlotCreateFlagBits]): VkPrivateDataSlotCreateFlags =
+
+func toBits*(
+    flags: openArray[VkPrivateDataSlotCreateFlagBits]
+): VkPrivateDataSlotCreateFlags =
   for flag in flags:
     result = VkPrivateDataSlotCreateFlags(uint(result) or uint(flag))
-func toEnums*(number: VkPrivateDataSlotCreateFlags): seq[VkPrivateDataSlotCreateFlagBits] =
+func toEnums*(
+    number: VkPrivateDataSlotCreateFlags
+): seq[VkPrivateDataSlotCreateFlagBits] =
   for value in VkPrivateDataSlotCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkPrivateDataSlotCreateFlags): bool = cint(a) == cint(b)
-type
-  VkDescriptorSetLayoutCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0b00000000000000000000000000000001
-    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0b00000000000000000000000000000010
-    VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 0b00000000000000000000000000000100
-    VK_DESCRIPTOR_SET_LAYOUT_CREATE_RESERVED_3_BIT_AMD = 0b00000000000000000000000000001000
-    VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 0b00000000000000000000000000010000
-    VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 0b00000000000000000000000000100000
-func toBits*(flags: openArray[VkDescriptorSetLayoutCreateFlagBits]): VkDescriptorSetLayoutCreateFlags =
+proc `==`*(a, b: VkPrivateDataSlotCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkDescriptorSetLayoutCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR =
+    0b00000000000000000000000000000001
+  VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT =
+    0b00000000000000000000000000000010
+  VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT =
+    0b00000000000000000000000000000100
+  VK_DESCRIPTOR_SET_LAYOUT_CREATE_RESERVED_3_BIT_AMD =
+    0b00000000000000000000000000001000
+  VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT =
+    0b00000000000000000000000000010000
+  VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT =
+    0b00000000000000000000000000100000
+
+func toBits*(
+    flags: openArray[VkDescriptorSetLayoutCreateFlagBits]
+): VkDescriptorSetLayoutCreateFlags =
   for flag in flags:
     result = VkDescriptorSetLayoutCreateFlags(uint(result) or uint(flag))
-func toEnums*(number: VkDescriptorSetLayoutCreateFlags): seq[VkDescriptorSetLayoutCreateFlagBits] =
+func toEnums*(
+    number: VkDescriptorSetLayoutCreateFlags
+): seq[VkDescriptorSetLayoutCreateFlagBits] =
   for value in VkDescriptorSetLayoutCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkDescriptorSetLayoutCreateFlags): bool = cint(a) == cint(b)
-type
-  VkExternalMemoryHandleTypeFlagBits* {.size: sizeof(cint).} = enum
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0b00000000000000000000000000000001
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0b00000000000000000000000000000010
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0b00000000000000000000000000000100
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0b00000000000000000000000000001000
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0b00000000000000000000000000010000
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0b00000000000000000000000000100000
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0b00000000000000000000000001000000
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0b00000000000000000000000010000000
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0b00000000000000000000000100000000
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0b00000000000000000000001000000000
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0b00000000000000000000010000000000
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA = 0b00000000000000000000100000000000
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV = 0b00000000000000000001000000000000
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCI_BUF_BIT_NV = 0b00000000000000000010000000000000
-func toBits*(flags: openArray[VkExternalMemoryHandleTypeFlagBits]): VkExternalMemoryHandleTypeFlags =
+proc `==`*(a, b: VkDescriptorSetLayoutCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkExternalMemoryHandleTypeFlagBits* {.size: sizeof(cint).} = enum
+  VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0b00000000000000000000000000000001
+  VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0b00000000000000000000000000000010
+  VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT =
+    0b00000000000000000000000000000100
+  VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0b00000000000000000000000000001000
+  VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT =
+    0b00000000000000000000000000010000
+  VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0b00000000000000000000000000100000
+  VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0b00000000000000000000000001000000
+  VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT =
+    0b00000000000000000000000010000000
+  VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT =
+    0b00000000000000000000000100000000
+  VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0b00000000000000000000001000000000
+  VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID =
+    0b00000000000000000000010000000000
+  VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA =
+    0b00000000000000000000100000000000
+  VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV =
+    0b00000000000000000001000000000000
+  VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCI_BUF_BIT_NV = 0b00000000000000000010000000000000
+
+func toBits*(
+    flags: openArray[VkExternalMemoryHandleTypeFlagBits]
+): VkExternalMemoryHandleTypeFlags =
   for flag in flags:
     result = VkExternalMemoryHandleTypeFlags(uint(result) or uint(flag))
-func toEnums*(number: VkExternalMemoryHandleTypeFlags): seq[VkExternalMemoryHandleTypeFlagBits] =
+func toEnums*(
+    number: VkExternalMemoryHandleTypeFlags
+): seq[VkExternalMemoryHandleTypeFlagBits] =
   for value in VkExternalMemoryHandleTypeFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkExternalMemoryHandleTypeFlags): bool = cint(a) == cint(b)
-type
-  VkExternalMemoryFeatureFlagBits* {.size: sizeof(cint).} = enum
-    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0b00000000000000000000000000000001
-    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0b00000000000000000000000000000010
-    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkExternalMemoryFeatureFlagBits]): VkExternalMemoryFeatureFlags =
+proc `==`*(a, b: VkExternalMemoryHandleTypeFlags): bool =
+  cint(a) == cint(b)
+
+type VkExternalMemoryFeatureFlagBits* {.size: sizeof(cint).} = enum
+  VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0b00000000000000000000000000000001
+  VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0b00000000000000000000000000000010
+  VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkExternalMemoryFeatureFlagBits]
+): VkExternalMemoryFeatureFlags =
   for flag in flags:
     result = VkExternalMemoryFeatureFlags(uint(result) or uint(flag))
-func toEnums*(number: VkExternalMemoryFeatureFlags): seq[VkExternalMemoryFeatureFlagBits] =
+func toEnums*(
+    number: VkExternalMemoryFeatureFlags
+): seq[VkExternalMemoryFeatureFlagBits] =
   for value in VkExternalMemoryFeatureFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkExternalMemoryFeatureFlags): bool = cint(a) == cint(b)
-type
-  VkExternalSemaphoreHandleTypeFlagBits* {.size: sizeof(cint).} = enum
-    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0b00000000000000000000000000000001
-    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0b00000000000000000000000000000010
-    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0b00000000000000000000000000000100
-    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0b00000000000000000000000000001000
-    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0b00000000000000000000000000010000
-    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV = 0b00000000000000000000000000100000
-    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA = 0b00000000000000000000000010000000
-func toBits*(flags: openArray[VkExternalSemaphoreHandleTypeFlagBits]): VkExternalSemaphoreHandleTypeFlags =
+proc `==`*(a, b: VkExternalMemoryFeatureFlags): bool =
+  cint(a) == cint(b)
+
+type VkExternalSemaphoreHandleTypeFlagBits* {.size: sizeof(cint).} = enum
+  VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0b00000000000000000000000000000001
+  VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT =
+    0b00000000000000000000000000000010
+  VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT =
+    0b00000000000000000000000000000100
+  VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0b00000000000000000000000000001000
+  VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0b00000000000000000000000000010000
+  VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV =
+    0b00000000000000000000000000100000
+  VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA =
+    0b00000000000000000000000010000000
+
+func toBits*(
+    flags: openArray[VkExternalSemaphoreHandleTypeFlagBits]
+): VkExternalSemaphoreHandleTypeFlags =
   for flag in flags:
     result = VkExternalSemaphoreHandleTypeFlags(uint(result) or uint(flag))
-func toEnums*(number: VkExternalSemaphoreHandleTypeFlags): seq[VkExternalSemaphoreHandleTypeFlagBits] =
+func toEnums*(
+    number: VkExternalSemaphoreHandleTypeFlags
+): seq[VkExternalSemaphoreHandleTypeFlagBits] =
   for value in VkExternalSemaphoreHandleTypeFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkExternalSemaphoreHandleTypeFlags): bool = cint(a) == cint(b)
-type
-  VkExternalSemaphoreFeatureFlagBits* {.size: sizeof(cint).} = enum
-    VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0b00000000000000000000000000000001
-    VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0b00000000000000000000000000000010
-func toBits*(flags: openArray[VkExternalSemaphoreFeatureFlagBits]): VkExternalSemaphoreFeatureFlags =
+proc `==`*(a, b: VkExternalSemaphoreHandleTypeFlags): bool =
+  cint(a) == cint(b)
+
+type VkExternalSemaphoreFeatureFlagBits* {.size: sizeof(cint).} = enum
+  VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0b00000000000000000000000000000001
+  VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0b00000000000000000000000000000010
+
+func toBits*(
+    flags: openArray[VkExternalSemaphoreFeatureFlagBits]
+): VkExternalSemaphoreFeatureFlags =
   for flag in flags:
     result = VkExternalSemaphoreFeatureFlags(uint(result) or uint(flag))
-func toEnums*(number: VkExternalSemaphoreFeatureFlags): seq[VkExternalSemaphoreFeatureFlagBits] =
+func toEnums*(
+    number: VkExternalSemaphoreFeatureFlags
+): seq[VkExternalSemaphoreFeatureFlagBits] =
   for value in VkExternalSemaphoreFeatureFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkExternalSemaphoreFeatureFlags): bool = cint(a) == cint(b)
-type
-  VkSemaphoreImportFlagBits* {.size: sizeof(cint).} = enum
-    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0b00000000000000000000000000000001
+proc `==`*(a, b: VkExternalSemaphoreFeatureFlags): bool =
+  cint(a) == cint(b)
+
+type VkSemaphoreImportFlagBits* {.size: sizeof(cint).} = enum
+  VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0b00000000000000000000000000000001
+
 func toBits*(flags: openArray[VkSemaphoreImportFlagBits]): VkSemaphoreImportFlags =
   for flag in flags:
     result = VkSemaphoreImportFlags(uint(result) or uint(flag))
@@ -3083,38 +3876,54 @@
   for value in VkSemaphoreImportFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkSemaphoreImportFlags): bool = cint(a) == cint(b)
-type
-  VkExternalFenceHandleTypeFlagBits* {.size: sizeof(cint).} = enum
-    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0b00000000000000000000000000000001
-    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0b00000000000000000000000000000010
-    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0b00000000000000000000000000000100
-    VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0b00000000000000000000000000001000
-    VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV = 0b00000000000000000000000000010000
-    VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV = 0b00000000000000000000000000100000
-func toBits*(flags: openArray[VkExternalFenceHandleTypeFlagBits]): VkExternalFenceHandleTypeFlags =
+proc `==`*(a, b: VkSemaphoreImportFlags): bool =
+  cint(a) == cint(b)
+
+type VkExternalFenceHandleTypeFlagBits* {.size: sizeof(cint).} = enum
+  VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0b00000000000000000000000000000001
+  VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0b00000000000000000000000000000010
+  VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT =
+    0b00000000000000000000000000000100
+  VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0b00000000000000000000000000001000
+  VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV = 0b00000000000000000000000000010000
+  VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV =
+    0b00000000000000000000000000100000
+
+func toBits*(
+    flags: openArray[VkExternalFenceHandleTypeFlagBits]
+): VkExternalFenceHandleTypeFlags =
   for flag in flags:
     result = VkExternalFenceHandleTypeFlags(uint(result) or uint(flag))
-func toEnums*(number: VkExternalFenceHandleTypeFlags): seq[VkExternalFenceHandleTypeFlagBits] =
+func toEnums*(
+    number: VkExternalFenceHandleTypeFlags
+): seq[VkExternalFenceHandleTypeFlagBits] =
   for value in VkExternalFenceHandleTypeFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkExternalFenceHandleTypeFlags): bool = cint(a) == cint(b)
-type
-  VkExternalFenceFeatureFlagBits* {.size: sizeof(cint).} = enum
-    VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0b00000000000000000000000000000001
-    VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0b00000000000000000000000000000010
-func toBits*(flags: openArray[VkExternalFenceFeatureFlagBits]): VkExternalFenceFeatureFlags =
+proc `==`*(a, b: VkExternalFenceHandleTypeFlags): bool =
+  cint(a) == cint(b)
+
+type VkExternalFenceFeatureFlagBits* {.size: sizeof(cint).} = enum
+  VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0b00000000000000000000000000000001
+  VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0b00000000000000000000000000000010
+
+func toBits*(
+    flags: openArray[VkExternalFenceFeatureFlagBits]
+): VkExternalFenceFeatureFlags =
   for flag in flags:
     result = VkExternalFenceFeatureFlags(uint(result) or uint(flag))
-func toEnums*(number: VkExternalFenceFeatureFlags): seq[VkExternalFenceFeatureFlagBits] =
+func toEnums*(
+    number: VkExternalFenceFeatureFlags
+): seq[VkExternalFenceFeatureFlagBits] =
   for value in VkExternalFenceFeatureFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkExternalFenceFeatureFlags): bool = cint(a) == cint(b)
-type
-  VkFenceImportFlagBits* {.size: sizeof(cint).} = enum
-    VK_FENCE_IMPORT_TEMPORARY_BIT = 0b00000000000000000000000000000001
+proc `==`*(a, b: VkExternalFenceFeatureFlags): bool =
+  cint(a) == cint(b)
+
+type VkFenceImportFlagBits* {.size: sizeof(cint).} = enum
+  VK_FENCE_IMPORT_TEMPORARY_BIT = 0b00000000000000000000000000000001
+
 func toBits*(flags: openArray[VkFenceImportFlagBits]): VkFenceImportFlags =
   for flag in flags:
     result = VkFenceImportFlags(uint(result) or uint(flag))
@@ -3122,10 +3931,12 @@
   for value in VkFenceImportFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkFenceImportFlags): bool = cint(a) == cint(b)
-type
-  VkSurfaceCounterFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 0b00000000000000000000000000000001
+proc `==`*(a, b: VkFenceImportFlags): bool =
+  cint(a) == cint(b)
+
+type VkSurfaceCounterFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 0b00000000000000000000000000000001
+
 func toBits*(flags: openArray[VkSurfaceCounterFlagBitsEXT]): VkSurfaceCounterFlagsEXT =
   for flag in flags:
     result = VkSurfaceCounterFlagsEXT(uint(result) or uint(flag))
@@ -3133,21 +3944,27 @@
   for value in VkSurfaceCounterFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkSurfaceCounterFlagsEXT): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkSurfaceCounterFlagsEXT): bool =
+  cint(a) == cint(b)
+
 type
   VkDisplayPowerStateEXT* {.size: sizeof(cint).} = enum
     VK_DISPLAY_POWER_STATE_OFF_EXT = 0
     VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1
     VK_DISPLAY_POWER_STATE_ON_EXT = 2
+
   VkDeviceEventTypeEXT* {.size: sizeof(cint).} = enum
     VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0
+
   VkDisplayEventTypeEXT* {.size: sizeof(cint).} = enum
     VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0
+
   VkPeerMemoryFeatureFlagBits* {.size: sizeof(cint).} = enum
     VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0b00000000000000000000000000000001
     VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0b00000000000000000000000000000010
     VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0b00000000000000000000000000000100
     VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0b00000000000000000000000000001000
+
 func toBits*(flags: openArray[VkPeerMemoryFeatureFlagBits]): VkPeerMemoryFeatureFlags =
   for flag in flags:
     result = VkPeerMemoryFeatureFlags(uint(result) or uint(flag))
@@ -3155,12 +3972,15 @@
   for value in VkPeerMemoryFeatureFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkPeerMemoryFeatureFlags): bool = cint(a) == cint(b)
-type
-  VkMemoryAllocateFlagBits* {.size: sizeof(cint).} = enum
-    VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0b00000000000000000000000000000001
-    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0b00000000000000000000000000000010
-    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0b00000000000000000000000000000100
+proc `==`*(a, b: VkPeerMemoryFeatureFlags): bool =
+  cint(a) == cint(b)
+
+type VkMemoryAllocateFlagBits* {.size: sizeof(cint).} = enum
+  VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0b00000000000000000000000000000001
+  VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0b00000000000000000000000000000010
+  VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT =
+    0b00000000000000000000000000000100
+
 func toBits*(flags: openArray[VkMemoryAllocateFlagBits]): VkMemoryAllocateFlags =
   for flag in flags:
     result = VkMemoryAllocateFlags(uint(result) or uint(flag))
@@ -3168,36 +3988,51 @@
   for value in VkMemoryAllocateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkMemoryAllocateFlags): bool = cint(a) == cint(b)
-type
-  VkDeviceGroupPresentModeFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0b00000000000000000000000000000001
-    VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0b00000000000000000000000000000010
-    VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0b00000000000000000000000000000100
-    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0b00000000000000000000000000001000
-func toBits*(flags: openArray[VkDeviceGroupPresentModeFlagBitsKHR]): VkDeviceGroupPresentModeFlagsKHR =
+proc `==`*(a, b: VkMemoryAllocateFlags): bool =
+  cint(a) == cint(b)
+
+type VkDeviceGroupPresentModeFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0b00000000000000000000000000000001
+  VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0b00000000000000000000000000000010
+  VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0b00000000000000000000000000000100
+  VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR =
+    0b00000000000000000000000000001000
+
+func toBits*(
+    flags: openArray[VkDeviceGroupPresentModeFlagBitsKHR]
+): VkDeviceGroupPresentModeFlagsKHR =
   for flag in flags:
     result = VkDeviceGroupPresentModeFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkDeviceGroupPresentModeFlagsKHR): seq[VkDeviceGroupPresentModeFlagBitsKHR] =
+func toEnums*(
+    number: VkDeviceGroupPresentModeFlagsKHR
+): seq[VkDeviceGroupPresentModeFlagBitsKHR] =
   for value in VkDeviceGroupPresentModeFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkDeviceGroupPresentModeFlagsKHR): bool = cint(a) == cint(b)
-type
-  VkSwapchainCreateFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0b00000000000000000000000000000001
-    VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0b00000000000000000000000000000010
-    VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0b00000000000000000000000000000100
-    VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 0b00000000000000000000000000001000
-    VK_SWAPCHAIN_CREATE_RESERVED_4_BIT_EXT = 0b00000000000000000000000000010000
-func toBits*(flags: openArray[VkSwapchainCreateFlagBitsKHR]): VkSwapchainCreateFlagsKHR =
+proc `==`*(a, b: VkDeviceGroupPresentModeFlagsKHR): bool =
+  cint(a) == cint(b)
+
+type VkSwapchainCreateFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR =
+    0b00000000000000000000000000000001
+  VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0b00000000000000000000000000000010
+  VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0b00000000000000000000000000000100
+  VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT =
+    0b00000000000000000000000000001000
+  VK_SWAPCHAIN_CREATE_RESERVED_4_BIT_EXT = 0b00000000000000000000000000010000
+
+func toBits*(
+    flags: openArray[VkSwapchainCreateFlagBitsKHR]
+): VkSwapchainCreateFlagsKHR =
   for flag in flags:
     result = VkSwapchainCreateFlagsKHR(uint(result) or uint(flag))
 func toEnums*(number: VkSwapchainCreateFlagsKHR): seq[VkSwapchainCreateFlagBitsKHR] =
   for value in VkSwapchainCreateFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkSwapchainCreateFlagsKHR): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkSwapchainCreateFlagsKHR): bool =
+  cint(a) == cint(b)
+
 type
   VkViewportCoordinateSwizzleNV* {.size: sizeof(cint).} = enum
     VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0
@@ -3208,110 +4043,153 @@
     VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5
     VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6
     VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7
+
   VkDiscardRectangleModeEXT* {.size: sizeof(cint).} = enum
     VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0
     VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1
+
   VkSubpassDescriptionFlagBits* {.size: sizeof(cint).} = enum
-    VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0b00000000000000000000000000000001
-    VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0b00000000000000000000000000000010
+    VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX =
+      0b00000000000000000000000000000001
+    VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX =
+      0b00000000000000000000000000000010
     VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 0b00000000000000000000000000000100
     VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 0b00000000000000000000000000001000
-    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 0b00000000000000000000000000010000
-    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 0b00000000000000000000000000100000
-    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 0b00000000000000000000000001000000
-    VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT = 0b00000000000000000000000010000000
-func toBits*(flags: openArray[VkSubpassDescriptionFlagBits]): VkSubpassDescriptionFlags =
+    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT =
+      0b00000000000000000000000000010000
+    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT =
+      0b00000000000000000000000000100000
+    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT =
+      0b00000000000000000000000001000000
+    VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT =
+      0b00000000000000000000000010000000
+
+func toBits*(
+    flags: openArray[VkSubpassDescriptionFlagBits]
+): VkSubpassDescriptionFlags =
   for flag in flags:
     result = VkSubpassDescriptionFlags(uint(result) or uint(flag))
 func toEnums*(number: VkSubpassDescriptionFlags): seq[VkSubpassDescriptionFlagBits] =
   for value in VkSubpassDescriptionFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkSubpassDescriptionFlags): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkSubpassDescriptionFlags): bool =
+  cint(a) == cint(b)
+
 type
   VkPointClippingBehavior* {.size: sizeof(cint).} = enum
     VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0
     VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1
+
   VkSamplerReductionMode* {.size: sizeof(cint).} = enum
     VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0
     VK_SAMPLER_REDUCTION_MODE_MIN = 1
     VK_SAMPLER_REDUCTION_MODE_MAX = 2
+
   VkTessellationDomainOrigin* {.size: sizeof(cint).} = enum
     VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0
     VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1
+
   VkSamplerYcbcrModelConversion* {.size: sizeof(cint).} = enum
     VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0
     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1
     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2
     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3
     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4
+
   VkSamplerYcbcrRange* {.size: sizeof(cint).} = enum
     VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0
     VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1
+
   VkChromaLocation* {.size: sizeof(cint).} = enum
     VK_CHROMA_LOCATION_COSITED_EVEN = 0
     VK_CHROMA_LOCATION_MIDPOINT = 1
+
   VkBlendOverlapEXT* {.size: sizeof(cint).} = enum
     VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0
     VK_BLEND_OVERLAP_DISJOINT_EXT = 1
     VK_BLEND_OVERLAP_CONJOINT_EXT = 2
+
   VkCoverageModulationModeNV* {.size: sizeof(cint).} = enum
     VK_COVERAGE_MODULATION_MODE_NONE_NV = 0
     VK_COVERAGE_MODULATION_MODE_RGB_NV = 1
     VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2
     VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3
+
   VkCoverageReductionModeNV* {.size: sizeof(cint).} = enum
     VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0
     VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1
+
   VkValidationCacheHeaderVersionEXT* {.size: sizeof(cint).} = enum
     VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1
+
   VkShaderInfoTypeAMD* {.size: sizeof(cint).} = enum
     VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0
     VK_SHADER_INFO_TYPE_BINARY_AMD = 1
     VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2
+
   VkQueueGlobalPriorityKHR* {.size: sizeof(cint).} = enum
     VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128
     VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256
     VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512
     VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024
+
   VkDebugUtilsMessageSeverityFlagBitsEXT* {.size: sizeof(cint).} = enum
     VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0b00000000000000000000000000000001
     VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0b00000000000000000000000000010000
     VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0b00000000000000000000000100000000
     VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0b00000000000000000001000000000000
-func toBits*(flags: openArray[VkDebugUtilsMessageSeverityFlagBitsEXT]): VkDebugUtilsMessageSeverityFlagsEXT =
+
+func toBits*(
+    flags: openArray[VkDebugUtilsMessageSeverityFlagBitsEXT]
+): VkDebugUtilsMessageSeverityFlagsEXT =
   for flag in flags:
     result = VkDebugUtilsMessageSeverityFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkDebugUtilsMessageSeverityFlagsEXT): seq[VkDebugUtilsMessageSeverityFlagBitsEXT] =
+func toEnums*(
+    number: VkDebugUtilsMessageSeverityFlagsEXT
+): seq[VkDebugUtilsMessageSeverityFlagBitsEXT] =
   for value in VkDebugUtilsMessageSeverityFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkDebugUtilsMessageSeverityFlagsEXT): bool = cint(a) == cint(b)
-type
-  VkDebugUtilsMessageTypeFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0b00000000000000000000000000000001
-    VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0b00000000000000000000000000000010
-    VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0b00000000000000000000000000000100
-    VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT = 0b00000000000000000000000000001000
-func toBits*(flags: openArray[VkDebugUtilsMessageTypeFlagBitsEXT]): VkDebugUtilsMessageTypeFlagsEXT =
+proc `==`*(a, b: VkDebugUtilsMessageSeverityFlagsEXT): bool =
+  cint(a) == cint(b)
+
+type VkDebugUtilsMessageTypeFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0b00000000000000000000000000000001
+  VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0b00000000000000000000000000000010
+  VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0b00000000000000000000000000000100
+  VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT =
+    0b00000000000000000000000000001000
+
+func toBits*(
+    flags: openArray[VkDebugUtilsMessageTypeFlagBitsEXT]
+): VkDebugUtilsMessageTypeFlagsEXT =
   for flag in flags:
     result = VkDebugUtilsMessageTypeFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkDebugUtilsMessageTypeFlagsEXT): seq[VkDebugUtilsMessageTypeFlagBitsEXT] =
+func toEnums*(
+    number: VkDebugUtilsMessageTypeFlagsEXT
+): seq[VkDebugUtilsMessageTypeFlagBitsEXT] =
   for value in VkDebugUtilsMessageTypeFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkDebugUtilsMessageTypeFlagsEXT): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkDebugUtilsMessageTypeFlagsEXT): bool =
+  cint(a) == cint(b)
+
 type
   VkConservativeRasterizationModeEXT* {.size: sizeof(cint).} = enum
     VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0
     VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1
     VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2
+
   VkDescriptorBindingFlagBits* {.size: sizeof(cint).} = enum
     VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0b00000000000000000000000000000001
-    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0b00000000000000000000000000000010
+    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT =
+      0b00000000000000000000000000000010
     VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0b00000000000000000000000000000100
-    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0b00000000000000000000000000001000
+    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT =
+      0b00000000000000000000000000001000
     VK_DESCRIPTOR_BINDING_RESERVED_4_BIT_QCOM = 0b00000000000000000000000000010000
+
 func toBits*(flags: openArray[VkDescriptorBindingFlagBits]): VkDescriptorBindingFlags =
   for flag in flags:
     result = VkDescriptorBindingFlags(uint(result) or uint(flag))
@@ -3319,7 +4197,9 @@
   for value in VkDescriptorBindingFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkDescriptorBindingFlags): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkDescriptorBindingFlags): bool =
+  cint(a) == cint(b)
+
 type
   VkVendorId* {.size: sizeof(cint).} = enum
     VK_VENDOR_ID_VIV = 65537
@@ -3328,6 +4208,7 @@
     VK_VENDOR_ID_CODEPLAY = 65540
     VK_VENDOR_ID_MESA = 65541
     VK_VENDOR_ID_POCL = 65542
+
   VkDriverId* {.size: sizeof(cint).} = enum
     VK_DRIVER_ID_AMD_PROPRIETARY = 1
     VK_DRIVER_ID_AMD_OPEN_SOURCE = 2
@@ -3354,22 +4235,30 @@
     VK_DRIVER_ID_MESA_DOZEN = 23
     VK_DRIVER_ID_MESA_NVK = 24
     VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25
+
   VkConditionalRenderingFlagBitsEXT* {.size: sizeof(cint).} = enum
     VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0b00000000000000000000000000000001
-func toBits*(flags: openArray[VkConditionalRenderingFlagBitsEXT]): VkConditionalRenderingFlagsEXT =
+
+func toBits*(
+    flags: openArray[VkConditionalRenderingFlagBitsEXT]
+): VkConditionalRenderingFlagsEXT =
   for flag in flags:
     result = VkConditionalRenderingFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkConditionalRenderingFlagsEXT): seq[VkConditionalRenderingFlagBitsEXT] =
+func toEnums*(
+    number: VkConditionalRenderingFlagsEXT
+): seq[VkConditionalRenderingFlagBitsEXT] =
   for value in VkConditionalRenderingFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkConditionalRenderingFlagsEXT): bool = cint(a) == cint(b)
-type
-  VkResolveModeFlagBits* {.size: sizeof(cint).} = enum
-    VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0b00000000000000000000000000000001
-    VK_RESOLVE_MODE_AVERAGE_BIT = 0b00000000000000000000000000000010
-    VK_RESOLVE_MODE_MIN_BIT = 0b00000000000000000000000000000100
-    VK_RESOLVE_MODE_MAX_BIT = 0b00000000000000000000000000001000
+proc `==`*(a, b: VkConditionalRenderingFlagsEXT): bool =
+  cint(a) == cint(b)
+
+type VkResolveModeFlagBits* {.size: sizeof(cint).} = enum
+  VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0b00000000000000000000000000000001
+  VK_RESOLVE_MODE_AVERAGE_BIT = 0b00000000000000000000000000000010
+  VK_RESOLVE_MODE_MIN_BIT = 0b00000000000000000000000000000100
+  VK_RESOLVE_MODE_MAX_BIT = 0b00000000000000000000000000001000
+
 func toBits*(flags: openArray[VkResolveModeFlagBits]): VkResolveModeFlags =
   for flag in flags:
     result = VkResolveModeFlags(uint(result) or uint(flag))
@@ -3377,9 +4266,10 @@
   for value in VkResolveModeFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkResolveModeFlags): bool = cint(a) == cint(b)
-const
-  VK_RESOLVE_MODE_NONE* = 0
+proc `==`*(a, b: VkResolveModeFlags): bool =
+  cint(a) == cint(b)
+
+const VK_RESOLVE_MODE_NONE* = 0
 type
   VkShadingRatePaletteEntryNV* {.size: sizeof(cint).} = enum
     VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0
@@ -3394,30 +4284,42 @@
     VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9
     VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10
     VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11
+
   VkCoarseSampleOrderTypeNV* {.size: sizeof(cint).} = enum
     VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0
     VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1
     VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2
     VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3
+
   VkGeometryInstanceFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 0b00000000000000000000000000000001
-    VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 0b00000000000000000000000000000010
+    VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR =
+      0b00000000000000000000000000000001
+    VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR =
+      0b00000000000000000000000000000010
     VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 0b00000000000000000000000000000100
     VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 0b00000000000000000000000000001000
-    VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 0b00000000000000000000000000010000
-    VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 0b00000000000000000000000000100000
-func toBits*(flags: openArray[VkGeometryInstanceFlagBitsKHR]): VkGeometryInstanceFlagsKHR =
+    VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT =
+      0b00000000000000000000000000010000
+    VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT =
+      0b00000000000000000000000000100000
+
+func toBits*(
+    flags: openArray[VkGeometryInstanceFlagBitsKHR]
+): VkGeometryInstanceFlagsKHR =
   for flag in flags:
     result = VkGeometryInstanceFlagsKHR(uint(result) or uint(flag))
 func toEnums*(number: VkGeometryInstanceFlagsKHR): seq[VkGeometryInstanceFlagBitsKHR] =
   for value in VkGeometryInstanceFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkGeometryInstanceFlagsKHR): bool = cint(a) == cint(b)
-type
-  VkGeometryFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_GEOMETRY_OPAQUE_BIT_KHR = 0b00000000000000000000000000000001
-    VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 0b00000000000000000000000000000010
+proc `==`*(a, b: VkGeometryInstanceFlagsKHR): bool =
+  cint(a) == cint(b)
+
+type VkGeometryFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_GEOMETRY_OPAQUE_BIT_KHR = 0b00000000000000000000000000000001
+  VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR =
+    0b00000000000000000000000000000010
+
 func toBits*(flags: openArray[VkGeometryFlagBitsKHR]): VkGeometryFlagsKHR =
   for flag in flags:
     result = VkGeometryFlagsKHR(uint(result) or uint(flag))
@@ -3425,84 +4327,120 @@
   for value in VkGeometryFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkGeometryFlagsKHR): bool = cint(a) == cint(b)
-type
-  VkBuildAccelerationStructureFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 0b00000000000000000000000000000001
-    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 0b00000000000000000000000000000010
-    VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 0b00000000000000000000000000000100
-    VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 0b00000000000000000000000000001000
-    VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 0b00000000000000000000000000010000
-    VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV = 0b00000000000000000000000000100000
-    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 0b00000000000000000000000001000000
-    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 0b00000000000000000000000010000000
-    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 0b00000000000000000000000100000000
-    VK_BUILD_ACCELERATION_STRUCTURE_RESERVED_BIT_9_NV = 0b00000000000000000000001000000000
-    VK_BUILD_ACCELERATION_STRUCTURE_RESERVED_BIT_10_NV = 0b00000000000000000000010000000000
-func toBits*(flags: openArray[VkBuildAccelerationStructureFlagBitsKHR]): VkBuildAccelerationStructureFlagsKHR =
+proc `==`*(a, b: VkGeometryFlagsKHR): bool =
+  cint(a) == cint(b)
+
+type VkBuildAccelerationStructureFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR =
+    0b00000000000000000000000000000001
+  VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR =
+    0b00000000000000000000000000000010
+  VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR =
+    0b00000000000000000000000000000100
+  VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR =
+    0b00000000000000000000000000001000
+  VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR =
+    0b00000000000000000000000000010000
+  VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV = 0b00000000000000000000000000100000
+  VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT =
+    0b00000000000000000000000001000000
+  VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT =
+    0b00000000000000000000000010000000
+  VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT =
+    0b00000000000000000000000100000000
+  VK_BUILD_ACCELERATION_STRUCTURE_RESERVED_BIT_9_NV = 0b00000000000000000000001000000000
+  VK_BUILD_ACCELERATION_STRUCTURE_RESERVED_BIT_10_NV =
+    0b00000000000000000000010000000000
+
+func toBits*(
+    flags: openArray[VkBuildAccelerationStructureFlagBitsKHR]
+): VkBuildAccelerationStructureFlagsKHR =
   for flag in flags:
     result = VkBuildAccelerationStructureFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkBuildAccelerationStructureFlagsKHR): seq[VkBuildAccelerationStructureFlagBitsKHR] =
+func toEnums*(
+    number: VkBuildAccelerationStructureFlagsKHR
+): seq[VkBuildAccelerationStructureFlagBitsKHR] =
   for value in VkBuildAccelerationStructureFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkBuildAccelerationStructureFlagsKHR): bool = cint(a) == cint(b)
-type
-  VkAccelerationStructureCreateFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 0b00000000000000000000000000000001
-    VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 0b00000000000000000000000000000100
-    VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0b00000000000000000000000000001000
-func toBits*(flags: openArray[VkAccelerationStructureCreateFlagBitsKHR]): VkAccelerationStructureCreateFlagsKHR =
+proc `==`*(a, b: VkBuildAccelerationStructureFlagsKHR): bool =
+  cint(a) == cint(b)
+
+type VkAccelerationStructureCreateFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR =
+    0b00000000000000000000000000000001
+  VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 0b00000000000000000000000000000100
+  VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT =
+    0b00000000000000000000000000001000
+
+func toBits*(
+    flags: openArray[VkAccelerationStructureCreateFlagBitsKHR]
+): VkAccelerationStructureCreateFlagsKHR =
   for flag in flags:
     result = VkAccelerationStructureCreateFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkAccelerationStructureCreateFlagsKHR): seq[VkAccelerationStructureCreateFlagBitsKHR] =
+func toEnums*(
+    number: VkAccelerationStructureCreateFlagsKHR
+): seq[VkAccelerationStructureCreateFlagBitsKHR] =
   for value in VkAccelerationStructureCreateFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkAccelerationStructureCreateFlagsKHR): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkAccelerationStructureCreateFlagsKHR): bool =
+  cint(a) == cint(b)
+
 type
   VkCopyAccelerationStructureModeKHR* {.size: sizeof(cint).} = enum
     VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0
     VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1
     VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2
     VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3
+
   VkBuildAccelerationStructureModeKHR* {.size: sizeof(cint).} = enum
     VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = 0
     VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = 1
+
   VkAccelerationStructureTypeKHR* {.size: sizeof(cint).} = enum
     VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0
     VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1
     VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = 2
+
   VkGeometryTypeKHR* {.size: sizeof(cint).} = enum
     VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0
     VK_GEOMETRY_TYPE_AABBS_KHR = 1
     VK_GEOMETRY_TYPE_INSTANCES_KHR = 2
+
   VkAccelerationStructureMemoryRequirementsTypeNV* {.size: sizeof(cint).} = enum
     VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0
     VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1
     VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2
+
   VkAccelerationStructureBuildTypeKHR* {.size: sizeof(cint).} = enum
     VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0
     VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1
     VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2
+
   VkRayTracingShaderGroupTypeKHR* {.size: sizeof(cint).} = enum
     VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0
     VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1
     VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2
+
   VkAccelerationStructureCompatibilityKHR* {.size: sizeof(cint).} = enum
     VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0
     VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1
+
   VkShaderGroupShaderKHR* {.size: sizeof(cint).} = enum
     VK_SHADER_GROUP_SHADER_GENERAL_KHR = 0
     VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR = 1
     VK_SHADER_GROUP_SHADER_ANY_HIT_KHR = 2
     VK_SHADER_GROUP_SHADER_INTERSECTION_KHR = 3
+
   VkMemoryOverallocationBehaviorAMD* {.size: sizeof(cint).} = enum
     VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0
     VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1
     VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2
+
   VkFramebufferCreateFlagBits* {.size: sizeof(cint).} = enum
     VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0b00000000000000000000000000000001
+
 func toBits*(flags: openArray[VkFramebufferCreateFlagBits]): VkFramebufferCreateFlags =
   for flag in flags:
     result = VkFramebufferCreateFlags(uint(result) or uint(flag))
@@ -3510,13 +4448,16 @@
   for value in VkFramebufferCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkFramebufferCreateFlags): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkFramebufferCreateFlags): bool =
+  cint(a) == cint(b)
+
 type
   VkScopeNV* {.size: sizeof(cint).} = enum
     VK_SCOPE_DEVICE_NV = 1
     VK_SCOPE_WORKGROUP_NV = 2
     VK_SCOPE_SUBGROUP_NV = 3
     VK_SCOPE_QUEUE_FAMILY_NV = 5
+
   VkComponentTypeNV* {.size: sizeof(cint).} = enum
     VK_COMPONENT_TYPE_FLOAT16_NV = 0
     VK_COMPONENT_TYPE_FLOAT32_NV = 1
@@ -3529,52 +4470,82 @@
     VK_COMPONENT_TYPE_UINT16_NV = 8
     VK_COMPONENT_TYPE_UINT32_NV = 9
     VK_COMPONENT_TYPE_UINT64_NV = 10
+
   VkDeviceDiagnosticsConfigFlagBitsNV* {.size: sizeof(cint).} = enum
-    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 0b00000000000000000000000000000001
-    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 0b00000000000000000000000000000010
-    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 0b00000000000000000000000000000100
-    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 0b00000000000000000000000000001000
-func toBits*(flags: openArray[VkDeviceDiagnosticsConfigFlagBitsNV]): VkDeviceDiagnosticsConfigFlagsNV =
+    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV =
+      0b00000000000000000000000000000001
+    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV =
+      0b00000000000000000000000000000010
+    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV =
+      0b00000000000000000000000000000100
+    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV =
+      0b00000000000000000000000000001000
+
+func toBits*(
+    flags: openArray[VkDeviceDiagnosticsConfigFlagBitsNV]
+): VkDeviceDiagnosticsConfigFlagsNV =
   for flag in flags:
     result = VkDeviceDiagnosticsConfigFlagsNV(uint(result) or uint(flag))
-func toEnums*(number: VkDeviceDiagnosticsConfigFlagsNV): seq[VkDeviceDiagnosticsConfigFlagBitsNV] =
+func toEnums*(
+    number: VkDeviceDiagnosticsConfigFlagsNV
+): seq[VkDeviceDiagnosticsConfigFlagBitsNV] =
   for value in VkDeviceDiagnosticsConfigFlagBitsNV.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkDeviceDiagnosticsConfigFlagsNV): bool = cint(a) == cint(b)
-type
-  VkPipelineCreationFeedbackFlagBits* {.size: sizeof(cint).} = enum
-    VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT = 0b00000000000000000000000000000001
-    VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT = 0b00000000000000000000000000000010
-    VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkPipelineCreationFeedbackFlagBits]): VkPipelineCreationFeedbackFlags =
+proc `==`*(a, b: VkDeviceDiagnosticsConfigFlagsNV): bool =
+  cint(a) == cint(b)
+
+type VkPipelineCreationFeedbackFlagBits* {.size: sizeof(cint).} = enum
+  VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT = 0b00000000000000000000000000000001
+  VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT =
+    0b00000000000000000000000000000010
+  VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT =
+    0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkPipelineCreationFeedbackFlagBits]
+): VkPipelineCreationFeedbackFlags =
   for flag in flags:
     result = VkPipelineCreationFeedbackFlags(uint(result) or uint(flag))
-func toEnums*(number: VkPipelineCreationFeedbackFlags): seq[VkPipelineCreationFeedbackFlagBits] =
+func toEnums*(
+    number: VkPipelineCreationFeedbackFlags
+): seq[VkPipelineCreationFeedbackFlagBits] =
   for value in VkPipelineCreationFeedbackFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkPipelineCreationFeedbackFlags): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkPipelineCreationFeedbackFlags): bool =
+  cint(a) == cint(b)
+
 type
   VkFullScreenExclusiveEXT* {.size: sizeof(cint).} = enum
     VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0
     VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1
     VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2
     VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3
+
   VkPerformanceCounterScopeKHR* {.size: sizeof(cint).} = enum
     VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0
     VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1
     VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2
+
   VkMemoryDecompressionMethodFlagBitsNV* {.size: 8.} = enum
-    VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV = 0b0000000000000000000000000000000000000000000000000000000000000001
-func toBits*(flags: openArray[VkMemoryDecompressionMethodFlagBitsNV]): VkMemoryDecompressionMethodFlagsNV =
+    VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV =
+      0b0000000000000000000000000000000000000000000000000000000000000001
+
+func toBits*(
+    flags: openArray[VkMemoryDecompressionMethodFlagBitsNV]
+): VkMemoryDecompressionMethodFlagsNV =
   for flag in flags:
     result = VkMemoryDecompressionMethodFlagsNV(uint64(result) or uint64(flag))
-func toEnums*(number: VkMemoryDecompressionMethodFlagsNV): seq[VkMemoryDecompressionMethodFlagBitsNV] =
+func toEnums*(
+    number: VkMemoryDecompressionMethodFlagsNV
+): seq[VkMemoryDecompressionMethodFlagBitsNV] =
   for value in VkMemoryDecompressionMethodFlagBitsNV.items:
     if (cast[uint64](value) and uint64(number)) > 0:
       result.add value
-proc `==`*(a, b: VkMemoryDecompressionMethodFlagsNV): bool = uint64(a) == uint64(b)
+proc `==`*(a, b: VkMemoryDecompressionMethodFlagsNV): bool =
+  uint64(a) == uint64(b)
+
 type
   VkPerformanceCounterUnitKHR* {.size: sizeof(cint).} = enum
     VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0
@@ -3588,6 +4559,7 @@
     VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8
     VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9
     VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10
+
   VkPerformanceCounterStorageKHR* {.size: sizeof(cint).} = enum
     VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0
     VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1
@@ -3595,53 +4567,73 @@
     VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3
     VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4
     VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5
+
   VkPerformanceCounterDescriptionFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 0b00000000000000000000000000000001
-    VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 0b00000000000000000000000000000010
-func toBits*(flags: openArray[VkPerformanceCounterDescriptionFlagBitsKHR]): VkPerformanceCounterDescriptionFlagsKHR =
+    VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR =
+      0b00000000000000000000000000000001
+    VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR =
+      0b00000000000000000000000000000010
+
+func toBits*(
+    flags: openArray[VkPerformanceCounterDescriptionFlagBitsKHR]
+): VkPerformanceCounterDescriptionFlagsKHR =
   for flag in flags:
     result = VkPerformanceCounterDescriptionFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkPerformanceCounterDescriptionFlagsKHR): seq[VkPerformanceCounterDescriptionFlagBitsKHR] =
+func toEnums*(
+    number: VkPerformanceCounterDescriptionFlagsKHR
+): seq[VkPerformanceCounterDescriptionFlagBitsKHR] =
   for value in VkPerformanceCounterDescriptionFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkPerformanceCounterDescriptionFlagsKHR): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkPerformanceCounterDescriptionFlagsKHR): bool =
+  cint(a) == cint(b)
+
 type
   VkPerformanceConfigurationTypeINTEL* {.size: sizeof(cint).} = enum
-    VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0
+    VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL =
+      0
+
   VkQueryPoolSamplingModeINTEL* {.size: sizeof(cint).} = enum
     VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0
+
   VkPerformanceOverrideTypeINTEL* {.size: sizeof(cint).} = enum
     VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0
     VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1
+
   VkPerformanceParameterTypeINTEL* {.size: sizeof(cint).} = enum
     VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0
     VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1
+
   VkPerformanceValueTypeINTEL* {.size: sizeof(cint).} = enum
     VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0
     VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1
     VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2
     VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3
     VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4
+
   VkShaderFloatControlsIndependence* {.size: sizeof(cint).} = enum
     VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0
     VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1
     VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2
+
   VkPipelineExecutableStatisticFormatKHR* {.size: sizeof(cint).} = enum
     VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0
     VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1
     VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2
     VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3
+
   VkLineRasterizationModeEXT* {.size: sizeof(cint).} = enum
     VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0
     VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1
     VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2
     VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3
+
   VkFaultLevel* {.size: sizeof(cint).} = enum
     VK_FAULT_LEVEL_UNASSIGNED = 0
     VK_FAULT_LEVEL_CRITICAL = 1
     VK_FAULT_LEVEL_RECOVERABLE = 2
     VK_FAULT_LEVEL_WARNING = 3
+
   VkFaultType* {.size: sizeof(cint).} = enum
     VK_FAULT_TYPE_INVALID = 0
     VK_FAULT_TYPE_UNASSIGNED = 1
@@ -3650,8 +4642,10 @@
     VK_FAULT_TYPE_PHYSICAL_DEVICE = 4
     VK_FAULT_TYPE_COMMAND_BUFFER_FULL = 5
     VK_FAULT_TYPE_INVALID_API_USAGE = 6
+
   VkFaultQueryBehavior* {.size: sizeof(cint).} = enum
     VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS = 0
+
   VkToolPurposeFlagBits* {.size: sizeof(cint).} = enum
     VK_TOOL_PURPOSE_VALIDATION_BIT = 0b00000000000000000000000000000001
     VK_TOOL_PURPOSE_PROFILING_BIT = 0b00000000000000000000000000000010
@@ -3660,6 +4654,7 @@
     VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT = 0b00000000000000000000000000010000
     VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 0b00000000000000000000000000100000
     VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 0b00000000000000000000000001000000
+
 func toBits*(flags: openArray[VkToolPurposeFlagBits]): VkToolPurposeFlags =
   for flag in flags:
     result = VkToolPurposeFlags(uint(result) or uint(flag))
@@ -3667,16 +4662,20 @@
   for value in VkToolPurposeFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkToolPurposeFlags): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkToolPurposeFlags): bool =
+  cint(a) == cint(b)
+
 type
   VkPipelineMatchControl* {.size: sizeof(cint).} = enum
     VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH = 0
+
   VkFragmentShadingRateCombinerOpKHR* {.size: sizeof(cint).} = enum
     VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = 0
     VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = 1
     VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = 2
     VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = 3
     VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = 4
+
   VkFragmentShadingRateNV* {.size: sizeof(cint).} = enum
     VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = 0
     VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = 1
@@ -3690,9 +4689,11 @@
     VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = 13
     VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = 14
     VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV = 15
+
   VkFragmentShadingRateTypeNV* {.size: sizeof(cint).} = enum
     VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV = 0
     VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV = 1
+
   VkSubpassMergeStatusEXT* {.size: sizeof(cint).} = enum
     VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0
     VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1
@@ -3708,50 +4709,95 @@
     VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11
     VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12
     VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13
+
   VkAccessFlagBits2* {.size: 8.} = enum
-    VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT = 0b0000000000000000000000000000000000000000000000000000000000000001
-    VK_ACCESS_2_INDEX_READ_BIT = 0b0000000000000000000000000000000000000000000000000000000000000010
-    VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT = 0b0000000000000000000000000000000000000000000000000000000000000100
-    VK_ACCESS_2_UNIFORM_READ_BIT = 0b0000000000000000000000000000000000000000000000000000000000001000
-    VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT = 0b0000000000000000000000000000000000000000000000000000000000010000
-    VK_ACCESS_2_SHADER_READ_BIT = 0b0000000000000000000000000000000000000000000000000000000000100000
-    VK_ACCESS_2_SHADER_WRITE_BIT = 0b0000000000000000000000000000000000000000000000000000000001000000
-    VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT = 0b0000000000000000000000000000000000000000000000000000000010000000
-    VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT = 0b0000000000000000000000000000000000000000000000000000000100000000
-    VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0b0000000000000000000000000000000000000000000000000000001000000000
-    VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0b0000000000000000000000000000000000000000000000000000010000000000
-    VK_ACCESS_2_TRANSFER_READ_BIT = 0b0000000000000000000000000000000000000000000000000000100000000000
-    VK_ACCESS_2_TRANSFER_WRITE_BIT = 0b0000000000000000000000000000000000000000000000000001000000000000
-    VK_ACCESS_2_HOST_READ_BIT = 0b0000000000000000000000000000000000000000000000000010000000000000
-    VK_ACCESS_2_HOST_WRITE_BIT = 0b0000000000000000000000000000000000000000000000000100000000000000
-    VK_ACCESS_2_MEMORY_READ_BIT = 0b0000000000000000000000000000000000000000000000001000000000000000
-    VK_ACCESS_2_MEMORY_WRITE_BIT = 0b0000000000000000000000000000000000000000000000010000000000000000
-    VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = 0b0000000000000000000000000000000000000000000000100000000000000000
-    VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = 0b0000000000000000000000000000000000000000000001000000000000000000
-    VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0b0000000000000000000000000000000000000000000010000000000000000000
-    VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = 0b0000000000000000000000000000000000000000000100000000000000000000
-    VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0b0000000000000000000000000000000000000000001000000000000000000000
-    VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0b0000000000000000000000000000000000000000010000000000000000000000
-    VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0b0000000000000000000000000000000000000000100000000000000000000000
-    VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0b0000000000000000000000000000000000000001000000000000000000000000
-    VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0b0000000000000000000000000000000000000010000000000000000000000000
-    VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0b0000000000000000000000000000000000000100000000000000000000000000
-    VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0b0000000000000000000000000000000000001000000000000000000000000000
-    VK_ACCESS_2_SHADER_SAMPLED_READ_BIT = 0b0000000000000000000000000000000100000000000000000000000000000000
-    VK_ACCESS_2_SHADER_STORAGE_READ_BIT = 0b0000000000000000000000000000001000000000000000000000000000000000
-    VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT = 0b0000000000000000000000000000010000000000000000000000000000000000
-    VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR = 0b0000000000000000000000000000100000000000000000000000000000000000
-    VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR = 0b0000000000000000000000000001000000000000000000000000000000000000
-    VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR = 0b0000000000000000000000000010000000000000000000000000000000000000
-    VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR = 0b0000000000000000000000000100000000000000000000000000000000000000
-    VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = 0b0000000000000000000000001000000000000000000000000000000000000000
-    VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR = 0b0000000000000000000000010000000000000000000000000000000000000000
-    VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT = 0b0000000000000000000000100000000000000000000000000000000000000000
-    VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV = 0b0000000000000000000001000000000000000000000000000000000000000000
-    VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV = 0b0000000000000000000010000000000000000000000000000000000000000000
-    VK_ACCESS_2_MICROMAP_READ_BIT_EXT = 0b0000000000000000000100000000000000000000000000000000000000000000
-    VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT = 0b0000000000000000001000000000000000000000000000000000000000000000
-    VK_ACCESS_2_RESERVED_46_BIT_EXT = 0b0000000000000000010000000000000000000000000000000000000000000000
+    VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT =
+      0b0000000000000000000000000000000000000000000000000000000000000001
+    VK_ACCESS_2_INDEX_READ_BIT =
+      0b0000000000000000000000000000000000000000000000000000000000000010
+    VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT =
+      0b0000000000000000000000000000000000000000000000000000000000000100
+    VK_ACCESS_2_UNIFORM_READ_BIT =
+      0b0000000000000000000000000000000000000000000000000000000000001000
+    VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT =
+      0b0000000000000000000000000000000000000000000000000000000000010000
+    VK_ACCESS_2_SHADER_READ_BIT =
+      0b0000000000000000000000000000000000000000000000000000000000100000
+    VK_ACCESS_2_SHADER_WRITE_BIT =
+      0b0000000000000000000000000000000000000000000000000000000001000000
+    VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT =
+      0b0000000000000000000000000000000000000000000000000000000010000000
+    VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT =
+      0b0000000000000000000000000000000000000000000000000000000100000000
+    VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT =
+      0b0000000000000000000000000000000000000000000000000000001000000000
+    VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT =
+      0b0000000000000000000000000000000000000000000000000000010000000000
+    VK_ACCESS_2_TRANSFER_READ_BIT =
+      0b0000000000000000000000000000000000000000000000000000100000000000
+    VK_ACCESS_2_TRANSFER_WRITE_BIT =
+      0b0000000000000000000000000000000000000000000000000001000000000000
+    VK_ACCESS_2_HOST_READ_BIT =
+      0b0000000000000000000000000000000000000000000000000010000000000000
+    VK_ACCESS_2_HOST_WRITE_BIT =
+      0b0000000000000000000000000000000000000000000000000100000000000000
+    VK_ACCESS_2_MEMORY_READ_BIT =
+      0b0000000000000000000000000000000000000000000000001000000000000000
+    VK_ACCESS_2_MEMORY_WRITE_BIT =
+      0b0000000000000000000000000000000000000000000000010000000000000000
+    VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV =
+      0b0000000000000000000000000000000000000000000000100000000000000000
+    VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV =
+      0b0000000000000000000000000000000000000000000001000000000000000000
+    VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT =
+      0b0000000000000000000000000000000000000000000010000000000000000000
+    VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT =
+      0b0000000000000000000000000000000000000000000100000000000000000000
+    VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR =
+      0b0000000000000000000000000000000000000000001000000000000000000000
+    VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR =
+      0b0000000000000000000000000000000000000000010000000000000000000000
+    VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR =
+      0b0000000000000000000000000000000000000000100000000000000000000000
+    VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT =
+      0b0000000000000000000000000000000000000001000000000000000000000000
+    VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT =
+      0b0000000000000000000000000000000000000010000000000000000000000000
+    VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT =
+      0b0000000000000000000000000000000000000100000000000000000000000000
+    VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT =
+      0b0000000000000000000000000000000000001000000000000000000000000000
+    VK_ACCESS_2_SHADER_SAMPLED_READ_BIT =
+      0b0000000000000000000000000000000100000000000000000000000000000000
+    VK_ACCESS_2_SHADER_STORAGE_READ_BIT =
+      0b0000000000000000000000000000001000000000000000000000000000000000
+    VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT =
+      0b0000000000000000000000000000010000000000000000000000000000000000
+    VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR =
+      0b0000000000000000000000000000100000000000000000000000000000000000
+    VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR =
+      0b0000000000000000000000000001000000000000000000000000000000000000
+    VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR =
+      0b0000000000000000000000000010000000000000000000000000000000000000
+    VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR =
+      0b0000000000000000000000000100000000000000000000000000000000000000
+    VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI =
+      0b0000000000000000000000001000000000000000000000000000000000000000
+    VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR =
+      0b0000000000000000000000010000000000000000000000000000000000000000
+    VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT =
+      0b0000000000000000000000100000000000000000000000000000000000000000
+    VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV =
+      0b0000000000000000000001000000000000000000000000000000000000000000
+    VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV =
+      0b0000000000000000000010000000000000000000000000000000000000000000
+    VK_ACCESS_2_MICROMAP_READ_BIT_EXT =
+      0b0000000000000000000100000000000000000000000000000000000000000000
+    VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT =
+      0b0000000000000000001000000000000000000000000000000000000000000000
+    VK_ACCESS_2_RESERVED_46_BIT_EXT =
+      0b0000000000000000010000000000000000000000000000000000000000000000
+
 func toBits*(flags: openArray[VkAccessFlagBits2]): VkAccessFlags2 =
   for flag in flags:
     result = VkAccessFlags2(uint64(result) or uint64(flag))
@@ -3759,52 +4805,94 @@
   for value in VkAccessFlagBits2.items:
     if (cast[uint64](value) and uint64(number)) > 0:
       result.add value
-proc `==`*(a, b: VkAccessFlags2): bool = uint64(a) == uint64(b)
-const
-  VK_ACCESS_2_NONE* = 0
-type
-  VkPipelineStageFlagBits2* {.size: 8.} = enum
-    VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT = 0b0000000000000000000000000000000000000000000000000000000000000001
-    VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT = 0b0000000000000000000000000000000000000000000000000000000000000010
-    VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT = 0b0000000000000000000000000000000000000000000000000000000000000100
-    VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT = 0b0000000000000000000000000000000000000000000000000000000000001000
-    VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT = 0b0000000000000000000000000000000000000000000000000000000000010000
-    VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT = 0b0000000000000000000000000000000000000000000000000000000000100000
-    VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT = 0b0000000000000000000000000000000000000000000000000000000001000000
-    VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT = 0b0000000000000000000000000000000000000000000000000000000010000000
-    VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT = 0b0000000000000000000000000000000000000000000000000000000100000000
-    VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT = 0b0000000000000000000000000000000000000000000000000000001000000000
-    VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT = 0b0000000000000000000000000000000000000000000000000000010000000000
-    VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT = 0b0000000000000000000000000000000000000000000000000000100000000000
-    VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT = 0b0000000000000000000000000000000000000000000000000001000000000000
-    VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT = 0b0000000000000000000000000000000000000000000000000010000000000000
-    VK_PIPELINE_STAGE_2_HOST_BIT = 0b0000000000000000000000000000000000000000000000000100000000000000
-    VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT = 0b0000000000000000000000000000000000000000000000001000000000000000
-    VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT = 0b0000000000000000000000000000000000000000000000010000000000000000
-    VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = 0b0000000000000000000000000000000000000000000000100000000000000000
-    VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0b0000000000000000000000000000000000000000000001000000000000000000
-    VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT = 0b0000000000000000000000000000000000000000000010000000000000000000
-    VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT = 0b0000000000000000000000000000000000000000000100000000000000000000
-    VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR = 0b0000000000000000000000000000000000000000001000000000000000000000
-    VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0b0000000000000000000000000000000000000000010000000000000000000000
-    VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0b0000000000000000000000000000000000000000100000000000000000000000
-    VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0b0000000000000000000000000000000000000001000000000000000000000000
-    VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0b0000000000000000000000000000000000000010000000000000000000000000
-    VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR = 0b0000000000000000000000000000000000000100000000000000000000000000
-    VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR = 0b0000000000000000000000000000000000001000000000000000000000000000
-    VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR = 0b0000000000000000000000000000000000010000000000000000000000000000
-    VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV = 0b0000000000000000000000000000000000100000000000000000000000000000
-    VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT = 0b0000000000000000000000000000000001000000000000000000000000000000
-    VK_PIPELINE_STAGE_2_COPY_BIT = 0b0000000000000000000000000000000100000000000000000000000000000000
-    VK_PIPELINE_STAGE_2_RESOLVE_BIT = 0b0000000000000000000000000000001000000000000000000000000000000000
-    VK_PIPELINE_STAGE_2_BLIT_BIT = 0b0000000000000000000000000000010000000000000000000000000000000000
-    VK_PIPELINE_STAGE_2_CLEAR_BIT = 0b0000000000000000000000000000100000000000000000000000000000000000
-    VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT = 0b0000000000000000000000000001000000000000000000000000000000000000
-    VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT = 0b0000000000000000000000000010000000000000000000000000000000000000
-    VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT = 0b0000000000000000000000000100000000000000000000000000000000000000
-    VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI = 0b0000000000000000000000001000000000000000000000000000000000000000
-    VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = 0b0000000000000000000000010000000000000000000000000000000000000000
-    VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI = 0b0000000000000000000000100000000000000000000000000000000000000000
+proc `==`*(a, b: VkAccessFlags2): bool =
+  uint64(a) == uint64(b)
+
+const VK_ACCESS_2_NONE* = 0
+type VkPipelineStageFlagBits2* {.size: 8.} = enum
+  VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT =
+    0b0000000000000000000000000000000000000000000000000000000000000001
+  VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT =
+    0b0000000000000000000000000000000000000000000000000000000000000010
+  VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT =
+    0b0000000000000000000000000000000000000000000000000000000000000100
+  VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT =
+    0b0000000000000000000000000000000000000000000000000000000000001000
+  VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT =
+    0b0000000000000000000000000000000000000000000000000000000000010000
+  VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT =
+    0b0000000000000000000000000000000000000000000000000000000000100000
+  VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT =
+    0b0000000000000000000000000000000000000000000000000000000001000000
+  VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT =
+    0b0000000000000000000000000000000000000000000000000000000010000000
+  VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT =
+    0b0000000000000000000000000000000000000000000000000000000100000000
+  VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT =
+    0b0000000000000000000000000000000000000000000000000000001000000000
+  VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT =
+    0b0000000000000000000000000000000000000000000000000000010000000000
+  VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT =
+    0b0000000000000000000000000000000000000000000000000000100000000000
+  VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT =
+    0b0000000000000000000000000000000000000000000000000001000000000000
+  VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT =
+    0b0000000000000000000000000000000000000000000000000010000000000000
+  VK_PIPELINE_STAGE_2_HOST_BIT =
+    0b0000000000000000000000000000000000000000000000000100000000000000
+  VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT =
+    0b0000000000000000000000000000000000000000000000001000000000000000
+  VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT =
+    0b0000000000000000000000000000000000000000000000010000000000000000
+  VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV =
+    0b0000000000000000000000000000000000000000000000100000000000000000
+  VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT =
+    0b0000000000000000000000000000000000000000000001000000000000000000
+  VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT =
+    0b0000000000000000000000000000000000000000000010000000000000000000
+  VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT =
+    0b0000000000000000000000000000000000000000000100000000000000000000
+  VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR =
+    0b0000000000000000000000000000000000000000001000000000000000000000
+  VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR =
+    0b0000000000000000000000000000000000000000010000000000000000000000
+  VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT =
+    0b0000000000000000000000000000000000000000100000000000000000000000
+  VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT =
+    0b0000000000000000000000000000000000000001000000000000000000000000
+  VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR =
+    0b0000000000000000000000000000000000000010000000000000000000000000
+  VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR =
+    0b0000000000000000000000000000000000000100000000000000000000000000
+  VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR =
+    0b0000000000000000000000000000000000001000000000000000000000000000
+  VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR =
+    0b0000000000000000000000000000000000010000000000000000000000000000
+  VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV =
+    0b0000000000000000000000000000000000100000000000000000000000000000
+  VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT =
+    0b0000000000000000000000000000000001000000000000000000000000000000
+  VK_PIPELINE_STAGE_2_COPY_BIT =
+    0b0000000000000000000000000000000100000000000000000000000000000000
+  VK_PIPELINE_STAGE_2_RESOLVE_BIT =
+    0b0000000000000000000000000000001000000000000000000000000000000000
+  VK_PIPELINE_STAGE_2_BLIT_BIT =
+    0b0000000000000000000000000000010000000000000000000000000000000000
+  VK_PIPELINE_STAGE_2_CLEAR_BIT =
+    0b0000000000000000000000000000100000000000000000000000000000000000
+  VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT =
+    0b0000000000000000000000000001000000000000000000000000000000000000
+  VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT =
+    0b0000000000000000000000000010000000000000000000000000000000000000
+  VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT =
+    0b0000000000000000000000000100000000000000000000000000000000000000
+  VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI =
+    0b0000000000000000000000001000000000000000000000000000000000000000
+  VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI =
+    0b0000000000000000000000010000000000000000000000000000000000000000
+  VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI =
+    0b0000000000000000000000100000000000000000000000000000000000000000
+
 func toBits*(flags: openArray[VkPipelineStageFlagBits2]): VkPipelineStageFlags2 =
   for flag in flags:
     result = VkPipelineStageFlags2(uint64(result) or uint64(flag))
@@ -3812,12 +4900,13 @@
   for value in VkPipelineStageFlagBits2.items:
     if (cast[uint64](value) and uint64(number)) > 0:
       result.add value
-proc `==`*(a, b: VkPipelineStageFlags2): bool = uint64(a) == uint64(b)
-const
-  VK_PIPELINE_STAGE_2_NONE* = 0
-type
-  VkSubmitFlagBits* {.size: sizeof(cint).} = enum
-    VK_SUBMIT_PROTECTED_BIT = 0b00000000000000000000000000000001
+proc `==`*(a, b: VkPipelineStageFlags2): bool =
+  uint64(a) == uint64(b)
+
+const VK_PIPELINE_STAGE_2_NONE* = 0
+type VkSubmitFlagBits* {.size: sizeof(cint).} = enum
+  VK_SUBMIT_PROTECTED_BIT = 0b00000000000000000000000000000001
+
 func toBits*(flags: openArray[VkSubmitFlagBits]): VkSubmitFlags =
   for flag in flags:
     result = VkSubmitFlags(uint(result) or uint(flag))
@@ -3825,10 +4914,12 @@
   for value in VkSubmitFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkSubmitFlags): bool = cint(a) == cint(b)
-type
-  VkEventCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_EVENT_CREATE_DEVICE_ONLY_BIT = 0b00000000000000000000000000000001
+proc `==`*(a, b: VkSubmitFlags): bool =
+  cint(a) == cint(b)
+
+type VkEventCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_EVENT_CREATE_DEVICE_ONLY_BIT = 0b00000000000000000000000000000001
+
 func toBits*(flags: openArray[VkEventCreateFlagBits]): VkEventCreateFlags =
   for flag in flags:
     result = VkEventCreateFlags(uint(result) or uint(flag))
@@ -3836,91 +4927,139 @@
   for value in VkEventCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkEventCreateFlags): bool = cint(a) == cint(b)
-type
-  VkPipelineLayoutCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_PIPELINE_LAYOUT_CREATE_RESERVED_0_BIT_AMD = 0b00000000000000000000000000000001
-    VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT = 0b00000000000000000000000000000010
-func toBits*(flags: openArray[VkPipelineLayoutCreateFlagBits]): VkPipelineLayoutCreateFlags =
+proc `==`*(a, b: VkEventCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkPipelineLayoutCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_PIPELINE_LAYOUT_CREATE_RESERVED_0_BIT_AMD = 0b00000000000000000000000000000001
+  VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT =
+    0b00000000000000000000000000000010
+
+func toBits*(
+    flags: openArray[VkPipelineLayoutCreateFlagBits]
+): VkPipelineLayoutCreateFlags =
   for flag in flags:
     result = VkPipelineLayoutCreateFlags(uint(result) or uint(flag))
-func toEnums*(number: VkPipelineLayoutCreateFlags): seq[VkPipelineLayoutCreateFlagBits] =
+func toEnums*(
+    number: VkPipelineLayoutCreateFlags
+): seq[VkPipelineLayoutCreateFlagBits] =
   for value in VkPipelineLayoutCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkPipelineLayoutCreateFlags): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkPipelineLayoutCreateFlags): bool =
+  cint(a) == cint(b)
+
 type
   VkSciSyncClientTypeNV* {.size: sizeof(cint).} = enum
     VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_NV = 0
     VK_SCI_SYNC_CLIENT_TYPE_WAITER_NV = 1
     VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_WAITER_NV = 2
+
   VkSciSyncPrimitiveTypeNV* {.size: sizeof(cint).} = enum
     VK_SCI_SYNC_PRIMITIVE_TYPE_FENCE_NV = 0
     VK_SCI_SYNC_PRIMITIVE_TYPE_SEMAPHORE_NV = 1
+
   VkProvokingVertexModeEXT* {.size: sizeof(cint).} = enum
     VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0
     VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1
+
   VkPipelineCacheValidationVersion* {.size: sizeof(cint).} = enum
     VK_PIPELINE_CACHE_VALIDATION_VERSION_SAFETY_CRITICAL_ONE = 1
+
   VkAccelerationStructureMotionInstanceTypeNV* {.size: sizeof(cint).} = enum
     VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0
     VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1
     VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2
+
   VkPipelineColorBlendStateCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT = 0b00000000000000000000000000000001
-func toBits*(flags: openArray[VkPipelineColorBlendStateCreateFlagBits]): VkPipelineColorBlendStateCreateFlags =
+    VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT =
+      0b00000000000000000000000000000001
+
+func toBits*(
+    flags: openArray[VkPipelineColorBlendStateCreateFlagBits]
+): VkPipelineColorBlendStateCreateFlags =
   for flag in flags:
     result = VkPipelineColorBlendStateCreateFlags(uint(result) or uint(flag))
-func toEnums*(number: VkPipelineColorBlendStateCreateFlags): seq[VkPipelineColorBlendStateCreateFlagBits] =
+func toEnums*(
+    number: VkPipelineColorBlendStateCreateFlags
+): seq[VkPipelineColorBlendStateCreateFlagBits] =
   for value in VkPipelineColorBlendStateCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkPipelineColorBlendStateCreateFlags): bool = cint(a) == cint(b)
-type
-  VkPipelineDepthStencilStateCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 0b00000000000000000000000000000001
-    VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 0b00000000000000000000000000000010
-func toBits*(flags: openArray[VkPipelineDepthStencilStateCreateFlagBits]): VkPipelineDepthStencilStateCreateFlags =
+proc `==`*(a, b: VkPipelineColorBlendStateCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkPipelineDepthStencilStateCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT =
+    0b00000000000000000000000000000001
+  VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT =
+    0b00000000000000000000000000000010
+
+func toBits*(
+    flags: openArray[VkPipelineDepthStencilStateCreateFlagBits]
+): VkPipelineDepthStencilStateCreateFlags =
   for flag in flags:
     result = VkPipelineDepthStencilStateCreateFlags(uint(result) or uint(flag))
-func toEnums*(number: VkPipelineDepthStencilStateCreateFlags): seq[VkPipelineDepthStencilStateCreateFlagBits] =
+func toEnums*(
+    number: VkPipelineDepthStencilStateCreateFlags
+): seq[VkPipelineDepthStencilStateCreateFlagBits] =
   for value in VkPipelineDepthStencilStateCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkPipelineDepthStencilStateCreateFlags): bool = cint(a) == cint(b)
-type
-  VkGraphicsPipelineLibraryFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 0b00000000000000000000000000000001
-    VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 0b00000000000000000000000000000010
-    VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 0b00000000000000000000000000000100
-    VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 0b00000000000000000000000000001000
-func toBits*(flags: openArray[VkGraphicsPipelineLibraryFlagBitsEXT]): VkGraphicsPipelineLibraryFlagsEXT =
+proc `==`*(a, b: VkPipelineDepthStencilStateCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkGraphicsPipelineLibraryFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT =
+    0b00000000000000000000000000000001
+  VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT =
+    0b00000000000000000000000000000010
+  VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT =
+    0b00000000000000000000000000000100
+  VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT =
+    0b00000000000000000000000000001000
+
+func toBits*(
+    flags: openArray[VkGraphicsPipelineLibraryFlagBitsEXT]
+): VkGraphicsPipelineLibraryFlagsEXT =
   for flag in flags:
     result = VkGraphicsPipelineLibraryFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkGraphicsPipelineLibraryFlagsEXT): seq[VkGraphicsPipelineLibraryFlagBitsEXT] =
+func toEnums*(
+    number: VkGraphicsPipelineLibraryFlagsEXT
+): seq[VkGraphicsPipelineLibraryFlagBitsEXT] =
   for value in VkGraphicsPipelineLibraryFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkGraphicsPipelineLibraryFlagsEXT): bool = cint(a) == cint(b)
-type
-  VkDeviceAddressBindingFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 0b00000000000000000000000000000001
-func toBits*(flags: openArray[VkDeviceAddressBindingFlagBitsEXT]): VkDeviceAddressBindingFlagsEXT =
+proc `==`*(a, b: VkGraphicsPipelineLibraryFlagsEXT): bool =
+  cint(a) == cint(b)
+
+type VkDeviceAddressBindingFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 0b00000000000000000000000000000001
+
+func toBits*(
+    flags: openArray[VkDeviceAddressBindingFlagBitsEXT]
+): VkDeviceAddressBindingFlagsEXT =
   for flag in flags:
     result = VkDeviceAddressBindingFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkDeviceAddressBindingFlagsEXT): seq[VkDeviceAddressBindingFlagBitsEXT] =
+func toEnums*(
+    number: VkDeviceAddressBindingFlagsEXT
+): seq[VkDeviceAddressBindingFlagBitsEXT] =
   for value in VkDeviceAddressBindingFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkDeviceAddressBindingFlagsEXT): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkDeviceAddressBindingFlagsEXT): bool =
+  cint(a) == cint(b)
+
 type
   VkDeviceAddressBindingTypeEXT* {.size: sizeof(cint).} = enum
     VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0
     VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1
+
   VkPresentScalingFlagBitsEXT* {.size: sizeof(cint).} = enum
     VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 0b00000000000000000000000000000001
     VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 0b00000000000000000000000000000010
     VK_PRESENT_SCALING_STRETCH_BIT_EXT = 0b00000000000000000000000000000100
+
 func toBits*(flags: openArray[VkPresentScalingFlagBitsEXT]): VkPresentScalingFlagsEXT =
   for flag in flags:
     result = VkPresentScalingFlagsEXT(uint(result) or uint(flag))
@@ -3928,12 +5067,14 @@
   for value in VkPresentScalingFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkPresentScalingFlagsEXT): bool = cint(a) == cint(b)
-type
-  VkPresentGravityFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_PRESENT_GRAVITY_MIN_BIT_EXT = 0b00000000000000000000000000000001
-    VK_PRESENT_GRAVITY_MAX_BIT_EXT = 0b00000000000000000000000000000010
-    VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 0b00000000000000000000000000000100
+proc `==`*(a, b: VkPresentScalingFlagsEXT): bool =
+  cint(a) == cint(b)
+
+type VkPresentGravityFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_PRESENT_GRAVITY_MIN_BIT_EXT = 0b00000000000000000000000000000001
+  VK_PRESENT_GRAVITY_MAX_BIT_EXT = 0b00000000000000000000000000000010
+  VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 0b00000000000000000000000000000100
+
 func toBits*(flags: openArray[VkPresentGravityFlagBitsEXT]): VkPresentGravityFlagsEXT =
   for flag in flags:
     result = VkPresentGravityFlagsEXT(uint(result) or uint(flag))
@@ -3941,166 +5082,230 @@
   for value in VkPresentGravityFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkPresentGravityFlagsEXT): bool = cint(a) == cint(b)
-type
-  VkVideoCodecOperationFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 0b00000000000000000000000000000001
-    VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 0b00000000000000000000000000000010
-    VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0b00000000000000010000000000000000
-    VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT = 0b00000000000000100000000000000000
-func toBits*(flags: openArray[VkVideoCodecOperationFlagBitsKHR]): VkVideoCodecOperationFlagsKHR =
+proc `==`*(a, b: VkPresentGravityFlagsEXT): bool =
+  cint(a) == cint(b)
+
+type VkVideoCodecOperationFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 0b00000000000000000000000000000001
+  VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 0b00000000000000000000000000000010
+  VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0b00000000000000010000000000000000
+  VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT = 0b00000000000000100000000000000000
+
+func toBits*(
+    flags: openArray[VkVideoCodecOperationFlagBitsKHR]
+): VkVideoCodecOperationFlagsKHR =
   for flag in flags:
     result = VkVideoCodecOperationFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkVideoCodecOperationFlagsKHR): seq[VkVideoCodecOperationFlagBitsKHR] =
+func toEnums*(
+    number: VkVideoCodecOperationFlagsKHR
+): seq[VkVideoCodecOperationFlagBitsKHR] =
   for value in VkVideoCodecOperationFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoCodecOperationFlagsKHR): bool = cint(a) == cint(b)
-const
-  VK_VIDEO_CODEC_OPERATION_NONE_KHR* = 0
-type
-  VkVideoChromaSubsamplingFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0b00000000000000000000000000000001
-    VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0b00000000000000000000000000000010
-    VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0b00000000000000000000000000000100
-    VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0b00000000000000000000000000001000
-func toBits*(flags: openArray[VkVideoChromaSubsamplingFlagBitsKHR]): VkVideoChromaSubsamplingFlagsKHR =
+proc `==`*(a, b: VkVideoCodecOperationFlagsKHR): bool =
+  cint(a) == cint(b)
+
+const VK_VIDEO_CODEC_OPERATION_NONE_KHR* = 0
+type VkVideoChromaSubsamplingFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0b00000000000000000000000000000001
+  VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0b00000000000000000000000000000010
+  VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0b00000000000000000000000000000100
+  VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0b00000000000000000000000000001000
+
+func toBits*(
+    flags: openArray[VkVideoChromaSubsamplingFlagBitsKHR]
+): VkVideoChromaSubsamplingFlagsKHR =
   for flag in flags:
     result = VkVideoChromaSubsamplingFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkVideoChromaSubsamplingFlagsKHR): seq[VkVideoChromaSubsamplingFlagBitsKHR] =
+func toEnums*(
+    number: VkVideoChromaSubsamplingFlagsKHR
+): seq[VkVideoChromaSubsamplingFlagBitsKHR] =
   for value in VkVideoChromaSubsamplingFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoChromaSubsamplingFlagsKHR): bool = cint(a) == cint(b)
-const
-  VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR* = 0
-type
-  VkVideoComponentBitDepthFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0b00000000000000000000000000000001
-    VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0b00000000000000000000000000000100
-    VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0b00000000000000000000000000010000
-func toBits*(flags: openArray[VkVideoComponentBitDepthFlagBitsKHR]): VkVideoComponentBitDepthFlagsKHR =
+proc `==`*(a, b: VkVideoChromaSubsamplingFlagsKHR): bool =
+  cint(a) == cint(b)
+
+const VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR* = 0
+type VkVideoComponentBitDepthFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0b00000000000000000000000000000001
+  VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0b00000000000000000000000000000100
+  VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0b00000000000000000000000000010000
+
+func toBits*(
+    flags: openArray[VkVideoComponentBitDepthFlagBitsKHR]
+): VkVideoComponentBitDepthFlagsKHR =
   for flag in flags:
     result = VkVideoComponentBitDepthFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkVideoComponentBitDepthFlagsKHR): seq[VkVideoComponentBitDepthFlagBitsKHR] =
+func toEnums*(
+    number: VkVideoComponentBitDepthFlagsKHR
+): seq[VkVideoComponentBitDepthFlagBitsKHR] =
   for value in VkVideoComponentBitDepthFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoComponentBitDepthFlagsKHR): bool = cint(a) == cint(b)
-const
-  VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR* = 0
-type
-  VkVideoCapabilityFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0b00000000000000000000000000000001
-    VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0b00000000000000000000000000000010
-func toBits*(flags: openArray[VkVideoCapabilityFlagBitsKHR]): VkVideoCapabilityFlagsKHR =
+proc `==`*(a, b: VkVideoComponentBitDepthFlagsKHR): bool =
+  cint(a) == cint(b)
+
+const VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR* = 0
+type VkVideoCapabilityFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0b00000000000000000000000000000001
+  VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR =
+    0b00000000000000000000000000000010
+
+func toBits*(
+    flags: openArray[VkVideoCapabilityFlagBitsKHR]
+): VkVideoCapabilityFlagsKHR =
   for flag in flags:
     result = VkVideoCapabilityFlagsKHR(uint(result) or uint(flag))
 func toEnums*(number: VkVideoCapabilityFlagsKHR): seq[VkVideoCapabilityFlagBitsKHR] =
   for value in VkVideoCapabilityFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoCapabilityFlagsKHR): bool = cint(a) == cint(b)
-type
-  VkVideoSessionCreateFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0b00000000000000000000000000000001
-func toBits*(flags: openArray[VkVideoSessionCreateFlagBitsKHR]): VkVideoSessionCreateFlagsKHR =
+proc `==`*(a, b: VkVideoCapabilityFlagsKHR): bool =
+  cint(a) == cint(b)
+
+type VkVideoSessionCreateFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0b00000000000000000000000000000001
+
+func toBits*(
+    flags: openArray[VkVideoSessionCreateFlagBitsKHR]
+): VkVideoSessionCreateFlagsKHR =
   for flag in flags:
     result = VkVideoSessionCreateFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkVideoSessionCreateFlagsKHR): seq[VkVideoSessionCreateFlagBitsKHR] =
+func toEnums*(
+    number: VkVideoSessionCreateFlagsKHR
+): seq[VkVideoSessionCreateFlagBitsKHR] =
   for value in VkVideoSessionCreateFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoSessionCreateFlagsKHR): bool = cint(a) == cint(b)
-type
-  VkVideoDecodeH264PictureLayoutFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 0b00000000000000000000000000000001
-    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 0b00000000000000000000000000000010
-func toBits*(flags: openArray[VkVideoDecodeH264PictureLayoutFlagBitsKHR]): VkVideoDecodeH264PictureLayoutFlagsKHR =
+proc `==`*(a, b: VkVideoSessionCreateFlagsKHR): bool =
+  cint(a) == cint(b)
+
+type VkVideoDecodeH264PictureLayoutFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR =
+    0b00000000000000000000000000000001
+  VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR =
+    0b00000000000000000000000000000010
+
+func toBits*(
+    flags: openArray[VkVideoDecodeH264PictureLayoutFlagBitsKHR]
+): VkVideoDecodeH264PictureLayoutFlagsKHR =
   for flag in flags:
     result = VkVideoDecodeH264PictureLayoutFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkVideoDecodeH264PictureLayoutFlagsKHR): seq[VkVideoDecodeH264PictureLayoutFlagBitsKHR] =
+func toEnums*(
+    number: VkVideoDecodeH264PictureLayoutFlagsKHR
+): seq[VkVideoDecodeH264PictureLayoutFlagBitsKHR] =
   for value in VkVideoDecodeH264PictureLayoutFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoDecodeH264PictureLayoutFlagsKHR): bool = cint(a) == cint(b)
-const
-  VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR* = 0
-type
-  VkVideoCodingControlFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0b00000000000000000000000000000001
-    VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 0b00000000000000000000000000000010
-    VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkVideoCodingControlFlagBitsKHR]): VkVideoCodingControlFlagsKHR =
+proc `==`*(a, b: VkVideoDecodeH264PictureLayoutFlagsKHR): bool =
+  cint(a) == cint(b)
+
+const VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR* = 0
+type VkVideoCodingControlFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0b00000000000000000000000000000001
+  VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR =
+    0b00000000000000000000000000000010
+  VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR =
+    0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkVideoCodingControlFlagBitsKHR]
+): VkVideoCodingControlFlagsKHR =
   for flag in flags:
     result = VkVideoCodingControlFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkVideoCodingControlFlagsKHR): seq[VkVideoCodingControlFlagBitsKHR] =
+func toEnums*(
+    number: VkVideoCodingControlFlagsKHR
+): seq[VkVideoCodingControlFlagBitsKHR] =
   for value in VkVideoCodingControlFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoCodingControlFlagsKHR): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkVideoCodingControlFlagsKHR): bool =
+  cint(a) == cint(b)
+
 type
   VkQueryResultStatusKHR* {.size: sizeof(cint).} = enum
     VK_QUERY_RESULT_STATUS_ERROR_KHR = -1
     VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0
     VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1
+
   VkVideoDecodeUsageFlagBitsKHR* {.size: sizeof(cint).} = enum
     VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 0b00000000000000000000000000000001
     VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 0b00000000000000000000000000000010
     VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkVideoDecodeUsageFlagBitsKHR]): VkVideoDecodeUsageFlagsKHR =
+
+func toBits*(
+    flags: openArray[VkVideoDecodeUsageFlagBitsKHR]
+): VkVideoDecodeUsageFlagsKHR =
   for flag in flags:
     result = VkVideoDecodeUsageFlagsKHR(uint(result) or uint(flag))
 func toEnums*(number: VkVideoDecodeUsageFlagsKHR): seq[VkVideoDecodeUsageFlagBitsKHR] =
   for value in VkVideoDecodeUsageFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoDecodeUsageFlagsKHR): bool = cint(a) == cint(b)
-const
-  VK_VIDEO_DECODE_USAGE_DEFAULT_KHR* = 0
-type
-  VkVideoDecodeCapabilityFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 0b00000000000000000000000000000001
-    VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 0b00000000000000000000000000000010
-func toBits*(flags: openArray[VkVideoDecodeCapabilityFlagBitsKHR]): VkVideoDecodeCapabilityFlagsKHR =
+proc `==`*(a, b: VkVideoDecodeUsageFlagsKHR): bool =
+  cint(a) == cint(b)
+
+const VK_VIDEO_DECODE_USAGE_DEFAULT_KHR* = 0
+type VkVideoDecodeCapabilityFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR =
+    0b00000000000000000000000000000001
+  VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR =
+    0b00000000000000000000000000000010
+
+func toBits*(
+    flags: openArray[VkVideoDecodeCapabilityFlagBitsKHR]
+): VkVideoDecodeCapabilityFlagsKHR =
   for flag in flags:
     result = VkVideoDecodeCapabilityFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkVideoDecodeCapabilityFlagsKHR): seq[VkVideoDecodeCapabilityFlagBitsKHR] =
+func toEnums*(
+    number: VkVideoDecodeCapabilityFlagsKHR
+): seq[VkVideoDecodeCapabilityFlagBitsKHR] =
   for value in VkVideoDecodeCapabilityFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoDecodeCapabilityFlagsKHR): bool = cint(a) == cint(b)
-type
-  VkVideoEncodeUsageFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 0b00000000000000000000000000000001
-    VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 0b00000000000000000000000000000010
-    VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 0b00000000000000000000000000000100
-    VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 0b00000000000000000000000000001000
-func toBits*(flags: openArray[VkVideoEncodeUsageFlagBitsKHR]): VkVideoEncodeUsageFlagsKHR =
+proc `==`*(a, b: VkVideoDecodeCapabilityFlagsKHR): bool =
+  cint(a) == cint(b)
+
+type VkVideoEncodeUsageFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 0b00000000000000000000000000000001
+  VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 0b00000000000000000000000000000010
+  VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 0b00000000000000000000000000000100
+  VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 0b00000000000000000000000000001000
+
+func toBits*(
+    flags: openArray[VkVideoEncodeUsageFlagBitsKHR]
+): VkVideoEncodeUsageFlagsKHR =
   for flag in flags:
     result = VkVideoEncodeUsageFlagsKHR(uint(result) or uint(flag))
 func toEnums*(number: VkVideoEncodeUsageFlagsKHR): seq[VkVideoEncodeUsageFlagBitsKHR] =
   for value in VkVideoEncodeUsageFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoEncodeUsageFlagsKHR): bool = cint(a) == cint(b)
-const
-  VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR* = 0
-type
-  VkVideoEncodeContentFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 0b00000000000000000000000000000001
-    VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 0b00000000000000000000000000000010
-    VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkVideoEncodeContentFlagBitsKHR]): VkVideoEncodeContentFlagsKHR =
+proc `==`*(a, b: VkVideoEncodeUsageFlagsKHR): bool =
+  cint(a) == cint(b)
+
+const VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR* = 0
+type VkVideoEncodeContentFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 0b00000000000000000000000000000001
+  VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 0b00000000000000000000000000000010
+  VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkVideoEncodeContentFlagBitsKHR]
+): VkVideoEncodeContentFlagsKHR =
   for flag in flags:
     result = VkVideoEncodeContentFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkVideoEncodeContentFlagsKHR): seq[VkVideoEncodeContentFlagBitsKHR] =
+func toEnums*(
+    number: VkVideoEncodeContentFlagsKHR
+): seq[VkVideoEncodeContentFlagBitsKHR] =
   for value in VkVideoEncodeContentFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoEncodeContentFlagsKHR): bool = cint(a) == cint(b)
-const
-  VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR* = 0
+proc `==`*(a, b: VkVideoEncodeContentFlagsKHR): bool =
+  cint(a) == cint(b)
+
+const VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR* = 0
 type
   VkVideoEncodeTuningModeKHR* {.size: sizeof(cint).} = enum
     VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0
@@ -4108,156 +5313,270 @@
     VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2
     VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3
     VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4
+
   VkVideoEncodeCapabilityFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 0b00000000000000000000000000000001
-func toBits*(flags: openArray[VkVideoEncodeCapabilityFlagBitsKHR]): VkVideoEncodeCapabilityFlagsKHR =
+    VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR =
+      0b00000000000000000000000000000001
+
+func toBits*(
+    flags: openArray[VkVideoEncodeCapabilityFlagBitsKHR]
+): VkVideoEncodeCapabilityFlagsKHR =
   for flag in flags:
     result = VkVideoEncodeCapabilityFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkVideoEncodeCapabilityFlagsKHR): seq[VkVideoEncodeCapabilityFlagBitsKHR] =
+func toEnums*(
+    number: VkVideoEncodeCapabilityFlagsKHR
+): seq[VkVideoEncodeCapabilityFlagBitsKHR] =
   for value in VkVideoEncodeCapabilityFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoEncodeCapabilityFlagsKHR): bool = cint(a) == cint(b)
-type
-  VkVideoEncodeRateControlModeFlagBitsKHR* {.size: sizeof(cint).} = enum
-    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0b00000000000000000000000000000001
-    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 0b00000000000000000000000000000010
-    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkVideoEncodeRateControlModeFlagBitsKHR]): VkVideoEncodeRateControlModeFlagsKHR =
+proc `==`*(a, b: VkVideoEncodeCapabilityFlagsKHR): bool =
+  cint(a) == cint(b)
+
+type VkVideoEncodeRateControlModeFlagBitsKHR* {.size: sizeof(cint).} = enum
+  VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0b00000000000000000000000000000001
+  VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 0b00000000000000000000000000000010
+  VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkVideoEncodeRateControlModeFlagBitsKHR]
+): VkVideoEncodeRateControlModeFlagsKHR =
   for flag in flags:
     result = VkVideoEncodeRateControlModeFlagsKHR(uint(result) or uint(flag))
-func toEnums*(number: VkVideoEncodeRateControlModeFlagsKHR): seq[VkVideoEncodeRateControlModeFlagBitsKHR] =
+func toEnums*(
+    number: VkVideoEncodeRateControlModeFlagsKHR
+): seq[VkVideoEncodeRateControlModeFlagBitsKHR] =
   for value in VkVideoEncodeRateControlModeFlagBitsKHR.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoEncodeRateControlModeFlagsKHR): bool = cint(a) == cint(b)
-type
-  VkVideoEncodeH264CapabilityFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT = 0b00000000000000000000000000000001
-    VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT = 0b00000000000000000000000000000010
-    VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0b00000000000000000000000000000100
-    VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT = 0b00000000000000000000000000001000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT = 0b00000000000000000000000000010000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0b00000000000000000000000000100000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0b00000000000000000000000001000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0b00000000000000000000000010000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT = 0b00000000000000000000000100000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0b00000000000000000000001000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT = 0b00000000000000000000010000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT = 0b00000000000000000000100000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0b00000000000000000001000000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0b00000000000000000010000000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0b00000000000000000100000000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0b00000000000000001000000000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0b00000000000000010000000000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0b00000000000000100000000000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0b00000000000001000000000000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT = 0b00000000000010000000000000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0b00000000000100000000000000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT = 0b00000000001000000000000000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0b00000000010000000000000000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0b00000000100000000000000000000000
-    VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0b00000001000000000000000000000000
-func toBits*(flags: openArray[VkVideoEncodeH264CapabilityFlagBitsEXT]): VkVideoEncodeH264CapabilityFlagsEXT =
+proc `==`*(a, b: VkVideoEncodeRateControlModeFlagsKHR): bool =
+  cint(a) == cint(b)
+
+type VkVideoEncodeH264CapabilityFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT =
+    0b00000000000000000000000000000001
+  VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT =
+    0b00000000000000000000000000000010
+  VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT =
+    0b00000000000000000000000000000100
+  VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT =
+    0b00000000000000000000000000001000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT =
+    0b00000000000000000000000000010000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT =
+    0b00000000000000000000000000100000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT =
+    0b00000000000000000000000001000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT =
+    0b00000000000000000000000010000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT =
+    0b00000000000000000000000100000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT =
+    0b00000000000000000000001000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT =
+    0b00000000000000000000010000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT =
+    0b00000000000000000000100000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT =
+    0b00000000000000000001000000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT =
+    0b00000000000000000010000000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0b00000000000000000100000000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0b00000000000000001000000000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT =
+    0b00000000000000010000000000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT =
+    0b00000000000000100000000000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT =
+    0b00000000000001000000000000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT =
+    0b00000000000010000000000000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT =
+    0b00000000000100000000000000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT =
+    0b00000000001000000000000000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT =
+    0b00000000010000000000000000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT =
+    0b00000000100000000000000000000000
+  VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT =
+    0b00000001000000000000000000000000
+
+func toBits*(
+    flags: openArray[VkVideoEncodeH264CapabilityFlagBitsEXT]
+): VkVideoEncodeH264CapabilityFlagsEXT =
   for flag in flags:
     result = VkVideoEncodeH264CapabilityFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkVideoEncodeH264CapabilityFlagsEXT): seq[VkVideoEncodeH264CapabilityFlagBitsEXT] =
+func toEnums*(
+    number: VkVideoEncodeH264CapabilityFlagsEXT
+): seq[VkVideoEncodeH264CapabilityFlagBitsEXT] =
   for value in VkVideoEncodeH264CapabilityFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoEncodeH264CapabilityFlagsEXT): bool = cint(a) == cint(b)
-type
-  VkVideoEncodeH264InputModeFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0b00000000000000000000000000000001
-    VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0b00000000000000000000000000000010
-    VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkVideoEncodeH264InputModeFlagBitsEXT]): VkVideoEncodeH264InputModeFlagsEXT =
+proc `==`*(a, b: VkVideoEncodeH264CapabilityFlagsEXT): bool =
+  cint(a) == cint(b)
+
+type VkVideoEncodeH264InputModeFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0b00000000000000000000000000000001
+  VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0b00000000000000000000000000000010
+  VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkVideoEncodeH264InputModeFlagBitsEXT]
+): VkVideoEncodeH264InputModeFlagsEXT =
   for flag in flags:
     result = VkVideoEncodeH264InputModeFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkVideoEncodeH264InputModeFlagsEXT): seq[VkVideoEncodeH264InputModeFlagBitsEXT] =
+func toEnums*(
+    number: VkVideoEncodeH264InputModeFlagsEXT
+): seq[VkVideoEncodeH264InputModeFlagBitsEXT] =
   for value in VkVideoEncodeH264InputModeFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoEncodeH264InputModeFlagsEXT): bool = cint(a) == cint(b)
-type
-  VkVideoEncodeH264OutputModeFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0b00000000000000000000000000000001
-    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0b00000000000000000000000000000010
-    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkVideoEncodeH264OutputModeFlagBitsEXT]): VkVideoEncodeH264OutputModeFlagsEXT =
+proc `==`*(a, b: VkVideoEncodeH264InputModeFlagsEXT): bool =
+  cint(a) == cint(b)
+
+type VkVideoEncodeH264OutputModeFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0b00000000000000000000000000000001
+  VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0b00000000000000000000000000000010
+  VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkVideoEncodeH264OutputModeFlagBitsEXT]
+): VkVideoEncodeH264OutputModeFlagsEXT =
   for flag in flags:
     result = VkVideoEncodeH264OutputModeFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkVideoEncodeH264OutputModeFlagsEXT): seq[VkVideoEncodeH264OutputModeFlagBitsEXT] =
+func toEnums*(
+    number: VkVideoEncodeH264OutputModeFlagsEXT
+): seq[VkVideoEncodeH264OutputModeFlagBitsEXT] =
   for value in VkVideoEncodeH264OutputModeFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoEncodeH264OutputModeFlagsEXT): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkVideoEncodeH264OutputModeFlagsEXT): bool =
+  cint(a) == cint(b)
+
 type
   VkVideoEncodeH264RateControlStructureEXT* {.size: sizeof(cint).} = enum
     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0
     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_EXT = 1
     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_EXT = 2
+
   VkImageConstraintsInfoFlagBitsFUCHSIA* {.size: sizeof(cint).} = enum
-    VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = 0b00000000000000000000000000000001
-    VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = 0b00000000000000000000000000000010
-    VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = 0b00000000000000000000000000000100
-    VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = 0b00000000000000000000000000001000
-    VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = 0b00000000000000000000000000010000
-func toBits*(flags: openArray[VkImageConstraintsInfoFlagBitsFUCHSIA]): VkImageConstraintsInfoFlagsFUCHSIA =
+    VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA =
+      0b00000000000000000000000000000001
+    VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA =
+      0b00000000000000000000000000000010
+    VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA =
+      0b00000000000000000000000000000100
+    VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA =
+      0b00000000000000000000000000001000
+    VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA =
+      0b00000000000000000000000000010000
+
+func toBits*(
+    flags: openArray[VkImageConstraintsInfoFlagBitsFUCHSIA]
+): VkImageConstraintsInfoFlagsFUCHSIA =
   for flag in flags:
     result = VkImageConstraintsInfoFlagsFUCHSIA(uint(result) or uint(flag))
-func toEnums*(number: VkImageConstraintsInfoFlagsFUCHSIA): seq[VkImageConstraintsInfoFlagBitsFUCHSIA] =
+func toEnums*(
+    number: VkImageConstraintsInfoFlagsFUCHSIA
+): seq[VkImageConstraintsInfoFlagBitsFUCHSIA] =
   for value in VkImageConstraintsInfoFlagBitsFUCHSIA.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkImageConstraintsInfoFlagsFUCHSIA): bool = cint(a) == cint(b)
-type
-  VkFormatFeatureFlagBits2* {.size: 8.} = enum
-    VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT = 0b0000000000000000000000000000000000000000000000000000000000000001
-    VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT = 0b0000000000000000000000000000000000000000000000000000000000000010
-    VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT = 0b0000000000000000000000000000000000000000000000000000000000000100
-    VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT = 0b0000000000000000000000000000000000000000000000000000000000001000
-    VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT = 0b0000000000000000000000000000000000000000000000000000000000010000
-    VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0b0000000000000000000000000000000000000000000000000000000000100000
-    VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT = 0b0000000000000000000000000000000000000000000000000000000001000000
-    VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT = 0b0000000000000000000000000000000000000000000000000000000010000000
-    VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT = 0b0000000000000000000000000000000000000000000000000000000100000000
-    VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT = 0b0000000000000000000000000000000000000000000000000000001000000000
-    VK_FORMAT_FEATURE_2_BLIT_SRC_BIT = 0b0000000000000000000000000000000000000000000000000000010000000000
-    VK_FORMAT_FEATURE_2_BLIT_DST_BIT = 0b0000000000000000000000000000000000000000000000000000100000000000
-    VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0b0000000000000000000000000000000000000000000000000001000000000000
-    VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT = 0b0000000000000000000000000000000000000000000000000010000000000000
-    VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT = 0b0000000000000000000000000000000000000000000000000100000000000000
-    VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT = 0b0000000000000000000000000000000000000000000000001000000000000000
-    VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0b0000000000000000000000000000000000000000000000010000000000000000
-    VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT = 0b0000000000000000000000000000000000000000000000100000000000000000
-    VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0b0000000000000000000000000000000000000000000001000000000000000000
-    VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0b0000000000000000000000000000000000000000000010000000000000000000
-    VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0b0000000000000000000000000000000000000000000100000000000000000000
-    VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0b0000000000000000000000000000000000000000001000000000000000000000
-    VK_FORMAT_FEATURE_2_DISJOINT_BIT = 0b0000000000000000000000000000000000000000010000000000000000000000
-    VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT = 0b0000000000000000000000000000000000000000100000000000000000000000
-    VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT = 0b0000000000000000000000000000000000000001000000000000000000000000
-    VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR = 0b0000000000000000000000000000000000000010000000000000000000000000
-    VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR = 0b0000000000000000000000000000000000000100000000000000000000000000
-    VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR = 0b0000000000000000000000000000000000001000000000000000000000000000
-    VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR = 0b0000000000000000000000000000000000010000000000000000000000000000
-    VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0b0000000000000000000000000000000000100000000000000000000000000000
-    VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0b0000000000000000000000000000000001000000000000000000000000000000
-    VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT = 0b0000000000000000000000000000000010000000000000000000000000000000
-    VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT = 0b0000000000000000000000000000000100000000000000000000000000000000
-    VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT = 0b0000000000000000000000000000001000000000000000000000000000000000
-    VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM = 0b0000000000000000000000000000010000000000000000000000000000000000
-    VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM = 0b0000000000000000000000000000100000000000000000000000000000000000
-    VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM = 0b0000000000000000000000000001000000000000000000000000000000000000
-    VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM = 0b0000000000000000000000000010000000000000000000000000000000000000
-    VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV = 0b0000000000000000000000000100000000000000000000000000000000000000
-    VK_FORMAT_FEATURE_2_RESERVED_39_BIT_EXT = 0b0000000000000000000000001000000000000000000000000000000000000000
-    VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV = 0b0000000000000000000000010000000000000000000000000000000000000000
-    VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV = 0b0000000000000000000000100000000000000000000000000000000000000000
-    VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV = 0b0000000000000000000001000000000000000000000000000000000000000000
-    VK_FORMAT_FEATURE_2_RESERVED_44_BIT_EXT = 0b0000000000000000000100000000000000000000000000000000000000000000
-    VK_FORMAT_FEATURE_2_RESERVED_45_BIT_EXT = 0b0000000000000000001000000000000000000000000000000000000000000000
+proc `==`*(a, b: VkImageConstraintsInfoFlagsFUCHSIA): bool =
+  cint(a) == cint(b)
+
+type VkFormatFeatureFlagBits2* {.size: 8.} = enum
+  VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT =
+    0b0000000000000000000000000000000000000000000000000000000000000001
+  VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT =
+    0b0000000000000000000000000000000000000000000000000000000000000010
+  VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT =
+    0b0000000000000000000000000000000000000000000000000000000000000100
+  VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT =
+    0b0000000000000000000000000000000000000000000000000000000000001000
+  VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT =
+    0b0000000000000000000000000000000000000000000000000000000000010000
+  VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT =
+    0b0000000000000000000000000000000000000000000000000000000000100000
+  VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT =
+    0b0000000000000000000000000000000000000000000000000000000001000000
+  VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT =
+    0b0000000000000000000000000000000000000000000000000000000010000000
+  VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT =
+    0b0000000000000000000000000000000000000000000000000000000100000000
+  VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT =
+    0b0000000000000000000000000000000000000000000000000000001000000000
+  VK_FORMAT_FEATURE_2_BLIT_SRC_BIT =
+    0b0000000000000000000000000000000000000000000000000000010000000000
+  VK_FORMAT_FEATURE_2_BLIT_DST_BIT =
+    0b0000000000000000000000000000000000000000000000000000100000000000
+  VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT =
+    0b0000000000000000000000000000000000000000000000000001000000000000
+  VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT =
+    0b0000000000000000000000000000000000000000000000000010000000000000
+  VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT =
+    0b0000000000000000000000000000000000000000000000000100000000000000
+  VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT =
+    0b0000000000000000000000000000000000000000000000001000000000000000
+  VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT =
+    0b0000000000000000000000000000000000000000000000010000000000000000
+  VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT =
+    0b0000000000000000000000000000000000000000000000100000000000000000
+  VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT =
+    0b0000000000000000000000000000000000000000000001000000000000000000
+  VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT =
+    0b0000000000000000000000000000000000000000000010000000000000000000
+  VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT =
+    0b0000000000000000000000000000000000000000000100000000000000000000
+  VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT =
+    0b0000000000000000000000000000000000000000001000000000000000000000
+  VK_FORMAT_FEATURE_2_DISJOINT_BIT =
+    0b0000000000000000000000000000000000000000010000000000000000000000
+  VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT =
+    0b0000000000000000000000000000000000000000100000000000000000000000
+  VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT =
+    0b0000000000000000000000000000000000000001000000000000000000000000
+  VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR =
+    0b0000000000000000000000000000000000000010000000000000000000000000
+  VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR =
+    0b0000000000000000000000000000000000000100000000000000000000000000
+  VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR =
+    0b0000000000000000000000000000000000001000000000000000000000000000
+  VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR =
+    0b0000000000000000000000000000000000010000000000000000000000000000
+  VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR =
+    0b0000000000000000000000000000000000100000000000000000000000000000
+  VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR =
+    0b0000000000000000000000000000000001000000000000000000000000000000
+  VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT =
+    0b0000000000000000000000000000000010000000000000000000000000000000
+  VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT =
+    0b0000000000000000000000000000000100000000000000000000000000000000
+  VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT =
+    0b0000000000000000000000000000001000000000000000000000000000000000
+  VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM =
+    0b0000000000000000000000000000010000000000000000000000000000000000
+  VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM =
+    0b0000000000000000000000000000100000000000000000000000000000000000
+  VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM =
+    0b0000000000000000000000000001000000000000000000000000000000000000
+  VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM =
+    0b0000000000000000000000000010000000000000000000000000000000000000
+  VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV =
+    0b0000000000000000000000000100000000000000000000000000000000000000
+  VK_FORMAT_FEATURE_2_RESERVED_39_BIT_EXT =
+    0b0000000000000000000000001000000000000000000000000000000000000000
+  VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV =
+    0b0000000000000000000000010000000000000000000000000000000000000000
+  VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV =
+    0b0000000000000000000000100000000000000000000000000000000000000000
+  VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV =
+    0b0000000000000000000001000000000000000000000000000000000000000000
+  VK_FORMAT_FEATURE_2_RESERVED_44_BIT_EXT =
+    0b0000000000000000000100000000000000000000000000000000000000000000
+  VK_FORMAT_FEATURE_2_RESERVED_45_BIT_EXT =
+    0b0000000000000000001000000000000000000000000000000000000000000000
+
 func toBits*(flags: openArray[VkFormatFeatureFlagBits2]): VkFormatFeatureFlags2 =
   for flag in flags:
     result = VkFormatFeatureFlags2(uint64(result) or uint64(flag))
@@ -4265,13 +5584,16 @@
   for value in VkFormatFeatureFlagBits2.items:
     if (cast[uint64](value) and uint64(number)) > 0:
       result.add value
-proc `==`*(a, b: VkFormatFeatureFlags2): bool = uint64(a) == uint64(b)
-type
-  VkRenderingFlagBits* {.size: sizeof(cint).} = enum
-    VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT = 0b00000000000000000000000000000001
-    VK_RENDERING_SUSPENDING_BIT = 0b00000000000000000000000000000010
-    VK_RENDERING_RESUMING_BIT = 0b00000000000000000000000000000100
-    VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 0b00000000000000000000000000001000
+proc `==`*(a, b: VkFormatFeatureFlags2): bool =
+  uint64(a) == uint64(b)
+
+type VkRenderingFlagBits* {.size: sizeof(cint).} = enum
+  VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT =
+    0b00000000000000000000000000000001
+  VK_RENDERING_SUSPENDING_BIT = 0b00000000000000000000000000000010
+  VK_RENDERING_RESUMING_BIT = 0b00000000000000000000000000000100
+  VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 0b00000000000000000000000000001000
+
 func toBits*(flags: openArray[VkRenderingFlagBits]): VkRenderingFlags =
   for flag in flags:
     result = VkRenderingFlags(uint(result) or uint(flag))
@@ -4279,119 +5601,194 @@
   for value in VkRenderingFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkRenderingFlags): bool = cint(a) == cint(b)
-type
-  VkVideoEncodeH265CapabilityFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0b00000000000000000000000000000001
-    VK_VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXT = 0b00000000000000000000000000000010
-    VK_VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXT = 0b00000000000000000000000000000100
-    VK_VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXT = 0b00000000000000000000000000001000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXT = 0b00000000000000000000000000010000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0b00000000000000000000000000100000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXT = 0b00000000000000000000000001000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT = 0b00000000000000000000000010000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXT = 0b00000000000000000000000100000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXT = 0b00000000000000000000001000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_DISABLED_BIT_EXT = 0b00000000000000000000010000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXT = 0b00000000000000000000100000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0b00000000000000000001000000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXT = 0b00000000000000000010000000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0b00000000000000000100000000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXT = 0b00000000000000001000000000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXT = 0b00000000000000010000000000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXT = 0b00000000000000100000000000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXT = 0b00000000000001000000000000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXT = 0b00000000000010000000000000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXT = 0b00000000000100000000000000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT = 0b00000000001000000000000000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT = 0b00000000010000000000000000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXT = 0b00000000100000000000000000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0b00000001000000000000000000000000
-    VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0b00000010000000000000000000000000
-func toBits*(flags: openArray[VkVideoEncodeH265CapabilityFlagBitsEXT]): VkVideoEncodeH265CapabilityFlagsEXT =
+proc `==`*(a, b: VkRenderingFlags): bool =
+  cint(a) == cint(b)
+
+type VkVideoEncodeH265CapabilityFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT =
+    0b00000000000000000000000000000001
+  VK_VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXT =
+    0b00000000000000000000000000000010
+  VK_VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXT =
+    0b00000000000000000000000000000100
+  VK_VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXT =
+    0b00000000000000000000000000001000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXT =
+    0b00000000000000000000000000010000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT =
+    0b00000000000000000000000000100000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXT =
+    0b00000000000000000000000001000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT =
+    0b00000000000000000000000010000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXT =
+    0b00000000000000000000000100000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXT =
+    0b00000000000000000000001000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_DISABLED_BIT_EXT =
+    0b00000000000000000000010000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXT =
+    0b00000000000000000000100000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXT =
+    0b00000000000000000001000000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXT =
+    0b00000000000000000010000000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT =
+    0b00000000000000000100000000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXT =
+    0b00000000000000001000000000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXT =
+    0b00000000000000010000000000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXT =
+    0b00000000000000100000000000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXT =
+    0b00000000000001000000000000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXT =
+    0b00000000000010000000000000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXT =
+    0b00000000000100000000000000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT =
+    0b00000000001000000000000000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT =
+    0b00000000010000000000000000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXT =
+    0b00000000100000000000000000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT =
+    0b00000001000000000000000000000000
+  VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT =
+    0b00000010000000000000000000000000
+
+func toBits*(
+    flags: openArray[VkVideoEncodeH265CapabilityFlagBitsEXT]
+): VkVideoEncodeH265CapabilityFlagsEXT =
   for flag in flags:
     result = VkVideoEncodeH265CapabilityFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkVideoEncodeH265CapabilityFlagsEXT): seq[VkVideoEncodeH265CapabilityFlagBitsEXT] =
+func toEnums*(
+    number: VkVideoEncodeH265CapabilityFlagsEXT
+): seq[VkVideoEncodeH265CapabilityFlagBitsEXT] =
   for value in VkVideoEncodeH265CapabilityFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoEncodeH265CapabilityFlagsEXT): bool = cint(a) == cint(b)
-type
-  VkVideoEncodeH265InputModeFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0b00000000000000000000000000000001
-    VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0b00000000000000000000000000000010
-    VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkVideoEncodeH265InputModeFlagBitsEXT]): VkVideoEncodeH265InputModeFlagsEXT =
+proc `==`*(a, b: VkVideoEncodeH265CapabilityFlagsEXT): bool =
+  cint(a) == cint(b)
+
+type VkVideoEncodeH265InputModeFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0b00000000000000000000000000000001
+  VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_BIT_EXT =
+    0b00000000000000000000000000000010
+  VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT = 0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkVideoEncodeH265InputModeFlagBitsEXT]
+): VkVideoEncodeH265InputModeFlagsEXT =
   for flag in flags:
     result = VkVideoEncodeH265InputModeFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkVideoEncodeH265InputModeFlagsEXT): seq[VkVideoEncodeH265InputModeFlagBitsEXT] =
+func toEnums*(
+    number: VkVideoEncodeH265InputModeFlagsEXT
+): seq[VkVideoEncodeH265InputModeFlagBitsEXT] =
   for value in VkVideoEncodeH265InputModeFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoEncodeH265InputModeFlagsEXT): bool = cint(a) == cint(b)
-type
-  VkVideoEncodeH265OutputModeFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0b00000000000000000000000000000001
-    VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0b00000000000000000000000000000010
-    VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkVideoEncodeH265OutputModeFlagBitsEXT]): VkVideoEncodeH265OutputModeFlagsEXT =
+proc `==`*(a, b: VkVideoEncodeH265InputModeFlagsEXT): bool =
+  cint(a) == cint(b)
+
+type VkVideoEncodeH265OutputModeFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0b00000000000000000000000000000001
+  VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_BIT_EXT =
+    0b00000000000000000000000000000010
+  VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkVideoEncodeH265OutputModeFlagBitsEXT]
+): VkVideoEncodeH265OutputModeFlagsEXT =
   for flag in flags:
     result = VkVideoEncodeH265OutputModeFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkVideoEncodeH265OutputModeFlagsEXT): seq[VkVideoEncodeH265OutputModeFlagBitsEXT] =
+func toEnums*(
+    number: VkVideoEncodeH265OutputModeFlagsEXT
+): seq[VkVideoEncodeH265OutputModeFlagBitsEXT] =
   for value in VkVideoEncodeH265OutputModeFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoEncodeH265OutputModeFlagsEXT): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkVideoEncodeH265OutputModeFlagsEXT): bool =
+  cint(a) == cint(b)
+
 type
   VkVideoEncodeH265RateControlStructureEXT* {.size: sizeof(cint).} = enum
     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0
     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_EXT = 1
     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_EXT = 2
+
   VkVideoEncodeH265CtbSizeFlagBitsEXT* {.size: sizeof(cint).} = enum
     VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0b00000000000000000000000000000001
     VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0b00000000000000000000000000000010
     VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkVideoEncodeH265CtbSizeFlagBitsEXT]): VkVideoEncodeH265CtbSizeFlagsEXT =
+
+func toBits*(
+    flags: openArray[VkVideoEncodeH265CtbSizeFlagBitsEXT]
+): VkVideoEncodeH265CtbSizeFlagsEXT =
   for flag in flags:
     result = VkVideoEncodeH265CtbSizeFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkVideoEncodeH265CtbSizeFlagsEXT): seq[VkVideoEncodeH265CtbSizeFlagBitsEXT] =
+func toEnums*(
+    number: VkVideoEncodeH265CtbSizeFlagsEXT
+): seq[VkVideoEncodeH265CtbSizeFlagBitsEXT] =
   for value in VkVideoEncodeH265CtbSizeFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoEncodeH265CtbSizeFlagsEXT): bool = cint(a) == cint(b)
-type
-  VkVideoEncodeH265TransformBlockSizeFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT = 0b00000000000000000000000000000001
-    VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT = 0b00000000000000000000000000000010
-    VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT = 0b00000000000000000000000000000100
-    VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT = 0b00000000000000000000000000001000
-func toBits*(flags: openArray[VkVideoEncodeH265TransformBlockSizeFlagBitsEXT]): VkVideoEncodeH265TransformBlockSizeFlagsEXT =
+proc `==`*(a, b: VkVideoEncodeH265CtbSizeFlagsEXT): bool =
+  cint(a) == cint(b)
+
+type VkVideoEncodeH265TransformBlockSizeFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT =
+    0b00000000000000000000000000000001
+  VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT =
+    0b00000000000000000000000000000010
+  VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT =
+    0b00000000000000000000000000000100
+  VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT =
+    0b00000000000000000000000000001000
+
+func toBits*(
+    flags: openArray[VkVideoEncodeH265TransformBlockSizeFlagBitsEXT]
+): VkVideoEncodeH265TransformBlockSizeFlagsEXT =
   for flag in flags:
     result = VkVideoEncodeH265TransformBlockSizeFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkVideoEncodeH265TransformBlockSizeFlagsEXT): seq[VkVideoEncodeH265TransformBlockSizeFlagBitsEXT] =
+func toEnums*(
+    number: VkVideoEncodeH265TransformBlockSizeFlagsEXT
+): seq[VkVideoEncodeH265TransformBlockSizeFlagBitsEXT] =
   for value in VkVideoEncodeH265TransformBlockSizeFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkVideoEncodeH265TransformBlockSizeFlagsEXT): bool = cint(a) == cint(b)
-type
-  VkExportMetalObjectTypeFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT = 0b00000000000000000000000000000001
-    VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT = 0b00000000000000000000000000000010
-    VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT = 0b00000000000000000000000000000100
-    VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT = 0b00000000000000000000000000001000
-    VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT = 0b00000000000000000000000000010000
-    VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT = 0b00000000000000000000000000100000
-func toBits*(flags: openArray[VkExportMetalObjectTypeFlagBitsEXT]): VkExportMetalObjectTypeFlagsEXT =
+proc `==`*(a, b: VkVideoEncodeH265TransformBlockSizeFlagsEXT): bool =
+  cint(a) == cint(b)
+
+type VkExportMetalObjectTypeFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT = 0b00000000000000000000000000000001
+  VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT =
+    0b00000000000000000000000000000010
+  VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT = 0b00000000000000000000000000000100
+  VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT = 0b00000000000000000000000000001000
+  VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT =
+    0b00000000000000000000000000010000
+  VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT =
+    0b00000000000000000000000000100000
+
+func toBits*(
+    flags: openArray[VkExportMetalObjectTypeFlagBitsEXT]
+): VkExportMetalObjectTypeFlagsEXT =
   for flag in flags:
     result = VkExportMetalObjectTypeFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkExportMetalObjectTypeFlagsEXT): seq[VkExportMetalObjectTypeFlagBitsEXT] =
+func toEnums*(
+    number: VkExportMetalObjectTypeFlagsEXT
+): seq[VkExportMetalObjectTypeFlagBitsEXT] =
   for value in VkExportMetalObjectTypeFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkExportMetalObjectTypeFlagsEXT): bool = cint(a) == cint(b)
-type
-  VkInstanceCreateFlagBits* {.size: sizeof(cint).} = enum
-    VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = 0b00000000000000000000000000000001
+proc `==`*(a, b: VkExportMetalObjectTypeFlagsEXT): bool =
+  cint(a) == cint(b)
+
+type VkInstanceCreateFlagBits* {.size: sizeof(cint).} = enum
+  VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = 0b00000000000000000000000000000001
+
 func toBits*(flags: openArray[VkInstanceCreateFlagBits]): VkInstanceCreateFlags =
   for flag in flags:
     result = VkInstanceCreateFlags(uint(result) or uint(flag))
@@ -4399,107 +5796,129 @@
   for value in VkInstanceCreateFlagBits.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkInstanceCreateFlags): bool = cint(a) == cint(b)
-type
-  VkImageCompressionFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 0b00000000000000000000000000000001
-    VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 0b00000000000000000000000000000010
-    VK_IMAGE_COMPRESSION_DISABLED_EXT = 0b00000000000000000000000000000100
-func toBits*(flags: openArray[VkImageCompressionFlagBitsEXT]): VkImageCompressionFlagsEXT =
+proc `==`*(a, b: VkInstanceCreateFlags): bool =
+  cint(a) == cint(b)
+
+type VkImageCompressionFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 0b00000000000000000000000000000001
+  VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 0b00000000000000000000000000000010
+  VK_IMAGE_COMPRESSION_DISABLED_EXT = 0b00000000000000000000000000000100
+
+func toBits*(
+    flags: openArray[VkImageCompressionFlagBitsEXT]
+): VkImageCompressionFlagsEXT =
   for flag in flags:
     result = VkImageCompressionFlagsEXT(uint(result) or uint(flag))
 func toEnums*(number: VkImageCompressionFlagsEXT): seq[VkImageCompressionFlagBitsEXT] =
   for value in VkImageCompressionFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkImageCompressionFlagsEXT): bool = cint(a) == cint(b)
-const
-  VK_IMAGE_COMPRESSION_DEFAULT_EXT* = 0
-type
-  VkImageCompressionFixedRateFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 0b00000000000000000000000000000001
-    VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 0b00000000000000000000000000000010
-    VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 0b00000000000000000000000000000100
-    VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 0b00000000000000000000000000001000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 0b00000000000000000000000000010000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 0b00000000000000000000000000100000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 0b00000000000000000000000001000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 0b00000000000000000000000010000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 0b00000000000000000000000100000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 0b00000000000000000000001000000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 0b00000000000000000000010000000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 0b00000000000000000000100000000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 0b00000000000000000001000000000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 0b00000000000000000010000000000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 0b00000000000000000100000000000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 0b00000000000000001000000000000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 0b00000000000000010000000000000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 0b00000000000000100000000000000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 0b00000000000001000000000000000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 0b00000000000010000000000000000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 0b00000000000100000000000000000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 0b00000000001000000000000000000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 0b00000000010000000000000000000000
-    VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 0b00000000100000000000000000000000
-func toBits*(flags: openArray[VkImageCompressionFixedRateFlagBitsEXT]): VkImageCompressionFixedRateFlagsEXT =
+proc `==`*(a, b: VkImageCompressionFlagsEXT): bool =
+  cint(a) == cint(b)
+
+const VK_IMAGE_COMPRESSION_DEFAULT_EXT* = 0
+type VkImageCompressionFixedRateFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 0b00000000000000000000000000000001
+  VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 0b00000000000000000000000000000010
+  VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 0b00000000000000000000000000000100
+  VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 0b00000000000000000000000000001000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 0b00000000000000000000000000010000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 0b00000000000000000000000000100000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 0b00000000000000000000000001000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 0b00000000000000000000000010000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 0b00000000000000000000000100000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 0b00000000000000000000001000000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 0b00000000000000000000010000000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 0b00000000000000000000100000000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 0b00000000000000000001000000000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 0b00000000000000000010000000000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 0b00000000000000000100000000000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 0b00000000000000001000000000000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 0b00000000000000010000000000000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 0b00000000000000100000000000000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 0b00000000000001000000000000000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 0b00000000000010000000000000000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 0b00000000000100000000000000000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 0b00000000001000000000000000000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 0b00000000010000000000000000000000
+  VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 0b00000000100000000000000000000000
+
+func toBits*(
+    flags: openArray[VkImageCompressionFixedRateFlagBitsEXT]
+): VkImageCompressionFixedRateFlagsEXT =
   for flag in flags:
     result = VkImageCompressionFixedRateFlagsEXT(uint(result) or uint(flag))
-func toEnums*(number: VkImageCompressionFixedRateFlagsEXT): seq[VkImageCompressionFixedRateFlagBitsEXT] =
+func toEnums*(
+    number: VkImageCompressionFixedRateFlagsEXT
+): seq[VkImageCompressionFixedRateFlagBitsEXT] =
   for value in VkImageCompressionFixedRateFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkImageCompressionFixedRateFlagsEXT): bool = cint(a) == cint(b)
-const
-  VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT* = 0
+proc `==`*(a, b: VkImageCompressionFixedRateFlagsEXT): bool =
+  cint(a) == cint(b)
+
+const VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT* = 0
 type
   VkPipelineRobustnessBufferBehaviorEXT* {.size: sizeof(cint).} = enum
     VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0
     VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1
     VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2
     VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3
+
   VkPipelineRobustnessImageBehaviorEXT* {.size: sizeof(cint).} = enum
     VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0
     VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1
     VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2
     VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3
+
   VkOpticalFlowGridSizeFlagBitsNV* {.size: sizeof(cint).} = enum
     VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 0b00000000000000000000000000000001
     VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 0b00000000000000000000000000000010
     VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 0b00000000000000000000000000000100
     VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 0b00000000000000000000000000001000
-func toBits*(flags: openArray[VkOpticalFlowGridSizeFlagBitsNV]): VkOpticalFlowGridSizeFlagsNV =
+
+func toBits*(
+    flags: openArray[VkOpticalFlowGridSizeFlagBitsNV]
+): VkOpticalFlowGridSizeFlagsNV =
   for flag in flags:
     result = VkOpticalFlowGridSizeFlagsNV(uint(result) or uint(flag))
-func toEnums*(number: VkOpticalFlowGridSizeFlagsNV): seq[VkOpticalFlowGridSizeFlagBitsNV] =
+func toEnums*(
+    number: VkOpticalFlowGridSizeFlagsNV
+): seq[VkOpticalFlowGridSizeFlagBitsNV] =
   for value in VkOpticalFlowGridSizeFlagBitsNV.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkOpticalFlowGridSizeFlagsNV): bool = cint(a) == cint(b)
-const
-  VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV* = 0
-type
-  VkOpticalFlowUsageFlagBitsNV* {.size: sizeof(cint).} = enum
-    VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 0b00000000000000000000000000000001
-    VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 0b00000000000000000000000000000010
-    VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 0b00000000000000000000000000000100
-    VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 0b00000000000000000000000000001000
-    VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 0b00000000000000000000000000010000
-func toBits*(flags: openArray[VkOpticalFlowUsageFlagBitsNV]): VkOpticalFlowUsageFlagsNV =
+proc `==`*(a, b: VkOpticalFlowGridSizeFlagsNV): bool =
+  cint(a) == cint(b)
+
+const VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV* = 0
+type VkOpticalFlowUsageFlagBitsNV* {.size: sizeof(cint).} = enum
+  VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 0b00000000000000000000000000000001
+  VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 0b00000000000000000000000000000010
+  VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 0b00000000000000000000000000000100
+  VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 0b00000000000000000000000000001000
+  VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 0b00000000000000000000000000010000
+
+func toBits*(
+    flags: openArray[VkOpticalFlowUsageFlagBitsNV]
+): VkOpticalFlowUsageFlagsNV =
   for flag in flags:
     result = VkOpticalFlowUsageFlagsNV(uint(result) or uint(flag))
 func toEnums*(number: VkOpticalFlowUsageFlagsNV): seq[VkOpticalFlowUsageFlagBitsNV] =
   for value in VkOpticalFlowUsageFlagBitsNV.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkOpticalFlowUsageFlagsNV): bool = cint(a) == cint(b)
-const
-  VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV* = 0
+proc `==`*(a, b: VkOpticalFlowUsageFlagsNV): bool =
+  cint(a) == cint(b)
+
+const VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV* = 0
 type
   VkOpticalFlowPerformanceLevelNV* {.size: sizeof(cint).} = enum
     VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0
     VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1
     VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2
     VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3
+
   VkOpticalFlowSessionBindingPointNV* {.size: sizeof(cint).} = enum
     VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0
     VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1
@@ -4510,38 +5929,60 @@
     VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6
     VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7
     VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8
+
   VkOpticalFlowSessionCreateFlagBitsNV* {.size: sizeof(cint).} = enum
-    VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 0b00000000000000000000000000000001
-    VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 0b00000000000000000000000000000010
-    VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 0b00000000000000000000000000000100
-    VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 0b00000000000000000000000000001000
-    VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 0b00000000000000000000000000010000
-func toBits*(flags: openArray[VkOpticalFlowSessionCreateFlagBitsNV]): VkOpticalFlowSessionCreateFlagsNV =
+    VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV =
+      0b00000000000000000000000000000001
+    VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV =
+      0b00000000000000000000000000000010
+    VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV =
+      0b00000000000000000000000000000100
+    VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV =
+      0b00000000000000000000000000001000
+    VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV =
+      0b00000000000000000000000000010000
+
+func toBits*(
+    flags: openArray[VkOpticalFlowSessionCreateFlagBitsNV]
+): VkOpticalFlowSessionCreateFlagsNV =
   for flag in flags:
     result = VkOpticalFlowSessionCreateFlagsNV(uint(result) or uint(flag))
-func toEnums*(number: VkOpticalFlowSessionCreateFlagsNV): seq[VkOpticalFlowSessionCreateFlagBitsNV] =
+func toEnums*(
+    number: VkOpticalFlowSessionCreateFlagsNV
+): seq[VkOpticalFlowSessionCreateFlagBitsNV] =
   for value in VkOpticalFlowSessionCreateFlagBitsNV.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkOpticalFlowSessionCreateFlagsNV): bool = cint(a) == cint(b)
-type
-  VkOpticalFlowExecuteFlagBitsNV* {.size: sizeof(cint).} = enum
-    VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 0b00000000000000000000000000000001
-func toBits*(flags: openArray[VkOpticalFlowExecuteFlagBitsNV]): VkOpticalFlowExecuteFlagsNV =
+proc `==`*(a, b: VkOpticalFlowSessionCreateFlagsNV): bool =
+  cint(a) == cint(b)
+
+type VkOpticalFlowExecuteFlagBitsNV* {.size: sizeof(cint).} = enum
+  VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV =
+    0b00000000000000000000000000000001
+
+func toBits*(
+    flags: openArray[VkOpticalFlowExecuteFlagBitsNV]
+): VkOpticalFlowExecuteFlagsNV =
   for flag in flags:
     result = VkOpticalFlowExecuteFlagsNV(uint(result) or uint(flag))
-func toEnums*(number: VkOpticalFlowExecuteFlagsNV): seq[VkOpticalFlowExecuteFlagBitsNV] =
+func toEnums*(
+    number: VkOpticalFlowExecuteFlagsNV
+): seq[VkOpticalFlowExecuteFlagBitsNV] =
   for value in VkOpticalFlowExecuteFlagBitsNV.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkOpticalFlowExecuteFlagsNV): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkOpticalFlowExecuteFlagsNV): bool =
+  cint(a) == cint(b)
+
 type
   VkMicromapTypeEXT* {.size: sizeof(cint).} = enum
     VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0
+
   VkBuildMicromapFlagBitsEXT* {.size: sizeof(cint).} = enum
     VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 0b00000000000000000000000000000001
     VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 0b00000000000000000000000000000010
     VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 0b00000000000000000000000000000100
+
 func toBits*(flags: openArray[VkBuildMicromapFlagBitsEXT]): VkBuildMicromapFlagsEXT =
   for flag in flags:
     result = VkBuildMicromapFlagsEXT(uint(result) or uint(flag))
@@ -4549,10 +5990,13 @@
   for value in VkBuildMicromapFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkBuildMicromapFlagsEXT): bool = cint(a) == cint(b)
-type
-  VkMicromapCreateFlagBitsEXT* {.size: sizeof(cint).} = enum
-    VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 0b00000000000000000000000000000001
+proc `==`*(a, b: VkBuildMicromapFlagsEXT): bool =
+  cint(a) == cint(b)
+
+type VkMicromapCreateFlagBitsEXT* {.size: sizeof(cint).} = enum
+  VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT =
+    0b00000000000000000000000000000001
+
 func toBits*(flags: openArray[VkMicromapCreateFlagBitsEXT]): VkMicromapCreateFlagsEXT =
   for flag in flags:
     result = VkMicromapCreateFlagsEXT(uint(result) or uint(flag))
@@ -4560,23 +6004,29 @@
   for value in VkMicromapCreateFlagBitsEXT.items:
     if (value.ord and cint(number)) > 0:
       result.add value
-proc `==`*(a, b: VkMicromapCreateFlagsEXT): bool = cint(a) == cint(b)
+proc `==`*(a, b: VkMicromapCreateFlagsEXT): bool =
+  cint(a) == cint(b)
+
 type
   VkCopyMicromapModeEXT* {.size: sizeof(cint).} = enum
     VK_COPY_MICROMAP_MODE_CLONE_EXT = 0
     VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1
     VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2
     VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3
+
   VkBuildMicromapModeEXT* {.size: sizeof(cint).} = enum
     VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0
+
   VkOpacityMicromapFormatEXT* {.size: sizeof(cint).} = enum
     VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1
     VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2
+
   VkOpacityMicromapSpecialIndexEXT* {.size: sizeof(cint).} = enum
     VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4
     VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3
     VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2
     VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1
+
   VkDeviceFaultAddressTypeEXT* {.size: sizeof(cint).} = enum
     VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0
     VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1
@@ -4585,131 +6035,379 @@
     VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4
     VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5
     VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6
+
   VkDeviceFaultVendorBinaryHeaderVersionEXT* {.size: sizeof(cint).} = enum
     VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT_ENUM = 1
-proc `$`*(bitset: VkFramebufferCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkRenderPassCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkSamplerCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkPipelineCacheCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkPipelineShaderStageCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkDescriptorSetLayoutCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkInstanceCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkDeviceQueueCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkBufferCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkBufferUsageFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkColorComponentFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkCommandPoolCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkCommandPoolResetFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkCommandBufferResetFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkCommandBufferUsageFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkCullModeFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkFenceCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkFormatFeatureFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkImageAspectFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkImageCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkImageUsageFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkImageViewCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkMemoryHeapFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkAccessFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkMemoryPropertyFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkPipelineCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkQueryControlFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkQueryPipelineStatisticFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkQueryResultFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkQueueFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkShaderStageFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkSparseMemoryBindFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkStencilFaceFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkPipelineStageFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkSparseImageFormatFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkSampleCountFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkAttachmentDescriptionFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkDescriptorPoolCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkDependencyFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkEventCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkPipelineLayoutCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkIndirectCommandsLayoutUsageFlagsNV): string = $toEnums(bitset)
-proc `$`*(bitset: VkIndirectStateFlagsNV): string = $toEnums(bitset)
-proc `$`*(bitset: VkPrivateDataSlotCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkSubpassDescriptionFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkResolveModeFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkDescriptorBindingFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkConditionalRenderingFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkGeometryFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkGeometryInstanceFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkBuildAccelerationStructureFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkAccelerationStructureCreateFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkDeviceDiagnosticsConfigFlagsNV): string = $toEnums(bitset)
-proc `$`*(bitset: VkPipelineCreationFeedbackFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkPerformanceCounterDescriptionFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkSemaphoreWaitFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkToolPurposeFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkAccessFlags2): string = $toEnums(bitset)
-proc `$`*(bitset: VkPipelineStageFlags2): string = $toEnums(bitset)
-proc `$`*(bitset: VkImageConstraintsInfoFlagsFUCHSIA): string = $toEnums(bitset)
-proc `$`*(bitset: VkFormatFeatureFlags2): string = $toEnums(bitset)
-proc `$`*(bitset: VkRenderingFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkPipelineDepthStencilStateCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkPipelineColorBlendStateCreateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkImageCompressionFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkImageCompressionFixedRateFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkExportMetalObjectTypeFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkDeviceAddressBindingFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkBuildMicromapFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkMicromapCreateFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkMemoryDecompressionMethodFlagsNV): string = $toEnums(bitset)
-proc `$`*(bitset: VkCompositeAlphaFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkDisplayPlaneAlphaFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkSurfaceTransformFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkDebugReportFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkExternalMemoryHandleTypeFlagsNV): string = $toEnums(bitset)
-proc `$`*(bitset: VkExternalMemoryFeatureFlagsNV): string = $toEnums(bitset)
-proc `$`*(bitset: VkExternalMemoryHandleTypeFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkExternalMemoryFeatureFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkExternalSemaphoreHandleTypeFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkExternalSemaphoreFeatureFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkSemaphoreImportFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkExternalFenceHandleTypeFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkExternalFenceFeatureFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkFenceImportFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkSurfaceCounterFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkPeerMemoryFeatureFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkMemoryAllocateFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkDeviceGroupPresentModeFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkSwapchainCreateFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkSubgroupFeatureFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkDebugUtilsMessageSeverityFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkDebugUtilsMessageTypeFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkSwapchainImageUsageFlagsANDROID): string = $toEnums(bitset)
-proc `$`*(bitset: VkSubmitFlags): string = $toEnums(bitset)
-proc `$`*(bitset: VkGraphicsPipelineLibraryFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkOpticalFlowGridSizeFlagsNV): string = $toEnums(bitset)
-proc `$`*(bitset: VkOpticalFlowUsageFlagsNV): string = $toEnums(bitset)
-proc `$`*(bitset: VkOpticalFlowSessionCreateFlagsNV): string = $toEnums(bitset)
-proc `$`*(bitset: VkOpticalFlowExecuteFlagsNV): string = $toEnums(bitset)
-proc `$`*(bitset: VkPresentScalingFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkPresentGravityFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoCodecOperationFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoChromaSubsamplingFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoComponentBitDepthFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoCapabilityFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoSessionCreateFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoCodingControlFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoDecodeUsageFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoDecodeCapabilityFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoDecodeH264PictureLayoutFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoEncodeUsageFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoEncodeContentFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoEncodeCapabilityFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoEncodeRateControlModeFlagsKHR): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoEncodeH264CapabilityFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoEncodeH264InputModeFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoEncodeH264OutputModeFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoEncodeH265CapabilityFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoEncodeH265InputModeFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoEncodeH265OutputModeFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoEncodeH265CtbSizeFlagsEXT): string = $toEnums(bitset)
-proc `$`*(bitset: VkVideoEncodeH265TransformBlockSizeFlagsEXT): string = $toEnums(bitset)
+
+proc `$`*(bitset: VkFramebufferCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkRenderPassCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkSamplerCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkPipelineCacheCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkPipelineShaderStageCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkDescriptorSetLayoutCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkInstanceCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkDeviceQueueCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkBufferCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkBufferUsageFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkColorComponentFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkCommandPoolCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkCommandPoolResetFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkCommandBufferResetFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkCommandBufferUsageFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkCullModeFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkFenceCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkFormatFeatureFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkImageAspectFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkImageCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkImageUsageFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkImageViewCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkMemoryHeapFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkAccessFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkMemoryPropertyFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkPipelineCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkQueryControlFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkQueryPipelineStatisticFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkQueryResultFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkQueueFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkShaderStageFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkSparseMemoryBindFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkStencilFaceFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkPipelineStageFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkSparseImageFormatFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkSampleCountFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkAttachmentDescriptionFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkDescriptorPoolCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkDependencyFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkEventCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkPipelineLayoutCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkIndirectCommandsLayoutUsageFlagsNV): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkIndirectStateFlagsNV): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkPrivateDataSlotCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkSubpassDescriptionFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkResolveModeFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkDescriptorBindingFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkConditionalRenderingFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkGeometryFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkGeometryInstanceFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkBuildAccelerationStructureFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkAccelerationStructureCreateFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkDeviceDiagnosticsConfigFlagsNV): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkPipelineCreationFeedbackFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkPerformanceCounterDescriptionFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkSemaphoreWaitFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkToolPurposeFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkAccessFlags2): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkPipelineStageFlags2): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkImageConstraintsInfoFlagsFUCHSIA): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkFormatFeatureFlags2): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkRenderingFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkPipelineDepthStencilStateCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkPipelineColorBlendStateCreateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkImageCompressionFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkImageCompressionFixedRateFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkExportMetalObjectTypeFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkDeviceAddressBindingFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkBuildMicromapFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkMicromapCreateFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkMemoryDecompressionMethodFlagsNV): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkCompositeAlphaFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkDisplayPlaneAlphaFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkSurfaceTransformFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkDebugReportFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkExternalMemoryHandleTypeFlagsNV): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkExternalMemoryFeatureFlagsNV): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkExternalMemoryHandleTypeFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkExternalMemoryFeatureFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkExternalSemaphoreHandleTypeFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkExternalSemaphoreFeatureFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkSemaphoreImportFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkExternalFenceHandleTypeFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkExternalFenceFeatureFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkFenceImportFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkSurfaceCounterFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkPeerMemoryFeatureFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkMemoryAllocateFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkDeviceGroupPresentModeFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkSwapchainCreateFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkSubgroupFeatureFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkDebugUtilsMessageSeverityFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkDebugUtilsMessageTypeFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkSwapchainImageUsageFlagsANDROID): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkSubmitFlags): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkGraphicsPipelineLibraryFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkOpticalFlowGridSizeFlagsNV): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkOpticalFlowUsageFlagsNV): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkOpticalFlowSessionCreateFlagsNV): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkOpticalFlowExecuteFlagsNV): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkPresentScalingFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkPresentGravityFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoCodecOperationFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoChromaSubsamplingFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoComponentBitDepthFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoCapabilityFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoSessionCreateFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoCodingControlFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoDecodeUsageFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoDecodeCapabilityFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoDecodeH264PictureLayoutFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoEncodeUsageFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoEncodeContentFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoEncodeCapabilityFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoEncodeRateControlModeFlagsKHR): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoEncodeH264CapabilityFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoEncodeH264InputModeFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoEncodeH264OutputModeFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoEncodeH265CapabilityFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoEncodeH265InputModeFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoEncodeH265OutputModeFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoEncodeH265CtbSizeFlagsEXT): string =
+  $toEnums(bitset)
+
+proc `$`*(bitset: VkVideoEncodeH265TransformBlockSizeFlagsEXT): string =
+  $toEnums(bitset)
+
 type
   VkGeometryFlagsNV* = VkGeometryFlagsKHR
   VkGeometryInstanceFlagsNV* = VkGeometryInstanceFlagsKHR
@@ -4776,38 +6474,85 @@
   VkShaderFloatControlsIndependenceKHR* = VkShaderFloatControlsIndependence
   VkSubmitFlagBitsKHR* = VkSubmitFlagBits
   VkDriverIdKHR* = VkDriverId
+
 type
-  PFN_vkInternalAllocationNotification* = proc(pUserData: pointer, size: csize_t, allocationType: VkInternalAllocationType, allocationScope: VkSystemAllocationScope): void {.cdecl.}
-  PFN_vkInternalFreeNotification* = proc(pUserData: pointer, size: csize_t, allocationType: VkInternalAllocationType, allocationScope: VkSystemAllocationScope): void {.cdecl.}
-  PFN_vkReallocationFunction* = proc(pUserData: pointer, pOriginal: pointer, size: csize_t, alignment: csize_t, allocationScope: VkSystemAllocationScope): pointer {.cdecl.}
-  PFN_vkAllocationFunction* = proc(pUserData: pointer, size: csize_t, alignment: csize_t, allocationScope: VkSystemAllocationScope): pointer {.cdecl.}
+  PFN_vkInternalAllocationNotification* = proc(
+    pUserData: pointer,
+    size: csize_t,
+    allocationType: VkInternalAllocationType,
+    allocationScope: VkSystemAllocationScope,
+  ): void {.cdecl.}
+  PFN_vkInternalFreeNotification* = proc(
+    pUserData: pointer,
+    size: csize_t,
+    allocationType: VkInternalAllocationType,
+    allocationScope: VkSystemAllocationScope,
+  ): void {.cdecl.}
+  PFN_vkReallocationFunction* = proc(
+    pUserData: pointer,
+    pOriginal: pointer,
+    size: csize_t,
+    alignment: csize_t,
+    allocationScope: VkSystemAllocationScope,
+  ): pointer {.cdecl.}
+  PFN_vkAllocationFunction* = proc(
+    pUserData: pointer,
+    size: csize_t,
+    alignment: csize_t,
+    allocationScope: VkSystemAllocationScope,
+  ): pointer {.cdecl.}
   PFN_vkFreeFunction* = proc(pUserData: pointer, pMemory: pointer): void {.cdecl.}
   PFN_vkVoidFunction* = proc(): void {.cdecl.}
-  PFN_vkDebugReportCallbackEXT* = proc(flags: VkDebugReportFlagsEXT, objectType: VkDebugReportObjectTypeEXT, theobject: uint64, location: csize_t, messageCode: int32, pLayerPrefix: cstring, pMessage: cstring, pUserData: pointer): VkBool32 {.cdecl.}
-  PFN_vkDebugUtilsMessengerCallbackEXT* = proc(messageSeverity: VkDebugUtilsMessageSeverityFlagBitsEXT, messageTypes: VkDebugUtilsMessageTypeFlagsEXT, pCallbackData: ptr VkDebugUtilsMessengerCallbackDataEXT, pUserData: pointer): VkBool32 {.cdecl.}
-  PFN_vkFaultCallbackFunction* = proc(unrecordedFaults: VkBool32, faultCount: uint32, pFaults: ptr VkFaultData): void {.cdecl.}
-  PFN_vkDeviceMemoryReportCallbackEXT* = proc(pCallbackData: ptr VkDeviceMemoryReportCallbackDataEXT, pUserData: pointer): void {.cdecl.}
-  PFN_vkGetInstanceProcAddrLUNARG* = proc(instance: VkInstance, pName: cstring): PFN_vkVoidFunction {.cdecl.}
+  PFN_vkDebugReportCallbackEXT* = proc(
+    flags: VkDebugReportFlagsEXT,
+    objectType: VkDebugReportObjectTypeEXT,
+    theobject: uint64,
+    location: csize_t,
+    messageCode: int32,
+    pLayerPrefix: cstring,
+    pMessage: cstring,
+    pUserData: pointer,
+  ): VkBool32 {.cdecl.}
+  PFN_vkDebugUtilsMessengerCallbackEXT* = proc(
+    messageSeverity: VkDebugUtilsMessageSeverityFlagBitsEXT,
+    messageTypes: VkDebugUtilsMessageTypeFlagsEXT,
+    pCallbackData: ptr VkDebugUtilsMessengerCallbackDataEXT,
+    pUserData: pointer,
+  ): VkBool32 {.cdecl.}
+  PFN_vkFaultCallbackFunction* = proc(
+    unrecordedFaults: VkBool32, faultCount: uint32, pFaults: ptr VkFaultData
+  ): void {.cdecl.}
+  PFN_vkDeviceMemoryReportCallbackEXT* = proc(
+    pCallbackData: ptr VkDeviceMemoryReportCallbackDataEXT, pUserData: pointer
+  ): void {.cdecl.}
+  PFN_vkGetInstanceProcAddrLUNARG* =
+    proc(instance: VkInstance, pName: cstring): PFN_vkVoidFunction {.cdecl.}
   VkBaseOutStructure* = object
     sType*: VkStructureType
     pNext*: ptr VkBaseOutStructure
+
   VkBaseInStructure* = object
     sType*: VkStructureType
     pNext*: ptr VkBaseInStructure
+
   VkOffset2D* = object
     x*: int32
     y*: int32
+
   VkOffset3D* = object
     x*: int32
     y*: int32
     z*: int32
+
   VkExtent2D* = object
     width*: uint32
     height*: uint32
+
   VkExtent3D* = object
     width*: uint32
     height*: uint32
     depth*: uint32
+
   VkViewport* = object
     x*: float32
     y*: float32
@@ -4815,18 +6560,22 @@
     height*: float32
     minDepth*: float32
     maxDepth*: float32
+
   VkRect2D* = object
     offset*: VkOffset2D
     extent*: VkExtent2D
+
   VkClearRect* = object
     rect*: VkRect2D
     baseArrayLayer*: uint32
     layerCount*: uint32
+
   VkComponentMapping* = object
     r*: VkComponentSwizzle
     g*: VkComponentSwizzle
     b*: VkComponentSwizzle
     a*: VkComponentSwizzle
+
   VkPhysicalDeviceProperties* = object
     apiVersion*: uint32
     driverVersion*: uint32
@@ -4837,14 +6586,17 @@
     pipelineCacheUUID*: array[VK_UUID_SIZE, uint8]
     limits*: VkPhysicalDeviceLimits
     sparseProperties*: VkPhysicalDeviceSparseProperties
+
   VkExtensionProperties* = object
     extensionName*: array[VK_MAX_EXTENSION_NAME_SIZE, char]
     specVersion*: uint32
+
   VkLayerProperties* = object
     layerName*: array[VK_MAX_EXTENSION_NAME_SIZE, char]
     specVersion*: uint32
     implementationVersion*: uint32
     description*: array[VK_MAX_DESCRIPTION_SIZE, char]
+
   VkApplicationInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -4853,6 +6605,7 @@
     pEngineName*: cstring
     engineVersion*: uint32
     apiVersion*: uint32
+
   VkAllocationCallbacks* = object
     pUserData*: pointer
     pfnAllocation*: PFN_vkAllocationFunction
@@ -4860,6 +6613,7 @@
     pfnFree*: PFN_vkFreeFunction
     pfnInternalAllocation*: PFN_vkInternalAllocationNotification
     pfnInternalFree*: PFN_vkInternalFreeNotification
+
   VkDeviceQueueCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -4867,6 +6621,7 @@
     queueFamilyIndex*: uint32
     queueCount*: uint32
     pQueuePriorities*: ptr float32
+
   VkDeviceCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -4878,6 +6633,7 @@
     enabledExtensionCount*: uint32
     ppEnabledExtensionNames*: cstringArray
     pEnabledFeatures*: ptr VkPhysicalDeviceFeatures
+
   VkInstanceCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -4887,65 +6643,79 @@
     ppEnabledLayerNames*: cstringArray
     enabledExtensionCount*: uint32
     ppEnabledExtensionNames*: cstringArray
+
   VkQueueFamilyProperties* = object
     queueFlags*: VkQueueFlags
     queueCount*: uint32
     timestampValidBits*: uint32
     minImageTransferGranularity*: VkExtent3D
+
   VkPhysicalDeviceMemoryProperties* = object
     memoryTypeCount*: uint32
     memoryTypes*: array[VK_MAX_MEMORY_TYPES, VkMemoryType]
     memoryHeapCount*: uint32
     memoryHeaps*: array[VK_MAX_MEMORY_HEAPS, VkMemoryHeap]
+
   VkMemoryAllocateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     allocationSize*: VkDeviceSize
     memoryTypeIndex*: uint32
+
   VkMemoryRequirements* = object
     size*: VkDeviceSize
     alignment*: VkDeviceSize
     memoryTypeBits*: uint32
+
   VkSparseImageFormatProperties* = object
     aspectMask*: VkImageAspectFlags
     imageGranularity*: VkExtent3D
     flags*: VkSparseImageFormatFlags
+
   VkSparseImageMemoryRequirements* = object
     formatProperties*: VkSparseImageFormatProperties
     imageMipTailFirstLod*: uint32
     imageMipTailSize*: VkDeviceSize
     imageMipTailOffset*: VkDeviceSize
     imageMipTailStride*: VkDeviceSize
+
   VkMemoryType* = object
     propertyFlags*: VkMemoryPropertyFlags
     heapIndex*: uint32
+
   VkMemoryHeap* = object
     size*: VkDeviceSize
     flags*: VkMemoryHeapFlags
+
   VkMappedMemoryRange* = object
     sType*: VkStructureType
     pNext*: pointer
     memory*: VkDeviceMemory
     offset*: VkDeviceSize
     size*: VkDeviceSize
+
   VkFormatProperties* = object
     linearTilingFeatures*: VkFormatFeatureFlags
     optimalTilingFeatures*: VkFormatFeatureFlags
     bufferFeatures*: VkFormatFeatureFlags
+
   VkImageFormatProperties* = object
     maxExtent*: VkExtent3D
     maxMipLevels*: uint32
     maxArrayLayers*: uint32
     sampleCounts*: VkSampleCountFlags
     maxResourceSize*: VkDeviceSize
+
   VkDescriptorBufferInfo* = object
     buffer*: VkBuffer
     offset*: VkDeviceSize
     range*: VkDeviceSize
+
   VkDescriptorImageInfo* = object
     sampler*: VkSampler
     imageView*: VkImageView
     imageLayout*: VkImageLayout
+
   VkWriteDescriptorSet* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -4957,6 +6727,7 @@
     pImageInfo*: ptr VkDescriptorImageInfo
     pBufferInfo*: ptr VkDescriptorBufferInfo
     pTexelBufferView*: ptr VkBufferView
+
   VkCopyDescriptorSet* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -4967,6 +6738,7 @@
     dstBinding*: uint32
     dstArrayElement*: uint32
     descriptorCount*: uint32
+
   VkBufferCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -4976,6 +6748,7 @@
     sharingMode*: VkSharingMode
     queueFamilyIndexCount*: uint32
     pQueueFamilyIndices*: ptr uint32
+
   VkBufferViewCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -4984,26 +6757,31 @@
     format*: VkFormat
     offset*: VkDeviceSize
     range*: VkDeviceSize
+
   VkImageSubresource* = object
     aspectMask*: VkImageAspectFlags
     mipLevel*: uint32
     arrayLayer*: uint32
+
   VkImageSubresourceLayers* = object
     aspectMask*: VkImageAspectFlags
     mipLevel*: uint32
     baseArrayLayer*: uint32
     layerCount*: uint32
+
   VkImageSubresourceRange* = object
     aspectMask*: VkImageAspectFlags
     baseMipLevel*: uint32
     levelCount*: uint32
     baseArrayLayer*: uint32
     layerCount*: uint32
+
   VkMemoryBarrier* = object
     sType*: VkStructureType
     pNext*: pointer
     srcAccessMask*: VkAccessFlags
     dstAccessMask*: VkAccessFlags
+
   VkBufferMemoryBarrier* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5014,6 +6792,7 @@
     buffer*: VkBuffer
     offset*: VkDeviceSize
     size*: VkDeviceSize
+
   VkImageMemoryBarrier* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5025,6 +6804,7 @@
     dstQueueFamilyIndex*: uint32
     image*: VkImage
     subresourceRange*: VkImageSubresourceRange
+
   VkImageCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5041,12 +6821,14 @@
     queueFamilyIndexCount*: uint32
     pQueueFamilyIndices*: ptr uint32
     initialLayout*: VkImageLayout
+
   VkSubresourceLayout* = object
     offset*: VkDeviceSize
     size*: VkDeviceSize
     rowPitch*: VkDeviceSize
     arrayPitch*: VkDeviceSize
     depthPitch*: VkDeviceSize
+
   VkImageViewCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5056,16 +6838,19 @@
     format*: VkFormat
     components*: VkComponentMapping
     subresourceRange*: VkImageSubresourceRange
+
   VkBufferCopy* = object
     srcOffset*: VkDeviceSize
     dstOffset*: VkDeviceSize
     size*: VkDeviceSize
+
   VkSparseMemoryBind* = object
     resourceOffset*: VkDeviceSize
     size*: VkDeviceSize
     memory*: VkDeviceMemory
     memoryOffset*: VkDeviceSize
     flags*: VkSparseMemoryBindFlags
+
   VkSparseImageMemoryBind* = object
     subresource*: VkImageSubresource
     offset*: VkOffset3D
@@ -5073,18 +6858,22 @@
     memory*: VkDeviceMemory
     memoryOffset*: VkDeviceSize
     flags*: VkSparseMemoryBindFlags
+
   VkSparseBufferMemoryBindInfo* = object
     buffer*: VkBuffer
     bindCount*: uint32
     pBinds*: ptr VkSparseMemoryBind
+
   VkSparseImageOpaqueMemoryBindInfo* = object
     image*: VkImage
     bindCount*: uint32
     pBinds*: ptr VkSparseMemoryBind
+
   VkSparseImageMemoryBindInfo* = object
     image*: VkImage
     bindCount*: uint32
     pBinds*: ptr VkSparseImageMemoryBind
+
   VkBindSparseInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5098,17 +6887,20 @@
     pImageBinds*: ptr VkSparseImageMemoryBindInfo
     signalSemaphoreCount*: uint32
     pSignalSemaphores*: ptr VkSemaphore
+
   VkImageCopy* = object
     srcSubresource*: VkImageSubresourceLayers
     srcOffset*: VkOffset3D
     dstSubresource*: VkImageSubresourceLayers
     dstOffset*: VkOffset3D
     extent*: VkExtent3D
+
   VkImageBlit* = object
     srcSubresource*: VkImageSubresourceLayers
     srcOffsets*: array[2, VkOffset3D]
     dstSubresource*: VkImageSubresourceLayers
     dstOffsets*: array[2, VkOffset3D]
+
   VkBufferImageCopy* = object
     bufferOffset*: VkDeviceSize
     bufferRowLength*: uint32
@@ -5116,10 +6908,12 @@
     imageSubresource*: VkImageSubresourceLayers
     imageOffset*: VkOffset3D
     imageExtent*: VkExtent3D
+
   VkCopyMemoryIndirectCommandNV* = object
     srcAddress*: VkDeviceAddress
     dstAddress*: VkDeviceAddress
     size*: VkDeviceSize
+
   VkCopyMemoryToImageIndirectCommandNV* = object
     srcAddress*: VkDeviceAddress
     bufferRowLength*: uint32
@@ -5127,33 +6921,39 @@
     imageSubresource*: VkImageSubresourceLayers
     imageOffset*: VkOffset3D
     imageExtent*: VkExtent3D
+
   VkImageResolve* = object
     srcSubresource*: VkImageSubresourceLayers
     srcOffset*: VkOffset3D
     dstSubresource*: VkImageSubresourceLayers
     dstOffset*: VkOffset3D
     extent*: VkExtent3D
+
   VkShaderModuleCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkShaderModuleCreateFlags
     codeSize*: csize_t
     pCode*: ptr uint32
+
   VkDescriptorSetLayoutBinding* = object
     binding*: uint32
     descriptorType*: VkDescriptorType
     descriptorCount*: uint32
     stageFlags*: VkShaderStageFlags
     pImmutableSamplers*: ptr VkSampler
+
   VkDescriptorSetLayoutCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkDescriptorSetLayoutCreateFlags
     bindingCount*: uint32
     pBindings*: ptr VkDescriptorSetLayoutBinding
+
   VkDescriptorPoolSize* = object
     thetype*: VkDescriptorType
     descriptorCount*: uint32
+
   VkDescriptorPoolCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5161,21 +6961,25 @@
     maxSets*: uint32
     poolSizeCount*: uint32
     pPoolSizes*: ptr VkDescriptorPoolSize
+
   VkDescriptorSetAllocateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     descriptorPool*: VkDescriptorPool
     descriptorSetCount*: uint32
     pSetLayouts*: ptr VkDescriptorSetLayout
+
   VkSpecializationMapEntry* = object
     constantID*: uint32
     offset*: uint32
     size*: csize_t
+
   VkSpecializationInfo* = object
     mapEntryCount*: uint32
     pMapEntries*: ptr VkSpecializationMapEntry
     dataSize*: csize_t
     pData*: pointer
+
   VkPipelineShaderStageCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5184,6 +6988,7 @@
     module*: VkShaderModule
     pName*: cstring
     pSpecializationInfo*: ptr VkSpecializationInfo
+
   VkComputePipelineCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5192,15 +6997,18 @@
     layout*: VkPipelineLayout
     basePipelineHandle*: VkPipeline
     basePipelineIndex*: int32
+
   VkVertexInputBindingDescription* = object
     binding*: uint32
     stride*: uint32
     inputRate*: VkVertexInputRate
+
   VkVertexInputAttributeDescription* = object
     location*: uint32
     binding*: uint32
     format*: VkFormat
     offset*: uint32
+
   VkPipelineVertexInputStateCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5209,17 +7017,20 @@
     pVertexBindingDescriptions*: ptr VkVertexInputBindingDescription
     vertexAttributeDescriptionCount*: uint32
     pVertexAttributeDescriptions*: ptr VkVertexInputAttributeDescription
+
   VkPipelineInputAssemblyStateCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkPipelineInputAssemblyStateCreateFlags
     topology*: VkPrimitiveTopology
     primitiveRestartEnable*: VkBool32
+
   VkPipelineTessellationStateCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkPipelineTessellationStateCreateFlags
     patchControlPoints*: uint32
+
   VkPipelineViewportStateCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5228,6 +7039,7 @@
     pViewports*: ptr VkViewport
     scissorCount*: uint32
     pScissors*: ptr VkRect2D
+
   VkPipelineRasterizationStateCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5242,6 +7054,7 @@
     depthBiasClamp*: float32
     depthBiasSlopeFactor*: float32
     lineWidth*: float32
+
   VkPipelineMultisampleStateCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5252,6 +7065,7 @@
     pSampleMask*: ptr VkSampleMask
     alphaToCoverageEnable*: VkBool32
     alphaToOneEnable*: VkBool32
+
   VkPipelineColorBlendAttachmentState* = object
     blendEnable*: VkBool32
     srcColorBlendFactor*: VkBlendFactor
@@ -5261,6 +7075,7 @@
     dstAlphaBlendFactor*: VkBlendFactor
     alphaBlendOp*: VkBlendOp
     colorWriteMask*: VkColorComponentFlags
+
   VkPipelineColorBlendStateCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5270,12 +7085,14 @@
     attachmentCount*: uint32
     pAttachments*: ptr VkPipelineColorBlendAttachmentState
     blendConstants*: array[4, float32]
+
   VkPipelineDynamicStateCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkPipelineDynamicStateCreateFlags
     dynamicStateCount*: uint32
     pDynamicStates*: ptr VkDynamicState
+
   VkStencilOpState* = object
     failOp*: VkStencilOp
     passOp*: VkStencilOp
@@ -5284,6 +7101,7 @@
     compareMask*: uint32
     writeMask*: uint32
     reference*: uint32
+
   VkPipelineDepthStencilStateCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5297,6 +7115,7 @@
     back*: VkStencilOpState
     minDepthBounds*: float32
     maxDepthBounds*: float32
+
   VkGraphicsPipelineCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5317,21 +7136,25 @@
     subpass*: uint32
     basePipelineHandle*: VkPipeline
     basePipelineIndex*: int32
+
   VkPipelineCacheCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkPipelineCacheCreateFlags
     initialDataSize*: csize_t
     pInitialData*: pointer
+
   VkPipelineCacheHeaderVersionOne* = object
     headerSize*: uint32
     headerVersion*: VkPipelineCacheHeaderVersion
     vendorID*: uint32
     deviceID*: uint32
     pipelineCacheUUID*: array[VK_UUID_SIZE, uint8]
+
   VkPipelineCacheStageValidationIndexEntry* = object
     codeSize*: uint64
     codeOffset*: uint64
+
   VkPipelineCacheSafetyCriticalIndexEntry* = object
     pipelineIdentifier*: array[VK_UUID_SIZE, uint8]
     pipelineMemorySize*: uint64
@@ -5340,6 +7163,7 @@
     stageIndexCount*: uint32
     stageIndexStride*: uint32
     stageIndexOffset*: uint64
+
   VkPipelineCacheHeaderVersionSafetyCriticalOne* = object
     headerVersionOne*: VkPipelineCacheHeaderVersionOne
     validationVersion*: VkPipelineCacheValidationVersion
@@ -5347,10 +7171,12 @@
     pipelineIndexCount*: uint32
     pipelineIndexStride*: uint32
     pipelineIndexOffset*: uint64
+
   VkPushConstantRange* = object
     stageFlags*: VkShaderStageFlags
     offset*: uint32
     size*: uint32
+
   VkPipelineLayoutCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5359,6 +7185,7 @@
     pSetLayouts*: ptr VkDescriptorSetLayout
     pushConstantRangeCount*: uint32
     pPushConstantRanges*: ptr VkPushConstantRange
+
   VkSamplerCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5378,17 +7205,20 @@
     maxLod*: float32
     borderColor*: VkBorderColor
     unnormalizedCoordinates*: VkBool32
+
   VkCommandPoolCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkCommandPoolCreateFlags
     queueFamilyIndex*: uint32
+
   VkCommandBufferAllocateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     commandPool*: VkCommandPool
     level*: VkCommandBufferLevel
     commandBufferCount*: uint32
+
   VkCommandBufferInheritanceInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5398,11 +7228,13 @@
     occlusionQueryEnable*: VkBool32
     queryFlags*: VkQueryControlFlags
     pipelineStatistics*: VkQueryPipelineStatisticFlags
+
   VkCommandBufferBeginInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkCommandBufferUsageFlags
     pInheritanceInfo*: ptr VkCommandBufferInheritanceInfo
+
   VkRenderPassBeginInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5411,20 +7243,25 @@
     renderArea*: VkRect2D
     clearValueCount*: uint32
     pClearValues*: ptr VkClearValue
+
   VkClearColorValue* {.union.} = object
     float32*: array[4, float32]
     int32*: array[4, int32]
     uint32*: array[4, uint32]
+
   VkClearDepthStencilValue* = object
     depth*: float32
     stencil*: uint32
+
   VkClearValue* {.union.} = object
     color*: VkClearColorValue
     depthStencil*: VkClearDepthStencilValue
+
   VkClearAttachment* = object
     aspectMask*: VkImageAspectFlags
     colorAttachment*: uint32
     clearValue*: VkClearValue
+
   VkAttachmentDescription* = object
     flags*: VkAttachmentDescriptionFlags
     format*: VkFormat
@@ -5435,9 +7272,11 @@
     stencilStoreOp*: VkAttachmentStoreOp
     initialLayout*: VkImageLayout
     finalLayout*: VkImageLayout
+
   VkAttachmentReference* = object
     attachment*: uint32
     layout*: VkImageLayout
+
   VkSubpassDescription* = object
     flags*: VkSubpassDescriptionFlags
     pipelineBindPoint*: VkPipelineBindPoint
@@ -5449,6 +7288,7 @@
     pDepthStencilAttachment*: ptr VkAttachmentReference
     preserveAttachmentCount*: uint32
     pPreserveAttachments*: ptr uint32
+
   VkSubpassDependency* = object
     srcSubpass*: uint32
     dstSubpass*: uint32
@@ -5457,6 +7297,7 @@
     srcAccessMask*: VkAccessFlags
     dstAccessMask*: VkAccessFlags
     dependencyFlags*: VkDependencyFlags
+
   VkRenderPassCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5467,14 +7308,17 @@
     pSubpasses*: ptr VkSubpassDescription
     dependencyCount*: uint32
     pDependencies*: ptr VkSubpassDependency
+
   VkEventCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkEventCreateFlags
+
   VkFenceCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkFenceCreateFlags
+
   VkPhysicalDeviceFeatures* = object
     robustBufferAccess*: VkBool32
     fullDrawIndexUint32*: VkBool32
@@ -5531,12 +7375,14 @@
     sparseResidencyAliased*: VkBool32
     variableMultisampleRate*: VkBool32
     inheritedQueries*: VkBool32
+
   VkPhysicalDeviceSparseProperties* = object
     residencyStandard2DBlockShape*: VkBool32
     residencyStandard2DMultisampleBlockShape*: VkBool32
     residencyStandard3DBlockShape*: VkBool32
     residencyAlignedMipSize*: VkBool32
     residencyNonResidentStrict*: VkBool32
+
   VkPhysicalDeviceLimits* = object
     maxImageDimension1D*: uint32
     maxImageDimension2D*: uint32
@@ -5644,10 +7490,12 @@
     optimalBufferCopyOffsetAlignment*: VkDeviceSize
     optimalBufferCopyRowPitchAlignment*: VkDeviceSize
     nonCoherentAtomSize*: VkDeviceSize
+
   VkSemaphoreCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkSemaphoreCreateFlags
+
   VkQueryPoolCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5655,6 +7503,7 @@
     queryType*: VkQueryType
     queryCount*: uint32
     pipelineStatistics*: VkQueryPipelineStatisticFlags
+
   VkFramebufferCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5665,28 +7514,34 @@
     width*: uint32
     height*: uint32
     layers*: uint32
+
   VkDrawIndirectCommand* = object
     vertexCount*: uint32
     instanceCount*: uint32
     firstVertex*: uint32
     firstInstance*: uint32
+
   VkDrawIndexedIndirectCommand* = object
     indexCount*: uint32
     instanceCount*: uint32
     firstIndex*: uint32
     vertexOffset*: int32
     firstInstance*: uint32
+
   VkDispatchIndirectCommand* = object
     x*: uint32
     y*: uint32
     z*: uint32
+
   VkMultiDrawInfoEXT* = object
     firstVertex*: uint32
     vertexCount*: uint32
+
   VkMultiDrawIndexedInfoEXT* = object
     firstIndex*: uint32
     indexCount*: uint32
     vertexOffset*: int32
+
   VkSubmitInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5697,6 +7552,7 @@
     pCommandBuffers*: ptr VkCommandBuffer
     signalSemaphoreCount*: uint32
     pSignalSemaphores*: ptr VkSemaphore
+
   VkDisplayPropertiesKHR* = object
     display*: VkDisplayKHR
     displayName*: cstring
@@ -5705,20 +7561,25 @@
     supportedTransforms*: VkSurfaceTransformFlagsKHR
     planeReorderPossible*: VkBool32
     persistentContent*: VkBool32
+
   VkDisplayPlanePropertiesKHR* = object
     currentDisplay*: VkDisplayKHR
     currentStackIndex*: uint32
+
   VkDisplayModeParametersKHR* = object
     visibleRegion*: VkExtent2D
     refreshRate*: uint32
+
   VkDisplayModePropertiesKHR* = object
     displayMode*: VkDisplayModeKHR
     parameters*: VkDisplayModeParametersKHR
+
   VkDisplayModeCreateInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkDisplayModeCreateFlagsKHR
     parameters*: VkDisplayModeParametersKHR
+
   VkDisplayPlaneCapabilitiesKHR* = object
     supportedAlpha*: VkDisplayPlaneAlphaFlagsKHR
     minSrcPosition*: VkOffset2D
@@ -5729,6 +7590,7 @@
     maxDstPosition*: VkOffset2D
     minDstExtent*: VkExtent2D
     maxDstExtent*: VkExtent2D
+
   VkDisplaySurfaceCreateInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5740,12 +7602,14 @@
     globalAlpha*: float32
     alphaMode*: VkDisplayPlaneAlphaFlagBitsKHR
     imageExtent*: VkExtent2D
+
   VkDisplayPresentInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     srcRect*: VkRect2D
     dstRect*: VkRect2D
     persistent*: VkBool32
+
   VkSurfaceCapabilitiesKHR* = object
     minImageCount*: uint32
     maxImageCount*: uint32
@@ -5757,9 +7621,11 @@
     currentTransform*: VkSurfaceTransformFlagBitsKHR
     supportedCompositeAlpha*: VkCompositeAlphaFlagsKHR
     supportedUsageFlags*: VkImageUsageFlags
+
   VkSurfaceFormatKHR* = object
     format*: VkFormat
     colorSpace*: VkColorSpaceKHR
+
   VkSwapchainCreateInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5779,6 +7645,7 @@
     presentMode*: VkPresentModeKHR
     clipped*: VkBool32
     oldSwapchain*: VkSwapchainKHR
+
   VkPresentInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5788,17 +7655,20 @@
     pSwapchains*: ptr VkSwapchainKHR
     pImageIndices*: ptr uint32
     pResults*: ptr VkResult
+
   VkDebugReportCallbackCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkDebugReportFlagsEXT
     pfnCallback*: PFN_vkDebugReportCallbackEXT
     pUserData*: pointer
+
   VkValidationFlagsEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     disabledValidationCheckCount*: uint32
     pDisabledValidationChecks*: ptr VkValidationCheckEXT
+
   VkValidationFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5806,6 +7676,7 @@
     pEnabledValidationFeatures*: ptr VkValidationFeatureEnableEXT
     disabledValidationFeatureCount*: uint32
     pDisabledValidationFeatures*: ptr VkValidationFeatureDisableEXT
+
   VkApplicationParametersEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5813,16 +7684,19 @@
     deviceID*: uint32
     key*: uint32
     value*: uint64
+
   VkPipelineRasterizationStateRasterizationOrderAMD* = object
     sType*: VkStructureType
     pNext*: pointer
     rasterizationOrder*: VkRasterizationOrderAMD
+
   VkDebugMarkerObjectNameInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     objectType*: VkDebugReportObjectTypeEXT
     theobject*: uint64
     pObjectName*: cstring
+
   VkDebugMarkerObjectTagInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5831,55 +7705,67 @@
     tagName*: uint64
     tagSize*: csize_t
     pTag*: pointer
+
   VkDebugMarkerMarkerInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     pMarkerName*: cstring
     color*: array[4, float32]
+
   VkDedicatedAllocationImageCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     dedicatedAllocation*: VkBool32
+
   VkDedicatedAllocationBufferCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     dedicatedAllocation*: VkBool32
+
   VkDedicatedAllocationMemoryAllocateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     image*: VkImage
     buffer*: VkBuffer
+
   VkExternalImageFormatPropertiesNV* = object
     imageFormatProperties*: VkImageFormatProperties
     externalMemoryFeatures*: VkExternalMemoryFeatureFlagsNV
     exportFromImportedHandleTypes*: VkExternalMemoryHandleTypeFlagsNV
     compatibleHandleTypes*: VkExternalMemoryHandleTypeFlagsNV
+
   VkExternalMemoryImageCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     handleTypes*: VkExternalMemoryHandleTypeFlagsNV
+
   VkExportMemoryAllocateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     handleTypes*: VkExternalMemoryHandleTypeFlagsNV
+
   VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     deviceGeneratedCommands*: VkBool32
+
   VkDevicePrivateDataCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     privateDataSlotRequestCount*: uint32
+
   VkDevicePrivateDataCreateInfoEXT* = object
   VkPrivateDataSlotCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkPrivateDataSlotCreateFlags
+
   VkPrivateDataSlotCreateInfoEXT* = object
   VkPhysicalDevicePrivateDataFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     privateData*: VkBool32
+
   VkPhysicalDevicePrivateDataFeaturesEXT* = object
   VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV* = object
     sType*: VkStructureType
@@ -5893,10 +7779,12 @@
     minSequencesCountBufferOffsetAlignment*: uint32
     minSequencesIndexBufferOffsetAlignment*: uint32
     minIndirectCommandsBufferOffsetAlignment*: uint32
+
   VkPhysicalDeviceMultiDrawPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     maxMultiDrawCount*: uint32
+
   VkGraphicsShaderGroupCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5904,6 +7792,7 @@
     pStages*: ptr VkPipelineShaderStageCreateInfo
     pVertexInputState*: ptr VkPipelineVertexInputStateCreateInfo
     pTessellationState*: ptr VkPipelineTessellationStateCreateInfo
+
   VkGraphicsPipelineShaderGroupsCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5911,21 +7800,27 @@
     pGroups*: ptr VkGraphicsShaderGroupCreateInfoNV
     pipelineCount*: uint32
     pPipelines*: ptr VkPipeline
+
   VkBindShaderGroupIndirectCommandNV* = object
     groupIndex*: uint32
+
   VkBindIndexBufferIndirectCommandNV* = object
     bufferAddress*: VkDeviceAddress
     size*: uint32
     indexType*: VkIndexType
+
   VkBindVertexBufferIndirectCommandNV* = object
     bufferAddress*: VkDeviceAddress
     size*: uint32
     stride*: uint32
+
   VkSetStateFlagsIndirectCommandNV* = object
     data*: uint32
+
   VkIndirectCommandsStreamNV* = object
     buffer*: VkBuffer
     offset*: VkDeviceSize
+
   VkIndirectCommandsLayoutTokenNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5942,6 +7837,7 @@
     indexTypeCount*: uint32
     pIndexTypes*: ptr VkIndexType
     pIndexTypeValues*: ptr uint32
+
   VkIndirectCommandsLayoutCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5951,6 +7847,7 @@
     pTokens*: ptr VkIndirectCommandsLayoutTokenNV
     streamCount*: uint32
     pStreamStrides*: ptr uint32
+
   VkGeneratedCommandsInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5967,6 +7864,7 @@
     sequencesCountOffset*: VkDeviceSize
     sequencesIndexBuffer*: VkBuffer
     sequencesIndexOffset*: VkDeviceSize
+
   VkGeneratedCommandsMemoryRequirementsInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -5974,25 +7872,30 @@
     pipeline*: VkPipeline
     indirectCommandsLayout*: VkIndirectCommandsLayoutNV
     maxSequencesCount*: uint32
+
   VkPhysicalDeviceFeatures2* = object
     sType*: VkStructureType
     pNext*: pointer
     features*: VkPhysicalDeviceFeatures
+
   VkPhysicalDeviceFeatures2KHR* = object
   VkPhysicalDeviceProperties2* = object
     sType*: VkStructureType
     pNext*: pointer
     properties*: VkPhysicalDeviceProperties
+
   VkPhysicalDeviceProperties2KHR* = object
   VkFormatProperties2* = object
     sType*: VkStructureType
     pNext*: pointer
     formatProperties*: VkFormatProperties
+
   VkFormatProperties2KHR* = object
   VkImageFormatProperties2* = object
     sType*: VkStructureType
     pNext*: pointer
     imageFormatProperties*: VkImageFormatProperties
+
   VkImageFormatProperties2KHR* = object
   VkPhysicalDeviceImageFormatInfo2* = object
     sType*: VkStructureType
@@ -6002,21 +7905,25 @@
     tiling*: VkImageTiling
     usage*: VkImageUsageFlags
     flags*: VkImageCreateFlags
+
   VkPhysicalDeviceImageFormatInfo2KHR* = object
   VkQueueFamilyProperties2* = object
     sType*: VkStructureType
     pNext*: pointer
     queueFamilyProperties*: VkQueueFamilyProperties
+
   VkQueueFamilyProperties2KHR* = object
   VkPhysicalDeviceMemoryProperties2* = object
     sType*: VkStructureType
     pNext*: pointer
     memoryProperties*: VkPhysicalDeviceMemoryProperties
+
   VkPhysicalDeviceMemoryProperties2KHR* = object
   VkSparseImageFormatProperties2* = object
     sType*: VkStructureType
     pNext*: pointer
     properties*: VkSparseImageFormatProperties
+
   VkSparseImageFormatProperties2KHR* = object
   VkPhysicalDeviceSparseImageFormatInfo2* = object
     sType*: VkStructureType
@@ -6026,16 +7933,19 @@
     samples*: VkSampleCountFlagBits
     usage*: VkImageUsageFlags
     tiling*: VkImageTiling
+
   VkPhysicalDeviceSparseImageFormatInfo2KHR* = object
   VkPhysicalDevicePushDescriptorPropertiesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     maxPushDescriptors*: uint32
+
   VkConformanceVersion* = object
     major*: uint8
     minor*: uint8
     subminor*: uint8
     patch*: uint8
+
   VkConformanceVersionKHR* = object
   VkPhysicalDeviceDriverProperties* = object
     sType*: VkStructureType
@@ -6044,24 +7954,29 @@
     driverName*: array[VK_MAX_DRIVER_NAME_SIZE, char]
     driverInfo*: array[VK_MAX_DRIVER_INFO_SIZE, char]
     conformanceVersion*: VkConformanceVersion
+
   VkPhysicalDeviceDriverPropertiesKHR* = object
   VkPresentRegionsKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     swapchainCount*: uint32
     pRegions*: ptr VkPresentRegionKHR
+
   VkPresentRegionKHR* = object
     rectangleCount*: uint32
     pRectangles*: ptr VkRectLayerKHR
+
   VkRectLayerKHR* = object
     offset*: VkOffset2D
     extent*: VkExtent2D
     layer*: uint32
+
   VkPhysicalDeviceVariablePointersFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     variablePointersStorageBuffer*: VkBool32
     variablePointers*: VkBool32
+
   VkPhysicalDeviceVariablePointersFeaturesKHR* = object
   VkPhysicalDeviceVariablePointerFeaturesKHR* = object
   VkPhysicalDeviceVariablePointerFeatures* = object
@@ -6069,16 +7984,19 @@
     externalMemoryFeatures*: VkExternalMemoryFeatureFlags
     exportFromImportedHandleTypes*: VkExternalMemoryHandleTypeFlags
     compatibleHandleTypes*: VkExternalMemoryHandleTypeFlags
+
   VkExternalMemoryPropertiesKHR* = object
   VkPhysicalDeviceExternalImageFormatInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     handleType*: VkExternalMemoryHandleTypeFlagBits
+
   VkPhysicalDeviceExternalImageFormatInfoKHR* = object
   VkExternalImageFormatProperties* = object
     sType*: VkStructureType
     pNext*: pointer
     externalMemoryProperties*: VkExternalMemoryProperties
+
   VkExternalImageFormatPropertiesKHR* = object
   VkPhysicalDeviceExternalBufferInfo* = object
     sType*: VkStructureType
@@ -6086,11 +8004,13 @@
     flags*: VkBufferCreateFlags
     usage*: VkBufferUsageFlags
     handleType*: VkExternalMemoryHandleTypeFlagBits
+
   VkPhysicalDeviceExternalBufferInfoKHR* = object
   VkExternalBufferProperties* = object
     sType*: VkStructureType
     pNext*: pointer
     externalMemoryProperties*: VkExternalMemoryProperties
+
   VkExternalBufferPropertiesKHR* = object
   VkPhysicalDeviceIDProperties* = object
     sType*: VkStructureType
@@ -6100,40 +8020,48 @@
     deviceLUID*: array[VK_LUID_SIZE, uint8]
     deviceNodeMask*: uint32
     deviceLUIDValid*: VkBool32
+
   VkPhysicalDeviceIDPropertiesKHR* = object
   VkExternalMemoryImageCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     handleTypes*: VkExternalMemoryHandleTypeFlags
+
   VkExternalMemoryImageCreateInfoKHR* = object
   VkExternalMemoryBufferCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     handleTypes*: VkExternalMemoryHandleTypeFlags
+
   VkExternalMemoryBufferCreateInfoKHR* = object
   VkExportMemoryAllocateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     handleTypes*: VkExternalMemoryHandleTypeFlags
+
   VkExportMemoryAllocateInfoKHR* = object
   VkImportMemoryFdInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     handleType*: VkExternalMemoryHandleTypeFlagBits
     fd*: cint
+
   VkMemoryFdPropertiesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     memoryTypeBits*: uint32
+
   VkMemoryGetFdInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     memory*: VkDeviceMemory
     handleType*: VkExternalMemoryHandleTypeFlagBits
+
   VkPhysicalDeviceExternalSemaphoreInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     handleType*: VkExternalSemaphoreHandleTypeFlagBits
+
   VkPhysicalDeviceExternalSemaphoreInfoKHR* = object
   VkExternalSemaphoreProperties* = object
     sType*: VkStructureType
@@ -6141,11 +8069,13 @@
     exportFromImportedHandleTypes*: VkExternalSemaphoreHandleTypeFlags
     compatibleHandleTypes*: VkExternalSemaphoreHandleTypeFlags
     externalSemaphoreFeatures*: VkExternalSemaphoreFeatureFlags
+
   VkExternalSemaphorePropertiesKHR* = object
   VkExportSemaphoreCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     handleTypes*: VkExternalSemaphoreHandleTypeFlags
+
   VkExportSemaphoreCreateInfoKHR* = object
   VkImportSemaphoreFdInfoKHR* = object
     sType*: VkStructureType
@@ -6154,15 +8084,18 @@
     flags*: VkSemaphoreImportFlags
     handleType*: VkExternalSemaphoreHandleTypeFlagBits
     fd*: cint
+
   VkSemaphoreGetFdInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     semaphore*: VkSemaphore
     handleType*: VkExternalSemaphoreHandleTypeFlagBits
+
   VkPhysicalDeviceExternalFenceInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     handleType*: VkExternalFenceHandleTypeFlagBits
+
   VkPhysicalDeviceExternalFenceInfoKHR* = object
   VkExternalFenceProperties* = object
     sType*: VkStructureType
@@ -6170,11 +8103,13 @@
     exportFromImportedHandleTypes*: VkExternalFenceHandleTypeFlags
     compatibleHandleTypes*: VkExternalFenceHandleTypeFlags
     externalFenceFeatures*: VkExternalFenceFeatureFlags
+
   VkExternalFencePropertiesKHR* = object
   VkExportFenceCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     handleTypes*: VkExternalFenceHandleTypeFlags
+
   VkExportFenceCreateInfoKHR* = object
   VkImportFenceFdInfoKHR* = object
     sType*: VkStructureType
@@ -6183,23 +8118,27 @@
     flags*: VkFenceImportFlags
     handleType*: VkExternalFenceHandleTypeFlagBits
     fd*: cint
+
   VkFenceGetFdInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     fence*: VkFence
     handleType*: VkExternalFenceHandleTypeFlagBits
+
   VkPhysicalDeviceMultiviewFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     multiview*: VkBool32
     multiviewGeometryShader*: VkBool32
     multiviewTessellationShader*: VkBool32
+
   VkPhysicalDeviceMultiviewFeaturesKHR* = object
   VkPhysicalDeviceMultiviewProperties* = object
     sType*: VkStructureType
     pNext*: pointer
     maxMultiviewViewCount*: uint32
     maxMultiviewInstanceIndex*: uint32
+
   VkPhysicalDeviceMultiviewPropertiesKHR* = object
   VkRenderPassMultiviewCreateInfo* = object
     sType*: VkStructureType
@@ -6210,6 +8149,7 @@
     pViewOffsets*: ptr int32
     correlationMaskCount*: uint32
     pCorrelationMasks*: ptr uint32
+
   VkRenderPassMultiviewCreateInfoKHR* = object
   VkSurfaceCapabilities2EXT* = object
     sType*: VkStructureType
@@ -6225,34 +8165,41 @@
     supportedCompositeAlpha*: VkCompositeAlphaFlagsKHR
     supportedUsageFlags*: VkImageUsageFlags
     supportedSurfaceCounters*: VkSurfaceCounterFlagsEXT
+
   VkDisplayPowerInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     powerState*: VkDisplayPowerStateEXT
+
   VkDeviceEventInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     deviceEvent*: VkDeviceEventTypeEXT
+
   VkDisplayEventInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     displayEvent*: VkDisplayEventTypeEXT
+
   VkSwapchainCounterCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     surfaceCounters*: VkSurfaceCounterFlagsEXT
+
   VkPhysicalDeviceGroupProperties* = object
     sType*: VkStructureType
     pNext*: pointer
     physicalDeviceCount*: uint32
     physicalDevices*: array[VK_MAX_DEVICE_GROUP_SIZE, VkPhysicalDevice]
     subsetAllocation*: VkBool32
+
   VkPhysicalDeviceGroupPropertiesKHR* = object
   VkMemoryAllocateFlagsInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkMemoryAllocateFlags
     deviceMask*: uint32
+
   VkMemoryAllocateFlagsInfoKHR* = object
   VkBindBufferMemoryInfo* = object
     sType*: VkStructureType
@@ -6260,12 +8207,14 @@
     buffer*: VkBuffer
     memory*: VkDeviceMemory
     memoryOffset*: VkDeviceSize
+
   VkBindBufferMemoryInfoKHR* = object
   VkBindBufferMemoryDeviceGroupInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     deviceIndexCount*: uint32
     pDeviceIndices*: ptr uint32
+
   VkBindBufferMemoryDeviceGroupInfoKHR* = object
   VkBindImageMemoryInfo* = object
     sType*: VkStructureType
@@ -6273,6 +8222,7 @@
     image*: VkImage
     memory*: VkDeviceMemory
     memoryOffset*: VkDeviceSize
+
   VkBindImageMemoryInfoKHR* = object
   VkBindImageMemoryDeviceGroupInfo* = object
     sType*: VkStructureType
@@ -6281,6 +8231,7 @@
     pDeviceIndices*: ptr uint32
     splitInstanceBindRegionCount*: uint32
     pSplitInstanceBindRegions*: ptr VkRect2D
+
   VkBindImageMemoryDeviceGroupInfoKHR* = object
   VkDeviceGroupRenderPassBeginInfo* = object
     sType*: VkStructureType
@@ -6288,11 +8239,13 @@
     deviceMask*: uint32
     deviceRenderAreaCount*: uint32
     pDeviceRenderAreas*: ptr VkRect2D
+
   VkDeviceGroupRenderPassBeginInfoKHR* = object
   VkDeviceGroupCommandBufferBeginInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     deviceMask*: uint32
+
   VkDeviceGroupCommandBufferBeginInfoKHR* = object
   VkDeviceGroupSubmitInfo* = object
     sType*: VkStructureType
@@ -6303,27 +8256,32 @@
     pCommandBufferDeviceMasks*: ptr uint32
     signalSemaphoreCount*: uint32
     pSignalSemaphoreDeviceIndices*: ptr uint32
+
   VkDeviceGroupSubmitInfoKHR* = object
   VkDeviceGroupBindSparseInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     resourceDeviceIndex*: uint32
     memoryDeviceIndex*: uint32
+
   VkDeviceGroupBindSparseInfoKHR* = object
   VkDeviceGroupPresentCapabilitiesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     presentMask*: array[VK_MAX_DEVICE_GROUP_SIZE, uint32]
     modes*: VkDeviceGroupPresentModeFlagsKHR
+
   VkImageSwapchainCreateInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     swapchain*: VkSwapchainKHR
+
   VkBindImageMemorySwapchainInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     swapchain*: VkSwapchainKHR
     imageIndex*: uint32
+
   VkAcquireNextImageInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -6332,22 +8290,26 @@
     semaphore*: VkSemaphore
     fence*: VkFence
     deviceMask*: uint32
+
   VkDeviceGroupPresentInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     swapchainCount*: uint32
     pDeviceMasks*: ptr uint32
     mode*: VkDeviceGroupPresentModeFlagBitsKHR
+
   VkDeviceGroupDeviceCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     physicalDeviceCount*: uint32
     pPhysicalDevices*: ptr VkPhysicalDevice
+
   VkDeviceGroupDeviceCreateInfoKHR* = object
   VkDeviceGroupSwapchainCreateInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     modes*: VkDeviceGroupPresentModeFlagsKHR
+
   VkDescriptorUpdateTemplateEntry* = object
     dstBinding*: uint32
     dstArrayElement*: uint32
@@ -6355,6 +8317,7 @@
     descriptorType*: VkDescriptorType
     offset*: csize_t
     stride*: csize_t
+
   VkDescriptorUpdateTemplateEntryKHR* = object
   VkDescriptorUpdateTemplateCreateInfo* = object
     sType*: VkStructureType
@@ -6367,23 +8330,28 @@
     pipelineBindPoint*: VkPipelineBindPoint
     pipelineLayout*: VkPipelineLayout
     set*: uint32
+
   VkDescriptorUpdateTemplateCreateInfoKHR* = object
   VkXYColorEXT* = object
     x*: float32
     y*: float32
+
   VkPhysicalDevicePresentIdFeaturesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     presentId*: VkBool32
+
   VkPresentIdKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     swapchainCount*: uint32
     pPresentIds*: ptr uint64
+
   VkPhysicalDevicePresentWaitFeaturesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     presentWait*: VkBool32
+
   VkHdrMetadataEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -6395,54 +8363,66 @@
     minLuminance*: float32
     maxContentLightLevel*: float32
     maxFrameAverageLightLevel*: float32
+
   VkDisplayNativeHdrSurfaceCapabilitiesAMD* = object
     sType*: VkStructureType
     pNext*: pointer
     localDimmingSupport*: VkBool32
+
   VkSwapchainDisplayNativeHdrCreateInfoAMD* = object
     sType*: VkStructureType
     pNext*: pointer
     localDimmingEnable*: VkBool32
+
   VkRefreshCycleDurationGOOGLE* = object
     refreshDuration*: uint64
+
   VkPastPresentationTimingGOOGLE* = object
     presentID*: uint32
     desiredPresentTime*: uint64
     actualPresentTime*: uint64
     earliestPresentTime*: uint64
     presentMargin*: uint64
+
   VkPresentTimesInfoGOOGLE* = object
     sType*: VkStructureType
     pNext*: pointer
     swapchainCount*: uint32
     pTimes*: ptr VkPresentTimeGOOGLE
+
   VkPresentTimeGOOGLE* = object
     presentID*: uint32
     desiredPresentTime*: uint64
+
   VkViewportWScalingNV* = object
     xcoeff*: float32
     ycoeff*: float32
+
   VkPipelineViewportWScalingStateCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     viewportWScalingEnable*: VkBool32
     viewportCount*: uint32
     pViewportWScalings*: ptr VkViewportWScalingNV
+
   VkViewportSwizzleNV* = object
     x*: VkViewportCoordinateSwizzleNV
     y*: VkViewportCoordinateSwizzleNV
     z*: VkViewportCoordinateSwizzleNV
     w*: VkViewportCoordinateSwizzleNV
+
   VkPipelineViewportSwizzleStateCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkPipelineViewportSwizzleStateCreateFlagsNV
     viewportCount*: uint32
     pViewportSwizzles*: ptr VkViewportSwizzleNV
+
   VkPhysicalDeviceDiscardRectanglePropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     maxDiscardRectangles*: uint32
+
   VkPipelineDiscardRectangleStateCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -6450,58 +8430,71 @@
     discardRectangleMode*: VkDiscardRectangleModeEXT
     discardRectangleCount*: uint32
     pDiscardRectangles*: ptr VkRect2D
+
   VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* = object
     sType*: VkStructureType
     pNext*: pointer
     perViewPositionAllComponents*: VkBool32
+
   VkInputAttachmentAspectReference* = object
     subpass*: uint32
     inputAttachmentIndex*: uint32
     aspectMask*: VkImageAspectFlags
+
   VkInputAttachmentAspectReferenceKHR* = object
   VkRenderPassInputAttachmentAspectCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     aspectReferenceCount*: uint32
     pAspectReferences*: ptr VkInputAttachmentAspectReference
+
   VkRenderPassInputAttachmentAspectCreateInfoKHR* = object
   VkPhysicalDeviceSurfaceInfo2KHR* = object
     sType*: VkStructureType
     pNext*: pointer
     surface*: VkSurfaceKHR
+
   VkSurfaceCapabilities2KHR* = object
     sType*: VkStructureType
     pNext*: pointer
     surfaceCapabilities*: VkSurfaceCapabilitiesKHR
+
   VkSurfaceFormat2KHR* = object
     sType*: VkStructureType
     pNext*: pointer
     surfaceFormat*: VkSurfaceFormatKHR
+
   VkDisplayProperties2KHR* = object
     sType*: VkStructureType
     pNext*: pointer
     displayProperties*: VkDisplayPropertiesKHR
+
   VkDisplayPlaneProperties2KHR* = object
     sType*: VkStructureType
     pNext*: pointer
     displayPlaneProperties*: VkDisplayPlanePropertiesKHR
+
   VkDisplayModeProperties2KHR* = object
     sType*: VkStructureType
     pNext*: pointer
     displayModeProperties*: VkDisplayModePropertiesKHR
+
   VkDisplayPlaneInfo2KHR* = object
     sType*: VkStructureType
     pNext*: pointer
     mode*: VkDisplayModeKHR
     planeIndex*: uint32
+
   VkDisplayPlaneCapabilities2KHR* = object
     sType*: VkStructureType
     pNext*: pointer
     capabilities*: VkDisplayPlaneCapabilitiesKHR
+
   VkSharedPresentSurfaceCapabilitiesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     sharedPresentSupportedUsageFlags*: VkImageUsageFlags
+
   VkPhysicalDevice16BitStorageFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -6509,6 +8502,7 @@
     uniformAndStorageBuffer16BitAccess*: VkBool32
     storagePushConstant16*: VkBool32
     storageInputOutput16*: VkBool32
+
   VkPhysicalDevice16BitStorageFeaturesKHR* = object
   VkPhysicalDeviceSubgroupProperties* = object
     sType*: VkStructureType
@@ -6517,83 +8511,99 @@
     supportedStages*: VkShaderStageFlags
     supportedOperations*: VkSubgroupFeatureFlags
     quadOperationsInAllStages*: VkBool32
+
   VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderSubgroupExtendedTypes*: VkBool32
+
   VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR* = object
   VkBufferMemoryRequirementsInfo2* = object
     sType*: VkStructureType
     pNext*: pointer
     buffer*: VkBuffer
+
   VkBufferMemoryRequirementsInfo2KHR* = object
   VkDeviceBufferMemoryRequirements* = object
     sType*: VkStructureType
     pNext*: pointer
     pCreateInfo*: ptr VkBufferCreateInfo
+
   VkDeviceBufferMemoryRequirementsKHR* = object
   VkImageMemoryRequirementsInfo2* = object
     sType*: VkStructureType
     pNext*: pointer
     image*: VkImage
+
   VkImageMemoryRequirementsInfo2KHR* = object
   VkImageSparseMemoryRequirementsInfo2* = object
     sType*: VkStructureType
     pNext*: pointer
     image*: VkImage
+
   VkImageSparseMemoryRequirementsInfo2KHR* = object
   VkDeviceImageMemoryRequirements* = object
     sType*: VkStructureType
     pNext*: pointer
     pCreateInfo*: ptr VkImageCreateInfo
     planeAspect*: VkImageAspectFlagBits
+
   VkDeviceImageMemoryRequirementsKHR* = object
   VkMemoryRequirements2* = object
     sType*: VkStructureType
     pNext*: pointer
     memoryRequirements*: VkMemoryRequirements
+
   VkMemoryRequirements2KHR* = object
   VkSparseImageMemoryRequirements2* = object
     sType*: VkStructureType
     pNext*: pointer
     memoryRequirements*: VkSparseImageMemoryRequirements
+
   VkSparseImageMemoryRequirements2KHR* = object
   VkPhysicalDevicePointClippingProperties* = object
     sType*: VkStructureType
     pNext*: pointer
     pointClippingBehavior*: VkPointClippingBehavior
+
   VkPhysicalDevicePointClippingPropertiesKHR* = object
   VkMemoryDedicatedRequirements* = object
     sType*: VkStructureType
     pNext*: pointer
     prefersDedicatedAllocation*: VkBool32
     requiresDedicatedAllocation*: VkBool32
+
   VkMemoryDedicatedRequirementsKHR* = object
   VkMemoryDedicatedAllocateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     image*: VkImage
     buffer*: VkBuffer
+
   VkMemoryDedicatedAllocateInfoKHR* = object
   VkImageViewUsageCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     usage*: VkImageUsageFlags
+
   VkImageViewSlicedCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     sliceOffset*: uint32
     sliceCount*: uint32
+
   VkImageViewUsageCreateInfoKHR* = object
   VkPipelineTessellationDomainOriginStateCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     domainOrigin*: VkTessellationDomainOrigin
+
   VkPipelineTessellationDomainOriginStateCreateInfoKHR* = object
   VkSamplerYcbcrConversionInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     conversion*: VkSamplerYcbcrConversion
+
   VkSamplerYcbcrConversionInfoKHR* = object
   VkSamplerYcbcrConversionCreateInfo* = object
     sType*: VkStructureType
@@ -6606,70 +8616,84 @@
     yChromaOffset*: VkChromaLocation
     chromaFilter*: VkFilter
     forceExplicitReconstruction*: VkBool32
+
   VkSamplerYcbcrConversionCreateInfoKHR* = object
   VkBindImagePlaneMemoryInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     planeAspect*: VkImageAspectFlagBits
+
   VkBindImagePlaneMemoryInfoKHR* = object
   VkImagePlaneMemoryRequirementsInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     planeAspect*: VkImageAspectFlagBits
+
   VkImagePlaneMemoryRequirementsInfoKHR* = object
   VkPhysicalDeviceSamplerYcbcrConversionFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     samplerYcbcrConversion*: VkBool32
+
   VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR* = object
   VkSamplerYcbcrConversionImageFormatProperties* = object
     sType*: VkStructureType
     pNext*: pointer
     combinedImageSamplerDescriptorCount*: uint32
+
   VkSamplerYcbcrConversionImageFormatPropertiesKHR* = object
   VkTextureLODGatherFormatPropertiesAMD* = object
     sType*: VkStructureType
     pNext*: pointer
     supportsTextureGatherLODBiasAMD*: VkBool32
+
   VkConditionalRenderingBeginInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     buffer*: VkBuffer
     offset*: VkDeviceSize
     flags*: VkConditionalRenderingFlagsEXT
+
   VkProtectedSubmitInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     protectedSubmit*: VkBool32
+
   VkPhysicalDeviceProtectedMemoryFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     protectedMemory*: VkBool32
+
   VkPhysicalDeviceProtectedMemoryProperties* = object
     sType*: VkStructureType
     pNext*: pointer
     protectedNoFault*: VkBool32
+
   VkDeviceQueueInfo2* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkDeviceQueueCreateFlags
     queueFamilyIndex*: uint32
     queueIndex*: uint32
+
   VkPipelineCoverageToColorStateCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkPipelineCoverageToColorStateCreateFlagsNV
     coverageToColorEnable*: VkBool32
     coverageToColorLocation*: uint32
+
   VkPhysicalDeviceSamplerFilterMinmaxProperties* = object
     sType*: VkStructureType
     pNext*: pointer
     filterMinmaxSingleComponentFormats*: VkBool32
     filterMinmaxImageComponentMapping*: VkBool32
+
   VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* = object
   VkSampleLocationEXT* = object
     x*: float32
     y*: float32
+
   VkSampleLocationsInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -6677,12 +8701,15 @@
     sampleLocationGridSize*: VkExtent2D
     sampleLocationsCount*: uint32
     pSampleLocations*: ptr VkSampleLocationEXT
+
   VkAttachmentSampleLocationsEXT* = object
     attachmentIndex*: uint32
     sampleLocationsInfo*: VkSampleLocationsInfoEXT
+
   VkSubpassSampleLocationsEXT* = object
     subpassIndex*: uint32
     sampleLocationsInfo*: VkSampleLocationsInfoEXT
+
   VkRenderPassSampleLocationsBeginInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -6690,11 +8717,13 @@
     pAttachmentInitialSampleLocations*: ptr VkAttachmentSampleLocationsEXT
     postSubpassSampleLocationsCount*: uint32
     pPostSubpassSampleLocations*: ptr VkSubpassSampleLocationsEXT
+
   VkPipelineSampleLocationsStateCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     sampleLocationsEnable*: VkBool32
     sampleLocationsInfo*: VkSampleLocationsInfoEXT
+
   VkPhysicalDeviceSampleLocationsPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -6703,23 +8732,28 @@
     sampleLocationCoordinateRange*: array[2, float32]
     sampleLocationSubPixelBits*: uint32
     variableSampleLocations*: VkBool32
+
   VkMultisamplePropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     maxSampleLocationGridSize*: VkExtent2D
+
   VkSamplerReductionModeCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     reductionMode*: VkSamplerReductionMode
+
   VkSamplerReductionModeCreateInfoEXT* = object
   VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     advancedBlendCoherentOperations*: VkBool32
+
   VkPhysicalDeviceMultiDrawFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     multiDraw*: VkBool32
+
   VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -6729,17 +8763,20 @@
     advancedBlendNonPremultipliedDstColor*: VkBool32
     advancedBlendCorrelatedOverlap*: VkBool32
     advancedBlendAllOperations*: VkBool32
+
   VkPipelineColorBlendAdvancedStateCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     srcPremultiplied*: VkBool32
     dstPremultiplied*: VkBool32
     blendOverlap*: VkBlendOverlapEXT
+
   VkPhysicalDeviceInlineUniformBlockFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     inlineUniformBlock*: VkBool32
     descriptorBindingInlineUniformBlockUpdateAfterBind*: VkBool32
+
   VkPhysicalDeviceInlineUniformBlockFeaturesEXT* = object
   VkPhysicalDeviceInlineUniformBlockProperties* = object
     sType*: VkStructureType
@@ -6749,17 +8786,20 @@
     maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks*: uint32
     maxDescriptorSetInlineUniformBlocks*: uint32
     maxDescriptorSetUpdateAfterBindInlineUniformBlocks*: uint32
+
   VkPhysicalDeviceInlineUniformBlockPropertiesEXT* = object
   VkWriteDescriptorSetInlineUniformBlock* = object
     sType*: VkStructureType
     pNext*: pointer
     dataSize*: uint32
     pData*: pointer
+
   VkWriteDescriptorSetInlineUniformBlockEXT* = object
   VkDescriptorPoolInlineUniformBlockCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     maxInlineUniformBlockBindings*: uint32
+
   VkDescriptorPoolInlineUniformBlockCreateInfoEXT* = object
   VkPipelineCoverageModulationStateCreateInfoNV* = object
     sType*: VkStructureType
@@ -6769,11 +8809,13 @@
     coverageModulationTableEnable*: VkBool32
     coverageModulationTableCount*: uint32
     pCoverageModulationTable*: ptr float32
+
   VkImageFormatListCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     viewFormatCount*: uint32
     pViewFormats*: ptr VkFormat
+
   VkImageFormatListCreateInfoKHR* = object
   VkValidationCacheCreateInfoEXT* = object
     sType*: VkStructureType
@@ -6781,41 +8823,49 @@
     flags*: VkValidationCacheCreateFlagsEXT
     initialDataSize*: csize_t
     pInitialData*: pointer
+
   VkShaderModuleValidationCacheCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     validationCache*: VkValidationCacheEXT
+
   VkPhysicalDeviceMaintenance3Properties* = object
     sType*: VkStructureType
     pNext*: pointer
     maxPerSetDescriptors*: uint32
     maxMemoryAllocationSize*: VkDeviceSize
+
   VkPhysicalDeviceMaintenance3PropertiesKHR* = object
   VkPhysicalDeviceMaintenance4Features* = object
     sType*: VkStructureType
     pNext*: pointer
     maintenance4*: VkBool32
+
   VkPhysicalDeviceMaintenance4FeaturesKHR* = object
   VkPhysicalDeviceMaintenance4Properties* = object
     sType*: VkStructureType
     pNext*: pointer
     maxBufferSize*: VkDeviceSize
+
   VkPhysicalDeviceMaintenance4PropertiesKHR* = object
   VkDescriptorSetLayoutSupport* = object
     sType*: VkStructureType
     pNext*: pointer
     supported*: VkBool32
+
   VkDescriptorSetLayoutSupportKHR* = object
   VkPhysicalDeviceShaderDrawParametersFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderDrawParameters*: VkBool32
+
   VkPhysicalDeviceShaderDrawParameterFeatures* = object
   VkPhysicalDeviceShaderFloat16Int8Features* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderFloat16*: VkBool32
     shaderInt8*: VkBool32
+
   VkPhysicalDeviceShaderFloat16Int8FeaturesKHR* = object
   VkPhysicalDeviceFloat16Int8FeaturesKHR* = object
   VkPhysicalDeviceFloatControlsProperties* = object
@@ -6838,11 +8888,13 @@
     shaderRoundingModeRTZFloat16*: VkBool32
     shaderRoundingModeRTZFloat32*: VkBool32
     shaderRoundingModeRTZFloat64*: VkBool32
+
   VkPhysicalDeviceFloatControlsPropertiesKHR* = object
   VkPhysicalDeviceHostQueryResetFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     hostQueryReset*: VkBool32
+
   VkPhysicalDeviceHostQueryResetFeaturesEXT* = object
   VkShaderResourceUsageAMD* = object
     numUsedVgprs*: uint32
@@ -6850,6 +8902,7 @@
     ldsSizePerLocalWorkGroup*: uint32
     ldsUsageSizeInBytes*: csize_t
     scratchMemUsageInBytes*: csize_t
+
   VkShaderStatisticsInfoAMD* = object
     shaderStageMask*: VkShaderStageFlags
     resourceUsage*: VkShaderResourceUsageAMD
@@ -6858,21 +8911,25 @@
     numAvailableVgprs*: uint32
     numAvailableSgprs*: uint32
     computeWorkGroupSize*: array[3, uint32]
+
   VkDeviceQueueGlobalPriorityCreateInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     globalPriority*: VkQueueGlobalPriorityKHR
+
   VkDeviceQueueGlobalPriorityCreateInfoEXT* = object
   VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     globalPriorityQuery*: VkBool32
+
   VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT* = object
   VkQueueFamilyGlobalPriorityPropertiesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     priorityCount*: uint32
     priorities*: array[VK_MAX_GLOBAL_PRIORITY_SIZE_KHR, VkQueueGlobalPriorityKHR]
+
   VkQueueFamilyGlobalPriorityPropertiesEXT* = object
   VkDebugUtilsObjectNameInfoEXT* = object
     sType*: VkStructureType
@@ -6880,6 +8937,7 @@
     objectType*: VkObjectType
     objectHandle*: uint64
     pObjectName*: cstring
+
   VkDebugUtilsObjectTagInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -6888,11 +8946,13 @@
     tagName*: uint64
     tagSize*: csize_t
     pTag*: pointer
+
   VkDebugUtilsLabelEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     pLabelName*: cstring
     color*: array[4, float32]
+
   VkDebugUtilsMessengerCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -6901,6 +8961,7 @@
     messageType*: VkDebugUtilsMessageTypeFlagsEXT
     pfnUserCallback*: PFN_vkDebugUtilsMessengerCallbackEXT
     pUserData*: pointer
+
   VkDebugUtilsMessengerCallbackDataEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -6914,16 +8975,19 @@
     pCmdBufLabels*: ptr VkDebugUtilsLabelEXT
     objectCount*: uint32
     pObjects*: ptr VkDebugUtilsObjectNameInfoEXT
+
   VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     deviceMemoryReport*: VkBool32
+
   VkDeviceDeviceMemoryReportCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkDeviceMemoryReportFlagsEXT
     pfnUserCallback*: PFN_vkDeviceMemoryReportCallbackEXT
     pUserData*: pointer
+
   VkDeviceMemoryReportCallbackDataEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -6934,19 +8998,23 @@
     objectType*: VkObjectType
     objectHandle*: uint64
     heapIndex*: uint32
+
   VkImportMemoryHostPointerInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     handleType*: VkExternalMemoryHandleTypeFlagBits
     pHostPointer*: pointer
+
   VkMemoryHostPointerPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     memoryTypeBits*: uint32
+
   VkPhysicalDeviceExternalMemoryHostPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     minImportedHostPointerAlignment*: VkDeviceSize
+
   VkPhysicalDeviceConservativeRasterizationPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -6959,10 +9027,12 @@
     degenerateLinesRasterized*: VkBool32
     fullyCoveredFragmentShaderInputVariable*: VkBool32
     conservativeRasterizationPostDepthCoverage*: VkBool32
+
   VkCalibratedTimestampInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     timeDomain*: VkTimeDomainEXT
+
   VkPhysicalDeviceShaderCorePropertiesAMD* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -6980,17 +9050,20 @@
     minVgprAllocation*: uint32
     maxVgprAllocation*: uint32
     vgprAllocationGranularity*: uint32
+
   VkPhysicalDeviceShaderCoreProperties2AMD* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderCoreFeatures*: VkShaderCorePropertiesFlagsAMD
     activeComputeUnitCount*: uint32
+
   VkPipelineRasterizationConservativeStateCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkPipelineRasterizationConservativeStateCreateFlagsEXT
     conservativeRasterizationMode*: VkConservativeRasterizationModeEXT
     extraPrimitiveOverestimationSize*: float32
+
   VkPhysicalDeviceDescriptorIndexingFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7014,6 +9087,7 @@
     descriptorBindingPartiallyBound*: VkBool32
     descriptorBindingVariableDescriptorCount*: VkBool32
     runtimeDescriptorArray*: VkBool32
+
   VkPhysicalDeviceDescriptorIndexingFeaturesEXT* = object
   VkPhysicalDeviceDescriptorIndexingProperties* = object
     sType*: VkStructureType
@@ -7041,23 +9115,27 @@
     maxDescriptorSetUpdateAfterBindSampledImages*: uint32
     maxDescriptorSetUpdateAfterBindStorageImages*: uint32
     maxDescriptorSetUpdateAfterBindInputAttachments*: uint32
+
   VkPhysicalDeviceDescriptorIndexingPropertiesEXT* = object
   VkDescriptorSetLayoutBindingFlagsCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     bindingCount*: uint32
     pBindingFlags*: ptr VkDescriptorBindingFlags
+
   VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* = object
   VkDescriptorSetVariableDescriptorCountAllocateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     descriptorSetCount*: uint32
     pDescriptorCounts*: ptr uint32
+
   VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* = object
   VkDescriptorSetVariableDescriptorCountLayoutSupport* = object
     sType*: VkStructureType
     pNext*: pointer
     maxVariableDescriptorCount*: uint32
+
   VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* = object
   VkAttachmentDescription2* = object
     sType*: VkStructureType
@@ -7071,6 +9149,7 @@
     stencilStoreOp*: VkAttachmentStoreOp
     initialLayout*: VkImageLayout
     finalLayout*: VkImageLayout
+
   VkAttachmentDescription2KHR* = object
   VkAttachmentReference2* = object
     sType*: VkStructureType
@@ -7078,6 +9157,7 @@
     attachment*: uint32
     layout*: VkImageLayout
     aspectMask*: VkImageAspectFlags
+
   VkAttachmentReference2KHR* = object
   VkSubpassDescription2* = object
     sType*: VkStructureType
@@ -7093,6 +9173,7 @@
     pDepthStencilAttachment*: ptr VkAttachmentReference2
     preserveAttachmentCount*: uint32
     pPreserveAttachments*: ptr uint32
+
   VkSubpassDescription2KHR* = object
   VkSubpassDependency2* = object
     sType*: VkStructureType
@@ -7105,6 +9186,7 @@
     dstAccessMask*: VkAccessFlags
     dependencyFlags*: VkDependencyFlags
     viewOffset*: int32
+
   VkSubpassDependency2KHR* = object
   VkRenderPassCreateInfo2* = object
     sType*: VkStructureType
@@ -7118,31 +9200,37 @@
     pDependencies*: ptr VkSubpassDependency2
     correlatedViewMaskCount*: uint32
     pCorrelatedViewMasks*: ptr uint32
+
   VkRenderPassCreateInfo2KHR* = object
   VkSubpassBeginInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     contents*: VkSubpassContents
+
   VkSubpassBeginInfoKHR* = object
   VkSubpassEndInfo* = object
     sType*: VkStructureType
     pNext*: pointer
+
   VkSubpassEndInfoKHR* = object
   VkPhysicalDeviceTimelineSemaphoreFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     timelineSemaphore*: VkBool32
+
   VkPhysicalDeviceTimelineSemaphoreFeaturesKHR* = object
   VkPhysicalDeviceTimelineSemaphoreProperties* = object
     sType*: VkStructureType
     pNext*: pointer
     maxTimelineSemaphoreValueDifference*: uint64
+
   VkPhysicalDeviceTimelineSemaphorePropertiesKHR* = object
   VkSemaphoreTypeCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     semaphoreType*: VkSemaphoreType
     initialValue*: uint64
+
   VkSemaphoreTypeCreateInfoKHR* = object
   VkTimelineSemaphoreSubmitInfo* = object
     sType*: VkStructureType
@@ -7151,6 +9239,7 @@
     pWaitSemaphoreValues*: ptr uint64
     signalSemaphoreValueCount*: uint32
     pSignalSemaphoreValues*: ptr uint64
+
   VkTimelineSemaphoreSubmitInfoKHR* = object
   VkSemaphoreWaitInfo* = object
     sType*: VkStructureType
@@ -7159,25 +9248,30 @@
     semaphoreCount*: uint32
     pSemaphores*: ptr VkSemaphore
     pValues*: ptr uint64
+
   VkSemaphoreWaitInfoKHR* = object
   VkSemaphoreSignalInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     semaphore*: VkSemaphore
     value*: uint64
+
   VkSemaphoreSignalInfoKHR* = object
   VkVertexInputBindingDivisorDescriptionEXT* = object
     binding*: uint32
     divisor*: uint32
+
   VkPipelineVertexInputDivisorStateCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     vertexBindingDivisorCount*: uint32
     pVertexBindingDivisors*: ptr VkVertexInputBindingDivisorDescriptionEXT
+
   VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     maxVertexAttribDivisor*: uint32
+
   VkPhysicalDevicePCIBusInfoPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7185,34 +9279,40 @@
     pciBus*: uint32
     pciDevice*: uint32
     pciFunction*: uint32
+
   VkCommandBufferInheritanceConditionalRenderingInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     conditionalRenderingEnable*: VkBool32
+
   VkPhysicalDevice8BitStorageFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     storageBuffer8BitAccess*: VkBool32
     uniformAndStorageBuffer8BitAccess*: VkBool32
     storagePushConstant8*: VkBool32
+
   VkPhysicalDevice8BitStorageFeaturesKHR* = object
   VkPhysicalDeviceConditionalRenderingFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     conditionalRendering*: VkBool32
     inheritedConditionalRendering*: VkBool32
+
   VkPhysicalDeviceVulkanMemoryModelFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     vulkanMemoryModel*: VkBool32
     vulkanMemoryModelDeviceScope*: VkBool32
     vulkanMemoryModelAvailabilityVisibilityChains*: VkBool32
+
   VkPhysicalDeviceVulkanMemoryModelFeaturesKHR* = object
   VkPhysicalDeviceShaderAtomicInt64Features* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderBufferInt64Atomics*: VkBool32
     shaderSharedInt64Atomics*: VkBool32
+
   VkPhysicalDeviceShaderAtomicInt64FeaturesKHR* = object
   VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* = object
     sType*: VkStructureType
@@ -7229,6 +9329,7 @@
     shaderImageFloat32AtomicAdd*: VkBool32
     sparseImageFloat32Atomics*: VkBool32
     sparseImageFloat32AtomicAdd*: VkBool32
+
   VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7244,20 +9345,24 @@
     shaderSharedFloat64AtomicMinMax*: VkBool32
     shaderImageFloat32AtomicMinMax*: VkBool32
     sparseImageFloat32AtomicMinMax*: VkBool32
+
   VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     vertexAttributeInstanceRateDivisor*: VkBool32
     vertexAttributeInstanceRateZeroDivisor*: VkBool32
+
   VkQueueFamilyCheckpointPropertiesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     checkpointExecutionStageMask*: VkPipelineStageFlags
+
   VkCheckpointDataNV* = object
     sType*: VkStructureType
     pNext*: pointer
     stage*: VkPipelineStageFlagBits
     pCheckpointMarker*: pointer
+
   VkPhysicalDeviceDepthStencilResolveProperties* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7265,6 +9370,7 @@
     supportedStencilResolveModes*: VkResolveModeFlags
     independentResolveNone*: VkBool32
     independentResolve*: VkBool32
+
   VkPhysicalDeviceDepthStencilResolvePropertiesKHR* = object
   VkSubpassDescriptionDepthStencilResolve* = object
     sType*: VkStructureType
@@ -7272,20 +9378,24 @@
     depthResolveMode*: VkResolveModeFlagBits
     stencilResolveMode*: VkResolveModeFlagBits
     pDepthStencilResolveAttachment*: ptr VkAttachmentReference2
+
   VkSubpassDescriptionDepthStencilResolveKHR* = object
   VkImageViewASTCDecodeModeEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     decodeMode*: VkFormat
+
   VkPhysicalDeviceASTCDecodeFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     decodeModeSharedExponent*: VkBool32
+
   VkPhysicalDeviceTransformFeedbackFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     transformFeedback*: VkBool32
     geometryStreams*: VkBool32
+
   VkPhysicalDeviceTransformFeedbackPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7299,107 +9409,130 @@
     transformFeedbackStreamsLinesTriangles*: VkBool32
     transformFeedbackRasterizationStreamSelect*: VkBool32
     transformFeedbackDraw*: VkBool32
+
   VkPipelineRasterizationStateStreamCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkPipelineRasterizationStateStreamCreateFlagsEXT
     rasterizationStream*: uint32
+
   VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     representativeFragmentTest*: VkBool32
+
   VkPipelineRepresentativeFragmentTestStateCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     representativeFragmentTestEnable*: VkBool32
+
   VkPhysicalDeviceExclusiveScissorFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     exclusiveScissor*: VkBool32
+
   VkPipelineViewportExclusiveScissorStateCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     exclusiveScissorCount*: uint32
     pExclusiveScissors*: ptr VkRect2D
+
   VkPhysicalDeviceCornerSampledImageFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     cornerSampledImage*: VkBool32
+
   VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     computeDerivativeGroupQuads*: VkBool32
     computeDerivativeGroupLinear*: VkBool32
+
   VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* = object
   VkPhysicalDeviceShaderImageFootprintFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     imageFootprint*: VkBool32
+
   VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     dedicatedAllocationImageAliasing*: VkBool32
+
   VkPhysicalDeviceCopyMemoryIndirectFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     indirectCopy*: VkBool32
+
   VkPhysicalDeviceCopyMemoryIndirectPropertiesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     supportedQueues*: VkQueueFlags
+
   VkPhysicalDeviceMemoryDecompressionFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     memoryDecompression*: VkBool32
+
   VkPhysicalDeviceMemoryDecompressionPropertiesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     decompressionMethods*: VkMemoryDecompressionMethodFlagsNV
     maxDecompressionIndirectCount*: uint64
+
   VkShadingRatePaletteNV* = object
     shadingRatePaletteEntryCount*: uint32
     pShadingRatePaletteEntries*: ptr VkShadingRatePaletteEntryNV
+
   VkPipelineViewportShadingRateImageStateCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     shadingRateImageEnable*: VkBool32
     viewportCount*: uint32
     pShadingRatePalettes*: ptr VkShadingRatePaletteNV
+
   VkPhysicalDeviceShadingRateImageFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     shadingRateImage*: VkBool32
     shadingRateCoarseSampleOrder*: VkBool32
+
   VkPhysicalDeviceShadingRateImagePropertiesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     shadingRateTexelSize*: VkExtent2D
     shadingRatePaletteSize*: uint32
     shadingRateMaxCoarseSamples*: uint32
+
   VkPhysicalDeviceInvocationMaskFeaturesHUAWEI* = object
     sType*: VkStructureType
     pNext*: pointer
     invocationMask*: VkBool32
+
   VkCoarseSampleLocationNV* = object
     pixelX*: uint32
     pixelY*: uint32
     sample*: uint32
+
   VkCoarseSampleOrderCustomNV* = object
     shadingRate*: VkShadingRatePaletteEntryNV
     sampleCount*: uint32
     sampleLocationCount*: uint32
     pSampleLocations*: ptr VkCoarseSampleLocationNV
+
   VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     sampleOrderType*: VkCoarseSampleOrderTypeNV
     customSampleOrderCount*: uint32
     pCustomSampleOrders*: ptr VkCoarseSampleOrderCustomNV
+
   VkPhysicalDeviceMeshShaderFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     taskShader*: VkBool32
     meshShader*: VkBool32
+
   VkPhysicalDeviceMeshShaderPropertiesNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7416,9 +9549,11 @@
     maxMeshMultiviewViewCount*: uint32
     meshOutputPerVertexGranularity*: uint32
     meshOutputPerPrimitiveGranularity*: uint32
+
   VkDrawMeshTasksIndirectCommandNV* = object
     taskCount*: uint32
     firstTask*: uint32
+
   VkPhysicalDeviceMeshShaderFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7427,6 +9562,7 @@
     multiviewMeshShader*: VkBool32
     primitiveFragmentShadingRateMeshShader*: VkBool32
     meshShaderQueries*: VkBool32
+
   VkPhysicalDeviceMeshShaderPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7458,10 +9594,12 @@
     prefersLocalInvocationPrimitiveOutput*: VkBool32
     prefersCompactVertexOutput*: VkBool32
     prefersCompactPrimitiveOutput*: VkBool32
+
   VkDrawMeshTasksIndirectCommandEXT* = object
     groupCountX*: uint32
     groupCountY*: uint32
     groupCountZ*: uint32
+
   VkRayTracingShaderGroupCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7470,6 +9608,7 @@
     closestHitShader*: uint32
     anyHitShader*: uint32
     intersectionShader*: uint32
+
   VkRayTracingShaderGroupCreateInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7479,6 +9618,7 @@
     anyHitShader*: uint32
     intersectionShader*: uint32
     pShaderGroupCaptureReplayHandle*: pointer
+
   VkRayTracingPipelineCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7491,6 +9631,7 @@
     layout*: VkPipelineLayout
     basePipelineHandle*: VkPipeline
     basePipelineIndex*: int32
+
   VkRayTracingPipelineCreateInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7506,6 +9647,7 @@
     layout*: VkPipelineLayout
     basePipelineHandle*: VkPipeline
     basePipelineIndex*: int32
+
   VkGeometryTrianglesNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7520,6 +9662,7 @@
     indexType*: VkIndexType
     transformData*: VkBuffer
     transformOffset*: VkDeviceSize
+
   VkGeometryAABBNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7527,15 +9670,18 @@
     numAABBs*: uint32
     stride*: uint32
     offset*: VkDeviceSize
+
   VkGeometryDataNV* = object
     triangles*: VkGeometryTrianglesNV
     aabbs*: VkGeometryAABBNV
+
   VkGeometryNV* = object
     sType*: VkStructureType
     pNext*: pointer
     geometryType*: VkGeometryTypeKHR
     geometry*: VkGeometryDataNV
     flags*: VkGeometryFlagsKHR
+
   VkAccelerationStructureInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7544,11 +9690,13 @@
     instanceCount*: uint32
     geometryCount*: uint32
     pGeometries*: ptr VkGeometryNV
+
   VkAccelerationStructureCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     compactedSize*: VkDeviceSize
     info*: VkAccelerationStructureInfoNV
+
   VkBindAccelerationStructureMemoryInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7557,21 +9705,25 @@
     memoryOffset*: VkDeviceSize
     deviceIndexCount*: uint32
     pDeviceIndices*: ptr uint32
+
   VkWriteDescriptorSetAccelerationStructureKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     accelerationStructureCount*: uint32
     pAccelerationStructures*: ptr VkAccelerationStructureKHR
+
   VkWriteDescriptorSetAccelerationStructureNV* = object
     sType*: VkStructureType
     pNext*: pointer
     accelerationStructureCount*: uint32
     pAccelerationStructures*: ptr VkAccelerationStructureNV
+
   VkAccelerationStructureMemoryRequirementsInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     thetype*: VkAccelerationStructureMemoryRequirementsTypeNV
     accelerationStructure*: VkAccelerationStructureNV
+
   VkPhysicalDeviceAccelerationStructureFeaturesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7580,6 +9732,7 @@
     accelerationStructureIndirectBuild*: VkBool32
     accelerationStructureHostCommands*: VkBool32
     descriptorBindingAccelerationStructureUpdateAfterBind*: VkBool32
+
   VkPhysicalDeviceRayTracingPipelineFeaturesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7588,10 +9741,12 @@
     rayTracingPipelineShaderGroupHandleCaptureReplayMixed*: VkBool32
     rayTracingPipelineTraceRaysIndirect*: VkBool32
     rayTraversalPrimitiveCulling*: VkBool32
+
   VkPhysicalDeviceRayQueryFeaturesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     rayQuery*: VkBool32
+
   VkPhysicalDeviceAccelerationStructurePropertiesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7603,6 +9758,7 @@
     maxDescriptorSetAccelerationStructures*: uint32
     maxDescriptorSetUpdateAfterBindAccelerationStructures*: uint32
     minAccelerationStructureScratchOffsetAlignment*: uint32
+
   VkPhysicalDeviceRayTracingPipelinePropertiesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7614,6 +9770,7 @@
     maxRayDispatchInvocationCount*: uint32
     shaderGroupHandleAlignment*: uint32
     maxRayHitAttributeSize*: uint32
+
   VkPhysicalDeviceRayTracingPropertiesNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7625,14 +9782,17 @@
     maxInstanceCount*: uint64
     maxTriangleCount*: uint64
     maxDescriptorSetAccelerationStructures*: uint32
+
   VkStridedDeviceAddressRegionKHR* = object
     deviceAddress*: VkDeviceAddress
     stride*: VkDeviceSize
     size*: VkDeviceSize
+
   VkTraceRaysIndirectCommandKHR* = object
     width*: uint32
     height*: uint32
     depth*: uint32
+
   VkTraceRaysIndirectCommand2KHR* = object
     raygenShaderRecordAddress*: VkDeviceAddress
     raygenShaderRecordSize*: VkDeviceSize
@@ -7648,20 +9808,24 @@
     width*: uint32
     height*: uint32
     depth*: uint32
+
   VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     rayTracingMaintenance1*: VkBool32
     rayTracingPipelineTraceRaysIndirect2*: VkBool32
+
   VkDrmFormatModifierPropertiesListEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     drmFormatModifierCount*: uint32
     pDrmFormatModifierProperties*: ptr VkDrmFormatModifierPropertiesEXT
+
   VkDrmFormatModifierPropertiesEXT* = object
     drmFormatModifier*: uint64
     drmFormatModifierPlaneCount*: uint32
     drmFormatModifierTilingFeatures*: VkFormatFeatureFlags
+
   VkPhysicalDeviceImageDrmFormatModifierInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7669,50 +9833,60 @@
     sharingMode*: VkSharingMode
     queueFamilyIndexCount*: uint32
     pQueueFamilyIndices*: ptr uint32
+
   VkImageDrmFormatModifierListCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     drmFormatModifierCount*: uint32
     pDrmFormatModifiers*: ptr uint64
+
   VkImageDrmFormatModifierExplicitCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     drmFormatModifier*: uint64
     drmFormatModifierPlaneCount*: uint32
     pPlaneLayouts*: ptr VkSubresourceLayout
+
   VkImageDrmFormatModifierPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     drmFormatModifier*: uint64
+
   VkImageStencilUsageCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     stencilUsage*: VkImageUsageFlags
+
   VkImageStencilUsageCreateInfoEXT* = object
   VkDeviceMemoryOverallocationCreateInfoAMD* = object
     sType*: VkStructureType
     pNext*: pointer
     overallocationBehavior*: VkMemoryOverallocationBehaviorAMD
+
   VkPhysicalDeviceFragmentDensityMapFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     fragmentDensityMap*: VkBool32
     fragmentDensityMapDynamic*: VkBool32
     fragmentDensityMapNonSubsampledImages*: VkBool32
+
   VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     fragmentDensityMapDeferred*: VkBool32
+
   VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM* = object
     sType*: VkStructureType
     pNext*: pointer
     fragmentDensityMapOffset*: VkBool32
+
   VkPhysicalDeviceFragmentDensityMapPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     minFragmentDensityTexelSize*: VkExtent2D
     maxFragmentDensityTexelSize*: VkExtent2D
     fragmentDensityInvocations*: VkBool32
+
   VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7720,65 +9894,79 @@
     subsampledCoarseReconstructionEarlyAccess*: VkBool32
     maxSubsampledArrayLayers*: uint32
     maxDescriptorSetSubsampledSamplers*: uint32
+
   VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM* = object
     sType*: VkStructureType
     pNext*: pointer
     fragmentDensityOffsetGranularity*: VkExtent2D
+
   VkRenderPassFragmentDensityMapCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     fragmentDensityMapAttachment*: VkAttachmentReference
+
   VkSubpassFragmentDensityMapOffsetEndInfoQCOM* = object
     sType*: VkStructureType
     pNext*: pointer
     fragmentDensityOffsetCount*: uint32
     pFragmentDensityOffsets*: ptr VkOffset2D
+
   VkPhysicalDeviceScalarBlockLayoutFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     scalarBlockLayout*: VkBool32
+
   VkPhysicalDeviceScalarBlockLayoutFeaturesEXT* = object
   VkSurfaceProtectedCapabilitiesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     supportsProtected*: VkBool32
+
   VkPhysicalDeviceUniformBufferStandardLayoutFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     uniformBufferStandardLayout*: VkBool32
+
   VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR* = object
   VkPhysicalDeviceDepthClipEnableFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     depthClipEnable*: VkBool32
+
   VkPipelineRasterizationDepthClipStateCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkPipelineRasterizationDepthClipStateCreateFlagsEXT
     depthClipEnable*: VkBool32
+
   VkPhysicalDeviceMemoryBudgetPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     heapBudget*: array[VK_MAX_MEMORY_HEAPS, VkDeviceSize]
     heapUsage*: array[VK_MAX_MEMORY_HEAPS, VkDeviceSize]
+
   VkPhysicalDeviceMemoryPriorityFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     memoryPriority*: VkBool32
+
   VkMemoryPriorityAllocateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     priority*: float32
+
   VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     pageableDeviceLocalMemory*: VkBool32
+
   VkPhysicalDeviceBufferDeviceAddressFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     bufferDeviceAddress*: VkBool32
     bufferDeviceAddressCaptureReplay*: VkBool32
     bufferDeviceAddressMultiDevice*: VkBool32
+
   VkPhysicalDeviceBufferDeviceAddressFeaturesKHR* = object
   VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* = object
     sType*: VkStructureType
@@ -7786,41 +9974,49 @@
     bufferDeviceAddress*: VkBool32
     bufferDeviceAddressCaptureReplay*: VkBool32
     bufferDeviceAddressMultiDevice*: VkBool32
+
   VkPhysicalDeviceBufferAddressFeaturesEXT* = object
   VkBufferDeviceAddressInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     buffer*: VkBuffer
+
   VkBufferDeviceAddressInfoKHR* = object
   VkBufferDeviceAddressInfoEXT* = object
   VkBufferOpaqueCaptureAddressCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     opaqueCaptureAddress*: uint64
+
   VkBufferOpaqueCaptureAddressCreateInfoKHR* = object
   VkBufferDeviceAddressCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     deviceAddress*: VkDeviceAddress
+
   VkPhysicalDeviceImageViewImageFormatInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     imageViewType*: VkImageViewType
+
   VkFilterCubicImageViewImageFormatPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     filterCubic*: VkBool32
     filterCubicMinmax*: VkBool32
+
   VkPhysicalDeviceImagelessFramebufferFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     imagelessFramebuffer*: VkBool32
+
   VkPhysicalDeviceImagelessFramebufferFeaturesKHR* = object
   VkFramebufferAttachmentsCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     attachmentImageInfoCount*: uint32
     pAttachmentImageInfos*: ptr VkFramebufferAttachmentImageInfo
+
   VkFramebufferAttachmentsCreateInfoKHR* = object
   VkFramebufferAttachmentImageInfo* = object
     sType*: VkStructureType
@@ -7832,27 +10028,32 @@
     layerCount*: uint32
     viewFormatCount*: uint32
     pViewFormats*: ptr VkFormat
+
   VkFramebufferAttachmentImageInfoKHR* = object
   VkRenderPassAttachmentBeginInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     attachmentCount*: uint32
     pAttachments*: ptr VkImageView
+
   VkRenderPassAttachmentBeginInfoKHR* = object
   VkPhysicalDeviceTextureCompressionASTCHDRFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     textureCompressionASTC_HDR*: VkBool32
+
   VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT* = object
   VkPhysicalDeviceCooperativeMatrixFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     cooperativeMatrix*: VkBool32
     cooperativeMatrixRobustBufferAccess*: VkBool32
+
   VkPhysicalDeviceCooperativeMatrixPropertiesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     cooperativeMatrixSupportedStages*: VkShaderStageFlags
+
   VkCooperativeMatrixPropertiesNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7864,24 +10065,29 @@
     CType*: VkComponentTypeNV
     DType*: VkComponentTypeNV
     scope*: VkScopeNV
+
   VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     ycbcrImageArrays*: VkBool32
+
   VkImageViewHandleInfoNVX* = object
     sType*: VkStructureType
     pNext*: pointer
     imageView*: VkImageView
     descriptorType*: VkDescriptorType
     sampler*: VkSampler
+
   VkImageViewAddressPropertiesNVX* = object
     sType*: VkStructureType
     pNext*: pointer
     deviceAddress*: VkDeviceAddress
     size*: VkDeviceSize
+
   VkPipelineCreationFeedback* = object
     flags*: VkPipelineCreationFeedbackFlags
     duration*: uint64
+
   VkPipelineCreationFeedbackEXT* = object
   VkPipelineCreationFeedbackCreateInfo* = object
     sType*: VkStructureType
@@ -7889,28 +10095,34 @@
     pPipelineCreationFeedback*: ptr VkPipelineCreationFeedback
     pipelineStageCreationFeedbackCount*: uint32
     pPipelineStageCreationFeedbacks*: ptr VkPipelineCreationFeedback
+
   VkPipelineCreationFeedbackCreateInfoEXT* = object
   VkPhysicalDevicePresentBarrierFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     presentBarrier*: VkBool32
+
   VkSurfaceCapabilitiesPresentBarrierNV* = object
     sType*: VkStructureType
     pNext*: pointer
     presentBarrierSupported*: VkBool32
+
   VkSwapchainPresentBarrierCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     presentBarrierEnable*: VkBool32
+
   VkPhysicalDevicePerformanceQueryFeaturesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     performanceCounterQueryPools*: VkBool32
     performanceCounterMultipleQueryPools*: VkBool32
+
   VkPhysicalDevicePerformanceQueryPropertiesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     allowCommandBufferQueryCopies*: VkBool32
+
   VkPerformanceCounterKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7918,6 +10130,7 @@
     scope*: VkPerformanceCounterScopeKHR
     storage*: VkPerformanceCounterStorageKHR
     uuid*: array[VK_UUID_SIZE, uint8]
+
   VkPerformanceCounterDescriptionKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7925,12 +10138,14 @@
     name*: array[VK_MAX_DESCRIPTION_SIZE, char]
     category*: array[VK_MAX_DESCRIPTION_SIZE, char]
     description*: array[VK_MAX_DESCRIPTION_SIZE, char]
+
   VkQueryPoolPerformanceCreateInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     queueFamilyIndex*: uint32
     counterIndexCount*: uint32
     pCounterIndices*: ptr uint32
+
   VkPerformanceCounterResultKHR* {.union.} = object
     int32*: int32
     int64*: int64
@@ -7938,32 +10153,39 @@
     uint64*: uint64
     float32*: float32
     float64*: float64
+
   VkAcquireProfilingLockInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkAcquireProfilingLockFlagsKHR
     timeout*: uint64
+
   VkPerformanceQuerySubmitInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     counterPassIndex*: uint32
+
   VkPerformanceQueryReservationInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     maxPerformanceQueriesPerPool*: uint32
+
   VkHeadlessSurfaceCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkHeadlessSurfaceCreateFlagsEXT
+
   VkPhysicalDeviceCoverageReductionModeFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     coverageReductionMode*: VkBool32
+
   VkPipelineCoverageReductionStateCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkPipelineCoverageReductionStateCreateFlagsNV
     coverageReductionMode*: VkCoverageReductionModeNV
+
   VkFramebufferMixedSamplesCombinationNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -7971,99 +10193,120 @@
     rasterizationSamples*: VkSampleCountFlagBits
     depthStencilSamples*: VkSampleCountFlags
     colorSamples*: VkSampleCountFlags
+
   VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderIntegerFunctions2*: VkBool32
+
   VkPerformanceValueDataINTEL* {.union.} = object
     value32*: uint32
     value64*: uint64
     valueFloat*: float32
     valueBool*: VkBool32
     valueString*: cstring
+
   VkPerformanceValueINTEL* = object
     thetype*: VkPerformanceValueTypeINTEL
     data*: VkPerformanceValueDataINTEL
+
   VkInitializePerformanceApiInfoINTEL* = object
     sType*: VkStructureType
     pNext*: pointer
     pUserData*: pointer
+
   VkQueryPoolPerformanceQueryCreateInfoINTEL* = object
     sType*: VkStructureType
     pNext*: pointer
     performanceCountersSampling*: VkQueryPoolSamplingModeINTEL
+
   VkQueryPoolCreateInfoINTEL* = object
   VkPerformanceMarkerInfoINTEL* = object
     sType*: VkStructureType
     pNext*: pointer
     marker*: uint64
+
   VkPerformanceStreamMarkerInfoINTEL* = object
     sType*: VkStructureType
     pNext*: pointer
     marker*: uint32
+
   VkPerformanceOverrideInfoINTEL* = object
     sType*: VkStructureType
     pNext*: pointer
     thetype*: VkPerformanceOverrideTypeINTEL
     enable*: VkBool32
     parameter*: uint64
+
   VkPerformanceConfigurationAcquireInfoINTEL* = object
     sType*: VkStructureType
     pNext*: pointer
     thetype*: VkPerformanceConfigurationTypeINTEL
+
   VkPhysicalDeviceShaderClockFeaturesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderSubgroupClock*: VkBool32
     shaderDeviceClock*: VkBool32
+
   VkPhysicalDeviceIndexTypeUint8FeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     indexTypeUint8*: VkBool32
+
   VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderSMCount*: uint32
     shaderWarpsPerSM*: uint32
+
   VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderSMBuiltins*: VkBool32
+
   VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     fragmentShaderSampleInterlock*: VkBool32
     fragmentShaderPixelInterlock*: VkBool32
     fragmentShaderShadingRateInterlock*: VkBool32
+
   VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     separateDepthStencilLayouts*: VkBool32
+
   VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR* = object
   VkAttachmentReferenceStencilLayout* = object
     sType*: VkStructureType
     pNext*: pointer
     stencilLayout*: VkImageLayout
+
   VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     primitiveTopologyListRestart*: VkBool32
     primitiveTopologyPatchListRestart*: VkBool32
+
   VkAttachmentReferenceStencilLayoutKHR* = object
   VkAttachmentDescriptionStencilLayout* = object
     sType*: VkStructureType
     pNext*: pointer
     stencilInitialLayout*: VkImageLayout
     stencilFinalLayout*: VkImageLayout
+
   VkAttachmentDescriptionStencilLayoutKHR* = object
   VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     pipelineExecutableInfo*: VkBool32
+
   VkPipelineInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     pipeline*: VkPipeline
+
   VkPipelineInfoEXT* = object
   VkPipelineExecutablePropertiesKHR* = object
     sType*: VkStructureType
@@ -8072,16 +10315,19 @@
     name*: array[VK_MAX_DESCRIPTION_SIZE, char]
     description*: array[VK_MAX_DESCRIPTION_SIZE, char]
     subgroupSize*: uint32
+
   VkPipelineExecutableInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     pipeline*: VkPipeline
     executableIndex*: uint32
+
   VkPipelineExecutableStatisticValueKHR* {.union.} = object
     b32*: VkBool32
     i64*: int64
     u64*: uint64
     f64*: float64
+
   VkPipelineExecutableStatisticKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8089,6 +10335,7 @@
     description*: array[VK_MAX_DESCRIPTION_SIZE, char]
     format*: VkPipelineExecutableStatisticFormatKHR
     value*: VkPipelineExecutableStatisticValueKHR
+
   VkPipelineExecutableInternalRepresentationKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8097,15 +10344,18 @@
     isText*: VkBool32
     dataSize*: csize_t
     pData*: pointer
+
   VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderDemoteToHelperInvocation*: VkBool32
+
   VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* = object
   VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     texelBufferAlignment*: VkBool32
+
   VkPhysicalDeviceTexelBufferAlignmentProperties* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8113,12 +10363,14 @@
     storageTexelBufferOffsetSingleTexelAlignment*: VkBool32
     uniformTexelBufferOffsetAlignmentBytes*: VkDeviceSize
     uniformTexelBufferOffsetSingleTexelAlignment*: VkBool32
+
   VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* = object
   VkPhysicalDeviceSubgroupSizeControlFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     subgroupSizeControl*: VkBool32
     computeFullSubgroups*: VkBool32
+
   VkPhysicalDeviceSubgroupSizeControlFeaturesEXT* = object
   VkPhysicalDeviceSubgroupSizeControlProperties* = object
     sType*: VkStructureType
@@ -8127,36 +10379,43 @@
     maxSubgroupSize*: uint32
     maxComputeWorkgroupSubgroups*: uint32
     requiredSubgroupSizeStages*: VkShaderStageFlags
+
   VkPhysicalDeviceSubgroupSizeControlPropertiesEXT* = object
   VkPipelineShaderStageRequiredSubgroupSizeCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     requiredSubgroupSize*: uint32
+
   VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT* = object
   VkSubpassShadingPipelineCreateInfoHUAWEI* = object
     sType*: VkStructureType
     pNext*: pointer
     renderPass*: VkRenderPass
     subpass*: uint32
+
   VkPhysicalDeviceSubpassShadingPropertiesHUAWEI* = object
     sType*: VkStructureType
     pNext*: pointer
     maxSubpassShadingWorkgroupSizeAspectRatio*: uint32
+
   VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI* = object
     sType*: VkStructureType
     pNext*: pointer
     maxWorkGroupCount*: array[3, uint32]
     maxWorkGroupSize*: array[3, uint32]
     maxOutputClusterCount*: uint32
+
   VkMemoryOpaqueCaptureAddressAllocateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     opaqueCaptureAddress*: uint64
+
   VkMemoryOpaqueCaptureAddressAllocateInfoKHR* = object
   VkDeviceMemoryOpaqueCaptureAddressInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     memory*: VkDeviceMemory
+
   VkDeviceMemoryOpaqueCaptureAddressInfoKHR* = object
   VkPhysicalDeviceLineRasterizationFeaturesEXT* = object
     sType*: VkStructureType
@@ -8167,10 +10426,12 @@
     stippledRectangularLines*: VkBool32
     stippledBresenhamLines*: VkBool32
     stippledSmoothLines*: VkBool32
+
   VkPhysicalDeviceLineRasterizationPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     lineSubPixelPrecisionBits*: uint32
+
   VkPipelineRasterizationLineStateCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8178,10 +10439,12 @@
     stippledLineEnable*: VkBool32
     lineStippleFactor*: uint32
     lineStipplePattern*: uint16
+
   VkPhysicalDevicePipelineCreationCacheControlFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     pipelineCreationCacheControl*: VkBool32
+
   VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT* = object
   VkPhysicalDeviceVulkan11Features* = object
     sType*: VkStructureType
@@ -8198,6 +10461,7 @@
     protectedMemory*: VkBool32
     samplerYcbcrConversion*: VkBool32
     shaderDrawParameters*: VkBool32
+
   VkPhysicalDeviceVulkan11Properties* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8216,6 +10480,7 @@
     protectedNoFault*: VkBool32
     maxPerSetDescriptors*: uint32
     maxMemoryAllocationSize*: VkDeviceSize
+
   VkPhysicalDeviceVulkan12Features* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8266,6 +10531,7 @@
     shaderOutputViewportIndex*: VkBool32
     shaderOutputLayer*: VkBool32
     subgroupBroadcastDynamicId*: VkBool32
+
   VkPhysicalDeviceVulkan12Properties* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8321,6 +10587,7 @@
     filterMinmaxImageComponentMapping*: VkBool32
     maxTimelineSemaphoreValueDifference*: uint64
     framebufferIntegerColorSampleCounts*: VkSampleCountFlags
+
   VkPhysicalDeviceVulkan13Features* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8339,6 +10606,7 @@
     dynamicRendering*: VkBool32
     shaderIntegerDotProduct*: VkBool32
     maintenance4*: VkBool32
+
   VkPhysicalDeviceVulkan13Properties* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8372,7 +10640,8 @@
     integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated*: VkBool32
     integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated*: VkBool32
     integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated*: VkBool32
-    integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated*: VkBool32
+    integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated*:
+      VkBool32
     integerDotProductAccumulatingSaturating16BitUnsignedAccelerated*: VkBool32
     integerDotProductAccumulatingSaturating16BitSignedAccelerated*: VkBool32
     integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated*: VkBool32
@@ -8387,25 +10656,30 @@
     uniformTexelBufferOffsetAlignmentBytes*: VkDeviceSize
     uniformTexelBufferOffsetSingleTexelAlignment*: VkBool32
     maxBufferSize*: VkDeviceSize
+
   VkPipelineCompilerControlCreateInfoAMD* = object
     sType*: VkStructureType
     pNext*: pointer
     compilerControlFlags*: VkPipelineCompilerControlFlagsAMD
+
   VkPhysicalDeviceCoherentMemoryFeaturesAMD* = object
     sType*: VkStructureType
     pNext*: pointer
     deviceCoherentMemory*: VkBool32
+
   VkFaultData* = object
     sType*: VkStructureType
     pNext*: pointer
     faultLevel*: VkFaultLevel
     faultType*: VkFaultType
+
   VkFaultCallbackInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     faultCount*: uint32
     pFaults*: ptr VkFaultData
     pfnFaultCallback*: PFN_vkFaultCallbackFunction
+
   VkPhysicalDeviceToolProperties* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8414,37 +10688,45 @@
     purposes*: VkToolPurposeFlags
     description*: array[VK_MAX_DESCRIPTION_SIZE, char]
     layer*: array[VK_MAX_EXTENSION_NAME_SIZE, char]
+
   VkPhysicalDeviceToolPropertiesEXT* = object
   VkSamplerCustomBorderColorCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     customBorderColor*: VkClearColorValue
     format*: VkFormat
+
   VkPhysicalDeviceCustomBorderColorPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     maxCustomBorderColorSamplers*: uint32
+
   VkPhysicalDeviceCustomBorderColorFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     customBorderColors*: VkBool32
     customBorderColorWithoutFormat*: VkBool32
+
   VkSamplerBorderColorComponentMappingCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     components*: VkComponentMapping
     srgb*: VkBool32
+
   VkPhysicalDeviceBorderColorSwizzleFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     borderColorSwizzle*: VkBool32
     borderColorSwizzleFromImage*: VkBool32
+
   VkDeviceOrHostAddressKHR* {.union.} = object
     deviceAddress*: VkDeviceAddress
     hostAddress*: pointer
+
   VkDeviceOrHostAddressConstKHR* {.union.} = object
     deviceAddress*: VkDeviceAddress
     hostAddress*: pointer
+
   VkAccelerationStructureGeometryTrianglesDataKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8455,26 +10737,31 @@
     indexType*: VkIndexType
     indexData*: VkDeviceOrHostAddressConstKHR
     transformData*: VkDeviceOrHostAddressConstKHR
+
   VkAccelerationStructureGeometryAabbsDataKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     data*: VkDeviceOrHostAddressConstKHR
     stride*: VkDeviceSize
+
   VkAccelerationStructureGeometryInstancesDataKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     arrayOfPointers*: VkBool32
     data*: VkDeviceOrHostAddressConstKHR
+
   VkAccelerationStructureGeometryDataKHR* {.union.} = object
     triangles*: VkAccelerationStructureGeometryTrianglesDataKHR
     aabbs*: VkAccelerationStructureGeometryAabbsDataKHR
     instances*: VkAccelerationStructureGeometryInstancesDataKHR
+
   VkAccelerationStructureGeometryKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     geometryType*: VkGeometryTypeKHR
     geometry*: VkAccelerationStructureGeometryDataKHR
     flags*: VkGeometryFlagsKHR
+
   VkAccelerationStructureBuildGeometryInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8487,11 +10774,13 @@
     pGeometries*: ptr VkAccelerationStructureGeometryKHR
     ppGeometries*: ptr ptr VkAccelerationStructureGeometryKHR
     scratchData*: VkDeviceOrHostAddressKHR
+
   VkAccelerationStructureBuildRangeInfoKHR* = object
     primitiveCount*: uint32
     primitiveOffset*: uint32
     firstVertex*: uint32
     transformOffset*: uint32
+
   VkAccelerationStructureCreateInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8501,6 +10790,7 @@
     size*: VkDeviceSize
     thetype*: VkAccelerationStructureTypeKHR
     deviceAddress*: VkDeviceAddress
+
   VkAabbPositionsKHR* = object
     minX*: float32
     minY*: float32
@@ -8508,9 +10798,11 @@
     maxX*: float32
     maxY*: float32
     maxZ*: float32
+
   VkAabbPositionsNV* = object
   VkTransformMatrixKHR* = object
-    matrix*: array[3*4, float32]
+    matrix*: array[3 * 4, float32]
+
   VkTransformMatrixNV* = object
   VkAccelerationStructureInstanceKHR* = object
     transform*: VkTransformMatrixKHR
@@ -8519,62 +10811,74 @@
     instanceShaderBindingTableRecordOffset*: uint32
     flags*: VkGeometryInstanceFlagsKHR
     accelerationStructureReference*: uint64
+
   VkAccelerationStructureInstanceNV* = object
   VkAccelerationStructureDeviceAddressInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     accelerationStructure*: VkAccelerationStructureKHR
+
   VkAccelerationStructureVersionInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     pVersionData*: ptr uint8
+
   VkCopyAccelerationStructureInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     src*: VkAccelerationStructureKHR
     dst*: VkAccelerationStructureKHR
     mode*: VkCopyAccelerationStructureModeKHR
+
   VkCopyAccelerationStructureToMemoryInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     src*: VkAccelerationStructureKHR
     dst*: VkDeviceOrHostAddressKHR
     mode*: VkCopyAccelerationStructureModeKHR
+
   VkCopyMemoryToAccelerationStructureInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     src*: VkDeviceOrHostAddressConstKHR
     dst*: VkAccelerationStructureKHR
     mode*: VkCopyAccelerationStructureModeKHR
+
   VkRayTracingPipelineInterfaceCreateInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     maxPipelineRayPayloadSize*: uint32
     maxPipelineRayHitAttributeSize*: uint32
+
   VkPipelineLibraryCreateInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     libraryCount*: uint32
     pLibraries*: ptr VkPipeline
+
   VkRefreshObjectKHR* = object
     objectType*: VkObjectType
     objectHandle*: uint64
     flags*: VkRefreshObjectFlagsKHR
+
   VkRefreshObjectListKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     objectCount*: uint32
     pObjects*: ptr VkRefreshObjectKHR
+
   VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     extendedDynamicState*: VkBool32
+
   VkPhysicalDeviceExtendedDynamicState2FeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     extendedDynamicState2*: VkBool32
     extendedDynamicState2LogicOp*: VkBool32
     extendedDynamicState2PatchControlPoints*: VkBool32
+
   VkPhysicalDeviceExtendedDynamicState3FeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8609,10 +10913,12 @@
     extendedDynamicState3CoverageReductionMode*: VkBool32
     extendedDynamicState3RepresentativeFragmentTestEnable*: VkBool32
     extendedDynamicState3ShadingRateImageEnable*: VkBool32
+
   VkPhysicalDeviceExtendedDynamicState3PropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     dynamicPrimitiveTopologyUnrestricted*: VkBool32
+
   VkColorBlendEquationEXT* = object
     srcColorBlendFactor*: VkBlendFactor
     dstColorBlendFactor*: VkBlendFactor
@@ -8620,63 +10926,76 @@
     srcAlphaBlendFactor*: VkBlendFactor
     dstAlphaBlendFactor*: VkBlendFactor
     alphaBlendOp*: VkBlendOp
+
   VkColorBlendAdvancedEXT* = object
     advancedBlendOp*: VkBlendOp
     srcPremultiplied*: VkBool32
     dstPremultiplied*: VkBool32
     blendOverlap*: VkBlendOverlapEXT
     clampResults*: VkBool32
+
   VkRenderPassTransformBeginInfoQCOM* = object
     sType*: VkStructureType
     pNext*: pointer
     transform*: VkSurfaceTransformFlagBitsKHR
+
   VkCopyCommandTransformInfoQCOM* = object
     sType*: VkStructureType
     pNext*: pointer
     transform*: VkSurfaceTransformFlagBitsKHR
+
   VkCommandBufferInheritanceRenderPassTransformInfoQCOM* = object
     sType*: VkStructureType
     pNext*: pointer
     transform*: VkSurfaceTransformFlagBitsKHR
     renderArea*: VkRect2D
+
   VkPhysicalDeviceDiagnosticsConfigFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     diagnosticsConfig*: VkBool32
+
   VkDeviceDiagnosticsConfigCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkDeviceDiagnosticsConfigFlagsNV
+
   VkPipelineOfflineCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     pipelineIdentifier*: array[VK_UUID_SIZE, uint8]
     matchControl*: VkPipelineMatchControl
     poolEntrySize*: VkDeviceSize
+
   VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderZeroInitializeWorkgroupMemory*: VkBool32
+
   VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR* = object
   VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderSubgroupUniformControlFlow*: VkBool32
+
   VkPhysicalDeviceRobustness2FeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     robustBufferAccess2*: VkBool32
     robustImageAccess2*: VkBool32
     nullDescriptor*: VkBool32
+
   VkPhysicalDeviceRobustness2PropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     robustStorageBufferAccessSizeAlignment*: VkDeviceSize
     robustUniformBufferAccessSizeAlignment*: VkDeviceSize
+
   VkPhysicalDeviceImageRobustnessFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     robustImageAccess*: VkBool32
+
   VkPhysicalDeviceImageRobustnessFeaturesEXT* = object
   VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR* = object
     sType*: VkStructureType
@@ -8685,26 +11004,31 @@
     workgroupMemoryExplicitLayoutScalarBlockLayout*: VkBool32
     workgroupMemoryExplicitLayout8BitAccess*: VkBool32
     workgroupMemoryExplicitLayout16BitAccess*: VkBool32
+
   VkPhysicalDevice4444FormatsFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     formatA4R4G4B4*: VkBool32
     formatA4B4G4R4*: VkBool32
+
   VkPhysicalDeviceSubpassShadingFeaturesHUAWEI* = object
     sType*: VkStructureType
     pNext*: pointer
     subpassShading*: VkBool32
+
   VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI* = object
     sType*: VkStructureType
     pNext*: pointer
     clustercullingShader*: VkBool32
     multiviewClusterCullingShader*: VkBool32
+
   VkBufferCopy2* = object
     sType*: VkStructureType
     pNext*: pointer
     srcOffset*: VkDeviceSize
     dstOffset*: VkDeviceSize
     size*: VkDeviceSize
+
   VkBufferCopy2KHR* = object
   VkImageCopy2* = object
     sType*: VkStructureType
@@ -8714,6 +11038,7 @@
     dstSubresource*: VkImageSubresourceLayers
     dstOffset*: VkOffset3D
     extent*: VkExtent3D
+
   VkImageCopy2KHR* = object
   VkImageBlit2* = object
     sType*: VkStructureType
@@ -8722,6 +11047,7 @@
     srcOffsets*: array[2, VkOffset3D]
     dstSubresource*: VkImageSubresourceLayers
     dstOffsets*: array[2, VkOffset3D]
+
   VkImageBlit2KHR* = object
   VkBufferImageCopy2* = object
     sType*: VkStructureType
@@ -8732,6 +11058,7 @@
     imageSubresource*: VkImageSubresourceLayers
     imageOffset*: VkOffset3D
     imageExtent*: VkExtent3D
+
   VkBufferImageCopy2KHR* = object
   VkImageResolve2* = object
     sType*: VkStructureType
@@ -8741,6 +11068,7 @@
     dstSubresource*: VkImageSubresourceLayers
     dstOffset*: VkOffset3D
     extent*: VkExtent3D
+
   VkImageResolve2KHR* = object
   VkCopyBufferInfo2* = object
     sType*: VkStructureType
@@ -8749,6 +11077,7 @@
     dstBuffer*: VkBuffer
     regionCount*: uint32
     pRegions*: ptr VkBufferCopy2
+
   VkCopyBufferInfo2KHR* = object
   VkCopyImageInfo2* = object
     sType*: VkStructureType
@@ -8759,6 +11088,7 @@
     dstImageLayout*: VkImageLayout
     regionCount*: uint32
     pRegions*: ptr VkImageCopy2
+
   VkCopyImageInfo2KHR* = object
   VkBlitImageInfo2* = object
     sType*: VkStructureType
@@ -8770,6 +11100,7 @@
     regionCount*: uint32
     pRegions*: ptr VkImageBlit2
     filter*: VkFilter
+
   VkBlitImageInfo2KHR* = object
   VkCopyBufferToImageInfo2* = object
     sType*: VkStructureType
@@ -8779,6 +11110,7 @@
     dstImageLayout*: VkImageLayout
     regionCount*: uint32
     pRegions*: ptr VkBufferImageCopy2
+
   VkCopyBufferToImageInfo2KHR* = object
   VkCopyImageToBufferInfo2* = object
     sType*: VkStructureType
@@ -8788,6 +11120,7 @@
     dstBuffer*: VkBuffer
     regionCount*: uint32
     pRegions*: ptr VkBufferImageCopy2
+
   VkCopyImageToBufferInfo2KHR* = object
   VkResolveImageInfo2* = object
     sType*: VkStructureType
@@ -8798,28 +11131,33 @@
     dstImageLayout*: VkImageLayout
     regionCount*: uint32
     pRegions*: ptr VkImageResolve2
+
   VkResolveImageInfo2KHR* = object
   VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderImageInt64Atomics*: VkBool32
     sparseImageInt64Atomics*: VkBool32
+
   VkFragmentShadingRateAttachmentInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     pFragmentShadingRateAttachment*: ptr VkAttachmentReference2
     shadingRateAttachmentTexelSize*: VkExtent2D
+
   VkPipelineFragmentShadingRateStateCreateInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     fragmentSize*: VkExtent2D
     combinerOps*: array[2, VkFragmentShadingRateCombinerOpKHR]
+
   VkPhysicalDeviceFragmentShadingRateFeaturesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     pipelineFragmentShadingRate*: VkBool32
     primitiveFragmentShadingRate*: VkBool32
     attachmentFragmentShadingRate*: VkBool32
+
   VkPhysicalDeviceFragmentShadingRatePropertiesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8840,15 +11178,18 @@
     fragmentShadingRateWithFragmentShaderInterlock*: VkBool32
     fragmentShadingRateWithCustomSampleLocations*: VkBool32
     fragmentShadingRateStrictMultiplyCombiner*: VkBool32
+
   VkPhysicalDeviceFragmentShadingRateKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     sampleCounts*: VkSampleCountFlags
     fragmentSize*: VkExtent2D
+
   VkPhysicalDeviceShaderTerminateInvocationFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderTerminateInvocation*: VkBool32
+
   VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR* = object
   VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV* = object
     sType*: VkStructureType
@@ -8856,62 +11197,75 @@
     fragmentShadingRateEnums*: VkBool32
     supersampleFragmentShadingRates*: VkBool32
     noInvocationFragmentShadingRates*: VkBool32
+
   VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     maxFragmentShadingRateInvocationCount*: VkSampleCountFlagBits
+
   VkPipelineFragmentShadingRateEnumStateCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     shadingRateType*: VkFragmentShadingRateTypeNV
     shadingRate*: VkFragmentShadingRateNV
     combinerOps*: array[2, VkFragmentShadingRateCombinerOpKHR]
+
   VkAccelerationStructureBuildSizesInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     accelerationStructureSize*: VkDeviceSize
     updateScratchSize*: VkDeviceSize
     buildScratchSize*: VkDeviceSize
+
   VkPhysicalDeviceImage2DViewOf3DFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     image2DViewOf3D*: VkBool32
     sampler2DViewOf3D*: VkBool32
+
   VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     imageSlicedViewOf3D*: VkBool32
+
   VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     mutableDescriptorType*: VkBool32
+
   VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE* = object
   VkMutableDescriptorTypeListEXT* = object
     descriptorTypeCount*: uint32
     pDescriptorTypes*: ptr VkDescriptorType
+
   VkMutableDescriptorTypeListVALVE* = object
   VkMutableDescriptorTypeCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     mutableDescriptorTypeListCount*: uint32
     pMutableDescriptorTypeLists*: ptr VkMutableDescriptorTypeListEXT
+
   VkMutableDescriptorTypeCreateInfoVALVE* = object
   VkPhysicalDeviceDepthClipControlFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     depthClipControl*: VkBool32
+
   VkPipelineViewportDepthClipControlCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     negativeOneToOne*: VkBool32
+
   VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     vertexInputDynamicState*: VkBool32
+
   VkPhysicalDeviceExternalMemoryRDMAFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     externalMemoryRDMA*: VkBool32
+
   VkVertexInputBindingDescription2EXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8919,6 +11273,7 @@
     stride*: uint32
     inputRate*: VkVertexInputRate
     divisor*: uint32
+
   VkVertexInputAttributeDescription2EXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8926,15 +11281,18 @@
     binding*: uint32
     format*: VkFormat
     offset*: uint32
+
   VkPhysicalDeviceColorWriteEnableFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     colorWriteEnable*: VkBool32
+
   VkPipelineColorWriteCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     attachmentCount*: uint32
     pColorWriteEnables*: ptr VkBool32
+
   VkMemoryBarrier2* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -8942,6 +11300,7 @@
     srcAccessMask*: VkAccessFlags2
     dstStageMask*: VkPipelineStageFlags2
     dstAccessMask*: VkAccessFlags2
+
   VkMemoryBarrier2KHR* = object
   VkImageMemoryBarrier2* = object
     sType*: VkStructureType
@@ -8956,6 +11315,7 @@
     dstQueueFamilyIndex*: uint32
     image*: VkImage
     subresourceRange*: VkImageSubresourceRange
+
   VkImageMemoryBarrier2KHR* = object
   VkBufferMemoryBarrier2* = object
     sType*: VkStructureType
@@ -8969,6 +11329,7 @@
     buffer*: VkBuffer
     offset*: VkDeviceSize
     size*: VkDeviceSize
+
   VkBufferMemoryBarrier2KHR* = object
   VkDependencyInfo* = object
     sType*: VkStructureType
@@ -8980,6 +11341,7 @@
     pBufferMemoryBarriers*: ptr VkBufferMemoryBarrier2
     imageMemoryBarrierCount*: uint32
     pImageMemoryBarriers*: ptr VkImageMemoryBarrier2
+
   VkDependencyInfoKHR* = object
   VkSemaphoreSubmitInfo* = object
     sType*: VkStructureType
@@ -8988,12 +11350,14 @@
     value*: uint64
     stageMask*: VkPipelineStageFlags2
     deviceIndex*: uint32
+
   VkSemaphoreSubmitInfoKHR* = object
   VkCommandBufferSubmitInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     commandBuffer*: VkCommandBuffer
     deviceMask*: uint32
+
   VkCommandBufferSubmitInfoKHR* = object
   VkSubmitInfo2* = object
     sType*: VkStructureType
@@ -9005,20 +11369,24 @@
     pCommandBufferInfos*: ptr VkCommandBufferSubmitInfo
     signalSemaphoreInfoCount*: uint32
     pSignalSemaphoreInfos*: ptr VkSemaphoreSubmitInfo
+
   VkSubmitInfo2KHR* = object
   VkQueueFamilyCheckpointProperties2NV* = object
     sType*: VkStructureType
     pNext*: pointer
     checkpointExecutionStageMask*: VkPipelineStageFlags2
+
   VkCheckpointData2NV* = object
     sType*: VkStructureType
     pNext*: pointer
     stage*: VkPipelineStageFlags2
     pCheckpointMarker*: pointer
+
   VkPhysicalDeviceSynchronization2Features* = object
     sType*: VkStructureType
     pNext*: pointer
     synchronization2*: VkBool32
+
   VkPhysicalDeviceSynchronization2FeaturesKHR* = object
   VkPhysicalDeviceVulkanSC10Properties* = object
     sType*: VkStructureType
@@ -9041,11 +11409,13 @@
     maxCallbackFaultCount*: uint32
     maxCommandPoolCommandBuffers*: uint32
     maxCommandBufferSize*: VkDeviceSize
+
   VkPipelinePoolSize* = object
     sType*: VkStructureType
     pNext*: pointer
     poolEntrySize*: VkDeviceSize
     poolEntryCount*: uint32
+
   VkDeviceObjectReservationCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9090,86 +11460,104 @@
     maxPipelineStatisticsQueriesPerPool*: uint32
     maxTimestampQueriesPerPool*: uint32
     maxImmutableSamplersPerDescriptorSetLayout*: uint32
+
   VkCommandPoolMemoryReservationCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
     commandPoolReservedSize*: VkDeviceSize
     commandPoolMaxCommandBuffers*: uint32
+
   VkCommandPoolMemoryConsumption* = object
     sType*: VkStructureType
     pNext*: pointer
     commandPoolAllocated*: VkDeviceSize
     commandPoolReservedSize*: VkDeviceSize
     commandBufferAllocated*: VkDeviceSize
+
   VkPhysicalDeviceVulkanSC10Features* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderAtomicInstructions*: VkBool32
+
   VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     primitivesGeneratedQuery*: VkBool32
     primitivesGeneratedQueryWithRasterizerDiscard*: VkBool32
     primitivesGeneratedQueryWithNonZeroStreams*: VkBool32
+
   VkPhysicalDeviceLegacyDitheringFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     legacyDithering*: VkBool32
+
   VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     multisampledRenderToSingleSampled*: VkBool32
+
   VkSubpassResolvePerformanceQueryEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     optimal*: VkBool32
+
   VkMultisampledRenderToSingleSampledInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     multisampledRenderToSingleSampledEnable*: VkBool32
     rasterizationSamples*: VkSampleCountFlagBits
+
   VkPhysicalDevicePipelineProtectedAccessFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     pipelineProtectedAccess*: VkBool32
+
   VkPhysicalDeviceInheritedViewportScissorFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     inheritedViewportScissor2D*: VkBool32
+
   VkCommandBufferInheritanceViewportScissorInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     viewportScissor2D*: VkBool32
     viewportDepthCount*: uint32
     pViewportDepths*: ptr VkViewport
+
   VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     ycbcr2plane444Formats*: VkBool32
+
   VkPhysicalDeviceProvokingVertexFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     provokingVertexLast*: VkBool32
     transformFeedbackPreservesProvokingVertex*: VkBool32
+
   VkPhysicalDeviceProvokingVertexPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     provokingVertexModePerPipeline*: VkBool32
     transformFeedbackPreservesTriangleFanProvokingVertex*: VkBool32
+
   VkPipelineRasterizationProvokingVertexStateCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     provokingVertexMode*: VkProvokingVertexModeEXT
+
   VkCuModuleCreateInfoNVX* = object
     sType*: VkStructureType
     pNext*: pointer
     dataSize*: csize_t
     pData*: pointer
+
   VkCuFunctionCreateInfoNVX* = object
     sType*: VkStructureType
     pNext*: pointer
     module*: VkCuModuleNVX
     pName*: cstring
+
   VkCuLaunchInfoNVX* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9185,6 +11573,7 @@
     pParams*: ptr pointer
     extraCount*: csize_t
     pExtras*: ptr pointer
+
   VkPhysicalDeviceDescriptorBufferFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9192,6 +11581,7 @@
     descriptorBufferCaptureReplay*: VkBool32
     descriptorBufferImageLayoutIgnored*: VkBool32
     descriptorBufferPushDescriptors*: VkBool32
+
   VkPhysicalDeviceDescriptorBufferPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9228,25 +11618,30 @@
     samplerDescriptorBufferAddressSpaceSize*: VkDeviceSize
     resourceDescriptorBufferAddressSpaceSize*: VkDeviceSize
     descriptorBufferAddressSpaceSize*: VkDeviceSize
+
   VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     combinedImageSamplerDensityMapDescriptorSize*: csize_t
+
   VkDescriptorAddressInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     address*: VkDeviceAddress
     range*: VkDeviceSize
     format*: VkFormat
+
   VkDescriptorBufferBindingInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     address*: VkDeviceAddress
     usage*: VkBufferUsageFlags
+
   VkDescriptorBufferBindingPushDescriptorBufferHandleEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     buffer*: VkBuffer
+
   VkDescriptorDataEXT* {.union.} = object
     pSampler*: ptr VkSampler
     pCombinedImageSampler*: ptr VkDescriptorImageInfo
@@ -9258,40 +11653,49 @@
     pUniformBuffer*: ptr VkDescriptorAddressInfoEXT
     pStorageBuffer*: ptr VkDescriptorAddressInfoEXT
     accelerationStructure*: VkDeviceAddress
+
   VkDescriptorGetInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     thetype*: VkDescriptorType
     data*: VkDescriptorDataEXT
+
   VkBufferCaptureDescriptorDataInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     buffer*: VkBuffer
+
   VkImageCaptureDescriptorDataInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     image*: VkImage
+
   VkImageViewCaptureDescriptorDataInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     imageView*: VkImageView
+
   VkSamplerCaptureDescriptorDataInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     sampler*: VkSampler
+
   VkAccelerationStructureCaptureDescriptorDataInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     accelerationStructure*: VkAccelerationStructureKHR
     accelerationStructureNV*: VkAccelerationStructureNV
+
   VkOpaqueCaptureDescriptorDataCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     opaqueCaptureDescriptorData*: pointer
+
   VkPhysicalDeviceShaderIntegerDotProductFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderIntegerDotProduct*: VkBool32
+
   VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR* = object
   VkPhysicalDeviceShaderIntegerDotProductProperties* = object
     sType*: VkStructureType
@@ -9316,7 +11720,8 @@
     integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated*: VkBool32
     integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated*: VkBool32
     integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated*: VkBool32
-    integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated*: VkBool32
+    integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated*:
+      VkBool32
     integerDotProductAccumulatingSaturating16BitUnsignedAccelerated*: VkBool32
     integerDotProductAccumulatingSaturating16BitSignedAccelerated*: VkBool32
     integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated*: VkBool32
@@ -9326,6 +11731,7 @@
     integerDotProductAccumulatingSaturating64BitUnsignedAccelerated*: VkBool32
     integerDotProductAccumulatingSaturating64BitSignedAccelerated*: VkBool32
     integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated*: VkBool32
+
   VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR* = object
   VkPhysicalDeviceDrmPropertiesEXT* = object
     sType*: VkStructureType
@@ -9336,28 +11742,34 @@
     primaryMinor*: int64
     renderMajor*: int64
     renderMinor*: int64
+
   VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     fragmentShaderBarycentric*: VkBool32
+
   VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     triStripVertexOrderIndependentOfProvokingVertex*: VkBool32
+
   VkPhysicalDeviceRayTracingMotionBlurFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     rayTracingMotionBlur*: VkBool32
     rayTracingMotionBlurPipelineTraceRaysIndirect*: VkBool32
+
   VkAccelerationStructureGeometryMotionTrianglesDataNV* = object
     sType*: VkStructureType
     pNext*: pointer
     vertexData*: VkDeviceOrHostAddressConstKHR
+
   VkAccelerationStructureMotionInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     maxInstances*: uint32
     flags*: VkAccelerationStructureMotionInfoFlagsNV
+
   VkSRTDataNV* = object
     sx*: float32
     a*: float32
@@ -9375,6 +11787,7 @@
     tx*: float32
     ty*: float32
     tz*: float32
+
   VkAccelerationStructureSRTMotionInstanceNV* = object
     transformT0*: VkSRTDataNV
     transformT1*: VkSRTDataNV
@@ -9383,6 +11796,7 @@
     instanceShaderBindingTableRecordOffset*: uint32
     flags*: VkGeometryInstanceFlagsKHR
     accelerationStructureReference*: uint64
+
   VkAccelerationStructureMatrixMotionInstanceNV* = object
     transformT0*: VkTransformMatrixKHR
     transformT1*: VkTransformMatrixKHR
@@ -9391,39 +11805,47 @@
     instanceShaderBindingTableRecordOffset*: uint32
     flags*: VkGeometryInstanceFlagsKHR
     accelerationStructureReference*: uint64
+
   VkAccelerationStructureMotionInstanceDataNV* {.union.} = object
     staticInstance*: VkAccelerationStructureInstanceKHR
     matrixMotionInstance*: VkAccelerationStructureMatrixMotionInstanceNV
     srtMotionInstance*: VkAccelerationStructureSRTMotionInstanceNV
+
   VkAccelerationStructureMotionInstanceNV* = object
     thetype*: VkAccelerationStructureMotionInstanceTypeNV
     flags*: VkAccelerationStructureMotionInstanceFlagsNV
     data*: VkAccelerationStructureMotionInstanceDataNV
+
   VkMemoryGetRemoteAddressInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     memory*: VkDeviceMemory
     handleType*: VkExternalMemoryHandleTypeFlagBits
+
   VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     formatRgba10x6WithoutYCbCrSampler*: VkBool32
+
   VkFormatProperties3* = object
     sType*: VkStructureType
     pNext*: pointer
     linearTilingFeatures*: VkFormatFeatureFlags2
     optimalTilingFeatures*: VkFormatFeatureFlags2
     bufferFeatures*: VkFormatFeatureFlags2
+
   VkFormatProperties3KHR* = object
   VkDrmFormatModifierPropertiesList2EXT* = object
     sType*: VkStructureType
     pNext*: pointer
     drmFormatModifierCount*: uint32
     pDrmFormatModifierProperties*: ptr VkDrmFormatModifierProperties2EXT
+
   VkDrmFormatModifierProperties2EXT* = object
     drmFormatModifier*: uint64
     drmFormatModifierPlaneCount*: uint32
     drmFormatModifierTilingFeatures*: VkFormatFeatureFlags2
+
   VkPipelineRenderingCreateInfo* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9432,6 +11854,7 @@
     pColorAttachmentFormats*: ptr VkFormat
     depthAttachmentFormat*: VkFormat
     stencilAttachmentFormat*: VkFormat
+
   VkPipelineRenderingCreateInfoKHR* = object
   VkRenderingInfo* = object
     sType*: VkStructureType
@@ -9444,6 +11867,7 @@
     pColorAttachments*: ptr VkRenderingAttachmentInfo
     pDepthAttachment*: ptr VkRenderingAttachmentInfo
     pStencilAttachment*: ptr VkRenderingAttachmentInfo
+
   VkRenderingInfoKHR* = object
   VkRenderingAttachmentInfo* = object
     sType*: VkStructureType
@@ -9456,6 +11880,7 @@
     loadOp*: VkAttachmentLoadOp
     storeOp*: VkAttachmentStoreOp
     clearValue*: VkClearValue
+
   VkRenderingAttachmentInfoKHR* = object
   VkRenderingFragmentShadingRateAttachmentInfoKHR* = object
     sType*: VkStructureType
@@ -9463,15 +11888,18 @@
     imageView*: VkImageView
     imageLayout*: VkImageLayout
     shadingRateAttachmentTexelSize*: VkExtent2D
+
   VkRenderingFragmentDensityMapAttachmentInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     imageView*: VkImageView
     imageLayout*: VkImageLayout
+
   VkPhysicalDeviceDynamicRenderingFeatures* = object
     sType*: VkStructureType
     pNext*: pointer
     dynamicRendering*: VkBool32
+
   VkPhysicalDeviceDynamicRenderingFeaturesKHR* = object
   VkCommandBufferInheritanceRenderingInfo* = object
     sType*: VkStructureType
@@ -9483,6 +11911,7 @@
     depthAttachmentFormat*: VkFormat
     stencilAttachmentFormat*: VkFormat
     rasterizationSamples*: VkSampleCountFlagBits
+
   VkCommandBufferInheritanceRenderingInfoKHR* = object
   VkAttachmentSampleCountInfoAMD* = object
     sType*: VkStructureType
@@ -9490,125 +11919,153 @@
     colorAttachmentCount*: uint32
     pColorAttachmentSamples*: ptr VkSampleCountFlagBits
     depthStencilAttachmentSamples*: VkSampleCountFlagBits
+
   VkAttachmentSampleCountInfoNV* = object
   VkMultiviewPerViewAttributesInfoNVX* = object
     sType*: VkStructureType
     pNext*: pointer
     perViewAttributes*: VkBool32
     perViewAttributesPositionXOnly*: VkBool32
+
   VkPhysicalDeviceImageViewMinLodFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     minLod*: VkBool32
+
   VkImageViewMinLodCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     minLod*: float32
+
   VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     rasterizationOrderColorAttachmentAccess*: VkBool32
     rasterizationOrderDepthAttachmentAccess*: VkBool32
     rasterizationOrderStencilAttachmentAccess*: VkBool32
+
   VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM* = object
   VkPhysicalDeviceLinearColorAttachmentFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     linearColorAttachment*: VkBool32
+
   VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     graphicsPipelineLibrary*: VkBool32
+
   VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     graphicsPipelineLibraryFastLinking*: VkBool32
     graphicsPipelineLibraryIndependentInterpolationDecoration*: VkBool32
+
   VkGraphicsPipelineLibraryCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkGraphicsPipelineLibraryFlagsEXT
+
   VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE* = object
     sType*: VkStructureType
     pNext*: pointer
     descriptorSetHostMapping*: VkBool32
+
   VkDescriptorSetBindingReferenceVALVE* = object
     sType*: VkStructureType
     pNext*: pointer
     descriptorSetLayout*: VkDescriptorSetLayout
     binding*: uint32
+
   VkDescriptorSetLayoutHostMappingInfoVALVE* = object
     sType*: VkStructureType
     pNext*: pointer
     descriptorOffset*: csize_t
     descriptorSize*: uint32
+
   VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderModuleIdentifier*: VkBool32
+
   VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderModuleIdentifierAlgorithmUUID*: array[VK_UUID_SIZE, uint8]
+
   VkPipelineShaderStageModuleIdentifierCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     identifierSize*: uint32
     pIdentifier*: ptr uint8
+
   VkShaderModuleIdentifierEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     identifierSize*: uint32
     identifier*: array[VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT, uint8]
+
   VkImageCompressionControlEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkImageCompressionFlagsEXT
     compressionControlPlaneCount*: uint32
     pFixedRateFlags*: ptr VkImageCompressionFixedRateFlagsEXT
+
   VkPhysicalDeviceImageCompressionControlFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     imageCompressionControl*: VkBool32
+
   VkImageCompressionPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     imageCompressionFlags*: VkImageCompressionFlagsEXT
     imageCompressionFixedRateFlags*: VkImageCompressionFixedRateFlagsEXT
+
   VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     imageCompressionControlSwapchain*: VkBool32
+
   VkImageSubresource2EXT* = object
     sType*: VkStructureType
     pNext*: pointer
     imageSubresource*: VkImageSubresource
+
   VkSubresourceLayout2EXT* = object
     sType*: VkStructureType
     pNext*: pointer
     subresourceLayout*: VkSubresourceLayout
+
   VkRenderPassCreationControlEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     disallowMerging*: VkBool32
+
   VkRenderPassCreationFeedbackInfoEXT* = object
     postMergeSubpassCount*: uint32
+
   VkRenderPassCreationFeedbackCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     pRenderPassFeedback*: ptr VkRenderPassCreationFeedbackInfoEXT
+
   VkRenderPassSubpassFeedbackInfoEXT* = object
     subpassMergeStatus*: VkSubpassMergeStatusEXT
     description*: array[VK_MAX_DESCRIPTION_SIZE, char]
     postMergeIndex*: uint32
+
   VkRenderPassSubpassFeedbackCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     pSubpassFeedback*: ptr VkRenderPassSubpassFeedbackInfoEXT
+
   VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     subpassMergeFeedback*: VkBool32
+
   VkMicromapBuildInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9623,6 +12080,7 @@
     scratchData*: VkDeviceOrHostAddressKHR
     triangleArray*: VkDeviceOrHostAddressConstKHR
     triangleArrayStride*: VkDeviceSize
+
   VkMicromapCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9632,53 +12090,63 @@
     size*: VkDeviceSize
     thetype*: VkMicromapTypeEXT
     deviceAddress*: VkDeviceAddress
+
   VkMicromapVersionInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     pVersionData*: ptr uint8
+
   VkCopyMicromapInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     src*: VkMicromapEXT
     dst*: VkMicromapEXT
     mode*: VkCopyMicromapModeEXT
+
   VkCopyMicromapToMemoryInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     src*: VkMicromapEXT
     dst*: VkDeviceOrHostAddressKHR
     mode*: VkCopyMicromapModeEXT
+
   VkCopyMemoryToMicromapInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     src*: VkDeviceOrHostAddressConstKHR
     dst*: VkMicromapEXT
     mode*: VkCopyMicromapModeEXT
+
   VkMicromapBuildSizesInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     micromapSize*: VkDeviceSize
     buildScratchSize*: VkDeviceSize
     discardable*: VkBool32
+
   VkMicromapUsageEXT* = object
     count*: uint32
     subdivisionLevel*: uint32
     format*: uint32
+
   VkMicromapTriangleEXT* = object
     dataOffset*: uint32
     subdivisionLevel*: uint16
     format*: uint16
+
   VkPhysicalDeviceOpacityMicromapFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     micromap*: VkBool32
     micromapCaptureReplay*: VkBool32
     micromapHostCommands*: VkBool32
+
   VkPhysicalDeviceOpacityMicromapPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     maxOpacity2StateSubdivisionLevel*: uint32
     maxOpacity4StateSubdivisionLevel*: uint32
+
   VkAccelerationStructureTrianglesOpacityMicromapEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9690,26 +12158,32 @@
     pUsageCounts*: ptr VkMicromapUsageEXT
     ppUsageCounts*: ptr ptr VkMicromapUsageEXT
     micromap*: VkMicromapEXT
+
   VkPipelinePropertiesIdentifierEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     pipelineIdentifier*: array[VK_UUID_SIZE, uint8]
+
   VkPhysicalDevicePipelinePropertiesFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     pipelinePropertiesIdentifier*: VkBool32
+
   VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderEarlyAndLateFragmentTests*: VkBool32
+
   VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     nonSeamlessCubeMap*: VkBool32
+
   VkPhysicalDevicePipelineRobustnessFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     pipelineRobustness*: VkBool32
+
   VkPipelineRobustnessCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9717,6 +12191,7 @@
     uniformBuffers*: VkPipelineRobustnessBufferBehaviorEXT
     vertexInputs*: VkPipelineRobustnessBufferBehaviorEXT
     images*: VkPipelineRobustnessImageBehaviorEXT
+
   VkPhysicalDevicePipelineRobustnessPropertiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9724,18 +12199,21 @@
     defaultRobustnessUniformBuffers*: VkPipelineRobustnessBufferBehaviorEXT
     defaultRobustnessVertexInputs*: VkPipelineRobustnessBufferBehaviorEXT
     defaultRobustnessImages*: VkPipelineRobustnessImageBehaviorEXT
+
   VkImageViewSampleWeightCreateInfoQCOM* = object
     sType*: VkStructureType
     pNext*: pointer
     filterCenter*: VkOffset2D
     filterSize*: VkExtent2D
     numPhases*: uint32
+
   VkPhysicalDeviceImageProcessingFeaturesQCOM* = object
     sType*: VkStructureType
     pNext*: pointer
     textureSampleWeighted*: VkBool32
     textureBoxFilter*: VkBool32
     textureBlockMatch*: VkBool32
+
   VkPhysicalDeviceImageProcessingPropertiesQCOM* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9743,37 +12221,45 @@
     maxWeightFilterDimension*: VkExtent2D
     maxBlockMatchRegion*: VkExtent2D
     maxBoxFilterBlockSize*: VkExtent2D
+
   VkPhysicalDeviceTilePropertiesFeaturesQCOM* = object
     sType*: VkStructureType
     pNext*: pointer
     tileProperties*: VkBool32
+
   VkTilePropertiesQCOM* = object
     sType*: VkStructureType
     pNext*: pointer
     tileSize*: VkExtent3D
     apronSize*: VkExtent2D
     origin*: VkOffset2D
+
   VkPhysicalDeviceAmigoProfilingFeaturesSEC* = object
     sType*: VkStructureType
     pNext*: pointer
     amigoProfiling*: VkBool32
+
   VkAmigoProfilingSubmitInfoSEC* = object
     sType*: VkStructureType
     pNext*: pointer
     firstDrawTimestamp*: uint64
     swapBufferTimestamp*: uint64
+
   VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     attachmentFeedbackLoopLayout*: VkBool32
+
   VkPhysicalDeviceDepthClampZeroOneFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     depthClampZeroOne*: VkBool32
+
   VkPhysicalDeviceAddressBindingReportFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     reportAddressBinding*: VkBool32
+
   VkDeviceAddressBindingCallbackDataEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9781,10 +12267,12 @@
     baseAddress*: VkDeviceAddress
     size*: VkDeviceSize
     bindingType*: VkDeviceAddressBindingTypeEXT
+
   VkPhysicalDeviceOpticalFlowFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     opticalFlow*: VkBool32
+
   VkPhysicalDeviceOpticalFlowPropertiesNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9799,14 +12287,17 @@
     maxWidth*: uint32
     maxHeight*: uint32
     maxNumRegionsOfInterest*: uint32
+
   VkOpticalFlowImageFormatInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     usage*: VkOpticalFlowUsageFlagsNV
+
   VkOpticalFlowImageFormatPropertiesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     format*: VkFormat
+
   VkOpticalFlowSessionCreateInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9819,37 +12310,44 @@
     hintGridSize*: VkOpticalFlowGridSizeFlagsNV
     performanceLevel*: VkOpticalFlowPerformanceLevelNV
     flags*: VkOpticalFlowSessionCreateFlagsNV
+
   VkOpticalFlowSessionCreatePrivateDataInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     id*: uint32
     size*: uint32
     pPrivateData*: pointer
+
   VkOpticalFlowExecuteInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkOpticalFlowExecuteFlagsNV
     regionCount*: uint32
     pRegions*: ptr VkRect2D
+
   VkPhysicalDeviceFaultFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     deviceFault*: VkBool32
     deviceFaultVendorBinary*: VkBool32
+
   VkDeviceFaultAddressInfoEXT* = object
     addressType*: VkDeviceFaultAddressTypeEXT
     reportedAddress*: VkDeviceAddress
     addressPrecision*: VkDeviceSize
+
   VkDeviceFaultVendorInfoEXT* = object
     description*: array[VK_MAX_DESCRIPTION_SIZE, char]
     vendorFaultCode*: uint64
     vendorFaultData*: uint64
+
   VkDeviceFaultCountsEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     addressInfoCount*: uint32
     vendorInfoCount*: uint32
     vendorBinarySize*: VkDeviceSize
+
   VkDeviceFaultInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9857,6 +12355,7 @@
     pAddressInfos*: ptr VkDeviceFaultAddressInfoEXT
     pVendorInfos*: ptr VkDeviceFaultVendorInfoEXT
     pVendorBinaryData*: pointer
+
   VkDeviceFaultVendorBinaryHeaderVersionOneEXT* = object
     headerSize*: uint32
     headerVersion*: VkDeviceFaultVendorBinaryHeaderVersionEXT
@@ -9867,30 +12366,36 @@
     applicationNameOffset*: uint32
     applicationVersion*: uint32
     engineNameOffset*: uint32
+
   VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     pipelineLibraryGroupHandles*: VkBool32
+
   VkDecompressMemoryRegionNV* = object
     srcAddress*: VkDeviceAddress
     dstAddress*: VkDeviceAddress
     compressedSize*: VkDeviceSize
     decompressedSize*: VkDeviceSize
     decompressionMethod*: VkMemoryDecompressionMethodFlagsNV
+
   VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderCoreMask*: uint64
     shaderCoreCount*: uint32
     shaderWarpsPerCore*: uint32
+
   VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM* = object
     sType*: VkStructureType
     pNext*: pointer
     shaderCoreBuiltins*: VkBool32
+
   VkSurfacePresentModeEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     presentMode*: VkPresentModeKHR
+
   VkSurfacePresentScalingCapabilitiesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -9899,520 +12404,2232 @@
     supportedPresentGravityY*: VkPresentGravityFlagsEXT
     minScaledImageExtent*: VkExtent2D
     maxScaledImageExtent*: VkExtent2D
+
   VkSurfacePresentModeCompatibilityEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     presentModeCount*: uint32
     pPresentModes*: ptr VkPresentModeKHR
+
   VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     swapchainMaintenance1*: VkBool32
+
   VkSwapchainPresentFenceInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     swapchainCount*: uint32
     pFences*: ptr VkFence
+
   VkSwapchainPresentModesCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     presentModeCount*: uint32
     pPresentModes*: ptr VkPresentModeKHR
+
   VkSwapchainPresentModeInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     swapchainCount*: uint32
     pPresentModes*: ptr VkPresentModeKHR
+
   VkSwapchainPresentScalingCreateInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     scalingBehavior*: VkPresentScalingFlagsEXT
     presentGravityX*: VkPresentGravityFlagsEXT
     presentGravityY*: VkPresentGravityFlagsEXT
+
   VkReleaseSwapchainImagesInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     swapchain*: VkSwapchainKHR
     imageIndexCount*: uint32
     pImageIndices*: ptr uint32
+
   VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     rayTracingInvocationReorder*: VkBool32
+
   VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV* = object
     sType*: VkStructureType
     pNext*: pointer
     rayTracingInvocationReorderReorderingHint*: VkRayTracingInvocationReorderModeNV
+
   VkDirectDriverLoadingInfoLUNARG* = object
     sType*: VkStructureType
     pNext*: pointer
     flags*: VkDirectDriverLoadingFlagsLUNARG
     pfnGetInstanceProcAddr*: PFN_vkGetInstanceProcAddrLUNARG
+
   VkDirectDriverLoadingListLUNARG* = object
     sType*: VkStructureType
     pNext*: pointer
     mode*: VkDirectDriverLoadingModeLUNARG
     driverCount*: uint32
     pDrivers*: ptr VkDirectDriverLoadingInfoLUNARG
+
   VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM* = object
     sType*: VkStructureType
     pNext*: pointer
     multiviewPerViewViewports*: VkBool32
+
   VkPhysicalDeviceShaderCorePropertiesARM* = object
     sType*: VkStructureType
     pNext*: pointer
     pixelRate*: uint32
     texelRate*: uint32
     fmaRate*: uint32
+
   VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM* = object
     sType*: VkStructureType
     pNext*: pointer
     multiviewPerViewRenderAreas*: VkBool32
+
   VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM* = object
     sType*: VkStructureType
     pNext*: pointer
     perViewRenderAreaCount*: uint32
     pPerViewRenderAreas*: ptr VkRect2D
+
 # feature VK_VERSION_1_0
 var
-  vkCreateInstance*: proc(pCreateInfo: ptr VkInstanceCreateInfo, pAllocator: ptr VkAllocationCallbacks, pInstance: ptr VkInstance): VkResult {.stdcall.}
-  vkDestroyInstance*: proc(instance: VkInstance, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkEnumeratePhysicalDevices*: proc(instance: VkInstance, pPhysicalDeviceCount: ptr uint32, pPhysicalDevices: ptr VkPhysicalDevice): VkResult {.stdcall.}
-  vkGetPhysicalDeviceFeatures*: proc(physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures): void {.stdcall.}
-  vkGetPhysicalDeviceFormatProperties*: proc(physicalDevice: VkPhysicalDevice, format: VkFormat, pFormatProperties: ptr VkFormatProperties): void {.stdcall.}
-  vkGetPhysicalDeviceImageFormatProperties*: proc(physicalDevice: VkPhysicalDevice, format: VkFormat, thetype: VkImageType, tiling: VkImageTiling, usage: VkImageUsageFlags, flags: VkImageCreateFlags, pImageFormatProperties: ptr VkImageFormatProperties): VkResult {.stdcall.}
-  vkGetPhysicalDeviceProperties*: proc(physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties): void {.stdcall.}
-  vkGetPhysicalDeviceQueueFamilyProperties*: proc(physicalDevice: VkPhysicalDevice, pQueueFamilyPropertyCount: ptr uint32, pQueueFamilyProperties: ptr VkQueueFamilyProperties): void {.stdcall.}
-  vkGetPhysicalDeviceMemoryProperties*: proc(physicalDevice: VkPhysicalDevice, pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties): void {.stdcall.}
-  vkGetDeviceProcAddr*: proc(device: VkDevice, pName: cstring): PFN_vkVoidFunction {.stdcall.}
-  vkCreateDevice*: proc(physicalDevice: VkPhysicalDevice, pCreateInfo: ptr VkDeviceCreateInfo, pAllocator: ptr VkAllocationCallbacks, pDevice: ptr VkDevice): VkResult {.stdcall.}
-  vkDestroyDevice*: proc(device: VkDevice, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkEnumerateInstanceExtensionProperties*: proc(pLayerName: cstring, pPropertyCount: ptr uint32, pProperties: ptr VkExtensionProperties): VkResult {.stdcall.}
-  vkEnumerateDeviceExtensionProperties*: proc(physicalDevice: VkPhysicalDevice, pLayerName: cstring, pPropertyCount: ptr uint32, pProperties: ptr VkExtensionProperties): VkResult {.stdcall.}
-  vkEnumerateInstanceLayerProperties*: proc(pPropertyCount: ptr uint32, pProperties: ptr VkLayerProperties): VkResult {.stdcall.}
-  vkEnumerateDeviceLayerProperties*: proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32, pProperties: ptr VkLayerProperties): VkResult {.stdcall.}
-  vkGetDeviceQueue*: proc(device: VkDevice, queueFamilyIndex: uint32, queueIndex: uint32, pQueue: ptr VkQueue): void {.stdcall.}
-  vkQueueSubmit*: proc(queue: VkQueue, submitCount: uint32, pSubmits: ptr VkSubmitInfo, fence: VkFence): VkResult {.stdcall.}
+  vkCreateInstance*: proc(
+    pCreateInfo: ptr VkInstanceCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pInstance: ptr VkInstance,
+  ): VkResult {.stdcall.}
+  vkDestroyInstance*:
+    proc(instance: VkInstance, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
+  vkEnumeratePhysicalDevices*: proc(
+    instance: VkInstance,
+    pPhysicalDeviceCount: ptr uint32,
+    pPhysicalDevices: ptr VkPhysicalDevice,
+  ): VkResult {.stdcall.}
+  vkGetPhysicalDeviceFeatures*: proc(
+    physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceFormatProperties*: proc(
+    physicalDevice: VkPhysicalDevice,
+    format: VkFormat,
+    pFormatProperties: ptr VkFormatProperties,
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceImageFormatProperties*: proc(
+    physicalDevice: VkPhysicalDevice,
+    format: VkFormat,
+    thetype: VkImageType,
+    tiling: VkImageTiling,
+    usage: VkImageUsageFlags,
+    flags: VkImageCreateFlags,
+    pImageFormatProperties: ptr VkImageFormatProperties,
+  ): VkResult {.stdcall.}
+  vkGetPhysicalDeviceProperties*: proc(
+    physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceQueueFamilyProperties*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pQueueFamilyPropertyCount: ptr uint32,
+    pQueueFamilyProperties: ptr VkQueueFamilyProperties,
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceMemoryProperties*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties,
+  ): void {.stdcall.}
+  vkGetDeviceProcAddr*:
+    proc(device: VkDevice, pName: cstring): PFN_vkVoidFunction {.stdcall.}
+  vkCreateDevice*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pCreateInfo: ptr VkDeviceCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pDevice: ptr VkDevice,
+  ): VkResult {.stdcall.}
+  vkDestroyDevice*:
+    proc(device: VkDevice, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
+  vkEnumerateInstanceExtensionProperties*: proc(
+    pLayerName: cstring,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkExtensionProperties,
+  ): VkResult {.stdcall.}
+  vkEnumerateDeviceExtensionProperties*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pLayerName: cstring,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkExtensionProperties,
+  ): VkResult {.stdcall.}
+  vkEnumerateInstanceLayerProperties*: proc(
+    pPropertyCount: ptr uint32, pProperties: ptr VkLayerProperties
+  ): VkResult {.stdcall.}
+  vkEnumerateDeviceLayerProperties*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkLayerProperties,
+  ): VkResult {.stdcall.}
+  vkGetDeviceQueue*: proc(
+    device: VkDevice, queueFamilyIndex: uint32, queueIndex: uint32, pQueue: ptr VkQueue
+  ): void {.stdcall.}
+  vkQueueSubmit*: proc(
+    queue: VkQueue, submitCount: uint32, pSubmits: ptr VkSubmitInfo, fence: VkFence
+  ): VkResult {.stdcall.}
   vkQueueWaitIdle*: proc(queue: VkQueue): VkResult {.stdcall.}
   vkDeviceWaitIdle*: proc(device: VkDevice): VkResult {.stdcall.}
-  vkAllocateMemory*: proc(device: VkDevice, pAllocateInfo: ptr VkMemoryAllocateInfo, pAllocator: ptr VkAllocationCallbacks, pMemory: ptr VkDeviceMemory): VkResult {.stdcall.}
-  vkFreeMemory*: proc(device: VkDevice, memory: VkDeviceMemory, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkMapMemory*: proc(device: VkDevice, memory: VkDeviceMemory, offset: VkDeviceSize, size: VkDeviceSize, flags: VkMemoryMapFlags, ppData: ptr pointer): VkResult {.stdcall.}
+  vkAllocateMemory*: proc(
+    device: VkDevice,
+    pAllocateInfo: ptr VkMemoryAllocateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pMemory: ptr VkDeviceMemory,
+  ): VkResult {.stdcall.}
+  vkFreeMemory*: proc(
+    device: VkDevice, memory: VkDeviceMemory, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkMapMemory*: proc(
+    device: VkDevice,
+    memory: VkDeviceMemory,
+    offset: VkDeviceSize,
+    size: VkDeviceSize,
+    flags: VkMemoryMapFlags,
+    ppData: ptr pointer,
+  ): VkResult {.stdcall.}
   vkUnmapMemory*: proc(device: VkDevice, memory: VkDeviceMemory): void {.stdcall.}
-  vkFlushMappedMemoryRanges*: proc(device: VkDevice, memoryRangeCount: uint32, pMemoryRanges: ptr VkMappedMemoryRange): VkResult {.stdcall.}
-  vkInvalidateMappedMemoryRanges*: proc(device: VkDevice, memoryRangeCount: uint32, pMemoryRanges: ptr VkMappedMemoryRange): VkResult {.stdcall.}
-  vkGetDeviceMemoryCommitment*: proc(device: VkDevice, memory: VkDeviceMemory, pCommittedMemoryInBytes: ptr VkDeviceSize): void {.stdcall.}
-  vkBindBufferMemory*: proc(device: VkDevice, buffer: VkBuffer, memory: VkDeviceMemory, memoryOffset: VkDeviceSize): VkResult {.stdcall.}
-  vkBindImageMemory*: proc(device: VkDevice, image: VkImage, memory: VkDeviceMemory, memoryOffset: VkDeviceSize): VkResult {.stdcall.}
-  vkGetBufferMemoryRequirements*: proc(device: VkDevice, buffer: VkBuffer, pMemoryRequirements: ptr VkMemoryRequirements): void {.stdcall.}
-  vkGetImageMemoryRequirements*: proc(device: VkDevice, image: VkImage, pMemoryRequirements: ptr VkMemoryRequirements): void {.stdcall.}
-  vkGetImageSparseMemoryRequirements*: proc(device: VkDevice, image: VkImage, pSparseMemoryRequirementCount: ptr uint32, pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements): void {.stdcall.}
-  vkGetPhysicalDeviceSparseImageFormatProperties*: proc(physicalDevice: VkPhysicalDevice, format: VkFormat, thetype: VkImageType, samples: VkSampleCountFlagBits, usage: VkImageUsageFlags, tiling: VkImageTiling, pPropertyCount: ptr uint32, pProperties: ptr VkSparseImageFormatProperties): void {.stdcall.}
-  vkQueueBindSparse*: proc(queue: VkQueue, bindInfoCount: uint32, pBindInfo: ptr VkBindSparseInfo, fence: VkFence): VkResult {.stdcall.}
-  vkCreateFence*: proc(device: VkDevice, pCreateInfo: ptr VkFenceCreateInfo, pAllocator: ptr VkAllocationCallbacks, pFence: ptr VkFence): VkResult {.stdcall.}
-  vkDestroyFence*: proc(device: VkDevice, fence: VkFence, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkResetFences*: proc(device: VkDevice, fenceCount: uint32, pFences: ptr VkFence): VkResult {.stdcall.}
+  vkFlushMappedMemoryRanges*: proc(
+    device: VkDevice, memoryRangeCount: uint32, pMemoryRanges: ptr VkMappedMemoryRange
+  ): VkResult {.stdcall.}
+  vkInvalidateMappedMemoryRanges*: proc(
+    device: VkDevice, memoryRangeCount: uint32, pMemoryRanges: ptr VkMappedMemoryRange
+  ): VkResult {.stdcall.}
+  vkGetDeviceMemoryCommitment*: proc(
+    device: VkDevice, memory: VkDeviceMemory, pCommittedMemoryInBytes: ptr VkDeviceSize
+  ): void {.stdcall.}
+  vkBindBufferMemory*: proc(
+    device: VkDevice,
+    buffer: VkBuffer,
+    memory: VkDeviceMemory,
+    memoryOffset: VkDeviceSize,
+  ): VkResult {.stdcall.}
+  vkBindImageMemory*: proc(
+    device: VkDevice, image: VkImage, memory: VkDeviceMemory, memoryOffset: VkDeviceSize
+  ): VkResult {.stdcall.}
+  vkGetBufferMemoryRequirements*: proc(
+    device: VkDevice, buffer: VkBuffer, pMemoryRequirements: ptr VkMemoryRequirements
+  ): void {.stdcall.}
+  vkGetImageMemoryRequirements*: proc(
+    device: VkDevice, image: VkImage, pMemoryRequirements: ptr VkMemoryRequirements
+  ): void {.stdcall.}
+  vkGetImageSparseMemoryRequirements*: proc(
+    device: VkDevice,
+    image: VkImage,
+    pSparseMemoryRequirementCount: ptr uint32,
+    pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements,
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceSparseImageFormatProperties*: proc(
+    physicalDevice: VkPhysicalDevice,
+    format: VkFormat,
+    thetype: VkImageType,
+    samples: VkSampleCountFlagBits,
+    usage: VkImageUsageFlags,
+    tiling: VkImageTiling,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkSparseImageFormatProperties,
+  ): void {.stdcall.}
+  vkQueueBindSparse*: proc(
+    queue: VkQueue,
+    bindInfoCount: uint32,
+    pBindInfo: ptr VkBindSparseInfo,
+    fence: VkFence,
+  ): VkResult {.stdcall.}
+  vkCreateFence*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkFenceCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pFence: ptr VkFence,
+  ): VkResult {.stdcall.}
+  vkDestroyFence*: proc(
+    device: VkDevice, fence: VkFence, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkResetFences*: proc(
+    device: VkDevice, fenceCount: uint32, pFences: ptr VkFence
+  ): VkResult {.stdcall.}
   vkGetFenceStatus*: proc(device: VkDevice, fence: VkFence): VkResult {.stdcall.}
-  vkWaitForFences*: proc(device: VkDevice, fenceCount: uint32, pFences: ptr VkFence, waitAll: VkBool32, timeout: uint64): VkResult {.stdcall.}
-  vkCreateSemaphore*: proc(device: VkDevice, pCreateInfo: ptr VkSemaphoreCreateInfo, pAllocator: ptr VkAllocationCallbacks, pSemaphore: ptr VkSemaphore): VkResult {.stdcall.}
-  vkDestroySemaphore*: proc(device: VkDevice, semaphore: VkSemaphore, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkCreateEvent*: proc(device: VkDevice, pCreateInfo: ptr VkEventCreateInfo, pAllocator: ptr VkAllocationCallbacks, pEvent: ptr VkEvent): VkResult {.stdcall.}
-  vkDestroyEvent*: proc(device: VkDevice, event: VkEvent, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
+  vkWaitForFences*: proc(
+    device: VkDevice,
+    fenceCount: uint32,
+    pFences: ptr VkFence,
+    waitAll: VkBool32,
+    timeout: uint64,
+  ): VkResult {.stdcall.}
+  vkCreateSemaphore*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkSemaphoreCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSemaphore: ptr VkSemaphore,
+  ): VkResult {.stdcall.}
+  vkDestroySemaphore*: proc(
+    device: VkDevice, semaphore: VkSemaphore, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkCreateEvent*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkEventCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pEvent: ptr VkEvent,
+  ): VkResult {.stdcall.}
+  vkDestroyEvent*: proc(
+    device: VkDevice, event: VkEvent, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
   vkGetEventStatus*: proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}
   vkSetEvent*: proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}
   vkResetEvent*: proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}
-  vkCreateQueryPool*: proc(device: VkDevice, pCreateInfo: ptr VkQueryPoolCreateInfo, pAllocator: ptr VkAllocationCallbacks, pQueryPool: ptr VkQueryPool): VkResult {.stdcall.}
-  vkDestroyQueryPool*: proc(device: VkDevice, queryPool: VkQueryPool, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkGetQueryPoolResults*: proc(device: VkDevice, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32, dataSize: csize_t, pData: pointer, stride: VkDeviceSize, flags: VkQueryResultFlags): VkResult {.stdcall.}
-  vkCreateBuffer*: proc(device: VkDevice, pCreateInfo: ptr VkBufferCreateInfo, pAllocator: ptr VkAllocationCallbacks, pBuffer: ptr VkBuffer): VkResult {.stdcall.}
-  vkDestroyBuffer*: proc(device: VkDevice, buffer: VkBuffer, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkCreateBufferView*: proc(device: VkDevice, pCreateInfo: ptr VkBufferViewCreateInfo, pAllocator: ptr VkAllocationCallbacks, pView: ptr VkBufferView): VkResult {.stdcall.}
-  vkDestroyBufferView*: proc(device: VkDevice, bufferView: VkBufferView, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkCreateImage*: proc(device: VkDevice, pCreateInfo: ptr VkImageCreateInfo, pAllocator: ptr VkAllocationCallbacks, pImage: ptr VkImage): VkResult {.stdcall.}
-  vkDestroyImage*: proc(device: VkDevice, image: VkImage, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkGetImageSubresourceLayout*: proc(device: VkDevice, image: VkImage, pSubresource: ptr VkImageSubresource, pLayout: ptr VkSubresourceLayout): void {.stdcall.}
-  vkCreateImageView*: proc(device: VkDevice, pCreateInfo: ptr VkImageViewCreateInfo, pAllocator: ptr VkAllocationCallbacks, pView: ptr VkImageView): VkResult {.stdcall.}
-  vkDestroyImageView*: proc(device: VkDevice, imageView: VkImageView, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkCreateShaderModule*: proc(device: VkDevice, pCreateInfo: ptr VkShaderModuleCreateInfo, pAllocator: ptr VkAllocationCallbacks, pShaderModule: ptr VkShaderModule): VkResult {.stdcall.}
-  vkDestroyShaderModule*: proc(device: VkDevice, shaderModule: VkShaderModule, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkCreatePipelineCache*: proc(device: VkDevice, pCreateInfo: ptr VkPipelineCacheCreateInfo, pAllocator: ptr VkAllocationCallbacks, pPipelineCache: ptr VkPipelineCache): VkResult {.stdcall.}
-  vkDestroyPipelineCache*: proc(device: VkDevice, pipelineCache: VkPipelineCache, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkGetPipelineCacheData*: proc(device: VkDevice, pipelineCache: VkPipelineCache, pDataSize: ptr csize_t, pData: pointer): VkResult {.stdcall.}
-  vkMergePipelineCaches*: proc(device: VkDevice, dstCache: VkPipelineCache, srcCacheCount: uint32, pSrcCaches: ptr VkPipelineCache): VkResult {.stdcall.}
-  vkCreateGraphicsPipelines*: proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkGraphicsPipelineCreateInfo, pAllocator: ptr VkAllocationCallbacks, pPipelines: ptr VkPipeline): VkResult {.stdcall.}
-  vkCreateComputePipelines*: proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkComputePipelineCreateInfo, pAllocator: ptr VkAllocationCallbacks, pPipelines: ptr VkPipeline): VkResult {.stdcall.}
-  vkDestroyPipeline*: proc(device: VkDevice, pipeline: VkPipeline, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkCreatePipelineLayout*: proc(device: VkDevice, pCreateInfo: ptr VkPipelineLayoutCreateInfo, pAllocator: ptr VkAllocationCallbacks, pPipelineLayout: ptr VkPipelineLayout): VkResult {.stdcall.}
-  vkDestroyPipelineLayout*: proc(device: VkDevice, pipelineLayout: VkPipelineLayout, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkCreateSampler*: proc(device: VkDevice, pCreateInfo: ptr VkSamplerCreateInfo, pAllocator: ptr VkAllocationCallbacks, pSampler: ptr VkSampler): VkResult {.stdcall.}
-  vkDestroySampler*: proc(device: VkDevice, sampler: VkSampler, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkCreateDescriptorSetLayout*: proc(device: VkDevice, pCreateInfo: ptr VkDescriptorSetLayoutCreateInfo, pAllocator: ptr VkAllocationCallbacks, pSetLayout: ptr VkDescriptorSetLayout): VkResult {.stdcall.}
-  vkDestroyDescriptorSetLayout*: proc(device: VkDevice, descriptorSetLayout: VkDescriptorSetLayout, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkCreateDescriptorPool*: proc(device: VkDevice, pCreateInfo: ptr VkDescriptorPoolCreateInfo, pAllocator: ptr VkAllocationCallbacks, pDescriptorPool: ptr VkDescriptorPool): VkResult {.stdcall.}
-  vkDestroyDescriptorPool*: proc(device: VkDevice, descriptorPool: VkDescriptorPool, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkResetDescriptorPool*: proc(device: VkDevice, descriptorPool: VkDescriptorPool, flags: VkDescriptorPoolResetFlags): VkResult {.stdcall.}
-  vkAllocateDescriptorSets*: proc(device: VkDevice, pAllocateInfo: ptr VkDescriptorSetAllocateInfo, pDescriptorSets: ptr VkDescriptorSet): VkResult {.stdcall.}
-  vkFreeDescriptorSets*: proc(device: VkDevice, descriptorPool: VkDescriptorPool, descriptorSetCount: uint32, pDescriptorSets: ptr VkDescriptorSet): VkResult {.stdcall.}
-  vkUpdateDescriptorSets*: proc(device: VkDevice, descriptorWriteCount: uint32, pDescriptorWrites: ptr VkWriteDescriptorSet, descriptorCopyCount: uint32, pDescriptorCopies: ptr VkCopyDescriptorSet): void {.stdcall.}
-  vkCreateFramebuffer*: proc(device: VkDevice, pCreateInfo: ptr VkFramebufferCreateInfo, pAllocator: ptr VkAllocationCallbacks, pFramebuffer: ptr VkFramebuffer): VkResult {.stdcall.}
-  vkDestroyFramebuffer*: proc(device: VkDevice, framebuffer: VkFramebuffer, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkCreateRenderPass*: proc(device: VkDevice, pCreateInfo: ptr VkRenderPassCreateInfo, pAllocator: ptr VkAllocationCallbacks, pRenderPass: ptr VkRenderPass): VkResult {.stdcall.}
-  vkDestroyRenderPass*: proc(device: VkDevice, renderPass: VkRenderPass, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkGetRenderAreaGranularity*: proc(device: VkDevice, renderPass: VkRenderPass, pGranularity: ptr VkExtent2D): void {.stdcall.}
-  vkCreateCommandPool*: proc(device: VkDevice, pCreateInfo: ptr VkCommandPoolCreateInfo, pAllocator: ptr VkAllocationCallbacks, pCommandPool: ptr VkCommandPool): VkResult {.stdcall.}
-  vkDestroyCommandPool*: proc(device: VkDevice, commandPool: VkCommandPool, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkResetCommandPool*: proc(device: VkDevice, commandPool: VkCommandPool, flags: VkCommandPoolResetFlags): VkResult {.stdcall.}
-  vkAllocateCommandBuffers*: proc(device: VkDevice, pAllocateInfo: ptr VkCommandBufferAllocateInfo, pCommandBuffers: ptr VkCommandBuffer): VkResult {.stdcall.}
-  vkFreeCommandBuffers*: proc(device: VkDevice, commandPool: VkCommandPool, commandBufferCount: uint32, pCommandBuffers: ptr VkCommandBuffer): void {.stdcall.}
-  vkBeginCommandBuffer*: proc(commandBuffer: VkCommandBuffer, pBeginInfo: ptr VkCommandBufferBeginInfo): VkResult {.stdcall.}
+  vkCreateQueryPool*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkQueryPoolCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pQueryPool: ptr VkQueryPool,
+  ): VkResult {.stdcall.}
+  vkDestroyQueryPool*: proc(
+    device: VkDevice, queryPool: VkQueryPool, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkGetQueryPoolResults*: proc(
+    device: VkDevice,
+    queryPool: VkQueryPool,
+    firstQuery: uint32,
+    queryCount: uint32,
+    dataSize: csize_t,
+    pData: pointer,
+    stride: VkDeviceSize,
+    flags: VkQueryResultFlags,
+  ): VkResult {.stdcall.}
+  vkCreateBuffer*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkBufferCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pBuffer: ptr VkBuffer,
+  ): VkResult {.stdcall.}
+  vkDestroyBuffer*: proc(
+    device: VkDevice, buffer: VkBuffer, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkCreateBufferView*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkBufferViewCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pView: ptr VkBufferView,
+  ): VkResult {.stdcall.}
+  vkDestroyBufferView*: proc(
+    device: VkDevice, bufferView: VkBufferView, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkCreateImage*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkImageCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pImage: ptr VkImage,
+  ): VkResult {.stdcall.}
+  vkDestroyImage*: proc(
+    device: VkDevice, image: VkImage, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkGetImageSubresourceLayout*: proc(
+    device: VkDevice,
+    image: VkImage,
+    pSubresource: ptr VkImageSubresource,
+    pLayout: ptr VkSubresourceLayout,
+  ): void {.stdcall.}
+  vkCreateImageView*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkImageViewCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pView: ptr VkImageView,
+  ): VkResult {.stdcall.}
+  vkDestroyImageView*: proc(
+    device: VkDevice, imageView: VkImageView, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkCreateShaderModule*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkShaderModuleCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pShaderModule: ptr VkShaderModule,
+  ): VkResult {.stdcall.}
+  vkDestroyShaderModule*: proc(
+    device: VkDevice,
+    shaderModule: VkShaderModule,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkCreatePipelineCache*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkPipelineCacheCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pPipelineCache: ptr VkPipelineCache,
+  ): VkResult {.stdcall.}
+  vkDestroyPipelineCache*: proc(
+    device: VkDevice,
+    pipelineCache: VkPipelineCache,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkGetPipelineCacheData*: proc(
+    device: VkDevice,
+    pipelineCache: VkPipelineCache,
+    pDataSize: ptr csize_t,
+    pData: pointer,
+  ): VkResult {.stdcall.}
+  vkMergePipelineCaches*: proc(
+    device: VkDevice,
+    dstCache: VkPipelineCache,
+    srcCacheCount: uint32,
+    pSrcCaches: ptr VkPipelineCache,
+  ): VkResult {.stdcall.}
+  vkCreateGraphicsPipelines*: proc(
+    device: VkDevice,
+    pipelineCache: VkPipelineCache,
+    createInfoCount: uint32,
+    pCreateInfos: ptr VkGraphicsPipelineCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pPipelines: ptr VkPipeline,
+  ): VkResult {.stdcall.}
+  vkCreateComputePipelines*: proc(
+    device: VkDevice,
+    pipelineCache: VkPipelineCache,
+    createInfoCount: uint32,
+    pCreateInfos: ptr VkComputePipelineCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pPipelines: ptr VkPipeline,
+  ): VkResult {.stdcall.}
+  vkDestroyPipeline*: proc(
+    device: VkDevice, pipeline: VkPipeline, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkCreatePipelineLayout*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkPipelineLayoutCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pPipelineLayout: ptr VkPipelineLayout,
+  ): VkResult {.stdcall.}
+  vkDestroyPipelineLayout*: proc(
+    device: VkDevice,
+    pipelineLayout: VkPipelineLayout,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkCreateSampler*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkSamplerCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSampler: ptr VkSampler,
+  ): VkResult {.stdcall.}
+  vkDestroySampler*: proc(
+    device: VkDevice, sampler: VkSampler, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkCreateDescriptorSetLayout*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkDescriptorSetLayoutCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSetLayout: ptr VkDescriptorSetLayout,
+  ): VkResult {.stdcall.}
+  vkDestroyDescriptorSetLayout*: proc(
+    device: VkDevice,
+    descriptorSetLayout: VkDescriptorSetLayout,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkCreateDescriptorPool*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkDescriptorPoolCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pDescriptorPool: ptr VkDescriptorPool,
+  ): VkResult {.stdcall.}
+  vkDestroyDescriptorPool*: proc(
+    device: VkDevice,
+    descriptorPool: VkDescriptorPool,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkResetDescriptorPool*: proc(
+    device: VkDevice,
+    descriptorPool: VkDescriptorPool,
+    flags: VkDescriptorPoolResetFlags,
+  ): VkResult {.stdcall.}
+  vkAllocateDescriptorSets*: proc(
+    device: VkDevice,
+    pAllocateInfo: ptr VkDescriptorSetAllocateInfo,
+    pDescriptorSets: ptr VkDescriptorSet,
+  ): VkResult {.stdcall.}
+  vkFreeDescriptorSets*: proc(
+    device: VkDevice,
+    descriptorPool: VkDescriptorPool,
+    descriptorSetCount: uint32,
+    pDescriptorSets: ptr VkDescriptorSet,
+  ): VkResult {.stdcall.}
+  vkUpdateDescriptorSets*: proc(
+    device: VkDevice,
+    descriptorWriteCount: uint32,
+    pDescriptorWrites: ptr VkWriteDescriptorSet,
+    descriptorCopyCount: uint32,
+    pDescriptorCopies: ptr VkCopyDescriptorSet,
+  ): void {.stdcall.}
+  vkCreateFramebuffer*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkFramebufferCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pFramebuffer: ptr VkFramebuffer,
+  ): VkResult {.stdcall.}
+  vkDestroyFramebuffer*: proc(
+    device: VkDevice, framebuffer: VkFramebuffer, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkCreateRenderPass*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkRenderPassCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pRenderPass: ptr VkRenderPass,
+  ): VkResult {.stdcall.}
+  vkDestroyRenderPass*: proc(
+    device: VkDevice, renderPass: VkRenderPass, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkGetRenderAreaGranularity*: proc(
+    device: VkDevice, renderPass: VkRenderPass, pGranularity: ptr VkExtent2D
+  ): void {.stdcall.}
+  vkCreateCommandPool*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkCommandPoolCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pCommandPool: ptr VkCommandPool,
+  ): VkResult {.stdcall.}
+  vkDestroyCommandPool*: proc(
+    device: VkDevice, commandPool: VkCommandPool, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkResetCommandPool*: proc(
+    device: VkDevice, commandPool: VkCommandPool, flags: VkCommandPoolResetFlags
+  ): VkResult {.stdcall.}
+  vkAllocateCommandBuffers*: proc(
+    device: VkDevice,
+    pAllocateInfo: ptr VkCommandBufferAllocateInfo,
+    pCommandBuffers: ptr VkCommandBuffer,
+  ): VkResult {.stdcall.}
+  vkFreeCommandBuffers*: proc(
+    device: VkDevice,
+    commandPool: VkCommandPool,
+    commandBufferCount: uint32,
+    pCommandBuffers: ptr VkCommandBuffer,
+  ): void {.stdcall.}
+  vkBeginCommandBuffer*: proc(
+    commandBuffer: VkCommandBuffer, pBeginInfo: ptr VkCommandBufferBeginInfo
+  ): VkResult {.stdcall.}
   vkEndCommandBuffer*: proc(commandBuffer: VkCommandBuffer): VkResult {.stdcall.}
-  vkResetCommandBuffer*: proc(commandBuffer: VkCommandBuffer, flags: VkCommandBufferResetFlags): VkResult {.stdcall.}
-  vkCmdBindPipeline*: proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, pipeline: VkPipeline): void {.stdcall.}
-  vkCmdSetViewport*: proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pViewports: ptr VkViewport): void {.stdcall.}
-  vkCmdSetScissor*: proc(commandBuffer: VkCommandBuffer, firstScissor: uint32, scissorCount: uint32, pScissors: ptr VkRect2D): void {.stdcall.}
-  vkCmdSetLineWidth*: proc(commandBuffer: VkCommandBuffer, lineWidth: float32): void {.stdcall.}
-  vkCmdSetDepthBias*: proc(commandBuffer: VkCommandBuffer, depthBiasConstantFactor: float32, depthBiasClamp: float32, depthBiasSlopeFactor: float32): void {.stdcall.}
-  vkCmdSetBlendConstants*: proc(commandBuffer: VkCommandBuffer, blendConstants: array[4, float32]): void {.stdcall.}
-  vkCmdSetDepthBounds*: proc(commandBuffer: VkCommandBuffer, minDepthBounds: float32, maxDepthBounds: float32): void {.stdcall.}
-  vkCmdSetStencilCompareMask*: proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, compareMask: uint32): void {.stdcall.}
-  vkCmdSetStencilWriteMask*: proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, writeMask: uint32): void {.stdcall.}
-  vkCmdSetStencilReference*: proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, reference: uint32): void {.stdcall.}
-  vkCmdBindDescriptorSets*: proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, layout: VkPipelineLayout, firstSet: uint32, descriptorSetCount: uint32, pDescriptorSets: ptr VkDescriptorSet, dynamicOffsetCount: uint32, pDynamicOffsets: ptr uint32): void {.stdcall.}
-  vkCmdBindIndexBuffer*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, indexType: VkIndexType): void {.stdcall.}
-  vkCmdBindVertexBuffers*: proc(commandBuffer: VkCommandBuffer, firstBinding: uint32, bindingCount: uint32, pBuffers: ptr VkBuffer, pOffsets: ptr VkDeviceSize): void {.stdcall.}
-  vkCmdDraw*: proc(commandBuffer: VkCommandBuffer, vertexCount: uint32, instanceCount: uint32, firstVertex: uint32, firstInstance: uint32): void {.stdcall.}
-  vkCmdDrawIndexed*: proc(commandBuffer: VkCommandBuffer, indexCount: uint32, instanceCount: uint32, firstIndex: uint32, vertexOffset: int32, firstInstance: uint32): void {.stdcall.}
-  vkCmdDrawIndirect*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}
-  vkCmdDrawIndexedIndirect*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}
-  vkCmdDispatch*: proc(commandBuffer: VkCommandBuffer, groupCountX: uint32, groupCountY: uint32, groupCountZ: uint32): void {.stdcall.}
-  vkCmdDispatchIndirect*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize): void {.stdcall.}
-  vkCmdCopyBuffer*: proc(commandBuffer: VkCommandBuffer, srcBuffer: VkBuffer, dstBuffer: VkBuffer, regionCount: uint32, pRegions: ptr VkBufferCopy): void {.stdcall.}
-  vkCmdCopyImage*: proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageCopy): void {.stdcall.}
-  vkCmdBlitImage*: proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageBlit, filter: VkFilter): void {.stdcall.}
-  vkCmdCopyBufferToImage*: proc(commandBuffer: VkCommandBuffer, srcBuffer: VkBuffer, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkBufferImageCopy): void {.stdcall.}
-  vkCmdCopyImageToBuffer*: proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstBuffer: VkBuffer, regionCount: uint32, pRegions: ptr VkBufferImageCopy): void {.stdcall.}
-  vkCmdUpdateBuffer*: proc(commandBuffer: VkCommandBuffer, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, dataSize: VkDeviceSize, pData: pointer): void {.stdcall.}
-  vkCmdFillBuffer*: proc(commandBuffer: VkCommandBuffer, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, size: VkDeviceSize, data: uint32): void {.stdcall.}
-  vkCmdClearColorImage*: proc(commandBuffer: VkCommandBuffer, image: VkImage, imageLayout: VkImageLayout, pColor: ptr VkClearColorValue, rangeCount: uint32, pRanges: ptr VkImageSubresourceRange): void {.stdcall.}
-  vkCmdClearDepthStencilImage*: proc(commandBuffer: VkCommandBuffer, image: VkImage, imageLayout: VkImageLayout, pDepthStencil: ptr VkClearDepthStencilValue, rangeCount: uint32, pRanges: ptr VkImageSubresourceRange): void {.stdcall.}
-  vkCmdClearAttachments*: proc(commandBuffer: VkCommandBuffer, attachmentCount: uint32, pAttachments: ptr VkClearAttachment, rectCount: uint32, pRects: ptr VkClearRect): void {.stdcall.}
-  vkCmdResolveImage*: proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageResolve): void {.stdcall.}
-  vkCmdSetEvent*: proc(commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags): void {.stdcall.}
-  vkCmdResetEvent*: proc(commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags): void {.stdcall.}
-  vkCmdWaitEvents*: proc(commandBuffer: VkCommandBuffer, eventCount: uint32, pEvents: ptr VkEvent, srcStageMask: VkPipelineStageFlags, dstStageMask: VkPipelineStageFlags, memoryBarrierCount: uint32, pMemoryBarriers: ptr VkMemoryBarrier, bufferMemoryBarrierCount: uint32, pBufferMemoryBarriers: ptr VkBufferMemoryBarrier, imageMemoryBarrierCount: uint32, pImageMemoryBarriers: ptr VkImageMemoryBarrier): void {.stdcall.}
-  vkCmdPipelineBarrier*: proc(commandBuffer: VkCommandBuffer, srcStageMask: VkPipelineStageFlags, dstStageMask: VkPipelineStageFlags, dependencyFlags: VkDependencyFlags, memoryBarrierCount: uint32, pMemoryBarriers: ptr VkMemoryBarrier, bufferMemoryBarrierCount: uint32, pBufferMemoryBarriers: ptr VkBufferMemoryBarrier, imageMemoryBarrierCount: uint32, pImageMemoryBarriers: ptr VkImageMemoryBarrier): void {.stdcall.}
-  vkCmdBeginQuery*: proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, flags: VkQueryControlFlags): void {.stdcall.}
-  vkCmdEndQuery*: proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32): void {.stdcall.}
-  vkCmdResetQueryPool*: proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32): void {.stdcall.}
-  vkCmdWriteTimestamp*: proc(commandBuffer: VkCommandBuffer, pipelineStage: VkPipelineStageFlagBits, queryPool: VkQueryPool, query: uint32): void {.stdcall.}
-  vkCmdCopyQueryPoolResults*: proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, stride: VkDeviceSize, flags: VkQueryResultFlags): void {.stdcall.}
-  vkCmdPushConstants*: proc(commandBuffer: VkCommandBuffer, layout: VkPipelineLayout, stageFlags: VkShaderStageFlags, offset: uint32, size: uint32, pValues: pointer): void {.stdcall.}
-  vkCmdBeginRenderPass*: proc(commandBuffer: VkCommandBuffer, pRenderPassBegin: ptr VkRenderPassBeginInfo, contents: VkSubpassContents): void {.stdcall.}
-  vkCmdNextSubpass*: proc(commandBuffer: VkCommandBuffer, contents: VkSubpassContents): void {.stdcall.}
+  vkResetCommandBuffer*: proc(
+    commandBuffer: VkCommandBuffer, flags: VkCommandBufferResetFlags
+  ): VkResult {.stdcall.}
+  vkCmdBindPipeline*: proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineBindPoint: VkPipelineBindPoint,
+    pipeline: VkPipeline,
+  ): void {.stdcall.}
+  vkCmdSetViewport*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstViewport: uint32,
+    viewportCount: uint32,
+    pViewports: ptr VkViewport,
+  ): void {.stdcall.}
+  vkCmdSetScissor*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstScissor: uint32,
+    scissorCount: uint32,
+    pScissors: ptr VkRect2D,
+  ): void {.stdcall.}
+  vkCmdSetLineWidth*:
+    proc(commandBuffer: VkCommandBuffer, lineWidth: float32): void {.stdcall.}
+  vkCmdSetDepthBias*: proc(
+    commandBuffer: VkCommandBuffer,
+    depthBiasConstantFactor: float32,
+    depthBiasClamp: float32,
+    depthBiasSlopeFactor: float32,
+  ): void {.stdcall.}
+  vkCmdSetBlendConstants*: proc(
+    commandBuffer: VkCommandBuffer, blendConstants: array[4, float32]
+  ): void {.stdcall.}
+  vkCmdSetDepthBounds*: proc(
+    commandBuffer: VkCommandBuffer, minDepthBounds: float32, maxDepthBounds: float32
+  ): void {.stdcall.}
+  vkCmdSetStencilCompareMask*: proc(
+    commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, compareMask: uint32
+  ): void {.stdcall.}
+  vkCmdSetStencilWriteMask*: proc(
+    commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, writeMask: uint32
+  ): void {.stdcall.}
+  vkCmdSetStencilReference*: proc(
+    commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, reference: uint32
+  ): void {.stdcall.}
+  vkCmdBindDescriptorSets*: proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineBindPoint: VkPipelineBindPoint,
+    layout: VkPipelineLayout,
+    firstSet: uint32,
+    descriptorSetCount: uint32,
+    pDescriptorSets: ptr VkDescriptorSet,
+    dynamicOffsetCount: uint32,
+    pDynamicOffsets: ptr uint32,
+  ): void {.stdcall.}
+  vkCmdBindIndexBuffer*: proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    indexType: VkIndexType,
+  ): void {.stdcall.}
+  vkCmdBindVertexBuffers*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstBinding: uint32,
+    bindingCount: uint32,
+    pBuffers: ptr VkBuffer,
+    pOffsets: ptr VkDeviceSize,
+  ): void {.stdcall.}
+  vkCmdDraw*: proc(
+    commandBuffer: VkCommandBuffer,
+    vertexCount: uint32,
+    instanceCount: uint32,
+    firstVertex: uint32,
+    firstInstance: uint32,
+  ): void {.stdcall.}
+  vkCmdDrawIndexed*: proc(
+    commandBuffer: VkCommandBuffer,
+    indexCount: uint32,
+    instanceCount: uint32,
+    firstIndex: uint32,
+    vertexOffset: int32,
+    firstInstance: uint32,
+  ): void {.stdcall.}
+  vkCmdDrawIndirect*: proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    drawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}
+  vkCmdDrawIndexedIndirect*: proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    drawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}
+  vkCmdDispatch*: proc(
+    commandBuffer: VkCommandBuffer,
+    groupCountX: uint32,
+    groupCountY: uint32,
+    groupCountZ: uint32,
+  ): void {.stdcall.}
+  vkCmdDispatchIndirect*: proc(
+    commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize
+  ): void {.stdcall.}
+  vkCmdCopyBuffer*: proc(
+    commandBuffer: VkCommandBuffer,
+    srcBuffer: VkBuffer,
+    dstBuffer: VkBuffer,
+    regionCount: uint32,
+    pRegions: ptr VkBufferCopy,
+  ): void {.stdcall.}
+  vkCmdCopyImage*: proc(
+    commandBuffer: VkCommandBuffer,
+    srcImage: VkImage,
+    srcImageLayout: VkImageLayout,
+    dstImage: VkImage,
+    dstImageLayout: VkImageLayout,
+    regionCount: uint32,
+    pRegions: ptr VkImageCopy,
+  ): void {.stdcall.}
+  vkCmdBlitImage*: proc(
+    commandBuffer: VkCommandBuffer,
+    srcImage: VkImage,
+    srcImageLayout: VkImageLayout,
+    dstImage: VkImage,
+    dstImageLayout: VkImageLayout,
+    regionCount: uint32,
+    pRegions: ptr VkImageBlit,
+    filter: VkFilter,
+  ): void {.stdcall.}
+  vkCmdCopyBufferToImage*: proc(
+    commandBuffer: VkCommandBuffer,
+    srcBuffer: VkBuffer,
+    dstImage: VkImage,
+    dstImageLayout: VkImageLayout,
+    regionCount: uint32,
+    pRegions: ptr VkBufferImageCopy,
+  ): void {.stdcall.}
+  vkCmdCopyImageToBuffer*: proc(
+    commandBuffer: VkCommandBuffer,
+    srcImage: VkImage,
+    srcImageLayout: VkImageLayout,
+    dstBuffer: VkBuffer,
+    regionCount: uint32,
+    pRegions: ptr VkBufferImageCopy,
+  ): void {.stdcall.}
+  vkCmdUpdateBuffer*: proc(
+    commandBuffer: VkCommandBuffer,
+    dstBuffer: VkBuffer,
+    dstOffset: VkDeviceSize,
+    dataSize: VkDeviceSize,
+    pData: pointer,
+  ): void {.stdcall.}
+  vkCmdFillBuffer*: proc(
+    commandBuffer: VkCommandBuffer,
+    dstBuffer: VkBuffer,
+    dstOffset: VkDeviceSize,
+    size: VkDeviceSize,
+    data: uint32,
+  ): void {.stdcall.}
+  vkCmdClearColorImage*: proc(
+    commandBuffer: VkCommandBuffer,
+    image: VkImage,
+    imageLayout: VkImageLayout,
+    pColor: ptr VkClearColorValue,
+    rangeCount: uint32,
+    pRanges: ptr VkImageSubresourceRange,
+  ): void {.stdcall.}
+  vkCmdClearDepthStencilImage*: proc(
+    commandBuffer: VkCommandBuffer,
+    image: VkImage,
+    imageLayout: VkImageLayout,
+    pDepthStencil: ptr VkClearDepthStencilValue,
+    rangeCount: uint32,
+    pRanges: ptr VkImageSubresourceRange,
+  ): void {.stdcall.}
+  vkCmdClearAttachments*: proc(
+    commandBuffer: VkCommandBuffer,
+    attachmentCount: uint32,
+    pAttachments: ptr VkClearAttachment,
+    rectCount: uint32,
+    pRects: ptr VkClearRect,
+  ): void {.stdcall.}
+  vkCmdResolveImage*: proc(
+    commandBuffer: VkCommandBuffer,
+    srcImage: VkImage,
+    srcImageLayout: VkImageLayout,
+    dstImage: VkImage,
+    dstImageLayout: VkImageLayout,
+    regionCount: uint32,
+    pRegions: ptr VkImageResolve,
+  ): void {.stdcall.}
+  vkCmdSetEvent*: proc(
+    commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags
+  ): void {.stdcall.}
+  vkCmdResetEvent*: proc(
+    commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags
+  ): void {.stdcall.}
+  vkCmdWaitEvents*: proc(
+    commandBuffer: VkCommandBuffer,
+    eventCount: uint32,
+    pEvents: ptr VkEvent,
+    srcStageMask: VkPipelineStageFlags,
+    dstStageMask: VkPipelineStageFlags,
+    memoryBarrierCount: uint32,
+    pMemoryBarriers: ptr VkMemoryBarrier,
+    bufferMemoryBarrierCount: uint32,
+    pBufferMemoryBarriers: ptr VkBufferMemoryBarrier,
+    imageMemoryBarrierCount: uint32,
+    pImageMemoryBarriers: ptr VkImageMemoryBarrier,
+  ): void {.stdcall.}
+  vkCmdPipelineBarrier*: proc(
+    commandBuffer: VkCommandBuffer,
+    srcStageMask: VkPipelineStageFlags,
+    dstStageMask: VkPipelineStageFlags,
+    dependencyFlags: VkDependencyFlags,
+    memoryBarrierCount: uint32,
+    pMemoryBarriers: ptr VkMemoryBarrier,
+    bufferMemoryBarrierCount: uint32,
+    pBufferMemoryBarriers: ptr VkBufferMemoryBarrier,
+    imageMemoryBarrierCount: uint32,
+    pImageMemoryBarriers: ptr VkImageMemoryBarrier,
+  ): void {.stdcall.}
+  vkCmdBeginQuery*: proc(
+    commandBuffer: VkCommandBuffer,
+    queryPool: VkQueryPool,
+    query: uint32,
+    flags: VkQueryControlFlags,
+  ): void {.stdcall.}
+  vkCmdEndQuery*: proc(
+    commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32
+  ): void {.stdcall.}
+  vkCmdResetQueryPool*: proc(
+    commandBuffer: VkCommandBuffer,
+    queryPool: VkQueryPool,
+    firstQuery: uint32,
+    queryCount: uint32,
+  ): void {.stdcall.}
+  vkCmdWriteTimestamp*: proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineStage: VkPipelineStageFlagBits,
+    queryPool: VkQueryPool,
+    query: uint32,
+  ): void {.stdcall.}
+  vkCmdCopyQueryPoolResults*: proc(
+    commandBuffer: VkCommandBuffer,
+    queryPool: VkQueryPool,
+    firstQuery: uint32,
+    queryCount: uint32,
+    dstBuffer: VkBuffer,
+    dstOffset: VkDeviceSize,
+    stride: VkDeviceSize,
+    flags: VkQueryResultFlags,
+  ): void {.stdcall.}
+  vkCmdPushConstants*: proc(
+    commandBuffer: VkCommandBuffer,
+    layout: VkPipelineLayout,
+    stageFlags: VkShaderStageFlags,
+    offset: uint32,
+    size: uint32,
+    pValues: pointer,
+  ): void {.stdcall.}
+  vkCmdBeginRenderPass*: proc(
+    commandBuffer: VkCommandBuffer,
+    pRenderPassBegin: ptr VkRenderPassBeginInfo,
+    contents: VkSubpassContents,
+  ): void {.stdcall.}
+  vkCmdNextSubpass*:
+    proc(commandBuffer: VkCommandBuffer, contents: VkSubpassContents): void {.stdcall.}
   vkCmdEndRenderPass*: proc(commandBuffer: VkCommandBuffer): void {.stdcall.}
-  vkCmdExecuteCommands*: proc(commandBuffer: VkCommandBuffer, commandBufferCount: uint32, pCommandBuffers: ptr VkCommandBuffer): void {.stdcall.}
+  vkCmdExecuteCommands*: proc(
+    commandBuffer: VkCommandBuffer,
+    commandBufferCount: uint32,
+    pCommandBuffers: ptr VkCommandBuffer,
+  ): void {.stdcall.}
 proc loadVK_VERSION_1_0*(instance: VkInstance) =
-  vkDestroyInstance = cast[proc(instance: VkInstance, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyInstance"))
-  vkEnumeratePhysicalDevices = cast[proc(instance: VkInstance, pPhysicalDeviceCount: ptr uint32, pPhysicalDevices: ptr VkPhysicalDevice): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkEnumeratePhysicalDevices"))
-  vkGetPhysicalDeviceFeatures = cast[proc(physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures"))
-  vkGetPhysicalDeviceFormatProperties = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, pFormatProperties: ptr VkFormatProperties): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties"))
-  vkGetPhysicalDeviceImageFormatProperties = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, thetype: VkImageType, tiling: VkImageTiling, usage: VkImageUsageFlags, flags: VkImageCreateFlags, pImageFormatProperties: ptr VkImageFormatProperties): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceImageFormatProperties"))
-  vkGetPhysicalDeviceProperties = cast[proc(physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties"))
-  vkGetPhysicalDeviceQueueFamilyProperties = cast[proc(physicalDevice: VkPhysicalDevice, pQueueFamilyPropertyCount: ptr uint32, pQueueFamilyProperties: ptr VkQueueFamilyProperties): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties"))
-  vkGetPhysicalDeviceMemoryProperties = cast[proc(physicalDevice: VkPhysicalDevice, pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties"))
-  vkGetDeviceProcAddr = cast[proc(device: VkDevice, pName: cstring): PFN_vkVoidFunction {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceProcAddr"))
-  vkCreateDevice = cast[proc(physicalDevice: VkPhysicalDevice, pCreateInfo: ptr VkDeviceCreateInfo, pAllocator: ptr VkAllocationCallbacks, pDevice: ptr VkDevice): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateDevice"))
-  vkDestroyDevice = cast[proc(device: VkDevice, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyDevice"))
-  vkEnumerateDeviceExtensionProperties = cast[proc(physicalDevice: VkPhysicalDevice, pLayerName: cstring, pPropertyCount: ptr uint32, pProperties: ptr VkExtensionProperties): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkEnumerateDeviceExtensionProperties"))
-  vkEnumerateDeviceLayerProperties = cast[proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32, pProperties: ptr VkLayerProperties): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkEnumerateDeviceLayerProperties"))
-  vkGetDeviceQueue = cast[proc(device: VkDevice, queueFamilyIndex: uint32, queueIndex: uint32, pQueue: ptr VkQueue): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceQueue"))
-  vkQueueSubmit = cast[proc(queue: VkQueue, submitCount: uint32, pSubmits: ptr VkSubmitInfo, fence: VkFence): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkQueueSubmit"))
-  vkQueueWaitIdle = cast[proc(queue: VkQueue): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkQueueWaitIdle"))
-  vkDeviceWaitIdle = cast[proc(device: VkDevice): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDeviceWaitIdle"))
-  vkAllocateMemory = cast[proc(device: VkDevice, pAllocateInfo: ptr VkMemoryAllocateInfo, pAllocator: ptr VkAllocationCallbacks, pMemory: ptr VkDeviceMemory): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAllocateMemory"))
-  vkFreeMemory = cast[proc(device: VkDevice, memory: VkDeviceMemory, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkFreeMemory"))
-  vkMapMemory = cast[proc(device: VkDevice, memory: VkDeviceMemory, offset: VkDeviceSize, size: VkDeviceSize, flags: VkMemoryMapFlags, ppData: ptr pointer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkMapMemory"))
-  vkUnmapMemory = cast[proc(device: VkDevice, memory: VkDeviceMemory): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkUnmapMemory"))
-  vkFlushMappedMemoryRanges = cast[proc(device: VkDevice, memoryRangeCount: uint32, pMemoryRanges: ptr VkMappedMemoryRange): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkFlushMappedMemoryRanges"))
-  vkInvalidateMappedMemoryRanges = cast[proc(device: VkDevice, memoryRangeCount: uint32, pMemoryRanges: ptr VkMappedMemoryRange): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkInvalidateMappedMemoryRanges"))
-  vkGetDeviceMemoryCommitment = cast[proc(device: VkDevice, memory: VkDeviceMemory, pCommittedMemoryInBytes: ptr VkDeviceSize): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceMemoryCommitment"))
-  vkBindBufferMemory = cast[proc(device: VkDevice, buffer: VkBuffer, memory: VkDeviceMemory, memoryOffset: VkDeviceSize): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBindBufferMemory"))
-  vkBindImageMemory = cast[proc(device: VkDevice, image: VkImage, memory: VkDeviceMemory, memoryOffset: VkDeviceSize): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBindImageMemory"))
-  vkGetBufferMemoryRequirements = cast[proc(device: VkDevice, buffer: VkBuffer, pMemoryRequirements: ptr VkMemoryRequirements): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetBufferMemoryRequirements"))
-  vkGetImageMemoryRequirements = cast[proc(device: VkDevice, image: VkImage, pMemoryRequirements: ptr VkMemoryRequirements): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageMemoryRequirements"))
-  vkGetImageSparseMemoryRequirements = cast[proc(device: VkDevice, image: VkImage, pSparseMemoryRequirementCount: ptr uint32, pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageSparseMemoryRequirements"))
-  vkGetPhysicalDeviceSparseImageFormatProperties = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, thetype: VkImageType, samples: VkSampleCountFlagBits, usage: VkImageUsageFlags, tiling: VkImageTiling, pPropertyCount: ptr uint32, pProperties: ptr VkSparseImageFormatProperties): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties"))
-  vkQueueBindSparse = cast[proc(queue: VkQueue, bindInfoCount: uint32, pBindInfo: ptr VkBindSparseInfo, fence: VkFence): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkQueueBindSparse"))
-  vkCreateFence = cast[proc(device: VkDevice, pCreateInfo: ptr VkFenceCreateInfo, pAllocator: ptr VkAllocationCallbacks, pFence: ptr VkFence): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateFence"))
-  vkDestroyFence = cast[proc(device: VkDevice, fence: VkFence, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyFence"))
-  vkResetFences = cast[proc(device: VkDevice, fenceCount: uint32, pFences: ptr VkFence): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkResetFences"))
-  vkGetFenceStatus = cast[proc(device: VkDevice, fence: VkFence): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetFenceStatus"))
-  vkWaitForFences = cast[proc(device: VkDevice, fenceCount: uint32, pFences: ptr VkFence, waitAll: VkBool32, timeout: uint64): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkWaitForFences"))
-  vkCreateSemaphore = cast[proc(device: VkDevice, pCreateInfo: ptr VkSemaphoreCreateInfo, pAllocator: ptr VkAllocationCallbacks, pSemaphore: ptr VkSemaphore): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateSemaphore"))
-  vkDestroySemaphore = cast[proc(device: VkDevice, semaphore: VkSemaphore, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroySemaphore"))
-  vkCreateEvent = cast[proc(device: VkDevice, pCreateInfo: ptr VkEventCreateInfo, pAllocator: ptr VkAllocationCallbacks, pEvent: ptr VkEvent): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateEvent"))
-  vkDestroyEvent = cast[proc(device: VkDevice, event: VkEvent, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyEvent"))
-  vkGetEventStatus = cast[proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetEventStatus"))
-  vkSetEvent = cast[proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSetEvent"))
-  vkResetEvent = cast[proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkResetEvent"))
-  vkCreateQueryPool = cast[proc(device: VkDevice, pCreateInfo: ptr VkQueryPoolCreateInfo, pAllocator: ptr VkAllocationCallbacks, pQueryPool: ptr VkQueryPool): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateQueryPool"))
-  vkDestroyQueryPool = cast[proc(device: VkDevice, queryPool: VkQueryPool, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyQueryPool"))
-  vkGetQueryPoolResults = cast[proc(device: VkDevice, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32, dataSize: csize_t, pData: pointer, stride: VkDeviceSize, flags: VkQueryResultFlags): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetQueryPoolResults"))
-  vkCreateBuffer = cast[proc(device: VkDevice, pCreateInfo: ptr VkBufferCreateInfo, pAllocator: ptr VkAllocationCallbacks, pBuffer: ptr VkBuffer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateBuffer"))
-  vkDestroyBuffer = cast[proc(device: VkDevice, buffer: VkBuffer, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyBuffer"))
-  vkCreateBufferView = cast[proc(device: VkDevice, pCreateInfo: ptr VkBufferViewCreateInfo, pAllocator: ptr VkAllocationCallbacks, pView: ptr VkBufferView): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateBufferView"))
-  vkDestroyBufferView = cast[proc(device: VkDevice, bufferView: VkBufferView, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyBufferView"))
-  vkCreateImage = cast[proc(device: VkDevice, pCreateInfo: ptr VkImageCreateInfo, pAllocator: ptr VkAllocationCallbacks, pImage: ptr VkImage): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateImage"))
-  vkDestroyImage = cast[proc(device: VkDevice, image: VkImage, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyImage"))
-  vkGetImageSubresourceLayout = cast[proc(device: VkDevice, image: VkImage, pSubresource: ptr VkImageSubresource, pLayout: ptr VkSubresourceLayout): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageSubresourceLayout"))
-  vkCreateImageView = cast[proc(device: VkDevice, pCreateInfo: ptr VkImageViewCreateInfo, pAllocator: ptr VkAllocationCallbacks, pView: ptr VkImageView): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateImageView"))
-  vkDestroyImageView = cast[proc(device: VkDevice, imageView: VkImageView, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyImageView"))
-  vkCreateShaderModule = cast[proc(device: VkDevice, pCreateInfo: ptr VkShaderModuleCreateInfo, pAllocator: ptr VkAllocationCallbacks, pShaderModule: ptr VkShaderModule): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateShaderModule"))
-  vkDestroyShaderModule = cast[proc(device: VkDevice, shaderModule: VkShaderModule, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyShaderModule"))
-  vkCreatePipelineCache = cast[proc(device: VkDevice, pCreateInfo: ptr VkPipelineCacheCreateInfo, pAllocator: ptr VkAllocationCallbacks, pPipelineCache: ptr VkPipelineCache): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreatePipelineCache"))
-  vkDestroyPipelineCache = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyPipelineCache"))
-  vkGetPipelineCacheData = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, pDataSize: ptr csize_t, pData: pointer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPipelineCacheData"))
-  vkMergePipelineCaches = cast[proc(device: VkDevice, dstCache: VkPipelineCache, srcCacheCount: uint32, pSrcCaches: ptr VkPipelineCache): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkMergePipelineCaches"))
-  vkCreateGraphicsPipelines = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkGraphicsPipelineCreateInfo, pAllocator: ptr VkAllocationCallbacks, pPipelines: ptr VkPipeline): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateGraphicsPipelines"))
-  vkCreateComputePipelines = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkComputePipelineCreateInfo, pAllocator: ptr VkAllocationCallbacks, pPipelines: ptr VkPipeline): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateComputePipelines"))
-  vkDestroyPipeline = cast[proc(device: VkDevice, pipeline: VkPipeline, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyPipeline"))
-  vkCreatePipelineLayout = cast[proc(device: VkDevice, pCreateInfo: ptr VkPipelineLayoutCreateInfo, pAllocator: ptr VkAllocationCallbacks, pPipelineLayout: ptr VkPipelineLayout): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreatePipelineLayout"))
-  vkDestroyPipelineLayout = cast[proc(device: VkDevice, pipelineLayout: VkPipelineLayout, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyPipelineLayout"))
-  vkCreateSampler = cast[proc(device: VkDevice, pCreateInfo: ptr VkSamplerCreateInfo, pAllocator: ptr VkAllocationCallbacks, pSampler: ptr VkSampler): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateSampler"))
-  vkDestroySampler = cast[proc(device: VkDevice, sampler: VkSampler, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroySampler"))
-  vkCreateDescriptorSetLayout = cast[proc(device: VkDevice, pCreateInfo: ptr VkDescriptorSetLayoutCreateInfo, pAllocator: ptr VkAllocationCallbacks, pSetLayout: ptr VkDescriptorSetLayout): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateDescriptorSetLayout"))
-  vkDestroyDescriptorSetLayout = cast[proc(device: VkDevice, descriptorSetLayout: VkDescriptorSetLayout, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyDescriptorSetLayout"))
-  vkCreateDescriptorPool = cast[proc(device: VkDevice, pCreateInfo: ptr VkDescriptorPoolCreateInfo, pAllocator: ptr VkAllocationCallbacks, pDescriptorPool: ptr VkDescriptorPool): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateDescriptorPool"))
-  vkDestroyDescriptorPool = cast[proc(device: VkDevice, descriptorPool: VkDescriptorPool, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyDescriptorPool"))
-  vkResetDescriptorPool = cast[proc(device: VkDevice, descriptorPool: VkDescriptorPool, flags: VkDescriptorPoolResetFlags): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkResetDescriptorPool"))
-  vkAllocateDescriptorSets = cast[proc(device: VkDevice, pAllocateInfo: ptr VkDescriptorSetAllocateInfo, pDescriptorSets: ptr VkDescriptorSet): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAllocateDescriptorSets"))
-  vkFreeDescriptorSets = cast[proc(device: VkDevice, descriptorPool: VkDescriptorPool, descriptorSetCount: uint32, pDescriptorSets: ptr VkDescriptorSet): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkFreeDescriptorSets"))
-  vkUpdateDescriptorSets = cast[proc(device: VkDevice, descriptorWriteCount: uint32, pDescriptorWrites: ptr VkWriteDescriptorSet, descriptorCopyCount: uint32, pDescriptorCopies: ptr VkCopyDescriptorSet): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkUpdateDescriptorSets"))
-  vkCreateFramebuffer = cast[proc(device: VkDevice, pCreateInfo: ptr VkFramebufferCreateInfo, pAllocator: ptr VkAllocationCallbacks, pFramebuffer: ptr VkFramebuffer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateFramebuffer"))
-  vkDestroyFramebuffer = cast[proc(device: VkDevice, framebuffer: VkFramebuffer, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyFramebuffer"))
-  vkCreateRenderPass = cast[proc(device: VkDevice, pCreateInfo: ptr VkRenderPassCreateInfo, pAllocator: ptr VkAllocationCallbacks, pRenderPass: ptr VkRenderPass): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateRenderPass"))
-  vkDestroyRenderPass = cast[proc(device: VkDevice, renderPass: VkRenderPass, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyRenderPass"))
-  vkGetRenderAreaGranularity = cast[proc(device: VkDevice, renderPass: VkRenderPass, pGranularity: ptr VkExtent2D): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetRenderAreaGranularity"))
-  vkCreateCommandPool = cast[proc(device: VkDevice, pCreateInfo: ptr VkCommandPoolCreateInfo, pAllocator: ptr VkAllocationCallbacks, pCommandPool: ptr VkCommandPool): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateCommandPool"))
-  vkDestroyCommandPool = cast[proc(device: VkDevice, commandPool: VkCommandPool, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyCommandPool"))
-  vkResetCommandPool = cast[proc(device: VkDevice, commandPool: VkCommandPool, flags: VkCommandPoolResetFlags): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkResetCommandPool"))
-  vkAllocateCommandBuffers = cast[proc(device: VkDevice, pAllocateInfo: ptr VkCommandBufferAllocateInfo, pCommandBuffers: ptr VkCommandBuffer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAllocateCommandBuffers"))
-  vkFreeCommandBuffers = cast[proc(device: VkDevice, commandPool: VkCommandPool, commandBufferCount: uint32, pCommandBuffers: ptr VkCommandBuffer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkFreeCommandBuffers"))
-  vkBeginCommandBuffer = cast[proc(commandBuffer: VkCommandBuffer, pBeginInfo: ptr VkCommandBufferBeginInfo): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBeginCommandBuffer"))
-  vkEndCommandBuffer = cast[proc(commandBuffer: VkCommandBuffer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkEndCommandBuffer"))
-  vkResetCommandBuffer = cast[proc(commandBuffer: VkCommandBuffer, flags: VkCommandBufferResetFlags): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkResetCommandBuffer"))
-  vkCmdBindPipeline = cast[proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, pipeline: VkPipeline): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindPipeline"))
-  vkCmdSetViewport = cast[proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pViewports: ptr VkViewport): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetViewport"))
-  vkCmdSetScissor = cast[proc(commandBuffer: VkCommandBuffer, firstScissor: uint32, scissorCount: uint32, pScissors: ptr VkRect2D): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetScissor"))
-  vkCmdSetLineWidth = cast[proc(commandBuffer: VkCommandBuffer, lineWidth: float32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetLineWidth"))
-  vkCmdSetDepthBias = cast[proc(commandBuffer: VkCommandBuffer, depthBiasConstantFactor: float32, depthBiasClamp: float32, depthBiasSlopeFactor: float32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthBias"))
-  vkCmdSetBlendConstants = cast[proc(commandBuffer: VkCommandBuffer, blendConstants: array[4, float32]): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetBlendConstants"))
-  vkCmdSetDepthBounds = cast[proc(commandBuffer: VkCommandBuffer, minDepthBounds: float32, maxDepthBounds: float32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthBounds"))
-  vkCmdSetStencilCompareMask = cast[proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, compareMask: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetStencilCompareMask"))
-  vkCmdSetStencilWriteMask = cast[proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, writeMask: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetStencilWriteMask"))
-  vkCmdSetStencilReference = cast[proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, reference: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetStencilReference"))
-  vkCmdBindDescriptorSets = cast[proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, layout: VkPipelineLayout, firstSet: uint32, descriptorSetCount: uint32, pDescriptorSets: ptr VkDescriptorSet, dynamicOffsetCount: uint32, pDynamicOffsets: ptr uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindDescriptorSets"))
-  vkCmdBindIndexBuffer = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, indexType: VkIndexType): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindIndexBuffer"))
-  vkCmdBindVertexBuffers = cast[proc(commandBuffer: VkCommandBuffer, firstBinding: uint32, bindingCount: uint32, pBuffers: ptr VkBuffer, pOffsets: ptr VkDeviceSize): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindVertexBuffers"))
-  vkCmdDraw = cast[proc(commandBuffer: VkCommandBuffer, vertexCount: uint32, instanceCount: uint32, firstVertex: uint32, firstInstance: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDraw"))
-  vkCmdDrawIndexed = cast[proc(commandBuffer: VkCommandBuffer, indexCount: uint32, instanceCount: uint32, firstIndex: uint32, vertexOffset: int32, firstInstance: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawIndexed"))
-  vkCmdDrawIndirect = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawIndirect"))
-  vkCmdDrawIndexedIndirect = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirect"))
-  vkCmdDispatch = cast[proc(commandBuffer: VkCommandBuffer, groupCountX: uint32, groupCountY: uint32, groupCountZ: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDispatch"))
-  vkCmdDispatchIndirect = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDispatchIndirect"))
-  vkCmdCopyBuffer = cast[proc(commandBuffer: VkCommandBuffer, srcBuffer: VkBuffer, dstBuffer: VkBuffer, regionCount: uint32, pRegions: ptr VkBufferCopy): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyBuffer"))
-  vkCmdCopyImage = cast[proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageCopy): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyImage"))
-  vkCmdBlitImage = cast[proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageBlit, filter: VkFilter): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBlitImage"))
-  vkCmdCopyBufferToImage = cast[proc(commandBuffer: VkCommandBuffer, srcBuffer: VkBuffer, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkBufferImageCopy): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyBufferToImage"))
-  vkCmdCopyImageToBuffer = cast[proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstBuffer: VkBuffer, regionCount: uint32, pRegions: ptr VkBufferImageCopy): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer"))
-  vkCmdUpdateBuffer = cast[proc(commandBuffer: VkCommandBuffer, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, dataSize: VkDeviceSize, pData: pointer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdUpdateBuffer"))
-  vkCmdFillBuffer = cast[proc(commandBuffer: VkCommandBuffer, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, size: VkDeviceSize, data: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdFillBuffer"))
-  vkCmdClearColorImage = cast[proc(commandBuffer: VkCommandBuffer, image: VkImage, imageLayout: VkImageLayout, pColor: ptr VkClearColorValue, rangeCount: uint32, pRanges: ptr VkImageSubresourceRange): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdClearColorImage"))
-  vkCmdClearDepthStencilImage = cast[proc(commandBuffer: VkCommandBuffer, image: VkImage, imageLayout: VkImageLayout, pDepthStencil: ptr VkClearDepthStencilValue, rangeCount: uint32, pRanges: ptr VkImageSubresourceRange): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdClearDepthStencilImage"))
-  vkCmdClearAttachments = cast[proc(commandBuffer: VkCommandBuffer, attachmentCount: uint32, pAttachments: ptr VkClearAttachment, rectCount: uint32, pRects: ptr VkClearRect): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdClearAttachments"))
-  vkCmdResolveImage = cast[proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageResolve): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdResolveImage"))
-  vkCmdSetEvent = cast[proc(commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetEvent"))
-  vkCmdResetEvent = cast[proc(commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdResetEvent"))
-  vkCmdWaitEvents = cast[proc(commandBuffer: VkCommandBuffer, eventCount: uint32, pEvents: ptr VkEvent, srcStageMask: VkPipelineStageFlags, dstStageMask: VkPipelineStageFlags, memoryBarrierCount: uint32, pMemoryBarriers: ptr VkMemoryBarrier, bufferMemoryBarrierCount: uint32, pBufferMemoryBarriers: ptr VkBufferMemoryBarrier, imageMemoryBarrierCount: uint32, pImageMemoryBarriers: ptr VkImageMemoryBarrier): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdWaitEvents"))
-  vkCmdPipelineBarrier = cast[proc(commandBuffer: VkCommandBuffer, srcStageMask: VkPipelineStageFlags, dstStageMask: VkPipelineStageFlags, dependencyFlags: VkDependencyFlags, memoryBarrierCount: uint32, pMemoryBarriers: ptr VkMemoryBarrier, bufferMemoryBarrierCount: uint32, pBufferMemoryBarriers: ptr VkBufferMemoryBarrier, imageMemoryBarrierCount: uint32, pImageMemoryBarriers: ptr VkImageMemoryBarrier): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdPipelineBarrier"))
-  vkCmdBeginQuery = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, flags: VkQueryControlFlags): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginQuery"))
-  vkCmdEndQuery = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdEndQuery"))
-  vkCmdResetQueryPool = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdResetQueryPool"))
-  vkCmdWriteTimestamp = cast[proc(commandBuffer: VkCommandBuffer, pipelineStage: VkPipelineStageFlagBits, queryPool: VkQueryPool, query: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdWriteTimestamp"))
-  vkCmdCopyQueryPoolResults = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, stride: VkDeviceSize, flags: VkQueryResultFlags): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyQueryPoolResults"))
-  vkCmdPushConstants = cast[proc(commandBuffer: VkCommandBuffer, layout: VkPipelineLayout, stageFlags: VkShaderStageFlags, offset: uint32, size: uint32, pValues: pointer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdPushConstants"))
-  vkCmdBeginRenderPass = cast[proc(commandBuffer: VkCommandBuffer, pRenderPassBegin: ptr VkRenderPassBeginInfo, contents: VkSubpassContents): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginRenderPass"))
-  vkCmdNextSubpass = cast[proc(commandBuffer: VkCommandBuffer, contents: VkSubpassContents): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdNextSubpass"))
-  vkCmdEndRenderPass = cast[proc(commandBuffer: VkCommandBuffer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdEndRenderPass"))
-  vkCmdExecuteCommands = cast[proc(commandBuffer: VkCommandBuffer, commandBufferCount: uint32, pCommandBuffers: ptr VkCommandBuffer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdExecuteCommands"))
+  vkDestroyInstance = cast[proc(
+    instance: VkInstance, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyInstance"))
+  vkEnumeratePhysicalDevices = cast[proc(
+    instance: VkInstance,
+    pPhysicalDeviceCount: ptr uint32,
+    pPhysicalDevices: ptr VkPhysicalDevice,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkEnumeratePhysicalDevices"))
+  vkGetPhysicalDeviceFeatures = cast[proc(
+    physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures"))
+  vkGetPhysicalDeviceFormatProperties = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    format: VkFormat,
+    pFormatProperties: ptr VkFormatProperties,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceFormatProperties"
+  ))
+  vkGetPhysicalDeviceImageFormatProperties = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    format: VkFormat,
+    thetype: VkImageType,
+    tiling: VkImageTiling,
+    usage: VkImageUsageFlags,
+    flags: VkImageCreateFlags,
+    pImageFormatProperties: ptr VkImageFormatProperties,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceImageFormatProperties"
+  ))
+  vkGetPhysicalDeviceProperties = cast[proc(
+    physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties"))
+  vkGetPhysicalDeviceQueueFamilyProperties = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pQueueFamilyPropertyCount: ptr uint32,
+    pQueueFamilyProperties: ptr VkQueueFamilyProperties,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceQueueFamilyProperties"
+  ))
+  vkGetPhysicalDeviceMemoryProperties = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceMemoryProperties"
+  ))
+  vkGetDeviceProcAddr = cast[proc(device: VkDevice, pName: cstring): PFN_vkVoidFunction {.
+    stdcall
+  .}](vkGetInstanceProcAddr(instance, "vkGetDeviceProcAddr"))
+  vkCreateDevice = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pCreateInfo: ptr VkDeviceCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pDevice: ptr VkDevice,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateDevice"))
+  vkDestroyDevice = cast[proc(
+    device: VkDevice, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyDevice"))
+  vkEnumerateDeviceExtensionProperties = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pLayerName: cstring,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkExtensionProperties,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkEnumerateDeviceExtensionProperties"
+  ))
+  vkEnumerateDeviceLayerProperties = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkLayerProperties,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkEnumerateDeviceLayerProperties"
+  ))
+  vkGetDeviceQueue = cast[proc(
+    device: VkDevice, queueFamilyIndex: uint32, queueIndex: uint32, pQueue: ptr VkQueue
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceQueue"))
+  vkQueueSubmit = cast[proc(
+    queue: VkQueue, submitCount: uint32, pSubmits: ptr VkSubmitInfo, fence: VkFence
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkQueueSubmit"))
+  vkQueueWaitIdle = cast[proc(queue: VkQueue): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkQueueWaitIdle"
+  ))
+  vkDeviceWaitIdle = cast[proc(device: VkDevice): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkDeviceWaitIdle"
+  ))
+  vkAllocateMemory = cast[proc(
+    device: VkDevice,
+    pAllocateInfo: ptr VkMemoryAllocateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pMemory: ptr VkDeviceMemory,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAllocateMemory"))
+  vkFreeMemory = cast[proc(
+    device: VkDevice, memory: VkDeviceMemory, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkFreeMemory"))
+  vkMapMemory = cast[proc(
+    device: VkDevice,
+    memory: VkDeviceMemory,
+    offset: VkDeviceSize,
+    size: VkDeviceSize,
+    flags: VkMemoryMapFlags,
+    ppData: ptr pointer,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkMapMemory"))
+  vkUnmapMemory = cast[proc(device: VkDevice, memory: VkDeviceMemory): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkUnmapMemory"
+  ))
+  vkFlushMappedMemoryRanges = cast[proc(
+    device: VkDevice, memoryRangeCount: uint32, pMemoryRanges: ptr VkMappedMemoryRange
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkFlushMappedMemoryRanges"))
+  vkInvalidateMappedMemoryRanges = cast[proc(
+    device: VkDevice, memoryRangeCount: uint32, pMemoryRanges: ptr VkMappedMemoryRange
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkInvalidateMappedMemoryRanges"
+  ))
+  vkGetDeviceMemoryCommitment = cast[proc(
+    device: VkDevice, memory: VkDeviceMemory, pCommittedMemoryInBytes: ptr VkDeviceSize
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceMemoryCommitment"))
+  vkBindBufferMemory = cast[proc(
+    device: VkDevice,
+    buffer: VkBuffer,
+    memory: VkDeviceMemory,
+    memoryOffset: VkDeviceSize,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBindBufferMemory"))
+  vkBindImageMemory = cast[proc(
+    device: VkDevice, image: VkImage, memory: VkDeviceMemory, memoryOffset: VkDeviceSize
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBindImageMemory"))
+  vkGetBufferMemoryRequirements = cast[proc(
+    device: VkDevice, buffer: VkBuffer, pMemoryRequirements: ptr VkMemoryRequirements
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetBufferMemoryRequirements"))
+  vkGetImageMemoryRequirements = cast[proc(
+    device: VkDevice, image: VkImage, pMemoryRequirements: ptr VkMemoryRequirements
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageMemoryRequirements"))
+  vkGetImageSparseMemoryRequirements = cast[proc(
+    device: VkDevice,
+    image: VkImage,
+    pSparseMemoryRequirementCount: ptr uint32,
+    pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetImageSparseMemoryRequirements"
+  ))
+  vkGetPhysicalDeviceSparseImageFormatProperties = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    format: VkFormat,
+    thetype: VkImageType,
+    samples: VkSampleCountFlagBits,
+    usage: VkImageUsageFlags,
+    tiling: VkImageTiling,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkSparseImageFormatProperties,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceSparseImageFormatProperties"
+  ))
+  vkQueueBindSparse = cast[proc(
+    queue: VkQueue,
+    bindInfoCount: uint32,
+    pBindInfo: ptr VkBindSparseInfo,
+    fence: VkFence,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkQueueBindSparse"))
+  vkCreateFence = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkFenceCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pFence: ptr VkFence,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateFence"))
+  vkDestroyFence = cast[proc(
+    device: VkDevice, fence: VkFence, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyFence"))
+  vkResetFences = cast[proc(
+    device: VkDevice, fenceCount: uint32, pFences: ptr VkFence
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkResetFences"))
+  vkGetFenceStatus = cast[proc(device: VkDevice, fence: VkFence): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetFenceStatus"
+  ))
+  vkWaitForFences = cast[proc(
+    device: VkDevice,
+    fenceCount: uint32,
+    pFences: ptr VkFence,
+    waitAll: VkBool32,
+    timeout: uint64,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkWaitForFences"))
+  vkCreateSemaphore = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkSemaphoreCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSemaphore: ptr VkSemaphore,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateSemaphore"))
+  vkDestroySemaphore = cast[proc(
+    device: VkDevice, semaphore: VkSemaphore, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroySemaphore"))
+  vkCreateEvent = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkEventCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pEvent: ptr VkEvent,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateEvent"))
+  vkDestroyEvent = cast[proc(
+    device: VkDevice, event: VkEvent, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyEvent"))
+  vkGetEventStatus = cast[proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetEventStatus"
+  ))
+  vkSetEvent = cast[proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkSetEvent"
+  ))
+  vkResetEvent = cast[proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkResetEvent"
+  ))
+  vkCreateQueryPool = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkQueryPoolCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pQueryPool: ptr VkQueryPool,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateQueryPool"))
+  vkDestroyQueryPool = cast[proc(
+    device: VkDevice, queryPool: VkQueryPool, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyQueryPool"))
+  vkGetQueryPoolResults = cast[proc(
+    device: VkDevice,
+    queryPool: VkQueryPool,
+    firstQuery: uint32,
+    queryCount: uint32,
+    dataSize: csize_t,
+    pData: pointer,
+    stride: VkDeviceSize,
+    flags: VkQueryResultFlags,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetQueryPoolResults"))
+  vkCreateBuffer = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkBufferCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pBuffer: ptr VkBuffer,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateBuffer"))
+  vkDestroyBuffer = cast[proc(
+    device: VkDevice, buffer: VkBuffer, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyBuffer"))
+  vkCreateBufferView = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkBufferViewCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pView: ptr VkBufferView,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateBufferView"))
+  vkDestroyBufferView = cast[proc(
+    device: VkDevice, bufferView: VkBufferView, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyBufferView"))
+  vkCreateImage = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkImageCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pImage: ptr VkImage,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateImage"))
+  vkDestroyImage = cast[proc(
+    device: VkDevice, image: VkImage, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyImage"))
+  vkGetImageSubresourceLayout = cast[proc(
+    device: VkDevice,
+    image: VkImage,
+    pSubresource: ptr VkImageSubresource,
+    pLayout: ptr VkSubresourceLayout,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageSubresourceLayout"))
+  vkCreateImageView = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkImageViewCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pView: ptr VkImageView,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateImageView"))
+  vkDestroyImageView = cast[proc(
+    device: VkDevice, imageView: VkImageView, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyImageView"))
+  vkCreateShaderModule = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkShaderModuleCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pShaderModule: ptr VkShaderModule,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateShaderModule"))
+  vkDestroyShaderModule = cast[proc(
+    device: VkDevice,
+    shaderModule: VkShaderModule,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyShaderModule"))
+  vkCreatePipelineCache = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkPipelineCacheCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pPipelineCache: ptr VkPipelineCache,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreatePipelineCache"))
+  vkDestroyPipelineCache = cast[proc(
+    device: VkDevice,
+    pipelineCache: VkPipelineCache,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyPipelineCache"))
+  vkGetPipelineCacheData = cast[proc(
+    device: VkDevice,
+    pipelineCache: VkPipelineCache,
+    pDataSize: ptr csize_t,
+    pData: pointer,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPipelineCacheData"))
+  vkMergePipelineCaches = cast[proc(
+    device: VkDevice,
+    dstCache: VkPipelineCache,
+    srcCacheCount: uint32,
+    pSrcCaches: ptr VkPipelineCache,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkMergePipelineCaches"))
+  vkCreateGraphicsPipelines = cast[proc(
+    device: VkDevice,
+    pipelineCache: VkPipelineCache,
+    createInfoCount: uint32,
+    pCreateInfos: ptr VkGraphicsPipelineCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pPipelines: ptr VkPipeline,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateGraphicsPipelines"))
+  vkCreateComputePipelines = cast[proc(
+    device: VkDevice,
+    pipelineCache: VkPipelineCache,
+    createInfoCount: uint32,
+    pCreateInfos: ptr VkComputePipelineCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pPipelines: ptr VkPipeline,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateComputePipelines"))
+  vkDestroyPipeline = cast[proc(
+    device: VkDevice, pipeline: VkPipeline, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyPipeline"))
+  vkCreatePipelineLayout = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkPipelineLayoutCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pPipelineLayout: ptr VkPipelineLayout,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreatePipelineLayout"))
+  vkDestroyPipelineLayout = cast[proc(
+    device: VkDevice,
+    pipelineLayout: VkPipelineLayout,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyPipelineLayout"))
+  vkCreateSampler = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkSamplerCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSampler: ptr VkSampler,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateSampler"))
+  vkDestroySampler = cast[proc(
+    device: VkDevice, sampler: VkSampler, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroySampler"))
+  vkCreateDescriptorSetLayout = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkDescriptorSetLayoutCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSetLayout: ptr VkDescriptorSetLayout,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCreateDescriptorSetLayout"
+  ))
+  vkDestroyDescriptorSetLayout = cast[proc(
+    device: VkDevice,
+    descriptorSetLayout: VkDescriptorSetLayout,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyDescriptorSetLayout"))
+  vkCreateDescriptorPool = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkDescriptorPoolCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pDescriptorPool: ptr VkDescriptorPool,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateDescriptorPool"))
+  vkDestroyDescriptorPool = cast[proc(
+    device: VkDevice,
+    descriptorPool: VkDescriptorPool,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyDescriptorPool"))
+  vkResetDescriptorPool = cast[proc(
+    device: VkDevice,
+    descriptorPool: VkDescriptorPool,
+    flags: VkDescriptorPoolResetFlags,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkResetDescriptorPool"))
+  vkAllocateDescriptorSets = cast[proc(
+    device: VkDevice,
+    pAllocateInfo: ptr VkDescriptorSetAllocateInfo,
+    pDescriptorSets: ptr VkDescriptorSet,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAllocateDescriptorSets"))
+  vkFreeDescriptorSets = cast[proc(
+    device: VkDevice,
+    descriptorPool: VkDescriptorPool,
+    descriptorSetCount: uint32,
+    pDescriptorSets: ptr VkDescriptorSet,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkFreeDescriptorSets"))
+  vkUpdateDescriptorSets = cast[proc(
+    device: VkDevice,
+    descriptorWriteCount: uint32,
+    pDescriptorWrites: ptr VkWriteDescriptorSet,
+    descriptorCopyCount: uint32,
+    pDescriptorCopies: ptr VkCopyDescriptorSet,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkUpdateDescriptorSets"))
+  vkCreateFramebuffer = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkFramebufferCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pFramebuffer: ptr VkFramebuffer,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateFramebuffer"))
+  vkDestroyFramebuffer = cast[proc(
+    device: VkDevice, framebuffer: VkFramebuffer, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyFramebuffer"))
+  vkCreateRenderPass = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkRenderPassCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pRenderPass: ptr VkRenderPass,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateRenderPass"))
+  vkDestroyRenderPass = cast[proc(
+    device: VkDevice, renderPass: VkRenderPass, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyRenderPass"))
+  vkGetRenderAreaGranularity = cast[proc(
+    device: VkDevice, renderPass: VkRenderPass, pGranularity: ptr VkExtent2D
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetRenderAreaGranularity"))
+  vkCreateCommandPool = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkCommandPoolCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pCommandPool: ptr VkCommandPool,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateCommandPool"))
+  vkDestroyCommandPool = cast[proc(
+    device: VkDevice, commandPool: VkCommandPool, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyCommandPool"))
+  vkResetCommandPool = cast[proc(
+    device: VkDevice, commandPool: VkCommandPool, flags: VkCommandPoolResetFlags
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkResetCommandPool"))
+  vkAllocateCommandBuffers = cast[proc(
+    device: VkDevice,
+    pAllocateInfo: ptr VkCommandBufferAllocateInfo,
+    pCommandBuffers: ptr VkCommandBuffer,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAllocateCommandBuffers"))
+  vkFreeCommandBuffers = cast[proc(
+    device: VkDevice,
+    commandPool: VkCommandPool,
+    commandBufferCount: uint32,
+    pCommandBuffers: ptr VkCommandBuffer,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkFreeCommandBuffers"))
+  vkBeginCommandBuffer = cast[proc(
+    commandBuffer: VkCommandBuffer, pBeginInfo: ptr VkCommandBufferBeginInfo
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBeginCommandBuffer"))
+  vkEndCommandBuffer = cast[proc(commandBuffer: VkCommandBuffer): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkEndCommandBuffer"
+  ))
+  vkResetCommandBuffer = cast[proc(
+    commandBuffer: VkCommandBuffer, flags: VkCommandBufferResetFlags
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkResetCommandBuffer"))
+  vkCmdBindPipeline = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineBindPoint: VkPipelineBindPoint,
+    pipeline: VkPipeline,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindPipeline"))
+  vkCmdSetViewport = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstViewport: uint32,
+    viewportCount: uint32,
+    pViewports: ptr VkViewport,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetViewport"))
+  vkCmdSetScissor = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstScissor: uint32,
+    scissorCount: uint32,
+    pScissors: ptr VkRect2D,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetScissor"))
+  vkCmdSetLineWidth = cast[proc(
+    commandBuffer: VkCommandBuffer, lineWidth: float32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetLineWidth"))
+  vkCmdSetDepthBias = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    depthBiasConstantFactor: float32,
+    depthBiasClamp: float32,
+    depthBiasSlopeFactor: float32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthBias"))
+  vkCmdSetBlendConstants = cast[proc(
+    commandBuffer: VkCommandBuffer, blendConstants: array[4, float32]
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetBlendConstants"))
+  vkCmdSetDepthBounds = cast[proc(
+    commandBuffer: VkCommandBuffer, minDepthBounds: float32, maxDepthBounds: float32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthBounds"))
+  vkCmdSetStencilCompareMask = cast[proc(
+    commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, compareMask: uint32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetStencilCompareMask"))
+  vkCmdSetStencilWriteMask = cast[proc(
+    commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, writeMask: uint32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetStencilWriteMask"))
+  vkCmdSetStencilReference = cast[proc(
+    commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, reference: uint32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetStencilReference"))
+  vkCmdBindDescriptorSets = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineBindPoint: VkPipelineBindPoint,
+    layout: VkPipelineLayout,
+    firstSet: uint32,
+    descriptorSetCount: uint32,
+    pDescriptorSets: ptr VkDescriptorSet,
+    dynamicOffsetCount: uint32,
+    pDynamicOffsets: ptr uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindDescriptorSets"))
+  vkCmdBindIndexBuffer = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    indexType: VkIndexType,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindIndexBuffer"))
+  vkCmdBindVertexBuffers = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstBinding: uint32,
+    bindingCount: uint32,
+    pBuffers: ptr VkBuffer,
+    pOffsets: ptr VkDeviceSize,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindVertexBuffers"))
+  vkCmdDraw = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    vertexCount: uint32,
+    instanceCount: uint32,
+    firstVertex: uint32,
+    firstInstance: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDraw"))
+  vkCmdDrawIndexed = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    indexCount: uint32,
+    instanceCount: uint32,
+    firstIndex: uint32,
+    vertexOffset: int32,
+    firstInstance: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawIndexed"))
+  vkCmdDrawIndirect = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    drawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawIndirect"))
+  vkCmdDrawIndexedIndirect = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    drawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirect"))
+  vkCmdDispatch = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    groupCountX: uint32,
+    groupCountY: uint32,
+    groupCountZ: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDispatch"))
+  vkCmdDispatchIndirect = cast[proc(
+    commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDispatchIndirect"))
+  vkCmdCopyBuffer = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    srcBuffer: VkBuffer,
+    dstBuffer: VkBuffer,
+    regionCount: uint32,
+    pRegions: ptr VkBufferCopy,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyBuffer"))
+  vkCmdCopyImage = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    srcImage: VkImage,
+    srcImageLayout: VkImageLayout,
+    dstImage: VkImage,
+    dstImageLayout: VkImageLayout,
+    regionCount: uint32,
+    pRegions: ptr VkImageCopy,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyImage"))
+  vkCmdBlitImage = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    srcImage: VkImage,
+    srcImageLayout: VkImageLayout,
+    dstImage: VkImage,
+    dstImageLayout: VkImageLayout,
+    regionCount: uint32,
+    pRegions: ptr VkImageBlit,
+    filter: VkFilter,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBlitImage"))
+  vkCmdCopyBufferToImage = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    srcBuffer: VkBuffer,
+    dstImage: VkImage,
+    dstImageLayout: VkImageLayout,
+    regionCount: uint32,
+    pRegions: ptr VkBufferImageCopy,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyBufferToImage"))
+  vkCmdCopyImageToBuffer = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    srcImage: VkImage,
+    srcImageLayout: VkImageLayout,
+    dstBuffer: VkBuffer,
+    regionCount: uint32,
+    pRegions: ptr VkBufferImageCopy,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer"))
+  vkCmdUpdateBuffer = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    dstBuffer: VkBuffer,
+    dstOffset: VkDeviceSize,
+    dataSize: VkDeviceSize,
+    pData: pointer,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdUpdateBuffer"))
+  vkCmdFillBuffer = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    dstBuffer: VkBuffer,
+    dstOffset: VkDeviceSize,
+    size: VkDeviceSize,
+    data: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdFillBuffer"))
+  vkCmdClearColorImage = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    image: VkImage,
+    imageLayout: VkImageLayout,
+    pColor: ptr VkClearColorValue,
+    rangeCount: uint32,
+    pRanges: ptr VkImageSubresourceRange,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdClearColorImage"))
+  vkCmdClearDepthStencilImage = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    image: VkImage,
+    imageLayout: VkImageLayout,
+    pDepthStencil: ptr VkClearDepthStencilValue,
+    rangeCount: uint32,
+    pRanges: ptr VkImageSubresourceRange,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdClearDepthStencilImage"))
+  vkCmdClearAttachments = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    attachmentCount: uint32,
+    pAttachments: ptr VkClearAttachment,
+    rectCount: uint32,
+    pRects: ptr VkClearRect,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdClearAttachments"))
+  vkCmdResolveImage = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    srcImage: VkImage,
+    srcImageLayout: VkImageLayout,
+    dstImage: VkImage,
+    dstImageLayout: VkImageLayout,
+    regionCount: uint32,
+    pRegions: ptr VkImageResolve,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdResolveImage"))
+  vkCmdSetEvent = cast[proc(
+    commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetEvent"))
+  vkCmdResetEvent = cast[proc(
+    commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdResetEvent"))
+  vkCmdWaitEvents = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    eventCount: uint32,
+    pEvents: ptr VkEvent,
+    srcStageMask: VkPipelineStageFlags,
+    dstStageMask: VkPipelineStageFlags,
+    memoryBarrierCount: uint32,
+    pMemoryBarriers: ptr VkMemoryBarrier,
+    bufferMemoryBarrierCount: uint32,
+    pBufferMemoryBarriers: ptr VkBufferMemoryBarrier,
+    imageMemoryBarrierCount: uint32,
+    pImageMemoryBarriers: ptr VkImageMemoryBarrier,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdWaitEvents"))
+  vkCmdPipelineBarrier = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    srcStageMask: VkPipelineStageFlags,
+    dstStageMask: VkPipelineStageFlags,
+    dependencyFlags: VkDependencyFlags,
+    memoryBarrierCount: uint32,
+    pMemoryBarriers: ptr VkMemoryBarrier,
+    bufferMemoryBarrierCount: uint32,
+    pBufferMemoryBarriers: ptr VkBufferMemoryBarrier,
+    imageMemoryBarrierCount: uint32,
+    pImageMemoryBarriers: ptr VkImageMemoryBarrier,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdPipelineBarrier"))
+  vkCmdBeginQuery = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    queryPool: VkQueryPool,
+    query: uint32,
+    flags: VkQueryControlFlags,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginQuery"))
+  vkCmdEndQuery = cast[proc(
+    commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdEndQuery"))
+  vkCmdResetQueryPool = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    queryPool: VkQueryPool,
+    firstQuery: uint32,
+    queryCount: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdResetQueryPool"))
+  vkCmdWriteTimestamp = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineStage: VkPipelineStageFlagBits,
+    queryPool: VkQueryPool,
+    query: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdWriteTimestamp"))
+  vkCmdCopyQueryPoolResults = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    queryPool: VkQueryPool,
+    firstQuery: uint32,
+    queryCount: uint32,
+    dstBuffer: VkBuffer,
+    dstOffset: VkDeviceSize,
+    stride: VkDeviceSize,
+    flags: VkQueryResultFlags,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyQueryPoolResults"))
+  vkCmdPushConstants = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    layout: VkPipelineLayout,
+    stageFlags: VkShaderStageFlags,
+    offset: uint32,
+    size: uint32,
+    pValues: pointer,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdPushConstants"))
+  vkCmdBeginRenderPass = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pRenderPassBegin: ptr VkRenderPassBeginInfo,
+    contents: VkSubpassContents,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginRenderPass"))
+  vkCmdNextSubpass = cast[proc(
+    commandBuffer: VkCommandBuffer, contents: VkSubpassContents
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdNextSubpass"))
+  vkCmdEndRenderPass = cast[proc(commandBuffer: VkCommandBuffer): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdEndRenderPass"
+  ))
+  vkCmdExecuteCommands = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    commandBufferCount: uint32,
+    pCommandBuffers: ptr VkCommandBuffer,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdExecuteCommands"))
 
 # feature VK_VERSION_1_1
 var
   vkEnumerateInstanceVersion*: proc(pApiVersion: ptr uint32): VkResult {.stdcall.}
-  vkBindBufferMemory2*: proc(device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindBufferMemoryInfo): VkResult {.stdcall.}
-  vkBindImageMemory2*: proc(device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindImageMemoryInfo): VkResult {.stdcall.}
-  vkGetDeviceGroupPeerMemoryFeatures*: proc(device: VkDevice, heapIndex: uint32, localDeviceIndex: uint32, remoteDeviceIndex: uint32, pPeerMemoryFeatures: ptr VkPeerMemoryFeatureFlags): void {.stdcall.}
-  vkCmdSetDeviceMask*: proc(commandBuffer: VkCommandBuffer, deviceMask: uint32): void {.stdcall.}
-  vkCmdDispatchBase*: proc(commandBuffer: VkCommandBuffer, baseGroupX: uint32, baseGroupY: uint32, baseGroupZ: uint32, groupCountX: uint32, groupCountY: uint32, groupCountZ: uint32): void {.stdcall.}
-  vkEnumeratePhysicalDeviceGroups*: proc(instance: VkInstance, pPhysicalDeviceGroupCount: ptr uint32, pPhysicalDeviceGroupProperties: ptr VkPhysicalDeviceGroupProperties): VkResult {.stdcall.}
-  vkGetImageMemoryRequirements2*: proc(device: VkDevice, pInfo: ptr VkImageMemoryRequirementsInfo2, pMemoryRequirements: ptr VkMemoryRequirements2): void {.stdcall.}
-  vkGetBufferMemoryRequirements2*: proc(device: VkDevice, pInfo: ptr VkBufferMemoryRequirementsInfo2, pMemoryRequirements: ptr VkMemoryRequirements2): void {.stdcall.}
-  vkGetImageSparseMemoryRequirements2*: proc(device: VkDevice, pInfo: ptr VkImageSparseMemoryRequirementsInfo2, pSparseMemoryRequirementCount: ptr uint32, pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements2): void {.stdcall.}
-  vkGetPhysicalDeviceFeatures2*: proc(physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures2): void {.stdcall.}
-  vkGetPhysicalDeviceProperties2*: proc(physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties2): void {.stdcall.}
-  vkGetPhysicalDeviceFormatProperties2*: proc(physicalDevice: VkPhysicalDevice, format: VkFormat, pFormatProperties: ptr VkFormatProperties2): void {.stdcall.}
-  vkGetPhysicalDeviceImageFormatProperties2*: proc(physicalDevice: VkPhysicalDevice, pImageFormatInfo: ptr VkPhysicalDeviceImageFormatInfo2, pImageFormatProperties: ptr VkImageFormatProperties2): VkResult {.stdcall.}
-  vkGetPhysicalDeviceQueueFamilyProperties2*: proc(physicalDevice: VkPhysicalDevice, pQueueFamilyPropertyCount: ptr uint32, pQueueFamilyProperties: ptr VkQueueFamilyProperties2): void {.stdcall.}
-  vkGetPhysicalDeviceMemoryProperties2*: proc(physicalDevice: VkPhysicalDevice, pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties2): void {.stdcall.}
-  vkGetPhysicalDeviceSparseImageFormatProperties2*: proc(physicalDevice: VkPhysicalDevice, pFormatInfo: ptr VkPhysicalDeviceSparseImageFormatInfo2, pPropertyCount: ptr uint32, pProperties: ptr VkSparseImageFormatProperties2): void {.stdcall.}
-  vkTrimCommandPool*: proc(device: VkDevice, commandPool: VkCommandPool, flags: VkCommandPoolTrimFlags): void {.stdcall.}
-  vkGetDeviceQueue2*: proc(device: VkDevice, pQueueInfo: ptr VkDeviceQueueInfo2, pQueue: ptr VkQueue): void {.stdcall.}
-  vkCreateSamplerYcbcrConversion*: proc(device: VkDevice, pCreateInfo: ptr VkSamplerYcbcrConversionCreateInfo, pAllocator: ptr VkAllocationCallbacks, pYcbcrConversion: ptr VkSamplerYcbcrConversion): VkResult {.stdcall.}
-  vkDestroySamplerYcbcrConversion*: proc(device: VkDevice, ycbcrConversion: VkSamplerYcbcrConversion, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkCreateDescriptorUpdateTemplate*: proc(device: VkDevice, pCreateInfo: ptr VkDescriptorUpdateTemplateCreateInfo, pAllocator: ptr VkAllocationCallbacks, pDescriptorUpdateTemplate: ptr VkDescriptorUpdateTemplate): VkResult {.stdcall.}
-  vkDestroyDescriptorUpdateTemplate*: proc(device: VkDevice, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkUpdateDescriptorSetWithTemplate*: proc(device: VkDevice, descriptorSet: VkDescriptorSet, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, pData: pointer): void {.stdcall.}
-  vkGetPhysicalDeviceExternalBufferProperties*: proc(physicalDevice: VkPhysicalDevice, pExternalBufferInfo: ptr VkPhysicalDeviceExternalBufferInfo, pExternalBufferProperties: ptr VkExternalBufferProperties): void {.stdcall.}
-  vkGetPhysicalDeviceExternalFenceProperties*: proc(physicalDevice: VkPhysicalDevice, pExternalFenceInfo: ptr VkPhysicalDeviceExternalFenceInfo, pExternalFenceProperties: ptr VkExternalFenceProperties): void {.stdcall.}
-  vkGetPhysicalDeviceExternalSemaphoreProperties*: proc(physicalDevice: VkPhysicalDevice, pExternalSemaphoreInfo: ptr VkPhysicalDeviceExternalSemaphoreInfo, pExternalSemaphoreProperties: ptr VkExternalSemaphoreProperties): void {.stdcall.}
-  vkGetDescriptorSetLayoutSupport*: proc(device: VkDevice, pCreateInfo: ptr VkDescriptorSetLayoutCreateInfo, pSupport: ptr VkDescriptorSetLayoutSupport): void {.stdcall.}
+  vkBindBufferMemory2*: proc(
+    device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindBufferMemoryInfo
+  ): VkResult {.stdcall.}
+  vkBindImageMemory2*: proc(
+    device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindImageMemoryInfo
+  ): VkResult {.stdcall.}
+  vkGetDeviceGroupPeerMemoryFeatures*: proc(
+    device: VkDevice,
+    heapIndex: uint32,
+    localDeviceIndex: uint32,
+    remoteDeviceIndex: uint32,
+    pPeerMemoryFeatures: ptr VkPeerMemoryFeatureFlags,
+  ): void {.stdcall.}
+  vkCmdSetDeviceMask*:
+    proc(commandBuffer: VkCommandBuffer, deviceMask: uint32): void {.stdcall.}
+  vkCmdDispatchBase*: proc(
+    commandBuffer: VkCommandBuffer,
+    baseGroupX: uint32,
+    baseGroupY: uint32,
+    baseGroupZ: uint32,
+    groupCountX: uint32,
+    groupCountY: uint32,
+    groupCountZ: uint32,
+  ): void {.stdcall.}
+  vkEnumeratePhysicalDeviceGroups*: proc(
+    instance: VkInstance,
+    pPhysicalDeviceGroupCount: ptr uint32,
+    pPhysicalDeviceGroupProperties: ptr VkPhysicalDeviceGroupProperties,
+  ): VkResult {.stdcall.}
+  vkGetImageMemoryRequirements2*: proc(
+    device: VkDevice,
+    pInfo: ptr VkImageMemoryRequirementsInfo2,
+    pMemoryRequirements: ptr VkMemoryRequirements2,
+  ): void {.stdcall.}
+  vkGetBufferMemoryRequirements2*: proc(
+    device: VkDevice,
+    pInfo: ptr VkBufferMemoryRequirementsInfo2,
+    pMemoryRequirements: ptr VkMemoryRequirements2,
+  ): void {.stdcall.}
+  vkGetImageSparseMemoryRequirements2*: proc(
+    device: VkDevice,
+    pInfo: ptr VkImageSparseMemoryRequirementsInfo2,
+    pSparseMemoryRequirementCount: ptr uint32,
+    pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements2,
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceFeatures2*: proc(
+    physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures2
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceProperties2*: proc(
+    physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties2
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceFormatProperties2*: proc(
+    physicalDevice: VkPhysicalDevice,
+    format: VkFormat,
+    pFormatProperties: ptr VkFormatProperties2,
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceImageFormatProperties2*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pImageFormatInfo: ptr VkPhysicalDeviceImageFormatInfo2,
+    pImageFormatProperties: ptr VkImageFormatProperties2,
+  ): VkResult {.stdcall.}
+  vkGetPhysicalDeviceQueueFamilyProperties2*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pQueueFamilyPropertyCount: ptr uint32,
+    pQueueFamilyProperties: ptr VkQueueFamilyProperties2,
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceMemoryProperties2*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties2,
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceSparseImageFormatProperties2*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pFormatInfo: ptr VkPhysicalDeviceSparseImageFormatInfo2,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkSparseImageFormatProperties2,
+  ): void {.stdcall.}
+  vkTrimCommandPool*: proc(
+    device: VkDevice, commandPool: VkCommandPool, flags: VkCommandPoolTrimFlags
+  ): void {.stdcall.}
+  vkGetDeviceQueue2*: proc(
+    device: VkDevice, pQueueInfo: ptr VkDeviceQueueInfo2, pQueue: ptr VkQueue
+  ): void {.stdcall.}
+  vkCreateSamplerYcbcrConversion*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkSamplerYcbcrConversionCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pYcbcrConversion: ptr VkSamplerYcbcrConversion,
+  ): VkResult {.stdcall.}
+  vkDestroySamplerYcbcrConversion*: proc(
+    device: VkDevice,
+    ycbcrConversion: VkSamplerYcbcrConversion,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkCreateDescriptorUpdateTemplate*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkDescriptorUpdateTemplateCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pDescriptorUpdateTemplate: ptr VkDescriptorUpdateTemplate,
+  ): VkResult {.stdcall.}
+  vkDestroyDescriptorUpdateTemplate*: proc(
+    device: VkDevice,
+    descriptorUpdateTemplate: VkDescriptorUpdateTemplate,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkUpdateDescriptorSetWithTemplate*: proc(
+    device: VkDevice,
+    descriptorSet: VkDescriptorSet,
+    descriptorUpdateTemplate: VkDescriptorUpdateTemplate,
+    pData: pointer,
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceExternalBufferProperties*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pExternalBufferInfo: ptr VkPhysicalDeviceExternalBufferInfo,
+    pExternalBufferProperties: ptr VkExternalBufferProperties,
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceExternalFenceProperties*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pExternalFenceInfo: ptr VkPhysicalDeviceExternalFenceInfo,
+    pExternalFenceProperties: ptr VkExternalFenceProperties,
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceExternalSemaphoreProperties*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pExternalSemaphoreInfo: ptr VkPhysicalDeviceExternalSemaphoreInfo,
+    pExternalSemaphoreProperties: ptr VkExternalSemaphoreProperties,
+  ): void {.stdcall.}
+  vkGetDescriptorSetLayoutSupport*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkDescriptorSetLayoutCreateInfo,
+    pSupport: ptr VkDescriptorSetLayoutSupport,
+  ): void {.stdcall.}
 proc loadVK_VERSION_1_1*(instance: VkInstance) =
-  vkBindBufferMemory2 = cast[proc(device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindBufferMemoryInfo): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBindBufferMemory2"))
-  vkBindImageMemory2 = cast[proc(device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindImageMemoryInfo): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBindImageMemory2"))
-  vkGetDeviceGroupPeerMemoryFeatures = cast[proc(device: VkDevice, heapIndex: uint32, localDeviceIndex: uint32, remoteDeviceIndex: uint32, pPeerMemoryFeatures: ptr VkPeerMemoryFeatureFlags): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceGroupPeerMemoryFeatures"))
-  vkCmdSetDeviceMask = cast[proc(commandBuffer: VkCommandBuffer, deviceMask: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDeviceMask"))
-  vkCmdDispatchBase = cast[proc(commandBuffer: VkCommandBuffer, baseGroupX: uint32, baseGroupY: uint32, baseGroupZ: uint32, groupCountX: uint32, groupCountY: uint32, groupCountZ: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDispatchBase"))
-  vkEnumeratePhysicalDeviceGroups = cast[proc(instance: VkInstance, pPhysicalDeviceGroupCount: ptr uint32, pPhysicalDeviceGroupProperties: ptr VkPhysicalDeviceGroupProperties): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkEnumeratePhysicalDeviceGroups"))
-  vkGetImageMemoryRequirements2 = cast[proc(device: VkDevice, pInfo: ptr VkImageMemoryRequirementsInfo2, pMemoryRequirements: ptr VkMemoryRequirements2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageMemoryRequirements2"))
-  vkGetBufferMemoryRequirements2 = cast[proc(device: VkDevice, pInfo: ptr VkBufferMemoryRequirementsInfo2, pMemoryRequirements: ptr VkMemoryRequirements2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetBufferMemoryRequirements2"))
-  vkGetImageSparseMemoryRequirements2 = cast[proc(device: VkDevice, pInfo: ptr VkImageSparseMemoryRequirementsInfo2, pSparseMemoryRequirementCount: ptr uint32, pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageSparseMemoryRequirements2"))
-  vkGetPhysicalDeviceFeatures2 = cast[proc(physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures2"))
-  vkGetPhysicalDeviceProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties2"))
-  vkGetPhysicalDeviceFormatProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, pFormatProperties: ptr VkFormatProperties2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties2"))
-  vkGetPhysicalDeviceImageFormatProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pImageFormatInfo: ptr VkPhysicalDeviceImageFormatInfo2, pImageFormatProperties: ptr VkImageFormatProperties2): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceImageFormatProperties2"))
-  vkGetPhysicalDeviceQueueFamilyProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pQueueFamilyPropertyCount: ptr uint32, pQueueFamilyProperties: ptr VkQueueFamilyProperties2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties2"))
-  vkGetPhysicalDeviceMemoryProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties2"))
-  vkGetPhysicalDeviceSparseImageFormatProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pFormatInfo: ptr VkPhysicalDeviceSparseImageFormatInfo2, pPropertyCount: ptr uint32, pProperties: ptr VkSparseImageFormatProperties2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
-  vkTrimCommandPool = cast[proc(device: VkDevice, commandPool: VkCommandPool, flags: VkCommandPoolTrimFlags): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkTrimCommandPool"))
-  vkGetDeviceQueue2 = cast[proc(device: VkDevice, pQueueInfo: ptr VkDeviceQueueInfo2, pQueue: ptr VkQueue): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceQueue2"))
-  vkCreateSamplerYcbcrConversion = cast[proc(device: VkDevice, pCreateInfo: ptr VkSamplerYcbcrConversionCreateInfo, pAllocator: ptr VkAllocationCallbacks, pYcbcrConversion: ptr VkSamplerYcbcrConversion): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateSamplerYcbcrConversion"))
-  vkDestroySamplerYcbcrConversion = cast[proc(device: VkDevice, ycbcrConversion: VkSamplerYcbcrConversion, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroySamplerYcbcrConversion"))
-  vkCreateDescriptorUpdateTemplate = cast[proc(device: VkDevice, pCreateInfo: ptr VkDescriptorUpdateTemplateCreateInfo, pAllocator: ptr VkAllocationCallbacks, pDescriptorUpdateTemplate: ptr VkDescriptorUpdateTemplate): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateDescriptorUpdateTemplate"))
-  vkDestroyDescriptorUpdateTemplate = cast[proc(device: VkDevice, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyDescriptorUpdateTemplate"))
-  vkUpdateDescriptorSetWithTemplate = cast[proc(device: VkDevice, descriptorSet: VkDescriptorSet, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, pData: pointer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkUpdateDescriptorSetWithTemplate"))
-  vkGetPhysicalDeviceExternalBufferProperties = cast[proc(physicalDevice: VkPhysicalDevice, pExternalBufferInfo: ptr VkPhysicalDeviceExternalBufferInfo, pExternalBufferProperties: ptr VkExternalBufferProperties): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalBufferProperties"))
-  vkGetPhysicalDeviceExternalFenceProperties = cast[proc(physicalDevice: VkPhysicalDevice, pExternalFenceInfo: ptr VkPhysicalDeviceExternalFenceInfo, pExternalFenceProperties: ptr VkExternalFenceProperties): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalFenceProperties"))
-  vkGetPhysicalDeviceExternalSemaphoreProperties = cast[proc(physicalDevice: VkPhysicalDevice, pExternalSemaphoreInfo: ptr VkPhysicalDeviceExternalSemaphoreInfo, pExternalSemaphoreProperties: ptr VkExternalSemaphoreProperties): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
-  vkGetDescriptorSetLayoutSupport = cast[proc(device: VkDevice, pCreateInfo: ptr VkDescriptorSetLayoutCreateInfo, pSupport: ptr VkDescriptorSetLayoutSupport): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDescriptorSetLayoutSupport"))
+  vkBindBufferMemory2 = cast[proc(
+    device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindBufferMemoryInfo
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBindBufferMemory2"))
+  vkBindImageMemory2 = cast[proc(
+    device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindImageMemoryInfo
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBindImageMemory2"))
+  vkGetDeviceGroupPeerMemoryFeatures = cast[proc(
+    device: VkDevice,
+    heapIndex: uint32,
+    localDeviceIndex: uint32,
+    remoteDeviceIndex: uint32,
+    pPeerMemoryFeatures: ptr VkPeerMemoryFeatureFlags,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDeviceGroupPeerMemoryFeatures"
+  ))
+  vkCmdSetDeviceMask = cast[proc(
+    commandBuffer: VkCommandBuffer, deviceMask: uint32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDeviceMask"))
+  vkCmdDispatchBase = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    baseGroupX: uint32,
+    baseGroupY: uint32,
+    baseGroupZ: uint32,
+    groupCountX: uint32,
+    groupCountY: uint32,
+    groupCountZ: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDispatchBase"))
+  vkEnumeratePhysicalDeviceGroups = cast[proc(
+    instance: VkInstance,
+    pPhysicalDeviceGroupCount: ptr uint32,
+    pPhysicalDeviceGroupProperties: ptr VkPhysicalDeviceGroupProperties,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkEnumeratePhysicalDeviceGroups"
+  ))
+  vkGetImageMemoryRequirements2 = cast[proc(
+    device: VkDevice,
+    pInfo: ptr VkImageMemoryRequirementsInfo2,
+    pMemoryRequirements: ptr VkMemoryRequirements2,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageMemoryRequirements2"))
+  vkGetBufferMemoryRequirements2 = cast[proc(
+    device: VkDevice,
+    pInfo: ptr VkBufferMemoryRequirementsInfo2,
+    pMemoryRequirements: ptr VkMemoryRequirements2,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetBufferMemoryRequirements2"))
+  vkGetImageSparseMemoryRequirements2 = cast[proc(
+    device: VkDevice,
+    pInfo: ptr VkImageSparseMemoryRequirementsInfo2,
+    pSparseMemoryRequirementCount: ptr uint32,
+    pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements2,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetImageSparseMemoryRequirements2"
+  ))
+  vkGetPhysicalDeviceFeatures2 = cast[proc(
+    physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures2
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures2"))
+  vkGetPhysicalDeviceProperties2 = cast[proc(
+    physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties2
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties2"))
+  vkGetPhysicalDeviceFormatProperties2 = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    format: VkFormat,
+    pFormatProperties: ptr VkFormatProperties2,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceFormatProperties2"
+  ))
+  vkGetPhysicalDeviceImageFormatProperties2 = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pImageFormatInfo: ptr VkPhysicalDeviceImageFormatInfo2,
+    pImageFormatProperties: ptr VkImageFormatProperties2,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceImageFormatProperties2"
+  ))
+  vkGetPhysicalDeviceQueueFamilyProperties2 = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pQueueFamilyPropertyCount: ptr uint32,
+    pQueueFamilyProperties: ptr VkQueueFamilyProperties2,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceQueueFamilyProperties2"
+  ))
+  vkGetPhysicalDeviceMemoryProperties2 = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties2,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceMemoryProperties2"
+  ))
+  vkGetPhysicalDeviceSparseImageFormatProperties2 = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pFormatInfo: ptr VkPhysicalDeviceSparseImageFormatInfo2,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkSparseImageFormatProperties2,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceSparseImageFormatProperties2"
+  ))
+  vkTrimCommandPool = cast[proc(
+    device: VkDevice, commandPool: VkCommandPool, flags: VkCommandPoolTrimFlags
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkTrimCommandPool"))
+  vkGetDeviceQueue2 = cast[proc(
+    device: VkDevice, pQueueInfo: ptr VkDeviceQueueInfo2, pQueue: ptr VkQueue
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceQueue2"))
+  vkCreateSamplerYcbcrConversion = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkSamplerYcbcrConversionCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pYcbcrConversion: ptr VkSamplerYcbcrConversion,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCreateSamplerYcbcrConversion"
+  ))
+  vkDestroySamplerYcbcrConversion = cast[proc(
+    device: VkDevice,
+    ycbcrConversion: VkSamplerYcbcrConversion,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkDestroySamplerYcbcrConversion"
+  ))
+  vkCreateDescriptorUpdateTemplate = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkDescriptorUpdateTemplateCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pDescriptorUpdateTemplate: ptr VkDescriptorUpdateTemplate,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCreateDescriptorUpdateTemplate"
+  ))
+  vkDestroyDescriptorUpdateTemplate = cast[proc(
+    device: VkDevice,
+    descriptorUpdateTemplate: VkDescriptorUpdateTemplate,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkDestroyDescriptorUpdateTemplate"
+  ))
+  vkUpdateDescriptorSetWithTemplate = cast[proc(
+    device: VkDevice,
+    descriptorSet: VkDescriptorSet,
+    descriptorUpdateTemplate: VkDescriptorUpdateTemplate,
+    pData: pointer,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkUpdateDescriptorSetWithTemplate"
+  ))
+  vkGetPhysicalDeviceExternalBufferProperties = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pExternalBufferInfo: ptr VkPhysicalDeviceExternalBufferInfo,
+    pExternalBufferProperties: ptr VkExternalBufferProperties,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceExternalBufferProperties"
+  ))
+  vkGetPhysicalDeviceExternalFenceProperties = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pExternalFenceInfo: ptr VkPhysicalDeviceExternalFenceInfo,
+    pExternalFenceProperties: ptr VkExternalFenceProperties,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceExternalFenceProperties"
+  ))
+  vkGetPhysicalDeviceExternalSemaphoreProperties = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pExternalSemaphoreInfo: ptr VkPhysicalDeviceExternalSemaphoreInfo,
+    pExternalSemaphoreProperties: ptr VkExternalSemaphoreProperties,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceExternalSemaphoreProperties"
+  ))
+  vkGetDescriptorSetLayoutSupport = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkDescriptorSetLayoutCreateInfo,
+    pSupport: ptr VkDescriptorSetLayoutSupport,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDescriptorSetLayoutSupport"
+  ))
 
 # feature VK_VERSION_1_2
 var
-  vkCmdDrawIndirectCount*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, countBuffer: VkBuffer, countBufferOffset: VkDeviceSize, maxDrawCount: uint32, stride: uint32): void {.stdcall.}
-  vkCmdDrawIndexedIndirectCount*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, countBuffer: VkBuffer, countBufferOffset: VkDeviceSize, maxDrawCount: uint32, stride: uint32): void {.stdcall.}
-  vkCreateRenderPass2*: proc(device: VkDevice, pCreateInfo: ptr VkRenderPassCreateInfo2, pAllocator: ptr VkAllocationCallbacks, pRenderPass: ptr VkRenderPass): VkResult {.stdcall.}
-  vkCmdBeginRenderPass2*: proc(commandBuffer: VkCommandBuffer, pRenderPassBegin: ptr VkRenderPassBeginInfo, pSubpassBeginInfo: ptr VkSubpassBeginInfo): void {.stdcall.}
-  vkCmdNextSubpass2*: proc(commandBuffer: VkCommandBuffer, pSubpassBeginInfo: ptr VkSubpassBeginInfo, pSubpassEndInfo: ptr VkSubpassEndInfo): void {.stdcall.}
-  vkCmdEndRenderPass2*: proc(commandBuffer: VkCommandBuffer, pSubpassEndInfo: ptr VkSubpassEndInfo): void {.stdcall.}
-  vkResetQueryPool*: proc(device: VkDevice, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32): void {.stdcall.}
-  vkGetSemaphoreCounterValue*: proc(device: VkDevice, semaphore: VkSemaphore, pValue: ptr uint64): VkResult {.stdcall.}
-  vkWaitSemaphores*: proc(device: VkDevice, pWaitInfo: ptr VkSemaphoreWaitInfo, timeout: uint64): VkResult {.stdcall.}
-  vkSignalSemaphore*: proc(device: VkDevice, pSignalInfo: ptr VkSemaphoreSignalInfo): VkResult {.stdcall.}
-  vkGetBufferDeviceAddress*: proc(device: VkDevice, pInfo: ptr VkBufferDeviceAddressInfo): VkDeviceAddress {.stdcall.}
-  vkGetBufferOpaqueCaptureAddress*: proc(device: VkDevice, pInfo: ptr VkBufferDeviceAddressInfo): uint64 {.stdcall.}
-  vkGetDeviceMemoryOpaqueCaptureAddress*: proc(device: VkDevice, pInfo: ptr VkDeviceMemoryOpaqueCaptureAddressInfo): uint64 {.stdcall.}
+  vkCmdDrawIndirectCount*: proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    countBuffer: VkBuffer,
+    countBufferOffset: VkDeviceSize,
+    maxDrawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}
+  vkCmdDrawIndexedIndirectCount*: proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    countBuffer: VkBuffer,
+    countBufferOffset: VkDeviceSize,
+    maxDrawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}
+  vkCreateRenderPass2*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkRenderPassCreateInfo2,
+    pAllocator: ptr VkAllocationCallbacks,
+    pRenderPass: ptr VkRenderPass,
+  ): VkResult {.stdcall.}
+  vkCmdBeginRenderPass2*: proc(
+    commandBuffer: VkCommandBuffer,
+    pRenderPassBegin: ptr VkRenderPassBeginInfo,
+    pSubpassBeginInfo: ptr VkSubpassBeginInfo,
+  ): void {.stdcall.}
+  vkCmdNextSubpass2*: proc(
+    commandBuffer: VkCommandBuffer,
+    pSubpassBeginInfo: ptr VkSubpassBeginInfo,
+    pSubpassEndInfo: ptr VkSubpassEndInfo,
+  ): void {.stdcall.}
+  vkCmdEndRenderPass2*: proc(
+    commandBuffer: VkCommandBuffer, pSubpassEndInfo: ptr VkSubpassEndInfo
+  ): void {.stdcall.}
+  vkResetQueryPool*: proc(
+    device: VkDevice, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32
+  ): void {.stdcall.}
+  vkGetSemaphoreCounterValue*: proc(
+    device: VkDevice, semaphore: VkSemaphore, pValue: ptr uint64
+  ): VkResult {.stdcall.}
+  vkWaitSemaphores*: proc(
+    device: VkDevice, pWaitInfo: ptr VkSemaphoreWaitInfo, timeout: uint64
+  ): VkResult {.stdcall.}
+  vkSignalSemaphore*:
+    proc(device: VkDevice, pSignalInfo: ptr VkSemaphoreSignalInfo): VkResult {.stdcall.}
+  vkGetBufferDeviceAddress*: proc(
+    device: VkDevice, pInfo: ptr VkBufferDeviceAddressInfo
+  ): VkDeviceAddress {.stdcall.}
+  vkGetBufferOpaqueCaptureAddress*:
+    proc(device: VkDevice, pInfo: ptr VkBufferDeviceAddressInfo): uint64 {.stdcall.}
+  vkGetDeviceMemoryOpaqueCaptureAddress*: proc(
+    device: VkDevice, pInfo: ptr VkDeviceMemoryOpaqueCaptureAddressInfo
+  ): uint64 {.stdcall.}
 proc loadVK_VERSION_1_2*(instance: VkInstance) =
-  vkCmdDrawIndirectCount = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, countBuffer: VkBuffer, countBufferOffset: VkDeviceSize, maxDrawCount: uint32, stride: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawIndirectCount"))
-  vkCmdDrawIndexedIndirectCount = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, countBuffer: VkBuffer, countBufferOffset: VkDeviceSize, maxDrawCount: uint32, stride: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirectCount"))
-  vkCreateRenderPass2 = cast[proc(device: VkDevice, pCreateInfo: ptr VkRenderPassCreateInfo2, pAllocator: ptr VkAllocationCallbacks, pRenderPass: ptr VkRenderPass): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateRenderPass2"))
-  vkCmdBeginRenderPass2 = cast[proc(commandBuffer: VkCommandBuffer, pRenderPassBegin: ptr VkRenderPassBeginInfo, pSubpassBeginInfo: ptr VkSubpassBeginInfo): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginRenderPass2"))
-  vkCmdNextSubpass2 = cast[proc(commandBuffer: VkCommandBuffer, pSubpassBeginInfo: ptr VkSubpassBeginInfo, pSubpassEndInfo: ptr VkSubpassEndInfo): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdNextSubpass2"))
-  vkCmdEndRenderPass2 = cast[proc(commandBuffer: VkCommandBuffer, pSubpassEndInfo: ptr VkSubpassEndInfo): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdEndRenderPass2"))
-  vkResetQueryPool = cast[proc(device: VkDevice, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkResetQueryPool"))
-  vkGetSemaphoreCounterValue = cast[proc(device: VkDevice, semaphore: VkSemaphore, pValue: ptr uint64): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetSemaphoreCounterValue"))
-  vkWaitSemaphores = cast[proc(device: VkDevice, pWaitInfo: ptr VkSemaphoreWaitInfo, timeout: uint64): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkWaitSemaphores"))
-  vkSignalSemaphore = cast[proc(device: VkDevice, pSignalInfo: ptr VkSemaphoreSignalInfo): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSignalSemaphore"))
-  vkGetBufferDeviceAddress = cast[proc(device: VkDevice, pInfo: ptr VkBufferDeviceAddressInfo): VkDeviceAddress {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetBufferDeviceAddress"))
-  vkGetBufferOpaqueCaptureAddress = cast[proc(device: VkDevice, pInfo: ptr VkBufferDeviceAddressInfo): uint64 {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetBufferOpaqueCaptureAddress"))
-  vkGetDeviceMemoryOpaqueCaptureAddress = cast[proc(device: VkDevice, pInfo: ptr VkDeviceMemoryOpaqueCaptureAddressInfo): uint64 {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceMemoryOpaqueCaptureAddress"))
+  vkCmdDrawIndirectCount = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    countBuffer: VkBuffer,
+    countBufferOffset: VkDeviceSize,
+    maxDrawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawIndirectCount"))
+  vkCmdDrawIndexedIndirectCount = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    countBuffer: VkBuffer,
+    countBufferOffset: VkDeviceSize,
+    maxDrawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirectCount"))
+  vkCreateRenderPass2 = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkRenderPassCreateInfo2,
+    pAllocator: ptr VkAllocationCallbacks,
+    pRenderPass: ptr VkRenderPass,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateRenderPass2"))
+  vkCmdBeginRenderPass2 = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pRenderPassBegin: ptr VkRenderPassBeginInfo,
+    pSubpassBeginInfo: ptr VkSubpassBeginInfo,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginRenderPass2"))
+  vkCmdNextSubpass2 = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pSubpassBeginInfo: ptr VkSubpassBeginInfo,
+    pSubpassEndInfo: ptr VkSubpassEndInfo,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdNextSubpass2"))
+  vkCmdEndRenderPass2 = cast[proc(
+    commandBuffer: VkCommandBuffer, pSubpassEndInfo: ptr VkSubpassEndInfo
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdEndRenderPass2"))
+  vkResetQueryPool = cast[proc(
+    device: VkDevice, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkResetQueryPool"))
+  vkGetSemaphoreCounterValue = cast[proc(
+    device: VkDevice, semaphore: VkSemaphore, pValue: ptr uint64
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetSemaphoreCounterValue"))
+  vkWaitSemaphores = cast[proc(
+    device: VkDevice, pWaitInfo: ptr VkSemaphoreWaitInfo, timeout: uint64
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkWaitSemaphores"))
+  vkSignalSemaphore = cast[proc(
+    device: VkDevice, pSignalInfo: ptr VkSemaphoreSignalInfo
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSignalSemaphore"))
+  vkGetBufferDeviceAddress = cast[proc(
+    device: VkDevice, pInfo: ptr VkBufferDeviceAddressInfo
+  ): VkDeviceAddress {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetBufferDeviceAddress"
+  ))
+  vkGetBufferOpaqueCaptureAddress = cast[proc(
+    device: VkDevice, pInfo: ptr VkBufferDeviceAddressInfo
+  ): uint64 {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetBufferOpaqueCaptureAddress"
+  ))
+  vkGetDeviceMemoryOpaqueCaptureAddress = cast[proc(
+    device: VkDevice, pInfo: ptr VkDeviceMemoryOpaqueCaptureAddressInfo
+  ): uint64 {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDeviceMemoryOpaqueCaptureAddress"
+  ))
 
 # feature VK_VERSION_1_3
 var
-  vkGetPhysicalDeviceToolProperties*: proc(physicalDevice: VkPhysicalDevice, pToolCount: ptr uint32, pToolProperties: ptr VkPhysicalDeviceToolProperties): VkResult {.stdcall.}
-  vkCreatePrivateDataSlot*: proc(device: VkDevice, pCreateInfo: ptr VkPrivateDataSlotCreateInfo, pAllocator: ptr VkAllocationCallbacks, pPrivateDataSlot: ptr VkPrivateDataSlot): VkResult {.stdcall.}
-  vkDestroyPrivateDataSlot*: proc(device: VkDevice, privateDataSlot: VkPrivateDataSlot, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkSetPrivateData*: proc(device: VkDevice, objectType: VkObjectType, objectHandle: uint64, privateDataSlot: VkPrivateDataSlot, data: uint64): VkResult {.stdcall.}
-  vkGetPrivateData*: proc(device: VkDevice, objectType: VkObjectType, objectHandle: uint64, privateDataSlot: VkPrivateDataSlot, pData: ptr uint64): void {.stdcall.}
-  vkCmdSetEvent2*: proc(commandBuffer: VkCommandBuffer, event: VkEvent, pDependencyInfo: ptr VkDependencyInfo): void {.stdcall.}
-  vkCmdResetEvent2*: proc(commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags2): void {.stdcall.}
-  vkCmdWaitEvents2*: proc(commandBuffer: VkCommandBuffer, eventCount: uint32, pEvents: ptr VkEvent, pDependencyInfos: ptr VkDependencyInfo): void {.stdcall.}
-  vkCmdPipelineBarrier2*: proc(commandBuffer: VkCommandBuffer, pDependencyInfo: ptr VkDependencyInfo): void {.stdcall.}
-  vkCmdWriteTimestamp2*: proc(commandBuffer: VkCommandBuffer, stage: VkPipelineStageFlags2, queryPool: VkQueryPool, query: uint32): void {.stdcall.}
-  vkQueueSubmit2*: proc(queue: VkQueue, submitCount: uint32, pSubmits: ptr VkSubmitInfo2, fence: VkFence): VkResult {.stdcall.}
-  vkCmdCopyBuffer2*: proc(commandBuffer: VkCommandBuffer, pCopyBufferInfo: ptr VkCopyBufferInfo2): void {.stdcall.}
-  vkCmdCopyImage2*: proc(commandBuffer: VkCommandBuffer, pCopyImageInfo: ptr VkCopyImageInfo2): void {.stdcall.}
-  vkCmdCopyBufferToImage2*: proc(commandBuffer: VkCommandBuffer, pCopyBufferToImageInfo: ptr VkCopyBufferToImageInfo2): void {.stdcall.}
-  vkCmdCopyImageToBuffer2*: proc(commandBuffer: VkCommandBuffer, pCopyImageToBufferInfo: ptr VkCopyImageToBufferInfo2): void {.stdcall.}
-  vkCmdBlitImage2*: proc(commandBuffer: VkCommandBuffer, pBlitImageInfo: ptr VkBlitImageInfo2): void {.stdcall.}
-  vkCmdResolveImage2*: proc(commandBuffer: VkCommandBuffer, pResolveImageInfo: ptr VkResolveImageInfo2): void {.stdcall.}
-  vkCmdBeginRendering*: proc(commandBuffer: VkCommandBuffer, pRenderingInfo: ptr VkRenderingInfo): void {.stdcall.}
+  vkGetPhysicalDeviceToolProperties*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pToolCount: ptr uint32,
+    pToolProperties: ptr VkPhysicalDeviceToolProperties,
+  ): VkResult {.stdcall.}
+  vkCreatePrivateDataSlot*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkPrivateDataSlotCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pPrivateDataSlot: ptr VkPrivateDataSlot,
+  ): VkResult {.stdcall.}
+  vkDestroyPrivateDataSlot*: proc(
+    device: VkDevice,
+    privateDataSlot: VkPrivateDataSlot,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkSetPrivateData*: proc(
+    device: VkDevice,
+    objectType: VkObjectType,
+    objectHandle: uint64,
+    privateDataSlot: VkPrivateDataSlot,
+    data: uint64,
+  ): VkResult {.stdcall.}
+  vkGetPrivateData*: proc(
+    device: VkDevice,
+    objectType: VkObjectType,
+    objectHandle: uint64,
+    privateDataSlot: VkPrivateDataSlot,
+    pData: ptr uint64,
+  ): void {.stdcall.}
+  vkCmdSetEvent2*: proc(
+    commandBuffer: VkCommandBuffer,
+    event: VkEvent,
+    pDependencyInfo: ptr VkDependencyInfo,
+  ): void {.stdcall.}
+  vkCmdResetEvent2*: proc(
+    commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags2
+  ): void {.stdcall.}
+  vkCmdWaitEvents2*: proc(
+    commandBuffer: VkCommandBuffer,
+    eventCount: uint32,
+    pEvents: ptr VkEvent,
+    pDependencyInfos: ptr VkDependencyInfo,
+  ): void {.stdcall.}
+  vkCmdPipelineBarrier2*: proc(
+    commandBuffer: VkCommandBuffer, pDependencyInfo: ptr VkDependencyInfo
+  ): void {.stdcall.}
+  vkCmdWriteTimestamp2*: proc(
+    commandBuffer: VkCommandBuffer,
+    stage: VkPipelineStageFlags2,
+    queryPool: VkQueryPool,
+    query: uint32,
+  ): void {.stdcall.}
+  vkQueueSubmit2*: proc(
+    queue: VkQueue, submitCount: uint32, pSubmits: ptr VkSubmitInfo2, fence: VkFence
+  ): VkResult {.stdcall.}
+  vkCmdCopyBuffer2*: proc(
+    commandBuffer: VkCommandBuffer, pCopyBufferInfo: ptr VkCopyBufferInfo2
+  ): void {.stdcall.}
+  vkCmdCopyImage2*: proc(
+    commandBuffer: VkCommandBuffer, pCopyImageInfo: ptr VkCopyImageInfo2
+  ): void {.stdcall.}
+  vkCmdCopyBufferToImage2*: proc(
+    commandBuffer: VkCommandBuffer, pCopyBufferToImageInfo: ptr VkCopyBufferToImageInfo2
+  ): void {.stdcall.}
+  vkCmdCopyImageToBuffer2*: proc(
+    commandBuffer: VkCommandBuffer, pCopyImageToBufferInfo: ptr VkCopyImageToBufferInfo2
+  ): void {.stdcall.}
+  vkCmdBlitImage2*: proc(
+    commandBuffer: VkCommandBuffer, pBlitImageInfo: ptr VkBlitImageInfo2
+  ): void {.stdcall.}
+  vkCmdResolveImage2*: proc(
+    commandBuffer: VkCommandBuffer, pResolveImageInfo: ptr VkResolveImageInfo2
+  ): void {.stdcall.}
+  vkCmdBeginRendering*: proc(
+    commandBuffer: VkCommandBuffer, pRenderingInfo: ptr VkRenderingInfo
+  ): void {.stdcall.}
   vkCmdEndRendering*: proc(commandBuffer: VkCommandBuffer): void {.stdcall.}
-  vkCmdSetCullMode*: proc(commandBuffer: VkCommandBuffer, cullMode: VkCullModeFlags): void {.stdcall.}
-  vkCmdSetFrontFace*: proc(commandBuffer: VkCommandBuffer, frontFace: VkFrontFace): void {.stdcall.}
-  vkCmdSetPrimitiveTopology*: proc(commandBuffer: VkCommandBuffer, primitiveTopology: VkPrimitiveTopology): void {.stdcall.}
-  vkCmdSetViewportWithCount*: proc(commandBuffer: VkCommandBuffer, viewportCount: uint32, pViewports: ptr VkViewport): void {.stdcall.}
-  vkCmdSetScissorWithCount*: proc(commandBuffer: VkCommandBuffer, scissorCount: uint32, pScissors: ptr VkRect2D): void {.stdcall.}
-  vkCmdBindVertexBuffers2*: proc(commandBuffer: VkCommandBuffer, firstBinding: uint32, bindingCount: uint32, pBuffers: ptr VkBuffer, pOffsets: ptr VkDeviceSize, pSizes: ptr VkDeviceSize, pStrides: ptr VkDeviceSize): void {.stdcall.}
-  vkCmdSetDepthTestEnable*: proc(commandBuffer: VkCommandBuffer, depthTestEnable: VkBool32): void {.stdcall.}
-  vkCmdSetDepthWriteEnable*: proc(commandBuffer: VkCommandBuffer, depthWriteEnable: VkBool32): void {.stdcall.}
-  vkCmdSetDepthCompareOp*: proc(commandBuffer: VkCommandBuffer, depthCompareOp: VkCompareOp): void {.stdcall.}
-  vkCmdSetDepthBoundsTestEnable*: proc(commandBuffer: VkCommandBuffer, depthBoundsTestEnable: VkBool32): void {.stdcall.}
-  vkCmdSetStencilTestEnable*: proc(commandBuffer: VkCommandBuffer, stencilTestEnable: VkBool32): void {.stdcall.}
-  vkCmdSetStencilOp*: proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, failOp: VkStencilOp, passOp: VkStencilOp, depthFailOp: VkStencilOp, compareOp: VkCompareOp): void {.stdcall.}
-  vkCmdSetRasterizerDiscardEnable*: proc(commandBuffer: VkCommandBuffer, rasterizerDiscardEnable: VkBool32): void {.stdcall.}
-  vkCmdSetDepthBiasEnable*: proc(commandBuffer: VkCommandBuffer, depthBiasEnable: VkBool32): void {.stdcall.}
-  vkCmdSetPrimitiveRestartEnable*: proc(commandBuffer: VkCommandBuffer, primitiveRestartEnable: VkBool32): void {.stdcall.}
-  vkGetDeviceBufferMemoryRequirements*: proc(device: VkDevice, pInfo: ptr VkDeviceBufferMemoryRequirements, pMemoryRequirements: ptr VkMemoryRequirements2): void {.stdcall.}
-  vkGetDeviceImageMemoryRequirements*: proc(device: VkDevice, pInfo: ptr VkDeviceImageMemoryRequirements, pMemoryRequirements: ptr VkMemoryRequirements2): void {.stdcall.}
-  vkGetDeviceImageSparseMemoryRequirements*: proc(device: VkDevice, pInfo: ptr VkDeviceImageMemoryRequirements, pSparseMemoryRequirementCount: ptr uint32, pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements2): void {.stdcall.}
+  vkCmdSetCullMode*:
+    proc(commandBuffer: VkCommandBuffer, cullMode: VkCullModeFlags): void {.stdcall.}
+  vkCmdSetFrontFace*:
+    proc(commandBuffer: VkCommandBuffer, frontFace: VkFrontFace): void {.stdcall.}
+  vkCmdSetPrimitiveTopology*: proc(
+    commandBuffer: VkCommandBuffer, primitiveTopology: VkPrimitiveTopology
+  ): void {.stdcall.}
+  vkCmdSetViewportWithCount*: proc(
+    commandBuffer: VkCommandBuffer, viewportCount: uint32, pViewports: ptr VkViewport
+  ): void {.stdcall.}
+  vkCmdSetScissorWithCount*: proc(
+    commandBuffer: VkCommandBuffer, scissorCount: uint32, pScissors: ptr VkRect2D
+  ): void {.stdcall.}
+  vkCmdBindVertexBuffers2*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstBinding: uint32,
+    bindingCount: uint32,
+    pBuffers: ptr VkBuffer,
+    pOffsets: ptr VkDeviceSize,
+    pSizes: ptr VkDeviceSize,
+    pStrides: ptr VkDeviceSize,
+  ): void {.stdcall.}
+  vkCmdSetDepthTestEnable*:
+    proc(commandBuffer: VkCommandBuffer, depthTestEnable: VkBool32): void {.stdcall.}
+  vkCmdSetDepthWriteEnable*:
+    proc(commandBuffer: VkCommandBuffer, depthWriteEnable: VkBool32): void {.stdcall.}
+  vkCmdSetDepthCompareOp*:
+    proc(commandBuffer: VkCommandBuffer, depthCompareOp: VkCompareOp): void {.stdcall.}
+  vkCmdSetDepthBoundsTestEnable*: proc(
+    commandBuffer: VkCommandBuffer, depthBoundsTestEnable: VkBool32
+  ): void {.stdcall.}
+  vkCmdSetStencilTestEnable*:
+    proc(commandBuffer: VkCommandBuffer, stencilTestEnable: VkBool32): void {.stdcall.}
+  vkCmdSetStencilOp*: proc(
+    commandBuffer: VkCommandBuffer,
+    faceMask: VkStencilFaceFlags,
+    failOp: VkStencilOp,
+    passOp: VkStencilOp,
+    depthFailOp: VkStencilOp,
+    compareOp: VkCompareOp,
+  ): void {.stdcall.}
+  vkCmdSetRasterizerDiscardEnable*: proc(
+    commandBuffer: VkCommandBuffer, rasterizerDiscardEnable: VkBool32
+  ): void {.stdcall.}
+  vkCmdSetDepthBiasEnable*:
+    proc(commandBuffer: VkCommandBuffer, depthBiasEnable: VkBool32): void {.stdcall.}
+  vkCmdSetPrimitiveRestartEnable*: proc(
+    commandBuffer: VkCommandBuffer, primitiveRestartEnable: VkBool32
+  ): void {.stdcall.}
+  vkGetDeviceBufferMemoryRequirements*: proc(
+    device: VkDevice,
+    pInfo: ptr VkDeviceBufferMemoryRequirements,
+    pMemoryRequirements: ptr VkMemoryRequirements2,
+  ): void {.stdcall.}
+  vkGetDeviceImageMemoryRequirements*: proc(
+    device: VkDevice,
+    pInfo: ptr VkDeviceImageMemoryRequirements,
+    pMemoryRequirements: ptr VkMemoryRequirements2,
+  ): void {.stdcall.}
+  vkGetDeviceImageSparseMemoryRequirements*: proc(
+    device: VkDevice,
+    pInfo: ptr VkDeviceImageMemoryRequirements,
+    pSparseMemoryRequirementCount: ptr uint32,
+    pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements2,
+  ): void {.stdcall.}
 proc loadVK_VERSION_1_3*(instance: VkInstance) =
-  vkGetPhysicalDeviceToolProperties = cast[proc(physicalDevice: VkPhysicalDevice, pToolCount: ptr uint32, pToolProperties: ptr VkPhysicalDeviceToolProperties): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceToolProperties"))
-  vkCreatePrivateDataSlot = cast[proc(device: VkDevice, pCreateInfo: ptr VkPrivateDataSlotCreateInfo, pAllocator: ptr VkAllocationCallbacks, pPrivateDataSlot: ptr VkPrivateDataSlot): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreatePrivateDataSlot"))
-  vkDestroyPrivateDataSlot = cast[proc(device: VkDevice, privateDataSlot: VkPrivateDataSlot, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyPrivateDataSlot"))
-  vkSetPrivateData = cast[proc(device: VkDevice, objectType: VkObjectType, objectHandle: uint64, privateDataSlot: VkPrivateDataSlot, data: uint64): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSetPrivateData"))
-  vkGetPrivateData = cast[proc(device: VkDevice, objectType: VkObjectType, objectHandle: uint64, privateDataSlot: VkPrivateDataSlot, pData: ptr uint64): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPrivateData"))
-  vkCmdSetEvent2 = cast[proc(commandBuffer: VkCommandBuffer, event: VkEvent, pDependencyInfo: ptr VkDependencyInfo): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetEvent2"))
-  vkCmdResetEvent2 = cast[proc(commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdResetEvent2"))
-  vkCmdWaitEvents2 = cast[proc(commandBuffer: VkCommandBuffer, eventCount: uint32, pEvents: ptr VkEvent, pDependencyInfos: ptr VkDependencyInfo): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdWaitEvents2"))
-  vkCmdPipelineBarrier2 = cast[proc(commandBuffer: VkCommandBuffer, pDependencyInfo: ptr VkDependencyInfo): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdPipelineBarrier2"))
-  vkCmdWriteTimestamp2 = cast[proc(commandBuffer: VkCommandBuffer, stage: VkPipelineStageFlags2, queryPool: VkQueryPool, query: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdWriteTimestamp2"))
-  vkQueueSubmit2 = cast[proc(queue: VkQueue, submitCount: uint32, pSubmits: ptr VkSubmitInfo2, fence: VkFence): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkQueueSubmit2"))
-  vkCmdCopyBuffer2 = cast[proc(commandBuffer: VkCommandBuffer, pCopyBufferInfo: ptr VkCopyBufferInfo2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyBuffer2"))
-  vkCmdCopyImage2 = cast[proc(commandBuffer: VkCommandBuffer, pCopyImageInfo: ptr VkCopyImageInfo2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyImage2"))
-  vkCmdCopyBufferToImage2 = cast[proc(commandBuffer: VkCommandBuffer, pCopyBufferToImageInfo: ptr VkCopyBufferToImageInfo2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyBufferToImage2"))
-  vkCmdCopyImageToBuffer2 = cast[proc(commandBuffer: VkCommandBuffer, pCopyImageToBufferInfo: ptr VkCopyImageToBufferInfo2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer2"))
-  vkCmdBlitImage2 = cast[proc(commandBuffer: VkCommandBuffer, pBlitImageInfo: ptr VkBlitImageInfo2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBlitImage2"))
-  vkCmdResolveImage2 = cast[proc(commandBuffer: VkCommandBuffer, pResolveImageInfo: ptr VkResolveImageInfo2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdResolveImage2"))
-  vkCmdBeginRendering = cast[proc(commandBuffer: VkCommandBuffer, pRenderingInfo: ptr VkRenderingInfo): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginRendering"))
-  vkCmdEndRendering = cast[proc(commandBuffer: VkCommandBuffer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdEndRendering"))
-  vkCmdSetCullMode = cast[proc(commandBuffer: VkCommandBuffer, cullMode: VkCullModeFlags): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetCullMode"))
-  vkCmdSetFrontFace = cast[proc(commandBuffer: VkCommandBuffer, frontFace: VkFrontFace): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetFrontFace"))
-  vkCmdSetPrimitiveTopology = cast[proc(commandBuffer: VkCommandBuffer, primitiveTopology: VkPrimitiveTopology): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetPrimitiveTopology"))
-  vkCmdSetViewportWithCount = cast[proc(commandBuffer: VkCommandBuffer, viewportCount: uint32, pViewports: ptr VkViewport): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetViewportWithCount"))
-  vkCmdSetScissorWithCount = cast[proc(commandBuffer: VkCommandBuffer, scissorCount: uint32, pScissors: ptr VkRect2D): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetScissorWithCount"))
-  vkCmdBindVertexBuffers2 = cast[proc(commandBuffer: VkCommandBuffer, firstBinding: uint32, bindingCount: uint32, pBuffers: ptr VkBuffer, pOffsets: ptr VkDeviceSize, pSizes: ptr VkDeviceSize, pStrides: ptr VkDeviceSize): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindVertexBuffers2"))
-  vkCmdSetDepthTestEnable = cast[proc(commandBuffer: VkCommandBuffer, depthTestEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthTestEnable"))
-  vkCmdSetDepthWriteEnable = cast[proc(commandBuffer: VkCommandBuffer, depthWriteEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthWriteEnable"))
-  vkCmdSetDepthCompareOp = cast[proc(commandBuffer: VkCommandBuffer, depthCompareOp: VkCompareOp): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthCompareOp"))
-  vkCmdSetDepthBoundsTestEnable = cast[proc(commandBuffer: VkCommandBuffer, depthBoundsTestEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthBoundsTestEnable"))
-  vkCmdSetStencilTestEnable = cast[proc(commandBuffer: VkCommandBuffer, stencilTestEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetStencilTestEnable"))
-  vkCmdSetStencilOp = cast[proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, failOp: VkStencilOp, passOp: VkStencilOp, depthFailOp: VkStencilOp, compareOp: VkCompareOp): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetStencilOp"))
-  vkCmdSetRasterizerDiscardEnable = cast[proc(commandBuffer: VkCommandBuffer, rasterizerDiscardEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetRasterizerDiscardEnable"))
-  vkCmdSetDepthBiasEnable = cast[proc(commandBuffer: VkCommandBuffer, depthBiasEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthBiasEnable"))
-  vkCmdSetPrimitiveRestartEnable = cast[proc(commandBuffer: VkCommandBuffer, primitiveRestartEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetPrimitiveRestartEnable"))
-  vkGetDeviceBufferMemoryRequirements = cast[proc(device: VkDevice, pInfo: ptr VkDeviceBufferMemoryRequirements, pMemoryRequirements: ptr VkMemoryRequirements2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceBufferMemoryRequirements"))
-  vkGetDeviceImageMemoryRequirements = cast[proc(device: VkDevice, pInfo: ptr VkDeviceImageMemoryRequirements, pMemoryRequirements: ptr VkMemoryRequirements2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceImageMemoryRequirements"))
-  vkGetDeviceImageSparseMemoryRequirements = cast[proc(device: VkDevice, pInfo: ptr VkDeviceImageMemoryRequirements, pSparseMemoryRequirementCount: ptr uint32, pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceImageSparseMemoryRequirements"))
-
+  vkGetPhysicalDeviceToolProperties = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pToolCount: ptr uint32,
+    pToolProperties: ptr VkPhysicalDeviceToolProperties,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceToolProperties"
+  ))
+  vkCreatePrivateDataSlot = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkPrivateDataSlotCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pPrivateDataSlot: ptr VkPrivateDataSlot,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreatePrivateDataSlot"))
+  vkDestroyPrivateDataSlot = cast[proc(
+    device: VkDevice,
+    privateDataSlot: VkPrivateDataSlot,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyPrivateDataSlot"))
+  vkSetPrivateData = cast[proc(
+    device: VkDevice,
+    objectType: VkObjectType,
+    objectHandle: uint64,
+    privateDataSlot: VkPrivateDataSlot,
+    data: uint64,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSetPrivateData"))
+  vkGetPrivateData = cast[proc(
+    device: VkDevice,
+    objectType: VkObjectType,
+    objectHandle: uint64,
+    privateDataSlot: VkPrivateDataSlot,
+    pData: ptr uint64,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPrivateData"))
+  vkCmdSetEvent2 = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    event: VkEvent,
+    pDependencyInfo: ptr VkDependencyInfo,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetEvent2"))
+  vkCmdResetEvent2 = cast[proc(
+    commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags2
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdResetEvent2"))
+  vkCmdWaitEvents2 = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    eventCount: uint32,
+    pEvents: ptr VkEvent,
+    pDependencyInfos: ptr VkDependencyInfo,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdWaitEvents2"))
+  vkCmdPipelineBarrier2 = cast[proc(
+    commandBuffer: VkCommandBuffer, pDependencyInfo: ptr VkDependencyInfo
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdPipelineBarrier2"))
+  vkCmdWriteTimestamp2 = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    stage: VkPipelineStageFlags2,
+    queryPool: VkQueryPool,
+    query: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdWriteTimestamp2"))
+  vkQueueSubmit2 = cast[proc(
+    queue: VkQueue, submitCount: uint32, pSubmits: ptr VkSubmitInfo2, fence: VkFence
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkQueueSubmit2"))
+  vkCmdCopyBuffer2 = cast[proc(
+    commandBuffer: VkCommandBuffer, pCopyBufferInfo: ptr VkCopyBufferInfo2
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyBuffer2"))
+  vkCmdCopyImage2 = cast[proc(
+    commandBuffer: VkCommandBuffer, pCopyImageInfo: ptr VkCopyImageInfo2
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyImage2"))
+  vkCmdCopyBufferToImage2 = cast[proc(
+    commandBuffer: VkCommandBuffer, pCopyBufferToImageInfo: ptr VkCopyBufferToImageInfo2
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyBufferToImage2"))
+  vkCmdCopyImageToBuffer2 = cast[proc(
+    commandBuffer: VkCommandBuffer, pCopyImageToBufferInfo: ptr VkCopyImageToBufferInfo2
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer2"))
+  vkCmdBlitImage2 = cast[proc(
+    commandBuffer: VkCommandBuffer, pBlitImageInfo: ptr VkBlitImageInfo2
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBlitImage2"))
+  vkCmdResolveImage2 = cast[proc(
+    commandBuffer: VkCommandBuffer, pResolveImageInfo: ptr VkResolveImageInfo2
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdResolveImage2"))
+  vkCmdBeginRendering = cast[proc(
+    commandBuffer: VkCommandBuffer, pRenderingInfo: ptr VkRenderingInfo
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginRendering"))
+  vkCmdEndRendering = cast[proc(commandBuffer: VkCommandBuffer): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdEndRendering"
+  ))
+  vkCmdSetCullMode = cast[proc(
+    commandBuffer: VkCommandBuffer, cullMode: VkCullModeFlags
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetCullMode"))
+  vkCmdSetFrontFace = cast[proc(
+    commandBuffer: VkCommandBuffer, frontFace: VkFrontFace
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetFrontFace"))
+  vkCmdSetPrimitiveTopology = cast[proc(
+    commandBuffer: VkCommandBuffer, primitiveTopology: VkPrimitiveTopology
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetPrimitiveTopology"))
+  vkCmdSetViewportWithCount = cast[proc(
+    commandBuffer: VkCommandBuffer, viewportCount: uint32, pViewports: ptr VkViewport
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetViewportWithCount"))
+  vkCmdSetScissorWithCount = cast[proc(
+    commandBuffer: VkCommandBuffer, scissorCount: uint32, pScissors: ptr VkRect2D
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetScissorWithCount"))
+  vkCmdBindVertexBuffers2 = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstBinding: uint32,
+    bindingCount: uint32,
+    pBuffers: ptr VkBuffer,
+    pOffsets: ptr VkDeviceSize,
+    pSizes: ptr VkDeviceSize,
+    pStrides: ptr VkDeviceSize,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindVertexBuffers2"))
+  vkCmdSetDepthTestEnable = cast[proc(
+    commandBuffer: VkCommandBuffer, depthTestEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthTestEnable"))
+  vkCmdSetDepthWriteEnable = cast[proc(
+    commandBuffer: VkCommandBuffer, depthWriteEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthWriteEnable"))
+  vkCmdSetDepthCompareOp = cast[proc(
+    commandBuffer: VkCommandBuffer, depthCompareOp: VkCompareOp
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthCompareOp"))
+  vkCmdSetDepthBoundsTestEnable = cast[proc(
+    commandBuffer: VkCommandBuffer, depthBoundsTestEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthBoundsTestEnable"))
+  vkCmdSetStencilTestEnable = cast[proc(
+    commandBuffer: VkCommandBuffer, stencilTestEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetStencilTestEnable"))
+  vkCmdSetStencilOp = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    faceMask: VkStencilFaceFlags,
+    failOp: VkStencilOp,
+    passOp: VkStencilOp,
+    depthFailOp: VkStencilOp,
+    compareOp: VkCompareOp,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetStencilOp"))
+  vkCmdSetRasterizerDiscardEnable = cast[proc(
+    commandBuffer: VkCommandBuffer, rasterizerDiscardEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetRasterizerDiscardEnable"
+  ))
+  vkCmdSetDepthBiasEnable = cast[proc(
+    commandBuffer: VkCommandBuffer, depthBiasEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthBiasEnable"))
+  vkCmdSetPrimitiveRestartEnable = cast[proc(
+    commandBuffer: VkCommandBuffer, primitiveRestartEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetPrimitiveRestartEnable"))
+  vkGetDeviceBufferMemoryRequirements = cast[proc(
+    device: VkDevice,
+    pInfo: ptr VkDeviceBufferMemoryRequirements,
+    pMemoryRequirements: ptr VkMemoryRequirements2,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDeviceBufferMemoryRequirements"
+  ))
+  vkGetDeviceImageMemoryRequirements = cast[proc(
+    device: VkDevice,
+    pInfo: ptr VkDeviceImageMemoryRequirements,
+    pMemoryRequirements: ptr VkMemoryRequirements2,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDeviceImageMemoryRequirements"
+  ))
+  vkGetDeviceImageSparseMemoryRequirements = cast[proc(
+    device: VkDevice,
+    pInfo: ptr VkDeviceImageMemoryRequirements,
+    pSparseMemoryRequirementCount: ptr uint32,
+    pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements2,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDeviceImageSparseMemoryRequirements"
+  ))
 
 proc loadVulkan*(instance: VkInstance) =
   loadVK_VERSION_1_0(instance)
@@ -10442,10 +14659,23 @@
   loadVK_VERSION_1_3(instance)
 
 # extension VK_AMD_shader_info
-var
-  vkGetShaderInfoAMD*: proc(device: VkDevice, pipeline: VkPipeline, shaderStage: VkShaderStageFlagBits, infoType: VkShaderInfoTypeAMD, pInfoSize: ptr csize_t, pInfo: pointer): VkResult {.stdcall.}
+var vkGetShaderInfoAMD*: proc(
+  device: VkDevice,
+  pipeline: VkPipeline,
+  shaderStage: VkShaderStageFlagBits,
+  infoType: VkShaderInfoTypeAMD,
+  pInfoSize: ptr csize_t,
+  pInfo: pointer,
+): VkResult {.stdcall.}
 proc loadVK_AMD_shader_info*(instance: VkInstance) =
-  vkGetShaderInfoAMD = cast[proc(device: VkDevice, pipeline: VkPipeline, shaderStage: VkShaderStageFlagBits, infoType: VkShaderInfoTypeAMD, pInfoSize: ptr csize_t, pInfo: pointer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetShaderInfoAMD"))
+  vkGetShaderInfoAMD = cast[proc(
+    device: VkDevice,
+    pipeline: VkPipeline,
+    shaderStage: VkShaderStageFlagBits,
+    infoType: VkShaderInfoTypeAMD,
+    pInfoSize: ptr csize_t,
+    pInfo: pointer,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetShaderInfoAMD"))
 
 proc loadVK_AMD_gpu_shader_int16*(instance: VkInstance) =
   discard
@@ -10455,68 +14685,256 @@
 
 # extension VK_EXT_sample_locations
 var
-  vkCmdSetSampleLocationsEXT*: proc(commandBuffer: VkCommandBuffer, pSampleLocationsInfo: ptr VkSampleLocationsInfoEXT): void {.stdcall.}
-  vkGetPhysicalDeviceMultisamplePropertiesEXT*: proc(physicalDevice: VkPhysicalDevice, samples: VkSampleCountFlagBits, pMultisampleProperties: ptr VkMultisamplePropertiesEXT): void {.stdcall.}
+  vkCmdSetSampleLocationsEXT*: proc(
+    commandBuffer: VkCommandBuffer, pSampleLocationsInfo: ptr VkSampleLocationsInfoEXT
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceMultisamplePropertiesEXT*: proc(
+    physicalDevice: VkPhysicalDevice,
+    samples: VkSampleCountFlagBits,
+    pMultisampleProperties: ptr VkMultisamplePropertiesEXT,
+  ): void {.stdcall.}
 proc loadVK_EXT_sample_locations*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdSetSampleLocationsEXT = cast[proc(commandBuffer: VkCommandBuffer, pSampleLocationsInfo: ptr VkSampleLocationsInfoEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetSampleLocationsEXT"))
-  vkGetPhysicalDeviceMultisamplePropertiesEXT = cast[proc(physicalDevice: VkPhysicalDevice, samples: VkSampleCountFlagBits, pMultisampleProperties: ptr VkMultisamplePropertiesEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
+  vkCmdSetSampleLocationsEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, pSampleLocationsInfo: ptr VkSampleLocationsInfoEXT
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetSampleLocationsEXT"))
+  vkGetPhysicalDeviceMultisamplePropertiesEXT = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    samples: VkSampleCountFlagBits,
+    pMultisampleProperties: ptr VkMultisamplePropertiesEXT,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT"
+  ))
 
 # extension VK_EXT_descriptor_buffer
 var
-  vkGetDescriptorSetLayoutSizeEXT*: proc(device: VkDevice, layout: VkDescriptorSetLayout, pLayoutSizeInBytes: ptr VkDeviceSize): void {.stdcall.}
-  vkGetDescriptorSetLayoutBindingOffsetEXT*: proc(device: VkDevice, layout: VkDescriptorSetLayout, binding: uint32, pOffset: ptr VkDeviceSize): void {.stdcall.}
-  vkGetDescriptorEXT*: proc(device: VkDevice, pDescriptorInfo: ptr VkDescriptorGetInfoEXT, dataSize: csize_t, pDescriptor: pointer): void {.stdcall.}
-  vkCmdBindDescriptorBuffersEXT*: proc(commandBuffer: VkCommandBuffer, bufferCount: uint32, pBindingInfos: ptr VkDescriptorBufferBindingInfoEXT): void {.stdcall.}
-  vkCmdSetDescriptorBufferOffsetsEXT*: proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, layout: VkPipelineLayout, firstSet: uint32, setCount: uint32, pBufferIndices: ptr uint32, pOffsets: ptr VkDeviceSize): void {.stdcall.}
-  vkCmdBindDescriptorBufferEmbeddedSamplersEXT*: proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, layout: VkPipelineLayout, set: uint32): void {.stdcall.}
-  vkGetBufferOpaqueCaptureDescriptorDataEXT*: proc(device: VkDevice, pInfo: ptr VkBufferCaptureDescriptorDataInfoEXT, pData: pointer): VkResult {.stdcall.}
-  vkGetImageOpaqueCaptureDescriptorDataEXT*: proc(device: VkDevice, pInfo: ptr VkImageCaptureDescriptorDataInfoEXT, pData: pointer): VkResult {.stdcall.}
-  vkGetImageViewOpaqueCaptureDescriptorDataEXT*: proc(device: VkDevice, pInfo: ptr VkImageViewCaptureDescriptorDataInfoEXT, pData: pointer): VkResult {.stdcall.}
-  vkGetSamplerOpaqueCaptureDescriptorDataEXT*: proc(device: VkDevice, pInfo: ptr VkSamplerCaptureDescriptorDataInfoEXT, pData: pointer): VkResult {.stdcall.}
-  vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT*: proc(device: VkDevice, pInfo: ptr VkAccelerationStructureCaptureDescriptorDataInfoEXT, pData: pointer): VkResult {.stdcall.}
+  vkGetDescriptorSetLayoutSizeEXT*: proc(
+    device: VkDevice,
+    layout: VkDescriptorSetLayout,
+    pLayoutSizeInBytes: ptr VkDeviceSize,
+  ): void {.stdcall.}
+  vkGetDescriptorSetLayoutBindingOffsetEXT*: proc(
+    device: VkDevice,
+    layout: VkDescriptorSetLayout,
+    binding: uint32,
+    pOffset: ptr VkDeviceSize,
+  ): void {.stdcall.}
+  vkGetDescriptorEXT*: proc(
+    device: VkDevice,
+    pDescriptorInfo: ptr VkDescriptorGetInfoEXT,
+    dataSize: csize_t,
+    pDescriptor: pointer,
+  ): void {.stdcall.}
+  vkCmdBindDescriptorBuffersEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    bufferCount: uint32,
+    pBindingInfos: ptr VkDescriptorBufferBindingInfoEXT,
+  ): void {.stdcall.}
+  vkCmdSetDescriptorBufferOffsetsEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineBindPoint: VkPipelineBindPoint,
+    layout: VkPipelineLayout,
+    firstSet: uint32,
+    setCount: uint32,
+    pBufferIndices: ptr uint32,
+    pOffsets: ptr VkDeviceSize,
+  ): void {.stdcall.}
+  vkCmdBindDescriptorBufferEmbeddedSamplersEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineBindPoint: VkPipelineBindPoint,
+    layout: VkPipelineLayout,
+    set: uint32,
+  ): void {.stdcall.}
+  vkGetBufferOpaqueCaptureDescriptorDataEXT*: proc(
+    device: VkDevice, pInfo: ptr VkBufferCaptureDescriptorDataInfoEXT, pData: pointer
+  ): VkResult {.stdcall.}
+  vkGetImageOpaqueCaptureDescriptorDataEXT*: proc(
+    device: VkDevice, pInfo: ptr VkImageCaptureDescriptorDataInfoEXT, pData: pointer
+  ): VkResult {.stdcall.}
+  vkGetImageViewOpaqueCaptureDescriptorDataEXT*: proc(
+    device: VkDevice, pInfo: ptr VkImageViewCaptureDescriptorDataInfoEXT, pData: pointer
+  ): VkResult {.stdcall.}
+  vkGetSamplerOpaqueCaptureDescriptorDataEXT*: proc(
+    device: VkDevice, pInfo: ptr VkSamplerCaptureDescriptorDataInfoEXT, pData: pointer
+  ): VkResult {.stdcall.}
+  vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT*: proc(
+    device: VkDevice,
+    pInfo: ptr VkAccelerationStructureCaptureDescriptorDataInfoEXT,
+    pData: pointer,
+  ): VkResult {.stdcall.}
 proc loadVK_EXT_descriptor_buffer*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
   loadVK_VERSION_1_2(instance)
   loadVK_VERSION_1_3(instance)
   loadVK_VERSION_1_2(instance)
-  vkGetDescriptorSetLayoutSizeEXT = cast[proc(device: VkDevice, layout: VkDescriptorSetLayout, pLayoutSizeInBytes: ptr VkDeviceSize): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDescriptorSetLayoutSizeEXT"))
-  vkGetDescriptorSetLayoutBindingOffsetEXT = cast[proc(device: VkDevice, layout: VkDescriptorSetLayout, binding: uint32, pOffset: ptr VkDeviceSize): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDescriptorSetLayoutBindingOffsetEXT"))
-  vkGetDescriptorEXT = cast[proc(device: VkDevice, pDescriptorInfo: ptr VkDescriptorGetInfoEXT, dataSize: csize_t, pDescriptor: pointer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDescriptorEXT"))
-  vkCmdBindDescriptorBuffersEXT = cast[proc(commandBuffer: VkCommandBuffer, bufferCount: uint32, pBindingInfos: ptr VkDescriptorBufferBindingInfoEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindDescriptorBuffersEXT"))
-  vkCmdSetDescriptorBufferOffsetsEXT = cast[proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, layout: VkPipelineLayout, firstSet: uint32, setCount: uint32, pBufferIndices: ptr uint32, pOffsets: ptr VkDeviceSize): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDescriptorBufferOffsetsEXT"))
-  vkCmdBindDescriptorBufferEmbeddedSamplersEXT = cast[proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, layout: VkPipelineLayout, set: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindDescriptorBufferEmbeddedSamplersEXT"))
-  vkGetBufferOpaqueCaptureDescriptorDataEXT = cast[proc(device: VkDevice, pInfo: ptr VkBufferCaptureDescriptorDataInfoEXT, pData: pointer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetBufferOpaqueCaptureDescriptorDataEXT"))
-  vkGetImageOpaqueCaptureDescriptorDataEXT = cast[proc(device: VkDevice, pInfo: ptr VkImageCaptureDescriptorDataInfoEXT, pData: pointer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageOpaqueCaptureDescriptorDataEXT"))
-  vkGetImageViewOpaqueCaptureDescriptorDataEXT = cast[proc(device: VkDevice, pInfo: ptr VkImageViewCaptureDescriptorDataInfoEXT, pData: pointer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageViewOpaqueCaptureDescriptorDataEXT"))
-  vkGetSamplerOpaqueCaptureDescriptorDataEXT = cast[proc(device: VkDevice, pInfo: ptr VkSamplerCaptureDescriptorDataInfoEXT, pData: pointer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetSamplerOpaqueCaptureDescriptorDataEXT"))
-  vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = cast[proc(device: VkDevice, pInfo: ptr VkAccelerationStructureCaptureDescriptorDataInfoEXT, pData: pointer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT"))
+  vkGetDescriptorSetLayoutSizeEXT = cast[proc(
+    device: VkDevice,
+    layout: VkDescriptorSetLayout,
+    pLayoutSizeInBytes: ptr VkDeviceSize,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDescriptorSetLayoutSizeEXT"
+  ))
+  vkGetDescriptorSetLayoutBindingOffsetEXT = cast[proc(
+    device: VkDevice,
+    layout: VkDescriptorSetLayout,
+    binding: uint32,
+    pOffset: ptr VkDeviceSize,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDescriptorSetLayoutBindingOffsetEXT"
+  ))
+  vkGetDescriptorEXT = cast[proc(
+    device: VkDevice,
+    pDescriptorInfo: ptr VkDescriptorGetInfoEXT,
+    dataSize: csize_t,
+    pDescriptor: pointer,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDescriptorEXT"))
+  vkCmdBindDescriptorBuffersEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    bufferCount: uint32,
+    pBindingInfos: ptr VkDescriptorBufferBindingInfoEXT,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindDescriptorBuffersEXT"))
+  vkCmdSetDescriptorBufferOffsetsEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineBindPoint: VkPipelineBindPoint,
+    layout: VkPipelineLayout,
+    firstSet: uint32,
+    setCount: uint32,
+    pBufferIndices: ptr uint32,
+    pOffsets: ptr VkDeviceSize,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetDescriptorBufferOffsetsEXT"
+  ))
+  vkCmdBindDescriptorBufferEmbeddedSamplersEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineBindPoint: VkPipelineBindPoint,
+    layout: VkPipelineLayout,
+    set: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdBindDescriptorBufferEmbeddedSamplersEXT"
+  ))
+  vkGetBufferOpaqueCaptureDescriptorDataEXT = cast[proc(
+    device: VkDevice, pInfo: ptr VkBufferCaptureDescriptorDataInfoEXT, pData: pointer
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetBufferOpaqueCaptureDescriptorDataEXT"
+  ))
+  vkGetImageOpaqueCaptureDescriptorDataEXT = cast[proc(
+    device: VkDevice, pInfo: ptr VkImageCaptureDescriptorDataInfoEXT, pData: pointer
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetImageOpaqueCaptureDescriptorDataEXT"
+  ))
+  vkGetImageViewOpaqueCaptureDescriptorDataEXT = cast[proc(
+    device: VkDevice, pInfo: ptr VkImageViewCaptureDescriptorDataInfoEXT, pData: pointer
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetImageViewOpaqueCaptureDescriptorDataEXT"
+  ))
+  vkGetSamplerOpaqueCaptureDescriptorDataEXT = cast[proc(
+    device: VkDevice, pInfo: ptr VkSamplerCaptureDescriptorDataInfoEXT, pData: pointer
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetSamplerOpaqueCaptureDescriptorDataEXT"
+  ))
+  vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = cast[proc(
+    device: VkDevice,
+    pInfo: ptr VkAccelerationStructureCaptureDescriptorDataInfoEXT,
+    pData: pointer,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT"
+  ))
 
 # extension VK_KHR_performance_query
 var
-  vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR*: proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, pCounterCount: ptr uint32, pCounters: ptr VkPerformanceCounterKHR, pCounterDescriptions: ptr VkPerformanceCounterDescriptionKHR): VkResult {.stdcall.}
-  vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR*: proc(physicalDevice: VkPhysicalDevice, pPerformanceQueryCreateInfo: ptr VkQueryPoolPerformanceCreateInfoKHR, pNumPasses: ptr uint32): void {.stdcall.}
-  vkAcquireProfilingLockKHR*: proc(device: VkDevice, pInfo: ptr VkAcquireProfilingLockInfoKHR): VkResult {.stdcall.}
+  vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    queueFamilyIndex: uint32,
+    pCounterCount: ptr uint32,
+    pCounters: ptr VkPerformanceCounterKHR,
+    pCounterDescriptions: ptr VkPerformanceCounterDescriptionKHR,
+  ): VkResult {.stdcall.}
+  vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pPerformanceQueryCreateInfo: ptr VkQueryPoolPerformanceCreateInfoKHR,
+    pNumPasses: ptr uint32,
+  ): void {.stdcall.}
+  vkAcquireProfilingLockKHR*: proc(
+    device: VkDevice, pInfo: ptr VkAcquireProfilingLockInfoKHR
+  ): VkResult {.stdcall.}
   vkReleaseProfilingLockKHR*: proc(device: VkDevice): void {.stdcall.}
 proc loadVK_KHR_performance_query*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, pCounterCount: ptr uint32, pCounters: ptr VkPerformanceCounterKHR, pCounterDescriptions: ptr VkPerformanceCounterDescriptionKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
-  vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = cast[proc(physicalDevice: VkPhysicalDevice, pPerformanceQueryCreateInfo: ptr VkQueryPoolPerformanceCreateInfoKHR, pNumPasses: ptr uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
-  vkAcquireProfilingLockKHR = cast[proc(device: VkDevice, pInfo: ptr VkAcquireProfilingLockInfoKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAcquireProfilingLockKHR"))
-  vkReleaseProfilingLockKHR = cast[proc(device: VkDevice): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkReleaseProfilingLockKHR"))
+  vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    queueFamilyIndex: uint32,
+    pCounterCount: ptr uint32,
+    pCounters: ptr VkPerformanceCounterKHR,
+    pCounterDescriptions: ptr VkPerformanceCounterDescriptionKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"
+  ))
+  vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pPerformanceQueryCreateInfo: ptr VkQueryPoolPerformanceCreateInfoKHR,
+    pNumPasses: ptr uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"
+  ))
+  vkAcquireProfilingLockKHR = cast[proc(
+    device: VkDevice, pInfo: ptr VkAcquireProfilingLockInfoKHR
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAcquireProfilingLockKHR"))
+  vkReleaseProfilingLockKHR = cast[proc(device: VkDevice): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkReleaseProfilingLockKHR"
+  ))
 
 proc loadVK_GOOGLE_user_type*(instance: VkInstance) =
   discard
 
 # extension VK_EXT_debug_report
 var
-  vkCreateDebugReportCallbackEXT*: proc(instance: VkInstance, pCreateInfo: ptr VkDebugReportCallbackCreateInfoEXT, pAllocator: ptr VkAllocationCallbacks, pCallback: ptr VkDebugReportCallbackEXT): VkResult {.stdcall.}
-  vkDestroyDebugReportCallbackEXT*: proc(instance: VkInstance, callback: VkDebugReportCallbackEXT, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkDebugReportMessageEXT*: proc(instance: VkInstance, flags: VkDebugReportFlagsEXT, objectType: VkDebugReportObjectTypeEXT, theobject: uint64, location: csize_t, messageCode: int32, pLayerPrefix: cstring, pMessage: cstring): void {.stdcall.}
+  vkCreateDebugReportCallbackEXT*: proc(
+    instance: VkInstance,
+    pCreateInfo: ptr VkDebugReportCallbackCreateInfoEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+    pCallback: ptr VkDebugReportCallbackEXT,
+  ): VkResult {.stdcall.}
+  vkDestroyDebugReportCallbackEXT*: proc(
+    instance: VkInstance,
+    callback: VkDebugReportCallbackEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkDebugReportMessageEXT*: proc(
+    instance: VkInstance,
+    flags: VkDebugReportFlagsEXT,
+    objectType: VkDebugReportObjectTypeEXT,
+    theobject: uint64,
+    location: csize_t,
+    messageCode: int32,
+    pLayerPrefix: cstring,
+    pMessage: cstring,
+  ): void {.stdcall.}
 proc loadVK_EXT_debug_report*(instance: VkInstance) =
-  vkCreateDebugReportCallbackEXT = cast[proc(instance: VkInstance, pCreateInfo: ptr VkDebugReportCallbackCreateInfoEXT, pAllocator: ptr VkAllocationCallbacks, pCallback: ptr VkDebugReportCallbackEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateDebugReportCallbackEXT"))
-  vkDestroyDebugReportCallbackEXT = cast[proc(instance: VkInstance, callback: VkDebugReportCallbackEXT, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT"))
-  vkDebugReportMessageEXT = cast[proc(instance: VkInstance, flags: VkDebugReportFlagsEXT, objectType: VkDebugReportObjectTypeEXT, theobject: uint64, location: csize_t, messageCode: int32, pLayerPrefix: cstring, pMessage: cstring): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDebugReportMessageEXT"))
+  vkCreateDebugReportCallbackEXT = cast[proc(
+    instance: VkInstance,
+    pCreateInfo: ptr VkDebugReportCallbackCreateInfoEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+    pCallback: ptr VkDebugReportCallbackEXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCreateDebugReportCallbackEXT"
+  ))
+  vkDestroyDebugReportCallbackEXT = cast[proc(
+    instance: VkInstance,
+    callback: VkDebugReportCallbackEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkDestroyDebugReportCallbackEXT"
+  ))
+  vkDebugReportMessageEXT = cast[proc(
+    instance: VkInstance,
+    flags: VkDebugReportFlagsEXT,
+    objectType: VkDebugReportObjectTypeEXT,
+    theobject: uint64,
+    location: csize_t,
+    messageCode: int32,
+    pLayerPrefix: cstring,
+    pMessage: cstring,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDebugReportMessageEXT"))
 
 proc loadVK_EXT_multisampled_render_to_single_sampled*(instance: VkInstance) =
   loadVK_VERSION_1_2(instance)
@@ -10550,26 +14968,63 @@
 
 # extension VK_NV_shading_rate_image
 var
-  vkCmdBindShadingRateImageNV*: proc(commandBuffer: VkCommandBuffer, imageView: VkImageView, imageLayout: VkImageLayout): void {.stdcall.}
-  vkCmdSetViewportShadingRatePaletteNV*: proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pShadingRatePalettes: ptr VkShadingRatePaletteNV): void {.stdcall.}
-  vkCmdSetCoarseSampleOrderNV*: proc(commandBuffer: VkCommandBuffer, sampleOrderType: VkCoarseSampleOrderTypeNV, customSampleOrderCount: uint32, pCustomSampleOrders: ptr VkCoarseSampleOrderCustomNV): void {.stdcall.}
+  vkCmdBindShadingRateImageNV*: proc(
+    commandBuffer: VkCommandBuffer, imageView: VkImageView, imageLayout: VkImageLayout
+  ): void {.stdcall.}
+  vkCmdSetViewportShadingRatePaletteNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstViewport: uint32,
+    viewportCount: uint32,
+    pShadingRatePalettes: ptr VkShadingRatePaletteNV,
+  ): void {.stdcall.}
+  vkCmdSetCoarseSampleOrderNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    sampleOrderType: VkCoarseSampleOrderTypeNV,
+    customSampleOrderCount: uint32,
+    pCustomSampleOrders: ptr VkCoarseSampleOrderCustomNV,
+  ): void {.stdcall.}
 proc loadVK_NV_shading_rate_image*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdBindShadingRateImageNV = cast[proc(commandBuffer: VkCommandBuffer, imageView: VkImageView, imageLayout: VkImageLayout): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindShadingRateImageNV"))
-  vkCmdSetViewportShadingRatePaletteNV = cast[proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pShadingRatePalettes: ptr VkShadingRatePaletteNV): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetViewportShadingRatePaletteNV"))
-  vkCmdSetCoarseSampleOrderNV = cast[proc(commandBuffer: VkCommandBuffer, sampleOrderType: VkCoarseSampleOrderTypeNV, customSampleOrderCount: uint32, pCustomSampleOrders: ptr VkCoarseSampleOrderCustomNV): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetCoarseSampleOrderNV"))
+  vkCmdBindShadingRateImageNV = cast[proc(
+    commandBuffer: VkCommandBuffer, imageView: VkImageView, imageLayout: VkImageLayout
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindShadingRateImageNV"))
+  vkCmdSetViewportShadingRatePaletteNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstViewport: uint32,
+    viewportCount: uint32,
+    pShadingRatePalettes: ptr VkShadingRatePaletteNV,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetViewportShadingRatePaletteNV"
+  ))
+  vkCmdSetCoarseSampleOrderNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    sampleOrderType: VkCoarseSampleOrderTypeNV,
+    customSampleOrderCount: uint32,
+    pCustomSampleOrders: ptr VkCoarseSampleOrderCustomNV,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetCoarseSampleOrderNV"))
 
 proc loadVK_EXT_fragment_density_map*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
 
 # extension VK_NV_device_diagnostic_checkpoints
 var
-  vkCmdSetCheckpointNV*: proc(commandBuffer: VkCommandBuffer, pCheckpointMarker: pointer): void {.stdcall.}
-  vkGetQueueCheckpointDataNV*: proc(queue: VkQueue, pCheckpointDataCount: ptr uint32, pCheckpointData: ptr VkCheckpointDataNV): void {.stdcall.}
+  vkCmdSetCheckpointNV*:
+    proc(commandBuffer: VkCommandBuffer, pCheckpointMarker: pointer): void {.stdcall.}
+  vkGetQueueCheckpointDataNV*: proc(
+    queue: VkQueue,
+    pCheckpointDataCount: ptr uint32,
+    pCheckpointData: ptr VkCheckpointDataNV,
+  ): void {.stdcall.}
 proc loadVK_NV_device_diagnostic_checkpoints*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdSetCheckpointNV = cast[proc(commandBuffer: VkCommandBuffer, pCheckpointMarker: pointer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetCheckpointNV"))
-  vkGetQueueCheckpointDataNV = cast[proc(queue: VkQueue, pCheckpointDataCount: ptr uint32, pCheckpointData: ptr VkCheckpointDataNV): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetQueueCheckpointDataNV"))
+  vkCmdSetCheckpointNV = cast[proc(
+    commandBuffer: VkCommandBuffer, pCheckpointMarker: pointer
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetCheckpointNV"))
+  vkGetQueueCheckpointDataNV = cast[proc(
+    queue: VkQueue,
+    pCheckpointDataCount: ptr uint32,
+    pCheckpointData: ptr VkCheckpointDataNV,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetQueueCheckpointDataNV"))
 
 proc loadVK_EXT_pci_bus_info*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -10579,29 +15034,93 @@
 
 # extension VK_EXT_debug_utils
 var
-  vkSetDebugUtilsObjectNameEXT*: proc(device: VkDevice, pNameInfo: ptr VkDebugUtilsObjectNameInfoEXT): VkResult {.stdcall.}
-  vkSetDebugUtilsObjectTagEXT*: proc(device: VkDevice, pTagInfo: ptr VkDebugUtilsObjectTagInfoEXT): VkResult {.stdcall.}
-  vkQueueBeginDebugUtilsLabelEXT*: proc(queue: VkQueue, pLabelInfo: ptr VkDebugUtilsLabelEXT): void {.stdcall.}
+  vkSetDebugUtilsObjectNameEXT*: proc(
+    device: VkDevice, pNameInfo: ptr VkDebugUtilsObjectNameInfoEXT
+  ): VkResult {.stdcall.}
+  vkSetDebugUtilsObjectTagEXT*: proc(
+    device: VkDevice, pTagInfo: ptr VkDebugUtilsObjectTagInfoEXT
+  ): VkResult {.stdcall.}
+  vkQueueBeginDebugUtilsLabelEXT*:
+    proc(queue: VkQueue, pLabelInfo: ptr VkDebugUtilsLabelEXT): void {.stdcall.}
   vkQueueEndDebugUtilsLabelEXT*: proc(queue: VkQueue): void {.stdcall.}
-  vkQueueInsertDebugUtilsLabelEXT*: proc(queue: VkQueue, pLabelInfo: ptr VkDebugUtilsLabelEXT): void {.stdcall.}
-  vkCmdBeginDebugUtilsLabelEXT*: proc(commandBuffer: VkCommandBuffer, pLabelInfo: ptr VkDebugUtilsLabelEXT): void {.stdcall.}
+  vkQueueInsertDebugUtilsLabelEXT*:
+    proc(queue: VkQueue, pLabelInfo: ptr VkDebugUtilsLabelEXT): void {.stdcall.}
+  vkCmdBeginDebugUtilsLabelEXT*: proc(
+    commandBuffer: VkCommandBuffer, pLabelInfo: ptr VkDebugUtilsLabelEXT
+  ): void {.stdcall.}
   vkCmdEndDebugUtilsLabelEXT*: proc(commandBuffer: VkCommandBuffer): void {.stdcall.}
-  vkCmdInsertDebugUtilsLabelEXT*: proc(commandBuffer: VkCommandBuffer, pLabelInfo: ptr VkDebugUtilsLabelEXT): void {.stdcall.}
-  vkCreateDebugUtilsMessengerEXT*: proc(instance: VkInstance, pCreateInfo: ptr VkDebugUtilsMessengerCreateInfoEXT, pAllocator: ptr VkAllocationCallbacks, pMessenger: ptr VkDebugUtilsMessengerEXT): VkResult {.stdcall.}
-  vkDestroyDebugUtilsMessengerEXT*: proc(instance: VkInstance, messenger: VkDebugUtilsMessengerEXT, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkSubmitDebugUtilsMessageEXT*: proc(instance: VkInstance, messageSeverity: VkDebugUtilsMessageSeverityFlagBitsEXT, messageTypes: VkDebugUtilsMessageTypeFlagsEXT, pCallbackData: ptr VkDebugUtilsMessengerCallbackDataEXT): void {.stdcall.}
+  vkCmdInsertDebugUtilsLabelEXT*: proc(
+    commandBuffer: VkCommandBuffer, pLabelInfo: ptr VkDebugUtilsLabelEXT
+  ): void {.stdcall.}
+  vkCreateDebugUtilsMessengerEXT*: proc(
+    instance: VkInstance,
+    pCreateInfo: ptr VkDebugUtilsMessengerCreateInfoEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+    pMessenger: ptr VkDebugUtilsMessengerEXT,
+  ): VkResult {.stdcall.}
+  vkDestroyDebugUtilsMessengerEXT*: proc(
+    instance: VkInstance,
+    messenger: VkDebugUtilsMessengerEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkSubmitDebugUtilsMessageEXT*: proc(
+    instance: VkInstance,
+    messageSeverity: VkDebugUtilsMessageSeverityFlagBitsEXT,
+    messageTypes: VkDebugUtilsMessageTypeFlagsEXT,
+    pCallbackData: ptr VkDebugUtilsMessengerCallbackDataEXT,
+  ): void {.stdcall.}
 proc loadVK_EXT_debug_utils*(instance: VkInstance) =
-  vkSetDebugUtilsObjectNameEXT = cast[proc(device: VkDevice, pNameInfo: ptr VkDebugUtilsObjectNameInfoEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSetDebugUtilsObjectNameEXT"))
-  vkSetDebugUtilsObjectTagEXT = cast[proc(device: VkDevice, pTagInfo: ptr VkDebugUtilsObjectTagInfoEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSetDebugUtilsObjectTagEXT"))
-  vkQueueBeginDebugUtilsLabelEXT = cast[proc(queue: VkQueue, pLabelInfo: ptr VkDebugUtilsLabelEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkQueueBeginDebugUtilsLabelEXT"))
-  vkQueueEndDebugUtilsLabelEXT = cast[proc(queue: VkQueue): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkQueueEndDebugUtilsLabelEXT"))
-  vkQueueInsertDebugUtilsLabelEXT = cast[proc(queue: VkQueue, pLabelInfo: ptr VkDebugUtilsLabelEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkQueueInsertDebugUtilsLabelEXT"))
-  vkCmdBeginDebugUtilsLabelEXT = cast[proc(commandBuffer: VkCommandBuffer, pLabelInfo: ptr VkDebugUtilsLabelEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginDebugUtilsLabelEXT"))
-  vkCmdEndDebugUtilsLabelEXT = cast[proc(commandBuffer: VkCommandBuffer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdEndDebugUtilsLabelEXT"))
-  vkCmdInsertDebugUtilsLabelEXT = cast[proc(commandBuffer: VkCommandBuffer, pLabelInfo: ptr VkDebugUtilsLabelEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdInsertDebugUtilsLabelEXT"))
-  vkCreateDebugUtilsMessengerEXT = cast[proc(instance: VkInstance, pCreateInfo: ptr VkDebugUtilsMessengerCreateInfoEXT, pAllocator: ptr VkAllocationCallbacks, pMessenger: ptr VkDebugUtilsMessengerEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT"))
-  vkDestroyDebugUtilsMessengerEXT = cast[proc(instance: VkInstance, messenger: VkDebugUtilsMessengerEXT, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyDebugUtilsMessengerEXT"))
-  vkSubmitDebugUtilsMessageEXT = cast[proc(instance: VkInstance, messageSeverity: VkDebugUtilsMessageSeverityFlagBitsEXT, messageTypes: VkDebugUtilsMessageTypeFlagsEXT, pCallbackData: ptr VkDebugUtilsMessengerCallbackDataEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSubmitDebugUtilsMessageEXT"))
+  vkSetDebugUtilsObjectNameEXT = cast[proc(
+    device: VkDevice, pNameInfo: ptr VkDebugUtilsObjectNameInfoEXT
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkSetDebugUtilsObjectNameEXT"
+  ))
+  vkSetDebugUtilsObjectTagEXT = cast[proc(
+    device: VkDevice, pTagInfo: ptr VkDebugUtilsObjectTagInfoEXT
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkSetDebugUtilsObjectTagEXT"
+  ))
+  vkQueueBeginDebugUtilsLabelEXT = cast[proc(
+    queue: VkQueue, pLabelInfo: ptr VkDebugUtilsLabelEXT
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkQueueBeginDebugUtilsLabelEXT"))
+  vkQueueEndDebugUtilsLabelEXT = cast[proc(queue: VkQueue): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkQueueEndDebugUtilsLabelEXT"
+  ))
+  vkQueueInsertDebugUtilsLabelEXT = cast[proc(
+    queue: VkQueue, pLabelInfo: ptr VkDebugUtilsLabelEXT
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkQueueInsertDebugUtilsLabelEXT"
+  ))
+  vkCmdBeginDebugUtilsLabelEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, pLabelInfo: ptr VkDebugUtilsLabelEXT
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginDebugUtilsLabelEXT"))
+  vkCmdEndDebugUtilsLabelEXT = cast[proc(commandBuffer: VkCommandBuffer): void {.
+    stdcall
+  .}](vkGetInstanceProcAddr(instance, "vkCmdEndDebugUtilsLabelEXT"))
+  vkCmdInsertDebugUtilsLabelEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, pLabelInfo: ptr VkDebugUtilsLabelEXT
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdInsertDebugUtilsLabelEXT"))
+  vkCreateDebugUtilsMessengerEXT = cast[proc(
+    instance: VkInstance,
+    pCreateInfo: ptr VkDebugUtilsMessengerCreateInfoEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+    pMessenger: ptr VkDebugUtilsMessengerEXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCreateDebugUtilsMessengerEXT"
+  ))
+  vkDestroyDebugUtilsMessengerEXT = cast[proc(
+    instance: VkInstance,
+    messenger: VkDebugUtilsMessengerEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkDestroyDebugUtilsMessengerEXT"
+  ))
+  vkSubmitDebugUtilsMessageEXT = cast[proc(
+    instance: VkInstance,
+    messageSeverity: VkDebugUtilsMessageSeverityFlagBitsEXT,
+    messageTypes: VkDebugUtilsMessageTypeFlagsEXT,
+    pCallbackData: ptr VkDebugUtilsMessengerCallbackDataEXT,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSubmitDebugUtilsMessageEXT"))
 
 proc loadVK_KHR_portability_enumeration*(instance: VkInstance) =
   discard
@@ -10614,30 +15133,98 @@
 
 # extension VK_KHR_external_fence_fd
 var
-  vkImportFenceFdKHR*: proc(device: VkDevice, pImportFenceFdInfo: ptr VkImportFenceFdInfoKHR): VkResult {.stdcall.}
-  vkGetFenceFdKHR*: proc(device: VkDevice, pGetFdInfo: ptr VkFenceGetFdInfoKHR, pFd: ptr cint): VkResult {.stdcall.}
+  vkImportFenceFdKHR*: proc(
+    device: VkDevice, pImportFenceFdInfo: ptr VkImportFenceFdInfoKHR
+  ): VkResult {.stdcall.}
+  vkGetFenceFdKHR*: proc(
+    device: VkDevice, pGetFdInfo: ptr VkFenceGetFdInfoKHR, pFd: ptr cint
+  ): VkResult {.stdcall.}
 proc loadVK_KHR_external_fence_fd*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkImportFenceFdKHR = cast[proc(device: VkDevice, pImportFenceFdInfo: ptr VkImportFenceFdInfoKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkImportFenceFdKHR"))
-  vkGetFenceFdKHR = cast[proc(device: VkDevice, pGetFdInfo: ptr VkFenceGetFdInfoKHR, pFd: ptr cint): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetFenceFdKHR"))
+  vkImportFenceFdKHR = cast[proc(
+    device: VkDevice, pImportFenceFdInfo: ptr VkImportFenceFdInfoKHR
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkImportFenceFdKHR"))
+  vkGetFenceFdKHR = cast[proc(
+    device: VkDevice, pGetFdInfo: ptr VkFenceGetFdInfoKHR, pFd: ptr cint
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetFenceFdKHR"))
 
 # extension VK_NV_device_generated_commands
 var
-  vkGetGeneratedCommandsMemoryRequirementsNV*: proc(device: VkDevice, pInfo: ptr VkGeneratedCommandsMemoryRequirementsInfoNV, pMemoryRequirements: ptr VkMemoryRequirements2): void {.stdcall.}
-  vkCmdPreprocessGeneratedCommandsNV*: proc(commandBuffer: VkCommandBuffer, pGeneratedCommandsInfo: ptr VkGeneratedCommandsInfoNV): void {.stdcall.}
-  vkCmdExecuteGeneratedCommandsNV*: proc(commandBuffer: VkCommandBuffer, isPreprocessed: VkBool32, pGeneratedCommandsInfo: ptr VkGeneratedCommandsInfoNV): void {.stdcall.}
-  vkCmdBindPipelineShaderGroupNV*: proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, pipeline: VkPipeline, groupIndex: uint32): void {.stdcall.}
-  vkCreateIndirectCommandsLayoutNV*: proc(device: VkDevice, pCreateInfo: ptr VkIndirectCommandsLayoutCreateInfoNV, pAllocator: ptr VkAllocationCallbacks, pIndirectCommandsLayout: ptr VkIndirectCommandsLayoutNV): VkResult {.stdcall.}
-  vkDestroyIndirectCommandsLayoutNV*: proc(device: VkDevice, indirectCommandsLayout: VkIndirectCommandsLayoutNV, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
+  vkGetGeneratedCommandsMemoryRequirementsNV*: proc(
+    device: VkDevice,
+    pInfo: ptr VkGeneratedCommandsMemoryRequirementsInfoNV,
+    pMemoryRequirements: ptr VkMemoryRequirements2,
+  ): void {.stdcall.}
+  vkCmdPreprocessGeneratedCommandsNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    pGeneratedCommandsInfo: ptr VkGeneratedCommandsInfoNV,
+  ): void {.stdcall.}
+  vkCmdExecuteGeneratedCommandsNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    isPreprocessed: VkBool32,
+    pGeneratedCommandsInfo: ptr VkGeneratedCommandsInfoNV,
+  ): void {.stdcall.}
+  vkCmdBindPipelineShaderGroupNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineBindPoint: VkPipelineBindPoint,
+    pipeline: VkPipeline,
+    groupIndex: uint32,
+  ): void {.stdcall.}
+  vkCreateIndirectCommandsLayoutNV*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkIndirectCommandsLayoutCreateInfoNV,
+    pAllocator: ptr VkAllocationCallbacks,
+    pIndirectCommandsLayout: ptr VkIndirectCommandsLayoutNV,
+  ): VkResult {.stdcall.}
+  vkDestroyIndirectCommandsLayoutNV*: proc(
+    device: VkDevice,
+    indirectCommandsLayout: VkIndirectCommandsLayoutNV,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
 proc loadVK_NV_device_generated_commands*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
   loadVK_VERSION_1_2(instance)
-  vkGetGeneratedCommandsMemoryRequirementsNV = cast[proc(device: VkDevice, pInfo: ptr VkGeneratedCommandsMemoryRequirementsInfoNV, pMemoryRequirements: ptr VkMemoryRequirements2): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetGeneratedCommandsMemoryRequirementsNV"))
-  vkCmdPreprocessGeneratedCommandsNV = cast[proc(commandBuffer: VkCommandBuffer, pGeneratedCommandsInfo: ptr VkGeneratedCommandsInfoNV): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdPreprocessGeneratedCommandsNV"))
-  vkCmdExecuteGeneratedCommandsNV = cast[proc(commandBuffer: VkCommandBuffer, isPreprocessed: VkBool32, pGeneratedCommandsInfo: ptr VkGeneratedCommandsInfoNV): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdExecuteGeneratedCommandsNV"))
-  vkCmdBindPipelineShaderGroupNV = cast[proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, pipeline: VkPipeline, groupIndex: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindPipelineShaderGroupNV"))
-  vkCreateIndirectCommandsLayoutNV = cast[proc(device: VkDevice, pCreateInfo: ptr VkIndirectCommandsLayoutCreateInfoNV, pAllocator: ptr VkAllocationCallbacks, pIndirectCommandsLayout: ptr VkIndirectCommandsLayoutNV): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateIndirectCommandsLayoutNV"))
-  vkDestroyIndirectCommandsLayoutNV = cast[proc(device: VkDevice, indirectCommandsLayout: VkIndirectCommandsLayoutNV, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyIndirectCommandsLayoutNV"))
+  vkGetGeneratedCommandsMemoryRequirementsNV = cast[proc(
+    device: VkDevice,
+    pInfo: ptr VkGeneratedCommandsMemoryRequirementsInfoNV,
+    pMemoryRequirements: ptr VkMemoryRequirements2,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetGeneratedCommandsMemoryRequirementsNV"
+  ))
+  vkCmdPreprocessGeneratedCommandsNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pGeneratedCommandsInfo: ptr VkGeneratedCommandsInfoNV,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdPreprocessGeneratedCommandsNV"
+  ))
+  vkCmdExecuteGeneratedCommandsNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    isPreprocessed: VkBool32,
+    pGeneratedCommandsInfo: ptr VkGeneratedCommandsInfoNV,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdExecuteGeneratedCommandsNV"
+  ))
+  vkCmdBindPipelineShaderGroupNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineBindPoint: VkPipelineBindPoint,
+    pipeline: VkPipeline,
+    groupIndex: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindPipelineShaderGroupNV"))
+  vkCreateIndirectCommandsLayoutNV = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkIndirectCommandsLayoutCreateInfoNV,
+    pAllocator: ptr VkAllocationCallbacks,
+    pIndirectCommandsLayout: ptr VkIndirectCommandsLayoutNV,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCreateIndirectCommandsLayoutNV"
+  ))
+  vkDestroyIndirectCommandsLayoutNV = cast[proc(
+    device: VkDevice,
+    indirectCommandsLayout: VkIndirectCommandsLayoutNV,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkDestroyIndirectCommandsLayoutNV"
+  ))
 
 proc loadVK_NV_viewport_array2*(instance: VkInstance) =
   discard
@@ -10647,12 +15234,26 @@
 
 # extension VK_KHR_external_memory_fd
 var
-  vkGetMemoryFdKHR*: proc(device: VkDevice, pGetFdInfo: ptr VkMemoryGetFdInfoKHR, pFd: ptr cint): VkResult {.stdcall.}
-  vkGetMemoryFdPropertiesKHR*: proc(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, fd: cint, pMemoryFdProperties: ptr VkMemoryFdPropertiesKHR): VkResult {.stdcall.}
+  vkGetMemoryFdKHR*: proc(
+    device: VkDevice, pGetFdInfo: ptr VkMemoryGetFdInfoKHR, pFd: ptr cint
+  ): VkResult {.stdcall.}
+  vkGetMemoryFdPropertiesKHR*: proc(
+    device: VkDevice,
+    handleType: VkExternalMemoryHandleTypeFlagBits,
+    fd: cint,
+    pMemoryFdProperties: ptr VkMemoryFdPropertiesKHR,
+  ): VkResult {.stdcall.}
 proc loadVK_KHR_external_memory_fd*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkGetMemoryFdKHR = cast[proc(device: VkDevice, pGetFdInfo: ptr VkMemoryGetFdInfoKHR, pFd: ptr cint): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetMemoryFdKHR"))
-  vkGetMemoryFdPropertiesKHR = cast[proc(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, fd: cint, pMemoryFdProperties: ptr VkMemoryFdPropertiesKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetMemoryFdPropertiesKHR"))
+  vkGetMemoryFdKHR = cast[proc(
+    device: VkDevice, pGetFdInfo: ptr VkMemoryGetFdInfoKHR, pFd: ptr cint
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetMemoryFdKHR"))
+  vkGetMemoryFdPropertiesKHR = cast[proc(
+    device: VkDevice,
+    handleType: VkExternalMemoryHandleTypeFlagBits,
+    fd: cint,
+    pMemoryFdProperties: ptr VkMemoryFdPropertiesKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetMemoryFdPropertiesKHR"))
 
 proc loadVK_EXT_rgba10x6_formats*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -10662,11 +15263,20 @@
   loadVK_VERSION_1_1(instance)
 
 # extension VK_NV_cooperative_matrix
-var
-  vkGetPhysicalDeviceCooperativeMatrixPropertiesNV*: proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32, pProperties: ptr VkCooperativeMatrixPropertiesNV): VkResult {.stdcall.}
+var vkGetPhysicalDeviceCooperativeMatrixPropertiesNV*: proc(
+  physicalDevice: VkPhysicalDevice,
+  pPropertyCount: ptr uint32,
+  pProperties: ptr VkCooperativeMatrixPropertiesNV,
+): VkResult {.stdcall.}
 proc loadVK_NV_cooperative_matrix*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = cast[proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32, pProperties: ptr VkCooperativeMatrixPropertiesNV): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
+  vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkCooperativeMatrixPropertiesNV,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"
+  ))
 
 proc loadVK_EXT_depth_clamp_zero_one*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -10678,42 +15288,163 @@
   discard
 
 # extension VK_EXT_image_drm_format_modifier
-var
-  vkGetImageDrmFormatModifierPropertiesEXT*: proc(device: VkDevice, image: VkImage, pProperties: ptr VkImageDrmFormatModifierPropertiesEXT): VkResult {.stdcall.}
+var vkGetImageDrmFormatModifierPropertiesEXT*: proc(
+  device: VkDevice,
+  image: VkImage,
+  pProperties: ptr VkImageDrmFormatModifierPropertiesEXT,
+): VkResult {.stdcall.}
 proc loadVK_EXT_image_drm_format_modifier*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
   loadVK_VERSION_1_1(instance)
   loadVK_VERSION_1_2(instance)
   loadVK_VERSION_1_1(instance)
-  vkGetImageDrmFormatModifierPropertiesEXT = cast[proc(device: VkDevice, image: VkImage, pProperties: ptr VkImageDrmFormatModifierPropertiesEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageDrmFormatModifierPropertiesEXT"))
+  vkGetImageDrmFormatModifierPropertiesEXT = cast[proc(
+    device: VkDevice,
+    image: VkImage,
+    pProperties: ptr VkImageDrmFormatModifierPropertiesEXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetImageDrmFormatModifierPropertiesEXT"
+  ))
 
 # extension VK_EXT_mesh_shader
 var
-  vkCmdDrawMeshTasksEXT*: proc(commandBuffer: VkCommandBuffer, groupCountX: uint32, groupCountY: uint32, groupCountZ: uint32): void {.stdcall.}
-  vkCmdDrawMeshTasksIndirectEXT*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}
-  vkCmdDrawMeshTasksIndirectCountEXT*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, countBuffer: VkBuffer, countBufferOffset: VkDeviceSize, maxDrawCount: uint32, stride: uint32): void {.stdcall.}
+  vkCmdDrawMeshTasksEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    groupCountX: uint32,
+    groupCountY: uint32,
+    groupCountZ: uint32,
+  ): void {.stdcall.}
+  vkCmdDrawMeshTasksIndirectEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    drawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}
+  vkCmdDrawMeshTasksIndirectCountEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    countBuffer: VkBuffer,
+    countBufferOffset: VkDeviceSize,
+    maxDrawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}
 proc loadVK_EXT_mesh_shader*(instance: VkInstance) =
   loadVK_VERSION_1_2(instance)
-  vkCmdDrawMeshTasksEXT = cast[proc(commandBuffer: VkCommandBuffer, groupCountX: uint32, groupCountY: uint32, groupCountZ: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawMeshTasksEXT"))
-  vkCmdDrawMeshTasksIndirectEXT = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawMeshTasksIndirectEXT"))
-  vkCmdDrawMeshTasksIndirectCountEXT = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, countBuffer: VkBuffer, countBufferOffset: VkDeviceSize, maxDrawCount: uint32, stride: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawMeshTasksIndirectCountEXT"))
+  vkCmdDrawMeshTasksEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    groupCountX: uint32,
+    groupCountY: uint32,
+    groupCountZ: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawMeshTasksEXT"))
+  vkCmdDrawMeshTasksIndirectEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    drawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawMeshTasksIndirectEXT"))
+  vkCmdDrawMeshTasksIndirectCountEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    countBuffer: VkBuffer,
+    countBufferOffset: VkDeviceSize,
+    maxDrawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdDrawMeshTasksIndirectCountEXT"
+  ))
 
 # extension VK_EXT_transform_feedback
 var
-  vkCmdBindTransformFeedbackBuffersEXT*: proc(commandBuffer: VkCommandBuffer, firstBinding: uint32, bindingCount: uint32, pBuffers: ptr VkBuffer, pOffsets: ptr VkDeviceSize, pSizes: ptr VkDeviceSize): void {.stdcall.}
-  vkCmdBeginTransformFeedbackEXT*: proc(commandBuffer: VkCommandBuffer, firstCounterBuffer: uint32, counterBufferCount: uint32, pCounterBuffers: ptr VkBuffer, pCounterBufferOffsets: ptr VkDeviceSize): void {.stdcall.}
-  vkCmdEndTransformFeedbackEXT*: proc(commandBuffer: VkCommandBuffer, firstCounterBuffer: uint32, counterBufferCount: uint32, pCounterBuffers: ptr VkBuffer, pCounterBufferOffsets: ptr VkDeviceSize): void {.stdcall.}
-  vkCmdBeginQueryIndexedEXT*: proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, flags: VkQueryControlFlags, index: uint32): void {.stdcall.}
-  vkCmdEndQueryIndexedEXT*: proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, index: uint32): void {.stdcall.}
-  vkCmdDrawIndirectByteCountEXT*: proc(commandBuffer: VkCommandBuffer, instanceCount: uint32, firstInstance: uint32, counterBuffer: VkBuffer, counterBufferOffset: VkDeviceSize, counterOffset: uint32, vertexStride: uint32): void {.stdcall.}
+  vkCmdBindTransformFeedbackBuffersEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstBinding: uint32,
+    bindingCount: uint32,
+    pBuffers: ptr VkBuffer,
+    pOffsets: ptr VkDeviceSize,
+    pSizes: ptr VkDeviceSize,
+  ): void {.stdcall.}
+  vkCmdBeginTransformFeedbackEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstCounterBuffer: uint32,
+    counterBufferCount: uint32,
+    pCounterBuffers: ptr VkBuffer,
+    pCounterBufferOffsets: ptr VkDeviceSize,
+  ): void {.stdcall.}
+  vkCmdEndTransformFeedbackEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstCounterBuffer: uint32,
+    counterBufferCount: uint32,
+    pCounterBuffers: ptr VkBuffer,
+    pCounterBufferOffsets: ptr VkDeviceSize,
+  ): void {.stdcall.}
+  vkCmdBeginQueryIndexedEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    queryPool: VkQueryPool,
+    query: uint32,
+    flags: VkQueryControlFlags,
+    index: uint32,
+  ): void {.stdcall.}
+  vkCmdEndQueryIndexedEXT*: proc(
+    commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, index: uint32
+  ): void {.stdcall.}
+  vkCmdDrawIndirectByteCountEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    instanceCount: uint32,
+    firstInstance: uint32,
+    counterBuffer: VkBuffer,
+    counterBufferOffset: VkDeviceSize,
+    counterOffset: uint32,
+    vertexStride: uint32,
+  ): void {.stdcall.}
 proc loadVK_EXT_transform_feedback*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdBindTransformFeedbackBuffersEXT = cast[proc(commandBuffer: VkCommandBuffer, firstBinding: uint32, bindingCount: uint32, pBuffers: ptr VkBuffer, pOffsets: ptr VkDeviceSize, pSizes: ptr VkDeviceSize): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindTransformFeedbackBuffersEXT"))
-  vkCmdBeginTransformFeedbackEXT = cast[proc(commandBuffer: VkCommandBuffer, firstCounterBuffer: uint32, counterBufferCount: uint32, pCounterBuffers: ptr VkBuffer, pCounterBufferOffsets: ptr VkDeviceSize): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginTransformFeedbackEXT"))
-  vkCmdEndTransformFeedbackEXT = cast[proc(commandBuffer: VkCommandBuffer, firstCounterBuffer: uint32, counterBufferCount: uint32, pCounterBuffers: ptr VkBuffer, pCounterBufferOffsets: ptr VkDeviceSize): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdEndTransformFeedbackEXT"))
-  vkCmdBeginQueryIndexedEXT = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, flags: VkQueryControlFlags, index: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginQueryIndexedEXT"))
-  vkCmdEndQueryIndexedEXT = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, index: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdEndQueryIndexedEXT"))
-  vkCmdDrawIndirectByteCountEXT = cast[proc(commandBuffer: VkCommandBuffer, instanceCount: uint32, firstInstance: uint32, counterBuffer: VkBuffer, counterBufferOffset: VkDeviceSize, counterOffset: uint32, vertexStride: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawIndirectByteCountEXT"))
+  vkCmdBindTransformFeedbackBuffersEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstBinding: uint32,
+    bindingCount: uint32,
+    pBuffers: ptr VkBuffer,
+    pOffsets: ptr VkDeviceSize,
+    pSizes: ptr VkDeviceSize,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdBindTransformFeedbackBuffersEXT"
+  ))
+  vkCmdBeginTransformFeedbackEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstCounterBuffer: uint32,
+    counterBufferCount: uint32,
+    pCounterBuffers: ptr VkBuffer,
+    pCounterBufferOffsets: ptr VkDeviceSize,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginTransformFeedbackEXT"))
+  vkCmdEndTransformFeedbackEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstCounterBuffer: uint32,
+    counterBufferCount: uint32,
+    pCounterBuffers: ptr VkBuffer,
+    pCounterBufferOffsets: ptr VkDeviceSize,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdEndTransformFeedbackEXT"))
+  vkCmdBeginQueryIndexedEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    queryPool: VkQueryPool,
+    query: uint32,
+    flags: VkQueryControlFlags,
+    index: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginQueryIndexedEXT"))
+  vkCmdEndQueryIndexedEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, index: uint32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdEndQueryIndexedEXT"))
+  vkCmdDrawIndirectByteCountEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    instanceCount: uint32,
+    firstInstance: uint32,
+    counterBuffer: VkBuffer,
+    counterBufferOffset: VkDeviceSize,
+    counterOffset: uint32,
+    vertexStride: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawIndirectByteCountEXT"))
 
 proc loadVK_AMD_shader_early_and_late_fragment_tests*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -10740,21 +15471,50 @@
   discard
 
 # extension VK_EXT_vertex_input_dynamic_state
-var
-  vkCmdSetVertexInputEXT*: proc(commandBuffer: VkCommandBuffer, vertexBindingDescriptionCount: uint32, pVertexBindingDescriptions: ptr VkVertexInputBindingDescription2EXT, vertexAttributeDescriptionCount: uint32, pVertexAttributeDescriptions: ptr VkVertexInputAttributeDescription2EXT): void {.stdcall.}
+var vkCmdSetVertexInputEXT*: proc(
+  commandBuffer: VkCommandBuffer,
+  vertexBindingDescriptionCount: uint32,
+  pVertexBindingDescriptions: ptr VkVertexInputBindingDescription2EXT,
+  vertexAttributeDescriptionCount: uint32,
+  pVertexAttributeDescriptions: ptr VkVertexInputAttributeDescription2EXT,
+): void {.stdcall.}
 proc loadVK_EXT_vertex_input_dynamic_state*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdSetVertexInputEXT = cast[proc(commandBuffer: VkCommandBuffer, vertexBindingDescriptionCount: uint32, pVertexBindingDescriptions: ptr VkVertexInputBindingDescription2EXT, vertexAttributeDescriptionCount: uint32, pVertexAttributeDescriptions: ptr VkVertexInputAttributeDescription2EXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetVertexInputEXT"))
+  vkCmdSetVertexInputEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    vertexBindingDescriptionCount: uint32,
+    pVertexBindingDescriptions: ptr VkVertexInputBindingDescription2EXT,
+    vertexAttributeDescriptionCount: uint32,
+    pVertexAttributeDescriptions: ptr VkVertexInputAttributeDescription2EXT,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetVertexInputEXT"))
 
 # extension VK_KHR_fragment_shading_rate
 var
-  vkGetPhysicalDeviceFragmentShadingRatesKHR*: proc(physicalDevice: VkPhysicalDevice, pFragmentShadingRateCount: ptr uint32, pFragmentShadingRates: ptr VkPhysicalDeviceFragmentShadingRateKHR): VkResult {.stdcall.}
-  vkCmdSetFragmentShadingRateKHR*: proc(commandBuffer: VkCommandBuffer, pFragmentSize: ptr VkExtent2D, combinerOps: array[2, VkFragmentShadingRateCombinerOpKHR]): void {.stdcall.}
+  vkGetPhysicalDeviceFragmentShadingRatesKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pFragmentShadingRateCount: ptr uint32,
+    pFragmentShadingRates: ptr VkPhysicalDeviceFragmentShadingRateKHR,
+  ): VkResult {.stdcall.}
+  vkCmdSetFragmentShadingRateKHR*: proc(
+    commandBuffer: VkCommandBuffer,
+    pFragmentSize: ptr VkExtent2D,
+    combinerOps: array[2, VkFragmentShadingRateCombinerOpKHR],
+  ): void {.stdcall.}
 proc loadVK_KHR_fragment_shading_rate*(instance: VkInstance) =
   loadVK_VERSION_1_2(instance)
   loadVK_VERSION_1_1(instance)
-  vkGetPhysicalDeviceFragmentShadingRatesKHR = cast[proc(physicalDevice: VkPhysicalDevice, pFragmentShadingRateCount: ptr uint32, pFragmentShadingRates: ptr VkPhysicalDeviceFragmentShadingRateKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
-  vkCmdSetFragmentShadingRateKHR = cast[proc(commandBuffer: VkCommandBuffer, pFragmentSize: ptr VkExtent2D, combinerOps: array[2, VkFragmentShadingRateCombinerOpKHR]): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetFragmentShadingRateKHR"))
+  vkGetPhysicalDeviceFragmentShadingRatesKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pFragmentShadingRateCount: ptr uint32,
+    pFragmentShadingRates: ptr VkPhysicalDeviceFragmentShadingRateKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR"
+  ))
+  vkCmdSetFragmentShadingRateKHR = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pFragmentSize: ptr VkExtent2D,
+    combinerOps: array[2, VkFragmentShadingRateCombinerOpKHR],
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetFragmentShadingRateKHR"))
 
 proc loadVK_EXT_depth_clip_enable*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -10764,12 +15524,20 @@
 
 # extension VK_KHR_external_semaphore_fd
 var
-  vkImportSemaphoreFdKHR*: proc(device: VkDevice, pImportSemaphoreFdInfo: ptr VkImportSemaphoreFdInfoKHR): VkResult {.stdcall.}
-  vkGetSemaphoreFdKHR*: proc(device: VkDevice, pGetFdInfo: ptr VkSemaphoreGetFdInfoKHR, pFd: ptr cint): VkResult {.stdcall.}
+  vkImportSemaphoreFdKHR*: proc(
+    device: VkDevice, pImportSemaphoreFdInfo: ptr VkImportSemaphoreFdInfoKHR
+  ): VkResult {.stdcall.}
+  vkGetSemaphoreFdKHR*: proc(
+    device: VkDevice, pGetFdInfo: ptr VkSemaphoreGetFdInfoKHR, pFd: ptr cint
+  ): VkResult {.stdcall.}
 proc loadVK_KHR_external_semaphore_fd*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkImportSemaphoreFdKHR = cast[proc(device: VkDevice, pImportSemaphoreFdInfo: ptr VkImportSemaphoreFdInfoKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkImportSemaphoreFdKHR"))
-  vkGetSemaphoreFdKHR = cast[proc(device: VkDevice, pGetFdInfo: ptr VkSemaphoreGetFdInfoKHR, pFd: ptr cint): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetSemaphoreFdKHR"))
+  vkImportSemaphoreFdKHR = cast[proc(
+    device: VkDevice, pImportSemaphoreFdInfo: ptr VkImportSemaphoreFdInfoKHR
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkImportSemaphoreFdKHR"))
+  vkGetSemaphoreFdKHR = cast[proc(
+    device: VkDevice, pGetFdInfo: ptr VkSemaphoreGetFdInfoKHR, pFd: ptr cint
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetSemaphoreFdKHR"))
 
 proc loadVK_KHR_fragment_shader_barycentric*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -10788,25 +15556,71 @@
 
 # extension VK_NV_mesh_shader
 var
-  vkCmdDrawMeshTasksNV*: proc(commandBuffer: VkCommandBuffer, taskCount: uint32, firstTask: uint32): void {.stdcall.}
-  vkCmdDrawMeshTasksIndirectNV*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}
-  vkCmdDrawMeshTasksIndirectCountNV*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, countBuffer: VkBuffer, countBufferOffset: VkDeviceSize, maxDrawCount: uint32, stride: uint32): void {.stdcall.}
+  vkCmdDrawMeshTasksNV*: proc(
+    commandBuffer: VkCommandBuffer, taskCount: uint32, firstTask: uint32
+  ): void {.stdcall.}
+  vkCmdDrawMeshTasksIndirectNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    drawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}
+  vkCmdDrawMeshTasksIndirectCountNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    countBuffer: VkBuffer,
+    countBufferOffset: VkDeviceSize,
+    maxDrawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}
 proc loadVK_NV_mesh_shader*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdDrawMeshTasksNV = cast[proc(commandBuffer: VkCommandBuffer, taskCount: uint32, firstTask: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawMeshTasksNV"))
-  vkCmdDrawMeshTasksIndirectNV = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawMeshTasksIndirectNV"))
-  vkCmdDrawMeshTasksIndirectCountNV = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, countBuffer: VkBuffer, countBufferOffset: VkDeviceSize, maxDrawCount: uint32, stride: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawMeshTasksIndirectCountNV"))
+  vkCmdDrawMeshTasksNV = cast[proc(
+    commandBuffer: VkCommandBuffer, taskCount: uint32, firstTask: uint32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawMeshTasksNV"))
+  vkCmdDrawMeshTasksIndirectNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    drawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawMeshTasksIndirectNV"))
+  vkCmdDrawMeshTasksIndirectCountNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    buffer: VkBuffer,
+    offset: VkDeviceSize,
+    countBuffer: VkBuffer,
+    countBufferOffset: VkDeviceSize,
+    maxDrawCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdDrawMeshTasksIndirectCountNV"
+  ))
 
 # extension VK_EXT_image_compression_control
-var
-  vkGetImageSubresourceLayout2EXT*: proc(device: VkDevice, image: VkImage, pSubresource: ptr VkImageSubresource2EXT, pLayout: ptr VkSubresourceLayout2EXT): void {.stdcall.}
+var vkGetImageSubresourceLayout2EXT*: proc(
+  device: VkDevice,
+  image: VkImage,
+  pSubresource: ptr VkImageSubresource2EXT,
+  pLayout: ptr VkSubresourceLayout2EXT,
+): void {.stdcall.}
 proc loadVK_EXT_image_compression_control*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkGetImageSubresourceLayout2EXT = cast[proc(device: VkDevice, image: VkImage, pSubresource: ptr VkImageSubresource2EXT, pLayout: ptr VkSubresourceLayout2EXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageSubresourceLayout2EXT"))
+  vkGetImageSubresourceLayout2EXT = cast[proc(
+    device: VkDevice,
+    image: VkImage,
+    pSubresource: ptr VkImageSubresource2EXT,
+    pLayout: ptr VkSubresourceLayout2EXT,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetImageSubresourceLayout2EXT"
+  ))
 
 # extension VK_EXT_buffer_device_address
-var
-  vkGetBufferDeviceAddressEXT*: proc(device: VkDevice, pInfo: ptr VkBufferDeviceAddressInfo): VkDeviceAddress {.stdcall.}
+var vkGetBufferDeviceAddressEXT*: proc(
+  device: VkDevice, pInfo: ptr VkBufferDeviceAddressInfo
+): VkDeviceAddress {.stdcall.}
 proc loadVK_EXT_buffer_device_address*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
   vkGetBufferDeviceAddressEXT = vkGetBufferDeviceAddress
@@ -10819,55 +15633,157 @@
 
 # extension VK_HUAWEI_subpass_shading
 var
-  vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI*: proc(device: VkDevice, renderpass: VkRenderPass, pMaxWorkgroupSize: ptr VkExtent2D): VkResult {.stdcall.}
+  vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI*: proc(
+    device: VkDevice, renderpass: VkRenderPass, pMaxWorkgroupSize: ptr VkExtent2D
+  ): VkResult {.stdcall.}
   vkCmdSubpassShadingHUAWEI*: proc(commandBuffer: VkCommandBuffer): void {.stdcall.}
 proc loadVK_HUAWEI_subpass_shading*(instance: VkInstance) =
   loadVK_VERSION_1_2(instance)
   loadVK_VERSION_1_3(instance)
-  vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = cast[proc(device: VkDevice, renderpass: VkRenderPass, pMaxWorkgroupSize: ptr VkExtent2D): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"))
-  vkCmdSubpassShadingHUAWEI = cast[proc(commandBuffer: VkCommandBuffer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSubpassShadingHUAWEI"))
+  vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = cast[proc(
+    device: VkDevice, renderpass: VkRenderPass, pMaxWorkgroupSize: ptr VkExtent2D
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"
+  ))
+  vkCmdSubpassShadingHUAWEI = cast[proc(commandBuffer: VkCommandBuffer): void {.
+    stdcall
+  .}](vkGetInstanceProcAddr(instance, "vkCmdSubpassShadingHUAWEI"))
 
 # extension VK_VALVE_descriptor_set_host_mapping
 var
-  vkGetDescriptorSetLayoutHostMappingInfoVALVE*: proc(device: VkDevice, pBindingReference: ptr VkDescriptorSetBindingReferenceVALVE, pHostMapping: ptr VkDescriptorSetLayoutHostMappingInfoVALVE): void {.stdcall.}
-  vkGetDescriptorSetHostMappingVALVE*: proc(device: VkDevice, descriptorSet: VkDescriptorSet, ppData: ptr pointer): void {.stdcall.}
+  vkGetDescriptorSetLayoutHostMappingInfoVALVE*: proc(
+    device: VkDevice,
+    pBindingReference: ptr VkDescriptorSetBindingReferenceVALVE,
+    pHostMapping: ptr VkDescriptorSetLayoutHostMappingInfoVALVE,
+  ): void {.stdcall.}
+  vkGetDescriptorSetHostMappingVALVE*: proc(
+    device: VkDevice, descriptorSet: VkDescriptorSet, ppData: ptr pointer
+  ): void {.stdcall.}
 proc loadVK_VALVE_descriptor_set_host_mapping*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkGetDescriptorSetLayoutHostMappingInfoVALVE = cast[proc(device: VkDevice, pBindingReference: ptr VkDescriptorSetBindingReferenceVALVE, pHostMapping: ptr VkDescriptorSetLayoutHostMappingInfoVALVE): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDescriptorSetLayoutHostMappingInfoVALVE"))
-  vkGetDescriptorSetHostMappingVALVE = cast[proc(device: VkDevice, descriptorSet: VkDescriptorSet, ppData: ptr pointer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDescriptorSetHostMappingVALVE"))
+  vkGetDescriptorSetLayoutHostMappingInfoVALVE = cast[proc(
+    device: VkDevice,
+    pBindingReference: ptr VkDescriptorSetBindingReferenceVALVE,
+    pHostMapping: ptr VkDescriptorSetLayoutHostMappingInfoVALVE,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDescriptorSetLayoutHostMappingInfoVALVE"
+  ))
+  vkGetDescriptorSetHostMappingVALVE = cast[proc(
+    device: VkDevice, descriptorSet: VkDescriptorSet, ppData: ptr pointer
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDescriptorSetHostMappingVALVE"
+  ))
 
 # extension VK_NV_external_memory_capabilities
-var
-  vkGetPhysicalDeviceExternalImageFormatPropertiesNV*: proc(physicalDevice: VkPhysicalDevice, format: VkFormat, thetype: VkImageType, tiling: VkImageTiling, usage: VkImageUsageFlags, flags: VkImageCreateFlags, externalHandleType: VkExternalMemoryHandleTypeFlagsNV, pExternalImageFormatProperties: ptr VkExternalImageFormatPropertiesNV): VkResult {.stdcall.}
+var vkGetPhysicalDeviceExternalImageFormatPropertiesNV*: proc(
+  physicalDevice: VkPhysicalDevice,
+  format: VkFormat,
+  thetype: VkImageType,
+  tiling: VkImageTiling,
+  usage: VkImageUsageFlags,
+  flags: VkImageCreateFlags,
+  externalHandleType: VkExternalMemoryHandleTypeFlagsNV,
+  pExternalImageFormatProperties: ptr VkExternalImageFormatPropertiesNV,
+): VkResult {.stdcall.}
 proc loadVK_NV_external_memory_capabilities*(instance: VkInstance) =
-  vkGetPhysicalDeviceExternalImageFormatPropertiesNV = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, thetype: VkImageType, tiling: VkImageTiling, usage: VkImageUsageFlags, flags: VkImageCreateFlags, externalHandleType: VkExternalMemoryHandleTypeFlagsNV, pExternalImageFormatProperties: ptr VkExternalImageFormatPropertiesNV): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
+  vkGetPhysicalDeviceExternalImageFormatPropertiesNV = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    format: VkFormat,
+    thetype: VkImageType,
+    tiling: VkImageTiling,
+    usage: VkImageUsageFlags,
+    flags: VkImageCreateFlags,
+    externalHandleType: VkExternalMemoryHandleTypeFlagsNV,
+    pExternalImageFormatProperties: ptr VkExternalImageFormatPropertiesNV,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"
+  ))
 
 # extension VK_NV_optical_flow
 var
-  vkGetPhysicalDeviceOpticalFlowImageFormatsNV*: proc(physicalDevice: VkPhysicalDevice, pOpticalFlowImageFormatInfo: ptr VkOpticalFlowImageFormatInfoNV, pFormatCount: ptr uint32, pImageFormatProperties: ptr VkOpticalFlowImageFormatPropertiesNV): VkResult {.stdcall.}
-  vkCreateOpticalFlowSessionNV*: proc(device: VkDevice, pCreateInfo: ptr VkOpticalFlowSessionCreateInfoNV, pAllocator: ptr VkAllocationCallbacks, pSession: ptr VkOpticalFlowSessionNV): VkResult {.stdcall.}
-  vkDestroyOpticalFlowSessionNV*: proc(device: VkDevice, session: VkOpticalFlowSessionNV, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkBindOpticalFlowSessionImageNV*: proc(device: VkDevice, session: VkOpticalFlowSessionNV, bindingPoint: VkOpticalFlowSessionBindingPointNV, view: VkImageView, layout: VkImageLayout): VkResult {.stdcall.}
-  vkCmdOpticalFlowExecuteNV*: proc(commandBuffer: VkCommandBuffer, session: VkOpticalFlowSessionNV, pExecuteInfo: ptr VkOpticalFlowExecuteInfoNV): void {.stdcall.}
+  vkGetPhysicalDeviceOpticalFlowImageFormatsNV*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pOpticalFlowImageFormatInfo: ptr VkOpticalFlowImageFormatInfoNV,
+    pFormatCount: ptr uint32,
+    pImageFormatProperties: ptr VkOpticalFlowImageFormatPropertiesNV,
+  ): VkResult {.stdcall.}
+  vkCreateOpticalFlowSessionNV*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkOpticalFlowSessionCreateInfoNV,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSession: ptr VkOpticalFlowSessionNV,
+  ): VkResult {.stdcall.}
+  vkDestroyOpticalFlowSessionNV*: proc(
+    device: VkDevice,
+    session: VkOpticalFlowSessionNV,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkBindOpticalFlowSessionImageNV*: proc(
+    device: VkDevice,
+    session: VkOpticalFlowSessionNV,
+    bindingPoint: VkOpticalFlowSessionBindingPointNV,
+    view: VkImageView,
+    layout: VkImageLayout,
+  ): VkResult {.stdcall.}
+  vkCmdOpticalFlowExecuteNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    session: VkOpticalFlowSessionNV,
+    pExecuteInfo: ptr VkOpticalFlowExecuteInfoNV,
+  ): void {.stdcall.}
 proc loadVK_NV_optical_flow*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
   loadVK_VERSION_1_3(instance)
   loadVK_VERSION_1_3(instance)
-  vkGetPhysicalDeviceOpticalFlowImageFormatsNV = cast[proc(physicalDevice: VkPhysicalDevice, pOpticalFlowImageFormatInfo: ptr VkOpticalFlowImageFormatInfoNV, pFormatCount: ptr uint32, pImageFormatProperties: ptr VkOpticalFlowImageFormatPropertiesNV): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceOpticalFlowImageFormatsNV"))
-  vkCreateOpticalFlowSessionNV = cast[proc(device: VkDevice, pCreateInfo: ptr VkOpticalFlowSessionCreateInfoNV, pAllocator: ptr VkAllocationCallbacks, pSession: ptr VkOpticalFlowSessionNV): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateOpticalFlowSessionNV"))
-  vkDestroyOpticalFlowSessionNV = cast[proc(device: VkDevice, session: VkOpticalFlowSessionNV, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyOpticalFlowSessionNV"))
-  vkBindOpticalFlowSessionImageNV = cast[proc(device: VkDevice, session: VkOpticalFlowSessionNV, bindingPoint: VkOpticalFlowSessionBindingPointNV, view: VkImageView, layout: VkImageLayout): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBindOpticalFlowSessionImageNV"))
-  vkCmdOpticalFlowExecuteNV = cast[proc(commandBuffer: VkCommandBuffer, session: VkOpticalFlowSessionNV, pExecuteInfo: ptr VkOpticalFlowExecuteInfoNV): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdOpticalFlowExecuteNV"))
+  vkGetPhysicalDeviceOpticalFlowImageFormatsNV = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pOpticalFlowImageFormatInfo: ptr VkOpticalFlowImageFormatInfoNV,
+    pFormatCount: ptr uint32,
+    pImageFormatProperties: ptr VkOpticalFlowImageFormatPropertiesNV,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceOpticalFlowImageFormatsNV"
+  ))
+  vkCreateOpticalFlowSessionNV = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkOpticalFlowSessionCreateInfoNV,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSession: ptr VkOpticalFlowSessionNV,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCreateOpticalFlowSessionNV"
+  ))
+  vkDestroyOpticalFlowSessionNV = cast[proc(
+    device: VkDevice,
+    session: VkOpticalFlowSessionNV,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyOpticalFlowSessionNV"))
+  vkBindOpticalFlowSessionImageNV = cast[proc(
+    device: VkDevice,
+    session: VkOpticalFlowSessionNV,
+    bindingPoint: VkOpticalFlowSessionBindingPointNV,
+    view: VkImageView,
+    layout: VkImageLayout,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkBindOpticalFlowSessionImageNV"
+  ))
+  vkCmdOpticalFlowExecuteNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    session: VkOpticalFlowSessionNV,
+    pExecuteInfo: ptr VkOpticalFlowExecuteInfoNV,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdOpticalFlowExecuteNV"))
 
 proc loadVK_EXT_vertex_attribute_divisor*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
 
 # extension VK_EXT_line_rasterization
-var
-  vkCmdSetLineStippleEXT*: proc(commandBuffer: VkCommandBuffer, lineStippleFactor: uint32, lineStipplePattern: uint16): void {.stdcall.}
+var vkCmdSetLineStippleEXT*: proc(
+  commandBuffer: VkCommandBuffer, lineStippleFactor: uint32, lineStipplePattern: uint16
+): void {.stdcall.}
 proc loadVK_EXT_line_rasterization*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdSetLineStippleEXT = cast[proc(commandBuffer: VkCommandBuffer, lineStippleFactor: uint32, lineStipplePattern: uint16): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetLineStippleEXT"))
+  vkCmdSetLineStippleEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    lineStippleFactor: uint32,
+    lineStipplePattern: uint16,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetLineStippleEXT"))
 
 proc loadVK_AMD_texture_gather_bias_lod*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -10885,10 +15801,21 @@
   discard
 
 # extension VK_AMD_buffer_marker
-var
-  vkCmdWriteBufferMarkerAMD*: proc(commandBuffer: VkCommandBuffer, pipelineStage: VkPipelineStageFlagBits, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, marker: uint32): void {.stdcall.}
+var vkCmdWriteBufferMarkerAMD*: proc(
+  commandBuffer: VkCommandBuffer,
+  pipelineStage: VkPipelineStageFlagBits,
+  dstBuffer: VkBuffer,
+  dstOffset: VkDeviceSize,
+  marker: uint32,
+): void {.stdcall.}
 proc loadVK_AMD_buffer_marker*(instance: VkInstance) =
-  vkCmdWriteBufferMarkerAMD = cast[proc(commandBuffer: VkCommandBuffer, pipelineStage: VkPipelineStageFlagBits, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, marker: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdWriteBufferMarkerAMD"))
+  vkCmdWriteBufferMarkerAMD = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineStage: VkPipelineStageFlagBits,
+    dstBuffer: VkBuffer,
+    dstOffset: VkDeviceSize,
+    marker: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdWriteBufferMarkerAMD"))
 
 proc loadVK_NV_corner_sampled_image*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -10901,12 +15828,34 @@
 
 # extension VK_NV_scissor_exclusive
 var
-  vkCmdSetExclusiveScissorEnableNV*: proc(commandBuffer: VkCommandBuffer, firstExclusiveScissor: uint32, exclusiveScissorCount: uint32, pExclusiveScissorEnables: ptr VkBool32): void {.stdcall.}
-  vkCmdSetExclusiveScissorNV*: proc(commandBuffer: VkCommandBuffer, firstExclusiveScissor: uint32, exclusiveScissorCount: uint32, pExclusiveScissors: ptr VkRect2D): void {.stdcall.}
+  vkCmdSetExclusiveScissorEnableNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstExclusiveScissor: uint32,
+    exclusiveScissorCount: uint32,
+    pExclusiveScissorEnables: ptr VkBool32,
+  ): void {.stdcall.}
+  vkCmdSetExclusiveScissorNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstExclusiveScissor: uint32,
+    exclusiveScissorCount: uint32,
+    pExclusiveScissors: ptr VkRect2D,
+  ): void {.stdcall.}
 proc loadVK_NV_scissor_exclusive*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdSetExclusiveScissorEnableNV = cast[proc(commandBuffer: VkCommandBuffer, firstExclusiveScissor: uint32, exclusiveScissorCount: uint32, pExclusiveScissorEnables: ptr VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetExclusiveScissorEnableNV"))
-  vkCmdSetExclusiveScissorNV = cast[proc(commandBuffer: VkCommandBuffer, firstExclusiveScissor: uint32, exclusiveScissorCount: uint32, pExclusiveScissors: ptr VkRect2D): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetExclusiveScissorNV"))
+  vkCmdSetExclusiveScissorEnableNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstExclusiveScissor: uint32,
+    exclusiveScissorCount: uint32,
+    pExclusiveScissorEnables: ptr VkBool32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetExclusiveScissorEnableNV"
+  ))
+  vkCmdSetExclusiveScissorNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstExclusiveScissor: uint32,
+    exclusiveScissorCount: uint32,
+    pExclusiveScissors: ptr VkRect2D,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetExclusiveScissorNV"))
 
 proc loadVK_NV_framebuffer_mixed_samples*(instance: VkInstance) =
   discard
@@ -10919,91 +15868,326 @@
 
 # extension VK_KHR_pipeline_executable_properties
 var
-  vkGetPipelineExecutablePropertiesKHR*: proc(device: VkDevice, pPipelineInfo: ptr VkPipelineInfoKHR, pExecutableCount: ptr uint32, pProperties: ptr VkPipelineExecutablePropertiesKHR): VkResult {.stdcall.}
-  vkGetPipelineExecutableStatisticsKHR*: proc(device: VkDevice, pExecutableInfo: ptr VkPipelineExecutableInfoKHR, pStatisticCount: ptr uint32, pStatistics: ptr VkPipelineExecutableStatisticKHR): VkResult {.stdcall.}
-  vkGetPipelineExecutableInternalRepresentationsKHR*: proc(device: VkDevice, pExecutableInfo: ptr VkPipelineExecutableInfoKHR, pInternalRepresentationCount: ptr uint32, pInternalRepresentations: ptr VkPipelineExecutableInternalRepresentationKHR): VkResult {.stdcall.}
+  vkGetPipelineExecutablePropertiesKHR*: proc(
+    device: VkDevice,
+    pPipelineInfo: ptr VkPipelineInfoKHR,
+    pExecutableCount: ptr uint32,
+    pProperties: ptr VkPipelineExecutablePropertiesKHR,
+  ): VkResult {.stdcall.}
+  vkGetPipelineExecutableStatisticsKHR*: proc(
+    device: VkDevice,
+    pExecutableInfo: ptr VkPipelineExecutableInfoKHR,
+    pStatisticCount: ptr uint32,
+    pStatistics: ptr VkPipelineExecutableStatisticKHR,
+  ): VkResult {.stdcall.}
+  vkGetPipelineExecutableInternalRepresentationsKHR*: proc(
+    device: VkDevice,
+    pExecutableInfo: ptr VkPipelineExecutableInfoKHR,
+    pInternalRepresentationCount: ptr uint32,
+    pInternalRepresentations: ptr VkPipelineExecutableInternalRepresentationKHR,
+  ): VkResult {.stdcall.}
 proc loadVK_KHR_pipeline_executable_properties*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkGetPipelineExecutablePropertiesKHR = cast[proc(device: VkDevice, pPipelineInfo: ptr VkPipelineInfoKHR, pExecutableCount: ptr uint32, pProperties: ptr VkPipelineExecutablePropertiesKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPipelineExecutablePropertiesKHR"))
-  vkGetPipelineExecutableStatisticsKHR = cast[proc(device: VkDevice, pExecutableInfo: ptr VkPipelineExecutableInfoKHR, pStatisticCount: ptr uint32, pStatistics: ptr VkPipelineExecutableStatisticKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPipelineExecutableStatisticsKHR"))
-  vkGetPipelineExecutableInternalRepresentationsKHR = cast[proc(device: VkDevice, pExecutableInfo: ptr VkPipelineExecutableInfoKHR, pInternalRepresentationCount: ptr uint32, pInternalRepresentations: ptr VkPipelineExecutableInternalRepresentationKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPipelineExecutableInternalRepresentationsKHR"))
+  vkGetPipelineExecutablePropertiesKHR = cast[proc(
+    device: VkDevice,
+    pPipelineInfo: ptr VkPipelineInfoKHR,
+    pExecutableCount: ptr uint32,
+    pProperties: ptr VkPipelineExecutablePropertiesKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPipelineExecutablePropertiesKHR"
+  ))
+  vkGetPipelineExecutableStatisticsKHR = cast[proc(
+    device: VkDevice,
+    pExecutableInfo: ptr VkPipelineExecutableInfoKHR,
+    pStatisticCount: ptr uint32,
+    pStatistics: ptr VkPipelineExecutableStatisticKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPipelineExecutableStatisticsKHR"
+  ))
+  vkGetPipelineExecutableInternalRepresentationsKHR = cast[proc(
+    device: VkDevice,
+    pExecutableInfo: ptr VkPipelineExecutableInfoKHR,
+    pInternalRepresentationCount: ptr uint32,
+    pInternalRepresentations: ptr VkPipelineExecutableInternalRepresentationKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPipelineExecutableInternalRepresentationsKHR"
+  ))
 
 # extension VK_EXT_extended_dynamic_state3
 var
-  vkCmdSetTessellationDomainOriginEXT*: proc(commandBuffer: VkCommandBuffer, domainOrigin: VkTessellationDomainOrigin): void {.stdcall.}
-  vkCmdSetDepthClampEnableEXT*: proc(commandBuffer: VkCommandBuffer, depthClampEnable: VkBool32): void {.stdcall.}
-  vkCmdSetPolygonModeEXT*: proc(commandBuffer: VkCommandBuffer, polygonMode: VkPolygonMode): void {.stdcall.}
-  vkCmdSetRasterizationSamplesEXT*: proc(commandBuffer: VkCommandBuffer, rasterizationSamples: VkSampleCountFlagBits): void {.stdcall.}
-  vkCmdSetSampleMaskEXT*: proc(commandBuffer: VkCommandBuffer, samples: VkSampleCountFlagBits, pSampleMask: ptr VkSampleMask): void {.stdcall.}
-  vkCmdSetAlphaToCoverageEnableEXT*: proc(commandBuffer: VkCommandBuffer, alphaToCoverageEnable: VkBool32): void {.stdcall.}
-  vkCmdSetAlphaToOneEnableEXT*: proc(commandBuffer: VkCommandBuffer, alphaToOneEnable: VkBool32): void {.stdcall.}
-  vkCmdSetLogicOpEnableEXT*: proc(commandBuffer: VkCommandBuffer, logicOpEnable: VkBool32): void {.stdcall.}
-  vkCmdSetColorBlendEnableEXT*: proc(commandBuffer: VkCommandBuffer, firstAttachment: uint32, attachmentCount: uint32, pColorBlendEnables: ptr VkBool32): void {.stdcall.}
-  vkCmdSetColorBlendEquationEXT*: proc(commandBuffer: VkCommandBuffer, firstAttachment: uint32, attachmentCount: uint32, pColorBlendEquations: ptr VkColorBlendEquationEXT): void {.stdcall.}
-  vkCmdSetColorWriteMaskEXT*: proc(commandBuffer: VkCommandBuffer, firstAttachment: uint32, attachmentCount: uint32, pColorWriteMasks: ptr VkColorComponentFlags): void {.stdcall.}
-  vkCmdSetRasterizationStreamEXT*: proc(commandBuffer: VkCommandBuffer, rasterizationStream: uint32): void {.stdcall.}
-  vkCmdSetConservativeRasterizationModeEXT*: proc(commandBuffer: VkCommandBuffer, conservativeRasterizationMode: VkConservativeRasterizationModeEXT): void {.stdcall.}
-  vkCmdSetExtraPrimitiveOverestimationSizeEXT*: proc(commandBuffer: VkCommandBuffer, extraPrimitiveOverestimationSize: float32): void {.stdcall.}
-  vkCmdSetDepthClipEnableEXT*: proc(commandBuffer: VkCommandBuffer, depthClipEnable: VkBool32): void {.stdcall.}
-  vkCmdSetSampleLocationsEnableEXT*: proc(commandBuffer: VkCommandBuffer, sampleLocationsEnable: VkBool32): void {.stdcall.}
-  vkCmdSetColorBlendAdvancedEXT*: proc(commandBuffer: VkCommandBuffer, firstAttachment: uint32, attachmentCount: uint32, pColorBlendAdvanced: ptr VkColorBlendAdvancedEXT): void {.stdcall.}
-  vkCmdSetProvokingVertexModeEXT*: proc(commandBuffer: VkCommandBuffer, provokingVertexMode: VkProvokingVertexModeEXT): void {.stdcall.}
-  vkCmdSetLineRasterizationModeEXT*: proc(commandBuffer: VkCommandBuffer, lineRasterizationMode: VkLineRasterizationModeEXT): void {.stdcall.}
-  vkCmdSetLineStippleEnableEXT*: proc(commandBuffer: VkCommandBuffer, stippledLineEnable: VkBool32): void {.stdcall.}
-  vkCmdSetDepthClipNegativeOneToOneEXT*: proc(commandBuffer: VkCommandBuffer, negativeOneToOne: VkBool32): void {.stdcall.}
-  vkCmdSetViewportWScalingEnableNV*: proc(commandBuffer: VkCommandBuffer, viewportWScalingEnable: VkBool32): void {.stdcall.}
-  vkCmdSetViewportSwizzleNV*: proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pViewportSwizzles: ptr VkViewportSwizzleNV): void {.stdcall.}
-  vkCmdSetCoverageToColorEnableNV*: proc(commandBuffer: VkCommandBuffer, coverageToColorEnable: VkBool32): void {.stdcall.}
-  vkCmdSetCoverageToColorLocationNV*: proc(commandBuffer: VkCommandBuffer, coverageToColorLocation: uint32): void {.stdcall.}
-  vkCmdSetCoverageModulationModeNV*: proc(commandBuffer: VkCommandBuffer, coverageModulationMode: VkCoverageModulationModeNV): void {.stdcall.}
-  vkCmdSetCoverageModulationTableEnableNV*: proc(commandBuffer: VkCommandBuffer, coverageModulationTableEnable: VkBool32): void {.stdcall.}
-  vkCmdSetCoverageModulationTableNV*: proc(commandBuffer: VkCommandBuffer, coverageModulationTableCount: uint32, pCoverageModulationTable: ptr float32): void {.stdcall.}
-  vkCmdSetShadingRateImageEnableNV*: proc(commandBuffer: VkCommandBuffer, shadingRateImageEnable: VkBool32): void {.stdcall.}
-  vkCmdSetRepresentativeFragmentTestEnableNV*: proc(commandBuffer: VkCommandBuffer, representativeFragmentTestEnable: VkBool32): void {.stdcall.}
-  vkCmdSetCoverageReductionModeNV*: proc(commandBuffer: VkCommandBuffer, coverageReductionMode: VkCoverageReductionModeNV): void {.stdcall.}
+  vkCmdSetTessellationDomainOriginEXT*: proc(
+    commandBuffer: VkCommandBuffer, domainOrigin: VkTessellationDomainOrigin
+  ): void {.stdcall.}
+  vkCmdSetDepthClampEnableEXT*:
+    proc(commandBuffer: VkCommandBuffer, depthClampEnable: VkBool32): void {.stdcall.}
+  vkCmdSetPolygonModeEXT*:
+    proc(commandBuffer: VkCommandBuffer, polygonMode: VkPolygonMode): void {.stdcall.}
+  vkCmdSetRasterizationSamplesEXT*: proc(
+    commandBuffer: VkCommandBuffer, rasterizationSamples: VkSampleCountFlagBits
+  ): void {.stdcall.}
+  vkCmdSetSampleMaskEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    samples: VkSampleCountFlagBits,
+    pSampleMask: ptr VkSampleMask,
+  ): void {.stdcall.}
+  vkCmdSetAlphaToCoverageEnableEXT*: proc(
+    commandBuffer: VkCommandBuffer, alphaToCoverageEnable: VkBool32
+  ): void {.stdcall.}
+  vkCmdSetAlphaToOneEnableEXT*:
+    proc(commandBuffer: VkCommandBuffer, alphaToOneEnable: VkBool32): void {.stdcall.}
+  vkCmdSetLogicOpEnableEXT*:
+    proc(commandBuffer: VkCommandBuffer, logicOpEnable: VkBool32): void {.stdcall.}
+  vkCmdSetColorBlendEnableEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstAttachment: uint32,
+    attachmentCount: uint32,
+    pColorBlendEnables: ptr VkBool32,
+  ): void {.stdcall.}
+  vkCmdSetColorBlendEquationEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstAttachment: uint32,
+    attachmentCount: uint32,
+    pColorBlendEquations: ptr VkColorBlendEquationEXT,
+  ): void {.stdcall.}
+  vkCmdSetColorWriteMaskEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstAttachment: uint32,
+    attachmentCount: uint32,
+    pColorWriteMasks: ptr VkColorComponentFlags,
+  ): void {.stdcall.}
+  vkCmdSetRasterizationStreamEXT*:
+    proc(commandBuffer: VkCommandBuffer, rasterizationStream: uint32): void {.stdcall.}
+  vkCmdSetConservativeRasterizationModeEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    conservativeRasterizationMode: VkConservativeRasterizationModeEXT,
+  ): void {.stdcall.}
+  vkCmdSetExtraPrimitiveOverestimationSizeEXT*: proc(
+    commandBuffer: VkCommandBuffer, extraPrimitiveOverestimationSize: float32
+  ): void {.stdcall.}
+  vkCmdSetDepthClipEnableEXT*:
+    proc(commandBuffer: VkCommandBuffer, depthClipEnable: VkBool32): void {.stdcall.}
+  vkCmdSetSampleLocationsEnableEXT*: proc(
+    commandBuffer: VkCommandBuffer, sampleLocationsEnable: VkBool32
+  ): void {.stdcall.}
+  vkCmdSetColorBlendAdvancedEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstAttachment: uint32,
+    attachmentCount: uint32,
+    pColorBlendAdvanced: ptr VkColorBlendAdvancedEXT,
+  ): void {.stdcall.}
+  vkCmdSetProvokingVertexModeEXT*: proc(
+    commandBuffer: VkCommandBuffer, provokingVertexMode: VkProvokingVertexModeEXT
+  ): void {.stdcall.}
+  vkCmdSetLineRasterizationModeEXT*: proc(
+    commandBuffer: VkCommandBuffer, lineRasterizationMode: VkLineRasterizationModeEXT
+  ): void {.stdcall.}
+  vkCmdSetLineStippleEnableEXT*:
+    proc(commandBuffer: VkCommandBuffer, stippledLineEnable: VkBool32): void {.stdcall.}
+  vkCmdSetDepthClipNegativeOneToOneEXT*:
+    proc(commandBuffer: VkCommandBuffer, negativeOneToOne: VkBool32): void {.stdcall.}
+  vkCmdSetViewportWScalingEnableNV*: proc(
+    commandBuffer: VkCommandBuffer, viewportWScalingEnable: VkBool32
+  ): void {.stdcall.}
+  vkCmdSetViewportSwizzleNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstViewport: uint32,
+    viewportCount: uint32,
+    pViewportSwizzles: ptr VkViewportSwizzleNV,
+  ): void {.stdcall.}
+  vkCmdSetCoverageToColorEnableNV*: proc(
+    commandBuffer: VkCommandBuffer, coverageToColorEnable: VkBool32
+  ): void {.stdcall.}
+  vkCmdSetCoverageToColorLocationNV*: proc(
+    commandBuffer: VkCommandBuffer, coverageToColorLocation: uint32
+  ): void {.stdcall.}
+  vkCmdSetCoverageModulationModeNV*: proc(
+    commandBuffer: VkCommandBuffer, coverageModulationMode: VkCoverageModulationModeNV
+  ): void {.stdcall.}
+  vkCmdSetCoverageModulationTableEnableNV*: proc(
+    commandBuffer: VkCommandBuffer, coverageModulationTableEnable: VkBool32
+  ): void {.stdcall.}
+  vkCmdSetCoverageModulationTableNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    coverageModulationTableCount: uint32,
+    pCoverageModulationTable: ptr float32,
+  ): void {.stdcall.}
+  vkCmdSetShadingRateImageEnableNV*: proc(
+    commandBuffer: VkCommandBuffer, shadingRateImageEnable: VkBool32
+  ): void {.stdcall.}
+  vkCmdSetRepresentativeFragmentTestEnableNV*: proc(
+    commandBuffer: VkCommandBuffer, representativeFragmentTestEnable: VkBool32
+  ): void {.stdcall.}
+  vkCmdSetCoverageReductionModeNV*: proc(
+    commandBuffer: VkCommandBuffer, coverageReductionMode: VkCoverageReductionModeNV
+  ): void {.stdcall.}
 proc loadVK_EXT_extended_dynamic_state3*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdSetTessellationDomainOriginEXT = cast[proc(commandBuffer: VkCommandBuffer, domainOrigin: VkTessellationDomainOrigin): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetTessellationDomainOriginEXT"))
-  vkCmdSetDepthClampEnableEXT = cast[proc(commandBuffer: VkCommandBuffer, depthClampEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthClampEnableEXT"))
-  vkCmdSetPolygonModeEXT = cast[proc(commandBuffer: VkCommandBuffer, polygonMode: VkPolygonMode): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetPolygonModeEXT"))
-  vkCmdSetRasterizationSamplesEXT = cast[proc(commandBuffer: VkCommandBuffer, rasterizationSamples: VkSampleCountFlagBits): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetRasterizationSamplesEXT"))
-  vkCmdSetSampleMaskEXT = cast[proc(commandBuffer: VkCommandBuffer, samples: VkSampleCountFlagBits, pSampleMask: ptr VkSampleMask): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetSampleMaskEXT"))
-  vkCmdSetAlphaToCoverageEnableEXT = cast[proc(commandBuffer: VkCommandBuffer, alphaToCoverageEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetAlphaToCoverageEnableEXT"))
-  vkCmdSetAlphaToOneEnableEXT = cast[proc(commandBuffer: VkCommandBuffer, alphaToOneEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetAlphaToOneEnableEXT"))
-  vkCmdSetLogicOpEnableEXT = cast[proc(commandBuffer: VkCommandBuffer, logicOpEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetLogicOpEnableEXT"))
-  vkCmdSetColorBlendEnableEXT = cast[proc(commandBuffer: VkCommandBuffer, firstAttachment: uint32, attachmentCount: uint32, pColorBlendEnables: ptr VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetColorBlendEnableEXT"))
-  vkCmdSetColorBlendEquationEXT = cast[proc(commandBuffer: VkCommandBuffer, firstAttachment: uint32, attachmentCount: uint32, pColorBlendEquations: ptr VkColorBlendEquationEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetColorBlendEquationEXT"))
-  vkCmdSetColorWriteMaskEXT = cast[proc(commandBuffer: VkCommandBuffer, firstAttachment: uint32, attachmentCount: uint32, pColorWriteMasks: ptr VkColorComponentFlags): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetColorWriteMaskEXT"))
-  vkCmdSetRasterizationStreamEXT = cast[proc(commandBuffer: VkCommandBuffer, rasterizationStream: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetRasterizationStreamEXT"))
-  vkCmdSetConservativeRasterizationModeEXT = cast[proc(commandBuffer: VkCommandBuffer, conservativeRasterizationMode: VkConservativeRasterizationModeEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetConservativeRasterizationModeEXT"))
-  vkCmdSetExtraPrimitiveOverestimationSizeEXT = cast[proc(commandBuffer: VkCommandBuffer, extraPrimitiveOverestimationSize: float32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetExtraPrimitiveOverestimationSizeEXT"))
-  vkCmdSetDepthClipEnableEXT = cast[proc(commandBuffer: VkCommandBuffer, depthClipEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthClipEnableEXT"))
-  vkCmdSetSampleLocationsEnableEXT = cast[proc(commandBuffer: VkCommandBuffer, sampleLocationsEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetSampleLocationsEnableEXT"))
-  vkCmdSetColorBlendAdvancedEXT = cast[proc(commandBuffer: VkCommandBuffer, firstAttachment: uint32, attachmentCount: uint32, pColorBlendAdvanced: ptr VkColorBlendAdvancedEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetColorBlendAdvancedEXT"))
-  vkCmdSetProvokingVertexModeEXT = cast[proc(commandBuffer: VkCommandBuffer, provokingVertexMode: VkProvokingVertexModeEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetProvokingVertexModeEXT"))
-  vkCmdSetLineRasterizationModeEXT = cast[proc(commandBuffer: VkCommandBuffer, lineRasterizationMode: VkLineRasterizationModeEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetLineRasterizationModeEXT"))
-  vkCmdSetLineStippleEnableEXT = cast[proc(commandBuffer: VkCommandBuffer, stippledLineEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetLineStippleEnableEXT"))
-  vkCmdSetDepthClipNegativeOneToOneEXT = cast[proc(commandBuffer: VkCommandBuffer, negativeOneToOne: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthClipNegativeOneToOneEXT"))
-  vkCmdSetViewportWScalingEnableNV = cast[proc(commandBuffer: VkCommandBuffer, viewportWScalingEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetViewportWScalingEnableNV"))
-  vkCmdSetViewportSwizzleNV = cast[proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pViewportSwizzles: ptr VkViewportSwizzleNV): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetViewportSwizzleNV"))
-  vkCmdSetCoverageToColorEnableNV = cast[proc(commandBuffer: VkCommandBuffer, coverageToColorEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetCoverageToColorEnableNV"))
-  vkCmdSetCoverageToColorLocationNV = cast[proc(commandBuffer: VkCommandBuffer, coverageToColorLocation: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetCoverageToColorLocationNV"))
-  vkCmdSetCoverageModulationModeNV = cast[proc(commandBuffer: VkCommandBuffer, coverageModulationMode: VkCoverageModulationModeNV): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetCoverageModulationModeNV"))
-  vkCmdSetCoverageModulationTableEnableNV = cast[proc(commandBuffer: VkCommandBuffer, coverageModulationTableEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetCoverageModulationTableEnableNV"))
-  vkCmdSetCoverageModulationTableNV = cast[proc(commandBuffer: VkCommandBuffer, coverageModulationTableCount: uint32, pCoverageModulationTable: ptr float32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetCoverageModulationTableNV"))
-  vkCmdSetShadingRateImageEnableNV = cast[proc(commandBuffer: VkCommandBuffer, shadingRateImageEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetShadingRateImageEnableNV"))
-  vkCmdSetRepresentativeFragmentTestEnableNV = cast[proc(commandBuffer: VkCommandBuffer, representativeFragmentTestEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetRepresentativeFragmentTestEnableNV"))
-  vkCmdSetCoverageReductionModeNV = cast[proc(commandBuffer: VkCommandBuffer, coverageReductionMode: VkCoverageReductionModeNV): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetCoverageReductionModeNV"))
+  vkCmdSetTessellationDomainOriginEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, domainOrigin: VkTessellationDomainOrigin
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetTessellationDomainOriginEXT"
+  ))
+  vkCmdSetDepthClampEnableEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, depthClampEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthClampEnableEXT"))
+  vkCmdSetPolygonModeEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, polygonMode: VkPolygonMode
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetPolygonModeEXT"))
+  vkCmdSetRasterizationSamplesEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, rasterizationSamples: VkSampleCountFlagBits
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetRasterizationSamplesEXT"
+  ))
+  vkCmdSetSampleMaskEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    samples: VkSampleCountFlagBits,
+    pSampleMask: ptr VkSampleMask,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetSampleMaskEXT"))
+  vkCmdSetAlphaToCoverageEnableEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, alphaToCoverageEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetAlphaToCoverageEnableEXT"
+  ))
+  vkCmdSetAlphaToOneEnableEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, alphaToOneEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetAlphaToOneEnableEXT"))
+  vkCmdSetLogicOpEnableEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, logicOpEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetLogicOpEnableEXT"))
+  vkCmdSetColorBlendEnableEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstAttachment: uint32,
+    attachmentCount: uint32,
+    pColorBlendEnables: ptr VkBool32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetColorBlendEnableEXT"))
+  vkCmdSetColorBlendEquationEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstAttachment: uint32,
+    attachmentCount: uint32,
+    pColorBlendEquations: ptr VkColorBlendEquationEXT,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetColorBlendEquationEXT"))
+  vkCmdSetColorWriteMaskEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstAttachment: uint32,
+    attachmentCount: uint32,
+    pColorWriteMasks: ptr VkColorComponentFlags,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetColorWriteMaskEXT"))
+  vkCmdSetRasterizationStreamEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, rasterizationStream: uint32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetRasterizationStreamEXT"))
+  vkCmdSetConservativeRasterizationModeEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    conservativeRasterizationMode: VkConservativeRasterizationModeEXT,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetConservativeRasterizationModeEXT"
+  ))
+  vkCmdSetExtraPrimitiveOverestimationSizeEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, extraPrimitiveOverestimationSize: float32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetExtraPrimitiveOverestimationSizeEXT"
+  ))
+  vkCmdSetDepthClipEnableEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, depthClipEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDepthClipEnableEXT"))
+  vkCmdSetSampleLocationsEnableEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, sampleLocationsEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetSampleLocationsEnableEXT"
+  ))
+  vkCmdSetColorBlendAdvancedEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstAttachment: uint32,
+    attachmentCount: uint32,
+    pColorBlendAdvanced: ptr VkColorBlendAdvancedEXT,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetColorBlendAdvancedEXT"))
+  vkCmdSetProvokingVertexModeEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, provokingVertexMode: VkProvokingVertexModeEXT
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetProvokingVertexModeEXT"))
+  vkCmdSetLineRasterizationModeEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, lineRasterizationMode: VkLineRasterizationModeEXT
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetLineRasterizationModeEXT"
+  ))
+  vkCmdSetLineStippleEnableEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, stippledLineEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetLineStippleEnableEXT"))
+  vkCmdSetDepthClipNegativeOneToOneEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, negativeOneToOne: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetDepthClipNegativeOneToOneEXT"
+  ))
+  vkCmdSetViewportWScalingEnableNV = cast[proc(
+    commandBuffer: VkCommandBuffer, viewportWScalingEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetViewportWScalingEnableNV"
+  ))
+  vkCmdSetViewportSwizzleNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstViewport: uint32,
+    viewportCount: uint32,
+    pViewportSwizzles: ptr VkViewportSwizzleNV,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetViewportSwizzleNV"))
+  vkCmdSetCoverageToColorEnableNV = cast[proc(
+    commandBuffer: VkCommandBuffer, coverageToColorEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetCoverageToColorEnableNV"
+  ))
+  vkCmdSetCoverageToColorLocationNV = cast[proc(
+    commandBuffer: VkCommandBuffer, coverageToColorLocation: uint32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetCoverageToColorLocationNV"
+  ))
+  vkCmdSetCoverageModulationModeNV = cast[proc(
+    commandBuffer: VkCommandBuffer, coverageModulationMode: VkCoverageModulationModeNV
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetCoverageModulationModeNV"
+  ))
+  vkCmdSetCoverageModulationTableEnableNV = cast[proc(
+    commandBuffer: VkCommandBuffer, coverageModulationTableEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetCoverageModulationTableEnableNV"
+  ))
+  vkCmdSetCoverageModulationTableNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    coverageModulationTableCount: uint32,
+    pCoverageModulationTable: ptr float32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetCoverageModulationTableNV"
+  ))
+  vkCmdSetShadingRateImageEnableNV = cast[proc(
+    commandBuffer: VkCommandBuffer, shadingRateImageEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetShadingRateImageEnableNV"
+  ))
+  vkCmdSetRepresentativeFragmentTestEnableNV = cast[proc(
+    commandBuffer: VkCommandBuffer, representativeFragmentTestEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetRepresentativeFragmentTestEnableNV"
+  ))
+  vkCmdSetCoverageReductionModeNV = cast[proc(
+    commandBuffer: VkCommandBuffer, coverageReductionMode: VkCoverageReductionModeNV
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetCoverageReductionModeNV"
+  ))
 
 proc loadVK_EXT_device_address_binding_report*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
   loadVK_EXT_debug_utils(instance)
 
 # extension VK_NV_clip_space_w_scaling
-var
-  vkCmdSetViewportWScalingNV*: proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pViewportWScalings: ptr VkViewportWScalingNV): void {.stdcall.}
+var vkCmdSetViewportWScalingNV*: proc(
+  commandBuffer: VkCommandBuffer,
+  firstViewport: uint32,
+  viewportCount: uint32,
+  pViewportWScalings: ptr VkViewportWScalingNV,
+): void {.stdcall.}
 proc loadVK_NV_clip_space_w_scaling*(instance: VkInstance) =
-  vkCmdSetViewportWScalingNV = cast[proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pViewportWScalings: ptr VkViewportWScalingNV): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetViewportWScalingNV"))
+  vkCmdSetViewportWScalingNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstViewport: uint32,
+    viewportCount: uint32,
+    pViewportWScalings: ptr VkViewportWScalingNV,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetViewportWScalingNV"))
 
 proc loadVK_NV_fill_rectangle*(instance: VkInstance) =
   discard
@@ -11016,12 +16200,36 @@
 
 # extension VK_EXT_calibrated_timestamps
 var
-  vkGetPhysicalDeviceCalibrateableTimeDomainsEXT*: proc(physicalDevice: VkPhysicalDevice, pTimeDomainCount: ptr uint32, pTimeDomains: ptr VkTimeDomainEXT): VkResult {.stdcall.}
-  vkGetCalibratedTimestampsEXT*: proc(device: VkDevice, timestampCount: uint32, pTimestampInfos: ptr VkCalibratedTimestampInfoEXT, pTimestamps: ptr uint64, pMaxDeviation: ptr uint64): VkResult {.stdcall.}
+  vkGetPhysicalDeviceCalibrateableTimeDomainsEXT*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pTimeDomainCount: ptr uint32,
+    pTimeDomains: ptr VkTimeDomainEXT,
+  ): VkResult {.stdcall.}
+  vkGetCalibratedTimestampsEXT*: proc(
+    device: VkDevice,
+    timestampCount: uint32,
+    pTimestampInfos: ptr VkCalibratedTimestampInfoEXT,
+    pTimestamps: ptr uint64,
+    pMaxDeviation: ptr uint64,
+  ): VkResult {.stdcall.}
 proc loadVK_EXT_calibrated_timestamps*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = cast[proc(physicalDevice: VkPhysicalDevice, pTimeDomainCount: ptr uint32, pTimeDomains: ptr VkTimeDomainEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
-  vkGetCalibratedTimestampsEXT = cast[proc(device: VkDevice, timestampCount: uint32, pTimestampInfos: ptr VkCalibratedTimestampInfoEXT, pTimestamps: ptr uint64, pMaxDeviation: ptr uint64): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetCalibratedTimestampsEXT"))
+  vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pTimeDomainCount: ptr uint32,
+    pTimeDomains: ptr VkTimeDomainEXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"
+  ))
+  vkGetCalibratedTimestampsEXT = cast[proc(
+    device: VkDevice,
+    timestampCount: uint32,
+    pTimestampInfos: ptr VkCalibratedTimestampInfoEXT,
+    pTimestamps: ptr uint64,
+    pMaxDeviation: ptr uint64,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetCalibratedTimestampsEXT"
+  ))
 
 proc loadVK_EXT_attachment_feedback_loop_layout*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -11030,48 +16238,106 @@
   discard
 
 # extension VK_EXT_external_memory_host
-var
-  vkGetMemoryHostPointerPropertiesEXT*: proc(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, pHostPointer: pointer, pMemoryHostPointerProperties: ptr VkMemoryHostPointerPropertiesEXT): VkResult {.stdcall.}
+var vkGetMemoryHostPointerPropertiesEXT*: proc(
+  device: VkDevice,
+  handleType: VkExternalMemoryHandleTypeFlagBits,
+  pHostPointer: pointer,
+  pMemoryHostPointerProperties: ptr VkMemoryHostPointerPropertiesEXT,
+): VkResult {.stdcall.}
 proc loadVK_EXT_external_memory_host*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkGetMemoryHostPointerPropertiesEXT = cast[proc(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, pHostPointer: pointer, pMemoryHostPointerProperties: ptr VkMemoryHostPointerPropertiesEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetMemoryHostPointerPropertiesEXT"))
+  vkGetMemoryHostPointerPropertiesEXT = cast[proc(
+    device: VkDevice,
+    handleType: VkExternalMemoryHandleTypeFlagBits,
+    pHostPointer: pointer,
+    pMemoryHostPointerProperties: ptr VkMemoryHostPointerPropertiesEXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetMemoryHostPointerPropertiesEXT"
+  ))
 
 proc loadVK_ARM_shader_core_properties*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
 
 # extension VK_EXT_shader_module_identifier
 var
-  vkGetShaderModuleIdentifierEXT*: proc(device: VkDevice, shaderModule: VkShaderModule, pIdentifier: ptr VkShaderModuleIdentifierEXT): void {.stdcall.}
-  vkGetShaderModuleCreateInfoIdentifierEXT*: proc(device: VkDevice, pCreateInfo: ptr VkShaderModuleCreateInfo, pIdentifier: ptr VkShaderModuleIdentifierEXT): void {.stdcall.}
+  vkGetShaderModuleIdentifierEXT*: proc(
+    device: VkDevice,
+    shaderModule: VkShaderModule,
+    pIdentifier: ptr VkShaderModuleIdentifierEXT,
+  ): void {.stdcall.}
+  vkGetShaderModuleCreateInfoIdentifierEXT*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkShaderModuleCreateInfo,
+    pIdentifier: ptr VkShaderModuleIdentifierEXT,
+  ): void {.stdcall.}
 proc loadVK_EXT_shader_module_identifier*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
   loadVK_VERSION_1_3(instance)
-  vkGetShaderModuleIdentifierEXT = cast[proc(device: VkDevice, shaderModule: VkShaderModule, pIdentifier: ptr VkShaderModuleIdentifierEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetShaderModuleIdentifierEXT"))
-  vkGetShaderModuleCreateInfoIdentifierEXT = cast[proc(device: VkDevice, pCreateInfo: ptr VkShaderModuleCreateInfo, pIdentifier: ptr VkShaderModuleIdentifierEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetShaderModuleCreateInfoIdentifierEXT"))
+  vkGetShaderModuleIdentifierEXT = cast[proc(
+    device: VkDevice,
+    shaderModule: VkShaderModule,
+    pIdentifier: ptr VkShaderModuleIdentifierEXT,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetShaderModuleIdentifierEXT"))
+  vkGetShaderModuleCreateInfoIdentifierEXT = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkShaderModuleCreateInfo,
+    pIdentifier: ptr VkShaderModuleIdentifierEXT,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetShaderModuleCreateInfoIdentifierEXT"
+  ))
 
 proc loadVK_EXT_border_color_swizzle*(instance: VkInstance) =
   loadVK_EXT_custom_border_color(instance)
 
 # extension VK_NV_memory_decompression
 var
-  vkCmdDecompressMemoryNV*: proc(commandBuffer: VkCommandBuffer, decompressRegionCount: uint32, pDecompressMemoryRegions: ptr VkDecompressMemoryRegionNV): void {.stdcall.}
-  vkCmdDecompressMemoryIndirectCountNV*: proc(commandBuffer: VkCommandBuffer, indirectCommandsAddress: VkDeviceAddress, indirectCommandsCountAddress: VkDeviceAddress, stride: uint32): void {.stdcall.}
+  vkCmdDecompressMemoryNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    decompressRegionCount: uint32,
+    pDecompressMemoryRegions: ptr VkDecompressMemoryRegionNV,
+  ): void {.stdcall.}
+  vkCmdDecompressMemoryIndirectCountNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    indirectCommandsAddress: VkDeviceAddress,
+    indirectCommandsCountAddress: VkDeviceAddress,
+    stride: uint32,
+  ): void {.stdcall.}
 proc loadVK_NV_memory_decompression*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
   loadVK_VERSION_1_2(instance)
-  vkCmdDecompressMemoryNV = cast[proc(commandBuffer: VkCommandBuffer, decompressRegionCount: uint32, pDecompressMemoryRegions: ptr VkDecompressMemoryRegionNV): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDecompressMemoryNV"))
-  vkCmdDecompressMemoryIndirectCountNV = cast[proc(commandBuffer: VkCommandBuffer, indirectCommandsAddress: VkDeviceAddress, indirectCommandsCountAddress: VkDeviceAddress, stride: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDecompressMemoryIndirectCountNV"))
+  vkCmdDecompressMemoryNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    decompressRegionCount: uint32,
+    pDecompressMemoryRegions: ptr VkDecompressMemoryRegionNV,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDecompressMemoryNV"))
+  vkCmdDecompressMemoryIndirectCountNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    indirectCommandsAddress: VkDeviceAddress,
+    indirectCommandsCountAddress: VkDeviceAddress,
+    stride: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdDecompressMemoryIndirectCountNV"
+  ))
 
 proc loadVK_EXT_fragment_shader_interlock*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
 
 # extension VK_NV_coverage_reduction_mode
-var
-  vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV*: proc(physicalDevice: VkPhysicalDevice, pCombinationCount: ptr uint32, pCombinations: ptr VkFramebufferMixedSamplesCombinationNV): VkResult {.stdcall.}
+var vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV*: proc(
+  physicalDevice: VkPhysicalDevice,
+  pCombinationCount: ptr uint32,
+  pCombinations: ptr VkFramebufferMixedSamplesCombinationNV,
+): VkResult {.stdcall.}
 proc loadVK_NV_coverage_reduction_mode*(instance: VkInstance) =
   loadVK_NV_framebuffer_mixed_samples(instance)
   loadVK_VERSION_1_1(instance)
-  vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = cast[proc(physicalDevice: VkPhysicalDevice, pCombinationCount: ptr uint32, pCombinations: ptr VkFramebufferMixedSamplesCombinationNV): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
+  vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pCombinationCount: ptr uint32,
+    pCombinations: ptr VkFramebufferMixedSamplesCombinationNV,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
+  ))
 
 proc loadVK_NV_glsl_shader*(instance: VkInstance) =
   discard
@@ -11081,22 +16347,80 @@
 
 # extension VK_QCOM_tile_properties
 var
-  vkGetFramebufferTilePropertiesQCOM*: proc(device: VkDevice, framebuffer: VkFramebuffer, pPropertiesCount: ptr uint32, pProperties: ptr VkTilePropertiesQCOM): VkResult {.stdcall.}
-  vkGetDynamicRenderingTilePropertiesQCOM*: proc(device: VkDevice, pRenderingInfo: ptr VkRenderingInfo, pProperties: ptr VkTilePropertiesQCOM): VkResult {.stdcall.}
+  vkGetFramebufferTilePropertiesQCOM*: proc(
+    device: VkDevice,
+    framebuffer: VkFramebuffer,
+    pPropertiesCount: ptr uint32,
+    pProperties: ptr VkTilePropertiesQCOM,
+  ): VkResult {.stdcall.}
+  vkGetDynamicRenderingTilePropertiesQCOM*: proc(
+    device: VkDevice,
+    pRenderingInfo: ptr VkRenderingInfo,
+    pProperties: ptr VkTilePropertiesQCOM,
+  ): VkResult {.stdcall.}
 proc loadVK_QCOM_tile_properties*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkGetFramebufferTilePropertiesQCOM = cast[proc(device: VkDevice, framebuffer: VkFramebuffer, pPropertiesCount: ptr uint32, pProperties: ptr VkTilePropertiesQCOM): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetFramebufferTilePropertiesQCOM"))
-  vkGetDynamicRenderingTilePropertiesQCOM = cast[proc(device: VkDevice, pRenderingInfo: ptr VkRenderingInfo, pProperties: ptr VkTilePropertiesQCOM): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDynamicRenderingTilePropertiesQCOM"))
+  vkGetFramebufferTilePropertiesQCOM = cast[proc(
+    device: VkDevice,
+    framebuffer: VkFramebuffer,
+    pPropertiesCount: ptr uint32,
+    pProperties: ptr VkTilePropertiesQCOM,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetFramebufferTilePropertiesQCOM"
+  ))
+  vkGetDynamicRenderingTilePropertiesQCOM = cast[proc(
+    device: VkDevice,
+    pRenderingInfo: ptr VkRenderingInfo,
+    pProperties: ptr VkTilePropertiesQCOM,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDynamicRenderingTilePropertiesQCOM"
+  ))
 
 # extension VK_KHR_push_descriptor
 var
-  vkCmdPushDescriptorSetKHR*: proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, layout: VkPipelineLayout, set: uint32, descriptorWriteCount: uint32, pDescriptorWrites: ptr VkWriteDescriptorSet): void {.stdcall.}
-  vkCmdPushDescriptorSetWithTemplateKHR*: proc(commandBuffer: VkCommandBuffer, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, layout: VkPipelineLayout, set: uint32, pData: pointer): void {.stdcall.}
+  vkCmdPushDescriptorSetKHR*: proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineBindPoint: VkPipelineBindPoint,
+    layout: VkPipelineLayout,
+    set: uint32,
+    descriptorWriteCount: uint32,
+    pDescriptorWrites: ptr VkWriteDescriptorSet,
+  ): void {.stdcall.}
+  vkCmdPushDescriptorSetWithTemplateKHR*: proc(
+    commandBuffer: VkCommandBuffer,
+    descriptorUpdateTemplate: VkDescriptorUpdateTemplate,
+    layout: VkPipelineLayout,
+    set: uint32,
+    pData: pointer,
+  ): void {.stdcall.}
 proc loadVK_KHR_push_descriptor*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdPushDescriptorSetKHR = cast[proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, layout: VkPipelineLayout, set: uint32, descriptorWriteCount: uint32, pDescriptorWrites: ptr VkWriteDescriptorSet): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdPushDescriptorSetKHR"))
-  vkCmdPushDescriptorSetWithTemplateKHR = cast[proc(commandBuffer: VkCommandBuffer, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, layout: VkPipelineLayout, set: uint32, pData: pointer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdPushDescriptorSetWithTemplateKHR"))
-  vkCmdPushDescriptorSetWithTemplateKHR = cast[proc(commandBuffer: VkCommandBuffer, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, layout: VkPipelineLayout, set: uint32, pData: pointer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdPushDescriptorSetWithTemplateKHR"))
+  vkCmdPushDescriptorSetKHR = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pipelineBindPoint: VkPipelineBindPoint,
+    layout: VkPipelineLayout,
+    set: uint32,
+    descriptorWriteCount: uint32,
+    pDescriptorWrites: ptr VkWriteDescriptorSet,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdPushDescriptorSetKHR"))
+  vkCmdPushDescriptorSetWithTemplateKHR = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    descriptorUpdateTemplate: VkDescriptorUpdateTemplate,
+    layout: VkPipelineLayout,
+    set: uint32,
+    pData: pointer,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdPushDescriptorSetWithTemplateKHR"
+  ))
+  vkCmdPushDescriptorSetWithTemplateKHR = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    descriptorUpdateTemplate: VkDescriptorUpdateTemplate,
+    layout: VkPipelineLayout,
+    set: uint32,
+    pData: pointer,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdPushDescriptorSetWithTemplateKHR"
+  ))
 
 proc loadVK_NV_viewport_swizzle*(instance: VkInstance) =
   discard
@@ -11118,25 +16442,83 @@
 
 # extension VK_INTEL_performance_query
 var
-  vkInitializePerformanceApiINTEL*: proc(device: VkDevice, pInitializeInfo: ptr VkInitializePerformanceApiInfoINTEL): VkResult {.stdcall.}
+  vkInitializePerformanceApiINTEL*: proc(
+    device: VkDevice, pInitializeInfo: ptr VkInitializePerformanceApiInfoINTEL
+  ): VkResult {.stdcall.}
   vkUninitializePerformanceApiINTEL*: proc(device: VkDevice): void {.stdcall.}
-  vkCmdSetPerformanceMarkerINTEL*: proc(commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkPerformanceMarkerInfoINTEL): VkResult {.stdcall.}
-  vkCmdSetPerformanceStreamMarkerINTEL*: proc(commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkPerformanceStreamMarkerInfoINTEL): VkResult {.stdcall.}
-  vkCmdSetPerformanceOverrideINTEL*: proc(commandBuffer: VkCommandBuffer, pOverrideInfo: ptr VkPerformanceOverrideInfoINTEL): VkResult {.stdcall.}
-  vkAcquirePerformanceConfigurationINTEL*: proc(device: VkDevice, pAcquireInfo: ptr VkPerformanceConfigurationAcquireInfoINTEL, pConfiguration: ptr VkPerformanceConfigurationINTEL): VkResult {.stdcall.}
-  vkReleasePerformanceConfigurationINTEL*: proc(device: VkDevice, configuration: VkPerformanceConfigurationINTEL): VkResult {.stdcall.}
-  vkQueueSetPerformanceConfigurationINTEL*: proc(queue: VkQueue, configuration: VkPerformanceConfigurationINTEL): VkResult {.stdcall.}
-  vkGetPerformanceParameterINTEL*: proc(device: VkDevice, parameter: VkPerformanceParameterTypeINTEL, pValue: ptr VkPerformanceValueINTEL): VkResult {.stdcall.}
+  vkCmdSetPerformanceMarkerINTEL*: proc(
+    commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkPerformanceMarkerInfoINTEL
+  ): VkResult {.stdcall.}
+  vkCmdSetPerformanceStreamMarkerINTEL*: proc(
+    commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkPerformanceStreamMarkerInfoINTEL
+  ): VkResult {.stdcall.}
+  vkCmdSetPerformanceOverrideINTEL*: proc(
+    commandBuffer: VkCommandBuffer, pOverrideInfo: ptr VkPerformanceOverrideInfoINTEL
+  ): VkResult {.stdcall.}
+  vkAcquirePerformanceConfigurationINTEL*: proc(
+    device: VkDevice,
+    pAcquireInfo: ptr VkPerformanceConfigurationAcquireInfoINTEL,
+    pConfiguration: ptr VkPerformanceConfigurationINTEL,
+  ): VkResult {.stdcall.}
+  vkReleasePerformanceConfigurationINTEL*: proc(
+    device: VkDevice, configuration: VkPerformanceConfigurationINTEL
+  ): VkResult {.stdcall.}
+  vkQueueSetPerformanceConfigurationINTEL*: proc(
+    queue: VkQueue, configuration: VkPerformanceConfigurationINTEL
+  ): VkResult {.stdcall.}
+  vkGetPerformanceParameterINTEL*: proc(
+    device: VkDevice,
+    parameter: VkPerformanceParameterTypeINTEL,
+    pValue: ptr VkPerformanceValueINTEL,
+  ): VkResult {.stdcall.}
 proc loadVK_INTEL_performance_query*(instance: VkInstance) =
-  vkInitializePerformanceApiINTEL = cast[proc(device: VkDevice, pInitializeInfo: ptr VkInitializePerformanceApiInfoINTEL): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkInitializePerformanceApiINTEL"))
-  vkUninitializePerformanceApiINTEL = cast[proc(device: VkDevice): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkUninitializePerformanceApiINTEL"))
-  vkCmdSetPerformanceMarkerINTEL = cast[proc(commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkPerformanceMarkerInfoINTEL): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetPerformanceMarkerINTEL"))
-  vkCmdSetPerformanceStreamMarkerINTEL = cast[proc(commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkPerformanceStreamMarkerInfoINTEL): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetPerformanceStreamMarkerINTEL"))
-  vkCmdSetPerformanceOverrideINTEL = cast[proc(commandBuffer: VkCommandBuffer, pOverrideInfo: ptr VkPerformanceOverrideInfoINTEL): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetPerformanceOverrideINTEL"))
-  vkAcquirePerformanceConfigurationINTEL = cast[proc(device: VkDevice, pAcquireInfo: ptr VkPerformanceConfigurationAcquireInfoINTEL, pConfiguration: ptr VkPerformanceConfigurationINTEL): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAcquirePerformanceConfigurationINTEL"))
-  vkReleasePerformanceConfigurationINTEL = cast[proc(device: VkDevice, configuration: VkPerformanceConfigurationINTEL): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkReleasePerformanceConfigurationINTEL"))
-  vkQueueSetPerformanceConfigurationINTEL = cast[proc(queue: VkQueue, configuration: VkPerformanceConfigurationINTEL): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkQueueSetPerformanceConfigurationINTEL"))
-  vkGetPerformanceParameterINTEL = cast[proc(device: VkDevice, parameter: VkPerformanceParameterTypeINTEL, pValue: ptr VkPerformanceValueINTEL): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPerformanceParameterINTEL"))
+  vkInitializePerformanceApiINTEL = cast[proc(
+    device: VkDevice, pInitializeInfo: ptr VkInitializePerformanceApiInfoINTEL
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkInitializePerformanceApiINTEL"
+  ))
+  vkUninitializePerformanceApiINTEL = cast[proc(device: VkDevice): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkUninitializePerformanceApiINTEL"
+  ))
+  vkCmdSetPerformanceMarkerINTEL = cast[proc(
+    commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkPerformanceMarkerInfoINTEL
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetPerformanceMarkerINTEL"
+  ))
+  vkCmdSetPerformanceStreamMarkerINTEL = cast[proc(
+    commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkPerformanceStreamMarkerInfoINTEL
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetPerformanceStreamMarkerINTEL"
+  ))
+  vkCmdSetPerformanceOverrideINTEL = cast[proc(
+    commandBuffer: VkCommandBuffer, pOverrideInfo: ptr VkPerformanceOverrideInfoINTEL
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetPerformanceOverrideINTEL"
+  ))
+  vkAcquirePerformanceConfigurationINTEL = cast[proc(
+    device: VkDevice,
+    pAcquireInfo: ptr VkPerformanceConfigurationAcquireInfoINTEL,
+    pConfiguration: ptr VkPerformanceConfigurationINTEL,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkAcquirePerformanceConfigurationINTEL"
+  ))
+  vkReleasePerformanceConfigurationINTEL = cast[proc(
+    device: VkDevice, configuration: VkPerformanceConfigurationINTEL
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkReleasePerformanceConfigurationINTEL"
+  ))
+  vkQueueSetPerformanceConfigurationINTEL = cast[proc(
+    queue: VkQueue, configuration: VkPerformanceConfigurationINTEL
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkQueueSetPerformanceConfigurationINTEL"
+  ))
+  vkGetPerformanceParameterINTEL = cast[proc(
+    device: VkDevice,
+    parameter: VkPerformanceParameterTypeINTEL,
+    pValue: ptr VkPerformanceValueINTEL,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPerformanceParameterINTEL"
+  ))
 
 proc loadVK_EXT_primitives_generated_query*(instance: VkInstance) =
   loadVK_EXT_transform_feedback(instance)
@@ -11149,24 +16531,65 @@
 
 # extension VK_EXT_conditional_rendering
 var
-  vkCmdBeginConditionalRenderingEXT*: proc(commandBuffer: VkCommandBuffer, pConditionalRenderingBegin: ptr VkConditionalRenderingBeginInfoEXT): void {.stdcall.}
-  vkCmdEndConditionalRenderingEXT*: proc(commandBuffer: VkCommandBuffer): void {.stdcall.}
+  vkCmdBeginConditionalRenderingEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    pConditionalRenderingBegin: ptr VkConditionalRenderingBeginInfoEXT,
+  ): void {.stdcall.}
+  vkCmdEndConditionalRenderingEXT*:
+    proc(commandBuffer: VkCommandBuffer): void {.stdcall.}
 proc loadVK_EXT_conditional_rendering*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdBeginConditionalRenderingEXT = cast[proc(commandBuffer: VkCommandBuffer, pConditionalRenderingBegin: ptr VkConditionalRenderingBeginInfoEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBeginConditionalRenderingEXT"))
-  vkCmdEndConditionalRenderingEXT = cast[proc(commandBuffer: VkCommandBuffer): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdEndConditionalRenderingEXT"))
+  vkCmdBeginConditionalRenderingEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pConditionalRenderingBegin: ptr VkConditionalRenderingBeginInfoEXT,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdBeginConditionalRenderingEXT"
+  ))
+  vkCmdEndConditionalRenderingEXT = cast[proc(commandBuffer: VkCommandBuffer): void {.
+    stdcall
+  .}](vkGetInstanceProcAddr(instance, "vkCmdEndConditionalRenderingEXT"))
 
 proc loadVK_QCOM_multiview_per_view_viewports*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
 
 # extension VK_EXT_multi_draw
 var
-  vkCmdDrawMultiEXT*: proc(commandBuffer: VkCommandBuffer, drawCount: uint32, pVertexInfo: ptr VkMultiDrawInfoEXT, instanceCount: uint32, firstInstance: uint32, stride: uint32): void {.stdcall.}
-  vkCmdDrawMultiIndexedEXT*: proc(commandBuffer: VkCommandBuffer, drawCount: uint32, pIndexInfo: ptr VkMultiDrawIndexedInfoEXT, instanceCount: uint32, firstInstance: uint32, stride: uint32, pVertexOffset: ptr int32): void {.stdcall.}
+  vkCmdDrawMultiEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    drawCount: uint32,
+    pVertexInfo: ptr VkMultiDrawInfoEXT,
+    instanceCount: uint32,
+    firstInstance: uint32,
+    stride: uint32,
+  ): void {.stdcall.}
+  vkCmdDrawMultiIndexedEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    drawCount: uint32,
+    pIndexInfo: ptr VkMultiDrawIndexedInfoEXT,
+    instanceCount: uint32,
+    firstInstance: uint32,
+    stride: uint32,
+    pVertexOffset: ptr int32,
+  ): void {.stdcall.}
 proc loadVK_EXT_multi_draw*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdDrawMultiEXT = cast[proc(commandBuffer: VkCommandBuffer, drawCount: uint32, pVertexInfo: ptr VkMultiDrawInfoEXT, instanceCount: uint32, firstInstance: uint32, stride: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawMultiEXT"))
-  vkCmdDrawMultiIndexedEXT = cast[proc(commandBuffer: VkCommandBuffer, drawCount: uint32, pIndexInfo: ptr VkMultiDrawIndexedInfoEXT, instanceCount: uint32, firstInstance: uint32, stride: uint32, pVertexOffset: ptr int32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawMultiIndexedEXT"))
+  vkCmdDrawMultiEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    drawCount: uint32,
+    pVertexInfo: ptr VkMultiDrawInfoEXT,
+    instanceCount: uint32,
+    firstInstance: uint32,
+    stride: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawMultiEXT"))
+  vkCmdDrawMultiIndexedEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    drawCount: uint32,
+    pIndexInfo: ptr VkMultiDrawIndexedInfoEXT,
+    instanceCount: uint32,
+    firstInstance: uint32,
+    stride: uint32,
+    pVertexOffset: ptr int32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawMultiIndexedEXT"))
 
 proc loadVK_NV_fragment_coverage_to_color*(instance: VkInstance) =
   discard
@@ -11190,11 +16613,18 @@
   loadVK_VERSION_1_1(instance)
 
 # extension VK_EXT_pipeline_properties
-var
-  vkGetPipelinePropertiesEXT*: proc(device: VkDevice, pPipelineInfo: ptr VkPipelineInfoEXT, pPipelineProperties: ptr VkBaseOutStructure): VkResult {.stdcall.}
+var vkGetPipelinePropertiesEXT*: proc(
+  device: VkDevice,
+  pPipelineInfo: ptr VkPipelineInfoEXT,
+  pPipelineProperties: ptr VkBaseOutStructure,
+): VkResult {.stdcall.}
 proc loadVK_EXT_pipeline_properties*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkGetPipelinePropertiesEXT = cast[proc(device: VkDevice, pPipelineInfo: ptr VkPipelineInfoEXT, pPipelineProperties: ptr VkBaseOutStructure): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPipelinePropertiesEXT"))
+  vkGetPipelinePropertiesEXT = cast[proc(
+    device: VkDevice,
+    pPipelineInfo: ptr VkPipelineInfoEXT,
+    pPipelineProperties: ptr VkBaseOutStructure,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPipelinePropertiesEXT"))
 
 proc loadVK_EXT_graphics_pipeline_library*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -11202,45 +16632,137 @@
 
 # extension VK_KHR_surface
 var
-  vkDestroySurfaceKHR*: proc(instance: VkInstance, surface: VkSurfaceKHR, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkGetPhysicalDeviceSurfaceSupportKHR*: proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, surface: VkSurfaceKHR, pSupported: ptr VkBool32): VkResult {.stdcall.}
-  vkGetPhysicalDeviceSurfaceCapabilitiesKHR*: proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pSurfaceCapabilities: ptr VkSurfaceCapabilitiesKHR): VkResult {.stdcall.}
-  vkGetPhysicalDeviceSurfaceFormatsKHR*: proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pSurfaceFormatCount: ptr uint32, pSurfaceFormats: ptr VkSurfaceFormatKHR): VkResult {.stdcall.}
-  vkGetPhysicalDeviceSurfacePresentModesKHR*: proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pPresentModeCount: ptr uint32, pPresentModes: ptr VkPresentModeKHR): VkResult {.stdcall.}
+  vkDestroySurfaceKHR*: proc(
+    instance: VkInstance, surface: VkSurfaceKHR, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkGetPhysicalDeviceSurfaceSupportKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    queueFamilyIndex: uint32,
+    surface: VkSurfaceKHR,
+    pSupported: ptr VkBool32,
+  ): VkResult {.stdcall.}
+  vkGetPhysicalDeviceSurfaceCapabilitiesKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    surface: VkSurfaceKHR,
+    pSurfaceCapabilities: ptr VkSurfaceCapabilitiesKHR,
+  ): VkResult {.stdcall.}
+  vkGetPhysicalDeviceSurfaceFormatsKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    surface: VkSurfaceKHR,
+    pSurfaceFormatCount: ptr uint32,
+    pSurfaceFormats: ptr VkSurfaceFormatKHR,
+  ): VkResult {.stdcall.}
+  vkGetPhysicalDeviceSurfacePresentModesKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    surface: VkSurfaceKHR,
+    pPresentModeCount: ptr uint32,
+    pPresentModes: ptr VkPresentModeKHR,
+  ): VkResult {.stdcall.}
 proc loadVK_KHR_surface*(instance: VkInstance) =
-  vkDestroySurfaceKHR = cast[proc(instance: VkInstance, surface: VkSurfaceKHR, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroySurfaceKHR"))
-  vkGetPhysicalDeviceSurfaceSupportKHR = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, surface: VkSurfaceKHR, pSupported: ptr VkBool32): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceSupportKHR"))
-  vkGetPhysicalDeviceSurfaceCapabilitiesKHR = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pSurfaceCapabilities: ptr VkSurfaceCapabilitiesKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
-  vkGetPhysicalDeviceSurfaceFormatsKHR = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pSurfaceFormatCount: ptr uint32, pSurfaceFormats: ptr VkSurfaceFormatKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
-  vkGetPhysicalDeviceSurfacePresentModesKHR = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pPresentModeCount: ptr uint32, pPresentModes: ptr VkPresentModeKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
+  vkDestroySurfaceKHR = cast[proc(
+    instance: VkInstance, surface: VkSurfaceKHR, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroySurfaceKHR"))
+  vkGetPhysicalDeviceSurfaceSupportKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    queueFamilyIndex: uint32,
+    surface: VkSurfaceKHR,
+    pSupported: ptr VkBool32,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceSurfaceSupportKHR"
+  ))
+  vkGetPhysicalDeviceSurfaceCapabilitiesKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    surface: VkSurfaceKHR,
+    pSurfaceCapabilities: ptr VkSurfaceCapabilitiesKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"
+  ))
+  vkGetPhysicalDeviceSurfaceFormatsKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    surface: VkSurfaceKHR,
+    pSurfaceFormatCount: ptr uint32,
+    pSurfaceFormats: ptr VkSurfaceFormatKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceSurfaceFormatsKHR"
+  ))
+  vkGetPhysicalDeviceSurfacePresentModesKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    surface: VkSurfaceKHR,
+    pPresentModeCount: ptr uint32,
+    pPresentModes: ptr VkPresentModeKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceSurfacePresentModesKHR"
+  ))
 
 proc loadVK_AMD_gpu_shader_half_float*(instance: VkInstance) =
   discard
 
 # extension VK_KHR_deferred_host_operations
 var
-  vkCreateDeferredOperationKHR*: proc(device: VkDevice, pAllocator: ptr VkAllocationCallbacks, pDeferredOperation: ptr VkDeferredOperationKHR): VkResult {.stdcall.}
-  vkDestroyDeferredOperationKHR*: proc(device: VkDevice, operation: VkDeferredOperationKHR, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkGetDeferredOperationMaxConcurrencyKHR*: proc(device: VkDevice, operation: VkDeferredOperationKHR): uint32 {.stdcall.}
-  vkGetDeferredOperationResultKHR*: proc(device: VkDevice, operation: VkDeferredOperationKHR): VkResult {.stdcall.}
-  vkDeferredOperationJoinKHR*: proc(device: VkDevice, operation: VkDeferredOperationKHR): VkResult {.stdcall.}
+  vkCreateDeferredOperationKHR*: proc(
+    device: VkDevice,
+    pAllocator: ptr VkAllocationCallbacks,
+    pDeferredOperation: ptr VkDeferredOperationKHR,
+  ): VkResult {.stdcall.}
+  vkDestroyDeferredOperationKHR*: proc(
+    device: VkDevice,
+    operation: VkDeferredOperationKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkGetDeferredOperationMaxConcurrencyKHR*:
+    proc(device: VkDevice, operation: VkDeferredOperationKHR): uint32 {.stdcall.}
+  vkGetDeferredOperationResultKHR*:
+    proc(device: VkDevice, operation: VkDeferredOperationKHR): VkResult {.stdcall.}
+  vkDeferredOperationJoinKHR*:
+    proc(device: VkDevice, operation: VkDeferredOperationKHR): VkResult {.stdcall.}
 proc loadVK_KHR_deferred_host_operations*(instance: VkInstance) =
-  vkCreateDeferredOperationKHR = cast[proc(device: VkDevice, pAllocator: ptr VkAllocationCallbacks, pDeferredOperation: ptr VkDeferredOperationKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateDeferredOperationKHR"))
-  vkDestroyDeferredOperationKHR = cast[proc(device: VkDevice, operation: VkDeferredOperationKHR, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyDeferredOperationKHR"))
-  vkGetDeferredOperationMaxConcurrencyKHR = cast[proc(device: VkDevice, operation: VkDeferredOperationKHR): uint32 {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeferredOperationMaxConcurrencyKHR"))
-  vkGetDeferredOperationResultKHR = cast[proc(device: VkDevice, operation: VkDeferredOperationKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeferredOperationResultKHR"))
-  vkDeferredOperationJoinKHR = cast[proc(device: VkDevice, operation: VkDeferredOperationKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDeferredOperationJoinKHR"))
+  vkCreateDeferredOperationKHR = cast[proc(
+    device: VkDevice,
+    pAllocator: ptr VkAllocationCallbacks,
+    pDeferredOperation: ptr VkDeferredOperationKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCreateDeferredOperationKHR"
+  ))
+  vkDestroyDeferredOperationKHR = cast[proc(
+    device: VkDevice,
+    operation: VkDeferredOperationKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyDeferredOperationKHR"))
+  vkGetDeferredOperationMaxConcurrencyKHR = cast[proc(
+    device: VkDevice, operation: VkDeferredOperationKHR
+  ): uint32 {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDeferredOperationMaxConcurrencyKHR"
+  ))
+  vkGetDeferredOperationResultKHR = cast[proc(
+    device: VkDevice, operation: VkDeferredOperationKHR
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDeferredOperationResultKHR"
+  ))
+  vkDeferredOperationJoinKHR = cast[proc(
+    device: VkDevice, operation: VkDeferredOperationKHR
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDeferredOperationJoinKHR"))
 
 proc loadVK_NV_dedicated_allocation*(instance: VkInstance) =
   discard
 
 # extension VK_NVX_image_view_handle
 var
-  vkGetImageViewHandleNVX*: proc(device: VkDevice, pInfo: ptr VkImageViewHandleInfoNVX): uint32 {.stdcall.}
-  vkGetImageViewAddressNVX*: proc(device: VkDevice, imageView: VkImageView, pProperties: ptr VkImageViewAddressPropertiesNVX): VkResult {.stdcall.}
+  vkGetImageViewHandleNVX*:
+    proc(device: VkDevice, pInfo: ptr VkImageViewHandleInfoNVX): uint32 {.stdcall.}
+  vkGetImageViewAddressNVX*: proc(
+    device: VkDevice,
+    imageView: VkImageView,
+    pProperties: ptr VkImageViewAddressPropertiesNVX,
+  ): VkResult {.stdcall.}
 proc loadVK_NVX_image_view_handle*(instance: VkInstance) =
-  vkGetImageViewHandleNVX = cast[proc(device: VkDevice, pInfo: ptr VkImageViewHandleInfoNVX): uint32 {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageViewHandleNVX"))
-  vkGetImageViewAddressNVX = cast[proc(device: VkDevice, imageView: VkImageView, pProperties: ptr VkImageViewAddressPropertiesNVX): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageViewAddressNVX"))
+  vkGetImageViewHandleNVX = cast[proc(
+    device: VkDevice, pInfo: ptr VkImageViewHandleInfoNVX
+  ): uint32 {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageViewHandleNVX"))
+  vkGetImageViewAddressNVX = cast[proc(
+    device: VkDevice,
+    imageView: VkImageView,
+    pProperties: ptr VkImageViewAddressPropertiesNVX,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetImageViewAddressNVX"))
 
 proc loadVK_EXT_non_seamless_cube_map*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -11249,53 +16771,139 @@
   discard
 
 # extension VK_EXT_device_fault
-var
-  vkGetDeviceFaultInfoEXT*: proc(device: VkDevice, pFaultCounts: ptr VkDeviceFaultCountsEXT, pFaultInfo: ptr VkDeviceFaultInfoEXT): VkResult {.stdcall.}
+var vkGetDeviceFaultInfoEXT*: proc(
+  device: VkDevice,
+  pFaultCounts: ptr VkDeviceFaultCountsEXT,
+  pFaultInfo: ptr VkDeviceFaultInfoEXT,
+): VkResult {.stdcall.}
 proc loadVK_EXT_device_fault*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkGetDeviceFaultInfoEXT = cast[proc(device: VkDevice, pFaultCounts: ptr VkDeviceFaultCountsEXT, pFaultInfo: ptr VkDeviceFaultInfoEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceFaultInfoEXT"))
+  vkGetDeviceFaultInfoEXT = cast[proc(
+    device: VkDevice,
+    pFaultCounts: ptr VkDeviceFaultCountsEXT,
+    pFaultInfo: ptr VkDeviceFaultInfoEXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceFaultInfoEXT"))
 
 proc loadVK_EXT_mutable_descriptor_type*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
 
 # extension VK_EXT_color_write_enable
-var
-  vkCmdSetColorWriteEnableEXT*: proc(commandBuffer: VkCommandBuffer, attachmentCount: uint32, pColorWriteEnables: ptr VkBool32): void {.stdcall.}
+var vkCmdSetColorWriteEnableEXT*: proc(
+  commandBuffer: VkCommandBuffer,
+  attachmentCount: uint32,
+  pColorWriteEnables: ptr VkBool32,
+): void {.stdcall.}
 proc loadVK_EXT_color_write_enable*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdSetColorWriteEnableEXT = cast[proc(commandBuffer: VkCommandBuffer, attachmentCount: uint32, pColorWriteEnables: ptr VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetColorWriteEnableEXT"))
+  vkCmdSetColorWriteEnableEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    attachmentCount: uint32,
+    pColorWriteEnables: ptr VkBool32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetColorWriteEnableEXT"))
 
 proc loadVK_SEC_amigo_profiling*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
 
 # extension VK_NVX_binary_import
 var
-  vkCreateCuModuleNVX*: proc(device: VkDevice, pCreateInfo: ptr VkCuModuleCreateInfoNVX, pAllocator: ptr VkAllocationCallbacks, pModule: ptr VkCuModuleNVX): VkResult {.stdcall.}
-  vkCreateCuFunctionNVX*: proc(device: VkDevice, pCreateInfo: ptr VkCuFunctionCreateInfoNVX, pAllocator: ptr VkAllocationCallbacks, pFunction: ptr VkCuFunctionNVX): VkResult {.stdcall.}
-  vkDestroyCuModuleNVX*: proc(device: VkDevice, module: VkCuModuleNVX, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkDestroyCuFunctionNVX*: proc(device: VkDevice, function: VkCuFunctionNVX, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkCmdCuLaunchKernelNVX*: proc(commandBuffer: VkCommandBuffer, pLaunchInfo: ptr VkCuLaunchInfoNVX): void {.stdcall.}
+  vkCreateCuModuleNVX*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkCuModuleCreateInfoNVX,
+    pAllocator: ptr VkAllocationCallbacks,
+    pModule: ptr VkCuModuleNVX,
+  ): VkResult {.stdcall.}
+  vkCreateCuFunctionNVX*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkCuFunctionCreateInfoNVX,
+    pAllocator: ptr VkAllocationCallbacks,
+    pFunction: ptr VkCuFunctionNVX,
+  ): VkResult {.stdcall.}
+  vkDestroyCuModuleNVX*: proc(
+    device: VkDevice, module: VkCuModuleNVX, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkDestroyCuFunctionNVX*: proc(
+    device: VkDevice, function: VkCuFunctionNVX, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkCmdCuLaunchKernelNVX*: proc(
+    commandBuffer: VkCommandBuffer, pLaunchInfo: ptr VkCuLaunchInfoNVX
+  ): void {.stdcall.}
 proc loadVK_NVX_binary_import*(instance: VkInstance) =
-  vkCreateCuModuleNVX = cast[proc(device: VkDevice, pCreateInfo: ptr VkCuModuleCreateInfoNVX, pAllocator: ptr VkAllocationCallbacks, pModule: ptr VkCuModuleNVX): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateCuModuleNVX"))
-  vkCreateCuFunctionNVX = cast[proc(device: VkDevice, pCreateInfo: ptr VkCuFunctionCreateInfoNVX, pAllocator: ptr VkAllocationCallbacks, pFunction: ptr VkCuFunctionNVX): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateCuFunctionNVX"))
-  vkDestroyCuModuleNVX = cast[proc(device: VkDevice, module: VkCuModuleNVX, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyCuModuleNVX"))
-  vkDestroyCuFunctionNVX = cast[proc(device: VkDevice, function: VkCuFunctionNVX, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyCuFunctionNVX"))
-  vkCmdCuLaunchKernelNVX = cast[proc(commandBuffer: VkCommandBuffer, pLaunchInfo: ptr VkCuLaunchInfoNVX): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCuLaunchKernelNVX"))
+  vkCreateCuModuleNVX = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkCuModuleCreateInfoNVX,
+    pAllocator: ptr VkAllocationCallbacks,
+    pModule: ptr VkCuModuleNVX,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateCuModuleNVX"))
+  vkCreateCuFunctionNVX = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkCuFunctionCreateInfoNVX,
+    pAllocator: ptr VkAllocationCallbacks,
+    pFunction: ptr VkCuFunctionNVX,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateCuFunctionNVX"))
+  vkDestroyCuModuleNVX = cast[proc(
+    device: VkDevice, module: VkCuModuleNVX, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyCuModuleNVX"))
+  vkDestroyCuFunctionNVX = cast[proc(
+    device: VkDevice, function: VkCuFunctionNVX, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyCuFunctionNVX"))
+  vkCmdCuLaunchKernelNVX = cast[proc(
+    commandBuffer: VkCommandBuffer, pLaunchInfo: ptr VkCuLaunchInfoNVX
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCuLaunchKernelNVX"))
 
 proc loadVK_NV_representative_fragment_test*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
 
 # extension VK_EXT_validation_cache
 var
-  vkCreateValidationCacheEXT*: proc(device: VkDevice, pCreateInfo: ptr VkValidationCacheCreateInfoEXT, pAllocator: ptr VkAllocationCallbacks, pValidationCache: ptr VkValidationCacheEXT): VkResult {.stdcall.}
-  vkDestroyValidationCacheEXT*: proc(device: VkDevice, validationCache: VkValidationCacheEXT, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkMergeValidationCachesEXT*: proc(device: VkDevice, dstCache: VkValidationCacheEXT, srcCacheCount: uint32, pSrcCaches: ptr VkValidationCacheEXT): VkResult {.stdcall.}
-  vkGetValidationCacheDataEXT*: proc(device: VkDevice, validationCache: VkValidationCacheEXT, pDataSize: ptr csize_t, pData: pointer): VkResult {.stdcall.}
+  vkCreateValidationCacheEXT*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkValidationCacheCreateInfoEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+    pValidationCache: ptr VkValidationCacheEXT,
+  ): VkResult {.stdcall.}
+  vkDestroyValidationCacheEXT*: proc(
+    device: VkDevice,
+    validationCache: VkValidationCacheEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkMergeValidationCachesEXT*: proc(
+    device: VkDevice,
+    dstCache: VkValidationCacheEXT,
+    srcCacheCount: uint32,
+    pSrcCaches: ptr VkValidationCacheEXT,
+  ): VkResult {.stdcall.}
+  vkGetValidationCacheDataEXT*: proc(
+    device: VkDevice,
+    validationCache: VkValidationCacheEXT,
+    pDataSize: ptr csize_t,
+    pData: pointer,
+  ): VkResult {.stdcall.}
 proc loadVK_EXT_validation_cache*(instance: VkInstance) =
-  vkCreateValidationCacheEXT = cast[proc(device: VkDevice, pCreateInfo: ptr VkValidationCacheCreateInfoEXT, pAllocator: ptr VkAllocationCallbacks, pValidationCache: ptr VkValidationCacheEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateValidationCacheEXT"))
-  vkDestroyValidationCacheEXT = cast[proc(device: VkDevice, validationCache: VkValidationCacheEXT, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyValidationCacheEXT"))
-  vkMergeValidationCachesEXT = cast[proc(device: VkDevice, dstCache: VkValidationCacheEXT, srcCacheCount: uint32, pSrcCaches: ptr VkValidationCacheEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkMergeValidationCachesEXT"))
-  vkGetValidationCacheDataEXT = cast[proc(device: VkDevice, validationCache: VkValidationCacheEXT, pDataSize: ptr csize_t, pData: pointer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetValidationCacheDataEXT"))
+  vkCreateValidationCacheEXT = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkValidationCacheCreateInfoEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+    pValidationCache: ptr VkValidationCacheEXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateValidationCacheEXT"))
+  vkDestroyValidationCacheEXT = cast[proc(
+    device: VkDevice,
+    validationCache: VkValidationCacheEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyValidationCacheEXT"))
+  vkMergeValidationCachesEXT = cast[proc(
+    device: VkDevice,
+    dstCache: VkValidationCacheEXT,
+    srcCacheCount: uint32,
+    pSrcCaches: ptr VkValidationCacheEXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkMergeValidationCachesEXT"))
+  vkGetValidationCacheDataEXT = cast[proc(
+    device: VkDevice,
+    validationCache: VkValidationCacheEXT,
+    pDataSize: ptr csize_t,
+    pData: pointer,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetValidationCacheDataEXT"
+  ))
 
 proc loadVK_NV_inherited_viewport_scissor*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -11311,24 +16919,53 @@
 
 # extension VK_EXT_discard_rectangles
 var
-  vkCmdSetDiscardRectangleEXT*: proc(commandBuffer: VkCommandBuffer, firstDiscardRectangle: uint32, discardRectangleCount: uint32, pDiscardRectangles: ptr VkRect2D): void {.stdcall.}
-  vkCmdSetDiscardRectangleEnableEXT*: proc(commandBuffer: VkCommandBuffer, discardRectangleEnable: VkBool32): void {.stdcall.}
-  vkCmdSetDiscardRectangleModeEXT*: proc(commandBuffer: VkCommandBuffer, discardRectangleMode: VkDiscardRectangleModeEXT): void {.stdcall.}
+  vkCmdSetDiscardRectangleEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    firstDiscardRectangle: uint32,
+    discardRectangleCount: uint32,
+    pDiscardRectangles: ptr VkRect2D,
+  ): void {.stdcall.}
+  vkCmdSetDiscardRectangleEnableEXT*: proc(
+    commandBuffer: VkCommandBuffer, discardRectangleEnable: VkBool32
+  ): void {.stdcall.}
+  vkCmdSetDiscardRectangleModeEXT*: proc(
+    commandBuffer: VkCommandBuffer, discardRectangleMode: VkDiscardRectangleModeEXT
+  ): void {.stdcall.}
 proc loadVK_EXT_discard_rectangles*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdSetDiscardRectangleEXT = cast[proc(commandBuffer: VkCommandBuffer, firstDiscardRectangle: uint32, discardRectangleCount: uint32, pDiscardRectangles: ptr VkRect2D): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDiscardRectangleEXT"))
-  vkCmdSetDiscardRectangleEnableEXT = cast[proc(commandBuffer: VkCommandBuffer, discardRectangleEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDiscardRectangleEnableEXT"))
-  vkCmdSetDiscardRectangleModeEXT = cast[proc(commandBuffer: VkCommandBuffer, discardRectangleMode: VkDiscardRectangleModeEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDiscardRectangleModeEXT"))
+  vkCmdSetDiscardRectangleEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    firstDiscardRectangle: uint32,
+    discardRectangleCount: uint32,
+    pDiscardRectangles: ptr VkRect2D,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetDiscardRectangleEXT"))
+  vkCmdSetDiscardRectangleEnableEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, discardRectangleEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetDiscardRectangleEnableEXT"
+  ))
+  vkCmdSetDiscardRectangleModeEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, discardRectangleMode: VkDiscardRectangleModeEXT
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetDiscardRectangleModeEXT"
+  ))
 
 proc loadVK_EXT_shader_stencil_export*(instance: VkInstance) =
   discard
 
 # extension VK_NV_external_memory_rdma
-var
-  vkGetMemoryRemoteAddressNV*: proc(device: VkDevice, pMemoryGetRemoteAddressInfo: ptr VkMemoryGetRemoteAddressInfoNV, pAddress: ptr VkRemoteAddressNV): VkResult {.stdcall.}
+var vkGetMemoryRemoteAddressNV*: proc(
+  device: VkDevice,
+  pMemoryGetRemoteAddressInfo: ptr VkMemoryGetRemoteAddressInfoNV,
+  pAddress: ptr VkRemoteAddressNV,
+): VkResult {.stdcall.}
 proc loadVK_NV_external_memory_rdma*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkGetMemoryRemoteAddressNV = cast[proc(device: VkDevice, pMemoryGetRemoteAddressInfo: ptr VkMemoryGetRemoteAddressInfoNV, pAddress: ptr VkRemoteAddressNV): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetMemoryRemoteAddressNV"))
+  vkGetMemoryRemoteAddressNV = cast[proc(
+    device: VkDevice,
+    pMemoryGetRemoteAddressInfo: ptr VkMemoryGetRemoteAddressInfoNV,
+    pAddress: ptr VkRemoteAddressNV,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetMemoryRemoteAddressNV"))
 
 proc loadVK_ARM_shader_core_builtins*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -11343,11 +16980,20 @@
   discard
 
 # extension VK_EXT_headless_surface
-var
-  vkCreateHeadlessSurfaceEXT*: proc(instance: VkInstance, pCreateInfo: ptr VkHeadlessSurfaceCreateInfoEXT, pAllocator: ptr VkAllocationCallbacks, pSurface: ptr VkSurfaceKHR): VkResult {.stdcall.}
+var vkCreateHeadlessSurfaceEXT*: proc(
+  instance: VkInstance,
+  pCreateInfo: ptr VkHeadlessSurfaceCreateInfoEXT,
+  pAllocator: ptr VkAllocationCallbacks,
+  pSurface: ptr VkSurfaceKHR,
+): VkResult {.stdcall.}
 proc loadVK_EXT_headless_surface*(instance: VkInstance) =
   loadVK_KHR_surface(instance)
-  vkCreateHeadlessSurfaceEXT = cast[proc(instance: VkInstance, pCreateInfo: ptr VkHeadlessSurfaceCreateInfoEXT, pAllocator: ptr VkAllocationCallbacks, pSurface: ptr VkSurfaceKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateHeadlessSurfaceEXT"))
+  vkCreateHeadlessSurfaceEXT = cast[proc(
+    instance: VkInstance,
+    pCreateInfo: ptr VkHeadlessSurfaceCreateInfoEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSurface: ptr VkSurfaceKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateHeadlessSurfaceEXT"))
 
 proc loadVK_NV_shader_sm_builtins*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -11357,34 +17003,98 @@
 
 # extension VK_NV_copy_memory_indirect
 var
-  vkCmdCopyMemoryIndirectNV*: proc(commandBuffer: VkCommandBuffer, copyBufferAddress: VkDeviceAddress, copyCount: uint32, stride: uint32): void {.stdcall.}
-  vkCmdCopyMemoryToImageIndirectNV*: proc(commandBuffer: VkCommandBuffer, copyBufferAddress: VkDeviceAddress, copyCount: uint32, stride: uint32, dstImage: VkImage, dstImageLayout: VkImageLayout, pImageSubresources: ptr VkImageSubresourceLayers): void {.stdcall.}
+  vkCmdCopyMemoryIndirectNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    copyBufferAddress: VkDeviceAddress,
+    copyCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}
+  vkCmdCopyMemoryToImageIndirectNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    copyBufferAddress: VkDeviceAddress,
+    copyCount: uint32,
+    stride: uint32,
+    dstImage: VkImage,
+    dstImageLayout: VkImageLayout,
+    pImageSubresources: ptr VkImageSubresourceLayers,
+  ): void {.stdcall.}
 proc loadVK_NV_copy_memory_indirect*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
   loadVK_VERSION_1_2(instance)
-  vkCmdCopyMemoryIndirectNV = cast[proc(commandBuffer: VkCommandBuffer, copyBufferAddress: VkDeviceAddress, copyCount: uint32, stride: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyMemoryIndirectNV"))
-  vkCmdCopyMemoryToImageIndirectNV = cast[proc(commandBuffer: VkCommandBuffer, copyBufferAddress: VkDeviceAddress, copyCount: uint32, stride: uint32, dstImage: VkImage, dstImageLayout: VkImageLayout, pImageSubresources: ptr VkImageSubresourceLayers): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyMemoryToImageIndirectNV"))
+  vkCmdCopyMemoryIndirectNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    copyBufferAddress: VkDeviceAddress,
+    copyCount: uint32,
+    stride: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyMemoryIndirectNV"))
+  vkCmdCopyMemoryToImageIndirectNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    copyBufferAddress: VkDeviceAddress,
+    copyCount: uint32,
+    stride: uint32,
+    dstImage: VkImage,
+    dstImageLayout: VkImageLayout,
+    pImageSubresources: ptr VkImageSubresourceLayers,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdCopyMemoryToImageIndirectNV"
+  ))
 
 proc loadVK_EXT_astc_decode_mode*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
 
 # extension VK_KHR_get_surface_capabilities2
 var
-  vkGetPhysicalDeviceSurfaceCapabilities2KHR*: proc(physicalDevice: VkPhysicalDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR, pSurfaceCapabilities: ptr VkSurfaceCapabilities2KHR): VkResult {.stdcall.}
-  vkGetPhysicalDeviceSurfaceFormats2KHR*: proc(physicalDevice: VkPhysicalDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR, pSurfaceFormatCount: ptr uint32, pSurfaceFormats: ptr VkSurfaceFormat2KHR): VkResult {.stdcall.}
+  vkGetPhysicalDeviceSurfaceCapabilities2KHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR,
+    pSurfaceCapabilities: ptr VkSurfaceCapabilities2KHR,
+  ): VkResult {.stdcall.}
+  vkGetPhysicalDeviceSurfaceFormats2KHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR,
+    pSurfaceFormatCount: ptr uint32,
+    pSurfaceFormats: ptr VkSurfaceFormat2KHR,
+  ): VkResult {.stdcall.}
 proc loadVK_KHR_get_surface_capabilities2*(instance: VkInstance) =
   loadVK_KHR_surface(instance)
-  vkGetPhysicalDeviceSurfaceCapabilities2KHR = cast[proc(physicalDevice: VkPhysicalDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR, pSurfaceCapabilities: ptr VkSurfaceCapabilities2KHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
-  vkGetPhysicalDeviceSurfaceFormats2KHR = cast[proc(physicalDevice: VkPhysicalDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR, pSurfaceFormatCount: ptr uint32, pSurfaceFormats: ptr VkSurfaceFormat2KHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
+  vkGetPhysicalDeviceSurfaceCapabilities2KHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR,
+    pSurfaceCapabilities: ptr VkSurfaceCapabilities2KHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"
+  ))
+  vkGetPhysicalDeviceSurfaceFormats2KHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR,
+    pSurfaceFormatCount: ptr uint32,
+    pSurfaceFormats: ptr VkSurfaceFormat2KHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceSurfaceFormats2KHR"
+  ))
 
 # extension VK_HUAWEI_cluster_culling_shader
 var
-  vkCmdDrawClusterHUAWEI*: proc(commandBuffer: VkCommandBuffer, groupCountX: uint32, groupCountY: uint32, groupCountZ: uint32): void {.stdcall.}
-  vkCmdDrawClusterIndirectHUAWEI*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize): void {.stdcall.}
+  vkCmdDrawClusterHUAWEI*: proc(
+    commandBuffer: VkCommandBuffer,
+    groupCountX: uint32,
+    groupCountY: uint32,
+    groupCountZ: uint32,
+  ): void {.stdcall.}
+  vkCmdDrawClusterIndirectHUAWEI*: proc(
+    commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize
+  ): void {.stdcall.}
 proc loadVK_HUAWEI_cluster_culling_shader*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkCmdDrawClusterHUAWEI = cast[proc(commandBuffer: VkCommandBuffer, groupCountX: uint32, groupCountY: uint32, groupCountZ: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawClusterHUAWEI"))
-  vkCmdDrawClusterIndirectHUAWEI = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawClusterIndirectHUAWEI"))
+  vkCmdDrawClusterHUAWEI = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    groupCountX: uint32,
+    groupCountY: uint32,
+    groupCountZ: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawClusterHUAWEI"))
+  vkCmdDrawClusterIndirectHUAWEI = cast[proc(
+    commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdDrawClusterIndirectHUAWEI"))
 
 proc loadVK_KHR_surface_protected_capabilities*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -11404,53 +17114,146 @@
   loadVK_EXT_shader_atomic_float(instance)
 
 # extension VK_EXT_pageable_device_local_memory
-var
-  vkSetDeviceMemoryPriorityEXT*: proc(device: VkDevice, memory: VkDeviceMemory, priority: float32): void {.stdcall.}
+var vkSetDeviceMemoryPriorityEXT*:
+  proc(device: VkDevice, memory: VkDeviceMemory, priority: float32): void {.stdcall.}
 proc loadVK_EXT_pageable_device_local_memory*(instance: VkInstance) =
   loadVK_EXT_memory_priority(instance)
-  vkSetDeviceMemoryPriorityEXT = cast[proc(device: VkDevice, memory: VkDeviceMemory, priority: float32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSetDeviceMemoryPriorityEXT"))
+  vkSetDeviceMemoryPriorityEXT = cast[proc(
+    device: VkDevice, memory: VkDeviceMemory, priority: float32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSetDeviceMemoryPriorityEXT"))
 
 # extension VK_KHR_swapchain
 var
-  vkCreateSwapchainKHR*: proc(device: VkDevice, pCreateInfo: ptr VkSwapchainCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pSwapchain: ptr VkSwapchainKHR): VkResult {.stdcall.}
-  vkDestroySwapchainKHR*: proc(device: VkDevice, swapchain: VkSwapchainKHR, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkGetSwapchainImagesKHR*: proc(device: VkDevice, swapchain: VkSwapchainKHR, pSwapchainImageCount: ptr uint32, pSwapchainImages: ptr VkImage): VkResult {.stdcall.}
-  vkAcquireNextImageKHR*: proc(device: VkDevice, swapchain: VkSwapchainKHR, timeout: uint64, semaphore: VkSemaphore, fence: VkFence, pImageIndex: ptr uint32): VkResult {.stdcall.}
-  vkQueuePresentKHR*: proc(queue: VkQueue, pPresentInfo: ptr VkPresentInfoKHR): VkResult {.stdcall.}
-  vkGetDeviceGroupPresentCapabilitiesKHR*: proc(device: VkDevice, pDeviceGroupPresentCapabilities: ptr VkDeviceGroupPresentCapabilitiesKHR): VkResult {.stdcall.}
-  vkGetDeviceGroupSurfacePresentModesKHR*: proc(device: VkDevice, surface: VkSurfaceKHR, pModes: ptr VkDeviceGroupPresentModeFlagsKHR): VkResult {.stdcall.}
-  vkGetPhysicalDevicePresentRectanglesKHR*: proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pRectCount: ptr uint32, pRects: ptr VkRect2D): VkResult {.stdcall.}
-  vkAcquireNextImage2KHR*: proc(device: VkDevice, pAcquireInfo: ptr VkAcquireNextImageInfoKHR, pImageIndex: ptr uint32): VkResult {.stdcall.}
+  vkCreateSwapchainKHR*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkSwapchainCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSwapchain: ptr VkSwapchainKHR,
+  ): VkResult {.stdcall.}
+  vkDestroySwapchainKHR*: proc(
+    device: VkDevice, swapchain: VkSwapchainKHR, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkGetSwapchainImagesKHR*: proc(
+    device: VkDevice,
+    swapchain: VkSwapchainKHR,
+    pSwapchainImageCount: ptr uint32,
+    pSwapchainImages: ptr VkImage,
+  ): VkResult {.stdcall.}
+  vkAcquireNextImageKHR*: proc(
+    device: VkDevice,
+    swapchain: VkSwapchainKHR,
+    timeout: uint64,
+    semaphore: VkSemaphore,
+    fence: VkFence,
+    pImageIndex: ptr uint32,
+  ): VkResult {.stdcall.}
+  vkQueuePresentKHR*:
+    proc(queue: VkQueue, pPresentInfo: ptr VkPresentInfoKHR): VkResult {.stdcall.}
+  vkGetDeviceGroupPresentCapabilitiesKHR*: proc(
+    device: VkDevice,
+    pDeviceGroupPresentCapabilities: ptr VkDeviceGroupPresentCapabilitiesKHR,
+  ): VkResult {.stdcall.}
+  vkGetDeviceGroupSurfacePresentModesKHR*: proc(
+    device: VkDevice,
+    surface: VkSurfaceKHR,
+    pModes: ptr VkDeviceGroupPresentModeFlagsKHR,
+  ): VkResult {.stdcall.}
+  vkGetPhysicalDevicePresentRectanglesKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    surface: VkSurfaceKHR,
+    pRectCount: ptr uint32,
+    pRects: ptr VkRect2D,
+  ): VkResult {.stdcall.}
+  vkAcquireNextImage2KHR*: proc(
+    device: VkDevice,
+    pAcquireInfo: ptr VkAcquireNextImageInfoKHR,
+    pImageIndex: ptr uint32,
+  ): VkResult {.stdcall.}
 proc loadVK_KHR_swapchain*(instance: VkInstance) =
   loadVK_KHR_surface(instance)
-  vkCreateSwapchainKHR = cast[proc(device: VkDevice, pCreateInfo: ptr VkSwapchainCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pSwapchain: ptr VkSwapchainKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateSwapchainKHR"))
-  vkDestroySwapchainKHR = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroySwapchainKHR"))
-  vkGetSwapchainImagesKHR = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, pSwapchainImageCount: ptr uint32, pSwapchainImages: ptr VkImage): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetSwapchainImagesKHR"))
-  vkAcquireNextImageKHR = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, timeout: uint64, semaphore: VkSemaphore, fence: VkFence, pImageIndex: ptr uint32): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAcquireNextImageKHR"))
-  vkQueuePresentKHR = cast[proc(queue: VkQueue, pPresentInfo: ptr VkPresentInfoKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkQueuePresentKHR"))
-  vkGetDeviceGroupPresentCapabilitiesKHR = cast[proc(device: VkDevice, pDeviceGroupPresentCapabilities: ptr VkDeviceGroupPresentCapabilitiesKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceGroupPresentCapabilitiesKHR"))
-  vkGetDeviceGroupSurfacePresentModesKHR = cast[proc(device: VkDevice, surface: VkSurfaceKHR, pModes: ptr VkDeviceGroupPresentModeFlagsKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceGroupSurfacePresentModesKHR"))
-  vkGetPhysicalDevicePresentRectanglesKHR = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pRectCount: ptr uint32, pRects: ptr VkRect2D): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDevicePresentRectanglesKHR"))
-  vkAcquireNextImage2KHR = cast[proc(device: VkDevice, pAcquireInfo: ptr VkAcquireNextImageInfoKHR, pImageIndex: ptr uint32): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAcquireNextImage2KHR"))
+  vkCreateSwapchainKHR = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkSwapchainCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSwapchain: ptr VkSwapchainKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateSwapchainKHR"))
+  vkDestroySwapchainKHR = cast[proc(
+    device: VkDevice, swapchain: VkSwapchainKHR, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroySwapchainKHR"))
+  vkGetSwapchainImagesKHR = cast[proc(
+    device: VkDevice,
+    swapchain: VkSwapchainKHR,
+    pSwapchainImageCount: ptr uint32,
+    pSwapchainImages: ptr VkImage,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetSwapchainImagesKHR"))
+  vkAcquireNextImageKHR = cast[proc(
+    device: VkDevice,
+    swapchain: VkSwapchainKHR,
+    timeout: uint64,
+    semaphore: VkSemaphore,
+    fence: VkFence,
+    pImageIndex: ptr uint32,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAcquireNextImageKHR"))
+  vkQueuePresentKHR = cast[proc(
+    queue: VkQueue, pPresentInfo: ptr VkPresentInfoKHR
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkQueuePresentKHR"))
+  vkGetDeviceGroupPresentCapabilitiesKHR = cast[proc(
+    device: VkDevice,
+    pDeviceGroupPresentCapabilities: ptr VkDeviceGroupPresentCapabilitiesKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDeviceGroupPresentCapabilitiesKHR"
+  ))
+  vkGetDeviceGroupSurfacePresentModesKHR = cast[proc(
+    device: VkDevice,
+    surface: VkSurfaceKHR,
+    pModes: ptr VkDeviceGroupPresentModeFlagsKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDeviceGroupSurfacePresentModesKHR"
+  ))
+  vkGetPhysicalDevicePresentRectanglesKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    surface: VkSurfaceKHR,
+    pRectCount: ptr uint32,
+    pRects: ptr VkRect2D,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDevicePresentRectanglesKHR"
+  ))
+  vkAcquireNextImage2KHR = cast[proc(
+    device: VkDevice,
+    pAcquireInfo: ptr VkAcquireNextImageInfoKHR,
+    pImageIndex: ptr uint32,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAcquireNextImage2KHR"))
 
 proc loadVK_EXT_fragment_density_map2*(instance: VkInstance) =
   loadVK_EXT_fragment_density_map(instance)
 
 # extension VK_NV_fragment_shading_rate_enums
-var
-  vkCmdSetFragmentShadingRateEnumNV*: proc(commandBuffer: VkCommandBuffer, shadingRate: VkFragmentShadingRateNV, combinerOps: array[2, VkFragmentShadingRateCombinerOpKHR]): void {.stdcall.}
+var vkCmdSetFragmentShadingRateEnumNV*: proc(
+  commandBuffer: VkCommandBuffer,
+  shadingRate: VkFragmentShadingRateNV,
+  combinerOps: array[2, VkFragmentShadingRateCombinerOpKHR],
+): void {.stdcall.}
 proc loadVK_NV_fragment_shading_rate_enums*(instance: VkInstance) =
   loadVK_KHR_fragment_shading_rate(instance)
-  vkCmdSetFragmentShadingRateEnumNV = cast[proc(commandBuffer: VkCommandBuffer, shadingRate: VkFragmentShadingRateNV, combinerOps: array[2, VkFragmentShadingRateCombinerOpKHR]): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetFragmentShadingRateEnumNV"))
+  vkCmdSetFragmentShadingRateEnumNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    shadingRate: VkFragmentShadingRateNV,
+    combinerOps: array[2, VkFragmentShadingRateCombinerOpKHR],
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetFragmentShadingRateEnumNV"
+  ))
 
 # extension VK_AMD_display_native_hdr
-var
-  vkSetLocalDimmingAMD*: proc(device: VkDevice, swapChain: VkSwapchainKHR, localDimmingEnable: VkBool32): void {.stdcall.}
+var vkSetLocalDimmingAMD*: proc(
+  device: VkDevice, swapChain: VkSwapchainKHR, localDimmingEnable: VkBool32
+): void {.stdcall.}
 proc loadVK_AMD_display_native_hdr*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
   loadVK_KHR_get_surface_capabilities2(instance)
   loadVK_KHR_swapchain(instance)
-  vkSetLocalDimmingAMD = cast[proc(device: VkDevice, swapChain: VkSwapchainKHR, localDimmingEnable: VkBool32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSetLocalDimmingAMD"))
+  vkSetLocalDimmingAMD = cast[proc(
+    device: VkDevice, swapChain: VkSwapchainKHR, localDimmingEnable: VkBool32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSetLocalDimmingAMD"))
 
 proc loadVK_NV_present_barrier*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
@@ -11468,52 +17271,254 @@
 
 # extension VK_KHR_acceleration_structure
 var
-  vkCreateAccelerationStructureKHR*: proc(device: VkDevice, pCreateInfo: ptr VkAccelerationStructureCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pAccelerationStructure: ptr VkAccelerationStructureKHR): VkResult {.stdcall.}
-  vkDestroyAccelerationStructureKHR*: proc(device: VkDevice, accelerationStructure: VkAccelerationStructureKHR, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkCmdBuildAccelerationStructuresKHR*: proc(commandBuffer: VkCommandBuffer, infoCount: uint32, pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR, ppBuildRangeInfos: ptr ptr VkAccelerationStructureBuildRangeInfoKHR): void {.stdcall.}
-  vkCmdBuildAccelerationStructuresIndirectKHR*: proc(commandBuffer: VkCommandBuffer, infoCount: uint32, pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR, pIndirectDeviceAddresses: ptr VkDeviceAddress, pIndirectStrides: ptr uint32, ppMaxPrimitiveCounts: ptr ptr uint32): void {.stdcall.}
-  vkBuildAccelerationStructuresKHR*: proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, infoCount: uint32, pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR, ppBuildRangeInfos: ptr ptr VkAccelerationStructureBuildRangeInfoKHR): VkResult {.stdcall.}
-  vkCopyAccelerationStructureKHR*: proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: ptr VkCopyAccelerationStructureInfoKHR): VkResult {.stdcall.}
-  vkCopyAccelerationStructureToMemoryKHR*: proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: ptr VkCopyAccelerationStructureToMemoryInfoKHR): VkResult {.stdcall.}
-  vkCopyMemoryToAccelerationStructureKHR*: proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: ptr VkCopyMemoryToAccelerationStructureInfoKHR): VkResult {.stdcall.}
-  vkWriteAccelerationStructuresPropertiesKHR*: proc(device: VkDevice, accelerationStructureCount: uint32, pAccelerationStructures: ptr VkAccelerationStructureKHR, queryType: VkQueryType, dataSize: csize_t, pData: pointer, stride: csize_t): VkResult {.stdcall.}
-  vkCmdCopyAccelerationStructureKHR*: proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyAccelerationStructureInfoKHR): void {.stdcall.}
-  vkCmdCopyAccelerationStructureToMemoryKHR*: proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyAccelerationStructureToMemoryInfoKHR): void {.stdcall.}
-  vkCmdCopyMemoryToAccelerationStructureKHR*: proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMemoryToAccelerationStructureInfoKHR): void {.stdcall.}
-  vkGetAccelerationStructureDeviceAddressKHR*: proc(device: VkDevice, pInfo: ptr VkAccelerationStructureDeviceAddressInfoKHR): VkDeviceAddress {.stdcall.}
-  vkCmdWriteAccelerationStructuresPropertiesKHR*: proc(commandBuffer: VkCommandBuffer, accelerationStructureCount: uint32, pAccelerationStructures: ptr VkAccelerationStructureKHR, queryType: VkQueryType, queryPool: VkQueryPool, firstQuery: uint32): void {.stdcall.}
-  vkGetDeviceAccelerationStructureCompatibilityKHR*: proc(device: VkDevice, pVersionInfo: ptr VkAccelerationStructureVersionInfoKHR, pCompatibility: ptr VkAccelerationStructureCompatibilityKHR): void {.stdcall.}
-  vkGetAccelerationStructureBuildSizesKHR*: proc(device: VkDevice, buildType: VkAccelerationStructureBuildTypeKHR, pBuildInfo: ptr VkAccelerationStructureBuildGeometryInfoKHR, pMaxPrimitiveCounts: ptr uint32, pSizeInfo: ptr VkAccelerationStructureBuildSizesInfoKHR): void {.stdcall.}
+  vkCreateAccelerationStructureKHR*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkAccelerationStructureCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pAccelerationStructure: ptr VkAccelerationStructureKHR,
+  ): VkResult {.stdcall.}
+  vkDestroyAccelerationStructureKHR*: proc(
+    device: VkDevice,
+    accelerationStructure: VkAccelerationStructureKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkCmdBuildAccelerationStructuresKHR*: proc(
+    commandBuffer: VkCommandBuffer,
+    infoCount: uint32,
+    pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR,
+    ppBuildRangeInfos: ptr ptr VkAccelerationStructureBuildRangeInfoKHR,
+  ): void {.stdcall.}
+  vkCmdBuildAccelerationStructuresIndirectKHR*: proc(
+    commandBuffer: VkCommandBuffer,
+    infoCount: uint32,
+    pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR,
+    pIndirectDeviceAddresses: ptr VkDeviceAddress,
+    pIndirectStrides: ptr uint32,
+    ppMaxPrimitiveCounts: ptr ptr uint32,
+  ): void {.stdcall.}
+  vkBuildAccelerationStructuresKHR*: proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    infoCount: uint32,
+    pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR,
+    ppBuildRangeInfos: ptr ptr VkAccelerationStructureBuildRangeInfoKHR,
+  ): VkResult {.stdcall.}
+  vkCopyAccelerationStructureKHR*: proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    pInfo: ptr VkCopyAccelerationStructureInfoKHR,
+  ): VkResult {.stdcall.}
+  vkCopyAccelerationStructureToMemoryKHR*: proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    pInfo: ptr VkCopyAccelerationStructureToMemoryInfoKHR,
+  ): VkResult {.stdcall.}
+  vkCopyMemoryToAccelerationStructureKHR*: proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    pInfo: ptr VkCopyMemoryToAccelerationStructureInfoKHR,
+  ): VkResult {.stdcall.}
+  vkWriteAccelerationStructuresPropertiesKHR*: proc(
+    device: VkDevice,
+    accelerationStructureCount: uint32,
+    pAccelerationStructures: ptr VkAccelerationStructureKHR,
+    queryType: VkQueryType,
+    dataSize: csize_t,
+    pData: pointer,
+    stride: csize_t,
+  ): VkResult {.stdcall.}
+  vkCmdCopyAccelerationStructureKHR*: proc(
+    commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyAccelerationStructureInfoKHR
+  ): void {.stdcall.}
+  vkCmdCopyAccelerationStructureToMemoryKHR*: proc(
+    commandBuffer: VkCommandBuffer,
+    pInfo: ptr VkCopyAccelerationStructureToMemoryInfoKHR,
+  ): void {.stdcall.}
+  vkCmdCopyMemoryToAccelerationStructureKHR*: proc(
+    commandBuffer: VkCommandBuffer,
+    pInfo: ptr VkCopyMemoryToAccelerationStructureInfoKHR,
+  ): void {.stdcall.}
+  vkGetAccelerationStructureDeviceAddressKHR*: proc(
+    device: VkDevice, pInfo: ptr VkAccelerationStructureDeviceAddressInfoKHR
+  ): VkDeviceAddress {.stdcall.}
+  vkCmdWriteAccelerationStructuresPropertiesKHR*: proc(
+    commandBuffer: VkCommandBuffer,
+    accelerationStructureCount: uint32,
+    pAccelerationStructures: ptr VkAccelerationStructureKHR,
+    queryType: VkQueryType,
+    queryPool: VkQueryPool,
+    firstQuery: uint32,
+  ): void {.stdcall.}
+  vkGetDeviceAccelerationStructureCompatibilityKHR*: proc(
+    device: VkDevice,
+    pVersionInfo: ptr VkAccelerationStructureVersionInfoKHR,
+    pCompatibility: ptr VkAccelerationStructureCompatibilityKHR,
+  ): void {.stdcall.}
+  vkGetAccelerationStructureBuildSizesKHR*: proc(
+    device: VkDevice,
+    buildType: VkAccelerationStructureBuildTypeKHR,
+    pBuildInfo: ptr VkAccelerationStructureBuildGeometryInfoKHR,
+    pMaxPrimitiveCounts: ptr uint32,
+    pSizeInfo: ptr VkAccelerationStructureBuildSizesInfoKHR,
+  ): void {.stdcall.}
 proc loadVK_KHR_acceleration_structure*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
   loadVK_VERSION_1_2(instance)
   loadVK_VERSION_1_2(instance)
   loadVK_KHR_deferred_host_operations(instance)
-  vkCreateAccelerationStructureKHR = cast[proc(device: VkDevice, pCreateInfo: ptr VkAccelerationStructureCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pAccelerationStructure: ptr VkAccelerationStructureKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateAccelerationStructureKHR"))
-  vkDestroyAccelerationStructureKHR = cast[proc(device: VkDevice, accelerationStructure: VkAccelerationStructureKHR, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyAccelerationStructureKHR"))
-  vkCmdBuildAccelerationStructuresKHR = cast[proc(commandBuffer: VkCommandBuffer, infoCount: uint32, pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR, ppBuildRangeInfos: ptr ptr VkAccelerationStructureBuildRangeInfoKHR): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBuildAccelerationStructuresKHR"))
-  vkCmdBuildAccelerationStructuresIndirectKHR = cast[proc(commandBuffer: VkCommandBuffer, infoCount: uint32, pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR, pIndirectDeviceAddresses: ptr VkDeviceAddress, pIndirectStrides: ptr uint32, ppMaxPrimitiveCounts: ptr ptr uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBuildAccelerationStructuresIndirectKHR"))
-  vkBuildAccelerationStructuresKHR = cast[proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, infoCount: uint32, pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR, ppBuildRangeInfos: ptr ptr VkAccelerationStructureBuildRangeInfoKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBuildAccelerationStructuresKHR"))
-  vkCopyAccelerationStructureKHR = cast[proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: ptr VkCopyAccelerationStructureInfoKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCopyAccelerationStructureKHR"))
-  vkCopyAccelerationStructureToMemoryKHR = cast[proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: ptr VkCopyAccelerationStructureToMemoryInfoKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCopyAccelerationStructureToMemoryKHR"))
-  vkCopyMemoryToAccelerationStructureKHR = cast[proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: ptr VkCopyMemoryToAccelerationStructureInfoKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCopyMemoryToAccelerationStructureKHR"))
-  vkWriteAccelerationStructuresPropertiesKHR = cast[proc(device: VkDevice, accelerationStructureCount: uint32, pAccelerationStructures: ptr VkAccelerationStructureKHR, queryType: VkQueryType, dataSize: csize_t, pData: pointer, stride: csize_t): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkWriteAccelerationStructuresPropertiesKHR"))
-  vkCmdCopyAccelerationStructureKHR = cast[proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyAccelerationStructureInfoKHR): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyAccelerationStructureKHR"))
-  vkCmdCopyAccelerationStructureToMemoryKHR = cast[proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyAccelerationStructureToMemoryInfoKHR): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyAccelerationStructureToMemoryKHR"))
-  vkCmdCopyMemoryToAccelerationStructureKHR = cast[proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMemoryToAccelerationStructureInfoKHR): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyMemoryToAccelerationStructureKHR"))
-  vkGetAccelerationStructureDeviceAddressKHR = cast[proc(device: VkDevice, pInfo: ptr VkAccelerationStructureDeviceAddressInfoKHR): VkDeviceAddress {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetAccelerationStructureDeviceAddressKHR"))
-  vkCmdWriteAccelerationStructuresPropertiesKHR = cast[proc(commandBuffer: VkCommandBuffer, accelerationStructureCount: uint32, pAccelerationStructures: ptr VkAccelerationStructureKHR, queryType: VkQueryType, queryPool: VkQueryPool, firstQuery: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
-  vkGetDeviceAccelerationStructureCompatibilityKHR = cast[proc(device: VkDevice, pVersionInfo: ptr VkAccelerationStructureVersionInfoKHR, pCompatibility: ptr VkAccelerationStructureCompatibilityKHR): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
-  vkGetAccelerationStructureBuildSizesKHR = cast[proc(device: VkDevice, buildType: VkAccelerationStructureBuildTypeKHR, pBuildInfo: ptr VkAccelerationStructureBuildGeometryInfoKHR, pMaxPrimitiveCounts: ptr uint32, pSizeInfo: ptr VkAccelerationStructureBuildSizesInfoKHR): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetAccelerationStructureBuildSizesKHR"))
+  vkCreateAccelerationStructureKHR = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkAccelerationStructureCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pAccelerationStructure: ptr VkAccelerationStructureKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCreateAccelerationStructureKHR"
+  ))
+  vkDestroyAccelerationStructureKHR = cast[proc(
+    device: VkDevice,
+    accelerationStructure: VkAccelerationStructureKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkDestroyAccelerationStructureKHR"
+  ))
+  vkCmdBuildAccelerationStructuresKHR = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    infoCount: uint32,
+    pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR,
+    ppBuildRangeInfos: ptr ptr VkAccelerationStructureBuildRangeInfoKHR,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdBuildAccelerationStructuresKHR"
+  ))
+  vkCmdBuildAccelerationStructuresIndirectKHR = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    infoCount: uint32,
+    pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR,
+    pIndirectDeviceAddresses: ptr VkDeviceAddress,
+    pIndirectStrides: ptr uint32,
+    ppMaxPrimitiveCounts: ptr ptr uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdBuildAccelerationStructuresIndirectKHR"
+  ))
+  vkBuildAccelerationStructuresKHR = cast[proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    infoCount: uint32,
+    pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR,
+    ppBuildRangeInfos: ptr ptr VkAccelerationStructureBuildRangeInfoKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkBuildAccelerationStructuresKHR"
+  ))
+  vkCopyAccelerationStructureKHR = cast[proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    pInfo: ptr VkCopyAccelerationStructureInfoKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCopyAccelerationStructureKHR"
+  ))
+  vkCopyAccelerationStructureToMemoryKHR = cast[proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    pInfo: ptr VkCopyAccelerationStructureToMemoryInfoKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCopyAccelerationStructureToMemoryKHR"
+  ))
+  vkCopyMemoryToAccelerationStructureKHR = cast[proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    pInfo: ptr VkCopyMemoryToAccelerationStructureInfoKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCopyMemoryToAccelerationStructureKHR"
+  ))
+  vkWriteAccelerationStructuresPropertiesKHR = cast[proc(
+    device: VkDevice,
+    accelerationStructureCount: uint32,
+    pAccelerationStructures: ptr VkAccelerationStructureKHR,
+    queryType: VkQueryType,
+    dataSize: csize_t,
+    pData: pointer,
+    stride: csize_t,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkWriteAccelerationStructuresPropertiesKHR"
+  ))
+  vkCmdCopyAccelerationStructureKHR = cast[proc(
+    commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyAccelerationStructureInfoKHR
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdCopyAccelerationStructureKHR"
+  ))
+  vkCmdCopyAccelerationStructureToMemoryKHR = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pInfo: ptr VkCopyAccelerationStructureToMemoryInfoKHR,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdCopyAccelerationStructureToMemoryKHR"
+  ))
+  vkCmdCopyMemoryToAccelerationStructureKHR = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pInfo: ptr VkCopyMemoryToAccelerationStructureInfoKHR,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdCopyMemoryToAccelerationStructureKHR"
+  ))
+  vkGetAccelerationStructureDeviceAddressKHR = cast[proc(
+    device: VkDevice, pInfo: ptr VkAccelerationStructureDeviceAddressInfoKHR
+  ): VkDeviceAddress {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetAccelerationStructureDeviceAddressKHR"
+  ))
+  vkCmdWriteAccelerationStructuresPropertiesKHR = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    accelerationStructureCount: uint32,
+    pAccelerationStructures: ptr VkAccelerationStructureKHR,
+    queryType: VkQueryType,
+    queryPool: VkQueryPool,
+    firstQuery: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdWriteAccelerationStructuresPropertiesKHR"
+  ))
+  vkGetDeviceAccelerationStructureCompatibilityKHR = cast[proc(
+    device: VkDevice,
+    pVersionInfo: ptr VkAccelerationStructureVersionInfoKHR,
+    pCompatibility: ptr VkAccelerationStructureCompatibilityKHR,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDeviceAccelerationStructureCompatibilityKHR"
+  ))
+  vkGetAccelerationStructureBuildSizesKHR = cast[proc(
+    device: VkDevice,
+    buildType: VkAccelerationStructureBuildTypeKHR,
+    pBuildInfo: ptr VkAccelerationStructureBuildGeometryInfoKHR,
+    pMaxPrimitiveCounts: ptr uint32,
+    pSizeInfo: ptr VkAccelerationStructureBuildSizesInfoKHR,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetAccelerationStructureBuildSizesKHR"
+  ))
 
 # extension VK_GOOGLE_display_timing
 var
-  vkGetRefreshCycleDurationGOOGLE*: proc(device: VkDevice, swapchain: VkSwapchainKHR, pDisplayTimingProperties: ptr VkRefreshCycleDurationGOOGLE): VkResult {.stdcall.}
-  vkGetPastPresentationTimingGOOGLE*: proc(device: VkDevice, swapchain: VkSwapchainKHR, pPresentationTimingCount: ptr uint32, pPresentationTimings: ptr VkPastPresentationTimingGOOGLE): VkResult {.stdcall.}
+  vkGetRefreshCycleDurationGOOGLE*: proc(
+    device: VkDevice,
+    swapchain: VkSwapchainKHR,
+    pDisplayTimingProperties: ptr VkRefreshCycleDurationGOOGLE,
+  ): VkResult {.stdcall.}
+  vkGetPastPresentationTimingGOOGLE*: proc(
+    device: VkDevice,
+    swapchain: VkSwapchainKHR,
+    pPresentationTimingCount: ptr uint32,
+    pPresentationTimings: ptr VkPastPresentationTimingGOOGLE,
+  ): VkResult {.stdcall.}
 proc loadVK_GOOGLE_display_timing*(instance: VkInstance) =
   loadVK_KHR_swapchain(instance)
-  vkGetRefreshCycleDurationGOOGLE = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, pDisplayTimingProperties: ptr VkRefreshCycleDurationGOOGLE): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetRefreshCycleDurationGOOGLE"))
-  vkGetPastPresentationTimingGOOGLE = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, pPresentationTimingCount: ptr uint32, pPresentationTimings: ptr VkPastPresentationTimingGOOGLE): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPastPresentationTimingGOOGLE"))
+  vkGetRefreshCycleDurationGOOGLE = cast[proc(
+    device: VkDevice,
+    swapchain: VkSwapchainKHR,
+    pDisplayTimingProperties: ptr VkRefreshCycleDurationGOOGLE,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetRefreshCycleDurationGOOGLE"
+  ))
+  vkGetPastPresentationTimingGOOGLE = cast[proc(
+    device: VkDevice,
+    swapchain: VkSwapchainKHR,
+    pPresentationTimingCount: ptr uint32,
+    pPresentationTimings: ptr VkPastPresentationTimingGOOGLE,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPastPresentationTimingGOOGLE"
+  ))
 
 proc loadVK_QCOM_render_pass_transform*(instance: VkInstance) =
   loadVK_KHR_swapchain(instance)
@@ -11527,38 +17532,125 @@
 
 # extension VK_KHR_display
 var
-  vkGetPhysicalDeviceDisplayPropertiesKHR*: proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32, pProperties: ptr VkDisplayPropertiesKHR): VkResult {.stdcall.}
-  vkGetPhysicalDeviceDisplayPlanePropertiesKHR*: proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32, pProperties: ptr VkDisplayPlanePropertiesKHR): VkResult {.stdcall.}
-  vkGetDisplayPlaneSupportedDisplaysKHR*: proc(physicalDevice: VkPhysicalDevice, planeIndex: uint32, pDisplayCount: ptr uint32, pDisplays: ptr VkDisplayKHR): VkResult {.stdcall.}
-  vkGetDisplayModePropertiesKHR*: proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR, pPropertyCount: ptr uint32, pProperties: ptr VkDisplayModePropertiesKHR): VkResult {.stdcall.}
-  vkCreateDisplayModeKHR*: proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR, pCreateInfo: ptr VkDisplayModeCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pMode: ptr VkDisplayModeKHR): VkResult {.stdcall.}
-  vkGetDisplayPlaneCapabilitiesKHR*: proc(physicalDevice: VkPhysicalDevice, mode: VkDisplayModeKHR, planeIndex: uint32, pCapabilities: ptr VkDisplayPlaneCapabilitiesKHR): VkResult {.stdcall.}
-  vkCreateDisplayPlaneSurfaceKHR*: proc(instance: VkInstance, pCreateInfo: ptr VkDisplaySurfaceCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pSurface: ptr VkSurfaceKHR): VkResult {.stdcall.}
+  vkGetPhysicalDeviceDisplayPropertiesKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkDisplayPropertiesKHR,
+  ): VkResult {.stdcall.}
+  vkGetPhysicalDeviceDisplayPlanePropertiesKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkDisplayPlanePropertiesKHR,
+  ): VkResult {.stdcall.}
+  vkGetDisplayPlaneSupportedDisplaysKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    planeIndex: uint32,
+    pDisplayCount: ptr uint32,
+    pDisplays: ptr VkDisplayKHR,
+  ): VkResult {.stdcall.}
+  vkGetDisplayModePropertiesKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    display: VkDisplayKHR,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkDisplayModePropertiesKHR,
+  ): VkResult {.stdcall.}
+  vkCreateDisplayModeKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    display: VkDisplayKHR,
+    pCreateInfo: ptr VkDisplayModeCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pMode: ptr VkDisplayModeKHR,
+  ): VkResult {.stdcall.}
+  vkGetDisplayPlaneCapabilitiesKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    mode: VkDisplayModeKHR,
+    planeIndex: uint32,
+    pCapabilities: ptr VkDisplayPlaneCapabilitiesKHR,
+  ): VkResult {.stdcall.}
+  vkCreateDisplayPlaneSurfaceKHR*: proc(
+    instance: VkInstance,
+    pCreateInfo: ptr VkDisplaySurfaceCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSurface: ptr VkSurfaceKHR,
+  ): VkResult {.stdcall.}
 proc loadVK_KHR_display*(instance: VkInstance) =
   loadVK_KHR_surface(instance)
-  vkGetPhysicalDeviceDisplayPropertiesKHR = cast[proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32, pProperties: ptr VkDisplayPropertiesKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
-  vkGetPhysicalDeviceDisplayPlanePropertiesKHR = cast[proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32, pProperties: ptr VkDisplayPlanePropertiesKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
-  vkGetDisplayPlaneSupportedDisplaysKHR = cast[proc(physicalDevice: VkPhysicalDevice, planeIndex: uint32, pDisplayCount: ptr uint32, pDisplays: ptr VkDisplayKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDisplayPlaneSupportedDisplaysKHR"))
-  vkGetDisplayModePropertiesKHR = cast[proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR, pPropertyCount: ptr uint32, pProperties: ptr VkDisplayModePropertiesKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDisplayModePropertiesKHR"))
-  vkCreateDisplayModeKHR = cast[proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR, pCreateInfo: ptr VkDisplayModeCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pMode: ptr VkDisplayModeKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateDisplayModeKHR"))
-  vkGetDisplayPlaneCapabilitiesKHR = cast[proc(physicalDevice: VkPhysicalDevice, mode: VkDisplayModeKHR, planeIndex: uint32, pCapabilities: ptr VkDisplayPlaneCapabilitiesKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDisplayPlaneCapabilitiesKHR"))
-  vkCreateDisplayPlaneSurfaceKHR = cast[proc(instance: VkInstance, pCreateInfo: ptr VkDisplaySurfaceCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pSurface: ptr VkSurfaceKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateDisplayPlaneSurfaceKHR"))
+  vkGetPhysicalDeviceDisplayPropertiesKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkDisplayPropertiesKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceDisplayPropertiesKHR"
+  ))
+  vkGetPhysicalDeviceDisplayPlanePropertiesKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkDisplayPlanePropertiesKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"
+  ))
+  vkGetDisplayPlaneSupportedDisplaysKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    planeIndex: uint32,
+    pDisplayCount: ptr uint32,
+    pDisplays: ptr VkDisplayKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDisplayPlaneSupportedDisplaysKHR"
+  ))
+  vkGetDisplayModePropertiesKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    display: VkDisplayKHR,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkDisplayModePropertiesKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDisplayModePropertiesKHR"
+  ))
+  vkCreateDisplayModeKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    display: VkDisplayKHR,
+    pCreateInfo: ptr VkDisplayModeCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pMode: ptr VkDisplayModeKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateDisplayModeKHR"))
+  vkGetDisplayPlaneCapabilitiesKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    mode: VkDisplayModeKHR,
+    planeIndex: uint32,
+    pCapabilities: ptr VkDisplayPlaneCapabilitiesKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDisplayPlaneCapabilitiesKHR"
+  ))
+  vkCreateDisplayPlaneSurfaceKHR = cast[proc(
+    instance: VkInstance,
+    pCreateInfo: ptr VkDisplaySurfaceCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSurface: ptr VkSurfaceKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCreateDisplayPlaneSurfaceKHR"
+  ))
 
 # extension VK_EXT_swapchain_maintenance1
-var
-  vkReleaseSwapchainImagesEXT*: proc(device: VkDevice, pReleaseInfo: ptr VkReleaseSwapchainImagesInfoEXT): VkResult {.stdcall.}
+var vkReleaseSwapchainImagesEXT*: proc(
+  device: VkDevice, pReleaseInfo: ptr VkReleaseSwapchainImagesInfoEXT
+): VkResult {.stdcall.}
 proc loadVK_EXT_swapchain_maintenance1*(instance: VkInstance) =
   loadVK_KHR_swapchain(instance)
   loadVK_EXT_surface_maintenance1(instance)
   loadVK_VERSION_1_1(instance)
-  vkReleaseSwapchainImagesEXT = cast[proc(device: VkDevice, pReleaseInfo: ptr VkReleaseSwapchainImagesInfoEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkReleaseSwapchainImagesEXT"))
+  vkReleaseSwapchainImagesEXT = cast[proc(
+    device: VkDevice, pReleaseInfo: ptr VkReleaseSwapchainImagesInfoEXT
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkReleaseSwapchainImagesEXT"
+  ))
 
 # extension VK_EXT_direct_mode_display
-var
-  vkReleaseDisplayEXT*: proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR): VkResult {.stdcall.}
+var vkReleaseDisplayEXT*:
+  proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR): VkResult {.stdcall.}
 proc loadVK_EXT_direct_mode_display*(instance: VkInstance) =
   loadVK_KHR_display(instance)
-  vkReleaseDisplayEXT = cast[proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkReleaseDisplayEXT"))
+  vkReleaseDisplayEXT = cast[proc(
+    physicalDevice: VkPhysicalDevice, display: VkDisplayKHR
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkReleaseDisplayEXT"))
 
 proc loadVK_KHR_swapchain_mutable_format*(instance: VkInstance) =
   loadVK_KHR_swapchain(instance)
@@ -11570,150 +17662,506 @@
 
 # extension VK_EXT_opacity_micromap
 var
-  vkCreateMicromapEXT*: proc(device: VkDevice, pCreateInfo: ptr VkMicromapCreateInfoEXT, pAllocator: ptr VkAllocationCallbacks, pMicromap: ptr VkMicromapEXT): VkResult {.stdcall.}
-  vkDestroyMicromapEXT*: proc(device: VkDevice, micromap: VkMicromapEXT, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkCmdBuildMicromapsEXT*: proc(commandBuffer: VkCommandBuffer, infoCount: uint32, pInfos: ptr VkMicromapBuildInfoEXT): void {.stdcall.}
-  vkBuildMicromapsEXT*: proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, infoCount: uint32, pInfos: ptr VkMicromapBuildInfoEXT): VkResult {.stdcall.}
-  vkCopyMicromapEXT*: proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: ptr VkCopyMicromapInfoEXT): VkResult {.stdcall.}
-  vkCopyMicromapToMemoryEXT*: proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: ptr VkCopyMicromapToMemoryInfoEXT): VkResult {.stdcall.}
-  vkCopyMemoryToMicromapEXT*: proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: ptr VkCopyMemoryToMicromapInfoEXT): VkResult {.stdcall.}
-  vkWriteMicromapsPropertiesEXT*: proc(device: VkDevice, micromapCount: uint32, pMicromaps: ptr VkMicromapEXT, queryType: VkQueryType, dataSize: csize_t, pData: pointer, stride: csize_t): VkResult {.stdcall.}
-  vkCmdCopyMicromapEXT*: proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMicromapInfoEXT): void {.stdcall.}
-  vkCmdCopyMicromapToMemoryEXT*: proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMicromapToMemoryInfoEXT): void {.stdcall.}
-  vkCmdCopyMemoryToMicromapEXT*: proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMemoryToMicromapInfoEXT): void {.stdcall.}
-  vkCmdWriteMicromapsPropertiesEXT*: proc(commandBuffer: VkCommandBuffer, micromapCount: uint32, pMicromaps: ptr VkMicromapEXT, queryType: VkQueryType, queryPool: VkQueryPool, firstQuery: uint32): void {.stdcall.}
-  vkGetDeviceMicromapCompatibilityEXT*: proc(device: VkDevice, pVersionInfo: ptr VkMicromapVersionInfoEXT, pCompatibility: ptr VkAccelerationStructureCompatibilityKHR): void {.stdcall.}
-  vkGetMicromapBuildSizesEXT*: proc(device: VkDevice, buildType: VkAccelerationStructureBuildTypeKHR, pBuildInfo: ptr VkMicromapBuildInfoEXT, pSizeInfo: ptr VkMicromapBuildSizesInfoEXT): void {.stdcall.}
+  vkCreateMicromapEXT*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkMicromapCreateInfoEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+    pMicromap: ptr VkMicromapEXT,
+  ): VkResult {.stdcall.}
+  vkDestroyMicromapEXT*: proc(
+    device: VkDevice, micromap: VkMicromapEXT, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}
+  vkCmdBuildMicromapsEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    infoCount: uint32,
+    pInfos: ptr VkMicromapBuildInfoEXT,
+  ): void {.stdcall.}
+  vkBuildMicromapsEXT*: proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    infoCount: uint32,
+    pInfos: ptr VkMicromapBuildInfoEXT,
+  ): VkResult {.stdcall.}
+  vkCopyMicromapEXT*: proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    pInfo: ptr VkCopyMicromapInfoEXT,
+  ): VkResult {.stdcall.}
+  vkCopyMicromapToMemoryEXT*: proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    pInfo: ptr VkCopyMicromapToMemoryInfoEXT,
+  ): VkResult {.stdcall.}
+  vkCopyMemoryToMicromapEXT*: proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    pInfo: ptr VkCopyMemoryToMicromapInfoEXT,
+  ): VkResult {.stdcall.}
+  vkWriteMicromapsPropertiesEXT*: proc(
+    device: VkDevice,
+    micromapCount: uint32,
+    pMicromaps: ptr VkMicromapEXT,
+    queryType: VkQueryType,
+    dataSize: csize_t,
+    pData: pointer,
+    stride: csize_t,
+  ): VkResult {.stdcall.}
+  vkCmdCopyMicromapEXT*: proc(
+    commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMicromapInfoEXT
+  ): void {.stdcall.}
+  vkCmdCopyMicromapToMemoryEXT*: proc(
+    commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMicromapToMemoryInfoEXT
+  ): void {.stdcall.}
+  vkCmdCopyMemoryToMicromapEXT*: proc(
+    commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMemoryToMicromapInfoEXT
+  ): void {.stdcall.}
+  vkCmdWriteMicromapsPropertiesEXT*: proc(
+    commandBuffer: VkCommandBuffer,
+    micromapCount: uint32,
+    pMicromaps: ptr VkMicromapEXT,
+    queryType: VkQueryType,
+    queryPool: VkQueryPool,
+    firstQuery: uint32,
+  ): void {.stdcall.}
+  vkGetDeviceMicromapCompatibilityEXT*: proc(
+    device: VkDevice,
+    pVersionInfo: ptr VkMicromapVersionInfoEXT,
+    pCompatibility: ptr VkAccelerationStructureCompatibilityKHR,
+  ): void {.stdcall.}
+  vkGetMicromapBuildSizesEXT*: proc(
+    device: VkDevice,
+    buildType: VkAccelerationStructureBuildTypeKHR,
+    pBuildInfo: ptr VkMicromapBuildInfoEXT,
+    pSizeInfo: ptr VkMicromapBuildSizesInfoEXT,
+  ): void {.stdcall.}
 proc loadVK_EXT_opacity_micromap*(instance: VkInstance) =
   loadVK_KHR_acceleration_structure(instance)
   loadVK_VERSION_1_3(instance)
-  vkCreateMicromapEXT = cast[proc(device: VkDevice, pCreateInfo: ptr VkMicromapCreateInfoEXT, pAllocator: ptr VkAllocationCallbacks, pMicromap: ptr VkMicromapEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateMicromapEXT"))
-  vkDestroyMicromapEXT = cast[proc(device: VkDevice, micromap: VkMicromapEXT, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyMicromapEXT"))
-  vkCmdBuildMicromapsEXT = cast[proc(commandBuffer: VkCommandBuffer, infoCount: uint32, pInfos: ptr VkMicromapBuildInfoEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBuildMicromapsEXT"))
-  vkBuildMicromapsEXT = cast[proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, infoCount: uint32, pInfos: ptr VkMicromapBuildInfoEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBuildMicromapsEXT"))
-  vkCopyMicromapEXT = cast[proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: ptr VkCopyMicromapInfoEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCopyMicromapEXT"))
-  vkCopyMicromapToMemoryEXT = cast[proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: ptr VkCopyMicromapToMemoryInfoEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCopyMicromapToMemoryEXT"))
-  vkCopyMemoryToMicromapEXT = cast[proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: ptr VkCopyMemoryToMicromapInfoEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCopyMemoryToMicromapEXT"))
-  vkWriteMicromapsPropertiesEXT = cast[proc(device: VkDevice, micromapCount: uint32, pMicromaps: ptr VkMicromapEXT, queryType: VkQueryType, dataSize: csize_t, pData: pointer, stride: csize_t): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkWriteMicromapsPropertiesEXT"))
-  vkCmdCopyMicromapEXT = cast[proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMicromapInfoEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyMicromapEXT"))
-  vkCmdCopyMicromapToMemoryEXT = cast[proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMicromapToMemoryInfoEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyMicromapToMemoryEXT"))
-  vkCmdCopyMemoryToMicromapEXT = cast[proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMemoryToMicromapInfoEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyMemoryToMicromapEXT"))
-  vkCmdWriteMicromapsPropertiesEXT = cast[proc(commandBuffer: VkCommandBuffer, micromapCount: uint32, pMicromaps: ptr VkMicromapEXT, queryType: VkQueryType, queryPool: VkQueryPool, firstQuery: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdWriteMicromapsPropertiesEXT"))
-  vkGetDeviceMicromapCompatibilityEXT = cast[proc(device: VkDevice, pVersionInfo: ptr VkMicromapVersionInfoEXT, pCompatibility: ptr VkAccelerationStructureCompatibilityKHR): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceMicromapCompatibilityEXT"))
-  vkGetMicromapBuildSizesEXT = cast[proc(device: VkDevice, buildType: VkAccelerationStructureBuildTypeKHR, pBuildInfo: ptr VkMicromapBuildInfoEXT, pSizeInfo: ptr VkMicromapBuildSizesInfoEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetMicromapBuildSizesEXT"))
+  vkCreateMicromapEXT = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkMicromapCreateInfoEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+    pMicromap: ptr VkMicromapEXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateMicromapEXT"))
+  vkDestroyMicromapEXT = cast[proc(
+    device: VkDevice, micromap: VkMicromapEXT, pAllocator: ptr VkAllocationCallbacks
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyMicromapEXT"))
+  vkCmdBuildMicromapsEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    infoCount: uint32,
+    pInfos: ptr VkMicromapBuildInfoEXT,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBuildMicromapsEXT"))
+  vkBuildMicromapsEXT = cast[proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    infoCount: uint32,
+    pInfos: ptr VkMicromapBuildInfoEXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBuildMicromapsEXT"))
+  vkCopyMicromapEXT = cast[proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    pInfo: ptr VkCopyMicromapInfoEXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCopyMicromapEXT"))
+  vkCopyMicromapToMemoryEXT = cast[proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    pInfo: ptr VkCopyMicromapToMemoryInfoEXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCopyMicromapToMemoryEXT"))
+  vkCopyMemoryToMicromapEXT = cast[proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    pInfo: ptr VkCopyMemoryToMicromapInfoEXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCopyMemoryToMicromapEXT"))
+  vkWriteMicromapsPropertiesEXT = cast[proc(
+    device: VkDevice,
+    micromapCount: uint32,
+    pMicromaps: ptr VkMicromapEXT,
+    queryType: VkQueryType,
+    dataSize: csize_t,
+    pData: pointer,
+    stride: csize_t,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkWriteMicromapsPropertiesEXT"
+  ))
+  vkCmdCopyMicromapEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMicromapInfoEXT
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyMicromapEXT"))
+  vkCmdCopyMicromapToMemoryEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMicromapToMemoryInfoEXT
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyMicromapToMemoryEXT"))
+  vkCmdCopyMemoryToMicromapEXT = cast[proc(
+    commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMemoryToMicromapInfoEXT
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyMemoryToMicromapEXT"))
+  vkCmdWriteMicromapsPropertiesEXT = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    micromapCount: uint32,
+    pMicromaps: ptr VkMicromapEXT,
+    queryType: VkQueryType,
+    queryPool: VkQueryPool,
+    firstQuery: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdWriteMicromapsPropertiesEXT"
+  ))
+  vkGetDeviceMicromapCompatibilityEXT = cast[proc(
+    device: VkDevice,
+    pVersionInfo: ptr VkMicromapVersionInfoEXT,
+    pCompatibility: ptr VkAccelerationStructureCompatibilityKHR,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDeviceMicromapCompatibilityEXT"
+  ))
+  vkGetMicromapBuildSizesEXT = cast[proc(
+    device: VkDevice,
+    buildType: VkAccelerationStructureBuildTypeKHR,
+    pBuildInfo: ptr VkMicromapBuildInfoEXT,
+    pSizeInfo: ptr VkMicromapBuildSizesInfoEXT,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetMicromapBuildSizesEXT"))
 
 proc loadVK_KHR_incremental_present*(instance: VkInstance) =
   loadVK_KHR_swapchain(instance)
 
 # extension VK_KHR_shared_presentable_image
-var
-  vkGetSwapchainStatusKHR*: proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}
+var vkGetSwapchainStatusKHR*:
+  proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}
 proc loadVK_KHR_shared_presentable_image*(instance: VkInstance) =
   loadVK_KHR_swapchain(instance)
   loadVK_VERSION_1_1(instance)
   loadVK_KHR_get_surface_capabilities2(instance)
-  vkGetSwapchainStatusKHR = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetSwapchainStatusKHR"))
+  vkGetSwapchainStatusKHR = cast[proc(
+    device: VkDevice, swapchain: VkSwapchainKHR
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetSwapchainStatusKHR"))
 
 # extension VK_EXT_hdr_metadata
-var
-  vkSetHdrMetadataEXT*: proc(device: VkDevice, swapchainCount: uint32, pSwapchains: ptr VkSwapchainKHR, pMetadata: ptr VkHdrMetadataEXT): void {.stdcall.}
+var vkSetHdrMetadataEXT*: proc(
+  device: VkDevice,
+  swapchainCount: uint32,
+  pSwapchains: ptr VkSwapchainKHR,
+  pMetadata: ptr VkHdrMetadataEXT,
+): void {.stdcall.}
 proc loadVK_EXT_hdr_metadata*(instance: VkInstance) =
   loadVK_KHR_swapchain(instance)
-  vkSetHdrMetadataEXT = cast[proc(device: VkDevice, swapchainCount: uint32, pSwapchains: ptr VkSwapchainKHR, pMetadata: ptr VkHdrMetadataEXT): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSetHdrMetadataEXT"))
+  vkSetHdrMetadataEXT = cast[proc(
+    device: VkDevice,
+    swapchainCount: uint32,
+    pSwapchains: ptr VkSwapchainKHR,
+    pMetadata: ptr VkHdrMetadataEXT,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkSetHdrMetadataEXT"))
 
 proc loadVK_KHR_present_id*(instance: VkInstance) =
   loadVK_KHR_swapchain(instance)
   loadVK_VERSION_1_1(instance)
 
 # extension VK_KHR_ray_tracing_maintenance1
-var
-  vkCmdTraceRaysIndirect2KHR*: proc(commandBuffer: VkCommandBuffer, indirectDeviceAddress: VkDeviceAddress): void {.stdcall.}
+var vkCmdTraceRaysIndirect2KHR*: proc(
+  commandBuffer: VkCommandBuffer, indirectDeviceAddress: VkDeviceAddress
+): void {.stdcall.}
 proc loadVK_KHR_ray_tracing_maintenance1*(instance: VkInstance) =
   loadVK_KHR_acceleration_structure(instance)
-  vkCmdTraceRaysIndirect2KHR = cast[proc(commandBuffer: VkCommandBuffer, indirectDeviceAddress: VkDeviceAddress): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdTraceRaysIndirect2KHR"))
+  vkCmdTraceRaysIndirect2KHR = cast[proc(
+    commandBuffer: VkCommandBuffer, indirectDeviceAddress: VkDeviceAddress
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdTraceRaysIndirect2KHR"))
 
 # extension VK_KHR_ray_tracing_pipeline
 var
-  vkCmdTraceRaysKHR*: proc(commandBuffer: VkCommandBuffer, pRaygenShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, pMissShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, pHitShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, pCallableShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, width: uint32, height: uint32, depth: uint32): void {.stdcall.}
-  vkCreateRayTracingPipelinesKHR*: proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkRayTracingPipelineCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pPipelines: ptr VkPipeline): VkResult {.stdcall.}
-  vkGetRayTracingShaderGroupHandlesKHR*: proc(device: VkDevice, pipeline: VkPipeline, firstGroup: uint32, groupCount: uint32, dataSize: csize_t, pData: pointer): VkResult {.stdcall.}
-  vkGetRayTracingCaptureReplayShaderGroupHandlesKHR*: proc(device: VkDevice, pipeline: VkPipeline, firstGroup: uint32, groupCount: uint32, dataSize: csize_t, pData: pointer): VkResult {.stdcall.}
-  vkCmdTraceRaysIndirectKHR*: proc(commandBuffer: VkCommandBuffer, pRaygenShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, pMissShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, pHitShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, pCallableShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, indirectDeviceAddress: VkDeviceAddress): void {.stdcall.}
-  vkGetRayTracingShaderGroupStackSizeKHR*: proc(device: VkDevice, pipeline: VkPipeline, group: uint32, groupShader: VkShaderGroupShaderKHR): VkDeviceSize {.stdcall.}
-  vkCmdSetRayTracingPipelineStackSizeKHR*: proc(commandBuffer: VkCommandBuffer, pipelineStackSize: uint32): void {.stdcall.}
+  vkCmdTraceRaysKHR*: proc(
+    commandBuffer: VkCommandBuffer,
+    pRaygenShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    pMissShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    pHitShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    pCallableShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    width: uint32,
+    height: uint32,
+    depth: uint32,
+  ): void {.stdcall.}
+  vkCreateRayTracingPipelinesKHR*: proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    pipelineCache: VkPipelineCache,
+    createInfoCount: uint32,
+    pCreateInfos: ptr VkRayTracingPipelineCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pPipelines: ptr VkPipeline,
+  ): VkResult {.stdcall.}
+  vkGetRayTracingShaderGroupHandlesKHR*: proc(
+    device: VkDevice,
+    pipeline: VkPipeline,
+    firstGroup: uint32,
+    groupCount: uint32,
+    dataSize: csize_t,
+    pData: pointer,
+  ): VkResult {.stdcall.}
+  vkGetRayTracingCaptureReplayShaderGroupHandlesKHR*: proc(
+    device: VkDevice,
+    pipeline: VkPipeline,
+    firstGroup: uint32,
+    groupCount: uint32,
+    dataSize: csize_t,
+    pData: pointer,
+  ): VkResult {.stdcall.}
+  vkCmdTraceRaysIndirectKHR*: proc(
+    commandBuffer: VkCommandBuffer,
+    pRaygenShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    pMissShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    pHitShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    pCallableShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    indirectDeviceAddress: VkDeviceAddress,
+  ): void {.stdcall.}
+  vkGetRayTracingShaderGroupStackSizeKHR*: proc(
+    device: VkDevice,
+    pipeline: VkPipeline,
+    group: uint32,
+    groupShader: VkShaderGroupShaderKHR,
+  ): VkDeviceSize {.stdcall.}
+  vkCmdSetRayTracingPipelineStackSizeKHR*:
+    proc(commandBuffer: VkCommandBuffer, pipelineStackSize: uint32): void {.stdcall.}
 proc loadVK_KHR_ray_tracing_pipeline*(instance: VkInstance) =
   loadVK_VERSION_1_2(instance)
   loadVK_KHR_acceleration_structure(instance)
-  vkCmdTraceRaysKHR = cast[proc(commandBuffer: VkCommandBuffer, pRaygenShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, pMissShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, pHitShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, pCallableShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, width: uint32, height: uint32, depth: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdTraceRaysKHR"))
-  vkCreateRayTracingPipelinesKHR = cast[proc(device: VkDevice, deferredOperation: VkDeferredOperationKHR, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkRayTracingPipelineCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pPipelines: ptr VkPipeline): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateRayTracingPipelinesKHR"))
-  vkGetRayTracingShaderGroupHandlesKHR = cast[proc(device: VkDevice, pipeline: VkPipeline, firstGroup: uint32, groupCount: uint32, dataSize: csize_t, pData: pointer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetRayTracingShaderGroupHandlesKHR"))
-  vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = cast[proc(device: VkDevice, pipeline: VkPipeline, firstGroup: uint32, groupCount: uint32, dataSize: csize_t, pData: pointer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
-  vkCmdTraceRaysIndirectKHR = cast[proc(commandBuffer: VkCommandBuffer, pRaygenShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, pMissShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, pHitShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, pCallableShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR, indirectDeviceAddress: VkDeviceAddress): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdTraceRaysIndirectKHR"))
-  vkGetRayTracingShaderGroupStackSizeKHR = cast[proc(device: VkDevice, pipeline: VkPipeline, group: uint32, groupShader: VkShaderGroupShaderKHR): VkDeviceSize {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetRayTracingShaderGroupStackSizeKHR"))
-  vkCmdSetRayTracingPipelineStackSizeKHR = cast[proc(commandBuffer: VkCommandBuffer, pipelineStackSize: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdSetRayTracingPipelineStackSizeKHR"))
+  vkCmdTraceRaysKHR = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pRaygenShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    pMissShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    pHitShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    pCallableShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    width: uint32,
+    height: uint32,
+    depth: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdTraceRaysKHR"))
+  vkCreateRayTracingPipelinesKHR = cast[proc(
+    device: VkDevice,
+    deferredOperation: VkDeferredOperationKHR,
+    pipelineCache: VkPipelineCache,
+    createInfoCount: uint32,
+    pCreateInfos: ptr VkRayTracingPipelineCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pPipelines: ptr VkPipeline,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCreateRayTracingPipelinesKHR"
+  ))
+  vkGetRayTracingShaderGroupHandlesKHR = cast[proc(
+    device: VkDevice,
+    pipeline: VkPipeline,
+    firstGroup: uint32,
+    groupCount: uint32,
+    dataSize: csize_t,
+    pData: pointer,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetRayTracingShaderGroupHandlesKHR"
+  ))
+  vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = cast[proc(
+    device: VkDevice,
+    pipeline: VkPipeline,
+    firstGroup: uint32,
+    groupCount: uint32,
+    dataSize: csize_t,
+    pData: pointer,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"
+  ))
+  vkCmdTraceRaysIndirectKHR = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pRaygenShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    pMissShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    pHitShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    pCallableShaderBindingTable: ptr VkStridedDeviceAddressRegionKHR,
+    indirectDeviceAddress: VkDeviceAddress,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdTraceRaysIndirectKHR"))
+  vkGetRayTracingShaderGroupStackSizeKHR = cast[proc(
+    device: VkDevice,
+    pipeline: VkPipeline,
+    group: uint32,
+    groupShader: VkShaderGroupShaderKHR,
+  ): VkDeviceSize {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetRayTracingShaderGroupStackSizeKHR"
+  ))
+  vkCmdSetRayTracingPipelineStackSizeKHR = cast[proc(
+    commandBuffer: VkCommandBuffer, pipelineStackSize: uint32
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdSetRayTracingPipelineStackSizeKHR"
+  ))
 
 # extension VK_HUAWEI_invocation_mask
-var
-  vkCmdBindInvocationMaskHUAWEI*: proc(commandBuffer: VkCommandBuffer, imageView: VkImageView, imageLayout: VkImageLayout): void {.stdcall.}
+var vkCmdBindInvocationMaskHUAWEI*: proc(
+  commandBuffer: VkCommandBuffer, imageView: VkImageView, imageLayout: VkImageLayout
+): void {.stdcall.}
 proc loadVK_HUAWEI_invocation_mask*(instance: VkInstance) =
   loadVK_KHR_ray_tracing_pipeline(instance)
   loadVK_VERSION_1_3(instance)
-  vkCmdBindInvocationMaskHUAWEI = cast[proc(commandBuffer: VkCommandBuffer, imageView: VkImageView, imageLayout: VkImageLayout): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindInvocationMaskHUAWEI"))
+  vkCmdBindInvocationMaskHUAWEI = cast[proc(
+    commandBuffer: VkCommandBuffer, imageView: VkImageView, imageLayout: VkImageLayout
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBindInvocationMaskHUAWEI"))
 
 # extension VK_EXT_display_surface_counter
-var
-  vkGetPhysicalDeviceSurfaceCapabilities2EXT*: proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pSurfaceCapabilities: ptr VkSurfaceCapabilities2EXT): VkResult {.stdcall.}
+var vkGetPhysicalDeviceSurfaceCapabilities2EXT*: proc(
+  physicalDevice: VkPhysicalDevice,
+  surface: VkSurfaceKHR,
+  pSurfaceCapabilities: ptr VkSurfaceCapabilities2EXT,
+): VkResult {.stdcall.}
 proc loadVK_EXT_display_surface_counter*(instance: VkInstance) =
   loadVK_KHR_display(instance)
-  vkGetPhysicalDeviceSurfaceCapabilities2EXT = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pSurfaceCapabilities: ptr VkSurfaceCapabilities2EXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
+  vkGetPhysicalDeviceSurfaceCapabilities2EXT = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    surface: VkSurfaceKHR,
+    pSurfaceCapabilities: ptr VkSurfaceCapabilities2EXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"
+  ))
 
 # extension VK_KHR_get_display_properties2
 var
-  vkGetPhysicalDeviceDisplayProperties2KHR*: proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32, pProperties: ptr VkDisplayProperties2KHR): VkResult {.stdcall.}
-  vkGetPhysicalDeviceDisplayPlaneProperties2KHR*: proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32, pProperties: ptr VkDisplayPlaneProperties2KHR): VkResult {.stdcall.}
-  vkGetDisplayModeProperties2KHR*: proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR, pPropertyCount: ptr uint32, pProperties: ptr VkDisplayModeProperties2KHR): VkResult {.stdcall.}
-  vkGetDisplayPlaneCapabilities2KHR*: proc(physicalDevice: VkPhysicalDevice, pDisplayPlaneInfo: ptr VkDisplayPlaneInfo2KHR, pCapabilities: ptr VkDisplayPlaneCapabilities2KHR): VkResult {.stdcall.}
+  vkGetPhysicalDeviceDisplayProperties2KHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkDisplayProperties2KHR,
+  ): VkResult {.stdcall.}
+  vkGetPhysicalDeviceDisplayPlaneProperties2KHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkDisplayPlaneProperties2KHR,
+  ): VkResult {.stdcall.}
+  vkGetDisplayModeProperties2KHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    display: VkDisplayKHR,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkDisplayModeProperties2KHR,
+  ): VkResult {.stdcall.}
+  vkGetDisplayPlaneCapabilities2KHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pDisplayPlaneInfo: ptr VkDisplayPlaneInfo2KHR,
+    pCapabilities: ptr VkDisplayPlaneCapabilities2KHR,
+  ): VkResult {.stdcall.}
 proc loadVK_KHR_get_display_properties2*(instance: VkInstance) =
   loadVK_KHR_display(instance)
-  vkGetPhysicalDeviceDisplayProperties2KHR = cast[proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32, pProperties: ptr VkDisplayProperties2KHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayProperties2KHR"))
-  vkGetPhysicalDeviceDisplayPlaneProperties2KHR = cast[proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32, pProperties: ptr VkDisplayPlaneProperties2KHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
-  vkGetDisplayModeProperties2KHR = cast[proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR, pPropertyCount: ptr uint32, pProperties: ptr VkDisplayModeProperties2KHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDisplayModeProperties2KHR"))
-  vkGetDisplayPlaneCapabilities2KHR = cast[proc(physicalDevice: VkPhysicalDevice, pDisplayPlaneInfo: ptr VkDisplayPlaneInfo2KHR, pCapabilities: ptr VkDisplayPlaneCapabilities2KHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDisplayPlaneCapabilities2KHR"))
+  vkGetPhysicalDeviceDisplayProperties2KHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkDisplayProperties2KHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceDisplayProperties2KHR"
+  ))
+  vkGetPhysicalDeviceDisplayPlaneProperties2KHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkDisplayPlaneProperties2KHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"
+  ))
+  vkGetDisplayModeProperties2KHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    display: VkDisplayKHR,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkDisplayModeProperties2KHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDisplayModeProperties2KHR"
+  ))
+  vkGetDisplayPlaneCapabilities2KHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pDisplayPlaneInfo: ptr VkDisplayPlaneInfo2KHR,
+    pCapabilities: ptr VkDisplayPlaneCapabilities2KHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDisplayPlaneCapabilities2KHR"
+  ))
 
 proc loadVK_KHR_ray_query*(instance: VkInstance) =
   loadVK_VERSION_1_2(instance)
   loadVK_KHR_acceleration_structure(instance)
 
 # extension VK_KHR_display_swapchain
-var
-  vkCreateSharedSwapchainsKHR*: proc(device: VkDevice, swapchainCount: uint32, pCreateInfos: ptr VkSwapchainCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pSwapchains: ptr VkSwapchainKHR): VkResult {.stdcall.}
+var vkCreateSharedSwapchainsKHR*: proc(
+  device: VkDevice,
+  swapchainCount: uint32,
+  pCreateInfos: ptr VkSwapchainCreateInfoKHR,
+  pAllocator: ptr VkAllocationCallbacks,
+  pSwapchains: ptr VkSwapchainKHR,
+): VkResult {.stdcall.}
 proc loadVK_KHR_display_swapchain*(instance: VkInstance) =
   loadVK_KHR_swapchain(instance)
   loadVK_KHR_display(instance)
-  vkCreateSharedSwapchainsKHR = cast[proc(device: VkDevice, swapchainCount: uint32, pCreateInfos: ptr VkSwapchainCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pSwapchains: ptr VkSwapchainKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateSharedSwapchainsKHR"))
+  vkCreateSharedSwapchainsKHR = cast[proc(
+    device: VkDevice,
+    swapchainCount: uint32,
+    pCreateInfos: ptr VkSwapchainCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSwapchains: ptr VkSwapchainKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCreateSharedSwapchainsKHR"
+  ))
 
 # extension VK_EXT_acquire_drm_display
 var
-  vkAcquireDrmDisplayEXT*: proc(physicalDevice: VkPhysicalDevice, drmFd: int32, display: VkDisplayKHR): VkResult {.stdcall.}
-  vkGetDrmDisplayEXT*: proc(physicalDevice: VkPhysicalDevice, drmFd: int32, connectorId: uint32, display: ptr VkDisplayKHR): VkResult {.stdcall.}
+  vkAcquireDrmDisplayEXT*: proc(
+    physicalDevice: VkPhysicalDevice, drmFd: int32, display: VkDisplayKHR
+  ): VkResult {.stdcall.}
+  vkGetDrmDisplayEXT*: proc(
+    physicalDevice: VkPhysicalDevice,
+    drmFd: int32,
+    connectorId: uint32,
+    display: ptr VkDisplayKHR,
+  ): VkResult {.stdcall.}
 proc loadVK_EXT_acquire_drm_display*(instance: VkInstance) =
   loadVK_EXT_direct_mode_display(instance)
-  vkAcquireDrmDisplayEXT = cast[proc(physicalDevice: VkPhysicalDevice, drmFd: int32, display: VkDisplayKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAcquireDrmDisplayEXT"))
-  vkGetDrmDisplayEXT = cast[proc(physicalDevice: VkPhysicalDevice, drmFd: int32, connectorId: uint32, display: ptr VkDisplayKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDrmDisplayEXT"))
+  vkAcquireDrmDisplayEXT = cast[proc(
+    physicalDevice: VkPhysicalDevice, drmFd: int32, display: VkDisplayKHR
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAcquireDrmDisplayEXT"))
+  vkGetDrmDisplayEXT = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    drmFd: int32,
+    connectorId: uint32,
+    display: ptr VkDisplayKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDrmDisplayEXT"))
 
 # extension VK_EXT_display_control
 var
-  vkDisplayPowerControlEXT*: proc(device: VkDevice, display: VkDisplayKHR, pDisplayPowerInfo: ptr VkDisplayPowerInfoEXT): VkResult {.stdcall.}
-  vkRegisterDeviceEventEXT*: proc(device: VkDevice, pDeviceEventInfo: ptr VkDeviceEventInfoEXT, pAllocator: ptr VkAllocationCallbacks, pFence: ptr VkFence): VkResult {.stdcall.}
-  vkRegisterDisplayEventEXT*: proc(device: VkDevice, display: VkDisplayKHR, pDisplayEventInfo: ptr VkDisplayEventInfoEXT, pAllocator: ptr VkAllocationCallbacks, pFence: ptr VkFence): VkResult {.stdcall.}
-  vkGetSwapchainCounterEXT*: proc(device: VkDevice, swapchain: VkSwapchainKHR, counter: VkSurfaceCounterFlagBitsEXT, pCounterValue: ptr uint64): VkResult {.stdcall.}
+  vkDisplayPowerControlEXT*: proc(
+    device: VkDevice,
+    display: VkDisplayKHR,
+    pDisplayPowerInfo: ptr VkDisplayPowerInfoEXT,
+  ): VkResult {.stdcall.}
+  vkRegisterDeviceEventEXT*: proc(
+    device: VkDevice,
+    pDeviceEventInfo: ptr VkDeviceEventInfoEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+    pFence: ptr VkFence,
+  ): VkResult {.stdcall.}
+  vkRegisterDisplayEventEXT*: proc(
+    device: VkDevice,
+    display: VkDisplayKHR,
+    pDisplayEventInfo: ptr VkDisplayEventInfoEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+    pFence: ptr VkFence,
+  ): VkResult {.stdcall.}
+  vkGetSwapchainCounterEXT*: proc(
+    device: VkDevice,
+    swapchain: VkSwapchainKHR,
+    counter: VkSurfaceCounterFlagBitsEXT,
+    pCounterValue: ptr uint64,
+  ): VkResult {.stdcall.}
 proc loadVK_EXT_display_control*(instance: VkInstance) =
   loadVK_EXT_display_surface_counter(instance)
   loadVK_KHR_swapchain(instance)
-  vkDisplayPowerControlEXT = cast[proc(device: VkDevice, display: VkDisplayKHR, pDisplayPowerInfo: ptr VkDisplayPowerInfoEXT): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDisplayPowerControlEXT"))
-  vkRegisterDeviceEventEXT = cast[proc(device: VkDevice, pDeviceEventInfo: ptr VkDeviceEventInfoEXT, pAllocator: ptr VkAllocationCallbacks, pFence: ptr VkFence): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkRegisterDeviceEventEXT"))
-  vkRegisterDisplayEventEXT = cast[proc(device: VkDevice, display: VkDisplayKHR, pDisplayEventInfo: ptr VkDisplayEventInfoEXT, pAllocator: ptr VkAllocationCallbacks, pFence: ptr VkFence): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkRegisterDisplayEventEXT"))
-  vkGetSwapchainCounterEXT = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, counter: VkSurfaceCounterFlagBitsEXT, pCounterValue: ptr uint64): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetSwapchainCounterEXT"))
+  vkDisplayPowerControlEXT = cast[proc(
+    device: VkDevice,
+    display: VkDisplayKHR,
+    pDisplayPowerInfo: ptr VkDisplayPowerInfoEXT,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDisplayPowerControlEXT"))
+  vkRegisterDeviceEventEXT = cast[proc(
+    device: VkDevice,
+    pDeviceEventInfo: ptr VkDeviceEventInfoEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+    pFence: ptr VkFence,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkRegisterDeviceEventEXT"))
+  vkRegisterDisplayEventEXT = cast[proc(
+    device: VkDevice,
+    display: VkDisplayKHR,
+    pDisplayEventInfo: ptr VkDisplayEventInfoEXT,
+    pAllocator: ptr VkAllocationCallbacks,
+    pFence: ptr VkFence,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkRegisterDisplayEventEXT"))
+  vkGetSwapchainCounterEXT = cast[proc(
+    device: VkDevice,
+    swapchain: VkSwapchainKHR,
+    counter: VkSurfaceCounterFlagBitsEXT,
+    pCounterValue: ptr uint64,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetSwapchainCounterEXT"))
 
 proc loadVK_NV_ray_tracing_motion_blur*(instance: VkInstance) =
   loadVK_KHR_ray_tracing_pipeline(instance)
@@ -11724,41 +18172,206 @@
 
 # extension VK_NV_ray_tracing
 var
-  vkCreateAccelerationStructureNV*: proc(device: VkDevice, pCreateInfo: ptr VkAccelerationStructureCreateInfoNV, pAllocator: ptr VkAllocationCallbacks, pAccelerationStructure: ptr VkAccelerationStructureNV): VkResult {.stdcall.}
-  vkDestroyAccelerationStructureNV*: proc(device: VkDevice, accelerationStructure: VkAccelerationStructureNV, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}
-  vkGetAccelerationStructureMemoryRequirementsNV*: proc(device: VkDevice, pInfo: ptr VkAccelerationStructureMemoryRequirementsInfoNV, pMemoryRequirements: ptr VkMemoryRequirements2KHR): void {.stdcall.}
-  vkBindAccelerationStructureMemoryNV*: proc(device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindAccelerationStructureMemoryInfoNV): VkResult {.stdcall.}
-  vkCmdBuildAccelerationStructureNV*: proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkAccelerationStructureInfoNV, instanceData: VkBuffer, instanceOffset: VkDeviceSize, update: VkBool32, dst: VkAccelerationStructureNV, src: VkAccelerationStructureNV, scratch: VkBuffer, scratchOffset: VkDeviceSize): void {.stdcall.}
-  vkCmdCopyAccelerationStructureNV*: proc(commandBuffer: VkCommandBuffer, dst: VkAccelerationStructureNV, src: VkAccelerationStructureNV, mode: VkCopyAccelerationStructureModeKHR): void {.stdcall.}
-  vkCmdTraceRaysNV*: proc(commandBuffer: VkCommandBuffer, raygenShaderBindingTableBuffer: VkBuffer, raygenShaderBindingOffset: VkDeviceSize, missShaderBindingTableBuffer: VkBuffer, missShaderBindingOffset: VkDeviceSize, missShaderBindingStride: VkDeviceSize, hitShaderBindingTableBuffer: VkBuffer, hitShaderBindingOffset: VkDeviceSize, hitShaderBindingStride: VkDeviceSize, callableShaderBindingTableBuffer: VkBuffer, callableShaderBindingOffset: VkDeviceSize, callableShaderBindingStride: VkDeviceSize, width: uint32, height: uint32, depth: uint32): void {.stdcall.}
-  vkCreateRayTracingPipelinesNV*: proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkRayTracingPipelineCreateInfoNV, pAllocator: ptr VkAllocationCallbacks, pPipelines: ptr VkPipeline): VkResult {.stdcall.}
-  vkGetRayTracingShaderGroupHandlesNV*: proc(device: VkDevice, pipeline: VkPipeline, firstGroup: uint32, groupCount: uint32, dataSize: csize_t, pData: pointer): VkResult {.stdcall.}
-  vkGetAccelerationStructureHandleNV*: proc(device: VkDevice, accelerationStructure: VkAccelerationStructureNV, dataSize: csize_t, pData: pointer): VkResult {.stdcall.}
-  vkCmdWriteAccelerationStructuresPropertiesNV*: proc(commandBuffer: VkCommandBuffer, accelerationStructureCount: uint32, pAccelerationStructures: ptr VkAccelerationStructureNV, queryType: VkQueryType, queryPool: VkQueryPool, firstQuery: uint32): void {.stdcall.}
-  vkCompileDeferredNV*: proc(device: VkDevice, pipeline: VkPipeline, shader: uint32): VkResult {.stdcall.}
+  vkCreateAccelerationStructureNV*: proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkAccelerationStructureCreateInfoNV,
+    pAllocator: ptr VkAllocationCallbacks,
+    pAccelerationStructure: ptr VkAccelerationStructureNV,
+  ): VkResult {.stdcall.}
+  vkDestroyAccelerationStructureNV*: proc(
+    device: VkDevice,
+    accelerationStructure: VkAccelerationStructureNV,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}
+  vkGetAccelerationStructureMemoryRequirementsNV*: proc(
+    device: VkDevice,
+    pInfo: ptr VkAccelerationStructureMemoryRequirementsInfoNV,
+    pMemoryRequirements: ptr VkMemoryRequirements2KHR,
+  ): void {.stdcall.}
+  vkBindAccelerationStructureMemoryNV*: proc(
+    device: VkDevice,
+    bindInfoCount: uint32,
+    pBindInfos: ptr VkBindAccelerationStructureMemoryInfoNV,
+  ): VkResult {.stdcall.}
+  vkCmdBuildAccelerationStructureNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    pInfo: ptr VkAccelerationStructureInfoNV,
+    instanceData: VkBuffer,
+    instanceOffset: VkDeviceSize,
+    update: VkBool32,
+    dst: VkAccelerationStructureNV,
+    src: VkAccelerationStructureNV,
+    scratch: VkBuffer,
+    scratchOffset: VkDeviceSize,
+  ): void {.stdcall.}
+  vkCmdCopyAccelerationStructureNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    dst: VkAccelerationStructureNV,
+    src: VkAccelerationStructureNV,
+    mode: VkCopyAccelerationStructureModeKHR,
+  ): void {.stdcall.}
+  vkCmdTraceRaysNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    raygenShaderBindingTableBuffer: VkBuffer,
+    raygenShaderBindingOffset: VkDeviceSize,
+    missShaderBindingTableBuffer: VkBuffer,
+    missShaderBindingOffset: VkDeviceSize,
+    missShaderBindingStride: VkDeviceSize,
+    hitShaderBindingTableBuffer: VkBuffer,
+    hitShaderBindingOffset: VkDeviceSize,
+    hitShaderBindingStride: VkDeviceSize,
+    callableShaderBindingTableBuffer: VkBuffer,
+    callableShaderBindingOffset: VkDeviceSize,
+    callableShaderBindingStride: VkDeviceSize,
+    width: uint32,
+    height: uint32,
+    depth: uint32,
+  ): void {.stdcall.}
+  vkCreateRayTracingPipelinesNV*: proc(
+    device: VkDevice,
+    pipelineCache: VkPipelineCache,
+    createInfoCount: uint32,
+    pCreateInfos: ptr VkRayTracingPipelineCreateInfoNV,
+    pAllocator: ptr VkAllocationCallbacks,
+    pPipelines: ptr VkPipeline,
+  ): VkResult {.stdcall.}
+  vkGetRayTracingShaderGroupHandlesNV*: proc(
+    device: VkDevice,
+    pipeline: VkPipeline,
+    firstGroup: uint32,
+    groupCount: uint32,
+    dataSize: csize_t,
+    pData: pointer,
+  ): VkResult {.stdcall.}
+  vkGetAccelerationStructureHandleNV*: proc(
+    device: VkDevice,
+    accelerationStructure: VkAccelerationStructureNV,
+    dataSize: csize_t,
+    pData: pointer,
+  ): VkResult {.stdcall.}
+  vkCmdWriteAccelerationStructuresPropertiesNV*: proc(
+    commandBuffer: VkCommandBuffer,
+    accelerationStructureCount: uint32,
+    pAccelerationStructures: ptr VkAccelerationStructureNV,
+    queryType: VkQueryType,
+    queryPool: VkQueryPool,
+    firstQuery: uint32,
+  ): void {.stdcall.}
+  vkCompileDeferredNV*:
+    proc(device: VkDevice, pipeline: VkPipeline, shader: uint32): VkResult {.stdcall.}
 proc loadVK_NV_ray_tracing*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
   loadVK_VERSION_1_1(instance)
-  vkCreateAccelerationStructureNV = cast[proc(device: VkDevice, pCreateInfo: ptr VkAccelerationStructureCreateInfoNV, pAllocator: ptr VkAllocationCallbacks, pAccelerationStructure: ptr VkAccelerationStructureNV): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateAccelerationStructureNV"))
-  vkDestroyAccelerationStructureNV = cast[proc(device: VkDevice, accelerationStructure: VkAccelerationStructureNV, pAllocator: ptr VkAllocationCallbacks): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkDestroyAccelerationStructureNV"))
-  vkGetAccelerationStructureMemoryRequirementsNV = cast[proc(device: VkDevice, pInfo: ptr VkAccelerationStructureMemoryRequirementsInfoNV, pMemoryRequirements: ptr VkMemoryRequirements2KHR): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetAccelerationStructureMemoryRequirementsNV"))
-  vkBindAccelerationStructureMemoryNV = cast[proc(device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindAccelerationStructureMemoryInfoNV): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkBindAccelerationStructureMemoryNV"))
-  vkCmdBuildAccelerationStructureNV = cast[proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkAccelerationStructureInfoNV, instanceData: VkBuffer, instanceOffset: VkDeviceSize, update: VkBool32, dst: VkAccelerationStructureNV, src: VkAccelerationStructureNV, scratch: VkBuffer, scratchOffset: VkDeviceSize): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdBuildAccelerationStructureNV"))
-  vkCmdCopyAccelerationStructureNV = cast[proc(commandBuffer: VkCommandBuffer, dst: VkAccelerationStructureNV, src: VkAccelerationStructureNV, mode: VkCopyAccelerationStructureModeKHR): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdCopyAccelerationStructureNV"))
-  vkCmdTraceRaysNV = cast[proc(commandBuffer: VkCommandBuffer, raygenShaderBindingTableBuffer: VkBuffer, raygenShaderBindingOffset: VkDeviceSize, missShaderBindingTableBuffer: VkBuffer, missShaderBindingOffset: VkDeviceSize, missShaderBindingStride: VkDeviceSize, hitShaderBindingTableBuffer: VkBuffer, hitShaderBindingOffset: VkDeviceSize, hitShaderBindingStride: VkDeviceSize, callableShaderBindingTableBuffer: VkBuffer, callableShaderBindingOffset: VkDeviceSize, callableShaderBindingStride: VkDeviceSize, width: uint32, height: uint32, depth: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdTraceRaysNV"))
-  vkCreateRayTracingPipelinesNV = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkRayTracingPipelineCreateInfoNV, pAllocator: ptr VkAllocationCallbacks, pPipelines: ptr VkPipeline): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateRayTracingPipelinesNV"))
+  vkCreateAccelerationStructureNV = cast[proc(
+    device: VkDevice,
+    pCreateInfo: ptr VkAccelerationStructureCreateInfoNV,
+    pAllocator: ptr VkAllocationCallbacks,
+    pAccelerationStructure: ptr VkAccelerationStructureNV,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCreateAccelerationStructureNV"
+  ))
+  vkDestroyAccelerationStructureNV = cast[proc(
+    device: VkDevice,
+    accelerationStructure: VkAccelerationStructureNV,
+    pAllocator: ptr VkAllocationCallbacks,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkDestroyAccelerationStructureNV"
+  ))
+  vkGetAccelerationStructureMemoryRequirementsNV = cast[proc(
+    device: VkDevice,
+    pInfo: ptr VkAccelerationStructureMemoryRequirementsInfoNV,
+    pMemoryRequirements: ptr VkMemoryRequirements2KHR,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetAccelerationStructureMemoryRequirementsNV"
+  ))
+  vkBindAccelerationStructureMemoryNV = cast[proc(
+    device: VkDevice,
+    bindInfoCount: uint32,
+    pBindInfos: ptr VkBindAccelerationStructureMemoryInfoNV,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkBindAccelerationStructureMemoryNV"
+  ))
+  vkCmdBuildAccelerationStructureNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    pInfo: ptr VkAccelerationStructureInfoNV,
+    instanceData: VkBuffer,
+    instanceOffset: VkDeviceSize,
+    update: VkBool32,
+    dst: VkAccelerationStructureNV,
+    src: VkAccelerationStructureNV,
+    scratch: VkBuffer,
+    scratchOffset: VkDeviceSize,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdBuildAccelerationStructureNV"
+  ))
+  vkCmdCopyAccelerationStructureNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    dst: VkAccelerationStructureNV,
+    src: VkAccelerationStructureNV,
+    mode: VkCopyAccelerationStructureModeKHR,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdCopyAccelerationStructureNV"
+  ))
+  vkCmdTraceRaysNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    raygenShaderBindingTableBuffer: VkBuffer,
+    raygenShaderBindingOffset: VkDeviceSize,
+    missShaderBindingTableBuffer: VkBuffer,
+    missShaderBindingOffset: VkDeviceSize,
+    missShaderBindingStride: VkDeviceSize,
+    hitShaderBindingTableBuffer: VkBuffer,
+    hitShaderBindingOffset: VkDeviceSize,
+    hitShaderBindingStride: VkDeviceSize,
+    callableShaderBindingTableBuffer: VkBuffer,
+    callableShaderBindingOffset: VkDeviceSize,
+    callableShaderBindingStride: VkDeviceSize,
+    width: uint32,
+    height: uint32,
+    depth: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdTraceRaysNV"))
+  vkCreateRayTracingPipelinesNV = cast[proc(
+    device: VkDevice,
+    pipelineCache: VkPipelineCache,
+    createInfoCount: uint32,
+    pCreateInfos: ptr VkRayTracingPipelineCreateInfoNV,
+    pAllocator: ptr VkAllocationCallbacks,
+    pPipelines: ptr VkPipeline,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCreateRayTracingPipelinesNV"
+  ))
   vkGetRayTracingShaderGroupHandlesNV = vkGetRayTracingShaderGroupHandlesKHR
-  vkGetAccelerationStructureHandleNV = cast[proc(device: VkDevice, accelerationStructure: VkAccelerationStructureNV, dataSize: csize_t, pData: pointer): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetAccelerationStructureHandleNV"))
-  vkCmdWriteAccelerationStructuresPropertiesNV = cast[proc(commandBuffer: VkCommandBuffer, accelerationStructureCount: uint32, pAccelerationStructures: ptr VkAccelerationStructureNV, queryType: VkQueryType, queryPool: VkQueryPool, firstQuery: uint32): void {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCmdWriteAccelerationStructuresPropertiesNV"))
-  vkCompileDeferredNV = cast[proc(device: VkDevice, pipeline: VkPipeline, shader: uint32): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCompileDeferredNV"))
+  vkGetAccelerationStructureHandleNV = cast[proc(
+    device: VkDevice,
+    accelerationStructure: VkAccelerationStructureNV,
+    dataSize: csize_t,
+    pData: pointer,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetAccelerationStructureHandleNV"
+  ))
+  vkCmdWriteAccelerationStructuresPropertiesNV = cast[proc(
+    commandBuffer: VkCommandBuffer,
+    accelerationStructureCount: uint32,
+    pAccelerationStructures: ptr VkAccelerationStructureNV,
+    queryType: VkQueryType,
+    queryPool: VkQueryPool,
+    firstQuery: uint32,
+  ): void {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkCmdWriteAccelerationStructuresPropertiesNV"
+  ))
+  vkCompileDeferredNV = cast[proc(
+    device: VkDevice, pipeline: VkPipeline, shader: uint32
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCompileDeferredNV"))
 
 # extension VK_KHR_present_wait
-var
-  vkWaitForPresentKHR*: proc(device: VkDevice, swapchain: VkSwapchainKHR, presentId: uint64, timeout: uint64): VkResult {.stdcall.}
+var vkWaitForPresentKHR*: proc(
+  device: VkDevice, swapchain: VkSwapchainKHR, presentId: uint64, timeout: uint64
+): VkResult {.stdcall.}
 proc loadVK_KHR_present_wait*(instance: VkInstance) =
   loadVK_KHR_swapchain(instance)
   loadVK_KHR_present_id(instance)
-  vkWaitForPresentKHR = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, presentId: uint64, timeout: uint64): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkWaitForPresentKHR"))
+  vkWaitForPresentKHR = cast[proc(
+    device: VkDevice, swapchain: VkSwapchainKHR, presentId: uint64, timeout: uint64
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkWaitForPresentKHR"))
 
 proc loadVK_NV_ray_tracing_invocation_reorder*(instance: VkInstance) =
   loadVK_KHR_ray_tracing_pipeline(instance)
@@ -11769,11 +18382,13 @@
   "VK_EXT_pipeline_library_group_handles": loadVK_EXT_pipeline_library_group_handles,
   "VK_NV_geometry_shader_passthrough": loadVK_NV_geometry_shader_passthrough,
   "VK_EXT_line_rasterization": loadVK_EXT_line_rasterization,
-  "VK_EXT_rasterization_order_attachment_access": loadVK_EXT_rasterization_order_attachment_access,
+  "VK_EXT_rasterization_order_attachment_access":
+    loadVK_EXT_rasterization_order_attachment_access,
   "VK_EXT_shader_atomic_float2": loadVK_EXT_shader_atomic_float2,
   "VK_IMG_format_pvrtc": loadVK_IMG_format_pvrtc,
   "VK_AMD_texture_gather_bias_lod": loadVK_AMD_texture_gather_bias_lod,
-  "VK_KHR_shader_subgroup_uniform_control_flow": loadVK_KHR_shader_subgroup_uniform_control_flow,
+  "VK_KHR_shader_subgroup_uniform_control_flow":
+    loadVK_KHR_shader_subgroup_uniform_control_flow,
   "VK_AMD_shader_fragment_mask": loadVK_AMD_shader_fragment_mask,
   "VK_EXT_external_memory_dma_buf": loadVK_EXT_external_memory_dma_buf,
   "VK_IMG_filter_cubic": loadVK_IMG_filter_cubic,
@@ -11803,7 +18418,8 @@
   "VK_GOOGLE_user_type": loadVK_GOOGLE_user_type,
   "VK_KHR_ray_tracing_maintenance1": loadVK_KHR_ray_tracing_maintenance1,
   "VK_EXT_debug_report": loadVK_EXT_debug_report,
-  "VK_EXT_multisampled_render_to_single_sampled": loadVK_EXT_multisampled_render_to_single_sampled,
+  "VK_EXT_multisampled_render_to_single_sampled":
+    loadVK_EXT_multisampled_render_to_single_sampled,
   "VK_EXT_device_address_binding_report": loadVK_EXT_device_address_binding_report,
   "VK_NV_clip_space_w_scaling": loadVK_NV_clip_space_w_scaling,
   "VK_NV_fill_rectangle": loadVK_NV_fill_rectangle,
@@ -11871,7 +18487,8 @@
   "VK_EXT_post_depth_coverage": loadVK_EXT_post_depth_coverage,
   "VK_EXT_rgba10x6_formats": loadVK_EXT_rgba10x6_formats,
   "VK_KHR_external_memory_fd": loadVK_KHR_external_memory_fd,
-  "VK_NV_dedicated_allocation_image_aliasing": loadVK_NV_dedicated_allocation_image_aliasing,
+  "VK_NV_dedicated_allocation_image_aliasing":
+    loadVK_NV_dedicated_allocation_image_aliasing,
   "VK_NV_cooperative_matrix": loadVK_NV_cooperative_matrix,
   "VK_EXT_depth_clamp_zero_one": loadVK_EXT_depth_clamp_zero_one,
   "VK_EXT_conditional_rendering": loadVK_EXT_conditional_rendering,
@@ -11889,7 +18506,8 @@
   "VK_KHR_workgroup_memory_explicit_layout": loadVK_KHR_workgroup_memory_explicit_layout,
   "VK_EXT_index_type_uint8": loadVK_EXT_index_type_uint8,
   "VK_EXT_mesh_shader": loadVK_EXT_mesh_shader,
-  "VK_AMD_shader_early_and_late_fragment_tests": loadVK_AMD_shader_early_and_late_fragment_tests,
+  "VK_AMD_shader_early_and_late_fragment_tests":
+    loadVK_AMD_shader_early_and_late_fragment_tests,
   "VK_KHR_display_swapchain": loadVK_KHR_display_swapchain,
   "VK_EXT_transform_feedback": loadVK_EXT_transform_feedback,
   "VK_GOOGLE_decorate_string": loadVK_GOOGLE_decorate_string,
@@ -11941,7 +18559,8 @@
   "VK_EXT_shader_stencil_export": loadVK_EXT_shader_stencil_export,
   "VK_KHR_shared_presentable_image": loadVK_KHR_shared_presentable_image,
   "VK_NV_external_memory_rdma": loadVK_NV_external_memory_rdma,
-  "VK_EXT_image_compression_control_swapchain": loadVK_EXT_image_compression_control_swapchain,
+  "VK_EXT_image_compression_control_swapchain":
+    loadVK_EXT_image_compression_control_swapchain,
   "VK_EXT_hdr_metadata": loadVK_EXT_hdr_metadata,
   "VK_AMD_device_coherent_memory": loadVK_AMD_device_coherent_memory,
   "VK_EXT_device_memory_report": loadVK_EXT_device_memory_report,
@@ -11976,7 +18595,8 @@
   EXTENSION_LOADERS["VK_KHR_xlib_surface"] = loadVK_KHR_xlib_surface
 when defined(VK_USE_PLATFORM_WIN32_KHR):
   include ./platform/win32
-  EXTENSION_LOADERS["VK_KHR_external_semaphore_win32"] = loadVK_KHR_external_semaphore_win32
+  EXTENSION_LOADERS["VK_KHR_external_semaphore_win32"] =
+    loadVK_KHR_external_semaphore_win32
   EXTENSION_LOADERS["VK_EXT_full_screen_exclusive"] = loadVK_EXT_full_screen_exclusive
   EXTENSION_LOADERS["VK_NV_external_memory_win32"] = loadVK_NV_external_memory_win32
   EXTENSION_LOADERS["VK_KHR_external_memory_win32"] = loadVK_KHR_external_memory_win32
@@ -11992,12 +18612,29 @@
 # load global functions immediately
 block globalFunctions:
   let instance = VkInstance(0)
-  vkEnumerateInstanceVersion = cast[proc(pApiVersion: ptr uint32): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkEnumerateInstanceVersion"))
-  vkEnumerateInstanceExtensionProperties = cast[proc(pLayerName: cstring, pPropertyCount: ptr uint32, pProperties: ptr VkExtensionProperties): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkEnumerateInstanceExtensionProperties"))
-  vkEnumerateInstanceLayerProperties = cast[proc(pPropertyCount: ptr uint32, pProperties: ptr VkLayerProperties): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkEnumerateInstanceLayerProperties"))
-  vkCreateInstance = cast[proc(pCreateInfo: ptr VkInstanceCreateInfo, pAllocator: ptr VkAllocationCallbacks, pInstance: ptr VkInstance): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateInstance"))
-
-converter NimBool2VkBool*(a: bool): VkBool32 = VkBool32(a)
+  vkEnumerateInstanceVersion = cast[proc(pApiVersion: ptr uint32): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkEnumerateInstanceVersion"
+  ))
+  vkEnumerateInstanceExtensionProperties = cast[proc(
+    pLayerName: cstring,
+    pPropertyCount: ptr uint32,
+    pProperties: ptr VkExtensionProperties,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkEnumerateInstanceExtensionProperties"
+  ))
+  vkEnumerateInstanceLayerProperties = cast[proc(
+    pPropertyCount: ptr uint32, pProperties: ptr VkLayerProperties
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkEnumerateInstanceLayerProperties"
+  ))
+  vkCreateInstance = cast[proc(
+    pCreateInfo: ptr VkInstanceCreateInfo,
+    pAllocator: ptr VkAllocationCallbacks,
+    pInstance: ptr VkInstance,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateInstance"))
+
+converter NimBool2VkBool*(a: bool): VkBool32 =
+  VkBool32(a)
 
 template checkVkResult*(call: untyped) =
   when defined(release):
@@ -12011,5 +18648,6 @@
     let value = call
     if value != VK_SUCCESS:
       error "Vulkan error: ", astToStr(call), " returned ", $value
-      raise newException(Exception, "Vulkan error: " & astToStr(call) &
-          " returned " & $value)
+      raise newException(
+        Exception, "Vulkan error: " & astToStr(call) & " returned " & $value
+      )
--- a/semicongine/rendering/vulkan/platform/win32.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/rendering/vulkan/platform/win32.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -5,16 +5,19 @@
     flags*: VkWin32SurfaceCreateFlagsKHR
     hinstance*: HINSTANCE
     hwnd*: HWND
+
   VkImportMemoryWin32HandleInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     handleType*: VkExternalMemoryHandleTypeFlagsNV
     handle*: HANDLE
+
   VkExportMemoryWin32HandleInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
     pAttributes*: ptr SECURITY_ATTRIBUTES
     dwAccess*: DWORD
+
   VkWin32KeyedMutexAcquireReleaseInfoNV* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -25,27 +28,32 @@
     releaseCount*: uint32
     pReleaseSyncs*: ptr VkDeviceMemory
     pReleaseKeys*: ptr uint64
+
   VkImportMemoryWin32HandleInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     handleType*: VkExternalMemoryHandleTypeFlagBits
     handle*: HANDLE
     name*: LPCWSTR
+
   VkExportMemoryWin32HandleInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     pAttributes*: ptr SECURITY_ATTRIBUTES
     dwAccess*: DWORD
     name*: LPCWSTR
+
   VkMemoryWin32HandlePropertiesKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     memoryTypeBits*: uint32
+
   VkMemoryGetWin32HandleInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     memory*: VkDeviceMemory
     handleType*: VkExternalMemoryHandleTypeFlagBits
+
   VkWin32KeyedMutexAcquireReleaseInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -56,6 +64,7 @@
     releaseCount*: uint32
     pReleaseSyncs*: ptr VkDeviceMemory
     pReleaseKeys*: ptr uint64
+
   VkImportSemaphoreWin32HandleInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -64,12 +73,14 @@
     handleType*: VkExternalSemaphoreHandleTypeFlagBits
     handle*: HANDLE
     name*: LPCWSTR
+
   VkExportSemaphoreWin32HandleInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     pAttributes*: ptr SECURITY_ATTRIBUTES
     dwAccess*: DWORD
     name*: LPCWSTR
+
   VkD3D12FenceSubmitInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -77,11 +88,13 @@
     pWaitSemaphoreValues*: ptr uint64
     signalSemaphoreValuesCount*: uint32
     pSignalSemaphoreValues*: ptr uint64
+
   VkSemaphoreGetWin32HandleInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     semaphore*: VkSemaphore
     handleType*: VkExternalSemaphoreHandleTypeFlagBits
+
   VkImportFenceWin32HandleInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
@@ -90,29 +103,35 @@
     handleType*: VkExternalFenceHandleTypeFlagBits
     handle*: HANDLE
     name*: LPCWSTR
+
   VkExportFenceWin32HandleInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     pAttributes*: ptr SECURITY_ATTRIBUTES
     dwAccess*: DWORD
     name*: LPCWSTR
+
   VkFenceGetWin32HandleInfoKHR* = object
     sType*: VkStructureType
     pNext*: pointer
     fence*: VkFence
     handleType*: VkExternalFenceHandleTypeFlagBits
+
   VkSurfaceFullScreenExclusiveInfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     fullScreenExclusive*: VkFullScreenExclusiveEXT
+
   VkSurfaceFullScreenExclusiveWin32InfoEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     hmonitor*: HMONITOR
+
   VkSurfaceCapabilitiesFullScreenExclusiveEXT* = object
     sType*: VkStructureType
     pNext*: pointer
     fullScreenExclusiveSupported*: VkBool32
+
   HINSTANCE {.header: "windows.h".} = int
   HWND {.header: "windows.h".} = int
   HMONITOR {.header: "windows.h".} = int
@@ -120,74 +139,201 @@
   SECURITY_ATTRIBUTES {.header: "windows.h".} = object
   DWORD {.header: "windows.h".} = int32
   LPCWSTR {.header: "windows.h".} = ptr uint16
+
 # extension VK_KHR_external_semaphore_win32
 var
-  vkImportSemaphoreWin32HandleKHR*: proc(device: VkDevice, pImportSemaphoreWin32HandleInfo: ptr VkImportSemaphoreWin32HandleInfoKHR): VkResult {.stdcall.}
-  vkGetSemaphoreWin32HandleKHR*: proc(device: VkDevice, pGetWin32HandleInfo: ptr VkSemaphoreGetWin32HandleInfoKHR, pHandle: ptr HANDLE): VkResult {.stdcall.}
+  vkImportSemaphoreWin32HandleKHR*: proc(
+    device: VkDevice,
+    pImportSemaphoreWin32HandleInfo: ptr VkImportSemaphoreWin32HandleInfoKHR,
+  ): VkResult {.stdcall.}
+  vkGetSemaphoreWin32HandleKHR*: proc(
+    device: VkDevice,
+    pGetWin32HandleInfo: ptr VkSemaphoreGetWin32HandleInfoKHR,
+    pHandle: ptr HANDLE,
+  ): VkResult {.stdcall.}
 proc loadVK_KHR_external_semaphore_win32*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkImportSemaphoreWin32HandleKHR = cast[proc(device: VkDevice, pImportSemaphoreWin32HandleInfo: ptr VkImportSemaphoreWin32HandleInfoKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkImportSemaphoreWin32HandleKHR"))
-  vkGetSemaphoreWin32HandleKHR = cast[proc(device: VkDevice, pGetWin32HandleInfo: ptr VkSemaphoreGetWin32HandleInfoKHR, pHandle: ptr HANDLE): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetSemaphoreWin32HandleKHR"))
+  vkImportSemaphoreWin32HandleKHR = cast[proc(
+    device: VkDevice,
+    pImportSemaphoreWin32HandleInfo: ptr VkImportSemaphoreWin32HandleInfoKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkImportSemaphoreWin32HandleKHR"
+  ))
+  vkGetSemaphoreWin32HandleKHR = cast[proc(
+    device: VkDevice,
+    pGetWin32HandleInfo: ptr VkSemaphoreGetWin32HandleInfoKHR,
+    pHandle: ptr HANDLE,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetSemaphoreWin32HandleKHR"
+  ))
 
 # extension VK_KHR_external_memory_win32
 var
-  vkGetMemoryWin32HandleKHR*: proc(device: VkDevice, pGetWin32HandleInfo: ptr VkMemoryGetWin32HandleInfoKHR, pHandle: ptr HANDLE): VkResult {.stdcall.}
-  vkGetMemoryWin32HandlePropertiesKHR*: proc(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, handle: HANDLE, pMemoryWin32HandleProperties: ptr VkMemoryWin32HandlePropertiesKHR): VkResult {.stdcall.}
+  vkGetMemoryWin32HandleKHR*: proc(
+    device: VkDevice,
+    pGetWin32HandleInfo: ptr VkMemoryGetWin32HandleInfoKHR,
+    pHandle: ptr HANDLE,
+  ): VkResult {.stdcall.}
+  vkGetMemoryWin32HandlePropertiesKHR*: proc(
+    device: VkDevice,
+    handleType: VkExternalMemoryHandleTypeFlagBits,
+    handle: HANDLE,
+    pMemoryWin32HandleProperties: ptr VkMemoryWin32HandlePropertiesKHR,
+  ): VkResult {.stdcall.}
 proc loadVK_KHR_external_memory_win32*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkGetMemoryWin32HandleKHR = cast[proc(device: VkDevice, pGetWin32HandleInfo: ptr VkMemoryGetWin32HandleInfoKHR, pHandle: ptr HANDLE): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetMemoryWin32HandleKHR"))
-  vkGetMemoryWin32HandlePropertiesKHR = cast[proc(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, handle: HANDLE, pMemoryWin32HandleProperties: ptr VkMemoryWin32HandlePropertiesKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetMemoryWin32HandlePropertiesKHR"))
+  vkGetMemoryWin32HandleKHR = cast[proc(
+    device: VkDevice,
+    pGetWin32HandleInfo: ptr VkMemoryGetWin32HandleInfoKHR,
+    pHandle: ptr HANDLE,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetMemoryWin32HandleKHR"))
+  vkGetMemoryWin32HandlePropertiesKHR = cast[proc(
+    device: VkDevice,
+    handleType: VkExternalMemoryHandleTypeFlagBits,
+    handle: HANDLE,
+    pMemoryWin32HandleProperties: ptr VkMemoryWin32HandlePropertiesKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetMemoryWin32HandlePropertiesKHR"
+  ))
 
 # extension VK_KHR_external_fence_win32
 var
-  vkImportFenceWin32HandleKHR*: proc(device: VkDevice, pImportFenceWin32HandleInfo: ptr VkImportFenceWin32HandleInfoKHR): VkResult {.stdcall.}
-  vkGetFenceWin32HandleKHR*: proc(device: VkDevice, pGetWin32HandleInfo: ptr VkFenceGetWin32HandleInfoKHR, pHandle: ptr HANDLE): VkResult {.stdcall.}
+  vkImportFenceWin32HandleKHR*: proc(
+    device: VkDevice, pImportFenceWin32HandleInfo: ptr VkImportFenceWin32HandleInfoKHR
+  ): VkResult {.stdcall.}
+  vkGetFenceWin32HandleKHR*: proc(
+    device: VkDevice,
+    pGetWin32HandleInfo: ptr VkFenceGetWin32HandleInfoKHR,
+    pHandle: ptr HANDLE,
+  ): VkResult {.stdcall.}
 proc loadVK_KHR_external_fence_win32*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
-  vkImportFenceWin32HandleKHR = cast[proc(device: VkDevice, pImportFenceWin32HandleInfo: ptr VkImportFenceWin32HandleInfoKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkImportFenceWin32HandleKHR"))
-  vkGetFenceWin32HandleKHR = cast[proc(device: VkDevice, pGetWin32HandleInfo: ptr VkFenceGetWin32HandleInfoKHR, pHandle: ptr HANDLE): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetFenceWin32HandleKHR"))
+  vkImportFenceWin32HandleKHR = cast[proc(
+    device: VkDevice, pImportFenceWin32HandleInfo: ptr VkImportFenceWin32HandleInfoKHR
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkImportFenceWin32HandleKHR"
+  ))
+  vkGetFenceWin32HandleKHR = cast[proc(
+    device: VkDevice,
+    pGetWin32HandleInfo: ptr VkFenceGetWin32HandleInfoKHR,
+    pHandle: ptr HANDLE,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetFenceWin32HandleKHR"))
 
 proc loadVK_KHR_win32_keyed_mutex*(instance: VkInstance) =
   loadVK_KHR_external_memory_win32(instance)
 
 # extension VK_NV_external_memory_win32
-var
-  vkGetMemoryWin32HandleNV*: proc(device: VkDevice, memory: VkDeviceMemory, handleType: VkExternalMemoryHandleTypeFlagsNV, pHandle: ptr HANDLE): VkResult {.stdcall.}
+var vkGetMemoryWin32HandleNV*: proc(
+  device: VkDevice,
+  memory: VkDeviceMemory,
+  handleType: VkExternalMemoryHandleTypeFlagsNV,
+  pHandle: ptr HANDLE,
+): VkResult {.stdcall.}
 proc loadVK_NV_external_memory_win32*(instance: VkInstance) =
   loadVK_NV_external_memory(instance)
-  vkGetMemoryWin32HandleNV = cast[proc(device: VkDevice, memory: VkDeviceMemory, handleType: VkExternalMemoryHandleTypeFlagsNV, pHandle: ptr HANDLE): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetMemoryWin32HandleNV"))
+  vkGetMemoryWin32HandleNV = cast[proc(
+    device: VkDevice,
+    memory: VkDeviceMemory,
+    handleType: VkExternalMemoryHandleTypeFlagsNV,
+    pHandle: ptr HANDLE,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetMemoryWin32HandleNV"))
 
 # extension VK_EXT_full_screen_exclusive
 var
-  vkGetPhysicalDeviceSurfacePresentModes2EXT*: proc(physicalDevice: VkPhysicalDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR, pPresentModeCount: ptr uint32, pPresentModes: ptr VkPresentModeKHR): VkResult {.stdcall.}
-  vkAcquireFullScreenExclusiveModeEXT*: proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}
-  vkReleaseFullScreenExclusiveModeEXT*: proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}
-  vkGetDeviceGroupSurfacePresentModes2EXT*: proc(device: VkDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR, pModes: ptr VkDeviceGroupPresentModeFlagsKHR): VkResult {.stdcall.}
+  vkGetPhysicalDeviceSurfacePresentModes2EXT*: proc(
+    physicalDevice: VkPhysicalDevice,
+    pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR,
+    pPresentModeCount: ptr uint32,
+    pPresentModes: ptr VkPresentModeKHR,
+  ): VkResult {.stdcall.}
+  vkAcquireFullScreenExclusiveModeEXT*:
+    proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}
+  vkReleaseFullScreenExclusiveModeEXT*:
+    proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}
+  vkGetDeviceGroupSurfacePresentModes2EXT*: proc(
+    device: VkDevice,
+    pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR,
+    pModes: ptr VkDeviceGroupPresentModeFlagsKHR,
+  ): VkResult {.stdcall.}
 proc loadVK_EXT_full_screen_exclusive*(instance: VkInstance) =
   loadVK_VERSION_1_1(instance)
   loadVK_KHR_surface(instance)
   loadVK_KHR_get_surface_capabilities2(instance)
   loadVK_KHR_swapchain(instance)
-  vkGetPhysicalDeviceSurfacePresentModes2EXT = cast[proc(physicalDevice: VkPhysicalDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR, pPresentModeCount: ptr uint32, pPresentModes: ptr VkPresentModeKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
-  vkAcquireFullScreenExclusiveModeEXT = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAcquireFullScreenExclusiveModeEXT"))
-  vkReleaseFullScreenExclusiveModeEXT = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkReleaseFullScreenExclusiveModeEXT"))
-  vkGetDeviceGroupSurfacePresentModes2EXT = cast[proc(device: VkDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR, pModes: ptr VkDeviceGroupPresentModeFlagsKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceGroupSurfacePresentModes2EXT"))
-  vkGetDeviceGroupSurfacePresentModes2EXT = cast[proc(device: VkDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR, pModes: ptr VkDeviceGroupPresentModeFlagsKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetDeviceGroupSurfacePresentModes2EXT"))
+  vkGetPhysicalDeviceSurfacePresentModes2EXT = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR,
+    pPresentModeCount: ptr uint32,
+    pPresentModes: ptr VkPresentModeKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT"
+  ))
+  vkAcquireFullScreenExclusiveModeEXT = cast[proc(
+    device: VkDevice, swapchain: VkSwapchainKHR
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkAcquireFullScreenExclusiveModeEXT"
+  ))
+  vkReleaseFullScreenExclusiveModeEXT = cast[proc(
+    device: VkDevice, swapchain: VkSwapchainKHR
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkReleaseFullScreenExclusiveModeEXT"
+  ))
+  vkGetDeviceGroupSurfacePresentModes2EXT = cast[proc(
+    device: VkDevice,
+    pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR,
+    pModes: ptr VkDeviceGroupPresentModeFlagsKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDeviceGroupSurfacePresentModes2EXT"
+  ))
+  vkGetDeviceGroupSurfacePresentModes2EXT = cast[proc(
+    device: VkDevice,
+    pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR,
+    pModes: ptr VkDeviceGroupPresentModeFlagsKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetDeviceGroupSurfacePresentModes2EXT"
+  ))
 
 # extension VK_KHR_win32_surface
 var
-  vkCreateWin32SurfaceKHR*: proc(instance: VkInstance, pCreateInfo: ptr VkWin32SurfaceCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pSurface: ptr VkSurfaceKHR): VkResult {.stdcall.}
-  vkGetPhysicalDeviceWin32PresentationSupportKHR*: proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32): VkBool32 {.stdcall.}
+  vkCreateWin32SurfaceKHR*: proc(
+    instance: VkInstance,
+    pCreateInfo: ptr VkWin32SurfaceCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSurface: ptr VkSurfaceKHR,
+  ): VkResult {.stdcall.}
+  vkGetPhysicalDeviceWin32PresentationSupportKHR*: proc(
+    physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32
+  ): VkBool32 {.stdcall.}
 proc loadVK_KHR_win32_surface*(instance: VkInstance) =
   loadVK_KHR_surface(instance)
-  vkCreateWin32SurfaceKHR = cast[proc(instance: VkInstance, pCreateInfo: ptr VkWin32SurfaceCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pSurface: ptr VkSurfaceKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateWin32SurfaceKHR"))
-  vkGetPhysicalDeviceWin32PresentationSupportKHR = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32): VkBool32 {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
+  vkCreateWin32SurfaceKHR = cast[proc(
+    instance: VkInstance,
+    pCreateInfo: ptr VkWin32SurfaceCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSurface: ptr VkSurfaceKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateWin32SurfaceKHR"))
+  vkGetPhysicalDeviceWin32PresentationSupportKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32
+  ): VkBool32 {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR"
+  ))
 
 # extension VK_NV_acquire_winrt_display
 var
-  vkAcquireWinrtDisplayNV*: proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR): VkResult {.stdcall.}
-  vkGetWinrtDisplayNV*: proc(physicalDevice: VkPhysicalDevice, deviceRelativeId: uint32, pDisplay: ptr VkDisplayKHR): VkResult {.stdcall.}
+  vkAcquireWinrtDisplayNV*:
+    proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR): VkResult {.stdcall.}
+  vkGetWinrtDisplayNV*: proc(
+    physicalDevice: VkPhysicalDevice,
+    deviceRelativeId: uint32,
+    pDisplay: ptr VkDisplayKHR,
+  ): VkResult {.stdcall.}
 proc loadVK_NV_acquire_winrt_display*(instance: VkInstance) =
   loadVK_EXT_direct_mode_display(instance)
-  vkAcquireWinrtDisplayNV = cast[proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAcquireWinrtDisplayNV"))
-  vkGetWinrtDisplayNV = cast[proc(physicalDevice: VkPhysicalDevice, deviceRelativeId: uint32, pDisplay: ptr VkDisplayKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetWinrtDisplayNV"))
+  vkAcquireWinrtDisplayNV = cast[proc(
+    physicalDevice: VkPhysicalDevice, display: VkDisplayKHR
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkAcquireWinrtDisplayNV"))
+  vkGetWinrtDisplayNV = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    deviceRelativeId: uint32,
+    pDisplay: ptr VkDisplayKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetWinrtDisplayNV"))
--- a/semicongine/rendering/vulkan/platform/xlib.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/rendering/vulkan/platform/xlib.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -5,14 +5,38 @@
     flags*: VkXlibSurfaceCreateFlagsKHR
     dpy*: ptr Display
     window*: Window
-  Display *{.header: "X11/Xlib.h".} = object
-  VisualID *{.header: "X11/Xlib.h".} = object
-  Window *{.header: "X11/Xlib.h".} = object
+
+  Display* {.header: "X11/Xlib.h".} = object
+  VisualID* {.header: "X11/Xlib.h".} = object
+  Window* {.header: "X11/Xlib.h".} = object
+
 # extension VK_KHR_xlib_surface
 var
-  vkCreateXlibSurfaceKHR*: proc(instance: VkInstance, pCreateInfo: ptr VkXlibSurfaceCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pSurface: ptr VkSurfaceKHR): VkResult {.stdcall.}
-  vkGetPhysicalDeviceXlibPresentationSupportKHR*: proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, dpy: ptr Display, visualID: VisualID): VkBool32 {.stdcall.}
+  vkCreateXlibSurfaceKHR*: proc(
+    instance: VkInstance,
+    pCreateInfo: ptr VkXlibSurfaceCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSurface: ptr VkSurfaceKHR,
+  ): VkResult {.stdcall.}
+  vkGetPhysicalDeviceXlibPresentationSupportKHR*: proc(
+    physicalDevice: VkPhysicalDevice,
+    queueFamilyIndex: uint32,
+    dpy: ptr Display,
+    visualID: VisualID,
+  ): VkBool32 {.stdcall.}
 proc loadVK_KHR_xlib_surface*(instance: VkInstance) =
   loadVK_KHR_surface(instance)
-  vkCreateXlibSurfaceKHR = cast[proc(instance: VkInstance, pCreateInfo: ptr VkXlibSurfaceCreateInfoKHR, pAllocator: ptr VkAllocationCallbacks, pSurface: ptr VkSurfaceKHR): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateXlibSurfaceKHR"))
-  vkGetPhysicalDeviceXlibPresentationSupportKHR = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, dpy: ptr Display, visualID: VisualID): VkBool32 {.stdcall.}](vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
+  vkCreateXlibSurfaceKHR = cast[proc(
+    instance: VkInstance,
+    pCreateInfo: ptr VkXlibSurfaceCreateInfoKHR,
+    pAllocator: ptr VkAllocationCallbacks,
+    pSurface: ptr VkSurfaceKHR,
+  ): VkResult {.stdcall.}](vkGetInstanceProcAddr(instance, "vkCreateXlibSurfaceKHR"))
+  vkGetPhysicalDeviceXlibPresentationSupportKHR = cast[proc(
+    physicalDevice: VkPhysicalDevice,
+    queueFamilyIndex: uint32,
+    dpy: ptr Display,
+    visualID: VisualID,
+  ): VkBool32 {.stdcall.}](vkGetInstanceProcAddr(
+    instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR"
+  ))
--- a/semicongine/rendering/vulkan_wrappers.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/rendering/vulkan_wrappers.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -9,7 +9,8 @@
     var props: VkPhysicalDeviceProperties
     # CANNOT use svkGetPhysicalDeviceProperties (not initialized yet)
     vkGetPhysicalDeviceProperties(pDevice, addr(props))
-    if props.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU and props.limits.maxImageDimension2D > score:
+    if props.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU and
+        props.limits.maxImageDimension2D > score:
       score = props.limits.maxImageDimension2D
       result = pDevice
 
@@ -18,7 +19,8 @@
       var props: VkPhysicalDeviceProperties
       # CANNOT use svkGetPhysicalDeviceProperties (not initialized yet)
       vkGetPhysicalDeviceProperties(pDevice, addr(props))
-      if props.deviceType == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU and props.limits.maxImageDimension2D > score:
+      if props.deviceType == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU and
+          props.limits.maxImageDimension2D > score:
         score = props.limits.maxImageDimension2D
         result = pDevice
 
@@ -26,14 +28,18 @@
 
 proc svkGetPhysicalDeviceSurfaceSupportKHR*(queueFamily: uint32): bool =
   var presentation = VkBool32(false)
-  checkVkResult vkGetPhysicalDeviceSurfaceSupportKHR(vulkan.physicalDevice, queueFamily, vulkan.surface, addr(presentation))
+  checkVkResult vkGetPhysicalDeviceSurfaceSupportKHR(
+    vulkan.physicalDevice, queueFamily, vulkan.surface, addr(presentation)
+  )
   return bool(presentation)
 
 proc getQueueFamily(pDevice: VkPhysicalDevice, qType: VkQueueFlagBits): uint32 =
   var nQueuefamilies: uint32
   vkGetPhysicalDeviceQueueFamilyProperties(pDevice, addr nQueuefamilies, nil)
   var queuFamilies = newSeq[VkQueueFamilyProperties](nQueuefamilies)
-  vkGetPhysicalDeviceQueueFamilyProperties(pDevice, addr nQueuefamilies, queuFamilies.ToCPointer)
+  vkGetPhysicalDeviceQueueFamilyProperties(
+    pDevice, addr nQueuefamilies, queuFamilies.ToCPointer
+  )
   for i in 0'u32 ..< nQueuefamilies:
     if qType in toEnums(queuFamilies[i].queueFlags):
       # for graphics queues we always also want prsentation, they seem never to be separated in practice
@@ -41,25 +47,24 @@
         return i
   assert false, &"Queue of type {qType} not found"
 
-proc svkGetDeviceQueue*(device: VkDevice, queueFamilyIndex: uint32, qType: VkQueueFlagBits): VkQueue =
-  vkGetDeviceQueue(
-    device,
-    queueFamilyIndex,
-    0,
-    addr(result),
-  )
+proc svkGetDeviceQueue*(
+    device: VkDevice, queueFamilyIndex: uint32, qType: VkQueueFlagBits
+): VkQueue =
+  vkGetDeviceQueue(device, queueFamilyIndex, 0, addr(result))
 
 func size(format: VkFormat): uint64 =
-  const formatSize = [
-    VK_FORMAT_B8G8R8A8_SRGB.int: 4'u64,
-  ]
+  const formatSize = [VK_FORMAT_B8G8R8A8_SRGB.int: 4'u64]
   return formatSize[format.int]
 
 proc svkGetPhysicalDeviceSurfacePresentModesKHR*(): seq[VkPresentModeKHR] =
   var n_modes: uint32
-  checkVkResult vkGetPhysicalDeviceSurfacePresentModesKHR(vulkan.physicalDevice, vulkan.surface, addr(n_modes), nil)
+  checkVkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
+    vulkan.physicalDevice, vulkan.surface, addr(n_modes), nil
+  )
   result = newSeq[VkPresentModeKHR](n_modes)
-  checkVkResult vkGetPhysicalDeviceSurfacePresentModesKHR(vulkan.physicalDevice, vulkan.surface, addr(n_modes), result.ToCPointer)
+  checkVkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
+    vulkan.physicalDevice, vulkan.surface, addr(n_modes), result.ToCPointer
+  )
 
 proc hasValidationLayer*(): bool =
   var n_layers: uint32
@@ -97,13 +102,16 @@
     memoryTypeIndex: typeIndex,
   )
   checkVkResult vkAllocateMemory(
-    vulkan.device,
-    addr(memoryAllocationInfo),
-    nil,
-    addr(result),
+    vulkan.device, addr(memoryAllocationInfo), nil, addr(result)
   )
 
-proc svkCreate2DImage*(width, height: uint32, format: VkFormat, usage: openArray[VkImageUsageFlagBits], samples = VK_SAMPLE_COUNT_1_BIT, nLayers = 1'u32): VkImage =
+proc svkCreate2DImage*(
+    width, height: uint32,
+    format: VkFormat,
+    usage: openArray[VkImageUsageFlagBits],
+    samples = VK_SAMPLE_COUNT_1_BIT,
+    nLayers = 1'u32,
+): VkImage =
   var imageProps: VkImageFormatProperties
   checkVkResult vkGetPhysicalDeviceImageFormatProperties(
     vulkan.physicalDevice,
@@ -112,7 +120,7 @@
     VK_IMAGE_TILING_OPTIMAL,
     usage.toBits,
     VkImageCreateFlags(0),
-    addr(imageProps)
+    addr(imageProps),
   )
 
   var imageInfo = VkImageCreateInfo(
@@ -130,7 +138,12 @@
   )
   checkVkResult vkCreateImage(vulkan.device, addr imageInfo, nil, addr(result))
 
-proc svkCreate2DImageView*(image: VkImage, format: VkFormat, aspect = VK_IMAGE_ASPECT_COLOR_BIT, nLayers=1'u32): VkImageView =
+proc svkCreate2DImageView*(
+    image: VkImage,
+    format: VkFormat,
+    aspect = VK_IMAGE_ASPECT_COLOR_BIT,
+    nLayers = 1'u32,
+): VkImageView =
   var createInfo = VkImageViewCreateInfo(
     sType: VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
     image: image,
@@ -152,7 +165,9 @@
   )
   checkVkResult vkCreateImageView(vulkan.device, addr(createInfo), nil, addr(result))
 
-proc svkCreateFramebuffer*(renderpass: VkRenderPass, width, height: uint32, attachments: openArray[VkImageView]): VkFramebuffer =
+proc svkCreateFramebuffer*(
+    renderpass: VkRenderPass, width, height: uint32, attachments: openArray[VkImageView]
+): VkFramebuffer =
   var framebufferInfo = VkFramebufferCreateInfo(
     sType: VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
     renderPass: renderpass,
@@ -162,9 +177,13 @@
     height: height,
     layers: 1,
   )
-  checkVkResult vkCreateFramebuffer(vulkan.device, addr(framebufferInfo), nil, addr(result))
+  checkVkResult vkCreateFramebuffer(
+    vulkan.device, addr(framebufferInfo), nil, addr(result)
+  )
 
-proc svkGetBufferMemoryRequirements*(buffer: VkBuffer): tuple[size: uint64, alignment: uint64, memoryTypes: seq[uint32]] =
+proc svkGetBufferMemoryRequirements*(
+    buffer: VkBuffer
+): tuple[size: uint64, alignment: uint64, memoryTypes: seq[uint32]] =
   var reqs: VkMemoryRequirements
   vkGetBufferMemoryRequirements(vulkan.device, buffer, addr(reqs))
   result.size = reqs.size
@@ -173,7 +192,9 @@
     if ((1'u32 shl i) and reqs.memoryTypeBits) > 0:
       result.memoryTypes.add i
 
-proc svkGetImageMemoryRequirements*(image: VkImage): tuple[size: uint64, alignment: uint64, memoryTypes: seq[uint32]] =
+proc svkGetImageMemoryRequirements*(
+    image: VkImage
+): tuple[size: uint64, alignment: uint64, memoryTypes: seq[uint32]] =
   var reqs: VkMemoryRequirements
   vkGetImageMemoryRequirements(vulkan.device, image, addr(reqs))
   result.size = reqs.size
@@ -185,12 +206,17 @@
 proc svkCreateFence*(signaled = false): VkFence =
   var fenceInfo = VkFenceCreateInfo(
     sType: VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
-    flags: if signaled: toBits [VK_FENCE_CREATE_SIGNALED_BIT] else: VkFenceCreateFlags(0)
+    flags:
+      if signaled:
+        toBits [VK_FENCE_CREATE_SIGNALED_BIT]
+      else:
+        VkFenceCreateFlags(0),
   )
   checkVkResult vkCreateFence(vulkan.device, addr(fenceInfo), nil, addr(result))
 
 proc svkCreateSemaphore*(): VkSemaphore =
-  var semaphoreInfo = VkSemaphoreCreateInfo(sType: VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)
+  var semaphoreInfo =
+    VkSemaphoreCreateInfo(sType: VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)
   checkVkResult vkCreateSemaphore(vulkan.device, addr(semaphoreInfo), nil, addr(result))
 
 proc await*(fence: VkFence, timeout = high(uint64)): bool =
@@ -203,7 +229,11 @@
 proc svkResetFences*(fence: VkFence) =
   checkVkResult vkResetFences(vulkan.device, 1, addr(fence))
 
-proc svkCmdBindDescriptorSets(commandBuffer: VkCommandBuffer, descriptorSets: openArray[VkDescriptorSet], layout: VkPipelineLayout) =
+proc svkCmdBindDescriptorSets(
+    commandBuffer: VkCommandBuffer,
+    descriptorSets: openArray[VkDescriptorSet],
+    layout: VkPipelineLayout,
+) =
   vkCmdBindDescriptorSets(
     commandBuffer = commandBuffer,
     pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
@@ -212,10 +242,15 @@
     descriptorSetCount = descriptorSets.len.uint32,
     pDescriptorSets = descriptorSets.ToCPointer,
     dynamicOffsetCount = 0,
-    pDynamicOffsets = nil
+    pDynamicOffsets = nil,
   )
 
-proc svkCmdBindDescriptorSet(commandBuffer: VkCommandBuffer, descriptorSet: VkDescriptorSet, index: DescriptorSetIndex, layout: VkPipelineLayout) =
+proc svkCmdBindDescriptorSet(
+    commandBuffer: VkCommandBuffer,
+    descriptorSet: VkDescriptorSet,
+    index: DescriptorSetIndex,
+    layout: VkPipelineLayout,
+) =
   vkCmdBindDescriptorSets(
     commandBuffer = commandBuffer,
     pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
@@ -224,16 +259,15 @@
     descriptorSetCount = 1,
     pDescriptorSets = addr(descriptorSet),
     dynamicOffsetCount = 0,
-    pDynamicOffsets = nil
+    pDynamicOffsets = nil,
   )
 
-
 proc svkCreateRenderPass(
-  attachments: openArray[VkAttachmentDescription],
-  colorAttachments: openArray[VkAttachmentReference],
-  depthAttachments: openArray[VkAttachmentReference],
-  resolveAttachments: openArray[VkAttachmentReference],
-  dependencies: openArray[VkSubpassDependency],
+    attachments: openArray[VkAttachmentDescription],
+    colorAttachments: openArray[VkAttachmentReference],
+    depthAttachments: openArray[VkAttachmentReference],
+    resolveAttachments: openArray[VkAttachmentReference],
+    dependencies: openArray[VkSubpassDependency],
 ): VkRenderPass =
   assert colorAttachments.len == resolveAttachments.len or resolveAttachments.len == 0
   var subpass = VkSubpassDescription(
@@ -249,14 +283,14 @@
     pPreserveAttachments: nil,
   )
   var createInfo = VkRenderPassCreateInfo(
-      sType: VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
-      attachmentCount: uint32(attachments.len),
-      pAttachments: attachments.ToCPointer,
-      subpassCount: 1,
-      pSubpasses: addr(subpass),
-      dependencyCount: uint32(dependencies.len),
-      pDependencies: dependencies.ToCPointer,
-    )
+    sType: VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+    attachmentCount: uint32(attachments.len),
+    pAttachments: attachments.ToCPointer,
+    subpassCount: 1,
+    pSubpasses: addr(subpass),
+    dependencyCount: uint32(dependencies.len),
+    pDependencies: dependencies.ToCPointer,
+  )
   checkVkResult vkCreateRenderPass(vulkan.device, addr(createInfo), nil, addr(result))
 
 proc bestMemory*(mappable: bool, filter: seq[uint32] = @[]): uint32 =
@@ -270,13 +304,21 @@
       let flags = toEnums(physicalProperties.memoryTypes[index].propertyFlags)
       if not mappable or VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT in flags:
         var score: float = 0
-        if VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT in flags: score += 1_000_000
-        if VK_MEMORY_PROPERTY_HOST_CACHED_BIT in flags: score += 1_000
-        score += float(physicalProperties.memoryHeaps[physicalProperties.memoryTypes[index].heapIndex].size) / 1_000_000_000
+        if VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT in flags:
+          score += 1_000_000
+        if VK_MEMORY_PROPERTY_HOST_CACHED_BIT in flags:
+          score += 1_000
+        score +=
+          float(
+            physicalProperties.memoryHeaps[
+              physicalProperties.memoryTypes[index].heapIndex
+            ].size
+          ) / 1_000_000_000
         if score > maxScore:
           maxScore = score
           maxIndex = index
-  assert maxScore > 0, &"Unable to find memory type (mappable: {mappable}, filter: {filter})"
+  assert maxScore > 0,
+    &"Unable to find memory type (mappable: {mappable}, filter: {filter})"
   return maxIndex
 
 template withSingleUseCommandBuffer*(cmd, body: untyped): untyped =
@@ -288,7 +330,9 @@
         flags: VkCommandPoolCreateFlags(0),
         queueFamilyIndex: vulkan.graphicsQueueFamily,
       )
-    checkVkResult vkCreateCommandPool(vulkan.device, addr createInfo, nil, addr(commandBufferPool))
+    checkVkResult vkCreateCommandPool(
+      vulkan.device, addr createInfo, nil, addr(commandBufferPool)
+    )
     var
       `cmd` {.inject.}: VkCommandBuffer
       allocInfo = VkCommandBufferAllocateInfo(
@@ -319,11 +363,8 @@
     vkDestroyFence(vulkan.device, fence, nil)
     vkDestroyCommandPool(vulkan.device, commandBufferPool, nil)
 
-template withStagingBuffer*[T: (VkBuffer, uint64)|(VkImage, uint32, uint32)](
-  target: T,
-  bufferSize: uint64,
-  dataPointer,
-  body: untyped
+template withStagingBuffer*[T: (VkBuffer, uint64) | (VkImage, uint32, uint32)](
+    target: T, bufferSize: uint64, dataPointer, body: untyped
 ): untyped =
   var `dataPointer` {.inject.}: pointer
   let stagingBuffer = svkCreateBuffer(bufferSize, [VK_BUFFER_USAGE_TRANSFER_SRC_BIT])
@@ -336,7 +377,7 @@
     offset = 0'u64,
     size = VK_WHOLE_SIZE,
     flags = VkMemoryMapFlags(0),
-    ppData = addr(`dataPointer`)
+    ppData = addr(`dataPointer`),
   )
   checkVkResult vkBindBufferMemory(vulkan.device, stagingBuffer, stagingMemory, 0)
 
@@ -369,17 +410,14 @@
         pImageMemoryBarriers = nil,
       )
       # now copy stuff
-      let copyRegion = VkBufferCopy(
-        size: bufferSize,
-        dstOffset: target[1],
-        srcOffset: 0
-      )
+      let copyRegion =
+        VkBufferCopy(size: bufferSize, dstOffset: target[1], srcOffset: 0)
       vkCmdCopyBuffer(
         commandBuffer = commandBuffer,
         srcBuffer = stagingBuffer,
         dstBuffer = target[0],
         regionCount = 1,
-        pRegions = addr(copyRegion)
+        pRegions = addr(copyRegion),
       )
     elif T is (VkImage, uint32, uint32):
       let region = VkBufferImageCopy(
@@ -393,7 +431,7 @@
           layerCount: 1,
         ),
         imageOffset: VkOffset3D(x: 0, y: 0, z: 0),
-        imageExtent: VkExtent3D(width: target[1], height: target[2], depth: 1)
+        imageExtent: VkExtent3D(width: target[1], height: target[2], depth: 1),
       )
       vkCmdCopyBufferToImage(
         commandBuffer = commandBuffer,
@@ -401,9 +439,8 @@
         dstImage = target[0],
         dstImageLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
         regionCount = 1,
-        pRegions = addr(region)
+        pRegions = addr(region),
       )
 
   vkDestroyBuffer(vulkan.device, stagingBuffer, nil)
   vkFreeMemory(vulkan.device, stagingMemory, nil)
-
--- a/semicongine/resources.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/resources.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -12,14 +12,13 @@
 
 import ./core
 
-type
-  ResourceBundlingType = enum
-    Dir # Directories
-    Zip # Zip files
-    Exe # Embeded in executable
+type ResourceBundlingType = enum
+  Dir # Directories
+  Zip # Zip files
+  Exe # Embeded in executable
 
-const
-  thebundletype = parseEnum[ResourceBundlingType](PACKAGETYPE.toLowerAscii().capitalizeAscii())
+const thebundletype =
+  parseEnum[ResourceBundlingType](PACKAGETYPE.toLowerAscii().capitalizeAscii())
 
 # resource loading
 
@@ -34,9 +33,9 @@
     result = result & "/"
 
 when thebundletype == Dir:
-
   proc resourceRoot(): string =
     getAppDir().absolutePath().joinPath(RESOURCEROOT)
+
   proc packageRoot(package: string): string =
     resourceRoot().joinPath(package)
 
@@ -55,16 +54,18 @@
     for file in walkDirRec(package.packageRoot().joinPath(dir), relative = true):
       yield file
 
-  iterator ls_intern(dir: string, package: string): tuple[kind: PathComponent, path: string] =
+  iterator ls_intern(
+      dir: string, package: string
+  ): tuple[kind: PathComponent, path: string] =
     for i in walkDir(package.packageRoot().joinPath(dir), relative = true):
       yield i
 
 elif thebundletype == Zip:
-
   import ./thirdparty/zippy/zippy/ziparchives
 
   proc resourceRoot(): string =
     absolutePath(getAppDir()).joinPath(RESOURCEROOT)
+
   proc packageRoot(package: string): string =
     resourceRoot().joinPath(package)
 
@@ -89,7 +90,9 @@
         yield i
     archive.close()
 
-  iterator ls_intern(dir: string, package: string): tuple[kind: PathComponent, path: string] =
+  iterator ls_intern(
+      dir: string, package: string
+  ): tuple[kind: PathComponent, path: string] =
     let archive = openZipArchive(package.packageRoot() & ".zip")
     let normDir = dir.normalizeDir()
     var yielded: HashSet[string]
@@ -107,7 +110,6 @@
     archive.close()
 
 elif thebundletype == Exe:
-
   const BUILD_RESOURCEROOT* {.strdefine.}: string = ""
 
   proc loadResources(): Table[string, Table[string, string]] {.compileTime.} =
@@ -120,7 +122,9 @@
           let package = packageDir.splitPath.tail
           result[package] = Table[string, string]()
           for resourcefile in walkDirRec(packageDir, relative = true):
-            result[package][resourcefile.replace('\\', '/')] = staticRead(packageDir.joinPath(resourcefile))
+            result[package][resourcefile.replace('\\', '/')] =
+              staticRead(packageDir.joinPath(resourcefile))
+
   const bundledResources = loadResources()
 
   proc loadResource_intern*(path: string, package: string): Stream =
@@ -135,7 +139,9 @@
     for i in bundledResources[package].keys:
       yield i
 
-  iterator ls_intern(dir: string, package: string): tuple[kind: PathComponent, path: string] =
+  iterator ls_intern(
+      dir: string, package: string
+  ): tuple[kind: PathComponent, path: string] =
     let normDir = dir.normalizeDir()
     var yielded: HashSet[string]
 
@@ -168,7 +174,9 @@
       result.add i
   result.sort()
 
-proc list*(dir: string, package = DEFAULT_PACKAGE): seq[tuple[kind: PathComponent, path: string]] =
+proc list*(
+    dir: string, package = DEFAULT_PACKAGE
+): seq[tuple[kind: PathComponent, path: string]] =
   for i in ls_intern(dir = dir, package = package):
     result.add i
   result.sort()
--- a/semicongine/storage.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/storage.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -11,21 +11,19 @@
 const STORAGE_NAME = Path("storage.db")
 const DEFAULT_KEY_VALUE_TABLE_NAME = "shelf"
 
-type
-  StorageType* = enum
-    SystemStorage
-    UserStorage
-    # ? level storage type ?
+type StorageType* = enum
+  SystemStorage
+  UserStorage # ? level storage type ?
 
 var db: Table[StorageType, DbConn]
 
 proc path(storageType: StorageType): Path =
-  case storageType:
-    of SystemStorage:
-      Path(getAppDir()) / STORAGE_NAME
-    of UserStorage:
-      string(Path(getDataDir()) / Path(AppName())).createDir()
-      Path(getDataDir()) / Path(AppName()) / STORAGE_NAME
+  case storageType
+  of SystemStorage:
+    Path(getAppDir()) / STORAGE_NAME
+  of UserStorage:
+    string(Path(getDataDir()) / Path(AppName())).createDir()
+    Path(getDataDir()) / Path(AppName()) / STORAGE_NAME
 
 proc ensureExists(storageType: StorageType) =
   if storageType in db:
@@ -34,25 +32,48 @@
 
 proc ensureExists(storageType: StorageType, table: string) =
   storageType.ensureExists()
-  db[storageType].exec(sql(&"""CREATE TABLE IF NOT EXISTS {table} (
+  db[storageType].exec(
+    sql(
+      &"""CREATE TABLE IF NOT EXISTS {table} (
     key TEXT NOT NULL UNIQUE,
     value TEXT NOT NULL
-  )"""))
+  )"""
+    )
+  )
 
-proc store*[T](storageType: StorageType, key: string, value: T, table = DEFAULT_KEY_VALUE_TABLE_NAME) =
+proc store*[T](
+    storageType: StorageType,
+    key: string,
+    value: T,
+    table = DEFAULT_KEY_VALUE_TABLE_NAME,
+) =
   storageType.ensureExists(table)
-  db[storageType].exec(sql(&"""INSERT INTO {table} VALUES(?, ?)
+  db[storageType].exec(
+    sql(
+      &"""INSERT INTO {table} VALUES(?, ?)
   ON CONFLICT(key) DO UPDATE SET value=excluded.value
-  """), key, $$value)
+  """
+    ),
+    key,
+    $$value,
+  )
 
-proc load*[T](storageType: StorageType, key: string, default: T, table = DEFAULT_KEY_VALUE_TABLE_NAME): T =
+proc load*[T](
+    storageType: StorageType,
+    key: string,
+    default: T,
+    table = DEFAULT_KEY_VALUE_TABLE_NAME,
+): T =
   storageType.ensureExists(table)
-  let dbResult = db[storageType].getValue(sql(&"""SELECT value FROM {table} WHERE key = ? """), key)
+  let dbResult =
+    db[storageType].getValue(sql(&"""SELECT value FROM {table} WHERE key = ? """), key)
   if dbResult == "":
     return default
   return to[T](dbResult)
 
-proc list*[T](storageType: StorageType, table = DEFAULT_KEY_VALUE_TABLE_NAME): seq[string] =
+proc list*[T](
+    storageType: StorageType, table = DEFAULT_KEY_VALUE_TABLE_NAME
+): seq[string] =
   storageType.ensureExists(table)
   for row in db[storageType].fastRows(sql(&"""SELECT key FROM {table}""")):
     result.add row[0]
--- a/semicongine/text.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/text.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -8,7 +8,6 @@
 import std/tables
 import std/unicode
 
-
 import ./core
 import ./resources
 import ./rendering
@@ -27,6 +26,7 @@
     topOffset*: float32
     leftOffset*: float32
     advance*: float32
+
   FontObj* = object
     glyphs*: Table[Rune, GlyphInfo]
     fontAtlas*: Image[Gray]
@@ -37,6 +37,7 @@
     lineAdvance*: float32
     capHeight*: float32
     xHeight*: float32
+
   Font = ref FontObj
 
   TextboxData = object
@@ -47,16 +48,19 @@
 
   DefaultFontShader*[T] = object
     position {.VertexAttribute.}: Vec3f
-    uv {.VertexAttribute.}: Vec2f # TODO: maybe we can keep the uvs in a uniform buffer and just pass an index
+    uv {.VertexAttribute.}: Vec2f
+      # TODO: maybe we can keep the uvs in a uniform buffer and just pass an index
     fragmentUv {.Pass.}: Vec2f
     color {.ShaderOutput.}: Vec4f
     textbox {.PushConstant.}: TextboxData
     descriptorSets {.DescriptorSet: 0.}: T
-    vertexCode* = """void main() {
+    vertexCode* =
+      """void main() {
   gl_Position = vec4(position * vec3(textbox.scale, 1) + textbox.position, 1.0);
   fragmentUv = uv;
 }  """
-    fragmentCode* = """void main() {
+    fragmentCode* =
+      """void main() {
     float v = texture(fontAtlas, fragmentUv).r;
     // CARFULL: This can lead to rough edges at times
     if(v == 0) {
@@ -65,7 +69,7 @@
     color = vec4(textbox.color.rgb, textbox.color.a * v);
 }"""
 
-proc `=copy`(dest: var FontObj; source: FontObj) {.error.}
+proc `=copy`(dest: var FontObj, source: FontObj) {.error.}
 
 include ./text/font
 include ./text/textbox
--- a/semicongine/text/font.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/text/font.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,31 +1,62 @@
 {.emit: "#define STBTT_STATIC".}
 {.emit: "#define STB_TRUETYPE_IMPLEMENTATION".}
-{.emit: "#include \"" & currentSourcePath.parentDir().parentDir() & "/thirdparty/stb/stb_truetype.h\"".}
+{.
+  emit:
+    "#include \"" & currentSourcePath.parentDir().parentDir() &
+    "/thirdparty/stb/stb_truetype.h\""
+.}
 
 const ASCII_CHARSET = PrintableChars.toSeq.toRunes
 
 type stbtt_fontinfo {.importc, incompleteStruct.} = object
 
-proc stbtt_InitFont(info: ptr stbtt_fontinfo, data: ptr char, offset: cint): cint {.importc, nodecl.}
-proc stbtt_ScaleForPixelHeight(info: ptr stbtt_fontinfo, pixels: cfloat): cfloat {.importc, nodecl.}
+proc stbtt_InitFont(
+  info: ptr stbtt_fontinfo, data: ptr char, offset: cint
+): cint {.importc, nodecl.}
+
+proc stbtt_ScaleForPixelHeight(
+  info: ptr stbtt_fontinfo, pixels: cfloat
+): cfloat {.importc, nodecl.}
 
-proc stbtt_GetCodepointBitmap(info: ptr stbtt_fontinfo, scale_x: cfloat, scale_y: cfloat, codepoint: cint, width, height, xoff, yoff: ptr cint): cstring {.importc, nodecl.}
+proc stbtt_GetCodepointBitmap(
+  info: ptr stbtt_fontinfo,
+  scale_x: cfloat,
+  scale_y: cfloat,
+  codepoint: cint,
+  width, height, xoff, yoff: ptr cint,
+): cstring {.importc, nodecl.}
+
 # proc stbtt_GetCodepointBitmapBox(info: ptr stbtt_fontinfo, codepoint: cint, scale_x, scale_y: cfloat, ix0, iy0, ix1, iy1: ptr cint) {.importc, nodecl.}
 
-proc stbtt_GetCodepointHMetrics(info: ptr stbtt_fontinfo, codepoint: cint, advance, leftBearing: ptr cint) {.importc, nodecl.}
-proc stbtt_GetCodepointKernAdvance(info: ptr stbtt_fontinfo, ch1, ch2: cint): cint {.importc, nodecl.}
-proc stbtt_FindGlyphIndex(info: ptr stbtt_fontinfo, codepoint: cint): cint {.importc, nodecl.}
+proc stbtt_GetCodepointHMetrics(
+  info: ptr stbtt_fontinfo, codepoint: cint, advance, leftBearing: ptr cint
+) {.importc, nodecl.}
+
+proc stbtt_GetCodepointKernAdvance(
+  info: ptr stbtt_fontinfo, ch1, ch2: cint
+): cint {.importc, nodecl.}
 
-proc stbtt_GetFontVMetrics(info: ptr stbtt_fontinfo, ascent, descent, lineGap: ptr cint) {.importc, nodecl.}
+proc stbtt_FindGlyphIndex(
+  info: ptr stbtt_fontinfo, codepoint: cint
+): cint {.importc, nodecl.}
 
-proc readTrueType(stream: Stream, name: string, codePoints: seq[Rune], lineHeightPixels: float32): Font =
+proc stbtt_GetFontVMetrics(
+  info: ptr stbtt_fontinfo, ascent, descent, lineGap: ptr cint
+) {.importc, nodecl.}
+
+proc readTrueType(
+    stream: Stream, name: string, codePoints: seq[Rune], lineHeightPixels: float32
+): Font =
   var
     indata = stream.readAll()
     fontinfo: stbtt_fontinfo
   if stbtt_InitFont(addr fontinfo, indata.ToCPointer, 0) == 0:
     raise newException(Exception, "An error occured while loading font file")
 
-  result = Font(fontscale: float32(stbtt_ScaleForPixelHeight(addr fontinfo, cfloat(lineHeightPixels))))
+  result = Font(
+    fontscale:
+      float32(stbtt_ScaleForPixelHeight(addr fontinfo, cfloat(lineHeightPixels)))
+  )
 
   var ascent, descent, lineGap: cint
   stbtt_GetFontVMetrics(addr fontinfo, addr ascent, addr descent, addr lineGap)
@@ -47,15 +78,16 @@
     var
       width, height: cint
       offX, offY: cint
-    let
-      data = stbtt_GetCodepointBitmap(
-        addr fontinfo,
-        result.fontscale,
-        result.fontscale,
-        cint(codePoint),
-        addr width, addr height,
-        addr offX, addr offY
-      )
+    let data = stbtt_GetCodepointBitmap(
+      addr fontinfo,
+      result.fontscale,
+      result.fontscale,
+      cint(codePoint),
+      addr width,
+      addr height,
+      addr offX,
+      addr offY,
+    )
     topOffsets[codePoint] = offY
 
     if char(codePoint) in UppercaseLetters:
@@ -88,7 +120,9 @@
       ih = float32(image.height)
     # horizontal spaces:
     var advance, leftBearing: cint
-    stbtt_GetCodepointHMetrics(addr fontinfo, cint(codePoint), addr advance, addr leftBearing)
+    stbtt_GetCodepointHMetrics(
+      addr fontinfo, cint(codePoint), addr advance, addr leftBearing
+    )
 
     result.glyphs[codePoint] = GlyphInfo(
       dimension: vec2(float32(image.width), float32(image.height)),
@@ -104,22 +138,25 @@
     )
 
     for codePointAfter in codePoints:
-      result.kerning[(codePoint, codePointAfter)] = float32(stbtt_GetCodepointKernAdvance(
-        addr fontinfo,
-        cint(codePoint),
-        cint(codePointAfter)
-      )) * result.fontscale
+      result.kerning[(codePoint, codePointAfter)] =
+        float32(
+          stbtt_GetCodepointKernAdvance(
+            addr fontinfo, cint(codePoint), cint(codePointAfter)
+          )
+        ) * result.fontscale
 
 proc loadFont*(
-  path: string,
-  lineHeightPixels = 80'f32,
-  additional_codepoints: openArray[Rune] = [],
-  charset = ASCII_CHARSET,
-  package = DEFAULT_PACKAGE
+    path: string,
+    lineHeightPixels = 80'f32,
+    additional_codepoints: openArray[Rune] = [],
+    charset = ASCII_CHARSET,
+    package = DEFAULT_PACKAGE,
 ): Font =
-  loadResource_intern(path, package = package).readTrueType(path.splitFile().name, charset & additional_codepoints.toSeq, lineHeightPixels)
+  loadResource_intern(path, package = package).readTrueType(
+    path.splitFile().name, charset & additional_codepoints.toSeq, lineHeightPixels
+  )
 
-func textWidth*(theText: seq[Rune]|string, font: FontObj): float32 =
+func textWidth*(theText: seq[Rune] | string, font: FontObj): float32 =
   var text = when theText is string: theText.toRunes else: theText
   var currentWidth = 0'f32
   var lineWidths: seq[float32]
@@ -163,7 +200,8 @@
             break
           subWord.add c
         result.add subWord & NEWLINE
-        remaining.add currentWord[subWord.len .. ^1] # process rest of the word in next iteration
+        remaining.add currentWord[subWord.len .. ^1]
+          # process rest of the word in next iteration
       else:
         if (currentLine & SPACE & currentWord).textWidth(font) <= maxWidth:
           if currentLine.len == 0:
@@ -178,4 +216,3 @@
     result.add currentLine
 
   return result
-
--- a/semicongine/text/textbox.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/text/textbox.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,24 +1,25 @@
-type
-  Textbox* = object
-    font*: Font
-    maxLen*: int                # maximum amount of characters that will be rendered
-    maxWidth: float32 = 0       # if set, will cause automatic word breaks at maxWidth
-    baseScale: float32
-    text: seq[Rune]
-    horizontalAlignment: HorizontalAlignment = Center
-    verticalAlignment: VerticalAlignment = Center
-    # management/internal:
-    dirtyGeometry: bool         # is true if any of the attributes changed
-    dirtyShaderdata: bool       # is true if any of the attributes changed
-    visibleText: seq[Rune]    # used to store processed (word-wrapper) text to preserve original
-    lastRenderedText: seq[Rune] # stores the last rendered text, to prevent unnecessary updates
+type Textbox* = object
+  font*: Font
+  maxLen*: int # maximum amount of characters that will be rendered
+  maxWidth: float32 = 0 # if set, will cause automatic word breaks at maxWidth
+  baseScale: float32
+  text: seq[Rune]
+  horizontalAlignment: HorizontalAlignment = Center
+  verticalAlignment: VerticalAlignment = Center
+  # management/internal:
+  dirtyGeometry: bool # is true if any of the attributes changed
+  dirtyShaderdata: bool # is true if any of the attributes changed
+  visibleText: seq[Rune]
+    # used to store processed (word-wrapper) text to preserve original
+  lastRenderedText: seq[Rune]
+    # stores the last rendered text, to prevent unnecessary updates
 
-    # rendering data
-    position: GPUArray[Vec3f, VertexBuffer]
-    uv: GPUArray[Vec2f, VertexBuffer]
-    indices: GPUArray[uint16, IndexBuffer]
+  # rendering data
+  position: GPUArray[Vec3f, VertexBuffer]
+  uv: GPUArray[Vec2f, VertexBuffer]
+  indices: GPUArray[uint16, IndexBuffer]
 
-proc `=copy`(dest: var Textbox; source: Textbox) {.error.}
+proc `=copy`(dest: var Textbox, source: Textbox) {.error.}
 
 func `$`*(textbox: Textbox): string =
   "\"" & $textbox.text[0 ..< min(textbox.text.len, 16)] & "\""
@@ -35,26 +36,34 @@
       if not (i == textbox.visibleText.len - 1 and textbox.visibleText[i].isWhiteSpace):
         width += textbox.font.glyphs[textbox.visibleText[i]].advance
       if i < textbox.visibleText.len - 1:
-        width += textbox.font.kerning[(textbox.visibleText[i], textbox.visibleText[i + 1])]
+        width +=
+          textbox.font.kerning[(textbox.visibleText[i], textbox.visibleText[i + 1])]
   lineWidths.add width
-  var height = float32(lineWidths.len - 1) * textbox.font.lineAdvance + textbox.font.capHeight
+  var height =
+    float32(lineWidths.len - 1) * textbox.font.lineAdvance + textbox.font.capHeight
   if lineWidths[^1] == 0 and lineWidths.len > 1:
     height -= 1
 
-  let anchorY = (case textbox.verticalAlignment
-    of Top: 0'f32
-    of Center: -height / 2
-    of Bottom: -height
-  ) + textbox.font.capHeight
+  let anchorY =
+    (
+      case textbox.verticalAlignment
+      of Top: 0'f32
+      of Center: -height / 2
+      of Bottom: -height
+    ) + textbox.font.capHeight
 
   var
     offsetX = 0'f32
     offsetY = 0'f32
     lineIndex = 0
-    anchorX = case textbox.horizontalAlignment
-      of Left: 0'f32
-      of Center: lineWidths[lineIndex] / 2
-      of Right: lineWidths[lineIndex]
+    anchorX =
+      case textbox.horizontalAlignment
+      of Left:
+        0'f32
+      of Center:
+        lineWidths[lineIndex] / 2
+      of Right:
+        lineWidths[lineIndex]
   for i in 0 ..< textbox.maxLen:
     let vertexOffset = i * 4
     if i < textbox.visibleText.len:
@@ -66,10 +75,14 @@
         textbox.position.data[vertexOffset + 2] = vec3(0, 0, 0)
         textbox.position.data[vertexOffset + 3] = vec3(0, 0, 0)
         inc lineIndex
-        anchorX = case textbox.horizontalAlignment
-          of Left: 0'f32
-          of Center: lineWidths[lineIndex] / 2
-          of Right: lineWidths[lineIndex]
+        anchorX =
+          case textbox.horizontalAlignment
+          of Left:
+            0'f32
+          of Center:
+            lineWidths[lineIndex] / 2
+          of Right:
+            lineWidths[lineIndex]
       else:
         let
           glyph = textbox.font.glyphs[textbox.visibleText[i]]
@@ -78,10 +91,13 @@
           top = offsetY - glyph.topOffset
           bottom = offsetY - glyph.topOffset - glyph.dimension.y
 
-        textbox.position.data[vertexOffset + 0] = vec3(left - anchorX, bottom - anchorY, 0)
+        textbox.position.data[vertexOffset + 0] =
+          vec3(left - anchorX, bottom - anchorY, 0)
         textbox.position.data[vertexOffset + 1] = vec3(left - anchorX, top - anchorY, 0)
-        textbox.position.data[vertexOffset + 2] = vec3(right - anchorX, top - anchorY, 0)
-        textbox.position.data[vertexOffset + 3] = vec3(right - anchorX, bottom - anchorY, 0)
+        textbox.position.data[vertexOffset + 2] =
+          vec3(right - anchorX, top - anchorY, 0)
+        textbox.position.data[vertexOffset + 3] =
+          vec3(right - anchorX, bottom - anchorY, 0)
 
         textbox.uv.data[vertexOffset + 0] = glyph.uvs[0]
         textbox.uv.data[vertexOffset + 1] = glyph.uvs[1]
@@ -90,9 +106,10 @@
 
         offsetX += glyph.advance
         if i < textbox.visibleText.len - 1:
-          offsetX += textbox.font.kerning[(textbox.visibleText[i], textbox.visibleText[i + 1])]
-  updateGPUBuffer(textbox.position, count=textbox.visibleText.len.uint64 * 4)
-  updateGPUBuffer(textbox.uv, count=textbox.visibleText.len.uint64 * 4)
+          offsetX +=
+            textbox.font.kerning[(textbox.visibleText[i], textbox.visibleText[i + 1])]
+  updateGPUBuffer(textbox.position, count = textbox.visibleText.len.uint64 * 4)
+  updateGPUBuffer(textbox.uv, count = textbox.visibleText.len.uint64 * 4)
   textbox.lastRenderedText = textbox.visibleText
 
 func text*(textbox: Textbox): seq[Rune] =
@@ -107,9 +124,7 @@
   textbox.visibleText = textbox.text
   if textbox.maxWidth > 0:
     textbox.visibleText = WordWrapped(
-      textbox.visibleText,
-      textbox.font[],
-      textbox.maxWidth / textbox.baseScale,
+      textbox.visibleText, textbox.font[], textbox.maxWidth / textbox.baseScale
     )
 
 proc `text=`*(textbox: var Textbox, newText: string) =
@@ -117,6 +132,7 @@
 
 proc horizontalAlignment*(textbox: Textbox): HorizontalAlignment =
   textbox.horizontalAlignment
+
 proc `horizontalAlignment=`*(textbox: var Textbox, value: HorizontalAlignment) =
   if value != textbox.horizontalAlignment:
     textbox.horizontalAlignment = value
@@ -124,6 +140,7 @@
 
 proc verticalAlignment*(textbox: Textbox): VerticalAlignment =
   textbox.verticalAlignment
+
 proc `verticalAlignment=`*(textbox: var Textbox, value: VerticalAlignment) =
   if value != textbox.verticalAlignment:
     textbox.verticalAlignment = value
@@ -135,33 +152,33 @@
     textbox.dirtyGeometry = false
 
 proc render*(
-  commandbuffer: VkCommandBuffer,
-  pipeline: Pipeline,
-  textbox: Textbox,
-  position: Vec3f,
-  color: Vec4f,
-  scale: Vec2f = vec2(1, 1),
+    commandbuffer: VkCommandBuffer,
+    pipeline: Pipeline,
+    textbox: Textbox,
+    position: Vec3f,
+    color: Vec4f,
+    scale: Vec2f = vec2(1, 1),
 ) =
   renderWithPushConstant(
     commandbuffer = commandbuffer,
     pipeline = pipeline,
     mesh = textbox,
-    pushConstant = TextboxData(position: position, scale: textbox.baseScale * scale, color: color),
-    fixedVertexCount=textbox.visibleText.len * 6
+    pushConstant =
+      TextboxData(position: position, scale: textbox.baseScale * scale, color: color),
+    fixedVertexCount = textbox.visibleText.len * 6,
   )
 
 proc initTextbox*[T: string | seq[Rune]](
-  renderdata: var RenderData,
-  descriptorSetLayout: VkDescriptorSetLayout,
-  font: Font,
-  baseScale: float32,
-  text: T = default(T),
-  maxLen: int = text.len,
-  verticalAlignment: VerticalAlignment = Center,
-  horizontalAlignment: HorizontalAlignment = Center,
-  maxWidth = 0'f32,
+    renderdata: var RenderData,
+    descriptorSetLayout: VkDescriptorSetLayout,
+    font: Font,
+    baseScale: float32,
+    text: T = default(T),
+    maxLen: int = text.len,
+    verticalAlignment: VerticalAlignment = Center,
+    horizontalAlignment: HorizontalAlignment = Center,
+    maxWidth = 0'f32,
 ): Textbox =
-
   result = Textbox(
     maxLen: maxLen,
     font: font,
--- a/semicongine/thirdparty/db_connector/db_common.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/db_connector/db_common.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -18,71 +18,73 @@
 
   SqlQuery* = distinct string ## an SQL query string
 
-
   DbEffect* = object of IOEffect ## effect that denotes a database operation
   ReadDbEffect* = object of DbEffect ## effect that denotes a read operation
   WriteDbEffect* = object of DbEffect ## effect that denotes a write operation
 
   DbTypeKind* = enum ## a superset of datatypes that might be supported.
-    dbUnknown,       ## unknown datatype
-    dbSerial,        ## datatype used for primary auto-increment keys
-    dbNull,          ## datatype used for the NULL value
-    dbBit,           ## bit datatype
-    dbBool,          ## boolean datatype
-    dbBlob,          ## blob datatype
-    dbFixedChar,     ## string of fixed length
-    dbVarchar,       ## string datatype
-    dbJson,          ## JSON datatype
-    dbXml,           ## XML datatype
-    dbInt,           ## some integer type
-    dbUInt,          ## some unsigned integer type
-    dbDecimal,       ## decimal numbers (fixed-point number)
-    dbFloat,         ## some floating point type
-    dbDate,          ## a year-month-day description
-    dbTime,          ## HH:MM:SS information
-    dbDatetime,      ## year-month-day and HH:MM:SS information,
-                     ## plus optional time or timezone information
-    dbTimestamp,     ## Timestamp values are stored as the number of seconds
-                     ## since the epoch ('1970-01-01 00:00:00' UTC).
-    dbTimeInterval,  ## an interval [a,b] of times
-    dbEnum,          ## some enum
-    dbSet,           ## set of enum values
-    dbArray,         ## an array of values
-    dbComposite,     ## composite type (record, struct, etc)
-    dbUrl,           ## a URL
-    dbUuid,          ## a UUID
-    dbInet,          ## an IP address
-    dbMacAddress,    ## a MAC address
-    dbGeometry,      ## some geometric type
-    dbPoint,         ## Point on a plane   (x,y)
-    dbLine,          ## Infinite line ((x1,y1),(x2,y2))
-    dbLseg,          ## Finite line segment   ((x1,y1),(x2,y2))
-    dbBox,           ## Rectangular box   ((x1,y1),(x2,y2))
-    dbPath,          ## Closed or open path (similar to polygon) ((x1,y1),...)
-    dbPolygon,       ## Polygon (similar to closed path)   ((x1,y1),...)
-    dbCircle,        ## Circle   <(x,y),r> (center point and radius)
-    dbUser1,         ## user definable datatype 1 (for unknown extensions)
-    dbUser2,         ## user definable datatype 2 (for unknown extensions)
-    dbUser3,         ## user definable datatype 3 (for unknown extensions)
-    dbUser4,         ## user definable datatype 4 (for unknown extensions)
-    dbUser5          ## user definable datatype 5 (for unknown extensions)
+    dbUnknown ## unknown datatype
+    dbSerial ## datatype used for primary auto-increment keys
+    dbNull ## datatype used for the NULL value
+    dbBit ## bit datatype
+    dbBool ## boolean datatype
+    dbBlob ## blob datatype
+    dbFixedChar ## string of fixed length
+    dbVarchar ## string datatype
+    dbJson ## JSON datatype
+    dbXml ## XML datatype
+    dbInt ## some integer type
+    dbUInt ## some unsigned integer type
+    dbDecimal ## decimal numbers (fixed-point number)
+    dbFloat ## some floating point type
+    dbDate ## a year-month-day description
+    dbTime ## HH:MM:SS information
+    dbDatetime
+      ## year-month-day and HH:MM:SS information,
+      ## plus optional time or timezone information
+    dbTimestamp
+      ## Timestamp values are stored as the number of seconds
+      ## since the epoch ('1970-01-01 00:00:00' UTC).
+    dbTimeInterval ## an interval [a,b] of times
+    dbEnum ## some enum
+    dbSet ## set of enum values
+    dbArray ## an array of values
+    dbComposite ## composite type (record, struct, etc)
+    dbUrl ## a URL
+    dbUuid ## a UUID
+    dbInet ## an IP address
+    dbMacAddress ## a MAC address
+    dbGeometry ## some geometric type
+    dbPoint ## Point on a plane   (x,y)
+    dbLine ## Infinite line ((x1,y1),(x2,y2))
+    dbLseg ## Finite line segment   ((x1,y1),(x2,y2))
+    dbBox ## Rectangular box   ((x1,y1),(x2,y2))
+    dbPath ## Closed or open path (similar to polygon) ((x1,y1),...)
+    dbPolygon ## Polygon (similar to closed path)   ((x1,y1),...)
+    dbCircle ## Circle   <(x,y),r> (center point and radius)
+    dbUser1 ## user definable datatype 1 (for unknown extensions)
+    dbUser2 ## user definable datatype 2 (for unknown extensions)
+    dbUser3 ## user definable datatype 3 (for unknown extensions)
+    dbUser4 ## user definable datatype 4 (for unknown extensions)
+    dbUser5 ## user definable datatype 5 (for unknown extensions)
 
-  DbType* = object              ## describes a database type
-    kind*: DbTypeKind           ## the kind of the described type
-    notNull*: bool              ## does the type contain NULL?
-    name*: string               ## the name of the type
-    size*: Natural              ## the size of the datatype; 0 if of variable size
-    maxReprLen*: Natural        ## maximal length required for the representation
+  DbType* = object ## describes a database type
+    kind*: DbTypeKind ## the kind of the described type
+    notNull*: bool ## does the type contain NULL?
+    name*: string ## the name of the type
+    size*: Natural ## the size of the datatype; 0 if of variable size
+    maxReprLen*: Natural ## maximal length required for the representation
     precision*, scale*: Natural ## precision and scale of the number
-    min*, max*: BiggestInt      ## the minimum and maximum of allowed values
-    validValues*: seq[string]   ## valid values of an enum or a set
+    min*, max*: BiggestInt ## the minimum and maximum of allowed values
+    validValues*: seq[string] ## valid values of an enum or a set
 
-  DbColumn* = object   ## information about a database column
-    name*: string      ## name of the column
+  DbColumn* = object ## information about a database column
+    name*: string ## name of the column
     tableName*: string ## name of the table the column belongs to (optional)
-    typ*: DbType       ## type of the column
-    primaryKey*: bool  ## is this a primary key?
-    foreignKey*: bool  ## is this a foreign key?
+    typ*: DbType ## type of the column
+    primaryKey*: bool ## is this a primary key?
+    foreignKey*: bool ## is this a foreign key?
+
   DbColumns* = seq[DbColumn]
 
 template sql*(query: string): SqlQuery =
--- a/semicongine/thirdparty/db_connector/db_sqlite.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/db_connector/db_sqlite.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -167,7 +167,6 @@
 ## * `db_mysql module <db_mysql.html>`_ for MySQL database wrapper
 ## * `db_postgres module <db_postgres.html>`_ for PostgreSQL database wrapper
 
-
 import ./sqlite3, macros
 
 import ./db_common
@@ -180,11 +179,13 @@
   import std/assertions
 
 type
-  DbConn* = PSqlite3  ## Encapsulates a database connection.
-  Row* = seq[string]  ## A row of a dataset. `NULL` database values will be
-                      ## converted to an empty string.
-  InstantRow* = PStmt ## A handle that can be used to get a row's column
-                      ## text on demand.
+  DbConn* = PSqlite3 ## Encapsulates a database connection.
+  Row* = seq[string]
+    ## A row of a dataset. `NULL` database values will be
+    ## converted to an empty string.
+  InstantRow* = PStmt
+    ## A handle that can be used to get a row's column
+    ## text on demand.
   SqlPrepared* = distinct PStmt ## a identifier for the prepared queries
 
 proc bindParam*(ps: SqlPrepared, paramIdx: int, val: int32) {.since: (1, 3).}
@@ -192,8 +193,13 @@
 proc bindParam*(ps: SqlPrepared, paramIdx: int, val: int) {.since: (1, 3).}
 proc bindParam*(ps: SqlPrepared, paramIdx: int, val: float64) {.since: (1, 3).}
 proc bindNull*(ps: SqlPrepared, paramIdx: int) {.since: (1, 3).}
-proc bindParam*(ps: SqlPrepared, paramIdx: int, val: string, copy = true) {.since: (1, 3).}
-proc bindParam*(ps: SqlPrepared, paramIdx: int,val: openArray[byte], copy = true) {.since: (1, 3).}
+proc bindParam*(
+  ps: SqlPrepared, paramIdx: int, val: string, copy = true
+) {.since: (1, 3).}
+
+proc bindParam*(
+  ps: SqlPrepared, paramIdx: int, val: openArray[byte], copy = true
+) {.since: (1, 3).}
 
 proc dbError*(db: DbConn) {.noreturn.} =
   ## Raises a `DbError` exception.
@@ -219,22 +225,24 @@
 
   result = "'"
   for c in items(s):
-    if c == '\'': add(result, "''")
-    else: add(result, c)
+    if c == '\'':
+      add(result, "''")
+    else:
+      add(result, c)
   add(result, '\'')
 
 proc dbFormat(formatstr: SqlQuery, args: varargs[string]): string =
   dbFormatImpl(formatstr, dbQuote, args)
 
-proc prepare*(db: DbConn; q: string): SqlPrepared {.since: (1, 3).} =
+proc prepare*(db: DbConn, q: string): SqlPrepared {.since: (1, 3).} =
   ## Creates a new `SqlPrepared` statement.
-  if prepare_v2(db, q, q.len.cint,result.PStmt, nil) != SQLITE_OK:
+  if prepare_v2(db, q, q.len.cint, result.PStmt, nil) != SQLITE_OK:
     discard finalize(result.PStmt)
     dbError(db)
 
-proc tryExec*(db: DbConn, query: SqlQuery,
-              args: varargs[string, `$`]): bool {.
-              tags: [ReadDbEffect, WriteDbEffect].} =
+proc tryExec*(
+    db: DbConn, query: SqlQuery, args: varargs[string, `$`]
+): bool {.tags: [ReadDbEffect, WriteDbEffect].} =
   ## Tries to execute the query and returns `true` if successful, `false` otherwise.
   ##
   ## **Examples:**
@@ -255,17 +263,19 @@
       discard finalize(stmt)
       result = false
 
-proc tryExec*(db: DbConn, stmtName: SqlPrepared): bool {.
-              tags: [ReadDbEffect, WriteDbEffect].} =
-    let x = step(stmtName.PStmt)
-    if x in [SQLITE_DONE, SQLITE_ROW]:
-      result = true
-    else:
-      discard finalize(stmtName.PStmt)
-      result = false
+proc tryExec*(
+    db: DbConn, stmtName: SqlPrepared
+): bool {.tags: [ReadDbEffect, WriteDbEffect].} =
+  let x = step(stmtName.PStmt)
+  if x in [SQLITE_DONE, SQLITE_ROW]:
+    result = true
+  else:
+    discard finalize(stmtName.PStmt)
+    result = false
 
-proc exec*(db: DbConn, query: SqlQuery, args: varargs[string, `$`])  {.
-  tags: [ReadDbEffect, WriteDbEffect].} =
+proc exec*(
+    db: DbConn, query: SqlQuery, args: varargs[string, `$`]
+) {.tags: [ReadDbEffect, WriteDbEffect].} =
   ## Executes the query and raises a `DbError` exception if not successful.
   ##
   ## **Examples:**
@@ -279,51 +289,56 @@
   ##   finally:
   ##     db.close()
   ##   ```
-  if not tryExec(db, query, args): dbError(db)
+  if not tryExec(db, query, args):
+    dbError(db)
 
 macro untypedLen(args: varargs[untyped]): int =
   newLit(args.len)
 
-macro bindParams*(ps: SqlPrepared, params: varargs[untyped]): untyped {.since: (1, 3).} =
+macro bindParams*(
+    ps: SqlPrepared, params: varargs[untyped]
+): untyped {.since: (1, 3).} =
   let bindParam = bindSym("bindParam", brOpen)
   let bindNull = bindSym("bindNull")
   let preparedStatement = genSym()
   result = newStmtList()
   # Store `ps` in a temporary variable. This prevents `ps` from being evaluated every call.
-  result.add newNimNode(nnkLetSection).add(newIdentDefs(preparedStatement, newEmptyNode(), ps))
+  result.add newNimNode(nnkLetSection).add(
+    newIdentDefs(preparedStatement, newEmptyNode(), ps)
+  )
   for idx, param in params:
     if param.kind != nnkNilLit:
       result.add newCall(bindParam, preparedStatement, newIntLitNode idx + 1, param)
     else:
       result.add newCall(bindNull, preparedStatement, newIntLitNode idx + 1)
 
-
-template exec*(db: DbConn, stmtName: SqlPrepared,
-          args: varargs[typed]): untyped =
+template exec*(db: DbConn, stmtName: SqlPrepared, args: varargs[typed]): untyped =
   when untypedLen(args) > 0:
     if reset(stmtName.PStmt) != SQLITE_OK:
       dbError(db)
     if clear_bindings(stmtName.PStmt) != SQLITE_OK:
       dbError(db)
     stmtName.bindParams(args)
-  if not tryExec(db, stmtName): dbError(db)
+  if not tryExec(db, stmtName):
+    dbError(db)
 
 proc newRow(L: int): Row =
   newSeq(result, L)
-  for i in 0..L-1: result[i] = ""
+  for i in 0 .. L - 1:
+    result[i] = ""
 
-proc setupQuery(db: DbConn, query: SqlQuery,
-                args: varargs[string]): PStmt =
+proc setupQuery(db: DbConn, query: SqlQuery, args: varargs[string]): PStmt =
   assert(not db.isNil, "Database not connected.")
   var q = dbFormat(query, args)
-  if prepare_v2(db, q.cstring, q.len.cint, result, nil) != SQLITE_OK: dbError(db)
+  if prepare_v2(db, q.cstring, q.len.cint, result, nil) != SQLITE_OK:
+    dbError(db)
 
 proc setupQuery(db: DbConn, stmtName: SqlPrepared): SqlPrepared {.since: (1, 3).} =
   assert(not db.isNil, "Database not connected.")
   result = stmtName
 
 proc setRow(stmt: PStmt, r: var Row, cols: cint) =
-  for col in 0'i32..cols-1:
+  for col in 0'i32 .. cols - 1:
     let cb = column_bytes(stmt, col)
     setLen(r[col], cb) # set capacity
     if column_type(stmt, col) == SQLITE_BLOB:
@@ -331,10 +346,12 @@
     else:
       setLen(r[col], 0)
       let x = column_text(stmt, col)
-      if not isNil(x): add(r[col], x)
+      if not isNil(x):
+        add(r[col], x)
 
-iterator fastRows*(db: DbConn, query: SqlQuery,
-                   args: varargs[string, `$`]): Row {.tags: [ReadDbEffect].} =
+iterator fastRows*(
+    db: DbConn, query: SqlQuery, args: varargs[string, `$`]
+): Row {.tags: [ReadDbEffect].} =
   ## Executes the query and iterates over the result dataset.
   ##
   ## This is very fast, but potentially dangerous. Use this iterator only
@@ -372,10 +389,12 @@
       setRow(stmt, result, L)
       yield result
   finally:
-    if finalize(stmt) != SQLITE_OK: dbError(db)
+    if finalize(stmt) != SQLITE_OK:
+      dbError(db)
 
-iterator fastRows*(db: DbConn, stmtName: SqlPrepared): Row
-                  {.tags: [ReadDbEffect,WriteDbEffect], since: (1, 3).} =
+iterator fastRows*(
+    db: DbConn, stmtName: SqlPrepared
+): Row {.tags: [ReadDbEffect, WriteDbEffect], since: (1, 3).} =
   discard setupQuery(db, stmtName)
   var L = (column_count(stmtName.PStmt))
   var result = newRow(L)
@@ -386,9 +405,9 @@
   except:
     dbError(db)
 
-iterator instantRows*(db: DbConn, query: SqlQuery,
-                      args: varargs[string, `$`]): InstantRow
-                      {.tags: [ReadDbEffect].} =
+iterator instantRows*(
+    db: DbConn, query: SqlQuery, args: varargs[string, `$`]
+): InstantRow {.tags: [ReadDbEffect].} =
   ## Similar to `fastRows iterator <#fastRows.i,DbConn,SqlQuery,varargs[string,]>`_
   ## but returns a handle that can be used to get column text
   ## on demand using `[]`. Returned handle is valid only within the iterator body.
@@ -424,10 +443,12 @@
     while step(stmt) == SQLITE_ROW:
       yield stmt
   finally:
-    if finalize(stmt) != SQLITE_OK: dbError(db)
+    if finalize(stmt) != SQLITE_OK:
+      dbError(db)
 
-iterator instantRows*(db: DbConn, stmtName: SqlPrepared): InstantRow
-                      {.tags: [ReadDbEffect,WriteDbEffect], since: (1, 3).} =
+iterator instantRows*(
+    db: DbConn, stmtName: SqlPrepared
+): InstantRow {.tags: [ReadDbEffect, WriteDbEffect], since: (1, 3).} =
   var stmt = setupQuery(db, stmtName).PStmt
   try:
     while step(stmt) == SQLITE_ROW:
@@ -435,7 +456,7 @@
   except:
     dbError(db)
 
-proc toTypeKind(t: var DbType; x: int32) =
+proc toTypeKind(t: var DbType, x: int32) =
   case x
   of SQLITE_INTEGER:
     t.kind = dbInt
@@ -443,12 +464,16 @@
   of SQLITE_FLOAT:
     t.kind = dbFloat
     t.size = 8
-  of SQLITE_BLOB: t.kind = dbBlob
-  of SQLITE_NULL: t.kind = dbNull
-  of SQLITE_TEXT: t.kind = dbVarchar
-  else: t.kind = dbUnknown
+  of SQLITE_BLOB:
+    t.kind = dbBlob
+  of SQLITE_NULL:
+    t.kind = dbNull
+  of SQLITE_TEXT:
+    t.kind = dbVarchar
+  else:
+    t.kind = dbUnknown
 
-proc setColumns(columns: var DbColumns; x: PStmt) =
+proc setColumns(columns: var DbColumns, x: PStmt) =
   let L = column_count(x)
   setLen(columns, L)
   for i in 0'i32 ..< L:
@@ -457,9 +482,9 @@
     toTypeKind(columns[i].typ, column_type(x, i))
     columns[i].tableName = $column_table_name(x, i)
 
-iterator instantRows*(db: DbConn; columns: var DbColumns; query: SqlQuery,
-                      args: varargs[string, `$`]): InstantRow
-                      {.tags: [ReadDbEffect].} =
+iterator instantRows*(
+    db: DbConn, columns: var DbColumns, query: SqlQuery, args: varargs[string, `$`]
+): InstantRow {.tags: [ReadDbEffect].} =
   ## Similar to `instantRows iterator <#instantRows.i,DbConn,SqlQuery,varargs[string,]>`_,
   ## but sets information about columns to `columns`.
   ##
@@ -493,7 +518,8 @@
     while step(stmt) == SQLITE_ROW:
       yield stmt
   finally:
-    if finalize(stmt) != SQLITE_OK: dbError(db)
+    if finalize(stmt) != SQLITE_OK:
+      dbError(db)
 
 proc `[]`*(row: InstantRow, col: int32): string {.inline.} =
   ## Returns text for given column of the row.
@@ -519,8 +545,9 @@
   ##   example code
   column_count(row)
 
-proc getRow*(db: DbConn, query: SqlQuery,
-             args: varargs[string, `$`]): Row {.tags: [ReadDbEffect].} =
+proc getRow*(
+    db: DbConn, query: SqlQuery, args: varargs[string, `$`]
+): Row {.tags: [ReadDbEffect].} =
   ## Retrieves a single row. If the query doesn't return any rows, this proc
   ## will return a `Row` with empty strings for each column.
   ##
@@ -553,10 +580,12 @@
   result = newRow(L)
   if step(stmt) == SQLITE_ROW:
     setRow(stmt, result, L)
-  if finalize(stmt) != SQLITE_OK: dbError(db)
+  if finalize(stmt) != SQLITE_OK:
+    dbError(db)
 
-proc getAllRows*(db: DbConn, query: SqlQuery,
-                 args: varargs[string, `$`]): seq[Row] {.tags: [ReadDbEffect].} =
+proc getAllRows*(
+    db: DbConn, query: SqlQuery, args: varargs[string, `$`]
+): seq[Row] {.tags: [ReadDbEffect].} =
   ## Executes the query and returns the whole result dataset.
   ##
   ## **Examples:**
@@ -577,14 +606,16 @@
   for r in fastRows(db, query, args):
     result.add(r)
 
-proc getAllRows*(db: DbConn, stmtName: SqlPrepared): seq[Row]
-                {.tags: [ReadDbEffect,WriteDbEffect], since: (1, 3).} =
+proc getAllRows*(
+    db: DbConn, stmtName: SqlPrepared
+): seq[Row] {.tags: [ReadDbEffect, WriteDbEffect], since: (1, 3).} =
   result = @[]
   for r in fastRows(db, stmtName):
     result.add(r)
 
-iterator rows*(db: DbConn, query: SqlQuery,
-               args: varargs[string, `$`]): Row {.tags: [ReadDbEffect].} =
+iterator rows*(
+    db: DbConn, query: SqlQuery, args: varargs[string, `$`]
+): Row {.tags: [ReadDbEffect].} =
   ## Similar to `fastRows iterator <#fastRows.i,DbConn,SqlQuery,varargs[string,]>`_,
   ## but slower and safe.
   ##
@@ -608,14 +639,18 @@
   ##
   ##   db.close()
   ##   ```
-  for r in fastRows(db, query, args): yield r
+  for r in fastRows(db, query, args):
+    yield r
 
-iterator rows*(db: DbConn, stmtName: SqlPrepared): Row
-              {.tags: [ReadDbEffect,WriteDbEffect], since: (1, 3).} =
-  for r in fastRows(db, stmtName): yield r
+iterator rows*(
+    db: DbConn, stmtName: SqlPrepared
+): Row {.tags: [ReadDbEffect, WriteDbEffect], since: (1, 3).} =
+  for r in fastRows(db, stmtName):
+    yield r
 
-proc getValue*(db: DbConn, query: SqlQuery,
-               args: varargs[string, `$`]): string {.tags: [ReadDbEffect].} =
+proc getValue*(
+    db: DbConn, query: SqlQuery, args: varargs[string, `$`]
+): string {.tags: [ReadDbEffect].} =
   ## Executes the query and returns the first column of the first row of the
   ## result dataset. Returns `""` if the dataset contains no rows or the database
   ## value is `NULL`.
@@ -652,10 +687,12 @@
         add(result, column_text(stmt, 0))
   else:
     result = ""
-  if finalize(stmt) != SQLITE_OK: dbError(db)
+  if finalize(stmt) != SQLITE_OK:
+    dbError(db)
 
-proc getValue*(db: DbConn,  stmtName: SqlPrepared): string
-              {.tags: [ReadDbEffect,WriteDbEffect], since: (1, 3).} =
+proc getValue*(
+    db: DbConn, stmtName: SqlPrepared
+): string {.tags: [ReadDbEffect, WriteDbEffect], since: (1, 3).} =
   var stmt = setupQuery(db, stmtName).PStmt
   if step(stmt) == SQLITE_ROW:
     let cb = column_bytes(stmt, 0)
@@ -671,9 +708,9 @@
   else:
     result = ""
 
-proc tryInsertID*(db: DbConn, query: SqlQuery,
-                  args: varargs[string, `$`]): int64
-                  {.tags: [WriteDbEffect], raises: [DbError].} =
+proc tryInsertID*(
+    db: DbConn, query: SqlQuery, args: varargs[string, `$`]
+): int64 {.tags: [WriteDbEffect], raises: [DbError].} =
   ## Executes the query (typically "INSERT") and returns the
   ## generated ID for the row or -1 in case of an error.
   ##
@@ -699,8 +736,9 @@
   else:
     discard finalize(stmt)
 
-proc insertID*(db: DbConn, query: SqlQuery,
-               args: varargs[string, `$`]): int64 {.tags: [WriteDbEffect].} =
+proc insertID*(
+    db: DbConn, query: SqlQuery, args: varargs[string, `$`]
+): int64 {.tags: [WriteDbEffect].} =
   ## Executes the query (typically "INSERT") and returns the
   ## generated ID for the row.
   ##
@@ -726,24 +764,26 @@
   ##   db.close()
   ##   ```
   result = tryInsertID(db, query, args)
-  if result < 0: dbError(db)
+  if result < 0:
+    dbError(db)
 
-proc tryInsert*(db: DbConn, query: SqlQuery, pkName: string,
-                args: varargs[string, `$`]): int64
-               {.tags: [WriteDbEffect], raises: [DbError], since: (1, 3).} =
+proc tryInsert*(
+    db: DbConn, query: SqlQuery, pkName: string, args: varargs[string, `$`]
+): int64 {.tags: [WriteDbEffect], raises: [DbError], since: (1, 3).} =
   ## same as tryInsertID
   tryInsertID(db, query, args)
 
-proc insert*(db: DbConn, query: SqlQuery, pkName: string,
-             args: varargs[string, `$`]): int64
-            {.tags: [WriteDbEffect], since: (1, 3).} =
+proc insert*(
+    db: DbConn, query: SqlQuery, pkName: string, args: varargs[string, `$`]
+): int64 {.tags: [WriteDbEffect], since: (1, 3).} =
   ## same as insertId
   result = tryInsert(db, query, pkName, args)
-  if result < 0: dbError(db)
+  if result < 0:
+    dbError(db)
 
-proc execAffectedRows*(db: DbConn, query: SqlQuery,
-                       args: varargs[string, `$`]): int64 {.
-                       tags: [ReadDbEffect, WriteDbEffect].} =
+proc execAffectedRows*(
+    db: DbConn, query: SqlQuery, args: varargs[string, `$`]
+): int64 {.tags: [ReadDbEffect, WriteDbEffect].} =
   ## Executes the query (typically "UPDATE") and returns the
   ## number of affected rows.
   ##
@@ -765,8 +805,9 @@
   exec(db, query, args)
   result = changes(db)
 
-proc execAffectedRows*(db: DbConn, stmtName: SqlPrepared): int64
-                      {.tags: [ReadDbEffect, WriteDbEffect],since: (1, 3).} =
+proc execAffectedRows*(
+    db: DbConn, stmtName: SqlPrepared
+): int64 {.tags: [ReadDbEffect, WriteDbEffect], since: (1, 3).} =
   exec(db, stmtName)
   result = changes(db)
 
@@ -778,10 +819,10 @@
   ##   let db = open("mytest.db", "", "", "")
   ##   db.close()
   ##   ```
-  if sqlite3.close(db) != SQLITE_OK: dbError(db)
+  if sqlite3.close(db) != SQLITE_OK:
+    dbError(db)
 
-proc open*(connection, user, password, database: string): DbConn {.
-  tags: [DbEffect].} =
+proc open*(connection, user, password, database: string): DbConn {.tags: [DbEffect].} =
   ## Opens a database connection. Raises a `DbError` exception if the connection
   ## could not be established.
   ##
@@ -803,8 +844,7 @@
   else:
     dbError(db)
 
-proc setEncoding*(connection: DbConn, encoding: string): bool {.
-  tags: [DbEffect].} =
+proc setEncoding*(connection: DbConn, encoding: string): bool {.tags: [DbEffect].} =
   ## Sets the encoding of a database connection, returns `true` for
   ## success, `false` for failure.
   ##
@@ -815,7 +855,7 @@
   exec(connection, sql"PRAGMA encoding = ?", [encoding])
   result = connection.getValue(sql"PRAGMA encoding") == encoding
 
-proc finalize*(sqlPrepared:SqlPrepared) {.discardable, since: (1, 3).} =
+proc finalize*(sqlPrepared: SqlPrepared) {.discardable, since: (1, 3).} =
   discard finalize(sqlPrepared.PStmt)
 
 template dbBindParamError*(paramIdx: int, val: varargs[untyped]) =
@@ -853,17 +893,33 @@
   if bind_null(ps.PStmt, paramIdx.int32) != SQLITE_OK:
     dbBindParamError(paramIdx)
 
-proc bindParam*(ps: SqlPrepared, paramIdx: int, val: string, copy = true) {.since: (1, 3).} =
+proc bindParam*(
+    ps: SqlPrepared, paramIdx: int, val: string, copy = true
+) {.since: (1, 3).} =
   ## Binds a string to the specified paramIndex.
   ## if copy is true then SQLite makes its own private copy of the data immediately
-  if bind_text(ps.PStmt, paramIdx.int32, val.cstring, val.len.int32, if copy: SQLITE_TRANSIENT else: SQLITE_STATIC) != SQLITE_OK:
+  if bind_text(
+    ps.PStmt,
+    paramIdx.int32,
+    val.cstring,
+    val.len.int32,
+    if copy: SQLITE_TRANSIENT else: SQLITE_STATIC,
+  ) != SQLITE_OK:
     dbBindParamError(paramIdx, val)
 
-proc bindParam*(ps: SqlPrepared, paramIdx: int,val: openArray[byte], copy = true) {.since: (1, 3).} =
+proc bindParam*(
+    ps: SqlPrepared, paramIdx: int, val: openArray[byte], copy = true
+) {.since: (1, 3).} =
   ## binds a blob to the specified paramIndex.
   ## if copy is true then SQLite makes its own private copy of the data immediately
   let len = val.len
-  if bind_blob(ps.PStmt, paramIdx.int32, val[0].unsafeAddr, len.int32, if copy: SQLITE_TRANSIENT else: SQLITE_STATIC) != SQLITE_OK:
+  if bind_blob(
+    ps.PStmt,
+    paramIdx.int32,
+    val[0].unsafeAddr,
+    len.int32,
+    if copy: SQLITE_TRANSIENT else: SQLITE_STATIC,
+  ) != SQLITE_OK:
     dbBindParamError(paramIdx, val)
 
 when not defined(testing) and isMainModule:
@@ -887,12 +943,12 @@
     echo(r[0], r[1])
   for r in db.instantRows(sql"select * from tbl1", []):
     echo(r[0], r[1])
-  var p4 =  db.prepare "select * from tbl2"
+  var p4 = db.prepare "select * from tbl2"
   for r in db.rows(p4):
     echo(r[0], r[1])
   finalize(p4)
   var i5 = 0
-  var p5 =  db.prepare "select * from tbl2"
+  var p5 = db.prepare "select * from tbl2"
   for r in db.instantRows(p5):
     inc i5
     echo(r[0], r[1])
@@ -930,9 +986,9 @@
   exec(db, p8)
   finalize(p8)
   var p10 = db.prepare "INSERT INTO photos (ID,PHOTO) VALUES (?,?)"
-  p10.bindParams(2'i32,nil)
+  p10.bindParams(2'i32, nil)
   exec(db, p10)
-  exec( db, p10, 3, nil)
+  exec(db, p10, 3, nil)
   finalize(p10)
   for r in db.rows(sql"select * from photos where ID = 1", []):
     assert r[1].len == d.len
--- a/semicongine/thirdparty/db_connector/private/dbutils.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/db_connector/private/dbutils.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,13 +1,18 @@
 import ../db_common
 
-
-template dbFormatImpl*(formatstr: SqlQuery, dbQuote: proc (s: string): string {.nimcall.}, args: varargs[string]): string =
+template dbFormatImpl*(
+    formatstr: SqlQuery,
+    dbQuote: proc(s: string): string {.nimcall.},
+    args: varargs[string],
+): string =
   var res = ""
   var a = 0
   for c in items(string(formatstr)):
     if c == '?':
       if a == args.len:
-        dbError("""The number of "?" given exceeds the number of parameters present in the query.""")
+        dbError(
+          """The number of "?" given exceeds the number of parameters present in the query."""
+        )
       add(res, dbQuote(args[a]))
       inc(a)
     else:
--- a/semicongine/thirdparty/db_connector/sqlite3.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/db_connector/sqlite3.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -21,38 +21,38 @@
   SQLITE_TEXT* = 3
   SQLITE_UTF8* = 1
   SQLITE_UTF16LE* = 2
-  SQLITE_UTF16BE* = 3     # Use native byte order
-  SQLITE_UTF16* = 4       # sqlite3_create_function only
-  SQLITE_ANY* = 5         #sqlite_exec return values
+  SQLITE_UTF16BE* = 3 # Use native byte order
+  SQLITE_UTF16* = 4 # sqlite3_create_function only
+  SQLITE_ANY* = 5 #sqlite_exec return values
   SQLITE_OK* = 0
-  SQLITE_ERROR* = 1       # SQL error or missing database
-  SQLITE_INTERNAL* = 2    # An internal logic error in SQLite
-  SQLITE_PERM* = 3        # Access permission denied
-  SQLITE_ABORT* = 4       # Callback routine requested an abort
-  SQLITE_BUSY* = 5        # The database file is locked
-  SQLITE_LOCKED* = 6      # A table in the database is locked
-  SQLITE_NOMEM* = 7       # A malloc() failed
-  SQLITE_READONLY* = 8    # Attempt to write a readonly database
-  SQLITE_INTERRUPT* = 9   # Operation terminated by sqlite3_interrupt()
-  SQLITE_IOERR* = 10      # Some kind of disk I/O error occurred
-  SQLITE_CORRUPT* = 11    # The database disk image is malformed
-  SQLITE_NOTFOUND* = 12   # (Internal Only) Table or record not found
-  SQLITE_FULL* = 13       # Insertion failed because database is full
-  SQLITE_CANTOPEN* = 14   # Unable to open the database file
-  SQLITE_PROTOCOL* = 15   # Database lock protocol error
-  SQLITE_EMPTY* = 16      # Database is empty
-  SQLITE_SCHEMA* = 17     # The database schema changed
-  SQLITE_TOOBIG* = 18     # Too much data for one row of a table
+  SQLITE_ERROR* = 1 # SQL error or missing database
+  SQLITE_INTERNAL* = 2 # An internal logic error in SQLite
+  SQLITE_PERM* = 3 # Access permission denied
+  SQLITE_ABORT* = 4 # Callback routine requested an abort
+  SQLITE_BUSY* = 5 # The database file is locked
+  SQLITE_LOCKED* = 6 # A table in the database is locked
+  SQLITE_NOMEM* = 7 # A malloc() failed
+  SQLITE_READONLY* = 8 # Attempt to write a readonly database
+  SQLITE_INTERRUPT* = 9 # Operation terminated by sqlite3_interrupt()
+  SQLITE_IOERR* = 10 # Some kind of disk I/O error occurred
+  SQLITE_CORRUPT* = 11 # The database disk image is malformed
+  SQLITE_NOTFOUND* = 12 # (Internal Only) Table or record not found
+  SQLITE_FULL* = 13 # Insertion failed because database is full
+  SQLITE_CANTOPEN* = 14 # Unable to open the database file
+  SQLITE_PROTOCOL* = 15 # Database lock protocol error
+  SQLITE_EMPTY* = 16 # Database is empty
+  SQLITE_SCHEMA* = 17 # The database schema changed
+  SQLITE_TOOBIG* = 18 # Too much data for one row of a table
   SQLITE_CONSTRAINT* = 19 # Abort due to constraint violation
-  SQLITE_MISMATCH* = 20   # Data type mismatch
-  SQLITE_MISUSE* = 21     # Library used incorrectly
-  SQLITE_NOLFS* = 22      # Uses OS features not supported on host
-  SQLITE_AUTH* = 23       # Authorization denied
-  SQLITE_FORMAT* = 24     # Auxiliary database format error
-  SQLITE_RANGE* = 25      # 2nd parameter to sqlite3_bind out of range
-  SQLITE_NOTADB* = 26     # File opened that is not a database file
-  SQLITE_ROW* = 100       # sqlite3_step() has another row ready
-  SQLITE_DONE* = 101      # sqlite3_step() has finished executing
+  SQLITE_MISMATCH* = 20 # Data type mismatch
+  SQLITE_MISUSE* = 21 # Library used incorrectly
+  SQLITE_NOLFS* = 22 # Uses OS features not supported on host
+  SQLITE_AUTH* = 23 # Authorization denied
+  SQLITE_FORMAT* = 24 # Auxiliary database format error
+  SQLITE_RANGE* = 25 # 2nd parameter to sqlite3_bind out of range
+  SQLITE_NOTADB* = 26 # File opened that is not a database file
+  SQLITE_ROW* = 100 # sqlite3_step() has another row ready
+  SQLITE_DONE* = 101 # sqlite3_step() has finished executing
   SQLITE_COPY* = 0
   SQLITE_CREATE_INDEX* = 1
   SQLITE_CREATE_TABLE* = 2
@@ -82,9 +82,10 @@
   SQLITE_ALTER_TABLE* = 26
   SQLITE_REINDEX* = 27
   SQLITE_DENY* = 1
-  SQLITE_IGNORE* = 2      # Original from sqlite3.h:
-                          #define SQLITE_STATIC      ((void(*)(void *))0)
-                          #define SQLITE_TRANSIENT   ((void(*)(void *))-1)
+  SQLITE_IGNORE* = 2
+    # Original from sqlite3.h:
+    #define SQLITE_STATIC      ((void(*)(void *))0)
+    #define SQLITE_TRANSIENT   ((void(*)(void *))-1)
   SQLITE_DETERMINISTIC* = 0x800
 
 type
@@ -94,273 +95,421 @@
   Sqlite3_Backup {.pure, final.} = object
   PSqlite3_Backup* = ptr Sqlite3_Backup
   PPSqlite3_Backup* = ptr PSqlite3_Backup
-  Context{.pure, final.} = object
+  Context {.pure, final.} = object
   Pcontext* = ptr Context
-  TStmt{.pure, final.} = object
+  TStmt {.pure, final.} = object
   PStmt* = ptr TStmt
-  Value{.pure, final.} = object
+  Value {.pure, final.} = object
   PValue* = ptr Value
-  PValueArg* = array[0..127, PValue]
+  PValueArg* = array[0 .. 127, PValue]
 
-  Callback* = proc (para1: pointer, para2: int32, para3,
-                     para4: cstringArray): int32{.cdecl.}
-  Tbind_destructor_func* = proc (para1: pointer){.cdecl, tags: [], gcsafe.}
-  Create_function_step_func* = proc (para1: Pcontext, para2: int32,
-                                      para3: PValueArg){.cdecl.}
-  Create_function_func_func* = proc (para1: Pcontext, para2: int32,
-                                      para3: PValueArg){.cdecl.}
-  Create_function_final_func* = proc (para1: Pcontext){.cdecl.}
-  Result_func* = proc (para1: pointer){.cdecl.}
-  Create_collation_func* = proc (para1: pointer, para2: int32, para3: pointer,
-                                  para4: int32, para5: pointer): int32{.cdecl.}
-  Collation_needed_func* = proc (para1: pointer, para2: PSqlite3, eTextRep: int32,
-                                  para4: cstring){.cdecl.}
+  Callback* =
+    proc(para1: pointer, para2: int32, para3, para4: cstringArray): int32 {.cdecl.}
+  Tbind_destructor_func* = proc(para1: pointer) {.cdecl, tags: [], gcsafe.}
+  Create_function_step_func* =
+    proc(para1: Pcontext, para2: int32, para3: PValueArg) {.cdecl.}
+  Create_function_func_func* =
+    proc(para1: Pcontext, para2: int32, para3: PValueArg) {.cdecl.}
+  Create_function_final_func* = proc(para1: Pcontext) {.cdecl.}
+  Result_func* = proc(para1: pointer) {.cdecl.}
+  Create_collation_func* = proc(
+    para1: pointer, para2: int32, para3: pointer, para4: int32, para5: pointer
+  ): int32 {.cdecl.}
+  Collation_needed_func* =
+    proc(para1: pointer, para2: PSqlite3, eTextRep: int32, para4: cstring) {.cdecl.}
 
 const
   SQLITE_STATIC* = nil
   SQLITE_TRANSIENT* = cast[Tbind_destructor_func](-1)
 
-proc close*(para1: PSqlite3): int32{.cdecl, mylib, importc: "sqlite3_close".}
-proc exec*(para1: PSqlite3, sql: cstring, para3: Callback, para4: pointer,
-           errmsg: var cstring): int32{.cdecl, mylib,
-                                        importc: "sqlite3_exec".}
-proc last_insert_rowid*(para1: PSqlite3): int64{.cdecl, mylib,
-    importc: "sqlite3_last_insert_rowid".}
-proc changes*(para1: PSqlite3): int32{.cdecl, mylib, importc: "sqlite3_changes".}
-proc total_changes*(para1: PSqlite3): int32{.cdecl, mylib,
-                                      importc: "sqlite3_total_changes".}
-proc interrupt*(para1: PSqlite3){.cdecl, mylib, importc: "sqlite3_interrupt".}
-proc complete*(sql: cstring): int32{.cdecl, mylib,
-                                     importc: "sqlite3_complete".}
-proc complete16*(sql: pointer): int32{.cdecl, mylib,
-                                       importc: "sqlite3_complete16".}
-proc busy_handler*(para1: PSqlite3,
-                   para2: proc (para1: pointer, para2: int32): int32{.cdecl.},
-                   para3: pointer): int32{.cdecl, mylib,
-    importc: "sqlite3_busy_handler".}
-proc busy_timeout*(para1: PSqlite3, ms: int32): int32{.cdecl, mylib,
-    importc: "sqlite3_busy_timeout".}
-proc get_table*(para1: PSqlite3, sql: cstring, resultp: var cstringArray,
-                nrow, ncolumn: var cint, errmsg: ptr cstring): int32{.cdecl,
-    mylib, importc: "sqlite3_get_table".}
-proc free_table*(result: cstringArray){.cdecl, mylib,
-                                        importc: "sqlite3_free_table".}
+proc close*(para1: PSqlite3): int32 {.cdecl, mylib, importc: "sqlite3_close".}
+proc exec*(
+  para1: PSqlite3, sql: cstring, para3: Callback, para4: pointer, errmsg: var cstring
+): int32 {.cdecl, mylib, importc: "sqlite3_exec".}
+
+proc last_insert_rowid*(
+  para1: PSqlite3
+): int64 {.cdecl, mylib, importc: "sqlite3_last_insert_rowid".}
+
+proc changes*(para1: PSqlite3): int32 {.cdecl, mylib, importc: "sqlite3_changes".}
+proc total_changes*(
+  para1: PSqlite3
+): int32 {.cdecl, mylib, importc: "sqlite3_total_changes".}
+
+proc interrupt*(para1: PSqlite3) {.cdecl, mylib, importc: "sqlite3_interrupt".}
+proc complete*(sql: cstring): int32 {.cdecl, mylib, importc: "sqlite3_complete".}
+proc complete16*(sql: pointer): int32 {.cdecl, mylib, importc: "sqlite3_complete16".}
+proc busy_handler*(
+  para1: PSqlite3,
+  para2: proc(para1: pointer, para2: int32): int32 {.cdecl.},
+  para3: pointer,
+): int32 {.cdecl, mylib, importc: "sqlite3_busy_handler".}
+
+proc busy_timeout*(
+  para1: PSqlite3, ms: int32
+): int32 {.cdecl, mylib, importc: "sqlite3_busy_timeout".}
+
+proc get_table*(
+  para1: PSqlite3,
+  sql: cstring,
+  resultp: var cstringArray,
+  nrow, ncolumn: var cint,
+  errmsg: ptr cstring,
+): int32 {.cdecl, mylib, importc: "sqlite3_get_table".}
+
+proc free_table*(result: cstringArray) {.cdecl, mylib, importc: "sqlite3_free_table".}
   # Todo: see how translate sqlite3_mprintf, sqlite3_vmprintf, sqlite3_snprintf
   # function sqlite3_mprintf(_para1:Pchar; args:array of const):Pchar;cdecl; external Sqlite3Lib name 'sqlite3_mprintf';
-proc mprintf*(para1: cstring): cstring{.cdecl, varargs, mylib,
-                                        importc: "sqlite3_mprintf".}
+
+proc mprintf*(
+  para1: cstring
+): cstring {.cdecl, varargs, mylib, importc: "sqlite3_mprintf".}
   #function sqlite3_vmprintf(_para1:Pchar; _para2:va_list):Pchar;cdecl; external Sqlite3Lib name 'sqlite3_vmprintf';
-proc free*(z: cstring){.cdecl, mylib, importc: "sqlite3_free".}
+
+proc free*(z: cstring) {.cdecl, mylib, importc: "sqlite3_free".}
   #function sqlite3_snprintf(_para1:longint; _para2:Pchar; _para3:Pchar; args:array of const):Pchar;cdecl; external Sqlite3Lib name 'sqlite3_snprintf';
-proc snprintf*(para1: int32, para2: cstring, para3: cstring): cstring{.cdecl,
-    mylib, varargs, importc: "sqlite3_snprintf".}
-proc set_authorizer*(para1: PSqlite3, xAuth: proc (para1: pointer, para2: int32,
-    para3: cstring, para4: cstring, para5: cstring, para6: cstring): int32{.
-    cdecl.}, pUserData: pointer): int32{.cdecl, mylib,
-    importc: "sqlite3_set_authorizer".}
-proc trace*(para1: PSqlite3, xTrace: proc (para1: pointer, para2: cstring){.cdecl.},
-            para3: pointer): pointer{.cdecl, mylib,
-                                      importc: "sqlite3_trace".}
-proc progress_handler*(para1: PSqlite3, para2: int32,
-                       para3: proc (para1: pointer): int32{.cdecl.},
-                       para4: pointer){.cdecl, mylib,
-                                        importc: "sqlite3_progress_handler".}
-proc commit_hook*(para1: PSqlite3, para2: proc (para1: pointer): int32{.cdecl.},
-                  para3: pointer): pointer{.cdecl, mylib,
-    importc: "sqlite3_commit_hook".}
-proc open*(filename: cstring, ppDb: var PSqlite3): int32{.cdecl, mylib,
-    importc: "sqlite3_open".}
-proc open16*(filename: pointer, ppDb: var PSqlite3): int32{.cdecl, mylib,
-    importc: "sqlite3_open16".}
-proc errcode*(db: PSqlite3): int32{.cdecl, mylib, importc: "sqlite3_errcode".}
-proc errmsg*(para1: PSqlite3): cstring{.cdecl, mylib, importc: "sqlite3_errmsg".}
-proc errmsg16*(para1: PSqlite3): pointer{.cdecl, mylib,
-                                   importc: "sqlite3_errmsg16".}
-proc prepare*(db: PSqlite3, zSql: cstring, nBytes: int32, ppStmt: var PStmt,
-              pzTail: ptr cstring): int32{.cdecl, mylib,
-    importc: "sqlite3_prepare".}
+
+proc snprintf*(
+  para1: int32, para2: cstring, para3: cstring
+): cstring {.cdecl, mylib, varargs, importc: "sqlite3_snprintf".}
+
+proc set_authorizer*(
+  para1: PSqlite3,
+  xAuth: proc(
+    para1: pointer,
+    para2: int32,
+    para3: cstring,
+    para4: cstring,
+    para5: cstring,
+    para6: cstring,
+  ): int32 {.cdecl.},
+  pUserData: pointer,
+): int32 {.cdecl, mylib, importc: "sqlite3_set_authorizer".}
+
+proc trace*(
+  para1: PSqlite3,
+  xTrace: proc(para1: pointer, para2: cstring) {.cdecl.},
+  para3: pointer,
+): pointer {.cdecl, mylib, importc: "sqlite3_trace".}
+
+proc progress_handler*(
+  para1: PSqlite3,
+  para2: int32,
+  para3: proc(para1: pointer): int32 {.cdecl.},
+  para4: pointer,
+) {.cdecl, mylib, importc: "sqlite3_progress_handler".}
+
+proc commit_hook*(
+  para1: PSqlite3, para2: proc(para1: pointer): int32 {.cdecl.}, para3: pointer
+): pointer {.cdecl, mylib, importc: "sqlite3_commit_hook".}
+
+proc open*(
+  filename: cstring, ppDb: var PSqlite3
+): int32 {.cdecl, mylib, importc: "sqlite3_open".}
+
+proc open16*(
+  filename: pointer, ppDb: var PSqlite3
+): int32 {.cdecl, mylib, importc: "sqlite3_open16".}
 
-proc prepare_v2*(db: PSqlite3, zSql: cstring, nByte: cint, ppStmt: var PStmt,
-                pzTail: ptr cstring): cint {.
-                importc: "sqlite3_prepare_v2", cdecl, mylib.}
+proc errcode*(db: PSqlite3): int32 {.cdecl, mylib, importc: "sqlite3_errcode".}
+proc errmsg*(para1: PSqlite3): cstring {.cdecl, mylib, importc: "sqlite3_errmsg".}
+proc errmsg16*(para1: PSqlite3): pointer {.cdecl, mylib, importc: "sqlite3_errmsg16".}
+proc prepare*(
+  db: PSqlite3, zSql: cstring, nBytes: int32, ppStmt: var PStmt, pzTail: ptr cstring
+): int32 {.cdecl, mylib, importc: "sqlite3_prepare".}
+
+proc prepare_v2*(
+  db: PSqlite3, zSql: cstring, nByte: cint, ppStmt: var PStmt, pzTail: ptr cstring
+): cint {.importc: "sqlite3_prepare_v2", cdecl, mylib.}
+
+proc prepare16*(
+  db: PSqlite3, zSql: pointer, nBytes: int32, ppStmt: var PStmt, pzTail: var pointer
+): int32 {.cdecl, mylib, importc: "sqlite3_prepare16".}
+
+proc bind_blob*(
+  para1: PStmt, para2: int32, para3: pointer, n: int32, para5: Tbind_destructor_func
+): int32 {.cdecl, mylib, importc: "sqlite3_bind_blob".}
 
-proc prepare16*(db: PSqlite3, zSql: pointer, nBytes: int32, ppStmt: var PStmt,
-                pzTail: var pointer): int32{.cdecl, mylib,
-    importc: "sqlite3_prepare16".}
-proc bind_blob*(para1: PStmt, para2: int32, para3: pointer, n: int32,
-                para5: Tbind_destructor_func): int32{.cdecl, mylib,
-    importc: "sqlite3_bind_blob".}
-proc bind_double*(para1: PStmt, para2: int32, para3: float64): int32{.cdecl,
-    mylib, importc: "sqlite3_bind_double".}
-proc bind_int*(para1: PStmt, para2: int32, para3: int32): int32{.cdecl,
-    mylib, importc: "sqlite3_bind_int".}
-proc bind_int64*(para1: PStmt, para2: int32, para3: int64): int32{.cdecl,
-    mylib, importc: "sqlite3_bind_int64".}
-proc bind_null*(para1: PStmt, para2: int32): int32{.cdecl, mylib,
-    importc: "sqlite3_bind_null".}
-proc bind_text*(para1: PStmt, para2: int32, para3: cstring, n: int32,
-                para5: Tbind_destructor_func): int32{.cdecl, mylib,
-    importc: "sqlite3_bind_text".}
-proc bind_text16*(para1: PStmt, para2: int32, para3: pointer, para4: int32,
-                  para5: Tbind_destructor_func): int32{.cdecl, mylib,
-    importc: "sqlite3_bind_text16".}
+proc bind_double*(
+  para1: PStmt, para2: int32, para3: float64
+): int32 {.cdecl, mylib, importc: "sqlite3_bind_double".}
+
+proc bind_int*(
+  para1: PStmt, para2: int32, para3: int32
+): int32 {.cdecl, mylib, importc: "sqlite3_bind_int".}
+
+proc bind_int64*(
+  para1: PStmt, para2: int32, para3: int64
+): int32 {.cdecl, mylib, importc: "sqlite3_bind_int64".}
+
+proc bind_null*(
+  para1: PStmt, para2: int32
+): int32 {.cdecl, mylib, importc: "sqlite3_bind_null".}
+
+proc bind_text*(
+  para1: PStmt, para2: int32, para3: cstring, n: int32, para5: Tbind_destructor_func
+): int32 {.cdecl, mylib, importc: "sqlite3_bind_text".}
+
+proc bind_text16*(
+  para1: PStmt, para2: int32, para3: pointer, para4: int32, para5: Tbind_destructor_func
+): int32 {.cdecl, mylib, importc: "sqlite3_bind_text16".}
   #function sqlite3_bind_value(_para1:Psqlite3_stmt; _para2:longint; _para3:Psqlite3_value):longint;cdecl; external Sqlite3Lib name 'sqlite3_bind_value';
   #These overloaded functions were introduced to allow the use of SQLITE_STATIC and SQLITE_TRANSIENT
   #It's the c world man ;-)
-proc bind_blob*(para1: PStmt, para2: int32, para3: pointer, n: int32,
-                para5: int32): int32{.cdecl, mylib,
-                                      importc: "sqlite3_bind_blob".}
-proc bind_text*(para1: PStmt, para2: int32, para3: cstring, n: int32,
-                para5: int32): int32{.cdecl, mylib,
-                                      importc: "sqlite3_bind_text".}
-proc bind_text16*(para1: PStmt, para2: int32, para3: pointer, para4: int32,
-                  para5: int32): int32{.cdecl, mylib,
-                                        importc: "sqlite3_bind_text16".}
-proc bind_parameter_count*(para1: PStmt): int32{.cdecl, mylib,
-    importc: "sqlite3_bind_parameter_count".}
-proc bind_parameter_name*(para1: PStmt, para2: int32): cstring{.cdecl,
-    mylib, importc: "sqlite3_bind_parameter_name".}
-proc bind_parameter_index*(para1: PStmt, zName: cstring): int32{.cdecl,
-    mylib, importc: "sqlite3_bind_parameter_index".}
-proc clear_bindings*(para1: PStmt): int32 {.cdecl,
-    mylib, importc: "sqlite3_clear_bindings".}
-proc column_count*(PStmt: PStmt): int32{.cdecl, mylib,
-    importc: "sqlite3_column_count".}
-proc column_name*(para1: PStmt, para2: int32): cstring{.cdecl, mylib,
-    importc: "sqlite3_column_name".}
-proc column_table_name*(para1: PStmt; para2: int32): cstring{.cdecl, mylib,
-    importc: "sqlite3_column_table_name".}
-proc column_name16*(para1: PStmt, para2: int32): pointer{.cdecl, mylib,
-    importc: "sqlite3_column_name16".}
-proc column_decltype*(para1: PStmt, i: int32): cstring{.cdecl, mylib,
-    importc: "sqlite3_column_decltype".}
-proc column_decltype16*(para1: PStmt, para2: int32): pointer{.cdecl,
-    mylib, importc: "sqlite3_column_decltype16".}
-proc step*(para1: PStmt): int32{.cdecl, mylib, importc: "sqlite3_step".}
-proc data_count*(PStmt: PStmt): int32{.cdecl, mylib,
-                                       importc: "sqlite3_data_count".}
-proc column_blob*(para1: PStmt, iCol: int32): pointer{.cdecl, mylib,
-    importc: "sqlite3_column_blob".}
-proc column_bytes*(para1: PStmt, iCol: int32): int32{.cdecl, mylib,
-    importc: "sqlite3_column_bytes".}
-proc column_bytes16*(para1: PStmt, iCol: int32): int32{.cdecl, mylib,
-    importc: "sqlite3_column_bytes16".}
-proc column_double*(para1: PStmt, iCol: int32): float64{.cdecl, mylib,
-    importc: "sqlite3_column_double".}
-proc column_int*(para1: PStmt, iCol: int32): int32{.cdecl, mylib,
-    importc: "sqlite3_column_int".}
-proc column_int64*(para1: PStmt, iCol: int32): int64{.cdecl, mylib,
-    importc: "sqlite3_column_int64".}
-proc column_text*(para1: PStmt, iCol: int32): cstring{.cdecl, mylib,
-    importc: "sqlite3_column_text".}
-proc column_text16*(para1: PStmt, iCol: int32): pointer{.cdecl, mylib,
-    importc: "sqlite3_column_text16".}
-proc column_type*(para1: PStmt, iCol: int32): int32{.cdecl, mylib,
-    importc: "sqlite3_column_type".}
-proc finalize*(PStmt: PStmt): int32{.cdecl, mylib,
-                                     importc: "sqlite3_finalize".}
-proc reset*(PStmt: PStmt): int32{.cdecl, mylib, importc: "sqlite3_reset".}
-proc create_function*(para1: PSqlite3, zFunctionName: cstring, nArg: int32,
-                      eTextRep: int32, para5: pointer,
-                      xFunc: Create_function_func_func,
-                      xStep: Create_function_step_func,
-                      xFinal: Create_function_final_func): int32{.cdecl,
-    mylib, importc: "sqlite3_create_function".}
-proc create_function16*(para1: PSqlite3, zFunctionName: pointer, nArg: int32,
-                        eTextRep: int32, para5: pointer,
-                        xFunc: Create_function_func_func,
-                        xStep: Create_function_step_func,
-                        xFinal: Create_function_final_func): int32{.cdecl,
-    mylib, importc: "sqlite3_create_function16".}
-proc aggregate_count*(para1: Pcontext): int32{.cdecl, mylib,
-    importc: "sqlite3_aggregate_count".}
-proc value_blob*(para1: PValue): pointer{.cdecl, mylib,
-    importc: "sqlite3_value_blob".}
-proc value_bytes*(para1: PValue): int32{.cdecl, mylib,
-    importc: "sqlite3_value_bytes".}
-proc value_bytes16*(para1: PValue): int32{.cdecl, mylib,
-    importc: "sqlite3_value_bytes16".}
-proc value_double*(para1: PValue): float64{.cdecl, mylib,
-    importc: "sqlite3_value_double".}
-proc value_int*(para1: PValue): int32{.cdecl, mylib,
-                                       importc: "sqlite3_value_int".}
-proc value_int64*(para1: PValue): int64{.cdecl, mylib,
-    importc: "sqlite3_value_int64".}
-proc value_text*(para1: PValue): cstring{.cdecl, mylib,
-    importc: "sqlite3_value_text".}
-proc value_text16*(para1: PValue): pointer{.cdecl, mylib,
-    importc: "sqlite3_value_text16".}
-proc value_text16le*(para1: PValue): pointer{.cdecl, mylib,
-    importc: "sqlite3_value_text16le".}
-proc value_text16be*(para1: PValue): pointer{.cdecl, mylib,
-    importc: "sqlite3_value_text16be".}
-proc value_type*(para1: PValue): int32{.cdecl, mylib,
-                                        importc: "sqlite3_value_type".}
-proc aggregate_context*(para1: Pcontext, nBytes: int32): pointer{.cdecl,
-    mylib, importc: "sqlite3_aggregate_context".}
-proc user_data*(para1: Pcontext): pointer{.cdecl, mylib,
-    importc: "sqlite3_user_data".}
-proc get_auxdata*(para1: Pcontext, para2: int32): pointer{.cdecl, mylib,
-    importc: "sqlite3_get_auxdata".}
-proc set_auxdata*(para1: Pcontext, para2: int32, para3: pointer,
-                  para4: proc (para1: pointer){.cdecl.}){.cdecl, mylib,
-    importc: "sqlite3_set_auxdata".}
-proc result_blob*(para1: Pcontext, para2: pointer, para3: int32,
-                  para4: Result_func){.cdecl, mylib,
-                                        importc: "sqlite3_result_blob".}
-proc result_double*(para1: Pcontext, para2: float64){.cdecl, mylib,
-    importc: "sqlite3_result_double".}
-proc result_error*(para1: Pcontext, para2: cstring, para3: int32){.cdecl,
-    mylib, importc: "sqlite3_result_error".}
-proc result_error16*(para1: Pcontext, para2: pointer, para3: int32){.cdecl,
-    mylib, importc: "sqlite3_result_error16".}
-proc result_int*(para1: Pcontext, para2: int32){.cdecl, mylib,
-    importc: "sqlite3_result_int".}
-proc result_int64*(para1: Pcontext, para2: int64){.cdecl, mylib,
-    importc: "sqlite3_result_int64".}
-proc result_null*(para1: Pcontext){.cdecl, mylib,
-                                    importc: "sqlite3_result_null".}
-proc result_text*(para1: Pcontext, para2: cstring, para3: int32,
-                  para4: Result_func){.cdecl, mylib,
-                                        importc: "sqlite3_result_text".}
-proc result_text16*(para1: Pcontext, para2: pointer, para3: int32,
-                    para4: Result_func){.cdecl, mylib,
-    importc: "sqlite3_result_text16".}
-proc result_text16le*(para1: Pcontext, para2: pointer, para3: int32,
-                      para4: Result_func){.cdecl, mylib,
-    importc: "sqlite3_result_text16le".}
-proc result_text16be*(para1: Pcontext, para2: pointer, para3: int32,
-                      para4: Result_func){.cdecl, mylib,
-    importc: "sqlite3_result_text16be".}
-proc result_value*(para1: Pcontext, para2: PValue){.cdecl, mylib,
-    importc: "sqlite3_result_value".}
-proc create_collation*(para1: PSqlite3, zName: cstring, eTextRep: int32,
-                       para4: pointer, xCompare: Create_collation_func): int32{.
-    cdecl, mylib, importc: "sqlite3_create_collation".}
-proc create_collation16*(para1: PSqlite3, zName: cstring, eTextRep: int32,
-                         para4: pointer, xCompare: Create_collation_func): int32{.
-    cdecl, mylib, importc: "sqlite3_create_collation16".}
-proc collation_needed*(para1: PSqlite3, para2: pointer, para3: Collation_needed_func): int32{.
-    cdecl, mylib, importc: "sqlite3_collation_needed".}
-proc collation_needed16*(para1: PSqlite3, para2: pointer, para3: Collation_needed_func): int32{.
-    cdecl, mylib, importc: "sqlite3_collation_needed16".}
-proc libversion*(): cstring{.cdecl, mylib, importc: "sqlite3_libversion".}
+
+proc bind_blob*(
+  para1: PStmt, para2: int32, para3: pointer, n: int32, para5: int32
+): int32 {.cdecl, mylib, importc: "sqlite3_bind_blob".}
+
+proc bind_text*(
+  para1: PStmt, para2: int32, para3: cstring, n: int32, para5: int32
+): int32 {.cdecl, mylib, importc: "sqlite3_bind_text".}
+
+proc bind_text16*(
+  para1: PStmt, para2: int32, para3: pointer, para4: int32, para5: int32
+): int32 {.cdecl, mylib, importc: "sqlite3_bind_text16".}
+
+proc bind_parameter_count*(
+  para1: PStmt
+): int32 {.cdecl, mylib, importc: "sqlite3_bind_parameter_count".}
+
+proc bind_parameter_name*(
+  para1: PStmt, para2: int32
+): cstring {.cdecl, mylib, importc: "sqlite3_bind_parameter_name".}
+
+proc bind_parameter_index*(
+  para1: PStmt, zName: cstring
+): int32 {.cdecl, mylib, importc: "sqlite3_bind_parameter_index".}
+
+proc clear_bindings*(
+  para1: PStmt
+): int32 {.cdecl, mylib, importc: "sqlite3_clear_bindings".}
+
+proc column_count*(
+  PStmt: PStmt
+): int32 {.cdecl, mylib, importc: "sqlite3_column_count".}
+
+proc column_name*(
+  para1: PStmt, para2: int32
+): cstring {.cdecl, mylib, importc: "sqlite3_column_name".}
+
+proc column_table_name*(
+  para1: PStmt, para2: int32
+): cstring {.cdecl, mylib, importc: "sqlite3_column_table_name".}
+
+proc column_name16*(
+  para1: PStmt, para2: int32
+): pointer {.cdecl, mylib, importc: "sqlite3_column_name16".}
+
+proc column_decltype*(
+  para1: PStmt, i: int32
+): cstring {.cdecl, mylib, importc: "sqlite3_column_decltype".}
+
+proc column_decltype16*(
+  para1: PStmt, para2: int32
+): pointer {.cdecl, mylib, importc: "sqlite3_column_decltype16".}
+
+proc step*(para1: PStmt): int32 {.cdecl, mylib, importc: "sqlite3_step".}
+proc data_count*(PStmt: PStmt): int32 {.cdecl, mylib, importc: "sqlite3_data_count".}
+proc column_blob*(
+  para1: PStmt, iCol: int32
+): pointer {.cdecl, mylib, importc: "sqlite3_column_blob".}
+
+proc column_bytes*(
+  para1: PStmt, iCol: int32
+): int32 {.cdecl, mylib, importc: "sqlite3_column_bytes".}
+
+proc column_bytes16*(
+  para1: PStmt, iCol: int32
+): int32 {.cdecl, mylib, importc: "sqlite3_column_bytes16".}
+
+proc column_double*(
+  para1: PStmt, iCol: int32
+): float64 {.cdecl, mylib, importc: "sqlite3_column_double".}
+
+proc column_int*(
+  para1: PStmt, iCol: int32
+): int32 {.cdecl, mylib, importc: "sqlite3_column_int".}
+
+proc column_int64*(
+  para1: PStmt, iCol: int32
+): int64 {.cdecl, mylib, importc: "sqlite3_column_int64".}
+
+proc column_text*(
+  para1: PStmt, iCol: int32
+): cstring {.cdecl, mylib, importc: "sqlite3_column_text".}
+
+proc column_text16*(
+  para1: PStmt, iCol: int32
+): pointer {.cdecl, mylib, importc: "sqlite3_column_text16".}
+
+proc column_type*(
+  para1: PStmt, iCol: int32
+): int32 {.cdecl, mylib, importc: "sqlite3_column_type".}
+
+proc finalize*(PStmt: PStmt): int32 {.cdecl, mylib, importc: "sqlite3_finalize".}
+proc reset*(PStmt: PStmt): int32 {.cdecl, mylib, importc: "sqlite3_reset".}
+proc create_function*(
+  para1: PSqlite3,
+  zFunctionName: cstring,
+  nArg: int32,
+  eTextRep: int32,
+  para5: pointer,
+  xFunc: Create_function_func_func,
+  xStep: Create_function_step_func,
+  xFinal: Create_function_final_func,
+): int32 {.cdecl, mylib, importc: "sqlite3_create_function".}
+
+proc create_function16*(
+  para1: PSqlite3,
+  zFunctionName: pointer,
+  nArg: int32,
+  eTextRep: int32,
+  para5: pointer,
+  xFunc: Create_function_func_func,
+  xStep: Create_function_step_func,
+  xFinal: Create_function_final_func,
+): int32 {.cdecl, mylib, importc: "sqlite3_create_function16".}
+
+proc aggregate_count*(
+  para1: Pcontext
+): int32 {.cdecl, mylib, importc: "sqlite3_aggregate_count".}
+
+proc value_blob*(para1: PValue): pointer {.cdecl, mylib, importc: "sqlite3_value_blob".}
+proc value_bytes*(para1: PValue): int32 {.cdecl, mylib, importc: "sqlite3_value_bytes".}
+proc value_bytes16*(
+  para1: PValue
+): int32 {.cdecl, mylib, importc: "sqlite3_value_bytes16".}
+
+proc value_double*(
+  para1: PValue
+): float64 {.cdecl, mylib, importc: "sqlite3_value_double".}
+
+proc value_int*(para1: PValue): int32 {.cdecl, mylib, importc: "sqlite3_value_int".}
+proc value_int64*(para1: PValue): int64 {.cdecl, mylib, importc: "sqlite3_value_int64".}
+proc value_text*(para1: PValue): cstring {.cdecl, mylib, importc: "sqlite3_value_text".}
+proc value_text16*(
+  para1: PValue
+): pointer {.cdecl, mylib, importc: "sqlite3_value_text16".}
+
+proc value_text16le*(
+  para1: PValue
+): pointer {.cdecl, mylib, importc: "sqlite3_value_text16le".}
+
+proc value_text16be*(
+  para1: PValue
+): pointer {.cdecl, mylib, importc: "sqlite3_value_text16be".}
+
+proc value_type*(para1: PValue): int32 {.cdecl, mylib, importc: "sqlite3_value_type".}
+proc aggregate_context*(
+  para1: Pcontext, nBytes: int32
+): pointer {.cdecl, mylib, importc: "sqlite3_aggregate_context".}
+
+proc user_data*(para1: Pcontext): pointer {.cdecl, mylib, importc: "sqlite3_user_data".}
+proc get_auxdata*(
+  para1: Pcontext, para2: int32
+): pointer {.cdecl, mylib, importc: "sqlite3_get_auxdata".}
+
+proc set_auxdata*(
+  para1: Pcontext, para2: int32, para3: pointer, para4: proc(para1: pointer) {.cdecl.}
+) {.cdecl, mylib, importc: "sqlite3_set_auxdata".}
+
+proc result_blob*(
+  para1: Pcontext, para2: pointer, para3: int32, para4: Result_func
+) {.cdecl, mylib, importc: "sqlite3_result_blob".}
+
+proc result_double*(
+  para1: Pcontext, para2: float64
+) {.cdecl, mylib, importc: "sqlite3_result_double".}
+
+proc result_error*(
+  para1: Pcontext, para2: cstring, para3: int32
+) {.cdecl, mylib, importc: "sqlite3_result_error".}
+
+proc result_error16*(
+  para1: Pcontext, para2: pointer, para3: int32
+) {.cdecl, mylib, importc: "sqlite3_result_error16".}
+
+proc result_int*(
+  para1: Pcontext, para2: int32
+) {.cdecl, mylib, importc: "sqlite3_result_int".}
+
+proc result_int64*(
+  para1: Pcontext, para2: int64
+) {.cdecl, mylib, importc: "sqlite3_result_int64".}
+
+proc result_null*(para1: Pcontext) {.cdecl, mylib, importc: "sqlite3_result_null".}
+proc result_text*(
+  para1: Pcontext, para2: cstring, para3: int32, para4: Result_func
+) {.cdecl, mylib, importc: "sqlite3_result_text".}
+
+proc result_text16*(
+  para1: Pcontext, para2: pointer, para3: int32, para4: Result_func
+) {.cdecl, mylib, importc: "sqlite3_result_text16".}
+
+proc result_text16le*(
+  para1: Pcontext, para2: pointer, para3: int32, para4: Result_func
+) {.cdecl, mylib, importc: "sqlite3_result_text16le".}
+
+proc result_text16be*(
+  para1: Pcontext, para2: pointer, para3: int32, para4: Result_func
+) {.cdecl, mylib, importc: "sqlite3_result_text16be".}
+
+proc result_value*(
+  para1: Pcontext, para2: PValue
+) {.cdecl, mylib, importc: "sqlite3_result_value".}
+
+proc create_collation*(
+  para1: PSqlite3,
+  zName: cstring,
+  eTextRep: int32,
+  para4: pointer,
+  xCompare: Create_collation_func,
+): int32 {.cdecl, mylib, importc: "sqlite3_create_collation".}
+
+proc create_collation16*(
+  para1: PSqlite3,
+  zName: cstring,
+  eTextRep: int32,
+  para4: pointer,
+  xCompare: Create_collation_func,
+): int32 {.cdecl, mylib, importc: "sqlite3_create_collation16".}
+
+proc collation_needed*(
+  para1: PSqlite3, para2: pointer, para3: Collation_needed_func
+): int32 {.cdecl, mylib, importc: "sqlite3_collation_needed".}
+
+proc collation_needed16*(
+  para1: PSqlite3, para2: pointer, para3: Collation_needed_func
+): int32 {.cdecl, mylib, importc: "sqlite3_collation_needed16".}
+
+proc libversion*(): cstring {.cdecl, mylib, importc: "sqlite3_libversion".}
   #Alias for allowing better code portability (win32 is not working with external variables)
-proc version*(): cstring{.cdecl, mylib, importc: "sqlite3_libversion".}
+
+proc version*(): cstring {.cdecl, mylib, importc: "sqlite3_libversion".}
   # Not published functions
-proc libversion_number*(): int32{.cdecl, mylib,
-                                  importc: "sqlite3_libversion_number".}
+
+proc libversion_number*(): int32 {.cdecl, mylib, importc: "sqlite3_libversion_number".}
 
-proc backup_init*(pDest: PSqlite3, zDestName: cstring, pSource: PSqlite3, zSourceName: cstring): PSqlite3_Backup {.
-    cdecl, mylib, importc: "sqlite3_backup_init".}
+proc backup_init*(
+  pDest: PSqlite3, zDestName: cstring, pSource: PSqlite3, zSourceName: cstring
+): PSqlite3_Backup {.cdecl, mylib, importc: "sqlite3_backup_init".}
 
-proc backup_step*(pBackup: PSqlite3_Backup, nPage: int32): int32 {.cdecl, mylib, importc: "sqlite3_backup_step".}
+proc backup_step*(
+  pBackup: PSqlite3_Backup, nPage: int32
+): int32 {.cdecl, mylib, importc: "sqlite3_backup_step".}
 
-proc backup_finish*(pBackup: PSqlite3_Backup): int32 {.cdecl, mylib, importc: "sqlite3_backup_finish".}
+proc backup_finish*(
+  pBackup: PSqlite3_Backup
+): int32 {.cdecl, mylib, importc: "sqlite3_backup_finish".}
 
-proc backup_pagecount*(pBackup: PSqlite3_Backup): int32 {.cdecl, mylib, importc: "sqlite3_backup_pagecount".}
+proc backup_pagecount*(
+  pBackup: PSqlite3_Backup
+): int32 {.cdecl, mylib, importc: "sqlite3_backup_pagecount".}
 
-proc backup_remaining*(pBackup: PSqlite3_Backup): int32 {.cdecl, mylib, importc: "sqlite3_backup_remaining".}
+proc backup_remaining*(
+  pBackup: PSqlite3_Backup
+): int32 {.cdecl, mylib, importc: "sqlite3_backup_remaining".}
 
 proc sqlite3_sleep*(t: int64): int64 {.cdecl, mylib, importc: "sqlite3_sleep".}
 
@@ -369,6 +518,7 @@
   #function sqlite3_sleep(_para1:longint):longint;cdecl; external Sqlite3Lib name 'sqlite3_sleep';
   #function sqlite3_expired(_para1:Psqlite3_stmt):longint;cdecl; external Sqlite3Lib name 'sqlite3_expired';
   #function sqlite3_global_recover:longint;cdecl; external Sqlite3Lib name 'sqlite3_global_recover';
+
 # implementation
 
 when defined(nimHasStyleChecks):
--- a/semicongine/thirdparty/winim/winim/clr.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/clr.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -35,7 +35,8 @@
 
   proc example3() =
     ## Compile some code and run it
-    var code = """
+    var code =
+      """
 
     using System;
     public class Test {
@@ -60,15 +61,12 @@
   CSharpCodeProvider* = "Microsoft.CSharp.CSharpCodeProvider"
 
 type
-  CLRError* = object of CatchableError
-    ## Raised if a CLR error occurred.
+  CLRError* = object of CatchableError ## Raised if a CLR error occurred.
     hresult*: HRESULT
 
-  CLRVariant* = distinct variant
-    ## `distinct variant` to represent CLR object or value.
+  CLRVariant* = distinct variant ## `distinct variant` to represent CLR object or value.
 
-  CLRType* = distinct variant
-    ## `distinct variant` to represent CLR Type object.
+  CLRType* = distinct variant ## `distinct variant` to represent CLR Type object.
 
   CLRInterface* = object
     ## Represent CLR object with specified interface.
@@ -84,13 +82,12 @@
   hresult {.threadvar.}: HRESULT
   CurrentAssembly {.threadvar.}: CLRVariant
 
-converter voidpp_converter(x: ptr ptr object): ptr pointer {.used.} = cast[ptr pointer](x)
+converter voidpp_converter(x: ptr ptr object): ptr pointer {.used.} =
+  cast[ptr pointer](x)
 
-proc isNil*(x: CLRVariant): bool {.borrow.}
-  ## Check if `CLRVariant` is nil or not.
+proc isNil*(x: CLRVariant): bool {.borrow.} ## Check if `CLRVariant` is nil or not.
 
-proc isNil*(x: CLRType): bool {.borrow.}
-  ## Check if `CLRType` is nil or not.
+proc isNil*(x: CLRType): bool {.borrow.} ## Check if `CLRType` is nil or not.
 
 proc isNull*(x: CLRVariant): bool {.borrow.}
   ## Check if `CLRVariant` is C# null or VB nothing.
@@ -112,7 +109,9 @@
   else:
     result = CLRVariant toVariant(x)
 
-proc toCLRVariant*[T](x: openArray[T], vt: VARENUM = VT_VARIANT): CLRVariant {.inline.} =
+proc toCLRVariant*[T](
+    x: openArray[T], vt: VARENUM = VT_VARIANT
+): CLRVariant {.inline.} =
   ## Converts any supported openArray types into a `CLRVariant`.
   result = CLRVariant toVariant(x, vt)
 
@@ -125,86 +124,113 @@
   ## Converts a `CLRVariant` into any supported types.
   result = fromVariant[T](variant x)
 
-converter clrVariantToVariant*(x: CLRVariant): variant = variant x
+converter clrVariantToVariant*(x: CLRVariant): variant =
   ## Converts `CLRVariant` into `variant` automatically.
+  variant x
 
-converter clrVariantToString*(x: CLRVariant): string = fromCLRVariant[string](x)
+converter clrVariantToString*(x: CLRVariant): string =
   ## Converts `CLRVariant` into `string` automatically.
+  fromCLRVariant[string](x)
 
-converter clrVariantToCString*(x: CLRVariant): cstring = fromCLRVariant[cstring](x)
+converter clrVariantToCString*(x: CLRVariant): cstring =
   ## Converts `CLRVariant` into `cstring` automatically.
+  fromCLRVariant[cstring](x)
 
-converter clrVariantToMString*(x: CLRVariant): mstring = fromCLRVariant[mstring](x)
+converter clrVariantToMString*(x: CLRVariant): mstring =
   ## Converts `CLRVariant` into `mstring` automatically.
+  fromCLRVariant[mstring](x)
 
-converter clrVariantToWString*(x: CLRVariant): wstring = fromCLRVariant[wstring](x)
+converter clrVariantToWString*(x: CLRVariant): wstring =
   ## Converts `CLRVariant` into `wstring` automatically.
+  fromCLRVariant[wstring](x)
 
-converter clrVariantToChar*(x: CLRVariant): char = fromCLRVariant[char](x)
+converter clrVariantToChar*(x: CLRVariant): char =
   ## Converts `CLRVariant` into `char` automatically.
+  fromCLRVariant[char](x)
 
-converter clrVariantToBool*(x: CLRVariant): bool = fromCLRVariant[bool](x)
+converter clrVariantToBool*(x: CLRVariant): bool =
   ## Converts `CLRVariant` into `bool` automatically.
+  fromCLRVariant[bool](x)
 
-converter clrVariantToPtrIDispatch*(x: CLRVariant): ptr IDispatch = fromCLRVariant[ptr IDispatch](x)
+converter clrVariantToPtrIDispatch*(x: CLRVariant): ptr IDispatch =
   ## Converts `CLRVariant` into `ptr IDispatch` automatically.
+  fromCLRVariant[ptr IDispatch](x)
 
-converter clrVariantToPtrIUnknown*(x: CLRVariant): ptr IUnknown = fromCLRVariant[ptr IUnknown](x)
+converter clrVariantToPtrIUnknown*(x: CLRVariant): ptr IUnknown =
   ## Converts `CLRVariant` into `ptr IUnknown` automatically.
+  fromCLRVariant[ptr IUnknown](x)
 
-converter clrVariantToPointer*(x: CLRVariant): pointer = fromCLRVariant[pointer](x)
+converter clrVariantToPointer*(x: CLRVariant): pointer =
   ## Converts `CLRVariant` into `ptr IUnknown` automatically.
+  fromCLRVariant[pointer](x)
 
-converter clrVariantToInt*(x: CLRVariant): int = fromCLRVariant[int](x)
+converter clrVariantToInt*(x: CLRVariant): int =
   ## Converts `CLRVariant` into `int` automatically.
+  fromCLRVariant[int](x)
 
-converter clrVariantToUint*(x: CLRVariant): uint = fromCLRVariant[uint](x)
+converter clrVariantToUint*(x: CLRVariant): uint =
   ## Converts `CLRVariant` into `uint` automatically.
+  fromCLRVariant[uint](x)
 
-converter clrVariantToInt8*(x: CLRVariant): int8 = fromCLRVariant[int8](x)
+converter clrVariantToInt8*(x: CLRVariant): int8 =
   ## Converts `CLRVariant` into `int8` automatically.
+  fromCLRVariant[int8](x)
 
-converter clrVariantToUint8*(x: CLRVariant): uint8 = fromCLRVariant[uint8](x)
+converter clrVariantToUint8*(x: CLRVariant): uint8 =
   ## Converts `CLRVariant` into `uint8` automatically.
+  fromCLRVariant[uint8](x)
 
-converter clrVariantToInt16*(x: CLRVariant): int16 = fromCLRVariant[int16](x)
+converter clrVariantToInt16*(x: CLRVariant): int16 =
   ## Converts `CLRVariant` into `int16` automatically.
+  fromCLRVariant[int16](x)
 
-converter clrVariantToUInt16*(x: CLRVariant): uint16 = fromCLRVariant[uint16](x)
+converter clrVariantToUInt16*(x: CLRVariant): uint16 =
   ## Converts `CLRVariant` into `uint16` automatically.
+  fromCLRVariant[uint16](x)
 
-converter clrVariantToInt32*(x: CLRVariant): int32 = fromCLRVariant[int32](x)
+converter clrVariantToInt32*(x: CLRVariant): int32 =
   ## Converts `CLRVariant` into `int32` automatically.
+  fromCLRVariant[int32](x)
 
-converter clrVariantToUInt32*(x: CLRVariant): uint32 = fromCLRVariant[uint32](x)
+converter clrVariantToUInt32*(x: CLRVariant): uint32 =
   ## Converts `CLRVariant` into `uint32` automatically.
+  fromCLRVariant[uint32](x)
 
-converter clrVariantToInt64*(x: CLRVariant): int64 = fromCLRVariant[int64](x)
+converter clrVariantToInt64*(x: CLRVariant): int64 =
   ## Converts `CLRVariant` into `int64` automatically.
+  fromCLRVariant[int64](x)
 
-converter clrVariantToUInt64*(x: CLRVariant): uint64 = fromCLRVariant[uint64](x)
+converter clrVariantToUInt64*(x: CLRVariant): uint64 =
   ## Converts `CLRVariant` into `uint64` automatically.
+  fromCLRVariant[uint64](x)
 
-converter clrVariantToFloat32*(x: CLRVariant): float32 = fromCLRVariant[float32](x)
+converter clrVariantToFloat32*(x: CLRVariant): float32 =
   ## Converts `CLRVariant` into `float32` automatically.
+  fromCLRVariant[float32](x)
 
-converter clrVariantToFloat64*(x: CLRVariant): float64 = fromCLRVariant[float64](x)
+converter clrVariantToFloat64*(x: CLRVariant): float64 =
   ## Converts `CLRVariant` into `float64` automatically.
+  fromCLRVariant[float64](x)
 
-converter clrVariantToVARIANTRaw*(x: CLRVariant): VARIANT = fromCLRVariant[VARIANT](x)
+converter clrVariantToVARIANTRaw*(x: CLRVariant): VARIANT =
   ## Converts `CLRVariant` into `VARIANT` automatically.
+  fromCLRVariant[VARIANT](x)
 
-converter clrVariantToCOMArray1D*(x: CLRVariant): COMArray1D = fromCLRVariant[COMArray1D](x)
+converter clrVariantToCOMArray1D*(x: CLRVariant): COMArray1D =
   ## Converts `CLRVariant` into `COMArray1D` automatically.
+  fromCLRVariant[COMArray1D](x)
 
-converter clrVariantToCOMArray2D*(x: CLRVariant): COMArray2D = fromCLRVariant[COMArray2D](x)
+converter clrVariantToCOMArray2D*(x: CLRVariant): COMArray2D =
   ## Converts `CLRVariant` into `COMArray2D` automatically.
+  fromCLRVariant[COMArray2D](x)
 
-converter clrVariantToCOMArray3D*(x: CLRVariant): COMArray3D = fromCLRVariant[COMArray3D](x)
+converter clrVariantToCOMArray3D*(x: CLRVariant): COMArray3D =
   ## Converts `CLRVariant` into `COMArray3D` automatically.
+  fromCLRVariant[COMArray3D](x)
 
-converter clrVariantToCOMBinary*(x: CLRVariant): COMBinary = fromCLRVariant[COMBinary](x)
+converter clrVariantToCOMBinary*(x: CLRVariant): COMBinary =
   ## Converts `CLRVariant` into `COMBinary` automatically.
+  fromCLRVariant[COMBinary](x)
 
 template ERR(x: HRESULT): bool =
   hresult = x
@@ -212,8 +238,10 @@
 
 proc clrError(msg: string, hr: HRESULT = 0) =
   var hr = hr
-  if hr == 0: hr = hresult
-  if hr == 0: hr = E_FAIL
+  if hr == 0:
+    hr = hresult
+  if hr == 0:
+    hr = E_FAIL
 
   var e = newException(CLRError, fmt"{msg} (0x{hr.tohex})")
   e.hresult = hr
@@ -223,10 +251,8 @@
   var ret: ptr T
   if v.unwrap.vt == VT_UNKNOWN:
     hresult = v.unwrap.punkVal.QueryInterface(&(`IID T`), &ret)
-
   elif v.unwrap.vt == VT_DISPATCH:
     hresult = v.unwrap.pdispVal.QueryInterface(&(`IID T`), &ret)
-
   else:
     hresult = E_NOINTERFACE
 
@@ -264,9 +290,13 @@
 
   result = newCom(cast[ptr IDispatch](v.unwrap.punkVal))
 
-proc invoke(typ: ptr IType, self: VARIANT, name: string, flags: int,
-    vargs: varargs[CLRVariant, toCLRVariant]): CLRVariant {.discardable.} =
-
+proc invoke(
+    typ: ptr IType,
+    self: VARIANT,
+    name: string,
+    flags: int,
+    vargs: varargs[CLRVariant, toCLRVariant],
+): CLRVariant {.discardable.} =
   var
     bstr = SysAllocString(name)
     retVal: VARIANT
@@ -286,8 +316,9 @@
 
   result = CLRVariant wrap(retVal)
 
-proc invoke*(v: CLRVariant, name: string, flags: int,
-    vargs: varargs[CLRVariant, toCLRVariant]): CLRVariant {.discardable.} =
+proc invoke*(
+    v: CLRVariant, name: string, flags: int, vargs: varargs[CLRVariant, toCLRVariant]
+): CLRVariant {.discardable.} =
   ## Low level `invoke` for `CLRVariant`. Equal to `CLRVariant.GetType().InvokeMember(...)`
   if v.isNil:
     clrError("variant is nil", E_POINTER)
@@ -298,8 +329,10 @@
     self: VARIANT
 
   defer:
-    if not obj.isNil: obj.Release()
-    if not typ.isNil: typ.Release()
+    if not obj.isNil:
+      obj.Release()
+    if not typ.isNil:
+      typ.Release()
 
   obj = v.to(IObject)
   if obj.isNil:
@@ -315,8 +348,9 @@
 
   result = invoke(typ, self, name, flags, vargs)
 
-proc invoke*(v: CLRType, name: string, flags: int,
-    vargs: varargs[CLRVariant, toCLRVariant]): CLRVariant {.discardable.} =
+proc invoke*(
+    v: CLRType, name: string, flags: int, vargs: varargs[CLRVariant, toCLRVariant]
+): CLRVariant {.discardable.} =
   ## Low level `invoke` for `CLRType`. Equal to `CLRType.InvokeMember(...)`
   let v = CLRVariant v
   if v.isNil:
@@ -327,7 +361,8 @@
     self: VARIANT
 
   defer:
-    if not typ.isNil: typ.Release()
+    if not typ.isNil:
+      typ.Release()
 
   typ = v.to(IType)
   if typ.isNil:
@@ -335,8 +370,9 @@
 
   result = invoke(typ, self, name, flags, vargs)
 
-proc invoke*(v: CLRInterface, name: string, flags: int,
-    vargs: varargs[CLRVariant, toCLRVariant]): CLRVariant {.discardable.} =
+proc invoke*(
+    v: CLRInterface, name: string, flags: int, vargs: varargs[CLRVariant, toCLRVariant]
+): CLRVariant {.discardable.} =
   ## Low level `invoke` for `CLRInterface`.
   if v.obj.isNil or v.intf.isNil:
     clrError("invalid interface", E_POINTER)
@@ -347,8 +383,10 @@
     self: VARIANT
 
   defer:
-    if not obj.isNil: obj.Release()
-    if not typ.isNil: typ.Release()
+    if not obj.isNil:
+      obj.Release()
+    if not typ.isNil:
+      typ.Release()
 
   obj = v.obj.to(IObject)
   if obj.isNil:
@@ -367,51 +405,88 @@
 
 macro `.`*(v: CLRVariant, name: untyped, vargs: varargs[untyped]): untyped =
   ## Dot operator for `CLRVariant`. Invoke a method, get a property, or get a field.
-  result = newCall("invoke", v, newStrLitNode($name),
-    newIntLitNode(BindingFlags_InvokeMethod or BindingFlags_GetProperty or
-      BindingFlags_GetField or BindingFlags_OptionalParamBinding))
+  result = newCall(
+    "invoke",
+    v,
+    newStrLitNode($name),
+    newIntLitNode(
+      BindingFlags_InvokeMethod or BindingFlags_GetProperty or BindingFlags_GetField or
+        BindingFlags_OptionalParamBinding
+    ),
+  )
 
-  for i in vargs: result.add i
+  for i in vargs:
+    result.add i
 
 macro `.=`*(v: CLRVariant, name: untyped, vargs: varargs[untyped]): untyped =
   ## Dot assignment operator for `CLRVariant`. Set a property or field.
-  result = newCall("invoke", v, newStrLitNode($name),
-    newIntLitNode(BindingFlags_SetProperty or BindingFlags_SetField))
+  result = newCall(
+    "invoke",
+    v,
+    newStrLitNode($name),
+    newIntLitNode(BindingFlags_SetProperty or BindingFlags_SetField),
+  )
 
-  for i in vargs: result.add i
+  for i in vargs:
+    result.add i
 
 macro `.`*(v: CLRType, name: untyped, vargs: varargs[untyped]): untyped =
   ## Dot operator for `CLRType`. Invoke a static method, get a static property, or get a static field.
-  result = newCall("invoke", v, newStrLitNode($name),
-    newIntLitNode(BindingFlags_InvokeMethod or BindingFlags_GetProperty or
-      BindingFlags_GetField or BindingFlags_FlattenHierarchy or BindingFlags_Static or
-      BindingFlags_Public or BindingFlags_NonPublic or BindingFlags_OptionalParamBinding))
+  result = newCall(
+    "invoke",
+    v,
+    newStrLitNode($name),
+    newIntLitNode(
+      BindingFlags_InvokeMethod or BindingFlags_GetProperty or BindingFlags_GetField or
+        BindingFlags_FlattenHierarchy or BindingFlags_Static or BindingFlags_Public or
+        BindingFlags_NonPublic or BindingFlags_OptionalParamBinding
+    ),
+  )
 
-  for i in vargs: result.add i
+  for i in vargs:
+    result.add i
 
 macro `.=`*(v: CLRType, name: untyped, vargs: varargs[untyped]): untyped =
   ## Dot assignment operator for `CLRType`. Set a static property or field.
-  result = newCall("invoke", v, newStrLitNode($name),
-    newIntLitNode(BindingFlags_SetProperty or BindingFlags_SetField or
-      BindingFlags_FlattenHierarchy or BindingFlags_Static or BindingFlags_Public or
-      BindingFlags_NonPublic))
+  result = newCall(
+    "invoke",
+    v,
+    newStrLitNode($name),
+    newIntLitNode(
+      BindingFlags_SetProperty or BindingFlags_SetField or BindingFlags_FlattenHierarchy or
+        BindingFlags_Static or BindingFlags_Public or BindingFlags_NonPublic
+    ),
+  )
 
-  for i in vargs: result.add i
+  for i in vargs:
+    result.add i
 
 macro `.`*(v: CLRInterface, name: untyped, vargs: varargs[untyped]): untyped =
   ## Dot operator for `CLRInterface`.
-  result = newCall("invoke", v, newStrLitNode($name),
-    newIntLitNode(BindingFlags_InvokeMethod or BindingFlags_GetProperty or
-      BindingFlags_GetField or BindingFlags_OptionalParamBinding))
+  result = newCall(
+    "invoke",
+    v,
+    newStrLitNode($name),
+    newIntLitNode(
+      BindingFlags_InvokeMethod or BindingFlags_GetProperty or BindingFlags_GetField or
+        BindingFlags_OptionalParamBinding
+    ),
+  )
 
-  for i in vargs: result.add i
+  for i in vargs:
+    result.add i
 
 macro `.=`*(v: CLRInterface, name: untyped, vargs: varargs[untyped]): untyped =
   ## Dot assignment operator for `CLRInterface`.
-  result = newCall("invoke", v, newStrLitNode($name),
-    newIntLitNode(BindingFlags_SetProperty or BindingFlags_SetField))
+  result = newCall(
+    "invoke",
+    v,
+    newStrLitNode($name),
+    newIntLitNode(BindingFlags_SetProperty or BindingFlags_SetField),
+  )
 
-  for i in vargs: result.add i
+  for i in vargs:
+    result.add i
 
 proc reformatAsgn(n: NimNode): NimNode =
   # reformat code:
@@ -425,7 +500,7 @@
   params.insert(1, newIntLitNode(BindingFlags_SetProperty or BindingFlags_SetField))
   params.insert(1, dots.last.toStrLit)
   params.add(n.last)
-  dots.del(dots.len-1)
+  dots.del(dots.len - 1)
   dots.add(newIdentNode("invoke"))
   result = n[0]
 
@@ -435,9 +510,8 @@
   if n.kind == nnkAsgn and n[0].kind == nnkCall and n[0][0].kind == nnkDotExpr:
     # deal with a.b(c) = d
     result = clrReformat(reformatAsgn(n))
-
   elif n.len != 0:
-    for i in 0..<n.len:
+    for i in 0 ..< n.len:
       n[i] = clrReformat(n[i])
 
 macro clrScript*(x: untyped): untyped =
@@ -499,18 +573,15 @@
   ## `$` operator for CLRVariant.
   try:
     result = string v
-
   except VariantConversionError:
     if v.isObject:
       result = $v.ToString()
-
     elif v.isStruct:
       var parts = newSeq[string]()
       for key, val in v.fieldPairs:
         parts.add key & ": " & $val
 
       result = '(' & parts.join(", ") & ')'
-
     else:
       result = v.rawTypeDesc
 
@@ -518,18 +589,15 @@
   ## `repr` operator for CLRVariant.
   try:
     result = string v
-
   except VariantConversionError:
     if v.isObject:
       result = $v.ToString()
-
     elif v.isStruct:
       var parts = newSeq[string]()
       for key, val in v.fieldPairs:
         parts.add key & ": " & $val
 
       result = '(' & parts.join(", ") & ')'
-
     else:
       result = repr v.unwrap
 
@@ -542,8 +610,10 @@
     runtimeInfo: ptr ICLRRuntimeInfo
 
   defer:
-    if not metahost.isNil: metahost.Release()
-    if not enumUnknown.isNil: enumUnknown.Release()
+    if not metahost.isNil:
+      metahost.Release()
+    if not enumUnknown.isNil:
+      enumUnknown.Release()
 
   if CLRCreateInstance(&CLSID_CLRMetaHost, &IID_ICLRMetaHost, &metahost).ERR:
     clrError("unable to create metahost instance")
@@ -552,9 +622,11 @@
     clrError("unable to enumerate installed runtimes")
 
   while enumUnknown.Next(1, &enumRuntime, nil) == S_OK:
-    defer: enumRuntime.Release()
+    defer:
+      enumRuntime.Release()
     if enumRuntime.QueryInterface(&IID_ICLRRuntimeInfo, &runtimeInfo) == S_OK:
-      defer: runtimeInfo.Release()
+      defer:
+        runtimeInfo.Release()
       var
         size = DWORD 1024
         buffer = newWString(size)
@@ -582,10 +654,14 @@
     loadable: BOOL
 
   defer:
-    if not metahost.isNil: metahost.Release()
-    if not runtimeInfo.isNil: runtimeInfo.Release()
-    if not clrRuntimeHost.isNil: clrRuntimeHost.Release()
-    if not corRuntimeHost.isNil: corRuntimeHost.Release()
+    if not metahost.isNil:
+      metahost.Release()
+    if not runtimeInfo.isNil:
+      runtimeInfo.Release()
+    if not clrRuntimeHost.isNil:
+      clrRuntimeHost.Release()
+    if not corRuntimeHost.isNil:
+      corRuntimeHost.Release()
 
   if CLRCreateInstance(&CLSID_CLRMetaHost, &IID_ICLRMetaHost, &metahost).ERR:
     clrError("unable to create metahost instance")
@@ -596,16 +672,20 @@
   if runtimeInfo.IsLoadable(&loadable).ERR or not bool(loadable):
     clrError("specified runtime is not loadable")
 
-  if runtimeInfo.GetInterface(&CLSID_CLRRuntimeHost, &IID_ICLRRuntimeHost, &clrRuntimeHost).ERR:
+  if runtimeInfo.GetInterface(
+    &CLSID_CLRRuntimeHost, &IID_ICLRRuntimeHost, &clrRuntimeHost
+  ).ERR:
     clrError("unable to get interface of CLRRuntimeHost")
 
-  if runtimeInfo.GetInterface(&CLSID_CorRuntimeHost, &IID_ICorRuntimeHost, &corRuntimeHost).ERR or
-      corRuntimeHost.GetDefaultDomain(&retVal.punkVal).ERR:
-
+  if runtimeInfo.GetInterface(
+    &CLSID_CorRuntimeHost, &IID_ICorRuntimeHost, &corRuntimeHost
+  ).ERR or corRuntimeHost.GetDefaultDomain(&retVal.punkVal).ERR:
     if clrRuntimeHost.Start().ERR:
       clrError("unable to start CLRRuntimeHost")
 
-    if runtimeInfo.GetInterface(&CLSID_CorRuntimeHost, &IID_ICorRuntimeHost, &corRuntimeHost).ERR:
+    if runtimeInfo.GetInterface(
+      &CLSID_CorRuntimeHost, &IID_ICorRuntimeHost, &corRuntimeHost
+    ).ERR:
       clrError("unable to get interface of CorRuntimeHost")
 
     if corRuntimeHost.Start().ERR:
@@ -625,7 +705,6 @@
 
   try:
     result = @CurrentAssembly.LoadFrom(name)
-
   except CLRError:
     result = @CurrentAssembly.LoadWithPartialName(name)
 
@@ -643,7 +722,9 @@
 
   result = @CurrentAssembly.Load(toCLRVariant(data, VT_UI1))
 
-proc new*(assembly: CLRVariant, name: string, vargs: varargs[CLRVariant, toCLRVariant]): CLRVariant {.discardable.} =
+proc new*(
+    assembly: CLRVariant, name: string, vargs: varargs[CLRVariant, toCLRVariant]
+): CLRVariant {.discardable.} =
   ## Create an instance from this assembly by name (case-sensitive).
   if assembly.isNil:
     clrError("variant is nil", E_POINTER)
@@ -654,7 +735,9 @@
     let arr = toCLRVariant(vargs)
     result = assembly.CreateInstance(name, false, nil, nil, arr, nil, nil)
 
-proc new*(typ: CLRType, vargs: varargs[CLRVariant, toCLRVariant]): CLRVariant {.discardable.} =
+proc new*(
+    typ: CLRType, vargs: varargs[CLRVariant, toCLRVariant]
+): CLRVariant {.discardable.} =
   ## Create an instance of this type
   if typ.isNil:
     clrError("variant is nil", E_POINTER)
@@ -666,8 +749,14 @@
   let arr = toCLRVariant(vargs)
   result = @Activator.CreateInstance(CLRVariant typ, arr)
 
-proc compile*(code: string, references: openArray[string] = ["System.dll"], filename = "",
-    compilerOptions = "", provider = CSharpCodeProvider, debug = false): CLRVariant {.discardable.} =
+proc compile*(
+    code: string,
+    references: openArray[string] = ["System.dll"],
+    filename = "",
+    compilerOptions = "",
+    provider = CSharpCodeProvider,
+    debug = false,
+): CLRVariant {.discardable.} =
   ## Compiles the specified code. Returns the `CompilerResults` object.
   var
     sys = load("System")
@@ -694,7 +783,8 @@
 
 proc getRuntimeHelp(): CLRVariant =
   # Use runtime compiled assembly to support different runtime version.
-  const code = """
+  const code =
+    """
   using System;using System.Drawing;using System.Runtime.InteropServices;abstract class RuntimeHelper{public static IntPtr wrapIntPtr(Int64 i){return Marshal.GetIUnknownForObject((IntPtr)i);}
   public static IntPtr wrapIntPtr(Int32 i){return Marshal.GetIUnknownForObject((IntPtr)i);}
   public static IntPtr wrapAny(Object o){return Marshal.GetIUnknownForObject(o);}
@@ -732,7 +822,7 @@
     v.punkVal.Release()
   result = toCLRVariant(v)
 
-proc toObject*(x: pointer|proc): CLRVariant =
+proc toObject*(x: pointer | proc): CLRVariant =
   ## Converts `pointer` or `proc` into a `System.IntPtr` object.
   var RuntimeHelp = getRuntimeHelp()
   toObjectRaw(@RuntimeHelp.wrapIntPtr(cast[int64](x)))
@@ -752,7 +842,7 @@
   var RuntimeHelp = getRuntimeHelp()
   toObjectRaw(@RuntimeHelp.wrapAny(x, typ))
 
-proc `[]`*[T: variant|SomeNumber|string|proc|array|seq](x: T): CLRVariant =
+proc `[]`*[T: variant | SomeNumber | string | proc | array | seq](x: T): CLRVariant =
   ## Syntax sugar for x.toObject().
   toObject(x)
 
@@ -773,7 +863,8 @@
   if not v.isObject:
     v = v.toObject()
 
-  let iList = CLRInterface(obj: v, intf: v.GetType.GetInterface("System.Collections.IList"))
+  let iList =
+    CLRInterface(obj: v, intf: v.GetType.GetInterface("System.Collections.IList"))
   result = iList.Item(i)
 
 proc `[]`*(v: CLRVariant, i: SomeOrdinal): CLRVariant =
@@ -797,18 +888,20 @@
     except CLRError:
       clrError("variant is not enumerable")
 
-  proc ok(i: CLRInterface): bool {.inline.} = (not i.intf.isNil) and (not i.intf.isNull)
+  proc ok(i: CLRInterface): bool {.inline.} =
+    (not i.intf.isNil) and (not i.intf.isNull)
 
   let
     vtype = v.GetType
-    iCollection = CLRInterface(obj: v, intf: vtype.GetInterface("System.Collections.ICollection"))
+    iCollection =
+      CLRInterface(obj: v, intf: vtype.GetInterface("System.Collections.ICollection"))
     iList = CLRInterface(obj: v, intf: vtype.GetInterface("System.Collections.IList"))
-    iEnumerable = CLRInterface(obj: v, intf: vtype.GetInterface("System.Collections.IEnumerable"))
+    iEnumerable =
+      CLRInterface(obj: v, intf: vtype.GetInterface("System.Collections.IEnumerable"))
 
   if iCollection.ok and iList.ok:
     for i in 0 ..< iCollection.Count:
       yield (i, iList.Item(i))
-
   elif iEnumerable.ok:
     var
       enumerator: CLRVariant
@@ -822,7 +915,6 @@
     while enumerator.MoveNext:
       yield (i, enumerator.Current)
       i.inc
-
   else:
     clrError("variant is not enumerable")
 
--- a/semicongine/thirdparty/winim/winim/com.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/com.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -62,20 +62,26 @@
 type
   COMError* = object of CatchableError
     hresult*: HRESULT
+
   COMException* = object of COMError
   VariantConversionError* = object of ValueError
   SomeFloat = float | float32 | float64 # SomeReal is deprecated in devel
 
 template notNil[T](x: T): bool =
-  when T is BSTR: not cast[pointer](x).isNil
-  else: not x.isNil
+  when T is BSTR:
+    not cast[pointer](x).isNil
+  else:
+    not x.isNil
 
 proc free(x: pointer) =
   if not x.isNil:
     system.dealloc(x)
 
-converter voidpp_converter(x: ptr ptr object): ptr pointer = cast[ptr pointer](x)
-converter vartype_converter(x: VARENUM): VARTYPE = VARTYPE x
+converter voidpp_converter(x: ptr ptr object): ptr pointer =
+  cast[ptr pointer](x)
+
+converter vartype_converter(x: VARENUM): VARTYPE =
+  VARTYPE x
 
 # make these const store in global scope to avoid repeat init in every proc
 discard &IID_NULL
@@ -102,8 +108,8 @@
 proc low*(s: COMBinary): int {.borrow.}
 proc cmp*(x, y: COMBinary): int {.borrow.}
 proc `==`*(x, y: COMBinary): bool {.borrow.}
-proc `<=` *(x, y: COMBinary): bool {.borrow.}
-proc `<` *(x, y: COMBinary): bool {.borrow.}
+proc `<=`*(x, y: COMBinary): bool {.borrow.}
+proc `<`*(x, y: COMBinary): bool {.borrow.}
 proc substr*(s: COMBinary, first, last: int): COMBinary {.borrow.}
 proc substr*(s: COMBinary, first = 0): COMBinary {.borrow.}
 
@@ -139,11 +145,15 @@
 proc desc*(e: ref COMError): string =
   var buffer = newWString(4096)
 
-  FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_IGNORE_INSERTS,
-               nil,
-               DWORD e.hresult,
-               DWORD MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
-               buffer, 4096, nil)
+  FormatMessageW(
+    FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_IGNORE_INSERTS,
+    nil,
+    DWORD e.hresult,
+    DWORD MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+    buffer,
+    4096,
+    nil,
+  )
 
   result = $buffer
 
@@ -189,12 +199,13 @@
     new(x)
 
   when hasTraceTable:
-    if comTrace.isNil: comTrace = newTable[pointer, bool]()
-    if varTrace.isNil: varTrace = newTable[pointer, bool]()
+    if comTrace.isNil:
+      comTrace = newTable[pointer, bool]()
+    if varTrace.isNil:
+      varTrace = newTable[pointer, bool]()
 
     when x.type is variant:
       varTrace[cast[pointer](x)] = true
-
     elif x.type is com:
       comTrace[cast[pointer](x)] = true
 
@@ -208,8 +219,10 @@
   ##
   ## Use -d:notrace to disable this function.
   when hasTraceTable:
-    for k, v in varTrace: `=destroy`(cast[variant](k)[])
-    for k, v in comTrace: `=destroy`(cast[com](k)[])
+    for k, v in varTrace:
+      `=destroy`(cast[variant](k)[])
+    for k, v in comTrace:
+      `=destroy`(cast[com](k)[])
     varTrace.clear
     comTrace.clear
 
@@ -267,12 +280,17 @@
   else:
     result = ""
 
-    if (vt and VT_VECTOR) != 0: result &= "VT_VECTOR|"
-    if (vt and VT_BYREF) != 0: result &= "VT_BYREF|"
-    if (vt and VT_RESERVED) != 0: result &= "VT_RESERVED|"
+    if (vt and VT_VECTOR) != 0:
+      result &= "VT_VECTOR|"
+    if (vt and VT_BYREF) != 0:
+      result &= "VT_BYREF|"
+    if (vt and VT_RESERVED) != 0:
+      result &= "VT_RESERVED|"
     if (vt and VT_ARRAY) != 0:
-      if d != 0: result &= "VT_ARRAY(" & $d & "D)|"
-      else: result &= "VT_ARRAY|"
+      if d != 0:
+        result &= "VT_ARRAY(" & $d & "D)|"
+      else:
+        result &= "VT_ARRAY|"
 
     result &= typeStr(vt and 0xfff)
 
@@ -313,7 +331,10 @@
   result = x.raw
 
 proc isNull*(x: variant): bool {.inline.} =
-  result = (x.raw.vt == VT_EMPTY or x.raw.vt == VT_NULL or (x.raw.vt == VT_DISPATCH and x.raw.byref.isNil))
+  result = (
+    x.raw.vt == VT_EMPTY or x.raw.vt == VT_NULL or
+    (x.raw.vt == VT_DISPATCH and x.raw.byref.isNil)
+  )
 
 proc newVariant*(x: VARIANT): variant =
   result.init()
@@ -326,7 +347,7 @@
     if VariantCopy(&result.raw, x.raw.unsafeaddr).FAILED:
       raise newException(VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc))
 
-proc toVariant*(x: string|cstring|mstring): variant =
+proc toVariant*(x: string | cstring | mstring): variant =
   result.init()
   result.raw.vt = VT_BSTR
   var ws = +$x
@@ -347,7 +368,7 @@
   result.raw.vt = VT_BOOL
   result.raw.boolVal = if x: VARIANT_TRUE else: VARIANT_FALSE
 
-proc toVariant*(x: SomeInteger|enum): variant =
+proc toVariant*(x: SomeInteger | enum): variant =
   result.init()
   when x.type is SomeSignedInt:
     when sizeof(x) == 1:
@@ -437,12 +458,15 @@
 
   var st: SYSTEMTIME
   var date: float64
-  if FileTimeToSystemTime(x.unsafeaddr, &st) == FALSE or SystemTimeToVariantTime(&st, &date) == FALSE:
+  if FileTimeToSystemTime(x.unsafeaddr, &st) == FALSE or
+      SystemTimeToVariantTime(&st, &date) == FALSE:
     raise newException(VariantConversionError, vcErrorMsg("FILETIME", "VT_DATE"))
 
   result.raw.date = date
 
-proc toVariant*(x: ptr SomeInteger|ptr SomeFloat|ptr char|ptr bool|ptr BSTR): variant =
+proc toVariant*(
+    x: ptr SomeInteger | ptr SomeFloat | ptr char | ptr bool | ptr BSTR
+): variant =
   result = toVariant(x[])
   result.raw.byref = cast[pointer](x)
   result.raw.vt = result.raw.vt or VT_BYREF
@@ -467,23 +491,32 @@
 
   block okay:
     var pBuffer: pointer
-    if result.raw.parray == nil: break okay
-    if SafeArrayAccessData(result.raw.parray, &pBuffer) != S_OK: break okay
-    defer: SafeArrayUnaccessData(result.raw.parray)
+    if result.raw.parray == nil:
+      break okay
+    if SafeArrayAccessData(result.raw.parray, &pBuffer) != S_OK:
+      break okay
+    defer:
+      SafeArrayUnaccessData(result.raw.parray)
 
     copyMem(pBuffer, &(string x), x.len)
     return
 
-  raise newException(VariantConversionError, vcErrorMsg("COMBinary", VARTYPE(VT_ARRAY or VT_UI1).typeDesc(1)))
+  raise newException(
+    VariantConversionError,
+    vcErrorMsg("COMBinary", VARTYPE(VT_ARRAY or VT_UI1).typeDesc(1)),
+  )
 
 template toVariant1D(x: typed, vt: VARENUM) =
   var sab: array[1, SAFEARRAYBOUND]
   sab[0].cElements = x.len.ULONG
   result.raw.parray = SafeArrayCreate(VARTYPE vt, 1, &sab[0])
   if result.raw.parray == nil:
-    raise newException(VariantConversionError, vcErrorMsg("openarray", VARTYPE(vt or VT_ARRAY).typeDesc(1)))
+    raise newException(
+      VariantConversionError,
+      vcErrorMsg("openarray", VARTYPE(vt or VT_ARRAY).typeDesc(1)),
+    )
 
-  for i in 0..<x.len:
+  for i in 0 ..< x.len:
     var
       v = toVariant(x[i])
       indices = i.LONG
@@ -491,23 +524,31 @@
     if vt == VT_VARIANT:
       discard SafeArrayPutElement(result.raw.parray, &indices, &(v.raw))
     elif vt == VT_DISPATCH or vt == VT_UNKNOWN or vt == VT_BSTR:
-      discard SafeArrayPutElement(result.raw.parray, &indices, (v.raw.union1.struct1.union1.byref))
+      discard SafeArrayPutElement(
+        result.raw.parray, &indices, (v.raw.union1.struct1.union1.byref)
+      )
     else:
-      discard SafeArrayPutElement(result.raw.parray, &indices, &(v.raw.union1.struct1.union1.intVal))
+      discard SafeArrayPutElement(
+        result.raw.parray, &indices, &(v.raw.union1.struct1.union1.intVal)
+      )
 
 template toVariant2D(x: typed, vt: VARENUM) =
   var sab: array[2, SAFEARRAYBOUND]
   sab[0].cElements = x.len.ULONG
 
-  for i in 0..<x.len:
-    if x[i].len.ULONG > sab[1].cElements: sab[1].cElements = x[i].len.ULONG
+  for i in 0 ..< x.len:
+    if x[i].len.ULONG > sab[1].cElements:
+      sab[1].cElements = x[i].len.ULONG
 
   result.raw.parray = SafeArrayCreate(VARTYPE vt, 2, &sab[0])
   if result.raw.parray == nil:
-    raise newException(VariantConversionError, vcErrorMsg("openarray", VARTYPE(vt or VT_ARRAY).typeDesc(2)))
+    raise newException(
+      VariantConversionError,
+      vcErrorMsg("openarray", VARTYPE(vt or VT_ARRAY).typeDesc(2)),
+    )
 
-  for i in 0..<x.len:
-    for j in 0..<x[i].len:
+  for i in 0 ..< x.len:
+    for j in 0 ..< x[i].len:
       var
         v = toVariant(x[i][j])
         indices = [i.LONG, j.LONG]
@@ -515,26 +556,35 @@
       if vt == VT_VARIANT:
         discard SafeArrayPutElement(result.raw.parray, &indices[0], &(v.raw))
       elif vt == VT_DISPATCH or vt == VT_UNKNOWN or vt == VT_BSTR:
-        discard SafeArrayPutElement(result.raw.parray, &indices[0], (v.raw.union1.struct1.union1.byref))
+        discard SafeArrayPutElement(
+          result.raw.parray, &indices[0], (v.raw.union1.struct1.union1.byref)
+        )
       else:
-        discard SafeArrayPutElement(result.raw.parray, &indices[0], &(v.raw.union1.struct1.union1.intVal))
+        discard SafeArrayPutElement(
+          result.raw.parray, &indices[0], &(v.raw.union1.struct1.union1.intVal)
+        )
 
 template toVariant3D(x: typed, vt: VARENUM) =
   var sab: array[3, SAFEARRAYBOUND]
   sab[0].cElements = x.len.ULONG
 
-  for i in 0..<x.len:
-    if x[i].len.ULONG > sab[1].cElements: sab[1].cElements = x[i].len.ULONG
-    for j in 0..<x[i].len:
-      if x[i][j].len.ULONG > sab[2].cElements: sab[2].cElements = x[i][j].len.ULONG
+  for i in 0 ..< x.len:
+    if x[i].len.ULONG > sab[1].cElements:
+      sab[1].cElements = x[i].len.ULONG
+    for j in 0 ..< x[i].len:
+      if x[i][j].len.ULONG > sab[2].cElements:
+        sab[2].cElements = x[i][j].len.ULONG
 
   result.raw.parray = SafeArrayCreate(VARTYPE vt, 3, &sab[0])
   if result.raw.parray == nil:
-    raise newException(VariantConversionError, vcErrorMsg("openarray", VARTYPE(vt or VT_ARRAY).typeDesc(3)))
+    raise newException(
+      VariantConversionError,
+      vcErrorMsg("openarray", VARTYPE(vt or VT_ARRAY).typeDesc(3)),
+    )
 
-  for i in 0..<x.len:
-    for j in 0..<x[i].len:
-      for k in 0..<x[i][j].len:
+  for i in 0 ..< x.len:
+    for j in 0 ..< x[i].len:
+      for k in 0 ..< x[i][j].len:
         var
           v = toVariant(x[i][j][k])
           indices = [i.LONG, j.LONG, k.LONG]
@@ -542,18 +592,25 @@
         if vt == VT_VARIANT:
           discard SafeArrayPutElement(result.raw.parray, &indices[0], &(v.raw))
         elif vt == VT_DISPATCH or vt == VT_UNKNOWN or vt == VT_BSTR:
-          discard SafeArrayPutElement(result.raw.parray, &indices[0], (v.raw.union1.struct1.union1.byref))
+          discard SafeArrayPutElement(
+            result.raw.parray, &indices[0], (v.raw.union1.struct1.union1.byref)
+          )
         else:
-          discard SafeArrayPutElement(result.raw.parray, &indices[0], &(v.raw.union1.struct1.union1.intVal))
+          discard SafeArrayPutElement(
+            result.raw.parray, &indices[0], &(v.raw.union1.struct1.union1.intVal)
+          )
 
 proc toVariant*[T](x: openarray[T], vt: VARENUM = VT_VARIANT): variant =
   result.init()
   result.raw.vt = VARTYPE(VT_ARRAY or vt)
 
-  when x[0].type is array|seq:
-    when x[0][0].type is array|seq:
-      when x[0][0][0].type is array|seq:
-        raise newException(VariantConversionError, vcErrorMsg("openarray", VARTYPE(vt or VT_ARRAY).typeDesc(4)))
+  when x[0].type is array | seq:
+    when x[0][0].type is array | seq:
+      when x[0][0][0].type is array | seq:
+        raise newException(
+          VariantConversionError,
+          vcErrorMsg("openarray", VARTYPE(vt or VT_ARRAY).typeDesc(4)),
+        )
       else:
         toVariant3D(x, vt)
     else:
@@ -567,22 +624,24 @@
     xUbound, xLbound: LONG
 
   if SafeArrayGetVartype(x.raw.parray, &vt) == S_OK and dimensions == 1 and
-    SafeArrayGetLBound(x.raw.parray, 1, &xLbound) == S_OK and
-    SafeArrayGetUBound(x.raw.parray, 1, &xUbound) == S_OK:
-
+      SafeArrayGetLBound(x.raw.parray, 1, &xLbound) == S_OK and
+      SafeArrayGetUBound(x.raw.parray, 1, &xUbound) == S_OK:
     var xLen = xUbound - xLbound + 1
     newSeq(result, xLen)
-    for i in 0..<xLen:
+    for i in 0 ..< xLen:
       var indices = i.LONG + xLbound
       result[i].init()
       if vt == VT_VARIANT:
         discard SafeArrayGetElement(x.raw.parray, &indices, &result[i].raw)
       else:
         result[i].raw.vt = vt
-        discard SafeArrayGetElement(x.raw.parray, &indices, &result[i].raw.union1.struct1.union1.intVal)
-
+        discard SafeArrayGetElement(
+          x.raw.parray, &indices, &result[i].raw.union1.struct1.union1.intVal
+        )
   else:
-    raise newException(VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc(dimensions), "COMArray1D"))
+    raise newException(
+      VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc(dimensions), "COMArray1D")
+    )
 
 template fromVariant2D(x, dimensions: typed) =
   var
@@ -591,29 +650,31 @@
     yUbound, yLbound: LONG
 
   if SafeArrayGetVartype(x.raw.parray, &vt) == S_OK and dimensions == 2 and
-    SafeArrayGetLBound(x.raw.parray, 1, &xLbound) == S_OK and
-    SafeArrayGetUBound(x.raw.parray, 1, &xUbound) == S_OK and
-    SafeArrayGetLBound(x.raw.parray, 2, &yLbound) == S_OK and
-    SafeArrayGetUBound(x.raw.parray, 2, &yUbound) == S_OK:
-
+      SafeArrayGetLBound(x.raw.parray, 1, &xLbound) == S_OK and
+      SafeArrayGetUBound(x.raw.parray, 1, &xUbound) == S_OK and
+      SafeArrayGetLBound(x.raw.parray, 2, &yLbound) == S_OK and
+      SafeArrayGetUBound(x.raw.parray, 2, &yUbound) == S_OK:
     var
       xLen = xUbound - xLbound + 1
       yLen = yUbound - yLbound + 1
 
     newSeq(result, xLen)
-    for i in 0..<xLen:
+    for i in 0 ..< xLen:
       newSeq(result[i], yLen)
-      for j in 0..<yLen:
+      for j in 0 ..< yLen:
         var indices = [i.LONG + xLbound, j.LONG + yLbound]
         result[i][j].init()
         if vt == VT_VARIANT:
           discard SafeArrayGetElement(x.raw.parray, &indices[0], &result[i][j].raw)
         else:
           result[i][j].raw.vt = vt
-          discard SafeArrayGetElement(x.raw.parray, &indices[0], &result[i][j].raw.union1.struct1.union1.intVal)
-
+          discard SafeArrayGetElement(
+            x.raw.parray, &indices[0], &result[i][j].raw.union1.struct1.union1.intVal
+          )
   else:
-    raise newException(VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc(dimensions), "COMArray2D"))
+    raise newException(
+      VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc(dimensions), "COMArray2D")
+    )
 
 template fromVariant3D(x, dimensions: typed) =
   var
@@ -623,34 +684,38 @@
     zUbound, zLbound: LONG
 
   if SafeArrayGetVartype(x.raw.parray, &vt) == S_OK and dimensions == 3 and
-    SafeArrayGetLBound(x.raw.parray, 1, &xLbound) == S_OK and
-    SafeArrayGetUBound(x.raw.parray, 1, &xUbound) == S_OK and
-    SafeArrayGetLBound(x.raw.parray, 2, &yLbound) == S_OK and
-    SafeArrayGetUBound(x.raw.parray, 2, &yUbound) == S_OK and
-    SafeArrayGetLBound(x.raw.parray, 3, &zLbound) == S_OK and
-    SafeArrayGetUBound(x.raw.parray, 3, &zUbound) == S_OK:
-
+      SafeArrayGetLBound(x.raw.parray, 1, &xLbound) == S_OK and
+      SafeArrayGetUBound(x.raw.parray, 1, &xUbound) == S_OK and
+      SafeArrayGetLBound(x.raw.parray, 2, &yLbound) == S_OK and
+      SafeArrayGetUBound(x.raw.parray, 2, &yUbound) == S_OK and
+      SafeArrayGetLBound(x.raw.parray, 3, &zLbound) == S_OK and
+      SafeArrayGetUBound(x.raw.parray, 3, &zUbound) == S_OK:
     var
       xLen = xUbound - xLbound + 1
       yLen = yUbound - yLbound + 1
       zLen = zUbound - zLbound + 1
 
     newSeq(result, xLen)
-    for i in 0..<xLen:
+    for i in 0 ..< xLen:
       newSeq(result[i], yLen)
-      for j in 0..<yLen:
+      for j in 0 ..< yLen:
         newSeq(result[i][j], zLen)
-        for k in 0..<zLen:
+        for k in 0 ..< zLen:
           var indices = [i.LONG + xLbound, j.LONG + yLbound, k.LONG + zLbound]
           result[i][j][k].init()
           if vt == VT_VARIANT:
             discard SafeArrayGetElement(x.raw.parray, &indices[0], &result[i][j][k].raw)
           else:
             result[i][j][k].raw.vt = vt
-            discard SafeArrayGetElement(x.raw.parray, &indices[0], &result[i][j][k].raw.union1.struct1.union1.intVal)
-
+            discard SafeArrayGetElement(
+              x.raw.parray,
+              &indices[0],
+              &result[i][j][k].raw.union1.struct1.union1.intVal,
+            )
   else:
-    raise newException(VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc(dimensions), "COMArray3D"))
+    raise newException(
+      VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc(dimensions), "COMArray3D")
+    )
 
 template fromVariantBinary(x: typed) =
   var
@@ -660,12 +725,18 @@
     ok = false
 
   block okay:
-    if dimensions != 1: break okay
-    if SafeArrayGetVartype(x.raw.parray, &vt) != S_OK or vt notin {VT_UI1, VT_I1}: break okay
-    if SafeArrayGetLBound(x.raw.parray, 1, &xLbound) != S_OK: break okay
-    if SafeArrayGetUBound(x.raw.parray, 1, &xUbound) != S_OK: break okay
-    if SafeArrayAccessData(x.raw.parray, &pBuffer) != S_OK: break okay
-    defer: SafeArrayUnaccessData(x.raw.parray)
+    if dimensions != 1:
+      break okay
+    if SafeArrayGetVartype(x.raw.parray, &vt) != S_OK or vt notin {VT_UI1, VT_I1}:
+      break okay
+    if SafeArrayGetLBound(x.raw.parray, 1, &xLbound) != S_OK:
+      break okay
+    if SafeArrayGetUBound(x.raw.parray, 1, &xUbound) != S_OK:
+      break okay
+    if SafeArrayAccessData(x.raw.parray, &pBuffer) != S_OK:
+      break okay
+    defer:
+      SafeArrayUnaccessData(x.raw.parray)
 
     let xLen = xUbound - xLbound + 1
     result = COMBinary newString(xLen)
@@ -673,14 +744,16 @@
     ok = true
 
   if not ok:
-    raise newException(VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc(dimensions), "COMBinary"))
+    raise newException(
+      VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc(dimensions), "COMBinary")
+    )
 
 proc fromVariant*[T](x: variant): T =
-  if x.isNil: return
+  if x.isNil:
+    return
 
   when T is VARIANT:
     result = x.raw
-
   else:
     const VT_BYREF_VARIANT = VT_BYREF or VT_VARIANT
     if (x.raw.vt and VT_BYREF_VARIANT) == VT_BYREF_VARIANT:
@@ -691,39 +764,74 @@
     if (x.raw.vt and VT_ARRAY) != 0:
       dimensions = SafeArrayGetDim(x.raw.parray)
 
-    when T is COMArray1D: fromVariant1D(x, dimensions)
-    elif T is COMArray2D: fromVariant2D(x, dimensions)
-    elif T is COMArray3D: fromVariant3D(x, dimensions)
-    elif T is COMBinary: fromVariantBinary(x)
+    when T is COMArray1D:
+      fromVariant1D(x, dimensions)
+    elif T is COMArray2D:
+      fromVariant2D(x, dimensions)
+    elif T is COMArray3D:
+      fromVariant3D(x, dimensions)
+    elif T is COMBinary:
+      fromVariantBinary(x)
     elif T is ptr and not (T is ptr IDispatch) and not (T is ptr IUnknown):
       if (x.raw.vt and VT_BYREF) != 0:
         result = cast[T](x.raw.byref)
-
       else:
-        raise newException(VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc, "unsupported type"))
-
+        raise newException(
+          VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc, "unsupported type")
+        )
     else:
       var
         ret: VARIANT
         targetVt: VARENUM
         targetName: string
 
-      when T is string:         targetVt = VT_BSTR;     targetName = "string"
-      elif T is cstring:        targetVt = VT_BSTR;     targetName = "cstring"
-      elif T is mstring:        targetVt = VT_BSTR;     targetName = "mstring"
-      elif T is wstring:        targetVt = VT_BSTR;     targetName = "wstring"
-      elif T is BSTR:           targetVt = VT_BSTR;     targetName = "BSTR"
-      elif T is char:           targetVt = VT_UI1;      targetName = "char"
-      elif T is SomeInteger:    targetVt = VT_I8;       targetName = "integer"
-      elif T is SomeFloat:      targetVt = VT_R8;       targetName = "float"
-      elif T is bool:           targetVt = VT_BOOL;     targetName = "bool"
-      elif T is com:            targetVt = VT_DISPATCH; targetName = "com object"
-      elif T is ptr IDispatch:  targetVt = VT_DISPATCH; targetName = "ptr IDispatch"
-      elif T is ptr IUnknown:   targetVt = VT_UNKNOWN;  targetName = "ptr IUnknown"
-      elif T is pointer:        targetVt = VT_PTR;      targetName = "pointer"
-      elif T is FILETIME:       targetVt = VT_DATE;     targetName = "FILETIME"
-      elif T is SYSTEMTIME:     targetVt = VT_DATE;     targetName = "SYSTEMTIME"
-      else: {.fatal: "trying to do unsupported type conversion.".}
+      when T is string:
+        targetVt = VT_BSTR
+        targetName = "string"
+      elif T is cstring:
+        targetVt = VT_BSTR
+        targetName = "cstring"
+      elif T is mstring:
+        targetVt = VT_BSTR
+        targetName = "mstring"
+      elif T is wstring:
+        targetVt = VT_BSTR
+        targetName = "wstring"
+      elif T is BSTR:
+        targetVt = VT_BSTR
+        targetName = "BSTR"
+      elif T is char:
+        targetVt = VT_UI1
+        targetName = "char"
+      elif T is SomeInteger:
+        targetVt = VT_I8
+        targetName = "integer"
+      elif T is SomeFloat:
+        targetVt = VT_R8
+        targetName = "float"
+      elif T is bool:
+        targetVt = VT_BOOL
+        targetName = "bool"
+      elif T is com:
+        targetVt = VT_DISPATCH
+        targetName = "com object"
+      elif T is ptr IDispatch:
+        targetVt = VT_DISPATCH
+        targetName = "ptr IDispatch"
+      elif T is ptr IUnknown:
+        targetVt = VT_UNKNOWN
+        targetName = "ptr IUnknown"
+      elif T is pointer:
+        targetVt = VT_PTR
+        targetName = "pointer"
+      elif T is FILETIME:
+        targetVt = VT_DATE
+        targetName = "FILETIME"
+      elif T is SYSTEMTIME:
+        targetVt = VT_DATE
+        targetName = "SYSTEMTIME"
+      else:
+        {.fatal: "trying to do unsupported type conversion.".}
 
       var
         hr: HRESULT
@@ -744,23 +852,22 @@
         needClear = true
 
       defer:
-        if needClear: discard VariantClear(&ret)
+        if needClear:
+          discard VariantClear(&ret)
 
       if hr.FAILED:
-        raise newException(VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc(dimensions), targetName))
+        raise newException(
+          VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc(dimensions), targetName)
+        )
 
       when T is string:
         result = $ret.bstrVal
-
       elif T is cstring:
         result = cstring($ret.bstrVal)
-
       elif T is mstring:
         result = -$ret.bstrVal
-
       elif T is wstring:
         result = +$ret.bstrVal
-
       elif T is SYSTEMTIME:
         # SystemTimeToVariantTime and VariantTimeToSystemTime ignored milliseconds
         # https://www.codeproject.com/Articles/17576/SystemTime-to-VariantTime-with-Milliseconds
@@ -768,7 +875,10 @@
         const ONETHOUSANDMILLISECONDS = 0.0000115740740740'F64
         let halfSecond = ONETHOUSANDMILLISECONDS / 2.0
         if VariantTimeToSystemTime(ret.date - halfSecond, &result) == FALSE:
-          raise newException(VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc(dimensions), targetName))
+          raise newException(
+            VariantConversionError,
+            vcErrorMsg(x.raw.vt.typeDesc(dimensions), targetName),
+          )
 
         var
           fraction = ret.date - ret.date.int.float64
@@ -784,62 +894,126 @@
           result.wMilliseconds = WORD milliseconds
         else:
           if VariantTimeToSystemTime(ret.date, &result) == FALSE:
-            raise newException(VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc(dimensions), targetName))
-
+            raise newException(
+              VariantConversionError,
+              vcErrorMsg(x.raw.vt.typeDesc(dimensions), targetName),
+            )
       elif T is FILETIME:
         var st: SYSTEMTIME
-        if VariantTimeToSystemTime(ret.date, &st) == FALSE or SystemTimeToFileTime(&st, &result) == FALSE:
-          raise newException(VariantConversionError, vcErrorMsg(x.raw.vt.typeDesc(dimensions), targetName))
-
+        if VariantTimeToSystemTime(ret.date, &st) == FALSE or
+            SystemTimeToFileTime(&st, &result) == FALSE:
+          raise newException(
+            VariantConversionError,
+            vcErrorMsg(x.raw.vt.typeDesc(dimensions), targetName),
+          )
       elif T is com:
         result = newCom(ret.pdispVal)
-
       elif T is ptr IDispatch:
         ret.pdispVal.AddRef()
         result = ret.pdispVal
-
       elif T is ptr IUnknown:
         ret.punkVal.AddRef()
         result = ret.punkVal
-
       elif T is pointer:
         result = ret.byref
+      elif T is SomeInteger:
+        result = cast[T](ret.llVal)
+      elif T is SomeFloat:
+        result = T(ret.dblVal)
+      elif T is char:
+        result = char(ret.bVal)
+      elif T is bool:
+        result = if ret.boolVal != 0: true else: false
 
-      elif T is SomeInteger:  result = cast[T](ret.llVal)
-      elif T is SomeFloat:    result = T(ret.dblVal)
-      elif T is char:         result = char(ret.bVal)
-      elif T is bool:         result = if ret.boolVal != 0: true else: false
+proc `$`*(x: variant): string {.inline.} =
+  fromVariant[string](x)
+
+converter variantConverterToString*(x: variant): string =
+  fromVariant[string](x)
+
+converter variantConverterToCString*(x: variant): cstring =
+  fromVariant[cstring](x)
+
+converter variantConverterToMString*(x: variant): mstring =
+  fromVariant[mstring](x)
+
+converter variantConverterToWString*(x: variant): wstring =
+  fromVariant[wstring](x)
+
+converter variantConverterToChar*(x: variant): char =
+  fromVariant[char](x)
+
+converter variantConverterToBool*(x: variant): bool =
+  fromVariant[bool](x)
+
+converter variantConverterToCom*(x: variant): com =
+  fromVariant[com](x)
+
+converter variantConverterToIDispatch*(x: variant): ptr IDispatch =
+  fromVariant[ptr IDispatch](x)
+
+converter variantConverterToIUnknown*(x: variant): ptr IUnknown =
+  fromVariant[ptr IUnknown](x)
+
+converter variantConverterToPointer*(x: variant): pointer =
+  fromVariant[pointer](x)
+
+converter variantConverterToInt*(x: variant): int =
+  fromVariant[int](x)
+
+converter variantConverterToUInt*(x: variant): uint =
+  fromVariant[uint](x)
 
-proc `$`*(x: variant): string {.inline.} = fromVariant[string](x)
-converter variantConverterToString*(x: variant): string = fromVariant[string](x)
-converter variantConverterToCString*(x: variant): cstring = fromVariant[cstring](x)
-converter variantConverterToMString*(x: variant): mstring = fromVariant[mstring](x)
-converter variantConverterToWString*(x: variant): wstring = fromVariant[wstring](x)
-converter variantConverterToChar*(x: variant): char = fromVariant[char](x)
-converter variantConverterToBool*(x: variant): bool = fromVariant[bool](x)
-converter variantConverterToCom*(x: variant): com = fromVariant[com](x)
-converter variantConverterToIDispatch*(x: variant): ptr IDispatch = fromVariant[ptr IDispatch](x)
-converter variantConverterToIUnknown*(x: variant): ptr IUnknown = fromVariant[ptr IUnknown](x)
-converter variantConverterToPointer*(x: variant): pointer = fromVariant[pointer](x)
-converter variantConverterToInt*(x: variant): int = fromVariant[int](x)
-converter variantConverterToUInt*(x: variant): uint = fromVariant[uint](x)
-converter variantConverterToInt8*(x: variant): int8 = fromVariant[int8](x)
-converter variantConverterToUInt8*(x: variant): uint8 = fromVariant[uint8](x)
-converter variantConverterToInt16*(x: variant): int16 = fromVariant[int16](x)
-converter variantConverterToUInt16*(x: variant): uint16 = fromVariant[uint16](x)
-converter variantConverterToInt32*(x: variant): int32 = fromVariant[int32](x)
-converter variantConverterToUInt32*(x: variant): uint32 = fromVariant[uint32](x)
-converter variantConverterToInt64*(x: variant): int64 = fromVariant[int64](x)
-converter variantConverterToUInt64*(x: variant): uint64 = fromVariant[uint64](x)
-converter variantConverterToFloat32*(x: variant): float32 = fromVariant[float32](x)
-converter variantConverterToFloat64*(x: variant): float64 = fromVariant[float64](x)
-converter variantConverterToFILETIME*(x: variant): FILETIME = fromVariant[FILETIME](x)
-converter variantConverterToSYSTEMTIME*(x: variant): SYSTEMTIME = fromVariant[SYSTEMTIME](x)
-converter variantConverterToVARIANT*(x: variant): VARIANT = fromVariant[VARIANT](x)
-converter variantConverterToCOMArray1D*(x: variant): COMArray1D = fromVariant[COMArray1D](x)
-converter variantConverterToCOMArray2D*(x: variant): COMArray2D = fromVariant[COMArray2D](x)
-converter variantConverterToCOMArray3D*(x: variant): COMArray3D = fromVariant[COMArray3D](x)
-converter variantConverterToCOMBinary*(x: variant): COMBinary = fromVariant[COMBinary](x)
+converter variantConverterToInt8*(x: variant): int8 =
+  fromVariant[int8](x)
+
+converter variantConverterToUInt8*(x: variant): uint8 =
+  fromVariant[uint8](x)
+
+converter variantConverterToInt16*(x: variant): int16 =
+  fromVariant[int16](x)
+
+converter variantConverterToUInt16*(x: variant): uint16 =
+  fromVariant[uint16](x)
+
+converter variantConverterToInt32*(x: variant): int32 =
+  fromVariant[int32](x)
+
+converter variantConverterToUInt32*(x: variant): uint32 =
+  fromVariant[uint32](x)
+
+converter variantConverterToInt64*(x: variant): int64 =
+  fromVariant[int64](x)
+
+converter variantConverterToUInt64*(x: variant): uint64 =
+  fromVariant[uint64](x)
+
+converter variantConverterToFloat32*(x: variant): float32 =
+  fromVariant[float32](x)
+
+converter variantConverterToFloat64*(x: variant): float64 =
+  fromVariant[float64](x)
+
+converter variantConverterToFILETIME*(x: variant): FILETIME =
+  fromVariant[FILETIME](x)
+
+converter variantConverterToSYSTEMTIME*(x: variant): SYSTEMTIME =
+  fromVariant[SYSTEMTIME](x)
+
+converter variantConverterToVARIANT*(x: variant): VARIANT =
+  fromVariant[VARIANT](x)
+
+converter variantConverterToCOMArray1D*(x: variant): COMArray1D =
+  fromVariant[COMArray1D](x)
+
+converter variantConverterToCOMArray2D*(x: variant): COMArray2D =
+  fromVariant[COMArray2D](x)
+
+converter variantConverterToCOMArray3D*(x: variant): COMArray3D =
+  fromVariant[COMArray3D](x)
+
+converter variantConverterToCOMBinary*(x: variant): COMBinary =
+  fromVariant[COMBinary](x)
 
 proc getEnumeration(self: com, name: string): variant =
   var
@@ -849,22 +1023,31 @@
     kind: TYPEKIND
     bname: BSTR
 
-  if self.disp.GetTypeInfo(0, 0, &tinfo).ERR: return
-  defer: tinfo.Release()
+  if self.disp.GetTypeInfo(0, 0, &tinfo).ERR:
+    return
+  defer:
+    tinfo.Release()
 
-  if tinfo.GetContainingTypeLib(&tlib, &index).ERR: return
-  defer: tlib.Release()
+  if tinfo.GetContainingTypeLib(&tlib, &index).ERR:
+    return
+  defer:
+    tlib.Release()
 
-  for i in 0..<tlib.GetTypeInfoCount():
-    if tlib.GetTypeInfoType(UINT i, &kind).ERR: continue
-    if kind != TKIND_ENUM: continue
-    if tlib.GetDocumentation(UINT i, &bname, nil, nil, nil).ERR: continue
-    defer: SysFreeString(bname)
+  for i in 0 ..< tlib.GetTypeInfoCount():
+    if tlib.GetTypeInfoType(UINT i, &kind).ERR:
+      continue
+    if kind != TKIND_ENUM:
+      continue
+    if tlib.GetDocumentation(UINT i, &bname, nil, nil, nil).ERR:
+      continue
+    defer:
+      SysFreeString(bname)
 
     if name.cmpIgnoreCase($bname) == 0:
       var tinfoEnum: ptr ITypeInfo
       if tlib.GetTypeInfo(UINT i, &tinfoEnum).OK:
-        defer: tinfoEnum.Release()
+        defer:
+          tinfoEnum.Release()
 
         # save ITypeInfo into variant as IUnknown
         return toVariant((ptr IUnknown)(tinfoEnum))
@@ -875,7 +1058,9 @@
   else:
     return nil
 
-iterator items(tinfo: ptr ITypeInfo, keyOnly=true): tuple[key: string, value: variant] =
+iterator items(
+    tinfo: ptr ITypeInfo, keyOnly = true
+): tuple[key: string, value: variant] =
   var
     attr: ptr TYPEATTR
     desc: ptr VARDESC
@@ -883,22 +1068,25 @@
     nameCount: UINT
 
   if tinfo.GetTypeAttr(&attr).OK:
-    defer: tinfo.ReleaseTypeAttr(attr)
+    defer:
+      tinfo.ReleaseTypeAttr(attr)
 
-    for i in 0..<int attr.cVars:
+    for i in 0 ..< int attr.cVars:
       if tinfo.GetVarDesc(UINT i, &desc).OK:
-        defer: tinfo.ReleaseVarDesc(desc)
+        defer:
+          tinfo.ReleaseVarDesc(desc)
 
         if desc.varkind == VAR_CONST:
           if tinfo.GetNames(desc.memid, &name, 1, &nameCount).OK:
-            defer: SysFreeString(name)
+            defer:
+              SysFreeString(name)
             if keyOnly:
               yield ($name, nil)
             else:
               yield ($name, toVariant(desc[].lpvarValue[]))
 
 proc getValue(tinfo: ptr ITypeInfo, name: string): variant =
-  for tup in tinfo.items(keyOnly=false):
+  for tup in tinfo.items(keyOnly = false):
     if tup.key == name:
       return tup.value
 
@@ -917,24 +1105,31 @@
   if self.disp.GetIDsOfNames(&IID_NULL, &pwstr, 1, LOCALE_USER_DEFAULT, &dispid).ERR:
     raise newCOMError("unsupported method: " & name)
 
-  if self.disp.GetTypeInfo(0, 0, &tinfo).ERR: raise newCOMError("named arguments not allowed")
-  defer: tinfo.Release()
+  if self.disp.GetTypeInfo(0, 0, &tinfo).ERR:
+    raise newCOMError("named arguments not allowed")
+  defer:
+    tinfo.Release()
 
-  if tinfo.GetNames(dispid, &names[0], 128, &count).ERR: raise newCOMError("named arguments not allowed")
+  if tinfo.GetNames(dispid, &names[0], 128, &count).ERR:
+    raise newCOMError("named arguments not allowed")
   defer:
-    for i in 0..<count:
+    for i in 0 ..< count:
       SysFreeString(names[i])
 
   result = $names[0] & "("
-  for i in 1..<count:
+  for i in 1 ..< count:
     result.add $names[i]
     result.add ", "
   result.removeSuffix ", "
   result.add ")"
 
-proc invoke(self: com, name: string, invokeType: WORD, vargs: varargs[variant, toVariant],
-    kwargs: openarray[(string, variant)] = []): variant =
-
+proc invoke(
+    self: com,
+    name: string,
+    invokeType: WORD,
+    vargs: varargs[variant, toVariant],
+    kwargs: openarray[(string, variant)] = [],
+): variant =
   var
     isSet = (invokeType and (DISPATCH_PROPERTYPUT or DISPATCH_PROPERTYPUTREF)) != 0
     dispid: DISPID
@@ -945,7 +1140,8 @@
   if self.disp.GetIDsOfNames(&IID_NULL, &pwstr, 1, LOCALE_USER_DEFAULT, &dispid).ERR:
     # if the method name is not recognized, maybe it is an enum name
     result = getEnumeration(self, name)
-    if not result.isNil: return
+    if not result.isNil:
+      return
 
     raise newCOMError("unsupported method: " & name)
 
@@ -955,12 +1151,15 @@
       count: UINT
       names: array[128, BSTR]
 
-    if self.disp.GetTypeInfo(0, 0, &tinfo).ERR: raise newCOMError("named arguments not allowed")
-    defer: tinfo.Release()
+    if self.disp.GetTypeInfo(0, 0, &tinfo).ERR:
+      raise newCOMError("named arguments not allowed")
+    defer:
+      tinfo.Release()
 
-    if tinfo.GetNames(dispid, &names[0], 128, &count).ERR: raise newCOMError("named arguments not allowed")
+    if tinfo.GetNames(dispid, &names[0], 128, &count).ERR:
+      raise newCOMError("named arguments not allowed")
     defer:
-      for i in 0..<count:
+      for i in 0 ..< count:
         SysFreeString(names[i])
 
     # names[0] is method name, names[1] is first argument's name, ...
@@ -968,7 +1167,7 @@
 
     for _, tup in kwargs:
       var found = false
-      for i in 1..<count:
+      for i in 1 ..< count:
         if tup[0].cmpIgnoreCase($names[i]) == 0:
           args[args.high - (i - 1)] = tup[1].raw # reverse order
           found = true
@@ -982,7 +1181,8 @@
 
   var index = 0
   for i in countdown(args.high, 0): # reverse order
-    if index >= vargs.len: break
+    if index >= vargs.len:
+      break
     if args[i].vt == VT_EMPTY:
       args[i] = vargs[index].raw
       index.inc
@@ -995,9 +1195,11 @@
     skipArgs = 0
 
   if args.len != 0:
-    for i in 0..args.high:
-      if args[i].vt == VT_EMPTY: skipArgs.inc
-      else: break
+    for i in 0 .. args.high:
+      if args[i].vt == VT_EMPTY:
+        skipArgs.inc
+      else:
+        break
 
     dp.rgvarg = &args[skipArgs]
     dp.cArgs = DWORD(args.len - skipArgs)
@@ -1006,14 +1208,17 @@
       dp.rgdispidNamedArgs = &dispidNamed
       dp.cNamedArgs = 1
 
-  if self.disp.Invoke(dispid, &IID_NULL, LOCALE_USER_DEFAULT, invokeType, &dp, &ret, &excep, nil).ERR:
+  if self.disp.Invoke(
+    dispid, &IID_NULL, LOCALE_USER_DEFAULT, invokeType, &dp, &ret, &excep, nil
+  ).ERR:
     {.gcsafe.}:
       if cast[pointer](excep.pfnDeferredFillIn).notNil:
         discard excep.pfnDeferredFillIn(&excep)
 
     if excep.bstrSource.notNil:
       var err = $toVariant(excep.bstrSource)
-      if excep.bstrDescription.notNil: err &= ": " & $toVariant(excep.bstrDescription)
+      if excep.bstrDescription.notNil:
+        err &= ": " & $toVariant(excep.bstrDescription)
       SysFreeString(excep.bstrSource)
       SysFreeString(excep.bstrDescription)
       SysFreeString(excep.bstrHelpFile)
@@ -1024,40 +1229,66 @@
   result = newVariant(ret)
   discard VariantClear(&ret)
 
-proc call*(self: com, name: string, vargs: varargs[variant, toVariant],
-    kwargs: openarray[(string, variant)] = []): variant {.discardable, inline.} =
-  result = invoke(self, name, DISPATCH_METHOD, vargs, kwargs=kwargs)
+proc call*(
+    self: com,
+    name: string,
+    vargs: varargs[variant, toVariant],
+    kwargs: openarray[(string, variant)] = [],
+): variant {.discardable, inline.} =
+  result = invoke(self, name, DISPATCH_METHOD, vargs, kwargs = kwargs)
 
-proc call*(self: com, name: string, vargs: varargs[variant, toVariant]): variant {.discardable, inline.} =
-  result = invoke(self, name, DISPATCH_METHOD, vargs, kwargs=[])
+proc call*(
+    self: com, name: string, vargs: varargs[variant, toVariant]
+): variant {.discardable, inline.} =
+  result = invoke(self, name, DISPATCH_METHOD, vargs, kwargs = [])
 
-proc set*(self: com, name: string, vargs: varargs[variant, toVariant],
-    kwargs: openarray[(string, variant)]): variant {.discardable, inline.} =
-  result = invoke(self, name, DISPATCH_PROPERTYPUT, vargs, kwargs=kwargs)
+proc set*(
+    self: com,
+    name: string,
+    vargs: varargs[variant, toVariant],
+    kwargs: openarray[(string, variant)],
+): variant {.discardable, inline.} =
+  result = invoke(self, name, DISPATCH_PROPERTYPUT, vargs, kwargs = kwargs)
 
-proc set*(self: com, name: string, vargs: varargs[variant, toVariant]): variant {.discardable, inline.} =
-  result = invoke(self, name, DISPATCH_PROPERTYPUT, vargs, kwargs=[])
+proc set*(
+    self: com, name: string, vargs: varargs[variant, toVariant]
+): variant {.discardable, inline.} =
+  result = invoke(self, name, DISPATCH_PROPERTYPUT, vargs, kwargs = [])
 
-proc setRef*(self: com, name: string, vargs: varargs[variant, toVariant],
-    kwargs: openarray[(string, variant)]): variant {.discardable, inline.} =
-  result = invoke(self, name, DISPATCH_PROPERTYPUTREF, vargs, kwargs=kwargs)
+proc setRef*(
+    self: com,
+    name: string,
+    vargs: varargs[variant, toVariant],
+    kwargs: openarray[(string, variant)],
+): variant {.discardable, inline.} =
+  result = invoke(self, name, DISPATCH_PROPERTYPUTREF, vargs, kwargs = kwargs)
 
-proc setRef*(self: com, name: string, vargs: varargs[variant, toVariant]): variant {.discardable, inline.} =
-  result = invoke(self, name, DISPATCH_PROPERTYPUTREF, vargs, kwargs=[])
+proc setRef*(
+    self: com, name: string, vargs: varargs[variant, toVariant]
+): variant {.discardable, inline.} =
+  result = invoke(self, name, DISPATCH_PROPERTYPUTREF, vargs, kwargs = [])
 
-proc get*(self: com, name: string, vargs: varargs[variant, toVariant],
-    kwargs: openarray[(string, variant)]): variant {.discardable, inline.} =
-  result = invoke(self, name, DISPATCH_METHOD or DISPATCH_PROPERTYGET, vargs, kwargs=kwargs)
+proc get*(
+    self: com,
+    name: string,
+    vargs: varargs[variant, toVariant],
+    kwargs: openarray[(string, variant)],
+): variant {.discardable, inline.} =
+  result =
+    invoke(self, name, DISPATCH_METHOD or DISPATCH_PROPERTYGET, vargs, kwargs = kwargs)
 
-proc get*(self: com, name: string, vargs: varargs[variant, toVariant]): variant {.discardable, inline.} =
-  result = invoke(self, name, DISPATCH_METHOD or DISPATCH_PROPERTYGET, vargs, kwargs=[])
+proc get*(
+    self: com, name: string, vargs: varargs[variant, toVariant]
+): variant {.discardable, inline.} =
+  result =
+    invoke(self, name, DISPATCH_METHOD or DISPATCH_PROPERTYGET, vargs, kwargs = [])
 
 proc `[]`*(self: variant, name: string): variant =
   var tinfo = self.getVariantTypeInfo()
   if tinfo.notNil:
-    defer: tinfo.Release()
+    defer:
+      tinfo.Release()
     return tinfo.getValue(name)
-
   else:
     return invoke(self, name, DISPATCH_METHOD or DISPATCH_PROPERTYGET)
 
@@ -1076,7 +1307,16 @@
     dp: DISPPARAMS
     enumvar: ptr IEnumVARIANT
 
-  if x.disp.Invoke(DISPID_NEWENUM, &IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD or DISPATCH_PROPERTYGET, &dp, &ret, nil, nil).ERR:
+  if x.disp.Invoke(
+    DISPID_NEWENUM,
+    &IID_NULL,
+    LOCALE_USER_DEFAULT,
+    DISPATCH_METHOD or DISPATCH_PROPERTYGET,
+    &dp,
+    &ret,
+    nil,
+    nil,
+  ).ERR:
     raise newCOMError("object is not iterable")
 
   if ret.punkVal.QueryInterface(&IID_IEnumVARIANT, &enumvar).ERR:
@@ -1093,10 +1333,10 @@
   if not x.isNil:
     var tinfo = x.getVariantTypeInfo()
     if tinfo.notNil:
-      defer: tinfo.Release()
-      for tup in tinfo.items(keyOnly=true):
+      defer:
+        tinfo.Release()
+      for tup in tinfo.items(keyOnly = true):
         yield toVariant(tup.key)
-
     else:
       var obj = x.com
       for v in obj:
@@ -1118,12 +1358,14 @@
 
 macro `.`*(self: com, name: untyped, vargs: varargs[untyped]): untyped =
   result = newCall("get", self, newStrLitNode($name))
-  for i in vargs: result.add i
+  for i in vargs:
+    result.add i
   result.standardizeKwargs()
 
 macro `.=`*(self: com, name: untyped, vargs: varargs[untyped]): untyped =
   result = newCall("set", self, newStrLitNode($name))
-  for i in vargs: result.add i
+  for i in vargs:
+    result.add i
   result.standardizeKwargs()
 
 proc GetCLSID(progId: string, clsid: var GUID): HRESULT =
@@ -1144,10 +1386,14 @@
     # better than CoCreateInstance:
     # some IClassFactory.CreateInstance return SUCCEEDED with nil pointer, this crash CoCreateInstance
     # for example: {D5F7E36B-5B38-445D-A50F-439B8FCBB87A}
-    if CoGetClassObject(&clsid, CLSCTX_LOCAL_SERVER or CLSCTX_INPROC_SERVER, nil, &IID_IClassFactory, &pCf).OK:
-      defer: pCf.Release()
+    if CoGetClassObject(
+      &clsid, CLSCTX_LOCAL_SERVER or CLSCTX_INPROC_SERVER, nil, &IID_IClassFactory, &pCf
+    ).OK:
+      defer:
+        pCf.Release()
 
-      if pCf.CreateInstance(nil, &IID_IDispatch, &(result.disp)).OK and result.disp.notNil:
+      if pCf.CreateInstance(nil, &IID_IDispatch, &(result.disp)).OK and
+          result.disp.notNil:
         return result
 
   raise newCOMError("unable to create object from " & progId)
@@ -1164,18 +1410,26 @@
   if progId.len != 0:
     if GetCLSID(progId, clsid).OK:
       if file.len != 0:
-        if CoCreateInstance(&clsid, nil, CLSCTX_LOCAL_SERVER or CLSCTX_INPROC_SERVER, &IID_IPersistFile, &pPf).OK:
-          defer: pPf.Release()
+        if CoCreateInstance(
+          &clsid,
+          nil,
+          CLSCTX_LOCAL_SERVER or CLSCTX_INPROC_SERVER,
+          &IID_IPersistFile,
+          &pPf,
+        ).OK:
+          defer:
+            pPf.Release()
 
-          if pPf.Load(file, 0).OK and pPf.QueryInterface(&IID_IDispatch, &(result.disp)).OK:
+          if pPf.Load(file, 0).OK and
+              pPf.QueryInterface(&IID_IDispatch, &(result.disp)).OK:
             return result
       else:
         if GetActiveObject(&clsid, nil, &pUk).OK:
-          defer: pUk.Release()
+          defer:
+            pUk.Release()
 
           if pUk.QueryInterface(&IID_IDispatch, &(result.disp)).OK:
             return result
-
   elif file.len != 0:
     if CoGetObject(file, nil, &IID_IDispatch, &(result.disp)).OK:
       return result
@@ -1197,11 +1451,15 @@
     refCount: ULONG
     handler: comEventHandler
     parent: com
+
   Sink {.pure.} = ptr SinkObj
 
-proc Sink_QueryInterface(self: ptr IUnknown, riid: ptr IID, pvObject: ptr pointer): HRESULT {.stdcall.} =
+proc Sink_QueryInterface(
+    self: ptr IUnknown, riid: ptr IID, pvObject: ptr pointer
+): HRESULT {.stdcall.} =
   var this = cast[Sink](self)
-  if IsEqualGUID(riid, &IID_IUnknown) or IsEqualGUID(riid, &IID_IDispatch) or IsEqualGUID(riid, &this.iid):
+  if IsEqualGUID(riid, &IID_IUnknown) or IsEqualGUID(riid, &IID_IDispatch) or
+      IsEqualGUID(riid, &this.iid):
     pvObject[] = self
     self.AddRef()
     result = S_OK
@@ -1224,21 +1482,42 @@
   else:
     result = this.refCount
 
-proc Sink_GetTypeInfoCount(self: ptr IDispatch, pctinfo: ptr UINT): HRESULT {.stdcall.} =
+proc Sink_GetTypeInfoCount(
+    self: ptr IDispatch, pctinfo: ptr UINT
+): HRESULT {.stdcall.} =
   pctinfo[] = 1
   result = S_OK
 
-proc Sink_GetTypeInfo(self: ptr IDispatch, iTInfo: UINT, lcid: LCID, ppTInfo: ptr LPTYPEINFO): HRESULT {.stdcall.} =
+proc Sink_GetTypeInfo(
+    self: ptr IDispatch, iTInfo: UINT, lcid: LCID, ppTInfo: ptr LPTYPEINFO
+): HRESULT {.stdcall.} =
   var this = cast[Sink](self)
   ppTInfo[] = this.typeInfo
   this.typeInfo.AddRef()
   result = S_OK
 
-proc Sink_GetIDsOfNames(self: ptr IDispatch, riid: REFIID, rgszNames: ptr LPOLESTR, cNames: UINT, lcid: LCID, rgDispId: ptr DISPID): HRESULT {.stdcall.} =
+proc Sink_GetIDsOfNames(
+    self: ptr IDispatch,
+    riid: REFIID,
+    rgszNames: ptr LPOLESTR,
+    cNames: UINT,
+    lcid: LCID,
+    rgDispId: ptr DISPID,
+): HRESULT {.stdcall.} =
   var this = cast[Sink](self)
   result = DispGetIDsOfNames(this.typeInfo, rgszNames, cNames, rgDispId)
 
-proc Sink_Invoke(self: ptr IDispatch, dispid: DISPID, riid: REFIID, lcid: LCID, wFlags: WORD, params: ptr DISPPARAMS, ret: ptr VARIANT, pExcepInfo: ptr EXCEPINFO, puArgErr: ptr UINT): HRESULT {.stdcall, thread.} =
+proc Sink_Invoke(
+    self: ptr IDispatch,
+    dispid: DISPID,
+    riid: REFIID,
+    lcid: LCID,
+    wFlags: WORD,
+    params: ptr DISPPARAMS,
+    ret: ptr VARIANT,
+    pExcepInfo: ptr EXCEPINFO,
+    puArgErr: ptr UINT,
+): HRESULT {.stdcall, thread.} =
   var this = cast[Sink](self)
   var
     bname: BSTR
@@ -1255,34 +1534,34 @@
     name = $bname
     SysFreeString(bname)
 
-    for i in 1..total:
-      sargs.add(newVariant(args[total-i]))
+    for i in 1 .. total:
+      sargs.add(newVariant(args[total - i]))
 
     try:
-      {.gcsafe.}: vret = this.handler(this.parent, name, sargs)
-
+      {.gcsafe.}:
+        vret = this.handler(this.parent, name, sargs)
     except CatchableError:
       let e = getCurrentException()
       echo "uncatched exception inside event hander: " & $e.name & " (" & $e.msg & ")"
-
     finally:
       if vret.notNil and ret.notNil:
         result = VariantCopy(ret, &vret.raw)
       else:
         result = S_OK
 
-let
-  SinkVtbl: IDispatchVtbl = IDispatchVtbl(
-    QueryInterface: Sink_QueryInterface,
-    AddRef: Sink_AddRef,
-    Release: Sink_Release,
-    GetTypeInfoCount: Sink_GetTypeInfoCount,
-    GetTypeInfo: Sink_GetTypeInfo,
-    GetIDsOfNames: Sink_GetIDsOfNames,
-    Invoke: Sink_Invoke
-  )
+let SinkVtbl: IDispatchVtbl = IDispatchVtbl(
+  QueryInterface: Sink_QueryInterface,
+  AddRef: Sink_AddRef,
+  Release: Sink_Release,
+  GetTypeInfoCount: Sink_GetTypeInfoCount,
+  GetTypeInfo: Sink_GetTypeInfo,
+  GetIDsOfNames: Sink_GetIDsOfNames,
+  Invoke: Sink_Invoke,
+)
 
-proc newSink(parent: com, iid: GUID, typeInfo: ptr ITypeInfo, handler: comEventHandler): Sink =
+proc newSink(
+    parent: com, iid: GUID, typeInfo: ptr ITypeInfo, handler: comEventHandler
+): Sink =
   result = cast[Sink.type](alloc0(sizeof(SinkObj)))
   result.lpVtbl = SinkVtbl.unsafeaddr
   result.parent = parent
@@ -1291,7 +1570,9 @@
   typeInfo.AddRef()
   result.handler = handler
 
-proc connectRaw(self: com, riid: REFIID = nil, cookie: DWORD, handler: comEventHandler = nil): DWORD =
+proc connectRaw(
+    self: com, riid: REFIID = nil, cookie: DWORD, handler: comEventHandler = nil
+): DWORD =
   var
     iid: IID
     count, index: UINT
@@ -1303,45 +1584,61 @@
     sink: Sink
 
   defer:
-    if typeInfo.notNil: typeInfo.Release()
-    if dispTypeInfo.notNil: dispTypeInfo.Release()
-    if connection.notNil: connection.Release()
-    if typeLib.notNil: typeLib.Release()
-    if container.notNil: container.Release()
-    if enu.notNil: enu.Release()
+    if typeInfo.notNil:
+      typeInfo.Release()
+    if dispTypeInfo.notNil:
+      dispTypeInfo.Release()
+    if connection.notNil:
+      connection.Release()
+    if typeLib.notNil:
+      typeLib.Release()
+    if container.notNil:
+      container.Release()
+    if enu.notNil:
+      enu.Release()
 
   block okay:
-    if self.disp.GetTypeInfoCount(&count).ERR or count != 1: break okay
-    if self.disp.GetTypeInfo(0, 0, &dispTypeInfo).ERR: break okay
-    if dispTypeInfo.GetContainingTypeLib(&typeLib, &index).ERR: break okay
-    if self.disp.QueryInterface(&IID_IConnectionPointContainer, &container).ERR: break okay
+    if self.disp.GetTypeInfoCount(&count).ERR or count != 1:
+      break okay
+    if self.disp.GetTypeInfo(0, 0, &dispTypeInfo).ERR:
+      break okay
+    if dispTypeInfo.GetContainingTypeLib(&typeLib, &index).ERR:
+      break okay
+    if self.disp.QueryInterface(&IID_IConnectionPointContainer, &container).ERR:
+      break okay
 
     if riid.isNil:
-      if container.EnumConnectionPoints(&enu).ERR: break okay
+      if container.EnumConnectionPoints(&enu).ERR:
+        break okay
       enu.Reset()
       while enu.Next(1, &connection, nil) != S_FALSE:
         if connection.GetConnectionInterface(&iid).OK and
-          typeLib.GetTypeInfoOfGuid(&iid, &typeInfo).OK:
-            break
+            typeLib.GetTypeInfoOfGuid(&iid, &typeInfo).OK:
+          break
 
         connection.Release()
         connection = nil
-
     else:
-      if container.FindConnectionPoint(riid, &connection).ERR: break okay
-      if connection.GetConnectionInterface(&iid).ERR: break okay
-      if typeLib.GetTypeInfoOfGuid(riid, &typeInfo).ERR: break okay
+      if container.FindConnectionPoint(riid, &connection).ERR:
+        break okay
+      if connection.GetConnectionInterface(&iid).ERR:
+        break okay
+      if typeLib.GetTypeInfoOfGuid(riid, &typeInfo).ERR:
+        break okay
 
     if handler.notNil:
       sink = newSink(self, iid, typeInfo, handler)
-      if connection.Advise(cast[ptr IUnknown](sink), &result).OK: return result
-
+      if connection.Advise(cast[ptr IUnknown](sink), &result).OK:
+        return result
     elif cookie != 0:
-      if connection.Unadvise(cookie).OK: return 1
+      if connection.Unadvise(cookie).OK:
+        return 1
 
   raise newCOMError("unable to connect/disconnect event")
 
-proc connect*(self: com, handler: comEventHandler, riid: REFIID = nil): DWORD {.discardable.} =
+proc connect*(
+    self: com, handler: comEventHandler, riid: REFIID = nil
+): DWORD {.discardable.} =
   ## Connect a COM object to a comEventHandler. Return a cookie to disconnect (if needed).
   ## Handler is a user defined proc to receive the COM event.
   ## comEventHandler is defined as:
@@ -1369,7 +1666,7 @@
 
   params.insert(1, dots.last.toStrLit)
   params.add(n.last)
-  dots.del(dots.len-1)
+  dots.del(dots.len - 1)
   dots.add(newIdentNode("set"))
   result = n[0]
 
@@ -1381,12 +1678,13 @@
   result = newNimNode(nnkCall)
   var table = newNimNode(nnkTableConstr)
 
-  for i in 0..<n.len:
+  for i in 0 ..< n.len:
     if n[i].kind == nnkInfix and n[i][0].eqIdent(":="):
-      table.add newTree(nnkExprColonExpr,
-          newStrLitNode($n[i][1]),
-          newCall(ident("toVariant"), (n[i][2])))
-
+      table.add newTree(
+        nnkExprColonExpr,
+        newStrLitNode($n[i][1]),
+        newCall(ident("toVariant"), (n[i][2])),
+      )
     else:
       result.add n[i]
 
@@ -1404,13 +1702,11 @@
   if n.kind == nnkAsgn and n[0].kind == nnkCall and n[0][0].kind == nnkDotExpr:
     # deal with a.b(c) = d
     result = comReformat(reformatAsgn(n))
-
   elif n.kind == nnkCall and n.hasInfixChildren(":="):
     # deal with a(b:=c)
     result = comReformat(reformatCall(n))
-
   elif n.len != 0:
-    for i in 0..<n.len:
+    for i in 0 ..< n.len:
       n[i] = comReformat(n[i])
 
 macro comScript*(x: untyped): untyped =
@@ -1429,12 +1725,11 @@
   result = comReformat(x)
 
 when isMainModule:
-
   comScript:
     var dict = CreateObject("Scripting.Dictionary")
     dict.add("a", "the")
-    dict.add("b", item:="quick")
-    dict.add(item:="fox", key:="c")
-    dict.item(key:="c") = "dog"
+    dict.add("b", item := "quick")
+    dict.add(item := "fox", key := "c")
+    dict.item(key := "c") = "dog"
     for key in dict:
       echo key, " => ", dict.item(key)
--- a/semicongine/thirdparty/winim/winim/core.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/core.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -7,8 +7,12 @@
 #
 #====================================================================
 
-import inc/[windef, winerror, winbase, wingdi, winuser, wincon, winnls,
-  winver, winreg, winnetwk, winsvc, virtdisk, winsock, wincrypt]
+import
+  inc/[
+    windef, winerror, winbase, wingdi, winuser, wincon, winnls, winver, winreg,
+    winnetwk, winsvc, virtdisk, winsock, wincrypt,
+  ]
 
-export windef, winerror, winbase, wingdi, winuser, wincon, winnls,
-  winver, winreg, winnetwk, winsvc, virtdisk, winsock, wincrypt
+export
+  windef, winerror, winbase, wingdi, winuser, wincon, winnls, winver, winreg, winnetwk,
+  winsvc, virtdisk, winsock, wincrypt
--- a/semicongine/thirdparty/winim/winim/extra.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/extra.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -7,10 +7,14 @@
 #
 #====================================================================
 
-import inc/[psapi, tlhelp32, wintrust, imagehlp, odbc, dde, lzexpand, nb30,
-  winperf, mmsystem, winefs, winioctl, winscard, winspool, mcx, powrprof, vfw,
-  usp10, subauth, snmp, aclapi, dhcpcsdk, wincodec, gdiplus]
+import
+  inc/[
+    psapi, tlhelp32, wintrust, imagehlp, odbc, dde, lzexpand, nb30, winperf, mmsystem,
+    winefs, winioctl, winscard, winspool, mcx, powrprof, vfw, usp10, subauth, snmp,
+    aclapi, dhcpcsdk, wincodec, gdiplus,
+  ]
 
-export psapi, tlhelp32, wintrust, imagehlp, odbc, dde, lzexpand, nb30,
-  winperf, mmsystem, winefs, winioctl, winscard, winspool, mcx, powrprof, vfw,
-  usp10, subauth, snmp, aclapi, dhcpcsdk, wincodec, gdiplus
+export
+  psapi, tlhelp32, wintrust, imagehlp, odbc, dde, lzexpand, nb30, winperf, mmsystem,
+  winefs, winioctl, winscard, winspool, mcx, powrprof, vfw, usp10, subauth, snmp,
+  aclapi, dhcpcsdk, wincodec, gdiplus
--- a/semicongine/thirdparty/winim/winim/inc/aclapi.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/aclapi.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -50,6 +50,7 @@
     ObjectTypeGuid*: GUID
     InheritedObjectTypeGuid*: GUID
     pSid*: ptr SID
+
   POBJECTS_AND_SID* = ptr OBJECTS_AND_SID
   OBJECTS_AND_NAME_A* {.pure.} = object
     ObjectsPresent*: DWORD
@@ -57,6 +58,7 @@
     ObjectTypeName*: LPSTR
     InheritedObjectTypeName*: LPSTR
     ptstrName*: LPSTR
+
   POBJECTS_AND_NAME_A* = ptr OBJECTS_AND_NAME_A
   OBJECTS_AND_NAME_W* {.pure.} = object
     ObjectsPresent*: DWORD
@@ -64,6 +66,7 @@
     ObjectTypeName*: LPWSTR
     InheritedObjectTypeName*: LPWSTR
     ptstrName*: LPWSTR
+
   POBJECTS_AND_NAME_W* = ptr OBJECTS_AND_NAME_W
   TRUSTEE_A* {.pure.} = object
     pMultipleTrustee*: ptr TRUSTEE_A
@@ -71,6 +74,7 @@
     TrusteeForm*: TRUSTEE_FORM
     TrusteeType*: TRUSTEE_TYPE
     ptstrName*: LPSTR
+
   PTRUSTEE_A* = ptr TRUSTEE_A
   TRUSTEE_W* {.pure.} = object
     pMultipleTrustee*: ptr TRUSTEE_W
@@ -78,18 +82,21 @@
     TrusteeForm*: TRUSTEE_FORM
     TrusteeType*: TRUSTEE_TYPE
     ptstrName*: LPWSTR
+
   PTRUSTEE_W* = ptr TRUSTEE_W
   EXPLICIT_ACCESS_A* {.pure.} = object
     grfAccessPermissions*: DWORD
     grfAccessMode*: ACCESS_MODE
     grfInheritance*: DWORD
     Trustee*: TRUSTEE_A
+
   PEXPLICIT_ACCESS_A* = ptr EXPLICIT_ACCESS_A
   EXPLICIT_ACCESS_W* {.pure.} = object
     grfAccessPermissions*: DWORD
     grfAccessMode*: ACCESS_MODE
     grfInheritance*: DWORD
     Trustee*: TRUSTEE_W
+
   PEXPLICIT_ACCESS_W* = ptr EXPLICIT_ACCESS_W
   ACTRL_ACCESS_ENTRYA* {.pure.} = object
     Trustee*: TRUSTEE_A
@@ -98,6 +105,7 @@
     ProvSpecificAccess*: ACCESS_RIGHTS
     Inheritance*: INHERIT_FLAGS
     lpInheritProperty*: LPSTR
+
   PACTRL_ACCESS_ENTRYA* = ptr ACTRL_ACCESS_ENTRYA
   ACTRL_ACCESS_ENTRYW* {.pure.} = object
     Trustee*: TRUSTEE_W
@@ -106,34 +114,41 @@
     ProvSpecificAccess*: ACCESS_RIGHTS
     Inheritance*: INHERIT_FLAGS
     lpInheritProperty*: LPWSTR
+
   PACTRL_ACCESS_ENTRYW* = ptr ACTRL_ACCESS_ENTRYW
   ACTRL_ACCESS_ENTRY_LISTA* {.pure.} = object
     cEntries*: ULONG
     pAccessList*: ptr ACTRL_ACCESS_ENTRYA
+
   PACTRL_ACCESS_ENTRY_LISTA* = ptr ACTRL_ACCESS_ENTRY_LISTA
   ACTRL_ACCESS_ENTRY_LISTW* {.pure.} = object
     cEntries*: ULONG
     pAccessList*: ptr ACTRL_ACCESS_ENTRYW
+
   PACTRL_ACCESS_ENTRY_LISTW* = ptr ACTRL_ACCESS_ENTRY_LISTW
   ACTRL_PROPERTY_ENTRYA* {.pure.} = object
     lpProperty*: LPSTR
     pAccessEntryList*: PACTRL_ACCESS_ENTRY_LISTA
     fListFlags*: ULONG
+
   PACTRL_PROPERTY_ENTRYA* = ptr ACTRL_PROPERTY_ENTRYA
   ACTRL_PROPERTY_ENTRYW* {.pure.} = object
     lpProperty*: LPWSTR
     pAccessEntryList*: PACTRL_ACCESS_ENTRY_LISTW
     fListFlags*: ULONG
+
   PACTRL_PROPERTY_ENTRYW* = ptr ACTRL_PROPERTY_ENTRYW
   ACTRL_ACCESSA* {.pure.} = object
     cEntries*: ULONG
     pPropertyAccessList*: PACTRL_PROPERTY_ENTRYA
+
   PACTRL_ACCESSA* = ptr ACTRL_ACCESSA
   ACTRL_AUDITA* = ACTRL_ACCESSA
   PACTRL_AUDITA* = ptr ACTRL_ACCESSA
   ACTRL_ACCESSW* {.pure.} = object
     cEntries*: ULONG
     pPropertyAccessList*: PACTRL_PROPERTY_ENTRYW
+
   PACTRL_ACCESSW* = ptr ACTRL_ACCESSW
   ACTRL_AUDITW* = ACTRL_ACCESSW
   PACTRL_AUDITW* = ptr ACTRL_ACCESSW
@@ -142,64 +157,78 @@
     Access*: ACCESS_RIGHTS
     fAccessFlags*: ULONG
     fReturnedAccess*: ULONG
+
   PTRUSTEE_ACCESSA* = ptr TRUSTEE_ACCESSA
   TRUSTEE_ACCESSW* {.pure.} = object
     lpProperty*: LPWSTR
     Access*: ACCESS_RIGHTS
     fAccessFlags*: ULONG
     fReturnedAccess*: ULONG
+
   PTRUSTEE_ACCESSW* = ptr TRUSTEE_ACCESSW
   ACTRL_OVERLAPPED_UNION1* {.pure, union.} = object
     Provider*: PVOID
     Reserved1*: ULONG
+
   ACTRL_OVERLAPPED* {.pure.} = object
     union1*: ACTRL_OVERLAPPED_UNION1
     Reserved2*: ULONG
     hEvent*: HANDLE
+
   PACTRL_OVERLAPPED* = ptr ACTRL_OVERLAPPED
   ACTRL_ACCESS_INFOA* {.pure.} = object
     fAccessPermission*: ULONG
     lpAccessPermissionName*: LPSTR
+
   PACTRL_ACCESS_INFOA* = ptr ACTRL_ACCESS_INFOA
   ACTRL_ACCESS_INFOW* {.pure.} = object
     fAccessPermission*: ULONG
     lpAccessPermissionName*: LPWSTR
+
   PACTRL_ACCESS_INFOW* = ptr ACTRL_ACCESS_INFOW
   ACTRL_CONTROL_INFOA* {.pure.} = object
     lpControlId*: LPSTR
     lpControlName*: LPSTR
+
   PACTRL_CONTROL_INFOA* = ptr ACTRL_CONTROL_INFOA
   ACTRL_CONTROL_INFOW* {.pure.} = object
     lpControlId*: LPWSTR
     lpControlName*: LPWSTR
+
   PACTRL_CONTROL_INFOW* = ptr ACTRL_CONTROL_INFOW
   FN_OBJECT_MGR_FUNCTS* {.pure.} = object
     Placeholder*: ULONG
+
   PFN_OBJECT_MGR_FUNCTS* = ptr FN_OBJECT_MGR_FUNCTS
   INHERITED_FROMA* {.pure.} = object
     GenerationGap*: LONG
     AncestorName*: LPSTR
+
   PINHERITED_FROMA* = ptr INHERITED_FROMA
   INHERITED_FROMW* {.pure.} = object
     GenerationGap*: LONG
     AncestorName*: LPWSTR
+
   PINHERITED_FROMW* = ptr INHERITED_FROMW
   AUDIT_OBJECT_TYPE* {.pure.} = object
     ObjectType*: GUID
     Flags*: USHORT
     Level*: USHORT
     AccessMask*: ACCESS_MASK
+
   PAUDIT_OBJECT_TYPE* = ptr AUDIT_OBJECT_TYPE
   AUDIT_OBJECT_TYPES* {.pure.} = object
     Count*: USHORT
     Flags*: USHORT
     pObjectTypes*: ptr AUDIT_OBJECT_TYPE
+
   PAUDIT_OBJECT_TYPES* = ptr AUDIT_OBJECT_TYPES
-const
-  AUTHZ_SS_MAXSIZE* = 128
+
+const AUTHZ_SS_MAXSIZE* = 128
 type
   AUDIT_IP_ADDRESS* {.pure.} = object
     pIpAddress*: array[AUTHZ_SS_MAXSIZE, BYTE]
+
   PAUDIT_IP_ADDRESS* = ptr AUDIT_IP_ADDRESS
   AUDIT_PARAM_UNION1* {.pure, union.} = object
     Data0*: ULONG_PTR
@@ -210,29 +239,35 @@
     LogonId_LowPart*: ULONG
     pObjectTypes*: ptr AUDIT_OBJECT_TYPES
     pIpAddress*: ptr AUDIT_IP_ADDRESS
+
   AUDIT_PARAM_UNION2* {.pure, union.} = object
     Data1*: ULONG_PTR
     LogonId_HighPart*: LONG
+
   AUDIT_PARAM* {.pure.} = object
     Type*: AUDIT_PARAM_TYPE
     Length*: ULONG
     Flags*: DWORD
     union1*: AUDIT_PARAM_UNION1
     union2*: AUDIT_PARAM_UNION2
+
   PAUDIT_PARAM* = ptr AUDIT_PARAM
   AUDIT_PARAMS* {.pure.} = object
     Length*: ULONG
     Flags*: DWORD
     Count*: USHORT
     Parameters*: ptr AUDIT_PARAM
+
   PAUDIT_PARAMS* = ptr AUDIT_PARAMS
   AUTHZ_AUDIT_EVENT_TYPE_LEGACY* {.pure.} = object
     CategoryId*: USHORT
     AuditId*: USHORT
     ParameterCount*: USHORT
+
   PAUTHZ_AUDIT_EVENT_TYPE_LEGACY* = ptr AUTHZ_AUDIT_EVENT_TYPE_LEGACY
   AUTHZ_AUDIT_EVENT_TYPE_UNION* {.pure, union.} = object
     Legacy*: AUTHZ_AUDIT_EVENT_TYPE_LEGACY
+
   PAUTHZ_AUDIT_EVENT_TYPE_UNION* = ptr AUTHZ_AUDIT_EVENT_TYPE_UNION
   AUTHZ_AUDIT_EVENT_TYPE_OLD* {.pure.} = object
     Version*: ULONG
@@ -241,6 +276,7 @@
     hAudit*: ULONG_PTR
     LinkId*: LUID
     u*: AUTHZ_AUDIT_EVENT_TYPE_UNION
+
   PAUTHZ_AUDIT_EVENT_TYPE_OLD* = ptr AUTHZ_AUDIT_EVENT_TYPE_OLD
   PAUTHZ_ACCESS_CHECK_RESULTS_HANDLE* = ptr AUTHZ_ACCESS_CHECK_RESULTS_HANDLE
   PAUTHZ_CLIENT_CONTEXT_HANDLE* = ptr AUTHZ_CLIENT_CONTEXT_HANDLE
@@ -255,27 +291,33 @@
     ObjectTypeList*: POBJECT_TYPE_LIST
     ObjectTypeListLength*: DWORD
     OptionalArguments*: PVOID
+
   PAUTHZ_ACCESS_REQUEST* = ptr AUTHZ_ACCESS_REQUEST
   AUTHZ_ACCESS_REPLY* {.pure.} = object
     ResultListLength*: DWORD
     GrantedAccessMask*: PACCESS_MASK
     SaclEvaluationResults*: PDWORD
     Error*: PDWORD
+
   PAUTHZ_ACCESS_REPLY* = ptr AUTHZ_ACCESS_REPLY
   AUTHZ_SECURITY_ATTRIBUTE_FQBN_VALUE* {.pure.} = object
     Version*: ULONG64
     pName*: PWSTR
+
   PAUTHZ_SECURITY_ATTRIBUTE_FQBN_VALUE* = ptr AUTHZ_SECURITY_ATTRIBUTE_FQBN_VALUE
   AUTHZ_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE* {.pure.} = object
     pValue*: PVOID
     ValueLength*: ULONG
-  PAUTHZ_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE* = ptr AUTHZ_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE
+
+  PAUTHZ_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE* =
+    ptr AUTHZ_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE
   AUTHZ_SECURITY_ATTRIBUTE_V1_Values* {.pure, union.} = object
     pInt64*: PLONG64
     pUint64*: PULONG64
     ppString*: ptr PWSTR
     pFqbn*: PAUTHZ_SECURITY_ATTRIBUTE_FQBN_VALUE
     pOctetString*: PAUTHZ_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE
+
   AUTHZ_SECURITY_ATTRIBUTE_V1* {.pure.} = object
     pName*: PWSTR
     ValueType*: USHORT
@@ -283,14 +325,17 @@
     Flags*: ULONG
     ValueCount*: ULONG
     Values*: AUTHZ_SECURITY_ATTRIBUTE_V1_Values
+
   PAUTHZ_SECURITY_ATTRIBUTE_V1* = ptr AUTHZ_SECURITY_ATTRIBUTE_V1
   AUTHZ_SECURITY_ATTRIBUTES_INFORMATION_Attribute* {.pure, union.} = object
     pAttributeV1*: PAUTHZ_SECURITY_ATTRIBUTE_V1
+
   AUTHZ_SECURITY_ATTRIBUTES_INFORMATION* {.pure.} = object
     Version*: USHORT
     Reserved*: USHORT
     AttributeCount*: ULONG
     Attribute*: AUTHZ_SECURITY_ATTRIBUTES_INFORMATION_Attribute
+
   PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION* = ptr AUTHZ_SECURITY_ATTRIBUTES_INFORMATION
   AUTHZ_RPC_INIT_INFO_CLIENT* {.pure.} = object
     version*: USHORT
@@ -300,12 +345,33 @@
     Endpoint*: PWSTR
     Options*: PWSTR
     ServerSpn*: PWSTR
+
   PAUTHZ_RPC_INIT_INFO_CLIENT* = ptr AUTHZ_RPC_INIT_INFO_CLIENT
-  PFN_AUTHZ_DYNAMIC_ACCESS_CHECK* = proc (hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE, pAce: PACE_HEADER, pArgs: PVOID, pbAceApplicable: PBOOL): WINBOOL {.stdcall.}
-  PFN_AUTHZ_COMPUTE_DYNAMIC_GROUPS* = proc (hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE, Args: PVOID, pSidAttrArray: ptr PSID_AND_ATTRIBUTES, pSidCount: PDWORD, pRestrictedSidAttrArray: ptr PSID_AND_ATTRIBUTES, pRestrictedSidCount: PDWORD): WINBOOL {.stdcall.}
-  PFN_AUTHZ_FREE_DYNAMIC_GROUPS* = proc (pSidAttrArray: PSID_AND_ATTRIBUTES): VOID {.stdcall.}
-  PFN_AUTHZ_GET_CENTRAL_ACCESS_POLICY* = proc (hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE, capid: PSID, pArgs: PVOID, pCentralAccessPolicyApplicable: PBOOL, ppCentralAccessPolicy: ptr PVOID): WINBOOL {.stdcall.}
-  PFN_AUTHZ_FREE_CENTRAL_ACCESS_POLICY* = proc (pCentralAccessPolicy: PVOID): VOID {.stdcall.}
+  PFN_AUTHZ_DYNAMIC_ACCESS_CHECK* = proc(
+    hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+    pAce: PACE_HEADER,
+    pArgs: PVOID,
+    pbAceApplicable: PBOOL,
+  ): WINBOOL {.stdcall.}
+  PFN_AUTHZ_COMPUTE_DYNAMIC_GROUPS* = proc(
+    hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+    Args: PVOID,
+    pSidAttrArray: ptr PSID_AND_ATTRIBUTES,
+    pSidCount: PDWORD,
+    pRestrictedSidAttrArray: ptr PSID_AND_ATTRIBUTES,
+    pRestrictedSidCount: PDWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_AUTHZ_FREE_DYNAMIC_GROUPS* =
+    proc(pSidAttrArray: PSID_AND_ATTRIBUTES): VOID {.stdcall.}
+  PFN_AUTHZ_GET_CENTRAL_ACCESS_POLICY* = proc(
+    hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+    capid: PSID,
+    pArgs: PVOID,
+    pCentralAccessPolicyApplicable: PBOOL,
+    ppCentralAccessPolicy: ptr PVOID,
+  ): WINBOOL {.stdcall.}
+  PFN_AUTHZ_FREE_CENTRAL_ACCESS_POLICY* =
+    proc(pCentralAccessPolicy: PVOID): VOID {.stdcall.}
   AUTHZ_INIT_INFO* {.pure.} = object
     version*: USHORT
     szResourceManagerName*: PCWSTR
@@ -314,14 +380,18 @@
     pfnFreeDynamicGroups*: PFN_AUTHZ_FREE_DYNAMIC_GROUPS
     pfnGetCentralAccessPolicy*: PFN_AUTHZ_GET_CENTRAL_ACCESS_POLICY
     pfnFreeCentralAccessPolicy*: PFN_AUTHZ_FREE_CENTRAL_ACCESS_POLICY
+
   PAUTHZ_INIT_INFO* = ptr AUTHZ_INIT_INFO
   AUTHZ_REGISTRATION_OBJECT_TYPE_NAME_OFFSET* {.pure.} = object
     szObjectTypeName*: PWSTR
     dwOffset*: DWORD
-  PAUTHZ_REGISTRATION_OBJECT_TYPE_NAME_OFFSET* = ptr AUTHZ_REGISTRATION_OBJECT_TYPE_NAME_OFFSET
+
+  PAUTHZ_REGISTRATION_OBJECT_TYPE_NAME_OFFSET* =
+    ptr AUTHZ_REGISTRATION_OBJECT_TYPE_NAME_OFFSET
   AUTHZ_SOURCE_SCHEMA_REGISTRATION_UNION1* {.pure, union.} = object
     pReserved*: PVOID
     pProviderGuid*: ptr GUID
+
   AUTHZ_SOURCE_SCHEMA_REGISTRATION* {.pure.} = object
     dwFlags*: DWORD
     szEventSourceName*: PWSTR
@@ -332,6 +402,7 @@
     union1*: AUTHZ_SOURCE_SCHEMA_REGISTRATION_UNION1
     dwObjectTypeNameCount*: DWORD
     ObjectTypeNames*: array[ANYSIZE_ARRAY, AUTHZ_REGISTRATION_OBJECT_TYPE_NAME_OFFSET]
+
   PAUTHZ_SOURCE_SCHEMA_REGISTRATION* = ptr AUTHZ_SOURCE_SCHEMA_REGISTRATION
   SI_OBJECT_INFO* {.pure.} = object
     dwFlags*: DWORD
@@ -340,67 +411,135 @@
     pszObjectName*: LPWSTR
     pszPageTitle*: LPWSTR
     guidObjectType*: GUID
+
   PSI_OBJECT_INFO* = ptr SI_OBJECT_INFO
   SI_ACCESS* {.pure.} = object
     pguid*: ptr GUID
     mask*: ACCESS_MASK
     pszName*: LPCWSTR
     dwFlags*: DWORD
+
   PSI_ACCESS* = ptr SI_ACCESS
   SI_INHERIT_TYPE* {.pure.} = object
     pguid*: ptr GUID
     dwFlags*: ULONG
     pszName*: LPCWSTR
+
   PSI_INHERIT_TYPE* = ptr SI_INHERIT_TYPE
   ISecurityInformation* {.pure.} = object
     lpVtbl*: ptr ISecurityInformationVtbl
+
   ISecurityInformationVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetObjectInformation*: proc(self: ptr ISecurityInformation, pObjectInfo: PSI_OBJECT_INFO): HRESULT {.stdcall.}
-    GetSecurity*: proc(self: ptr ISecurityInformation, RequestedInformation: SECURITY_INFORMATION, ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR, fDefault: WINBOOL): HRESULT {.stdcall.}
-    SetSecurity*: proc(self: ptr ISecurityInformation, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR): HRESULT {.stdcall.}
-    GetAccessRights*: proc(self: ptr ISecurityInformation, pguidObjectType: ptr GUID, dwFlags: DWORD, ppAccess: ptr PSI_ACCESS, pcAccesses: ptr ULONG, piDefaultAccess: ptr ULONG): HRESULT {.stdcall.}
-    MapGeneric*: proc(self: ptr ISecurityInformation, pguidObjectType: ptr GUID, pAceFlags: ptr UCHAR, pMask: ptr ACCESS_MASK): HRESULT {.stdcall.}
-    GetInheritTypes*: proc(self: ptr ISecurityInformation, ppInheritTypes: ptr PSI_INHERIT_TYPE, pcInheritTypes: ptr ULONG): HRESULT {.stdcall.}
-    PropertySheetPageCallback*: proc(self: ptr ISecurityInformation, hwnd: HWND, uMsg: UINT, uPage: SI_PAGE_TYPE): HRESULT {.stdcall.}
+    GetObjectInformation*: proc(
+      self: ptr ISecurityInformation, pObjectInfo: PSI_OBJECT_INFO
+    ): HRESULT {.stdcall.}
+    GetSecurity*: proc(
+      self: ptr ISecurityInformation,
+      RequestedInformation: SECURITY_INFORMATION,
+      ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR,
+      fDefault: WINBOOL,
+    ): HRESULT {.stdcall.}
+    SetSecurity*: proc(
+      self: ptr ISecurityInformation,
+      SecurityInformation: SECURITY_INFORMATION,
+      pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+    ): HRESULT {.stdcall.}
+    GetAccessRights*: proc(
+      self: ptr ISecurityInformation,
+      pguidObjectType: ptr GUID,
+      dwFlags: DWORD,
+      ppAccess: ptr PSI_ACCESS,
+      pcAccesses: ptr ULONG,
+      piDefaultAccess: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    MapGeneric*: proc(
+      self: ptr ISecurityInformation,
+      pguidObjectType: ptr GUID,
+      pAceFlags: ptr UCHAR,
+      pMask: ptr ACCESS_MASK,
+    ): HRESULT {.stdcall.}
+    GetInheritTypes*: proc(
+      self: ptr ISecurityInformation,
+      ppInheritTypes: ptr PSI_INHERIT_TYPE,
+      pcInheritTypes: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    PropertySheetPageCallback*: proc(
+      self: ptr ISecurityInformation, hwnd: HWND, uMsg: UINT, uPage: SI_PAGE_TYPE
+    ): HRESULT {.stdcall.}
+
   LPSECURITYINFO* = ptr ISecurityInformation
   ISecurityInformation2* {.pure.} = object
     lpVtbl*: ptr ISecurityInformation2Vtbl
+
   ISecurityInformation2Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    IsDaclCanonical*: proc(self: ptr ISecurityInformation2, pDacl: PACL): WINBOOL {.stdcall.}
-    LookupSids*: proc(self: ptr ISecurityInformation2, cSids: ULONG, rgpSids: ptr PSID, ppdo: ptr LPDATAOBJECT): HRESULT {.stdcall.}
+    IsDaclCanonical*:
+      proc(self: ptr ISecurityInformation2, pDacl: PACL): WINBOOL {.stdcall.}
+    LookupSids*: proc(
+      self: ptr ISecurityInformation2,
+      cSids: ULONG,
+      rgpSids: ptr PSID,
+      ppdo: ptr LPDATAOBJECT,
+    ): HRESULT {.stdcall.}
+
   LPSECURITYINFO2* = ptr ISecurityInformation2
   SID_INFO* {.pure.} = object
     pSid*: PSID
     pwzCommonName*: PWSTR
     pwzClass*: PWSTR
     pwzUPN*: PWSTR
+
   PSID_INFO* = ptr SID_INFO
   SID_INFO_LIST* {.pure.} = object
     cItems*: ULONG
     aSidInfo*: array[ANYSIZE_ARRAY, SID_INFO]
+
   PSID_INFO_LIST* = ptr SID_INFO_LIST
   IEffectivePermission* {.pure.} = object
     lpVtbl*: ptr IEffectivePermissionVtbl
+
   IEffectivePermissionVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetEffectivePermission*: proc(self: ptr IEffectivePermission, pguidObjectType: ptr GUID, pUserSid: PSID, pszServerName: LPCWSTR, pSD: PSECURITY_DESCRIPTOR, ppObjectTypeList: ptr POBJECT_TYPE_LIST, pcObjectTypeListLength: ptr ULONG, ppGrantedAccessList: ptr PACCESS_MASK, pcGrantedAccessListLength: ptr ULONG): HRESULT {.stdcall.}
+    GetEffectivePermission*: proc(
+      self: ptr IEffectivePermission,
+      pguidObjectType: ptr GUID,
+      pUserSid: PSID,
+      pszServerName: LPCWSTR,
+      pSD: PSECURITY_DESCRIPTOR,
+      ppObjectTypeList: ptr POBJECT_TYPE_LIST,
+      pcObjectTypeListLength: ptr ULONG,
+      ppGrantedAccessList: ptr PACCESS_MASK,
+      pcGrantedAccessListLength: ptr ULONG,
+    ): HRESULT {.stdcall.}
+
   LPEFFECTIVEPERMISSION* = ptr IEffectivePermission
+
 when winimUnicode:
-  type
-    PINHERITED_FROM* = PINHERITED_FROMW
+  type PINHERITED_FROM* = PINHERITED_FROMW
 when winimAnsi:
-  type
-    PINHERITED_FROM* = PINHERITED_FROMA
+  type PINHERITED_FROM* = PINHERITED_FROMA
 type
   ISecurityObjectTypeInfo* {.pure.} = object
     lpVtbl*: ptr ISecurityObjectTypeInfoVtbl
+
   ISecurityObjectTypeInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetInheritSource*: proc(self: ptr ISecurityObjectTypeInfo, si: SECURITY_INFORMATION, pACL: PACL, ppInheritArray: ptr PINHERITED_FROM): HRESULT {.stdcall.}
+    GetInheritSource*: proc(
+      self: ptr ISecurityObjectTypeInfo,
+      si: SECURITY_INFORMATION,
+      pACL: PACL,
+      ppInheritArray: ptr PINHERITED_FROM,
+    ): HRESULT {.stdcall.}
+
   LPSecurityObjectTypeInfo* = ptr ISecurityObjectTypeInfo
   ISecurityInformation3* {.pure.} = object
     lpVtbl*: ptr ISecurityInformation3Vtbl
+
   ISecurityInformation3Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetFullResourceName*: proc(self: ptr ISecurityInformation3, ppszResourceName: ptr LPWSTR): HRESULT {.stdcall.}
-    OpenElevatedEditor*: proc(self: ptr ISecurityInformation3, hWnd: HWND, uPage: SI_PAGE_TYPE): HRESULT {.stdcall.}
+    GetFullResourceName*: proc(
+      self: ptr ISecurityInformation3, ppszResourceName: ptr LPWSTR
+    ): HRESULT {.stdcall.}
+    OpenElevatedEditor*: proc(
+      self: ptr ISecurityInformation3, hWnd: HWND, uPage: SI_PAGE_TYPE
+    ): HRESULT {.stdcall.}
+
   LPSECURITYINFO3* = ptr ISecurityInformation3
   SECURITY_OBJECT* {.pure.} = object
     pwszName*: PWSTR
@@ -410,23 +549,50 @@
     cbData2*: DWORD
     Id*: DWORD
     fWellKnown*: BOOLEAN
+
   PSECURITY_OBJECT* = ptr SECURITY_OBJECT
   EFFPERM_RESULT_LIST* {.pure.} = object
     fEvaluated*: BOOLEAN
     cObjectTypeListLength*: ULONG
     pObjectTypeList*: ptr OBJECT_TYPE_LIST
     pGrantedAccessList*: ptr ACCESS_MASK
+
   PEFFPERM_RESULT_LIST* = ptr EFFPERM_RESULT_LIST
   ISecurityInformation4* {.pure.} = object
     lpVtbl*: ptr ISecurityInformation4Vtbl
+
   ISecurityInformation4Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSecondarySecurity*: proc(self: ptr ISecurityInformation4, pSecurityObjects: ptr PSECURITY_OBJECT, pSecurityObjectCount: PULONG): HRESULT {.stdcall.}
+    GetSecondarySecurity*: proc(
+      self: ptr ISecurityInformation4,
+      pSecurityObjects: ptr PSECURITY_OBJECT,
+      pSecurityObjectCount: PULONG,
+    ): HRESULT {.stdcall.}
+
   LPSECURITYINFO4* = ptr ISecurityInformation4
   IEffectivePermission2* {.pure.} = object
     lpVtbl*: ptr IEffectivePermission2Vtbl
+
   IEffectivePermission2Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ComputeEffectivePermissionWithSecondarySecurity*: proc(self: ptr IEffectivePermission2, pSid: PSID, pDeviceSid: PSID, pszServerName: PCWSTR, pSecurityObjects: PSECURITY_OBJECT, dwSecurityObjectCount: DWORD, pUserGroups: PTOKEN_GROUPS, pAuthzUserGroupsOperations: PAUTHZ_SID_OPERATION, pDeviceGroups: PTOKEN_GROUPS, pAuthzDeviceGroupsOperations: PAUTHZ_SID_OPERATION, pAuthzUserClaims: PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION, pAuthzUserClaimsOperations: PAUTHZ_SECURITY_ATTRIBUTE_OPERATION, pAuthzDeviceClaims: PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION, pAuthzDeviceClaimsOperations: PAUTHZ_SECURITY_ATTRIBUTE_OPERATION, pEffpermResultLists: PEFFPERM_RESULT_LIST): HRESULT {.stdcall.}
+    ComputeEffectivePermissionWithSecondarySecurity*: proc(
+      self: ptr IEffectivePermission2,
+      pSid: PSID,
+      pDeviceSid: PSID,
+      pszServerName: PCWSTR,
+      pSecurityObjects: PSECURITY_OBJECT,
+      dwSecurityObjectCount: DWORD,
+      pUserGroups: PTOKEN_GROUPS,
+      pAuthzUserGroupsOperations: PAUTHZ_SID_OPERATION,
+      pDeviceGroups: PTOKEN_GROUPS,
+      pAuthzDeviceGroupsOperations: PAUTHZ_SID_OPERATION,
+      pAuthzUserClaims: PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION,
+      pAuthzUserClaimsOperations: PAUTHZ_SECURITY_ATTRIBUTE_OPERATION,
+      pAuthzDeviceClaims: PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION,
+      pAuthzDeviceClaimsOperations: PAUTHZ_SECURITY_ATTRIBUTE_OPERATION,
+      pEffpermResultLists: PEFFPERM_RESULT_LIST,
+    ): HRESULT {.stdcall.}
+
   LPEFFECTIVEPERMISSION2* = ptr IEffectivePermission2
+
 const
   SE_UNKNOWN_OBJECT_TYPE* = 0
   SE_FILE_OBJECT* = 1
@@ -650,14 +816,19 @@
   AUTHZ_SID_OPERATION_REPLACE* = 4
   AUTHZ_SECURITY_ATTRIBUTE_NON_INHERITABLE* = 0x1
   AUTHZ_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE* = 0x2
-  AUTHZ_SECURITY_ATTRIBUTE_VALID_FLAGS* = AUTHZ_SECURITY_ATTRIBUTE_NON_INHERITABLE or AUTHZ_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE
+  AUTHZ_SECURITY_ATTRIBUTE_VALID_FLAGS* =
+    AUTHZ_SECURITY_ATTRIBUTE_NON_INHERITABLE or
+    AUTHZ_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE
   AUTHZ_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1* = 1
-  AUTHZ_SECURITY_ATTRIBUTES_INFORMATION_VERSION* = AUTHZ_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1
+  AUTHZ_SECURITY_ATTRIBUTES_INFORMATION_VERSION* =
+    AUTHZ_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1
   AUTHZ_ACCESS_CHECK_NO_DEEP_COPY_SD* = 0x1
   AUTHZ_RM_FLAG_NO_AUDIT* = 0x1
   AUTHZ_RM_FLAG_INITIALIZE_UNDER_IMPERSONATION* = 0x2
   AUTHZ_RM_FLAG_NO_CENTRAL_ACCESS_POLICIES* = 0x4
-  AUTHZ_VALID_RM_INIT_FLAGS* = AUTHZ_RM_FLAG_NO_AUDIT or AUTHZ_RM_FLAG_INITIALIZE_UNDER_IMPERSONATION or AUTHZ_RM_FLAG_NO_CENTRAL_ACCESS_POLICIES
+  AUTHZ_VALID_RM_INIT_FLAGS* =
+    AUTHZ_RM_FLAG_NO_AUDIT or AUTHZ_RM_FLAG_INITIALIZE_UNDER_IMPERSONATION or
+    AUTHZ_RM_FLAG_NO_CENTRAL_ACCESS_POLICIES
   AUTHZ_RPC_INIT_INFO_CLIENT_VERSION_V1* = 1
   AUTHZ_INIT_INFO_VERSION_V1* = 1
   authzContextInfoUserSid* = 1
@@ -680,7 +851,9 @@
   AUTHZ_NO_FAILURE_AUDIT* = 0x2
   AUTHZ_NO_ALLOC_STRINGS* = 0x4
   AUTHZ_WPD_CATEGORY_FLAG* = 0x10
-  AUTHZ_VALID_OBJECT_ACCESS_AUDIT_FLAGS* = AUTHZ_NO_SUCCESS_AUDIT or AUTHZ_NO_FAILURE_AUDIT or AUTHZ_NO_ALLOC_STRINGS or AUTHZ_WPD_CATEGORY_FLAG
+  AUTHZ_VALID_OBJECT_ACCESS_AUDIT_FLAGS* =
+    AUTHZ_NO_SUCCESS_AUDIT or AUTHZ_NO_FAILURE_AUDIT or AUTHZ_NO_ALLOC_STRINGS or
+    AUTHZ_WPD_CATEGORY_FLAG
   authzAuditEventInfoFlags* = 1
   authzAuditEventInfoOperationType* = 2
   authzAuditEventInfoObjectType* = 3
@@ -742,7 +915,7 @@
   DOBJ_VOL_NTACLS* = 0x00000004
   DOBJ_COND_NTACLS* = 0x00000008
   DOBJ_RIBBON_LAUNCH* = 0x00000010
-  PSPCB_SI_INITDIALOG* = WM_USER+1
+  PSPCB_SI_INITDIALOG* = WM_USER + 1
   IID_ISecurityInformation* = DEFINE_GUID("965fc360-16ff-11d0-91cb-00aa00bbb723")
   IID_ISecurityInformation2* = DEFINE_GUID("c3ccfdb4-6f88-11d2-a3ce-00c04fb1782a")
   CFSTR_ACLUI_SID_INFO_LIST* = "CFSTR_ACLUI_SID_INFO_LIST"
@@ -755,157 +928,942 @@
   SECURITY_OBJECT_ID_CENTRAL_ACCESS_RULE* = 4
   IID_ISecurityInformation4* = DEFINE_GUID("ea961070-cd14-4621-ace4-f63c03e583e4")
   IID_IEffectivePermission2* = DEFINE_GUID("941fabca-dd47-4fca-90bb-b0e10255f20d")
-type
-  FN_PROGRESS* = proc (pObjectName: LPWSTR, Status: DWORD, pInvokeSetting: PPROG_INVOKE_SETTING, Args: PVOID, SecuritySet: WINBOOL): VOID {.stdcall.}
-proc SetEntriesInAclA*(cCountOfExplicitEntries: ULONG, pListOfExplicitEntries: PEXPLICIT_ACCESS_A, OldAcl: PACL, NewAcl: ptr PACL): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetEntriesInAclW*(cCountOfExplicitEntries: ULONG, pListOfExplicitEntries: PEXPLICIT_ACCESS_W, OldAcl: PACL, NewAcl: ptr PACL): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetExplicitEntriesFromAclA*(pacl: PACL, pcCountOfExplicitEntries: PULONG, pListOfExplicitEntries: ptr PEXPLICIT_ACCESS_A): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetExplicitEntriesFromAclW*(pacl: PACL, pcCountOfExplicitEntries: PULONG, pListOfExplicitEntries: ptr PEXPLICIT_ACCESS_W): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetEffectiveRightsFromAclA*(pacl: PACL, pTrustee: PTRUSTEE_A, pAccessRights: PACCESS_MASK): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetEffectiveRightsFromAclW*(pacl: PACL, pTrustee: PTRUSTEE_W, pAccessRights: PACCESS_MASK): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetAuditedPermissionsFromAclA*(pacl: PACL, pTrustee: PTRUSTEE_A, pSuccessfulAuditedRights: PACCESS_MASK, pFailedAuditRights: PACCESS_MASK): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetAuditedPermissionsFromAclW*(pacl: PACL, pTrustee: PTRUSTEE_W, pSuccessfulAuditedRights: PACCESS_MASK, pFailedAuditRights: PACCESS_MASK): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetNamedSecurityInfoA*(pObjectName: LPCSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, ppsidOwner: ptr PSID, ppsidGroup: ptr PSID, ppDacl: ptr PACL, ppSacl: ptr PACL, ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetNamedSecurityInfoW*(pObjectName: LPCWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, ppsidOwner: ptr PSID, ppsidGroup: ptr PSID, ppDacl: ptr PACL, ppSacl: ptr PACL, ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetSecurityInfo*(handle: HANDLE, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, ppsidOwner: ptr PSID, ppsidGroup: ptr PSID, ppDacl: ptr PACL, ppSacl: ptr PACL, ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetNamedSecurityInfoA*(pObjectName: LPSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, psidOwner: PSID, psidGroup: PSID, pDacl: PACL, pSacl: PACL): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetNamedSecurityInfoW*(pObjectName: LPWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, psidOwner: PSID, psidGroup: PSID, pDacl: PACL, pSacl: PACL): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetSecurityInfo*(handle: HANDLE, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, psidOwner: PSID, psidGroup: PSID, pDacl: PACL, pSacl: PACL): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetInheritanceSourceA*(pObjectName: LPSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, Container: WINBOOL, pObjectClassGuids: ptr ptr GUID, GuidCount: DWORD, pAcl: PACL, pfnArray: PFN_OBJECT_MGR_FUNCTS, pGenericMapping: PGENERIC_MAPPING, pInheritArray: PINHERITED_FROMA): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetInheritanceSourceW*(pObjectName: LPWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, Container: WINBOOL, pObjectClassGuids: ptr ptr GUID, GuidCount: DWORD, pAcl: PACL, pfnArray: PFN_OBJECT_MGR_FUNCTS, pGenericMapping: PGENERIC_MAPPING, pInheritArray: PINHERITED_FROMW): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc FreeInheritedFromArray*(pInheritArray: PINHERITED_FROMW, AceCnt: USHORT, pfnArray: PFN_OBJECT_MGR_FUNCTS): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc TreeResetNamedSecurityInfoA*(pObjectName: LPSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, pOwner: PSID, pGroup: PSID, pDacl: PACL, pSacl: PACL, KeepExplicit: WINBOOL, fnProgress: FN_PROGRESS, ProgressInvokeSetting: PROG_INVOKE_SETTING, Args: PVOID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc TreeResetNamedSecurityInfoW*(pObjectName: LPWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, pOwner: PSID, pGroup: PSID, pDacl: PACL, pSacl: PACL, KeepExplicit: WINBOOL, fnProgress: FN_PROGRESS, ProgressInvokeSetting: PROG_INVOKE_SETTING, Args: PVOID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildSecurityDescriptorA*(pOwner: PTRUSTEE_A, pGroup: PTRUSTEE_A, cCountOfAccessEntries: ULONG, pListOfAccessEntries: PEXPLICIT_ACCESS_A, cCountOfAuditEntries: ULONG, pListOfAuditEntries: PEXPLICIT_ACCESS_A, pOldSD: PSECURITY_DESCRIPTOR, pSizeNewSD: PULONG, pNewSD: ptr PSECURITY_DESCRIPTOR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildSecurityDescriptorW*(pOwner: PTRUSTEE_W, pGroup: PTRUSTEE_W, cCountOfAccessEntries: ULONG, pListOfAccessEntries: PEXPLICIT_ACCESS_W, cCountOfAuditEntries: ULONG, pListOfAuditEntries: PEXPLICIT_ACCESS_W, pOldSD: PSECURITY_DESCRIPTOR, pSizeNewSD: PULONG, pNewSD: ptr PSECURITY_DESCRIPTOR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LookupSecurityDescriptorPartsA*(ppOwner: ptr PTRUSTEE_A, ppGroup: ptr PTRUSTEE_A, pcCountOfAccessEntries: PULONG, ppListOfAccessEntries: ptr PEXPLICIT_ACCESS_A, pcCountOfAuditEntries: PULONG, ppListOfAuditEntries: ptr PEXPLICIT_ACCESS_A, pSD: PSECURITY_DESCRIPTOR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LookupSecurityDescriptorPartsW*(ppOwner: ptr PTRUSTEE_W, ppGroup: ptr PTRUSTEE_W, pcCountOfAccessEntries: PULONG, ppListOfAccessEntries: ptr PEXPLICIT_ACCESS_W, pcCountOfAuditEntries: PULONG, ppListOfAuditEntries: ptr PEXPLICIT_ACCESS_W, pSD: PSECURITY_DESCRIPTOR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildExplicitAccessWithNameA*(pExplicitAccess: PEXPLICIT_ACCESS_A, pTrusteeName: LPSTR, AccessPermissions: DWORD, AccessMode: ACCESS_MODE, Inheritance: DWORD): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildExplicitAccessWithNameW*(pExplicitAccess: PEXPLICIT_ACCESS_W, pTrusteeName: LPWSTR, AccessPermissions: DWORD, AccessMode: ACCESS_MODE, Inheritance: DWORD): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildImpersonateExplicitAccessWithNameA*(pExplicitAccess: PEXPLICIT_ACCESS_A, pTrusteeName: LPSTR, pTrustee: PTRUSTEE_A, AccessPermissions: DWORD, AccessMode: ACCESS_MODE, Inheritance: DWORD): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildImpersonateExplicitAccessWithNameW*(pExplicitAccess: PEXPLICIT_ACCESS_W, pTrusteeName: LPWSTR, pTrustee: PTRUSTEE_W, AccessPermissions: DWORD, AccessMode: ACCESS_MODE, Inheritance: DWORD): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildTrusteeWithNameA*(pTrustee: PTRUSTEE_A, pName: LPSTR): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildTrusteeWithNameW*(pTrustee: PTRUSTEE_W, pName: LPWSTR): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildImpersonateTrusteeA*(pTrustee: PTRUSTEE_A, pImpersonateTrustee: PTRUSTEE_A): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildImpersonateTrusteeW*(pTrustee: PTRUSTEE_W, pImpersonateTrustee: PTRUSTEE_W): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildTrusteeWithSidA*(pTrustee: PTRUSTEE_A, pSid: PSID): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildTrusteeWithSidW*(pTrustee: PTRUSTEE_W, pSid: PSID): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildTrusteeWithObjectsAndSidA*(pTrustee: PTRUSTEE_A, pObjSid: POBJECTS_AND_SID, pObjectGuid: ptr GUID, pInheritedObjectGuid: ptr GUID, pSid: PSID): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildTrusteeWithObjectsAndSidW*(pTrustee: PTRUSTEE_W, pObjSid: POBJECTS_AND_SID, pObjectGuid: ptr GUID, pInheritedObjectGuid: ptr GUID, pSid: PSID): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildTrusteeWithObjectsAndNameA*(pTrustee: PTRUSTEE_A, pObjName: POBJECTS_AND_NAME_A, ObjectType: SE_OBJECT_TYPE, ObjectTypeName: LPSTR, InheritedObjectTypeName: LPSTR, Name: LPSTR): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildTrusteeWithObjectsAndNameW*(pTrustee: PTRUSTEE_W, pObjName: POBJECTS_AND_NAME_W, ObjectType: SE_OBJECT_TYPE, ObjectTypeName: LPWSTR, InheritedObjectTypeName: LPWSTR, Name: LPWSTR): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetTrusteeNameA*(pTrustee: PTRUSTEE_A): LPSTR {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetTrusteeNameW*(pTrustee: PTRUSTEE_W): LPWSTR {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetTrusteeTypeA*(pTrustee: PTRUSTEE_A): TRUSTEE_TYPE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetTrusteeTypeW*(pTrustee: PTRUSTEE_W): TRUSTEE_TYPE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetTrusteeFormA*(pTrustee: PTRUSTEE_A): TRUSTEE_FORM {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetTrusteeFormW*(pTrustee: PTRUSTEE_W): TRUSTEE_FORM {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetMultipleTrusteeOperationA*(pTrustee: PTRUSTEE_A): MULTIPLE_TRUSTEE_OPERATION {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetMultipleTrusteeOperationW*(pTrustee: PTRUSTEE_W): MULTIPLE_TRUSTEE_OPERATION {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetMultipleTrusteeA*(pTrustee: PTRUSTEE_A): PTRUSTEE_A {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetMultipleTrusteeW*(pTrustee: PTRUSTEE_W): PTRUSTEE_W {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc TreeSetNamedSecurityInfoA*(pObjectName: LPSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, pOwner: PSID, pGroup: PSID, pDacl: PACL, pSacl: PACL, dwAction: DWORD, fnProgress: FN_PROGRESS, ProgressInvokeSetting: PROG_INVOKE_SETTING, Args: PVOID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc TreeSetNamedSecurityInfoW*(pObjectName: LPWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, pOwner: PSID, pGroup: PSID, pDacl: PACL, pSacl: PACL, dwAction: DWORD, fnProgress: FN_PROGRESS, ProgressInvokeSetting: PROG_INVOKE_SETTING, Args: PVOID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuthzAccessCheck*(Flags: DWORD, hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE, pRequest: PAUTHZ_ACCESS_REQUEST, hAuditEvent: AUTHZ_AUDIT_EVENT_HANDLE, pSecurityDescriptor: PSECURITY_DESCRIPTOR, OptionalSecurityDescriptorArray: ptr PSECURITY_DESCRIPTOR, OptionalSecurityDescriptorCount: DWORD, pReply: PAUTHZ_ACCESS_REPLY, phAccessCheckResults: PAUTHZ_ACCESS_CHECK_RESULTS_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzCachedAccessCheck*(Flags: DWORD, hAccessCheckResults: AUTHZ_ACCESS_CHECK_RESULTS_HANDLE, pRequest: PAUTHZ_ACCESS_REQUEST, hAuditEvent: AUTHZ_AUDIT_EVENT_HANDLE, pReply: PAUTHZ_ACCESS_REPLY): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzOpenObjectAudit*(Flags: DWORD, hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE, pRequest: PAUTHZ_ACCESS_REQUEST, hAuditEvent: AUTHZ_AUDIT_EVENT_HANDLE, pSecurityDescriptor: PSECURITY_DESCRIPTOR, OptionalSecurityDescriptorArray: ptr PSECURITY_DESCRIPTOR, OptionalSecurityDescriptorCount: DWORD, pReply: PAUTHZ_ACCESS_REPLY): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzFreeHandle*(hAccessCheckResults: AUTHZ_ACCESS_CHECK_RESULTS_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzInitializeResourceManager*(Flags: DWORD, pfnDynamicAccessCheck: PFN_AUTHZ_DYNAMIC_ACCESS_CHECK, pfnComputeDynamicGroups: PFN_AUTHZ_COMPUTE_DYNAMIC_GROUPS, pfnFreeDynamicGroups: PFN_AUTHZ_FREE_DYNAMIC_GROUPS, szResourceManagerName: PCWSTR, phAuthzResourceManager: PAUTHZ_RESOURCE_MANAGER_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzInitializeResourceManagerEx*(Flags: DWORD, pAuthzInitInfo: PAUTHZ_INIT_INFO, phAuthzResourceManager: PAUTHZ_RESOURCE_MANAGER_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzInitializeRemoteResourceManager*(pRpcInitInfo: PAUTHZ_RPC_INIT_INFO_CLIENT, phAuthzResourceManager: PAUTHZ_RESOURCE_MANAGER_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzFreeResourceManager*(hAuthzResourceManager: AUTHZ_RESOURCE_MANAGER_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzInitializeContextFromToken*(Flags: DWORD, TokenHandle: HANDLE, hAuthzResourceManager: AUTHZ_RESOURCE_MANAGER_HANDLE, pExpirationTime: PLARGE_INTEGER, Identifier: LUID, DynamicGroupArgs: PVOID, phAuthzClientContext: PAUTHZ_CLIENT_CONTEXT_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzInitializeContextFromSid*(Flags: DWORD, UserSid: PSID, hAuthzResourceManager: AUTHZ_RESOURCE_MANAGER_HANDLE, pExpirationTime: PLARGE_INTEGER, Identifier: LUID, DynamicGroupArgs: PVOID, phAuthzClientContext: PAUTHZ_CLIENT_CONTEXT_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzInitializeContextFromAuthzContext*(Flags: DWORD, hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE, pExpirationTime: PLARGE_INTEGER, Identifier: LUID, DynamicGroupArgs: PVOID, phNewAuthzClientContext: PAUTHZ_CLIENT_CONTEXT_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzInitializeCompoundContext*(UserContext: AUTHZ_CLIENT_CONTEXT_HANDLE, DeviceContext: AUTHZ_CLIENT_CONTEXT_HANDLE, phCompoundContext: PAUTHZ_CLIENT_CONTEXT_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzAddSidsToContext*(hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE, Sids: PSID_AND_ATTRIBUTES, SidCount: DWORD, RestrictedSids: PSID_AND_ATTRIBUTES, RestrictedSidCount: DWORD, phNewAuthzClientContext: PAUTHZ_CLIENT_CONTEXT_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzModifySecurityAttributes*(hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE, pOperations: PAUTHZ_SECURITY_ATTRIBUTE_OPERATION, pAttributes: PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzModifyClaims*(hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE, ClaimClass: AUTHZ_CONTEXT_INFORMATION_CLASS, pClaimOperations: PAUTHZ_SECURITY_ATTRIBUTE_OPERATION, pClaims: PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzModifySids*(hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE, SidClass: AUTHZ_CONTEXT_INFORMATION_CLASS, pSidOperations: PAUTHZ_SID_OPERATION, pSids: PTOKEN_GROUPS): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzSetAppContainerInformation*(hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE, pAppContainerSid: PSID, CapabilityCount: DWORD, pCapabilitySids: PSID_AND_ATTRIBUTES): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzGetInformationFromContext*(hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE, InfoClass: AUTHZ_CONTEXT_INFORMATION_CLASS, BufferSize: DWORD, pSizeRequired: PDWORD, Buffer: PVOID): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzFreeContext*(hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzInitializeObjectAccessAuditEvent*(Flags: DWORD, hAuditEventType: AUTHZ_AUDIT_EVENT_TYPE_HANDLE, szOperationType: PWSTR, szObjectType: PWSTR, szObjectName: PWSTR, szAdditionalInfo: PWSTR, phAuditEvent: PAUTHZ_AUDIT_EVENT_HANDLE, dwAdditionalParameterCount: DWORD): WINBOOL {.winapi, cdecl, varargs, dynlib: "authz", importc.}
-proc AuthzInitializeObjectAccessAuditEvent2*(Flags: DWORD, hAuditEventType: AUTHZ_AUDIT_EVENT_TYPE_HANDLE, szOperationType: PWSTR, szObjectType: PWSTR, szObjectName: PWSTR, szAdditionalInfo: PWSTR, szAdditionalInfo2: PWSTR, phAuditEvent: PAUTHZ_AUDIT_EVENT_HANDLE, dwAdditionalParameterCount: DWORD): WINBOOL {.winapi, cdecl, varargs, dynlib: "authz", importc.}
-proc AuthzFreeAuditEvent*(hAuditEvent: AUTHZ_AUDIT_EVENT_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzEvaluateSacl*(AuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE, pRequest: PAUTHZ_ACCESS_REQUEST, Sacl: PACL, GrantedAccess: ACCESS_MASK, AccessGranted: WINBOOL, pbGenerateAudit: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzInstallSecurityEventSource*(dwFlags: DWORD, pRegistration: PAUTHZ_SOURCE_SCHEMA_REGISTRATION): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzUninstallSecurityEventSource*(dwFlags: DWORD, szEventSourceName: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzEnumerateSecurityEventSources*(dwFlags: DWORD, Buffer: PAUTHZ_SOURCE_SCHEMA_REGISTRATION, pdwCount: PDWORD, pdwLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzRegisterSecurityEventSource*(dwFlags: DWORD, szEventSourceName: PCWSTR, phEventProvider: PAUTHZ_SECURITY_EVENT_PROVIDER_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzUnregisterSecurityEventSource*(dwFlags: DWORD, phEventProvider: PAUTHZ_SECURITY_EVENT_PROVIDER_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzReportSecurityEvent*(dwFlags: DWORD, hEventProvider: AUTHZ_SECURITY_EVENT_PROVIDER_HANDLE, dwAuditId: DWORD, pUserSid: PSID, dwCount: DWORD): WINBOOL {.winapi, cdecl, varargs, dynlib: "authz", importc.}
-proc AuthzReportSecurityEventFromParams*(dwFlags: DWORD, hEventProvider: AUTHZ_SECURITY_EVENT_PROVIDER_HANDLE, dwAuditId: DWORD, pUserSid: PSID, pParams: PAUDIT_PARAMS): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzRegisterCapChangeNotification*(phCapChangeSubscription: PAUTHZ_CAP_CHANGE_SUBSCRIPTION_HANDLE, pfnCapChangeCallback: LPTHREAD_START_ROUTINE, pCallbackContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzUnregisterCapChangeNotification*(hCapChangeSubscription: AUTHZ_CAP_CHANGE_SUBSCRIPTION_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc AuthzFreeCentralAccessPolicyCache*(): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
-proc CreateSecurityPage*(psi: LPSECURITYINFO): HPROPSHEETPAGE {.winapi, stdcall, dynlib: "aclui", importc.}
-proc EditSecurity*(hwndOwner: HWND, psi: LPSECURITYINFO): WINBOOL {.winapi, stdcall, dynlib: "aclui", importc.}
-proc EditSecurityAdvanced*(hwndOwner: HWND, psi: LPSECURITYINFO, uSIPage: SI_PAGE_TYPE): HRESULT {.winapi, stdcall, dynlib: "aclui", importc.}
-proc `Provider=`*(self: var ACTRL_OVERLAPPED, x: PVOID) {.inline.} = self.union1.Provider = x
-proc Provider*(self: ACTRL_OVERLAPPED): PVOID {.inline.} = self.union1.Provider
-proc Provider*(self: var ACTRL_OVERLAPPED): var PVOID {.inline.} = self.union1.Provider
-proc `Reserved1=`*(self: var ACTRL_OVERLAPPED, x: ULONG) {.inline.} = self.union1.Reserved1 = x
-proc Reserved1*(self: ACTRL_OVERLAPPED): ULONG {.inline.} = self.union1.Reserved1
-proc Reserved1*(self: var ACTRL_OVERLAPPED): var ULONG {.inline.} = self.union1.Reserved1
-proc `Data0=`*(self: var AUDIT_PARAM, x: ULONG_PTR) {.inline.} = self.union1.Data0 = x
-proc Data0*(self: AUDIT_PARAM): ULONG_PTR {.inline.} = self.union1.Data0
-proc Data0*(self: var AUDIT_PARAM): var ULONG_PTR {.inline.} = self.union1.Data0
-proc `Str=`*(self: var AUDIT_PARAM, x: PWSTR) {.inline.} = self.union1.Str = x
-proc Str*(self: AUDIT_PARAM): PWSTR {.inline.} = self.union1.Str
-proc Str*(self: var AUDIT_PARAM): var PWSTR {.inline.} = self.union1.Str
-proc `u=`*(self: var AUDIT_PARAM, x: ULONG_PTR) {.inline.} = self.union1.u = x
-proc u*(self: AUDIT_PARAM): ULONG_PTR {.inline.} = self.union1.u
-proc u*(self: var AUDIT_PARAM): var ULONG_PTR {.inline.} = self.union1.u
-proc `psid=`*(self: var AUDIT_PARAM, x: ptr SID) {.inline.} = self.union1.psid = x
-proc psid*(self: AUDIT_PARAM): ptr SID {.inline.} = self.union1.psid
-proc psid*(self: var AUDIT_PARAM): var ptr SID {.inline.} = self.union1.psid
-proc `pguid=`*(self: var AUDIT_PARAM, x: ptr GUID) {.inline.} = self.union1.pguid = x
-proc pguid*(self: AUDIT_PARAM): ptr GUID {.inline.} = self.union1.pguid
-proc pguid*(self: var AUDIT_PARAM): var ptr GUID {.inline.} = self.union1.pguid
-proc `LogonId_LowPart=`*(self: var AUDIT_PARAM, x: ULONG) {.inline.} = self.union1.LogonId_LowPart = x
-proc LogonId_LowPart*(self: AUDIT_PARAM): ULONG {.inline.} = self.union1.LogonId_LowPart
-proc LogonId_LowPart*(self: var AUDIT_PARAM): var ULONG {.inline.} = self.union1.LogonId_LowPart
-proc `pObjectTypes=`*(self: var AUDIT_PARAM, x: ptr AUDIT_OBJECT_TYPES) {.inline.} = self.union1.pObjectTypes = x
-proc pObjectTypes*(self: AUDIT_PARAM): ptr AUDIT_OBJECT_TYPES {.inline.} = self.union1.pObjectTypes
-proc pObjectTypes*(self: var AUDIT_PARAM): var ptr AUDIT_OBJECT_TYPES {.inline.} = self.union1.pObjectTypes
-proc `pIpAddress=`*(self: var AUDIT_PARAM, x: ptr AUDIT_IP_ADDRESS) {.inline.} = self.union1.pIpAddress = x
-proc pIpAddress*(self: AUDIT_PARAM): ptr AUDIT_IP_ADDRESS {.inline.} = self.union1.pIpAddress
-proc pIpAddress*(self: var AUDIT_PARAM): var ptr AUDIT_IP_ADDRESS {.inline.} = self.union1.pIpAddress
-proc `Data1=`*(self: var AUDIT_PARAM, x: ULONG_PTR) {.inline.} = self.union2.Data1 = x
-proc Data1*(self: AUDIT_PARAM): ULONG_PTR {.inline.} = self.union2.Data1
-proc Data1*(self: var AUDIT_PARAM): var ULONG_PTR {.inline.} = self.union2.Data1
-proc `LogonId_HighPart=`*(self: var AUDIT_PARAM, x: LONG) {.inline.} = self.union2.LogonId_HighPart = x
-proc LogonId_HighPart*(self: AUDIT_PARAM): LONG {.inline.} = self.union2.LogonId_HighPart
-proc LogonId_HighPart*(self: var AUDIT_PARAM): var LONG {.inline.} = self.union2.LogonId_HighPart
-proc `pReserved=`*(self: var AUTHZ_SOURCE_SCHEMA_REGISTRATION, x: PVOID) {.inline.} = self.union1.pReserved = x
-proc pReserved*(self: AUTHZ_SOURCE_SCHEMA_REGISTRATION): PVOID {.inline.} = self.union1.pReserved
-proc pReserved*(self: var AUTHZ_SOURCE_SCHEMA_REGISTRATION): var PVOID {.inline.} = self.union1.pReserved
-proc `pProviderGuid=`*(self: var AUTHZ_SOURCE_SCHEMA_REGISTRATION, x: ptr GUID) {.inline.} = self.union1.pProviderGuid = x
-proc pProviderGuid*(self: AUTHZ_SOURCE_SCHEMA_REGISTRATION): ptr GUID {.inline.} = self.union1.pProviderGuid
-proc pProviderGuid*(self: var AUTHZ_SOURCE_SCHEMA_REGISTRATION): var ptr GUID {.inline.} = self.union1.pProviderGuid
-proc GetObjectInformation*(self: ptr ISecurityInformation, pObjectInfo: PSI_OBJECT_INFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObjectInformation(self, pObjectInfo)
-proc GetSecurity*(self: ptr ISecurityInformation, RequestedInformation: SECURITY_INFORMATION, ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR, fDefault: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSecurity(self, RequestedInformation, ppSecurityDescriptor, fDefault)
-proc SetSecurity*(self: ptr ISecurityInformation, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSecurity(self, SecurityInformation, pSecurityDescriptor)
-proc GetAccessRights*(self: ptr ISecurityInformation, pguidObjectType: ptr GUID, dwFlags: DWORD, ppAccess: ptr PSI_ACCESS, pcAccesses: ptr ULONG, piDefaultAccess: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAccessRights(self, pguidObjectType, dwFlags, ppAccess, pcAccesses, piDefaultAccess)
-proc MapGeneric*(self: ptr ISecurityInformation, pguidObjectType: ptr GUID, pAceFlags: ptr UCHAR, pMask: ptr ACCESS_MASK): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MapGeneric(self, pguidObjectType, pAceFlags, pMask)
-proc GetInheritTypes*(self: ptr ISecurityInformation, ppInheritTypes: ptr PSI_INHERIT_TYPE, pcInheritTypes: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInheritTypes(self, ppInheritTypes, pcInheritTypes)
-proc PropertySheetPageCallback*(self: ptr ISecurityInformation, hwnd: HWND, uMsg: UINT, uPage: SI_PAGE_TYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PropertySheetPageCallback(self, hwnd, uMsg, uPage)
-proc IsDaclCanonical*(self: ptr ISecurityInformation2, pDacl: PACL): WINBOOL {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDaclCanonical(self, pDacl)
-proc LookupSids*(self: ptr ISecurityInformation2, cSids: ULONG, rgpSids: ptr PSID, ppdo: ptr LPDATAOBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LookupSids(self, cSids, rgpSids, ppdo)
-proc GetEffectivePermission*(self: ptr IEffectivePermission, pguidObjectType: ptr GUID, pUserSid: PSID, pszServerName: LPCWSTR, pSD: PSECURITY_DESCRIPTOR, ppObjectTypeList: ptr POBJECT_TYPE_LIST, pcObjectTypeListLength: ptr ULONG, ppGrantedAccessList: ptr PACCESS_MASK, pcGrantedAccessListLength: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEffectivePermission(self, pguidObjectType, pUserSid, pszServerName, pSD, ppObjectTypeList, pcObjectTypeListLength, ppGrantedAccessList, pcGrantedAccessListLength)
-proc GetInheritSource*(self: ptr ISecurityObjectTypeInfo, si: SECURITY_INFORMATION, pACL: PACL, ppInheritArray: ptr PINHERITED_FROM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInheritSource(self, si, pACL, ppInheritArray)
-proc GetFullResourceName*(self: ptr ISecurityInformation3, ppszResourceName: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFullResourceName(self, ppszResourceName)
-proc OpenElevatedEditor*(self: ptr ISecurityInformation3, hWnd: HWND, uPage: SI_PAGE_TYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OpenElevatedEditor(self, hWnd, uPage)
-proc GetSecondarySecurity*(self: ptr ISecurityInformation4, pSecurityObjects: ptr PSECURITY_OBJECT, pSecurityObjectCount: PULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSecondarySecurity(self, pSecurityObjects, pSecurityObjectCount)
-proc ComputeEffectivePermissionWithSecondarySecurity*(self: ptr IEffectivePermission2, pSid: PSID, pDeviceSid: PSID, pszServerName: PCWSTR, pSecurityObjects: PSECURITY_OBJECT, dwSecurityObjectCount: DWORD, pUserGroups: PTOKEN_GROUPS, pAuthzUserGroupsOperations: PAUTHZ_SID_OPERATION, pDeviceGroups: PTOKEN_GROUPS, pAuthzDeviceGroupsOperations: PAUTHZ_SID_OPERATION, pAuthzUserClaims: PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION, pAuthzUserClaimsOperations: PAUTHZ_SECURITY_ATTRIBUTE_OPERATION, pAuthzDeviceClaims: PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION, pAuthzDeviceClaimsOperations: PAUTHZ_SECURITY_ATTRIBUTE_OPERATION, pEffpermResultLists: PEFFPERM_RESULT_LIST): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ComputeEffectivePermissionWithSecondarySecurity(self, pSid, pDeviceSid, pszServerName, pSecurityObjects, dwSecurityObjectCount, pUserGroups, pAuthzUserGroupsOperations, pDeviceGroups, pAuthzDeviceGroupsOperations, pAuthzUserClaims, pAuthzUserClaimsOperations, pAuthzDeviceClaims, pAuthzDeviceClaimsOperations, pEffpermResultLists)
-converter winimConverterISecurityInformationToIUnknown*(x: ptr ISecurityInformation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISecurityInformation2ToIUnknown*(x: ptr ISecurityInformation2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEffectivePermissionToIUnknown*(x: ptr IEffectivePermission): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISecurityObjectTypeInfoToIUnknown*(x: ptr ISecurityObjectTypeInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISecurityInformation3ToIUnknown*(x: ptr ISecurityInformation3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISecurityInformation4ToIUnknown*(x: ptr ISecurityInformation4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEffectivePermission2ToIUnknown*(x: ptr IEffectivePermission2): ptr IUnknown = cast[ptr IUnknown](x)
+type FN_PROGRESS* = proc(
+  pObjectName: LPWSTR,
+  Status: DWORD,
+  pInvokeSetting: PPROG_INVOKE_SETTING,
+  Args: PVOID,
+  SecuritySet: WINBOOL,
+): VOID {.stdcall.}
+
+proc SetEntriesInAclA*(
+  cCountOfExplicitEntries: ULONG,
+  pListOfExplicitEntries: PEXPLICIT_ACCESS_A,
+  OldAcl: PACL,
+  NewAcl: ptr PACL,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetEntriesInAclW*(
+  cCountOfExplicitEntries: ULONG,
+  pListOfExplicitEntries: PEXPLICIT_ACCESS_W,
+  OldAcl: PACL,
+  NewAcl: ptr PACL,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetExplicitEntriesFromAclA*(
+  pacl: PACL,
+  pcCountOfExplicitEntries: PULONG,
+  pListOfExplicitEntries: ptr PEXPLICIT_ACCESS_A,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetExplicitEntriesFromAclW*(
+  pacl: PACL,
+  pcCountOfExplicitEntries: PULONG,
+  pListOfExplicitEntries: ptr PEXPLICIT_ACCESS_W,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetEffectiveRightsFromAclA*(
+  pacl: PACL, pTrustee: PTRUSTEE_A, pAccessRights: PACCESS_MASK
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetEffectiveRightsFromAclW*(
+  pacl: PACL, pTrustee: PTRUSTEE_W, pAccessRights: PACCESS_MASK
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetAuditedPermissionsFromAclA*(
+  pacl: PACL,
+  pTrustee: PTRUSTEE_A,
+  pSuccessfulAuditedRights: PACCESS_MASK,
+  pFailedAuditRights: PACCESS_MASK,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetAuditedPermissionsFromAclW*(
+  pacl: PACL,
+  pTrustee: PTRUSTEE_W,
+  pSuccessfulAuditedRights: PACCESS_MASK,
+  pFailedAuditRights: PACCESS_MASK,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetNamedSecurityInfoA*(
+  pObjectName: LPCSTR,
+  ObjectType: SE_OBJECT_TYPE,
+  SecurityInfo: SECURITY_INFORMATION,
+  ppsidOwner: ptr PSID,
+  ppsidGroup: ptr PSID,
+  ppDacl: ptr PACL,
+  ppSacl: ptr PACL,
+  ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetNamedSecurityInfoW*(
+  pObjectName: LPCWSTR,
+  ObjectType: SE_OBJECT_TYPE,
+  SecurityInfo: SECURITY_INFORMATION,
+  ppsidOwner: ptr PSID,
+  ppsidGroup: ptr PSID,
+  ppDacl: ptr PACL,
+  ppSacl: ptr PACL,
+  ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetSecurityInfo*(
+  handle: HANDLE,
+  ObjectType: SE_OBJECT_TYPE,
+  SecurityInfo: SECURITY_INFORMATION,
+  ppsidOwner: ptr PSID,
+  ppsidGroup: ptr PSID,
+  ppDacl: ptr PACL,
+  ppSacl: ptr PACL,
+  ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetNamedSecurityInfoA*(
+  pObjectName: LPSTR,
+  ObjectType: SE_OBJECT_TYPE,
+  SecurityInfo: SECURITY_INFORMATION,
+  psidOwner: PSID,
+  psidGroup: PSID,
+  pDacl: PACL,
+  pSacl: PACL,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetNamedSecurityInfoW*(
+  pObjectName: LPWSTR,
+  ObjectType: SE_OBJECT_TYPE,
+  SecurityInfo: SECURITY_INFORMATION,
+  psidOwner: PSID,
+  psidGroup: PSID,
+  pDacl: PACL,
+  pSacl: PACL,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetSecurityInfo*(
+  handle: HANDLE,
+  ObjectType: SE_OBJECT_TYPE,
+  SecurityInfo: SECURITY_INFORMATION,
+  psidOwner: PSID,
+  psidGroup: PSID,
+  pDacl: PACL,
+  pSacl: PACL,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetInheritanceSourceA*(
+  pObjectName: LPSTR,
+  ObjectType: SE_OBJECT_TYPE,
+  SecurityInfo: SECURITY_INFORMATION,
+  Container: WINBOOL,
+  pObjectClassGuids: ptr ptr GUID,
+  GuidCount: DWORD,
+  pAcl: PACL,
+  pfnArray: PFN_OBJECT_MGR_FUNCTS,
+  pGenericMapping: PGENERIC_MAPPING,
+  pInheritArray: PINHERITED_FROMA,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetInheritanceSourceW*(
+  pObjectName: LPWSTR,
+  ObjectType: SE_OBJECT_TYPE,
+  SecurityInfo: SECURITY_INFORMATION,
+  Container: WINBOOL,
+  pObjectClassGuids: ptr ptr GUID,
+  GuidCount: DWORD,
+  pAcl: PACL,
+  pfnArray: PFN_OBJECT_MGR_FUNCTS,
+  pGenericMapping: PGENERIC_MAPPING,
+  pInheritArray: PINHERITED_FROMW,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc FreeInheritedFromArray*(
+  pInheritArray: PINHERITED_FROMW, AceCnt: USHORT, pfnArray: PFN_OBJECT_MGR_FUNCTS
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc TreeResetNamedSecurityInfoA*(
+  pObjectName: LPSTR,
+  ObjectType: SE_OBJECT_TYPE,
+  SecurityInfo: SECURITY_INFORMATION,
+  pOwner: PSID,
+  pGroup: PSID,
+  pDacl: PACL,
+  pSacl: PACL,
+  KeepExplicit: WINBOOL,
+  fnProgress: FN_PROGRESS,
+  ProgressInvokeSetting: PROG_INVOKE_SETTING,
+  Args: PVOID,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc TreeResetNamedSecurityInfoW*(
+  pObjectName: LPWSTR,
+  ObjectType: SE_OBJECT_TYPE,
+  SecurityInfo: SECURITY_INFORMATION,
+  pOwner: PSID,
+  pGroup: PSID,
+  pDacl: PACL,
+  pSacl: PACL,
+  KeepExplicit: WINBOOL,
+  fnProgress: FN_PROGRESS,
+  ProgressInvokeSetting: PROG_INVOKE_SETTING,
+  Args: PVOID,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildSecurityDescriptorA*(
+  pOwner: PTRUSTEE_A,
+  pGroup: PTRUSTEE_A,
+  cCountOfAccessEntries: ULONG,
+  pListOfAccessEntries: PEXPLICIT_ACCESS_A,
+  cCountOfAuditEntries: ULONG,
+  pListOfAuditEntries: PEXPLICIT_ACCESS_A,
+  pOldSD: PSECURITY_DESCRIPTOR,
+  pSizeNewSD: PULONG,
+  pNewSD: ptr PSECURITY_DESCRIPTOR,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildSecurityDescriptorW*(
+  pOwner: PTRUSTEE_W,
+  pGroup: PTRUSTEE_W,
+  cCountOfAccessEntries: ULONG,
+  pListOfAccessEntries: PEXPLICIT_ACCESS_W,
+  cCountOfAuditEntries: ULONG,
+  pListOfAuditEntries: PEXPLICIT_ACCESS_W,
+  pOldSD: PSECURITY_DESCRIPTOR,
+  pSizeNewSD: PULONG,
+  pNewSD: ptr PSECURITY_DESCRIPTOR,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LookupSecurityDescriptorPartsA*(
+  ppOwner: ptr PTRUSTEE_A,
+  ppGroup: ptr PTRUSTEE_A,
+  pcCountOfAccessEntries: PULONG,
+  ppListOfAccessEntries: ptr PEXPLICIT_ACCESS_A,
+  pcCountOfAuditEntries: PULONG,
+  ppListOfAuditEntries: ptr PEXPLICIT_ACCESS_A,
+  pSD: PSECURITY_DESCRIPTOR,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LookupSecurityDescriptorPartsW*(
+  ppOwner: ptr PTRUSTEE_W,
+  ppGroup: ptr PTRUSTEE_W,
+  pcCountOfAccessEntries: PULONG,
+  ppListOfAccessEntries: ptr PEXPLICIT_ACCESS_W,
+  pcCountOfAuditEntries: PULONG,
+  ppListOfAuditEntries: ptr PEXPLICIT_ACCESS_W,
+  pSD: PSECURITY_DESCRIPTOR,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildExplicitAccessWithNameA*(
+  pExplicitAccess: PEXPLICIT_ACCESS_A,
+  pTrusteeName: LPSTR,
+  AccessPermissions: DWORD,
+  AccessMode: ACCESS_MODE,
+  Inheritance: DWORD,
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildExplicitAccessWithNameW*(
+  pExplicitAccess: PEXPLICIT_ACCESS_W,
+  pTrusteeName: LPWSTR,
+  AccessPermissions: DWORD,
+  AccessMode: ACCESS_MODE,
+  Inheritance: DWORD,
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildImpersonateExplicitAccessWithNameA*(
+  pExplicitAccess: PEXPLICIT_ACCESS_A,
+  pTrusteeName: LPSTR,
+  pTrustee: PTRUSTEE_A,
+  AccessPermissions: DWORD,
+  AccessMode: ACCESS_MODE,
+  Inheritance: DWORD,
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildImpersonateExplicitAccessWithNameW*(
+  pExplicitAccess: PEXPLICIT_ACCESS_W,
+  pTrusteeName: LPWSTR,
+  pTrustee: PTRUSTEE_W,
+  AccessPermissions: DWORD,
+  AccessMode: ACCESS_MODE,
+  Inheritance: DWORD,
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildTrusteeWithNameA*(
+  pTrustee: PTRUSTEE_A, pName: LPSTR
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildTrusteeWithNameW*(
+  pTrustee: PTRUSTEE_W, pName: LPWSTR
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildImpersonateTrusteeA*(
+  pTrustee: PTRUSTEE_A, pImpersonateTrustee: PTRUSTEE_A
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildImpersonateTrusteeW*(
+  pTrustee: PTRUSTEE_W, pImpersonateTrustee: PTRUSTEE_W
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildTrusteeWithSidA*(
+  pTrustee: PTRUSTEE_A, pSid: PSID
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildTrusteeWithSidW*(
+  pTrustee: PTRUSTEE_W, pSid: PSID
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildTrusteeWithObjectsAndSidA*(
+  pTrustee: PTRUSTEE_A,
+  pObjSid: POBJECTS_AND_SID,
+  pObjectGuid: ptr GUID,
+  pInheritedObjectGuid: ptr GUID,
+  pSid: PSID,
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildTrusteeWithObjectsAndSidW*(
+  pTrustee: PTRUSTEE_W,
+  pObjSid: POBJECTS_AND_SID,
+  pObjectGuid: ptr GUID,
+  pInheritedObjectGuid: ptr GUID,
+  pSid: PSID,
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildTrusteeWithObjectsAndNameA*(
+  pTrustee: PTRUSTEE_A,
+  pObjName: POBJECTS_AND_NAME_A,
+  ObjectType: SE_OBJECT_TYPE,
+  ObjectTypeName: LPSTR,
+  InheritedObjectTypeName: LPSTR,
+  Name: LPSTR,
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildTrusteeWithObjectsAndNameW*(
+  pTrustee: PTRUSTEE_W,
+  pObjName: POBJECTS_AND_NAME_W,
+  ObjectType: SE_OBJECT_TYPE,
+  ObjectTypeName: LPWSTR,
+  InheritedObjectTypeName: LPWSTR,
+  Name: LPWSTR,
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetTrusteeNameA*(
+  pTrustee: PTRUSTEE_A
+): LPSTR {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetTrusteeNameW*(
+  pTrustee: PTRUSTEE_W
+): LPWSTR {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetTrusteeTypeA*(
+  pTrustee: PTRUSTEE_A
+): TRUSTEE_TYPE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetTrusteeTypeW*(
+  pTrustee: PTRUSTEE_W
+): TRUSTEE_TYPE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetTrusteeFormA*(
+  pTrustee: PTRUSTEE_A
+): TRUSTEE_FORM {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetTrusteeFormW*(
+  pTrustee: PTRUSTEE_W
+): TRUSTEE_FORM {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetMultipleTrusteeOperationA*(
+  pTrustee: PTRUSTEE_A
+): MULTIPLE_TRUSTEE_OPERATION {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetMultipleTrusteeOperationW*(
+  pTrustee: PTRUSTEE_W
+): MULTIPLE_TRUSTEE_OPERATION {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetMultipleTrusteeA*(
+  pTrustee: PTRUSTEE_A
+): PTRUSTEE_A {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetMultipleTrusteeW*(
+  pTrustee: PTRUSTEE_W
+): PTRUSTEE_W {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc TreeSetNamedSecurityInfoA*(
+  pObjectName: LPSTR,
+  ObjectType: SE_OBJECT_TYPE,
+  SecurityInfo: SECURITY_INFORMATION,
+  pOwner: PSID,
+  pGroup: PSID,
+  pDacl: PACL,
+  pSacl: PACL,
+  dwAction: DWORD,
+  fnProgress: FN_PROGRESS,
+  ProgressInvokeSetting: PROG_INVOKE_SETTING,
+  Args: PVOID,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc TreeSetNamedSecurityInfoW*(
+  pObjectName: LPWSTR,
+  ObjectType: SE_OBJECT_TYPE,
+  SecurityInfo: SECURITY_INFORMATION,
+  pOwner: PSID,
+  pGroup: PSID,
+  pDacl: PACL,
+  pSacl: PACL,
+  dwAction: DWORD,
+  fnProgress: FN_PROGRESS,
+  ProgressInvokeSetting: PROG_INVOKE_SETTING,
+  Args: PVOID,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuthzAccessCheck*(
+  Flags: DWORD,
+  hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+  pRequest: PAUTHZ_ACCESS_REQUEST,
+  hAuditEvent: AUTHZ_AUDIT_EVENT_HANDLE,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  OptionalSecurityDescriptorArray: ptr PSECURITY_DESCRIPTOR,
+  OptionalSecurityDescriptorCount: DWORD,
+  pReply: PAUTHZ_ACCESS_REPLY,
+  phAccessCheckResults: PAUTHZ_ACCESS_CHECK_RESULTS_HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzCachedAccessCheck*(
+  Flags: DWORD,
+  hAccessCheckResults: AUTHZ_ACCESS_CHECK_RESULTS_HANDLE,
+  pRequest: PAUTHZ_ACCESS_REQUEST,
+  hAuditEvent: AUTHZ_AUDIT_EVENT_HANDLE,
+  pReply: PAUTHZ_ACCESS_REPLY,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzOpenObjectAudit*(
+  Flags: DWORD,
+  hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+  pRequest: PAUTHZ_ACCESS_REQUEST,
+  hAuditEvent: AUTHZ_AUDIT_EVENT_HANDLE,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  OptionalSecurityDescriptorArray: ptr PSECURITY_DESCRIPTOR,
+  OptionalSecurityDescriptorCount: DWORD,
+  pReply: PAUTHZ_ACCESS_REPLY,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzFreeHandle*(
+  hAccessCheckResults: AUTHZ_ACCESS_CHECK_RESULTS_HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzInitializeResourceManager*(
+  Flags: DWORD,
+  pfnDynamicAccessCheck: PFN_AUTHZ_DYNAMIC_ACCESS_CHECK,
+  pfnComputeDynamicGroups: PFN_AUTHZ_COMPUTE_DYNAMIC_GROUPS,
+  pfnFreeDynamicGroups: PFN_AUTHZ_FREE_DYNAMIC_GROUPS,
+  szResourceManagerName: PCWSTR,
+  phAuthzResourceManager: PAUTHZ_RESOURCE_MANAGER_HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzInitializeResourceManagerEx*(
+  Flags: DWORD,
+  pAuthzInitInfo: PAUTHZ_INIT_INFO,
+  phAuthzResourceManager: PAUTHZ_RESOURCE_MANAGER_HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzInitializeRemoteResourceManager*(
+  pRpcInitInfo: PAUTHZ_RPC_INIT_INFO_CLIENT,
+  phAuthzResourceManager: PAUTHZ_RESOURCE_MANAGER_HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzFreeResourceManager*(
+  hAuthzResourceManager: AUTHZ_RESOURCE_MANAGER_HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzInitializeContextFromToken*(
+  Flags: DWORD,
+  TokenHandle: HANDLE,
+  hAuthzResourceManager: AUTHZ_RESOURCE_MANAGER_HANDLE,
+  pExpirationTime: PLARGE_INTEGER,
+  Identifier: LUID,
+  DynamicGroupArgs: PVOID,
+  phAuthzClientContext: PAUTHZ_CLIENT_CONTEXT_HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzInitializeContextFromSid*(
+  Flags: DWORD,
+  UserSid: PSID,
+  hAuthzResourceManager: AUTHZ_RESOURCE_MANAGER_HANDLE,
+  pExpirationTime: PLARGE_INTEGER,
+  Identifier: LUID,
+  DynamicGroupArgs: PVOID,
+  phAuthzClientContext: PAUTHZ_CLIENT_CONTEXT_HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzInitializeContextFromAuthzContext*(
+  Flags: DWORD,
+  hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+  pExpirationTime: PLARGE_INTEGER,
+  Identifier: LUID,
+  DynamicGroupArgs: PVOID,
+  phNewAuthzClientContext: PAUTHZ_CLIENT_CONTEXT_HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzInitializeCompoundContext*(
+  UserContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+  DeviceContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+  phCompoundContext: PAUTHZ_CLIENT_CONTEXT_HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzAddSidsToContext*(
+  hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+  Sids: PSID_AND_ATTRIBUTES,
+  SidCount: DWORD,
+  RestrictedSids: PSID_AND_ATTRIBUTES,
+  RestrictedSidCount: DWORD,
+  phNewAuthzClientContext: PAUTHZ_CLIENT_CONTEXT_HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzModifySecurityAttributes*(
+  hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+  pOperations: PAUTHZ_SECURITY_ATTRIBUTE_OPERATION,
+  pAttributes: PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzModifyClaims*(
+  hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+  ClaimClass: AUTHZ_CONTEXT_INFORMATION_CLASS,
+  pClaimOperations: PAUTHZ_SECURITY_ATTRIBUTE_OPERATION,
+  pClaims: PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzModifySids*(
+  hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+  SidClass: AUTHZ_CONTEXT_INFORMATION_CLASS,
+  pSidOperations: PAUTHZ_SID_OPERATION,
+  pSids: PTOKEN_GROUPS,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzSetAppContainerInformation*(
+  hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+  pAppContainerSid: PSID,
+  CapabilityCount: DWORD,
+  pCapabilitySids: PSID_AND_ATTRIBUTES,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzGetInformationFromContext*(
+  hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+  InfoClass: AUTHZ_CONTEXT_INFORMATION_CLASS,
+  BufferSize: DWORD,
+  pSizeRequired: PDWORD,
+  Buffer: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzFreeContext*(
+  hAuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzInitializeObjectAccessAuditEvent*(
+  Flags: DWORD,
+  hAuditEventType: AUTHZ_AUDIT_EVENT_TYPE_HANDLE,
+  szOperationType: PWSTR,
+  szObjectType: PWSTR,
+  szObjectName: PWSTR,
+  szAdditionalInfo: PWSTR,
+  phAuditEvent: PAUTHZ_AUDIT_EVENT_HANDLE,
+  dwAdditionalParameterCount: DWORD,
+): WINBOOL {.winapi, cdecl, varargs, dynlib: "authz", importc.}
+
+proc AuthzInitializeObjectAccessAuditEvent2*(
+  Flags: DWORD,
+  hAuditEventType: AUTHZ_AUDIT_EVENT_TYPE_HANDLE,
+  szOperationType: PWSTR,
+  szObjectType: PWSTR,
+  szObjectName: PWSTR,
+  szAdditionalInfo: PWSTR,
+  szAdditionalInfo2: PWSTR,
+  phAuditEvent: PAUTHZ_AUDIT_EVENT_HANDLE,
+  dwAdditionalParameterCount: DWORD,
+): WINBOOL {.winapi, cdecl, varargs, dynlib: "authz", importc.}
+
+proc AuthzFreeAuditEvent*(
+  hAuditEvent: AUTHZ_AUDIT_EVENT_HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzEvaluateSacl*(
+  AuthzClientContext: AUTHZ_CLIENT_CONTEXT_HANDLE,
+  pRequest: PAUTHZ_ACCESS_REQUEST,
+  Sacl: PACL,
+  GrantedAccess: ACCESS_MASK,
+  AccessGranted: WINBOOL,
+  pbGenerateAudit: PBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzInstallSecurityEventSource*(
+  dwFlags: DWORD, pRegistration: PAUTHZ_SOURCE_SCHEMA_REGISTRATION
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzUninstallSecurityEventSource*(
+  dwFlags: DWORD, szEventSourceName: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzEnumerateSecurityEventSources*(
+  dwFlags: DWORD,
+  Buffer: PAUTHZ_SOURCE_SCHEMA_REGISTRATION,
+  pdwCount: PDWORD,
+  pdwLength: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzRegisterSecurityEventSource*(
+  dwFlags: DWORD,
+  szEventSourceName: PCWSTR,
+  phEventProvider: PAUTHZ_SECURITY_EVENT_PROVIDER_HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzUnregisterSecurityEventSource*(
+  dwFlags: DWORD, phEventProvider: PAUTHZ_SECURITY_EVENT_PROVIDER_HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzReportSecurityEvent*(
+  dwFlags: DWORD,
+  hEventProvider: AUTHZ_SECURITY_EVENT_PROVIDER_HANDLE,
+  dwAuditId: DWORD,
+  pUserSid: PSID,
+  dwCount: DWORD,
+): WINBOOL {.winapi, cdecl, varargs, dynlib: "authz", importc.}
+
+proc AuthzReportSecurityEventFromParams*(
+  dwFlags: DWORD,
+  hEventProvider: AUTHZ_SECURITY_EVENT_PROVIDER_HANDLE,
+  dwAuditId: DWORD,
+  pUserSid: PSID,
+  pParams: PAUDIT_PARAMS,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzRegisterCapChangeNotification*(
+  phCapChangeSubscription: PAUTHZ_CAP_CHANGE_SUBSCRIPTION_HANDLE,
+  pfnCapChangeCallback: LPTHREAD_START_ROUTINE,
+  pCallbackContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzUnregisterCapChangeNotification*(
+  hCapChangeSubscription: AUTHZ_CAP_CHANGE_SUBSCRIPTION_HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "authz", importc.}
+
+proc AuthzFreeCentralAccessPolicyCache*(): WINBOOL {.
+  winapi, stdcall, dynlib: "authz", importc
+.}
+
+proc CreateSecurityPage*(
+  psi: LPSECURITYINFO
+): HPROPSHEETPAGE {.winapi, stdcall, dynlib: "aclui", importc.}
+
+proc EditSecurity*(
+  hwndOwner: HWND, psi: LPSECURITYINFO
+): WINBOOL {.winapi, stdcall, dynlib: "aclui", importc.}
+
+proc EditSecurityAdvanced*(
+  hwndOwner: HWND, psi: LPSECURITYINFO, uSIPage: SI_PAGE_TYPE
+): HRESULT {.winapi, stdcall, dynlib: "aclui", importc.}
+
+proc `Provider=`*(self: var ACTRL_OVERLAPPED, x: PVOID) {.inline.} =
+  self.union1.Provider = x
+
+proc Provider*(self: ACTRL_OVERLAPPED): PVOID {.inline.} =
+  self.union1.Provider
+
+proc Provider*(self: var ACTRL_OVERLAPPED): var PVOID {.inline.} =
+  self.union1.Provider
+
+proc `Reserved1=`*(self: var ACTRL_OVERLAPPED, x: ULONG) {.inline.} =
+  self.union1.Reserved1 = x
+
+proc Reserved1*(self: ACTRL_OVERLAPPED): ULONG {.inline.} =
+  self.union1.Reserved1
+
+proc Reserved1*(self: var ACTRL_OVERLAPPED): var ULONG {.inline.} =
+  self.union1.Reserved1
+
+proc `Data0=`*(self: var AUDIT_PARAM, x: ULONG_PTR) {.inline.} =
+  self.union1.Data0 = x
+
+proc Data0*(self: AUDIT_PARAM): ULONG_PTR {.inline.} =
+  self.union1.Data0
+
+proc Data0*(self: var AUDIT_PARAM): var ULONG_PTR {.inline.} =
+  self.union1.Data0
+
+proc `Str=`*(self: var AUDIT_PARAM, x: PWSTR) {.inline.} =
+  self.union1.Str = x
+
+proc Str*(self: AUDIT_PARAM): PWSTR {.inline.} =
+  self.union1.Str
+
+proc Str*(self: var AUDIT_PARAM): var PWSTR {.inline.} =
+  self.union1.Str
+
+proc `u=`*(self: var AUDIT_PARAM, x: ULONG_PTR) {.inline.} =
+  self.union1.u = x
+
+proc u*(self: AUDIT_PARAM): ULONG_PTR {.inline.} =
+  self.union1.u
+
+proc u*(self: var AUDIT_PARAM): var ULONG_PTR {.inline.} =
+  self.union1.u
+
+proc `psid=`*(self: var AUDIT_PARAM, x: ptr SID) {.inline.} =
+  self.union1.psid = x
+
+proc psid*(self: AUDIT_PARAM): ptr SID {.inline.} =
+  self.union1.psid
+
+proc psid*(self: var AUDIT_PARAM): var ptr SID {.inline.} =
+  self.union1.psid
+
+proc `pguid=`*(self: var AUDIT_PARAM, x: ptr GUID) {.inline.} =
+  self.union1.pguid = x
+
+proc pguid*(self: AUDIT_PARAM): ptr GUID {.inline.} =
+  self.union1.pguid
+
+proc pguid*(self: var AUDIT_PARAM): var ptr GUID {.inline.} =
+  self.union1.pguid
+
+proc `LogonId_LowPart=`*(self: var AUDIT_PARAM, x: ULONG) {.inline.} =
+  self.union1.LogonId_LowPart = x
+
+proc LogonId_LowPart*(self: AUDIT_PARAM): ULONG {.inline.} =
+  self.union1.LogonId_LowPart
+
+proc LogonId_LowPart*(self: var AUDIT_PARAM): var ULONG {.inline.} =
+  self.union1.LogonId_LowPart
+
+proc `pObjectTypes=`*(self: var AUDIT_PARAM, x: ptr AUDIT_OBJECT_TYPES) {.inline.} =
+  self.union1.pObjectTypes = x
+
+proc pObjectTypes*(self: AUDIT_PARAM): ptr AUDIT_OBJECT_TYPES {.inline.} =
+  self.union1.pObjectTypes
+
+proc pObjectTypes*(self: var AUDIT_PARAM): var ptr AUDIT_OBJECT_TYPES {.inline.} =
+  self.union1.pObjectTypes
+
+proc `pIpAddress=`*(self: var AUDIT_PARAM, x: ptr AUDIT_IP_ADDRESS) {.inline.} =
+  self.union1.pIpAddress = x
+
+proc pIpAddress*(self: AUDIT_PARAM): ptr AUDIT_IP_ADDRESS {.inline.} =
+  self.union1.pIpAddress
+
+proc pIpAddress*(self: var AUDIT_PARAM): var ptr AUDIT_IP_ADDRESS {.inline.} =
+  self.union1.pIpAddress
+
+proc `Data1=`*(self: var AUDIT_PARAM, x: ULONG_PTR) {.inline.} =
+  self.union2.Data1 = x
+
+proc Data1*(self: AUDIT_PARAM): ULONG_PTR {.inline.} =
+  self.union2.Data1
+
+proc Data1*(self: var AUDIT_PARAM): var ULONG_PTR {.inline.} =
+  self.union2.Data1
+
+proc `LogonId_HighPart=`*(self: var AUDIT_PARAM, x: LONG) {.inline.} =
+  self.union2.LogonId_HighPart = x
+
+proc LogonId_HighPart*(self: AUDIT_PARAM): LONG {.inline.} =
+  self.union2.LogonId_HighPart
+
+proc LogonId_HighPart*(self: var AUDIT_PARAM): var LONG {.inline.} =
+  self.union2.LogonId_HighPart
+
+proc `pReserved=`*(self: var AUTHZ_SOURCE_SCHEMA_REGISTRATION, x: PVOID) {.inline.} =
+  self.union1.pReserved = x
+
+proc pReserved*(self: AUTHZ_SOURCE_SCHEMA_REGISTRATION): PVOID {.inline.} =
+  self.union1.pReserved
+
+proc pReserved*(self: var AUTHZ_SOURCE_SCHEMA_REGISTRATION): var PVOID {.inline.} =
+  self.union1.pReserved
+
+proc `pProviderGuid=`*(
+    self: var AUTHZ_SOURCE_SCHEMA_REGISTRATION, x: ptr GUID
+) {.inline.} =
+  self.union1.pProviderGuid = x
+
+proc pProviderGuid*(self: AUTHZ_SOURCE_SCHEMA_REGISTRATION): ptr GUID {.inline.} =
+  self.union1.pProviderGuid
+
+proc pProviderGuid*(
+    self: var AUTHZ_SOURCE_SCHEMA_REGISTRATION
+): var ptr GUID {.inline.} =
+  self.union1.pProviderGuid
+
+proc GetObjectInformation*(
+    self: ptr ISecurityInformation, pObjectInfo: PSI_OBJECT_INFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObjectInformation(self, pObjectInfo)
+
+proc GetSecurity*(
+    self: ptr ISecurityInformation,
+    RequestedInformation: SECURITY_INFORMATION,
+    ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR,
+    fDefault: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSecurity(self, RequestedInformation, ppSecurityDescriptor, fDefault)
+
+proc SetSecurity*(
+    self: ptr ISecurityInformation,
+    SecurityInformation: SECURITY_INFORMATION,
+    pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSecurity(self, SecurityInformation, pSecurityDescriptor)
+
+proc GetAccessRights*(
+    self: ptr ISecurityInformation,
+    pguidObjectType: ptr GUID,
+    dwFlags: DWORD,
+    ppAccess: ptr PSI_ACCESS,
+    pcAccesses: ptr ULONG,
+    piDefaultAccess: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAccessRights(
+      self, pguidObjectType, dwFlags, ppAccess, pcAccesses, piDefaultAccess
+    )
+
+proc MapGeneric*(
+    self: ptr ISecurityInformation,
+    pguidObjectType: ptr GUID,
+    pAceFlags: ptr UCHAR,
+    pMask: ptr ACCESS_MASK,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MapGeneric(self, pguidObjectType, pAceFlags, pMask)
+
+proc GetInheritTypes*(
+    self: ptr ISecurityInformation,
+    ppInheritTypes: ptr PSI_INHERIT_TYPE,
+    pcInheritTypes: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInheritTypes(self, ppInheritTypes, pcInheritTypes)
+
+proc PropertySheetPageCallback*(
+    self: ptr ISecurityInformation, hwnd: HWND, uMsg: UINT, uPage: SI_PAGE_TYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PropertySheetPageCallback(self, hwnd, uMsg, uPage)
+
+proc IsDaclCanonical*(
+    self: ptr ISecurityInformation2, pDacl: PACL
+): WINBOOL {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDaclCanonical(self, pDacl)
+
+proc LookupSids*(
+    self: ptr ISecurityInformation2,
+    cSids: ULONG,
+    rgpSids: ptr PSID,
+    ppdo: ptr LPDATAOBJECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LookupSids(self, cSids, rgpSids, ppdo)
+
+proc GetEffectivePermission*(
+    self: ptr IEffectivePermission,
+    pguidObjectType: ptr GUID,
+    pUserSid: PSID,
+    pszServerName: LPCWSTR,
+    pSD: PSECURITY_DESCRIPTOR,
+    ppObjectTypeList: ptr POBJECT_TYPE_LIST,
+    pcObjectTypeListLength: ptr ULONG,
+    ppGrantedAccessList: ptr PACCESS_MASK,
+    pcGrantedAccessListLength: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEffectivePermission(
+      self, pguidObjectType, pUserSid, pszServerName, pSD, ppObjectTypeList,
+      pcObjectTypeListLength, ppGrantedAccessList, pcGrantedAccessListLength,
+    )
+
+proc GetInheritSource*(
+    self: ptr ISecurityObjectTypeInfo,
+    si: SECURITY_INFORMATION,
+    pACL: PACL,
+    ppInheritArray: ptr PINHERITED_FROM,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInheritSource(self, si, pACL, ppInheritArray)
+
+proc GetFullResourceName*(
+    self: ptr ISecurityInformation3, ppszResourceName: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFullResourceName(self, ppszResourceName)
+
+proc OpenElevatedEditor*(
+    self: ptr ISecurityInformation3, hWnd: HWND, uPage: SI_PAGE_TYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OpenElevatedEditor(self, hWnd, uPage)
+
+proc GetSecondarySecurity*(
+    self: ptr ISecurityInformation4,
+    pSecurityObjects: ptr PSECURITY_OBJECT,
+    pSecurityObjectCount: PULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSecondarySecurity(self, pSecurityObjects, pSecurityObjectCount)
+
+proc ComputeEffectivePermissionWithSecondarySecurity*(
+    self: ptr IEffectivePermission2,
+    pSid: PSID,
+    pDeviceSid: PSID,
+    pszServerName: PCWSTR,
+    pSecurityObjects: PSECURITY_OBJECT,
+    dwSecurityObjectCount: DWORD,
+    pUserGroups: PTOKEN_GROUPS,
+    pAuthzUserGroupsOperations: PAUTHZ_SID_OPERATION,
+    pDeviceGroups: PTOKEN_GROUPS,
+    pAuthzDeviceGroupsOperations: PAUTHZ_SID_OPERATION,
+    pAuthzUserClaims: PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION,
+    pAuthzUserClaimsOperations: PAUTHZ_SECURITY_ATTRIBUTE_OPERATION,
+    pAuthzDeviceClaims: PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION,
+    pAuthzDeviceClaimsOperations: PAUTHZ_SECURITY_ATTRIBUTE_OPERATION,
+    pEffpermResultLists: PEFFPERM_RESULT_LIST,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ComputeEffectivePermissionWithSecondarySecurity(
+      self, pSid, pDeviceSid, pszServerName, pSecurityObjects, dwSecurityObjectCount,
+      pUserGroups, pAuthzUserGroupsOperations, pDeviceGroups,
+      pAuthzDeviceGroupsOperations, pAuthzUserClaims, pAuthzUserClaimsOperations,
+      pAuthzDeviceClaims, pAuthzDeviceClaimsOperations, pEffpermResultLists,
+    )
+
+converter winimConverterISecurityInformationToIUnknown*(
+    x: ptr ISecurityInformation
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISecurityInformation2ToIUnknown*(
+    x: ptr ISecurityInformation2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEffectivePermissionToIUnknown*(
+    x: ptr IEffectivePermission
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISecurityObjectTypeInfoToIUnknown*(
+    x: ptr ISecurityObjectTypeInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISecurityInformation3ToIUnknown*(
+    x: ptr ISecurityInformation3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISecurityInformation4ToIUnknown*(
+    x: ptr ISecurityInformation4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEffectivePermission2ToIUnknown*(
+    x: ptr IEffectivePermission2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
 when winimUnicode:
   type
     OBJECTS_AND_NAME* = OBJECTS_AND_NAME_W
@@ -931,31 +1889,205 @@
     ACTRL_CONTROL_INFO* = ACTRL_CONTROL_INFOW
     PACTRL_CONTROL_INFO* = PACTRL_CONTROL_INFOW
     INHERITED_FROM* = INHERITED_FROMW
-  const
-    ACCCTRL_DEFAULT_PROVIDER* = ACCCTRL_DEFAULT_PROVIDERW
-  proc SetEntriesInAcl*(cCountOfExplicitEntries: ULONG, pListOfExplicitEntries: PEXPLICIT_ACCESS_W, OldAcl: PACL, NewAcl: ptr PACL): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "SetEntriesInAclW".}
-  proc GetExplicitEntriesFromAcl*(pacl: PACL, pcCountOfExplicitEntries: PULONG, pListOfExplicitEntries: ptr PEXPLICIT_ACCESS_W): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "GetExplicitEntriesFromAclW".}
-  proc GetEffectiveRightsFromAcl*(pacl: PACL, pTrustee: PTRUSTEE_W, pAccessRights: PACCESS_MASK): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "GetEffectiveRightsFromAclW".}
-  proc GetAuditedPermissionsFromAcl*(pacl: PACL, pTrustee: PTRUSTEE_W, pSuccessfulAuditedRights: PACCESS_MASK, pFailedAuditRights: PACCESS_MASK): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "GetAuditedPermissionsFromAclW".}
-  proc GetNamedSecurityInfo*(pObjectName: LPCWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, ppsidOwner: ptr PSID, ppsidGroup: ptr PSID, ppDacl: ptr PACL, ppSacl: ptr PACL, ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "GetNamedSecurityInfoW".}
-  proc SetNamedSecurityInfo*(pObjectName: LPWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, psidOwner: PSID, psidGroup: PSID, pDacl: PACL, pSacl: PACL): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "SetNamedSecurityInfoW".}
-  proc GetInheritanceSource*(pObjectName: LPWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, Container: WINBOOL, pObjectClassGuids: ptr ptr GUID, GuidCount: DWORD, pAcl: PACL, pfnArray: PFN_OBJECT_MGR_FUNCTS, pGenericMapping: PGENERIC_MAPPING, pInheritArray: PINHERITED_FROMW): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "GetInheritanceSourceW".}
-  proc TreeResetNamedSecurityInfo*(pObjectName: LPWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, pOwner: PSID, pGroup: PSID, pDacl: PACL, pSacl: PACL, KeepExplicit: WINBOOL, fnProgress: FN_PROGRESS, ProgressInvokeSetting: PROG_INVOKE_SETTING, Args: PVOID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "TreeResetNamedSecurityInfoW".}
-  proc BuildSecurityDescriptor*(pOwner: PTRUSTEE_W, pGroup: PTRUSTEE_W, cCountOfAccessEntries: ULONG, pListOfAccessEntries: PEXPLICIT_ACCESS_W, cCountOfAuditEntries: ULONG, pListOfAuditEntries: PEXPLICIT_ACCESS_W, pOldSD: PSECURITY_DESCRIPTOR, pSizeNewSD: PULONG, pNewSD: ptr PSECURITY_DESCRIPTOR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "BuildSecurityDescriptorW".}
-  proc LookupSecurityDescriptorParts*(ppOwner: ptr PTRUSTEE_W, ppGroup: ptr PTRUSTEE_W, pcCountOfAccessEntries: PULONG, ppListOfAccessEntries: ptr PEXPLICIT_ACCESS_W, pcCountOfAuditEntries: PULONG, ppListOfAuditEntries: ptr PEXPLICIT_ACCESS_W, pSD: PSECURITY_DESCRIPTOR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "LookupSecurityDescriptorPartsW".}
-  proc BuildExplicitAccessWithName*(pExplicitAccess: PEXPLICIT_ACCESS_W, pTrusteeName: LPWSTR, AccessPermissions: DWORD, AccessMode: ACCESS_MODE, Inheritance: DWORD): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildExplicitAccessWithNameW".}
-  proc BuildImpersonateExplicitAccessWithName*(pExplicitAccess: PEXPLICIT_ACCESS_W, pTrusteeName: LPWSTR, pTrustee: PTRUSTEE_W, AccessPermissions: DWORD, AccessMode: ACCESS_MODE, Inheritance: DWORD): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildImpersonateExplicitAccessWithNameW".}
-  proc BuildTrusteeWithName*(pTrustee: PTRUSTEE_W, pName: LPWSTR): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithNameW".}
-  proc BuildImpersonateTrustee*(pTrustee: PTRUSTEE_W, pImpersonateTrustee: PTRUSTEE_W): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildImpersonateTrusteeW".}
-  proc BuildTrusteeWithSid*(pTrustee: PTRUSTEE_W, pSid: PSID): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithSidW".}
-  proc BuildTrusteeWithObjectsAndSid*(pTrustee: PTRUSTEE_W, pObjSid: POBJECTS_AND_SID, pObjectGuid: ptr GUID, pInheritedObjectGuid: ptr GUID, pSid: PSID): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithObjectsAndSidW".}
-  proc BuildTrusteeWithObjectsAndName*(pTrustee: PTRUSTEE_W, pObjName: POBJECTS_AND_NAME_W, ObjectType: SE_OBJECT_TYPE, ObjectTypeName: LPWSTR, InheritedObjectTypeName: LPWSTR, Name: LPWSTR): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithObjectsAndNameW".}
-  proc GetTrusteeName*(pTrustee: PTRUSTEE_W): LPWSTR {.winapi, stdcall, dynlib: "advapi32", importc: "GetTrusteeNameW".}
-  proc GetTrusteeType*(pTrustee: PTRUSTEE_W): TRUSTEE_TYPE {.winapi, stdcall, dynlib: "advapi32", importc: "GetTrusteeTypeW".}
-  proc GetTrusteeForm*(pTrustee: PTRUSTEE_W): TRUSTEE_FORM {.winapi, stdcall, dynlib: "advapi32", importc: "GetTrusteeFormW".}
-  proc GetMultipleTrusteeOperation*(pTrustee: PTRUSTEE_W): MULTIPLE_TRUSTEE_OPERATION {.winapi, stdcall, dynlib: "advapi32", importc: "GetMultipleTrusteeOperationW".}
-  proc GetMultipleTrustee*(pTrustee: PTRUSTEE_W): PTRUSTEE_W {.winapi, stdcall, dynlib: "advapi32", importc: "GetMultipleTrusteeW".}
-  proc TreeSetNamedSecurityInfo*(pObjectName: LPWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, pOwner: PSID, pGroup: PSID, pDacl: PACL, pSacl: PACL, dwAction: DWORD, fnProgress: FN_PROGRESS, ProgressInvokeSetting: PROG_INVOKE_SETTING, Args: PVOID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "TreeSetNamedSecurityInfoW".}
+
+  const ACCCTRL_DEFAULT_PROVIDER* = ACCCTRL_DEFAULT_PROVIDERW
+  proc SetEntriesInAcl*(
+    cCountOfExplicitEntries: ULONG,
+    pListOfExplicitEntries: PEXPLICIT_ACCESS_W,
+    OldAcl: PACL,
+    NewAcl: ptr PACL,
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "SetEntriesInAclW".}
+
+  proc GetExplicitEntriesFromAcl*(
+    pacl: PACL,
+    pcCountOfExplicitEntries: PULONG,
+    pListOfExplicitEntries: ptr PEXPLICIT_ACCESS_W,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "advapi32", importc: "GetExplicitEntriesFromAclW"
+  .}
+
+  proc GetEffectiveRightsFromAcl*(
+    pacl: PACL, pTrustee: PTRUSTEE_W, pAccessRights: PACCESS_MASK
+  ): DWORD {.
+    winapi, stdcall, dynlib: "advapi32", importc: "GetEffectiveRightsFromAclW"
+  .}
+
+  proc GetAuditedPermissionsFromAcl*(
+    pacl: PACL,
+    pTrustee: PTRUSTEE_W,
+    pSuccessfulAuditedRights: PACCESS_MASK,
+    pFailedAuditRights: PACCESS_MASK,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "advapi32", importc: "GetAuditedPermissionsFromAclW"
+  .}
+
+  proc GetNamedSecurityInfo*(
+    pObjectName: LPCWSTR,
+    ObjectType: SE_OBJECT_TYPE,
+    SecurityInfo: SECURITY_INFORMATION,
+    ppsidOwner: ptr PSID,
+    ppsidGroup: ptr PSID,
+    ppDacl: ptr PACL,
+    ppSacl: ptr PACL,
+    ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR,
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "GetNamedSecurityInfoW".}
+
+  proc SetNamedSecurityInfo*(
+    pObjectName: LPWSTR,
+    ObjectType: SE_OBJECT_TYPE,
+    SecurityInfo: SECURITY_INFORMATION,
+    psidOwner: PSID,
+    psidGroup: PSID,
+    pDacl: PACL,
+    pSacl: PACL,
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "SetNamedSecurityInfoW".}
+
+  proc GetInheritanceSource*(
+    pObjectName: LPWSTR,
+    ObjectType: SE_OBJECT_TYPE,
+    SecurityInfo: SECURITY_INFORMATION,
+    Container: WINBOOL,
+    pObjectClassGuids: ptr ptr GUID,
+    GuidCount: DWORD,
+    pAcl: PACL,
+    pfnArray: PFN_OBJECT_MGR_FUNCTS,
+    pGenericMapping: PGENERIC_MAPPING,
+    pInheritArray: PINHERITED_FROMW,
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "GetInheritanceSourceW".}
+
+  proc TreeResetNamedSecurityInfo*(
+    pObjectName: LPWSTR,
+    ObjectType: SE_OBJECT_TYPE,
+    SecurityInfo: SECURITY_INFORMATION,
+    pOwner: PSID,
+    pGroup: PSID,
+    pDacl: PACL,
+    pSacl: PACL,
+    KeepExplicit: WINBOOL,
+    fnProgress: FN_PROGRESS,
+    ProgressInvokeSetting: PROG_INVOKE_SETTING,
+    Args: PVOID,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "advapi32", importc: "TreeResetNamedSecurityInfoW"
+  .}
+
+  proc BuildSecurityDescriptor*(
+    pOwner: PTRUSTEE_W,
+    pGroup: PTRUSTEE_W,
+    cCountOfAccessEntries: ULONG,
+    pListOfAccessEntries: PEXPLICIT_ACCESS_W,
+    cCountOfAuditEntries: ULONG,
+    pListOfAuditEntries: PEXPLICIT_ACCESS_W,
+    pOldSD: PSECURITY_DESCRIPTOR,
+    pSizeNewSD: PULONG,
+    pNewSD: ptr PSECURITY_DESCRIPTOR,
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "BuildSecurityDescriptorW".}
+
+  proc LookupSecurityDescriptorParts*(
+    ppOwner: ptr PTRUSTEE_W,
+    ppGroup: ptr PTRUSTEE_W,
+    pcCountOfAccessEntries: PULONG,
+    ppListOfAccessEntries: ptr PEXPLICIT_ACCESS_W,
+    pcCountOfAuditEntries: PULONG,
+    ppListOfAuditEntries: ptr PEXPLICIT_ACCESS_W,
+    pSD: PSECURITY_DESCRIPTOR,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "advapi32", importc: "LookupSecurityDescriptorPartsW"
+  .}
+
+  proc BuildExplicitAccessWithName*(
+    pExplicitAccess: PEXPLICIT_ACCESS_W,
+    pTrusteeName: LPWSTR,
+    AccessPermissions: DWORD,
+    AccessMode: ACCESS_MODE,
+    Inheritance: DWORD,
+  ): VOID {.
+    winapi, stdcall, dynlib: "advapi32", importc: "BuildExplicitAccessWithNameW"
+  .}
+
+  proc BuildImpersonateExplicitAccessWithName*(
+    pExplicitAccess: PEXPLICIT_ACCESS_W,
+    pTrusteeName: LPWSTR,
+    pTrustee: PTRUSTEE_W,
+    AccessPermissions: DWORD,
+    AccessMode: ACCESS_MODE,
+    Inheritance: DWORD,
+  ): VOID {.
+    winapi,
+    stdcall,
+    dynlib: "advapi32",
+    importc: "BuildImpersonateExplicitAccessWithNameW"
+  .}
+
+  proc BuildTrusteeWithName*(
+    pTrustee: PTRUSTEE_W, pName: LPWSTR
+  ): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithNameW".}
+
+  proc BuildImpersonateTrustee*(
+    pTrustee: PTRUSTEE_W, pImpersonateTrustee: PTRUSTEE_W
+  ): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildImpersonateTrusteeW".}
+
+  proc BuildTrusteeWithSid*(
+    pTrustee: PTRUSTEE_W, pSid: PSID
+  ): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithSidW".}
+
+  proc BuildTrusteeWithObjectsAndSid*(
+    pTrustee: PTRUSTEE_W,
+    pObjSid: POBJECTS_AND_SID,
+    pObjectGuid: ptr GUID,
+    pInheritedObjectGuid: ptr GUID,
+    pSid: PSID,
+  ): VOID {.
+    winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithObjectsAndSidW"
+  .}
+
+  proc BuildTrusteeWithObjectsAndName*(
+    pTrustee: PTRUSTEE_W,
+    pObjName: POBJECTS_AND_NAME_W,
+    ObjectType: SE_OBJECT_TYPE,
+    ObjectTypeName: LPWSTR,
+    InheritedObjectTypeName: LPWSTR,
+    Name: LPWSTR,
+  ): VOID {.
+    winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithObjectsAndNameW"
+  .}
+
+  proc GetTrusteeName*(
+    pTrustee: PTRUSTEE_W
+  ): LPWSTR {.winapi, stdcall, dynlib: "advapi32", importc: "GetTrusteeNameW".}
+
+  proc GetTrusteeType*(
+    pTrustee: PTRUSTEE_W
+  ): TRUSTEE_TYPE {.winapi, stdcall, dynlib: "advapi32", importc: "GetTrusteeTypeW".}
+
+  proc GetTrusteeForm*(
+    pTrustee: PTRUSTEE_W
+  ): TRUSTEE_FORM {.winapi, stdcall, dynlib: "advapi32", importc: "GetTrusteeFormW".}
+
+  proc GetMultipleTrusteeOperation*(
+    pTrustee: PTRUSTEE_W
+  ): MULTIPLE_TRUSTEE_OPERATION {.
+    winapi, stdcall, dynlib: "advapi32", importc: "GetMultipleTrusteeOperationW"
+  .}
+
+  proc GetMultipleTrustee*(
+    pTrustee: PTRUSTEE_W
+  ): PTRUSTEE_W {.winapi, stdcall, dynlib: "advapi32", importc: "GetMultipleTrusteeW".}
+
+  proc TreeSetNamedSecurityInfo*(
+    pObjectName: LPWSTR,
+    ObjectType: SE_OBJECT_TYPE,
+    SecurityInfo: SECURITY_INFORMATION,
+    pOwner: PSID,
+    pGroup: PSID,
+    pDacl: PACL,
+    pSacl: PACL,
+    dwAction: DWORD,
+    fnProgress: FN_PROGRESS,
+    ProgressInvokeSetting: PROG_INVOKE_SETTING,
+    Args: PVOID,
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "TreeSetNamedSecurityInfoW".}
+
 when winimAnsi:
   type
     OBJECTS_AND_NAME* = OBJECTS_AND_NAME_A
@@ -981,28 +2113,201 @@
     ACTRL_CONTROL_INFO* = ACTRL_CONTROL_INFOA
     PACTRL_CONTROL_INFO* = PACTRL_CONTROL_INFOA
     INHERITED_FROM* = INHERITED_FROMA
-  const
-    ACCCTRL_DEFAULT_PROVIDER* = ACCCTRL_DEFAULT_PROVIDERA
-  proc SetEntriesInAcl*(cCountOfExplicitEntries: ULONG, pListOfExplicitEntries: PEXPLICIT_ACCESS_A, OldAcl: PACL, NewAcl: ptr PACL): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "SetEntriesInAclA".}
-  proc GetExplicitEntriesFromAcl*(pacl: PACL, pcCountOfExplicitEntries: PULONG, pListOfExplicitEntries: ptr PEXPLICIT_ACCESS_A): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "GetExplicitEntriesFromAclA".}
-  proc GetEffectiveRightsFromAcl*(pacl: PACL, pTrustee: PTRUSTEE_A, pAccessRights: PACCESS_MASK): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "GetEffectiveRightsFromAclA".}
-  proc GetAuditedPermissionsFromAcl*(pacl: PACL, pTrustee: PTRUSTEE_A, pSuccessfulAuditedRights: PACCESS_MASK, pFailedAuditRights: PACCESS_MASK): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "GetAuditedPermissionsFromAclA".}
-  proc GetNamedSecurityInfo*(pObjectName: LPCSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, ppsidOwner: ptr PSID, ppsidGroup: ptr PSID, ppDacl: ptr PACL, ppSacl: ptr PACL, ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "GetNamedSecurityInfoA".}
-  proc SetNamedSecurityInfo*(pObjectName: LPSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, psidOwner: PSID, psidGroup: PSID, pDacl: PACL, pSacl: PACL): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "SetNamedSecurityInfoA".}
-  proc GetInheritanceSource*(pObjectName: LPSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, Container: WINBOOL, pObjectClassGuids: ptr ptr GUID, GuidCount: DWORD, pAcl: PACL, pfnArray: PFN_OBJECT_MGR_FUNCTS, pGenericMapping: PGENERIC_MAPPING, pInheritArray: PINHERITED_FROMA): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "GetInheritanceSourceA".}
-  proc TreeResetNamedSecurityInfo*(pObjectName: LPSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, pOwner: PSID, pGroup: PSID, pDacl: PACL, pSacl: PACL, KeepExplicit: WINBOOL, fnProgress: FN_PROGRESS, ProgressInvokeSetting: PROG_INVOKE_SETTING, Args: PVOID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "TreeResetNamedSecurityInfoA".}
-  proc BuildSecurityDescriptor*(pOwner: PTRUSTEE_A, pGroup: PTRUSTEE_A, cCountOfAccessEntries: ULONG, pListOfAccessEntries: PEXPLICIT_ACCESS_A, cCountOfAuditEntries: ULONG, pListOfAuditEntries: PEXPLICIT_ACCESS_A, pOldSD: PSECURITY_DESCRIPTOR, pSizeNewSD: PULONG, pNewSD: ptr PSECURITY_DESCRIPTOR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "BuildSecurityDescriptorA".}
-  proc LookupSecurityDescriptorParts*(ppOwner: ptr PTRUSTEE_A, ppGroup: ptr PTRUSTEE_A, pcCountOfAccessEntries: PULONG, ppListOfAccessEntries: ptr PEXPLICIT_ACCESS_A, pcCountOfAuditEntries: PULONG, ppListOfAuditEntries: ptr PEXPLICIT_ACCESS_A, pSD: PSECURITY_DESCRIPTOR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "LookupSecurityDescriptorPartsA".}
-  proc BuildExplicitAccessWithName*(pExplicitAccess: PEXPLICIT_ACCESS_A, pTrusteeName: LPSTR, AccessPermissions: DWORD, AccessMode: ACCESS_MODE, Inheritance: DWORD): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildExplicitAccessWithNameA".}
-  proc BuildImpersonateExplicitAccessWithName*(pExplicitAccess: PEXPLICIT_ACCESS_A, pTrusteeName: LPSTR, pTrustee: PTRUSTEE_A, AccessPermissions: DWORD, AccessMode: ACCESS_MODE, Inheritance: DWORD): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildImpersonateExplicitAccessWithNameA".}
-  proc BuildTrusteeWithName*(pTrustee: PTRUSTEE_A, pName: LPSTR): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithNameA".}
-  proc BuildImpersonateTrustee*(pTrustee: PTRUSTEE_A, pImpersonateTrustee: PTRUSTEE_A): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildImpersonateTrusteeA".}
-  proc BuildTrusteeWithSid*(pTrustee: PTRUSTEE_A, pSid: PSID): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithSidA".}
-  proc BuildTrusteeWithObjectsAndSid*(pTrustee: PTRUSTEE_A, pObjSid: POBJECTS_AND_SID, pObjectGuid: ptr GUID, pInheritedObjectGuid: ptr GUID, pSid: PSID): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithObjectsAndSidA".}
-  proc BuildTrusteeWithObjectsAndName*(pTrustee: PTRUSTEE_A, pObjName: POBJECTS_AND_NAME_A, ObjectType: SE_OBJECT_TYPE, ObjectTypeName: LPSTR, InheritedObjectTypeName: LPSTR, Name: LPSTR): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithObjectsAndNameA".}
-  proc GetTrusteeName*(pTrustee: PTRUSTEE_A): LPSTR {.winapi, stdcall, dynlib: "advapi32", importc: "GetTrusteeNameA".}
-  proc GetTrusteeType*(pTrustee: PTRUSTEE_A): TRUSTEE_TYPE {.winapi, stdcall, dynlib: "advapi32", importc: "GetTrusteeTypeA".}
-  proc GetTrusteeForm*(pTrustee: PTRUSTEE_A): TRUSTEE_FORM {.winapi, stdcall, dynlib: "advapi32", importc: "GetTrusteeFormA".}
-  proc GetMultipleTrusteeOperation*(pTrustee: PTRUSTEE_A): MULTIPLE_TRUSTEE_OPERATION {.winapi, stdcall, dynlib: "advapi32", importc: "GetMultipleTrusteeOperationA".}
-  proc GetMultipleTrustee*(pTrustee: PTRUSTEE_A): PTRUSTEE_A {.winapi, stdcall, dynlib: "advapi32", importc: "GetMultipleTrusteeA".}
-  proc TreeSetNamedSecurityInfo*(pObjectName: LPSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, pOwner: PSID, pGroup: PSID, pDacl: PACL, pSacl: PACL, dwAction: DWORD, fnProgress: FN_PROGRESS, ProgressInvokeSetting: PROG_INVOKE_SETTING, Args: PVOID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "TreeSetNamedSecurityInfoA".}
+
+  const ACCCTRL_DEFAULT_PROVIDER* = ACCCTRL_DEFAULT_PROVIDERA
+  proc SetEntriesInAcl*(
+    cCountOfExplicitEntries: ULONG,
+    pListOfExplicitEntries: PEXPLICIT_ACCESS_A,
+    OldAcl: PACL,
+    NewAcl: ptr PACL,
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "SetEntriesInAclA".}
+
+  proc GetExplicitEntriesFromAcl*(
+    pacl: PACL,
+    pcCountOfExplicitEntries: PULONG,
+    pListOfExplicitEntries: ptr PEXPLICIT_ACCESS_A,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "advapi32", importc: "GetExplicitEntriesFromAclA"
+  .}
+
+  proc GetEffectiveRightsFromAcl*(
+    pacl: PACL, pTrustee: PTRUSTEE_A, pAccessRights: PACCESS_MASK
+  ): DWORD {.
+    winapi, stdcall, dynlib: "advapi32", importc: "GetEffectiveRightsFromAclA"
+  .}
+
+  proc GetAuditedPermissionsFromAcl*(
+    pacl: PACL,
+    pTrustee: PTRUSTEE_A,
+    pSuccessfulAuditedRights: PACCESS_MASK,
+    pFailedAuditRights: PACCESS_MASK,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "advapi32", importc: "GetAuditedPermissionsFromAclA"
+  .}
+
+  proc GetNamedSecurityInfo*(
+    pObjectName: LPCSTR,
+    ObjectType: SE_OBJECT_TYPE,
+    SecurityInfo: SECURITY_INFORMATION,
+    ppsidOwner: ptr PSID,
+    ppsidGroup: ptr PSID,
+    ppDacl: ptr PACL,
+    ppSacl: ptr PACL,
+    ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR,
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "GetNamedSecurityInfoA".}
+
+  proc SetNamedSecurityInfo*(
+    pObjectName: LPSTR,
+    ObjectType: SE_OBJECT_TYPE,
+    SecurityInfo: SECURITY_INFORMATION,
+    psidOwner: PSID,
+    psidGroup: PSID,
+    pDacl: PACL,
+    pSacl: PACL,
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "SetNamedSecurityInfoA".}
+
+  proc GetInheritanceSource*(
+    pObjectName: LPSTR,
+    ObjectType: SE_OBJECT_TYPE,
+    SecurityInfo: SECURITY_INFORMATION,
+    Container: WINBOOL,
+    pObjectClassGuids: ptr ptr GUID,
+    GuidCount: DWORD,
+    pAcl: PACL,
+    pfnArray: PFN_OBJECT_MGR_FUNCTS,
+    pGenericMapping: PGENERIC_MAPPING,
+    pInheritArray: PINHERITED_FROMA,
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "GetInheritanceSourceA".}
+
+  proc TreeResetNamedSecurityInfo*(
+    pObjectName: LPSTR,
+    ObjectType: SE_OBJECT_TYPE,
+    SecurityInfo: SECURITY_INFORMATION,
+    pOwner: PSID,
+    pGroup: PSID,
+    pDacl: PACL,
+    pSacl: PACL,
+    KeepExplicit: WINBOOL,
+    fnProgress: FN_PROGRESS,
+    ProgressInvokeSetting: PROG_INVOKE_SETTING,
+    Args: PVOID,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "advapi32", importc: "TreeResetNamedSecurityInfoA"
+  .}
+
+  proc BuildSecurityDescriptor*(
+    pOwner: PTRUSTEE_A,
+    pGroup: PTRUSTEE_A,
+    cCountOfAccessEntries: ULONG,
+    pListOfAccessEntries: PEXPLICIT_ACCESS_A,
+    cCountOfAuditEntries: ULONG,
+    pListOfAuditEntries: PEXPLICIT_ACCESS_A,
+    pOldSD: PSECURITY_DESCRIPTOR,
+    pSizeNewSD: PULONG,
+    pNewSD: ptr PSECURITY_DESCRIPTOR,
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "BuildSecurityDescriptorA".}
+
+  proc LookupSecurityDescriptorParts*(
+    ppOwner: ptr PTRUSTEE_A,
+    ppGroup: ptr PTRUSTEE_A,
+    pcCountOfAccessEntries: PULONG,
+    ppListOfAccessEntries: ptr PEXPLICIT_ACCESS_A,
+    pcCountOfAuditEntries: PULONG,
+    ppListOfAuditEntries: ptr PEXPLICIT_ACCESS_A,
+    pSD: PSECURITY_DESCRIPTOR,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "advapi32", importc: "LookupSecurityDescriptorPartsA"
+  .}
+
+  proc BuildExplicitAccessWithName*(
+    pExplicitAccess: PEXPLICIT_ACCESS_A,
+    pTrusteeName: LPSTR,
+    AccessPermissions: DWORD,
+    AccessMode: ACCESS_MODE,
+    Inheritance: DWORD,
+  ): VOID {.
+    winapi, stdcall, dynlib: "advapi32", importc: "BuildExplicitAccessWithNameA"
+  .}
+
+  proc BuildImpersonateExplicitAccessWithName*(
+    pExplicitAccess: PEXPLICIT_ACCESS_A,
+    pTrusteeName: LPSTR,
+    pTrustee: PTRUSTEE_A,
+    AccessPermissions: DWORD,
+    AccessMode: ACCESS_MODE,
+    Inheritance: DWORD,
+  ): VOID {.
+    winapi,
+    stdcall,
+    dynlib: "advapi32",
+    importc: "BuildImpersonateExplicitAccessWithNameA"
+  .}
+
+  proc BuildTrusteeWithName*(
+    pTrustee: PTRUSTEE_A, pName: LPSTR
+  ): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithNameA".}
+
+  proc BuildImpersonateTrustee*(
+    pTrustee: PTRUSTEE_A, pImpersonateTrustee: PTRUSTEE_A
+  ): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildImpersonateTrusteeA".}
+
+  proc BuildTrusteeWithSid*(
+    pTrustee: PTRUSTEE_A, pSid: PSID
+  ): VOID {.winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithSidA".}
+
+  proc BuildTrusteeWithObjectsAndSid*(
+    pTrustee: PTRUSTEE_A,
+    pObjSid: POBJECTS_AND_SID,
+    pObjectGuid: ptr GUID,
+    pInheritedObjectGuid: ptr GUID,
+    pSid: PSID,
+  ): VOID {.
+    winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithObjectsAndSidA"
+  .}
+
+  proc BuildTrusteeWithObjectsAndName*(
+    pTrustee: PTRUSTEE_A,
+    pObjName: POBJECTS_AND_NAME_A,
+    ObjectType: SE_OBJECT_TYPE,
+    ObjectTypeName: LPSTR,
+    InheritedObjectTypeName: LPSTR,
+    Name: LPSTR,
+  ): VOID {.
+    winapi, stdcall, dynlib: "advapi32", importc: "BuildTrusteeWithObjectsAndNameA"
+  .}
+
+  proc GetTrusteeName*(
+    pTrustee: PTRUSTEE_A
+  ): LPSTR {.winapi, stdcall, dynlib: "advapi32", importc: "GetTrusteeNameA".}
+
+  proc GetTrusteeType*(
+    pTrustee: PTRUSTEE_A
+  ): TRUSTEE_TYPE {.winapi, stdcall, dynlib: "advapi32", importc: "GetTrusteeTypeA".}
+
+  proc GetTrusteeForm*(
+    pTrustee: PTRUSTEE_A
+  ): TRUSTEE_FORM {.winapi, stdcall, dynlib: "advapi32", importc: "GetTrusteeFormA".}
+
+  proc GetMultipleTrusteeOperation*(
+    pTrustee: PTRUSTEE_A
+  ): MULTIPLE_TRUSTEE_OPERATION {.
+    winapi, stdcall, dynlib: "advapi32", importc: "GetMultipleTrusteeOperationA"
+  .}
+
+  proc GetMultipleTrustee*(
+    pTrustee: PTRUSTEE_A
+  ): PTRUSTEE_A {.winapi, stdcall, dynlib: "advapi32", importc: "GetMultipleTrusteeA".}
+
+  proc TreeSetNamedSecurityInfo*(
+    pObjectName: LPSTR,
+    ObjectType: SE_OBJECT_TYPE,
+    SecurityInfo: SECURITY_INFORMATION,
+    pOwner: PSID,
+    pGroup: PSID,
+    pDacl: PACL,
+    pSacl: PACL,
+    dwAction: DWORD,
+    fnProgress: FN_PROGRESS,
+    ProgressInvokeSetting: PROG_INVOKE_SETTING,
+    Args: PVOID,
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "TreeSetNamedSecurityInfoA".}
--- a/semicongine/thirdparty/winim/winim/inc/commctrl.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/commctrl.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -32,10 +32,13 @@
   PROPSHEETPAGEA_UNION1* {.pure, union.} = object
     pszTemplate*: LPCSTR
     pResource*: LPCDLGTEMPLATE
+
   PROPSHEETPAGEA_UNION2* {.pure, union.} = object
     hIcon*: HICON
     pszIcon*: LPCSTR
-  LPFNPSPCALLBACKA* = proc (hwnd: HWND, uMsg: UINT, ppsp: ptr PROPSHEETPAGEA): UINT {.stdcall.}
+
+  LPFNPSPCALLBACKA* =
+    proc(hwnd: HWND, uMsg: UINT, ppsp: ptr PROPSHEETPAGEA): UINT {.stdcall.}
   PROPSHEETPAGEA* {.pure.} = object
     dwSize*: DWORD
     dwFlags*: DWORD
@@ -50,15 +53,19 @@
     pszHeaderTitle*: LPCSTR
     pszHeaderSubTitle*: LPCSTR
     hActCtx*: HANDLE
+
   LPPROPSHEETPAGEA* = ptr PROPSHEETPAGEA
   LPCPROPSHEETPAGEA* = ptr PROPSHEETPAGEA
   PROPSHEETPAGEW_UNION1* {.pure, union.} = object
     pszTemplate*: LPCWSTR
     pResource*: LPCDLGTEMPLATE
+
   PROPSHEETPAGEW_UNION2* {.pure, union.} = object
     hIcon*: HICON
     pszIcon*: LPCWSTR
-  LPFNPSPCALLBACKW* = proc (hwnd: HWND, uMsg: UINT, ppsp: ptr PROPSHEETPAGEW): UINT {.stdcall.}
+
+  LPFNPSPCALLBACKW* =
+    proc(hwnd: HWND, uMsg: UINT, ppsp: ptr PROPSHEETPAGEW): UINT {.stdcall.}
   PROPSHEETPAGEW* {.pure.} = object
     dwSize*: DWORD
     dwFlags*: DWORD
@@ -73,24 +80,30 @@
     pszHeaderTitle*: LPCWSTR
     pszHeaderSubTitle*: LPCWSTR
     hActCtx*: HANDLE
+
   LPPROPSHEETPAGEW* = ptr PROPSHEETPAGEW
   LPCPROPSHEETPAGEW* = ptr PROPSHEETPAGEW
   PROPSHEETHEADERA_UNION1* {.pure, union.} = object
     hIcon*: HICON
     pszIcon*: LPCSTR
+
   PROPSHEETHEADERA_UNION2* {.pure, union.} = object
     nStartPage*: UINT
     pStartPage*: LPCSTR
+
   PROPSHEETHEADERA_UNION3* {.pure, union.} = object
     ppsp*: LPCPROPSHEETPAGEA
     phpage*: ptr HPROPSHEETPAGE
-  PFNPROPSHEETCALLBACK* = proc (P1: HWND, P2: UINT, P3: LPARAM): int32 {.stdcall.}
+
+  PFNPROPSHEETCALLBACK* = proc(P1: HWND, P2: UINT, P3: LPARAM): int32 {.stdcall.}
   PROPSHEETHEADERA_UNION4* {.pure, union.} = object
     hbmWatermark*: HBITMAP
     pszbmWatermark*: LPCSTR
+
   PROPSHEETHEADERA_UNION5* {.pure, union.} = object
     hbmHeader*: HBITMAP
     pszbmHeader*: LPCSTR
+
   PROPSHEETHEADERA* {.pure.} = object
     dwSize*: DWORD
     dwFlags*: DWORD
@@ -105,23 +118,29 @@
     union4*: PROPSHEETHEADERA_UNION4
     hplWatermark*: HPALETTE
     union5*: PROPSHEETHEADERA_UNION5
+
   LPPROPSHEETHEADERA* = ptr PROPSHEETHEADERA
   LPCPROPSHEETHEADERA* = ptr PROPSHEETHEADERA
   PROPSHEETHEADERW_UNION1* {.pure, union.} = object
     hIcon*: HICON
     pszIcon*: LPCWSTR
+
   PROPSHEETHEADERW_UNION2* {.pure, union.} = object
     nStartPage*: UINT
     pStartPage*: LPCWSTR
+
   PROPSHEETHEADERW_UNION3* {.pure, union.} = object
     ppsp*: LPCPROPSHEETPAGEW
     phpage*: ptr HPROPSHEETPAGE
+
   PROPSHEETHEADERW_UNION4* {.pure, union.} = object
     hbmWatermark*: HBITMAP
     pszbmWatermark*: LPCWSTR
+
   PROPSHEETHEADERW_UNION5* {.pure, union.} = object
     hbmHeader*: HBITMAP
     pszbmHeader*: LPCWSTR
+
   PROPSHEETHEADERW* {.pure.} = object
     dwSize*: DWORD
     dwFlags*: DWORD
@@ -136,24 +155,29 @@
     union4*: PROPSHEETHEADERW_UNION4
     hplWatermark*: HPALETTE
     union5*: PROPSHEETHEADERW_UNION5
+
   LPPROPSHEETHEADERW* = ptr PROPSHEETHEADERW
   LPCPROPSHEETHEADERW* = ptr PROPSHEETHEADERW
   PSHNOTIFY* {.pure.} = object
     hdr*: NMHDR
     lParam*: LPARAM
+
   LPPSHNOTIFY* = ptr PSHNOTIFY
   TINITCOMMONCONTROLSEX* {.pure.} = object
     dwSize*: DWORD
     dwICC*: DWORD
+
   LPINITCOMMONCONTROLSEX* = ptr TINITCOMMONCONTROLSEX
   COLORSCHEME* {.pure.} = object
     dwSize*: DWORD
     clrBtnHighlight*: COLORREF
     clrBtnShadow*: COLORREF
+
   LPCOLORSCHEME* = ptr COLORSCHEME
   TNMTOOLTIPSCREATED* {.pure.} = object
     hdr*: NMHDR
     hwndToolTips*: HWND
+
   LPNMTOOLTIPSCREATED* = ptr TNMTOOLTIPSCREATED
   NMMOUSE* {.pure.} = object
     hdr*: NMHDR
@@ -161,6 +185,7 @@
     dwItemData*: DWORD_PTR
     pt*: POINT
     dwHitInfo*: LPARAM
+
   LPNMMOUSE* = ptr NMMOUSE
   TNMCLICK* = NMMOUSE
   LPNMCLICK* = LPNMMOUSE
@@ -171,17 +196,20 @@
     pObject*: pointer
     hResult*: HRESULT
     dwFlags*: DWORD
+
   LPNMOBJECTNOTIFY* = ptr NMOBJECTNOTIFY
   NMKEY* {.pure.} = object
     hdr*: NMHDR
     nVKey*: UINT
     uFlags*: UINT
+
   LPNMKEY* = ptr NMKEY
   TNMCHAR* {.pure.} = object
     hdr*: NMHDR
     ch*: UINT
     dwItemPrev*: DWORD
     dwItemNext*: DWORD
+
   LPNMCHAR* = ptr TNMCHAR
   TNMCUSTOMTEXT* {.pure.} = object
     hdr*: NMHDR
@@ -191,6 +219,7 @@
     lpRect*: LPRECT
     uFormat*: UINT
     fLink*: WINBOOL
+
   LPNMCUSTOMTEXT* = ptr TNMCUSTOMTEXT
   TNMCUSTOMDRAW* {.pure.} = object
     hdr*: NMHDR
@@ -200,16 +229,19 @@
     dwItemSpec*: DWORD_PTR
     uItemState*: UINT
     lItemlParam*: LPARAM
+
   LPNMCUSTOMDRAW* = ptr TNMCUSTOMDRAW
   NMTTCUSTOMDRAW* {.pure.} = object
     nmcd*: TNMCUSTOMDRAW
     uDrawFlags*: UINT
+
   LPNMTTCUSTOMDRAW* = ptr NMTTCUSTOMDRAW
   NMCUSTOMSPLITRECTINFO* {.pure.} = object
     hdr*: NMHDR
     rcClient*: RECT
     rcButton*: RECT
     rcSplit*: RECT
+
   LPNMCUSTOMSPLITRECTINFO* = ptr NMCUSTOMSPLITRECTINFO
   IMAGELISTDRAWPARAMS* {.pure.} = object
     cbSize*: DWORD
@@ -229,6 +261,7 @@
     fState*: DWORD
     Frame*: DWORD
     crEffect*: COLORREF
+
   LPIMAGELISTDRAWPARAMS* = ptr IMAGELISTDRAWPARAMS
   IMAGEINFO* {.pure.} = object
     hbmImage*: HBITMAP
@@ -236,14 +269,17 @@
     Unused1*: int32
     Unused2*: int32
     rcImage*: RECT
+
   LPIMAGEINFO* = ptr IMAGEINFO
   HD_TEXTFILTERA* {.pure.} = object
     pszText*: LPSTR
     cchTextMax*: INT
+
   LPHD_TEXTFILTERA* = ptr HD_TEXTFILTERA
   HD_TEXTFILTERW* {.pure.} = object
     pszText*: LPWSTR
     cchTextMax*: INT
+
   LPHD_TEXTFILTERW* = ptr HD_TEXTFILTERW
   HDITEMA* {.pure.} = object
     mask*: UINT
@@ -258,6 +294,7 @@
     `type`*: UINT
     pvFilter*: pointer
     state*: UINT
+
   LPHDITEMA* = ptr HDITEMA
   HDITEMW* {.pure.} = object
     mask*: UINT
@@ -272,34 +309,38 @@
     `type`*: UINT
     pvFilter*: pointer
     state*: UINT
+
   LPHDITEMW* = ptr HDITEMW
   HDLAYOUT* {.pure.} = object
     prc*: ptr RECT
     pwpos*: ptr WINDOWPOS
+
   LPHDLAYOUT* = ptr HDLAYOUT
   HDHITTESTINFO* {.pure.} = object
     pt*: POINT
     flags*: UINT
     iItem*: int32
+
   LPHDHITTESTINFO* = ptr HDHITTESTINFO
   NMHEADERA* {.pure.} = object
     hdr*: NMHDR
     iItem*: int32
     iButton*: int32
     pitem*: ptr HDITEMA
+
   HD_NOTIFYA* = NMHEADERA
   NMHEADERW* {.pure.} = object
     hdr*: NMHDR
     iItem*: int32
     iButton*: int32
     pitem*: ptr HDITEMW
+
   HD_NOTIFYW* = NMHEADERW
+
 when winimUnicode:
-  type
-    NMHEADER* = NMHEADERW
+  type NMHEADER* = NMHEADERW
 when winimAnsi:
-  type
-    NMHEADER* = NMHEADERA
+  type NMHEADER* = NMHEADERA
 type
   HD_NOTIFY* = NMHEADER
   LPNMHEADERA* = ptr NMHEADERA
@@ -312,6 +353,7 @@
     cchTextMax*: int32
     iImage*: int32
     lParam*: LPARAM
+
   LPNMHDDISPINFOW* = ptr NMHDDISPINFOW
   NMHDDISPINFOA* {.pure.} = object
     hdr*: NMHDR
@@ -321,37 +363,41 @@
     cchTextMax*: int32
     iImage*: int32
     lParam*: LPARAM
+
   LPNMHDDISPINFOA* = ptr NMHDDISPINFOA
   NMHDFILTERBTNCLICK* {.pure.} = object
     hdr*: NMHDR
     iItem*: INT
     rc*: RECT
+
   LPNMHDFILTERBTNCLICK* = ptr NMHDFILTERBTNCLICK
+
 when winimCpu64:
-  type
-    TBBUTTON* {.pure.} = object
-      iBitmap*: int32
-      idCommand*: int32
-      fsState*: BYTE
-      fsStyle*: BYTE
-      bReserved*: array[6, BYTE]
-      dwData*: DWORD_PTR
-      iString*: INT_PTR
+  type TBBUTTON* {.pure.} = object
+    iBitmap*: int32
+    idCommand*: int32
+    fsState*: BYTE
+    fsStyle*: BYTE
+    bReserved*: array[6, BYTE]
+    dwData*: DWORD_PTR
+    iString*: INT_PTR
+
 when winimCpu32:
-  type
-    TBBUTTON* {.pure.} = object
-      iBitmap*: int32
-      idCommand*: int32
-      fsState*: BYTE
-      fsStyle*: BYTE
-      bReserved*: array[2, BYTE]
-      dwData*: DWORD_PTR
-      iString*: INT_PTR
+  type TBBUTTON* {.pure.} = object
+    iBitmap*: int32
+    idCommand*: int32
+    fsState*: BYTE
+    fsStyle*: BYTE
+    bReserved*: array[2, BYTE]
+    dwData*: DWORD_PTR
+    iString*: INT_PTR
+
 type
   LPCTBBUTTON* = ptr TBBUTTON
   COLORMAP* {.pure.} = object
     `from`*: COLORREF
     to*: COLORREF
+
   LPCOLORMAP* = ptr COLORMAP
   NMTBCUSTOMDRAW* {.pure.} = object
     nmcd*: TNMCUSTOMDRAW
@@ -368,24 +414,29 @@
     nStringBkMode*: int32
     nHLStringBkMode*: int32
     iListGap*: int32
+
   LPNMTBCUSTOMDRAW* = ptr NMTBCUSTOMDRAW
   TTBADDBITMAP* {.pure.} = object
     hInst*: HINSTANCE
     nID*: UINT_PTR
+
   LPTBADDBITMAP* = ptr TTBADDBITMAP
   TBSAVEPARAMSA* {.pure.} = object
     hkr*: HKEY
     pszSubKey*: LPCSTR
     pszValueName*: LPCSTR
+
   LPTBSAVEPARAMSA* = ptr TBSAVEPARAMSA
   TBSAVEPARAMSW* {.pure.} = object
     hkr*: HKEY
     pszSubKey*: LPCWSTR
     pszValueName*: LPCWSTR
+
   LPTBSAVEPARAMW* = ptr TBSAVEPARAMSW
   TBINSERTMARK* {.pure.} = object
     iButton*: int32
     dwFlags*: DWORD
+
   LPTBINSERTMARK* = ptr TBINSERTMARK
   TTBREPLACEBITMAP* {.pure.} = object
     hInstOld*: HINSTANCE
@@ -393,6 +444,7 @@
     hInstNew*: HINSTANCE
     nIDNew*: UINT_PTR
     nButtons*: int32
+
   LPTBREPLACEBITMAP* = ptr TTBREPLACEBITMAP
   TBBUTTONINFOA* {.pure.} = object
     cbSize*: UINT
@@ -405,6 +457,7 @@
     lParam*: DWORD_PTR
     pszText*: LPSTR
     cchText*: int32
+
   LPTBBUTTONINFOA* = ptr TBBUTTONINFOA
   TBBUTTONINFOW* {.pure.} = object
     cbSize*: UINT
@@ -417,6 +470,7 @@
     lParam*: DWORD_PTR
     pszText*: LPWSTR
     cchText*: int32
+
   LPTBBUTTONINFOW* = ptr TBBUTTONINFOW
   TBMETRICS* {.pure.} = object
     cbSize*: UINT
@@ -427,12 +481,14 @@
     cyBarPad*: int32
     cxButtonSpacing*: int32
     cyButtonSpacing*: int32
+
   LPTBMETRICS* = ptr TBMETRICS
   NMTBHOTITEM* {.pure.} = object
     hdr*: NMHDR
     idOld*: int32
     idNew*: int32
     dwFlags*: DWORD
+
   LPNMTBHOTITEM* = ptr NMTBHOTITEM
   NMTBSAVE* {.pure.} = object
     hdr*: NMHDR
@@ -442,6 +498,7 @@
     iItem*: int32
     cButtons*: int32
     tbButton*: TBBUTTON
+
   LPNMTBSAVE* = ptr NMTBSAVE
   NMTBRESTORE* {.pure.} = object
     hdr*: NMHDR
@@ -452,6 +509,7 @@
     cButtons*: int32
     cbBytesPerRecord*: int32
     tbButton*: TBBUTTON
+
   LPNMTBRESTORE* = ptr NMTBRESTORE
   NMTBGETINFOTIPA* {.pure.} = object
     hdr*: NMHDR
@@ -459,6 +517,7 @@
     cchTextMax*: int32
     iItem*: int32
     lParam*: LPARAM
+
   LPNMTBGETINFOTIPA* = ptr NMTBGETINFOTIPA
   NMTBGETINFOTIPW* {.pure.} = object
     hdr*: NMHDR
@@ -466,6 +525,7 @@
     cchTextMax*: int32
     iItem*: int32
     lParam*: LPARAM
+
   LPNMTBGETINFOTIPW* = ptr NMTBGETINFOTIPW
   NMTBDISPINFOA* {.pure.} = object
     hdr*: NMHDR
@@ -475,6 +535,7 @@
     iImage*: int32
     pszText*: LPSTR
     cchText*: int32
+
   LPNMTBDISPINFOA* = ptr NMTBDISPINFOA
   NMTBDISPINFOW* {.pure.} = object
     hdr*: NMHDR
@@ -484,6 +545,7 @@
     iImage*: int32
     pszText*: LPWSTR
     cchText*: int32
+
   LPNMTBDISPINFOW* = ptr NMTBDISPINFOW
   NMTOOLBARA* {.pure.} = object
     hdr*: NMHDR
@@ -492,6 +554,7 @@
     cchText*: int32
     pszText*: LPSTR
     rcButton*: RECT
+
   TBNOTIFYA* = NMTOOLBARA
   NMTOOLBARW* {.pure.} = object
     hdr*: NMHDR
@@ -500,31 +563,29 @@
     cchText*: int32
     pszText*: LPWSTR
     rcButton*: RECT
+
   TBNOTIFYW* = NMTOOLBARW
   LPNMTOOLBARA* = ptr NMTOOLBARA
   LPTBNOTIFYA* = LPNMTOOLBARA
   LPNMTOOLBARW* = ptr NMTOOLBARW
   LPTBNOTIFYW* = LPNMTOOLBARW
+
 when winimUnicode:
-  type
-    NMTOOLBAR* = NMTOOLBARW
+  type NMTOOLBAR* = NMTOOLBARW
 when winimAnsi:
-  type
-    NMTOOLBAR* = NMTOOLBARA
-type
-  TBNOTIFY* = NMTOOLBAR
+  type NMTOOLBAR* = NMTOOLBARA
+type TBNOTIFY* = NMTOOLBAR
 when winimUnicode:
-  type
-    LPNMTOOLBAR* = LPNMTOOLBARW
+  type LPNMTOOLBAR* = LPNMTOOLBARW
 when winimAnsi:
-  type
-    LPNMTOOLBAR* = LPNMTOOLBARA
+  type LPNMTOOLBAR* = LPNMTOOLBARA
 type
   LPTBNOTIFY* = LPNMTOOLBAR
   REBARINFO* {.pure.} = object
     cbSize*: UINT
     fMask*: UINT
     himl*: HIMAGELIST
+
   LPREBARINFO* = ptr REBARINFO
   REBARBANDINFOA* {.pure.} = object
     cbSize*: UINT
@@ -549,6 +610,7 @@
     cxHeader*: UINT
     rcChevronLocation*: RECT
     uChevronState*: UINT
+
   LPREBARBANDINFOA* = ptr REBARBANDINFOA
   LPCREBARBANDINFOA* = ptr REBARBANDINFOA
   REBARBANDINFOW* {.pure.} = object
@@ -574,6 +636,7 @@
     cxHeader*: UINT
     rcChevronLocation*: RECT
     uChevronState*: UINT
+
   LPREBARBANDINFOW* = ptr REBARBANDINFOW
   LPCREBARBANDINFOW* = ptr REBARBANDINFOW
   NMREBARCHILDSIZE* {.pure.} = object
@@ -582,6 +645,7 @@
     wID*: UINT
     rcChild*: RECT
     rcBand*: RECT
+
   LPNMREBARCHILDSIZE* = ptr NMREBARCHILDSIZE
   NMREBAR* {.pure.} = object
     hdr*: NMHDR
@@ -590,12 +654,14 @@
     fStyle*: UINT
     wID*: UINT
     lParam*: LPARAM
+
   LPNMREBAR* = ptr NMREBAR
   NMRBAUTOSIZE* {.pure.} = object
     hdr*: NMHDR
     fChanged*: WINBOOL
     rcTarget*: RECT
     rcActual*: RECT
+
   LPNMRBAUTOSIZE* = ptr NMRBAUTOSIZE
   NMREBARCHEVRON* {.pure.} = object
     hdr*: NMHDR
@@ -604,10 +670,12 @@
     lParam*: LPARAM
     rc*: RECT
     lParamNM*: LPARAM
+
   LPNMREBARCHEVRON* = ptr NMREBARCHEVRON
   NMREBARSPLITTER* {.pure.} = object
     hdr*: NMHDR
     rcSizing*: RECT
+
   LPNMREBARSPLITTER* = ptr NMREBARSPLITTER
   NMREBARAUTOBREAK* {.pure.} = object
     hdr*: NMHDR
@@ -617,11 +685,13 @@
     uMsg*: UINT
     fStyleCurrent*: UINT
     fAutoBreak*: WINBOOL
+
   LPNMREBARAUTOBREAK* = ptr NMREBARAUTOBREAK
   RBHITTESTINFO* {.pure.} = object
     pt*: POINT
     flags*: UINT
     iBand*: int32
+
   LPRBHITTESTINFO* = ptr RBHITTESTINFO
   TTTOOLINFOA* {.pure.} = object
     cbSize*: UINT
@@ -633,6 +703,7 @@
     lpszText*: LPSTR
     lParam*: LPARAM
     lpReserved*: pointer
+
   LPTTTOOLINFOA* = ptr TTTOOLINFOA
   LPTOOLINFOA* = LPTTTOOLINFOA
   TTTOOLINFOW* {.pure.} = object
@@ -645,16 +716,16 @@
     lpszText*: LPWSTR
     lParam*: LPARAM
     lpReserved*: pointer
+
   LPTTTOOLINFOW* = ptr TTTOOLINFOW
   LPTOOLINFOW* = LPTTTOOLINFOW
   TOOLINFOA* = TTTOOLINFOA
   TOOLINFOW* = TTTOOLINFOW
+
 when winimUnicode:
-  type
-    LPTTTOOLINFO* = LPTTTOOLINFOW
+  type LPTTTOOLINFO* = LPTTTOOLINFOW
 when winimAnsi:
-  type
-    LPTTTOOLINFO* = LPTTTOOLINFOA
+  type LPTTTOOLINFO* = LPTTTOOLINFOA
 type
   LPTOOLINFO* = LPTTTOOLINFO
   PTOOLINFOA* = ptr TTTOOLINFOA
@@ -664,25 +735,27 @@
     uTitleBitmap*: UINT
     cch*: UINT
     pszTitle*: ptr WCHAR
+
   PTTGETTITLE* = ptr TTGETTITLE
   TTHITTESTINFOW* {.pure.} = object
     hwnd*: HWND
     pt*: POINT
     ti*: TTTOOLINFOW
+
   LPTTHITTESTINFOW* = ptr TTHITTESTINFOW
   LPHITTESTINFOW* = LPTTHITTESTINFOW
   TTHITTESTINFOA* {.pure.} = object
     hwnd*: HWND
     pt*: POINT
     ti*: TTTOOLINFOA
+
   LPTTHITTESTINFOA* = ptr TTHITTESTINFOA
   LPHITTESTINFOA* = LPTTHITTESTINFOA
+
 when winimUnicode:
-  type
-    LPTTHITTESTINFO* = LPTTHITTESTINFOW
+  type LPTTHITTESTINFO* = LPTTHITTESTINFOW
 when winimAnsi:
-  type
-    LPTTHITTESTINFO* = LPTTHITTESTINFOA
+  type LPTTHITTESTINFO* = LPTTHITTESTINFOA
 type
   LPHITTESTINFO* = LPTTHITTESTINFO
   NMTTDISPINFOW* {.pure.} = object
@@ -692,6 +765,7 @@
     hinst*: HINSTANCE
     uFlags*: UINT
     lParam*: LPARAM
+
   TOOLTIPTEXTW* = NMTTDISPINFOW
   NMTTDISPINFOA* {.pure.} = object
     hdr*: NMHDR
@@ -700,45 +774,47 @@
     hinst*: HINSTANCE
     uFlags*: UINT
     lParam*: LPARAM
+
   TOOLTIPTEXTA* = NMTTDISPINFOA
   LPNMTTDISPINFOA* = ptr NMTTDISPINFOA
   LPTOOLTIPTEXTA* = LPNMTTDISPINFOA
   LPNMTTDISPINFOW* = ptr NMTTDISPINFOW
   LPTOOLTIPTEXTW* = LPNMTTDISPINFOW
+
 when winimUnicode:
-  type
-    NMTTDISPINFO* = NMTTDISPINFOW
+  type NMTTDISPINFO* = NMTTDISPINFOW
 when winimAnsi:
-  type
-    NMTTDISPINFO* = NMTTDISPINFOA
-type
-  TOOLTIPTEXT* = NMTTDISPINFO
+  type NMTTDISPINFO* = NMTTDISPINFOA
+type TOOLTIPTEXT* = NMTTDISPINFO
 when winimUnicode:
-  type
-    LPNMTTDISPINFO* = LPNMTTDISPINFOW
+  type LPNMTTDISPINFO* = LPNMTTDISPINFOW
 when winimAnsi:
-  type
-    LPNMTTDISPINFO* = LPNMTTDISPINFOA
+  type LPNMTTDISPINFO* = LPNMTTDISPINFOA
 type
   LPTOOLTIPTEXT* = LPNMTTDISPINFO
   DRAGLISTINFO* {.pure.} = object
     uNotification*: UINT
     hWnd*: HWND
     ptCursor*: POINT
+
   LPDRAGLISTINFO* = ptr DRAGLISTINFO
   UDACCEL* {.pure.} = object
     nSec*: UINT
     nInc*: UINT
+
   LPUDACCEL* = ptr UDACCEL
   NMUPDOWN* {.pure.} = object
     hdr*: NMHDR
     iPos*: int32
     iDelta*: int32
+
   LPNMUPDOWN* = ptr NMUPDOWN
   PBRANGE* {.pure.} = object
     iLow*: int32
     iHigh*: int32
+
   PPBRANGE* = ptr PBRANGE
+
 const
   MAX_LINKID_TEXT* = 48
   L_MAX_URL_LENGTH* = 2084
@@ -750,14 +826,17 @@
     stateMask*: UINT
     szID*: array[MAX_LINKID_TEXT, WCHAR]
     szUrl*: array[L_MAX_URL_LENGTH, WCHAR]
+
   PLITEM* = ptr LITEM
   LHITTESTINFO* {.pure.} = object
     pt*: POINT
     item*: LITEM
+
   PLHITTESTINFO* = ptr LHITTESTINFO
   NMLINK* {.pure.} = object
     hdr*: NMHDR
     item*: LITEM
+
   PNMLINK* = ptr NMLINK
   LVITEMA* {.pure.} = object
     mask*: UINT
@@ -775,6 +854,7 @@
     puColumns*: PUINT
     piColFmt*: ptr int32
     iGroup*: int32
+
   LPLVITEMA* = ptr LVITEMA
   LVITEMW* {.pure.} = object
     mask*: UINT
@@ -792,6 +872,7 @@
     puColumns*: PUINT
     piColFmt*: ptr int32
     iGroup*: int32
+
   LPLVITEMW* = ptr LVITEMW
   LVFINDINFOA* {.pure.} = object
     flags*: UINT
@@ -799,6 +880,7 @@
     lParam*: LPARAM
     pt*: POINT
     vkDirection*: UINT
+
   LPFINDINFOA* = ptr LVFINDINFOA
   LVFINDINFOW* {.pure.} = object
     flags*: UINT
@@ -806,6 +888,7 @@
     lParam*: LPARAM
     pt*: POINT
     vkDirection*: UINT
+
   LPFINDINFOW* = ptr LVFINDINFOW
   LVHITTESTINFO* {.pure.} = object
     pt*: POINT
@@ -813,6 +896,7 @@
     iItem*: int32
     iSubItem*: int32
     iGroup*: int32
+
   LPLVHITTESTINFO* = ptr LVHITTESTINFO
   LVCOLUMNA* {.pure.} = object
     mask*: UINT
@@ -826,6 +910,7 @@
     cxMin*: int32
     cxDefault*: int32
     cxIdeal*: int32
+
   LPLVCOLUMNA* = ptr LVCOLUMNA
   LVCOLUMNW* {.pure.} = object
     mask*: UINT
@@ -839,6 +924,7 @@
     cxMin*: int32
     cxDefault*: int32
     cxIdeal*: int32
+
   LPLVCOLUMNW* = ptr LVCOLUMNW
   LVBKIMAGEA* {.pure.} = object
     ulFlags*: ULONG
@@ -847,6 +933,7 @@
     cchImageMax*: UINT
     xOffsetPercent*: int32
     yOffsetPercent*: int32
+
   LPLVBKIMAGEA* = ptr LVBKIMAGEA
   LVBKIMAGEW* {.pure.} = object
     ulFlags*: ULONG
@@ -855,6 +942,7 @@
     cchImageMax*: UINT
     xOffsetPercent*: int32
     yOffsetPercent*: int32
+
   LPLVBKIMAGEW* = ptr LVBKIMAGEW
   LVGROUP* {.pure.} = object
     cbSize*: UINT
@@ -881,6 +969,7 @@
     cItems*: UINT
     pszSubsetTitle*: LPWSTR
     cchSubsetTitle*: UINT
+
   PLVGROUP* = ptr LVGROUP
   LVGROUPMETRICS* {.pure.} = object
     cbSize*: UINT
@@ -895,12 +984,14 @@
     crBottom*: COLORREF
     crHeader*: COLORREF
     crFooter*: COLORREF
+
   PLVGROUPMETRICS* = ptr LVGROUPMETRICS
-  PFNLVGROUPCOMPARE* = proc (P1: int32, P2: int32, P3: pointer): int32 {.stdcall.}
+  PFNLVGROUPCOMPARE* = proc(P1: int32, P2: int32, P3: pointer): int32 {.stdcall.}
   LVINSERTGROUPSORTED* {.pure.} = object
     pfnGroupCompare*: PFNLVGROUPCOMPARE
     pvData*: pointer
     lvGroup*: LVGROUP
+
   PLVINSERTGROUPSORTED* = ptr LVINSERTGROUPSORTED
   LVTILEVIEWINFO* {.pure.} = object
     cbSize*: UINT
@@ -909,6 +1000,7 @@
     sizeTile*: SIZE
     cLines*: int32
     rcLabelMargin*: RECT
+
   PLVTILEVIEWINFO* = ptr LVTILEVIEWINFO
   LVTILEINFO* {.pure.} = object
     cbSize*: UINT
@@ -916,12 +1008,14 @@
     cColumns*: UINT
     puColumns*: PUINT
     piColFmt*: ptr int32
+
   PLVTILEINFO* = ptr LVTILEINFO
   LVINSERTMARK* {.pure.} = object
     cbSize*: UINT
     dwFlags*: DWORD
     iItem*: int32
     dwReserved*: DWORD
+
   LPLVINSERTMARK* = ptr LVINSERTMARK
   LVSETINFOTIP* {.pure.} = object
     cbSize*: UINT
@@ -929,12 +1023,14 @@
     pszText*: LPWSTR
     iItem*: int32
     iSubItem*: int32
+
   PLVSETINFOTIP* = ptr LVSETINFOTIP
   LVFOOTERINFO* {.pure.} = object
     mask*: UINT
     pszText*: LPWSTR
     cchTextMax*: int32
     cItems*: UINT
+
   LPLVFOOTERINFO* = ptr LVFOOTERINFO
   LVFOOTERITEM* {.pure.} = object
     mask*: UINT
@@ -943,10 +1039,12 @@
     cchTextMax*: int32
     state*: UINT
     stateMask*: UINT
+
   LPLVFOOTERITEM* = ptr LVFOOTERITEM
   LVITEMINDEX* {.pure.} = object
     iItem*: int32
     iGroup*: int32
+
   PLVITEMINDEX* = ptr LVITEMINDEX
   NMLISTVIEW* {.pure.} = object
     hdr*: NMHDR
@@ -957,6 +1055,7 @@
     uChanged*: UINT
     ptAction*: POINT
     lParam*: LPARAM
+
   LPNMLISTVIEW* = ptr NMLISTVIEW
   NMITEMACTIVATE* {.pure.} = object
     hdr*: NMHDR
@@ -968,6 +1067,7 @@
     ptAction*: POINT
     lParam*: LPARAM
     uKeyFlags*: UINT
+
   LPNMITEMACTIVATE* = ptr NMITEMACTIVATE
   NMLVCUSTOMDRAW* {.pure.} = object
     nmcd*: TNMCUSTOMDRAW
@@ -982,11 +1082,13 @@
     iStateId*: int32
     rcText*: RECT
     uAlign*: UINT
+
   LPNMLVCUSTOMDRAW* = ptr NMLVCUSTOMDRAW
   NMLVCACHEHINT* {.pure.} = object
     hdr*: NMHDR
     iFrom*: int32
     iTo*: int32
+
   LPNMLVCACHEHINT* = ptr NMLVCACHEHINT
   LPNM_CACHEHINT* = LPNMLVCACHEHINT
   PNM_CACHEHINT* = LPNMLVCACHEHINT
@@ -995,11 +1097,13 @@
     hdr*: NMHDR
     iStart*: int32
     lvfi*: LVFINDINFOA
+
   LPNMLVFINDITEMA* = ptr NMLVFINDITEMA
   NMLVFINDITEMW* {.pure.} = object
     hdr*: NMHDR
     iStart*: int32
     lvfi*: LVFINDINFOW
+
   LPNMLVFINDITEMW* = ptr NMLVFINDITEMW
   PNM_FINDITEMA* = LPNMLVFINDITEMA
   LPNM_FINDITEMA* = LPNMLVFINDITEMA
@@ -1013,6 +1117,7 @@
     iTo*: int32
     uNewState*: UINT
     uOldState*: UINT
+
   LPNMLVODSTATECHANGE* = ptr NMLVODSTATECHANGE
   PNM_ODSTATECHANGE* = LPNMLVODSTATECHANGE
   LPNM_ODSTATECHANGE* = LPNMLVODSTATECHANGE
@@ -1020,17 +1125,18 @@
   NMLVDISPINFOA* {.pure.} = object
     hdr*: NMHDR
     item*: LVITEMA
+
   LV_DISPINFOA* = NMLVDISPINFOA
   NMLVDISPINFOW* {.pure.} = object
     hdr*: NMHDR
     item*: LVITEMW
+
   LV_DISPINFOW* = NMLVDISPINFOW
+
 when winimUnicode:
-  type
-    NMLVDISPINFO* = NMLVDISPINFOW
+  type NMLVDISPINFO* = NMLVDISPINFOW
 when winimAnsi:
-  type
-    NMLVDISPINFO* = NMLVDISPINFOA
+  type NMLVDISPINFO* = NMLVDISPINFOA
 type
   LV_DISPINFO* = NMLVDISPINFO
   LPNMLVDISPINFOA* = ptr NMLVDISPINFOA
@@ -1039,6 +1145,7 @@
     hdr*: NMHDR
     wVKey*: WORD
     flags*: UINT
+
   LV_KEYDOWN* = NMLVKEYDOWN
   LPNMLVKEYDOWN* = ptr NMLVKEYDOWN
   NMLVLINK* {.pure.} = object
@@ -1046,6 +1153,7 @@
     link*: LITEM
     iItem*: int32
     iSubItem*: int32
+
   PNMLVLINK* = ptr NMLVLINK
   NMLVGETINFOTIPA* {.pure.} = object
     hdr*: NMHDR
@@ -1055,6 +1163,7 @@
     iItem*: int32
     iSubItem*: int32
     lParam*: LPARAM
+
   LPNMLVGETINFOTIPA* = ptr NMLVGETINFOTIPA
   NMLVGETINFOTIPW* {.pure.} = object
     hdr*: NMHDR
@@ -1064,17 +1173,20 @@
     iItem*: int32
     iSubItem*: int32
     lParam*: LPARAM
+
   LPNMLVGETINFOTIPW* = ptr NMLVGETINFOTIPW
   NMLVSCROLL* {.pure.} = object
     hdr*: NMHDR
     dx*: int32
     dy*: int32
+
   LPNMLVSCROLL* = ptr NMLVSCROLL
   TNMTVSTATEIMAGECHANGING* {.pure.} = object
     hdr*: NMHDR
     hti*: HTREEITEM
     iOldStateImageIndex*: int32
     iNewStateImageIndex*: int32
+
   LPNMTVSTATEIMAGECHANGING* = ptr TNMTVSTATEIMAGECHANGING
   TVITEMA* {.pure.} = object
     mask*: UINT
@@ -1087,6 +1199,7 @@
     iSelectedImage*: int32
     cChildren*: int32
     lParam*: LPARAM
+
   LPTVITEMA* = ptr TVITEMA
   TVITEMW* {.pure.} = object
     mask*: UINT
@@ -1099,6 +1212,7 @@
     iSelectedImage*: int32
     cChildren*: int32
     lParam*: LPARAM
+
   LPTVITEMW* = ptr TVITEMW
   TVITEMEXA* {.pure.} = object
     mask*: UINT
@@ -1116,6 +1230,7 @@
     hwnd*: HWND
     iExpandedImage*: int32
     iReserved*: int32
+
   LPTVITEMEXA* = ptr TVITEMEXA
   TVITEMEXW* {.pure.} = object
     mask*: UINT
@@ -1133,33 +1248,41 @@
     hwnd*: HWND
     iExpandedImage*: int32
     iReserved*: int32
+
   LPTVITEMEXW* = ptr TVITEMEXW
   TVINSERTSTRUCTA_UNION1* {.pure, union.} = object
     itemex*: TVITEMEXA
     item*: TV_ITEMA
+
   TVINSERTSTRUCTA* {.pure.} = object
     hParent*: HTREEITEM
     hInsertAfter*: HTREEITEM
     union1*: TVINSERTSTRUCTA_UNION1
+
   LPTVINSERTSTRUCTA* = ptr TVINSERTSTRUCTA
   TVINSERTSTRUCTW_UNION1* {.pure, union.} = object
     itemex*: TVITEMEXW
     item*: TV_ITEMW
+
   TVINSERTSTRUCTW* {.pure.} = object
     hParent*: HTREEITEM
     hInsertAfter*: HTREEITEM
     union1*: TVINSERTSTRUCTW_UNION1
+
   LPTVINSERTSTRUCTW* = ptr TVINSERTSTRUCTW
   TVHITTESTINFO* {.pure.} = object
     pt*: POINT
     flags*: UINT
     hItem*: HTREEITEM
+
   LPTVHITTESTINFO* = ptr TVHITTESTINFO
-  PFNTVCOMPARE* = proc (lParam1: LPARAM, lParam2: LPARAM, lParamSort: LPARAM): int32 {.stdcall.}
+  PFNTVCOMPARE* =
+    proc(lParam1: LPARAM, lParam2: LPARAM, lParamSort: LPARAM): int32 {.stdcall.}
   TVSORTCB* {.pure.} = object
     hParent*: HTREEITEM
     lpfnCompare*: PFNTVCOMPARE
     lParam*: LPARAM
+
   LPTVSORTCB* = ptr TVSORTCB
   NMTREEVIEWA* {.pure.} = object
     hdr*: NMHDR
@@ -1167,6 +1290,7 @@
     itemOld*: TVITEMA
     itemNew*: TVITEMA
     ptDrag*: POINT
+
   LPNMTREEVIEWA* = ptr NMTREEVIEWA
   NMTREEVIEWW* {.pure.} = object
     hdr*: NMHDR
@@ -1174,21 +1298,23 @@
     itemOld*: TVITEMW
     itemNew*: TVITEMW
     ptDrag*: POINT
+
   LPNMTREEVIEWW* = ptr NMTREEVIEWW
   NMTVDISPINFOA* {.pure.} = object
     hdr*: NMHDR
     item*: TVITEMA
+
   TV_DISPINFOA* = NMTVDISPINFOA
   NMTVDISPINFOW* {.pure.} = object
     hdr*: NMHDR
     item*: TVITEMW
+
   TV_DISPINFOW* = NMTVDISPINFOW
+
 when winimUnicode:
-  type
-    NMTVDISPINFO* = NMTVDISPINFOW
+  type NMTVDISPINFO* = NMTVDISPINFOW
 when winimAnsi:
-  type
-    NMTVDISPINFO* = NMTVDISPINFOA
+  type NMTVDISPINFO* = NMTVDISPINFOA
 type
   TV_DISPINFO* = NMTVDISPINFO
   LPNMTVDISPINFOA* = ptr NMTVDISPINFOA
@@ -1196,25 +1322,27 @@
   NMTVDISPINFOEXA* {.pure.} = object
     hdr*: NMHDR
     item*: TVITEMEXA
+
   LPNMTVDISPINFOEXA* = ptr NMTVDISPINFOEXA
   NMTVDISPINFOEXW* {.pure.} = object
     hdr*: NMHDR
     item*: TVITEMEXW
+
   LPNMTVDISPINFOEXW* = ptr NMTVDISPINFOEXW
   TV_DISPINFOEXA* = NMTVDISPINFOEXA
   TV_DISPINFOEXW* = NMTVDISPINFOEXW
+
 when winimUnicode:
-  type
-    NMTVDISPINFOEX* = NMTVDISPINFOEXW
+  type NMTVDISPINFOEX* = NMTVDISPINFOEXW
 when winimAnsi:
-  type
-    NMTVDISPINFOEX* = NMTVDISPINFOEXA
+  type NMTVDISPINFOEX* = NMTVDISPINFOEXA
 type
   TV_DISPINFOEX* = NMTVDISPINFOEX
   NMTVKEYDOWN* {.pure, packed.} = object
     hdr*: NMHDR
     wVKey*: WORD
     flags*: UINT
+
   TV_KEYDOWN* = NMTVKEYDOWN
   LPNMTVKEYDOWN* = ptr NMTVKEYDOWN
   NMTVCUSTOMDRAW* {.pure.} = object
@@ -1222,6 +1350,7 @@
     clrText*: COLORREF
     clrTextBk*: COLORREF
     iLevel*: int32
+
   LPNMTVCUSTOMDRAW* = ptr NMTVCUSTOMDRAW
   NMTVGETINFOTIPA* {.pure.} = object
     hdr*: NMHDR
@@ -1229,6 +1358,7 @@
     cchTextMax*: int32
     hItem*: HTREEITEM
     lParam*: LPARAM
+
   LPNMTVGETINFOTIPA* = ptr NMTVGETINFOTIPA
   NMTVGETINFOTIPW* {.pure.} = object
     hdr*: NMHDR
@@ -1236,6 +1366,7 @@
     cchTextMax*: int32
     hItem*: HTREEITEM
     lParam*: LPARAM
+
   LPNMTVGETINFOTIPW* = ptr NMTVGETINFOTIPW
   COMBOBOXEXITEMA* {.pure.} = object
     mask*: UINT
@@ -1247,6 +1378,7 @@
     iOverlay*: int32
     iIndent*: int32
     lParam*: LPARAM
+
   PCOMBOBOXEXITEMA* = ptr COMBOBOXEXITEMA
   PCCOMBOEXITEMA* = ptr COMBOBOXEXITEMA
   COMBOBOXEXITEMW* {.pure.} = object
@@ -1259,29 +1391,34 @@
     iOverlay*: int32
     iIndent*: int32
     lParam*: LPARAM
+
   PCOMBOBOXEXITEMW* = ptr COMBOBOXEXITEMW
   PCCOMBOEXITEMW* = ptr COMBOBOXEXITEMW
   NMCOMBOBOXEXA* {.pure.} = object
     hdr*: NMHDR
     ceItem*: COMBOBOXEXITEMA
+
   PNMCOMBOBOXEXA* = ptr NMCOMBOBOXEXA
   NMCOMBOBOXEXW* {.pure.} = object
     hdr*: NMHDR
     ceItem*: COMBOBOXEXITEMW
+
   PNMCOMBOBOXEXW* = ptr NMCOMBOBOXEXW
-const
-  CBEMAXSTRLEN* = 260
+
+const CBEMAXSTRLEN* = 260
 type
   NMCBEDRAGBEGINW* {.pure.} = object
     hdr*: NMHDR
     iItemid*: int32
     szText*: array[CBEMAXSTRLEN, WCHAR]
+
   LPNMCBEDRAGBEGINW* = ptr NMCBEDRAGBEGINW
   PNMCBEDRAGBEGINW* = ptr NMCBEDRAGBEGINW
   NMCBEDRAGBEGINA* {.pure.} = object
     hdr*: NMHDR
     iItemid*: int32
     szText*: array[CBEMAXSTRLEN, char]
+
   LPNMCBEDRAGBEGINA* = ptr NMCBEDRAGBEGINA
   PNMCBEDRAGBEGINA* = ptr NMCBEDRAGBEGINA
   NMCBEENDEDITW* {.pure.} = object
@@ -1290,6 +1427,7 @@
     iNewSelection*: int32
     szText*: array[CBEMAXSTRLEN, WCHAR]
     iWhy*: int32
+
   LPNMCBEENDEDITW* = ptr NMCBEENDEDITW
   PNMCBEENDEDITW* = ptr NMCBEENDEDITW
   NMCBEENDEDITA* {.pure.} = object
@@ -1298,6 +1436,7 @@
     iNewSelection*: int32
     szText*: array[CBEMAXSTRLEN, char]
     iWhy*: int32
+
   LPNMCBEENDEDITA* = ptr NMCBEENDEDITA
   PNMCBEENDEDITA* = ptr NMCBEENDEDITA
   TCITEMHEADERA* {.pure.} = object
@@ -1307,6 +1446,7 @@
     pszText*: LPSTR
     cchTextMax*: int32
     iImage*: int32
+
   LPTCITEMHEADERA* = ptr TCITEMHEADERA
   TCITEMHEADERW* {.pure.} = object
     mask*: UINT
@@ -1315,6 +1455,7 @@
     pszText*: LPWSTR
     cchTextMax*: int32
     iImage*: int32
+
   LPTCITEMHEADERW* = ptr TCITEMHEADERW
   TCITEMA* {.pure.} = object
     mask*: UINT
@@ -1324,6 +1465,7 @@
     cchTextMax*: int32
     iImage*: int32
     lParam*: LPARAM
+
   LPTCITEMA* = ptr TCITEMA
   TCITEMW* {.pure.} = object
     mask*: UINT
@@ -1333,15 +1475,18 @@
     cchTextMax*: int32
     iImage*: int32
     lParam*: LPARAM
+
   LPTCITEMW* = ptr TCITEMW
   TCHITTESTINFO* {.pure.} = object
     pt*: POINT
     flags*: UINT
+
   LPTCHITTESTINFO* = ptr TCHITTESTINFO
   NMTCKEYDOWN* {.pure, packed.} = object
     hdr*: NMHDR
     wVKey*: WORD
     flags*: UINT
+
   TC_KEYDOWN* = NMTCKEYDOWN
   MCHITTESTINFO* {.pure.} = object
     cbSize*: UINT
@@ -1352,6 +1497,7 @@
     iOffset*: int32
     iRow*: int32
     iCol*: int32
+
   PMCHITTESTINFO* = ptr MCHITTESTINFO
   MCGRIDINFO* {.pure.} = object
     cbSize*: UINT
@@ -1366,17 +1512,20 @@
     rc*: RECT
     pszName*: PWSTR
     cchName*: int
+
   PMCGRIDINFO* = ptr MCGRIDINFO
   NMSELCHANGE* {.pure.} = object
     nmhdr*: NMHDR
     stSelStart*: SYSTEMTIME
     stSelEnd*: SYSTEMTIME
+
   LPNMSELCHANGE* = ptr NMSELCHANGE
   NMDAYSTATE* {.pure.} = object
     nmhdr*: NMHDR
     stStart*: SYSTEMTIME
     cDayState*: int32
     prgDayState*: LPMONTHDAYSTATE
+
   LPNMDAYSTATE* = ptr NMDAYSTATE
   NMSELECT* = NMSELCHANGE
   LPNMSELECT* = ptr NMSELCHANGE
@@ -1384,6 +1533,7 @@
     nmhdr*: NMHDR
     dwOldView*: DWORD
     dwNewView*: DWORD
+
   LPNMVIEWCHANGE* = ptr NMVIEWCHANGE
   DATETIMEPICKERINFO* {.pure.} = object
     cbSize*: DWORD
@@ -1394,35 +1544,41 @@
     hwndEdit*: HWND
     hwndUD*: HWND
     hwndDropDown*: HWND
+
   LPDATETIMEPICKERINFO* = ptr DATETIMEPICKERINFO
   NMDATETIMECHANGE* {.pure.} = object
     nmhdr*: NMHDR
     dwFlags*: DWORD
     st*: SYSTEMTIME
+
   LPNMDATETIMECHANGE* = ptr NMDATETIMECHANGE
   NMDATETIMESTRINGA* {.pure.} = object
     nmhdr*: NMHDR
     pszUserString*: LPCSTR
     st*: SYSTEMTIME
     dwFlags*: DWORD
+
   LPNMDATETIMESTRINGA* = ptr NMDATETIMESTRINGA
   NMDATETIMESTRINGW* {.pure.} = object
     nmhdr*: NMHDR
     pszUserString*: LPCWSTR
     st*: SYSTEMTIME
     dwFlags*: DWORD
+
   LPNMDATETIMESTRINGW* = ptr NMDATETIMESTRINGW
   NMDATETIMEWMKEYDOWNA* {.pure.} = object
     nmhdr*: NMHDR
     nVirtKey*: int32
     pszFormat*: LPCSTR
     st*: SYSTEMTIME
+
   LPNMDATETIMEWMKEYDOWNA* = ptr NMDATETIMEWMKEYDOWNA
   NMDATETIMEWMKEYDOWNW* {.pure.} = object
     nmhdr*: NMHDR
     nVirtKey*: int32
     pszFormat*: LPCWSTR
     st*: SYSTEMTIME
+
   LPNMDATETIMEWMKEYDOWNW* = ptr NMDATETIMEWMKEYDOWNW
   NMDATETIMEFORMATA* {.pure.} = object
     nmhdr*: NMHDR
@@ -1430,6 +1586,7 @@
     st*: SYSTEMTIME
     pszDisplay*: LPCSTR
     szDisplay*: array[64, CHAR]
+
   LPNMDATETIMEFORMATA* = ptr NMDATETIMEFORMATA
   NMDATETIMEFORMATW* {.pure.} = object
     nmhdr*: NMHDR
@@ -1437,21 +1594,25 @@
     st*: SYSTEMTIME
     pszDisplay*: LPCWSTR
     szDisplay*: array[64, WCHAR]
+
   LPNMDATETIMEFORMATW* = ptr NMDATETIMEFORMATW
   NMDATETIMEFORMATQUERYA* {.pure.} = object
     nmhdr*: NMHDR
     pszFormat*: LPCSTR
     szMax*: SIZE
+
   LPNMDATETIMEFORMATQUERYA* = ptr NMDATETIMEFORMATQUERYA
   NMDATETIMEFORMATQUERYW* {.pure.} = object
     nmhdr*: NMHDR
     pszFormat*: LPCWSTR
     szMax*: SIZE
+
   LPNMDATETIMEFORMATQUERYW* = ptr NMDATETIMEFORMATQUERYW
   NMIPADDRESS* {.pure.} = object
     hdr*: NMHDR
     iField*: int32
     iValue*: int32
+
   LPNMIPADDRESS* = ptr NMIPADDRESS
   NMPGSCROLL* {.pure, packed.} = object
     hdr*: NMHDR
@@ -1461,64 +1622,70 @@
     iXpos*: int32
     iYpos*: int32
     iScroll*: int32
+
   LPNMPGSCROLL* = ptr NMPGSCROLL
   NMPGCALCSIZE* {.pure.} = object
     hdr*: NMHDR
     dwFlag*: DWORD
     iWidth*: int32
     iHeight*: int32
+
   LPNMPGCALCSIZE* = ptr NMPGCALCSIZE
   NMPGHOTITEM* {.pure.} = object
     hdr*: NMHDR
     idOld*: int32
     idNew*: int32
     dwFlags*: DWORD
+
   LPNMPGHOTITEM* = ptr NMPGHOTITEM
   BUTTON_IMAGELIST* {.pure.} = object
     himl*: HIMAGELIST
     margin*: RECT
     uAlign*: UINT
+
   PBUTTON_IMAGELIST* = ptr BUTTON_IMAGELIST
   NMBCHOTITEM* {.pure.} = object
     hdr*: NMHDR
     dwFlags*: DWORD
+
   LPNMBCHOTITEM* = ptr NMBCHOTITEM
   BUTTON_SPLITINFO* {.pure.} = object
     mask*: UINT
     himlGlyph*: HIMAGELIST
     uSplitStyle*: UINT
     size*: SIZE
+
   PBUTTON_SPLITINFO* = ptr BUTTON_SPLITINFO
   NMBCDROPDOWN* {.pure.} = object
     hdr*: NMHDR
     rcButton*: RECT
+
   LPNMBCDROPDOWN* = ptr NMBCDROPDOWN
   EDITBALLOONTIP* {.pure.} = object
     cbStruct*: DWORD
     pszTitle*: LPCWSTR
     pszText*: LPCWSTR
     ttiIcon*: INT
+
   PEDITBALLOONTIP* = ptr EDITBALLOONTIP
-  PFNDAENUMCALLBACK* = proc (p: pointer, pData: pointer): int32 {.stdcall.}
+  PFNDAENUMCALLBACK* = proc(p: pointer, pData: pointer): int32 {.stdcall.}
   PFNDSAENUMCALLBACK* = PFNDAENUMCALLBACK
-  PFNDAENUMCALLBACKCONST* = proc (p: pointer, pData: pointer): int32 {.stdcall.}
+  PFNDAENUMCALLBACKCONST* = proc(p: pointer, pData: pointer): int32 {.stdcall.}
   PFNDSAENUMCALLBACKCONST* = PFNDAENUMCALLBACKCONST
-  PFNDACOMPARE* = proc (p1: pointer, p2: pointer, lParam: LPARAM): int32 {.stdcall.}
+  PFNDACOMPARE* = proc(p1: pointer, p2: pointer, lParam: LPARAM): int32 {.stdcall.}
   PFNDSACOMPARE* = PFNDACOMPARE
-  PFNDACOMPARECONST* = proc (p1: pointer, p2: pointer, lParam: LPARAM): int32 {.stdcall.}
+  PFNDACOMPARECONST* = proc(p1: pointer, p2: pointer, lParam: LPARAM): int32 {.stdcall.}
   PFNDSACOMPARECONST* = PFNDACOMPARECONST
   PFNDPAENUMCALLBACK* = PFNDAENUMCALLBACK
   PFNDPAENUMCALLBACKCONST* = PFNDAENUMCALLBACKCONST
   PFNDPACOMPARE* = PFNDACOMPARE
   PFNDPACOMPARECONST* = PFNDACOMPARECONST
+
 when winimUnicode:
-  type
-    TTTOOLINFO* = TTTOOLINFOW
+  type TTTOOLINFO* = TTTOOLINFOW
 when winimAnsi:
-  type
-    TTTOOLINFO* = TTTOOLINFOA
-type
-  TOOLINFO* = TTTOOLINFO
+  type TTTOOLINFO* = TTTOOLINFOA
+type TOOLINFO* = TTTOOLINFO
 const
   MAXPROPPAGES* = 100
   PSP_DEFAULT* = 0x00000000
@@ -1565,42 +1732,42 @@
   PSCB_INITIALIZED* = 1
   PSCB_PRECREATE* = 2
   PSCB_BUTTONPRESSED* = 3
-  PSN_FIRST* = 0-200
-  PSN_LAST* = 0-299
-  PSN_SETACTIVE* = PSN_FIRST-0
-  PSN_KILLACTIVE* = PSN_FIRST-1
-  PSN_APPLY* = PSN_FIRST-2
-  PSN_RESET* = PSN_FIRST-3
-  PSN_HELP* = PSN_FIRST-5
-  PSN_WIZBACK* = PSN_FIRST-6
-  PSN_WIZNEXT* = PSN_FIRST-7
-  PSN_WIZFINISH* = PSN_FIRST-8
-  PSN_QUERYCANCEL* = PSN_FIRST-9
-  PSN_GETOBJECT* = PSN_FIRST-10
-  PSN_TRANSLATEACCELERATOR* = PSN_FIRST-12
-  PSN_QUERYINITIALFOCUS* = PSN_FIRST-13
+  PSN_FIRST* = 0 - 200
+  PSN_LAST* = 0 - 299
+  PSN_SETACTIVE* = PSN_FIRST - 0
+  PSN_KILLACTIVE* = PSN_FIRST - 1
+  PSN_APPLY* = PSN_FIRST - 2
+  PSN_RESET* = PSN_FIRST - 3
+  PSN_HELP* = PSN_FIRST - 5
+  PSN_WIZBACK* = PSN_FIRST - 6
+  PSN_WIZNEXT* = PSN_FIRST - 7
+  PSN_WIZFINISH* = PSN_FIRST - 8
+  PSN_QUERYCANCEL* = PSN_FIRST - 9
+  PSN_GETOBJECT* = PSN_FIRST - 10
+  PSN_TRANSLATEACCELERATOR* = PSN_FIRST - 12
+  PSN_QUERYINITIALFOCUS* = PSN_FIRST - 13
   PSNRET_NOERROR* = 0
   PSNRET_INVALID* = 1
   PSNRET_INVALID_NOCHANGEPAGE* = 2
   PSNRET_MESSAGEHANDLED* = 3
-  PSM_SETCURSEL* = WM_USER+101
-  PSM_REMOVEPAGE* = WM_USER+102
-  PSM_ADDPAGE* = WM_USER+103
-  PSM_CHANGED* = WM_USER+104
-  PSM_RESTARTWINDOWS* = WM_USER+105
-  PSM_REBOOTSYSTEM* = WM_USER+106
-  PSM_CANCELTOCLOSE* = WM_USER+107
-  PSM_QUERYSIBLINGS* = WM_USER+108
-  PSM_UNCHANGED* = WM_USER+109
-  PSM_APPLY* = WM_USER+110
-  PSM_SETTITLEA* = WM_USER+111
-  PSM_SETTITLEW* = WM_USER+120
-  PSM_SETWIZBUTTONS* = WM_USER+112
+  PSM_SETCURSEL* = WM_USER + 101
+  PSM_REMOVEPAGE* = WM_USER + 102
+  PSM_ADDPAGE* = WM_USER + 103
+  PSM_CHANGED* = WM_USER + 104
+  PSM_RESTARTWINDOWS* = WM_USER + 105
+  PSM_REBOOTSYSTEM* = WM_USER + 106
+  PSM_CANCELTOCLOSE* = WM_USER + 107
+  PSM_QUERYSIBLINGS* = WM_USER + 108
+  PSM_UNCHANGED* = WM_USER + 109
+  PSM_APPLY* = WM_USER + 110
+  PSM_SETTITLEA* = WM_USER + 111
+  PSM_SETTITLEW* = WM_USER + 120
+  PSM_SETWIZBUTTONS* = WM_USER + 112
   PSWIZB_BACK* = 0x00000001
   PSWIZB_NEXT* = 0x00000002
   PSWIZB_FINISH* = 0x00000004
   PSWIZB_DISABLEDFINISH* = 0x00000008
-  PSM_PRESSBUTTON* = WM_USER+113
+  PSM_PRESSBUTTON* = WM_USER + 113
   PSBTN_BACK* = 0
   PSBTN_NEXT* = 1
   PSBTN_FINISH* = 2
@@ -1609,25 +1776,25 @@
   PSBTN_CANCEL* = 5
   PSBTN_HELP* = 6
   PSBTN_MAX* = 6
-  PSM_SETCURSELID* = WM_USER+114
-  PSM_SETFINISHTEXTA* = WM_USER+115
-  PSM_SETFINISHTEXTW* = WM_USER+121
-  PSM_GETTABCONTROL* = WM_USER+116
-  PSM_ISDIALOGMESSAGE* = WM_USER+117
-  PSM_GETCURRENTPAGEHWND* = WM_USER+118
-  PSM_INSERTPAGE* = WM_USER+119
-  PSM_SETHEADERTITLEA* = WM_USER+125
-  PSM_SETHEADERTITLEW* = WM_USER+126
-  PSM_SETHEADERSUBTITLEA* = WM_USER+127
-  PSM_SETHEADERSUBTITLEW* = WM_USER+128
-  PSM_HWNDTOINDEX* = WM_USER+129
-  PSM_INDEXTOHWND* = WM_USER+130
-  PSM_PAGETOINDEX* = WM_USER+131
-  PSM_INDEXTOPAGE* = WM_USER+132
-  PSM_IDTOINDEX* = WM_USER+133
-  PSM_INDEXTOID* = WM_USER+134
-  PSM_GETRESULT* = WM_USER+135
-  PSM_RECALCPAGESIZES* = WM_USER+136
+  PSM_SETCURSELID* = WM_USER + 114
+  PSM_SETFINISHTEXTA* = WM_USER + 115
+  PSM_SETFINISHTEXTW* = WM_USER + 121
+  PSM_GETTABCONTROL* = WM_USER + 116
+  PSM_ISDIALOGMESSAGE* = WM_USER + 117
+  PSM_GETCURRENTPAGEHWND* = WM_USER + 118
+  PSM_INSERTPAGE* = WM_USER + 119
+  PSM_SETHEADERTITLEA* = WM_USER + 125
+  PSM_SETHEADERTITLEW* = WM_USER + 126
+  PSM_SETHEADERSUBTITLEA* = WM_USER + 127
+  PSM_SETHEADERSUBTITLEW* = WM_USER + 128
+  PSM_HWNDTOINDEX* = WM_USER + 129
+  PSM_INDEXTOHWND* = WM_USER + 130
+  PSM_PAGETOINDEX* = WM_USER + 131
+  PSM_INDEXTOPAGE* = WM_USER + 132
+  PSM_IDTOINDEX* = WM_USER + 133
+  PSM_INDEXTOID* = WM_USER + 134
+  PSM_GETRESULT* = WM_USER + 135
+  PSM_RECALCPAGESIZES* = WM_USER + 136
   ID_PSRESTARTWINDOWS* = 0x2
   ID_PSREBOOTSYSTEM* = ID_PSRESTARTWINDOWS or 0x1
   WIZ_CXDLG* = 276
@@ -1670,82 +1837,82 @@
   BCM_FIRST* = 0x1600
   CBM_FIRST* = 0x1700
   CCM_FIRST* = 0x2000
-  CCM_LAST* = CCM_FIRST+0x200
-  CCM_SETBKCOLOR* = CCM_FIRST+1
-  CCM_SETCOLORSCHEME* = CCM_FIRST+2
-  CCM_GETCOLORSCHEME* = CCM_FIRST+3
-  CCM_GETDROPTARGET* = CCM_FIRST+4
-  CCM_SETUNICODEFORMAT* = CCM_FIRST+5
-  CCM_GETUNICODEFORMAT* = CCM_FIRST+6
-  CCM_SETVERSION* = CCM_FIRST+0x7
-  CCM_GETVERSION* = CCM_FIRST+0x8
-  CCM_SETNOTIFYWINDOW* = CCM_FIRST+0x9
-  CCM_SETWINDOWTHEME* = CCM_FIRST+0xb
-  CCM_DPISCALE* = CCM_FIRST+0xc
+  CCM_LAST* = CCM_FIRST + 0x200
+  CCM_SETBKCOLOR* = CCM_FIRST + 1
+  CCM_SETCOLORSCHEME* = CCM_FIRST + 2
+  CCM_GETCOLORSCHEME* = CCM_FIRST + 3
+  CCM_GETDROPTARGET* = CCM_FIRST + 4
+  CCM_SETUNICODEFORMAT* = CCM_FIRST + 5
+  CCM_GETUNICODEFORMAT* = CCM_FIRST + 6
+  CCM_SETVERSION* = CCM_FIRST + 0x7
+  CCM_GETVERSION* = CCM_FIRST + 0x8
+  CCM_SETNOTIFYWINDOW* = CCM_FIRST + 0x9
+  CCM_SETWINDOWTHEME* = CCM_FIRST + 0xb
+  CCM_DPISCALE* = CCM_FIRST + 0xc
   COMCTL32_VERSION* = 6
   INFOTIPSIZE* = 1024
-  NM_FIRST* = 0-0
-  NM_OUTOFMEMORY* = NM_FIRST-1
-  NM_CLICK* = NM_FIRST-2
-  NM_DBLCLK* = NM_FIRST-3
-  NM_RETURN* = NM_FIRST-4
-  NM_RCLICK* = NM_FIRST-5
-  NM_RDBLCLK* = NM_FIRST-6
-  NM_SETFOCUS* = NM_FIRST-7
-  NM_KILLFOCUS* = NM_FIRST-8
-  NM_CUSTOMDRAW* = NM_FIRST-12
-  NM_HOVER* = NM_FIRST-13
-  NM_NCHITTEST* = NM_FIRST-14
-  NM_KEYDOWN* = NM_FIRST-15
-  NM_RELEASEDCAPTURE* = NM_FIRST-16
-  NM_SETCURSOR* = NM_FIRST-17
-  NM_CHAR* = NM_FIRST-18
-  NM_TOOLTIPSCREATED* = NM_FIRST-19
-  NM_LDOWN* = NM_FIRST-20
-  NM_RDOWN* = NM_FIRST-21
-  NM_THEMECHANGED* = NM_FIRST-22
-  NM_FONTCHANGED* = NM_FIRST-23
-  NM_CUSTOMTEXT* = NM_FIRST-24
-  NM_TVSTATEIMAGECHANGING* = NM_FIRST-24
-  NM_LAST* = 0-99
-  LVN_FIRST* = 0-100
-  LVN_LAST* = 0-199
-  HDN_FIRST* = 0-300
-  HDN_LAST* = 0-399
-  TVN_FIRST* = 0-400
-  TVN_LAST* = 0-499
-  TTN_FIRST* = 0-520
-  TTN_LAST* = 0-549
-  TCN_FIRST* = 0-550
-  TCN_LAST* = 0-580
-  CDN_FIRST* = 0-601
-  CDN_LAST* = 0-699
-  TBN_FIRST* = 0-700
-  TBN_LAST* = 0-720
-  UDN_FIRST* = 0-721
-  UDN_LAST* = 0-729
-  DTN_FIRST* = 0-740
-  DTN_LAST* = 0-745
-  MCN_FIRST* = 0-746
-  MCN_LAST* = 0-752
-  DTN_FIRST2* = 0-753
-  DTN_LAST2* = 0-799
-  CBEN_FIRST* = 0-800
-  CBEN_LAST* = 0-830
-  RBN_FIRST* = 0-831
-  RBN_LAST* = 0-859
-  IPN_FIRST* = 0-860
-  IPN_LAST* = 0-879
-  SBN_FIRST* = 0-880
-  SBN_LAST* = 0-899
-  PGN_FIRST* = 0-900
-  PGN_LAST* = 0-950
-  WMN_FIRST* = 0-1000
-  WMN_LAST* = 0-1200
-  BCN_FIRST* = 0-1250
-  BCN_LAST* = 0-1350
-  TRBN_FIRST* = 0-1501
-  TRBN_LAST* = 0-1519
+  NM_FIRST* = 0 - 0
+  NM_OUTOFMEMORY* = NM_FIRST - 1
+  NM_CLICK* = NM_FIRST - 2
+  NM_DBLCLK* = NM_FIRST - 3
+  NM_RETURN* = NM_FIRST - 4
+  NM_RCLICK* = NM_FIRST - 5
+  NM_RDBLCLK* = NM_FIRST - 6
+  NM_SETFOCUS* = NM_FIRST - 7
+  NM_KILLFOCUS* = NM_FIRST - 8
+  NM_CUSTOMDRAW* = NM_FIRST - 12
+  NM_HOVER* = NM_FIRST - 13
+  NM_NCHITTEST* = NM_FIRST - 14
+  NM_KEYDOWN* = NM_FIRST - 15
+  NM_RELEASEDCAPTURE* = NM_FIRST - 16
+  NM_SETCURSOR* = NM_FIRST - 17
+  NM_CHAR* = NM_FIRST - 18
+  NM_TOOLTIPSCREATED* = NM_FIRST - 19
+  NM_LDOWN* = NM_FIRST - 20
+  NM_RDOWN* = NM_FIRST - 21
+  NM_THEMECHANGED* = NM_FIRST - 22
+  NM_FONTCHANGED* = NM_FIRST - 23
+  NM_CUSTOMTEXT* = NM_FIRST - 24
+  NM_TVSTATEIMAGECHANGING* = NM_FIRST - 24
+  NM_LAST* = 0 - 99
+  LVN_FIRST* = 0 - 100
+  LVN_LAST* = 0 - 199
+  HDN_FIRST* = 0 - 300
+  HDN_LAST* = 0 - 399
+  TVN_FIRST* = 0 - 400
+  TVN_LAST* = 0 - 499
+  TTN_FIRST* = 0 - 520
+  TTN_LAST* = 0 - 549
+  TCN_FIRST* = 0 - 550
+  TCN_LAST* = 0 - 580
+  CDN_FIRST* = 0 - 601
+  CDN_LAST* = 0 - 699
+  TBN_FIRST* = 0 - 700
+  TBN_LAST* = 0 - 720
+  UDN_FIRST* = 0 - 721
+  UDN_LAST* = 0 - 729
+  DTN_FIRST* = 0 - 740
+  DTN_LAST* = 0 - 745
+  MCN_FIRST* = 0 - 746
+  MCN_LAST* = 0 - 752
+  DTN_FIRST2* = 0 - 753
+  DTN_LAST2* = 0 - 799
+  CBEN_FIRST* = 0 - 800
+  CBEN_LAST* = 0 - 830
+  RBN_FIRST* = 0 - 831
+  RBN_LAST* = 0 - 859
+  IPN_FIRST* = 0 - 860
+  IPN_LAST* = 0 - 879
+  SBN_FIRST* = 0 - 880
+  SBN_LAST* = 0 - 899
+  PGN_FIRST* = 0 - 900
+  PGN_LAST* = 0 - 950
+  WMN_FIRST* = 0 - 1000
+  WMN_LAST* = 0 - 1200
+  BCN_FIRST* = 0 - 1250
+  BCN_LAST* = 0 - 1350
+  TRBN_FIRST* = 0 - 1501
+  TRBN_LAST* = 0 - 1519
   MSGF_COMMCTRL_BEGINDRAG* = 0x4200
   MSGF_COMMCTRL_SIZEHEADER* = 0x4201
   MSGF_COMMCTRL_DRAGSELECT* = 0x4202
@@ -1782,7 +1949,7 @@
   CDIS_NEARHOT* = 0x0400
   CDIS_OTHERSIDEHOT* = 0x0800
   CDIS_DROPHILITED* = 0x1000
-  NM_GETCUSTOMSPLITRECT* = BCN_FIRST+0x0003
+  NM_GETCUSTOMSPLITRECT* = BCN_FIRST + 0x0003
   CLR_NONE* = 0xffffffff'i32
   CLR_DEFAULT* = 0xff000000'i32
   ILC_MASK* = 0x1
@@ -1871,15 +2038,15 @@
   HDF_FIXEDWIDTH* = 0x100
   HDF_SPLITBUTTON* = 0x1000000
   HDIS_FOCUSED* = 0x1
-  HDM_GETITEMCOUNT* = HDM_FIRST+0
-  HDM_INSERTITEMA* = HDM_FIRST+1
-  HDM_INSERTITEMW* = HDM_FIRST+10
-  HDM_DELETEITEM* = HDM_FIRST+2
-  HDM_GETITEMA* = HDM_FIRST+3
-  HDM_GETITEMW* = HDM_FIRST+11
-  HDM_SETITEMA* = HDM_FIRST+4
-  HDM_SETITEMW* = HDM_FIRST+12
-  HDM_LAYOUT* = HDM_FIRST+5
+  HDM_GETITEMCOUNT* = HDM_FIRST + 0
+  HDM_INSERTITEMA* = HDM_FIRST + 1
+  HDM_INSERTITEMW* = HDM_FIRST + 10
+  HDM_DELETEITEM* = HDM_FIRST + 2
+  HDM_GETITEMA* = HDM_FIRST + 3
+  HDM_GETITEMW* = HDM_FIRST + 11
+  HDM_SETITEMA* = HDM_FIRST + 4
+  HDM_SETITEMW* = HDM_FIRST + 12
+  HDM_LAYOUT* = HDM_FIRST + 5
   HHT_NOWHERE* = 0x1
   HHT_ONHEADER* = 0x2
   HHT_ONDIVIDER* = 0x4
@@ -1895,54 +2062,54 @@
   HHT_ONOVERFLOW* = 0x4000
   HDSIL_NORMAL* = 0
   HDSIL_STATE* = 1
-  HDM_HITTEST* = HDM_FIRST+6
-  HDM_GETITEMRECT* = HDM_FIRST+7
-  HDM_SETIMAGELIST* = HDM_FIRST+8
-  HDM_GETIMAGELIST* = HDM_FIRST+9
-  HDM_ORDERTOINDEX* = HDM_FIRST+15
-  HDM_CREATEDRAGIMAGE* = HDM_FIRST+16
-  HDM_GETORDERARRAY* = HDM_FIRST+17
-  HDM_SETORDERARRAY* = HDM_FIRST+18
-  HDM_SETHOTDIVIDER* = HDM_FIRST+19
-  HDM_SETBITMAPMARGIN* = HDM_FIRST+20
-  HDM_GETBITMAPMARGIN* = HDM_FIRST+21
+  HDM_HITTEST* = HDM_FIRST + 6
+  HDM_GETITEMRECT* = HDM_FIRST + 7
+  HDM_SETIMAGELIST* = HDM_FIRST + 8
+  HDM_GETIMAGELIST* = HDM_FIRST + 9
+  HDM_ORDERTOINDEX* = HDM_FIRST + 15
+  HDM_CREATEDRAGIMAGE* = HDM_FIRST + 16
+  HDM_GETORDERARRAY* = HDM_FIRST + 17
+  HDM_SETORDERARRAY* = HDM_FIRST + 18
+  HDM_SETHOTDIVIDER* = HDM_FIRST + 19
+  HDM_SETBITMAPMARGIN* = HDM_FIRST + 20
+  HDM_GETBITMAPMARGIN* = HDM_FIRST + 21
   HDM_SETUNICODEFORMAT* = CCM_SETUNICODEFORMAT
   HDM_GETUNICODEFORMAT* = CCM_GETUNICODEFORMAT
-  HDM_SETFILTERCHANGETIMEOUT* = HDM_FIRST+22
-  HDM_EDITFILTER* = HDM_FIRST+23
-  HDM_CLEARFILTER* = HDM_FIRST+24
-  HDM_GETITEMDROPDOWNRECT* = HDM_FIRST+25
-  HDM_GETOVERFLOWRECT* = HDM_FIRST+26
-  HDM_GETFOCUSEDITEM* = HDM_FIRST+27
-  HDM_SETFOCUSEDITEM* = HDM_FIRST+28
-  HDN_ITEMCHANGINGA* = HDN_FIRST-0
-  HDN_ITEMCHANGINGW* = HDN_FIRST-20
-  HDN_ITEMCHANGEDA* = HDN_FIRST-1
-  HDN_ITEMCHANGEDW* = HDN_FIRST-21
-  HDN_ITEMCLICKA* = HDN_FIRST-2
-  HDN_ITEMCLICKW* = HDN_FIRST-22
-  HDN_ITEMDBLCLICKA* = HDN_FIRST-3
-  HDN_ITEMDBLCLICKW* = HDN_FIRST-23
-  HDN_DIVIDERDBLCLICKA* = HDN_FIRST-5
-  HDN_DIVIDERDBLCLICKW* = HDN_FIRST-25
-  HDN_BEGINTRACKA* = HDN_FIRST-6
-  HDN_BEGINTRACKW* = HDN_FIRST-26
-  HDN_ENDTRACKA* = HDN_FIRST-7
-  HDN_ENDTRACKW* = HDN_FIRST-27
-  HDN_TRACKA* = HDN_FIRST-8
-  HDN_TRACKW* = HDN_FIRST-28
-  HDN_GETDISPINFOA* = HDN_FIRST-9
-  HDN_GETDISPINFOW* = HDN_FIRST-29
-  HDN_BEGINDRAG* = HDN_FIRST-10
-  HDN_ENDDRAG* = HDN_FIRST-11
-  HDN_FILTERCHANGE* = HDN_FIRST-12
-  HDN_FILTERBTNCLICK* = HDN_FIRST-13
-  HDN_BEGINFILTEREDIT* = HDN_FIRST-14
-  HDN_ENDFILTEREDIT* = HDN_FIRST-15
-  HDN_ITEMSTATEICONCLICK* = HDN_FIRST-16
-  HDN_ITEMKEYDOWN* = HDN_FIRST-17
-  HDN_DROPDOWN* = HDN_FIRST-18
-  HDN_OVERFLOWCLICK* = HDN_FIRST-19
+  HDM_SETFILTERCHANGETIMEOUT* = HDM_FIRST + 22
+  HDM_EDITFILTER* = HDM_FIRST + 23
+  HDM_CLEARFILTER* = HDM_FIRST + 24
+  HDM_GETITEMDROPDOWNRECT* = HDM_FIRST + 25
+  HDM_GETOVERFLOWRECT* = HDM_FIRST + 26
+  HDM_GETFOCUSEDITEM* = HDM_FIRST + 27
+  HDM_SETFOCUSEDITEM* = HDM_FIRST + 28
+  HDN_ITEMCHANGINGA* = HDN_FIRST - 0
+  HDN_ITEMCHANGINGW* = HDN_FIRST - 20
+  HDN_ITEMCHANGEDA* = HDN_FIRST - 1
+  HDN_ITEMCHANGEDW* = HDN_FIRST - 21
+  HDN_ITEMCLICKA* = HDN_FIRST - 2
+  HDN_ITEMCLICKW* = HDN_FIRST - 22
+  HDN_ITEMDBLCLICKA* = HDN_FIRST - 3
+  HDN_ITEMDBLCLICKW* = HDN_FIRST - 23
+  HDN_DIVIDERDBLCLICKA* = HDN_FIRST - 5
+  HDN_DIVIDERDBLCLICKW* = HDN_FIRST - 25
+  HDN_BEGINTRACKA* = HDN_FIRST - 6
+  HDN_BEGINTRACKW* = HDN_FIRST - 26
+  HDN_ENDTRACKA* = HDN_FIRST - 7
+  HDN_ENDTRACKW* = HDN_FIRST - 27
+  HDN_TRACKA* = HDN_FIRST - 8
+  HDN_TRACKW* = HDN_FIRST - 28
+  HDN_GETDISPINFOA* = HDN_FIRST - 9
+  HDN_GETDISPINFOW* = HDN_FIRST - 29
+  HDN_BEGINDRAG* = HDN_FIRST - 10
+  HDN_ENDDRAG* = HDN_FIRST - 11
+  HDN_FILTERCHANGE* = HDN_FIRST - 12
+  HDN_FILTERBTNCLICK* = HDN_FIRST - 13
+  HDN_BEGINFILTEREDIT* = HDN_FIRST - 14
+  HDN_ENDFILTEREDIT* = HDN_FIRST - 15
+  HDN_ITEMSTATEICONCLICK* = HDN_FIRST - 16
+  HDN_ITEMKEYDOWN* = HDN_FIRST - 17
+  HDN_DROPDOWN* = HDN_FIRST - 18
+  HDN_OVERFLOWCLICK* = HDN_FIRST - 19
   TOOLBARCLASSNAMEW* = "ToolbarWindow32"
   TOOLBARCLASSNAMEA* = "ToolbarWindow32"
   CMB_MASKED* = 0x2
@@ -1994,21 +2161,21 @@
   TBCDRF_BLENDICON* = 0x200000
   TBCDRF_NOBACKGROUND* = 0x400000
   TBCDRF_USECDCOLORS* = 0x00800000
-  TB_ENABLEBUTTON* = WM_USER+1
-  TB_CHECKBUTTON* = WM_USER+2
-  TB_PRESSBUTTON* = WM_USER+3
-  TB_HIDEBUTTON* = WM_USER+4
-  TB_INDETERMINATE* = WM_USER+5
-  TB_MARKBUTTON* = WM_USER+6
-  TB_ISBUTTONENABLED* = WM_USER+9
-  TB_ISBUTTONCHECKED* = WM_USER+10
-  TB_ISBUTTONPRESSED* = WM_USER+11
-  TB_ISBUTTONHIDDEN* = WM_USER+12
-  TB_ISBUTTONINDETERMINATE* = WM_USER+13
-  TB_ISBUTTONHIGHLIGHTED* = WM_USER+14
-  TB_SETSTATE* = WM_USER+17
-  TB_GETSTATE* = WM_USER+18
-  TB_ADDBITMAP* = WM_USER+19
+  TB_ENABLEBUTTON* = WM_USER + 1
+  TB_CHECKBUTTON* = WM_USER + 2
+  TB_PRESSBUTTON* = WM_USER + 3
+  TB_HIDEBUTTON* = WM_USER + 4
+  TB_INDETERMINATE* = WM_USER + 5
+  TB_MARKBUTTON* = WM_USER + 6
+  TB_ISBUTTONENABLED* = WM_USER + 9
+  TB_ISBUTTONCHECKED* = WM_USER + 10
+  TB_ISBUTTONPRESSED* = WM_USER + 11
+  TB_ISBUTTONHIDDEN* = WM_USER + 12
+  TB_ISBUTTONINDETERMINATE* = WM_USER + 13
+  TB_ISBUTTONHIGHLIGHTED* = WM_USER + 14
+  TB_SETSTATE* = WM_USER + 17
+  TB_GETSTATE* = WM_USER + 18
+  TB_ADDBITMAP* = WM_USER + 19
   HINST_COMMCTRL* = HINSTANCE(-1)
   IDB_STD_SMALL_COLOR* = 0
   IDB_STD_LARGE_COLOR* = 1
@@ -2053,74 +2220,74 @@
   HIST_FAVORITES* = 2
   HIST_ADDTOFAVORITES* = 3
   HIST_VIEWTREE* = 4
-  TB_ADDBUTTONSA* = WM_USER+20
-  TB_INSERTBUTTONA* = WM_USER+21
-  TB_DELETEBUTTON* = WM_USER+22
-  TB_GETBUTTON* = WM_USER+23
-  TB_BUTTONCOUNT* = WM_USER+24
-  TB_COMMANDTOINDEX* = WM_USER+25
-  TB_SAVERESTOREA* = WM_USER+26
-  TB_SAVERESTOREW* = WM_USER+76
-  TB_CUSTOMIZE* = WM_USER+27
-  TB_ADDSTRINGA* = WM_USER+28
-  TB_ADDSTRINGW* = WM_USER+77
-  TB_GETITEMRECT* = WM_USER+29
-  TB_BUTTONSTRUCTSIZE* = WM_USER+30
-  TB_SETBUTTONSIZE* = WM_USER+31
-  TB_SETBITMAPSIZE* = WM_USER+32
-  TB_AUTOSIZE* = WM_USER+33
-  TB_GETTOOLTIPS* = WM_USER+35
-  TB_SETTOOLTIPS* = WM_USER+36
-  TB_SETPARENT* = WM_USER+37
-  TB_SETROWS* = WM_USER+39
-  TB_GETROWS* = WM_USER+40
-  TB_SETCMDID* = WM_USER+42
-  TB_CHANGEBITMAP* = WM_USER+43
-  TB_GETBITMAP* = WM_USER+44
-  TB_GETBUTTONTEXTA* = WM_USER+45
-  TB_GETBUTTONTEXTW* = WM_USER+75
-  TB_REPLACEBITMAP* = WM_USER+46
-  TB_SETINDENT* = WM_USER+47
-  TB_SETIMAGELIST* = WM_USER+48
-  TB_GETIMAGELIST* = WM_USER+49
-  TB_LOADIMAGES* = WM_USER+50
-  TB_GETRECT* = WM_USER+51
-  TB_SETHOTIMAGELIST* = WM_USER+52
-  TB_GETHOTIMAGELIST* = WM_USER+53
-  TB_SETDISABLEDIMAGELIST* = WM_USER+54
-  TB_GETDISABLEDIMAGELIST* = WM_USER+55
-  TB_SETSTYLE* = WM_USER+56
-  TB_GETSTYLE* = WM_USER+57
-  TB_GETBUTTONSIZE* = WM_USER+58
-  TB_SETBUTTONWIDTH* = WM_USER+59
-  TB_SETMAXTEXTROWS* = WM_USER+60
-  TB_GETTEXTROWS* = WM_USER+61
-  TB_GETOBJECT* = WM_USER+62
-  TB_GETHOTITEM* = WM_USER+71
-  TB_SETHOTITEM* = WM_USER+72
-  TB_SETANCHORHIGHLIGHT* = WM_USER+73
-  TB_GETANCHORHIGHLIGHT* = WM_USER+74
-  TB_MAPACCELERATORA* = WM_USER+78
+  TB_ADDBUTTONSA* = WM_USER + 20
+  TB_INSERTBUTTONA* = WM_USER + 21
+  TB_DELETEBUTTON* = WM_USER + 22
+  TB_GETBUTTON* = WM_USER + 23
+  TB_BUTTONCOUNT* = WM_USER + 24
+  TB_COMMANDTOINDEX* = WM_USER + 25
+  TB_SAVERESTOREA* = WM_USER + 26
+  TB_SAVERESTOREW* = WM_USER + 76
+  TB_CUSTOMIZE* = WM_USER + 27
+  TB_ADDSTRINGA* = WM_USER + 28
+  TB_ADDSTRINGW* = WM_USER + 77
+  TB_GETITEMRECT* = WM_USER + 29
+  TB_BUTTONSTRUCTSIZE* = WM_USER + 30
+  TB_SETBUTTONSIZE* = WM_USER + 31
+  TB_SETBITMAPSIZE* = WM_USER + 32
+  TB_AUTOSIZE* = WM_USER + 33
+  TB_GETTOOLTIPS* = WM_USER + 35
+  TB_SETTOOLTIPS* = WM_USER + 36
+  TB_SETPARENT* = WM_USER + 37
+  TB_SETROWS* = WM_USER + 39
+  TB_GETROWS* = WM_USER + 40
+  TB_SETCMDID* = WM_USER + 42
+  TB_CHANGEBITMAP* = WM_USER + 43
+  TB_GETBITMAP* = WM_USER + 44
+  TB_GETBUTTONTEXTA* = WM_USER + 45
+  TB_GETBUTTONTEXTW* = WM_USER + 75
+  TB_REPLACEBITMAP* = WM_USER + 46
+  TB_SETINDENT* = WM_USER + 47
+  TB_SETIMAGELIST* = WM_USER + 48
+  TB_GETIMAGELIST* = WM_USER + 49
+  TB_LOADIMAGES* = WM_USER + 50
+  TB_GETRECT* = WM_USER + 51
+  TB_SETHOTIMAGELIST* = WM_USER + 52
+  TB_GETHOTIMAGELIST* = WM_USER + 53
+  TB_SETDISABLEDIMAGELIST* = WM_USER + 54
+  TB_GETDISABLEDIMAGELIST* = WM_USER + 55
+  TB_SETSTYLE* = WM_USER + 56
+  TB_GETSTYLE* = WM_USER + 57
+  TB_GETBUTTONSIZE* = WM_USER + 58
+  TB_SETBUTTONWIDTH* = WM_USER + 59
+  TB_SETMAXTEXTROWS* = WM_USER + 60
+  TB_GETTEXTROWS* = WM_USER + 61
+  TB_GETOBJECT* = WM_USER + 62
+  TB_GETHOTITEM* = WM_USER + 71
+  TB_SETHOTITEM* = WM_USER + 72
+  TB_SETANCHORHIGHLIGHT* = WM_USER + 73
+  TB_GETANCHORHIGHLIGHT* = WM_USER + 74
+  TB_MAPACCELERATORA* = WM_USER + 78
   TBIMHT_AFTER* = 0x1
   TBIMHT_BACKGROUND* = 0x2
-  TB_GETINSERTMARK* = WM_USER+79
-  TB_SETINSERTMARK* = WM_USER+80
-  TB_INSERTMARKHITTEST* = WM_USER+81
-  TB_MOVEBUTTON* = WM_USER+82
-  TB_GETMAXSIZE* = WM_USER+83
-  TB_SETEXTENDEDSTYLE* = WM_USER+84
-  TB_GETEXTENDEDSTYLE* = WM_USER+85
-  TB_GETPADDING* = WM_USER+86
-  TB_SETPADDING* = WM_USER+87
-  TB_SETINSERTMARKCOLOR* = WM_USER+88
-  TB_GETINSERTMARKCOLOR* = WM_USER+89
+  TB_GETINSERTMARK* = WM_USER + 79
+  TB_SETINSERTMARK* = WM_USER + 80
+  TB_INSERTMARKHITTEST* = WM_USER + 81
+  TB_MOVEBUTTON* = WM_USER + 82
+  TB_GETMAXSIZE* = WM_USER + 83
+  TB_SETEXTENDEDSTYLE* = WM_USER + 84
+  TB_GETEXTENDEDSTYLE* = WM_USER + 85
+  TB_GETPADDING* = WM_USER + 86
+  TB_SETPADDING* = WM_USER + 87
+  TB_SETINSERTMARKCOLOR* = WM_USER + 88
+  TB_GETINSERTMARKCOLOR* = WM_USER + 89
   TB_SETCOLORSCHEME* = CCM_SETCOLORSCHEME
   TB_GETCOLORSCHEME* = CCM_GETCOLORSCHEME
   TB_SETUNICODEFORMAT* = CCM_SETUNICODEFORMAT
   TB_GETUNICODEFORMAT* = CCM_GETUNICODEFORMAT
-  TB_MAPACCELERATORW* = WM_USER+90
+  TB_MAPACCELERATORW* = WM_USER + 90
   TBBF_LARGE* = 0x1
-  TB_GETBITMAPFLAGS* = WM_USER+41
+  TB_GETBITMAPFLAGS* = WM_USER + 41
   TBIF_IMAGE* = 0x1
   TBIF_TEXT* = 0x2
   TBIF_STATE* = 0x4
@@ -2129,43 +2296,43 @@
   TBIF_COMMAND* = 0x20
   TBIF_SIZE* = 0x40
   TBIF_BYINDEX* = 0x80000000'i32
-  TB_GETBUTTONINFOW* = WM_USER+63
-  TB_SETBUTTONINFOW* = WM_USER+64
-  TB_GETBUTTONINFOA* = WM_USER+65
-  TB_SETBUTTONINFOA* = WM_USER+66
-  TB_INSERTBUTTONW* = WM_USER+67
-  TB_ADDBUTTONSW* = WM_USER+68
-  TB_HITTEST* = WM_USER+69
-  TB_SETDRAWTEXTFLAGS* = WM_USER+70
-  TB_GETSTRINGW* = WM_USER+91
-  TB_GETSTRINGA* = WM_USER+92
-  TB_SETBOUNDINGSIZE* = WM_USER+93
-  TB_SETHOTITEM2* = WM_USER+94
-  TB_HASACCELERATOR* = WM_USER+95
-  TB_SETLISTGAP* = WM_USER+96
-  TB_GETIMAGELISTCOUNT* = WM_USER+98
-  TB_GETIDEALSIZE* = WM_USER+99
+  TB_GETBUTTONINFOW* = WM_USER + 63
+  TB_SETBUTTONINFOW* = WM_USER + 64
+  TB_GETBUTTONINFOA* = WM_USER + 65
+  TB_SETBUTTONINFOA* = WM_USER + 66
+  TB_INSERTBUTTONW* = WM_USER + 67
+  TB_ADDBUTTONSW* = WM_USER + 68
+  TB_HITTEST* = WM_USER + 69
+  TB_SETDRAWTEXTFLAGS* = WM_USER + 70
+  TB_GETSTRINGW* = WM_USER + 91
+  TB_GETSTRINGA* = WM_USER + 92
+  TB_SETBOUNDINGSIZE* = WM_USER + 93
+  TB_SETHOTITEM2* = WM_USER + 94
+  TB_HASACCELERATOR* = WM_USER + 95
+  TB_SETLISTGAP* = WM_USER + 96
+  TB_GETIMAGELISTCOUNT* = WM_USER + 98
+  TB_GETIDEALSIZE* = WM_USER + 99
   TBMF_PAD* = 0x1
   TBMF_BARPAD* = 0x2
   TBMF_BUTTONSPACING* = 0x4
-  TB_GETMETRICS* = WM_USER+101
-  TB_SETMETRICS* = WM_USER+102
-  TB_GETITEMDROPDOWNRECT* = WM_USER+103
-  TB_SETPRESSEDIMAGELIST* = WM_USER+104
-  TB_GETPRESSEDIMAGELIST* = WM_USER+105
+  TB_GETMETRICS* = WM_USER + 101
+  TB_SETMETRICS* = WM_USER + 102
+  TB_GETITEMDROPDOWNRECT* = WM_USER + 103
+  TB_SETPRESSEDIMAGELIST* = WM_USER + 104
+  TB_GETPRESSEDIMAGELIST* = WM_USER + 105
   TB_SETWINDOWTHEME* = CCM_SETWINDOWTHEME
-  TBN_GETBUTTONINFOA* = TBN_FIRST-0
-  TBN_BEGINDRAG* = TBN_FIRST-1
-  TBN_ENDDRAG* = TBN_FIRST-2
-  TBN_BEGINADJUST* = TBN_FIRST-3
-  TBN_ENDADJUST* = TBN_FIRST-4
-  TBN_RESET* = TBN_FIRST-5
-  TBN_QUERYINSERT* = TBN_FIRST-6
-  TBN_QUERYDELETE* = TBN_FIRST-7
-  TBN_TOOLBARCHANGE* = TBN_FIRST-8
-  TBN_CUSTHELP* = TBN_FIRST-9
-  TBN_DROPDOWN* = TBN_FIRST-10
-  TBN_GETOBJECT* = TBN_FIRST-12
+  TBN_GETBUTTONINFOA* = TBN_FIRST - 0
+  TBN_BEGINDRAG* = TBN_FIRST - 1
+  TBN_ENDDRAG* = TBN_FIRST - 2
+  TBN_BEGINADJUST* = TBN_FIRST - 3
+  TBN_ENDADJUST* = TBN_FIRST - 4
+  TBN_RESET* = TBN_FIRST - 5
+  TBN_QUERYINSERT* = TBN_FIRST - 6
+  TBN_QUERYDELETE* = TBN_FIRST - 7
+  TBN_TOOLBARCHANGE* = TBN_FIRST - 8
+  TBN_CUSTHELP* = TBN_FIRST - 9
+  TBN_DROPDOWN* = TBN_FIRST - 10
+  TBN_GETOBJECT* = TBN_FIRST - 12
   HICF_OTHER* = 0x0
   HICF_MOUSE* = 0x1
   HICF_ARROWKEYS* = 0x2
@@ -2176,24 +2343,24 @@
   HICF_RESELECT* = 0x40
   HICF_LMOUSE* = 0x80
   HICF_TOGGLEDROPDOWN* = 0x100
-  TBN_HOTITEMCHANGE* = TBN_FIRST-13
-  TBN_DRAGOUT* = TBN_FIRST-14
-  TBN_DELETINGBUTTON* = TBN_FIRST-15
-  TBN_GETDISPINFOA* = TBN_FIRST-16
-  TBN_GETDISPINFOW* = TBN_FIRST-17
-  TBN_GETINFOTIPA* = TBN_FIRST-18
-  TBN_GETINFOTIPW* = TBN_FIRST-19
-  TBN_GETBUTTONINFOW* = TBN_FIRST-20
-  TBN_RESTORE* = TBN_FIRST-21
-  TBN_SAVE* = TBN_FIRST-22
-  TBN_INITCUSTOMIZE* = TBN_FIRST-23
+  TBN_HOTITEMCHANGE* = TBN_FIRST - 13
+  TBN_DRAGOUT* = TBN_FIRST - 14
+  TBN_DELETINGBUTTON* = TBN_FIRST - 15
+  TBN_GETDISPINFOA* = TBN_FIRST - 16
+  TBN_GETDISPINFOW* = TBN_FIRST - 17
+  TBN_GETINFOTIPA* = TBN_FIRST - 18
+  TBN_GETINFOTIPW* = TBN_FIRST - 19
+  TBN_GETBUTTONINFOW* = TBN_FIRST - 20
+  TBN_RESTORE* = TBN_FIRST - 21
+  TBN_SAVE* = TBN_FIRST - 22
+  TBN_INITCUSTOMIZE* = TBN_FIRST - 23
   TBNRF_HIDEHELP* = 0x1
   TBNRF_ENDCUSTOMIZE* = 0x2
-  TBN_WRAPHOTITEM* = TBN_FIRST-24
-  TBN_DUPACCELERATOR* = TBN_FIRST-25
-  TBN_WRAPACCELERATOR* = TBN_FIRST-26
-  TBN_DRAGOVER* = TBN_FIRST-27
-  TBN_MAPACCELERATOR* = TBN_FIRST-28
+  TBN_WRAPHOTITEM* = TBN_FIRST - 24
+  TBN_DUPACCELERATOR* = TBN_FIRST - 25
+  TBN_WRAPACCELERATOR* = TBN_FIRST - 26
+  TBN_DRAGOVER* = TBN_FIRST - 27
+  TBN_MAPACCELERATOR* = TBN_FIRST - 28
   TBNF_IMAGE* = 0x1
   TBNF_TEXT* = 0x2
   TBNF_DI_SETITEM* = 0x10000000
@@ -2237,65 +2404,65 @@
   RBBIM_HEADERSIZE* = 0x800
   RBBIM_CHEVRONLOCATION* = 0x00001000
   RBBIM_CHEVRONSTATE* = 0x00002000
-  RB_INSERTBANDA* = WM_USER+1
-  RB_DELETEBAND* = WM_USER+2
-  RB_GETBARINFO* = WM_USER+3
-  RB_SETBARINFO* = WM_USER+4
-  RB_SETBANDINFOA* = WM_USER+6
-  RB_SETPARENT* = WM_USER+7
-  RB_HITTEST* = WM_USER+8
-  RB_GETRECT* = WM_USER+9
-  RB_INSERTBANDW* = WM_USER+10
-  RB_SETBANDINFOW* = WM_USER+11
-  RB_GETBANDCOUNT* = WM_USER+12
-  RB_GETROWCOUNT* = WM_USER+13
-  RB_GETROWHEIGHT* = WM_USER+14
-  RB_IDTOINDEX* = WM_USER+16
-  RB_GETTOOLTIPS* = WM_USER+17
-  RB_SETTOOLTIPS* = WM_USER+18
-  RB_SETBKCOLOR* = WM_USER+19
-  RB_GETBKCOLOR* = WM_USER+20
-  RB_SETTEXTCOLOR* = WM_USER+21
-  RB_GETTEXTCOLOR* = WM_USER+22
+  RB_INSERTBANDA* = WM_USER + 1
+  RB_DELETEBAND* = WM_USER + 2
+  RB_GETBARINFO* = WM_USER + 3
+  RB_SETBARINFO* = WM_USER + 4
+  RB_SETBANDINFOA* = WM_USER + 6
+  RB_SETPARENT* = WM_USER + 7
+  RB_HITTEST* = WM_USER + 8
+  RB_GETRECT* = WM_USER + 9
+  RB_INSERTBANDW* = WM_USER + 10
+  RB_SETBANDINFOW* = WM_USER + 11
+  RB_GETBANDCOUNT* = WM_USER + 12
+  RB_GETROWCOUNT* = WM_USER + 13
+  RB_GETROWHEIGHT* = WM_USER + 14
+  RB_IDTOINDEX* = WM_USER + 16
+  RB_GETTOOLTIPS* = WM_USER + 17
+  RB_SETTOOLTIPS* = WM_USER + 18
+  RB_SETBKCOLOR* = WM_USER + 19
+  RB_GETBKCOLOR* = WM_USER + 20
+  RB_SETTEXTCOLOR* = WM_USER + 21
+  RB_GETTEXTCOLOR* = WM_USER + 22
   RBSTR_CHANGERECT* = 0x1
-  RB_SIZETORECT* = WM_USER+23
+  RB_SIZETORECT* = WM_USER + 23
   RB_SETCOLORSCHEME* = CCM_SETCOLORSCHEME
   RB_GETCOLORSCHEME* = CCM_GETCOLORSCHEME
-  RB_BEGINDRAG* = WM_USER+24
-  RB_ENDDRAG* = WM_USER+25
-  RB_DRAGMOVE* = WM_USER+26
-  RB_GETBARHEIGHT* = WM_USER+27
-  RB_GETBANDINFOW* = WM_USER+28
-  RB_GETBANDINFOA* = WM_USER+29
-  RB_MINIMIZEBAND* = WM_USER+30
-  RB_MAXIMIZEBAND* = WM_USER+31
+  RB_BEGINDRAG* = WM_USER + 24
+  RB_ENDDRAG* = WM_USER + 25
+  RB_DRAGMOVE* = WM_USER + 26
+  RB_GETBARHEIGHT* = WM_USER + 27
+  RB_GETBANDINFOW* = WM_USER + 28
+  RB_GETBANDINFOA* = WM_USER + 29
+  RB_MINIMIZEBAND* = WM_USER + 30
+  RB_MAXIMIZEBAND* = WM_USER + 31
   RB_GETDROPTARGET* = CCM_GETDROPTARGET
-  RB_GETBANDBORDERS* = WM_USER+34
-  RB_SHOWBAND* = WM_USER+35
-  RB_SETPALETTE* = WM_USER+37
-  RB_GETPALETTE* = WM_USER+38
-  RB_MOVEBAND* = WM_USER+39
+  RB_GETBANDBORDERS* = WM_USER + 34
+  RB_SHOWBAND* = WM_USER + 35
+  RB_SETPALETTE* = WM_USER + 37
+  RB_GETPALETTE* = WM_USER + 38
+  RB_MOVEBAND* = WM_USER + 39
   RB_SETUNICODEFORMAT* = CCM_SETUNICODEFORMAT
   RB_GETUNICODEFORMAT* = CCM_GETUNICODEFORMAT
-  RB_GETBANDMARGINS* = WM_USER+40
+  RB_GETBANDMARGINS* = WM_USER + 40
   RB_SETWINDOWTHEME* = CCM_SETWINDOWTHEME
-  RB_SETEXTENDEDSTYLE* = WM_USER+41
-  RB_GETEXTENDEDSTYLE* = WM_USER+42
-  RB_PUSHCHEVRON* = WM_USER+43
-  RB_SETBANDWIDTH* = WM_USER+44
-  RBN_HEIGHTCHANGE* = RBN_FIRST-0
-  RBN_GETOBJECT* = RBN_FIRST-1
-  RBN_LAYOUTCHANGED* = RBN_FIRST-2
-  RBN_AUTOSIZE* = RBN_FIRST-3
-  RBN_BEGINDRAG* = RBN_FIRST-4
-  RBN_ENDDRAG* = RBN_FIRST-5
-  RBN_DELETINGBAND* = RBN_FIRST-6
-  RBN_DELETEDBAND* = RBN_FIRST-7
-  RBN_CHILDSIZE* = RBN_FIRST-8
-  RBN_CHEVRONPUSHED* = RBN_FIRST-10
-  RBN_SPLITTERDRAG* = RBN_FIRST-11
-  RBN_MINMAX* = RBN_FIRST-21
-  RBN_AUTOBREAK* = RBN_FIRST-22
+  RB_SETEXTENDEDSTYLE* = WM_USER + 41
+  RB_GETEXTENDEDSTYLE* = WM_USER + 42
+  RB_PUSHCHEVRON* = WM_USER + 43
+  RB_SETBANDWIDTH* = WM_USER + 44
+  RBN_HEIGHTCHANGE* = RBN_FIRST - 0
+  RBN_GETOBJECT* = RBN_FIRST - 1
+  RBN_LAYOUTCHANGED* = RBN_FIRST - 2
+  RBN_AUTOSIZE* = RBN_FIRST - 3
+  RBN_BEGINDRAG* = RBN_FIRST - 4
+  RBN_ENDDRAG* = RBN_FIRST - 5
+  RBN_DELETINGBAND* = RBN_FIRST - 6
+  RBN_DELETEDBAND* = RBN_FIRST - 7
+  RBN_CHILDSIZE* = RBN_FIRST - 8
+  RBN_CHEVRONPUSHED* = RBN_FIRST - 10
+  RBN_SPLITTERDRAG* = RBN_FIRST - 11
+  RBN_MINMAX* = RBN_FIRST - 21
+  RBN_AUTOBREAK* = RBN_FIRST - 22
   RBNM_ID* = 0x1
   RBNM_STYLE* = 0x2
   RBNM_LPARAM* = 0x4
@@ -2336,62 +2503,60 @@
   TTI_INFO_LARGE* = 4
   TTI_WARNING_LARGE* = 5
   TTI_ERROR_LARGE* = 6
-  TTM_ACTIVATE* = WM_USER+1
-  TTM_SETDELAYTIME* = WM_USER+3
-  TTM_ADDTOOLA* = WM_USER+4
-  TTM_ADDTOOLW* = WM_USER+50
-  TTM_DELTOOLA* = WM_USER+5
-  TTM_DELTOOLW* = WM_USER+51
-  TTM_NEWTOOLRECTA* = WM_USER+6
-  TTM_NEWTOOLRECTW* = WM_USER+52
-  TTM_RELAYEVENT* = WM_USER+7
-  TTM_GETTOOLINFOA* = WM_USER+8
-  TTM_GETTOOLINFOW* = WM_USER+53
-  TTM_SETTOOLINFOA* = WM_USER+9
-  TTM_SETTOOLINFOW* = WM_USER+54
-  TTM_HITTESTA* = WM_USER+10
-  TTM_HITTESTW* = WM_USER+55
-  TTM_GETTEXTA* = WM_USER+11
-  TTM_GETTEXTW* = WM_USER+56
-  TTM_UPDATETIPTEXTA* = WM_USER+12
-  TTM_UPDATETIPTEXTW* = WM_USER+57
-  TTM_GETTOOLCOUNT* = WM_USER+13
-  TTM_ENUMTOOLSA* = WM_USER+14
-  TTM_ENUMTOOLSW* = WM_USER+58
-  TTM_GETCURRENTTOOLA* = WM_USER+15
-  TTM_GETCURRENTTOOLW* = WM_USER+59
-  TTM_WINDOWFROMPOINT* = WM_USER+16
-  TTM_TRACKACTIVATE* = WM_USER+17
-  TTM_TRACKPOSITION* = WM_USER+18
-  TTM_SETTIPBKCOLOR* = WM_USER+19
-  TTM_SETTIPTEXTCOLOR* = WM_USER+20
-  TTM_GETDELAYTIME* = WM_USER+21
-  TTM_GETTIPBKCOLOR* = WM_USER+22
-  TTM_GETTIPTEXTCOLOR* = WM_USER+23
-  TTM_SETMAXTIPWIDTH* = WM_USER+24
-  TTM_GETMAXTIPWIDTH* = WM_USER+25
-  TTM_SETMARGIN* = WM_USER+26
-  TTM_GETMARGIN* = WM_USER+27
-  TTM_POP* = WM_USER+28
-  TTM_UPDATE* = WM_USER+29
-  TTM_GETBUBBLESIZE* = WM_USER+30
-  TTM_ADJUSTRECT* = WM_USER+31
-  TTM_SETTITLEA* = WM_USER+32
-  TTM_SETTITLEW* = WM_USER+33
-  TTM_POPUP* = WM_USER+34
-  TTM_GETTITLE* = WM_USER+35
+  TTM_ACTIVATE* = WM_USER + 1
+  TTM_SETDELAYTIME* = WM_USER + 3
+  TTM_ADDTOOLA* = WM_USER + 4
+  TTM_ADDTOOLW* = WM_USER + 50
+  TTM_DELTOOLA* = WM_USER + 5
+  TTM_DELTOOLW* = WM_USER + 51
+  TTM_NEWTOOLRECTA* = WM_USER + 6
+  TTM_NEWTOOLRECTW* = WM_USER + 52
+  TTM_RELAYEVENT* = WM_USER + 7
+  TTM_GETTOOLINFOA* = WM_USER + 8
+  TTM_GETTOOLINFOW* = WM_USER + 53
+  TTM_SETTOOLINFOA* = WM_USER + 9
+  TTM_SETTOOLINFOW* = WM_USER + 54
+  TTM_HITTESTA* = WM_USER + 10
+  TTM_HITTESTW* = WM_USER + 55
+  TTM_GETTEXTA* = WM_USER + 11
+  TTM_GETTEXTW* = WM_USER + 56
+  TTM_UPDATETIPTEXTA* = WM_USER + 12
+  TTM_UPDATETIPTEXTW* = WM_USER + 57
+  TTM_GETTOOLCOUNT* = WM_USER + 13
+  TTM_ENUMTOOLSA* = WM_USER + 14
+  TTM_ENUMTOOLSW* = WM_USER + 58
+  TTM_GETCURRENTTOOLA* = WM_USER + 15
+  TTM_GETCURRENTTOOLW* = WM_USER + 59
+  TTM_WINDOWFROMPOINT* = WM_USER + 16
+  TTM_TRACKACTIVATE* = WM_USER + 17
+  TTM_TRACKPOSITION* = WM_USER + 18
+  TTM_SETTIPBKCOLOR* = WM_USER + 19
+  TTM_SETTIPTEXTCOLOR* = WM_USER + 20
+  TTM_GETDELAYTIME* = WM_USER + 21
+  TTM_GETTIPBKCOLOR* = WM_USER + 22
+  TTM_GETTIPTEXTCOLOR* = WM_USER + 23
+  TTM_SETMAXTIPWIDTH* = WM_USER + 24
+  TTM_GETMAXTIPWIDTH* = WM_USER + 25
+  TTM_SETMARGIN* = WM_USER + 26
+  TTM_GETMARGIN* = WM_USER + 27
+  TTM_POP* = WM_USER + 28
+  TTM_UPDATE* = WM_USER + 29
+  TTM_GETBUBBLESIZE* = WM_USER + 30
+  TTM_ADJUSTRECT* = WM_USER + 31
+  TTM_SETTITLEA* = WM_USER + 32
+  TTM_SETTITLEW* = WM_USER + 33
+  TTM_POPUP* = WM_USER + 34
+  TTM_GETTITLE* = WM_USER + 35
   TTM_SETWINDOWTHEME* = CCM_SETWINDOWTHEME
-  TTN_GETDISPINFOA* = TTN_FIRST-0
-  TTN_GETDISPINFOW* = TTN_FIRST-10
-  TTN_SHOW* = TTN_FIRST-1
-  TTN_POP* = TTN_FIRST-2
-  TTN_LINKCLICK* = TTN_FIRST-3
+  TTN_GETDISPINFOA* = TTN_FIRST - 0
+  TTN_GETDISPINFOW* = TTN_FIRST - 10
+  TTN_SHOW* = TTN_FIRST - 1
+  TTN_POP* = TTN_FIRST - 2
+  TTN_LINKCLICK* = TTN_FIRST - 3
 when winimUnicode:
-  const
-    TTN_GETDISPINFO* = TTN_GETDISPINFOW
+  const TTN_GETDISPINFO* = TTN_GETDISPINFOW
 when winimAnsi:
-  const
-    TTN_GETDISPINFO* = TTN_GETDISPINFOA
+  const TTN_GETDISPINFO* = TTN_GETDISPINFOA
 const
   TTN_NEEDTEXT* = TTN_GETDISPINFO
   TTN_NEEDTEXTA* = TTN_GETDISPINFOA
@@ -2401,25 +2566,25 @@
   SBT_TOOLTIPS* = 0x800
   STATUSCLASSNAMEW* = "msctls_statusbar32"
   STATUSCLASSNAMEA* = "msctls_statusbar32"
-  SB_SETTEXTA* = WM_USER+1
-  SB_SETTEXTW* = WM_USER+11
-  SB_GETTEXTA* = WM_USER+2
-  SB_GETTEXTW* = WM_USER+13
-  SB_GETTEXTLENGTHA* = WM_USER+3
-  SB_GETTEXTLENGTHW* = WM_USER+12
-  SB_SETPARTS* = WM_USER+4
-  SB_GETPARTS* = WM_USER+6
-  SB_GETBORDERS* = WM_USER+7
-  SB_SETMINHEIGHT* = WM_USER+8
-  SB_SIMPLE* = WM_USER+9
-  SB_GETRECT* = WM_USER+10
-  SB_ISSIMPLE* = WM_USER+14
-  SB_SETICON* = WM_USER+15
-  SB_SETTIPTEXTA* = WM_USER+16
-  SB_SETTIPTEXTW* = WM_USER+17
-  SB_GETTIPTEXTA* = WM_USER+18
-  SB_GETTIPTEXTW* = WM_USER+19
-  SB_GETICON* = WM_USER+20
+  SB_SETTEXTA* = WM_USER + 1
+  SB_SETTEXTW* = WM_USER + 11
+  SB_GETTEXTA* = WM_USER + 2
+  SB_GETTEXTW* = WM_USER + 13
+  SB_GETTEXTLENGTHA* = WM_USER + 3
+  SB_GETTEXTLENGTHW* = WM_USER + 12
+  SB_SETPARTS* = WM_USER + 4
+  SB_GETPARTS* = WM_USER + 6
+  SB_GETBORDERS* = WM_USER + 7
+  SB_SETMINHEIGHT* = WM_USER + 8
+  SB_SIMPLE* = WM_USER + 9
+  SB_GETRECT* = WM_USER + 10
+  SB_ISSIMPLE* = WM_USER + 14
+  SB_SETICON* = WM_USER + 15
+  SB_SETTIPTEXTA* = WM_USER + 16
+  SB_SETTIPTEXTW* = WM_USER + 17
+  SB_GETTIPTEXTA* = WM_USER + 18
+  SB_GETTIPTEXTW* = WM_USER + 19
+  SB_GETICON* = WM_USER + 20
   SB_SETUNICODEFORMAT* = CCM_SETUNICODEFORMAT
   SB_GETUNICODEFORMAT* = CCM_GETUNICODEFORMAT
   SBT_OWNERDRAW* = 0x1000
@@ -2428,7 +2593,7 @@
   SBT_RTLREADING* = 0x400
   SBT_NOTABPARSING* = 0x800
   SB_SETBKCOLOR* = CCM_SETBKCOLOR
-  SBN_SIMPLEMODECHANGE* = SBN_FIRST-0
+  SBN_SIMPLEMODECHANGE* = SBN_FIRST - 0
   SB_SIMPLEID* = 0xff
   MINSYSCOMMAND* = SC_SIZE
   TRACKBAR_CLASSA* = "msctls_trackbar32"
@@ -2451,42 +2616,42 @@
   TBS_NOTIFYBEFOREMOVE* = 0x800
   TBS_TRANSPARENTBKGND* = 0x1000
   TBM_GETPOS* = WM_USER
-  TBM_GETRANGEMIN* = WM_USER+1
-  TBM_GETRANGEMAX* = WM_USER+2
-  TBM_GETTIC* = WM_USER+3
-  TBM_SETTIC* = WM_USER+4
-  TBM_SETPOS* = WM_USER+5
-  TBM_SETRANGE* = WM_USER+6
-  TBM_SETRANGEMIN* = WM_USER+7
-  TBM_SETRANGEMAX* = WM_USER+8
-  TBM_CLEARTICS* = WM_USER+9
-  TBM_SETSEL* = WM_USER+10
-  TBM_SETSELSTART* = WM_USER+11
-  TBM_SETSELEND* = WM_USER+12
-  TBM_GETPTICS* = WM_USER+14
-  TBM_GETTICPOS* = WM_USER+15
-  TBM_GETNUMTICS* = WM_USER+16
-  TBM_GETSELSTART* = WM_USER+17
-  TBM_GETSELEND* = WM_USER+18
-  TBM_CLEARSEL* = WM_USER+19
-  TBM_SETTICFREQ* = WM_USER+20
-  TBM_SETPAGESIZE* = WM_USER+21
-  TBM_GETPAGESIZE* = WM_USER+22
-  TBM_SETLINESIZE* = WM_USER+23
-  TBM_GETLINESIZE* = WM_USER+24
-  TBM_GETTHUMBRECT* = WM_USER+25
-  TBM_GETCHANNELRECT* = WM_USER+26
-  TBM_SETTHUMBLENGTH* = WM_USER+27
-  TBM_GETTHUMBLENGTH* = WM_USER+28
-  TBM_SETTOOLTIPS* = WM_USER+29
-  TBM_GETTOOLTIPS* = WM_USER+30
-  TBM_SETTIPSIDE* = WM_USER+31
+  TBM_GETRANGEMIN* = WM_USER + 1
+  TBM_GETRANGEMAX* = WM_USER + 2
+  TBM_GETTIC* = WM_USER + 3
+  TBM_SETTIC* = WM_USER + 4
+  TBM_SETPOS* = WM_USER + 5
+  TBM_SETRANGE* = WM_USER + 6
+  TBM_SETRANGEMIN* = WM_USER + 7
+  TBM_SETRANGEMAX* = WM_USER + 8
+  TBM_CLEARTICS* = WM_USER + 9
+  TBM_SETSEL* = WM_USER + 10
+  TBM_SETSELSTART* = WM_USER + 11
+  TBM_SETSELEND* = WM_USER + 12
+  TBM_GETPTICS* = WM_USER + 14
+  TBM_GETTICPOS* = WM_USER + 15
+  TBM_GETNUMTICS* = WM_USER + 16
+  TBM_GETSELSTART* = WM_USER + 17
+  TBM_GETSELEND* = WM_USER + 18
+  TBM_CLEARSEL* = WM_USER + 19
+  TBM_SETTICFREQ* = WM_USER + 20
+  TBM_SETPAGESIZE* = WM_USER + 21
+  TBM_GETPAGESIZE* = WM_USER + 22
+  TBM_SETLINESIZE* = WM_USER + 23
+  TBM_GETLINESIZE* = WM_USER + 24
+  TBM_GETTHUMBRECT* = WM_USER + 25
+  TBM_GETCHANNELRECT* = WM_USER + 26
+  TBM_SETTHUMBLENGTH* = WM_USER + 27
+  TBM_GETTHUMBLENGTH* = WM_USER + 28
+  TBM_SETTOOLTIPS* = WM_USER + 29
+  TBM_GETTOOLTIPS* = WM_USER + 30
+  TBM_SETTIPSIDE* = WM_USER + 31
   TBTS_TOP* = 0
   TBTS_LEFT* = 1
   TBTS_BOTTOM* = 2
   TBTS_RIGHT* = 3
-  TBM_SETBUDDY* = WM_USER+32
-  TBM_GETBUDDY* = WM_USER+33
+  TBM_SETBUDDY* = WM_USER + 32
+  TBM_GETBUDDY* = WM_USER + 33
   TBM_SETUNICODEFORMAT* = CCM_SETUNICODEFORMAT
   TBM_GETUNICODEFORMAT* = CCM_GETUNICODEFORMAT
   TB_LINEUP* = 0
@@ -2501,11 +2666,11 @@
   TBCD_TICS* = 0x1
   TBCD_THUMB* = 0x2
   TBCD_CHANNEL* = 0x3
-  TRBN_THUMBPOSCHANGING* = TRBN_FIRST-1
-  DL_BEGINDRAG* = WM_USER+133
-  DL_DRAGGING* = WM_USER+134
-  DL_DROPPED* = WM_USER+135
-  DL_CANCELDRAG* = WM_USER+136
+  TRBN_THUMBPOSCHANGING* = TRBN_FIRST - 1
+  DL_BEGINDRAG* = WM_USER + 133
+  DL_DRAGGING* = WM_USER + 134
+  DL_DROPPED* = WM_USER + 135
+  DL_CANCELDRAG* = WM_USER + 136
   DL_CURSORSET* = 0
   DL_STOPCURSOR* = 1
   DL_COPYCURSOR* = 2
@@ -2524,44 +2689,44 @@
   UDS_HORZ* = 0x40
   UDS_NOTHOUSANDS* = 0x80
   UDS_HOTTRACK* = 0x100
-  UDM_SETRANGE* = WM_USER+101
-  UDM_GETRANGE* = WM_USER+102
-  UDM_SETPOS* = WM_USER+103
-  UDM_GETPOS* = WM_USER+104
-  UDM_SETBUDDY* = WM_USER+105
-  UDM_GETBUDDY* = WM_USER+106
-  UDM_SETACCEL* = WM_USER+107
-  UDM_GETACCEL* = WM_USER+108
-  UDM_SETBASE* = WM_USER+109
-  UDM_GETBASE* = WM_USER+110
-  UDM_SETRANGE32* = WM_USER+111
-  UDM_GETRANGE32* = WM_USER+112
+  UDM_SETRANGE* = WM_USER + 101
+  UDM_GETRANGE* = WM_USER + 102
+  UDM_SETPOS* = WM_USER + 103
+  UDM_GETPOS* = WM_USER + 104
+  UDM_SETBUDDY* = WM_USER + 105
+  UDM_GETBUDDY* = WM_USER + 106
+  UDM_SETACCEL* = WM_USER + 107
+  UDM_GETACCEL* = WM_USER + 108
+  UDM_SETBASE* = WM_USER + 109
+  UDM_GETBASE* = WM_USER + 110
+  UDM_SETRANGE32* = WM_USER + 111
+  UDM_GETRANGE32* = WM_USER + 112
   UDM_SETUNICODEFORMAT* = CCM_SETUNICODEFORMAT
   UDM_GETUNICODEFORMAT* = CCM_GETUNICODEFORMAT
-  UDM_SETPOS32* = WM_USER+113
-  UDM_GETPOS32* = WM_USER+114
-  UDN_DELTAPOS* = UDN_FIRST-1
+  UDM_SETPOS32* = WM_USER + 113
+  UDM_GETPOS32* = WM_USER + 114
+  UDN_DELTAPOS* = UDN_FIRST - 1
   PROGRESS_CLASSA* = "msctls_progress32"
   PROGRESS_CLASSW* = "msctls_progress32"
   PBS_SMOOTH* = 0x1
   PBS_VERTICAL* = 0x4
-  PBM_SETRANGE* = WM_USER+1
-  PBM_SETPOS* = WM_USER+2
-  PBM_DELTAPOS* = WM_USER+3
-  PBM_SETSTEP* = WM_USER+4
-  PBM_STEPIT* = WM_USER+5
-  PBM_SETRANGE32* = WM_USER+6
-  PBM_GETRANGE* = WM_USER+7
-  PBM_GETPOS* = WM_USER+8
-  PBM_SETBARCOLOR* = WM_USER+9
+  PBM_SETRANGE* = WM_USER + 1
+  PBM_SETPOS* = WM_USER + 2
+  PBM_DELTAPOS* = WM_USER + 3
+  PBM_SETSTEP* = WM_USER + 4
+  PBM_STEPIT* = WM_USER + 5
+  PBM_SETRANGE32* = WM_USER + 6
+  PBM_GETRANGE* = WM_USER + 7
+  PBM_GETPOS* = WM_USER + 8
+  PBM_SETBARCOLOR* = WM_USER + 9
   PBM_SETBKCOLOR* = CCM_SETBKCOLOR
   PBS_MARQUEE* = 0x8
-  PBM_SETMARQUEE* = WM_USER+10
-  PBM_GETSTEP* = WM_USER+13
-  PBM_GETBKCOLOR* = WM_USER+14
-  PBM_GETBARCOLOR* = WM_USER+15
-  PBM_SETSTATE* = WM_USER+16
-  PBM_GETSTATE* = WM_USER+17
+  PBM_SETMARQUEE* = WM_USER + 10
+  PBM_GETSTEP* = WM_USER + 13
+  PBM_GETBKCOLOR* = WM_USER + 14
+  PBM_GETBARCOLOR* = WM_USER + 15
+  PBM_SETSTATE* = WM_USER + 16
+  PBM_GETSTATE* = WM_USER + 17
   PBS_SMOOTHREVERSE* = 0x10
   PBST_NORMAL* = 1
   PBST_ERROR* = 2
@@ -2578,9 +2743,9 @@
   HKCOMB_SA* = 0x20
   HKCOMB_CA* = 0x40
   HKCOMB_SCA* = 0x80
-  HKM_SETHOTKEY* = WM_USER+1
-  HKM_GETHOTKEY* = WM_USER+2
-  HKM_SETRULES* = WM_USER+3
+  HKM_SETHOTKEY* = WM_USER + 1
+  HKM_GETHOTKEY* = WM_USER + 2
+  HKM_SETRULES* = WM_USER + 3
   HOTKEY_CLASSA* = "msctls_hotkey32"
   HOTKEY_CLASSW* = "msctls_hotkey32"
   CCS_TOP* = 0x1
@@ -2622,15 +2787,15 @@
   LVS_NOSORTHEADER* = 0x8000
   LVM_SETUNICODEFORMAT* = CCM_SETUNICODEFORMAT
   LVM_GETUNICODEFORMAT* = CCM_GETUNICODEFORMAT
-  LVM_GETBKCOLOR* = LVM_FIRST+0
-  LVM_SETBKCOLOR* = LVM_FIRST+1
-  LVM_GETIMAGELIST* = LVM_FIRST+2
+  LVM_GETBKCOLOR* = LVM_FIRST + 0
+  LVM_SETBKCOLOR* = LVM_FIRST + 1
+  LVM_GETIMAGELIST* = LVM_FIRST + 2
   LVSIL_NORMAL* = 0
   LVSIL_SMALL* = 1
   LVSIL_STATE* = 2
   LVSIL_GROUPHEADER* = 3
-  LVM_SETIMAGELIST* = LVM_FIRST+3
-  LVM_GETITEMCOUNT* = LVM_FIRST+4
+  LVM_SETIMAGELIST* = LVM_FIRST + 3
+  LVM_GETITEMCOUNT* = LVM_FIRST + 4
   LVIF_TEXT* = 0x1
   LVIF_IMAGE* = 0x2
   LVIF_PARAM* = 0x4
@@ -2654,16 +2819,16 @@
   I_IMAGECALLBACK* = -1
   I_IMAGENONE* = -2
   I_COLUMNSCALLBACK* = UINT(-1)
-  LVM_GETITEMA* = LVM_FIRST+5
-  LVM_GETITEMW* = LVM_FIRST+75
-  LVM_SETITEMA* = LVM_FIRST+6
-  LVM_SETITEMW* = LVM_FIRST+76
-  LVM_INSERTITEMA* = LVM_FIRST+7
-  LVM_INSERTITEMW* = LVM_FIRST+77
-  LVM_DELETEITEM* = LVM_FIRST+8
-  LVM_DELETEALLITEMS* = LVM_FIRST+9
-  LVM_GETCALLBACKMASK* = LVM_FIRST+10
-  LVM_SETCALLBACKMASK* = LVM_FIRST+11
+  LVM_GETITEMA* = LVM_FIRST + 5
+  LVM_GETITEMW* = LVM_FIRST + 75
+  LVM_SETITEMA* = LVM_FIRST + 6
+  LVM_SETITEMW* = LVM_FIRST + 76
+  LVM_INSERTITEMA* = LVM_FIRST + 7
+  LVM_INSERTITEMW* = LVM_FIRST + 77
+  LVM_DELETEITEM* = LVM_FIRST + 8
+  LVM_DELETEALLITEMS* = LVM_FIRST + 9
+  LVM_GETCALLBACKMASK* = LVM_FIRST + 10
+  LVM_SETCALLBACKMASK* = LVM_FIRST + 11
   LVNI_ALL* = 0x0
   LVNI_FOCUSED* = 0x1
   LVNI_SELECTED* = 0x2
@@ -2679,23 +2844,23 @@
   LVNI_TOLEFT* = 0x400
   LVNI_TORIGHT* = 0x800
   LVNI_DIRECTIONMASK* = LVNI_ABOVE or LVNI_BELOW or LVNI_TOLEFT or LVNI_TORIGHT
-  LVM_GETNEXTITEM* = LVM_FIRST+12
+  LVM_GETNEXTITEM* = LVM_FIRST + 12
   LVFI_PARAM* = 0x1
   LVFI_STRING* = 0x2
   LVFI_PARTIAL* = 0x8
   LVFI_WRAP* = 0x20
   LVFI_NEARESTXY* = 0x40
-  LVM_FINDITEMA* = LVM_FIRST+13
-  LVM_FINDITEMW* = LVM_FIRST+83
+  LVM_FINDITEMA* = LVM_FIRST + 13
+  LVM_FINDITEMW* = LVM_FIRST + 83
   LVIR_BOUNDS* = 0
   LVIR_ICON* = 1
   LVIR_LABEL* = 2
   LVIR_SELECTBOUNDS* = 3
-  LVM_GETITEMRECT* = LVM_FIRST+14
-  LVM_SETITEMPOSITION* = LVM_FIRST+15
-  LVM_GETITEMPOSITION* = LVM_FIRST+16
-  LVM_GETSTRINGWIDTHA* = LVM_FIRST+17
-  LVM_GETSTRINGWIDTHW* = LVM_FIRST+87
+  LVM_GETITEMRECT* = LVM_FIRST + 14
+  LVM_SETITEMPOSITION* = LVM_FIRST + 15
+  LVM_GETITEMPOSITION* = LVM_FIRST + 16
+  LVM_GETSTRINGWIDTHA* = LVM_FIRST + 17
+  LVM_GETSTRINGWIDTHW* = LVM_FIRST + 87
   LVHT_NOWHERE* = 0x1
   LVHT_ONITEMICON* = 0x2
   LVHT_ONITEMLABEL* = 0x4
@@ -2711,20 +2876,22 @@
   LVHT_EX_GROUP_BACKGROUND* = 0x80000000'i32
   LVHT_EX_GROUP_STATEICON* = 0x01000000
   LVHT_EX_GROUP_SUBSETLINK* = 0x02000000
-  LVHT_EX_GROUP* = LVHT_EX_GROUP_BACKGROUND or LVHT_EX_GROUP_COLLAPSE or LVHT_EX_GROUP_FOOTER or LVHT_EX_GROUP_HEADER or LVHT_EX_GROUP_STATEICON or LVHT_EX_GROUP_SUBSETLINK
+  LVHT_EX_GROUP* =
+    LVHT_EX_GROUP_BACKGROUND or LVHT_EX_GROUP_COLLAPSE or LVHT_EX_GROUP_FOOTER or
+    LVHT_EX_GROUP_HEADER or LVHT_EX_GROUP_STATEICON or LVHT_EX_GROUP_SUBSETLINK
   LVHT_EX_ONCONTENTS* = 0x04000000
-  LVM_HITTEST* = LVM_FIRST+18
-  LVM_ENSUREVISIBLE* = LVM_FIRST+19
-  LVM_SCROLL* = LVM_FIRST+20
-  LVM_REDRAWITEMS* = LVM_FIRST+21
+  LVM_HITTEST* = LVM_FIRST + 18
+  LVM_ENSUREVISIBLE* = LVM_FIRST + 19
+  LVM_SCROLL* = LVM_FIRST + 20
+  LVM_REDRAWITEMS* = LVM_FIRST + 21
   LVA_DEFAULT* = 0x0
   LVA_ALIGNLEFT* = 0x1
   LVA_ALIGNTOP* = 0x2
   LVA_SNAPTOGRID* = 0x5
-  LVM_ARRANGE* = LVM_FIRST+22
-  LVM_EDITLABELA* = LVM_FIRST+23
-  LVM_EDITLABELW* = LVM_FIRST+118
-  LVM_GETEDITCONTROL* = LVM_FIRST+24
+  LVM_ARRANGE* = LVM_FIRST + 22
+  LVM_EDITLABELA* = LVM_FIRST + 23
+  LVM_EDITLABELW* = LVM_FIRST + 118
+  LVM_GETEDITCONTROL* = LVM_FIRST + 24
   LVCF_FMT* = 0x1
   LVCF_WIDTH* = 0x2
   LVCF_TEXT* = 0x4
@@ -2750,46 +2917,46 @@
   LVCFMT_NO_TITLE* = 0x800000
   LVCFMT_SPLITBUTTON* = 0x1000000
   LVCFMT_TILE_PLACEMENTMASK* = LVCFMT_LINE_BREAK or LVCFMT_FILL
-  LVM_GETCOLUMNA* = LVM_FIRST+25
-  LVM_GETCOLUMNW* = LVM_FIRST+95
-  LVM_SETCOLUMNA* = LVM_FIRST+26
-  LVM_SETCOLUMNW* = LVM_FIRST+96
-  LVM_INSERTCOLUMNA* = LVM_FIRST+27
-  LVM_INSERTCOLUMNW* = LVM_FIRST+97
-  LVM_DELETECOLUMN* = LVM_FIRST+28
-  LVM_GETCOLUMNWIDTH* = LVM_FIRST+29
+  LVM_GETCOLUMNA* = LVM_FIRST + 25
+  LVM_GETCOLUMNW* = LVM_FIRST + 95
+  LVM_SETCOLUMNA* = LVM_FIRST + 26
+  LVM_SETCOLUMNW* = LVM_FIRST + 96
+  LVM_INSERTCOLUMNA* = LVM_FIRST + 27
+  LVM_INSERTCOLUMNW* = LVM_FIRST + 97
+  LVM_DELETECOLUMN* = LVM_FIRST + 28
+  LVM_GETCOLUMNWIDTH* = LVM_FIRST + 29
   LVSCW_AUTOSIZE* = -1
   LVSCW_AUTOSIZE_USEHEADER* = -2
-  LVM_SETCOLUMNWIDTH* = LVM_FIRST+30
-  LVM_GETHEADER* = LVM_FIRST+31
-  LVM_CREATEDRAGIMAGE* = LVM_FIRST+33
-  LVM_GETVIEWRECT* = LVM_FIRST+34
-  LVM_GETTEXTCOLOR* = LVM_FIRST+35
-  LVM_SETTEXTCOLOR* = LVM_FIRST+36
-  LVM_GETTEXTBKCOLOR* = LVM_FIRST+37
-  LVM_SETTEXTBKCOLOR* = LVM_FIRST+38
-  LVM_GETTOPINDEX* = LVM_FIRST+39
-  LVM_GETCOUNTPERPAGE* = LVM_FIRST+40
-  LVM_GETORIGIN* = LVM_FIRST+41
-  LVM_UPDATE* = LVM_FIRST+42
-  LVM_SETITEMSTATE* = LVM_FIRST+43
-  LVM_GETITEMSTATE* = LVM_FIRST+44
-  LVM_GETITEMTEXTA* = LVM_FIRST+45
-  LVM_GETITEMTEXTW* = LVM_FIRST+115
-  LVM_SETITEMTEXTA* = LVM_FIRST+46
-  LVM_SETITEMTEXTW* = LVM_FIRST+116
+  LVM_SETCOLUMNWIDTH* = LVM_FIRST + 30
+  LVM_GETHEADER* = LVM_FIRST + 31
+  LVM_CREATEDRAGIMAGE* = LVM_FIRST + 33
+  LVM_GETVIEWRECT* = LVM_FIRST + 34
+  LVM_GETTEXTCOLOR* = LVM_FIRST + 35
+  LVM_SETTEXTCOLOR* = LVM_FIRST + 36
+  LVM_GETTEXTBKCOLOR* = LVM_FIRST + 37
+  LVM_SETTEXTBKCOLOR* = LVM_FIRST + 38
+  LVM_GETTOPINDEX* = LVM_FIRST + 39
+  LVM_GETCOUNTPERPAGE* = LVM_FIRST + 40
+  LVM_GETORIGIN* = LVM_FIRST + 41
+  LVM_UPDATE* = LVM_FIRST + 42
+  LVM_SETITEMSTATE* = LVM_FIRST + 43
+  LVM_GETITEMSTATE* = LVM_FIRST + 44
+  LVM_GETITEMTEXTA* = LVM_FIRST + 45
+  LVM_GETITEMTEXTW* = LVM_FIRST + 115
+  LVM_SETITEMTEXTA* = LVM_FIRST + 46
+  LVM_SETITEMTEXTW* = LVM_FIRST + 116
   LVSICF_NOINVALIDATEALL* = 0x1
   LVSICF_NOSCROLL* = 0x2
-  LVM_SETITEMCOUNT* = LVM_FIRST+47
-  LVM_SORTITEMS* = LVM_FIRST+48
-  LVM_SETITEMPOSITION32* = LVM_FIRST+49
-  LVM_GETSELECTEDCOUNT* = LVM_FIRST+50
-  LVM_GETITEMSPACING* = LVM_FIRST+51
-  LVM_GETISEARCHSTRINGA* = LVM_FIRST+52
-  LVM_GETISEARCHSTRINGW* = LVM_FIRST+117
-  LVM_SETICONSPACING* = LVM_FIRST+53
-  LVM_SETEXTENDEDLISTVIEWSTYLE* = LVM_FIRST+54
-  LVM_GETEXTENDEDLISTVIEWSTYLE* = LVM_FIRST+55
+  LVM_SETITEMCOUNT* = LVM_FIRST + 47
+  LVM_SORTITEMS* = LVM_FIRST + 48
+  LVM_SETITEMPOSITION32* = LVM_FIRST + 49
+  LVM_GETSELECTEDCOUNT* = LVM_FIRST + 50
+  LVM_GETITEMSPACING* = LVM_FIRST + 51
+  LVM_GETISEARCHSTRINGA* = LVM_FIRST + 52
+  LVM_GETISEARCHSTRINGW* = LVM_FIRST + 117
+  LVM_SETICONSPACING* = LVM_FIRST + 53
+  LVM_SETEXTENDEDLISTVIEWSTYLE* = LVM_FIRST + 54
+  LVM_GETEXTENDEDLISTVIEWSTYLE* = LVM_FIRST + 55
   LVS_EX_GRIDLINES* = 0x1
   LVS_EX_SUBITEMIMAGES* = 0x2
   LVS_EX_CHECKBOXES* = 0x4
@@ -2820,26 +2987,26 @@
   LVS_EX_AUTOSIZECOLUMNS* = 0x10000000
   LVS_EX_COLUMNSNAPPOINTS* = 0x40000000
   LVS_EX_COLUMNOVERFLOW* = 0x80000000'i32
-  LVM_GETSUBITEMRECT* = LVM_FIRST+56
-  LVM_SUBITEMHITTEST* = LVM_FIRST+57
-  LVM_SETCOLUMNORDERARRAY* = LVM_FIRST+58
-  LVM_GETCOLUMNORDERARRAY* = LVM_FIRST+59
-  LVM_SETHOTITEM* = LVM_FIRST+60
-  LVM_GETHOTITEM* = LVM_FIRST+61
-  LVM_SETHOTCURSOR* = LVM_FIRST+62
-  LVM_GETHOTCURSOR* = LVM_FIRST+63
-  LVM_APPROXIMATEVIEWRECT* = LVM_FIRST+64
+  LVM_GETSUBITEMRECT* = LVM_FIRST + 56
+  LVM_SUBITEMHITTEST* = LVM_FIRST + 57
+  LVM_SETCOLUMNORDERARRAY* = LVM_FIRST + 58
+  LVM_GETCOLUMNORDERARRAY* = LVM_FIRST + 59
+  LVM_SETHOTITEM* = LVM_FIRST + 60
+  LVM_GETHOTITEM* = LVM_FIRST + 61
+  LVM_SETHOTCURSOR* = LVM_FIRST + 62
+  LVM_GETHOTCURSOR* = LVM_FIRST + 63
+  LVM_APPROXIMATEVIEWRECT* = LVM_FIRST + 64
   LV_MAX_WORKAREAS* = 16
-  LVM_SETWORKAREAS* = LVM_FIRST+65
-  LVM_GETWORKAREAS* = LVM_FIRST+70
-  LVM_GETNUMBEROFWORKAREAS* = LVM_FIRST+73
-  LVM_GETSELECTIONMARK* = LVM_FIRST+66
-  LVM_SETSELECTIONMARK* = LVM_FIRST+67
-  LVM_SETHOVERTIME* = LVM_FIRST+71
-  LVM_GETHOVERTIME* = LVM_FIRST+72
-  LVM_SETTOOLTIPS* = LVM_FIRST+74
-  LVM_GETTOOLTIPS* = LVM_FIRST+78
-  LVM_SORTITEMSEX* = LVM_FIRST+81
+  LVM_SETWORKAREAS* = LVM_FIRST + 65
+  LVM_GETWORKAREAS* = LVM_FIRST + 70
+  LVM_GETNUMBEROFWORKAREAS* = LVM_FIRST + 73
+  LVM_GETSELECTIONMARK* = LVM_FIRST + 66
+  LVM_SETSELECTIONMARK* = LVM_FIRST + 67
+  LVM_SETHOVERTIME* = LVM_FIRST + 71
+  LVM_GETHOVERTIME* = LVM_FIRST + 72
+  LVM_SETTOOLTIPS* = LVM_FIRST + 74
+  LVM_GETTOOLTIPS* = LVM_FIRST + 78
+  LVM_SORTITEMSEX* = LVM_FIRST + 81
   LVBKIF_SOURCE_NONE* = 0x0
   LVBKIF_SOURCE_HBITMAP* = 0x1
   LVBKIF_SOURCE_URL* = 0x2
@@ -2850,20 +3017,20 @@
   LVBKIF_FLAG_TILEOFFSET* = 0x100
   LVBKIF_TYPE_WATERMARK* = 0x10000000
   LVBKIF_FLAG_ALPHABLEND* = 0x20000000
-  LVM_SETBKIMAGEA* = LVM_FIRST+68
-  LVM_SETBKIMAGEW* = LVM_FIRST+138
-  LVM_GETBKIMAGEA* = LVM_FIRST+69
-  LVM_GETBKIMAGEW* = LVM_FIRST+139
-  LVM_SETSELECTEDCOLUMN* = LVM_FIRST+140
-  LVM_SETTILEWIDTH* = LVM_FIRST+141
+  LVM_SETBKIMAGEA* = LVM_FIRST + 68
+  LVM_SETBKIMAGEW* = LVM_FIRST + 138
+  LVM_GETBKIMAGEA* = LVM_FIRST + 69
+  LVM_GETBKIMAGEW* = LVM_FIRST + 139
+  LVM_SETSELECTEDCOLUMN* = LVM_FIRST + 140
+  LVM_SETTILEWIDTH* = LVM_FIRST + 141
   LV_VIEW_ICON* = 0x0
   LV_VIEW_DETAILS* = 0x1
   LV_VIEW_SMALLICON* = 0x2
   LV_VIEW_LIST* = 0x3
   LV_VIEW_TILE* = 0x4
   LV_VIEW_MAX* = 0x4
-  LVM_SETVIEW* = LVM_FIRST+142
-  LVM_GETVIEW* = LVM_FIRST+143
+  LVM_SETVIEW* = LVM_FIRST + 142
+  LVM_GETVIEW* = LVM_FIRST + 143
   LVGF_NONE* = 0x0
   LVGF_HEADER* = 0x1
   LVGF_FOOTER* = 0x2
@@ -2894,32 +3061,32 @@
   LVGA_FOOTER_LEFT* = 0x8
   LVGA_FOOTER_CENTER* = 0x10
   LVGA_FOOTER_RIGHT* = 0x20
-  LVM_INSERTGROUP* = LVM_FIRST+145
-  LVM_SETGROUPINFO* = LVM_FIRST+147
-  LVM_GETGROUPINFO* = LVM_FIRST+149
-  LVM_REMOVEGROUP* = LVM_FIRST+150
-  LVM_MOVEGROUP* = LVM_FIRST+151
-  LVM_GETGROUPCOUNT* = LVM_FIRST+152
-  LVM_GETGROUPINFOBYINDEX* = LVM_FIRST+153
-  LVM_MOVEITEMTOGROUP* = LVM_FIRST+154
+  LVM_INSERTGROUP* = LVM_FIRST + 145
+  LVM_SETGROUPINFO* = LVM_FIRST + 147
+  LVM_GETGROUPINFO* = LVM_FIRST + 149
+  LVM_REMOVEGROUP* = LVM_FIRST + 150
+  LVM_MOVEGROUP* = LVM_FIRST + 151
+  LVM_GETGROUPCOUNT* = LVM_FIRST + 152
+  LVM_GETGROUPINFOBYINDEX* = LVM_FIRST + 153
+  LVM_MOVEITEMTOGROUP* = LVM_FIRST + 154
   LVGGR_GROUP* = 0
   LVGGR_HEADER* = 1
   LVGGR_LABEL* = 2
   LVGGR_SUBSETLINK* = 3
-  LVM_GETGROUPRECT* = LVM_FIRST+98
+  LVM_GETGROUPRECT* = LVM_FIRST + 98
   LVGMF_NONE* = 0x0
   LVGMF_BORDERSIZE* = 0x1
   LVGMF_BORDERCOLOR* = 0x2
   LVGMF_TEXTCOLOR* = 0x4
-  LVM_SETGROUPMETRICS* = LVM_FIRST+155
-  LVM_GETGROUPMETRICS* = LVM_FIRST+156
-  LVM_ENABLEGROUPVIEW* = LVM_FIRST+157
-  LVM_SORTGROUPS* = LVM_FIRST+158
-  LVM_INSERTGROUPSORTED* = LVM_FIRST+159
-  LVM_REMOVEALLGROUPS* = LVM_FIRST+160
-  LVM_HASGROUP* = LVM_FIRST+161
-  LVM_GETGROUPSTATE* = LVM_FIRST+92
-  LVM_GETFOCUSEDGROUP* = LVM_FIRST+93
+  LVM_SETGROUPMETRICS* = LVM_FIRST + 155
+  LVM_GETGROUPMETRICS* = LVM_FIRST + 156
+  LVM_ENABLEGROUPVIEW* = LVM_FIRST + 157
+  LVM_SORTGROUPS* = LVM_FIRST + 158
+  LVM_INSERTGROUPSORTED* = LVM_FIRST + 159
+  LVM_REMOVEALLGROUPS* = LVM_FIRST + 160
+  LVM_HASGROUP* = LVM_FIRST + 161
+  LVM_GETGROUPSTATE* = LVM_FIRST + 92
+  LVM_GETFOCUSEDGROUP* = LVM_FIRST + 93
   LVTVIF_AUTOSIZE* = 0x0
   LVTVIF_FIXEDWIDTH* = 0x1
   LVTVIF_FIXEDHEIGHT* = 0x2
@@ -2928,38 +3095,38 @@
   LVTVIM_TILESIZE* = 0x1
   LVTVIM_COLUMNS* = 0x2
   LVTVIM_LABELMARGIN* = 0x4
-  LVM_SETTILEVIEWINFO* = LVM_FIRST+162
-  LVM_GETTILEVIEWINFO* = LVM_FIRST+163
-  LVM_SETTILEINFO* = LVM_FIRST+164
-  LVM_GETTILEINFO* = LVM_FIRST+165
+  LVM_SETTILEVIEWINFO* = LVM_FIRST + 162
+  LVM_GETTILEVIEWINFO* = LVM_FIRST + 163
+  LVM_SETTILEINFO* = LVM_FIRST + 164
+  LVM_GETTILEINFO* = LVM_FIRST + 165
   LVIM_AFTER* = 0x1
-  LVM_SETINSERTMARK* = LVM_FIRST+166
-  LVM_GETINSERTMARK* = LVM_FIRST+167
-  LVM_INSERTMARKHITTEST* = LVM_FIRST+168
-  LVM_GETINSERTMARKRECT* = LVM_FIRST+169
-  LVM_SETINSERTMARKCOLOR* = LVM_FIRST+170
-  LVM_GETINSERTMARKCOLOR* = LVM_FIRST+171
-  LVM_SETINFOTIP* = LVM_FIRST+173
-  LVM_GETSELECTEDCOLUMN* = LVM_FIRST+174
-  LVM_ISGROUPVIEWENABLED* = LVM_FIRST+175
-  LVM_GETOUTLINECOLOR* = LVM_FIRST+176
-  LVM_SETOUTLINECOLOR* = LVM_FIRST+177
-  LVM_CANCELEDITLABEL* = LVM_FIRST+179
-  LVM_MAPINDEXTOID* = LVM_FIRST+180
-  LVM_MAPIDTOINDEX* = LVM_FIRST+181
-  LVM_ISITEMVISIBLE* = LVM_FIRST+182
-  LVM_GETEMPTYTEXT* = LVM_FIRST+204
-  LVM_GETFOOTERRECT* = LVM_FIRST+205
+  LVM_SETINSERTMARK* = LVM_FIRST + 166
+  LVM_GETINSERTMARK* = LVM_FIRST + 167
+  LVM_INSERTMARKHITTEST* = LVM_FIRST + 168
+  LVM_GETINSERTMARKRECT* = LVM_FIRST + 169
+  LVM_SETINSERTMARKCOLOR* = LVM_FIRST + 170
+  LVM_GETINSERTMARKCOLOR* = LVM_FIRST + 171
+  LVM_SETINFOTIP* = LVM_FIRST + 173
+  LVM_GETSELECTEDCOLUMN* = LVM_FIRST + 174
+  LVM_ISGROUPVIEWENABLED* = LVM_FIRST + 175
+  LVM_GETOUTLINECOLOR* = LVM_FIRST + 176
+  LVM_SETOUTLINECOLOR* = LVM_FIRST + 177
+  LVM_CANCELEDITLABEL* = LVM_FIRST + 179
+  LVM_MAPINDEXTOID* = LVM_FIRST + 180
+  LVM_MAPIDTOINDEX* = LVM_FIRST + 181
+  LVM_ISITEMVISIBLE* = LVM_FIRST + 182
+  LVM_GETEMPTYTEXT* = LVM_FIRST + 204
+  LVM_GETFOOTERRECT* = LVM_FIRST + 205
   LVFF_ITEMCOUNT* = 0x1
-  LVM_GETFOOTERINFO* = LVM_FIRST+206
-  LVM_GETFOOTERITEMRECT* = LVM_FIRST+207
+  LVM_GETFOOTERINFO* = LVM_FIRST + 206
+  LVM_GETFOOTERITEMRECT* = LVM_FIRST + 207
   LVFIF_TEXT* = 0x1
   LVFIF_STATE* = 0x2
   LVFIS_FOCUSED* = 0x1
-  LVM_GETFOOTERITEM* = LVM_FIRST+208
-  LVM_GETITEMINDEXRECT* = LVM_FIRST+209
-  LVM_SETITEMINDEXSTATE* = LVM_FIRST+210
-  LVM_GETNEXTITEMINDEX* = LVM_FIRST+211
+  LVM_GETFOOTERITEM* = LVM_FIRST + 208
+  LVM_GETITEMINDEXRECT* = LVM_FIRST + 209
+  LVM_SETITEMINDEXSTATE* = LVM_FIRST + 210
+  LVM_GETNEXTITEMINDEX* = LVM_FIRST + 211
   LVKF_ALT* = 0x1
   LVKF_CONTROL* = 0x2
   LVKF_SHIFT* = 0x4
@@ -2968,46 +3135,46 @@
   LVCDI_ITEMSLIST* = 0x2
   LVCDRF_NOSELECT* = 0x10000
   LVCDRF_NOGROUPFRAME* = 0x20000
-  LVN_ITEMCHANGING* = LVN_FIRST-0
-  LVN_ITEMCHANGED* = LVN_FIRST-1
-  LVN_INSERTITEM* = LVN_FIRST-2
-  LVN_DELETEITEM* = LVN_FIRST-3
-  LVN_DELETEALLITEMS* = LVN_FIRST-4
-  LVN_BEGINLABELEDITA* = LVN_FIRST-5
-  LVN_BEGINLABELEDITW* = LVN_FIRST-75
-  LVN_ENDLABELEDITA* = LVN_FIRST-6
-  LVN_ENDLABELEDITW* = LVN_FIRST-76
-  LVN_COLUMNCLICK* = LVN_FIRST-8
-  LVN_BEGINDRAG* = LVN_FIRST-9
-  LVN_BEGINRDRAG* = LVN_FIRST-11
-  LVN_ODCACHEHINT* = LVN_FIRST-13
-  LVN_ODFINDITEMA* = LVN_FIRST-52
-  LVN_ODFINDITEMW* = LVN_FIRST-79
-  LVN_ITEMACTIVATE* = LVN_FIRST-14
-  LVN_ODSTATECHANGED* = LVN_FIRST-15
-  LVN_HOTTRACK* = LVN_FIRST-21
-  LVN_GETDISPINFOA* = LVN_FIRST-50
-  LVN_GETDISPINFOW* = LVN_FIRST-77
-  LVN_SETDISPINFOA* = LVN_FIRST-51
-  LVN_SETDISPINFOW* = LVN_FIRST-78
+  LVN_ITEMCHANGING* = LVN_FIRST - 0
+  LVN_ITEMCHANGED* = LVN_FIRST - 1
+  LVN_INSERTITEM* = LVN_FIRST - 2
+  LVN_DELETEITEM* = LVN_FIRST - 3
+  LVN_DELETEALLITEMS* = LVN_FIRST - 4
+  LVN_BEGINLABELEDITA* = LVN_FIRST - 5
+  LVN_BEGINLABELEDITW* = LVN_FIRST - 75
+  LVN_ENDLABELEDITA* = LVN_FIRST - 6
+  LVN_ENDLABELEDITW* = LVN_FIRST - 76
+  LVN_COLUMNCLICK* = LVN_FIRST - 8
+  LVN_BEGINDRAG* = LVN_FIRST - 9
+  LVN_BEGINRDRAG* = LVN_FIRST - 11
+  LVN_ODCACHEHINT* = LVN_FIRST - 13
+  LVN_ODFINDITEMA* = LVN_FIRST - 52
+  LVN_ODFINDITEMW* = LVN_FIRST - 79
+  LVN_ITEMACTIVATE* = LVN_FIRST - 14
+  LVN_ODSTATECHANGED* = LVN_FIRST - 15
+  LVN_HOTTRACK* = LVN_FIRST - 21
+  LVN_GETDISPINFOA* = LVN_FIRST - 50
+  LVN_GETDISPINFOW* = LVN_FIRST - 77
+  LVN_SETDISPINFOA* = LVN_FIRST - 51
+  LVN_SETDISPINFOW* = LVN_FIRST - 78
   LVIF_DI_SETITEM* = 0x1000
-  LVN_KEYDOWN* = LVN_FIRST-55
-  LVN_MARQUEEBEGIN* = LVN_FIRST-56
+  LVN_KEYDOWN* = LVN_FIRST - 55
+  LVN_MARQUEEBEGIN* = LVN_FIRST - 56
   LVGIT_UNFOLDED* = 0x1
-  LVN_GETINFOTIPA* = LVN_FIRST-57
-  LVN_GETINFOTIPW* = LVN_FIRST-58
+  LVN_GETINFOTIPA* = LVN_FIRST - 57
+  LVN_GETINFOTIPW* = LVN_FIRST - 58
   LVNSCH_DEFAULT* = -1
   LVNSCH_ERROR* = -2
   LVNSCH_IGNORE* = -3
-  LVN_INCREMENTALSEARCHA* = LVN_FIRST-62
-  LVN_INCREMENTALSEARCHW* = LVN_FIRST-63
-  LVN_COLUMNDROPDOWN* = LVN_FIRST-64
-  LVN_COLUMNOVERFLOWCLICK* = LVN_FIRST-66
-  LVN_BEGINSCROLL* = LVN_FIRST-80
-  LVN_ENDSCROLL* = LVN_FIRST-81
-  LVN_LINKCLICK* = LVN_FIRST-84
+  LVN_INCREMENTALSEARCHA* = LVN_FIRST - 62
+  LVN_INCREMENTALSEARCHW* = LVN_FIRST - 63
+  LVN_COLUMNDROPDOWN* = LVN_FIRST - 64
+  LVN_COLUMNOVERFLOWCLICK* = LVN_FIRST - 66
+  LVN_BEGINSCROLL* = LVN_FIRST - 80
+  LVN_ENDSCROLL* = LVN_FIRST - 81
+  LVN_LINKCLICK* = LVN_FIRST - 84
   EMF_CENTERED* = 0x1
-  LVN_GETEMPTYMARKUP* = LVN_FIRST-87
+  LVN_GETEMPTYMARKUP* = LVN_FIRST - 87
   WC_TREEVIEWA* = "SysTreeView32"
   WC_TREEVIEWW* = "SysTreeView32"
   TVS_HASBUTTONS* = 0x1
@@ -3062,24 +3229,24 @@
   TVIS_EX_ALL* = 0x0002
   I_CHILDRENCALLBACK* = -1
   I_CHILDRENAUTO* = -2
-  TVM_INSERTITEMA* = TV_FIRST+0
-  TVM_INSERTITEMW* = TV_FIRST+50
-  TVM_DELETEITEM* = TV_FIRST+1
-  TVM_EXPAND* = TV_FIRST+2
+  TVM_INSERTITEMA* = TV_FIRST + 0
+  TVM_INSERTITEMW* = TV_FIRST + 50
+  TVM_DELETEITEM* = TV_FIRST + 1
+  TVM_EXPAND* = TV_FIRST + 2
   TVE_COLLAPSE* = 0x1
   TVE_EXPAND* = 0x2
   TVE_TOGGLE* = 0x3
   TVE_EXPANDPARTIAL* = 0x4000
   TVE_COLLAPSERESET* = 0x8000
-  TVM_GETITEMRECT* = TV_FIRST+4
-  TVM_GETCOUNT* = TV_FIRST+5
-  TVM_GETINDENT* = TV_FIRST+6
-  TVM_SETINDENT* = TV_FIRST+7
-  TVM_GETIMAGELIST* = TV_FIRST+8
+  TVM_GETITEMRECT* = TV_FIRST + 4
+  TVM_GETCOUNT* = TV_FIRST + 5
+  TVM_GETINDENT* = TV_FIRST + 6
+  TVM_SETINDENT* = TV_FIRST + 7
+  TVM_GETIMAGELIST* = TV_FIRST + 8
   TVSIL_NORMAL* = 0
   TVSIL_STATE* = 2
-  TVM_SETIMAGELIST* = TV_FIRST+9
-  TVM_GETNEXTITEM* = TV_FIRST+10
+  TVM_SETIMAGELIST* = TV_FIRST + 9
+  TVM_GETNEXTITEM* = TV_FIRST + 10
   TVGN_ROOT* = 0x0
   TVGN_NEXT* = 0x1
   TVGN_PREVIOUS* = 0x2
@@ -3093,16 +3260,16 @@
   TVGN_LASTVISIBLE* = 0xa
   TVGN_NEXTSELECTED* = 0xb
   TVSI_NOSINGLEEXPAND* = 0x8000
-  TVM_SELECTITEM* = TV_FIRST+11
-  TVM_GETITEMA* = TV_FIRST+12
-  TVM_GETITEMW* = TV_FIRST+62
-  TVM_SETITEMA* = TV_FIRST+13
-  TVM_SETITEMW* = TV_FIRST+63
-  TVM_EDITLABELA* = TV_FIRST+14
-  TVM_EDITLABELW* = TV_FIRST+65
-  TVM_GETEDITCONTROL* = TV_FIRST+15
-  TVM_GETVISIBLECOUNT* = TV_FIRST+16
-  TVM_HITTEST* = TV_FIRST+17
+  TVM_SELECTITEM* = TV_FIRST + 11
+  TVM_GETITEMA* = TV_FIRST + 12
+  TVM_GETITEMW* = TV_FIRST + 62
+  TVM_SETITEMA* = TV_FIRST + 13
+  TVM_SETITEMW* = TV_FIRST + 63
+  TVM_EDITLABELA* = TV_FIRST + 14
+  TVM_EDITLABELW* = TV_FIRST + 65
+  TVM_GETEDITCONTROL* = TV_FIRST + 15
+  TVM_GETVISIBLECOUNT* = TV_FIRST + 16
+  TVM_HITTEST* = TV_FIRST + 17
   TVHT_NOWHERE* = 0x1
   TVHT_ONITEMICON* = 0x2
   TVHT_ONITEMLABEL* = 0x4
@@ -3115,82 +3282,82 @@
   TVHT_BELOW* = 0x200
   TVHT_TORIGHT* = 0x400
   TVHT_TOLEFT* = 0x800
-  TVM_CREATEDRAGIMAGE* = TV_FIRST+18
-  TVM_SORTCHILDREN* = TV_FIRST+19
-  TVM_ENSUREVISIBLE* = TV_FIRST+20
-  TVM_SORTCHILDRENCB* = TV_FIRST+21
-  TVM_ENDEDITLABELNOW* = TV_FIRST+22
-  TVM_GETISEARCHSTRINGA* = TV_FIRST+23
-  TVM_GETISEARCHSTRINGW* = TV_FIRST+64
-  TVM_SETTOOLTIPS* = TV_FIRST+24
-  TVM_GETTOOLTIPS* = TV_FIRST+25
-  TVM_SETINSERTMARK* = TV_FIRST+26
+  TVM_CREATEDRAGIMAGE* = TV_FIRST + 18
+  TVM_SORTCHILDREN* = TV_FIRST + 19
+  TVM_ENSUREVISIBLE* = TV_FIRST + 20
+  TVM_SORTCHILDRENCB* = TV_FIRST + 21
+  TVM_ENDEDITLABELNOW* = TV_FIRST + 22
+  TVM_GETISEARCHSTRINGA* = TV_FIRST + 23
+  TVM_GETISEARCHSTRINGW* = TV_FIRST + 64
+  TVM_SETTOOLTIPS* = TV_FIRST + 24
+  TVM_GETTOOLTIPS* = TV_FIRST + 25
+  TVM_SETINSERTMARK* = TV_FIRST + 26
   TVM_SETUNICODEFORMAT* = CCM_SETUNICODEFORMAT
   TVM_GETUNICODEFORMAT* = CCM_GETUNICODEFORMAT
-  TVM_SETITEMHEIGHT* = TV_FIRST+27
-  TVM_GETITEMHEIGHT* = TV_FIRST+28
-  TVM_SETBKCOLOR* = TV_FIRST+29
-  TVM_SETTEXTCOLOR* = TV_FIRST+30
-  TVM_GETBKCOLOR* = TV_FIRST+31
-  TVM_GETTEXTCOLOR* = TV_FIRST+32
-  TVM_SETSCROLLTIME* = TV_FIRST+33
-  TVM_GETSCROLLTIME* = TV_FIRST+34
-  TVM_SETBORDER* = TV_FIRST+35
+  TVM_SETITEMHEIGHT* = TV_FIRST + 27
+  TVM_GETITEMHEIGHT* = TV_FIRST + 28
+  TVM_SETBKCOLOR* = TV_FIRST + 29
+  TVM_SETTEXTCOLOR* = TV_FIRST + 30
+  TVM_GETBKCOLOR* = TV_FIRST + 31
+  TVM_GETTEXTCOLOR* = TV_FIRST + 32
+  TVM_SETSCROLLTIME* = TV_FIRST + 33
+  TVM_GETSCROLLTIME* = TV_FIRST + 34
+  TVM_SETBORDER* = TV_FIRST + 35
   TVSBF_XBORDER* = 0x1
   TVSBF_YBORDER* = 0x2
-  TVM_SETINSERTMARKCOLOR* = TV_FIRST+37
-  TVM_GETINSERTMARKCOLOR* = TV_FIRST+38
-  TVM_GETITEMSTATE* = TV_FIRST+39
-  TVM_SETLINECOLOR* = TV_FIRST+40
-  TVM_GETLINECOLOR* = TV_FIRST+41
-  TVM_MAPACCIDTOHTREEITEM* = TV_FIRST+42
-  TVM_MAPHTREEITEMTOACCID* = TV_FIRST+43
-  TVM_SETEXTENDEDSTYLE* = TV_FIRST+44
-  TVM_GETEXTENDEDSTYLE* = TV_FIRST+45
-  TVM_SETHOT* = TV_FIRST+58
-  TVM_SETAUTOSCROLLINFO* = TV_FIRST+59
-  TVM_GETSELECTEDCOUNT* = TV_FIRST+70
-  TVM_SHOWINFOTIP* = TV_FIRST+71
+  TVM_SETINSERTMARKCOLOR* = TV_FIRST + 37
+  TVM_GETINSERTMARKCOLOR* = TV_FIRST + 38
+  TVM_GETITEMSTATE* = TV_FIRST + 39
+  TVM_SETLINECOLOR* = TV_FIRST + 40
+  TVM_GETLINECOLOR* = TV_FIRST + 41
+  TVM_MAPACCIDTOHTREEITEM* = TV_FIRST + 42
+  TVM_MAPHTREEITEMTOACCID* = TV_FIRST + 43
+  TVM_SETEXTENDEDSTYLE* = TV_FIRST + 44
+  TVM_GETEXTENDEDSTYLE* = TV_FIRST + 45
+  TVM_SETHOT* = TV_FIRST + 58
+  TVM_SETAUTOSCROLLINFO* = TV_FIRST + 59
+  TVM_GETSELECTEDCOUNT* = TV_FIRST + 70
+  TVM_SHOWINFOTIP* = TV_FIRST + 71
   TVGIPR_BUTTON* = 0x0001
-  TVM_GETITEMPARTRECT* = TV_FIRST+72
-  TVN_SELCHANGINGA* = TVN_FIRST-1
-  TVN_SELCHANGINGW* = TVN_FIRST-50
-  TVN_SELCHANGEDA* = TVN_FIRST-2
-  TVN_SELCHANGEDW* = TVN_FIRST-51
+  TVM_GETITEMPARTRECT* = TV_FIRST + 72
+  TVN_SELCHANGINGA* = TVN_FIRST - 1
+  TVN_SELCHANGINGW* = TVN_FIRST - 50
+  TVN_SELCHANGEDA* = TVN_FIRST - 2
+  TVN_SELCHANGEDW* = TVN_FIRST - 51
   TVC_UNKNOWN* = 0x0
   TVC_BYMOUSE* = 0x1
   TVC_BYKEYBOARD* = 0x2
-  TVN_GETDISPINFOA* = TVN_FIRST-3
-  TVN_GETDISPINFOW* = TVN_FIRST-52
-  TVN_SETDISPINFOA* = TVN_FIRST-4
-  TVN_SETDISPINFOW* = TVN_FIRST-53
+  TVN_GETDISPINFOA* = TVN_FIRST - 3
+  TVN_GETDISPINFOW* = TVN_FIRST - 52
+  TVN_SETDISPINFOA* = TVN_FIRST - 4
+  TVN_SETDISPINFOW* = TVN_FIRST - 53
   TVIF_DI_SETITEM* = 0x1000
-  TVN_ITEMEXPANDINGA* = TVN_FIRST-5
-  TVN_ITEMEXPANDINGW* = TVN_FIRST-54
-  TVN_ITEMEXPANDEDA* = TVN_FIRST-6
-  TVN_ITEMEXPANDEDW* = TVN_FIRST-55
-  TVN_BEGINDRAGA* = TVN_FIRST-7
-  TVN_BEGINDRAGW* = TVN_FIRST-56
-  TVN_BEGINRDRAGA* = TVN_FIRST-8
-  TVN_BEGINRDRAGW* = TVN_FIRST-57
-  TVN_DELETEITEMA* = TVN_FIRST-9
-  TVN_DELETEITEMW* = TVN_FIRST-58
-  TVN_BEGINLABELEDITA* = TVN_FIRST-10
-  TVN_BEGINLABELEDITW* = TVN_FIRST-59
-  TVN_ENDLABELEDITA* = TVN_FIRST-11
-  TVN_ENDLABELEDITW* = TVN_FIRST-60
-  TVN_KEYDOWN* = TVN_FIRST-12
-  TVN_GETINFOTIPA* = TVN_FIRST-13
-  TVN_GETINFOTIPW* = TVN_FIRST-14
-  TVN_SINGLEEXPAND* = TVN_FIRST-15
+  TVN_ITEMEXPANDINGA* = TVN_FIRST - 5
+  TVN_ITEMEXPANDINGW* = TVN_FIRST - 54
+  TVN_ITEMEXPANDEDA* = TVN_FIRST - 6
+  TVN_ITEMEXPANDEDW* = TVN_FIRST - 55
+  TVN_BEGINDRAGA* = TVN_FIRST - 7
+  TVN_BEGINDRAGW* = TVN_FIRST - 56
+  TVN_BEGINRDRAGA* = TVN_FIRST - 8
+  TVN_BEGINRDRAGW* = TVN_FIRST - 57
+  TVN_DELETEITEMA* = TVN_FIRST - 9
+  TVN_DELETEITEMW* = TVN_FIRST - 58
+  TVN_BEGINLABELEDITA* = TVN_FIRST - 10
+  TVN_BEGINLABELEDITW* = TVN_FIRST - 59
+  TVN_ENDLABELEDITA* = TVN_FIRST - 11
+  TVN_ENDLABELEDITW* = TVN_FIRST - 60
+  TVN_KEYDOWN* = TVN_FIRST - 12
+  TVN_GETINFOTIPA* = TVN_FIRST - 13
+  TVN_GETINFOTIPW* = TVN_FIRST - 14
+  TVN_SINGLEEXPAND* = TVN_FIRST - 15
   TVNRET_DEFAULT* = 0
   TVNRET_SKIPOLD* = 1
   TVNRET_SKIPNEW* = 2
-  TVN_ITEMCHANGINGA* = TVN_FIRST-16
-  TVN_ITEMCHANGINGW* = TVN_FIRST-17
-  TVN_ITEMCHANGEDA* = TVN_FIRST-18
-  TVN_ITEMCHANGEDW* = TVN_FIRST-19
-  TVN_ASYNCDRAW* = TVN_FIRST-20
+  TVN_ITEMCHANGINGA* = TVN_FIRST - 16
+  TVN_ITEMCHANGINGW* = TVN_FIRST - 17
+  TVN_ITEMCHANGEDA* = TVN_FIRST - 18
+  TVN_ITEMCHANGEDW* = TVN_FIRST - 19
+  TVN_ASYNCDRAW* = TVN_FIRST - 20
   TVCDRF_NOIMAGES* = 0x10000
   WC_COMBOBOXEXW* = "ComboBoxEx32"
   WC_COMBOBOXEXA* = "ComboBoxEx32"
@@ -3201,24 +3368,24 @@
   CBEIF_INDENT* = 0x10
   CBEIF_LPARAM* = 0x20
   CBEIF_DI_SETITEM* = 0x10000000
-  CBEM_INSERTITEMA* = WM_USER+1
-  CBEM_SETIMAGELIST* = WM_USER+2
-  CBEM_GETIMAGELIST* = WM_USER+3
-  CBEM_GETITEMA* = WM_USER+4
-  CBEM_SETITEMA* = WM_USER+5
+  CBEM_INSERTITEMA* = WM_USER + 1
+  CBEM_SETIMAGELIST* = WM_USER + 2
+  CBEM_GETIMAGELIST* = WM_USER + 3
+  CBEM_GETITEMA* = WM_USER + 4
+  CBEM_SETITEMA* = WM_USER + 5
   CBEM_DELETEITEM* = CB_DELETESTRING
-  CBEM_GETCOMBOCONTROL* = WM_USER+6
-  CBEM_GETEDITCONTROL* = WM_USER+7
-  CBEM_SETEXSTYLE* = WM_USER+8
-  CBEM_SETEXTENDEDSTYLE* = WM_USER+14
-  CBEM_GETEXSTYLE* = WM_USER+9
-  CBEM_GETEXTENDEDSTYLE* = WM_USER+9
+  CBEM_GETCOMBOCONTROL* = WM_USER + 6
+  CBEM_GETEDITCONTROL* = WM_USER + 7
+  CBEM_SETEXSTYLE* = WM_USER + 8
+  CBEM_SETEXTENDEDSTYLE* = WM_USER + 14
+  CBEM_GETEXSTYLE* = WM_USER + 9
+  CBEM_GETEXTENDEDSTYLE* = WM_USER + 9
   CBEM_SETUNICODEFORMAT* = CCM_SETUNICODEFORMAT
   CBEM_GETUNICODEFORMAT* = CCM_GETUNICODEFORMAT
-  CBEM_HASEDITCHANGED* = WM_USER+10
-  CBEM_INSERTITEMW* = WM_USER+11
-  CBEM_SETITEMW* = WM_USER+12
-  CBEM_GETITEMW* = WM_USER+13
+  CBEM_HASEDITCHANGED* = WM_USER + 10
+  CBEM_INSERTITEMW* = WM_USER + 11
+  CBEM_SETITEMW* = WM_USER + 12
+  CBEM_GETITEMW* = WM_USER + 13
   CBEM_SETWINDOWTHEME* = CCM_SETWINDOWTHEME
   CBES_EX_NOEDITIMAGE* = 0x1
   CBES_EX_NOEDITIMAGEINDENT* = 0x2
@@ -3226,15 +3393,15 @@
   CBES_EX_NOSIZELIMIT* = 0x8
   CBES_EX_CASESENSITIVE* = 0x10
   CBES_EX_TEXTENDELLIPSIS* = 0x00000020
-  CBEN_GETDISPINFOA* = CBEN_FIRST-0
-  CBEN_INSERTITEM* = CBEN_FIRST-1
-  CBEN_DELETEITEM* = CBEN_FIRST-2
-  CBEN_BEGINEDIT* = CBEN_FIRST-4
-  CBEN_ENDEDITA* = CBEN_FIRST-5
-  CBEN_ENDEDITW* = CBEN_FIRST-6
-  CBEN_GETDISPINFOW* = CBEN_FIRST-7
-  CBEN_DRAGBEGINA* = CBEN_FIRST-8
-  CBEN_DRAGBEGINW* = CBEN_FIRST-9
+  CBEN_GETDISPINFOA* = CBEN_FIRST - 0
+  CBEN_INSERTITEM* = CBEN_FIRST - 1
+  CBEN_DELETEITEM* = CBEN_FIRST - 2
+  CBEN_BEGINEDIT* = CBEN_FIRST - 4
+  CBEN_ENDEDITA* = CBEN_FIRST - 5
+  CBEN_ENDEDITW* = CBEN_FIRST - 6
+  CBEN_GETDISPINFOW* = CBEN_FIRST - 7
+  CBEN_DRAGBEGINA* = CBEN_FIRST - 8
+  CBEN_DRAGBEGINW* = CBEN_FIRST - 9
   CBENF_KILLFOCUS* = 1
   CBENF_RETURN* = 2
   CBENF_ESCAPE* = 3
@@ -3263,9 +3430,9 @@
   TCS_FOCUSNEVER* = 0x8000
   TCS_EX_FLATSEPARATORS* = 0x1
   TCS_EX_REGISTERDROP* = 0x2
-  TCM_GETIMAGELIST* = TCM_FIRST+2
-  TCM_SETIMAGELIST* = TCM_FIRST+3
-  TCM_GETITEMCOUNT* = TCM_FIRST+4
+  TCM_GETIMAGELIST* = TCM_FIRST + 2
+  TCM_SETIMAGELIST* = TCM_FIRST + 3
+  TCM_GETITEMCOUNT* = TCM_FIRST + 4
   TCIF_TEXT* = 0x1
   TCIF_IMAGE* = 0x2
   TCIF_RTLREADING* = 0x4
@@ -3273,80 +3440,80 @@
   TCIF_STATE* = 0x10
   TCIS_BUTTONPRESSED* = 0x1
   TCIS_HIGHLIGHTED* = 0x2
-  TCM_GETITEMA* = TCM_FIRST+5
-  TCM_GETITEMW* = TCM_FIRST+60
-  TCM_SETITEMA* = TCM_FIRST+6
-  TCM_SETITEMW* = TCM_FIRST+61
-  TCM_INSERTITEMA* = TCM_FIRST+7
-  TCM_INSERTITEMW* = TCM_FIRST+62
-  TCM_DELETEITEM* = TCM_FIRST+8
-  TCM_DELETEALLITEMS* = TCM_FIRST+9
-  TCM_GETITEMRECT* = TCM_FIRST+10
-  TCM_GETCURSEL* = TCM_FIRST+11
-  TCM_SETCURSEL* = TCM_FIRST+12
+  TCM_GETITEMA* = TCM_FIRST + 5
+  TCM_GETITEMW* = TCM_FIRST + 60
+  TCM_SETITEMA* = TCM_FIRST + 6
+  TCM_SETITEMW* = TCM_FIRST + 61
+  TCM_INSERTITEMA* = TCM_FIRST + 7
+  TCM_INSERTITEMW* = TCM_FIRST + 62
+  TCM_DELETEITEM* = TCM_FIRST + 8
+  TCM_DELETEALLITEMS* = TCM_FIRST + 9
+  TCM_GETITEMRECT* = TCM_FIRST + 10
+  TCM_GETCURSEL* = TCM_FIRST + 11
+  TCM_SETCURSEL* = TCM_FIRST + 12
   TCHT_NOWHERE* = 0x1
   TCHT_ONITEMICON* = 0x2
   TCHT_ONITEMLABEL* = 0x4
   TCHT_ONITEM* = TCHT_ONITEMICON or TCHT_ONITEMLABEL
-  TCM_HITTEST* = TCM_FIRST+13
-  TCM_SETITEMEXTRA* = TCM_FIRST+14
-  TCM_ADJUSTRECT* = TCM_FIRST+40
-  TCM_SETITEMSIZE* = TCM_FIRST+41
-  TCM_REMOVEIMAGE* = TCM_FIRST+42
-  TCM_SETPADDING* = TCM_FIRST+43
-  TCM_GETROWCOUNT* = TCM_FIRST+44
-  TCM_GETTOOLTIPS* = TCM_FIRST+45
-  TCM_SETTOOLTIPS* = TCM_FIRST+46
-  TCM_GETCURFOCUS* = TCM_FIRST+47
-  TCM_SETCURFOCUS* = TCM_FIRST+48
-  TCM_SETMINTABWIDTH* = TCM_FIRST+49
-  TCM_DESELECTALL* = TCM_FIRST+50
-  TCM_HIGHLIGHTITEM* = TCM_FIRST+51
-  TCM_SETEXTENDEDSTYLE* = TCM_FIRST+52
-  TCM_GETEXTENDEDSTYLE* = TCM_FIRST+53
+  TCM_HITTEST* = TCM_FIRST + 13
+  TCM_SETITEMEXTRA* = TCM_FIRST + 14
+  TCM_ADJUSTRECT* = TCM_FIRST + 40
+  TCM_SETITEMSIZE* = TCM_FIRST + 41
+  TCM_REMOVEIMAGE* = TCM_FIRST + 42
+  TCM_SETPADDING* = TCM_FIRST + 43
+  TCM_GETROWCOUNT* = TCM_FIRST + 44
+  TCM_GETTOOLTIPS* = TCM_FIRST + 45
+  TCM_SETTOOLTIPS* = TCM_FIRST + 46
+  TCM_GETCURFOCUS* = TCM_FIRST + 47
+  TCM_SETCURFOCUS* = TCM_FIRST + 48
+  TCM_SETMINTABWIDTH* = TCM_FIRST + 49
+  TCM_DESELECTALL* = TCM_FIRST + 50
+  TCM_HIGHLIGHTITEM* = TCM_FIRST + 51
+  TCM_SETEXTENDEDSTYLE* = TCM_FIRST + 52
+  TCM_GETEXTENDEDSTYLE* = TCM_FIRST + 53
   TCM_SETUNICODEFORMAT* = CCM_SETUNICODEFORMAT
   TCM_GETUNICODEFORMAT* = CCM_GETUNICODEFORMAT
-  TCN_KEYDOWN* = TCN_FIRST-0
-  TCN_SELCHANGE* = TCN_FIRST-1
-  TCN_SELCHANGING* = TCN_FIRST-2
-  TCN_GETOBJECT* = TCN_FIRST-3
-  TCN_FOCUSCHANGE* = TCN_FIRST-4
+  TCN_KEYDOWN* = TCN_FIRST - 0
+  TCN_SELCHANGE* = TCN_FIRST - 1
+  TCN_SELCHANGING* = TCN_FIRST - 2
+  TCN_GETOBJECT* = TCN_FIRST - 3
+  TCN_FOCUSCHANGE* = TCN_FIRST - 4
   ANIMATE_CLASSW* = "SysAnimate32"
   ANIMATE_CLASSA* = "SysAnimate32"
   ACS_CENTER* = 0x1
   ACS_TRANSPARENT* = 0x2
   ACS_AUTOPLAY* = 0x4
   ACS_TIMER* = 0x8
-  ACM_OPENA* = WM_USER+100
-  ACM_OPENW* = WM_USER+103
-  ACM_PLAY* = WM_USER+101
-  ACM_STOP* = WM_USER+102
-  ACM_ISPLAYING* = WM_USER+104
+  ACM_OPENA* = WM_USER + 100
+  ACM_OPENW* = WM_USER + 103
+  ACM_PLAY* = WM_USER + 101
+  ACM_STOP* = WM_USER + 102
+  ACM_ISPLAYING* = WM_USER + 104
   ACN_START* = 1
   ACN_STOP* = 2
   MONTHCAL_CLASSW* = "SysMonthCal32"
   MONTHCAL_CLASSA* = "SysMonthCal32"
   MCM_FIRST* = 0x1000
-  MCM_GETCURSEL* = MCM_FIRST+1
-  MCM_SETCURSEL* = MCM_FIRST+2
-  MCM_GETMAXSELCOUNT* = MCM_FIRST+3
-  MCM_SETMAXSELCOUNT* = MCM_FIRST+4
-  MCM_GETSELRANGE* = MCM_FIRST+5
-  MCM_SETSELRANGE* = MCM_FIRST+6
-  MCM_GETMONTHRANGE* = MCM_FIRST+7
-  MCM_SETDAYSTATE* = MCM_FIRST+8
-  MCM_GETMINREQRECT* = MCM_FIRST+9
-  MCM_SETCOLOR* = MCM_FIRST+10
-  MCM_GETCOLOR* = MCM_FIRST+11
+  MCM_GETCURSEL* = MCM_FIRST + 1
+  MCM_SETCURSEL* = MCM_FIRST + 2
+  MCM_GETMAXSELCOUNT* = MCM_FIRST + 3
+  MCM_SETMAXSELCOUNT* = MCM_FIRST + 4
+  MCM_GETSELRANGE* = MCM_FIRST + 5
+  MCM_SETSELRANGE* = MCM_FIRST + 6
+  MCM_GETMONTHRANGE* = MCM_FIRST + 7
+  MCM_SETDAYSTATE* = MCM_FIRST + 8
+  MCM_GETMINREQRECT* = MCM_FIRST + 9
+  MCM_SETCOLOR* = MCM_FIRST + 10
+  MCM_GETCOLOR* = MCM_FIRST + 11
   MCSC_BACKGROUND* = 0
   MCSC_TEXT* = 1
   MCSC_TITLEBK* = 2
   MCSC_TITLETEXT* = 3
   MCSC_MONTHBK* = 4
   MCSC_TRAILINGTEXT* = 5
-  MCM_SETTODAY* = MCM_FIRST+12
-  MCM_GETTODAY* = MCM_FIRST+13
-  MCM_HITTEST* = MCM_FIRST+14
+  MCM_SETTODAY* = MCM_FIRST + 12
+  MCM_GETTODAY* = MCM_FIRST + 13
+  MCM_HITTEST* = MCM_FIRST + 14
   MCHT_TITLE* = 0x10000
   MCHT_CALENDAR* = 0x20000
   MCHT_TODAYLINK* = 0x30000
@@ -3367,13 +3534,13 @@
   MCHT_CALENDARWEEKNUM* = MCHT_CALENDAR or 0x3
   MCHT_CALENDARDATEMIN* = MCHT_CALENDAR or 0x4
   MCHT_CALENDARDATEMAX* = MCHT_CALENDAR or 0x5
-  MCM_SETFIRSTDAYOFWEEK* = MCM_FIRST+15
-  MCM_GETFIRSTDAYOFWEEK* = MCM_FIRST+16
-  MCM_GETRANGE* = MCM_FIRST+17
-  MCM_SETRANGE* = MCM_FIRST+18
-  MCM_GETMONTHDELTA* = MCM_FIRST+19
-  MCM_SETMONTHDELTA* = MCM_FIRST+20
-  MCM_GETMAXTODAYWIDTH* = MCM_FIRST+21
+  MCM_SETFIRSTDAYOFWEEK* = MCM_FIRST + 15
+  MCM_GETFIRSTDAYOFWEEK* = MCM_FIRST + 16
+  MCM_GETRANGE* = MCM_FIRST + 17
+  MCM_SETRANGE* = MCM_FIRST + 18
+  MCM_GETMONTHDELTA* = MCM_FIRST + 19
+  MCM_SETMONTHDELTA* = MCM_FIRST + 20
+  MCM_GETMAXTODAYWIDTH* = MCM_FIRST + 21
   MCM_SETUNICODEFORMAT* = CCM_SETUNICODEFORMAT
   MCM_GETUNICODEFORMAT* = CCM_GETUNICODEFORMAT
   MCMV_MONTH* = 0
@@ -3381,8 +3548,8 @@
   MCMV_DECADE* = 2
   MCMV_CENTURY* = 3
   MCMV_MAX* = MCMV_CENTURY
-  MCM_GETCURRENTVIEW* = MCM_FIRST+22
-  MCM_GETCALENDARCOUNT* = MCM_FIRST+23
+  MCM_GETCURRENTVIEW* = MCM_FIRST + 22
+  MCM_GETCALENDARCOUNT* = MCM_FIRST + 23
   MCGIP_CALENDARCONTROL* = 0
   MCGIP_NEXT* = 1
   MCGIP_PREV* = 2
@@ -3395,17 +3562,17 @@
   MCGIF_DATE* = 01
   MCGIF_RECT* = 0x2
   MCGIF_NAME* = 0x4
-  MCM_GETCALENDARGRIDINFO* = MCM_FIRST+24
-  MCM_GETCALID* = MCM_FIRST+27
-  MCM_SETCALID* = MCM_FIRST+28
-  MCM_SIZERECTTOMIN* = MCM_FIRST+29
-  MCM_SETCALENDARBORDER* = MCM_FIRST+30
-  MCM_GETCALENDARBORDER* = MCM_FIRST+31
-  MCM_SETCURRENTVIEW* = MCM_FIRST+32
-  MCN_SELCHANGE* = MCN_FIRST-3
-  MCN_GETDAYSTATE* = MCN_FIRST+3
+  MCM_GETCALENDARGRIDINFO* = MCM_FIRST + 24
+  MCM_GETCALID* = MCM_FIRST + 27
+  MCM_SETCALID* = MCM_FIRST + 28
+  MCM_SIZERECTTOMIN* = MCM_FIRST + 29
+  MCM_SETCALENDARBORDER* = MCM_FIRST + 30
+  MCM_GETCALENDARBORDER* = MCM_FIRST + 31
+  MCM_SETCURRENTVIEW* = MCM_FIRST + 32
+  MCN_SELCHANGE* = MCN_FIRST - 3
+  MCN_GETDAYSTATE* = MCN_FIRST + 3
   MCN_SELECT* = MCN_FIRST
-  MCN_VIEWCHANGE* = MCN_FIRST-4
+  MCN_VIEWCHANGE* = MCN_FIRST - 4
   MCS_DAYSTATE* = 0x1
   MCS_MULTISELECT* = 0x2
   MCS_WEEKNUMBERS* = 0x4
@@ -3419,22 +3586,22 @@
   DATETIMEPICK_CLASSW* = "SysDateTimePick32"
   DATETIMEPICK_CLASSA* = "SysDateTimePick32"
   DTM_FIRST* = 0x1000
-  DTM_GETSYSTEMTIME* = DTM_FIRST+1
-  DTM_SETSYSTEMTIME* = DTM_FIRST+2
-  DTM_GETRANGE* = DTM_FIRST+3
-  DTM_SETRANGE* = DTM_FIRST+4
-  DTM_SETFORMATA* = DTM_FIRST+5
-  DTM_SETFORMATW* = DTM_FIRST+50
-  DTM_SETMCCOLOR* = DTM_FIRST+6
-  DTM_GETMCCOLOR* = DTM_FIRST+7
-  DTM_GETMONTHCAL* = DTM_FIRST+8
-  DTM_SETMCFONT* = DTM_FIRST+9
-  DTM_GETMCFONT* = DTM_FIRST+10
-  DTM_SETMCSTYLE* = DTM_FIRST+11
-  DTM_GETMCSTYLE* = DTM_FIRST+12
-  DTM_CLOSEMONTHCAL* = DTM_FIRST+13
-  DTM_GETDATETIMEPICKERINFO* = DTM_FIRST+14
-  DTM_GETIDEALSIZE* = DTM_FIRST+15
+  DTM_GETSYSTEMTIME* = DTM_FIRST + 1
+  DTM_SETSYSTEMTIME* = DTM_FIRST + 2
+  DTM_GETRANGE* = DTM_FIRST + 3
+  DTM_SETRANGE* = DTM_FIRST + 4
+  DTM_SETFORMATA* = DTM_FIRST + 5
+  DTM_SETFORMATW* = DTM_FIRST + 50
+  DTM_SETMCCOLOR* = DTM_FIRST + 6
+  DTM_GETMCCOLOR* = DTM_FIRST + 7
+  DTM_GETMONTHCAL* = DTM_FIRST + 8
+  DTM_SETMCFONT* = DTM_FIRST + 9
+  DTM_GETMCFONT* = DTM_FIRST + 10
+  DTM_SETMCSTYLE* = DTM_FIRST + 11
+  DTM_GETMCSTYLE* = DTM_FIRST + 12
+  DTM_CLOSEMONTHCAL* = DTM_FIRST + 13
+  DTM_GETDATETIMEPICKERINFO* = DTM_FIRST + 14
+  DTM_GETIDEALSIZE* = DTM_FIRST + 15
   DTS_UPDOWN* = 0x1
   DTS_SHOWNONE* = 0x2
   DTS_SHORTDATEFORMAT* = 0x0
@@ -3443,31 +3610,31 @@
   DTS_TIMEFORMAT* = 0x9
   DTS_APPCANPARSE* = 0x10
   DTS_RIGHTALIGN* = 0x20
-  DTN_DATETIMECHANGE* = DTN_FIRST2-6
-  DTN_USERSTRINGA* = DTN_FIRST2-5
-  DTN_USERSTRINGW* = DTN_FIRST-5
-  DTN_WMKEYDOWNA* = DTN_FIRST2-4
-  DTN_WMKEYDOWNW* = DTN_FIRST-4
-  DTN_FORMATA* = DTN_FIRST2-3
-  DTN_FORMATW* = DTN_FIRST-3
-  DTN_FORMATQUERYA* = DTN_FIRST2-2
-  DTN_FORMATQUERYW* = DTN_FIRST-2
-  DTN_DROPDOWN* = DTN_FIRST2-1
+  DTN_DATETIMECHANGE* = DTN_FIRST2 - 6
+  DTN_USERSTRINGA* = DTN_FIRST2 - 5
+  DTN_USERSTRINGW* = DTN_FIRST - 5
+  DTN_WMKEYDOWNA* = DTN_FIRST2 - 4
+  DTN_WMKEYDOWNW* = DTN_FIRST - 4
+  DTN_FORMATA* = DTN_FIRST2 - 3
+  DTN_FORMATW* = DTN_FIRST - 3
+  DTN_FORMATQUERYA* = DTN_FIRST2 - 2
+  DTN_FORMATQUERYW* = DTN_FIRST - 2
+  DTN_DROPDOWN* = DTN_FIRST2 - 1
   DTN_CLOSEUP* = DTN_FIRST2
   GDTR_MIN* = 0x1
   GDTR_MAX* = 0x2
   GDT_ERROR* = -1
   GDT_VALID* = 0
   GDT_NONE* = 1
-  IPM_CLEARADDRESS* = WM_USER+100
-  IPM_SETADDRESS* = WM_USER+101
-  IPM_GETADDRESS* = WM_USER+102
-  IPM_SETRANGE* = WM_USER+103
-  IPM_SETFOCUS* = WM_USER+104
-  IPM_ISBLANK* = WM_USER+105
+  IPM_CLEARADDRESS* = WM_USER + 100
+  IPM_SETADDRESS* = WM_USER + 101
+  IPM_GETADDRESS* = WM_USER + 102
+  IPM_SETRANGE* = WM_USER + 103
+  IPM_SETFOCUS* = WM_USER + 104
+  IPM_ISBLANK* = WM_USER + 105
   WC_IPADDRESSW* = "SysIPAddress32"
   WC_IPADDRESSA* = "SysIPAddress32"
-  IPN_FIELDCHANGED* = IPN_FIRST-0
+  IPN_FIELDCHANGED* = IPN_FIRST - 0
   WC_PAGESCROLLERW* = "SysPager"
   WC_PAGESCROLLERA* = "SysPager"
   PGS_VERT* = 0x0
@@ -3481,21 +3648,21 @@
   PGF_HOT* = 8
   PGB_TOPORLEFT* = 0
   PGB_BOTTOMORRIGHT* = 1
-  PGM_SETCHILD* = PGM_FIRST+1
-  PGM_RECALCSIZE* = PGM_FIRST+2
-  PGM_FORWARDMOUSE* = PGM_FIRST+3
-  PGM_SETBKCOLOR* = PGM_FIRST+4
-  PGM_GETBKCOLOR* = PGM_FIRST+5
-  PGM_SETBORDER* = PGM_FIRST+6
-  PGM_GETBORDER* = PGM_FIRST+7
-  PGM_SETPOS* = PGM_FIRST+8
-  PGM_GETPOS* = PGM_FIRST+9
-  PGM_SETBUTTONSIZE* = PGM_FIRST+10
-  PGM_GETBUTTONSIZE* = PGM_FIRST+11
-  PGM_GETBUTTONSTATE* = PGM_FIRST+12
+  PGM_SETCHILD* = PGM_FIRST + 1
+  PGM_RECALCSIZE* = PGM_FIRST + 2
+  PGM_FORWARDMOUSE* = PGM_FIRST + 3
+  PGM_SETBKCOLOR* = PGM_FIRST + 4
+  PGM_GETBKCOLOR* = PGM_FIRST + 5
+  PGM_SETBORDER* = PGM_FIRST + 6
+  PGM_GETBORDER* = PGM_FIRST + 7
+  PGM_SETPOS* = PGM_FIRST + 8
+  PGM_GETPOS* = PGM_FIRST + 9
+  PGM_SETBUTTONSIZE* = PGM_FIRST + 10
+  PGM_GETBUTTONSIZE* = PGM_FIRST + 11
+  PGM_GETBUTTONSTATE* = PGM_FIRST + 12
   PGM_GETDROPTARGET* = CCM_GETDROPTARGET
-  PGM_SETSCROLLINFO* = PGM_FIRST+13
-  PGN_SCROLL* = PGN_FIRST-1
+  PGM_SETSCROLLINFO* = PGM_FIRST + 13
+  PGN_SCROLL* = PGN_FIRST - 1
   PGF_SCROLLUP* = 1
   PGF_SCROLLDOWN* = 2
   PGF_SCROLLLEFT* = 4
@@ -3503,10 +3670,10 @@
   PGK_SHIFT* = 1
   PGK_CONTROL* = 2
   PGK_MENU* = 4
-  PGN_CALCSIZE* = PGN_FIRST-2
+  PGN_CALCSIZE* = PGN_FIRST - 2
   PGF_CALCWIDTH* = 1
   PGF_CALCHEIGHT* = 2
-  PGN_HOTITEMCHANGE* = PGN_FIRST-3
+  PGN_HOTITEMCHANGE* = PGN_FIRST - 3
   WC_NATIVEFONTCTLW* = "NativeFontCtl"
   WC_NATIVEFONTCTLA* = "NativeFontCtl"
   NFS_EDIT* = 0x1
@@ -3522,12 +3689,12 @@
   BUTTON_IMAGELIST_ALIGN_TOP* = 2
   BUTTON_IMAGELIST_ALIGN_BOTTOM* = 3
   BUTTON_IMAGELIST_ALIGN_CENTER* = 4
-  BCM_GETIDEALSIZE* = BCM_FIRST+0x1
-  BCM_SETIMAGELIST* = BCM_FIRST+0x2
-  BCM_GETIMAGELIST* = BCM_FIRST+0x3
-  BCM_SETTEXTMARGIN* = BCM_FIRST+0x4
-  BCM_GETTEXTMARGIN* = BCM_FIRST+0x5
-  BCN_HOTITEMCHANGE* = BCN_FIRST+0x1
+  BCM_GETIDEALSIZE* = BCM_FIRST + 0x1
+  BCM_SETIMAGELIST* = BCM_FIRST + 0x2
+  BCM_GETIMAGELIST* = BCM_FIRST + 0x3
+  BCM_SETTEXTMARGIN* = BCM_FIRST + 0x4
+  BCM_GETTEXTMARGIN* = BCM_FIRST + 0x5
+  BCN_HOTITEMCHANGE* = BCN_FIRST + 0x1
   BST_HOT* = 0x0200
   BST_DROPDOWNPUSHED* = 0x0400
   BS_SPLITBUTTON* = 0xc
@@ -3542,34 +3709,34 @@
   BCSS_STRETCH* = 0x0002
   BCSS_ALIGNLEFT* = 0x0004
   BCSS_IMAGE* = 0x0008
-  BCM_SETDROPDOWNSTATE* = BCM_FIRST+0x6
-  BCM_SETSPLITINFO* = BCM_FIRST+0x7
-  BCM_GETSPLITINFO* = BCM_FIRST+0x8
-  BCM_SETNOTE* = BCM_FIRST+0x9
-  BCM_GETNOTE* = BCM_FIRST+0xa
-  BCM_GETNOTELENGTH* = BCM_FIRST+0xb
-  BCM_SETSHIELD* = BCM_FIRST+0xc
-  BCN_DROPDOWN* = BCN_FIRST+0x0002
+  BCM_SETDROPDOWNSTATE* = BCM_FIRST + 0x6
+  BCM_SETSPLITINFO* = BCM_FIRST + 0x7
+  BCM_GETSPLITINFO* = BCM_FIRST + 0x8
+  BCM_SETNOTE* = BCM_FIRST + 0x9
+  BCM_GETNOTE* = BCM_FIRST + 0xa
+  BCM_GETNOTELENGTH* = BCM_FIRST + 0xb
+  BCM_SETSHIELD* = BCM_FIRST + 0xc
+  BCN_DROPDOWN* = BCN_FIRST + 0x0002
   WC_STATICA* = "Static"
   WC_STATICW* = "Static"
   WC_EDITA* = "Edit"
   WC_EDITW* = "Edit"
-  EM_SETCUEBANNER* = ECM_FIRST+1
-  EM_GETCUEBANNER* = ECM_FIRST+2
-  EM_SHOWBALLOONTIP* = ECM_FIRST+3
-  EM_HIDEBALLOONTIP* = ECM_FIRST+4
-  EM_SETHILITE* = ECM_FIRST+5
-  EM_GETHILITE* = ECM_FIRST+6
-  EM_NOSETFOCUS* = ECM_FIRST+7
-  EM_TAKEFOCUS* = ECM_FIRST+8
+  EM_SETCUEBANNER* = ECM_FIRST + 1
+  EM_GETCUEBANNER* = ECM_FIRST + 2
+  EM_SHOWBALLOONTIP* = ECM_FIRST + 3
+  EM_HIDEBALLOONTIP* = ECM_FIRST + 4
+  EM_SETHILITE* = ECM_FIRST + 5
+  EM_GETHILITE* = ECM_FIRST + 6
+  EM_NOSETFOCUS* = ECM_FIRST + 7
+  EM_TAKEFOCUS* = ECM_FIRST + 8
   WC_LISTBOXA* = "ListBox"
   WC_LISTBOXW* = "ListBox"
   WC_COMBOBOXA* = "ComboBox"
   WC_COMBOBOXW* = "ComboBox"
-  CB_SETMINVISIBLE* = CBM_FIRST+1
-  CB_GETMINVISIBLE* = CBM_FIRST+2
-  CB_SETCUEBANNER* = CBM_FIRST+3
-  CB_GETCUEBANNER* = CBM_FIRST+4
+  CB_SETMINVISIBLE* = CBM_FIRST + 1
+  CB_GETMINVISIBLE* = CBM_FIRST + 2
+  CB_SETCUEBANNER* = CBM_FIRST + 3
+  CB_GETCUEBANNER* = CBM_FIRST + 4
   WC_SCROLLBARA* = "ScrollBar"
   WC_SCROLLBARW* = "ScrollBar"
   LWS_TRANSPARENT* = 0x1
@@ -3587,10 +3754,10 @@
   LIS_VISITED* = 0x4
   LIS_HOTTRACK* = 0x8
   LIS_DEFAULTCOLORS* = 0x10
-  LM_HITTEST* = WM_USER+0x300
-  LM_GETIDEALHEIGHT* = WM_USER+0x301
-  LM_SETITEM* = WM_USER+0x302
-  LM_GETITEM* = WM_USER+0x303
+  LM_HITTEST* = WM_USER + 0x300
+  LM_GETIDEALHEIGHT* = WM_USER + 0x301
+  LM_SETITEM* = WM_USER + 0x302
+  LM_GETITEM* = WM_USER + 0x303
   TDF_ENABLE_HYPERLINKS* = 0x1
   TDF_USE_HICON_MAIN* = 0x2
   TDF_USE_HICON_FOOTER* = 0x4
@@ -3609,21 +3776,21 @@
   TDF_CAN_BE_MINIMIZED* = 0x8000
   TDF_NO_SET_FOREGROUND* = 0x10000
   TDF_SIZE_TO_CONTENT* = 0x1000000
-  TDM_NAVIGATE_PAGE* = WM_USER+101
-  TDM_CLICK_BUTTON* = WM_USER+102
-  TDM_SET_MARQUEE_PROGRESS_BAR* = WM_USER+103
-  TDM_SET_PROGRESS_BAR_STATE* = WM_USER+104
-  TDM_SET_PROGRESS_BAR_RANGE* = WM_USER+105
-  TDM_SET_PROGRESS_BAR_POS* = WM_USER+106
-  TDM_SET_PROGRESS_BAR_MARQUEE* = WM_USER+107
-  TDM_SET_ELEMENT_TEXT* = WM_USER+108
-  TDM_CLICK_RADIO_BUTTON* = WM_USER+110
-  TDM_ENABLE_BUTTON* = WM_USER+111
-  TDM_ENABLE_RADIO_BUTTON* = WM_USER+112
-  TDM_CLICK_VERIFICATION* = WM_USER+113
-  TDM_UPDATE_ELEMENT_TEXT* = WM_USER+114
-  TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE* = WM_USER+115
-  TDM_UPDATE_ICON* = WM_USER+116
+  TDM_NAVIGATE_PAGE* = WM_USER + 101
+  TDM_CLICK_BUTTON* = WM_USER + 102
+  TDM_SET_MARQUEE_PROGRESS_BAR* = WM_USER + 103
+  TDM_SET_PROGRESS_BAR_STATE* = WM_USER + 104
+  TDM_SET_PROGRESS_BAR_RANGE* = WM_USER + 105
+  TDM_SET_PROGRESS_BAR_POS* = WM_USER + 106
+  TDM_SET_PROGRESS_BAR_MARQUEE* = WM_USER + 107
+  TDM_SET_ELEMENT_TEXT* = WM_USER + 108
+  TDM_CLICK_RADIO_BUTTON* = WM_USER + 110
+  TDM_ENABLE_BUTTON* = WM_USER + 111
+  TDM_ENABLE_RADIO_BUTTON* = WM_USER + 112
+  TDM_CLICK_VERIFICATION* = WM_USER + 113
+  TDM_UPDATE_ELEMENT_TEXT* = WM_USER + 114
+  TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE* = WM_USER + 115
+  TDM_UPDATE_ICON* = WM_USER + 116
   TDN_CREATED* = 0
   TDN_NAVIGATED* = 1
   TDN_BUTTON_CLICKED* = 2
@@ -3719,29 +3886,49 @@
   TVI_SORT* = HTREEITEM(-0xfffd)
   LM_GETIDEALSIZE* = LM_GETIDEALHEIGHT
 type
-  LPFNADDPROPSHEETPAGE* = proc (P1: HPROPSHEETPAGE, P2: LPARAM): WINBOOL {.stdcall.}
-  LPFNADDPROPSHEETPAGES* = proc (P1: LPVOID, P2: LPFNADDPROPSHEETPAGE, P3: LPARAM): WINBOOL {.stdcall.}
-  PFNLVCOMPARE* = proc (P1: LPARAM, P2: LPARAM, P3: LPARAM): int32 {.stdcall.}
-  PFTASKDIALOGCALLBACK* = proc (hwnd: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM, lpRefData: LONG_PTR): HRESULT {.stdcall.}
+  LPFNADDPROPSHEETPAGE* = proc(P1: HPROPSHEETPAGE, P2: LPARAM): WINBOOL {.stdcall.}
+  LPFNADDPROPSHEETPAGES* =
+    proc(P1: LPVOID, P2: LPFNADDPROPSHEETPAGE, P3: LPARAM): WINBOOL {.stdcall.}
+  PFNLVCOMPARE* = proc(P1: LPARAM, P2: LPARAM, P3: LPARAM): int32 {.stdcall.}
+  PFTASKDIALOGCALLBACK* = proc(
+    hwnd: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM, lpRefData: LONG_PTR
+  ): HRESULT {.stdcall.}
   DPASTREAMINFO* {.pure.} = object
     iPos*: int32
     pvItem*: pointer
-  PFNDPASTREAM* = proc (pinfo: ptr DPASTREAMINFO, pstream: ptr IStream, pvInstData: pointer): HRESULT {.stdcall.}
-  PFNDPAMERGE* = proc (uMsg: UINT, pvDest: pointer, pvSrc: pointer, lParam: LPARAM): pointer {.stdcall.}
-  PFNDPAMERGECONST* = proc (uMsg: UINT, pvDest: pointer, pvSrc: pointer, lParam: LPARAM): pointer {.stdcall.}
-  SUBCLASSPROC* = proc (hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, uIdSubclass: UINT_PTR, dwRefData: DWORD_PTR): LRESULT {.stdcall.}
+
+  PFNDPASTREAM* = proc(
+    pinfo: ptr DPASTREAMINFO, pstream: ptr IStream, pvInstData: pointer
+  ): HRESULT {.stdcall.}
+  PFNDPAMERGE* = proc(
+    uMsg: UINT, pvDest: pointer, pvSrc: pointer, lParam: LPARAM
+  ): pointer {.stdcall.}
+  PFNDPAMERGECONST* = proc(
+    uMsg: UINT, pvDest: pointer, pvSrc: pointer, lParam: LPARAM
+  ): pointer {.stdcall.}
+  SUBCLASSPROC* = proc(
+    hWnd: HWND,
+    uMsg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    uIdSubclass: UINT_PTR,
+    dwRefData: DWORD_PTR,
+  ): LRESULT {.stdcall.}
   NMTRBTHUMBPOSCHANGING* {.pure.} = object
     hdr*: NMHDR
     dwPos*: DWORD
     nReason*: int32
+
   NMLVEMPTYMARKUP* {.pure.} = object
     hdr*: NMHDR
     dwFlags*: DWORD
     szMarkup*: array[L_MAX_URL_LENGTH, WCHAR]
+
   TVGETITEMPARTRECTINFO* {.pure.} = object
     hti*: HTREEITEM
     prc*: ptr RECT
     partID*: TVITEMPART
+
   NMTVITEMCHANGE* {.pure.} = object
     hdr*: NMHDR
     uChanged*: UINT
@@ -3749,6 +3936,7 @@
     uStateNew*: UINT
     uStateOld*: UINT
     lParam*: LPARAM
+
   NMTVASYNCDRAW* {.pure.} = object
     hdr*: NMHDR
     pimldp*: ptr IMAGELISTDRAWPARAMS
@@ -3757,15 +3945,19 @@
     lParam*: LPARAM
     dwRetFlags*: DWORD
     iRetImageIndex*: int32
+
   TASKDIALOG_BUTTON* {.pure, packed.} = object
     nButtonID*: int32
     pszButtonText*: PCWSTR
+
   TASKDIALOGCONFIG_UNION1* {.pure, union.} = object
     hMainIcon*: HICON
     pszMainIcon*: PCWSTR
+
   TASKDIALOGCONFIG_UNION2* {.pure, union.} = object
     hFooterIcon*: HICON
     pszFooterIcon*: PCWSTR
+
   TASKDIALOGCONFIG* {.pure, packed.} = object
     cbSize*: UINT
     hwndParent*: HWND
@@ -3791,978 +3983,2969 @@
     pfCallback*: PFTASKDIALOGCALLBACK
     lpCallbackData*: LONG_PTR
     cxWidth*: UINT
+
   IMAGELISTSTATS* {.pure.} = object
     cbSize*: DWORD
     cAlloc*: int32
     cUsed*: int32
     cStandby*: int32
+
   IImageList* {.pure.} = object
     lpVtbl*: ptr IImageListVtbl
+
   IImageListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Add*: proc(self: ptr IImageList, hbmImage: HBITMAP, hbmMask: HBITMAP, pi: ptr int32): HRESULT {.stdcall.}
-    ReplaceIcon*: proc(self: ptr IImageList, i: int32, hicon: HICON, pi: ptr int32): HRESULT {.stdcall.}
-    SetOverlayImage*: proc(self: ptr IImageList, iImage: int32, iOverlay: int32): HRESULT {.stdcall.}
-    Replace*: proc(self: ptr IImageList, i: int32, hbmImage: HBITMAP, hbmMask: HBITMAP): HRESULT {.stdcall.}
-    AddMasked*: proc(self: ptr IImageList, hbmImage: HBITMAP, crMask: COLORREF, pi: ptr int32): HRESULT {.stdcall.}
-    Draw*: proc(self: ptr IImageList, pimldp: ptr IMAGELISTDRAWPARAMS): HRESULT {.stdcall.}
+    Add*: proc(
+      self: ptr IImageList, hbmImage: HBITMAP, hbmMask: HBITMAP, pi: ptr int32
+    ): HRESULT {.stdcall.}
+    ReplaceIcon*: proc(
+      self: ptr IImageList, i: int32, hicon: HICON, pi: ptr int32
+    ): HRESULT {.stdcall.}
+    SetOverlayImage*:
+      proc(self: ptr IImageList, iImage: int32, iOverlay: int32): HRESULT {.stdcall.}
+    Replace*: proc(
+      self: ptr IImageList, i: int32, hbmImage: HBITMAP, hbmMask: HBITMAP
+    ): HRESULT {.stdcall.}
+    AddMasked*: proc(
+      self: ptr IImageList, hbmImage: HBITMAP, crMask: COLORREF, pi: ptr int32
+    ): HRESULT {.stdcall.}
+    Draw*:
+      proc(self: ptr IImageList, pimldp: ptr IMAGELISTDRAWPARAMS): HRESULT {.stdcall.}
     Remove*: proc(self: ptr IImageList, i: int32): HRESULT {.stdcall.}
-    GetIcon*: proc(self: ptr IImageList, i: int32, flags: UINT, picon: ptr HICON): HRESULT {.stdcall.}
-    GetImageInfo*: proc(self: ptr IImageList, i: int32, pImageInfo: ptr IMAGEINFO): HRESULT {.stdcall.}
-    Copy*: proc(self: ptr IImageList, iDst: int32, punkSrc: ptr IUnknown, iSrc: int32, uFlags: UINT): HRESULT {.stdcall.}
-    Merge*: proc(self: ptr IImageList, i1: int32, punk2: ptr IUnknown, i2: int32, dx: int32, dy: int32, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IImageList, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetImageRect*: proc(self: ptr IImageList, i: int32, prc: ptr RECT): HRESULT {.stdcall.}
-    GetIconSize*: proc(self: ptr IImageList, cx: ptr int32, cy: ptr int32): HRESULT {.stdcall.}
+    GetIcon*: proc(
+      self: ptr IImageList, i: int32, flags: UINT, picon: ptr HICON
+    ): HRESULT {.stdcall.}
+    GetImageInfo*: proc(
+      self: ptr IImageList, i: int32, pImageInfo: ptr IMAGEINFO
+    ): HRESULT {.stdcall.}
+    Copy*: proc(
+      self: ptr IImageList,
+      iDst: int32,
+      punkSrc: ptr IUnknown,
+      iSrc: int32,
+      uFlags: UINT,
+    ): HRESULT {.stdcall.}
+    Merge*: proc(
+      self: ptr IImageList,
+      i1: int32,
+      punk2: ptr IUnknown,
+      i2: int32,
+      dx: int32,
+      dy: int32,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    Clone*:
+      proc(self: ptr IImageList, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetImageRect*:
+      proc(self: ptr IImageList, i: int32, prc: ptr RECT): HRESULT {.stdcall.}
+    GetIconSize*:
+      proc(self: ptr IImageList, cx: ptr int32, cy: ptr int32): HRESULT {.stdcall.}
     SetIconSize*: proc(self: ptr IImageList, cx: int32, cy: int32): HRESULT {.stdcall.}
     GetImageCount*: proc(self: ptr IImageList, pi: ptr int32): HRESULT {.stdcall.}
     SetImageCount*: proc(self: ptr IImageList, uNewCount: UINT): HRESULT {.stdcall.}
-    SetBkColor*: proc(self: ptr IImageList, clrBk: COLORREF, pclr: ptr COLORREF): HRESULT {.stdcall.}
+    SetBkColor*: proc(
+      self: ptr IImageList, clrBk: COLORREF, pclr: ptr COLORREF
+    ): HRESULT {.stdcall.}
     GetBkColor*: proc(self: ptr IImageList, pclr: ptr COLORREF): HRESULT {.stdcall.}
-    BeginDrag*: proc(self: ptr IImageList, iTrack: int32, dxHotspot: int32, dyHotspot: int32): HRESULT {.stdcall.}
+    BeginDrag*: proc(
+      self: ptr IImageList, iTrack: int32, dxHotspot: int32, dyHotspot: int32
+    ): HRESULT {.stdcall.}
     EndDrag*: proc(self: ptr IImageList): HRESULT {.stdcall.}
-    DragEnter*: proc(self: ptr IImageList, hwndLock: HWND, x: int32, y: int32): HRESULT {.stdcall.}
+    DragEnter*: proc(self: ptr IImageList, hwndLock: HWND, x: int32, y: int32): HRESULT {.
+      stdcall
+    .}
     DragLeave*: proc(self: ptr IImageList, hwndLock: HWND): HRESULT {.stdcall.}
     DragMove*: proc(self: ptr IImageList, x: int32, y: int32): HRESULT {.stdcall.}
-    SetDragCursorImage*: proc(self: ptr IImageList, punk: ptr IUnknown, iDrag: int32, dxHotspot: int32, dyHotspot: int32): HRESULT {.stdcall.}
+    SetDragCursorImage*: proc(
+      self: ptr IImageList,
+      punk: ptr IUnknown,
+      iDrag: int32,
+      dxHotspot: int32,
+      dyHotspot: int32,
+    ): HRESULT {.stdcall.}
     DragShowNolock*: proc(self: ptr IImageList, fShow: WINBOOL): HRESULT {.stdcall.}
-    GetDragImage*: proc(self: ptr IImageList, ppt: ptr POINT, pptHotspot: ptr POINT, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetItemFlags*: proc(self: ptr IImageList, i: int32, dwFlags: ptr DWORD): HRESULT {.stdcall.}
-    GetOverlayImage*: proc(self: ptr IImageList, iOverlay: int32, piIndex: ptr int32): HRESULT {.stdcall.}
+    GetDragImage*: proc(
+      self: ptr IImageList,
+      ppt: ptr POINT,
+      pptHotspot: ptr POINT,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetItemFlags*:
+      proc(self: ptr IImageList, i: int32, dwFlags: ptr DWORD): HRESULT {.stdcall.}
+    GetOverlayImage*: proc(
+      self: ptr IImageList, iOverlay: int32, piIndex: ptr int32
+    ): HRESULT {.stdcall.}
+
   IImageList2* {.pure.} = object
     lpVtbl*: ptr IImageList2Vtbl
+
   IImageList2Vtbl* {.pure, inheritable.} = object of IImageListVtbl
-    Resize*: proc(self: ptr IImageList2, cxNewIconSize: int32, cyNewIconSize: int32): HRESULT {.stdcall.}
-    GetOriginalSize*: proc(self: ptr IImageList2, iImage: int32, dwFlags: DWORD, pcx: ptr int32, pcy: ptr int32): HRESULT {.stdcall.}
-    SetOriginalSize*: proc(self: ptr IImageList2, iImage: int32, cx: int32, cy: int32): HRESULT {.stdcall.}
+    Resize*: proc(
+      self: ptr IImageList2, cxNewIconSize: int32, cyNewIconSize: int32
+    ): HRESULT {.stdcall.}
+    GetOriginalSize*: proc(
+      self: ptr IImageList2,
+      iImage: int32,
+      dwFlags: DWORD,
+      pcx: ptr int32,
+      pcy: ptr int32,
+    ): HRESULT {.stdcall.}
+    SetOriginalSize*: proc(
+      self: ptr IImageList2, iImage: int32, cx: int32, cy: int32
+    ): HRESULT {.stdcall.}
     SetCallback*: proc(self: ptr IImageList2, punk: ptr IUnknown): HRESULT {.stdcall.}
-    GetCallback*: proc(self: ptr IImageList2, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    ForceImagePresent*: proc(self: ptr IImageList2, iImage: int32, dwFlags: DWORD): HRESULT {.stdcall.}
-    DiscardImages*: proc(self: ptr IImageList2, iFirstImage: int32, iLastImage: int32, dwFlags: DWORD): HRESULT {.stdcall.}
-    PreloadImages*: proc(self: ptr IImageList2, pimldp: ptr IMAGELISTDRAWPARAMS): HRESULT {.stdcall.}
-    GetStatistics*: proc(self: ptr IImageList2, pils: ptr IMAGELISTSTATS): HRESULT {.stdcall.}
-    Initialize*: proc(self: ptr IImageList2, cx: int32, cy: int32, flags: UINT, cInitial: int32, cGrow: int32): HRESULT {.stdcall.}
-    Replace2*: proc(self: ptr IImageList2, i: int32, hbmImage: HBITMAP, hbmMask: HBITMAP, punk: ptr IUnknown, dwFlags: DWORD): HRESULT {.stdcall.}
-    ReplaceFromImageList*: proc(self: ptr IImageList2, i: int32, pil: ptr IImageList, iSrc: int32, punk: ptr IUnknown, dwFlags: DWORD): HRESULT {.stdcall.}
-proc CreatePropertySheetPageA*(constPropSheetPagePointer: LPCPROPSHEETPAGEA): HPROPSHEETPAGE {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc CreatePropertySheetPageW*(constPropSheetPagePointer: LPCPROPSHEETPAGEW): HPROPSHEETPAGE {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DestroyPropertySheetPage*(P1: HPROPSHEETPAGE): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc PropertySheetA*(P1: LPCPROPSHEETHEADERA): INT_PTR {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc PropertySheetW*(P1: LPCPROPSHEETHEADERW): INT_PTR {.winapi, stdcall, dynlib: "comctl32", importc.}
+    GetCallback*:
+      proc(self: ptr IImageList2, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    ForceImagePresent*:
+      proc(self: ptr IImageList2, iImage: int32, dwFlags: DWORD): HRESULT {.stdcall.}
+    DiscardImages*: proc(
+      self: ptr IImageList2, iFirstImage: int32, iLastImage: int32, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
+    PreloadImages*:
+      proc(self: ptr IImageList2, pimldp: ptr IMAGELISTDRAWPARAMS): HRESULT {.stdcall.}
+    GetStatistics*:
+      proc(self: ptr IImageList2, pils: ptr IMAGELISTSTATS): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IImageList2,
+      cx: int32,
+      cy: int32,
+      flags: UINT,
+      cInitial: int32,
+      cGrow: int32,
+    ): HRESULT {.stdcall.}
+    Replace2*: proc(
+      self: ptr IImageList2,
+      i: int32,
+      hbmImage: HBITMAP,
+      hbmMask: HBITMAP,
+      punk: ptr IUnknown,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    ReplaceFromImageList*: proc(
+      self: ptr IImageList2,
+      i: int32,
+      pil: ptr IImageList,
+      iSrc: int32,
+      punk: ptr IUnknown,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+
+proc CreatePropertySheetPageA*(
+  constPropSheetPagePointer: LPCPROPSHEETPAGEA
+): HPROPSHEETPAGE {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc CreatePropertySheetPageW*(
+  constPropSheetPagePointer: LPCPROPSHEETPAGEW
+): HPROPSHEETPAGE {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DestroyPropertySheetPage*(
+  P1: HPROPSHEETPAGE
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc PropertySheetA*(
+  P1: LPCPROPSHEETHEADERA
+): INT_PTR {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc PropertySheetW*(
+  P1: LPCPROPSHEETHEADERW
+): INT_PTR {.winapi, stdcall, dynlib: "comctl32", importc.}
+
 proc InitCommonControls*(): void {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc InitCommonControlsEx*(P1: ptr TINITCOMMONCONTROLSEX): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_Create*(cx: int32, cy: int32, flags: UINT, cInitial: int32, cGrow: int32): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_Destroy*(himl: HIMAGELIST): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_GetImageCount*(himl: HIMAGELIST): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_SetImageCount*(himl: HIMAGELIST, uNewCount: UINT): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_Add*(himl: HIMAGELIST, hbmImage: HBITMAP, hbmMask: HBITMAP): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_ReplaceIcon*(himl: HIMAGELIST, i: int32, hicon: HICON): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_SetBkColor*(himl: HIMAGELIST, clrBk: COLORREF): COLORREF {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_GetBkColor*(himl: HIMAGELIST): COLORREF {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_SetOverlayImage*(himl: HIMAGELIST, iImage: int32, iOverlay: int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_Draw*(himl: HIMAGELIST, i: int32, hdcDst: HDC, x: int32, y: int32, fStyle: UINT): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_Replace*(himl: HIMAGELIST, i: int32, hbmImage: HBITMAP, hbmMask: HBITMAP): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_AddMasked*(himl: HIMAGELIST, hbmImage: HBITMAP, crMask: COLORREF): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_DrawEx*(himl: HIMAGELIST, i: int32, hdcDst: HDC, x: int32, y: int32, dx: int32, dy: int32, rgbBk: COLORREF, rgbFg: COLORREF, fStyle: UINT): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_DrawIndirect*(pimldp: ptr IMAGELISTDRAWPARAMS): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_Remove*(himl: HIMAGELIST, i: int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_GetIcon*(himl: HIMAGELIST, i: int32, flags: UINT): HICON {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_LoadImageA*(hi: HINSTANCE, lpbmp: LPCSTR, cx: int32, cGrow: int32, crMask: COLORREF, uType: UINT, uFlags: UINT): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_LoadImageW*(hi: HINSTANCE, lpbmp: LPCWSTR, cx: int32, cGrow: int32, crMask: COLORREF, uType: UINT, uFlags: UINT): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_Copy*(himlDst: HIMAGELIST, iDst: int32, himlSrc: HIMAGELIST, iSrc: int32, uFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_BeginDrag*(himlTrack: HIMAGELIST, iTrack: int32, dxHotspot: int32, dyHotspot: int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+proc InitCommonControlsEx*(
+  P1: ptr TINITCOMMONCONTROLSEX
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_Create*(
+  cx: int32, cy: int32, flags: UINT, cInitial: int32, cGrow: int32
+): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_Destroy*(
+  himl: HIMAGELIST
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_GetImageCount*(
+  himl: HIMAGELIST
+): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_SetImageCount*(
+  himl: HIMAGELIST, uNewCount: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_Add*(
+  himl: HIMAGELIST, hbmImage: HBITMAP, hbmMask: HBITMAP
+): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_ReplaceIcon*(
+  himl: HIMAGELIST, i: int32, hicon: HICON
+): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_SetBkColor*(
+  himl: HIMAGELIST, clrBk: COLORREF
+): COLORREF {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_GetBkColor*(
+  himl: HIMAGELIST
+): COLORREF {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_SetOverlayImage*(
+  himl: HIMAGELIST, iImage: int32, iOverlay: int32
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_Draw*(
+  himl: HIMAGELIST, i: int32, hdcDst: HDC, x: int32, y: int32, fStyle: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_Replace*(
+  himl: HIMAGELIST, i: int32, hbmImage: HBITMAP, hbmMask: HBITMAP
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_AddMasked*(
+  himl: HIMAGELIST, hbmImage: HBITMAP, crMask: COLORREF
+): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_DrawEx*(
+  himl: HIMAGELIST,
+  i: int32,
+  hdcDst: HDC,
+  x: int32,
+  y: int32,
+  dx: int32,
+  dy: int32,
+  rgbBk: COLORREF,
+  rgbFg: COLORREF,
+  fStyle: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_DrawIndirect*(
+  pimldp: ptr IMAGELISTDRAWPARAMS
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_Remove*(
+  himl: HIMAGELIST, i: int32
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_GetIcon*(
+  himl: HIMAGELIST, i: int32, flags: UINT
+): HICON {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_LoadImageA*(
+  hi: HINSTANCE,
+  lpbmp: LPCSTR,
+  cx: int32,
+  cGrow: int32,
+  crMask: COLORREF,
+  uType: UINT,
+  uFlags: UINT,
+): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_LoadImageW*(
+  hi: HINSTANCE,
+  lpbmp: LPCWSTR,
+  cx: int32,
+  cGrow: int32,
+  crMask: COLORREF,
+  uType: UINT,
+  uFlags: UINT,
+): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_Copy*(
+  himlDst: HIMAGELIST, iDst: int32, himlSrc: HIMAGELIST, iSrc: int32, uFlags: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_BeginDrag*(
+  himlTrack: HIMAGELIST, iTrack: int32, dxHotspot: int32, dyHotspot: int32
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
 proc ImageList_EndDrag*(): void {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_DragEnter*(hwndLock: HWND, x: int32, y: int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_DragLeave*(hwndLock: HWND): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_DragMove*(x: int32, y: int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_SetDragCursorImage*(himlDrag: HIMAGELIST, iDrag: int32, dxHotspot: int32, dyHotspot: int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_DragShowNolock*(fShow: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_GetDragImage*(ppt: ptr POINT, pptHotspot: ptr POINT): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_Read*(pstm: LPSTREAM): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_Write*(himl: HIMAGELIST, pstm: LPSTREAM): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_ReadEx*(dwFlags: DWORD, pstm: LPSTREAM, riid: REFIID, ppv: ptr PVOID): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_WriteEx*(himl: HIMAGELIST, dwFlags: DWORD, pstm: LPSTREAM): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_GetIconSize*(himl: HIMAGELIST, cx: ptr int32, cy: ptr int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_SetIconSize*(himl: HIMAGELIST, cx: int32, cy: int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_GetImageInfo*(himl: HIMAGELIST, i: int32, pImageInfo: ptr IMAGEINFO): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_Merge*(himl1: HIMAGELIST, i1: int32, himl2: HIMAGELIST, i2: int32, dx: int32, dy: int32): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_Duplicate*(himl: HIMAGELIST): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc HIMAGELIST_QueryInterface*(himl: HIMAGELIST, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc CreateToolbarEx*(hwnd: HWND, ws: DWORD, wID: UINT, nBitmaps: int32, hBMInst: HINSTANCE, wBMID: UINT_PTR, lpButtons: LPCTBBUTTON, iNumButtons: int32, dxButton: int32, dyButton: int32, dxBitmap: int32, dyBitmap: int32, uStructSize: UINT): HWND {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc CreateMappedBitmap*(hInstance: HINSTANCE, idBitmap: INT_PTR, wFlags: UINT, lpColorMap: LPCOLORMAP, iNumMaps: int32): HBITMAP {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DrawStatusTextA*(hDC: HDC, lprc: LPCRECT, pszText: LPCSTR, uFlags: UINT): void {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DrawStatusTextW*(hDC: HDC, lprc: LPCRECT, pszText: LPCWSTR, uFlags: UINT): void {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc CreateStatusWindowA*(style: LONG, lpszText: LPCSTR, hwndParent: HWND, wID: UINT): HWND {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc CreateStatusWindowW*(style: LONG, lpszText: LPCWSTR, hwndParent: HWND, wID: UINT): HWND {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc MenuHelp*(uMsg: UINT, wParam: WPARAM, lParam: LPARAM, hMainMenu: HMENU, hInst: HINSTANCE, hwndStatus: HWND, lpwIDs: ptr UINT): void {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ShowHideMenuCtl*(hWnd: HWND, uFlags: UINT_PTR, lpInfo: LPINT): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc GetEffectiveClientRect*(hWnd: HWND, lprc: LPRECT, lpInfo: ptr INT): void {.winapi, stdcall, dynlib: "comctl32", importc.}
+proc ImageList_DragEnter*(
+  hwndLock: HWND, x: int32, y: int32
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_DragLeave*(
+  hwndLock: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_DragMove*(
+  x: int32, y: int32
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_SetDragCursorImage*(
+  himlDrag: HIMAGELIST, iDrag: int32, dxHotspot: int32, dyHotspot: int32
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_DragShowNolock*(
+  fShow: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_GetDragImage*(
+  ppt: ptr POINT, pptHotspot: ptr POINT
+): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_Read*(
+  pstm: LPSTREAM
+): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_Write*(
+  himl: HIMAGELIST, pstm: LPSTREAM
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_ReadEx*(
+  dwFlags: DWORD, pstm: LPSTREAM, riid: REFIID, ppv: ptr PVOID
+): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_WriteEx*(
+  himl: HIMAGELIST, dwFlags: DWORD, pstm: LPSTREAM
+): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_GetIconSize*(
+  himl: HIMAGELIST, cx: ptr int32, cy: ptr int32
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_SetIconSize*(
+  himl: HIMAGELIST, cx: int32, cy: int32
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_GetImageInfo*(
+  himl: HIMAGELIST, i: int32, pImageInfo: ptr IMAGEINFO
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_Merge*(
+  himl1: HIMAGELIST, i1: int32, himl2: HIMAGELIST, i2: int32, dx: int32, dy: int32
+): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_Duplicate*(
+  himl: HIMAGELIST
+): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc HIMAGELIST_QueryInterface*(
+  himl: HIMAGELIST, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc CreateToolbarEx*(
+  hwnd: HWND,
+  ws: DWORD,
+  wID: UINT,
+  nBitmaps: int32,
+  hBMInst: HINSTANCE,
+  wBMID: UINT_PTR,
+  lpButtons: LPCTBBUTTON,
+  iNumButtons: int32,
+  dxButton: int32,
+  dyButton: int32,
+  dxBitmap: int32,
+  dyBitmap: int32,
+  uStructSize: UINT,
+): HWND {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc CreateMappedBitmap*(
+  hInstance: HINSTANCE,
+  idBitmap: INT_PTR,
+  wFlags: UINT,
+  lpColorMap: LPCOLORMAP,
+  iNumMaps: int32,
+): HBITMAP {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DrawStatusTextA*(
+  hDC: HDC, lprc: LPCRECT, pszText: LPCSTR, uFlags: UINT
+): void {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DrawStatusTextW*(
+  hDC: HDC, lprc: LPCRECT, pszText: LPCWSTR, uFlags: UINT
+): void {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc CreateStatusWindowA*(
+  style: LONG, lpszText: LPCSTR, hwndParent: HWND, wID: UINT
+): HWND {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc CreateStatusWindowW*(
+  style: LONG, lpszText: LPCWSTR, hwndParent: HWND, wID: UINT
+): HWND {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc MenuHelp*(
+  uMsg: UINT,
+  wParam: WPARAM,
+  lParam: LPARAM,
+  hMainMenu: HMENU,
+  hInst: HINSTANCE,
+  hwndStatus: HWND,
+  lpwIDs: ptr UINT,
+): void {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ShowHideMenuCtl*(
+  hWnd: HWND, uFlags: UINT_PTR, lpInfo: LPINT
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc GetEffectiveClientRect*(
+  hWnd: HWND, lprc: LPRECT, lpInfo: ptr INT
+): void {.winapi, stdcall, dynlib: "comctl32", importc.}
+
 proc MakeDragList*(hLB: HWND): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DrawInsert*(handParent: HWND, hLB: HWND, nItem: int32): void {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc LBItemFromPt*(hLB: HWND, pt: POINT, bAutoScroll: WINBOOL): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc CreateUpDownControl*(dwStyle: DWORD, x: int32, y: int32, cx: int32, cy: int32, hParent: HWND, nID: int32, hInst: HINSTANCE, hBuddy: HWND, nUpper: int32, nLower: int32, nPos: int32): HWND {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc TaskDialogIndirect*(pTaskConfig: ptr TASKDIALOGCONFIG, pnButton: ptr int32, pnRadioButton: ptr int32, pfVerificationFlagChecked: ptr WINBOOL): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc TaskDialog*(hwndOwner: HWND, hInstance: HINSTANCE, pszWindowTitle: PCWSTR, pszMainInstruction: PCWSTR, pszContent: PCWSTR, dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS, pszIcon: PCWSTR, pnButton: ptr int32): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc InitMUILanguage*(uiLang: LANGID): void {.winapi, stdcall, dynlib: "comctl32", importc.}
+proc DrawInsert*(
+  handParent: HWND, hLB: HWND, nItem: int32
+): void {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc LBItemFromPt*(
+  hLB: HWND, pt: POINT, bAutoScroll: WINBOOL
+): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc CreateUpDownControl*(
+  dwStyle: DWORD,
+  x: int32,
+  y: int32,
+  cx: int32,
+  cy: int32,
+  hParent: HWND,
+  nID: int32,
+  hInst: HINSTANCE,
+  hBuddy: HWND,
+  nUpper: int32,
+  nLower: int32,
+  nPos: int32,
+): HWND {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc TaskDialogIndirect*(
+  pTaskConfig: ptr TASKDIALOGCONFIG,
+  pnButton: ptr int32,
+  pnRadioButton: ptr int32,
+  pfVerificationFlagChecked: ptr WINBOOL,
+): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc TaskDialog*(
+  hwndOwner: HWND,
+  hInstance: HINSTANCE,
+  pszWindowTitle: PCWSTR,
+  pszMainInstruction: PCWSTR,
+  pszContent: PCWSTR,
+  dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS,
+  pszIcon: PCWSTR,
+  pnButton: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc InitMUILanguage*(
+  uiLang: LANGID
+): void {.winapi, stdcall, dynlib: "comctl32", importc.}
+
 proc GetMUILanguage*(): LANGID {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DSA_Create*(cbItem: int32, cItemGrow: int32): HDSA {.winapi, stdcall, dynlib: "comctl32", importc.}
+proc DSA_Create*(
+  cbItem: int32, cItemGrow: int32
+): HDSA {.winapi, stdcall, dynlib: "comctl32", importc.}
+
 proc DSA_Destroy*(hdsa: HDSA): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DSA_DestroyCallback*(hdsa: HDSA, pfnCB: PFNDAENUMCALLBACK, pData: pointer): void {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DSA_DeleteItem*(hdsa: HDSA, i: int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DSA_DeleteAllItems*(hdsa: HDSA): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DSA_EnumCallback*(hdsa: HDSA, pfnCB: PFNDAENUMCALLBACK, pData: pointer): void {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DSA_InsertItem*(hdsa: HDSA, i: int32, pitem: pointer): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DSA_GetItemPtr*(hdsa: HDSA, i: int32): PVOID {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DSA_GetItem*(hdsa: HDSA, i: int32, pitem: pointer): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DSA_SetItem*(hdsa: HDSA, i: int32, pitem: pointer): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+proc DSA_DestroyCallback*(
+  hdsa: HDSA, pfnCB: PFNDAENUMCALLBACK, pData: pointer
+): void {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DSA_DeleteItem*(
+  hdsa: HDSA, i: int32
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DSA_DeleteAllItems*(
+  hdsa: HDSA
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DSA_EnumCallback*(
+  hdsa: HDSA, pfnCB: PFNDAENUMCALLBACK, pData: pointer
+): void {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DSA_InsertItem*(
+  hdsa: HDSA, i: int32, pitem: pointer
+): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DSA_GetItemPtr*(
+  hdsa: HDSA, i: int32
+): PVOID {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DSA_GetItem*(
+  hdsa: HDSA, i: int32, pitem: pointer
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DSA_SetItem*(
+  hdsa: HDSA, i: int32, pitem: pointer
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
 proc DSA_Clone*(hdsa: HDSA): HDSA {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DSA_GetSize*(hdsa: HDSA): ULONGLONG {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DSA_Sort*(pdsa: HDSA, pfnCompare: PFNDACOMPARE, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_Create*(cItemGrow: int32): HDPA {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_CreateEx*(cpGrow: int32, hheap: HANDLE): HDPA {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_Clone*(hdpa: HDPA, hdpaNew: HDPA): HDPA {.winapi, stdcall, dynlib: "comctl32", importc.}
+proc DSA_GetSize*(
+  hdsa: HDSA
+): ULONGLONG {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DSA_Sort*(
+  pdsa: HDSA, pfnCompare: PFNDACOMPARE, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_Create*(
+  cItemGrow: int32
+): HDPA {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_CreateEx*(
+  cpGrow: int32, hheap: HANDLE
+): HDPA {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_Clone*(
+  hdpa: HDPA, hdpaNew: HDPA
+): HDPA {.winapi, stdcall, dynlib: "comctl32", importc.}
+
 proc DPA_Destroy*(hdpa: HDPA): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_DestroyCallback*(hdpa: HDPA, pfnCB: PFNDAENUMCALLBACK, pData: pointer): void {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_DeletePtr*(hdpa: HDPA, i: int32): PVOID {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_DeleteAllPtrs*(hdpa: HDPA): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_EnumCallback*(hdpa: HDPA, pfnCB: PFNDAENUMCALLBACK, pData: pointer): void {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_Grow*(pdpa: HDPA, cp: int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_InsertPtr*(hdpa: HDPA, i: int32, p: pointer): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_SetPtr*(hdpa: HDPA, i: int32, p: pointer): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_GetPtr*(hdpa: HDPA, i: INT_PTR): PVOID {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_GetPtrIndex*(hdpa: HDPA, p: pointer): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_GetSize*(hdpa: HDPA): ULONGLONG {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_Sort*(hdpa: HDPA, pfnCompare: PFNDACOMPARE, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_LoadStream*(phdpa: ptr HDPA, pfn: PFNDPASTREAM, pstream: ptr IStream, pvInstData: pointer): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_SaveStream*(hdpa: HDPA, pfn: PFNDPASTREAM, pstream: ptr IStream, pvInstData: pointer): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_Merge*(hdpaDest: HDPA, hdpaSrc: HDPA, dwFlags: DWORD, pfnCompare: PFNDACOMPARE, pfnMerge: PFNDPAMERGE, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DPA_Search*(hdpa: HDPA, pFind: pointer, iStart: int32, pfnCompare: PFNDACOMPARE, lParam: LPARAM, options: UINT): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc Str_SetPtrW*(ppsz: ptr LPWSTR, psz: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc COMCTL32_TrackMouseEvent*(lpEventTrack: LPTRACKMOUSEEVENT): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc: "_TrackMouseEvent".}
-proc FlatSB_EnableScrollBar*(P1: HWND, P2: int32, P3: UINT): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc FlatSB_ShowScrollBar*(P1: HWND, code: int32, P3: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc FlatSB_GetScrollRange*(P1: HWND, code: int32, P3: LPINT, P4: LPINT): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc FlatSB_GetScrollInfo*(P1: HWND, code: int32, P3: LPSCROLLINFO): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc FlatSB_GetScrollPos*(P1: HWND, code: int32): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc FlatSB_GetScrollProp*(P1: HWND, propIndex: int32, P3: LPINT): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc FlatSB_SetScrollPos*(P1: HWND, code: int32, pos: int32, fRedraw: WINBOOL): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc FlatSB_SetScrollInfo*(P1: HWND, code: int32, P3: LPSCROLLINFO, fRedraw: WINBOOL): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc FlatSB_SetScrollRange*(P1: HWND, code: int32, min: int32, max: int32, fRedraw: WINBOOL): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc FlatSB_SetScrollProp*(P1: HWND, index: UINT, newValue: INT_PTR, P4: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc FlatSB_SetScrollPropPtr*(P1: HWND, index: UINT, newValue: INT_PTR, P4: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc: "FlatSB_SetScrollProp".}
-proc InitializeFlatSB*(P1: HWND): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc UninitializeFlatSB*(P1: HWND): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc SetWindowSubclass*(hWnd: HWND, pfnSubclass: SUBCLASSPROC, uIdSubclass: UINT_PTR, dwRefData: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc GetWindowSubclass*(hWnd: HWND, pfnSubclass: SUBCLASSPROC, uIdSubclass: UINT_PTR, pdwRefData: ptr DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc RemoveWindowSubclass*(hWnd: HWND, pfnSubclass: SUBCLASSPROC, uIdSubclass: UINT_PTR): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DefSubclassProc*(hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc DrawShadowText*(hdc: HDC, pszText: LPCWSTR, cch: UINT, prc: ptr RECT, dwFlags: DWORD, crText: COLORREF, crShadow: COLORREF, ixOffset: int32, iyOffset: int32): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc LoadIconMetric*(hinst: HINSTANCE, pszName: PCWSTR, lims: int32, phico: ptr HICON): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc LoadIconWithScaleDown*(hinst: HINSTANCE, pszName: PCWSTR, cx: int32, cy: int32, phico: ptr HICON): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
-proc ImageList_CoCreateInstance*(rclsid: REFCLSID, punkOuter: ptr IUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
-template HANDLE_WM_NOTIFY*(hwnd: HWND, wParam: WPARAM, lParam: LPARAM, fn: proc(hwnd: HWND, wParam: WPARAM, nmhdr: ptr NMHDR)) = fn(hwnd, wParam, cast[ptr NMHDR](lParam))
-template FORWARD_WM_NOTIFY*(hwnd: HWND, idFrom: int32, pnmhdr: ptr NMHDR, fn: SendMessage.type|PostMessage.type): untyped = fn(hwnd, WM_NOTIFY, WPARAM idFrom, cast[LPARAM](pnmhdr))
-template INDEXTOOVERLAYMASK*(i: untyped): untyped = i shl 8
-template INDEXTOSTATEIMAGEMASK*(i: untyped): untyped = i shl 12
-template MAKEIPRANGE*(low: BYTE, high: BYTE): LPARAM = (high.LPARAM shl 8) + low.LPARAM
-template MAKEIPADDRESS*(b1: BYTE, b2: BYTE, b3: BYTE, b4: BYTE): LPARAM = (b1.LPARAM shl 24) + (b2.LPARAM shl 16) + (b3.LPARAM shl 8) + (b4.LPARAM)
-template FIRST_IPADDRESS*(x: LPARAM): BYTE = cast[BYTE](x shr 24)
-template SECOND_IPADDRESS*(x: LPARAM): BYTE = cast[BYTE](x shr 16)
-template THIRD_IPADDRESS*(x: LPARAM): BYTE = cast[BYTE](x shr 8)
-template FOURTH_IPADDRESS*(x: LPARAM): BYTE = cast[BYTE](x)
+proc DPA_DestroyCallback*(
+  hdpa: HDPA, pfnCB: PFNDAENUMCALLBACK, pData: pointer
+): void {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_DeletePtr*(
+  hdpa: HDPA, i: int32
+): PVOID {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_DeleteAllPtrs*(
+  hdpa: HDPA
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_EnumCallback*(
+  hdpa: HDPA, pfnCB: PFNDAENUMCALLBACK, pData: pointer
+): void {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_Grow*(
+  pdpa: HDPA, cp: int32
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_InsertPtr*(
+  hdpa: HDPA, i: int32, p: pointer
+): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_SetPtr*(
+  hdpa: HDPA, i: int32, p: pointer
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_GetPtr*(
+  hdpa: HDPA, i: INT_PTR
+): PVOID {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_GetPtrIndex*(
+  hdpa: HDPA, p: pointer
+): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_GetSize*(
+  hdpa: HDPA
+): ULONGLONG {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_Sort*(
+  hdpa: HDPA, pfnCompare: PFNDACOMPARE, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_LoadStream*(
+  phdpa: ptr HDPA, pfn: PFNDPASTREAM, pstream: ptr IStream, pvInstData: pointer
+): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_SaveStream*(
+  hdpa: HDPA, pfn: PFNDPASTREAM, pstream: ptr IStream, pvInstData: pointer
+): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_Merge*(
+  hdpaDest: HDPA,
+  hdpaSrc: HDPA,
+  dwFlags: DWORD,
+  pfnCompare: PFNDACOMPARE,
+  pfnMerge: PFNDPAMERGE,
+  lParam: LPARAM,
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DPA_Search*(
+  hdpa: HDPA,
+  pFind: pointer,
+  iStart: int32,
+  pfnCompare: PFNDACOMPARE,
+  lParam: LPARAM,
+  options: UINT,
+): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc Str_SetPtrW*(
+  ppsz: ptr LPWSTR, psz: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc COMCTL32_TrackMouseEvent*(
+  lpEventTrack: LPTRACKMOUSEEVENT
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc: "_TrackMouseEvent".}
+
+proc FlatSB_EnableScrollBar*(
+  P1: HWND, P2: int32, P3: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc FlatSB_ShowScrollBar*(
+  P1: HWND, code: int32, P3: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc FlatSB_GetScrollRange*(
+  P1: HWND, code: int32, P3: LPINT, P4: LPINT
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc FlatSB_GetScrollInfo*(
+  P1: HWND, code: int32, P3: LPSCROLLINFO
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc FlatSB_GetScrollPos*(
+  P1: HWND, code: int32
+): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc FlatSB_GetScrollProp*(
+  P1: HWND, propIndex: int32, P3: LPINT
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc FlatSB_SetScrollPos*(
+  P1: HWND, code: int32, pos: int32, fRedraw: WINBOOL
+): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc FlatSB_SetScrollInfo*(
+  P1: HWND, code: int32, P3: LPSCROLLINFO, fRedraw: WINBOOL
+): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc FlatSB_SetScrollRange*(
+  P1: HWND, code: int32, min: int32, max: int32, fRedraw: WINBOOL
+): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc FlatSB_SetScrollProp*(
+  P1: HWND, index: UINT, newValue: INT_PTR, P4: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc FlatSB_SetScrollPropPtr*(
+  P1: HWND, index: UINT, newValue: INT_PTR, P4: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc: "FlatSB_SetScrollProp".}
+
+proc InitializeFlatSB*(
+  P1: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc UninitializeFlatSB*(
+  P1: HWND
+): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc SetWindowSubclass*(
+  hWnd: HWND, pfnSubclass: SUBCLASSPROC, uIdSubclass: UINT_PTR, dwRefData: DWORD_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc GetWindowSubclass*(
+  hWnd: HWND,
+  pfnSubclass: SUBCLASSPROC,
+  uIdSubclass: UINT_PTR,
+  pdwRefData: ptr DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc RemoveWindowSubclass*(
+  hWnd: HWND, pfnSubclass: SUBCLASSPROC, uIdSubclass: UINT_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DefSubclassProc*(
+  hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc DrawShadowText*(
+  hdc: HDC,
+  pszText: LPCWSTR,
+  cch: UINT,
+  prc: ptr RECT,
+  dwFlags: DWORD,
+  crText: COLORREF,
+  crShadow: COLORREF,
+  ixOffset: int32,
+  iyOffset: int32,
+): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc LoadIconMetric*(
+  hinst: HINSTANCE, pszName: PCWSTR, lims: int32, phico: ptr HICON
+): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc LoadIconWithScaleDown*(
+  hinst: HINSTANCE, pszName: PCWSTR, cx: int32, cy: int32, phico: ptr HICON
+): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+proc ImageList_CoCreateInstance*(
+  rclsid: REFCLSID, punkOuter: ptr IUnknown, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+template HANDLE_WM_NOTIFY*(
+    hwnd: HWND,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    fn: proc(hwnd: HWND, wParam: WPARAM, nmhdr: ptr NMHDR),
+) =
+  fn(hwnd, wParam, cast[ptr NMHDR](lParam))
+
+template FORWARD_WM_NOTIFY*(
+    hwnd: HWND,
+    idFrom: int32,
+    pnmhdr: ptr NMHDR,
+    fn: SendMessage.type | PostMessage.type,
+): untyped =
+  fn(hwnd, WM_NOTIFY, WPARAM idFrom, cast[LPARAM](pnmhdr))
+
+template INDEXTOOVERLAYMASK*(i: untyped): untyped =
+  i shl 8
+
+template INDEXTOSTATEIMAGEMASK*(i: untyped): untyped =
+  i shl 12
+
+template MAKEIPRANGE*(low: BYTE, high: BYTE): LPARAM =
+  (high.LPARAM shl 8) + low.LPARAM
+
+template MAKEIPADDRESS*(b1: BYTE, b2: BYTE, b3: BYTE, b4: BYTE): LPARAM =
+  (b1.LPARAM shl 24) + (b2.LPARAM shl 16) + (b3.LPARAM shl 8) + (b4.LPARAM)
+
+template FIRST_IPADDRESS*(x: LPARAM): BYTE =
+  cast[BYTE](x shr 24)
+
+template SECOND_IPADDRESS*(x: LPARAM): BYTE =
+  cast[BYTE](x shr 16)
+
+template THIRD_IPADDRESS*(x: LPARAM): BYTE =
+  cast[BYTE](x shr 8)
+
+template FOURTH_IPADDRESS*(x: LPARAM): BYTE =
+  cast[BYTE](x)
+
 when winimUnicode:
-  const
-    ACM_OPEN* = ACM_OPENW
-when winimAnsi:
-  const
-    ACM_OPEN* = ACM_OPENA
-template Animate_Open*(hwnd: HWND, szName: LPTSTR): BOOL = discardable BOOL SendMessage(hwnd, ACM_OPEN, 0, cast[LPARAM](szName))
-template Animate_Close*(hwnd: HWND): BOOL = Animate_Open(hwnd, NULL)
-when winimUnicode:
-  const
-    ANIMATE_CLASS* = ANIMATE_CLASSW
+  const ACM_OPEN* = ACM_OPENW
 when winimAnsi:
-  const
-    ANIMATE_CLASS* = ANIMATE_CLASSA
-template Animate_Create*(hwndP: HWND, id: UINT, dwStyle: DWORD, hInstance: HINSTANCE): HWND = CreateWindow(ANIMATE_CLASS, NULL, dwStyle, 0, 0, 0, 0, hwndP, id, hInstance, NULL)
-template Animate_IsPlaying*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, ACM_ISPLAYING, 0, 0)
-template Animate_OpenEx*(hwnd: HWND, hInst: HINSTANCE, szName: LPTSTR): BOOL = discardable BOOL SendMessage(hwnd, ACM_OPEN, cast[WPARAM](hInst), cast[LPARAM](szName))
-template Animate_Play*(hwnd: HWND, `from`: UINT, `to`: UINT, rep: UINT): BOOL = discardable BOOL SendMessage(hwnd, ACM_PLAY, cast[WPARAM](rep), cast[LPARAM](MAKELONG(`from`, `to`)))
-template Animate_Seek*(hwnd: HWND, frame: UINT): BOOL = Animate_Play(hwnd, frame, frame, 1)
-template Animate_Stop*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, ACM_STOP, 0, 0)
-template Button_GetIdealSize*(hwnd: HWND, psize: ptr SIZE): BOOL = discardable BOOL SendMessage(hwnd, BCM_GETIDEALSIZE, 0, cast[LPARAM](psize))
-template Button_GetImageList*(hwnd: HWND, pbuttonImagelist: PBUTTON_IMAGELIST): BOOL = discardable BOOL SendMessage(hwnd, BCM_GETIMAGELIST, 0, cast[LPARAM](pbuttonImagelist))
-template Button_GetNote*(hwnd: HWND, psz: LPCWSTR, pcc: int32): BOOL = discardable BOOL SendMessage(hwnd, BCM_GETNOTE, cast[WPARAM](pcc), cast[LPARAM](psz))
-template Button_GetNoteLength*(hwnd: HWND): LRESULT = discardable LRESULT SendMessage(hwnd, BCM_GETNOTELENGTH, 0, 0)
-template Button_GetSplitInfo*(hwnd: HWND, pInfo: ptr BUTTON_SPLITINFO): BOOL = discardable BOOL SendMessage(hwnd, BCM_GETSPLITINFO, 0, cast[LPARAM](pInfo))
-template Button_GetTextMargin*(hwnd: HWND, pmargin: ptr RECT): BOOL = discardable BOOL SendMessage(hwnd, BCM_GETTEXTMARGIN, 0, cast[LPARAM](pmargin))
-template Button_SetDropDownState*(hwnd: HWND, fDropDown: BOOL): BOOL = discardable BOOL SendMessage(hwnd, BCM_SETDROPDOWNSTATE, cast[WPARAM](fDropDown), 0)
-template Button_SetElevationRequiredState*(hwnd: HWND, fRequired: BOOL): LRESULT = discardable LRESULT SendMessage(hwnd, BCM_SETSHIELD, 0, cast[LPARAM](fRequired))
-template Button_SetImageList*(hwnd: HWND, pbuttonImagelist: PBUTTON_IMAGELIST): BOOL = discardable BOOL SendMessage(hwnd, BCM_SETIMAGELIST, 0, cast[LPARAM](pbuttonImagelist))
-template Button_SetNote*(hwnd: HWND, psz: PCWSTR): BOOL = discardable BOOL SendMessage(hwnd, BCM_SETNOTE, 0, cast[LPARAM](psz))
-template Button_SetSplitInfo*(hwnd: HWND, pInfo: ptr BUTTON_SPLITINFO): BOOL = discardable BOOL SendMessage(hwnd, BCM_SETSPLITINFO, 0, cast[LPARAM](pInfo))
-template Button_SetTextMargin*(hwnd: HWND, pmargin: ptr RECT): BOOL = discardable BOOL SendMessage(hwnd, BCM_SETTEXTMARGIN, 0, cast[LPARAM](pmargin))
-template ComboBox_GetCueBannerText*(hwnd: HWND, lpwText: LPWSTR, cchText: int32): BOOL = discardable BOOL SendMessage(hwnd, CB_GETCUEBANNER, cast[WPARAM](lpwText), cast[LPARAM](cchText))
-template ComboBox_GetMinVisible*(hwnd: HWND): INT = discardable INT SendMessage(hwnd, CB_GETMINVISIBLE, 0, 0)
-template ComboBox_SetCueBannerText*(hwnd: HWND, lpcwText: LPCWSTR): BOOL = discardable BOOL SendMessage(hwnd, CB_SETCUEBANNER, 0, cast[LPARAM](lpcwText))
-template ComboBox_SetMinVisible*(hwnd: HWND, iMinVisible: INT): BOOL = discardable BOOL SendMessage(hwnd, CB_SETMINVISIBLE, cast[WPARAM](iMinVisible), 0)
-template DateTime_CloseMonthCal*(hdp: HWND): LRESULT = discardable LRESULT SendMessage(hdp, DTM_CLOSEMONTHCAL, 0, 0)
-template DateTime_GetDateTimePickerInfo*(hdp: HWND, pdtpi: ptr DATETIMEPICKERINFO): LRESULT = discardable LRESULT SendMessage(hdp, DTM_GETDATETIMEPICKERINFO, 0, cast[LPARAM](pdtpi))
-template DateTime_GetIdealSize*(hdp: HWND, psize: SIZE): BOOL = discardable BOOL SendMessage(hdp, DTM_GETIDEALSIZE, 0, cast[LPARAM](psize))
-template DateTime_GetMonthCal*(hdp: HWND): HWND = discardable HWND SendMessage(hdp, DTM_GETMONTHCAL, 0, 0)
-template DateTime_GetMonthCalColor*(hdp: HWND, iColor: int32): COLORREF = discardable COLORREF SendMessage(hdp, DTM_GETMCCOLOR, cast[WPARAM](iColor), 0)
-template DateTime_GetMonthCalFont*(hdp: HWND): HFONT = discardable HFONT SendMessage(hdp, DTM_GETMCFONT, 0, 0)
-template DateTime_GetMonthCalStyle*(hdp: HWND): LRESULT = discardable LRESULT SendMessage(hdp, DTM_GETMCSTYLE, 0, 0)
-template DateTime_GetRange*(hdp: HWND, rgst: LPSYSTEMTIME): DWORD = discardable DWORD SendMessage(hdp, DTM_GETRANGE, 0, cast[LPARAM](rgst))
-template DateTime_GetSystemtime*(hdp: HWND, pst: LPSYSTEMTIME): DWORD = discardable DWORD SendMessage(hdp, DTM_GETSYSTEMTIME, 0, cast[LPARAM](pst))
+  const ACM_OPEN* = ACM_OPENA
+template Animate_Open*(hwnd: HWND, szName: LPTSTR): BOOL =
+  discardable BOOL SendMessage(hwnd, ACM_OPEN, 0, cast[LPARAM](szName))
+
+template Animate_Close*(hwnd: HWND): BOOL =
+  Animate_Open(hwnd, NULL)
+
 when winimUnicode:
-  const
-    DTM_SETFORMAT* = DTM_SETFORMATW
-when winimAnsi:
-  const
-    DTM_SETFORMAT* = DTM_SETFORMATA
-template DateTime_SetFormat*(hdp: HWND, sz: LPCTSTR): void = SendMessage(hdp, DTM_SETFORMAT, 0, cast[LPARAM](sz))
-template DateTime_SetMonthCalColor*(hdp: HWND, iColor: int32, clr: COLORREF): COLORREF = discardable COLORREF SendMessage(hdp, DTM_SETMCCOLOR, cast[WPARAM](iColor), cast[LPARAM](clr))
-template DateTime_SetMonthCalFont*(hdp: HWND, hfont: HFONT, fRedraw: int32): void = SendMessage(hdp, DTM_SETMCFONT, cast[WPARAM](hfont), cast[LPARAM](fRedraw))
-template DateTime_SetMonthCalStyle*(hdp: HWND, dwStyle: DWORD): LRESULT = discardable LRESULT SendMessage(hdp, DTM_SETMCSTYLE, 0, cast[LPARAM](dwStyle))
-template DateTime_SetRange*(hdp: HWND, gd: DWORD, rgst: LPSYSTEMTIME): BOOL = discardable BOOL SendMessage(hdp, DTM_SETRANGE, cast[WPARAM](gd), cast[LPARAM](rgst))
-template DateTime_SetSystemtime*(hdp: HWND, gd: DWORD, pst: LPSYSTEMTIME): BOOL = discardable BOOL SendMessage(hdp, DTM_SETSYSTEMTIME, cast[WPARAM](gd), cast[LPARAM](pst))
-template DPA_AppendPtr*(hdpa: HDPA, pitem: pointer): int32 = DPA_InsertPtr(hdpa, DA_LAST, pitem)
-template DPA_FastDeleteLastPtr*(hdpa: HDPA): void = cast[ptr int32](hdpa)[].dec
-template DPA_GetPtrPtr*(hdpa: HDPA): ptr pointer = discardable (cast[ptr ptr pointer](cast[int](hdpa) + sizeof(pointer)))[]
-template DPA_FastGetPtr*(hdpa: HDPA, i: int32): ptr pointer = discardable cast[ptr pointer](cast[int](DPA_GetPtrPtr(hdpa)) + sizeof(pointer) * i)
-template DPA_GetPtrCount*(hdpa: HDPA): int32 = discardable int32 cast[ptr int32](hdpa)[]
-template DPA_SetPtrCount*(hdpa: HDPA, cItems: int32): int32 = (cast[ptr int32](hdpa)[] = cItems; discardable int32 cItems)
-template DPA_SortedInsertPtr*(hdpa: HDPA, pFind: pointer, iStart: int32, pfnCompare: PFNDPACOMPARE, lParam: LPARAM, options: UINT, pitem: pointer): int32 = DPA_InsertPtr(hdpa, DPA_Search(hdpa, pFind, iStart, pfnCompare, lParam, options or DPAS_SORTED), pitem)
-template DSA_AppendItem*(hdsa: HDSA, pitem: pointer): int32 = DSA_InsertItem(hdsa, DA_LAST, pitem)
-template DSA_GetItemCount*(hdsa: HDSA): int32 = discardable int32 cast[ptr int32](hdsa)[]
-template Edit_GetCueBannerText*(hwnd: HWND, lpwText: LPCWSTR, cchText: LONG): BOOL = discardable BOOL SendMessage(hwnd, EM_GETCUEBANNER, cast[WPARAM](lpwText), cast[LPARAM](cchText))
-template Edit_GetHilite*(hwnd: HWND): DWORD = discardable DWORD SendMessage(hwnd, EM_GETHILITE, 0, 0)
-template Edit_HideBalloonTip*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, EM_HIDEBALLOONTIP, 0, 0)
-template Edit_NoSetFocus*(hwnd: HWND): DWORD = discardable DWORD SendMessage(hwnd, EM_NOSETFOCUS, 0, 0)
-template Edit_SetCueBannerText*(hwnd: HWND, lpcwText: LPCWSTR): BOOL = discardable BOOL SendMessage(hwnd, EM_SETCUEBANNER, 0, cast[LPARAM](lpcwText))
-template Edit_SetHilite*(hwnd: HWND, ichStart: int32, ichEnd: int32): void = SendMessage(hwnd, EM_SETHILITE, cast[WPARAM](ichStart), cast[LPARAM](ichEnd))
-template Edit_ShowBalloonTip*(hwnd: HWND, peditballoontip: PEDITBALLOONTIP): BOOL = discardable BOOL SendMessage(hwnd, EM_SHOWBALLOONTIP, 0, cast[LPARAM](peditballoontip))
-template Edit_TakeFocus*(hwnd: HWND): DWORD = discardable DWORD SendMessage(hwnd, EM_TAKEFOCUS, 0, 0)
-template Header_ClearAllFilters*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, HDM_CLEARFILTER, cast[WPARAM](-1), 0)
-template Header_ClearFilter*(hwnd: HWND, i: int32): int32 = discardable int32 SendMessage(hwnd, HDM_CLEARFILTER, cast[WPARAM](i), 0)
-template Header_CreateDragImage*(hwnd: HWND, i: int32): HIMAGELIST = discardable HIMAGELIST SendMessage(hwnd, HDM_CREATEDRAGIMAGE, cast[WPARAM](i), 0)
-template Header_DeleteItem*(hwndHD: HWND, i: int32): BOOL = discardable BOOL SendMessage(hwndHD, HDM_DELETEITEM, cast[WPARAM](i), 0)
-template Header_EditFilter*(hwnd: HWND, i: int32, fDiscardChanges: BOOL): int32 = discardable int32 SendMessage(hwnd, HDM_EDITFILTER, cast[WPARAM](i), MAKELPARAM(fDiscardChanges, 0))
-template Header_GetBitmapMargin*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, HDM_GETBITMAPMARGIN, 0, 0)
-template Header_GetFocusedItem*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, HDM_GETFOCUSEDITEM, 0, 0)
-template Header_GetImageList*(hwnd: HWND): HIMAGELIST = discardable HIMAGELIST SendMessage(hwnd, HDM_GETIMAGELIST, 0, 0)
-when winimUnicode:
-  type
-    LPHDITEM* = LPHDITEMW
+  const ANIMATE_CLASS* = ANIMATE_CLASSW
 when winimAnsi:
-  type
-    LPHDITEM* = LPHDITEMA
-when winimUnicode:
-  const
-    HDM_GETITEM* = HDM_GETITEMW
-when winimAnsi:
-  const
-    HDM_GETITEM* = HDM_GETITEMA
-template Header_GetItem*(hwndHD: HWND, i: int32, phdi: LPHDITEM): BOOL = discardable BOOL SendMessage(hwndHD, HDM_GETITEM, cast[WPARAM](i), cast[LPARAM](phdi))
-template Header_GetItemCount*(hwndHD: HWND): int32 = discardable int32 SendMessage(hwndHD, HDM_GETITEMCOUNT, 0, 0)
-template Header_GetItemDropDownRect*(hwnd: HWND, iItem: int32, lprc: LPRECT): BOOL = discardable BOOL SendMessage(hwnd, HDM_GETITEMDROPDOWNRECT, cast[WPARAM](iItem), cast[LPARAM](lprc))
-template Header_GetItemRect*(hwnd: HWND, iItem: int32, lprc: LPRECT): BOOL = discardable BOOL SendMessage(hwnd, HDM_GETITEMRECT, cast[WPARAM](iItem), cast[LPARAM](lprc))
-template Header_GetOrderArray*(hwnd: HWND, iCount: int32, lpi: ptr int32): BOOL = discardable BOOL SendMessage(hwnd, HDM_GETORDERARRAY, cast[WPARAM](iCount), cast[LPARAM](lpi))
-template Header_GetOverflowRect*(hwnd: HWND, lprc: LPRECT): BOOL = discardable BOOL SendMessage(hwnd, HDM_GETOVERFLOWRECT, 0, cast[LPARAM](lprc))
-template Header_GetUnicodeFormat*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, HDM_GETUNICODEFORMAT, 0, 0)
+  const ANIMATE_CLASS* = ANIMATE_CLASSA
+template Animate_Create*(
+    hwndP: HWND, id: UINT, dwStyle: DWORD, hInstance: HINSTANCE
+): HWND =
+  CreateWindow(ANIMATE_CLASS, NULL, dwStyle, 0, 0, 0, 0, hwndP, id, hInstance, NULL)
+
+template Animate_IsPlaying*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, ACM_ISPLAYING, 0, 0)
+
+template Animate_OpenEx*(hwnd: HWND, hInst: HINSTANCE, szName: LPTSTR): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, ACM_OPEN, cast[WPARAM](hInst), cast[LPARAM](szName)
+  )
+
+template Animate_Play*(hwnd: HWND, `from`: UINT, `to`: UINT, rep: UINT): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, ACM_PLAY, cast[WPARAM](rep), cast[LPARAM](MAKELONG(`from`, `to`))
+  )
+
+template Animate_Seek*(hwnd: HWND, frame: UINT): BOOL =
+  Animate_Play(hwnd, frame, frame, 1)
+
+template Animate_Stop*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, ACM_STOP, 0, 0)
+
+template Button_GetIdealSize*(hwnd: HWND, psize: ptr SIZE): BOOL =
+  discardable BOOL SendMessage(hwnd, BCM_GETIDEALSIZE, 0, cast[LPARAM](psize))
+
+template Button_GetImageList*(hwnd: HWND, pbuttonImagelist: PBUTTON_IMAGELIST): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, BCM_GETIMAGELIST, 0, cast[LPARAM](pbuttonImagelist)
+  )
+
+template Button_GetNote*(hwnd: HWND, psz: LPCWSTR, pcc: int32): BOOL =
+  discardable BOOL SendMessage(hwnd, BCM_GETNOTE, cast[WPARAM](pcc), cast[LPARAM](psz))
+
+template Button_GetNoteLength*(hwnd: HWND): LRESULT =
+  discardable LRESULT SendMessage(hwnd, BCM_GETNOTELENGTH, 0, 0)
+
+template Button_GetSplitInfo*(hwnd: HWND, pInfo: ptr BUTTON_SPLITINFO): BOOL =
+  discardable BOOL SendMessage(hwnd, BCM_GETSPLITINFO, 0, cast[LPARAM](pInfo))
+
+template Button_GetTextMargin*(hwnd: HWND, pmargin: ptr RECT): BOOL =
+  discardable BOOL SendMessage(hwnd, BCM_GETTEXTMARGIN, 0, cast[LPARAM](pmargin))
+
+template Button_SetDropDownState*(hwnd: HWND, fDropDown: BOOL): BOOL =
+  discardable BOOL SendMessage(hwnd, BCM_SETDROPDOWNSTATE, cast[WPARAM](fDropDown), 0)
+
+template Button_SetElevationRequiredState*(hwnd: HWND, fRequired: BOOL): LRESULT =
+  discardable LRESULT SendMessage(hwnd, BCM_SETSHIELD, 0, cast[LPARAM](fRequired))
+
+template Button_SetImageList*(hwnd: HWND, pbuttonImagelist: PBUTTON_IMAGELIST): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, BCM_SETIMAGELIST, 0, cast[LPARAM](pbuttonImagelist)
+  )
+
+template Button_SetNote*(hwnd: HWND, psz: PCWSTR): BOOL =
+  discardable BOOL SendMessage(hwnd, BCM_SETNOTE, 0, cast[LPARAM](psz))
+
+template Button_SetSplitInfo*(hwnd: HWND, pInfo: ptr BUTTON_SPLITINFO): BOOL =
+  discardable BOOL SendMessage(hwnd, BCM_SETSPLITINFO, 0, cast[LPARAM](pInfo))
+
+template Button_SetTextMargin*(hwnd: HWND, pmargin: ptr RECT): BOOL =
+  discardable BOOL SendMessage(hwnd, BCM_SETTEXTMARGIN, 0, cast[LPARAM](pmargin))
+
+template ComboBox_GetCueBannerText*(hwnd: HWND, lpwText: LPWSTR, cchText: int32): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, CB_GETCUEBANNER, cast[WPARAM](lpwText), cast[LPARAM](cchText)
+  )
+
+template ComboBox_GetMinVisible*(hwnd: HWND): INT =
+  discardable INT SendMessage(hwnd, CB_GETMINVISIBLE, 0, 0)
+
+template ComboBox_SetCueBannerText*(hwnd: HWND, lpcwText: LPCWSTR): BOOL =
+  discardable BOOL SendMessage(hwnd, CB_SETCUEBANNER, 0, cast[LPARAM](lpcwText))
+
+template ComboBox_SetMinVisible*(hwnd: HWND, iMinVisible: INT): BOOL =
+  discardable BOOL SendMessage(hwnd, CB_SETMINVISIBLE, cast[WPARAM](iMinVisible), 0)
+
+template DateTime_CloseMonthCal*(hdp: HWND): LRESULT =
+  discardable LRESULT SendMessage(hdp, DTM_CLOSEMONTHCAL, 0, 0)
+
+template DateTime_GetDateTimePickerInfo*(
+    hdp: HWND, pdtpi: ptr DATETIMEPICKERINFO
+): LRESULT =
+  discardable LRESULT SendMessage(
+    hdp, DTM_GETDATETIMEPICKERINFO, 0, cast[LPARAM](pdtpi)
+  )
+
+template DateTime_GetIdealSize*(hdp: HWND, psize: SIZE): BOOL =
+  discardable BOOL SendMessage(hdp, DTM_GETIDEALSIZE, 0, cast[LPARAM](psize))
+
+template DateTime_GetMonthCal*(hdp: HWND): HWND =
+  discardable HWND SendMessage(hdp, DTM_GETMONTHCAL, 0, 0)
+
+template DateTime_GetMonthCalColor*(hdp: HWND, iColor: int32): COLORREF =
+  discardable COLORREF SendMessage(hdp, DTM_GETMCCOLOR, cast[WPARAM](iColor), 0)
+
+template DateTime_GetMonthCalFont*(hdp: HWND): HFONT =
+  discardable HFONT SendMessage(hdp, DTM_GETMCFONT, 0, 0)
+
+template DateTime_GetMonthCalStyle*(hdp: HWND): LRESULT =
+  discardable LRESULT SendMessage(hdp, DTM_GETMCSTYLE, 0, 0)
+
+template DateTime_GetRange*(hdp: HWND, rgst: LPSYSTEMTIME): DWORD =
+  discardable DWORD SendMessage(hdp, DTM_GETRANGE, 0, cast[LPARAM](rgst))
+
+template DateTime_GetSystemtime*(hdp: HWND, pst: LPSYSTEMTIME): DWORD =
+  discardable DWORD SendMessage(hdp, DTM_GETSYSTEMTIME, 0, cast[LPARAM](pst))
+
 when winimUnicode:
-  const
-    HDM_INSERTITEM* = HDM_INSERTITEMW
-when winimAnsi:
-  const
-    HDM_INSERTITEM* = HDM_INSERTITEMA
-template Header_InsertItem*(hwndHD: HWND, i: int32, phdi: LPHDITEM): int32 = discardable int32 SendMessage(hwndHD, HDM_INSERTITEM, cast[WPARAM](i), cast[LPARAM](phdi))
-template Header_Layout*(hwndHD: HWND, playout: LPHDLAYOUT): BOOL = discardable BOOL SendMessage(hwndHD, HDM_LAYOUT, 0, cast[LPARAM](playout))
-template Header_OrderToIndex*(hwnd: HWND, i: int32): int32 = discardable int32 SendMessage(hwnd, HDM_ORDERTOINDEX, cast[WPARAM](i), 0)
-template Header_SetBitmapMargin*(hwnd: HWND, iWidth: int32): int32 = discardable int32 SendMessage(hwnd, HDM_SETBITMAPMARGIN, cast[WPARAM](iWidth), 0)
-template Header_SetFilterChangeTimeout*(hwnd: HWND, i: int32): int32 = discardable int32 SendMessage(hwnd, HDM_SETFILTERCHANGETIMEOUT, 0, cast[LPARAM](i))
-template Header_SetFocusedItem*(hwnd: HWND, iItem: int32): BOOL = discardable BOOL SendMessage(hwnd, HDM_SETFOCUSEDITEM, 0, cast[LPARAM](iItem))
-template Header_SetHotDivider*(hwnd: HWND, fPos: BOOL, dw: DWORD): int32 = discardable int32 SendMessage(hwnd, HDM_SETHOTDIVIDER, cast[WPARAM](fPos), cast[LPARAM](dw))
-template Header_SetImageList*(hwnd: HWND, himl: HIMAGELIST): HIMAGELIST = discardable HIMAGELIST SendMessage(hwnd, HDM_SETIMAGELIST, 0, cast[LPARAM](himl))
-when winimUnicode:
-  const
-    HDM_SETITEM* = HDM_SETITEMW
+  const DTM_SETFORMAT* = DTM_SETFORMATW
 when winimAnsi:
-  const
-    HDM_SETITEM* = HDM_SETITEMA
-template Header_SetItem*(hwndHD: HWND, i: int32, phdi: LPHDITEM): BOOL = discardable BOOL SendMessage(hwndHD, HDM_SETITEM, cast[WPARAM](i), cast[LPARAM](phdi))
-template Header_SetOrderArray*(hwnd: HWND, iCount: int32, lpi: ptr int32): BOOL = discardable BOOL SendMessage(hwnd, HDM_SETORDERARRAY, cast[WPARAM](iCount), cast[LPARAM](lpi))
-template Header_SetUnicodeFormat*(hwnd: HWND, fUnicode: BOOL): BOOL = discardable BOOL SendMessage(hwnd, HDM_SETUNICODEFORMAT, cast[WPARAM](fUnicode), 0)
-template ImageList_AddIcon*(himl: HIMAGELIST, hicon: HICON): int32 = ImageList_ReplaceIcon(himl, -1, hicon)
-template ImageList_ExtractIcon*(hi: HINSTANCE, himl: HIMAGELIST, i: int32): HICON = ImageList_GetIcon(himl, i, 0)
-template ImageList_LoadBitmap*(hi: HINSTANCE, lpbmp: LPCTSTR, cx: int32, cGrow: int32, crMask: COLORREF): HIMAGELIST = ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0)
-template ImageList_RemoveAll*(himl: HIMAGELIST): BOOL = ImageList_Remove(himl, -1)
-template ListView_ApproximateViewRect*(hwnd: HWND, iWidth: int32, iHeight: int32, iCount: int32): DWORD = discardable DWORD SendMessage(hwnd, LVM_APPROXIMATEVIEWRECT, cast[WPARAM](iCount), MAKELPARAM(iWidth, iHeight))
-template ListView_Arrange*(hwnd: HWND, code: UINT): BOOL = discardable BOOL SendMessage(hwnd, LVM_ARRANGE, cast[WPARAM](code), 0)
-template ListView_CancelEditLabel*(hwnd: HWND): void = SendMessage(hwnd, LVM_CANCELEDITLABEL, 0, 0)
-template ListView_CreateDragImage*(hwnd: HWND, i: int32, lpptUpLeft: LPPOINT): HIMAGELIST = discardable HIMAGELIST SendMessage(hwnd, LVM_CREATEDRAGIMAGE, cast[WPARAM](i), cast[LPARAM](lpptUpLeft))
-template ListView_DeleteAllItems*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, LVM_DELETEALLITEMS, 0, 0)
-template ListView_DeleteColumn*(hwnd: HWND, iCol: int32): BOOL = discardable BOOL SendMessage(hwnd, LVM_DELETECOLUMN, cast[WPARAM](iCol), 0)
-template ListView_DeleteItem*(hwnd: HWND, i: int32): BOOL = discardable BOOL SendMessage(hwnd, LVM_DELETEITEM, cast[WPARAM](i), 0)
+  const DTM_SETFORMAT* = DTM_SETFORMATA
+template DateTime_SetFormat*(hdp: HWND, sz: LPCTSTR): void =
+  SendMessage(hdp, DTM_SETFORMAT, 0, cast[LPARAM](sz))
+
+template DateTime_SetMonthCalColor*(hdp: HWND, iColor: int32, clr: COLORREF): COLORREF =
+  discardable COLORREF SendMessage(
+    hdp, DTM_SETMCCOLOR, cast[WPARAM](iColor), cast[LPARAM](clr)
+  )
+
+template DateTime_SetMonthCalFont*(hdp: HWND, hfont: HFONT, fRedraw: int32): void =
+  SendMessage(hdp, DTM_SETMCFONT, cast[WPARAM](hfont), cast[LPARAM](fRedraw))
+
+template DateTime_SetMonthCalStyle*(hdp: HWND, dwStyle: DWORD): LRESULT =
+  discardable LRESULT SendMessage(hdp, DTM_SETMCSTYLE, 0, cast[LPARAM](dwStyle))
+
+template DateTime_SetRange*(hdp: HWND, gd: DWORD, rgst: LPSYSTEMTIME): BOOL =
+  discardable BOOL SendMessage(hdp, DTM_SETRANGE, cast[WPARAM](gd), cast[LPARAM](rgst))
+
+template DateTime_SetSystemtime*(hdp: HWND, gd: DWORD, pst: LPSYSTEMTIME): BOOL =
+  discardable BOOL SendMessage(
+    hdp, DTM_SETSYSTEMTIME, cast[WPARAM](gd), cast[LPARAM](pst)
+  )
+
+template DPA_AppendPtr*(hdpa: HDPA, pitem: pointer): int32 =
+  DPA_InsertPtr(hdpa, DA_LAST, pitem)
+
+template DPA_FastDeleteLastPtr*(hdpa: HDPA): void =
+  cast[ptr int32](hdpa)[].dec
+
+template DPA_GetPtrPtr*(hdpa: HDPA): ptr pointer =
+  discardable (cast[ptr ptr pointer](cast[int](hdpa) + sizeof(pointer)))[]
+
+template DPA_FastGetPtr*(hdpa: HDPA, i: int32): ptr pointer =
+  discardable cast[ptr pointer](cast[int](DPA_GetPtrPtr(hdpa)) + sizeof(pointer) * i)
+
+template DPA_GetPtrCount*(hdpa: HDPA): int32 =
+  discardable int32 cast[ptr int32](hdpa)[]
+
+template DPA_SetPtrCount*(hdpa: HDPA, cItems: int32): int32 =
+  (cast[ptr int32](hdpa)[] = cItems; discardable int32 cItems)
+
+template DPA_SortedInsertPtr*(
+    hdpa: HDPA,
+    pFind: pointer,
+    iStart: int32,
+    pfnCompare: PFNDPACOMPARE,
+    lParam: LPARAM,
+    options: UINT,
+    pitem: pointer,
+): int32 =
+  DPA_InsertPtr(
+    hdpa,
+    DPA_Search(hdpa, pFind, iStart, pfnCompare, lParam, options or DPAS_SORTED),
+    pitem,
+  )
+
+template DSA_AppendItem*(hdsa: HDSA, pitem: pointer): int32 =
+  DSA_InsertItem(hdsa, DA_LAST, pitem)
+
+template DSA_GetItemCount*(hdsa: HDSA): int32 =
+  discardable int32 cast[ptr int32](hdsa)[]
+
+template Edit_GetCueBannerText*(hwnd: HWND, lpwText: LPCWSTR, cchText: LONG): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, EM_GETCUEBANNER, cast[WPARAM](lpwText), cast[LPARAM](cchText)
+  )
+
+template Edit_GetHilite*(hwnd: HWND): DWORD =
+  discardable DWORD SendMessage(hwnd, EM_GETHILITE, 0, 0)
+
+template Edit_HideBalloonTip*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, EM_HIDEBALLOONTIP, 0, 0)
+
+template Edit_NoSetFocus*(hwnd: HWND): DWORD =
+  discardable DWORD SendMessage(hwnd, EM_NOSETFOCUS, 0, 0)
+
+template Edit_SetCueBannerText*(hwnd: HWND, lpcwText: LPCWSTR): BOOL =
+  discardable BOOL SendMessage(hwnd, EM_SETCUEBANNER, 0, cast[LPARAM](lpcwText))
+
+template Edit_SetHilite*(hwnd: HWND, ichStart: int32, ichEnd: int32): void =
+  SendMessage(hwnd, EM_SETHILITE, cast[WPARAM](ichStart), cast[LPARAM](ichEnd))
+
+template Edit_ShowBalloonTip*(hwnd: HWND, peditballoontip: PEDITBALLOONTIP): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, EM_SHOWBALLOONTIP, 0, cast[LPARAM](peditballoontip)
+  )
+
+template Edit_TakeFocus*(hwnd: HWND): DWORD =
+  discardable DWORD SendMessage(hwnd, EM_TAKEFOCUS, 0, 0)
+
+template Header_ClearAllFilters*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, HDM_CLEARFILTER, cast[WPARAM](-1), 0)
+
+template Header_ClearFilter*(hwnd: HWND, i: int32): int32 =
+  discardable int32 SendMessage(hwnd, HDM_CLEARFILTER, cast[WPARAM](i), 0)
+
+template Header_CreateDragImage*(hwnd: HWND, i: int32): HIMAGELIST =
+  discardable HIMAGELIST SendMessage(hwnd, HDM_CREATEDRAGIMAGE, cast[WPARAM](i), 0)
+
+template Header_DeleteItem*(hwndHD: HWND, i: int32): BOOL =
+  discardable BOOL SendMessage(hwndHD, HDM_DELETEITEM, cast[WPARAM](i), 0)
+
+template Header_EditFilter*(hwnd: HWND, i: int32, fDiscardChanges: BOOL): int32 =
+  discardable int32 SendMessage(
+    hwnd, HDM_EDITFILTER, cast[WPARAM](i), MAKELPARAM(fDiscardChanges, 0)
+  )
+
+template Header_GetBitmapMargin*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, HDM_GETBITMAPMARGIN, 0, 0)
+
+template Header_GetFocusedItem*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, HDM_GETFOCUSEDITEM, 0, 0)
+
+template Header_GetImageList*(hwnd: HWND): HIMAGELIST =
+  discardable HIMAGELIST SendMessage(hwnd, HDM_GETIMAGELIST, 0, 0)
+
 when winimUnicode:
-  const
-    LVM_EDITLABEL* = LVM_EDITLABELW
+  type LPHDITEM* = LPHDITEMW
 when winimAnsi:
-  const
-    LVM_EDITLABEL* = LVM_EDITLABELA
-template ListView_EditLabel*(hwnd: HWND, i: int32): HWND = discardable HWND SendMessage(hwnd, LVM_EDITLABEL, cast[WPARAM](i), 0)
-template ListView_EnableGroupView*(hwnd: HWND, fEnable: BOOL): int32 = discardable int32 SendMessage(hwnd, LVM_ENABLEGROUPVIEW, cast[WPARAM](fEnable), 0)
-template ListView_EnsureVisible*(hwnd: HWND, i: int32, fPartialOK: BOOL): BOOL = discardable BOOL SendMessage(hwnd, LVM_ENSUREVISIBLE, cast[WPARAM](i), MAKELPARAM(fPartialOK, 0))
-when winimUnicode:
-  type
-    LVFINDINFO* = LVFINDINFOW
-when winimAnsi:
-  type
-    LVFINDINFO* = LVFINDINFOA
+  type LPHDITEM* = LPHDITEMA
 when winimUnicode:
-  const
-    LVM_FINDITEM* = LVM_FINDITEMW
+  const HDM_GETITEM* = HDM_GETITEMW
 when winimAnsi:
-  const
-    LVM_FINDITEM* = LVM_FINDITEMA
-template ListView_FindItem*(hwnd: HWND, iStart: int32, plvfi: ptr LVFINDINFO): int32 = discardable int32 SendMessage(hwnd, LVM_FINDITEM, cast[WPARAM](iStart), cast[LPARAM](plvfi))
-template ListView_GetBkColor*(hwnd: HWND): COLORREF = discardable COLORREF SendMessage(hwnd, LVM_GETBKCOLOR, 0, 0)
+  const HDM_GETITEM* = HDM_GETITEMA
+template Header_GetItem*(hwndHD: HWND, i: int32, phdi: LPHDITEM): BOOL =
+  discardable BOOL SendMessage(hwndHD, HDM_GETITEM, cast[WPARAM](i), cast[LPARAM](phdi))
+
+template Header_GetItemCount*(hwndHD: HWND): int32 =
+  discardable int32 SendMessage(hwndHD, HDM_GETITEMCOUNT, 0, 0)
+
+template Header_GetItemDropDownRect*(hwnd: HWND, iItem: int32, lprc: LPRECT): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, HDM_GETITEMDROPDOWNRECT, cast[WPARAM](iItem), cast[LPARAM](lprc)
+  )
+
+template Header_GetItemRect*(hwnd: HWND, iItem: int32, lprc: LPRECT): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, HDM_GETITEMRECT, cast[WPARAM](iItem), cast[LPARAM](lprc)
+  )
+
+template Header_GetOrderArray*(hwnd: HWND, iCount: int32, lpi: ptr int32): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, HDM_GETORDERARRAY, cast[WPARAM](iCount), cast[LPARAM](lpi)
+  )
+
+template Header_GetOverflowRect*(hwnd: HWND, lprc: LPRECT): BOOL =
+  discardable BOOL SendMessage(hwnd, HDM_GETOVERFLOWRECT, 0, cast[LPARAM](lprc))
+
+template Header_GetUnicodeFormat*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, HDM_GETUNICODEFORMAT, 0, 0)
+
 when winimUnicode:
-  type
-    LPLVBKIMAGE* = LPLVBKIMAGEW
+  const HDM_INSERTITEM* = HDM_INSERTITEMW
 when winimAnsi:
-  type
-    LPLVBKIMAGE* = LPLVBKIMAGEA
+  const HDM_INSERTITEM* = HDM_INSERTITEMA
+template Header_InsertItem*(hwndHD: HWND, i: int32, phdi: LPHDITEM): int32 =
+  discardable int32 SendMessage(
+    hwndHD, HDM_INSERTITEM, cast[WPARAM](i), cast[LPARAM](phdi)
+  )
+
+template Header_Layout*(hwndHD: HWND, playout: LPHDLAYOUT): BOOL =
+  discardable BOOL SendMessage(hwndHD, HDM_LAYOUT, 0, cast[LPARAM](playout))
+
+template Header_OrderToIndex*(hwnd: HWND, i: int32): int32 =
+  discardable int32 SendMessage(hwnd, HDM_ORDERTOINDEX, cast[WPARAM](i), 0)
+
+template Header_SetBitmapMargin*(hwnd: HWND, iWidth: int32): int32 =
+  discardable int32 SendMessage(hwnd, HDM_SETBITMAPMARGIN, cast[WPARAM](iWidth), 0)
+
+template Header_SetFilterChangeTimeout*(hwnd: HWND, i: int32): int32 =
+  discardable int32 SendMessage(hwnd, HDM_SETFILTERCHANGETIMEOUT, 0, cast[LPARAM](i))
+
+template Header_SetFocusedItem*(hwnd: HWND, iItem: int32): BOOL =
+  discardable BOOL SendMessage(hwnd, HDM_SETFOCUSEDITEM, 0, cast[LPARAM](iItem))
+
+template Header_SetHotDivider*(hwnd: HWND, fPos: BOOL, dw: DWORD): int32 =
+  discardable int32 SendMessage(
+    hwnd, HDM_SETHOTDIVIDER, cast[WPARAM](fPos), cast[LPARAM](dw)
+  )
+
+template Header_SetImageList*(hwnd: HWND, himl: HIMAGELIST): HIMAGELIST =
+  discardable HIMAGELIST SendMessage(hwnd, HDM_SETIMAGELIST, 0, cast[LPARAM](himl))
+
 when winimUnicode:
-  const
-    LVM_GETBKIMAGE* = LVM_GETBKIMAGEW
+  const HDM_SETITEM* = HDM_SETITEMW
 when winimAnsi:
-  const
-    LVM_GETBKIMAGE* = LVM_GETBKIMAGEA
-template ListView_GetBkImage*(hwnd: HWND, plvbki: LPLVBKIMAGE): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETBKIMAGE, 0, cast[LPARAM](plvbki))
-template ListView_GetCallbackMask*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, LVM_GETCALLBACKMASK, 0, 0)
-template ListView_GetCheckState*(hwnd: HWND, i: UINT): BOOL = discardable BOOL((SendMessage(hwnd, LVM_GETITEMSTATE, cast[WPARAM](i), LVIS_STATEIMAGEMASK) shr 12) - 1)
+  const HDM_SETITEM* = HDM_SETITEMA
+template Header_SetItem*(hwndHD: HWND, i: int32, phdi: LPHDITEM): BOOL =
+  discardable BOOL SendMessage(hwndHD, HDM_SETITEM, cast[WPARAM](i), cast[LPARAM](phdi))
+
+template Header_SetOrderArray*(hwnd: HWND, iCount: int32, lpi: ptr int32): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, HDM_SETORDERARRAY, cast[WPARAM](iCount), cast[LPARAM](lpi)
+  )
+
+template Header_SetUnicodeFormat*(hwnd: HWND, fUnicode: BOOL): BOOL =
+  discardable BOOL SendMessage(hwnd, HDM_SETUNICODEFORMAT, cast[WPARAM](fUnicode), 0)
+
+template ImageList_AddIcon*(himl: HIMAGELIST, hicon: HICON): int32 =
+  ImageList_ReplaceIcon(himl, -1, hicon)
+
+template ImageList_ExtractIcon*(hi: HINSTANCE, himl: HIMAGELIST, i: int32): HICON =
+  ImageList_GetIcon(himl, i, 0)
+
+template ImageList_LoadBitmap*(
+    hi: HINSTANCE, lpbmp: LPCTSTR, cx: int32, cGrow: int32, crMask: COLORREF
+): HIMAGELIST =
+  ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0)
+
+template ImageList_RemoveAll*(himl: HIMAGELIST): BOOL =
+  ImageList_Remove(himl, -1)
+
+template ListView_ApproximateViewRect*(
+    hwnd: HWND, iWidth: int32, iHeight: int32, iCount: int32
+): DWORD =
+  discardable DWORD SendMessage(
+    hwnd, LVM_APPROXIMATEVIEWRECT, cast[WPARAM](iCount), MAKELPARAM(iWidth, iHeight)
+  )
+
+template ListView_Arrange*(hwnd: HWND, code: UINT): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_ARRANGE, cast[WPARAM](code), 0)
+
+template ListView_CancelEditLabel*(hwnd: HWND): void =
+  SendMessage(hwnd, LVM_CANCELEDITLABEL, 0, 0)
+
+template ListView_CreateDragImage*(
+    hwnd: HWND, i: int32, lpptUpLeft: LPPOINT
+): HIMAGELIST =
+  discardable HIMAGELIST SendMessage(
+    hwnd, LVM_CREATEDRAGIMAGE, cast[WPARAM](i), cast[LPARAM](lpptUpLeft)
+  )
+
+template ListView_DeleteAllItems*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_DELETEALLITEMS, 0, 0)
+
+template ListView_DeleteColumn*(hwnd: HWND, iCol: int32): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_DELETECOLUMN, cast[WPARAM](iCol), 0)
+
+template ListView_DeleteItem*(hwnd: HWND, i: int32): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_DELETEITEM, cast[WPARAM](i), 0)
+
 when winimUnicode:
-  type
-    LPLVCOLUMN* = LPLVCOLUMNW
+  const LVM_EDITLABEL* = LVM_EDITLABELW
 when winimAnsi:
-  type
-    LPLVCOLUMN* = LPLVCOLUMNA
+  const LVM_EDITLABEL* = LVM_EDITLABELA
+template ListView_EditLabel*(hwnd: HWND, i: int32): HWND =
+  discardable HWND SendMessage(hwnd, LVM_EDITLABEL, cast[WPARAM](i), 0)
+
+template ListView_EnableGroupView*(hwnd: HWND, fEnable: BOOL): int32 =
+  discardable int32 SendMessage(hwnd, LVM_ENABLEGROUPVIEW, cast[WPARAM](fEnable), 0)
+
+template ListView_EnsureVisible*(hwnd: HWND, i: int32, fPartialOK: BOOL): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_ENSUREVISIBLE, cast[WPARAM](i), MAKELPARAM(fPartialOK, 0)
+  )
+
 when winimUnicode:
-  const
-    LVM_GETCOLUMN* = LVM_GETCOLUMNW
+  type LVFINDINFO* = LVFINDINFOW
+when winimAnsi:
+  type LVFINDINFO* = LVFINDINFOA
+when winimUnicode:
+  const LVM_FINDITEM* = LVM_FINDITEMW
+when winimAnsi:
+  const LVM_FINDITEM* = LVM_FINDITEMA
+template ListView_FindItem*(hwnd: HWND, iStart: int32, plvfi: ptr LVFINDINFO): int32 =
+  discardable int32 SendMessage(
+    hwnd, LVM_FINDITEM, cast[WPARAM](iStart), cast[LPARAM](plvfi)
+  )
+
+template ListView_GetBkColor*(hwnd: HWND): COLORREF =
+  discardable COLORREF SendMessage(hwnd, LVM_GETBKCOLOR, 0, 0)
+
+when winimUnicode:
+  type LPLVBKIMAGE* = LPLVBKIMAGEW
 when winimAnsi:
-  const
-    LVM_GETCOLUMN* = LVM_GETCOLUMNA
-template ListView_GetColumn*(hwnd: HWND, iCol: int32, pcol: LPLVCOLUMN): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETCOLUMN, cast[WPARAM](iCol), cast[LPARAM](pcol))
-template ListView_GetColumnOrderArray*(hwnd: HWND, iCount: int32, pi: ptr int32): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETCOLUMNORDERARRAY, cast[WPARAM](iCount), cast[LPARAM](pi))
-template ListView_GetColumnWidth*(hwnd: HWND, iCol: int32): int32 = discardable int32 SendMessage(hwnd, LVM_GETCOLUMNWIDTH, cast[WPARAM](iCol), 0)
-template ListView_GetCountPerPage*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, LVM_GETCOUNTPERPAGE, 0, 0)
-template ListView_GetEditControl*(hwnd: HWND): HWND = discardable HWND SendMessage(hwnd, LVM_GETEDITCONTROL, 0, 0)
-template ListView_GetEmptyText*(hwnd: HWND, pszText: PWSTR, cchText: UINT): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETEMPTYTEXT, cast[WPARAM](cchText), cast[LPARAM](pszText))
-template ListView_GetExtendedListViewStyle*(hwnd: HWND): DWORD = discardable DWORD SendMessage(hwnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
-template ListView_GetFocusedGroup*(hwnd: HWND): INT = discardable INT SendMessage(hwnd, LVM_GETFOCUSEDGROUP, 0, 0)
-template ListView_GetFooterInfo*(hwnd: HWND, plvfi: LPLVFOOTERINFO): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETFOOTERINFO, cast[WPARAM]((0)), cast[LPARAM](plvfi))
-template ListView_GetFooterItem*(hwnd: HWND, iItem: UINT, pfi: ptr LVFOOTERITEM): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETFOOTERITEM, cast[WPARAM](iItem), cast[LPARAM](pfi))
-template ListView_GetFooterItemRect*(hwnd: HWND, iItem: UINT, prc: ptr RECT): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETFOOTERITEMRECT, cast[WPARAM](iItem), cast[LPARAM](prc))
-template ListView_GetFooterRect*(hwnd: HWND, prc: ptr RECT): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETFOOTERRECT, cast[WPARAM]((0)), cast[LPARAM](prc))
-template ListView_GetGroupCount*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, LVM_GETGROUPCOUNT, 0, 0)
-template ListView_GetGroupHeaderImageList*(hwnd: HWND): HIMAGELIST = discardable HIMAGELIST SendMessage(hwnd, LVM_GETIMAGELIST, cast[WPARAM](LVSIL_GROUPHEADER), 0)
-template ListView_GetGroupInfo*(hwnd: HWND, iGroupId: int32, pgrp: PLVGROUP): int32 = discardable int32 SendMessage(hwnd, LVM_GETGROUPINFO, cast[WPARAM](iGroupId), cast[LPARAM](pgrp))
-template ListView_GetGroupInfoByIndex*(hwnd: HWND, iIndex: int32, pgrp: PLVGROUP): LRESULT = discardable LRESULT SendMessage(hwnd, LVM_GETGROUPINFOBYINDEX, cast[WPARAM](iIndex), cast[LPARAM](pgrp))
-template ListView_GetGroupMetrics*(hwnd: HWND, pGroupMetrics: PLVGROUPMETRICS): void = SendMessage(hwnd, LVM_GETGROUPMETRICS, 0, cast[LPARAM](pGroupMetrics))
-template ListView_GetGroupRect*(hwnd: HWND, iGroupId: int32, `type`: LONG, prc: ptr RECT): BOOL = (if prc.pointer != nil: cast[ptr RECT](cast[int](prc)).top = `type`; discardable BOOL SendMessage(hwnd, LVM_GETGROUPRECT, cast[WPARAM](iGroupId), cast[LPARAM](prc)))
-template ListView_GetGroupState*(hwnd: HWND, dwGroupId: UINT, dwMask: UINT): UINT = discardable UINT SendMessage(hwnd, LVM_GETGROUPSTATE, cast[WPARAM](dwGroupId), cast[LPARAM](dwMask))
-template ListView_GetHeader*(hwnd: HWND): HWND = discardable HWND SendMessage(hwnd, LVM_GETHEADER, 0, 0)
-template ListView_GetHotCursor*(hwnd: HWND): HCURSOR = discardable HCURSOR SendMessage(hwnd, LVM_GETHOTCURSOR, 0, 0)
-template ListView_GetHotItem*(hwnd: HWND): INT = discardable INT SendMessage(hwnd, LVM_GETHOTITEM, 0, 0)
-template ListView_GetHoverTime*(hwnd: HWND): DWORD = discardable DWORD SendMessage(hwnd, LVM_GETHOVERTIME, 0, 0)
-template ListView_GetImageList*(hwnd: HWND, iImageList: int32): HIMAGELIST = discardable HIMAGELIST SendMessage(hwnd, LVM_GETIMAGELIST, cast[WPARAM](iImageList), 0)
-template ListView_GetInsertMark*(hwnd: HWND, lvim: LPLVINSERTMARK): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETINSERTMARK, 0, cast[LPARAM](lvim))
-template ListView_GetInsertMarkColor*(hwnd: HWND): COLORREF = discardable COLORREF SendMessage(hwnd, LVM_GETINSERTMARKCOLOR, 0, 0)
-template ListView_GetInsertMarkRect*(hwnd: HWND, rc: LPRECT): int32 = discardable int32 SendMessage(hwnd, LVM_GETINSERTMARKRECT, 0, cast[LPARAM](rc))
+  type LPLVBKIMAGE* = LPLVBKIMAGEA
+when winimUnicode:
+  const LVM_GETBKIMAGE* = LVM_GETBKIMAGEW
+when winimAnsi:
+  const LVM_GETBKIMAGE* = LVM_GETBKIMAGEA
+template ListView_GetBkImage*(hwnd: HWND, plvbki: LPLVBKIMAGE): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_GETBKIMAGE, 0, cast[LPARAM](plvbki))
+
+template ListView_GetCallbackMask*(hwnd: HWND): UINT =
+  discardable UINT SendMessage(hwnd, LVM_GETCALLBACKMASK, 0, 0)
+
+template ListView_GetCheckState*(hwnd: HWND, i: UINT): BOOL =
+  discardable BOOL(
+    (SendMessage(hwnd, LVM_GETITEMSTATE, cast[WPARAM](i), LVIS_STATEIMAGEMASK) shr 12) -
+      1
+  )
+
+when winimUnicode:
+  type LPLVCOLUMN* = LPLVCOLUMNW
+when winimAnsi:
+  type LPLVCOLUMN* = LPLVCOLUMNA
 when winimUnicode:
-  const
-    LVM_GETISEARCHSTRING* = LVM_GETISEARCHSTRINGW
+  const LVM_GETCOLUMN* = LVM_GETCOLUMNW
 when winimAnsi:
-  const
-    LVM_GETISEARCHSTRING* = LVM_GETISEARCHSTRINGA
-template ListView_GetISearchString*(hwnd: HWND, lpsz: LPSTR): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETISEARCHSTRING, 0, cast[LPARAM](lpsz))
-when winimUnicode:
-  type
-    LPLVITEM* = LPLVITEMW
-when winimAnsi:
-  type
-    LPLVITEM* = LPLVITEMA
+  const LVM_GETCOLUMN* = LVM_GETCOLUMNA
+template ListView_GetColumn*(hwnd: HWND, iCol: int32, pcol: LPLVCOLUMN): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_GETCOLUMN, cast[WPARAM](iCol), cast[LPARAM](pcol)
+  )
+
+template ListView_GetColumnOrderArray*(hwnd: HWND, iCount: int32, pi: ptr int32): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_GETCOLUMNORDERARRAY, cast[WPARAM](iCount), cast[LPARAM](pi)
+  )
+
+template ListView_GetColumnWidth*(hwnd: HWND, iCol: int32): int32 =
+  discardable int32 SendMessage(hwnd, LVM_GETCOLUMNWIDTH, cast[WPARAM](iCol), 0)
+
+template ListView_GetCountPerPage*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, LVM_GETCOUNTPERPAGE, 0, 0)
+
+template ListView_GetEditControl*(hwnd: HWND): HWND =
+  discardable HWND SendMessage(hwnd, LVM_GETEDITCONTROL, 0, 0)
+
+template ListView_GetEmptyText*(hwnd: HWND, pszText: PWSTR, cchText: UINT): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_GETEMPTYTEXT, cast[WPARAM](cchText), cast[LPARAM](pszText)
+  )
+
+template ListView_GetExtendedListViewStyle*(hwnd: HWND): DWORD =
+  discardable DWORD SendMessage(hwnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
+
+template ListView_GetFocusedGroup*(hwnd: HWND): INT =
+  discardable INT SendMessage(hwnd, LVM_GETFOCUSEDGROUP, 0, 0)
+
+template ListView_GetFooterInfo*(hwnd: HWND, plvfi: LPLVFOOTERINFO): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_GETFOOTERINFO, cast[WPARAM]((0)), cast[LPARAM](plvfi)
+  )
+
+template ListView_GetFooterItem*(hwnd: HWND, iItem: UINT, pfi: ptr LVFOOTERITEM): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_GETFOOTERITEM, cast[WPARAM](iItem), cast[LPARAM](pfi)
+  )
+
+template ListView_GetFooterItemRect*(hwnd: HWND, iItem: UINT, prc: ptr RECT): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_GETFOOTERITEMRECT, cast[WPARAM](iItem), cast[LPARAM](prc)
+  )
+
+template ListView_GetFooterRect*(hwnd: HWND, prc: ptr RECT): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_GETFOOTERRECT, cast[WPARAM]((0)), cast[LPARAM](prc)
+  )
+
+template ListView_GetGroupCount*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, LVM_GETGROUPCOUNT, 0, 0)
+
+template ListView_GetGroupHeaderImageList*(hwnd: HWND): HIMAGELIST =
+  discardable HIMAGELIST SendMessage(
+    hwnd, LVM_GETIMAGELIST, cast[WPARAM](LVSIL_GROUPHEADER), 0
+  )
+
+template ListView_GetGroupInfo*(hwnd: HWND, iGroupId: int32, pgrp: PLVGROUP): int32 =
+  discardable int32 SendMessage(
+    hwnd, LVM_GETGROUPINFO, cast[WPARAM](iGroupId), cast[LPARAM](pgrp)
+  )
+
+template ListView_GetGroupInfoByIndex*(
+    hwnd: HWND, iIndex: int32, pgrp: PLVGROUP
+): LRESULT =
+  discardable LRESULT SendMessage(
+    hwnd, LVM_GETGROUPINFOBYINDEX, cast[WPARAM](iIndex), cast[LPARAM](pgrp)
+  )
+
+template ListView_GetGroupMetrics*(hwnd: HWND, pGroupMetrics: PLVGROUPMETRICS): void =
+  SendMessage(hwnd, LVM_GETGROUPMETRICS, 0, cast[LPARAM](pGroupMetrics))
+
+template ListView_GetGroupRect*(
+    hwnd: HWND, iGroupId: int32, `type`: LONG, prc: ptr RECT
+): BOOL =
+  (
+    if prc.pointer != nil: cast[ptr RECT](cast[int](prc)).top = `type`
+    discardable BOOL SendMessage(
+      hwnd, LVM_GETGROUPRECT, cast[WPARAM](iGroupId), cast[LPARAM](prc)
+    )
+  )
+
+template ListView_GetGroupState*(hwnd: HWND, dwGroupId: UINT, dwMask: UINT): UINT =
+  discardable UINT SendMessage(
+    hwnd, LVM_GETGROUPSTATE, cast[WPARAM](dwGroupId), cast[LPARAM](dwMask)
+  )
+
+template ListView_GetHeader*(hwnd: HWND): HWND =
+  discardable HWND SendMessage(hwnd, LVM_GETHEADER, 0, 0)
+
+template ListView_GetHotCursor*(hwnd: HWND): HCURSOR =
+  discardable HCURSOR SendMessage(hwnd, LVM_GETHOTCURSOR, 0, 0)
+
+template ListView_GetHotItem*(hwnd: HWND): INT =
+  discardable INT SendMessage(hwnd, LVM_GETHOTITEM, 0, 0)
+
+template ListView_GetHoverTime*(hwnd: HWND): DWORD =
+  discardable DWORD SendMessage(hwnd, LVM_GETHOVERTIME, 0, 0)
+
+template ListView_GetImageList*(hwnd: HWND, iImageList: int32): HIMAGELIST =
+  discardable HIMAGELIST SendMessage(
+    hwnd, LVM_GETIMAGELIST, cast[WPARAM](iImageList), 0
+  )
+
+template ListView_GetInsertMark*(hwnd: HWND, lvim: LPLVINSERTMARK): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_GETINSERTMARK, 0, cast[LPARAM](lvim))
+
+template ListView_GetInsertMarkColor*(hwnd: HWND): COLORREF =
+  discardable COLORREF SendMessage(hwnd, LVM_GETINSERTMARKCOLOR, 0, 0)
+
+template ListView_GetInsertMarkRect*(hwnd: HWND, rc: LPRECT): int32 =
+  discardable int32 SendMessage(hwnd, LVM_GETINSERTMARKRECT, 0, cast[LPARAM](rc))
+
 when winimUnicode:
-  const
-    LVM_GETITEM* = LVM_GETITEMW
+  const LVM_GETISEARCHSTRING* = LVM_GETISEARCHSTRINGW
 when winimAnsi:
-  const
-    LVM_GETITEM* = LVM_GETITEMA
-template ListView_GetItem*(hwnd: HWND, pitem: LPLVITEM): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETITEM, 0, cast[LPARAM](pitem))
-template ListView_GetItemCount*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, LVM_GETITEMCOUNT, 0, 0)
-template ListView_GetItemIndexRect*(hwnd: HWND, plvii: ptr LVITEMINDEX, iSubItem: LONG, code: LONG, prc: LPRECT): BOOL = (if prc.pointer != nil: (cast[ptr RECT](cast[int](prc)).top = iSubItem; cast[ptr RECT](cast[int](prc)).left = code); discardable BOOL SendMessage(hwnd, LVM_GETITEMINDEXRECT, cast[WPARAM](plvii), cast[LPARAM](prc)))
-template ListView_GetItemPosition*(hwnd: HWND, i: int32, ppt: ptr POINT): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETITEMPOSITION, cast[WPARAM](i), cast[LPARAM](ppt))
-template ListView_GetItemRect*(hwnd: HWND, i: int32, prc: ptr RECT, code: int32): BOOL = (if prc.pointer != nil: cast[ptr RECT](cast[int](prc)).left = code; discardable BOOL SendMessage(hwnd, LVM_GETITEMRECT, cast[WPARAM](i), cast[LPARAM](prc)))
-template ListView_GetItemSpacing*(hwnd: HWND, fSmall: BOOL): DWORD = discardable DWORD SendMessage(hwnd, LVM_GETITEMSPACING, cast[WPARAM](fSmall), 0)
-template ListView_GetItemState*(hwnd: HWND, i: int32, mask: UINT): UINT = discardable UINT SendMessage(hwnd, LVM_GETITEMSTATE, cast[WPARAM](i), cast[LPARAM](mask))
+  const LVM_GETISEARCHSTRING* = LVM_GETISEARCHSTRINGA
+template ListView_GetISearchString*(hwnd: HWND, lpsz: LPSTR): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_GETISEARCHSTRING, 0, cast[LPARAM](lpsz))
+
 when winimUnicode:
-  const
-    LVM_GETITEMTEXT* = LVM_GETITEMTEXTW
+  type LPLVITEM* = LPLVITEMW
+when winimAnsi:
+  type LPLVITEM* = LPLVITEMA
+when winimUnicode:
+  const LVM_GETITEM* = LVM_GETITEMW
 when winimAnsi:
-  const
-    LVM_GETITEMTEXT* = LVM_GETITEMTEXTA
-template ListView_GetItemText*(hwnd: HWND, i: int32, iSub: int32, text: LPTSTR, max: int32): void = (var lvi = LV_ITEM(iSubItem: iSub, cchTextMax: max, pszText: text); SendMessage(hwnd, LVM_GETITEMTEXT, cast[WPARAM](i), cast[LPARAM](addr lvi)))
-template ListView_GetNextItem*(hwnd: HWND, i: int32, flags: UINT): int32 = discardable int32 SendMessage(hwnd, LVM_GETNEXTITEM, cast[WPARAM](i), MAKELPARAM(flags, 0))
-template ListView_GetNextItemIndex*(hwnd: HWND, plvii: ptr LVITEMINDEX, flags: LPARAM): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETNEXTITEMINDEX, cast[WPARAM](plvii), MAKELPARAM(flags, 0))
-template ListView_GetNumberOfWorkAreas*(hwnd: HWND, pnWorkAreas: ptr UINT): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETNUMBEROFWORKAREAS, 0, cast[LPARAM](pnWorkAreas))
-template ListView_GetOrigin*(hwnd: HWND, ppt: LPPOINT): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETORIGIN, 0, cast[LPARAM](ppt))
-template ListView_GetOutlineColor*(hwnd: HWND): COLORREF = discardable COLORREF SendMessage(hwnd, LVM_GETOUTLINECOLOR, 0, 0)
-template ListView_GetSelectedColumn*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, LVM_GETSELECTEDCOLUMN, 0, 0)
-template ListView_GetSelectedCount*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, LVM_GETSELECTEDCOUNT, 0, 0)
-template ListView_GetSelectionMark*(hwnd: HWND): INT = discardable INT SendMessage(hwnd, LVM_GETSELECTIONMARK, 0, 0)
+  const LVM_GETITEM* = LVM_GETITEMA
+template ListView_GetItem*(hwnd: HWND, pitem: LPLVITEM): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_GETITEM, 0, cast[LPARAM](pitem))
+
+template ListView_GetItemCount*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, LVM_GETITEMCOUNT, 0, 0)
+
+template ListView_GetItemIndexRect*(
+    hwnd: HWND, plvii: ptr LVITEMINDEX, iSubItem: LONG, code: LONG, prc: LPRECT
+): BOOL =
+  (
+    if prc.pointer != nil: (;
+      cast[ptr RECT](cast[int](prc)).top = iSubItem
+      cast[ptr RECT](cast[int](prc)).left = code
+    )
+    discardable BOOL SendMessage(
+      hwnd, LVM_GETITEMINDEXRECT, cast[WPARAM](plvii), cast[LPARAM](prc)
+    )
+  )
+
+template ListView_GetItemPosition*(hwnd: HWND, i: int32, ppt: ptr POINT): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_GETITEMPOSITION, cast[WPARAM](i), cast[LPARAM](ppt)
+  )
+
+template ListView_GetItemRect*(hwnd: HWND, i: int32, prc: ptr RECT, code: int32): BOOL =
+  (
+    if prc.pointer != nil: cast[ptr RECT](cast[int](prc)).left = code
+    discardable BOOL SendMessage(
+      hwnd, LVM_GETITEMRECT, cast[WPARAM](i), cast[LPARAM](prc)
+    )
+  )
+
+template ListView_GetItemSpacing*(hwnd: HWND, fSmall: BOOL): DWORD =
+  discardable DWORD SendMessage(hwnd, LVM_GETITEMSPACING, cast[WPARAM](fSmall), 0)
+
+template ListView_GetItemState*(hwnd: HWND, i: int32, mask: UINT): UINT =
+  discardable UINT SendMessage(
+    hwnd, LVM_GETITEMSTATE, cast[WPARAM](i), cast[LPARAM](mask)
+  )
+
 when winimUnicode:
-  const
-    LVM_GETSTRINGWIDTH* = LVM_GETSTRINGWIDTHW
+  const LVM_GETITEMTEXT* = LVM_GETITEMTEXTW
 when winimAnsi:
-  const
-    LVM_GETSTRINGWIDTH* = LVM_GETSTRINGWIDTHA
-template ListView_GetStringWidth*(hwnd: HWND, psz: LPCSTR): int32 = discardable int32 SendMessage(hwnd, LVM_GETSTRINGWIDTH, 0, cast[LPARAM](psz))
-template ListView_GetSubItemRect*(hwnd: HWND, iItem: int32, iSubItem: int32, code: int32, prc: LPRECT): BOOL = (if prc.pointer != nil: (cast[LPRECT](cast[int](prc)).top = iSubItem; cast[LPRECT](cast[int](prc)).left = code); discardable BOOL SendMessage(hwnd, LVM_GETSUBITEMRECT, cast[WPARAM](iItem), cast[LPARAM](prc)))
-template ListView_GetTextBkColor*(hwnd: HWND): COLORREF = discardable COLORREF SendMessage(hwnd, LVM_GETTEXTBKCOLOR, 0, 0)
-template ListView_GetTextColor*(hwnd: HWND): COLORREF = discardable COLORREF SendMessage(hwnd, LVM_GETTEXTCOLOR, 0, 0)
-template ListView_GetTileInfo*(hwnd: HWND, pti: PLVTILEINFO): void = SendMessage(hwnd, LVM_GETTILEINFO, 0, cast[LPARAM](pti))
-template ListView_GetTileViewInfo*(hwnd: HWND, ptvi: PLVTILEVIEWINFO): void = SendMessage(hwnd, LVM_GETTILEVIEWINFO, 0, cast[LPARAM](ptvi))
-template ListView_GetToolTips*(hwnd: HWND): HWND = discardable HWND SendMessage(hwnd, LVM_GETTOOLTIPS, 0, 0)
-template ListView_GetTopIndex*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, LVM_GETTOPINDEX, 0, 0)
-template ListView_GetUnicodeFormat*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETUNICODEFORMAT, 0, 0)
-template ListView_GetView*(hwnd: HWND): DWORD = discardable DWORD SendMessage(hwnd, LVM_GETVIEW, 0, 0)
-template ListView_GetViewRect*(hwnd: HWND, prc: ptr RECT): BOOL = discardable BOOL SendMessage(hwnd, LVM_GETVIEWRECT, 0, cast[LPARAM](prc))
-template ListView_GetWorkAreas*(hwnd: HWND, nWorkAreas: INT, prc: LPRECT): void = SendMessage(hwnd, LVM_GETWORKAREAS, cast[WPARAM](nWorkAreas), cast[LPARAM](prc))
-template ListView_HasGroup*(hwnd: HWND, dwGroupId: int32): BOOL = discardable BOOL SendMessage(hwnd, LVM_HASGROUP, cast[WPARAM](dwGroupId), 0)
-template ListView_HitTest*(hwnd: HWND, pinfo: LPLVHITTESTINFO): int32 = discardable int32 SendMessage(hwnd, LVM_HITTEST, 0, cast[LPARAM](pinfo))
+  const LVM_GETITEMTEXT* = LVM_GETITEMTEXTA
+template ListView_GetItemText*(
+    hwnd: HWND, i: int32, iSub: int32, text: LPTSTR, max: int32
+): void =
+  (
+    var lvi = LV_ITEM(iSubItem: iSub, cchTextMax: max, pszText: text)
+    SendMessage(hwnd, LVM_GETITEMTEXT, cast[WPARAM](i), cast[LPARAM](addr lvi))
+  )
+
+template ListView_GetNextItem*(hwnd: HWND, i: int32, flags: UINT): int32 =
+  discardable int32 SendMessage(
+    hwnd, LVM_GETNEXTITEM, cast[WPARAM](i), MAKELPARAM(flags, 0)
+  )
+
+template ListView_GetNextItemIndex*(
+    hwnd: HWND, plvii: ptr LVITEMINDEX, flags: LPARAM
+): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_GETNEXTITEMINDEX, cast[WPARAM](plvii), MAKELPARAM(flags, 0)
+  )
+
+template ListView_GetNumberOfWorkAreas*(hwnd: HWND, pnWorkAreas: ptr UINT): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_GETNUMBEROFWORKAREAS, 0, cast[LPARAM](pnWorkAreas)
+  )
+
+template ListView_GetOrigin*(hwnd: HWND, ppt: LPPOINT): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_GETORIGIN, 0, cast[LPARAM](ppt))
+
+template ListView_GetOutlineColor*(hwnd: HWND): COLORREF =
+  discardable COLORREF SendMessage(hwnd, LVM_GETOUTLINECOLOR, 0, 0)
+
+template ListView_GetSelectedColumn*(hwnd: HWND): UINT =
+  discardable UINT SendMessage(hwnd, LVM_GETSELECTEDCOLUMN, 0, 0)
+
+template ListView_GetSelectedCount*(hwnd: HWND): UINT =
+  discardable UINT SendMessage(hwnd, LVM_GETSELECTEDCOUNT, 0, 0)
+
+template ListView_GetSelectionMark*(hwnd: HWND): INT =
+  discardable INT SendMessage(hwnd, LVM_GETSELECTIONMARK, 0, 0)
+
 when winimUnicode:
-  const
-    LVM_INSERTCOLUMN* = LVM_INSERTCOLUMNW
+  const LVM_GETSTRINGWIDTH* = LVM_GETSTRINGWIDTHW
 when winimAnsi:
-  const
-    LVM_INSERTCOLUMN* = LVM_INSERTCOLUMNA
-template ListView_InsertColumn*(hwnd: HWND, iCol: int32, pcol: LPLVCOLUMN): int32 = discardable int32 SendMessage(hwnd, LVM_INSERTCOLUMN, cast[WPARAM](iCol), cast[LPARAM](pcol))
-template ListView_InsertGroup*(hwnd: HWND, index: int32, pgrp: PLVGROUP): int32 = discardable int32 SendMessage(hwnd, LVM_INSERTGROUP, cast[WPARAM](index), cast[LPARAM](pgrp))
-template ListView_InsertGroupSorted*(hwnd: HWND, structInsert: PLVINSERTGROUPSORTED): void = SendMessage(hwnd, LVM_INSERTGROUPSORTED, cast[WPARAM](structInsert), 0)
+  const LVM_GETSTRINGWIDTH* = LVM_GETSTRINGWIDTHA
+template ListView_GetStringWidth*(hwnd: HWND, psz: LPCSTR): int32 =
+  discardable int32 SendMessage(hwnd, LVM_GETSTRINGWIDTH, 0, cast[LPARAM](psz))
+
+template ListView_GetSubItemRect*(
+    hwnd: HWND, iItem: int32, iSubItem: int32, code: int32, prc: LPRECT
+): BOOL =
+  (
+    if prc.pointer != nil: (;
+      cast[LPRECT](cast[int](prc)).top = iSubItem
+      cast[LPRECT](cast[int](prc)).left = code
+    )
+    discardable BOOL SendMessage(
+      hwnd, LVM_GETSUBITEMRECT, cast[WPARAM](iItem), cast[LPARAM](prc)
+    )
+  )
+
+template ListView_GetTextBkColor*(hwnd: HWND): COLORREF =
+  discardable COLORREF SendMessage(hwnd, LVM_GETTEXTBKCOLOR, 0, 0)
+
+template ListView_GetTextColor*(hwnd: HWND): COLORREF =
+  discardable COLORREF SendMessage(hwnd, LVM_GETTEXTCOLOR, 0, 0)
+
+template ListView_GetTileInfo*(hwnd: HWND, pti: PLVTILEINFO): void =
+  SendMessage(hwnd, LVM_GETTILEINFO, 0, cast[LPARAM](pti))
+
+template ListView_GetTileViewInfo*(hwnd: HWND, ptvi: PLVTILEVIEWINFO): void =
+  SendMessage(hwnd, LVM_GETTILEVIEWINFO, 0, cast[LPARAM](ptvi))
+
+template ListView_GetToolTips*(hwnd: HWND): HWND =
+  discardable HWND SendMessage(hwnd, LVM_GETTOOLTIPS, 0, 0)
+
+template ListView_GetTopIndex*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, LVM_GETTOPINDEX, 0, 0)
+
+template ListView_GetUnicodeFormat*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_GETUNICODEFORMAT, 0, 0)
+
+template ListView_GetView*(hwnd: HWND): DWORD =
+  discardable DWORD SendMessage(hwnd, LVM_GETVIEW, 0, 0)
+
+template ListView_GetViewRect*(hwnd: HWND, prc: ptr RECT): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_GETVIEWRECT, 0, cast[LPARAM](prc))
+
+template ListView_GetWorkAreas*(hwnd: HWND, nWorkAreas: INT, prc: LPRECT): void =
+  SendMessage(hwnd, LVM_GETWORKAREAS, cast[WPARAM](nWorkAreas), cast[LPARAM](prc))
+
+template ListView_HasGroup*(hwnd: HWND, dwGroupId: int32): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_HASGROUP, cast[WPARAM](dwGroupId), 0)
+
+template ListView_HitTest*(hwnd: HWND, pinfo: LPLVHITTESTINFO): int32 =
+  discardable int32 SendMessage(hwnd, LVM_HITTEST, 0, cast[LPARAM](pinfo))
+
 when winimUnicode:
-  const
-    LVM_INSERTITEM* = LVM_INSERTITEMW
+  const LVM_INSERTCOLUMN* = LVM_INSERTCOLUMNW
 when winimAnsi:
-  const
-    LVM_INSERTITEM* = LVM_INSERTITEMA
-template ListView_InsertItem*(hwnd: HWND, pitem: LPLVITEM): int32 = discardable int32 SendMessage(hwnd, LVM_INSERTITEM, 0, cast[LPARAM](pitem))
-template ListView_InsertMarkHitTest*(hwnd: HWND, point: LPPOINT, lvim: LPLVINSERTMARK): BOOL = discardable BOOL SendMessage(hwnd, LVM_INSERTMARKHITTEST, cast[WPARAM](point), cast[LPARAM](lvim))
-template ListView_IsGroupViewEnabled*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, LVM_ISGROUPVIEWENABLED, 0, 0)
-template ListView_IsItemVisible*(hwnd: HWND, index: UINT): UINT = discardable UINT SendMessage(hwnd, LVM_ISITEMVISIBLE, cast[WPARAM](index), 0)
-template ListView_MapIDToIndex*(hwnd: HWND, id: UINT): UINT = discardable UINT SendMessage(hwnd, LVM_MAPIDTOINDEX, cast[WPARAM](id), 0)
-template ListView_MapIndexToID*(hwnd: HWND, index: UINT): UINT = discardable UINT SendMessage(hwnd, LVM_MAPINDEXTOID, cast[WPARAM](index), 0)
-template ListView_MoveGroup*(hwnd: HWND, iGroupId: int32, toIndex: int32): void = SendMessage(hwnd, LVM_MOVEGROUP, cast[WPARAM](iGroupId), cast[LPARAM](toIndex))
-template ListView_MoveItemToGroup*(hwnd: HWND, idItemFrom: int32, idGroupTo: int32): void = SendMessage(hwnd, LVM_MOVEITEMTOGROUP, cast[WPARAM](idItemFrom), cast[LPARAM](idGroupTo))
-template ListView_RedrawItems*(hwnd: HWND, iFirst: int32, iLast: int32): BOOL = discardable BOOL SendMessage(hwnd, LVM_REDRAWITEMS, cast[WPARAM](iFirst), cast[LPARAM](iLast))
-template ListView_RemoveAllGroups*(hwnd: HWND): void = SendMessage(hwnd, LVM_REMOVEALLGROUPS, 0, 0)
-template ListView_RemoveGroup*(hwnd: HWND, iGroupId: int32): int32 = discardable int32 SendMessage(hwnd, LVM_REMOVEGROUP, cast[WPARAM](iGroupId), 0)
-template ListView_Scroll*(hwnd: HWND, dx: int32, dy: int32): BOOL = discardable BOOL SendMessage(hwnd, LVM_SCROLL, cast[WPARAM](dx), cast[LPARAM](dy))
-template ListView_SetBkColor*(hwnd: HWND, clrBk: COLORREF): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETBKCOLOR, 0, cast[LPARAM](clrBk))
+  const LVM_INSERTCOLUMN* = LVM_INSERTCOLUMNA
+template ListView_InsertColumn*(hwnd: HWND, iCol: int32, pcol: LPLVCOLUMN): int32 =
+  discardable int32 SendMessage(
+    hwnd, LVM_INSERTCOLUMN, cast[WPARAM](iCol), cast[LPARAM](pcol)
+  )
+
+template ListView_InsertGroup*(hwnd: HWND, index: int32, pgrp: PLVGROUP): int32 =
+  discardable int32 SendMessage(
+    hwnd, LVM_INSERTGROUP, cast[WPARAM](index), cast[LPARAM](pgrp)
+  )
+
+template ListView_InsertGroupSorted*(
+    hwnd: HWND, structInsert: PLVINSERTGROUPSORTED
+): void =
+  SendMessage(hwnd, LVM_INSERTGROUPSORTED, cast[WPARAM](structInsert), 0)
+
 when winimUnicode:
-  const
-    LVM_SETBKIMAGE* = LVM_SETBKIMAGEW
+  const LVM_INSERTITEM* = LVM_INSERTITEMW
 when winimAnsi:
-  const
-    LVM_SETBKIMAGE* = LVM_SETBKIMAGEA
-template ListView_SetBkImage*(hwnd: HWND, plvbki: LPLVBKIMAGE): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETBKIMAGE, 0, cast[LPARAM](plvbki))
-template ListView_SetCallbackMask*(hwnd: HWND, mask: UINT): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETCALLBACKMASK, cast[WPARAM](mask), 0)
-template ListView_SetItemState*(hwnd: HWND, i: int32, data: UINT, mask: UINT): void = (var lvi = LV_ITEM(stateMask: mask, state: data); SendMessage(hwnd, LVM_SETITEMSTATE, cast[WPARAM](i), cast[LPARAM](addr lvi)))
-template ListView_SetCheckState*(hwnd: HWND, i: UINT, fCheck: BOOL) = ListView_SetItemState(hwnd, i, INDEXTOSTATEIMAGEMASK(if bool fCheck:2 else:1), LVIS_STATEIMAGEMASK)
+  const LVM_INSERTITEM* = LVM_INSERTITEMA
+template ListView_InsertItem*(hwnd: HWND, pitem: LPLVITEM): int32 =
+  discardable int32 SendMessage(hwnd, LVM_INSERTITEM, 0, cast[LPARAM](pitem))
+
+template ListView_InsertMarkHitTest*(
+    hwnd: HWND, point: LPPOINT, lvim: LPLVINSERTMARK
+): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_INSERTMARKHITTEST, cast[WPARAM](point), cast[LPARAM](lvim)
+  )
+
+template ListView_IsGroupViewEnabled*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_ISGROUPVIEWENABLED, 0, 0)
+
+template ListView_IsItemVisible*(hwnd: HWND, index: UINT): UINT =
+  discardable UINT SendMessage(hwnd, LVM_ISITEMVISIBLE, cast[WPARAM](index), 0)
+
+template ListView_MapIDToIndex*(hwnd: HWND, id: UINT): UINT =
+  discardable UINT SendMessage(hwnd, LVM_MAPIDTOINDEX, cast[WPARAM](id), 0)
+
+template ListView_MapIndexToID*(hwnd: HWND, index: UINT): UINT =
+  discardable UINT SendMessage(hwnd, LVM_MAPINDEXTOID, cast[WPARAM](index), 0)
+
+template ListView_MoveGroup*(hwnd: HWND, iGroupId: int32, toIndex: int32): void =
+  SendMessage(hwnd, LVM_MOVEGROUP, cast[WPARAM](iGroupId), cast[LPARAM](toIndex))
+
+template ListView_MoveItemToGroup*(
+    hwnd: HWND, idItemFrom: int32, idGroupTo: int32
+): void =
+  SendMessage(
+    hwnd, LVM_MOVEITEMTOGROUP, cast[WPARAM](idItemFrom), cast[LPARAM](idGroupTo)
+  )
+
+template ListView_RedrawItems*(hwnd: HWND, iFirst: int32, iLast: int32): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_REDRAWITEMS, cast[WPARAM](iFirst), cast[LPARAM](iLast)
+  )
+
+template ListView_RemoveAllGroups*(hwnd: HWND): void =
+  SendMessage(hwnd, LVM_REMOVEALLGROUPS, 0, 0)
+
+template ListView_RemoveGroup*(hwnd: HWND, iGroupId: int32): int32 =
+  discardable int32 SendMessage(hwnd, LVM_REMOVEGROUP, cast[WPARAM](iGroupId), 0)
+
+template ListView_Scroll*(hwnd: HWND, dx: int32, dy: int32): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_SCROLL, cast[WPARAM](dx), cast[LPARAM](dy))
+
+template ListView_SetBkColor*(hwnd: HWND, clrBk: COLORREF): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_SETBKCOLOR, 0, cast[LPARAM](clrBk))
+
 when winimUnicode:
-  const
-    LVM_SETCOLUMN* = LVM_SETCOLUMNW
+  const LVM_SETBKIMAGE* = LVM_SETBKIMAGEW
+when winimAnsi:
+  const LVM_SETBKIMAGE* = LVM_SETBKIMAGEA
+template ListView_SetBkImage*(hwnd: HWND, plvbki: LPLVBKIMAGE): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_SETBKIMAGE, 0, cast[LPARAM](plvbki))
+
+template ListView_SetCallbackMask*(hwnd: HWND, mask: UINT): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_SETCALLBACKMASK, cast[WPARAM](mask), 0)
+
+template ListView_SetItemState*(hwnd: HWND, i: int32, data: UINT, mask: UINT): void =
+  (
+    var lvi = LV_ITEM(stateMask: mask, state: data)
+    SendMessage(hwnd, LVM_SETITEMSTATE, cast[WPARAM](i), cast[LPARAM](addr lvi))
+  )
+
+template ListView_SetCheckState*(hwnd: HWND, i: UINT, fCheck: BOOL) =
+  ListView_SetItemState(
+    hwnd, i, INDEXTOSTATEIMAGEMASK(if bool fCheck: 2 else: 1), LVIS_STATEIMAGEMASK
+  )
+
+when winimUnicode:
+  const LVM_SETCOLUMN* = LVM_SETCOLUMNW
 when winimAnsi:
-  const
-    LVM_SETCOLUMN* = LVM_SETCOLUMNA
-template ListView_SetColumn*(hwnd: HWND, iCol: int32, pcol: LPLVCOLUMN): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETCOLUMN, cast[WPARAM](iCol), cast[LPARAM](pcol))
-template ListView_SetColumnOrderArray*(hwnd: HWND, iCount: int32, pi: ptr int32): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETCOLUMNORDERARRAY, cast[WPARAM](iCount), cast[LPARAM](pi))
-template ListView_SetColumnWidth*(hwnd: HWND, iCol: int32, cx: int32): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETCOLUMNWIDTH, cast[WPARAM](iCol), MAKELPARAM(cx, 0))
-template ListView_SetExtendedListViewStyle*(hwnd: HWND, dw: DWORD): void = SendMessage(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, cast[LPARAM](dw))
-template ListView_SetExtendedListViewStyleEx*(hwnd: HWND, dwMask: DWORD, dw: DWORD): void = SendMessage(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, cast[WPARAM](dwMask), cast[LPARAM](dw))
-template ListView_SetGroupHeaderImageList*(hwnd: HWND, himl: HIMAGELIST): HIMAGELIST = discardable HIMAGELIST SendMessage(hwnd, LVM_SETIMAGELIST, cast[WPARAM](LVSIL_GROUPHEADER), cast[LPARAM](himl))
-template ListView_SetGroupInfo*(hwnd: HWND, iGroupId: int32, pgrp: PLVGROUP): int32 = discardable int32 SendMessage(hwnd, LVM_SETGROUPINFO, cast[WPARAM](iGroupId), cast[LPARAM](pgrp))
-template ListView_SetGroupMetrics*(hwnd: HWND, pGroupMetrics: PLVGROUPMETRICS): void = SendMessage(hwnd, LVM_SETGROUPMETRICS, 0, cast[LPARAM](pGroupMetrics))
-template ListView_SetGroupState*(hwnd: HWND, dwGroupId: UINT, dwMask: UINT, dwState: UINT): LRESULT = (var lvg = LVGROUP(cbSize: int32 sizeof(LVGROUP), mask: LVGF_STATE, stateMask: dwMask, state: dwState); discardable LRESULT SendMessage(hwnd, LVM_SETGROUPINFO, cast[WPARAM](dwGroupId), cast[LPARAM](addr lvg)))
-template ListView_SetHotCursor*(hwnd: HWND, hcur: HCURSOR): HCURSOR = discardable HCURSOR SendMessage(hwnd, LVM_SETHOTCURSOR, 0, cast[LPARAM](hcur))
-template ListView_SetHotItem*(hwnd: HWND, i: INT): INT = discardable INT SendMessage(hwnd, LVM_SETHOTITEM, cast[WPARAM](i), 0)
-template ListView_SetHoverTime*(hwnd: HWND, dwHoverTimeMs: DWORD): void = SendMessage(hwnd, LVM_SETHOVERTIME, 0, cast[LPARAM](dwHoverTimeMs))
-template ListView_SetIconSpacing*(hwnd: HWND, cx: int32, cy: int32): DWORD = discardable DWORD SendMessage(hwnd, LVM_SETICONSPACING, 0, MAKELONG(cx, cy))
-template ListView_SetImageList*(hwnd: HWND, himl: HIMAGELIST, iImageList: int32): HIMAGELIST = discardable HIMAGELIST SendMessage(hwnd, LVM_SETIMAGELIST, cast[WPARAM](iImageList), cast[LPARAM](himl))
-template ListView_SetInfoTip*(hwnd: HWND, plvInfoTip: PLVSETINFOTIP): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETINFOTIP, 0, cast[LPARAM](plvInfoTip))
-template ListView_SetInsertMark*(hwnd: HWND, lvim: LPLVINSERTMARK): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETINSERTMARK, 0, cast[LPARAM](lvim))
-template ListView_SetInsertMarkColor*(hwnd: HWND, color: COLORREF): COLORREF = discardable COLORREF SendMessage(hwnd, LVM_SETINSERTMARKCOLOR, 0, cast[LPARAM](color))
+  const LVM_SETCOLUMN* = LVM_SETCOLUMNA
+template ListView_SetColumn*(hwnd: HWND, iCol: int32, pcol: LPLVCOLUMN): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_SETCOLUMN, cast[WPARAM](iCol), cast[LPARAM](pcol)
+  )
+
+template ListView_SetColumnOrderArray*(hwnd: HWND, iCount: int32, pi: ptr int32): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_SETCOLUMNORDERARRAY, cast[WPARAM](iCount), cast[LPARAM](pi)
+  )
+
+template ListView_SetColumnWidth*(hwnd: HWND, iCol: int32, cx: int32): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_SETCOLUMNWIDTH, cast[WPARAM](iCol), MAKELPARAM(cx, 0)
+  )
+
+template ListView_SetExtendedListViewStyle*(hwnd: HWND, dw: DWORD): void =
+  SendMessage(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, cast[LPARAM](dw))
+
+template ListView_SetExtendedListViewStyleEx*(
+    hwnd: HWND, dwMask: DWORD, dw: DWORD
+): void =
+  SendMessage(
+    hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, cast[WPARAM](dwMask), cast[LPARAM](dw)
+  )
+
+template ListView_SetGroupHeaderImageList*(hwnd: HWND, himl: HIMAGELIST): HIMAGELIST =
+  discardable HIMAGELIST SendMessage(
+    hwnd, LVM_SETIMAGELIST, cast[WPARAM](LVSIL_GROUPHEADER), cast[LPARAM](himl)
+  )
+
+template ListView_SetGroupInfo*(hwnd: HWND, iGroupId: int32, pgrp: PLVGROUP): int32 =
+  discardable int32 SendMessage(
+    hwnd, LVM_SETGROUPINFO, cast[WPARAM](iGroupId), cast[LPARAM](pgrp)
+  )
+
+template ListView_SetGroupMetrics*(hwnd: HWND, pGroupMetrics: PLVGROUPMETRICS): void =
+  SendMessage(hwnd, LVM_SETGROUPMETRICS, 0, cast[LPARAM](pGroupMetrics))
+
+template ListView_SetGroupState*(
+    hwnd: HWND, dwGroupId: UINT, dwMask: UINT, dwState: UINT
+): LRESULT =
+  (
+    var lvg = LVGROUP(
+      cbSize: int32 sizeof(LVGROUP), mask: LVGF_STATE, stateMask: dwMask, state: dwState
+    )
+    discardable LRESULT SendMessage(
+      hwnd, LVM_SETGROUPINFO, cast[WPARAM](dwGroupId), cast[LPARAM](addr lvg)
+    )
+  )
+
+template ListView_SetHotCursor*(hwnd: HWND, hcur: HCURSOR): HCURSOR =
+  discardable HCURSOR SendMessage(hwnd, LVM_SETHOTCURSOR, 0, cast[LPARAM](hcur))
+
+template ListView_SetHotItem*(hwnd: HWND, i: INT): INT =
+  discardable INT SendMessage(hwnd, LVM_SETHOTITEM, cast[WPARAM](i), 0)
+
+template ListView_SetHoverTime*(hwnd: HWND, dwHoverTimeMs: DWORD): void =
+  SendMessage(hwnd, LVM_SETHOVERTIME, 0, cast[LPARAM](dwHoverTimeMs))
+
+template ListView_SetIconSpacing*(hwnd: HWND, cx: int32, cy: int32): DWORD =
+  discardable DWORD SendMessage(hwnd, LVM_SETICONSPACING, 0, MAKELONG(cx, cy))
+
+template ListView_SetImageList*(
+    hwnd: HWND, himl: HIMAGELIST, iImageList: int32
+): HIMAGELIST =
+  discardable HIMAGELIST SendMessage(
+    hwnd, LVM_SETIMAGELIST, cast[WPARAM](iImageList), cast[LPARAM](himl)
+  )
+
+template ListView_SetInfoTip*(hwnd: HWND, plvInfoTip: PLVSETINFOTIP): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_SETINFOTIP, 0, cast[LPARAM](plvInfoTip))
+
+template ListView_SetInsertMark*(hwnd: HWND, lvim: LPLVINSERTMARK): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_SETINSERTMARK, 0, cast[LPARAM](lvim))
+
+template ListView_SetInsertMarkColor*(hwnd: HWND, color: COLORREF): COLORREF =
+  discardable COLORREF SendMessage(hwnd, LVM_SETINSERTMARKCOLOR, 0, cast[LPARAM](color))
+
 when winimUnicode:
-  const
-    LVM_SETITEM* = LVM_SETITEMW
+  const LVM_SETITEM* = LVM_SETITEMW
 when winimAnsi:
-  const
-    LVM_SETITEM* = LVM_SETITEMA
-template ListView_SetItem*(hwnd: HWND, pitem: LPLVITEM): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETITEM, 0, cast[LPARAM](pitem))
-template ListView_SetItemCount*(hwnd: HWND, cItems: int32): void = SendMessage(hwnd, LVM_SETITEMCOUNT, cast[WPARAM](cItems), 0)
-template ListView_SetItemCountEx*(hwnd: HWND, cItems: int32, dwFlags: DWORD): void = SendMessage(hwnd, LVM_SETITEMCOUNT, cast[WPARAM](cItems), cast[LPARAM](dwFlags))
-template ListView_SetItemIndexState*(hwnd: HWND, plvii: ptr LVITEMINDEX, data: UINT, mask: UINT): HRESULT = (var lvi = LV_ITEM(stateMask: mask, state: data); discardable HRESULT SendMessage(hwnd, LVM_SETITEMINDEXSTATE, cast[WPARAM](plvii), cast[LPARAM](addr lvi)))
-template ListView_SetItemPosition*(hwnd: HWND, i: int32, x: int32, y: int32): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETITEMPOSITION, cast[WPARAM](i), MAKELPARAM(x, y))
-template ListView_SetItemPosition32*(hwnd: HWND, i: int32, x0: int32, y0: int32): void = (var p = POINT(x: x0, y: y0); SendMessage(hwnd, LVM_SETITEMPOSITION32, cast[WPARAM](i), cast[LPARAM](addr p)))
+  const LVM_SETITEM* = LVM_SETITEMA
+template ListView_SetItem*(hwnd: HWND, pitem: LPLVITEM): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_SETITEM, 0, cast[LPARAM](pitem))
+
+template ListView_SetItemCount*(hwnd: HWND, cItems: int32): void =
+  SendMessage(hwnd, LVM_SETITEMCOUNT, cast[WPARAM](cItems), 0)
+
+template ListView_SetItemCountEx*(hwnd: HWND, cItems: int32, dwFlags: DWORD): void =
+  SendMessage(hwnd, LVM_SETITEMCOUNT, cast[WPARAM](cItems), cast[LPARAM](dwFlags))
+
+template ListView_SetItemIndexState*(
+    hwnd: HWND, plvii: ptr LVITEMINDEX, data: UINT, mask: UINT
+): HRESULT =
+  (
+    var lvi = LV_ITEM(stateMask: mask, state: data)
+    discardable HRESULT SendMessage(
+      hwnd, LVM_SETITEMINDEXSTATE, cast[WPARAM](plvii), cast[LPARAM](addr lvi)
+    )
+  )
+
+template ListView_SetItemPosition*(hwnd: HWND, i: int32, x: int32, y: int32): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_SETITEMPOSITION, cast[WPARAM](i), MAKELPARAM(x, y)
+  )
+
+template ListView_SetItemPosition32*(hwnd: HWND, i: int32, x0: int32, y0: int32): void =
+  (
+    var p = POINT(x: x0, y: y0)
+    SendMessage(hwnd, LVM_SETITEMPOSITION32, cast[WPARAM](i), cast[LPARAM](addr p))
+  )
+
 when winimUnicode:
-  const
-    LVM_SETITEMTEXT* = LVM_SETITEMTEXTW
+  const LVM_SETITEMTEXT* = LVM_SETITEMTEXTW
 when winimAnsi:
-  const
-    LVM_SETITEMTEXT* = LVM_SETITEMTEXTA
-template ListView_SetItemText*(hwnd: HWND, i: int32, iSub: int32, text: LPCTSTR): void = (var lvi = LV_ITEM(iSubItem: iSub, pszText: text); SendMessage(hwnd, LVM_SETITEMTEXT, cast[WPARAM](i), cast[LPARAM](addr lvi)))
-template ListView_SetOutlineColor*(hwnd: HWND, color: COLORREF): COLORREF = discardable COLORREF SendMessage(hwnd, LVM_SETOUTLINECOLOR, 0, cast[LPARAM](color))
-template ListView_SetSelectedColumn*(hwnd: HWND, iCol: int32): void = SendMessage(hwnd, LVM_SETSELECTEDCOLUMN, cast[WPARAM](iCol), 0)
-template ListView_SetSelectionMark*(hwnd: HWND, i: INT): INT = discardable INT SendMessage(hwnd, LVM_SETSELECTIONMARK, 0, cast[LPARAM](i))
-template ListView_SetTextBkColor*(hwnd: HWND, clrTextBk: COLORREF): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETTEXTBKCOLOR, 0, cast[LPARAM](clrTextBk))
-template ListView_SetTextColor*(hwnd: HWND, clrText: COLORREF): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETTEXTCOLOR, 0, cast[LPARAM](clrText))
-template ListView_SetTileInfo*(hwnd: HWND, pti: PLVTILEINFO): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETTILEINFO, 0, cast[LPARAM](pti))
-template ListView_SetTileViewInfo*(hwnd: HWND, ptvi: PLVTILEVIEWINFO): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETTILEVIEWINFO, 0, cast[LPARAM](ptvi))
-template ListView_SetTileWidth*(hwnd: HWND, cpWidth: int32): void = SendMessage(hwnd, LVM_SETTILEWIDTH, cast[WPARAM](cpWidth), 0)
-template ListView_SetToolTips*(hwnd: HWND, hwndNewHwnd: HWND): HWND = discardable HWND SendMessage(hwnd, LVM_SETTOOLTIPS, cast[WPARAM](hwndNewHwnd), 0)
-template ListView_SetUnicodeFormat*(hwnd: HWND, fUnicode: BOOL): BOOL = discardable BOOL SendMessage(hwnd, LVM_SETUNICODEFORMAT, cast[WPARAM](fUnicode), 0)
-template ListView_SetView*(hwnd: HWND, iView: DWORD): int32 = discardable int32 SendMessage(hwnd, LVM_SETVIEW, cast[WPARAM](iView), 0)
-template ListView_SetWorkAreas*(hwnd: HWND, nWorkAreas: INT, prc: LPRECT): void = SendMessage(hwnd, LVM_SETWORKAREAS, cast[WPARAM](nWorkAreas), cast[LPARAM](prc))
-template ListView_SortGroups*(hwnd: HWND, pfnGroupCompate: PFNLVGROUPCOMPARE, plv: LPVOID): int32 = discardable int32 SendMessage(hwnd, LVM_SORTGROUPS, cast[WPARAM](pfnGroupCompate), cast[LPARAM](plv))
-template ListView_SortItems*(hwnd: HWND, pfnCompare: PFNLVCOMPARE, lPrm: LPARAM): BOOL = discardable BOOL SendMessage(hwnd, LVM_SORTITEMS, cast[WPARAM](lPrm), cast[LPARAM](pfnCompare))
-template ListView_SortItemsEx*(hwnd: HWND, pfnCompare: PFNLVCOMPARE, lPrm: LPARAM): BOOL = discardable BOOL SendMessage(hwnd, LVM_SORTITEMSEX, cast[WPARAM](lPrm), cast[LPARAM](pfnCompare))
-template ListView_SubItemHitTest*(hwnd: HWND, plvhti: LPLVHITTESTINFO): INT = discardable INT SendMessage(hwnd, LVM_SUBITEMHITTEST, 0, cast[LPARAM](plvhti))
-template ListView_SubItemHitTestEx*(hwnd: HWND, plvhti: LPLVHITTESTINFO): INT = discardable INT SendMessage(hwnd, LVM_SUBITEMHITTEST, cast[WPARAM](-1), cast[LPARAM](plvhti))
-template ListView_Update*(hwnd: HWND, i: int32): BOOL = discardable BOOL SendMessage(hwnd, LVM_UPDATE, cast[WPARAM](i), 0)
-template MonthCal_GetCalendarBorder*(hmc: HWND): DWORD = discardable DWORD SendMessage(hmc, MCM_GETCALENDARBORDER, 0, 0)
-template MonthCal_GetCalendarCount*(hmc: HWND): DWORD = discardable DWORD SendMessage(hmc, MCM_GETCALENDARCOUNT, 0, 0)
-template MonthCal_GetCalendarGridInfo*(hmc: HWND, pmcGridInfo: ptr MCGRIDINFO): BOOL = discardable BOOL SendMessage(hmc, MCM_GETCALENDARGRIDINFO, 0, cast[LPARAM](pmcGridInfo))
-template MonthCal_GetCALID*(hmc: HWND): CALID = discardable CALID SendMessage(hmc, MCM_GETCALID, 0, 0)
-template MonthCal_GetColor*(hmc: HWND, iColor: INT): COLORREF = discardable COLORREF SendMessage(hmc, MCM_GETCOLOR, cast[WPARAM](iColor), 0)
-template MonthCal_GetCurrentView*(hmc: HWND): DWORD = discardable DWORD SendMessage(hmc, MCM_GETCURRENTVIEW, 0, 0)
-template MonthCal_GetCurSel*(hmc: HWND, pst: LPSYSTEMTIME): BOOL = discardable BOOL SendMessage(hmc, MCM_GETCURSEL, 0, cast[LPARAM](pst))
-template MonthCal_GetFirstDayOfWeek*(hmc: HWND): DWORD = discardable DWORD SendMessage(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0)
-template MonthCal_GetMaxSelCount*(hmc: HWND): DWORD = discardable DWORD SendMessage(hmc, MCM_GETMAXSELCOUNT, 0, 0)
-template MonthCal_GetMaxTodayWidth*(hmc: HWND): DWORD = discardable DWORD SendMessage(hmc, MCM_GETMAXTODAYWIDTH, 0, 0)
-template MonthCal_GetMinReqRect*(hmc: HWND, prc: LPRECT): BOOL = discardable BOOL SendMessage(hmc, MCM_GETMINREQRECT, 0, cast[LPARAM](prc))
-template MonthCal_GetMonthDelta*(hmc: HWND): INT = discardable INT SendMessage(hmc, MCM_GETMONTHDELTA, 0, 0)
-template MonthCal_GetMonthRange*(hmc: HWND, gmr: DWORD, rgst: LPSYSTEMTIME): INT = discardable INT SendMessage(hmc, MCM_GETMONTHRANGE, cast[WPARAM](gmr), cast[LPARAM](rgst))
-template MonthCal_GetRange*(hmc: HWND, rgst: LPSYSTEMTIME): DWORD = discardable DWORD SendMessage(hmc, MCM_GETRANGE, 0, cast[LPARAM](rgst))
-template MonthCal_GetSelRange*(hmc: HWND, rgst: LPSYSTEMTIME): BOOL = discardable BOOL SendMessage(hmc, MCM_GETSELRANGE, 0, cast[LPARAM](rgst))
-template MonthCal_GetToday*(hmc: HWND, pst: LPSYSTEMTIME): BOOL = discardable BOOL SendMessage(hmc, MCM_GETTODAY, 0, cast[LPARAM](pst))
-template MonthCal_GetUnicodeFormat*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, MCM_GETUNICODEFORMAT, 0, 0)
-template MonthCal_HitTest*(hmc: HWND, pinfo: PMCHITTESTINFO): DWORD = discardable DWORD SendMessage(hmc, MCM_HITTEST, 0, cast[LPARAM](pinfo))
-template MonthCal_SetCalendarBorder*(hmc: HWND, fset: BOOL, xyborder: int32): LRESULT = discardable LRESULT SendMessage(hmc, MCM_SETCALENDARBORDER, cast[WPARAM](fset), cast[LPARAM](xyborder))
-template MonthCal_SetCALID*(hmc: HWND, calid: UINT): LRESULT = discardable LRESULT SendMessage(hmc, MCM_SETCALID, cast[WPARAM](calid), 0)
-template MonthCal_SetColor*(hmc: HWND, iColor: INT, clr: COLORREF): COLORREF = discardable COLORREF SendMessage(hmc, MCM_SETCOLOR, cast[WPARAM](iColor), cast[LPARAM](clr))
-template MonthCal_SetCurrentView*(hmc: HWND, dwNewView: DWORD): BOOL = discardable BOOL SendMessage(hmc, MCM_SETCURRENTVIEW, 0, cast[LPARAM](dwNewView))
-template MonthCal_SetCurSel*(hmc: HWND, pst: LPSYSTEMTIME): BOOL = discardable BOOL SendMessage(hmc, MCM_SETCURSEL, 0, cast[LPARAM](pst))
-template MonthCal_SetDayState*(hmc: HWND, cbds: INT, rgds: LPMONTHDAYSTATE): BOOL = discardable BOOL SendMessage(hmc, MCM_SETDAYSTATE, cast[WPARAM](cbds), cast[LPARAM](rgds))
-template MonthCal_SetFirstDayOfWeek*(hmc: HWND, iDay: INT): DWORD = discardable DWORD SendMessage(hmc, MCM_SETFIRSTDAYOFWEEK, 0, cast[LPARAM](iDay))
-template MonthCal_SetMaxSelCount*(hmc: HWND, n: UINT): BOOL = discardable BOOL SendMessage(hmc, MCM_SETMAXSELCOUNT, cast[WPARAM](n), 0)
-template MonthCal_SetMonthDelta*(hmc: HWND, n: INT): INT = discardable INT SendMessage(hmc, MCM_SETMONTHDELTA, cast[WPARAM](n), 0)
-template MonthCal_SetRange*(hmc: HWND, gd: DWORD, rgst: LPSYSTEMTIME): BOOL = discardable BOOL SendMessage(hmc, MCM_SETRANGE, cast[WPARAM](gd), cast[LPARAM](rgst))
-template MonthCal_SetSelRange*(hmc: HWND, rgst: LPSYSTEMTIME): BOOL = discardable BOOL SendMessage(hmc, MCM_SETSELRANGE, 0, cast[LPARAM](rgst))
-template MonthCal_SetToday*(hmc: HWND, pst: LPSYSTEMTIME): void = SendMessage(hmc, MCM_SETTODAY, 0, cast[LPARAM](pst))
-template MonthCal_SetUnicodeFormat*(hwnd: HWND, fUnicode: BOOL): BOOL = discardable BOOL SendMessage(hwnd, MCM_SETUNICODEFORMAT, cast[WPARAM](fUnicode), 0)
-template MonthCal_SizeRectToMin*(hmc: HWND, prc: RECT): LRESULT = discardable LRESULT SendMessage(hmc, MCM_SIZERECTTOMIN, 0, cast[LPARAM](prc))
-template Pager_ForwardMouse*(hwnd: HWND, bForward: BOOL): void = SendMessage(hwnd, PGM_FORWARDMOUSE, cast[WPARAM](bForward), 0)
-template Pager_GetBkColor*(hwnd: HWND): COLORREF = discardable COLORREF SendMessage(hwnd, PGM_GETBKCOLOR, 0, 0)
-template Pager_GetBorder*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, PGM_GETBORDER, 0, 0)
-template Pager_GetButtonSize*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, PGM_GETBUTTONSIZE, 0, 0)
-template Pager_GetButtonState*(hwnd: HWND, iButton: int32): DWORD = discardable DWORD SendMessage(hwnd, PGM_GETBUTTONSTATE, 0, cast[LPARAM](iButton))
-template Pager_GetDropTarget*(hwnd: HWND, ppdt: ptr ptr IDropTarget): void = SendMessage(hwnd, PGM_GETDROPTARGET, 0, cast[LPARAM](ppdt))
-template Pager_GetPos*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, PGM_GETPOS, 0, 0)
-template Pager_RecalcSize*(hwnd: HWND): void = SendMessage(hwnd, PGM_RECALCSIZE, 0, 0)
-template Pager_SetBkColor*(hwnd: HWND, clr: COLORREF): COLORREF = discardable COLORREF SendMessage(hwnd, PGM_SETBKCOLOR, 0, cast[LPARAM](clr))
-template Pager_SetBorder*(hwnd: HWND, iBorder: int32): INT = discardable INT SendMessage(hwnd, PGM_SETBORDER, 0, cast[LPARAM](iBorder))
-template Pager_SetButtonSize*(hwnd: HWND, iSize: int32): int32 = discardable int32 SendMessage(hwnd, PGM_SETBUTTONSIZE, 0, cast[LPARAM](iSize))
-template Pager_SetChild*(hwnd: HWND, hwndChild: HWND): void = SendMessage(hwnd, PGM_SETCHILD, 0, cast[LPARAM](hwndChild))
-template Pager_SetPos*(hwnd: HWND, iPos: int32): int32 = discardable int32 SendMessage(hwnd, PGM_SETPOS, 0, cast[LPARAM](iPos))
-template Pager_SetScrollInfo*(hwnd: HWND, cTimeOut: UINT, cLinesPer: UINT, cPixelsPerLine: UINT): void = SendMessage(hwnd, PGM_SETSCROLLINFO, cast[WPARAM](cTimeOut), cast[LPARAM](MAKELONG(cLinesPer, cPixelsPerLine)))
-template PropSheet_AddPage*(hDlg: HWND, hpage: HPROPSHEETPAGE): BOOL = discardable BOOL SendMessage(hDlg, PSM_ADDPAGE, 0, cast[LPARAM](hpage))
-template PropSheet_Apply*(hDlg: HWND): BOOL = discardable BOOL SendMessage(hDlg, PSM_APPLY, 0, 0)
-template PropSheet_CancelToClose*(hDlg: HWND): void = PostMessage(hDlg, PSM_CANCELTOCLOSE, 0, 0)
-template PropSheet_Changed*(hDlg: HWND, hwnd: HWND): BOOL = discardable BOOL SendMessage(hDlg, PSM_CHANGED, cast[WPARAM](hwnd), 0)
-template PropSheet_GetCurrentPageHwnd*(hDlg: HWND): HWND = discardable HWND SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0)
-template PropSheet_GetResult*(hDlg: HWND): int32 = discardable int32 SendMessage(hDlg, PSM_GETRESULT, 0, 0)
-template PropSheet_GetTabControl*(hDlg: HWND): HWND = discardable HWND SendMessage(hDlg, PSM_GETTABCONTROL, 0, 0)
-template PropSheet_HwndToIndex*(hDlg: HWND, hwnd: HWND): int32 = discardable int32 SendMessage(hDlg, PSM_HWNDTOINDEX, cast[WPARAM](hwnd), 0)
-template PropSheet_IdToIndex*(hDlg: HWND, id: int32): int32 = discardable int32 SendMessage(hDlg, PSM_IDTOINDEX, 0, cast[LPARAM](id))
-template PropSheet_IndexToHwnd*(hDlg: HWND, i: int32): HWND = discardable HWND SendMessage(hDlg, PSM_INDEXTOHWND, cast[WPARAM](i), 0)
-template PropSheet_IndexToId*(hDlg: HWND, i: int32): int32 = discardable int32 SendMessage(hDlg, PSM_INDEXTOID, cast[WPARAM](i), 0)
-template PropSheet_IndexToPage*(hDlg: HWND, i: int32): HPROPSHEETPAGE = discardable HPROPSHEETPAGE SendMessage(hDlg, PSM_INDEXTOPAGE, cast[WPARAM](i), 0)
-template PropSheet_InsertPage*(hDlg: HWND, index: HWND, hpage: HWND): BOOL = discardable BOOL SendMessage(hDlg, PSM_INSERTPAGE, cast[WPARAM](index), cast[LPARAM](hpage))
-template PropSheet_IsDialogMessage*(hDlg: HWND, pMsg: LPMSG): BOOL = discardable BOOL SendMessage(hDlg, PSM_ISDIALOGMESSAGE, 0, cast[LPARAM](pMsg))
-template PropSheet_PageToIndex*(hDlg: HWND, hpage: HPROPSHEETPAGE): int32 = discardable int32 SendMessage(hDlg, PSM_PAGETOINDEX, 0, cast[LPARAM](hpage))
-template PropSheet_PressButton*(hDlg: HWND, iButton: int32): BOOL = PostMessage(hDlg, PSM_PRESSBUTTON, cast[WPARAM](iButton), 0)
-template PropSheet_QuerySiblings*(hDlg: HWND, wParam: WPARAM, lParam: LPARAM): int32 = discardable int32 SendMessage(hDlg, PSM_QUERYSIBLINGS, cast[WPARAM](wParam), cast[LPARAM](lParam))
-template PropSheet_RebootSystem*(hDlg: HWND): void = SendMessage(hDlg, PSM_REBOOTSYSTEM, 0, 0)
-template PropSheet_RecalcPageSizes*(hDlg: HWND): BOOL = discardable BOOL SendMessage(hDlg, PSM_RECALCPAGESIZES, 0, 0)
-template PropSheet_RemovePage*(hDlg: HWND, index: int32, hpage: HPROPSHEETPAGE): void = SendMessage(hDlg, PSM_REMOVEPAGE, cast[WPARAM](index), cast[LPARAM](hpage))
-template PropSheet_RestartWindows*(hDlg: HWND): void = SendMessage(hDlg, PSM_RESTARTWINDOWS, 0, 0)
-template PropSheet_SetCurSel*(hDlg: HWND, hpage: HPROPSHEETPAGE, index: UINT): BOOL = discardable BOOL SendMessage(hDlg, PSM_SETCURSEL, cast[WPARAM](index), cast[LPARAM](hpage))
-template PropSheet_SetCurSelByID*(hDlg: HWND, id: int32): BOOL = discardable BOOL SendMessage(hDlg, PSM_SETCURSELID, 0, cast[LPARAM](id))
+  const LVM_SETITEMTEXT* = LVM_SETITEMTEXTA
+template ListView_SetItemText*(hwnd: HWND, i: int32, iSub: int32, text: LPCTSTR): void =
+  (
+    var lvi = LV_ITEM(iSubItem: iSub, pszText: text)
+    SendMessage(hwnd, LVM_SETITEMTEXT, cast[WPARAM](i), cast[LPARAM](addr lvi))
+  )
+
+template ListView_SetOutlineColor*(hwnd: HWND, color: COLORREF): COLORREF =
+  discardable COLORREF SendMessage(hwnd, LVM_SETOUTLINECOLOR, 0, cast[LPARAM](color))
+
+template ListView_SetSelectedColumn*(hwnd: HWND, iCol: int32): void =
+  SendMessage(hwnd, LVM_SETSELECTEDCOLUMN, cast[WPARAM](iCol), 0)
+
+template ListView_SetSelectionMark*(hwnd: HWND, i: INT): INT =
+  discardable INT SendMessage(hwnd, LVM_SETSELECTIONMARK, 0, cast[LPARAM](i))
+
+template ListView_SetTextBkColor*(hwnd: HWND, clrTextBk: COLORREF): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_SETTEXTBKCOLOR, 0, cast[LPARAM](clrTextBk))
+
+template ListView_SetTextColor*(hwnd: HWND, clrText: COLORREF): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_SETTEXTCOLOR, 0, cast[LPARAM](clrText))
+
+template ListView_SetTileInfo*(hwnd: HWND, pti: PLVTILEINFO): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_SETTILEINFO, 0, cast[LPARAM](pti))
+
+template ListView_SetTileViewInfo*(hwnd: HWND, ptvi: PLVTILEVIEWINFO): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_SETTILEVIEWINFO, 0, cast[LPARAM](ptvi))
+
+template ListView_SetTileWidth*(hwnd: HWND, cpWidth: int32): void =
+  SendMessage(hwnd, LVM_SETTILEWIDTH, cast[WPARAM](cpWidth), 0)
+
+template ListView_SetToolTips*(hwnd: HWND, hwndNewHwnd: HWND): HWND =
+  discardable HWND SendMessage(hwnd, LVM_SETTOOLTIPS, cast[WPARAM](hwndNewHwnd), 0)
+
+template ListView_SetUnicodeFormat*(hwnd: HWND, fUnicode: BOOL): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_SETUNICODEFORMAT, cast[WPARAM](fUnicode), 0)
+
+template ListView_SetView*(hwnd: HWND, iView: DWORD): int32 =
+  discardable int32 SendMessage(hwnd, LVM_SETVIEW, cast[WPARAM](iView), 0)
+
+template ListView_SetWorkAreas*(hwnd: HWND, nWorkAreas: INT, prc: LPRECT): void =
+  SendMessage(hwnd, LVM_SETWORKAREAS, cast[WPARAM](nWorkAreas), cast[LPARAM](prc))
+
+template ListView_SortGroups*(
+    hwnd: HWND, pfnGroupCompate: PFNLVGROUPCOMPARE, plv: LPVOID
+): int32 =
+  discardable int32 SendMessage(
+    hwnd, LVM_SORTGROUPS, cast[WPARAM](pfnGroupCompate), cast[LPARAM](plv)
+  )
+
+template ListView_SortItems*(hwnd: HWND, pfnCompare: PFNLVCOMPARE, lPrm: LPARAM): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_SORTITEMS, cast[WPARAM](lPrm), cast[LPARAM](pfnCompare)
+  )
+
+template ListView_SortItemsEx*(
+    hwnd: HWND, pfnCompare: PFNLVCOMPARE, lPrm: LPARAM
+): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, LVM_SORTITEMSEX, cast[WPARAM](lPrm), cast[LPARAM](pfnCompare)
+  )
+
+template ListView_SubItemHitTest*(hwnd: HWND, plvhti: LPLVHITTESTINFO): INT =
+  discardable INT SendMessage(hwnd, LVM_SUBITEMHITTEST, 0, cast[LPARAM](plvhti))
+
+template ListView_SubItemHitTestEx*(hwnd: HWND, plvhti: LPLVHITTESTINFO): INT =
+  discardable INT SendMessage(
+    hwnd, LVM_SUBITEMHITTEST, cast[WPARAM](-1), cast[LPARAM](plvhti)
+  )
+
+template ListView_Update*(hwnd: HWND, i: int32): BOOL =
+  discardable BOOL SendMessage(hwnd, LVM_UPDATE, cast[WPARAM](i), 0)
+
+template MonthCal_GetCalendarBorder*(hmc: HWND): DWORD =
+  discardable DWORD SendMessage(hmc, MCM_GETCALENDARBORDER, 0, 0)
+
+template MonthCal_GetCalendarCount*(hmc: HWND): DWORD =
+  discardable DWORD SendMessage(hmc, MCM_GETCALENDARCOUNT, 0, 0)
+
+template MonthCal_GetCalendarGridInfo*(hmc: HWND, pmcGridInfo: ptr MCGRIDINFO): BOOL =
+  discardable BOOL SendMessage(
+    hmc, MCM_GETCALENDARGRIDINFO, 0, cast[LPARAM](pmcGridInfo)
+  )
+
+template MonthCal_GetCALID*(hmc: HWND): CALID =
+  discardable CALID SendMessage(hmc, MCM_GETCALID, 0, 0)
+
+template MonthCal_GetColor*(hmc: HWND, iColor: INT): COLORREF =
+  discardable COLORREF SendMessage(hmc, MCM_GETCOLOR, cast[WPARAM](iColor), 0)
+
+template MonthCal_GetCurrentView*(hmc: HWND): DWORD =
+  discardable DWORD SendMessage(hmc, MCM_GETCURRENTVIEW, 0, 0)
+
+template MonthCal_GetCurSel*(hmc: HWND, pst: LPSYSTEMTIME): BOOL =
+  discardable BOOL SendMessage(hmc, MCM_GETCURSEL, 0, cast[LPARAM](pst))
+
+template MonthCal_GetFirstDayOfWeek*(hmc: HWND): DWORD =
+  discardable DWORD SendMessage(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0)
+
+template MonthCal_GetMaxSelCount*(hmc: HWND): DWORD =
+  discardable DWORD SendMessage(hmc, MCM_GETMAXSELCOUNT, 0, 0)
+
+template MonthCal_GetMaxTodayWidth*(hmc: HWND): DWORD =
+  discardable DWORD SendMessage(hmc, MCM_GETMAXTODAYWIDTH, 0, 0)
+
+template MonthCal_GetMinReqRect*(hmc: HWND, prc: LPRECT): BOOL =
+  discardable BOOL SendMessage(hmc, MCM_GETMINREQRECT, 0, cast[LPARAM](prc))
+
+template MonthCal_GetMonthDelta*(hmc: HWND): INT =
+  discardable INT SendMessage(hmc, MCM_GETMONTHDELTA, 0, 0)
+
+template MonthCal_GetMonthRange*(hmc: HWND, gmr: DWORD, rgst: LPSYSTEMTIME): INT =
+  discardable INT SendMessage(
+    hmc, MCM_GETMONTHRANGE, cast[WPARAM](gmr), cast[LPARAM](rgst)
+  )
+
+template MonthCal_GetRange*(hmc: HWND, rgst: LPSYSTEMTIME): DWORD =
+  discardable DWORD SendMessage(hmc, MCM_GETRANGE, 0, cast[LPARAM](rgst))
+
+template MonthCal_GetSelRange*(hmc: HWND, rgst: LPSYSTEMTIME): BOOL =
+  discardable BOOL SendMessage(hmc, MCM_GETSELRANGE, 0, cast[LPARAM](rgst))
+
+template MonthCal_GetToday*(hmc: HWND, pst: LPSYSTEMTIME): BOOL =
+  discardable BOOL SendMessage(hmc, MCM_GETTODAY, 0, cast[LPARAM](pst))
+
+template MonthCal_GetUnicodeFormat*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, MCM_GETUNICODEFORMAT, 0, 0)
+
+template MonthCal_HitTest*(hmc: HWND, pinfo: PMCHITTESTINFO): DWORD =
+  discardable DWORD SendMessage(hmc, MCM_HITTEST, 0, cast[LPARAM](pinfo))
+
+template MonthCal_SetCalendarBorder*(hmc: HWND, fset: BOOL, xyborder: int32): LRESULT =
+  discardable LRESULT SendMessage(
+    hmc, MCM_SETCALENDARBORDER, cast[WPARAM](fset), cast[LPARAM](xyborder)
+  )
+
+template MonthCal_SetCALID*(hmc: HWND, calid: UINT): LRESULT =
+  discardable LRESULT SendMessage(hmc, MCM_SETCALID, cast[WPARAM](calid), 0)
+
+template MonthCal_SetColor*(hmc: HWND, iColor: INT, clr: COLORREF): COLORREF =
+  discardable COLORREF SendMessage(
+    hmc, MCM_SETCOLOR, cast[WPARAM](iColor), cast[LPARAM](clr)
+  )
+
+template MonthCal_SetCurrentView*(hmc: HWND, dwNewView: DWORD): BOOL =
+  discardable BOOL SendMessage(hmc, MCM_SETCURRENTVIEW, 0, cast[LPARAM](dwNewView))
+
+template MonthCal_SetCurSel*(hmc: HWND, pst: LPSYSTEMTIME): BOOL =
+  discardable BOOL SendMessage(hmc, MCM_SETCURSEL, 0, cast[LPARAM](pst))
+
+template MonthCal_SetDayState*(hmc: HWND, cbds: INT, rgds: LPMONTHDAYSTATE): BOOL =
+  discardable BOOL SendMessage(
+    hmc, MCM_SETDAYSTATE, cast[WPARAM](cbds), cast[LPARAM](rgds)
+  )
+
+template MonthCal_SetFirstDayOfWeek*(hmc: HWND, iDay: INT): DWORD =
+  discardable DWORD SendMessage(hmc, MCM_SETFIRSTDAYOFWEEK, 0, cast[LPARAM](iDay))
+
+template MonthCal_SetMaxSelCount*(hmc: HWND, n: UINT): BOOL =
+  discardable BOOL SendMessage(hmc, MCM_SETMAXSELCOUNT, cast[WPARAM](n), 0)
+
+template MonthCal_SetMonthDelta*(hmc: HWND, n: INT): INT =
+  discardable INT SendMessage(hmc, MCM_SETMONTHDELTA, cast[WPARAM](n), 0)
+
+template MonthCal_SetRange*(hmc: HWND, gd: DWORD, rgst: LPSYSTEMTIME): BOOL =
+  discardable BOOL SendMessage(hmc, MCM_SETRANGE, cast[WPARAM](gd), cast[LPARAM](rgst))
+
+template MonthCal_SetSelRange*(hmc: HWND, rgst: LPSYSTEMTIME): BOOL =
+  discardable BOOL SendMessage(hmc, MCM_SETSELRANGE, 0, cast[LPARAM](rgst))
+
+template MonthCal_SetToday*(hmc: HWND, pst: LPSYSTEMTIME): void =
+  SendMessage(hmc, MCM_SETTODAY, 0, cast[LPARAM](pst))
+
+template MonthCal_SetUnicodeFormat*(hwnd: HWND, fUnicode: BOOL): BOOL =
+  discardable BOOL SendMessage(hwnd, MCM_SETUNICODEFORMAT, cast[WPARAM](fUnicode), 0)
+
+template MonthCal_SizeRectToMin*(hmc: HWND, prc: RECT): LRESULT =
+  discardable LRESULT SendMessage(hmc, MCM_SIZERECTTOMIN, 0, cast[LPARAM](prc))
+
+template Pager_ForwardMouse*(hwnd: HWND, bForward: BOOL): void =
+  SendMessage(hwnd, PGM_FORWARDMOUSE, cast[WPARAM](bForward), 0)
+
+template Pager_GetBkColor*(hwnd: HWND): COLORREF =
+  discardable COLORREF SendMessage(hwnd, PGM_GETBKCOLOR, 0, 0)
+
+template Pager_GetBorder*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, PGM_GETBORDER, 0, 0)
+
+template Pager_GetButtonSize*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, PGM_GETBUTTONSIZE, 0, 0)
+
+template Pager_GetButtonState*(hwnd: HWND, iButton: int32): DWORD =
+  discardable DWORD SendMessage(hwnd, PGM_GETBUTTONSTATE, 0, cast[LPARAM](iButton))
+
+template Pager_GetDropTarget*(hwnd: HWND, ppdt: ptr ptr IDropTarget): void =
+  SendMessage(hwnd, PGM_GETDROPTARGET, 0, cast[LPARAM](ppdt))
+
+template Pager_GetPos*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, PGM_GETPOS, 0, 0)
+
+template Pager_RecalcSize*(hwnd: HWND): void =
+  SendMessage(hwnd, PGM_RECALCSIZE, 0, 0)
+
+template Pager_SetBkColor*(hwnd: HWND, clr: COLORREF): COLORREF =
+  discardable COLORREF SendMessage(hwnd, PGM_SETBKCOLOR, 0, cast[LPARAM](clr))
+
+template Pager_SetBorder*(hwnd: HWND, iBorder: int32): INT =
+  discardable INT SendMessage(hwnd, PGM_SETBORDER, 0, cast[LPARAM](iBorder))
+
+template Pager_SetButtonSize*(hwnd: HWND, iSize: int32): int32 =
+  discardable int32 SendMessage(hwnd, PGM_SETBUTTONSIZE, 0, cast[LPARAM](iSize))
+
+template Pager_SetChild*(hwnd: HWND, hwndChild: HWND): void =
+  SendMessage(hwnd, PGM_SETCHILD, 0, cast[LPARAM](hwndChild))
+
+template Pager_SetPos*(hwnd: HWND, iPos: int32): int32 =
+  discardable int32 SendMessage(hwnd, PGM_SETPOS, 0, cast[LPARAM](iPos))
+
+template Pager_SetScrollInfo*(
+    hwnd: HWND, cTimeOut: UINT, cLinesPer: UINT, cPixelsPerLine: UINT
+): void =
+  SendMessage(
+    hwnd,
+    PGM_SETSCROLLINFO,
+    cast[WPARAM](cTimeOut),
+    cast[LPARAM](MAKELONG(cLinesPer, cPixelsPerLine)),
+  )
+
+template PropSheet_AddPage*(hDlg: HWND, hpage: HPROPSHEETPAGE): BOOL =
+  discardable BOOL SendMessage(hDlg, PSM_ADDPAGE, 0, cast[LPARAM](hpage))
+
+template PropSheet_Apply*(hDlg: HWND): BOOL =
+  discardable BOOL SendMessage(hDlg, PSM_APPLY, 0, 0)
+
+template PropSheet_CancelToClose*(hDlg: HWND): void =
+  PostMessage(hDlg, PSM_CANCELTOCLOSE, 0, 0)
+
+template PropSheet_Changed*(hDlg: HWND, hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hDlg, PSM_CHANGED, cast[WPARAM](hwnd), 0)
+
+template PropSheet_GetCurrentPageHwnd*(hDlg: HWND): HWND =
+  discardable HWND SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0)
+
+template PropSheet_GetResult*(hDlg: HWND): int32 =
+  discardable int32 SendMessage(hDlg, PSM_GETRESULT, 0, 0)
+
+template PropSheet_GetTabControl*(hDlg: HWND): HWND =
+  discardable HWND SendMessage(hDlg, PSM_GETTABCONTROL, 0, 0)
+
+template PropSheet_HwndToIndex*(hDlg: HWND, hwnd: HWND): int32 =
+  discardable int32 SendMessage(hDlg, PSM_HWNDTOINDEX, cast[WPARAM](hwnd), 0)
+
+template PropSheet_IdToIndex*(hDlg: HWND, id: int32): int32 =
+  discardable int32 SendMessage(hDlg, PSM_IDTOINDEX, 0, cast[LPARAM](id))
+
+template PropSheet_IndexToHwnd*(hDlg: HWND, i: int32): HWND =
+  discardable HWND SendMessage(hDlg, PSM_INDEXTOHWND, cast[WPARAM](i), 0)
+
+template PropSheet_IndexToId*(hDlg: HWND, i: int32): int32 =
+  discardable int32 SendMessage(hDlg, PSM_INDEXTOID, cast[WPARAM](i), 0)
+
+template PropSheet_IndexToPage*(hDlg: HWND, i: int32): HPROPSHEETPAGE =
+  discardable HPROPSHEETPAGE SendMessage(hDlg, PSM_INDEXTOPAGE, cast[WPARAM](i), 0)
+
+template PropSheet_InsertPage*(hDlg: HWND, index: HWND, hpage: HWND): BOOL =
+  discardable BOOL SendMessage(
+    hDlg, PSM_INSERTPAGE, cast[WPARAM](index), cast[LPARAM](hpage)
+  )
+
+template PropSheet_IsDialogMessage*(hDlg: HWND, pMsg: LPMSG): BOOL =
+  discardable BOOL SendMessage(hDlg, PSM_ISDIALOGMESSAGE, 0, cast[LPARAM](pMsg))
+
+template PropSheet_PageToIndex*(hDlg: HWND, hpage: HPROPSHEETPAGE): int32 =
+  discardable int32 SendMessage(hDlg, PSM_PAGETOINDEX, 0, cast[LPARAM](hpage))
+
+template PropSheet_PressButton*(hDlg: HWND, iButton: int32): BOOL =
+  PostMessage(hDlg, PSM_PRESSBUTTON, cast[WPARAM](iButton), 0)
+
+template PropSheet_QuerySiblings*(hDlg: HWND, wParam: WPARAM, lParam: LPARAM): int32 =
+  discardable int32 SendMessage(
+    hDlg, PSM_QUERYSIBLINGS, cast[WPARAM](wParam), cast[LPARAM](lParam)
+  )
+
+template PropSheet_RebootSystem*(hDlg: HWND): void =
+  SendMessage(hDlg, PSM_REBOOTSYSTEM, 0, 0)
+
+template PropSheet_RecalcPageSizes*(hDlg: HWND): BOOL =
+  discardable BOOL SendMessage(hDlg, PSM_RECALCPAGESIZES, 0, 0)
+
+template PropSheet_RemovePage*(hDlg: HWND, index: int32, hpage: HPROPSHEETPAGE): void =
+  SendMessage(hDlg, PSM_REMOVEPAGE, cast[WPARAM](index), cast[LPARAM](hpage))
+
+template PropSheet_RestartWindows*(hDlg: HWND): void =
+  SendMessage(hDlg, PSM_RESTARTWINDOWS, 0, 0)
+
+template PropSheet_SetCurSel*(hDlg: HWND, hpage: HPROPSHEETPAGE, index: UINT): BOOL =
+  discardable BOOL SendMessage(
+    hDlg, PSM_SETCURSEL, cast[WPARAM](index), cast[LPARAM](hpage)
+  )
+
+template PropSheet_SetCurSelByID*(hDlg: HWND, id: int32): BOOL =
+  discardable BOOL SendMessage(hDlg, PSM_SETCURSELID, 0, cast[LPARAM](id))
+
 when winimUnicode:
-  const
-    PSM_SETFINISHTEXT* = PSM_SETFINISHTEXTW
-when winimAnsi:
-  const
-    PSM_SETFINISHTEXT* = PSM_SETFINISHTEXTA
-template PropSheet_SetFinishText*(hDlg: HWND, lpszText: LPTSTR): void = SendMessage(hDlg, PSM_SETFINISHTEXT, 0, cast[LPARAM](lpszText))
-when winimUnicode:
-  const
-    PSM_SETHEADERSUBTITLE* = PSM_SETHEADERSUBTITLEW
+  const PSM_SETFINISHTEXT* = PSM_SETFINISHTEXTW
 when winimAnsi:
-  const
-    PSM_SETHEADERSUBTITLE* = PSM_SETHEADERSUBTITLEA
-template PropSheet_SetHeaderSubTitle*(hDlg: HWND, index: int32, lpszText: LPCSTR): void = SendMessage(hDlg, PSM_SETHEADERSUBTITLE, cast[WPARAM](index), cast[LPARAM](lpszText))
+  const PSM_SETFINISHTEXT* = PSM_SETFINISHTEXTA
+template PropSheet_SetFinishText*(hDlg: HWND, lpszText: LPTSTR): void =
+  SendMessage(hDlg, PSM_SETFINISHTEXT, 0, cast[LPARAM](lpszText))
+
 when winimUnicode:
-  const
-    PSM_SETHEADERTITLE* = PSM_SETHEADERTITLEW
+  const PSM_SETHEADERSUBTITLE* = PSM_SETHEADERSUBTITLEW
 when winimAnsi:
-  const
-    PSM_SETHEADERTITLE* = PSM_SETHEADERTITLEA
-template PropSheet_SetHeaderTitle*(hDlg: HWND, index: int32, lpszText: LPCTSTR): int32 = discardable int32 SendMessage(hDlg, PSM_SETHEADERTITLE, cast[WPARAM](index), cast[LPARAM](lpszText))
+  const PSM_SETHEADERSUBTITLE* = PSM_SETHEADERSUBTITLEA
+template PropSheet_SetHeaderSubTitle*(
+    hDlg: HWND, index: int32, lpszText: LPCSTR
+): void =
+  SendMessage(hDlg, PSM_SETHEADERSUBTITLE, cast[WPARAM](index), cast[LPARAM](lpszText))
+
 when winimUnicode:
-  const
-    PSM_SETTITLE* = PSM_SETTITLEW
+  const PSM_SETHEADERTITLE* = PSM_SETHEADERTITLEW
+when winimAnsi:
+  const PSM_SETHEADERTITLE* = PSM_SETHEADERTITLEA
+template PropSheet_SetHeaderTitle*(hDlg: HWND, index: int32, lpszText: LPCTSTR): int32 =
+  discardable int32 SendMessage(
+    hDlg, PSM_SETHEADERTITLE, cast[WPARAM](index), cast[LPARAM](lpszText)
+  )
+
+when winimUnicode:
+  const PSM_SETTITLE* = PSM_SETTITLEW
 when winimAnsi:
-  const
-    PSM_SETTITLE* = PSM_SETTITLEA
-template PropSheet_SetTitle*(hDlg: HWND, wStyle: DWORD, lpszText: LPTSTR): void = SendMessage(hDlg, PSM_SETTITLE, cast[WPARAM](wStyle), cast[LPARAM](lpszText))
-template PropSheet_SetWizButtons*(hDlg: HWND, dwFlags: DWORD): void = PostMessage(hDlg, PSM_SETWIZBUTTONS, 0, cast[LPARAM](dwFlags))
-template PropSheet_SetWizButtons*(hDlg: HWND, iButton: int32): void = PostMessage(hDlg, PSM_PRESSBUTTON, cast[WPARAM](iButton), 0)
-template PropSheet_UnChanged*(hDlg: HWND, hwnd: HWND): void = SendMessage(hDlg, PSM_UNCHANGED, cast[WPARAM](hwnd), 0)
-template TabCtrl_AdjustRect*(hwnd: HWND, bLarger: BOOL, prc: ptr RECT): void = SendMessage(hwnd, TCM_ADJUSTRECT, cast[WPARAM](bLarger), cast[LPARAM](prc))
-template TabCtrl_DeleteAllItems*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, TCM_DELETEALLITEMS, 0, 0)
-template TabCtrl_DeleteItem*(hwnd: HWND, i: int32): BOOL = discardable BOOL SendMessage(hwnd, TCM_DELETEITEM, cast[WPARAM](i), 0)
-template TabCtrl_DeselectAll*(hwnd: HWND, fExcludeFocus: UINT): void = SendMessage(hwnd, TCM_DESELECTALL, cast[WPARAM](fExcludeFocus), 0)
-template TabCtrl_GetCurFocus*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, TCM_GETCURFOCUS, 0, 0)
-template TabCtrl_GetCurSel*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, TCM_GETCURSEL, 0, 0)
-template TabCtrl_GetExtendedStyle*(hwnd: HWND): DWORD = discardable DWORD SendMessage(hwnd, TCM_GETEXTENDEDSTYLE, 0, 0)
-template TabCtrl_GetImageList*(hwnd: HWND): HIMAGELIST = discardable HIMAGELIST SendMessage(hwnd, TCM_GETIMAGELIST, 0, 0)
+  const PSM_SETTITLE* = PSM_SETTITLEA
+template PropSheet_SetTitle*(hDlg: HWND, wStyle: DWORD, lpszText: LPTSTR): void =
+  SendMessage(hDlg, PSM_SETTITLE, cast[WPARAM](wStyle), cast[LPARAM](lpszText))
+
+template PropSheet_SetWizButtons*(hDlg: HWND, dwFlags: DWORD): void =
+  PostMessage(hDlg, PSM_SETWIZBUTTONS, 0, cast[LPARAM](dwFlags))
+
+template PropSheet_SetWizButtons*(hDlg: HWND, iButton: int32): void =
+  PostMessage(hDlg, PSM_PRESSBUTTON, cast[WPARAM](iButton), 0)
+
+template PropSheet_UnChanged*(hDlg: HWND, hwnd: HWND): void =
+  SendMessage(hDlg, PSM_UNCHANGED, cast[WPARAM](hwnd), 0)
+
+template TabCtrl_AdjustRect*(hwnd: HWND, bLarger: BOOL, prc: ptr RECT): void =
+  SendMessage(hwnd, TCM_ADJUSTRECT, cast[WPARAM](bLarger), cast[LPARAM](prc))
+
+template TabCtrl_DeleteAllItems*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, TCM_DELETEALLITEMS, 0, 0)
+
+template TabCtrl_DeleteItem*(hwnd: HWND, i: int32): BOOL =
+  discardable BOOL SendMessage(hwnd, TCM_DELETEITEM, cast[WPARAM](i), 0)
+
+template TabCtrl_DeselectAll*(hwnd: HWND, fExcludeFocus: UINT): void =
+  SendMessage(hwnd, TCM_DESELECTALL, cast[WPARAM](fExcludeFocus), 0)
+
+template TabCtrl_GetCurFocus*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, TCM_GETCURFOCUS, 0, 0)
+
+template TabCtrl_GetCurSel*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, TCM_GETCURSEL, 0, 0)
+
+template TabCtrl_GetExtendedStyle*(hwnd: HWND): DWORD =
+  discardable DWORD SendMessage(hwnd, TCM_GETEXTENDEDSTYLE, 0, 0)
+
+template TabCtrl_GetImageList*(hwnd: HWND): HIMAGELIST =
+  discardable HIMAGELIST SendMessage(hwnd, TCM_GETIMAGELIST, 0, 0)
+
 when winimUnicode:
-  type
-    LPTCITEM* = LPTCITEMW
+  type LPTCITEM* = LPTCITEMW
 when winimAnsi:
-  type
-    LPTCITEM* = LPTCITEMA
+  type LPTCITEM* = LPTCITEMA
 when winimUnicode:
-  const
-    TCM_GETITEM* = TCM_GETITEMW
+  const TCM_GETITEM* = TCM_GETITEMW
 when winimAnsi:
-  const
-    TCM_GETITEM* = TCM_GETITEMA
-template TabCtrl_GetItem*(hwnd: HWND, iItem: int32, pitem: LPTCITEM): BOOL = discardable BOOL SendMessage(hwnd, TCM_GETITEM, cast[WPARAM](iItem), cast[LPARAM](pitem))
-template TabCtrl_GetItemCount*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, TCM_GETITEMCOUNT, 0, 0)
-template TabCtrl_GetItemRect*(hwnd: HWND, i: int32, prc: ptr RECT): BOOL = discardable BOOL SendMessage(hwnd, TCM_GETITEMRECT, cast[WPARAM](i), cast[LPARAM](prc))
-template TabCtrl_GetRowCount*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, TCM_GETROWCOUNT, 0, 0)
-template TabCtrl_GetToolTips*(hwnd: HWND): HWND = discardable HWND SendMessage(hwnd, TCM_GETTOOLTIPS, 0, 0)
-template TabCtrl_GetUnicodeFormat*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, TCM_GETUNICODEFORMAT, 0, 0)
-template TabCtrl_HighlightItem*(hwnd: HWND, i: INT, fHighlight: WORD): BOOL = discardable BOOL SendMessage(hwnd, TCM_HIGHLIGHTITEM, cast[WPARAM](i), MAKELONG(fHighlight, 0))
-template TabCtrl_HitTest*(hwnd: HWND, pinfo: LPTCHITTESTINFO): int32 = discardable int32 SendMessage(hwnd, TCM_HITTEST, 0, cast[LPARAM](pinfo))
+  const TCM_GETITEM* = TCM_GETITEMA
+template TabCtrl_GetItem*(hwnd: HWND, iItem: int32, pitem: LPTCITEM): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, TCM_GETITEM, cast[WPARAM](iItem), cast[LPARAM](pitem)
+  )
+
+template TabCtrl_GetItemCount*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, TCM_GETITEMCOUNT, 0, 0)
+
+template TabCtrl_GetItemRect*(hwnd: HWND, i: int32, prc: ptr RECT): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, TCM_GETITEMRECT, cast[WPARAM](i), cast[LPARAM](prc)
+  )
+
+template TabCtrl_GetRowCount*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, TCM_GETROWCOUNT, 0, 0)
+
+template TabCtrl_GetToolTips*(hwnd: HWND): HWND =
+  discardable HWND SendMessage(hwnd, TCM_GETTOOLTIPS, 0, 0)
+
+template TabCtrl_GetUnicodeFormat*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, TCM_GETUNICODEFORMAT, 0, 0)
+
+template TabCtrl_HighlightItem*(hwnd: HWND, i: INT, fHighlight: WORD): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, TCM_HIGHLIGHTITEM, cast[WPARAM](i), MAKELONG(fHighlight, 0)
+  )
+
+template TabCtrl_HitTest*(hwnd: HWND, pinfo: LPTCHITTESTINFO): int32 =
+  discardable int32 SendMessage(hwnd, TCM_HITTEST, 0, cast[LPARAM](pinfo))
+
 when winimUnicode:
-  const
-    TCM_INSERTITEM* = TCM_INSERTITEMW
+  const TCM_INSERTITEM* = TCM_INSERTITEMW
+when winimAnsi:
+  const TCM_INSERTITEM* = TCM_INSERTITEMA
+template TabCtrl_InsertItem*(hwnd: HWND, iItem: int32, pitem: LPTCITEM): int32 =
+  discardable int32 SendMessage(
+    hwnd, TCM_INSERTITEM, cast[WPARAM](iItem), cast[LPARAM](pitem)
+  )
+
+template TabCtrl_RemoveImage*(hwnd: HWND, i: int32): void =
+  SendMessage(hwnd, TCM_REMOVEIMAGE, cast[WPARAM](i), 0)
+
+template TabCtrl_SetCurFocus*(hwnd: HWND, i: int32): void =
+  SendMessage(hwnd, TCM_SETCURFOCUS, cast[WPARAM](i), 0)
+
+template TabCtrl_SetCurSel*(hwnd: HWND, i: int32): int32 =
+  discardable int32 SendMessage(hwnd, TCM_SETCURSEL, cast[WPARAM](i), 0)
+
+template TabCtrl_SetExtendedStyle*(hwnd: HWND, dw: DWORD): DWORD =
+  discardable DWORD SendMessage(hwnd, TCM_SETEXTENDEDSTYLE, 0, cast[LPARAM](dw))
+
+template TabCtrl_SetImageList*(hwnd: HWND, himl: HIMAGELIST): BOOL =
+  discardable BOOL SendMessage(hwnd, TCM_SETIMAGELIST, 0, cast[LPARAM](himl))
+
+when winimUnicode:
+  const TCM_SETITEM* = TCM_SETITEMW
 when winimAnsi:
-  const
-    TCM_INSERTITEM* = TCM_INSERTITEMA
-template TabCtrl_InsertItem*(hwnd: HWND, iItem: int32, pitem: LPTCITEM): int32 = discardable int32 SendMessage(hwnd, TCM_INSERTITEM, cast[WPARAM](iItem), cast[LPARAM](pitem))
-template TabCtrl_RemoveImage*(hwnd: HWND, i: int32): void = SendMessage(hwnd, TCM_REMOVEIMAGE, cast[WPARAM](i), 0)
-template TabCtrl_SetCurFocus*(hwnd: HWND, i: int32): void = SendMessage(hwnd, TCM_SETCURFOCUS, cast[WPARAM](i), 0)
-template TabCtrl_SetCurSel*(hwnd: HWND, i: int32): int32 = discardable int32 SendMessage(hwnd, TCM_SETCURSEL, cast[WPARAM](i), 0)
-template TabCtrl_SetExtendedStyle*(hwnd: HWND, dw: DWORD): DWORD = discardable DWORD SendMessage(hwnd, TCM_SETEXTENDEDSTYLE, 0, cast[LPARAM](dw))
-template TabCtrl_SetImageList*(hwnd: HWND, himl: HIMAGELIST): BOOL = discardable BOOL SendMessage(hwnd, TCM_SETIMAGELIST, 0, cast[LPARAM](himl))
+  const TCM_SETITEM* = TCM_SETITEMA
+template TabCtrl_SetItem*(hwnd: HWND, iItem: int32, pitem: LPTCITEM): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, TCM_SETITEM, cast[WPARAM](iItem), cast[LPARAM](pitem)
+  )
+
+template TabCtrl_SetItemExtra*(hwndTC: HWND, cb: int32): BOOL =
+  discardable BOOL SendMessage(hwndTC, TCM_SETITEMEXTRA, cast[WPARAM](cb), 0)
+
+template TabCtrl_SetItemSize*(hwnd: HWND, x: int32, y: int32): DWORD =
+  discardable DWORD SendMessage(hwnd, TCM_SETITEMSIZE, 0, MAKELPARAM(x, y))
+
+template TabCtrl_SetMinTabWidth*(hwnd: HWND, x: int32): int32 =
+  discardable int32 SendMessage(hwnd, TCM_SETMINTABWIDTH, 0, cast[LPARAM](x))
+
+template TabCtrl_SetPadding*(hwnd: HWND, cx: int32, cy: int32): void =
+  SendMessage(hwnd, TCM_SETPADDING, 0, MAKELPARAM(cx, cy))
+
+template TabCtrl_SetToolTips*(hwnd: HWND, hwndTT: HWND): void =
+  SendMessage(hwnd, TCM_SETTOOLTIPS, cast[WPARAM](hwndTT), 0)
+
+template TabCtrl_SetUnicodeFormat*(hwnd: HWND, fUnicode: BOOL): BOOL =
+  discardable BOOL SendMessage(hwnd, TCM_SETUNICODEFORMAT, cast[WPARAM](fUnicode), 0)
+
+template TreeView_CreateDragImage*(hwnd: HWND, hitem: HTREEITEM): HIMAGELIST =
+  discardable HIMAGELIST SendMessage(hwnd, TVM_CREATEDRAGIMAGE, 0, cast[LPARAM](hitem))
+
+template TreeView_DeleteAllItems*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, TVM_DELETEITEM, 0, cast[LPARAM](TVI_ROOT))
+
+template TreeView_DeleteItem*(hwnd: HWND, hitem: HTREEITEM): BOOL =
+  discardable BOOL SendMessage(hwnd, TVM_DELETEITEM, 0, cast[LPARAM](hitem))
+
 when winimUnicode:
-  const
-    TCM_SETITEM* = TCM_SETITEMW
+  const TVM_EDITLABEL* = TVM_EDITLABELW
 when winimAnsi:
-  const
-    TCM_SETITEM* = TCM_SETITEMA
-template TabCtrl_SetItem*(hwnd: HWND, iItem: int32, pitem: LPTCITEM): BOOL = discardable BOOL SendMessage(hwnd, TCM_SETITEM, cast[WPARAM](iItem), cast[LPARAM](pitem))
-template TabCtrl_SetItemExtra*(hwndTC: HWND, cb: int32): BOOL = discardable BOOL SendMessage(hwndTC, TCM_SETITEMEXTRA, cast[WPARAM](cb), 0)
-template TabCtrl_SetItemSize*(hwnd: HWND, x: int32, y: int32): DWORD = discardable DWORD SendMessage(hwnd, TCM_SETITEMSIZE, 0, MAKELPARAM(x, y))
-template TabCtrl_SetMinTabWidth*(hwnd: HWND, x: int32): int32 = discardable int32 SendMessage(hwnd, TCM_SETMINTABWIDTH, 0, cast[LPARAM](x))
-template TabCtrl_SetPadding*(hwnd: HWND, cx: int32, cy: int32): void = SendMessage(hwnd, TCM_SETPADDING, 0, MAKELPARAM(cx,cy))
-template TabCtrl_SetToolTips*(hwnd: HWND, hwndTT: HWND): void = SendMessage(hwnd, TCM_SETTOOLTIPS, cast[WPARAM](hwndTT), 0)
-template TabCtrl_SetUnicodeFormat*(hwnd: HWND, fUnicode: BOOL): BOOL = discardable BOOL SendMessage(hwnd, TCM_SETUNICODEFORMAT, cast[WPARAM](fUnicode), 0)
-template TreeView_CreateDragImage*(hwnd: HWND, hitem: HTREEITEM): HIMAGELIST = discardable HIMAGELIST SendMessage(hwnd, TVM_CREATEDRAGIMAGE, 0, cast[LPARAM](hitem))
-template TreeView_DeleteAllItems*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, TVM_DELETEITEM, 0, cast[LPARAM](TVI_ROOT))
-template TreeView_DeleteItem*(hwnd: HWND, hitem: HTREEITEM): BOOL = discardable BOOL SendMessage(hwnd, TVM_DELETEITEM, 0, cast[LPARAM](hitem))
+  const TVM_EDITLABEL* = TVM_EDITLABELA
+template TreeView_EditLabel*(hwnd: HWND, hitem: HTREEITEM): HWND =
+  discardable HWND SendMessage(hwnd, TVM_EDITLABEL, 0, cast[LPARAM](hitem))
+
+template TreeView_EndEditLabelNow*(hwnd: HWND, fCancel: BOOL): BOOL =
+  discardable BOOL SendMessage(hwnd, TVM_ENDEDITLABELNOW, cast[WPARAM](fCancel), 0)
+
+template TreeView_EnsureVisible*(hwnd: HWND, hitem: HTREEITEM): BOOL =
+  discardable BOOL SendMessage(hwnd, TVM_ENSUREVISIBLE, 0, cast[LPARAM](hitem))
+
+template TreeView_Expand*(hwnd: HWND, hitem: HTREEITEM, code: UINT): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, TVM_EXPAND, cast[WPARAM](code), cast[LPARAM](hitem)
+  )
+
+template TreeView_GetBkColor*(hwnd: HWND): COLORREF =
+  discardable COLORREF SendMessage(hwnd, TVM_GETBKCOLOR, 0, 0)
+
+template TreeView_GetCheckState*(hwnd: HWND, hti: HTREEITEM): UINT =
+  discardable UINT(
+    (SendMessage(hwnd, TVM_GETITEMSTATE, cast[WPARAM](hti), TVIS_STATEIMAGEMASK) shr 12) -
+      1
+  )
+
+template TreeView_GetNextItem*(hwnd: HWND, hitem: HTREEITEM, code: UINT): HTREEITEM =
+  discardable HTREEITEM SendMessage(
+    hwnd, TVM_GETNEXTITEM, cast[WPARAM](code), cast[LPARAM](hitem)
+  )
+
+template TreeView_GetChild*(hwnd: HWND, hitem: HTREEITEM): HTREEITEM =
+  TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD)
+
+template TreeView_GetCount*(hwnd: HWND): UINT =
+  discardable UINT SendMessage(hwnd, TVM_GETCOUNT, 0, 0)
+
+template TreeView_GetDropHilight*(hwnd: HWND): HTREEITEM =
+  TreeView_GetNextItem(hwnd, 0, TVGN_DROPHILITE)
+
+template TreeView_GetEditControl*(hwnd: HWND): HWND =
+  discardable HWND SendMessage(hwnd, TVM_GETEDITCONTROL, 0, 0)
+
+template TreeView_GetExtendedStyle*(hwnd: HWND): DWORD =
+  discardable DWORD SendMessage(hwnd, TVM_GETEXTENDEDSTYLE, 0, 0)
+
+template TreeView_GetFirstVisible*(hwnd: HWND): HTREEITEM =
+  TreeView_GetNextItem(hwnd, 0, TVGN_FIRSTVISIBLE)
+
+template TreeView_GetImageList*(hwnd: HWND, iImage: INT): HIMAGELIST =
+  discardable HIMAGELIST SendMessage(hwnd, TVM_GETIMAGELIST, cast[WPARAM](iImage), 0)
+
+template TreeView_GetIndent*(hwnd: HWND): UINT =
+  discardable UINT SendMessage(hwnd, TVM_GETINDENT, 0, 0)
+
+template TreeView_GetInsertMarkColor*(hwnd: HWND): COLORREF =
+  discardable COLORREF SendMessage(hwnd, TVM_GETINSERTMARKCOLOR, 0, 0)
+
 when winimUnicode:
-  const
-    TVM_EDITLABEL* = TVM_EDITLABELW
+  const TVM_GETISEARCHSTRING* = TVM_GETISEARCHSTRINGW
 when winimAnsi:
-  const
-    TVM_EDITLABEL* = TVM_EDITLABELA
-template TreeView_EditLabel*(hwnd: HWND, hitem: HTREEITEM): HWND = discardable HWND SendMessage(hwnd, TVM_EDITLABEL, 0, cast[LPARAM](hitem))
-template TreeView_EndEditLabelNow*(hwnd: HWND, fCancel: BOOL): BOOL = discardable BOOL SendMessage(hwnd, TVM_ENDEDITLABELNOW, cast[WPARAM](fCancel), 0)
-template TreeView_EnsureVisible*(hwnd: HWND, hitem: HTREEITEM): BOOL = discardable BOOL SendMessage(hwnd, TVM_ENSUREVISIBLE, 0, cast[LPARAM](hitem))
-template TreeView_Expand*(hwnd: HWND, hitem: HTREEITEM, code: UINT): BOOL = discardable BOOL SendMessage(hwnd, TVM_EXPAND, cast[WPARAM](code), cast[LPARAM](hitem))
-template TreeView_GetBkColor*(hwnd: HWND): COLORREF = discardable COLORREF SendMessage(hwnd, TVM_GETBKCOLOR, 0, 0)
-template TreeView_GetCheckState*(hwnd: HWND, hti: HTREEITEM): UINT = discardable UINT((SendMessage(hwnd, TVM_GETITEMSTATE, cast[WPARAM](hti), TVIS_STATEIMAGEMASK) shr 12) - 1)
-template TreeView_GetNextItem*(hwnd: HWND, hitem: HTREEITEM, code: UINT): HTREEITEM = discardable HTREEITEM SendMessage(hwnd, TVM_GETNEXTITEM, cast[WPARAM](code), cast[LPARAM](hitem))
-template TreeView_GetChild*(hwnd: HWND, hitem: HTREEITEM): HTREEITEM = TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD)
-template TreeView_GetCount*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, TVM_GETCOUNT, 0, 0)
-template TreeView_GetDropHilight*(hwnd: HWND): HTREEITEM = TreeView_GetNextItem(hwnd, 0, TVGN_DROPHILITE)
-template TreeView_GetEditControl*(hwnd: HWND): HWND = discardable HWND SendMessage(hwnd, TVM_GETEDITCONTROL, 0, 0)
-template TreeView_GetExtendedStyle*(hwnd: HWND): DWORD = discardable DWORD SendMessage(hwnd, TVM_GETEXTENDEDSTYLE, 0, 0)
-template TreeView_GetFirstVisible*(hwnd: HWND): HTREEITEM = TreeView_GetNextItem(hwnd, 0, TVGN_FIRSTVISIBLE)
-template TreeView_GetImageList*(hwnd: HWND, iImage: INT): HIMAGELIST = discardable HIMAGELIST SendMessage(hwnd, TVM_GETIMAGELIST, cast[WPARAM](iImage), 0)
-template TreeView_GetIndent*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, TVM_GETINDENT, 0, 0)
-template TreeView_GetInsertMarkColor*(hwnd: HWND): COLORREF = discardable COLORREF SendMessage(hwnd, TVM_GETINSERTMARKCOLOR, 0, 0)
+  const TVM_GETISEARCHSTRING* = TVM_GETISEARCHSTRINGA
+template TreeView_GetISearchString*(hwndTV: HWND, lpsz: LPTSTR): BOOL =
+  discardable BOOL SendMessage(hwndTV, TVM_GETISEARCHSTRING, 0, cast[LPARAM](lpsz))
+
 when winimUnicode:
-  const
-    TVM_GETISEARCHSTRING* = TVM_GETISEARCHSTRINGW
+  type LPTVITEM* = LPTVITEMW
+when winimAnsi:
+  type LPTVITEM* = LPTVITEMA
+when winimUnicode:
+  const TVM_GETITEM* = TVM_GETITEMW
 when winimAnsi:
-  const
-    TVM_GETISEARCHSTRING* = TVM_GETISEARCHSTRINGA
-template TreeView_GetISearchString*(hwndTV: HWND, lpsz: LPTSTR): BOOL = discardable BOOL SendMessage(hwndTV, TVM_GETISEARCHSTRING, 0, cast[LPARAM](lpsz))
+  const TVM_GETITEM* = TVM_GETITEMA
+template TreeView_GetItem*(hwnd: HWND, pitem: LPTVITEM): BOOL =
+  discardable BOOL SendMessage(hwnd, TVM_GETITEM, 0, cast[LPARAM](pitem))
+
+template TreeView_GetItemHeight*(hwnd: HWND): int32 =
+  discardable int32 SendMessage(hwnd, TVM_GETITEMHEIGHT, 0, 0)
+
+template TreeView_GetItemPartRect*(
+    hwnd: HWND, hitem: HTREEITEM, pRect: ptr RECT, pPartID: TVITEMPART
+): BOOL =
+  (
+    var info = TVGETITEMPARTRECTINFO(hti: hItem, prc: pRect, partID: pPartID)
+    discardable BOOL SendMessage(hwnd, TVM_GETITEMPARTRECT, 0, cast[LPARAM](addr info))
+  )
+
+template TreeView_GetItemRect*(
+    hwnd: HWND, hitem: HTREEITEM, prc: LPRECT, fItemRect: BOOL
+): BOOL =
+  (;
+    cast[ptr HTREEITEM](prc)[] = hitem
+    discardable BOOL SendMessage(
+      hwnd, TVM_GETITEMRECT, cast[WPARAM](fItemRect), cast[LPARAM](prc)
+    )
+  )
+
+template TreeView_GetItemState*(hwndTV: HWND, hti: HTREEITEM, mask: UINT): UINT =
+  discardable UINT SendMessage(
+    hwndTV, TVM_GETITEMSTATE, cast[WPARAM](hti), cast[LPARAM](mask)
+  )
+
+template TreeView_GetLastVisible*(hwnd: HWND): HTREEITEM =
+  TreeView_GetNextItem(hwnd, 0, TVGN_LASTVISIBLE)
+
+template TreeView_GetLineColor*(hwnd: HWND): COLORREF =
+  discardable COLORREF SendMessage(hwnd, TVM_GETLINECOLOR, 0, 0)
+
+template TreeView_GetNextSelected*(hwnd: HWND, hitem: HTREEITEM): HTREEITEM =
+  TreeView_GetNextItem (hwnd, hitem, TVGN_NEXTSELECTED)
+
+template TreeView_GetNextSibling*(hwnd: HWND, hitem: HTREEITEM): HTREEITEM =
+  TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT)
+
+template TreeView_GetNextVisible*(hwnd: HWND, hitem: HTREEITEM): HTREEITEM =
+  TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE)
+
+template TreeView_GetParent*(hwnd: HWND, hitem: HTREEITEM): HTREEITEM =
+  TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT)
+
+template TreeView_GetPrevSibling*(hwnd: HWND, hitem: HTREEITEM): HTREEITEM =
+  TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS)
+
+template TreeView_GetPrevVisible*(hwnd: HWND, hitem: HTREEITEM): HTREEITEM =
+  TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE)
+
+template TreeView_GetRoot*(hwnd: HWND): HTREEITEM =
+  TreeView_GetNextItem(hwnd, 0, TVGN_ROOT)
+
+template TreeView_GetScrollTime*(hwnd: HWND): UINT =
+  discardable UINT SendMessage(hwnd, TVM_GETSCROLLTIME, 0, 0)
+
+template TreeView_GetSelectedCount*(hwnd: HWND): DWORD =
+  discardable DWORD SendMessage(hwnd, TVM_GETSELECTEDCOUNT, 0, 0)
+
+template TreeView_GetSelection*(hwnd: HWND): HTREEITEM =
+  TreeView_GetNextItem(hwnd, 0, TVGN_CARET)
+
+template TreeView_GetTextColor*(hwnd: HWND): COLORREF =
+  discardable COLORREF SendMessage(hwnd, TVM_GETTEXTCOLOR, 0, 0)
+
+template TreeView_GetToolTips*(hwnd: HWND): HWND =
+  discardable HWND SendMessage(hwnd, TVM_GETTOOLTIPS, 0, 0)
+
+template TreeView_GetUnicodeFormat*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, TVM_GETUNICODEFORMAT, 0, 0)
+
+template TreeView_GetVisibleCount*(hwnd: HWND): UINT =
+  discardable UINT SendMessage(hwnd, TVM_GETVISIBLECOUNT, 0, 0)
+
+template TreeView_HitTest*(hwnd: HWND, lpht: LPTVHITTESTINFO): HTREEITEM =
+  discardable HTREEITEM SendMessage(hwnd, TVM_HITTEST, 0, cast[LPARAM](lpht))
+
 when winimUnicode:
-  type
-    LPTVITEM* = LPTVITEMW
-when winimAnsi:
-  type
-    LPTVITEM* = LPTVITEMA
-when winimUnicode:
-  const
-    TVM_GETITEM* = TVM_GETITEMW
+  type LPTVINSERTSTRUCT* = LPTVINSERTSTRUCTW
 when winimAnsi:
-  const
-    TVM_GETITEM* = TVM_GETITEMA
-template TreeView_GetItem*(hwnd: HWND, pitem: LPTVITEM): BOOL = discardable BOOL SendMessage(hwnd, TVM_GETITEM, 0, cast[LPARAM](pitem))
-template TreeView_GetItemHeight*(hwnd: HWND): int32 = discardable int32 SendMessage(hwnd, TVM_GETITEMHEIGHT, 0, 0)
-template TreeView_GetItemPartRect*(hwnd: HWND, hitem: HTREEITEM, pRect: ptr RECT, pPartID: TVITEMPART): BOOL = (var info = TVGETITEMPARTRECTINFO(hti: hItem, prc: pRect, partID: pPartID); discardable BOOL SendMessage(hwnd, TVM_GETITEMPARTRECT, 0, cast[LPARAM](addr info)))
-template TreeView_GetItemRect*(hwnd: HWND, hitem: HTREEITEM, prc: LPRECT, fItemRect: BOOL): BOOL = (cast[ptr HTREEITEM](prc)[] = hitem; discardable BOOL SendMessage(hwnd, TVM_GETITEMRECT, cast[WPARAM](fItemRect), cast[LPARAM](prc)))
-template TreeView_GetItemState*(hwndTV: HWND, hti: HTREEITEM, mask: UINT): UINT = discardable UINT SendMessage(hwndTV, TVM_GETITEMSTATE, cast[WPARAM](hti), cast[LPARAM](mask))
-template TreeView_GetLastVisible*(hwnd: HWND): HTREEITEM = TreeView_GetNextItem(hwnd, 0, TVGN_LASTVISIBLE)
-template TreeView_GetLineColor*(hwnd: HWND): COLORREF = discardable COLORREF SendMessage(hwnd, TVM_GETLINECOLOR, 0, 0)
-template TreeView_GetNextSelected*(hwnd: HWND,  hitem: HTREEITEM): HTREEITEM = TreeView_GetNextItem (hwnd, hitem, TVGN_NEXTSELECTED)
-template TreeView_GetNextSibling*(hwnd: HWND, hitem: HTREEITEM): HTREEITEM = TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT)
-template TreeView_GetNextVisible*(hwnd: HWND, hitem: HTREEITEM): HTREEITEM = TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE)
-template TreeView_GetParent*(hwnd: HWND, hitem: HTREEITEM): HTREEITEM = TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT)
-template TreeView_GetPrevSibling*(hwnd: HWND, hitem: HTREEITEM): HTREEITEM = TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS)
-template TreeView_GetPrevVisible*(hwnd: HWND, hitem: HTREEITEM): HTREEITEM = TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE)
-template TreeView_GetRoot*(hwnd: HWND): HTREEITEM = TreeView_GetNextItem(hwnd, 0, TVGN_ROOT)
-template TreeView_GetScrollTime*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, TVM_GETSCROLLTIME, 0, 0)
-template TreeView_GetSelectedCount*(hwnd: HWND): DWORD = discardable DWORD SendMessage(hwnd, TVM_GETSELECTEDCOUNT, 0, 0)
-template TreeView_GetSelection*(hwnd: HWND): HTREEITEM = TreeView_GetNextItem(hwnd, 0, TVGN_CARET)
-template TreeView_GetTextColor*(hwnd: HWND): COLORREF = discardable COLORREF SendMessage(hwnd, TVM_GETTEXTCOLOR, 0, 0)
-template TreeView_GetToolTips*(hwnd: HWND): HWND = discardable HWND SendMessage(hwnd, TVM_GETTOOLTIPS, 0, 0)
-template TreeView_GetUnicodeFormat*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, TVM_GETUNICODEFORMAT, 0, 0)
-template TreeView_GetVisibleCount*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, TVM_GETVISIBLECOUNT, 0, 0)
-template TreeView_HitTest*(hwnd: HWND, lpht: LPTVHITTESTINFO): HTREEITEM = discardable HTREEITEM SendMessage(hwnd, TVM_HITTEST, 0, cast[LPARAM](lpht))
+  type LPTVINSERTSTRUCT* = LPTVINSERTSTRUCTA
 when winimUnicode:
-  type
-    LPTVINSERTSTRUCT* = LPTVINSERTSTRUCTW
+  const TVM_INSERTITEM* = TVM_INSERTITEMW
 when winimAnsi:
-  type
-    LPTVINSERTSTRUCT* = LPTVINSERTSTRUCTA
+  const TVM_INSERTITEM* = TVM_INSERTITEMA
+template TreeView_InsertItem*(hwnd: HWND, lpis: LPTVINSERTSTRUCT): HTREEITEM =
+  discardable HTREEITEM SendMessage(hwnd, TVM_INSERTITEM, 0, cast[LPARAM](lpis))
+
+template TreeView_MapAccIDToHTREEITEM*(hwnd: HWND, id: UINT): HTREEITEM =
+  discardable HTREEITEM SendMessage(hwnd, TVM_MAPACCIDTOHTREEITEM, cast[WPARAM](id), 0)
+
+template TreeView_MapHTREEITEMToAccID*(hwnd: HWND, htreeitem: HTREEITEM): UINT =
+  discardable UINT SendMessage(
+    hwnd, TVM_MAPHTREEITEMTOACCID, cast[WPARAM](htreeitem), 0
+  )
+
+template TreeView_Select*(hwnd: HWND, hitem: HTREEITEM, code: UINT): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, TVM_SELECTITEM, cast[WPARAM](code), cast[LPARAM](hitem)
+  )
+
+template TreeView_SelectDropTarget*(hwnd: HWND, hitem: HTREEITEM): BOOL =
+  TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
+
+template TreeView_SelectItem*(hwnd: HWND, hitem: HTREEITEM): BOOL =
+  TreeView_Select(hwnd, hitem, TVGN_CARET)
+
+template TreeView_SelectSetFirstVisible*(hwnd: HWND, hitem: HTREEITEM): BOOL =
+  TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
+
+template TreeView_SetAutoScrollInfo*(
+    hwnd: HWND, uPixPerSec: UINT, uUpdateTime: UINT
+): LRESULT =
+  discardable LRESULT SendMessage(
+    hwnd, TVM_SETAUTOSCROLLINFO, cast[WPARAM](uPixPerSec), cast[LPARAM](uUpdateTime)
+  )
+
+template TreeView_SetBkColor*(hwnd: HWND, clr: COLORREF): COLORREF =
+  discardable COLORREF SendMessage(hwnd, TVM_SETBKCOLOR, 0, cast[LPARAM](clr))
+
+template TreeView_SetBorder*(
+    hwnd: HWND, dwFlags: DWORD, xBorder: SHORT, yBorder: SHORT
+): int32 =
+  discardable int32 SendMessage(
+    hwnd, TVM_SETBORDER, cast[WPARAM](dwFlags), MAKELPARAM(xBorder, yBorder)
+  )
+
 when winimUnicode:
-  const
-    TVM_INSERTITEM* = TVM_INSERTITEMW
+  type TVITEM* = TVITEMW
 when winimAnsi:
-  const
-    TVM_INSERTITEM* = TVM_INSERTITEMA
-template TreeView_InsertItem*(hwnd: HWND, lpis: LPTVINSERTSTRUCT): HTREEITEM = discardable HTREEITEM SendMessage(hwnd, TVM_INSERTITEM, 0, cast[LPARAM](lpis))
-template TreeView_MapAccIDToHTREEITEM*(hwnd: HWND, id: UINT): HTREEITEM = discardable HTREEITEM SendMessage(hwnd, TVM_MAPACCIDTOHTREEITEM, cast[WPARAM](id), 0)
-template TreeView_MapHTREEITEMToAccID*(hwnd: HWND, htreeitem: HTREEITEM): UINT = discardable UINT SendMessage(hwnd, TVM_MAPHTREEITEMTOACCID, cast[WPARAM](htreeitem), 0)
-template TreeView_Select*(hwnd: HWND, hitem: HTREEITEM, code: UINT): BOOL = discardable BOOL SendMessage(hwnd, TVM_SELECTITEM, cast[WPARAM](code), cast[LPARAM](hitem))
-template TreeView_SelectDropTarget*(hwnd: HWND, hitem: HTREEITEM): BOOL = TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
-template TreeView_SelectItem*(hwnd: HWND, hitem: HTREEITEM): BOOL = TreeView_Select(hwnd, hitem, TVGN_CARET)
-template TreeView_SelectSetFirstVisible*(hwnd: HWND, hitem: HTREEITEM): BOOL = TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
-template TreeView_SetAutoScrollInfo*(hwnd: HWND, uPixPerSec: UINT, uUpdateTime: UINT): LRESULT = discardable LRESULT SendMessage(hwnd, TVM_SETAUTOSCROLLINFO, cast[WPARAM](uPixPerSec), cast[LPARAM](uUpdateTime))
-template TreeView_SetBkColor*(hwnd: HWND, clr: COLORREF): COLORREF = discardable COLORREF SendMessage(hwnd, TVM_SETBKCOLOR, 0, cast[LPARAM](clr))
-template TreeView_SetBorder*(hwnd: HWND, dwFlags: DWORD, xBorder: SHORT, yBorder: SHORT): int32 = discardable int32 SendMessage(hwnd, TVM_SETBORDER, cast[WPARAM](dwFlags), MAKELPARAM(xBorder, yBorder))
+  type TVITEM* = TVITEMA
 when winimUnicode:
-  type
-    TVITEM* = TVITEMW
-when winimAnsi:
-  type
-    TVITEM* = TVITEMA
-when winimUnicode:
-  const
-    TVM_SETITEM* = TVM_SETITEMW
+  const TVM_SETITEM* = TVM_SETITEMW
 when winimAnsi:
-  const
-    TVM_SETITEM* = TVM_SETITEMA
-template TreeView_SetItemState*(hwnd: HWND, hti: HTREEITEM, data: UINT, m: UINT): UINT = (var tvi = TVITEM(mask: TVIF_STATE, hItem: hti, stateMask: m, state: data); discardable UINT SendMessage(hwnd, TVM_SETITEM, 0, cast[LPARAM](addr tvi)))
-template TreeView_SetCheckState*(hwnd: HWND, hti: HTREEITEM, fCheck: BOOL): UINT = TreeView_SetItemState(hwnd, hti, INDEXTOSTATEIMAGEMASK(if bool fCheck:2 else:1), TVIS_STATEIMAGEMASK)
-template TreeView_SetExtendedStyle*(hwnd: HWND, dw: DWORD, mask: UINT): HRESULT = discardable HRESULT SendMessage(hwnd, TVM_SETEXTENDEDSTYLE, cast[WPARAM](mask), cast[LPARAM](dw))
-template TreeView_SetHot*(hwnd: HWND, hitem: HTREEITEM): LRESULT = discardable LRESULT SendMessage(hwnd, TVM_SETHOT, 0, cast[LPARAM](hitem))
-template TreeView_SetImageList*(hwnd: HWND, himl: HIMAGELIST, iImage: INT): HIMAGELIST = discardable HIMAGELIST SendMessage(hwnd, TVM_SETIMAGELIST, cast[WPARAM](iImage), cast[LPARAM](himl))
-template TreeView_SetIndent*(hwnd: HWND, indent: INT): BOOL = discardable BOOL SendMessage(hwnd, TVM_SETINDENT, cast[WPARAM](indent), 0)
-template TreeView_SetInsertMark*(hwnd: HWND, hItem: HTREEITEM, fAfter: BOOL): BOOL = discardable BOOL SendMessage(hwnd, TVM_SETINSERTMARK, cast[WPARAM](fAfter), cast[LPARAM](hItem))
-template TreeView_SetInsertMarkColor*(hwnd: HWND, clr: COLORREF): COLORREF = discardable COLORREF SendMessage(hwnd, TVM_SETINSERTMARKCOLOR, 0, cast[LPARAM](clr))
-template TreeView_SetItem*(hwnd: HWND, pitem: LPTVITEM): BOOL = discardable BOOL SendMessage(hwnd, TVM_SETITEM, 0, cast[LPARAM](pitem))
-template TreeView_SetItemHeight*(hwnd: HWND, iHeight: SHORT): int32 = discardable int32 SendMessage(hwnd, TVM_SETITEMHEIGHT, cast[WPARAM](iHeight), 0)
-template TreeView_SetLineColor*(hwnd: HWND, clr: COLORREF): COLORREF = discardable COLORREF SendMessage(hwnd, TVM_SETLINECOLOR, 0, cast[LPARAM](clr))
-template TreeView_SetScrollTime*(hwnd: HWND, uTime: UINT): UINT = discardable UINT SendMessage(hwnd, TVM_SETSCROLLTIME, cast[WPARAM](uTime), 0)
-template TreeView_SetTextColor*(hwnd: HWND, clr: COLORREF): COLORREF = discardable COLORREF SendMessage(hwnd, TVM_SETTEXTCOLOR, 0, cast[LPARAM](clr))
-template TreeView_SetToolTips*(hwnd: HWND, hwndTT: HWND): HWND = discardable HWND SendMessage(hwnd, TVM_SETTOOLTIPS, cast[WPARAM](hwndTT), 0)
-template TreeView_SetUnicodeFormat*(hwnd: HWND, fUnicode: BOOL): BOOL = discardable BOOL SendMessage(hwnd, TVM_SETUNICODEFORMAT, cast[WPARAM](fUnicode), 0)
-template TreeView_ShowInfoTip*(hwnd: HWND, hitem: HTREEITEM): DWORD = discardable DWORD SendMessage(hwnd, TVM_SHOWINFOTIP, 0, cast[LPARAM](hitem))
-template TreeView_SortChildren*(hwnd: HWND, hitem: HTREEITEM, recurse: BOOL): BOOL = discardable BOOL SendMessage(hwnd, TVM_SORTCHILDREN, cast[WPARAM](recurse), cast[LPARAM](hitem))
-template TreeView_SortChildrenCB*(hwnd: HWND, psort: LPTVSORTCB, recurse: BOOL): BOOL = discardable BOOL SendMessage(hwnd, TVM_SORTCHILDRENCB, cast[WPARAM](recurse), cast[LPARAM](psort))
-proc `pszTemplate=`*(self: var PROPSHEETPAGEA, x: LPCSTR) {.inline.} = self.union1.pszTemplate = x
-proc pszTemplate*(self: PROPSHEETPAGEA): LPCSTR {.inline.} = self.union1.pszTemplate
-proc pszTemplate*(self: var PROPSHEETPAGEA): var LPCSTR {.inline.} = self.union1.pszTemplate
-proc `pResource=`*(self: var PROPSHEETPAGEA, x: LPCDLGTEMPLATE) {.inline.} = self.union1.pResource = x
-proc pResource*(self: PROPSHEETPAGEA): LPCDLGTEMPLATE {.inline.} = self.union1.pResource
-proc pResource*(self: var PROPSHEETPAGEA): var LPCDLGTEMPLATE {.inline.} = self.union1.pResource
-proc `hIcon=`*(self: var PROPSHEETPAGEA, x: HICON) {.inline.} = self.union2.hIcon = x
-proc hIcon*(self: PROPSHEETPAGEA): HICON {.inline.} = self.union2.hIcon
-proc hIcon*(self: var PROPSHEETPAGEA): var HICON {.inline.} = self.union2.hIcon
-proc `pszIcon=`*(self: var PROPSHEETPAGEA, x: LPCSTR) {.inline.} = self.union2.pszIcon = x
-proc pszIcon*(self: PROPSHEETPAGEA): LPCSTR {.inline.} = self.union2.pszIcon
-proc pszIcon*(self: var PROPSHEETPAGEA): var LPCSTR {.inline.} = self.union2.pszIcon
-proc `pszTemplate=`*(self: var PROPSHEETPAGEW, x: LPCWSTR) {.inline.} = self.union1.pszTemplate = x
-proc pszTemplate*(self: PROPSHEETPAGEW): LPCWSTR {.inline.} = self.union1.pszTemplate
-proc pszTemplate*(self: var PROPSHEETPAGEW): var LPCWSTR {.inline.} = self.union1.pszTemplate
-proc `pResource=`*(self: var PROPSHEETPAGEW, x: LPCDLGTEMPLATE) {.inline.} = self.union1.pResource = x
-proc pResource*(self: PROPSHEETPAGEW): LPCDLGTEMPLATE {.inline.} = self.union1.pResource
-proc pResource*(self: var PROPSHEETPAGEW): var LPCDLGTEMPLATE {.inline.} = self.union1.pResource
-proc `hIcon=`*(self: var PROPSHEETPAGEW, x: HICON) {.inline.} = self.union2.hIcon = x
-proc hIcon*(self: PROPSHEETPAGEW): HICON {.inline.} = self.union2.hIcon
-proc hIcon*(self: var PROPSHEETPAGEW): var HICON {.inline.} = self.union2.hIcon
-proc `pszIcon=`*(self: var PROPSHEETPAGEW, x: LPCWSTR) {.inline.} = self.union2.pszIcon = x
-proc pszIcon*(self: PROPSHEETPAGEW): LPCWSTR {.inline.} = self.union2.pszIcon
-proc pszIcon*(self: var PROPSHEETPAGEW): var LPCWSTR {.inline.} = self.union2.pszIcon
-proc `hIcon=`*(self: var PROPSHEETHEADERA, x: HICON) {.inline.} = self.union1.hIcon = x
-proc hIcon*(self: PROPSHEETHEADERA): HICON {.inline.} = self.union1.hIcon
-proc hIcon*(self: var PROPSHEETHEADERA): var HICON {.inline.} = self.union1.hIcon
-proc `pszIcon=`*(self: var PROPSHEETHEADERA, x: LPCSTR) {.inline.} = self.union1.pszIcon = x
-proc pszIcon*(self: PROPSHEETHEADERA): LPCSTR {.inline.} = self.union1.pszIcon
-proc pszIcon*(self: var PROPSHEETHEADERA): var LPCSTR {.inline.} = self.union1.pszIcon
-proc `nStartPage=`*(self: var PROPSHEETHEADERA, x: UINT) {.inline.} = self.union2.nStartPage = x
-proc nStartPage*(self: PROPSHEETHEADERA): UINT {.inline.} = self.union2.nStartPage
-proc nStartPage*(self: var PROPSHEETHEADERA): var UINT {.inline.} = self.union2.nStartPage
-proc `pStartPage=`*(self: var PROPSHEETHEADERA, x: LPCSTR) {.inline.} = self.union2.pStartPage = x
-proc pStartPage*(self: PROPSHEETHEADERA): LPCSTR {.inline.} = self.union2.pStartPage
-proc pStartPage*(self: var PROPSHEETHEADERA): var LPCSTR {.inline.} = self.union2.pStartPage
-proc `ppsp=`*(self: var PROPSHEETHEADERA, x: LPCPROPSHEETPAGEA) {.inline.} = self.union3.ppsp = x
-proc ppsp*(self: PROPSHEETHEADERA): LPCPROPSHEETPAGEA {.inline.} = self.union3.ppsp
-proc ppsp*(self: var PROPSHEETHEADERA): var LPCPROPSHEETPAGEA {.inline.} = self.union3.ppsp
-proc `phpage=`*(self: var PROPSHEETHEADERA, x: ptr HPROPSHEETPAGE) {.inline.} = self.union3.phpage = x
-proc phpage*(self: PROPSHEETHEADERA): ptr HPROPSHEETPAGE {.inline.} = self.union3.phpage
-proc phpage*(self: var PROPSHEETHEADERA): var ptr HPROPSHEETPAGE {.inline.} = self.union3.phpage
-proc `hbmWatermark=`*(self: var PROPSHEETHEADERA, x: HBITMAP) {.inline.} = self.union4.hbmWatermark = x
-proc hbmWatermark*(self: PROPSHEETHEADERA): HBITMAP {.inline.} = self.union4.hbmWatermark
-proc hbmWatermark*(self: var PROPSHEETHEADERA): var HBITMAP {.inline.} = self.union4.hbmWatermark
-proc `pszbmWatermark=`*(self: var PROPSHEETHEADERA, x: LPCSTR) {.inline.} = self.union4.pszbmWatermark = x
-proc pszbmWatermark*(self: PROPSHEETHEADERA): LPCSTR {.inline.} = self.union4.pszbmWatermark
-proc pszbmWatermark*(self: var PROPSHEETHEADERA): var LPCSTR {.inline.} = self.union4.pszbmWatermark
-proc `hbmHeader=`*(self: var PROPSHEETHEADERA, x: HBITMAP) {.inline.} = self.union5.hbmHeader = x
-proc hbmHeader*(self: PROPSHEETHEADERA): HBITMAP {.inline.} = self.union5.hbmHeader
-proc hbmHeader*(self: var PROPSHEETHEADERA): var HBITMAP {.inline.} = self.union5.hbmHeader
-proc `pszbmHeader=`*(self: var PROPSHEETHEADERA, x: LPCSTR) {.inline.} = self.union5.pszbmHeader = x
-proc pszbmHeader*(self: PROPSHEETHEADERA): LPCSTR {.inline.} = self.union5.pszbmHeader
-proc pszbmHeader*(self: var PROPSHEETHEADERA): var LPCSTR {.inline.} = self.union5.pszbmHeader
-proc `hIcon=`*(self: var PROPSHEETHEADERW, x: HICON) {.inline.} = self.union1.hIcon = x
-proc hIcon*(self: PROPSHEETHEADERW): HICON {.inline.} = self.union1.hIcon
-proc hIcon*(self: var PROPSHEETHEADERW): var HICON {.inline.} = self.union1.hIcon
-proc `pszIcon=`*(self: var PROPSHEETHEADERW, x: LPCWSTR) {.inline.} = self.union1.pszIcon = x
-proc pszIcon*(self: PROPSHEETHEADERW): LPCWSTR {.inline.} = self.union1.pszIcon
-proc pszIcon*(self: var PROPSHEETHEADERW): var LPCWSTR {.inline.} = self.union1.pszIcon
-proc `nStartPage=`*(self: var PROPSHEETHEADERW, x: UINT) {.inline.} = self.union2.nStartPage = x
-proc nStartPage*(self: PROPSHEETHEADERW): UINT {.inline.} = self.union2.nStartPage
-proc nStartPage*(self: var PROPSHEETHEADERW): var UINT {.inline.} = self.union2.nStartPage
-proc `pStartPage=`*(self: var PROPSHEETHEADERW, x: LPCWSTR) {.inline.} = self.union2.pStartPage = x
-proc pStartPage*(self: PROPSHEETHEADERW): LPCWSTR {.inline.} = self.union2.pStartPage
-proc pStartPage*(self: var PROPSHEETHEADERW): var LPCWSTR {.inline.} = self.union2.pStartPage
-proc `ppsp=`*(self: var PROPSHEETHEADERW, x: LPCPROPSHEETPAGEW) {.inline.} = self.union3.ppsp = x
-proc ppsp*(self: PROPSHEETHEADERW): LPCPROPSHEETPAGEW {.inline.} = self.union3.ppsp
-proc ppsp*(self: var PROPSHEETHEADERW): var LPCPROPSHEETPAGEW {.inline.} = self.union3.ppsp
-proc `phpage=`*(self: var PROPSHEETHEADERW, x: ptr HPROPSHEETPAGE) {.inline.} = self.union3.phpage = x
-proc phpage*(self: PROPSHEETHEADERW): ptr HPROPSHEETPAGE {.inline.} = self.union3.phpage
-proc phpage*(self: var PROPSHEETHEADERW): var ptr HPROPSHEETPAGE {.inline.} = self.union3.phpage
-proc `hbmWatermark=`*(self: var PROPSHEETHEADERW, x: HBITMAP) {.inline.} = self.union4.hbmWatermark = x
-proc hbmWatermark*(self: PROPSHEETHEADERW): HBITMAP {.inline.} = self.union4.hbmWatermark
-proc hbmWatermark*(self: var PROPSHEETHEADERW): var HBITMAP {.inline.} = self.union4.hbmWatermark
-proc `pszbmWatermark=`*(self: var PROPSHEETHEADERW, x: LPCWSTR) {.inline.} = self.union4.pszbmWatermark = x
-proc pszbmWatermark*(self: PROPSHEETHEADERW): LPCWSTR {.inline.} = self.union4.pszbmWatermark
-proc pszbmWatermark*(self: var PROPSHEETHEADERW): var LPCWSTR {.inline.} = self.union4.pszbmWatermark
-proc `hbmHeader=`*(self: var PROPSHEETHEADERW, x: HBITMAP) {.inline.} = self.union5.hbmHeader = x
-proc hbmHeader*(self: PROPSHEETHEADERW): HBITMAP {.inline.} = self.union5.hbmHeader
-proc hbmHeader*(self: var PROPSHEETHEADERW): var HBITMAP {.inline.} = self.union5.hbmHeader
-proc `pszbmHeader=`*(self: var PROPSHEETHEADERW, x: LPCWSTR) {.inline.} = self.union5.pszbmHeader = x
-proc pszbmHeader*(self: PROPSHEETHEADERW): LPCWSTR {.inline.} = self.union5.pszbmHeader
-proc pszbmHeader*(self: var PROPSHEETHEADERW): var LPCWSTR {.inline.} = self.union5.pszbmHeader
-proc `itemex=`*(self: var TVINSERTSTRUCTA, x: TVITEMEXA) {.inline.} = self.union1.itemex = x
-proc itemex*(self: TVINSERTSTRUCTA): TVITEMEXA {.inline.} = self.union1.itemex
-proc itemex*(self: var TVINSERTSTRUCTA): var TVITEMEXA {.inline.} = self.union1.itemex
-proc `item=`*(self: var TVINSERTSTRUCTA, x: TV_ITEMA) {.inline.} = self.union1.item = x
-proc item*(self: TVINSERTSTRUCTA): TV_ITEMA {.inline.} = self.union1.item
-proc item*(self: var TVINSERTSTRUCTA): var TV_ITEMA {.inline.} = self.union1.item
-proc `itemex=`*(self: var TVINSERTSTRUCTW, x: TVITEMEXW) {.inline.} = self.union1.itemex = x
-proc itemex*(self: TVINSERTSTRUCTW): TVITEMEXW {.inline.} = self.union1.itemex
-proc itemex*(self: var TVINSERTSTRUCTW): var TVITEMEXW {.inline.} = self.union1.itemex
-proc `item=`*(self: var TVINSERTSTRUCTW, x: TV_ITEMW) {.inline.} = self.union1.item = x
-proc item*(self: TVINSERTSTRUCTW): TV_ITEMW {.inline.} = self.union1.item
-proc item*(self: var TVINSERTSTRUCTW): var TV_ITEMW {.inline.} = self.union1.item
-proc `hMainIcon=`*(self: var TASKDIALOGCONFIG, x: HICON) {.inline.} = self.union1.hMainIcon = x
-proc hMainIcon*(self: TASKDIALOGCONFIG): HICON {.inline.} = self.union1.hMainIcon
-proc hMainIcon*(self: var TASKDIALOGCONFIG): var HICON {.inline.} = self.union1.hMainIcon
-proc `pszMainIcon=`*(self: var TASKDIALOGCONFIG, x: PCWSTR) {.inline.} = self.union1.pszMainIcon = x
-proc pszMainIcon*(self: TASKDIALOGCONFIG): PCWSTR {.inline.} = self.union1.pszMainIcon
-proc pszMainIcon*(self: var TASKDIALOGCONFIG): var PCWSTR {.inline.} = self.union1.pszMainIcon
-proc `hFooterIcon=`*(self: var TASKDIALOGCONFIG, x: HICON) {.inline.} = self.union2.hFooterIcon = x
-proc hFooterIcon*(self: TASKDIALOGCONFIG): HICON {.inline.} = self.union2.hFooterIcon
-proc hFooterIcon*(self: var TASKDIALOGCONFIG): var HICON {.inline.} = self.union2.hFooterIcon
-proc `pszFooterIcon=`*(self: var TASKDIALOGCONFIG, x: PCWSTR) {.inline.} = self.union2.pszFooterIcon = x
-proc pszFooterIcon*(self: TASKDIALOGCONFIG): PCWSTR {.inline.} = self.union2.pszFooterIcon
-proc pszFooterIcon*(self: var TASKDIALOGCONFIG): var PCWSTR {.inline.} = self.union2.pszFooterIcon
-proc Add*(self: ptr IImageList, hbmImage: HBITMAP, hbmMask: HBITMAP, pi: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Add(self, hbmImage, hbmMask, pi)
-proc ReplaceIcon*(self: ptr IImageList, i: int32, hicon: HICON, pi: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReplaceIcon(self, i, hicon, pi)
-proc SetOverlayImage*(self: ptr IImageList, iImage: int32, iOverlay: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOverlayImage(self, iImage, iOverlay)
-proc Replace*(self: ptr IImageList, i: int32, hbmImage: HBITMAP, hbmMask: HBITMAP): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Replace(self, i, hbmImage, hbmMask)
-proc AddMasked*(self: ptr IImageList, hbmImage: HBITMAP, crMask: COLORREF, pi: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddMasked(self, hbmImage, crMask, pi)
-proc Draw*(self: ptr IImageList, pimldp: ptr IMAGELISTDRAWPARAMS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Draw(self, pimldp)
-proc Remove*(self: ptr IImageList, i: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Remove(self, i)
-proc GetIcon*(self: ptr IImageList, i: int32, flags: UINT, picon: ptr HICON): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIcon(self, i, flags, picon)
-proc GetImageInfo*(self: ptr IImageList, i: int32, pImageInfo: ptr IMAGEINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetImageInfo(self, i, pImageInfo)
-proc Copy*(self: ptr IImageList, iDst: int32, punkSrc: ptr IUnknown, iSrc: int32, uFlags: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Copy(self, iDst, punkSrc, iSrc, uFlags)
-proc Merge*(self: ptr IImageList, i1: int32, punk2: ptr IUnknown, i2: int32, dx: int32, dy: int32, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Merge(self, i1, punk2, i2, dx, dy, riid, ppv)
-proc Clone*(self: ptr IImageList, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, riid, ppv)
-proc GetImageRect*(self: ptr IImageList, i: int32, prc: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetImageRect(self, i, prc)
-proc GetIconSize*(self: ptr IImageList, cx: ptr int32, cy: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIconSize(self, cx, cy)
-proc SetIconSize*(self: ptr IImageList, cx: int32, cy: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetIconSize(self, cx, cy)
-proc GetImageCount*(self: ptr IImageList, pi: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetImageCount(self, pi)
-proc SetImageCount*(self: ptr IImageList, uNewCount: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetImageCount(self, uNewCount)
-proc SetBkColor*(self: ptr IImageList, clrBk: COLORREF, pclr: ptr COLORREF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBkColor(self, clrBk, pclr)
-proc GetBkColor*(self: ptr IImageList, pclr: ptr COLORREF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBkColor(self, pclr)
-proc BeginDrag*(self: ptr IImageList, iTrack: int32, dxHotspot: int32, dyHotspot: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeginDrag(self, iTrack, dxHotspot, dyHotspot)
-proc EndDrag*(self: ptr IImageList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EndDrag(self)
-proc DragEnter*(self: ptr IImageList, hwndLock: HWND, x: int32, y: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragEnter(self, hwndLock, x, y)
-proc DragLeave*(self: ptr IImageList, hwndLock: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragLeave(self, hwndLock)
-proc DragMove*(self: ptr IImageList, x: int32, y: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragMove(self, x, y)
-proc SetDragCursorImage*(self: ptr IImageList, punk: ptr IUnknown, iDrag: int32, dxHotspot: int32, dyHotspot: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDragCursorImage(self, punk, iDrag, dxHotspot, dyHotspot)
-proc DragShowNolock*(self: ptr IImageList, fShow: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragShowNolock(self, fShow)
-proc GetDragImage*(self: ptr IImageList, ppt: ptr POINT, pptHotspot: ptr POINT, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDragImage(self, ppt, pptHotspot, riid, ppv)
-proc GetItemFlags*(self: ptr IImageList, i: int32, dwFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemFlags(self, i, dwFlags)
-proc GetOverlayImage*(self: ptr IImageList, iOverlay: int32, piIndex: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOverlayImage(self, iOverlay, piIndex)
-proc Resize*(self: ptr IImageList2, cxNewIconSize: int32, cyNewIconSize: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Resize(self, cxNewIconSize, cyNewIconSize)
-proc GetOriginalSize*(self: ptr IImageList2, iImage: int32, dwFlags: DWORD, pcx: ptr int32, pcy: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOriginalSize(self, iImage, dwFlags, pcx, pcy)
-proc SetOriginalSize*(self: ptr IImageList2, iImage: int32, cx: int32, cy: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOriginalSize(self, iImage, cx, cy)
-proc SetCallback*(self: ptr IImageList2, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCallback(self, punk)
-proc GetCallback*(self: ptr IImageList2, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCallback(self, riid, ppv)
-proc ForceImagePresent*(self: ptr IImageList2, iImage: int32, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ForceImagePresent(self, iImage, dwFlags)
-proc DiscardImages*(self: ptr IImageList2, iFirstImage: int32, iLastImage: int32, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DiscardImages(self, iFirstImage, iLastImage, dwFlags)
-proc PreloadImages*(self: ptr IImageList2, pimldp: ptr IMAGELISTDRAWPARAMS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreloadImages(self, pimldp)
-proc GetStatistics*(self: ptr IImageList2, pils: ptr IMAGELISTSTATS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetStatistics(self, pils)
-proc Initialize*(self: ptr IImageList2, cx: int32, cy: int32, flags: UINT, cInitial: int32, cGrow: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, cx, cy, flags, cInitial, cGrow)
-proc Replace2*(self: ptr IImageList2, i: int32, hbmImage: HBITMAP, hbmMask: HBITMAP, punk: ptr IUnknown, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Replace2(self, i, hbmImage, hbmMask, punk, dwFlags)
-proc ReplaceFromImageList*(self: ptr IImageList2, i: int32, pil: ptr IImageList, iSrc: int32, punk: ptr IUnknown, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReplaceFromImageList(self, i, pil, iSrc, punk, dwFlags)
-converter winimConverterIImageListToIUnknown*(x: ptr IImageList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIImageList2ToIImageList*(x: ptr IImageList2): ptr IImageList = cast[ptr IImageList](x)
-converter winimConverterIImageList2ToIUnknown*(x: ptr IImageList2): ptr IUnknown = cast[ptr IUnknown](x)
+  const TVM_SETITEM* = TVM_SETITEMA
+template TreeView_SetItemState*(hwnd: HWND, hti: HTREEITEM, data: UINT, m: UINT): UINT =
+  (
+    var tvi = TVITEM(mask: TVIF_STATE, hItem: hti, stateMask: m, state: data)
+    discardable UINT SendMessage(hwnd, TVM_SETITEM, 0, cast[LPARAM](addr tvi))
+  )
+
+template TreeView_SetCheckState*(hwnd: HWND, hti: HTREEITEM, fCheck: BOOL): UINT =
+  TreeView_SetItemState(
+    hwnd, hti, INDEXTOSTATEIMAGEMASK(if bool fCheck: 2 else: 1), TVIS_STATEIMAGEMASK
+  )
+
+template TreeView_SetExtendedStyle*(hwnd: HWND, dw: DWORD, mask: UINT): HRESULT =
+  discardable HRESULT SendMessage(
+    hwnd, TVM_SETEXTENDEDSTYLE, cast[WPARAM](mask), cast[LPARAM](dw)
+  )
+
+template TreeView_SetHot*(hwnd: HWND, hitem: HTREEITEM): LRESULT =
+  discardable LRESULT SendMessage(hwnd, TVM_SETHOT, 0, cast[LPARAM](hitem))
+
+template TreeView_SetImageList*(hwnd: HWND, himl: HIMAGELIST, iImage: INT): HIMAGELIST =
+  discardable HIMAGELIST SendMessage(
+    hwnd, TVM_SETIMAGELIST, cast[WPARAM](iImage), cast[LPARAM](himl)
+  )
+
+template TreeView_SetIndent*(hwnd: HWND, indent: INT): BOOL =
+  discardable BOOL SendMessage(hwnd, TVM_SETINDENT, cast[WPARAM](indent), 0)
+
+template TreeView_SetInsertMark*(hwnd: HWND, hItem: HTREEITEM, fAfter: BOOL): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, TVM_SETINSERTMARK, cast[WPARAM](fAfter), cast[LPARAM](hItem)
+  )
+
+template TreeView_SetInsertMarkColor*(hwnd: HWND, clr: COLORREF): COLORREF =
+  discardable COLORREF SendMessage(hwnd, TVM_SETINSERTMARKCOLOR, 0, cast[LPARAM](clr))
+
+template TreeView_SetItem*(hwnd: HWND, pitem: LPTVITEM): BOOL =
+  discardable BOOL SendMessage(hwnd, TVM_SETITEM, 0, cast[LPARAM](pitem))
+
+template TreeView_SetItemHeight*(hwnd: HWND, iHeight: SHORT): int32 =
+  discardable int32 SendMessage(hwnd, TVM_SETITEMHEIGHT, cast[WPARAM](iHeight), 0)
+
+template TreeView_SetLineColor*(hwnd: HWND, clr: COLORREF): COLORREF =
+  discardable COLORREF SendMessage(hwnd, TVM_SETLINECOLOR, 0, cast[LPARAM](clr))
+
+template TreeView_SetScrollTime*(hwnd: HWND, uTime: UINT): UINT =
+  discardable UINT SendMessage(hwnd, TVM_SETSCROLLTIME, cast[WPARAM](uTime), 0)
+
+template TreeView_SetTextColor*(hwnd: HWND, clr: COLORREF): COLORREF =
+  discardable COLORREF SendMessage(hwnd, TVM_SETTEXTCOLOR, 0, cast[LPARAM](clr))
+
+template TreeView_SetToolTips*(hwnd: HWND, hwndTT: HWND): HWND =
+  discardable HWND SendMessage(hwnd, TVM_SETTOOLTIPS, cast[WPARAM](hwndTT), 0)
+
+template TreeView_SetUnicodeFormat*(hwnd: HWND, fUnicode: BOOL): BOOL =
+  discardable BOOL SendMessage(hwnd, TVM_SETUNICODEFORMAT, cast[WPARAM](fUnicode), 0)
+
+template TreeView_ShowInfoTip*(hwnd: HWND, hitem: HTREEITEM): DWORD =
+  discardable DWORD SendMessage(hwnd, TVM_SHOWINFOTIP, 0, cast[LPARAM](hitem))
+
+template TreeView_SortChildren*(hwnd: HWND, hitem: HTREEITEM, recurse: BOOL): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, TVM_SORTCHILDREN, cast[WPARAM](recurse), cast[LPARAM](hitem)
+  )
+
+template TreeView_SortChildrenCB*(hwnd: HWND, psort: LPTVSORTCB, recurse: BOOL): BOOL =
+  discardable BOOL SendMessage(
+    hwnd, TVM_SORTCHILDRENCB, cast[WPARAM](recurse), cast[LPARAM](psort)
+  )
+
+proc `pszTemplate=`*(self: var PROPSHEETPAGEA, x: LPCSTR) {.inline.} =
+  self.union1.pszTemplate = x
+
+proc pszTemplate*(self: PROPSHEETPAGEA): LPCSTR {.inline.} =
+  self.union1.pszTemplate
+
+proc pszTemplate*(self: var PROPSHEETPAGEA): var LPCSTR {.inline.} =
+  self.union1.pszTemplate
+
+proc `pResource=`*(self: var PROPSHEETPAGEA, x: LPCDLGTEMPLATE) {.inline.} =
+  self.union1.pResource = x
+
+proc pResource*(self: PROPSHEETPAGEA): LPCDLGTEMPLATE {.inline.} =
+  self.union1.pResource
+
+proc pResource*(self: var PROPSHEETPAGEA): var LPCDLGTEMPLATE {.inline.} =
+  self.union1.pResource
+
+proc `hIcon=`*(self: var PROPSHEETPAGEA, x: HICON) {.inline.} =
+  self.union2.hIcon = x
+
+proc hIcon*(self: PROPSHEETPAGEA): HICON {.inline.} =
+  self.union2.hIcon
+
+proc hIcon*(self: var PROPSHEETPAGEA): var HICON {.inline.} =
+  self.union2.hIcon
+
+proc `pszIcon=`*(self: var PROPSHEETPAGEA, x: LPCSTR) {.inline.} =
+  self.union2.pszIcon = x
+
+proc pszIcon*(self: PROPSHEETPAGEA): LPCSTR {.inline.} =
+  self.union2.pszIcon
+
+proc pszIcon*(self: var PROPSHEETPAGEA): var LPCSTR {.inline.} =
+  self.union2.pszIcon
+
+proc `pszTemplate=`*(self: var PROPSHEETPAGEW, x: LPCWSTR) {.inline.} =
+  self.union1.pszTemplate = x
+
+proc pszTemplate*(self: PROPSHEETPAGEW): LPCWSTR {.inline.} =
+  self.union1.pszTemplate
+
+proc pszTemplate*(self: var PROPSHEETPAGEW): var LPCWSTR {.inline.} =
+  self.union1.pszTemplate
+
+proc `pResource=`*(self: var PROPSHEETPAGEW, x: LPCDLGTEMPLATE) {.inline.} =
+  self.union1.pResource = x
+
+proc pResource*(self: PROPSHEETPAGEW): LPCDLGTEMPLATE {.inline.} =
+  self.union1.pResource
+
+proc pResource*(self: var PROPSHEETPAGEW): var LPCDLGTEMPLATE {.inline.} =
+  self.union1.pResource
+
+proc `hIcon=`*(self: var PROPSHEETPAGEW, x: HICON) {.inline.} =
+  self.union2.hIcon = x
+
+proc hIcon*(self: PROPSHEETPAGEW): HICON {.inline.} =
+  self.union2.hIcon
+
+proc hIcon*(self: var PROPSHEETPAGEW): var HICON {.inline.} =
+  self.union2.hIcon
+
+proc `pszIcon=`*(self: var PROPSHEETPAGEW, x: LPCWSTR) {.inline.} =
+  self.union2.pszIcon = x
+
+proc pszIcon*(self: PROPSHEETPAGEW): LPCWSTR {.inline.} =
+  self.union2.pszIcon
+
+proc pszIcon*(self: var PROPSHEETPAGEW): var LPCWSTR {.inline.} =
+  self.union2.pszIcon
+
+proc `hIcon=`*(self: var PROPSHEETHEADERA, x: HICON) {.inline.} =
+  self.union1.hIcon = x
+
+proc hIcon*(self: PROPSHEETHEADERA): HICON {.inline.} =
+  self.union1.hIcon
+
+proc hIcon*(self: var PROPSHEETHEADERA): var HICON {.inline.} =
+  self.union1.hIcon
+
+proc `pszIcon=`*(self: var PROPSHEETHEADERA, x: LPCSTR) {.inline.} =
+  self.union1.pszIcon = x
+
+proc pszIcon*(self: PROPSHEETHEADERA): LPCSTR {.inline.} =
+  self.union1.pszIcon
+
+proc pszIcon*(self: var PROPSHEETHEADERA): var LPCSTR {.inline.} =
+  self.union1.pszIcon
+
+proc `nStartPage=`*(self: var PROPSHEETHEADERA, x: UINT) {.inline.} =
+  self.union2.nStartPage = x
+
+proc nStartPage*(self: PROPSHEETHEADERA): UINT {.inline.} =
+  self.union2.nStartPage
+
+proc nStartPage*(self: var PROPSHEETHEADERA): var UINT {.inline.} =
+  self.union2.nStartPage
+
+proc `pStartPage=`*(self: var PROPSHEETHEADERA, x: LPCSTR) {.inline.} =
+  self.union2.pStartPage = x
+
+proc pStartPage*(self: PROPSHEETHEADERA): LPCSTR {.inline.} =
+  self.union2.pStartPage
+
+proc pStartPage*(self: var PROPSHEETHEADERA): var LPCSTR {.inline.} =
+  self.union2.pStartPage
+
+proc `ppsp=`*(self: var PROPSHEETHEADERA, x: LPCPROPSHEETPAGEA) {.inline.} =
+  self.union3.ppsp = x
+
+proc ppsp*(self: PROPSHEETHEADERA): LPCPROPSHEETPAGEA {.inline.} =
+  self.union3.ppsp
+
+proc ppsp*(self: var PROPSHEETHEADERA): var LPCPROPSHEETPAGEA {.inline.} =
+  self.union3.ppsp
+
+proc `phpage=`*(self: var PROPSHEETHEADERA, x: ptr HPROPSHEETPAGE) {.inline.} =
+  self.union3.phpage = x
+
+proc phpage*(self: PROPSHEETHEADERA): ptr HPROPSHEETPAGE {.inline.} =
+  self.union3.phpage
+
+proc phpage*(self: var PROPSHEETHEADERA): var ptr HPROPSHEETPAGE {.inline.} =
+  self.union3.phpage
+
+proc `hbmWatermark=`*(self: var PROPSHEETHEADERA, x: HBITMAP) {.inline.} =
+  self.union4.hbmWatermark = x
+
+proc hbmWatermark*(self: PROPSHEETHEADERA): HBITMAP {.inline.} =
+  self.union4.hbmWatermark
+
+proc hbmWatermark*(self: var PROPSHEETHEADERA): var HBITMAP {.inline.} =
+  self.union4.hbmWatermark
+
+proc `pszbmWatermark=`*(self: var PROPSHEETHEADERA, x: LPCSTR) {.inline.} =
+  self.union4.pszbmWatermark = x
+
+proc pszbmWatermark*(self: PROPSHEETHEADERA): LPCSTR {.inline.} =
+  self.union4.pszbmWatermark
+
+proc pszbmWatermark*(self: var PROPSHEETHEADERA): var LPCSTR {.inline.} =
+  self.union4.pszbmWatermark
+
+proc `hbmHeader=`*(self: var PROPSHEETHEADERA, x: HBITMAP) {.inline.} =
+  self.union5.hbmHeader = x
+
+proc hbmHeader*(self: PROPSHEETHEADERA): HBITMAP {.inline.} =
+  self.union5.hbmHeader
+
+proc hbmHeader*(self: var PROPSHEETHEADERA): var HBITMAP {.inline.} =
+  self.union5.hbmHeader
+
+proc `pszbmHeader=`*(self: var PROPSHEETHEADERA, x: LPCSTR) {.inline.} =
+  self.union5.pszbmHeader = x
+
+proc pszbmHeader*(self: PROPSHEETHEADERA): LPCSTR {.inline.} =
+  self.union5.pszbmHeader
+
+proc pszbmHeader*(self: var PROPSHEETHEADERA): var LPCSTR {.inline.} =
+  self.union5.pszbmHeader
+
+proc `hIcon=`*(self: var PROPSHEETHEADERW, x: HICON) {.inline.} =
+  self.union1.hIcon = x
+
+proc hIcon*(self: PROPSHEETHEADERW): HICON {.inline.} =
+  self.union1.hIcon
+
+proc hIcon*(self: var PROPSHEETHEADERW): var HICON {.inline.} =
+  self.union1.hIcon
+
+proc `pszIcon=`*(self: var PROPSHEETHEADERW, x: LPCWSTR) {.inline.} =
+  self.union1.pszIcon = x
+
+proc pszIcon*(self: PROPSHEETHEADERW): LPCWSTR {.inline.} =
+  self.union1.pszIcon
+
+proc pszIcon*(self: var PROPSHEETHEADERW): var LPCWSTR {.inline.} =
+  self.union1.pszIcon
+
+proc `nStartPage=`*(self: var PROPSHEETHEADERW, x: UINT) {.inline.} =
+  self.union2.nStartPage = x
+
+proc nStartPage*(self: PROPSHEETHEADERW): UINT {.inline.} =
+  self.union2.nStartPage
+
+proc nStartPage*(self: var PROPSHEETHEADERW): var UINT {.inline.} =
+  self.union2.nStartPage
+
+proc `pStartPage=`*(self: var PROPSHEETHEADERW, x: LPCWSTR) {.inline.} =
+  self.union2.pStartPage = x
+
+proc pStartPage*(self: PROPSHEETHEADERW): LPCWSTR {.inline.} =
+  self.union2.pStartPage
+
+proc pStartPage*(self: var PROPSHEETHEADERW): var LPCWSTR {.inline.} =
+  self.union2.pStartPage
+
+proc `ppsp=`*(self: var PROPSHEETHEADERW, x: LPCPROPSHEETPAGEW) {.inline.} =
+  self.union3.ppsp = x
+
+proc ppsp*(self: PROPSHEETHEADERW): LPCPROPSHEETPAGEW {.inline.} =
+  self.union3.ppsp
+
+proc ppsp*(self: var PROPSHEETHEADERW): var LPCPROPSHEETPAGEW {.inline.} =
+  self.union3.ppsp
+
+proc `phpage=`*(self: var PROPSHEETHEADERW, x: ptr HPROPSHEETPAGE) {.inline.} =
+  self.union3.phpage = x
+
+proc phpage*(self: PROPSHEETHEADERW): ptr HPROPSHEETPAGE {.inline.} =
+  self.union3.phpage
+
+proc phpage*(self: var PROPSHEETHEADERW): var ptr HPROPSHEETPAGE {.inline.} =
+  self.union3.phpage
+
+proc `hbmWatermark=`*(self: var PROPSHEETHEADERW, x: HBITMAP) {.inline.} =
+  self.union4.hbmWatermark = x
+
+proc hbmWatermark*(self: PROPSHEETHEADERW): HBITMAP {.inline.} =
+  self.union4.hbmWatermark
+
+proc hbmWatermark*(self: var PROPSHEETHEADERW): var HBITMAP {.inline.} =
+  self.union4.hbmWatermark
+
+proc `pszbmWatermark=`*(self: var PROPSHEETHEADERW, x: LPCWSTR) {.inline.} =
+  self.union4.pszbmWatermark = x
+
+proc pszbmWatermark*(self: PROPSHEETHEADERW): LPCWSTR {.inline.} =
+  self.union4.pszbmWatermark
+
+proc pszbmWatermark*(self: var PROPSHEETHEADERW): var LPCWSTR {.inline.} =
+  self.union4.pszbmWatermark
+
+proc `hbmHeader=`*(self: var PROPSHEETHEADERW, x: HBITMAP) {.inline.} =
+  self.union5.hbmHeader = x
+
+proc hbmHeader*(self: PROPSHEETHEADERW): HBITMAP {.inline.} =
+  self.union5.hbmHeader
+
+proc hbmHeader*(self: var PROPSHEETHEADERW): var HBITMAP {.inline.} =
+  self.union5.hbmHeader
+
+proc `pszbmHeader=`*(self: var PROPSHEETHEADERW, x: LPCWSTR) {.inline.} =
+  self.union5.pszbmHeader = x
+
+proc pszbmHeader*(self: PROPSHEETHEADERW): LPCWSTR {.inline.} =
+  self.union5.pszbmHeader
+
+proc pszbmHeader*(self: var PROPSHEETHEADERW): var LPCWSTR {.inline.} =
+  self.union5.pszbmHeader
+
+proc `itemex=`*(self: var TVINSERTSTRUCTA, x: TVITEMEXA) {.inline.} =
+  self.union1.itemex = x
+
+proc itemex*(self: TVINSERTSTRUCTA): TVITEMEXA {.inline.} =
+  self.union1.itemex
+
+proc itemex*(self: var TVINSERTSTRUCTA): var TVITEMEXA {.inline.} =
+  self.union1.itemex
+
+proc `item=`*(self: var TVINSERTSTRUCTA, x: TV_ITEMA) {.inline.} =
+  self.union1.item = x
+
+proc item*(self: TVINSERTSTRUCTA): TV_ITEMA {.inline.} =
+  self.union1.item
+
+proc item*(self: var TVINSERTSTRUCTA): var TV_ITEMA {.inline.} =
+  self.union1.item
+
+proc `itemex=`*(self: var TVINSERTSTRUCTW, x: TVITEMEXW) {.inline.} =
+  self.union1.itemex = x
+
+proc itemex*(self: TVINSERTSTRUCTW): TVITEMEXW {.inline.} =
+  self.union1.itemex
+
+proc itemex*(self: var TVINSERTSTRUCTW): var TVITEMEXW {.inline.} =
+  self.union1.itemex
+
+proc `item=`*(self: var TVINSERTSTRUCTW, x: TV_ITEMW) {.inline.} =
+  self.union1.item = x
+
+proc item*(self: TVINSERTSTRUCTW): TV_ITEMW {.inline.} =
+  self.union1.item
+
+proc item*(self: var TVINSERTSTRUCTW): var TV_ITEMW {.inline.} =
+  self.union1.item
+
+proc `hMainIcon=`*(self: var TASKDIALOGCONFIG, x: HICON) {.inline.} =
+  self.union1.hMainIcon = x
+
+proc hMainIcon*(self: TASKDIALOGCONFIG): HICON {.inline.} =
+  self.union1.hMainIcon
+
+proc hMainIcon*(self: var TASKDIALOGCONFIG): var HICON {.inline.} =
+  self.union1.hMainIcon
+
+proc `pszMainIcon=`*(self: var TASKDIALOGCONFIG, x: PCWSTR) {.inline.} =
+  self.union1.pszMainIcon = x
+
+proc pszMainIcon*(self: TASKDIALOGCONFIG): PCWSTR {.inline.} =
+  self.union1.pszMainIcon
+
+proc pszMainIcon*(self: var TASKDIALOGCONFIG): var PCWSTR {.inline.} =
+  self.union1.pszMainIcon
+
+proc `hFooterIcon=`*(self: var TASKDIALOGCONFIG, x: HICON) {.inline.} =
+  self.union2.hFooterIcon = x
+
+proc hFooterIcon*(self: TASKDIALOGCONFIG): HICON {.inline.} =
+  self.union2.hFooterIcon
+
+proc hFooterIcon*(self: var TASKDIALOGCONFIG): var HICON {.inline.} =
+  self.union2.hFooterIcon
+
+proc `pszFooterIcon=`*(self: var TASKDIALOGCONFIG, x: PCWSTR) {.inline.} =
+  self.union2.pszFooterIcon = x
+
+proc pszFooterIcon*(self: TASKDIALOGCONFIG): PCWSTR {.inline.} =
+  self.union2.pszFooterIcon
+
+proc pszFooterIcon*(self: var TASKDIALOGCONFIG): var PCWSTR {.inline.} =
+  self.union2.pszFooterIcon
+
+proc Add*(
+    self: ptr IImageList, hbmImage: HBITMAP, hbmMask: HBITMAP, pi: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Add(self, hbmImage, hbmMask, pi)
+
+proc ReplaceIcon*(
+    self: ptr IImageList, i: int32, hicon: HICON, pi: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReplaceIcon(self, i, hicon, pi)
+
+proc SetOverlayImage*(
+    self: ptr IImageList, iImage: int32, iOverlay: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOverlayImage(self, iImage, iOverlay)
+
+proc Replace*(
+    self: ptr IImageList, i: int32, hbmImage: HBITMAP, hbmMask: HBITMAP
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Replace(self, i, hbmImage, hbmMask)
+
+proc AddMasked*(
+    self: ptr IImageList, hbmImage: HBITMAP, crMask: COLORREF, pi: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddMasked(self, hbmImage, crMask, pi)
+
+proc Draw*(
+    self: ptr IImageList, pimldp: ptr IMAGELISTDRAWPARAMS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Draw(self, pimldp)
+
+proc Remove*(self: ptr IImageList, i: int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Remove(self, i)
+
+proc GetIcon*(
+    self: ptr IImageList, i: int32, flags: UINT, picon: ptr HICON
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIcon(self, i, flags, picon)
+
+proc GetImageInfo*(
+    self: ptr IImageList, i: int32, pImageInfo: ptr IMAGEINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetImageInfo(self, i, pImageInfo)
+
+proc Copy*(
+    self: ptr IImageList, iDst: int32, punkSrc: ptr IUnknown, iSrc: int32, uFlags: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Copy(self, iDst, punkSrc, iSrc, uFlags)
+
+proc Merge*(
+    self: ptr IImageList,
+    i1: int32,
+    punk2: ptr IUnknown,
+    i2: int32,
+    dx: int32,
+    dy: int32,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Merge(self, i1, punk2, i2, dx, dy, riid, ppv)
+
+proc Clone*(
+    self: ptr IImageList, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, riid, ppv)
+
+proc GetImageRect*(
+    self: ptr IImageList, i: int32, prc: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetImageRect(self, i, prc)
+
+proc GetIconSize*(
+    self: ptr IImageList, cx: ptr int32, cy: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIconSize(self, cx, cy)
+
+proc SetIconSize*(
+    self: ptr IImageList, cx: int32, cy: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetIconSize(self, cx, cy)
+
+proc GetImageCount*(self: ptr IImageList, pi: ptr int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetImageCount(self, pi)
+
+proc SetImageCount*(self: ptr IImageList, uNewCount: UINT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetImageCount(self, uNewCount)
+
+proc SetBkColor*(
+    self: ptr IImageList, clrBk: COLORREF, pclr: ptr COLORREF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBkColor(self, clrBk, pclr)
+
+proc GetBkColor*(self: ptr IImageList, pclr: ptr COLORREF): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBkColor(self, pclr)
+
+proc BeginDrag*(
+    self: ptr IImageList, iTrack: int32, dxHotspot: int32, dyHotspot: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeginDrag(self, iTrack, dxHotspot, dyHotspot)
+
+proc EndDrag*(self: ptr IImageList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EndDrag(self)
+
+proc DragEnter*(
+    self: ptr IImageList, hwndLock: HWND, x: int32, y: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DragEnter(self, hwndLock, x, y)
+
+proc DragLeave*(self: ptr IImageList, hwndLock: HWND): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DragLeave(self, hwndLock)
+
+proc DragMove*(self: ptr IImageList, x: int32, y: int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DragMove(self, x, y)
+
+proc SetDragCursorImage*(
+    self: ptr IImageList,
+    punk: ptr IUnknown,
+    iDrag: int32,
+    dxHotspot: int32,
+    dyHotspot: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDragCursorImage(self, punk, iDrag, dxHotspot, dyHotspot)
+
+proc DragShowNolock*(self: ptr IImageList, fShow: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DragShowNolock(self, fShow)
+
+proc GetDragImage*(
+    self: ptr IImageList,
+    ppt: ptr POINT,
+    pptHotspot: ptr POINT,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDragImage(self, ppt, pptHotspot, riid, ppv)
+
+proc GetItemFlags*(
+    self: ptr IImageList, i: int32, dwFlags: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItemFlags(self, i, dwFlags)
+
+proc GetOverlayImage*(
+    self: ptr IImageList, iOverlay: int32, piIndex: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOverlayImage(self, iOverlay, piIndex)
+
+proc Resize*(
+    self: ptr IImageList2, cxNewIconSize: int32, cyNewIconSize: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Resize(self, cxNewIconSize, cyNewIconSize)
+
+proc GetOriginalSize*(
+    self: ptr IImageList2, iImage: int32, dwFlags: DWORD, pcx: ptr int32, pcy: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOriginalSize(self, iImage, dwFlags, pcx, pcy)
+
+proc SetOriginalSize*(
+    self: ptr IImageList2, iImage: int32, cx: int32, cy: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOriginalSize(self, iImage, cx, cy)
+
+proc SetCallback*(
+    self: ptr IImageList2, punk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCallback(self, punk)
+
+proc GetCallback*(
+    self: ptr IImageList2, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCallback(self, riid, ppv)
+
+proc ForceImagePresent*(
+    self: ptr IImageList2, iImage: int32, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ForceImagePresent(self, iImage, dwFlags)
+
+proc DiscardImages*(
+    self: ptr IImageList2, iFirstImage: int32, iLastImage: int32, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DiscardImages(self, iFirstImage, iLastImage, dwFlags)
+
+proc PreloadImages*(
+    self: ptr IImageList2, pimldp: ptr IMAGELISTDRAWPARAMS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreloadImages(self, pimldp)
+
+proc GetStatistics*(
+    self: ptr IImageList2, pils: ptr IMAGELISTSTATS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetStatistics(self, pils)
+
+proc Initialize*(
+    self: ptr IImageList2,
+    cx: int32,
+    cy: int32,
+    flags: UINT,
+    cInitial: int32,
+    cGrow: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, cx, cy, flags, cInitial, cGrow)
+
+proc Replace2*(
+    self: ptr IImageList2,
+    i: int32,
+    hbmImage: HBITMAP,
+    hbmMask: HBITMAP,
+    punk: ptr IUnknown,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Replace2(self, i, hbmImage, hbmMask, punk, dwFlags)
+
+proc ReplaceFromImageList*(
+    self: ptr IImageList2,
+    i: int32,
+    pil: ptr IImageList,
+    iSrc: int32,
+    punk: ptr IUnknown,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReplaceFromImageList(self, i, pil, iSrc, punk, dwFlags)
+
+converter winimConverterIImageListToIUnknown*(x: ptr IImageList): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIImageList2ToIImageList*(x: ptr IImageList2): ptr IImageList =
+  cast[ptr IImageList](x)
+
+converter winimConverterIImageList2ToIUnknown*(x: ptr IImageList2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
 when winimUnicode:
   type
     LPNMLVDISPINFO* = LPNMLVDISPINFOW
@@ -4831,6 +7014,7 @@
     LPNMDATETIMEFORMAT* = LPNMDATETIMEFORMATW
     NMDATETIMEFORMATQUERY* = NMDATETIMEFORMATQUERYW
     LPNMDATETIMEFORMATQUERY* = LPNMDATETIMEFORMATQUERYW
+
   const
     WC_HEADER* = WC_HEADERW
     HDN_ITEMCHANGING* = HDN_ITEMCHANGINGW
@@ -4928,11 +7112,34 @@
     WC_LISTBOX* = WC_LISTBOXW
     WC_COMBOBOX* = WC_COMBOBOXW
     WC_SCROLLBAR* = WC_SCROLLBARW
-  proc CreatePropertySheetPage*(constPropSheetPagePointer: LPCPROPSHEETPAGEW): HPROPSHEETPAGE {.winapi, stdcall, dynlib: "comctl32", importc: "CreatePropertySheetPageW".}
-  proc PropertySheet*(P1: LPCPROPSHEETHEADERW): INT_PTR {.winapi, stdcall, dynlib: "comctl32", importc: "PropertySheetW".}
-  proc ImageList_LoadImage*(hi: HINSTANCE, lpbmp: LPCWSTR, cx: int32, cGrow: int32, crMask: COLORREF, uType: UINT, uFlags: UINT): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc: "ImageList_LoadImageW".}
-  proc CreateStatusWindow*(style: LONG, lpszText: LPCWSTR, hwndParent: HWND, wID: UINT): HWND {.winapi, stdcall, dynlib: "comctl32", importc: "CreateStatusWindowW".}
-  proc DrawStatusText*(hDC: HDC, lprc: LPCRECT, pszText: LPCWSTR, uFlags: UINT): void {.winapi, stdcall, dynlib: "comctl32", importc: "DrawStatusTextW".}
+  proc CreatePropertySheetPage*(
+    constPropSheetPagePointer: LPCPROPSHEETPAGEW
+  ): HPROPSHEETPAGE {.
+    winapi, stdcall, dynlib: "comctl32", importc: "CreatePropertySheetPageW"
+  .}
+
+  proc PropertySheet*(
+    P1: LPCPROPSHEETHEADERW
+  ): INT_PTR {.winapi, stdcall, dynlib: "comctl32", importc: "PropertySheetW".}
+
+  proc ImageList_LoadImage*(
+    hi: HINSTANCE,
+    lpbmp: LPCWSTR,
+    cx: int32,
+    cGrow: int32,
+    crMask: COLORREF,
+    uType: UINT,
+    uFlags: UINT,
+  ): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc: "ImageList_LoadImageW".}
+
+  proc CreateStatusWindow*(
+    style: LONG, lpszText: LPCWSTR, hwndParent: HWND, wID: UINT
+  ): HWND {.winapi, stdcall, dynlib: "comctl32", importc: "CreateStatusWindowW".}
+
+  proc DrawStatusText*(
+    hDC: HDC, lprc: LPCRECT, pszText: LPCWSTR, uFlags: UINT
+  ): void {.winapi, stdcall, dynlib: "comctl32", importc: "DrawStatusTextW".}
+
 when winimAnsi:
   type
     LPNMLVDISPINFO* = LPNMLVDISPINFOA
@@ -5002,6 +7209,7 @@
     LPNMDATETIMEFORMAT* = LPNMDATETIMEFORMATA
     NMDATETIMEFORMATQUERY* = NMDATETIMEFORMATQUERYA
     LPNMDATETIMEFORMATQUERY* = LPNMDATETIMEFORMATQUERYA
+
   const
     WC_HEADER* = WC_HEADERA
     HDN_ITEMCHANGING* = HDN_ITEMCHANGINGA
@@ -5099,18 +7307,48 @@
     WC_LISTBOX* = WC_LISTBOXA
     WC_COMBOBOX* = WC_COMBOBOXA
     WC_SCROLLBAR* = WC_SCROLLBARA
-  proc CreatePropertySheetPage*(constPropSheetPagePointer: LPCPROPSHEETPAGEA): HPROPSHEETPAGE {.winapi, stdcall, dynlib: "comctl32", importc: "CreatePropertySheetPageA".}
-  proc PropertySheet*(P1: LPCPROPSHEETHEADERA): INT_PTR {.winapi, stdcall, dynlib: "comctl32", importc: "PropertySheetA".}
-  proc ImageList_LoadImage*(hi: HINSTANCE, lpbmp: LPCSTR, cx: int32, cGrow: int32, crMask: COLORREF, uType: UINT, uFlags: UINT): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc: "ImageList_LoadImageA".}
-  proc CreateStatusWindow*(style: LONG, lpszText: LPCSTR, hwndParent: HWND, wID: UINT): HWND {.winapi, stdcall, dynlib: "comctl32", importc: "CreateStatusWindowA".}
-  proc DrawStatusText*(hDC: HDC, lprc: LPCRECT, pszText: LPCSTR, uFlags: UINT): void {.winapi, stdcall, dynlib: "comctl32", importc: "DrawStatusTextA".}
+  proc CreatePropertySheetPage*(
+    constPropSheetPagePointer: LPCPROPSHEETPAGEA
+  ): HPROPSHEETPAGE {.
+    winapi, stdcall, dynlib: "comctl32", importc: "CreatePropertySheetPageA"
+  .}
+
+  proc PropertySheet*(
+    P1: LPCPROPSHEETHEADERA
+  ): INT_PTR {.winapi, stdcall, dynlib: "comctl32", importc: "PropertySheetA".}
+
+  proc ImageList_LoadImage*(
+    hi: HINSTANCE,
+    lpbmp: LPCSTR,
+    cx: int32,
+    cGrow: int32,
+    crMask: COLORREF,
+    uType: UINT,
+    uFlags: UINT,
+  ): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc: "ImageList_LoadImageA".}
+
+  proc CreateStatusWindow*(
+    style: LONG, lpszText: LPCSTR, hwndParent: HWND, wID: UINT
+  ): HWND {.winapi, stdcall, dynlib: "comctl32", importc: "CreateStatusWindowA".}
+
+  proc DrawStatusText*(
+    hDC: HDC, lprc: LPCRECT, pszText: LPCSTR, uFlags: UINT
+  ): void {.winapi, stdcall, dynlib: "comctl32", importc: "DrawStatusTextA".}
+
 when winimCpu64:
   type
     PTBBUTTON* = ptr TBBUTTON
     LPTBBUTTON* = ptr TBBUTTON
-  proc FlatSB_GetScrollPropPtr*(P1: HWND, propIndex: int32, P3: PINT_PTR): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
+  proc FlatSB_GetScrollPropPtr*(
+    P1: HWND, propIndex: int32, P3: PINT_PTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
+
 when winimCpu32:
   type
     PTBBUTTON* = ptr TBBUTTON
     LPTBBUTTON* = ptr TBBUTTON
-  proc FlatSB_GetScrollPropPtr*(P1: HWND, propIndex: int32, P3: LPINT): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc: "FlatSB_GetScrollProp".}
+
+  proc FlatSB_GetScrollPropPtr*(
+    P1: HWND, propIndex: int32, P3: LPINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc: "FlatSB_GetScrollProp".}
--- a/semicongine/thirdparty/winim/winim/inc/commdlg.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/commdlg.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -12,7 +12,8 @@
 import commctrl
 #include <commdlg.h>
 type
-  LPOFNHOOKPROC* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
+  LPOFNHOOKPROC* =
+    proc(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
   OPENFILENAME_NT4A* {.pure.} = object
     lStructSize*: DWORD
     hwndOwner*: HWND
@@ -34,6 +35,7 @@
     lCustData*: LPARAM
     lpfnHook*: LPOFNHOOKPROC
     lpTemplateName*: LPCSTR
+
   LPOPENFILENAME_NT4A* = ptr OPENFILENAME_NT4A
   OPENFILENAME_NT4W* {.pure.} = object
     lStructSize*: DWORD
@@ -56,6 +58,7 @@
     lCustData*: LPARAM
     lpfnHook*: LPOFNHOOKPROC
     lpTemplateName*: LPCWSTR
+
   LPOPENFILENAME_NT4W* = ptr OPENFILENAME_NT4W
   OPENFILENAMEA* {.pure.} = object
     lStructSize*: DWORD
@@ -81,6 +84,7 @@
     pvReserved*: pointer
     dwReserved*: DWORD
     FlagsEx*: DWORD
+
   LPOPENFILENAMEA* = ptr OPENFILENAMEA
   OPENFILENAMEW* {.pure.} = object
     lStructSize*: DWORD
@@ -106,30 +110,35 @@
     pvReserved*: pointer
     dwReserved*: DWORD
     FlagsEx*: DWORD
+
   LPOPENFILENAMEW* = ptr OPENFILENAMEW
   OFNOTIFYA* {.pure.} = object
     hdr*: NMHDR
     lpOFN*: LPOPENFILENAMEA
     pszFile*: LPSTR
+
   LPOFNOTIFYA* = ptr OFNOTIFYA
   OFNOTIFYW* {.pure.} = object
     hdr*: NMHDR
     lpOFN*: LPOPENFILENAMEW
     pszFile*: LPWSTR
+
   LPOFNOTIFYW* = ptr OFNOTIFYW
   OFNOTIFYEXA* {.pure.} = object
     hdr*: NMHDR
     lpOFN*: LPOPENFILENAMEA
     psf*: LPVOID
     pidl*: LPVOID
+
   LPOFNOTIFYEXA* = ptr OFNOTIFYEXA
   OFNOTIFYEXW* {.pure.} = object
     hdr*: NMHDR
     lpOFN*: LPOPENFILENAMEW
     psf*: LPVOID
     pidl*: LPVOID
+
   LPOFNOTIFYEXW* = ptr OFNOTIFYEXW
-  LPCCHOOKPROC* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
+  LPCCHOOKPROC* = proc(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
   TCHOOSECOLORA* {.pure.} = object
     lStructSize*: DWORD
     hwndOwner*: HWND
@@ -140,6 +149,7 @@
     lCustData*: LPARAM
     lpfnHook*: LPCCHOOKPROC
     lpTemplateName*: LPCSTR
+
   LPCHOOSECOLORA* = ptr TCHOOSECOLORA
   TCHOOSECOLORW* {.pure.} = object
     lStructSize*: DWORD
@@ -151,8 +161,9 @@
     lCustData*: LPARAM
     lpfnHook*: LPCCHOOKPROC
     lpTemplateName*: LPCWSTR
+
   LPCHOOSECOLORW* = ptr TCHOOSECOLORW
-  LPFRHOOKPROC* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
+  LPFRHOOKPROC* = proc(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
   FINDREPLACEA* {.pure.} = object
     lStructSize*: DWORD
     hwndOwner*: HWND
@@ -165,6 +176,7 @@
     lCustData*: LPARAM
     lpfnHook*: LPFRHOOKPROC
     lpTemplateName*: LPCSTR
+
   LPFINDREPLACEA* = ptr FINDREPLACEA
   FINDREPLACEW* {.pure.} = object
     lStructSize*: DWORD
@@ -178,8 +190,9 @@
     lCustData*: LPARAM
     lpfnHook*: LPFRHOOKPROC
     lpTemplateName*: LPCWSTR
+
   LPFINDREPLACEW* = ptr FINDREPLACEW
-  LPCFHOOKPROC* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
+  LPCFHOOKPROC* = proc(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
   TCHOOSEFONTA* {.pure.} = object
     lStructSize*: DWORD
     hwndOwner*: HWND
@@ -197,6 +210,7 @@
     MISSING_ALIGNMENT*: WORD
     nSizeMin*: INT
     nSizeMax*: INT
+
   LPCHOOSEFONTA* = ptr TCHOOSEFONTA
   TCHOOSEFONTW* {.pure.} = object
     lStructSize*: DWORD
@@ -215,104 +229,108 @@
     MISSING_ALIGNMENT*: WORD
     nSizeMin*: INT
     nSizeMax*: INT
+
   LPCHOOSEFONTW* = ptr TCHOOSEFONTW
-  LPPRINTHOOKPROC* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
-  LPSETUPHOOKPROC* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
+  LPPRINTHOOKPROC* =
+    proc(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
+  LPSETUPHOOKPROC* =
+    proc(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
+
 when winimCpu64:
-  type
-    TPRINTDLGA* {.pure.} = object
-      lStructSize*: DWORD
-      hwndOwner*: HWND
-      hDevMode*: HGLOBAL
-      hDevNames*: HGLOBAL
-      hDC*: HDC
-      Flags*: DWORD
-      nFromPage*: WORD
-      nToPage*: WORD
-      nMinPage*: WORD
-      nMaxPage*: WORD
-      nCopies*: WORD
-      hInstance*: HINSTANCE
-      lCustData*: LPARAM
-      lpfnPrintHook*: LPPRINTHOOKPROC
-      lpfnSetupHook*: LPSETUPHOOKPROC
-      lpPrintTemplateName*: LPCSTR
-      lpSetupTemplateName*: LPCSTR
-      hPrintTemplate*: HGLOBAL
-      hSetupTemplate*: HGLOBAL
+  type TPRINTDLGA* {.pure.} = object
+    lStructSize*: DWORD
+    hwndOwner*: HWND
+    hDevMode*: HGLOBAL
+    hDevNames*: HGLOBAL
+    hDC*: HDC
+    Flags*: DWORD
+    nFromPage*: WORD
+    nToPage*: WORD
+    nMinPage*: WORD
+    nMaxPage*: WORD
+    nCopies*: WORD
+    hInstance*: HINSTANCE
+    lCustData*: LPARAM
+    lpfnPrintHook*: LPPRINTHOOKPROC
+    lpfnSetupHook*: LPSETUPHOOKPROC
+    lpPrintTemplateName*: LPCSTR
+    lpSetupTemplateName*: LPCSTR
+    hPrintTemplate*: HGLOBAL
+    hSetupTemplate*: HGLOBAL
+
 when winimCpu32:
-  type
-    TPRINTDLGA* {.pure, packed.} = object
-      lStructSize*: DWORD
-      hwndOwner*: HWND
-      hDevMode*: HGLOBAL
-      hDevNames*: HGLOBAL
-      hDC*: HDC
-      Flags*: DWORD
-      nFromPage*: WORD
-      nToPage*: WORD
-      nMinPage*: WORD
-      nMaxPage*: WORD
-      nCopies*: WORD
-      hInstance*: HINSTANCE
-      lCustData*: LPARAM
-      lpfnPrintHook*: LPPRINTHOOKPROC
-      lpfnSetupHook*: LPSETUPHOOKPROC
-      lpPrintTemplateName*: LPCSTR
-      lpSetupTemplateName*: LPCSTR
-      hPrintTemplate*: HGLOBAL
-      hSetupTemplate*: HGLOBAL
-type
-  LPPRINTDLGA* = ptr TPRINTDLGA
+  type TPRINTDLGA* {.pure, packed.} = object
+    lStructSize*: DWORD
+    hwndOwner*: HWND
+    hDevMode*: HGLOBAL
+    hDevNames*: HGLOBAL
+    hDC*: HDC
+    Flags*: DWORD
+    nFromPage*: WORD
+    nToPage*: WORD
+    nMinPage*: WORD
+    nMaxPage*: WORD
+    nCopies*: WORD
+    hInstance*: HINSTANCE
+    lCustData*: LPARAM
+    lpfnPrintHook*: LPPRINTHOOKPROC
+    lpfnSetupHook*: LPSETUPHOOKPROC
+    lpPrintTemplateName*: LPCSTR
+    lpSetupTemplateName*: LPCSTR
+    hPrintTemplate*: HGLOBAL
+    hSetupTemplate*: HGLOBAL
+
+type LPPRINTDLGA* = ptr TPRINTDLGA
 when winimCpu64:
-  type
-    TPRINTDLGW* {.pure.} = object
-      lStructSize*: DWORD
-      hwndOwner*: HWND
-      hDevMode*: HGLOBAL
-      hDevNames*: HGLOBAL
-      hDC*: HDC
-      Flags*: DWORD
-      nFromPage*: WORD
-      nToPage*: WORD
-      nMinPage*: WORD
-      nMaxPage*: WORD
-      nCopies*: WORD
-      hInstance*: HINSTANCE
-      lCustData*: LPARAM
-      lpfnPrintHook*: LPPRINTHOOKPROC
-      lpfnSetupHook*: LPSETUPHOOKPROC
-      lpPrintTemplateName*: LPCWSTR
-      lpSetupTemplateName*: LPCWSTR
-      hPrintTemplate*: HGLOBAL
-      hSetupTemplate*: HGLOBAL
+  type TPRINTDLGW* {.pure.} = object
+    lStructSize*: DWORD
+    hwndOwner*: HWND
+    hDevMode*: HGLOBAL
+    hDevNames*: HGLOBAL
+    hDC*: HDC
+    Flags*: DWORD
+    nFromPage*: WORD
+    nToPage*: WORD
+    nMinPage*: WORD
+    nMaxPage*: WORD
+    nCopies*: WORD
+    hInstance*: HINSTANCE
+    lCustData*: LPARAM
+    lpfnPrintHook*: LPPRINTHOOKPROC
+    lpfnSetupHook*: LPSETUPHOOKPROC
+    lpPrintTemplateName*: LPCWSTR
+    lpSetupTemplateName*: LPCWSTR
+    hPrintTemplate*: HGLOBAL
+    hSetupTemplate*: HGLOBAL
+
 when winimCpu32:
-  type
-    TPRINTDLGW* {.pure, packed.} = object
-      lStructSize*: DWORD
-      hwndOwner*: HWND
-      hDevMode*: HGLOBAL
-      hDevNames*: HGLOBAL
-      hDC*: HDC
-      Flags*: DWORD
-      nFromPage*: WORD
-      nToPage*: WORD
-      nMinPage*: WORD
-      nMaxPage*: WORD
-      nCopies*: WORD
-      hInstance*: HINSTANCE
-      lCustData*: LPARAM
-      lpfnPrintHook*: LPPRINTHOOKPROC
-      lpfnSetupHook*: LPSETUPHOOKPROC
-      lpPrintTemplateName*: LPCWSTR
-      lpSetupTemplateName*: LPCWSTR
-      hPrintTemplate*: HGLOBAL
-      hSetupTemplate*: HGLOBAL
+  type TPRINTDLGW* {.pure, packed.} = object
+    lStructSize*: DWORD
+    hwndOwner*: HWND
+    hDevMode*: HGLOBAL
+    hDevNames*: HGLOBAL
+    hDC*: HDC
+    Flags*: DWORD
+    nFromPage*: WORD
+    nToPage*: WORD
+    nMinPage*: WORD
+    nMaxPage*: WORD
+    nCopies*: WORD
+    hInstance*: HINSTANCE
+    lCustData*: LPARAM
+    lpfnPrintHook*: LPPRINTHOOKPROC
+    lpfnSetupHook*: LPSETUPHOOKPROC
+    lpPrintTemplateName*: LPCWSTR
+    lpSetupTemplateName*: LPCWSTR
+    hPrintTemplate*: HGLOBAL
+    hSetupTemplate*: HGLOBAL
+
 type
   LPPRINTDLGW* = ptr TPRINTDLGW
   PRINTPAGERANGE* {.pure.} = object
     nFromPage*: DWORD
     nToPage*: DWORD
+
   LPPRINTPAGERANGE* = ptr PRINTPAGERANGE
   TPRINTDLGEXA* {.pure.} = object
     lStructSize*: DWORD
@@ -336,6 +354,7 @@
     lphPropertyPages*: ptr HPROPSHEETPAGE
     nStartPage*: DWORD
     dwResultAction*: DWORD
+
   LPPRINTDLGEXA* = ptr TPRINTDLGEXA
   TPRINTDLGEXW* {.pure.} = object
     lStructSize*: DWORD
@@ -359,15 +378,19 @@
     lphPropertyPages*: ptr HPROPSHEETPAGE
     nStartPage*: DWORD
     dwResultAction*: DWORD
+
   LPPRINTDLGEXW* = ptr TPRINTDLGEXW
   DEVNAMES* {.pure.} = object
     wDriverOffset*: WORD
     wDeviceOffset*: WORD
     wOutputOffset*: WORD
     wDefault*: WORD
+
   LPDEVNAMES* = ptr DEVNAMES
-  LPPAGESETUPHOOK* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
-  LPPAGEPAINTHOOK* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
+  LPPAGESETUPHOOK* =
+    proc(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
+  LPPAGEPAINTHOOK* =
+    proc(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
   TPAGESETUPDLGA* {.pure.} = object
     lStructSize*: DWORD
     hwndOwner*: HWND
@@ -383,6 +406,7 @@
     lpfnPagePaintHook*: LPPAGEPAINTHOOK
     lpPageSetupTemplateName*: LPCSTR
     hPageSetupTemplate*: HGLOBAL
+
   LPPAGESETUPDLGA* = ptr TPAGESETUPDLGA
   TPAGESETUPDLGW* {.pure.} = object
     lStructSize*: DWORD
@@ -399,7 +423,9 @@
     lpfnPagePaintHook*: LPPAGEPAINTHOOK
     lpPageSetupTemplateName*: LPCWSTR
     hPageSetupTemplate*: HGLOBAL
+
   LPPAGESETUPDLGW* = ptr TPAGESETUPDLGW
+
 const
   IID_IPrintDialogCallback* = DEFINE_GUID("5852a2c3-6530-11d1-b6a3-0000f8757bf9")
   IID_IPrintDialogServices* = DEFINE_GUID("509aaeda-5639-11d1-b6a1-0000f8757bf9")
@@ -434,22 +460,22 @@
   OFN_SHARENOWARN* = 1
   OFN_SHAREWARN* = 0
   CDN_INITDONE* = CDN_FIRST
-  CDN_SELCHANGE* = CDN_FIRST-1
-  CDN_FOLDERCHANGE* = CDN_FIRST-2
-  CDN_SHAREVIOLATION* = CDN_FIRST-3
-  CDN_HELP* = CDN_FIRST-4
-  CDN_FILEOK* = CDN_FIRST-5
-  CDN_TYPECHANGE* = CDN_FIRST-6
-  CDN_INCLUDEITEM* = CDN_FIRST-7
-  CDM_FIRST* = WM_USER+100
-  CDM_LAST* = WM_USER+200
+  CDN_SELCHANGE* = CDN_FIRST - 1
+  CDN_FOLDERCHANGE* = CDN_FIRST - 2
+  CDN_SHAREVIOLATION* = CDN_FIRST - 3
+  CDN_HELP* = CDN_FIRST - 4
+  CDN_FILEOK* = CDN_FIRST - 5
+  CDN_TYPECHANGE* = CDN_FIRST - 6
+  CDN_INCLUDEITEM* = CDN_FIRST - 7
+  CDM_FIRST* = WM_USER + 100
+  CDM_LAST* = WM_USER + 200
   CDM_GETSPEC* = CDM_FIRST
-  CDM_GETFILEPATH* = CDM_FIRST+1
-  CDM_GETFOLDERPATH* = CDM_FIRST+2
-  CDM_GETFOLDERIDLIST* = CDM_FIRST+3
-  CDM_SETCONTROLTEXT* = CDM_FIRST+4
-  CDM_HIDECONTROL* = CDM_FIRST+5
-  CDM_SETDEFEXT* = CDM_FIRST+6
+  CDM_GETFILEPATH* = CDM_FIRST + 1
+  CDM_GETFOLDERPATH* = CDM_FIRST + 2
+  CDM_GETFOLDERIDLIST* = CDM_FIRST + 3
+  CDM_SETCONTROLTEXT* = CDM_FIRST + 4
+  CDM_HIDECONTROL* = CDM_FIRST + 5
+  CDM_SETDEFEXT* = CDM_FIRST + 6
   CC_RGBINIT* = 0x1
   CC_FULLOPEN* = 0x2
   CC_PREVENTFULLOPEN* = 0x4
@@ -519,9 +545,9 @@
   TT_OPENTYPE_FONTTYPE* = 0x20000
   TYPE1_FONTTYPE* = 0x40000
   SYMBOL_FONTTYPE* = 0x80000
-  WM_CHOOSEFONT_GETLOGFONT* = WM_USER+1
-  WM_CHOOSEFONT_SETLOGFONT* = WM_USER+101
-  WM_CHOOSEFONT_SETFLAGS* = WM_USER+102
+  WM_CHOOSEFONT_GETLOGFONT* = WM_USER + 1
+  WM_CHOOSEFONT_SETLOGFONT* = WM_USER + 101
+  WM_CHOOSEFONT_SETFLAGS* = WM_USER + 102
   LBSELCHSTRINGA* = "commdlg_LBSelChangedNotify"
   SHAREVISTRINGA* = "commdlg_ShareViolation"
   FILEOKSTRINGA* = "commdlg_FileNameOK"
@@ -575,12 +601,12 @@
   PD_RESULT_APPLY* = 2
   DN_DEFAULTPRN* = 0x1
   WM_PSD_PAGESETUPDLG* = WM_USER
-  WM_PSD_FULLPAGERECT* = WM_USER+1
-  WM_PSD_MINMARGINRECT* = WM_USER+2
-  WM_PSD_MARGINRECT* = WM_USER+3
-  WM_PSD_GREEKTEXTRECT* = WM_USER+4
-  WM_PSD_ENVSTAMPRECT* = WM_USER+5
-  WM_PSD_YAFULLPAGERECT* = WM_USER+6
+  WM_PSD_FULLPAGERECT* = WM_USER + 1
+  WM_PSD_MINMARGINRECT* = WM_USER + 2
+  WM_PSD_MARGINRECT* = WM_USER + 3
+  WM_PSD_GREEKTEXTRECT* = WM_USER + 4
+  WM_PSD_ENVSTAMPRECT* = WM_USER + 5
+  WM_PSD_YAFULLPAGERECT* = WM_USER + 6
   PSD_DEFAULTMINMARGINS* = 0x0
   PSD_INWININIINTLMEASURE* = 0x0
   PSD_MINMARGINS* = 0x1
@@ -605,45 +631,161 @@
 type
   IPrintDialogCallback* {.pure.} = object
     lpVtbl*: ptr IPrintDialogCallbackVtbl
+
   IPrintDialogCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     InitDone*: proc(self: ptr IPrintDialogCallback): HRESULT {.stdcall.}
     SelectionChange*: proc(self: ptr IPrintDialogCallback): HRESULT {.stdcall.}
-    HandleMessage*: proc(self: ptr IPrintDialogCallback, hDlg: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, pResult: ptr LRESULT): HRESULT {.stdcall.}
+    HandleMessage*: proc(
+      self: ptr IPrintDialogCallback,
+      hDlg: HWND,
+      uMsg: UINT,
+      wParam: WPARAM,
+      lParam: LPARAM,
+      pResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+
   IPrintDialogServices* {.pure.} = object
     lpVtbl*: ptr IPrintDialogServicesVtbl
+
   IPrintDialogServicesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCurrentDevMode*: proc(self: ptr IPrintDialogServices, pDevMode: LPDEVMODE, pcbSize: ptr UINT): HRESULT {.stdcall.}
-    GetCurrentPrinterName*: proc(self: ptr IPrintDialogServices, pPrinterName: LPTSTR, pcchSize: ptr UINT): HRESULT {.stdcall.}
-    GetCurrentPortName*: proc(self: ptr IPrintDialogServices, pPortName: LPTSTR, pcchSize: ptr UINT): HRESULT {.stdcall.}
-proc GetOpenFileNameA*(P1: LPOPENFILENAMEA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc GetOpenFileNameW*(P1: LPOPENFILENAMEW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc GetSaveFileNameA*(P1: LPOPENFILENAMEA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc GetSaveFileNameW*(P1: LPOPENFILENAMEW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc GetFileTitleA*(P1: LPCSTR, P2: LPSTR, P3: WORD): int16 {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc GetFileTitleW*(P1: LPCWSTR, P2: LPWSTR, P3: WORD): int16 {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc ChooseColorA*(P1: LPCHOOSECOLORA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc ChooseColorW*(P1: LPCHOOSECOLORW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc FindTextA*(P1: LPFINDREPLACEA): HWND {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc FindTextW*(P1: LPFINDREPLACEW): HWND {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc ReplaceTextA*(P1: LPFINDREPLACEA): HWND {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc ReplaceTextW*(P1: LPFINDREPLACEW): HWND {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc ChooseFontA*(P1: LPCHOOSEFONTA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc ChooseFontW*(P1: LPCHOOSEFONTW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc PrintDlgA*(P1: LPPRINTDLGA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc PrintDlgW*(P1: LPPRINTDLGW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc PrintDlgExA*(P1: LPPRINTDLGEXA): HRESULT {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc PrintDlgExW*(P1: LPPRINTDLGEXW): HRESULT {.winapi, stdcall, dynlib: "comdlg32", importc.}
+    GetCurrentDevMode*: proc(
+      self: ptr IPrintDialogServices, pDevMode: LPDEVMODE, pcbSize: ptr UINT
+    ): HRESULT {.stdcall.}
+    GetCurrentPrinterName*: proc(
+      self: ptr IPrintDialogServices, pPrinterName: LPTSTR, pcchSize: ptr UINT
+    ): HRESULT {.stdcall.}
+    GetCurrentPortName*: proc(
+      self: ptr IPrintDialogServices, pPortName: LPTSTR, pcchSize: ptr UINT
+    ): HRESULT {.stdcall.}
+
+proc GetOpenFileNameA*(
+  P1: LPOPENFILENAMEA
+): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc GetOpenFileNameW*(
+  P1: LPOPENFILENAMEW
+): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc GetSaveFileNameA*(
+  P1: LPOPENFILENAMEA
+): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc GetSaveFileNameW*(
+  P1: LPOPENFILENAMEW
+): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc GetFileTitleA*(
+  P1: LPCSTR, P2: LPSTR, P3: WORD
+): int16 {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc GetFileTitleW*(
+  P1: LPCWSTR, P2: LPWSTR, P3: WORD
+): int16 {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc ChooseColorA*(
+  P1: LPCHOOSECOLORA
+): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc ChooseColorW*(
+  P1: LPCHOOSECOLORW
+): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc FindTextA*(
+  P1: LPFINDREPLACEA
+): HWND {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc FindTextW*(
+  P1: LPFINDREPLACEW
+): HWND {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc ReplaceTextA*(
+  P1: LPFINDREPLACEA
+): HWND {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc ReplaceTextW*(
+  P1: LPFINDREPLACEW
+): HWND {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc ChooseFontA*(
+  P1: LPCHOOSEFONTA
+): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc ChooseFontW*(
+  P1: LPCHOOSEFONTW
+): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc PrintDlgA*(
+  P1: LPPRINTDLGA
+): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc PrintDlgW*(
+  P1: LPPRINTDLGW
+): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc PrintDlgExA*(
+  P1: LPPRINTDLGEXA
+): HRESULT {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc PrintDlgExW*(
+  P1: LPPRINTDLGEXW
+): HRESULT {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
 proc CommDlgExtendedError*(): DWORD {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc PageSetupDlgA*(P1: LPPAGESETUPDLGA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc PageSetupDlgW*(P1: LPPAGESETUPDLGW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
-proc InitDone*(self: ptr IPrintDialogCallback): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitDone(self)
-proc SelectionChange*(self: ptr IPrintDialogCallback): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SelectionChange(self)
-proc HandleMessage*(self: ptr IPrintDialogCallback, hDlg: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, pResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleMessage(self, hDlg, uMsg, wParam, lParam, pResult)
-proc GetCurrentDevMode*(self: ptr IPrintDialogServices, pDevMode: LPDEVMODE, pcbSize: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentDevMode(self, pDevMode, pcbSize)
-proc GetCurrentPrinterName*(self: ptr IPrintDialogServices, pPrinterName: LPTSTR, pcchSize: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentPrinterName(self, pPrinterName, pcchSize)
-proc GetCurrentPortName*(self: ptr IPrintDialogServices, pPortName: LPTSTR, pcchSize: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentPortName(self, pPortName, pcchSize)
-converter winimConverterIPrintDialogCallbackToIUnknown*(x: ptr IPrintDialogCallback): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPrintDialogServicesToIUnknown*(x: ptr IPrintDialogServices): ptr IUnknown = cast[ptr IUnknown](x)
+proc PageSetupDlgA*(
+  P1: LPPAGESETUPDLGA
+): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc PageSetupDlgW*(
+  P1: LPPAGESETUPDLGW
+): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc.}
+
+proc InitDone*(self: ptr IPrintDialogCallback): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitDone(self)
+
+proc SelectionChange*(self: ptr IPrintDialogCallback): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SelectionChange(self)
+
+proc HandleMessage*(
+    self: ptr IPrintDialogCallback,
+    hDlg: HWND,
+    uMsg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    pResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleMessage(self, hDlg, uMsg, wParam, lParam, pResult)
+
+proc GetCurrentDevMode*(
+    self: ptr IPrintDialogServices, pDevMode: LPDEVMODE, pcbSize: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentDevMode(self, pDevMode, pcbSize)
+
+proc GetCurrentPrinterName*(
+    self: ptr IPrintDialogServices, pPrinterName: LPTSTR, pcchSize: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentPrinterName(self, pPrinterName, pcchSize)
+
+proc GetCurrentPortName*(
+    self: ptr IPrintDialogServices, pPortName: LPTSTR, pcchSize: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentPortName(self, pPortName, pcchSize)
+
+converter winimConverterIPrintDialogCallbackToIUnknown*(
+    x: ptr IPrintDialogCallback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPrintDialogServicesToIUnknown*(
+    x: ptr IPrintDialogServices
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
 when winimUnicode:
   type
     OPENFILENAME_NT4* = OPENFILENAME_NT4W
@@ -666,6 +808,7 @@
     LPPRINTDLGEX* = LPPRINTDLGEXW
     TPAGESETUPDLG* = TPAGESETUPDLGW
     LPPAGESETUPDLG* = LPPAGESETUPDLGW
+
   const
     OPENFILENAME_SIZE_VERSION_400* = OPENFILENAME_SIZE_VERSION_400W
     LBSELCHSTRING* = LBSELCHSTRINGW
@@ -675,16 +818,46 @@
     SETRGBSTRING* = SETRGBSTRINGW
     HELPMSGSTRING* = HELPMSGSTRINGW
     FINDMSGSTRING* = FINDMSGSTRINGW
-  proc GetOpenFileName*(P1: LPOPENFILENAMEW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "GetOpenFileNameW".}
-  proc GetSaveFileName*(P1: LPOPENFILENAMEW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "GetSaveFileNameW".}
-  proc GetFileTitle*(P1: LPCWSTR, P2: LPWSTR, P3: WORD): int16 {.winapi, stdcall, dynlib: "comdlg32", importc: "GetFileTitleW".}
-  proc ChooseColor*(P1: LPCHOOSECOLORW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "ChooseColorW".}
-  proc FindText*(P1: LPFINDREPLACEW): HWND {.winapi, stdcall, dynlib: "comdlg32", importc: "FindTextW".}
-  proc ReplaceText*(P1: LPFINDREPLACEW): HWND {.winapi, stdcall, dynlib: "comdlg32", importc: "ReplaceTextW".}
-  proc ChooseFont*(P1: LPCHOOSEFONTW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "ChooseFontW".}
-  proc PrintDlg*(P1: LPPRINTDLGW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "PrintDlgW".}
-  proc PrintDlgEx*(P1: LPPRINTDLGEXW): HRESULT {.winapi, stdcall, dynlib: "comdlg32", importc: "PrintDlgExW".}
-  proc PageSetupDlg*(P1: LPPAGESETUPDLGW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "PageSetupDlgW".}
+  proc GetOpenFileName*(
+    P1: LPOPENFILENAMEW
+  ): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "GetOpenFileNameW".}
+
+  proc GetSaveFileName*(
+    P1: LPOPENFILENAMEW
+  ): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "GetSaveFileNameW".}
+
+  proc GetFileTitle*(
+    P1: LPCWSTR, P2: LPWSTR, P3: WORD
+  ): int16 {.winapi, stdcall, dynlib: "comdlg32", importc: "GetFileTitleW".}
+
+  proc ChooseColor*(
+    P1: LPCHOOSECOLORW
+  ): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "ChooseColorW".}
+
+  proc FindText*(
+    P1: LPFINDREPLACEW
+  ): HWND {.winapi, stdcall, dynlib: "comdlg32", importc: "FindTextW".}
+
+  proc ReplaceText*(
+    P1: LPFINDREPLACEW
+  ): HWND {.winapi, stdcall, dynlib: "comdlg32", importc: "ReplaceTextW".}
+
+  proc ChooseFont*(
+    P1: LPCHOOSEFONTW
+  ): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "ChooseFontW".}
+
+  proc PrintDlg*(
+    P1: LPPRINTDLGW
+  ): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "PrintDlgW".}
+
+  proc PrintDlgEx*(
+    P1: LPPRINTDLGEXW
+  ): HRESULT {.winapi, stdcall, dynlib: "comdlg32", importc: "PrintDlgExW".}
+
+  proc PageSetupDlg*(
+    P1: LPPAGESETUPDLGW
+  ): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "PageSetupDlgW".}
+
 when winimAnsi:
   type
     OPENFILENAME_NT4* = OPENFILENAME_NT4A
@@ -707,6 +880,7 @@
     LPPRINTDLGEX* = LPPRINTDLGEXA
     TPAGESETUPDLG* = TPAGESETUPDLGA
     LPPAGESETUPDLG* = LPPAGESETUPDLGA
+
   const
     OPENFILENAME_SIZE_VERSION_400* = OPENFILENAME_SIZE_VERSION_400A
     LBSELCHSTRING* = LBSELCHSTRINGA
@@ -716,13 +890,42 @@
     SETRGBSTRING* = SETRGBSTRINGA
     HELPMSGSTRING* = HELPMSGSTRINGA
     FINDMSGSTRING* = FINDMSGSTRINGA
-  proc GetOpenFileName*(P1: LPOPENFILENAMEA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "GetOpenFileNameA".}
-  proc GetSaveFileName*(P1: LPOPENFILENAMEA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "GetSaveFileNameA".}
-  proc GetFileTitle*(P1: LPCSTR, P2: LPSTR, P3: WORD): int16 {.winapi, stdcall, dynlib: "comdlg32", importc: "GetFileTitleA".}
-  proc ChooseColor*(P1: LPCHOOSECOLORA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "ChooseColorA".}
-  proc FindText*(P1: LPFINDREPLACEA): HWND {.winapi, stdcall, dynlib: "comdlg32", importc: "FindTextA".}
-  proc ReplaceText*(P1: LPFINDREPLACEA): HWND {.winapi, stdcall, dynlib: "comdlg32", importc: "ReplaceTextA".}
-  proc ChooseFont*(P1: LPCHOOSEFONTA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "ChooseFontA".}
-  proc PrintDlg*(P1: LPPRINTDLGA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "PrintDlgA".}
-  proc PrintDlgEx*(P1: LPPRINTDLGEXA): HRESULT {.winapi, stdcall, dynlib: "comdlg32", importc: "PrintDlgExA".}
-  proc PageSetupDlg*(P1: LPPAGESETUPDLGA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "PageSetupDlgA".}
+  proc GetOpenFileName*(
+    P1: LPOPENFILENAMEA
+  ): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "GetOpenFileNameA".}
+
+  proc GetSaveFileName*(
+    P1: LPOPENFILENAMEA
+  ): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "GetSaveFileNameA".}
+
+  proc GetFileTitle*(
+    P1: LPCSTR, P2: LPSTR, P3: WORD
+  ): int16 {.winapi, stdcall, dynlib: "comdlg32", importc: "GetFileTitleA".}
+
+  proc ChooseColor*(
+    P1: LPCHOOSECOLORA
+  ): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "ChooseColorA".}
+
+  proc FindText*(
+    P1: LPFINDREPLACEA
+  ): HWND {.winapi, stdcall, dynlib: "comdlg32", importc: "FindTextA".}
+
+  proc ReplaceText*(
+    P1: LPFINDREPLACEA
+  ): HWND {.winapi, stdcall, dynlib: "comdlg32", importc: "ReplaceTextA".}
+
+  proc ChooseFont*(
+    P1: LPCHOOSEFONTA
+  ): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "ChooseFontA".}
+
+  proc PrintDlg*(
+    P1: LPPRINTDLGA
+  ): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "PrintDlgA".}
+
+  proc PrintDlgEx*(
+    P1: LPPRINTDLGEXA
+  ): HRESULT {.winapi, stdcall, dynlib: "comdlg32", importc: "PrintDlgExA".}
+
+  proc PageSetupDlg*(
+    P1: LPPAGESETUPDLGA
+  ): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "PageSetupDlgA".}
--- a/semicongine/thirdparty/winim/winim/inc/dde.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/dde.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -17,6 +17,7 @@
   HSZPAIR* {.pure.} = object
     hszSvc*: HSZ
     hszTopic*: HSZ
+
   PHSZPAIR* = ptr HSZPAIR
   CONVCONTEXT* {.pure.} = object
     cb*: UINT
@@ -26,6 +27,7 @@
     dwLangID*: DWORD
     dwSecurity*: DWORD
     qos*: SECURITY_QUALITY_OF_SERVICE
+
   PCONVCONTEXT* = ptr CONVCONTEXT
   CONVINFO* {.pure.} = object
     cb*: DWORD
@@ -44,12 +46,14 @@
     ConvCtxt*: CONVCONTEXT
     hwnd*: HWND
     hwndPartner*: HWND
+
   PCONVINFO* = ptr CONVINFO
   DDEML_MSG_HOOK_DATA* {.pure.} = object
     uiLo*: UINT_PTR
     uiHi*: UINT_PTR
     cbData*: DWORD
     Data*: array[8, DWORD]
+
   PDDEML_MSG_HOOK_DATA* = ptr DDEML_MSG_HOOK_DATA
   MONMSGSTRUCT* {.pure.} = object
     cb*: UINT
@@ -60,6 +64,7 @@
     wParam*: WPARAM
     lParam*: LPARAM
     dmhd*: DDEML_MSG_HOOK_DATA
+
   PMONMSGSTRUCT* = ptr MONMSGSTRUCT
   MONCBSTRUCT* {.pure.} = object
     cb*: UINT
@@ -77,6 +82,7 @@
     cc*: CONVCONTEXT
     cbData*: DWORD
     Data*: array[8, DWORD]
+
   PMONCBSTRUCT* = ptr MONCBSTRUCT
   MONHSZSTRUCTA* {.pure.} = object
     cb*: UINT
@@ -85,6 +91,7 @@
     hsz*: HSZ
     hTask*: HANDLE
     str*: array[1, CHAR]
+
   PMONHSZSTRUCTA* = ptr MONHSZSTRUCTA
   MONHSZSTRUCTW* {.pure.} = object
     cb*: UINT
@@ -93,12 +100,14 @@
     hsz*: HSZ
     hTask*: HANDLE
     str*: array[1, WCHAR]
+
   PMONHSZSTRUCTW* = ptr MONHSZSTRUCTW
   MONERRSTRUCT* {.pure.} = object
     cb*: UINT
     wLastError*: UINT
     dwTime*: DWORD
     hTask*: HANDLE
+
   PMONERRSTRUCT* = ptr MONERRSTRUCT
   MONLINKSTRUCT* {.pure.} = object
     cb*: UINT
@@ -113,6 +122,7 @@
     fServer*: WINBOOL
     hConvServer*: HCONV
     hConvClient*: HCONV
+
   PMONLINKSTRUCT* = ptr MONLINKSTRUCT
   MONCONVSTRUCT* {.pure.} = object
     cb*: UINT
@@ -123,7 +133,9 @@
     hszTopic*: HSZ
     hConvClient*: HCONV
     hConvServer*: HCONV
+
   PMONCONVSTRUCT* = ptr MONCONVSTRUCT
+
 const
   CDERR_DIALOGFAILURE* = 0xFFFF
   CDERR_GENERALCODES* = 0x0000
@@ -164,15 +176,15 @@
   CCERR_CHOOSECOLORCODES* = 0x5000
   WM_DDE_FIRST* = 0x03E0
   WM_DDE_INITIATE* = WM_DDE_FIRST
-  WM_DDE_TERMINATE* = WM_DDE_FIRST+1
-  WM_DDE_ADVISE* = WM_DDE_FIRST+2
-  WM_DDE_UNADVISE* = WM_DDE_FIRST+3
-  WM_DDE_ACK* = WM_DDE_FIRST+4
-  WM_DDE_DATA* = WM_DDE_FIRST+5
-  WM_DDE_REQUEST* = WM_DDE_FIRST+6
-  WM_DDE_POKE* = WM_DDE_FIRST+7
-  WM_DDE_EXECUTE* = WM_DDE_FIRST+8
-  WM_DDE_LAST* = WM_DDE_FIRST+8
+  WM_DDE_TERMINATE* = WM_DDE_FIRST + 1
+  WM_DDE_ADVISE* = WM_DDE_FIRST + 2
+  WM_DDE_UNADVISE* = WM_DDE_FIRST + 3
+  WM_DDE_ACK* = WM_DDE_FIRST + 4
+  WM_DDE_DATA* = WM_DDE_FIRST + 5
+  WM_DDE_REQUEST* = WM_DDE_FIRST + 6
+  WM_DDE_POKE* = WM_DDE_FIRST + 7
+  WM_DDE_EXECUTE* = WM_DDE_FIRST + 8
+  WM_DDE_LAST* = WM_DDE_FIRST + 8
   XST_NULL* = 0
   XST_INCOMPLETE* = 1
   XST_CONNECTED* = 2
@@ -314,98 +326,262 @@
   MF_CONV* = 0x40000000
   MF_MASK* = 0xFF000000'i32
 type
-  FNCALLBACK* = proc (wType: UINT, wFmt: UINT, hConv: HCONV, hsz1: HSZ, hsz2: HSZ, hData: HDDEDATA, dwData1: ULONG_PTR, dwData2: ULONG_PTR): HDDEDATA {.stdcall.}
-  PFNCALLBACK* = proc (wType: UINT, wFmt: UINT, hConv: HCONV, hsz1: HSZ, hsz2: HSZ, hData: HDDEDATA, dwData1: ULONG_PTR, dwData2: ULONG_PTR): HDDEDATA {.stdcall.}
+  FNCALLBACK* = proc(
+    wType: UINT,
+    wFmt: UINT,
+    hConv: HCONV,
+    hsz1: HSZ,
+    hsz2: HSZ,
+    hData: HDDEDATA,
+    dwData1: ULONG_PTR,
+    dwData2: ULONG_PTR,
+  ): HDDEDATA {.stdcall.}
+  PFNCALLBACK* = proc(
+    wType: UINT,
+    wFmt: UINT,
+    hConv: HCONV,
+    hsz1: HSZ,
+    hsz2: HSZ,
+    hData: HDDEDATA,
+    dwData1: ULONG_PTR,
+    dwData2: ULONG_PTR,
+  ): HDDEDATA {.stdcall.}
   DDEACK* {.pure.} = object
-    bAppReturnCode* {.bitsize:8.}: uint16
-    reserved* {.bitsize:6.}: uint16
-    fBusy* {.bitsize:1.}: uint16
-    fAck* {.bitsize:1.}: uint16
+    bAppReturnCode* {.bitsize: 8.}: uint16
+    reserved* {.bitsize: 6.}: uint16
+    fBusy* {.bitsize: 1.}: uint16
+    fAck* {.bitsize: 1.}: uint16
+
   DDEADVISE* {.pure.} = object
-    reserved* {.bitsize:14.}: uint16
-    fDeferUpd* {.bitsize:1.}: uint16
-    fAckReq* {.bitsize:1.}: uint16
+    reserved* {.bitsize: 14.}: uint16
+    fDeferUpd* {.bitsize: 1.}: uint16
+    fAckReq* {.bitsize: 1.}: uint16
     cfFormat*: int16
+
   DDEDATA* {.pure.} = object
-    unused* {.bitsize:12.}: uint16
-    fResponse* {.bitsize:1.}: uint16
-    fRelease* {.bitsize:1.}: uint16
-    reserved* {.bitsize:1.}: uint16
-    fAckReq* {.bitsize:1.}: uint16
+    unused* {.bitsize: 12.}: uint16
+    fResponse* {.bitsize: 1.}: uint16
+    fRelease* {.bitsize: 1.}: uint16
+    reserved* {.bitsize: 1.}: uint16
+    fAckReq* {.bitsize: 1.}: uint16
     cfFormat*: int16
     Value*: array[1, BYTE]
+
   DDEPOKE* {.pure.} = object
-    unused* {.bitsize:13.}: uint16
-    fRelease* {.bitsize:1.}: uint16
-    fReserved* {.bitsize:2.}: uint16
+    unused* {.bitsize: 13.}: uint16
+    fRelease* {.bitsize: 1.}: uint16
+    fReserved* {.bitsize: 2.}: uint16
     cfFormat*: int16
     Value*: array[1, BYTE]
+
   DDELN* {.pure.} = object
-    unused* {.bitsize:13.}: uint16
-    fRelease* {.bitsize:1.}: uint16
-    fDeferUpd* {.bitsize:1.}: uint16
-    fAckReq* {.bitsize:1.}: uint16
+    unused* {.bitsize: 13.}: uint16
+    fRelease* {.bitsize: 1.}: uint16
+    fDeferUpd* {.bitsize: 1.}: uint16
+    fAckReq* {.bitsize: 1.}: uint16
     cfFormat*: int16
+
   DDEUP* {.pure.} = object
-    unused* {.bitsize:12.}: uint16
-    fAck* {.bitsize:1.}: uint16
-    fRelease* {.bitsize:1.}: uint16
-    fReserved* {.bitsize:1.}: uint16
-    fAckReq* {.bitsize:1.}: uint16
+    unused* {.bitsize: 12.}: uint16
+    fAck* {.bitsize: 1.}: uint16
+    fRelease* {.bitsize: 1.}: uint16
+    fReserved* {.bitsize: 1.}: uint16
+    fAckReq* {.bitsize: 1.}: uint16
     cfFormat*: int16
     rgb*: array[1, BYTE]
-proc DdeSetQualityOfService*(hwndClient: HWND, pqosNew: ptr SECURITY_QUALITY_OF_SERVICE, pqosPrev: PSECURITY_QUALITY_OF_SERVICE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ImpersonateDdeClientWindow*(hWndClient: HWND, hWndServer: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc PackDDElParam*(msg: UINT, uiLo: UINT_PTR, uiHi: UINT_PTR): LPARAM {.winapi, stdcall, dynlib: "user32", importc.}
-proc UnpackDDElParam*(msg: UINT, lParam: LPARAM, puiLo: PUINT_PTR, puiHi: PUINT_PTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc FreeDDElParam*(msg: UINT, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ReuseDDElParam*(lParam: LPARAM, msgIn: UINT, msgOut: UINT, uiLo: UINT_PTR, uiHi: UINT_PTR): LPARAM {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeInitializeA*(pidInst: LPDWORD, pfnCallback: PFNCALLBACK, afCmd: DWORD, ulRes: DWORD): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeInitializeW*(pidInst: LPDWORD, pfnCallback: PFNCALLBACK, afCmd: DWORD, ulRes: DWORD): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeUninitialize*(idInst: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeConnectList*(idInst: DWORD, hszService: HSZ, hszTopic: HSZ, hConvList: HCONVLIST, pCC: PCONVCONTEXT): HCONVLIST {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeQueryNextServer*(hConvList: HCONVLIST, hConvPrev: HCONV): HCONV {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeDisconnectList*(hConvList: HCONVLIST): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeConnect*(idInst: DWORD, hszService: HSZ, hszTopic: HSZ, pCC: PCONVCONTEXT): HCONV {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeDisconnect*(hConv: HCONV): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeSetQualityOfService*(
+  hwndClient: HWND,
+  pqosNew: ptr SECURITY_QUALITY_OF_SERVICE,
+  pqosPrev: PSECURITY_QUALITY_OF_SERVICE,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ImpersonateDdeClientWindow*(
+  hWndClient: HWND, hWndServer: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PackDDElParam*(
+  msg: UINT, uiLo: UINT_PTR, uiHi: UINT_PTR
+): LPARAM {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UnpackDDElParam*(
+  msg: UINT, lParam: LPARAM, puiLo: PUINT_PTR, puiHi: PUINT_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc FreeDDElParam*(
+  msg: UINT, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ReuseDDElParam*(
+  lParam: LPARAM, msgIn: UINT, msgOut: UINT, uiLo: UINT_PTR, uiHi: UINT_PTR
+): LPARAM {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeInitializeA*(
+  pidInst: LPDWORD, pfnCallback: PFNCALLBACK, afCmd: DWORD, ulRes: DWORD
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeInitializeW*(
+  pidInst: LPDWORD, pfnCallback: PFNCALLBACK, afCmd: DWORD, ulRes: DWORD
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeUninitialize*(
+  idInst: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeConnectList*(
+  idInst: DWORD, hszService: HSZ, hszTopic: HSZ, hConvList: HCONVLIST, pCC: PCONVCONTEXT
+): HCONVLIST {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeQueryNextServer*(
+  hConvList: HCONVLIST, hConvPrev: HCONV
+): HCONV {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeDisconnectList*(
+  hConvList: HCONVLIST
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeConnect*(
+  idInst: DWORD, hszService: HSZ, hszTopic: HSZ, pCC: PCONVCONTEXT
+): HCONV {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeDisconnect*(
+  hConv: HCONV
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc DdeReconnect*(hConv: HCONV): HCONV {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeQueryConvInfo*(hConv: HCONV, idTransaction: DWORD, pConvInfo: PCONVINFO): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeSetUserHandle*(hConv: HCONV, id: DWORD, hUser: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeAbandonTransaction*(idInst: DWORD, hConv: HCONV, idTransaction: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdePostAdvise*(idInst: DWORD, hszTopic: HSZ, hszItem: HSZ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeEnableCallback*(idInst: DWORD, hConv: HCONV, wCmd: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeImpersonateClient*(hConv: HCONV): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeNameService*(idInst: DWORD, hsz1: HSZ, hsz2: HSZ, afCmd: UINT): HDDEDATA {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeClientTransaction*(pData: LPBYTE, cbData: DWORD, hConv: HCONV, hszItem: HSZ, wFmt: UINT, wType: UINT, dwTimeout: DWORD, pdwResult: LPDWORD): HDDEDATA {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeCreateDataHandle*(idInst: DWORD, pSrc: LPBYTE, cb: DWORD, cbOff: DWORD, hszItem: HSZ, wFmt: UINT, afCmd: UINT): HDDEDATA {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeAddData*(hData: HDDEDATA, pSrc: LPBYTE, cb: DWORD, cbOff: DWORD): HDDEDATA {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeGetData*(hData: HDDEDATA, pDst: LPBYTE, cbMax: DWORD, cbOff: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeAccessData*(hData: HDDEDATA, pcbDataSize: LPDWORD): LPBYTE {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeUnaccessData*(hData: HDDEDATA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeFreeDataHandle*(hData: HDDEDATA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeGetLastError*(idInst: DWORD): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeCreateStringHandleA*(idInst: DWORD, psz: LPCSTR, iCodePage: int32): HSZ {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeCreateStringHandleW*(idInst: DWORD, psz: LPCWSTR, iCodePage: int32): HSZ {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeQueryStringA*(idInst: DWORD, hsz: HSZ, psz: LPSTR, cchMax: DWORD, iCodePage: int32): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeQueryStringW*(idInst: DWORD, hsz: HSZ, psz: LPWSTR, cchMax: DWORD, iCodePage: int32): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeFreeStringHandle*(idInst: DWORD, hsz: HSZ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeKeepStringHandle*(idInst: DWORD, hsz: HSZ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DdeCmpStringHandles*(hsz1: HSZ, hsz2: HSZ): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+proc DdeQueryConvInfo*(
+  hConv: HCONV, idTransaction: DWORD, pConvInfo: PCONVINFO
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeSetUserHandle*(
+  hConv: HCONV, id: DWORD, hUser: DWORD_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeAbandonTransaction*(
+  idInst: DWORD, hConv: HCONV, idTransaction: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdePostAdvise*(
+  idInst: DWORD, hszTopic: HSZ, hszItem: HSZ
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeEnableCallback*(
+  idInst: DWORD, hConv: HCONV, wCmd: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeImpersonateClient*(
+  hConv: HCONV
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeNameService*(
+  idInst: DWORD, hsz1: HSZ, hsz2: HSZ, afCmd: UINT
+): HDDEDATA {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeClientTransaction*(
+  pData: LPBYTE,
+  cbData: DWORD,
+  hConv: HCONV,
+  hszItem: HSZ,
+  wFmt: UINT,
+  wType: UINT,
+  dwTimeout: DWORD,
+  pdwResult: LPDWORD,
+): HDDEDATA {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeCreateDataHandle*(
+  idInst: DWORD,
+  pSrc: LPBYTE,
+  cb: DWORD,
+  cbOff: DWORD,
+  hszItem: HSZ,
+  wFmt: UINT,
+  afCmd: UINT,
+): HDDEDATA {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeAddData*(
+  hData: HDDEDATA, pSrc: LPBYTE, cb: DWORD, cbOff: DWORD
+): HDDEDATA {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeGetData*(
+  hData: HDDEDATA, pDst: LPBYTE, cbMax: DWORD, cbOff: DWORD
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeAccessData*(
+  hData: HDDEDATA, pcbDataSize: LPDWORD
+): LPBYTE {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeUnaccessData*(
+  hData: HDDEDATA
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeFreeDataHandle*(
+  hData: HDDEDATA
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeGetLastError*(
+  idInst: DWORD
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeCreateStringHandleA*(
+  idInst: DWORD, psz: LPCSTR, iCodePage: int32
+): HSZ {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeCreateStringHandleW*(
+  idInst: DWORD, psz: LPCWSTR, iCodePage: int32
+): HSZ {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeQueryStringA*(
+  idInst: DWORD, hsz: HSZ, psz: LPSTR, cchMax: DWORD, iCodePage: int32
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeQueryStringW*(
+  idInst: DWORD, hsz: HSZ, psz: LPWSTR, cchMax: DWORD, iCodePage: int32
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeFreeStringHandle*(
+  idInst: DWORD, hsz: HSZ
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeKeepStringHandle*(
+  idInst: DWORD, hsz: HSZ
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DdeCmpStringHandles*(
+  hsz1: HSZ, hsz2: HSZ
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
 when winimUnicode:
   type
     MONHSZSTRUCT* = MONHSZSTRUCTW
     PMONHSZSTRUCT* = PMONHSZSTRUCTW
-  const
-    CP_WINNEUTRAL* = CP_WINUNICODE
-  proc DdeInitialize*(pidInst: LPDWORD, pfnCallback: PFNCALLBACK, afCmd: DWORD, ulRes: DWORD): UINT {.winapi, stdcall, dynlib: "user32", importc: "DdeInitializeW".}
-  proc DdeCreateStringHandle*(idInst: DWORD, psz: LPCWSTR, iCodePage: int32): HSZ {.winapi, stdcall, dynlib: "user32", importc: "DdeCreateStringHandleW".}
-  proc DdeQueryString*(idInst: DWORD, hsz: HSZ, psz: LPWSTR, cchMax: DWORD, iCodePage: int32): DWORD {.winapi, stdcall, dynlib: "user32", importc: "DdeQueryStringW".}
+
+  const CP_WINNEUTRAL* = CP_WINUNICODE
+  proc DdeInitialize*(
+    pidInst: LPDWORD, pfnCallback: PFNCALLBACK, afCmd: DWORD, ulRes: DWORD
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "DdeInitializeW".}
+
+  proc DdeCreateStringHandle*(
+    idInst: DWORD, psz: LPCWSTR, iCodePage: int32
+  ): HSZ {.winapi, stdcall, dynlib: "user32", importc: "DdeCreateStringHandleW".}
+
+  proc DdeQueryString*(
+    idInst: DWORD, hsz: HSZ, psz: LPWSTR, cchMax: DWORD, iCodePage: int32
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "DdeQueryStringW".}
+
 when winimAnsi:
   type
     MONHSZSTRUCT* = MONHSZSTRUCTA
     PMONHSZSTRUCT* = PMONHSZSTRUCTA
-  const
-    CP_WINNEUTRAL* = CP_WINANSI
-  proc DdeInitialize*(pidInst: LPDWORD, pfnCallback: PFNCALLBACK, afCmd: DWORD, ulRes: DWORD): UINT {.winapi, stdcall, dynlib: "user32", importc: "DdeInitializeA".}
-  proc DdeCreateStringHandle*(idInst: DWORD, psz: LPCSTR, iCodePage: int32): HSZ {.winapi, stdcall, dynlib: "user32", importc: "DdeCreateStringHandleA".}
-  proc DdeQueryString*(idInst: DWORD, hsz: HSZ, psz: LPSTR, cchMax: DWORD, iCodePage: int32): DWORD {.winapi, stdcall, dynlib: "user32", importc: "DdeQueryStringA".}
+
+  const CP_WINNEUTRAL* = CP_WINANSI
+  proc DdeInitialize*(
+    pidInst: LPDWORD, pfnCallback: PFNCALLBACK, afCmd: DWORD, ulRes: DWORD
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "DdeInitializeA".}
+
+  proc DdeCreateStringHandle*(
+    idInst: DWORD, psz: LPCSTR, iCodePage: int32
+  ): HSZ {.winapi, stdcall, dynlib: "user32", importc: "DdeCreateStringHandleA".}
+
+  proc DdeQueryString*(
+    idInst: DWORD, hsz: HSZ, psz: LPSTR, cchMax: DWORD, iCodePage: int32
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "DdeQueryStringA".}
--- a/semicongine/thirdparty/winim/winim/inc/dhcpcsdk.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/dhcpcsdk.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -14,6 +14,7 @@
     IsVendor*: WINBOOL
     Data*: LPBYTE
     nBytesData*: DWORD
+
   PDHCPAPI_PARAMS* = ptr DHCPAPI_PARAMS
   LPDHCPAPI_PARAMS* = ptr DHCPAPI_PARAMS
   DHCPCAPI_PARAMS* = DHCPAPI_PARAMS
@@ -22,14 +23,17 @@
   DHCPCAPI_PARAMS_ARRAY* {.pure.} = object
     nParams*: ULONG
     Params*: LPDHCPCAPI_PARAMS
+
   PDHCPCAPI_PARAMS_ARRAY* = ptr DHCPCAPI_PARAMS_ARRAY
   LPDHCPCAPI_PARAMS_ARRAY* = ptr DHCPCAPI_PARAMS_ARRAY
   DHCPCAPI_CLASSID* {.pure.} = object
     Flags*: ULONG
     Data*: LPBYTE
     nBytesData*: ULONG
+
   PDHCPCAPI_CLASSID* = ptr DHCPCAPI_CLASSID
   LPDHCPCAPI_CLASSID* = ptr DHCPCAPI_CLASSID
+
 const
   OPTION_PAD* = 0
   OPTION_SUBNET_MASK* = 1
@@ -103,10 +107,40 @@
   DHCPCAPI_REQUEST_MASK* = 0x0F
   DHCPCAPI_REGISTER_HANDLE_EVENT* = 0x01
   DHCPCAPI_DEREGISTER_HANDLE_EVENT* = 0x01
-proc DhcpCApiInitialize*(Version: LPDWORD): DWORD {.winapi, stdcall, dynlib: "dhcpcsvc", importc.}
+proc DhcpCApiInitialize*(
+  Version: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "dhcpcsvc", importc.}
+
 proc DhcpCApiCleanup*(): VOID {.winapi, stdcall, dynlib: "dhcpcsvc", importc.}
-proc DhcpRequestParams*(Flags: DWORD, Reserved: LPVOID, AdapterName: LPWSTR, ClassId: LPDHCPCAPI_CLASSID, SendParams: DHCPCAPI_PARAMS_ARRAY, RecdParams: DHCPCAPI_PARAMS_ARRAY, Buffer: LPBYTE, pSize: LPDWORD, RequestIdStr: LPWSTR): DWORD {.winapi, stdcall, dynlib: "dhcpcsvc", importc.}
-proc DhcpUndoRequestParams*(Flags: DWORD, Reserved: LPVOID, AdapterName: LPWSTR, RequestIdStr: LPWSTR): DWORD {.winapi, stdcall, dynlib: "dhcpcsvc", importc.}
-proc DhcpRegisterParamChange*(Flags: DWORD, Reserved: LPVOID, AdapterName: LPWSTR, ClassId: LPDHCPCAPI_CLASSID, Params: DHCPCAPI_PARAMS_ARRAY, Handle: LPVOID): DWORD {.winapi, stdcall, dynlib: "dhcpcsvc", importc.}
-proc DhcpDeRegisterParamChange*(Flags: DWORD, Reserved: LPVOID, Event: LPVOID): DWORD {.winapi, stdcall, dynlib: "dhcpcsvc", importc.}
-proc DhcpRemoveDNSRegistrations*(): DWORD {.winapi, stdcall, dynlib: "dhcpcsvc", importc.}
+proc DhcpRequestParams*(
+  Flags: DWORD,
+  Reserved: LPVOID,
+  AdapterName: LPWSTR,
+  ClassId: LPDHCPCAPI_CLASSID,
+  SendParams: DHCPCAPI_PARAMS_ARRAY,
+  RecdParams: DHCPCAPI_PARAMS_ARRAY,
+  Buffer: LPBYTE,
+  pSize: LPDWORD,
+  RequestIdStr: LPWSTR,
+): DWORD {.winapi, stdcall, dynlib: "dhcpcsvc", importc.}
+
+proc DhcpUndoRequestParams*(
+  Flags: DWORD, Reserved: LPVOID, AdapterName: LPWSTR, RequestIdStr: LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "dhcpcsvc", importc.}
+
+proc DhcpRegisterParamChange*(
+  Flags: DWORD,
+  Reserved: LPVOID,
+  AdapterName: LPWSTR,
+  ClassId: LPDHCPCAPI_CLASSID,
+  Params: DHCPCAPI_PARAMS_ARRAY,
+  Handle: LPVOID,
+): DWORD {.winapi, stdcall, dynlib: "dhcpcsvc", importc.}
+
+proc DhcpDeRegisterParamChange*(
+  Flags: DWORD, Reserved: LPVOID, Event: LPVOID
+): DWORD {.winapi, stdcall, dynlib: "dhcpcsvc", importc.}
+
+proc DhcpRemoveDNSRegistrations*(): DWORD {.
+  winapi, stdcall, dynlib: "dhcpcsvc", importc
+.}
--- a/semicongine/thirdparty/winim/winim/inc/dwmapi.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/dwmapi.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -25,6 +25,7 @@
     fEnable*: BOOL
     hRgnBlur*: HRGN
     fTransitionOnMaximized*: BOOL
+
   PDWM_BLURBEHIND* = ptr DWM_BLURBEHIND
   PHTHUMBNAIL* = ptr HTHUMBNAIL
   DWM_THUMBNAIL_PROPERTIES* {.pure.} = object
@@ -34,7 +35,9 @@
     opacity*: BYTE
     fVisible*: BOOL
     fSourceClientAreaOnly*: BOOL
+
   PDWM_THUMBNAIL_PROPERTIES* = ptr DWM_THUMBNAIL_PROPERTIES
+
 const
   DWM_BB_ENABLE* = 0x00000001
   DWM_BB_BLURREGION* = 0x00000002
@@ -116,6 +119,7 @@
   UNSIGNED_RATIO* {.pure.} = object
     uiNumerator*: UINT32
     uiDenominator*: UINT32
+
   DWM_TIMING_INFO* {.pure.} = object
     cbSize*: UINT32
     rateRefresh*: UNSIGNED_RATIO
@@ -157,6 +161,7 @@
     cPixelsReceived*: ULONGLONG
     cPixelsDrawn*: ULONGLONG
     cBuffersEmpty*: DWM_FRAME_COUNT
+
   DWM_PRESENT_PARAMETERS* {.pure.} = object
     cbSize*: UINT32
     fQueue*: BOOL
@@ -166,6 +171,7 @@
     rateSource*: UNSIGNED_RATIO
     cRefreshesPerFrame*: UINT
     eSampling*: DWM_SOURCE_FRAME_SAMPLING
+
   MIL_MATRIX3X2D* {.pure.} = object
     S_11*: DOUBLE
     S_12*: DOUBLE
@@ -173,34 +179,124 @@
     S_22*: DOUBLE
     DX*: DOUBLE
     DY*: DOUBLE
-proc DwmDefWindowProc*(hWnd: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): BOOL {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmEnableBlurBehindWindow*(hWnd: HWND, pBlurBehind: ptr DWM_BLURBEHIND): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmEnableComposition*(uCompositionAction: UINT): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmEnableMMCSS*(fEnableMMCSS: BOOL): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmExtendFrameIntoClientArea*(hWnd: HWND, pMarInset: ptr MARGINS): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmGetColorizationColor*(pcrColorization: ptr DWORD, pfOpaqueBlend: ptr BOOL): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmGetCompositionTimingInfo*(hwnd: HWND, pTimingInfo: ptr DWM_TIMING_INFO): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmGetWindowAttribute*(hwnd: HWND, dwAttribute: DWORD, pvAttribute: PVOID, cbAttribute: DWORD): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmIsCompositionEnabled*(pfEnabled: ptr BOOL): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmModifyPreviousDxFrameDuration*(hwnd: HWND, cRefreshes: INT, fRelative: BOOL): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmQueryThumbnailSourceSize*(hThumbnail: HTHUMBNAIL, pSize: PSIZE): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmRegisterThumbnail*(hwndDestination: HWND, hwndSource: HWND, phThumbnailId: PHTHUMBNAIL): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmSetDxFrameDuration*(hwnd: HWND, cRefreshes: INT): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmSetPresentParameters*(hwnd: HWND, pPresentParams: ptr DWM_PRESENT_PARAMETERS): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmSetWindowAttribute*(hwnd: HWND, dwAttribute: DWORD, pvAttribute: LPCVOID, cbAttribute: DWORD): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmUnregisterThumbnail*(hThumbnailId: HTHUMBNAIL): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmUpdateThumbnailProperties*(hThumbnailId: HTHUMBNAIL, ptnProperties: ptr DWM_THUMBNAIL_PROPERTIES): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmSetIconicThumbnail*(hwnd: HWND, hbmp: HBITMAP, dwSITFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmSetIconicLivePreviewBitmap*(hwnd: HWND, hbmp: HBITMAP, pptClient: ptr POINT, dwSITFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmInvalidateIconicBitmaps*(hwnd: HWND): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmAttachMilContent*(hwnd: HWND): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmDetachMilContent*(hwnd: HWND): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmDefWindowProc*(
+  hWnd: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT
+): BOOL {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmEnableBlurBehindWindow*(
+  hWnd: HWND, pBlurBehind: ptr DWM_BLURBEHIND
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmEnableComposition*(
+  uCompositionAction: UINT
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmEnableMMCSS*(
+  fEnableMMCSS: BOOL
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmExtendFrameIntoClientArea*(
+  hWnd: HWND, pMarInset: ptr MARGINS
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmGetColorizationColor*(
+  pcrColorization: ptr DWORD, pfOpaqueBlend: ptr BOOL
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmGetCompositionTimingInfo*(
+  hwnd: HWND, pTimingInfo: ptr DWM_TIMING_INFO
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmGetWindowAttribute*(
+  hwnd: HWND, dwAttribute: DWORD, pvAttribute: PVOID, cbAttribute: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmIsCompositionEnabled*(
+  pfEnabled: ptr BOOL
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmModifyPreviousDxFrameDuration*(
+  hwnd: HWND, cRefreshes: INT, fRelative: BOOL
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmQueryThumbnailSourceSize*(
+  hThumbnail: HTHUMBNAIL, pSize: PSIZE
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmRegisterThumbnail*(
+  hwndDestination: HWND, hwndSource: HWND, phThumbnailId: PHTHUMBNAIL
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmSetDxFrameDuration*(
+  hwnd: HWND, cRefreshes: INT
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmSetPresentParameters*(
+  hwnd: HWND, pPresentParams: ptr DWM_PRESENT_PARAMETERS
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmSetWindowAttribute*(
+  hwnd: HWND, dwAttribute: DWORD, pvAttribute: LPCVOID, cbAttribute: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmUnregisterThumbnail*(
+  hThumbnailId: HTHUMBNAIL
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmUpdateThumbnailProperties*(
+  hThumbnailId: HTHUMBNAIL, ptnProperties: ptr DWM_THUMBNAIL_PROPERTIES
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmSetIconicThumbnail*(
+  hwnd: HWND, hbmp: HBITMAP, dwSITFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmSetIconicLivePreviewBitmap*(
+  hwnd: HWND, hbmp: HBITMAP, pptClient: ptr POINT, dwSITFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmInvalidateIconicBitmaps*(
+  hwnd: HWND
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmAttachMilContent*(
+  hwnd: HWND
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmDetachMilContent*(
+  hwnd: HWND
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
 proc DwmFlush*(): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmGetGraphicsStreamTransformHint*(uIndex: UINT, pTransform: ptr MIL_MATRIX3X2D): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmGetGraphicsStreamClient*(uIndex: UINT, pClientUuid: ptr GUID): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmGetTransportAttributes*(pfIsRemoting: ptr BOOL, pfIsConnected: ptr BOOL, pDwGeneration: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmTransitionOwnedWindow*(hwnd: HWND, target: DWMTRANSITION_OWNEDWINDOW_TARGET): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmRenderGesture*(gt: GESTURE_TYPE, cContacts: UINT, pdwPointerID: ptr DWORD, pPoints: ptr POINT): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmTetherContact*(dwPointerID: DWORD, fEnable: BOOL, ptTether: POINT): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmShowContact*(dwPointerID: DWORD, eShowContact: DWM_SHOWCONTACT_ENUM): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
-proc DwmGetUnmetTabRequirements*(appWindow: HWND, value: ptr DWM_TAB_WINDOW_REQUIREMENTS): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+proc DwmGetGraphicsStreamTransformHint*(
+  uIndex: UINT, pTransform: ptr MIL_MATRIX3X2D
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmGetGraphicsStreamClient*(
+  uIndex: UINT, pClientUuid: ptr GUID
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmGetTransportAttributes*(
+  pfIsRemoting: ptr BOOL, pfIsConnected: ptr BOOL, pDwGeneration: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmTransitionOwnedWindow*(
+  hwnd: HWND, target: DWMTRANSITION_OWNEDWINDOW_TARGET
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmRenderGesture*(
+  gt: GESTURE_TYPE, cContacts: UINT, pdwPointerID: ptr DWORD, pPoints: ptr POINT
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmTetherContact*(
+  dwPointerID: DWORD, fEnable: BOOL, ptTether: POINT
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmShowContact*(
+  dwPointerID: DWORD, eShowContact: DWM_SHOWCONTACT_ENUM
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
+
+proc DwmGetUnmetTabRequirements*(
+  appWindow: HWND, value: ptr DWM_TAB_WINDOW_REQUIREMENTS
+): HRESULT {.winapi, stdcall, dynlib: "dwmapi", importc.}
--- a/semicongine/thirdparty/winim/winim/inc/gdiplus.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/gdiplus.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -105,9 +105,11 @@
     nPalEntries*: DWORD
     szlDevice*: SIZEL
     szlMillimeters*: SIZEL
+
   LPENHMETAHEADER3* = ptr ENHMETAHEADER3
   PixelFormat* = INT
   ColorChannelLUT* = array[256, BYTE]
+
 const
   brushTypeSolidColor* = 0
   brushTypeHatchFill* = 1
@@ -157,7 +159,9 @@
   driverStringOptionsRealizedAdvance* = 4
   driverStringOptionsLimitSubpixel* = 8
   GDIP_EMFPLUS_RECORD_BASE* = 0x4000
-template GDIP_WMF_RECORD_TO_EMFPLUS*(meta: untyped): untyped = meta or 0x00010000
+template GDIP_WMF_RECORD_TO_EMFPLUS*(meta: untyped): untyped =
+  meta or 0x00010000
+
 const
   wmfRecordTypeSetBkColor* = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKCOLOR)
   wmfRecordTypeSetBkMode* = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKMODE)
@@ -168,7 +172,8 @@
   wmfRecordTypeSetStretchBltMode* = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETSTRETCHBLTMODE)
   wmfRecordTypeSetTextCharExtra* = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCHAREXTRA)
   wmfRecordTypeSetTextColor* = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCOLOR)
-  wmfRecordTypeSetTextJustification* = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTJUSTIFICATION)
+  wmfRecordTypeSetTextJustification* =
+    GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTJUSTIFICATION)
   wmfRecordTypeSetWindowOrg* = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWORG)
   wmfRecordTypeSetWindowExt* = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWEXT)
   wmfRecordTypeSetViewportOrg* = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTORG)
@@ -218,7 +223,8 @@
   wmfRecordTypeResizePalette* = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESIZEPALETTE)
   wmfRecordTypeDIBBitBlt* = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBBITBLT)
   wmfRecordTypeDIBStretchBlt* = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBSTRETCHBLT)
-  wmfRecordTypeDIBCreatePatternBrush* = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBCREATEPATTERNBRUSH)
+  wmfRecordTypeDIBCreatePatternBrush* =
+    GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBCREATEPATTERNBRUSH)
   wmfRecordTypeStretchDIB* = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHDIB)
   wmfRecordTypeExtFloodFill* = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTFLOODFILL)
   wmfRecordTypeSetLayout* = GDIP_WMF_RECORD_TO_EMFPLUS(0x0149)
@@ -234,7 +240,8 @@
   wmfRecordTypeCreatePatternBrush* = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPATTERNBRUSH)
   wmfRecordTypeCreatePenIndirect* = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPENINDIRECT)
   wmfRecordTypeCreateFontIndirect* = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEFONTINDIRECT)
-  wmfRecordTypeCreateBrushIndirect* = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEBRUSHINDIRECT)
+  wmfRecordTypeCreateBrushIndirect* =
+    GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEBRUSHINDIRECT)
   wmfRecordTypeCreateBitmapIndirect* = GDIP_WMF_RECORD_TO_EMFPLUS(0x02FD)
   wmfRecordTypeCreateBitmap* = GDIP_WMF_RECORD_TO_EMFPLUS(0x06FE)
   wmfRecordTypeCreateRegion* = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEREGION)
@@ -363,67 +370,67 @@
   emfRecordTypeMax* = 122
   emfRecordTypeMin* = 1
   emfPlusRecordTypeInvalid* = GDIP_EMFPLUS_RECORD_BASE
-  emfPlusRecordTypeHeader* = GDIP_EMFPLUS_RECORD_BASE+1
-  emfPlusRecordTypeEndOfFile* = GDIP_EMFPLUS_RECORD_BASE+2
-  emfPlusRecordTypeComment* = GDIP_EMFPLUS_RECORD_BASE+3
-  emfPlusRecordTypeGetDC* = GDIP_EMFPLUS_RECORD_BASE+4
-  emfPlusRecordTypeMultiFormatStart* = GDIP_EMFPLUS_RECORD_BASE+5
-  emfPlusRecordTypeMultiFormatSection* = GDIP_EMFPLUS_RECORD_BASE+6
-  emfPlusRecordTypeMultiFormatEnd* = GDIP_EMFPLUS_RECORD_BASE+7
-  emfPlusRecordTypeObject* = GDIP_EMFPLUS_RECORD_BASE+8
-  emfPlusRecordTypeClear* = GDIP_EMFPLUS_RECORD_BASE+9
-  emfPlusRecordTypeFillRects* = GDIP_EMFPLUS_RECORD_BASE+10
-  emfPlusRecordTypeDrawRects* = GDIP_EMFPLUS_RECORD_BASE+11
-  emfPlusRecordTypeFillPolygon* = GDIP_EMFPLUS_RECORD_BASE+12
-  emfPlusRecordTypeDrawLines* = GDIP_EMFPLUS_RECORD_BASE+13
-  emfPlusRecordTypeFillEllipse* = GDIP_EMFPLUS_RECORD_BASE+14
-  emfPlusRecordTypeDrawEllipse* = GDIP_EMFPLUS_RECORD_BASE+15
-  emfPlusRecordTypeFillPie* = GDIP_EMFPLUS_RECORD_BASE+16
-  emfPlusRecordTypeDrawPie* = GDIP_EMFPLUS_RECORD_BASE+17
-  emfPlusRecordTypeDrawArc* = GDIP_EMFPLUS_RECORD_BASE+18
-  emfPlusRecordTypeFillRegion* = GDIP_EMFPLUS_RECORD_BASE+19
-  emfPlusRecordTypeFillPath* = GDIP_EMFPLUS_RECORD_BASE+20
-  emfPlusRecordTypeDrawPath* = GDIP_EMFPLUS_RECORD_BASE+21
-  emfPlusRecordTypeFillClosedCurve* = GDIP_EMFPLUS_RECORD_BASE+22
-  emfPlusRecordTypeDrawClosedCurve* = GDIP_EMFPLUS_RECORD_BASE+23
-  emfPlusRecordTypeDrawCurve* = GDIP_EMFPLUS_RECORD_BASE+24
-  emfPlusRecordTypeDrawBeziers* = GDIP_EMFPLUS_RECORD_BASE+25
-  emfPlusRecordTypeDrawImage* = GDIP_EMFPLUS_RECORD_BASE+26
-  emfPlusRecordTypeDrawImagePoints* = GDIP_EMFPLUS_RECORD_BASE+27
-  emfPlusRecordTypeDrawString* = GDIP_EMFPLUS_RECORD_BASE+28
-  emfPlusRecordTypeSetRenderingOrigin* = GDIP_EMFPLUS_RECORD_BASE+29
-  emfPlusRecordTypeSetAntiAliasMode* = GDIP_EMFPLUS_RECORD_BASE+30
-  emfPlusRecordTypeSetTextRenderingHint* = GDIP_EMFPLUS_RECORD_BASE+31
-  emfPlusRecordTypeSetTextContrast* = GDIP_EMFPLUS_RECORD_BASE+32
-  emfPlusRecordTypeSetGammaValue* = GDIP_EMFPLUS_RECORD_BASE+33
-  emfPlusRecordTypeSetInterpolationMode* = GDIP_EMFPLUS_RECORD_BASE+34
-  emfPlusRecordTypeSetPixelOffsetMode* = GDIP_EMFPLUS_RECORD_BASE+35
-  emfPlusRecordTypeSetCompositingMode* = GDIP_EMFPLUS_RECORD_BASE+36
-  emfPlusRecordTypeSetCompositingQuality* = GDIP_EMFPLUS_RECORD_BASE+37
-  emfPlusRecordTypeSave* = GDIP_EMFPLUS_RECORD_BASE+38
-  emfPlusRecordTypeRestore* = GDIP_EMFPLUS_RECORD_BASE+39
-  emfPlusRecordTypeBeginContainer* = GDIP_EMFPLUS_RECORD_BASE+40
-  emfPlusRecordTypeBeginContainerNoParams* = GDIP_EMFPLUS_RECORD_BASE+41
-  emfPlusRecordTypeEndContainer* = GDIP_EMFPLUS_RECORD_BASE+42
-  emfPlusRecordTypeSetWorldTransform* = GDIP_EMFPLUS_RECORD_BASE+43
-  emfPlusRecordTypeResetWorldTransform* = GDIP_EMFPLUS_RECORD_BASE+44
-  emfPlusRecordTypeMultiplyWorldTransform* = GDIP_EMFPLUS_RECORD_BASE+45
-  emfPlusRecordTypeTranslateWorldTransform* = GDIP_EMFPLUS_RECORD_BASE+46
-  emfPlusRecordTypeScaleWorldTransform* = GDIP_EMFPLUS_RECORD_BASE+47
-  emfPlusRecordTypeRotateWorldTransform* = GDIP_EMFPLUS_RECORD_BASE+48
-  emfPlusRecordTypeSetPageTransform* = GDIP_EMFPLUS_RECORD_BASE+49
-  emfPlusRecordTypeResetClip* = GDIP_EMFPLUS_RECORD_BASE+50
-  emfPlusRecordTypeSetClipRect* = GDIP_EMFPLUS_RECORD_BASE+51
-  emfPlusRecordTypeSetClipPath* = GDIP_EMFPLUS_RECORD_BASE+52
-  emfPlusRecordTypeSetClipRegion* = GDIP_EMFPLUS_RECORD_BASE+53
-  emfPlusRecordTypeOffsetClip* = GDIP_EMFPLUS_RECORD_BASE+54
-  emfPlusRecordTypeDrawDriverString* = GDIP_EMFPLUS_RECORD_BASE+55
-  emfPlusRecordTypeStrokeFillPath* = GDIP_EMFPLUS_RECORD_BASE+56
-  emfPlusRecordTypeSerializableObject* = GDIP_EMFPLUS_RECORD_BASE+57
-  emfPlusRecordTypeSetTSGraphics* = GDIP_EMFPLUS_RECORD_BASE+58
-  emfPlusRecordTypeSetTSClip* = GDIP_EMFPLUS_RECORD_BASE+59
-  emfPlusRecordTotal* = GDIP_EMFPLUS_RECORD_BASE+60
-  emfPlusRecordTypeMax* = emfPlusRecordTotal-1
+  emfPlusRecordTypeHeader* = GDIP_EMFPLUS_RECORD_BASE + 1
+  emfPlusRecordTypeEndOfFile* = GDIP_EMFPLUS_RECORD_BASE + 2
+  emfPlusRecordTypeComment* = GDIP_EMFPLUS_RECORD_BASE + 3
+  emfPlusRecordTypeGetDC* = GDIP_EMFPLUS_RECORD_BASE + 4
+  emfPlusRecordTypeMultiFormatStart* = GDIP_EMFPLUS_RECORD_BASE + 5
+  emfPlusRecordTypeMultiFormatSection* = GDIP_EMFPLUS_RECORD_BASE + 6
+  emfPlusRecordTypeMultiFormatEnd* = GDIP_EMFPLUS_RECORD_BASE + 7
+  emfPlusRecordTypeObject* = GDIP_EMFPLUS_RECORD_BASE + 8
+  emfPlusRecordTypeClear* = GDIP_EMFPLUS_RECORD_BASE + 9
+  emfPlusRecordTypeFillRects* = GDIP_EMFPLUS_RECORD_BASE + 10
+  emfPlusRecordTypeDrawRects* = GDIP_EMFPLUS_RECORD_BASE + 11
+  emfPlusRecordTypeFillPolygon* = GDIP_EMFPLUS_RECORD_BASE + 12
+  emfPlusRecordTypeDrawLines* = GDIP_EMFPLUS_RECORD_BASE + 13
+  emfPlusRecordTypeFillEllipse* = GDIP_EMFPLUS_RECORD_BASE + 14
+  emfPlusRecordTypeDrawEllipse* = GDIP_EMFPLUS_RECORD_BASE + 15
+  emfPlusRecordTypeFillPie* = GDIP_EMFPLUS_RECORD_BASE + 16
+  emfPlusRecordTypeDrawPie* = GDIP_EMFPLUS_RECORD_BASE + 17
+  emfPlusRecordTypeDrawArc* = GDIP_EMFPLUS_RECORD_BASE + 18
+  emfPlusRecordTypeFillRegion* = GDIP_EMFPLUS_RECORD_BASE + 19
+  emfPlusRecordTypeFillPath* = GDIP_EMFPLUS_RECORD_BASE + 20
+  emfPlusRecordTypeDrawPath* = GDIP_EMFPLUS_RECORD_BASE + 21
+  emfPlusRecordTypeFillClosedCurve* = GDIP_EMFPLUS_RECORD_BASE + 22
+  emfPlusRecordTypeDrawClosedCurve* = GDIP_EMFPLUS_RECORD_BASE + 23
+  emfPlusRecordTypeDrawCurve* = GDIP_EMFPLUS_RECORD_BASE + 24
+  emfPlusRecordTypeDrawBeziers* = GDIP_EMFPLUS_RECORD_BASE + 25
+  emfPlusRecordTypeDrawImage* = GDIP_EMFPLUS_RECORD_BASE + 26
+  emfPlusRecordTypeDrawImagePoints* = GDIP_EMFPLUS_RECORD_BASE + 27
+  emfPlusRecordTypeDrawString* = GDIP_EMFPLUS_RECORD_BASE + 28
+  emfPlusRecordTypeSetRenderingOrigin* = GDIP_EMFPLUS_RECORD_BASE + 29
+  emfPlusRecordTypeSetAntiAliasMode* = GDIP_EMFPLUS_RECORD_BASE + 30
+  emfPlusRecordTypeSetTextRenderingHint* = GDIP_EMFPLUS_RECORD_BASE + 31
+  emfPlusRecordTypeSetTextContrast* = GDIP_EMFPLUS_RECORD_BASE + 32
+  emfPlusRecordTypeSetGammaValue* = GDIP_EMFPLUS_RECORD_BASE + 33
+  emfPlusRecordTypeSetInterpolationMode* = GDIP_EMFPLUS_RECORD_BASE + 34
+  emfPlusRecordTypeSetPixelOffsetMode* = GDIP_EMFPLUS_RECORD_BASE + 35
+  emfPlusRecordTypeSetCompositingMode* = GDIP_EMFPLUS_RECORD_BASE + 36
+  emfPlusRecordTypeSetCompositingQuality* = GDIP_EMFPLUS_RECORD_BASE + 37
+  emfPlusRecordTypeSave* = GDIP_EMFPLUS_RECORD_BASE + 38
+  emfPlusRecordTypeRestore* = GDIP_EMFPLUS_RECORD_BASE + 39
+  emfPlusRecordTypeBeginContainer* = GDIP_EMFPLUS_RECORD_BASE + 40
+  emfPlusRecordTypeBeginContainerNoParams* = GDIP_EMFPLUS_RECORD_BASE + 41
+  emfPlusRecordTypeEndContainer* = GDIP_EMFPLUS_RECORD_BASE + 42
+  emfPlusRecordTypeSetWorldTransform* = GDIP_EMFPLUS_RECORD_BASE + 43
+  emfPlusRecordTypeResetWorldTransform* = GDIP_EMFPLUS_RECORD_BASE + 44
+  emfPlusRecordTypeMultiplyWorldTransform* = GDIP_EMFPLUS_RECORD_BASE + 45
+  emfPlusRecordTypeTranslateWorldTransform* = GDIP_EMFPLUS_RECORD_BASE + 46
+  emfPlusRecordTypeScaleWorldTransform* = GDIP_EMFPLUS_RECORD_BASE + 47
+  emfPlusRecordTypeRotateWorldTransform* = GDIP_EMFPLUS_RECORD_BASE + 48
+  emfPlusRecordTypeSetPageTransform* = GDIP_EMFPLUS_RECORD_BASE + 49
+  emfPlusRecordTypeResetClip* = GDIP_EMFPLUS_RECORD_BASE + 50
+  emfPlusRecordTypeSetClipRect* = GDIP_EMFPLUS_RECORD_BASE + 51
+  emfPlusRecordTypeSetClipPath* = GDIP_EMFPLUS_RECORD_BASE + 52
+  emfPlusRecordTypeSetClipRegion* = GDIP_EMFPLUS_RECORD_BASE + 53
+  emfPlusRecordTypeOffsetClip* = GDIP_EMFPLUS_RECORD_BASE + 54
+  emfPlusRecordTypeDrawDriverString* = GDIP_EMFPLUS_RECORD_BASE + 55
+  emfPlusRecordTypeStrokeFillPath* = GDIP_EMFPLUS_RECORD_BASE + 56
+  emfPlusRecordTypeSerializableObject* = GDIP_EMFPLUS_RECORD_BASE + 57
+  emfPlusRecordTypeSetTSGraphics* = GDIP_EMFPLUS_RECORD_BASE + 58
+  emfPlusRecordTypeSetTSClip* = GDIP_EMFPLUS_RECORD_BASE + 59
+  emfPlusRecordTotal* = GDIP_EMFPLUS_RECORD_BASE + 60
+  emfPlusRecordTypeMax* = emfPlusRecordTotal - 1
   emfPlusRecordTypeMin* = emfPlusRecordTypeHeader
   emfToWmfBitsFlagsDefault* = 0
   emfToWmfBitsFlagsEmbedEmf* = 1
@@ -531,7 +538,7 @@
   hatchStyleSolidDiamond* = 52
   hatchStyleTotal* = 53
   hatchStyleMin* = hatchStyleHorizontal
-  hatchStyleMax* = hatchStyleTotal-1
+  hatchStyleMax* = hatchStyleTotal - 1
   hotkeyPrefixNone* = 0
   hotkeyPrefixShow* = 1
   hotkeyPrefixHide* = 2
@@ -981,11 +988,17 @@
   pixelFormat16bppARGB1555* = INT(7 or (16 shl 8) or pixelFormatAlpha or pixelFormatGDI)
   pixelFormat24bppRGB* = INT(8 or (24 shl 8) or pixelFormatGDI)
   pixelFormat32bppRGB* = INT(9 or (32 shl 8) or pixelFormatGDI)
-  pixelFormat32bppARGB* = INT(10 or (32 shl 8) or pixelFormatAlpha or pixelFormatGDI or pixelFormatCanonical)
-  pixelFormat32bppPARGB* = INT(11 or (32 shl 8) or pixelFormatAlpha or pixelFormatPAlpha or pixelFormatGDI)
+  pixelFormat32bppARGB* =
+    INT(10 or (32 shl 8) or pixelFormatAlpha or pixelFormatGDI or pixelFormatCanonical)
+  pixelFormat32bppPARGB* =
+    INT(11 or (32 shl 8) or pixelFormatAlpha or pixelFormatPAlpha or pixelFormatGDI)
   pixelFormat48bppRGB* = INT(12 or (48 shl 8) or pixelFormatExtended)
-  pixelFormat64bppARGB* = INT(13 or (64 shl 8) or pixelFormatAlpha or pixelFormatCanonical or pixelFormatExtended)
-  pixelFormat64bppPARGB* = INT(14 or (64 shl 8) or pixelFormatAlpha or pixelFormatPAlpha or pixelFormatExtended)
+  pixelFormat64bppARGB* = INT(
+    13 or (64 shl 8) or pixelFormatAlpha or pixelFormatCanonical or pixelFormatExtended
+  )
+  pixelFormat64bppPARGB* = INT(
+    14 or (64 shl 8) or pixelFormatAlpha or pixelFormatPAlpha or pixelFormatExtended
+  )
   pixelFormatMax* = INT 15
   paletteFlagsHasAlpha* = 1
   paletteFlagsGrayScale* = 2
@@ -1035,72 +1048,146 @@
   curveChannelRed* = 1
   curveChannelGreen* = 2
   curveChannelBlue* = 3
-  EncoderChrominanceTable* = DEFINE_GUID(0xF2E455DC'i32, 0x09B3, 0x4316, [0x82'u8,0x60,0x67,0x6A,0xDA,0x32,0x48,0x1C])
-  EncoderColorDepth* = DEFINE_GUID(0x66087055'i32, 0xAD66, 0x4C7C, [0x9A'u8,0x18,0x38,0xA2,0x31,0x0B,0x83,0x37])
-  EncoderCompression* = DEFINE_GUID(0xE09D739D'i32, 0xCCD4, 0x44EE, [0x8E'u8,0xBA,0x3F,0xBF,0x8B,0xE4,0xFC,0x58])
-  EncoderLuminanceTable* = DEFINE_GUID(0xEDB33BCE'i32, 0x0266, 0x4A77, [0xB9'u8,0x04,0x27,0x21,0x60,0x99,0xE7,0x17])
-  EncoderQuality* = DEFINE_GUID(0x1D5BE4B5'i32, 0xFA4A, 0x452D, [0x9C'u8,0xDD,0x5D,0xB3,0x51,0x05,0xE7,0xEB])
-  EncoderRenderMethod* = DEFINE_GUID(0x6D42C53A'i32, 0x229A, 0x4825, [0x8B'u8,0xB7,0x5C,0x99,0xE2,0xB9,0xA8,0xB8])
-  EncoderSaveFlag* = DEFINE_GUID(0x292266FC'i32, 0xAC40, 0x47BF, [0x8C'u8,0xFC,0xA8,0x5B,0x89,0xA6,0x55,0xDE])
-  EncoderScanMethod* = DEFINE_GUID(0x3A4E2661'i32, 0x3109, 0x4E56, [0x85'u8,0x36,0x42,0xC1,0x56,0xE7,0xDC,0xFA])
-  EncoderTransformation* = DEFINE_GUID(0x8D0EB2D1'i32, 0xA58E, 0x4EA8, [0xAA'u8,0x14,0x10,0x80,0x74,0xB7,0xB6,0xF9])
-  EncoderVersion* = DEFINE_GUID(0x24D18C76'i32, 0x814A, 0x41A4, [0xBF'u8,0x53,0x1C,0x21,0x9C,0xCC,0xF7,0x97])
-  ImageFormatBMP* = DEFINE_GUID(0xB96B3CAB'i32, 0x0728, 0x11D3, [0x9D'u8,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E])
-  ImageFormatEMF* = DEFINE_GUID(0xB96B3CAC'i32, 0x0728, 0x11D3, [0x9D'u8,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E])
-  ImageFormatGIF* = DEFINE_GUID(0xB96B3CB0'i32, 0x0728, 0x11D3, [0x9D'u8,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E])
-  ImageFormatIcon* = DEFINE_GUID(0xB96B3CB5'i32, 0x0728, 0x11D3, [0x9D'u8,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E])
-  ImageFormatJPEG* = DEFINE_GUID(0xB96B3CAE'i32, 0x0728, 0x11D3, [0x9D'u8,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E])
-  ImageFormatMemoryBMP* = DEFINE_GUID(0xB96B3CAA'i32, 0x0728, 0x11D3, [0x9D'u8,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E])
-  ImageFormatPNG* = DEFINE_GUID(0xB96B3CAF'i32, 0x0728, 0x11D3, [0x9D'u8,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E])
-  ImageFormatTIFF* = DEFINE_GUID(0xB96B3CB1'i32, 0x0728, 0x11D3, [0x9D'u8,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E])
-  ImageFormatWMF* = DEFINE_GUID(0xB96B3CAD'i32, 0x0728, 0x11D3, [0x9D'u8,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E])
-  FrameDimensionPage* = DEFINE_GUID(0x7462DC86'i32, 0x6180, 0x4C7E, [0x8E'u8,0x3F,0xEE,0x73,0x33,0xA7,0xA4,0x83])
-  FrameDimensionTime* = DEFINE_GUID(0x6AEDBD6D'i32, 0x3FB5, 0x418A, [0x83'u8,0xA6,0x7F,0x45,0x22,0x9D,0xC8,0x72])
-  BlurEffectGuid* = DEFINE_GUID(0x633C80A4'i32, 0x1843, 0x482B, [0x9E'u8,0xF2,0xBE,0x28,0x34,0xC5,0xFD,0xD4])
-  BrightnessContrastEffectGuid* = DEFINE_GUID(0xD3A1DBE1'i32, 0x8EC4, 0x4C17, [0x9F'u8,0x4C,0xEA,0x97,0xAD,0x1C,0x34,0x3D])
-  ColorBalanceEffectGuid* = DEFINE_GUID(0x537E597D'i32, 0x251E, 0x48DA, [0x96'u8,0x64,0x29,0xCA,0x49,0x6B,0x70,0xF8])
-  ColorCurveEffectGuid* = DEFINE_GUID(0xDD6A0022'i32, 0x58E4, 0x4A67, [0x9D'u8,0x9B,0xD4,0x8E,0xB8,0x81,0xA5,0x3D])
-  ColorLookupTableEffectGuid* = DEFINE_GUID(0xA7CE72A9'i32, 0x0F7F, 0x40D7, [0xB3'u8,0xCC,0xD0,0xC0,0x2D,0x5C,0x32,0x12])
-  ColorMatrixEffectGuid* = DEFINE_GUID(0x718F2615'i32, 0x7933, 0x40E3, [0xA5'u8,0x11,0x5F,0x68,0xFE,0x14,0xDD,0x74])
-  HueSaturationLightnessEffectGuid* = DEFINE_GUID(0x8B2DD6C3'i32, 0xEB07, 0x4D87, [0xA5'u8,0xF0,0x71,0x08,0xE2,0x6A,0x9C,0x5F])
-  LevelsEffectGuid* = DEFINE_GUID(0x99C354EC'i32, 0x2A31, 0x4F3A, [0x8C'u8,0x34,0x17,0xA8,0x03,0xB3,0x3A,0x25])
-  RedEyeCorrectionEffectGuid* = DEFINE_GUID(0x74D29D05'i32, 0x69A4, 0x4266, [0x95'u8,0x49,0x3C,0xC5,0x28,0x36,0xB6,0x32])
-  SharpenEffectGuid* = DEFINE_GUID(0x63CBF3EE'i32, 0xC526, 0x402C, [0x8F'u8,0x71,0x62,0xC5,0x40,0xBF,0x51,0x42])
-  TintEffectGuid* = DEFINE_GUID(0x1077AF00'i32, 0x2848, 0x4441, [0x94'u8,0x89,0x44,0xAD,0x4C,0x2D,0x7A,0x2C])
+  EncoderChrominanceTable* = DEFINE_GUID(
+    0xF2E455DC'i32, 0x09B3, 0x4316, [0x82'u8, 0x60, 0x67, 0x6A, 0xDA, 0x32, 0x48, 0x1C]
+  )
+  EncoderColorDepth* = DEFINE_GUID(
+    0x66087055'i32, 0xAD66, 0x4C7C, [0x9A'u8, 0x18, 0x38, 0xA2, 0x31, 0x0B, 0x83, 0x37]
+  )
+  EncoderCompression* = DEFINE_GUID(
+    0xE09D739D'i32, 0xCCD4, 0x44EE, [0x8E'u8, 0xBA, 0x3F, 0xBF, 0x8B, 0xE4, 0xFC, 0x58]
+  )
+  EncoderLuminanceTable* = DEFINE_GUID(
+    0xEDB33BCE'i32, 0x0266, 0x4A77, [0xB9'u8, 0x04, 0x27, 0x21, 0x60, 0x99, 0xE7, 0x17]
+  )
+  EncoderQuality* = DEFINE_GUID(
+    0x1D5BE4B5'i32, 0xFA4A, 0x452D, [0x9C'u8, 0xDD, 0x5D, 0xB3, 0x51, 0x05, 0xE7, 0xEB]
+  )
+  EncoderRenderMethod* = DEFINE_GUID(
+    0x6D42C53A'i32, 0x229A, 0x4825, [0x8B'u8, 0xB7, 0x5C, 0x99, 0xE2, 0xB9, 0xA8, 0xB8]
+  )
+  EncoderSaveFlag* = DEFINE_GUID(
+    0x292266FC'i32, 0xAC40, 0x47BF, [0x8C'u8, 0xFC, 0xA8, 0x5B, 0x89, 0xA6, 0x55, 0xDE]
+  )
+  EncoderScanMethod* = DEFINE_GUID(
+    0x3A4E2661'i32, 0x3109, 0x4E56, [0x85'u8, 0x36, 0x42, 0xC1, 0x56, 0xE7, 0xDC, 0xFA]
+  )
+  EncoderTransformation* = DEFINE_GUID(
+    0x8D0EB2D1'i32, 0xA58E, 0x4EA8, [0xAA'u8, 0x14, 0x10, 0x80, 0x74, 0xB7, 0xB6, 0xF9]
+  )
+  EncoderVersion* = DEFINE_GUID(
+    0x24D18C76'i32, 0x814A, 0x41A4, [0xBF'u8, 0x53, 0x1C, 0x21, 0x9C, 0xCC, 0xF7, 0x97]
+  )
+  ImageFormatBMP* = DEFINE_GUID(
+    0xB96B3CAB'i32, 0x0728, 0x11D3, [0x9D'u8, 0x7B, 0x00, 0x00, 0xF8, 0x1E, 0xF3, 0x2E]
+  )
+  ImageFormatEMF* = DEFINE_GUID(
+    0xB96B3CAC'i32, 0x0728, 0x11D3, [0x9D'u8, 0x7B, 0x00, 0x00, 0xF8, 0x1E, 0xF3, 0x2E]
+  )
+  ImageFormatGIF* = DEFINE_GUID(
+    0xB96B3CB0'i32, 0x0728, 0x11D3, [0x9D'u8, 0x7B, 0x00, 0x00, 0xF8, 0x1E, 0xF3, 0x2E]
+  )
+  ImageFormatIcon* = DEFINE_GUID(
+    0xB96B3CB5'i32, 0x0728, 0x11D3, [0x9D'u8, 0x7B, 0x00, 0x00, 0xF8, 0x1E, 0xF3, 0x2E]
+  )
+  ImageFormatJPEG* = DEFINE_GUID(
+    0xB96B3CAE'i32, 0x0728, 0x11D3, [0x9D'u8, 0x7B, 0x00, 0x00, 0xF8, 0x1E, 0xF3, 0x2E]
+  )
+  ImageFormatMemoryBMP* = DEFINE_GUID(
+    0xB96B3CAA'i32, 0x0728, 0x11D3, [0x9D'u8, 0x7B, 0x00, 0x00, 0xF8, 0x1E, 0xF3, 0x2E]
+  )
+  ImageFormatPNG* = DEFINE_GUID(
+    0xB96B3CAF'i32, 0x0728, 0x11D3, [0x9D'u8, 0x7B, 0x00, 0x00, 0xF8, 0x1E, 0xF3, 0x2E]
+  )
+  ImageFormatTIFF* = DEFINE_GUID(
+    0xB96B3CB1'i32, 0x0728, 0x11D3, [0x9D'u8, 0x7B, 0x00, 0x00, 0xF8, 0x1E, 0xF3, 0x2E]
+  )
+  ImageFormatWMF* = DEFINE_GUID(
+    0xB96B3CAD'i32, 0x0728, 0x11D3, [0x9D'u8, 0x7B, 0x00, 0x00, 0xF8, 0x1E, 0xF3, 0x2E]
+  )
+  FrameDimensionPage* = DEFINE_GUID(
+    0x7462DC86'i32, 0x6180, 0x4C7E, [0x8E'u8, 0x3F, 0xEE, 0x73, 0x33, 0xA7, 0xA4, 0x83]
+  )
+  FrameDimensionTime* = DEFINE_GUID(
+    0x6AEDBD6D'i32, 0x3FB5, 0x418A, [0x83'u8, 0xA6, 0x7F, 0x45, 0x22, 0x9D, 0xC8, 0x72]
+  )
+  BlurEffectGuid* = DEFINE_GUID(
+    0x633C80A4'i32, 0x1843, 0x482B, [0x9E'u8, 0xF2, 0xBE, 0x28, 0x34, 0xC5, 0xFD, 0xD4]
+  )
+  BrightnessContrastEffectGuid* = DEFINE_GUID(
+    0xD3A1DBE1'i32, 0x8EC4, 0x4C17, [0x9F'u8, 0x4C, 0xEA, 0x97, 0xAD, 0x1C, 0x34, 0x3D]
+  )
+  ColorBalanceEffectGuid* = DEFINE_GUID(
+    0x537E597D'i32, 0x251E, 0x48DA, [0x96'u8, 0x64, 0x29, 0xCA, 0x49, 0x6B, 0x70, 0xF8]
+  )
+  ColorCurveEffectGuid* = DEFINE_GUID(
+    0xDD6A0022'i32, 0x58E4, 0x4A67, [0x9D'u8, 0x9B, 0xD4, 0x8E, 0xB8, 0x81, 0xA5, 0x3D]
+  )
+  ColorLookupTableEffectGuid* = DEFINE_GUID(
+    0xA7CE72A9'i32, 0x0F7F, 0x40D7, [0xB3'u8, 0xCC, 0xD0, 0xC0, 0x2D, 0x5C, 0x32, 0x12]
+  )
+  ColorMatrixEffectGuid* = DEFINE_GUID(
+    0x718F2615'i32, 0x7933, 0x40E3, [0xA5'u8, 0x11, 0x5F, 0x68, 0xFE, 0x14, 0xDD, 0x74]
+  )
+  HueSaturationLightnessEffectGuid* = DEFINE_GUID(
+    0x8B2DD6C3'i32, 0xEB07, 0x4D87, [0xA5'u8, 0xF0, 0x71, 0x08, 0xE2, 0x6A, 0x9C, 0x5F]
+  )
+  LevelsEffectGuid* = DEFINE_GUID(
+    0x99C354EC'i32, 0x2A31, 0x4F3A, [0x8C'u8, 0x34, 0x17, 0xA8, 0x03, 0xB3, 0x3A, 0x25]
+  )
+  RedEyeCorrectionEffectGuid* = DEFINE_GUID(
+    0x74D29D05'i32, 0x69A4, 0x4266, [0x95'u8, 0x49, 0x3C, 0xC5, 0x28, 0x36, 0xB6, 0x32]
+  )
+  SharpenEffectGuid* = DEFINE_GUID(
+    0x63CBF3EE'i32, 0xC526, 0x402C, [0x8F'u8, 0x71, 0x62, 0xC5, 0x40, 0xBF, 0x51, 0x42]
+  )
+  TintEffectGuid* = DEFINE_GUID(
+    0x1077AF00'i32, 0x2848, 0x4441, [0x94'u8, 0x89, 0x44, 0xAD, 0x4C, 0x2D, 0x7A, 0x2C]
+  )
 type
-  EnumerateMetafileProc* = proc (P1: EmfPlusRecordType, P2: UINT, P3: UINT, P4: ptr BYTE, P5: pointer): BOOL {.stdcall.}
-  NotificationHookProc* = proc (token: ptr ULONG_PTR): GpStatus {.stdcall.}
-  NotificationUnhookProc* = proc (token: ULONG_PTR): VOID {.stdcall.}
+  EnumerateMetafileProc* = proc(
+    P1: EmfPlusRecordType, P2: UINT, P3: UINT, P4: ptr BYTE, P5: pointer
+  ): BOOL {.stdcall.}
+  NotificationHookProc* = proc(token: ptr ULONG_PTR): GpStatus {.stdcall.}
+  NotificationUnhookProc* = proc(token: ULONG_PTR): VOID {.stdcall.}
   GpSize* {.pure.} = object
     Width*: INT
     Height*: INT
+
   GpSizeF* {.pure.} = object
     Width*: REAL
     Height*: REAL
+
   GpPoint* {.pure.} = object
     X*: INT
     Y*: INT
+
   GpPointF* {.pure.} = object
     X*: REAL
     Y*: REAL
+
   GpRect* {.pure.} = object
     X*: INT
     Y*: INT
     Width*: INT
     Height*: INT
+
   GpRectF* {.pure.} = object
     X*: REAL
     Y*: REAL
     Width*: REAL
     Height*: REAL
+
   GdiplusAbort* {.pure.} = object
   CharacterRange* {.pure.} = object
     First*: INT
     Length*: INT
+
   PathData* {.pure.} = object
     Count*: INT
     Points*: ptr GpPointF
     Types*: ptr BYTE
+
   BitmapData* {.pure.} = object
     Width*: UINT
     Height*: UINT
@@ -1108,14 +1195,17 @@
     PixelFormat*: INT
     Scan0*: pointer
     Reserved*: UINT_PTR
+
   EncoderParameter* {.pure.} = object
     Guid*: GUID
     NumberOfValues*: ULONG
     Type*: ULONG
     Value*: pointer
+
   EncoderParameters* {.pure.} = object
     Count*: UINT
     Parameter*: array[1, EncoderParameter]
+
   ImageCodecInfo* {.pure.} = object
     Clsid*: CLSID
     FormatID*: GUID
@@ -1130,6 +1220,7 @@
     SigSize*: DWORD
     SigPattern*: ptr BYTE
     SigMask*: ptr BYTE
+
   ImageItemData* {.pure.} = object
     Size*: UINT
     Position*: UINT
@@ -1138,24 +1229,29 @@
     Data*: ptr UINT
     DataSize*: UINT
     Cookie*: UINT
+
   PropertyItem* {.pure.} = object
     id*: PROPID
     length*: ULONG
     `type`*: WORD
     value*: pointer
+
   GdiplusStartupInput* {.pure.} = object
     GdiplusVersion*: UINT32
     DebugEventCallback*: DebugEventProc
     SuppressBackgroundThread*: BOOL
     SuppressExternalCodecs*: BOOL
+
   GdiplusStartupOutput* {.pure.} = object
     NotificationHook*: NotificationHookProc
     NotificationUnhook*: NotificationUnhookProc
+
   PWMFRect16* {.pure.} = object
     Left*: INT16
     Top*: INT16
     Right*: INT16
     Bottom*: INT16
+
   WmfPlaceableFileHeader* {.pure.} = object
     Key*: UINT32
     Hmf*: INT16
@@ -1163,9 +1259,11 @@
     Inch*: INT16
     Reserved*: UINT32
     Checksum*: INT16
+
   MetafileHeader_UNION1* {.pure, union.} = object
     WmfHeader*: METAHEADER
     EmfHeader*: ENHMETAHEADER3
+
   MetafileHeader* {.pure.} = object
     Type*: MetafileType
     Size*: UINT
@@ -1181,53 +1279,68 @@
     EmfPlusHeaderSize*: INT
     LogicalDpiX*: INT
     LogicalDpiY*: INT
+
   ColorPalette* {.pure.} = object
     Flags*: UINT
     Count*: UINT
     Entries*: array[1, ARGB]
+
   Color* {.pure.} = object
     Value*: ARGB
+
   GpColorMap* {.pure.} = object
     oldColor*: Color
     newColor*: Color
+
   ColorMatrix* {.pure.} = object
     m*: array[5, array[5, REAL]]
+
   BlurParams* {.pure.} = object
     radius*: REAL
     expandEdge*: BOOL
+
   BrightnessContrastParams* {.pure.} = object
     brightnessLevel*: INT
     contrastLevel*: INT
+
   ColorBalanceParams* {.pure.} = object
     cyanRed*: INT
     magentaGreen*: INT
     yellowBlue*: INT
+
   ColorCurveParams* {.pure.} = object
     adjustment*: CurveAdjustments
     channel*: CurveChannel
     adjustValue*: INT
+
   ColorLUTParams* {.pure.} = object
     lutB*: ColorChannelLUT
     lutG*: ColorChannelLUT
     lutR*: ColorChannelLUT
     lutA*: ColorChannelLUT
+
   HueSaturationLightnessParams* {.pure.} = object
     hueLevel*: INT
     saturationLevel*: INT
     lightnessLevel*: INT
+
   LevelsParams* {.pure.} = object
     highlight*: INT
     midtone*: INT
     shadow*: INT
+
   RedEyeCorrectionParams* {.pure.} = object
     numberOfAreas*: UINT
     areas*: ptr RECT
+
   SharpenParams* {.pure.} = object
     radius*: REAL
     amount*: REAL
+
   TintParams* {.pure.} = object
     hue*: INT
     amount*: INT
+
   CGpEffect* {.pure.} = object
   GpAdjustableArrowCap* {.pure.} = object
   GpBitmap* {.pure.} = object
@@ -1253,624 +1366,3099 @@
   GpSolidFill* {.pure.} = object
   GpStringFormat* {.pure.} = object
   GpTexture* {.pure.} = object
-proc GdiplusStartup*(token: ptr ULONG_PTR, input: ptr GdiplusStartupInput, output: ptr GdiplusStartupOutput): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdiplusShutdown*(token: ULONG_PTR): VOID {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdiplusNotificationHook*(token: ptr ULONG_PTR): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdiplusNotificationUnhook*(token: ULONG_PTR): VOID {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdiplusStartup*(
+  token: ptr ULONG_PTR, input: ptr GdiplusStartupInput, output: ptr GdiplusStartupOutput
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdiplusShutdown*(
+  token: ULONG_PTR
+): VOID {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdiplusNotificationHook*(
+  token: ptr ULONG_PTR
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdiplusNotificationUnhook*(
+  token: ULONG_PTR
+): VOID {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
 proc GdipFree*(`ptr`: pointer): VOID {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateAdjustableArrowCap*(height: REAL, width: REAL, isFilled: BOOL, cap: ptr ptr GpAdjustableArrowCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetAdjustableArrowCapHeight*(cap: ptr GpAdjustableArrowCap, height: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetAdjustableArrowCapHeight*(cap: ptr GpAdjustableArrowCap, height: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetAdjustableArrowCapWidth*(cap: ptr GpAdjustableArrowCap, width: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetAdjustableArrowCapWidth*(cap: ptr GpAdjustableArrowCap, width: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetAdjustableArrowCapMiddleInset*(cap: ptr GpAdjustableArrowCap, middleInset: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetAdjustableArrowCapMiddleInset*(cap: ptr GpAdjustableArrowCap, middleInset: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetAdjustableArrowCapFillState*(cap: ptr GpAdjustableArrowCap, fillState: BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetAdjustableArrowCapFillState*(cap: ptr GpAdjustableArrowCap, fillState: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateBitmapFromStream*(stream: ptr IStream, bitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateBitmapFromFile*(filename: ptr WCHAR, bitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateBitmapFromStreamICM*(stream: ptr IStream, bitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateBitmapFromFileICM*(filename: ptr WCHAR, bitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateBitmapFromScan0*(width: INT, height: INT, stride: INT, format: PixelFormat, scan0: ptr BYTE, bitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateBitmapFromGraphics*(width: INT, height: INT, target: ptr GpGraphics, bitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateBitmapFromGdiDib*(gdiBitmapInfo: ptr BITMAPINFO, gdiBitmapData: pointer, bitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateBitmapFromHBITMAP*(hbm: HBITMAP, hpal: HPALETTE, bitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateHBITMAPFromBitmap*(bitmap: ptr GpBitmap, hbmReturn: ptr HBITMAP, background: ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateBitmapFromHICON*(hicon: HICON, bitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateHICONFromBitmap*(bitmap: ptr GpBitmap, hbmReturn: ptr HICON): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateBitmapFromResource*(hInstance: HINSTANCE, lpBitmapName: ptr WCHAR, bitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCloneBitmapArea*(x: REAL, y: REAL, width: REAL, height: REAL, format: PixelFormat, srcBitmap: ptr GpBitmap, dstBitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCloneBitmapAreaI*(x: INT, y: INT, width: INT, height: INT, format: PixelFormat, srcBitmap: ptr GpBitmap, dstBitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipBitmapLockBits*(bitmap: ptr GpBitmap, rect: ptr GpRect, flags: UINT, format: PixelFormat, lockedBitmapData: ptr BitmapData): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipBitmapUnlockBits*(bitmap: ptr GpBitmap, lockedBitmapData: ptr BitmapData): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipBitmapGetPixel*(bitmap: ptr GpBitmap, x: INT, y: INT, color: ptr ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipBitmapSetPixel*(bitmap: ptr GpBitmap, x: INT, y: INT, color: ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipBitmapSetResolution*(bitmap: ptr GpBitmap, xdpi: REAL, ydpi: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipBitmapConvertFormat*(pInputBitmap: ptr GpBitmap, format: PixelFormat, dithertype: DitherType, palettetype: PaletteType, palette: ptr ColorPalette, alphaThresholdPercent: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipInitializePalette*(palette: ptr ColorPalette, palettetype: PaletteType, optimalColors: INT, useTransparentColor: BOOL, bitmap: ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipBitmapApplyEffect*(bitmap: ptr GpBitmap, effect: ptr CGpEffect, roi: ptr RECT, useAuxData: BOOL, auxData: ptr pointer, auxDataSize: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipBitmapCreateApplyEffect*(inputBitmaps: ptr ptr GpBitmap, numInputs: INT, effect: ptr CGpEffect, roi: ptr RECT, outputRect: ptr RECT, outputBitmap: ptr ptr GpBitmap, useAuxData: BOOL, auxData: ptr pointer, auxDataSize: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipBitmapGetHistogram*(bitmap: ptr GpBitmap, format: HistogramFormat, NumberOfEntries: UINT, channel0: ptr UINT, channel1: ptr UINT, channel2: ptr UINT, channel3: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipBitmapGetHistogramSize*(format: HistogramFormat, NumberOfEntries: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCloneBrush*(brush: ptr GpBrush, cloneBrush: ptr ptr GpBrush): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDeleteBrush*(brush: ptr GpBrush): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetBrushType*(brush: ptr GpBrush, Type: ptr GpBrushType): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateCachedBitmap*(bitmap: ptr GpBitmap, graphics: ptr GpGraphics, cachedBitmap: ptr ptr GpCachedBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDeleteCachedBitmap*(cachedBitmap: ptr GpCachedBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawCachedBitmap*(graphics: ptr GpGraphics, cachedBitmap: ptr GpCachedBitmap, x: INT, y: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateCustomLineCap*(fillPath: ptr GpPath, strokePath: ptr GpPath, baseCap: GpLineCap, baseInset: REAL, customCap: ptr ptr GpCustomLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDeleteCustomLineCap*(customCap: ptr GpCustomLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCloneCustomLineCap*(customCap: ptr GpCustomLineCap, clonedCap: ptr ptr GpCustomLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetCustomLineCapType*(customCap: ptr GpCustomLineCap, capType: ptr CustomLineCapType): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetCustomLineCapStrokeCaps*(customCap: ptr GpCustomLineCap, startCap: GpLineCap, endCap: GpLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetCustomLineCapStrokeCaps*(customCap: ptr GpCustomLineCap, startCap: ptr GpLineCap, endCap: ptr GpLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetCustomLineCapStrokeJoin*(customCap: ptr GpCustomLineCap, lineJoin: GpLineJoin): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetCustomLineCapStrokeJoin*(customCap: ptr GpCustomLineCap, lineJoin: ptr GpLineJoin): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetCustomLineCapBaseCap*(customCap: ptr GpCustomLineCap, baseCap: GpLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetCustomLineCapBaseCap*(customCap: ptr GpCustomLineCap, baseCap: ptr GpLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetCustomLineCapBaseInset*(customCap: ptr GpCustomLineCap, inset: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetCustomLineCapBaseInset*(customCap: ptr GpCustomLineCap, inset: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetCustomLineCapWidthScale*(customCap: ptr GpCustomLineCap, widthScale: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetCustomLineCapWidthScale*(customCap: ptr GpCustomLineCap, widthScale: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateEffect*(guid: GUID, effect: ptr ptr CGpEffect): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDeleteEffect*(effect: ptr CGpEffect): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetEffectParameterSize*(effect: ptr CGpEffect, size: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetEffectParameters*(effect: ptr CGpEffect, params: pointer, size: UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetEffectParameters*(effect: ptr CGpEffect, size: ptr UINT, params: pointer): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateFontFromDC*(hdc: HDC, font: ptr ptr GpFont): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateFontFromLogfontA*(hdc: HDC, logfont: ptr LOGFONTA, font: ptr ptr GpFont): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateFontFromLogfontW*(hdc: HDC, logfont: ptr LOGFONTW, font: ptr ptr GpFont): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateFont*(fontFamily: ptr GpFontFamily, emSize: REAL, style: INT, unit: GpUnit, font: ptr ptr GpFont): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCloneFont*(font: ptr GpFont, cloneFont: ptr ptr GpFont): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDeleteFont*(font: ptr GpFont): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetFamily*(font: ptr GpFont, family: ptr ptr GpFontFamily): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetFontStyle*(font: ptr GpFont, style: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetFontSize*(font: ptr GpFont, size: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetFontUnit*(font: ptr GpFont, unit: ptr GpUnit): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetFontHeight*(font: ptr GpFont, graphics: ptr GpGraphics, height: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetFontHeightGivenDPI*(font: ptr GpFont, dpi: REAL, height: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetLogFontA*(font: ptr GpFont, graphics: ptr GpGraphics, logfontA: ptr LOGFONTA): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetLogFontW*(font: ptr GpFont, graphics: ptr GpGraphics, logfontW: ptr LOGFONTW): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipNewInstalledFontCollection*(fontCollection: ptr ptr GpFontCollection): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipNewPrivateFontCollection*(fontCollection: ptr ptr GpFontCollection): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDeletePrivateFontCollection*(fontCollection: ptr ptr GpFontCollection): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetFontCollectionFamilyCount*(fontCollection: ptr GpFontCollection, numFound: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetFontCollectionFamilyList*(fontCollection: ptr GpFontCollection, numSought: INT, gpfamilies: ptr ptr GpFontFamily, numFound: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPrivateAddFontFile*(fontCollection: ptr GpFontCollection, filename: ptr WCHAR): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPrivateAddMemoryFont*(fontCollection: ptr GpFontCollection, memory: pointer, length: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateFontFamilyFromName*(name: ptr WCHAR, fontCollection: ptr GpFontCollection, FontFamily: ptr ptr GpFontFamily): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDeleteFontFamily*(fontFamily: ptr GpFontFamily): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCloneFontFamily*(FontFamily: ptr GpFontFamily, clonedFontFamily: ptr ptr GpFontFamily): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetGenericFontFamilySansSerif*(nativeFamily: ptr ptr GpFontFamily): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetGenericFontFamilySerif*(nativeFamily: ptr ptr GpFontFamily): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetGenericFontFamilyMonospace*(nativeFamily: ptr ptr GpFontFamily): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetFamilyName*(family: ptr GpFontFamily, name: ptr WCHAR, language: LANGID): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsStyleAvailable*(family: ptr GpFontFamily, style: INT, IsStyleAvailable: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetEmHeight*(family: ptr GpFontFamily, style: INT, EmHeight: ptr UINT16): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetCellAscent*(family: ptr GpFontFamily, style: INT, CellAscent: ptr UINT16): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetCellDescent*(family: ptr GpFontFamily, style: INT, CellDescent: ptr UINT16): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetLineSpacing*(family: ptr GpFontFamily, style: INT, LineSpacing: ptr UINT16): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFlush*(graphics: ptr GpGraphics, intention: GpFlushIntention): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateFromHDC*(hdc: HDC, graphics: ptr ptr GpGraphics): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateFromHDC2*(hdc: HDC, hDevice: HANDLE, graphics: ptr ptr GpGraphics): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateFromHWND*(hwnd: HWND, graphics: ptr ptr GpGraphics): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateFromHWNDICM*(hwnd: HWND, graphics: ptr ptr GpGraphics): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDeleteGraphics*(graphics: ptr GpGraphics): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetDC*(graphics: ptr GpGraphics, hdc: ptr HDC): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipReleaseDC*(graphics: ptr GpGraphics, hdc: HDC): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetCompositingMode*(graphics: ptr GpGraphics, compositingMode: CompositingMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetCompositingMode*(graphics: ptr GpGraphics, compositingMode: ptr CompositingMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetRenderingOrigin*(graphics: ptr GpGraphics, x: INT, y: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetRenderingOrigin*(graphics: ptr GpGraphics, x: ptr INT, y: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetCompositingQuality*(graphics: ptr GpGraphics, compositingQuality: CompositingQuality): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetCompositingQuality*(graphics: ptr GpGraphics, compositingQuality: ptr CompositingQuality): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetSmoothingMode*(graphics: ptr GpGraphics, smoothingMode: SmoothingMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetSmoothingMode*(graphics: ptr GpGraphics, smoothingMode: ptr SmoothingMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPixelOffsetMode*(graphics: ptr GpGraphics, pixelOffsetMode: PixelOffsetMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPixelOffsetMode*(graphics: ptr GpGraphics, pixelOffsetMode: ptr PixelOffsetMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetTextRenderingHint*(graphics: ptr GpGraphics, mode: TextRenderingHint): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetTextRenderingHint*(graphics: ptr GpGraphics, mode: ptr TextRenderingHint): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetTextContrast*(graphics: ptr GpGraphics, contrast: UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetTextContrast*(graphics: ptr GpGraphics, contrast: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetInterpolationMode*(graphics: ptr GpGraphics, interpolationMode: InterpolationMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGraphicsSetAbort*(pGraphics: ptr GpGraphics, pIAbort: ptr GdiplusAbort): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetInterpolationMode*(graphics: ptr GpGraphics, interpolationMode: ptr InterpolationMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetWorldTransform*(graphics: ptr GpGraphics, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipResetWorldTransform*(graphics: ptr GpGraphics): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipMultiplyWorldTransform*(graphics: ptr GpGraphics, matrix: ptr GpMatrix, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTranslateWorldTransform*(graphics: ptr GpGraphics, dx: REAL, dy: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipScaleWorldTransform*(graphics: ptr GpGraphics, sx: REAL, sy: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipRotateWorldTransform*(graphics: ptr GpGraphics, angle: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetWorldTransform*(graphics: ptr GpGraphics, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipResetPageTransform*(graphics: ptr GpGraphics): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPageUnit*(graphics: ptr GpGraphics, unit: ptr GpUnit): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPageScale*(graphics: ptr GpGraphics, scale: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPageUnit*(graphics: ptr GpGraphics, unit: GpUnit): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPageScale*(graphics: ptr GpGraphics, scale: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetDpiX*(graphics: ptr GpGraphics, dpi: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetDpiY*(graphics: ptr GpGraphics, dpi: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTransformPoints*(graphics: ptr GpGraphics, destSpace: GpCoordinateSpace, srcSpace: GpCoordinateSpace, points: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTransformPointsI*(graphics: ptr GpGraphics, destSpace: GpCoordinateSpace, srcSpace: GpCoordinateSpace, points: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetNearestColor*(graphics: ptr GpGraphics, argb: ptr ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateHalftonePalette*(): HPALETTE {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawLine*(graphics: ptr GpGraphics, pen: ptr GpPen, x1: REAL, y1: REAL, x2: REAL, y2: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawLineI*(graphics: ptr GpGraphics, pen: ptr GpPen, x1: INT, y1: INT, x2: INT, y2: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawLines*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawLinesI*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawArc*(graphics: ptr GpGraphics, pen: ptr GpPen, x: REAL, y: REAL, width: REAL, height: REAL, startAngle: REAL, sweepAngle: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawArcI*(graphics: ptr GpGraphics, pen: ptr GpPen, x: INT, y: INT, width: INT, height: INT, startAngle: REAL, sweepAngle: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawBezier*(graphics: ptr GpGraphics, pen: ptr GpPen, x1: REAL, y1: REAL, x2: REAL, y2: REAL, x3: REAL, y3: REAL, x4: REAL, y4: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawBezierI*(graphics: ptr GpGraphics, pen: ptr GpPen, x1: INT, y1: INT, x2: INT, y2: INT, x3: INT, y3: INT, x4: INT, y4: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawBeziers*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawBeziersI*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawRectangle*(graphics: ptr GpGraphics, pen: ptr GpPen, x: REAL, y: REAL, width: REAL, height: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawRectangleI*(graphics: ptr GpGraphics, pen: ptr GpPen, x: INT, y: INT, width: INT, height: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawRectangles*(graphics: ptr GpGraphics, pen: ptr GpPen, rects: ptr GpRectF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawRectanglesI*(graphics: ptr GpGraphics, pen: ptr GpPen, rects: ptr GpRect, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawEllipse*(graphics: ptr GpGraphics, pen: ptr GpPen, x: REAL, y: REAL, width: REAL, height: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawEllipseI*(graphics: ptr GpGraphics, pen: ptr GpPen, x: INT, y: INT, width: INT, height: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawPie*(graphics: ptr GpGraphics, pen: ptr GpPen, x: REAL, y: REAL, width: REAL, height: REAL, startAngle: REAL, sweepAngle: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawPieI*(graphics: ptr GpGraphics, pen: ptr GpPen, x: INT, y: INT, width: INT, height: INT, startAngle: REAL, sweepAngle: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawPolygon*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawPolygonI*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawPath*(graphics: ptr GpGraphics, pen: ptr GpPen, path: ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawCurve*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawCurveI*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawCurve2*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPointF, count: INT, tension: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawCurve2I*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPoint, count: INT, tension: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawCurve3*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPointF, count: INT, offset: INT, numberOfSegments: INT, tension: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawCurve3I*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPoint, count: INT, offset: INT, numberOfSegments: INT, tension: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawClosedCurve*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawClosedCurveI*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawClosedCurve2*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPointF, count: INT, tension: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawClosedCurve2I*(graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPoint, count: INT, tension: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGraphicsClear*(graphics: ptr GpGraphics, color: ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillRectangle*(graphics: ptr GpGraphics, brush: ptr GpBrush, x: REAL, y: REAL, width: REAL, height: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillRectangleI*(graphics: ptr GpGraphics, brush: ptr GpBrush, x: INT, y: INT, width: INT, height: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillRectangles*(graphics: ptr GpGraphics, brush: ptr GpBrush, rects: ptr GpRectF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillRectanglesI*(graphics: ptr GpGraphics, brush: ptr GpBrush, rects: ptr GpRect, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillPolygon*(graphics: ptr GpGraphics, brush: ptr GpBrush, points: ptr GpPointF, count: INT, fillMode: GpFillMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillPolygonI*(graphics: ptr GpGraphics, brush: ptr GpBrush, points: ptr GpPoint, count: INT, fillMode: GpFillMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillPolygon2*(graphics: ptr GpGraphics, brush: ptr GpBrush, points: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillPolygon2I*(graphics: ptr GpGraphics, brush: ptr GpBrush, points: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillEllipse*(graphics: ptr GpGraphics, brush: ptr GpBrush, x: REAL, y: REAL, width: REAL, height: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillEllipseI*(graphics: ptr GpGraphics, brush: ptr GpBrush, x: INT, y: INT, width: INT, height: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillPie*(graphics: ptr GpGraphics, brush: ptr GpBrush, x: REAL, y: REAL, width: REAL, height: REAL, startAngle: REAL, sweepAngle: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillPieI*(graphics: ptr GpGraphics, brush: ptr GpBrush, x: INT, y: INT, width: INT, height: INT, startAngle: REAL, sweepAngle: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillPath*(graphics: ptr GpGraphics, brush: ptr GpBrush, path: ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillClosedCurve*(graphics: ptr GpGraphics, brush: ptr GpBrush, points: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillClosedCurveI*(graphics: ptr GpGraphics, brush: ptr GpBrush, points: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillClosedCurve2*(graphics: ptr GpGraphics, brush: ptr GpBrush, points: ptr GpPointF, count: INT, tension: REAL, fillMode: GpFillMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillClosedCurve2I*(graphics: ptr GpGraphics, brush: ptr GpBrush, points: ptr GpPoint, count: INT, tension: REAL, fillMode: GpFillMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFillRegion*(graphics: ptr GpGraphics, brush: ptr GpBrush, region: ptr GpRegion): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawImage*(graphics: ptr GpGraphics, image: ptr GpImage, x: REAL, y: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawImageI*(graphics: ptr GpGraphics, image: ptr GpImage, x: INT, y: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawImageRect*(graphics: ptr GpGraphics, image: ptr GpImage, x: REAL, y: REAL, width: REAL, height: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawImageRectI*(graphics: ptr GpGraphics, image: ptr GpImage, x: INT, y: INT, width: INT, height: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawImagePoints*(graphics: ptr GpGraphics, image: ptr GpImage, dstpoints: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawImagePointsI*(graphics: ptr GpGraphics, image: ptr GpImage, dstpoints: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawImagePointRect*(graphics: ptr GpGraphics, image: ptr GpImage, x: REAL, y: REAL, srcx: REAL, srcy: REAL, srcwidth: REAL, srcheight: REAL, srcUnit: GpUnit): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawImagePointRectI*(graphics: ptr GpGraphics, image: ptr GpImage, x: INT, y: INT, srcx: INT, srcy: INT, srcwidth: INT, srcheight: INT, srcUnit: GpUnit): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawImageRectRect*(graphics: ptr GpGraphics, image: ptr GpImage, dstx: REAL, dsty: REAL, dstwidth: REAL, dstheight: REAL, srcx: REAL, srcy: REAL, srcwidth: REAL, srcheight: REAL, srcUnit: GpUnit, imageAttributes: ptr GpImageAttributes, callback: DrawImageAbort, callbackData: pointer): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawImageRectRectI*(graphics: ptr GpGraphics, image: ptr GpImage, dstx: INT, dsty: INT, dstwidth: INT, dstheight: INT, srcx: INT, srcy: INT, srcwidth: INT, srcheight: INT, srcUnit: GpUnit, imageAttributes: ptr GpImageAttributes, callback: DrawImageAbort, callbackData: pointer): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawImagePointsRect*(graphics: ptr GpGraphics, image: ptr GpImage, points: ptr GpPointF, count: INT, srcx: REAL, srcy: REAL, srcwidth: REAL, srcheight: REAL, srcUnit: GpUnit, imageAttributes: ptr GpImageAttributes, callback: DrawImageAbort, callbackData: pointer): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawImagePointsRectI*(graphics: ptr GpGraphics, image: ptr GpImage, points: ptr GpPoint, count: INT, srcx: INT, srcy: INT, srcwidth: INT, srcheight: INT, srcUnit: GpUnit, imageAttributes: ptr GpImageAttributes, callback: DrawImageAbort, callbackData: pointer): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawImageFX*(graphics: ptr GpGraphics, image: ptr GpImage, source: ptr GpRectF, xForm: ptr GpMatrix, effect: ptr CGpEffect, imageAttributes: ptr GpImageAttributes, srcUnit: GpUnit): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipEnumerateMetafileDestPoints*(graphics: ptr GpGraphics, metafile: ptr GpMetafile, destPoints: ptr GpPointF, count: INT, callback: EnumerateMetafileProc, callbackData: pointer, imageAttributes: ptr GpImageAttributes): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipEnumerateMetafileDestPointsI*(graphics: ptr GpGraphics, metafile: ptr GpMetafile, destGpPoints: ptr GpPoint, count: INT, callback: EnumerateMetafileProc, callbackData: pointer, imageAttributes: ptr GpImageAttributes): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetClipGraphics*(graphics: ptr GpGraphics, srcgraphics: ptr GpGraphics, combineMode: CombineMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetClipRect*(graphics: ptr GpGraphics, x: REAL, y: REAL, width: REAL, height: REAL, combineMode: CombineMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetClipRectI*(graphics: ptr GpGraphics, x: INT, y: INT, width: INT, height: INT, combineMode: CombineMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetClipPath*(graphics: ptr GpGraphics, path: ptr GpPath, combineMode: CombineMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetClipRegion*(graphics: ptr GpGraphics, region: ptr GpRegion, combineMode: CombineMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetClipHrgn*(graphics: ptr GpGraphics, hRgn: HRGN, combineMode: CombineMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipResetClip*(graphics: ptr GpGraphics): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTranslateClip*(graphics: ptr GpGraphics, dx: REAL, dy: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTranslateClipI*(graphics: ptr GpGraphics, dx: INT, dy: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetClip*(graphics: ptr GpGraphics, region: ptr GpRegion): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetClipBounds*(graphics: ptr GpGraphics, rect: ptr GpRectF): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetClipBoundsI*(graphics: ptr GpGraphics, rect: ptr GpRect): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsClipEmpty*(graphics: ptr GpGraphics, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetVisibleClipBounds*(graphics: ptr GpGraphics, rect: ptr GpRectF): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetVisibleClipBoundsI*(graphics: ptr GpGraphics, rect: ptr GpRect): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsVisibleClipEmpty*(graphics: ptr GpGraphics, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsVisiblePoint*(graphics: ptr GpGraphics, x: REAL, y: REAL, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsVisiblePointI*(graphics: ptr GpGraphics, x: INT, y: INT, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsVisibleRect*(graphics: ptr GpGraphics, x: REAL, y: REAL, width: REAL, height: REAL, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsVisibleRectI*(graphics: ptr GpGraphics, x: INT, y: INT, width: INT, height: INT, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSaveGraphics*(graphics: ptr GpGraphics, state: ptr GraphicsState): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipRestoreGraphics*(graphics: ptr GpGraphics, state: GraphicsState): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipBeginContainer*(graphics: ptr GpGraphics, dstrect: ptr GpRectF, srcrect: ptr GpRectF, unit: GpUnit, state: ptr GraphicsContainer): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipBeginContainerI*(graphics: ptr GpGraphics, dstrect: ptr GpRect, srcrect: ptr GpRect, unit: GpUnit, state: ptr GraphicsContainer): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipBeginContainer2*(graphics: ptr GpGraphics, state: ptr GraphicsContainer): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipEndContainer*(graphics: ptr GpGraphics, state: GraphicsContainer): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipComment*(graphics: ptr GpGraphics, sizeData: UINT, data: ptr BYTE): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreatePath*(brushMode: GpFillMode, path: ptr ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreatePath2*(points: ptr GpPointF, types: ptr BYTE, count: INT, fillMode: GpFillMode, path: ptr ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreatePath2I*(points: ptr GpPoint, types: ptr BYTE, count: INT, fillMode: GpFillMode, path: ptr ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipClonePath*(path: ptr GpPath, clonePath: ptr ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDeletePath*(path: ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipResetPath*(path: ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPointCount*(path: ptr GpPath, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathTypes*(path: ptr GpPath, types: ptr BYTE, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathPoints*(path: ptr GpPath, points: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathPointsI*(path: ptr GpPath, points: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathFillMode*(path: ptr GpPath, fillmode: ptr GpFillMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathFillMode*(path: ptr GpPath, fillmode: GpFillMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathData*(path: ptr GpPath, pathData: ptr GpPathData): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipStartPathFigure*(path: ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipClosePathFigure*(path: ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipClosePathFigures*(path: ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathMarker*(path: ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipClearPathMarkers*(path: ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipReversePath*(path: ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathLastPoint*(path: ptr GpPath, lastPoint: ptr GpPointF): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathLine*(path: ptr GpPath, x1: REAL, y1: REAL, x2: REAL, y2: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathLine2*(path: ptr GpPath, points: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathArc*(path: ptr GpPath, x: REAL, y: REAL, width: REAL, height: REAL, startAngle: REAL, sweepAngle: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathBezier*(path: ptr GpPath, x1: REAL, y1: REAL, x2: REAL, y2: REAL, x3: REAL, y3: REAL, x4: REAL, y4: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathBeziers*(path: ptr GpPath, points: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathCurve*(path: ptr GpPath, points: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathCurve2*(path: ptr GpPath, points: ptr GpPointF, count: INT, tension: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathCurve3*(path: ptr GpPath, points: ptr GpPointF, count: INT, offset: INT, numberOfSegments: INT, tension: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathClosedCurve*(path: ptr GpPath, points: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathClosedCurve2*(path: ptr GpPath, points: ptr GpPointF, count: INT, tension: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathRectangle*(path: ptr GpPath, x: REAL, y: REAL, width: REAL, height: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathRectangles*(path: ptr GpPath, rects: ptr GpRectF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathEllipse*(path: ptr GpPath, x: REAL, y: REAL, width: REAL, height: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathPie*(path: ptr GpPath, x: REAL, y: REAL, width: REAL, height: REAL, startAngle: REAL, sweepAngle: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathPolygon*(path: ptr GpPath, points: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathPath*(path: ptr GpPath, addingPath: ptr GpPath, connect: BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathString*(path: ptr GpPath, string: ptr WCHAR, length: INT, family: ptr GpFontFamily, style: INT, emSize: REAL, layoutRect: ptr GpRectF, format: ptr GpStringFormat): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathStringI*(path: ptr GpPath, string: ptr WCHAR, length: INT, family: ptr GpFontFamily, style: INT, emSize: REAL, layoutGpRect: ptr GpRect, format: ptr GpStringFormat): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathLineI*(path: ptr GpPath, x1: INT, y1: INT, x2: INT, y2: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathLine2I*(path: ptr GpPath, points: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathArcI*(path: ptr GpPath, x: INT, y: INT, width: INT, height: INT, startAngle: REAL, sweepAngle: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathBezierI*(path: ptr GpPath, x1: INT, y1: INT, x2: INT, y2: INT, x3: INT, y3: INT, x4: INT, y4: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathBeziersI*(path: ptr GpPath, points: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathCurveI*(path: ptr GpPath, points: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathCurve2I*(path: ptr GpPath, points: ptr GpPoint, count: INT, tension: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathCurve3I*(path: ptr GpPath, points: ptr GpPoint, count: INT, offset: INT, numberOfSegments: INT, tension: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathClosedCurveI*(path: ptr GpPath, points: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathClosedCurve2I*(path: ptr GpPath, points: ptr GpPoint, count: INT, tension: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathRectangleI*(path: ptr GpPath, x: INT, y: INT, width: INT, height: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathRectanglesI*(path: ptr GpPath, rects: ptr GpRect, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathEllipseI*(path: ptr GpPath, x: INT, y: INT, width: INT, height: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathPieI*(path: ptr GpPath, x: INT, y: INT, width: INT, height: INT, startAngle: REAL, sweepAngle: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipAddPathPolygonI*(path: ptr GpPath, points: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFlattenPath*(path: ptr GpPath, matrix: ptr GpMatrix, flatness: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipWindingModeOutline*(path: ptr GpPath, matrix: ptr GpMatrix, flatness: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipWidenPath*(nativePath: ptr GpPath, pen: ptr GpPen, matrix: ptr GpMatrix, flatness: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipWarpPath*(path: ptr GpPath, matrix: ptr GpMatrix, points: ptr GpPointF, count: INT, srcx: REAL, srcy: REAL, srcwidth: REAL, srcheight: REAL, warpMode: WarpMode, flatness: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTransformPath*(path: ptr GpPath, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathWorldBounds*(path: ptr GpPath, bounds: ptr GpRectF, matrix: ptr GpMatrix, pen: ptr GpPen): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathWorldBoundsI*(path: ptr GpPath, bounds: ptr GpRect, matrix: ptr GpMatrix, pen: ptr GpPen): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsVisiblePathPoint*(path: ptr GpPath, x: REAL, y: REAL, graphics: ptr GpGraphics, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsVisiblePathPointI*(path: ptr GpPath, x: INT, y: INT, graphics: ptr GpGraphics, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsOutlineVisiblePathPoint*(path: ptr GpPath, x: REAL, y: REAL, pen: ptr GpPen, graphics: ptr GpGraphics, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsOutlineVisiblePathPointI*(path: ptr GpPath, x: INT, y: INT, pen: ptr GpPen, graphics: ptr GpGraphics, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateHatchBrush*(hatchstyle: GpHatchStyle, forecol: ARGB, backcol: ARGB, brush: ptr ptr GpHatch): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetHatchStyle*(brush: ptr GpHatch, hatchstyle: ptr GpHatchStyle): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetHatchForegroundColor*(brush: ptr GpHatch, forecol: ptr ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetHatchBackgroundColor*(brush: ptr GpHatch, backcol: ptr ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipLoadImageFromStream*(stream: ptr IStream, image: ptr ptr GpImage): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipLoadImageFromFile*(filename: ptr WCHAR, image: ptr ptr GpImage): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipLoadImageFromStreamICM*(stream: ptr IStream, image: ptr ptr GpImage): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipLoadImageFromFileICM*(filename: ptr WCHAR, image: ptr ptr GpImage): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCloneImage*(image: ptr GpImage, cloneImage: ptr ptr GpImage): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDisposeImage*(image: ptr GpImage): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSaveImageToFile*(image: ptr GpImage, filename: ptr WCHAR, clsidEncoder: ptr CLSID, encoderParams: ptr EncoderParameters): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSaveImageToStream*(image: ptr GpImage, stream: ptr IStream, clsidEncoder: ptr CLSID, encoderParams: ptr EncoderParameters): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSaveAdd*(image: ptr GpImage, encoderParams: ptr EncoderParameters): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSaveAddImage*(image: ptr GpImage, newImage: ptr GpImage, encoderParams: ptr EncoderParameters): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageGraphicsContext*(image: ptr GpImage, graphics: ptr ptr GpGraphics): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageBounds*(image: ptr GpImage, srcRect: ptr GpRectF, srcUnit: ptr GpUnit): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageDimension*(image: ptr GpImage, width: ptr REAL, height: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageType*(image: ptr GpImage, Type: ptr ImageType): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageWidth*(image: ptr GpImage, width: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageHeight*(image: ptr GpImage, height: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageHorizontalResolution*(image: ptr GpImage, resolution: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageVerticalResolution*(image: ptr GpImage, resolution: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageFlags*(image: ptr GpImage, flags: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageRawFormat*(image: ptr GpImage, format: ptr GUID): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImagePixelFormat*(image: ptr GpImage, format: ptr PixelFormat): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageThumbnail*(image: ptr GpImage, thumbWidth: UINT, thumbHeight: UINT, thumbImage: ptr ptr GpImage, callback: GetThumbnailImageAbort, callbackData: pointer): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetEncoderParameterListSize*(image: ptr GpImage, clsidEncoder: ptr CLSID, size: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetEncoderParameterList*(image: ptr GpImage, clsidEncoder: ptr CLSID, size: UINT, buffer: ptr EncoderParameters): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipImageGetFrameDimensionsCount*(image: ptr GpImage, count: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipImageGetFrameDimensionsList*(image: ptr GpImage, dimensionIDs: ptr GUID, count: UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipImageGetFrameCount*(image: ptr GpImage, dimensionID: ptr GUID, count: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipImageSelectActiveFrame*(image: ptr GpImage, dimensionID: ptr GUID, frameIndex: UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipImageRotateFlip*(image: ptr GpImage, rfType: RotateFlipType): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImagePalette*(image: ptr GpImage, palette: ptr ColorPalette, size: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetImagePalette*(image: ptr GpImage, palette: ptr ColorPalette): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImagePaletteSize*(image: ptr GpImage, size: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPropertyCount*(image: ptr GpImage, numOfProperty: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPropertyIdList*(image: ptr GpImage, numOfProperty: UINT, list: ptr PROPID): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPropertyItemSize*(image: ptr GpImage, propId: PROPID, size: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPropertyItem*(image: ptr GpImage, propId: PROPID, propSize: UINT, buffer: ptr PropertyItem): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPropertySize*(image: ptr GpImage, totalBufferSize: ptr UINT, numProperties: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetAllPropertyItems*(image: ptr GpImage, totalBufferSize: UINT, numProperties: UINT, allItems: ptr PropertyItem): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipRemovePropertyItem*(image: ptr GpImage, propId: PROPID): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPropertyItem*(image: ptr GpImage, item: ptr PropertyItem): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFindFirstImageItem*(image: ptr GpImage, item: ptr ImageItemData): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipFindNextImageItem*(image: ptr GpImage, item: ptr ImageItemData): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageItemData*(image: ptr GpImage, item: ptr ImageItemData): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipImageSetAbort*(pImage: ptr GpImage, pIAbort: ptr GdiplusAbort): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipImageForceValidation*(image: ptr GpImage): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageDecodersSize*(numDecoders: ptr UINT, size: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageDecoders*(numDecoders: UINT, size: UINT, decoders: ptr ImageCodecInfo): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageEncodersSize*(numEncoders: ptr UINT, size: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageEncoders*(numEncoders: UINT, size: UINT, encoders: ptr ImageCodecInfo): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateImageAttributes*(imageattr: ptr ptr GpImageAttributes): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCloneImageAttributes*(imageattr: ptr GpImageAttributes, cloneImageattr: ptr ptr GpImageAttributes): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDisposeImageAttributes*(imageattr: ptr GpImageAttributes): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetImageAttributesToIdentity*(imageattr: ptr GpImageAttributes, Type: ColorAdjustType): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipResetImageAttributes*(imageattr: ptr GpImageAttributes, Type: ColorAdjustType): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetImageAttributesColorMatrix*(imageattr: ptr GpImageAttributes, Type: ColorAdjustType, enableFlag: BOOL, colorMatrix: ptr ColorMatrix, grayMatrix: ptr ColorMatrix, flags: ColorMatrixFlags): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetImageAttributesThreshold*(imageattr: ptr GpImageAttributes, Type: ColorAdjustType, enableFlag: BOOL, threshold: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetImageAttributesGamma*(imageattr: ptr GpImageAttributes, Type: ColorAdjustType, enableFlag: BOOL, gamma: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetImageAttributesNoOp*(imageattr: ptr GpImageAttributes, Type: ColorAdjustType, enableFlag: BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetImageAttributesColorKeys*(imageattr: ptr GpImageAttributes, Type: ColorAdjustType, enableFlag: BOOL, colorLow: ARGB, colorHigh: ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetImageAttributesOutputChannel*(imageattr: ptr GpImageAttributes, Type: ColorAdjustType, enableFlag: BOOL, channelFlags: ColorChannelFlags): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetImageAttributesOutputChannelColorProfile*(imageattr: ptr GpImageAttributes, Type: ColorAdjustType, enableFlag: BOOL, colorProfileFilename: ptr WCHAR): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetImageAttributesRemapTable*(imageattr: ptr GpImageAttributes, Type: ColorAdjustType, enableFlag: BOOL, mapSize: UINT, map: ptr GpColorMap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetImageAttributesWrapMode*(imageAttr: ptr GpImageAttributes, wrap: GpWrapMode, argb: ARGB, clamp: BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetImageAttributesAdjustedPalette*(imageAttr: ptr GpImageAttributes, colorPalette: ptr ColorPalette, colorAdjustType: ColorAdjustType): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetImageAttributesCachedBackground*(imageattr: ptr GpImageAttributes, enableFlag: BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateLineBrush*(point1: ptr GpPointF, point2: ptr GpPointF, color1: ARGB, color2: ARGB, wrapMode: GpWrapMode, lineGradient: ptr ptr GpLineGradient): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateLineBrushI*(point1: ptr GpPoint, point2: ptr GpPoint, color1: ARGB, color2: ARGB, wrapMode: GpWrapMode, lineGradient: ptr ptr GpLineGradient): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateLineBrushFromRect*(rect: ptr GpRectF, color1: ARGB, color2: ARGB, mode: LinearGradientMode, wrapMode: GpWrapMode, lineGradient: ptr ptr GpLineGradient): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateLineBrushFromRectI*(rect: ptr GpRect, color1: ARGB, color2: ARGB, mode: LinearGradientMode, wrapMode: GpWrapMode, lineGradient: ptr ptr GpLineGradient): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateLineBrushFromRectWithAngle*(rect: ptr GpRectF, color1: ARGB, color2: ARGB, angle: REAL, isAngleScalable: BOOL, wrapMode: GpWrapMode, lineGradient: ptr ptr GpLineGradient): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateLineBrushFromRectWithAngleI*(rect: ptr GpRect, color1: ARGB, color2: ARGB, angle: REAL, isAngleScalable: BOOL, wrapMode: GpWrapMode, lineGradient: ptr ptr GpLineGradient): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetLineColors*(brush: ptr GpLineGradient, color1: ARGB, color2: ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetLineColors*(brush: ptr GpLineGradient, colors: ptr ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetLineRect*(brush: ptr GpLineGradient, rect: ptr GpRectF): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetLineRectI*(brush: ptr GpLineGradient, rect: ptr GpRect): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetLineGammaCorrection*(brush: ptr GpLineGradient, useGammaCorrection: BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetLineGammaCorrection*(brush: ptr GpLineGradient, useGammaCorrection: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetLineBlendCount*(brush: ptr GpLineGradient, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetLineBlend*(brush: ptr GpLineGradient, blend: ptr REAL, positions: ptr REAL, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetLineBlend*(brush: ptr GpLineGradient, blend: ptr REAL, positions: ptr REAL, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetLinePresetBlendCount*(brush: ptr GpLineGradient, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetLinePresetBlend*(brush: ptr GpLineGradient, blend: ptr ARGB, positions: ptr REAL, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetLinePresetBlend*(brush: ptr GpLineGradient, blend: ptr ARGB, positions: ptr REAL, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetLineSigmaBlend*(brush: ptr GpLineGradient, focus: REAL, scale: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetLineLinearBlend*(brush: ptr GpLineGradient, focus: REAL, scale: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetLineWrapMode*(brush: ptr GpLineGradient, wrapmode: GpWrapMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetLineWrapMode*(brush: ptr GpLineGradient, wrapmode: ptr GpWrapMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetLineTransform*(brush: ptr GpLineGradient, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetLineTransform*(brush: ptr GpLineGradient, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipResetLineTransform*(brush: ptr GpLineGradient): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipMultiplyLineTransform*(brush: ptr GpLineGradient, matrix: ptr GpMatrix, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTranslateLineTransform*(brush: ptr GpLineGradient, dx: REAL, dy: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipScaleLineTransform*(brush: ptr GpLineGradient, sx: REAL, sy: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipRotateLineTransform*(brush: ptr GpLineGradient, angle: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateMatrix*(matrix: ptr ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateMatrix2*(m11: REAL, m12: REAL, m21: REAL, m22: REAL, dx: REAL, dy: REAL, matrix: ptr ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateMatrix3*(rect: ptr GpRectF, dstplg: ptr GpPointF, matrix: ptr ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateMatrix3I*(rect: ptr GpRect, dstplg: ptr GpPoint, matrix: ptr ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCloneMatrix*(matrix: ptr GpMatrix, cloneMatrix: ptr ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDeleteMatrix*(matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetMatrixElements*(matrix: ptr GpMatrix, m11: REAL, m12: REAL, m21: REAL, m22: REAL, dx: REAL, dy: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipMultiplyMatrix*(matrix: ptr GpMatrix, matrix2: ptr GpMatrix, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTranslateMatrix*(matrix: ptr GpMatrix, offsetX: REAL, offsetY: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipScaleMatrix*(matrix: ptr GpMatrix, scaleX: REAL, scaleY: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipRotateMatrix*(matrix: ptr GpMatrix, angle: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipShearMatrix*(matrix: ptr GpMatrix, shearX: REAL, shearY: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipInvertMatrix*(matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTransformMatrixPoints*(matrix: ptr GpMatrix, pts: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTransformMatrixPointsI*(matrix: ptr GpMatrix, pts: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipVectorTransformMatrixPoints*(matrix: ptr GpMatrix, pts: ptr GpPointF, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipVectorTransformMatrixPointsI*(matrix: ptr GpMatrix, pts: ptr GpPoint, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetMatrixElements*(matrix: ptr GpMatrix, matrixOut: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsMatrixInvertible*(matrix: ptr GpMatrix, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsMatrixIdentity*(matrix: ptr GpMatrix, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsMatrixEqual*(matrix: ptr GpMatrix, matrix2: ptr GpMatrix, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetMetafileHeaderFromEmf*(hEmf: HENHMETAFILE, header: ptr MetafileHeader): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetMetafileHeaderFromFile*(filename: ptr WCHAR, header: ptr MetafileHeader): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetMetafileHeaderFromStream*(stream: ptr IStream, header: ptr MetafileHeader): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetMetafileHeaderFromMetafile*(metafile: ptr GpMetafile, header: ptr MetafileHeader): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetHemfFromMetafile*(metafile: ptr GpMetafile, hEmf: ptr HENHMETAFILE): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateStreamOnFile*(filename: ptr WCHAR, access: UINT, stream: ptr ptr IStream): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateMetafileFromWmf*(hWmf: HMETAFILE, deleteWmf: BOOL, wmfPlaceableFileHeader: ptr WmfPlaceableFileHeader, metafile: ptr ptr GpMetafile): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateMetafileFromEmf*(hEmf: HENHMETAFILE, deleteEmf: BOOL, metafile: ptr ptr GpMetafile): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateMetafileFromFile*(file: ptr WCHAR, metafile: ptr ptr GpMetafile): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateMetafileFromWmfFile*(file: ptr WCHAR, wmfPlaceableFileHeader: ptr WmfPlaceableFileHeader, metafile: ptr ptr GpMetafile): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateMetafileFromStream*(stream: ptr IStream, metafile: ptr ptr GpMetafile): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipRecordMetafile*(referenceHdc: HDC, Type: EmfType, frameRect: ptr GpRectF, frameUnit: MetafileFrameUnit, description: ptr WCHAR, metafile: ptr ptr GpMetafile): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipRecordMetafileI*(referenceHdc: HDC, Type: EmfType, frameRect: ptr GpRect, frameUnit: MetafileFrameUnit, description: ptr WCHAR, metafile: ptr ptr GpMetafile): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipRecordMetafileFileName*(fileName: ptr WCHAR, referenceHdc: HDC, Type: EmfType, frameRect: ptr GpRectF, frameUnit: MetafileFrameUnit, description: ptr WCHAR, metafile: ptr ptr GpMetafile): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipRecordMetafileFileNameI*(fileName: ptr WCHAR, referenceHdc: HDC, Type: EmfType, frameRect: ptr GpRect, frameUnit: MetafileFrameUnit, description: ptr WCHAR, metafile: ptr ptr GpMetafile): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipRecordMetafileStream*(stream: ptr IStream, referenceHdc: HDC, Type: EmfType, frameRect: ptr GpRectF, frameUnit: MetafileFrameUnit, description: ptr WCHAR, metafile: ptr ptr GpMetafile): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipRecordMetafileStreamI*(stream: ptr IStream, referenceHdc: HDC, Type: EmfType, frameRect: ptr GpRect, frameUnit: MetafileFrameUnit, description: ptr WCHAR, metafile: ptr ptr GpMetafile): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPlayMetafileRecord*(metafile: ptr GpMetafile, recordType: EmfPlusRecordType, flags: UINT, dataSize: UINT, data: ptr BYTE): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetMetafileDownLevelRasterizationLimit*(metafile: ptr GpMetafile, metafileRasterizationLimitDpi: UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetMetafileDownLevelRasterizationLimit*(metafile: ptr GpMetafile, metafileRasterizationLimitDpi: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipConvertToEmfPlus*(refGraphics: ptr GpGraphics, metafile: ptr GpMetafile, conversionSuccess: ptr BOOL, emfType: EmfType, description: ptr WCHAR, out_metafile: ptr ptr GpMetafile): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipConvertToEmfPlusToFile*(refGraphics: ptr GpGraphics, metafile: ptr GpMetafile, conversionSuccess: ptr BOOL, filename: ptr WCHAR, emfType: EmfType, description: ptr WCHAR, out_metafile: ptr ptr GpMetafile): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipConvertToEmfPlusToStream*(refGraphics: ptr GpGraphics, metafile: ptr GpMetafile, conversionSuccess: ptr BOOL, stream: ptr IStream, emfType: EmfType, description: ptr WCHAR, out_metafile: ptr ptr GpMetafile): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipEmfToWmfBits*(hemf: HENHMETAFILE, cbData16: UINT, pData16: LPBYTE, iMapMode: INT, eFlags: INT): UINT {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreatePathGradient*(points: ptr GpPointF, count: INT, wrapMode: GpWrapMode, polyGradient: ptr ptr GpPathGradient): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreatePathGradientI*(points: ptr GpPoint, count: INT, wrapMode: GpWrapMode, polyGradient: ptr ptr GpPathGradient): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreatePathGradientFromPath*(path: ptr GpPath, polyGradient: ptr ptr GpPathGradient): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientCenterColor*(brush: ptr GpPathGradient, colors: ptr ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathGradientCenterColor*(brush: ptr GpPathGradient, colors: ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientSurroundColorsWithCount*(brush: ptr GpPathGradient, color: ptr ARGB, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathGradientSurroundColorsWithCount*(brush: ptr GpPathGradient, color: ptr ARGB, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientPath*(brush: ptr GpPathGradient, path: ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathGradientPath*(brush: ptr GpPathGradient, path: ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientCenterPoint*(brush: ptr GpPathGradient, points: ptr GpPointF): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientCenterPointI*(brush: ptr GpPathGradient, points: ptr GpPoint): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathGradientCenterPoint*(brush: ptr GpPathGradient, points: ptr GpPointF): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathGradientCenterPointI*(brush: ptr GpPathGradient, points: ptr GpPoint): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientRect*(brush: ptr GpPathGradient, rect: ptr GpRectF): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientRectI*(brush: ptr GpPathGradient, rect: ptr GpRect): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientPointCount*(brush: ptr GpPathGradient, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientSurroundColorCount*(brush: ptr GpPathGradient, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathGradientGammaCorrection*(brush: ptr GpPathGradient, useGammaCorrection: BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientGammaCorrection*(brush: ptr GpPathGradient, useGammaCorrection: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientBlendCount*(brush: ptr GpPathGradient, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientBlend*(brush: ptr GpPathGradient, blend: ptr REAL, positions: ptr REAL, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathGradientBlend*(brush: ptr GpPathGradient, blend: ptr REAL, positions: ptr REAL, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientPresetBlendCount*(brush: ptr GpPathGradient, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientPresetBlend*(brush: ptr GpPathGradient, blend: ptr ARGB, positions: ptr REAL, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathGradientPresetBlend*(brush: ptr GpPathGradient, blend: ptr ARGB, positions: ptr REAL, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathGradientSigmaBlend*(brush: ptr GpPathGradient, focus: REAL, scale: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathGradientLinearBlend*(brush: ptr GpPathGradient, focus: REAL, scale: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientWrapMode*(brush: ptr GpPathGradient, wrapmode: ptr GpWrapMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathGradientWrapMode*(brush: ptr GpPathGradient, wrapmode: GpWrapMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientTransform*(brush: ptr GpPathGradient, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathGradientTransform*(brush: ptr GpPathGradient, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipResetPathGradientTransform*(brush: ptr GpPathGradient): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipMultiplyPathGradientTransform*(brush: ptr GpPathGradient, matrix: ptr GpMatrix, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTranslatePathGradientTransform*(brush: ptr GpPathGradient, dx: REAL, dy: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipScalePathGradientTransform*(brush: ptr GpPathGradient, sx: REAL, sy: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipRotatePathGradientTransform*(brush: ptr GpPathGradient, angle: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPathGradientFocusScales*(brush: ptr GpPathGradient, xScale: ptr REAL, yScale: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPathGradientFocusScales*(brush: ptr GpPathGradient, xScale: REAL, yScale: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreatePathIter*(Iterator: ptr ptr GpPathIterator, path: ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDeletePathIter*(Iterator: ptr GpPathIterator): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPathIterNextSubpath*(Iterator: ptr GpPathIterator, resultCount: ptr INT, startIndex: ptr INT, endIndex: ptr INT, isClosed: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPathIterNextSubpathPath*(Iterator: ptr GpPathIterator, resultCount: ptr INT, path: ptr GpPath, isClosed: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPathIterNextPathType*(Iterator: ptr GpPathIterator, resultCount: ptr INT, pathType: ptr BYTE, startIndex: ptr INT, endIndex: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPathIterNextMarker*(Iterator: ptr GpPathIterator, resultCount: ptr INT, startIndex: ptr INT, endIndex: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPathIterNextMarkerPath*(Iterator: ptr GpPathIterator, resultCount: ptr INT, path: ptr GpPath): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPathIterGetCount*(Iterator: ptr GpPathIterator, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPathIterGetSubpathCount*(Iterator: ptr GpPathIterator, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPathIterIsValid*(Iterator: ptr GpPathIterator, valid: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPathIterHasCurve*(Iterator: ptr GpPathIterator, hasCurve: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPathIterRewind*(Iterator: ptr GpPathIterator): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPathIterEnumerate*(Iterator: ptr GpPathIterator, resultCount: ptr INT, points: ptr GpPointF, types: ptr BYTE, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipPathIterCopyData*(Iterator: ptr GpPathIterator, resultCount: ptr INT, points: ptr GpPointF, types: ptr BYTE, startIndex: INT, endIndex: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreatePen1*(color: ARGB, width: REAL, unit: GpUnit, pen: ptr ptr GpPen): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreatePen2*(brush: ptr GpBrush, width: REAL, unit: GpUnit, pen: ptr ptr GpPen): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipClonePen*(pen: ptr GpPen, clonepen: ptr ptr GpPen): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDeletePen*(pen: ptr GpPen): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenWidth*(pen: ptr GpPen, width: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenWidth*(pen: ptr GpPen, width: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenUnit*(pen: ptr GpPen, unit: GpUnit): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenUnit*(pen: ptr GpPen, unit: ptr GpUnit): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenLineCap197819*(pen: ptr GpPen, startCap: GpLineCap, endCap: GpLineCap, dashCap: GpDashCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenStartCap*(pen: ptr GpPen, startCap: GpLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenEndCap*(pen: ptr GpPen, endCap: GpLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenDashCap197819*(pen: ptr GpPen, dashCap: GpDashCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenStartCap*(pen: ptr GpPen, startCap: ptr GpLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenEndCap*(pen: ptr GpPen, endCap: ptr GpLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenDashCap197819*(pen: ptr GpPen, dashCap: ptr GpDashCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenLineJoin*(pen: ptr GpPen, lineJoin: GpLineJoin): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenLineJoin*(pen: ptr GpPen, lineJoin: ptr GpLineJoin): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenCustomStartCap*(pen: ptr GpPen, customCap: ptr GpCustomLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenCustomStartCap*(pen: ptr GpPen, customCap: ptr ptr GpCustomLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenCustomEndCap*(pen: ptr GpPen, customCap: ptr GpCustomLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenCustomEndCap*(pen: ptr GpPen, customCap: ptr ptr GpCustomLineCap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenMiterLimit*(pen: ptr GpPen, miterLimit: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenMiterLimit*(pen: ptr GpPen, miterLimit: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenMode*(pen: ptr GpPen, penMode: GpPenAlignment): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenMode*(pen: ptr GpPen, penMode: ptr GpPenAlignment): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenTransform*(pen: ptr GpPen, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenTransform*(pen: ptr GpPen, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipResetPenTransform*(pen: ptr GpPen): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipMultiplyPenTransform*(pen: ptr GpPen, matrix: ptr GpMatrix, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTranslatePenTransform*(pen: ptr GpPen, dx: REAL, dy: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipScalePenTransform*(pen: ptr GpPen, sx: REAL, sy: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipRotatePenTransform*(pen: ptr GpPen, angle: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenColor*(pen: ptr GpPen, argb: ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenColor*(pen: ptr GpPen, argb: ptr ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenBrushFill*(pen: ptr GpPen, brush: ptr GpBrush): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenBrushFill*(pen: ptr GpPen, brush: ptr ptr GpBrush): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenFillType*(pen: ptr GpPen, Type: ptr GpPenType): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenDashStyle*(pen: ptr GpPen, dashstyle: ptr GpDashStyle): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenDashStyle*(pen: ptr GpPen, dashstyle: GpDashStyle): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenDashOffset*(pen: ptr GpPen, offset: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenDashOffset*(pen: ptr GpPen, offset: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenDashCount*(pen: ptr GpPen, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenDashArray*(pen: ptr GpPen, dash: ptr REAL, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenDashArray*(pen: ptr GpPen, dash: ptr REAL, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenCompoundCount*(pen: ptr GpPen, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetPenCompoundArray*(pen: ptr GpPen, dash: ptr REAL, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetPenCompoundArray*(pen: ptr GpPen, dash: ptr REAL, count: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateRegion*(region: ptr ptr GpRegion): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateRegionRect*(rect: ptr GpRectF, region: ptr ptr GpRegion): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateRegionRectI*(rect: ptr GpRect, region: ptr ptr GpRegion): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateRegionPath*(path: ptr GpPath, region: ptr ptr GpRegion): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateRegionRgnData*(regionData: ptr BYTE, size: INT, region: ptr ptr GpRegion): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateRegionHrgn*(hRgn: HRGN, region: ptr ptr GpRegion): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCloneRegion*(region: ptr GpRegion, cloneRegion: ptr ptr GpRegion): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDeleteRegion*(region: ptr GpRegion): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetInfinite*(region: ptr GpRegion): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetEmpty*(region: ptr GpRegion): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCombineRegionRect*(region: ptr GpRegion, rect: ptr GpRectF, combineMode: CombineMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCombineRegionRectI*(region: ptr GpRegion, rect: ptr GpRect, combineMode: CombineMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCombineRegionPath*(region: ptr GpRegion, path: ptr GpPath, combineMode: CombineMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCombineRegionRegion*(region: ptr GpRegion, region2: ptr GpRegion, combineMode: CombineMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTranslateRegion*(region: ptr GpRegion, dx: REAL, dy: REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTranslateRegionI*(region: ptr GpRegion, dx: INT, dy: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTransformRegion*(region: ptr GpRegion, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetRegionBounds*(region: ptr GpRegion, graphics: ptr GpGraphics, rect: ptr GpRectF): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetRegionBoundsI*(region: ptr GpRegion, graphics: ptr GpGraphics, rect: ptr GpRect): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetRegionHRgn*(region: ptr GpRegion, graphics: ptr GpGraphics, hRgn: ptr HRGN): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsEmptyRegion*(region: ptr GpRegion, graphics: ptr GpGraphics, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsInfiniteRegion*(region: ptr GpRegion, graphics: ptr GpGraphics, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsEqualRegion*(region: ptr GpRegion, region2: ptr GpRegion, graphics: ptr GpGraphics, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetRegionDataSize*(region: ptr GpRegion, bufferSize: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetRegionData*(region: ptr GpRegion, buffer: ptr BYTE, bufferSize: UINT, sizeFilled: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsVisibleRegionPoint*(region: ptr GpRegion, x: REAL, y: REAL, graphics: ptr GpGraphics, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsVisibleRegionPointI*(region: ptr GpRegion, x: INT, y: INT, graphics: ptr GpGraphics, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsVisibleRegionRect*(region: ptr GpRegion, x: REAL, y: REAL, width: REAL, height: REAL, graphics: ptr GpGraphics, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipIsVisibleRegionRectI*(region: ptr GpRegion, x: INT, y: INT, width: INT, height: INT, graphics: ptr GpGraphics, result: ptr BOOL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetRegionScansCount*(region: ptr GpRegion, count: ptr UINT, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetRegionScans*(region: ptr GpRegion, rects: ptr GpRectF, count: ptr INT, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetRegionScansI*(region: ptr GpRegion, rects: ptr GpRect, count: ptr INT, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateSolidFill*(color: ARGB, brush: ptr ptr GpSolidFill): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetSolidFillColor*(brush: ptr GpSolidFill, color: ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetSolidFillColor*(brush: ptr GpSolidFill, color: ptr ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateStringFormat*(formatAttributes: INT, language: LANGID, format: ptr ptr GpStringFormat): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipStringFormatGetGenericDefault*(format: ptr ptr GpStringFormat): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipStringFormatGetGenericTypographic*(format: ptr ptr GpStringFormat): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDeleteStringFormat*(format: ptr GpStringFormat): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCloneStringFormat*(format: ptr GpStringFormat, newFormat: ptr ptr GpStringFormat): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetStringFormatFlags*(format: ptr GpStringFormat, flags: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetStringFormatFlags*(format: ptr GpStringFormat, flags: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetStringFormatAlign*(format: ptr GpStringFormat, align: StringAlignment): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetStringFormatAlign*(format: ptr GpStringFormat, align: ptr StringAlignment): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetStringFormatLineAlign*(format: ptr GpStringFormat, align: StringAlignment): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetStringFormatLineAlign*(format: ptr GpStringFormat, align: ptr StringAlignment): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetStringFormatTrimming*(format: ptr GpStringFormat, trimming: StringTrimming): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetStringFormatTrimming*(format: ptr GpStringFormat, trimming: ptr StringTrimming): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetStringFormatHotkeyPrefix*(format: ptr GpStringFormat, hotkeyPrefix: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetStringFormatHotkeyPrefix*(format: ptr GpStringFormat, hotkeyPrefix: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetStringFormatTabStops*(format: ptr GpStringFormat, firstTabOffset: REAL, count: INT, tabStops: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetStringFormatTabStops*(format: ptr GpStringFormat, count: INT, firstTabOffset: ptr REAL, tabStops: ptr REAL): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetStringFormatTabStopCount*(format: ptr GpStringFormat, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetStringFormatDigitSubstitution*(format: ptr GpStringFormat, language: LANGID, substitute: StringDigitSubstitute): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetStringFormatDigitSubstitution*(format: ptr GpStringFormat, language: ptr LANGID, substitute: ptr StringDigitSubstitute): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetStringFormatMeasurableCharacterRangeCount*(format: ptr GpStringFormat, count: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetStringFormatMeasurableCharacterRanges*(format: ptr GpStringFormat, rangeCount: INT, ranges: ptr CharacterRange): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawString*(graphics: ptr GpGraphics, string: ptr WCHAR, length: INT, font: ptr GpFont, layoutRect: ptr GpRectF, stringFormat: ptr GpStringFormat, brush: ptr GpBrush): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipMeasureString*(graphics: ptr GpGraphics, string: ptr WCHAR, length: INT, font: ptr GpFont, layoutRect: ptr GpRectF, stringFormat: ptr GpStringFormat, boundingBox: ptr GpRectF, codepointsFitted: ptr INT, linesFilled: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipDrawDriverString*(graphics: ptr GpGraphics, text: ptr UINT16, length: INT, font: ptr GpFont, brush: ptr GpBrush, positions: ptr GpPointF, flags: INT, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipMeasureDriverString*(graphics: ptr GpGraphics, text: ptr UINT16, length: INT, font: ptr GpFont, positions: ptr GpPointF, flags: INT, matrix: ptr GpMatrix, boundingBox: ptr GpRectF): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateTexture*(image: ptr GpImage, wrapmode: GpWrapMode, texture: ptr ptr GpTexture): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateTexture2*(image: ptr GpImage, wrapmode: GpWrapMode, x: REAL, y: REAL, width: REAL, height: REAL, texture: ptr ptr GpTexture): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateTexture2I*(image: ptr GpImage, wrapmode: GpWrapMode, x: INT, y: INT, width: INT, height: INT, texture: ptr ptr GpTexture): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateTextureIA*(image: ptr GpImage, imageAttributes: ptr GpImageAttributes, x: REAL, y: REAL, width: REAL, height: REAL, texture: ptr ptr GpTexture): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipCreateTextureIAI*(image: ptr GpImage, imageAttributes: ptr GpImageAttributes, x: INT, y: INT, width: INT, height: INT, texture: ptr ptr GpTexture): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetTextureTransform*(brush: ptr GpTexture, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetTextureTransform*(brush: ptr GpTexture, matrix: ptr GpMatrix): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipResetTextureTransform*(brush: ptr GpTexture): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipMultiplyTextureTransform*(brush: ptr GpTexture, matrix: ptr GpMatrix, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTranslateTextureTransform*(brush: ptr GpTexture, dx: REAL, dy: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipScaleTextureTransform*(brush: ptr GpTexture, sx: REAL, sy: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipRotateTextureTransform*(brush: ptr GpTexture, angle: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipSetTextureWrapMode*(brush: ptr GpTexture, wrapmode: GpWrapMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetTextureWrapMode*(brush: ptr GpTexture, wrapmode: ptr GpWrapMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipGetTextureImage*(brush: ptr GpTexture, image: ptr ptr GpImage): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc GdipTestControl*(control: GpTestControlEnum, param: pointer): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
-proc `WmfHeader=`*(self: var MetafileHeader, x: METAHEADER) {.inline.} = self.union1.WmfHeader = x
-proc WmfHeader*(self: MetafileHeader): METAHEADER {.inline.} = self.union1.WmfHeader
-proc WmfHeader*(self: var MetafileHeader): var METAHEADER {.inline.} = self.union1.WmfHeader
-proc `EmfHeader=`*(self: var MetafileHeader, x: ENHMETAHEADER3) {.inline.} = self.union1.EmfHeader = x
-proc EmfHeader*(self: MetafileHeader): ENHMETAHEADER3 {.inline.} = self.union1.EmfHeader
-proc EmfHeader*(self: var MetafileHeader): var ENHMETAHEADER3 {.inline.} = self.union1.EmfHeader
+proc GdipCreateAdjustableArrowCap*(
+  height: REAL, width: REAL, isFilled: BOOL, cap: ptr ptr GpAdjustableArrowCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetAdjustableArrowCapHeight*(
+  cap: ptr GpAdjustableArrowCap, height: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetAdjustableArrowCapHeight*(
+  cap: ptr GpAdjustableArrowCap, height: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetAdjustableArrowCapWidth*(
+  cap: ptr GpAdjustableArrowCap, width: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetAdjustableArrowCapWidth*(
+  cap: ptr GpAdjustableArrowCap, width: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetAdjustableArrowCapMiddleInset*(
+  cap: ptr GpAdjustableArrowCap, middleInset: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetAdjustableArrowCapMiddleInset*(
+  cap: ptr GpAdjustableArrowCap, middleInset: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetAdjustableArrowCapFillState*(
+  cap: ptr GpAdjustableArrowCap, fillState: BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetAdjustableArrowCapFillState*(
+  cap: ptr GpAdjustableArrowCap, fillState: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateBitmapFromStream*(
+  stream: ptr IStream, bitmap: ptr ptr GpBitmap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateBitmapFromFile*(
+  filename: ptr WCHAR, bitmap: ptr ptr GpBitmap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateBitmapFromStreamICM*(
+  stream: ptr IStream, bitmap: ptr ptr GpBitmap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateBitmapFromFileICM*(
+  filename: ptr WCHAR, bitmap: ptr ptr GpBitmap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateBitmapFromScan0*(
+  width: INT,
+  height: INT,
+  stride: INT,
+  format: PixelFormat,
+  scan0: ptr BYTE,
+  bitmap: ptr ptr GpBitmap,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateBitmapFromGraphics*(
+  width: INT, height: INT, target: ptr GpGraphics, bitmap: ptr ptr GpBitmap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateBitmapFromGdiDib*(
+  gdiBitmapInfo: ptr BITMAPINFO, gdiBitmapData: pointer, bitmap: ptr ptr GpBitmap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateBitmapFromHBITMAP*(
+  hbm: HBITMAP, hpal: HPALETTE, bitmap: ptr ptr GpBitmap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateHBITMAPFromBitmap*(
+  bitmap: ptr GpBitmap, hbmReturn: ptr HBITMAP, background: ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateBitmapFromHICON*(
+  hicon: HICON, bitmap: ptr ptr GpBitmap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateHICONFromBitmap*(
+  bitmap: ptr GpBitmap, hbmReturn: ptr HICON
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateBitmapFromResource*(
+  hInstance: HINSTANCE, lpBitmapName: ptr WCHAR, bitmap: ptr ptr GpBitmap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCloneBitmapArea*(
+  x: REAL,
+  y: REAL,
+  width: REAL,
+  height: REAL,
+  format: PixelFormat,
+  srcBitmap: ptr GpBitmap,
+  dstBitmap: ptr ptr GpBitmap,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCloneBitmapAreaI*(
+  x: INT,
+  y: INT,
+  width: INT,
+  height: INT,
+  format: PixelFormat,
+  srcBitmap: ptr GpBitmap,
+  dstBitmap: ptr ptr GpBitmap,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipBitmapLockBits*(
+  bitmap: ptr GpBitmap,
+  rect: ptr GpRect,
+  flags: UINT,
+  format: PixelFormat,
+  lockedBitmapData: ptr BitmapData,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipBitmapUnlockBits*(
+  bitmap: ptr GpBitmap, lockedBitmapData: ptr BitmapData
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipBitmapGetPixel*(
+  bitmap: ptr GpBitmap, x: INT, y: INT, color: ptr ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipBitmapSetPixel*(
+  bitmap: ptr GpBitmap, x: INT, y: INT, color: ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipBitmapSetResolution*(
+  bitmap: ptr GpBitmap, xdpi: REAL, ydpi: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipBitmapConvertFormat*(
+  pInputBitmap: ptr GpBitmap,
+  format: PixelFormat,
+  dithertype: DitherType,
+  palettetype: PaletteType,
+  palette: ptr ColorPalette,
+  alphaThresholdPercent: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipInitializePalette*(
+  palette: ptr ColorPalette,
+  palettetype: PaletteType,
+  optimalColors: INT,
+  useTransparentColor: BOOL,
+  bitmap: ptr GpBitmap,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipBitmapApplyEffect*(
+  bitmap: ptr GpBitmap,
+  effect: ptr CGpEffect,
+  roi: ptr RECT,
+  useAuxData: BOOL,
+  auxData: ptr pointer,
+  auxDataSize: ptr INT,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipBitmapCreateApplyEffect*(
+  inputBitmaps: ptr ptr GpBitmap,
+  numInputs: INT,
+  effect: ptr CGpEffect,
+  roi: ptr RECT,
+  outputRect: ptr RECT,
+  outputBitmap: ptr ptr GpBitmap,
+  useAuxData: BOOL,
+  auxData: ptr pointer,
+  auxDataSize: ptr INT,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipBitmapGetHistogram*(
+  bitmap: ptr GpBitmap,
+  format: HistogramFormat,
+  NumberOfEntries: UINT,
+  channel0: ptr UINT,
+  channel1: ptr UINT,
+  channel2: ptr UINT,
+  channel3: ptr UINT,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipBitmapGetHistogramSize*(
+  format: HistogramFormat, NumberOfEntries: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCloneBrush*(
+  brush: ptr GpBrush, cloneBrush: ptr ptr GpBrush
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDeleteBrush*(
+  brush: ptr GpBrush
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetBrushType*(
+  brush: ptr GpBrush, Type: ptr GpBrushType
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateCachedBitmap*(
+  bitmap: ptr GpBitmap, graphics: ptr GpGraphics, cachedBitmap: ptr ptr GpCachedBitmap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDeleteCachedBitmap*(
+  cachedBitmap: ptr GpCachedBitmap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawCachedBitmap*(
+  graphics: ptr GpGraphics, cachedBitmap: ptr GpCachedBitmap, x: INT, y: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateCustomLineCap*(
+  fillPath: ptr GpPath,
+  strokePath: ptr GpPath,
+  baseCap: GpLineCap,
+  baseInset: REAL,
+  customCap: ptr ptr GpCustomLineCap,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDeleteCustomLineCap*(
+  customCap: ptr GpCustomLineCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCloneCustomLineCap*(
+  customCap: ptr GpCustomLineCap, clonedCap: ptr ptr GpCustomLineCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetCustomLineCapType*(
+  customCap: ptr GpCustomLineCap, capType: ptr CustomLineCapType
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetCustomLineCapStrokeCaps*(
+  customCap: ptr GpCustomLineCap, startCap: GpLineCap, endCap: GpLineCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetCustomLineCapStrokeCaps*(
+  customCap: ptr GpCustomLineCap, startCap: ptr GpLineCap, endCap: ptr GpLineCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetCustomLineCapStrokeJoin*(
+  customCap: ptr GpCustomLineCap, lineJoin: GpLineJoin
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetCustomLineCapStrokeJoin*(
+  customCap: ptr GpCustomLineCap, lineJoin: ptr GpLineJoin
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetCustomLineCapBaseCap*(
+  customCap: ptr GpCustomLineCap, baseCap: GpLineCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetCustomLineCapBaseCap*(
+  customCap: ptr GpCustomLineCap, baseCap: ptr GpLineCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetCustomLineCapBaseInset*(
+  customCap: ptr GpCustomLineCap, inset: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetCustomLineCapBaseInset*(
+  customCap: ptr GpCustomLineCap, inset: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetCustomLineCapWidthScale*(
+  customCap: ptr GpCustomLineCap, widthScale: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetCustomLineCapWidthScale*(
+  customCap: ptr GpCustomLineCap, widthScale: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateEffect*(
+  guid: GUID, effect: ptr ptr CGpEffect
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDeleteEffect*(
+  effect: ptr CGpEffect
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetEffectParameterSize*(
+  effect: ptr CGpEffect, size: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetEffectParameters*(
+  effect: ptr CGpEffect, params: pointer, size: UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetEffectParameters*(
+  effect: ptr CGpEffect, size: ptr UINT, params: pointer
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateFontFromDC*(
+  hdc: HDC, font: ptr ptr GpFont
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateFontFromLogfontA*(
+  hdc: HDC, logfont: ptr LOGFONTA, font: ptr ptr GpFont
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateFontFromLogfontW*(
+  hdc: HDC, logfont: ptr LOGFONTW, font: ptr ptr GpFont
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateFont*(
+  fontFamily: ptr GpFontFamily,
+  emSize: REAL,
+  style: INT,
+  unit: GpUnit,
+  font: ptr ptr GpFont,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCloneFont*(
+  font: ptr GpFont, cloneFont: ptr ptr GpFont
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDeleteFont*(
+  font: ptr GpFont
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetFamily*(
+  font: ptr GpFont, family: ptr ptr GpFontFamily
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetFontStyle*(
+  font: ptr GpFont, style: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetFontSize*(
+  font: ptr GpFont, size: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetFontUnit*(
+  font: ptr GpFont, unit: ptr GpUnit
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetFontHeight*(
+  font: ptr GpFont, graphics: ptr GpGraphics, height: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetFontHeightGivenDPI*(
+  font: ptr GpFont, dpi: REAL, height: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetLogFontA*(
+  font: ptr GpFont, graphics: ptr GpGraphics, logfontA: ptr LOGFONTA
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetLogFontW*(
+  font: ptr GpFont, graphics: ptr GpGraphics, logfontW: ptr LOGFONTW
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipNewInstalledFontCollection*(
+  fontCollection: ptr ptr GpFontCollection
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipNewPrivateFontCollection*(
+  fontCollection: ptr ptr GpFontCollection
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDeletePrivateFontCollection*(
+  fontCollection: ptr ptr GpFontCollection
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetFontCollectionFamilyCount*(
+  fontCollection: ptr GpFontCollection, numFound: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetFontCollectionFamilyList*(
+  fontCollection: ptr GpFontCollection,
+  numSought: INT,
+  gpfamilies: ptr ptr GpFontFamily,
+  numFound: ptr INT,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPrivateAddFontFile*(
+  fontCollection: ptr GpFontCollection, filename: ptr WCHAR
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPrivateAddMemoryFont*(
+  fontCollection: ptr GpFontCollection, memory: pointer, length: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateFontFamilyFromName*(
+  name: ptr WCHAR,
+  fontCollection: ptr GpFontCollection,
+  FontFamily: ptr ptr GpFontFamily,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDeleteFontFamily*(
+  fontFamily: ptr GpFontFamily
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCloneFontFamily*(
+  FontFamily: ptr GpFontFamily, clonedFontFamily: ptr ptr GpFontFamily
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetGenericFontFamilySansSerif*(
+  nativeFamily: ptr ptr GpFontFamily
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetGenericFontFamilySerif*(
+  nativeFamily: ptr ptr GpFontFamily
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetGenericFontFamilyMonospace*(
+  nativeFamily: ptr ptr GpFontFamily
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetFamilyName*(
+  family: ptr GpFontFamily, name: ptr WCHAR, language: LANGID
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsStyleAvailable*(
+  family: ptr GpFontFamily, style: INT, IsStyleAvailable: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetEmHeight*(
+  family: ptr GpFontFamily, style: INT, EmHeight: ptr UINT16
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetCellAscent*(
+  family: ptr GpFontFamily, style: INT, CellAscent: ptr UINT16
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetCellDescent*(
+  family: ptr GpFontFamily, style: INT, CellDescent: ptr UINT16
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetLineSpacing*(
+  family: ptr GpFontFamily, style: INT, LineSpacing: ptr UINT16
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFlush*(
+  graphics: ptr GpGraphics, intention: GpFlushIntention
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateFromHDC*(
+  hdc: HDC, graphics: ptr ptr GpGraphics
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateFromHDC2*(
+  hdc: HDC, hDevice: HANDLE, graphics: ptr ptr GpGraphics
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateFromHWND*(
+  hwnd: HWND, graphics: ptr ptr GpGraphics
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateFromHWNDICM*(
+  hwnd: HWND, graphics: ptr ptr GpGraphics
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDeleteGraphics*(
+  graphics: ptr GpGraphics
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetDC*(
+  graphics: ptr GpGraphics, hdc: ptr HDC
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipReleaseDC*(
+  graphics: ptr GpGraphics, hdc: HDC
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetCompositingMode*(
+  graphics: ptr GpGraphics, compositingMode: CompositingMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetCompositingMode*(
+  graphics: ptr GpGraphics, compositingMode: ptr CompositingMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetRenderingOrigin*(
+  graphics: ptr GpGraphics, x: INT, y: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetRenderingOrigin*(
+  graphics: ptr GpGraphics, x: ptr INT, y: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetCompositingQuality*(
+  graphics: ptr GpGraphics, compositingQuality: CompositingQuality
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetCompositingQuality*(
+  graphics: ptr GpGraphics, compositingQuality: ptr CompositingQuality
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetSmoothingMode*(
+  graphics: ptr GpGraphics, smoothingMode: SmoothingMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetSmoothingMode*(
+  graphics: ptr GpGraphics, smoothingMode: ptr SmoothingMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPixelOffsetMode*(
+  graphics: ptr GpGraphics, pixelOffsetMode: PixelOffsetMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPixelOffsetMode*(
+  graphics: ptr GpGraphics, pixelOffsetMode: ptr PixelOffsetMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetTextRenderingHint*(
+  graphics: ptr GpGraphics, mode: TextRenderingHint
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetTextRenderingHint*(
+  graphics: ptr GpGraphics, mode: ptr TextRenderingHint
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetTextContrast*(
+  graphics: ptr GpGraphics, contrast: UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetTextContrast*(
+  graphics: ptr GpGraphics, contrast: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetInterpolationMode*(
+  graphics: ptr GpGraphics, interpolationMode: InterpolationMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGraphicsSetAbort*(
+  pGraphics: ptr GpGraphics, pIAbort: ptr GdiplusAbort
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetInterpolationMode*(
+  graphics: ptr GpGraphics, interpolationMode: ptr InterpolationMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetWorldTransform*(
+  graphics: ptr GpGraphics, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipResetWorldTransform*(
+  graphics: ptr GpGraphics
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipMultiplyWorldTransform*(
+  graphics: ptr GpGraphics, matrix: ptr GpMatrix, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTranslateWorldTransform*(
+  graphics: ptr GpGraphics, dx: REAL, dy: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipScaleWorldTransform*(
+  graphics: ptr GpGraphics, sx: REAL, sy: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipRotateWorldTransform*(
+  graphics: ptr GpGraphics, angle: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetWorldTransform*(
+  graphics: ptr GpGraphics, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipResetPageTransform*(
+  graphics: ptr GpGraphics
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPageUnit*(
+  graphics: ptr GpGraphics, unit: ptr GpUnit
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPageScale*(
+  graphics: ptr GpGraphics, scale: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPageUnit*(
+  graphics: ptr GpGraphics, unit: GpUnit
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPageScale*(
+  graphics: ptr GpGraphics, scale: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetDpiX*(
+  graphics: ptr GpGraphics, dpi: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetDpiY*(
+  graphics: ptr GpGraphics, dpi: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTransformPoints*(
+  graphics: ptr GpGraphics,
+  destSpace: GpCoordinateSpace,
+  srcSpace: GpCoordinateSpace,
+  points: ptr GpPointF,
+  count: INT,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTransformPointsI*(
+  graphics: ptr GpGraphics,
+  destSpace: GpCoordinateSpace,
+  srcSpace: GpCoordinateSpace,
+  points: ptr GpPoint,
+  count: INT,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetNearestColor*(
+  graphics: ptr GpGraphics, argb: ptr ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateHalftonePalette*(): HPALETTE {.
+  winapi, stdcall, dynlib: "gdiplus", importc
+.}
+
+proc GdipDrawLine*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, x1: REAL, y1: REAL, x2: REAL, y2: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawLineI*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, x1: INT, y1: INT, x2: INT, y2: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawLines*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawLinesI*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawArc*(
+  graphics: ptr GpGraphics,
+  pen: ptr GpPen,
+  x: REAL,
+  y: REAL,
+  width: REAL,
+  height: REAL,
+  startAngle: REAL,
+  sweepAngle: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawArcI*(
+  graphics: ptr GpGraphics,
+  pen: ptr GpPen,
+  x: INT,
+  y: INT,
+  width: INT,
+  height: INT,
+  startAngle: REAL,
+  sweepAngle: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawBezier*(
+  graphics: ptr GpGraphics,
+  pen: ptr GpPen,
+  x1: REAL,
+  y1: REAL,
+  x2: REAL,
+  y2: REAL,
+  x3: REAL,
+  y3: REAL,
+  x4: REAL,
+  y4: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawBezierI*(
+  graphics: ptr GpGraphics,
+  pen: ptr GpPen,
+  x1: INT,
+  y1: INT,
+  x2: INT,
+  y2: INT,
+  x3: INT,
+  y3: INT,
+  x4: INT,
+  y4: INT,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawBeziers*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawBeziersI*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawRectangle*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, x: REAL, y: REAL, width: REAL, height: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawRectangleI*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, x: INT, y: INT, width: INT, height: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawRectangles*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, rects: ptr GpRectF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawRectanglesI*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, rects: ptr GpRect, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawEllipse*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, x: REAL, y: REAL, width: REAL, height: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawEllipseI*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, x: INT, y: INT, width: INT, height: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawPie*(
+  graphics: ptr GpGraphics,
+  pen: ptr GpPen,
+  x: REAL,
+  y: REAL,
+  width: REAL,
+  height: REAL,
+  startAngle: REAL,
+  sweepAngle: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawPieI*(
+  graphics: ptr GpGraphics,
+  pen: ptr GpPen,
+  x: INT,
+  y: INT,
+  width: INT,
+  height: INT,
+  startAngle: REAL,
+  sweepAngle: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawPolygon*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawPolygonI*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawPath*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, path: ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawCurve*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawCurveI*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawCurve2*(
+  graphics: ptr GpGraphics,
+  pen: ptr GpPen,
+  points: ptr GpPointF,
+  count: INT,
+  tension: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawCurve2I*(
+  graphics: ptr GpGraphics,
+  pen: ptr GpPen,
+  points: ptr GpPoint,
+  count: INT,
+  tension: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawCurve3*(
+  graphics: ptr GpGraphics,
+  pen: ptr GpPen,
+  points: ptr GpPointF,
+  count: INT,
+  offset: INT,
+  numberOfSegments: INT,
+  tension: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawCurve3I*(
+  graphics: ptr GpGraphics,
+  pen: ptr GpPen,
+  points: ptr GpPoint,
+  count: INT,
+  offset: INT,
+  numberOfSegments: INT,
+  tension: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawClosedCurve*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawClosedCurveI*(
+  graphics: ptr GpGraphics, pen: ptr GpPen, points: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawClosedCurve2*(
+  graphics: ptr GpGraphics,
+  pen: ptr GpPen,
+  points: ptr GpPointF,
+  count: INT,
+  tension: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawClosedCurve2I*(
+  graphics: ptr GpGraphics,
+  pen: ptr GpPen,
+  points: ptr GpPoint,
+  count: INT,
+  tension: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGraphicsClear*(
+  graphics: ptr GpGraphics, color: ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillRectangle*(
+  graphics: ptr GpGraphics,
+  brush: ptr GpBrush,
+  x: REAL,
+  y: REAL,
+  width: REAL,
+  height: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillRectangleI*(
+  graphics: ptr GpGraphics, brush: ptr GpBrush, x: INT, y: INT, width: INT, height: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillRectangles*(
+  graphics: ptr GpGraphics, brush: ptr GpBrush, rects: ptr GpRectF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillRectanglesI*(
+  graphics: ptr GpGraphics, brush: ptr GpBrush, rects: ptr GpRect, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillPolygon*(
+  graphics: ptr GpGraphics,
+  brush: ptr GpBrush,
+  points: ptr GpPointF,
+  count: INT,
+  fillMode: GpFillMode,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillPolygonI*(
+  graphics: ptr GpGraphics,
+  brush: ptr GpBrush,
+  points: ptr GpPoint,
+  count: INT,
+  fillMode: GpFillMode,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillPolygon2*(
+  graphics: ptr GpGraphics, brush: ptr GpBrush, points: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillPolygon2I*(
+  graphics: ptr GpGraphics, brush: ptr GpBrush, points: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillEllipse*(
+  graphics: ptr GpGraphics,
+  brush: ptr GpBrush,
+  x: REAL,
+  y: REAL,
+  width: REAL,
+  height: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillEllipseI*(
+  graphics: ptr GpGraphics, brush: ptr GpBrush, x: INT, y: INT, width: INT, height: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillPie*(
+  graphics: ptr GpGraphics,
+  brush: ptr GpBrush,
+  x: REAL,
+  y: REAL,
+  width: REAL,
+  height: REAL,
+  startAngle: REAL,
+  sweepAngle: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillPieI*(
+  graphics: ptr GpGraphics,
+  brush: ptr GpBrush,
+  x: INT,
+  y: INT,
+  width: INT,
+  height: INT,
+  startAngle: REAL,
+  sweepAngle: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillPath*(
+  graphics: ptr GpGraphics, brush: ptr GpBrush, path: ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillClosedCurve*(
+  graphics: ptr GpGraphics, brush: ptr GpBrush, points: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillClosedCurveI*(
+  graphics: ptr GpGraphics, brush: ptr GpBrush, points: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillClosedCurve2*(
+  graphics: ptr GpGraphics,
+  brush: ptr GpBrush,
+  points: ptr GpPointF,
+  count: INT,
+  tension: REAL,
+  fillMode: GpFillMode,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillClosedCurve2I*(
+  graphics: ptr GpGraphics,
+  brush: ptr GpBrush,
+  points: ptr GpPoint,
+  count: INT,
+  tension: REAL,
+  fillMode: GpFillMode,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFillRegion*(
+  graphics: ptr GpGraphics, brush: ptr GpBrush, region: ptr GpRegion
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawImage*(
+  graphics: ptr GpGraphics, image: ptr GpImage, x: REAL, y: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawImageI*(
+  graphics: ptr GpGraphics, image: ptr GpImage, x: INT, y: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawImageRect*(
+  graphics: ptr GpGraphics,
+  image: ptr GpImage,
+  x: REAL,
+  y: REAL,
+  width: REAL,
+  height: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawImageRectI*(
+  graphics: ptr GpGraphics, image: ptr GpImage, x: INT, y: INT, width: INT, height: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawImagePoints*(
+  graphics: ptr GpGraphics, image: ptr GpImage, dstpoints: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawImagePointsI*(
+  graphics: ptr GpGraphics, image: ptr GpImage, dstpoints: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawImagePointRect*(
+  graphics: ptr GpGraphics,
+  image: ptr GpImage,
+  x: REAL,
+  y: REAL,
+  srcx: REAL,
+  srcy: REAL,
+  srcwidth: REAL,
+  srcheight: REAL,
+  srcUnit: GpUnit,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawImagePointRectI*(
+  graphics: ptr GpGraphics,
+  image: ptr GpImage,
+  x: INT,
+  y: INT,
+  srcx: INT,
+  srcy: INT,
+  srcwidth: INT,
+  srcheight: INT,
+  srcUnit: GpUnit,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawImageRectRect*(
+  graphics: ptr GpGraphics,
+  image: ptr GpImage,
+  dstx: REAL,
+  dsty: REAL,
+  dstwidth: REAL,
+  dstheight: REAL,
+  srcx: REAL,
+  srcy: REAL,
+  srcwidth: REAL,
+  srcheight: REAL,
+  srcUnit: GpUnit,
+  imageAttributes: ptr GpImageAttributes,
+  callback: DrawImageAbort,
+  callbackData: pointer,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawImageRectRectI*(
+  graphics: ptr GpGraphics,
+  image: ptr GpImage,
+  dstx: INT,
+  dsty: INT,
+  dstwidth: INT,
+  dstheight: INT,
+  srcx: INT,
+  srcy: INT,
+  srcwidth: INT,
+  srcheight: INT,
+  srcUnit: GpUnit,
+  imageAttributes: ptr GpImageAttributes,
+  callback: DrawImageAbort,
+  callbackData: pointer,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawImagePointsRect*(
+  graphics: ptr GpGraphics,
+  image: ptr GpImage,
+  points: ptr GpPointF,
+  count: INT,
+  srcx: REAL,
+  srcy: REAL,
+  srcwidth: REAL,
+  srcheight: REAL,
+  srcUnit: GpUnit,
+  imageAttributes: ptr GpImageAttributes,
+  callback: DrawImageAbort,
+  callbackData: pointer,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawImagePointsRectI*(
+  graphics: ptr GpGraphics,
+  image: ptr GpImage,
+  points: ptr GpPoint,
+  count: INT,
+  srcx: INT,
+  srcy: INT,
+  srcwidth: INT,
+  srcheight: INT,
+  srcUnit: GpUnit,
+  imageAttributes: ptr GpImageAttributes,
+  callback: DrawImageAbort,
+  callbackData: pointer,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawImageFX*(
+  graphics: ptr GpGraphics,
+  image: ptr GpImage,
+  source: ptr GpRectF,
+  xForm: ptr GpMatrix,
+  effect: ptr CGpEffect,
+  imageAttributes: ptr GpImageAttributes,
+  srcUnit: GpUnit,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipEnumerateMetafileDestPoints*(
+  graphics: ptr GpGraphics,
+  metafile: ptr GpMetafile,
+  destPoints: ptr GpPointF,
+  count: INT,
+  callback: EnumerateMetafileProc,
+  callbackData: pointer,
+  imageAttributes: ptr GpImageAttributes,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipEnumerateMetafileDestPointsI*(
+  graphics: ptr GpGraphics,
+  metafile: ptr GpMetafile,
+  destGpPoints: ptr GpPoint,
+  count: INT,
+  callback: EnumerateMetafileProc,
+  callbackData: pointer,
+  imageAttributes: ptr GpImageAttributes,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetClipGraphics*(
+  graphics: ptr GpGraphics, srcgraphics: ptr GpGraphics, combineMode: CombineMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetClipRect*(
+  graphics: ptr GpGraphics,
+  x: REAL,
+  y: REAL,
+  width: REAL,
+  height: REAL,
+  combineMode: CombineMode,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetClipRectI*(
+  graphics: ptr GpGraphics,
+  x: INT,
+  y: INT,
+  width: INT,
+  height: INT,
+  combineMode: CombineMode,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetClipPath*(
+  graphics: ptr GpGraphics, path: ptr GpPath, combineMode: CombineMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetClipRegion*(
+  graphics: ptr GpGraphics, region: ptr GpRegion, combineMode: CombineMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetClipHrgn*(
+  graphics: ptr GpGraphics, hRgn: HRGN, combineMode: CombineMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipResetClip*(
+  graphics: ptr GpGraphics
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTranslateClip*(
+  graphics: ptr GpGraphics, dx: REAL, dy: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTranslateClipI*(
+  graphics: ptr GpGraphics, dx: INT, dy: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetClip*(
+  graphics: ptr GpGraphics, region: ptr GpRegion
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetClipBounds*(
+  graphics: ptr GpGraphics, rect: ptr GpRectF
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetClipBoundsI*(
+  graphics: ptr GpGraphics, rect: ptr GpRect
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsClipEmpty*(
+  graphics: ptr GpGraphics, result: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetVisibleClipBounds*(
+  graphics: ptr GpGraphics, rect: ptr GpRectF
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetVisibleClipBoundsI*(
+  graphics: ptr GpGraphics, rect: ptr GpRect
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsVisibleClipEmpty*(
+  graphics: ptr GpGraphics, result: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsVisiblePoint*(
+  graphics: ptr GpGraphics, x: REAL, y: REAL, result: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsVisiblePointI*(
+  graphics: ptr GpGraphics, x: INT, y: INT, result: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsVisibleRect*(
+  graphics: ptr GpGraphics,
+  x: REAL,
+  y: REAL,
+  width: REAL,
+  height: REAL,
+  result: ptr BOOL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsVisibleRectI*(
+  graphics: ptr GpGraphics, x: INT, y: INT, width: INT, height: INT, result: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSaveGraphics*(
+  graphics: ptr GpGraphics, state: ptr GraphicsState
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipRestoreGraphics*(
+  graphics: ptr GpGraphics, state: GraphicsState
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipBeginContainer*(
+  graphics: ptr GpGraphics,
+  dstrect: ptr GpRectF,
+  srcrect: ptr GpRectF,
+  unit: GpUnit,
+  state: ptr GraphicsContainer,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipBeginContainerI*(
+  graphics: ptr GpGraphics,
+  dstrect: ptr GpRect,
+  srcrect: ptr GpRect,
+  unit: GpUnit,
+  state: ptr GraphicsContainer,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipBeginContainer2*(
+  graphics: ptr GpGraphics, state: ptr GraphicsContainer
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipEndContainer*(
+  graphics: ptr GpGraphics, state: GraphicsContainer
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipComment*(
+  graphics: ptr GpGraphics, sizeData: UINT, data: ptr BYTE
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreatePath*(
+  brushMode: GpFillMode, path: ptr ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreatePath2*(
+  points: ptr GpPointF,
+  types: ptr BYTE,
+  count: INT,
+  fillMode: GpFillMode,
+  path: ptr ptr GpPath,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreatePath2I*(
+  points: ptr GpPoint,
+  types: ptr BYTE,
+  count: INT,
+  fillMode: GpFillMode,
+  path: ptr ptr GpPath,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipClonePath*(
+  path: ptr GpPath, clonePath: ptr ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDeletePath*(
+  path: ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipResetPath*(
+  path: ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPointCount*(
+  path: ptr GpPath, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathTypes*(
+  path: ptr GpPath, types: ptr BYTE, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathPoints*(
+  path: ptr GpPath, points: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathPointsI*(
+  path: ptr GpPath, points: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathFillMode*(
+  path: ptr GpPath, fillmode: ptr GpFillMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathFillMode*(
+  path: ptr GpPath, fillmode: GpFillMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathData*(
+  path: ptr GpPath, pathData: ptr GpPathData
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipStartPathFigure*(
+  path: ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipClosePathFigure*(
+  path: ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipClosePathFigures*(
+  path: ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathMarker*(
+  path: ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipClearPathMarkers*(
+  path: ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipReversePath*(
+  path: ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathLastPoint*(
+  path: ptr GpPath, lastPoint: ptr GpPointF
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathLine*(
+  path: ptr GpPath, x1: REAL, y1: REAL, x2: REAL, y2: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathLine2*(
+  path: ptr GpPath, points: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathArc*(
+  path: ptr GpPath,
+  x: REAL,
+  y: REAL,
+  width: REAL,
+  height: REAL,
+  startAngle: REAL,
+  sweepAngle: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathBezier*(
+  path: ptr GpPath,
+  x1: REAL,
+  y1: REAL,
+  x2: REAL,
+  y2: REAL,
+  x3: REAL,
+  y3: REAL,
+  x4: REAL,
+  y4: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathBeziers*(
+  path: ptr GpPath, points: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathCurve*(
+  path: ptr GpPath, points: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathCurve2*(
+  path: ptr GpPath, points: ptr GpPointF, count: INT, tension: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathCurve3*(
+  path: ptr GpPath,
+  points: ptr GpPointF,
+  count: INT,
+  offset: INT,
+  numberOfSegments: INT,
+  tension: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathClosedCurve*(
+  path: ptr GpPath, points: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathClosedCurve2*(
+  path: ptr GpPath, points: ptr GpPointF, count: INT, tension: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathRectangle*(
+  path: ptr GpPath, x: REAL, y: REAL, width: REAL, height: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathRectangles*(
+  path: ptr GpPath, rects: ptr GpRectF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathEllipse*(
+  path: ptr GpPath, x: REAL, y: REAL, width: REAL, height: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathPie*(
+  path: ptr GpPath,
+  x: REAL,
+  y: REAL,
+  width: REAL,
+  height: REAL,
+  startAngle: REAL,
+  sweepAngle: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathPolygon*(
+  path: ptr GpPath, points: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathPath*(
+  path: ptr GpPath, addingPath: ptr GpPath, connect: BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathString*(
+  path: ptr GpPath,
+  string: ptr WCHAR,
+  length: INT,
+  family: ptr GpFontFamily,
+  style: INT,
+  emSize: REAL,
+  layoutRect: ptr GpRectF,
+  format: ptr GpStringFormat,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathStringI*(
+  path: ptr GpPath,
+  string: ptr WCHAR,
+  length: INT,
+  family: ptr GpFontFamily,
+  style: INT,
+  emSize: REAL,
+  layoutGpRect: ptr GpRect,
+  format: ptr GpStringFormat,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathLineI*(
+  path: ptr GpPath, x1: INT, y1: INT, x2: INT, y2: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathLine2I*(
+  path: ptr GpPath, points: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathArcI*(
+  path: ptr GpPath,
+  x: INT,
+  y: INT,
+  width: INT,
+  height: INT,
+  startAngle: REAL,
+  sweepAngle: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathBezierI*(
+  path: ptr GpPath,
+  x1: INT,
+  y1: INT,
+  x2: INT,
+  y2: INT,
+  x3: INT,
+  y3: INT,
+  x4: INT,
+  y4: INT,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathBeziersI*(
+  path: ptr GpPath, points: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathCurveI*(
+  path: ptr GpPath, points: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathCurve2I*(
+  path: ptr GpPath, points: ptr GpPoint, count: INT, tension: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathCurve3I*(
+  path: ptr GpPath,
+  points: ptr GpPoint,
+  count: INT,
+  offset: INT,
+  numberOfSegments: INT,
+  tension: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathClosedCurveI*(
+  path: ptr GpPath, points: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathClosedCurve2I*(
+  path: ptr GpPath, points: ptr GpPoint, count: INT, tension: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathRectangleI*(
+  path: ptr GpPath, x: INT, y: INT, width: INT, height: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathRectanglesI*(
+  path: ptr GpPath, rects: ptr GpRect, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathEllipseI*(
+  path: ptr GpPath, x: INT, y: INT, width: INT, height: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathPieI*(
+  path: ptr GpPath,
+  x: INT,
+  y: INT,
+  width: INT,
+  height: INT,
+  startAngle: REAL,
+  sweepAngle: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipAddPathPolygonI*(
+  path: ptr GpPath, points: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFlattenPath*(
+  path: ptr GpPath, matrix: ptr GpMatrix, flatness: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipWindingModeOutline*(
+  path: ptr GpPath, matrix: ptr GpMatrix, flatness: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipWidenPath*(
+  nativePath: ptr GpPath, pen: ptr GpPen, matrix: ptr GpMatrix, flatness: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipWarpPath*(
+  path: ptr GpPath,
+  matrix: ptr GpMatrix,
+  points: ptr GpPointF,
+  count: INT,
+  srcx: REAL,
+  srcy: REAL,
+  srcwidth: REAL,
+  srcheight: REAL,
+  warpMode: WarpMode,
+  flatness: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTransformPath*(
+  path: ptr GpPath, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathWorldBounds*(
+  path: ptr GpPath, bounds: ptr GpRectF, matrix: ptr GpMatrix, pen: ptr GpPen
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathWorldBoundsI*(
+  path: ptr GpPath, bounds: ptr GpRect, matrix: ptr GpMatrix, pen: ptr GpPen
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsVisiblePathPoint*(
+  path: ptr GpPath, x: REAL, y: REAL, graphics: ptr GpGraphics, result: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsVisiblePathPointI*(
+  path: ptr GpPath, x: INT, y: INT, graphics: ptr GpGraphics, result: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsOutlineVisiblePathPoint*(
+  path: ptr GpPath,
+  x: REAL,
+  y: REAL,
+  pen: ptr GpPen,
+  graphics: ptr GpGraphics,
+  result: ptr BOOL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsOutlineVisiblePathPointI*(
+  path: ptr GpPath,
+  x: INT,
+  y: INT,
+  pen: ptr GpPen,
+  graphics: ptr GpGraphics,
+  result: ptr BOOL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateHatchBrush*(
+  hatchstyle: GpHatchStyle, forecol: ARGB, backcol: ARGB, brush: ptr ptr GpHatch
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetHatchStyle*(
+  brush: ptr GpHatch, hatchstyle: ptr GpHatchStyle
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetHatchForegroundColor*(
+  brush: ptr GpHatch, forecol: ptr ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetHatchBackgroundColor*(
+  brush: ptr GpHatch, backcol: ptr ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipLoadImageFromStream*(
+  stream: ptr IStream, image: ptr ptr GpImage
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipLoadImageFromFile*(
+  filename: ptr WCHAR, image: ptr ptr GpImage
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipLoadImageFromStreamICM*(
+  stream: ptr IStream, image: ptr ptr GpImage
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipLoadImageFromFileICM*(
+  filename: ptr WCHAR, image: ptr ptr GpImage
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCloneImage*(
+  image: ptr GpImage, cloneImage: ptr ptr GpImage
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDisposeImage*(
+  image: ptr GpImage
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSaveImageToFile*(
+  image: ptr GpImage,
+  filename: ptr WCHAR,
+  clsidEncoder: ptr CLSID,
+  encoderParams: ptr EncoderParameters,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSaveImageToStream*(
+  image: ptr GpImage,
+  stream: ptr IStream,
+  clsidEncoder: ptr CLSID,
+  encoderParams: ptr EncoderParameters,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSaveAdd*(
+  image: ptr GpImage, encoderParams: ptr EncoderParameters
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSaveAddImage*(
+  image: ptr GpImage, newImage: ptr GpImage, encoderParams: ptr EncoderParameters
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageGraphicsContext*(
+  image: ptr GpImage, graphics: ptr ptr GpGraphics
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageBounds*(
+  image: ptr GpImage, srcRect: ptr GpRectF, srcUnit: ptr GpUnit
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageDimension*(
+  image: ptr GpImage, width: ptr REAL, height: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageType*(
+  image: ptr GpImage, Type: ptr ImageType
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageWidth*(
+  image: ptr GpImage, width: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageHeight*(
+  image: ptr GpImage, height: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageHorizontalResolution*(
+  image: ptr GpImage, resolution: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageVerticalResolution*(
+  image: ptr GpImage, resolution: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageFlags*(
+  image: ptr GpImage, flags: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageRawFormat*(
+  image: ptr GpImage, format: ptr GUID
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImagePixelFormat*(
+  image: ptr GpImage, format: ptr PixelFormat
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageThumbnail*(
+  image: ptr GpImage,
+  thumbWidth: UINT,
+  thumbHeight: UINT,
+  thumbImage: ptr ptr GpImage,
+  callback: GetThumbnailImageAbort,
+  callbackData: pointer,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetEncoderParameterListSize*(
+  image: ptr GpImage, clsidEncoder: ptr CLSID, size: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetEncoderParameterList*(
+  image: ptr GpImage, clsidEncoder: ptr CLSID, size: UINT, buffer: ptr EncoderParameters
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipImageGetFrameDimensionsCount*(
+  image: ptr GpImage, count: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipImageGetFrameDimensionsList*(
+  image: ptr GpImage, dimensionIDs: ptr GUID, count: UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipImageGetFrameCount*(
+  image: ptr GpImage, dimensionID: ptr GUID, count: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipImageSelectActiveFrame*(
+  image: ptr GpImage, dimensionID: ptr GUID, frameIndex: UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipImageRotateFlip*(
+  image: ptr GpImage, rfType: RotateFlipType
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImagePalette*(
+  image: ptr GpImage, palette: ptr ColorPalette, size: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetImagePalette*(
+  image: ptr GpImage, palette: ptr ColorPalette
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImagePaletteSize*(
+  image: ptr GpImage, size: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPropertyCount*(
+  image: ptr GpImage, numOfProperty: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPropertyIdList*(
+  image: ptr GpImage, numOfProperty: UINT, list: ptr PROPID
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPropertyItemSize*(
+  image: ptr GpImage, propId: PROPID, size: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPropertyItem*(
+  image: ptr GpImage, propId: PROPID, propSize: UINT, buffer: ptr PropertyItem
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPropertySize*(
+  image: ptr GpImage, totalBufferSize: ptr UINT, numProperties: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetAllPropertyItems*(
+  image: ptr GpImage,
+  totalBufferSize: UINT,
+  numProperties: UINT,
+  allItems: ptr PropertyItem,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipRemovePropertyItem*(
+  image: ptr GpImage, propId: PROPID
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPropertyItem*(
+  image: ptr GpImage, item: ptr PropertyItem
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFindFirstImageItem*(
+  image: ptr GpImage, item: ptr ImageItemData
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipFindNextImageItem*(
+  image: ptr GpImage, item: ptr ImageItemData
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageItemData*(
+  image: ptr GpImage, item: ptr ImageItemData
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipImageSetAbort*(
+  pImage: ptr GpImage, pIAbort: ptr GdiplusAbort
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipImageForceValidation*(
+  image: ptr GpImage
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageDecodersSize*(
+  numDecoders: ptr UINT, size: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageDecoders*(
+  numDecoders: UINT, size: UINT, decoders: ptr ImageCodecInfo
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageEncodersSize*(
+  numEncoders: ptr UINT, size: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageEncoders*(
+  numEncoders: UINT, size: UINT, encoders: ptr ImageCodecInfo
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateImageAttributes*(
+  imageattr: ptr ptr GpImageAttributes
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCloneImageAttributes*(
+  imageattr: ptr GpImageAttributes, cloneImageattr: ptr ptr GpImageAttributes
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDisposeImageAttributes*(
+  imageattr: ptr GpImageAttributes
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetImageAttributesToIdentity*(
+  imageattr: ptr GpImageAttributes, Type: ColorAdjustType
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipResetImageAttributes*(
+  imageattr: ptr GpImageAttributes, Type: ColorAdjustType
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetImageAttributesColorMatrix*(
+  imageattr: ptr GpImageAttributes,
+  Type: ColorAdjustType,
+  enableFlag: BOOL,
+  colorMatrix: ptr ColorMatrix,
+  grayMatrix: ptr ColorMatrix,
+  flags: ColorMatrixFlags,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetImageAttributesThreshold*(
+  imageattr: ptr GpImageAttributes,
+  Type: ColorAdjustType,
+  enableFlag: BOOL,
+  threshold: REAL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetImageAttributesGamma*(
+  imageattr: ptr GpImageAttributes, Type: ColorAdjustType, enableFlag: BOOL, gamma: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetImageAttributesNoOp*(
+  imageattr: ptr GpImageAttributes, Type: ColorAdjustType, enableFlag: BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetImageAttributesColorKeys*(
+  imageattr: ptr GpImageAttributes,
+  Type: ColorAdjustType,
+  enableFlag: BOOL,
+  colorLow: ARGB,
+  colorHigh: ARGB,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetImageAttributesOutputChannel*(
+  imageattr: ptr GpImageAttributes,
+  Type: ColorAdjustType,
+  enableFlag: BOOL,
+  channelFlags: ColorChannelFlags,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetImageAttributesOutputChannelColorProfile*(
+  imageattr: ptr GpImageAttributes,
+  Type: ColorAdjustType,
+  enableFlag: BOOL,
+  colorProfileFilename: ptr WCHAR,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetImageAttributesRemapTable*(
+  imageattr: ptr GpImageAttributes,
+  Type: ColorAdjustType,
+  enableFlag: BOOL,
+  mapSize: UINT,
+  map: ptr GpColorMap,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetImageAttributesWrapMode*(
+  imageAttr: ptr GpImageAttributes, wrap: GpWrapMode, argb: ARGB, clamp: BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetImageAttributesAdjustedPalette*(
+  imageAttr: ptr GpImageAttributes,
+  colorPalette: ptr ColorPalette,
+  colorAdjustType: ColorAdjustType,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetImageAttributesCachedBackground*(
+  imageattr: ptr GpImageAttributes, enableFlag: BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateLineBrush*(
+  point1: ptr GpPointF,
+  point2: ptr GpPointF,
+  color1: ARGB,
+  color2: ARGB,
+  wrapMode: GpWrapMode,
+  lineGradient: ptr ptr GpLineGradient,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateLineBrushI*(
+  point1: ptr GpPoint,
+  point2: ptr GpPoint,
+  color1: ARGB,
+  color2: ARGB,
+  wrapMode: GpWrapMode,
+  lineGradient: ptr ptr GpLineGradient,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateLineBrushFromRect*(
+  rect: ptr GpRectF,
+  color1: ARGB,
+  color2: ARGB,
+  mode: LinearGradientMode,
+  wrapMode: GpWrapMode,
+  lineGradient: ptr ptr GpLineGradient,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateLineBrushFromRectI*(
+  rect: ptr GpRect,
+  color1: ARGB,
+  color2: ARGB,
+  mode: LinearGradientMode,
+  wrapMode: GpWrapMode,
+  lineGradient: ptr ptr GpLineGradient,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateLineBrushFromRectWithAngle*(
+  rect: ptr GpRectF,
+  color1: ARGB,
+  color2: ARGB,
+  angle: REAL,
+  isAngleScalable: BOOL,
+  wrapMode: GpWrapMode,
+  lineGradient: ptr ptr GpLineGradient,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateLineBrushFromRectWithAngleI*(
+  rect: ptr GpRect,
+  color1: ARGB,
+  color2: ARGB,
+  angle: REAL,
+  isAngleScalable: BOOL,
+  wrapMode: GpWrapMode,
+  lineGradient: ptr ptr GpLineGradient,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetLineColors*(
+  brush: ptr GpLineGradient, color1: ARGB, color2: ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetLineColors*(
+  brush: ptr GpLineGradient, colors: ptr ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetLineRect*(
+  brush: ptr GpLineGradient, rect: ptr GpRectF
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetLineRectI*(
+  brush: ptr GpLineGradient, rect: ptr GpRect
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetLineGammaCorrection*(
+  brush: ptr GpLineGradient, useGammaCorrection: BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetLineGammaCorrection*(
+  brush: ptr GpLineGradient, useGammaCorrection: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetLineBlendCount*(
+  brush: ptr GpLineGradient, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetLineBlend*(
+  brush: ptr GpLineGradient, blend: ptr REAL, positions: ptr REAL, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetLineBlend*(
+  brush: ptr GpLineGradient, blend: ptr REAL, positions: ptr REAL, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetLinePresetBlendCount*(
+  brush: ptr GpLineGradient, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetLinePresetBlend*(
+  brush: ptr GpLineGradient, blend: ptr ARGB, positions: ptr REAL, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetLinePresetBlend*(
+  brush: ptr GpLineGradient, blend: ptr ARGB, positions: ptr REAL, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetLineSigmaBlend*(
+  brush: ptr GpLineGradient, focus: REAL, scale: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetLineLinearBlend*(
+  brush: ptr GpLineGradient, focus: REAL, scale: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetLineWrapMode*(
+  brush: ptr GpLineGradient, wrapmode: GpWrapMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetLineWrapMode*(
+  brush: ptr GpLineGradient, wrapmode: ptr GpWrapMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetLineTransform*(
+  brush: ptr GpLineGradient, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetLineTransform*(
+  brush: ptr GpLineGradient, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipResetLineTransform*(
+  brush: ptr GpLineGradient
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipMultiplyLineTransform*(
+  brush: ptr GpLineGradient, matrix: ptr GpMatrix, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTranslateLineTransform*(
+  brush: ptr GpLineGradient, dx: REAL, dy: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipScaleLineTransform*(
+  brush: ptr GpLineGradient, sx: REAL, sy: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipRotateLineTransform*(
+  brush: ptr GpLineGradient, angle: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateMatrix*(
+  matrix: ptr ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateMatrix2*(
+  m11: REAL,
+  m12: REAL,
+  m21: REAL,
+  m22: REAL,
+  dx: REAL,
+  dy: REAL,
+  matrix: ptr ptr GpMatrix,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateMatrix3*(
+  rect: ptr GpRectF, dstplg: ptr GpPointF, matrix: ptr ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateMatrix3I*(
+  rect: ptr GpRect, dstplg: ptr GpPoint, matrix: ptr ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCloneMatrix*(
+  matrix: ptr GpMatrix, cloneMatrix: ptr ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDeleteMatrix*(
+  matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetMatrixElements*(
+  matrix: ptr GpMatrix, m11: REAL, m12: REAL, m21: REAL, m22: REAL, dx: REAL, dy: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipMultiplyMatrix*(
+  matrix: ptr GpMatrix, matrix2: ptr GpMatrix, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTranslateMatrix*(
+  matrix: ptr GpMatrix, offsetX: REAL, offsetY: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipScaleMatrix*(
+  matrix: ptr GpMatrix, scaleX: REAL, scaleY: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipRotateMatrix*(
+  matrix: ptr GpMatrix, angle: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipShearMatrix*(
+  matrix: ptr GpMatrix, shearX: REAL, shearY: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipInvertMatrix*(
+  matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTransformMatrixPoints*(
+  matrix: ptr GpMatrix, pts: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTransformMatrixPointsI*(
+  matrix: ptr GpMatrix, pts: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipVectorTransformMatrixPoints*(
+  matrix: ptr GpMatrix, pts: ptr GpPointF, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipVectorTransformMatrixPointsI*(
+  matrix: ptr GpMatrix, pts: ptr GpPoint, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetMatrixElements*(
+  matrix: ptr GpMatrix, matrixOut: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsMatrixInvertible*(
+  matrix: ptr GpMatrix, result: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsMatrixIdentity*(
+  matrix: ptr GpMatrix, result: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsMatrixEqual*(
+  matrix: ptr GpMatrix, matrix2: ptr GpMatrix, result: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetMetafileHeaderFromEmf*(
+  hEmf: HENHMETAFILE, header: ptr MetafileHeader
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetMetafileHeaderFromFile*(
+  filename: ptr WCHAR, header: ptr MetafileHeader
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetMetafileHeaderFromStream*(
+  stream: ptr IStream, header: ptr MetafileHeader
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetMetafileHeaderFromMetafile*(
+  metafile: ptr GpMetafile, header: ptr MetafileHeader
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetHemfFromMetafile*(
+  metafile: ptr GpMetafile, hEmf: ptr HENHMETAFILE
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateStreamOnFile*(
+  filename: ptr WCHAR, access: UINT, stream: ptr ptr IStream
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateMetafileFromWmf*(
+  hWmf: HMETAFILE,
+  deleteWmf: BOOL,
+  wmfPlaceableFileHeader: ptr WmfPlaceableFileHeader,
+  metafile: ptr ptr GpMetafile,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateMetafileFromEmf*(
+  hEmf: HENHMETAFILE, deleteEmf: BOOL, metafile: ptr ptr GpMetafile
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateMetafileFromFile*(
+  file: ptr WCHAR, metafile: ptr ptr GpMetafile
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateMetafileFromWmfFile*(
+  file: ptr WCHAR,
+  wmfPlaceableFileHeader: ptr WmfPlaceableFileHeader,
+  metafile: ptr ptr GpMetafile,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateMetafileFromStream*(
+  stream: ptr IStream, metafile: ptr ptr GpMetafile
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipRecordMetafile*(
+  referenceHdc: HDC,
+  Type: EmfType,
+  frameRect: ptr GpRectF,
+  frameUnit: MetafileFrameUnit,
+  description: ptr WCHAR,
+  metafile: ptr ptr GpMetafile,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipRecordMetafileI*(
+  referenceHdc: HDC,
+  Type: EmfType,
+  frameRect: ptr GpRect,
+  frameUnit: MetafileFrameUnit,
+  description: ptr WCHAR,
+  metafile: ptr ptr GpMetafile,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipRecordMetafileFileName*(
+  fileName: ptr WCHAR,
+  referenceHdc: HDC,
+  Type: EmfType,
+  frameRect: ptr GpRectF,
+  frameUnit: MetafileFrameUnit,
+  description: ptr WCHAR,
+  metafile: ptr ptr GpMetafile,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipRecordMetafileFileNameI*(
+  fileName: ptr WCHAR,
+  referenceHdc: HDC,
+  Type: EmfType,
+  frameRect: ptr GpRect,
+  frameUnit: MetafileFrameUnit,
+  description: ptr WCHAR,
+  metafile: ptr ptr GpMetafile,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipRecordMetafileStream*(
+  stream: ptr IStream,
+  referenceHdc: HDC,
+  Type: EmfType,
+  frameRect: ptr GpRectF,
+  frameUnit: MetafileFrameUnit,
+  description: ptr WCHAR,
+  metafile: ptr ptr GpMetafile,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipRecordMetafileStreamI*(
+  stream: ptr IStream,
+  referenceHdc: HDC,
+  Type: EmfType,
+  frameRect: ptr GpRect,
+  frameUnit: MetafileFrameUnit,
+  description: ptr WCHAR,
+  metafile: ptr ptr GpMetafile,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPlayMetafileRecord*(
+  metafile: ptr GpMetafile,
+  recordType: EmfPlusRecordType,
+  flags: UINT,
+  dataSize: UINT,
+  data: ptr BYTE,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetMetafileDownLevelRasterizationLimit*(
+  metafile: ptr GpMetafile, metafileRasterizationLimitDpi: UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetMetafileDownLevelRasterizationLimit*(
+  metafile: ptr GpMetafile, metafileRasterizationLimitDpi: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipConvertToEmfPlus*(
+  refGraphics: ptr GpGraphics,
+  metafile: ptr GpMetafile,
+  conversionSuccess: ptr BOOL,
+  emfType: EmfType,
+  description: ptr WCHAR,
+  out_metafile: ptr ptr GpMetafile,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipConvertToEmfPlusToFile*(
+  refGraphics: ptr GpGraphics,
+  metafile: ptr GpMetafile,
+  conversionSuccess: ptr BOOL,
+  filename: ptr WCHAR,
+  emfType: EmfType,
+  description: ptr WCHAR,
+  out_metafile: ptr ptr GpMetafile,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipConvertToEmfPlusToStream*(
+  refGraphics: ptr GpGraphics,
+  metafile: ptr GpMetafile,
+  conversionSuccess: ptr BOOL,
+  stream: ptr IStream,
+  emfType: EmfType,
+  description: ptr WCHAR,
+  out_metafile: ptr ptr GpMetafile,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipEmfToWmfBits*(
+  hemf: HENHMETAFILE, cbData16: UINT, pData16: LPBYTE, iMapMode: INT, eFlags: INT
+): UINT {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreatePathGradient*(
+  points: ptr GpPointF,
+  count: INT,
+  wrapMode: GpWrapMode,
+  polyGradient: ptr ptr GpPathGradient,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreatePathGradientI*(
+  points: ptr GpPoint,
+  count: INT,
+  wrapMode: GpWrapMode,
+  polyGradient: ptr ptr GpPathGradient,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreatePathGradientFromPath*(
+  path: ptr GpPath, polyGradient: ptr ptr GpPathGradient
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientCenterColor*(
+  brush: ptr GpPathGradient, colors: ptr ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathGradientCenterColor*(
+  brush: ptr GpPathGradient, colors: ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientSurroundColorsWithCount*(
+  brush: ptr GpPathGradient, color: ptr ARGB, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathGradientSurroundColorsWithCount*(
+  brush: ptr GpPathGradient, color: ptr ARGB, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientPath*(
+  brush: ptr GpPathGradient, path: ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathGradientPath*(
+  brush: ptr GpPathGradient, path: ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientCenterPoint*(
+  brush: ptr GpPathGradient, points: ptr GpPointF
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientCenterPointI*(
+  brush: ptr GpPathGradient, points: ptr GpPoint
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathGradientCenterPoint*(
+  brush: ptr GpPathGradient, points: ptr GpPointF
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathGradientCenterPointI*(
+  brush: ptr GpPathGradient, points: ptr GpPoint
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientRect*(
+  brush: ptr GpPathGradient, rect: ptr GpRectF
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientRectI*(
+  brush: ptr GpPathGradient, rect: ptr GpRect
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientPointCount*(
+  brush: ptr GpPathGradient, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientSurroundColorCount*(
+  brush: ptr GpPathGradient, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathGradientGammaCorrection*(
+  brush: ptr GpPathGradient, useGammaCorrection: BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientGammaCorrection*(
+  brush: ptr GpPathGradient, useGammaCorrection: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientBlendCount*(
+  brush: ptr GpPathGradient, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientBlend*(
+  brush: ptr GpPathGradient, blend: ptr REAL, positions: ptr REAL, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathGradientBlend*(
+  brush: ptr GpPathGradient, blend: ptr REAL, positions: ptr REAL, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientPresetBlendCount*(
+  brush: ptr GpPathGradient, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientPresetBlend*(
+  brush: ptr GpPathGradient, blend: ptr ARGB, positions: ptr REAL, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathGradientPresetBlend*(
+  brush: ptr GpPathGradient, blend: ptr ARGB, positions: ptr REAL, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathGradientSigmaBlend*(
+  brush: ptr GpPathGradient, focus: REAL, scale: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathGradientLinearBlend*(
+  brush: ptr GpPathGradient, focus: REAL, scale: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientWrapMode*(
+  brush: ptr GpPathGradient, wrapmode: ptr GpWrapMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathGradientWrapMode*(
+  brush: ptr GpPathGradient, wrapmode: GpWrapMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientTransform*(
+  brush: ptr GpPathGradient, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathGradientTransform*(
+  brush: ptr GpPathGradient, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipResetPathGradientTransform*(
+  brush: ptr GpPathGradient
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipMultiplyPathGradientTransform*(
+  brush: ptr GpPathGradient, matrix: ptr GpMatrix, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTranslatePathGradientTransform*(
+  brush: ptr GpPathGradient, dx: REAL, dy: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipScalePathGradientTransform*(
+  brush: ptr GpPathGradient, sx: REAL, sy: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipRotatePathGradientTransform*(
+  brush: ptr GpPathGradient, angle: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPathGradientFocusScales*(
+  brush: ptr GpPathGradient, xScale: ptr REAL, yScale: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPathGradientFocusScales*(
+  brush: ptr GpPathGradient, xScale: REAL, yScale: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreatePathIter*(
+  Iterator: ptr ptr GpPathIterator, path: ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDeletePathIter*(
+  Iterator: ptr GpPathIterator
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPathIterNextSubpath*(
+  Iterator: ptr GpPathIterator,
+  resultCount: ptr INT,
+  startIndex: ptr INT,
+  endIndex: ptr INT,
+  isClosed: ptr BOOL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPathIterNextSubpathPath*(
+  Iterator: ptr GpPathIterator,
+  resultCount: ptr INT,
+  path: ptr GpPath,
+  isClosed: ptr BOOL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPathIterNextPathType*(
+  Iterator: ptr GpPathIterator,
+  resultCount: ptr INT,
+  pathType: ptr BYTE,
+  startIndex: ptr INT,
+  endIndex: ptr INT,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPathIterNextMarker*(
+  Iterator: ptr GpPathIterator,
+  resultCount: ptr INT,
+  startIndex: ptr INT,
+  endIndex: ptr INT,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPathIterNextMarkerPath*(
+  Iterator: ptr GpPathIterator, resultCount: ptr INT, path: ptr GpPath
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPathIterGetCount*(
+  Iterator: ptr GpPathIterator, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPathIterGetSubpathCount*(
+  Iterator: ptr GpPathIterator, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPathIterIsValid*(
+  Iterator: ptr GpPathIterator, valid: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPathIterHasCurve*(
+  Iterator: ptr GpPathIterator, hasCurve: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPathIterRewind*(
+  Iterator: ptr GpPathIterator
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPathIterEnumerate*(
+  Iterator: ptr GpPathIterator,
+  resultCount: ptr INT,
+  points: ptr GpPointF,
+  types: ptr BYTE,
+  count: INT,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipPathIterCopyData*(
+  Iterator: ptr GpPathIterator,
+  resultCount: ptr INT,
+  points: ptr GpPointF,
+  types: ptr BYTE,
+  startIndex: INT,
+  endIndex: INT,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreatePen1*(
+  color: ARGB, width: REAL, unit: GpUnit, pen: ptr ptr GpPen
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreatePen2*(
+  brush: ptr GpBrush, width: REAL, unit: GpUnit, pen: ptr ptr GpPen
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipClonePen*(
+  pen: ptr GpPen, clonepen: ptr ptr GpPen
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDeletePen*(
+  pen: ptr GpPen
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenWidth*(
+  pen: ptr GpPen, width: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenWidth*(
+  pen: ptr GpPen, width: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenUnit*(
+  pen: ptr GpPen, unit: GpUnit
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenUnit*(
+  pen: ptr GpPen, unit: ptr GpUnit
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenLineCap197819*(
+  pen: ptr GpPen, startCap: GpLineCap, endCap: GpLineCap, dashCap: GpDashCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenStartCap*(
+  pen: ptr GpPen, startCap: GpLineCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenEndCap*(
+  pen: ptr GpPen, endCap: GpLineCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenDashCap197819*(
+  pen: ptr GpPen, dashCap: GpDashCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenStartCap*(
+  pen: ptr GpPen, startCap: ptr GpLineCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenEndCap*(
+  pen: ptr GpPen, endCap: ptr GpLineCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenDashCap197819*(
+  pen: ptr GpPen, dashCap: ptr GpDashCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenLineJoin*(
+  pen: ptr GpPen, lineJoin: GpLineJoin
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenLineJoin*(
+  pen: ptr GpPen, lineJoin: ptr GpLineJoin
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenCustomStartCap*(
+  pen: ptr GpPen, customCap: ptr GpCustomLineCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenCustomStartCap*(
+  pen: ptr GpPen, customCap: ptr ptr GpCustomLineCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenCustomEndCap*(
+  pen: ptr GpPen, customCap: ptr GpCustomLineCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenCustomEndCap*(
+  pen: ptr GpPen, customCap: ptr ptr GpCustomLineCap
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenMiterLimit*(
+  pen: ptr GpPen, miterLimit: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenMiterLimit*(
+  pen: ptr GpPen, miterLimit: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenMode*(
+  pen: ptr GpPen, penMode: GpPenAlignment
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenMode*(
+  pen: ptr GpPen, penMode: ptr GpPenAlignment
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenTransform*(
+  pen: ptr GpPen, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenTransform*(
+  pen: ptr GpPen, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipResetPenTransform*(
+  pen: ptr GpPen
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipMultiplyPenTransform*(
+  pen: ptr GpPen, matrix: ptr GpMatrix, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTranslatePenTransform*(
+  pen: ptr GpPen, dx: REAL, dy: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipScalePenTransform*(
+  pen: ptr GpPen, sx: REAL, sy: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipRotatePenTransform*(
+  pen: ptr GpPen, angle: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenColor*(
+  pen: ptr GpPen, argb: ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenColor*(
+  pen: ptr GpPen, argb: ptr ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenBrushFill*(
+  pen: ptr GpPen, brush: ptr GpBrush
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenBrushFill*(
+  pen: ptr GpPen, brush: ptr ptr GpBrush
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenFillType*(
+  pen: ptr GpPen, Type: ptr GpPenType
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenDashStyle*(
+  pen: ptr GpPen, dashstyle: ptr GpDashStyle
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenDashStyle*(
+  pen: ptr GpPen, dashstyle: GpDashStyle
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenDashOffset*(
+  pen: ptr GpPen, offset: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenDashOffset*(
+  pen: ptr GpPen, offset: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenDashCount*(
+  pen: ptr GpPen, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenDashArray*(
+  pen: ptr GpPen, dash: ptr REAL, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenDashArray*(
+  pen: ptr GpPen, dash: ptr REAL, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenCompoundCount*(
+  pen: ptr GpPen, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetPenCompoundArray*(
+  pen: ptr GpPen, dash: ptr REAL, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetPenCompoundArray*(
+  pen: ptr GpPen, dash: ptr REAL, count: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateRegion*(
+  region: ptr ptr GpRegion
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateRegionRect*(
+  rect: ptr GpRectF, region: ptr ptr GpRegion
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateRegionRectI*(
+  rect: ptr GpRect, region: ptr ptr GpRegion
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateRegionPath*(
+  path: ptr GpPath, region: ptr ptr GpRegion
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateRegionRgnData*(
+  regionData: ptr BYTE, size: INT, region: ptr ptr GpRegion
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateRegionHrgn*(
+  hRgn: HRGN, region: ptr ptr GpRegion
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCloneRegion*(
+  region: ptr GpRegion, cloneRegion: ptr ptr GpRegion
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDeleteRegion*(
+  region: ptr GpRegion
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetInfinite*(
+  region: ptr GpRegion
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetEmpty*(
+  region: ptr GpRegion
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCombineRegionRect*(
+  region: ptr GpRegion, rect: ptr GpRectF, combineMode: CombineMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCombineRegionRectI*(
+  region: ptr GpRegion, rect: ptr GpRect, combineMode: CombineMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCombineRegionPath*(
+  region: ptr GpRegion, path: ptr GpPath, combineMode: CombineMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCombineRegionRegion*(
+  region: ptr GpRegion, region2: ptr GpRegion, combineMode: CombineMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTranslateRegion*(
+  region: ptr GpRegion, dx: REAL, dy: REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTranslateRegionI*(
+  region: ptr GpRegion, dx: INT, dy: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTransformRegion*(
+  region: ptr GpRegion, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetRegionBounds*(
+  region: ptr GpRegion, graphics: ptr GpGraphics, rect: ptr GpRectF
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetRegionBoundsI*(
+  region: ptr GpRegion, graphics: ptr GpGraphics, rect: ptr GpRect
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetRegionHRgn*(
+  region: ptr GpRegion, graphics: ptr GpGraphics, hRgn: ptr HRGN
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsEmptyRegion*(
+  region: ptr GpRegion, graphics: ptr GpGraphics, result: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsInfiniteRegion*(
+  region: ptr GpRegion, graphics: ptr GpGraphics, result: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsEqualRegion*(
+  region: ptr GpRegion,
+  region2: ptr GpRegion,
+  graphics: ptr GpGraphics,
+  result: ptr BOOL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetRegionDataSize*(
+  region: ptr GpRegion, bufferSize: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetRegionData*(
+  region: ptr GpRegion, buffer: ptr BYTE, bufferSize: UINT, sizeFilled: ptr UINT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsVisibleRegionPoint*(
+  region: ptr GpRegion, x: REAL, y: REAL, graphics: ptr GpGraphics, result: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsVisibleRegionPointI*(
+  region: ptr GpRegion, x: INT, y: INT, graphics: ptr GpGraphics, result: ptr BOOL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsVisibleRegionRect*(
+  region: ptr GpRegion,
+  x: REAL,
+  y: REAL,
+  width: REAL,
+  height: REAL,
+  graphics: ptr GpGraphics,
+  result: ptr BOOL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipIsVisibleRegionRectI*(
+  region: ptr GpRegion,
+  x: INT,
+  y: INT,
+  width: INT,
+  height: INT,
+  graphics: ptr GpGraphics,
+  result: ptr BOOL,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetRegionScansCount*(
+  region: ptr GpRegion, count: ptr UINT, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetRegionScans*(
+  region: ptr GpRegion, rects: ptr GpRectF, count: ptr INT, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetRegionScansI*(
+  region: ptr GpRegion, rects: ptr GpRect, count: ptr INT, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateSolidFill*(
+  color: ARGB, brush: ptr ptr GpSolidFill
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetSolidFillColor*(
+  brush: ptr GpSolidFill, color: ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetSolidFillColor*(
+  brush: ptr GpSolidFill, color: ptr ARGB
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateStringFormat*(
+  formatAttributes: INT, language: LANGID, format: ptr ptr GpStringFormat
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipStringFormatGetGenericDefault*(
+  format: ptr ptr GpStringFormat
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipStringFormatGetGenericTypographic*(
+  format: ptr ptr GpStringFormat
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDeleteStringFormat*(
+  format: ptr GpStringFormat
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCloneStringFormat*(
+  format: ptr GpStringFormat, newFormat: ptr ptr GpStringFormat
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetStringFormatFlags*(
+  format: ptr GpStringFormat, flags: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetStringFormatFlags*(
+  format: ptr GpStringFormat, flags: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetStringFormatAlign*(
+  format: ptr GpStringFormat, align: StringAlignment
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetStringFormatAlign*(
+  format: ptr GpStringFormat, align: ptr StringAlignment
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetStringFormatLineAlign*(
+  format: ptr GpStringFormat, align: StringAlignment
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetStringFormatLineAlign*(
+  format: ptr GpStringFormat, align: ptr StringAlignment
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetStringFormatTrimming*(
+  format: ptr GpStringFormat, trimming: StringTrimming
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetStringFormatTrimming*(
+  format: ptr GpStringFormat, trimming: ptr StringTrimming
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetStringFormatHotkeyPrefix*(
+  format: ptr GpStringFormat, hotkeyPrefix: INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetStringFormatHotkeyPrefix*(
+  format: ptr GpStringFormat, hotkeyPrefix: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetStringFormatTabStops*(
+  format: ptr GpStringFormat, firstTabOffset: REAL, count: INT, tabStops: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetStringFormatTabStops*(
+  format: ptr GpStringFormat, count: INT, firstTabOffset: ptr REAL, tabStops: ptr REAL
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetStringFormatTabStopCount*(
+  format: ptr GpStringFormat, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetStringFormatDigitSubstitution*(
+  format: ptr GpStringFormat, language: LANGID, substitute: StringDigitSubstitute
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetStringFormatDigitSubstitution*(
+  format: ptr GpStringFormat,
+  language: ptr LANGID,
+  substitute: ptr StringDigitSubstitute,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetStringFormatMeasurableCharacterRangeCount*(
+  format: ptr GpStringFormat, count: ptr INT
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetStringFormatMeasurableCharacterRanges*(
+  format: ptr GpStringFormat, rangeCount: INT, ranges: ptr CharacterRange
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawString*(
+  graphics: ptr GpGraphics,
+  string: ptr WCHAR,
+  length: INT,
+  font: ptr GpFont,
+  layoutRect: ptr GpRectF,
+  stringFormat: ptr GpStringFormat,
+  brush: ptr GpBrush,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipMeasureString*(
+  graphics: ptr GpGraphics,
+  string: ptr WCHAR,
+  length: INT,
+  font: ptr GpFont,
+  layoutRect: ptr GpRectF,
+  stringFormat: ptr GpStringFormat,
+  boundingBox: ptr GpRectF,
+  codepointsFitted: ptr INT,
+  linesFilled: ptr INT,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipDrawDriverString*(
+  graphics: ptr GpGraphics,
+  text: ptr UINT16,
+  length: INT,
+  font: ptr GpFont,
+  brush: ptr GpBrush,
+  positions: ptr GpPointF,
+  flags: INT,
+  matrix: ptr GpMatrix,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipMeasureDriverString*(
+  graphics: ptr GpGraphics,
+  text: ptr UINT16,
+  length: INT,
+  font: ptr GpFont,
+  positions: ptr GpPointF,
+  flags: INT,
+  matrix: ptr GpMatrix,
+  boundingBox: ptr GpRectF,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateTexture*(
+  image: ptr GpImage, wrapmode: GpWrapMode, texture: ptr ptr GpTexture
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateTexture2*(
+  image: ptr GpImage,
+  wrapmode: GpWrapMode,
+  x: REAL,
+  y: REAL,
+  width: REAL,
+  height: REAL,
+  texture: ptr ptr GpTexture,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateTexture2I*(
+  image: ptr GpImage,
+  wrapmode: GpWrapMode,
+  x: INT,
+  y: INT,
+  width: INT,
+  height: INT,
+  texture: ptr ptr GpTexture,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateTextureIA*(
+  image: ptr GpImage,
+  imageAttributes: ptr GpImageAttributes,
+  x: REAL,
+  y: REAL,
+  width: REAL,
+  height: REAL,
+  texture: ptr ptr GpTexture,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipCreateTextureIAI*(
+  image: ptr GpImage,
+  imageAttributes: ptr GpImageAttributes,
+  x: INT,
+  y: INT,
+  width: INT,
+  height: INT,
+  texture: ptr ptr GpTexture,
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetTextureTransform*(
+  brush: ptr GpTexture, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetTextureTransform*(
+  brush: ptr GpTexture, matrix: ptr GpMatrix
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipResetTextureTransform*(
+  brush: ptr GpTexture
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipMultiplyTextureTransform*(
+  brush: ptr GpTexture, matrix: ptr GpMatrix, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTranslateTextureTransform*(
+  brush: ptr GpTexture, dx: REAL, dy: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipScaleTextureTransform*(
+  brush: ptr GpTexture, sx: REAL, sy: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipRotateTextureTransform*(
+  brush: ptr GpTexture, angle: REAL, order: GpMatrixOrder
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipSetTextureWrapMode*(
+  brush: ptr GpTexture, wrapmode: GpWrapMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetTextureWrapMode*(
+  brush: ptr GpTexture, wrapmode: ptr GpWrapMode
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipGetTextureImage*(
+  brush: ptr GpTexture, image: ptr ptr GpImage
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc GdipTestControl*(
+  control: GpTestControlEnum, param: pointer
+): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
+
+proc `WmfHeader=`*(self: var MetafileHeader, x: METAHEADER) {.inline.} =
+  self.union1.WmfHeader = x
+
+proc WmfHeader*(self: MetafileHeader): METAHEADER {.inline.} =
+  self.union1.WmfHeader
+
+proc WmfHeader*(self: var MetafileHeader): var METAHEADER {.inline.} =
+  self.union1.WmfHeader
+
+proc `EmfHeader=`*(self: var MetafileHeader, x: ENHMETAHEADER3) {.inline.} =
+  self.union1.EmfHeader = x
+
+proc EmfHeader*(self: MetafileHeader): ENHMETAHEADER3 {.inline.} =
+  self.union1.EmfHeader
+
+proc EmfHeader*(self: var MetafileHeader): var ENHMETAHEADER3 {.inline.} =
+  self.union1.EmfHeader
--- a/semicongine/thirdparty/winim/winim/inc/http.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/http.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -69,40 +69,49 @@
   HTTP_BYTE_RANGE* {.pure.} = object
     StartingOffset*: ULARGE_INTEGER
     Length*: ULARGE_INTEGER
+
   PHTTP_BYTE_RANGE* = ptr HTTP_BYTE_RANGE
   HTTP_VERSION* {.pure.} = object
     MajorVersion*: USHORT
     MinorVersion*: USHORT
+
   PHTTP_VERSION* = ptr HTTP_VERSION
   HTTP_KNOWN_HEADER* {.pure.} = object
     RawValueLength*: USHORT
     pRawValue*: PCSTR
+
   PHTTP_KNOWN_HEADER* = ptr HTTP_KNOWN_HEADER
   HTTP_UNKNOWN_HEADER* {.pure.} = object
     NameLength*: USHORT
     RawValueLength*: USHORT
     pName*: PCSTR
     pRawValue*: PCSTR
+
   PHTTP_UNKNOWN_HEADER* = ptr HTTP_UNKNOWN_HEADER
   HTTP_DATA_CHUNK_UNION1_FromMemory* {.pure.} = object
     pBuffer*: PVOID
     BufferLength*: ULONG
+
   HTTP_DATA_CHUNK_UNION1_FromFileHandle* {.pure.} = object
     ByteRange*: HTTP_BYTE_RANGE
     FileHandle*: HANDLE
+
   HTTP_DATA_CHUNK_UNION1_FromFragmentCache* {.pure.} = object
     FragmentNameLength*: USHORT
     pFragmentName*: PCWSTR
+
   HTTP_DATA_CHUNK_UNION1* {.pure, union.} = object
     FromMemory*: HTTP_DATA_CHUNK_UNION1_FromMemory
     FromFileHandle*: HTTP_DATA_CHUNK_UNION1_FromFileHandle
     FromFragmentCache*: HTTP_DATA_CHUNK_UNION1_FromFragmentCache
+
   HTTP_DATA_CHUNK* {.pure.} = object
     DataChunkType*: HTTP_DATA_CHUNK_TYPE
     union1*: HTTP_DATA_CHUNK_UNION1
+
   PHTTP_DATA_CHUNK* = ptr HTTP_DATA_CHUNK
-const
-  httpHeaderRequestMaximum* = 41
+
+const httpHeaderRequestMaximum* = 41
 type
   HTTP_REQUEST_HEADERS* {.pure.} = object
     UnknownHeaderCount*: USHORT
@@ -110,9 +119,10 @@
     TrailerCount*: USHORT
     pTrailers*: PHTTP_UNKNOWN_HEADER
     KnownHeaders*: array[httpHeaderRequestMaximum, HTTP_KNOWN_HEADER]
+
   PHTTP_REQUEST_HEADERS* = ptr HTTP_REQUEST_HEADERS
-const
-  httpHeaderResponseMaximum* = 30
+
+const httpHeaderResponseMaximum* = 30
 type
   HTTP_RESPONSE_HEADERS* {.pure.} = object
     UnknownHeaderCount*: USHORT
@@ -120,10 +130,12 @@
     TrailerCount*: USHORT
     pTrailers*: PHTTP_UNKNOWN_HEADER
     KnownHeaders*: array[httpHeaderResponseMaximum, HTTP_KNOWN_HEADER]
+
   PHTTP_RESPONSE_HEADERS* = ptr HTTP_RESPONSE_HEADERS
   HTTP_TRANSPORT_ADDRESS* {.pure.} = object
     pRemoteAddress*: PSOCKADDR
     pLocalAddress*: PSOCKADDR
+
   PHTTP_TRANSPORT_ADDRESS* = ptr HTTP_TRANSPORT_ADDRESS
   HTTP_COOKED_URL* {.pure.} = object
     FullUrlLength*: USHORT
@@ -134,6 +146,7 @@
     pHost*: PCWSTR
     pAbsPath*: PCWSTR
     pQueryString*: PCWSTR
+
   PHTTP_COOKED_URL* = ptr HTTP_COOKED_URL
   HTTP_SSL_CLIENT_CERT_INFO* {.pure.} = object
     CertFlags*: ULONG
@@ -141,6 +154,7 @@
     pCertEncoded*: PUCHAR
     Token*: HANDLE
     CertDeniedByMapper*: BOOLEAN
+
   PHTTP_SSL_CLIENT_CERT_INFO* = ptr HTTP_SSL_CLIENT_CERT_INFO
   HTTP_SSL_INFO* {.pure.} = object
     ServerCertKeySize*: USHORT
@@ -151,6 +165,7 @@
     pServerCertSubject*: PCSTR
     pClientCertInfo*: PHTTP_SSL_CLIENT_CERT_INFO
     SslClientCertNegotiated*: ULONG
+
   PHTTP_SSL_INFO* = ptr HTTP_SSL_INFO
   HTTP_REQUEST_V1* {.pure.} = object
     Flags*: ULONG
@@ -171,11 +186,13 @@
     pEntityChunks*: PHTTP_DATA_CHUNK
     RawConnectionId*: HTTP_RAW_CONNECTION_ID
     pSslInfo*: PHTTP_SSL_INFO
+
   PHTTP_REQUEST_V1* = ptr HTTP_REQUEST_V1
   HTTP_REQUEST_INFO* {.pure.} = object
     InfoType*: HTTP_REQUEST_INFO_TYPE
     InfoLength*: ULONG
     pInfo*: PVOID
+
   PHTTP_REQUEST_INFO* = ptr HTTP_REQUEST_INFO
   HTTP_REQUEST_V2_STRUCT1* {.pure.} = object
     Flags*: ULONG
@@ -196,10 +213,12 @@
     pEntityChunks*: PHTTP_DATA_CHUNK
     RawConnectionId*: HTTP_RAW_CONNECTION_ID
     pSslInfo*: PHTTP_SSL_INFO
+
   HTTP_REQUEST_V2* {.pure.} = object
     struct1*: HTTP_REQUEST_V2_STRUCT1
     RequestInfoCount*: USHORT
     pRequestInfo*: PHTTP_REQUEST_INFO
+
   PHTTP_REQUEST_V2* = ptr HTTP_REQUEST_V2
   HTTP_REQUEST* = HTTP_REQUEST_V2
   PHTTP_REQUEST* = ptr HTTP_REQUEST_V2
@@ -212,11 +231,13 @@
     Headers*: HTTP_RESPONSE_HEADERS
     EntityChunkCount*: USHORT
     pEntityChunks*: PHTTP_DATA_CHUNK
+
   PHTTP_RESPONSE_V1* = ptr HTTP_RESPONSE_V1
   HTTP_RESPONSE_INFO* {.pure.} = object
     Type*: HTTP_RESPONSE_INFO_TYPE
     Length*: ULONG
     pInfo*: PVOID
+
   PHTTP_RESPONSE_INFO* = ptr HTTP_RESPONSE_INFO
   HTTP_RESPONSE_V2_STRUCT1* {.pure.} = object
     Flags*: ULONG
@@ -227,19 +248,23 @@
     Headers*: HTTP_RESPONSE_HEADERS
     EntityChunkCount*: USHORT
     pEntityChunks*: PHTTP_DATA_CHUNK
+
   HTTP_RESPONSE_V2* {.pure.} = object
     struct1*: HTTP_RESPONSE_V2_STRUCT1
     ResponseInfoCount*: USHORT
     pResponseInfo*: PHTTP_RESPONSE_INFO
+
   PHTTP_RESPONSE_V2* = ptr HTTP_RESPONSE_V2
   HTTP_RESPONSE* = HTTP_RESPONSE_V2
   PHTTP_RESPONSE* = ptr HTTP_RESPONSE_V2
   HTTP_CACHE_POLICY* {.pure.} = object
     Policy*: HTTP_CACHE_POLICY_TYPE
     SecondsToLive*: ULONG
+
   PHTTP_CACHE_POLICY* = ptr HTTP_CACHE_POLICY
   HTTP_SERVICE_CONFIG_SSL_KEY* {.pure.} = object
     pIpPort*: PSOCKADDR
+
   PHTTP_SERVICE_CONFIG_SSL_KEY* = ptr HTTP_SERVICE_CONFIG_SSL_KEY
   HTTP_SERVICE_CONFIG_SSL_PARAM* {.pure.} = object
     SslHashLength*: ULONG
@@ -252,71 +277,90 @@
     pDefaultSslCtlIdentifier*: PWSTR
     pDefaultSslCtlStoreName*: PWSTR
     DefaultFlags*: DWORD
+
   PHTTP_SERVICE_CONFIG_SSL_PARAM* = ptr HTTP_SERVICE_CONFIG_SSL_PARAM
   HTTP_SERVICE_CONFIG_SSL_SET* {.pure.} = object
     KeyDesc*: HTTP_SERVICE_CONFIG_SSL_KEY
     ParamDesc*: HTTP_SERVICE_CONFIG_SSL_PARAM
+
   PHTTP_SERVICE_CONFIG_SSL_SET* = ptr HTTP_SERVICE_CONFIG_SSL_SET
   HTTP_SERVICE_CONFIG_SSL_QUERY* {.pure.} = object
     QueryDesc*: HTTP_SERVICE_CONFIG_QUERY_TYPE
     KeyDesc*: HTTP_SERVICE_CONFIG_SSL_KEY
     dwToken*: DWORD
+
   PHTTP_SERVICE_CONFIG_SSL_QUERY* = ptr HTTP_SERVICE_CONFIG_SSL_QUERY
   HTTP_SERVICE_CONFIG_IP_LISTEN_PARAM* {.pure.} = object
     AddrLength*: USHORT
     pAddress*: PSOCKADDR
+
   PHTTP_SERVICE_CONFIG_IP_LISTEN_PARAM* = ptr HTTP_SERVICE_CONFIG_IP_LISTEN_PARAM
   HTTP_SERVICE_CONFIG_IP_LISTEN_QUERY* {.pure.} = object
     AddrCount*: ULONG
     AddrList*: array[ANYSIZE_ARRAY, SOCKADDR_STORAGE]
+
   PHTTP_SERVICE_CONFIG_IP_LISTEN_QUERY* = ptr HTTP_SERVICE_CONFIG_IP_LISTEN_QUERY
   HTTP_SERVICE_CONFIG_URLACL_KEY* {.pure.} = object
     pUrlPrefix*: PWSTR
+
   PHTTP_SERVICE_CONFIG_URLACL_KEY* = ptr HTTP_SERVICE_CONFIG_URLACL_KEY
   HTTP_SERVICE_CONFIG_URLACL_PARAM* {.pure.} = object
     pStringSecurityDescriptor*: PWSTR
+
   PHTTP_SERVICE_CONFIG_URLACL_PARAM* = ptr HTTP_SERVICE_CONFIG_URLACL_PARAM
   HTTP_SERVICE_CONFIG_URLACL_SET* {.pure.} = object
     KeyDesc*: HTTP_SERVICE_CONFIG_URLACL_KEY
     ParamDesc*: HTTP_SERVICE_CONFIG_URLACL_PARAM
+
   PHTTP_SERVICE_CONFIG_URLACL_SET* = ptr HTTP_SERVICE_CONFIG_URLACL_SET
   HTTP_SERVICE_CONFIG_URLACL_QUERY* {.pure.} = object
     QueryDesc*: HTTP_SERVICE_CONFIG_QUERY_TYPE
     KeyDesc*: HTTP_SERVICE_CONFIG_URLACL_KEY
     dwToken*: DWORD
+
   PHTTP_SERVICE_CONFIG_URLACL_QUERY* = ptr HTTP_SERVICE_CONFIG_URLACL_QUERY
   HTTPAPI_VERSION* {.pure.} = object
     HttpApiMajorVersion*: USHORT
     HttpApiMinorVersion*: USHORT
+
   PHTTPAPI_VERSION* = ptr HTTPAPI_VERSION
   HTTP_LOG_DATA* {.pure.} = object
     Type*: HTTP_LOG_DATA_TYPE
+
   PHTTP_LOG_DATA* = ptr HTTP_LOG_DATA
   HTTP_PROPERTY_FLAGS* {.pure.} = object
-    Present* {.bitsize:1.}: ULONG
+    Present* {.bitsize: 1.}: ULONG
+
   PHTTP_PROPERTY_FLAGS* = ptr HTTP_PROPERTY_FLAGS
   HTTP_CONNECTION_LIMIT_INFO* {.pure.} = object
     Flags*: HTTP_PROPERTY_FLAGS
     MaxConnections*: ULONG
+
   PHTTP_CONNECTION_LIMIT_INFO* = ptr HTTP_CONNECTION_LIMIT_INFO
   HTTP_STATE_INFO* {.pure.} = object
     Flags*: HTTP_PROPERTY_FLAGS
     State*: HTTP_ENABLED_STATE
+
   PHTTP_STATE_INFO* = ptr HTTP_STATE_INFO
   HTTP_QOS_SETTING_INFO* {.pure.} = object
     QosType*: HTTP_QOS_SETTING_TYPE
     QosSetting*: PVOID
+
   PHTTP_QOS_SETTING_INFO* = ptr HTTP_QOS_SETTING_INFO
   HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS* {.pure.} = object
     DomainNameLength*: USHORT
     DomainName*: PWSTR
     RealmLength*: USHORT
     Realm*: PWSTR
-  PHTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS* = ptr HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS
+
+  PHTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS* =
+    ptr HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS
   HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS* {.pure.} = object
     RealmLength*: USHORT
     Realm*: PWSTR
-  PHTTP_SERVER_AUTHENTICATION_BASIC_PARAMS* = ptr HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS
+
+  PHTTP_SERVER_AUTHENTICATION_BASIC_PARAMS* =
+    ptr HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS
   HTTP_SERVER_AUTHENTICATION_INFO* {.pure.} = object
     Flags*: HTTP_PROPERTY_FLAGS
     AuthSchemes*: ULONG
@@ -326,6 +370,7 @@
     ExFlags*: UCHAR
     DigestParams*: HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS
     BasicParams*: HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS
+
   PHTTP_SERVER_AUTHENTICATION_INFO* = ptr HTTP_SERVER_AUTHENTICATION_INFO
   HTTP_LOGGING_INFO* {.pure.} = object
     Flags*: HTTP_PROPERTY_FLAGS
@@ -342,6 +387,7 @@
     RolloverType*: HTTP_LOGGING_ROLLOVER_TYPE
     RolloverSize*: ULONG
     pSecurityDescriptor*: PSECURITY_DESCRIPTOR
+
   PHTTP_LOGGING_INFO* = ptr HTTP_LOGGING_INFO
   HTTP_TIMEOUT_LIMIT_INFO* {.pure.} = object
     Flags*: HTTP_PROPERTY_FLAGS
@@ -351,31 +397,37 @@
     IdleConnection*: USHORT
     HeaderWait*: USHORT
     MinSendRate*: ULONG
+
   PHTTP_TIMEOUT_LIMIT_INFO* = ptr HTTP_TIMEOUT_LIMIT_INFO
   HTTP_SERVICE_BINDING_BASE* {.pure.} = object
     Type*: HTTP_SERVICE_BINDING_TYPE
+
   PHTTP_SERVICE_BINDING_BASE* = ptr HTTP_SERVICE_BINDING_BASE
   HTTP_CHANNEL_BIND_INFO* {.pure.} = object
     Hardening*: HTTP_AUTHENTICATION_HARDENING_LEVELS
     Flags*: ULONG
     ServiceNames*: ptr PHTTP_SERVICE_BINDING_BASE
     NumberOfServiceNames*: ULONG
+
   PHTTP_CHANNEL_BIND_INFO* = ptr HTTP_CHANNEL_BIND_INFO
   HTTP_REQUEST_CHANNEL_BIND_STATUS* {.pure.} = object
     ServiceName*: PHTTP_SERVICE_BINDING_BASE
     ChannelToken*: PUCHAR
     ChannelTokenSize*: ULONG
     Flags*: ULONG
+
   PHTTP_REQUEST_CHANNEL_BIND_STATUS* = ptr HTTP_REQUEST_CHANNEL_BIND_STATUS
   HTTP_SERVICE_BINDING_A* {.pure.} = object
     Base*: HTTP_SERVICE_BINDING_BASE
     Buffer*: PCHAR
     BufferSize*: ULONG
+
   PHTTP_SERVICE_BINDING_A* = ptr HTTP_SERVICE_BINDING_A
   HTTP_SERVICE_BINDING_W* {.pure.} = object
     Base*: HTTP_SERVICE_BINDING_BASE
     Buffer*: PWCHAR
     BufferSize*: ULONG
+
   PHTTP_SERVICE_BINDING_W* = ptr HTTP_SERVICE_BINDING_W
   HTTP_LOG_FIELDS_DATA* {.pure.} = object
     Base*: HTTP_LOG_DATA
@@ -407,6 +459,7 @@
     Win32Status*: ULONG
     MethodNum*: HTTP_VERB
     SubStatus*: USHORT
+
   PHTTP_LOG_FIELDS_DATA* = ptr HTTP_LOG_FIELDS_DATA
   HTTP_REQUEST_AUTH_INFO* {.pure.} = object
     AuthStatus*: HTTP_AUTH_STATUS
@@ -420,39 +473,48 @@
     PackedContext*: PVOID
     MutualAuthDataLength*: ULONG
     pMutualAuthData*: PCHAR
+
   PHTTP_REQUEST_AUTH_INFO* = ptr HTTP_REQUEST_AUTH_INFO
   HTTP_MULTIPLE_KNOWN_HEADERS* {.pure.} = object
     HeaderId*: HTTP_HEADER_ID
     Flags*: ULONG
     KnownHeaderCount*: USHORT
     KnownHeaders*: PHTTP_KNOWN_HEADER
+
   PHTTP_MULTIPLE_KNOWN_HEADERS* = ptr HTTP_MULTIPLE_KNOWN_HEADERS
   HTTP_SERVICE_CONFIG_TIMEOUT_SET* {.pure.} = object
     KeyDesc*: HTTP_SERVICE_CONFIG_TIMEOUT_KEY
     ParamDesc*: HTTP_SERVICE_CONFIG_TIMEOUT_PARAM
+
   PHTTP_SERVICE_CONFIG_TIMEOUT_SET* = ptr HTTP_SERVICE_CONFIG_TIMEOUT_SET
   HTTP_BANDWIDTH_LIMIT_INFO* {.pure.} = object
     Flags*: HTTP_PROPERTY_FLAGS
     MaxBandwidth*: ULONG
+
   PHTTP_BANDWIDTH_LIMIT_INFO* = ptr HTTP_BANDWIDTH_LIMIT_INFO
   HTTP_BINDING_INFO* {.pure.} = object
     Flags*: HTTP_PROPERTY_FLAGS
     RequestQueueHandle*: HANDLE
+
   PHTTP_BINDING_INFO* = ptr HTTP_BINDING_INFO
   HTTP_LISTEN_ENDPOINT_INFO* {.pure.} = object
     Flags*: HTTP_PROPERTY_FLAGS
     EnableSharing*: BOOLEAN
+
   PHTTP_LISTEN_ENDPOINT_INFO* = ptr HTTP_LISTEN_ENDPOINT_INFO
   HTTP_FLOWRATE_INFO* {.pure.} = object
     Flags*: HTTP_PROPERTY_FLAGS
     MaxBandwidth*: ULONG
     MaxPeakBandwidth*: ULONG
     BurstSize*: ULONG
+
   PHTTP_FLOWRATE_INFO* = ptr HTTP_FLOWRATE_INFO
   HTTP_SERVICE_CONFIG_CACHE_SET* {.pure.} = object
     KeyDesc*: HTTP_SERVICE_CONFIG_CACHE_KEY
     ParamDesc*: HTTP_SERVICE_CONFIG_CACHE_PARAM
+
   PHTTP_SERVICE_CONFIG_CACHE_SET* = ptr HTTP_SERVICE_CONFIG_CACHE_SET
+
 const
   HTTP_INITIALIZE_SERVER* = 0x00000001
   HTTP_INITIALIZE_CONFIG* = 0x00000002
@@ -463,10 +525,10 @@
   HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA* = 0x00000004
   HTTP_FLUSH_RESPONSE_FLAG_RECURSIVE* = 0x00000001
   HTTP_NULL_ID* = 0
-  HTTP_VERSION_UNKNOWN* = [0'u8,0]
-  HTTP_VERSION_0_9* = [0'u8,9]
-  HTTP_VERSION_1_0* = [1'u8,0]
-  HTTP_VERSION_1_1* = [1'u8,1]
+  HTTP_VERSION_UNKNOWN* = [0'u8, 0]
+  HTTP_VERSION_0_9* = [0'u8, 9]
+  HTTP_VERSION_1_0* = [1'u8, 0]
+  HTTP_VERSION_1_1* = [1'u8, 1]
   httpVerbUnparsed* = 0
   httpVerbUnknown* = 1
   httpVerbInvalid* = 2
@@ -614,124 +676,514 @@
   maxCacheResponseSize* = 0
   cacheRangeChunkSize* = 1
   HTTP_BYTE_RANGE_TO_EOF* = not ULONGLONG(0)
-proc HttpInitialize*(Version: HTTPAPI_VERSION, Flags: ULONG, pReserved: PVOID): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpTerminate*(Flags: ULONG, pReserved: PVOID): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpCreateHttpHandle*(pReqQueueHandle: PHANDLE, Options: ULONG): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpReceiveClientCertificate*(ReqQueueHandle: HANDLE, ConnectionId: HTTP_CONNECTION_ID, Flags: ULONG, pSslClientCertInfo: PHTTP_SSL_CLIENT_CERT_INFO, SslClientCertInfoSize: ULONG, pBytesReceived: PULONG, pOverlapped: LPOVERLAPPED): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpAddUrl*(ReqQueueHandle: HANDLE, pUrlPrefix: PCWSTR, pReserved: PVOID): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpRemoveUrl*(ReqQueueHandle: HANDLE, pUrlPrefix: PCWSTR): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpReceiveHttpRequest*(ReqQueueHandle: HANDLE, RequestId: HTTP_REQUEST_ID, Flags: ULONG, pRequestBuffer: PHTTP_REQUEST, RequestBufferLength: ULONG, pBytesReceived: PULONG, pOverlapped: LPOVERLAPPED): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpReceiveRequestEntityBody*(ReqQueueHandle: HANDLE, RequestId: HTTP_REQUEST_ID, Flags: ULONG, pBuffer: PVOID, BufferLength: ULONG, pBytesReceived: PULONG, pOverlapped: LPOVERLAPPED): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpSendHttpResponse*(ReqQueueHandle: HANDLE, RequestId: HTTP_REQUEST_ID, Flags: ULONG, pHttpResponse: PHTTP_RESPONSE, pReserved1: PVOID, pBytesSent: PULONG, pReserved2: PVOID, Reserved3: ULONG, pOverlapped: LPOVERLAPPED, pReserved4: PVOID): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpSendResponseEntityBody*(ReqQueueHandle: HANDLE, RequestId: HTTP_REQUEST_ID, Flags: ULONG, EntityChunkCount: USHORT, pEntityChunks: PHTTP_DATA_CHUNK, pBytesSent: PULONG, pReserved1: PVOID, Reserved2: ULONG, pOverlapped: LPOVERLAPPED, pReserved3: PVOID): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpWaitForDisconnect*(ReqQueueHandle: HANDLE, ConnectionId: HTTP_CONNECTION_ID, pOverlapped: LPOVERLAPPED): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpFlushResponseCache*(ReqQueueHandle: HANDLE, pUrlPrefix: PCWSTR, Flags: ULONG, pOverlapped: LPOVERLAPPED): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpAddFragmentToCache*(ReqQueueHandle: HANDLE, pUrlPrefix: PCWSTR, pDataChunk: PHTTP_DATA_CHUNK, pCachePolicy: PHTTP_CACHE_POLICY, pOverlapped: LPOVERLAPPED): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpReadFragmentFromCache*(ReqQueueHandle: HANDLE, pUrlPrefix: PCWSTR, pByteRange: PHTTP_BYTE_RANGE, pBuffer: PVOID, BufferLength: ULONG, pBytesRead: PULONG, pOverlapped: LPOVERLAPPED): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpSetServiceConfiguration*(ServiceHandle: HANDLE, ConfigId: HTTP_SERVICE_CONFIG_ID, pConfigInformation: PVOID, ConfigInformationLength: ULONG, pOverlapped: LPOVERLAPPED): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpDeleteServiceConfiguration*(ServiceHandle: HANDLE, ConfigId: HTTP_SERVICE_CONFIG_ID, pConfigInformation: PVOID, ConfigInformationLength: ULONG, pOverlapped: LPOVERLAPPED): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpQueryServiceConfiguration*(ServiceHandle: HANDLE, ConfigId: HTTP_SERVICE_CONFIG_ID, pInputConfigInformation: PVOID, InputConfigInformationLength: ULONG, pOutputConfigInformation: PVOID, OutputConfigInformationLength: ULONG, pReturnLength: PULONG, pOverlapped: LPOVERLAPPED): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpSetRequestQueueProperty*(Handle: HANDLE, Property: HTTP_SERVER_PROPERTY, pPropertyInformation: PVOID, PropertyInformationLength: ULONG, Reserved: ULONG, pReserved: PVOID): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpQueryRequestQueueProperty*(Handle: HANDLE, Property: HTTP_SERVER_PROPERTY, pPropertyInformation: PVOID, PropertyInformationLength: ULONG, Reserved: ULONG, pReturnLength: PULONG, pReserved: PVOID): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpCreateRequestQueue*(Version: HTTPAPI_VERSION, pName: PCWSTR, pSecurityAttributes: PSECURITY_ATTRIBUTES, Flags: ULONG, pReqQueueHandle: PHANDLE): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpAddUrlToUrlGroup*(UrlGroupId: HTTP_URL_GROUP_ID, pFullyQualifiedUrl: PCWSTR, UrlContext: HTTP_URL_CONTEXT, Reserved: ULONG): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpCancelHttpRequest*(ReqQueueHandle: HANDLE, RequestId: HTTP_REQUEST_ID, pOverlapped: LPOVERLAPPED): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpCloseRequestQueue*(ReqQueueHandle: HANDLE): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpCloseServerSession*(ServerSessionId: HTTP_SERVER_SESSION_ID): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpCloseUrlGroup*(UrlGroupId: HTTP_URL_GROUP_ID): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpCreateServerSession*(Version: HTTPAPI_VERSION, pServerSessionId: PHTTP_SERVER_SESSION_ID, Reserved: ULONG): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpCreateUrlGroup*(ServerSessionId: HTTP_SERVER_SESSION_ID, pUrlGroupId: PHTTP_URL_GROUP_ID, Reserved: ULONG): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpQueryServerSessionProperty*(ServerSessionId: HTTP_SERVER_SESSION_ID, Property: HTTP_SERVER_PROPERTY, pPropertyInformation: PVOID, PropertyInformationLength: ULONG, pReturnLength: PULONG): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpQueryUrlGroupProperty*(UrlGroupId: HTTP_URL_GROUP_ID, Property: HTTP_SERVER_PROPERTY, pPropertyInformation: PVOID, PropertyInformationLength: ULONG, pReturnLength: PULONG): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpRemoveUrlFromUrlGroup*(UrlGroupId: HTTP_URL_GROUP_ID, pFullyQualifiedUrl: PCWSTR, Flags: ULONG): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpSetServerSessionProperty*(ServerSessionId: HTTP_SERVER_SESSION_ID, Property: HTTP_SERVER_PROPERTY, pPropertyInformation: PVOID, PropertyInformationLength: ULONG): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpSetUrlGroupProperty*(UrlGroupId: HTTP_URL_GROUP_ID, Property: HTTP_SERVER_PROPERTY, pPropertyInformation: PVOID, PropertyInformationLength: ULONG): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpShutdownRequestQueue*(ReqQueueHandle: HANDLE): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc HttpWaitForDemandStart*(ReqQueueHandle: HANDLE, pOverlapped: LPOVERLAPPED): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
-proc `FromMemory=`*(self: var HTTP_DATA_CHUNK, x: HTTP_DATA_CHUNK_UNION1_FromMemory) {.inline.} = self.union1.FromMemory = x
-proc FromMemory*(self: HTTP_DATA_CHUNK): HTTP_DATA_CHUNK_UNION1_FromMemory {.inline.} = self.union1.FromMemory
-proc FromMemory*(self: var HTTP_DATA_CHUNK): var HTTP_DATA_CHUNK_UNION1_FromMemory {.inline.} = self.union1.FromMemory
-proc `FromFileHandle=`*(self: var HTTP_DATA_CHUNK, x: HTTP_DATA_CHUNK_UNION1_FromFileHandle) {.inline.} = self.union1.FromFileHandle = x
-proc FromFileHandle*(self: HTTP_DATA_CHUNK): HTTP_DATA_CHUNK_UNION1_FromFileHandle {.inline.} = self.union1.FromFileHandle
-proc FromFileHandle*(self: var HTTP_DATA_CHUNK): var HTTP_DATA_CHUNK_UNION1_FromFileHandle {.inline.} = self.union1.FromFileHandle
-proc `FromFragmentCache=`*(self: var HTTP_DATA_CHUNK, x: HTTP_DATA_CHUNK_UNION1_FromFragmentCache) {.inline.} = self.union1.FromFragmentCache = x
-proc FromFragmentCache*(self: HTTP_DATA_CHUNK): HTTP_DATA_CHUNK_UNION1_FromFragmentCache {.inline.} = self.union1.FromFragmentCache
-proc FromFragmentCache*(self: var HTTP_DATA_CHUNK): var HTTP_DATA_CHUNK_UNION1_FromFragmentCache {.inline.} = self.union1.FromFragmentCache
-proc `Flags=`*(self: var HTTP_REQUEST_V2, x: ULONG) {.inline.} = self.struct1.Flags = x
-proc Flags*(self: HTTP_REQUEST_V2): ULONG {.inline.} = self.struct1.Flags
-proc Flags*(self: var HTTP_REQUEST_V2): var ULONG {.inline.} = self.struct1.Flags
-proc `ConnectionId=`*(self: var HTTP_REQUEST_V2, x: HTTP_CONNECTION_ID) {.inline.} = self.struct1.ConnectionId = x
-proc ConnectionId*(self: HTTP_REQUEST_V2): HTTP_CONNECTION_ID {.inline.} = self.struct1.ConnectionId
-proc ConnectionId*(self: var HTTP_REQUEST_V2): var HTTP_CONNECTION_ID {.inline.} = self.struct1.ConnectionId
-proc `RequestId=`*(self: var HTTP_REQUEST_V2, x: HTTP_REQUEST_ID) {.inline.} = self.struct1.RequestId = x
-proc RequestId*(self: HTTP_REQUEST_V2): HTTP_REQUEST_ID {.inline.} = self.struct1.RequestId
-proc RequestId*(self: var HTTP_REQUEST_V2): var HTTP_REQUEST_ID {.inline.} = self.struct1.RequestId
-proc `UrlContext=`*(self: var HTTP_REQUEST_V2, x: HTTP_URL_CONTEXT) {.inline.} = self.struct1.UrlContext = x
-proc UrlContext*(self: HTTP_REQUEST_V2): HTTP_URL_CONTEXT {.inline.} = self.struct1.UrlContext
-proc UrlContext*(self: var HTTP_REQUEST_V2): var HTTP_URL_CONTEXT {.inline.} = self.struct1.UrlContext
-proc `Version=`*(self: var HTTP_REQUEST_V2, x: HTTP_VERSION) {.inline.} = self.struct1.Version = x
-proc Version*(self: HTTP_REQUEST_V2): HTTP_VERSION {.inline.} = self.struct1.Version
-proc Version*(self: var HTTP_REQUEST_V2): var HTTP_VERSION {.inline.} = self.struct1.Version
-proc `Verb=`*(self: var HTTP_REQUEST_V2, x: HTTP_VERB) {.inline.} = self.struct1.Verb = x
-proc Verb*(self: HTTP_REQUEST_V2): HTTP_VERB {.inline.} = self.struct1.Verb
-proc Verb*(self: var HTTP_REQUEST_V2): var HTTP_VERB {.inline.} = self.struct1.Verb
-proc `UnknownVerbLength=`*(self: var HTTP_REQUEST_V2, x: USHORT) {.inline.} = self.struct1.UnknownVerbLength = x
-proc UnknownVerbLength*(self: HTTP_REQUEST_V2): USHORT {.inline.} = self.struct1.UnknownVerbLength
-proc UnknownVerbLength*(self: var HTTP_REQUEST_V2): var USHORT {.inline.} = self.struct1.UnknownVerbLength
-proc `RawUrlLength=`*(self: var HTTP_REQUEST_V2, x: USHORT) {.inline.} = self.struct1.RawUrlLength = x
-proc RawUrlLength*(self: HTTP_REQUEST_V2): USHORT {.inline.} = self.struct1.RawUrlLength
-proc RawUrlLength*(self: var HTTP_REQUEST_V2): var USHORT {.inline.} = self.struct1.RawUrlLength
-proc `pUnknownVerb=`*(self: var HTTP_REQUEST_V2, x: PCSTR) {.inline.} = self.struct1.pUnknownVerb = x
-proc pUnknownVerb*(self: HTTP_REQUEST_V2): PCSTR {.inline.} = self.struct1.pUnknownVerb
-proc pUnknownVerb*(self: var HTTP_REQUEST_V2): var PCSTR {.inline.} = self.struct1.pUnknownVerb
-proc `pRawUrl=`*(self: var HTTP_REQUEST_V2, x: PCSTR) {.inline.} = self.struct1.pRawUrl = x
-proc pRawUrl*(self: HTTP_REQUEST_V2): PCSTR {.inline.} = self.struct1.pRawUrl
-proc pRawUrl*(self: var HTTP_REQUEST_V2): var PCSTR {.inline.} = self.struct1.pRawUrl
-proc `CookedUrl=`*(self: var HTTP_REQUEST_V2, x: HTTP_COOKED_URL) {.inline.} = self.struct1.CookedUrl = x
-proc CookedUrl*(self: HTTP_REQUEST_V2): HTTP_COOKED_URL {.inline.} = self.struct1.CookedUrl
-proc CookedUrl*(self: var HTTP_REQUEST_V2): var HTTP_COOKED_URL {.inline.} = self.struct1.CookedUrl
-proc `Address=`*(self: var HTTP_REQUEST_V2, x: HTTP_TRANSPORT_ADDRESS) {.inline.} = self.struct1.Address = x
-proc Address*(self: HTTP_REQUEST_V2): HTTP_TRANSPORT_ADDRESS {.inline.} = self.struct1.Address
-proc Address*(self: var HTTP_REQUEST_V2): var HTTP_TRANSPORT_ADDRESS {.inline.} = self.struct1.Address
-proc `Headers=`*(self: var HTTP_REQUEST_V2, x: HTTP_REQUEST_HEADERS) {.inline.} = self.struct1.Headers = x
-proc Headers*(self: HTTP_REQUEST_V2): HTTP_REQUEST_HEADERS {.inline.} = self.struct1.Headers
-proc Headers*(self: var HTTP_REQUEST_V2): var HTTP_REQUEST_HEADERS {.inline.} = self.struct1.Headers
-proc `BytesReceived=`*(self: var HTTP_REQUEST_V2, x: ULONGLONG) {.inline.} = self.struct1.BytesReceived = x
-proc BytesReceived*(self: HTTP_REQUEST_V2): ULONGLONG {.inline.} = self.struct1.BytesReceived
-proc BytesReceived*(self: var HTTP_REQUEST_V2): var ULONGLONG {.inline.} = self.struct1.BytesReceived
-proc `EntityChunkCount=`*(self: var HTTP_REQUEST_V2, x: USHORT) {.inline.} = self.struct1.EntityChunkCount = x
-proc EntityChunkCount*(self: HTTP_REQUEST_V2): USHORT {.inline.} = self.struct1.EntityChunkCount
-proc EntityChunkCount*(self: var HTTP_REQUEST_V2): var USHORT {.inline.} = self.struct1.EntityChunkCount
-proc `pEntityChunks=`*(self: var HTTP_REQUEST_V2, x: PHTTP_DATA_CHUNK) {.inline.} = self.struct1.pEntityChunks = x
-proc pEntityChunks*(self: HTTP_REQUEST_V2): PHTTP_DATA_CHUNK {.inline.} = self.struct1.pEntityChunks
-proc pEntityChunks*(self: var HTTP_REQUEST_V2): var PHTTP_DATA_CHUNK {.inline.} = self.struct1.pEntityChunks
-proc `RawConnectionId=`*(self: var HTTP_REQUEST_V2, x: HTTP_RAW_CONNECTION_ID) {.inline.} = self.struct1.RawConnectionId = x
-proc RawConnectionId*(self: HTTP_REQUEST_V2): HTTP_RAW_CONNECTION_ID {.inline.} = self.struct1.RawConnectionId
-proc RawConnectionId*(self: var HTTP_REQUEST_V2): var HTTP_RAW_CONNECTION_ID {.inline.} = self.struct1.RawConnectionId
-proc `pSslInfo=`*(self: var HTTP_REQUEST_V2, x: PHTTP_SSL_INFO) {.inline.} = self.struct1.pSslInfo = x
-proc pSslInfo*(self: HTTP_REQUEST_V2): PHTTP_SSL_INFO {.inline.} = self.struct1.pSslInfo
-proc pSslInfo*(self: var HTTP_REQUEST_V2): var PHTTP_SSL_INFO {.inline.} = self.struct1.pSslInfo
-proc `Flags=`*(self: var HTTP_RESPONSE_V2, x: ULONG) {.inline.} = self.struct1.Flags = x
-proc Flags*(self: HTTP_RESPONSE_V2): ULONG {.inline.} = self.struct1.Flags
-proc Flags*(self: var HTTP_RESPONSE_V2): var ULONG {.inline.} = self.struct1.Flags
-proc `Version=`*(self: var HTTP_RESPONSE_V2, x: HTTP_VERSION) {.inline.} = self.struct1.Version = x
-proc Version*(self: HTTP_RESPONSE_V2): HTTP_VERSION {.inline.} = self.struct1.Version
-proc Version*(self: var HTTP_RESPONSE_V2): var HTTP_VERSION {.inline.} = self.struct1.Version
-proc `StatusCode=`*(self: var HTTP_RESPONSE_V2, x: USHORT) {.inline.} = self.struct1.StatusCode = x
-proc StatusCode*(self: HTTP_RESPONSE_V2): USHORT {.inline.} = self.struct1.StatusCode
-proc StatusCode*(self: var HTTP_RESPONSE_V2): var USHORT {.inline.} = self.struct1.StatusCode
-proc `ReasonLength=`*(self: var HTTP_RESPONSE_V2, x: USHORT) {.inline.} = self.struct1.ReasonLength = x
-proc ReasonLength*(self: HTTP_RESPONSE_V2): USHORT {.inline.} = self.struct1.ReasonLength
-proc ReasonLength*(self: var HTTP_RESPONSE_V2): var USHORT {.inline.} = self.struct1.ReasonLength
-proc `pReason=`*(self: var HTTP_RESPONSE_V2, x: PCSTR) {.inline.} = self.struct1.pReason = x
-proc pReason*(self: HTTP_RESPONSE_V2): PCSTR {.inline.} = self.struct1.pReason
-proc pReason*(self: var HTTP_RESPONSE_V2): var PCSTR {.inline.} = self.struct1.pReason
-proc `Headers=`*(self: var HTTP_RESPONSE_V2, x: HTTP_RESPONSE_HEADERS) {.inline.} = self.struct1.Headers = x
-proc Headers*(self: HTTP_RESPONSE_V2): HTTP_RESPONSE_HEADERS {.inline.} = self.struct1.Headers
-proc Headers*(self: var HTTP_RESPONSE_V2): var HTTP_RESPONSE_HEADERS {.inline.} = self.struct1.Headers
-proc `EntityChunkCount=`*(self: var HTTP_RESPONSE_V2, x: USHORT) {.inline.} = self.struct1.EntityChunkCount = x
-proc EntityChunkCount*(self: HTTP_RESPONSE_V2): USHORT {.inline.} = self.struct1.EntityChunkCount
-proc EntityChunkCount*(self: var HTTP_RESPONSE_V2): var USHORT {.inline.} = self.struct1.EntityChunkCount
-proc `pEntityChunks=`*(self: var HTTP_RESPONSE_V2, x: PHTTP_DATA_CHUNK) {.inline.} = self.struct1.pEntityChunks = x
-proc pEntityChunks*(self: HTTP_RESPONSE_V2): PHTTP_DATA_CHUNK {.inline.} = self.struct1.pEntityChunks
-proc pEntityChunks*(self: var HTTP_RESPONSE_V2): var PHTTP_DATA_CHUNK {.inline.} = self.struct1.pEntityChunks
+proc HttpInitialize*(
+  Version: HTTPAPI_VERSION, Flags: ULONG, pReserved: PVOID
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpTerminate*(
+  Flags: ULONG, pReserved: PVOID
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpCreateHttpHandle*(
+  pReqQueueHandle: PHANDLE, Options: ULONG
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpReceiveClientCertificate*(
+  ReqQueueHandle: HANDLE,
+  ConnectionId: HTTP_CONNECTION_ID,
+  Flags: ULONG,
+  pSslClientCertInfo: PHTTP_SSL_CLIENT_CERT_INFO,
+  SslClientCertInfoSize: ULONG,
+  pBytesReceived: PULONG,
+  pOverlapped: LPOVERLAPPED,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpAddUrl*(
+  ReqQueueHandle: HANDLE, pUrlPrefix: PCWSTR, pReserved: PVOID
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpRemoveUrl*(
+  ReqQueueHandle: HANDLE, pUrlPrefix: PCWSTR
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpReceiveHttpRequest*(
+  ReqQueueHandle: HANDLE,
+  RequestId: HTTP_REQUEST_ID,
+  Flags: ULONG,
+  pRequestBuffer: PHTTP_REQUEST,
+  RequestBufferLength: ULONG,
+  pBytesReceived: PULONG,
+  pOverlapped: LPOVERLAPPED,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpReceiveRequestEntityBody*(
+  ReqQueueHandle: HANDLE,
+  RequestId: HTTP_REQUEST_ID,
+  Flags: ULONG,
+  pBuffer: PVOID,
+  BufferLength: ULONG,
+  pBytesReceived: PULONG,
+  pOverlapped: LPOVERLAPPED,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpSendHttpResponse*(
+  ReqQueueHandle: HANDLE,
+  RequestId: HTTP_REQUEST_ID,
+  Flags: ULONG,
+  pHttpResponse: PHTTP_RESPONSE,
+  pReserved1: PVOID,
+  pBytesSent: PULONG,
+  pReserved2: PVOID,
+  Reserved3: ULONG,
+  pOverlapped: LPOVERLAPPED,
+  pReserved4: PVOID,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpSendResponseEntityBody*(
+  ReqQueueHandle: HANDLE,
+  RequestId: HTTP_REQUEST_ID,
+  Flags: ULONG,
+  EntityChunkCount: USHORT,
+  pEntityChunks: PHTTP_DATA_CHUNK,
+  pBytesSent: PULONG,
+  pReserved1: PVOID,
+  Reserved2: ULONG,
+  pOverlapped: LPOVERLAPPED,
+  pReserved3: PVOID,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpWaitForDisconnect*(
+  ReqQueueHandle: HANDLE, ConnectionId: HTTP_CONNECTION_ID, pOverlapped: LPOVERLAPPED
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpFlushResponseCache*(
+  ReqQueueHandle: HANDLE, pUrlPrefix: PCWSTR, Flags: ULONG, pOverlapped: LPOVERLAPPED
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpAddFragmentToCache*(
+  ReqQueueHandle: HANDLE,
+  pUrlPrefix: PCWSTR,
+  pDataChunk: PHTTP_DATA_CHUNK,
+  pCachePolicy: PHTTP_CACHE_POLICY,
+  pOverlapped: LPOVERLAPPED,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpReadFragmentFromCache*(
+  ReqQueueHandle: HANDLE,
+  pUrlPrefix: PCWSTR,
+  pByteRange: PHTTP_BYTE_RANGE,
+  pBuffer: PVOID,
+  BufferLength: ULONG,
+  pBytesRead: PULONG,
+  pOverlapped: LPOVERLAPPED,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpSetServiceConfiguration*(
+  ServiceHandle: HANDLE,
+  ConfigId: HTTP_SERVICE_CONFIG_ID,
+  pConfigInformation: PVOID,
+  ConfigInformationLength: ULONG,
+  pOverlapped: LPOVERLAPPED,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpDeleteServiceConfiguration*(
+  ServiceHandle: HANDLE,
+  ConfigId: HTTP_SERVICE_CONFIG_ID,
+  pConfigInformation: PVOID,
+  ConfigInformationLength: ULONG,
+  pOverlapped: LPOVERLAPPED,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpQueryServiceConfiguration*(
+  ServiceHandle: HANDLE,
+  ConfigId: HTTP_SERVICE_CONFIG_ID,
+  pInputConfigInformation: PVOID,
+  InputConfigInformationLength: ULONG,
+  pOutputConfigInformation: PVOID,
+  OutputConfigInformationLength: ULONG,
+  pReturnLength: PULONG,
+  pOverlapped: LPOVERLAPPED,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpSetRequestQueueProperty*(
+  Handle: HANDLE,
+  Property: HTTP_SERVER_PROPERTY,
+  pPropertyInformation: PVOID,
+  PropertyInformationLength: ULONG,
+  Reserved: ULONG,
+  pReserved: PVOID,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpQueryRequestQueueProperty*(
+  Handle: HANDLE,
+  Property: HTTP_SERVER_PROPERTY,
+  pPropertyInformation: PVOID,
+  PropertyInformationLength: ULONG,
+  Reserved: ULONG,
+  pReturnLength: PULONG,
+  pReserved: PVOID,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpCreateRequestQueue*(
+  Version: HTTPAPI_VERSION,
+  pName: PCWSTR,
+  pSecurityAttributes: PSECURITY_ATTRIBUTES,
+  Flags: ULONG,
+  pReqQueueHandle: PHANDLE,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpAddUrlToUrlGroup*(
+  UrlGroupId: HTTP_URL_GROUP_ID,
+  pFullyQualifiedUrl: PCWSTR,
+  UrlContext: HTTP_URL_CONTEXT,
+  Reserved: ULONG,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpCancelHttpRequest*(
+  ReqQueueHandle: HANDLE, RequestId: HTTP_REQUEST_ID, pOverlapped: LPOVERLAPPED
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpCloseRequestQueue*(
+  ReqQueueHandle: HANDLE
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpCloseServerSession*(
+  ServerSessionId: HTTP_SERVER_SESSION_ID
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpCloseUrlGroup*(
+  UrlGroupId: HTTP_URL_GROUP_ID
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpCreateServerSession*(
+  Version: HTTPAPI_VERSION, pServerSessionId: PHTTP_SERVER_SESSION_ID, Reserved: ULONG
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpCreateUrlGroup*(
+  ServerSessionId: HTTP_SERVER_SESSION_ID,
+  pUrlGroupId: PHTTP_URL_GROUP_ID,
+  Reserved: ULONG,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpQueryServerSessionProperty*(
+  ServerSessionId: HTTP_SERVER_SESSION_ID,
+  Property: HTTP_SERVER_PROPERTY,
+  pPropertyInformation: PVOID,
+  PropertyInformationLength: ULONG,
+  pReturnLength: PULONG,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpQueryUrlGroupProperty*(
+  UrlGroupId: HTTP_URL_GROUP_ID,
+  Property: HTTP_SERVER_PROPERTY,
+  pPropertyInformation: PVOID,
+  PropertyInformationLength: ULONG,
+  pReturnLength: PULONG,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpRemoveUrlFromUrlGroup*(
+  UrlGroupId: HTTP_URL_GROUP_ID, pFullyQualifiedUrl: PCWSTR, Flags: ULONG
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpSetServerSessionProperty*(
+  ServerSessionId: HTTP_SERVER_SESSION_ID,
+  Property: HTTP_SERVER_PROPERTY,
+  pPropertyInformation: PVOID,
+  PropertyInformationLength: ULONG,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpSetUrlGroupProperty*(
+  UrlGroupId: HTTP_URL_GROUP_ID,
+  Property: HTTP_SERVER_PROPERTY,
+  pPropertyInformation: PVOID,
+  PropertyInformationLength: ULONG,
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpShutdownRequestQueue*(
+  ReqQueueHandle: HANDLE
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc HttpWaitForDemandStart*(
+  ReqQueueHandle: HANDLE, pOverlapped: LPOVERLAPPED
+): ULONG {.winapi, stdcall, dynlib: "httpapi", importc.}
+
+proc `FromMemory=`*(
+    self: var HTTP_DATA_CHUNK, x: HTTP_DATA_CHUNK_UNION1_FromMemory
+) {.inline.} =
+  self.union1.FromMemory = x
+
+proc FromMemory*(self: HTTP_DATA_CHUNK): HTTP_DATA_CHUNK_UNION1_FromMemory {.inline.} =
+  self.union1.FromMemory
+
+proc FromMemory*(
+    self: var HTTP_DATA_CHUNK
+): var HTTP_DATA_CHUNK_UNION1_FromMemory {.inline.} =
+  self.union1.FromMemory
+
+proc `FromFileHandle=`*(
+    self: var HTTP_DATA_CHUNK, x: HTTP_DATA_CHUNK_UNION1_FromFileHandle
+) {.inline.} =
+  self.union1.FromFileHandle = x
+
+proc FromFileHandle*(
+    self: HTTP_DATA_CHUNK
+): HTTP_DATA_CHUNK_UNION1_FromFileHandle {.inline.} =
+  self.union1.FromFileHandle
+
+proc FromFileHandle*(
+    self: var HTTP_DATA_CHUNK
+): var HTTP_DATA_CHUNK_UNION1_FromFileHandle {.inline.} =
+  self.union1.FromFileHandle
+
+proc `FromFragmentCache=`*(
+    self: var HTTP_DATA_CHUNK, x: HTTP_DATA_CHUNK_UNION1_FromFragmentCache
+) {.inline.} =
+  self.union1.FromFragmentCache = x
+
+proc FromFragmentCache*(
+    self: HTTP_DATA_CHUNK
+): HTTP_DATA_CHUNK_UNION1_FromFragmentCache {.inline.} =
+  self.union1.FromFragmentCache
+
+proc FromFragmentCache*(
+    self: var HTTP_DATA_CHUNK
+): var HTTP_DATA_CHUNK_UNION1_FromFragmentCache {.inline.} =
+  self.union1.FromFragmentCache
+
+proc `Flags=`*(self: var HTTP_REQUEST_V2, x: ULONG) {.inline.} =
+  self.struct1.Flags = x
+
+proc Flags*(self: HTTP_REQUEST_V2): ULONG {.inline.} =
+  self.struct1.Flags
+
+proc Flags*(self: var HTTP_REQUEST_V2): var ULONG {.inline.} =
+  self.struct1.Flags
+
+proc `ConnectionId=`*(self: var HTTP_REQUEST_V2, x: HTTP_CONNECTION_ID) {.inline.} =
+  self.struct1.ConnectionId = x
+
+proc ConnectionId*(self: HTTP_REQUEST_V2): HTTP_CONNECTION_ID {.inline.} =
+  self.struct1.ConnectionId
+
+proc ConnectionId*(self: var HTTP_REQUEST_V2): var HTTP_CONNECTION_ID {.inline.} =
+  self.struct1.ConnectionId
+
+proc `RequestId=`*(self: var HTTP_REQUEST_V2, x: HTTP_REQUEST_ID) {.inline.} =
+  self.struct1.RequestId = x
+
+proc RequestId*(self: HTTP_REQUEST_V2): HTTP_REQUEST_ID {.inline.} =
+  self.struct1.RequestId
+
+proc RequestId*(self: var HTTP_REQUEST_V2): var HTTP_REQUEST_ID {.inline.} =
+  self.struct1.RequestId
+
+proc `UrlContext=`*(self: var HTTP_REQUEST_V2, x: HTTP_URL_CONTEXT) {.inline.} =
+  self.struct1.UrlContext = x
+
+proc UrlContext*(self: HTTP_REQUEST_V2): HTTP_URL_CONTEXT {.inline.} =
+  self.struct1.UrlContext
+
+proc UrlContext*(self: var HTTP_REQUEST_V2): var HTTP_URL_CONTEXT {.inline.} =
+  self.struct1.UrlContext
+
+proc `Version=`*(self: var HTTP_REQUEST_V2, x: HTTP_VERSION) {.inline.} =
+  self.struct1.Version = x
+
+proc Version*(self: HTTP_REQUEST_V2): HTTP_VERSION {.inline.} =
+  self.struct1.Version
+
+proc Version*(self: var HTTP_REQUEST_V2): var HTTP_VERSION {.inline.} =
+  self.struct1.Version
+
+proc `Verb=`*(self: var HTTP_REQUEST_V2, x: HTTP_VERB) {.inline.} =
+  self.struct1.Verb = x
+
+proc Verb*(self: HTTP_REQUEST_V2): HTTP_VERB {.inline.} =
+  self.struct1.Verb
+
+proc Verb*(self: var HTTP_REQUEST_V2): var HTTP_VERB {.inline.} =
+  self.struct1.Verb
+
+proc `UnknownVerbLength=`*(self: var HTTP_REQUEST_V2, x: USHORT) {.inline.} =
+  self.struct1.UnknownVerbLength = x
+
+proc UnknownVerbLength*(self: HTTP_REQUEST_V2): USHORT {.inline.} =
+  self.struct1.UnknownVerbLength
+
+proc UnknownVerbLength*(self: var HTTP_REQUEST_V2): var USHORT {.inline.} =
+  self.struct1.UnknownVerbLength
+
+proc `RawUrlLength=`*(self: var HTTP_REQUEST_V2, x: USHORT) {.inline.} =
+  self.struct1.RawUrlLength = x
+
+proc RawUrlLength*(self: HTTP_REQUEST_V2): USHORT {.inline.} =
+  self.struct1.RawUrlLength
+
+proc RawUrlLength*(self: var HTTP_REQUEST_V2): var USHORT {.inline.} =
+  self.struct1.RawUrlLength
+
+proc `pUnknownVerb=`*(self: var HTTP_REQUEST_V2, x: PCSTR) {.inline.} =
+  self.struct1.pUnknownVerb = x
+
+proc pUnknownVerb*(self: HTTP_REQUEST_V2): PCSTR {.inline.} =
+  self.struct1.pUnknownVerb
+
+proc pUnknownVerb*(self: var HTTP_REQUEST_V2): var PCSTR {.inline.} =
+  self.struct1.pUnknownVerb
+
+proc `pRawUrl=`*(self: var HTTP_REQUEST_V2, x: PCSTR) {.inline.} =
+  self.struct1.pRawUrl = x
+
+proc pRawUrl*(self: HTTP_REQUEST_V2): PCSTR {.inline.} =
+  self.struct1.pRawUrl
+
+proc pRawUrl*(self: var HTTP_REQUEST_V2): var PCSTR {.inline.} =
+  self.struct1.pRawUrl
+
+proc `CookedUrl=`*(self: var HTTP_REQUEST_V2, x: HTTP_COOKED_URL) {.inline.} =
+  self.struct1.CookedUrl = x
+
+proc CookedUrl*(self: HTTP_REQUEST_V2): HTTP_COOKED_URL {.inline.} =
+  self.struct1.CookedUrl
+
+proc CookedUrl*(self: var HTTP_REQUEST_V2): var HTTP_COOKED_URL {.inline.} =
+  self.struct1.CookedUrl
+
+proc `Address=`*(self: var HTTP_REQUEST_V2, x: HTTP_TRANSPORT_ADDRESS) {.inline.} =
+  self.struct1.Address = x
+
+proc Address*(self: HTTP_REQUEST_V2): HTTP_TRANSPORT_ADDRESS {.inline.} =
+  self.struct1.Address
+
+proc Address*(self: var HTTP_REQUEST_V2): var HTTP_TRANSPORT_ADDRESS {.inline.} =
+  self.struct1.Address
+
+proc `Headers=`*(self: var HTTP_REQUEST_V2, x: HTTP_REQUEST_HEADERS) {.inline.} =
+  self.struct1.Headers = x
+
+proc Headers*(self: HTTP_REQUEST_V2): HTTP_REQUEST_HEADERS {.inline.} =
+  self.struct1.Headers
+
+proc Headers*(self: var HTTP_REQUEST_V2): var HTTP_REQUEST_HEADERS {.inline.} =
+  self.struct1.Headers
+
+proc `BytesReceived=`*(self: var HTTP_REQUEST_V2, x: ULONGLONG) {.inline.} =
+  self.struct1.BytesReceived = x
+
+proc BytesReceived*(self: HTTP_REQUEST_V2): ULONGLONG {.inline.} =
+  self.struct1.BytesReceived
+
+proc BytesReceived*(self: var HTTP_REQUEST_V2): var ULONGLONG {.inline.} =
+  self.struct1.BytesReceived
+
+proc `EntityChunkCount=`*(self: var HTTP_REQUEST_V2, x: USHORT) {.inline.} =
+  self.struct1.EntityChunkCount = x
+
+proc EntityChunkCount*(self: HTTP_REQUEST_V2): USHORT {.inline.} =
+  self.struct1.EntityChunkCount
+
+proc EntityChunkCount*(self: var HTTP_REQUEST_V2): var USHORT {.inline.} =
+  self.struct1.EntityChunkCount
+
+proc `pEntityChunks=`*(self: var HTTP_REQUEST_V2, x: PHTTP_DATA_CHUNK) {.inline.} =
+  self.struct1.pEntityChunks = x
+
+proc pEntityChunks*(self: HTTP_REQUEST_V2): PHTTP_DATA_CHUNK {.inline.} =
+  self.struct1.pEntityChunks
+
+proc pEntityChunks*(self: var HTTP_REQUEST_V2): var PHTTP_DATA_CHUNK {.inline.} =
+  self.struct1.pEntityChunks
+
+proc `RawConnectionId=`*(
+    self: var HTTP_REQUEST_V2, x: HTTP_RAW_CONNECTION_ID
+) {.inline.} =
+  self.struct1.RawConnectionId = x
+
+proc RawConnectionId*(self: HTTP_REQUEST_V2): HTTP_RAW_CONNECTION_ID {.inline.} =
+  self.struct1.RawConnectionId
+
+proc RawConnectionId*(
+    self: var HTTP_REQUEST_V2
+): var HTTP_RAW_CONNECTION_ID {.inline.} =
+  self.struct1.RawConnectionId
+
+proc `pSslInfo=`*(self: var HTTP_REQUEST_V2, x: PHTTP_SSL_INFO) {.inline.} =
+  self.struct1.pSslInfo = x
+
+proc pSslInfo*(self: HTTP_REQUEST_V2): PHTTP_SSL_INFO {.inline.} =
+  self.struct1.pSslInfo
+
+proc pSslInfo*(self: var HTTP_REQUEST_V2): var PHTTP_SSL_INFO {.inline.} =
+  self.struct1.pSslInfo
+
+proc `Flags=`*(self: var HTTP_RESPONSE_V2, x: ULONG) {.inline.} =
+  self.struct1.Flags = x
+
+proc Flags*(self: HTTP_RESPONSE_V2): ULONG {.inline.} =
+  self.struct1.Flags
+
+proc Flags*(self: var HTTP_RESPONSE_V2): var ULONG {.inline.} =
+  self.struct1.Flags
+
+proc `Version=`*(self: var HTTP_RESPONSE_V2, x: HTTP_VERSION) {.inline.} =
+  self.struct1.Version = x
+
+proc Version*(self: HTTP_RESPONSE_V2): HTTP_VERSION {.inline.} =
+  self.struct1.Version
+
+proc Version*(self: var HTTP_RESPONSE_V2): var HTTP_VERSION {.inline.} =
+  self.struct1.Version
+
+proc `StatusCode=`*(self: var HTTP_RESPONSE_V2, x: USHORT) {.inline.} =
+  self.struct1.StatusCode = x
+
+proc StatusCode*(self: HTTP_RESPONSE_V2): USHORT {.inline.} =
+  self.struct1.StatusCode
+
+proc StatusCode*(self: var HTTP_RESPONSE_V2): var USHORT {.inline.} =
+  self.struct1.StatusCode
+
+proc `ReasonLength=`*(self: var HTTP_RESPONSE_V2, x: USHORT) {.inline.} =
+  self.struct1.ReasonLength = x
+
+proc ReasonLength*(self: HTTP_RESPONSE_V2): USHORT {.inline.} =
+  self.struct1.ReasonLength
+
+proc ReasonLength*(self: var HTTP_RESPONSE_V2): var USHORT {.inline.} =
+  self.struct1.ReasonLength
+
+proc `pReason=`*(self: var HTTP_RESPONSE_V2, x: PCSTR) {.inline.} =
+  self.struct1.pReason = x
+
+proc pReason*(self: HTTP_RESPONSE_V2): PCSTR {.inline.} =
+  self.struct1.pReason
+
+proc pReason*(self: var HTTP_RESPONSE_V2): var PCSTR {.inline.} =
+  self.struct1.pReason
+
+proc `Headers=`*(self: var HTTP_RESPONSE_V2, x: HTTP_RESPONSE_HEADERS) {.inline.} =
+  self.struct1.Headers = x
+
+proc Headers*(self: HTTP_RESPONSE_V2): HTTP_RESPONSE_HEADERS {.inline.} =
+  self.struct1.Headers
+
+proc Headers*(self: var HTTP_RESPONSE_V2): var HTTP_RESPONSE_HEADERS {.inline.} =
+  self.struct1.Headers
+
+proc `EntityChunkCount=`*(self: var HTTP_RESPONSE_V2, x: USHORT) {.inline.} =
+  self.struct1.EntityChunkCount = x
+
+proc EntityChunkCount*(self: HTTP_RESPONSE_V2): USHORT {.inline.} =
+  self.struct1.EntityChunkCount
+
+proc EntityChunkCount*(self: var HTTP_RESPONSE_V2): var USHORT {.inline.} =
+  self.struct1.EntityChunkCount
+
+proc `pEntityChunks=`*(self: var HTTP_RESPONSE_V2, x: PHTTP_DATA_CHUNK) {.inline.} =
+  self.struct1.pEntityChunks = x
+
+proc pEntityChunks*(self: HTTP_RESPONSE_V2): PHTTP_DATA_CHUNK {.inline.} =
+  self.struct1.pEntityChunks
+
+proc pEntityChunks*(self: var HTTP_RESPONSE_V2): var PHTTP_DATA_CHUNK {.inline.} =
+  self.struct1.pEntityChunks
--- a/semicongine/thirdparty/winim/winim/inc/imagehlp.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/imagehlp.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -41,6 +41,7 @@
     Version*: UCHAR
     Links*: LIST_ENTRY
     SizeOfImage*: ULONG
+
   PLOADED_IMAGE* = ptr LOADED_IMAGE
   MODLOAD_DATA* {.pure.} = object
     ssize*: DWORD
@@ -48,6 +49,7 @@
     data*: PVOID
     size*: DWORD
     flags*: DWORD
+
   PMODLOAD_DATA* = ptr MODLOAD_DATA
   MODLOAD_CVMISC* {.pure.} = object
     oCV*: DWORD
@@ -56,11 +58,13 @@
     cMisc*: int
     dtImage*: DWORD
     cImage*: DWORD
+
   PMODLOAD_CVMISC* = ptr MODLOAD_CVMISC
   TADDRESS64* {.pure.} = object
     Offset*: DWORD64
     Segment*: WORD
     Mode*: ADDRESS_MODE
+
   LPADDRESS64* = ptr TADDRESS64
   KDHELP64* {.pure.} = object
     Thread*: DWORD64
@@ -75,6 +79,7 @@
     StackBase*: DWORD64
     StackLimit*: DWORD64
     Reserved*: array[5, DWORD64]
+
   PKDHELP64* = ptr KDHELP64
   STACKFRAME64* {.pure.} = object
     AddrPC*: TADDRESS64
@@ -88,12 +93,14 @@
     Virtual*: WINBOOL
     Reserved*: array[3, DWORD64]
     KdHelp*: KDHELP64
+
   LPSTACKFRAME64* = ptr STACKFRAME64
   API_VERSION* {.pure.} = object
     MajorVersion*: USHORT
     MinorVersion*: USHORT
     Revision*: USHORT
     Reserved*: USHORT
+
   LPAPI_VERSION* = ptr API_VERSION
   IMAGEHLP_SYMBOL64* {.pure.} = object
     SizeOfStruct*: DWORD
@@ -102,13 +109,15 @@
     Flags*: DWORD
     MaxNameLength*: DWORD
     Name*: array[1, CHAR]
+
   PIMAGEHLP_SYMBOL64* = ptr IMAGEHLP_SYMBOL64
-const
-  MAX_SYM_NAME* = 2000
+
+const MAX_SYM_NAME* = 2000
 type
   IMAGEHLP_SYMBOL64_PACKAGE* {.pure.} = object
     sym*: IMAGEHLP_SYMBOL64
-    name*: array[MAX_SYM_NAME+1, CHAR]
+    name*: array[MAX_SYM_NAME + 1, CHAR]
+
   PIMAGEHLP_SYMBOL64_PACKAGE* = ptr IMAGEHLP_SYMBOL64_PACKAGE
   IMAGEHLP_MODULE64* {.pure.} = object
     SizeOfStruct*: DWORD
@@ -123,7 +132,7 @@
     LoadedImageName*: array[256, CHAR]
     LoadedPdbName*: array[256, CHAR]
     CVSig*: DWORD
-    CVData*: array[MAX_PATH*3, CHAR]
+    CVData*: array[MAX_PATH * 3, CHAR]
     PdbSig*: DWORD
     PdbSig70*: GUID
     PdbAge*: DWORD
@@ -134,6 +143,7 @@
     TypeInfo*: WINBOOL
     SourceIndexed*: WINBOOL
     Publics*: WINBOOL
+
   PIMAGEHLP_MODULE64* = ptr IMAGEHLP_MODULE64
   IMAGEHLP_MODULEW64* {.pure.} = object
     SizeOfStruct*: DWORD
@@ -148,7 +158,7 @@
     LoadedImageName*: array[256, WCHAR]
     LoadedPdbName*: array[256, WCHAR]
     CVSig*: DWORD
-    CVData*: array[MAX_PATH*3, WCHAR]
+    CVData*: array[MAX_PATH * 3, WCHAR]
     PdbSig*: DWORD
     PdbSig70*: GUID
     PdbAge*: DWORD
@@ -159,6 +169,7 @@
     TypeInfo*: WINBOOL
     SourceIndexed*: WINBOOL
     Publics*: WINBOOL
+
   PIMAGEHLP_MODULEW64* = ptr IMAGEHLP_MODULEW64
   IMAGEHLP_LINE64* {.pure.} = object
     SizeOfStruct*: DWORD
@@ -166,6 +177,7 @@
     LineNumber*: DWORD
     FileName*: PCHAR
     Address*: DWORD64
+
   PIMAGEHLP_LINE64* = ptr IMAGEHLP_LINE64
   IMAGEHLP_LINEW64* {.pure.} = object
     SizeOfStruct*: DWORD
@@ -173,26 +185,31 @@
     LineNumber*: DWORD
     FileName*: PWSTR
     Address*: DWORD64
+
   PIMAGEHLP_LINEW64* = ptr IMAGEHLP_LINEW64
   SOURCEFILE* {.pure.} = object
     ModBase*: DWORD64
     FileName*: PCHAR
+
   PSOURCEFILE* = ptr SOURCEFILE
   SOURCEFILEW* {.pure.} = object
     ModBase*: DWORD64
     FileName*: PWCHAR
+
   PSOURCEFILEW* = ptr SOURCEFILEW
   IMAGEHLP_CBA_READ_MEMORY* {.pure.} = object
     `addr`*: DWORD64
     buf*: PVOID
     bytes*: DWORD
     bytesread*: ptr DWORD
+
   PIMAGEHLP_CBA_READ_MEMORY* = ptr IMAGEHLP_CBA_READ_MEMORY
   IMAGEHLP_CBA_EVENT* {.pure.} = object
     severity*: DWORD
     code*: DWORD
     desc*: PCHAR
     `object`*: PVOID
+
   PIMAGEHLP_CBA_EVENT* = ptr IMAGEHLP_CBA_EVENT
   IMAGEHLP_DEFERRED_SYMBOL_LOAD64* {.pure.} = object
     SizeOfStruct*: DWORD
@@ -203,66 +220,75 @@
     Reparse*: BOOLEAN
     hFile*: HANDLE
     Flags*: DWORD
+
   PIMAGEHLP_DEFERRED_SYMBOL_LOAD64* = ptr IMAGEHLP_DEFERRED_SYMBOL_LOAD64
   IMAGEHLP_DUPLICATE_SYMBOL64* {.pure.} = object
     SizeOfStruct*: DWORD
     NumberOfDups*: DWORD
     Symbol*: PIMAGEHLP_SYMBOL64
     SelectedSymbol*: DWORD
+
   PIMAGEHLP_DUPLICATE_SYMBOL64* = ptr IMAGEHLP_DUPLICATE_SYMBOL64
   SYMSRV_INDEX_INFO* {.pure.} = object
     sizeofstruct*: DWORD
-    file*: array[MAX_PATH+1, CHAR]
+    file*: array[MAX_PATH + 1, CHAR]
     stripped*: WINBOOL
     timestamp*: DWORD
     size*: DWORD
-    dbgfile*: array[MAX_PATH+1, CHAR]
-    pdbfile*: array[MAX_PATH+1, CHAR]
+    dbgfile*: array[MAX_PATH + 1, CHAR]
+    pdbfile*: array[MAX_PATH + 1, CHAR]
     guid*: GUID
     sig*: DWORD
     age*: DWORD
+
   PSYMSRV_INDEX_INFO* = ptr SYMSRV_INDEX_INFO
   SYMSRV_INDEX_INFOW* {.pure.} = object
     sizeofstruct*: DWORD
-    file*: array[MAX_PATH+1, WCHAR]
+    file*: array[MAX_PATH + 1, WCHAR]
     stripped*: WINBOOL
     timestamp*: DWORD
     size*: DWORD
-    dbgfile*: array[MAX_PATH+1, WCHAR]
-    pdbfile*: array[MAX_PATH+1, WCHAR]
+    dbgfile*: array[MAX_PATH + 1, WCHAR]
+    pdbfile*: array[MAX_PATH + 1, WCHAR]
     guid*: GUID
     sig*: DWORD
     age*: DWORD
+
   PSYMSRV_INDEX_INFOW* = ptr SYMSRV_INDEX_INFOW
-  PSYM_ENUMSOURCEFILES_CALLBACK* = proc (pSourceFile: PSOURCEFILE, UserContext: PVOID): WINBOOL {.stdcall.}
+  PSYM_ENUMSOURCEFILES_CALLBACK* =
+    proc(pSourceFile: PSOURCEFILE, UserContext: PVOID): WINBOOL {.stdcall.}
   PSYM_ENUMSOURCFILES_CALLBACK* = PSYM_ENUMSOURCEFILES_CALLBACK
   SRCCODEINFO* {.pure.} = object
     SizeOfStruct*: DWORD
     Key*: PVOID
     ModBase*: DWORD64
-    Obj*: array[MAX_PATH+1, CHAR]
-    FileName*: array[MAX_PATH+1, CHAR]
+    Obj*: array[MAX_PATH + 1, CHAR]
+    FileName*: array[MAX_PATH + 1, CHAR]
     LineNumber*: DWORD
     Address*: DWORD64
+
   PSRCCODEINFO* = ptr SRCCODEINFO
   SRCCODEINFOW* {.pure.} = object
     SizeOfStruct*: DWORD
     Key*: PVOID
     ModBase*: DWORD64
-    Obj*: array[MAX_PATH+1, WCHAR]
-    FileName*: array[MAX_PATH+1, WCHAR]
+    Obj*: array[MAX_PATH + 1, WCHAR]
+    FileName*: array[MAX_PATH + 1, WCHAR]
     LineNumber*: DWORD
     Address*: DWORD64
+
   PSRCCODEINFOW* = ptr SRCCODEINFOW
   IMAGEHLP_SYMBOL_SRC* {.pure.} = object
     sizeofstruct*: DWORD
     `type`*: DWORD
     file*: array[MAX_PATH, char]
+
   PIMAGEHLP_SYMBOL_SRC* = ptr IMAGEHLP_SYMBOL_SRC
   MODULE_TYPE_INFO* {.pure.} = object
     dataLength*: USHORT
     leaf*: USHORT
     data*: array[1, BYTE]
+
   PMODULE_TYPE_INFO* = ptr MODULE_TYPE_INFO
   SYMBOL_INFO* {.pure.} = object
     SizeOfStruct*: ULONG
@@ -280,6 +306,7 @@
     NameLen*: ULONG
     MaxNameLen*: ULONG
     Name*: array[1, CHAR]
+
   PSYMBOL_INFO* = ptr SYMBOL_INFO
   SYMBOL_INFOW* {.pure.} = object
     SizeOfStruct*: ULONG
@@ -297,10 +324,12 @@
     NameLen*: ULONG
     MaxNameLen*: ULONG
     Name*: array[1, WCHAR]
+
   PSYMBOL_INFOW* = ptr SYMBOL_INFOW
   SYMBOL_INFO_PACKAGE* {.pure.} = object
     si*: SYMBOL_INFO
-    name*: array[MAX_SYM_NAME+1, CHAR]
+    name*: array[MAX_SYM_NAME + 1, CHAR]
+
   PSYMBOL_INFO_PACKAGE* = ptr SYMBOL_INFO_PACKAGE
   IMAGEHLP_STACK_FRAME* {.pure.} = object
     InstructionOffset*: ULONG64
@@ -313,23 +342,28 @@
     Reserved*: array[5, ULONG64]
     Virtual*: WINBOOL
     Reserved2*: ULONG
+
   PIMAGEHLP_STACK_FRAME* = ptr IMAGEHLP_STACK_FRAME
   IMAGEHLP_CONTEXT* = VOID
   RVA64* = ULONG64
   MINIDUMP_LOCATION_DESCRIPTOR* {.pure.} = object
     DataSize*: ULONG32
     Rva*: RVA
+
   MINIDUMP_MEMORY_DESCRIPTOR* {.pure.} = object
     StartOfMemoryRange*: ULONG64
     Memory*: MINIDUMP_LOCATION_DESCRIPTOR
+
   PMINIDUMP_MEMORY_DESCRIPTOR* = ptr MINIDUMP_MEMORY_DESCRIPTOR
   MINIDUMP_MEMORY_DESCRIPTOR64* {.pure.} = object
     StartOfMemoryRange*: ULONG64
     DataSize*: ULONG64
+
   PMINIDUMP_MEMORY_DESCRIPTOR64* = ptr MINIDUMP_MEMORY_DESCRIPTOR64
   MINIDUMP_HEADER_UNION1* {.pure, union.} = object
     Reserved*: ULONG32
     TimeDateStamp*: ULONG32
+
   MINIDUMP_HEADER* {.pure.} = object
     Signature*: ULONG32
     Version*: ULONG32
@@ -338,38 +372,48 @@
     CheckSum*: ULONG32
     union1*: MINIDUMP_HEADER_UNION1
     Flags*: ULONG64
+
   PMINIDUMP_HEADER* = ptr MINIDUMP_HEADER
   MINIDUMP_DIRECTORY* {.pure.} = object
     StreamType*: ULONG32
     Location*: MINIDUMP_LOCATION_DESCRIPTOR
+
   PMINIDUMP_DIRECTORY* = ptr MINIDUMP_DIRECTORY
   MINIDUMP_STRING* {.pure.} = object
     Length*: ULONG32
     Buffer*: UncheckedArray[WCHAR]
+
   PMINIDUMP_STRING* = ptr MINIDUMP_STRING
   CPU_INFORMATION_X86CpuInfo* {.pure.} = object
     VendorId*: array[3, ULONG32]
     VersionInformation*: ULONG32
     FeatureInformation*: ULONG32
     AMDExtendedCpuFeatures*: ULONG32
+
   CPU_INFORMATION_OtherCpuInfo* {.pure.} = object
     ProcessorFeatures*: array[2, ULONG64]
+
   CPU_INFORMATION* {.pure, union.} = object
     X86CpuInfo*: CPU_INFORMATION_X86CpuInfo
     OtherCpuInfo*: CPU_INFORMATION_OtherCpuInfo
+
   PCPU_INFORMATION* = ptr CPU_INFORMATION
   MINIDUMP_SYSTEM_INFO_UNION1_STRUCT1* {.pure.} = object
     NumberOfProcessors*: UCHAR
     ProductType*: UCHAR
+
   MINIDUMP_SYSTEM_INFO_UNION1* {.pure, union.} = object
     Reserved0*: USHORT
     struct1*: MINIDUMP_SYSTEM_INFO_UNION1_STRUCT1
+
   MINIDUMP_SYSTEM_INFO_UNION2_STRUCT1* {.pure.} = object
     SuiteMask*: USHORT
     Reserved2*: USHORT
+
   MINIDUMP_SYSTEM_INFO_UNION2* {.pure, union.} = object
     Reserved1*: ULONG32
     struct1*: MINIDUMP_SYSTEM_INFO_UNION2_STRUCT1
+
   MINIDUMP_SYSTEM_INFO* {.pure.} = object
     ProcessorArchitecture*: USHORT
     ProcessorLevel*: USHORT
@@ -382,6 +426,7 @@
     CSDVersionRva*: RVA
     union2*: MINIDUMP_SYSTEM_INFO_UNION2
     Cpu*: CPU_INFORMATION
+
   PMINIDUMP_SYSTEM_INFO* = ptr MINIDUMP_SYSTEM_INFO
   MINIDUMP_THREAD* {.pure.} = object
     ThreadId*: ULONG32
@@ -391,10 +436,12 @@
     Teb*: ULONG64
     Stack*: MINIDUMP_MEMORY_DESCRIPTOR
     ThreadContext*: MINIDUMP_LOCATION_DESCRIPTOR
+
   PMINIDUMP_THREAD* = ptr MINIDUMP_THREAD
   MINIDUMP_THREAD_LIST* {.pure, packed.} = object
     NumberOfThreads*: ULONG32
     Threads*: UncheckedArray[MINIDUMP_THREAD]
+
   PMINIDUMP_THREAD_LIST* = ptr MINIDUMP_THREAD_LIST
   MINIDUMP_THREAD_EX* {.pure.} = object
     ThreadId*: ULONG32
@@ -405,10 +452,12 @@
     Stack*: MINIDUMP_MEMORY_DESCRIPTOR
     ThreadContext*: MINIDUMP_LOCATION_DESCRIPTOR
     BackingStore*: MINIDUMP_MEMORY_DESCRIPTOR
+
   PMINIDUMP_THREAD_EX* = ptr MINIDUMP_THREAD_EX
   MINIDUMP_THREAD_EX_LIST* {.pure, packed.} = object
     NumberOfThreads*: ULONG32
     Threads*: UncheckedArray[MINIDUMP_THREAD_EX]
+
   PMINIDUMP_THREAD_EX_LIST* = ptr MINIDUMP_THREAD_EX_LIST
   MINIDUMP_EXCEPTION* {.pure.} = object
     ExceptionCode*: ULONG32
@@ -418,12 +467,14 @@
     NumberParameters*: ULONG32
     unusedAlignment*: ULONG32
     ExceptionInformation*: array[EXCEPTION_MAXIMUM_PARAMETERS, ULONG64]
+
   PMINIDUMP_EXCEPTION* = ptr MINIDUMP_EXCEPTION
   MINIDUMP_EXCEPTION_STREAM* {.pure.} = object
     ThreadId*: ULONG32
     alignment*: ULONG32
     ExceptionRecord*: MINIDUMP_EXCEPTION
     ThreadContext*: MINIDUMP_LOCATION_DESCRIPTOR
+
   PMINIDUMP_EXCEPTION_STREAM* = ptr MINIDUMP_EXCEPTION_STREAM
   MINIDUMP_MODULE* {.pure, packed.} = object
     BaseOfImage*: ULONG64
@@ -436,30 +487,36 @@
     MiscRecord*: MINIDUMP_LOCATION_DESCRIPTOR
     Reserved0*: ULONG64
     Reserved1*: ULONG64
+
   PMINIDUMP_MODULE* = ptr MINIDUMP_MODULE
   MINIDUMP_MODULE_LIST* {.pure, packed.} = object
     NumberOfModules*: ULONG32
     Modules*: UncheckedArray[MINIDUMP_MODULE]
+
   PMINIDUMP_MODULE_LIST* = ptr MINIDUMP_MODULE_LIST
   MINIDUMP_MEMORY_LIST* {.pure, packed.} = object
     NumberOfMemoryRanges*: ULONG32
     MemoryRanges*: UncheckedArray[MINIDUMP_MEMORY_DESCRIPTOR]
+
   PMINIDUMP_MEMORY_LIST* = ptr MINIDUMP_MEMORY_LIST
   MINIDUMP_MEMORY64_LIST* {.pure.} = object
     NumberOfMemoryRanges*: ULONG64
     BaseRva*: RVA64
     MemoryRanges*: UncheckedArray[MINIDUMP_MEMORY_DESCRIPTOR64]
+
   PMINIDUMP_MEMORY64_LIST* = ptr MINIDUMP_MEMORY64_LIST
   MINIDUMP_EXCEPTION_INFORMATION* {.pure, packed.} = object
     ThreadId*: DWORD
     ExceptionPointers*: PEXCEPTION_POINTERS
     ClientPointers*: WINBOOL
+
   PMINIDUMP_EXCEPTION_INFORMATION* = ptr MINIDUMP_EXCEPTION_INFORMATION
   MINIDUMP_EXCEPTION_INFORMATION64* {.pure, packed.} = object
     ThreadId*: DWORD
     ExceptionRecord*: ULONG64
     ContextRecord*: ULONG64
     ClientPointers*: WINBOOL
+
   PMINIDUMP_EXCEPTION_INFORMATION64* = ptr MINIDUMP_EXCEPTION_INFORMATION64
   MINIDUMP_HANDLE_DESCRIPTOR* {.pure.} = object
     Handle*: ULONG64
@@ -469,12 +526,14 @@
     GrantedAccess*: ULONG32
     HandleCount*: ULONG32
     PointerCount*: ULONG32
+
   PMINIDUMP_HANDLE_DESCRIPTOR* = ptr MINIDUMP_HANDLE_DESCRIPTOR
   MINIDUMP_HANDLE_DATA_STREAM* {.pure.} = object
     SizeOfHeader*: ULONG32
     SizeOfDescriptor*: ULONG32
     NumberOfDescriptors*: ULONG32
     Reserved*: ULONG32
+
   PMINIDUMP_HANDLE_DATA_STREAM* = ptr MINIDUMP_HANDLE_DATA_STREAM
   MINIDUMP_FUNCTION_TABLE_DESCRIPTOR* {.pure.} = object
     MinimumAddress*: ULONG64
@@ -482,6 +541,7 @@
     BaseAddress*: ULONG64
     EntryCount*: ULONG32
     SizeOfAlignPad*: ULONG32
+
   PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR* = ptr MINIDUMP_FUNCTION_TABLE_DESCRIPTOR
   MINIDUMP_FUNCTION_TABLE_STREAM* {.pure.} = object
     SizeOfHeader*: ULONG32
@@ -490,6 +550,7 @@
     SizeOfFunctionEntry*: ULONG32
     NumberOfDescriptors*: ULONG32
     SizeOfAlignPad*: ULONG32
+
   PMINIDUMP_FUNCTION_TABLE_STREAM* = ptr MINIDUMP_FUNCTION_TABLE_STREAM
   MINIDUMP_UNLOADED_MODULE* {.pure.} = object
     BaseOfImage*: ULONG64
@@ -497,11 +558,13 @@
     CheckSum*: ULONG32
     TimeDateStamp*: ULONG32
     ModuleNameRva*: RVA
+
   PMINIDUMP_UNLOADED_MODULE* = ptr MINIDUMP_UNLOADED_MODULE
   MINIDUMP_UNLOADED_MODULE_LIST* {.pure.} = object
     SizeOfHeader*: ULONG32
     SizeOfEntry*: ULONG32
     NumberOfEntries*: ULONG32
+
   PMINIDUMP_UNLOADED_MODULE_LIST* = ptr MINIDUMP_UNLOADED_MODULE_LIST
   MINIDUMP_MISC_INFO* {.pure.} = object
     SizeOfInfo*: ULONG32
@@ -510,19 +573,23 @@
     ProcessCreateTime*: ULONG32
     ProcessUserTime*: ULONG32
     ProcessKernelTime*: ULONG32
+
   PMINIDUMP_MISC_INFO* = ptr MINIDUMP_MISC_INFO
   MINIDUMP_USER_RECORD* {.pure.} = object
     Type*: ULONG32
     Memory*: MINIDUMP_LOCATION_DESCRIPTOR
+
   PMINIDUMP_USER_RECORD* = ptr MINIDUMP_USER_RECORD
   MINIDUMP_USER_STREAM* {.pure.} = object
     Type*: ULONG32
     BufferSize*: ULONG
     Buffer*: PVOID
+
   PMINIDUMP_USER_STREAM* = ptr MINIDUMP_USER_STREAM
   MINIDUMP_USER_STREAM_INFORMATION* {.pure, packed.} = object
     UserStreamCount*: ULONG
     UserStreamArray*: PMINIDUMP_USER_STREAM
+
   PMINIDUMP_USER_STREAM_INFORMATION* = ptr MINIDUMP_USER_STREAM_INFORMATION
   MINIDUMP_THREAD_CALLBACK* {.pure, packed.} = object
     ThreadId*: ULONG
@@ -531,6 +598,7 @@
     SizeOfContext*: ULONG
     StackBase*: ULONG64
     StackEnd*: ULONG64
+
   PMINIDUMP_THREAD_CALLBACK* = ptr MINIDUMP_THREAD_CALLBACK
   MINIDUMP_THREAD_EX_CALLBACK* {.pure, packed.} = object
     ThreadId*: ULONG
@@ -541,9 +609,11 @@
     StackEnd*: ULONG64
     BackingStoreBase*: ULONG64
     BackingStoreEnd*: ULONG64
+
   PMINIDUMP_THREAD_EX_CALLBACK* = ptr MINIDUMP_THREAD_EX_CALLBACK
   MINIDUMP_INCLUDE_THREAD_CALLBACK* {.pure.} = object
     ThreadId*: ULONG
+
   PMINIDUMP_INCLUDE_THREAD_CALLBACK* = ptr MINIDUMP_INCLUDE_THREAD_CALLBACK
   MINIDUMP_MODULE_CALLBACK* {.pure, packed.} = object
     FullPath*: PWCHAR
@@ -556,9 +626,11 @@
     SizeOfCvRecord*: ULONG
     MiscRecord*: PVOID
     SizeOfMiscRecord*: ULONG
+
   PMINIDUMP_MODULE_CALLBACK* = ptr MINIDUMP_MODULE_CALLBACK
   MINIDUMP_INCLUDE_MODULE_CALLBACK* {.pure.} = object
     BaseOfImage*: ULONG64
+
   PMINIDUMP_INCLUDE_MODULE_CALLBACK* = ptr MINIDUMP_INCLUDE_MODULE_CALLBACK
   MINIDUMP_CALLBACK_INPUT_UNION1* {.pure, union.} = object
     Thread*: MINIDUMP_THREAD_CALLBACK
@@ -566,11 +638,13 @@
     Module*: MINIDUMP_MODULE_CALLBACK
     IncludeThread*: MINIDUMP_INCLUDE_THREAD_CALLBACK
     IncludeModule*: MINIDUMP_INCLUDE_MODULE_CALLBACK
+
   MINIDUMP_CALLBACK_INPUT* {.pure, packed.} = object
     ProcessId*: ULONG
     ProcessHandle*: HANDLE
     CallbackType*: ULONG
     union1*: MINIDUMP_CALLBACK_INPUT_UNION1
+
   PMINIDUMP_CALLBACK_INPUT* = ptr MINIDUMP_CALLBACK_INPUT
   MINIDUMP_MEMORY_INFO* {.pure.} = object
     BaseAddress*: ULONG64
@@ -582,6 +656,7 @@
     Protect*: ULONG32
     Type*: ULONG32
     alignment2*: ULONG32
+
   PMINIDUMP_MEMORY_INFO* = ptr MINIDUMP_MEMORY_INFO
   MINIDUMP_MISC_INFO_2* {.pure.} = object
     SizeOfInfo*: ULONG32
@@ -595,18 +670,22 @@
     ProcessorMhzLimit*: ULONG32
     ProcessorMaxIdleState*: ULONG32
     ProcessorCurrentIdleState*: ULONG32
+
   PMINIDUMP_MISC_INFO_2* = ptr MINIDUMP_MISC_INFO_2
   MINIDUMP_MEMORY_INFO_LIST* {.pure.} = object
     SizeOfHeader*: ULONG
     SizeOfEntry*: ULONG
     NumberOfEntries*: ULONG64
+
   PMINIDUMP_MEMORY_INFO_LIST* = ptr MINIDUMP_MEMORY_INFO_LIST
   MINIDUMP_CALLBACK_OUTPUT_UNION1_STRUCT1* {.pure, packed.} = object
     MemoryBase*: ULONG64
     MemorySize*: ULONG
+
   MINIDUMP_CALLBACK_OUTPUT_UNION1_STRUCT2* {.pure, packed.} = object
     CheckCancel*: WINBOOL
     Cancel*: WINBOOL
+
   MINIDUMP_CALLBACK_OUTPUT_UNION1* {.pure, union.} = object
     ModuleWriteFlags*: ULONG
     ThreadWriteFlags*: ULONG
@@ -614,13 +693,16 @@
     struct1*: MINIDUMP_CALLBACK_OUTPUT_UNION1_STRUCT1
     struct2*: MINIDUMP_CALLBACK_OUTPUT_UNION1_STRUCT2
     Handle*: HANDLE
+
   MINIDUMP_CALLBACK_OUTPUT_STRUCT1* {.pure, packed.} = object
     VmRegion*: MINIDUMP_MEMORY_INFO
     Continue*: WINBOOL
+
   MINIDUMP_CALLBACK_OUTPUT* {.pure, packed.} = object
     union1*: MINIDUMP_CALLBACK_OUTPUT_UNION1
     struct1*: MINIDUMP_CALLBACK_OUTPUT_STRUCT1
     Status*: HRESULT
+
   PMINIDUMP_CALLBACK_OUTPUT* = ptr MINIDUMP_CALLBACK_OUTPUT
   MINIDUMP_THREAD_INFO* {.pure.} = object
     ThreadId*: ULONG32
@@ -633,25 +715,34 @@
     UserTime*: ULONG64
     StartAddress*: ULONG64
     Affinity*: ULONG64
+
   PMINIDUMP_THREAD_INFO* = ptr MINIDUMP_THREAD_INFO
   MINIDUMP_THREAD_INFO_LIST* {.pure.} = object
     SizeOfHeader*: ULONG
     SizeOfEntry*: ULONG
     NumberOfEntries*: ULONG
+
   PMINIDUMP_THREAD_INFO_LIST* = ptr MINIDUMP_THREAD_INFO_LIST
   MINIDUMP_HANDLE_OPERATION_LIST* {.pure.} = object
     SizeOfHeader*: ULONG32
     SizeOfEntry*: ULONG32
     NumberOfEntries*: ULONG32
     Reserved*: ULONG32
+
   PMINIDUMP_HANDLE_OPERATION_LIST* = ptr MINIDUMP_HANDLE_OPERATION_LIST
-  MINIDUMP_CALLBACK_ROUTINE* = proc (CallbackParam: PVOID, CallbackInput: PMINIDUMP_CALLBACK_INPUT, CallbackOutput: PMINIDUMP_CALLBACK_OUTPUT): WINBOOL {.stdcall.}
+  MINIDUMP_CALLBACK_ROUTINE* = proc(
+    CallbackParam: PVOID,
+    CallbackInput: PMINIDUMP_CALLBACK_INPUT,
+    CallbackOutput: PMINIDUMP_CALLBACK_OUTPUT,
+  ): WINBOOL {.stdcall.}
   MINIDUMP_CALLBACK_INFORMATION* {.pure.} = object
     CallbackRoutine*: MINIDUMP_CALLBACK_ROUTINE
     CallbackParam*: PVOID
+
   PMINIDUMP_CALLBACK_INFORMATION* = ptr MINIDUMP_CALLBACK_INFORMATION
+
 const
-  IMAGE_SEPARATION* = 64*1024
+  IMAGE_SEPARATION* = 64 * 1024
   bindOutOfMemory* = 0
   bindRvaToVaFailed* = 1
   bindNoRoomInImage* = 2
@@ -971,310 +1062,1415 @@
   SYMSTOREOPT_PASS_IF_EXISTS* = 0x40
   SSRVOPT_RESET* = not ULONG_PTR(0)
 type
-  PIMAGEHLP_STATUS_ROUTINE* = proc (Reason: IMAGEHLP_STATUS_REASON, ImageName: PCSTR, DllName: PCSTR, Va: ULONG_PTR, Parameter: ULONG_PTR): WINBOOL {.stdcall.}
-  PIMAGEHLP_STATUS_ROUTINE32* = proc (Reason: IMAGEHLP_STATUS_REASON, ImageName: PCSTR, DllName: PCSTR, Va: ULONG, Parameter: ULONG_PTR): WINBOOL {.stdcall.}
-  PIMAGEHLP_STATUS_ROUTINE64* = proc (Reason: IMAGEHLP_STATUS_REASON, ImageName: PCSTR, DllName: PCSTR, Va: ULONG64, Parameter: ULONG_PTR): WINBOOL {.stdcall.}
-  DIGEST_FUNCTION* = proc (refdata: DIGEST_HANDLE, pData: PBYTE, dwLength: DWORD): WINBOOL {.stdcall.}
-  PFIND_DEBUG_FILE_CALLBACK* = proc (FileHandle: HANDLE, FileName: PCSTR, CallerData: PVOID): WINBOOL {.stdcall.}
-  PFIND_DEBUG_FILE_CALLBACKW* = proc (FileHandle: HANDLE, FileName: PCWSTR, CallerData: PVOID): WINBOOL {.stdcall.}
-  PFINDFILEINPATHCALLBACK* = proc (filename: PCSTR, context: PVOID): WINBOOL {.stdcall.}
-  PFINDFILEINPATHCALLBACKW* = proc (filename: PCWSTR, context: PVOID): WINBOOL {.stdcall.}
-  PFIND_EXE_FILE_CALLBACK* = proc (FileHandle: HANDLE, FileName: PCSTR, CallerData: PVOID): WINBOOL {.stdcall.}
-  PFIND_EXE_FILE_CALLBACKW* = proc (FileHandle: HANDLE, FileName: PCWSTR, CallerData: PVOID): WINBOOL {.stdcall.}
-  PSYMBOLSERVERPROC* = proc (P1: LPCSTR, P2: LPCSTR, P3: PVOID, P4: DWORD, P5: DWORD, P6: LPSTR): WINBOOL {.stdcall.}
-  PSYMBOLSERVEROPENPROC* = proc (): WINBOOL {.stdcall.}
-  PSYMBOLSERVERCLOSEPROC* = proc (): WINBOOL {.stdcall.}
-  PSYMBOLSERVERSETOPTIONSPROC* = proc (P1: UINT_PTR, P2: ULONG64): WINBOOL {.stdcall.}
-  PSYMBOLSERVERCALLBACKPROC* = proc (action: UINT_PTR, data: ULONG64, context: ULONG64): WINBOOL {.stdcall.}
-  PSYMBOLSERVERGETOPTIONSPROC* = proc (): UINT_PTR {.stdcall.}
-  PSYMBOLSERVERPINGPROC* = proc (P1: LPCSTR): WINBOOL {.stdcall.}
-  PENUMDIRTREE_CALLBACK* = proc (FilePath: LPCSTR, CallerData: PVOID): WINBOOL {.stdcall.}
-  PREAD_PROCESS_MEMORY_ROUTINE64* = proc (hProcess: HANDLE, qwBaseAddress: DWORD64, lpBuffer: PVOID, nSize: DWORD, lpNumberOfBytesRead: LPDWORD): WINBOOL {.stdcall.}
-  PFUNCTION_TABLE_ACCESS_ROUTINE64* = proc (hProcess: HANDLE, AddrBase: DWORD64): PVOID {.stdcall.}
-  PGET_MODULE_BASE_ROUTINE64* = proc (hProcess: HANDLE, Address: DWORD64): DWORD64 {.stdcall.}
-  PTRANSLATE_ADDRESS_ROUTINE64* = proc (hProcess: HANDLE, hThread: HANDLE, lpaddr: LPADDRESS64): DWORD64 {.stdcall.}
-  PSYM_ENUMMODULES_CALLBACK64* = proc (ModuleName: PCSTR, BaseOfDll: DWORD64, UserContext: PVOID): WINBOOL {.stdcall.}
-  PSYM_ENUMMODULES_CALLBACKW64* = proc (ModuleName: PCWSTR, BaseOfDll: DWORD64, UserContext: PVOID): WINBOOL {.stdcall.}
-  PSYM_ENUMSYMBOLS_CALLBACK64* = proc (SymbolName: PCSTR, SymbolAddress: DWORD64, SymbolSize: ULONG, UserContext: PVOID): WINBOOL {.stdcall.}
-  PSYM_ENUMSYMBOLS_CALLBACK64W* = proc (SymbolName: PCWSTR, SymbolAddress: DWORD64, SymbolSize: ULONG, UserContext: PVOID): WINBOOL {.stdcall.}
-  PENUMLOADED_MODULES_CALLBACK64* = proc (ModuleName: PCSTR, ModuleBase: DWORD64, ModuleSize: ULONG, UserContext: PVOID): WINBOOL {.stdcall.}
-  PENUMLOADED_MODULES_CALLBACKW64* = proc (ModuleName: PCWSTR, ModuleBase: DWORD64, ModuleSize: ULONG, UserContext: PVOID): WINBOOL {.stdcall.}
-  PSYMBOL_REGISTERED_CALLBACK64* = proc (hProcess: HANDLE, ActionCode: ULONG, CallbackData: ULONG64, UserContext: ULONG64): WINBOOL {.stdcall.}
-  PSYMBOL_FUNCENTRY_CALLBACK64* = proc (hProcess: HANDLE, AddrBase: ULONG64, UserContext: ULONG64): PVOID {.stdcall.}
-  PSYM_ENUMSOURCEFILES_CALLBACKW* = proc (pSourceFile: PSOURCEFILEW, UserContext: PVOID): WINBOOL {.stdcall.}
-  PSYM_ENUMLINES_CALLBACK* = proc (LineInfo: PSRCCODEINFO, UserContext: PVOID): WINBOOL {.stdcall.}
-  PSYM_ENUMLINES_CALLBACKW* = proc (LineInfo: PSRCCODEINFOW, UserContext: PVOID): WINBOOL {.stdcall.}
-  PSYM_ENUMERATESYMBOLS_CALLBACK* = proc (pSymInfo: PSYMBOL_INFO, SymbolSize: ULONG, UserContext: PVOID): WINBOOL {.stdcall.}
-  PSYM_ENUMERATESYMBOLS_CALLBACKW* = proc (pSymInfo: PSYMBOL_INFOW, SymbolSize: ULONG, UserContext: PVOID): WINBOOL {.stdcall.}
-  PDBGHELP_CREATE_USER_DUMP_CALLBACK* = proc (DataType: DWORD, Data: ptr PVOID, DataLength: LPDWORD, UserData: PVOID): WINBOOL {.stdcall.}
+  PIMAGEHLP_STATUS_ROUTINE* = proc(
+    Reason: IMAGEHLP_STATUS_REASON,
+    ImageName: PCSTR,
+    DllName: PCSTR,
+    Va: ULONG_PTR,
+    Parameter: ULONG_PTR,
+  ): WINBOOL {.stdcall.}
+  PIMAGEHLP_STATUS_ROUTINE32* = proc(
+    Reason: IMAGEHLP_STATUS_REASON,
+    ImageName: PCSTR,
+    DllName: PCSTR,
+    Va: ULONG,
+    Parameter: ULONG_PTR,
+  ): WINBOOL {.stdcall.}
+  PIMAGEHLP_STATUS_ROUTINE64* = proc(
+    Reason: IMAGEHLP_STATUS_REASON,
+    ImageName: PCSTR,
+    DllName: PCSTR,
+    Va: ULONG64,
+    Parameter: ULONG_PTR,
+  ): WINBOOL {.stdcall.}
+  DIGEST_FUNCTION* =
+    proc(refdata: DIGEST_HANDLE, pData: PBYTE, dwLength: DWORD): WINBOOL {.stdcall.}
+  PFIND_DEBUG_FILE_CALLBACK* =
+    proc(FileHandle: HANDLE, FileName: PCSTR, CallerData: PVOID): WINBOOL {.stdcall.}
+  PFIND_DEBUG_FILE_CALLBACKW* =
+    proc(FileHandle: HANDLE, FileName: PCWSTR, CallerData: PVOID): WINBOOL {.stdcall.}
+  PFINDFILEINPATHCALLBACK* = proc(filename: PCSTR, context: PVOID): WINBOOL {.stdcall.}
+  PFINDFILEINPATHCALLBACKW* =
+    proc(filename: PCWSTR, context: PVOID): WINBOOL {.stdcall.}
+  PFIND_EXE_FILE_CALLBACK* =
+    proc(FileHandle: HANDLE, FileName: PCSTR, CallerData: PVOID): WINBOOL {.stdcall.}
+  PFIND_EXE_FILE_CALLBACKW* =
+    proc(FileHandle: HANDLE, FileName: PCWSTR, CallerData: PVOID): WINBOOL {.stdcall.}
+  PSYMBOLSERVERPROC* = proc(
+    P1: LPCSTR, P2: LPCSTR, P3: PVOID, P4: DWORD, P5: DWORD, P6: LPSTR
+  ): WINBOOL {.stdcall.}
+  PSYMBOLSERVEROPENPROC* = proc(): WINBOOL {.stdcall.}
+  PSYMBOLSERVERCLOSEPROC* = proc(): WINBOOL {.stdcall.}
+  PSYMBOLSERVERSETOPTIONSPROC* = proc(P1: UINT_PTR, P2: ULONG64): WINBOOL {.stdcall.}
+  PSYMBOLSERVERCALLBACKPROC* =
+    proc(action: UINT_PTR, data: ULONG64, context: ULONG64): WINBOOL {.stdcall.}
+  PSYMBOLSERVERGETOPTIONSPROC* = proc(): UINT_PTR {.stdcall.}
+  PSYMBOLSERVERPINGPROC* = proc(P1: LPCSTR): WINBOOL {.stdcall.}
+  PENUMDIRTREE_CALLBACK* =
+    proc(FilePath: LPCSTR, CallerData: PVOID): WINBOOL {.stdcall.}
+  PREAD_PROCESS_MEMORY_ROUTINE64* = proc(
+    hProcess: HANDLE,
+    qwBaseAddress: DWORD64,
+    lpBuffer: PVOID,
+    nSize: DWORD,
+    lpNumberOfBytesRead: LPDWORD,
+  ): WINBOOL {.stdcall.}
+  PFUNCTION_TABLE_ACCESS_ROUTINE64* =
+    proc(hProcess: HANDLE, AddrBase: DWORD64): PVOID {.stdcall.}
+  PGET_MODULE_BASE_ROUTINE64* =
+    proc(hProcess: HANDLE, Address: DWORD64): DWORD64 {.stdcall.}
+  PTRANSLATE_ADDRESS_ROUTINE64* =
+    proc(hProcess: HANDLE, hThread: HANDLE, lpaddr: LPADDRESS64): DWORD64 {.stdcall.}
+  PSYM_ENUMMODULES_CALLBACK64* =
+    proc(ModuleName: PCSTR, BaseOfDll: DWORD64, UserContext: PVOID): WINBOOL {.stdcall.}
+  PSYM_ENUMMODULES_CALLBACKW64* = proc(
+    ModuleName: PCWSTR, BaseOfDll: DWORD64, UserContext: PVOID
+  ): WINBOOL {.stdcall.}
+  PSYM_ENUMSYMBOLS_CALLBACK64* = proc(
+    SymbolName: PCSTR, SymbolAddress: DWORD64, SymbolSize: ULONG, UserContext: PVOID
+  ): WINBOOL {.stdcall.}
+  PSYM_ENUMSYMBOLS_CALLBACK64W* = proc(
+    SymbolName: PCWSTR, SymbolAddress: DWORD64, SymbolSize: ULONG, UserContext: PVOID
+  ): WINBOOL {.stdcall.}
+  PENUMLOADED_MODULES_CALLBACK64* = proc(
+    ModuleName: PCSTR, ModuleBase: DWORD64, ModuleSize: ULONG, UserContext: PVOID
+  ): WINBOOL {.stdcall.}
+  PENUMLOADED_MODULES_CALLBACKW64* = proc(
+    ModuleName: PCWSTR, ModuleBase: DWORD64, ModuleSize: ULONG, UserContext: PVOID
+  ): WINBOOL {.stdcall.}
+  PSYMBOL_REGISTERED_CALLBACK64* = proc(
+    hProcess: HANDLE, ActionCode: ULONG, CallbackData: ULONG64, UserContext: ULONG64
+  ): WINBOOL {.stdcall.}
+  PSYMBOL_FUNCENTRY_CALLBACK64* =
+    proc(hProcess: HANDLE, AddrBase: ULONG64, UserContext: ULONG64): PVOID {.stdcall.}
+  PSYM_ENUMSOURCEFILES_CALLBACKW* =
+    proc(pSourceFile: PSOURCEFILEW, UserContext: PVOID): WINBOOL {.stdcall.}
+  PSYM_ENUMLINES_CALLBACK* =
+    proc(LineInfo: PSRCCODEINFO, UserContext: PVOID): WINBOOL {.stdcall.}
+  PSYM_ENUMLINES_CALLBACKW* =
+    proc(LineInfo: PSRCCODEINFOW, UserContext: PVOID): WINBOOL {.stdcall.}
+  PSYM_ENUMERATESYMBOLS_CALLBACK* = proc(
+    pSymInfo: PSYMBOL_INFO, SymbolSize: ULONG, UserContext: PVOID
+  ): WINBOOL {.stdcall.}
+  PSYM_ENUMERATESYMBOLS_CALLBACKW* = proc(
+    pSymInfo: PSYMBOL_INFOW, SymbolSize: ULONG, UserContext: PVOID
+  ): WINBOOL {.stdcall.}
+  PDBGHELP_CREATE_USER_DUMP_CALLBACK* = proc(
+    DataType: DWORD, Data: ptr PVOID, DataLength: LPDWORD, UserData: PVOID
+  ): WINBOOL {.stdcall.}
   TI_FINDCHILDREN_PARAMS* {.pure.} = object
     Count*: ULONG
     Start*: ULONG
     ChildId*: array[1, ULONG]
+
   MINIDUMP_LOCATION_DESCRIPTOR64* {.pure.} = object
     DataSize*: ULONG64
     Rva*: RVA64
-proc BindImage*(ImageName: PCSTR, DllPath: PCSTR, SymbolPath: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc BindImageEx*(Flags: DWORD, ImageName: PCSTR, DllPath: PCSTR, SymbolPath: PCSTR, StatusRoutine: PIMAGEHLP_STATUS_ROUTINE): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc ReBaseImage*(CurrentImageName: PCSTR, SymbolPath: PCSTR, fReBase: WINBOOL, fRebaseSysfileOk: WINBOOL, fGoingDown: WINBOOL, CheckImageSize: ULONG, OldImageSize: ptr ULONG, OldImageBase: ptr ULONG_PTR, NewImageSize: ptr ULONG, NewImageBase: ptr ULONG_PTR, TimeStamp: ULONG): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc ReBaseImage64*(CurrentImageName: PCSTR, SymbolPath: PCSTR, fReBase: WINBOOL, fRebaseSysfileOk: WINBOOL, fGoingDown: WINBOOL, CheckImageSize: ULONG, OldImageSize: ptr ULONG, OldImageBase: ptr ULONG64, NewImageSize: ptr ULONG, NewImageBase: ptr ULONG64, TimeStamp: ULONG): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc GetImageConfigInformation*(LoadedImage: PLOADED_IMAGE, ImageConfigInformation: PIMAGE_LOAD_CONFIG_DIRECTORY): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc GetImageUnusedHeaderBytes*(LoadedImage: PLOADED_IMAGE, SizeUnusedHeaderBytes: PDWORD): DWORD {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc SetImageConfigInformation*(LoadedImage: PLOADED_IMAGE, ImageConfigInformation: PIMAGE_LOAD_CONFIG_DIRECTORY): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc CheckSumMappedFile*(BaseAddress: PVOID, FileLength: DWORD, HeaderSum: PDWORD, CheckSum: PDWORD): PIMAGE_NT_HEADERS {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc MapFileAndCheckSumA*(Filename: PCSTR, HeaderSum: PDWORD, CheckSum: PDWORD): DWORD {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc MapFileAndCheckSumW*(Filename: PCWSTR, HeaderSum: PDWORD, CheckSum: PDWORD): DWORD {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc ImageGetDigestStream*(FileHandle: HANDLE, DigestLevel: DWORD, DigestFunction: DIGEST_FUNCTION, DigestHandle: DIGEST_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc ImageAddCertificate*(FileHandle: HANDLE, Certificate: LPWIN_CERTIFICATE, Index: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc ImageRemoveCertificate*(FileHandle: HANDLE, Index: DWORD): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc ImageEnumerateCertificates*(FileHandle: HANDLE, TypeFilter: WORD, CertificateCount: PDWORD, Indices: PDWORD, IndexCount: DWORD): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc ImageGetCertificateData*(FileHandle: HANDLE, CertificateIndex: DWORD, Certificate: LPWIN_CERTIFICATE, RequiredLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc ImageGetCertificateHeader*(FileHandle: HANDLE, CertificateIndex: DWORD, Certificateheader: LPWIN_CERTIFICATE): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc ImageLoad*(DllName: PCSTR, DllPath: PCSTR): PLOADED_IMAGE {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc ImageUnload*(LoadedImage: PLOADED_IMAGE): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc MapAndLoad*(ImageName: PCSTR, DllPath: PCSTR, LoadedImage: PLOADED_IMAGE, DotDll: WINBOOL, ReadOnly: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc UnMapAndLoad*(LoadedImage: PLOADED_IMAGE): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc TouchFileTimes*(FileHandle: HANDLE, pSystemTime: PSYSTEMTIME): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc SplitSymbols*(ImageName: PSTR, SymbolsPath: PCSTR, SymbolFilePath: PSTR, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc UpdateDebugInfoFile*(ImageFileName: PCSTR, SymbolPath: PCSTR, DebugFilePath: PSTR, NtHeaders: PIMAGE_NT_HEADERS32): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc UpdateDebugInfoFileEx*(ImageFileName: PCSTR, SymbolPath: PCSTR, DebugFilePath: PSTR, NtHeaders: PIMAGE_NT_HEADERS32, OldChecksum: DWORD): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
-proc FindDebugInfoFile*(FileName: PCSTR, SymbolPath: PCSTR, DebugFilePath: PSTR): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc FindDebugInfoFileEx*(FileName: PCSTR, SymbolPath: PCSTR, DebugFilePath: PSTR, Callback: PFIND_DEBUG_FILE_CALLBACK, CallerData: PVOID): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc FindDebugInfoFileExW*(FileName: PCWSTR, SymbolPath: PCWSTR, DebugFilePath: PWSTR, Callback: PFIND_DEBUG_FILE_CALLBACKW, CallerData: PVOID): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFindFileInPath*(hprocess: HANDLE, SearchPath: PCSTR, FileName: PCSTR, id: PVOID, two: DWORD, three: DWORD, flags: DWORD, FoundFile: LPSTR, callback: PFINDFILEINPATHCALLBACK, context: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFindFileInPathW*(hprocess: HANDLE, SearchPath: PCWSTR, FileName: PCWSTR, id: PVOID, two: DWORD, three: DWORD, flags: DWORD, FoundFile: LPSTR, callback: PFINDFILEINPATHCALLBACKW, context: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc FindExecutableImage*(FileName: PCSTR, SymbolPath: PCSTR, ImageFilePath: PSTR): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc FindExecutableImageEx*(FileName: PCSTR, SymbolPath: PCSTR, ImageFilePath: PSTR, Callback: PFIND_EXE_FILE_CALLBACK, CallerData: PVOID): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc FindExecutableImageExW*(FileName: PCWSTR, SymbolPath: PCWSTR, ImageFilePath: PWSTR, Callback: PFIND_EXE_FILE_CALLBACKW, CallerData: PVOID): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc ImageNtHeader*(Base: PVOID): PIMAGE_NT_HEADERS {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc ImageDirectoryEntryToDataEx*(Base: PVOID, MappedAsImage: BOOLEAN, DirectoryEntry: USHORT, Size: PULONG, FoundHeader: ptr PIMAGE_SECTION_HEADER): PVOID {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc ImageDirectoryEntryToData*(Base: PVOID, MappedAsImage: BOOLEAN, DirectoryEntry: USHORT, Size: PULONG): PVOID {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc ImageRvaToSection*(NtHeaders: PIMAGE_NT_HEADERS, Base: PVOID, Rva: ULONG): PIMAGE_SECTION_HEADER {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc ImageRvaToVa*(NtHeaders: PIMAGE_NT_HEADERS, Base: PVOID, Rva: ULONG, LastRvaSection: ptr PIMAGE_SECTION_HEADER): PVOID {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SearchTreeForFile*(RootPath: PSTR, InputPathName: PSTR, OutputPathBuffer: PSTR): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SearchTreeForFileW*(RootPath: PWSTR, InputPathName: PWSTR, OutputPathBuffer: PWSTR): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc EnumDirTree*(hProcess: HANDLE, RootPath: PSTR, InputPathName: PSTR, OutputPathBuffer: PSTR, Callback: PENUMDIRTREE_CALLBACK, CallbackData: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc MakeSureDirectoryPathExists*(DirPath: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc UnDecorateSymbolNameA*(DecoratedName: PCSTR, UnDecoratedName: PSTR, UndecoratedLength: DWORD, Flags: DWORD): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc: "UnDecorateSymbolName".}
-proc UnDecorateSymbolNameW*(DecoratedName: PCWSTR, UnDecoratedName: PWSTR, UndecoratedLength: DWORD, Flags: DWORD): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc StackWalk64*(MachineType: DWORD, hProcess: HANDLE, hThread: HANDLE, StackFrame: LPSTACKFRAME64, ContextRecord: PVOID, ReadMemoryRoutine: PREAD_PROCESS_MEMORY_ROUTINE64, FunctionTableAccessRoutine: PFUNCTION_TABLE_ACCESS_ROUTINE64, GetModuleBaseRoutine: PGET_MODULE_BASE_ROUTINE64, TranslateAddress: PTRANSLATE_ADDRESS_ROUTINE64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc ImagehlpApiVersion*(): LPAPI_VERSION {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc ImagehlpApiVersionEx*(AppVersion: LPAPI_VERSION): LPAPI_VERSION {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc GetTimestampForLoadedLibrary*(Module: HMODULE): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSetParentWindow*(hwnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSetHomeDirectory*(hProcess: HANDLE, dir: PCSTR): PCHAR {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSetHomeDirectoryW*(hProcess: HANDLE, dir: PCWSTR): PCHAR {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetHomeDirectory*(`type`: DWORD, dir: PSTR, size: int): PCHAR {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetHomeDirectoryW*(`type`: DWORD, dir: PWSTR, size: int): PWCHAR {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSetOptions*(SymOptions: DWORD): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc BindImage*(
+  ImageName: PCSTR, DllPath: PCSTR, SymbolPath: PCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc BindImageEx*(
+  Flags: DWORD,
+  ImageName: PCSTR,
+  DllPath: PCSTR,
+  SymbolPath: PCSTR,
+  StatusRoutine: PIMAGEHLP_STATUS_ROUTINE,
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc ReBaseImage*(
+  CurrentImageName: PCSTR,
+  SymbolPath: PCSTR,
+  fReBase: WINBOOL,
+  fRebaseSysfileOk: WINBOOL,
+  fGoingDown: WINBOOL,
+  CheckImageSize: ULONG,
+  OldImageSize: ptr ULONG,
+  OldImageBase: ptr ULONG_PTR,
+  NewImageSize: ptr ULONG,
+  NewImageBase: ptr ULONG_PTR,
+  TimeStamp: ULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc ReBaseImage64*(
+  CurrentImageName: PCSTR,
+  SymbolPath: PCSTR,
+  fReBase: WINBOOL,
+  fRebaseSysfileOk: WINBOOL,
+  fGoingDown: WINBOOL,
+  CheckImageSize: ULONG,
+  OldImageSize: ptr ULONG,
+  OldImageBase: ptr ULONG64,
+  NewImageSize: ptr ULONG,
+  NewImageBase: ptr ULONG64,
+  TimeStamp: ULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc GetImageConfigInformation*(
+  LoadedImage: PLOADED_IMAGE, ImageConfigInformation: PIMAGE_LOAD_CONFIG_DIRECTORY
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc GetImageUnusedHeaderBytes*(
+  LoadedImage: PLOADED_IMAGE, SizeUnusedHeaderBytes: PDWORD
+): DWORD {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc SetImageConfigInformation*(
+  LoadedImage: PLOADED_IMAGE, ImageConfigInformation: PIMAGE_LOAD_CONFIG_DIRECTORY
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc CheckSumMappedFile*(
+  BaseAddress: PVOID, FileLength: DWORD, HeaderSum: PDWORD, CheckSum: PDWORD
+): PIMAGE_NT_HEADERS {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc MapFileAndCheckSumA*(
+  Filename: PCSTR, HeaderSum: PDWORD, CheckSum: PDWORD
+): DWORD {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc MapFileAndCheckSumW*(
+  Filename: PCWSTR, HeaderSum: PDWORD, CheckSum: PDWORD
+): DWORD {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc ImageGetDigestStream*(
+  FileHandle: HANDLE,
+  DigestLevel: DWORD,
+  DigestFunction: DIGEST_FUNCTION,
+  DigestHandle: DIGEST_HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc ImageAddCertificate*(
+  FileHandle: HANDLE, Certificate: LPWIN_CERTIFICATE, Index: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc ImageRemoveCertificate*(
+  FileHandle: HANDLE, Index: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc ImageEnumerateCertificates*(
+  FileHandle: HANDLE,
+  TypeFilter: WORD,
+  CertificateCount: PDWORD,
+  Indices: PDWORD,
+  IndexCount: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc ImageGetCertificateData*(
+  FileHandle: HANDLE,
+  CertificateIndex: DWORD,
+  Certificate: LPWIN_CERTIFICATE,
+  RequiredLength: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc ImageGetCertificateHeader*(
+  FileHandle: HANDLE, CertificateIndex: DWORD, Certificateheader: LPWIN_CERTIFICATE
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc ImageLoad*(
+  DllName: PCSTR, DllPath: PCSTR
+): PLOADED_IMAGE {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc ImageUnload*(
+  LoadedImage: PLOADED_IMAGE
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc MapAndLoad*(
+  ImageName: PCSTR,
+  DllPath: PCSTR,
+  LoadedImage: PLOADED_IMAGE,
+  DotDll: WINBOOL,
+  ReadOnly: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc UnMapAndLoad*(
+  LoadedImage: PLOADED_IMAGE
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc TouchFileTimes*(
+  FileHandle: HANDLE, pSystemTime: PSYSTEMTIME
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc SplitSymbols*(
+  ImageName: PSTR, SymbolsPath: PCSTR, SymbolFilePath: PSTR, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc UpdateDebugInfoFile*(
+  ImageFileName: PCSTR,
+  SymbolPath: PCSTR,
+  DebugFilePath: PSTR,
+  NtHeaders: PIMAGE_NT_HEADERS32,
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc UpdateDebugInfoFileEx*(
+  ImageFileName: PCSTR,
+  SymbolPath: PCSTR,
+  DebugFilePath: PSTR,
+  NtHeaders: PIMAGE_NT_HEADERS32,
+  OldChecksum: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "imagehlp", importc.}
+
+proc FindDebugInfoFile*(
+  FileName: PCSTR, SymbolPath: PCSTR, DebugFilePath: PSTR
+): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc FindDebugInfoFileEx*(
+  FileName: PCSTR,
+  SymbolPath: PCSTR,
+  DebugFilePath: PSTR,
+  Callback: PFIND_DEBUG_FILE_CALLBACK,
+  CallerData: PVOID,
+): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc FindDebugInfoFileExW*(
+  FileName: PCWSTR,
+  SymbolPath: PCWSTR,
+  DebugFilePath: PWSTR,
+  Callback: PFIND_DEBUG_FILE_CALLBACKW,
+  CallerData: PVOID,
+): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFindFileInPath*(
+  hprocess: HANDLE,
+  SearchPath: PCSTR,
+  FileName: PCSTR,
+  id: PVOID,
+  two: DWORD,
+  three: DWORD,
+  flags: DWORD,
+  FoundFile: LPSTR,
+  callback: PFINDFILEINPATHCALLBACK,
+  context: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFindFileInPathW*(
+  hprocess: HANDLE,
+  SearchPath: PCWSTR,
+  FileName: PCWSTR,
+  id: PVOID,
+  two: DWORD,
+  three: DWORD,
+  flags: DWORD,
+  FoundFile: LPSTR,
+  callback: PFINDFILEINPATHCALLBACKW,
+  context: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc FindExecutableImage*(
+  FileName: PCSTR, SymbolPath: PCSTR, ImageFilePath: PSTR
+): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc FindExecutableImageEx*(
+  FileName: PCSTR,
+  SymbolPath: PCSTR,
+  ImageFilePath: PSTR,
+  Callback: PFIND_EXE_FILE_CALLBACK,
+  CallerData: PVOID,
+): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc FindExecutableImageExW*(
+  FileName: PCWSTR,
+  SymbolPath: PCWSTR,
+  ImageFilePath: PWSTR,
+  Callback: PFIND_EXE_FILE_CALLBACKW,
+  CallerData: PVOID,
+): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc ImageNtHeader*(
+  Base: PVOID
+): PIMAGE_NT_HEADERS {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc ImageDirectoryEntryToDataEx*(
+  Base: PVOID,
+  MappedAsImage: BOOLEAN,
+  DirectoryEntry: USHORT,
+  Size: PULONG,
+  FoundHeader: ptr PIMAGE_SECTION_HEADER,
+): PVOID {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc ImageDirectoryEntryToData*(
+  Base: PVOID, MappedAsImage: BOOLEAN, DirectoryEntry: USHORT, Size: PULONG
+): PVOID {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc ImageRvaToSection*(
+  NtHeaders: PIMAGE_NT_HEADERS, Base: PVOID, Rva: ULONG
+): PIMAGE_SECTION_HEADER {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc ImageRvaToVa*(
+  NtHeaders: PIMAGE_NT_HEADERS,
+  Base: PVOID,
+  Rva: ULONG,
+  LastRvaSection: ptr PIMAGE_SECTION_HEADER,
+): PVOID {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SearchTreeForFile*(
+  RootPath: PSTR, InputPathName: PSTR, OutputPathBuffer: PSTR
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SearchTreeForFileW*(
+  RootPath: PWSTR, InputPathName: PWSTR, OutputPathBuffer: PWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc EnumDirTree*(
+  hProcess: HANDLE,
+  RootPath: PSTR,
+  InputPathName: PSTR,
+  OutputPathBuffer: PSTR,
+  Callback: PENUMDIRTREE_CALLBACK,
+  CallbackData: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc MakeSureDirectoryPathExists*(
+  DirPath: PCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc UnDecorateSymbolNameA*(
+  DecoratedName: PCSTR, UnDecoratedName: PSTR, UndecoratedLength: DWORD, Flags: DWORD
+): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc: "UnDecorateSymbolName".}
+
+proc UnDecorateSymbolNameW*(
+  DecoratedName: PCWSTR, UnDecoratedName: PWSTR, UndecoratedLength: DWORD, Flags: DWORD
+): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc StackWalk64*(
+  MachineType: DWORD,
+  hProcess: HANDLE,
+  hThread: HANDLE,
+  StackFrame: LPSTACKFRAME64,
+  ContextRecord: PVOID,
+  ReadMemoryRoutine: PREAD_PROCESS_MEMORY_ROUTINE64,
+  FunctionTableAccessRoutine: PFUNCTION_TABLE_ACCESS_ROUTINE64,
+  GetModuleBaseRoutine: PGET_MODULE_BASE_ROUTINE64,
+  TranslateAddress: PTRANSLATE_ADDRESS_ROUTINE64,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc ImagehlpApiVersion*(): LPAPI_VERSION {.
+  winapi, stdcall, dynlib: "dbghelp", importc
+.}
+
+proc ImagehlpApiVersionEx*(
+  AppVersion: LPAPI_VERSION
+): LPAPI_VERSION {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc GetTimestampForLoadedLibrary*(
+  Module: HMODULE
+): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSetParentWindow*(
+  hwnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSetHomeDirectory*(
+  hProcess: HANDLE, dir: PCSTR
+): PCHAR {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSetHomeDirectoryW*(
+  hProcess: HANDLE, dir: PCWSTR
+): PCHAR {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetHomeDirectory*(
+  `type`: DWORD, dir: PSTR, size: int
+): PCHAR {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetHomeDirectoryW*(
+  `type`: DWORD, dir: PWSTR, size: int
+): PWCHAR {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSetOptions*(
+  SymOptions: DWORD
+): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
 proc SymGetOptions*(): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymCleanup*(hProcess: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymMatchString*(string: PCSTR, expression: PCSTR, fCase: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymMatchStringW*(string: PCWSTR, expression: PCWSTR, fCase: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumSourceFiles*(hProcess: HANDLE, ModBase: ULONG64, Mask: PCSTR, cbSrcFiles: PSYM_ENUMSOURCEFILES_CALLBACK, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumSourceFilesW*(hProcess: HANDLE, ModBase: ULONG64, Mask: PCWSTR, cbSrcFiles: PSYM_ENUMSOURCEFILES_CALLBACKW, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumerateModules64*(hProcess: HANDLE, EnumModulesCallback: PSYM_ENUMMODULES_CALLBACK64, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumerateModulesW64*(hProcess: HANDLE, EnumModulesCallback: PSYM_ENUMMODULES_CALLBACKW64, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumerateSymbols64*(hProcess: HANDLE, BaseOfDll: DWORD64, EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK64, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumerateSymbolsW64*(hProcess: HANDLE, BaseOfDll: DWORD64, EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK64W, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc EnumerateLoadedModulesA64*(hProcess: HANDLE, EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK64, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "EnumerateLoadedModules64".}
-proc EnumerateLoadedModulesW64*(hProcess: HANDLE, EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACKW64, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFunctionTableAccess64*(hProcess: HANDLE, AddrBase: DWORD64): PVOID {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetModuleInfo64*(hProcess: HANDLE, qwAddr: DWORD64, ModuleInfo: PIMAGEHLP_MODULE64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetModuleInfoW64*(hProcess: HANDLE, qwAddr: DWORD64, ModuleInfo: PIMAGEHLP_MODULEW64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetModuleBase64*(hProcess: HANDLE, qwAddr: DWORD64): DWORD64 {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSymNext64*(hProcess: HANDLE, Symbol: PIMAGEHLP_SYMBOL64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSymPrev64*(hProcess: HANDLE, Symbol: PIMAGEHLP_SYMBOL64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumLines*(hProcess: HANDLE, Base: ULONG64, Obj: PCSTR, File: PCSTR, EnumLinesCallback: PSYM_ENUMLINES_CALLBACK, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumLinesW*(hProcess: HANDLE, Base: ULONG64, Obj: PCWSTR, File: PCSTR, EnumLinesCallback: PSYM_ENUMLINES_CALLBACKW, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetLineFromAddr64*(hProcess: HANDLE, qwAddr: DWORD64, pdwDisplacement: PDWORD, Line64: PIMAGEHLP_LINE64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetLineFromAddrW64*(hProcess: HANDLE, qwAddr: DWORD64, pdwDisplacement: PDWORD, Line64: PIMAGEHLP_LINEW64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetLineFromName64*(hProcess: HANDLE, ModuleName: PCSTR, FileName: PCSTR, dwLineNumber: DWORD, plDisplacement: PLONG, Line: PIMAGEHLP_LINE64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetLineFromNameW64*(hProcess: HANDLE, ModuleName: PCWSTR, FileName: PCWSTR, dwLineNumber: DWORD, plDisplacement: PLONG, Line: PIMAGEHLP_LINEW64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetLineNext64*(hProcess: HANDLE, Line: PIMAGEHLP_LINE64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetLineNextW64*(hProcess: HANDLE, Line: PIMAGEHLP_LINEW64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetLinePrev64*(hProcess: HANDLE, Line: PIMAGEHLP_LINE64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetLinePrevW64*(hProcess: HANDLE, Line: PIMAGEHLP_LINEW64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymMatchFileName*(FileName: PCSTR, Match: PCSTR, FileNameStop: ptr PSTR, MatchStop: ptr PSTR): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymMatchFileNameW*(FileName: PCWSTR, Match: PCWSTR, FileNameStop: ptr PWSTR, MatchStop: ptr PWSTR): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymInitialize*(hProcess: HANDLE, UserSearchPath: PCSTR, fInvadeProcess: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymInitializeW*(hProcess: HANDLE, UserSearchPath: PCWSTR, fInvadeProcess: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSearchPath*(hProcess: HANDLE, SearchPath: PSTR, SearchPathLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSearchPathW*(hProcess: HANDLE, SearchPath: PWSTR, SearchPathLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSetSearchPath*(hProcess: HANDLE, SearchPath: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSetSearchPathW*(hProcess: HANDLE, SearchPath: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymLoadModule64*(hProcess: HANDLE, hFile: HANDLE, ImageName: PSTR, ModuleName: PSTR, BaseOfDll: DWORD64, SizeOfDll: DWORD): DWORD64 {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymLoadModuleEx*(hProcess: HANDLE, hFile: HANDLE, ImageName: PCSTR, ModuleName: PCSTR, BaseOfDll: DWORD64, DllSize: DWORD, Data: PMODLOAD_DATA, Flags: DWORD): DWORD64 {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymLoadModuleExW*(hProcess: HANDLE, hFile: HANDLE, ImageName: PCWSTR, ModuleName: PCWSTR, BaseOfDll: DWORD64, DllSize: DWORD, Data: PMODLOAD_DATA, Flags: DWORD): DWORD64 {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymUnloadModule64*(hProcess: HANDLE, BaseOfDll: DWORD64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymUnDName64*(sym: PIMAGEHLP_SYMBOL64, UnDecName: PSTR, UnDecNameLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymRegisterCallback64*(hProcess: HANDLE, CallbackFunction: PSYMBOL_REGISTERED_CALLBACK64, UserContext: ULONG64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymRegisterFunctionEntryCallback64*(hProcess: HANDLE, CallbackFunction: PSYMBOL_FUNCENTRY_CALLBACK64, UserContext: ULONG64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSetContext*(hProcess: HANDLE, StackFrame: PIMAGEHLP_STACK_FRAME, Context: PIMAGEHLP_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFromAddr*(hProcess: HANDLE, Address: DWORD64, Displacement: PDWORD64, Symbol: PSYMBOL_INFO): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFromAddrW*(hProcess: HANDLE, Address: DWORD64, Displacement: PDWORD64, Symbol: PSYMBOL_INFOW): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFromToken*(hProcess: HANDLE, Base: DWORD64, Token: DWORD, Symbol: PSYMBOL_INFO): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFromTokenW*(hProcess: HANDLE, Base: DWORD64, Token: DWORD, Symbol: PSYMBOL_INFOW): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFromName*(hProcess: HANDLE, Name: PCSTR, Symbol: PSYMBOL_INFO): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFromNameW*(hProcess: HANDLE, Name: PCWSTR, Symbol: PSYMBOL_INFOW): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumSymbols*(hProcess: HANDLE, BaseOfDll: ULONG64, Mask: PCSTR, EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACK, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumSymbolsW*(hProcess: HANDLE, BaseOfDll: ULONG64, Mask: PCWSTR, EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACKW, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumSymbolsForAddr*(hProcess: HANDLE, Address: DWORD64, EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACK, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumSymbolsForAddrW*(hProcess: HANDLE, Address: DWORD64, EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACKW, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetTypeInfo*(hProcess: HANDLE, ModBase: DWORD64, TypeId: ULONG, GetType: IMAGEHLP_SYMBOL_TYPE_INFO, pInfo: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumTypes*(hProcess: HANDLE, BaseOfDll: ULONG64, EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACK, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumTypesW*(hProcess: HANDLE, BaseOfDll: ULONG64, EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACKW, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetTypeFromName*(hProcess: HANDLE, BaseOfDll: ULONG64, Name: PCSTR, Symbol: PSYMBOL_INFO): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetTypeFromNameW*(hProcess: HANDLE, BaseOfDll: ULONG64, Name: PCWSTR, Symbol: PSYMBOL_INFOW): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymAddSymbol*(hProcess: HANDLE, BaseOfDll: ULONG64, Name: PCSTR, Address: DWORD64, Size: DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymAddSymbolW*(hProcess: HANDLE, BaseOfDll: ULONG64, Name: PCWSTR, Address: DWORD64, Size: DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymDeleteSymbol*(hProcess: HANDLE, BaseOfDll: ULONG64, Name: PCSTR, Address: DWORD64, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymDeleteSymbolW*(hProcess: HANDLE, BaseOfDll: ULONG64, Name: PCWSTR, Address: DWORD64, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc DbgHelpCreateUserDump*(FileName: LPCSTR, Callback: PDBGHELP_CREATE_USER_DUMP_CALLBACK, UserData: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc DbgHelpCreateUserDumpW*(FileName: LPCWSTR, Callback: PDBGHELP_CREATE_USER_DUMP_CALLBACK, UserData: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSymFromAddr64*(hProcess: HANDLE, qwAddr: DWORD64, pdwDisplacement: PDWORD64, Symbol: PIMAGEHLP_SYMBOL64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSymFromName64*(hProcess: HANDLE, Name: PCSTR, Symbol: PIMAGEHLP_SYMBOL64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc MiniDumpWriteDump*(hProcess: HANDLE, ProcessId: DWORD, hFile: HANDLE, DumpType: MINIDUMP_TYPE, ExceptionParam: PMINIDUMP_EXCEPTION_INFORMATION, UserStreamParam: PMINIDUMP_USER_STREAM_INFORMATION, CallbackParam: PMINIDUMP_CALLBACK_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc MiniDumpReadDumpStream*(BaseOfDump: PVOID, StreamNumber: ULONG, Dir: ptr PMINIDUMP_DIRECTORY, StreamPointer: ptr PVOID, StreamSize: ptr ULONG): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc EnumerateLoadedModulesEx*(hProcess: HANDLE, EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK64, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc EnumerateLoadedModulesExW*(hProcess: HANDLE, EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACKW64, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymAddSourceStream*(hProcess: HANDLE, Base: ULONG64, StreamFile: PCSTR, Buffer: PBYTE, Size: int): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymAddSourceStreamW*(hProcess: HANDLE, Base: ULONG64, StreamFile: PCWSTR, Buffer: PBYTE, Size: int): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumSourceLines*(hProcess: HANDLE, Base: ULONG64, Obj: PCSTR, File: PCSTR, Line: DWORD, Flags: DWORD, EnumLinesCallback: PSYM_ENUMLINES_CALLBACK, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumSourceLinesW*(hProcess: HANDLE, Base: ULONG64, Obj: PCWSTR, File: PCWSTR, Line: DWORD, Flags: DWORD, EnumLinesCallback: PSYM_ENUMLINES_CALLBACKW, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumTypesByName*(hProcess: HANDLE, BaseOfDll: ULONG64, mask: PCSTR, EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACK, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymEnumTypesByNameW*(hProcess: HANDLE, BaseOfDll: ULONG64, mask: PCSTR, EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACKW, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFindDebugInfoFile*(hProcess: HANDLE, FileName: PCSTR, DebugFilePath: PSTR, Callback: PFIND_DEBUG_FILE_CALLBACK, CallerData: PVOID): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFindDebugInfoFileW*(hProcess: HANDLE, FileName: PCWSTR, DebugFilePath: PWSTR, Callback: PFIND_DEBUG_FILE_CALLBACKW, CallerData: PVOID): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFindExecutableImage*(hProcess: HANDLE, FileName: PCSTR, ImageFilePath: PSTR, Callback: PFIND_EXE_FILE_CALLBACK, CallerData: PVOID): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFindExecutableImageW*(hProcess: HANDLE, FileName: PCWSTR, ImageFilePath: PWSTR, Callback: PFIND_EXE_FILE_CALLBACKW, CallerData: PVOID): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFromIndex*(hProcess: HANDLE, BaseOfDll: ULONG64, Index: DWORD, Symbol: PSYMBOL_INFO): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymFromIndexW*(hProcess: HANDLE, BaseOfDll: ULONG64, Index: DWORD, Symbol: PSYMBOL_INFOW): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetScope*(hProcess: HANDLE, BaseOfDll: ULONG64, Index: DWORD, Symbol: PSYMBOL_INFO): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetScopeW*(hProcess: HANDLE, BaseOfDll: ULONG64, Index: DWORD, Symbol: PSYMBOL_INFOW): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSourceFileFromToken*(hProcess: HANDLE, Token: PVOID, Params: PCSTR, FilePath: PSTR, Size: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSourceFileFromTokenW*(hProcess: HANDLE, Token: PVOID, Params: PCWSTR, FilePath: PWSTR, Size: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSourceFileToken*(hProcess: HANDLE, Base: ULONG64, FileSpec: PCSTR, Token: ptr PVOID, Size: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSourceFileTokenW*(hProcess: HANDLE, Base: ULONG64, FileSpec: PCWSTR, Token: ptr PVOID, Size: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSourceFile*(hProcess: HANDLE, Base: ULONG64, Params: PCSTR, FileSpec: PCSTR, FilePath: PSTR, Size: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSourceFileW*(hProcess: HANDLE, Base: ULONG64, Params: PCWSTR, FileSpec: PCWSTR, FilePath: PWSTR, Size: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSourceVarFromToken*(hProcess: HANDLE, Token: PVOID, Params: PCSTR, VarName: PCSTR, Value: PSTR, Size: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSourceVarFromTokenW*(hProcess: HANDLE, Token: PVOID, Params: PCWSTR, VarName: PCWSTR, Value: PWSTR, Size: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSymbolFile*(hProcess: HANDLE, SymPath: PCSTR, ImageFile: PCSTR, Type: DWORD, SymbolFile: PSTR, cSymbolFile: int, DbgFile: PSTR, cDbgFile: int): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymGetSymbolFileW*(hProcess: HANDLE, SymPath: PCWSTR, ImageFile: PCWSTR, Type: DWORD, SymbolFile: PWSTR, cSymbolFile: int, DbgFile: PWSTR, cDbgFile: int): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymNext*(hProcess: HANDLE, Symbol: PSYMBOL_INFO): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymNextW*(hProcess: HANDLE, Symbol: PSYMBOL_INFOW): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymPrev*(hProcess: HANDLE, Symbol: PSYMBOL_INFO): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymPrevW*(hProcess: HANDLE, Symbol: PSYMBOL_INFOW): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymRefreshModuleList*(hProcess: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSearch*(hProcess: HANDLE, BaseOfDll: ULONG64, Index: DWORD, SymTag: DWORD, Mask: PCSTR, Address: DWORD64, EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACK, UserContext: PVOID, Options: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSearchW*(hProcess: HANDLE, BaseOfDll: ULONG64, Index: DWORD, SymTag: DWORD, Mask: PCWSTR, Address: DWORD64, EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACKW, UserContext: PVOID, Options: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSrvGetFileIndexStringA*(hProcess: HANDLE, SrvPath: PCSTR, File: PCSTR, Index: PSTR, Size: int, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetFileIndexString".}
-proc SymSrvGetFileIndexStringW*(hProcess: HANDLE, SrvPath: PCWSTR, File: PCWSTR, Index: PWSTR, Size: int, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSrvGetFileIndexInfoA*(File: PCSTR, Info: PSYMSRV_INDEX_INFO, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetFileIndexInfo".}
-proc SymSrvGetFileIndexInfoW*(File: PCWSTR, Info: PSYMSRV_INDEX_INFOW, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSrvGetFileIndexesA*(File: PCSTR, Id: ptr GUID, Val1: ptr DWORD, Val2: ptr DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetFileIndexes".}
-proc SymSrvGetFileIndexesW*(File: PCWSTR, Id: ptr GUID, Val1: ptr DWORD, Val2: ptr DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSrvGetSupplementA*(hProcess: HANDLE, SymPath: PCSTR, Node: PCSTR, File: PCSTR): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetSupplement".}
-proc SymSrvGetSupplementW*(hProcess: HANDLE, SymPath: PCWSTR, Node: PCWSTR, File: PCWSTR): PCWSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSrvIsStoreA*(hProcess: HANDLE, path: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvIsStore".}
-proc SymSrvIsStoreW*(hProcess: HANDLE, path: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSrvStoreFileA*(hProcess: HANDLE, SrvPath: PCSTR, File: PCSTR, Flags: DWORD): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvStoreFile".}
-proc SymSrvStoreFileW*(hProcess: HANDLE, SrvPath: PCWSTR, File: PCWSTR, Flags: DWORD): PCWSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSrvStoreSupplementA*(hProcess: HANDLE, SymPath: PCTSTR, Node: PCSTR, File: PCSTR, Flags: DWORD): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvStoreSupplement".}
-proc SymSrvStoreSupplementW*(hProcess: HANDLE, SymPath: PCWSTR, Node: PCWSTR, File: PCWSTR, Flags: DWORD): PCWSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc SymSrvDeltaNameA*(hProcess: HANDLE, SymPath: PCSTR, Type: PCSTR, File1: PCSTR, File2: PCSTR): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvDeltaName".}
-proc SymSrvDeltaNameW*(hProcess: HANDLE, SymPath: PCWSTR, Type: PCWSTR, File1: PCWSTR, File2: PCWSTR): PCWSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
-proc `Reserved=`*(self: var MINIDUMP_HEADER, x: ULONG32) {.inline.} = self.union1.Reserved = x
-proc Reserved*(self: MINIDUMP_HEADER): ULONG32 {.inline.} = self.union1.Reserved
-proc Reserved*(self: var MINIDUMP_HEADER): var ULONG32 {.inline.} = self.union1.Reserved
-proc `TimeDateStamp=`*(self: var MINIDUMP_HEADER, x: ULONG32) {.inline.} = self.union1.TimeDateStamp = x
-proc TimeDateStamp*(self: MINIDUMP_HEADER): ULONG32 {.inline.} = self.union1.TimeDateStamp
-proc TimeDateStamp*(self: var MINIDUMP_HEADER): var ULONG32 {.inline.} = self.union1.TimeDateStamp
-proc `Reserved0=`*(self: var MINIDUMP_SYSTEM_INFO, x: USHORT) {.inline.} = self.union1.Reserved0 = x
-proc Reserved0*(self: MINIDUMP_SYSTEM_INFO): USHORT {.inline.} = self.union1.Reserved0
-proc Reserved0*(self: var MINIDUMP_SYSTEM_INFO): var USHORT {.inline.} = self.union1.Reserved0
-proc `NumberOfProcessors=`*(self: var MINIDUMP_SYSTEM_INFO, x: UCHAR) {.inline.} = self.union1.struct1.NumberOfProcessors = x
-proc NumberOfProcessors*(self: MINIDUMP_SYSTEM_INFO): UCHAR {.inline.} = self.union1.struct1.NumberOfProcessors
-proc NumberOfProcessors*(self: var MINIDUMP_SYSTEM_INFO): var UCHAR {.inline.} = self.union1.struct1.NumberOfProcessors
-proc `ProductType=`*(self: var MINIDUMP_SYSTEM_INFO, x: UCHAR) {.inline.} = self.union1.struct1.ProductType = x
-proc ProductType*(self: MINIDUMP_SYSTEM_INFO): UCHAR {.inline.} = self.union1.struct1.ProductType
-proc ProductType*(self: var MINIDUMP_SYSTEM_INFO): var UCHAR {.inline.} = self.union1.struct1.ProductType
-proc `Reserved1=`*(self: var MINIDUMP_SYSTEM_INFO, x: ULONG32) {.inline.} = self.union2.Reserved1 = x
-proc Reserved1*(self: MINIDUMP_SYSTEM_INFO): ULONG32 {.inline.} = self.union2.Reserved1
-proc Reserved1*(self: var MINIDUMP_SYSTEM_INFO): var ULONG32 {.inline.} = self.union2.Reserved1
-proc `SuiteMask=`*(self: var MINIDUMP_SYSTEM_INFO, x: USHORT) {.inline.} = self.union2.struct1.SuiteMask = x
-proc SuiteMask*(self: MINIDUMP_SYSTEM_INFO): USHORT {.inline.} = self.union2.struct1.SuiteMask
-proc SuiteMask*(self: var MINIDUMP_SYSTEM_INFO): var USHORT {.inline.} = self.union2.struct1.SuiteMask
-proc `Reserved2=`*(self: var MINIDUMP_SYSTEM_INFO, x: USHORT) {.inline.} = self.union2.struct1.Reserved2 = x
-proc Reserved2*(self: MINIDUMP_SYSTEM_INFO): USHORT {.inline.} = self.union2.struct1.Reserved2
-proc Reserved2*(self: var MINIDUMP_SYSTEM_INFO): var USHORT {.inline.} = self.union2.struct1.Reserved2
-proc `Thread=`*(self: var MINIDUMP_CALLBACK_INPUT, x: MINIDUMP_THREAD_CALLBACK) {.inline.} = self.union1.Thread = x
-proc Thread*(self: MINIDUMP_CALLBACK_INPUT): MINIDUMP_THREAD_CALLBACK {.inline.} = self.union1.Thread
-proc Thread*(self: var MINIDUMP_CALLBACK_INPUT): var MINIDUMP_THREAD_CALLBACK {.inline.} = self.union1.Thread
-proc `ThreadEx=`*(self: var MINIDUMP_CALLBACK_INPUT, x: MINIDUMP_THREAD_EX_CALLBACK) {.inline.} = self.union1.ThreadEx = x
-proc ThreadEx*(self: MINIDUMP_CALLBACK_INPUT): MINIDUMP_THREAD_EX_CALLBACK {.inline.} = self.union1.ThreadEx
-proc ThreadEx*(self: var MINIDUMP_CALLBACK_INPUT): var MINIDUMP_THREAD_EX_CALLBACK {.inline.} = self.union1.ThreadEx
-proc `Module=`*(self: var MINIDUMP_CALLBACK_INPUT, x: MINIDUMP_MODULE_CALLBACK) {.inline.} = self.union1.Module = x
-proc Module*(self: MINIDUMP_CALLBACK_INPUT): MINIDUMP_MODULE_CALLBACK {.inline.} = self.union1.Module
-proc Module*(self: var MINIDUMP_CALLBACK_INPUT): var MINIDUMP_MODULE_CALLBACK {.inline.} = self.union1.Module
-proc `IncludeThread=`*(self: var MINIDUMP_CALLBACK_INPUT, x: MINIDUMP_INCLUDE_THREAD_CALLBACK) {.inline.} = self.union1.IncludeThread = x
-proc IncludeThread*(self: MINIDUMP_CALLBACK_INPUT): MINIDUMP_INCLUDE_THREAD_CALLBACK {.inline.} = self.union1.IncludeThread
-proc IncludeThread*(self: var MINIDUMP_CALLBACK_INPUT): var MINIDUMP_INCLUDE_THREAD_CALLBACK {.inline.} = self.union1.IncludeThread
-proc `IncludeModule=`*(self: var MINIDUMP_CALLBACK_INPUT, x: MINIDUMP_INCLUDE_MODULE_CALLBACK) {.inline.} = self.union1.IncludeModule = x
-proc IncludeModule*(self: MINIDUMP_CALLBACK_INPUT): MINIDUMP_INCLUDE_MODULE_CALLBACK {.inline.} = self.union1.IncludeModule
-proc IncludeModule*(self: var MINIDUMP_CALLBACK_INPUT): var MINIDUMP_INCLUDE_MODULE_CALLBACK {.inline.} = self.union1.IncludeModule
-proc `ModuleWriteFlags=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: ULONG) {.inline.} = self.union1.ModuleWriteFlags = x
-proc ModuleWriteFlags*(self: MINIDUMP_CALLBACK_OUTPUT): ULONG {.inline.} = self.union1.ModuleWriteFlags
-proc ModuleWriteFlags*(self: var MINIDUMP_CALLBACK_OUTPUT): var ULONG {.inline.} = self.union1.ModuleWriteFlags
-proc `ThreadWriteFlags=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: ULONG) {.inline.} = self.union1.ThreadWriteFlags = x
-proc ThreadWriteFlags*(self: MINIDUMP_CALLBACK_OUTPUT): ULONG {.inline.} = self.union1.ThreadWriteFlags
-proc ThreadWriteFlags*(self: var MINIDUMP_CALLBACK_OUTPUT): var ULONG {.inline.} = self.union1.ThreadWriteFlags
-proc `SecondaryFlags=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: ULONG) {.inline.} = self.union1.SecondaryFlags = x
-proc SecondaryFlags*(self: MINIDUMP_CALLBACK_OUTPUT): ULONG {.inline.} = self.union1.SecondaryFlags
-proc SecondaryFlags*(self: var MINIDUMP_CALLBACK_OUTPUT): var ULONG {.inline.} = self.union1.SecondaryFlags
-proc `MemoryBase=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: ULONG64) {.inline.} = self.union1.struct1.MemoryBase = x
-proc MemoryBase*(self: MINIDUMP_CALLBACK_OUTPUT): ULONG64 {.inline.} = self.union1.struct1.MemoryBase
-proc MemoryBase*(self: var MINIDUMP_CALLBACK_OUTPUT): var ULONG64 {.inline.} = self.union1.struct1.MemoryBase
-proc `MemorySize=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: ULONG) {.inline.} = self.union1.struct1.MemorySize = x
-proc MemorySize*(self: MINIDUMP_CALLBACK_OUTPUT): ULONG {.inline.} = self.union1.struct1.MemorySize
-proc MemorySize*(self: var MINIDUMP_CALLBACK_OUTPUT): var ULONG {.inline.} = self.union1.struct1.MemorySize
-proc `CheckCancel=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: WINBOOL) {.inline.} = self.union1.struct2.CheckCancel = x
-proc CheckCancel*(self: MINIDUMP_CALLBACK_OUTPUT): WINBOOL {.inline.} = self.union1.struct2.CheckCancel
-proc CheckCancel*(self: var MINIDUMP_CALLBACK_OUTPUT): var WINBOOL {.inline.} = self.union1.struct2.CheckCancel
-proc `Cancel=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: WINBOOL) {.inline.} = self.union1.struct2.Cancel = x
-proc Cancel*(self: MINIDUMP_CALLBACK_OUTPUT): WINBOOL {.inline.} = self.union1.struct2.Cancel
-proc Cancel*(self: var MINIDUMP_CALLBACK_OUTPUT): var WINBOOL {.inline.} = self.union1.struct2.Cancel
-proc `VmRegion=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: MINIDUMP_MEMORY_INFO) {.inline.} = self.struct1.VmRegion = x
-proc VmRegion*(self: MINIDUMP_CALLBACK_OUTPUT): MINIDUMP_MEMORY_INFO {.inline.} = self.struct1.VmRegion
-proc VmRegion*(self: var MINIDUMP_CALLBACK_OUTPUT): var MINIDUMP_MEMORY_INFO {.inline.} = self.struct1.VmRegion
-proc `Continue=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: WINBOOL) {.inline.} = self.struct1.Continue = x
-proc Continue*(self: MINIDUMP_CALLBACK_OUTPUT): WINBOOL {.inline.} = self.struct1.Continue
-proc Continue*(self: var MINIDUMP_CALLBACK_OUTPUT): var WINBOOL {.inline.} = self.struct1.Continue
+proc SymCleanup*(
+  hProcess: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymMatchString*(
+  string: PCSTR, expression: PCSTR, fCase: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymMatchStringW*(
+  string: PCWSTR, expression: PCWSTR, fCase: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumSourceFiles*(
+  hProcess: HANDLE,
+  ModBase: ULONG64,
+  Mask: PCSTR,
+  cbSrcFiles: PSYM_ENUMSOURCEFILES_CALLBACK,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumSourceFilesW*(
+  hProcess: HANDLE,
+  ModBase: ULONG64,
+  Mask: PCWSTR,
+  cbSrcFiles: PSYM_ENUMSOURCEFILES_CALLBACKW,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumerateModules64*(
+  hProcess: HANDLE, EnumModulesCallback: PSYM_ENUMMODULES_CALLBACK64, UserContext: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumerateModulesW64*(
+  hProcess: HANDLE,
+  EnumModulesCallback: PSYM_ENUMMODULES_CALLBACKW64,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumerateSymbols64*(
+  hProcess: HANDLE,
+  BaseOfDll: DWORD64,
+  EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK64,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumerateSymbolsW64*(
+  hProcess: HANDLE,
+  BaseOfDll: DWORD64,
+  EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK64W,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc EnumerateLoadedModulesA64*(
+  hProcess: HANDLE,
+  EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK64,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "EnumerateLoadedModules64".}
+
+proc EnumerateLoadedModulesW64*(
+  hProcess: HANDLE,
+  EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACKW64,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFunctionTableAccess64*(
+  hProcess: HANDLE, AddrBase: DWORD64
+): PVOID {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetModuleInfo64*(
+  hProcess: HANDLE, qwAddr: DWORD64, ModuleInfo: PIMAGEHLP_MODULE64
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetModuleInfoW64*(
+  hProcess: HANDLE, qwAddr: DWORD64, ModuleInfo: PIMAGEHLP_MODULEW64
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetModuleBase64*(
+  hProcess: HANDLE, qwAddr: DWORD64
+): DWORD64 {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSymNext64*(
+  hProcess: HANDLE, Symbol: PIMAGEHLP_SYMBOL64
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSymPrev64*(
+  hProcess: HANDLE, Symbol: PIMAGEHLP_SYMBOL64
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumLines*(
+  hProcess: HANDLE,
+  Base: ULONG64,
+  Obj: PCSTR,
+  File: PCSTR,
+  EnumLinesCallback: PSYM_ENUMLINES_CALLBACK,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumLinesW*(
+  hProcess: HANDLE,
+  Base: ULONG64,
+  Obj: PCWSTR,
+  File: PCSTR,
+  EnumLinesCallback: PSYM_ENUMLINES_CALLBACKW,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetLineFromAddr64*(
+  hProcess: HANDLE, qwAddr: DWORD64, pdwDisplacement: PDWORD, Line64: PIMAGEHLP_LINE64
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetLineFromAddrW64*(
+  hProcess: HANDLE, qwAddr: DWORD64, pdwDisplacement: PDWORD, Line64: PIMAGEHLP_LINEW64
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetLineFromName64*(
+  hProcess: HANDLE,
+  ModuleName: PCSTR,
+  FileName: PCSTR,
+  dwLineNumber: DWORD,
+  plDisplacement: PLONG,
+  Line: PIMAGEHLP_LINE64,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetLineFromNameW64*(
+  hProcess: HANDLE,
+  ModuleName: PCWSTR,
+  FileName: PCWSTR,
+  dwLineNumber: DWORD,
+  plDisplacement: PLONG,
+  Line: PIMAGEHLP_LINEW64,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetLineNext64*(
+  hProcess: HANDLE, Line: PIMAGEHLP_LINE64
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetLineNextW64*(
+  hProcess: HANDLE, Line: PIMAGEHLP_LINEW64
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetLinePrev64*(
+  hProcess: HANDLE, Line: PIMAGEHLP_LINE64
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetLinePrevW64*(
+  hProcess: HANDLE, Line: PIMAGEHLP_LINEW64
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymMatchFileName*(
+  FileName: PCSTR, Match: PCSTR, FileNameStop: ptr PSTR, MatchStop: ptr PSTR
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymMatchFileNameW*(
+  FileName: PCWSTR, Match: PCWSTR, FileNameStop: ptr PWSTR, MatchStop: ptr PWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymInitialize*(
+  hProcess: HANDLE, UserSearchPath: PCSTR, fInvadeProcess: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymInitializeW*(
+  hProcess: HANDLE, UserSearchPath: PCWSTR, fInvadeProcess: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSearchPath*(
+  hProcess: HANDLE, SearchPath: PSTR, SearchPathLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSearchPathW*(
+  hProcess: HANDLE, SearchPath: PWSTR, SearchPathLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSetSearchPath*(
+  hProcess: HANDLE, SearchPath: PCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSetSearchPathW*(
+  hProcess: HANDLE, SearchPath: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymLoadModule64*(
+  hProcess: HANDLE,
+  hFile: HANDLE,
+  ImageName: PSTR,
+  ModuleName: PSTR,
+  BaseOfDll: DWORD64,
+  SizeOfDll: DWORD,
+): DWORD64 {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymLoadModuleEx*(
+  hProcess: HANDLE,
+  hFile: HANDLE,
+  ImageName: PCSTR,
+  ModuleName: PCSTR,
+  BaseOfDll: DWORD64,
+  DllSize: DWORD,
+  Data: PMODLOAD_DATA,
+  Flags: DWORD,
+): DWORD64 {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymLoadModuleExW*(
+  hProcess: HANDLE,
+  hFile: HANDLE,
+  ImageName: PCWSTR,
+  ModuleName: PCWSTR,
+  BaseOfDll: DWORD64,
+  DllSize: DWORD,
+  Data: PMODLOAD_DATA,
+  Flags: DWORD,
+): DWORD64 {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymUnloadModule64*(
+  hProcess: HANDLE, BaseOfDll: DWORD64
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymUnDName64*(
+  sym: PIMAGEHLP_SYMBOL64, UnDecName: PSTR, UnDecNameLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymRegisterCallback64*(
+  hProcess: HANDLE,
+  CallbackFunction: PSYMBOL_REGISTERED_CALLBACK64,
+  UserContext: ULONG64,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymRegisterFunctionEntryCallback64*(
+  hProcess: HANDLE, CallbackFunction: PSYMBOL_FUNCENTRY_CALLBACK64, UserContext: ULONG64
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSetContext*(
+  hProcess: HANDLE, StackFrame: PIMAGEHLP_STACK_FRAME, Context: PIMAGEHLP_CONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFromAddr*(
+  hProcess: HANDLE, Address: DWORD64, Displacement: PDWORD64, Symbol: PSYMBOL_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFromAddrW*(
+  hProcess: HANDLE, Address: DWORD64, Displacement: PDWORD64, Symbol: PSYMBOL_INFOW
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFromToken*(
+  hProcess: HANDLE, Base: DWORD64, Token: DWORD, Symbol: PSYMBOL_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFromTokenW*(
+  hProcess: HANDLE, Base: DWORD64, Token: DWORD, Symbol: PSYMBOL_INFOW
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFromName*(
+  hProcess: HANDLE, Name: PCSTR, Symbol: PSYMBOL_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFromNameW*(
+  hProcess: HANDLE, Name: PCWSTR, Symbol: PSYMBOL_INFOW
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumSymbols*(
+  hProcess: HANDLE,
+  BaseOfDll: ULONG64,
+  Mask: PCSTR,
+  EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACK,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumSymbolsW*(
+  hProcess: HANDLE,
+  BaseOfDll: ULONG64,
+  Mask: PCWSTR,
+  EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACKW,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumSymbolsForAddr*(
+  hProcess: HANDLE,
+  Address: DWORD64,
+  EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACK,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumSymbolsForAddrW*(
+  hProcess: HANDLE,
+  Address: DWORD64,
+  EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACKW,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetTypeInfo*(
+  hProcess: HANDLE,
+  ModBase: DWORD64,
+  TypeId: ULONG,
+  GetType: IMAGEHLP_SYMBOL_TYPE_INFO,
+  pInfo: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumTypes*(
+  hProcess: HANDLE,
+  BaseOfDll: ULONG64,
+  EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACK,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumTypesW*(
+  hProcess: HANDLE,
+  BaseOfDll: ULONG64,
+  EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACKW,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetTypeFromName*(
+  hProcess: HANDLE, BaseOfDll: ULONG64, Name: PCSTR, Symbol: PSYMBOL_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetTypeFromNameW*(
+  hProcess: HANDLE, BaseOfDll: ULONG64, Name: PCWSTR, Symbol: PSYMBOL_INFOW
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymAddSymbol*(
+  hProcess: HANDLE,
+  BaseOfDll: ULONG64,
+  Name: PCSTR,
+  Address: DWORD64,
+  Size: DWORD,
+  Flags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymAddSymbolW*(
+  hProcess: HANDLE,
+  BaseOfDll: ULONG64,
+  Name: PCWSTR,
+  Address: DWORD64,
+  Size: DWORD,
+  Flags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymDeleteSymbol*(
+  hProcess: HANDLE, BaseOfDll: ULONG64, Name: PCSTR, Address: DWORD64, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymDeleteSymbolW*(
+  hProcess: HANDLE, BaseOfDll: ULONG64, Name: PCWSTR, Address: DWORD64, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc DbgHelpCreateUserDump*(
+  FileName: LPCSTR, Callback: PDBGHELP_CREATE_USER_DUMP_CALLBACK, UserData: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc DbgHelpCreateUserDumpW*(
+  FileName: LPCWSTR, Callback: PDBGHELP_CREATE_USER_DUMP_CALLBACK, UserData: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSymFromAddr64*(
+  hProcess: HANDLE,
+  qwAddr: DWORD64,
+  pdwDisplacement: PDWORD64,
+  Symbol: PIMAGEHLP_SYMBOL64,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSymFromName64*(
+  hProcess: HANDLE, Name: PCSTR, Symbol: PIMAGEHLP_SYMBOL64
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc MiniDumpWriteDump*(
+  hProcess: HANDLE,
+  ProcessId: DWORD,
+  hFile: HANDLE,
+  DumpType: MINIDUMP_TYPE,
+  ExceptionParam: PMINIDUMP_EXCEPTION_INFORMATION,
+  UserStreamParam: PMINIDUMP_USER_STREAM_INFORMATION,
+  CallbackParam: PMINIDUMP_CALLBACK_INFORMATION,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc MiniDumpReadDumpStream*(
+  BaseOfDump: PVOID,
+  StreamNumber: ULONG,
+  Dir: ptr PMINIDUMP_DIRECTORY,
+  StreamPointer: ptr PVOID,
+  StreamSize: ptr ULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc EnumerateLoadedModulesEx*(
+  hProcess: HANDLE,
+  EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK64,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc EnumerateLoadedModulesExW*(
+  hProcess: HANDLE,
+  EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACKW64,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymAddSourceStream*(
+  hProcess: HANDLE, Base: ULONG64, StreamFile: PCSTR, Buffer: PBYTE, Size: int
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymAddSourceStreamW*(
+  hProcess: HANDLE, Base: ULONG64, StreamFile: PCWSTR, Buffer: PBYTE, Size: int
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumSourceLines*(
+  hProcess: HANDLE,
+  Base: ULONG64,
+  Obj: PCSTR,
+  File: PCSTR,
+  Line: DWORD,
+  Flags: DWORD,
+  EnumLinesCallback: PSYM_ENUMLINES_CALLBACK,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumSourceLinesW*(
+  hProcess: HANDLE,
+  Base: ULONG64,
+  Obj: PCWSTR,
+  File: PCWSTR,
+  Line: DWORD,
+  Flags: DWORD,
+  EnumLinesCallback: PSYM_ENUMLINES_CALLBACKW,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumTypesByName*(
+  hProcess: HANDLE,
+  BaseOfDll: ULONG64,
+  mask: PCSTR,
+  EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACK,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymEnumTypesByNameW*(
+  hProcess: HANDLE,
+  BaseOfDll: ULONG64,
+  mask: PCSTR,
+  EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACKW,
+  UserContext: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFindDebugInfoFile*(
+  hProcess: HANDLE,
+  FileName: PCSTR,
+  DebugFilePath: PSTR,
+  Callback: PFIND_DEBUG_FILE_CALLBACK,
+  CallerData: PVOID,
+): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFindDebugInfoFileW*(
+  hProcess: HANDLE,
+  FileName: PCWSTR,
+  DebugFilePath: PWSTR,
+  Callback: PFIND_DEBUG_FILE_CALLBACKW,
+  CallerData: PVOID,
+): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFindExecutableImage*(
+  hProcess: HANDLE,
+  FileName: PCSTR,
+  ImageFilePath: PSTR,
+  Callback: PFIND_EXE_FILE_CALLBACK,
+  CallerData: PVOID,
+): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFindExecutableImageW*(
+  hProcess: HANDLE,
+  FileName: PCWSTR,
+  ImageFilePath: PWSTR,
+  Callback: PFIND_EXE_FILE_CALLBACKW,
+  CallerData: PVOID,
+): HANDLE {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFromIndex*(
+  hProcess: HANDLE, BaseOfDll: ULONG64, Index: DWORD, Symbol: PSYMBOL_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymFromIndexW*(
+  hProcess: HANDLE, BaseOfDll: ULONG64, Index: DWORD, Symbol: PSYMBOL_INFOW
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetScope*(
+  hProcess: HANDLE, BaseOfDll: ULONG64, Index: DWORD, Symbol: PSYMBOL_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetScopeW*(
+  hProcess: HANDLE, BaseOfDll: ULONG64, Index: DWORD, Symbol: PSYMBOL_INFOW
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSourceFileFromToken*(
+  hProcess: HANDLE, Token: PVOID, Params: PCSTR, FilePath: PSTR, Size: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSourceFileFromTokenW*(
+  hProcess: HANDLE, Token: PVOID, Params: PCWSTR, FilePath: PWSTR, Size: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSourceFileToken*(
+  hProcess: HANDLE, Base: ULONG64, FileSpec: PCSTR, Token: ptr PVOID, Size: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSourceFileTokenW*(
+  hProcess: HANDLE, Base: ULONG64, FileSpec: PCWSTR, Token: ptr PVOID, Size: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSourceFile*(
+  hProcess: HANDLE,
+  Base: ULONG64,
+  Params: PCSTR,
+  FileSpec: PCSTR,
+  FilePath: PSTR,
+  Size: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSourceFileW*(
+  hProcess: HANDLE,
+  Base: ULONG64,
+  Params: PCWSTR,
+  FileSpec: PCWSTR,
+  FilePath: PWSTR,
+  Size: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSourceVarFromToken*(
+  hProcess: HANDLE,
+  Token: PVOID,
+  Params: PCSTR,
+  VarName: PCSTR,
+  Value: PSTR,
+  Size: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSourceVarFromTokenW*(
+  hProcess: HANDLE,
+  Token: PVOID,
+  Params: PCWSTR,
+  VarName: PCWSTR,
+  Value: PWSTR,
+  Size: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSymbolFile*(
+  hProcess: HANDLE,
+  SymPath: PCSTR,
+  ImageFile: PCSTR,
+  Type: DWORD,
+  SymbolFile: PSTR,
+  cSymbolFile: int,
+  DbgFile: PSTR,
+  cDbgFile: int,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymGetSymbolFileW*(
+  hProcess: HANDLE,
+  SymPath: PCWSTR,
+  ImageFile: PCWSTR,
+  Type: DWORD,
+  SymbolFile: PWSTR,
+  cSymbolFile: int,
+  DbgFile: PWSTR,
+  cDbgFile: int,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymNext*(
+  hProcess: HANDLE, Symbol: PSYMBOL_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymNextW*(
+  hProcess: HANDLE, Symbol: PSYMBOL_INFOW
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymPrev*(
+  hProcess: HANDLE, Symbol: PSYMBOL_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymPrevW*(
+  hProcess: HANDLE, Symbol: PSYMBOL_INFOW
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymRefreshModuleList*(
+  hProcess: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSearch*(
+  hProcess: HANDLE,
+  BaseOfDll: ULONG64,
+  Index: DWORD,
+  SymTag: DWORD,
+  Mask: PCSTR,
+  Address: DWORD64,
+  EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACK,
+  UserContext: PVOID,
+  Options: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSearchW*(
+  hProcess: HANDLE,
+  BaseOfDll: ULONG64,
+  Index: DWORD,
+  SymTag: DWORD,
+  Mask: PCWSTR,
+  Address: DWORD64,
+  EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACKW,
+  UserContext: PVOID,
+  Options: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSrvGetFileIndexStringA*(
+  hProcess: HANDLE, SrvPath: PCSTR, File: PCSTR, Index: PSTR, Size: int, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetFileIndexString".}
+
+proc SymSrvGetFileIndexStringW*(
+  hProcess: HANDLE, SrvPath: PCWSTR, File: PCWSTR, Index: PWSTR, Size: int, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSrvGetFileIndexInfoA*(
+  File: PCSTR, Info: PSYMSRV_INDEX_INFO, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetFileIndexInfo".}
+
+proc SymSrvGetFileIndexInfoW*(
+  File: PCWSTR, Info: PSYMSRV_INDEX_INFOW, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSrvGetFileIndexesA*(
+  File: PCSTR, Id: ptr GUID, Val1: ptr DWORD, Val2: ptr DWORD, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetFileIndexes".}
+
+proc SymSrvGetFileIndexesW*(
+  File: PCWSTR, Id: ptr GUID, Val1: ptr DWORD, Val2: ptr DWORD, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSrvGetSupplementA*(
+  hProcess: HANDLE, SymPath: PCSTR, Node: PCSTR, File: PCSTR
+): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetSupplement".}
+
+proc SymSrvGetSupplementW*(
+  hProcess: HANDLE, SymPath: PCWSTR, Node: PCWSTR, File: PCWSTR
+): PCWSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSrvIsStoreA*(
+  hProcess: HANDLE, path: PCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvIsStore".}
+
+proc SymSrvIsStoreW*(
+  hProcess: HANDLE, path: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSrvStoreFileA*(
+  hProcess: HANDLE, SrvPath: PCSTR, File: PCSTR, Flags: DWORD
+): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvStoreFile".}
+
+proc SymSrvStoreFileW*(
+  hProcess: HANDLE, SrvPath: PCWSTR, File: PCWSTR, Flags: DWORD
+): PCWSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSrvStoreSupplementA*(
+  hProcess: HANDLE, SymPath: PCTSTR, Node: PCSTR, File: PCSTR, Flags: DWORD
+): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvStoreSupplement".}
+
+proc SymSrvStoreSupplementW*(
+  hProcess: HANDLE, SymPath: PCWSTR, Node: PCWSTR, File: PCWSTR, Flags: DWORD
+): PCWSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc SymSrvDeltaNameA*(
+  hProcess: HANDLE, SymPath: PCSTR, Type: PCSTR, File1: PCSTR, File2: PCSTR
+): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvDeltaName".}
+
+proc SymSrvDeltaNameW*(
+  hProcess: HANDLE, SymPath: PCWSTR, Type: PCWSTR, File1: PCWSTR, File2: PCWSTR
+): PCWSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+proc `Reserved=`*(self: var MINIDUMP_HEADER, x: ULONG32) {.inline.} =
+  self.union1.Reserved = x
+
+proc Reserved*(self: MINIDUMP_HEADER): ULONG32 {.inline.} =
+  self.union1.Reserved
+
+proc Reserved*(self: var MINIDUMP_HEADER): var ULONG32 {.inline.} =
+  self.union1.Reserved
+
+proc `TimeDateStamp=`*(self: var MINIDUMP_HEADER, x: ULONG32) {.inline.} =
+  self.union1.TimeDateStamp = x
+
+proc TimeDateStamp*(self: MINIDUMP_HEADER): ULONG32 {.inline.} =
+  self.union1.TimeDateStamp
+
+proc TimeDateStamp*(self: var MINIDUMP_HEADER): var ULONG32 {.inline.} =
+  self.union1.TimeDateStamp
+
+proc `Reserved0=`*(self: var MINIDUMP_SYSTEM_INFO, x: USHORT) {.inline.} =
+  self.union1.Reserved0 = x
+
+proc Reserved0*(self: MINIDUMP_SYSTEM_INFO): USHORT {.inline.} =
+  self.union1.Reserved0
+
+proc Reserved0*(self: var MINIDUMP_SYSTEM_INFO): var USHORT {.inline.} =
+  self.union1.Reserved0
+
+proc `NumberOfProcessors=`*(self: var MINIDUMP_SYSTEM_INFO, x: UCHAR) {.inline.} =
+  self.union1.struct1.NumberOfProcessors = x
+
+proc NumberOfProcessors*(self: MINIDUMP_SYSTEM_INFO): UCHAR {.inline.} =
+  self.union1.struct1.NumberOfProcessors
+
+proc NumberOfProcessors*(self: var MINIDUMP_SYSTEM_INFO): var UCHAR {.inline.} =
+  self.union1.struct1.NumberOfProcessors
+
+proc `ProductType=`*(self: var MINIDUMP_SYSTEM_INFO, x: UCHAR) {.inline.} =
+  self.union1.struct1.ProductType = x
+
+proc ProductType*(self: MINIDUMP_SYSTEM_INFO): UCHAR {.inline.} =
+  self.union1.struct1.ProductType
+
+proc ProductType*(self: var MINIDUMP_SYSTEM_INFO): var UCHAR {.inline.} =
+  self.union1.struct1.ProductType
+
+proc `Reserved1=`*(self: var MINIDUMP_SYSTEM_INFO, x: ULONG32) {.inline.} =
+  self.union2.Reserved1 = x
+
+proc Reserved1*(self: MINIDUMP_SYSTEM_INFO): ULONG32 {.inline.} =
+  self.union2.Reserved1
+
+proc Reserved1*(self: var MINIDUMP_SYSTEM_INFO): var ULONG32 {.inline.} =
+  self.union2.Reserved1
+
+proc `SuiteMask=`*(self: var MINIDUMP_SYSTEM_INFO, x: USHORT) {.inline.} =
+  self.union2.struct1.SuiteMask = x
+
+proc SuiteMask*(self: MINIDUMP_SYSTEM_INFO): USHORT {.inline.} =
+  self.union2.struct1.SuiteMask
+
+proc SuiteMask*(self: var MINIDUMP_SYSTEM_INFO): var USHORT {.inline.} =
+  self.union2.struct1.SuiteMask
+
+proc `Reserved2=`*(self: var MINIDUMP_SYSTEM_INFO, x: USHORT) {.inline.} =
+  self.union2.struct1.Reserved2 = x
+
+proc Reserved2*(self: MINIDUMP_SYSTEM_INFO): USHORT {.inline.} =
+  self.union2.struct1.Reserved2
+
+proc Reserved2*(self: var MINIDUMP_SYSTEM_INFO): var USHORT {.inline.} =
+  self.union2.struct1.Reserved2
+
+proc `Thread=`*(
+    self: var MINIDUMP_CALLBACK_INPUT, x: MINIDUMP_THREAD_CALLBACK
+) {.inline.} =
+  self.union1.Thread = x
+
+proc Thread*(self: MINIDUMP_CALLBACK_INPUT): MINIDUMP_THREAD_CALLBACK {.inline.} =
+  self.union1.Thread
+
+proc Thread*(
+    self: var MINIDUMP_CALLBACK_INPUT
+): var MINIDUMP_THREAD_CALLBACK {.inline.} =
+  self.union1.Thread
+
+proc `ThreadEx=`*(
+    self: var MINIDUMP_CALLBACK_INPUT, x: MINIDUMP_THREAD_EX_CALLBACK
+) {.inline.} =
+  self.union1.ThreadEx = x
+
+proc ThreadEx*(self: MINIDUMP_CALLBACK_INPUT): MINIDUMP_THREAD_EX_CALLBACK {.inline.} =
+  self.union1.ThreadEx
+
+proc ThreadEx*(
+    self: var MINIDUMP_CALLBACK_INPUT
+): var MINIDUMP_THREAD_EX_CALLBACK {.inline.} =
+  self.union1.ThreadEx
+
+proc `Module=`*(
+    self: var MINIDUMP_CALLBACK_INPUT, x: MINIDUMP_MODULE_CALLBACK
+) {.inline.} =
+  self.union1.Module = x
+
+proc Module*(self: MINIDUMP_CALLBACK_INPUT): MINIDUMP_MODULE_CALLBACK {.inline.} =
+  self.union1.Module
+
+proc Module*(
+    self: var MINIDUMP_CALLBACK_INPUT
+): var MINIDUMP_MODULE_CALLBACK {.inline.} =
+  self.union1.Module
+
+proc `IncludeThread=`*(
+    self: var MINIDUMP_CALLBACK_INPUT, x: MINIDUMP_INCLUDE_THREAD_CALLBACK
+) {.inline.} =
+  self.union1.IncludeThread = x
+
+proc IncludeThread*(
+    self: MINIDUMP_CALLBACK_INPUT
+): MINIDUMP_INCLUDE_THREAD_CALLBACK {.inline.} =
+  self.union1.IncludeThread
+
+proc IncludeThread*(
+    self: var MINIDUMP_CALLBACK_INPUT
+): var MINIDUMP_INCLUDE_THREAD_CALLBACK {.inline.} =
+  self.union1.IncludeThread
+
+proc `IncludeModule=`*(
+    self: var MINIDUMP_CALLBACK_INPUT, x: MINIDUMP_INCLUDE_MODULE_CALLBACK
+) {.inline.} =
+  self.union1.IncludeModule = x
+
+proc IncludeModule*(
+    self: MINIDUMP_CALLBACK_INPUT
+): MINIDUMP_INCLUDE_MODULE_CALLBACK {.inline.} =
+  self.union1.IncludeModule
+
+proc IncludeModule*(
+    self: var MINIDUMP_CALLBACK_INPUT
+): var MINIDUMP_INCLUDE_MODULE_CALLBACK {.inline.} =
+  self.union1.IncludeModule
+
+proc `ModuleWriteFlags=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: ULONG) {.inline.} =
+  self.union1.ModuleWriteFlags = x
+
+proc ModuleWriteFlags*(self: MINIDUMP_CALLBACK_OUTPUT): ULONG {.inline.} =
+  self.union1.ModuleWriteFlags
+
+proc ModuleWriteFlags*(self: var MINIDUMP_CALLBACK_OUTPUT): var ULONG {.inline.} =
+  self.union1.ModuleWriteFlags
+
+proc `ThreadWriteFlags=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: ULONG) {.inline.} =
+  self.union1.ThreadWriteFlags = x
+
+proc ThreadWriteFlags*(self: MINIDUMP_CALLBACK_OUTPUT): ULONG {.inline.} =
+  self.union1.ThreadWriteFlags
+
+proc ThreadWriteFlags*(self: var MINIDUMP_CALLBACK_OUTPUT): var ULONG {.inline.} =
+  self.union1.ThreadWriteFlags
+
+proc `SecondaryFlags=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: ULONG) {.inline.} =
+  self.union1.SecondaryFlags = x
+
+proc SecondaryFlags*(self: MINIDUMP_CALLBACK_OUTPUT): ULONG {.inline.} =
+  self.union1.SecondaryFlags
+
+proc SecondaryFlags*(self: var MINIDUMP_CALLBACK_OUTPUT): var ULONG {.inline.} =
+  self.union1.SecondaryFlags
+
+proc `MemoryBase=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: ULONG64) {.inline.} =
+  self.union1.struct1.MemoryBase = x
+
+proc MemoryBase*(self: MINIDUMP_CALLBACK_OUTPUT): ULONG64 {.inline.} =
+  self.union1.struct1.MemoryBase
+
+proc MemoryBase*(self: var MINIDUMP_CALLBACK_OUTPUT): var ULONG64 {.inline.} =
+  self.union1.struct1.MemoryBase
+
+proc `MemorySize=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: ULONG) {.inline.} =
+  self.union1.struct1.MemorySize = x
+
+proc MemorySize*(self: MINIDUMP_CALLBACK_OUTPUT): ULONG {.inline.} =
+  self.union1.struct1.MemorySize
+
+proc MemorySize*(self: var MINIDUMP_CALLBACK_OUTPUT): var ULONG {.inline.} =
+  self.union1.struct1.MemorySize
+
+proc `CheckCancel=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: WINBOOL) {.inline.} =
+  self.union1.struct2.CheckCancel = x
+
+proc CheckCancel*(self: MINIDUMP_CALLBACK_OUTPUT): WINBOOL {.inline.} =
+  self.union1.struct2.CheckCancel
+
+proc CheckCancel*(self: var MINIDUMP_CALLBACK_OUTPUT): var WINBOOL {.inline.} =
+  self.union1.struct2.CheckCancel
+
+proc `Cancel=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: WINBOOL) {.inline.} =
+  self.union1.struct2.Cancel = x
+
+proc Cancel*(self: MINIDUMP_CALLBACK_OUTPUT): WINBOOL {.inline.} =
+  self.union1.struct2.Cancel
+
+proc Cancel*(self: var MINIDUMP_CALLBACK_OUTPUT): var WINBOOL {.inline.} =
+  self.union1.struct2.Cancel
+
+proc `VmRegion=`*(
+    self: var MINIDUMP_CALLBACK_OUTPUT, x: MINIDUMP_MEMORY_INFO
+) {.inline.} =
+  self.struct1.VmRegion = x
+
+proc VmRegion*(self: MINIDUMP_CALLBACK_OUTPUT): MINIDUMP_MEMORY_INFO {.inline.} =
+  self.struct1.VmRegion
+
+proc VmRegion*(
+    self: var MINIDUMP_CALLBACK_OUTPUT
+): var MINIDUMP_MEMORY_INFO {.inline.} =
+  self.struct1.VmRegion
+
+proc `Continue=`*(self: var MINIDUMP_CALLBACK_OUTPUT, x: WINBOOL) {.inline.} =
+  self.struct1.Continue = x
+
+proc Continue*(self: MINIDUMP_CALLBACK_OUTPUT): WINBOOL {.inline.} =
+  self.struct1.Continue
+
+proc Continue*(self: var MINIDUMP_CALLBACK_OUTPUT): var WINBOOL {.inline.} =
+  self.struct1.Continue
+
 when winimUnicode:
-  proc UnDecorateSymbolName*(DecoratedName: PCSTR, UnDecoratedName: PSTR, UndecoratedLength: DWORD, Flags: DWORD): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc: "UnDecorateSymbolNameW".}
-  proc EnumerateLoadedModules64*(hProcess: HANDLE, EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK64, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "EnumerateLoadedModulesW64".}
-  proc SymSrvGetFileIndexString*(hProcess: HANDLE, SrvPath: PCSTR, File: PCSTR, Index: PSTR, Size: int, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetFileIndexStringW".}
-  proc SymSrvGetFileIndexInfo*(File: PCSTR, Info: PSYMSRV_INDEX_INFO, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetFileIndexInfoW".}
-  proc SymSrvGetFileIndexes*(File: PCSTR, Id: ptr GUID, Val1: ptr DWORD, Val2: ptr DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetFileIndexesW".}
-  proc SymSrvGetSupplement*(hProcess: HANDLE, SymPath: PCSTR, Node: PCSTR, File: PCSTR): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetSupplementW".}
-  proc SymSrvIsStore*(hProcess: HANDLE, path: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvIsStoreW".}
-  proc SymSrvStoreFile*(hProcess: HANDLE, SrvPath: PCSTR, File: PCSTR, Flags: DWORD): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvStoreFileW".}
-  proc SymSrvStoreSupplement*(hProcess: HANDLE, SymPath: PCTSTR, Node: PCSTR, File: PCSTR, Flags: DWORD): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvStoreSupplementW".}
-  proc SymSrvDeltaName*(hProcess: HANDLE, SymPath: PCSTR, Type: PCSTR, File1: PCSTR, File2: PCSTR): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvDeltaNameW".}
-  proc MapFileAndCheckSum*(Filename: PCWSTR, HeaderSum: PDWORD, CheckSum: PDWORD): DWORD {.winapi, stdcall, dynlib: "imagehlp", importc: "MapFileAndCheckSumW".}
+  proc UnDecorateSymbolName*(
+    DecoratedName: PCSTR, UnDecoratedName: PSTR, UndecoratedLength: DWORD, Flags: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc: "UnDecorateSymbolNameW".}
+
+  proc EnumerateLoadedModules64*(
+    hProcess: HANDLE,
+    EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK64,
+    UserContext: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "dbghelp", importc: "EnumerateLoadedModulesW64"
+  .}
+
+  proc SymSrvGetFileIndexString*(
+    hProcess: HANDLE, SrvPath: PCSTR, File: PCSTR, Index: PSTR, Size: int, Flags: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetFileIndexStringW"
+  .}
+
+  proc SymSrvGetFileIndexInfo*(
+    File: PCSTR, Info: PSYMSRV_INDEX_INFO, Flags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetFileIndexInfoW".}
+
+  proc SymSrvGetFileIndexes*(
+    File: PCSTR, Id: ptr GUID, Val1: ptr DWORD, Val2: ptr DWORD, Flags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetFileIndexesW".}
+
+  proc SymSrvGetSupplement*(
+    hProcess: HANDLE, SymPath: PCSTR, Node: PCSTR, File: PCSTR
+  ): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvGetSupplementW".}
+
+  proc SymSrvIsStore*(
+    hProcess: HANDLE, path: PCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvIsStoreW".}
+
+  proc SymSrvStoreFile*(
+    hProcess: HANDLE, SrvPath: PCSTR, File: PCSTR, Flags: DWORD
+  ): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvStoreFileW".}
+
+  proc SymSrvStoreSupplement*(
+    hProcess: HANDLE, SymPath: PCTSTR, Node: PCSTR, File: PCSTR, Flags: DWORD
+  ): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvStoreSupplementW".}
+
+  proc SymSrvDeltaName*(
+    hProcess: HANDLE, SymPath: PCSTR, Type: PCSTR, File1: PCSTR, File2: PCSTR
+  ): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc: "SymSrvDeltaNameW".}
+
+  proc MapFileAndCheckSum*(
+    Filename: PCWSTR, HeaderSum: PDWORD, CheckSum: PDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "imagehlp", importc: "MapFileAndCheckSumW".}
+
 when winimAnsi:
-  proc UnDecorateSymbolName*(DecoratedName: PCSTR, UnDecoratedName: PSTR, UndecoratedLength: DWORD, Flags: DWORD): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc EnumerateLoadedModules64*(hProcess: HANDLE, EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK64, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymSrvGetFileIndexString*(hProcess: HANDLE, SrvPath: PCSTR, File: PCSTR, Index: PSTR, Size: int, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymSrvGetFileIndexInfo*(File: PCSTR, Info: PSYMSRV_INDEX_INFO, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymSrvGetFileIndexes*(File: PCSTR, Id: ptr GUID, Val1: ptr DWORD, Val2: ptr DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymSrvGetSupplement*(hProcess: HANDLE, SymPath: PCSTR, Node: PCSTR, File: PCSTR): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymSrvIsStore*(hProcess: HANDLE, path: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymSrvStoreFile*(hProcess: HANDLE, SrvPath: PCSTR, File: PCSTR, Flags: DWORD): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymSrvStoreSupplement*(hProcess: HANDLE, SymPath: PCTSTR, Node: PCSTR, File: PCSTR, Flags: DWORD): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymSrvDeltaName*(hProcess: HANDLE, SymPath: PCSTR, Type: PCSTR, File1: PCSTR, File2: PCSTR): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc MapFileAndCheckSum*(Filename: PCSTR, HeaderSum: PDWORD, CheckSum: PDWORD): DWORD {.winapi, stdcall, dynlib: "imagehlp", importc: "MapFileAndCheckSumA".}
+  proc UnDecorateSymbolName*(
+    DecoratedName: PCSTR, UnDecoratedName: PSTR, UndecoratedLength: DWORD, Flags: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc EnumerateLoadedModules64*(
+    hProcess: HANDLE,
+    EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK64,
+    UserContext: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymSrvGetFileIndexString*(
+    hProcess: HANDLE, SrvPath: PCSTR, File: PCSTR, Index: PSTR, Size: int, Flags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymSrvGetFileIndexInfo*(
+    File: PCSTR, Info: PSYMSRV_INDEX_INFO, Flags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymSrvGetFileIndexes*(
+    File: PCSTR, Id: ptr GUID, Val1: ptr DWORD, Val2: ptr DWORD, Flags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymSrvGetSupplement*(
+    hProcess: HANDLE, SymPath: PCSTR, Node: PCSTR, File: PCSTR
+  ): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymSrvIsStore*(
+    hProcess: HANDLE, path: PCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymSrvStoreFile*(
+    hProcess: HANDLE, SrvPath: PCSTR, File: PCSTR, Flags: DWORD
+  ): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymSrvStoreSupplement*(
+    hProcess: HANDLE, SymPath: PCTSTR, Node: PCSTR, File: PCSTR, Flags: DWORD
+  ): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymSrvDeltaName*(
+    hProcess: HANDLE, SymPath: PCSTR, Type: PCSTR, File1: PCSTR, File2: PCSTR
+  ): PCSTR {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc MapFileAndCheckSum*(
+    Filename: PCSTR, HeaderSum: PDWORD, CheckSum: PDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "imagehlp", importc: "MapFileAndCheckSumA".}
+
 when winimCpu64:
   type
     TADDRESS* = TADDRESS64
@@ -1307,28 +2503,132 @@
     PIMAGEHLP_DEFERRED_SYMBOL_LOAD* = PIMAGEHLP_DEFERRED_SYMBOL_LOAD64
     IMAGEHLP_DUPLICATE_SYMBOL* = IMAGEHLP_DUPLICATE_SYMBOL64
     PIMAGEHLP_DUPLICATE_SYMBOL* = PIMAGEHLP_DUPLICATE_SYMBOL64
-  proc StackWalk*(MachineType: DWORD, hProcess: HANDLE, hThread: HANDLE, StackFrame: LPSTACKFRAME64, ContextRecord: PVOID, ReadMemoryRoutine: PREAD_PROCESS_MEMORY_ROUTINE64, FunctionTableAccessRoutine: PFUNCTION_TABLE_ACCESS_ROUTINE64, GetModuleBaseRoutine: PGET_MODULE_BASE_ROUTINE64, TranslateAddress: PTRANSLATE_ADDRESS_ROUTINE64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "StackWalk64".}
-  proc SymEnumerateModules*(hProcess: HANDLE, EnumModulesCallback: PSYM_ENUMMODULES_CALLBACK64, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymEnumerateModules64".}
-  proc SymEnumerateSymbols*(hProcess: HANDLE, BaseOfDll: DWORD64, EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK64, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymEnumerateSymbols64".}
-  proc SymEnumerateSymbolsW*(hProcess: HANDLE, BaseOfDll: DWORD64, EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK64W, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymEnumerateSymbolsW64".}
-  proc EnumerateLoadedModules*(hProcess: HANDLE, EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK64, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "EnumerateLoadedModules64".}
-  proc SymFunctionTableAccess*(hProcess: HANDLE, AddrBase: DWORD64): PVOID {.winapi, stdcall, dynlib: "dbghelp", importc: "SymFunctionTableAccess64".}
-  proc SymGetModuleInfo*(hProcess: HANDLE, qwAddr: DWORD64, ModuleInfo: PIMAGEHLP_MODULE64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetModuleInfo64".}
-  proc SymGetModuleInfoW*(hProcess: HANDLE, qwAddr: DWORD64, ModuleInfo: PIMAGEHLP_MODULEW64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetModuleInfoW64".}
-  proc SymGetModuleBase*(hProcess: HANDLE, qwAddr: DWORD64): DWORD64 {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetModuleBase64".}
-  proc SymGetSymNext*(hProcess: HANDLE, Symbol: PIMAGEHLP_SYMBOL64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetSymNext64".}
-  proc SymGetSymPrev*(hProcess: HANDLE, Symbol: PIMAGEHLP_SYMBOL64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetSymPrev64".}
-  proc SymGetLineFromAddr*(hProcess: HANDLE, qwAddr: DWORD64, pdwDisplacement: PDWORD, Line64: PIMAGEHLP_LINE64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetLineFromAddr64".}
-  proc SymGetLineFromName*(hProcess: HANDLE, ModuleName: PCSTR, FileName: PCSTR, dwLineNumber: DWORD, plDisplacement: PLONG, Line: PIMAGEHLP_LINE64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetLineFromName64".}
-  proc SymGetLineNext*(hProcess: HANDLE, Line: PIMAGEHLP_LINE64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetLineNext64".}
-  proc SymGetLinePrev*(hProcess: HANDLE, Line: PIMAGEHLP_LINE64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetLinePrev64".}
-  proc SymLoadModule*(hProcess: HANDLE, hFile: HANDLE, ImageName: PSTR, ModuleName: PSTR, BaseOfDll: DWORD64, SizeOfDll: DWORD): DWORD64 {.winapi, stdcall, dynlib: "dbghelp", importc: "SymLoadModule64".}
-  proc SymUnloadModule*(hProcess: HANDLE, BaseOfDll: DWORD64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymUnloadModule64".}
-  proc SymUnDName*(sym: PIMAGEHLP_SYMBOL64, UnDecName: PSTR, UnDecNameLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymUnDName64".}
-  proc SymRegisterCallback*(hProcess: HANDLE, CallbackFunction: PSYMBOL_REGISTERED_CALLBACK64, UserContext: ULONG64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymRegisterCallback64".}
-  proc SymRegisterFunctionEntryCallback*(hProcess: HANDLE, CallbackFunction: PSYMBOL_FUNCENTRY_CALLBACK64, UserContext: ULONG64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymRegisterFunctionEntryCallback64".}
-  proc SymGetSymFromAddr*(hProcess: HANDLE, qwAddr: DWORD64, pdwDisplacement: PDWORD64, Symbol: PIMAGEHLP_SYMBOL64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetSymFromAddr64".}
-  proc SymGetSymFromName*(hProcess: HANDLE, Name: PCSTR, Symbol: PIMAGEHLP_SYMBOL64): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetSymFromName64".}
+
+  proc StackWalk*(
+    MachineType: DWORD,
+    hProcess: HANDLE,
+    hThread: HANDLE,
+    StackFrame: LPSTACKFRAME64,
+    ContextRecord: PVOID,
+    ReadMemoryRoutine: PREAD_PROCESS_MEMORY_ROUTINE64,
+    FunctionTableAccessRoutine: PFUNCTION_TABLE_ACCESS_ROUTINE64,
+    GetModuleBaseRoutine: PGET_MODULE_BASE_ROUTINE64,
+    TranslateAddress: PTRANSLATE_ADDRESS_ROUTINE64,
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "StackWalk64".}
+
+  proc SymEnumerateModules*(
+    hProcess: HANDLE,
+    EnumModulesCallback: PSYM_ENUMMODULES_CALLBACK64,
+    UserContext: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymEnumerateModules64".}
+
+  proc SymEnumerateSymbols*(
+    hProcess: HANDLE,
+    BaseOfDll: DWORD64,
+    EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK64,
+    UserContext: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymEnumerateSymbols64".}
+
+  proc SymEnumerateSymbolsW*(
+    hProcess: HANDLE,
+    BaseOfDll: DWORD64,
+    EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK64W,
+    UserContext: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymEnumerateSymbolsW64".}
+
+  proc EnumerateLoadedModules*(
+    hProcess: HANDLE,
+    EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK64,
+    UserContext: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "EnumerateLoadedModules64".}
+
+  proc SymFunctionTableAccess*(
+    hProcess: HANDLE, AddrBase: DWORD64
+  ): PVOID {.winapi, stdcall, dynlib: "dbghelp", importc: "SymFunctionTableAccess64".}
+
+  proc SymGetModuleInfo*(
+    hProcess: HANDLE, qwAddr: DWORD64, ModuleInfo: PIMAGEHLP_MODULE64
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetModuleInfo64".}
+
+  proc SymGetModuleInfoW*(
+    hProcess: HANDLE, qwAddr: DWORD64, ModuleInfo: PIMAGEHLP_MODULEW64
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetModuleInfoW64".}
+
+  proc SymGetModuleBase*(
+    hProcess: HANDLE, qwAddr: DWORD64
+  ): DWORD64 {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetModuleBase64".}
+
+  proc SymGetSymNext*(
+    hProcess: HANDLE, Symbol: PIMAGEHLP_SYMBOL64
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetSymNext64".}
+
+  proc SymGetSymPrev*(
+    hProcess: HANDLE, Symbol: PIMAGEHLP_SYMBOL64
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetSymPrev64".}
+
+  proc SymGetLineFromAddr*(
+    hProcess: HANDLE, qwAddr: DWORD64, pdwDisplacement: PDWORD, Line64: PIMAGEHLP_LINE64
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetLineFromAddr64".}
+
+  proc SymGetLineFromName*(
+    hProcess: HANDLE,
+    ModuleName: PCSTR,
+    FileName: PCSTR,
+    dwLineNumber: DWORD,
+    plDisplacement: PLONG,
+    Line: PIMAGEHLP_LINE64,
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetLineFromName64".}
+
+  proc SymGetLineNext*(
+    hProcess: HANDLE, Line: PIMAGEHLP_LINE64
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetLineNext64".}
+
+  proc SymGetLinePrev*(
+    hProcess: HANDLE, Line: PIMAGEHLP_LINE64
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetLinePrev64".}
+
+  proc SymLoadModule*(
+    hProcess: HANDLE,
+    hFile: HANDLE,
+    ImageName: PSTR,
+    ModuleName: PSTR,
+    BaseOfDll: DWORD64,
+    SizeOfDll: DWORD,
+  ): DWORD64 {.winapi, stdcall, dynlib: "dbghelp", importc: "SymLoadModule64".}
+
+  proc SymUnloadModule*(
+    hProcess: HANDLE, BaseOfDll: DWORD64
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymUnloadModule64".}
+
+  proc SymUnDName*(
+    sym: PIMAGEHLP_SYMBOL64, UnDecName: PSTR, UnDecNameLength: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymUnDName64".}
+
+  proc SymRegisterCallback*(
+    hProcess: HANDLE,
+    CallbackFunction: PSYMBOL_REGISTERED_CALLBACK64,
+    UserContext: ULONG64,
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymRegisterCallback64".}
+
+  proc SymRegisterFunctionEntryCallback*(
+    hProcess: HANDLE,
+    CallbackFunction: PSYMBOL_FUNCENTRY_CALLBACK64,
+    UserContext: ULONG64,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "dbghelp", importc: "SymRegisterFunctionEntryCallback64"
+  .}
+
+  proc SymGetSymFromAddr*(
+    hProcess: HANDLE,
+    qwAddr: DWORD64,
+    pdwDisplacement: PDWORD64,
+    Symbol: PIMAGEHLP_SYMBOL64,
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetSymFromAddr64".}
+
+  proc SymGetSymFromName*(
+    hProcess: HANDLE, Name: PCSTR, Symbol: PIMAGEHLP_SYMBOL64
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc: "SymGetSymFromName64".}
+
 when winimCpu32:
   type
     IMAGE_DEBUG_INFORMATION* {.pure.} = object
@@ -1363,11 +2663,13 @@
       ReservedNumberOfDebugDirectories*: DWORD
       ReservedOriginalFunctionTableBaseAddress*: DWORD
       Reserved*: array[2, DWORD]
+
     PIMAGE_DEBUG_INFORMATION* = ptr IMAGE_DEBUG_INFORMATION
     TADDRESS* {.pure.} = object
       Offset*: DWORD
       Segment*: WORD
       Mode*: ADDRESS_MODE
+
     LPADDRESS* = ptr TADDRESS
     KDHELP* {.pure.} = object
       Thread*: DWORD
@@ -1382,6 +2684,7 @@
       StackBase*: DWORD
       StackLimit*: DWORD
       Reserved*: array[5, DWORD]
+
     PKDHELP* = ptr KDHELP
     STACKFRAME* {.pure.} = object
       AddrPC*: TADDRESS
@@ -1395,6 +2698,7 @@
       Reserved*: array[3, DWORD]
       KdHelp*: KDHELP
       AddrBStore*: TADDRESS
+
     LPSTACKFRAME* = ptr STACKFRAME
     IMAGEHLP_SYMBOL* {.pure.} = object
       SizeOfStruct*: DWORD
@@ -1403,10 +2707,12 @@
       Flags*: DWORD
       MaxNameLength*: DWORD
       Name*: array[1, CHAR]
+
     PIMAGEHLP_SYMBOL* = ptr IMAGEHLP_SYMBOL
     IMAGEHLP_SYMBOL_PACKAGE* {.pure.} = object
       sym*: IMAGEHLP_SYMBOL
-      name*: array[MAX_SYM_NAME+1, CHAR]
+      name*: array[MAX_SYM_NAME + 1, CHAR]
+
     PIMAGEHLP_SYMBOL_PACKAGE* = ptr IMAGEHLP_SYMBOL_PACKAGE
     IMAGEHLP_MODULE* {.pure.} = object
       SizeOfStruct*: DWORD
@@ -1419,6 +2725,7 @@
       ModuleName*: array[32, CHAR]
       ImageName*: array[256, CHAR]
       LoadedImageName*: array[256, CHAR]
+
     PIMAGEHLP_MODULE* = ptr IMAGEHLP_MODULE
     IMAGEHLP_MODULEW* {.pure.} = object
       SizeOfStruct*: DWORD
@@ -1431,6 +2738,7 @@
       ModuleName*: array[32, WCHAR]
       ImageName*: array[256, WCHAR]
       LoadedImageName*: array[256, WCHAR]
+
     PIMAGEHLP_MODULEW* = ptr IMAGEHLP_MODULEW
     IMAGEHLP_LINE* {.pure.} = object
       SizeOfStruct*: DWORD
@@ -1438,6 +2746,7 @@
       LineNumber*: DWORD
       FileName*: PCHAR
       Address*: DWORD
+
     PIMAGEHLP_LINE* = ptr IMAGEHLP_LINE
     IMAGEHLP_DEFERRED_SYMBOL_LOAD* {.pure.} = object
       SizeOfStruct*: DWORD
@@ -1447,42 +2756,155 @@
       FileName*: array[MAX_PATH, CHAR]
       Reparse*: BOOLEAN
       hFile*: HANDLE
+
     PIMAGEHLP_DEFERRED_SYMBOL_LOAD* = ptr IMAGEHLP_DEFERRED_SYMBOL_LOAD
     IMAGEHLP_DUPLICATE_SYMBOL* {.pure.} = object
       SizeOfStruct*: DWORD
       NumberOfDups*: DWORD
       Symbol*: PIMAGEHLP_SYMBOL
       SelectedSymbol*: DWORD
+
     PIMAGEHLP_DUPLICATE_SYMBOL* = ptr IMAGEHLP_DUPLICATE_SYMBOL
-    PREAD_PROCESS_MEMORY_ROUTINE* = proc (hProcess: HANDLE, lpBaseAddress: DWORD, lpBuffer: PVOID, nSize: DWORD, lpNumberOfBytesRead: PDWORD): WINBOOL {.stdcall.}
-    PFUNCTION_TABLE_ACCESS_ROUTINE* = proc (hProcess: HANDLE, AddrBase: DWORD): PVOID {.stdcall.}
-    PGET_MODULE_BASE_ROUTINE* = proc (hProcess: HANDLE, Address: DWORD): DWORD {.stdcall.}
-    PTRANSLATE_ADDRESS_ROUTINE* = proc (hProcess: HANDLE, hThread: HANDLE, lpaddr: LPADDRESS): DWORD {.stdcall.}
-    PSYMBOL_FUNCENTRY_CALLBACK* = proc (hProcess: HANDLE, AddrBase: DWORD, UserContext: PVOID): PVOID {.stdcall.}
-    PSYM_ENUMMODULES_CALLBACK* = proc (ModuleName: PCSTR, BaseOfDll: ULONG, UserContext: PVOID): WINBOOL {.stdcall.}
-    PSYM_ENUMSYMBOLS_CALLBACK* = proc (SymbolName: PCSTR, SymbolAddress: ULONG, SymbolSize: ULONG, UserContext: PVOID): WINBOOL {.stdcall.}
-    PSYM_ENUMSYMBOLS_CALLBACKW* = proc (SymbolName: PCWSTR, SymbolAddress: ULONG, SymbolSize: ULONG, UserContext: PVOID): WINBOOL {.stdcall.}
-    PENUMLOADED_MODULES_CALLBACK* = proc (ModuleName: PCSTR, ModuleBase: ULONG, ModuleSize: ULONG, UserContext: PVOID): WINBOOL {.stdcall.}
-    PSYMBOL_REGISTERED_CALLBACK* = proc (hProcess: HANDLE, ActionCode: ULONG, CallbackData: PVOID, UserContext: PVOID): WINBOOL {.stdcall.}
-  proc StackWalk*(MachineType: DWORD, hProcess: HANDLE, hThread: HANDLE, StackFrame: LPSTACKFRAME, ContextRecord: PVOID, ReadMemoryRoutine: PREAD_PROCESS_MEMORY_ROUTINE, FunctionTableAccessRoutine: PFUNCTION_TABLE_ACCESS_ROUTINE, GetModuleBaseRoutine: PGET_MODULE_BASE_ROUTINE, TranslateAddress: PTRANSLATE_ADDRESS_ROUTINE): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymEnumerateModules*(hProcess: HANDLE, EnumModulesCallback: PSYM_ENUMMODULES_CALLBACK, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymEnumerateSymbols*(hProcess: HANDLE, BaseOfDll: DWORD, EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymEnumerateSymbolsW*(hProcess: HANDLE, BaseOfDll: DWORD, EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACKW, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc EnumerateLoadedModules*(hProcess: HANDLE, EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymFunctionTableAccess*(hProcess: HANDLE, AddrBase: DWORD): PVOID {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymGetModuleInfo*(hProcess: HANDLE, dwAddr: DWORD, ModuleInfo: PIMAGEHLP_MODULE): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymGetModuleInfoW*(hProcess: HANDLE, dwAddr: DWORD, ModuleInfo: PIMAGEHLP_MODULEW): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymGetModuleBase*(hProcess: HANDLE, dwAddr: DWORD): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymGetSymNext*(hProcess: HANDLE, Symbol: PIMAGEHLP_SYMBOL): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymGetSymPrev*(hProcess: HANDLE, Symbol: PIMAGEHLP_SYMBOL): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymGetLineFromAddr*(hProcess: HANDLE, dwAddr: DWORD, pdwDisplacement: PDWORD, Line: PIMAGEHLP_LINE): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymGetLineFromName*(hProcess: HANDLE, ModuleName: PCSTR, FileName: PCSTR, dwLineNumber: DWORD, plDisplacement: PLONG, Line: PIMAGEHLP_LINE): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymGetLineNext*(hProcess: HANDLE, Line: PIMAGEHLP_LINE): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymGetLinePrev*(hProcess: HANDLE, Line: PIMAGEHLP_LINE): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymLoadModule*(hProcess: HANDLE, hFile: HANDLE, ImageName: PCSTR, ModuleName: PCSTR, BaseOfDll: DWORD, SizeOfDll: DWORD): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymUnloadModule*(hProcess: HANDLE, BaseOfDll: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymUnDName*(sym: PIMAGEHLP_SYMBOL, UnDecName: PSTR, UnDecNameLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymRegisterCallback*(hProcess: HANDLE, CallbackFunction: PSYMBOL_REGISTERED_CALLBACK, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymRegisterFunctionEntryCallback*(hProcess: HANDLE, CallbackFunction: PSYMBOL_FUNCENTRY_CALLBACK, UserContext: PVOID): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymGetSymFromAddr*(hProcess: HANDLE, dwAddr: DWORD, pdwDisplacement: PDWORD, Symbol: PIMAGEHLP_SYMBOL): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
-  proc SymGetSymFromName*(hProcess: HANDLE, Name: PCSTR, Symbol: PIMAGEHLP_SYMBOL): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+    PREAD_PROCESS_MEMORY_ROUTINE* = proc(
+      hProcess: HANDLE,
+      lpBaseAddress: DWORD,
+      lpBuffer: PVOID,
+      nSize: DWORD,
+      lpNumberOfBytesRead: PDWORD,
+    ): WINBOOL {.stdcall.}
+    PFUNCTION_TABLE_ACCESS_ROUTINE* =
+      proc(hProcess: HANDLE, AddrBase: DWORD): PVOID {.stdcall.}
+    PGET_MODULE_BASE_ROUTINE* =
+      proc(hProcess: HANDLE, Address: DWORD): DWORD {.stdcall.}
+    PTRANSLATE_ADDRESS_ROUTINE* =
+      proc(hProcess: HANDLE, hThread: HANDLE, lpaddr: LPADDRESS): DWORD {.stdcall.}
+    PSYMBOL_FUNCENTRY_CALLBACK* =
+      proc(hProcess: HANDLE, AddrBase: DWORD, UserContext: PVOID): PVOID {.stdcall.}
+    PSYM_ENUMMODULES_CALLBACK* =
+      proc(ModuleName: PCSTR, BaseOfDll: ULONG, UserContext: PVOID): WINBOOL {.stdcall.}
+    PSYM_ENUMSYMBOLS_CALLBACK* = proc(
+      SymbolName: PCSTR, SymbolAddress: ULONG, SymbolSize: ULONG, UserContext: PVOID
+    ): WINBOOL {.stdcall.}
+    PSYM_ENUMSYMBOLS_CALLBACKW* = proc(
+      SymbolName: PCWSTR, SymbolAddress: ULONG, SymbolSize: ULONG, UserContext: PVOID
+    ): WINBOOL {.stdcall.}
+    PENUMLOADED_MODULES_CALLBACK* = proc(
+      ModuleName: PCSTR, ModuleBase: ULONG, ModuleSize: ULONG, UserContext: PVOID
+    ): WINBOOL {.stdcall.}
+    PSYMBOL_REGISTERED_CALLBACK* = proc(
+      hProcess: HANDLE, ActionCode: ULONG, CallbackData: PVOID, UserContext: PVOID
+    ): WINBOOL {.stdcall.}
+
+  proc StackWalk*(
+    MachineType: DWORD,
+    hProcess: HANDLE,
+    hThread: HANDLE,
+    StackFrame: LPSTACKFRAME,
+    ContextRecord: PVOID,
+    ReadMemoryRoutine: PREAD_PROCESS_MEMORY_ROUTINE,
+    FunctionTableAccessRoutine: PFUNCTION_TABLE_ACCESS_ROUTINE,
+    GetModuleBaseRoutine: PGET_MODULE_BASE_ROUTINE,
+    TranslateAddress: PTRANSLATE_ADDRESS_ROUTINE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymEnumerateModules*(
+    hProcess: HANDLE, EnumModulesCallback: PSYM_ENUMMODULES_CALLBACK, UserContext: PVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymEnumerateSymbols*(
+    hProcess: HANDLE,
+    BaseOfDll: DWORD,
+    EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK,
+    UserContext: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymEnumerateSymbolsW*(
+    hProcess: HANDLE,
+    BaseOfDll: DWORD,
+    EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACKW,
+    UserContext: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc EnumerateLoadedModules*(
+    hProcess: HANDLE,
+    EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK,
+    UserContext: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymFunctionTableAccess*(
+    hProcess: HANDLE, AddrBase: DWORD
+  ): PVOID {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymGetModuleInfo*(
+    hProcess: HANDLE, dwAddr: DWORD, ModuleInfo: PIMAGEHLP_MODULE
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymGetModuleInfoW*(
+    hProcess: HANDLE, dwAddr: DWORD, ModuleInfo: PIMAGEHLP_MODULEW
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymGetModuleBase*(
+    hProcess: HANDLE, dwAddr: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymGetSymNext*(
+    hProcess: HANDLE, Symbol: PIMAGEHLP_SYMBOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymGetSymPrev*(
+    hProcess: HANDLE, Symbol: PIMAGEHLP_SYMBOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymGetLineFromAddr*(
+    hProcess: HANDLE, dwAddr: DWORD, pdwDisplacement: PDWORD, Line: PIMAGEHLP_LINE
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymGetLineFromName*(
+    hProcess: HANDLE,
+    ModuleName: PCSTR,
+    FileName: PCSTR,
+    dwLineNumber: DWORD,
+    plDisplacement: PLONG,
+    Line: PIMAGEHLP_LINE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymGetLineNext*(
+    hProcess: HANDLE, Line: PIMAGEHLP_LINE
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymGetLinePrev*(
+    hProcess: HANDLE, Line: PIMAGEHLP_LINE
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymLoadModule*(
+    hProcess: HANDLE,
+    hFile: HANDLE,
+    ImageName: PCSTR,
+    ModuleName: PCSTR,
+    BaseOfDll: DWORD,
+    SizeOfDll: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymUnloadModule*(
+    hProcess: HANDLE, BaseOfDll: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymUnDName*(
+    sym: PIMAGEHLP_SYMBOL, UnDecName: PSTR, UnDecNameLength: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymRegisterCallback*(
+    hProcess: HANDLE, CallbackFunction: PSYMBOL_REGISTERED_CALLBACK, UserContext: PVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymRegisterFunctionEntryCallback*(
+    hProcess: HANDLE, CallbackFunction: PSYMBOL_FUNCENTRY_CALLBACK, UserContext: PVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymGetSymFromAddr*(
+    hProcess: HANDLE, dwAddr: DWORD, pdwDisplacement: PDWORD, Symbol: PIMAGEHLP_SYMBOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
+
+  proc SymGetSymFromName*(
+    hProcess: HANDLE, Name: PCSTR, Symbol: PIMAGEHLP_SYMBOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "dbghelp", importc.}
--- a/semicongine/thirdparty/winim/winim/inc/imm.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/imm.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -20,6 +20,7 @@
     dwStyle*: DWORD
     ptCurrentPos*: POINT
     rcArea*: RECT
+
   PCOMPOSITIONFORM* = ptr COMPOSITIONFORM
   NPCOMPOSITIONFORM* = ptr COMPOSITIONFORM
   LPCOMPOSITIONFORM* = ptr COMPOSITIONFORM
@@ -28,6 +29,7 @@
     dwStyle*: DWORD
     ptCurrentPos*: POINT
     rcArea*: RECT
+
   PCANDIDATEFORM* = ptr CANDIDATEFORM
   NPCANDIDATEFORM* = ptr CANDIDATEFORM
   LPCANDIDATEFORM* = ptr CANDIDATEFORM
@@ -39,18 +41,21 @@
     dwPageStart*: DWORD
     dwPageSize*: DWORD
     dwOffset*: array[1, DWORD]
+
   PCANDIDATELIST* = ptr CANDIDATELIST
   NPCANDIDATELIST* = ptr CANDIDATELIST
   LPCANDIDATELIST* = ptr CANDIDATELIST
   REGISTERWORDA* {.pure.} = object
     lpReading*: LPSTR
     lpWord*: LPSTR
+
   PREGISTERWORDA* = ptr REGISTERWORDA
   NPREGISTERWORDA* = ptr REGISTERWORDA
   LPREGISTERWORDA* = ptr REGISTERWORDA
   REGISTERWORDW* {.pure.} = object
     lpReading*: LPWSTR
     lpWord*: LPWSTR
+
   PREGISTERWORDW* = ptr REGISTERWORDW
   NPREGISTERWORDW* = ptr REGISTERWORDW
   LPREGISTERWORDW* = ptr REGISTERWORDW
@@ -63,26 +68,29 @@
     dwCompStrOffset*: DWORD
     dwTargetStrLen*: DWORD
     dwTargetStrOffset*: DWORD
+
   PRECONVERTSTRING* = ptr RECONVERTSTRING
   NPRECONVERTSTRING* = ptr RECONVERTSTRING
   LPRECONVERTSTRING* = ptr RECONVERTSTRING
-const
-  STYLE_DESCRIPTION_SIZE* = 32
+
+const STYLE_DESCRIPTION_SIZE* = 32
 type
   STYLEBUFA* {.pure.} = object
     dwStyle*: DWORD
     szDescription*: array[STYLE_DESCRIPTION_SIZE, CHAR]
+
   PSTYLEBUFA* = ptr STYLEBUFA
   NPSTYLEBUFA* = ptr STYLEBUFA
   LPSTYLEBUFA* = ptr STYLEBUFA
   STYLEBUFW* {.pure.} = object
     dwStyle*: DWORD
     szDescription*: array[STYLE_DESCRIPTION_SIZE, WCHAR]
+
   PSTYLEBUFW* = ptr STYLEBUFW
   NPSTYLEBUFW* = ptr STYLEBUFW
   LPSTYLEBUFW* = ptr STYLEBUFW
-const
-  IMEMENUITEM_STRING_SIZE* = 80
+
+const IMEMENUITEM_STRING_SIZE* = 80
 type
   IMEMENUITEMINFOA* {.pure.} = object
     cbSize*: UINT
@@ -94,6 +102,7 @@
     dwItemData*: DWORD
     szString*: array[IMEMENUITEM_STRING_SIZE, CHAR]
     hbmpItem*: HBITMAP
+
   PIMEMENUITEMINFOA* = ptr IMEMENUITEMINFOA
   NPIMEMENUITEMINFOA* = ptr IMEMENUITEMINFOA
   LPIMEMENUITEMINFOA* = ptr IMEMENUITEMINFOA
@@ -107,6 +116,7 @@
     dwItemData*: DWORD
     szString*: array[IMEMENUITEM_STRING_SIZE, WCHAR]
     hbmpItem*: HBITMAP
+
   PIMEMENUITEMINFOW* = ptr IMEMENUITEMINFOW
   NPIMEMENUITEMINFOW* = ptr IMEMENUITEMINFOW
   LPIMEMENUITEMINFOW* = ptr IMEMENUITEMINFOW
@@ -116,9 +126,11 @@
     pt*: POINT
     cLineHeight*: UINT
     rcDocument*: RECT
+
   PIMECHARPOSITION* = ptr IMECHARPOSITION
   NPIMECHARPOSITION* = ptr IMECHARPOSITION
   LPIMECHARPOSITION* = ptr IMECHARPOSITION
+
 const
   IMC_GETCANDIDATEPOS* = 0x0007
   IMC_SETCANDIDATEPOS* = 0x0008
@@ -362,12 +374,15 @@
   CLSID_CActiveIMM* = DEFINE_GUID("4955dd33-b159-11d0-8fcf-00aa006bcc59")
   IGP_GETIMEVERSION* = DWORD(-4)
 type
-  IMCENUMPROC* = proc (P1: HIMC, P2: LPARAM): WINBOOL {.stdcall.}
-  REGISTERWORDENUMPROCA* = proc (P1: LPCSTR, P2: DWORD, P3: LPCSTR, P4: LPVOID): int32 {.stdcall.}
-  REGISTERWORDENUMPROCW* = proc (P1: LPCWSTR, P2: DWORD, P3: LPCWSTR, P4: LPVOID): int32 {.stdcall.}
+  IMCENUMPROC* = proc(P1: HIMC, P2: LPARAM): WINBOOL {.stdcall.}
+  REGISTERWORDENUMPROCA* =
+    proc(P1: LPCSTR, P2: DWORD, P3: LPCSTR, P4: LPVOID): int32 {.stdcall.}
+  REGISTERWORDENUMPROCW* =
+    proc(P1: LPCWSTR, P2: DWORD, P3: LPCWSTR, P4: LPVOID): int32 {.stdcall.}
   INPUTCONTEXT_lfFont* {.pure, union.} = object
     A*: LOGFONTA
     W*: LOGFONTW
+
   INPUTCONTEXT* {.pure.} = object
     hWnd*: HWND
     fOpen*: WINBOOL
@@ -386,6 +401,7 @@
     hMsgBuf*: HIMCC
     fdwInit*: DWORD
     dwReserve*: array[3, DWORD]
+
   IMEINFO* {.pure.} = object
     dwPrivateDataSize*: DWORD
     fdwProperty*: DWORD
@@ -394,494 +410,2736 @@
     fdwUICaps*: DWORD
     fdwSCSCaps*: DWORD
     fdwSelectCaps*: DWORD
+
   IEnumInputContext* {.pure.} = object
     lpVtbl*: ptr IEnumInputContextVtbl
+
   IEnumInputContextVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Clone*: proc(self: ptr IEnumInputContext, ppEnum: ptr ptr IEnumInputContext): HRESULT {.stdcall.}
-    Next*: proc(self: ptr IEnumInputContext, ulCount: ULONG, rgInputContext: ptr HIMC, pcFetched: ptr ULONG): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr IEnumInputContext, ppEnum: ptr ptr IEnumInputContext
+    ): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumInputContext,
+      ulCount: ULONG,
+      rgInputContext: ptr HIMC,
+      pcFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumInputContext): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumInputContext, ulCount: ULONG): HRESULT {.stdcall.}
+
   IActiveIMMRegistrar* {.pure.} = object
     lpVtbl*: ptr IActiveIMMRegistrarVtbl
+
   IActiveIMMRegistrarVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RegisterIME*: proc(self: ptr IActiveIMMRegistrar, rclsid: REFCLSID, lgid: LANGID, pszIconFile: LPCWSTR, pszDesc: LPCWSTR): HRESULT {.stdcall.}
-    UnregisterIME*: proc(self: ptr IActiveIMMRegistrar, rclsid: REFCLSID): HRESULT {.stdcall.}
+    RegisterIME*: proc(
+      self: ptr IActiveIMMRegistrar,
+      rclsid: REFCLSID,
+      lgid: LANGID,
+      pszIconFile: LPCWSTR,
+      pszDesc: LPCWSTR,
+    ): HRESULT {.stdcall.}
+    UnregisterIME*:
+      proc(self: ptr IActiveIMMRegistrar, rclsid: REFCLSID): HRESULT {.stdcall.}
+
   IActiveIMMMessagePumpOwner* {.pure.} = object
     lpVtbl*: ptr IActiveIMMMessagePumpOwnerVtbl
+
   IActiveIMMMessagePumpOwnerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Start*: proc(self: ptr IActiveIMMMessagePumpOwner): HRESULT {.stdcall.}
     End*: proc(self: ptr IActiveIMMMessagePumpOwner): HRESULT {.stdcall.}
-    OnTranslateMessage*: proc(self: ptr IActiveIMMMessagePumpOwner, pMsg: ptr MSG): HRESULT {.stdcall.}
-    Pause*: proc(self: ptr IActiveIMMMessagePumpOwner, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
-    Resume*: proc(self: ptr IActiveIMMMessagePumpOwner, dwCookie: DWORD): HRESULT {.stdcall.}
+    OnTranslateMessage*:
+      proc(self: ptr IActiveIMMMessagePumpOwner, pMsg: ptr MSG): HRESULT {.stdcall.}
+    Pause*: proc(self: ptr IActiveIMMMessagePumpOwner, pdwCookie: ptr DWORD): HRESULT {.
+      stdcall
+    .}
+    Resume*:
+      proc(self: ptr IActiveIMMMessagePumpOwner, dwCookie: DWORD): HRESULT {.stdcall.}
+
   IEnumRegisterWordA* {.pure.} = object
     lpVtbl*: ptr IEnumRegisterWordAVtbl
+
   IEnumRegisterWordAVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Clone*: proc(self: ptr IEnumRegisterWordA, ppEnum: ptr ptr IEnumRegisterWordA): HRESULT {.stdcall.}
-    Next*: proc(self: ptr IEnumRegisterWordA, ulCount: ULONG, rgRegisterWord: ptr REGISTERWORDA, pcFetched: ptr ULONG): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr IEnumRegisterWordA, ppEnum: ptr ptr IEnumRegisterWordA
+    ): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumRegisterWordA,
+      ulCount: ULONG,
+      rgRegisterWord: ptr REGISTERWORDA,
+      pcFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumRegisterWordA): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumRegisterWordA, ulCount: ULONG): HRESULT {.stdcall.}
+
   IEnumRegisterWordW* {.pure.} = object
     lpVtbl*: ptr IEnumRegisterWordWVtbl
+
   IEnumRegisterWordWVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Clone*: proc(self: ptr IEnumRegisterWordW, ppEnum: ptr ptr IEnumRegisterWordW): HRESULT {.stdcall.}
-    Next*: proc(self: ptr IEnumRegisterWordW, ulCount: ULONG, rgRegisterWord: ptr REGISTERWORDW, pcFetched: ptr ULONG): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr IEnumRegisterWordW, ppEnum: ptr ptr IEnumRegisterWordW
+    ): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumRegisterWordW,
+      ulCount: ULONG,
+      rgRegisterWord: ptr REGISTERWORDW,
+      pcFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumRegisterWordW): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumRegisterWordW, ulCount: ULONG): HRESULT {.stdcall.}
+
   IActiveIMMApp* {.pure.} = object
     lpVtbl*: ptr IActiveIMMAppVtbl
+
   IActiveIMMAppVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AssociateContext*: proc(self: ptr IActiveIMMApp, hWnd: HWND, hIME: HIMC, phPrev: ptr HIMC): HRESULT {.stdcall.}
-    ConfigureIMEA*: proc(self: ptr IActiveIMMApp, hKL: HKL, hWnd: HWND, dwMode: DWORD, pData: ptr REGISTERWORDA): HRESULT {.stdcall.}
-    ConfigureIMEW*: proc(self: ptr IActiveIMMApp, hKL: HKL, hWnd: HWND, dwMode: DWORD, pData: ptr REGISTERWORDW): HRESULT {.stdcall.}
+    AssociateContext*: proc(
+      self: ptr IActiveIMMApp, hWnd: HWND, hIME: HIMC, phPrev: ptr HIMC
+    ): HRESULT {.stdcall.}
+    ConfigureIMEA*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      hWnd: HWND,
+      dwMode: DWORD,
+      pData: ptr REGISTERWORDA,
+    ): HRESULT {.stdcall.}
+    ConfigureIMEW*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      hWnd: HWND,
+      dwMode: DWORD,
+      pData: ptr REGISTERWORDW,
+    ): HRESULT {.stdcall.}
     CreateContext*: proc(self: ptr IActiveIMMApp, phIMC: ptr HIMC): HRESULT {.stdcall.}
     DestroyContext*: proc(self: ptr IActiveIMMApp, hIME: HIMC): HRESULT {.stdcall.}
-    EnumRegisterWordA*: proc(self: ptr IActiveIMMApp, hKL: HKL, szReading: LPSTR, dwStyle: DWORD, szRegister: LPSTR, pData: LPVOID, pEnum: ptr ptr IEnumRegisterWordA): HRESULT {.stdcall.}
-    EnumRegisterWordW*: proc(self: ptr IActiveIMMApp, hKL: HKL, szReading: LPWSTR, dwStyle: DWORD, szRegister: LPWSTR, pData: LPVOID, pEnum: ptr ptr IEnumRegisterWordW): HRESULT {.stdcall.}
-    EscapeA*: proc(self: ptr IActiveIMMApp, hKL: HKL, hIMC: HIMC, uEscape: UINT, pData: LPVOID, plResult: ptr LRESULT): HRESULT {.stdcall.}
-    EscapeW*: proc(self: ptr IActiveIMMApp, hKL: HKL, hIMC: HIMC, uEscape: UINT, pData: LPVOID, plResult: ptr LRESULT): HRESULT {.stdcall.}
-    GetCandidateListA*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, uBufLen: UINT, pCandList: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetCandidateListW*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, uBufLen: UINT, pCandList: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetCandidateListCountA*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD): HRESULT {.stdcall.}
-    GetCandidateListCountW*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD): HRESULT {.stdcall.}
-    GetCandidateWindow*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, pCandidate: ptr CANDIDATEFORM): HRESULT {.stdcall.}
-    GetCompositionFontA*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTA): HRESULT {.stdcall.}
-    GetCompositionFontW*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTW): HRESULT {.stdcall.}
-    GetCompositionStringA*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, plCopied: ptr LONG, pBuf: LPVOID): HRESULT {.stdcall.}
-    GetCompositionStringW*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, plCopied: ptr LONG, pBuf: LPVOID): HRESULT {.stdcall.}
-    GetCompositionWindow*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM): HRESULT {.stdcall.}
-    GetContext*: proc(self: ptr IActiveIMMApp, hWnd: HWND, phIMC: ptr HIMC): HRESULT {.stdcall.}
-    GetConversionListA*: proc(self: ptr IActiveIMMApp, hKL: HKL, hIMC: HIMC, pSrc: LPSTR, uBufLen: UINT, uFlag: UINT, pDst: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetConversionListW*: proc(self: ptr IActiveIMMApp, hKL: HKL, hIMC: HIMC, pSrc: LPWSTR, uBufLen: UINT, uFlag: UINT, pDst: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetConversionStatus*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, pfdwConversion: ptr DWORD, pfdwSentence: ptr DWORD): HRESULT {.stdcall.}
-    GetDefaultIMEWnd*: proc(self: ptr IActiveIMMApp, hWnd: HWND, phDefWnd: ptr HWND): HRESULT {.stdcall.}
-    GetDescriptionA*: proc(self: ptr IActiveIMMApp, hKL: HKL, uBufLen: UINT, szDescription: LPSTR, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetDescriptionW*: proc(self: ptr IActiveIMMApp, hKL: HKL, uBufLen: UINT, szDescription: LPWSTR, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetGuideLineA*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, pBuf: LPSTR, pdwResult: ptr DWORD): HRESULT {.stdcall.}
-    GetGuideLineW*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, pBuf: LPWSTR, pdwResult: ptr DWORD): HRESULT {.stdcall.}
-    GetIMEFileNameA*: proc(self: ptr IActiveIMMApp, hKL: HKL, uBufLen: UINT, szFileName: LPSTR, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetIMEFileNameW*: proc(self: ptr IActiveIMMApp, hKL: HKL, uBufLen: UINT, szFileName: LPWSTR, puCopied: ptr UINT): HRESULT {.stdcall.}
+    EnumRegisterWordA*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      szReading: LPSTR,
+      dwStyle: DWORD,
+      szRegister: LPSTR,
+      pData: LPVOID,
+      pEnum: ptr ptr IEnumRegisterWordA,
+    ): HRESULT {.stdcall.}
+    EnumRegisterWordW*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      szReading: LPWSTR,
+      dwStyle: DWORD,
+      szRegister: LPWSTR,
+      pData: LPVOID,
+      pEnum: ptr ptr IEnumRegisterWordW,
+    ): HRESULT {.stdcall.}
+    EscapeA*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      hIMC: HIMC,
+      uEscape: UINT,
+      pData: LPVOID,
+      plResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+    EscapeW*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      hIMC: HIMC,
+      uEscape: UINT,
+      pData: LPVOID,
+      plResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+    GetCandidateListA*: proc(
+      self: ptr IActiveIMMApp,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      uBufLen: UINT,
+      pCandList: ptr CANDIDATELIST,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetCandidateListW*: proc(
+      self: ptr IActiveIMMApp,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      uBufLen: UINT,
+      pCandList: ptr CANDIDATELIST,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetCandidateListCountA*: proc(
+      self: ptr IActiveIMMApp, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetCandidateListCountW*: proc(
+      self: ptr IActiveIMMApp, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetCandidateWindow*: proc(
+      self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, pCandidate: ptr CANDIDATEFORM
+    ): HRESULT {.stdcall.}
+    GetCompositionFontA*:
+      proc(self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTA): HRESULT {.stdcall.}
+    GetCompositionFontW*:
+      proc(self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTW): HRESULT {.stdcall.}
+    GetCompositionStringA*: proc(
+      self: ptr IActiveIMMApp,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      dwBufLen: DWORD,
+      plCopied: ptr LONG,
+      pBuf: LPVOID,
+    ): HRESULT {.stdcall.}
+    GetCompositionStringW*: proc(
+      self: ptr IActiveIMMApp,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      dwBufLen: DWORD,
+      plCopied: ptr LONG,
+      pBuf: LPVOID,
+    ): HRESULT {.stdcall.}
+    GetCompositionWindow*: proc(
+      self: ptr IActiveIMMApp, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM
+    ): HRESULT {.stdcall.}
+    GetContext*:
+      proc(self: ptr IActiveIMMApp, hWnd: HWND, phIMC: ptr HIMC): HRESULT {.stdcall.}
+    GetConversionListA*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      hIMC: HIMC,
+      pSrc: LPSTR,
+      uBufLen: UINT,
+      uFlag: UINT,
+      pDst: ptr CANDIDATELIST,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetConversionListW*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      hIMC: HIMC,
+      pSrc: LPWSTR,
+      uBufLen: UINT,
+      uFlag: UINT,
+      pDst: ptr CANDIDATELIST,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetConversionStatus*: proc(
+      self: ptr IActiveIMMApp,
+      hIMC: HIMC,
+      pfdwConversion: ptr DWORD,
+      pfdwSentence: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetDefaultIMEWnd*:
+      proc(self: ptr IActiveIMMApp, hWnd: HWND, phDefWnd: ptr HWND): HRESULT {.stdcall.}
+    GetDescriptionA*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      uBufLen: UINT,
+      szDescription: LPSTR,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetDescriptionW*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      uBufLen: UINT,
+      szDescription: LPWSTR,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetGuideLineA*: proc(
+      self: ptr IActiveIMMApp,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      dwBufLen: DWORD,
+      pBuf: LPSTR,
+      pdwResult: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetGuideLineW*: proc(
+      self: ptr IActiveIMMApp,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      dwBufLen: DWORD,
+      pBuf: LPWSTR,
+      pdwResult: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetIMEFileNameA*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      uBufLen: UINT,
+      szFileName: LPSTR,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetIMEFileNameW*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      uBufLen: UINT,
+      szFileName: LPWSTR,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
     GetOpenStatus*: proc(self: ptr IActiveIMMApp, hIMC: HIMC): HRESULT {.stdcall.}
-    GetProperty*: proc(self: ptr IActiveIMMApp, hKL: HKL, fdwIndex: DWORD, pdwProperty: ptr DWORD): HRESULT {.stdcall.}
-    GetRegisterWordStyleA*: proc(self: ptr IActiveIMMApp, hKL: HKL, nItem: UINT, pStyleBuf: ptr STYLEBUFA, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetRegisterWordStyleW*: proc(self: ptr IActiveIMMApp, hKL: HKL, nItem: UINT, pStyleBuf: ptr STYLEBUFW, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetStatusWindowPos*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, pptPos: ptr POINT): HRESULT {.stdcall.}
-    GetVirtualKey*: proc(self: ptr IActiveIMMApp, hWnd: HWND, puVirtualKey: ptr UINT): HRESULT {.stdcall.}
-    InstallIMEA*: proc(self: ptr IActiveIMMApp, szIMEFileName: LPSTR, szLayoutText: LPSTR, phKL: ptr HKL): HRESULT {.stdcall.}
-    InstallIMEW*: proc(self: ptr IActiveIMMApp, szIMEFileName: LPWSTR, szLayoutText: LPWSTR, phKL: ptr HKL): HRESULT {.stdcall.}
+    GetProperty*: proc(
+      self: ptr IActiveIMMApp, hKL: HKL, fdwIndex: DWORD, pdwProperty: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetRegisterWordStyleA*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      nItem: UINT,
+      pStyleBuf: ptr STYLEBUFA,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetRegisterWordStyleW*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      nItem: UINT,
+      pStyleBuf: ptr STYLEBUFW,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetStatusWindowPos*:
+      proc(self: ptr IActiveIMMApp, hIMC: HIMC, pptPos: ptr POINT): HRESULT {.stdcall.}
+    GetVirtualKey*: proc(
+      self: ptr IActiveIMMApp, hWnd: HWND, puVirtualKey: ptr UINT
+    ): HRESULT {.stdcall.}
+    InstallIMEA*: proc(
+      self: ptr IActiveIMMApp, szIMEFileName: LPSTR, szLayoutText: LPSTR, phKL: ptr HKL
+    ): HRESULT {.stdcall.}
+    InstallIMEW*: proc(
+      self: ptr IActiveIMMApp,
+      szIMEFileName: LPWSTR,
+      szLayoutText: LPWSTR,
+      phKL: ptr HKL,
+    ): HRESULT {.stdcall.}
     IsIME*: proc(self: ptr IActiveIMMApp, hKL: HKL): HRESULT {.stdcall.}
-    IsUIMessageA*: proc(self: ptr IActiveIMMApp, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.stdcall.}
-    IsUIMessageW*: proc(self: ptr IActiveIMMApp, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.stdcall.}
-    NotifyIME*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, dwAction: DWORD, dwIndex: DWORD, dwValue: DWORD): HRESULT {.stdcall.}
-    RegisterWordA*: proc(self: ptr IActiveIMMApp, hKL: HKL, szReading: LPSTR, dwStyle: DWORD, szRegister: LPSTR): HRESULT {.stdcall.}
-    RegisterWordW*: proc(self: ptr IActiveIMMApp, hKL: HKL, szReading: LPWSTR, dwStyle: DWORD, szRegister: LPWSTR): HRESULT {.stdcall.}
-    ReleaseContext*: proc(self: ptr IActiveIMMApp, hWnd: HWND, hIMC: HIMC): HRESULT {.stdcall.}
-    SetCandidateWindow*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, pCandidate: ptr CANDIDATEFORM): HRESULT {.stdcall.}
-    SetCompositionFontA*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTA): HRESULT {.stdcall.}
-    SetCompositionFontW*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTW): HRESULT {.stdcall.}
-    SetCompositionStringA*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, pComp: LPVOID, dwCompLen: DWORD, pRead: LPVOID, dwReadLen: DWORD): HRESULT {.stdcall.}
-    SetCompositionStringW*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, pComp: LPVOID, dwCompLen: DWORD, pRead: LPVOID, dwReadLen: DWORD): HRESULT {.stdcall.}
-    SetCompositionWindow*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM): HRESULT {.stdcall.}
-    SetConversionStatus*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, fdwConversion: DWORD, fdwSentence: DWORD): HRESULT {.stdcall.}
-    SetOpenStatus*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, fOpen: WINBOOL): HRESULT {.stdcall.}
-    SetStatusWindowPos*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, pptPos: ptr POINT): HRESULT {.stdcall.}
-    SimulateHotKey*: proc(self: ptr IActiveIMMApp, hWnd: HWND, dwHotKeyID: DWORD): HRESULT {.stdcall.}
-    UnregisterWordA*: proc(self: ptr IActiveIMMApp, hKL: HKL, szReading: LPSTR, dwStyle: DWORD, szUnregister: LPSTR): HRESULT {.stdcall.}
-    UnregisterWordW*: proc(self: ptr IActiveIMMApp, hKL: HKL, szReading: LPWSTR, dwStyle: DWORD, szUnregister: LPWSTR): HRESULT {.stdcall.}
-    Activate*: proc(self: ptr IActiveIMMApp, fRestoreLayout: WINBOOL): HRESULT {.stdcall.}
+    IsUIMessageA*: proc(
+      self: ptr IActiveIMMApp, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM
+    ): HRESULT {.stdcall.}
+    IsUIMessageW*: proc(
+      self: ptr IActiveIMMApp, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM
+    ): HRESULT {.stdcall.}
+    NotifyIME*: proc(
+      self: ptr IActiveIMMApp,
+      hIMC: HIMC,
+      dwAction: DWORD,
+      dwIndex: DWORD,
+      dwValue: DWORD,
+    ): HRESULT {.stdcall.}
+    RegisterWordA*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      szReading: LPSTR,
+      dwStyle: DWORD,
+      szRegister: LPSTR,
+    ): HRESULT {.stdcall.}
+    RegisterWordW*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      szReading: LPWSTR,
+      dwStyle: DWORD,
+      szRegister: LPWSTR,
+    ): HRESULT {.stdcall.}
+    ReleaseContext*:
+      proc(self: ptr IActiveIMMApp, hWnd: HWND, hIMC: HIMC): HRESULT {.stdcall.}
+    SetCandidateWindow*: proc(
+      self: ptr IActiveIMMApp, hIMC: HIMC, pCandidate: ptr CANDIDATEFORM
+    ): HRESULT {.stdcall.}
+    SetCompositionFontA*:
+      proc(self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTA): HRESULT {.stdcall.}
+    SetCompositionFontW*:
+      proc(self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTW): HRESULT {.stdcall.}
+    SetCompositionStringA*: proc(
+      self: ptr IActiveIMMApp,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      pComp: LPVOID,
+      dwCompLen: DWORD,
+      pRead: LPVOID,
+      dwReadLen: DWORD,
+    ): HRESULT {.stdcall.}
+    SetCompositionStringW*: proc(
+      self: ptr IActiveIMMApp,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      pComp: LPVOID,
+      dwCompLen: DWORD,
+      pRead: LPVOID,
+      dwReadLen: DWORD,
+    ): HRESULT {.stdcall.}
+    SetCompositionWindow*: proc(
+      self: ptr IActiveIMMApp, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM
+    ): HRESULT {.stdcall.}
+    SetConversionStatus*: proc(
+      self: ptr IActiveIMMApp, hIMC: HIMC, fdwConversion: DWORD, fdwSentence: DWORD
+    ): HRESULT {.stdcall.}
+    SetOpenStatus*:
+      proc(self: ptr IActiveIMMApp, hIMC: HIMC, fOpen: WINBOOL): HRESULT {.stdcall.}
+    SetStatusWindowPos*:
+      proc(self: ptr IActiveIMMApp, hIMC: HIMC, pptPos: ptr POINT): HRESULT {.stdcall.}
+    SimulateHotKey*:
+      proc(self: ptr IActiveIMMApp, hWnd: HWND, dwHotKeyID: DWORD): HRESULT {.stdcall.}
+    UnregisterWordA*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      szReading: LPSTR,
+      dwStyle: DWORD,
+      szUnregister: LPSTR,
+    ): HRESULT {.stdcall.}
+    UnregisterWordW*: proc(
+      self: ptr IActiveIMMApp,
+      hKL: HKL,
+      szReading: LPWSTR,
+      dwStyle: DWORD,
+      szUnregister: LPWSTR,
+    ): HRESULT {.stdcall.}
+    Activate*:
+      proc(self: ptr IActiveIMMApp, fRestoreLayout: WINBOOL): HRESULT {.stdcall.}
     Deactivate*: proc(self: ptr IActiveIMMApp): HRESULT {.stdcall.}
-    OnDefWindowProc*: proc(self: ptr IActiveIMMApp, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.stdcall.}
-    FilterClientWindows*: proc(self: ptr IActiveIMMApp, aaClassList: ptr ATOM, uSize: UINT): HRESULT {.stdcall.}
-    GetCodePageA*: proc(self: ptr IActiveIMMApp, hKL: HKL, uCodePage: ptr UINT): HRESULT {.stdcall.}
-    GetLangId*: proc(self: ptr IActiveIMMApp, hKL: HKL, plid: ptr LANGID): HRESULT {.stdcall.}
-    AssociateContextEx*: proc(self: ptr IActiveIMMApp, hWnd: HWND, hIMC: HIMC, dwFlags: DWORD): HRESULT {.stdcall.}
+    OnDefWindowProc*: proc(
+      self: ptr IActiveIMMApp,
+      hWnd: HWND,
+      Msg: UINT,
+      wParam: WPARAM,
+      lParam: LPARAM,
+      plResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+    FilterClientWindows*: proc(
+      self: ptr IActiveIMMApp, aaClassList: ptr ATOM, uSize: UINT
+    ): HRESULT {.stdcall.}
+    GetCodePageA*:
+      proc(self: ptr IActiveIMMApp, hKL: HKL, uCodePage: ptr UINT): HRESULT {.stdcall.}
+    GetLangId*:
+      proc(self: ptr IActiveIMMApp, hKL: HKL, plid: ptr LANGID): HRESULT {.stdcall.}
+    AssociateContextEx*: proc(
+      self: ptr IActiveIMMApp, hWnd: HWND, hIMC: HIMC, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
     DisableIME*: proc(self: ptr IActiveIMMApp, idThread: DWORD): HRESULT {.stdcall.}
-    GetImeMenuItemsA*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, dwFlags: DWORD, dwType: DWORD, pImeParentMenu: ptr IMEMENUITEMINFOA, pImeMenu: ptr IMEMENUITEMINFOA, dwSize: DWORD, pdwResult: ptr DWORD): HRESULT {.stdcall.}
-    GetImeMenuItemsW*: proc(self: ptr IActiveIMMApp, hIMC: HIMC, dwFlags: DWORD, dwType: DWORD, pImeParentMenu: ptr IMEMENUITEMINFOW, pImeMenu: ptr IMEMENUITEMINFOW, dwSize: DWORD, pdwResult: ptr DWORD): HRESULT {.stdcall.}
-    EnumInputContext*: proc(self: ptr IActiveIMMApp, idThread: DWORD, ppEnum: ptr ptr IEnumInputContext): HRESULT {.stdcall.}
+    GetImeMenuItemsA*: proc(
+      self: ptr IActiveIMMApp,
+      hIMC: HIMC,
+      dwFlags: DWORD,
+      dwType: DWORD,
+      pImeParentMenu: ptr IMEMENUITEMINFOA,
+      pImeMenu: ptr IMEMENUITEMINFOA,
+      dwSize: DWORD,
+      pdwResult: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetImeMenuItemsW*: proc(
+      self: ptr IActiveIMMApp,
+      hIMC: HIMC,
+      dwFlags: DWORD,
+      dwType: DWORD,
+      pImeParentMenu: ptr IMEMENUITEMINFOW,
+      pImeMenu: ptr IMEMENUITEMINFOW,
+      dwSize: DWORD,
+      pdwResult: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    EnumInputContext*: proc(
+      self: ptr IActiveIMMApp, idThread: DWORD, ppEnum: ptr ptr IEnumInputContext
+    ): HRESULT {.stdcall.}
+
   IActiveIMMIME* {.pure.} = object
     lpVtbl*: ptr IActiveIMMIMEVtbl
+
   IActiveIMMIMEVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AssociateContext*: proc(self: ptr IActiveIMMIME, hWnd: HWND, hIME: HIMC, phPrev: ptr HIMC): HRESULT {.stdcall.}
-    ConfigureIMEA*: proc(self: ptr IActiveIMMIME, hKL: HKL, hWnd: HWND, dwMode: DWORD, pData: ptr REGISTERWORDA): HRESULT {.stdcall.}
-    ConfigureIMEW*: proc(self: ptr IActiveIMMIME, hKL: HKL, hWnd: HWND, dwMode: DWORD, pData: ptr REGISTERWORDW): HRESULT {.stdcall.}
+    AssociateContext*: proc(
+      self: ptr IActiveIMMIME, hWnd: HWND, hIME: HIMC, phPrev: ptr HIMC
+    ): HRESULT {.stdcall.}
+    ConfigureIMEA*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      hWnd: HWND,
+      dwMode: DWORD,
+      pData: ptr REGISTERWORDA,
+    ): HRESULT {.stdcall.}
+    ConfigureIMEW*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      hWnd: HWND,
+      dwMode: DWORD,
+      pData: ptr REGISTERWORDW,
+    ): HRESULT {.stdcall.}
     CreateContext*: proc(self: ptr IActiveIMMIME, phIMC: ptr HIMC): HRESULT {.stdcall.}
     DestroyContext*: proc(self: ptr IActiveIMMIME, hIME: HIMC): HRESULT {.stdcall.}
-    EnumRegisterWordA*: proc(self: ptr IActiveIMMIME, hKL: HKL, szReading: LPSTR, dwStyle: DWORD, szRegister: LPSTR, pData: LPVOID, pEnum: ptr ptr IEnumRegisterWordA): HRESULT {.stdcall.}
-    EnumRegisterWordW*: proc(self: ptr IActiveIMMIME, hKL: HKL, szReading: LPWSTR, dwStyle: DWORD, szRegister: LPWSTR, pData: LPVOID, pEnum: ptr ptr IEnumRegisterWordW): HRESULT {.stdcall.}
-    EscapeA*: proc(self: ptr IActiveIMMIME, hKL: HKL, hIMC: HIMC, uEscape: UINT, pData: LPVOID, plResult: ptr LRESULT): HRESULT {.stdcall.}
-    EscapeW*: proc(self: ptr IActiveIMMIME, hKL: HKL, hIMC: HIMC, uEscape: UINT, pData: LPVOID, plResult: ptr LRESULT): HRESULT {.stdcall.}
-    GetCandidateListA*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, uBufLen: UINT, pCandList: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetCandidateListW*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, uBufLen: UINT, pCandList: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetCandidateListCountA*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD): HRESULT {.stdcall.}
-    GetCandidateListCountW*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD): HRESULT {.stdcall.}
-    GetCandidateWindow*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, pCandidate: ptr CANDIDATEFORM): HRESULT {.stdcall.}
-    GetCompositionFontA*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTA): HRESULT {.stdcall.}
-    GetCompositionFontW*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTW): HRESULT {.stdcall.}
-    GetCompositionStringA*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, plCopied: ptr LONG, pBuf: LPVOID): HRESULT {.stdcall.}
-    GetCompositionStringW*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, plCopied: ptr LONG, pBuf: LPVOID): HRESULT {.stdcall.}
-    GetCompositionWindow*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM): HRESULT {.stdcall.}
-    GetContext*: proc(self: ptr IActiveIMMIME, hWnd: HWND, phIMC: ptr HIMC): HRESULT {.stdcall.}
-    GetConversionListA*: proc(self: ptr IActiveIMMIME, hKL: HKL, hIMC: HIMC, pSrc: LPSTR, uBufLen: UINT, uFlag: UINT, pDst: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetConversionListW*: proc(self: ptr IActiveIMMIME, hKL: HKL, hIMC: HIMC, pSrc: LPWSTR, uBufLen: UINT, uFlag: UINT, pDst: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetConversionStatus*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, pfdwConversion: ptr DWORD, pfdwSentence: ptr DWORD): HRESULT {.stdcall.}
-    GetDefaultIMEWnd*: proc(self: ptr IActiveIMMIME, hWnd: HWND, phDefWnd: ptr HWND): HRESULT {.stdcall.}
-    GetDescriptionA*: proc(self: ptr IActiveIMMIME, hKL: HKL, uBufLen: UINT, szDescription: LPSTR, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetDescriptionW*: proc(self: ptr IActiveIMMIME, hKL: HKL, uBufLen: UINT, szDescription: LPWSTR, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetGuideLineA*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, pBuf: LPSTR, pdwResult: ptr DWORD): HRESULT {.stdcall.}
-    GetGuideLineW*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, pBuf: LPWSTR, pdwResult: ptr DWORD): HRESULT {.stdcall.}
-    GetIMEFileNameA*: proc(self: ptr IActiveIMMIME, hKL: HKL, uBufLen: UINT, szFileName: LPSTR, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetIMEFileNameW*: proc(self: ptr IActiveIMMIME, hKL: HKL, uBufLen: UINT, szFileName: LPWSTR, puCopied: ptr UINT): HRESULT {.stdcall.}
+    EnumRegisterWordA*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      szReading: LPSTR,
+      dwStyle: DWORD,
+      szRegister: LPSTR,
+      pData: LPVOID,
+      pEnum: ptr ptr IEnumRegisterWordA,
+    ): HRESULT {.stdcall.}
+    EnumRegisterWordW*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      szReading: LPWSTR,
+      dwStyle: DWORD,
+      szRegister: LPWSTR,
+      pData: LPVOID,
+      pEnum: ptr ptr IEnumRegisterWordW,
+    ): HRESULT {.stdcall.}
+    EscapeA*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      hIMC: HIMC,
+      uEscape: UINT,
+      pData: LPVOID,
+      plResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+    EscapeW*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      hIMC: HIMC,
+      uEscape: UINT,
+      pData: LPVOID,
+      plResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+    GetCandidateListA*: proc(
+      self: ptr IActiveIMMIME,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      uBufLen: UINT,
+      pCandList: ptr CANDIDATELIST,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetCandidateListW*: proc(
+      self: ptr IActiveIMMIME,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      uBufLen: UINT,
+      pCandList: ptr CANDIDATELIST,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetCandidateListCountA*: proc(
+      self: ptr IActiveIMMIME, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetCandidateListCountW*: proc(
+      self: ptr IActiveIMMIME, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetCandidateWindow*: proc(
+      self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, pCandidate: ptr CANDIDATEFORM
+    ): HRESULT {.stdcall.}
+    GetCompositionFontA*:
+      proc(self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTA): HRESULT {.stdcall.}
+    GetCompositionFontW*:
+      proc(self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTW): HRESULT {.stdcall.}
+    GetCompositionStringA*: proc(
+      self: ptr IActiveIMMIME,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      dwBufLen: DWORD,
+      plCopied: ptr LONG,
+      pBuf: LPVOID,
+    ): HRESULT {.stdcall.}
+    GetCompositionStringW*: proc(
+      self: ptr IActiveIMMIME,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      dwBufLen: DWORD,
+      plCopied: ptr LONG,
+      pBuf: LPVOID,
+    ): HRESULT {.stdcall.}
+    GetCompositionWindow*: proc(
+      self: ptr IActiveIMMIME, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM
+    ): HRESULT {.stdcall.}
+    GetContext*:
+      proc(self: ptr IActiveIMMIME, hWnd: HWND, phIMC: ptr HIMC): HRESULT {.stdcall.}
+    GetConversionListA*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      hIMC: HIMC,
+      pSrc: LPSTR,
+      uBufLen: UINT,
+      uFlag: UINT,
+      pDst: ptr CANDIDATELIST,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetConversionListW*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      hIMC: HIMC,
+      pSrc: LPWSTR,
+      uBufLen: UINT,
+      uFlag: UINT,
+      pDst: ptr CANDIDATELIST,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetConversionStatus*: proc(
+      self: ptr IActiveIMMIME,
+      hIMC: HIMC,
+      pfdwConversion: ptr DWORD,
+      pfdwSentence: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetDefaultIMEWnd*:
+      proc(self: ptr IActiveIMMIME, hWnd: HWND, phDefWnd: ptr HWND): HRESULT {.stdcall.}
+    GetDescriptionA*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      uBufLen: UINT,
+      szDescription: LPSTR,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetDescriptionW*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      uBufLen: UINT,
+      szDescription: LPWSTR,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetGuideLineA*: proc(
+      self: ptr IActiveIMMIME,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      dwBufLen: DWORD,
+      pBuf: LPSTR,
+      pdwResult: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetGuideLineW*: proc(
+      self: ptr IActiveIMMIME,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      dwBufLen: DWORD,
+      pBuf: LPWSTR,
+      pdwResult: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetIMEFileNameA*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      uBufLen: UINT,
+      szFileName: LPSTR,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetIMEFileNameW*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      uBufLen: UINT,
+      szFileName: LPWSTR,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
     GetOpenStatus*: proc(self: ptr IActiveIMMIME, hIMC: HIMC): HRESULT {.stdcall.}
-    GetProperty*: proc(self: ptr IActiveIMMIME, hKL: HKL, fdwIndex: DWORD, pdwProperty: ptr DWORD): HRESULT {.stdcall.}
-    GetRegisterWordStyleA*: proc(self: ptr IActiveIMMIME, hKL: HKL, nItem: UINT, pStyleBuf: ptr STYLEBUFA, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetRegisterWordStyleW*: proc(self: ptr IActiveIMMIME, hKL: HKL, nItem: UINT, pStyleBuf: ptr STYLEBUFW, puCopied: ptr UINT): HRESULT {.stdcall.}
-    GetStatusWindowPos*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, pptPos: ptr POINT): HRESULT {.stdcall.}
-    GetVirtualKey*: proc(self: ptr IActiveIMMIME, hWnd: HWND, puVirtualKey: ptr UINT): HRESULT {.stdcall.}
-    InstallIMEA*: proc(self: ptr IActiveIMMIME, szIMEFileName: LPSTR, szLayoutText: LPSTR, phKL: ptr HKL): HRESULT {.stdcall.}
-    InstallIMEW*: proc(self: ptr IActiveIMMIME, szIMEFileName: LPWSTR, szLayoutText: LPWSTR, phKL: ptr HKL): HRESULT {.stdcall.}
+    GetProperty*: proc(
+      self: ptr IActiveIMMIME, hKL: HKL, fdwIndex: DWORD, pdwProperty: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetRegisterWordStyleA*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      nItem: UINT,
+      pStyleBuf: ptr STYLEBUFA,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetRegisterWordStyleW*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      nItem: UINT,
+      pStyleBuf: ptr STYLEBUFW,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetStatusWindowPos*:
+      proc(self: ptr IActiveIMMIME, hIMC: HIMC, pptPos: ptr POINT): HRESULT {.stdcall.}
+    GetVirtualKey*: proc(
+      self: ptr IActiveIMMIME, hWnd: HWND, puVirtualKey: ptr UINT
+    ): HRESULT {.stdcall.}
+    InstallIMEA*: proc(
+      self: ptr IActiveIMMIME, szIMEFileName: LPSTR, szLayoutText: LPSTR, phKL: ptr HKL
+    ): HRESULT {.stdcall.}
+    InstallIMEW*: proc(
+      self: ptr IActiveIMMIME,
+      szIMEFileName: LPWSTR,
+      szLayoutText: LPWSTR,
+      phKL: ptr HKL,
+    ): HRESULT {.stdcall.}
     IsIME*: proc(self: ptr IActiveIMMIME, hKL: HKL): HRESULT {.stdcall.}
-    IsUIMessageA*: proc(self: ptr IActiveIMMIME, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.stdcall.}
-    IsUIMessageW*: proc(self: ptr IActiveIMMIME, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.stdcall.}
-    NotifyIME*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, dwAction: DWORD, dwIndex: DWORD, dwValue: DWORD): HRESULT {.stdcall.}
-    RegisterWordA*: proc(self: ptr IActiveIMMIME, hKL: HKL, szReading: LPSTR, dwStyle: DWORD, szRegister: LPSTR): HRESULT {.stdcall.}
-    RegisterWordW*: proc(self: ptr IActiveIMMIME, hKL: HKL, szReading: LPWSTR, dwStyle: DWORD, szRegister: LPWSTR): HRESULT {.stdcall.}
-    ReleaseContext*: proc(self: ptr IActiveIMMIME, hWnd: HWND, hIMC: HIMC): HRESULT {.stdcall.}
-    SetCandidateWindow*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, pCandidate: ptr CANDIDATEFORM): HRESULT {.stdcall.}
-    SetCompositionFontA*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTA): HRESULT {.stdcall.}
-    SetCompositionFontW*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTW): HRESULT {.stdcall.}
-    SetCompositionStringA*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, pComp: LPVOID, dwCompLen: DWORD, pRead: LPVOID, dwReadLen: DWORD): HRESULT {.stdcall.}
-    SetCompositionStringW*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, pComp: LPVOID, dwCompLen: DWORD, pRead: LPVOID, dwReadLen: DWORD): HRESULT {.stdcall.}
-    SetCompositionWindow*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM): HRESULT {.stdcall.}
-    SetConversionStatus*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, fdwConversion: DWORD, fdwSentence: DWORD): HRESULT {.stdcall.}
-    SetOpenStatus*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, fOpen: WINBOOL): HRESULT {.stdcall.}
-    SetStatusWindowPos*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, pptPos: ptr POINT): HRESULT {.stdcall.}
-    SimulateHotKey*: proc(self: ptr IActiveIMMIME, hWnd: HWND, dwHotKeyID: DWORD): HRESULT {.stdcall.}
-    UnregisterWordA*: proc(self: ptr IActiveIMMIME, hKL: HKL, szReading: LPSTR, dwStyle: DWORD, szUnregister: LPSTR): HRESULT {.stdcall.}
-    UnregisterWordW*: proc(self: ptr IActiveIMMIME, hKL: HKL, szReading: LPWSTR, dwStyle: DWORD, szUnregister: LPWSTR): HRESULT {.stdcall.}
+    IsUIMessageA*: proc(
+      self: ptr IActiveIMMIME, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM
+    ): HRESULT {.stdcall.}
+    IsUIMessageW*: proc(
+      self: ptr IActiveIMMIME, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM
+    ): HRESULT {.stdcall.}
+    NotifyIME*: proc(
+      self: ptr IActiveIMMIME,
+      hIMC: HIMC,
+      dwAction: DWORD,
+      dwIndex: DWORD,
+      dwValue: DWORD,
+    ): HRESULT {.stdcall.}
+    RegisterWordA*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      szReading: LPSTR,
+      dwStyle: DWORD,
+      szRegister: LPSTR,
+    ): HRESULT {.stdcall.}
+    RegisterWordW*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      szReading: LPWSTR,
+      dwStyle: DWORD,
+      szRegister: LPWSTR,
+    ): HRESULT {.stdcall.}
+    ReleaseContext*:
+      proc(self: ptr IActiveIMMIME, hWnd: HWND, hIMC: HIMC): HRESULT {.stdcall.}
+    SetCandidateWindow*: proc(
+      self: ptr IActiveIMMIME, hIMC: HIMC, pCandidate: ptr CANDIDATEFORM
+    ): HRESULT {.stdcall.}
+    SetCompositionFontA*:
+      proc(self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTA): HRESULT {.stdcall.}
+    SetCompositionFontW*:
+      proc(self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTW): HRESULT {.stdcall.}
+    SetCompositionStringA*: proc(
+      self: ptr IActiveIMMIME,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      pComp: LPVOID,
+      dwCompLen: DWORD,
+      pRead: LPVOID,
+      dwReadLen: DWORD,
+    ): HRESULT {.stdcall.}
+    SetCompositionStringW*: proc(
+      self: ptr IActiveIMMIME,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      pComp: LPVOID,
+      dwCompLen: DWORD,
+      pRead: LPVOID,
+      dwReadLen: DWORD,
+    ): HRESULT {.stdcall.}
+    SetCompositionWindow*: proc(
+      self: ptr IActiveIMMIME, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM
+    ): HRESULT {.stdcall.}
+    SetConversionStatus*: proc(
+      self: ptr IActiveIMMIME, hIMC: HIMC, fdwConversion: DWORD, fdwSentence: DWORD
+    ): HRESULT {.stdcall.}
+    SetOpenStatus*:
+      proc(self: ptr IActiveIMMIME, hIMC: HIMC, fOpen: WINBOOL): HRESULT {.stdcall.}
+    SetStatusWindowPos*:
+      proc(self: ptr IActiveIMMIME, hIMC: HIMC, pptPos: ptr POINT): HRESULT {.stdcall.}
+    SimulateHotKey*:
+      proc(self: ptr IActiveIMMIME, hWnd: HWND, dwHotKeyID: DWORD): HRESULT {.stdcall.}
+    UnregisterWordA*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      szReading: LPSTR,
+      dwStyle: DWORD,
+      szUnregister: LPSTR,
+    ): HRESULT {.stdcall.}
+    UnregisterWordW*: proc(
+      self: ptr IActiveIMMIME,
+      hKL: HKL,
+      szReading: LPWSTR,
+      dwStyle: DWORD,
+      szUnregister: LPWSTR,
+    ): HRESULT {.stdcall.}
     GenerateMessage*: proc(self: ptr IActiveIMMIME, hIMC: HIMC): HRESULT {.stdcall.}
-    LockIMC*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, ppIMC: ptr ptr INPUTCONTEXT): HRESULT {.stdcall.}
+    LockIMC*: proc(
+      self: ptr IActiveIMMIME, hIMC: HIMC, ppIMC: ptr ptr INPUTCONTEXT
+    ): HRESULT {.stdcall.}
     UnlockIMC*: proc(self: ptr IActiveIMMIME, hIMC: HIMC): HRESULT {.stdcall.}
-    GetIMCLockCount*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, pdwLockCount: ptr DWORD): HRESULT {.stdcall.}
-    CreateIMCC*: proc(self: ptr IActiveIMMIME, dwSize: DWORD, phIMCC: ptr HIMCC): HRESULT {.stdcall.}
+    GetIMCLockCount*: proc(
+      self: ptr IActiveIMMIME, hIMC: HIMC, pdwLockCount: ptr DWORD
+    ): HRESULT {.stdcall.}
+    CreateIMCC*: proc(
+      self: ptr IActiveIMMIME, dwSize: DWORD, phIMCC: ptr HIMCC
+    ): HRESULT {.stdcall.}
     DestroyIMCC*: proc(self: ptr IActiveIMMIME, hIMCC: HIMCC): HRESULT {.stdcall.}
-    LockIMCC*: proc(self: ptr IActiveIMMIME, hIMCC: HIMCC, ppv: ptr pointer): HRESULT {.stdcall.}
+    LockIMCC*:
+      proc(self: ptr IActiveIMMIME, hIMCC: HIMCC, ppv: ptr pointer): HRESULT {.stdcall.}
     UnlockIMCC*: proc(self: ptr IActiveIMMIME, hIMCC: HIMCC): HRESULT {.stdcall.}
-    ReSizeIMCC*: proc(self: ptr IActiveIMMIME, hIMCC: HIMCC, dwSize: DWORD, phIMCC: ptr HIMCC): HRESULT {.stdcall.}
-    GetIMCCSize*: proc(self: ptr IActiveIMMIME, hIMCC: HIMCC, pdwSize: ptr DWORD): HRESULT {.stdcall.}
-    GetIMCCLockCount*: proc(self: ptr IActiveIMMIME, hIMCC: HIMCC, pdwLockCount: ptr DWORD): HRESULT {.stdcall.}
-    GetHotKey*: proc(self: ptr IActiveIMMIME, dwHotKeyID: DWORD, puModifiers: ptr UINT, puVKey: ptr UINT, phKL: ptr HKL): HRESULT {.stdcall.}
-    SetHotKey*: proc(self: ptr IActiveIMMIME, dwHotKeyID: DWORD, uModifiers: UINT, uVKey: UINT, hKL: HKL): HRESULT {.stdcall.}
-    CreateSoftKeyboard*: proc(self: ptr IActiveIMMIME, uType: UINT, hOwner: HWND, x: int32, y: int32, phSoftKbdWnd: ptr HWND): HRESULT {.stdcall.}
-    DestroySoftKeyboard*: proc(self: ptr IActiveIMMIME, hSoftKbdWnd: HWND): HRESULT {.stdcall.}
-    ShowSoftKeyboard*: proc(self: ptr IActiveIMMIME, hSoftKbdWnd: HWND, nCmdShow: int32): HRESULT {.stdcall.}
-    GetCodePageA*: proc(self: ptr IActiveIMMIME, hKL: HKL, uCodePage: ptr UINT): HRESULT {.stdcall.}
-    GetLangId*: proc(self: ptr IActiveIMMIME, hKL: HKL, plid: ptr LANGID): HRESULT {.stdcall.}
-    KeybdEvent*: proc(self: ptr IActiveIMMIME, lgidIME: LANGID, bVk: BYTE, bScan: BYTE, dwFlags: DWORD, dwExtraInfo: DWORD): HRESULT {.stdcall.}
+    ReSizeIMCC*: proc(
+      self: ptr IActiveIMMIME, hIMCC: HIMCC, dwSize: DWORD, phIMCC: ptr HIMCC
+    ): HRESULT {.stdcall.}
+    GetIMCCSize*: proc(
+      self: ptr IActiveIMMIME, hIMCC: HIMCC, pdwSize: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetIMCCLockCount*: proc(
+      self: ptr IActiveIMMIME, hIMCC: HIMCC, pdwLockCount: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetHotKey*: proc(
+      self: ptr IActiveIMMIME,
+      dwHotKeyID: DWORD,
+      puModifiers: ptr UINT,
+      puVKey: ptr UINT,
+      phKL: ptr HKL,
+    ): HRESULT {.stdcall.}
+    SetHotKey*: proc(
+      self: ptr IActiveIMMIME,
+      dwHotKeyID: DWORD,
+      uModifiers: UINT,
+      uVKey: UINT,
+      hKL: HKL,
+    ): HRESULT {.stdcall.}
+    CreateSoftKeyboard*: proc(
+      self: ptr IActiveIMMIME,
+      uType: UINT,
+      hOwner: HWND,
+      x: int32,
+      y: int32,
+      phSoftKbdWnd: ptr HWND,
+    ): HRESULT {.stdcall.}
+    DestroySoftKeyboard*:
+      proc(self: ptr IActiveIMMIME, hSoftKbdWnd: HWND): HRESULT {.stdcall.}
+    ShowSoftKeyboard*: proc(
+      self: ptr IActiveIMMIME, hSoftKbdWnd: HWND, nCmdShow: int32
+    ): HRESULT {.stdcall.}
+    GetCodePageA*:
+      proc(self: ptr IActiveIMMIME, hKL: HKL, uCodePage: ptr UINT): HRESULT {.stdcall.}
+    GetLangId*:
+      proc(self: ptr IActiveIMMIME, hKL: HKL, plid: ptr LANGID): HRESULT {.stdcall.}
+    KeybdEvent*: proc(
+      self: ptr IActiveIMMIME,
+      lgidIME: LANGID,
+      bVk: BYTE,
+      bScan: BYTE,
+      dwFlags: DWORD,
+      dwExtraInfo: DWORD,
+    ): HRESULT {.stdcall.}
     LockModal*: proc(self: ptr IActiveIMMIME): HRESULT {.stdcall.}
     UnlockModal*: proc(self: ptr IActiveIMMIME): HRESULT {.stdcall.}
-    AssociateContextEx*: proc(self: ptr IActiveIMMIME, hWnd: HWND, hIMC: HIMC, dwFlags: DWORD): HRESULT {.stdcall.}
+    AssociateContextEx*: proc(
+      self: ptr IActiveIMMIME, hWnd: HWND, hIMC: HIMC, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
     DisableIME*: proc(self: ptr IActiveIMMIME, idThread: DWORD): HRESULT {.stdcall.}
-    GetImeMenuItemsA*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, dwFlags: DWORD, dwType: DWORD, pImeParentMenu: ptr IMEMENUITEMINFOA, pImeMenu: ptr IMEMENUITEMINFOA, dwSize: DWORD, pdwResult: ptr DWORD): HRESULT {.stdcall.}
-    GetImeMenuItemsW*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, dwFlags: DWORD, dwType: DWORD, pImeParentMenu: ptr IMEMENUITEMINFOW, pImeMenu: ptr IMEMENUITEMINFOW, dwSize: DWORD, pdwResult: ptr DWORD): HRESULT {.stdcall.}
-    EnumInputContext*: proc(self: ptr IActiveIMMIME, idThread: DWORD, ppEnum: ptr ptr IEnumInputContext): HRESULT {.stdcall.}
-    RequestMessageA*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.stdcall.}
-    RequestMessageW*: proc(self: ptr IActiveIMMIME, hIMC: HIMC, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.stdcall.}
-    SendIMCA*: proc(self: ptr IActiveIMMIME, hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.stdcall.}
-    SendIMCW*: proc(self: ptr IActiveIMMIME, hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.stdcall.}
+    GetImeMenuItemsA*: proc(
+      self: ptr IActiveIMMIME,
+      hIMC: HIMC,
+      dwFlags: DWORD,
+      dwType: DWORD,
+      pImeParentMenu: ptr IMEMENUITEMINFOA,
+      pImeMenu: ptr IMEMENUITEMINFOA,
+      dwSize: DWORD,
+      pdwResult: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetImeMenuItemsW*: proc(
+      self: ptr IActiveIMMIME,
+      hIMC: HIMC,
+      dwFlags: DWORD,
+      dwType: DWORD,
+      pImeParentMenu: ptr IMEMENUITEMINFOW,
+      pImeMenu: ptr IMEMENUITEMINFOW,
+      dwSize: DWORD,
+      pdwResult: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    EnumInputContext*: proc(
+      self: ptr IActiveIMMIME, idThread: DWORD, ppEnum: ptr ptr IEnumInputContext
+    ): HRESULT {.stdcall.}
+    RequestMessageA*: proc(
+      self: ptr IActiveIMMIME,
+      hIMC: HIMC,
+      wParam: WPARAM,
+      lParam: LPARAM,
+      plResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+    RequestMessageW*: proc(
+      self: ptr IActiveIMMIME,
+      hIMC: HIMC,
+      wParam: WPARAM,
+      lParam: LPARAM,
+      plResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+    SendIMCA*: proc(
+      self: ptr IActiveIMMIME,
+      hWnd: HWND,
+      uMsg: UINT,
+      wParam: WPARAM,
+      lParam: LPARAM,
+      plResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+    SendIMCW*: proc(
+      self: ptr IActiveIMMIME,
+      hWnd: HWND,
+      uMsg: UINT,
+      wParam: WPARAM,
+      lParam: LPARAM,
+      plResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
     IsSleeping*: proc(self: ptr IActiveIMMIME): HRESULT {.stdcall.}
+
   IActiveIME* {.pure.} = object
     lpVtbl*: ptr IActiveIMEVtbl
+
   IActiveIMEVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Inquire*: proc(self: ptr IActiveIME, dwSystemInfoFlags: DWORD, pIMEInfo: ptr IMEINFO, szWndClass: LPWSTR, pdwPrivate: ptr DWORD): HRESULT {.stdcall.}
-    ConversionList*: proc(self: ptr IActiveIME, hIMC: HIMC, szSource: LPWSTR, uFlag: UINT, uBufLen: UINT, pDest: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.stdcall.}
-    Configure*: proc(self: ptr IActiveIME, hKL: HKL, hWnd: HWND, dwMode: DWORD, pRegisterWord: ptr REGISTERWORDW): HRESULT {.stdcall.}
+    Inquire*: proc(
+      self: ptr IActiveIME,
+      dwSystemInfoFlags: DWORD,
+      pIMEInfo: ptr IMEINFO,
+      szWndClass: LPWSTR,
+      pdwPrivate: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    ConversionList*: proc(
+      self: ptr IActiveIME,
+      hIMC: HIMC,
+      szSource: LPWSTR,
+      uFlag: UINT,
+      uBufLen: UINT,
+      pDest: ptr CANDIDATELIST,
+      puCopied: ptr UINT,
+    ): HRESULT {.stdcall.}
+    Configure*: proc(
+      self: ptr IActiveIME,
+      hKL: HKL,
+      hWnd: HWND,
+      dwMode: DWORD,
+      pRegisterWord: ptr REGISTERWORDW,
+    ): HRESULT {.stdcall.}
     Destroy*: proc(self: ptr IActiveIME, uReserved: UINT): HRESULT {.stdcall.}
-    Escape*: proc(self: ptr IActiveIME, hIMC: HIMC, uEscape: UINT, pData: pointer, plResult: ptr LRESULT): HRESULT {.stdcall.}
-    SetActiveContext*: proc(self: ptr IActiveIME, hIMC: HIMC, fFlag: WINBOOL): HRESULT {.stdcall.}
-    ProcessKey*: proc(self: ptr IActiveIME, hIMC: HIMC, uVirKey: UINT, lParam: DWORD, pbKeyState: ptr BYTE): HRESULT {.stdcall.}
-    Notify*: proc(self: ptr IActiveIME, hIMC: HIMC, dwAction: DWORD, dwIndex: DWORD, dwValue: DWORD): HRESULT {.stdcall.}
-    Select*: proc(self: ptr IActiveIME, hIMC: HIMC, fSelect: WINBOOL): HRESULT {.stdcall.}
-    SetCompositionString*: proc(self: ptr IActiveIME, hIMC: HIMC, dwIndex: DWORD, pComp: pointer, dwCompLen: DWORD, pRead: pointer, dwReadLen: DWORD): HRESULT {.stdcall.}
-    ToAsciiEx*: proc(self: ptr IActiveIME, uVirKey: UINT, uScanCode: UINT, pbKeyState: ptr BYTE, fuState: UINT, hIMC: HIMC, pdwTransBuf: ptr DWORD, puSize: ptr UINT): HRESULT {.stdcall.}
-    RegisterWord*: proc(self: ptr IActiveIME, szReading: LPWSTR, dwStyle: DWORD, szString: LPWSTR): HRESULT {.stdcall.}
-    UnregisterWord*: proc(self: ptr IActiveIME, szReading: LPWSTR, dwStyle: DWORD, szString: LPWSTR): HRESULT {.stdcall.}
-    GetRegisterWordStyle*: proc(self: ptr IActiveIME, nItem: UINT, pStyleBuf: ptr STYLEBUFW, puBufSize: ptr UINT): HRESULT {.stdcall.}
-    EnumRegisterWord*: proc(self: ptr IActiveIME, szReading: LPWSTR, dwStyle: DWORD, szRegister: LPWSTR, pData: LPVOID, ppEnum: ptr ptr IEnumRegisterWordW): HRESULT {.stdcall.}
+    Escape*: proc(
+      self: ptr IActiveIME,
+      hIMC: HIMC,
+      uEscape: UINT,
+      pData: pointer,
+      plResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+    SetActiveContext*:
+      proc(self: ptr IActiveIME, hIMC: HIMC, fFlag: WINBOOL): HRESULT {.stdcall.}
+    ProcessKey*: proc(
+      self: ptr IActiveIME,
+      hIMC: HIMC,
+      uVirKey: UINT,
+      lParam: DWORD,
+      pbKeyState: ptr BYTE,
+    ): HRESULT {.stdcall.}
+    Notify*: proc(
+      self: ptr IActiveIME, hIMC: HIMC, dwAction: DWORD, dwIndex: DWORD, dwValue: DWORD
+    ): HRESULT {.stdcall.}
+    Select*:
+      proc(self: ptr IActiveIME, hIMC: HIMC, fSelect: WINBOOL): HRESULT {.stdcall.}
+    SetCompositionString*: proc(
+      self: ptr IActiveIME,
+      hIMC: HIMC,
+      dwIndex: DWORD,
+      pComp: pointer,
+      dwCompLen: DWORD,
+      pRead: pointer,
+      dwReadLen: DWORD,
+    ): HRESULT {.stdcall.}
+    ToAsciiEx*: proc(
+      self: ptr IActiveIME,
+      uVirKey: UINT,
+      uScanCode: UINT,
+      pbKeyState: ptr BYTE,
+      fuState: UINT,
+      hIMC: HIMC,
+      pdwTransBuf: ptr DWORD,
+      puSize: ptr UINT,
+    ): HRESULT {.stdcall.}
+    RegisterWord*: proc(
+      self: ptr IActiveIME, szReading: LPWSTR, dwStyle: DWORD, szString: LPWSTR
+    ): HRESULT {.stdcall.}
+    UnregisterWord*: proc(
+      self: ptr IActiveIME, szReading: LPWSTR, dwStyle: DWORD, szString: LPWSTR
+    ): HRESULT {.stdcall.}
+    GetRegisterWordStyle*: proc(
+      self: ptr IActiveIME, nItem: UINT, pStyleBuf: ptr STYLEBUFW, puBufSize: ptr UINT
+    ): HRESULT {.stdcall.}
+    EnumRegisterWord*: proc(
+      self: ptr IActiveIME,
+      szReading: LPWSTR,
+      dwStyle: DWORD,
+      szRegister: LPWSTR,
+      pData: LPVOID,
+      ppEnum: ptr ptr IEnumRegisterWordW,
+    ): HRESULT {.stdcall.}
     GetCodePageA*: proc(self: ptr IActiveIME, uCodePage: ptr UINT): HRESULT {.stdcall.}
     GetLangId*: proc(self: ptr IActiveIME, plid: ptr LANGID): HRESULT {.stdcall.}
+
   IActiveIME2* {.pure.} = object
     lpVtbl*: ptr IActiveIME2Vtbl
+
   IActiveIME2Vtbl* {.pure, inheritable.} = object of IActiveIMEVtbl
     Sleep*: proc(self: ptr IActiveIME2): HRESULT {.stdcall.}
     Unsleep*: proc(self: ptr IActiveIME2, fDead: WINBOOL): HRESULT {.stdcall.}
-proc ImmInstallIMEA*(lpszIMEFileName: LPCSTR, lpszLayoutText: LPCSTR): HKL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmInstallIMEW*(lpszIMEFileName: LPCWSTR, lpszLayoutText: LPCWSTR): HKL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmInstallIMEA*(
+  lpszIMEFileName: LPCSTR, lpszLayoutText: LPCSTR
+): HKL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmInstallIMEW*(
+  lpszIMEFileName: LPCWSTR, lpszLayoutText: LPCWSTR
+): HKL {.winapi, stdcall, dynlib: "imm32", importc.}
+
 proc ImmGetDefaultIMEWnd*(P1: HWND): HWND {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetDescriptionA*(P1: HKL, P2: LPSTR, uBufLen: UINT): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetDescriptionW*(P1: HKL, P2: LPWSTR, uBufLen: UINT): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetIMEFileNameA*(P1: HKL, P2: LPSTR, uBufLen: UINT): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetIMEFileNameW*(P1: HKL, P2: LPWSTR, uBufLen: UINT): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetProperty*(P1: HKL, P2: DWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
+proc ImmGetDescriptionA*(
+  P1: HKL, P2: LPSTR, uBufLen: UINT
+): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetDescriptionW*(
+  P1: HKL, P2: LPWSTR, uBufLen: UINT
+): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetIMEFileNameA*(
+  P1: HKL, P2: LPSTR, uBufLen: UINT
+): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetIMEFileNameW*(
+  P1: HKL, P2: LPWSTR, uBufLen: UINT
+): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetProperty*(
+  P1: HKL, P2: DWORD
+): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
+
 proc ImmIsIME*(P1: HKL): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmSimulateHotKey*(P1: HWND, P2: DWORD): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+proc ImmSimulateHotKey*(
+  P1: HWND, P2: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
 proc ImmCreateContext*(): HIMC {.winapi, stdcall, dynlib: "imm32", importc.}
 proc ImmDestroyContext*(P1: HIMC): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
 proc ImmGetContext*(P1: HWND): HIMC {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmReleaseContext*(P1: HWND, P2: HIMC): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmAssociateContext*(P1: HWND, P2: HIMC): HIMC {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmAssociateContextEx*(P1: HWND, P2: HIMC, P3: DWORD): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetCompositionStringA*(P1: HIMC, P2: DWORD, P3: LPVOID, P4: DWORD): LONG {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetCompositionStringW*(P1: HIMC, P2: DWORD, P3: LPVOID, P4: DWORD): LONG {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmSetCompositionStringA*(P1: HIMC, dwIndex: DWORD, lpComp: LPVOID, P4: DWORD, lpRead: LPVOID, P6: DWORD): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmSetCompositionStringW*(P1: HIMC, dwIndex: DWORD, lpComp: LPVOID, P4: DWORD, lpRead: LPVOID, P6: DWORD): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetCandidateListCountA*(P1: HIMC, lpdwListCount: LPDWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetCandidateListCountW*(P1: HIMC, lpdwListCount: LPDWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetCandidateListA*(P1: HIMC, deIndex: DWORD, P3: LPCANDIDATELIST, dwBufLen: DWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetCandidateListW*(P1: HIMC, deIndex: DWORD, P3: LPCANDIDATELIST, dwBufLen: DWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetGuideLineA*(P1: HIMC, dwIndex: DWORD, P3: LPSTR, dwBufLen: DWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetGuideLineW*(P1: HIMC, dwIndex: DWORD, P3: LPWSTR, dwBufLen: DWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetConversionStatus*(P1: HIMC, P2: LPDWORD, P3: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmSetConversionStatus*(P1: HIMC, P2: DWORD, P3: DWORD): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+proc ImmReleaseContext*(
+  P1: HWND, P2: HIMC
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmAssociateContext*(
+  P1: HWND, P2: HIMC
+): HIMC {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmAssociateContextEx*(
+  P1: HWND, P2: HIMC, P3: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetCompositionStringA*(
+  P1: HIMC, P2: DWORD, P3: LPVOID, P4: DWORD
+): LONG {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetCompositionStringW*(
+  P1: HIMC, P2: DWORD, P3: LPVOID, P4: DWORD
+): LONG {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmSetCompositionStringA*(
+  P1: HIMC, dwIndex: DWORD, lpComp: LPVOID, P4: DWORD, lpRead: LPVOID, P6: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmSetCompositionStringW*(
+  P1: HIMC, dwIndex: DWORD, lpComp: LPVOID, P4: DWORD, lpRead: LPVOID, P6: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetCandidateListCountA*(
+  P1: HIMC, lpdwListCount: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetCandidateListCountW*(
+  P1: HIMC, lpdwListCount: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetCandidateListA*(
+  P1: HIMC, deIndex: DWORD, P3: LPCANDIDATELIST, dwBufLen: DWORD
+): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetCandidateListW*(
+  P1: HIMC, deIndex: DWORD, P3: LPCANDIDATELIST, dwBufLen: DWORD
+): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetGuideLineA*(
+  P1: HIMC, dwIndex: DWORD, P3: LPSTR, dwBufLen: DWORD
+): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetGuideLineW*(
+  P1: HIMC, dwIndex: DWORD, P3: LPWSTR, dwBufLen: DWORD
+): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetConversionStatus*(
+  P1: HIMC, P2: LPDWORD, P3: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmSetConversionStatus*(
+  P1: HIMC, P2: DWORD, P3: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
 proc ImmGetOpenStatus*(P1: HIMC): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmSetOpenStatus*(P1: HIMC, P2: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetCompositionFontA*(P1: HIMC, P2: LPLOGFONTA): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetCompositionFontW*(P1: HIMC, P2: LPLOGFONTW): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmSetCompositionFontA*(P1: HIMC, P2: LPLOGFONTA): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmSetCompositionFontW*(P1: HIMC, P2: LPLOGFONTW): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmConfigureIMEA*(P1: HKL, P2: HWND, P3: DWORD, P4: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmConfigureIMEW*(P1: HKL, P2: HWND, P3: DWORD, P4: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmEscapeA*(P1: HKL, P2: HIMC, P3: UINT, P4: LPVOID): LRESULT {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmEscapeW*(P1: HKL, P2: HIMC, P3: UINT, P4: LPVOID): LRESULT {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetConversionListA*(P1: HKL, P2: HIMC, P3: LPCSTR, P4: LPCANDIDATELIST, dwBufLen: DWORD, uFlag: UINT): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetConversionListW*(P1: HKL, P2: HIMC, P3: LPCWSTR, P4: LPCANDIDATELIST, dwBufLen: DWORD, uFlag: UINT): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmNotifyIME*(P1: HIMC, dwAction: DWORD, dwIndex: DWORD, dwValue: DWORD): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetStatusWindowPos*(P1: HIMC, P2: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmSetStatusWindowPos*(P1: HIMC, P2: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetCompositionWindow*(P1: HIMC, P2: LPCOMPOSITIONFORM): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmSetCompositionWindow*(P1: HIMC, P2: LPCOMPOSITIONFORM): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetCandidateWindow*(P1: HIMC, P2: DWORD, P3: LPCANDIDATEFORM): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmSetCandidateWindow*(P1: HIMC, P2: LPCANDIDATEFORM): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmIsUIMessageA*(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmIsUIMessageW*(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+proc ImmSetOpenStatus*(
+  P1: HIMC, P2: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetCompositionFontA*(
+  P1: HIMC, P2: LPLOGFONTA
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetCompositionFontW*(
+  P1: HIMC, P2: LPLOGFONTW
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmSetCompositionFontA*(
+  P1: HIMC, P2: LPLOGFONTA
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmSetCompositionFontW*(
+  P1: HIMC, P2: LPLOGFONTW
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmConfigureIMEA*(
+  P1: HKL, P2: HWND, P3: DWORD, P4: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmConfigureIMEW*(
+  P1: HKL, P2: HWND, P3: DWORD, P4: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmEscapeA*(
+  P1: HKL, P2: HIMC, P3: UINT, P4: LPVOID
+): LRESULT {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmEscapeW*(
+  P1: HKL, P2: HIMC, P3: UINT, P4: LPVOID
+): LRESULT {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetConversionListA*(
+  P1: HKL, P2: HIMC, P3: LPCSTR, P4: LPCANDIDATELIST, dwBufLen: DWORD, uFlag: UINT
+): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetConversionListW*(
+  P1: HKL, P2: HIMC, P3: LPCWSTR, P4: LPCANDIDATELIST, dwBufLen: DWORD, uFlag: UINT
+): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmNotifyIME*(
+  P1: HIMC, dwAction: DWORD, dwIndex: DWORD, dwValue: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetStatusWindowPos*(
+  P1: HIMC, P2: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmSetStatusWindowPos*(
+  P1: HIMC, P2: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetCompositionWindow*(
+  P1: HIMC, P2: LPCOMPOSITIONFORM
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmSetCompositionWindow*(
+  P1: HIMC, P2: LPCOMPOSITIONFORM
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetCandidateWindow*(
+  P1: HIMC, P2: DWORD, P3: LPCANDIDATEFORM
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmSetCandidateWindow*(
+  P1: HIMC, P2: LPCANDIDATEFORM
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmIsUIMessageA*(
+  P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmIsUIMessageW*(
+  P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
 proc ImmGetVirtualKey*(P1: HWND): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmRegisterWordA*(P1: HKL, lpszReading: LPCSTR, P3: DWORD, lpszRegister: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmRegisterWordW*(P1: HKL, lpszReading: LPCWSTR, P3: DWORD, lpszRegister: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmUnregisterWordA*(P1: HKL, lpszReading: LPCSTR, P3: DWORD, lpszUnregister: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmUnregisterWordW*(P1: HKL, lpszReading: LPCWSTR, P3: DWORD, lpszUnregister: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetRegisterWordStyleA*(P1: HKL, nItem: UINT, P3: LPSTYLEBUFA): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetRegisterWordStyleW*(P1: HKL, nItem: UINT, P3: LPSTYLEBUFW): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmEnumRegisterWordA*(P1: HKL, P2: REGISTERWORDENUMPROCA, lpszReading: LPCSTR, P4: DWORD, lpszRegister: LPCSTR, P6: LPVOID): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmEnumRegisterWordW*(P1: HKL, P2: REGISTERWORDENUMPROCW, lpszReading: LPCWSTR, P4: DWORD, lpszRegister: LPCWSTR, P6: LPVOID): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
+proc ImmRegisterWordA*(
+  P1: HKL, lpszReading: LPCSTR, P3: DWORD, lpszRegister: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmRegisterWordW*(
+  P1: HKL, lpszReading: LPCWSTR, P3: DWORD, lpszRegister: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmUnregisterWordA*(
+  P1: HKL, lpszReading: LPCSTR, P3: DWORD, lpszUnregister: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmUnregisterWordW*(
+  P1: HKL, lpszReading: LPCWSTR, P3: DWORD, lpszUnregister: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetRegisterWordStyleA*(
+  P1: HKL, nItem: UINT, P3: LPSTYLEBUFA
+): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetRegisterWordStyleW*(
+  P1: HKL, nItem: UINT, P3: LPSTYLEBUFW
+): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmEnumRegisterWordA*(
+  P1: HKL,
+  P2: REGISTERWORDENUMPROCA,
+  lpszReading: LPCSTR,
+  P4: DWORD,
+  lpszRegister: LPCSTR,
+  P6: LPVOID,
+): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmEnumRegisterWordW*(
+  P1: HKL,
+  P2: REGISTERWORDENUMPROCW,
+  lpszReading: LPCWSTR,
+  P4: DWORD,
+  lpszRegister: LPCWSTR,
+  P6: LPVOID,
+): UINT {.winapi, stdcall, dynlib: "imm32", importc.}
+
 proc ImmDisableIME*(P1: DWORD): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmEnumInputContext*(idThread: DWORD, lpfn: IMCENUMPROC, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetImeMenuItemsA*(P1: HIMC, P2: DWORD, P3: DWORD, P4: LPIMEMENUITEMINFOA, P5: LPIMEMENUITEMINFOA, P6: DWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmGetImeMenuItemsW*(P1: HIMC, P2: DWORD, P3: DWORD, P4: LPIMEMENUITEMINFOW, P5: LPIMEMENUITEMINFOW, P6: DWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
-proc ImmDisableTextFrameService*(idThread: DWORD): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
-proc Clone*(self: ptr IEnumInputContext, ppEnum: ptr ptr IEnumInputContext): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppEnum)
-proc Next*(self: ptr IEnumInputContext, ulCount: ULONG, rgInputContext: ptr HIMC, pcFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, ulCount, rgInputContext, pcFetched)
-proc Reset*(self: ptr IEnumInputContext): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Skip*(self: ptr IEnumInputContext, ulCount: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, ulCount)
-proc RegisterIME*(self: ptr IActiveIMMRegistrar, rclsid: REFCLSID, lgid: LANGID, pszIconFile: LPCWSTR, pszDesc: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterIME(self, rclsid, lgid, pszIconFile, pszDesc)
-proc UnregisterIME*(self: ptr IActiveIMMRegistrar, rclsid: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterIME(self, rclsid)
-proc Start*(self: ptr IActiveIMMMessagePumpOwner): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Start(self)
-proc End*(self: ptr IActiveIMMMessagePumpOwner): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.End(self)
-proc OnTranslateMessage*(self: ptr IActiveIMMMessagePumpOwner, pMsg: ptr MSG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnTranslateMessage(self, pMsg)
-proc Pause*(self: ptr IActiveIMMMessagePumpOwner, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Pause(self, pdwCookie)
-proc Resume*(self: ptr IActiveIMMMessagePumpOwner, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Resume(self, dwCookie)
-proc AssociateContext*(self: ptr IActiveIMMApp, hWnd: HWND, hIME: HIMC, phPrev: ptr HIMC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AssociateContext(self, hWnd, hIME, phPrev)
-proc ConfigureIMEA*(self: ptr IActiveIMMApp, hKL: HKL, hWnd: HWND, dwMode: DWORD, pData: ptr REGISTERWORDA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ConfigureIMEA(self, hKL, hWnd, dwMode, pData)
-proc ConfigureIMEW*(self: ptr IActiveIMMApp, hKL: HKL, hWnd: HWND, dwMode: DWORD, pData: ptr REGISTERWORDW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ConfigureIMEW(self, hKL, hWnd, dwMode, pData)
-proc CreateContext*(self: ptr IActiveIMMApp, phIMC: ptr HIMC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateContext(self, phIMC)
-proc DestroyContext*(self: ptr IActiveIMMApp, hIME: HIMC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DestroyContext(self, hIME)
-proc EnumRegisterWordA*(self: ptr IActiveIMMApp, hKL: HKL, szReading: LPSTR, dwStyle: DWORD, szRegister: LPSTR, pData: LPVOID, pEnum: ptr ptr IEnumRegisterWordA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumRegisterWordA(self, hKL, szReading, dwStyle, szRegister, pData, pEnum)
-proc EnumRegisterWordW*(self: ptr IActiveIMMApp, hKL: HKL, szReading: LPWSTR, dwStyle: DWORD, szRegister: LPWSTR, pData: LPVOID, pEnum: ptr ptr IEnumRegisterWordW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumRegisterWordW(self, hKL, szReading, dwStyle, szRegister, pData, pEnum)
-proc EscapeA*(self: ptr IActiveIMMApp, hKL: HKL, hIMC: HIMC, uEscape: UINT, pData: LPVOID, plResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EscapeA(self, hKL, hIMC, uEscape, pData, plResult)
-proc EscapeW*(self: ptr IActiveIMMApp, hKL: HKL, hIMC: HIMC, uEscape: UINT, pData: LPVOID, plResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EscapeW(self, hKL, hIMC, uEscape, pData, plResult)
-proc GetCandidateListA*(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, uBufLen: UINT, pCandList: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCandidateListA(self, hIMC, dwIndex, uBufLen, pCandList, puCopied)
-proc GetCandidateListW*(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, uBufLen: UINT, pCandList: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCandidateListW(self, hIMC, dwIndex, uBufLen, pCandList, puCopied)
-proc GetCandidateListCountA*(self: ptr IActiveIMMApp, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCandidateListCountA(self, hIMC, pdwListSize, pdwBufLen)
-proc GetCandidateListCountW*(self: ptr IActiveIMMApp, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCandidateListCountW(self, hIMC, pdwListSize, pdwBufLen)
-proc GetCandidateWindow*(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, pCandidate: ptr CANDIDATEFORM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCandidateWindow(self, hIMC, dwIndex, pCandidate)
-proc GetCompositionFontA*(self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCompositionFontA(self, hIMC, plf)
-proc GetCompositionFontW*(self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCompositionFontW(self, hIMC, plf)
-proc GetCompositionStringA*(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, plCopied: ptr LONG, pBuf: LPVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCompositionStringA(self, hIMC, dwIndex, dwBufLen, plCopied, pBuf)
-proc GetCompositionStringW*(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, plCopied: ptr LONG, pBuf: LPVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCompositionStringW(self, hIMC, dwIndex, dwBufLen, plCopied, pBuf)
-proc GetCompositionWindow*(self: ptr IActiveIMMApp, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCompositionWindow(self, hIMC, pCompForm)
-proc GetContext*(self: ptr IActiveIMMApp, hWnd: HWND, phIMC: ptr HIMC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetContext(self, hWnd, phIMC)
-proc GetConversionListA*(self: ptr IActiveIMMApp, hKL: HKL, hIMC: HIMC, pSrc: LPSTR, uBufLen: UINT, uFlag: UINT, pDst: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConversionListA(self, hKL, hIMC, pSrc, uBufLen, uFlag, pDst, puCopied)
-proc GetConversionListW*(self: ptr IActiveIMMApp, hKL: HKL, hIMC: HIMC, pSrc: LPWSTR, uBufLen: UINT, uFlag: UINT, pDst: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConversionListW(self, hKL, hIMC, pSrc, uBufLen, uFlag, pDst, puCopied)
-proc GetConversionStatus*(self: ptr IActiveIMMApp, hIMC: HIMC, pfdwConversion: ptr DWORD, pfdwSentence: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConversionStatus(self, hIMC, pfdwConversion, pfdwSentence)
-proc GetDefaultIMEWnd*(self: ptr IActiveIMMApp, hWnd: HWND, phDefWnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultIMEWnd(self, hWnd, phDefWnd)
-proc GetDescriptionA*(self: ptr IActiveIMMApp, hKL: HKL, uBufLen: UINT, szDescription: LPSTR, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDescriptionA(self, hKL, uBufLen, szDescription, puCopied)
-proc GetDescriptionW*(self: ptr IActiveIMMApp, hKL: HKL, uBufLen: UINT, szDescription: LPWSTR, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDescriptionW(self, hKL, uBufLen, szDescription, puCopied)
-proc GetGuideLineA*(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, pBuf: LPSTR, pdwResult: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetGuideLineA(self, hIMC, dwIndex, dwBufLen, pBuf, pdwResult)
-proc GetGuideLineW*(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, pBuf: LPWSTR, pdwResult: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetGuideLineW(self, hIMC, dwIndex, dwBufLen, pBuf, pdwResult)
-proc GetIMEFileNameA*(self: ptr IActiveIMMApp, hKL: HKL, uBufLen: UINT, szFileName: LPSTR, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIMEFileNameA(self, hKL, uBufLen, szFileName, puCopied)
-proc GetIMEFileNameW*(self: ptr IActiveIMMApp, hKL: HKL, uBufLen: UINT, szFileName: LPWSTR, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIMEFileNameW(self, hKL, uBufLen, szFileName, puCopied)
-proc GetOpenStatus*(self: ptr IActiveIMMApp, hIMC: HIMC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOpenStatus(self, hIMC)
-proc GetProperty*(self: ptr IActiveIMMApp, hKL: HKL, fdwIndex: DWORD, pdwProperty: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty(self, hKL, fdwIndex, pdwProperty)
-proc GetRegisterWordStyleA*(self: ptr IActiveIMMApp, hKL: HKL, nItem: UINT, pStyleBuf: ptr STYLEBUFA, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRegisterWordStyleA(self, hKL, nItem, pStyleBuf, puCopied)
-proc GetRegisterWordStyleW*(self: ptr IActiveIMMApp, hKL: HKL, nItem: UINT, pStyleBuf: ptr STYLEBUFW, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRegisterWordStyleW(self, hKL, nItem, pStyleBuf, puCopied)
-proc GetStatusWindowPos*(self: ptr IActiveIMMApp, hIMC: HIMC, pptPos: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetStatusWindowPos(self, hIMC, pptPos)
-proc GetVirtualKey*(self: ptr IActiveIMMApp, hWnd: HWND, puVirtualKey: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetVirtualKey(self, hWnd, puVirtualKey)
-proc InstallIMEA*(self: ptr IActiveIMMApp, szIMEFileName: LPSTR, szLayoutText: LPSTR, phKL: ptr HKL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InstallIMEA(self, szIMEFileName, szLayoutText, phKL)
-proc InstallIMEW*(self: ptr IActiveIMMApp, szIMEFileName: LPWSTR, szLayoutText: LPWSTR, phKL: ptr HKL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InstallIMEW(self, szIMEFileName, szLayoutText, phKL)
-proc IsIME*(self: ptr IActiveIMMApp, hKL: HKL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsIME(self, hKL)
-proc IsUIMessageA*(self: ptr IActiveIMMApp, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsUIMessageA(self, hWndIME, msg, wParam, lParam)
-proc IsUIMessageW*(self: ptr IActiveIMMApp, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsUIMessageW(self, hWndIME, msg, wParam, lParam)
-proc NotifyIME*(self: ptr IActiveIMMApp, hIMC: HIMC, dwAction: DWORD, dwIndex: DWORD, dwValue: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NotifyIME(self, hIMC, dwAction, dwIndex, dwValue)
-proc mRegisterWordA*(self: ptr IActiveIMMApp, hKL: HKL, szReading: LPSTR, dwStyle: DWORD, szRegister: LPSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterWordA(self, hKL, szReading, dwStyle, szRegister)
-proc mRegisterWordW*(self: ptr IActiveIMMApp, hKL: HKL, szReading: LPWSTR, dwStyle: DWORD, szRegister: LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterWordW(self, hKL, szReading, dwStyle, szRegister)
-proc ReleaseContext*(self: ptr IActiveIMMApp, hWnd: HWND, hIMC: HIMC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseContext(self, hWnd, hIMC)
-proc SetCandidateWindow*(self: ptr IActiveIMMApp, hIMC: HIMC, pCandidate: ptr CANDIDATEFORM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCandidateWindow(self, hIMC, pCandidate)
-proc SetCompositionFontA*(self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCompositionFontA(self, hIMC, plf)
-proc SetCompositionFontW*(self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCompositionFontW(self, hIMC, plf)
-proc SetCompositionStringA*(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, pComp: LPVOID, dwCompLen: DWORD, pRead: LPVOID, dwReadLen: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCompositionStringA(self, hIMC, dwIndex, pComp, dwCompLen, pRead, dwReadLen)
-proc SetCompositionStringW*(self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, pComp: LPVOID, dwCompLen: DWORD, pRead: LPVOID, dwReadLen: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCompositionStringW(self, hIMC, dwIndex, pComp, dwCompLen, pRead, dwReadLen)
-proc SetCompositionWindow*(self: ptr IActiveIMMApp, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCompositionWindow(self, hIMC, pCompForm)
-proc SetConversionStatus*(self: ptr IActiveIMMApp, hIMC: HIMC, fdwConversion: DWORD, fdwSentence: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetConversionStatus(self, hIMC, fdwConversion, fdwSentence)
-proc SetOpenStatus*(self: ptr IActiveIMMApp, hIMC: HIMC, fOpen: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOpenStatus(self, hIMC, fOpen)
-proc SetStatusWindowPos*(self: ptr IActiveIMMApp, hIMC: HIMC, pptPos: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetStatusWindowPos(self, hIMC, pptPos)
-proc SimulateHotKey*(self: ptr IActiveIMMApp, hWnd: HWND, dwHotKeyID: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SimulateHotKey(self, hWnd, dwHotKeyID)
-proc UnregisterWordA*(self: ptr IActiveIMMApp, hKL: HKL, szReading: LPSTR, dwStyle: DWORD, szUnregister: LPSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterWordA(self, hKL, szReading, dwStyle, szUnregister)
-proc UnregisterWordW*(self: ptr IActiveIMMApp, hKL: HKL, szReading: LPWSTR, dwStyle: DWORD, szUnregister: LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterWordW(self, hKL, szReading, dwStyle, szUnregister)
-proc Activate*(self: ptr IActiveIMMApp, fRestoreLayout: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Activate(self, fRestoreLayout)
-proc Deactivate*(self: ptr IActiveIMMApp): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Deactivate(self)
-proc OnDefWindowProc*(self: ptr IActiveIMMApp, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDefWindowProc(self, hWnd, Msg, wParam, lParam, plResult)
-proc FilterClientWindows*(self: ptr IActiveIMMApp, aaClassList: ptr ATOM, uSize: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FilterClientWindows(self, aaClassList, uSize)
-proc GetCodePageA*(self: ptr IActiveIMMApp, hKL: HKL, uCodePage: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCodePageA(self, hKL, uCodePage)
-proc GetLangId*(self: ptr IActiveIMMApp, hKL: HKL, plid: ptr LANGID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLangId(self, hKL, plid)
-proc AssociateContextEx*(self: ptr IActiveIMMApp, hWnd: HWND, hIMC: HIMC, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AssociateContextEx(self, hWnd, hIMC, dwFlags)
-proc DisableIME*(self: ptr IActiveIMMApp, idThread: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DisableIME(self, idThread)
-proc GetImeMenuItemsA*(self: ptr IActiveIMMApp, hIMC: HIMC, dwFlags: DWORD, dwType: DWORD, pImeParentMenu: ptr IMEMENUITEMINFOA, pImeMenu: ptr IMEMENUITEMINFOA, dwSize: DWORD, pdwResult: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetImeMenuItemsA(self, hIMC, dwFlags, dwType, pImeParentMenu, pImeMenu, dwSize, pdwResult)
-proc GetImeMenuItemsW*(self: ptr IActiveIMMApp, hIMC: HIMC, dwFlags: DWORD, dwType: DWORD, pImeParentMenu: ptr IMEMENUITEMINFOW, pImeMenu: ptr IMEMENUITEMINFOW, dwSize: DWORD, pdwResult: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetImeMenuItemsW(self, hIMC, dwFlags, dwType, pImeParentMenu, pImeMenu, dwSize, pdwResult)
-proc EnumInputContext*(self: ptr IActiveIMMApp, idThread: DWORD, ppEnum: ptr ptr IEnumInputContext): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumInputContext(self, idThread, ppEnum)
-proc AssociateContext*(self: ptr IActiveIMMIME, hWnd: HWND, hIME: HIMC, phPrev: ptr HIMC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AssociateContext(self, hWnd, hIME, phPrev)
-proc ConfigureIMEA*(self: ptr IActiveIMMIME, hKL: HKL, hWnd: HWND, dwMode: DWORD, pData: ptr REGISTERWORDA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ConfigureIMEA(self, hKL, hWnd, dwMode, pData)
-proc ConfigureIMEW*(self: ptr IActiveIMMIME, hKL: HKL, hWnd: HWND, dwMode: DWORD, pData: ptr REGISTERWORDW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ConfigureIMEW(self, hKL, hWnd, dwMode, pData)
-proc CreateContext*(self: ptr IActiveIMMIME, phIMC: ptr HIMC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateContext(self, phIMC)
-proc DestroyContext*(self: ptr IActiveIMMIME, hIME: HIMC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DestroyContext(self, hIME)
-proc EnumRegisterWordA*(self: ptr IActiveIMMIME, hKL: HKL, szReading: LPSTR, dwStyle: DWORD, szRegister: LPSTR, pData: LPVOID, pEnum: ptr ptr IEnumRegisterWordA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumRegisterWordA(self, hKL, szReading, dwStyle, szRegister, pData, pEnum)
-proc EnumRegisterWordW*(self: ptr IActiveIMMIME, hKL: HKL, szReading: LPWSTR, dwStyle: DWORD, szRegister: LPWSTR, pData: LPVOID, pEnum: ptr ptr IEnumRegisterWordW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumRegisterWordW(self, hKL, szReading, dwStyle, szRegister, pData, pEnum)
-proc EscapeA*(self: ptr IActiveIMMIME, hKL: HKL, hIMC: HIMC, uEscape: UINT, pData: LPVOID, plResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EscapeA(self, hKL, hIMC, uEscape, pData, plResult)
-proc EscapeW*(self: ptr IActiveIMMIME, hKL: HKL, hIMC: HIMC, uEscape: UINT, pData: LPVOID, plResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EscapeW(self, hKL, hIMC, uEscape, pData, plResult)
-proc GetCandidateListA*(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, uBufLen: UINT, pCandList: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCandidateListA(self, hIMC, dwIndex, uBufLen, pCandList, puCopied)
-proc GetCandidateListW*(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, uBufLen: UINT, pCandList: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCandidateListW(self, hIMC, dwIndex, uBufLen, pCandList, puCopied)
-proc GetCandidateListCountA*(self: ptr IActiveIMMIME, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCandidateListCountA(self, hIMC, pdwListSize, pdwBufLen)
-proc GetCandidateListCountW*(self: ptr IActiveIMMIME, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCandidateListCountW(self, hIMC, pdwListSize, pdwBufLen)
-proc GetCandidateWindow*(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, pCandidate: ptr CANDIDATEFORM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCandidateWindow(self, hIMC, dwIndex, pCandidate)
-proc GetCompositionFontA*(self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCompositionFontA(self, hIMC, plf)
-proc GetCompositionFontW*(self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCompositionFontW(self, hIMC, plf)
-proc GetCompositionStringA*(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, plCopied: ptr LONG, pBuf: LPVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCompositionStringA(self, hIMC, dwIndex, dwBufLen, plCopied, pBuf)
-proc GetCompositionStringW*(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, plCopied: ptr LONG, pBuf: LPVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCompositionStringW(self, hIMC, dwIndex, dwBufLen, plCopied, pBuf)
-proc GetCompositionWindow*(self: ptr IActiveIMMIME, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCompositionWindow(self, hIMC, pCompForm)
-proc GetContext*(self: ptr IActiveIMMIME, hWnd: HWND, phIMC: ptr HIMC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetContext(self, hWnd, phIMC)
-proc GetConversionListA*(self: ptr IActiveIMMIME, hKL: HKL, hIMC: HIMC, pSrc: LPSTR, uBufLen: UINT, uFlag: UINT, pDst: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConversionListA(self, hKL, hIMC, pSrc, uBufLen, uFlag, pDst, puCopied)
-proc GetConversionListW*(self: ptr IActiveIMMIME, hKL: HKL, hIMC: HIMC, pSrc: LPWSTR, uBufLen: UINT, uFlag: UINT, pDst: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConversionListW(self, hKL, hIMC, pSrc, uBufLen, uFlag, pDst, puCopied)
-proc GetConversionStatus*(self: ptr IActiveIMMIME, hIMC: HIMC, pfdwConversion: ptr DWORD, pfdwSentence: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConversionStatus(self, hIMC, pfdwConversion, pfdwSentence)
-proc GetDefaultIMEWnd*(self: ptr IActiveIMMIME, hWnd: HWND, phDefWnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultIMEWnd(self, hWnd, phDefWnd)
-proc GetDescriptionA*(self: ptr IActiveIMMIME, hKL: HKL, uBufLen: UINT, szDescription: LPSTR, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDescriptionA(self, hKL, uBufLen, szDescription, puCopied)
-proc GetDescriptionW*(self: ptr IActiveIMMIME, hKL: HKL, uBufLen: UINT, szDescription: LPWSTR, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDescriptionW(self, hKL, uBufLen, szDescription, puCopied)
-proc GetGuideLineA*(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, pBuf: LPSTR, pdwResult: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetGuideLineA(self, hIMC, dwIndex, dwBufLen, pBuf, pdwResult)
-proc GetGuideLineW*(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, dwBufLen: DWORD, pBuf: LPWSTR, pdwResult: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetGuideLineW(self, hIMC, dwIndex, dwBufLen, pBuf, pdwResult)
-proc GetIMEFileNameA*(self: ptr IActiveIMMIME, hKL: HKL, uBufLen: UINT, szFileName: LPSTR, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIMEFileNameA(self, hKL, uBufLen, szFileName, puCopied)
-proc GetIMEFileNameW*(self: ptr IActiveIMMIME, hKL: HKL, uBufLen: UINT, szFileName: LPWSTR, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIMEFileNameW(self, hKL, uBufLen, szFileName, puCopied)
-proc GetOpenStatus*(self: ptr IActiveIMMIME, hIMC: HIMC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOpenStatus(self, hIMC)
-proc GetProperty*(self: ptr IActiveIMMIME, hKL: HKL, fdwIndex: DWORD, pdwProperty: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty(self, hKL, fdwIndex, pdwProperty)
-proc GetRegisterWordStyleA*(self: ptr IActiveIMMIME, hKL: HKL, nItem: UINT, pStyleBuf: ptr STYLEBUFA, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRegisterWordStyleA(self, hKL, nItem, pStyleBuf, puCopied)
-proc GetRegisterWordStyleW*(self: ptr IActiveIMMIME, hKL: HKL, nItem: UINT, pStyleBuf: ptr STYLEBUFW, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRegisterWordStyleW(self, hKL, nItem, pStyleBuf, puCopied)
-proc GetStatusWindowPos*(self: ptr IActiveIMMIME, hIMC: HIMC, pptPos: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetStatusWindowPos(self, hIMC, pptPos)
-proc GetVirtualKey*(self: ptr IActiveIMMIME, hWnd: HWND, puVirtualKey: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetVirtualKey(self, hWnd, puVirtualKey)
-proc InstallIMEA*(self: ptr IActiveIMMIME, szIMEFileName: LPSTR, szLayoutText: LPSTR, phKL: ptr HKL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InstallIMEA(self, szIMEFileName, szLayoutText, phKL)
-proc InstallIMEW*(self: ptr IActiveIMMIME, szIMEFileName: LPWSTR, szLayoutText: LPWSTR, phKL: ptr HKL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InstallIMEW(self, szIMEFileName, szLayoutText, phKL)
-proc IsIME*(self: ptr IActiveIMMIME, hKL: HKL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsIME(self, hKL)
-proc IsUIMessageA*(self: ptr IActiveIMMIME, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsUIMessageA(self, hWndIME, msg, wParam, lParam)
-proc IsUIMessageW*(self: ptr IActiveIMMIME, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsUIMessageW(self, hWndIME, msg, wParam, lParam)
-proc NotifyIME*(self: ptr IActiveIMMIME, hIMC: HIMC, dwAction: DWORD, dwIndex: DWORD, dwValue: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NotifyIME(self, hIMC, dwAction, dwIndex, dwValue)
-proc mRegisterWordA*(self: ptr IActiveIMMIME, hKL: HKL, szReading: LPSTR, dwStyle: DWORD, szRegister: LPSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterWordA(self, hKL, szReading, dwStyle, szRegister)
-proc mRegisterWordW*(self: ptr IActiveIMMIME, hKL: HKL, szReading: LPWSTR, dwStyle: DWORD, szRegister: LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterWordW(self, hKL, szReading, dwStyle, szRegister)
-proc ReleaseContext*(self: ptr IActiveIMMIME, hWnd: HWND, hIMC: HIMC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseContext(self, hWnd, hIMC)
-proc SetCandidateWindow*(self: ptr IActiveIMMIME, hIMC: HIMC, pCandidate: ptr CANDIDATEFORM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCandidateWindow(self, hIMC, pCandidate)
-proc SetCompositionFontA*(self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCompositionFontA(self, hIMC, plf)
-proc SetCompositionFontW*(self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCompositionFontW(self, hIMC, plf)
-proc SetCompositionStringA*(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, pComp: LPVOID, dwCompLen: DWORD, pRead: LPVOID, dwReadLen: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCompositionStringA(self, hIMC, dwIndex, pComp, dwCompLen, pRead, dwReadLen)
-proc SetCompositionStringW*(self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, pComp: LPVOID, dwCompLen: DWORD, pRead: LPVOID, dwReadLen: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCompositionStringW(self, hIMC, dwIndex, pComp, dwCompLen, pRead, dwReadLen)
-proc SetCompositionWindow*(self: ptr IActiveIMMIME, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCompositionWindow(self, hIMC, pCompForm)
-proc SetConversionStatus*(self: ptr IActiveIMMIME, hIMC: HIMC, fdwConversion: DWORD, fdwSentence: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetConversionStatus(self, hIMC, fdwConversion, fdwSentence)
-proc SetOpenStatus*(self: ptr IActiveIMMIME, hIMC: HIMC, fOpen: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOpenStatus(self, hIMC, fOpen)
-proc SetStatusWindowPos*(self: ptr IActiveIMMIME, hIMC: HIMC, pptPos: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetStatusWindowPos(self, hIMC, pptPos)
-proc SimulateHotKey*(self: ptr IActiveIMMIME, hWnd: HWND, dwHotKeyID: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SimulateHotKey(self, hWnd, dwHotKeyID)
-proc UnregisterWordA*(self: ptr IActiveIMMIME, hKL: HKL, szReading: LPSTR, dwStyle: DWORD, szUnregister: LPSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterWordA(self, hKL, szReading, dwStyle, szUnregister)
-proc UnregisterWordW*(self: ptr IActiveIMMIME, hKL: HKL, szReading: LPWSTR, dwStyle: DWORD, szUnregister: LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterWordW(self, hKL, szReading, dwStyle, szUnregister)
-proc GenerateMessage*(self: ptr IActiveIMMIME, hIMC: HIMC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GenerateMessage(self, hIMC)
-proc LockIMC*(self: ptr IActiveIMMIME, hIMC: HIMC, ppIMC: ptr ptr INPUTCONTEXT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LockIMC(self, hIMC, ppIMC)
-proc UnlockIMC*(self: ptr IActiveIMMIME, hIMC: HIMC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnlockIMC(self, hIMC)
-proc GetIMCLockCount*(self: ptr IActiveIMMIME, hIMC: HIMC, pdwLockCount: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIMCLockCount(self, hIMC, pdwLockCount)
-proc CreateIMCC*(self: ptr IActiveIMMIME, dwSize: DWORD, phIMCC: ptr HIMCC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateIMCC(self, dwSize, phIMCC)
-proc DestroyIMCC*(self: ptr IActiveIMMIME, hIMCC: HIMCC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DestroyIMCC(self, hIMCC)
-proc LockIMCC*(self: ptr IActiveIMMIME, hIMCC: HIMCC, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LockIMCC(self, hIMCC, ppv)
-proc UnlockIMCC*(self: ptr IActiveIMMIME, hIMCC: HIMCC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnlockIMCC(self, hIMCC)
-proc ReSizeIMCC*(self: ptr IActiveIMMIME, hIMCC: HIMCC, dwSize: DWORD, phIMCC: ptr HIMCC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReSizeIMCC(self, hIMCC, dwSize, phIMCC)
-proc GetIMCCSize*(self: ptr IActiveIMMIME, hIMCC: HIMCC, pdwSize: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIMCCSize(self, hIMCC, pdwSize)
-proc GetIMCCLockCount*(self: ptr IActiveIMMIME, hIMCC: HIMCC, pdwLockCount: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIMCCLockCount(self, hIMCC, pdwLockCount)
-proc GetHotKey*(self: ptr IActiveIMMIME, dwHotKeyID: DWORD, puModifiers: ptr UINT, puVKey: ptr UINT, phKL: ptr HKL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHotKey(self, dwHotKeyID, puModifiers, puVKey, phKL)
-proc SetHotKey*(self: ptr IActiveIMMIME, dwHotKeyID: DWORD, uModifiers: UINT, uVKey: UINT, hKL: HKL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHotKey(self, dwHotKeyID, uModifiers, uVKey, hKL)
-proc CreateSoftKeyboard*(self: ptr IActiveIMMIME, uType: UINT, hOwner: HWND, x: int32, y: int32, phSoftKbdWnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateSoftKeyboard(self, uType, hOwner, x, y, phSoftKbdWnd)
-proc DestroySoftKeyboard*(self: ptr IActiveIMMIME, hSoftKbdWnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DestroySoftKeyboard(self, hSoftKbdWnd)
-proc ShowSoftKeyboard*(self: ptr IActiveIMMIME, hSoftKbdWnd: HWND, nCmdShow: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowSoftKeyboard(self, hSoftKbdWnd, nCmdShow)
-proc GetCodePageA*(self: ptr IActiveIMMIME, hKL: HKL, uCodePage: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCodePageA(self, hKL, uCodePage)
-proc GetLangId*(self: ptr IActiveIMMIME, hKL: HKL, plid: ptr LANGID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLangId(self, hKL, plid)
-proc KeybdEvent*(self: ptr IActiveIMMIME, lgidIME: LANGID, bVk: BYTE, bScan: BYTE, dwFlags: DWORD, dwExtraInfo: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.KeybdEvent(self, lgidIME, bVk, bScan, dwFlags, dwExtraInfo)
-proc LockModal*(self: ptr IActiveIMMIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LockModal(self)
-proc UnlockModal*(self: ptr IActiveIMMIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnlockModal(self)
-proc AssociateContextEx*(self: ptr IActiveIMMIME, hWnd: HWND, hIMC: HIMC, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AssociateContextEx(self, hWnd, hIMC, dwFlags)
-proc DisableIME*(self: ptr IActiveIMMIME, idThread: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DisableIME(self, idThread)
-proc GetImeMenuItemsA*(self: ptr IActiveIMMIME, hIMC: HIMC, dwFlags: DWORD, dwType: DWORD, pImeParentMenu: ptr IMEMENUITEMINFOA, pImeMenu: ptr IMEMENUITEMINFOA, dwSize: DWORD, pdwResult: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetImeMenuItemsA(self, hIMC, dwFlags, dwType, pImeParentMenu, pImeMenu, dwSize, pdwResult)
-proc GetImeMenuItemsW*(self: ptr IActiveIMMIME, hIMC: HIMC, dwFlags: DWORD, dwType: DWORD, pImeParentMenu: ptr IMEMENUITEMINFOW, pImeMenu: ptr IMEMENUITEMINFOW, dwSize: DWORD, pdwResult: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetImeMenuItemsW(self, hIMC, dwFlags, dwType, pImeParentMenu, pImeMenu, dwSize, pdwResult)
-proc EnumInputContext*(self: ptr IActiveIMMIME, idThread: DWORD, ppEnum: ptr ptr IEnumInputContext): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumInputContext(self, idThread, ppEnum)
-proc RequestMessageA*(self: ptr IActiveIMMIME, hIMC: HIMC, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestMessageA(self, hIMC, wParam, lParam, plResult)
-proc RequestMessageW*(self: ptr IActiveIMMIME, hIMC: HIMC, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestMessageW(self, hIMC, wParam, lParam, plResult)
-proc SendIMCA*(self: ptr IActiveIMMIME, hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SendIMCA(self, hWnd, uMsg, wParam, lParam, plResult)
-proc SendIMCW*(self: ptr IActiveIMMIME, hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SendIMCW(self, hWnd, uMsg, wParam, lParam, plResult)
-proc IsSleeping*(self: ptr IActiveIMMIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsSleeping(self)
-proc Inquire*(self: ptr IActiveIME, dwSystemInfoFlags: DWORD, pIMEInfo: ptr IMEINFO, szWndClass: LPWSTR, pdwPrivate: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Inquire(self, dwSystemInfoFlags, pIMEInfo, szWndClass, pdwPrivate)
-proc ConversionList*(self: ptr IActiveIME, hIMC: HIMC, szSource: LPWSTR, uFlag: UINT, uBufLen: UINT, pDest: ptr CANDIDATELIST, puCopied: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ConversionList(self, hIMC, szSource, uFlag, uBufLen, pDest, puCopied)
-proc Configure*(self: ptr IActiveIME, hKL: HKL, hWnd: HWND, dwMode: DWORD, pRegisterWord: ptr REGISTERWORDW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Configure(self, hKL, hWnd, dwMode, pRegisterWord)
-proc Destroy*(self: ptr IActiveIME, uReserved: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Destroy(self, uReserved)
-proc Escape*(self: ptr IActiveIME, hIMC: HIMC, uEscape: UINT, pData: pointer, plResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Escape(self, hIMC, uEscape, pData, plResult)
-proc SetActiveContext*(self: ptr IActiveIME, hIMC: HIMC, fFlag: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetActiveContext(self, hIMC, fFlag)
-proc ProcessKey*(self: ptr IActiveIME, hIMC: HIMC, uVirKey: UINT, lParam: DWORD, pbKeyState: ptr BYTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ProcessKey(self, hIMC, uVirKey, lParam, pbKeyState)
-proc Notify*(self: ptr IActiveIME, hIMC: HIMC, dwAction: DWORD, dwIndex: DWORD, dwValue: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Notify(self, hIMC, dwAction, dwIndex, dwValue)
-proc Select*(self: ptr IActiveIME, hIMC: HIMC, fSelect: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Select(self, hIMC, fSelect)
-proc SetCompositionString*(self: ptr IActiveIME, hIMC: HIMC, dwIndex: DWORD, pComp: pointer, dwCompLen: DWORD, pRead: pointer, dwReadLen: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCompositionString(self, hIMC, dwIndex, pComp, dwCompLen, pRead, dwReadLen)
-proc ToAsciiEx*(self: ptr IActiveIME, uVirKey: UINT, uScanCode: UINT, pbKeyState: ptr BYTE, fuState: UINT, hIMC: HIMC, pdwTransBuf: ptr DWORD, puSize: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ToAsciiEx(self, uVirKey, uScanCode, pbKeyState, fuState, hIMC, pdwTransBuf, puSize)
-proc mRegisterWord*(self: ptr IActiveIME, szReading: LPWSTR, dwStyle: DWORD, szString: LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterWord(self, szReading, dwStyle, szString)
-proc UnregisterWord*(self: ptr IActiveIME, szReading: LPWSTR, dwStyle: DWORD, szString: LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterWord(self, szReading, dwStyle, szString)
-proc GetRegisterWordStyle*(self: ptr IActiveIME, nItem: UINT, pStyleBuf: ptr STYLEBUFW, puBufSize: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRegisterWordStyle(self, nItem, pStyleBuf, puBufSize)
-proc EnumRegisterWord*(self: ptr IActiveIME, szReading: LPWSTR, dwStyle: DWORD, szRegister: LPWSTR, pData: LPVOID, ppEnum: ptr ptr IEnumRegisterWordW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumRegisterWord(self, szReading, dwStyle, szRegister, pData, ppEnum)
-proc GetCodePageA*(self: ptr IActiveIME, uCodePage: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCodePageA(self, uCodePage)
-proc GetLangId*(self: ptr IActiveIME, plid: ptr LANGID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLangId(self, plid)
-proc Sleep*(self: ptr IActiveIME2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Sleep(self)
-proc Unsleep*(self: ptr IActiveIME2, fDead: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unsleep(self, fDead)
-proc Clone*(self: ptr IEnumRegisterWordA, ppEnum: ptr ptr IEnumRegisterWordA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppEnum)
-proc Next*(self: ptr IEnumRegisterWordA, ulCount: ULONG, rgRegisterWord: ptr REGISTERWORDA, pcFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, ulCount, rgRegisterWord, pcFetched)
-proc Reset*(self: ptr IEnumRegisterWordA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Skip*(self: ptr IEnumRegisterWordA, ulCount: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, ulCount)
-proc Clone*(self: ptr IEnumRegisterWordW, ppEnum: ptr ptr IEnumRegisterWordW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppEnum)
-proc Next*(self: ptr IEnumRegisterWordW, ulCount: ULONG, rgRegisterWord: ptr REGISTERWORDW, pcFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, ulCount, rgRegisterWord, pcFetched)
-proc Reset*(self: ptr IEnumRegisterWordW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Skip*(self: ptr IEnumRegisterWordW, ulCount: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, ulCount)
-converter winimConverterIEnumInputContextToIUnknown*(x: ptr IEnumInputContext): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveIMMRegistrarToIUnknown*(x: ptr IActiveIMMRegistrar): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveIMMMessagePumpOwnerToIUnknown*(x: ptr IActiveIMMMessagePumpOwner): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveIMMAppToIUnknown*(x: ptr IActiveIMMApp): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveIMMIMEToIUnknown*(x: ptr IActiveIMMIME): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveIMEToIUnknown*(x: ptr IActiveIME): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveIME2ToIActiveIME*(x: ptr IActiveIME2): ptr IActiveIME = cast[ptr IActiveIME](x)
-converter winimConverterIActiveIME2ToIUnknown*(x: ptr IActiveIME2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumRegisterWordAToIUnknown*(x: ptr IEnumRegisterWordA): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumRegisterWordWToIUnknown*(x: ptr IEnumRegisterWordW): ptr IUnknown = cast[ptr IUnknown](x)
+proc ImmEnumInputContext*(
+  idThread: DWORD, lpfn: IMCENUMPROC, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetImeMenuItemsA*(
+  P1: HIMC,
+  P2: DWORD,
+  P3: DWORD,
+  P4: LPIMEMENUITEMINFOA,
+  P5: LPIMEMENUITEMINFOA,
+  P6: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmGetImeMenuItemsW*(
+  P1: HIMC,
+  P2: DWORD,
+  P3: DWORD,
+  P4: LPIMEMENUITEMINFOW,
+  P5: LPIMEMENUITEMINFOW,
+  P6: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc ImmDisableTextFrameService*(
+  idThread: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc.}
+
+proc Clone*(
+    self: ptr IEnumInputContext, ppEnum: ptr ptr IEnumInputContext
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppEnum)
+
+proc Next*(
+    self: ptr IEnumInputContext,
+    ulCount: ULONG,
+    rgInputContext: ptr HIMC,
+    pcFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, ulCount, rgInputContext, pcFetched)
+
+proc Reset*(self: ptr IEnumInputContext): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Skip*(self: ptr IEnumInputContext, ulCount: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, ulCount)
+
+proc RegisterIME*(
+    self: ptr IActiveIMMRegistrar,
+    rclsid: REFCLSID,
+    lgid: LANGID,
+    pszIconFile: LPCWSTR,
+    pszDesc: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterIME(self, rclsid, lgid, pszIconFile, pszDesc)
+
+proc UnregisterIME*(
+    self: ptr IActiveIMMRegistrar, rclsid: REFCLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnregisterIME(self, rclsid)
+
+proc Start*(self: ptr IActiveIMMMessagePumpOwner): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Start(self)
+
+proc End*(self: ptr IActiveIMMMessagePumpOwner): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.End(self)
+
+proc OnTranslateMessage*(
+    self: ptr IActiveIMMMessagePumpOwner, pMsg: ptr MSG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnTranslateMessage(self, pMsg)
+
+proc Pause*(
+    self: ptr IActiveIMMMessagePumpOwner, pdwCookie: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Pause(self, pdwCookie)
+
+proc Resume*(
+    self: ptr IActiveIMMMessagePumpOwner, dwCookie: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Resume(self, dwCookie)
+
+proc AssociateContext*(
+    self: ptr IActiveIMMApp, hWnd: HWND, hIME: HIMC, phPrev: ptr HIMC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AssociateContext(self, hWnd, hIME, phPrev)
+
+proc ConfigureIMEA*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    hWnd: HWND,
+    dwMode: DWORD,
+    pData: ptr REGISTERWORDA,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ConfigureIMEA(self, hKL, hWnd, dwMode, pData)
+
+proc ConfigureIMEW*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    hWnd: HWND,
+    dwMode: DWORD,
+    pData: ptr REGISTERWORDW,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ConfigureIMEW(self, hKL, hWnd, dwMode, pData)
+
+proc CreateContext*(
+    self: ptr IActiveIMMApp, phIMC: ptr HIMC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateContext(self, phIMC)
+
+proc DestroyContext*(self: ptr IActiveIMMApp, hIME: HIMC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DestroyContext(self, hIME)
+
+proc EnumRegisterWordA*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    szReading: LPSTR,
+    dwStyle: DWORD,
+    szRegister: LPSTR,
+    pData: LPVOID,
+    pEnum: ptr ptr IEnumRegisterWordA,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumRegisterWordA(
+      self, hKL, szReading, dwStyle, szRegister, pData, pEnum
+    )
+
+proc EnumRegisterWordW*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    szReading: LPWSTR,
+    dwStyle: DWORD,
+    szRegister: LPWSTR,
+    pData: LPVOID,
+    pEnum: ptr ptr IEnumRegisterWordW,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumRegisterWordW(
+      self, hKL, szReading, dwStyle, szRegister, pData, pEnum
+    )
+
+proc EscapeA*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    hIMC: HIMC,
+    uEscape: UINT,
+    pData: LPVOID,
+    plResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EscapeA(self, hKL, hIMC, uEscape, pData, plResult)
+
+proc EscapeW*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    hIMC: HIMC,
+    uEscape: UINT,
+    pData: LPVOID,
+    plResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EscapeW(self, hKL, hIMC, uEscape, pData, plResult)
+
+proc GetCandidateListA*(
+    self: ptr IActiveIMMApp,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    uBufLen: UINT,
+    pCandList: ptr CANDIDATELIST,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCandidateListA(self, hIMC, dwIndex, uBufLen, pCandList, puCopied)
+
+proc GetCandidateListW*(
+    self: ptr IActiveIMMApp,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    uBufLen: UINT,
+    pCandList: ptr CANDIDATELIST,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCandidateListW(self, hIMC, dwIndex, uBufLen, pCandList, puCopied)
+
+proc GetCandidateListCountA*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCandidateListCountA(self, hIMC, pdwListSize, pdwBufLen)
+
+proc GetCandidateListCountW*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCandidateListCountW(self, hIMC, pdwListSize, pdwBufLen)
+
+proc GetCandidateWindow*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, dwIndex: DWORD, pCandidate: ptr CANDIDATEFORM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCandidateWindow(self, hIMC, dwIndex, pCandidate)
+
+proc GetCompositionFontA*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCompositionFontA(self, hIMC, plf)
+
+proc GetCompositionFontW*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTW
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCompositionFontW(self, hIMC, plf)
+
+proc GetCompositionStringA*(
+    self: ptr IActiveIMMApp,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    dwBufLen: DWORD,
+    plCopied: ptr LONG,
+    pBuf: LPVOID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCompositionStringA(self, hIMC, dwIndex, dwBufLen, plCopied, pBuf)
+
+proc GetCompositionStringW*(
+    self: ptr IActiveIMMApp,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    dwBufLen: DWORD,
+    plCopied: ptr LONG,
+    pBuf: LPVOID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCompositionStringW(self, hIMC, dwIndex, dwBufLen, plCopied, pBuf)
+
+proc GetCompositionWindow*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCompositionWindow(self, hIMC, pCompForm)
+
+proc GetContext*(
+    self: ptr IActiveIMMApp, hWnd: HWND, phIMC: ptr HIMC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetContext(self, hWnd, phIMC)
+
+proc GetConversionListA*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    hIMC: HIMC,
+    pSrc: LPSTR,
+    uBufLen: UINT,
+    uFlag: UINT,
+    pDst: ptr CANDIDATELIST,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConversionListA(
+      self, hKL, hIMC, pSrc, uBufLen, uFlag, pDst, puCopied
+    )
+
+proc GetConversionListW*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    hIMC: HIMC,
+    pSrc: LPWSTR,
+    uBufLen: UINT,
+    uFlag: UINT,
+    pDst: ptr CANDIDATELIST,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConversionListW(
+      self, hKL, hIMC, pSrc, uBufLen, uFlag, pDst, puCopied
+    )
+
+proc GetConversionStatus*(
+    self: ptr IActiveIMMApp,
+    hIMC: HIMC,
+    pfdwConversion: ptr DWORD,
+    pfdwSentence: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConversionStatus(self, hIMC, pfdwConversion, pfdwSentence)
+
+proc GetDefaultIMEWnd*(
+    self: ptr IActiveIMMApp, hWnd: HWND, phDefWnd: ptr HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultIMEWnd(self, hWnd, phDefWnd)
+
+proc GetDescriptionA*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    uBufLen: UINT,
+    szDescription: LPSTR,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDescriptionA(self, hKL, uBufLen, szDescription, puCopied)
+
+proc GetDescriptionW*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    uBufLen: UINT,
+    szDescription: LPWSTR,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDescriptionW(self, hKL, uBufLen, szDescription, puCopied)
+
+proc GetGuideLineA*(
+    self: ptr IActiveIMMApp,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    dwBufLen: DWORD,
+    pBuf: LPSTR,
+    pdwResult: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetGuideLineA(self, hIMC, dwIndex, dwBufLen, pBuf, pdwResult)
+
+proc GetGuideLineW*(
+    self: ptr IActiveIMMApp,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    dwBufLen: DWORD,
+    pBuf: LPWSTR,
+    pdwResult: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetGuideLineW(self, hIMC, dwIndex, dwBufLen, pBuf, pdwResult)
+
+proc GetIMEFileNameA*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    uBufLen: UINT,
+    szFileName: LPSTR,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIMEFileNameA(self, hKL, uBufLen, szFileName, puCopied)
+
+proc GetIMEFileNameW*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    uBufLen: UINT,
+    szFileName: LPWSTR,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIMEFileNameW(self, hKL, uBufLen, szFileName, puCopied)
+
+proc GetOpenStatus*(self: ptr IActiveIMMApp, hIMC: HIMC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOpenStatus(self, hIMC)
+
+proc GetProperty*(
+    self: ptr IActiveIMMApp, hKL: HKL, fdwIndex: DWORD, pdwProperty: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty(self, hKL, fdwIndex, pdwProperty)
+
+proc GetRegisterWordStyleA*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    nItem: UINT,
+    pStyleBuf: ptr STYLEBUFA,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRegisterWordStyleA(self, hKL, nItem, pStyleBuf, puCopied)
+
+proc GetRegisterWordStyleW*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    nItem: UINT,
+    pStyleBuf: ptr STYLEBUFW,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRegisterWordStyleW(self, hKL, nItem, pStyleBuf, puCopied)
+
+proc GetStatusWindowPos*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, pptPos: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetStatusWindowPos(self, hIMC, pptPos)
+
+proc GetVirtualKey*(
+    self: ptr IActiveIMMApp, hWnd: HWND, puVirtualKey: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetVirtualKey(self, hWnd, puVirtualKey)
+
+proc InstallIMEA*(
+    self: ptr IActiveIMMApp, szIMEFileName: LPSTR, szLayoutText: LPSTR, phKL: ptr HKL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InstallIMEA(self, szIMEFileName, szLayoutText, phKL)
+
+proc InstallIMEW*(
+    self: ptr IActiveIMMApp, szIMEFileName: LPWSTR, szLayoutText: LPWSTR, phKL: ptr HKL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InstallIMEW(self, szIMEFileName, szLayoutText, phKL)
+
+proc IsIME*(self: ptr IActiveIMMApp, hKL: HKL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsIME(self, hKL)
+
+proc IsUIMessageA*(
+    self: ptr IActiveIMMApp, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsUIMessageA(self, hWndIME, msg, wParam, lParam)
+
+proc IsUIMessageW*(
+    self: ptr IActiveIMMApp, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsUIMessageW(self, hWndIME, msg, wParam, lParam)
+
+proc NotifyIME*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, dwAction: DWORD, dwIndex: DWORD, dwValue: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NotifyIME(self, hIMC, dwAction, dwIndex, dwValue)
+
+proc mRegisterWordA*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    szReading: LPSTR,
+    dwStyle: DWORD,
+    szRegister: LPSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterWordA(self, hKL, szReading, dwStyle, szRegister)
+
+proc mRegisterWordW*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    szReading: LPWSTR,
+    dwStyle: DWORD,
+    szRegister: LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterWordW(self, hKL, szReading, dwStyle, szRegister)
+
+proc ReleaseContext*(
+    self: ptr IActiveIMMApp, hWnd: HWND, hIMC: HIMC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseContext(self, hWnd, hIMC)
+
+proc SetCandidateWindow*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, pCandidate: ptr CANDIDATEFORM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCandidateWindow(self, hIMC, pCandidate)
+
+proc SetCompositionFontA*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCompositionFontA(self, hIMC, plf)
+
+proc SetCompositionFontW*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, plf: ptr LOGFONTW
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCompositionFontW(self, hIMC, plf)
+
+proc SetCompositionStringA*(
+    self: ptr IActiveIMMApp,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    pComp: LPVOID,
+    dwCompLen: DWORD,
+    pRead: LPVOID,
+    dwReadLen: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCompositionStringA(
+      self, hIMC, dwIndex, pComp, dwCompLen, pRead, dwReadLen
+    )
+
+proc SetCompositionStringW*(
+    self: ptr IActiveIMMApp,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    pComp: LPVOID,
+    dwCompLen: DWORD,
+    pRead: LPVOID,
+    dwReadLen: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCompositionStringW(
+      self, hIMC, dwIndex, pComp, dwCompLen, pRead, dwReadLen
+    )
+
+proc SetCompositionWindow*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCompositionWindow(self, hIMC, pCompForm)
+
+proc SetConversionStatus*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, fdwConversion: DWORD, fdwSentence: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetConversionStatus(self, hIMC, fdwConversion, fdwSentence)
+
+proc SetOpenStatus*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, fOpen: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOpenStatus(self, hIMC, fOpen)
+
+proc SetStatusWindowPos*(
+    self: ptr IActiveIMMApp, hIMC: HIMC, pptPos: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetStatusWindowPos(self, hIMC, pptPos)
+
+proc SimulateHotKey*(
+    self: ptr IActiveIMMApp, hWnd: HWND, dwHotKeyID: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SimulateHotKey(self, hWnd, dwHotKeyID)
+
+proc UnregisterWordA*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    szReading: LPSTR,
+    dwStyle: DWORD,
+    szUnregister: LPSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnregisterWordA(self, hKL, szReading, dwStyle, szUnregister)
+
+proc UnregisterWordW*(
+    self: ptr IActiveIMMApp,
+    hKL: HKL,
+    szReading: LPWSTR,
+    dwStyle: DWORD,
+    szUnregister: LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnregisterWordW(self, hKL, szReading, dwStyle, szUnregister)
+
+proc Activate*(
+    self: ptr IActiveIMMApp, fRestoreLayout: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Activate(self, fRestoreLayout)
+
+proc Deactivate*(self: ptr IActiveIMMApp): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Deactivate(self)
+
+proc OnDefWindowProc*(
+    self: ptr IActiveIMMApp,
+    hWnd: HWND,
+    Msg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    plResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDefWindowProc(self, hWnd, Msg, wParam, lParam, plResult)
+
+proc FilterClientWindows*(
+    self: ptr IActiveIMMApp, aaClassList: ptr ATOM, uSize: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FilterClientWindows(self, aaClassList, uSize)
+
+proc GetCodePageA*(
+    self: ptr IActiveIMMApp, hKL: HKL, uCodePage: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCodePageA(self, hKL, uCodePage)
+
+proc GetLangId*(
+    self: ptr IActiveIMMApp, hKL: HKL, plid: ptr LANGID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLangId(self, hKL, plid)
+
+proc AssociateContextEx*(
+    self: ptr IActiveIMMApp, hWnd: HWND, hIMC: HIMC, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AssociateContextEx(self, hWnd, hIMC, dwFlags)
+
+proc DisableIME*(self: ptr IActiveIMMApp, idThread: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DisableIME(self, idThread)
+
+proc GetImeMenuItemsA*(
+    self: ptr IActiveIMMApp,
+    hIMC: HIMC,
+    dwFlags: DWORD,
+    dwType: DWORD,
+    pImeParentMenu: ptr IMEMENUITEMINFOA,
+    pImeMenu: ptr IMEMENUITEMINFOA,
+    dwSize: DWORD,
+    pdwResult: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetImeMenuItemsA(
+      self, hIMC, dwFlags, dwType, pImeParentMenu, pImeMenu, dwSize, pdwResult
+    )
+
+proc GetImeMenuItemsW*(
+    self: ptr IActiveIMMApp,
+    hIMC: HIMC,
+    dwFlags: DWORD,
+    dwType: DWORD,
+    pImeParentMenu: ptr IMEMENUITEMINFOW,
+    pImeMenu: ptr IMEMENUITEMINFOW,
+    dwSize: DWORD,
+    pdwResult: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetImeMenuItemsW(
+      self, hIMC, dwFlags, dwType, pImeParentMenu, pImeMenu, dwSize, pdwResult
+    )
+
+proc EnumInputContext*(
+    self: ptr IActiveIMMApp, idThread: DWORD, ppEnum: ptr ptr IEnumInputContext
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumInputContext(self, idThread, ppEnum)
+
+proc AssociateContext*(
+    self: ptr IActiveIMMIME, hWnd: HWND, hIME: HIMC, phPrev: ptr HIMC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AssociateContext(self, hWnd, hIME, phPrev)
+
+proc ConfigureIMEA*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    hWnd: HWND,
+    dwMode: DWORD,
+    pData: ptr REGISTERWORDA,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ConfigureIMEA(self, hKL, hWnd, dwMode, pData)
+
+proc ConfigureIMEW*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    hWnd: HWND,
+    dwMode: DWORD,
+    pData: ptr REGISTERWORDW,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ConfigureIMEW(self, hKL, hWnd, dwMode, pData)
+
+proc CreateContext*(
+    self: ptr IActiveIMMIME, phIMC: ptr HIMC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateContext(self, phIMC)
+
+proc DestroyContext*(self: ptr IActiveIMMIME, hIME: HIMC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DestroyContext(self, hIME)
+
+proc EnumRegisterWordA*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    szReading: LPSTR,
+    dwStyle: DWORD,
+    szRegister: LPSTR,
+    pData: LPVOID,
+    pEnum: ptr ptr IEnumRegisterWordA,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumRegisterWordA(
+      self, hKL, szReading, dwStyle, szRegister, pData, pEnum
+    )
+
+proc EnumRegisterWordW*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    szReading: LPWSTR,
+    dwStyle: DWORD,
+    szRegister: LPWSTR,
+    pData: LPVOID,
+    pEnum: ptr ptr IEnumRegisterWordW,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumRegisterWordW(
+      self, hKL, szReading, dwStyle, szRegister, pData, pEnum
+    )
+
+proc EscapeA*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    hIMC: HIMC,
+    uEscape: UINT,
+    pData: LPVOID,
+    plResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EscapeA(self, hKL, hIMC, uEscape, pData, plResult)
+
+proc EscapeW*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    hIMC: HIMC,
+    uEscape: UINT,
+    pData: LPVOID,
+    plResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EscapeW(self, hKL, hIMC, uEscape, pData, plResult)
+
+proc GetCandidateListA*(
+    self: ptr IActiveIMMIME,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    uBufLen: UINT,
+    pCandList: ptr CANDIDATELIST,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCandidateListA(self, hIMC, dwIndex, uBufLen, pCandList, puCopied)
+
+proc GetCandidateListW*(
+    self: ptr IActiveIMMIME,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    uBufLen: UINT,
+    pCandList: ptr CANDIDATELIST,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCandidateListW(self, hIMC, dwIndex, uBufLen, pCandList, puCopied)
+
+proc GetCandidateListCountA*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCandidateListCountA(self, hIMC, pdwListSize, pdwBufLen)
+
+proc GetCandidateListCountW*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, pdwListSize: ptr DWORD, pdwBufLen: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCandidateListCountW(self, hIMC, pdwListSize, pdwBufLen)
+
+proc GetCandidateWindow*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, dwIndex: DWORD, pCandidate: ptr CANDIDATEFORM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCandidateWindow(self, hIMC, dwIndex, pCandidate)
+
+proc GetCompositionFontA*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCompositionFontA(self, hIMC, plf)
+
+proc GetCompositionFontW*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTW
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCompositionFontW(self, hIMC, plf)
+
+proc GetCompositionStringA*(
+    self: ptr IActiveIMMIME,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    dwBufLen: DWORD,
+    plCopied: ptr LONG,
+    pBuf: LPVOID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCompositionStringA(self, hIMC, dwIndex, dwBufLen, plCopied, pBuf)
+
+proc GetCompositionStringW*(
+    self: ptr IActiveIMMIME,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    dwBufLen: DWORD,
+    plCopied: ptr LONG,
+    pBuf: LPVOID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCompositionStringW(self, hIMC, dwIndex, dwBufLen, plCopied, pBuf)
+
+proc GetCompositionWindow*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCompositionWindow(self, hIMC, pCompForm)
+
+proc GetContext*(
+    self: ptr IActiveIMMIME, hWnd: HWND, phIMC: ptr HIMC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetContext(self, hWnd, phIMC)
+
+proc GetConversionListA*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    hIMC: HIMC,
+    pSrc: LPSTR,
+    uBufLen: UINT,
+    uFlag: UINT,
+    pDst: ptr CANDIDATELIST,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConversionListA(
+      self, hKL, hIMC, pSrc, uBufLen, uFlag, pDst, puCopied
+    )
+
+proc GetConversionListW*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    hIMC: HIMC,
+    pSrc: LPWSTR,
+    uBufLen: UINT,
+    uFlag: UINT,
+    pDst: ptr CANDIDATELIST,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConversionListW(
+      self, hKL, hIMC, pSrc, uBufLen, uFlag, pDst, puCopied
+    )
+
+proc GetConversionStatus*(
+    self: ptr IActiveIMMIME,
+    hIMC: HIMC,
+    pfdwConversion: ptr DWORD,
+    pfdwSentence: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConversionStatus(self, hIMC, pfdwConversion, pfdwSentence)
+
+proc GetDefaultIMEWnd*(
+    self: ptr IActiveIMMIME, hWnd: HWND, phDefWnd: ptr HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultIMEWnd(self, hWnd, phDefWnd)
+
+proc GetDescriptionA*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    uBufLen: UINT,
+    szDescription: LPSTR,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDescriptionA(self, hKL, uBufLen, szDescription, puCopied)
+
+proc GetDescriptionW*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    uBufLen: UINT,
+    szDescription: LPWSTR,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDescriptionW(self, hKL, uBufLen, szDescription, puCopied)
+
+proc GetGuideLineA*(
+    self: ptr IActiveIMMIME,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    dwBufLen: DWORD,
+    pBuf: LPSTR,
+    pdwResult: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetGuideLineA(self, hIMC, dwIndex, dwBufLen, pBuf, pdwResult)
+
+proc GetGuideLineW*(
+    self: ptr IActiveIMMIME,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    dwBufLen: DWORD,
+    pBuf: LPWSTR,
+    pdwResult: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetGuideLineW(self, hIMC, dwIndex, dwBufLen, pBuf, pdwResult)
+
+proc GetIMEFileNameA*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    uBufLen: UINT,
+    szFileName: LPSTR,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIMEFileNameA(self, hKL, uBufLen, szFileName, puCopied)
+
+proc GetIMEFileNameW*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    uBufLen: UINT,
+    szFileName: LPWSTR,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIMEFileNameW(self, hKL, uBufLen, szFileName, puCopied)
+
+proc GetOpenStatus*(self: ptr IActiveIMMIME, hIMC: HIMC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOpenStatus(self, hIMC)
+
+proc GetProperty*(
+    self: ptr IActiveIMMIME, hKL: HKL, fdwIndex: DWORD, pdwProperty: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty(self, hKL, fdwIndex, pdwProperty)
+
+proc GetRegisterWordStyleA*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    nItem: UINT,
+    pStyleBuf: ptr STYLEBUFA,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRegisterWordStyleA(self, hKL, nItem, pStyleBuf, puCopied)
+
+proc GetRegisterWordStyleW*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    nItem: UINT,
+    pStyleBuf: ptr STYLEBUFW,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRegisterWordStyleW(self, hKL, nItem, pStyleBuf, puCopied)
+
+proc GetStatusWindowPos*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, pptPos: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetStatusWindowPos(self, hIMC, pptPos)
+
+proc GetVirtualKey*(
+    self: ptr IActiveIMMIME, hWnd: HWND, puVirtualKey: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetVirtualKey(self, hWnd, puVirtualKey)
+
+proc InstallIMEA*(
+    self: ptr IActiveIMMIME, szIMEFileName: LPSTR, szLayoutText: LPSTR, phKL: ptr HKL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InstallIMEA(self, szIMEFileName, szLayoutText, phKL)
+
+proc InstallIMEW*(
+    self: ptr IActiveIMMIME, szIMEFileName: LPWSTR, szLayoutText: LPWSTR, phKL: ptr HKL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InstallIMEW(self, szIMEFileName, szLayoutText, phKL)
+
+proc IsIME*(self: ptr IActiveIMMIME, hKL: HKL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsIME(self, hKL)
+
+proc IsUIMessageA*(
+    self: ptr IActiveIMMIME, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsUIMessageA(self, hWndIME, msg, wParam, lParam)
+
+proc IsUIMessageW*(
+    self: ptr IActiveIMMIME, hWndIME: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsUIMessageW(self, hWndIME, msg, wParam, lParam)
+
+proc NotifyIME*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, dwAction: DWORD, dwIndex: DWORD, dwValue: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NotifyIME(self, hIMC, dwAction, dwIndex, dwValue)
+
+proc mRegisterWordA*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    szReading: LPSTR,
+    dwStyle: DWORD,
+    szRegister: LPSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterWordA(self, hKL, szReading, dwStyle, szRegister)
+
+proc mRegisterWordW*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    szReading: LPWSTR,
+    dwStyle: DWORD,
+    szRegister: LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterWordW(self, hKL, szReading, dwStyle, szRegister)
+
+proc ReleaseContext*(
+    self: ptr IActiveIMMIME, hWnd: HWND, hIMC: HIMC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseContext(self, hWnd, hIMC)
+
+proc SetCandidateWindow*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, pCandidate: ptr CANDIDATEFORM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCandidateWindow(self, hIMC, pCandidate)
+
+proc SetCompositionFontA*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCompositionFontA(self, hIMC, plf)
+
+proc SetCompositionFontW*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, plf: ptr LOGFONTW
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCompositionFontW(self, hIMC, plf)
+
+proc SetCompositionStringA*(
+    self: ptr IActiveIMMIME,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    pComp: LPVOID,
+    dwCompLen: DWORD,
+    pRead: LPVOID,
+    dwReadLen: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCompositionStringA(
+      self, hIMC, dwIndex, pComp, dwCompLen, pRead, dwReadLen
+    )
+
+proc SetCompositionStringW*(
+    self: ptr IActiveIMMIME,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    pComp: LPVOID,
+    dwCompLen: DWORD,
+    pRead: LPVOID,
+    dwReadLen: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCompositionStringW(
+      self, hIMC, dwIndex, pComp, dwCompLen, pRead, dwReadLen
+    )
+
+proc SetCompositionWindow*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, pCompForm: ptr COMPOSITIONFORM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCompositionWindow(self, hIMC, pCompForm)
+
+proc SetConversionStatus*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, fdwConversion: DWORD, fdwSentence: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetConversionStatus(self, hIMC, fdwConversion, fdwSentence)
+
+proc SetOpenStatus*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, fOpen: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOpenStatus(self, hIMC, fOpen)
+
+proc SetStatusWindowPos*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, pptPos: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetStatusWindowPos(self, hIMC, pptPos)
+
+proc SimulateHotKey*(
+    self: ptr IActiveIMMIME, hWnd: HWND, dwHotKeyID: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SimulateHotKey(self, hWnd, dwHotKeyID)
+
+proc UnregisterWordA*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    szReading: LPSTR,
+    dwStyle: DWORD,
+    szUnregister: LPSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnregisterWordA(self, hKL, szReading, dwStyle, szUnregister)
+
+proc UnregisterWordW*(
+    self: ptr IActiveIMMIME,
+    hKL: HKL,
+    szReading: LPWSTR,
+    dwStyle: DWORD,
+    szUnregister: LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnregisterWordW(self, hKL, szReading, dwStyle, szUnregister)
+
+proc GenerateMessage*(self: ptr IActiveIMMIME, hIMC: HIMC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GenerateMessage(self, hIMC)
+
+proc LockIMC*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, ppIMC: ptr ptr INPUTCONTEXT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LockIMC(self, hIMC, ppIMC)
+
+proc UnlockIMC*(self: ptr IActiveIMMIME, hIMC: HIMC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnlockIMC(self, hIMC)
+
+proc GetIMCLockCount*(
+    self: ptr IActiveIMMIME, hIMC: HIMC, pdwLockCount: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIMCLockCount(self, hIMC, pdwLockCount)
+
+proc CreateIMCC*(
+    self: ptr IActiveIMMIME, dwSize: DWORD, phIMCC: ptr HIMCC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateIMCC(self, dwSize, phIMCC)
+
+proc DestroyIMCC*(self: ptr IActiveIMMIME, hIMCC: HIMCC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DestroyIMCC(self, hIMCC)
+
+proc LockIMCC*(
+    self: ptr IActiveIMMIME, hIMCC: HIMCC, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LockIMCC(self, hIMCC, ppv)
+
+proc UnlockIMCC*(self: ptr IActiveIMMIME, hIMCC: HIMCC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnlockIMCC(self, hIMCC)
+
+proc ReSizeIMCC*(
+    self: ptr IActiveIMMIME, hIMCC: HIMCC, dwSize: DWORD, phIMCC: ptr HIMCC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReSizeIMCC(self, hIMCC, dwSize, phIMCC)
+
+proc GetIMCCSize*(
+    self: ptr IActiveIMMIME, hIMCC: HIMCC, pdwSize: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIMCCSize(self, hIMCC, pdwSize)
+
+proc GetIMCCLockCount*(
+    self: ptr IActiveIMMIME, hIMCC: HIMCC, pdwLockCount: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIMCCLockCount(self, hIMCC, pdwLockCount)
+
+proc GetHotKey*(
+    self: ptr IActiveIMMIME,
+    dwHotKeyID: DWORD,
+    puModifiers: ptr UINT,
+    puVKey: ptr UINT,
+    phKL: ptr HKL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHotKey(self, dwHotKeyID, puModifiers, puVKey, phKL)
+
+proc SetHotKey*(
+    self: ptr IActiveIMMIME, dwHotKeyID: DWORD, uModifiers: UINT, uVKey: UINT, hKL: HKL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHotKey(self, dwHotKeyID, uModifiers, uVKey, hKL)
+
+proc CreateSoftKeyboard*(
+    self: ptr IActiveIMMIME,
+    uType: UINT,
+    hOwner: HWND,
+    x: int32,
+    y: int32,
+    phSoftKbdWnd: ptr HWND,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateSoftKeyboard(self, uType, hOwner, x, y, phSoftKbdWnd)
+
+proc DestroySoftKeyboard*(
+    self: ptr IActiveIMMIME, hSoftKbdWnd: HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DestroySoftKeyboard(self, hSoftKbdWnd)
+
+proc ShowSoftKeyboard*(
+    self: ptr IActiveIMMIME, hSoftKbdWnd: HWND, nCmdShow: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowSoftKeyboard(self, hSoftKbdWnd, nCmdShow)
+
+proc GetCodePageA*(
+    self: ptr IActiveIMMIME, hKL: HKL, uCodePage: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCodePageA(self, hKL, uCodePage)
+
+proc GetLangId*(
+    self: ptr IActiveIMMIME, hKL: HKL, plid: ptr LANGID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLangId(self, hKL, plid)
+
+proc KeybdEvent*(
+    self: ptr IActiveIMMIME,
+    lgidIME: LANGID,
+    bVk: BYTE,
+    bScan: BYTE,
+    dwFlags: DWORD,
+    dwExtraInfo: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.KeybdEvent(self, lgidIME, bVk, bScan, dwFlags, dwExtraInfo)
+
+proc LockModal*(self: ptr IActiveIMMIME): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LockModal(self)
+
+proc UnlockModal*(self: ptr IActiveIMMIME): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnlockModal(self)
+
+proc AssociateContextEx*(
+    self: ptr IActiveIMMIME, hWnd: HWND, hIMC: HIMC, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AssociateContextEx(self, hWnd, hIMC, dwFlags)
+
+proc DisableIME*(self: ptr IActiveIMMIME, idThread: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DisableIME(self, idThread)
+
+proc GetImeMenuItemsA*(
+    self: ptr IActiveIMMIME,
+    hIMC: HIMC,
+    dwFlags: DWORD,
+    dwType: DWORD,
+    pImeParentMenu: ptr IMEMENUITEMINFOA,
+    pImeMenu: ptr IMEMENUITEMINFOA,
+    dwSize: DWORD,
+    pdwResult: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetImeMenuItemsA(
+      self, hIMC, dwFlags, dwType, pImeParentMenu, pImeMenu, dwSize, pdwResult
+    )
+
+proc GetImeMenuItemsW*(
+    self: ptr IActiveIMMIME,
+    hIMC: HIMC,
+    dwFlags: DWORD,
+    dwType: DWORD,
+    pImeParentMenu: ptr IMEMENUITEMINFOW,
+    pImeMenu: ptr IMEMENUITEMINFOW,
+    dwSize: DWORD,
+    pdwResult: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetImeMenuItemsW(
+      self, hIMC, dwFlags, dwType, pImeParentMenu, pImeMenu, dwSize, pdwResult
+    )
+
+proc EnumInputContext*(
+    self: ptr IActiveIMMIME, idThread: DWORD, ppEnum: ptr ptr IEnumInputContext
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumInputContext(self, idThread, ppEnum)
+
+proc RequestMessageA*(
+    self: ptr IActiveIMMIME,
+    hIMC: HIMC,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    plResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RequestMessageA(self, hIMC, wParam, lParam, plResult)
+
+proc RequestMessageW*(
+    self: ptr IActiveIMMIME,
+    hIMC: HIMC,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    plResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RequestMessageW(self, hIMC, wParam, lParam, plResult)
+
+proc SendIMCA*(
+    self: ptr IActiveIMMIME,
+    hWnd: HWND,
+    uMsg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    plResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SendIMCA(self, hWnd, uMsg, wParam, lParam, plResult)
+
+proc SendIMCW*(
+    self: ptr IActiveIMMIME,
+    hWnd: HWND,
+    uMsg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    plResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SendIMCW(self, hWnd, uMsg, wParam, lParam, plResult)
+
+proc IsSleeping*(self: ptr IActiveIMMIME): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsSleeping(self)
+
+proc Inquire*(
+    self: ptr IActiveIME,
+    dwSystemInfoFlags: DWORD,
+    pIMEInfo: ptr IMEINFO,
+    szWndClass: LPWSTR,
+    pdwPrivate: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Inquire(self, dwSystemInfoFlags, pIMEInfo, szWndClass, pdwPrivate)
+
+proc ConversionList*(
+    self: ptr IActiveIME,
+    hIMC: HIMC,
+    szSource: LPWSTR,
+    uFlag: UINT,
+    uBufLen: UINT,
+    pDest: ptr CANDIDATELIST,
+    puCopied: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ConversionList(self, hIMC, szSource, uFlag, uBufLen, pDest, puCopied)
+
+proc Configure*(
+    self: ptr IActiveIME,
+    hKL: HKL,
+    hWnd: HWND,
+    dwMode: DWORD,
+    pRegisterWord: ptr REGISTERWORDW,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Configure(self, hKL, hWnd, dwMode, pRegisterWord)
+
+proc Destroy*(self: ptr IActiveIME, uReserved: UINT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Destroy(self, uReserved)
+
+proc Escape*(
+    self: ptr IActiveIME,
+    hIMC: HIMC,
+    uEscape: UINT,
+    pData: pointer,
+    plResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Escape(self, hIMC, uEscape, pData, plResult)
+
+proc SetActiveContext*(
+    self: ptr IActiveIME, hIMC: HIMC, fFlag: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetActiveContext(self, hIMC, fFlag)
+
+proc ProcessKey*(
+    self: ptr IActiveIME, hIMC: HIMC, uVirKey: UINT, lParam: DWORD, pbKeyState: ptr BYTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ProcessKey(self, hIMC, uVirKey, lParam, pbKeyState)
+
+proc Notify*(
+    self: ptr IActiveIME, hIMC: HIMC, dwAction: DWORD, dwIndex: DWORD, dwValue: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Notify(self, hIMC, dwAction, dwIndex, dwValue)
+
+proc Select*(
+    self: ptr IActiveIME, hIMC: HIMC, fSelect: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Select(self, hIMC, fSelect)
+
+proc SetCompositionString*(
+    self: ptr IActiveIME,
+    hIMC: HIMC,
+    dwIndex: DWORD,
+    pComp: pointer,
+    dwCompLen: DWORD,
+    pRead: pointer,
+    dwReadLen: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCompositionString(
+      self, hIMC, dwIndex, pComp, dwCompLen, pRead, dwReadLen
+    )
+
+proc ToAsciiEx*(
+    self: ptr IActiveIME,
+    uVirKey: UINT,
+    uScanCode: UINT,
+    pbKeyState: ptr BYTE,
+    fuState: UINT,
+    hIMC: HIMC,
+    pdwTransBuf: ptr DWORD,
+    puSize: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ToAsciiEx(
+      self, uVirKey, uScanCode, pbKeyState, fuState, hIMC, pdwTransBuf, puSize
+    )
+
+proc mRegisterWord*(
+    self: ptr IActiveIME, szReading: LPWSTR, dwStyle: DWORD, szString: LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterWord(self, szReading, dwStyle, szString)
+
+proc UnregisterWord*(
+    self: ptr IActiveIME, szReading: LPWSTR, dwStyle: DWORD, szString: LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnregisterWord(self, szReading, dwStyle, szString)
+
+proc GetRegisterWordStyle*(
+    self: ptr IActiveIME, nItem: UINT, pStyleBuf: ptr STYLEBUFW, puBufSize: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRegisterWordStyle(self, nItem, pStyleBuf, puBufSize)
+
+proc EnumRegisterWord*(
+    self: ptr IActiveIME,
+    szReading: LPWSTR,
+    dwStyle: DWORD,
+    szRegister: LPWSTR,
+    pData: LPVOID,
+    ppEnum: ptr ptr IEnumRegisterWordW,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumRegisterWord(self, szReading, dwStyle, szRegister, pData, ppEnum)
+
+proc GetCodePageA*(
+    self: ptr IActiveIME, uCodePage: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCodePageA(self, uCodePage)
+
+proc GetLangId*(self: ptr IActiveIME, plid: ptr LANGID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLangId(self, plid)
+
+proc Sleep*(self: ptr IActiveIME2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Sleep(self)
+
+proc Unsleep*(self: ptr IActiveIME2, fDead: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unsleep(self, fDead)
+
+proc Clone*(
+    self: ptr IEnumRegisterWordA, ppEnum: ptr ptr IEnumRegisterWordA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppEnum)
+
+proc Next*(
+    self: ptr IEnumRegisterWordA,
+    ulCount: ULONG,
+    rgRegisterWord: ptr REGISTERWORDA,
+    pcFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, ulCount, rgRegisterWord, pcFetched)
+
+proc Reset*(self: ptr IEnumRegisterWordA): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Skip*(self: ptr IEnumRegisterWordA, ulCount: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, ulCount)
+
+proc Clone*(
+    self: ptr IEnumRegisterWordW, ppEnum: ptr ptr IEnumRegisterWordW
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppEnum)
+
+proc Next*(
+    self: ptr IEnumRegisterWordW,
+    ulCount: ULONG,
+    rgRegisterWord: ptr REGISTERWORDW,
+    pcFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, ulCount, rgRegisterWord, pcFetched)
+
+proc Reset*(self: ptr IEnumRegisterWordW): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Skip*(self: ptr IEnumRegisterWordW, ulCount: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, ulCount)
+
+converter winimConverterIEnumInputContextToIUnknown*(
+    x: ptr IEnumInputContext
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveIMMRegistrarToIUnknown*(
+    x: ptr IActiveIMMRegistrar
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveIMMMessagePumpOwnerToIUnknown*(
+    x: ptr IActiveIMMMessagePumpOwner
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveIMMAppToIUnknown*(x: ptr IActiveIMMApp): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveIMMIMEToIUnknown*(x: ptr IActiveIMMIME): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveIMEToIUnknown*(x: ptr IActiveIME): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveIME2ToIActiveIME*(x: ptr IActiveIME2): ptr IActiveIME =
+  cast[ptr IActiveIME](x)
+
+converter winimConverterIActiveIME2ToIUnknown*(x: ptr IActiveIME2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumRegisterWordAToIUnknown*(
+    x: ptr IEnumRegisterWordA
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumRegisterWordWToIUnknown*(
+    x: ptr IEnumRegisterWordW
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
 when winimUnicode:
   type
     REGISTERWORD* = REGISTERWORDW
@@ -897,25 +3155,93 @@
     NPIMEMENUITEMINFO* = NPIMEMENUITEMINFOW
     LPIMEMENUITEMINFO* = LPIMEMENUITEMINFOW
     REGISTERWORDENUMPROC* = REGISTERWORDENUMPROCW
-  proc ImmInstallIME*(lpszIMEFileName: LPCWSTR, lpszLayoutText: LPCWSTR): HKL {.winapi, stdcall, dynlib: "imm32", importc: "ImmInstallIMEW".}
-  proc ImmGetDescription*(P1: HKL, P2: LPWSTR, uBufLen: UINT): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetDescriptionW".}
-  proc ImmGetIMEFileName*(P1: HKL, P2: LPWSTR, uBufLen: UINT): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetIMEFileNameW".}
-  proc ImmGetCompositionString*(P1: HIMC, P2: DWORD, P3: LPVOID, P4: DWORD): LONG {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCompositionStringW".}
-  proc ImmSetCompositionString*(P1: HIMC, dwIndex: DWORD, lpComp: LPVOID, P4: DWORD, lpRead: LPVOID, P6: DWORD): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmSetCompositionStringW".}
-  proc ImmGetCandidateListCount*(P1: HIMC, lpdwListCount: LPDWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCandidateListCountW".}
-  proc ImmGetCandidateList*(P1: HIMC, deIndex: DWORD, P3: LPCANDIDATELIST, dwBufLen: DWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCandidateListW".}
-  proc ImmGetGuideLine*(P1: HIMC, dwIndex: DWORD, P3: LPWSTR, dwBufLen: DWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetGuideLineW".}
-  proc ImmGetCompositionFont*(P1: HIMC, P2: LPLOGFONTW): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCompositionFontW".}
-  proc ImmSetCompositionFont*(P1: HIMC, P2: LPLOGFONTW): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmSetCompositionFontW".}
-  proc ImmConfigureIME*(P1: HKL, P2: HWND, P3: DWORD, P4: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmConfigureIMEW".}
-  proc ImmEscape*(P1: HKL, P2: HIMC, P3: UINT, P4: LPVOID): LRESULT {.winapi, stdcall, dynlib: "imm32", importc: "ImmEscapeW".}
-  proc ImmGetConversionList*(P1: HKL, P2: HIMC, P3: LPCWSTR, P4: LPCANDIDATELIST, dwBufLen: DWORD, uFlag: UINT): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetConversionListW".}
-  proc ImmIsUIMessage*(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmIsUIMessageW".}
-  proc ImmRegisterWord*(P1: HKL, lpszReading: LPCWSTR, P3: DWORD, lpszRegister: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmRegisterWordW".}
-  proc ImmUnregisterWord*(P1: HKL, lpszReading: LPCWSTR, P3: DWORD, lpszUnregister: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmUnregisterWordW".}
-  proc ImmGetRegisterWordStyle*(P1: HKL, nItem: UINT, P3: LPSTYLEBUFW): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetRegisterWordStyleW".}
-  proc ImmEnumRegisterWord*(P1: HKL, P2: REGISTERWORDENUMPROCW, lpszReading: LPCWSTR, P4: DWORD, lpszRegister: LPCWSTR, P6: LPVOID): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmEnumRegisterWordW".}
-  proc ImmGetImeMenuItems*(P1: HIMC, P2: DWORD, P3: DWORD, P4: LPIMEMENUITEMINFOW, P5: LPIMEMENUITEMINFOW, P6: DWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetImeMenuItemsW".}
+
+  proc ImmInstallIME*(
+    lpszIMEFileName: LPCWSTR, lpszLayoutText: LPCWSTR
+  ): HKL {.winapi, stdcall, dynlib: "imm32", importc: "ImmInstallIMEW".}
+
+  proc ImmGetDescription*(
+    P1: HKL, P2: LPWSTR, uBufLen: UINT
+  ): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetDescriptionW".}
+
+  proc ImmGetIMEFileName*(
+    P1: HKL, P2: LPWSTR, uBufLen: UINT
+  ): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetIMEFileNameW".}
+
+  proc ImmGetCompositionString*(
+    P1: HIMC, P2: DWORD, P3: LPVOID, P4: DWORD
+  ): LONG {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCompositionStringW".}
+
+  proc ImmSetCompositionString*(
+    P1: HIMC, dwIndex: DWORD, lpComp: LPVOID, P4: DWORD, lpRead: LPVOID, P6: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmSetCompositionStringW".}
+
+  proc ImmGetCandidateListCount*(
+    P1: HIMC, lpdwListCount: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCandidateListCountW".}
+
+  proc ImmGetCandidateList*(
+    P1: HIMC, deIndex: DWORD, P3: LPCANDIDATELIST, dwBufLen: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCandidateListW".}
+
+  proc ImmGetGuideLine*(
+    P1: HIMC, dwIndex: DWORD, P3: LPWSTR, dwBufLen: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetGuideLineW".}
+
+  proc ImmGetCompositionFont*(
+    P1: HIMC, P2: LPLOGFONTW
+  ): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCompositionFontW".}
+
+  proc ImmSetCompositionFont*(
+    P1: HIMC, P2: LPLOGFONTW
+  ): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmSetCompositionFontW".}
+
+  proc ImmConfigureIME*(
+    P1: HKL, P2: HWND, P3: DWORD, P4: LPVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmConfigureIMEW".}
+
+  proc ImmEscape*(
+    P1: HKL, P2: HIMC, P3: UINT, P4: LPVOID
+  ): LRESULT {.winapi, stdcall, dynlib: "imm32", importc: "ImmEscapeW".}
+
+  proc ImmGetConversionList*(
+    P1: HKL, P2: HIMC, P3: LPCWSTR, P4: LPCANDIDATELIST, dwBufLen: DWORD, uFlag: UINT
+  ): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetConversionListW".}
+
+  proc ImmIsUIMessage*(
+    P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM
+  ): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmIsUIMessageW".}
+
+  proc ImmRegisterWord*(
+    P1: HKL, lpszReading: LPCWSTR, P3: DWORD, lpszRegister: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmRegisterWordW".}
+
+  proc ImmUnregisterWord*(
+    P1: HKL, lpszReading: LPCWSTR, P3: DWORD, lpszUnregister: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmUnregisterWordW".}
+
+  proc ImmGetRegisterWordStyle*(
+    P1: HKL, nItem: UINT, P3: LPSTYLEBUFW
+  ): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetRegisterWordStyleW".}
+
+  proc ImmEnumRegisterWord*(
+    P1: HKL,
+    P2: REGISTERWORDENUMPROCW,
+    lpszReading: LPCWSTR,
+    P4: DWORD,
+    lpszRegister: LPCWSTR,
+    P6: LPVOID,
+  ): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmEnumRegisterWordW".}
+
+  proc ImmGetImeMenuItems*(
+    P1: HIMC,
+    P2: DWORD,
+    P3: DWORD,
+    P4: LPIMEMENUITEMINFOW,
+    P5: LPIMEMENUITEMINFOW,
+    P6: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetImeMenuItemsW".}
+
 when winimAnsi:
   type
     REGISTERWORD* = REGISTERWORDA
@@ -931,22 +3257,89 @@
     NPIMEMENUITEMINFO* = NPIMEMENUITEMINFOA
     LPIMEMENUITEMINFO* = LPIMEMENUITEMINFOA
     REGISTERWORDENUMPROC* = REGISTERWORDENUMPROCA
-  proc ImmInstallIME*(lpszIMEFileName: LPCSTR, lpszLayoutText: LPCSTR): HKL {.winapi, stdcall, dynlib: "imm32", importc: "ImmInstallIMEA".}
-  proc ImmGetDescription*(P1: HKL, P2: LPSTR, uBufLen: UINT): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetDescriptionA".}
-  proc ImmGetIMEFileName*(P1: HKL, P2: LPSTR, uBufLen: UINT): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetIMEFileNameA".}
-  proc ImmGetCompositionString*(P1: HIMC, P2: DWORD, P3: LPVOID, P4: DWORD): LONG {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCompositionStringA".}
-  proc ImmSetCompositionString*(P1: HIMC, dwIndex: DWORD, lpComp: LPVOID, P4: DWORD, lpRead: LPVOID, P6: DWORD): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmSetCompositionStringA".}
-  proc ImmGetCandidateListCount*(P1: HIMC, lpdwListCount: LPDWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCandidateListCountA".}
-  proc ImmGetCandidateList*(P1: HIMC, deIndex: DWORD, P3: LPCANDIDATELIST, dwBufLen: DWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCandidateListA".}
-  proc ImmGetGuideLine*(P1: HIMC, dwIndex: DWORD, P3: LPSTR, dwBufLen: DWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetGuideLineA".}
-  proc ImmGetCompositionFont*(P1: HIMC, P2: LPLOGFONTA): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCompositionFontA".}
-  proc ImmSetCompositionFont*(P1: HIMC, P2: LPLOGFONTA): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmSetCompositionFontA".}
-  proc ImmConfigureIME*(P1: HKL, P2: HWND, P3: DWORD, P4: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmConfigureIMEA".}
-  proc ImmEscape*(P1: HKL, P2: HIMC, P3: UINT, P4: LPVOID): LRESULT {.winapi, stdcall, dynlib: "imm32", importc: "ImmEscapeA".}
-  proc ImmGetConversionList*(P1: HKL, P2: HIMC, P3: LPCSTR, P4: LPCANDIDATELIST, dwBufLen: DWORD, uFlag: UINT): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetConversionListA".}
-  proc ImmIsUIMessage*(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmIsUIMessageA".}
-  proc ImmRegisterWord*(P1: HKL, lpszReading: LPCSTR, P3: DWORD, lpszRegister: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmRegisterWordA".}
-  proc ImmUnregisterWord*(P1: HKL, lpszReading: LPCSTR, P3: DWORD, lpszUnregister: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmUnregisterWordA".}
-  proc ImmGetRegisterWordStyle*(P1: HKL, nItem: UINT, P3: LPSTYLEBUFA): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetRegisterWordStyleA".}
-  proc ImmEnumRegisterWord*(P1: HKL, P2: REGISTERWORDENUMPROCA, lpszReading: LPCSTR, P4: DWORD, lpszRegister: LPCSTR, P6: LPVOID): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmEnumRegisterWordA".}
-  proc ImmGetImeMenuItems*(P1: HIMC, P2: DWORD, P3: DWORD, P4: LPIMEMENUITEMINFOA, P5: LPIMEMENUITEMINFOA, P6: DWORD): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetImeMenuItemsA".}
+
+  proc ImmInstallIME*(
+    lpszIMEFileName: LPCSTR, lpszLayoutText: LPCSTR
+  ): HKL {.winapi, stdcall, dynlib: "imm32", importc: "ImmInstallIMEA".}
+
+  proc ImmGetDescription*(
+    P1: HKL, P2: LPSTR, uBufLen: UINT
+  ): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetDescriptionA".}
+
+  proc ImmGetIMEFileName*(
+    P1: HKL, P2: LPSTR, uBufLen: UINT
+  ): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetIMEFileNameA".}
+
+  proc ImmGetCompositionString*(
+    P1: HIMC, P2: DWORD, P3: LPVOID, P4: DWORD
+  ): LONG {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCompositionStringA".}
+
+  proc ImmSetCompositionString*(
+    P1: HIMC, dwIndex: DWORD, lpComp: LPVOID, P4: DWORD, lpRead: LPVOID, P6: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmSetCompositionStringA".}
+
+  proc ImmGetCandidateListCount*(
+    P1: HIMC, lpdwListCount: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCandidateListCountA".}
+
+  proc ImmGetCandidateList*(
+    P1: HIMC, deIndex: DWORD, P3: LPCANDIDATELIST, dwBufLen: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCandidateListA".}
+
+  proc ImmGetGuideLine*(
+    P1: HIMC, dwIndex: DWORD, P3: LPSTR, dwBufLen: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetGuideLineA".}
+
+  proc ImmGetCompositionFont*(
+    P1: HIMC, P2: LPLOGFONTA
+  ): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetCompositionFontA".}
+
+  proc ImmSetCompositionFont*(
+    P1: HIMC, P2: LPLOGFONTA
+  ): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmSetCompositionFontA".}
+
+  proc ImmConfigureIME*(
+    P1: HKL, P2: HWND, P3: DWORD, P4: LPVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmConfigureIMEA".}
+
+  proc ImmEscape*(
+    P1: HKL, P2: HIMC, P3: UINT, P4: LPVOID
+  ): LRESULT {.winapi, stdcall, dynlib: "imm32", importc: "ImmEscapeA".}
+
+  proc ImmGetConversionList*(
+    P1: HKL, P2: HIMC, P3: LPCSTR, P4: LPCANDIDATELIST, dwBufLen: DWORD, uFlag: UINT
+  ): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetConversionListA".}
+
+  proc ImmIsUIMessage*(
+    P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM
+  ): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmIsUIMessageA".}
+
+  proc ImmRegisterWord*(
+    P1: HKL, lpszReading: LPCSTR, P3: DWORD, lpszRegister: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmRegisterWordA".}
+
+  proc ImmUnregisterWord*(
+    P1: HKL, lpszReading: LPCSTR, P3: DWORD, lpszUnregister: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "imm32", importc: "ImmUnregisterWordA".}
+
+  proc ImmGetRegisterWordStyle*(
+    P1: HKL, nItem: UINT, P3: LPSTYLEBUFA
+  ): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetRegisterWordStyleA".}
+
+  proc ImmEnumRegisterWord*(
+    P1: HKL,
+    P2: REGISTERWORDENUMPROCA,
+    lpszReading: LPCSTR,
+    P4: DWORD,
+    lpszRegister: LPCSTR,
+    P6: LPVOID,
+  ): UINT {.winapi, stdcall, dynlib: "imm32", importc: "ImmEnumRegisterWordA".}
+
+  proc ImmGetImeMenuItems*(
+    P1: HIMC,
+    P2: DWORD,
+    P3: DWORD,
+    P4: LPIMEMENUITEMINFOA,
+    P5: LPIMEMENUITEMINFOA,
+    P6: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "imm32", importc: "ImmGetImeMenuItemsA".}
--- a/semicongine/thirdparty/winim/winim/inc/iphlpapi.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/iphlpapi.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -252,36 +252,41 @@
   NDIS_SWITCH_NIC_INDEX* = USHORT
   PNDIS_SWITCH_NIC_INDEX* = ptr USHORT
   NL_INTERFACE_OFFLOAD_ROD* {.pure.} = object
-    NlChecksumSupported* {.bitsize:1.}: BOOLEAN
-    NlOptionsSupported* {.bitsize:1.}: BOOLEAN
-    TlDatagramChecksumSupported* {.bitsize:1.}: BOOLEAN
-    TlStreamChecksumSupported* {.bitsize:1.}: BOOLEAN
-    TlStreamOptionsSupported* {.bitsize:1.}: BOOLEAN
-    FastPathCompatible* {.bitsize:1.}: BOOLEAN
-    TlLargeSendOffloadSupported* {.bitsize:1.}: BOOLEAN
-    TlGiantSendOffloadSupported* {.bitsize:1.}: BOOLEAN
+    NlChecksumSupported* {.bitsize: 1.}: BOOLEAN
+    NlOptionsSupported* {.bitsize: 1.}: BOOLEAN
+    TlDatagramChecksumSupported* {.bitsize: 1.}: BOOLEAN
+    TlStreamChecksumSupported* {.bitsize: 1.}: BOOLEAN
+    TlStreamOptionsSupported* {.bitsize: 1.}: BOOLEAN
+    FastPathCompatible* {.bitsize: 1.}: BOOLEAN
+    TlLargeSendOffloadSupported* {.bitsize: 1.}: BOOLEAN
+    TlGiantSendOffloadSupported* {.bitsize: 1.}: BOOLEAN
+
   PNL_INTERFACE_OFFLOAD_ROD* = ptr NL_INTERFACE_OFFLOAD_ROD
   NL_PATH_BANDWIDTH_ROD* {.pure.} = object
     Bandwidth*: ULONG64
     Instability*: ULONG64
     BandwidthPeaked*: BOOLEAN
+
   PNL_PATH_BANDWIDTH_ROD* = ptr NL_PATH_BANDWIDTH_ROD
   NL_BANDWIDTH_INFORMATION* {.pure.} = object
     Bandwidth*: ULONG64
     Instability*: ULONG64
     BandwidthPeaked*: BOOLEAN
+
   PNL_BANDWIDTH_INFORMATION* = ptr NL_BANDWIDTH_INFORMATION
   MIB_UDP6ROW* {.pure.} = object
     dwLocalAddr*: IN6_ADDR
     dwLocalScopeId*: DWORD
     dwLocalPort*: DWORD
+
   PMIB_UDP6ROW* = ptr MIB_UDP6ROW
-const
-  ANY_SIZE* = 1
+
+const ANY_SIZE* = 1
 type
   MIB_UDP6TABLE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_UDP6ROW]
+
   PMIB_UDP6TABLE* = ptr MIB_UDP6TABLE
   MIB_TCP6ROW* {.pure.} = object
     State*: MIB_TCP_STATE
@@ -291,10 +296,12 @@
     RemoteAddr*: IN6_ADDR
     dwRemoteScopeId*: DWORD
     dwRemotePort*: DWORD
+
   PMIB_TCP6ROW* = ptr MIB_TCP6ROW
   MIB_TCP6TABLE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_TCP6ROW]
+
   PMIB_TCP6TABLE* = ptr MIB_TCP6TABLE
   MIB_TCP6ROW2* {.pure.} = object
     LocalAddr*: IN6_ADDR
@@ -306,10 +313,12 @@
     State*: MIB_TCP_STATE
     dwOwningPid*: DWORD
     dwOffloadState*: TCP_CONNECTION_OFFLOAD_STATE
+
   PMIB_TCP6ROW2* = ptr MIB_TCP6ROW2
   MIB_TCP6TABLE2* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_TCP6ROW2]
+
   PMIB_TCP6TABLE2* = ptr MIB_TCP6TABLE2
   MIB_TCPROW2* {.pure.} = object
     dwState*: DWORD
@@ -319,18 +328,23 @@
     dwRemotePort*: DWORD
     dwOwningPid*: DWORD
     dwOffloadState*: TCP_CONNECTION_OFFLOAD_STATE
+
   PMIB_TCPROW2* = ptr MIB_TCPROW2
   MIB_TCPTABLE2* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_TCPROW2]
+
   PMIB_TCPTABLE2* = ptr MIB_TCPTABLE2
   MIB_OPAQUE_QUERY* {.pure.} = object
     dwVarId*: DWORD
     rgdwVarIndex*: array[ANY_SIZE, DWORD]
+
   PMIB_OPAQUE_QUERY* = ptr MIB_OPAQUE_QUERY
   MIB_IFNUMBER* {.pure.} = object
     dwValue*: DWORD
+
   PMIB_IFNUMBER* = ptr MIB_IFNUMBER
+
 const
   MAXLEN_PHYSADDR* = 8
   MAXLEN_IFDESCR* = 256
@@ -360,10 +374,12 @@
     dwOutQLen*: DWORD
     dwDescrLen*: DWORD
     bDescr*: array[MAXLEN_IFDESCR, BYTE]
+
   PMIB_IFROW* = ptr MIB_IFROW
   MIB_IFTABLE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_IFROW]
+
   PMIB_IFTABLE* = ptr MIB_IFTABLE
   MIBICMPSTATS* {.pure.} = object
     dwMsgs*: DWORD
@@ -379,21 +395,26 @@
     dwTimestampReps*: DWORD
     dwAddrMasks*: DWORD
     dwAddrMaskReps*: DWORD
+
   PMIBICMPSTATS* = ptr MIBICMPSTATS
   MIBICMPINFO* {.pure.} = object
     icmpInStats*: MIBICMPSTATS
     icmpOutStats*: MIBICMPSTATS
+
   MIB_ICMP* {.pure.} = object
     stats*: MIBICMPINFO
+
   PMIB_ICMP* = ptr MIB_ICMP
   MIBICMPSTATS_EX* {.pure.} = object
     dwMsgs*: DWORD
     dwErrors*: DWORD
     rgdwTypeCount*: array[256, DWORD]
+
   PMIBICMPSTATS_EX* = ptr MIBICMPSTATS_EX
   MIB_ICMP_EX* {.pure.} = object
     icmpInStats*: MIBICMPSTATS_EX
     icmpOutStats*: MIBICMPSTATS_EX
+
   PMIB_ICMP_EX* = ptr MIB_ICMP_EX
   MIB_UDPSTATS* {.pure.} = object
     dwInDatagrams*: DWORD
@@ -401,10 +422,12 @@
     dwInErrors*: DWORD
     dwOutDatagrams*: DWORD
     dwNumAddrs*: DWORD
+
   PMIB_UDPSTATS* = ptr MIB_UDPSTATS
   MIB_UDPROW* {.pure.} = object
     dwLocalAddr*: DWORD
     dwLocalPort*: DWORD
+
   PMIB_UDPROW* = ptr MIB_UDPROW
   MIB_UDPROW_BASIC* = MIB_UDPROW
   PMIB_UDPROW_BASIC* = ptr MIB_UDPROW
@@ -412,14 +435,16 @@
     dwLocalAddr*: DWORD
     dwLocalPort*: DWORD
     dwOwningPid*: DWORD
+
   PMIB_UDPROW_OWNER_PID* = ptr MIB_UDPROW_OWNER_PID
   MIB_UDPROW_OWNER_MODULE_UNION1_STRUCT1* {.pure.} = object
-    SpecificPortBind* {.bitsize:1.}: DWORD
+    SpecificPortBind* {.bitsize: 1.}: DWORD
+
   MIB_UDPROW_OWNER_MODULE_UNION1* {.pure, union.} = object
     struct1*: MIB_UDPROW_OWNER_MODULE_UNION1_STRUCT1
     dwFlags*: DWORD
-const
-  TCPIP_OWNING_MODULE_SIZE* = 16
+
+const TCPIP_OWNING_MODULE_SIZE* = 16
 type
   MIB_UDPROW_OWNER_MODULE* {.pure.} = object
     dwLocalAddr*: DWORD
@@ -428,18 +453,22 @@
     liCreateTimestamp*: LARGE_INTEGER
     union1*: MIB_UDPROW_OWNER_MODULE_UNION1
     OwningModuleInfo*: array[TCPIP_OWNING_MODULE_SIZE, ULONGLONG]
+
   PMIB_UDPROW_OWNER_MODULE* = ptr MIB_UDPROW_OWNER_MODULE
   MIB_UDP6ROW_OWNER_PID* {.pure.} = object
     ucLocalAddr*: array[16, UCHAR]
     dwLocalScopeId*: DWORD
     dwLocalPort*: DWORD
     dwOwningPid*: DWORD
+
   PMIB_UDP6ROW_OWNER_PID* = ptr MIB_UDP6ROW_OWNER_PID
   MIB_UDP6ROW_OWNER_MODULE_UNION1_STRUCT1* {.pure.} = object
-    SpecificPortBind* {.bitsize:1.}: DWORD
+    SpecificPortBind* {.bitsize: 1.}: DWORD
+
   MIB_UDP6ROW_OWNER_MODULE_UNION1* {.pure, union.} = object
     struct1*: MIB_UDP6ROW_OWNER_MODULE_UNION1_STRUCT1
     dwFlags*: DWORD
+
   MIB_UDP6ROW_OWNER_MODULE* {.pure.} = object
     ucLocalAddr*: array[16, UCHAR]
     dwLocalScopeId*: DWORD
@@ -448,28 +477,34 @@
     liCreateTimestamp*: LARGE_INTEGER
     union1*: MIB_UDP6ROW_OWNER_MODULE_UNION1
     OwningModuleInfo*: array[TCPIP_OWNING_MODULE_SIZE, ULONGLONG]
+
   PMIB_UDP6ROW_OWNER_MODULE* = ptr MIB_UDP6ROW_OWNER_MODULE
   MIB_UDPTABLE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_UDPROW]
+
   PMIB_UDPTABLE* = ptr MIB_UDPTABLE
   MIB_UDPTABLE_BASIC* = MIB_UDPTABLE
   PMIB_UDPTABLE_BASIC* = ptr MIB_UDPTABLE
   MIB_UDPTABLE_OWNER_PID* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_UDPROW_OWNER_PID]
+
   PMIB_UDPTABLE_OWNER_PID* = ptr MIB_UDPTABLE_OWNER_PID
   MIB_UDPTABLE_OWNER_MODULE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_UDPROW_OWNER_MODULE]
+
   PMIB_UDPTABLE_OWNER_MODULE* = ptr MIB_UDPTABLE_OWNER_MODULE
   MIB_UDP6TABLE_OWNER_PID* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_UDP6ROW_OWNER_PID]
+
   PMIB_UDP6TABLE_OWNER_PID* = ptr MIB_UDP6TABLE_OWNER_PID
   MIB_UDP6TABLE_OWNER_MODULE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_UDP6ROW_OWNER_MODULE]
+
   PMIB_UDP6TABLE_OWNER_MODULE* = ptr MIB_UDP6TABLE_OWNER_MODULE
   MIB_TCPSTATS* {.pure.} = object
     dwRtoAlgorithm*: DWORD
@@ -487,6 +522,7 @@
     dwInErrs*: DWORD
     dwOutRsts*: DWORD
     dwNumConns*: DWORD
+
   PMIB_TCPSTATS* = ptr MIB_TCPSTATS
   MIB_TCPROW* {.pure.} = object
     dwState*: DWORD
@@ -494,6 +530,7 @@
     dwLocalPort*: DWORD
     dwRemoteAddr*: DWORD
     dwRemotePort*: DWORD
+
   PMIB_TCPROW* = ptr MIB_TCPROW
   MIB_TCPROW_BASIC* = MIB_TCPROW
   PMIB_TCPROW_BASIC* = ptr MIB_TCPROW
@@ -504,6 +541,7 @@
     dwRemoteAddr*: DWORD
     dwRemotePort*: DWORD
     dwOwningPid*: DWORD
+
   PMIB_TCPROW_OWNER_PID* = ptr MIB_TCPROW_OWNER_PID
   MIB_TCPROW_OWNER_MODULE* {.pure.} = object
     dwState*: DWORD
@@ -514,6 +552,7 @@
     dwOwningPid*: DWORD
     liCreateTimestamp*: LARGE_INTEGER
     OwningModuleInfo*: array[TCPIP_OWNING_MODULE_SIZE, ULONGLONG]
+
   PMIB_TCPROW_OWNER_MODULE* = ptr MIB_TCPROW_OWNER_MODULE
   MIB_TCP6ROW_OWNER_PID* {.pure.} = object
     ucLocalAddr*: array[16, UCHAR]
@@ -524,6 +563,7 @@
     dwRemotePort*: DWORD
     dwState*: DWORD
     dwOwningPid*: DWORD
+
   PMIB_TCP6ROW_OWNER_PID* = ptr MIB_TCP6ROW_OWNER_PID
   MIB_TCP6ROW_OWNER_MODULE* {.pure.} = object
     ucLocalAddr*: array[16, UCHAR]
@@ -536,28 +576,34 @@
     dwOwningPid*: DWORD
     liCreateTimestamp*: LARGE_INTEGER
     OwningModuleInfo*: array[TCPIP_OWNING_MODULE_SIZE, ULONGLONG]
+
   PMIB_TCP6ROW_OWNER_MODULE* = ptr MIB_TCP6ROW_OWNER_MODULE
   MIB_TCPTABLE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_TCPROW]
+
   PMIB_TCPTABLE* = ptr MIB_TCPTABLE
   MIB_TCPTABLE_BASIC* = MIB_TCPTABLE
   PMIB_TCPTABLE_BASIC* = ptr MIB_TCPTABLE
   MIB_TCPTABLE_OWNER_PID* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_TCPROW_OWNER_PID]
+
   PMIB_TCPTABLE_OWNER_PID* = ptr MIB_TCPTABLE_OWNER_PID
   MIB_TCPTABLE_OWNER_MODULE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_TCPROW_OWNER_MODULE]
+
   PMIB_TCPTABLE_OWNER_MODULE* = ptr MIB_TCPTABLE_OWNER_MODULE
   MIB_TCP6TABLE_OWNER_PID* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_TCP6ROW_OWNER_PID]
+
   PMIB_TCP6TABLE_OWNER_PID* = ptr MIB_TCP6TABLE_OWNER_PID
   MIB_TCP6TABLE_OWNER_MODULE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_TCP6ROW_OWNER_MODULE]
+
   PMIB_TCP6TABLE_OWNER_MODULE* = ptr MIB_TCP6TABLE_OWNER_MODULE
   MIB_IPSTATS* {.pure.} = object
     dwForwarding*: DWORD
@@ -583,6 +629,7 @@
     dwNumIf*: DWORD
     dwNumAddr*: DWORD
     dwNumRoutes*: DWORD
+
   PMIB_IPSTATS* = ptr MIB_IPSTATS
   MIB_IPADDRROW* {.pure.} = object
     dwAddr*: DWORD
@@ -592,13 +639,16 @@
     dwReasmSize*: DWORD
     unused1*: uint16
     wType*: uint16
+
   PMIB_IPADDRROW* = ptr MIB_IPADDRROW
   MIB_IPADDRTABLE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_IPADDRROW]
+
   PMIB_IPADDRTABLE* = ptr MIB_IPADDRTABLE
   MIB_IPFORWARDNUMBER* {.pure.} = object
     dwValue*: DWORD
+
   PMIB_IPFORWARDNUMBER* = ptr MIB_IPFORWARDNUMBER
   MIB_IPFORWARDROW* {.pure.} = object
     dwForwardDest*: DWORD
@@ -615,10 +665,12 @@
     dwForwardMetric3*: DWORD
     dwForwardMetric4*: DWORD
     dwForwardMetric5*: DWORD
+
   PMIB_IPFORWARDROW* = ptr MIB_IPFORWARDROW
   MIB_IPFORWARDTABLE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_IPFORWARDROW]
+
   PMIB_IPFORWARDTABLE* = ptr MIB_IPFORWARDTABLE
   MIB_IPNETROW* {.pure.} = object
     dwIndex*: DWORD
@@ -626,16 +678,19 @@
     bPhysAddr*: array[MAXLEN_PHYSADDR, BYTE]
     dwAddr*: DWORD
     dwType*: DWORD
+
   PMIB_IPNETROW* = ptr MIB_IPNETROW
   MIB_IPNETTABLE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_IPNETROW]
+
   PMIB_IPNETTABLE* = ptr MIB_IPNETTABLE
   MIB_IPMCAST_OIF* {.pure.} = object
     dwOutIfIndex*: DWORD
     dwNextHopAddr*: DWORD
     dwReserved*: DWORD
     dwReserved1*: DWORD
+
   PMIB_IPMCAST_OIF* = ptr MIB_IPMCAST_OIF
   MIB_IPMCAST_MFE* {.pure.} = object
     dwGroup*: DWORD
@@ -654,10 +709,12 @@
     fFlags*: DWORD
     dwReserved*: DWORD
     rgmioOutInfo*: array[ANY_SIZE, MIB_IPMCAST_OIF]
+
   PMIB_IPMCAST_MFE* = ptr MIB_IPMCAST_MFE
   MIB_MFE_TABLE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_IPMCAST_MFE]
+
   PMIB_MFE_TABLE* = ptr MIB_MFE_TABLE
   MIB_IPMCAST_OIF_STATS* {.pure.} = object
     dwOutIfIndex*: DWORD
@@ -667,6 +724,7 @@
     ulFragNeeded*: ULONG
     ulOutPackets*: ULONG
     ulOutDiscards*: ULONG
+
   PMIB_IPMCAST_OIF_STATS* = ptr MIB_IPMCAST_OIF_STATS
   MIB_IPMCAST_MFE_STATS* {.pure.} = object
     dwGroup*: DWORD
@@ -686,10 +744,12 @@
     ulPktsDifferentIf*: ULONG
     ulQueueOverflow*: ULONG
     rgmiosOutStats*: array[ANY_SIZE, MIB_IPMCAST_OIF_STATS]
+
   PMIB_IPMCAST_MFE_STATS* = ptr MIB_IPMCAST_MFE_STATS
   MIB_MFE_STATS_TABLE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_IPMCAST_MFE_STATS]
+
   PMIB_MFE_STATS_TABLE* = ptr MIB_MFE_STATS_TABLE
   MIB_IPMCAST_MFE_STATS_EX* {.pure.} = object
     dwGroup*: DWORD
@@ -714,13 +774,16 @@
     ulInHdrErrors*: ULONG
     ulTotalOutPackets*: ULONG
     rgmiosOutStats*: array[ANY_SIZE, MIB_IPMCAST_OIF_STATS]
+
   PMIB_IPMCAST_MFE_STATS_EX* = ptr MIB_IPMCAST_MFE_STATS_EX
   MIB_MFE_STATS_TABLE_EX* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_IPMCAST_MFE_STATS_EX]
+
   PMIB_MFE_STATS_TABLE_EX* = ptr MIB_MFE_STATS_TABLE_EX
   MIB_IPMCAST_GLOBAL* {.pure.} = object
     dwEnable*: DWORD
+
   PMIB_IPMCAST_GLOBAL* = ptr MIB_IPMCAST_GLOBAL
   MIB_IPMCAST_IF_ENTRY* {.pure.} = object
     dwIfIndex*: DWORD
@@ -729,57 +792,68 @@
     dwRateLimit*: DWORD
     ulInMcastOctets*: ULONG
     ulOutMcastOctets*: ULONG
+
   PMIB_IPMCAST_IF_ENTRY* = ptr MIB_IPMCAST_IF_ENTRY
   MIB_IPMCAST_IF_TABLE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_IPMCAST_IF_ENTRY]
+
   PMIB_IPMCAST_IF_TABLE* = ptr MIB_IPMCAST_IF_TABLE
   MIB_IPMCAST_BOUNDARY* {.pure.} = object
     dwIfIndex*: DWORD
     dwGroupAddress*: DWORD
     dwGroupMask*: DWORD
     dwStatus*: DWORD
+
   PMIB_IPMCAST_BOUNDARY* = ptr MIB_IPMCAST_BOUNDARY
   MIB_IPMCAST_BOUNDARY_TABLE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_IPMCAST_BOUNDARY]
+
   PMIB_IPMCAST_BOUNDARY_TABLE* = ptr MIB_IPMCAST_BOUNDARY_TABLE
   MIB_BOUNDARYROW* {.pure.} = object
     dwGroupAddress*: DWORD
     dwGroupMask*: DWORD
+
   PMIB_BOUNDARYROW* = ptr MIB_BOUNDARYROW
   MIB_MCAST_LIMIT_ROW* {.pure.} = object
     dwTtl*: DWORD
     dwRateLimit*: DWORD
+
   PMIB_MCAST_LIMIT_ROW* = ptr MIB_MCAST_LIMIT_ROW
-const
-  MAX_SCOPE_NAME_LEN* = 255
+
+const MAX_SCOPE_NAME_LEN* = 255
 type
-  SCOPE_NAME_BUFFER* = array[MAX_SCOPE_NAME_LEN+1, SN_CHAR]
+  SCOPE_NAME_BUFFER* = array[MAX_SCOPE_NAME_LEN + 1, SN_CHAR]
   SCOPE_NAME* = ptr SN_CHAR
   MIB_IPMCAST_SCOPE* {.pure.} = object
     dwGroupAddress*: DWORD
     dwGroupMask*: DWORD
     snNameBuffer*: SCOPE_NAME_BUFFER
     dwStatus*: DWORD
+
   PMIB_IPMCAST_SCOPE* = ptr MIB_IPMCAST_SCOPE
   MIB_IPDESTROW* {.pure.} = object
     ForwardRow*: MIB_IPFORWARDROW
     dwForwardPreference*: DWORD
     dwForwardViewSet*: DWORD
+
   PMIB_IPDESTROW* = ptr MIB_IPDESTROW
   MIB_IPDESTTABLE* {.pure.} = object
     dwNumEntries*: DWORD
     table*: array[ANY_SIZE, MIB_IPDESTROW]
+
   PMIB_IPDESTTABLE* = ptr MIB_IPDESTTABLE
   MIB_BEST_IF* {.pure.} = object
     dwDestAddr*: DWORD
     dwIfIndex*: DWORD
+
   PMIB_BEST_IF* = ptr MIB_BEST_IF
   MIB_PROXYARP* {.pure.} = object
     dwAddress*: DWORD
     dwMask*: DWORD
     dwIfIndex*: DWORD
+
   PMIB_PROXYARP* = ptr MIB_PROXYARP
   MIB_IFSTATUS* {.pure.} = object
     dwIfIndex*: DWORD
@@ -787,20 +861,25 @@
     dwOperationalStatus*: DWORD
     bMHbeatActive*: WINBOOL
     bMHbeatAlive*: WINBOOL
+
   PMIB_IFSTATUS* = ptr MIB_IFSTATUS
   MIB_ROUTESTATE* {.pure.} = object
     bRoutesSetToStack*: WINBOOL
+
   PMIB_ROUTESTATE* = ptr MIB_ROUTESTATE
   MIB_OPAQUE_INFO_UNION1* {.pure, union.} = object
     ullAlign*: ULONGLONG
     rgbyData*: array[1, BYTE]
+
   MIB_OPAQUE_INFO* {.pure.} = object
     dwId*: DWORD
     union1*: MIB_OPAQUE_INFO_UNION1
+
   PMIB_OPAQUE_INFO* = ptr MIB_OPAQUE_INFO
   TCPIP_OWNER_MODULE_BASIC_INFO* {.pure.} = object
     pModuleName*: PWCHAR
     pModulePath*: PWCHAR
+
   PTCPIP_OWNER_MODULE_BASIC_INFO* = ptr TCPIP_OWNER_MODULE_BASIC_INFO
   IP_OPTION_INFORMATION* {.pure.} = object
     Ttl*: UCHAR
@@ -808,6 +887,7 @@
     Flags*: UCHAR
     OptionsSize*: UCHAR
     OptionsData*: PUCHAR
+
   PIP_OPTION_INFORMATION* = ptr IP_OPTION_INFORMATION
   ICMP_ECHO_REPLY* {.pure.} = object
     Address*: IPAddr
@@ -817,45 +897,54 @@
     Reserved*: USHORT
     Data*: PVOID
     Options*: IP_OPTION_INFORMATION
+
   PICMP_ECHO_REPLY* = ptr ICMP_ECHO_REPLY
   ARP_SEND_REPLY* {.pure.} = object
     DestAddress*: IPAddr
     SrcAddress*: IPAddr
+
   PARP_SEND_REPLY* = ptr ARP_SEND_REPLY
   TCP_RESERVE_PORT_RANGE* {.pure.} = object
     UpperRange*: USHORT
     LowerRange*: USHORT
+
   PTCP_RESERVE_PORT_RANGE* = ptr TCP_RESERVE_PORT_RANGE
-const
-  MAX_ADAPTER_NAME* = 128
+
+const MAX_ADAPTER_NAME* = 128
 type
   IP_ADAPTER_INDEX_MAP* {.pure.} = object
     Index*: ULONG
     Name*: array[MAX_ADAPTER_NAME, WCHAR]
+
   PIP_ADAPTER_INDEX_MAP* = ptr IP_ADAPTER_INDEX_MAP
   IP_INTERFACE_INFO* {.pure.} = object
     NumAdapters*: LONG
     Adapter*: array[1, IP_ADAPTER_INDEX_MAP]
+
   PIP_INTERFACE_INFO* = ptr IP_INTERFACE_INFO
   IP_UNIDIRECTIONAL_ADAPTER_ADDRESS* {.pure.} = object
     NumAdapters*: ULONG
     Address*: array[1, IPAddr]
+
   PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS* = ptr IP_UNIDIRECTIONAL_ADAPTER_ADDRESS
   IP_ADAPTER_ORDER_MAP* {.pure.} = object
     NumAdapters*: ULONG
     AdapterOrder*: array[1, ULONG]
+
   PIP_ADAPTER_ORDER_MAP* = ptr IP_ADAPTER_ORDER_MAP
   IP_MCAST_COUNTER_INFO* {.pure.} = object
     InMcastOctets*: ULONG64
     OutMcastOctets*: ULONG64
     InMcastPkts*: ULONG64
     OutMcastPkts*: ULONG64
+
   PIP_MCAST_COUNTER_INFO* = ptr IP_MCAST_COUNTER_INFO
   IPV6_ADDRESS_EX* {.pure.} = object
     sin6_port*: USHORT
     sin6_flowinfo*: ULONG
     sin6_addr*: array[8, USHORT]
     sin6_scope_id*: ULONG
+
   PIPV6_ADDRESS_EX* = ptr IPV6_ADDRESS_EX
   NET_IF_COMPARTMENT_ID* = UINT32
   PNET_IF_COMPARTMENT_ID* = ptr UINT32
@@ -865,35 +954,40 @@
   PIF_INDEX* = ptr NET_IFINDEX
   NET_IF_NETWORK_GUID* = GUID
   NET_LUID_Info* {.pure.} = object
-    Reserved* {.bitsize:24.}: ULONG64
-    NetLuidIndex* {.bitsize:24.}: ULONG64
-    IfType* {.bitsize:16.}: ULONG64
+    Reserved* {.bitsize: 24.}: ULONG64
+    NetLuidIndex* {.bitsize: 24.}: ULONG64
+    IfType* {.bitsize: 16.}: ULONG64
+
   NET_LUID* {.pure, union.} = object
     Value*: ULONG64
     Info*: NET_LUID_Info
+
   PNET_LUID* = ptr NET_LUID
   IF_LUID* = NET_LUID
   PIF_LUID* = ptr NET_LUID
-const
-  IF_MAX_STRING_SIZE* = 256
+
+const IF_MAX_STRING_SIZE* = 256
 type
   IF_COUNTED_STRING_LH* {.pure.} = object
     Length*: USHORT
     String*: array[IF_MAX_STRING_SIZE + 1, WCHAR]
+
   PIF_COUNTED_STRING_LH* = ptr IF_COUNTED_STRING_LH
   IF_COUNTED_STRING* = IF_COUNTED_STRING_LH
   PIF_COUNTED_STRING* = ptr IF_COUNTED_STRING
-const
-  IF_MAX_PHYS_ADDRESS_LENGTH* = 32
+
+const IF_MAX_PHYS_ADDRESS_LENGTH* = 32
 type
   IF_PHYSICAL_ADDRESS_LH* {.pure.} = object
     Length*: USHORT
     Address*: array[IF_MAX_PHYS_ADDRESS_LENGTH, UCHAR]
+
   PIF_PHYSICAL_ADDRESS_LH* = ptr IF_PHYSICAL_ADDRESS_LH
   IF_PHYSICAL_ADDRESS* = IF_PHYSICAL_ADDRESS_LH
   PIF_PHYSICAL_ADDRESS* = ptr IF_PHYSICAL_ADDRESS
   IP_ADDRESS_STRING* {.pure.} = object
-    String*: array[4*4, char]
+    String*: array[4 * 4, char]
+
   PIP_ADDRESS_STRING* = ptr IP_ADDRESS_STRING
   IP_MASK_STRING* = IP_ADDRESS_STRING
   PIP_MASK_STRING* = ptr IP_ADDRESS_STRING
@@ -902,7 +996,9 @@
     IpAddress*: IP_ADDRESS_STRING
     IpMask*: IP_MASK_STRING
     Context*: DWORD
+
   PIP_ADDR_STRING* = ptr IP_ADDR_STRING
+
 const
   MAX_ADAPTER_NAME_LENGTH* = 256
   MAX_ADAPTER_DESCRIPTION_LENGTH* = 128
@@ -927,6 +1023,7 @@
     SecondaryWinsServer*: IP_ADDR_STRING
     LeaseObtained*: int
     LeaseExpires*: int
+
   PIP_ADAPTER_INFO* = ptr IP_ADAPTER_INFO
   IP_PREFIX_ORIGIN* = NL_PREFIX_ORIGIN
   IP_SUFFIX_ORIGIN* = NL_SUFFIX_ORIGIN
@@ -934,9 +1031,11 @@
   IP_ADAPTER_UNICAST_ADDRESS_XP_UNION1_STRUCT1* {.pure.} = object
     Length*: ULONG
     Flags*: DWORD
+
   IP_ADAPTER_UNICAST_ADDRESS_XP_UNION1* {.pure, union.} = object
     Alignment*: ULONGLONG
     struct1*: IP_ADAPTER_UNICAST_ADDRESS_XP_UNION1_STRUCT1
+
   IP_ADAPTER_UNICAST_ADDRESS_XP* {.pure.} = object
     union1*: IP_ADAPTER_UNICAST_ADDRESS_XP_UNION1
     Next*: ptr IP_ADAPTER_UNICAST_ADDRESS_XP
@@ -947,13 +1046,16 @@
     ValidLifetime*: ULONG
     PreferredLifetime*: ULONG
     LeaseLifetime*: ULONG
+
   PIP_ADAPTER_UNICAST_ADDRESS_XP* = ptr IP_ADAPTER_UNICAST_ADDRESS_XP
   IP_ADAPTER_UNICAST_ADDRESS_LH_UNION1_STRUCT1* {.pure.} = object
     Length*: ULONG
     Flags*: DWORD
+
   IP_ADAPTER_UNICAST_ADDRESS_LH_UNION1* {.pure, union.} = object
     Alignment*: ULONGLONG
     struct1*: IP_ADAPTER_UNICAST_ADDRESS_LH_UNION1_STRUCT1
+
   IP_ADAPTER_UNICAST_ADDRESS_LH* {.pure.} = object
     union1*: IP_ADAPTER_UNICAST_ADDRESS_LH_UNION1
     Next*: ptr IP_ADAPTER_UNICAST_ADDRESS_LH
@@ -965,117 +1067,140 @@
     PreferredLifetime*: ULONG
     LeaseLifetime*: ULONG
     OnLinkPrefixLength*: UINT8
+
   PIP_ADAPTER_UNICAST_ADDRESS_LH* = ptr IP_ADAPTER_UNICAST_ADDRESS_LH
   IP_ADAPTER_UNICAST_ADDRESS* = IP_ADAPTER_UNICAST_ADDRESS_XP
   PIP_ADAPTER_UNICAST_ADDRESS* = ptr IP_ADAPTER_UNICAST_ADDRESS_XP
   IP_ADAPTER_ANYCAST_ADDRESS_XP_UNION1_STRUCT1* {.pure.} = object
     Length*: ULONG
     Flags*: DWORD
+
   IP_ADAPTER_ANYCAST_ADDRESS_XP_UNION1* {.pure, union.} = object
     Alignment*: ULONGLONG
     struct1*: IP_ADAPTER_ANYCAST_ADDRESS_XP_UNION1_STRUCT1
+
   IP_ADAPTER_ANYCAST_ADDRESS_XP* {.pure.} = object
     union1*: IP_ADAPTER_ANYCAST_ADDRESS_XP_UNION1
     Next*: ptr IP_ADAPTER_ANYCAST_ADDRESS_XP
     Address*: SOCKET_ADDRESS
+
   PIP_ADAPTER_ANYCAST_ADDRESS_XP* = ptr IP_ADAPTER_ANYCAST_ADDRESS_XP
   IP_ADAPTER_ANYCAST_ADDRESS* = IP_ADAPTER_ANYCAST_ADDRESS_XP
   PIP_ADAPTER_ANYCAST_ADDRESS* = ptr IP_ADAPTER_ANYCAST_ADDRESS_XP
   IP_ADAPTER_MULTICAST_ADDRESS_XP_UNION1_STRUCT1* {.pure.} = object
     Length*: ULONG
     Flags*: DWORD
+
   IP_ADAPTER_MULTICAST_ADDRESS_XP_UNION1* {.pure, union.} = object
     Alignment*: ULONGLONG
     struct1*: IP_ADAPTER_MULTICAST_ADDRESS_XP_UNION1_STRUCT1
+
   IP_ADAPTER_MULTICAST_ADDRESS_XP* {.pure.} = object
     union1*: IP_ADAPTER_MULTICAST_ADDRESS_XP_UNION1
     Next*: ptr IP_ADAPTER_MULTICAST_ADDRESS_XP
     Address*: SOCKET_ADDRESS
+
   PIP_ADAPTER_MULTICAST_ADDRESS_XP* = ptr IP_ADAPTER_MULTICAST_ADDRESS_XP
   IP_ADAPTER_MULTICAST_ADDRESS* = IP_ADAPTER_MULTICAST_ADDRESS_XP
   PIP_ADAPTER_MULTICAST_ADDRESS* = ptr IP_ADAPTER_MULTICAST_ADDRESS_XP
   IP_ADAPTER_DNS_SERVER_ADDRESS_XP_UNION1_STRUCT1* {.pure.} = object
     Length*: ULONG
     Reserved*: DWORD
+
   IP_ADAPTER_DNS_SERVER_ADDRESS_XP_UNION1* {.pure, union.} = object
     Alignment*: ULONGLONG
     struct1*: IP_ADAPTER_DNS_SERVER_ADDRESS_XP_UNION1_STRUCT1
+
   IP_ADAPTER_DNS_SERVER_ADDRESS_XP* {.pure.} = object
     union1*: IP_ADAPTER_DNS_SERVER_ADDRESS_XP_UNION1
     Next*: ptr IP_ADAPTER_DNS_SERVER_ADDRESS_XP
     Address*: SOCKET_ADDRESS
+
   PIP_ADAPTER_DNS_SERVER_ADDRESS_XP* = ptr IP_ADAPTER_DNS_SERVER_ADDRESS_XP
   IP_ADAPTER_DNS_SERVER_ADDRESS* = IP_ADAPTER_DNS_SERVER_ADDRESS_XP
   PIP_ADAPTER_DNS_SERVER_ADDRESS* = ptr IP_ADAPTER_DNS_SERVER_ADDRESS_XP
   IP_ADAPTER_PREFIX_XP_UNION1_STRUCT1* {.pure.} = object
     Length*: ULONG
     Flags*: DWORD
+
   IP_ADAPTER_PREFIX_XP_UNION1* {.pure, union.} = object
     Alignment*: ULONGLONG
     struct1*: IP_ADAPTER_PREFIX_XP_UNION1_STRUCT1
+
   IP_ADAPTER_PREFIX_XP* {.pure.} = object
     union1*: IP_ADAPTER_PREFIX_XP_UNION1
     Next*: ptr IP_ADAPTER_PREFIX_XP
     Address*: SOCKET_ADDRESS
     PrefixLength*: ULONG
+
   PIP_ADAPTER_PREFIX_XP* = ptr IP_ADAPTER_PREFIX_XP
   IP_ADAPTER_PREFIX* = IP_ADAPTER_PREFIX_XP
   PIP_ADAPTER_PREFIX* = ptr IP_ADAPTER_PREFIX_XP
   IP_ADAPTER_WINS_SERVER_ADDRESS_LH_UNION1_STRUCT1* {.pure.} = object
     Length*: ULONG
     Reserved*: DWORD
+
   IP_ADAPTER_WINS_SERVER_ADDRESS_LH_UNION1* {.pure, union.} = object
     Alignment*: ULONGLONG
     struct1*: IP_ADAPTER_WINS_SERVER_ADDRESS_LH_UNION1_STRUCT1
+
   IP_ADAPTER_WINS_SERVER_ADDRESS_LH* {.pure.} = object
     union1*: IP_ADAPTER_WINS_SERVER_ADDRESS_LH_UNION1
     Next*: ptr IP_ADAPTER_WINS_SERVER_ADDRESS_LH
     Address*: SOCKET_ADDRESS
+
   PIP_ADAPTER_WINS_SERVER_ADDRESS_LH* = ptr IP_ADAPTER_WINS_SERVER_ADDRESS_LH
   IP_ADAPTER_WINS_SERVER_ADDRESS* = IP_ADAPTER_WINS_SERVER_ADDRESS_LH
   PIP_ADAPTER_WINS_SERVER_ADDRESS* = ptr IP_ADAPTER_WINS_SERVER_ADDRESS_LH
   IP_ADAPTER_GATEWAY_ADDRESS_LH_UNION1_STRUCT1* {.pure.} = object
     Length*: ULONG
     Reserved*: DWORD
+
   IP_ADAPTER_GATEWAY_ADDRESS_LH_UNION1* {.pure, union.} = object
     Alignment*: ULONGLONG
     struct1*: IP_ADAPTER_GATEWAY_ADDRESS_LH_UNION1_STRUCT1
+
   IP_ADAPTER_GATEWAY_ADDRESS_LH* {.pure.} = object
     union1*: IP_ADAPTER_GATEWAY_ADDRESS_LH_UNION1
     Next*: ptr IP_ADAPTER_GATEWAY_ADDRESS_LH
     Address*: SOCKET_ADDRESS
+
   PIP_ADAPTER_GATEWAY_ADDRESS_LH* = ptr IP_ADAPTER_GATEWAY_ADDRESS_LH
   IP_ADAPTER_GATEWAY_ADDRESS* = IP_ADAPTER_GATEWAY_ADDRESS_LH
   PIP_ADAPTER_GATEWAY_ADDRESS* = ptr IP_ADAPTER_GATEWAY_ADDRESS_LH
-const
-  MAX_DNS_SUFFIX_STRING_LENGTH* = 256
+
+const MAX_DNS_SUFFIX_STRING_LENGTH* = 256
 type
   IP_ADAPTER_DNS_SUFFIX* {.pure.} = object
     Next*: ptr IP_ADAPTER_DNS_SUFFIX
     String*: array[MAX_DNS_SUFFIX_STRING_LENGTH, WCHAR]
+
   PIP_ADAPTER_DNS_SUFFIX* = ptr IP_ADAPTER_DNS_SUFFIX
   IP_ADAPTER_ADDRESSES_LH_UNION1_STRUCT1* {.pure.} = object
     Length*: ULONG
     IfIndex*: IF_INDEX
+
   IP_ADAPTER_ADDRESSES_LH_UNION1* {.pure, union.} = object
     Alignment*: ULONGLONG
     struct1*: IP_ADAPTER_ADDRESSES_LH_UNION1_STRUCT1
+
   IP_ADAPTER_ADDRESSES_LH_UNION2_STRUCT1* {.pure.} = object
-    DdnsEnabled* {.bitsize:1.}: ULONG
-    RegisterAdapterSuffix* {.bitsize:1.}: ULONG
-    Dhcpv4Enabled* {.bitsize:1.}: ULONG
-    ReceiveOnly* {.bitsize:1.}: ULONG
-    NoMulticast* {.bitsize:1.}: ULONG
-    Ipv6OtherStatefulConfig* {.bitsize:1.}: ULONG
-    NetbiosOverTcpipEnabled* {.bitsize:1.}: ULONG
-    Ipv4Enabled* {.bitsize:1.}: ULONG
-    Ipv6Enabled* {.bitsize:1.}: ULONG
-    Ipv6ManagedAddressConfigurationSupported* {.bitsize:1.}: ULONG
+    DdnsEnabled* {.bitsize: 1.}: ULONG
+    RegisterAdapterSuffix* {.bitsize: 1.}: ULONG
+    Dhcpv4Enabled* {.bitsize: 1.}: ULONG
+    ReceiveOnly* {.bitsize: 1.}: ULONG
+    NoMulticast* {.bitsize: 1.}: ULONG
+    Ipv6OtherStatefulConfig* {.bitsize: 1.}: ULONG
+    NetbiosOverTcpipEnabled* {.bitsize: 1.}: ULONG
+    Ipv4Enabled* {.bitsize: 1.}: ULONG
+    Ipv6Enabled* {.bitsize: 1.}: ULONG
+    Ipv6ManagedAddressConfigurationSupported* {.bitsize: 1.}: ULONG
+
   IP_ADAPTER_ADDRESSES_LH_UNION2* {.pure, union.} = object
     Flags*: ULONG
     struct1*: IP_ADAPTER_ADDRESSES_LH_UNION2_STRUCT1
-const
-  MAX_DHCPV6_DUID_LENGTH* = 130
+
+const MAX_DHCPV6_DUID_LENGTH* = 130
 type
   IP_ADAPTER_ADDRESSES_LH* {.pure.} = object
     union1*: IP_ADAPTER_ADDRESSES_LH_UNION1
@@ -1114,13 +1239,16 @@
     Dhcpv6ClientDuidLength*: ULONG
     Dhcpv6Iaid*: ULONG
     FirstDnsSuffix*: PIP_ADAPTER_DNS_SUFFIX
+
   PIP_ADAPTER_ADDRESSES_LH* = ptr IP_ADAPTER_ADDRESSES_LH
   IP_ADAPTER_ADDRESSES_XP_UNION1_STRUCT1* {.pure.} = object
     Length*: ULONG
     IfIndex*: DWORD
+
   IP_ADAPTER_ADDRESSES_XP_UNION1* {.pure, union.} = object
     Alignment*: ULONGLONG
     struct1*: IP_ADAPTER_ADDRESSES_XP_UNION1_STRUCT1
+
   IP_ADAPTER_ADDRESSES_XP* {.pure.} = object
     union1*: IP_ADAPTER_ADDRESSES_XP_UNION1
     Next*: ptr IP_ADAPTER_ADDRESSES_XP
@@ -1141,6 +1269,7 @@
     Ipv6IfIndex*: DWORD
     ZoneIndices*: array[16, DWORD]
     FirstPrefix*: PIP_ADAPTER_PREFIX_XP
+
   PIP_ADAPTER_ADDRESSES_XP* = ptr IP_ADAPTER_ADDRESSES_XP
   IP_ADAPTER_ADDRESSES* = IP_ADAPTER_ADDRESSES_XP
   PIP_ADAPTER_ADDRESSES* = ptr IP_ADAPTER_ADDRESSES_XP
@@ -1149,7 +1278,9 @@
     AutoconfigActive*: UINT
     CurrentDnsServer*: PIP_ADDR_STRING
     DnsServerList*: IP_ADDR_STRING
+
   PIP_PER_ADAPTER_INFO* = ptr IP_PER_ADAPTER_INFO
+
 const
   MAX_HOSTNAME_LEN* = 128
   MAX_DOMAIN_NAME_LEN* = 128
@@ -1165,6 +1296,7 @@
     EnableRouting*: UINT
     EnableProxy*: UINT
     EnableDns*: UINT
+
   PFIXED_INFO* = ptr FIXED_INFO
   IP_INTERFACE_NAME_INFO* {.pure.} = object
     Index*: ULONG
@@ -1173,6 +1305,7 @@
     AccessType*: UCHAR
     DeviceGuid*: GUID
     InterfaceGuid*: GUID
+
   PIP_INTERFACE_NAME_INFO* = ptr IP_INTERFACE_NAME_INFO
   TCP_ESTATS_BANDWIDTH_ROD_v0* {.pure.} = object
     OutboundBandwidth*: ULONG64
@@ -1181,10 +1314,12 @@
     InboundInstability*: ULONG64
     OutboundBandwidthPeaked*: BOOLEAN
     InboundBandwidthPeaked*: BOOLEAN
+
   PTCP_ESTATS_BANDWIDTH_ROD_v0* = ptr TCP_ESTATS_BANDWIDTH_ROD_v0
   TCP_ESTATS_BANDWIDTH_RW_v0* {.pure.} = object
     EnableCollectionOutbound*: TCP_BOOLEAN_OPTIONAL
     EnableCollectionInbound*: TCP_BOOLEAN_OPTIONAL
+
   PTCP_ESTATS_BANDWIDTH_RW_v0* = ptr TCP_ESTATS_BANDWIDTH_RW_v0
   TCP_ESTATS_DATA_ROD_v0* {.pure.} = object
     DataBytesOut*: ULONG64
@@ -1201,27 +1336,33 @@
     ThruBytesAcked*: ULONG64
     RcvNxt*: ULONG
     ThruBytesReceived*: ULONG64
+
   PTCP_ESTATS_DATA_ROD_v0* = ptr TCP_ESTATS_DATA_ROD_v0
   TCP_ESTATS_DATA_RW_v0* {.pure.} = object
     EnableCollection*: BOOLEAN
+
   PTCP_ESTATS_DATA_RW_v0* = ptr TCP_ESTATS_DATA_RW_v0
   TCP_ESTATS_FINE_RTT_ROD_v0* {.pure.} = object
     RttVar*: ULONG
     MaxRtt*: ULONG
     MinRtt*: ULONG
     SumRtt*: ULONG
+
   PTCP_ESTATS_FINE_RTT_ROD_v0* = ptr TCP_ESTATS_FINE_RTT_ROD_v0
   TCP_ESTATS_FINE_RTT_RW_v0* {.pure.} = object
     EnableCollection*: BOOLEAN
+
   PTCP_ESTATS_FINE_RTT_RW_v0* = ptr TCP_ESTATS_FINE_RTT_RW_v0
   TCP_ESTATS_OBS_REC_ROD_v0* {.pure.} = object
     CurRwinRcvd*: ULONG
     MaxRwinRcvd*: ULONG
     MinRwinRcvd*: ULONG
     WinScaleRcvd*: UCHAR
+
   PTCP_ESTATS_OBS_REC_ROD_v0* = ptr TCP_ESTATS_OBS_REC_ROD_v0
   TCP_ESTATS_OBS_REC_RW_v0* {.pure.} = object
     EnableCollection*: BOOLEAN
+
   PTCP_ESTATS_OBS_REC_RW_v0* = ptr TCP_ESTATS_OBS_REC_RW_v0
   TCP_ESTATS_PATH_ROD_v0* {.pure.} = object
     FastRetran*: ULONG
@@ -1264,9 +1405,11 @@
     MaxMss*: ULONG
     MinMss*: ULONG
     SpuriousRtoDetections*: ULONG
+
   PTCP_ESTATS_PATH_ROD_v0* = ptr TCP_ESTATS_PATH_ROD_v0
   TCP_ESTATS_PATH_RW_v0* {.pure.} = object
     EnableCollection*: BOOLEAN
+
   PTCP_ESTATS_PATH_RW_v0* = ptr TCP_ESTATS_PATH_RW_v0
   TCP_ESTATS_REC_ROD_v0* {.pure.} = object
     CurRwinSent*: ULONG
@@ -1283,18 +1426,22 @@
     CurAppRQueue*: SIZE_T
     MaxAppRQueue*: SIZE_T
     WinScaleSent*: UCHAR
+
   PTCP_ESTATS_REC_ROD_v0* = ptr TCP_ESTATS_REC_ROD_v0
   TCP_ESTATS_REC_RW_v0* {.pure.} = object
     EnableCollection*: BOOLEAN
+
   PTCP_ESTATS_REC_RW_v0* = ptr TCP_ESTATS_REC_RW_v0
   TCP_ESTATS_SEND_BUFF_ROD_v0* {.pure.} = object
     CurRetxQueue*: SIZE_T
     MaxRetxQueue*: SIZE_T
     CurAppWQueue*: SIZE_T
     MaxAppWQueue*: SIZE_T
+
   PTCP_ESTATS_SEND_BUFF_ROD_v0* = ptr TCP_ESTATS_SEND_BUFF_ROD_v0
   TCP_ESTATS_SEND_BUFF_RW_v0* {.pure.} = object
     EnableCollection*: BOOLEAN
+
   PTCP_ESTATS_SEND_BUFF_RW_v0* = ptr TCP_ESTATS_SEND_BUFF_RW_v0
   TCP_ESTATS_SND_CONG_ROD_v0* {.pure.} = object
     SndLimTransRwin*: ULONG
@@ -1315,55 +1462,69 @@
     CurSsthresh*: ULONG
     MaxSsthresh*: ULONG
     MinSsthresh*: ULONG
+
   PTCP_ESTATS_SND_CONG_ROD_v0* = ptr TCP_ESTATS_SND_CONG_ROD_v0
   TCP_ESTATS_SND_CONG_ROS_v0* {.pure.} = object
     LimCwnd*: ULONG
+
   PTCP_ESTATS_SND_CONG_ROS_v0* = ptr TCP_ESTATS_SND_CONG_ROS_v0
   TCP_ESTATS_SND_CONG_RW_v0* {.pure.} = object
     EnableCollection*: BOOLEAN
+
   PTCP_ESTATS_SND_CONG_RW_v0* = ptr TCP_ESTATS_SND_CONG_RW_v0
   TCP_ESTATS_SYN_OPTS_ROS_v0* {.pure.} = object
     ActiveOpen*: BOOLEAN
     MssRcvd*: ULONG
     MssSent*: ULONG
+
   PTCP_ESTATS_SYN_OPTS_ROS_v0* = ptr TCP_ESTATS_SYN_OPTS_ROS_v0
   NET_ADDRESS_INFO_UNION1_NamedAddress* {.pure.} = object
     Address*: array[DNS_MAX_NAME_BUFFER_LENGTH, WCHAR]
     Port*: array[6, WCHAR]
+
   NET_ADDRESS_INFO_UNION1* {.pure, union.} = object
     NamedAddress*: NET_ADDRESS_INFO_UNION1_NamedAddress
     Ipv4Address*: SOCKADDR_IN
     Ipv6Address*: SOCKADDR_IN6
     IpAddress*: SOCKADDR
+
   NET_ADDRESS_INFO* {.pure.} = object
     Format*: NET_ADDRESS_FORMAT
     union1*: NET_ADDRESS_INFO_UNION1
+
   PNET_ADDRESS_INFO* = ptr NET_ADDRESS_INFO
   IConnectionRequestCallback* {.pure.} = object
     lpVtbl*: ptr IConnectionRequestCallbackVtbl
+
   IConnectionRequestCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnComplete*: proc(self: ptr IConnectionRequestCallback, hrStatus: HRESULT): HRESULT {.stdcall.}
+    OnComplete*:
+      proc(self: ptr IConnectionRequestCallback, hrStatus: HRESULT): HRESULT {.stdcall.}
+
   ILocationReport* = IConnectionRequestCallback
   NDIS_STATISTICS_VALUE* {.pure.} = object
     Oid*: NDIS_OID
     DataLength*: ULONG
     Data*: array[1, UCHAR]
+
   PNDIS_STATISTICS_VALUE* = ptr NDIS_STATISTICS_VALUE
   NDIS_STATISTICS_VALUE_EX* {.pure.} = object
     Oid*: NDIS_OID
     DataLength*: ULONG
     Length*: ULONG
     Data*: array[1, UCHAR]
+
   PNDIS_STATISTICS_VALUE_EX* = ptr NDIS_STATISTICS_VALUE_EX
   NDIS_VAR_DATA_DESC* {.pure.} = object
     Length*: USHORT
     MaximumLength*: USHORT
     Offset*: ULONG_PTR
+
   PNDIS_VAR_DATA_DESC* = ptr NDIS_VAR_DATA_DESC
   NDIS_OBJECT_HEADER* {.pure.} = object
     Type*: UCHAR
     Revision*: UCHAR
     Size*: USHORT
+
   PNDIS_OBJECT_HEADER* = ptr NDIS_OBJECT_HEADER
   NDIS_STATISTICS_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -1386,6 +1547,7 @@
     ifHCOutUcastOctets*: ULONG64
     ifHCOutMulticastOctets*: ULONG64
     ifHCOutBroadcastOctets*: ULONG64
+
   PNDIS_STATISTICS_INFO* = ptr NDIS_STATISTICS_INFO
   NDIS_RSC_STATISTICS_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -1393,17 +1555,20 @@
     CoalescedOctets*: ULONG64
     CoalesceEvents*: ULONG64
     Aborts*: ULONG64
+
   PNDIS_RSC_STATISTICS_INFO* = ptr NDIS_RSC_STATISTICS_INFO
   NDIS_INTERRUPT_MODERATION_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     InterruptModeration*: NDIS_INTERRUPT_MODERATION
+
   PNDIS_INTERRUPT_MODERATION_PARAMETERS* = ptr NDIS_INTERRUPT_MODERATION_PARAMETERS
   NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     TimeoutArrayLength*: ULONG
     TimeoutArray*: array[1, ULONG]
+
   PNDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES* = ptr NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES
   NDIS_PCI_DEVICE_CUSTOM_PROPERTIES* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -1419,34 +1584,41 @@
     PciExpressVersion*: UINT32
     InterruptType*: UINT32
     MaxInterruptMessages*: UINT32
+
   PNDIS_PCI_DEVICE_CUSTOM_PROPERTIES* = ptr NDIS_PCI_DEVICE_CUSTOM_PROPERTIES
   NDIS_802_11_MAC_ADDRESS* = array[6, UCHAR]
   NDIS_802_11_STATUS_INDICATION* {.pure.} = object
     StatusType*: NDIS_802_11_STATUS_TYPE
+
   PNDIS_802_11_STATUS_INDICATION* = ptr NDIS_802_11_STATUS_INDICATION
   NDIS_802_11_AUTHENTICATION_REQUEST* {.pure.} = object
     Length*: ULONG
     Bssid*: NDIS_802_11_MAC_ADDRESS
     Flags*: ULONG
+
   PNDIS_802_11_AUTHENTICATION_REQUEST* = ptr NDIS_802_11_AUTHENTICATION_REQUEST
   PMKID_CANDIDATE* {.pure.} = object
     BSSID*: NDIS_802_11_MAC_ADDRESS
     Flags*: ULONG
+
   PPMKID_CANDIDATE* = ptr PMKID_CANDIDATE
   NDIS_802_11_PMKID_CANDIDATE_LIST* {.pure.} = object
     Version*: ULONG
     NumCandidates*: ULONG
     CandidateList*: array[1, PMKID_CANDIDATE]
+
   PNDIS_802_11_PMKID_CANDIDATE_LIST* = ptr NDIS_802_11_PMKID_CANDIDATE_LIST
   NDIS_802_11_NETWORK_TYPE_LIST* {.pure.} = object
     NumberOfItems*: ULONG
     NetworkType*: array[1, NDIS_802_11_NETWORK_TYPE]
+
   PNDIS_802_11_NETWORK_TYPE_LIST* = ptr NDIS_802_11_NETWORK_TYPE_LIST
   NDIS_802_11_CONFIGURATION_FH* {.pure.} = object
     Length*: ULONG
     HopPattern*: ULONG
     HopSet*: ULONG
     DwellTime*: ULONG
+
   PNDIS_802_11_CONFIGURATION_FH* = ptr NDIS_802_11_CONFIGURATION_FH
   NDIS_802_11_CONFIGURATION* {.pure.} = object
     Length*: ULONG
@@ -1454,6 +1626,7 @@
     ATIMWindow*: ULONG
     DSConfig*: ULONG
     FHConfig*: NDIS_802_11_CONFIGURATION_FH
+
   PNDIS_802_11_CONFIGURATION* = ptr NDIS_802_11_CONFIGURATION
   NDIS_802_11_STATISTICS* {.pure.} = object
     Length*: ULONG
@@ -1481,6 +1654,7 @@
     WEPICVErrorCount*: LARGE_INTEGER
     DecryptSuccessCount*: LARGE_INTEGER
     DecryptFailureCount*: LARGE_INTEGER
+
   PNDIS_802_11_STATISTICS* = ptr NDIS_802_11_STATISTICS
   NDIS_802_11_KEY* {.pure.} = object
     Length*: ULONG
@@ -1489,32 +1663,32 @@
     BSSID*: NDIS_802_11_MAC_ADDRESS
     KeyRSC*: NDIS_802_11_KEY_RSC
     KeyMaterial*: array[1, UCHAR]
+
   PNDIS_802_11_KEY* = ptr NDIS_802_11_KEY
   NDIS_802_11_REMOVE_KEY* {.pure.} = object
     Length*: ULONG
     KeyIndex*: ULONG
     BSSID*: NDIS_802_11_MAC_ADDRESS
+
   PNDIS_802_11_REMOVE_KEY* = ptr NDIS_802_11_REMOVE_KEY
   NDIS_802_11_WEP* {.pure.} = object
     Length*: ULONG
     KeyIndex*: ULONG
     KeyLength*: ULONG
     KeyMaterial*: array[1, UCHAR]
+
   PNDIS_802_11_WEP* = ptr NDIS_802_11_WEP
-const
-  NDIS_802_11_LENGTH_RATES* = 8
-type
-  NDIS_802_11_RATES* = array[NDIS_802_11_LENGTH_RATES, UCHAR]
-const
-  NDIS_802_11_LENGTH_RATES_EX* = 16
-type
-  NDIS_802_11_RATES_EX* = array[NDIS_802_11_LENGTH_RATES_EX, UCHAR]
-const
-  NDIS_802_11_LENGTH_SSID* = 32
+
+const NDIS_802_11_LENGTH_RATES* = 8
+type NDIS_802_11_RATES* = array[NDIS_802_11_LENGTH_RATES, UCHAR]
+const NDIS_802_11_LENGTH_RATES_EX* = 16
+type NDIS_802_11_RATES_EX* = array[NDIS_802_11_LENGTH_RATES_EX, UCHAR]
+const NDIS_802_11_LENGTH_SSID* = 32
 type
   NDIS_802_11_SSID* {.pure.} = object
     SsidLength*: ULONG
     Ssid*: array[NDIS_802_11_LENGTH_SSID, UCHAR]
+
   PNDIS_802_11_SSID* = ptr NDIS_802_11_SSID
   NDIS_WLAN_BSSID* {.pure.} = object
     Length*: ULONG
@@ -1527,10 +1701,12 @@
     Configuration*: NDIS_802_11_CONFIGURATION
     InfrastructureMode*: NDIS_802_11_NETWORK_INFRASTRUCTURE
     SupportedRates*: NDIS_802_11_RATES
+
   PNDIS_WLAN_BSSID* = ptr NDIS_WLAN_BSSID
   NDIS_802_11_BSSID_LIST* {.pure.} = object
     NumberOfItems*: ULONG
     Bssid*: array[1, NDIS_WLAN_BSSID]
+
   PNDIS_802_11_BSSID_LIST* = ptr NDIS_802_11_BSSID_LIST
   NDIS_WLAN_BSSID_EX* {.pure.} = object
     Length*: ULONG
@@ -1545,30 +1721,36 @@
     SupportedRates*: NDIS_802_11_RATES_EX
     IELength*: ULONG
     IEs*: array[1, UCHAR]
+
   PNDIS_WLAN_BSSID_EX* = ptr NDIS_WLAN_BSSID_EX
   NDIS_802_11_BSSID_LIST_EX* {.pure.} = object
     NumberOfItems*: ULONG
     Bssid*: array[1, NDIS_WLAN_BSSID_EX]
+
   PNDIS_802_11_BSSID_LIST_EX* = ptr NDIS_802_11_BSSID_LIST_EX
   NDIS_802_11_FIXED_IEs* {.pure.} = object
     Timestamp*: array[8, UCHAR]
     BeaconInterval*: USHORT
     Capabilities*: USHORT
+
   PNDIS_802_11_FIXED_IEs* = ptr NDIS_802_11_FIXED_IEs
   NDIS_802_11_VARIABLE_IEs* {.pure.} = object
     ElementID*: UCHAR
     Length*: UCHAR
     data*: array[1, UCHAR]
+
   PNDIS_802_11_VARIABLE_IEs* = ptr NDIS_802_11_VARIABLE_IEs
   NDIS_802_11_AI_REQFI* {.pure.} = object
     Capabilities*: USHORT
     ListenInterval*: USHORT
     CurrentAPAddress*: NDIS_802_11_MAC_ADDRESS
+
   PNDIS_802_11_AI_REQFI* = ptr NDIS_802_11_AI_REQFI
   NDIS_802_11_AI_RESFI* {.pure.} = object
     Capabilities*: USHORT
     StatusCode*: USHORT
     AssociationId*: USHORT
+
   PNDIS_802_11_AI_RESFI* = ptr NDIS_802_11_AI_RESFI
   NDIS_802_11_ASSOCIATION_INFORMATION* {.pure.} = object
     Length*: ULONG
@@ -1580,32 +1762,39 @@
     ResponseFixedIEs*: NDIS_802_11_AI_RESFI
     ResponseIELength*: ULONG
     OffsetResponseIEs*: ULONG
+
   PNDIS_802_11_ASSOCIATION_INFORMATION* = ptr NDIS_802_11_ASSOCIATION_INFORMATION
   NDIS_802_11_AUTHENTICATION_EVENT* {.pure.} = object
     Status*: NDIS_802_11_STATUS_INDICATION
     Request*: array[1, NDIS_802_11_AUTHENTICATION_REQUEST]
+
   PNDIS_802_11_AUTHENTICATION_EVENT* = ptr NDIS_802_11_AUTHENTICATION_EVENT
   NDIS_802_11_TEST_UNION1* {.pure, union.} = object
     AuthenticationEvent*: NDIS_802_11_AUTHENTICATION_EVENT
     RssiTrigger*: NDIS_802_11_RSSI
+
   NDIS_802_11_TEST* {.pure.} = object
     Length*: ULONG
     Type*: ULONG
     union1*: NDIS_802_11_TEST_UNION1
+
   PNDIS_802_11_TEST* = ptr NDIS_802_11_TEST
   NDIS_802_11_PMKID_VALUE* = array[16, UCHAR]
   BSSID_INFO* {.pure.} = object
     BSSID*: NDIS_802_11_MAC_ADDRESS
     PMKID*: NDIS_802_11_PMKID_VALUE
+
   PBSSID_INFO* = ptr BSSID_INFO
   NDIS_802_11_PMKID* {.pure.} = object
     Length*: ULONG
     BSSIDInfoCount*: ULONG
     BSSIDInfo*: array[1, BSSID_INFO]
+
   PNDIS_802_11_PMKID* = ptr NDIS_802_11_PMKID
   NDIS_802_11_AUTHENTICATION_ENCRYPTION* {.pure.} = object
     AuthModeSupported*: NDIS_802_11_AUTHENTICATION_MODE
     EncryptStatusSupported*: NDIS_802_11_ENCRYPTION_STATUS
+
   PNDIS_802_11_AUTHENTICATION_ENCRYPTION* = ptr NDIS_802_11_AUTHENTICATION_ENCRYPTION
   NDIS_802_11_CAPABILITY* {.pure.} = object
     Length*: ULONG
@@ -1613,10 +1802,12 @@
     NoOfPMKIDs*: ULONG
     NoOfAuthEncryptPairsSupported*: ULONG
     AuthenticationEncryptionSupported*: array[1, NDIS_802_11_AUTHENTICATION_ENCRYPTION]
+
   PNDIS_802_11_CAPABILITY* = ptr NDIS_802_11_CAPABILITY
   NDIS_802_11_NON_BCAST_SSID_LIST* {.pure.} = object
     NumberOfItems*: ULONG
     Non_Bcast_Ssid*: array[1, NDIS_802_11_SSID]
+
   PNDIS_802_11_NON_BCAST_SSID_LIST* = ptr NDIS_802_11_NON_BCAST_SSID_LIST
   NDIS_CO_DEVICE_PROFILE* {.pure.} = object
     DeviceDescription*: NDIS_VAR_DATA_DESC
@@ -1647,11 +1838,13 @@
     ulUUIDropSize*: ULONG
     ulUUISendUserUserInfoSize*: ULONG
     ulUUICallInfoSize*: ULONG
+
   PNDIS_CO_DEVICE_PROFILE* = ptr NDIS_CO_DEVICE_PROFILE
   OFFLOAD_ALGO_INFO* {.pure.} = object
     algoIdentifier*: ULONG
     algoKeylen*: ULONG
     algoRounds*: ULONG
+
   POFFLOAD_ALGO_INFO* = ptr OFFLOAD_ALGO_INFO
   OFFLOAD_SECURITY_ASSOCIATION* {.pure.} = object
     Operation*: OFFLOAD_OPERATION_E
@@ -1659,9 +1852,10 @@
     IntegrityAlgo*: OFFLOAD_ALGO_INFO
     ConfAlgo*: OFFLOAD_ALGO_INFO
     Reserved*: OFFLOAD_ALGO_INFO
+
   POFFLOAD_SECURITY_ASSOCIATION* = ptr OFFLOAD_SECURITY_ASSOCIATION
-const
-  OFFLOAD_MAX_SAS* = 3
+
+const OFFLOAD_MAX_SAS* = 3
 type
   OFFLOAD_IPSEC_ADD_SA* {.pure.} = object
     SrcAddr*: IPAddr
@@ -1679,13 +1873,16 @@
     OffloadHandle*: HANDLE
     KeyLen*: ULONG
     KeyMat*: array[1, UCHAR]
+
   POFFLOAD_IPSEC_ADD_SA* = ptr OFFLOAD_IPSEC_ADD_SA
   OFFLOAD_IPSEC_DELETE_SA* {.pure.} = object
     OffloadHandle*: HANDLE
+
   POFFLOAD_IPSEC_DELETE_SA* = ptr OFFLOAD_IPSEC_DELETE_SA
   OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY* {.pure.} = object
     UdpEncapType*: UDP_ENCAP_TYPE
     DstEncapPort*: USHORT
+
   POFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY* = ptr OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY
   OFFLOAD_IPSEC_ADD_UDPESP_SA* {.pure.} = object
     SrcAddr*: IPAddr
@@ -1705,41 +1902,50 @@
     EncapTypeEntryOffldHandle*: HANDLE
     KeyLen*: ULONG
     KeyMat*: array[1, UCHAR]
+
   POFFLOAD_IPSEC_ADD_UDPESP_SA* = ptr OFFLOAD_IPSEC_ADD_UDPESP_SA
   OFFLOAD_IPSEC_DELETE_UDPESP_SA* {.pure.} = object
     OffloadHandle*: HANDLE
     EncapTypeEntryOffldHandle*: HANDLE
+
   POFFLOAD_IPSEC_DELETE_UDPESP_SA* = ptr OFFLOAD_IPSEC_DELETE_UDPESP_SA
   TRANSPORT_HEADER_OFFSET* {.pure.} = object
     ProtocolType*: USHORT
     HeaderOffset*: USHORT
+
   PTRANSPORT_HEADER_OFFSET* = ptr TRANSPORT_HEADER_OFFSET
   NETWORK_ADDRESS* {.pure.} = object
     AddressLength*: USHORT
     AddressType*: USHORT
     Address*: array[1, UCHAR]
+
   PNETWORK_ADDRESS* = ptr NETWORK_ADDRESS
   NETWORK_ADDRESS_LIST* {.pure.} = object
     AddressCount*: LONG
     AddressType*: USHORT
     Address*: array[1, NETWORK_ADDRESS]
+
   PNETWORK_ADDRESS_LIST* = ptr NETWORK_ADDRESS_LIST
   NETWORK_ADDRESS_IP* {.pure.} = object
     sin_port*: USHORT
     in_addr*: ULONG
     sin_zero*: array[8, UCHAR]
+
   PNETWORK_ADDRESS_IP* = ptr NETWORK_ADDRESS_IP
   NETWORK_ADDRESS_IPX* {.pure.} = object
     NetworkAddress*: ULONG
     NodeAddress*: array[6, UCHAR]
     Socket*: USHORT
+
   PNETWORK_ADDRESS_IPX* = ptr NETWORK_ADDRESS_IPX
   GEN_GET_TIME_CAPS* {.pure.} = object
     Flags*: ULONG
     ClockPrecision*: ULONG
+
   PGEN_GET_TIME_CAPS* = ptr GEN_GET_TIME_CAPS
   GEN_GET_NETCARD_TIME* {.pure.} = object
     ReadTime*: ULONGLONG
+
   PGEN_GET_NETCARD_TIME* = ptr GEN_GET_NETCARD_TIME
   NDIS_PM_PACKET_PATTERN* {.pure.} = object
     Priority*: ULONG
@@ -1748,40 +1954,49 @@
     PatternOffset*: ULONG
     PatternSize*: ULONG
     PatternFlags*: ULONG
+
   PNDIS_PM_PACKET_PATTERN* = ptr NDIS_PM_PACKET_PATTERN
   NDIS_PM_WAKE_UP_CAPABILITIES* {.pure.} = object
     MinMagicPacketWakeUp*: NDIS_DEVICE_POWER_STATE
     MinPatternWakeUp*: NDIS_DEVICE_POWER_STATE
     MinLinkChangeWakeUp*: NDIS_DEVICE_POWER_STATE
+
   PNDIS_PM_WAKE_UP_CAPABILITIES* = ptr NDIS_PM_WAKE_UP_CAPABILITIES
   NDIS_PNP_CAPABILITIES* {.pure.} = object
     Flags*: ULONG
     WakeUpCapabilities*: NDIS_PM_WAKE_UP_CAPABILITIES
+
   PNDIS_PNP_CAPABILITIES* = ptr NDIS_PNP_CAPABILITIES
   NDIS_WAN_PROTOCOL_CAPS* {.pure.} = object
     Flags*: ULONG
     Reserved*: ULONG
+
   PNDIS_WAN_PROTOCOL_CAPS* = ptr NDIS_WAN_PROTOCOL_CAPS
   NDIS_CO_LINK_SPEED* {.pure.} = object
     Outbound*: ULONG
     Inbound*: ULONG
+
   PNDIS_CO_LINK_SPEED* = ptr NDIS_CO_LINK_SPEED
   NDIS_LINK_SPEED* {.pure.} = object
     XmitLinkSpeed*: ULONG64
     RcvLinkSpeed*: ULONG64
+
   PNDIS_LINK_SPEED* = ptr NDIS_LINK_SPEED
   NDIS_GUID_UNION1* {.pure, union.} = object
     Oid*: NDIS_OID
     Status*: NDIS_STATUS
+
   NDIS_GUID* {.pure.} = object
     Guid*: GUID
     union1*: NDIS_GUID_UNION1
     Size*: ULONG
     Flags*: ULONG
+
   PNDIS_GUID* = ptr NDIS_GUID
   NDIS_IRDA_PACKET_INFO* {.pure.} = object
     ExtraBOFs*: ULONG
     MinTurnAroundTime*: ULONG
+
   PNDIS_IRDA_PACKET_INFO* = ptr NDIS_IRDA_PACKET_INFO
   NDIS_IF_COUNTED_STRING* = IF_COUNTED_STRING
   PNDIS_IF_COUNTED_STRING* = ptr IF_COUNTED_STRING
@@ -1799,6 +2014,7 @@
     RcvLinkSpeed*: ULONG64
     PauseFunctions*: NDIS_SUPPORTED_PAUSE_FUNCTIONS
     AutoNegotiationFlags*: ULONG
+
   PNDIS_LINK_STATE* = ptr NDIS_LINK_STATE
   NDIS_LINK_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -1807,37 +2023,45 @@
     RcvLinkSpeed*: ULONG64
     PauseFunctions*: NDIS_SUPPORTED_PAUSE_FUNCTIONS
     AutoNegotiationFlags*: ULONG
+
   PNDIS_LINK_PARAMETERS* = ptr NDIS_LINK_PARAMETERS
   NDIS_OPER_STATE* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     OperationalStatus*: NET_IF_OPER_STATUS
     OperationalStatusFlags*: ULONG
+
   PNDIS_OPER_STATE* = ptr NDIS_OPER_STATE
   NDIS_IP_OPER_STATUS* {.pure.} = object
     AddressFamily*: ULONG
     OperationalStatus*: NET_IF_OPER_STATUS
     OperationalStatusFlags*: ULONG
+
   PNDIS_IP_OPER_STATUS* = ptr NDIS_IP_OPER_STATUS
-const
-  MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED* = 32
+
+const MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED* = 32
 type
   NDIS_IP_OPER_STATUS_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     NumberofAddressFamiliesReturned*: ULONG
-    IpOperationalStatus*: array[MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED, NDIS_IP_OPER_STATUS]
+    IpOperationalStatus*:
+      array[MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED, NDIS_IP_OPER_STATUS]
+
   PNDIS_IP_OPER_STATUS_INFO* = ptr NDIS_IP_OPER_STATUS_INFO
   NDIS_IP_OPER_STATE* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     IpOperationalStatus*: NDIS_IP_OPER_STATUS
+
   PNDIS_IP_OPER_STATE* = ptr NDIS_IP_OPER_STATE
   NDIS_OFFLOAD_PARAMETERS_STRUCT1* {.pure.} = object
     RscIPv4*: UCHAR
     RscIPv6*: UCHAR
+
   NDIS_OFFLOAD_PARAMETERS_STRUCT2* {.pure.} = object
     EncapsulatedPacketTaskOffload*: UCHAR
     EncapsulationTypes*: UCHAR
+
   NDIS_OFFLOAD_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     IPv4Checksum*: UCHAR
@@ -1856,47 +2080,55 @@
     IPsecV2IPv4*: UCHAR
     struct1*: NDIS_OFFLOAD_PARAMETERS_STRUCT1
     struct2*: NDIS_OFFLOAD_PARAMETERS_STRUCT2
+
   PNDIS_OFFLOAD_PARAMETERS* = ptr NDIS_OFFLOAD_PARAMETERS
   NDIS_TCP_LARGE_SEND_OFFLOAD_V1_IPv4* {.pure.} = object
     Encapsulation*: ULONG
     MaxOffLoadSize*: ULONG
     MinSegmentCount*: ULONG
-    TcpOptions* {.bitsize:2.}: ULONG
-    IpOptions* {.bitsize:2.}: ULONG
+    TcpOptions* {.bitsize: 2.}: ULONG
+    IpOptions* {.bitsize: 2.}: ULONG
+
   NDIS_TCP_LARGE_SEND_OFFLOAD_V1* {.pure.} = object
     IPv4*: NDIS_TCP_LARGE_SEND_OFFLOAD_V1_IPv4
+
   PNDIS_TCP_LARGE_SEND_OFFLOAD_V1* = ptr NDIS_TCP_LARGE_SEND_OFFLOAD_V1
   NDIS_TCP_IP_CHECKSUM_OFFLOAD_IPv4Transmit* {.pure.} = object
     Encapsulation*: ULONG
-    IpOptionsSupported* {.bitsize:2.}: ULONG
-    TcpOptionsSupported* {.bitsize:2.}: ULONG
-    TcpChecksum* {.bitsize:2.}: ULONG
-    UdpChecksum* {.bitsize:2.}: ULONG
-    IpChecksum* {.bitsize:2.}: ULONG
+    IpOptionsSupported* {.bitsize: 2.}: ULONG
+    TcpOptionsSupported* {.bitsize: 2.}: ULONG
+    TcpChecksum* {.bitsize: 2.}: ULONG
+    UdpChecksum* {.bitsize: 2.}: ULONG
+    IpChecksum* {.bitsize: 2.}: ULONG
+
   NDIS_TCP_IP_CHECKSUM_OFFLOAD_IPv4Receive* {.pure.} = object
     Encapsulation*: ULONG
-    IpOptionsSupported* {.bitsize:2.}: ULONG
-    TcpOptionsSupported* {.bitsize:2.}: ULONG
-    TcpChecksum* {.bitsize:2.}: ULONG
-    UdpChecksum* {.bitsize:2.}: ULONG
-    IpChecksum* {.bitsize:2.}: ULONG
+    IpOptionsSupported* {.bitsize: 2.}: ULONG
+    TcpOptionsSupported* {.bitsize: 2.}: ULONG
+    TcpChecksum* {.bitsize: 2.}: ULONG
+    UdpChecksum* {.bitsize: 2.}: ULONG
+    IpChecksum* {.bitsize: 2.}: ULONG
+
   NDIS_TCP_IP_CHECKSUM_OFFLOAD_IPv6Transmit* {.pure.} = object
     Encapsulation*: ULONG
-    IpExtensionHeadersSupported* {.bitsize:2.}: ULONG
-    TcpOptionsSupported* {.bitsize:2.}: ULONG
-    TcpChecksum* {.bitsize:2.}: ULONG
-    UdpChecksum* {.bitsize:2.}: ULONG
+    IpExtensionHeadersSupported* {.bitsize: 2.}: ULONG
+    TcpOptionsSupported* {.bitsize: 2.}: ULONG
+    TcpChecksum* {.bitsize: 2.}: ULONG
+    UdpChecksum* {.bitsize: 2.}: ULONG
+
   NDIS_TCP_IP_CHECKSUM_OFFLOAD_IPv6Receive* {.pure.} = object
     Encapsulation*: ULONG
-    IpExtensionHeadersSupported* {.bitsize:2.}: ULONG
-    TcpOptionsSupported* {.bitsize:2.}: ULONG
-    TcpChecksum* {.bitsize:2.}: ULONG
-    UdpChecksum* {.bitsize:2.}: ULONG
+    IpExtensionHeadersSupported* {.bitsize: 2.}: ULONG
+    TcpOptionsSupported* {.bitsize: 2.}: ULONG
+    TcpChecksum* {.bitsize: 2.}: ULONG
+    UdpChecksum* {.bitsize: 2.}: ULONG
+
   NDIS_TCP_IP_CHECKSUM_OFFLOAD* {.pure.} = object
     IPv4Transmit*: NDIS_TCP_IP_CHECKSUM_OFFLOAD_IPv4Transmit
     IPv4Receive*: NDIS_TCP_IP_CHECKSUM_OFFLOAD_IPv4Receive
     IPv6Transmit*: NDIS_TCP_IP_CHECKSUM_OFFLOAD_IPv6Transmit
     IPv6Receive*: NDIS_TCP_IP_CHECKSUM_OFFLOAD_IPv6Receive
+
   PNDIS_TCP_IP_CHECKSUM_OFFLOAD* = ptr NDIS_TCP_IP_CHECKSUM_OFFLOAD
   NDIS_IPSEC_OFFLOAD_V1_Supported* {.pure.} = object
     Encapsulation*: ULONG
@@ -1904,40 +2136,47 @@
     TransportTunnelCombined*: ULONG
     IPv4Options*: ULONG
     Flags*: ULONG
+
   NDIS_IPSEC_OFFLOAD_V1_IPv4AH* {.pure.} = object
-    Md5* {.bitsize:2.}: ULONG
-    Sha_1* {.bitsize:2.}: ULONG
-    Transport* {.bitsize:2.}: ULONG
-    Tunnel* {.bitsize:2.}: ULONG
-    Send* {.bitsize:2.}: ULONG
-    Receive* {.bitsize:2.}: ULONG
+    Md5* {.bitsize: 2.}: ULONG
+    Sha_1* {.bitsize: 2.}: ULONG
+    Transport* {.bitsize: 2.}: ULONG
+    Tunnel* {.bitsize: 2.}: ULONG
+    Send* {.bitsize: 2.}: ULONG
+    Receive* {.bitsize: 2.}: ULONG
+
   NDIS_IPSEC_OFFLOAD_V1_IPv4ESP* {.pure.} = object
-    Des* {.bitsize:2.}: ULONG
-    Reserved* {.bitsize:2.}: ULONG
-    TripleDes* {.bitsize:2.}: ULONG
-    NullEsp* {.bitsize:2.}: ULONG
-    Transport* {.bitsize:2.}: ULONG
-    Tunnel* {.bitsize:2.}: ULONG
-    Send* {.bitsize:2.}: ULONG
-    Receive* {.bitsize:2.}: ULONG
+    Des* {.bitsize: 2.}: ULONG
+    Reserved* {.bitsize: 2.}: ULONG
+    TripleDes* {.bitsize: 2.}: ULONG
+    NullEsp* {.bitsize: 2.}: ULONG
+    Transport* {.bitsize: 2.}: ULONG
+    Tunnel* {.bitsize: 2.}: ULONG
+    Send* {.bitsize: 2.}: ULONG
+    Receive* {.bitsize: 2.}: ULONG
+
   NDIS_IPSEC_OFFLOAD_V1* {.pure.} = object
     Supported*: NDIS_IPSEC_OFFLOAD_V1_Supported
     IPv4AH*: NDIS_IPSEC_OFFLOAD_V1_IPv4AH
     IPv4ESP*: NDIS_IPSEC_OFFLOAD_V1_IPv4ESP
+
   PNDIS_IPSEC_OFFLOAD_V1* = ptr NDIS_IPSEC_OFFLOAD_V1
   NDIS_TCP_LARGE_SEND_OFFLOAD_V2_IPv4* {.pure.} = object
     Encapsulation*: ULONG
     MaxOffLoadSize*: ULONG
     MinSegmentCount*: ULONG
+
   NDIS_TCP_LARGE_SEND_OFFLOAD_V2_IPv6* {.pure.} = object
     Encapsulation*: ULONG
     MaxOffLoadSize*: ULONG
     MinSegmentCount*: ULONG
-    IpExtensionHeadersSupported* {.bitsize:2.}: ULONG
-    TcpOptionsSupported* {.bitsize:2.}: ULONG
+    IpExtensionHeadersSupported* {.bitsize: 2.}: ULONG
+    TcpOptionsSupported* {.bitsize: 2.}: ULONG
+
   NDIS_TCP_LARGE_SEND_OFFLOAD_V2* {.pure.} = object
     IPv4*: NDIS_TCP_LARGE_SEND_OFFLOAD_V2_IPv4
     IPv6*: NDIS_TCP_LARGE_SEND_OFFLOAD_V2_IPv6
+
   PNDIS_TCP_LARGE_SEND_OFFLOAD_V2* = ptr NDIS_TCP_LARGE_SEND_OFFLOAD_V2
   NDIS_IPSEC_OFFLOAD_V2* {.pure.} = object
     Encapsulation*: ULONG
@@ -1956,22 +2195,27 @@
     AuthenticationAlgorithms*: ULONG
     EncryptionAlgorithms*: ULONG
     SaOffloadCapacity*: ULONG
+
   PNDIS_IPSEC_OFFLOAD_V2* = ptr NDIS_IPSEC_OFFLOAD_V2
   NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD_IPv4* {.pure.} = object
     Enabled*: BOOLEAN
+
   NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD_IPv6* {.pure.} = object
     Enabled*: BOOLEAN
+
   NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD* {.pure.} = object
     IPv4*: NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD_IPv4
     IPv6*: NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD_IPv6
+
   PNDIS_TCP_RECV_SEG_COALESCE_OFFLOAD* = ptr NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD
   NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD* {.pure.} = object
-    TransmitChecksumOffloadSupported* {.bitsize:4.}: ULONG
-    ReceiveChecksumOffloadSupported* {.bitsize:4.}: ULONG
-    LsoV2Supported* {.bitsize:4.}: ULONG
-    RssSupported* {.bitsize:4.}: ULONG
-    VmqSupported* {.bitsize:4.}: ULONG
+    TransmitChecksumOffloadSupported* {.bitsize: 4.}: ULONG
+    ReceiveChecksumOffloadSupported* {.bitsize: 4.}: ULONG
+    LsoV2Supported* {.bitsize: 4.}: ULONG
+    RssSupported* {.bitsize: 4.}: ULONG
+    VmqSupported* {.bitsize: 4.}: ULONG
     MaxHeaderSizeSupported*: ULONG
+
   PNDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD* = ptr NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD
   NDIS_OFFLOAD* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -1983,6 +2227,7 @@
     IPsecV2*: NDIS_IPSEC_OFFLOAD_V2
     Rsc*: NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD
     EncapsulatedPacketTaskOffloadGre*: NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD
+
   PNDIS_OFFLOAD* = ptr NDIS_OFFLOAD
   NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1_IPv4* {.pure.} = object
     Encapsulation*: ULONG
@@ -1990,8 +2235,10 @@
     MinSegmentCount*: ULONG
     TcpOptions*: ULONG
     IpOptions*: ULONG
+
   NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1* {.pure.} = object
     IPv4*: NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1_IPv4
+
   PNDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1* = ptr NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1
   NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD_IPv4Transmit* {.pure.} = object
     Encapsulation*: ULONG
@@ -2000,6 +2247,7 @@
     TcpChecksum*: ULONG
     UdpChecksum*: ULONG
     IpChecksum*: ULONG
+
   NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD_IPv4Receive* {.pure.} = object
     Encapsulation*: ULONG
     IpOptionsSupported*: ULONG
@@ -2007,23 +2255,27 @@
     TcpChecksum*: ULONG
     UdpChecksum*: ULONG
     IpChecksum*: ULONG
+
   NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD_IPv6Transmit* {.pure.} = object
     Encapsulation*: ULONG
     IpExtensionHeadersSupported*: ULONG
     TcpOptionsSupported*: ULONG
     TcpChecksum*: ULONG
     UdpChecksum*: ULONG
+
   NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD_IPv6Receive* {.pure.} = object
     Encapsulation*: ULONG
     IpExtensionHeadersSupported*: ULONG
     TcpOptionsSupported*: ULONG
     TcpChecksum*: ULONG
     UdpChecksum*: ULONG
+
   NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD* {.pure.} = object
     IPv4Transmit*: NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD_IPv4Transmit
     IPv4Receive*: NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD_IPv4Receive
     IPv6Transmit*: NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD_IPv6Transmit
     IPv6Receive*: NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD_IPv6Receive
+
   PNDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD* = ptr NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD
   NDIS_WMI_IPSEC_OFFLOAD_V1_Supported* {.pure.} = object
     Encapsulation*: ULONG
@@ -2031,6 +2283,7 @@
     TransportTunnelCombined*: ULONG
     IPv4Options*: ULONG
     Flags*: ULONG
+
   NDIS_WMI_IPSEC_OFFLOAD_V1_IPv4AH* {.pure.} = object
     Md5*: ULONG
     Sha_1*: ULONG
@@ -2038,6 +2291,7 @@
     Tunnel*: ULONG
     Send*: ULONG
     Receive*: ULONG
+
   NDIS_WMI_IPSEC_OFFLOAD_V1_IPv4ESP* {.pure.} = object
     Des*: ULONG
     Reserved*: ULONG
@@ -2047,24 +2301,29 @@
     Tunnel*: ULONG
     Send*: ULONG
     Receive*: ULONG
+
   NDIS_WMI_IPSEC_OFFLOAD_V1* {.pure.} = object
     Supported*: NDIS_WMI_IPSEC_OFFLOAD_V1_Supported
     IPv4AH*: NDIS_WMI_IPSEC_OFFLOAD_V1_IPv4AH
     IPv4ESP*: NDIS_WMI_IPSEC_OFFLOAD_V1_IPv4ESP
+
   PNDIS_WMI_IPSEC_OFFLOAD_V1* = ptr NDIS_WMI_IPSEC_OFFLOAD_V1
   NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2_IPv4* {.pure.} = object
     Encapsulation*: ULONG
     MaxOffLoadSize*: ULONG
     MinSegmentCount*: ULONG
+
   NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2_IPv6* {.pure.} = object
     Encapsulation*: ULONG
     MaxOffLoadSize*: ULONG
     MinSegmentCount*: ULONG
     IpExtensionHeadersSupported*: ULONG
     TcpOptionsSupported*: ULONG
+
   NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2* {.pure.} = object
     IPv4*: NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2_IPv4
     IPv6*: NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2_IPv6
+
   PNDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2* = ptr NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2
   NDIS_WMI_OFFLOAD* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2076,17 +2335,19 @@
     IPsecV2*: NDIS_IPSEC_OFFLOAD_V2
     Rsc*: NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD
     EncapsulatedPacketTaskOffloadGre*: NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD
+
   PNDIS_WMI_OFFLOAD* = ptr NDIS_WMI_OFFLOAD
   NDIS_TCP_CONNECTION_OFFLOAD* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Encapsulation*: ULONG
-    SupportIPv4* {.bitsize:2.}: ULONG
-    SupportIPv6* {.bitsize:2.}: ULONG
-    SupportIPv6ExtensionHeaders* {.bitsize:2.}: ULONG
-    SupportSack* {.bitsize:2.}: ULONG
-    CongestionAlgorithm* {.bitsize:4.}: ULONG
+    SupportIPv4* {.bitsize: 2.}: ULONG
+    SupportIPv6* {.bitsize: 2.}: ULONG
+    SupportIPv6ExtensionHeaders* {.bitsize: 2.}: ULONG
+    SupportSack* {.bitsize: 2.}: ULONG
+    CongestionAlgorithm* {.bitsize: 4.}: ULONG
     TcpConnectionOffloadCapacity*: ULONG
     Flags*: ULONG
+
   PNDIS_TCP_CONNECTION_OFFLOAD* = ptr NDIS_TCP_CONNECTION_OFFLOAD
   NDIS_WMI_TCP_CONNECTION_OFFLOAD* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2097,6 +2358,7 @@
     SupportSack*: ULONG
     TcpConnectionOffloadCapacity*: ULONG
     Flags*: ULONG
+
   PNDIS_WMI_TCP_CONNECTION_OFFLOAD* = ptr NDIS_WMI_TCP_CONNECTION_OFFLOAD
   NDIS_PORT_CONTROLL_STATE* = NDIS_PORT_CONTROL_STATE
   PNDIS_PORT_CONTROLL_STATE* = PNDIS_PORT_CONTROL_STATE
@@ -2106,6 +2368,7 @@
     RcvControlState*: NDIS_PORT_CONTROL_STATE
     SendAuthorizationState*: NDIS_PORT_AUTHORIZATION_STATE
     RcvAuthorizationState*: NDIS_PORT_AUTHORIZATION_STATE
+
   PNDIS_PORT_AUTHENTICATION_PARAMETERS* = ptr NDIS_PORT_AUTHENTICATION_PARAMETERS
   NDIS_WMI_METHOD_HEADER* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2114,6 +2377,7 @@
     RequestId*: ULONG64
     Timeout*: ULONG
     Padding*: array[4, UCHAR]
+
   PNDIS_WMI_METHOD_HEADER* = ptr NDIS_WMI_METHOD_HEADER
   NDIS_WMI_SET_HEADER* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2122,6 +2386,7 @@
     RequestId*: ULONG64
     Timeout*: ULONG
     Padding*: array[4, UCHAR]
+
   PNDIS_WMI_SET_HEADER* = ptr NDIS_WMI_SET_HEADER
   NDIS_WMI_EVENT_HEADER* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2132,6 +2397,7 @@
     DeviceNameLength*: ULONG
     DeviceNameOffset*: ULONG
     Padding*: array[4, UCHAR]
+
   PNDIS_WMI_EVENT_HEADER* = ptr NDIS_WMI_EVENT_HEADER
   NDIS_WMI_ENUM_ADAPTER* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2139,10 +2405,12 @@
     NetLuid*: NET_LUID
     DeviceNameLength*: USHORT
     DeviceName*: array[1, CHAR]
+
   PNDIS_WMI_ENUM_ADAPTER* = ptr NDIS_WMI_ENUM_ADAPTER
   NDIS_HD_SPLIT_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     HDSplitCombineFlags*: ULONG
+
   PNDIS_HD_SPLIT_PARAMETERS* = ptr NDIS_HD_SPLIT_PARAMETERS
   NDIS_HD_SPLIT_CURRENT_CONFIG* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2152,19 +2420,22 @@
     HDSplitCombineFlags*: ULONG
     BackfillSize*: ULONG
     MaxHeaderSize*: ULONG
+
   PNDIS_HD_SPLIT_CURRENT_CONFIG* = ptr NDIS_HD_SPLIT_CURRENT_CONFIG
   NDIS_WMI_OUTPUT_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     SupportedRevision*: UCHAR
     DataOffset*: ULONG
+
   PNDIS_WMI_OUTPUT_INFO* = ptr NDIS_WMI_OUTPUT_INFO
-const
-  NDIS_PM_MAX_STRING_SIZE* = 64
+
+const NDIS_PM_MAX_STRING_SIZE* = 64
 type
   NDIS_PM_COUNTED_STRING* {.pure.} = object
     Length*: USHORT
     String*: array[NDIS_PM_MAX_STRING_SIZE + 1, WCHAR]
+
   PNDIS_PM_COUNTED_STRING* = ptr NDIS_PM_COUNTED_STRING
   NDIS_PM_CAPABILITIES* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2182,6 +2453,7 @@
     MinLinkChangeWakeUp*: NDIS_DEVICE_POWER_STATE
     SupportedWakeUpEvents*: ULONG
     MediaSpecificWakeUpEvents*: ULONG
+
   PNDIS_PM_CAPABILITIES* = ptr NDIS_PM_CAPABILITIES
   NDIS_PM_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2189,6 +2461,7 @@
     EnabledProtocolOffloads*: ULONG
     WakeUpFlags*: ULONG
     MediaSpecificWakeUpEvents*: ULONG
+
   PNDIS_PM_PARAMETERS* = ptr NDIS_PM_PARAMETERS
   NDIS_PM_WOL_PATTERN_WoLPattern_IPv4TcpSynParameters* {.pure.} = object
     Flags*: ULONG
@@ -2196,25 +2469,31 @@
     IPv4DestAddress*: array[4, UCHAR]
     TCPSourcePortNumber*: USHORT
     TCPDestPortNumber*: USHORT
+
   NDIS_PM_WOL_PATTERN_WoLPattern_IPv6TcpSynParameters* {.pure.} = object
     Flags*: ULONG
     IPv6SourceAddress*: array[16, UCHAR]
     IPv6DestAddress*: array[16, UCHAR]
     TCPSourcePortNumber*: USHORT
     TCPDestPortNumber*: USHORT
+
   NDIS_PM_WOL_PATTERN_WoLPattern_EapolRequestIdMessageParameters* {.pure.} = object
     Flags*: ULONG
+
   NDIS_PM_WOL_PATTERN_WoLPattern_WoLBitMapPattern* {.pure.} = object
     Flags*: ULONG
     MaskOffset*: ULONG
     MaskSize*: ULONG
     PatternOffset*: ULONG
     PatternSize*: ULONG
+
   NDIS_PM_WOL_PATTERN_WoLPattern* {.pure, union.} = object
     IPv4TcpSynParameters*: NDIS_PM_WOL_PATTERN_WoLPattern_IPv4TcpSynParameters
     IPv6TcpSynParameters*: NDIS_PM_WOL_PATTERN_WoLPattern_IPv6TcpSynParameters
-    EapolRequestIdMessageParameters*: NDIS_PM_WOL_PATTERN_WoLPattern_EapolRequestIdMessageParameters
+    EapolRequestIdMessageParameters*:
+      NDIS_PM_WOL_PATTERN_WoLPattern_EapolRequestIdMessageParameters
     WoLBitMapPattern*: NDIS_PM_WOL_PATTERN_WoLPattern_WoLBitMapPattern
+
   NDIS_PM_WOL_PATTERN* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
@@ -2224,18 +2503,21 @@
     PatternId*: ULONG
     NextWoLPatternOffset*: ULONG
     WoLPattern*: NDIS_PM_WOL_PATTERN_WoLPattern
+
   PNDIS_PM_WOL_PATTERN* = ptr NDIS_PM_WOL_PATTERN
   NDIS_PM_PROTOCOL_OFFLOAD_ProtocolOffloadParameters_IPv4ARPParameters* {.pure.} = object
     Flags*: ULONG
     RemoteIPv4Address*: array[4, UCHAR]
     HostIPv4Address*: array[4, UCHAR]
     MacAddress*: array[6, UCHAR]
+
   NDIS_PM_PROTOCOL_OFFLOAD_ProtocolOffloadParameters_IPv6NSParameters* {.pure.} = object
     Flags*: ULONG
     RemoteIPv6Address*: array[16, UCHAR]
     SolicitedNodeIPv6Address*: array[16, UCHAR]
     MacAddress*: array[6, UCHAR]
     TargetIPv6Addresses*: array[2, array[16, UCHAR]]
+
 const
   DOT11_RSN_KCK_LENGTH* = 16
   DOT11_RSN_KEK_LENGTH* = 16
@@ -2245,10 +2527,15 @@
     KCK*: array[DOT11_RSN_KCK_LENGTH, UCHAR]
     KEK*: array[DOT11_RSN_KEK_LENGTH, UCHAR]
     KeyReplayCounter*: ULONGLONG
+
   NDIS_PM_PROTOCOL_OFFLOAD_ProtocolOffloadParameters* {.pure, union.} = object
-    IPv4ARPParameters*: NDIS_PM_PROTOCOL_OFFLOAD_ProtocolOffloadParameters_IPv4ARPParameters
-    IPv6NSParameters*: NDIS_PM_PROTOCOL_OFFLOAD_ProtocolOffloadParameters_IPv6NSParameters
-    Dot11RSNRekeyParameters*: NDIS_PM_PROTOCOL_OFFLOAD_ProtocolOffloadParameters_Dot11RSNRekeyParameters
+    IPv4ARPParameters*:
+      NDIS_PM_PROTOCOL_OFFLOAD_ProtocolOffloadParameters_IPv4ARPParameters
+    IPv6NSParameters*:
+      NDIS_PM_PROTOCOL_OFFLOAD_ProtocolOffloadParameters_IPv6NSParameters
+    Dot11RSNRekeyParameters*:
+      NDIS_PM_PROTOCOL_OFFLOAD_ProtocolOffloadParameters_Dot11RSNRekeyParameters
+
   NDIS_PM_PROTOCOL_OFFLOAD* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
@@ -2258,6 +2545,7 @@
     ProtocolOffloadId*: ULONG
     NextProtocolOffloadOffset*: ULONG
     ProtocolOffloadParameters*: NDIS_PM_PROTOCOL_OFFLOAD_ProtocolOffloadParameters
+
   PNDIS_PM_PROTOCOL_OFFLOAD* = ptr NDIS_PM_PROTOCOL_OFFLOAD
   NDIS_PM_WAKE_REASON* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2265,6 +2553,7 @@
     WakeReason*: NDIS_PM_WAKE_REASON_TYPE
     InfoBufferOffset*: ULONG
     InfoBufferSize*: ULONG
+
   PNDIS_PM_WAKE_REASON* = ptr NDIS_PM_WAKE_REASON
   NDIS_PM_WAKE_PACKET* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2274,6 +2563,7 @@
     OriginalPacketSize*: ULONG
     SavedPacketSize*: ULONG
     SavedPacketOffset*: ULONG
+
   PNDIS_PM_WAKE_PACKET* = ptr NDIS_PM_WAKE_PACKET
   NDIS_WMI_PM_ADMIN_CONFIG* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2283,6 +2573,7 @@
     PMARPOffload*: NDIS_PM_ADMIN_CONFIG_STATE
     PMNSOffload*: NDIS_PM_ADMIN_CONFIG_STATE
     PMWiFiRekeyOffload*: NDIS_PM_ADMIN_CONFIG_STATE
+
   PNDIS_WMI_PM_ADMIN_CONFIG* = ptr NDIS_WMI_PM_ADMIN_CONFIG
   NDIS_WMI_PM_ACTIVE_CAPABILITIES* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2292,6 +2583,7 @@
     PMARPOffload*: NDIS_PM_CAPABILITY_STATE
     PMNSOffload*: NDIS_PM_CAPABILITY_STATE
     PMWiFiRekeyOffload*: NDIS_PM_CAPABILITY_STATE
+
   PNDIS_WMI_PM_ACTIVE_CAPABILITIES* = ptr NDIS_WMI_PM_ACTIVE_CAPABILITIES
   NDIS_RECEIVE_FILTER_CAPABILITIES* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2315,6 +2607,7 @@
     MaxFieldTestsPerPacketCoalescingFilter*: ULONG
     MaxPacketCoalescingFilters*: ULONG
     NdisReserved*: ULONG
+
   PNDIS_RECEIVE_FILTER_CAPABILITIES* = ptr NDIS_RECEIVE_FILTER_CAPABILITIES
   NDIS_NIC_SWITCH_CAPABILITIES* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2346,12 +2639,14 @@
     NdisReserved15*: ULONG
     NdisReserved16*: ULONG
     NdisReserved17*: ULONG
+
   PNDIS_NIC_SWITCH_CAPABILITIES* = ptr NDIS_NIC_SWITCH_CAPABILITIES
   NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     EnabledFilterTypes*: ULONG
     EnabledQueueTypes*: ULONG
+
   PNDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS* = ptr NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS
   NDIS_RECEIVE_FILTER_FIELD_PARAMETERS_HeaderField* {.pure, union.} = object
     MacHeaderField*: NDIS_MAC_HEADER_FIELD
@@ -2359,18 +2654,21 @@
     IPv4HeaderField*: NDIS_IPV4_HEADER_FIELD
     IPv6HeaderField*: NDIS_IPV6_HEADER_FIELD
     UdpHeaderField*: NDIS_UDP_HEADER_FIELD
+
   NDIS_RECEIVE_FILTER_FIELD_PARAMETERS_FieldValue* {.pure, union.} = object
     FieldByteValue*: UCHAR
     FieldShortValue*: USHORT
     FieldLongValue*: ULONG
     FieldLong64Value*: ULONG64
     FieldByteArrayValue*: array[16, UCHAR]
+
   NDIS_RECEIVE_FILTER_FIELD_PARAMETERS_ResultValue* {.pure, union.} = object
     ResultByteValue*: UCHAR
     ResultShortValue*: USHORT
     ResultLongValue*: ULONG
     ResultLong64Value*: ULONG64
     ResultByteArrayValue*: array[16, UCHAR]
+
   NDIS_RECEIVE_FILTER_FIELD_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
@@ -2379,6 +2677,7 @@
     HeaderField*: NDIS_RECEIVE_FILTER_FIELD_PARAMETERS_HeaderField
     FieldValue*: NDIS_RECEIVE_FILTER_FIELD_PARAMETERS_FieldValue
     ResultValue*: NDIS_RECEIVE_FILTER_FIELD_PARAMETERS_ResultValue
+
   PNDIS_RECEIVE_FILTER_FIELD_PARAMETERS* = ptr NDIS_RECEIVE_FILTER_FIELD_PARAMETERS
   NDIS_RECEIVE_FILTER_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2392,12 +2691,14 @@
     RequestedFilterIdBitCount*: ULONG
     MaxCoalescingDelay*: ULONG
     VPortId*: NDIS_NIC_SWITCH_VPORT_ID
+
   PNDIS_RECEIVE_FILTER_PARAMETERS* = ptr NDIS_RECEIVE_FILTER_PARAMETERS
   NDIS_RECEIVE_FILTER_CLEAR_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     QueueId*: NDIS_RECEIVE_QUEUE_ID
     FilterId*: NDIS_RECEIVE_FILTER_ID
+
   PNDIS_RECEIVE_FILTER_CLEAR_PARAMETERS* = ptr NDIS_RECEIVE_FILTER_CLEAR_PARAMETERS
   NDIS_QUEUE_NAME* = NDIS_IF_COUNTED_STRING
   PNDIS_QUEUE_NAME* = ptr NDIS_IF_COUNTED_STRING
@@ -2439,11 +2740,13 @@
     QueueName*: NDIS_QUEUE_NAME
     PortId*: ULONG
     InterruptCoalescingDomainId*: ULONG
+
   PNDIS_RECEIVE_QUEUE_PARAMETERS* = ptr NDIS_RECEIVE_QUEUE_PARAMETERS
   NDIS_RECEIVE_QUEUE_FREE_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     QueueId*: NDIS_RECEIVE_QUEUE_ID
+
   PNDIS_RECEIVE_QUEUE_FREE_PARAMETERS* = ptr NDIS_RECEIVE_QUEUE_FREE_PARAMETERS
   NDIS_RECEIVE_QUEUE_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2460,18 +2763,21 @@
     QueueName*: NDIS_QUEUE_NAME
     NumFilters*: ULONG
     InterruptCoalescingDomainId*: ULONG
+
   PNDIS_RECEIVE_QUEUE_INFO* = ptr NDIS_RECEIVE_QUEUE_INFO
   NDIS_RECEIVE_QUEUE_INFO_ARRAY* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     FirstElementOffset*: ULONG
     NumElements*: ULONG
     ElementSize*: ULONG
+
   PNDIS_RECEIVE_QUEUE_INFO_ARRAY* = ptr NDIS_RECEIVE_QUEUE_INFO_ARRAY
   NDIS_RECEIVE_FILTER_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     FilterType*: NDIS_RECEIVE_FILTER_TYPE
     FilterId*: NDIS_RECEIVE_FILTER_ID
+
   PNDIS_RECEIVE_FILTER_INFO* = ptr NDIS_RECEIVE_FILTER_INFO
   NDIS_RECEIVE_FILTER_INFO_ARRAY* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2481,26 +2787,32 @@
     ElementSize*: ULONG
     Flags*: ULONG
     VPortId*: NDIS_NIC_SWITCH_VPORT_ID
+
   PNDIS_RECEIVE_FILTER_INFO_ARRAY* = ptr NDIS_RECEIVE_FILTER_INFO_ARRAY
   NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     QueueId*: NDIS_RECEIVE_QUEUE_ID
     CompletionStatus*: NDIS_STATUS
-  PNDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS* = ptr NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS
+
+  PNDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS* =
+    ptr NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS
   NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     FirstElementOffset*: ULONG
     NumElements*: ULONG
     ElementSize*: ULONG
-  PNDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY* = ptr NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY
+
+  PNDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY* =
+    ptr NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY
   NDIS_RECEIVE_SCALE_CAPABILITIES* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     CapabilitiesFlags*: ULONG
     NumberOfInterruptMessages*: ULONG
     NumberOfReceiveQueues*: ULONG
     NumberOfIndirectionTableEntries*: USHORT
+
   PNDIS_RECEIVE_SCALE_CAPABILITIES* = ptr NDIS_RECEIVE_SCALE_CAPABILITIES
   NDIS_RECEIVE_SCALE_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2514,6 +2826,7 @@
     ProcessorMasksOffset*: ULONG
     NumberOfProcessorMasks*: ULONG
     ProcessorMasksEntrySize*: ULONG
+
   PNDIS_RECEIVE_SCALE_PARAMETERS* = ptr NDIS_RECEIVE_SCALE_PARAMETERS
   NDIS_RECEIVE_HASH_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2521,11 +2834,13 @@
     HashInformation*: ULONG
     HashSecretKeySize*: USHORT
     HashSecretKeyOffset*: ULONG
+
   PNDIS_RECEIVE_HASH_PARAMETERS* = ptr NDIS_RECEIVE_HASH_PARAMETERS
   NDIS_RSS_PROCESSOR* {.pure.} = object
     ProcNum*: PROCESSOR_NUMBER
     PreferenceIndex*: USHORT
     Reserved*: USHORT
+
   PNDIS_RSS_PROCESSOR* = ptr NDIS_RSS_PROCESSOR
   NDIS_RSS_PROCESSOR_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2538,6 +2853,7 @@
     RssProcessorEntrySize*: ULONG
     RssMaxProcessor*: PROCESSOR_NUMBER
     RssProfile*: NDIS_RSS_PROFILE
+
   PNDIS_RSS_PROCESSOR_INFO* = ptr NDIS_RSS_PROCESSOR_INFO
   NDIS_PROCESSOR_INFO_EX* {.pure.} = object
     ProcNum*: PROCESSOR_NUMBER
@@ -2546,6 +2862,7 @@
     HyperThreadId*: ULONG
     NodeId*: USHORT
     NodeDistance*: USHORT
+
   PNDIS_PROCESSOR_INFO_EX* = ptr NDIS_PROCESSOR_INFO_EX
   NDIS_SYSTEM_PROCESSOR_INFO_EX* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2558,16 +2875,19 @@
     ProcessorInfoOffset*: ULONG
     NumberOfProcessors*: ULONG
     ProcessorInfoEntrySize*: ULONG
+
   PNDIS_SYSTEM_PROCESSOR_INFO_EX* = ptr NDIS_SYSTEM_PROCESSOR_INFO_EX
   NDIS_HYPERVISOR_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     PartitionType*: NDIS_HYPERVISOR_PARTITION_TYPE
+
   PNDIS_HYPERVISOR_INFO* = ptr NDIS_HYPERVISOR_INFO
   NDIS_WMI_GROUP_AFFINITY* {.pure.} = object
     Mask*: ULONG64
     Group*: USHORT
     Reserved*: array[3, USHORT]
+
   PNDIS_WMI_GROUP_AFFINITY* = ptr NDIS_WMI_GROUP_AFFINITY
   NDIS_WMI_RECEIVE_QUEUE_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2581,6 +2901,7 @@
     LookaheadSize*: ULONG
     VmName*: NDIS_VM_NAME
     QueueName*: NDIS_QUEUE_NAME
+
   PNDIS_WMI_RECEIVE_QUEUE_PARAMETERS* = ptr NDIS_WMI_RECEIVE_QUEUE_PARAMETERS
   NDIS_WMI_RECEIVE_QUEUE_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2595,6 +2916,7 @@
     LookaheadSize*: ULONG
     VmName*: NDIS_VM_NAME
     QueueName*: NDIS_QUEUE_NAME
+
   PNDIS_WMI_RECEIVE_QUEUE_INFO* = ptr NDIS_WMI_RECEIVE_QUEUE_INFO
   NDIS_NDK_PERFORMANCE_COUNTERS* {.pure.} = object
     Connect*: ULONG64
@@ -2627,10 +2949,12 @@
     RDMAOutOctets*: ULONG64
     RDMAInFrames*: ULONG64
     RDMAOutFrames*: ULONG64
+
   PNDIS_NDK_PERFORMANCE_COUNTERS* = ptr NDIS_NDK_PERFORMANCE_COUNTERS
   NDK_VERSION* {.pure.} = object
     Major*: USHORT
     Minor*: USHORT
+
   NDK_ADAPTER_INFO* {.pure.} = object
     Version*: NDK_VERSION
     VendorId*: UINT32
@@ -2653,6 +2977,7 @@
     MaxCallerData*: ULONG
     MaxCalleeData*: ULONG
     AdapterFlags*: ULONG
+
   NDIS_NDK_CAPABILITIES* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
@@ -2666,6 +2991,7 @@
     MaxSrqCount*: ULONG
     MissingCounterMask*: ULONG64
     NdkInfo*: ptr NDK_ADAPTER_INFO
+
   PNDIS_NDK_CAPABILITIES* = ptr NDIS_NDK_CAPABILITIES
   NDK_WMI_ADAPTER_INFO* {.pure.} = object
     Version*: NDK_VERSION
@@ -2689,6 +3015,7 @@
     MaxCallerData*: ULONG
     MaxCalleeData*: ULONG
     AdapterFlags*: ULONG
+
   PNDK_WMI_ADAPTER_INFO* = ptr NDK_WMI_ADAPTER_INFO
   NDIS_WMI_NDK_CAPABILITIES* {.pure.} = object
     MaxQpCount*: ULONG
@@ -2701,6 +3028,7 @@
     MaxSrqCount*: ULONG
     MissingCounterMask*: ULONG64
     NdkInfo*: NDK_WMI_ADAPTER_INFO
+
   PNDIS_WMI_NDK_CAPABILITIES* = ptr NDIS_WMI_NDK_CAPABILITIES
   NDIS_QOS_CAPABILITIES* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2708,6 +3036,7 @@
     MaxNumTrafficClasses*: ULONG
     MaxNumEtsCapableTrafficClasses*: ULONG
     MaxNumPfcEnabledTrafficClasses*: ULONG
+
   PNDIS_QOS_CAPABILITIES* = ptr NDIS_QOS_CAPABILITIES
   NDIS_QOS_CLASSIFICATION_ELEMENT* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2716,7 +3045,9 @@
     ConditionField*: USHORT
     ActionSelector*: USHORT
     ActionField*: USHORT
+
   PNDIS_QOS_CLASSIFICATION_ELEMENT* = ptr NDIS_QOS_CLASSIFICATION_ELEMENT
+
 const
   NDIS_QOS_MAXIMUM_PRIORITIES* = 8
   NDIS_QOS_MAXIMUM_TRAFFIC_CLASSES* = 8
@@ -2732,6 +3063,7 @@
     NumClassificationElements*: ULONG
     ClassificationElementSize*: ULONG
     FirstClassificationElementOffset*: ULONG
+
   PNDIS_QOS_PARAMETERS* = ptr NDIS_QOS_PARAMETERS
   NDIS_NIC_SWITCH_FRIENDLYNAME* = NDIS_IF_COUNTED_STRING
   PNDIS_NIC_SWITCH_FRIENDLYNAME* = ptr NDIS_IF_COUNTED_STRING
@@ -2747,12 +3079,15 @@
     NdisReserved1*: ULONG
     NdisReserved2*: ULONG
     NdisReserved3*: ULONG
+
   PNDIS_NIC_SWITCH_PARAMETERS* = ptr NDIS_NIC_SWITCH_PARAMETERS
   NDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     SwitchId*: NDIS_NIC_SWITCH_ID
-  PNDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS* = ptr NDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS
+
+  PNDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS* =
+    ptr NDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS
   NDIS_NIC_SWITCH_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
@@ -2769,12 +3104,14 @@
     NumActiveNonDefaultVPortMacAddresses*: ULONG
     NumActiveDefaultVPortVlanIds*: ULONG
     NumActiveNonDefaultVPortVlanIds*: ULONG
+
   PNDIS_NIC_SWITCH_INFO* = ptr NDIS_NIC_SWITCH_INFO
   NDIS_NIC_SWITCH_INFO_ARRAY* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     FirstElementOffset*: ULONG
     NumElements*: ULONG
     ElementSize*: ULONG
+
   PNDIS_NIC_SWITCH_INFO_ARRAY* = ptr NDIS_NIC_SWITCH_INFO_ARRAY
   NDIS_NIC_SWITCH_VPORT_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2788,12 +3125,15 @@
     VPortState*: NDIS_NIC_SWITCH_VPORT_STATE
     ProcessorAffinity*: GROUP_AFFINITY
     LookaheadSize*: ULONG
+
   PNDIS_NIC_SWITCH_VPORT_PARAMETERS* = ptr NDIS_NIC_SWITCH_VPORT_PARAMETERS
   NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     VPortId*: NDIS_NIC_SWITCH_VPORT_ID
-  PNDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS* = ptr NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS
+
+  PNDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS* =
+    ptr NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS
   NDIS_NIC_SWITCH_VPORT_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     VPortId*: NDIS_NIC_SWITCH_VPORT_ID
@@ -2807,6 +3147,7 @@
     ProcessorAffinity*: GROUP_AFFINITY
     LookaheadSize*: ULONG
     NumFilters*: ULONG
+
   PNDIS_NIC_SWITCH_VPORT_INFO* = ptr NDIS_NIC_SWITCH_VPORT_INFO
   NDIS_NIC_SWITCH_VPORT_INFO_ARRAY* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2816,9 +3157,10 @@
     FirstElementOffset*: ULONG
     NumElements*: ULONG
     ElementSize*: ULONG
+
   PNDIS_NIC_SWITCH_VPORT_INFO_ARRAY* = ptr NDIS_NIC_SWITCH_VPORT_INFO_ARRAY
-const
-  NDIS_MAX_PHYS_ADDRESS_LENGTH* = IF_MAX_PHYS_ADDRESS_LENGTH
+
+const NDIS_MAX_PHYS_ADDRESS_LENGTH* = IF_MAX_PHYS_ADDRESS_LENGTH
 type
   NDIS_NIC_SWITCH_VF_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2832,11 +3174,13 @@
     CurrentMacAddress*: array[NDIS_MAX_PHYS_ADDRESS_LENGTH, UCHAR]
     VFId*: NDIS_SRIOV_FUNCTION_ID
     RequestorId*: NDIS_VF_RID
+
   PNDIS_NIC_SWITCH_VF_PARAMETERS* = ptr NDIS_NIC_SWITCH_VF_PARAMETERS
   NDIS_NIC_SWITCH_FREE_VF_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     VFId*: NDIS_SRIOV_FUNCTION_ID
+
   PNDIS_NIC_SWITCH_FREE_VF_PARAMETERS* = ptr NDIS_NIC_SWITCH_FREE_VF_PARAMETERS
   NDIS_NIC_SWITCH_VF_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2850,6 +3194,7 @@
     CurrentMacAddress*: array[NDIS_MAX_PHYS_ADDRESS_LENGTH, UCHAR]
     VFId*: NDIS_SRIOV_FUNCTION_ID
     RequestorId*: NDIS_VF_RID
+
   PNDIS_NIC_SWITCH_VF_INFO* = ptr NDIS_NIC_SWITCH_VF_INFO
   NDIS_NIC_SWITCH_VF_INFO_ARRAY* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2858,11 +3203,13 @@
     FirstElementOffset*: ULONG
     NumElements*: ULONG
     ElementSize*: ULONG
+
   PNDIS_NIC_SWITCH_VF_INFO_ARRAY* = ptr NDIS_NIC_SWITCH_VF_INFO_ARRAY
   NDIS_SRIOV_CAPABILITIES* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     SriovCapabilities*: ULONG
+
   PNDIS_SRIOV_CAPABILITIES* = ptr NDIS_SRIOV_CAPABILITIES
   NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2870,52 +3217,66 @@
     Offset*: ULONG
     Length*: ULONG
     BufferOffset*: ULONG
-  PNDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS* = ptr NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS
+
+  PNDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS* =
+    ptr NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS
   NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     VFId*: NDIS_SRIOV_FUNCTION_ID
     Offset*: ULONG
     Length*: ULONG
     BufferOffset*: ULONG
-  PNDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS* = ptr NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS
+
+  PNDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS* =
+    ptr NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS
   NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     VFId*: NDIS_SRIOV_FUNCTION_ID
     BlockId*: ULONG
     Length*: ULONG
     BufferOffset*: ULONG
-  PNDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS* = ptr NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS
+
+  PNDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS* =
+    ptr NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS
   NDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     VFId*: NDIS_SRIOV_FUNCTION_ID
     BlockId*: ULONG
     Length*: ULONG
     BufferOffset*: ULONG
-  PNDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS* = ptr NDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS
+
+  PNDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS* =
+    ptr NDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS
   NDIS_SRIOV_RESET_VF_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     VFId*: NDIS_SRIOV_FUNCTION_ID
+
   PNDIS_SRIOV_RESET_VF_PARAMETERS* = ptr NDIS_SRIOV_RESET_VF_PARAMETERS
   NDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     VFId*: NDIS_SRIOV_FUNCTION_ID
     PowerState*: NDIS_DEVICE_POWER_STATE
     WakeEnable*: BOOLEAN
-  PNDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS* = ptr NDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS
+
+  PNDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS* =
+    ptr NDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS
   NDIS_SRIOV_CONFIG_STATE_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     BlockId*: ULONG
     Length*: ULONG
+
   PNDIS_SRIOV_CONFIG_STATE_PARAMETERS* = ptr NDIS_SRIOV_CONFIG_STATE_PARAMETERS
   NDIS_SRIOV_VF_VENDOR_DEVICE_ID_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     VFId*: NDIS_SRIOV_FUNCTION_ID
     VendorId*: USHORT
     DeviceId*: USHORT
+
   PNDIS_SRIOV_VF_VENDOR_DEVICE_ID_INFO* = ptr NDIS_SRIOV_VF_VENDOR_DEVICE_ID_INFO
   NDIS_SRIOV_PROBED_BARS_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     BaseRegisterValuesOffset*: ULONG
+
   PNDIS_SRIOV_PROBED_BARS_INFO* = ptr NDIS_SRIOV_PROBED_BARS_INFO
   NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -2924,25 +3285,32 @@
     SourceVPortId*: NDIS_NIC_SWITCH_VPORT_ID
     DestQueueId*: NDIS_RECEIVE_QUEUE_ID
     DestVPortId*: NDIS_NIC_SWITCH_VPORT_ID
-  PNDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS* = ptr NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS
+
+  PNDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS* =
+    ptr NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS
   NDIS_SRIOV_BAR_RESOURCES_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     VFId*: NDIS_SRIOV_FUNCTION_ID
     BarIndex*: USHORT
     BarResourcesOffset*: ULONG
+
   PNDIS_SRIOV_BAR_RESOURCES_INFO* = ptr NDIS_SRIOV_BAR_RESOURCES_INFO
   NDIS_SRIOV_PF_LUID_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Luid*: LUID
+
   PNDIS_SRIOV_PF_LUID_INFO* = ptr NDIS_SRIOV_PF_LUID_INFO
   NDIS_SRIOV_VF_SERIAL_NUMBER_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     SerialNumber*: ULONG
+
   PNDIS_SRIOV_VF_SERIAL_NUMBER_INFO* = ptr NDIS_SRIOV_VF_SERIAL_NUMBER_INFO
   NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     BlockMask*: ULONG64
-  PNDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO* = ptr NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO
+
+  PNDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO* =
+    ptr NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO
   NDIS_SWITCH_OBJECT_INSTANCE_ID* = GUID
   PNDIS_SWITCH_OBJECT_INSTANCE_ID* = ptr GUID
   NDIS_SWITCH_OBJECT_ID* = GUID
@@ -2956,33 +3324,40 @@
     AllowIeeePriorityTag*: BOOLEAN
     VirtualSubnetId*: UINT32
     AllowTeaming*: BOOLEAN
+
   PNDIS_SWITCH_PORT_PROPERTY_SECURITY* = ptr NDIS_SWITCH_PORT_PROPERTY_SECURITY
   NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_VlanProperties* {.pure.} = object
     AccessVlanId*: UINT16
     NativeVlanId*: UINT16
     PruneVlanIdArray*: array[64, UINT64]
     TrunkVlanIdArray*: array[64, UINT64]
+
   NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_PvlanProperties_UNION1* {.pure, union.} = object
     SecondaryVlanId*: UINT16
     SecondaryVlanIdArray*: array[64, UINT64]
+
   NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_PvlanProperties* {.pure.} = object
     PvlanMode*: NDIS_SWITCH_PORT_PVLAN_MODE
     PrimaryVlanId*: UINT16
     union1*: NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_PvlanProperties_UNION1
+
   NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1* {.pure, union.} = object
     VlanProperties*: NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_VlanProperties
     PvlanProperties*: NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_PvlanProperties
+
   NDIS_SWITCH_PORT_PROPERTY_VLAN* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     OperationMode*: NDIS_SWITCH_PORT_VLAN_MODE
     union1*: NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1
+
   PNDIS_SWITCH_PORT_PROPERTY_VLAN* = ptr NDIS_SWITCH_PORT_PROPERTY_VLAN
   NDIS_SWITCH_PORT_PROPERTY_PROFILE_PciLocation* {.pure.} = object
-    PciSegmentNumber* {.bitsize:16.}: UINT32
-    PciBusNumber* {.bitsize:8.}: UINT32
-    PciDeviceNumber* {.bitsize:5.}: UINT32
-    PciFunctionNumber* {.bitsize:3.}: UINT32
+    PciSegmentNumber* {.bitsize: 16.}: UINT32
+    PciBusNumber* {.bitsize: 8.}: UINT32
+    PciDeviceNumber* {.bitsize: 5.}: UINT32
+    PciFunctionNumber* {.bitsize: 3.}: UINT32
+
   NDIS_SWITCH_PORT_PROPERTY_PROFILE* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
@@ -2995,12 +3370,14 @@
     PciLocation*: NDIS_SWITCH_PORT_PROPERTY_PROFILE_PciLocation
     CdnLabelId*: UINT32
     CdnLabel*: NDIS_SWITCH_PORT_PROPERTY_PROFILE_CDN_LABEL
+
   PNDIS_SWITCH_PORT_PROPERTY_PROFILE* = ptr NDIS_SWITCH_PORT_PROPERTY_PROFILE
   NDIS_SWITCH_PORT_PROPERTY_CUSTOM* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     PropertyBufferLength*: ULONG
     PropertyBufferOffset*: ULONG
+
   PNDIS_SWITCH_PORT_PROPERTY_CUSTOM* = ptr NDIS_SWITCH_PORT_PROPERTY_CUSTOM
   NDIS_SWITCH_PORT_PROPERTY_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3014,6 +3391,7 @@
     PropertyBufferLength*: ULONG
     PropertyBufferOffset*: ULONG
     Reserved*: ULONG
+
   PNDIS_SWITCH_PORT_PROPERTY_PARAMETERS* = ptr NDIS_SWITCH_PORT_PROPERTY_PARAMETERS
   NDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3022,7 +3400,9 @@
     PropertyType*: NDIS_SWITCH_PORT_PROPERTY_TYPE
     PropertyId*: NDIS_SWITCH_OBJECT_ID
     PropertyInstanceId*: NDIS_SWITCH_OBJECT_INSTANCE_ID
-  PNDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS* = ptr NDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS
+
+  PNDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS* =
+    ptr NDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS
   NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
@@ -3033,7 +3413,9 @@
     FirstPropertyOffset*: ULONG
     NumProperties*: ULONG
     Reserved*: USHORT
-  PNDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS* = ptr NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS
+
+  PNDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS* =
+    ptr NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS
   NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
@@ -3042,6 +3424,7 @@
     QwordAlignedPropertyBufferLength*: ULONG
     PropertyBufferLength*: ULONG
     PropertyBufferOffset*: ULONG
+
   PNDIS_SWITCH_PORT_PROPERTY_ENUM_INFO* = ptr NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO
   NDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3055,18 +3438,22 @@
     FeatureStatusBufferLength*: ULONG
     FeatureStatusBufferOffset*: ULONG
     Reserved*: ULONG
-  PNDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS* = ptr NDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS
+
+  PNDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS* =
+    ptr NDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS
   NDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     FeatureStatusBufferLength*: ULONG
     FeatureStatusBufferOffset*: ULONG
+
   PNDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM* = ptr NDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM
   NDIS_SWITCH_PROPERTY_CUSTOM* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     PropertyBufferLength*: ULONG
     PropertyBufferOffset*: ULONG
+
   PNDIS_SWITCH_PROPERTY_CUSTOM* = ptr NDIS_SWITCH_PROPERTY_CUSTOM
   NDIS_SWITCH_PROPERTY_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3078,6 +3465,7 @@
     PropertyInstanceId*: NDIS_SWITCH_OBJECT_INSTANCE_ID
     PropertyBufferLength*: ULONG
     PropertyBufferOffset*: ULONG
+
   PNDIS_SWITCH_PROPERTY_PARAMETERS* = ptr NDIS_SWITCH_PROPERTY_PARAMETERS
   NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3085,6 +3473,7 @@
     PropertyType*: NDIS_SWITCH_PROPERTY_TYPE
     PropertyId*: NDIS_SWITCH_OBJECT_ID
     PropertyInstanceId*: NDIS_SWITCH_OBJECT_INSTANCE_ID
+
   PNDIS_SWITCH_PROPERTY_DELETE_PARAMETERS* = ptr NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS
   NDIS_SWITCH_PROPERTY_ENUM_INFO* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3094,6 +3483,7 @@
     QwordAlignedPropertyBufferLength*: ULONG
     PropertyBufferLength*: ULONG
     PropertyBufferOffset*: ULONG
+
   PNDIS_SWITCH_PROPERTY_ENUM_INFO* = ptr NDIS_SWITCH_PROPERTY_ENUM_INFO
   NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3103,6 +3493,7 @@
     SerializationVersion*: NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION
     FirstPropertyOffset*: ULONG
     NumProperties*: ULONG
+
   PNDIS_SWITCH_PROPERTY_ENUM_PARAMETERS* = ptr NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS
   NDIS_SWITCH_FEATURE_STATUS_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3114,12 +3505,14 @@
     SerializationVersion*: NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION
     FeatureStatusBufferOffset*: ULONG
     FeatureStatusBufferLength*: ULONG
+
   PNDIS_SWITCH_FEATURE_STATUS_PARAMETERS* = ptr NDIS_SWITCH_FEATURE_STATUS_PARAMETERS
   NDIS_SWITCH_FEATURE_STATUS_CUSTOM* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     FeatureStatusCustomBufferLength*: ULONG
     FeatureStatusCustomBufferOffset*: ULONG
+
   PNDIS_SWITCH_FEATURE_STATUS_CUSTOM* = ptr NDIS_SWITCH_FEATURE_STATUS_CUSTOM
   NDIS_SWITCH_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3128,6 +3521,7 @@
     SwitchFriendlyName*: NDIS_SWITCH_FRIENDLYNAME
     NumSwitchPorts*: UINT32
     IsActive*: BOOLEAN
+
   PNDIS_SWITCH_PARAMETERS* = ptr NDIS_SWITCH_PARAMETERS
   NDIS_SWITCH_PORT_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3138,6 +3532,7 @@
     PortType*: NDIS_SWITCH_PORT_TYPE
     IsValidationPort*: BOOLEAN
     PortState*: NDIS_SWITCH_PORT_STATE
+
   PNDIS_SWITCH_PORT_PARAMETERS* = ptr NDIS_SWITCH_PORT_PARAMETERS
   NDIS_SWITCH_PORT_ARRAY* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3145,6 +3540,7 @@
     FirstElementOffset*: USHORT
     NumElements*: ULONG
     ElementSize*: ULONG
+
   PNDIS_SWITCH_PORT_ARRAY* = ptr NDIS_SWITCH_PORT_ARRAY
   NDIS_SWITCH_NIC_PARAMETERS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3164,6 +3560,7 @@
     VMMacAddress*: array[NDIS_MAX_PHYS_ADDRESS_LENGTH, UCHAR]
     CurrentMacAddress*: array[NDIS_MAX_PHYS_ADDRESS_LENGTH, UCHAR]
     VFAssigned*: BOOLEAN
+
   PNDIS_SWITCH_NIC_PARAMETERS* = ptr NDIS_SWITCH_NIC_PARAMETERS
   NDIS_SWITCH_NIC_ARRAY* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3171,6 +3568,7 @@
     FirstElementOffset*: USHORT
     NumElements*: ULONG
     ElementSize*: ULONG
+
   PNDIS_SWITCH_NIC_ARRAY* = ptr NDIS_SWITCH_NIC_ARRAY
   NDIS_OID_REQUEST* {.pure.} = object
   PNDIS_OID_REQUEST* = ptr NDIS_OID_REQUEST
@@ -3182,6 +3580,7 @@
     DestinationPortId*: NDIS_SWITCH_PORT_ID
     DestinationNicIndex*: NDIS_SWITCH_NIC_INDEX
     OidRequest*: PNDIS_OID_REQUEST
+
   PNDIS_SWITCH_NIC_OID_REQUEST* = ptr NDIS_SWITCH_NIC_OID_REQUEST
   NDIS_SWITCH_NIC_SAVE_STATE* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3193,6 +3592,7 @@
     FeatureClassId*: GUID
     SaveDataSize*: USHORT
     SaveDataOffset*: USHORT
+
   PNDIS_SWITCH_NIC_SAVE_STATE* = ptr NDIS_SWITCH_NIC_SAVE_STATE
   NDIS_PORT_STATE* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3205,6 +3605,7 @@
     SendAuthorizationState*: NDIS_PORT_AUTHORIZATION_STATE
     RcvAuthorizationState*: NDIS_PORT_AUTHORIZATION_STATE
     Flags*: ULONG
+
   PNDIS_PORT_STATE* = ptr NDIS_PORT_STATE
   NDIS_PORT_CHARACTERISTICS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3219,6 +3620,7 @@
     RcvControlState*: NDIS_PORT_CONTROL_STATE
     SendAuthorizationState*: NDIS_PORT_AUTHORIZATION_STATE
     RcvAuthorizationState*: NDIS_PORT_AUTHORIZATION_STATE
+
   PNDIS_PORT_CHARACTERISTICS* = ptr NDIS_PORT_CHARACTERISTICS
   NDIS_PORT* {.pure.} = object
     Next*: PNDIS_PORT
@@ -3226,6 +3628,7 @@
     MiniportReserved*: PVOID
     ProtocolReserved*: PVOID
     PortCharacteristics*: NDIS_PORT_CHARACTERISTICS
+
   PNDIS_PORT* = ptr NDIS_PORT
   NDIS_PORT_ARRAY* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
@@ -3233,16 +3636,18 @@
     OffsetFirstPort*: ULONG
     ElementSize*: ULONG
     Ports*: array[1, NDIS_PORT_CHARACTERISTICS]
+
   PNDIS_PORT_ARRAY* = ptr NDIS_PORT_ARRAY
   MIB_IF_ROW2_InterfaceAndOperStatusFlags* {.pure.} = object
-    HardwareInterface* {.bitsize:1.}: BOOLEAN
-    FilterInterface* {.bitsize:1.}: BOOLEAN
-    ConnectorPresent* {.bitsize:1.}: BOOLEAN
-    NotAuthenticated* {.bitsize:1.}: BOOLEAN
-    NotMediaConnected* {.bitsize:1.}: BOOLEAN
-    Paused* {.bitsize:1.}: BOOLEAN
-    LowPower* {.bitsize:1.}: BOOLEAN
-    EndPointInterface* {.bitsize:1.}: BOOLEAN
+    HardwareInterface* {.bitsize: 1.}: BOOLEAN
+    FilterInterface* {.bitsize: 1.}: BOOLEAN
+    ConnectorPresent* {.bitsize: 1.}: BOOLEAN
+    NotAuthenticated* {.bitsize: 1.}: BOOLEAN
+    NotMediaConnected* {.bitsize: 1.}: BOOLEAN
+    Paused* {.bitsize: 1.}: BOOLEAN
+    LowPower* {.bitsize: 1.}: BOOLEAN
+    EndPointInterface* {.bitsize: 1.}: BOOLEAN
+
   MIB_IF_ROW2* {.pure.} = object
     InterfaceLuid*: NET_LUID
     InterfaceIndex*: NET_IFINDEX
@@ -3285,10 +3690,12 @@
     OutMulticastOctets*: ULONG64
     OutBroadcastOctets*: ULONG64
     OutQLen*: ULONG64
+
   PMIB_IF_ROW2* = ptr MIB_IF_ROW2
   MIB_IF_TABLE2* {.pure.} = object
     NumEntries*: ULONG
     Table*: array[ANY_SIZE, MIB_IF_ROW2]
+
   PMIB_IF_TABLE2* = ptr MIB_IF_TABLE2
   MIB_IPINTERFACE_ROW* {.pure.} = object
     Family*: ADDRESS_FAMILY
@@ -3326,31 +3733,39 @@
     TransmitOffload*: NL_INTERFACE_OFFLOAD_ROD
     ReceiveOffload*: NL_INTERFACE_OFFLOAD_ROD
     DisableDefaultRoutes*: BOOLEAN
+
   PMIB_IPINTERFACE_ROW* = ptr MIB_IPINTERFACE_ROW
   MIB_IPINTERFACE_TABLE* {.pure.} = object
     NumEntries*: ULONG
     Table*: array[ANY_SIZE, MIB_IPINTERFACE_ROW]
+
   PMIB_IPINTERFACE_TABLE* = ptr MIB_IPINTERFACE_TABLE
   MIB_IFSTACK_ROW* {.pure.} = object
     HigherLayerInterfaceIndex*: NET_IFINDEX
     LowerLayerInterfaceIndex*: NET_IFINDEX
+
   PMIB_IFSTACK_ROW* = ptr MIB_IFSTACK_ROW
   MIB_INVERTEDIFSTACK_ROW* {.pure.} = object
     LowerLayerInterfaceIndex*: NET_IFINDEX
     HigherLayerInterfaceIndex*: NET_IFINDEX
+
   PMIB_INVERTEDIFSTACK_ROW* = ptr MIB_INVERTEDIFSTACK_ROW
   MIB_IFSTACK_TABLE* {.pure.} = object
     NumEntries*: ULONG
     Table*: array[ANY_SIZE, MIB_IFSTACK_ROW]
+
   PMIB_IFSTACK_TABLE* = ptr MIB_IFSTACK_TABLE
   MIB_INVERTEDIFSTACK_TABLE* {.pure.} = object
     NumEntries*: ULONG
     Table*: array[ANY_SIZE, MIB_INVERTEDIFSTACK_ROW]
+
   PMIB_INVERTEDIFSTACK_TABLE* = ptr MIB_INVERTEDIFSTACK_TABLE
   MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES* {.pure.} = object
     InboundBandwidthInformation*: NL_BANDWIDTH_INFORMATION
     OutboundBandwidthInformation*: NL_BANDWIDTH_INFORMATION
-  PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES* = ptr MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES
+
+  PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES* =
+    ptr MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES
   MIB_UNICASTIPADDRESS_ROW* {.pure.} = object
     Address*: SOCKADDR_INET
     InterfaceLuid*: NET_LUID
@@ -3364,34 +3779,41 @@
     DadState*: NL_DAD_STATE
     ScopeId*: SCOPE_ID
     CreationTimeStamp*: LARGE_INTEGER
+
   PMIB_UNICASTIPADDRESS_ROW* = ptr MIB_UNICASTIPADDRESS_ROW
   MIB_UNICASTIPADDRESS_TABLE* {.pure.} = object
     NumEntries*: ULONG
     Table*: array[ANY_SIZE, MIB_UNICASTIPADDRESS_ROW]
+
   PMIB_UNICASTIPADDRESS_TABLE* = ptr MIB_UNICASTIPADDRESS_TABLE
   MIB_ANYCASTIPADDRESS_ROW* {.pure.} = object
     Address*: SOCKADDR_INET
     InterfaceLuid*: NET_LUID
     InterfaceIndex*: NET_IFINDEX
     ScopeId*: SCOPE_ID
+
   PMIB_ANYCASTIPADDRESS_ROW* = ptr MIB_ANYCASTIPADDRESS_ROW
   MIB_ANYCASTIPADDRESS_TABLE* {.pure.} = object
     NumEntries*: ULONG
     Table*: array[ANY_SIZE, MIB_ANYCASTIPADDRESS_ROW]
+
   PMIB_ANYCASTIPADDRESS_TABLE* = ptr MIB_ANYCASTIPADDRESS_TABLE
   MIB_MULTICASTIPADDRESS_ROW* {.pure.} = object
     Address*: SOCKADDR_INET
     InterfaceIndex*: NET_IFINDEX
     InterfaceLuid*: NET_LUID
     ScopeId*: SCOPE_ID
+
   PMIB_MULTICASTIPADDRESS_ROW* = ptr MIB_MULTICASTIPADDRESS_ROW
   MIB_MULTICASTIPADDRESS_TABLE* {.pure.} = object
     NumEntries*: ULONG
     Table*: array[ANY_SIZE, MIB_MULTICASTIPADDRESS_ROW]
+
   PMIB_MULTICASTIPADDRESS_TABLE* = ptr MIB_MULTICASTIPADDRESS_TABLE
   IP_ADDRESS_PREFIX* {.pure.} = object
     Prefix*: SOCKADDR_INET
     PrefixLength*: UINT8
+
   PIP_ADDRESS_PREFIX* = ptr IP_ADDRESS_PREFIX
   MIB_IPFORWARD_ROW2* {.pure.} = object
     InterfaceLuid*: NET_LUID
@@ -3409,14 +3831,17 @@
     Immortal*: BOOLEAN
     Age*: ULONG
     Origin*: NL_ROUTE_ORIGIN
+
   PMIB_IPFORWARD_ROW2* = ptr MIB_IPFORWARD_ROW2
   MIB_IPFORWARD_TABLE2* {.pure.} = object
     NumEntries*: ULONG
     Table*: array[ANY_SIZE, MIB_IPFORWARD_ROW2]
+
   PMIB_IPFORWARD_TABLE2* = ptr MIB_IPFORWARD_TABLE2
   MIB_IPPATH_ROW_UNION1* {.pure, union.} = object
     LastReachable*: ULONG
     LastUnreachable*: ULONG
+
   MIB_IPPATH_ROW* {.pure.} = object
     Source*: SOCKADDR_INET
     Destination*: SOCKADDR_INET
@@ -3430,20 +3855,25 @@
     IsReachable*: BOOLEAN
     LinkTransmitSpeed*: ULONG64
     LinkReceiveSpeed*: ULONG64
+
   PMIB_IPPATH_ROW* = ptr MIB_IPPATH_ROW
   MIB_IPPATH_TABLE* {.pure.} = object
     NumEntries*: ULONG
     Table*: array[ANY_SIZE, MIB_IPPATH_ROW]
+
   PMIB_IPPATH_TABLE* = ptr MIB_IPPATH_TABLE
   MIB_IPNET_ROW2_UNION1_STRUCT1* {.pure.} = object
-    IsRouter* {.bitsize:1.}: BOOLEAN
-    IsUnreachable* {.bitsize:1.}: BOOLEAN
+    IsRouter* {.bitsize: 1.}: BOOLEAN
+    IsUnreachable* {.bitsize: 1.}: BOOLEAN
+
   MIB_IPNET_ROW2_UNION1* {.pure, union.} = object
     struct1*: MIB_IPNET_ROW2_UNION1_STRUCT1
     Flags*: UCHAR
+
   MIB_IPNET_ROW2_ReachabilityTime* {.pure, union.} = object
     LastReachable*: ULONG
     LastUnreachable*: ULONG
+
   MIB_IPNET_ROW2* {.pure.} = object
     Address*: SOCKADDR_INET
     InterfaceIndex*: NET_IFINDEX
@@ -3453,13 +3883,16 @@
     State*: NL_NEIGHBOR_STATE
     union1*: MIB_IPNET_ROW2_UNION1
     ReachabilityTime*: MIB_IPNET_ROW2_ReachabilityTime
+
   PMIB_IPNET_ROW2* = ptr MIB_IPNET_ROW2
   MIB_IPNET_TABLE2* {.pure.} = object
     NumEntries*: ULONG
     Table*: array[ANY_SIZE, MIB_IPNET_ROW2]
+
   PMIB_IPNET_TABLE2* = ptr MIB_IPNET_TABLE2
   IPv6Addr* = IN6_ADDR
   NETIO_STATUS* = NTSTATUS
+
 const
   nldsInvalid* = 0
   nldsTentative* = 1
@@ -3756,45 +4189,45 @@
   tcpConnectionOffloadStateMax* = 4
   IPRTRMGR_PID* = 10000
   IF_NUMBER* = 0
-  IF_TABLE* = IF_NUMBER+1
-  IF_ROW* = IF_TABLE+1
-  IP_STATS* = IF_ROW+1
-  IP_ADDRTABLE* = IP_STATS+1
-  IP_ADDRROW* = IP_ADDRTABLE+1
-  IP_FORWARDNUMBER* = IP_ADDRROW+1
-  IP_FORWARDTABLE* = IP_FORWARDNUMBER+1
-  IP_FORWARDROW* = IP_FORWARDTABLE+1
-  IP_NETTABLE* = IP_FORWARDROW+1
-  IP_NETROW* = IP_NETTABLE+1
-  ICMP_STATS* = IP_NETROW+1
-  TCP_STATS* = ICMP_STATS+1
-  TCP_TABLE* = TCP_STATS+1
-  TCP_ROW* = TCP_TABLE+1
-  UDP_STATS* = TCP_ROW+1
-  UDP_TABLE* = UDP_STATS+1
-  UDP_ROW* = UDP_TABLE+1
-  MCAST_MFE* = UDP_ROW+1
-  MCAST_MFE_STATS* = MCAST_MFE+1
-  BEST_IF* = MCAST_MFE_STATS+1
-  BEST_ROUTE* = BEST_IF+1
-  PROXY_ARP* = BEST_ROUTE+1
-  MCAST_IF_ENTRY* = PROXY_ARP+1
-  MCAST_GLOBAL* = MCAST_IF_ENTRY+1
-  IF_STATUS* = MCAST_GLOBAL+1
-  MCAST_BOUNDARY* = IF_STATUS+1
-  MCAST_SCOPE* = MCAST_BOUNDARY+1
-  DEST_MATCHING* = MCAST_SCOPE+1
-  DEST_LONGER* = DEST_MATCHING+1
-  DEST_SHORTER* = DEST_LONGER+1
-  ROUTE_MATCHING* = DEST_SHORTER+1
-  ROUTE_LONGER* = ROUTE_MATCHING+1
-  ROUTE_SHORTER* = ROUTE_LONGER+1
-  ROUTE_STATE* = ROUTE_SHORTER+1
-  MCAST_MFE_STATS_EX* = ROUTE_STATE+1
-  IP6_STATS* = MCAST_MFE_STATS_EX+1
-  UDP6_STATS* = IP6_STATS+1
-  TCP6_STATS* = UDP6_STATS+1
-  NUMBER_OF_EXPORTED_VARIABLES* = TCP6_STATS+1
+  IF_TABLE* = IF_NUMBER + 1
+  IF_ROW* = IF_TABLE + 1
+  IP_STATS* = IF_ROW + 1
+  IP_ADDRTABLE* = IP_STATS + 1
+  IP_ADDRROW* = IP_ADDRTABLE + 1
+  IP_FORWARDNUMBER* = IP_ADDRROW + 1
+  IP_FORWARDTABLE* = IP_FORWARDNUMBER + 1
+  IP_FORWARDROW* = IP_FORWARDTABLE + 1
+  IP_NETTABLE* = IP_FORWARDROW + 1
+  IP_NETROW* = IP_NETTABLE + 1
+  ICMP_STATS* = IP_NETROW + 1
+  TCP_STATS* = ICMP_STATS + 1
+  TCP_TABLE* = TCP_STATS + 1
+  TCP_ROW* = TCP_TABLE + 1
+  UDP_STATS* = TCP_ROW + 1
+  UDP_TABLE* = UDP_STATS + 1
+  UDP_ROW* = UDP_TABLE + 1
+  MCAST_MFE* = UDP_ROW + 1
+  MCAST_MFE_STATS* = MCAST_MFE + 1
+  BEST_IF* = MCAST_MFE_STATS + 1
+  BEST_ROUTE* = BEST_IF + 1
+  PROXY_ARP* = BEST_ROUTE + 1
+  MCAST_IF_ENTRY* = PROXY_ARP + 1
+  MCAST_GLOBAL* = MCAST_IF_ENTRY + 1
+  IF_STATUS* = MCAST_GLOBAL + 1
+  MCAST_BOUNDARY* = IF_STATUS + 1
+  MCAST_SCOPE* = MCAST_BOUNDARY + 1
+  DEST_MATCHING* = MCAST_SCOPE + 1
+  DEST_LONGER* = DEST_MATCHING + 1
+  DEST_SHORTER* = DEST_LONGER + 1
+  ROUTE_MATCHING* = DEST_SHORTER + 1
+  ROUTE_LONGER* = ROUTE_MATCHING + 1
+  ROUTE_SHORTER* = ROUTE_LONGER + 1
+  ROUTE_STATE* = ROUTE_SHORTER + 1
+  MCAST_MFE_STATS_EX* = ROUTE_STATE + 1
+  IP6_STATS* = MCAST_MFE_STATS_EX + 1
+  UDP6_STATS* = IP6_STATS + 1
+  TCP6_STATS* = UDP6_STATS + 1
+  NUMBER_OF_EXPORTED_VARIABLES* = TCP6_STATS + 1
   ICMP6_DST_UNREACH* = 1
   ICMP6_PACKET_TOO_BIG* = 2
   ICMP6_TIME_EXCEEDED* = 3
@@ -3892,56 +4325,56 @@
   IP_EXPORT_INCLUDED* = 1
   IP_STATUS_BASE* = 11000
   IP_SUCCESS* = 0
-  IP_BUF_TOO_SMALL* = IP_STATUS_BASE+1
-  IP_DEST_NET_UNREACHABLE* = IP_STATUS_BASE+2
-  IP_DEST_HOST_UNREACHABLE* = IP_STATUS_BASE+3
-  IP_DEST_PROT_UNREACHABLE* = IP_STATUS_BASE+4
-  IP_DEST_PORT_UNREACHABLE* = IP_STATUS_BASE+5
-  IP_NO_RESOURCES* = IP_STATUS_BASE+6
-  IP_BAD_OPTION* = IP_STATUS_BASE+7
-  IP_HW_ERROR* = IP_STATUS_BASE+8
-  IP_PACKET_TOO_BIG* = IP_STATUS_BASE+9
-  IP_REQ_TIMED_OUT* = IP_STATUS_BASE+10
-  IP_BAD_REQ* = IP_STATUS_BASE+11
-  IP_BAD_ROUTE* = IP_STATUS_BASE+12
-  IP_TTL_EXPIRED_TRANSIT* = IP_STATUS_BASE+13
-  IP_TTL_EXPIRED_REASSEM* = IP_STATUS_BASE+14
-  IP_PARAM_PROBLEM* = IP_STATUS_BASE+15
-  IP_SOURCE_QUENCH* = IP_STATUS_BASE+16
-  IP_OPTION_TOO_BIG* = IP_STATUS_BASE+17
-  IP_BAD_DESTINATION* = IP_STATUS_BASE+18
-  IP_DEST_NO_ROUTE* = IP_STATUS_BASE+2
-  IP_DEST_ADDR_UNREACHABLE* = IP_STATUS_BASE+3
-  IP_DEST_PROHIBITED* = IP_STATUS_BASE+4
-  IP_HOP_LIMIT_EXCEEDED* = IP_STATUS_BASE+13
-  IP_REASSEMBLY_TIME_EXCEEDED* = IP_STATUS_BASE+14
-  IP_PARAMETER_PROBLEM* = IP_STATUS_BASE+15
-  IP_DEST_UNREACHABLE* = IP_STATUS_BASE+40
-  IP_TIME_EXCEEDED* = IP_STATUS_BASE+41
-  IP_BAD_HEADER* = IP_STATUS_BASE+42
-  IP_UNRECOGNIZED_NEXT_HEADER* = IP_STATUS_BASE+43
-  IP_ICMP_ERROR* = IP_STATUS_BASE+44
-  IP_DEST_SCOPE_MISMATCH* = IP_STATUS_BASE+45
-  IP_ADDR_DELETED* = IP_STATUS_BASE+19
-  IP_SPEC_MTU_CHANGE* = IP_STATUS_BASE+20
-  IP_MTU_CHANGE* = IP_STATUS_BASE+21
-  IP_UNLOAD* = IP_STATUS_BASE+22
-  IP_ADDR_ADDED* = IP_STATUS_BASE+23
-  IP_MEDIA_CONNECT* = IP_STATUS_BASE+24
-  IP_MEDIA_DISCONNECT* = IP_STATUS_BASE+25
-  IP_BIND_ADAPTER* = IP_STATUS_BASE+26
-  IP_UNBIND_ADAPTER* = IP_STATUS_BASE+27
-  IP_DEVICE_DOES_NOT_EXIST* = IP_STATUS_BASE+28
-  IP_DUPLICATE_ADDRESS* = IP_STATUS_BASE+29
-  IP_INTERFACE_METRIC_CHANGE* = IP_STATUS_BASE+30
-  IP_RECONFIG_SECFLTR* = IP_STATUS_BASE+31
-  IP_NEGOTIATING_IPSEC* = IP_STATUS_BASE+32
-  IP_INTERFACE_WOL_CAPABILITY_CHANGE* = IP_STATUS_BASE+33
-  IP_DUPLICATE_IPADD* = IP_STATUS_BASE+34
-  IP_NO_FURTHER_SENDS* = IP_STATUS_BASE+35
-  IP_GENERAL_FAILURE* = IP_STATUS_BASE+50
+  IP_BUF_TOO_SMALL* = IP_STATUS_BASE + 1
+  IP_DEST_NET_UNREACHABLE* = IP_STATUS_BASE + 2
+  IP_DEST_HOST_UNREACHABLE* = IP_STATUS_BASE + 3
+  IP_DEST_PROT_UNREACHABLE* = IP_STATUS_BASE + 4
+  IP_DEST_PORT_UNREACHABLE* = IP_STATUS_BASE + 5
+  IP_NO_RESOURCES* = IP_STATUS_BASE + 6
+  IP_BAD_OPTION* = IP_STATUS_BASE + 7
+  IP_HW_ERROR* = IP_STATUS_BASE + 8
+  IP_PACKET_TOO_BIG* = IP_STATUS_BASE + 9
+  IP_REQ_TIMED_OUT* = IP_STATUS_BASE + 10
+  IP_BAD_REQ* = IP_STATUS_BASE + 11
+  IP_BAD_ROUTE* = IP_STATUS_BASE + 12
+  IP_TTL_EXPIRED_TRANSIT* = IP_STATUS_BASE + 13
+  IP_TTL_EXPIRED_REASSEM* = IP_STATUS_BASE + 14
+  IP_PARAM_PROBLEM* = IP_STATUS_BASE + 15
+  IP_SOURCE_QUENCH* = IP_STATUS_BASE + 16
+  IP_OPTION_TOO_BIG* = IP_STATUS_BASE + 17
+  IP_BAD_DESTINATION* = IP_STATUS_BASE + 18
+  IP_DEST_NO_ROUTE* = IP_STATUS_BASE + 2
+  IP_DEST_ADDR_UNREACHABLE* = IP_STATUS_BASE + 3
+  IP_DEST_PROHIBITED* = IP_STATUS_BASE + 4
+  IP_HOP_LIMIT_EXCEEDED* = IP_STATUS_BASE + 13
+  IP_REASSEMBLY_TIME_EXCEEDED* = IP_STATUS_BASE + 14
+  IP_PARAMETER_PROBLEM* = IP_STATUS_BASE + 15
+  IP_DEST_UNREACHABLE* = IP_STATUS_BASE + 40
+  IP_TIME_EXCEEDED* = IP_STATUS_BASE + 41
+  IP_BAD_HEADER* = IP_STATUS_BASE + 42
+  IP_UNRECOGNIZED_NEXT_HEADER* = IP_STATUS_BASE + 43
+  IP_ICMP_ERROR* = IP_STATUS_BASE + 44
+  IP_DEST_SCOPE_MISMATCH* = IP_STATUS_BASE + 45
+  IP_ADDR_DELETED* = IP_STATUS_BASE + 19
+  IP_SPEC_MTU_CHANGE* = IP_STATUS_BASE + 20
+  IP_MTU_CHANGE* = IP_STATUS_BASE + 21
+  IP_UNLOAD* = IP_STATUS_BASE + 22
+  IP_ADDR_ADDED* = IP_STATUS_BASE + 23
+  IP_MEDIA_CONNECT* = IP_STATUS_BASE + 24
+  IP_MEDIA_DISCONNECT* = IP_STATUS_BASE + 25
+  IP_BIND_ADAPTER* = IP_STATUS_BASE + 26
+  IP_UNBIND_ADAPTER* = IP_STATUS_BASE + 27
+  IP_DEVICE_DOES_NOT_EXIST* = IP_STATUS_BASE + 28
+  IP_DUPLICATE_ADDRESS* = IP_STATUS_BASE + 29
+  IP_INTERFACE_METRIC_CHANGE* = IP_STATUS_BASE + 30
+  IP_RECONFIG_SECFLTR* = IP_STATUS_BASE + 31
+  IP_NEGOTIATING_IPSEC* = IP_STATUS_BASE + 32
+  IP_INTERFACE_WOL_CAPABILITY_CHANGE* = IP_STATUS_BASE + 33
+  IP_DUPLICATE_IPADD* = IP_STATUS_BASE + 34
+  IP_NO_FURTHER_SENDS* = IP_STATUS_BASE + 35
+  IP_GENERAL_FAILURE* = IP_STATUS_BASE + 50
   MAX_IP_STATUS* = IP_GENERAL_FAILURE
-  IP_PENDING* = IP_STATUS_BASE+255
+  IP_PENDING* = IP_STATUS_BASE + 255
   IP_FLAG_DF* = 0x2
   IP_OPT_EOL* = 0
   IP_OPT_NOP* = 1
@@ -4055,14 +4488,18 @@
   NET_STRING_NAMED_ADDRESS* = 0x00000100
   NET_STRING_NAMED_SERVICE* = 0x00000200
   NET_STRING_IP_ADDRESS* = NET_STRING_IPV4_ADDRESS or NET_STRING_IPV6_ADDRESS
-  NET_STRING_IP_ADDRESS_NO_SCOPE* = NET_STRING_IPV4_ADDRESS or NET_STRING_IPV6_ADDRESS_NO_SCOPE
+  NET_STRING_IP_ADDRESS_NO_SCOPE* =
+    NET_STRING_IPV4_ADDRESS or NET_STRING_IPV6_ADDRESS_NO_SCOPE
   NET_STRING_IP_SERVICE* = NET_STRING_IPV4_SERVICE or NET_STRING_IPV6_SERVICE
-  NET_STRING_IP_SERVICE_NO_SCOPE* = NET_STRING_IPV4_SERVICE or NET_STRING_IPV6_SERVICE_NO_SCOPE
+  NET_STRING_IP_SERVICE_NO_SCOPE* =
+    NET_STRING_IPV4_SERVICE or NET_STRING_IPV6_SERVICE_NO_SCOPE
   NET_STRING_IP_NETWORK* = NET_STRING_IPV4_NETWORK or NET_STRING_IPV6_NETWORK
   NET_STRING_ANY_ADDRESS* = NET_STRING_NAMED_ADDRESS or NET_STRING_IP_ADDRESS
-  NET_STRING_ANY_ADDRESS_NO_SCOPE* = NET_STRING_NAMED_ADDRESS or NET_STRING_IP_ADDRESS_NO_SCOPE
+  NET_STRING_ANY_ADDRESS_NO_SCOPE* =
+    NET_STRING_NAMED_ADDRESS or NET_STRING_IP_ADDRESS_NO_SCOPE
   NET_STRING_ANY_SERVICE* = NET_STRING_NAMED_SERVICE or NET_STRING_IP_SERVICE
-  NET_STRING_ANY_SERVICE_NO_SCOPE* = NET_STRING_NAMED_SERVICE or NET_STRING_IP_SERVICE_NO_SCOPE
+  NET_STRING_ANY_SERVICE_NO_SCOPE* =
+    NET_STRING_NAMED_SERVICE or NET_STRING_IP_SERVICE_NO_SCOPE
   NET_ADDRESS_FORMAT_UNSPECIFIED* = 0
   NET_ADDRESS_DNS_NAME* = 1
   NET_ADDRESS_IPV4* = 2
@@ -4717,16 +5154,16 @@
   Ndis802_11PrivFilter8021xWEP* = 1
   Ndis802_11WEPEnabled* = 0
   Ndis802_11Encryption1Enabled* = Ndis802_11WEPEnabled
-  Ndis802_11WEPDisabled* = Ndis802_11WEPEnabled+1
+  Ndis802_11WEPDisabled* = Ndis802_11WEPEnabled + 1
   Ndis802_11EncryptionDisabled* = Ndis802_11WEPDisabled
-  Ndis802_11WEPKeyAbsent* = Ndis802_11WEPDisabled+1
+  Ndis802_11WEPKeyAbsent* = Ndis802_11WEPDisabled + 1
   Ndis802_11Encryption1KeyAbsent* = Ndis802_11WEPKeyAbsent
-  Ndis802_11WEPNotSupported* = Ndis802_11WEPKeyAbsent+1
+  Ndis802_11WEPNotSupported* = Ndis802_11WEPKeyAbsent + 1
   Ndis802_11EncryptionNotSupported* = Ndis802_11WEPNotSupported
-  Ndis802_11Encryption2Enabled* = Ndis802_11WEPNotSupported+1
-  Ndis802_11Encryption2KeyAbsent* = Ndis802_11WEPNotSupported+2
-  Ndis802_11Encryption3Enabled* = Ndis802_11WEPNotSupported+3
-  Ndis802_11Encryption3KeyAbsent* = Ndis802_11WEPNotSupported+4
+  Ndis802_11Encryption2Enabled* = Ndis802_11WEPNotSupported + 1
+  Ndis802_11Encryption2KeyAbsent* = Ndis802_11WEPNotSupported + 2
+  Ndis802_11Encryption3Enabled* = Ndis802_11WEPNotSupported + 3
+  Ndis802_11Encryption3KeyAbsent* = Ndis802_11WEPNotSupported + 4
   Ndis802_11ReloadWEPKeys* = 0
   Ndis802_11MediaStreamOff* = 0
   Ndis802_11MediaStreamOn* = 1
@@ -5150,22 +5587,54 @@
   NDIS_OFFLOAD_PARAMETERS_REVISION_2* = 2
   NDIS_OFFLOAD_PARAMETERS_REVISION_3* = 3
   NDIS_OFFLOAD_PARAMETERS_SKIP_REGISTRY_UPDATE* = 0x00000001
-proc Flags*(self: IP_ADAPTER_UNICAST_ADDRESS_XP): DWORD {.inline.} = self.union1.struct1.Flags
-proc Flags*(self: var IP_ADAPTER_UNICAST_ADDRESS_XP): var DWORD {.inline.} = self.union1.struct1.Flags
-proc Flags*(self: IP_ADAPTER_UNICAST_ADDRESS_LH): DWORD {.inline.} = self.union1.struct1.Flags
-proc Flags*(self: var IP_ADAPTER_UNICAST_ADDRESS_LH): var DWORD {.inline.} = self.union1.struct1.Flags
-proc Flags*(self: IP_ADAPTER_ANYCAST_ADDRESS_XP): DWORD {.inline.} = self.union1.struct1.Flags
-proc Flags*(self: var IP_ADAPTER_ANYCAST_ADDRESS_XP): var DWORD {.inline.} = self.union1.struct1.Flags
-proc Flags*(self: IP_ADAPTER_MULTICAST_ADDRESS_XP): DWORD {.inline.} = self.union1.struct1.Flags
-proc Flags*(self: var IP_ADAPTER_MULTICAST_ADDRESS_XP): var DWORD {.inline.} = self.union1.struct1.Flags
-proc Flags*(self: IP_ADAPTER_PREFIX_XP): DWORD {.inline.} = self.union1.struct1.Flags
-proc Flags*(self: var IP_ADAPTER_PREFIX_XP): var DWORD {.inline.} = self.union1.struct1.Flags
-proc Flags*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} = self.union2.Flags
-proc Flags*(self: var IP_ADAPTER_ADDRESSES_LH): var ULONG {.inline.} = self.union2.Flags
-proc Flags*(self: MIB_IPNET_ROW2): UCHAR {.inline.} = self.union1.Flags
-proc Flags*(self: var MIB_IPNET_ROW2): var UCHAR {.inline.} = self.union1.Flags
-proc EncapsulationTypes*(self: NDIS_OFFLOAD_PARAMETERS): UCHAR {.inline.} = self.struct2.EncapsulationTypes
-proc EncapsulationTypes*(self: var NDIS_OFFLOAD_PARAMETERS): var UCHAR {.inline.} = self.struct2.EncapsulationTypes
+proc Flags*(self: IP_ADAPTER_UNICAST_ADDRESS_XP): DWORD {.inline.} =
+  self.union1.struct1.Flags
+
+proc Flags*(self: var IP_ADAPTER_UNICAST_ADDRESS_XP): var DWORD {.inline.} =
+  self.union1.struct1.Flags
+
+proc Flags*(self: IP_ADAPTER_UNICAST_ADDRESS_LH): DWORD {.inline.} =
+  self.union1.struct1.Flags
+
+proc Flags*(self: var IP_ADAPTER_UNICAST_ADDRESS_LH): var DWORD {.inline.} =
+  self.union1.struct1.Flags
+
+proc Flags*(self: IP_ADAPTER_ANYCAST_ADDRESS_XP): DWORD {.inline.} =
+  self.union1.struct1.Flags
+
+proc Flags*(self: var IP_ADAPTER_ANYCAST_ADDRESS_XP): var DWORD {.inline.} =
+  self.union1.struct1.Flags
+
+proc Flags*(self: IP_ADAPTER_MULTICAST_ADDRESS_XP): DWORD {.inline.} =
+  self.union1.struct1.Flags
+
+proc Flags*(self: var IP_ADAPTER_MULTICAST_ADDRESS_XP): var DWORD {.inline.} =
+  self.union1.struct1.Flags
+
+proc Flags*(self: IP_ADAPTER_PREFIX_XP): DWORD {.inline.} =
+  self.union1.struct1.Flags
+
+proc Flags*(self: var IP_ADAPTER_PREFIX_XP): var DWORD {.inline.} =
+  self.union1.struct1.Flags
+
+proc Flags*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} =
+  self.union2.Flags
+
+proc Flags*(self: var IP_ADAPTER_ADDRESSES_LH): var ULONG {.inline.} =
+  self.union2.Flags
+
+proc Flags*(self: MIB_IPNET_ROW2): UCHAR {.inline.} =
+  self.union1.Flags
+
+proc Flags*(self: var MIB_IPNET_ROW2): var UCHAR {.inline.} =
+  self.union1.Flags
+
+proc EncapsulationTypes*(self: NDIS_OFFLOAD_PARAMETERS): UCHAR {.inline.} =
+  self.struct2.EncapsulationTypes
+
+proc EncapsulationTypes*(self: var NDIS_OFFLOAD_PARAMETERS): var UCHAR {.inline.} =
+  self.struct2.EncapsulationTypes
+
 const
   NDIS_OFFLOAD_NOT_SUPPORTED* = 0
   NDIS_OFFLOAD_SUPPORTED* = 1
@@ -5331,7 +5800,8 @@
   NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED* = 0x00000001
   NDIS_NIC_SWITCH_CAPS_VLAN_SUPPORTED* = 0x00000001
   NDIS_NIC_SWITCH_CAPS_PER_VPORT_INTERRUPT_MODERATION_SUPPORTED* = 0x00000002
-  NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED* = 0x00000004
+  NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED* =
+    0x00000004
   NDIS_NIC_SWITCH_CAPS_VF_RSS_SUPPORTED* = 0x00000008
   NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL* = 0x00000010
   NDIS_DEFAULT_RECEIVE_QUEUE_ID* = 0
@@ -5506,7 +5976,7 @@
   ndisProcessorVendorUnknown* = 0
   ndisProcessorVendorGenuinIntel* = 1
   ndisProcessorVendorGenuineIntel* = ndisProcessorVendorGenuinIntel
-  ndisProcessorVendorAuthenticAMD* = ndisProcessorVendorGenuinIntel+1
+  ndisProcessorVendorAuthenticAMD* = ndisProcessorVendorGenuinIntel + 1
   NDIS_HYPERVISOR_INFO_FLAG_HYPERVISOR_PRESENT* = 0x00000001
   NDIS_RSS_PROCESSOR_INFO_REVISION_1* = 1
   NDIS_SYSTEM_PROCESSOR_INFO_EX_REVISION_1* = 1
@@ -5641,39 +6111,99 @@
   NDIS_SWITCH_NIC_OID_REQUEST_REVISION_1* = 1
   NDIS_SWITCH_FEATURE_STATUS_PARAMETERS_REVISION_1* = 1
   NDIS_SWITCH_NIC_SAVE_STATE_REVISION_1* = 1
-type
-  NDIS_NDK_STATISTICS_INFO* {.pure.} = object
-    Header*: NDIS_OBJECT_HEADER
-    Flags*: ULONG
-    CounterSet*: NDIS_NDK_PERFORMANCE_COUNTERS
-proc Length*(self: IP_ADAPTER_UNICAST_ADDRESS_XP): ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: var IP_ADAPTER_UNICAST_ADDRESS_XP): var ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: IP_ADAPTER_UNICAST_ADDRESS_LH): ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: var IP_ADAPTER_UNICAST_ADDRESS_LH): var ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: IP_ADAPTER_ANYCAST_ADDRESS_XP): ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: var IP_ADAPTER_ANYCAST_ADDRESS_XP): var ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: IP_ADAPTER_MULTICAST_ADDRESS_XP): ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: var IP_ADAPTER_MULTICAST_ADDRESS_XP): var ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: IP_ADAPTER_DNS_SERVER_ADDRESS_XP): ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: var IP_ADAPTER_DNS_SERVER_ADDRESS_XP): var ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: IP_ADAPTER_PREFIX_XP): ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: var IP_ADAPTER_PREFIX_XP): var ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: IP_ADAPTER_WINS_SERVER_ADDRESS_LH): ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: var IP_ADAPTER_WINS_SERVER_ADDRESS_LH): var ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: IP_ADAPTER_GATEWAY_ADDRESS_LH): ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: var IP_ADAPTER_GATEWAY_ADDRESS_LH): var ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: var IP_ADAPTER_ADDRESSES_LH): var ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: IP_ADAPTER_ADDRESSES_XP): ULONG {.inline.} = self.union1.struct1.Length
-proc Length*(self: var IP_ADAPTER_ADDRESSES_XP): var ULONG {.inline.} = self.union1.struct1.Length
-proc VlanProperties*(self: NDIS_SWITCH_PORT_PROPERTY_VLAN): NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_VlanProperties {.inline.} = self.union1.VlanProperties
-proc VlanProperties*(self: var NDIS_SWITCH_PORT_PROPERTY_VLAN): var NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_VlanProperties {.inline.} = self.union1.VlanProperties
-proc Reserved*(self: IP_ADAPTER_DNS_SERVER_ADDRESS_XP): DWORD {.inline.} = self.union1.struct1.Reserved
-proc Reserved*(self: var IP_ADAPTER_DNS_SERVER_ADDRESS_XP): var DWORD {.inline.} = self.union1.struct1.Reserved
-proc Reserved*(self: IP_ADAPTER_WINS_SERVER_ADDRESS_LH): DWORD {.inline.} = self.union1.struct1.Reserved
-proc Reserved*(self: var IP_ADAPTER_WINS_SERVER_ADDRESS_LH): var DWORD {.inline.} = self.union1.struct1.Reserved
-proc Reserved*(self: IP_ADAPTER_GATEWAY_ADDRESS_LH): DWORD {.inline.} = self.union1.struct1.Reserved
-proc Reserved*(self: var IP_ADAPTER_GATEWAY_ADDRESS_LH): var DWORD {.inline.} = self.union1.struct1.Reserved
+type NDIS_NDK_STATISTICS_INFO* {.pure.} = object
+  Header*: NDIS_OBJECT_HEADER
+  Flags*: ULONG
+  CounterSet*: NDIS_NDK_PERFORMANCE_COUNTERS
+
+proc Length*(self: IP_ADAPTER_UNICAST_ADDRESS_XP): ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: var IP_ADAPTER_UNICAST_ADDRESS_XP): var ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: IP_ADAPTER_UNICAST_ADDRESS_LH): ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: var IP_ADAPTER_UNICAST_ADDRESS_LH): var ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: IP_ADAPTER_ANYCAST_ADDRESS_XP): ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: var IP_ADAPTER_ANYCAST_ADDRESS_XP): var ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: IP_ADAPTER_MULTICAST_ADDRESS_XP): ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: var IP_ADAPTER_MULTICAST_ADDRESS_XP): var ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: IP_ADAPTER_DNS_SERVER_ADDRESS_XP): ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: var IP_ADAPTER_DNS_SERVER_ADDRESS_XP): var ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: IP_ADAPTER_PREFIX_XP): ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: var IP_ADAPTER_PREFIX_XP): var ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: IP_ADAPTER_WINS_SERVER_ADDRESS_LH): ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: var IP_ADAPTER_WINS_SERVER_ADDRESS_LH): var ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: IP_ADAPTER_GATEWAY_ADDRESS_LH): ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: var IP_ADAPTER_GATEWAY_ADDRESS_LH): var ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: var IP_ADAPTER_ADDRESSES_LH): var ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: IP_ADAPTER_ADDRESSES_XP): ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc Length*(self: var IP_ADAPTER_ADDRESSES_XP): var ULONG {.inline.} =
+  self.union1.struct1.Length
+
+proc VlanProperties*(
+    self: NDIS_SWITCH_PORT_PROPERTY_VLAN
+): NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_VlanProperties {.inline.} =
+  self.union1.VlanProperties
+
+proc VlanProperties*(
+    self: var NDIS_SWITCH_PORT_PROPERTY_VLAN
+): var NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_VlanProperties {.inline.} =
+  self.union1.VlanProperties
+
+proc Reserved*(self: IP_ADAPTER_DNS_SERVER_ADDRESS_XP): DWORD {.inline.} =
+  self.union1.struct1.Reserved
+
+proc Reserved*(self: var IP_ADAPTER_DNS_SERVER_ADDRESS_XP): var DWORD {.inline.} =
+  self.union1.struct1.Reserved
+
+proc Reserved*(self: IP_ADAPTER_WINS_SERVER_ADDRESS_LH): DWORD {.inline.} =
+  self.union1.struct1.Reserved
+
+proc Reserved*(self: var IP_ADAPTER_WINS_SERVER_ADDRESS_LH): var DWORD {.inline.} =
+  self.union1.struct1.Reserved
+
+proc Reserved*(self: IP_ADAPTER_GATEWAY_ADDRESS_LH): DWORD {.inline.} =
+  self.union1.struct1.Reserved
+
+proc Reserved*(self: var IP_ADAPTER_GATEWAY_ADDRESS_LH): var DWORD {.inline.} =
+  self.union1.struct1.Reserved
+
 const
   NDK_ADAPTER_FLAG_IN_ORDER_DMA_SUPPORTED* = 0x1
   NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED* = 0x2
@@ -5753,329 +6283,1245 @@
   NDIS_PF_FUNCTION_ID* = not USHORT(0)
   NDIS_INVALID_VF_FUNCTION_ID* = not USHORT(0)
 type
-  PIPINTERFACE_CHANGE_CALLBACK* = proc (CallerContext: PVOID, Row: PMIB_IPINTERFACE_ROW, NotificationType: MIB_NOTIFICATION_TYPE): VOID {.stdcall.}
-  PUNICAST_IPADDRESS_CHANGE_CALLBACK* = proc (CallerContext: PVOID, Row: PMIB_UNICASTIPADDRESS_ROW, NotificationType: MIB_NOTIFICATION_TYPE): VOID {.stdcall.}
-  PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK* = proc (CallerContext: PVOID, AddressTable: PMIB_UNICASTIPADDRESS_TABLE): VOID {.stdcall.}
-  PTEREDO_PORT_CHANGE_CALLBACK* = proc (CallerContext: PVOID, Port: USHORT, NotificationType: MIB_NOTIFICATION_TYPE): VOID {.stdcall.}
-  PIPFORWARD_CHANGE_CALLBACK* = proc (CallerContext: PVOID, Row: PMIB_IPFORWARD_ROW2, NotificationType: MIB_NOTIFICATION_TYPE): VOID {.stdcall.}
+  PIPINTERFACE_CHANGE_CALLBACK* = proc(
+    CallerContext: PVOID,
+    Row: PMIB_IPINTERFACE_ROW,
+    NotificationType: MIB_NOTIFICATION_TYPE,
+  ): VOID {.stdcall.}
+  PUNICAST_IPADDRESS_CHANGE_CALLBACK* = proc(
+    CallerContext: PVOID,
+    Row: PMIB_UNICASTIPADDRESS_ROW,
+    NotificationType: MIB_NOTIFICATION_TYPE,
+  ): VOID {.stdcall.}
+  PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK* = proc(
+    CallerContext: PVOID, AddressTable: PMIB_UNICASTIPADDRESS_TABLE
+  ): VOID {.stdcall.}
+  PTEREDO_PORT_CHANGE_CALLBACK* = proc(
+    CallerContext: PVOID, Port: USHORT, NotificationType: MIB_NOTIFICATION_TYPE
+  ): VOID {.stdcall.}
+  PIPFORWARD_CHANGE_CALLBACK* = proc(
+    CallerContext: PVOID,
+    Row: PMIB_IPFORWARD_ROW2,
+    NotificationType: MIB_NOTIFICATION_TYPE,
+  ): VOID {.stdcall.}
   NDIS_NDK_CONNECTION_ENTRY* {.pure.} = object
     Local*: SOCKADDR_INET
     Remote*: SOCKADDR_INET
     UserModeOwner*: BOOLEAN
     OwnerPid*: ULONG
+
   NDIS_NDK_CONNECTIONS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     Count*: ULONG
     NDConnectionsMappedtoTCPConnections*: BOOLEAN
     Connections*: array[1, NDIS_NDK_CONNECTION_ENTRY]
+
   NDIS_NDK_LOCAL_ENDPOINT_ENTRY* {.pure.} = object
     Local*: SOCKADDR_INET
     UserModeOwner*: BOOLEAN
     Listener*: BOOLEAN
     OwnerPid*: ULONG
+
   NDIS_NDK_LOCAL_ENDPOINTS* {.pure.} = object
     Header*: NDIS_OBJECT_HEADER
     Flags*: ULONG
     Count*: ULONG
     NDLocalEndpointsMappedtoTCPLocalEndpoints*: BOOLEAN
     LocalEndpoints*: array[1, NDIS_NDK_LOCAL_ENDPOINT_ENTRY]
-proc GetNumberOfInterfaces*(pdwNumIf: PDWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIfEntry*(pIfRow: PMIB_IFROW): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIfTable*(pIfTable: PMIB_IFTABLE, pdwSize: PULONG, bOrder: WINBOOL): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpAddrTable*(pIpAddrTable: PMIB_IPADDRTABLE, pdwSize: PULONG, bOrder: WINBOOL): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpNetTable*(IpNetTable: PMIB_IPNETTABLE, SizePointer: PULONG, Order: WINBOOL): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpForwardTable*(pIpForwardTable: PMIB_IPFORWARDTABLE, pdwSize: PULONG, bOrder: WINBOOL): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetTcpTable*(TcpTable: PMIB_TCPTABLE, SizePointer: PULONG, Order: WINBOOL): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetExtendedTcpTable*(pTcpTable: PVOID, pdwSize: PDWORD, bOrder: WINBOOL, ulAf: ULONG, TableClass: TCP_TABLE_CLASS, Reserved: ULONG): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetOwnerModuleFromTcpEntry*(pTcpEntry: PMIB_TCPROW_OWNER_MODULE, Class: TCPIP_OWNER_MODULE_INFO_CLASS, pBuffer: PVOID, pdwSize: PDWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetUdpTable*(UdpTable: PMIB_UDPTABLE, SizePointer: PULONG, Order: WINBOOL): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetExtendedUdpTable*(pUdpTable: PVOID, pdwSize: PDWORD, bOrder: WINBOOL, ulAf: ULONG, TableClass: UDP_TABLE_CLASS, Reserved: ULONG): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetOwnerModuleFromUdpEntry*(pUdpEntry: PMIB_UDPROW_OWNER_MODULE, Class: TCPIP_OWNER_MODULE_INFO_CLASS, pBuffer: PVOID, pdwSize: PDWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetTcpTable2*(TcpTable: PMIB_TCPTABLE2, SizePointer: PULONG, Order: WINBOOL): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetTcp6Table*(TcpTable: PMIB_TCP6TABLE, SizePointer: PULONG, Order: WINBOOL): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetTcp6Table2*(TcpTable: PMIB_TCP6TABLE2, SizePointer: PULONG, Order: WINBOOL): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetPerTcpConnectionEStats*(Row: PMIB_TCPROW, EstatsType: TCP_ESTATS_TYPE, Rw: PUCHAR, RwVersion: ULONG, RwSize: ULONG, Ros: PUCHAR, RosVersion: ULONG, RosSize: ULONG, Rod: PUCHAR, RodVersion: ULONG, RodSize: ULONG): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetPerTcpConnectionEStats*(Row: PMIB_TCPROW, EstatsType: TCP_ESTATS_TYPE, Rw: PUCHAR, RwVersion: ULONG, RwSize: ULONG, Offset: ULONG): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetPerTcp6ConnectionEStats*(Row: PMIB_TCP6ROW, EstatsType: TCP_ESTATS_TYPE, Rw: PUCHAR, RwVersion: ULONG, RwSize: ULONG, Ros: PUCHAR, RosVersion: ULONG, RosSize: ULONG, Rod: PUCHAR, RodVersion: ULONG, RodSize: ULONG): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetPerTcp6ConnectionEStats*(Row: PMIB_TCP6ROW, EstatsType: TCP_ESTATS_TYPE, Rw: PUCHAR, RwVersion: ULONG, RwSize: ULONG, Offset: ULONG): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetUdp6Table*(Udp6Table: PMIB_UDP6TABLE, SizePointer: PULONG, Order: WINBOOL): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetOwnerModuleFromTcp6Entry*(pTcpEntry: PMIB_TCP6ROW_OWNER_MODULE, Class: TCPIP_OWNER_MODULE_INFO_CLASS, pBuffer: PVOID, pdwSize: PDWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetOwnerModuleFromUdp6Entry*(pUdpEntry: PMIB_UDP6ROW_OWNER_MODULE, Class: TCPIP_OWNER_MODULE_INFO_CLASS, pBuffer: PVOID, pdwSize: PDWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetOwnerModuleFromPidAndInfo*(ulPid: ULONG, pInfo: ptr ULONGLONG, Class: TCPIP_OWNER_MODULE_INFO_CLASS, pBuffer: PVOID, pdwSize: PDWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpStatistics*(Statistics: PMIB_IPSTATS): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIcmpStatistics*(Statistics: PMIB_ICMP): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetTcpStatistics*(Statistics: PMIB_TCPSTATS): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetUdpStatistics*(Stats: PMIB_UDPSTATS): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpStatisticsEx*(Statistics: PMIB_IPSTATS, Family: ULONG): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetIpStatisticsEx*(Statistics: PMIB_IPSTATS, Family: ULONG): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIcmpStatisticsEx*(Statistics: PMIB_ICMP_EX, Family: ULONG): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetTcpStatisticsEx*(Statistics: PMIB_TCPSTATS, Family: ULONG): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetUdpStatisticsEx*(Statistics: PMIB_UDPSTATS, Family: ULONG): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetIfEntry*(pIfRow: PMIB_IFROW): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc CreateIpForwardEntry*(pRoute: PMIB_IPFORWARDROW): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetIpForwardEntry*(pRoute: PMIB_IPFORWARDROW): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc DeleteIpForwardEntry*(pRoute: PMIB_IPFORWARDROW): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetIpStatistics*(pIpStats: PMIB_IPSTATS): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetNumberOfInterfaces*(
+  pdwNumIf: PDWORD
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIfEntry*(
+  pIfRow: PMIB_IFROW
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIfTable*(
+  pIfTable: PMIB_IFTABLE, pdwSize: PULONG, bOrder: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpAddrTable*(
+  pIpAddrTable: PMIB_IPADDRTABLE, pdwSize: PULONG, bOrder: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpNetTable*(
+  IpNetTable: PMIB_IPNETTABLE, SizePointer: PULONG, Order: WINBOOL
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpForwardTable*(
+  pIpForwardTable: PMIB_IPFORWARDTABLE, pdwSize: PULONG, bOrder: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetTcpTable*(
+  TcpTable: PMIB_TCPTABLE, SizePointer: PULONG, Order: WINBOOL
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetExtendedTcpTable*(
+  pTcpTable: PVOID,
+  pdwSize: PDWORD,
+  bOrder: WINBOOL,
+  ulAf: ULONG,
+  TableClass: TCP_TABLE_CLASS,
+  Reserved: ULONG,
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetOwnerModuleFromTcpEntry*(
+  pTcpEntry: PMIB_TCPROW_OWNER_MODULE,
+  Class: TCPIP_OWNER_MODULE_INFO_CLASS,
+  pBuffer: PVOID,
+  pdwSize: PDWORD,
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetUdpTable*(
+  UdpTable: PMIB_UDPTABLE, SizePointer: PULONG, Order: WINBOOL
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetExtendedUdpTable*(
+  pUdpTable: PVOID,
+  pdwSize: PDWORD,
+  bOrder: WINBOOL,
+  ulAf: ULONG,
+  TableClass: UDP_TABLE_CLASS,
+  Reserved: ULONG,
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetOwnerModuleFromUdpEntry*(
+  pUdpEntry: PMIB_UDPROW_OWNER_MODULE,
+  Class: TCPIP_OWNER_MODULE_INFO_CLASS,
+  pBuffer: PVOID,
+  pdwSize: PDWORD,
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetTcpTable2*(
+  TcpTable: PMIB_TCPTABLE2, SizePointer: PULONG, Order: WINBOOL
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetTcp6Table*(
+  TcpTable: PMIB_TCP6TABLE, SizePointer: PULONG, Order: WINBOOL
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetTcp6Table2*(
+  TcpTable: PMIB_TCP6TABLE2, SizePointer: PULONG, Order: WINBOOL
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetPerTcpConnectionEStats*(
+  Row: PMIB_TCPROW,
+  EstatsType: TCP_ESTATS_TYPE,
+  Rw: PUCHAR,
+  RwVersion: ULONG,
+  RwSize: ULONG,
+  Ros: PUCHAR,
+  RosVersion: ULONG,
+  RosSize: ULONG,
+  Rod: PUCHAR,
+  RodVersion: ULONG,
+  RodSize: ULONG,
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SetPerTcpConnectionEStats*(
+  Row: PMIB_TCPROW,
+  EstatsType: TCP_ESTATS_TYPE,
+  Rw: PUCHAR,
+  RwVersion: ULONG,
+  RwSize: ULONG,
+  Offset: ULONG,
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetPerTcp6ConnectionEStats*(
+  Row: PMIB_TCP6ROW,
+  EstatsType: TCP_ESTATS_TYPE,
+  Rw: PUCHAR,
+  RwVersion: ULONG,
+  RwSize: ULONG,
+  Ros: PUCHAR,
+  RosVersion: ULONG,
+  RosSize: ULONG,
+  Rod: PUCHAR,
+  RodVersion: ULONG,
+  RodSize: ULONG,
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SetPerTcp6ConnectionEStats*(
+  Row: PMIB_TCP6ROW,
+  EstatsType: TCP_ESTATS_TYPE,
+  Rw: PUCHAR,
+  RwVersion: ULONG,
+  RwSize: ULONG,
+  Offset: ULONG,
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetUdp6Table*(
+  Udp6Table: PMIB_UDP6TABLE, SizePointer: PULONG, Order: WINBOOL
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetOwnerModuleFromTcp6Entry*(
+  pTcpEntry: PMIB_TCP6ROW_OWNER_MODULE,
+  Class: TCPIP_OWNER_MODULE_INFO_CLASS,
+  pBuffer: PVOID,
+  pdwSize: PDWORD,
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetOwnerModuleFromUdp6Entry*(
+  pUdpEntry: PMIB_UDP6ROW_OWNER_MODULE,
+  Class: TCPIP_OWNER_MODULE_INFO_CLASS,
+  pBuffer: PVOID,
+  pdwSize: PDWORD,
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetOwnerModuleFromPidAndInfo*(
+  ulPid: ULONG,
+  pInfo: ptr ULONGLONG,
+  Class: TCPIP_OWNER_MODULE_INFO_CLASS,
+  pBuffer: PVOID,
+  pdwSize: PDWORD,
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpStatistics*(
+  Statistics: PMIB_IPSTATS
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIcmpStatistics*(
+  Statistics: PMIB_ICMP
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetTcpStatistics*(
+  Statistics: PMIB_TCPSTATS
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetUdpStatistics*(
+  Stats: PMIB_UDPSTATS
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpStatisticsEx*(
+  Statistics: PMIB_IPSTATS, Family: ULONG
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SetIpStatisticsEx*(
+  Statistics: PMIB_IPSTATS, Family: ULONG
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIcmpStatisticsEx*(
+  Statistics: PMIB_ICMP_EX, Family: ULONG
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetTcpStatisticsEx*(
+  Statistics: PMIB_TCPSTATS, Family: ULONG
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetUdpStatisticsEx*(
+  Statistics: PMIB_UDPSTATS, Family: ULONG
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SetIfEntry*(
+  pIfRow: PMIB_IFROW
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc CreateIpForwardEntry*(
+  pRoute: PMIB_IPFORWARDROW
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SetIpForwardEntry*(
+  pRoute: PMIB_IPFORWARDROW
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc DeleteIpForwardEntry*(
+  pRoute: PMIB_IPFORWARDROW
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SetIpStatistics*(
+  pIpStats: PMIB_IPSTATS
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
 proc SetIpTTL*(nTTL: UINT): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc CreateIpNetEntry*(pArpEntry: PMIB_IPNETROW): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetIpNetEntry*(pArpEntry: PMIB_IPNETROW): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc DeleteIpNetEntry*(pArpEntry: PMIB_IPNETROW): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc FlushIpNetTable*(dwIfIndex: DWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc CreateProxyArpEntry*(dwAddress: DWORD, dwMask: DWORD, dwIfIndex: DWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc DeleteProxyArpEntry*(dwAddress: DWORD, dwMask: DWORD, dwIfIndex: DWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetTcpEntry*(pTcpRow: PMIB_TCPROW): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetInterfaceInfo*(pIfTable: PIP_INTERFACE_INFO, dwOutBufLen: PULONG): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetUniDirectionalAdapterInfo*(pIPIfInfo: PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS, dwOutBufLen: PULONG): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc NhpAllocateAndGetInterfaceInfoFromStack*(ppTable: ptr ptr IP_INTERFACE_NAME_INFO, pdwCount: PDWORD, bOrder: WINBOOL, hHeap: HANDLE, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetBestInterface*(dwDestAddr: IPAddr, pdwBestIfIndex: PDWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetBestInterfaceEx*(pDestAddr: ptr sockaddr, pdwBestIfIndex: PDWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetBestRoute*(dwDestAddr: DWORD, dwSourceAddr: DWORD, pBestRoute: PMIB_IPFORWARDROW): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc NotifyAddrChange*(Handle: PHANDLE, overlapped: LPOVERLAPPED): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc NotifyRouteChange*(Handle: PHANDLE, overlapped: LPOVERLAPPED): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc CancelIPChangeNotify*(notifyOverlapped: LPOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetAdapterIndex*(AdapterName: LPWSTR, IfIndex: PULONG): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc AddIPAddress*(Address: IPAddr, IpMask: IPMask, IfIndex: DWORD, NTEContext: PULONG, NTEInstance: PULONG): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc DeleteIPAddress*(NTEContext: ULONG): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetNetworkParams*(pFixedInfo: PFIXED_INFO, pOutBufLen: PULONG): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetAdaptersInfo*(AdapterInfo: PIP_ADAPTER_INFO, SizePointer: PULONG): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetAdapterOrderMap*(): PIP_ADAPTER_ORDER_MAP {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetAdaptersAddresses*(Family: ULONG, Flags: ULONG, Reserved: PVOID, AdapterAddresses: PIP_ADAPTER_ADDRESSES, SizePointer: PULONG): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetPerAdapterInfo*(IfIndex: ULONG, pPerAdapterInfo: PIP_PER_ADAPTER_INFO, pOutBufLen: PULONG): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc IpReleaseAddress*(AdapterInfo: PIP_ADAPTER_INDEX_MAP): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc IpRenewAddress*(AdapterInfo: PIP_ADAPTER_INDEX_MAP): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SendARP*(DestIP: IPAddr, SrcIP: IPAddr, pMacAddr: PVOID, PhyAddrLen: PULONG): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetRTTAndHopCount*(DestIpAddress: IPAddr, HopCount: PULONG, MaxHops: ULONG, RTT: PULONG): WINBOOL {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetFriendlyIfIndex*(IfIndex: DWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc EnableRouter*(pHandle: ptr HANDLE, pOverlapped: ptr OVERLAPPED): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc UnenableRouter*(pOverlapped: ptr OVERLAPPED, lpdwEnableCount: LPDWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc DisableMediaSense*(pHandle: ptr HANDLE, pOverLapped: ptr OVERLAPPED): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc RestoreMediaSense*(pOverlapped: ptr OVERLAPPED, lpdwEnableCount: LPDWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ParseNetworkString*(NetworkString: ptr WCHAR, Types: DWORD, AddressInfo: PNET_ADDRESS_INFO, PortNumber: ptr USHORT, PrefixLength: ptr BYTE): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpErrorString*(ErrorCode: IP_STATUS, Buffer: PWSTR, Size: PDWORD): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ResolveNeighbor*(NetworkAddress: ptr SOCKADDR, PhysicalAddress: PVOID, PhysicalAddressLength: PULONG): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc CreatePersistentTcpPortReservation*(StartPort: USHORT, NumberOfPorts: USHORT, Token: PULONG64): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc CreatePersistentUdpPortReservation*(StartPort: USHORT, NumberOfPorts: USHORT, Token: PULONG64): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc DeletePersistentTcpPortReservation*(StartPort: USHORT, NumberOfPorts: USHORT): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc DeletePersistentUdpPortReservation*(StartPort: USHORT, NumberOfPorts: USHORT): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc LookupPersistentTcpPortReservation*(StartPort: USHORT, NumberOfPorts: USHORT, Token: PULONG64): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc LookupPersistentUdpPortReservation*(StartPort: USHORT, NumberOfPorts: USHORT, Token: PULONG64): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIfEntry2*(Row: PMIB_IF_ROW2): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIfTable2*(Table: ptr PMIB_IF_TABLE2): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIfTable2Ex*(Level: MIB_IF_TABLE_LEVEL, Table: ptr PMIB_IF_TABLE2): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIfStackTable*(Table: ptr PMIB_IFSTACK_TABLE): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetInvertedIfStackTable*(Table: ptr PMIB_INVERTEDIFSTACK_TABLE): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpInterfaceEntry*(Row: PMIB_IPINTERFACE_ROW): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpInterfaceTable*(Family: ADDRESS_FAMILY, Table: ptr PMIB_IPINTERFACE_TABLE): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc InitializeIpInterfaceEntry*(Row: PMIB_IPINTERFACE_ROW): VOID {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc NotifyIpInterfaceChange*(Family: ADDRESS_FAMILY, Callback: PIPINTERFACE_CHANGE_CALLBACK, CallerContext: PVOID, InitialNotification: BOOLEAN, NotificationHandle: ptr HANDLE): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetIpInterfaceEntry*(Row: PMIB_IPINTERFACE_ROW): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpNetworkConnectionBandwidthEstimates*(InterfaceIndex: NET_IFINDEX, AddressFamily: ADDRESS_FAMILY, BandwidthEstimates: PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc CreateUnicastIpAddressEntry*(Row: ptr MIB_UNICASTIPADDRESS_ROW): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc DeleteUnicastIpAddressEntry*(Row: ptr MIB_UNICASTIPADDRESS_ROW): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetUnicastIpAddressEntry*(Row: PMIB_UNICASTIPADDRESS_ROW): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetUnicastIpAddressTable*(Family: ADDRESS_FAMILY, Table: ptr PMIB_UNICASTIPADDRESS_TABLE): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc InitializeUnicastIpAddressEntry*(Row: PMIB_UNICASTIPADDRESS_ROW): VOID {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc NotifyUnicastIpAddressChange*(Family: ADDRESS_FAMILY, Callback: PUNICAST_IPADDRESS_CHANGE_CALLBACK, CallerContext: PVOID, InitialNotification: BOOLEAN, NotificationHandle: ptr HANDLE): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc CreateAnycastIpAddressEntry*(Row: ptr MIB_ANYCASTIPADDRESS_ROW): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc DeleteAnycastIpAddressEntry*(Row: ptr MIB_ANYCASTIPADDRESS_ROW): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetAnycastIpAddressEntry*(Row: PMIB_ANYCASTIPADDRESS_ROW): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetAnycastIpAddressTable*(Family: ADDRESS_FAMILY, Table: ptr PMIB_ANYCASTIPADDRESS_TABLE): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc NotifyStableUnicastIpAddressTable*(Family: ADDRESS_FAMILY, Table: ptr PMIB_UNICASTIPADDRESS_TABLE, CallerCallback: PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK, CallerContext: PVOID, NotificationHandle: ptr HANDLE): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetUnicastIpAddressEntry*(Row: ptr MIB_UNICASTIPADDRESS_ROW): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetMulticastIpAddressEntry*(Row: PMIB_MULTICASTIPADDRESS_ROW): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetMulticastIpAddressTable*(Family: ADDRESS_FAMILY, Table: ptr PMIB_MULTICASTIPADDRESS_TABLE): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc CreateIpForwardEntry2*(Row: ptr MIB_IPFORWARD_ROW2): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc DeleteIpForwardEntry2*(Row: ptr MIB_IPFORWARD_ROW2): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetBestRoute2*(InterfaceLuid: ptr NET_LUID, InterfaceIndex: NET_IFINDEX, SourceAddress: ptr SOCKADDR_INET, DestinationAddress: ptr SOCKADDR_INET, AddressSortOptions: ULONG, BestRoute: PMIB_IPFORWARD_ROW2, BestSourceAddress: ptr SOCKADDR_INET): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpForwardEntry2*(Row: PMIB_IPFORWARD_ROW2): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpForwardTable2*(Family: ADDRESS_FAMILY, Table: ptr PMIB_IPFORWARD_TABLE2): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc InitializeIpForwardEntry*(Row: PMIB_IPFORWARD_ROW2): VOID {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc NotifyRouteChange2*(AddressFamily: ADDRESS_FAMILY, Callback: PIPFORWARD_CHANGE_CALLBACK, CallerContext: PVOID, InitialNotification: BOOLEAN, NotificationHandle: ptr HANDLE): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetIpForwardEntry2*(Route: ptr MIB_IPFORWARD_ROW2): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc FlushIpPathTable*(Family: ADDRESS_FAMILY): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpPathEntry*(Row: PMIB_IPPATH_ROW): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpPathTable*(Family: ADDRESS_FAMILY, Table: ptr PMIB_IPPATH_TABLE): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc CreateIpNetEntry2*(Row: ptr MIB_IPNET_ROW2): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc DeleteIpNetEntry2*(Row: ptr MIB_IPNET_ROW2): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc FlushIpNetTable2*(Family: ADDRESS_FAMILY, InterfaceIndex: NET_IFINDEX): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpNetEntry2*(Row: PMIB_IPNET_ROW2): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetIpNetTable2*(Family: ADDRESS_FAMILY, Table: ptr PMIB_IPNET_TABLE2): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ResolveIpNetEntry2*(Row: PMIB_IPNET_ROW2, SourceAddress: ptr SOCKADDR_INET): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetIpNetEntry2*(Row: PMIB_IPNET_ROW2): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc NotifyTeredoPortChange*(Callback: PTEREDO_PORT_CHANGE_CALLBACK, CallerContext: PVOID, InitialNotification: BOOLEAN, NotificationHandle: ptr HANDLE): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetTeredoPort*(Port: ptr USHORT): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc CancelMibChangeNotify2*(NotificationHandle: HANDLE): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+proc CreateIpNetEntry*(
+  pArpEntry: PMIB_IPNETROW
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SetIpNetEntry*(
+  pArpEntry: PMIB_IPNETROW
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc DeleteIpNetEntry*(
+  pArpEntry: PMIB_IPNETROW
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc FlushIpNetTable*(
+  dwIfIndex: DWORD
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc CreateProxyArpEntry*(
+  dwAddress: DWORD, dwMask: DWORD, dwIfIndex: DWORD
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc DeleteProxyArpEntry*(
+  dwAddress: DWORD, dwMask: DWORD, dwIfIndex: DWORD
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SetTcpEntry*(
+  pTcpRow: PMIB_TCPROW
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetInterfaceInfo*(
+  pIfTable: PIP_INTERFACE_INFO, dwOutBufLen: PULONG
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetUniDirectionalAdapterInfo*(
+  pIPIfInfo: PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS, dwOutBufLen: PULONG
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc NhpAllocateAndGetInterfaceInfoFromStack*(
+  ppTable: ptr ptr IP_INTERFACE_NAME_INFO,
+  pdwCount: PDWORD,
+  bOrder: WINBOOL,
+  hHeap: HANDLE,
+  dwFlags: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetBestInterface*(
+  dwDestAddr: IPAddr, pdwBestIfIndex: PDWORD
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetBestInterfaceEx*(
+  pDestAddr: ptr sockaddr, pdwBestIfIndex: PDWORD
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetBestRoute*(
+  dwDestAddr: DWORD, dwSourceAddr: DWORD, pBestRoute: PMIB_IPFORWARDROW
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc NotifyAddrChange*(
+  Handle: PHANDLE, overlapped: LPOVERLAPPED
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc NotifyRouteChange*(
+  Handle: PHANDLE, overlapped: LPOVERLAPPED
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc CancelIPChangeNotify*(
+  notifyOverlapped: LPOVERLAPPED
+): WINBOOL {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetAdapterIndex*(
+  AdapterName: LPWSTR, IfIndex: PULONG
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc AddIPAddress*(
+  Address: IPAddr,
+  IpMask: IPMask,
+  IfIndex: DWORD,
+  NTEContext: PULONG,
+  NTEInstance: PULONG,
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc DeleteIPAddress*(
+  NTEContext: ULONG
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetNetworkParams*(
+  pFixedInfo: PFIXED_INFO, pOutBufLen: PULONG
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetAdaptersInfo*(
+  AdapterInfo: PIP_ADAPTER_INFO, SizePointer: PULONG
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetAdapterOrderMap*(): PIP_ADAPTER_ORDER_MAP {.
+  winapi, stdcall, dynlib: "iphlpapi", importc
+.}
+
+proc GetAdaptersAddresses*(
+  Family: ULONG,
+  Flags: ULONG,
+  Reserved: PVOID,
+  AdapterAddresses: PIP_ADAPTER_ADDRESSES,
+  SizePointer: PULONG,
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetPerAdapterInfo*(
+  IfIndex: ULONG, pPerAdapterInfo: PIP_PER_ADAPTER_INFO, pOutBufLen: PULONG
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc IpReleaseAddress*(
+  AdapterInfo: PIP_ADAPTER_INDEX_MAP
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc IpRenewAddress*(
+  AdapterInfo: PIP_ADAPTER_INDEX_MAP
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SendARP*(
+  DestIP: IPAddr, SrcIP: IPAddr, pMacAddr: PVOID, PhyAddrLen: PULONG
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetRTTAndHopCount*(
+  DestIpAddress: IPAddr, HopCount: PULONG, MaxHops: ULONG, RTT: PULONG
+): WINBOOL {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetFriendlyIfIndex*(
+  IfIndex: DWORD
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc EnableRouter*(
+  pHandle: ptr HANDLE, pOverlapped: ptr OVERLAPPED
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc UnenableRouter*(
+  pOverlapped: ptr OVERLAPPED, lpdwEnableCount: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc DisableMediaSense*(
+  pHandle: ptr HANDLE, pOverLapped: ptr OVERLAPPED
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc RestoreMediaSense*(
+  pOverlapped: ptr OVERLAPPED, lpdwEnableCount: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ParseNetworkString*(
+  NetworkString: ptr WCHAR,
+  Types: DWORD,
+  AddressInfo: PNET_ADDRESS_INFO,
+  PortNumber: ptr USHORT,
+  PrefixLength: ptr BYTE,
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpErrorString*(
+  ErrorCode: IP_STATUS, Buffer: PWSTR, Size: PDWORD
+): DWORD {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ResolveNeighbor*(
+  NetworkAddress: ptr SOCKADDR, PhysicalAddress: PVOID, PhysicalAddressLength: PULONG
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc CreatePersistentTcpPortReservation*(
+  StartPort: USHORT, NumberOfPorts: USHORT, Token: PULONG64
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc CreatePersistentUdpPortReservation*(
+  StartPort: USHORT, NumberOfPorts: USHORT, Token: PULONG64
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc DeletePersistentTcpPortReservation*(
+  StartPort: USHORT, NumberOfPorts: USHORT
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc DeletePersistentUdpPortReservation*(
+  StartPort: USHORT, NumberOfPorts: USHORT
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc LookupPersistentTcpPortReservation*(
+  StartPort: USHORT, NumberOfPorts: USHORT, Token: PULONG64
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc LookupPersistentUdpPortReservation*(
+  StartPort: USHORT, NumberOfPorts: USHORT, Token: PULONG64
+): ULONG {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIfEntry2*(
+  Row: PMIB_IF_ROW2
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIfTable2*(
+  Table: ptr PMIB_IF_TABLE2
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIfTable2Ex*(
+  Level: MIB_IF_TABLE_LEVEL, Table: ptr PMIB_IF_TABLE2
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIfStackTable*(
+  Table: ptr PMIB_IFSTACK_TABLE
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetInvertedIfStackTable*(
+  Table: ptr PMIB_INVERTEDIFSTACK_TABLE
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpInterfaceEntry*(
+  Row: PMIB_IPINTERFACE_ROW
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpInterfaceTable*(
+  Family: ADDRESS_FAMILY, Table: ptr PMIB_IPINTERFACE_TABLE
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc InitializeIpInterfaceEntry*(
+  Row: PMIB_IPINTERFACE_ROW
+): VOID {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc NotifyIpInterfaceChange*(
+  Family: ADDRESS_FAMILY,
+  Callback: PIPINTERFACE_CHANGE_CALLBACK,
+  CallerContext: PVOID,
+  InitialNotification: BOOLEAN,
+  NotificationHandle: ptr HANDLE,
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SetIpInterfaceEntry*(
+  Row: PMIB_IPINTERFACE_ROW
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpNetworkConnectionBandwidthEstimates*(
+  InterfaceIndex: NET_IFINDEX,
+  AddressFamily: ADDRESS_FAMILY,
+  BandwidthEstimates: PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES,
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc CreateUnicastIpAddressEntry*(
+  Row: ptr MIB_UNICASTIPADDRESS_ROW
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc DeleteUnicastIpAddressEntry*(
+  Row: ptr MIB_UNICASTIPADDRESS_ROW
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetUnicastIpAddressEntry*(
+  Row: PMIB_UNICASTIPADDRESS_ROW
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetUnicastIpAddressTable*(
+  Family: ADDRESS_FAMILY, Table: ptr PMIB_UNICASTIPADDRESS_TABLE
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc InitializeUnicastIpAddressEntry*(
+  Row: PMIB_UNICASTIPADDRESS_ROW
+): VOID {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc NotifyUnicastIpAddressChange*(
+  Family: ADDRESS_FAMILY,
+  Callback: PUNICAST_IPADDRESS_CHANGE_CALLBACK,
+  CallerContext: PVOID,
+  InitialNotification: BOOLEAN,
+  NotificationHandle: ptr HANDLE,
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc CreateAnycastIpAddressEntry*(
+  Row: ptr MIB_ANYCASTIPADDRESS_ROW
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc DeleteAnycastIpAddressEntry*(
+  Row: ptr MIB_ANYCASTIPADDRESS_ROW
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetAnycastIpAddressEntry*(
+  Row: PMIB_ANYCASTIPADDRESS_ROW
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetAnycastIpAddressTable*(
+  Family: ADDRESS_FAMILY, Table: ptr PMIB_ANYCASTIPADDRESS_TABLE
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc NotifyStableUnicastIpAddressTable*(
+  Family: ADDRESS_FAMILY,
+  Table: ptr PMIB_UNICASTIPADDRESS_TABLE,
+  CallerCallback: PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK,
+  CallerContext: PVOID,
+  NotificationHandle: ptr HANDLE,
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SetUnicastIpAddressEntry*(
+  Row: ptr MIB_UNICASTIPADDRESS_ROW
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetMulticastIpAddressEntry*(
+  Row: PMIB_MULTICASTIPADDRESS_ROW
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetMulticastIpAddressTable*(
+  Family: ADDRESS_FAMILY, Table: ptr PMIB_MULTICASTIPADDRESS_TABLE
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc CreateIpForwardEntry2*(
+  Row: ptr MIB_IPFORWARD_ROW2
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc DeleteIpForwardEntry2*(
+  Row: ptr MIB_IPFORWARD_ROW2
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetBestRoute2*(
+  InterfaceLuid: ptr NET_LUID,
+  InterfaceIndex: NET_IFINDEX,
+  SourceAddress: ptr SOCKADDR_INET,
+  DestinationAddress: ptr SOCKADDR_INET,
+  AddressSortOptions: ULONG,
+  BestRoute: PMIB_IPFORWARD_ROW2,
+  BestSourceAddress: ptr SOCKADDR_INET,
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpForwardEntry2*(
+  Row: PMIB_IPFORWARD_ROW2
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpForwardTable2*(
+  Family: ADDRESS_FAMILY, Table: ptr PMIB_IPFORWARD_TABLE2
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc InitializeIpForwardEntry*(
+  Row: PMIB_IPFORWARD_ROW2
+): VOID {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc NotifyRouteChange2*(
+  AddressFamily: ADDRESS_FAMILY,
+  Callback: PIPFORWARD_CHANGE_CALLBACK,
+  CallerContext: PVOID,
+  InitialNotification: BOOLEAN,
+  NotificationHandle: ptr HANDLE,
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SetIpForwardEntry2*(
+  Route: ptr MIB_IPFORWARD_ROW2
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc FlushIpPathTable*(
+  Family: ADDRESS_FAMILY
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpPathEntry*(
+  Row: PMIB_IPPATH_ROW
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpPathTable*(
+  Family: ADDRESS_FAMILY, Table: ptr PMIB_IPPATH_TABLE
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc CreateIpNetEntry2*(
+  Row: ptr MIB_IPNET_ROW2
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc DeleteIpNetEntry2*(
+  Row: ptr MIB_IPNET_ROW2
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc FlushIpNetTable2*(
+  Family: ADDRESS_FAMILY, InterfaceIndex: NET_IFINDEX
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpNetEntry2*(
+  Row: PMIB_IPNET_ROW2
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetIpNetTable2*(
+  Family: ADDRESS_FAMILY, Table: ptr PMIB_IPNET_TABLE2
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ResolveIpNetEntry2*(
+  Row: PMIB_IPNET_ROW2, SourceAddress: ptr SOCKADDR_INET
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SetIpNetEntry2*(
+  Row: PMIB_IPNET_ROW2
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc NotifyTeredoPortChange*(
+  Callback: PTEREDO_PORT_CHANGE_CALLBACK,
+  CallerContext: PVOID,
+  InitialNotification: BOOLEAN,
+  NotificationHandle: ptr HANDLE,
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetTeredoPort*(
+  Port: ptr USHORT
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc CancelMibChangeNotify2*(
+  NotificationHandle: HANDLE
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
 proc FreeMibTable*(Memory: PVOID): VOID {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc CreateSortedAddressPairs*(SourceAddressList: PSOCKADDR_IN6, SourceAddressCount: ULONG, DestinationAddressList: PSOCKADDR_IN6, DestinationAddressCount: ULONG, AddressSortOptions: ULONG, SortedAddressPairList: ptr PSOCKADDR_IN6_PAIR, SortedAddressPairCount: ptr ULONG): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ConvertInterfaceNameToLuidA*(InterfaceName: ptr CHAR, InterfaceLuid: ptr NET_LUID): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ConvertInterfaceNameToLuidW*(InterfaceName: ptr WCHAR, InterfaceLuid: ptr NET_LUID): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ConvertInterfaceLuidToNameA*(InterfaceLuid: ptr NET_LUID, InterfaceName: PSTR, Length: SIZE_T): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ConvertInterfaceLuidToNameW*(InterfaceLuid: ptr NET_LUID, InterfaceName: PWSTR, Length: SIZE_T): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ConvertInterfaceLuidToIndex*(InterfaceLuid: ptr NET_LUID, InterfaceIndex: PNET_IFINDEX): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ConvertInterfaceIndexToLuid*(InterfaceIndex: NET_IFINDEX, InterfaceLuid: PNET_LUID): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ConvertInterfaceLuidToAlias*(InterfaceLuid: ptr NET_LUID, InterfaceAlias: PWSTR, Length: SIZE_T): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ConvertInterfaceAliasToLuid*(InterfaceAlias: ptr WCHAR, InterfaceLuid: PNET_LUID): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ConvertInterfaceLuidToGuid*(InterfaceLuid: ptr NET_LUID, InterfaceGuid: ptr GUID): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ConvertInterfaceGuidToLuid*(InterfaceGuid: ptr GUID, InterfaceLuid: PNET_LUID): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc if_nametoindex*(InterfaceName: PCSTR): NET_IFINDEX {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc if_indextoname*(InterfaceIndex: NET_IFINDEX, InterfaceName: PCHAR): PCHAR {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetCurrentThreadCompartmentId*(): NET_IF_COMPARTMENT_ID {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetCurrentThreadCompartmentId*(CompartmentId: NET_IF_COMPARTMENT_ID): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetSessionCompartmentId*(SessionId: ULONG): NET_IF_COMPARTMENT_ID {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetSessionCompartmentId*(SessionId: ULONG, CompartmentId: NET_IF_COMPARTMENT_ID): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc GetNetworkInformation*(NetworkGuid: ptr NET_IF_NETWORK_GUID, CompartmentId: PNET_IF_COMPARTMENT_ID, SiteId: PULONG, NetworkName: PWCHAR, Length: ULONG): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc SetNetworkInformation*(NetworkGuid: ptr NET_IF_NETWORK_GUID, CompartmentId: NET_IF_COMPARTMENT_ID, NetworkName: ptr WCHAR): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ConvertLengthToIpv4Mask*(MaskLength: ULONG, Mask: PULONG): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc ConvertIpv4MaskToLength*(Mask: ULONG, MaskLength: PUINT8): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
-proc `SpecificPortBind=`*(self: var MIB_UDPROW_OWNER_MODULE, x: DWORD) {.inline.} = self.union1.struct1.SpecificPortBind = x
-proc SpecificPortBind*(self: MIB_UDPROW_OWNER_MODULE): DWORD {.inline.} = self.union1.struct1.SpecificPortBind
-proc `dwFlags=`*(self: var MIB_UDPROW_OWNER_MODULE, x: DWORD) {.inline.} = self.union1.dwFlags = x
-proc dwFlags*(self: MIB_UDPROW_OWNER_MODULE): DWORD {.inline.} = self.union1.dwFlags
-proc dwFlags*(self: var MIB_UDPROW_OWNER_MODULE): var DWORD {.inline.} = self.union1.dwFlags
-proc `SpecificPortBind=`*(self: var MIB_UDP6ROW_OWNER_MODULE, x: DWORD) {.inline.} = self.union1.struct1.SpecificPortBind = x
-proc SpecificPortBind*(self: MIB_UDP6ROW_OWNER_MODULE): DWORD {.inline.} = self.union1.struct1.SpecificPortBind
-proc `dwFlags=`*(self: var MIB_UDP6ROW_OWNER_MODULE, x: DWORD) {.inline.} = self.union1.dwFlags = x
-proc dwFlags*(self: MIB_UDP6ROW_OWNER_MODULE): DWORD {.inline.} = self.union1.dwFlags
-proc dwFlags*(self: var MIB_UDP6ROW_OWNER_MODULE): var DWORD {.inline.} = self.union1.dwFlags
-proc `ullAlign=`*(self: var MIB_OPAQUE_INFO, x: ULONGLONG) {.inline.} = self.union1.ullAlign = x
-proc ullAlign*(self: MIB_OPAQUE_INFO): ULONGLONG {.inline.} = self.union1.ullAlign
-proc ullAlign*(self: var MIB_OPAQUE_INFO): var ULONGLONG {.inline.} = self.union1.ullAlign
-proc `rgbyData=`*(self: var MIB_OPAQUE_INFO, x: array[1, BYTE]) {.inline.} = self.union1.rgbyData = x
-proc rgbyData*(self: MIB_OPAQUE_INFO): array[1, BYTE] {.inline.} = self.union1.rgbyData
-proc rgbyData*(self: var MIB_OPAQUE_INFO): var array[1, BYTE] {.inline.} = self.union1.rgbyData
-proc `Alignment=`*(self: var IP_ADAPTER_UNICAST_ADDRESS_XP, x: ULONGLONG) {.inline.} = self.union1.Alignment = x
-proc Alignment*(self: IP_ADAPTER_UNICAST_ADDRESS_XP): ULONGLONG {.inline.} = self.union1.Alignment
-proc Alignment*(self: var IP_ADAPTER_UNICAST_ADDRESS_XP): var ULONGLONG {.inline.} = self.union1.Alignment
-proc `Length=`*(self: var IP_ADAPTER_UNICAST_ADDRESS_XP, x: ULONG) {.inline.} = self.union1.struct1.Length = x
-proc `Flags=`*(self: var IP_ADAPTER_UNICAST_ADDRESS_XP, x: DWORD) {.inline.} = self.union1.struct1.Flags = x
-proc `Alignment=`*(self: var IP_ADAPTER_UNICAST_ADDRESS_LH, x: ULONGLONG) {.inline.} = self.union1.Alignment = x
-proc Alignment*(self: IP_ADAPTER_UNICAST_ADDRESS_LH): ULONGLONG {.inline.} = self.union1.Alignment
-proc Alignment*(self: var IP_ADAPTER_UNICAST_ADDRESS_LH): var ULONGLONG {.inline.} = self.union1.Alignment
-proc `Length=`*(self: var IP_ADAPTER_UNICAST_ADDRESS_LH, x: ULONG) {.inline.} = self.union1.struct1.Length = x
-proc `Flags=`*(self: var IP_ADAPTER_UNICAST_ADDRESS_LH, x: DWORD) {.inline.} = self.union1.struct1.Flags = x
-proc `Alignment=`*(self: var IP_ADAPTER_ANYCAST_ADDRESS_XP, x: ULONGLONG) {.inline.} = self.union1.Alignment = x
-proc Alignment*(self: IP_ADAPTER_ANYCAST_ADDRESS_XP): ULONGLONG {.inline.} = self.union1.Alignment
-proc Alignment*(self: var IP_ADAPTER_ANYCAST_ADDRESS_XP): var ULONGLONG {.inline.} = self.union1.Alignment
-proc `Length=`*(self: var IP_ADAPTER_ANYCAST_ADDRESS_XP, x: ULONG) {.inline.} = self.union1.struct1.Length = x
-proc `Flags=`*(self: var IP_ADAPTER_ANYCAST_ADDRESS_XP, x: DWORD) {.inline.} = self.union1.struct1.Flags = x
-proc `Alignment=`*(self: var IP_ADAPTER_MULTICAST_ADDRESS_XP, x: ULONGLONG) {.inline.} = self.union1.Alignment = x
-proc Alignment*(self: IP_ADAPTER_MULTICAST_ADDRESS_XP): ULONGLONG {.inline.} = self.union1.Alignment
-proc Alignment*(self: var IP_ADAPTER_MULTICAST_ADDRESS_XP): var ULONGLONG {.inline.} = self.union1.Alignment
-proc `Length=`*(self: var IP_ADAPTER_MULTICAST_ADDRESS_XP, x: ULONG) {.inline.} = self.union1.struct1.Length = x
-proc `Flags=`*(self: var IP_ADAPTER_MULTICAST_ADDRESS_XP, x: DWORD) {.inline.} = self.union1.struct1.Flags = x
-proc `Alignment=`*(self: var IP_ADAPTER_DNS_SERVER_ADDRESS_XP, x: ULONGLONG) {.inline.} = self.union1.Alignment = x
-proc Alignment*(self: IP_ADAPTER_DNS_SERVER_ADDRESS_XP): ULONGLONG {.inline.} = self.union1.Alignment
-proc Alignment*(self: var IP_ADAPTER_DNS_SERVER_ADDRESS_XP): var ULONGLONG {.inline.} = self.union1.Alignment
-proc `Length=`*(self: var IP_ADAPTER_DNS_SERVER_ADDRESS_XP, x: ULONG) {.inline.} = self.union1.struct1.Length = x
-proc `Reserved=`*(self: var IP_ADAPTER_DNS_SERVER_ADDRESS_XP, x: DWORD) {.inline.} = self.union1.struct1.Reserved = x
-proc `Alignment=`*(self: var IP_ADAPTER_PREFIX_XP, x: ULONGLONG) {.inline.} = self.union1.Alignment = x
-proc Alignment*(self: IP_ADAPTER_PREFIX_XP): ULONGLONG {.inline.} = self.union1.Alignment
-proc Alignment*(self: var IP_ADAPTER_PREFIX_XP): var ULONGLONG {.inline.} = self.union1.Alignment
-proc `Length=`*(self: var IP_ADAPTER_PREFIX_XP, x: ULONG) {.inline.} = self.union1.struct1.Length = x
-proc `Flags=`*(self: var IP_ADAPTER_PREFIX_XP, x: DWORD) {.inline.} = self.union1.struct1.Flags = x
-proc `Alignment=`*(self: var IP_ADAPTER_WINS_SERVER_ADDRESS_LH, x: ULONGLONG) {.inline.} = self.union1.Alignment = x
-proc Alignment*(self: IP_ADAPTER_WINS_SERVER_ADDRESS_LH): ULONGLONG {.inline.} = self.union1.Alignment
-proc Alignment*(self: var IP_ADAPTER_WINS_SERVER_ADDRESS_LH): var ULONGLONG {.inline.} = self.union1.Alignment
-proc `Length=`*(self: var IP_ADAPTER_WINS_SERVER_ADDRESS_LH, x: ULONG) {.inline.} = self.union1.struct1.Length = x
-proc `Reserved=`*(self: var IP_ADAPTER_WINS_SERVER_ADDRESS_LH, x: DWORD) {.inline.} = self.union1.struct1.Reserved = x
-proc `Alignment=`*(self: var IP_ADAPTER_GATEWAY_ADDRESS_LH, x: ULONGLONG) {.inline.} = self.union1.Alignment = x
-proc Alignment*(self: IP_ADAPTER_GATEWAY_ADDRESS_LH): ULONGLONG {.inline.} = self.union1.Alignment
-proc Alignment*(self: var IP_ADAPTER_GATEWAY_ADDRESS_LH): var ULONGLONG {.inline.} = self.union1.Alignment
-proc `Length=`*(self: var IP_ADAPTER_GATEWAY_ADDRESS_LH, x: ULONG) {.inline.} = self.union1.struct1.Length = x
-proc `Reserved=`*(self: var IP_ADAPTER_GATEWAY_ADDRESS_LH, x: DWORD) {.inline.} = self.union1.struct1.Reserved = x
-proc `Alignment=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONGLONG) {.inline.} = self.union1.Alignment = x
-proc Alignment*(self: IP_ADAPTER_ADDRESSES_LH): ULONGLONG {.inline.} = self.union1.Alignment
-proc Alignment*(self: var IP_ADAPTER_ADDRESSES_LH): var ULONGLONG {.inline.} = self.union1.Alignment
-proc `Length=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} = self.union1.struct1.Length = x
-proc `IfIndex=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: IF_INDEX) {.inline.} = self.union1.struct1.IfIndex = x
-proc ifIndex*(self: IP_ADAPTER_ADDRESSES_LH): IF_INDEX {.inline.} = self.union1.struct1.IfIndex
-proc ifIndex*(self: var IP_ADAPTER_ADDRESSES_LH): var IF_INDEX {.inline.} = self.union1.struct1.IfIndex
-proc `Flags=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} = self.union2.Flags = x
-proc `DdnsEnabled=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} = self.union2.struct1.DdnsEnabled = x
-proc DdnsEnabled*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} = self.union2.struct1.DdnsEnabled
-proc `RegisterAdapterSuffix=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} = self.union2.struct1.RegisterAdapterSuffix = x
-proc RegisterAdapterSuffix*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} = self.union2.struct1.RegisterAdapterSuffix
-proc `Dhcpv4Enabled=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} = self.union2.struct1.Dhcpv4Enabled = x
-proc Dhcpv4Enabled*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} = self.union2.struct1.Dhcpv4Enabled
-proc `ReceiveOnly=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} = self.union2.struct1.ReceiveOnly = x
-proc ReceiveOnly*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} = self.union2.struct1.ReceiveOnly
-proc `NoMulticast=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} = self.union2.struct1.NoMulticast = x
-proc NoMulticast*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} = self.union2.struct1.NoMulticast
-proc `Ipv6OtherStatefulConfig=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} = self.union2.struct1.Ipv6OtherStatefulConfig = x
-proc Ipv6OtherStatefulConfig*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} = self.union2.struct1.Ipv6OtherStatefulConfig
-proc `NetbiosOverTcpipEnabled=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} = self.union2.struct1.NetbiosOverTcpipEnabled = x
-proc NetbiosOverTcpipEnabled*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} = self.union2.struct1.NetbiosOverTcpipEnabled
-proc `Ipv4Enabled=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} = self.union2.struct1.Ipv4Enabled = x
-proc Ipv4Enabled*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} = self.union2.struct1.Ipv4Enabled
-proc `Ipv6Enabled=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} = self.union2.struct1.Ipv6Enabled = x
-proc Ipv6Enabled*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} = self.union2.struct1.Ipv6Enabled
-proc `Ipv6ManagedAddressConfigurationSupported=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} = self.union2.struct1.Ipv6ManagedAddressConfigurationSupported = x
-proc Ipv6ManagedAddressConfigurationSupported*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} = self.union2.struct1.Ipv6ManagedAddressConfigurationSupported
-proc `Alignment=`*(self: var IP_ADAPTER_ADDRESSES_XP, x: ULONGLONG) {.inline.} = self.union1.Alignment = x
-proc Alignment*(self: IP_ADAPTER_ADDRESSES_XP): ULONGLONG {.inline.} = self.union1.Alignment
-proc Alignment*(self: var IP_ADAPTER_ADDRESSES_XP): var ULONGLONG {.inline.} = self.union1.Alignment
-proc `Length=`*(self: var IP_ADAPTER_ADDRESSES_XP, x: ULONG) {.inline.} = self.union1.struct1.Length = x
-proc `IfIndex=`*(self: var IP_ADAPTER_ADDRESSES_XP, x: DWORD) {.inline.} = self.union1.struct1.IfIndex = x
-proc ifIndex*(self: IP_ADAPTER_ADDRESSES_XP): DWORD {.inline.} = self.union1.struct1.IfIndex
-proc ifIndex*(self: var IP_ADAPTER_ADDRESSES_XP): var DWORD {.inline.} = self.union1.struct1.IfIndex
-proc `NamedAddress=`*(self: var NET_ADDRESS_INFO, x: NET_ADDRESS_INFO_UNION1_NamedAddress) {.inline.} = self.union1.NamedAddress = x
-proc NamedAddress*(self: NET_ADDRESS_INFO): NET_ADDRESS_INFO_UNION1_NamedAddress {.inline.} = self.union1.NamedAddress
-proc NamedAddress*(self: var NET_ADDRESS_INFO): var NET_ADDRESS_INFO_UNION1_NamedAddress {.inline.} = self.union1.NamedAddress
-proc `Ipv4Address=`*(self: var NET_ADDRESS_INFO, x: SOCKADDR_IN) {.inline.} = self.union1.Ipv4Address = x
-proc ipv4Address*(self: NET_ADDRESS_INFO): SOCKADDR_IN {.inline.} = self.union1.Ipv4Address
-proc ipv4Address*(self: var NET_ADDRESS_INFO): var SOCKADDR_IN {.inline.} = self.union1.Ipv4Address
-proc `Ipv6Address=`*(self: var NET_ADDRESS_INFO, x: SOCKADDR_IN6) {.inline.} = self.union1.Ipv6Address = x
-proc ipv6Address*(self: NET_ADDRESS_INFO): SOCKADDR_IN6 {.inline.} = self.union1.Ipv6Address
-proc ipv6Address*(self: var NET_ADDRESS_INFO): var SOCKADDR_IN6 {.inline.} = self.union1.Ipv6Address
-proc `IpAddress=`*(self: var NET_ADDRESS_INFO, x: SOCKADDR) {.inline.} = self.union1.IpAddress = x
-proc ipAddress*(self: NET_ADDRESS_INFO): SOCKADDR {.inline.} = self.union1.IpAddress
-proc ipAddress*(self: var NET_ADDRESS_INFO): var SOCKADDR {.inline.} = self.union1.IpAddress
-proc `AuthenticationEvent=`*(self: var NDIS_802_11_TEST, x: NDIS_802_11_AUTHENTICATION_EVENT) {.inline.} = self.union1.AuthenticationEvent = x
-proc AuthenticationEvent*(self: NDIS_802_11_TEST): NDIS_802_11_AUTHENTICATION_EVENT {.inline.} = self.union1.AuthenticationEvent
-proc AuthenticationEvent*(self: var NDIS_802_11_TEST): var NDIS_802_11_AUTHENTICATION_EVENT {.inline.} = self.union1.AuthenticationEvent
-proc `RssiTrigger=`*(self: var NDIS_802_11_TEST, x: NDIS_802_11_RSSI) {.inline.} = self.union1.RssiTrigger = x
-proc RssiTrigger*(self: NDIS_802_11_TEST): NDIS_802_11_RSSI {.inline.} = self.union1.RssiTrigger
-proc RssiTrigger*(self: var NDIS_802_11_TEST): var NDIS_802_11_RSSI {.inline.} = self.union1.RssiTrigger
-proc `Oid=`*(self: var NDIS_GUID, x: NDIS_OID) {.inline.} = self.union1.Oid = x
-proc Oid*(self: NDIS_GUID): NDIS_OID {.inline.} = self.union1.Oid
-proc Oid*(self: var NDIS_GUID): var NDIS_OID {.inline.} = self.union1.Oid
-proc `Status=`*(self: var NDIS_GUID, x: NDIS_STATUS) {.inline.} = self.union1.Status = x
-proc Status*(self: NDIS_GUID): NDIS_STATUS {.inline.} = self.union1.Status
-proc Status*(self: var NDIS_GUID): var NDIS_STATUS {.inline.} = self.union1.Status
-proc `RscIPv4=`*(self: var NDIS_OFFLOAD_PARAMETERS, x: UCHAR) {.inline.} = self.struct1.RscIPv4 = x
-proc RscIPv4*(self: NDIS_OFFLOAD_PARAMETERS): UCHAR {.inline.} = self.struct1.RscIPv4
-proc RscIPv4*(self: var NDIS_OFFLOAD_PARAMETERS): var UCHAR {.inline.} = self.struct1.RscIPv4
-proc `RscIPv6=`*(self: var NDIS_OFFLOAD_PARAMETERS, x: UCHAR) {.inline.} = self.struct1.RscIPv6 = x
-proc RscIPv6*(self: NDIS_OFFLOAD_PARAMETERS): UCHAR {.inline.} = self.struct1.RscIPv6
-proc RscIPv6*(self: var NDIS_OFFLOAD_PARAMETERS): var UCHAR {.inline.} = self.struct1.RscIPv6
-proc `EncapsulatedPacketTaskOffload=`*(self: var NDIS_OFFLOAD_PARAMETERS, x: UCHAR) {.inline.} = self.struct2.EncapsulatedPacketTaskOffload = x
-proc EncapsulatedPacketTaskOffload*(self: NDIS_OFFLOAD_PARAMETERS): UCHAR {.inline.} = self.struct2.EncapsulatedPacketTaskOffload
-proc EncapsulatedPacketTaskOffload*(self: var NDIS_OFFLOAD_PARAMETERS): var UCHAR {.inline.} = self.struct2.EncapsulatedPacketTaskOffload
-proc `EncapsulationTypes=`*(self: var NDIS_OFFLOAD_PARAMETERS, x: UCHAR) {.inline.} = self.struct2.EncapsulationTypes = x
-proc `VlanProperties=`*(self: var NDIS_SWITCH_PORT_PROPERTY_VLAN, x: NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_VlanProperties) {.inline.} = self.union1.VlanProperties = x
-proc `SecondaryVlanId=`*(self: var NDIS_SWITCH_PORT_PROPERTY_VLAN, x: UINT16) {.inline.} = self.union1.PvlanProperties.union1.SecondaryVlanId = x
-proc SecondaryVlanId*(self: NDIS_SWITCH_PORT_PROPERTY_VLAN): UINT16 {.inline.} = self.union1.PvlanProperties.union1.SecondaryVlanId
-proc SecondaryVlanId*(self: var NDIS_SWITCH_PORT_PROPERTY_VLAN): var UINT16 {.inline.} = self.union1.PvlanProperties.union1.SecondaryVlanId
-proc `SecondaryVlanIdArray=`*(self: var NDIS_SWITCH_PORT_PROPERTY_VLAN, x: array[64, UINT64]) {.inline.} = self.union1.PvlanProperties.union1.SecondaryVlanIdArray = x
-proc SecondaryVlanIdArray*(self: NDIS_SWITCH_PORT_PROPERTY_VLAN): array[64, UINT64] {.inline.} = self.union1.PvlanProperties.union1.SecondaryVlanIdArray
-proc SecondaryVlanIdArray*(self: var NDIS_SWITCH_PORT_PROPERTY_VLAN): var array[64, UINT64] {.inline.} = self.union1.PvlanProperties.union1.SecondaryVlanIdArray
-proc `PvlanProperties=`*(self: var NDIS_SWITCH_PORT_PROPERTY_VLAN, x: NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_PvlanProperties) {.inline.} = self.union1.PvlanProperties = x
-proc PvlanProperties*(self: NDIS_SWITCH_PORT_PROPERTY_VLAN): NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_PvlanProperties {.inline.} = self.union1.PvlanProperties
-proc PvlanProperties*(self: var NDIS_SWITCH_PORT_PROPERTY_VLAN): var NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_PvlanProperties {.inline.} = self.union1.PvlanProperties
-proc `LastReachable=`*(self: var MIB_IPPATH_ROW, x: ULONG) {.inline.} = self.union1.LastReachable = x
-proc LastReachable*(self: MIB_IPPATH_ROW): ULONG {.inline.} = self.union1.LastReachable
-proc LastReachable*(self: var MIB_IPPATH_ROW): var ULONG {.inline.} = self.union1.LastReachable
-proc `LastUnreachable=`*(self: var MIB_IPPATH_ROW, x: ULONG) {.inline.} = self.union1.LastUnreachable = x
-proc LastUnreachable*(self: MIB_IPPATH_ROW): ULONG {.inline.} = self.union1.LastUnreachable
-proc LastUnreachable*(self: var MIB_IPPATH_ROW): var ULONG {.inline.} = self.union1.LastUnreachable
-proc `IsRouter=`*(self: var MIB_IPNET_ROW2, x: BOOLEAN) {.inline.} = self.union1.struct1.IsRouter = x
-proc IsRouter*(self: MIB_IPNET_ROW2): BOOLEAN {.inline.} = self.union1.struct1.IsRouter
-proc `IsUnreachable=`*(self: var MIB_IPNET_ROW2, x: BOOLEAN) {.inline.} = self.union1.struct1.IsUnreachable = x
-proc IsUnreachable*(self: MIB_IPNET_ROW2): BOOLEAN {.inline.} = self.union1.struct1.IsUnreachable
-proc `Flags=`*(self: var MIB_IPNET_ROW2, x: UCHAR) {.inline.} = self.union1.Flags = x
-proc OnComplete*(self: ptr IConnectionRequestCallback, hrStatus: HRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnComplete(self, hrStatus)
-converter winimConverterIConnectionRequestCallbackToIUnknown*(x: ptr IConnectionRequestCallback): ptr IUnknown = cast[ptr IUnknown](x)
+proc CreateSortedAddressPairs*(
+  SourceAddressList: PSOCKADDR_IN6,
+  SourceAddressCount: ULONG,
+  DestinationAddressList: PSOCKADDR_IN6,
+  DestinationAddressCount: ULONG,
+  AddressSortOptions: ULONG,
+  SortedAddressPairList: ptr PSOCKADDR_IN6_PAIR,
+  SortedAddressPairCount: ptr ULONG,
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ConvertInterfaceNameToLuidA*(
+  InterfaceName: ptr CHAR, InterfaceLuid: ptr NET_LUID
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ConvertInterfaceNameToLuidW*(
+  InterfaceName: ptr WCHAR, InterfaceLuid: ptr NET_LUID
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ConvertInterfaceLuidToNameA*(
+  InterfaceLuid: ptr NET_LUID, InterfaceName: PSTR, Length: SIZE_T
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ConvertInterfaceLuidToNameW*(
+  InterfaceLuid: ptr NET_LUID, InterfaceName: PWSTR, Length: SIZE_T
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ConvertInterfaceLuidToIndex*(
+  InterfaceLuid: ptr NET_LUID, InterfaceIndex: PNET_IFINDEX
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ConvertInterfaceIndexToLuid*(
+  InterfaceIndex: NET_IFINDEX, InterfaceLuid: PNET_LUID
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ConvertInterfaceLuidToAlias*(
+  InterfaceLuid: ptr NET_LUID, InterfaceAlias: PWSTR, Length: SIZE_T
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ConvertInterfaceAliasToLuid*(
+  InterfaceAlias: ptr WCHAR, InterfaceLuid: PNET_LUID
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ConvertInterfaceLuidToGuid*(
+  InterfaceLuid: ptr NET_LUID, InterfaceGuid: ptr GUID
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ConvertInterfaceGuidToLuid*(
+  InterfaceGuid: ptr GUID, InterfaceLuid: PNET_LUID
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc if_nametoindex*(
+  InterfaceName: PCSTR
+): NET_IFINDEX {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc if_indextoname*(
+  InterfaceIndex: NET_IFINDEX, InterfaceName: PCHAR
+): PCHAR {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetCurrentThreadCompartmentId*(): NET_IF_COMPARTMENT_ID {.
+  winapi, stdcall, dynlib: "iphlpapi", importc
+.}
+
+proc SetCurrentThreadCompartmentId*(
+  CompartmentId: NET_IF_COMPARTMENT_ID
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetSessionCompartmentId*(
+  SessionId: ULONG
+): NET_IF_COMPARTMENT_ID {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SetSessionCompartmentId*(
+  SessionId: ULONG, CompartmentId: NET_IF_COMPARTMENT_ID
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc GetNetworkInformation*(
+  NetworkGuid: ptr NET_IF_NETWORK_GUID,
+  CompartmentId: PNET_IF_COMPARTMENT_ID,
+  SiteId: PULONG,
+  NetworkName: PWCHAR,
+  Length: ULONG,
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc SetNetworkInformation*(
+  NetworkGuid: ptr NET_IF_NETWORK_GUID,
+  CompartmentId: NET_IF_COMPARTMENT_ID,
+  NetworkName: ptr WCHAR,
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ConvertLengthToIpv4Mask*(
+  MaskLength: ULONG, Mask: PULONG
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc ConvertIpv4MaskToLength*(
+  Mask: ULONG, MaskLength: PUINT8
+): NETIO_STATUS {.winapi, stdcall, dynlib: "iphlpapi", importc.}
+
+proc `SpecificPortBind=`*(self: var MIB_UDPROW_OWNER_MODULE, x: DWORD) {.inline.} =
+  self.union1.struct1.SpecificPortBind = x
+
+proc SpecificPortBind*(self: MIB_UDPROW_OWNER_MODULE): DWORD {.inline.} =
+  self.union1.struct1.SpecificPortBind
+
+proc `dwFlags=`*(self: var MIB_UDPROW_OWNER_MODULE, x: DWORD) {.inline.} =
+  self.union1.dwFlags = x
+
+proc dwFlags*(self: MIB_UDPROW_OWNER_MODULE): DWORD {.inline.} =
+  self.union1.dwFlags
+
+proc dwFlags*(self: var MIB_UDPROW_OWNER_MODULE): var DWORD {.inline.} =
+  self.union1.dwFlags
+
+proc `SpecificPortBind=`*(self: var MIB_UDP6ROW_OWNER_MODULE, x: DWORD) {.inline.} =
+  self.union1.struct1.SpecificPortBind = x
+
+proc SpecificPortBind*(self: MIB_UDP6ROW_OWNER_MODULE): DWORD {.inline.} =
+  self.union1.struct1.SpecificPortBind
+
+proc `dwFlags=`*(self: var MIB_UDP6ROW_OWNER_MODULE, x: DWORD) {.inline.} =
+  self.union1.dwFlags = x
+
+proc dwFlags*(self: MIB_UDP6ROW_OWNER_MODULE): DWORD {.inline.} =
+  self.union1.dwFlags
+
+proc dwFlags*(self: var MIB_UDP6ROW_OWNER_MODULE): var DWORD {.inline.} =
+  self.union1.dwFlags
+
+proc `ullAlign=`*(self: var MIB_OPAQUE_INFO, x: ULONGLONG) {.inline.} =
+  self.union1.ullAlign = x
+
+proc ullAlign*(self: MIB_OPAQUE_INFO): ULONGLONG {.inline.} =
+  self.union1.ullAlign
+
+proc ullAlign*(self: var MIB_OPAQUE_INFO): var ULONGLONG {.inline.} =
+  self.union1.ullAlign
+
+proc `rgbyData=`*(self: var MIB_OPAQUE_INFO, x: array[1, BYTE]) {.inline.} =
+  self.union1.rgbyData = x
+
+proc rgbyData*(self: MIB_OPAQUE_INFO): array[1, BYTE] {.inline.} =
+  self.union1.rgbyData
+
+proc rgbyData*(self: var MIB_OPAQUE_INFO): var array[1, BYTE] {.inline.} =
+  self.union1.rgbyData
+
+proc `Alignment=`*(self: var IP_ADAPTER_UNICAST_ADDRESS_XP, x: ULONGLONG) {.inline.} =
+  self.union1.Alignment = x
+
+proc Alignment*(self: IP_ADAPTER_UNICAST_ADDRESS_XP): ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc Alignment*(self: var IP_ADAPTER_UNICAST_ADDRESS_XP): var ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc `Length=`*(self: var IP_ADAPTER_UNICAST_ADDRESS_XP, x: ULONG) {.inline.} =
+  self.union1.struct1.Length = x
+
+proc `Flags=`*(self: var IP_ADAPTER_UNICAST_ADDRESS_XP, x: DWORD) {.inline.} =
+  self.union1.struct1.Flags = x
+
+proc `Alignment=`*(self: var IP_ADAPTER_UNICAST_ADDRESS_LH, x: ULONGLONG) {.inline.} =
+  self.union1.Alignment = x
+
+proc Alignment*(self: IP_ADAPTER_UNICAST_ADDRESS_LH): ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc Alignment*(self: var IP_ADAPTER_UNICAST_ADDRESS_LH): var ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc `Length=`*(self: var IP_ADAPTER_UNICAST_ADDRESS_LH, x: ULONG) {.inline.} =
+  self.union1.struct1.Length = x
+
+proc `Flags=`*(self: var IP_ADAPTER_UNICAST_ADDRESS_LH, x: DWORD) {.inline.} =
+  self.union1.struct1.Flags = x
+
+proc `Alignment=`*(self: var IP_ADAPTER_ANYCAST_ADDRESS_XP, x: ULONGLONG) {.inline.} =
+  self.union1.Alignment = x
+
+proc Alignment*(self: IP_ADAPTER_ANYCAST_ADDRESS_XP): ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc Alignment*(self: var IP_ADAPTER_ANYCAST_ADDRESS_XP): var ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc `Length=`*(self: var IP_ADAPTER_ANYCAST_ADDRESS_XP, x: ULONG) {.inline.} =
+  self.union1.struct1.Length = x
+
+proc `Flags=`*(self: var IP_ADAPTER_ANYCAST_ADDRESS_XP, x: DWORD) {.inline.} =
+  self.union1.struct1.Flags = x
+
+proc `Alignment=`*(self: var IP_ADAPTER_MULTICAST_ADDRESS_XP, x: ULONGLONG) {.inline.} =
+  self.union1.Alignment = x
+
+proc Alignment*(self: IP_ADAPTER_MULTICAST_ADDRESS_XP): ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc Alignment*(self: var IP_ADAPTER_MULTICAST_ADDRESS_XP): var ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc `Length=`*(self: var IP_ADAPTER_MULTICAST_ADDRESS_XP, x: ULONG) {.inline.} =
+  self.union1.struct1.Length = x
+
+proc `Flags=`*(self: var IP_ADAPTER_MULTICAST_ADDRESS_XP, x: DWORD) {.inline.} =
+  self.union1.struct1.Flags = x
+
+proc `Alignment=`*(
+    self: var IP_ADAPTER_DNS_SERVER_ADDRESS_XP, x: ULONGLONG
+) {.inline.} =
+  self.union1.Alignment = x
+
+proc Alignment*(self: IP_ADAPTER_DNS_SERVER_ADDRESS_XP): ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc Alignment*(self: var IP_ADAPTER_DNS_SERVER_ADDRESS_XP): var ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc `Length=`*(self: var IP_ADAPTER_DNS_SERVER_ADDRESS_XP, x: ULONG) {.inline.} =
+  self.union1.struct1.Length = x
+
+proc `Reserved=`*(self: var IP_ADAPTER_DNS_SERVER_ADDRESS_XP, x: DWORD) {.inline.} =
+  self.union1.struct1.Reserved = x
+
+proc `Alignment=`*(self: var IP_ADAPTER_PREFIX_XP, x: ULONGLONG) {.inline.} =
+  self.union1.Alignment = x
+
+proc Alignment*(self: IP_ADAPTER_PREFIX_XP): ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc Alignment*(self: var IP_ADAPTER_PREFIX_XP): var ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc `Length=`*(self: var IP_ADAPTER_PREFIX_XP, x: ULONG) {.inline.} =
+  self.union1.struct1.Length = x
+
+proc `Flags=`*(self: var IP_ADAPTER_PREFIX_XP, x: DWORD) {.inline.} =
+  self.union1.struct1.Flags = x
+
+proc `Alignment=`*(
+    self: var IP_ADAPTER_WINS_SERVER_ADDRESS_LH, x: ULONGLONG
+) {.inline.} =
+  self.union1.Alignment = x
+
+proc Alignment*(self: IP_ADAPTER_WINS_SERVER_ADDRESS_LH): ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc Alignment*(self: var IP_ADAPTER_WINS_SERVER_ADDRESS_LH): var ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc `Length=`*(self: var IP_ADAPTER_WINS_SERVER_ADDRESS_LH, x: ULONG) {.inline.} =
+  self.union1.struct1.Length = x
+
+proc `Reserved=`*(self: var IP_ADAPTER_WINS_SERVER_ADDRESS_LH, x: DWORD) {.inline.} =
+  self.union1.struct1.Reserved = x
+
+proc `Alignment=`*(self: var IP_ADAPTER_GATEWAY_ADDRESS_LH, x: ULONGLONG) {.inline.} =
+  self.union1.Alignment = x
+
+proc Alignment*(self: IP_ADAPTER_GATEWAY_ADDRESS_LH): ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc Alignment*(self: var IP_ADAPTER_GATEWAY_ADDRESS_LH): var ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc `Length=`*(self: var IP_ADAPTER_GATEWAY_ADDRESS_LH, x: ULONG) {.inline.} =
+  self.union1.struct1.Length = x
+
+proc `Reserved=`*(self: var IP_ADAPTER_GATEWAY_ADDRESS_LH, x: DWORD) {.inline.} =
+  self.union1.struct1.Reserved = x
+
+proc `Alignment=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONGLONG) {.inline.} =
+  self.union1.Alignment = x
+
+proc Alignment*(self: IP_ADAPTER_ADDRESSES_LH): ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc Alignment*(self: var IP_ADAPTER_ADDRESSES_LH): var ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc `Length=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} =
+  self.union1.struct1.Length = x
+
+proc `IfIndex=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: IF_INDEX) {.inline.} =
+  self.union1.struct1.IfIndex = x
+
+proc ifIndex*(self: IP_ADAPTER_ADDRESSES_LH): IF_INDEX {.inline.} =
+  self.union1.struct1.IfIndex
+
+proc ifIndex*(self: var IP_ADAPTER_ADDRESSES_LH): var IF_INDEX {.inline.} =
+  self.union1.struct1.IfIndex
+
+proc `Flags=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} =
+  self.union2.Flags = x
+
+proc `DdnsEnabled=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} =
+  self.union2.struct1.DdnsEnabled = x
+
+proc DdnsEnabled*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} =
+  self.union2.struct1.DdnsEnabled
+
+proc `RegisterAdapterSuffix=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} =
+  self.union2.struct1.RegisterAdapterSuffix = x
+
+proc RegisterAdapterSuffix*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} =
+  self.union2.struct1.RegisterAdapterSuffix
+
+proc `Dhcpv4Enabled=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} =
+  self.union2.struct1.Dhcpv4Enabled = x
+
+proc Dhcpv4Enabled*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} =
+  self.union2.struct1.Dhcpv4Enabled
+
+proc `ReceiveOnly=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} =
+  self.union2.struct1.ReceiveOnly = x
+
+proc ReceiveOnly*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} =
+  self.union2.struct1.ReceiveOnly
+
+proc `NoMulticast=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} =
+  self.union2.struct1.NoMulticast = x
+
+proc NoMulticast*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} =
+  self.union2.struct1.NoMulticast
+
+proc `Ipv6OtherStatefulConfig=`*(
+    self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG
+) {.inline.} =
+  self.union2.struct1.Ipv6OtherStatefulConfig = x
+
+proc Ipv6OtherStatefulConfig*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} =
+  self.union2.struct1.Ipv6OtherStatefulConfig
+
+proc `NetbiosOverTcpipEnabled=`*(
+    self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG
+) {.inline.} =
+  self.union2.struct1.NetbiosOverTcpipEnabled = x
+
+proc NetbiosOverTcpipEnabled*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} =
+  self.union2.struct1.NetbiosOverTcpipEnabled
+
+proc `Ipv4Enabled=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} =
+  self.union2.struct1.Ipv4Enabled = x
+
+proc Ipv4Enabled*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} =
+  self.union2.struct1.Ipv4Enabled
+
+proc `Ipv6Enabled=`*(self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG) {.inline.} =
+  self.union2.struct1.Ipv6Enabled = x
+
+proc Ipv6Enabled*(self: IP_ADAPTER_ADDRESSES_LH): ULONG {.inline.} =
+  self.union2.struct1.Ipv6Enabled
+
+proc `Ipv6ManagedAddressConfigurationSupported=`*(
+    self: var IP_ADAPTER_ADDRESSES_LH, x: ULONG
+) {.inline.} =
+  self.union2.struct1.Ipv6ManagedAddressConfigurationSupported = x
+
+proc Ipv6ManagedAddressConfigurationSupported*(
+    self: IP_ADAPTER_ADDRESSES_LH
+): ULONG {.inline.} =
+  self.union2.struct1.Ipv6ManagedAddressConfigurationSupported
+
+proc `Alignment=`*(self: var IP_ADAPTER_ADDRESSES_XP, x: ULONGLONG) {.inline.} =
+  self.union1.Alignment = x
+
+proc Alignment*(self: IP_ADAPTER_ADDRESSES_XP): ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc Alignment*(self: var IP_ADAPTER_ADDRESSES_XP): var ULONGLONG {.inline.} =
+  self.union1.Alignment
+
+proc `Length=`*(self: var IP_ADAPTER_ADDRESSES_XP, x: ULONG) {.inline.} =
+  self.union1.struct1.Length = x
+
+proc `IfIndex=`*(self: var IP_ADAPTER_ADDRESSES_XP, x: DWORD) {.inline.} =
+  self.union1.struct1.IfIndex = x
+
+proc ifIndex*(self: IP_ADAPTER_ADDRESSES_XP): DWORD {.inline.} =
+  self.union1.struct1.IfIndex
+
+proc ifIndex*(self: var IP_ADAPTER_ADDRESSES_XP): var DWORD {.inline.} =
+  self.union1.struct1.IfIndex
+
+proc `NamedAddress=`*(
+    self: var NET_ADDRESS_INFO, x: NET_ADDRESS_INFO_UNION1_NamedAddress
+) {.inline.} =
+  self.union1.NamedAddress = x
+
+proc NamedAddress*(
+    self: NET_ADDRESS_INFO
+): NET_ADDRESS_INFO_UNION1_NamedAddress {.inline.} =
+  self.union1.NamedAddress
+
+proc NamedAddress*(
+    self: var NET_ADDRESS_INFO
+): var NET_ADDRESS_INFO_UNION1_NamedAddress {.inline.} =
+  self.union1.NamedAddress
+
+proc `Ipv4Address=`*(self: var NET_ADDRESS_INFO, x: SOCKADDR_IN) {.inline.} =
+  self.union1.Ipv4Address = x
+
+proc ipv4Address*(self: NET_ADDRESS_INFO): SOCKADDR_IN {.inline.} =
+  self.union1.Ipv4Address
+
+proc ipv4Address*(self: var NET_ADDRESS_INFO): var SOCKADDR_IN {.inline.} =
+  self.union1.Ipv4Address
+
+proc `Ipv6Address=`*(self: var NET_ADDRESS_INFO, x: SOCKADDR_IN6) {.inline.} =
+  self.union1.Ipv6Address = x
+
+proc ipv6Address*(self: NET_ADDRESS_INFO): SOCKADDR_IN6 {.inline.} =
+  self.union1.Ipv6Address
+
+proc ipv6Address*(self: var NET_ADDRESS_INFO): var SOCKADDR_IN6 {.inline.} =
+  self.union1.Ipv6Address
+
+proc `IpAddress=`*(self: var NET_ADDRESS_INFO, x: SOCKADDR) {.inline.} =
+  self.union1.IpAddress = x
+
+proc ipAddress*(self: NET_ADDRESS_INFO): SOCKADDR {.inline.} =
+  self.union1.IpAddress
+
+proc ipAddress*(self: var NET_ADDRESS_INFO): var SOCKADDR {.inline.} =
+  self.union1.IpAddress
+
+proc `AuthenticationEvent=`*(
+    self: var NDIS_802_11_TEST, x: NDIS_802_11_AUTHENTICATION_EVENT
+) {.inline.} =
+  self.union1.AuthenticationEvent = x
+
+proc AuthenticationEvent*(
+    self: NDIS_802_11_TEST
+): NDIS_802_11_AUTHENTICATION_EVENT {.inline.} =
+  self.union1.AuthenticationEvent
+
+proc AuthenticationEvent*(
+    self: var NDIS_802_11_TEST
+): var NDIS_802_11_AUTHENTICATION_EVENT {.inline.} =
+  self.union1.AuthenticationEvent
+
+proc `RssiTrigger=`*(self: var NDIS_802_11_TEST, x: NDIS_802_11_RSSI) {.inline.} =
+  self.union1.RssiTrigger = x
+
+proc RssiTrigger*(self: NDIS_802_11_TEST): NDIS_802_11_RSSI {.inline.} =
+  self.union1.RssiTrigger
+
+proc RssiTrigger*(self: var NDIS_802_11_TEST): var NDIS_802_11_RSSI {.inline.} =
+  self.union1.RssiTrigger
+
+proc `Oid=`*(self: var NDIS_GUID, x: NDIS_OID) {.inline.} =
+  self.union1.Oid = x
+
+proc Oid*(self: NDIS_GUID): NDIS_OID {.inline.} =
+  self.union1.Oid
+
+proc Oid*(self: var NDIS_GUID): var NDIS_OID {.inline.} =
+  self.union1.Oid
+
+proc `Status=`*(self: var NDIS_GUID, x: NDIS_STATUS) {.inline.} =
+  self.union1.Status = x
+
+proc Status*(self: NDIS_GUID): NDIS_STATUS {.inline.} =
+  self.union1.Status
+
+proc Status*(self: var NDIS_GUID): var NDIS_STATUS {.inline.} =
+  self.union1.Status
+
+proc `RscIPv4=`*(self: var NDIS_OFFLOAD_PARAMETERS, x: UCHAR) {.inline.} =
+  self.struct1.RscIPv4 = x
+
+proc RscIPv4*(self: NDIS_OFFLOAD_PARAMETERS): UCHAR {.inline.} =
+  self.struct1.RscIPv4
+
+proc RscIPv4*(self: var NDIS_OFFLOAD_PARAMETERS): var UCHAR {.inline.} =
+  self.struct1.RscIPv4
+
+proc `RscIPv6=`*(self: var NDIS_OFFLOAD_PARAMETERS, x: UCHAR) {.inline.} =
+  self.struct1.RscIPv6 = x
+
+proc RscIPv6*(self: NDIS_OFFLOAD_PARAMETERS): UCHAR {.inline.} =
+  self.struct1.RscIPv6
+
+proc RscIPv6*(self: var NDIS_OFFLOAD_PARAMETERS): var UCHAR {.inline.} =
+  self.struct1.RscIPv6
+
+proc `EncapsulatedPacketTaskOffload=`*(
+    self: var NDIS_OFFLOAD_PARAMETERS, x: UCHAR
+) {.inline.} =
+  self.struct2.EncapsulatedPacketTaskOffload = x
+
+proc EncapsulatedPacketTaskOffload*(self: NDIS_OFFLOAD_PARAMETERS): UCHAR {.inline.} =
+  self.struct2.EncapsulatedPacketTaskOffload
+
+proc EncapsulatedPacketTaskOffload*(
+    self: var NDIS_OFFLOAD_PARAMETERS
+): var UCHAR {.inline.} =
+  self.struct2.EncapsulatedPacketTaskOffload
+
+proc `EncapsulationTypes=`*(self: var NDIS_OFFLOAD_PARAMETERS, x: UCHAR) {.inline.} =
+  self.struct2.EncapsulationTypes = x
+
+proc `VlanProperties=`*(
+    self: var NDIS_SWITCH_PORT_PROPERTY_VLAN,
+    x: NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_VlanProperties,
+) {.inline.} =
+  self.union1.VlanProperties = x
+
+proc `SecondaryVlanId=`*(
+    self: var NDIS_SWITCH_PORT_PROPERTY_VLAN, x: UINT16
+) {.inline.} =
+  self.union1.PvlanProperties.union1.SecondaryVlanId = x
+
+proc SecondaryVlanId*(self: NDIS_SWITCH_PORT_PROPERTY_VLAN): UINT16 {.inline.} =
+  self.union1.PvlanProperties.union1.SecondaryVlanId
+
+proc SecondaryVlanId*(self: var NDIS_SWITCH_PORT_PROPERTY_VLAN): var UINT16 {.inline.} =
+  self.union1.PvlanProperties.union1.SecondaryVlanId
+
+proc `SecondaryVlanIdArray=`*(
+    self: var NDIS_SWITCH_PORT_PROPERTY_VLAN, x: array[64, UINT64]
+) {.inline.} =
+  self.union1.PvlanProperties.union1.SecondaryVlanIdArray = x
+
+proc SecondaryVlanIdArray*(
+    self: NDIS_SWITCH_PORT_PROPERTY_VLAN
+): array[64, UINT64] {.inline.} =
+  self.union1.PvlanProperties.union1.SecondaryVlanIdArray
+
+proc SecondaryVlanIdArray*(
+    self: var NDIS_SWITCH_PORT_PROPERTY_VLAN
+): var array[64, UINT64] {.inline.} =
+  self.union1.PvlanProperties.union1.SecondaryVlanIdArray
+
+proc `PvlanProperties=`*(
+    self: var NDIS_SWITCH_PORT_PROPERTY_VLAN,
+    x: NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_PvlanProperties,
+) {.inline.} =
+  self.union1.PvlanProperties = x
+
+proc PvlanProperties*(
+    self: NDIS_SWITCH_PORT_PROPERTY_VLAN
+): NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_PvlanProperties {.inline.} =
+  self.union1.PvlanProperties
+
+proc PvlanProperties*(
+    self: var NDIS_SWITCH_PORT_PROPERTY_VLAN
+): var NDIS_SWITCH_PORT_PROPERTY_VLAN_UNION1_PvlanProperties {.inline.} =
+  self.union1.PvlanProperties
+
+proc `LastReachable=`*(self: var MIB_IPPATH_ROW, x: ULONG) {.inline.} =
+  self.union1.LastReachable = x
+
+proc LastReachable*(self: MIB_IPPATH_ROW): ULONG {.inline.} =
+  self.union1.LastReachable
+
+proc LastReachable*(self: var MIB_IPPATH_ROW): var ULONG {.inline.} =
+  self.union1.LastReachable
+
+proc `LastUnreachable=`*(self: var MIB_IPPATH_ROW, x: ULONG) {.inline.} =
+  self.union1.LastUnreachable = x
+
+proc LastUnreachable*(self: MIB_IPPATH_ROW): ULONG {.inline.} =
+  self.union1.LastUnreachable
+
+proc LastUnreachable*(self: var MIB_IPPATH_ROW): var ULONG {.inline.} =
+  self.union1.LastUnreachable
+
+proc `IsRouter=`*(self: var MIB_IPNET_ROW2, x: BOOLEAN) {.inline.} =
+  self.union1.struct1.IsRouter = x
+
+proc IsRouter*(self: MIB_IPNET_ROW2): BOOLEAN {.inline.} =
+  self.union1.struct1.IsRouter
+
+proc `IsUnreachable=`*(self: var MIB_IPNET_ROW2, x: BOOLEAN) {.inline.} =
+  self.union1.struct1.IsUnreachable = x
+
+proc IsUnreachable*(self: MIB_IPNET_ROW2): BOOLEAN {.inline.} =
+  self.union1.struct1.IsUnreachable
+
+proc `Flags=`*(self: var MIB_IPNET_ROW2, x: UCHAR) {.inline.} =
+  self.union1.Flags = x
+
+proc OnComplete*(
+    self: ptr IConnectionRequestCallback, hrStatus: HRESULT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnComplete(self, hrStatus)
+
+converter winimConverterIConnectionRequestCallbackToIUnknown*(
+    x: ptr IConnectionRequestCallback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
 when winimCpu64:
   type
     IP_OPTION_INFORMATION32* {.pure.} = object
@@ -6084,6 +7530,7 @@
       Flags*: UCHAR
       OptionsSize*: UCHAR
       OptionsData*: ptr UCHAR
+
     PIP_OPTION_INFORMATION32* = ptr IP_OPTION_INFORMATION32
     ICMP_ECHO_REPLY32* {.pure.} = object
       Address*: IPAddr
@@ -6093,4 +7540,5 @@
       Reserved*: USHORT
       Data*: pointer
       Options*: IP_OPTION_INFORMATION32
+
     PICMP_ECHO_REPLY32* = ptr ICMP_ECHO_REPLY32
--- a/semicongine/thirdparty/winim/winim/inc/lm.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/lm.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -46,16 +46,16 @@
   LMSTR* = LPWSTR
   LMCSTR* = LPCWSTR
   NET_API_STATUS* = DWORD
+
 when winimUnicode:
-  type
-    DESC_CHAR* = WCHAR
+  type DESC_CHAR* = WCHAR
 when winimAnsi:
-  type
-    DESC_CHAR* = CHAR
+  type DESC_CHAR* = CHAR
 type
   API_RET_TYPE* = NET_API_STATUS
   USER_INFO_0* {.pure.} = object
     usri0_name*: LPWSTR
+
   PUSER_INFO_0* = ptr USER_INFO_0
   LPUSER_INFO_0* = ptr USER_INFO_0
   USER_INFO_1* {.pure.} = object
@@ -67,6 +67,7 @@
     usri1_comment*: LPWSTR
     usri1_flags*: DWORD
     usri1_script_path*: LPWSTR
+
   PUSER_INFO_1* = ptr USER_INFO_1
   LPUSER_INFO_1* = ptr USER_INFO_1
   USER_INFO_2* {.pure.} = object
@@ -94,6 +95,7 @@
     usri2_logon_server*: LPWSTR
     usri2_country_code*: DWORD
     usri2_code_page*: DWORD
+
   PUSER_INFO_2* = ptr USER_INFO_2
   LPUSER_INFO_2* = ptr USER_INFO_2
   USER_INFO_3* {.pure.} = object
@@ -126,6 +128,7 @@
     usri3_profile*: LPWSTR
     usri3_home_dir_drive*: LPWSTR
     usri3_password_expired*: DWORD
+
   PUSER_INFO_3* = ptr USER_INFO_3
   LPUSER_INFO_3* = ptr USER_INFO_3
   USER_INFO_4* {.pure.} = object
@@ -158,6 +161,7 @@
     usri4_profile*: LPWSTR
     usri4_home_dir_drive*: LPWSTR
     usri4_password_expired*: DWORD
+
   PUSER_INFO_4* = ptr USER_INFO_4
   LPUSER_INFO_4* = ptr USER_INFO_4
   USER_INFO_10* {.pure.} = object
@@ -165,6 +169,7 @@
     usri10_comment*: LPWSTR
     usri10_usr_comment*: LPWSTR
     usri10_full_name*: LPWSTR
+
   PUSER_INFO_10* = ptr USER_INFO_10
   LPUSER_INFO_10* = ptr USER_INFO_10
   USER_INFO_11* {.pure.} = object
@@ -188,6 +193,7 @@
     usri11_units_per_week*: DWORD
     usri11_logon_hours*: PBYTE
     usri11_code_page*: DWORD
+
   PUSER_INFO_11* = ptr USER_INFO_11
   LPUSER_INFO_11* = ptr USER_INFO_11
   USER_INFO_20* {.pure.} = object
@@ -196,13 +202,15 @@
     usri20_comment*: LPWSTR
     usri20_flags*: DWORD
     usri20_user_id*: DWORD
+
   PUSER_INFO_20* = ptr USER_INFO_20
   LPUSER_INFO_20* = ptr USER_INFO_20
-const
-  ENCRYPTED_PWLEN* = 16
+
+const ENCRYPTED_PWLEN* = 16
 type
   USER_INFO_21* {.pure.} = object
     usri21_password*: array[ENCRYPTED_PWLEN, BYTE]
+
   PUSER_INFO_21* = ptr USER_INFO_21
   LPUSER_INFO_21* = ptr USER_INFO_21
   USER_INFO_22* {.pure.} = object
@@ -230,6 +238,7 @@
     usri22_logon_server*: LPWSTR
     usri22_country_code*: DWORD
     usri22_code_page*: DWORD
+
   PUSER_INFO_22* = ptr USER_INFO_22
   LPUSER_INFO_22* = ptr USER_INFO_22
   USER_INFO_23* {.pure.} = object
@@ -238,6 +247,7 @@
     usri23_comment*: LPWSTR
     usri23_flags*: DWORD
     usri23_user_sid*: PSID
+
   PUSER_INFO_23* = ptr USER_INFO_23
   LPUSER_INFO_23* = ptr USER_INFO_23
   USER_INFO_24* {.pure.} = object
@@ -246,87 +256,108 @@
     usri24_internet_provider_name*: LPWSTR
     usri24_internet_principal_name*: LPWSTR
     usri24_user_sid*: PSID
+
   PUSER_INFO_24* = ptr USER_INFO_24
   LPUSER_INFO_24* = ptr USER_INFO_24
   USER_INFO_1003* {.pure.} = object
     usri1003_password*: LPWSTR
+
   PUSER_INFO_1003* = ptr USER_INFO_1003
   LPUSER_INFO_1003* = ptr USER_INFO_1003
   USER_INFO_1005* {.pure.} = object
     usri1005_priv*: DWORD
+
   PUSER_INFO_1005* = ptr USER_INFO_1005
   LPUSER_INFO_1005* = ptr USER_INFO_1005
   USER_INFO_1006* {.pure.} = object
     usri1006_home_dir*: LPWSTR
+
   PUSER_INFO_1006* = ptr USER_INFO_1006
   LPUSER_INFO_1006* = ptr USER_INFO_1006
   USER_INFO_1007* {.pure.} = object
     usri1007_comment*: LPWSTR
+
   PUSER_INFO_1007* = ptr USER_INFO_1007
   LPUSER_INFO_1007* = ptr USER_INFO_1007
   USER_INFO_1008* {.pure.} = object
     usri1008_flags*: DWORD
+
   PUSER_INFO_1008* = ptr USER_INFO_1008
   LPUSER_INFO_1008* = ptr USER_INFO_1008
   USER_INFO_1009* {.pure.} = object
     usri1009_script_path*: LPWSTR
+
   PUSER_INFO_1009* = ptr USER_INFO_1009
   LPUSER_INFO_1009* = ptr USER_INFO_1009
   USER_INFO_1010* {.pure.} = object
     usri1010_auth_flags*: DWORD
+
   PUSER_INFO_1010* = ptr USER_INFO_1010
   LPUSER_INFO_1010* = ptr USER_INFO_1010
   USER_INFO_1011* {.pure.} = object
     usri1011_full_name*: LPWSTR
+
   PUSER_INFO_1011* = ptr USER_INFO_1011
   LPUSER_INFO_1011* = ptr USER_INFO_1011
   USER_INFO_1012* {.pure.} = object
     usri1012_usr_comment*: LPWSTR
+
   PUSER_INFO_1012* = ptr USER_INFO_1012
   LPUSER_INFO_1012* = ptr USER_INFO_1012
   USER_INFO_1013* {.pure.} = object
     usri1013_parms*: LPWSTR
+
   PUSER_INFO_1013* = ptr USER_INFO_1013
   LPUSER_INFO_1013* = ptr USER_INFO_1013
   USER_INFO_1014* {.pure.} = object
     usri1014_workstations*: LPWSTR
+
   PUSER_INFO_1014* = ptr USER_INFO_1014
   LPUSER_INFO_1014* = ptr USER_INFO_1014
   USER_INFO_1017* {.pure.} = object
     usri1017_acct_expires*: DWORD
+
   PUSER_INFO_1017* = ptr USER_INFO_1017
   LPUSER_INFO_1017* = ptr USER_INFO_1017
   USER_INFO_1018* {.pure.} = object
     usri1018_max_storage*: DWORD
+
   PUSER_INFO_1018* = ptr USER_INFO_1018
   LPUSER_INFO_1018* = ptr USER_INFO_1018
   USER_INFO_1020* {.pure.} = object
     usri1020_units_per_week*: DWORD
     usri1020_logon_hours*: LPBYTE
+
   PUSER_INFO_1020* = ptr USER_INFO_1020
   LPUSER_INFO_1020* = ptr USER_INFO_1020
   USER_INFO_1023* {.pure.} = object
     usri1023_logon_server*: LPWSTR
+
   PUSER_INFO_1023* = ptr USER_INFO_1023
   LPUSER_INFO_1023* = ptr USER_INFO_1023
   USER_INFO_1024* {.pure.} = object
     usri1024_country_code*: DWORD
+
   PUSER_INFO_1024* = ptr USER_INFO_1024
   LPUSER_INFO_1024* = ptr USER_INFO_1024
   USER_INFO_1025* {.pure.} = object
     usri1025_code_page*: DWORD
+
   PUSER_INFO_1025* = ptr USER_INFO_1025
   LPUSER_INFO_1025* = ptr USER_INFO_1025
   USER_INFO_1051* {.pure.} = object
     usri1051_primary_group_id*: DWORD
+
   PUSER_INFO_1051* = ptr USER_INFO_1051
   LPUSER_INFO_1051* = ptr USER_INFO_1051
   USER_INFO_1052* {.pure.} = object
     usri1052_profile*: LPWSTR
+
   PUSER_INFO_1052* = ptr USER_INFO_1052
   LPUSER_INFO_1052* = ptr USER_INFO_1052
   USER_INFO_1053* {.pure.} = object
     usri1053_home_dir_drive*: LPWSTR
+
   PUSER_INFO_1053* = ptr USER_INFO_1053
   LPUSER_INFO_1053* = ptr USER_INFO_1053
   USER_MODALS_INFO_0* {.pure.} = object
@@ -335,59 +366,72 @@
     usrmod0_min_passwd_age*: DWORD
     usrmod0_force_logoff*: DWORD
     usrmod0_password_hist_len*: DWORD
+
   PUSER_MODALS_INFO_0* = ptr USER_MODALS_INFO_0
   LPUSER_MODALS_INFO_0* = ptr USER_MODALS_INFO_0
   USER_MODALS_INFO_1* {.pure.} = object
     usrmod1_role*: DWORD
     usrmod1_primary*: LPWSTR
+
   PUSER_MODALS_INFO_1* = ptr USER_MODALS_INFO_1
   LPUSER_MODALS_INFO_1* = ptr USER_MODALS_INFO_1
   USER_MODALS_INFO_2* {.pure.} = object
     usrmod2_domain_name*: LPWSTR
     usrmod2_domain_id*: PSID
+
   PUSER_MODALS_INFO_2* = ptr USER_MODALS_INFO_2
   LPUSER_MODALS_INFO_2* = ptr USER_MODALS_INFO_2
   USER_MODALS_INFO_3* {.pure.} = object
     usrmod3_lockout_duration*: DWORD
     usrmod3_lockout_observation_window*: DWORD
     usrmod3_lockout_threshold*: DWORD
+
   PUSER_MODALS_INFO_3* = ptr USER_MODALS_INFO_3
   LPUSER_MODALS_INFO_3* = ptr USER_MODALS_INFO_3
   USER_MODALS_INFO_1001* {.pure.} = object
     usrmod1001_min_passwd_len*: DWORD
+
   PUSER_MODALS_INFO_1001* = ptr USER_MODALS_INFO_1001
   LPUSER_MODALS_INFO_1001* = ptr USER_MODALS_INFO_1001
   USER_MODALS_INFO_1002* {.pure.} = object
     usrmod1002_max_passwd_age*: DWORD
+
   PUSER_MODALS_INFO_1002* = ptr USER_MODALS_INFO_1002
   LPUSER_MODALS_INFO_1002* = ptr USER_MODALS_INFO_1002
   USER_MODALS_INFO_1003* {.pure.} = object
     usrmod1003_min_passwd_age*: DWORD
+
   PUSER_MODALS_INFO_1003* = ptr USER_MODALS_INFO_1003
   LPUSER_MODALS_INFO_1003* = ptr USER_MODALS_INFO_1003
   USER_MODALS_INFO_1004* {.pure.} = object
     usrmod1004_force_logoff*: DWORD
+
   PUSER_MODALS_INFO_1004* = ptr USER_MODALS_INFO_1004
   LPUSER_MODALS_INFO_1004* = ptr USER_MODALS_INFO_1004
   USER_MODALS_INFO_1005* {.pure.} = object
     usrmod1005_password_hist_len*: DWORD
+
   PUSER_MODALS_INFO_1005* = ptr USER_MODALS_INFO_1005
   LPUSER_MODALS_INFO_1005* = ptr USER_MODALS_INFO_1005
   USER_MODALS_INFO_1006* {.pure.} = object
     usrmod1006_role*: DWORD
+
   PUSER_MODALS_INFO_1006* = ptr USER_MODALS_INFO_1006
   LPUSER_MODALS_INFO_1006* = ptr USER_MODALS_INFO_1006
   USER_MODALS_INFO_1007* {.pure.} = object
     usrmod1007_primary*: LPWSTR
+
   PUSER_MODALS_INFO_1007* = ptr USER_MODALS_INFO_1007
   LPUSER_MODALS_INFO_1007* = ptr USER_MODALS_INFO_1007
   GROUP_INFO_0* {.pure.} = object
     grpi0_name*: LPWSTR
+
   PGROUP_INFO_0* = ptr GROUP_INFO_0
   LPGROUP_INFO_0* = ptr GROUP_INFO_0
   GROUP_INFO_1* {.pure.} = object
     grpi1_name*: LPWSTR
     grpi1_comment*: LPWSTR
+
   PGROUP_INFO_1* = ptr GROUP_INFO_1
   LPGROUP_INFO_1* = ptr GROUP_INFO_1
   GROUP_INFO_2* {.pure.} = object
@@ -395,65 +439,79 @@
     grpi2_comment*: LPWSTR
     grpi2_group_id*: DWORD
     grpi2_attributes*: DWORD
+
   PGROUP_INFO_2* = ptr GROUP_INFO_2
   GROUP_INFO_3* {.pure.} = object
     grpi3_name*: LPWSTR
     grpi3_comment*: LPWSTR
     grpi3_group_sid*: PSID
     grpi3_attributes*: DWORD
+
   PGROUP_INFO_3* = ptr GROUP_INFO_3
   GROUP_INFO_1002* {.pure.} = object
     grpi1002_comment*: LPWSTR
+
   PGROUP_INFO_1002* = ptr GROUP_INFO_1002
   LPGROUP_INFO_1002* = ptr GROUP_INFO_1002
   GROUP_INFO_1005* {.pure.} = object
     grpi1005_attributes*: DWORD
+
   PGROUP_INFO_1005* = ptr GROUP_INFO_1005
   LPGROUP_INFO_1005* = ptr GROUP_INFO_1005
   GROUP_USERS_INFO_0* {.pure.} = object
     grui0_name*: LPWSTR
+
   PGROUP_USERS_INFO_0* = ptr GROUP_USERS_INFO_0
   LPGROUP_USERS_INFO_0* = ptr GROUP_USERS_INFO_0
   GROUP_USERS_INFO_1* {.pure.} = object
     grui1_name*: LPWSTR
     grui1_attributes*: DWORD
+
   PGROUP_USERS_INFO_1* = ptr GROUP_USERS_INFO_1
   LPGROUP_USERS_INFO_1* = ptr GROUP_USERS_INFO_1
   LOCALGROUP_INFO_0* {.pure.} = object
     lgrpi0_name*: LPWSTR
+
   PLOCALGROUP_INFO_0* = ptr LOCALGROUP_INFO_0
   LPLOCALGROUP_INFO_0* = ptr LOCALGROUP_INFO_0
   LOCALGROUP_INFO_1* {.pure.} = object
     lgrpi1_name*: LPWSTR
     lgrpi1_comment*: LPWSTR
+
   PLOCALGROUP_INFO_1* = ptr LOCALGROUP_INFO_1
   LPLOCALGROUP_INFO_1* = ptr LOCALGROUP_INFO_1
   LOCALGROUP_INFO_1002* {.pure.} = object
     lgrpi1002_comment*: LPWSTR
+
   PLOCALGROUP_INFO_1002* = ptr LOCALGROUP_INFO_1002
   LPLOCALGROUP_INFO_1002* = ptr LOCALGROUP_INFO_1002
   LOCALGROUP_MEMBERS_INFO_0* {.pure.} = object
     lgrmi0_sid*: PSID
+
   PLOCALGROUP_MEMBERS_INFO_0* = ptr LOCALGROUP_MEMBERS_INFO_0
   LPLOCALGROUP_MEMBERS_INFO_0* = ptr LOCALGROUP_MEMBERS_INFO_0
   LOCALGROUP_MEMBERS_INFO_1* {.pure.} = object
     lgrmi1_sid*: PSID
     lgrmi1_sidusage*: SID_NAME_USE
     lgrmi1_name*: LPWSTR
+
   PLOCALGROUP_MEMBERS_INFO_1* = ptr LOCALGROUP_MEMBERS_INFO_1
   LPLOCALGROUP_MEMBERS_INFO_1* = ptr LOCALGROUP_MEMBERS_INFO_1
   LOCALGROUP_MEMBERS_INFO_2* {.pure.} = object
     lgrmi2_sid*: PSID
     lgrmi2_sidusage*: SID_NAME_USE
     lgrmi2_domainandname*: LPWSTR
+
   PLOCALGROUP_MEMBERS_INFO_2* = ptr LOCALGROUP_MEMBERS_INFO_2
   LPLOCALGROUP_MEMBERS_INFO_2* = ptr LOCALGROUP_MEMBERS_INFO_2
   LOCALGROUP_MEMBERS_INFO_3* {.pure.} = object
     lgrmi3_domainandname*: LPWSTR
+
   PLOCALGROUP_MEMBERS_INFO_3* = ptr LOCALGROUP_MEMBERS_INFO_3
   LPLOCALGROUP_MEMBERS_INFO_3* = ptr LOCALGROUP_MEMBERS_INFO_3
   LOCALGROUP_USERS_INFO_0* {.pure.} = object
     lgrui0_name*: LPWSTR
+
   PLOCALGROUP_USERS_INFO_0* = ptr LOCALGROUP_USERS_INFO_0
   LPLOCALGROUP_USERS_INFO_0* = ptr LOCALGROUP_USERS_INFO_0
   NET_DISPLAY_USER* {.pure.} = object
@@ -463,6 +521,7 @@
     usri1_full_name*: LPWSTR
     usri1_user_id*: DWORD
     usri1_next_index*: DWORD
+
   PNET_DISPLAY_USER* = ptr NET_DISPLAY_USER
   NET_DISPLAY_MACHINE* {.pure.} = object
     usri2_name*: LPWSTR
@@ -470,6 +529,7 @@
     usri2_flags*: DWORD
     usri2_user_id*: DWORD
     usri2_next_index*: DWORD
+
   PNET_DISPLAY_MACHINE* = ptr NET_DISPLAY_MACHINE
   NET_DISPLAY_GROUP* {.pure.} = object
     grpi3_name*: LPWSTR
@@ -477,29 +537,35 @@
     grpi3_group_id*: DWORD
     grpi3_attributes*: DWORD
     grpi3_next_index*: DWORD
+
   PNET_DISPLAY_GROUP* = ptr NET_DISPLAY_GROUP
   ACCESS_INFO_0* {.pure.} = object
     acc0_resource_name*: LPWSTR
+
   PACCESS_INFO_0* = ptr ACCESS_INFO_0
   LPACCESS_INFO_0* = ptr ACCESS_INFO_0
   ACCESS_INFO_1* {.pure.} = object
     acc1_resource_name*: LPWSTR
     acc1_attr*: DWORD
     acc1_count*: DWORD
+
   PACCESS_INFO_1* = ptr ACCESS_INFO_1
   LPACCESS_INFO_1* = ptr ACCESS_INFO_1
   ACCESS_INFO_1002* {.pure.} = object
     acc1002_attr*: DWORD
+
   PACCESS_INFO_1002* = ptr ACCESS_INFO_1002
   LPACCESS_INFO_1002* = ptr ACCESS_INFO_1002
   ACCESS_LIST* {.pure.} = object
     acl_ugname*: LPWSTR
     acl_access*: DWORD
+
   PACCESS_LIST* = ptr ACCESS_LIST
   LPACCESS_LIST* = ptr ACCESS_LIST
   NET_VALIDATE_PASSWORD_HASH* {.pure.} = object
     Length*: ULONG
     Hash*: LPBYTE
+
   PNET_VALIDATE_PASSWORD_HASH* = ptr NET_VALIDATE_PASSWORD_HASH
   NET_VALIDATE_PERSISTED_FIELDS* {.pure.} = object
     PresentFields*: ULONG
@@ -509,14 +575,17 @@
     BadPasswordCount*: ULONG
     PasswordHistoryLength*: ULONG
     PasswordHistory*: PNET_VALIDATE_PASSWORD_HASH
+
   PNET_VALIDATE_PERSISTED_FIELDS* = ptr NET_VALIDATE_PERSISTED_FIELDS
   NET_VALIDATE_OUTPUT_ARG* {.pure.} = object
     ChangedPersistedFields*: NET_VALIDATE_PERSISTED_FIELDS
     ValidationStatus*: NET_API_STATUS
+
   PNET_VALIDATE_OUTPUT_ARG* = ptr NET_VALIDATE_OUTPUT_ARG
   NET_VALIDATE_AUTHENTICATION_INPUT_ARG* {.pure.} = object
     InputPersistedFields*: NET_VALIDATE_PERSISTED_FIELDS
     PasswordMatched*: BOOLEAN
+
   PNET_VALIDATE_AUTHENTICATION_INPUT_ARG* = ptr NET_VALIDATE_AUTHENTICATION_INPUT_ARG
   NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG* {.pure.} = object
     InputPersistedFields*: NET_VALIDATE_PERSISTED_FIELDS
@@ -524,6 +593,7 @@
     UserAccountName*: LPWSTR
     HashedPassword*: NET_VALIDATE_PASSWORD_HASH
     PasswordMatch*: BOOLEAN
+
   PNET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG* = ptr NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG
   NET_VALIDATE_PASSWORD_RESET_INPUT_ARG* {.pure.} = object
     InputPersistedFields*: NET_VALIDATE_PERSISTED_FIELDS
@@ -532,16 +602,19 @@
     HashedPassword*: NET_VALIDATE_PASSWORD_HASH
     PasswordMustChangeAtNextLogon*: BOOLEAN
     ClearLockout*: BOOLEAN
+
   PNET_VALIDATE_PASSWORD_RESET_INPUT_ARG* = ptr NET_VALIDATE_PASSWORD_RESET_INPUT_ARG
   NETLOGON_INFO_1* {.pure.} = object
     netlog1_flags*: DWORD
     netlog1_pdc_connection_status*: NET_API_STATUS
+
   PNETLOGON_INFO_1* = ptr NETLOGON_INFO_1
   NETLOGON_INFO_2* {.pure.} = object
     netlog2_flags*: DWORD
     netlog2_pdc_connection_status*: NET_API_STATUS
     netlog2_trusted_dc_name*: LPWSTR
     netlog2_tc_connection_status*: NET_API_STATUS
+
   PNETLOGON_INFO_2* = ptr NETLOGON_INFO_2
   NETLOGON_INFO_3* {.pure.} = object
     netlog3_flags*: DWORD
@@ -551,14 +624,18 @@
     netlog3_reserved3*: DWORD
     netlog3_reserved4*: DWORD
     netlog3_reserved5*: DWORD
+
   PNETLOGON_INFO_3* = ptr NETLOGON_INFO_3
   NETLOGON_INFO_4* {.pure.} = object
     netlog4_trusted_dc_name*: LPWSTR
     netlog4_trusted_domain_name*: LPWSTR
+
   PNETLOGON_INFO_4* = ptr NETLOGON_INFO_4
   MSA_INFO_0* {.pure.} = object
     State*: MSA_INFO_STATE
+
   PMSA_INFO_0* = ptr MSA_INFO_0
+
 const
   EVLEN* = 16
   SNLEN* = 80
@@ -567,16 +644,19 @@
     alrt_timestamp*: DWORD
     alrt_eventname*: array[EVLEN + 1, WCHAR]
     alrt_servicename*: array[SNLEN + 1, WCHAR]
+
   PSTD_ALERT* = ptr STD_ALERT
   LPSTD_ALERT* = ptr STD_ALERT
   ADMIN_OTHER_INFO* {.pure.} = object
     alrtad_errcode*: DWORD
     alrtad_numstrings*: DWORD
+
   PADMIN_OTHER_INFO* = ptr ADMIN_OTHER_INFO
   LPADMIN_OTHER_INFO* = ptr ADMIN_OTHER_INFO
   ERRLOG_OTHER_INFO* {.pure.} = object
     alrter_errcode*: DWORD
     alrter_offset*: DWORD
+
   PERRLOG_OTHER_INFO* = ptr ERRLOG_OTHER_INFO
   LPERRLOG_OTHER_INFO* = ptr ERRLOG_OTHER_INFO
   PRINT_OTHER_INFO* {.pure.} = object
@@ -584,21 +664,25 @@
     alrtpr_status*: DWORD
     alrtpr_submitted*: DWORD
     alrtpr_size*: DWORD
+
   PPRINT_OTHER_INFO* = ptr PRINT_OTHER_INFO
   LPPRINT_OTHER_INFO* = ptr PRINT_OTHER_INFO
   USER_OTHER_INFO* {.pure.} = object
     alrtus_errcode*: DWORD
     alrtus_numstrings*: DWORD
+
   PUSER_OTHER_INFO* = ptr USER_OTHER_INFO
   LPUSER_OTHER_INFO* = ptr USER_OTHER_INFO
   SHARE_INFO_0* {.pure.} = object
     shi0_netname*: LMSTR
+
   PSHARE_INFO_0* = ptr SHARE_INFO_0
   LPSHARE_INFO_0* = ptr SHARE_INFO_0
   SHARE_INFO_1* {.pure.} = object
     shi1_netname*: LMSTR
     shi1_type*: DWORD
     shi1_remark*: LMSTR
+
   PSHARE_INFO_1* = ptr SHARE_INFO_1
   LPSHARE_INFO_1* = ptr SHARE_INFO_1
   SHARE_INFO_2* {.pure.} = object
@@ -610,6 +694,7 @@
     shi2_current_uses*: DWORD
     shi2_path*: LMSTR
     shi2_passwd*: LMSTR
+
   PSHARE_INFO_2* = ptr SHARE_INFO_2
   LPSHARE_INFO_2* = ptr SHARE_INFO_2
   SHARE_INFO_501* {.pure.} = object
@@ -617,6 +702,7 @@
     shi501_type*: DWORD
     shi501_remark*: LMSTR
     shi501_flags*: DWORD
+
   PSHARE_INFO_501* = ptr SHARE_INFO_501
   LPSHARE_INFO_501* = ptr SHARE_INFO_501
   SHARE_INFO_502* {.pure.} = object
@@ -630,27 +716,33 @@
     shi502_passwd*: LMSTR
     shi502_reserved*: DWORD
     shi502_security_descriptor*: PSECURITY_DESCRIPTOR
+
   PSHARE_INFO_502* = ptr SHARE_INFO_502
   LPSHARE_INFO_502* = ptr SHARE_INFO_502
   SHARE_INFO_1004* {.pure.} = object
     shi1004_remark*: LMSTR
+
   PSHARE_INFO_1004* = ptr SHARE_INFO_1004
   LPSHARE_INFO_1004* = ptr SHARE_INFO_1004
   SHARE_INFO_1005* {.pure.} = object
     shi1005_flags*: DWORD
+
   PSHARE_INFO_1005* = ptr SHARE_INFO_1005
   LPSHARE_INFO_1005* = ptr SHARE_INFO_1005
   SHARE_INFO_1006* {.pure.} = object
     shi1006_max_uses*: DWORD
+
   PSHARE_INFO_1006* = ptr SHARE_INFO_1006
   LPSHARE_INFO_1006* = ptr SHARE_INFO_1006
   SHARE_INFO_1501* {.pure.} = object
     shi1501_reserved*: DWORD
     shi1501_security_descriptor*: PSECURITY_DESCRIPTOR
+
   PSHARE_INFO_1501* = ptr SHARE_INFO_1501
   LPSHARE_INFO_1501* = ptr SHARE_INFO_1501
   SESSION_INFO_0* {.pure.} = object
     sesi0_cname*: LMSTR
+
   PSESSION_INFO_0* = ptr SESSION_INFO_0
   LPSESSION_INFO_0* = ptr SESSION_INFO_0
   SESSION_INFO_1* {.pure.} = object
@@ -660,6 +752,7 @@
     sesi1_time*: DWORD
     sesi1_idle_time*: DWORD
     sesi1_user_flags*: DWORD
+
   PSESSION_INFO_1* = ptr SESSION_INFO_1
   LPSESSION_INFO_1* = ptr SESSION_INFO_1
   SESSION_INFO_2* {.pure.} = object
@@ -670,6 +763,7 @@
     sesi2_idle_time*: DWORD
     sesi2_user_flags*: DWORD
     sesi2_cltype_name*: LMSTR
+
   PSESSION_INFO_2* = ptr SESSION_INFO_2
   LPSESSION_INFO_2* = ptr SESSION_INFO_2
   SESSION_INFO_10* {.pure.} = object
@@ -677,6 +771,7 @@
     sesi10_username*: LMSTR
     sesi10_time*: DWORD
     sesi10_idle_time*: DWORD
+
   PSESSION_INFO_10* = ptr SESSION_INFO_10
   LPSESSION_INFO_10* = ptr SESSION_INFO_10
   SESSION_INFO_502* {.pure.} = object
@@ -688,10 +783,12 @@
     sesi502_user_flags*: DWORD
     sesi502_cltype_name*: LMSTR
     sesi502_transport*: LMSTR
+
   PSESSION_INFO_502* = ptr SESSION_INFO_502
   LPSESSION_INFO_502* = ptr SESSION_INFO_502
   CONNECTION_INFO_0* {.pure.} = object
     coni0_id*: DWORD
+
   PCONNECTION_INFO_0* = ptr CONNECTION_INFO_0
   LPCONNECTION_INFO_0* = ptr CONNECTION_INFO_0
   CONNECTION_INFO_1* {.pure.} = object
@@ -702,10 +799,12 @@
     coni1_time*: DWORD
     coni1_username*: LMSTR
     coni1_netname*: LMSTR
+
   PCONNECTION_INFO_1* = ptr CONNECTION_INFO_1
   LPCONNECTION_INFO_1* = ptr CONNECTION_INFO_1
   FILE_INFO_2* {.pure.} = object
     fi2_id*: DWORD
+
   PFILE_INFO_2* = ptr FILE_INFO_2
   LPFILE_INFO_2* = ptr FILE_INFO_2
   FILE_INFO_3* {.pure.} = object
@@ -714,16 +813,19 @@
     fi3_num_locks*: DWORD
     fi3_pathname*: LMSTR
     fi3_username*: LMSTR
+
   PFILE_INFO_3* = ptr FILE_INFO_3
   LPFILE_INFO_3* = ptr FILE_INFO_3
   MSG_INFO_0* {.pure.} = object
     msgi0_name*: LPWSTR
+
   PMSG_INFO_0* = ptr MSG_INFO_0
   LPMSG_INFO_0* = ptr MSG_INFO_0
   MSG_INFO_1* {.pure.} = object
     msgi1_name*: LPWSTR
     msgi1_forward_flag*: DWORD
     msgi1_forward*: LPWSTR
+
   PMSG_INFO_1* = ptr MSG_INFO_1
   LPMSG_INFO_1* = ptr MSG_INFO_1
   LPDESC* = ptr DESC_CHAR
@@ -740,6 +842,7 @@
     tod_month*: DWORD
     tod_year*: DWORD
     tod_weekday*: DWORD
+
   PTIME_OF_DAY_INFO* = ptr TIME_OF_DAY_INFO
   LPTIME_OF_DAY_INFO* = ptr TIME_OF_DAY_INFO
   REPL_INFO_0* {.pure.} = object
@@ -753,32 +856,39 @@
     rp0_pulse*: DWORD
     rp0_guardtime*: DWORD
     rp0_random*: DWORD
+
   PREPL_INFO_0* = ptr REPL_INFO_0
   LPREPL_INFO_0* = ptr REPL_INFO_0
   REPL_INFO_1000* {.pure.} = object
     rp1000_interval*: DWORD
+
   PREPL_INFO_1000* = ptr REPL_INFO_1000
   LPREPL_INFO_1000* = ptr REPL_INFO_1000
   REPL_INFO_1001* {.pure.} = object
     rp1001_pulse*: DWORD
+
   PREPL_INFO_1001* = ptr REPL_INFO_1001
   LPREPL_INFO_1001* = ptr REPL_INFO_1001
   REPL_INFO_1002* {.pure.} = object
     rp1002_guardtime*: DWORD
+
   PREPL_INFO_1002* = ptr REPL_INFO_1002
   LPREPL_INFO_1002* = ptr REPL_INFO_1002
   REPL_INFO_1003* {.pure.} = object
     rp1003_random*: DWORD
+
   PREPL_INFO_1003* = ptr REPL_INFO_1003
   LPREPL_INFO_1003* = ptr REPL_INFO_1003
   REPL_EDIR_INFO_0* {.pure.} = object
     rped0_dirname*: LPWSTR
+
   PREPL_EDIR_INFO_0* = ptr REPL_EDIR_INFO_0
   LPREPL_EDIR_INFO_0* = ptr REPL_EDIR_INFO_0
   REPL_EDIR_INFO_1* {.pure.} = object
     rped1_dirname*: LPWSTR
     rped1_integrity*: DWORD
     rped1_extent*: DWORD
+
   PREPL_EDIR_INFO_1* = ptr REPL_EDIR_INFO_1
   LPREPL_EDIR_INFO_1* = ptr REPL_EDIR_INFO_1
   REPL_EDIR_INFO_2* {.pure.} = object
@@ -787,18 +897,22 @@
     rped2_extent*: DWORD
     rped2_lockcount*: DWORD
     rped2_locktime*: DWORD
+
   PREPL_EDIR_INFO_2* = ptr REPL_EDIR_INFO_2
   LPREPL_EDIR_INFO_2* = ptr REPL_EDIR_INFO_2
   REPL_EDIR_INFO_1000* {.pure.} = object
     rped1000_integrity*: DWORD
+
   PREPL_EDIR_INFO_1000* = ptr REPL_EDIR_INFO_1000
   LPREPL_EDIR_INFO_1000* = ptr REPL_EDIR_INFO_1000
   REPL_EDIR_INFO_1001* {.pure.} = object
     rped1001_extent*: DWORD
+
   PREPL_EDIR_INFO_1001* = ptr REPL_EDIR_INFO_1001
   LPREPL_EDIR_INFO_1001* = ptr REPL_EDIR_INFO_1001
   REPL_IDIR_INFO_0* {.pure.} = object
     rpid0_dirname*: LPWSTR
+
   PREPL_IDIR_INFO_0* = ptr REPL_IDIR_INFO_0
   LPREPL_IDIR_INFO_0* = ptr REPL_IDIR_INFO_0
   REPL_IDIR_INFO_1* {.pure.} = object
@@ -808,11 +922,13 @@
     rpid1_last_update_time*: DWORD
     rpid1_lockcount*: DWORD
     rpid1_locktime*: DWORD
+
   PREPL_IDIR_INFO_1* = ptr REPL_IDIR_INFO_1
   LPREPL_IDIR_INFO_1* = ptr REPL_IDIR_INFO_1
   SERVER_INFO_100* {.pure.} = object
     sv100_platform_id*: DWORD
     sv100_name*: LMSTR
+
   PSERVER_INFO_100* = ptr SERVER_INFO_100
   LPSERVER_INFO_100* = ptr SERVER_INFO_100
   SERVER_INFO_101* {.pure.} = object
@@ -822,6 +938,7 @@
     sv101_version_minor*: DWORD
     sv101_type*: DWORD
     sv101_comment*: LMSTR
+
   PSERVER_INFO_101* = ptr SERVER_INFO_101
   LPSERVER_INFO_101* = ptr SERVER_INFO_101
   SERVER_INFO_102* {.pure.} = object
@@ -838,6 +955,7 @@
     sv102_anndelta*: DWORD
     sv102_licenses*: DWORD
     sv102_userpath*: LMSTR
+
   PSERVER_INFO_102* = ptr SERVER_INFO_102
   LPSERVER_INFO_102* = ptr SERVER_INFO_102
   SERVER_INFO_402* {.pure.} = object
@@ -872,6 +990,7 @@
     sv402_netioalert*: DWORD
     sv402_maxauditsz*: DWORD
     sv402_srvheuristics*: LMSTR
+
   PSERVER_INFO_402* = ptr SERVER_INFO_402
   LPSERVER_INFO_402* = ptr SERVER_INFO_402
   SERVER_INFO_403* {.pure.} = object
@@ -909,6 +1028,7 @@
     sv403_auditedevents*: DWORD
     sv403_autoprofile*: DWORD
     sv403_autopath*: LMSTR
+
   PSERVER_INFO_403* = ptr SERVER_INFO_403
   LPSERVER_INFO_403* = ptr SERVER_INFO_403
   SERVER_INFO_502* {.pure.} = object
@@ -930,6 +1050,7 @@
     sv502_timesource*: WINBOOL
     sv502_acceptdownlevelapis*: WINBOOL
     sv502_lmannounce*: WINBOOL
+
   PSERVER_INFO_502* = ptr SERVER_INFO_502
   LPSERVER_INFO_502* = ptr SERVER_INFO_502
   SERVER_INFO_503* {.pure.} = object
@@ -975,6 +1096,7 @@
     sv503_enablesharednetdrives*: WINBOOL
     sv503_minfreeconnections*: DWORD
     sv503_maxfreeconnections*: DWORD
+
   PSERVER_INFO_503* = ptr SERVER_INFO_503
   LPSERVER_INFO_503* = ptr SERVER_INFO_503
   SERVER_INFO_599* {.pure.} = object
@@ -1034,6 +1156,7 @@
     sv599_linkinfovalidtime*: DWORD
     sv599_scavqosinfoupdatetime*: DWORD
     sv599_maxworkitemidletime*: DWORD
+
   PSERVER_INFO_599* = ptr SERVER_INFO_599
   LPSERVER_INFO_599* = ptr SERVER_INFO_599
   SERVER_INFO_598* {.pure.} = object
@@ -1079,382 +1202,477 @@
     sv598_disabledos*: WINBOOL
     sv598_lowdiskspaceminimum*: DWORD
     sv598_disablestrictnamechecking*: WINBOOL
+
   PSERVER_INFO_598* = ptr SERVER_INFO_598
   LPSERVER_INFO_598* = ptr SERVER_INFO_598
   SERVER_INFO_1005* {.pure.} = object
     sv1005_comment*: LMSTR
+
   PSERVER_INFO_1005* = ptr SERVER_INFO_1005
   LPSERVER_INFO_1005* = ptr SERVER_INFO_1005
   SERVER_INFO_1107* {.pure.} = object
     sv1107_users*: DWORD
+
   PSERVER_INFO_1107* = ptr SERVER_INFO_1107
   LPSERVER_INFO_1107* = ptr SERVER_INFO_1107
   SERVER_INFO_1010* {.pure.} = object
     sv1010_disc*: LONG
+
   PSERVER_INFO_1010* = ptr SERVER_INFO_1010
   LPSERVER_INFO_1010* = ptr SERVER_INFO_1010
   SERVER_INFO_1016* {.pure.} = object
     sv1016_hidden*: WINBOOL
+
   PSERVER_INFO_1016* = ptr SERVER_INFO_1016
   LPSERVER_INFO_1016* = ptr SERVER_INFO_1016
   SERVER_INFO_1017* {.pure.} = object
     sv1017_announce*: DWORD
+
   PSERVER_INFO_1017* = ptr SERVER_INFO_1017
   LPSERVER_INFO_1017* = ptr SERVER_INFO_1017
   SERVER_INFO_1018* {.pure.} = object
     sv1018_anndelta*: DWORD
+
   PSERVER_INFO_1018* = ptr SERVER_INFO_1018
   LPSERVER_INFO_1018* = ptr SERVER_INFO_1018
   SERVER_INFO_1501* {.pure.} = object
     sv1501_sessopens*: DWORD
+
   PSERVER_INFO_1501* = ptr SERVER_INFO_1501
   LPSERVER_INFO_1501* = ptr SERVER_INFO_1501
   SERVER_INFO_1502* {.pure.} = object
     sv1502_sessvcs*: DWORD
+
   PSERVER_INFO_1502* = ptr SERVER_INFO_1502
   LPSERVER_INFO_1502* = ptr SERVER_INFO_1502
   SERVER_INFO_1503* {.pure.} = object
     sv1503_opensearch*: DWORD
+
   PSERVER_INFO_1503* = ptr SERVER_INFO_1503
   LPSERVER_INFO_1503* = ptr SERVER_INFO_1503
   SERVER_INFO_1506* {.pure.} = object
     sv1506_maxworkitems*: DWORD
+
   PSERVER_INFO_1506* = ptr SERVER_INFO_1506
   LPSERVER_INFO_1506* = ptr SERVER_INFO_1506
   SERVER_INFO_1509* {.pure.} = object
     sv1509_maxrawbuflen*: DWORD
+
   PSERVER_INFO_1509* = ptr SERVER_INFO_1509
   LPSERVER_INFO_1509* = ptr SERVER_INFO_1509
   SERVER_INFO_1510* {.pure.} = object
     sv1510_sessusers*: DWORD
+
   PSERVER_INFO_1510* = ptr SERVER_INFO_1510
   LPSERVER_INFO_1510* = ptr SERVER_INFO_1510
   SERVER_INFO_1511* {.pure.} = object
     sv1511_sessconns*: DWORD
+
   PSERVER_INFO_1511* = ptr SERVER_INFO_1511
   LPSERVER_INFO_1511* = ptr SERVER_INFO_1511
   SERVER_INFO_1512* {.pure.} = object
     sv1512_maxnonpagedmemoryusage*: DWORD
+
   PSERVER_INFO_1512* = ptr SERVER_INFO_1512
   LPSERVER_INFO_1512* = ptr SERVER_INFO_1512
   SERVER_INFO_1513* {.pure.} = object
     sv1513_maxpagedmemoryusage*: DWORD
+
   PSERVER_INFO_1513* = ptr SERVER_INFO_1513
   LPSERVER_INFO_1513* = ptr SERVER_INFO_1513
   SERVER_INFO_1514* {.pure.} = object
     sv1514_enablesoftcompat*: WINBOOL
+
   PSERVER_INFO_1514* = ptr SERVER_INFO_1514
   LPSERVER_INFO_1514* = ptr SERVER_INFO_1514
   SERVER_INFO_1515* {.pure.} = object
     sv1515_enableforcedlogoff*: WINBOOL
+
   PSERVER_INFO_1515* = ptr SERVER_INFO_1515
   LPSERVER_INFO_1515* = ptr SERVER_INFO_1515
   SERVER_INFO_1516* {.pure.} = object
     sv1516_timesource*: WINBOOL
+
   PSERVER_INFO_1516* = ptr SERVER_INFO_1516
   LPSERVER_INFO_1516* = ptr SERVER_INFO_1516
   SERVER_INFO_1518* {.pure.} = object
     sv1518_lmannounce*: WINBOOL
+
   PSERVER_INFO_1518* = ptr SERVER_INFO_1518
   LPSERVER_INFO_1518* = ptr SERVER_INFO_1518
   SERVER_INFO_1520* {.pure.} = object
     sv1520_maxcopyreadlen*: DWORD
+
   PSERVER_INFO_1520* = ptr SERVER_INFO_1520
   LPSERVER_INFO_1520* = ptr SERVER_INFO_1520
   SERVER_INFO_1521* {.pure.} = object
     sv1521_maxcopywritelen*: DWORD
+
   PSERVER_INFO_1521* = ptr SERVER_INFO_1521
   LPSERVER_INFO_1521* = ptr SERVER_INFO_1521
   SERVER_INFO_1522* {.pure.} = object
     sv1522_minkeepsearch*: DWORD
+
   PSERVER_INFO_1522* = ptr SERVER_INFO_1522
   LPSERVER_INFO_1522* = ptr SERVER_INFO_1522
   SERVER_INFO_1523* {.pure.} = object
     sv1523_maxkeepsearch*: DWORD
+
   PSERVER_INFO_1523* = ptr SERVER_INFO_1523
   LPSERVER_INFO_1523* = ptr SERVER_INFO_1523
   SERVER_INFO_1524* {.pure.} = object
     sv1524_minkeepcomplsearch*: DWORD
+
   PSERVER_INFO_1524* = ptr SERVER_INFO_1524
   LPSERVER_INFO_1524* = ptr SERVER_INFO_1524
   SERVER_INFO_1525* {.pure.} = object
     sv1525_maxkeepcomplsearch*: DWORD
+
   PSERVER_INFO_1525* = ptr SERVER_INFO_1525
   LPSERVER_INFO_1525* = ptr SERVER_INFO_1525
   SERVER_INFO_1528* {.pure.} = object
     sv1528_scavtimeout*: DWORD
+
   PSERVER_INFO_1528* = ptr SERVER_INFO_1528
   LPSERVER_INFO_1528* = ptr SERVER_INFO_1528
   SERVER_INFO_1529* {.pure.} = object
     sv1529_minrcvqueue*: DWORD
+
   PSERVER_INFO_1529* = ptr SERVER_INFO_1529
   LPSERVER_INFO_1529* = ptr SERVER_INFO_1529
   SERVER_INFO_1530* {.pure.} = object
     sv1530_minfreeworkitems*: DWORD
+
   PSERVER_INFO_1530* = ptr SERVER_INFO_1530
   LPSERVER_INFO_1530* = ptr SERVER_INFO_1530
   SERVER_INFO_1533* {.pure.} = object
     sv1533_maxmpxct*: DWORD
+
   PSERVER_INFO_1533* = ptr SERVER_INFO_1533
   LPSERVER_INFO_1533* = ptr SERVER_INFO_1533
   SERVER_INFO_1534* {.pure.} = object
     sv1534_oplockbreakwait*: DWORD
+
   PSERVER_INFO_1534* = ptr SERVER_INFO_1534
   LPSERVER_INFO_1534* = ptr SERVER_INFO_1534
   SERVER_INFO_1535* {.pure.} = object
     sv1535_oplockbreakresponsewait*: DWORD
+
   PSERVER_INFO_1535* = ptr SERVER_INFO_1535
   LPSERVER_INFO_1535* = ptr SERVER_INFO_1535
   SERVER_INFO_1536* {.pure.} = object
     sv1536_enableoplocks*: WINBOOL
+
   PSERVER_INFO_1536* = ptr SERVER_INFO_1536
   LPSERVER_INFO_1536* = ptr SERVER_INFO_1536
   SERVER_INFO_1537* {.pure.} = object
     sv1537_enableoplockforceclose*: WINBOOL
+
   PSERVER_INFO_1537* = ptr SERVER_INFO_1537
   LPSERVER_INFO_1537* = ptr SERVER_INFO_1537
   SERVER_INFO_1538* {.pure.} = object
     sv1538_enablefcbopens*: WINBOOL
+
   PSERVER_INFO_1538* = ptr SERVER_INFO_1538
   LPSERVER_INFO_1538* = ptr SERVER_INFO_1538
   SERVER_INFO_1539* {.pure.} = object
     sv1539_enableraw*: WINBOOL
+
   PSERVER_INFO_1539* = ptr SERVER_INFO_1539
   LPSERVER_INFO_1539* = ptr SERVER_INFO_1539
   SERVER_INFO_1540* {.pure.} = object
     sv1540_enablesharednetdrives*: WINBOOL
+
   PSERVER_INFO_1540* = ptr SERVER_INFO_1540
   LPSERVER_INFO_1540* = ptr SERVER_INFO_1540
   SERVER_INFO_1541* {.pure.} = object
     sv1541_minfreeconnections*: WINBOOL
+
   PSERVER_INFO_1541* = ptr SERVER_INFO_1541
   LPSERVER_INFO_1541* = ptr SERVER_INFO_1541
   SERVER_INFO_1542* {.pure.} = object
     sv1542_maxfreeconnections*: WINBOOL
+
   PSERVER_INFO_1542* = ptr SERVER_INFO_1542
   LPSERVER_INFO_1542* = ptr SERVER_INFO_1542
   SERVER_INFO_1543* {.pure.} = object
     sv1543_initsesstable*: DWORD
+
   PSERVER_INFO_1543* = ptr SERVER_INFO_1543
   LPSERVER_INFO_1543* = ptr SERVER_INFO_1543
   SERVER_INFO_1544* {.pure.} = object
     sv1544_initconntable*: DWORD
+
   PSERVER_INFO_1544* = ptr SERVER_INFO_1544
   LPSERVER_INFO_1544* = ptr SERVER_INFO_1544
   SERVER_INFO_1545* {.pure.} = object
     sv1545_initfiletable*: DWORD
+
   PSERVER_INFO_1545* = ptr SERVER_INFO_1545
   LPSERVER_INFO_1545* = ptr SERVER_INFO_1545
   SERVER_INFO_1546* {.pure.} = object
     sv1546_initsearchtable*: DWORD
+
   PSERVER_INFO_1546* = ptr SERVER_INFO_1546
   LPSERVER_INFO_1546* = ptr SERVER_INFO_1546
   SERVER_INFO_1547* {.pure.} = object
     sv1547_alertschedule*: DWORD
+
   PSERVER_INFO_1547* = ptr SERVER_INFO_1547
   LPSERVER_INFO_1547* = ptr SERVER_INFO_1547
   SERVER_INFO_1548* {.pure.} = object
     sv1548_errorthreshold*: DWORD
+
   PSERVER_INFO_1548* = ptr SERVER_INFO_1548
   LPSERVER_INFO_1548* = ptr SERVER_INFO_1548
   SERVER_INFO_1549* {.pure.} = object
     sv1549_networkerrorthreshold*: DWORD
+
   PSERVER_INFO_1549* = ptr SERVER_INFO_1549
   LPSERVER_INFO_1549* = ptr SERVER_INFO_1549
   SERVER_INFO_1550* {.pure.} = object
     sv1550_diskspacethreshold*: DWORD
+
   PSERVER_INFO_1550* = ptr SERVER_INFO_1550
   LPSERVER_INFO_1550* = ptr SERVER_INFO_1550
   SERVER_INFO_1552* {.pure.} = object
     sv1552_maxlinkdelay*: DWORD
+
   PSERVER_INFO_1552* = ptr SERVER_INFO_1552
   LPSERVER_INFO_1552* = ptr SERVER_INFO_1552
   SERVER_INFO_1553* {.pure.} = object
     sv1553_minlinkthroughput*: DWORD
+
   PSERVER_INFO_1553* = ptr SERVER_INFO_1553
   LPSERVER_INFO_1553* = ptr SERVER_INFO_1553
   SERVER_INFO_1554* {.pure.} = object
     sv1554_linkinfovalidtime*: DWORD
+
   PSERVER_INFO_1554* = ptr SERVER_INFO_1554
   LPSERVER_INFO_1554* = ptr SERVER_INFO_1554
   SERVER_INFO_1555* {.pure.} = object
     sv1555_scavqosinfoupdatetime*: DWORD
+
   PSERVER_INFO_1555* = ptr SERVER_INFO_1555
   LPSERVER_INFO_1555* = ptr SERVER_INFO_1555
   SERVER_INFO_1556* {.pure.} = object
     sv1556_maxworkitemidletime*: DWORD
+
   PSERVER_INFO_1556* = ptr SERVER_INFO_1556
   LPSERVER_INFO_1556* = ptr SERVER_INFO_1556
   SERVER_INFO_1557* {.pure.} = object
     sv1557_maxrawworkitems*: DWORD
+
   PSERVER_INFO_1557* = ptr SERVER_INFO_1557
   LPSERVER_INFO_1557* = ptr SERVER_INFO_1557
   SERVER_INFO_1560* {.pure.} = object
     sv1560_producttype*: DWORD
+
   PSERVER_INFO_1560* = ptr SERVER_INFO_1560
   LPSERVER_INFO_1560* = ptr SERVER_INFO_1560
   SERVER_INFO_1561* {.pure.} = object
     sv1561_serversize*: DWORD
+
   PSERVER_INFO_1561* = ptr SERVER_INFO_1561
   LPSERVER_INFO_1561* = ptr SERVER_INFO_1561
   SERVER_INFO_1562* {.pure.} = object
     sv1562_connectionlessautodisc*: DWORD
+
   PSERVER_INFO_1562* = ptr SERVER_INFO_1562
   LPSERVER_INFO_1562* = ptr SERVER_INFO_1562
   SERVER_INFO_1563* {.pure.} = object
     sv1563_sharingviolationretries*: DWORD
+
   PSERVER_INFO_1563* = ptr SERVER_INFO_1563
   LPSERVER_INFO_1563* = ptr SERVER_INFO_1563
   SERVER_INFO_1564* {.pure.} = object
     sv1564_sharingviolationdelay*: DWORD
+
   PSERVER_INFO_1564* = ptr SERVER_INFO_1564
   LPSERVER_INFO_1564* = ptr SERVER_INFO_1564
   SERVER_INFO_1565* {.pure.} = object
     sv1565_maxglobalopensearch*: DWORD
+
   PSERVER_INFO_1565* = ptr SERVER_INFO_1565
   LPSERVER_INFO_1565* = ptr SERVER_INFO_1565
   SERVER_INFO_1566* {.pure.} = object
     sv1566_removeduplicatesearches*: WINBOOL
+
   PSERVER_INFO_1566* = ptr SERVER_INFO_1566
   LPSERVER_INFO_1566* = ptr SERVER_INFO_1566
   SERVER_INFO_1567* {.pure.} = object
     sv1567_lockviolationretries*: DWORD
+
   PSERVER_INFO_1567* = ptr SERVER_INFO_1567
   LPSERVER_INFO_1567* = ptr SERVER_INFO_1567
   SERVER_INFO_1568* {.pure.} = object
     sv1568_lockviolationoffset*: DWORD
+
   PSERVER_INFO_1568* = ptr SERVER_INFO_1568
   LPSERVER_INFO_1568* = ptr SERVER_INFO_1568
   SERVER_INFO_1569* {.pure.} = object
     sv1569_lockviolationdelay*: DWORD
+
   PSERVER_INFO_1569* = ptr SERVER_INFO_1569
   LPSERVER_INFO_1569* = ptr SERVER_INFO_1569
   SERVER_INFO_1570* {.pure.} = object
     sv1570_mdlreadswitchover*: DWORD
+
   PSERVER_INFO_1570* = ptr SERVER_INFO_1570
   LPSERVER_INFO_1570* = ptr SERVER_INFO_1570
   SERVER_INFO_1571* {.pure.} = object
     sv1571_cachedopenlimit*: DWORD
+
   PSERVER_INFO_1571* = ptr SERVER_INFO_1571
   LPSERVER_INFO_1571* = ptr SERVER_INFO_1571
   SERVER_INFO_1572* {.pure.} = object
     sv1572_criticalthreads*: DWORD
+
   PSERVER_INFO_1572* = ptr SERVER_INFO_1572
   LPSERVER_INFO_1572* = ptr SERVER_INFO_1572
   SERVER_INFO_1573* {.pure.} = object
     sv1573_restrictnullsessaccess*: DWORD
+
   PSERVER_INFO_1573* = ptr SERVER_INFO_1573
   LPSERVER_INFO_1573* = ptr SERVER_INFO_1573
   SERVER_INFO_1574* {.pure.} = object
     sv1574_enablewfw311directipx*: DWORD
+
   PSERVER_INFO_1574* = ptr SERVER_INFO_1574
   LPSERVER_INFO_1574* = ptr SERVER_INFO_1574
   SERVER_INFO_1575* {.pure.} = object
     sv1575_otherqueueaffinity*: DWORD
+
   PSERVER_INFO_1575* = ptr SERVER_INFO_1575
   LPSERVER_INFO_1575* = ptr SERVER_INFO_1575
   SERVER_INFO_1576* {.pure.} = object
     sv1576_queuesamplesecs*: DWORD
+
   PSERVER_INFO_1576* = ptr SERVER_INFO_1576
   LPSERVER_INFO_1576* = ptr SERVER_INFO_1576
   SERVER_INFO_1577* {.pure.} = object
     sv1577_balancecount*: DWORD
+
   PSERVER_INFO_1577* = ptr SERVER_INFO_1577
   LPSERVER_INFO_1577* = ptr SERVER_INFO_1577
   SERVER_INFO_1578* {.pure.} = object
     sv1578_preferredaffinity*: DWORD
+
   PSERVER_INFO_1578* = ptr SERVER_INFO_1578
   LPSERVER_INFO_1578* = ptr SERVER_INFO_1578
   SERVER_INFO_1579* {.pure.} = object
     sv1579_maxfreerfcbs*: DWORD
+
   PSERVER_INFO_1579* = ptr SERVER_INFO_1579
   LPSERVER_INFO_1579* = ptr SERVER_INFO_1579
   SERVER_INFO_1580* {.pure.} = object
     sv1580_maxfreemfcbs*: DWORD
+
   PSERVER_INFO_1580* = ptr SERVER_INFO_1580
   LPSERVER_INFO_1580* = ptr SERVER_INFO_1580
   SERVER_INFO_1581* {.pure.} = object
     sv1581_maxfreemlcbs*: DWORD
+
   PSERVER_INFO_1581* = ptr SERVER_INFO_1581
   LPSERVER_INFO_1581* = ptr SERVER_INFO_1581
   SERVER_INFO_1582* {.pure.} = object
     sv1582_maxfreepagedpoolchunks*: DWORD
+
   PSERVER_INFO_1582* = ptr SERVER_INFO_1582
   LPSERVER_INFO_1582* = ptr SERVER_INFO_1582
   SERVER_INFO_1583* {.pure.} = object
     sv1583_minpagedpoolchunksize*: DWORD
+
   PSERVER_INFO_1583* = ptr SERVER_INFO_1583
   LPSERVER_INFO_1583* = ptr SERVER_INFO_1583
   SERVER_INFO_1584* {.pure.} = object
     sv1584_maxpagedpoolchunksize*: DWORD
+
   PSERVER_INFO_1584* = ptr SERVER_INFO_1584
   LPSERVER_INFO_1584* = ptr SERVER_INFO_1584
   SERVER_INFO_1585* {.pure.} = object
     sv1585_sendsfrompreferredprocessor*: WINBOOL
+
   PSERVER_INFO_1585* = ptr SERVER_INFO_1585
   LPSERVER_INFO_1585* = ptr SERVER_INFO_1585
   SERVER_INFO_1586* {.pure.} = object
     sv1586_maxthreadsperqueue*: DWORD
+
   PSERVER_INFO_1586* = ptr SERVER_INFO_1586
   LPSERVER_INFO_1586* = ptr SERVER_INFO_1586
   SERVER_INFO_1587* {.pure.} = object
     sv1587_cacheddirectorylimit*: DWORD
+
   PSERVER_INFO_1587* = ptr SERVER_INFO_1587
   LPSERVER_INFO_1587* = ptr SERVER_INFO_1587
   SERVER_INFO_1588* {.pure.} = object
     sv1588_maxcopylength*: DWORD
+
   PSERVER_INFO_1588* = ptr SERVER_INFO_1588
   LPSERVER_INFO_1588* = ptr SERVER_INFO_1588
   SERVER_INFO_1590* {.pure.} = object
     sv1590_enablecompression*: DWORD
+
   PSERVER_INFO_1590* = ptr SERVER_INFO_1590
   LPSERVER_INFO_1590* = ptr SERVER_INFO_1590
   SERVER_INFO_1591* {.pure.} = object
     sv1591_autosharewks*: DWORD
+
   PSERVER_INFO_1591* = ptr SERVER_INFO_1591
   LPSERVER_INFO_1591* = ptr SERVER_INFO_1591
   SERVER_INFO_1592* {.pure.} = object
     sv1592_autosharewks*: DWORD
+
   PSERVER_INFO_1592* = ptr SERVER_INFO_1592
   LPSERVER_INFO_1592* = ptr SERVER_INFO_1592
   SERVER_INFO_1593* {.pure.} = object
     sv1593_enablesecuritysignature*: DWORD
+
   PSERVER_INFO_1593* = ptr SERVER_INFO_1593
   LPSERVER_INFO_1593* = ptr SERVER_INFO_1593
   SERVER_INFO_1594* {.pure.} = object
     sv1594_requiresecuritysignature*: DWORD
+
   PSERVER_INFO_1594* = ptr SERVER_INFO_1594
   LPSERVER_INFO_1594* = ptr SERVER_INFO_1594
   SERVER_INFO_1595* {.pure.} = object
     sv1595_minclientbuffersize*: DWORD
+
   PSERVER_INFO_1595* = ptr SERVER_INFO_1595
   LPSERVER_INFO_1595* = ptr SERVER_INFO_1595
   SERVER_INFO_1596* {.pure.} = object
     sv1596_ConnectionNoSessionsTimeout*: DWORD
+
   PSERVER_INFO_1596* = ptr SERVER_INFO_1596
   LPSERVER_INFO_1596* = ptr SERVER_INFO_1596
   SERVER_INFO_1597* {.pure.} = object
     sv1597_IdleThreadTimeOut*: DWORD
+
   PSERVER_INFO_1597* = ptr SERVER_INFO_1597
   LPSERVER_INFO_1597* = ptr SERVER_INFO_1597
   SERVER_INFO_1598* {.pure.} = object
     sv1598_enableW9xsecuritysignature*: DWORD
+
   PSERVER_INFO_1598* = ptr SERVER_INFO_1598
   LPSERVER_INFO_1598* = ptr SERVER_INFO_1598
   SERVER_INFO_1599* {.pure.} = object
     sv1598_enforcekerberosreauthentication*: BOOLEAN
+
   PSERVER_INFO_1599* = ptr SERVER_INFO_1599
   LPSERVER_INFO_1599* = ptr SERVER_INFO_1599
   SERVER_INFO_1600* {.pure.} = object
     sv1598_disabledos*: BOOLEAN
+
   PSERVER_INFO_1600* = ptr SERVER_INFO_1600
   LPSERVER_INFO_1600* = ptr SERVER_INFO_1600
   SERVER_INFO_1601* {.pure.} = object
     sv1598_lowdiskspaceminimum*: DWORD
+
   PSERVER_INFO_1601* = ptr SERVER_INFO_1601
   LPSERVER_INFO_1601* = ptr SERVER_INFO_1601
   SERVER_INFO_1602* {.pure.} = object
     sv_1598_disablestrictnamechecking*: WINBOOL
+
   PSERVER_INFO_1602* = ptr SERVER_INFO_1602
   LPSERVER_INFO_1602* = ptr SERVER_INFO_1602
   SERVER_TRANSPORT_INFO_0* {.pure.} = object
@@ -1463,6 +1681,7 @@
     svti0_transportaddress*: LPBYTE
     svti0_transportaddresslength*: DWORD
     svti0_networkaddress*: LMSTR
+
   PSERVER_TRANSPORT_INFO_0* = ptr SERVER_TRANSPORT_INFO_0
   LPSERVER_TRANSPORT_INFO_0* = ptr SERVER_TRANSPORT_INFO_0
   SERVER_TRANSPORT_INFO_1* {.pure.} = object
@@ -1472,6 +1691,7 @@
     svti1_transportaddresslength*: DWORD
     svti1_networkaddress*: LMSTR
     svti1_domain*: LMSTR
+
   PSERVER_TRANSPORT_INFO_1* = ptr SERVER_TRANSPORT_INFO_1
   LPSERVER_TRANSPORT_INFO_1* = ptr SERVER_TRANSPORT_INFO_1
   SERVER_TRANSPORT_INFO_2* {.pure.} = object
@@ -1482,6 +1702,7 @@
     svti2_networkaddress*: LMSTR
     svti2_domain*: LMSTR
     svti2_flags*: ULONG
+
   PSERVER_TRANSPORT_INFO_2* = ptr SERVER_TRANSPORT_INFO_2
   LPSERVER_TRANSPORT_INFO_2* = ptr SERVER_TRANSPORT_INFO_2
   SERVER_TRANSPORT_INFO_3* {.pure.} = object
@@ -1493,11 +1714,13 @@
     svti3_domain*: LMSTR
     svti3_flags*: ULONG
     svti3_passwordlength*: DWORD
-    svti3_password*: array[256 , BYTE]
+    svti3_password*: array[256, BYTE]
+
   PSERVER_TRANSPORT_INFO_3* = ptr SERVER_TRANSPORT_INFO_3
   LPSERVER_TRANSPORT_INFO_3* = ptr SERVER_TRANSPORT_INFO_3
   SERVICE_INFO_0* {.pure.} = object
     svci0_name*: LPWSTR
+
   PSERVICE_INFO_0* = ptr SERVICE_INFO_0
   LPSERVICE_INFO_0* = ptr SERVICE_INFO_0
   SERVICE_INFO_1* {.pure.} = object
@@ -1505,6 +1728,7 @@
     svci1_status*: DWORD
     svci1_code*: DWORD
     svci1_pid*: DWORD
+
   PSERVICE_INFO_1* = ptr SERVICE_INFO_1
   LPSERVICE_INFO_1* = ptr SERVICE_INFO_1
   SERVICE_INFO_2* {.pure.} = object
@@ -1515,11 +1739,13 @@
     svci2_text*: LPWSTR
     svci2_specific_error*: DWORD
     svci2_display_name*: LPWSTR
+
   PSERVICE_INFO_2* = ptr SERVICE_INFO_2
   LPSERVICE_INFO_2* = ptr SERVICE_INFO_2
   USE_INFO_0* {.pure.} = object
     ui0_local*: LMSTR
     ui0_remote*: LMSTR
+
   PUSE_INFO_0* = ptr USE_INFO_0
   LPUSE_INFO_0* = ptr USE_INFO_0
   USE_INFO_1* {.pure.} = object
@@ -1530,6 +1756,7 @@
     ui1_asg_type*: DWORD
     ui1_refcount*: DWORD
     ui1_usecount*: DWORD
+
   PUSE_INFO_1* = ptr USE_INFO_1
   LPUSE_INFO_1* = ptr USE_INFO_1
   USE_INFO_2* {.pure.} = object
@@ -1542,11 +1769,13 @@
     ui2_usecount*: DWORD
     ui2_username*: LMSTR
     ui2_domainname*: LMSTR
+
   PUSE_INFO_2* = ptr USE_INFO_2
   LPUSE_INFO_2* = ptr USE_INFO_2
   USE_INFO_3* {.pure.} = object
     ui3_ui2*: USE_INFO_2
     ui3_flags*: ULONG
+
   PUSE_INFO_3* = ptr USE_INFO_3
   LPUSE_INFO_3* = ptr USE_INFO_3
   WKSTA_INFO_100* {.pure.} = object
@@ -1555,6 +1784,7 @@
     wki100_langroup*: LMSTR
     wki100_ver_major*: DWORD
     wki100_ver_minor*: DWORD
+
   PWKSTA_INFO_100* = ptr WKSTA_INFO_100
   LPWKSTA_INFO_100* = ptr WKSTA_INFO_100
   WKSTA_INFO_101* {.pure.} = object
@@ -1564,6 +1794,7 @@
     wki101_ver_major*: DWORD
     wki101_ver_minor*: DWORD
     wki101_lanroot*: LMSTR
+
   PWKSTA_INFO_101* = ptr WKSTA_INFO_101
   LPWKSTA_INFO_101* = ptr WKSTA_INFO_101
   WKSTA_INFO_102* {.pure.} = object
@@ -1574,6 +1805,7 @@
     wki102_ver_minor*: DWORD
     wki102_lanroot*: LMSTR
     wki102_logged_on_users*: DWORD
+
   PWKSTA_INFO_102* = ptr WKSTA_INFO_102
   LPWKSTA_INFO_102* = ptr WKSTA_INFO_102
   WKSTA_INFO_302* {.pure.} = object
@@ -1597,6 +1829,7 @@
     wki302_wrk_heuristics*: LMSTR
     wki302_mailslots*: DWORD
     wki302_num_dgram_buf*: DWORD
+
   PWKSTA_INFO_302* = ptr WKSTA_INFO_302
   LPWKSTA_INFO_302* = ptr WKSTA_INFO_302
   WKSTA_INFO_402* {.pure.} = object
@@ -1621,6 +1854,7 @@
     wki402_mailslots*: DWORD
     wki402_num_dgram_buf*: DWORD
     wki402_max_threads*: DWORD
+
   PWKSTA_INFO_402* = ptr WKSTA_INFO_402
   LPWKSTA_INFO_402* = ptr WKSTA_INFO_402
   WKSTA_INFO_502* {.pure.} = object
@@ -1659,138 +1893,172 @@
     wki502_buf_read_only_files*: WINBOOL
     wki502_force_core_create_mode*: WINBOOL
     wki502_use_512_byte_max_transfer*: WINBOOL
+
   PWKSTA_INFO_502* = ptr WKSTA_INFO_502
   LPWKSTA_INFO_502* = ptr WKSTA_INFO_502
   WKSTA_INFO_1010* {.pure.} = object
     wki1010_char_wait*: DWORD
+
   PWKSTA_INFO_1010* = ptr WKSTA_INFO_1010
   LPWKSTA_INFO_1010* = ptr WKSTA_INFO_1010
   WKSTA_INFO_1011* {.pure.} = object
     wki1011_collection_time*: DWORD
+
   PWKSTA_INFO_1011* = ptr WKSTA_INFO_1011
   LPWKSTA_INFO_1011* = ptr WKSTA_INFO_1011
   WKSTA_INFO_1012* {.pure.} = object
     wki1012_maximum_collection_count*: DWORD
+
   PWKSTA_INFO_1012* = ptr WKSTA_INFO_1012
   LPWKSTA_INFO_1012* = ptr WKSTA_INFO_1012
   WKSTA_INFO_1027* {.pure.} = object
     wki1027_errlog_sz*: DWORD
+
   PWKSTA_INFO_1027* = ptr WKSTA_INFO_1027
   LPWKSTA_INFO_1027* = ptr WKSTA_INFO_1027
   WKSTA_INFO_1028* {.pure.} = object
     wki1028_print_buf_time*: DWORD
+
   PWKSTA_INFO_1028* = ptr WKSTA_INFO_1028
   LPWKSTA_INFO_1028* = ptr WKSTA_INFO_1028
   WKSTA_INFO_1032* {.pure.} = object
     wki1032_wrk_heuristics*: DWORD
+
   PWKSTA_INFO_1032* = ptr WKSTA_INFO_1032
   LPWKSTA_INFO_1032* = ptr WKSTA_INFO_1032
   WKSTA_INFO_1013* {.pure.} = object
     wki1013_keep_conn*: DWORD
+
   PWKSTA_INFO_1013* = ptr WKSTA_INFO_1013
   LPWKSTA_INFO_1013* = ptr WKSTA_INFO_1013
   WKSTA_INFO_1018* {.pure.} = object
     wki1018_sess_timeout*: DWORD
+
   PWKSTA_INFO_1018* = ptr WKSTA_INFO_1018
   LPWKSTA_INFO_1018* = ptr WKSTA_INFO_1018
   WKSTA_INFO_1023* {.pure.} = object
     wki1023_siz_char_buf*: DWORD
+
   PWKSTA_INFO_1023* = ptr WKSTA_INFO_1023
   LPWKSTA_INFO_1023* = ptr WKSTA_INFO_1023
   WKSTA_INFO_1033* {.pure.} = object
     wki1033_max_threads*: DWORD
+
   PWKSTA_INFO_1033* = ptr WKSTA_INFO_1033
   LPWKSTA_INFO_1033* = ptr WKSTA_INFO_1033
   WKSTA_INFO_1041* {.pure.} = object
     wki1041_lock_quota*: DWORD
+
   PWKSTA_INFO_1041* = ptr WKSTA_INFO_1041
   LPWKSTA_INFO_1041* = ptr WKSTA_INFO_1041
   WKSTA_INFO_1042* {.pure.} = object
     wki1042_lock_increment*: DWORD
+
   PWKSTA_INFO_1042* = ptr WKSTA_INFO_1042
   LPWKSTA_INFO_1042* = ptr WKSTA_INFO_1042
   WKSTA_INFO_1043* {.pure.} = object
     wki1043_lock_maximum*: DWORD
+
   PWKSTA_INFO_1043* = ptr WKSTA_INFO_1043
   LPWKSTA_INFO_1043* = ptr WKSTA_INFO_1043
   WKSTA_INFO_1044* {.pure.} = object
     wki1044_pipe_increment*: DWORD
+
   PWKSTA_INFO_1044* = ptr WKSTA_INFO_1044
   LPWKSTA_INFO_1044* = ptr WKSTA_INFO_1044
   WKSTA_INFO_1045* {.pure.} = object
     wki1045_pipe_maximum*: DWORD
+
   PWKSTA_INFO_1045* = ptr WKSTA_INFO_1045
   LPWKSTA_INFO_1045* = ptr WKSTA_INFO_1045
   WKSTA_INFO_1046* {.pure.} = object
     wki1046_dormant_file_limit*: DWORD
+
   PWKSTA_INFO_1046* = ptr WKSTA_INFO_1046
   LPWKSTA_INFO_1046* = ptr WKSTA_INFO_1046
   WKSTA_INFO_1047* {.pure.} = object
     wki1047_cache_file_timeout*: DWORD
+
   PWKSTA_INFO_1047* = ptr WKSTA_INFO_1047
   LPWKSTA_INFO_1047* = ptr WKSTA_INFO_1047
   WKSTA_INFO_1048* {.pure.} = object
     wki1048_use_opportunistic_locking*: WINBOOL
+
   PWKSTA_INFO_1048* = ptr WKSTA_INFO_1048
   LPWKSTA_INFO_1048* = ptr WKSTA_INFO_1048
   WKSTA_INFO_1049* {.pure.} = object
     wki1049_use_unlock_behind*: WINBOOL
+
   PWKSTA_INFO_1049* = ptr WKSTA_INFO_1049
   LPWKSTA_INFO_1049* = ptr WKSTA_INFO_1049
   WKSTA_INFO_1050* {.pure.} = object
     wki1050_use_close_behind*: WINBOOL
+
   PWKSTA_INFO_1050* = ptr WKSTA_INFO_1050
   LPWKSTA_INFO_1050* = ptr WKSTA_INFO_1050
   WKSTA_INFO_1051* {.pure.} = object
     wki1051_buf_named_pipes*: WINBOOL
+
   PWKSTA_INFO_1051* = ptr WKSTA_INFO_1051
   LPWKSTA_INFO_1051* = ptr WKSTA_INFO_1051
   WKSTA_INFO_1052* {.pure.} = object
     wki1052_use_lock_read_unlock*: WINBOOL
+
   PWKSTA_INFO_1052* = ptr WKSTA_INFO_1052
   LPWKSTA_INFO_1052* = ptr WKSTA_INFO_1052
   WKSTA_INFO_1053* {.pure.} = object
     wki1053_utilize_nt_caching*: WINBOOL
+
   PWKSTA_INFO_1053* = ptr WKSTA_INFO_1053
   LPWKSTA_INFO_1053* = ptr WKSTA_INFO_1053
   WKSTA_INFO_1054* {.pure.} = object
     wki1054_use_raw_read*: WINBOOL
+
   PWKSTA_INFO_1054* = ptr WKSTA_INFO_1054
   LPWKSTA_INFO_1054* = ptr WKSTA_INFO_1054
   WKSTA_INFO_1055* {.pure.} = object
     wki1055_use_raw_write*: WINBOOL
+
   PWKSTA_INFO_1055* = ptr WKSTA_INFO_1055
   LPWKSTA_INFO_1055* = ptr WKSTA_INFO_1055
   WKSTA_INFO_1056* {.pure.} = object
     wki1056_use_write_raw_data*: WINBOOL
+
   PWKSTA_INFO_1056* = ptr WKSTA_INFO_1056
   LPWKSTA_INFO_1056* = ptr WKSTA_INFO_1056
   WKSTA_INFO_1057* {.pure.} = object
     wki1057_use_encryption*: WINBOOL
+
   PWKSTA_INFO_1057* = ptr WKSTA_INFO_1057
   LPWKSTA_INFO_1057* = ptr WKSTA_INFO_1057
   WKSTA_INFO_1058* {.pure.} = object
     wki1058_buf_files_deny_write*: WINBOOL
+
   PWKSTA_INFO_1058* = ptr WKSTA_INFO_1058
   LPWKSTA_INFO_1058* = ptr WKSTA_INFO_1058
   WKSTA_INFO_1059* {.pure.} = object
     wki1059_buf_read_only_files*: WINBOOL
+
   PWKSTA_INFO_1059* = ptr WKSTA_INFO_1059
   LPWKSTA_INFO_1059* = ptr WKSTA_INFO_1059
   WKSTA_INFO_1060* {.pure.} = object
     wki1060_force_core_create_mode*: WINBOOL
+
   PWKSTA_INFO_1060* = ptr WKSTA_INFO_1060
   LPWKSTA_INFO_1060* = ptr WKSTA_INFO_1060
   WKSTA_INFO_1061* {.pure.} = object
     wki1061_use_512_byte_max_transfer*: WINBOOL
+
   PWKSTA_INFO_1061* = ptr WKSTA_INFO_1061
   LPWKSTA_INFO_1061* = ptr WKSTA_INFO_1061
   WKSTA_INFO_1062* {.pure.} = object
     wki1062_read_ahead_throughput*: DWORD
+
   PWKSTA_INFO_1062* = ptr WKSTA_INFO_1062
   LPWKSTA_INFO_1062* = ptr WKSTA_INFO_1062
   WKSTA_USER_INFO_0* {.pure.} = object
     wkui0_username*: LMSTR
+
   PWKSTA_USER_INFO_0* = ptr WKSTA_USER_INFO_0
   LPWKSTA_USER_INFO_0* = ptr WKSTA_USER_INFO_0
   WKSTA_USER_INFO_1* {.pure.} = object
@@ -1798,10 +2066,12 @@
     wkui1_logon_domain*: LMSTR
     wkui1_oth_domains*: LMSTR
     wkui1_logon_server*: LMSTR
+
   PWKSTA_USER_INFO_1* = ptr WKSTA_USER_INFO_1
   LPWKSTA_USER_INFO_1* = ptr WKSTA_USER_INFO_1
   WKSTA_USER_INFO_1101* {.pure.} = object
     wkui1101_oth_domains*: LMSTR
+
   PWKSTA_USER_INFO_1101* = ptr WKSTA_USER_INFO_1101
   LPWKSTA_USER_INFO_1101* = ptr WKSTA_USER_INFO_1101
   WKSTA_TRANSPORT_INFO_0* {.pure.} = object
@@ -1810,6 +2080,7 @@
     wkti0_transport_name*: LMSTR
     wkti0_transport_address*: LMSTR
     wkti0_wan_ish*: WINBOOL
+
   PWKSTA_TRANSPORT_INFO_0* = ptr WKSTA_TRANSPORT_INFO_0
   LPWKSTA_TRANSPORT_INFO_0* = ptr WKSTA_TRANSPORT_INFO_0
   ERROR_LOG* {.pure.} = object
@@ -1822,17 +2093,20 @@
     el_data*: LPBYTE
     el_data_size*: DWORD
     el_nstrings*: DWORD
+
   PERROR_LOG* = ptr ERROR_LOG
   HLOG* {.pure.} = object
     time*: DWORD
     last_flags*: DWORD
     offset*: DWORD
     rec_offset*: DWORD
+
   PHLOG* = ptr HLOG
   LPHLOG* = ptr HLOG
   CONFIG_INFO_0* {.pure.} = object
     cfgi0_key*: LPWSTR
     cfgi0_data*: LPWSTR
+
   PCONFIG_INFO_0* = ptr CONFIG_INFO_0
   LPCONFIG_INFO_0* = ptr CONFIG_INFO_0
   STAT_WORKSTATION_0* {.pure.} = object
@@ -1876,6 +2150,7 @@
     UseCount*: DWORD
     FailedUseCount*: DWORD
     CurrentCommands*: DWORD
+
   PSTAT_WORKSTATION_0* = ptr STAT_WORKSTATION_0
   LPSTAT_WORKSTATION_0* = ptr STAT_WORKSTATION_0
   STAT_SERVER_0* {.pure.} = object
@@ -1896,6 +2171,7 @@
     sts0_avresponse*: DWORD
     sts0_reqbufneed*: DWORD
     sts0_bigbufneed*: DWORD
+
   PSTAT_SERVER_0* = ptr STAT_SERVER_0
   LPSTAT_SERVER_0* = ptr STAT_SERVER_0
   AUDIT_ENTRY* {.pure.} = object
@@ -1905,27 +2181,32 @@
     ae_type*: DWORD
     ae_data_offset*: DWORD
     ae_data_size*: DWORD
+
   PAUDIT_ENTRY* = ptr AUDIT_ENTRY
   LPAUDIT_ENTRY* = ptr AUDIT_ENTRY
   TAE_SRVSTATUS* {.pure.} = object
     ae_sv_status*: DWORD
+
   PAE_SRVSTATUS* = ptr TAE_SRVSTATUS
   LPAE_SRVSTATUS* = ptr TAE_SRVSTATUS
   TAE_SESSLOGON* {.pure.} = object
     ae_so_compname*: DWORD
     ae_so_username*: DWORD
     ae_so_privilege*: DWORD
+
   PAE_SESSLOGON* = ptr TAE_SESSLOGON
   LPAE_SESSLOGON* = ptr TAE_SESSLOGON
   TAE_SESSLOGOFF* {.pure.} = object
     ae_sf_compname*: DWORD
     ae_sf_username*: DWORD
     ae_sf_reason*: DWORD
+
   PAE_SESSLOGOFF* = ptr TAE_SESSLOGOFF
   LPAE_SESSLOGOFF* = ptr TAE_SESSLOGOFF
   TAE_SESSPWERR* {.pure.} = object
     ae_sp_compname*: DWORD
     ae_sp_username*: DWORD
+
   PAE_SESSPWERR* = ptr TAE_SESSPWERR
   LPAE_SESSPWERR* = ptr TAE_SESSPWERR
   TAE_CONNSTART* {.pure.} = object
@@ -1933,6 +2214,7 @@
     ae_ct_username*: DWORD
     ae_ct_netname*: DWORD
     ae_ct_connid*: DWORD
+
   PAE_CONNSTART* = ptr TAE_CONNSTART
   LPAE_CONNSTART* = ptr TAE_CONNSTART
   TAE_CONNSTOP* {.pure.} = object
@@ -1941,6 +2223,7 @@
     ae_cp_netname*: DWORD
     ae_cp_connid*: DWORD
     ae_cp_reason*: DWORD
+
   PAE_CONNSTOP* = ptr TAE_CONNSTOP
   LPAE_CONNSTOP* = ptr TAE_CONNSTOP
   TAE_CONNREJ* {.pure.} = object
@@ -1948,6 +2231,7 @@
     ae_cr_username*: DWORD
     ae_cr_netname*: DWORD
     ae_cr_reason*: DWORD
+
   PAE_CONNREJ* = ptr TAE_CONNREJ
   LPAE_CONNREJ* = ptr TAE_CONNREJ
   TAE_RESACCESS* {.pure.} = object
@@ -1958,6 +2242,7 @@
     ae_ra_returncode*: DWORD
     ae_ra_restype*: DWORD
     ae_ra_fileid*: DWORD
+
   PAE_RESACCESS* = ptr TAE_RESACCESS
   LPAE_RESACCESS* = ptr TAE_RESACCESS
   TAE_RESACCESSREJ* {.pure.} = object
@@ -1965,6 +2250,7 @@
     ae_rr_username*: DWORD
     ae_rr_resname*: DWORD
     ae_rr_operation*: DWORD
+
   PAE_RESACCESSREJ* = ptr TAE_RESACCESSREJ
   LPAE_RESACCESSREJ* = ptr TAE_RESACCESSREJ
   TAE_CLOSEFILE* {.pure.} = object
@@ -1974,6 +2260,7 @@
     ae_cf_fileid*: DWORD
     ae_cf_duration*: DWORD
     ae_cf_reason*: DWORD
+
   PAE_CLOSEFILE* = ptr TAE_CLOSEFILE
   LPAE_CLOSEFILE* = ptr TAE_CLOSEFILE
   TAE_SERVICESTAT* {.pure.} = object
@@ -1984,6 +2271,7 @@
     ae_ss_code*: DWORD
     ae_ss_text*: DWORD
     ae_ss_returnval*: DWORD
+
   PAE_SERVICESTAT* = ptr TAE_SERVICESTAT
   LPAE_SERVICESTAT* = ptr TAE_SERVICESTAT
   TAE_ACLMOD* {.pure.} = object
@@ -1992,6 +2280,7 @@
     ae_am_resname*: DWORD
     ae_am_action*: DWORD
     ae_am_datalen*: DWORD
+
   PAE_ACLMOD* = ptr TAE_ACLMOD
   LPAE_ACLMOD* = ptr TAE_ACLMOD
   TAE_UASMOD* {.pure.} = object
@@ -2001,6 +2290,7 @@
     ae_um_rectype*: DWORD
     ae_um_action*: DWORD
     ae_um_datalen*: DWORD
+
   PAE_UASMOD* = ptr TAE_UASMOD
   LPAE_UASMOD* = ptr TAE_UASMOD
   TAE_NETLOGON* {.pure.} = object
@@ -2008,6 +2298,7 @@
     ae_no_username*: DWORD
     ae_no_privilege*: DWORD
     ae_no_authflags*: DWORD
+
   PAE_NETLOGON* = ptr TAE_NETLOGON
   LPAE_NETLOGON* = ptr TAE_NETLOGON
   TAE_NETLOGOFF* {.pure.} = object
@@ -2015,6 +2306,7 @@
     ae_nf_username*: DWORD
     ae_nf_reserved1*: DWORD
     ae_nf_reserved2*: DWORD
+
   PAE_NETLOGOFF* = ptr TAE_NETLOGOFF
   LPAE_NETLOGOFF* = ptr TAE_NETLOGOFF
   AE_ACCLIM* {.pure.} = object
@@ -2022,6 +2314,7 @@
     ae_al_username*: DWORD
     ae_al_resname*: DWORD
     ae_al_limit*: DWORD
+
   PAE_ACCLIM* = ptr AE_ACCLIM
   LPAE_ACCLIM* = ptr AE_ACCLIM
   TAE_LOCKOUT* {.pure.} = object
@@ -2029,6 +2322,7 @@
     ae_lk_username*: DWORD
     ae_lk_action*: DWORD
     ae_lk_bad_pw_count*: DWORD
+
   PAE_LOCKOUT* = ptr TAE_LOCKOUT
   LPAE_LOCKOUT* = ptr TAE_LOCKOUT
   AE_GENERIC* {.pure.} = object
@@ -2044,6 +2338,7 @@
     ae_ge_param7*: DWORD
     ae_ge_param8*: DWORD
     ae_ge_param9*: DWORD
+
   PAE_GENERIC* = ptr AE_GENERIC
   LPAE_GENERIC* = ptr AE_GENERIC
   AT_INFO* {.pure.} = object
@@ -2052,6 +2347,7 @@
     DaysOfWeek*: UCHAR
     Flags*: UCHAR
     Command*: LPWSTR
+
   PAT_INFO* = ptr AT_INFO
   LPAT_INFO* = ptr AT_INFO
   AT_ENUM* {.pure.} = object
@@ -2061,15 +2357,18 @@
     DaysOfWeek*: UCHAR
     Flags*: UCHAR
     Command*: LPWSTR
+
   PAT_ENUM* = ptr AT_ENUM
   LPAT_ENUM* = ptr AT_ENUM
   DFS_TARGET_PRIORITY* {.pure.} = object
     TargetPriorityClass*: DFS_TARGET_PRIORITY_CLASS
     TargetPriorityRank*: USHORT
     Reserved*: USHORT
+
   PDFS_TARGET_PRIORITY* = ptr DFS_TARGET_PRIORITY
   DFS_INFO_1* {.pure.} = object
     EntryPath*: LPWSTR
+
   PDFS_INFO_1* = ptr DFS_INFO_1
   LPDFS_INFO_1* = ptr DFS_INFO_1
   DFS_INFO_2* {.pure.} = object
@@ -2077,12 +2376,14 @@
     Comment*: LPWSTR
     State*: DWORD
     NumberOfStorages*: DWORD
+
   PDFS_INFO_2* = ptr DFS_INFO_2
   LPDFS_INFO_2* = ptr DFS_INFO_2
   DFS_STORAGE_INFO* {.pure.} = object
     State*: ULONG
     ServerName*: LPWSTR
     ShareName*: LPWSTR
+
   PDFS_STORAGE_INFO* = ptr DFS_STORAGE_INFO
   LPDFS_STORAGE_INFO* = ptr DFS_STORAGE_INFO
   DFS_STORAGE_INFO_1* {.pure.} = object
@@ -2090,6 +2391,7 @@
     ServerName*: LPWSTR
     ShareName*: LPWSTR
     TargetPriority*: DFS_TARGET_PRIORITY
+
   PDFS_STORAGE_INFO_1* = ptr DFS_STORAGE_INFO_1
   LPDFS_STORAGE_INFO_1* = ptr DFS_STORAGE_INFO_1
   DFS_INFO_3* {.pure.} = object
@@ -2098,6 +2400,7 @@
     State*: DWORD
     NumberOfStorages*: DWORD
     Storage*: LPDFS_STORAGE_INFO
+
   PDFS_INFO_3* = ptr DFS_INFO_3
   LPDFS_INFO_3* = ptr DFS_INFO_3
   DFS_INFO_4* {.pure.} = object
@@ -2108,6 +2411,7 @@
     Guid*: GUID
     NumberOfStorages*: DWORD
     Storage*: LPDFS_STORAGE_INFO
+
   PDFS_INFO_4* = ptr DFS_INFO_4
   LPDFS_INFO_4* = ptr DFS_INFO_4
   DFS_INFO_5* {.pure.} = object
@@ -2119,6 +2423,7 @@
     PropertyFlags*: ULONG
     MetadataSize*: ULONG
     NumberOfStorages*: DWORD
+
   PDFS_INFO_5* = ptr DFS_INFO_5
   LPDFS_INFO_5* = ptr DFS_INFO_5
   DFS_INFO_6* {.pure.} = object
@@ -2131,31 +2436,38 @@
     MetadataSize*: ULONG
     NumberOfStorages*: DWORD
     Storage*: LPDFS_STORAGE_INFO_1
+
   PDFS_INFO_6* = ptr DFS_INFO_6
   LPDFS_INFO_6* = ptr DFS_INFO_6
   DFS_INFO_7* {.pure.} = object
     GenerationGuid*: GUID
+
   PDFS_INFO_7* = ptr DFS_INFO_7
   LPDFS_INFO_7* = ptr DFS_INFO_7
   DFS_INFO_100* {.pure.} = object
     Comment*: LPWSTR
+
   PDFS_INFO_100* = ptr DFS_INFO_100
   LPDFS_INFO_100* = ptr DFS_INFO_100
   DFS_INFO_101* {.pure.} = object
     State*: DWORD
+
   PDFS_INFO_101* = ptr DFS_INFO_101
   LPDFS_INFO_101* = ptr DFS_INFO_101
   DFS_INFO_102* {.pure.} = object
     Timeout*: ULONG
+
   PDFS_INFO_102* = ptr DFS_INFO_102
   LPDFS_INFO_102* = ptr DFS_INFO_102
   DFS_INFO_103* {.pure.} = object
     PropertyFlagMask*: ULONG
     PropertyFlags*: ULONG
+
   PDFS_INFO_103* = ptr DFS_INFO_103
   LPDFS_INFO_103* = ptr DFS_INFO_103
   DFS_INFO_104* {.pure.} = object
     TargetPriority*: DFS_TARGET_PRIORITY
+
   PDFS_INFO_104* = ptr DFS_INFO_104
   LPDFS_INFO_104* = ptr DFS_INFO_104
   DFS_INFO_105* {.pure.} = object
@@ -2164,11 +2476,13 @@
     Timeout*: ULONG
     PropertyFlagMask*: ULONG
     PropertyFlags*: ULONG
+
   PDFS_INFO_105* = ptr DFS_INFO_105
   LPDFS_INFO_105* = ptr DFS_INFO_105
   DFS_INFO_106* {.pure.} = object
     State*: DWORD
     TargetPriority*: DFS_TARGET_PRIORITY
+
   PDFS_INFO_106* = ptr DFS_INFO_106
   LPDFS_INFO_106* = ptr DFS_INFO_106
   DFS_SUPPORTED_NAMESPACE_VERSION_INFO* {.pure.} = object
@@ -2178,6 +2492,7 @@
     StandaloneDfsMajorVersion*: ULONG
     StandaloneDfsMinorVersion*: ULONG
     StandaloneDfsCapabilities*: ULONGLONG
+
   PDFS_SUPPORTED_NAMESPACE_VERSION_INFO* = ptr DFS_SUPPORTED_NAMESPACE_VERSION_INFO
   DFS_INFO_8* {.pure.} = object
     EntryPath*: LPWSTR
@@ -2190,6 +2505,7 @@
     SdLengthReserved*: ULONG
     pSecurityDescriptor*: PSECURITY_DESCRIPTOR
     NumberOfStorages*: DWORD
+
   PDFS_INFO_8* = ptr DFS_INFO_8
   DFS_INFO_9* {.pure.} = object
     EntryPath*: LPWSTR
@@ -2203,11 +2519,13 @@
     pSecurityDescriptor*: PSECURITY_DESCRIPTOR
     NumberOfStorages*: DWORD
     Storage*: LPDFS_STORAGE_INFO_1
+
   PDFS_INFO_9* = ptr DFS_INFO_9
   DFS_INFO_50* {.pure.} = object
     NamespaceMajorVersion*: ULONG
     NamespaceMinorVersion*: ULONG
     NamespaceCapabilities*: ULONGLONG
+
   PDFS_INFO_50* = ptr DFS_INFO_50
   DFS_INFO_107* {.pure.} = object
     Comment*: LPWSTR
@@ -2217,53 +2535,62 @@
     PropertyFlags*: ULONG
     SdLengthReserved*: ULONG
     pSecurityDescriptor*: PSECURITY_DESCRIPTOR
+
   PDFS_INFO_107* = ptr DFS_INFO_107
   DFS_INFO_150* {.pure.} = object
     SdLengthReserved*: ULONG
     pSecurityDescriptor*: PSECURITY_DESCRIPTOR
+
   PDFS_INFO_150* = ptr DFS_INFO_150
   DFS_INFO_200* {.pure.} = object
     FtDfsName*: LPWSTR
+
   PDFS_INFO_200* = ptr DFS_INFO_200
   LPDFS_INFO_200* = ptr DFS_INFO_200
   DFS_INFO_300* {.pure.} = object
     Flags*: DWORD
     DfsName*: LPWSTR
+
   PDFS_INFO_300* = ptr DFS_INFO_300
   LPDFS_INFO_300* = ptr DFS_INFO_300
   DFS_SITENAME_INFO* {.pure.} = object
     SiteFlags*: ULONG
     SiteName*: LPWSTR
+
   PDFS_SITENAME_INFO* = ptr DFS_SITENAME_INFO
   LPDFS_SITENAME_INFO* = ptr DFS_SITENAME_INFO
   DFS_SITELIST_INFO* {.pure.} = object
     cSites*: ULONG
     Site*: array[1, DFS_SITENAME_INFO]
+
   PDFS_SITELIST_INFO* = ptr DFS_SITELIST_INFO
   LPDFS_SITELIST_INFO* = ptr DFS_SITELIST_INFO
   PORT_INFO_FFW* {.pure.} = object
     pName*: LPWSTR
     cbMonitorData*: DWORD
     pMonitorData*: LPBYTE
+
   PPORT_INFO_FFW* = ptr PORT_INFO_FFW
   LPPORT_INFO_FFW* = ptr PORT_INFO_FFW
   PORT_INFO_FFA* {.pure.} = object
     pName*: LPSTR
     cbMonitorData*: DWORD
     pMonitorData*: LPBYTE
+
   PPORT_INFO_FFA* = ptr PORT_INFO_FFA
   LPPORT_INFO_FFA* = ptr PORT_INFO_FFA
+
 const
   CNLEN* = 15
   LM20_CNLEN* = 15
   DNLEN* = CNLEN
   LM20_DNLEN* = LM20_CNLEN
-  UNCLEN* = CNLEN+2
-  LM20_UNCLEN* = LM20_CNLEN+2
+  UNCLEN* = CNLEN + 2
+  LM20_UNCLEN* = LM20_CNLEN + 2
   NNLEN* = 80
   LM20_NNLEN* = 12
-  RMLEN* = UNCLEN+1+NNLEN
-  LM20_RMLEN* = LM20_UNCLEN+1+LM20_NNLEN
+  RMLEN* = UNCLEN + 1 + NNLEN
+  LM20_RMLEN* = LM20_UNCLEN + 1 + LM20_NNLEN
   LM20_SNLEN* = 15
   STXTLEN* = 256
   LM20_STXTLEN* = 63
@@ -2306,316 +2633,316 @@
   MIN_LANMAN_MESSAGE_ID* = NERR_BASE
   MAX_LANMAN_MESSAGE_ID* = 5899
   NERR_Success* = 0
-  NERR_NetNotStarted* = NERR_BASE+2
-  NERR_UnknownServer* = NERR_BASE+3
-  NERR_ShareMem* = NERR_BASE+4
-  NERR_NoNetworkResource* = NERR_BASE+5
-  NERR_RemoteOnly* = NERR_BASE+6
-  NERR_DevNotRedirected* = NERR_BASE+7
-  NERR_ServerNotStarted* = NERR_BASE+14
-  NERR_ItemNotFound* = NERR_BASE+15
-  NERR_UnknownDevDir* = NERR_BASE+16
-  NERR_RedirectedPath* = NERR_BASE+17
-  NERR_DuplicateShare* = NERR_BASE+18
-  NERR_NoRoom* = NERR_BASE+19
-  NERR_TooManyItems* = NERR_BASE+21
-  NERR_InvalidMaxUsers* = NERR_BASE+22
-  NERR_BufTooSmall* = NERR_BASE+23
-  NERR_RemoteErr* = NERR_BASE+27
-  NERR_LanmanIniError* = NERR_BASE+31
-  NERR_NetworkError* = NERR_BASE+36
-  NERR_WkstaInconsistentState* = NERR_BASE+37
-  NERR_WkstaNotStarted* = NERR_BASE+38
-  NERR_BrowserNotStarted* = NERR_BASE+39
-  NERR_InternalError* = NERR_BASE+40
-  NERR_BadTransactConfig* = NERR_BASE+41
-  NERR_InvalidAPI* = NERR_BASE+42
-  NERR_BadEventName* = NERR_BASE+43
-  NERR_DupNameReboot* = NERR_BASE+44
-  NERR_CfgCompNotFound* = NERR_BASE+46
-  NERR_CfgParamNotFound* = NERR_BASE+47
-  NERR_LineTooLong* = NERR_BASE+49
-  NERR_QNotFound* = NERR_BASE+50
-  NERR_JobNotFound* = NERR_BASE+51
-  NERR_DestNotFound* = NERR_BASE+52
-  NERR_DestExists* = NERR_BASE+53
-  NERR_QExists* = NERR_BASE+54
-  NERR_QNoRoom* = NERR_BASE+55
-  NERR_JobNoRoom* = NERR_BASE+56
-  NERR_DestNoRoom* = NERR_BASE+57
-  NERR_DestIdle* = NERR_BASE+58
-  NERR_DestInvalidOp* = NERR_BASE+59
-  NERR_ProcNoRespond* = NERR_BASE+60
-  NERR_SpoolerNotLoaded* = NERR_BASE+61
-  NERR_DestInvalidState* = NERR_BASE+62
-  NERR_QInvalidState* = NERR_BASE+63
-  NERR_JobInvalidState* = NERR_BASE+64
-  NERR_SpoolNoMemory* = NERR_BASE+65
-  NERR_DriverNotFound* = NERR_BASE+66
-  NERR_DataTypeInvalid* = NERR_BASE+67
-  NERR_ProcNotFound* = NERR_BASE+68
-  NERR_ServiceTableLocked* = NERR_BASE+80
-  NERR_ServiceTableFull* = NERR_BASE+81
-  NERR_ServiceInstalled* = NERR_BASE+82
-  NERR_ServiceEntryLocked* = NERR_BASE+83
-  NERR_ServiceNotInstalled* = NERR_BASE+84
-  NERR_BadServiceName* = NERR_BASE+85
-  NERR_ServiceCtlTimeout* = NERR_BASE+86
-  NERR_ServiceCtlBusy* = NERR_BASE+87
-  NERR_BadServiceProgName* = NERR_BASE+88
-  NERR_ServiceNotCtrl* = NERR_BASE+89
-  NERR_ServiceKillProc* = NERR_BASE+90
-  NERR_ServiceCtlNotValid* = NERR_BASE+91
-  NERR_NotInDispatchTbl* = NERR_BASE+92
-  NERR_BadControlRecv* = NERR_BASE+93
-  NERR_ServiceNotStarting* = NERR_BASE+94
-  NERR_AlreadyLoggedOn* = NERR_BASE+100
-  NERR_NotLoggedOn* = NERR_BASE+101
-  NERR_BadUsername* = NERR_BASE+102
-  NERR_BadPassword* = NERR_BASE+103
-  NERR_UnableToAddName_W* = NERR_BASE+104
-  NERR_UnableToAddName_F* = NERR_BASE+105
-  NERR_UnableToDelName_W* = NERR_BASE+106
-  NERR_UnableToDelName_F* = NERR_BASE+107
-  NERR_LogonsPaused* = NERR_BASE+109
-  NERR_LogonServerConflict* = NERR_BASE+110
-  NERR_LogonNoUserPath* = NERR_BASE+111
-  NERR_LogonScriptError* = NERR_BASE+112
-  NERR_StandaloneLogon* = NERR_BASE+114
-  NERR_LogonServerNotFound* = NERR_BASE+115
-  NERR_LogonDomainExists* = NERR_BASE+116
-  NERR_NonValidatedLogon* = NERR_BASE+117
-  NERR_ACFNotFound* = NERR_BASE+119
-  NERR_GroupNotFound* = NERR_BASE+120
-  NERR_UserNotFound* = NERR_BASE+121
-  NERR_ResourceNotFound* = NERR_BASE+122
-  NERR_GroupExists* = NERR_BASE+123
-  NERR_UserExists* = NERR_BASE+124
-  NERR_ResourceExists* = NERR_BASE+125
-  NERR_NotPrimary* = NERR_BASE+126
-  NERR_ACFNotLoaded* = NERR_BASE+127
-  NERR_ACFNoRoom* = NERR_BASE+128
-  NERR_ACFFileIOFail* = NERR_BASE+129
-  NERR_ACFTooManyLists* = NERR_BASE+130
-  NERR_UserLogon* = NERR_BASE+131
-  NERR_ACFNoParent* = NERR_BASE+132
-  NERR_CanNotGrowSegment* = NERR_BASE+133
-  NERR_SpeGroupOp* = NERR_BASE+134
-  NERR_NotInCache* = NERR_BASE+135
-  NERR_UserInGroup* = NERR_BASE+136
-  NERR_UserNotInGroup* = NERR_BASE+137
-  NERR_AccountUndefined* = NERR_BASE+138
-  NERR_AccountExpired* = NERR_BASE+139
-  NERR_InvalidWorkstation* = NERR_BASE+140
-  NERR_InvalidLogonHours* = NERR_BASE+141
-  NERR_PasswordExpired* = NERR_BASE+142
-  NERR_PasswordCantChange* = NERR_BASE+143
-  NERR_PasswordHistConflict* = NERR_BASE+144
-  NERR_PasswordTooShort* = NERR_BASE+145
-  NERR_PasswordTooRecent* = NERR_BASE+146
-  NERR_InvalidDatabase* = NERR_BASE+147
-  NERR_DatabaseUpToDate* = NERR_BASE+148
-  NERR_SyncRequired* = NERR_BASE+149
-  NERR_UseNotFound* = NERR_BASE+150
-  NERR_BadAsgType* = NERR_BASE+151
-  NERR_DeviceIsShared* = NERR_BASE+152
-  NERR_NoComputerName* = NERR_BASE+170
-  NERR_MsgAlreadyStarted* = NERR_BASE+171
-  NERR_MsgInitFailed* = NERR_BASE+172
-  NERR_NameNotFound* = NERR_BASE+173
-  NERR_AlreadyForwarded* = NERR_BASE+174
-  NERR_AddForwarded* = NERR_BASE+175
-  NERR_AlreadyExists* = NERR_BASE+176
-  NERR_TooManyNames* = NERR_BASE+177
-  NERR_DelComputerName* = NERR_BASE+178
-  NERR_LocalForward* = NERR_BASE+179
-  NERR_GrpMsgProcessor* = NERR_BASE+180
-  NERR_PausedRemote* = NERR_BASE+181
-  NERR_BadReceive* = NERR_BASE+182
-  NERR_NameInUse* = NERR_BASE+183
-  NERR_MsgNotStarted* = NERR_BASE+184
-  NERR_NotLocalName* = NERR_BASE+185
-  NERR_NoForwardName* = NERR_BASE+186
-  NERR_RemoteFull* = NERR_BASE+187
-  NERR_NameNotForwarded* = NERR_BASE+188
-  NERR_TruncatedBroadcast* = NERR_BASE+189
-  NERR_InvalidDevice* = NERR_BASE+194
-  NERR_WriteFault* = NERR_BASE+195
-  NERR_DuplicateName* = NERR_BASE+197
-  NERR_DeleteLater* = NERR_BASE+198
-  NERR_IncompleteDel* = NERR_BASE+199
-  NERR_MultipleNets* = NERR_BASE+200
-  NERR_NetNameNotFound* = NERR_BASE+210
-  NERR_DeviceNotShared* = NERR_BASE+211
-  NERR_ClientNameNotFound* = NERR_BASE+212
-  NERR_FileIdNotFound* = NERR_BASE+214
-  NERR_ExecFailure* = NERR_BASE+215
-  NERR_TmpFile* = NERR_BASE+216
-  NERR_TooMuchData* = NERR_BASE+217
-  NERR_DeviceShareConflict* = NERR_BASE+218
-  NERR_BrowserTableIncomplete* = NERR_BASE+219
-  NERR_NotLocalDomain* = NERR_BASE+220
-  NERR_IsDfsShare* = NERR_BASE+221
-  NERR_DevInvalidOpCode* = NERR_BASE+231
-  NERR_DevNotFound* = NERR_BASE+232
-  NERR_DevNotOpen* = NERR_BASE+233
-  NERR_BadQueueDevString* = NERR_BASE+234
-  NERR_BadQueuePriority* = NERR_BASE+235
-  NERR_NoCommDevs* = NERR_BASE+237
-  NERR_QueueNotFound* = NERR_BASE+238
-  NERR_BadDevString* = NERR_BASE+240
-  NERR_BadDev* = NERR_BASE+241
-  NERR_InUseBySpooler* = NERR_BASE+242
-  NERR_CommDevInUse* = NERR_BASE+243
-  NERR_InvalidComputer* = NERR_BASE+251
-  NERR_MaxLenExceeded* = NERR_BASE+254
-  NERR_BadComponent* = NERR_BASE+256
-  NERR_CantType* = NERR_BASE+257
-  NERR_TooManyEntries* = NERR_BASE+262
-  NERR_ProfileFileTooBig* = NERR_BASE+270
-  NERR_ProfileOffset* = NERR_BASE+271
-  NERR_ProfileCleanup* = NERR_BASE+272
-  NERR_ProfileUnknownCmd* = NERR_BASE+273
-  NERR_ProfileLoadErr* = NERR_BASE+274
-  NERR_ProfileSaveErr* = NERR_BASE+275
-  NERR_LogOverflow* = NERR_BASE+277
-  NERR_LogFileChanged* = NERR_BASE+278
-  NERR_LogFileCorrupt* = NERR_BASE+279
-  NERR_SourceIsDir* = NERR_BASE+280
-  NERR_BadSource* = NERR_BASE+281
-  NERR_BadDest* = NERR_BASE+282
-  NERR_DifferentServers* = NERR_BASE+283
-  NERR_RunSrvPaused* = NERR_BASE+285
-  NERR_ErrCommRunSrv* = NERR_BASE+289
-  NERR_ErrorExecingGhost* = NERR_BASE+291
-  NERR_ShareNotFound* = NERR_BASE+292
-  NERR_InvalidLana* = NERR_BASE+300
-  NERR_OpenFiles* = NERR_BASE+301
-  NERR_ActiveConns* = NERR_BASE+302
-  NERR_BadPasswordCore* = NERR_BASE+303
-  NERR_DevInUse* = NERR_BASE+304
-  NERR_LocalDrive* = NERR_BASE+305
-  NERR_AlertExists* = NERR_BASE+330
-  NERR_TooManyAlerts* = NERR_BASE+331
-  NERR_NoSuchAlert* = NERR_BASE+332
-  NERR_BadRecipient* = NERR_BASE+333
-  NERR_AcctLimitExceeded* = NERR_BASE+334
-  NERR_InvalidLogSeek* = NERR_BASE+340
-  NERR_BadUasConfig* = NERR_BASE+350
-  NERR_InvalidUASOp* = NERR_BASE+351
-  NERR_LastAdmin* = NERR_BASE+352
-  NERR_DCNotFound* = NERR_BASE+353
-  NERR_LogonTrackingError* = NERR_BASE+354
-  NERR_NetlogonNotStarted* = NERR_BASE+355
-  NERR_CanNotGrowUASFile* = NERR_BASE+356
-  NERR_TimeDiffAtDC* = NERR_BASE+357
-  NERR_PasswordMismatch* = NERR_BASE+358
-  NERR_NoSuchServer* = NERR_BASE+360
-  NERR_NoSuchSession* = NERR_BASE+361
-  NERR_NoSuchConnection* = NERR_BASE+362
-  NERR_TooManyServers* = NERR_BASE+363
-  NERR_TooManySessions* = NERR_BASE+364
-  NERR_TooManyConnections* = NERR_BASE+365
-  NERR_TooManyFiles* = NERR_BASE+366
-  NERR_NoAlternateServers* = NERR_BASE+367
-  NERR_TryDownLevel* = NERR_BASE+370
-  NERR_UPSDriverNotStarted* = NERR_BASE+380
-  NERR_UPSInvalidConfig* = NERR_BASE+381
-  NERR_UPSInvalidCommPort* = NERR_BASE+382
-  NERR_UPSSignalAsserted* = NERR_BASE+383
-  NERR_UPSShutdownFailed* = NERR_BASE+384
-  NERR_BadDosRetCode* = NERR_BASE+400
-  NERR_ProgNeedsExtraMem* = NERR_BASE+401
-  NERR_BadDosFunction* = NERR_BASE+402
-  NERR_RemoteBootFailed* = NERR_BASE+403
-  NERR_BadFileCheckSum* = NERR_BASE+404
-  NERR_NoRplBootSystem* = NERR_BASE+405
-  NERR_RplLoadrNetBiosErr* = NERR_BASE+406
-  NERR_RplLoadrDiskErr* = NERR_BASE+407
-  NERR_ImageParamErr* = NERR_BASE+408
-  NERR_TooManyImageParams* = NERR_BASE+409
-  NERR_NonDosFloppyUsed* = NERR_BASE+410
-  NERR_RplBootRestart* = NERR_BASE+411
-  NERR_RplSrvrCallFailed* = NERR_BASE+412
-  NERR_CantConnectRplSrvr* = NERR_BASE+413
-  NERR_CantOpenImageFile* = NERR_BASE+414
-  NERR_CallingRplSrvr* = NERR_BASE+415
-  NERR_StartingRplBoot* = NERR_BASE+416
-  NERR_RplBootServiceTerm* = NERR_BASE+417
-  NERR_RplBootStartFailed* = NERR_BASE+418
-  NERR_RPL_CONNECTED* = NERR_BASE+419
-  NERR_BrowserConfiguredToNotRun* = NERR_BASE+450
-  NERR_RplNoAdaptersStarted* = NERR_BASE+510
-  NERR_RplBadRegistry* = NERR_BASE+511
-  NERR_RplBadDatabase* = NERR_BASE+512
-  NERR_RplRplfilesShare* = NERR_BASE+513
-  NERR_RplNotRplServer* = NERR_BASE+514
-  NERR_RplCannotEnum* = NERR_BASE+515
-  NERR_RplWkstaInfoCorrupted* = NERR_BASE+516
-  NERR_RplWkstaNotFound* = NERR_BASE+517
-  NERR_RplWkstaNameUnavailable* = NERR_BASE+518
-  NERR_RplProfileInfoCorrupted* = NERR_BASE+519
-  NERR_RplProfileNotFound* = NERR_BASE+520
-  NERR_RplProfileNameUnavailable* = NERR_BASE+521
-  NERR_RplProfileNotEmpty* = NERR_BASE+522
-  NERR_RplConfigInfoCorrupted* = NERR_BASE+523
-  NERR_RplConfigNotFound* = NERR_BASE+524
-  NERR_RplAdapterInfoCorrupted* = NERR_BASE+525
-  NERR_RplInternal* = NERR_BASE+526
-  NERR_RplVendorInfoCorrupted* = NERR_BASE+527
-  NERR_RplBootInfoCorrupted* = NERR_BASE+528
-  NERR_RplWkstaNeedsUserAcct* = NERR_BASE+529
-  NERR_RplNeedsRPLUSERAcct* = NERR_BASE+530
-  NERR_RplBootNotFound* = NERR_BASE+531
-  NERR_RplIncompatibleProfile* = NERR_BASE+532
-  NERR_RplAdapterNameUnavailable* = NERR_BASE+533
-  NERR_RplConfigNotEmpty* = NERR_BASE+534
-  NERR_RplBootInUse* = NERR_BASE+535
-  NERR_RplBackupDatabase* = NERR_BASE+536
-  NERR_RplAdapterNotFound* = NERR_BASE+537
-  NERR_RplVendorNotFound* = NERR_BASE+538
-  NERR_RplVendorNameUnavailable* = NERR_BASE+539
-  NERR_RplBootNameUnavailable* = NERR_BASE+540
-  NERR_RplConfigNameUnavailable* = NERR_BASE+541
-  NERR_DfsInternalCorruption* = NERR_BASE+560
-  NERR_DfsVolumeDataCorrupt* = NERR_BASE+561
-  NERR_DfsNoSuchVolume* = NERR_BASE+562
-  NERR_DfsVolumeAlreadyExists* = NERR_BASE+563
-  NERR_DfsAlreadyShared* = NERR_BASE+564
-  NERR_DfsNoSuchShare* = NERR_BASE+565
-  NERR_DfsNotALeafVolume* = NERR_BASE+566
-  NERR_DfsLeafVolume* = NERR_BASE+567
-  NERR_DfsVolumeHasMultipleServers* = NERR_BASE+568
-  NERR_DfsCantCreateJunctionPoint* = NERR_BASE+569
-  NERR_DfsServerNotDfsAware* = NERR_BASE+570
-  NERR_DfsBadRenamePath* = NERR_BASE+571
-  NERR_DfsVolumeIsOffline* = NERR_BASE+572
-  NERR_DfsNoSuchServer* = NERR_BASE+573
-  NERR_DfsCyclicalName* = NERR_BASE+574
-  NERR_DfsNotSupportedInServerDfs* = NERR_BASE+575
-  NERR_DfsDuplicateService* = NERR_BASE+576
-  NERR_DfsCantRemoveLastServerShare* = NERR_BASE+577
-  NERR_DfsVolumeIsInterDfs* = NERR_BASE+578
-  NERR_DfsInconsistent* = NERR_BASE+579
-  NERR_DfsServerUpgraded* = NERR_BASE+580
-  NERR_DfsDataIsIdentical* = NERR_BASE+581
-  NERR_DfsCantRemoveDfsRoot* = NERR_BASE+582
-  NERR_DfsChildOrParentInDfs* = NERR_BASE+583
-  NERR_DfsInternalError* = NERR_BASE+590
-  NERR_SetupAlreadyJoined* = NERR_BASE+591
-  NERR_SetupNotJoined* = NERR_BASE+592
-  NERR_SetupDomainController* = NERR_BASE+593
-  NERR_DefaultJoinRequired* = NERR_BASE+594
-  NERR_InvalidWorkgroupName* = NERR_BASE+595
-  NERR_NameUsesIncompatibleCodePage* = NERR_BASE+596
-  NERR_ComputerAccountNotFound* = NERR_BASE+597
-  NERR_PersonalSku* = NERR_BASE+598
-  NERR_PasswordMustChange* = NERR_BASE+601
-  NERR_AccountLockedOut* = NERR_BASE+602
-  NERR_PasswordTooLong* = NERR_BASE+603
-  NERR_PasswordNotComplexEnough* = NERR_BASE+604
-  NERR_PasswordFilterError* = NERR_BASE+605
-  MAX_NERR* = NERR_BASE+899
+  NERR_NetNotStarted* = NERR_BASE + 2
+  NERR_UnknownServer* = NERR_BASE + 3
+  NERR_ShareMem* = NERR_BASE + 4
+  NERR_NoNetworkResource* = NERR_BASE + 5
+  NERR_RemoteOnly* = NERR_BASE + 6
+  NERR_DevNotRedirected* = NERR_BASE + 7
+  NERR_ServerNotStarted* = NERR_BASE + 14
+  NERR_ItemNotFound* = NERR_BASE + 15
+  NERR_UnknownDevDir* = NERR_BASE + 16
+  NERR_RedirectedPath* = NERR_BASE + 17
+  NERR_DuplicateShare* = NERR_BASE + 18
+  NERR_NoRoom* = NERR_BASE + 19
+  NERR_TooManyItems* = NERR_BASE + 21
+  NERR_InvalidMaxUsers* = NERR_BASE + 22
+  NERR_BufTooSmall* = NERR_BASE + 23
+  NERR_RemoteErr* = NERR_BASE + 27
+  NERR_LanmanIniError* = NERR_BASE + 31
+  NERR_NetworkError* = NERR_BASE + 36
+  NERR_WkstaInconsistentState* = NERR_BASE + 37
+  NERR_WkstaNotStarted* = NERR_BASE + 38
+  NERR_BrowserNotStarted* = NERR_BASE + 39
+  NERR_InternalError* = NERR_BASE + 40
+  NERR_BadTransactConfig* = NERR_BASE + 41
+  NERR_InvalidAPI* = NERR_BASE + 42
+  NERR_BadEventName* = NERR_BASE + 43
+  NERR_DupNameReboot* = NERR_BASE + 44
+  NERR_CfgCompNotFound* = NERR_BASE + 46
+  NERR_CfgParamNotFound* = NERR_BASE + 47
+  NERR_LineTooLong* = NERR_BASE + 49
+  NERR_QNotFound* = NERR_BASE + 50
+  NERR_JobNotFound* = NERR_BASE + 51
+  NERR_DestNotFound* = NERR_BASE + 52
+  NERR_DestExists* = NERR_BASE + 53
+  NERR_QExists* = NERR_BASE + 54
+  NERR_QNoRoom* = NERR_BASE + 55
+  NERR_JobNoRoom* = NERR_BASE + 56
+  NERR_DestNoRoom* = NERR_BASE + 57
+  NERR_DestIdle* = NERR_BASE + 58
+  NERR_DestInvalidOp* = NERR_BASE + 59
+  NERR_ProcNoRespond* = NERR_BASE + 60
+  NERR_SpoolerNotLoaded* = NERR_BASE + 61
+  NERR_DestInvalidState* = NERR_BASE + 62
+  NERR_QInvalidState* = NERR_BASE + 63
+  NERR_JobInvalidState* = NERR_BASE + 64
+  NERR_SpoolNoMemory* = NERR_BASE + 65
+  NERR_DriverNotFound* = NERR_BASE + 66
+  NERR_DataTypeInvalid* = NERR_BASE + 67
+  NERR_ProcNotFound* = NERR_BASE + 68
+  NERR_ServiceTableLocked* = NERR_BASE + 80
+  NERR_ServiceTableFull* = NERR_BASE + 81
+  NERR_ServiceInstalled* = NERR_BASE + 82
+  NERR_ServiceEntryLocked* = NERR_BASE + 83
+  NERR_ServiceNotInstalled* = NERR_BASE + 84
+  NERR_BadServiceName* = NERR_BASE + 85
+  NERR_ServiceCtlTimeout* = NERR_BASE + 86
+  NERR_ServiceCtlBusy* = NERR_BASE + 87
+  NERR_BadServiceProgName* = NERR_BASE + 88
+  NERR_ServiceNotCtrl* = NERR_BASE + 89
+  NERR_ServiceKillProc* = NERR_BASE + 90
+  NERR_ServiceCtlNotValid* = NERR_BASE + 91
+  NERR_NotInDispatchTbl* = NERR_BASE + 92
+  NERR_BadControlRecv* = NERR_BASE + 93
+  NERR_ServiceNotStarting* = NERR_BASE + 94
+  NERR_AlreadyLoggedOn* = NERR_BASE + 100
+  NERR_NotLoggedOn* = NERR_BASE + 101
+  NERR_BadUsername* = NERR_BASE + 102
+  NERR_BadPassword* = NERR_BASE + 103
+  NERR_UnableToAddName_W* = NERR_BASE + 104
+  NERR_UnableToAddName_F* = NERR_BASE + 105
+  NERR_UnableToDelName_W* = NERR_BASE + 106
+  NERR_UnableToDelName_F* = NERR_BASE + 107
+  NERR_LogonsPaused* = NERR_BASE + 109
+  NERR_LogonServerConflict* = NERR_BASE + 110
+  NERR_LogonNoUserPath* = NERR_BASE + 111
+  NERR_LogonScriptError* = NERR_BASE + 112
+  NERR_StandaloneLogon* = NERR_BASE + 114
+  NERR_LogonServerNotFound* = NERR_BASE + 115
+  NERR_LogonDomainExists* = NERR_BASE + 116
+  NERR_NonValidatedLogon* = NERR_BASE + 117
+  NERR_ACFNotFound* = NERR_BASE + 119
+  NERR_GroupNotFound* = NERR_BASE + 120
+  NERR_UserNotFound* = NERR_BASE + 121
+  NERR_ResourceNotFound* = NERR_BASE + 122
+  NERR_GroupExists* = NERR_BASE + 123
+  NERR_UserExists* = NERR_BASE + 124
+  NERR_ResourceExists* = NERR_BASE + 125
+  NERR_NotPrimary* = NERR_BASE + 126
+  NERR_ACFNotLoaded* = NERR_BASE + 127
+  NERR_ACFNoRoom* = NERR_BASE + 128
+  NERR_ACFFileIOFail* = NERR_BASE + 129
+  NERR_ACFTooManyLists* = NERR_BASE + 130
+  NERR_UserLogon* = NERR_BASE + 131
+  NERR_ACFNoParent* = NERR_BASE + 132
+  NERR_CanNotGrowSegment* = NERR_BASE + 133
+  NERR_SpeGroupOp* = NERR_BASE + 134
+  NERR_NotInCache* = NERR_BASE + 135
+  NERR_UserInGroup* = NERR_BASE + 136
+  NERR_UserNotInGroup* = NERR_BASE + 137
+  NERR_AccountUndefined* = NERR_BASE + 138
+  NERR_AccountExpired* = NERR_BASE + 139
+  NERR_InvalidWorkstation* = NERR_BASE + 140
+  NERR_InvalidLogonHours* = NERR_BASE + 141
+  NERR_PasswordExpired* = NERR_BASE + 142
+  NERR_PasswordCantChange* = NERR_BASE + 143
+  NERR_PasswordHistConflict* = NERR_BASE + 144
+  NERR_PasswordTooShort* = NERR_BASE + 145
+  NERR_PasswordTooRecent* = NERR_BASE + 146
+  NERR_InvalidDatabase* = NERR_BASE + 147
+  NERR_DatabaseUpToDate* = NERR_BASE + 148
+  NERR_SyncRequired* = NERR_BASE + 149
+  NERR_UseNotFound* = NERR_BASE + 150
+  NERR_BadAsgType* = NERR_BASE + 151
+  NERR_DeviceIsShared* = NERR_BASE + 152
+  NERR_NoComputerName* = NERR_BASE + 170
+  NERR_MsgAlreadyStarted* = NERR_BASE + 171
+  NERR_MsgInitFailed* = NERR_BASE + 172
+  NERR_NameNotFound* = NERR_BASE + 173
+  NERR_AlreadyForwarded* = NERR_BASE + 174
+  NERR_AddForwarded* = NERR_BASE + 175
+  NERR_AlreadyExists* = NERR_BASE + 176
+  NERR_TooManyNames* = NERR_BASE + 177
+  NERR_DelComputerName* = NERR_BASE + 178
+  NERR_LocalForward* = NERR_BASE + 179
+  NERR_GrpMsgProcessor* = NERR_BASE + 180
+  NERR_PausedRemote* = NERR_BASE + 181
+  NERR_BadReceive* = NERR_BASE + 182
+  NERR_NameInUse* = NERR_BASE + 183
+  NERR_MsgNotStarted* = NERR_BASE + 184
+  NERR_NotLocalName* = NERR_BASE + 185
+  NERR_NoForwardName* = NERR_BASE + 186
+  NERR_RemoteFull* = NERR_BASE + 187
+  NERR_NameNotForwarded* = NERR_BASE + 188
+  NERR_TruncatedBroadcast* = NERR_BASE + 189
+  NERR_InvalidDevice* = NERR_BASE + 194
+  NERR_WriteFault* = NERR_BASE + 195
+  NERR_DuplicateName* = NERR_BASE + 197
+  NERR_DeleteLater* = NERR_BASE + 198
+  NERR_IncompleteDel* = NERR_BASE + 199
+  NERR_MultipleNets* = NERR_BASE + 200
+  NERR_NetNameNotFound* = NERR_BASE + 210
+  NERR_DeviceNotShared* = NERR_BASE + 211
+  NERR_ClientNameNotFound* = NERR_BASE + 212
+  NERR_FileIdNotFound* = NERR_BASE + 214
+  NERR_ExecFailure* = NERR_BASE + 215
+  NERR_TmpFile* = NERR_BASE + 216
+  NERR_TooMuchData* = NERR_BASE + 217
+  NERR_DeviceShareConflict* = NERR_BASE + 218
+  NERR_BrowserTableIncomplete* = NERR_BASE + 219
+  NERR_NotLocalDomain* = NERR_BASE + 220
+  NERR_IsDfsShare* = NERR_BASE + 221
+  NERR_DevInvalidOpCode* = NERR_BASE + 231
+  NERR_DevNotFound* = NERR_BASE + 232
+  NERR_DevNotOpen* = NERR_BASE + 233
+  NERR_BadQueueDevString* = NERR_BASE + 234
+  NERR_BadQueuePriority* = NERR_BASE + 235
+  NERR_NoCommDevs* = NERR_BASE + 237
+  NERR_QueueNotFound* = NERR_BASE + 238
+  NERR_BadDevString* = NERR_BASE + 240
+  NERR_BadDev* = NERR_BASE + 241
+  NERR_InUseBySpooler* = NERR_BASE + 242
+  NERR_CommDevInUse* = NERR_BASE + 243
+  NERR_InvalidComputer* = NERR_BASE + 251
+  NERR_MaxLenExceeded* = NERR_BASE + 254
+  NERR_BadComponent* = NERR_BASE + 256
+  NERR_CantType* = NERR_BASE + 257
+  NERR_TooManyEntries* = NERR_BASE + 262
+  NERR_ProfileFileTooBig* = NERR_BASE + 270
+  NERR_ProfileOffset* = NERR_BASE + 271
+  NERR_ProfileCleanup* = NERR_BASE + 272
+  NERR_ProfileUnknownCmd* = NERR_BASE + 273
+  NERR_ProfileLoadErr* = NERR_BASE + 274
+  NERR_ProfileSaveErr* = NERR_BASE + 275
+  NERR_LogOverflow* = NERR_BASE + 277
+  NERR_LogFileChanged* = NERR_BASE + 278
+  NERR_LogFileCorrupt* = NERR_BASE + 279
+  NERR_SourceIsDir* = NERR_BASE + 280
+  NERR_BadSource* = NERR_BASE + 281
+  NERR_BadDest* = NERR_BASE + 282
+  NERR_DifferentServers* = NERR_BASE + 283
+  NERR_RunSrvPaused* = NERR_BASE + 285
+  NERR_ErrCommRunSrv* = NERR_BASE + 289
+  NERR_ErrorExecingGhost* = NERR_BASE + 291
+  NERR_ShareNotFound* = NERR_BASE + 292
+  NERR_InvalidLana* = NERR_BASE + 300
+  NERR_OpenFiles* = NERR_BASE + 301
+  NERR_ActiveConns* = NERR_BASE + 302
+  NERR_BadPasswordCore* = NERR_BASE + 303
+  NERR_DevInUse* = NERR_BASE + 304
+  NERR_LocalDrive* = NERR_BASE + 305
+  NERR_AlertExists* = NERR_BASE + 330
+  NERR_TooManyAlerts* = NERR_BASE + 331
+  NERR_NoSuchAlert* = NERR_BASE + 332
+  NERR_BadRecipient* = NERR_BASE + 333
+  NERR_AcctLimitExceeded* = NERR_BASE + 334
+  NERR_InvalidLogSeek* = NERR_BASE + 340
+  NERR_BadUasConfig* = NERR_BASE + 350
+  NERR_InvalidUASOp* = NERR_BASE + 351
+  NERR_LastAdmin* = NERR_BASE + 352
+  NERR_DCNotFound* = NERR_BASE + 353
+  NERR_LogonTrackingError* = NERR_BASE + 354
+  NERR_NetlogonNotStarted* = NERR_BASE + 355
+  NERR_CanNotGrowUASFile* = NERR_BASE + 356
+  NERR_TimeDiffAtDC* = NERR_BASE + 357
+  NERR_PasswordMismatch* = NERR_BASE + 358
+  NERR_NoSuchServer* = NERR_BASE + 360
+  NERR_NoSuchSession* = NERR_BASE + 361
+  NERR_NoSuchConnection* = NERR_BASE + 362
+  NERR_TooManyServers* = NERR_BASE + 363
+  NERR_TooManySessions* = NERR_BASE + 364
+  NERR_TooManyConnections* = NERR_BASE + 365
+  NERR_TooManyFiles* = NERR_BASE + 366
+  NERR_NoAlternateServers* = NERR_BASE + 367
+  NERR_TryDownLevel* = NERR_BASE + 370
+  NERR_UPSDriverNotStarted* = NERR_BASE + 380
+  NERR_UPSInvalidConfig* = NERR_BASE + 381
+  NERR_UPSInvalidCommPort* = NERR_BASE + 382
+  NERR_UPSSignalAsserted* = NERR_BASE + 383
+  NERR_UPSShutdownFailed* = NERR_BASE + 384
+  NERR_BadDosRetCode* = NERR_BASE + 400
+  NERR_ProgNeedsExtraMem* = NERR_BASE + 401
+  NERR_BadDosFunction* = NERR_BASE + 402
+  NERR_RemoteBootFailed* = NERR_BASE + 403
+  NERR_BadFileCheckSum* = NERR_BASE + 404
+  NERR_NoRplBootSystem* = NERR_BASE + 405
+  NERR_RplLoadrNetBiosErr* = NERR_BASE + 406
+  NERR_RplLoadrDiskErr* = NERR_BASE + 407
+  NERR_ImageParamErr* = NERR_BASE + 408
+  NERR_TooManyImageParams* = NERR_BASE + 409
+  NERR_NonDosFloppyUsed* = NERR_BASE + 410
+  NERR_RplBootRestart* = NERR_BASE + 411
+  NERR_RplSrvrCallFailed* = NERR_BASE + 412
+  NERR_CantConnectRplSrvr* = NERR_BASE + 413
+  NERR_CantOpenImageFile* = NERR_BASE + 414
+  NERR_CallingRplSrvr* = NERR_BASE + 415
+  NERR_StartingRplBoot* = NERR_BASE + 416
+  NERR_RplBootServiceTerm* = NERR_BASE + 417
+  NERR_RplBootStartFailed* = NERR_BASE + 418
+  NERR_RPL_CONNECTED* = NERR_BASE + 419
+  NERR_BrowserConfiguredToNotRun* = NERR_BASE + 450
+  NERR_RplNoAdaptersStarted* = NERR_BASE + 510
+  NERR_RplBadRegistry* = NERR_BASE + 511
+  NERR_RplBadDatabase* = NERR_BASE + 512
+  NERR_RplRplfilesShare* = NERR_BASE + 513
+  NERR_RplNotRplServer* = NERR_BASE + 514
+  NERR_RplCannotEnum* = NERR_BASE + 515
+  NERR_RplWkstaInfoCorrupted* = NERR_BASE + 516
+  NERR_RplWkstaNotFound* = NERR_BASE + 517
+  NERR_RplWkstaNameUnavailable* = NERR_BASE + 518
+  NERR_RplProfileInfoCorrupted* = NERR_BASE + 519
+  NERR_RplProfileNotFound* = NERR_BASE + 520
+  NERR_RplProfileNameUnavailable* = NERR_BASE + 521
+  NERR_RplProfileNotEmpty* = NERR_BASE + 522
+  NERR_RplConfigInfoCorrupted* = NERR_BASE + 523
+  NERR_RplConfigNotFound* = NERR_BASE + 524
+  NERR_RplAdapterInfoCorrupted* = NERR_BASE + 525
+  NERR_RplInternal* = NERR_BASE + 526
+  NERR_RplVendorInfoCorrupted* = NERR_BASE + 527
+  NERR_RplBootInfoCorrupted* = NERR_BASE + 528
+  NERR_RplWkstaNeedsUserAcct* = NERR_BASE + 529
+  NERR_RplNeedsRPLUSERAcct* = NERR_BASE + 530
+  NERR_RplBootNotFound* = NERR_BASE + 531
+  NERR_RplIncompatibleProfile* = NERR_BASE + 532
+  NERR_RplAdapterNameUnavailable* = NERR_BASE + 533
+  NERR_RplConfigNotEmpty* = NERR_BASE + 534
+  NERR_RplBootInUse* = NERR_BASE + 535
+  NERR_RplBackupDatabase* = NERR_BASE + 536
+  NERR_RplAdapterNotFound* = NERR_BASE + 537
+  NERR_RplVendorNotFound* = NERR_BASE + 538
+  NERR_RplVendorNameUnavailable* = NERR_BASE + 539
+  NERR_RplBootNameUnavailable* = NERR_BASE + 540
+  NERR_RplConfigNameUnavailable* = NERR_BASE + 541
+  NERR_DfsInternalCorruption* = NERR_BASE + 560
+  NERR_DfsVolumeDataCorrupt* = NERR_BASE + 561
+  NERR_DfsNoSuchVolume* = NERR_BASE + 562
+  NERR_DfsVolumeAlreadyExists* = NERR_BASE + 563
+  NERR_DfsAlreadyShared* = NERR_BASE + 564
+  NERR_DfsNoSuchShare* = NERR_BASE + 565
+  NERR_DfsNotALeafVolume* = NERR_BASE + 566
+  NERR_DfsLeafVolume* = NERR_BASE + 567
+  NERR_DfsVolumeHasMultipleServers* = NERR_BASE + 568
+  NERR_DfsCantCreateJunctionPoint* = NERR_BASE + 569
+  NERR_DfsServerNotDfsAware* = NERR_BASE + 570
+  NERR_DfsBadRenamePath* = NERR_BASE + 571
+  NERR_DfsVolumeIsOffline* = NERR_BASE + 572
+  NERR_DfsNoSuchServer* = NERR_BASE + 573
+  NERR_DfsCyclicalName* = NERR_BASE + 574
+  NERR_DfsNotSupportedInServerDfs* = NERR_BASE + 575
+  NERR_DfsDuplicateService* = NERR_BASE + 576
+  NERR_DfsCantRemoveLastServerShare* = NERR_BASE + 577
+  NERR_DfsVolumeIsInterDfs* = NERR_BASE + 578
+  NERR_DfsInconsistent* = NERR_BASE + 579
+  NERR_DfsServerUpgraded* = NERR_BASE + 580
+  NERR_DfsDataIsIdentical* = NERR_BASE + 581
+  NERR_DfsCantRemoveDfsRoot* = NERR_BASE + 582
+  NERR_DfsChildOrParentInDfs* = NERR_BASE + 583
+  NERR_DfsInternalError* = NERR_BASE + 590
+  NERR_SetupAlreadyJoined* = NERR_BASE + 591
+  NERR_SetupNotJoined* = NERR_BASE + 592
+  NERR_SetupDomainController* = NERR_BASE + 593
+  NERR_DefaultJoinRequired* = NERR_BASE + 594
+  NERR_InvalidWorkgroupName* = NERR_BASE + 595
+  NERR_NameUsesIncompatibleCodePage* = NERR_BASE + 596
+  NERR_ComputerAccountNotFound* = NERR_BASE + 597
+  NERR_PersonalSku* = NERR_BASE + 598
+  NERR_PasswordMustChange* = NERR_BASE + 601
+  NERR_AccountLockedOut* = NERR_BASE + 602
+  NERR_PasswordTooLong* = NERR_BASE + 603
+  NERR_PasswordNotComplexEnough* = NERR_BASE + 604
+  NERR_PasswordFilterError* = NERR_BASE + 605
+  MAX_NERR* = NERR_BASE + 899
   UF_SCRIPT* = 0x0001
   UF_ACCOUNTDISABLE* = 0x0002
   UF_HOMEDIR_REQUIRED* = 0x0008
@@ -2628,8 +2955,12 @@
   UF_INTERDOMAIN_TRUST_ACCOUNT* = 0x0800
   UF_WORKSTATION_TRUST_ACCOUNT* = 0x1000
   UF_SERVER_TRUST_ACCOUNT* = 0x2000
-  UF_MACHINE_ACCOUNT_MASK* = UF_INTERDOMAIN_TRUST_ACCOUNT or UF_WORKSTATION_TRUST_ACCOUNT or UF_SERVER_TRUST_ACCOUNT
-  UF_ACCOUNT_TYPE_MASK* = UF_TEMP_DUPLICATE_ACCOUNT or UF_NORMAL_ACCOUNT or UF_INTERDOMAIN_TRUST_ACCOUNT or UF_WORKSTATION_TRUST_ACCOUNT or UF_SERVER_TRUST_ACCOUNT
+  UF_MACHINE_ACCOUNT_MASK* =
+    UF_INTERDOMAIN_TRUST_ACCOUNT or UF_WORKSTATION_TRUST_ACCOUNT or
+    UF_SERVER_TRUST_ACCOUNT
+  UF_ACCOUNT_TYPE_MASK* =
+    UF_TEMP_DUPLICATE_ACCOUNT or UF_NORMAL_ACCOUNT or UF_INTERDOMAIN_TRUST_ACCOUNT or
+    UF_WORKSTATION_TRUST_ACCOUNT or UF_SERVER_TRUST_ACCOUNT
   UF_DONT_EXPIRE_PASSWD* = 0x10000
   UF_MNS_LOGON_ACCOUNT* = 0x20000
   UF_SMARTCARD_REQUIRED* = 0x40000
@@ -2640,7 +2971,13 @@
   UF_PASSWORD_EXPIRED* = 0x800000
   UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION* = 0x1000000
   UF_NO_AUTH_DATA_REQUIRED* = 0x2000000
-  UF_SETTABLE_BITS* = UF_SCRIPT or UF_ACCOUNTDISABLE or UF_LOCKOUT or UF_HOMEDIR_REQUIRED or UF_PASSWD_NOTREQD or UF_PASSWD_CANT_CHANGE or UF_ACCOUNT_TYPE_MASK or UF_DONT_EXPIRE_PASSWD or UF_MNS_LOGON_ACCOUNT or UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED or UF_SMARTCARD_REQUIRED or UF_TRUSTED_FOR_DELEGATION or UF_NOT_DELEGATED or UF_USE_DES_KEY_ONLY or UF_DONT_REQUIRE_PREAUTH or UF_PASSWORD_EXPIRED or UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION or UF_NO_AUTH_DATA_REQUIRED
+  UF_SETTABLE_BITS* =
+    UF_SCRIPT or UF_ACCOUNTDISABLE or UF_LOCKOUT or UF_HOMEDIR_REQUIRED or
+    UF_PASSWD_NOTREQD or UF_PASSWD_CANT_CHANGE or UF_ACCOUNT_TYPE_MASK or
+    UF_DONT_EXPIRE_PASSWD or UF_MNS_LOGON_ACCOUNT or UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED or
+    UF_SMARTCARD_REQUIRED or UF_TRUSTED_FOR_DELEGATION or UF_NOT_DELEGATED or
+    UF_USE_DES_KEY_ONLY or UF_DONT_REQUIRE_PREAUTH or UF_PASSWORD_EXPIRED or
+    UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION or UF_NO_AUTH_DATA_REQUIRED
   FILTER_TEMP_DUPLICATE_ACCOUNT* = 0x0001
   FILTER_NORMAL_ACCOUNT* = 0x0002
   FILTER_INTERDOMAIN_TRUST_ACCOUNT* = 0x0008
@@ -2684,38 +3021,38 @@
   USER_PROFILE* = 52
   USER_PROFILE_PARMNUM* = 52
   USER_HOME_DIR_DRIVE_PARMNUM* = 53
-  USER_NAME_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_NAME_PARMNUM
-  USER_PASSWORD_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_PARMNUM
-  USER_PASSWORD_AGE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_AGE_PARMNUM
-  USER_PRIV_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_PRIV_PARMNUM
-  USER_HOME_DIR_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_PARMNUM
-  USER_COMMENT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_COMMENT_PARMNUM
-  USER_FLAGS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_FLAGS_PARMNUM
-  USER_SCRIPT_PATH_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_SCRIPT_PATH_PARMNUM
-  USER_AUTH_FLAGS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_AUTH_FLAGS_PARMNUM
-  USER_FULL_NAME_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_FULL_NAME_PARMNUM
-  USER_USR_COMMENT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_USR_COMMENT_PARMNUM
-  USER_PARMS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_PARMS_PARMNUM
-  USER_WORKSTATIONS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_WORKSTATIONS_PARMNUM
-  USER_LAST_LOGON_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGON_PARMNUM
-  USER_LAST_LOGOFF_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGOFF_PARMNUM
-  USER_ACCT_EXPIRES_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_ACCT_EXPIRES_PARMNUM
-  USER_MAX_STORAGE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_MAX_STORAGE_PARMNUM
-  USER_UNITS_PER_WEEK_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_UNITS_PER_WEEK_PARMNUM
-  USER_LOGON_HOURS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_LOGON_HOURS_PARMNUM
-  USER_PAD_PW_COUNT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_PAD_PW_COUNT_PARMNUM
-  USER_NUM_LOGONS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_NUM_LOGONS_PARMNUM
-  USER_LOGON_SERVER_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_LOGON_SERVER_PARMNUM
-  USER_COUNTRY_CODE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_COUNTRY_CODE_PARMNUM
-  USER_CODE_PAGE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_CODE_PAGE_PARMNUM
-  USER_PRIMARY_GROUP_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_PRIMARY_GROUP_PARMNUM
-  USER_HOME_DIR_DRIVE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_DRIVE_PARMNUM
+  USER_NAME_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_NAME_PARMNUM
+  USER_PASSWORD_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_PASSWORD_PARMNUM
+  USER_PASSWORD_AGE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_PASSWORD_AGE_PARMNUM
+  USER_PRIV_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_PRIV_PARMNUM
+  USER_HOME_DIR_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_HOME_DIR_PARMNUM
+  USER_COMMENT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_COMMENT_PARMNUM
+  USER_FLAGS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_FLAGS_PARMNUM
+  USER_SCRIPT_PATH_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_SCRIPT_PATH_PARMNUM
+  USER_AUTH_FLAGS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_AUTH_FLAGS_PARMNUM
+  USER_FULL_NAME_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_FULL_NAME_PARMNUM
+  USER_USR_COMMENT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_USR_COMMENT_PARMNUM
+  USER_PARMS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_PARMS_PARMNUM
+  USER_WORKSTATIONS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_WORKSTATIONS_PARMNUM
+  USER_LAST_LOGON_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_LAST_LOGON_PARMNUM
+  USER_LAST_LOGOFF_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_LAST_LOGOFF_PARMNUM
+  USER_ACCT_EXPIRES_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_ACCT_EXPIRES_PARMNUM
+  USER_MAX_STORAGE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_MAX_STORAGE_PARMNUM
+  USER_UNITS_PER_WEEK_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_UNITS_PER_WEEK_PARMNUM
+  USER_LOGON_HOURS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_LOGON_HOURS_PARMNUM
+  USER_PAD_PW_COUNT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_PAD_PW_COUNT_PARMNUM
+  USER_NUM_LOGONS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_NUM_LOGONS_PARMNUM
+  USER_LOGON_SERVER_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_LOGON_SERVER_PARMNUM
+  USER_COUNTRY_CODE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_COUNTRY_CODE_PARMNUM
+  USER_CODE_PAGE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_CODE_PAGE_PARMNUM
+  USER_PRIMARY_GROUP_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_PRIMARY_GROUP_PARMNUM
+  USER_HOME_DIR_DRIVE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + USER_HOME_DIR_DRIVE_PARMNUM
   NULL_USERSETINFO_PASSWD* = "              "
   TIMEQ_FOREVER* = -1
   USER_MAXSTORAGE_UNLIMITED* = -1
   USER_NO_LOGOFF* = -1
   UNITS_PER_DAY* = 24
-  UNITS_PER_WEEK* = UNITS_PER_DAY*7
+  UNITS_PER_WEEK* = UNITS_PER_DAY * 7
   USER_PRIV_MASK* = 0x3
   USER_PRIV_GUEST* = 0
   USER_PRIV_USER* = 1
@@ -2728,7 +3065,7 @@
   DEF_MIN_PWAGE* = 0
   DEF_FORCE_LOGOFF* = 0xffffffff'i32
   DEF_MAX_BADPW* = 0
-  ONE_DAY* = 01*24*3600
+  ONE_DAY* = 01 * 24 * 3600
   VALIDATED_LOGON* = 0
   PASSWORD_EXPIRED* = 2
   NON_VALIDATED_LOGON* = 3
@@ -2745,15 +3082,19 @@
   MODALS_LOCKOUT_DURATION_PARMNUM* = 10
   MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM* = 11
   MODALS_LOCKOUT_THRESHOLD_PARMNUM* = 12
-  MODALS_MIN_PASSWD_LEN_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_LEN_PARMNUM
-  MODALS_MAX_PASSWD_AGE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+MODALS_MAX_PASSWD_AGE_PARMNUM
-  MODALS_MIN_PASSWD_AGE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_AGE_PARMNUM
-  MODALS_FORCE_LOGOFF_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+MODALS_FORCE_LOGOFF_PARMNUM
-  MODALS_PASSWD_HIST_LEN_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+MODALS_PASSWD_HIST_LEN_PARMNUM
-  MODALS_ROLE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+MODALS_ROLE_PARMNUM
-  MODALS_PRIMARY_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+MODALS_PRIMARY_PARMNUM
-  MODALS_DOMAIN_NAME_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_NAME_PARMNUM
-  MODALS_DOMAIN_ID_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_ID_PARMNUM
+  MODALS_MIN_PASSWD_LEN_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + MODALS_MIN_PASSWD_LEN_PARMNUM
+  MODALS_MAX_PASSWD_AGE_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + MODALS_MAX_PASSWD_AGE_PARMNUM
+  MODALS_MIN_PASSWD_AGE_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + MODALS_MIN_PASSWD_AGE_PARMNUM
+  MODALS_FORCE_LOGOFF_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + MODALS_FORCE_LOGOFF_PARMNUM
+  MODALS_PASSWD_HIST_LEN_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + MODALS_PASSWD_HIST_LEN_PARMNUM
+  MODALS_ROLE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + MODALS_ROLE_PARMNUM
+  MODALS_PRIMARY_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + MODALS_PRIMARY_PARMNUM
+  MODALS_DOMAIN_NAME_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + MODALS_DOMAIN_NAME_PARMNUM
+  MODALS_DOMAIN_ID_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + MODALS_DOMAIN_ID_PARMNUM
   GROUPIDMASK* = 0x8000
   GROUP_SPECIALGRP_USERS* = "USERS"
   GROUP_SPECIALGRP_ADMINS* = "ADMINS"
@@ -2763,10 +3104,10 @@
   GROUP_NAME_PARMNUM* = 1
   GROUP_COMMENT_PARMNUM* = 2
   GROUP_ATTRIBUTES_PARMNUM* = 3
-  GROUP_ALL_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+GROUP_ALL_PARMNUM
-  GROUP_NAME_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+GROUP_NAME_PARMNUM
-  GROUP_COMMENT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+GROUP_COMMENT_PARMNUM
-  GROUP_ATTRIBUTES_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+GROUP_ATTRIBUTES_PARMNUM
+  GROUP_ALL_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + GROUP_ALL_PARMNUM
+  GROUP_NAME_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + GROUP_NAME_PARMNUM
+  GROUP_COMMENT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + GROUP_COMMENT_PARMNUM
+  GROUP_ATTRIBUTES_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + GROUP_ATTRIBUTES_PARMNUM
   LOCALGROUP_NAME_PARMNUM* = 1
   LOCALGROUP_COMMENT_PARMNUM* = 2
   MAXPERMENTRIES* = 64
@@ -2778,7 +3119,9 @@
   ACCESS_DELETE* = 0x10
   ACCESS_ATRIB* = 0x20
   ACCESS_PERM* = 0x40
-  ACCESS_ALL* = ACCESS_READ or ACCESS_WRITE or ACCESS_CREATE or ACCESS_EXEC or ACCESS_DELETE or ACCESS_ATRIB or ACCESS_PERM
+  ACCESS_ALL* =
+    ACCESS_READ or ACCESS_WRITE or ACCESS_CREATE or ACCESS_EXEC or ACCESS_DELETE or
+    ACCESS_ATRIB or ACCESS_PERM
   ACCESS_GROUP* = 0x8000
   ACCESS_AUDIT* = 0x1
   ACCESS_SUCCESS_OPEN* = 0x10
@@ -2796,10 +3139,11 @@
   ACCESS_ATTR_PARMNUM* = 2
   ACCESS_COUNT_PARMNUM* = 3
   ACCESS_ACCESS_LIST_PARMNUM* = 4
-  ACCESS_RESOURCE_NAME_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+ACCESS_RESOURCE_NAME_PARMNUM
-  ACCESS_ATTR_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+ACCESS_ATTR_PARMNUM
-  ACCESS_COUNT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+ACCESS_COUNT_PARMNUM
-  ACCESS_ACCESS_LIST_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+ACCESS_ACCESS_LIST_PARMNUM
+  ACCESS_RESOURCE_NAME_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + ACCESS_RESOURCE_NAME_PARMNUM
+  ACCESS_ATTR_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + ACCESS_ATTR_PARMNUM
+  ACCESS_COUNT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + ACCESS_COUNT_PARMNUM
+  ACCESS_ACCESS_LIST_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + ACCESS_ACCESS_LIST_PARMNUM
   ACCESS_LETTERS* = "RWCXDAP         "
   netValidateAuthentication* = 1
   netValidatePasswordChange* = 2
@@ -2870,9 +3214,9 @@
   SHARE_PATH_PARMNUM* = 8
   SHARE_PASSWD_PARMNUM* = 9
   SHARE_FILE_SD_PARMNUM* = 501
-  SHARE_REMARK_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SHARE_REMARK_PARMNUM
-  SHARE_MAX_USES_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SHARE_MAX_USES_PARMNUM
-  SHARE_FILE_SD_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SHARE_FILE_SD_PARMNUM
+  SHARE_REMARK_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM
+  SHARE_MAX_USES_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM
+  SHARE_FILE_SD_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM
   SHI1_NUM_ELEMENTS* = 4
   SHI2_NUM_ELEMENTS* = 10
   STYPE_DISKTREE* = 0
@@ -2893,7 +3237,10 @@
   SHI1005_FLAGS_FORCE_SHARED_DELETE* = 0x0200
   SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING* = 0x0400
   SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM* = 0x0800
-  SHI1005_VALID_FLAGS_SET* = CSC_MASK or SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS or SHI1005_FLAGS_FORCE_SHARED_DELETE or SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING or SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM
+  SHI1005_VALID_FLAGS_SET* =
+    CSC_MASK or SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS or
+    SHI1005_FLAGS_FORCE_SHARED_DELETE or SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING or
+    SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM
   SESS_GUEST* = 0x00000001
   SESS_NOENCRYPTION* = 0x00000002
   SESI1_NUM_ELEMENTS* = 8
@@ -2916,16 +3263,16 @@
   REPL_ROLE_EXPORT* = 1
   REPL_ROLE_IMPORT* = 2
   REPL_ROLE_BOTH* = 3
-  REPL_INTERVAL_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+0
-  REPL_PULSE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+1
-  REPL_GUARDTIME_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+2
-  REPL_RANDOM_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+3
+  REPL_INTERVAL_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + 0
+  REPL_PULSE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + 1
+  REPL_GUARDTIME_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + 2
+  REPL_RANDOM_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + 3
   REPL_INTEGRITY_FILE* = 1
   REPL_INTEGRITY_TREE* = 2
   REPL_EXTENT_FILE* = 1
   REPL_EXTENT_TREE* = 2
-  REPL_EXPORT_INTEGRITY_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+0
-  REPL_EXPORT_EXTENT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+1
+  REPL_EXPORT_INTEGRITY_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + 0
+  REPL_EXPORT_EXTENT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + 1
   REPL_UNLOCK_NOFORCE* = 0
   REPL_UNLOCK_FORCE* = 1
   REPL_STATE_OK* = 0
@@ -3109,100 +3456,145 @@
   SV_DISABLEDOS_PARMNUM* = 600
   SV_LOWDISKSPACEMINIMUM_PARMNUM* = 601
   SV_DISABLESTRICTNAMECHECKING_PARMNUM* = 602
-  SV_COMMENT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_COMMENT_PARMNUM
-  SV_USERS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_USERS_PARMNUM
-  SV_DISC_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_DISC_PARMNUM
-  SV_HIDDEN_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_HIDDEN_PARMNUM
-  SV_ANNOUNCE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ANNOUNCE_PARMNUM
-  SV_ANNDELTA_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ANNDELTA_PARMNUM
-  SV_SESSOPENS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_SESSOPENS_PARMNUM
-  SV_SESSVCS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_SESSVCS_PARMNUM
-  SV_OPENSEARCH_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_OPENSEARCH_PARMNUM
-  SV_MAXWORKITEMS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMS_PARMNUM
-  SV_MAXRAWBUFLEN_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXRAWBUFLEN_PARMNUM
-  SV_SESSUSERS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_SESSUSERS_PARMNUM
-  SV_SESSCONNS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_SESSCONNS_PARMNUM
-  SV_MAXNONPAGEDMEMORYUSAGE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM
-  SV_MAXPAGEDMEMORYUSAGE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDMEMORYUSAGE_PARMNUM
-  SV_ENABLESOFTCOMPAT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ENABLESOFTCOMPAT_PARMNUM
-  SV_ENABLEFORCEDLOGOFF_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ENABLEFORCEDLOGOFF_PARMNUM
-  SV_TIMESOURCE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_TIMESOURCE_PARMNUM
-  SV_LMANNOUNCE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_LMANNOUNCE_PARMNUM
-  SV_MAXCOPYREADLEN_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYREADLEN_PARMNUM
-  SV_MAXCOPYWRITELEN_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYWRITELEN_PARMNUM
-  SV_MINKEEPSEARCH_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MINKEEPSEARCH_PARMNUM
-  SV_MAXKEEPSEARCH_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPSEARCH_PARMNUM
-  SV_MINKEEPCOMPLSEARCH_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MINKEEPCOMPLSEARCH_PARMNUM
-  SV_MAXKEEPCOMPLSEARCH_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPCOMPLSEARCH_PARMNUM
-  SV_SCAVTIMEOUT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_SCAVTIMEOUT_PARMNUM
-  SV_MINRCVQUEUE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MINRCVQUEUE_PARMNUM
-  SV_MINFREEWORKITEMS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MINFREEWORKITEMS_PARMNUM
-  SV_MAXMPXCT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXMPXCT_PARMNUM
-  SV_OPLOCKBREAKWAIT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKWAIT_PARMNUM
-  SV_OPLOCKBREAKRESPONSEWAIT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM
-  SV_ENABLEOPLOCKS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKS_PARMNUM
-  SV_ENABLEOPLOCKFORCECLOSE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKFORCECLOSE_PARMNUM
-  SV_ENABLEFCBOPENS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ENABLEFCBOPENS_PARMNUM
-  SV_ENABLERAW_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ENABLERAW_PARMNUM
-  SV_ENABLESHAREDNETDRIVES_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ENABLESHAREDNETDRIVES_PARMNUM
-  SV_MINFREECONNECTIONS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MINFREECONNECTIONS_PARMNUM
-  SV_MAXFREECONNECTIONS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXFREECONNECTIONS_PARMNUM
-  SV_INITSESSTABLE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_INITSESSTABLE_PARMNUM
-  SV_INITCONNTABLE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_INITCONNTABLE_PARMNUM
-  SV_INITFILETABLE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_INITFILETABLE_PARMNUM
-  SV_INITSEARCHTABLE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_INITSEARCHTABLE_PARMNUM
-  SV_ALERTSCHEDULE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ALERTSCHEDULE_PARMNUM
-  SV_ERRORTHRESHOLD_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ERRORTHRESHOLD_PARMNUM
-  SV_NETWORKERRORTHRESHOLD_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_NETWORKERRORTHRESHOLD_PARMNUM
-  SV_DISKSPACETHRESHOLD_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_DISKSPACETHRESHOLD_PARMNUM
-  SV_MAXLINKDELAY_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXLINKDELAY_PARMNUM
-  SV_MINLINKTHROUGHPUT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MINLINKTHROUGHPUT_PARMNUM
-  SV_LINKINFOVALIDTIME_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_LINKINFOVALIDTIME_PARMNUM
-  SV_SCAVQOSINFOUPDATETIME_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_SCAVQOSINFOUPDATETIME_PARMNUM
-  SV_MAXWORKITEMIDLETIME_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMIDLETIME_PARMNUM
-  SV_MAXRAWWORKITEMS_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXRAWWORKITEMS_PARMNUM
-  SV_PRODUCTTYPE_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_PRODUCTTYPE_PARMNUM
-  SV_SERVERSIZE_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_SERVERSIZE_PARMNUM
-  SV_CONNECTIONLESSAUTODISC_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_CONNECTIONLESSAUTODISC_PARMNUM
-  SV_SHARINGVIOLATIONRETRIES_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONRETRIES_PARMNUM
-  SV_SHARINGVIOLATIONDELAY_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONDELAY_PARMNUM
-  SV_MAXGLOBALOPENSEARCH_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXGLOBALOPENSEARCH_PARMNUM
-  SV_REMOVEDUPLICATESEARCHES_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_REMOVEDUPLICATESEARCHES_PARMNUM
-  SV_LOCKVIOLATIONRETRIES_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONRETRIES_PARMNUM
-  SV_LOCKVIOLATIONOFFSET_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONOFFSET_PARMNUM
-  SV_LOCKVIOLATIONDELAY_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONDELAY_PARMNUM
-  SV_MDLREADSWITCHOVER_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MDLREADSWITCHOVER_PARMNUM
-  SV_CACHEDOPENLIMIT_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_CACHEDOPENLIMIT_PARMNUM
-  SV_CRITICALTHREADS_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_CRITICALTHREADS_PARMNUM
-  SV_RESTRICTNULLSESSACCESS_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_RESTRICTNULLSESSACCESS_PARMNUM
-  SV_ENABLEWFW311DIRECTIPX_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ENABLEWFW311DIRECTIPX_PARMNUM
-  SV_OTHERQUEUEAFFINITY_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_OTHERQUEUEAFFINITY_PARMNUM
-  SV_QUEUESAMPLESECS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_QUEUESAMPLESECS_PARMNUM
-  SV_BALANCECOUNT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_BALANCECOUNT_PARMNUM
-  SV_PREFERREDAFFINITY_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_PREFERREDAFFINITY_PARMNUM
-  SV_MAXFREERFCBS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXFREERFCBS_PARMNUM
-  SV_MAXFREEMFCBS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXFREEMFCBS_PARMNUM
-  SV_MAXFREELFCBS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXFREELFCBS_PARMNUM
-  SV_MAXFREEPAGEDPOOLCHUNKS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM
-  SV_MINPAGEDPOOLCHUNKSIZE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM
-  SV_MAXPAGEDPOOLCHUNKSIZE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM
-  SV_SENDSFROMPREFERREDPROCESSOR_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM
-  SV_MAXTHREADSPERQUEUE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXTHREADSPERQUEUE_PARMNUM
-  SV_CACHEDDIRECTORYLIMIT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_CACHEDDIRECTORYLIMIT_PARMNUM
-  SV_MAXCOPYLENGTH_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYLENGTH_PARMNUM
-  SV_ENABLECOMPRESSION_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ENABLECOMPRESSION_PARMNUM
-  SV_AUTOSHAREWKS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_AUTOSHAREWKS_PARMNUM
-  SV_AUTOSHARESERVER_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_AUTOSHARESERVER_PARMNUM
-  SV_ENABLESECURITYSIGNATURE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ENABLESECURITYSIGNATURE_PARMNUM
-  SV_REQUIRESECURITYSIGNATURE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_REQUIRESECURITYSIGNATURE_PARMNUM
-  SV_MINCLIENTBUFFERSIZE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_MINCLIENTBUFFERSIZE_PARMNUM
-  SV_CONNECTIONNOSESSIONSTIMEOUT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_CONNECTIONNOSESSIONSTIMEOUT_PARMNUM
-  SV_IDLETHREADTIMEOUT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_IDLETHREADTIMEOUT_PARMNUM
-  SV_ENABLEW9XSECURITYSIGNATURE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ENABLEW9XSECURITYSIGNATURE_PARMNUM
-  SV_ENFORCEKERBEROSREAUTHENTICATION_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_ENFORCEKERBEROSREAUTHENTICATION_PARMNUM
-  SV_DISABLEDOS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_DISABLEDOS_PARMNUM
-  SV_LOWDISKSPACEMINIMUM_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_LOWDISKSPACEMINIMUM_PARMNUM
-  SV_DISABLESTRICTNAMECHECKING_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL+SV_DISABLESTRICTNAMECHECKING_PARMNUM
+  SV_COMMENT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_COMMENT_PARMNUM
+  SV_USERS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_USERS_PARMNUM
+  SV_DISC_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_DISC_PARMNUM
+  SV_HIDDEN_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_HIDDEN_PARMNUM
+  SV_ANNOUNCE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_ANNOUNCE_PARMNUM
+  SV_ANNDELTA_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_ANNDELTA_PARMNUM
+  SV_SESSOPENS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_SESSOPENS_PARMNUM
+  SV_SESSVCS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_SESSVCS_PARMNUM
+  SV_OPENSEARCH_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_OPENSEARCH_PARMNUM
+  SV_MAXWORKITEMS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MAXWORKITEMS_PARMNUM
+  SV_MAXRAWBUFLEN_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MAXRAWBUFLEN_PARMNUM
+  SV_SESSUSERS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_SESSUSERS_PARMNUM
+  SV_SESSCONNS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_SESSCONNS_PARMNUM
+  SV_MAXNONPAGEDMEMORYUSAGE_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM
+  SV_MAXPAGEDMEMORYUSAGE_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MAXPAGEDMEMORYUSAGE_PARMNUM
+  SV_ENABLESOFTCOMPAT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_ENABLESOFTCOMPAT_PARMNUM
+  SV_ENABLEFORCEDLOGOFF_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_ENABLEFORCEDLOGOFF_PARMNUM
+  SV_TIMESOURCE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_TIMESOURCE_PARMNUM
+  SV_LMANNOUNCE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_LMANNOUNCE_PARMNUM
+  SV_MAXCOPYREADLEN_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MAXCOPYREADLEN_PARMNUM
+  SV_MAXCOPYWRITELEN_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MAXCOPYWRITELEN_PARMNUM
+  SV_MINKEEPSEARCH_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MINKEEPSEARCH_PARMNUM
+  SV_MAXKEEPSEARCH_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MAXKEEPSEARCH_PARMNUM
+  SV_MINKEEPCOMPLSEARCH_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MINKEEPCOMPLSEARCH_PARMNUM
+  SV_MAXKEEPCOMPLSEARCH_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MAXKEEPCOMPLSEARCH_PARMNUM
+  SV_SCAVTIMEOUT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_SCAVTIMEOUT_PARMNUM
+  SV_MINRCVQUEUE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MINRCVQUEUE_PARMNUM
+  SV_MINFREEWORKITEMS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MINFREEWORKITEMS_PARMNUM
+  SV_MAXMPXCT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MAXMPXCT_PARMNUM
+  SV_OPLOCKBREAKWAIT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_OPLOCKBREAKWAIT_PARMNUM
+  SV_OPLOCKBREAKRESPONSEWAIT_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM
+  SV_ENABLEOPLOCKS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_ENABLEOPLOCKS_PARMNUM
+  SV_ENABLEOPLOCKFORCECLOSE_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_ENABLEOPLOCKFORCECLOSE_PARMNUM
+  SV_ENABLEFCBOPENS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_ENABLEFCBOPENS_PARMNUM
+  SV_ENABLERAW_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_ENABLERAW_PARMNUM
+  SV_ENABLESHAREDNETDRIVES_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_ENABLESHAREDNETDRIVES_PARMNUM
+  SV_MINFREECONNECTIONS_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MINFREECONNECTIONS_PARMNUM
+  SV_MAXFREECONNECTIONS_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MAXFREECONNECTIONS_PARMNUM
+  SV_INITSESSTABLE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_INITSESSTABLE_PARMNUM
+  SV_INITCONNTABLE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_INITCONNTABLE_PARMNUM
+  SV_INITFILETABLE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_INITFILETABLE_PARMNUM
+  SV_INITSEARCHTABLE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_INITSEARCHTABLE_PARMNUM
+  SV_ALERTSCHEDULE_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_ALERTSCHEDULE_PARMNUM
+  SV_ERRORTHRESHOLD_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_ERRORTHRESHOLD_PARMNUM
+  SV_NETWORKERRORTHRESHOLD_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_NETWORKERRORTHRESHOLD_PARMNUM
+  SV_DISKSPACETHRESHOLD_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_DISKSPACETHRESHOLD_PARMNUM
+  SV_MAXLINKDELAY_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MAXLINKDELAY_PARMNUM
+  SV_MINLINKTHROUGHPUT_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MINLINKTHROUGHPUT_PARMNUM
+  SV_LINKINFOVALIDTIME_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_LINKINFOVALIDTIME_PARMNUM
+  SV_SCAVQOSINFOUPDATETIME_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_SCAVQOSINFOUPDATETIME_PARMNUM
+  SV_MAXWORKITEMIDLETIME_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MAXWORKITEMIDLETIME_PARMNUM
+  SV_MAXRAWWORKITEMS_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MAXRAWWORKITEMS_PARMNUM
+  SV_PRODUCTTYPE_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL + SV_PRODUCTTYPE_PARMNUM
+  SV_SERVERSIZE_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL + SV_SERVERSIZE_PARMNUM
+  SV_CONNECTIONLESSAUTODISC_INFOLOEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_CONNECTIONLESSAUTODISC_PARMNUM
+  SV_SHARINGVIOLATIONRETRIES_INFOLOEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_SHARINGVIOLATIONRETRIES_PARMNUM
+  SV_SHARINGVIOLATIONDELAY_INFOLOEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_SHARINGVIOLATIONDELAY_PARMNUM
+  SV_MAXGLOBALOPENSEARCH_INFOLOEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MAXGLOBALOPENSEARCH_PARMNUM
+  SV_REMOVEDUPLICATESEARCHES_INFOLOEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_REMOVEDUPLICATESEARCHES_PARMNUM
+  SV_LOCKVIOLATIONRETRIES_INFOLOEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_LOCKVIOLATIONRETRIES_PARMNUM
+  SV_LOCKVIOLATIONOFFSET_INFOLOEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_LOCKVIOLATIONOFFSET_PARMNUM
+  SV_LOCKVIOLATIONDELAY_INFOLOEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_LOCKVIOLATIONDELAY_PARMNUM
+  SV_MDLREADSWITCHOVER_INFOLOEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MDLREADSWITCHOVER_PARMNUM
+  SV_CACHEDOPENLIMIT_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL + SV_CACHEDOPENLIMIT_PARMNUM
+  SV_CRITICALTHREADS_INFOLOEVEL* = PARMNUM_BASE_INFOLEVEL + SV_CRITICALTHREADS_PARMNUM
+  SV_RESTRICTNULLSESSACCESS_INFOLOEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_RESTRICTNULLSESSACCESS_PARMNUM
+  SV_ENABLEWFW311DIRECTIPX_INFOLOEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_ENABLEWFW311DIRECTIPX_PARMNUM
+  SV_OTHERQUEUEAFFINITY_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_OTHERQUEUEAFFINITY_PARMNUM
+  SV_QUEUESAMPLESECS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_QUEUESAMPLESECS_PARMNUM
+  SV_BALANCECOUNT_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_BALANCECOUNT_PARMNUM
+  SV_PREFERREDAFFINITY_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_PREFERREDAFFINITY_PARMNUM
+  SV_MAXFREERFCBS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MAXFREERFCBS_PARMNUM
+  SV_MAXFREEMFCBS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MAXFREEMFCBS_PARMNUM
+  SV_MAXFREELFCBS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MAXFREELFCBS_PARMNUM
+  SV_MAXFREEPAGEDPOOLCHUNKS_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM
+  SV_MINPAGEDPOOLCHUNKSIZE_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM
+  SV_MAXPAGEDPOOLCHUNKSIZE_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM
+  SV_SENDSFROMPREFERREDPROCESSOR_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM
+  SV_MAXTHREADSPERQUEUE_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MAXTHREADSPERQUEUE_PARMNUM
+  SV_CACHEDDIRECTORYLIMIT_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_CACHEDDIRECTORYLIMIT_PARMNUM
+  SV_MAXCOPYLENGTH_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_MAXCOPYLENGTH_PARMNUM
+  SV_ENABLECOMPRESSION_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_ENABLECOMPRESSION_PARMNUM
+  SV_AUTOSHAREWKS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_AUTOSHAREWKS_PARMNUM
+  SV_AUTOSHARESERVER_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_AUTOSHARESERVER_PARMNUM
+  SV_ENABLESECURITYSIGNATURE_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_ENABLESECURITYSIGNATURE_PARMNUM
+  SV_REQUIRESECURITYSIGNATURE_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_REQUIRESECURITYSIGNATURE_PARMNUM
+  SV_MINCLIENTBUFFERSIZE_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_MINCLIENTBUFFERSIZE_PARMNUM
+  SV_CONNECTIONNOSESSIONSTIMEOUT_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_CONNECTIONNOSESSIONSTIMEOUT_PARMNUM
+  SV_IDLETHREADTIMEOUT_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_IDLETHREADTIMEOUT_PARMNUM
+  SV_ENABLEW9XSECURITYSIGNATURE_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_ENABLEW9XSECURITYSIGNATURE_PARMNUM
+  SV_ENFORCEKERBEROSREAUTHENTICATION_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_ENFORCEKERBEROSREAUTHENTICATION_PARMNUM
+  SV_DISABLEDOS_INFOLEVEL* = PARMNUM_BASE_INFOLEVEL + SV_DISABLEDOS_PARMNUM
+  SV_LOWDISKSPACEMINIMUM_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_LOWDISKSPACEMINIMUM_PARMNUM
+  SV_DISABLESTRICTNAMECHECKING_INFOLEVEL* =
+    PARMNUM_BASE_INFOLEVEL + SV_DISABLESTRICTNAMECHECKING_PARMNUM
   SVI1_NUM_ELEMENTS* = 5
   SVI2_NUM_ELEMENTS* = 40
   SVI3_NUM_ELEMENTS* = 44
@@ -3323,54 +3715,54 @@
   SERVICE_MAXTIME* = 0x000000FF
   SERVICE_BASE* = 3050
   SERVICE_UIC_NORMAL* = 0
-  SERVICE_UIC_BADPARMVAL* = SERVICE_BASE+1
-  SERVICE_UIC_MISSPARM* = SERVICE_BASE+2
-  SERVICE_UIC_UNKPARM* = SERVICE_BASE+3
-  SERVICE_UIC_RESOURCE* = SERVICE_BASE+4
-  SERVICE_UIC_CONFIG* = SERVICE_BASE+5
-  SERVICE_UIC_SYSTEM* = SERVICE_BASE+6
-  SERVICE_UIC_INTERNAL* = SERVICE_BASE+7
-  SERVICE_UIC_AMBIGPARM* = SERVICE_BASE+8
-  SERVICE_UIC_DUPPARM* = SERVICE_BASE+9
-  SERVICE_UIC_KILL* = SERVICE_BASE+10
-  SERVICE_UIC_EXEC* = SERVICE_BASE+11
-  SERVICE_UIC_SUBSERV* = SERVICE_BASE+12
-  SERVICE_UIC_CONFLPARM* = SERVICE_BASE+13
-  SERVICE_UIC_FILE* = SERVICE_BASE+14
+  SERVICE_UIC_BADPARMVAL* = SERVICE_BASE + 1
+  SERVICE_UIC_MISSPARM* = SERVICE_BASE + 2
+  SERVICE_UIC_UNKPARM* = SERVICE_BASE + 3
+  SERVICE_UIC_RESOURCE* = SERVICE_BASE + 4
+  SERVICE_UIC_CONFIG* = SERVICE_BASE + 5
+  SERVICE_UIC_SYSTEM* = SERVICE_BASE + 6
+  SERVICE_UIC_INTERNAL* = SERVICE_BASE + 7
+  SERVICE_UIC_AMBIGPARM* = SERVICE_BASE + 8
+  SERVICE_UIC_DUPPARM* = SERVICE_BASE + 9
+  SERVICE_UIC_KILL* = SERVICE_BASE + 10
+  SERVICE_UIC_EXEC* = SERVICE_BASE + 11
+  SERVICE_UIC_SUBSERV* = SERVICE_BASE + 12
+  SERVICE_UIC_CONFLPARM* = SERVICE_BASE + 13
+  SERVICE_UIC_FILE* = SERVICE_BASE + 14
   SERVICE_UIC_M_NULL* = 0
-  SERVICE_UIC_M_MEMORY* = SERVICE_BASE+20
-  SERVICE_UIC_M_DISK* = SERVICE_BASE+21
-  SERVICE_UIC_M_THREADS* = SERVICE_BASE+22
-  SERVICE_UIC_M_PROCESSES* = SERVICE_BASE+23
-  SERVICE_UIC_M_SECURITY* = SERVICE_BASE+24
-  SERVICE_UIC_M_LANROOT* = SERVICE_BASE+25
-  SERVICE_UIC_M_REDIR* = SERVICE_BASE+26
-  SERVICE_UIC_M_SERVER* = SERVICE_BASE+27
-  SERVICE_UIC_M_SEC_FILE_ERR* = SERVICE_BASE+28
-  SERVICE_UIC_M_FILES* = SERVICE_BASE+29
-  SERVICE_UIC_M_LOGS* = SERVICE_BASE+30
-  SERVICE_UIC_M_LANGROUP* = SERVICE_BASE+31
-  SERVICE_UIC_M_MSGNAME* = SERVICE_BASE+32
-  SERVICE_UIC_M_ANNOUNCE* = SERVICE_BASE+33
-  SERVICE_UIC_M_UAS* = SERVICE_BASE+34
-  SERVICE_UIC_M_SERVER_SEC_ERR* = SERVICE_BASE+35
-  SERVICE_UIC_M_WKSTA* = SERVICE_BASE+37
-  SERVICE_UIC_M_ERRLOG* = SERVICE_BASE+38
-  SERVICE_UIC_M_FILE_UW* = SERVICE_BASE+39
-  SERVICE_UIC_M_ADDPAK* = SERVICE_BASE+40
-  SERVICE_UIC_M_LAZY* = SERVICE_BASE+41
-  SERVICE_UIC_M_UAS_MACHINE_ACCT* = SERVICE_BASE+42
-  SERVICE_UIC_M_UAS_SERVERS_NMEMB* = SERVICE_BASE+43
-  SERVICE_UIC_M_UAS_SERVERS_NOGRP* = SERVICE_BASE+44
-  SERVICE_UIC_M_UAS_INVALID_ROLE* = SERVICE_BASE+45
-  SERVICE_UIC_M_NETLOGON_NO_DC* = SERVICE_BASE+46
-  SERVICE_UIC_M_NETLOGON_DC_CFLCT* = SERVICE_BASE+47
-  SERVICE_UIC_M_NETLOGON_AUTH* = SERVICE_BASE+48
-  SERVICE_UIC_M_UAS_PROLOG* = SERVICE_BASE+49
+  SERVICE_UIC_M_MEMORY* = SERVICE_BASE + 20
+  SERVICE_UIC_M_DISK* = SERVICE_BASE + 21
+  SERVICE_UIC_M_THREADS* = SERVICE_BASE + 22
+  SERVICE_UIC_M_PROCESSES* = SERVICE_BASE + 23
+  SERVICE_UIC_M_SECURITY* = SERVICE_BASE + 24
+  SERVICE_UIC_M_LANROOT* = SERVICE_BASE + 25
+  SERVICE_UIC_M_REDIR* = SERVICE_BASE + 26
+  SERVICE_UIC_M_SERVER* = SERVICE_BASE + 27
+  SERVICE_UIC_M_SEC_FILE_ERR* = SERVICE_BASE + 28
+  SERVICE_UIC_M_FILES* = SERVICE_BASE + 29
+  SERVICE_UIC_M_LOGS* = SERVICE_BASE + 30
+  SERVICE_UIC_M_LANGROUP* = SERVICE_BASE + 31
+  SERVICE_UIC_M_MSGNAME* = SERVICE_BASE + 32
+  SERVICE_UIC_M_ANNOUNCE* = SERVICE_BASE + 33
+  SERVICE_UIC_M_UAS* = SERVICE_BASE + 34
+  SERVICE_UIC_M_SERVER_SEC_ERR* = SERVICE_BASE + 35
+  SERVICE_UIC_M_WKSTA* = SERVICE_BASE + 37
+  SERVICE_UIC_M_ERRLOG* = SERVICE_BASE + 38
+  SERVICE_UIC_M_FILE_UW* = SERVICE_BASE + 39
+  SERVICE_UIC_M_ADDPAK* = SERVICE_BASE + 40
+  SERVICE_UIC_M_LAZY* = SERVICE_BASE + 41
+  SERVICE_UIC_M_UAS_MACHINE_ACCT* = SERVICE_BASE + 42
+  SERVICE_UIC_M_UAS_SERVERS_NMEMB* = SERVICE_BASE + 43
+  SERVICE_UIC_M_UAS_SERVERS_NOGRP* = SERVICE_BASE + 44
+  SERVICE_UIC_M_UAS_INVALID_ROLE* = SERVICE_BASE + 45
+  SERVICE_UIC_M_NETLOGON_NO_DC* = SERVICE_BASE + 46
+  SERVICE_UIC_M_NETLOGON_DC_CFLCT* = SERVICE_BASE + 47
+  SERVICE_UIC_M_NETLOGON_AUTH* = SERVICE_BASE + 48
+  SERVICE_UIC_M_UAS_PROLOG* = SERVICE_BASE + 49
   SERVICE2_BASE* = 5600
-  SERVICE_UIC_M_NETLOGON_MPATH* = SERVICE2_BASE+0
-  SERVICE_UIC_M_LSA_MACHINE_ACCT* = SERVICE2_BASE+1
-  SERVICE_UIC_M_DATABASE_ERROR* = SERVICE2_BASE+2
+  SERVICE_UIC_M_NETLOGON_MPATH* = SERVICE2_BASE + 0
+  SERVICE_UIC_M_LSA_MACHINE_ACCT* = SERVICE2_BASE + 1
+  SERVICE_UIC_M_DATABASE_ERROR* = SERVICE2_BASE + 2
   USE_NOFORCE* = 0
   USE_FORCE* = 1
   USE_LOTS_OF_FORCE* = 2
@@ -3453,227 +3845,227 @@
   LOGFLAGS_BACKWARD* = 0x1
   LOGFLAGS_SEEK* = 0x2
   ERRLOG_BASE* = 3100
-  NELOG_Internal_Error* = ERRLOG_BASE+0
-  NELOG_Resource_Shortage* = ERRLOG_BASE+1
-  NELOG_Unable_To_Lock_Segment* = ERRLOG_BASE+2
-  NELOG_Unable_To_Unlock_Segment* = ERRLOG_BASE+3
-  NELOG_Uninstall_Service* = ERRLOG_BASE+4
-  NELOG_Init_Exec_Fail* = ERRLOG_BASE+5
-  NELOG_Ncb_Error* = ERRLOG_BASE+6
-  NELOG_Net_Not_Started* = ERRLOG_BASE+7
-  NELOG_Ioctl_Error* = ERRLOG_BASE+8
-  NELOG_System_Semaphore* = ERRLOG_BASE+9
-  NELOG_Init_OpenCreate_Err* = ERRLOG_BASE+10
-  NELOG_NetBios* = ERRLOG_BASE+11
-  NELOG_SMB_Illegal* = ERRLOG_BASE+12
-  NELOG_Service_Fail* = ERRLOG_BASE+13
-  NELOG_Entries_Lost* = ERRLOG_BASE+14
-  NELOG_Init_Seg_Overflow* = ERRLOG_BASE+20
-  NELOG_Srv_No_Mem_Grow* = ERRLOG_BASE+21
-  NELOG_Access_File_Bad* = ERRLOG_BASE+22
-  NELOG_Srvnet_Not_Started* = ERRLOG_BASE+23
-  NELOG_Init_Chardev_Err* = ERRLOG_BASE+24
-  NELOG_Remote_API* = ERRLOG_BASE+25
-  NELOG_Ncb_TooManyErr* = ERRLOG_BASE+26
-  NELOG_Mailslot_err* = ERRLOG_BASE+27
-  NELOG_ReleaseMem_Alert* = ERRLOG_BASE+28
-  NELOG_AT_cannot_write* = ERRLOG_BASE+29
-  NELOG_Cant_Make_Msg_File* = ERRLOG_BASE+30
-  NELOG_Exec_Netservr_NoMem* = ERRLOG_BASE+31
-  NELOG_Server_Lock_Failure* = ERRLOG_BASE+32
-  NELOG_Msg_Shutdown* = ERRLOG_BASE+40
-  NELOG_Msg_Sem_Shutdown* = ERRLOG_BASE+41
-  NELOG_Msg_Log_Err* = ERRLOG_BASE+50
-  NELOG_VIO_POPUP_ERR* = ERRLOG_BASE+51
-  NELOG_Msg_Unexpected_SMB_Type* = ERRLOG_BASE+52
-  NELOG_Wksta_Infoseg* = ERRLOG_BASE+60
-  NELOG_Wksta_Compname* = ERRLOG_BASE+61
-  NELOG_Wksta_BiosThreadFailure* = ERRLOG_BASE+62
-  NELOG_Wksta_IniSeg* = ERRLOG_BASE+63
-  NELOG_Wksta_HostTab_Full* = ERRLOG_BASE+64
-  NELOG_Wksta_Bad_Mailslot_SMB* = ERRLOG_BASE+65
-  NELOG_Wksta_UASInit* = ERRLOG_BASE+66
-  NELOG_Wksta_SSIRelogon* = ERRLOG_BASE+67
-  NELOG_Build_Name* = ERRLOG_BASE+70
-  NELOG_Name_Expansion* = ERRLOG_BASE+71
-  NELOG_Message_Send* = ERRLOG_BASE+72
-  NELOG_Mail_Slt_Err* = ERRLOG_BASE+73
-  NELOG_AT_cannot_read* = ERRLOG_BASE+74
-  NELOG_AT_sched_err* = ERRLOG_BASE+75
-  NELOG_AT_schedule_file_created* = ERRLOG_BASE+76
-  NELOG_Srvnet_NB_Open* = ERRLOG_BASE+77
-  NELOG_AT_Exec_Err* = ERRLOG_BASE+78
-  NELOG_Lazy_Write_Err* = ERRLOG_BASE+80
-  NELOG_HotFix* = ERRLOG_BASE+81
-  NELOG_HardErr_From_Server* = ERRLOG_BASE+82
-  NELOG_LocalSecFail1* = ERRLOG_BASE+83
-  NELOG_LocalSecFail2* = ERRLOG_BASE+84
-  NELOG_LocalSecFail3* = ERRLOG_BASE+85
-  NELOG_LocalSecGeneralFail* = ERRLOG_BASE+86
-  NELOG_NetWkSta_Internal_Error* = ERRLOG_BASE+90
-  NELOG_NetWkSta_No_Resource* = ERRLOG_BASE+91
-  NELOG_NetWkSta_SMB_Err* = ERRLOG_BASE+92
-  NELOG_NetWkSta_VC_Err* = ERRLOG_BASE+93
-  NELOG_NetWkSta_Stuck_VC_Err* = ERRLOG_BASE+94
-  NELOG_NetWkSta_NCB_Err* = ERRLOG_BASE+95
-  NELOG_NetWkSta_Write_Behind_Err* = ERRLOG_BASE+96
-  NELOG_NetWkSta_Reset_Err* = ERRLOG_BASE+97
-  NELOG_NetWkSta_Too_Many* = ERRLOG_BASE+98
-  NELOG_Srv_Thread_Failure* = ERRLOG_BASE+104
-  NELOG_Srv_Close_Failure* = ERRLOG_BASE+105
-  NELOG_ReplUserCurDir* = ERRLOG_BASE+106
-  NELOG_ReplCannotMasterDir* = ERRLOG_BASE+107
-  NELOG_ReplUpdateError* = ERRLOG_BASE+108
-  NELOG_ReplLostMaster* = ERRLOG_BASE+109
-  NELOG_NetlogonAuthDCFail* = ERRLOG_BASE+110
-  NELOG_ReplLogonFailed* = ERRLOG_BASE+111
-  NELOG_ReplNetErr* = ERRLOG_BASE+112
-  NELOG_ReplMaxFiles* = ERRLOG_BASE+113
-  NELOG_ReplMaxTreeDepth* = ERRLOG_BASE+114
-  NELOG_ReplBadMsg* = ERRLOG_BASE+115
-  NELOG_ReplSysErr* = ERRLOG_BASE+116
-  NELOG_ReplUserLoged* = ERRLOG_BASE+117
-  NELOG_ReplBadImport* = ERRLOG_BASE+118
-  NELOG_ReplBadExport* = ERRLOG_BASE+119
-  NELOG_ReplSignalFileErr* = ERRLOG_BASE+120
-  NELOG_DiskFT* = ERRLOG_BASE+121
-  NELOG_ReplAccessDenied* = ERRLOG_BASE+122
-  NELOG_NetlogonFailedPrimary* = ERRLOG_BASE+123
-  NELOG_NetlogonPasswdSetFailed* = ERRLOG_BASE+124
-  NELOG_NetlogonTrackingError* = ERRLOG_BASE+125
-  NELOG_NetlogonSyncError* = ERRLOG_BASE+126
-  NELOG_NetlogonRequireSignOrSealError* = ERRLOG_BASE+127
-  NELOG_UPS_PowerOut* = ERRLOG_BASE+130
-  NELOG_UPS_Shutdown* = ERRLOG_BASE+131
-  NELOG_UPS_CmdFileError* = ERRLOG_BASE+132
-  NELOG_UPS_CannotOpenDriver* = ERRLOG_BASE+133
-  NELOG_UPS_PowerBack* = ERRLOG_BASE+134
-  NELOG_UPS_CmdFileConfig* = ERRLOG_BASE+135
-  NELOG_UPS_CmdFileExec* = ERRLOG_BASE+136
-  NELOG_Missing_Parameter* = ERRLOG_BASE+150
-  NELOG_Invalid_Config_Line* = ERRLOG_BASE+151
-  NELOG_Invalid_Config_File* = ERRLOG_BASE+152
-  NELOG_File_Changed* = ERRLOG_BASE+153
-  NELOG_Files_Dont_Fit* = ERRLOG_BASE+154
-  NELOG_Wrong_DLL_Version* = ERRLOG_BASE+155
-  NELOG_Error_in_DLL* = ERRLOG_BASE+156
-  NELOG_System_Error* = ERRLOG_BASE+157
-  NELOG_FT_ErrLog_Too_Large* = ERRLOG_BASE+158
-  NELOG_FT_Update_In_Progress* = ERRLOG_BASE+159
-  NELOG_Joined_Domain* = ERRLOG_BASE+160
-  NELOG_Joined_Workgroup* = ERRLOG_BASE+161
-  NELOG_OEM_Code* = ERRLOG_BASE+199
+  NELOG_Internal_Error* = ERRLOG_BASE + 0
+  NELOG_Resource_Shortage* = ERRLOG_BASE + 1
+  NELOG_Unable_To_Lock_Segment* = ERRLOG_BASE + 2
+  NELOG_Unable_To_Unlock_Segment* = ERRLOG_BASE + 3
+  NELOG_Uninstall_Service* = ERRLOG_BASE + 4
+  NELOG_Init_Exec_Fail* = ERRLOG_BASE + 5
+  NELOG_Ncb_Error* = ERRLOG_BASE + 6
+  NELOG_Net_Not_Started* = ERRLOG_BASE + 7
+  NELOG_Ioctl_Error* = ERRLOG_BASE + 8
+  NELOG_System_Semaphore* = ERRLOG_BASE + 9
+  NELOG_Init_OpenCreate_Err* = ERRLOG_BASE + 10
+  NELOG_NetBios* = ERRLOG_BASE + 11
+  NELOG_SMB_Illegal* = ERRLOG_BASE + 12
+  NELOG_Service_Fail* = ERRLOG_BASE + 13
+  NELOG_Entries_Lost* = ERRLOG_BASE + 14
+  NELOG_Init_Seg_Overflow* = ERRLOG_BASE + 20
+  NELOG_Srv_No_Mem_Grow* = ERRLOG_BASE + 21
+  NELOG_Access_File_Bad* = ERRLOG_BASE + 22
+  NELOG_Srvnet_Not_Started* = ERRLOG_BASE + 23
+  NELOG_Init_Chardev_Err* = ERRLOG_BASE + 24
+  NELOG_Remote_API* = ERRLOG_BASE + 25
+  NELOG_Ncb_TooManyErr* = ERRLOG_BASE + 26
+  NELOG_Mailslot_err* = ERRLOG_BASE + 27
+  NELOG_ReleaseMem_Alert* = ERRLOG_BASE + 28
+  NELOG_AT_cannot_write* = ERRLOG_BASE + 29
+  NELOG_Cant_Make_Msg_File* = ERRLOG_BASE + 30
+  NELOG_Exec_Netservr_NoMem* = ERRLOG_BASE + 31
+  NELOG_Server_Lock_Failure* = ERRLOG_BASE + 32
+  NELOG_Msg_Shutdown* = ERRLOG_BASE + 40
+  NELOG_Msg_Sem_Shutdown* = ERRLOG_BASE + 41
+  NELOG_Msg_Log_Err* = ERRLOG_BASE + 50
+  NELOG_VIO_POPUP_ERR* = ERRLOG_BASE + 51
+  NELOG_Msg_Unexpected_SMB_Type* = ERRLOG_BASE + 52
+  NELOG_Wksta_Infoseg* = ERRLOG_BASE + 60
+  NELOG_Wksta_Compname* = ERRLOG_BASE + 61
+  NELOG_Wksta_BiosThreadFailure* = ERRLOG_BASE + 62
+  NELOG_Wksta_IniSeg* = ERRLOG_BASE + 63
+  NELOG_Wksta_HostTab_Full* = ERRLOG_BASE + 64
+  NELOG_Wksta_Bad_Mailslot_SMB* = ERRLOG_BASE + 65
+  NELOG_Wksta_UASInit* = ERRLOG_BASE + 66
+  NELOG_Wksta_SSIRelogon* = ERRLOG_BASE + 67
+  NELOG_Build_Name* = ERRLOG_BASE + 70
+  NELOG_Name_Expansion* = ERRLOG_BASE + 71
+  NELOG_Message_Send* = ERRLOG_BASE + 72
+  NELOG_Mail_Slt_Err* = ERRLOG_BASE + 73
+  NELOG_AT_cannot_read* = ERRLOG_BASE + 74
+  NELOG_AT_sched_err* = ERRLOG_BASE + 75
+  NELOG_AT_schedule_file_created* = ERRLOG_BASE + 76
+  NELOG_Srvnet_NB_Open* = ERRLOG_BASE + 77
+  NELOG_AT_Exec_Err* = ERRLOG_BASE + 78
+  NELOG_Lazy_Write_Err* = ERRLOG_BASE + 80
+  NELOG_HotFix* = ERRLOG_BASE + 81
+  NELOG_HardErr_From_Server* = ERRLOG_BASE + 82
+  NELOG_LocalSecFail1* = ERRLOG_BASE + 83
+  NELOG_LocalSecFail2* = ERRLOG_BASE + 84
+  NELOG_LocalSecFail3* = ERRLOG_BASE + 85
+  NELOG_LocalSecGeneralFail* = ERRLOG_BASE + 86
+  NELOG_NetWkSta_Internal_Error* = ERRLOG_BASE + 90
+  NELOG_NetWkSta_No_Resource* = ERRLOG_BASE + 91
+  NELOG_NetWkSta_SMB_Err* = ERRLOG_BASE + 92
+  NELOG_NetWkSta_VC_Err* = ERRLOG_BASE + 93
+  NELOG_NetWkSta_Stuck_VC_Err* = ERRLOG_BASE + 94
+  NELOG_NetWkSta_NCB_Err* = ERRLOG_BASE + 95
+  NELOG_NetWkSta_Write_Behind_Err* = ERRLOG_BASE + 96
+  NELOG_NetWkSta_Reset_Err* = ERRLOG_BASE + 97
+  NELOG_NetWkSta_Too_Many* = ERRLOG_BASE + 98
+  NELOG_Srv_Thread_Failure* = ERRLOG_BASE + 104
+  NELOG_Srv_Close_Failure* = ERRLOG_BASE + 105
+  NELOG_ReplUserCurDir* = ERRLOG_BASE + 106
+  NELOG_ReplCannotMasterDir* = ERRLOG_BASE + 107
+  NELOG_ReplUpdateError* = ERRLOG_BASE + 108
+  NELOG_ReplLostMaster* = ERRLOG_BASE + 109
+  NELOG_NetlogonAuthDCFail* = ERRLOG_BASE + 110
+  NELOG_ReplLogonFailed* = ERRLOG_BASE + 111
+  NELOG_ReplNetErr* = ERRLOG_BASE + 112
+  NELOG_ReplMaxFiles* = ERRLOG_BASE + 113
+  NELOG_ReplMaxTreeDepth* = ERRLOG_BASE + 114
+  NELOG_ReplBadMsg* = ERRLOG_BASE + 115
+  NELOG_ReplSysErr* = ERRLOG_BASE + 116
+  NELOG_ReplUserLoged* = ERRLOG_BASE + 117
+  NELOG_ReplBadImport* = ERRLOG_BASE + 118
+  NELOG_ReplBadExport* = ERRLOG_BASE + 119
+  NELOG_ReplSignalFileErr* = ERRLOG_BASE + 120
+  NELOG_DiskFT* = ERRLOG_BASE + 121
+  NELOG_ReplAccessDenied* = ERRLOG_BASE + 122
+  NELOG_NetlogonFailedPrimary* = ERRLOG_BASE + 123
+  NELOG_NetlogonPasswdSetFailed* = ERRLOG_BASE + 124
+  NELOG_NetlogonTrackingError* = ERRLOG_BASE + 125
+  NELOG_NetlogonSyncError* = ERRLOG_BASE + 126
+  NELOG_NetlogonRequireSignOrSealError* = ERRLOG_BASE + 127
+  NELOG_UPS_PowerOut* = ERRLOG_BASE + 130
+  NELOG_UPS_Shutdown* = ERRLOG_BASE + 131
+  NELOG_UPS_CmdFileError* = ERRLOG_BASE + 132
+  NELOG_UPS_CannotOpenDriver* = ERRLOG_BASE + 133
+  NELOG_UPS_PowerBack* = ERRLOG_BASE + 134
+  NELOG_UPS_CmdFileConfig* = ERRLOG_BASE + 135
+  NELOG_UPS_CmdFileExec* = ERRLOG_BASE + 136
+  NELOG_Missing_Parameter* = ERRLOG_BASE + 150
+  NELOG_Invalid_Config_Line* = ERRLOG_BASE + 151
+  NELOG_Invalid_Config_File* = ERRLOG_BASE + 152
+  NELOG_File_Changed* = ERRLOG_BASE + 153
+  NELOG_Files_Dont_Fit* = ERRLOG_BASE + 154
+  NELOG_Wrong_DLL_Version* = ERRLOG_BASE + 155
+  NELOG_Error_in_DLL* = ERRLOG_BASE + 156
+  NELOG_System_Error* = ERRLOG_BASE + 157
+  NELOG_FT_ErrLog_Too_Large* = ERRLOG_BASE + 158
+  NELOG_FT_Update_In_Progress* = ERRLOG_BASE + 159
+  NELOG_Joined_Domain* = ERRLOG_BASE + 160
+  NELOG_Joined_Workgroup* = ERRLOG_BASE + 161
+  NELOG_OEM_Code* = ERRLOG_BASE + 199
   ERRLOG2_BASE* = 5700
-  NELOG_NetlogonSSIInitError* = ERRLOG2_BASE+0
-  NELOG_NetlogonFailedToUpdateTrustList* = ERRLOG2_BASE+1
-  NELOG_NetlogonFailedToAddRpcInterface* = ERRLOG2_BASE+2
-  NELOG_NetlogonFailedToReadMailslot* = ERRLOG2_BASE+3
-  NELOG_NetlogonFailedToRegisterSC* = ERRLOG2_BASE+4
-  NELOG_NetlogonChangeLogCorrupt* = ERRLOG2_BASE+5
-  NELOG_NetlogonFailedToCreateShare* = ERRLOG2_BASE+6
-  NELOG_NetlogonDownLevelLogonFailed* = ERRLOG2_BASE+7
-  NELOG_NetlogonDownLevelLogoffFailed* = ERRLOG2_BASE+8
-  NELOG_NetlogonNTLogonFailed* = ERRLOG2_BASE+9
-  NELOG_NetlogonNTLogoffFailed* = ERRLOG2_BASE+10
-  NELOG_NetlogonPartialSyncCallSuccess* = ERRLOG2_BASE+11
-  NELOG_NetlogonPartialSyncCallFailed* = ERRLOG2_BASE+12
-  NELOG_NetlogonFullSyncCallSuccess* = ERRLOG2_BASE+13
-  NELOG_NetlogonFullSyncCallFailed* = ERRLOG2_BASE+14
-  NELOG_NetlogonPartialSyncSuccess* = ERRLOG2_BASE+15
-  NELOG_NetlogonPartialSyncFailed* = ERRLOG2_BASE+16
-  NELOG_NetlogonFullSyncSuccess* = ERRLOG2_BASE+17
-  NELOG_NetlogonFullSyncFailed* = ERRLOG2_BASE+18
-  NELOG_NetlogonAuthNoDomainController* = ERRLOG2_BASE+19
-  NELOG_NetlogonAuthNoTrustLsaSecret* = ERRLOG2_BASE+20
-  NELOG_NetlogonAuthNoTrustSamAccount* = ERRLOG2_BASE+21
-  NELOG_NetlogonServerAuthFailed* = ERRLOG2_BASE+22
-  NELOG_NetlogonServerAuthNoTrustSamAccount* = ERRLOG2_BASE+23
-  NELOG_FailedToRegisterSC* = ERRLOG2_BASE+24
-  NELOG_FailedToSetServiceStatus* = ERRLOG2_BASE+25
-  NELOG_FailedToGetComputerName* = ERRLOG2_BASE+26
-  NELOG_DriverNotLoaded* = ERRLOG2_BASE+27
-  NELOG_NoTranportLoaded* = ERRLOG2_BASE+28
-  NELOG_NetlogonFailedDomainDelta* = ERRLOG2_BASE+29
-  NELOG_NetlogonFailedGlobalGroupDelta* = ERRLOG2_BASE+30
-  NELOG_NetlogonFailedLocalGroupDelta* = ERRLOG2_BASE+31
-  NELOG_NetlogonFailedUserDelta* = ERRLOG2_BASE+32
-  NELOG_NetlogonFailedPolicyDelta* = ERRLOG2_BASE+33
-  NELOG_NetlogonFailedTrustedDomainDelta* = ERRLOG2_BASE+34
-  NELOG_NetlogonFailedAccountDelta* = ERRLOG2_BASE+35
-  NELOG_NetlogonFailedSecretDelta* = ERRLOG2_BASE+36
-  NELOG_NetlogonSystemError* = ERRLOG2_BASE+37
-  NELOG_NetlogonDuplicateMachineAccounts* = ERRLOG2_BASE+38
-  NELOG_NetlogonTooManyGlobalGroups* = ERRLOG2_BASE+39
-  NELOG_NetlogonBrowserDriver* = ERRLOG2_BASE+40
-  NELOG_NetlogonAddNameFailure* = ERRLOG2_BASE+41
-  NELOG_RplMessages* = ERRLOG2_BASE+42
-  NELOG_RplXnsBoot* = ERRLOG2_BASE+43
-  NELOG_RplSystem* = ERRLOG2_BASE+44
-  NELOG_RplWkstaTimeout* = ERRLOG2_BASE+45
-  NELOG_RplWkstaFileOpen* = ERRLOG2_BASE+46
-  NELOG_RplWkstaFileRead* = ERRLOG2_BASE+47
-  NELOG_RplWkstaMemory* = ERRLOG2_BASE+48
-  NELOG_RplWkstaFileChecksum* = ERRLOG2_BASE+49
-  NELOG_RplWkstaFileLineCount* = ERRLOG2_BASE+50
-  NELOG_RplWkstaBbcFile* = ERRLOG2_BASE+51
-  NELOG_RplWkstaFileSize* = ERRLOG2_BASE+52
-  NELOG_RplWkstaInternal* = ERRLOG2_BASE+53
-  NELOG_RplWkstaWrongVersion* = ERRLOG2_BASE+54
-  NELOG_RplWkstaNetwork* = ERRLOG2_BASE+55
-  NELOG_RplAdapterResource* = ERRLOG2_BASE+56
-  NELOG_RplFileCopy* = ERRLOG2_BASE+57
-  NELOG_RplFileDelete* = ERRLOG2_BASE+58
-  NELOG_RplFilePerms* = ERRLOG2_BASE+59
-  NELOG_RplCheckConfigs* = ERRLOG2_BASE+60
-  NELOG_RplCreateProfiles* = ERRLOG2_BASE+61
-  NELOG_RplRegistry* = ERRLOG2_BASE+62
-  NELOG_RplReplaceRPLDISK* = ERRLOG2_BASE+63
-  NELOG_RplCheckSecurity* = ERRLOG2_BASE+64
-  NELOG_RplBackupDatabase* = ERRLOG2_BASE+65
-  NELOG_RplInitDatabase* = ERRLOG2_BASE+66
-  NELOG_RplRestoreDatabaseFailure* = ERRLOG2_BASE+67
-  NELOG_RplRestoreDatabaseSuccess* = ERRLOG2_BASE+68
-  NELOG_RplInitRestoredDatabase* = ERRLOG2_BASE+69
-  NELOG_NetlogonSessionTypeWrong* = ERRLOG2_BASE+70
-  NELOG_RplUpgradeDBTo40* = ERRLOG2_BASE+71
-  NELOG_NetlogonLanmanBdcsNotAllowed* = ERRLOG2_BASE+72
-  NELOG_NetlogonNoDynamicDns* = ERRLOG2_BASE+73
-  NELOG_NetlogonDynamicDnsRegisterFailure* = ERRLOG2_BASE+74
-  NELOG_NetlogonDynamicDnsDeregisterFailure* = ERRLOG2_BASE+75
-  NELOG_NetlogonFailedFileCreate* = ERRLOG2_BASE+76
-  NELOG_NetlogonGetSubnetToSite* = ERRLOG2_BASE+77
-  NELOG_NetlogonNoSiteForClient* = ERRLOG2_BASE+78
-  NELOG_NetlogonBadSiteName* = ERRLOG2_BASE+79
-  NELOG_NetlogonBadSubnetName* = ERRLOG2_BASE+80
-  NELOG_NetlogonDynamicDnsServerFailure* = ERRLOG2_BASE+81
-  NELOG_NetlogonDynamicDnsFailure* = ERRLOG2_BASE+82
-  NELOG_NetlogonRpcCallCancelled* = ERRLOG2_BASE+83
-  NELOG_NetlogonDcSiteCovered* = ERRLOG2_BASE+84
-  NELOG_NetlogonDcSiteNotCovered* = ERRLOG2_BASE+85
-  NELOG_NetlogonGcSiteCovered* = ERRLOG2_BASE+86
-  NELOG_NetlogonGcSiteNotCovered* = ERRLOG2_BASE+87
-  NELOG_NetlogonFailedSpnUpdate* = ERRLOG2_BASE+88
-  NELOG_NetlogonFailedDnsHostNameUpdate* = ERRLOG2_BASE+89
-  NELOG_NetlogonAuthNoUplevelDomainController* = ERRLOG2_BASE+90
-  NELOG_NetlogonAuthDomainDowngraded* = ERRLOG2_BASE+91
-  NELOG_NetlogonNdncSiteCovered* = ERRLOG2_BASE+92
-  NELOG_NetlogonNdncSiteNotCovered* = ERRLOG2_BASE+93
-  NELOG_NetlogonDcOldSiteCovered* = ERRLOG2_BASE+94
-  NELOG_NetlogonDcSiteNotCoveredAuto* = ERRLOG2_BASE+95
-  NELOG_NetlogonGcOldSiteCovered* = ERRLOG2_BASE+96
-  NELOG_NetlogonGcSiteNotCoveredAuto* = ERRLOG2_BASE+97
-  NELOG_NetlogonNdncOldSiteCovered* = ERRLOG2_BASE+98
-  NELOG_NetlogonNdncSiteNotCoveredAuto* = ERRLOG2_BASE+99
-  NELOG_NetlogonSpnMultipleSamAccountNames* = ERRLOG2_BASE+100
-  NELOG_NetlogonSpnCrackNamesFailure* = ERRLOG2_BASE+101
-  NELOG_NetlogonNoAddressToSiteMapping* = ERRLOG2_BASE+102
-  NELOG_NetlogonInvalidGenericParameterValue* = ERRLOG2_BASE+103
-  NELOG_NetlogonInvalidDwordParameterValue* = ERRLOG2_BASE+104
-  NELOG_NetlogonServerAuthFailedNoAccount* = ERRLOG2_BASE+105
-  NELOG_NetlogonNoDynamicDnsManual* = ERRLOG2_BASE+106
-  NELOG_NetlogonNoSiteForClients* = ERRLOG2_BASE+107
-  NELOG_NetlogonDnsDeregAborted* = ERRLOG2_BASE+108
-  NELOG_NetlogonRpcPortRequestFailure* = ERRLOG2_BASE+109
+  NELOG_NetlogonSSIInitError* = ERRLOG2_BASE + 0
+  NELOG_NetlogonFailedToUpdateTrustList* = ERRLOG2_BASE + 1
+  NELOG_NetlogonFailedToAddRpcInterface* = ERRLOG2_BASE + 2
+  NELOG_NetlogonFailedToReadMailslot* = ERRLOG2_BASE + 3
+  NELOG_NetlogonFailedToRegisterSC* = ERRLOG2_BASE + 4
+  NELOG_NetlogonChangeLogCorrupt* = ERRLOG2_BASE + 5
+  NELOG_NetlogonFailedToCreateShare* = ERRLOG2_BASE + 6
+  NELOG_NetlogonDownLevelLogonFailed* = ERRLOG2_BASE + 7
+  NELOG_NetlogonDownLevelLogoffFailed* = ERRLOG2_BASE + 8
+  NELOG_NetlogonNTLogonFailed* = ERRLOG2_BASE + 9
+  NELOG_NetlogonNTLogoffFailed* = ERRLOG2_BASE + 10
+  NELOG_NetlogonPartialSyncCallSuccess* = ERRLOG2_BASE + 11
+  NELOG_NetlogonPartialSyncCallFailed* = ERRLOG2_BASE + 12
+  NELOG_NetlogonFullSyncCallSuccess* = ERRLOG2_BASE + 13
+  NELOG_NetlogonFullSyncCallFailed* = ERRLOG2_BASE + 14
+  NELOG_NetlogonPartialSyncSuccess* = ERRLOG2_BASE + 15
+  NELOG_NetlogonPartialSyncFailed* = ERRLOG2_BASE + 16
+  NELOG_NetlogonFullSyncSuccess* = ERRLOG2_BASE + 17
+  NELOG_NetlogonFullSyncFailed* = ERRLOG2_BASE + 18
+  NELOG_NetlogonAuthNoDomainController* = ERRLOG2_BASE + 19
+  NELOG_NetlogonAuthNoTrustLsaSecret* = ERRLOG2_BASE + 20
+  NELOG_NetlogonAuthNoTrustSamAccount* = ERRLOG2_BASE + 21
+  NELOG_NetlogonServerAuthFailed* = ERRLOG2_BASE + 22
+  NELOG_NetlogonServerAuthNoTrustSamAccount* = ERRLOG2_BASE + 23
+  NELOG_FailedToRegisterSC* = ERRLOG2_BASE + 24
+  NELOG_FailedToSetServiceStatus* = ERRLOG2_BASE + 25
+  NELOG_FailedToGetComputerName* = ERRLOG2_BASE + 26
+  NELOG_DriverNotLoaded* = ERRLOG2_BASE + 27
+  NELOG_NoTranportLoaded* = ERRLOG2_BASE + 28
+  NELOG_NetlogonFailedDomainDelta* = ERRLOG2_BASE + 29
+  NELOG_NetlogonFailedGlobalGroupDelta* = ERRLOG2_BASE + 30
+  NELOG_NetlogonFailedLocalGroupDelta* = ERRLOG2_BASE + 31
+  NELOG_NetlogonFailedUserDelta* = ERRLOG2_BASE + 32
+  NELOG_NetlogonFailedPolicyDelta* = ERRLOG2_BASE + 33
+  NELOG_NetlogonFailedTrustedDomainDelta* = ERRLOG2_BASE + 34
+  NELOG_NetlogonFailedAccountDelta* = ERRLOG2_BASE + 35
+  NELOG_NetlogonFailedSecretDelta* = ERRLOG2_BASE + 36
+  NELOG_NetlogonSystemError* = ERRLOG2_BASE + 37
+  NELOG_NetlogonDuplicateMachineAccounts* = ERRLOG2_BASE + 38
+  NELOG_NetlogonTooManyGlobalGroups* = ERRLOG2_BASE + 39
+  NELOG_NetlogonBrowserDriver* = ERRLOG2_BASE + 40
+  NELOG_NetlogonAddNameFailure* = ERRLOG2_BASE + 41
+  NELOG_RplMessages* = ERRLOG2_BASE + 42
+  NELOG_RplXnsBoot* = ERRLOG2_BASE + 43
+  NELOG_RplSystem* = ERRLOG2_BASE + 44
+  NELOG_RplWkstaTimeout* = ERRLOG2_BASE + 45
+  NELOG_RplWkstaFileOpen* = ERRLOG2_BASE + 46
+  NELOG_RplWkstaFileRead* = ERRLOG2_BASE + 47
+  NELOG_RplWkstaMemory* = ERRLOG2_BASE + 48
+  NELOG_RplWkstaFileChecksum* = ERRLOG2_BASE + 49
+  NELOG_RplWkstaFileLineCount* = ERRLOG2_BASE + 50
+  NELOG_RplWkstaBbcFile* = ERRLOG2_BASE + 51
+  NELOG_RplWkstaFileSize* = ERRLOG2_BASE + 52
+  NELOG_RplWkstaInternal* = ERRLOG2_BASE + 53
+  NELOG_RplWkstaWrongVersion* = ERRLOG2_BASE + 54
+  NELOG_RplWkstaNetwork* = ERRLOG2_BASE + 55
+  NELOG_RplAdapterResource* = ERRLOG2_BASE + 56
+  NELOG_RplFileCopy* = ERRLOG2_BASE + 57
+  NELOG_RplFileDelete* = ERRLOG2_BASE + 58
+  NELOG_RplFilePerms* = ERRLOG2_BASE + 59
+  NELOG_RplCheckConfigs* = ERRLOG2_BASE + 60
+  NELOG_RplCreateProfiles* = ERRLOG2_BASE + 61
+  NELOG_RplRegistry* = ERRLOG2_BASE + 62
+  NELOG_RplReplaceRPLDISK* = ERRLOG2_BASE + 63
+  NELOG_RplCheckSecurity* = ERRLOG2_BASE + 64
+  NELOG_RplBackupDatabase* = ERRLOG2_BASE + 65
+  NELOG_RplInitDatabase* = ERRLOG2_BASE + 66
+  NELOG_RplRestoreDatabaseFailure* = ERRLOG2_BASE + 67
+  NELOG_RplRestoreDatabaseSuccess* = ERRLOG2_BASE + 68
+  NELOG_RplInitRestoredDatabase* = ERRLOG2_BASE + 69
+  NELOG_NetlogonSessionTypeWrong* = ERRLOG2_BASE + 70
+  NELOG_RplUpgradeDBTo40* = ERRLOG2_BASE + 71
+  NELOG_NetlogonLanmanBdcsNotAllowed* = ERRLOG2_BASE + 72
+  NELOG_NetlogonNoDynamicDns* = ERRLOG2_BASE + 73
+  NELOG_NetlogonDynamicDnsRegisterFailure* = ERRLOG2_BASE + 74
+  NELOG_NetlogonDynamicDnsDeregisterFailure* = ERRLOG2_BASE + 75
+  NELOG_NetlogonFailedFileCreate* = ERRLOG2_BASE + 76
+  NELOG_NetlogonGetSubnetToSite* = ERRLOG2_BASE + 77
+  NELOG_NetlogonNoSiteForClient* = ERRLOG2_BASE + 78
+  NELOG_NetlogonBadSiteName* = ERRLOG2_BASE + 79
+  NELOG_NetlogonBadSubnetName* = ERRLOG2_BASE + 80
+  NELOG_NetlogonDynamicDnsServerFailure* = ERRLOG2_BASE + 81
+  NELOG_NetlogonDynamicDnsFailure* = ERRLOG2_BASE + 82
+  NELOG_NetlogonRpcCallCancelled* = ERRLOG2_BASE + 83
+  NELOG_NetlogonDcSiteCovered* = ERRLOG2_BASE + 84
+  NELOG_NetlogonDcSiteNotCovered* = ERRLOG2_BASE + 85
+  NELOG_NetlogonGcSiteCovered* = ERRLOG2_BASE + 86
+  NELOG_NetlogonGcSiteNotCovered* = ERRLOG2_BASE + 87
+  NELOG_NetlogonFailedSpnUpdate* = ERRLOG2_BASE + 88
+  NELOG_NetlogonFailedDnsHostNameUpdate* = ERRLOG2_BASE + 89
+  NELOG_NetlogonAuthNoUplevelDomainController* = ERRLOG2_BASE + 90
+  NELOG_NetlogonAuthDomainDowngraded* = ERRLOG2_BASE + 91
+  NELOG_NetlogonNdncSiteCovered* = ERRLOG2_BASE + 92
+  NELOG_NetlogonNdncSiteNotCovered* = ERRLOG2_BASE + 93
+  NELOG_NetlogonDcOldSiteCovered* = ERRLOG2_BASE + 94
+  NELOG_NetlogonDcSiteNotCoveredAuto* = ERRLOG2_BASE + 95
+  NELOG_NetlogonGcOldSiteCovered* = ERRLOG2_BASE + 96
+  NELOG_NetlogonGcSiteNotCoveredAuto* = ERRLOG2_BASE + 97
+  NELOG_NetlogonNdncOldSiteCovered* = ERRLOG2_BASE + 98
+  NELOG_NetlogonNdncSiteNotCoveredAuto* = ERRLOG2_BASE + 99
+  NELOG_NetlogonSpnMultipleSamAccountNames* = ERRLOG2_BASE + 100
+  NELOG_NetlogonSpnCrackNamesFailure* = ERRLOG2_BASE + 101
+  NELOG_NetlogonNoAddressToSiteMapping* = ERRLOG2_BASE + 102
+  NELOG_NetlogonInvalidGenericParameterValue* = ERRLOG2_BASE + 103
+  NELOG_NetlogonInvalidDwordParameterValue* = ERRLOG2_BASE + 104
+  NELOG_NetlogonServerAuthFailedNoAccount* = ERRLOG2_BASE + 105
+  NELOG_NetlogonNoDynamicDnsManual* = ERRLOG2_BASE + 106
+  NELOG_NetlogonNoSiteForClients* = ERRLOG2_BASE + 107
+  NELOG_NetlogonDnsDeregAborted* = ERRLOG2_BASE + 108
+  NELOG_NetlogonRpcPortRequestFailure* = ERRLOG2_BASE + 109
   STATSOPT_CLR* = 1
   STATS_NO_VALUE* = -1
   STATS_OVERFLOW* = -2
@@ -3790,7 +4182,8 @@
   NETSETUP_DEFER_SPN_SET* = 0x00000100
   NETSETUP_INSTALL_INVOCATION* = 0x00040000
   NETSETUP_IGNORE_UNSUPPORTED_FLAGS* = 0x10000000
-  NETSETUP_VALID_UNJOIN_FLAGS* = NETSETUP_ACCT_DELETE or NETSETUP_IGNORE_UNSUPPORTED_FLAGS
+  NETSETUP_VALID_UNJOIN_FLAGS* =
+    NETSETUP_ACCT_DELETE or NETSETUP_IGNORE_UNSUPPORTED_FLAGS
   NET_IGNORE_UNSUPPORTED_FLAGS* = 0x01
   netPrimaryComputerName* = 0
   netAlternateComputerNames* = 1
@@ -3802,7 +4195,8 @@
   JOB_ADD_CURRENT_DATE* = 0x08
   JOB_NONINTERACTIVE* = 0x10
   JOB_INPUT_FLAGS* = JOB_RUN_PERIODICALLY or JOB_ADD_CURRENT_DATE or JOB_NONINTERACTIVE
-  JOB_OUTPUT_FLAGS* = JOB_RUN_PERIODICALLY or JOB_EXEC_ERROR or JOB_RUNS_TODAY or JOB_NONINTERACTIVE
+  JOB_OUTPUT_FLAGS* =
+    JOB_RUN_PERIODICALLY or JOB_EXEC_ERROR or JOB_RUNS_TODAY or JOB_NONINTERACTIVE
   DFS_VOLUME_STATES* = 0xF
   DFS_VOLUME_STATE_OK* = 1
   DFS_VOLUME_STATE_INCONSISTENT* = 2
@@ -3844,201 +4238,1071 @@
   DFS_MOVE_FLAG_REPLACE_IF_EXISTS* = 0x00000001
   PARM_ERROR_UNKNOWN* = DWORD(-1)
   USE_WILDCARD* = DWORD(-1)
-  MAXDEVENTRIES* = sizeof(int32)*8
-proc NetUserAdd*(servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUserEnum*(servername: LPCWSTR, level: DWORD, filter: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resume_handle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUserGetInfo*(servername: LPCWSTR, username: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUserSetInfo*(servername: LPCWSTR, username: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUserDel*(servername: LPCWSTR, username: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUserGetGroups*(servername: LPCWSTR, username: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUserSetGroups*(servername: LPCWSTR, username: LPCWSTR, level: DWORD, buf: LPBYTE, num_entries: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUserGetLocalGroups*(servername: LPCWSTR, username: LPCWSTR, level: DWORD, flags: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUserModalsGet*(servername: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUserModalsSet*(servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUserChangePassword*(domainname: LPCWSTR, username: LPCWSTR, oldpassword: LPCWSTR, newpassword: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetGroupAdd*(servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetGroupAddUser*(servername: LPCWSTR, GroupName: LPCWSTR, username: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetGroupEnum*(servername: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resume_handle: PDWORD_PTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetGroupGetInfo*(servername: LPCWSTR, groupname: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetGroupSetInfo*(servername: LPCWSTR, groupname: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetGroupDel*(servername: LPCWSTR, groupname: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetGroupDelUser*(servername: LPCWSTR, GroupName: LPCWSTR, Username: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetGroupGetUsers*(servername: LPCWSTR, groupname: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, ResumeHandle: PDWORD_PTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetGroupSetUsers*(servername: LPCWSTR, groupname: LPCWSTR, level: DWORD, buf: LPBYTE, totalentries: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetLocalGroupAdd*(servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetLocalGroupAddMember*(servername: LPCWSTR, groupname: LPCWSTR, membersid: PSID): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetLocalGroupEnum*(servername: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resumehandle: PDWORD_PTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetLocalGroupGetInfo*(servername: LPCWSTR, groupname: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetLocalGroupSetInfo*(servername: LPCWSTR, groupname: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetLocalGroupDel*(servername: LPCWSTR, groupname: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetLocalGroupDelMember*(servername: LPCWSTR, groupname: LPCWSTR, membersid: PSID): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetLocalGroupGetMembers*(servername: LPCWSTR, localgroupname: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resumehandle: PDWORD_PTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetLocalGroupSetMembers*(servername: LPCWSTR, groupname: LPCWSTR, level: DWORD, buf: LPBYTE, totalentries: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetLocalGroupAddMembers*(servername: LPCWSTR, groupname: LPCWSTR, level: DWORD, buf: LPBYTE, totalentries: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetLocalGroupDelMembers*(servername: LPCWSTR, groupname: LPCWSTR, level: DWORD, buf: LPBYTE, totalentries: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetQueryDisplayInformation*(ServerName: LPCWSTR, Level: DWORD, Index: DWORD, EntriesRequested: DWORD, PreferredMaximumLength: DWORD, ReturnedEntryCount: LPDWORD, SortedBuffer: ptr PVOID): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetGetDisplayInformationIndex*(ServerName: LPCWSTR, Level: DWORD, Prefix: LPCWSTR, Index: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc RxNetAccessAdd*(servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc RxNetAccessEnum*(servername: LPCWSTR, BasePath: LPCWSTR, Recursive: DWORD, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resume_handle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc RxNetAccessGetInfo*(servername: LPCWSTR, resource: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc RxNetAccessSetInfo*(servername: LPCWSTR, resource: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc RxNetAccessDel*(servername: LPCWSTR, resource: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc RxNetAccessGetUserPerms*(servername: LPCWSTR, UGname: LPCWSTR, resource: LPCWSTR, Perms: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetValidatePasswordPolicy*(ServerName: LPCWSTR, Qualifier: LPVOID, ValidationType: NET_VALIDATE_PASSWORD_TYPE, InputArg: LPVOID, OutputArg: ptr LPVOID): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetValidatePasswordPolicyFree*(OutputArg: ptr LPVOID): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetGetDCName*(servername: LPCWSTR, domainname: LPCWSTR, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetGetAnyDCName*(servername: LPCWSTR, domainname: LPCWSTR, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc I_NetLogonControl*(ServerName: LPCWSTR, FunctionCode: DWORD, QueryLevel: DWORD, Buffer: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc I_NetLogonControl2*(ServerName: LPCWSTR, FunctionCode: DWORD, QueryLevel: DWORD, Data: LPBYTE, Buffer: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetEnumerateTrustedDomains*(ServerName: LPWSTR, DomainNames: ptr LPWSTR): NTSTATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetAddServiceAccount*(ServerName: LPWSTR, AccountName: LPWSTR, Reserved: LPWSTR, Flags: DWORD): NTSTATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetRemoveServiceAccount*(ServerName: LPWSTR, AccountName: LPWSTR, Flags: DWORD): NTSTATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetIsServiceAccount*(ServerName: LPWSTR, AccountName: LPWSTR, IsService: ptr BOOL): NTSTATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetEnumerateServiceAccounts*(ServerName: LPWSTR, Flags: DWORD, AccountsCount: ptr DWORD, Accounts: ptr PZPWSTR): NTSTATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetAlertRaise*(AlertEventName: LPCWSTR, Buffer: LPVOID, BufferSize: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetAlertRaiseEx*(AlertEventName: LPCWSTR, VariableInfo: LPVOID, VariableInfoSize: DWORD, ServiceName: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetShareAdd*(servername: LMSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetShareEnum*(servername: LMSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resume_handle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetShareEnumSticky*(servername: LMSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resume_handle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetShareGetInfo*(servername: LMSTR, netname: LMSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetShareSetInfo*(servername: LMSTR, netname: LMSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetShareDel*(servername: LMSTR, netname: LMSTR, reserved: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetShareDelSticky*(servername: LMSTR, netname: LMSTR, reserved: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetShareCheck*(servername: LMSTR, device: LMSTR, `type`: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetSessionEnum*(servername: LMSTR, UncClientName: LMSTR, username: LMSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resume_handle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetSessionDel*(servername: LMSTR, UncClientName: LMSTR, username: LMSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetSessionGetInfo*(servername: LMSTR, UncClientName: LMSTR, username: LMSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetConnectionEnum*(servername: LMSTR, qualifier: LMSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resume_handle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetFileClose*(servername: LMSTR, fileid: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetFileEnum*(servername: LMSTR, basepath: LMSTR, username: LMSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resume_handle: PDWORD_PTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetFileGetInfo*(servername: LMSTR, fileid: DWORD, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetMessageNameAdd*(servername: LPCWSTR, msgname: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetMessageNameEnum*(servername: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resume_handle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetMessageNameGetInfo*(servername: LPCWSTR, msgname: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetMessageNameDel*(servername: LPCWSTR, msgname: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetMessageBufferSend*(servername: LPCWSTR, msgname: LPCWSTR, fromname: LPCWSTR, buf: LPBYTE, buflen: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetRemoteTOD*(UncServerName: LPCWSTR, BufferPtr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetRemoteComputerSupports*(UncServerName: LPCWSTR, OptionsWanted: DWORD, OptionsSupported: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplGetInfo*(servername: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplSetInfo*(servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplExportDirAdd*(servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplExportDirDel*(servername: LPCWSTR, dirname: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplExportDirEnum*(servername: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resumehandle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplExportDirGetInfo*(servername: LPCWSTR, dirname: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplExportDirSetInfo*(servername: LPCWSTR, dirname: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplExportDirLock*(servername: LPCWSTR, dirname: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplExportDirUnlock*(servername: LPCWSTR, dirname: LPCWSTR, unlockforce: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplImportDirAdd*(servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplImportDirDel*(servername: LPCWSTR, dirname: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplImportDirEnum*(servername: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resumehandle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplImportDirGetInfo*(servername: LPCWSTR, dirname: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplImportDirLock*(servername: LPCWSTR, dirname: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetReplImportDirUnlock*(servername: LPCWSTR, dirname: LPCWSTR, unlockforce: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetServerEnum*(servername: LMCSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, servertype: DWORD, domain: LMCSTR, resume_handle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetServerEnumEx*(ServerName: LMCSTR, Level: DWORD, Bufptr: ptr LPBYTE, PrefMaxlen: DWORD, EntriesRead: LPDWORD, totalentries: LPDWORD, servertype: DWORD, domain: LMCSTR, FirstNameToReturn: LMCSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetServerGetInfo*(servername: LMSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetServerSetInfo*(servername: LMSTR, level: DWORD, buf: LPBYTE, ParmError: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetServerDiskEnum*(servername: LMSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resume_handle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetServerComputerNameAdd*(ServerName: LMSTR, EmulatedDomainName: LMSTR, EmulatedServerName: LMSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetServerComputerNameDel*(ServerName: LMSTR, EmulatedServerName: LMSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetServerTransportAdd*(servername: LMSTR, level: DWORD, bufptr: LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetServerTransportAddEx*(servername: LMSTR, level: DWORD, bufptr: LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetServerTransportDel*(servername: LMSTR, level: DWORD, bufptr: LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetServerTransportEnum*(servername: LMSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resumehandle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc SetServiceBits*(hServiceStatus: SERVICE_STATUS_HANDLE, dwServiceBits: DWORD, bSetBitsOn: WINBOOL, bUpdateImmediately: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc NetServiceControl*(servername: LPCWSTR, service: LPCWSTR, opcode: DWORD, arg: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetServiceEnum*(servername: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resume_handle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetServiceGetInfo*(servername: LPCWSTR, service: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetServiceInstall*(servername: LPCWSTR, service: LPCWSTR, argc: DWORD, argv: ptr LPCWSTR, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUseAdd*(UncServerName: LMSTR, Level: DWORD, Buf: LPBYTE, ParmError: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUseDel*(UncServerName: LMSTR, UseName: LMSTR, ForceCond: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUseEnum*(UncServerName: LMSTR, Level: DWORD, BufPtr: ptr LPBYTE, PreferedMaximumSize: DWORD, EntriesRead: LPDWORD, TotalEntries: LPDWORD, ResumeHandle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUseGetInfo*(UncServerName: LMSTR, UseName: LMSTR, Level: DWORD, BufPtr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetWkstaGetInfo*(servername: LMSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetWkstaSetInfo*(servername: LMSTR, level: DWORD, buffer: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetWkstaUserGetInfo*(reserved: LMSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetWkstaUserSetInfo*(reserved: LMSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetWkstaUserEnum*(servername: LMSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resumehandle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetWkstaTransportAdd*(servername: LMSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetWkstaTransportDel*(servername: LMSTR, transportname: LMSTR, ucond: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetWkstaTransportEnum*(servername: LMSTR, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resumehandle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetApiBufferAllocate*(ByteCount: DWORD, Buffer: ptr LPVOID): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetApiBufferFree*(Buffer: LPVOID): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetApiBufferReallocate*(OldBuffer: LPVOID, NewByteCount: DWORD, NewBuffer: ptr LPVOID): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetApiBufferSize*(Buffer: LPVOID, ByteCount: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetapipBufferAllocate*(ByteCount: DWORD, Buffer: ptr LPVOID): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetErrorLogClear*(server: LPCWSTR, backupfile: LPCWSTR, reserved: LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetErrorLogRead*(server: LPCWSTR, reserved1: LPWSTR, errloghandle: LPHLOG, offset: DWORD, reserved2: LPDWORD, reserved3: DWORD, offsetflag: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, bytesread: LPDWORD, totalbytes: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetErrorLogWrite*(reserved1: LPBYTE, code: DWORD, component: LPCWSTR, buffer: LPBYTE, numbytes: DWORD, msgbuf: LPBYTE, strcount: DWORD, reserved2: LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetConfigGet*(server: LPCWSTR, component: LPCWSTR, parameter: LPCWSTR, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetConfigGetAll*(server: LPCWSTR, component: LPCWSTR, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetConfigSet*(server: LPCWSTR, reserved1: LPCWSTR, component: LPCWSTR, level: DWORD, reserved2: DWORD, buf: LPBYTE, reserved3: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetRegisterDomainNameChangeNotification*(NotificationEventHandle: PHANDLE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUnregisterDomainNameChangeNotification*(NotificationEventHandle: HANDLE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetStatisticsGet*(server: LMSTR, service: LMSTR, level: DWORD, options: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetAuditClear*(server: LPCWSTR, backupfile: LPCWSTR, service: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetAuditRead*(server: LPCWSTR, service: LPCWSTR, auditloghandle: LPHLOG, offset: DWORD, reserved1: LPDWORD, reserved2: DWORD, offsetflag: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, bytesread: LPDWORD, totalavailable: LPDWORD): DWORD {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetAuditWrite*(`type`: DWORD, buf: LPBYTE, numbytes: DWORD, service: LPCWSTR, reserved: LPBYTE): DWORD {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetJoinDomain*(lpServer: LPCWSTR, lpDomain: LPCWSTR, lpAccountOU: LPCWSTR, lpAccount: LPCWSTR, lpPassword: LPCWSTR, fJoinOptions: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetUnjoinDomain*(lpServer: LPCWSTR, lpAccount: LPCWSTR, lpPassword: LPCWSTR, fUnjoinOptions: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetRenameMachineInDomain*(lpServer: LPCWSTR, lpNewMachineName: LPCWSTR, lpAccount: LPCWSTR, lpPassword: LPCWSTR, fRenameOptions: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetValidateName*(lpServer: LPCWSTR, lpName: LPCWSTR, lpAccount: LPCWSTR, lpPassword: LPCWSTR, NameType: NETSETUP_NAME_TYPE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetGetJoinInformation*(lpServer: LPCWSTR, lpNameBuffer: ptr LPWSTR, BufferType: PNETSETUP_JOIN_STATUS): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetGetJoinableOUs*(lpServer: LPCWSTR, lpDomain: LPCWSTR, lpAccount: LPCWSTR, lpPassword: LPCWSTR, OUCount: ptr DWORD, OUs: ptr ptr LPWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetAddAlternateComputerName*(Server: LPCWSTR, AlternateName: LPCWSTR, DomainAccount: LPCWSTR, DomainAccountPassword: LPCWSTR, Reserved: ULONG): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetRemoveAlternateComputerName*(Server: LPCWSTR, AlternateName: LPCWSTR, DomainAccount: LPCWSTR, DomainAccountPassword: LPCWSTR, Reserved: ULONG): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetSetPrimaryComputerName*(Server: LPCWSTR, PrimaryName: LPCWSTR, DomainAccount: LPCWSTR, DomainAccountPassword: LPCWSTR, Reserved: ULONG): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetEnumerateComputerNames*(Server: LPCWSTR, NameType: NET_COMPUTER_NAME_TYPE, Reserved: ULONG, EntryCount: PDWORD, ComputerNames: ptr ptr LPWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetScheduleJobAdd*(Servername: LPCWSTR, Buffer: LPBYTE, JobId: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetScheduleJobDel*(Servername: LPCWSTR, MinJobId: DWORD, MaxJobId: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetScheduleJobEnum*(Servername: LPCWSTR, PointerToBuffer: ptr LPBYTE, PrefferedMaximumLength: DWORD, EntriesRead: LPDWORD, TotalEntries: LPDWORD, ResumeHandle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetScheduleJobGetInfo*(Servername: LPCWSTR, JobId: DWORD, PointerToBuffer: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetShareDelEx*(servername: LMSTR, level: DWORD, buf: LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsAdd*(DfsEntryPath: LPWSTR, ServerName: LPWSTR, ShareName: LPWSTR, Comment: LPWSTR, Flags: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsAddStdRoot*(ServerName: LPWSTR, RootShare: LPWSTR, Comment: LPWSTR, Flags: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsRemoveStdRoot*(ServerName: LPWSTR, RootShare: LPWSTR, Flags: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsAddFtRoot*(ServerName: LPWSTR, RootShare: LPWSTR, FtDfsName: LPWSTR, Comment: LPWSTR, Flags: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsRemoveFtRoot*(ServerName: LPWSTR, RootShare: LPWSTR, FtDfsName: LPWSTR, Flags: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsRemoveFtRootForced*(DomainName: LPWSTR, ServerName: LPWSTR, RootShare: LPWSTR, FtDfsName: LPWSTR, Flags: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsManagerInitialize*(ServerName: LPWSTR, Flags: DWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsAddStdRootForced*(ServerName: LPWSTR, RootShare: LPWSTR, Comment: LPWSTR, Store: LPWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsGetDcAddress*(ServerName: LPWSTR, DcIpAddress: ptr LPWSTR, IsRoot: ptr BOOLEAN, Timeout: ptr ULONG): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsRemove*(DfsEntryPath: LPWSTR, ServerName: LPWSTR, ShareName: LPWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsEnum*(DfsName: LPWSTR, Level: DWORD, PrefMaxLen: DWORD, Buffer: ptr LPBYTE, EntriesRead: LPDWORD, ResumeHandle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsGetInfo*(DfsEntryPath: LPWSTR, ServerName: LPWSTR, ShareName: LPWSTR, Level: DWORD, Buffer: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsSetInfo*(DfsEntryPath: LPWSTR, ServerName: LPWSTR, ShareName: LPWSTR, Level: DWORD, Buffer: LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsGetClientInfo*(DfsEntryPath: LPWSTR, ServerName: LPWSTR, ShareName: LPWSTR, Level: DWORD, Buffer: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsSetClientInfo*(DfsEntryPath: LPWSTR, ServerName: LPWSTR, ShareName: LPWSTR, Level: DWORD, Buffer: LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsMove*(DfsEntryPath: LPWSTR, DfsNewEntryPath: LPWSTR, Flags: ULONG): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsRename*(Path: LPWSTR, NewPath: LPWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsGetSecurity*(DfsEntryPath: LPWSTR, SecurityInformation: SECURITY_INFORMATION, ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR, lpcbSecurityDescriptor: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsSetSecurity*(DfsEntryPath: LPWSTR, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsGetStdContainerSecurity*(MachineName: LPWSTR, SecurityInformation: SECURITY_INFORMATION, ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR, lpcbSecurityDescriptor: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsSetStdContainerSecurity*(MachineName: LPWSTR, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsGetFtContainerSecurity*(DomainName: LPWSTR, SecurityInformation: SECURITY_INFORMATION, ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR, lpcbSecurityDescriptor: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetDfsSetFtContainerSecurity*(DomainName: LPWSTR, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
-proc NetAccessAdd*(servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc: "RxNetAccessAdd".}
-proc NetAccessEnum*(servername: LPCWSTR, BasePath: LPCWSTR, Recursive: DWORD, level: DWORD, bufptr: ptr LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resume_handle: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc: "RxNetAccessEnum".}
-proc NetAccessGetInfo*(servername: LPCWSTR, resource: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc: "RxNetAccessGetInfo".}
-proc NetAccessSetInfo*(servername: LPCWSTR, resource: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc: "RxNetAccessSetInfo".}
-proc NetAccessDel*(servername: LPCWSTR, resource: LPCWSTR): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc: "RxNetAccessDel".}
-proc NetAccessGetUserPerms*(servername: LPCWSTR, UGname: LPCWSTR, resource: LPCWSTR, Perms: LPDWORD): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc: "RxNetAccessGetUserPerms".}
+  MAXDEVENTRIES* = sizeof(int32) * 8
+proc NetUserAdd*(
+  servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUserEnum*(
+  servername: LPCWSTR,
+  level: DWORD,
+  filter: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resume_handle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUserGetInfo*(
+  servername: LPCWSTR, username: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUserSetInfo*(
+  servername: LPCWSTR, username: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUserDel*(
+  servername: LPCWSTR, username: LPCWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUserGetGroups*(
+  servername: LPCWSTR,
+  username: LPCWSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUserSetGroups*(
+  servername: LPCWSTR, username: LPCWSTR, level: DWORD, buf: LPBYTE, num_entries: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUserGetLocalGroups*(
+  servername: LPCWSTR,
+  username: LPCWSTR,
+  level: DWORD,
+  flags: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUserModalsGet*(
+  servername: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUserModalsSet*(
+  servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUserChangePassword*(
+  domainname: LPCWSTR, username: LPCWSTR, oldpassword: LPCWSTR, newpassword: LPCWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetGroupAdd*(
+  servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetGroupAddUser*(
+  servername: LPCWSTR, GroupName: LPCWSTR, username: LPCWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetGroupEnum*(
+  servername: LPCWSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resume_handle: PDWORD_PTR,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetGroupGetInfo*(
+  servername: LPCWSTR, groupname: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetGroupSetInfo*(
+  servername: LPCWSTR, groupname: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetGroupDel*(
+  servername: LPCWSTR, groupname: LPCWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetGroupDelUser*(
+  servername: LPCWSTR, GroupName: LPCWSTR, Username: LPCWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetGroupGetUsers*(
+  servername: LPCWSTR,
+  groupname: LPCWSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  ResumeHandle: PDWORD_PTR,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetGroupSetUsers*(
+  servername: LPCWSTR,
+  groupname: LPCWSTR,
+  level: DWORD,
+  buf: LPBYTE,
+  totalentries: DWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetLocalGroupAdd*(
+  servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetLocalGroupAddMember*(
+  servername: LPCWSTR, groupname: LPCWSTR, membersid: PSID
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetLocalGroupEnum*(
+  servername: LPCWSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resumehandle: PDWORD_PTR,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetLocalGroupGetInfo*(
+  servername: LPCWSTR, groupname: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetLocalGroupSetInfo*(
+  servername: LPCWSTR, groupname: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetLocalGroupDel*(
+  servername: LPCWSTR, groupname: LPCWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetLocalGroupDelMember*(
+  servername: LPCWSTR, groupname: LPCWSTR, membersid: PSID
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetLocalGroupGetMembers*(
+  servername: LPCWSTR,
+  localgroupname: LPCWSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resumehandle: PDWORD_PTR,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetLocalGroupSetMembers*(
+  servername: LPCWSTR,
+  groupname: LPCWSTR,
+  level: DWORD,
+  buf: LPBYTE,
+  totalentries: DWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetLocalGroupAddMembers*(
+  servername: LPCWSTR,
+  groupname: LPCWSTR,
+  level: DWORD,
+  buf: LPBYTE,
+  totalentries: DWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetLocalGroupDelMembers*(
+  servername: LPCWSTR,
+  groupname: LPCWSTR,
+  level: DWORD,
+  buf: LPBYTE,
+  totalentries: DWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetQueryDisplayInformation*(
+  ServerName: LPCWSTR,
+  Level: DWORD,
+  Index: DWORD,
+  EntriesRequested: DWORD,
+  PreferredMaximumLength: DWORD,
+  ReturnedEntryCount: LPDWORD,
+  SortedBuffer: ptr PVOID,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetGetDisplayInformationIndex*(
+  ServerName: LPCWSTR, Level: DWORD, Prefix: LPCWSTR, Index: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc RxNetAccessAdd*(
+  servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc RxNetAccessEnum*(
+  servername: LPCWSTR,
+  BasePath: LPCWSTR,
+  Recursive: DWORD,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resume_handle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc RxNetAccessGetInfo*(
+  servername: LPCWSTR, resource: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc RxNetAccessSetInfo*(
+  servername: LPCWSTR, resource: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc RxNetAccessDel*(
+  servername: LPCWSTR, resource: LPCWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc RxNetAccessGetUserPerms*(
+  servername: LPCWSTR, UGname: LPCWSTR, resource: LPCWSTR, Perms: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetValidatePasswordPolicy*(
+  ServerName: LPCWSTR,
+  Qualifier: LPVOID,
+  ValidationType: NET_VALIDATE_PASSWORD_TYPE,
+  InputArg: LPVOID,
+  OutputArg: ptr LPVOID,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetValidatePasswordPolicyFree*(
+  OutputArg: ptr LPVOID
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetGetDCName*(
+  servername: LPCWSTR, domainname: LPCWSTR, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetGetAnyDCName*(
+  servername: LPCWSTR, domainname: LPCWSTR, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc I_NetLogonControl*(
+  ServerName: LPCWSTR, FunctionCode: DWORD, QueryLevel: DWORD, Buffer: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc I_NetLogonControl2*(
+  ServerName: LPCWSTR,
+  FunctionCode: DWORD,
+  QueryLevel: DWORD,
+  Data: LPBYTE,
+  Buffer: ptr LPBYTE,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetEnumerateTrustedDomains*(
+  ServerName: LPWSTR, DomainNames: ptr LPWSTR
+): NTSTATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetAddServiceAccount*(
+  ServerName: LPWSTR, AccountName: LPWSTR, Reserved: LPWSTR, Flags: DWORD
+): NTSTATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetRemoveServiceAccount*(
+  ServerName: LPWSTR, AccountName: LPWSTR, Flags: DWORD
+): NTSTATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetIsServiceAccount*(
+  ServerName: LPWSTR, AccountName: LPWSTR, IsService: ptr BOOL
+): NTSTATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetEnumerateServiceAccounts*(
+  ServerName: LPWSTR, Flags: DWORD, AccountsCount: ptr DWORD, Accounts: ptr PZPWSTR
+): NTSTATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetAlertRaise*(
+  AlertEventName: LPCWSTR, Buffer: LPVOID, BufferSize: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetAlertRaiseEx*(
+  AlertEventName: LPCWSTR,
+  VariableInfo: LPVOID,
+  VariableInfoSize: DWORD,
+  ServiceName: LPCWSTR,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetShareAdd*(
+  servername: LMSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetShareEnum*(
+  servername: LMSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resume_handle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetShareEnumSticky*(
+  servername: LMSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resume_handle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetShareGetInfo*(
+  servername: LMSTR, netname: LMSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetShareSetInfo*(
+  servername: LMSTR, netname: LMSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetShareDel*(
+  servername: LMSTR, netname: LMSTR, reserved: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetShareDelSticky*(
+  servername: LMSTR, netname: LMSTR, reserved: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetShareCheck*(
+  servername: LMSTR, device: LMSTR, `type`: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetSessionEnum*(
+  servername: LMSTR,
+  UncClientName: LMSTR,
+  username: LMSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resume_handle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetSessionDel*(
+  servername: LMSTR, UncClientName: LMSTR, username: LMSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetSessionGetInfo*(
+  servername: LMSTR,
+  UncClientName: LMSTR,
+  username: LMSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetConnectionEnum*(
+  servername: LMSTR,
+  qualifier: LMSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resume_handle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetFileClose*(
+  servername: LMSTR, fileid: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetFileEnum*(
+  servername: LMSTR,
+  basepath: LMSTR,
+  username: LMSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resume_handle: PDWORD_PTR,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetFileGetInfo*(
+  servername: LMSTR, fileid: DWORD, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetMessageNameAdd*(
+  servername: LPCWSTR, msgname: LPCWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetMessageNameEnum*(
+  servername: LPCWSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resume_handle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetMessageNameGetInfo*(
+  servername: LPCWSTR, msgname: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetMessageNameDel*(
+  servername: LPCWSTR, msgname: LPCWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetMessageBufferSend*(
+  servername: LPCWSTR, msgname: LPCWSTR, fromname: LPCWSTR, buf: LPBYTE, buflen: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetRemoteTOD*(
+  UncServerName: LPCWSTR, BufferPtr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetRemoteComputerSupports*(
+  UncServerName: LPCWSTR, OptionsWanted: DWORD, OptionsSupported: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplGetInfo*(
+  servername: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplSetInfo*(
+  servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplExportDirAdd*(
+  servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplExportDirDel*(
+  servername: LPCWSTR, dirname: LPCWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplExportDirEnum*(
+  servername: LPCWSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resumehandle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplExportDirGetInfo*(
+  servername: LPCWSTR, dirname: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplExportDirSetInfo*(
+  servername: LPCWSTR, dirname: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplExportDirLock*(
+  servername: LPCWSTR, dirname: LPCWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplExportDirUnlock*(
+  servername: LPCWSTR, dirname: LPCWSTR, unlockforce: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplImportDirAdd*(
+  servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplImportDirDel*(
+  servername: LPCWSTR, dirname: LPCWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplImportDirEnum*(
+  servername: LPCWSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resumehandle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplImportDirGetInfo*(
+  servername: LPCWSTR, dirname: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplImportDirLock*(
+  servername: LPCWSTR, dirname: LPCWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetReplImportDirUnlock*(
+  servername: LPCWSTR, dirname: LPCWSTR, unlockforce: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetServerEnum*(
+  servername: LMCSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  servertype: DWORD,
+  domain: LMCSTR,
+  resume_handle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetServerEnumEx*(
+  ServerName: LMCSTR,
+  Level: DWORD,
+  Bufptr: ptr LPBYTE,
+  PrefMaxlen: DWORD,
+  EntriesRead: LPDWORD,
+  totalentries: LPDWORD,
+  servertype: DWORD,
+  domain: LMCSTR,
+  FirstNameToReturn: LMCSTR,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetServerGetInfo*(
+  servername: LMSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetServerSetInfo*(
+  servername: LMSTR, level: DWORD, buf: LPBYTE, ParmError: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetServerDiskEnum*(
+  servername: LMSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resume_handle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetServerComputerNameAdd*(
+  ServerName: LMSTR, EmulatedDomainName: LMSTR, EmulatedServerName: LMSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetServerComputerNameDel*(
+  ServerName: LMSTR, EmulatedServerName: LMSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetServerTransportAdd*(
+  servername: LMSTR, level: DWORD, bufptr: LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetServerTransportAddEx*(
+  servername: LMSTR, level: DWORD, bufptr: LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetServerTransportDel*(
+  servername: LMSTR, level: DWORD, bufptr: LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetServerTransportEnum*(
+  servername: LMSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resumehandle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc SetServiceBits*(
+  hServiceStatus: SERVICE_STATUS_HANDLE,
+  dwServiceBits: DWORD,
+  bSetBitsOn: WINBOOL,
+  bUpdateImmediately: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc NetServiceControl*(
+  servername: LPCWSTR, service: LPCWSTR, opcode: DWORD, arg: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetServiceEnum*(
+  servername: LPCWSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resume_handle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetServiceGetInfo*(
+  servername: LPCWSTR, service: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetServiceInstall*(
+  servername: LPCWSTR,
+  service: LPCWSTR,
+  argc: DWORD,
+  argv: ptr LPCWSTR,
+  bufptr: ptr LPBYTE,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUseAdd*(
+  UncServerName: LMSTR, Level: DWORD, Buf: LPBYTE, ParmError: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUseDel*(
+  UncServerName: LMSTR, UseName: LMSTR, ForceCond: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUseEnum*(
+  UncServerName: LMSTR,
+  Level: DWORD,
+  BufPtr: ptr LPBYTE,
+  PreferedMaximumSize: DWORD,
+  EntriesRead: LPDWORD,
+  TotalEntries: LPDWORD,
+  ResumeHandle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUseGetInfo*(
+  UncServerName: LMSTR, UseName: LMSTR, Level: DWORD, BufPtr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetWkstaGetInfo*(
+  servername: LMSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetWkstaSetInfo*(
+  servername: LMSTR, level: DWORD, buffer: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetWkstaUserGetInfo*(
+  reserved: LMSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetWkstaUserSetInfo*(
+  reserved: LMSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetWkstaUserEnum*(
+  servername: LMSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resumehandle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetWkstaTransportAdd*(
+  servername: LMSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetWkstaTransportDel*(
+  servername: LMSTR, transportname: LMSTR, ucond: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetWkstaTransportEnum*(
+  servername: LMSTR,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resumehandle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetApiBufferAllocate*(
+  ByteCount: DWORD, Buffer: ptr LPVOID
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetApiBufferFree*(
+  Buffer: LPVOID
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetApiBufferReallocate*(
+  OldBuffer: LPVOID, NewByteCount: DWORD, NewBuffer: ptr LPVOID
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetApiBufferSize*(
+  Buffer: LPVOID, ByteCount: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetapipBufferAllocate*(
+  ByteCount: DWORD, Buffer: ptr LPVOID
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetErrorLogClear*(
+  server: LPCWSTR, backupfile: LPCWSTR, reserved: LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetErrorLogRead*(
+  server: LPCWSTR,
+  reserved1: LPWSTR,
+  errloghandle: LPHLOG,
+  offset: DWORD,
+  reserved2: LPDWORD,
+  reserved3: DWORD,
+  offsetflag: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  bytesread: LPDWORD,
+  totalbytes: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetErrorLogWrite*(
+  reserved1: LPBYTE,
+  code: DWORD,
+  component: LPCWSTR,
+  buffer: LPBYTE,
+  numbytes: DWORD,
+  msgbuf: LPBYTE,
+  strcount: DWORD,
+  reserved2: LPBYTE,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetConfigGet*(
+  server: LPCWSTR, component: LPCWSTR, parameter: LPCWSTR, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetConfigGetAll*(
+  server: LPCWSTR, component: LPCWSTR, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetConfigSet*(
+  server: LPCWSTR,
+  reserved1: LPCWSTR,
+  component: LPCWSTR,
+  level: DWORD,
+  reserved2: DWORD,
+  buf: LPBYTE,
+  reserved3: DWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetRegisterDomainNameChangeNotification*(
+  NotificationEventHandle: PHANDLE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUnregisterDomainNameChangeNotification*(
+  NotificationEventHandle: HANDLE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetStatisticsGet*(
+  server: LMSTR, service: LMSTR, level: DWORD, options: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetAuditClear*(
+  server: LPCWSTR, backupfile: LPCWSTR, service: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetAuditRead*(
+  server: LPCWSTR,
+  service: LPCWSTR,
+  auditloghandle: LPHLOG,
+  offset: DWORD,
+  reserved1: LPDWORD,
+  reserved2: DWORD,
+  offsetflag: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  bytesread: LPDWORD,
+  totalavailable: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetAuditWrite*(
+  `type`: DWORD, buf: LPBYTE, numbytes: DWORD, service: LPCWSTR, reserved: LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetJoinDomain*(
+  lpServer: LPCWSTR,
+  lpDomain: LPCWSTR,
+  lpAccountOU: LPCWSTR,
+  lpAccount: LPCWSTR,
+  lpPassword: LPCWSTR,
+  fJoinOptions: DWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetUnjoinDomain*(
+  lpServer: LPCWSTR, lpAccount: LPCWSTR, lpPassword: LPCWSTR, fUnjoinOptions: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetRenameMachineInDomain*(
+  lpServer: LPCWSTR,
+  lpNewMachineName: LPCWSTR,
+  lpAccount: LPCWSTR,
+  lpPassword: LPCWSTR,
+  fRenameOptions: DWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetValidateName*(
+  lpServer: LPCWSTR,
+  lpName: LPCWSTR,
+  lpAccount: LPCWSTR,
+  lpPassword: LPCWSTR,
+  NameType: NETSETUP_NAME_TYPE,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetGetJoinInformation*(
+  lpServer: LPCWSTR, lpNameBuffer: ptr LPWSTR, BufferType: PNETSETUP_JOIN_STATUS
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetGetJoinableOUs*(
+  lpServer: LPCWSTR,
+  lpDomain: LPCWSTR,
+  lpAccount: LPCWSTR,
+  lpPassword: LPCWSTR,
+  OUCount: ptr DWORD,
+  OUs: ptr ptr LPWSTR,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetAddAlternateComputerName*(
+  Server: LPCWSTR,
+  AlternateName: LPCWSTR,
+  DomainAccount: LPCWSTR,
+  DomainAccountPassword: LPCWSTR,
+  Reserved: ULONG,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetRemoveAlternateComputerName*(
+  Server: LPCWSTR,
+  AlternateName: LPCWSTR,
+  DomainAccount: LPCWSTR,
+  DomainAccountPassword: LPCWSTR,
+  Reserved: ULONG,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetSetPrimaryComputerName*(
+  Server: LPCWSTR,
+  PrimaryName: LPCWSTR,
+  DomainAccount: LPCWSTR,
+  DomainAccountPassword: LPCWSTR,
+  Reserved: ULONG,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetEnumerateComputerNames*(
+  Server: LPCWSTR,
+  NameType: NET_COMPUTER_NAME_TYPE,
+  Reserved: ULONG,
+  EntryCount: PDWORD,
+  ComputerNames: ptr ptr LPWSTR,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetScheduleJobAdd*(
+  Servername: LPCWSTR, Buffer: LPBYTE, JobId: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetScheduleJobDel*(
+  Servername: LPCWSTR, MinJobId: DWORD, MaxJobId: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetScheduleJobEnum*(
+  Servername: LPCWSTR,
+  PointerToBuffer: ptr LPBYTE,
+  PrefferedMaximumLength: DWORD,
+  EntriesRead: LPDWORD,
+  TotalEntries: LPDWORD,
+  ResumeHandle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetScheduleJobGetInfo*(
+  Servername: LPCWSTR, JobId: DWORD, PointerToBuffer: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetShareDelEx*(
+  servername: LMSTR, level: DWORD, buf: LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsAdd*(
+  DfsEntryPath: LPWSTR,
+  ServerName: LPWSTR,
+  ShareName: LPWSTR,
+  Comment: LPWSTR,
+  Flags: DWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsAddStdRoot*(
+  ServerName: LPWSTR, RootShare: LPWSTR, Comment: LPWSTR, Flags: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsRemoveStdRoot*(
+  ServerName: LPWSTR, RootShare: LPWSTR, Flags: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsAddFtRoot*(
+  ServerName: LPWSTR,
+  RootShare: LPWSTR,
+  FtDfsName: LPWSTR,
+  Comment: LPWSTR,
+  Flags: DWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsRemoveFtRoot*(
+  ServerName: LPWSTR, RootShare: LPWSTR, FtDfsName: LPWSTR, Flags: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsRemoveFtRootForced*(
+  DomainName: LPWSTR,
+  ServerName: LPWSTR,
+  RootShare: LPWSTR,
+  FtDfsName: LPWSTR,
+  Flags: DWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsManagerInitialize*(
+  ServerName: LPWSTR, Flags: DWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsAddStdRootForced*(
+  ServerName: LPWSTR, RootShare: LPWSTR, Comment: LPWSTR, Store: LPWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsGetDcAddress*(
+  ServerName: LPWSTR, DcIpAddress: ptr LPWSTR, IsRoot: ptr BOOLEAN, Timeout: ptr ULONG
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsRemove*(
+  DfsEntryPath: LPWSTR, ServerName: LPWSTR, ShareName: LPWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsEnum*(
+  DfsName: LPWSTR,
+  Level: DWORD,
+  PrefMaxLen: DWORD,
+  Buffer: ptr LPBYTE,
+  EntriesRead: LPDWORD,
+  ResumeHandle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsGetInfo*(
+  DfsEntryPath: LPWSTR,
+  ServerName: LPWSTR,
+  ShareName: LPWSTR,
+  Level: DWORD,
+  Buffer: ptr LPBYTE,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsSetInfo*(
+  DfsEntryPath: LPWSTR,
+  ServerName: LPWSTR,
+  ShareName: LPWSTR,
+  Level: DWORD,
+  Buffer: LPBYTE,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsGetClientInfo*(
+  DfsEntryPath: LPWSTR,
+  ServerName: LPWSTR,
+  ShareName: LPWSTR,
+  Level: DWORD,
+  Buffer: ptr LPBYTE,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsSetClientInfo*(
+  DfsEntryPath: LPWSTR,
+  ServerName: LPWSTR,
+  ShareName: LPWSTR,
+  Level: DWORD,
+  Buffer: LPBYTE,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsMove*(
+  DfsEntryPath: LPWSTR, DfsNewEntryPath: LPWSTR, Flags: ULONG
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsRename*(
+  Path: LPWSTR, NewPath: LPWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsGetSecurity*(
+  DfsEntryPath: LPWSTR,
+  SecurityInformation: SECURITY_INFORMATION,
+  ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR,
+  lpcbSecurityDescriptor: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsSetSecurity*(
+  DfsEntryPath: LPWSTR,
+  SecurityInformation: SECURITY_INFORMATION,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsGetStdContainerSecurity*(
+  MachineName: LPWSTR,
+  SecurityInformation: SECURITY_INFORMATION,
+  ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR,
+  lpcbSecurityDescriptor: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsSetStdContainerSecurity*(
+  MachineName: LPWSTR,
+  SecurityInformation: SECURITY_INFORMATION,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsGetFtContainerSecurity*(
+  DomainName: LPWSTR,
+  SecurityInformation: SECURITY_INFORMATION,
+  ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR,
+  lpcbSecurityDescriptor: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetDfsSetFtContainerSecurity*(
+  DomainName: LPWSTR,
+  SecurityInformation: SECURITY_INFORMATION,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc.}
+
+proc NetAccessAdd*(
+  servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc: "RxNetAccessAdd".}
+
+proc NetAccessEnum*(
+  servername: LPCWSTR,
+  BasePath: LPCWSTR,
+  Recursive: DWORD,
+  level: DWORD,
+  bufptr: ptr LPBYTE,
+  prefmaxlen: DWORD,
+  entriesread: LPDWORD,
+  totalentries: LPDWORD,
+  resume_handle: LPDWORD,
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc: "RxNetAccessEnum".}
+
+proc NetAccessGetInfo*(
+  servername: LPCWSTR, resource: LPCWSTR, level: DWORD, bufptr: ptr LPBYTE
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc: "RxNetAccessGetInfo".}
+
+proc NetAccessSetInfo*(
+  servername: LPCWSTR, resource: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc: "RxNetAccessSetInfo".}
+
+proc NetAccessDel*(
+  servername: LPCWSTR, resource: LPCWSTR
+): NET_API_STATUS {.winapi, stdcall, dynlib: "netapi32", importc: "RxNetAccessDel".}
+
+proc NetAccessGetUserPerms*(
+  servername: LPCWSTR, UGname: LPCWSTR, resource: LPCWSTR, Perms: LPDWORD
+): NET_API_STATUS {.
+  winapi, stdcall, dynlib: "netapi32", importc: "RxNetAccessGetUserPerms"
+.}
+
 when winimUnicode:
   type
     PORT_INFO_FF* = PORT_INFO_FFW
     PPORT_INFO_FF* = PPORT_INFO_FFW
     LPPORT_INFO_FF* = LPPORT_INFO_FFW
+
 when winimAnsi:
   type
     PORT_INFO_FF* = PORT_INFO_FFA
     PPORT_INFO_FF* = PPORT_INFO_FFA
     LPPORT_INFO_FF* = LPPORT_INFO_FFA
+
 when winimCpu64:
   type
     DFS_STORAGE_INFO_0_32* {.pure.} = object
       State*: ULONG
       ServerName*: ULONG
       ShareName*: ULONG
+
     PDFS_STORAGE_INFO_0_32* = ptr DFS_STORAGE_INFO_0_32
     LPDFS_STORAGE_INFO_0_32* = ptr DFS_STORAGE_INFO_0_32
     DFS_INFO_3_32* {.pure.} = object
@@ -4047,6 +5311,7 @@
       State*: DWORD
       NumberOfStorages*: DWORD
       Storage*: ULONG
+
     PDFS_INFO_3_32* = ptr DFS_INFO_3_32
     LPDFS_INFO_3_32* = ptr DFS_INFO_3_32
     DFS_INFO_4_32* {.pure.} = object
@@ -4057,5 +5322,6 @@
       Guid*: GUID
       NumberOfStorages*: DWORD
       Storage*: ULONG
+
     PDFS_INFO_4_32* = ptr DFS_INFO_4_32
     LPDFS_INFO_4_32* = ptr DFS_INFO_4_32
--- a/semicongine/thirdparty/winim/winim/inc/lzexpand.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/lzexpand.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -22,16 +22,45 @@
 proc CopyLZFile*(P1: INT, P2: INT): LONG {.winapi, stdcall, dynlib: "lz32", importc.}
 proc LZCopy*(P1: INT, P2: INT): LONG {.winapi, stdcall, dynlib: "lz32", importc.}
 proc LZInit*(P1: INT): INT {.winapi, stdcall, dynlib: "lz32", importc.}
-proc GetExpandedNameA*(P1: LPSTR, P2: LPSTR): INT {.winapi, stdcall, dynlib: "lz32", importc.}
-proc GetExpandedNameW*(P1: LPWSTR, P2: LPWSTR): INT {.winapi, stdcall, dynlib: "lz32", importc.}
-proc LZOpenFileA*(P1: LPSTR, P2: LPOFSTRUCT, P3: WORD): INT {.winapi, stdcall, dynlib: "lz32", importc.}
-proc LZOpenFileW*(P1: LPWSTR, P2: LPOFSTRUCT, P3: WORD): INT {.winapi, stdcall, dynlib: "lz32", importc.}
-proc LZSeek*(P1: INT, P2: LONG, P3: INT): LONG {.winapi, stdcall, dynlib: "lz32", importc.}
-proc LZRead*(P1: INT, P2: LPSTR, P3: INT): INT {.winapi, stdcall, dynlib: "lz32", importc.}
+proc GetExpandedNameA*(
+  P1: LPSTR, P2: LPSTR
+): INT {.winapi, stdcall, dynlib: "lz32", importc.}
+
+proc GetExpandedNameW*(
+  P1: LPWSTR, P2: LPWSTR
+): INT {.winapi, stdcall, dynlib: "lz32", importc.}
+
+proc LZOpenFileA*(
+  P1: LPSTR, P2: LPOFSTRUCT, P3: WORD
+): INT {.winapi, stdcall, dynlib: "lz32", importc.}
+
+proc LZOpenFileW*(
+  P1: LPWSTR, P2: LPOFSTRUCT, P3: WORD
+): INT {.winapi, stdcall, dynlib: "lz32", importc.}
+
+proc LZSeek*(
+  P1: INT, P2: LONG, P3: INT
+): LONG {.winapi, stdcall, dynlib: "lz32", importc.}
+
+proc LZRead*(
+  P1: INT, P2: LPSTR, P3: INT
+): INT {.winapi, stdcall, dynlib: "lz32", importc.}
+
 proc LZClose*(P1: INT): VOID {.winapi, stdcall, dynlib: "lz32", importc.}
 when winimUnicode:
-  proc GetExpandedName*(P1: LPWSTR, P2: LPWSTR): INT {.winapi, stdcall, dynlib: "lz32", importc: "GetExpandedNameW".}
-  proc LZOpenFile*(P1: LPWSTR, P2: LPOFSTRUCT, P3: WORD): INT {.winapi, stdcall, dynlib: "lz32", importc: "LZOpenFileW".}
+  proc GetExpandedName*(
+    P1: LPWSTR, P2: LPWSTR
+  ): INT {.winapi, stdcall, dynlib: "lz32", importc: "GetExpandedNameW".}
+
+  proc LZOpenFile*(
+    P1: LPWSTR, P2: LPOFSTRUCT, P3: WORD
+  ): INT {.winapi, stdcall, dynlib: "lz32", importc: "LZOpenFileW".}
+
 when winimAnsi:
-  proc GetExpandedName*(P1: LPSTR, P2: LPSTR): INT {.winapi, stdcall, dynlib: "lz32", importc: "GetExpandedNameA".}
-  proc LZOpenFile*(P1: LPSTR, P2: LPOFSTRUCT, P3: WORD): INT {.winapi, stdcall, dynlib: "lz32", importc: "LZOpenFileA".}
+  proc GetExpandedName*(
+    P1: LPSTR, P2: LPSTR
+  ): INT {.winapi, stdcall, dynlib: "lz32", importc: "GetExpandedNameA".}
+
+  proc LZOpenFile*(
+    P1: LPSTR, P2: LPOFSTRUCT, P3: WORD
+  ): INT {.winapi, stdcall, dynlib: "lz32", importc: "LZOpenFileA".}
--- a/semicongine/thirdparty/winim/winim/inc/mcx.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/mcx.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -28,6 +28,7 @@
     dwMaxDTERate*: DWORD
     dwMaxDCERate*: DWORD
     abVariablePortion*: array[1, BYTE]
+
   PMODEMDEVCAPS* = ptr MODEMDEVCAPS
   LPMODEMDEVCAPS* = ptr MODEMDEVCAPS
   MODEMSETTINGS* {.pure.} = object
@@ -43,8 +44,10 @@
     dwNegotiatedModemOptions*: DWORD
     dwNegotiatedDCERate*: DWORD
     abVariablePortion*: array[1, BYTE]
+
   PMODEMSETTINGS* = ptr MODEMSETTINGS
   LPMODEMSETTINGS* = ptr MODEMSETTINGS
+
 const
   DIALOPTION_BILLING* = 0x00000040
   DIALOPTION_QUIET* = 0x00000080
--- a/semicongine/thirdparty/winim/winim/inc/mmsystem.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/mmsystem.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -37,8 +37,10 @@
     fps*: BYTE
     dummy*: BYTE
     pad*: array[2, BYTE]
+
   MMTIME_u_midi* {.pure.} = object
     songptrpos*: DWORD
+
   MMTIME_u* {.pure, union.} = object
     ms*: DWORD
     sample*: DWORD
@@ -46,9 +48,11 @@
     ticks*: DWORD
     smpte*: MMTIME_u_smpte
     midi*: MMTIME_u_midi
+
   MMTIME* {.pure.} = object
     wType*: UINT
     u*: MMTIME_u
+
   PMMTIME* = ptr MMTIME
   NPMMTIME* = ptr MMTIME
   LPMMTIME* = ptr MMTIME
@@ -57,6 +61,7 @@
     lpszDCISectionName*: LPCWSTR
     lpszDCIAliasName*: LPCWSTR
     dnDevNode*: DWORD
+
   PDRVCONFIGINFOEX* = ptr DRVCONFIGINFOEX
   NPDRVCONFIGINFOEX* = ptr DRVCONFIGINFOEX
   LPDRVCONFIGINFOEX* = ptr DRVCONFIGINFOEX
@@ -64,10 +69,13 @@
     dwDCISize*: DWORD
     lpszDCISectionName*: LPCWSTR
     lpszDCIAliasName*: LPCWSTR
+
   PDRVCONFIGINFO* = ptr DRVCONFIGINFO
   NPDRVCONFIGINFO* = ptr DRVCONFIGINFO
   LPDRVCONFIGINFO* = ptr DRVCONFIGINFO
-  DRVCALLBACK* = proc (hdrvr: HDRVR, uMsg: UINT, dwUser: DWORD_PTR, dw1: DWORD_PTR, dw2: DWORD_PTR): void {.stdcall.}
+  DRVCALLBACK* = proc(
+    hdrvr: HDRVR, uMsg: UINT, dwUser: DWORD_PTR, dw1: DWORD_PTR, dw2: DWORD_PTR
+  ): void {.stdcall.}
   LPDRVCALLBACK* = ptr DRVCALLBACK
   PDRVCALLBACK* = ptr DRVCALLBACK
   LPHWAVEIN* = ptr HWAVEIN
@@ -83,11 +91,12 @@
     dwLoops*: DWORD
     lpNext*: ptr WAVEHDR
     reserved*: DWORD_PTR
+
   PWAVEHDR* = ptr WAVEHDR
   NPWAVEHDR* = ptr WAVEHDR
   LPWAVEHDR* = ptr WAVEHDR
-const
-  MAXPNAMELEN* = 32
+
+const MAXPNAMELEN* = 32
 type
   WAVEOUTCAPSA* {.pure.} = object
     wMid*: WORD
@@ -98,6 +107,7 @@
     wChannels*: WORD
     wReserved1*: WORD
     dwSupport*: DWORD
+
   PWAVEOUTCAPSA* = ptr WAVEOUTCAPSA
   NPWAVEOUTCAPSA* = ptr WAVEOUTCAPSA
   LPWAVEOUTCAPSA* = ptr WAVEOUTCAPSA
@@ -110,6 +120,7 @@
     wChannels*: WORD
     wReserved1*: WORD
     dwSupport*: DWORD
+
   PWAVEOUTCAPSW* = ptr WAVEOUTCAPSW
   NPWAVEOUTCAPSW* = ptr WAVEOUTCAPSW
   LPWAVEOUTCAPSW* = ptr WAVEOUTCAPSW
@@ -125,6 +136,7 @@
     ManufacturerGuid*: GUID
     ProductGuid*: GUID
     NameGuid*: GUID
+
   PWAVEOUTCAPS2A* = ptr WAVEOUTCAPS2A
   NPWAVEOUTCAPS2A* = ptr WAVEOUTCAPS2A
   LPWAVEOUTCAPS2A* = ptr WAVEOUTCAPS2A
@@ -140,6 +152,7 @@
     ManufacturerGuid*: GUID
     ProductGuid*: GUID
     NameGuid*: GUID
+
   PWAVEOUTCAPS2W* = ptr WAVEOUTCAPS2W
   NPWAVEOUTCAPS2W* = ptr WAVEOUTCAPS2W
   LPWAVEOUTCAPS2W* = ptr WAVEOUTCAPS2W
@@ -151,6 +164,7 @@
     dwFormats*: DWORD
     wChannels*: WORD
     wReserved1*: WORD
+
   PWAVEINCAPSA* = ptr WAVEINCAPSA
   NPWAVEINCAPSA* = ptr WAVEINCAPSA
   LPWAVEINCAPSA* = ptr WAVEINCAPSA
@@ -162,6 +176,7 @@
     dwFormats*: DWORD
     wChannels*: WORD
     wReserved1*: WORD
+
   PWAVEINCAPSW* = ptr WAVEINCAPSW
   NPWAVEINCAPSW* = ptr WAVEINCAPSW
   LPWAVEINCAPSW* = ptr WAVEINCAPSW
@@ -176,6 +191,7 @@
     ManufacturerGuid*: GUID
     ProductGuid*: GUID
     NameGuid*: GUID
+
   PWAVEINCAPS2A* = ptr WAVEINCAPS2A
   NPWAVEINCAPS2A* = ptr WAVEINCAPS2A
   LPWAVEINCAPS2A* = ptr WAVEINCAPS2A
@@ -190,6 +206,7 @@
     ManufacturerGuid*: GUID
     ProductGuid*: GUID
     NameGuid*: GUID
+
   PWAVEINCAPS2W* = ptr WAVEINCAPS2W
   NPWAVEINCAPS2W* = ptr WAVEINCAPS2W
   LPWAVEINCAPS2W* = ptr WAVEINCAPS2W
@@ -199,12 +216,14 @@
     nSamplesPerSec*: DWORD
     nAvgBytesPerSec*: DWORD
     nBlockAlign*: WORD
+
   PWAVEFORMAT* = ptr WAVEFORMAT
   NPWAVEFORMAT* = ptr WAVEFORMAT
   LPWAVEFORMAT* = ptr WAVEFORMAT
   PCMWAVEFORMAT* {.pure, packed.} = object
     wf*: WAVEFORMAT
     wBitsPerSample*: WORD
+
   PPCMWAVEFORMAT* = ptr PCMWAVEFORMAT
   NPPCMWAVEFORMAT* = ptr PCMWAVEFORMAT
   LPPCMWAVEFORMAT* = ptr PCMWAVEFORMAT
@@ -216,6 +235,7 @@
     nBlockAlign*: WORD
     wBitsPerSample*: WORD
     cbSize*: WORD
+
   PWAVEFORMATEX* = ptr WAVEFORMATEX
   NPWAVEFORMATEX* = ptr WAVEFORMATEX
   LPWAVEFORMATEX* = ptr WAVEFORMATEX
@@ -226,8 +246,8 @@
   LPHMIDISTRM* = ptr HMIDISTRM
   MIDICALLBACK* = DRVCALLBACK
   LPMIDICALLBACK* = ptr MIDICALLBACK
-const
-  MIDIPATCHSIZE* = 128
+
+const MIDIPATCHSIZE* = 128
 type
   PATCHARRAY* = array[MIDIPATCHSIZE, WORD]
   KEYARRAY* = array[MIDIPATCHSIZE, WORD]
@@ -241,6 +261,7 @@
     wNotes*: WORD
     wChannelMask*: WORD
     dwSupport*: DWORD
+
   PMIDIOUTCAPSA* = ptr MIDIOUTCAPSA
   NPMIDIOUTCAPSA* = ptr MIDIOUTCAPSA
   LPMIDIOUTCAPSA* = ptr MIDIOUTCAPSA
@@ -254,6 +275,7 @@
     wNotes*: WORD
     wChannelMask*: WORD
     dwSupport*: DWORD
+
   PMIDIOUTCAPSW* = ptr MIDIOUTCAPSW
   NPMIDIOUTCAPSW* = ptr MIDIOUTCAPSW
   LPMIDIOUTCAPSW* = ptr MIDIOUTCAPSW
@@ -270,6 +292,7 @@
     ManufacturerGuid*: GUID
     ProductGuid*: GUID
     NameGuid*: GUID
+
   PMIDIOUTCAPS2A* = ptr MIDIOUTCAPS2A
   NPMIDIOUTCAPS2A* = ptr MIDIOUTCAPS2A
   LPMIDIOUTCAPS2A* = ptr MIDIOUTCAPS2A
@@ -286,6 +309,7 @@
     ManufacturerGuid*: GUID
     ProductGuid*: GUID
     NameGuid*: GUID
+
   PMIDIOUTCAPS2W* = ptr MIDIOUTCAPS2W
   NPMIDIOUTCAPS2W* = ptr MIDIOUTCAPS2W
   LPMIDIOUTCAPS2W* = ptr MIDIOUTCAPS2W
@@ -295,6 +319,7 @@
     vDriverVersion*: MMVERSION
     szPname*: array[MAXPNAMELEN, CHAR]
     dwSupport*: DWORD
+
   PMIDIINCAPSA* = ptr MIDIINCAPSA
   NPMIDIINCAPSA* = ptr MIDIINCAPSA
   LPMIDIINCAPSA* = ptr MIDIINCAPSA
@@ -304,6 +329,7 @@
     vDriverVersion*: MMVERSION
     szPname*: array[MAXPNAMELEN, WCHAR]
     dwSupport*: DWORD
+
   PMIDIINCAPSW* = ptr MIDIINCAPSW
   NPMIDIINCAPSW* = ptr MIDIINCAPSW
   LPMIDIINCAPSW* = ptr MIDIINCAPSW
@@ -316,6 +342,7 @@
     ManufacturerGuid*: GUID
     ProductGuid*: GUID
     NameGuid*: GUID
+
   PMIDIINCAPS2A* = ptr MIDIINCAPS2A
   NPMIDIINCAPS2A* = ptr MIDIINCAPS2A
   LPMIDIINCAPS2A* = ptr MIDIINCAPS2A
@@ -328,6 +355,7 @@
     ManufacturerGuid*: GUID
     ProductGuid*: GUID
     NameGuid*: GUID
+
   PMIDIINCAPS2W* = ptr MIDIINCAPS2W
   NPMIDIINCAPS2W* = ptr MIDIINCAPS2W
   LPMIDIINCAPS2W* = ptr MIDIINCAPS2W
@@ -341,16 +369,19 @@
     reserved*: DWORD_PTR
     dwOffset*: DWORD
     dwReserved*: array[8, DWORD_PTR]
+
   PMIDIHDR* = ptr MIDIHDR
   NPMIDIHDR* = ptr MIDIHDR
   LPMIDIHDR* = ptr MIDIHDR
   TMIDIPROPTIMEDIV* {.pure.} = object
     cbStruct*: DWORD
     dwTimeDiv*: DWORD
+
   LPMIDIPROPTIMEDIV* = ptr TMIDIPROPTIMEDIV
   TMIDIPROPTEMPO* {.pure.} = object
     cbStruct*: DWORD
     dwTempo*: DWORD
+
   LPMIDIPROPTEMPO* = ptr TMIDIPROPTEMPO
   AUXCAPSA* {.pure.} = object
     wMid*: WORD
@@ -360,6 +391,7 @@
     wTechnology*: WORD
     wReserved1*: WORD
     dwSupport*: DWORD
+
   PAUXCAPSA* = ptr AUXCAPSA
   NPAUXCAPSA* = ptr AUXCAPSA
   LPAUXCAPSA* = ptr AUXCAPSA
@@ -371,6 +403,7 @@
     wTechnology*: WORD
     wReserved1*: WORD
     dwSupport*: DWORD
+
   PAUXCAPSW* = ptr AUXCAPSW
   NPAUXCAPSW* = ptr AUXCAPSW
   LPAUXCAPSW* = ptr AUXCAPSW
@@ -385,6 +418,7 @@
     ManufacturerGuid*: GUID
     ProductGuid*: GUID
     NameGuid*: GUID
+
   PAUXCAPS2A* = ptr AUXCAPS2A
   NPAUXCAPS2A* = ptr AUXCAPS2A
   LPAUXCAPS2A* = ptr AUXCAPS2A
@@ -399,6 +433,7 @@
     ManufacturerGuid*: GUID
     ProductGuid*: GUID
     NameGuid*: GUID
+
   PAUXCAPS2W* = ptr AUXCAPS2W
   NPAUXCAPS2W* = ptr AUXCAPS2W
   LPAUXCAPS2W* = ptr AUXCAPS2W
@@ -411,6 +446,7 @@
     szPname*: array[MAXPNAMELEN, CHAR]
     fdwSupport*: DWORD
     cDestinations*: DWORD
+
   PMIXERCAPSA* = ptr MIXERCAPSA
   LPMIXERCAPSA* = ptr MIXERCAPSA
   MIXERCAPSW* {.pure.} = object
@@ -420,6 +456,7 @@
     szPname*: array[MAXPNAMELEN, WCHAR]
     fdwSupport*: DWORD
     cDestinations*: DWORD
+
   PMIXERCAPSW* = ptr MIXERCAPSW
   LPMIXERCAPSW* = ptr MIXERCAPSW
   MIXERCAPS2A* {.pure.} = object
@@ -432,6 +469,7 @@
     ManufacturerGuid*: GUID
     ProductGuid*: GUID
     NameGuid*: GUID
+
   PMIXERCAPS2A* = ptr MIXERCAPS2A
   LPMIXERCAPS2A* = ptr MIXERCAPS2A
   MIXERCAPS2W* {.pure.} = object
@@ -444,8 +482,10 @@
     ManufacturerGuid*: GUID
     ProductGuid*: GUID
     NameGuid*: GUID
+
   PMIXERCAPS2W* = ptr MIXERCAPS2W
   LPMIXERCAPS2W* = ptr MIXERCAPS2W
+
 const
   MIXER_SHORT_NAME_CHARS* = 16
   MIXER_LONG_NAME_CHARS* = 64
@@ -457,6 +497,7 @@
     wPid*: WORD
     vDriverVersion*: MMVERSION
     szPname*: array[MAXPNAMELEN, CHAR]
+
   MIXERLINEA* {.pure, packed.} = object
     cbStruct*: DWORD
     dwDestination*: DWORD
@@ -471,6 +512,7 @@
     szShortName*: array[MIXER_SHORT_NAME_CHARS, CHAR]
     szName*: array[MIXER_LONG_NAME_CHARS, CHAR]
     Target*: MIXERLINEA_Target
+
   PMIXERLINEA* = ptr MIXERLINEA
   LPMIXERLINEA* = ptr MIXERLINEA
   MIXERLINEW_Target* {.pure.} = object
@@ -480,6 +522,7 @@
     wPid*: WORD
     vDriverVersion*: MMVERSION
     szPname*: array[MAXPNAMELEN, WCHAR]
+
   MIXERLINEW* {.pure, packed.} = object
     cbStruct*: DWORD
     dwDestination*: DWORD
@@ -494,22 +537,27 @@
     szShortName*: array[MIXER_SHORT_NAME_CHARS, WCHAR]
     szName*: array[MIXER_LONG_NAME_CHARS, WCHAR]
     Target*: MIXERLINEW_Target
+
   PMIXERLINEW* = ptr MIXERLINEW
   LPMIXERLINEW* = ptr MIXERLINEW
   MIXERCONTROLA_Bounds_STRUCT1* {.pure.} = object
     lMinimum*: LONG
     lMaximum*: LONG
+
   MIXERCONTROLA_Bounds_STRUCT2* {.pure.} = object
     dwMinimum*: DWORD
     dwMaximum*: DWORD
+
   MIXERCONTROLA_Bounds* {.pure, union.} = object
     struct1*: MIXERCONTROLA_Bounds_STRUCT1
     struct2*: MIXERCONTROLA_Bounds_STRUCT2
     dwReserved*: array[6, DWORD]
+
   MIXERCONTROLA_Metrics* {.pure, union.} = object
     cSteps*: DWORD
     cbCustomData*: DWORD
     dwReserved*: array[6, DWORD]
+
   MIXERCONTROLA* {.pure.} = object
     cbStruct*: DWORD
     dwControlID*: DWORD
@@ -520,22 +568,27 @@
     szName*: array[MIXER_LONG_NAME_CHARS, CHAR]
     Bounds*: MIXERCONTROLA_Bounds
     Metrics*: MIXERCONTROLA_Metrics
+
   PMIXERCONTROLA* = ptr MIXERCONTROLA
   LPMIXERCONTROLA* = ptr MIXERCONTROLA
   MIXERCONTROLW_Bounds_STRUCT1* {.pure.} = object
     lMinimum*: LONG
     lMaximum*: LONG
+
   MIXERCONTROLW_Bounds_STRUCT2* {.pure.} = object
     dwMinimum*: DWORD
     dwMaximum*: DWORD
+
   MIXERCONTROLW_Bounds* {.pure, union.} = object
     struct1*: MIXERCONTROLW_Bounds_STRUCT1
     struct2*: MIXERCONTROLW_Bounds_STRUCT2
     dwReserved*: array[6, DWORD]
+
   MIXERCONTROLW_Metrics* {.pure, union.} = object
     cSteps*: DWORD
     cbCustomData*: DWORD
     dwReserved*: array[6, DWORD]
+
   MIXERCONTROLW* {.pure.} = object
     cbStruct*: DWORD
     dwControlID*: DWORD
@@ -546,11 +599,13 @@
     szName*: array[MIXER_LONG_NAME_CHARS, WCHAR]
     Bounds*: MIXERCONTROLW_Bounds
     Metrics*: MIXERCONTROLW_Metrics
+
   PMIXERCONTROLW* = ptr MIXERCONTROLW
   LPMIXERCONTROLW* = ptr MIXERCONTROLW
   MIXERLINECONTROLSA_UNION1* {.pure, union.} = object
     dwControlID*: DWORD
     dwControlType*: DWORD
+
   MIXERLINECONTROLSA* {.pure, packed.} = object
     cbStruct*: DWORD
     dwLineID*: DWORD
@@ -558,11 +613,13 @@
     cControls*: DWORD
     cbmxctrl*: DWORD
     pamxctrl*: LPMIXERCONTROLA
+
   PMIXERLINECONTROLSA* = ptr MIXERLINECONTROLSA
   LPMIXERLINECONTROLSA* = ptr MIXERLINECONTROLSA
   MIXERLINECONTROLSW_UNION1* {.pure, union.} = object
     dwControlID*: DWORD
     dwControlType*: DWORD
+
   MIXERLINECONTROLSW* {.pure, packed.} = object
     cbStruct*: DWORD
     dwLineID*: DWORD
@@ -570,11 +627,13 @@
     cControls*: DWORD
     cbmxctrl*: DWORD
     pamxctrl*: LPMIXERCONTROLW
+
   PMIXERLINECONTROLSW* = ptr MIXERLINECONTROLSW
   LPMIXERLINECONTROLSW* = ptr MIXERLINECONTROLSW
   MIXERCONTROLDETAILS_UNION1* {.pure, union.} = object
     hwndOwner*: HWND
     cMultipleItems*: DWORD
+
   MIXERCONTROLDETAILS* {.pure, packed.} = object
     cbStruct*: DWORD
     dwControlID*: DWORD
@@ -582,42 +641,51 @@
     union1*: MIXERCONTROLDETAILS_UNION1
     cbDetails*: DWORD
     paDetails*: LPVOID
+
   PMIXERCONTROLDETAILS* = ptr MIXERCONTROLDETAILS
   LPMIXERCONTROLDETAILS* = ptr MIXERCONTROLDETAILS
   MIXERCONTROLDETAILS_LISTTEXTA* {.pure.} = object
     dwParam1*: DWORD
     dwParam2*: DWORD
     szName*: array[MIXER_LONG_NAME_CHARS, CHAR]
+
   PMIXERCONTROLDETAILS_LISTTEXTA* = ptr MIXERCONTROLDETAILS_LISTTEXTA
   LPMIXERCONTROLDETAILS_LISTTEXTA* = ptr MIXERCONTROLDETAILS_LISTTEXTA
   MIXERCONTROLDETAILS_LISTTEXTW* {.pure.} = object
     dwParam1*: DWORD
     dwParam2*: DWORD
     szName*: array[MIXER_LONG_NAME_CHARS, WCHAR]
+
   PMIXERCONTROLDETAILS_LISTTEXTW* = ptr MIXERCONTROLDETAILS_LISTTEXTW
   LPMIXERCONTROLDETAILS_LISTTEXTW* = ptr MIXERCONTROLDETAILS_LISTTEXTW
   MIXERCONTROLDETAILS_BOOLEAN* {.pure.} = object
     fValue*: LONG
+
   PMIXERCONTROLDETAILS_BOOLEAN* = ptr MIXERCONTROLDETAILS_BOOLEAN
   LPMIXERCONTROLDETAILS_BOOLEAN* = ptr MIXERCONTROLDETAILS_BOOLEAN
   MIXERCONTROLDETAILS_SIGNED* {.pure.} = object
     lValue*: LONG
+
   PMIXERCONTROLDETAILS_SIGNED* = ptr MIXERCONTROLDETAILS_SIGNED
   LPMIXERCONTROLDETAILS_SIGNED* = ptr MIXERCONTROLDETAILS_SIGNED
   MIXERCONTROLDETAILS_UNSIGNED* {.pure.} = object
     dwValue*: DWORD
+
   PMIXERCONTROLDETAILS_UNSIGNED* = ptr MIXERCONTROLDETAILS_UNSIGNED
   LPMIXERCONTROLDETAILS_UNSIGNED* = ptr MIXERCONTROLDETAILS_UNSIGNED
-  TIMECALLBACK* = proc (uTimerID: UINT, uMsg: UINT, dwUser: DWORD_PTR, dw1: DWORD_PTR, dw2: DWORD_PTR): void {.stdcall.}
+  TIMECALLBACK* = proc(
+    uTimerID: UINT, uMsg: UINT, dwUser: DWORD_PTR, dw1: DWORD_PTR, dw2: DWORD_PTR
+  ): void {.stdcall.}
   LPTIMECALLBACK* = ptr TIMECALLBACK
   TIMECAPS* {.pure.} = object
     wPeriodMin*: UINT
     wPeriodMax*: UINT
+
   PTIMECAPS* = ptr TIMECAPS
   NPTIMECAPS* = ptr TIMECAPS
   LPTIMECAPS* = ptr TIMECAPS
-const
-  MAX_JOYSTICKOEMVXDNAME* = 260
+
+const MAX_JOYSTICKOEMVXDNAME* = 260
 type
   JOYCAPSA* {.pure.} = object
     wMid*: WORD
@@ -644,6 +712,7 @@
     wMaxButtons*: UINT
     szRegKey*: array[MAXPNAMELEN, CHAR]
     szOEMVxD*: array[MAX_JOYSTICKOEMVXDNAME, CHAR]
+
   PJOYCAPSA* = ptr JOYCAPSA
   NPJOYCAPSA* = ptr JOYCAPSA
   LPJOYCAPSA* = ptr JOYCAPSA
@@ -672,6 +741,7 @@
     wMaxButtons*: UINT
     szRegKey*: array[MAXPNAMELEN, WCHAR]
     szOEMVxD*: array[MAX_JOYSTICKOEMVXDNAME, WCHAR]
+
   PJOYCAPSW* = ptr JOYCAPSW
   NPJOYCAPSW* = ptr JOYCAPSW
   LPJOYCAPSW* = ptr JOYCAPSW
@@ -703,6 +773,7 @@
     ManufacturerGuid*: GUID
     ProductGuid*: GUID
     NameGuid*: GUID
+
   PJOYCAPS2A* = ptr JOYCAPS2A
   NPJOYCAPS2A* = ptr JOYCAPS2A
   LPJOYCAPS2A* = ptr JOYCAPS2A
@@ -734,6 +805,7 @@
     ManufacturerGuid*: GUID
     ProductGuid*: GUID
     NameGuid*: GUID
+
   PJOYCAPS2W* = ptr JOYCAPS2W
   NPJOYCAPS2W* = ptr JOYCAPS2W
   LPJOYCAPS2W* = ptr JOYCAPS2W
@@ -742,6 +814,7 @@
     wYpos*: UINT
     wZpos*: UINT
     wButtons*: UINT
+
   PJOYINFO* = ptr JOYINFO
   NPJOYINFO* = ptr JOYINFO
   LPJOYINFO* = ptr JOYINFO
@@ -759,10 +832,13 @@
     dwPOV*: DWORD
     dwReserved1*: DWORD
     dwReserved2*: DWORD
+
   PJOYINFOEX* = ptr JOYINFOEX
   NPJOYINFOEX* = ptr JOYINFOEX
   LPJOYINFOEX* = ptr JOYINFOEX
-  MMIOPROC* = proc (lpmmioinfo: LPSTR, uMsg: UINT, lParam1: LPARAM, lParam2: LPARAM): LRESULT {.stdcall.}
+  MMIOPROC* = proc(
+    lpmmioinfo: LPSTR, uMsg: UINT, lParam1: LPARAM, lParam2: LPARAM
+  ): LRESULT {.stdcall.}
   LPMMIOPROC* = ptr MMIOPROC
   MMIOINFO* {.pure, packed.} = object
     dwFlags*: DWORD
@@ -781,6 +857,7 @@
     dwReserved1*: DWORD
     dwReserved2*: DWORD
     hmmio*: HMMIO
+
   PMMIOINFO* = ptr MMIOINFO
   NPMMIOINFO* = ptr MMIOINFO
   LPMMIOINFO* = ptr MMIOINFO
@@ -791,6 +868,7 @@
     fccType*: FOURCC
     dwDataOffset*: DWORD
     dwFlags*: DWORD
+
   PMMCKINFO* = ptr MMCKINFO
   NPMMCKINFO* = ptr MMCKINFO
   LPMMCKINFO* = ptr MMCKINFO
@@ -798,6 +876,7 @@
   MCIDEVICEID* = UINT
   MCI_GENERIC_PARMS* {.pure.} = object
     dwCallback*: DWORD_PTR
+
   PMCI_GENERIC_PARMS* = ptr MCI_GENERIC_PARMS
   LPMCI_GENERIC_PARMS* = ptr MCI_GENERIC_PARMS
   MCI_OPEN_PARMSA* {.pure, packed.} = object
@@ -806,6 +885,7 @@
     lpstrDeviceType*: LPCSTR
     lpstrElementName*: LPCSTR
     lpstrAlias*: LPCSTR
+
   PMCI_OPEN_PARMSA* = ptr MCI_OPEN_PARMSA
   LPMCI_OPEN_PARMSA* = ptr MCI_OPEN_PARMSA
   MCI_OPEN_PARMSW* {.pure, packed.} = object
@@ -814,17 +894,20 @@
     lpstrDeviceType*: LPCWSTR
     lpstrElementName*: LPCWSTR
     lpstrAlias*: LPCWSTR
+
   PMCI_OPEN_PARMSW* = ptr MCI_OPEN_PARMSW
   LPMCI_OPEN_PARMSW* = ptr MCI_OPEN_PARMSW
   MCI_PLAY_PARMS* {.pure.} = object
     dwCallback*: DWORD_PTR
     dwFrom*: DWORD
     dwTo*: DWORD
+
   PMCI_PLAY_PARMS* = ptr MCI_PLAY_PARMS
   LPMCI_PLAY_PARMS* = ptr MCI_PLAY_PARMS
   MCI_SEEK_PARMS* {.pure, packed.} = object
     dwCallback*: DWORD_PTR
     dwTo*: DWORD
+
   PMCI_SEEK_PARMS* = ptr MCI_SEEK_PARMS
   LPMCI_SEEK_PARMS* = ptr MCI_SEEK_PARMS
   MCI_STATUS_PARMS* {.pure.} = object
@@ -832,22 +915,26 @@
     dwReturn*: DWORD_PTR
     dwItem*: DWORD
     dwTrack*: DWORD
+
   PMCI_STATUS_PARMS* = ptr MCI_STATUS_PARMS
   LPMCI_STATUS_PARMS* = ptr MCI_STATUS_PARMS
   MCI_INFO_PARMSA* {.pure, packed.} = object
     dwCallback*: DWORD_PTR
     lpstrReturn*: LPSTR
     dwRetSize*: DWORD
+
   LPMCI_INFO_PARMSA* = ptr MCI_INFO_PARMSA
   MCI_INFO_PARMSW* {.pure, packed.} = object
     dwCallback*: DWORD_PTR
     lpstrReturn*: LPWSTR
     dwRetSize*: DWORD
+
   LPMCI_INFO_PARMSW* = ptr MCI_INFO_PARMSW
   MCI_GETDEVCAPS_PARMS* {.pure.} = object
     dwCallback*: DWORD_PTR
     dwReturn*: DWORD
     dwItem*: DWORD
+
   PMCI_GETDEVCAPS_PARMS* = ptr MCI_GETDEVCAPS_PARMS
   LPMCI_GETDEVCAPS_PARMS* = ptr MCI_GETDEVCAPS_PARMS
   MCI_SYSINFO_PARMSA* {.pure, packed.} = object
@@ -856,6 +943,7 @@
     dwRetSize*: DWORD
     dwNumber*: DWORD
     wDeviceType*: UINT
+
   PMCI_SYSINFO_PARMSA* = ptr MCI_SYSINFO_PARMSA
   LPMCI_SYSINFO_PARMSA* = ptr MCI_SYSINFO_PARMSA
   MCI_SYSINFO_PARMSW* {.pure, packed.} = object
@@ -864,65 +952,77 @@
     dwRetSize*: DWORD
     dwNumber*: DWORD
     wDeviceType*: UINT
+
   PMCI_SYSINFO_PARMSW* = ptr MCI_SYSINFO_PARMSW
   LPMCI_SYSINFO_PARMSW* = ptr MCI_SYSINFO_PARMSW
   MCI_SET_PARMS* {.pure.} = object
     dwCallback*: DWORD_PTR
     dwTimeFormat*: DWORD
     dwAudio*: DWORD
+
   PMCI_SET_PARMS* = ptr MCI_SET_PARMS
   LPMCI_SET_PARMS* = ptr MCI_SET_PARMS
   MCI_BREAK_PARMS* {.pure, packed.} = object
     dwCallback*: DWORD_PTR
     nVirtKey*: int32
     hwndBreak*: HWND
+
   PMCI_BREAK_PARMS* = ptr MCI_BREAK_PARMS
   LPMCI_BREAK_PARMS* = ptr MCI_BREAK_PARMS
   MCI_SAVE_PARMSA* {.pure.} = object
     dwCallback*: DWORD_PTR
     lpfilename*: LPCSTR
+
   PMCI_SAVE_PARMSA* = ptr MCI_SAVE_PARMSA
   LPMCI_SAVE_PARMSA* = ptr MCI_SAVE_PARMSA
   MCI_SAVE_PARMSW* {.pure.} = object
     dwCallback*: DWORD_PTR
     lpfilename*: LPCWSTR
+
   PMCI_SAVE_PARMSW* = ptr MCI_SAVE_PARMSW
   LPMCI_SAVE_PARMSW* = ptr MCI_SAVE_PARMSW
   MCI_LOAD_PARMSA* {.pure.} = object
     dwCallback*: DWORD_PTR
     lpfilename*: LPCSTR
+
   PMCI_LOAD_PARMSA* = ptr MCI_LOAD_PARMSA
   LPMCI_LOAD_PARMSA* = ptr MCI_LOAD_PARMSA
   MCI_LOAD_PARMSW* {.pure.} = object
     dwCallback*: DWORD_PTR
     lpfilename*: LPCWSTR
+
   PMCI_LOAD_PARMSW* = ptr MCI_LOAD_PARMSW
   LPMCI_LOAD_PARMSW* = ptr MCI_LOAD_PARMSW
   MCI_RECORD_PARMS* {.pure.} = object
     dwCallback*: DWORD_PTR
     dwFrom*: DWORD
     dwTo*: DWORD
+
   LPMCI_RECORD_PARMS* = ptr MCI_RECORD_PARMS
   MCI_VD_PLAY_PARMS* {.pure, packed.} = object
     dwCallback*: DWORD_PTR
     dwFrom*: DWORD
     dwTo*: DWORD
     dwSpeed*: DWORD
+
   PMCI_VD_PLAY_PARMS* = ptr MCI_VD_PLAY_PARMS
   LPMCI_VD_PLAY_PARMS* = ptr MCI_VD_PLAY_PARMS
   MCI_VD_STEP_PARMS* {.pure, packed.} = object
     dwCallback*: DWORD_PTR
     dwFrames*: DWORD
+
   PMCI_VD_STEP_PARMS* = ptr MCI_VD_STEP_PARMS
   LPMCI_VD_STEP_PARMS* = ptr MCI_VD_STEP_PARMS
   MCI_VD_ESCAPE_PARMSA* {.pure.} = object
     dwCallback*: DWORD_PTR
     lpstrCommand*: LPCSTR
+
   PMCI_VD_ESCAPE_PARMSA* = ptr MCI_VD_ESCAPE_PARMSA
   LPMCI_VD_ESCAPE_PARMSA* = ptr MCI_VD_ESCAPE_PARMSA
   MCI_VD_ESCAPE_PARMSW* {.pure.} = object
     dwCallback*: DWORD_PTR
     lpstrCommand*: LPCWSTR
+
   PMCI_VD_ESCAPE_PARMSW* = ptr MCI_VD_ESCAPE_PARMSW
   LPMCI_VD_ESCAPE_PARMSW* = ptr MCI_VD_ESCAPE_PARMSW
   MCI_WAVE_OPEN_PARMSA* {.pure, packed.} = object
@@ -932,6 +1032,7 @@
     lpstrElementName*: LPCSTR
     lpstrAlias*: LPCSTR
     dwBufferSeconds*: DWORD
+
   PMCI_WAVE_OPEN_PARMSA* = ptr MCI_WAVE_OPEN_PARMSA
   LPMCI_WAVE_OPEN_PARMSA* = ptr MCI_WAVE_OPEN_PARMSA
   MCI_WAVE_OPEN_PARMSW* {.pure, packed.} = object
@@ -941,12 +1042,14 @@
     lpstrElementName*: LPCWSTR
     lpstrAlias*: LPCWSTR
     dwBufferSeconds*: DWORD
+
   PMCI_WAVE_OPEN_PARMSW* = ptr MCI_WAVE_OPEN_PARMSW
   LPMCI_WAVE_OPEN_PARMSW* = ptr MCI_WAVE_OPEN_PARMSW
   MCI_WAVE_DELETE_PARMS* {.pure.} = object
     dwCallback*: DWORD_PTR
     dwFrom*: DWORD
     dwTo*: DWORD
+
   PMCI_WAVE_DELETE_PARMS* = ptr MCI_WAVE_DELETE_PARMS
   LPMCI_WAVE_DELETE_PARMS* = ptr MCI_WAVE_DELETE_PARMS
   MCI_WAVE_SET_PARMS* {.pure.} = object
@@ -965,6 +1068,7 @@
     wReserved4*: WORD
     wBitsPerSample*: WORD
     wReserved5*: WORD
+
   PMCI_WAVE_SET_PARMS* = ptr MCI_WAVE_SET_PARMS
   LPMCI_WAVE_SET_PARMS* = ptr MCI_WAVE_SET_PARMS
   MCI_SEQ_SET_PARMS* {.pure, packed.} = object
@@ -976,6 +1080,7 @@
     dwSlave*: DWORD
     dwMaster*: DWORD
     dwOffset*: DWORD
+
   PMCI_SEQ_SET_PARMS* = ptr MCI_SEQ_SET_PARMS
   LPMCI_SEQ_SET_PARMS* = ptr MCI_SEQ_SET_PARMS
   MCI_ANIM_OPEN_PARMSA* {.pure, packed.} = object
@@ -986,6 +1091,7 @@
     lpstrAlias*: LPCSTR
     dwStyle*: DWORD
     hWndParent*: HWND
+
   PMCI_ANIM_OPEN_PARMSA* = ptr MCI_ANIM_OPEN_PARMSA
   LPMCI_ANIM_OPEN_PARMSA* = ptr MCI_ANIM_OPEN_PARMSA
   MCI_ANIM_OPEN_PARMSW* {.pure, packed.} = object
@@ -996,6 +1102,7 @@
     lpstrAlias*: LPCWSTR
     dwStyle*: DWORD
     hWndParent*: HWND
+
   PMCI_ANIM_OPEN_PARMSW* = ptr MCI_ANIM_OPEN_PARMSW
   LPMCI_ANIM_OPEN_PARMSW* = ptr MCI_ANIM_OPEN_PARMSW
   MCI_ANIM_PLAY_PARMS* {.pure, packed.} = object
@@ -1003,11 +1110,13 @@
     dwFrom*: DWORD
     dwTo*: DWORD
     dwSpeed*: DWORD
+
   PMCI_ANIM_PLAY_PARMS* = ptr MCI_ANIM_PLAY_PARMS
   LPMCI_ANIM_PLAY_PARMS* = ptr MCI_ANIM_PLAY_PARMS
   MCI_ANIM_STEP_PARMS* {.pure, packed.} = object
     dwCallback*: DWORD_PTR
     dwFrames*: DWORD
+
   PMCI_ANIM_STEP_PARMS* = ptr MCI_ANIM_STEP_PARMS
   LPMCI_ANIM_STEP_PARMS* = ptr MCI_ANIM_STEP_PARMS
   MCI_ANIM_WINDOW_PARMSA* {.pure, packed.} = object
@@ -1015,6 +1124,7 @@
     hWnd*: HWND
     nCmdShow*: UINT
     lpstrText*: LPCSTR
+
   PMCI_ANIM_WINDOW_PARMSA* = ptr MCI_ANIM_WINDOW_PARMSA
   LPMCI_ANIM_WINDOW_PARMSA* = ptr MCI_ANIM_WINDOW_PARMSA
   MCI_ANIM_WINDOW_PARMSW* {.pure, packed.} = object
@@ -1022,17 +1132,20 @@
     hWnd*: HWND
     nCmdShow*: UINT
     lpstrText*: LPCWSTR
+
   PMCI_ANIM_WINDOW_PARMSW* = ptr MCI_ANIM_WINDOW_PARMSW
   LPMCI_ANIM_WINDOW_PARMSW* = ptr MCI_ANIM_WINDOW_PARMSW
   MCI_ANIM_RECT_PARMS* {.pure.} = object
     dwCallback*: DWORD_PTR
     rc*: RECT
+
   PMCI_ANIM_RECT_PARMS* = ptr MCI_ANIM_RECT_PARMS
   LPMCI_ANIM_RECT_PARMS* = ptr MCI_ANIM_RECT_PARMS
   MCI_ANIM_UPDATE_PARMS* {.pure.} = object
     dwCallback*: DWORD_PTR
     rc*: RECT
     hDC*: HDC
+
   PMCI_ANIM_UPDATE_PARMS* = ptr MCI_ANIM_UPDATE_PARMS
   LPMCI_ANIM_UPDATE_PARMS* = ptr MCI_ANIM_UPDATE_PARMS
   MCI_OVLY_OPEN_PARMSA* {.pure, packed.} = object
@@ -1043,6 +1156,7 @@
     lpstrAlias*: LPCSTR
     dwStyle*: DWORD
     hWndParent*: HWND
+
   PMCI_OVLY_OPEN_PARMSA* = ptr MCI_OVLY_OPEN_PARMSA
   LPMCI_OVLY_OPEN_PARMSA* = ptr MCI_OVLY_OPEN_PARMSA
   MCI_OVLY_OPEN_PARMSW* {.pure, packed.} = object
@@ -1053,6 +1167,7 @@
     lpstrAlias*: LPCWSTR
     dwStyle*: DWORD
     hWndParent*: HWND
+
   PMCI_OVLY_OPEN_PARMSW* = ptr MCI_OVLY_OPEN_PARMSW
   LPMCI_OVLY_OPEN_PARMSW* = ptr MCI_OVLY_OPEN_PARMSW
   MCI_OVLY_WINDOW_PARMSA* {.pure, packed.} = object
@@ -1060,6 +1175,7 @@
     hWnd*: HWND
     nCmdShow*: UINT
     lpstrText*: LPCSTR
+
   PMCI_OVLY_WINDOW_PARMSA* = ptr MCI_OVLY_WINDOW_PARMSA
   LPMCI_OVLY_WINDOW_PARMSA* = ptr MCI_OVLY_WINDOW_PARMSA
   MCI_OVLY_WINDOW_PARMSW* {.pure, packed.} = object
@@ -1067,46 +1183,54 @@
     hWnd*: HWND
     nCmdShow*: UINT
     lpstrText*: LPCWSTR
+
   PMCI_OVLY_WINDOW_PARMSW* = ptr MCI_OVLY_WINDOW_PARMSW
   LPMCI_OVLY_WINDOW_PARMSW* = ptr MCI_OVLY_WINDOW_PARMSW
   MCI_OVLY_RECT_PARMS* {.pure.} = object
     dwCallback*: DWORD_PTR
     rc*: RECT
+
   PMCI_OVLY_RECT_PARMS* = ptr MCI_OVLY_RECT_PARMS
   LPMCI_OVLY_RECT_PARMS* = ptr MCI_OVLY_RECT_PARMS
   MCI_OVLY_SAVE_PARMSA* {.pure.} = object
     dwCallback*: DWORD_PTR
     lpfilename*: LPCSTR
     rc*: RECT
+
   PMCI_OVLY_SAVE_PARMSA* = ptr MCI_OVLY_SAVE_PARMSA
   LPMCI_OVLY_SAVE_PARMSA* = ptr MCI_OVLY_SAVE_PARMSA
   MCI_OVLY_SAVE_PARMSW* {.pure.} = object
     dwCallback*: DWORD_PTR
     lpfilename*: LPCWSTR
     rc*: RECT
+
   PMCI_OVLY_SAVE_PARMSW* = ptr MCI_OVLY_SAVE_PARMSW
   LPMCI_OVLY_SAVE_PARMSW* = ptr MCI_OVLY_SAVE_PARMSW
   MCI_OVLY_LOAD_PARMSA* {.pure.} = object
     dwCallback*: DWORD_PTR
     lpfilename*: LPCSTR
     rc*: RECT
+
   PMCI_OVLY_LOAD_PARMSA* = ptr MCI_OVLY_LOAD_PARMSA
   LPMCI_OVLY_LOAD_PARMSA* = ptr MCI_OVLY_LOAD_PARMSA
   MCI_OVLY_LOAD_PARMSW* {.pure.} = object
     dwCallback*: DWORD_PTR
     lpfilename*: LPCWSTR
     rc*: RECT
+
   PMCI_OVLY_LOAD_PARMSW* = ptr MCI_OVLY_LOAD_PARMSW
   LPMCI_OVLY_LOAD_PARMSW* = ptr MCI_OVLY_LOAD_PARMSW
   WAVEFORMATEXTENSIBLE_Samples* {.pure, union.} = object
     wValidBitsPerSample*: WORD
     wSamplesPerBlock*: WORD
     wReserved*: WORD
+
   TWAVEFORMATEXTENSIBLE* {.pure, packed.} = object
     Format*: WAVEFORMATEX
     Samples*: WAVEFORMATEXTENSIBLE_Samples
     dwChannelMask*: DWORD
     SubFormat*: GUID
+
   PWAVEFORMATEXTENSIBLE* = ptr TWAVEFORMATEXTENSIBLE
   WAVEFORMATPCMEX* = TWAVEFORMATEXTENSIBLE
   PWAVEFORMATPCMEX* = ptr WAVEFORMATPCMEX
@@ -1119,6 +1243,7 @@
   ADPCMCOEFSET* {.pure.} = object
     iCoef1*: int16
     iCoef2*: int16
+
   PADPCMCOEFSET* = ptr ADPCMCOEFSET
   NPADPCMCOEFSET* = ptr ADPCMCOEFSET
   LPADPCMCOEFSET* = ptr ADPCMCOEFSET
@@ -1127,6 +1252,7 @@
     wSamplesPerBlock*: WORD
     wNumCoef*: WORD
     aCoef*: UncheckedArray[ADPCMCOEFSET]
+
   PADPCMWAVEFORMAT* = ptr ADPCMWAVEFORMAT
   NPADPCMWAVEFORMAT* = ptr ADPCMWAVEFORMAT
   LPADPCMWAVEFORMAT* = ptr ADPCMWAVEFORMAT
@@ -1135,30 +1261,35 @@
     wReserved*: WORD
     ulContentId*: ULONG
     wfxSecure*: WAVEFORMATEX
+
   PDRMWAVEFORMAT* = ptr DRMWAVEFORMAT
   NPDRMWAVEFORMAT* = ptr DRMWAVEFORMAT
   LPDRMWAVEFORMAT* = ptr DRMWAVEFORMAT
   DVIADPCMWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wSamplesPerBlock*: WORD
+
   PDVIADPCMWAVEFORMAT* = ptr DVIADPCMWAVEFORMAT
   NPDVIADPCMWAVEFORMAT* = ptr DVIADPCMWAVEFORMAT
   LPDVIADPCMWAVEFORMAT* = ptr DVIADPCMWAVEFORMAT
   IMAADPCMWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wSamplesPerBlock*: WORD
+
   PIMAADPCMWAVEFORMAT* = ptr IMAADPCMWAVEFORMAT
   NPIMAADPCMWAVEFORMAT* = ptr IMAADPCMWAVEFORMAT
   LPIMAADPCMWAVEFORMAT* = ptr IMAADPCMWAVEFORMAT
   MEDIASPACEADPCMWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wRevision*: WORD
+
   PMEDIASPACEADPCMWAVEFORMAT* = ptr MEDIASPACEADPCMWAVEFORMAT
   NPMEDIASPACEADPCMWAVEFORMAT* = ptr MEDIASPACEADPCMWAVEFORMAT
   LPMEDIASPACEADPCMWAVEFORMAT* = ptr MEDIASPACEADPCMWAVEFORMAT
   SIERRAADPCMWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wRevision*: WORD
+
   PSIERRAADPCMWAVEFORMAT* = ptr SIERRAADPCMWAVEFORMAT
   NPSIERRAADPCMWAVEFORMAT* = ptr SIERRAADPCMWAVEFORMAT
   LPSIERRAADPCMWAVEFORMAT* = ptr SIERRAADPCMWAVEFORMAT
@@ -1166,32 +1297,38 @@
     wfx*: WAVEFORMATEX
     cbExtraSize*: WORD
     nAuxBlockSize*: WORD
+
   PG723_ADPCMWAVEFORMAT* = ptr G723_ADPCMWAVEFORMAT
   NPG723_ADPCMWAVEFORMAT* = ptr G723_ADPCMWAVEFORMAT
   LPG723_ADPCMWAVEFORMAT* = ptr G723_ADPCMWAVEFORMAT
   DIGISTDWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
+
   PDIGISTDWAVEFORMAT* = ptr DIGISTDWAVEFORMAT
   NPDIGISTDWAVEFORMAT* = ptr DIGISTDWAVEFORMAT
   LPDIGISTDWAVEFORMAT* = ptr DIGISTDWAVEFORMAT
   DIGIFIXWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
+
   PDIGIFIXWAVEFORMAT* = ptr DIGIFIXWAVEFORMAT
   NPDIGIFIXWAVEFORMAT* = ptr DIGIFIXWAVEFORMAT
   LPDIGIFIXWAVEFORMAT* = ptr DIGIFIXWAVEFORMAT
   DIALOGICOKIADPCMWAVEFORMAT* {.pure, packed.} = object
     ewf*: WAVEFORMATEX
+
   PDIALOGICOKIADPCMWAVEFORMAT* = ptr DIALOGICOKIADPCMWAVEFORMAT
   NPDIALOGICOKIADPCMWAVEFORMAT* = ptr DIALOGICOKIADPCMWAVEFORMAT
   LPDIALOGICOKIADPCMWAVEFORMAT* = ptr DIALOGICOKIADPCMWAVEFORMAT
   YAMAHA_ADPCMWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
+
   PYAMAHA_ADPCMWAVEFORMAT* = ptr YAMAHA_ADPCMWAVEFORMAT
   NPYAMAHA_ADPCMWAVEFORMAT* = ptr YAMAHA_ADPCMWAVEFORMAT
   LPYAMAHA_ADPCMWAVEFORMAT* = ptr YAMAHA_ADPCMWAVEFORMAT
   SONARCWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wCompType*: WORD
+
   PSONARCWAVEFORMAT* = ptr SONARCWAVEFORMAT
   NPSONARCWAVEFORMAT* = ptr SONARCWAVEFORMAT
   LPSONARCWAVEFORMAT* = ptr SONARCWAVEFORMAT
@@ -1200,74 +1337,87 @@
     wRevision*: WORD
     nSamplesPerBlock*: WORD
     abReserved*: array[28, BYTE]
+
   PTRUESPEECHWAVEFORMAT* = ptr TRUESPEECHWAVEFORMAT
   NPTRUESPEECHWAVEFORMAT* = ptr TRUESPEECHWAVEFORMAT
   LPTRUESPEECHWAVEFORMAT* = ptr TRUESPEECHWAVEFORMAT
   ECHOSC1WAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
+
   PECHOSC1WAVEFORMAT* = ptr ECHOSC1WAVEFORMAT
   NPECHOSC1WAVEFORMAT* = ptr ECHOSC1WAVEFORMAT
   LPECHOSC1WAVEFORMAT* = ptr ECHOSC1WAVEFORMAT
   AUDIOFILE_AF36WAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
+
   PAUDIOFILE_AF36WAVEFORMAT* = ptr AUDIOFILE_AF36WAVEFORMAT
   NPAUDIOFILE_AF36WAVEFORMAT* = ptr AUDIOFILE_AF36WAVEFORMAT
   LPAUDIOFILE_AF36WAVEFORMAT* = ptr AUDIOFILE_AF36WAVEFORMAT
   APTXWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
+
   PAPTXWAVEFORMAT* = ptr APTXWAVEFORMAT
   NPAPTXWAVEFORMAT* = ptr APTXWAVEFORMAT
   LPAPTXWAVEFORMAT* = ptr APTXWAVEFORMAT
   AUDIOFILE_AF10WAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
+
   PAUDIOFILE_AF10WAVEFORMAT* = ptr AUDIOFILE_AF10WAVEFORMAT
   NPAUDIOFILE_AF10WAVEFORMAT* = ptr AUDIOFILE_AF10WAVEFORMAT
   LPAUDIOFILE_AF10WAVEFORMAT* = ptr AUDIOFILE_AF10WAVEFORMAT
   GSM610WAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wSamplesPerBlock*: WORD
+
   PGSM610WAVEFORMAT* = ptr GSM610WAVEFORMAT
   NPGSM610WAVEFORMAT* = ptr GSM610WAVEFORMAT
   LPGSM610WAVEFORMAT* = ptr GSM610WAVEFORMAT
   ADPCMEWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wSamplesPerBlock*: WORD
+
   PADPCMEWAVEFORMAT* = ptr ADPCMEWAVEFORMAT
   NPADPCMEWAVEFORMAT* = ptr ADPCMEWAVEFORMAT
   LPADPCMEWAVEFORMAT* = ptr ADPCMEWAVEFORMAT
   CONTRESVQLPCWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wSamplesPerBlock*: WORD
+
   PCONTRESVQLPCWAVEFORMAT* = ptr CONTRESVQLPCWAVEFORMAT
   NPCONTRESVQLPCWAVEFORMAT* = ptr CONTRESVQLPCWAVEFORMAT
   LPCONTRESVQLPCWAVEFORMAT* = ptr CONTRESVQLPCWAVEFORMAT
   DIGIREALWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wSamplesPerBlock*: WORD
+
   PDIGIREALWAVEFORMAT* = ptr DIGIREALWAVEFORMAT
   NPDIGIREALWAVEFORMAT* = ptr DIGIREALWAVEFORMAT
   LPDIGIREALWAVEFORMAT* = ptr DIGIREALWAVEFORMAT
   DIGIADPCMWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wSamplesPerBlock*: WORD
+
   PDIGIADPCMWAVEFORMAT* = ptr DIGIADPCMWAVEFORMAT
   NPDIGIADPCMWAVEFORMAT* = ptr DIGIADPCMWAVEFORMAT
   LPDIGIADPCMWAVEFORMAT* = ptr DIGIADPCMWAVEFORMAT
   CONTRESCR10WAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wSamplesPerBlock*: WORD
+
   PCONTRESCR10WAVEFORMAT* = ptr CONTRESCR10WAVEFORMAT
   NPCONTRESCR10WAVEFORMAT* = ptr CONTRESCR10WAVEFORMAT
   LPCONTRESCR10WAVEFORMAT* = ptr CONTRESCR10WAVEFORMAT
   NMS_VBXADPCMWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wSamplesPerBlock*: WORD
+
   PNMS_VBXADPCMWAVEFORMAT* = ptr NMS_VBXADPCMWAVEFORMAT
   NPNMS_VBXADPCMWAVEFORMAT* = ptr NMS_VBXADPCMWAVEFORMAT
   LPNMS_VBXADPCMWAVEFORMAT* = ptr NMS_VBXADPCMWAVEFORMAT
   G721_ADPCMWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     nAuxBlockSize*: WORD
+
   PG721_ADPCMWAVEFORMAT* = ptr G721_ADPCMWAVEFORMAT
   NPG721_ADPCMWAVEFORMAT* = ptr G721_ADPCMWAVEFORMAT
   LPG721_ADPCMWAVEFORMAT* = ptr G721_ADPCMWAVEFORMAT
@@ -1281,6 +1431,7 @@
     fwHeadFlags*: WORD
     dwPTSLow*: DWORD
     dwPTSHigh*: DWORD
+
   PMPEG1WAVEFORMAT* = ptr MPEG1WAVEFORMAT
   NPMPEG1WAVEFORMAT* = ptr MPEG1WAVEFORMAT
   LPMPEG1WAVEFORMAT* = ptr MPEG1WAVEFORMAT
@@ -1291,6 +1442,7 @@
     nBlockSize*: WORD
     nFramesPerBlock*: WORD
     nCodecDelay*: WORD
+
   PMPEGLAYER3WAVEFORMAT* = ptr MPEGLAYER3WAVEFORMAT
   NPMPEGLAYER3WAVEFORMAT* = ptr MPEGLAYER3WAVEFORMAT
   LPMPEGLAYER3WAVEFORMAT* = ptr MPEGLAYER3WAVEFORMAT
@@ -1301,12 +1453,14 @@
     wStructType*: WORD
     wReserved1*: WORD
     dwReserved2*: DWORD
+
   PHEAACWAVEINFO* = ptr HEAACWAVEINFO
   NPHEAACWAVEINFO* = ptr HEAACWAVEINFO
   LPHEAACWAVEINFO* = ptr HEAACWAVEINFO
   HEAACWAVEFORMAT* {.pure, packed.} = object
     wfInfo*: HEAACWAVEINFO
     pbAudioSpecificConfig*: array[1, BYTE]
+
   PHEAACWAVEFORMAT* = ptr HEAACWAVEFORMAT
   NPHEAACWAVEFORMAT* = ptr HEAACWAVEFORMAT
   LPHEAACWAVEFORMAT* = ptr HEAACWAVEFORMAT
@@ -1314,12 +1468,14 @@
     wfx*: WAVEFORMATEX
     wSamplesPerBlock*: WORD
     wEncodeOptions*: WORD
+
   LPMSAUDIO1WAVEFORMAT* = ptr MSAUDIO1WAVEFORMAT
   WMAUDIO2WAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     dwSamplesPerBlock*: DWORD
     wEncodeOptions*: WORD
     dwSuperBlockAlign*: DWORD
+
   LPWMAUDIO2WAVEFORMAT* = ptr WMAUDIO2WAVEFORMAT
   WMAUDIO3WAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
@@ -1329,58 +1485,69 @@
     dwReserved2*: DWORD
     wEncodeOptions*: WORD
     wReserved3*: WORD
+
   LPWMAUDIO3WAVEFORMAT* = ptr WMAUDIO3WAVEFORMAT
   CREATIVEADPCMWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wRevision*: WORD
+
   PCREATIVEADPCMWAVEFORMAT* = ptr CREATIVEADPCMWAVEFORMAT
   NPCREATIVEADPCMWAVEFORMAT* = ptr CREATIVEADPCMWAVEFORMAT
   LPCREATIVEADPCMWAVEFORMAT* = ptr CREATIVEADPCMWAVEFORMAT
   CREATIVEFASTSPEECH8WAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wRevision*: WORD
+
   PCREATIVEFASTSPEECH8WAVEFORMAT* = ptr CREATIVEFASTSPEECH8WAVEFORMAT
   NPCREATIVEFASTSPEECH8WAVEFORMAT* = ptr CREATIVEFASTSPEECH8WAVEFORMAT
   LPCREATIVEFASTSPEECH8WAVEFORMAT* = ptr CREATIVEFASTSPEECH8WAVEFORMAT
   CREATIVEFASTSPEECH10WAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wRevision*: WORD
+
   PCREATIVEFASTSPEECH10WAVEFORMAT* = ptr CREATIVEFASTSPEECH10WAVEFORMAT
   NPCREATIVEFASTSPEECH10WAVEFORMAT* = ptr CREATIVEFASTSPEECH10WAVEFORMAT
   LPCREATIVEFASTSPEECH10WAVEFORMAT* = ptr CREATIVEFASTSPEECH10WAVEFORMAT
   FMTOWNS_SND_WAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     wRevision*: WORD
+
   PFMTOWNS_SND_WAVEFORMAT* = ptr FMTOWNS_SND_WAVEFORMAT
   NPFMTOWNS_SND_WAVEFORMAT* = ptr FMTOWNS_SND_WAVEFORMAT
   LPFMTOWNS_SND_WAVEFORMAT* = ptr FMTOWNS_SND_WAVEFORMAT
   OLIGSMWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
+
   POLIGSMWAVEFORMAT* = ptr OLIGSMWAVEFORMAT
   NPOLIGSMWAVEFORMAT* = ptr OLIGSMWAVEFORMAT
   LPOLIGSMWAVEFORMAT* = ptr OLIGSMWAVEFORMAT
   OLIADPCMWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
+
   POLIADPCMWAVEFORMAT* = ptr OLIADPCMWAVEFORMAT
   NPOLIADPCMWAVEFORMAT* = ptr OLIADPCMWAVEFORMAT
   LPOLIADPCMWAVEFORMAT* = ptr OLIADPCMWAVEFORMAT
   OLICELPWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
+
   POLICELPWAVEFORMAT* = ptr OLICELPWAVEFORMAT
   NPOLICELPWAVEFORMAT* = ptr OLICELPWAVEFORMAT
   LPOLICELPWAVEFORMAT* = ptr OLICELPWAVEFORMAT
   OLISBCWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
+
   POLISBCWAVEFORMAT* = ptr OLISBCWAVEFORMAT
   NPOLISBCWAVEFORMAT* = ptr OLISBCWAVEFORMAT
   LPOLISBCWAVEFORMAT* = ptr OLISBCWAVEFORMAT
   OLIOPRWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
+
   POLIOPRWAVEFORMAT* = ptr OLIOPRWAVEFORMAT
   NPOLIOPRWAVEFORMAT* = ptr OLIOPRWAVEFORMAT
   LPOLIOPRWAVEFORMAT* = ptr OLIOPRWAVEFORMAT
   CSIMAADPCMWAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
+
   PCSIMAADPCMWAVEFORMAT* = ptr CSIMAADPCMWAVEFORMAT
   NPCSIMAADPCMWAVEFORMAT* = ptr CSIMAADPCMWAVEFORMAT
   LPCSIMAADPCMWAVEFORMAT* = ptr CSIMAADPCMWAVEFORMAT
@@ -1389,12 +1556,14 @@
     dwFilterTag*: DWORD
     fdwFilter*: DWORD
     dwReserved*: array[5, DWORD]
+
   PWAVEFILTER* = ptr WAVEFILTER
   NPWAVEFILTER* = ptr WAVEFILTER
   LPWAVEFILTER* = ptr WAVEFILTER
   VOLUMEWAVEFILTER* {.pure.} = object
     wfltr*: WAVEFILTER
     dwVolume*: DWORD
+
   PVOLUMEWAVEFILTER* = ptr VOLUMEWAVEFILTER
   NPVOLUMEWAVEFILTER* = ptr VOLUMEWAVEFILTER
   LPVOLUMEWAVEFILTER* = ptr VOLUMEWAVEFILTER
@@ -1402,9 +1571,11 @@
     wfltr*: WAVEFILTER
     dwVolume*: DWORD
     dwDelay*: DWORD
+
   PECHOWAVEFILTER* = ptr ECHOWAVEFILTER
   NPECHOWAVEFILTER* = ptr ECHOWAVEFILTER
   LPECHOWAVEFILTER* = ptr ECHOWAVEFILTER
+
 const
   MAXERRORLENGTH* = 256
   TIME_MS* = 0x0001
@@ -1463,28 +1634,28 @@
   MCI_WAVE_OFFSET* = 1152
   MCI_SEQ_OFFSET* = 1216
   MMSYSERR_NOERROR* = 0
-  MMSYSERR_ERROR* = MMSYSERR_BASE+1
-  MMSYSERR_BADDEVICEID* = MMSYSERR_BASE+2
-  MMSYSERR_NOTENABLED* = MMSYSERR_BASE+3
-  MMSYSERR_ALLOCATED* = MMSYSERR_BASE+4
-  MMSYSERR_INVALHANDLE* = MMSYSERR_BASE+5
-  MMSYSERR_NODRIVER* = MMSYSERR_BASE+6
-  MMSYSERR_NOMEM* = MMSYSERR_BASE+7
-  MMSYSERR_NOTSUPPORTED* = MMSYSERR_BASE+8
-  MMSYSERR_BADERRNUM* = MMSYSERR_BASE+9
-  MMSYSERR_INVALFLAG* = MMSYSERR_BASE+10
-  MMSYSERR_INVALPARAM* = MMSYSERR_BASE+11
-  MMSYSERR_HANDLEBUSY* = MMSYSERR_BASE+12
-  MMSYSERR_INVALIDALIAS* = MMSYSERR_BASE+13
-  MMSYSERR_BADDB* = MMSYSERR_BASE+14
-  MMSYSERR_KEYNOTFOUND* = MMSYSERR_BASE+15
-  MMSYSERR_READERROR* = MMSYSERR_BASE+16
-  MMSYSERR_WRITEERROR* = MMSYSERR_BASE+17
-  MMSYSERR_DELETEERROR* = MMSYSERR_BASE+18
-  MMSYSERR_VALNOTFOUND* = MMSYSERR_BASE+19
-  MMSYSERR_NODRIVERCB* = MMSYSERR_BASE+20
-  MMSYSERR_MOREDATA* = MMSYSERR_BASE+21
-  MMSYSERR_LASTERROR* = MMSYSERR_BASE+21
+  MMSYSERR_ERROR* = MMSYSERR_BASE + 1
+  MMSYSERR_BADDEVICEID* = MMSYSERR_BASE + 2
+  MMSYSERR_NOTENABLED* = MMSYSERR_BASE + 3
+  MMSYSERR_ALLOCATED* = MMSYSERR_BASE + 4
+  MMSYSERR_INVALHANDLE* = MMSYSERR_BASE + 5
+  MMSYSERR_NODRIVER* = MMSYSERR_BASE + 6
+  MMSYSERR_NOMEM* = MMSYSERR_BASE + 7
+  MMSYSERR_NOTSUPPORTED* = MMSYSERR_BASE + 8
+  MMSYSERR_BADERRNUM* = MMSYSERR_BASE + 9
+  MMSYSERR_INVALFLAG* = MMSYSERR_BASE + 10
+  MMSYSERR_INVALPARAM* = MMSYSERR_BASE + 11
+  MMSYSERR_HANDLEBUSY* = MMSYSERR_BASE + 12
+  MMSYSERR_INVALIDALIAS* = MMSYSERR_BASE + 13
+  MMSYSERR_BADDB* = MMSYSERR_BASE + 14
+  MMSYSERR_KEYNOTFOUND* = MMSYSERR_BASE + 15
+  MMSYSERR_READERROR* = MMSYSERR_BASE + 16
+  MMSYSERR_WRITEERROR* = MMSYSERR_BASE + 17
+  MMSYSERR_DELETEERROR* = MMSYSERR_BASE + 18
+  MMSYSERR_VALNOTFOUND* = MMSYSERR_BASE + 19
+  MMSYSERR_NODRIVERCB* = MMSYSERR_BASE + 20
+  MMSYSERR_MOREDATA* = MMSYSERR_BASE + 21
+  MMSYSERR_LASTERROR* = MMSYSERR_BASE + 21
   DRV_LOAD* = 0x0001
   DRV_ENABLE* = 0x0002
   DRV_OPEN* = 0x0003
@@ -1506,7 +1677,7 @@
   DRV_OK* = DRVCNF_OK
   DRV_RESTART* = DRVCNF_RESTART
   DRV_MCI_FIRST* = DRV_RESERVED
-  DRV_MCI_LAST* = DRV_RESERVED+0xFFF
+  DRV_MCI_LAST* = DRV_RESERVED + 0xFFF
   CALLBACK_TYPEMASK* = 0x00070000
   CALLBACK_NULL* = 0x00000000
   CALLBACK_WINDOW* = 0x00010000
@@ -1528,11 +1699,11 @@
   SND_PURGE* = 0x0040
   SND_APPLICATION* = 0x0080
   SND_ALIAS_START* = 0
-  WAVERR_BADFORMAT* = WAVERR_BASE+0
-  WAVERR_STILLPLAYING* = WAVERR_BASE+1
-  WAVERR_UNPREPARED* = WAVERR_BASE+2
-  WAVERR_SYNC* = WAVERR_BASE+3
-  WAVERR_LASTERROR* = WAVERR_BASE+3
+  WAVERR_BADFORMAT* = WAVERR_BASE + 0
+  WAVERR_STILLPLAYING* = WAVERR_BASE + 1
+  WAVERR_UNPREPARED* = WAVERR_BASE + 2
+  WAVERR_SYNC* = WAVERR_BASE + 3
+  WAVERR_LASTERROR* = WAVERR_BASE + 3
   WOM_OPEN* = MM_WOM_OPEN
   WOM_CLOSE* = MM_WOM_CLOSE
   WOM_DONE* = MM_WOM_DONE
@@ -1582,15 +1753,15 @@
   WAVE_FORMAT_96M16* = 0x00040000
   WAVE_FORMAT_96S16* = 0x00080000
   WAVE_FORMAT_PCM* = 1
-  MIDIERR_UNPREPARED* = MIDIERR_BASE+0
-  MIDIERR_STILLPLAYING* = MIDIERR_BASE+1
-  MIDIERR_NOMAP* = MIDIERR_BASE+2
-  MIDIERR_NOTREADY* = MIDIERR_BASE+3
-  MIDIERR_NODEVICE* = MIDIERR_BASE+4
-  MIDIERR_INVALIDSETUP* = MIDIERR_BASE+5
-  MIDIERR_BADOPENMODE* = MIDIERR_BASE+6
-  MIDIERR_DONT_CONTINUE* = MIDIERR_BASE+7
-  MIDIERR_LASTERROR* = MIDIERR_BASE+7
+  MIDIERR_UNPREPARED* = MIDIERR_BASE + 0
+  MIDIERR_STILLPLAYING* = MIDIERR_BASE + 1
+  MIDIERR_NOMAP* = MIDIERR_BASE + 2
+  MIDIERR_NOTREADY* = MIDIERR_BASE + 3
+  MIDIERR_NODEVICE* = MIDIERR_BASE + 4
+  MIDIERR_INVALIDSETUP* = MIDIERR_BASE + 5
+  MIDIERR_BADOPENMODE* = MIDIERR_BASE + 6
+  MIDIERR_DONT_CONTINUE* = MIDIERR_BASE + 7
+  MIDIERR_LASTERROR* = MIDIERR_BASE + 7
   MIM_OPEN* = MM_MIM_OPEN
   MIM_CLOSE* = MM_MIM_CLOSE
   MIM_DATA* = MM_MIM_DATA
@@ -1642,10 +1813,10 @@
   AUXCAPS_AUXIN* = 2
   AUXCAPS_VOLUME* = 0x0001
   AUXCAPS_LRVOLUME* = 0x0002
-  MIXERR_INVALLINE* = MIXERR_BASE+0
-  MIXERR_INVALCONTROL* = MIXERR_BASE+1
-  MIXERR_INVALVALUE* = MIXERR_BASE+2
-  MIXERR_LASTERROR* = MIXERR_BASE+2
+  MIXERR_INVALLINE* = MIXERR_BASE + 0
+  MIXERR_INVALCONTROL* = MIXERR_BASE + 1
+  MIXERR_INVALVALUE* = MIXERR_BASE + 2
+  MIXERR_LASTERROR* = MIXERR_BASE + 2
   MIXER_OBJECTF_HANDLE* = 0x80000000'i32
   MIXER_OBJECTF_MIXER* = 0x00000000
   MIXER_OBJECTF_HMIXER* = MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_MIXER
@@ -1662,29 +1833,29 @@
   MIXERLINE_LINEF_DISCONNECTED* = 0x00008000
   MIXERLINE_LINEF_SOURCE* = 0x80000000'i32
   MIXERLINE_COMPONENTTYPE_DST_FIRST* = 0x0
-  MIXERLINE_COMPONENTTYPE_DST_UNDEFINED* = MIXERLINE_COMPONENTTYPE_DST_FIRST+0
-  MIXERLINE_COMPONENTTYPE_DST_DIGITAL* = MIXERLINE_COMPONENTTYPE_DST_FIRST+1
-  MIXERLINE_COMPONENTTYPE_DST_LINE* = MIXERLINE_COMPONENTTYPE_DST_FIRST+2
-  MIXERLINE_COMPONENTTYPE_DST_MONITOR* = MIXERLINE_COMPONENTTYPE_DST_FIRST+3
-  MIXERLINE_COMPONENTTYPE_DST_SPEAKERS* = MIXERLINE_COMPONENTTYPE_DST_FIRST+4
-  MIXERLINE_COMPONENTTYPE_DST_HEADPHONES* = MIXERLINE_COMPONENTTYPE_DST_FIRST+5
-  MIXERLINE_COMPONENTTYPE_DST_TELEPHONE* = MIXERLINE_COMPONENTTYPE_DST_FIRST+6
-  MIXERLINE_COMPONENTTYPE_DST_WAVEIN* = MIXERLINE_COMPONENTTYPE_DST_FIRST+7
-  MIXERLINE_COMPONENTTYPE_DST_VOICEIN* = MIXERLINE_COMPONENTTYPE_DST_FIRST+8
-  MIXERLINE_COMPONENTTYPE_DST_LAST* = MIXERLINE_COMPONENTTYPE_DST_FIRST+8
+  MIXERLINE_COMPONENTTYPE_DST_UNDEFINED* = MIXERLINE_COMPONENTTYPE_DST_FIRST + 0
+  MIXERLINE_COMPONENTTYPE_DST_DIGITAL* = MIXERLINE_COMPONENTTYPE_DST_FIRST + 1
+  MIXERLINE_COMPONENTTYPE_DST_LINE* = MIXERLINE_COMPONENTTYPE_DST_FIRST + 2
+  MIXERLINE_COMPONENTTYPE_DST_MONITOR* = MIXERLINE_COMPONENTTYPE_DST_FIRST + 3
+  MIXERLINE_COMPONENTTYPE_DST_SPEAKERS* = MIXERLINE_COMPONENTTYPE_DST_FIRST + 4
+  MIXERLINE_COMPONENTTYPE_DST_HEADPHONES* = MIXERLINE_COMPONENTTYPE_DST_FIRST + 5
+  MIXERLINE_COMPONENTTYPE_DST_TELEPHONE* = MIXERLINE_COMPONENTTYPE_DST_FIRST + 6
+  MIXERLINE_COMPONENTTYPE_DST_WAVEIN* = MIXERLINE_COMPONENTTYPE_DST_FIRST + 7
+  MIXERLINE_COMPONENTTYPE_DST_VOICEIN* = MIXERLINE_COMPONENTTYPE_DST_FIRST + 8
+  MIXERLINE_COMPONENTTYPE_DST_LAST* = MIXERLINE_COMPONENTTYPE_DST_FIRST + 8
   MIXERLINE_COMPONENTTYPE_SRC_FIRST* = 0x00001000
-  MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED* = MIXERLINE_COMPONENTTYPE_SRC_FIRST+0
-  MIXERLINE_COMPONENTTYPE_SRC_DIGITAL* = MIXERLINE_COMPONENTTYPE_SRC_FIRST+1
-  MIXERLINE_COMPONENTTYPE_SRC_LINE* = MIXERLINE_COMPONENTTYPE_SRC_FIRST+2
-  MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE* = MIXERLINE_COMPONENTTYPE_SRC_FIRST+3
-  MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER* = MIXERLINE_COMPONENTTYPE_SRC_FIRST+4
-  MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC* = MIXERLINE_COMPONENTTYPE_SRC_FIRST+5
-  MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE* = MIXERLINE_COMPONENTTYPE_SRC_FIRST+6
-  MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER* = MIXERLINE_COMPONENTTYPE_SRC_FIRST+7
-  MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT* = MIXERLINE_COMPONENTTYPE_SRC_FIRST+8
-  MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY* = MIXERLINE_COMPONENTTYPE_SRC_FIRST+9
-  MIXERLINE_COMPONENTTYPE_SRC_ANALOG* = MIXERLINE_COMPONENTTYPE_SRC_FIRST+10
-  MIXERLINE_COMPONENTTYPE_SRC_LAST* = MIXERLINE_COMPONENTTYPE_SRC_FIRST+10
+  MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED* = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0
+  MIXERLINE_COMPONENTTYPE_SRC_DIGITAL* = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1
+  MIXERLINE_COMPONENTTYPE_SRC_LINE* = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2
+  MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE* = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3
+  MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER* = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4
+  MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC* = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5
+  MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE* = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6
+  MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER* = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7
+  MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT* = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8
+  MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY* = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9
+  MIXERLINE_COMPONENTTYPE_SRC_ANALOG* = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10
+  MIXERLINE_COMPONENTTYPE_SRC_LAST* = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10
   MIXERLINE_TARGETTYPE_UNDEFINED* = 0
   MIXERLINE_TARGETTYPE_WAVEOUT* = 1
   MIXERLINE_TARGETTYPE_WAVEIN* = 2
@@ -1724,37 +1895,62 @@
   MIXERCONTROL_CT_UNITS_UNSIGNED* = 0x00030000
   MIXERCONTROL_CT_UNITS_DECIBELS* = 0x00040000
   MIXERCONTROL_CT_UNITS_PERCENT* = 0x00050000
-  MIXERCONTROL_CONTROLTYPE_CUSTOM* = MIXERCONTROL_CT_CLASS_CUSTOM or MIXERCONTROL_CT_UNITS_CUSTOM
-  MIXERCONTROL_CONTROLTYPE_BOOLEANMETER* = MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or MIXERCONTROL_CT_UNITS_BOOLEAN
-  MIXERCONTROL_CONTROLTYPE_SIGNEDMETER* = MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or MIXERCONTROL_CT_UNITS_SIGNED
-  MIXERCONTROL_CONTROLTYPE_PEAKMETER* = MIXERCONTROL_CONTROLTYPE_SIGNEDMETER+1
-  MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER* = MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or MIXERCONTROL_CT_UNITS_UNSIGNED
-  MIXERCONTROL_CONTROLTYPE_BOOLEAN* = MIXERCONTROL_CT_CLASS_SWITCH or MIXERCONTROL_CT_SC_SWITCH_BOOLEAN or MIXERCONTROL_CT_UNITS_BOOLEAN
-  MIXERCONTROL_CONTROLTYPE_ONOFF* = MIXERCONTROL_CONTROLTYPE_BOOLEAN+1
-  MIXERCONTROL_CONTROLTYPE_MUTE* = MIXERCONTROL_CONTROLTYPE_BOOLEAN+2
-  MIXERCONTROL_CONTROLTYPE_MONO* = MIXERCONTROL_CONTROLTYPE_BOOLEAN+3
-  MIXERCONTROL_CONTROLTYPE_LOUDNESS* = MIXERCONTROL_CONTROLTYPE_BOOLEAN+4
-  MIXERCONTROL_CONTROLTYPE_STEREOENH* = MIXERCONTROL_CONTROLTYPE_BOOLEAN+5
-  MIXERCONTROL_CONTROLTYPE_BASS_BOOST* = MIXERCONTROL_CONTROLTYPE_BOOLEAN+0x00002277
-  MIXERCONTROL_CONTROLTYPE_BUTTON* = MIXERCONTROL_CT_CLASS_SWITCH or MIXERCONTROL_CT_SC_SWITCH_BUTTON or MIXERCONTROL_CT_UNITS_BOOLEAN
-  MIXERCONTROL_CONTROLTYPE_DECIBELS* = MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_DECIBELS
-  MIXERCONTROL_CONTROLTYPE_SIGNED* = MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_SIGNED
-  MIXERCONTROL_CONTROLTYPE_UNSIGNED* = MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_UNSIGNED
-  MIXERCONTROL_CONTROLTYPE_PERCENT* = MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_PERCENT
-  MIXERCONTROL_CONTROLTYPE_SLIDER* = MIXERCONTROL_CT_CLASS_SLIDER or MIXERCONTROL_CT_UNITS_SIGNED
-  MIXERCONTROL_CONTROLTYPE_PAN* = MIXERCONTROL_CONTROLTYPE_SLIDER+1
-  MIXERCONTROL_CONTROLTYPE_QSOUNDPAN* = MIXERCONTROL_CONTROLTYPE_SLIDER+2
-  MIXERCONTROL_CONTROLTYPE_FADER* = MIXERCONTROL_CT_CLASS_FADER or MIXERCONTROL_CT_UNITS_UNSIGNED
-  MIXERCONTROL_CONTROLTYPE_VOLUME* = MIXERCONTROL_CONTROLTYPE_FADER+1
-  MIXERCONTROL_CONTROLTYPE_BASS* = MIXERCONTROL_CONTROLTYPE_FADER+2
-  MIXERCONTROL_CONTROLTYPE_TREBLE* = MIXERCONTROL_CONTROLTYPE_FADER+3
-  MIXERCONTROL_CONTROLTYPE_EQUALIZER* = MIXERCONTROL_CONTROLTYPE_FADER+4
-  MIXERCONTROL_CONTROLTYPE_SINGLESELECT* = MIXERCONTROL_CT_CLASS_LIST or MIXERCONTROL_CT_SC_LIST_SINGLE or MIXERCONTROL_CT_UNITS_BOOLEAN
-  MIXERCONTROL_CONTROLTYPE_MUX* = MIXERCONTROL_CONTROLTYPE_SINGLESELECT+1
-  MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT* = MIXERCONTROL_CT_CLASS_LIST or MIXERCONTROL_CT_SC_LIST_MULTIPLE or MIXERCONTROL_CT_UNITS_BOOLEAN
-  MIXERCONTROL_CONTROLTYPE_MIXER* = MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT+1
-  MIXERCONTROL_CONTROLTYPE_MICROTIME* = MIXERCONTROL_CT_CLASS_TIME or MIXERCONTROL_CT_SC_TIME_MICROSECS or MIXERCONTROL_CT_UNITS_UNSIGNED
-  MIXERCONTROL_CONTROLTYPE_MILLITIME* = MIXERCONTROL_CT_CLASS_TIME or MIXERCONTROL_CT_SC_TIME_MILLISECS or MIXERCONTROL_CT_UNITS_UNSIGNED
+  MIXERCONTROL_CONTROLTYPE_CUSTOM* =
+    MIXERCONTROL_CT_CLASS_CUSTOM or MIXERCONTROL_CT_UNITS_CUSTOM
+  MIXERCONTROL_CONTROLTYPE_BOOLEANMETER* =
+    MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or
+    MIXERCONTROL_CT_UNITS_BOOLEAN
+  MIXERCONTROL_CONTROLTYPE_SIGNEDMETER* =
+    MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or
+    MIXERCONTROL_CT_UNITS_SIGNED
+  MIXERCONTROL_CONTROLTYPE_PEAKMETER* = MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1
+  MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER* =
+    MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or
+    MIXERCONTROL_CT_UNITS_UNSIGNED
+  MIXERCONTROL_CONTROLTYPE_BOOLEAN* =
+    MIXERCONTROL_CT_CLASS_SWITCH or MIXERCONTROL_CT_SC_SWITCH_BOOLEAN or
+    MIXERCONTROL_CT_UNITS_BOOLEAN
+  MIXERCONTROL_CONTROLTYPE_ONOFF* = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1
+  MIXERCONTROL_CONTROLTYPE_MUTE* = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2
+  MIXERCONTROL_CONTROLTYPE_MONO* = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3
+  MIXERCONTROL_CONTROLTYPE_LOUDNESS* = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4
+  MIXERCONTROL_CONTROLTYPE_STEREOENH* = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5
+  MIXERCONTROL_CONTROLTYPE_BASS_BOOST* = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 0x00002277
+  MIXERCONTROL_CONTROLTYPE_BUTTON* =
+    MIXERCONTROL_CT_CLASS_SWITCH or MIXERCONTROL_CT_SC_SWITCH_BUTTON or
+    MIXERCONTROL_CT_UNITS_BOOLEAN
+  MIXERCONTROL_CONTROLTYPE_DECIBELS* =
+    MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_DECIBELS
+  MIXERCONTROL_CONTROLTYPE_SIGNED* =
+    MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_SIGNED
+  MIXERCONTROL_CONTROLTYPE_UNSIGNED* =
+    MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_UNSIGNED
+  MIXERCONTROL_CONTROLTYPE_PERCENT* =
+    MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_PERCENT
+  MIXERCONTROL_CONTROLTYPE_SLIDER* =
+    MIXERCONTROL_CT_CLASS_SLIDER or MIXERCONTROL_CT_UNITS_SIGNED
+  MIXERCONTROL_CONTROLTYPE_PAN* = MIXERCONTROL_CONTROLTYPE_SLIDER + 1
+  MIXERCONTROL_CONTROLTYPE_QSOUNDPAN* = MIXERCONTROL_CONTROLTYPE_SLIDER + 2
+  MIXERCONTROL_CONTROLTYPE_FADER* =
+    MIXERCONTROL_CT_CLASS_FADER or MIXERCONTROL_CT_UNITS_UNSIGNED
+  MIXERCONTROL_CONTROLTYPE_VOLUME* = MIXERCONTROL_CONTROLTYPE_FADER + 1
+  MIXERCONTROL_CONTROLTYPE_BASS* = MIXERCONTROL_CONTROLTYPE_FADER + 2
+  MIXERCONTROL_CONTROLTYPE_TREBLE* = MIXERCONTROL_CONTROLTYPE_FADER + 3
+  MIXERCONTROL_CONTROLTYPE_EQUALIZER* = MIXERCONTROL_CONTROLTYPE_FADER + 4
+  MIXERCONTROL_CONTROLTYPE_SINGLESELECT* =
+    MIXERCONTROL_CT_CLASS_LIST or MIXERCONTROL_CT_SC_LIST_SINGLE or
+    MIXERCONTROL_CT_UNITS_BOOLEAN
+  MIXERCONTROL_CONTROLTYPE_MUX* = MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1
+  MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT* =
+    MIXERCONTROL_CT_CLASS_LIST or MIXERCONTROL_CT_SC_LIST_MULTIPLE or
+    MIXERCONTROL_CT_UNITS_BOOLEAN
+  MIXERCONTROL_CONTROLTYPE_MIXER* = MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1
+  MIXERCONTROL_CONTROLTYPE_MICROTIME* =
+    MIXERCONTROL_CT_CLASS_TIME or MIXERCONTROL_CT_SC_TIME_MICROSECS or
+    MIXERCONTROL_CT_UNITS_UNSIGNED
+  MIXERCONTROL_CONTROLTYPE_MILLITIME* =
+    MIXERCONTROL_CT_CLASS_TIME or MIXERCONTROL_CT_SC_TIME_MILLISECS or
+    MIXERCONTROL_CT_UNITS_UNSIGNED
   MIXER_GETLINECONTROLSF_ALL* = 0x00000000
   MIXER_GETLINECONTROLSF_ONEBYID* = 0x00000001
   MIXER_GETLINECONTROLSF_ONEBYTYPE* = 0x00000002
@@ -1766,8 +1962,8 @@
   MIXER_SETCONTROLDETAILSF_CUSTOM* = 0x00000001
   MIXER_SETCONTROLDETAILSF_QUERYMASK* = 0x0000000F
   TIMERR_NOERROR* = 0
-  TIMERR_NOCANDO* = TIMERR_BASE+1
-  TIMERR_STRUCT* = TIMERR_BASE+33
+  TIMERR_NOCANDO* = TIMERR_BASE + 1
+  TIMERR_STRUCT* = TIMERR_BASE + 33
   TIME_ONESHOT* = 0x0000
   TIME_PERIODIC* = 0x0001
   TIME_CALLBACK_FUNCTION* = 0x0000
@@ -1775,9 +1971,9 @@
   TIME_CALLBACK_EVENT_PULSE* = 0x0020
   TIME_KILL_SYNCHRONOUS* = 0x0100
   JOYERR_NOERROR* = 0
-  JOYERR_PARMS* = JOYERR_BASE+5
-  JOYERR_NOCANDO* = JOYERR_BASE+6
-  JOYERR_UNPLUGGED* = JOYERR_BASE+7
+  JOYERR_PARMS* = JOYERR_BASE + 5
+  JOYERR_NOCANDO* = JOYERR_BASE + 6
+  JOYERR_UNPLUGGED* = JOYERR_BASE + 7
   JOY_BUTTON1* = 0x0001
   JOY_BUTTON2* = 0x0002
   JOY_BUTTON3* = 0x0004
@@ -1830,7 +2026,9 @@
   JOY_RETURNPOVCTS* = 0x00000200
   JOY_RETURNCENTERED* = 0x00000400
   JOY_USEDEADZONE* = 0x00000800
-  JOY_RETURNALL* = JOY_RETURNX or JOY_RETURNY or JOY_RETURNZ or JOY_RETURNR or JOY_RETURNU or JOY_RETURNV or JOY_RETURNPOV or JOY_RETURNBUTTONS
+  JOY_RETURNALL* =
+    JOY_RETURNX or JOY_RETURNY or JOY_RETURNZ or JOY_RETURNR or JOY_RETURNU or
+    JOY_RETURNV or JOY_RETURNPOV or JOY_RETURNBUTTONS
   JOY_CAL_READALWAYS* = 0x00010000
   JOY_CAL_READXYONLY* = 0x00020000
   JOY_CAL_READ3* = 0x00040000
@@ -1853,22 +2051,22 @@
   JOYCAPS_POV4DIR* = 0x0020
   JOYCAPS_POVCTS* = 0x0040
   MMIOERR_BASE* = 256
-  MMIOERR_FILENOTFOUND* = MMIOERR_BASE+1
-  MMIOERR_OUTOFMEMORY* = MMIOERR_BASE+2
-  MMIOERR_CANNOTOPEN* = MMIOERR_BASE+3
-  MMIOERR_CANNOTCLOSE* = MMIOERR_BASE+4
-  MMIOERR_CANNOTREAD* = MMIOERR_BASE+5
-  MMIOERR_CANNOTWRITE* = MMIOERR_BASE+6
-  MMIOERR_CANNOTSEEK* = MMIOERR_BASE+7
-  MMIOERR_CANNOTEXPAND* = MMIOERR_BASE+8
-  MMIOERR_CHUNKNOTFOUND* = MMIOERR_BASE+9
-  MMIOERR_UNBUFFERED* = MMIOERR_BASE+10
-  MMIOERR_PATHNOTFOUND* = MMIOERR_BASE+11
-  MMIOERR_ACCESSDENIED* = MMIOERR_BASE+12
-  MMIOERR_SHARINGVIOLATION* = MMIOERR_BASE+13
-  MMIOERR_NETWORKERROR* = MMIOERR_BASE+14
-  MMIOERR_TOOMANYOPENFILES* = MMIOERR_BASE+15
-  MMIOERR_INVALIDFILE* = MMIOERR_BASE+16
+  MMIOERR_FILENOTFOUND* = MMIOERR_BASE + 1
+  MMIOERR_OUTOFMEMORY* = MMIOERR_BASE + 2
+  MMIOERR_CANNOTOPEN* = MMIOERR_BASE + 3
+  MMIOERR_CANNOTCLOSE* = MMIOERR_BASE + 4
+  MMIOERR_CANNOTREAD* = MMIOERR_BASE + 5
+  MMIOERR_CANNOTWRITE* = MMIOERR_BASE + 6
+  MMIOERR_CANNOTSEEK* = MMIOERR_BASE + 7
+  MMIOERR_CANNOTEXPAND* = MMIOERR_BASE + 8
+  MMIOERR_CHUNKNOTFOUND* = MMIOERR_BASE + 9
+  MMIOERR_UNBUFFERED* = MMIOERR_BASE + 10
+  MMIOERR_PATHNOTFOUND* = MMIOERR_BASE + 11
+  MMIOERR_ACCESSDENIED* = MMIOERR_BASE + 12
+  MMIOERR_SHARINGVIOLATION* = MMIOERR_BASE + 13
+  MMIOERR_NETWORKERROR* = MMIOERR_BASE + 14
+  MMIOERR_TOOMANYOPENFILES* = MMIOERR_BASE + 15
+  MMIOERR_INVALIDFILE* = MMIOERR_BASE + 16
   CFSEPCHAR* = 0x2B
   MMIO_RWMODE* = 0x00000003
   MMIO_SHAREMODE* = 0x00000070
@@ -1912,82 +2110,82 @@
   SEEK_CUR* = 1
   SEEK_END* = 2
   MMIO_DEFAULTBUFFER* = 8192
-  MCIERR_INVALID_DEVICE_ID* = MCIERR_BASE+1
-  MCIERR_UNRECOGNIZED_KEYWORD* = MCIERR_BASE+3
-  MCIERR_UNRECOGNIZED_COMMAND* = MCIERR_BASE+5
-  MCIERR_HARDWARE* = MCIERR_BASE+6
-  MCIERR_INVALID_DEVICE_NAME* = MCIERR_BASE+7
-  MCIERR_OUT_OF_MEMORY* = MCIERR_BASE+8
-  MCIERR_DEVICE_OPEN* = MCIERR_BASE+9
-  MCIERR_CANNOT_LOAD_DRIVER* = MCIERR_BASE+10
-  MCIERR_MISSING_COMMAND_STRING* = MCIERR_BASE+11
-  MCIERR_PARAM_OVERFLOW* = MCIERR_BASE+12
-  MCIERR_MISSING_STRING_ARGUMENT* = MCIERR_BASE+13
-  MCIERR_BAD_INTEGER* = MCIERR_BASE+14
-  MCIERR_PARSER_INTERNAL* = MCIERR_BASE+15
-  MCIERR_DRIVER_INTERNAL* = MCIERR_BASE+16
-  MCIERR_MISSING_PARAMETER* = MCIERR_BASE+17
-  MCIERR_UNSUPPORTED_FUNCTION* = MCIERR_BASE+18
-  MCIERR_FILE_NOT_FOUND* = MCIERR_BASE+19
-  MCIERR_DEVICE_NOT_READY* = MCIERR_BASE+20
-  MCIERR_INTERNAL* = MCIERR_BASE+21
-  MCIERR_DRIVER* = MCIERR_BASE+22
-  MCIERR_CANNOT_USE_ALL* = MCIERR_BASE+23
-  MCIERR_MULTIPLE* = MCIERR_BASE+24
-  MCIERR_EXTENSION_NOT_FOUND* = MCIERR_BASE+25
-  MCIERR_OUTOFRANGE* = MCIERR_BASE+26
-  MCIERR_FLAGS_NOT_COMPATIBLE* = MCIERR_BASE+28
-  MCIERR_FILE_NOT_SAVED* = MCIERR_BASE+30
-  MCIERR_DEVICE_TYPE_REQUIRED* = MCIERR_BASE+31
-  MCIERR_DEVICE_LOCKED* = MCIERR_BASE+32
-  MCIERR_DUPLICATE_ALIAS* = MCIERR_BASE+33
-  MCIERR_BAD_CONSTANT* = MCIERR_BASE+34
-  MCIERR_MUST_USE_SHAREABLE* = MCIERR_BASE+35
-  MCIERR_MISSING_DEVICE_NAME* = MCIERR_BASE+36
-  MCIERR_BAD_TIME_FORMAT* = MCIERR_BASE+37
-  MCIERR_NO_CLOSING_QUOTE* = MCIERR_BASE+38
-  MCIERR_DUPLICATE_FLAGS* = MCIERR_BASE+39
-  MCIERR_INVALID_FILE* = MCIERR_BASE+40
-  MCIERR_NULL_PARAMETER_BLOCK* = MCIERR_BASE+41
-  MCIERR_UNNAMED_RESOURCE* = MCIERR_BASE+42
-  MCIERR_NEW_REQUIRES_ALIAS* = MCIERR_BASE+43
-  MCIERR_NOTIFY_ON_AUTO_OPEN* = MCIERR_BASE+44
-  MCIERR_NO_ELEMENT_ALLOWED* = MCIERR_BASE+45
-  MCIERR_NONAPPLICABLE_FUNCTION* = MCIERR_BASE+46
-  MCIERR_ILLEGAL_FOR_AUTO_OPEN* = MCIERR_BASE+47
-  MCIERR_FILENAME_REQUIRED* = MCIERR_BASE+48
-  MCIERR_EXTRA_CHARACTERS* = MCIERR_BASE+49
-  MCIERR_DEVICE_NOT_INSTALLED* = MCIERR_BASE+50
-  MCIERR_GET_CD* = MCIERR_BASE+51
-  MCIERR_SET_CD* = MCIERR_BASE+52
-  MCIERR_SET_DRIVE* = MCIERR_BASE+53
-  MCIERR_DEVICE_LENGTH* = MCIERR_BASE+54
-  MCIERR_DEVICE_ORD_LENGTH* = MCIERR_BASE+55
-  MCIERR_NO_INTEGER* = MCIERR_BASE+56
-  MCIERR_WAVE_OUTPUTSINUSE* = MCIERR_BASE+64
-  MCIERR_WAVE_SETOUTPUTINUSE* = MCIERR_BASE+65
-  MCIERR_WAVE_INPUTSINUSE* = MCIERR_BASE+66
-  MCIERR_WAVE_SETINPUTINUSE* = MCIERR_BASE+67
-  MCIERR_WAVE_OUTPUTUNSPECIFIED* = MCIERR_BASE+68
-  MCIERR_WAVE_INPUTUNSPECIFIED* = MCIERR_BASE+69
-  MCIERR_WAVE_OUTPUTSUNSUITABLE* = MCIERR_BASE+70
-  MCIERR_WAVE_SETOUTPUTUNSUITABLE* = MCIERR_BASE+71
-  MCIERR_WAVE_INPUTSUNSUITABLE* = MCIERR_BASE+72
-  MCIERR_WAVE_SETINPUTUNSUITABLE* = MCIERR_BASE+73
-  MCIERR_SEQ_DIV_INCOMPATIBLE* = MCIERR_BASE+80
-  MCIERR_SEQ_PORT_INUSE* = MCIERR_BASE+81
-  MCIERR_SEQ_PORT_NONEXISTENT* = MCIERR_BASE+82
-  MCIERR_SEQ_PORT_MAPNODEVICE* = MCIERR_BASE+83
-  MCIERR_SEQ_PORT_MISCERROR* = MCIERR_BASE+84
-  MCIERR_SEQ_TIMER* = MCIERR_BASE+85
-  MCIERR_SEQ_PORTUNSPECIFIED* = MCIERR_BASE+86
-  MCIERR_SEQ_NOMIDIPRESENT* = MCIERR_BASE+87
-  MCIERR_NO_WINDOW* = MCIERR_BASE+90
-  MCIERR_CREATEWINDOW* = MCIERR_BASE+91
-  MCIERR_FILE_READ* = MCIERR_BASE+92
-  MCIERR_FILE_WRITE* = MCIERR_BASE+93
-  MCIERR_NO_IDENTITY* = MCIERR_BASE+94
-  MCIERR_CUSTOM_DRIVER_BASE* = MCIERR_BASE+256
+  MCIERR_INVALID_DEVICE_ID* = MCIERR_BASE + 1
+  MCIERR_UNRECOGNIZED_KEYWORD* = MCIERR_BASE + 3
+  MCIERR_UNRECOGNIZED_COMMAND* = MCIERR_BASE + 5
+  MCIERR_HARDWARE* = MCIERR_BASE + 6
+  MCIERR_INVALID_DEVICE_NAME* = MCIERR_BASE + 7
+  MCIERR_OUT_OF_MEMORY* = MCIERR_BASE + 8
+  MCIERR_DEVICE_OPEN* = MCIERR_BASE + 9
+  MCIERR_CANNOT_LOAD_DRIVER* = MCIERR_BASE + 10
+  MCIERR_MISSING_COMMAND_STRING* = MCIERR_BASE + 11
+  MCIERR_PARAM_OVERFLOW* = MCIERR_BASE + 12
+  MCIERR_MISSING_STRING_ARGUMENT* = MCIERR_BASE + 13
+  MCIERR_BAD_INTEGER* = MCIERR_BASE + 14
+  MCIERR_PARSER_INTERNAL* = MCIERR_BASE + 15
+  MCIERR_DRIVER_INTERNAL* = MCIERR_BASE + 16
+  MCIERR_MISSING_PARAMETER* = MCIERR_BASE + 17
+  MCIERR_UNSUPPORTED_FUNCTION* = MCIERR_BASE + 18
+  MCIERR_FILE_NOT_FOUND* = MCIERR_BASE + 19
+  MCIERR_DEVICE_NOT_READY* = MCIERR_BASE + 20
+  MCIERR_INTERNAL* = MCIERR_BASE + 21
+  MCIERR_DRIVER* = MCIERR_BASE + 22
+  MCIERR_CANNOT_USE_ALL* = MCIERR_BASE + 23
+  MCIERR_MULTIPLE* = MCIERR_BASE + 24
+  MCIERR_EXTENSION_NOT_FOUND* = MCIERR_BASE + 25
+  MCIERR_OUTOFRANGE* = MCIERR_BASE + 26
+  MCIERR_FLAGS_NOT_COMPATIBLE* = MCIERR_BASE + 28
+  MCIERR_FILE_NOT_SAVED* = MCIERR_BASE + 30
+  MCIERR_DEVICE_TYPE_REQUIRED* = MCIERR_BASE + 31
+  MCIERR_DEVICE_LOCKED* = MCIERR_BASE + 32
+  MCIERR_DUPLICATE_ALIAS* = MCIERR_BASE + 33
+  MCIERR_BAD_CONSTANT* = MCIERR_BASE + 34
+  MCIERR_MUST_USE_SHAREABLE* = MCIERR_BASE + 35
+  MCIERR_MISSING_DEVICE_NAME* = MCIERR_BASE + 36
+  MCIERR_BAD_TIME_FORMAT* = MCIERR_BASE + 37
+  MCIERR_NO_CLOSING_QUOTE* = MCIERR_BASE + 38
+  MCIERR_DUPLICATE_FLAGS* = MCIERR_BASE + 39
+  MCIERR_INVALID_FILE* = MCIERR_BASE + 40
+  MCIERR_NULL_PARAMETER_BLOCK* = MCIERR_BASE + 41
+  MCIERR_UNNAMED_RESOURCE* = MCIERR_BASE + 42
+  MCIERR_NEW_REQUIRES_ALIAS* = MCIERR_BASE + 43
+  MCIERR_NOTIFY_ON_AUTO_OPEN* = MCIERR_BASE + 44
+  MCIERR_NO_ELEMENT_ALLOWED* = MCIERR_BASE + 45
+  MCIERR_NONAPPLICABLE_FUNCTION* = MCIERR_BASE + 46
+  MCIERR_ILLEGAL_FOR_AUTO_OPEN* = MCIERR_BASE + 47
+  MCIERR_FILENAME_REQUIRED* = MCIERR_BASE + 48
+  MCIERR_EXTRA_CHARACTERS* = MCIERR_BASE + 49
+  MCIERR_DEVICE_NOT_INSTALLED* = MCIERR_BASE + 50
+  MCIERR_GET_CD* = MCIERR_BASE + 51
+  MCIERR_SET_CD* = MCIERR_BASE + 52
+  MCIERR_SET_DRIVE* = MCIERR_BASE + 53
+  MCIERR_DEVICE_LENGTH* = MCIERR_BASE + 54
+  MCIERR_DEVICE_ORD_LENGTH* = MCIERR_BASE + 55
+  MCIERR_NO_INTEGER* = MCIERR_BASE + 56
+  MCIERR_WAVE_OUTPUTSINUSE* = MCIERR_BASE + 64
+  MCIERR_WAVE_SETOUTPUTINUSE* = MCIERR_BASE + 65
+  MCIERR_WAVE_INPUTSINUSE* = MCIERR_BASE + 66
+  MCIERR_WAVE_SETINPUTINUSE* = MCIERR_BASE + 67
+  MCIERR_WAVE_OUTPUTUNSPECIFIED* = MCIERR_BASE + 68
+  MCIERR_WAVE_INPUTUNSPECIFIED* = MCIERR_BASE + 69
+  MCIERR_WAVE_OUTPUTSUNSUITABLE* = MCIERR_BASE + 70
+  MCIERR_WAVE_SETOUTPUTUNSUITABLE* = MCIERR_BASE + 71
+  MCIERR_WAVE_INPUTSUNSUITABLE* = MCIERR_BASE + 72
+  MCIERR_WAVE_SETINPUTUNSUITABLE* = MCIERR_BASE + 73
+  MCIERR_SEQ_DIV_INCOMPATIBLE* = MCIERR_BASE + 80
+  MCIERR_SEQ_PORT_INUSE* = MCIERR_BASE + 81
+  MCIERR_SEQ_PORT_NONEXISTENT* = MCIERR_BASE + 82
+  MCIERR_SEQ_PORT_MAPNODEVICE* = MCIERR_BASE + 83
+  MCIERR_SEQ_PORT_MISCERROR* = MCIERR_BASE + 84
+  MCIERR_SEQ_TIMER* = MCIERR_BASE + 85
+  MCIERR_SEQ_PORTUNSPECIFIED* = MCIERR_BASE + 86
+  MCIERR_SEQ_NOMIDIPRESENT* = MCIERR_BASE + 87
+  MCIERR_NO_WINDOW* = MCIERR_BASE + 90
+  MCIERR_CREATEWINDOW* = MCIERR_BASE + 91
+  MCIERR_FILE_READ* = MCIERR_BASE + 92
+  MCIERR_FILE_WRITE* = MCIERR_BASE + 93
+  MCIERR_NO_IDENTITY* = MCIERR_BASE + 94
+  MCIERR_CUSTOM_DRIVER_BASE* = MCIERR_BASE + 256
   MCI_FIRST* = DRV_MCI_FIRST
   MCI_OPEN* = 0x0803
   MCI_CLOSE* = 0x0804
@@ -2020,7 +2218,7 @@
   MCI_UPDATE* = 0x0854
   MCI_RESUME* = 0x0855
   MCI_DELETE* = 0x0856
-  MCI_USER_MESSAGES* = DRV_MCI_FIRST+0x400
+  MCI_USER_MESSAGES* = DRV_MCI_FIRST + 0x400
   MCI_LAST* = 0x0FFF
   MCI_ALL_DEVICE_ID* = MCIDEVICEID(-1)
   MCI_DEVTYPE_VCR* = 513
@@ -2037,13 +2235,13 @@
   MCI_DEVTYPE_FIRST* = MCI_DEVTYPE_VCR
   MCI_DEVTYPE_LAST* = MCI_DEVTYPE_SEQUENCER
   MCI_DEVTYPE_FIRST_USER* = 0x1000
-  MCI_MODE_NOT_READY* = MCI_STRING_OFFSET+12
-  MCI_MODE_STOP* = MCI_STRING_OFFSET+13
-  MCI_MODE_PLAY* = MCI_STRING_OFFSET+14
-  MCI_MODE_RECORD* = MCI_STRING_OFFSET+15
-  MCI_MODE_SEEK* = MCI_STRING_OFFSET+16
-  MCI_MODE_PAUSE* = MCI_STRING_OFFSET+17
-  MCI_MODE_OPEN* = MCI_STRING_OFFSET+18
+  MCI_MODE_NOT_READY* = MCI_STRING_OFFSET + 12
+  MCI_MODE_STOP* = MCI_STRING_OFFSET + 13
+  MCI_MODE_PLAY* = MCI_STRING_OFFSET + 14
+  MCI_MODE_RECORD* = MCI_STRING_OFFSET + 15
+  MCI_MODE_SEEK* = MCI_STRING_OFFSET + 16
+  MCI_MODE_PAUSE* = MCI_STRING_OFFSET + 17
+  MCI_MODE_OPEN* = MCI_STRING_OFFSET + 18
   MCI_FORMAT_MILLISECONDS* = 0
   MCI_FORMAT_HMS* = 1
   MCI_FORMAT_MSF* = 2
@@ -2119,10 +2317,10 @@
   MCI_RECORD_OVERWRITE* = 0x00000200
   MCI_SAVE_FILE* = 0x00000100
   MCI_LOAD_FILE* = 0x00000100
-  MCI_VD_MODE_PARK* = MCI_VD_OFFSET+1
-  MCI_VD_MEDIA_CLV* = MCI_VD_OFFSET+2
-  MCI_VD_MEDIA_CAV* = MCI_VD_OFFSET+3
-  MCI_VD_MEDIA_OTHER* = MCI_VD_OFFSET+4
+  MCI_VD_MODE_PARK* = MCI_VD_OFFSET + 1
+  MCI_VD_MEDIA_CLV* = MCI_VD_OFFSET + 2
+  MCI_VD_MEDIA_CAV* = MCI_VD_OFFSET + 3
+  MCI_VD_MEDIA_OTHER* = MCI_VD_OFFSET + 4
   MCI_VD_FORMAT_TRACK* = 0x4001
   MCI_VD_PLAY_REVERSE* = 0x00010000
   MCI_VD_PLAY_FAST* = 0x00020000
@@ -2147,10 +2345,10 @@
   MCI_VD_STEP_REVERSE* = 0x00020000
   MCI_VD_ESCAPE_STRING* = 0x00000100
   MCI_CDA_STATUS_TYPE_TRACK* = 0x00004001
-  MCI_CDA_TRACK_AUDIO* = MCI_CD_OFFSET+0
-  MCI_CDA_TRACK_OTHER* = MCI_CD_OFFSET+1
-  MCI_WAVE_PCM* = MCI_WAVE_OFFSET+0
-  MCI_WAVE_MAPPER* = MCI_WAVE_OFFSET+1
+  MCI_CDA_TRACK_AUDIO* = MCI_CD_OFFSET + 0
+  MCI_CDA_TRACK_OTHER* = MCI_CD_OFFSET + 1
+  MCI_WAVE_PCM* = MCI_WAVE_OFFSET + 0
+  MCI_WAVE_MAPPER* = MCI_WAVE_OFFSET + 1
   MCI_WAVE_OPEN_BUFFER* = 0x00010000
   MCI_WAVE_SET_FORMATTAG* = 0x00010000
   MCI_WAVE_SET_CHANNELS* = 0x00020000
@@ -2171,11 +2369,11 @@
   MCI_WAVE_SET_ANYOUTPUT* = 0x08000000
   MCI_WAVE_GETDEVCAPS_INPUTS* = 0x00004001
   MCI_WAVE_GETDEVCAPS_OUTPUTS* = 0x00004002
-  MCI_SEQ_DIV_PPQN* = 0+MCI_SEQ_OFFSET
-  MCI_SEQ_DIV_SMPTE_24* = 1+MCI_SEQ_OFFSET
-  MCI_SEQ_DIV_SMPTE_25* = 2+MCI_SEQ_OFFSET
-  MCI_SEQ_DIV_SMPTE_30DROP* = 3+MCI_SEQ_OFFSET
-  MCI_SEQ_DIV_SMPTE_30* = 4+MCI_SEQ_OFFSET
+  MCI_SEQ_DIV_PPQN* = 0 + MCI_SEQ_OFFSET
+  MCI_SEQ_DIV_SMPTE_24* = 1 + MCI_SEQ_OFFSET
+  MCI_SEQ_DIV_SMPTE_25* = 2 + MCI_SEQ_OFFSET
+  MCI_SEQ_DIV_SMPTE_30DROP* = 3 + MCI_SEQ_OFFSET
+  MCI_SEQ_DIV_SMPTE_30* = 4 + MCI_SEQ_OFFSET
   MCI_SEQ_FORMAT_SONGPTR* = 0x4001
   MCI_SEQ_FILE* = 0x4002
   MCI_SEQ_MIDI* = 0x4003
@@ -2644,70 +2842,70 @@
   MM_CREATIVE_SBPRO_MIXER* = 408
   MM_CREATIVE_SB16_MIXER* = 409
   MM_MEDIAVISION_PROAUDIO* = 0x10
-  MM_PROAUD_MIDIOUT* = MM_MEDIAVISION_PROAUDIO+1
-  MM_PROAUD_MIDIIN* = MM_MEDIAVISION_PROAUDIO+2
-  MM_PROAUD_SYNTH* = MM_MEDIAVISION_PROAUDIO+3
-  MM_PROAUD_WAVEOUT* = MM_MEDIAVISION_PROAUDIO+4
-  MM_PROAUD_WAVEIN* = MM_MEDIAVISION_PROAUDIO+5
-  MM_PROAUD_MIXER* = MM_MEDIAVISION_PROAUDIO+6
-  MM_PROAUD_AUX* = MM_MEDIAVISION_PROAUDIO+7
+  MM_PROAUD_MIDIOUT* = MM_MEDIAVISION_PROAUDIO + 1
+  MM_PROAUD_MIDIIN* = MM_MEDIAVISION_PROAUDIO + 2
+  MM_PROAUD_SYNTH* = MM_MEDIAVISION_PROAUDIO + 3
+  MM_PROAUD_WAVEOUT* = MM_MEDIAVISION_PROAUDIO + 4
+  MM_PROAUD_WAVEIN* = MM_MEDIAVISION_PROAUDIO + 5
+  MM_PROAUD_MIXER* = MM_MEDIAVISION_PROAUDIO + 6
+  MM_PROAUD_AUX* = MM_MEDIAVISION_PROAUDIO + 7
   MM_MEDIAVISION_THUNDER* = 0x20
-  MM_THUNDER_SYNTH* = MM_MEDIAVISION_THUNDER+3
-  MM_THUNDER_WAVEOUT* = MM_MEDIAVISION_THUNDER+4
-  MM_THUNDER_WAVEIN* = MM_MEDIAVISION_THUNDER+5
-  MM_THUNDER_AUX* = MM_MEDIAVISION_THUNDER+7
+  MM_THUNDER_SYNTH* = MM_MEDIAVISION_THUNDER + 3
+  MM_THUNDER_WAVEOUT* = MM_MEDIAVISION_THUNDER + 4
+  MM_THUNDER_WAVEIN* = MM_MEDIAVISION_THUNDER + 5
+  MM_THUNDER_AUX* = MM_MEDIAVISION_THUNDER + 7
   MM_MEDIAVISION_TPORT* = 0x40
-  MM_TPORT_WAVEOUT* = MM_MEDIAVISION_TPORT+1
-  MM_TPORT_WAVEIN* = MM_MEDIAVISION_TPORT+2
-  MM_TPORT_SYNTH* = MM_MEDIAVISION_TPORT+3
+  MM_TPORT_WAVEOUT* = MM_MEDIAVISION_TPORT + 1
+  MM_TPORT_WAVEIN* = MM_MEDIAVISION_TPORT + 2
+  MM_TPORT_SYNTH* = MM_MEDIAVISION_TPORT + 3
   MM_MEDIAVISION_PROAUDIO_PLUS* = 0x50
-  MM_PROAUD_PLUS_MIDIOUT* = MM_MEDIAVISION_PROAUDIO_PLUS+1
-  MM_PROAUD_PLUS_MIDIIN* = MM_MEDIAVISION_PROAUDIO_PLUS+2
-  MM_PROAUD_PLUS_SYNTH* = MM_MEDIAVISION_PROAUDIO_PLUS+3
-  MM_PROAUD_PLUS_WAVEOUT* = MM_MEDIAVISION_PROAUDIO_PLUS+4
-  MM_PROAUD_PLUS_WAVEIN* = MM_MEDIAVISION_PROAUDIO_PLUS+5
-  MM_PROAUD_PLUS_MIXER* = MM_MEDIAVISION_PROAUDIO_PLUS+6
-  MM_PROAUD_PLUS_AUX* = MM_MEDIAVISION_PROAUDIO_PLUS+7
+  MM_PROAUD_PLUS_MIDIOUT* = MM_MEDIAVISION_PROAUDIO_PLUS + 1
+  MM_PROAUD_PLUS_MIDIIN* = MM_MEDIAVISION_PROAUDIO_PLUS + 2
+  MM_PROAUD_PLUS_SYNTH* = MM_MEDIAVISION_PROAUDIO_PLUS + 3
+  MM_PROAUD_PLUS_WAVEOUT* = MM_MEDIAVISION_PROAUDIO_PLUS + 4
+  MM_PROAUD_PLUS_WAVEIN* = MM_MEDIAVISION_PROAUDIO_PLUS + 5
+  MM_PROAUD_PLUS_MIXER* = MM_MEDIAVISION_PROAUDIO_PLUS + 6
+  MM_PROAUD_PLUS_AUX* = MM_MEDIAVISION_PROAUDIO_PLUS + 7
   MM_MEDIAVISION_PROAUDIO_16* = 0x60
-  MM_PROAUD_16_MIDIOUT* = MM_MEDIAVISION_PROAUDIO_16+1
-  MM_PROAUD_16_MIDIIN* = MM_MEDIAVISION_PROAUDIO_16+2
-  MM_PROAUD_16_SYNTH* = MM_MEDIAVISION_PROAUDIO_16+3
-  MM_PROAUD_16_WAVEOUT* = MM_MEDIAVISION_PROAUDIO_16+4
-  MM_PROAUD_16_WAVEIN* = MM_MEDIAVISION_PROAUDIO_16+5
-  MM_PROAUD_16_MIXER* = MM_MEDIAVISION_PROAUDIO_16+6
-  MM_PROAUD_16_AUX* = MM_MEDIAVISION_PROAUDIO_16+7
+  MM_PROAUD_16_MIDIOUT* = MM_MEDIAVISION_PROAUDIO_16 + 1
+  MM_PROAUD_16_MIDIIN* = MM_MEDIAVISION_PROAUDIO_16 + 2
+  MM_PROAUD_16_SYNTH* = MM_MEDIAVISION_PROAUDIO_16 + 3
+  MM_PROAUD_16_WAVEOUT* = MM_MEDIAVISION_PROAUDIO_16 + 4
+  MM_PROAUD_16_WAVEIN* = MM_MEDIAVISION_PROAUDIO_16 + 5
+  MM_PROAUD_16_MIXER* = MM_MEDIAVISION_PROAUDIO_16 + 6
+  MM_PROAUD_16_AUX* = MM_MEDIAVISION_PROAUDIO_16 + 7
   MM_MEDIAVISION_PROSTUDIO_16* = 0x60
-  MM_STUDIO_16_MIDIOUT* = MM_MEDIAVISION_PROSTUDIO_16+1
-  MM_STUDIO_16_MIDIIN* = MM_MEDIAVISION_PROSTUDIO_16+2
-  MM_STUDIO_16_SYNTH* = MM_MEDIAVISION_PROSTUDIO_16+3
-  MM_STUDIO_16_WAVEOUT* = MM_MEDIAVISION_PROSTUDIO_16+4
-  MM_STUDIO_16_WAVEIN* = MM_MEDIAVISION_PROSTUDIO_16+5
-  MM_STUDIO_16_MIXER* = MM_MEDIAVISION_PROSTUDIO_16+6
-  MM_STUDIO_16_AUX* = MM_MEDIAVISION_PROSTUDIO_16+7
+  MM_STUDIO_16_MIDIOUT* = MM_MEDIAVISION_PROSTUDIO_16 + 1
+  MM_STUDIO_16_MIDIIN* = MM_MEDIAVISION_PROSTUDIO_16 + 2
+  MM_STUDIO_16_SYNTH* = MM_MEDIAVISION_PROSTUDIO_16 + 3
+  MM_STUDIO_16_WAVEOUT* = MM_MEDIAVISION_PROSTUDIO_16 + 4
+  MM_STUDIO_16_WAVEIN* = MM_MEDIAVISION_PROSTUDIO_16 + 5
+  MM_STUDIO_16_MIXER* = MM_MEDIAVISION_PROSTUDIO_16 + 6
+  MM_STUDIO_16_AUX* = MM_MEDIAVISION_PROSTUDIO_16 + 7
   MM_MEDIAVISION_CDPC* = 0x70
-  MM_CDPC_MIDIOUT* = MM_MEDIAVISION_CDPC+1
-  MM_CDPC_MIDIIN* = MM_MEDIAVISION_CDPC+2
-  MM_CDPC_SYNTH* = MM_MEDIAVISION_CDPC+3
-  MM_CDPC_WAVEOUT* = MM_MEDIAVISION_CDPC+4
-  MM_CDPC_WAVEIN* = MM_MEDIAVISION_CDPC+5
-  MM_CDPC_MIXER* = MM_MEDIAVISION_CDPC+6
-  MM_CDPC_AUX* = MM_MEDIAVISION_CDPC+7
+  MM_CDPC_MIDIOUT* = MM_MEDIAVISION_CDPC + 1
+  MM_CDPC_MIDIIN* = MM_MEDIAVISION_CDPC + 2
+  MM_CDPC_SYNTH* = MM_MEDIAVISION_CDPC + 3
+  MM_CDPC_WAVEOUT* = MM_MEDIAVISION_CDPC + 4
+  MM_CDPC_WAVEIN* = MM_MEDIAVISION_CDPC + 5
+  MM_CDPC_MIXER* = MM_MEDIAVISION_CDPC + 6
+  MM_CDPC_AUX* = MM_MEDIAVISION_CDPC + 7
   MM_MEDIAVISION_OPUS1208* = 0x80
-  MM_OPUS401_MIDIOUT* = MM_MEDIAVISION_OPUS1208+1
-  MM_OPUS401_MIDIIN* = MM_MEDIAVISION_OPUS1208+2
-  MM_OPUS1208_SYNTH* = MM_MEDIAVISION_OPUS1208+3
-  MM_OPUS1208_WAVEOUT* = MM_MEDIAVISION_OPUS1208+4
-  MM_OPUS1208_WAVEIN* = MM_MEDIAVISION_OPUS1208+5
-  MM_OPUS1208_MIXER* = MM_MEDIAVISION_OPUS1208+6
-  MM_OPUS1208_AUX* = MM_MEDIAVISION_OPUS1208+7
+  MM_OPUS401_MIDIOUT* = MM_MEDIAVISION_OPUS1208 + 1
+  MM_OPUS401_MIDIIN* = MM_MEDIAVISION_OPUS1208 + 2
+  MM_OPUS1208_SYNTH* = MM_MEDIAVISION_OPUS1208 + 3
+  MM_OPUS1208_WAVEOUT* = MM_MEDIAVISION_OPUS1208 + 4
+  MM_OPUS1208_WAVEIN* = MM_MEDIAVISION_OPUS1208 + 5
+  MM_OPUS1208_MIXER* = MM_MEDIAVISION_OPUS1208 + 6
+  MM_OPUS1208_AUX* = MM_MEDIAVISION_OPUS1208 + 7
   MM_MEDIAVISION_OPUS1216* = 0x90
-  MM_OPUS1216_MIDIOUT* = MM_MEDIAVISION_OPUS1216+1
-  MM_OPUS1216_MIDIIN* = MM_MEDIAVISION_OPUS1216+2
-  MM_OPUS1216_SYNTH* = MM_MEDIAVISION_OPUS1216+3
-  MM_OPUS1216_WAVEOUT* = MM_MEDIAVISION_OPUS1216+4
-  MM_OPUS1216_WAVEIN* = MM_MEDIAVISION_OPUS1216+5
-  MM_OPUS1216_MIXER* = MM_MEDIAVISION_OPUS1216+6
-  MM_OPUS1216_AUX* = MM_MEDIAVISION_OPUS1216+7
+  MM_OPUS1216_MIDIOUT* = MM_MEDIAVISION_OPUS1216 + 1
+  MM_OPUS1216_MIDIIN* = MM_MEDIAVISION_OPUS1216 + 2
+  MM_OPUS1216_SYNTH* = MM_MEDIAVISION_OPUS1216 + 3
+  MM_OPUS1216_WAVEOUT* = MM_MEDIAVISION_OPUS1216 + 4
+  MM_OPUS1216_WAVEIN* = MM_MEDIAVISION_OPUS1216 + 5
+  MM_OPUS1216_MIXER* = MM_MEDIAVISION_OPUS1216 + 6
+  MM_OPUS1216_AUX* = MM_MEDIAVISION_OPUS1216 + 7
   MM_CYRIX_XASYNTH* = 1
   MM_CYRIX_XAMIDIIN* = 2
   MM_CYRIX_XAMIDIOUT* = 3
@@ -3313,14 +3511,14 @@
   MM_BTV_MIDIWAVESTREAM* = 11
   MM_BTV_MIXER* = 12
   MM_ENSONIQ_SOUNDSCAPE* = 0x10
-  MM_SOUNDSCAPE_WAVEOUT* = MM_ENSONIQ_SOUNDSCAPE+1
-  MM_SOUNDSCAPE_WAVEOUT_AUX* = MM_ENSONIQ_SOUNDSCAPE+2
-  MM_SOUNDSCAPE_WAVEIN* = MM_ENSONIQ_SOUNDSCAPE+3
-  MM_SOUNDSCAPE_MIDIOUT* = MM_ENSONIQ_SOUNDSCAPE+4
-  MM_SOUNDSCAPE_MIDIIN* = MM_ENSONIQ_SOUNDSCAPE+5
-  MM_SOUNDSCAPE_SYNTH* = MM_ENSONIQ_SOUNDSCAPE+6
-  MM_SOUNDSCAPE_MIXER* = MM_ENSONIQ_SOUNDSCAPE+7
-  MM_SOUNDSCAPE_AUX* = MM_ENSONIQ_SOUNDSCAPE+8
+  MM_SOUNDSCAPE_WAVEOUT* = MM_ENSONIQ_SOUNDSCAPE + 1
+  MM_SOUNDSCAPE_WAVEOUT_AUX* = MM_ENSONIQ_SOUNDSCAPE + 2
+  MM_SOUNDSCAPE_WAVEIN* = MM_ENSONIQ_SOUNDSCAPE + 3
+  MM_SOUNDSCAPE_MIDIOUT* = MM_ENSONIQ_SOUNDSCAPE + 4
+  MM_SOUNDSCAPE_MIDIIN* = MM_ENSONIQ_SOUNDSCAPE + 5
+  MM_SOUNDSCAPE_SYNTH* = MM_ENSONIQ_SOUNDSCAPE + 6
+  MM_SOUNDSCAPE_MIXER* = MM_ENSONIQ_SOUNDSCAPE + 7
+  MM_SOUNDSCAPE_AUX* = MM_ENSONIQ_SOUNDSCAPE + 8
   MM_NVIDIA_WAVEOUT* = 1
   MM_NVIDIA_WAVEIN* = 2
   MM_NVIDIA_MIDIOUT* = 3
@@ -3329,25 +3527,25 @@
   MM_NVIDIA_MIXER* = 6
   MM_NVIDIA_AUX* = 7
   MM_OKSORI_BASE* = 0
-  MM_OKSORI_OSR8_WAVEOUT* = MM_OKSORI_BASE+1
-  MM_OKSORI_OSR8_WAVEIN* = MM_OKSORI_BASE+2
-  MM_OKSORI_OSR16_WAVEOUT* = MM_OKSORI_BASE+3
-  MM_OKSORI_OSR16_WAVEIN* = MM_OKSORI_BASE+4
-  MM_OKSORI_FM_OPL4* = MM_OKSORI_BASE+5
-  MM_OKSORI_MIX_MASTER* = MM_OKSORI_BASE+6
-  MM_OKSORI_MIX_WAVE* = MM_OKSORI_BASE+7
-  MM_OKSORI_MIX_FM* = MM_OKSORI_BASE+8
-  MM_OKSORI_MIX_LINE* = MM_OKSORI_BASE+9
-  MM_OKSORI_MIX_CD* = MM_OKSORI_BASE+10
-  MM_OKSORI_MIX_MIC* = MM_OKSORI_BASE+11
-  MM_OKSORI_MIX_ECHO* = MM_OKSORI_BASE+12
-  MM_OKSORI_MIX_AUX1* = MM_OKSORI_BASE+13
-  MM_OKSORI_MIX_LINE1* = MM_OKSORI_BASE+14
-  MM_OKSORI_EXT_MIC1* = MM_OKSORI_BASE+15
-  MM_OKSORI_EXT_MIC2* = MM_OKSORI_BASE+16
-  MM_OKSORI_MIDIOUT* = MM_OKSORI_BASE+17
-  MM_OKSORI_MIDIIN* = MM_OKSORI_BASE+18
-  MM_OKSORI_MPEG_CDVISION* = MM_OKSORI_BASE+19
+  MM_OKSORI_OSR8_WAVEOUT* = MM_OKSORI_BASE + 1
+  MM_OKSORI_OSR8_WAVEIN* = MM_OKSORI_BASE + 2
+  MM_OKSORI_OSR16_WAVEOUT* = MM_OKSORI_BASE + 3
+  MM_OKSORI_OSR16_WAVEIN* = MM_OKSORI_BASE + 4
+  MM_OKSORI_FM_OPL4* = MM_OKSORI_BASE + 5
+  MM_OKSORI_MIX_MASTER* = MM_OKSORI_BASE + 6
+  MM_OKSORI_MIX_WAVE* = MM_OKSORI_BASE + 7
+  MM_OKSORI_MIX_FM* = MM_OKSORI_BASE + 8
+  MM_OKSORI_MIX_LINE* = MM_OKSORI_BASE + 9
+  MM_OKSORI_MIX_CD* = MM_OKSORI_BASE + 10
+  MM_OKSORI_MIX_MIC* = MM_OKSORI_BASE + 11
+  MM_OKSORI_MIX_ECHO* = MM_OKSORI_BASE + 12
+  MM_OKSORI_MIX_AUX1* = MM_OKSORI_BASE + 13
+  MM_OKSORI_MIX_LINE1* = MM_OKSORI_BASE + 14
+  MM_OKSORI_EXT_MIC1* = MM_OKSORI_BASE + 15
+  MM_OKSORI_EXT_MIC2* = MM_OKSORI_BASE + 16
+  MM_OKSORI_MIDIOUT* = MM_OKSORI_BASE + 17
+  MM_OKSORI_MIDIIN* = MM_OKSORI_BASE + 18
+  MM_OKSORI_MPEG_CDVISION* = MM_OKSORI_BASE + 19
   MM_DIACOUSTICS_DRUM_ACTION* = 1
   MM_KAY_ELEMETRICS_CSL* = 0x4300
   MM_KAY_ELEMETRICS_CSL_DAT* = 0x4308
@@ -3790,7 +3988,9 @@
   MM_ALGOVISION_VB80MIXER* = 3
   MM_ALGOVISION_VB80AUX* = 4
   MM_ALGOVISION_VB80AUX2* = 5
-template mmioFOURCC*(c0: untyped, c1: untyped, c2: untyped, c3: untyped): untyped = c0.DWORD or (c1.DWORD shl 8) or (c2.DWORD shl 16) or (c3.DWORD shl 24)
+template mmioFOURCC*(c0: untyped, c1: untyped, c2: untyped, c3: untyped): untyped =
+  c0.DWORD or (c1.DWORD shl 8) or (c2.DWORD shl 16) or (c3.DWORD shl 24)
+
 const
   RIFFINFO_IARL* = mmioFOURCC('I', 'A', 'R', 'L')
   RIFFINFO_IART* = mmioFOURCC('I', 'A', 'R', 'T')
@@ -4081,10 +4281,12 @@
   WAVE_FORMAT_DEVELOPMENT* = 0xffff
   STATIC_KSDATAFORMAT_SUBTYPE_PCM* = DEFINE_GUID("00000001-0000-0010-8000-00aa00389b71")
   KSDATAFORMAT_SUBTYPE_PCM* = DEFINE_GUID("00000001-0000-0010-8000-00aa00389b71")
-  STATIC_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT* = DEFINE_GUID("00000003-0000-0010-8000-00aa00389b71")
+  STATIC_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT* =
+    DEFINE_GUID("00000003-0000-0010-8000-00aa00389b71")
   KSDATAFORMAT_SUBTYPE_IEEE_FLOAT* = DEFINE_GUID("00000003-0000-0010-8000-00aa00389b71")
   STATIC_KSDATAFORMAT_SUBTYPE_WAVEFORMATEX* = 0x00000000
-  KSDATAFORMAT_SUBTYPE_WAVEFORMATEX* = DEFINE_GUID("00000000-0000-0010-8000-00aa00389b71")
+  KSDATAFORMAT_SUBTYPE_WAVEFORMATEX* =
+    DEFINE_GUID("00000000-0000-0010-8000-00aa00389b71")
   SPEAKER_FRONT_LEFT* = 0x1
   SPEAKER_FRONT_RIGHT* = 0x2
   SPEAKER_FRONT_CENTER* = 0x4
@@ -4225,9 +4427,9 @@
   ICTYPE_VIDEO* = mmioFOURCC('v', 'i', 'd', 'c')
   ICTYPE_AUDIO* = mmioFOURCC('a', 'u', 'd', 'c')
   FOURCC_RDSP* = mmioFOURCC('R', 'D', 'S', 'P')
-  MIXERCONTROL_CONTROLTYPE_SRS_MTS* = MIXERCONTROL_CONTROLTYPE_BOOLEAN+6
-  MIXERCONTROL_CONTROLTYPE_SRS_ONOFF* = MIXERCONTROL_CONTROLTYPE_BOOLEAN+7
-  MIXERCONTROL_CONTROLTYPE_SRS_SYNTHSELECT* = MIXERCONTROL_CONTROLTYPE_BOOLEAN+8
+  MIXERCONTROL_CONTROLTYPE_SRS_MTS* = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 6
+  MIXERCONTROL_CONTROLTYPE_SRS_ONOFF* = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 7
+  MIXERCONTROL_CONTROLTYPE_SRS_SYNTHSELECT* = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 8
   SND_ALIAS_SYSTEMASTERISK* = 0x00002A53
   SND_ALIAS_SYSTEMQUESTION* = 0x00003F53
   SND_ALIAS_SYSTEMHAND* = 0x00004853
@@ -4242,20 +4444,25 @@
   FOURCC_MEM* = 0x204D454D
   JOY_POVCENTERED* = not WORD(0)
 type
-  DRIVERPROC* = proc (P1: DWORD_PTR, P2: HDRVR, P3: UINT, P4: LPARAM, P5: LPARAM): LRESULT {.stdcall.}
-  YIELDPROC* = proc (mciId: MCIDEVICEID, dwYieldData: DWORD): UINT {.stdcall.}
+  DRIVERPROC* = proc(
+    P1: DWORD_PTR, P2: HDRVR, P3: UINT, P4: LPARAM, P5: LPARAM
+  ): LRESULT {.stdcall.}
+  YIELDPROC* = proc(mciId: MCIDEVICEID, dwYieldData: DWORD): UINT {.stdcall.}
   MIDIEVENT* {.pure.} = object
     dwDeltaTime*: DWORD
     dwStreamID*: DWORD
     dwEvent*: DWORD
     dwParms*: array[1, DWORD]
+
   MIDISTRMBUFFVER* {.pure.} = object
     dwVersion*: DWORD
     dwMid*: DWORD
     dwOEMVersion*: DWORD
+
   DOLBYAC2WAVEFORMAT* {.pure, packed.} = object
     wfx*: WAVEFORMATEX
     nAuxBitsCode*: WORD
+
   s_RIFFWAVE_inst* {.pure.} = object
     bUnshiftedNote*: BYTE
     chFineTune*: char
@@ -4264,9 +4471,11 @@
     bHighNote*: BYTE
     bLowVelocity*: BYTE
     bHighVelocity*: BYTE
+
   EXBMINFOHEADER* {.pure.} = object
     bmi*: BITMAPINFOHEADER
     biExtDataOffset*: DWORD
+
   JPEGINFOHEADER* {.pure.} = object
     JPEGSize*: DWORD
     JPEGProcess*: DWORD
@@ -4274,210 +4483,774 @@
     JPEGBitsPerSample*: DWORD
     JPEGHSubSampling*: DWORD
     JPEGVSubSampling*: DWORD
-proc CloseDriver*(hDriver: HDRVR, lParam1: LPARAM, lParam2: LPARAM): LRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc OpenDriver*(szDriverName: LPCWSTR, szSectionName: LPCWSTR, lParam2: LPARAM): HDRVR {.winapi, stdcall, dynlib: "winmm", importc.}
-proc SendDriverMessage*(hDriver: HDRVR, message: UINT, lParam1: LPARAM, lParam2: LPARAM): LRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc DrvGetModuleHandle*(hDriver: HDRVR): HMODULE {.winapi, stdcall, dynlib: "winmm", importc.}
-proc GetDriverModuleHandle*(hDriver: HDRVR): HMODULE {.winapi, stdcall, dynlib: "winmm", importc.}
-proc DefDriverProc*(dwDriverIdentifier: DWORD_PTR, hdrvr: HDRVR, uMsg: UINT, lParam1: LPARAM, lParam2: LPARAM): LRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc sndPlaySoundA*(pszSound: LPCSTR, fuSound: UINT): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc.}
-proc sndPlaySoundW*(pszSound: LPCWSTR, fuSound: UINT): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc.}
-proc PlaySoundA*(pszSound: LPCSTR, hmod: HMODULE, fdwSound: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc.}
-proc PlaySoundW*(pszSound: LPCWSTR, hmod: HMODULE, fdwSound: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc CloseDriver*(
+  hDriver: HDRVR, lParam1: LPARAM, lParam2: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc OpenDriver*(
+  szDriverName: LPCWSTR, szSectionName: LPCWSTR, lParam2: LPARAM
+): HDRVR {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc SendDriverMessage*(
+  hDriver: HDRVR, message: UINT, lParam1: LPARAM, lParam2: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc DrvGetModuleHandle*(
+  hDriver: HDRVR
+): HMODULE {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc GetDriverModuleHandle*(
+  hDriver: HDRVR
+): HMODULE {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc DefDriverProc*(
+  dwDriverIdentifier: DWORD_PTR,
+  hdrvr: HDRVR,
+  uMsg: UINT,
+  lParam1: LPARAM,
+  lParam2: LPARAM,
+): LRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc sndPlaySoundA*(
+  pszSound: LPCSTR, fuSound: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc sndPlaySoundW*(
+  pszSound: LPCWSTR, fuSound: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc PlaySoundA*(
+  pszSound: LPCSTR, hmod: HMODULE, fdwSound: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc PlaySoundW*(
+  pszSound: LPCWSTR, hmod: HMODULE, fdwSound: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc.}
+
 proc waveOutGetNumDevs*(): UINT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutGetDevCapsA*(uDeviceID: UINT_PTR, pwoc: LPWAVEOUTCAPSA, cbwoc: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutGetDevCapsW*(uDeviceID: UINT_PTR, pwoc: LPWAVEOUTCAPSW, cbwoc: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutGetVolume*(hwo: HWAVEOUT, pdwVolume: LPDWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutSetVolume*(hwo: HWAVEOUT, dwVolume: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutGetErrorTextA*(mmrError: MMRESULT, pszText: LPSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutGetErrorTextW*(mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutOpen*(phwo: LPHWAVEOUT, uDeviceID: UINT, pwfx: LPCWAVEFORMATEX, dwCallback: DWORD_PTR, dwInstance: DWORD_PTR, fdwOpen: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutClose*(hwo: HWAVEOUT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutPrepareHeader*(hwo: HWAVEOUT, pwh: LPWAVEHDR, cbwh: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutUnprepareHeader*(hwo: HWAVEOUT, pwh: LPWAVEHDR, cbwh: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutWrite*(hwo: HWAVEOUT, pwh: LPWAVEHDR, cbwh: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutPause*(hwo: HWAVEOUT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutRestart*(hwo: HWAVEOUT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutReset*(hwo: HWAVEOUT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutBreakLoop*(hwo: HWAVEOUT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutGetPosition*(hwo: HWAVEOUT, pmmt: LPMMTIME, cbmmt: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutGetPitch*(hwo: HWAVEOUT, pdwPitch: LPDWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutSetPitch*(hwo: HWAVEOUT, dwPitch: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutGetPlaybackRate*(hwo: HWAVEOUT, pdwRate: LPDWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutSetPlaybackRate*(hwo: HWAVEOUT, dwRate: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutGetID*(hwo: HWAVEOUT, puDeviceID: LPUINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveOutMessage*(hwo: HWAVEOUT, uMsg: UINT, dw1: DWORD_PTR, dw2: DWORD_PTR): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+proc waveOutGetDevCapsA*(
+  uDeviceID: UINT_PTR, pwoc: LPWAVEOUTCAPSA, cbwoc: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutGetDevCapsW*(
+  uDeviceID: UINT_PTR, pwoc: LPWAVEOUTCAPSW, cbwoc: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutGetVolume*(
+  hwo: HWAVEOUT, pdwVolume: LPDWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutSetVolume*(
+  hwo: HWAVEOUT, dwVolume: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutGetErrorTextA*(
+  mmrError: MMRESULT, pszText: LPSTR, cchText: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutGetErrorTextW*(
+  mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutOpen*(
+  phwo: LPHWAVEOUT,
+  uDeviceID: UINT,
+  pwfx: LPCWAVEFORMATEX,
+  dwCallback: DWORD_PTR,
+  dwInstance: DWORD_PTR,
+  fdwOpen: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutClose*(
+  hwo: HWAVEOUT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutPrepareHeader*(
+  hwo: HWAVEOUT, pwh: LPWAVEHDR, cbwh: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutUnprepareHeader*(
+  hwo: HWAVEOUT, pwh: LPWAVEHDR, cbwh: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutWrite*(
+  hwo: HWAVEOUT, pwh: LPWAVEHDR, cbwh: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutPause*(
+  hwo: HWAVEOUT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutRestart*(
+  hwo: HWAVEOUT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutReset*(
+  hwo: HWAVEOUT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutBreakLoop*(
+  hwo: HWAVEOUT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutGetPosition*(
+  hwo: HWAVEOUT, pmmt: LPMMTIME, cbmmt: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutGetPitch*(
+  hwo: HWAVEOUT, pdwPitch: LPDWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutSetPitch*(
+  hwo: HWAVEOUT, dwPitch: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutGetPlaybackRate*(
+  hwo: HWAVEOUT, pdwRate: LPDWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutSetPlaybackRate*(
+  hwo: HWAVEOUT, dwRate: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutGetID*(
+  hwo: HWAVEOUT, puDeviceID: LPUINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveOutMessage*(
+  hwo: HWAVEOUT, uMsg: UINT, dw1: DWORD_PTR, dw2: DWORD_PTR
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
 proc waveInGetNumDevs*(): UINT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveInGetDevCapsA*(uDeviceID: UINT_PTR, pwic: LPWAVEINCAPSA, cbwic: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveInGetDevCapsW*(uDeviceID: UINT_PTR, pwic: LPWAVEINCAPSW, cbwic: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveInGetErrorTextA*(mmrError: MMRESULT, pszText: LPSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveInGetErrorTextW*(mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveInOpen*(phwi: LPHWAVEIN, uDeviceID: UINT, pwfx: LPCWAVEFORMATEX, dwCallback: DWORD_PTR, dwInstance: DWORD_PTR, fdwOpen: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+proc waveInGetDevCapsA*(
+  uDeviceID: UINT_PTR, pwic: LPWAVEINCAPSA, cbwic: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveInGetDevCapsW*(
+  uDeviceID: UINT_PTR, pwic: LPWAVEINCAPSW, cbwic: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveInGetErrorTextA*(
+  mmrError: MMRESULT, pszText: LPSTR, cchText: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveInGetErrorTextW*(
+  mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveInOpen*(
+  phwi: LPHWAVEIN,
+  uDeviceID: UINT,
+  pwfx: LPCWAVEFORMATEX,
+  dwCallback: DWORD_PTR,
+  dwInstance: DWORD_PTR,
+  fdwOpen: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
 proc waveInClose*(hwi: HWAVEIN): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveInPrepareHeader*(hwi: HWAVEIN, pwh: LPWAVEHDR, cbwh: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveInUnprepareHeader*(hwi: HWAVEIN, pwh: LPWAVEHDR, cbwh: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveInAddBuffer*(hwi: HWAVEIN, pwh: LPWAVEHDR, cbwh: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+proc waveInPrepareHeader*(
+  hwi: HWAVEIN, pwh: LPWAVEHDR, cbwh: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveInUnprepareHeader*(
+  hwi: HWAVEIN, pwh: LPWAVEHDR, cbwh: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveInAddBuffer*(
+  hwi: HWAVEIN, pwh: LPWAVEHDR, cbwh: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
 proc waveInStart*(hwi: HWAVEIN): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
 proc waveInStop*(hwi: HWAVEIN): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
 proc waveInReset*(hwi: HWAVEIN): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveInGetPosition*(hwi: HWAVEIN, pmmt: LPMMTIME, cbmmt: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveInGetID*(hwi: HWAVEIN, puDeviceID: LPUINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc waveInMessage*(hwi: HWAVEIN, uMsg: UINT, dw1: DWORD_PTR, dw2: DWORD_PTR): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+proc waveInGetPosition*(
+  hwi: HWAVEIN, pmmt: LPMMTIME, cbmmt: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveInGetID*(
+  hwi: HWAVEIN, puDeviceID: LPUINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc waveInMessage*(
+  hwi: HWAVEIN, uMsg: UINT, dw1: DWORD_PTR, dw2: DWORD_PTR
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
 proc midiOutGetNumDevs*(): UINT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiStreamOpen*(phms: LPHMIDISTRM, puDeviceID: LPUINT, cMidi: DWORD, dwCallback: DWORD_PTR, dwInstance: DWORD_PTR, fdwOpen: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiStreamClose*(hms: HMIDISTRM): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiStreamProperty*(hms: HMIDISTRM, lppropdata: LPBYTE, dwProperty: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiStreamPosition*(hms: HMIDISTRM, lpmmt: LPMMTIME, cbmmt: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiStreamOut*(hms: HMIDISTRM, pmh: LPMIDIHDR, cbmh: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiStreamPause*(hms: HMIDISTRM): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiStreamRestart*(hms: HMIDISTRM): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiStreamStop*(hms: HMIDISTRM): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiConnect*(hmi: HMIDI, hmo: HMIDIOUT, pReserved: LPVOID): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiDisconnect*(hmi: HMIDI, hmo: HMIDIOUT, pReserved: LPVOID): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutGetDevCapsA*(uDeviceID: UINT_PTR, pmoc: LPMIDIOUTCAPSA, cbmoc: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutGetDevCapsW*(uDeviceID: UINT_PTR, pmoc: LPMIDIOUTCAPSW, cbmoc: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutGetVolume*(hmo: HMIDIOUT, pdwVolume: LPDWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutSetVolume*(hmo: HMIDIOUT, dwVolume: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutGetErrorTextA*(mmrError: MMRESULT, pszText: LPSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutGetErrorTextW*(mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutOpen*(phmo: LPHMIDIOUT, uDeviceID: UINT, dwCallback: DWORD_PTR, dwInstance: DWORD_PTR, fdwOpen: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutClose*(hmo: HMIDIOUT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutPrepareHeader*(hmo: HMIDIOUT, pmh: LPMIDIHDR, cbmh: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutUnprepareHeader*(hmo: HMIDIOUT, pmh: LPMIDIHDR, cbmh: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutShortMsg*(hmo: HMIDIOUT, dwMsg: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutLongMsg*(hmo: HMIDIOUT, pmh: LPMIDIHDR, cbmh: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutReset*(hmo: HMIDIOUT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutCachePatches*(hmo: HMIDIOUT, uBank: UINT, pwpa: LPWORD, fuCache: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutCacheDrumPatches*(hmo: HMIDIOUT, uPatch: UINT, pwkya: LPWORD, fuCache: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutGetID*(hmo: HMIDIOUT, puDeviceID: LPUINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiOutMessage*(hmo: HMIDIOUT, uMsg: UINT, dw1: DWORD_PTR, dw2: DWORD_PTR): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+proc midiStreamOpen*(
+  phms: LPHMIDISTRM,
+  puDeviceID: LPUINT,
+  cMidi: DWORD,
+  dwCallback: DWORD_PTR,
+  dwInstance: DWORD_PTR,
+  fdwOpen: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiStreamClose*(
+  hms: HMIDISTRM
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiStreamProperty*(
+  hms: HMIDISTRM, lppropdata: LPBYTE, dwProperty: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiStreamPosition*(
+  hms: HMIDISTRM, lpmmt: LPMMTIME, cbmmt: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiStreamOut*(
+  hms: HMIDISTRM, pmh: LPMIDIHDR, cbmh: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiStreamPause*(
+  hms: HMIDISTRM
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiStreamRestart*(
+  hms: HMIDISTRM
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiStreamStop*(
+  hms: HMIDISTRM
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiConnect*(
+  hmi: HMIDI, hmo: HMIDIOUT, pReserved: LPVOID
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiDisconnect*(
+  hmi: HMIDI, hmo: HMIDIOUT, pReserved: LPVOID
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutGetDevCapsA*(
+  uDeviceID: UINT_PTR, pmoc: LPMIDIOUTCAPSA, cbmoc: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutGetDevCapsW*(
+  uDeviceID: UINT_PTR, pmoc: LPMIDIOUTCAPSW, cbmoc: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutGetVolume*(
+  hmo: HMIDIOUT, pdwVolume: LPDWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutSetVolume*(
+  hmo: HMIDIOUT, dwVolume: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutGetErrorTextA*(
+  mmrError: MMRESULT, pszText: LPSTR, cchText: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutGetErrorTextW*(
+  mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutOpen*(
+  phmo: LPHMIDIOUT,
+  uDeviceID: UINT,
+  dwCallback: DWORD_PTR,
+  dwInstance: DWORD_PTR,
+  fdwOpen: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutClose*(
+  hmo: HMIDIOUT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutPrepareHeader*(
+  hmo: HMIDIOUT, pmh: LPMIDIHDR, cbmh: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutUnprepareHeader*(
+  hmo: HMIDIOUT, pmh: LPMIDIHDR, cbmh: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutShortMsg*(
+  hmo: HMIDIOUT, dwMsg: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutLongMsg*(
+  hmo: HMIDIOUT, pmh: LPMIDIHDR, cbmh: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutReset*(
+  hmo: HMIDIOUT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutCachePatches*(
+  hmo: HMIDIOUT, uBank: UINT, pwpa: LPWORD, fuCache: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutCacheDrumPatches*(
+  hmo: HMIDIOUT, uPatch: UINT, pwkya: LPWORD, fuCache: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutGetID*(
+  hmo: HMIDIOUT, puDeviceID: LPUINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiOutMessage*(
+  hmo: HMIDIOUT, uMsg: UINT, dw1: DWORD_PTR, dw2: DWORD_PTR
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
 proc midiInGetNumDevs*(): UINT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiInGetDevCapsA*(uDeviceID: UINT_PTR, pmic: LPMIDIINCAPSA, cbmic: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiInGetDevCapsW*(uDeviceID: UINT_PTR, pmic: LPMIDIINCAPSW, cbmic: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiInGetErrorTextA*(mmrError: MMRESULT, pszText: LPSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiInGetErrorTextW*(mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiInOpen*(phmi: LPHMIDIIN, uDeviceID: UINT, dwCallback: DWORD_PTR, dwInstance: DWORD_PTR, fdwOpen: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+proc midiInGetDevCapsA*(
+  uDeviceID: UINT_PTR, pmic: LPMIDIINCAPSA, cbmic: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiInGetDevCapsW*(
+  uDeviceID: UINT_PTR, pmic: LPMIDIINCAPSW, cbmic: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiInGetErrorTextA*(
+  mmrError: MMRESULT, pszText: LPSTR, cchText: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiInGetErrorTextW*(
+  mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiInOpen*(
+  phmi: LPHMIDIIN,
+  uDeviceID: UINT,
+  dwCallback: DWORD_PTR,
+  dwInstance: DWORD_PTR,
+  fdwOpen: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
 proc midiInClose*(hmi: HMIDIIN): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiInPrepareHeader*(hmi: HMIDIIN, pmh: LPMIDIHDR, cbmh: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiInUnprepareHeader*(hmi: HMIDIIN, pmh: LPMIDIHDR, cbmh: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiInAddBuffer*(hmi: HMIDIIN, pmh: LPMIDIHDR, cbmh: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+proc midiInPrepareHeader*(
+  hmi: HMIDIIN, pmh: LPMIDIHDR, cbmh: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiInUnprepareHeader*(
+  hmi: HMIDIIN, pmh: LPMIDIHDR, cbmh: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiInAddBuffer*(
+  hmi: HMIDIIN, pmh: LPMIDIHDR, cbmh: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
 proc midiInStart*(hmi: HMIDIIN): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
 proc midiInStop*(hmi: HMIDIIN): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
 proc midiInReset*(hmi: HMIDIIN): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiInGetID*(hmi: HMIDIIN, puDeviceID: LPUINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc midiInMessage*(hmi: HMIDIIN, uMsg: UINT, dw1: DWORD_PTR, dw2: DWORD_PTR): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+proc midiInGetID*(
+  hmi: HMIDIIN, puDeviceID: LPUINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc midiInMessage*(
+  hmi: HMIDIIN, uMsg: UINT, dw1: DWORD_PTR, dw2: DWORD_PTR
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
 proc auxGetNumDevs*(): UINT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc auxGetDevCapsA*(uDeviceID: UINT_PTR, pac: LPAUXCAPSA, cbac: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc auxGetDevCapsW*(uDeviceID: UINT_PTR, pac: LPAUXCAPSW, cbac: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc auxSetVolume*(uDeviceID: UINT, dwVolume: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc auxGetVolume*(uDeviceID: UINT, pdwVolume: LPDWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc auxOutMessage*(uDeviceID: UINT, uMsg: UINT, dw1: DWORD_PTR, dw2: DWORD_PTR): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+proc auxGetDevCapsA*(
+  uDeviceID: UINT_PTR, pac: LPAUXCAPSA, cbac: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc auxGetDevCapsW*(
+  uDeviceID: UINT_PTR, pac: LPAUXCAPSW, cbac: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc auxSetVolume*(
+  uDeviceID: UINT, dwVolume: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc auxGetVolume*(
+  uDeviceID: UINT, pdwVolume: LPDWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc auxOutMessage*(
+  uDeviceID: UINT, uMsg: UINT, dw1: DWORD_PTR, dw2: DWORD_PTR
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
 proc mixerGetNumDevs*(): UINT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mixerGetDevCapsA*(uMxId: UINT_PTR, pmxcaps: LPMIXERCAPSA, cbmxcaps: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mixerGetDevCapsW*(uMxId: UINT_PTR, pmxcaps: LPMIXERCAPSW, cbmxcaps: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mixerOpen*(phmx: LPHMIXER, uMxId: UINT, dwCallback: DWORD_PTR, dwInstance: DWORD_PTR, fdwOpen: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+proc mixerGetDevCapsA*(
+  uMxId: UINT_PTR, pmxcaps: LPMIXERCAPSA, cbmxcaps: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mixerGetDevCapsW*(
+  uMxId: UINT_PTR, pmxcaps: LPMIXERCAPSW, cbmxcaps: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mixerOpen*(
+  phmx: LPHMIXER,
+  uMxId: UINT,
+  dwCallback: DWORD_PTR,
+  dwInstance: DWORD_PTR,
+  fdwOpen: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
 proc mixerClose*(hmx: HMIXER): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mixerMessage*(hmx: HMIXER, uMsg: UINT, dwParam1: DWORD_PTR, dwParam2: DWORD_PTR): DWORD {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mixerGetLineInfoA*(hmxobj: HMIXEROBJ, pmxl: LPMIXERLINEA, fdwInfo: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mixerGetLineInfoW*(hmxobj: HMIXEROBJ, pmxl: LPMIXERLINEW, fdwInfo: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mixerGetID*(hmxobj: HMIXEROBJ, puMxId: ptr UINT, fdwId: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mixerGetLineControlsA*(hmxobj: HMIXEROBJ, pmxlc: LPMIXERLINECONTROLSA, fdwControls: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mixerGetLineControlsW*(hmxobj: HMIXEROBJ, pmxlc: LPMIXERLINECONTROLSW, fdwControls: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mixerGetControlDetailsA*(hmxobj: HMIXEROBJ, pmxcd: LPMIXERCONTROLDETAILS, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mixerGetControlDetailsW*(hmxobj: HMIXEROBJ, pmxcd: LPMIXERCONTROLDETAILS, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mixerSetControlDetails*(hmxobj: HMIXEROBJ, pmxcd: LPMIXERCONTROLDETAILS, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc timeGetSystemTime*(pmmt: LPMMTIME, cbmmt: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+proc mixerMessage*(
+  hmx: HMIXER, uMsg: UINT, dwParam1: DWORD_PTR, dwParam2: DWORD_PTR
+): DWORD {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mixerGetLineInfoA*(
+  hmxobj: HMIXEROBJ, pmxl: LPMIXERLINEA, fdwInfo: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mixerGetLineInfoW*(
+  hmxobj: HMIXEROBJ, pmxl: LPMIXERLINEW, fdwInfo: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mixerGetID*(
+  hmxobj: HMIXEROBJ, puMxId: ptr UINT, fdwId: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mixerGetLineControlsA*(
+  hmxobj: HMIXEROBJ, pmxlc: LPMIXERLINECONTROLSA, fdwControls: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mixerGetLineControlsW*(
+  hmxobj: HMIXEROBJ, pmxlc: LPMIXERLINECONTROLSW, fdwControls: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mixerGetControlDetailsA*(
+  hmxobj: HMIXEROBJ, pmxcd: LPMIXERCONTROLDETAILS, fdwDetails: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mixerGetControlDetailsW*(
+  hmxobj: HMIXEROBJ, pmxcd: LPMIXERCONTROLDETAILS, fdwDetails: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mixerSetControlDetails*(
+  hmxobj: HMIXEROBJ, pmxcd: LPMIXERCONTROLDETAILS, fdwDetails: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc timeGetSystemTime*(
+  pmmt: LPMMTIME, cbmmt: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
 proc timeGetTime*(): DWORD {.winapi, stdcall, dynlib: "winmm", importc.}
-proc timeSetEvent*(uDelay: UINT, uResolution: UINT, fptc: LPTIMECALLBACK, dwUser: DWORD_PTR, fuEvent: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc timeKillEvent*(uTimerID: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc timeGetDevCaps*(ptc: LPTIMECAPS, cbtc: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc timeBeginPeriod*(uPeriod: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc timeEndPeriod*(uPeriod: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+proc timeSetEvent*(
+  uDelay: UINT,
+  uResolution: UINT,
+  fptc: LPTIMECALLBACK,
+  dwUser: DWORD_PTR,
+  fuEvent: UINT,
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc timeKillEvent*(
+  uTimerID: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc timeGetDevCaps*(
+  ptc: LPTIMECAPS, cbtc: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc timeBeginPeriod*(
+  uPeriod: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc timeEndPeriod*(
+  uPeriod: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
 proc joyGetNumDevs*(): UINT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc joyGetDevCapsA*(uJoyID: UINT_PTR, pjc: LPJOYCAPSA, cbjc: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc joyGetDevCapsW*(uJoyID: UINT_PTR, pjc: LPJOYCAPSW, cbjc: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc joyGetPos*(uJoyID: UINT, pji: LPJOYINFO): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc joyGetPosEx*(uJoyID: UINT, pji: LPJOYINFOEX): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc joyGetThreshold*(uJoyID: UINT, puThreshold: LPUINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc joyReleaseCapture*(uJoyID: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc joySetCapture*(hwnd: HWND, uJoyID: UINT, uPeriod: UINT, fChanged: WINBOOL): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc joySetThreshold*(uJoyID: UINT, uThreshold: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioStringToFOURCCA*(sz: LPCSTR, uFlags: UINT): FOURCC {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioStringToFOURCCW*(sz: LPCWSTR, uFlags: UINT): FOURCC {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioInstallIOProcA*(fccIOProc: FOURCC, pIOProc: LPMMIOPROC, dwFlags: DWORD): LPMMIOPROC {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioInstallIOProcW*(fccIOProc: FOURCC, pIOProc: LPMMIOPROC, dwFlags: DWORD): LPMMIOPROC {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioOpenA*(pszFileName: LPSTR, pmmioinfo: LPMMIOINFO, fdwOpen: DWORD): HMMIO {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioOpenW*(pszFileName: LPWSTR, pmmioinfo: LPMMIOINFO, fdwOpen: DWORD): HMMIO {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioRenameA*(pszFileName: LPCSTR, pszNewFileName: LPCSTR, pmmioinfo: LPCMMIOINFO, fdwRename: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioRenameW*(pszFileName: LPCWSTR, pszNewFileName: LPCWSTR, pmmioinfo: LPCMMIOINFO, fdwRename: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioClose*(hmmio: HMMIO, fuClose: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioRead*(hmmio: HMMIO, pch: HPSTR, cch: LONG): LONG {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioWrite*(hmmio: HMMIO, pch: ptr char, cch: LONG): LONG {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioSeek*(hmmio: HMMIO, lOffset: LONG, iOrigin: int32): LONG {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioGetInfo*(hmmio: HMMIO, pmmioinfo: LPMMIOINFO, fuInfo: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioSetInfo*(hmmio: HMMIO, pmmioinfo: LPCMMIOINFO, fuInfo: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioSetBuffer*(hmmio: HMMIO, pchBuffer: LPSTR, cchBuffer: LONG, fuBuffer: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioFlush*(hmmio: HMMIO, fuFlush: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioAdvance*(hmmio: HMMIO, pmmioinfo: LPMMIOINFO, fuAdvance: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioSendMessage*(hmmio: HMMIO, uMsg: UINT, lParam1: LPARAM, lParam2: LPARAM): LRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioDescend*(hmmio: HMMIO, pmmcki: LPMMCKINFO, pmmckiParent: ptr MMCKINFO, fuDescend: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioAscend*(hmmio: HMMIO, pmmcki: LPMMCKINFO, fuAscend: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mmioCreateChunk*(hmmio: HMMIO, pmmcki: LPMMCKINFO, fuCreate: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mciSendCommandA*(mciId: MCIDEVICEID, uMsg: UINT, dwParam1: DWORD_PTR, dwParam2: DWORD_PTR): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mciSendCommandW*(mciId: MCIDEVICEID, uMsg: UINT, dwParam1: DWORD_PTR, dwParam2: DWORD_PTR): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mciSendStringA*(lpstrCommand: LPCSTR, lpstrReturnString: LPSTR, uReturnLength: UINT, hwndCallback: HWND): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mciSendStringW*(lpstrCommand: LPCWSTR, lpstrReturnString: LPWSTR, uReturnLength: UINT, hwndCallback: HWND): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mciGetDeviceIDA*(pszDevice: LPCSTR): MCIDEVICEID {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mciGetDeviceIDW*(pszDevice: LPCWSTR): MCIDEVICEID {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mciGetDeviceIDFromElementIDA*(dwElementID: DWORD, lpstrType: LPCSTR): MCIDEVICEID {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mciGetDeviceIDFromElementIDW*(dwElementID: DWORD, lpstrType: LPCWSTR): MCIDEVICEID {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mciGetErrorStringA*(mcierr: MCIERROR, pszText: LPSTR, cchText: UINT): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mciGetErrorStringW*(mcierr: MCIERROR, pszText: LPWSTR, cchText: UINT): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mciSetYieldProc*(mciId: MCIDEVICEID, fpYieldProc: YIELDPROC, dwYieldData: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mciGetCreatorTask*(mciId: MCIDEVICEID): HTASK {.winapi, stdcall, dynlib: "winmm", importc.}
-proc mciGetYieldProc*(mciId: MCIDEVICEID, pdwYieldData: LPDWORD): YIELDPROC {.winapi, stdcall, dynlib: "winmm", importc.}
-proc `lMinimum=`*(self: var MIXERCONTROLA, x: LONG) {.inline.} = self.Bounds.struct1.lMinimum = x
-proc lMinimum*(self: MIXERCONTROLA): LONG {.inline.} = self.Bounds.struct1.lMinimum
-proc lMinimum*(self: var MIXERCONTROLA): var LONG {.inline.} = self.Bounds.struct1.lMinimum
-proc `lMaximum=`*(self: var MIXERCONTROLA, x: LONG) {.inline.} = self.Bounds.struct1.lMaximum = x
-proc lMaximum*(self: MIXERCONTROLA): LONG {.inline.} = self.Bounds.struct1.lMaximum
-proc lMaximum*(self: var MIXERCONTROLA): var LONG {.inline.} = self.Bounds.struct1.lMaximum
-proc `dwMinimum=`*(self: var MIXERCONTROLA, x: DWORD) {.inline.} = self.Bounds.struct2.dwMinimum = x
-proc dwMinimum*(self: MIXERCONTROLA): DWORD {.inline.} = self.Bounds.struct2.dwMinimum
-proc dwMinimum*(self: var MIXERCONTROLA): var DWORD {.inline.} = self.Bounds.struct2.dwMinimum
-proc `dwMaximum=`*(self: var MIXERCONTROLA, x: DWORD) {.inline.} = self.Bounds.struct2.dwMaximum = x
-proc dwMaximum*(self: MIXERCONTROLA): DWORD {.inline.} = self.Bounds.struct2.dwMaximum
-proc dwMaximum*(self: var MIXERCONTROLA): var DWORD {.inline.} = self.Bounds.struct2.dwMaximum
-proc `lMinimum=`*(self: var MIXERCONTROLW, x: LONG) {.inline.} = self.Bounds.struct1.lMinimum = x
-proc lMinimum*(self: MIXERCONTROLW): LONG {.inline.} = self.Bounds.struct1.lMinimum
-proc lMinimum*(self: var MIXERCONTROLW): var LONG {.inline.} = self.Bounds.struct1.lMinimum
-proc `lMaximum=`*(self: var MIXERCONTROLW, x: LONG) {.inline.} = self.Bounds.struct1.lMaximum = x
-proc lMaximum*(self: MIXERCONTROLW): LONG {.inline.} = self.Bounds.struct1.lMaximum
-proc lMaximum*(self: var MIXERCONTROLW): var LONG {.inline.} = self.Bounds.struct1.lMaximum
-proc `dwMinimum=`*(self: var MIXERCONTROLW, x: DWORD) {.inline.} = self.Bounds.struct2.dwMinimum = x
-proc dwMinimum*(self: MIXERCONTROLW): DWORD {.inline.} = self.Bounds.struct2.dwMinimum
-proc dwMinimum*(self: var MIXERCONTROLW): var DWORD {.inline.} = self.Bounds.struct2.dwMinimum
-proc `dwMaximum=`*(self: var MIXERCONTROLW, x: DWORD) {.inline.} = self.Bounds.struct2.dwMaximum = x
-proc dwMaximum*(self: MIXERCONTROLW): DWORD {.inline.} = self.Bounds.struct2.dwMaximum
-proc dwMaximum*(self: var MIXERCONTROLW): var DWORD {.inline.} = self.Bounds.struct2.dwMaximum
-proc `dwControlID=`*(self: var MIXERLINECONTROLSA, x: DWORD) {.inline.} = self.union1.dwControlID = x
-proc dwControlID*(self: MIXERLINECONTROLSA): DWORD {.inline.} = self.union1.dwControlID
-proc dwControlID*(self: var MIXERLINECONTROLSA): var DWORD {.inline.} = self.union1.dwControlID
-proc `dwControlType=`*(self: var MIXERLINECONTROLSA, x: DWORD) {.inline.} = self.union1.dwControlType = x
-proc dwControlType*(self: MIXERLINECONTROLSA): DWORD {.inline.} = self.union1.dwControlType
-proc dwControlType*(self: var MIXERLINECONTROLSA): var DWORD {.inline.} = self.union1.dwControlType
-proc `dwControlID=`*(self: var MIXERLINECONTROLSW, x: DWORD) {.inline.} = self.union1.dwControlID = x
-proc dwControlID*(self: MIXERLINECONTROLSW): DWORD {.inline.} = self.union1.dwControlID
-proc dwControlID*(self: var MIXERLINECONTROLSW): var DWORD {.inline.} = self.union1.dwControlID
-proc `dwControlType=`*(self: var MIXERLINECONTROLSW, x: DWORD) {.inline.} = self.union1.dwControlType = x
-proc dwControlType*(self: MIXERLINECONTROLSW): DWORD {.inline.} = self.union1.dwControlType
-proc dwControlType*(self: var MIXERLINECONTROLSW): var DWORD {.inline.} = self.union1.dwControlType
-proc `hwndOwner=`*(self: var MIXERCONTROLDETAILS, x: HWND) {.inline.} = self.union1.hwndOwner = x
-proc hwndOwner*(self: MIXERCONTROLDETAILS): HWND {.inline.} = self.union1.hwndOwner
-proc hwndOwner*(self: var MIXERCONTROLDETAILS): var HWND {.inline.} = self.union1.hwndOwner
-proc `cMultipleItems=`*(self: var MIXERCONTROLDETAILS, x: DWORD) {.inline.} = self.union1.cMultipleItems = x
-proc cMultipleItems*(self: MIXERCONTROLDETAILS): DWORD {.inline.} = self.union1.cMultipleItems
-proc cMultipleItems*(self: var MIXERCONTROLDETAILS): var DWORD {.inline.} = self.union1.cMultipleItems
+proc joyGetDevCapsA*(
+  uJoyID: UINT_PTR, pjc: LPJOYCAPSA, cbjc: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc joyGetDevCapsW*(
+  uJoyID: UINT_PTR, pjc: LPJOYCAPSW, cbjc: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc joyGetPos*(
+  uJoyID: UINT, pji: LPJOYINFO
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc joyGetPosEx*(
+  uJoyID: UINT, pji: LPJOYINFOEX
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc joyGetThreshold*(
+  uJoyID: UINT, puThreshold: LPUINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc joyReleaseCapture*(
+  uJoyID: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc joySetCapture*(
+  hwnd: HWND, uJoyID: UINT, uPeriod: UINT, fChanged: WINBOOL
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc joySetThreshold*(
+  uJoyID: UINT, uThreshold: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioStringToFOURCCA*(
+  sz: LPCSTR, uFlags: UINT
+): FOURCC {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioStringToFOURCCW*(
+  sz: LPCWSTR, uFlags: UINT
+): FOURCC {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioInstallIOProcA*(
+  fccIOProc: FOURCC, pIOProc: LPMMIOPROC, dwFlags: DWORD
+): LPMMIOPROC {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioInstallIOProcW*(
+  fccIOProc: FOURCC, pIOProc: LPMMIOPROC, dwFlags: DWORD
+): LPMMIOPROC {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioOpenA*(
+  pszFileName: LPSTR, pmmioinfo: LPMMIOINFO, fdwOpen: DWORD
+): HMMIO {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioOpenW*(
+  pszFileName: LPWSTR, pmmioinfo: LPMMIOINFO, fdwOpen: DWORD
+): HMMIO {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioRenameA*(
+  pszFileName: LPCSTR, pszNewFileName: LPCSTR, pmmioinfo: LPCMMIOINFO, fdwRename: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioRenameW*(
+  pszFileName: LPCWSTR,
+  pszNewFileName: LPCWSTR,
+  pmmioinfo: LPCMMIOINFO,
+  fdwRename: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioClose*(
+  hmmio: HMMIO, fuClose: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioRead*(
+  hmmio: HMMIO, pch: HPSTR, cch: LONG
+): LONG {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioWrite*(
+  hmmio: HMMIO, pch: ptr char, cch: LONG
+): LONG {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioSeek*(
+  hmmio: HMMIO, lOffset: LONG, iOrigin: int32
+): LONG {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioGetInfo*(
+  hmmio: HMMIO, pmmioinfo: LPMMIOINFO, fuInfo: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioSetInfo*(
+  hmmio: HMMIO, pmmioinfo: LPCMMIOINFO, fuInfo: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioSetBuffer*(
+  hmmio: HMMIO, pchBuffer: LPSTR, cchBuffer: LONG, fuBuffer: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioFlush*(
+  hmmio: HMMIO, fuFlush: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioAdvance*(
+  hmmio: HMMIO, pmmioinfo: LPMMIOINFO, fuAdvance: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioSendMessage*(
+  hmmio: HMMIO, uMsg: UINT, lParam1: LPARAM, lParam2: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioDescend*(
+  hmmio: HMMIO, pmmcki: LPMMCKINFO, pmmckiParent: ptr MMCKINFO, fuDescend: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioAscend*(
+  hmmio: HMMIO, pmmcki: LPMMCKINFO, fuAscend: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mmioCreateChunk*(
+  hmmio: HMMIO, pmmcki: LPMMCKINFO, fuCreate: UINT
+): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mciSendCommandA*(
+  mciId: MCIDEVICEID, uMsg: UINT, dwParam1: DWORD_PTR, dwParam2: DWORD_PTR
+): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mciSendCommandW*(
+  mciId: MCIDEVICEID, uMsg: UINT, dwParam1: DWORD_PTR, dwParam2: DWORD_PTR
+): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mciSendStringA*(
+  lpstrCommand: LPCSTR,
+  lpstrReturnString: LPSTR,
+  uReturnLength: UINT,
+  hwndCallback: HWND,
+): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mciSendStringW*(
+  lpstrCommand: LPCWSTR,
+  lpstrReturnString: LPWSTR,
+  uReturnLength: UINT,
+  hwndCallback: HWND,
+): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mciGetDeviceIDA*(
+  pszDevice: LPCSTR
+): MCIDEVICEID {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mciGetDeviceIDW*(
+  pszDevice: LPCWSTR
+): MCIDEVICEID {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mciGetDeviceIDFromElementIDA*(
+  dwElementID: DWORD, lpstrType: LPCSTR
+): MCIDEVICEID {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mciGetDeviceIDFromElementIDW*(
+  dwElementID: DWORD, lpstrType: LPCWSTR
+): MCIDEVICEID {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mciGetErrorStringA*(
+  mcierr: MCIERROR, pszText: LPSTR, cchText: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mciGetErrorStringW*(
+  mcierr: MCIERROR, pszText: LPWSTR, cchText: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mciSetYieldProc*(
+  mciId: MCIDEVICEID, fpYieldProc: YIELDPROC, dwYieldData: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mciGetCreatorTask*(
+  mciId: MCIDEVICEID
+): HTASK {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc mciGetYieldProc*(
+  mciId: MCIDEVICEID, pdwYieldData: LPDWORD
+): YIELDPROC {.winapi, stdcall, dynlib: "winmm", importc.}
+
+proc `lMinimum=`*(self: var MIXERCONTROLA, x: LONG) {.inline.} =
+  self.Bounds.struct1.lMinimum = x
+
+proc lMinimum*(self: MIXERCONTROLA): LONG {.inline.} =
+  self.Bounds.struct1.lMinimum
+
+proc lMinimum*(self: var MIXERCONTROLA): var LONG {.inline.} =
+  self.Bounds.struct1.lMinimum
+
+proc `lMaximum=`*(self: var MIXERCONTROLA, x: LONG) {.inline.} =
+  self.Bounds.struct1.lMaximum = x
+
+proc lMaximum*(self: MIXERCONTROLA): LONG {.inline.} =
+  self.Bounds.struct1.lMaximum
+
+proc lMaximum*(self: var MIXERCONTROLA): var LONG {.inline.} =
+  self.Bounds.struct1.lMaximum
+
+proc `dwMinimum=`*(self: var MIXERCONTROLA, x: DWORD) {.inline.} =
+  self.Bounds.struct2.dwMinimum = x
+
+proc dwMinimum*(self: MIXERCONTROLA): DWORD {.inline.} =
+  self.Bounds.struct2.dwMinimum
+
+proc dwMinimum*(self: var MIXERCONTROLA): var DWORD {.inline.} =
+  self.Bounds.struct2.dwMinimum
+
+proc `dwMaximum=`*(self: var MIXERCONTROLA, x: DWORD) {.inline.} =
+  self.Bounds.struct2.dwMaximum = x
+
+proc dwMaximum*(self: MIXERCONTROLA): DWORD {.inline.} =
+  self.Bounds.struct2.dwMaximum
+
+proc dwMaximum*(self: var MIXERCONTROLA): var DWORD {.inline.} =
+  self.Bounds.struct2.dwMaximum
+
+proc `lMinimum=`*(self: var MIXERCONTROLW, x: LONG) {.inline.} =
+  self.Bounds.struct1.lMinimum = x
+
+proc lMinimum*(self: MIXERCONTROLW): LONG {.inline.} =
+  self.Bounds.struct1.lMinimum
+
+proc lMinimum*(self: var MIXERCONTROLW): var LONG {.inline.} =
+  self.Bounds.struct1.lMinimum
+
+proc `lMaximum=`*(self: var MIXERCONTROLW, x: LONG) {.inline.} =
+  self.Bounds.struct1.lMaximum = x
+
+proc lMaximum*(self: MIXERCONTROLW): LONG {.inline.} =
+  self.Bounds.struct1.lMaximum
+
+proc lMaximum*(self: var MIXERCONTROLW): var LONG {.inline.} =
+  self.Bounds.struct1.lMaximum
+
+proc `dwMinimum=`*(self: var MIXERCONTROLW, x: DWORD) {.inline.} =
+  self.Bounds.struct2.dwMinimum = x
+
+proc dwMinimum*(self: MIXERCONTROLW): DWORD {.inline.} =
+  self.Bounds.struct2.dwMinimum
+
+proc dwMinimum*(self: var MIXERCONTROLW): var DWORD {.inline.} =
+  self.Bounds.struct2.dwMinimum
+
+proc `dwMaximum=`*(self: var MIXERCONTROLW, x: DWORD) {.inline.} =
+  self.Bounds.struct2.dwMaximum = x
+
+proc dwMaximum*(self: MIXERCONTROLW): DWORD {.inline.} =
+  self.Bounds.struct2.dwMaximum
+
+proc dwMaximum*(self: var MIXERCONTROLW): var DWORD {.inline.} =
+  self.Bounds.struct2.dwMaximum
+
+proc `dwControlID=`*(self: var MIXERLINECONTROLSA, x: DWORD) {.inline.} =
+  self.union1.dwControlID = x
+
+proc dwControlID*(self: MIXERLINECONTROLSA): DWORD {.inline.} =
+  self.union1.dwControlID
+
+proc dwControlID*(self: var MIXERLINECONTROLSA): var DWORD {.inline.} =
+  self.union1.dwControlID
+
+proc `dwControlType=`*(self: var MIXERLINECONTROLSA, x: DWORD) {.inline.} =
+  self.union1.dwControlType = x
+
+proc dwControlType*(self: MIXERLINECONTROLSA): DWORD {.inline.} =
+  self.union1.dwControlType
+
+proc dwControlType*(self: var MIXERLINECONTROLSA): var DWORD {.inline.} =
+  self.union1.dwControlType
+
+proc `dwControlID=`*(self: var MIXERLINECONTROLSW, x: DWORD) {.inline.} =
+  self.union1.dwControlID = x
+
+proc dwControlID*(self: MIXERLINECONTROLSW): DWORD {.inline.} =
+  self.union1.dwControlID
+
+proc dwControlID*(self: var MIXERLINECONTROLSW): var DWORD {.inline.} =
+  self.union1.dwControlID
+
+proc `dwControlType=`*(self: var MIXERLINECONTROLSW, x: DWORD) {.inline.} =
+  self.union1.dwControlType = x
+
+proc dwControlType*(self: MIXERLINECONTROLSW): DWORD {.inline.} =
+  self.union1.dwControlType
+
+proc dwControlType*(self: var MIXERLINECONTROLSW): var DWORD {.inline.} =
+  self.union1.dwControlType
+
+proc `hwndOwner=`*(self: var MIXERCONTROLDETAILS, x: HWND) {.inline.} =
+  self.union1.hwndOwner = x
+
+proc hwndOwner*(self: MIXERCONTROLDETAILS): HWND {.inline.} =
+  self.union1.hwndOwner
+
+proc hwndOwner*(self: var MIXERCONTROLDETAILS): var HWND {.inline.} =
+  self.union1.hwndOwner
+
+proc `cMultipleItems=`*(self: var MIXERCONTROLDETAILS, x: DWORD) {.inline.} =
+  self.union1.cMultipleItems = x
+
+proc cMultipleItems*(self: MIXERCONTROLDETAILS): DWORD {.inline.} =
+  self.union1.cMultipleItems
+
+proc cMultipleItems*(self: var MIXERCONTROLDETAILS): var DWORD {.inline.} =
+  self.union1.cMultipleItems
+
 when winimUnicode:
   type
     WAVEOUTCAPS* = WAVEOUTCAPSW
@@ -4584,31 +5357,115 @@
     MCI_OVLY_LOAD_PARMS* = MCI_OVLY_LOAD_PARMSW
     PMCI_OVLY_LOAD_PARMS* = PMCI_OVLY_LOAD_PARMSW
     LPMCI_OVLY_LOAD_PARMS* = LPMCI_OVLY_LOAD_PARMSW
-  proc sndPlaySound*(pszSound: LPCWSTR, fuSound: UINT): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc: "sndPlaySoundW".}
-  proc PlaySound*(pszSound: LPCWSTR, hmod: HMODULE, fdwSound: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc: "PlaySoundW".}
-  proc waveOutGetDevCaps*(uDeviceID: UINT_PTR, pwoc: LPWAVEOUTCAPSW, cbwoc: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveOutGetDevCapsW".}
-  proc waveOutGetErrorText*(mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveOutGetErrorTextW".}
-  proc waveInGetDevCaps*(uDeviceID: UINT_PTR, pwic: LPWAVEINCAPSW, cbwic: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveInGetDevCapsW".}
-  proc waveInGetErrorText*(mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveInGetErrorTextW".}
-  proc midiOutGetDevCaps*(uDeviceID: UINT_PTR, pmoc: LPMIDIOUTCAPSW, cbmoc: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiOutGetDevCapsW".}
-  proc midiOutGetErrorText*(mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiOutGetErrorTextW".}
-  proc midiInGetDevCaps*(uDeviceID: UINT_PTR, pmic: LPMIDIINCAPSW, cbmic: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiInGetDevCapsW".}
-  proc midiInGetErrorText*(mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiInGetErrorTextW".}
-  proc auxGetDevCaps*(uDeviceID: UINT_PTR, pac: LPAUXCAPSW, cbac: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "auxGetDevCapsW".}
-  proc mixerGetDevCaps*(uMxId: UINT_PTR, pmxcaps: LPMIXERCAPSW, cbmxcaps: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetDevCapsW".}
-  proc mixerGetLineInfo*(hmxobj: HMIXEROBJ, pmxl: LPMIXERLINEW, fdwInfo: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetLineInfoW".}
-  proc mixerGetLineControls*(hmxobj: HMIXEROBJ, pmxlc: LPMIXERLINECONTROLSW, fdwControls: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetLineControlsW".}
-  proc mixerGetControlDetails*(hmxobj: HMIXEROBJ, pmxcd: LPMIXERCONTROLDETAILS, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetControlDetailsW".}
-  proc joyGetDevCaps*(uJoyID: UINT_PTR, pjc: LPJOYCAPSW, cbjc: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "joyGetDevCapsW".}
-  proc mmioStringToFOURCC*(sz: LPCWSTR, uFlags: UINT): FOURCC {.winapi, stdcall, dynlib: "winmm", importc: "mmioStringToFOURCCW".}
-  proc mmioInstallIOProc*(fccIOProc: FOURCC, pIOProc: LPMMIOPROC, dwFlags: DWORD): LPMMIOPROC {.winapi, stdcall, dynlib: "winmm", importc: "mmioInstallIOProcW".}
-  proc mmioOpen*(pszFileName: LPWSTR, pmmioinfo: LPMMIOINFO, fdwOpen: DWORD): HMMIO {.winapi, stdcall, dynlib: "winmm", importc: "mmioOpenW".}
-  proc mmioRename*(pszFileName: LPCWSTR, pszNewFileName: LPCWSTR, pmmioinfo: LPCMMIOINFO, fdwRename: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mmioRenameW".}
-  proc mciSendCommand*(mciId: MCIDEVICEID, uMsg: UINT, dwParam1: DWORD_PTR, dwParam2: DWORD_PTR): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc: "mciSendCommandW".}
-  proc mciSendString*(lpstrCommand: LPCWSTR, lpstrReturnString: LPWSTR, uReturnLength: UINT, hwndCallback: HWND): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc: "mciSendStringW".}
-  proc mciGetDeviceID*(pszDevice: LPCWSTR): MCIDEVICEID {.winapi, stdcall, dynlib: "winmm", importc: "mciGetDeviceIDW".}
-  proc mciGetDeviceIDFromElementID*(dwElementID: DWORD, lpstrType: LPCWSTR): MCIDEVICEID {.winapi, stdcall, dynlib: "winmm", importc: "mciGetDeviceIDFromElementIDW".}
-  proc mciGetErrorString*(mcierr: MCIERROR, pszText: LPWSTR, cchText: UINT): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc: "mciGetErrorStringW".}
+
+  proc sndPlaySound*(
+    pszSound: LPCWSTR, fuSound: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc: "sndPlaySoundW".}
+
+  proc PlaySound*(
+    pszSound: LPCWSTR, hmod: HMODULE, fdwSound: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc: "PlaySoundW".}
+
+  proc waveOutGetDevCaps*(
+    uDeviceID: UINT_PTR, pwoc: LPWAVEOUTCAPSW, cbwoc: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveOutGetDevCapsW".}
+
+  proc waveOutGetErrorText*(
+    mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveOutGetErrorTextW".}
+
+  proc waveInGetDevCaps*(
+    uDeviceID: UINT_PTR, pwic: LPWAVEINCAPSW, cbwic: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveInGetDevCapsW".}
+
+  proc waveInGetErrorText*(
+    mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveInGetErrorTextW".}
+
+  proc midiOutGetDevCaps*(
+    uDeviceID: UINT_PTR, pmoc: LPMIDIOUTCAPSW, cbmoc: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiOutGetDevCapsW".}
+
+  proc midiOutGetErrorText*(
+    mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiOutGetErrorTextW".}
+
+  proc midiInGetDevCaps*(
+    uDeviceID: UINT_PTR, pmic: LPMIDIINCAPSW, cbmic: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiInGetDevCapsW".}
+
+  proc midiInGetErrorText*(
+    mmrError: MMRESULT, pszText: LPWSTR, cchText: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiInGetErrorTextW".}
+
+  proc auxGetDevCaps*(
+    uDeviceID: UINT_PTR, pac: LPAUXCAPSW, cbac: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "auxGetDevCapsW".}
+
+  proc mixerGetDevCaps*(
+    uMxId: UINT_PTR, pmxcaps: LPMIXERCAPSW, cbmxcaps: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetDevCapsW".}
+
+  proc mixerGetLineInfo*(
+    hmxobj: HMIXEROBJ, pmxl: LPMIXERLINEW, fdwInfo: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetLineInfoW".}
+
+  proc mixerGetLineControls*(
+    hmxobj: HMIXEROBJ, pmxlc: LPMIXERLINECONTROLSW, fdwControls: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetLineControlsW".}
+
+  proc mixerGetControlDetails*(
+    hmxobj: HMIXEROBJ, pmxcd: LPMIXERCONTROLDETAILS, fdwDetails: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetControlDetailsW".}
+
+  proc joyGetDevCaps*(
+    uJoyID: UINT_PTR, pjc: LPJOYCAPSW, cbjc: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "joyGetDevCapsW".}
+
+  proc mmioStringToFOURCC*(
+    sz: LPCWSTR, uFlags: UINT
+  ): FOURCC {.winapi, stdcall, dynlib: "winmm", importc: "mmioStringToFOURCCW".}
+
+  proc mmioInstallIOProc*(
+    fccIOProc: FOURCC, pIOProc: LPMMIOPROC, dwFlags: DWORD
+  ): LPMMIOPROC {.winapi, stdcall, dynlib: "winmm", importc: "mmioInstallIOProcW".}
+
+  proc mmioOpen*(
+    pszFileName: LPWSTR, pmmioinfo: LPMMIOINFO, fdwOpen: DWORD
+  ): HMMIO {.winapi, stdcall, dynlib: "winmm", importc: "mmioOpenW".}
+
+  proc mmioRename*(
+    pszFileName: LPCWSTR,
+    pszNewFileName: LPCWSTR,
+    pmmioinfo: LPCMMIOINFO,
+    fdwRename: DWORD,
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mmioRenameW".}
+
+  proc mciSendCommand*(
+    mciId: MCIDEVICEID, uMsg: UINT, dwParam1: DWORD_PTR, dwParam2: DWORD_PTR
+  ): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc: "mciSendCommandW".}
+
+  proc mciSendString*(
+    lpstrCommand: LPCWSTR,
+    lpstrReturnString: LPWSTR,
+    uReturnLength: UINT,
+    hwndCallback: HWND,
+  ): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc: "mciSendStringW".}
+
+  proc mciGetDeviceID*(
+    pszDevice: LPCWSTR
+  ): MCIDEVICEID {.winapi, stdcall, dynlib: "winmm", importc: "mciGetDeviceIDW".}
+
+  proc mciGetDeviceIDFromElementID*(
+    dwElementID: DWORD, lpstrType: LPCWSTR
+  ): MCIDEVICEID {.
+    winapi, stdcall, dynlib: "winmm", importc: "mciGetDeviceIDFromElementIDW"
+  .}
+
+  proc mciGetErrorString*(
+    mcierr: MCIERROR, pszText: LPWSTR, cchText: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc: "mciGetErrorStringW".}
+
 when winimAnsi:
   type
     WAVEOUTCAPS* = WAVEOUTCAPSA
@@ -4715,28 +5572,111 @@
     MCI_OVLY_LOAD_PARMS* = MCI_OVLY_LOAD_PARMSA
     PMCI_OVLY_LOAD_PARMS* = PMCI_OVLY_LOAD_PARMSA
     LPMCI_OVLY_LOAD_PARMS* = LPMCI_OVLY_LOAD_PARMSA
-  proc sndPlaySound*(pszSound: LPCSTR, fuSound: UINT): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc: "sndPlaySoundA".}
-  proc PlaySound*(pszSound: LPCSTR, hmod: HMODULE, fdwSound: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc: "PlaySoundA".}
-  proc waveOutGetDevCaps*(uDeviceID: UINT_PTR, pwoc: LPWAVEOUTCAPSA, cbwoc: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveOutGetDevCapsA".}
-  proc waveOutGetErrorText*(mmrError: MMRESULT, pszText: LPSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveOutGetErrorTextA".}
-  proc waveInGetDevCaps*(uDeviceID: UINT_PTR, pwic: LPWAVEINCAPSA, cbwic: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveInGetDevCapsA".}
-  proc waveInGetErrorText*(mmrError: MMRESULT, pszText: LPSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveInGetErrorTextA".}
-  proc midiOutGetDevCaps*(uDeviceID: UINT_PTR, pmoc: LPMIDIOUTCAPSA, cbmoc: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiOutGetDevCapsA".}
-  proc midiOutGetErrorText*(mmrError: MMRESULT, pszText: LPSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiOutGetErrorTextA".}
-  proc midiInGetDevCaps*(uDeviceID: UINT_PTR, pmic: LPMIDIINCAPSA, cbmic: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiInGetDevCapsA".}
-  proc midiInGetErrorText*(mmrError: MMRESULT, pszText: LPSTR, cchText: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiInGetErrorTextA".}
-  proc auxGetDevCaps*(uDeviceID: UINT_PTR, pac: LPAUXCAPSA, cbac: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "auxGetDevCapsA".}
-  proc mixerGetDevCaps*(uMxId: UINT_PTR, pmxcaps: LPMIXERCAPSA, cbmxcaps: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetDevCapsA".}
-  proc mixerGetLineInfo*(hmxobj: HMIXEROBJ, pmxl: LPMIXERLINEA, fdwInfo: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetLineInfoA".}
-  proc mixerGetLineControls*(hmxobj: HMIXEROBJ, pmxlc: LPMIXERLINECONTROLSA, fdwControls: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetLineControlsA".}
-  proc mixerGetControlDetails*(hmxobj: HMIXEROBJ, pmxcd: LPMIXERCONTROLDETAILS, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetControlDetailsA".}
-  proc joyGetDevCaps*(uJoyID: UINT_PTR, pjc: LPJOYCAPSA, cbjc: UINT): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "joyGetDevCapsA".}
-  proc mmioStringToFOURCC*(sz: LPCSTR, uFlags: UINT): FOURCC {.winapi, stdcall, dynlib: "winmm", importc: "mmioStringToFOURCCA".}
-  proc mmioInstallIOProc*(fccIOProc: FOURCC, pIOProc: LPMMIOPROC, dwFlags: DWORD): LPMMIOPROC {.winapi, stdcall, dynlib: "winmm", importc: "mmioInstallIOProcA".}
-  proc mmioOpen*(pszFileName: LPSTR, pmmioinfo: LPMMIOINFO, fdwOpen: DWORD): HMMIO {.winapi, stdcall, dynlib: "winmm", importc: "mmioOpenA".}
-  proc mmioRename*(pszFileName: LPCSTR, pszNewFileName: LPCSTR, pmmioinfo: LPCMMIOINFO, fdwRename: DWORD): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mmioRenameA".}
-  proc mciSendCommand*(mciId: MCIDEVICEID, uMsg: UINT, dwParam1: DWORD_PTR, dwParam2: DWORD_PTR): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc: "mciSendCommandA".}
-  proc mciSendString*(lpstrCommand: LPCSTR, lpstrReturnString: LPSTR, uReturnLength: UINT, hwndCallback: HWND): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc: "mciSendStringA".}
-  proc mciGetDeviceID*(pszDevice: LPCSTR): MCIDEVICEID {.winapi, stdcall, dynlib: "winmm", importc: "mciGetDeviceIDA".}
-  proc mciGetDeviceIDFromElementID*(dwElementID: DWORD, lpstrType: LPCSTR): MCIDEVICEID {.winapi, stdcall, dynlib: "winmm", importc: "mciGetDeviceIDFromElementIDA".}
-  proc mciGetErrorString*(mcierr: MCIERROR, pszText: LPSTR, cchText: UINT): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc: "mciGetErrorStringA".}
+
+  proc sndPlaySound*(
+    pszSound: LPCSTR, fuSound: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc: "sndPlaySoundA".}
+
+  proc PlaySound*(
+    pszSound: LPCSTR, hmod: HMODULE, fdwSound: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc: "PlaySoundA".}
+
+  proc waveOutGetDevCaps*(
+    uDeviceID: UINT_PTR, pwoc: LPWAVEOUTCAPSA, cbwoc: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveOutGetDevCapsA".}
+
+  proc waveOutGetErrorText*(
+    mmrError: MMRESULT, pszText: LPSTR, cchText: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveOutGetErrorTextA".}
+
+  proc waveInGetDevCaps*(
+    uDeviceID: UINT_PTR, pwic: LPWAVEINCAPSA, cbwic: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveInGetDevCapsA".}
+
+  proc waveInGetErrorText*(
+    mmrError: MMRESULT, pszText: LPSTR, cchText: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "waveInGetErrorTextA".}
+
+  proc midiOutGetDevCaps*(
+    uDeviceID: UINT_PTR, pmoc: LPMIDIOUTCAPSA, cbmoc: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiOutGetDevCapsA".}
+
+  proc midiOutGetErrorText*(
+    mmrError: MMRESULT, pszText: LPSTR, cchText: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiOutGetErrorTextA".}
+
+  proc midiInGetDevCaps*(
+    uDeviceID: UINT_PTR, pmic: LPMIDIINCAPSA, cbmic: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiInGetDevCapsA".}
+
+  proc midiInGetErrorText*(
+    mmrError: MMRESULT, pszText: LPSTR, cchText: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "midiInGetErrorTextA".}
+
+  proc auxGetDevCaps*(
+    uDeviceID: UINT_PTR, pac: LPAUXCAPSA, cbac: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "auxGetDevCapsA".}
+
+  proc mixerGetDevCaps*(
+    uMxId: UINT_PTR, pmxcaps: LPMIXERCAPSA, cbmxcaps: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetDevCapsA".}
+
+  proc mixerGetLineInfo*(
+    hmxobj: HMIXEROBJ, pmxl: LPMIXERLINEA, fdwInfo: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetLineInfoA".}
+
+  proc mixerGetLineControls*(
+    hmxobj: HMIXEROBJ, pmxlc: LPMIXERLINECONTROLSA, fdwControls: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetLineControlsA".}
+
+  proc mixerGetControlDetails*(
+    hmxobj: HMIXEROBJ, pmxcd: LPMIXERCONTROLDETAILS, fdwDetails: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mixerGetControlDetailsA".}
+
+  proc joyGetDevCaps*(
+    uJoyID: UINT_PTR, pjc: LPJOYCAPSA, cbjc: UINT
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "joyGetDevCapsA".}
+
+  proc mmioStringToFOURCC*(
+    sz: LPCSTR, uFlags: UINT
+  ): FOURCC {.winapi, stdcall, dynlib: "winmm", importc: "mmioStringToFOURCCA".}
+
+  proc mmioInstallIOProc*(
+    fccIOProc: FOURCC, pIOProc: LPMMIOPROC, dwFlags: DWORD
+  ): LPMMIOPROC {.winapi, stdcall, dynlib: "winmm", importc: "mmioInstallIOProcA".}
+
+  proc mmioOpen*(
+    pszFileName: LPSTR, pmmioinfo: LPMMIOINFO, fdwOpen: DWORD
+  ): HMMIO {.winapi, stdcall, dynlib: "winmm", importc: "mmioOpenA".}
+
+  proc mmioRename*(
+    pszFileName: LPCSTR,
+    pszNewFileName: LPCSTR,
+    pmmioinfo: LPCMMIOINFO,
+    fdwRename: DWORD,
+  ): MMRESULT {.winapi, stdcall, dynlib: "winmm", importc: "mmioRenameA".}
+
+  proc mciSendCommand*(
+    mciId: MCIDEVICEID, uMsg: UINT, dwParam1: DWORD_PTR, dwParam2: DWORD_PTR
+  ): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc: "mciSendCommandA".}
+
+  proc mciSendString*(
+    lpstrCommand: LPCSTR,
+    lpstrReturnString: LPSTR,
+    uReturnLength: UINT,
+    hwndCallback: HWND,
+  ): MCIERROR {.winapi, stdcall, dynlib: "winmm", importc: "mciSendStringA".}
+
+  proc mciGetDeviceID*(
+    pszDevice: LPCSTR
+  ): MCIDEVICEID {.winapi, stdcall, dynlib: "winmm", importc: "mciGetDeviceIDA".}
+
+  proc mciGetDeviceIDFromElementID*(
+    dwElementID: DWORD, lpstrType: LPCSTR
+  ): MCIDEVICEID {.
+    winapi, stdcall, dynlib: "winmm", importc: "mciGetDeviceIDFromElementIDA"
+  .}
+
+  proc mciGetErrorString*(
+    mcierr: MCIERROR, pszText: LPSTR, cchText: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "winmm", importc: "mciGetErrorStringA".}
--- a/semicongine/thirdparty/winim/winim/inc/mscoree.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/mscoree.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -69,9 +69,11 @@
     item1_data*: ptr int32
     item2_flags*: int32
     item2_data*: ptr int32
+
   VEContext* = VerError
   TASKID* = UINT64
   POBJECT* = ptr object
+
 const
   COR_GC_COUNTS* = 0x1
   COR_GC_MEMORYUSAGE* = 0x2
@@ -124,7 +126,8 @@
   IID_IHostManualEvent* = DEFINE_GUID("1bf4ec38-affe-4fb9-85a6-525268f15b54")
   IID_IHostSemaphore* = DEFINE_GUID("855efd47-cc09-463a-a97d-16acab882661")
   IID_ICLRSyncManager* = DEFINE_GUID("55ff199d-ad21-48f9-a16c-f24ebbb8727d")
-  IID_ICLRAppDomainResourceMonitor* = DEFINE_GUID("c62de18c-2e23-4aea-8423-b40c1fc59eae")
+  IID_ICLRAppDomainResourceMonitor* =
+    DEFINE_GUID("c62de18c-2e23-4aea-8423-b40c1fc59eae")
   IID_ICLRPolicyManager* = DEFINE_GUID("7d290010-d781-45da-a6f8-aa5d711a730e")
   IID_ICLRGCManager* = DEFINE_GUID("54d9007e-a8e2-4885-b7bf-f998deee4f2a")
   IID_ICLRGCManager2* = DEFINE_GUID("0603b793-a97a-4712-9cb4-0cd1c74c0f7c")
@@ -145,7 +148,8 @@
   IID_ICLRAssemblyReferenceList* = DEFINE_GUID("1b2c9750-2e66-4bda-8b44-0a642c5cd733")
   IID_ICLRReferenceAssemblyEnum* = DEFINE_GUID("d509cb5d-cf32-4876-ae61-67770cf91973")
   IID_ICLRProbingAssemblyEnum* = DEFINE_GUID("d0c5fb1f-416b-4f97-81f4-7ac7dc24dd5d")
-  IID_ICLRHostBindingPolicyManager* = DEFINE_GUID("4b3545e7-1856-48c9-a8ba-24b21a753c09")
+  IID_ICLRHostBindingPolicyManager* =
+    DEFINE_GUID("4b3545e7-1856-48c9-a8ba-24b21a753c09")
   IID_ITypeNameBuilder* = DEFINE_GUID("b81ff171-20f3-11d2-8dcc-00a0c9b00523")
   IID_ITypeNameFactory* = DEFINE_GUID("b81ff171-20f3-11d2-8dcc-00a0c9b00521")
   HOST_TYPE_DEFAULT* = 0
@@ -196,7 +200,8 @@
   WAIT_MSGPUMP* = 0x1
   WAIT_ALERTABLE* = 0x2
   WAIT_NOTINDEADLOCK* = 0x4
-  IID_ICLRMemoryNotificationCallback* = DEFINE_GUID("47eb8e57-0846-4546-af76-6f42fcfc2649")
+  IID_ICLRMemoryNotificationCallback* =
+    DEFINE_GUID("47eb8e57-0846-4546-af76-6f42fcfc2649")
   MALLOC_THREADSAFE* = 0x1
   MALLOC_EXECUTABLE* = 0x2
   TT_DEBUGGERHELPER* = 0x1
@@ -221,52 +226,52 @@
   bucketParamsCount* = 10
   bucketParamLength* = 255
   parameter1* = 0
-  parameter2* = parameter1+1
-  parameter3* = parameter2+1
-  parameter4* = parameter3+1
-  parameter5* = parameter4+1
-  parameter6* = parameter5+1
-  parameter7* = parameter6+1
-  parameter8* = parameter7+1
-  parameter9* = parameter8+1
-  invalidBucketParamIndex* = parameter9+1
+  parameter2* = parameter1 + 1
+  parameter3* = parameter2 + 1
+  parameter4* = parameter3 + 1
+  parameter5* = parameter4 + 1
+  parameter6* = parameter5 + 1
+  parameter7* = parameter6 + 1
+  parameter8* = parameter7 + 1
+  parameter9* = parameter8 + 1
+  invalidBucketParamIndex* = parameter9 + 1
   OPR_ThreadAbort* = 0
-  OPR_ThreadRudeAbortInNonCriticalRegion* = OPR_ThreadAbort+1
-  OPR_ThreadRudeAbortInCriticalRegion* = OPR_ThreadRudeAbortInNonCriticalRegion+1
-  OPR_AppDomainUnload* = OPR_ThreadRudeAbortInCriticalRegion+1
-  OPR_AppDomainRudeUnload* = OPR_AppDomainUnload+1
-  OPR_ProcessExit* = OPR_AppDomainRudeUnload+1
-  OPR_FinalizerRun* = OPR_ProcessExit+1
-  maxClrOperation* = OPR_FinalizerRun+1
+  OPR_ThreadRudeAbortInNonCriticalRegion* = OPR_ThreadAbort + 1
+  OPR_ThreadRudeAbortInCriticalRegion* = OPR_ThreadRudeAbortInNonCriticalRegion + 1
+  OPR_AppDomainUnload* = OPR_ThreadRudeAbortInCriticalRegion + 1
+  OPR_AppDomainRudeUnload* = OPR_AppDomainUnload + 1
+  OPR_ProcessExit* = OPR_AppDomainRudeUnload + 1
+  OPR_FinalizerRun* = OPR_ProcessExit + 1
+  maxClrOperation* = OPR_FinalizerRun + 1
   FAIL_NonCriticalResource* = 0
-  FAIL_CriticalResource* = FAIL_NonCriticalResource+1
-  FAIL_FatalRuntime* = FAIL_CriticalResource+1
-  FAIL_OrphanedLock* = FAIL_FatalRuntime+1
-  FAIL_StackOverflow* = FAIL_OrphanedLock+1
-  FAIL_AccessViolation* = FAIL_StackOverflow+1
-  FAIL_CodeContract* = FAIL_AccessViolation+1
-  maxClrFailure* = FAIL_CodeContract+1
+  FAIL_CriticalResource* = FAIL_NonCriticalResource + 1
+  FAIL_FatalRuntime* = FAIL_CriticalResource + 1
+  FAIL_OrphanedLock* = FAIL_FatalRuntime + 1
+  FAIL_StackOverflow* = FAIL_OrphanedLock + 1
+  FAIL_AccessViolation* = FAIL_StackOverflow + 1
+  FAIL_CodeContract* = FAIL_AccessViolation + 1
+  maxClrFailure* = FAIL_CodeContract + 1
   eRuntimeDeterminedPolicy* = 0
-  eHostDeterminedPolicy* = eRuntimeDeterminedPolicy+1
+  eHostDeterminedPolicy* = eRuntimeDeterminedPolicy + 1
   eNoAction* = 0
-  eThrowException* = eNoAction+1
-  eAbortThread* = eThrowException+1
-  eRudeAbortThread* = eAbortThread+1
-  eUnloadAppDomain* = eRudeAbortThread+1
-  eRudeUnloadAppDomain* = eUnloadAppDomain+1
-  eExitProcess* = eRudeUnloadAppDomain+1
-  eFastExitProcess* = eExitProcess+1
-  eRudeExitProcess* = eFastExitProcess+1
-  eDisableRuntime* = eRudeExitProcess+1
-  maxPolicyAction* = eDisableRuntime+1
+  eThrowException* = eNoAction + 1
+  eAbortThread* = eThrowException + 1
+  eRudeAbortThread* = eAbortThread + 1
+  eUnloadAppDomain* = eRudeAbortThread + 1
+  eRudeUnloadAppDomain* = eUnloadAppDomain + 1
+  eExitProcess* = eRudeUnloadAppDomain + 1
+  eFastExitProcess* = eExitProcess + 1
+  eRudeExitProcess* = eFastExitProcess + 1
+  eDisableRuntime* = eRudeExitProcess + 1
+  maxPolicyAction* = eDisableRuntime + 1
   Event_DomainUnload* = 0
-  Event_ClrDisabled* = Event_DomainUnload+1
-  Event_MDAFired* = Event_ClrDisabled+1
-  Event_StackOverflow* = Event_MDAFired+1
-  maxClrEvent* = Event_StackOverflow+1
+  Event_ClrDisabled* = Event_DomainUnload + 1
+  Event_MDAFired* = Event_ClrDisabled + 1
+  Event_StackOverflow* = Event_MDAFired + 1
+  maxClrEvent* = Event_StackOverflow + 1
   SO_Managed* = 0
-  SO_ClrEngine* = SO_Managed+1
-  SO_Other* = SO_ClrEngine+1
+  SO_ClrEngine* = SO_Managed + 1
+  SO_Other* = SO_ClrEngine + 1
   CLR_ASSEMBLY_IDENTITY_FLAGS_DEFAULT* = 0
   HOST_BINDING_POLICY_MODIFY_DEFAULT* = 0
   HOST_BINDING_POLICY_MODIFY_CHAIN* = 1
@@ -312,7 +317,8 @@
   CLSID_CLRDebuggingLegacy* = DEFINE_GUID("df8395b5-a4ba-450b-a77c-a9a47762c520")
   CLSID_CLRProfiling* = DEFINE_GUID("bd097ed8-733e-43fe-8ed7-a95ff9a8448c")
   IID_ICLRProfiling* = DEFINE_GUID("b349abe3-b56f-4689-bfcd-76bf39d888ea")
-  IID_ICLRDebuggingLibraryProvider* = DEFINE_GUID("3151c08d-4d09-4f9b-8838-2880bf18fe51")
+  IID_ICLRDebuggingLibraryProvider* =
+    DEFINE_GUID("3151c08d-4d09-4f9b-8838-2880bf18fe51")
   METAHOST_POLICY_HIGHCOMPAT* = 0
   METAHOST_POLICY_APPLY_UPGRADE_POLICY* = 0x8
   METAHOST_POLICY_EMULATE_EXE_LAUNCH* = 0x10
@@ -407,33 +413,70 @@
   CallingConventions_ExplicitThis* = 64
   IID_IMethodInfo* = DEFINE_GUID("ffcc1b5d-ecb8-38dd-9b01-3dc8abc2aa5f")
 type
-  FLockClrVersionCallback* = proc (): HRESULT {.stdcall.}
-  FExecuteInAppDomainCallback* = proc (cookie: pointer): HRESULT {.stdcall.}
-  PTLS_CALLBACK_FUNCTION* = proc (MIDL_itf_mscoree_0000_00040005: PVOID): VOID {.stdcall.}
-  CLRCreateInstanceFnPtr* = proc (clsid: REFCLSID, riid: REFIID, ppInterface: ptr LPVOID): HRESULT {.stdcall.}
-  CreateInterfaceFnPtr* = proc (clsid: REFCLSID, riid: REFIID, ppInterface: ptr LPVOID): HRESULT {.stdcall.}
-  CallbackThreadSetFnPtr* = proc (P1: void): HRESULT {.stdcall.}
-  CallbackThreadUnsetFnPtr* = proc (P1: void): HRESULT {.stdcall.}
+  FLockClrVersionCallback* = proc(): HRESULT {.stdcall.}
+  FExecuteInAppDomainCallback* = proc(cookie: pointer): HRESULT {.stdcall.}
+  PTLS_CALLBACK_FUNCTION* =
+    proc(MIDL_itf_mscoree_0000_00040005: PVOID): VOID {.stdcall.}
+  CLRCreateInstanceFnPtr* =
+    proc(clsid: REFCLSID, riid: REFIID, ppInterface: ptr LPVOID): HRESULT {.stdcall.}
+  CreateInterfaceFnPtr* =
+    proc(clsid: REFCLSID, riid: REFIID, ppInterface: ptr LPVOID): HRESULT {.stdcall.}
+  CallbackThreadSetFnPtr* = proc(P1: void): HRESULT {.stdcall.}
+  CallbackThreadUnsetFnPtr* = proc(P1: void): HRESULT {.stdcall.}
   ICLRRuntimeInfo* {.pure.} = object
     lpVtbl*: ptr ICLRRuntimeInfoVtbl
+
   ICLRRuntimeInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetVersionString*: proc(self: ptr ICLRRuntimeInfo, pwzBuffer: LPWSTR, pcchBuffer: ptr DWORD): HRESULT {.stdcall.}
-    GetRuntimeDirectory*: proc(self: ptr ICLRRuntimeInfo, pwzBuffer: LPWSTR, pcchBuffer: ptr DWORD): HRESULT {.stdcall.}
-    IsLoaded*: proc(self: ptr ICLRRuntimeInfo, hndProcess: HANDLE, pbLoaded: ptr BOOL): HRESULT {.stdcall.}
-    LoadErrorString*: proc(self: ptr ICLRRuntimeInfo, iResourceID: UINT, pwzBuffer: LPWSTR, pcchBuffer: ptr DWORD, iLocaleID: LONG): HRESULT {.stdcall.}
-    LoadLibrary*: proc(self: ptr ICLRRuntimeInfo, pwzDllName: LPCWSTR, phndModule: ptr HMODULE): HRESULT {.stdcall.}
-    GetProcAddress*: proc(self: ptr ICLRRuntimeInfo, pszProcName: LPCSTR, ppProc: ptr LPVOID): HRESULT {.stdcall.}
-    GetInterface*: proc(self: ptr ICLRRuntimeInfo, rclsid: REFCLSID, riid: REFIID, ppUnk: ptr LPVOID): HRESULT {.stdcall.}
-    IsLoadable*: proc(self: ptr ICLRRuntimeInfo, pbLoadable: ptr BOOL): HRESULT {.stdcall.}
-    SetDefaultStartupFlags*: proc(self: ptr ICLRRuntimeInfo, dwStartupFlags: DWORD, pwzHostConfigFile: LPCWSTR): HRESULT {.stdcall.}
-    GetDefaultStartupFlags*: proc(self: ptr ICLRRuntimeInfo, pdwStartupFlags: ptr DWORD, pwzHostConfigFile: LPWSTR, pcchHostConfigFile: ptr DWORD): HRESULT {.stdcall.}
+    GetVersionString*: proc(
+      self: ptr ICLRRuntimeInfo, pwzBuffer: LPWSTR, pcchBuffer: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetRuntimeDirectory*: proc(
+      self: ptr ICLRRuntimeInfo, pwzBuffer: LPWSTR, pcchBuffer: ptr DWORD
+    ): HRESULT {.stdcall.}
+    IsLoaded*: proc(
+      self: ptr ICLRRuntimeInfo, hndProcess: HANDLE, pbLoaded: ptr BOOL
+    ): HRESULT {.stdcall.}
+    LoadErrorString*: proc(
+      self: ptr ICLRRuntimeInfo,
+      iResourceID: UINT,
+      pwzBuffer: LPWSTR,
+      pcchBuffer: ptr DWORD,
+      iLocaleID: LONG,
+    ): HRESULT {.stdcall.}
+    LoadLibrary*: proc(
+      self: ptr ICLRRuntimeInfo, pwzDllName: LPCWSTR, phndModule: ptr HMODULE
+    ): HRESULT {.stdcall.}
+    GetProcAddress*: proc(
+      self: ptr ICLRRuntimeInfo, pszProcName: LPCSTR, ppProc: ptr LPVOID
+    ): HRESULT {.stdcall.}
+    GetInterface*: proc(
+      self: ptr ICLRRuntimeInfo, rclsid: REFCLSID, riid: REFIID, ppUnk: ptr LPVOID
+    ): HRESULT {.stdcall.}
+    IsLoadable*:
+      proc(self: ptr ICLRRuntimeInfo, pbLoadable: ptr BOOL): HRESULT {.stdcall.}
+    SetDefaultStartupFlags*: proc(
+      self: ptr ICLRRuntimeInfo, dwStartupFlags: DWORD, pwzHostConfigFile: LPCWSTR
+    ): HRESULT {.stdcall.}
+    GetDefaultStartupFlags*: proc(
+      self: ptr ICLRRuntimeInfo,
+      pdwStartupFlags: ptr DWORD,
+      pwzHostConfigFile: LPWSTR,
+      pcchHostConfigFile: ptr DWORD,
+    ): HRESULT {.stdcall.}
     BindAsLegacyV2Runtime*: proc(self: ptr ICLRRuntimeInfo): HRESULT {.stdcall.}
-    IsStarted*: proc(self: ptr ICLRRuntimeInfo, pbStarted: ptr BOOL, pdwStartupFlags: ptr DWORD): HRESULT {.stdcall.}
-  RuntimeLoadedCallbackFnPtr* = proc (pRuntimeInfo: ptr ICLRRuntimeInfo, pfnCallbackThreadSet: CallbackThreadSetFnPtr, pfnCallbackThreadUnset: CallbackThreadUnsetFnPtr): void {.stdcall.}
+    IsStarted*: proc(
+      self: ptr ICLRRuntimeInfo, pbStarted: ptr BOOL, pdwStartupFlags: ptr DWORD
+    ): HRESULT {.stdcall.}
+
+  RuntimeLoadedCallbackFnPtr* = proc(
+    pRuntimeInfo: ptr ICLRRuntimeInfo,
+    pfnCallbackThreadSet: CallbackThreadSetFnPtr,
+    pfnCallbackThreadUnset: CallbackThreadUnsetFnPtr,
+  ): void {.stdcall.}
   COR_GC_STATS* {.pure.} = object
     Flags*: ULONG
     ExplicitGCCount*: SIZE_T
-    GenCollectionsTaken*: array[ 3 , SIZE_T]
+    GenCollectionsTaken*: array[3, SIZE_T]
     CommittedKBytes*: SIZE_T
     ReservedKBytes*: SIZE_T
     Gen0HeapSizeKBytes*: SIZE_T
@@ -442,208 +485,469 @@
     LargeObjectHeapSizeKBytes*: SIZE_T
     KBytesPromotedFromGen0*: SIZE_T
     KBytesPromotedFromGen1*: SIZE_T
+
   COR_GC_THREAD_STATS* {.pure.} = object
     PerThreadAllocation*: ULONGLONG
     Flags*: ULONG
+
   CustomDumpItem_UNION1* {.pure, union.} = object
     pReserved*: UINT_PTR
+
   CustomDumpItem* {.pure.} = object
     itemKind*: ECustomDumpItemKind
     union1*: CustomDumpItem_UNION1
+
   BucketParameters* {.pure.} = object
     fInited*: BOOL
-    pszEventTypeName*: array[ 255 , WCHAR]
-    pszParams*: array[ 10 , array[ 255 , WCHAR]]
+    pszEventTypeName*: array[255, WCHAR]
+    pszParams*: array[10, array[255, WCHAR]]
+
   MDAInfo* {.pure.} = object
     lpMDACaption*: LPCWSTR
     lpMDAMessage*: LPCWSTR
     lpStackTrace*: LPCWSTR
+
   StackOverflowInfo* {.pure.} = object
     soType*: StackOverflowType
     pExceptionInfo*: ptr EXCEPTION_POINTERS
+
   AssemblyBindInfo* {.pure.} = object
     dwAppDomainId*: DWORD
     lpReferencedIdentity*: LPCWSTR
     lpPostPolicyIdentity*: LPCWSTR
     ePolicyLevel*: DWORD
+
   ModuleBindInfo* {.pure.} = object
     dwAppDomainId*: DWORD
     lpAssemblyIdentity*: LPCWSTR
     lpModuleName*: LPCWSTR
+
   CLR_DEBUGGING_VERSION* {.pure.} = object
     wStructVersion*: WORD
     wMajor*: WORD
     wMinor*: WORD
     wBuild*: WORD
     wRevision*: WORD
+
   StreamingContext* {.pure.} = object
   IGCHost* {.pure.} = object
     lpVtbl*: ptr IGCHostVtbl
+
   IGCHostVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetGCStartupLimits*: proc(self: ptr IGCHost, SegmentSize: DWORD, MaxGen0Size: DWORD): HRESULT {.stdcall.}
+    SetGCStartupLimits*: proc(
+      self: ptr IGCHost, SegmentSize: DWORD, MaxGen0Size: DWORD
+    ): HRESULT {.stdcall.}
     Collect*: proc(self: ptr IGCHost, Generation: LONG): HRESULT {.stdcall.}
     GetStats*: proc(self: ptr IGCHost, pStats: ptr COR_GC_STATS): HRESULT {.stdcall.}
-    GetThreadStats*: proc(self: ptr IGCHost, pFiberCookie: ptr DWORD, pStats: ptr COR_GC_THREAD_STATS): HRESULT {.stdcall.}
-    SetVirtualMemLimit*: proc(self: ptr IGCHost, sztMaxVirtualMemMB: SIZE_T): HRESULT {.stdcall.}
+    GetThreadStats*: proc(
+      self: ptr IGCHost, pFiberCookie: ptr DWORD, pStats: ptr COR_GC_THREAD_STATS
+    ): HRESULT {.stdcall.}
+    SetVirtualMemLimit*:
+      proc(self: ptr IGCHost, sztMaxVirtualMemMB: SIZE_T): HRESULT {.stdcall.}
+
   IGCHost2* {.pure.} = object
     lpVtbl*: ptr IGCHost2Vtbl
+
   IGCHost2Vtbl* {.pure, inheritable.} = object of IGCHostVtbl
-    SetGCStartupLimitsEx*: proc(self: ptr IGCHost2, SegmentSize: SIZE_T, MaxGen0Size: SIZE_T): HRESULT {.stdcall.}
+    SetGCStartupLimitsEx*: proc(
+      self: ptr IGCHost2, SegmentSize: SIZE_T, MaxGen0Size: SIZE_T
+    ): HRESULT {.stdcall.}
+
   IVEHandler* {.pure.} = object
     lpVtbl*: ptr IVEHandlerVtbl
+
   IVEHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    VEHandler*: proc(self: ptr IVEHandler, VECode: HRESULT, Context: VEContext, psa: ptr SAFEARRAY): HRESULT {.stdcall.}
+    VEHandler*: proc(
+      self: ptr IVEHandler, VECode: HRESULT, Context: VEContext, psa: ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
     SetReporterFtn*: proc(self: ptr IVEHandler, lFnPtr: int64): HRESULT {.stdcall.}
+
   IValidator* {.pure.} = object
     lpVtbl*: ptr IValidatorVtbl
+
   IValidatorVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Validate*: proc(self: ptr IValidator, veh: ptr IVEHandler, pAppDomain: ptr IUnknown, ulFlags: int32, ulMaxError: int32, token: int32, fileName: LPWSTR, pe: ptr BYTE, ulSize: int32): HRESULT {.stdcall.}
-    FormatEventInfo*: proc(self: ptr IValidator, hVECode: HRESULT, Context: VEContext, msg: LPWSTR, ulMaxLength: int32, psa: ptr SAFEARRAY): HRESULT {.stdcall.}
+    Validate*: proc(
+      self: ptr IValidator,
+      veh: ptr IVEHandler,
+      pAppDomain: ptr IUnknown,
+      ulFlags: int32,
+      ulMaxError: int32,
+      token: int32,
+      fileName: LPWSTR,
+      pe: ptr BYTE,
+      ulSize: int32,
+    ): HRESULT {.stdcall.}
+    FormatEventInfo*: proc(
+      self: ptr IValidator,
+      hVECode: HRESULT,
+      Context: VEContext,
+      msg: LPWSTR,
+      ulMaxLength: int32,
+      psa: ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+
   ICLRValidator* {.pure.} = object
     lpVtbl*: ptr ICLRValidatorVtbl
+
   ICLRValidatorVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Validate*: proc(self: ptr ICLRValidator, veh: ptr IVEHandler, ulAppDomainId: int32, ulFlags: int32, ulMaxError: int32, token: int32, fileName: LPWSTR, pe: ptr BYTE, ulSize: int32): HRESULT {.stdcall.}
-    FormatEventInfo*: proc(self: ptr ICLRValidator, hVECode: HRESULT, Context: VEContext, msg: LPWSTR, ulMaxLength: int32, psa: ptr SAFEARRAY): HRESULT {.stdcall.}
+    Validate*: proc(
+      self: ptr ICLRValidator,
+      veh: ptr IVEHandler,
+      ulAppDomainId: int32,
+      ulFlags: int32,
+      ulMaxError: int32,
+      token: int32,
+      fileName: LPWSTR,
+      pe: ptr BYTE,
+      ulSize: int32,
+    ): HRESULT {.stdcall.}
+    FormatEventInfo*: proc(
+      self: ptr ICLRValidator,
+      hVECode: HRESULT,
+      Context: VEContext,
+      msg: LPWSTR,
+      ulMaxLength: int32,
+      psa: ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+
   IObjectHandle* {.pure.} = object
     lpVtbl*: ptr IObjectHandleVtbl
+
   IObjectHandleVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Unwrap*: proc(self: ptr IObjectHandle, ppv: ptr VARIANT): HRESULT {.stdcall.}
+
   IAppDomainBinding* {.pure.} = object
     lpVtbl*: ptr IAppDomainBindingVtbl
+
   IAppDomainBindingVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnAppDomain*: proc(self: ptr IAppDomainBinding, pAppdomain: ptr IUnknown): HRESULT {.stdcall.}
+    OnAppDomain*:
+      proc(self: ptr IAppDomainBinding, pAppdomain: ptr IUnknown): HRESULT {.stdcall.}
+
   IGCThreadControl* {.pure.} = object
     lpVtbl*: ptr IGCThreadControlVtbl
+
   IGCThreadControlVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ThreadIsBlockingForSuspension*: proc(self: ptr IGCThreadControl): HRESULT {.stdcall.}
+    ThreadIsBlockingForSuspension*:
+      proc(self: ptr IGCThreadControl): HRESULT {.stdcall.}
     SuspensionStarting*: proc(self: ptr IGCThreadControl): HRESULT {.stdcall.}
-    SuspensionEnding*: proc(self: ptr IGCThreadControl, Generation: DWORD): HRESULT {.stdcall.}
+    SuspensionEnding*:
+      proc(self: ptr IGCThreadControl, Generation: DWORD): HRESULT {.stdcall.}
+
   IGCHostControl* {.pure.} = object
     lpVtbl*: ptr IGCHostControlVtbl
+
   IGCHostControlVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RequestVirtualMemLimit*: proc(self: ptr IGCHostControl, sztMaxVirtualMemMB: SIZE_T, psztNewMaxVirtualMemMB: ptr SIZE_T): HRESULT {.stdcall.}
+    RequestVirtualMemLimit*: proc(
+      self: ptr IGCHostControl,
+      sztMaxVirtualMemMB: SIZE_T,
+      psztNewMaxVirtualMemMB: ptr SIZE_T,
+    ): HRESULT {.stdcall.}
+
   ICorThreadpool* {.pure.} = object
     lpVtbl*: ptr ICorThreadpoolVtbl
+
   ICorThreadpoolVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CorRegisterWaitForSingleObject*: proc(self: ptr ICorThreadpool, phNewWaitObject: ptr HANDLE, hWaitObject: HANDLE, Callback: WAITORTIMERCALLBACK, Context: PVOID, timeout: ULONG, executeOnlyOnce: BOOL, ret: ptr BOOL): HRESULT {.stdcall.}
-    CorUnregisterWait*: proc(self: ptr ICorThreadpool, hWaitObject: HANDLE, CompletionEvent: HANDLE, ret: ptr BOOL): HRESULT {.stdcall.}
-    CorQueueUserWorkItem*: proc(self: ptr ICorThreadpool, Function: LPTHREAD_START_ROUTINE, Context: PVOID, executeOnlyOnce: BOOL, ret: ptr BOOL): HRESULT {.stdcall.}
-    CorCreateTimer*: proc(self: ptr ICorThreadpool, phNewTimer: ptr HANDLE, Callback: WAITORTIMERCALLBACK, Parameter: PVOID, DueTime: DWORD, Period: DWORD, ret: ptr BOOL): HRESULT {.stdcall.}
-    CorChangeTimer*: proc(self: ptr ICorThreadpool, Timer: HANDLE, DueTime: ULONG, Period: ULONG, ret: ptr BOOL): HRESULT {.stdcall.}
-    CorDeleteTimer*: proc(self: ptr ICorThreadpool, Timer: HANDLE, CompletionEvent: HANDLE, ret: ptr BOOL): HRESULT {.stdcall.}
-    CorBindIoCompletionCallback*: proc(self: ptr ICorThreadpool, fileHandle: HANDLE, callback: LPOVERLAPPED_COMPLETION_ROUTINE): HRESULT {.stdcall.}
-    CorCallOrQueueUserWorkItem*: proc(self: ptr ICorThreadpool, Function: LPTHREAD_START_ROUTINE, Context: PVOID, ret: ptr BOOL): HRESULT {.stdcall.}
-    CorSetMaxThreads*: proc(self: ptr ICorThreadpool, MaxWorkerThreads: DWORD, MaxIOCompletionThreads: DWORD): HRESULT {.stdcall.}
-    CorGetMaxThreads*: proc(self: ptr ICorThreadpool, MaxWorkerThreads: ptr DWORD, MaxIOCompletionThreads: ptr DWORD): HRESULT {.stdcall.}
-    CorGetAvailableThreads*: proc(self: ptr ICorThreadpool, AvailableWorkerThreads: ptr DWORD, AvailableIOCompletionThreads: ptr DWORD): HRESULT {.stdcall.}
+    CorRegisterWaitForSingleObject*: proc(
+      self: ptr ICorThreadpool,
+      phNewWaitObject: ptr HANDLE,
+      hWaitObject: HANDLE,
+      Callback: WAITORTIMERCALLBACK,
+      Context: PVOID,
+      timeout: ULONG,
+      executeOnlyOnce: BOOL,
+      ret: ptr BOOL,
+    ): HRESULT {.stdcall.}
+    CorUnregisterWait*: proc(
+      self: ptr ICorThreadpool,
+      hWaitObject: HANDLE,
+      CompletionEvent: HANDLE,
+      ret: ptr BOOL,
+    ): HRESULT {.stdcall.}
+    CorQueueUserWorkItem*: proc(
+      self: ptr ICorThreadpool,
+      Function: LPTHREAD_START_ROUTINE,
+      Context: PVOID,
+      executeOnlyOnce: BOOL,
+      ret: ptr BOOL,
+    ): HRESULT {.stdcall.}
+    CorCreateTimer*: proc(
+      self: ptr ICorThreadpool,
+      phNewTimer: ptr HANDLE,
+      Callback: WAITORTIMERCALLBACK,
+      Parameter: PVOID,
+      DueTime: DWORD,
+      Period: DWORD,
+      ret: ptr BOOL,
+    ): HRESULT {.stdcall.}
+    CorChangeTimer*: proc(
+      self: ptr ICorThreadpool,
+      Timer: HANDLE,
+      DueTime: ULONG,
+      Period: ULONG,
+      ret: ptr BOOL,
+    ): HRESULT {.stdcall.}
+    CorDeleteTimer*: proc(
+      self: ptr ICorThreadpool, Timer: HANDLE, CompletionEvent: HANDLE, ret: ptr BOOL
+    ): HRESULT {.stdcall.}
+    CorBindIoCompletionCallback*: proc(
+      self: ptr ICorThreadpool,
+      fileHandle: HANDLE,
+      callback: LPOVERLAPPED_COMPLETION_ROUTINE,
+    ): HRESULT {.stdcall.}
+    CorCallOrQueueUserWorkItem*: proc(
+      self: ptr ICorThreadpool,
+      Function: LPTHREAD_START_ROUTINE,
+      Context: PVOID,
+      ret: ptr BOOL,
+    ): HRESULT {.stdcall.}
+    CorSetMaxThreads*: proc(
+      self: ptr ICorThreadpool, MaxWorkerThreads: DWORD, MaxIOCompletionThreads: DWORD
+    ): HRESULT {.stdcall.}
+    CorGetMaxThreads*: proc(
+      self: ptr ICorThreadpool,
+      MaxWorkerThreads: ptr DWORD,
+      MaxIOCompletionThreads: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    CorGetAvailableThreads*: proc(
+      self: ptr ICorThreadpool,
+      AvailableWorkerThreads: ptr DWORD,
+      AvailableIOCompletionThreads: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   IDebuggerThreadControl* {.pure.} = object
     lpVtbl*: ptr IDebuggerThreadControlVtbl
+
   IDebuggerThreadControlVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ThreadIsBlockingForDebugger*: proc(self: ptr IDebuggerThreadControl): HRESULT {.stdcall.}
-    ReleaseAllRuntimeThreads*: proc(self: ptr IDebuggerThreadControl): HRESULT {.stdcall.}
-    StartBlockingForDebugger*: proc(self: ptr IDebuggerThreadControl, dwUnused: DWORD): HRESULT {.stdcall.}
+    ThreadIsBlockingForDebugger*:
+      proc(self: ptr IDebuggerThreadControl): HRESULT {.stdcall.}
+    ReleaseAllRuntimeThreads*:
+      proc(self: ptr IDebuggerThreadControl): HRESULT {.stdcall.}
+    StartBlockingForDebugger*:
+      proc(self: ptr IDebuggerThreadControl, dwUnused: DWORD): HRESULT {.stdcall.}
+
   IDebuggerInfo* {.pure.} = object
     lpVtbl*: ptr IDebuggerInfoVtbl
+
   IDebuggerInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    IsDebuggerAttached*: proc(self: ptr IDebuggerInfo, pbAttached: ptr BOOL): HRESULT {.stdcall.}
+    IsDebuggerAttached*:
+      proc(self: ptr IDebuggerInfo, pbAttached: ptr BOOL): HRESULT {.stdcall.}
+
   ICorConfiguration* {.pure.} = object
     lpVtbl*: ptr ICorConfigurationVtbl
+
   ICorConfigurationVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetGCThreadControl*: proc(self: ptr ICorConfiguration, pGCThreadControl: ptr IGCThreadControl): HRESULT {.stdcall.}
-    SetGCHostControl*: proc(self: ptr ICorConfiguration, pGCHostControl: ptr IGCHostControl): HRESULT {.stdcall.}
-    SetDebuggerThreadControl*: proc(self: ptr ICorConfiguration, pDebuggerThreadControl: ptr IDebuggerThreadControl): HRESULT {.stdcall.}
-    AddDebuggerSpecialThread*: proc(self: ptr ICorConfiguration, dwSpecialThreadId: DWORD): HRESULT {.stdcall.}
+    SetGCThreadControl*: proc(
+      self: ptr ICorConfiguration, pGCThreadControl: ptr IGCThreadControl
+    ): HRESULT {.stdcall.}
+    SetGCHostControl*: proc(
+      self: ptr ICorConfiguration, pGCHostControl: ptr IGCHostControl
+    ): HRESULT {.stdcall.}
+    SetDebuggerThreadControl*: proc(
+      self: ptr ICorConfiguration, pDebuggerThreadControl: ptr IDebuggerThreadControl
+    ): HRESULT {.stdcall.}
+    AddDebuggerSpecialThread*:
+      proc(self: ptr ICorConfiguration, dwSpecialThreadId: DWORD): HRESULT {.stdcall.}
+
   ICorRuntimeHost* {.pure.} = object
     lpVtbl*: ptr ICorRuntimeHostVtbl
+
   ICorRuntimeHostVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     CreateLogicalThreadState*: proc(self: ptr ICorRuntimeHost): HRESULT {.stdcall.}
     DeleteLogicalThreadState*: proc(self: ptr ICorRuntimeHost): HRESULT {.stdcall.}
-    SwitchInLogicalThreadState*: proc(self: ptr ICorRuntimeHost, pFiberCookie: ptr DWORD): HRESULT {.stdcall.}
-    SwitchOutLogicalThreadState*: proc(self: ptr ICorRuntimeHost, pFiberCookie: ptr ptr DWORD): HRESULT {.stdcall.}
-    LocksHeldByLogicalThread*: proc(self: ptr ICorRuntimeHost, pCount: ptr DWORD): HRESULT {.stdcall.}
-    MapFile*: proc(self: ptr ICorRuntimeHost, hFile: HANDLE, hMapAddress: ptr HMODULE): HRESULT {.stdcall.}
-    GetConfiguration*: proc(self: ptr ICorRuntimeHost, pConfiguration: ptr ptr ICorConfiguration): HRESULT {.stdcall.}
+    SwitchInLogicalThreadState*:
+      proc(self: ptr ICorRuntimeHost, pFiberCookie: ptr DWORD): HRESULT {.stdcall.}
+    SwitchOutLogicalThreadState*:
+      proc(self: ptr ICorRuntimeHost, pFiberCookie: ptr ptr DWORD): HRESULT {.stdcall.}
+    LocksHeldByLogicalThread*:
+      proc(self: ptr ICorRuntimeHost, pCount: ptr DWORD): HRESULT {.stdcall.}
+    MapFile*: proc(
+      self: ptr ICorRuntimeHost, hFile: HANDLE, hMapAddress: ptr HMODULE
+    ): HRESULT {.stdcall.}
+    GetConfiguration*: proc(
+      self: ptr ICorRuntimeHost, pConfiguration: ptr ptr ICorConfiguration
+    ): HRESULT {.stdcall.}
     Start*: proc(self: ptr ICorRuntimeHost): HRESULT {.stdcall.}
     Stop*: proc(self: ptr ICorRuntimeHost): HRESULT {.stdcall.}
-    CreateDomain*: proc(self: ptr ICorRuntimeHost, pwzFriendlyName: LPCWSTR, pIdentityArray: ptr IUnknown, pAppDomain: ptr ptr IUnknown): HRESULT {.stdcall.}
-    GetDefaultDomain*: proc(self: ptr ICorRuntimeHost, pAppDomain: ptr ptr IUnknown): HRESULT {.stdcall.}
-    EnumDomains*: proc(self: ptr ICorRuntimeHost, hEnum: ptr HDOMAINENUM): HRESULT {.stdcall.}
-    NextDomain*: proc(self: ptr ICorRuntimeHost, hEnum: HDOMAINENUM, pAppDomain: ptr ptr IUnknown): HRESULT {.stdcall.}
+    CreateDomain*: proc(
+      self: ptr ICorRuntimeHost,
+      pwzFriendlyName: LPCWSTR,
+      pIdentityArray: ptr IUnknown,
+      pAppDomain: ptr ptr IUnknown,
+    ): HRESULT {.stdcall.}
+    GetDefaultDomain*:
+      proc(self: ptr ICorRuntimeHost, pAppDomain: ptr ptr IUnknown): HRESULT {.stdcall.}
+    EnumDomains*:
+      proc(self: ptr ICorRuntimeHost, hEnum: ptr HDOMAINENUM): HRESULT {.stdcall.}
+    NextDomain*: proc(
+      self: ptr ICorRuntimeHost, hEnum: HDOMAINENUM, pAppDomain: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
     CloseEnum*: proc(self: ptr ICorRuntimeHost, hEnum: HDOMAINENUM): HRESULT {.stdcall.}
-    CreateDomainEx*: proc(self: ptr ICorRuntimeHost, pwzFriendlyName: LPCWSTR, pSetup: ptr IUnknown, pEvidence: ptr IUnknown, pAppDomain: ptr ptr IUnknown): HRESULT {.stdcall.}
-    CreateDomainSetup*: proc(self: ptr ICorRuntimeHost, pAppDomainSetup: ptr ptr IUnknown): HRESULT {.stdcall.}
-    CreateEvidence*: proc(self: ptr ICorRuntimeHost, pEvidence: ptr ptr IUnknown): HRESULT {.stdcall.}
-    UnloadDomain*: proc(self: ptr ICorRuntimeHost, pAppDomain: ptr IUnknown): HRESULT {.stdcall.}
-    CurrentDomain*: proc(self: ptr ICorRuntimeHost, pAppDomain: ptr ptr IUnknown): HRESULT {.stdcall.}
+    CreateDomainEx*: proc(
+      self: ptr ICorRuntimeHost,
+      pwzFriendlyName: LPCWSTR,
+      pSetup: ptr IUnknown,
+      pEvidence: ptr IUnknown,
+      pAppDomain: ptr ptr IUnknown,
+    ): HRESULT {.stdcall.}
+    CreateDomainSetup*: proc(
+      self: ptr ICorRuntimeHost, pAppDomainSetup: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
+    CreateEvidence*:
+      proc(self: ptr ICorRuntimeHost, pEvidence: ptr ptr IUnknown): HRESULT {.stdcall.}
+    UnloadDomain*:
+      proc(self: ptr ICorRuntimeHost, pAppDomain: ptr IUnknown): HRESULT {.stdcall.}
+    CurrentDomain*:
+      proc(self: ptr ICorRuntimeHost, pAppDomain: ptr ptr IUnknown): HRESULT {.stdcall.}
+
   ICLRMemoryNotificationCallback* {.pure.} = object
     lpVtbl*: ptr ICLRMemoryNotificationCallbackVtbl
+
   ICLRMemoryNotificationCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnMemoryNotification*: proc(self: ptr ICLRMemoryNotificationCallback, eMemoryAvailable: EMemoryAvailable): HRESULT {.stdcall.}
+    OnMemoryNotification*: proc(
+      self: ptr ICLRMemoryNotificationCallback, eMemoryAvailable: EMemoryAvailable
+    ): HRESULT {.stdcall.}
+
   IHostMalloc* {.pure.} = object
     lpVtbl*: ptr IHostMallocVtbl
+
   IHostMallocVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Alloc*: proc(self: ptr IHostMalloc, cbSize: SIZE_T, eCriticalLevel: EMemoryCriticalLevel, ppMem: ptr pointer): HRESULT {.stdcall.}
-    DebugAlloc*: proc(self: ptr IHostMalloc, cbSize: SIZE_T, eCriticalLevel: EMemoryCriticalLevel, pszFileName: ptr char, iLineNo: int32, ppMem: ptr pointer): HRESULT {.stdcall.}
+    Alloc*: proc(
+      self: ptr IHostMalloc,
+      cbSize: SIZE_T,
+      eCriticalLevel: EMemoryCriticalLevel,
+      ppMem: ptr pointer,
+    ): HRESULT {.stdcall.}
+    DebugAlloc*: proc(
+      self: ptr IHostMalloc,
+      cbSize: SIZE_T,
+      eCriticalLevel: EMemoryCriticalLevel,
+      pszFileName: ptr char,
+      iLineNo: int32,
+      ppMem: ptr pointer,
+    ): HRESULT {.stdcall.}
     Free*: proc(self: ptr IHostMalloc, pMem: pointer): HRESULT {.stdcall.}
+
   IHostMemoryManager* {.pure.} = object
     lpVtbl*: ptr IHostMemoryManagerVtbl
+
   IHostMemoryManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateMalloc*: proc(self: ptr IHostMemoryManager, dwMallocType: DWORD, ppMalloc: ptr ptr IHostMalloc): HRESULT {.stdcall.}
-    VirtualAlloc*: proc(self: ptr IHostMemoryManager, pAddress: pointer, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD, eCriticalLevel: EMemoryCriticalLevel, ppMem: ptr pointer): HRESULT {.stdcall.}
-    VirtualFree*: proc(self: ptr IHostMemoryManager, lpAddress: LPVOID, dwSize: SIZE_T, dwFreeType: DWORD): HRESULT {.stdcall.}
-    VirtualQuery*: proc(self: ptr IHostMemoryManager, lpAddress: pointer, lpBuffer: pointer, dwLength: SIZE_T, pResult: ptr SIZE_T): HRESULT {.stdcall.}
-    VirtualProtect*: proc(self: ptr IHostMemoryManager, lpAddress: pointer, dwSize: SIZE_T, flNewProtect: DWORD, pflOldProtect: ptr DWORD): HRESULT {.stdcall.}
-    GetMemoryLoad*: proc(self: ptr IHostMemoryManager, pMemoryLoad: ptr DWORD, pAvailableBytes: ptr SIZE_T): HRESULT {.stdcall.}
-    RegisterMemoryNotificationCallback*: proc(self: ptr IHostMemoryManager, pCallback: ptr ICLRMemoryNotificationCallback): HRESULT {.stdcall.}
-    NeedsVirtualAddressSpace*: proc(self: ptr IHostMemoryManager, startAddress: LPVOID, size: SIZE_T): HRESULT {.stdcall.}
-    AcquiredVirtualAddressSpace*: proc(self: ptr IHostMemoryManager, startAddress: LPVOID, size: SIZE_T): HRESULT {.stdcall.}
-    ReleasedVirtualAddressSpace*: proc(self: ptr IHostMemoryManager, startAddress: LPVOID): HRESULT {.stdcall.}
+    CreateMalloc*: proc(
+      self: ptr IHostMemoryManager, dwMallocType: DWORD, ppMalloc: ptr ptr IHostMalloc
+    ): HRESULT {.stdcall.}
+    VirtualAlloc*: proc(
+      self: ptr IHostMemoryManager,
+      pAddress: pointer,
+      dwSize: SIZE_T,
+      flAllocationType: DWORD,
+      flProtect: DWORD,
+      eCriticalLevel: EMemoryCriticalLevel,
+      ppMem: ptr pointer,
+    ): HRESULT {.stdcall.}
+    VirtualFree*: proc(
+      self: ptr IHostMemoryManager, lpAddress: LPVOID, dwSize: SIZE_T, dwFreeType: DWORD
+    ): HRESULT {.stdcall.}
+    VirtualQuery*: proc(
+      self: ptr IHostMemoryManager,
+      lpAddress: pointer,
+      lpBuffer: pointer,
+      dwLength: SIZE_T,
+      pResult: ptr SIZE_T,
+    ): HRESULT {.stdcall.}
+    VirtualProtect*: proc(
+      self: ptr IHostMemoryManager,
+      lpAddress: pointer,
+      dwSize: SIZE_T,
+      flNewProtect: DWORD,
+      pflOldProtect: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetMemoryLoad*: proc(
+      self: ptr IHostMemoryManager, pMemoryLoad: ptr DWORD, pAvailableBytes: ptr SIZE_T
+    ): HRESULT {.stdcall.}
+    RegisterMemoryNotificationCallback*: proc(
+      self: ptr IHostMemoryManager, pCallback: ptr ICLRMemoryNotificationCallback
+    ): HRESULT {.stdcall.}
+    NeedsVirtualAddressSpace*: proc(
+      self: ptr IHostMemoryManager, startAddress: LPVOID, size: SIZE_T
+    ): HRESULT {.stdcall.}
+    AcquiredVirtualAddressSpace*: proc(
+      self: ptr IHostMemoryManager, startAddress: LPVOID, size: SIZE_T
+    ): HRESULT {.stdcall.}
+    ReleasedVirtualAddressSpace*:
+      proc(self: ptr IHostMemoryManager, startAddress: LPVOID): HRESULT {.stdcall.}
+
   ICLRTask* {.pure.} = object
     lpVtbl*: ptr ICLRTaskVtbl
+
   ICLRTaskVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SwitchIn*: proc(self: ptr ICLRTask, threadHandle: HANDLE): HRESULT {.stdcall.}
     SwitchOut*: proc(self: ptr ICLRTask): HRESULT {.stdcall.}
-    GetMemStats*: proc(self: ptr ICLRTask, memUsage: ptr COR_GC_THREAD_STATS): HRESULT {.stdcall.}
+    GetMemStats*:
+      proc(self: ptr ICLRTask, memUsage: ptr COR_GC_THREAD_STATS): HRESULT {.stdcall.}
     Reset*: proc(self: ptr ICLRTask, fFull: BOOL): HRESULT {.stdcall.}
     ExitTask*: proc(self: ptr ICLRTask): HRESULT {.stdcall.}
     Abort*: proc(self: ptr ICLRTask): HRESULT {.stdcall.}
     RudeAbort*: proc(self: ptr ICLRTask): HRESULT {.stdcall.}
-    NeedsPriorityScheduling*: proc(self: ptr ICLRTask, pbNeedsPriorityScheduling: ptr BOOL): HRESULT {.stdcall.}
+    NeedsPriorityScheduling*:
+      proc(self: ptr ICLRTask, pbNeedsPriorityScheduling: ptr BOOL): HRESULT {.stdcall.}
     YieldTask*: proc(self: ptr ICLRTask): HRESULT {.stdcall.}
     LocksHeld*: proc(self: ptr ICLRTask, pLockCount: ptr SIZE_T): HRESULT {.stdcall.}
     SetTaskIdentifier*: proc(self: ptr ICLRTask, asked: TASKID): HRESULT {.stdcall.}
+
   ICLRTask2* {.pure.} = object
     lpVtbl*: ptr ICLRTask2Vtbl
+
   ICLRTask2Vtbl* {.pure, inheritable.} = object of ICLRTaskVtbl
     BeginPreventAsyncAbort*: proc(self: ptr ICLRTask2): HRESULT {.stdcall.}
     EndPreventAsyncAbort*: proc(self: ptr ICLRTask2): HRESULT {.stdcall.}
+
   IHostTask* {.pure.} = object
     lpVtbl*: ptr IHostTaskVtbl
+
   IHostTaskVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Start*: proc(self: ptr IHostTask): HRESULT {.stdcall.}
     Alert*: proc(self: ptr IHostTask): HRESULT {.stdcall.}
-    Join*: proc(self: ptr IHostTask, dwMilliseconds: DWORD, option: DWORD): HRESULT {.stdcall.}
+    Join*: proc(self: ptr IHostTask, dwMilliseconds: DWORD, option: DWORD): HRESULT {.
+      stdcall
+    .}
     SetPriority*: proc(self: ptr IHostTask, newPriority: int32): HRESULT {.stdcall.}
     GetPriority*: proc(self: ptr IHostTask, pPriority: ptr int32): HRESULT {.stdcall.}
     SetCLRTask*: proc(self: ptr IHostTask, pCLRTask: ptr ICLRTask): HRESULT {.stdcall.}
+
   ICLRTaskManager* {.pure.} = object
     lpVtbl*: ptr ICLRTaskManagerVtbl
+
   ICLRTaskManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateTask*: proc(self: ptr ICLRTaskManager, pTask: ptr ptr ICLRTask): HRESULT {.stdcall.}
-    GetCurrentTask*: proc(self: ptr ICLRTaskManager, pTask: ptr ptr ICLRTask): HRESULT {.stdcall.}
+    CreateTask*:
+      proc(self: ptr ICLRTaskManager, pTask: ptr ptr ICLRTask): HRESULT {.stdcall.}
+    GetCurrentTask*:
+      proc(self: ptr ICLRTaskManager, pTask: ptr ptr ICLRTask): HRESULT {.stdcall.}
     SetUILocale*: proc(self: ptr ICLRTaskManager, lcid: LCID): HRESULT {.stdcall.}
     SetLocale*: proc(self: ptr ICLRTaskManager, lcid: LCID): HRESULT {.stdcall.}
-    GetCurrentTaskType*: proc(self: ptr ICLRTaskManager, pTaskType: ptr ETaskType): HRESULT {.stdcall.}
+    GetCurrentTaskType*:
+      proc(self: ptr ICLRTaskManager, pTaskType: ptr ETaskType): HRESULT {.stdcall.}
+
   IHostTaskManager* {.pure.} = object
     lpVtbl*: ptr IHostTaskManagerVtbl
+
   IHostTaskManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCurrentTask*: proc(self: ptr IHostTaskManager, pTask: ptr ptr IHostTask): HRESULT {.stdcall.}
-    CreateTask*: proc(self: ptr IHostTaskManager, dwStackSize: DWORD, pStartAddress: LPTHREAD_START_ROUTINE, pParameter: PVOID, ppTask: ptr ptr IHostTask): HRESULT {.stdcall.}
-    Sleep*: proc(self: ptr IHostTaskManager, dwMilliseconds: DWORD, option: DWORD): HRESULT {.stdcall.}
+    GetCurrentTask*:
+      proc(self: ptr IHostTaskManager, pTask: ptr ptr IHostTask): HRESULT {.stdcall.}
+    CreateTask*: proc(
+      self: ptr IHostTaskManager,
+      dwStackSize: DWORD,
+      pStartAddress: LPTHREAD_START_ROUTINE,
+      pParameter: PVOID,
+      ppTask: ptr ptr IHostTask,
+    ): HRESULT {.stdcall.}
+    Sleep*: proc(
+      self: ptr IHostTaskManager, dwMilliseconds: DWORD, option: DWORD
+    ): HRESULT {.stdcall.}
     SwitchToTask*: proc(self: ptr IHostTaskManager, option: DWORD): HRESULT {.stdcall.}
     SetUILocale*: proc(self: ptr IHostTaskManager, lcid: LCID): HRESULT {.stdcall.}
     SetLocale*: proc(self: ptr IHostTaskManager, lcid: LCID): HRESULT {.stdcall.}
-    CallNeedsHostHook*: proc(self: ptr IHostTaskManager, target: SIZE_T, pbCallNeedsHostHook: ptr BOOL): HRESULT {.stdcall.}
+    CallNeedsHostHook*: proc(
+      self: ptr IHostTaskManager, target: SIZE_T, pbCallNeedsHostHook: ptr BOOL
+    ): HRESULT {.stdcall.}
     LeaveRuntime*: proc(self: ptr IHostTaskManager, target: SIZE_T): HRESULT {.stdcall.}
     EnterRuntime*: proc(self: ptr IHostTaskManager): HRESULT {.stdcall.}
     ReverseLeaveRuntime*: proc(self: ptr IHostTaskManager): HRESULT {.stdcall.}
@@ -652,216 +956,564 @@
     EndDelayAbort*: proc(self: ptr IHostTaskManager): HRESULT {.stdcall.}
     BeginThreadAffinity*: proc(self: ptr IHostTaskManager): HRESULT {.stdcall.}
     EndThreadAffinity*: proc(self: ptr IHostTaskManager): HRESULT {.stdcall.}
-    SetStackGuarantee*: proc(self: ptr IHostTaskManager, guarantee: ULONG): HRESULT {.stdcall.}
-    GetStackGuarantee*: proc(self: ptr IHostTaskManager, pGuarantee: ptr ULONG): HRESULT {.stdcall.}
-    SetCLRTaskManager*: proc(self: ptr IHostTaskManager, ppManager: ptr ICLRTaskManager): HRESULT {.stdcall.}
+    SetStackGuarantee*:
+      proc(self: ptr IHostTaskManager, guarantee: ULONG): HRESULT {.stdcall.}
+    GetStackGuarantee*:
+      proc(self: ptr IHostTaskManager, pGuarantee: ptr ULONG): HRESULT {.stdcall.}
+    SetCLRTaskManager*: proc(
+      self: ptr IHostTaskManager, ppManager: ptr ICLRTaskManager
+    ): HRESULT {.stdcall.}
+
   IHostThreadpoolManager* {.pure.} = object
     lpVtbl*: ptr IHostThreadpoolManagerVtbl
+
   IHostThreadpoolManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QueueUserWorkItem*: proc(self: ptr IHostThreadpoolManager, Function: LPTHREAD_START_ROUTINE, Context: PVOID, Flags: ULONG): HRESULT {.stdcall.}
-    SetMaxThreads*: proc(self: ptr IHostThreadpoolManager, dwMaxWorkerThreads: DWORD): HRESULT {.stdcall.}
-    GetMaxThreads*: proc(self: ptr IHostThreadpoolManager, pdwMaxWorkerThreads: ptr DWORD): HRESULT {.stdcall.}
-    GetAvailableThreads*: proc(self: ptr IHostThreadpoolManager, pdwAvailableWorkerThreads: ptr DWORD): HRESULT {.stdcall.}
-    SetMinThreads*: proc(self: ptr IHostThreadpoolManager, dwMinIOCompletionThreads: DWORD): HRESULT {.stdcall.}
-    GetMinThreads*: proc(self: ptr IHostThreadpoolManager, pdwMinIOCompletionThreads: ptr DWORD): HRESULT {.stdcall.}
+    QueueUserWorkItem*: proc(
+      self: ptr IHostThreadpoolManager,
+      Function: LPTHREAD_START_ROUTINE,
+      Context: PVOID,
+      Flags: ULONG,
+    ): HRESULT {.stdcall.}
+    SetMaxThreads*: proc(
+      self: ptr IHostThreadpoolManager, dwMaxWorkerThreads: DWORD
+    ): HRESULT {.stdcall.}
+    GetMaxThreads*: proc(
+      self: ptr IHostThreadpoolManager, pdwMaxWorkerThreads: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetAvailableThreads*: proc(
+      self: ptr IHostThreadpoolManager, pdwAvailableWorkerThreads: ptr DWORD
+    ): HRESULT {.stdcall.}
+    SetMinThreads*: proc(
+      self: ptr IHostThreadpoolManager, dwMinIOCompletionThreads: DWORD
+    ): HRESULT {.stdcall.}
+    GetMinThreads*: proc(
+      self: ptr IHostThreadpoolManager, pdwMinIOCompletionThreads: ptr DWORD
+    ): HRESULT {.stdcall.}
+
   ICLRIoCompletionManager* {.pure.} = object
     lpVtbl*: ptr ICLRIoCompletionManagerVtbl
+
   ICLRIoCompletionManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnComplete*: proc(self: ptr ICLRIoCompletionManager, dwErrorCode: DWORD, NumberOfBytesTransferred: DWORD, pvOverlapped: pointer): HRESULT {.stdcall.}
+    OnComplete*: proc(
+      self: ptr ICLRIoCompletionManager,
+      dwErrorCode: DWORD,
+      NumberOfBytesTransferred: DWORD,
+      pvOverlapped: pointer,
+    ): HRESULT {.stdcall.}
+
   IHostIoCompletionManager* {.pure.} = object
     lpVtbl*: ptr IHostIoCompletionManagerVtbl
+
   IHostIoCompletionManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateIoCompletionPort*: proc(self: ptr IHostIoCompletionManager, phPort: ptr HANDLE): HRESULT {.stdcall.}
-    CloseIoCompletionPort*: proc(self: ptr IHostIoCompletionManager, hPort: HANDLE): HRESULT {.stdcall.}
-    SetMaxThreads*: proc(self: ptr IHostIoCompletionManager, dwMaxIOCompletionThreads: DWORD): HRESULT {.stdcall.}
-    GetMaxThreads*: proc(self: ptr IHostIoCompletionManager, pdwMaxIOCompletionThreads: ptr DWORD): HRESULT {.stdcall.}
-    GetAvailableThreads*: proc(self: ptr IHostIoCompletionManager, pdwAvailableIOCompletionThreads: ptr DWORD): HRESULT {.stdcall.}
-    GetHostOverlappedSize*: proc(self: ptr IHostIoCompletionManager, pcbSize: ptr DWORD): HRESULT {.stdcall.}
-    SetCLRIoCompletionManager*: proc(self: ptr IHostIoCompletionManager, pManager: ptr ICLRIoCompletionManager): HRESULT {.stdcall.}
-    InitializeHostOverlapped*: proc(self: ptr IHostIoCompletionManager, pvOverlapped: pointer): HRESULT {.stdcall.}
-    Bind*: proc(self: ptr IHostIoCompletionManager, hPort: HANDLE, hHandle: HANDLE): HRESULT {.stdcall.}
-    SetMinThreads*: proc(self: ptr IHostIoCompletionManager, dwMinIOCompletionThreads: DWORD): HRESULT {.stdcall.}
-    GetMinThreads*: proc(self: ptr IHostIoCompletionManager, pdwMinIOCompletionThreads: ptr DWORD): HRESULT {.stdcall.}
+    CreateIoCompletionPort*:
+      proc(self: ptr IHostIoCompletionManager, phPort: ptr HANDLE): HRESULT {.stdcall.}
+    CloseIoCompletionPort*:
+      proc(self: ptr IHostIoCompletionManager, hPort: HANDLE): HRESULT {.stdcall.}
+    SetMaxThreads*: proc(
+      self: ptr IHostIoCompletionManager, dwMaxIOCompletionThreads: DWORD
+    ): HRESULT {.stdcall.}
+    GetMaxThreads*: proc(
+      self: ptr IHostIoCompletionManager, pdwMaxIOCompletionThreads: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetAvailableThreads*: proc(
+      self: ptr IHostIoCompletionManager, pdwAvailableIOCompletionThreads: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetHostOverlappedSize*:
+      proc(self: ptr IHostIoCompletionManager, pcbSize: ptr DWORD): HRESULT {.stdcall.}
+    SetCLRIoCompletionManager*: proc(
+      self: ptr IHostIoCompletionManager, pManager: ptr ICLRIoCompletionManager
+    ): HRESULT {.stdcall.}
+    InitializeHostOverlapped*: proc(
+      self: ptr IHostIoCompletionManager, pvOverlapped: pointer
+    ): HRESULT {.stdcall.}
+    Bind*: proc(
+      self: ptr IHostIoCompletionManager, hPort: HANDLE, hHandle: HANDLE
+    ): HRESULT {.stdcall.}
+    SetMinThreads*: proc(
+      self: ptr IHostIoCompletionManager, dwMinIOCompletionThreads: DWORD
+    ): HRESULT {.stdcall.}
+    GetMinThreads*: proc(
+      self: ptr IHostIoCompletionManager, pdwMinIOCompletionThreads: ptr DWORD
+    ): HRESULT {.stdcall.}
+
   ICLRDebugManager* {.pure.} = object
     lpVtbl*: ptr ICLRDebugManagerVtbl
+
   ICLRDebugManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    BeginConnection*: proc(self: ptr ICLRDebugManager, dwConnectionId: CONNID, szConnectionName: ptr uint16): HRESULT {.stdcall.}
-    SetConnectionTasks*: proc(self: ptr ICLRDebugManager, id: CONNID, dwCount: DWORD, ppCLRTask: ptr ptr ICLRTask): HRESULT {.stdcall.}
-    EndConnection*: proc(self: ptr ICLRDebugManager, dwConnectionId: CONNID): HRESULT {.stdcall.}
+    BeginConnection*: proc(
+      self: ptr ICLRDebugManager, dwConnectionId: CONNID, szConnectionName: ptr uint16
+    ): HRESULT {.stdcall.}
+    SetConnectionTasks*: proc(
+      self: ptr ICLRDebugManager,
+      id: CONNID,
+      dwCount: DWORD,
+      ppCLRTask: ptr ptr ICLRTask,
+    ): HRESULT {.stdcall.}
+    EndConnection*:
+      proc(self: ptr ICLRDebugManager, dwConnectionId: CONNID): HRESULT {.stdcall.}
     SetDacl*: proc(self: ptr ICLRDebugManager, pacl: PACL): HRESULT {.stdcall.}
     GetDacl*: proc(self: ptr ICLRDebugManager, pacl: ptr PACL): HRESULT {.stdcall.}
-    IsDebuggerAttached*: proc(self: ptr ICLRDebugManager, pbAttached: ptr BOOL): HRESULT {.stdcall.}
-    SetSymbolReadingPolicy*: proc(self: ptr ICLRDebugManager, policy: ESymbolReadingPolicy): HRESULT {.stdcall.}
+    IsDebuggerAttached*:
+      proc(self: ptr ICLRDebugManager, pbAttached: ptr BOOL): HRESULT {.stdcall.}
+    SetSymbolReadingPolicy*: proc(
+      self: ptr ICLRDebugManager, policy: ESymbolReadingPolicy
+    ): HRESULT {.stdcall.}
+
   ICLRErrorReportingManager* {.pure.} = object
     lpVtbl*: ptr ICLRErrorReportingManagerVtbl
+
   ICLRErrorReportingManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetBucketParametersForCurrentException*: proc(self: ptr ICLRErrorReportingManager, pParams: ptr BucketParameters): HRESULT {.stdcall.}
-    BeginCustomDump*: proc(self: ptr ICLRErrorReportingManager, dwFlavor: ECustomDumpFlavor, dwNumItems: DWORD, items: ptr CustomDumpItem, dwReserved: DWORD): HRESULT {.stdcall.}
+    GetBucketParametersForCurrentException*: proc(
+      self: ptr ICLRErrorReportingManager, pParams: ptr BucketParameters
+    ): HRESULT {.stdcall.}
+    BeginCustomDump*: proc(
+      self: ptr ICLRErrorReportingManager,
+      dwFlavor: ECustomDumpFlavor,
+      dwNumItems: DWORD,
+      items: ptr CustomDumpItem,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
     EndCustomDump*: proc(self: ptr ICLRErrorReportingManager): HRESULT {.stdcall.}
+
   IHostCrst* {.pure.} = object
     lpVtbl*: ptr IHostCrstVtbl
+
   IHostCrstVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Enter*: proc(self: ptr IHostCrst, option: DWORD): HRESULT {.stdcall.}
     Leave*: proc(self: ptr IHostCrst): HRESULT {.stdcall.}
-    TryEnter*: proc(self: ptr IHostCrst, option: DWORD, pbSucceeded: ptr BOOL): HRESULT {.stdcall.}
+    TryEnter*: proc(self: ptr IHostCrst, option: DWORD, pbSucceeded: ptr BOOL): HRESULT {.
+      stdcall
+    .}
     SetSpinCount*: proc(self: ptr IHostCrst, dwSpinCount: DWORD): HRESULT {.stdcall.}
+
   IHostAutoEvent* {.pure.} = object
     lpVtbl*: ptr IHostAutoEventVtbl
+
   IHostAutoEventVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Wait*: proc(self: ptr IHostAutoEvent, dwMilliseconds: DWORD, option: DWORD): HRESULT {.stdcall.}
+    Wait*: proc(self: ptr IHostAutoEvent, dwMilliseconds: DWORD, option: DWORD): HRESULT {.
+      stdcall
+    .}
     Set*: proc(self: ptr IHostAutoEvent): HRESULT {.stdcall.}
+
   IHostManualEvent* {.pure.} = object
     lpVtbl*: ptr IHostManualEventVtbl
+
   IHostManualEventVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Wait*: proc(self: ptr IHostManualEvent, dwMilliseconds: DWORD, option: DWORD): HRESULT {.stdcall.}
+    Wait*: proc(
+      self: ptr IHostManualEvent, dwMilliseconds: DWORD, option: DWORD
+    ): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IHostManualEvent): HRESULT {.stdcall.}
     Set*: proc(self: ptr IHostManualEvent): HRESULT {.stdcall.}
+
   IHostSemaphore* {.pure.} = object
     lpVtbl*: ptr IHostSemaphoreVtbl
+
   IHostSemaphoreVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Wait*: proc(self: ptr IHostSemaphore, dwMilliseconds: DWORD, option: DWORD): HRESULT {.stdcall.}
-    ReleaseSemaphore*: proc(self: ptr IHostSemaphore, lReleaseCount: LONG, lpPreviousCount: ptr LONG): HRESULT {.stdcall.}
+    Wait*: proc(self: ptr IHostSemaphore, dwMilliseconds: DWORD, option: DWORD): HRESULT {.
+      stdcall
+    .}
+    ReleaseSemaphore*: proc(
+      self: ptr IHostSemaphore, lReleaseCount: LONG, lpPreviousCount: ptr LONG
+    ): HRESULT {.stdcall.}
+
   ICLRSyncManager* {.pure.} = object
     lpVtbl*: ptr ICLRSyncManagerVtbl
+
   ICLRSyncManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetMonitorOwner*: proc(self: ptr ICLRSyncManager, Cookie: SIZE_T, ppOwnerHostTask: ptr ptr IHostTask): HRESULT {.stdcall.}
-    CreateRWLockOwnerIterator*: proc(self: ptr ICLRSyncManager, Cookie: SIZE_T, pIterator: ptr SIZE_T): HRESULT {.stdcall.}
-    GetRWLockOwnerNext*: proc(self: ptr ICLRSyncManager, Iterator: SIZE_T, ppOwnerHostTask: ptr ptr IHostTask): HRESULT {.stdcall.}
-    DeleteRWLockOwnerIterator*: proc(self: ptr ICLRSyncManager, Iterator: SIZE_T): HRESULT {.stdcall.}
+    GetMonitorOwner*: proc(
+      self: ptr ICLRSyncManager, Cookie: SIZE_T, ppOwnerHostTask: ptr ptr IHostTask
+    ): HRESULT {.stdcall.}
+    CreateRWLockOwnerIterator*: proc(
+      self: ptr ICLRSyncManager, Cookie: SIZE_T, pIterator: ptr SIZE_T
+    ): HRESULT {.stdcall.}
+    GetRWLockOwnerNext*: proc(
+      self: ptr ICLRSyncManager, Iterator: SIZE_T, ppOwnerHostTask: ptr ptr IHostTask
+    ): HRESULT {.stdcall.}
+    DeleteRWLockOwnerIterator*:
+      proc(self: ptr ICLRSyncManager, Iterator: SIZE_T): HRESULT {.stdcall.}
+
   IHostSyncManager* {.pure.} = object
     lpVtbl*: ptr IHostSyncManagerVtbl
+
   IHostSyncManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetCLRSyncManager*: proc(self: ptr IHostSyncManager, pManager: ptr ICLRSyncManager): HRESULT {.stdcall.}
-    CreateCrst*: proc(self: ptr IHostSyncManager, ppCrst: ptr ptr IHostCrst): HRESULT {.stdcall.}
-    CreateCrstWithSpinCount*: proc(self: ptr IHostSyncManager, dwSpinCount: DWORD, ppCrst: ptr ptr IHostCrst): HRESULT {.stdcall.}
-    CreateAutoEvent*: proc(self: ptr IHostSyncManager, ppEvent: ptr ptr IHostAutoEvent): HRESULT {.stdcall.}
-    CreateManualEvent*: proc(self: ptr IHostSyncManager, bInitialState: BOOL, ppEvent: ptr ptr IHostManualEvent): HRESULT {.stdcall.}
-    CreateMonitorEvent*: proc(self: ptr IHostSyncManager, Cookie: SIZE_T, ppEvent: ptr ptr IHostAutoEvent): HRESULT {.stdcall.}
-    CreateRWLockWriterEvent*: proc(self: ptr IHostSyncManager, Cookie: SIZE_T, ppEvent: ptr ptr IHostAutoEvent): HRESULT {.stdcall.}
-    CreateRWLockReaderEvent*: proc(self: ptr IHostSyncManager, bInitialState: BOOL, Cookie: SIZE_T, ppEvent: ptr ptr IHostManualEvent): HRESULT {.stdcall.}
-    CreateSemaphore*: proc(self: ptr IHostSyncManager, dwInitial: DWORD, dwMax: DWORD, ppSemaphore: ptr ptr IHostSemaphore): HRESULT {.stdcall.}
+    SetCLRSyncManager*: proc(
+      self: ptr IHostSyncManager, pManager: ptr ICLRSyncManager
+    ): HRESULT {.stdcall.}
+    CreateCrst*:
+      proc(self: ptr IHostSyncManager, ppCrst: ptr ptr IHostCrst): HRESULT {.stdcall.}
+    CreateCrstWithSpinCount*: proc(
+      self: ptr IHostSyncManager, dwSpinCount: DWORD, ppCrst: ptr ptr IHostCrst
+    ): HRESULT {.stdcall.}
+    CreateAutoEvent*: proc(
+      self: ptr IHostSyncManager, ppEvent: ptr ptr IHostAutoEvent
+    ): HRESULT {.stdcall.}
+    CreateManualEvent*: proc(
+      self: ptr IHostSyncManager, bInitialState: BOOL, ppEvent: ptr ptr IHostManualEvent
+    ): HRESULT {.stdcall.}
+    CreateMonitorEvent*: proc(
+      self: ptr IHostSyncManager, Cookie: SIZE_T, ppEvent: ptr ptr IHostAutoEvent
+    ): HRESULT {.stdcall.}
+    CreateRWLockWriterEvent*: proc(
+      self: ptr IHostSyncManager, Cookie: SIZE_T, ppEvent: ptr ptr IHostAutoEvent
+    ): HRESULT {.stdcall.}
+    CreateRWLockReaderEvent*: proc(
+      self: ptr IHostSyncManager,
+      bInitialState: BOOL,
+      Cookie: SIZE_T,
+      ppEvent: ptr ptr IHostManualEvent,
+    ): HRESULT {.stdcall.}
+    CreateSemaphore*: proc(
+      self: ptr IHostSyncManager,
+      dwInitial: DWORD,
+      dwMax: DWORD,
+      ppSemaphore: ptr ptr IHostSemaphore,
+    ): HRESULT {.stdcall.}
+
   ICLRPolicyManager* {.pure.} = object
     lpVtbl*: ptr ICLRPolicyManagerVtbl
+
   ICLRPolicyManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetDefaultAction*: proc(self: ptr ICLRPolicyManager, operation: EClrOperation, action: EPolicyAction): HRESULT {.stdcall.}
-    SetTimeout*: proc(self: ptr ICLRPolicyManager, operation: EClrOperation, dwMilliseconds: DWORD): HRESULT {.stdcall.}
-    SetActionOnTimeout*: proc(self: ptr ICLRPolicyManager, operation: EClrOperation, action: EPolicyAction): HRESULT {.stdcall.}
-    SetTimeoutAndAction*: proc(self: ptr ICLRPolicyManager, operation: EClrOperation, dwMilliseconds: DWORD, action: EPolicyAction): HRESULT {.stdcall.}
-    SetActionOnFailure*: proc(self: ptr ICLRPolicyManager, failure: EClrFailure, action: EPolicyAction): HRESULT {.stdcall.}
-    SetUnhandledExceptionPolicy*: proc(self: ptr ICLRPolicyManager, policy: EClrUnhandledException): HRESULT {.stdcall.}
+    SetDefaultAction*: proc(
+      self: ptr ICLRPolicyManager, operation: EClrOperation, action: EPolicyAction
+    ): HRESULT {.stdcall.}
+    SetTimeout*: proc(
+      self: ptr ICLRPolicyManager, operation: EClrOperation, dwMilliseconds: DWORD
+    ): HRESULT {.stdcall.}
+    SetActionOnTimeout*: proc(
+      self: ptr ICLRPolicyManager, operation: EClrOperation, action: EPolicyAction
+    ): HRESULT {.stdcall.}
+    SetTimeoutAndAction*: proc(
+      self: ptr ICLRPolicyManager,
+      operation: EClrOperation,
+      dwMilliseconds: DWORD,
+      action: EPolicyAction,
+    ): HRESULT {.stdcall.}
+    SetActionOnFailure*: proc(
+      self: ptr ICLRPolicyManager, failure: EClrFailure, action: EPolicyAction
+    ): HRESULT {.stdcall.}
+    SetUnhandledExceptionPolicy*: proc(
+      self: ptr ICLRPolicyManager, policy: EClrUnhandledException
+    ): HRESULT {.stdcall.}
+
   IHostPolicyManager* {.pure.} = object
     lpVtbl*: ptr IHostPolicyManagerVtbl
+
   IHostPolicyManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnDefaultAction*: proc(self: ptr IHostPolicyManager, operation: EClrOperation, action: EPolicyAction): HRESULT {.stdcall.}
-    OnTimeout*: proc(self: ptr IHostPolicyManager, operation: EClrOperation, action: EPolicyAction): HRESULT {.stdcall.}
-    OnFailure*: proc(self: ptr IHostPolicyManager, failure: EClrFailure, action: EPolicyAction): HRESULT {.stdcall.}
+    OnDefaultAction*: proc(
+      self: ptr IHostPolicyManager, operation: EClrOperation, action: EPolicyAction
+    ): HRESULT {.stdcall.}
+    OnTimeout*: proc(
+      self: ptr IHostPolicyManager, operation: EClrOperation, action: EPolicyAction
+    ): HRESULT {.stdcall.}
+    OnFailure*: proc(
+      self: ptr IHostPolicyManager, failure: EClrFailure, action: EPolicyAction
+    ): HRESULT {.stdcall.}
+
   IActionOnCLREvent* {.pure.} = object
     lpVtbl*: ptr IActionOnCLREventVtbl
+
   IActionOnCLREventVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnEvent*: proc(self: ptr IActionOnCLREvent, event: EClrEvent, data: PVOID): HRESULT {.stdcall.}
+    OnEvent*: proc(self: ptr IActionOnCLREvent, event: EClrEvent, data: PVOID): HRESULT {.
+      stdcall
+    .}
+
   ICLROnEventManager* {.pure.} = object
     lpVtbl*: ptr ICLROnEventManagerVtbl
+
   ICLROnEventManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RegisterActionOnEvent*: proc(self: ptr ICLROnEventManager, event: EClrEvent, pAction: ptr IActionOnCLREvent): HRESULT {.stdcall.}
-    UnregisterActionOnEvent*: proc(self: ptr ICLROnEventManager, event: EClrEvent, pAction: ptr IActionOnCLREvent): HRESULT {.stdcall.}
+    RegisterActionOnEvent*: proc(
+      self: ptr ICLROnEventManager, event: EClrEvent, pAction: ptr IActionOnCLREvent
+    ): HRESULT {.stdcall.}
+    UnregisterActionOnEvent*: proc(
+      self: ptr ICLROnEventManager, event: EClrEvent, pAction: ptr IActionOnCLREvent
+    ): HRESULT {.stdcall.}
+
   IHostGCManager* {.pure.} = object
     lpVtbl*: ptr IHostGCManagerVtbl
+
   IHostGCManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     ThreadIsBlockingForSuspension*: proc(self: ptr IHostGCManager): HRESULT {.stdcall.}
     SuspensionStarting*: proc(self: ptr IHostGCManager): HRESULT {.stdcall.}
-    SuspensionEnding*: proc(self: ptr IHostGCManager, Generation: DWORD): HRESULT {.stdcall.}
+    SuspensionEnding*:
+      proc(self: ptr IHostGCManager, Generation: DWORD): HRESULT {.stdcall.}
+
   ICLRAssemblyReferenceList* {.pure.} = object
     lpVtbl*: ptr ICLRAssemblyReferenceListVtbl
+
   ICLRAssemblyReferenceListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    IsStringAssemblyReferenceInList*: proc(self: ptr ICLRAssemblyReferenceList, pwzAssemblyName: LPCWSTR): HRESULT {.stdcall.}
-    IsAssemblyReferenceInList*: proc(self: ptr ICLRAssemblyReferenceList, pName: ptr IUnknown): HRESULT {.stdcall.}
+    IsStringAssemblyReferenceInList*: proc(
+      self: ptr ICLRAssemblyReferenceList, pwzAssemblyName: LPCWSTR
+    ): HRESULT {.stdcall.}
+    IsAssemblyReferenceInList*: proc(
+      self: ptr ICLRAssemblyReferenceList, pName: ptr IUnknown
+    ): HRESULT {.stdcall.}
+
   ICLRReferenceAssemblyEnum* {.pure.} = object
     lpVtbl*: ptr ICLRReferenceAssemblyEnumVtbl
+
   ICLRReferenceAssemblyEnumVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Get*: proc(self: ptr ICLRReferenceAssemblyEnum, dwIndex: DWORD, pwzBuffer: LPWSTR, pcchBufferSize: ptr DWORD): HRESULT {.stdcall.}
+    Get*: proc(
+      self: ptr ICLRReferenceAssemblyEnum,
+      dwIndex: DWORD,
+      pwzBuffer: LPWSTR,
+      pcchBufferSize: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   ICLRProbingAssemblyEnum* {.pure.} = object
     lpVtbl*: ptr ICLRProbingAssemblyEnumVtbl
+
   ICLRProbingAssemblyEnumVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Get*: proc(self: ptr ICLRProbingAssemblyEnum, dwIndex: DWORD, pwzBuffer: LPWSTR, pcchBufferSize: ptr DWORD): HRESULT {.stdcall.}
+    Get*: proc(
+      self: ptr ICLRProbingAssemblyEnum,
+      dwIndex: DWORD,
+      pwzBuffer: LPWSTR,
+      pcchBufferSize: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   ICLRAssemblyIdentityManager* {.pure.} = object
     lpVtbl*: ptr ICLRAssemblyIdentityManagerVtbl
+
   ICLRAssemblyIdentityManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCLRAssemblyReferenceList*: proc(self: ptr ICLRAssemblyIdentityManager, ppwzAssemblyReferences: ptr LPCWSTR, dwNumOfReferences: DWORD, ppReferenceList: ptr ptr ICLRAssemblyReferenceList): HRESULT {.stdcall.}
-    GetBindingIdentityFromFile*: proc(self: ptr ICLRAssemblyIdentityManager, pwzFilePath: LPCWSTR, dwFlags: DWORD, pwzBuffer: LPWSTR, pcchBufferSize: ptr DWORD): HRESULT {.stdcall.}
-    GetBindingIdentityFromStream*: proc(self: ptr ICLRAssemblyIdentityManager, pStream: ptr IStream, dwFlags: DWORD, pwzBuffer: LPWSTR, pcchBufferSize: ptr DWORD): HRESULT {.stdcall.}
-    GetReferencedAssembliesFromFile*: proc(self: ptr ICLRAssemblyIdentityManager, pwzFilePath: LPCWSTR, dwFlags: DWORD, pExcludeAssembliesList: ptr ICLRAssemblyReferenceList, ppReferenceEnum: ptr ptr ICLRReferenceAssemblyEnum): HRESULT {.stdcall.}
-    GetReferencedAssembliesFromStream*: proc(self: ptr ICLRAssemblyIdentityManager, pStream: ptr IStream, dwFlags: DWORD, pExcludeAssembliesList: ptr ICLRAssemblyReferenceList, ppReferenceEnum: ptr ptr ICLRReferenceAssemblyEnum): HRESULT {.stdcall.}
-    GetProbingAssembliesFromReference*: proc(self: ptr ICLRAssemblyIdentityManager, dwMachineType: DWORD, dwFlags: DWORD, pwzReferenceIdentity: LPCWSTR, ppProbingAssemblyEnum: ptr ptr ICLRProbingAssemblyEnum): HRESULT {.stdcall.}
-    IsStronglyNamed*: proc(self: ptr ICLRAssemblyIdentityManager, pwzAssemblyIdentity: LPCWSTR, pbIsStronglyNamed: ptr BOOL): HRESULT {.stdcall.}
+    GetCLRAssemblyReferenceList*: proc(
+      self: ptr ICLRAssemblyIdentityManager,
+      ppwzAssemblyReferences: ptr LPCWSTR,
+      dwNumOfReferences: DWORD,
+      ppReferenceList: ptr ptr ICLRAssemblyReferenceList,
+    ): HRESULT {.stdcall.}
+    GetBindingIdentityFromFile*: proc(
+      self: ptr ICLRAssemblyIdentityManager,
+      pwzFilePath: LPCWSTR,
+      dwFlags: DWORD,
+      pwzBuffer: LPWSTR,
+      pcchBufferSize: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetBindingIdentityFromStream*: proc(
+      self: ptr ICLRAssemblyIdentityManager,
+      pStream: ptr IStream,
+      dwFlags: DWORD,
+      pwzBuffer: LPWSTR,
+      pcchBufferSize: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetReferencedAssembliesFromFile*: proc(
+      self: ptr ICLRAssemblyIdentityManager,
+      pwzFilePath: LPCWSTR,
+      dwFlags: DWORD,
+      pExcludeAssembliesList: ptr ICLRAssemblyReferenceList,
+      ppReferenceEnum: ptr ptr ICLRReferenceAssemblyEnum,
+    ): HRESULT {.stdcall.}
+    GetReferencedAssembliesFromStream*: proc(
+      self: ptr ICLRAssemblyIdentityManager,
+      pStream: ptr IStream,
+      dwFlags: DWORD,
+      pExcludeAssembliesList: ptr ICLRAssemblyReferenceList,
+      ppReferenceEnum: ptr ptr ICLRReferenceAssemblyEnum,
+    ): HRESULT {.stdcall.}
+    GetProbingAssembliesFromReference*: proc(
+      self: ptr ICLRAssemblyIdentityManager,
+      dwMachineType: DWORD,
+      dwFlags: DWORD,
+      pwzReferenceIdentity: LPCWSTR,
+      ppProbingAssemblyEnum: ptr ptr ICLRProbingAssemblyEnum,
+    ): HRESULT {.stdcall.}
+    IsStronglyNamed*: proc(
+      self: ptr ICLRAssemblyIdentityManager,
+      pwzAssemblyIdentity: LPCWSTR,
+      pbIsStronglyNamed: ptr BOOL,
+    ): HRESULT {.stdcall.}
+
   ICLRHostBindingPolicyManager* {.pure.} = object
     lpVtbl*: ptr ICLRHostBindingPolicyManagerVtbl
+
   ICLRHostBindingPolicyManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ModifyApplicationPolicy*: proc(self: ptr ICLRHostBindingPolicyManager, pwzSourceAssemblyIdentity: LPCWSTR, pwzTargetAssemblyIdentity: LPCWSTR, pbApplicationPolicy: ptr BYTE, cbAppPolicySize: DWORD, dwPolicyModifyFlags: DWORD, pbNewApplicationPolicy: ptr BYTE, pcbNewAppPolicySize: ptr DWORD): HRESULT {.stdcall.}
-    EvaluatePolicy*: proc(self: ptr ICLRHostBindingPolicyManager, pwzReferenceIdentity: LPCWSTR, pbApplicationPolicy: ptr BYTE, cbAppPolicySize: DWORD, pwzPostPolicyReferenceIdentity: LPWSTR, pcchPostPolicyReferenceIdentity: ptr DWORD, pdwPoliciesApplied: ptr DWORD): HRESULT {.stdcall.}
+    ModifyApplicationPolicy*: proc(
+      self: ptr ICLRHostBindingPolicyManager,
+      pwzSourceAssemblyIdentity: LPCWSTR,
+      pwzTargetAssemblyIdentity: LPCWSTR,
+      pbApplicationPolicy: ptr BYTE,
+      cbAppPolicySize: DWORD,
+      dwPolicyModifyFlags: DWORD,
+      pbNewApplicationPolicy: ptr BYTE,
+      pcbNewAppPolicySize: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    EvaluatePolicy*: proc(
+      self: ptr ICLRHostBindingPolicyManager,
+      pwzReferenceIdentity: LPCWSTR,
+      pbApplicationPolicy: ptr BYTE,
+      cbAppPolicySize: DWORD,
+      pwzPostPolicyReferenceIdentity: LPWSTR,
+      pcchPostPolicyReferenceIdentity: ptr DWORD,
+      pdwPoliciesApplied: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   ICLRGCManager* {.pure.} = object
     lpVtbl*: ptr ICLRGCManagerVtbl
+
   ICLRGCManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Collect*: proc(self: ptr ICLRGCManager, Generation: LONG): HRESULT {.stdcall.}
-    GetStats*: proc(self: ptr ICLRGCManager, pStats: ptr COR_GC_STATS): HRESULT {.stdcall.}
-    SetGCStartupLimits*: proc(self: ptr ICLRGCManager, SegmentSize: DWORD, MaxGen0Size: DWORD): HRESULT {.stdcall.}
+    GetStats*:
+      proc(self: ptr ICLRGCManager, pStats: ptr COR_GC_STATS): HRESULT {.stdcall.}
+    SetGCStartupLimits*: proc(
+      self: ptr ICLRGCManager, SegmentSize: DWORD, MaxGen0Size: DWORD
+    ): HRESULT {.stdcall.}
+
   ICLRGCManager2* {.pure.} = object
     lpVtbl*: ptr ICLRGCManager2Vtbl
+
   ICLRGCManager2Vtbl* {.pure, inheritable.} = object of ICLRGCManagerVtbl
-    SetGCStartupLimitsEx*: proc(self: ptr ICLRGCManager2, SegmentSize: SIZE_T, MaxGen0Size: SIZE_T): HRESULT {.stdcall.}
+    SetGCStartupLimitsEx*: proc(
+      self: ptr ICLRGCManager2, SegmentSize: SIZE_T, MaxGen0Size: SIZE_T
+    ): HRESULT {.stdcall.}
+
   IHostAssemblyStore* {.pure.} = object
     lpVtbl*: ptr IHostAssemblyStoreVtbl
+
   IHostAssemblyStoreVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ProvideAssembly*: proc(self: ptr IHostAssemblyStore, pBindInfo: ptr AssemblyBindInfo, pAssemblyId: ptr UINT64, pContext: ptr UINT64, ppStmAssemblyImage: ptr ptr IStream, ppStmPDB: ptr ptr IStream): HRESULT {.stdcall.}
-    ProvideModule*: proc(self: ptr IHostAssemblyStore, pBindInfo: ptr ModuleBindInfo, pdwModuleId: ptr DWORD, ppStmModuleImage: ptr ptr IStream, ppStmPDB: ptr ptr IStream): HRESULT {.stdcall.}
+    ProvideAssembly*: proc(
+      self: ptr IHostAssemblyStore,
+      pBindInfo: ptr AssemblyBindInfo,
+      pAssemblyId: ptr UINT64,
+      pContext: ptr UINT64,
+      ppStmAssemblyImage: ptr ptr IStream,
+      ppStmPDB: ptr ptr IStream,
+    ): HRESULT {.stdcall.}
+    ProvideModule*: proc(
+      self: ptr IHostAssemblyStore,
+      pBindInfo: ptr ModuleBindInfo,
+      pdwModuleId: ptr DWORD,
+      ppStmModuleImage: ptr ptr IStream,
+      ppStmPDB: ptr ptr IStream,
+    ): HRESULT {.stdcall.}
+
   IHostAssemblyManager* {.pure.} = object
     lpVtbl*: ptr IHostAssemblyManagerVtbl
+
   IHostAssemblyManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetNonHostStoreAssemblies*: proc(self: ptr IHostAssemblyManager, ppReferenceList: ptr ptr ICLRAssemblyReferenceList): HRESULT {.stdcall.}
-    GetAssemblyStore*: proc(self: ptr IHostAssemblyManager, ppAssemblyStore: ptr ptr IHostAssemblyStore): HRESULT {.stdcall.}
+    GetNonHostStoreAssemblies*: proc(
+      self: ptr IHostAssemblyManager, ppReferenceList: ptr ptr ICLRAssemblyReferenceList
+    ): HRESULT {.stdcall.}
+    GetAssemblyStore*: proc(
+      self: ptr IHostAssemblyManager, ppAssemblyStore: ptr ptr IHostAssemblyStore
+    ): HRESULT {.stdcall.}
+
   IHostControl* {.pure.} = object
     lpVtbl*: ptr IHostControlVtbl
+
   IHostControlVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetHostManager*: proc(self: ptr IHostControl, riid: REFIID, ppObject: ptr pointer): HRESULT {.stdcall.}
-    SetAppDomainManager*: proc(self: ptr IHostControl, dwAppDomainID: DWORD, pUnkAppDomainManager: ptr IUnknown): HRESULT {.stdcall.}
+    GetHostManager*: proc(
+      self: ptr IHostControl, riid: REFIID, ppObject: ptr pointer
+    ): HRESULT {.stdcall.}
+    SetAppDomainManager*: proc(
+      self: ptr IHostControl, dwAppDomainID: DWORD, pUnkAppDomainManager: ptr IUnknown
+    ): HRESULT {.stdcall.}
+
   ICLRControl* {.pure.} = object
     lpVtbl*: ptr ICLRControlVtbl
+
   ICLRControlVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCLRManager*: proc(self: ptr ICLRControl, riid: REFIID, ppObject: ptr pointer): HRESULT {.stdcall.}
-    SetAppDomainManagerType*: proc(self: ptr ICLRControl, pwzAppDomainManagerAssembly: LPCWSTR, pwzAppDomainManagerType: LPCWSTR): HRESULT {.stdcall.}
+    GetCLRManager*: proc(
+      self: ptr ICLRControl, riid: REFIID, ppObject: ptr pointer
+    ): HRESULT {.stdcall.}
+    SetAppDomainManagerType*: proc(
+      self: ptr ICLRControl,
+      pwzAppDomainManagerAssembly: LPCWSTR,
+      pwzAppDomainManagerType: LPCWSTR,
+    ): HRESULT {.stdcall.}
+
   ICLRRuntimeHost* {.pure.} = object
     lpVtbl*: ptr ICLRRuntimeHostVtbl
+
   ICLRRuntimeHostVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Start*: proc(self: ptr ICLRRuntimeHost): HRESULT {.stdcall.}
     Stop*: proc(self: ptr ICLRRuntimeHost): HRESULT {.stdcall.}
-    SetHostControl*: proc(self: ptr ICLRRuntimeHost, pHostControl: ptr IHostControl): HRESULT {.stdcall.}
-    GetCLRControl*: proc(self: ptr ICLRRuntimeHost, pCLRControl: ptr ptr ICLRControl): HRESULT {.stdcall.}
-    UnloadAppDomain*: proc(self: ptr ICLRRuntimeHost, dwAppDomainId: DWORD, fWaitUntilDone: BOOL): HRESULT {.stdcall.}
-    ExecuteInAppDomain*: proc(self: ptr ICLRRuntimeHost, dwAppDomainId: DWORD, pCallback: FExecuteInAppDomainCallback, cookie: pointer): HRESULT {.stdcall.}
-    GetCurrentAppDomainId*: proc(self: ptr ICLRRuntimeHost, pdwAppDomainId: ptr DWORD): HRESULT {.stdcall.}
-    ExecuteApplication*: proc(self: ptr ICLRRuntimeHost, pwzAppFullName: LPCWSTR, dwManifestPaths: DWORD, ppwzManifestPaths: ptr LPCWSTR, dwActivationData: DWORD, ppwzActivationData: ptr LPCWSTR, pReturnValue: ptr int32): HRESULT {.stdcall.}
-    ExecuteInDefaultAppDomain*: proc(self: ptr ICLRRuntimeHost, pwzAssemblyPath: LPCWSTR, pwzTypeName: LPCWSTR, pwzMethodName: LPCWSTR, pwzArgument: LPCWSTR, pReturnValue: ptr DWORD): HRESULT {.stdcall.}
+    SetHostControl*: proc(
+      self: ptr ICLRRuntimeHost, pHostControl: ptr IHostControl
+    ): HRESULT {.stdcall.}
+    GetCLRControl*: proc(
+      self: ptr ICLRRuntimeHost, pCLRControl: ptr ptr ICLRControl
+    ): HRESULT {.stdcall.}
+    UnloadAppDomain*: proc(
+      self: ptr ICLRRuntimeHost, dwAppDomainId: DWORD, fWaitUntilDone: BOOL
+    ): HRESULT {.stdcall.}
+    ExecuteInAppDomain*: proc(
+      self: ptr ICLRRuntimeHost,
+      dwAppDomainId: DWORD,
+      pCallback: FExecuteInAppDomainCallback,
+      cookie: pointer,
+    ): HRESULT {.stdcall.}
+    GetCurrentAppDomainId*:
+      proc(self: ptr ICLRRuntimeHost, pdwAppDomainId: ptr DWORD): HRESULT {.stdcall.}
+    ExecuteApplication*: proc(
+      self: ptr ICLRRuntimeHost,
+      pwzAppFullName: LPCWSTR,
+      dwManifestPaths: DWORD,
+      ppwzManifestPaths: ptr LPCWSTR,
+      dwActivationData: DWORD,
+      ppwzActivationData: ptr LPCWSTR,
+      pReturnValue: ptr int32,
+    ): HRESULT {.stdcall.}
+    ExecuteInDefaultAppDomain*: proc(
+      self: ptr ICLRRuntimeHost,
+      pwzAssemblyPath: LPCWSTR,
+      pwzTypeName: LPCWSTR,
+      pwzMethodName: LPCWSTR,
+      pwzArgument: LPCWSTR,
+      pReturnValue: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   ICLRHostProtectionManager* {.pure.} = object
     lpVtbl*: ptr ICLRHostProtectionManagerVtbl
+
   ICLRHostProtectionManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetProtectedCategories*: proc(self: ptr ICLRHostProtectionManager, categories: EApiCategories): HRESULT {.stdcall.}
-    SetEagerSerializeGrantSets*: proc(self: ptr ICLRHostProtectionManager): HRESULT {.stdcall.}
+    SetProtectedCategories*: proc(
+      self: ptr ICLRHostProtectionManager, categories: EApiCategories
+    ): HRESULT {.stdcall.}
+    SetEagerSerializeGrantSets*:
+      proc(self: ptr ICLRHostProtectionManager): HRESULT {.stdcall.}
+
   ICLRDomainManager* {.pure.} = object
     lpVtbl*: ptr ICLRDomainManagerVtbl
+
   ICLRDomainManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetAppDomainManagerType*: proc(self: ptr ICLRDomainManager, wszAppDomainManagerAssembly: LPCWSTR, wszAppDomainManagerType: LPCWSTR, dwInitializeDomainFlags: EInitializeNewDomainFlags): HRESULT {.stdcall.}
-    SetPropertiesForDefaultAppDomain*: proc(self: ptr ICLRDomainManager, nProperties: DWORD, pwszPropertyNames: ptr LPCWSTR, pwszPropertyValues: ptr LPCWSTR): HRESULT {.stdcall.}
+    SetAppDomainManagerType*: proc(
+      self: ptr ICLRDomainManager,
+      wszAppDomainManagerAssembly: LPCWSTR,
+      wszAppDomainManagerType: LPCWSTR,
+      dwInitializeDomainFlags: EInitializeNewDomainFlags,
+    ): HRESULT {.stdcall.}
+    SetPropertiesForDefaultAppDomain*: proc(
+      self: ptr ICLRDomainManager,
+      nProperties: DWORD,
+      pwszPropertyNames: ptr LPCWSTR,
+      pwszPropertyValues: ptr LPCWSTR,
+    ): HRESULT {.stdcall.}
+
   ITypeName* {.pure.} = object
     lpVtbl*: ptr ITypeNameVtbl
+
   ITypeNameVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetNameCount*: proc(self: ptr ITypeName, pCount: ptr DWORD): HRESULT {.stdcall.}
-    GetNames*: proc(self: ptr ITypeName, count: DWORD, rgbszNames: ptr BSTR, pCount: ptr DWORD): HRESULT {.stdcall.}
-    GetTypeArgumentCount*: proc(self: ptr ITypeName, pCount: ptr DWORD): HRESULT {.stdcall.}
-    GetTypeArguments*: proc(self: ptr ITypeName, count: DWORD, rgpArguments: ptr ptr ITypeName, pCount: ptr DWORD): HRESULT {.stdcall.}
-    GetModifierLength*: proc(self: ptr ITypeName, pCount: ptr DWORD): HRESULT {.stdcall.}
-    GetModifiers*: proc(self: ptr ITypeName, count: DWORD, rgModifiers: ptr DWORD, pCount: ptr DWORD): HRESULT {.stdcall.}
-    GetAssemblyName*: proc(self: ptr ITypeName, rgbszAssemblyNames: ptr BSTR): HRESULT {.stdcall.}
+    GetNames*: proc(
+      self: ptr ITypeName, count: DWORD, rgbszNames: ptr BSTR, pCount: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetTypeArgumentCount*:
+      proc(self: ptr ITypeName, pCount: ptr DWORD): HRESULT {.stdcall.}
+    GetTypeArguments*: proc(
+      self: ptr ITypeName,
+      count: DWORD,
+      rgpArguments: ptr ptr ITypeName,
+      pCount: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetModifierLength*:
+      proc(self: ptr ITypeName, pCount: ptr DWORD): HRESULT {.stdcall.}
+    GetModifiers*: proc(
+      self: ptr ITypeName, count: DWORD, rgModifiers: ptr DWORD, pCount: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetAssemblyName*:
+      proc(self: ptr ITypeName, rgbszAssemblyNames: ptr BSTR): HRESULT {.stdcall.}
+
   ITypeNameBuilder* {.pure.} = object
     lpVtbl*: ptr ITypeNameBuilderVtbl
+
   ITypeNameBuilderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     OpenGenericArguments*: proc(self: ptr ITypeNameBuilder): HRESULT {.stdcall.}
     CloseGenericArguments*: proc(self: ptr ITypeNameBuilder): HRESULT {.stdcall.}
@@ -872,366 +1524,1116 @@
     AddByRef*: proc(self: ptr ITypeNameBuilder): HRESULT {.stdcall.}
     AddSzArray*: proc(self: ptr ITypeNameBuilder): HRESULT {.stdcall.}
     AddArray*: proc(self: ptr ITypeNameBuilder, rank: DWORD): HRESULT {.stdcall.}
-    AddAssemblySpec*: proc(self: ptr ITypeNameBuilder, szAssemblySpec: LPCWSTR): HRESULT {.stdcall.}
-    ToString*: proc(self: ptr ITypeNameBuilder, pszStringRepresentation: ptr BSTR): HRESULT {.stdcall.}
+    AddAssemblySpec*:
+      proc(self: ptr ITypeNameBuilder, szAssemblySpec: LPCWSTR): HRESULT {.stdcall.}
+    ToString*: proc(
+      self: ptr ITypeNameBuilder, pszStringRepresentation: ptr BSTR
+    ): HRESULT {.stdcall.}
     Clear*: proc(self: ptr ITypeNameBuilder): HRESULT {.stdcall.}
+
   ITypeNameFactory* {.pure.} = object
     lpVtbl*: ptr ITypeNameFactoryVtbl
+
   ITypeNameFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ParseTypeName*: proc(self: ptr ITypeNameFactory, szName: LPCWSTR, pError: ptr DWORD, ppTypeName: ptr ptr ITypeName): HRESULT {.stdcall.}
-    GetTypeNameBuilder*: proc(self: ptr ITypeNameFactory, ppTypeBuilder: ptr ptr ITypeNameBuilder): HRESULT {.stdcall.}
+    ParseTypeName*: proc(
+      self: ptr ITypeNameFactory,
+      szName: LPCWSTR,
+      pError: ptr DWORD,
+      ppTypeName: ptr ptr ITypeName,
+    ): HRESULT {.stdcall.}
+    GetTypeNameBuilder*: proc(
+      self: ptr ITypeNameFactory, ppTypeBuilder: ptr ptr ITypeNameBuilder
+    ): HRESULT {.stdcall.}
+
   IApartmentCallback* {.pure.} = object
     lpVtbl*: ptr IApartmentCallbackVtbl
+
   IApartmentCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    DoCallback*: proc(self: ptr IApartmentCallback, pFunc: SIZE_T, pData: SIZE_T): HRESULT {.stdcall.}
+    DoCallback*: proc(
+      self: ptr IApartmentCallback, pFunc: SIZE_T, pData: SIZE_T
+    ): HRESULT {.stdcall.}
+
   IManagedObject* {.pure.} = object
     lpVtbl*: ptr IManagedObjectVtbl
+
   IManagedObjectVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSerializedBuffer*: proc(self: ptr IManagedObject, pBSTR: ptr BSTR): HRESULT {.stdcall.}
-    GetObjectIdentity*: proc(self: ptr IManagedObject, pBSTRGUID: ptr BSTR, AppDomainID: ptr int32, pCCW: ptr int32): HRESULT {.stdcall.}
+    GetSerializedBuffer*:
+      proc(self: ptr IManagedObject, pBSTR: ptr BSTR): HRESULT {.stdcall.}
+    GetObjectIdentity*: proc(
+      self: ptr IManagedObject,
+      pBSTRGUID: ptr BSTR,
+      AppDomainID: ptr int32,
+      pCCW: ptr int32,
+    ): HRESULT {.stdcall.}
+
   ICatalogServices* {.pure.} = object
     lpVtbl*: ptr ICatalogServicesVtbl
+
   ICatalogServicesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Autodone*: proc(self: ptr ICatalogServices): HRESULT {.stdcall.}
     NotAutodone*: proc(self: ptr ICatalogServices): HRESULT {.stdcall.}
+
   IHostSecurityContext* {.pure.} = object
     lpVtbl*: ptr IHostSecurityContextVtbl
+
   IHostSecurityContextVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Capture*: proc(self: ptr IHostSecurityContext, ppClonedContext: ptr ptr IHostSecurityContext): HRESULT {.stdcall.}
+    Capture*: proc(
+      self: ptr IHostSecurityContext, ppClonedContext: ptr ptr IHostSecurityContext
+    ): HRESULT {.stdcall.}
+
   IHostSecurityManager* {.pure.} = object
     lpVtbl*: ptr IHostSecurityManagerVtbl
+
   IHostSecurityManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ImpersonateLoggedOnUser*: proc(self: ptr IHostSecurityManager, hToken: HANDLE): HRESULT {.stdcall.}
+    ImpersonateLoggedOnUser*:
+      proc(self: ptr IHostSecurityManager, hToken: HANDLE): HRESULT {.stdcall.}
     RevertToSelf*: proc(self: ptr IHostSecurityManager): HRESULT {.stdcall.}
-    OpenThreadToken*: proc(self: ptr IHostSecurityManager, dwDesiredAccess: DWORD, bOpenAsSelf: BOOL, phThreadToken: ptr HANDLE): HRESULT {.stdcall.}
-    SetThreadToken*: proc(self: ptr IHostSecurityManager, hToken: HANDLE): HRESULT {.stdcall.}
-    GetSecurityContext*: proc(self: ptr IHostSecurityManager, eContextType: EContextType, ppSecurityContext: ptr ptr IHostSecurityContext): HRESULT {.stdcall.}
-    SetSecurityContext*: proc(self: ptr IHostSecurityManager, eContextType: EContextType, pSecurityContext: ptr IHostSecurityContext): HRESULT {.stdcall.}
+    OpenThreadToken*: proc(
+      self: ptr IHostSecurityManager,
+      dwDesiredAccess: DWORD,
+      bOpenAsSelf: BOOL,
+      phThreadToken: ptr HANDLE,
+    ): HRESULT {.stdcall.}
+    SetThreadToken*:
+      proc(self: ptr IHostSecurityManager, hToken: HANDLE): HRESULT {.stdcall.}
+    GetSecurityContext*: proc(
+      self: ptr IHostSecurityManager,
+      eContextType: EContextType,
+      ppSecurityContext: ptr ptr IHostSecurityContext,
+    ): HRESULT {.stdcall.}
+    SetSecurityContext*: proc(
+      self: ptr IHostSecurityManager,
+      eContextType: EContextType,
+      pSecurityContext: ptr IHostSecurityContext,
+    ): HRESULT {.stdcall.}
+
   ICLRAppDomainResourceMonitor* {.pure.} = object
     lpVtbl*: ptr ICLRAppDomainResourceMonitorVtbl
+
   ICLRAppDomainResourceMonitorVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCurrentAllocated*: proc(self: ptr ICLRAppDomainResourceMonitor, dwAppDomainId: DWORD, pBytesAllocated: ptr ULONGLONG): HRESULT {.stdcall.}
-    GetCurrentSurvived*: proc(self: ptr ICLRAppDomainResourceMonitor, dwAppDomainId: DWORD, pAppDomainBytesSurvived: ptr ULONGLONG, pTotalBytesSurvived: ptr ULONGLONG): HRESULT {.stdcall.}
-    GetCurrentCpuTime*: proc(self: ptr ICLRAppDomainResourceMonitor, dwAppDomainId: DWORD, pMilliseconds: ptr ULONGLONG): HRESULT {.stdcall.}
+    GetCurrentAllocated*: proc(
+      self: ptr ICLRAppDomainResourceMonitor,
+      dwAppDomainId: DWORD,
+      pBytesAllocated: ptr ULONGLONG,
+    ): HRESULT {.stdcall.}
+    GetCurrentSurvived*: proc(
+      self: ptr ICLRAppDomainResourceMonitor,
+      dwAppDomainId: DWORD,
+      pAppDomainBytesSurvived: ptr ULONGLONG,
+      pTotalBytesSurvived: ptr ULONGLONG,
+    ): HRESULT {.stdcall.}
+    GetCurrentCpuTime*: proc(
+      self: ptr ICLRAppDomainResourceMonitor,
+      dwAppDomainId: DWORD,
+      pMilliseconds: ptr ULONGLONG,
+    ): HRESULT {.stdcall.}
+
   ICLRMetaHost* {.pure.} = object
     lpVtbl*: ptr ICLRMetaHostVtbl
+
   ICLRMetaHostVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetRuntime*: proc(self: ptr ICLRMetaHost, pwzVersion: LPCWSTR, riid: REFIID, ppRuntime: ptr LPVOID): HRESULT {.stdcall.}
-    GetVersionFromFile*: proc(self: ptr ICLRMetaHost, pwzFilePath: LPCWSTR, pwzBuffer: LPWSTR, pcchBuffer: ptr DWORD): HRESULT {.stdcall.}
-    EnumerateInstalledRuntimes*: proc(self: ptr ICLRMetaHost, ppEnumerator: ptr ptr IEnumUnknown): HRESULT {.stdcall.}
-    EnumerateLoadedRuntimes*: proc(self: ptr ICLRMetaHost, hndProcess: HANDLE, ppEnumerator: ptr ptr IEnumUnknown): HRESULT {.stdcall.}
-    RequestRuntimeLoadedNotification*: proc(self: ptr ICLRMetaHost, pCallbackFunction: RuntimeLoadedCallbackFnPtr): HRESULT {.stdcall.}
-    QueryLegacyV2RuntimeBinding*: proc(self: ptr ICLRMetaHost, riid: REFIID, ppUnk: ptr LPVOID): HRESULT {.stdcall.}
+    GetRuntime*: proc(
+      self: ptr ICLRMetaHost, pwzVersion: LPCWSTR, riid: REFIID, ppRuntime: ptr LPVOID
+    ): HRESULT {.stdcall.}
+    GetVersionFromFile*: proc(
+      self: ptr ICLRMetaHost,
+      pwzFilePath: LPCWSTR,
+      pwzBuffer: LPWSTR,
+      pcchBuffer: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    EnumerateInstalledRuntimes*: proc(
+      self: ptr ICLRMetaHost, ppEnumerator: ptr ptr IEnumUnknown
+    ): HRESULT {.stdcall.}
+    EnumerateLoadedRuntimes*: proc(
+      self: ptr ICLRMetaHost, hndProcess: HANDLE, ppEnumerator: ptr ptr IEnumUnknown
+    ): HRESULT {.stdcall.}
+    RequestRuntimeLoadedNotification*: proc(
+      self: ptr ICLRMetaHost, pCallbackFunction: RuntimeLoadedCallbackFnPtr
+    ): HRESULT {.stdcall.}
+    QueryLegacyV2RuntimeBinding*:
+      proc(self: ptr ICLRMetaHost, riid: REFIID, ppUnk: ptr LPVOID): HRESULT {.stdcall.}
     ExitProcess*: proc(self: ptr ICLRMetaHost, iExitCode: INT32): HRESULT {.stdcall.}
+
   ICLRMetaHostPolicy* {.pure.} = object
     lpVtbl*: ptr ICLRMetaHostPolicyVtbl
+
   ICLRMetaHostPolicyVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetRequestedRuntime*: proc(self: ptr ICLRMetaHostPolicy, dwPolicyFlags: METAHOST_POLICY_FLAGS, pwzBinary: LPCWSTR, pCfgStream: ptr IStream, pwzVersion: LPWSTR, pcchVersion: ptr DWORD, pwzImageVersion: LPWSTR, pcchImageVersion: ptr DWORD, pdwConfigFlags: ptr DWORD, riid: REFIID, ppRuntime: ptr LPVOID): HRESULT {.stdcall.}
+    GetRequestedRuntime*: proc(
+      self: ptr ICLRMetaHostPolicy,
+      dwPolicyFlags: METAHOST_POLICY_FLAGS,
+      pwzBinary: LPCWSTR,
+      pCfgStream: ptr IStream,
+      pwzVersion: LPWSTR,
+      pcchVersion: ptr DWORD,
+      pwzImageVersion: LPWSTR,
+      pcchImageVersion: ptr DWORD,
+      pdwConfigFlags: ptr DWORD,
+      riid: REFIID,
+      ppRuntime: ptr LPVOID,
+    ): HRESULT {.stdcall.}
+
   ICLRProfiling* {.pure.} = object
     lpVtbl*: ptr ICLRProfilingVtbl
+
   ICLRProfilingVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AttachProfiler*: proc(self: ptr ICLRProfiling, dwProfileeProcessID: DWORD, dwMillisecondsMax: DWORD, pClsidProfiler: ptr CLSID, wszProfilerPath: LPCWSTR, pvClientData: pointer, cbClientData: UINT): HRESULT {.stdcall.}
+    AttachProfiler*: proc(
+      self: ptr ICLRProfiling,
+      dwProfileeProcessID: DWORD,
+      dwMillisecondsMax: DWORD,
+      pClsidProfiler: ptr CLSID,
+      wszProfilerPath: LPCWSTR,
+      pvClientData: pointer,
+      cbClientData: UINT,
+    ): HRESULT {.stdcall.}
+
   ICLRDebuggingLibraryProvider* {.pure.} = object
     lpVtbl*: ptr ICLRDebuggingLibraryProviderVtbl
+
   ICLRDebuggingLibraryProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ProvideLibrary*: proc(self: ptr ICLRDebuggingLibraryProvider, pwszFileName: ptr WCHAR, dwTimestamp: DWORD, dwSizeOfImage: DWORD, phModule: ptr HMODULE): HRESULT {.stdcall.}
+    ProvideLibrary*: proc(
+      self: ptr ICLRDebuggingLibraryProvider,
+      pwszFileName: ptr WCHAR,
+      dwTimestamp: DWORD,
+      dwSizeOfImage: DWORD,
+      phModule: ptr HMODULE,
+    ): HRESULT {.stdcall.}
+
   ICLRDebugging* {.pure.} = object
     lpVtbl*: ptr ICLRDebuggingVtbl
+
   ICLRDebuggingVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OpenVirtualProcess*: proc(self: ptr ICLRDebugging, moduleBaseAddress: ULONG64, pDataTarget: ptr IUnknown, pLibraryProvider: ptr ICLRDebuggingLibraryProvider, pMaxDebuggerSupportedVersion: ptr CLR_DEBUGGING_VERSION, riidProcess: REFIID, ppProcess: ptr ptr IUnknown, pVersion: ptr CLR_DEBUGGING_VERSION, pdwFlags: ptr CLR_DEBUGGING_PROCESS_FLAGS): HRESULT {.stdcall.}
+    OpenVirtualProcess*: proc(
+      self: ptr ICLRDebugging,
+      moduleBaseAddress: ULONG64,
+      pDataTarget: ptr IUnknown,
+      pLibraryProvider: ptr ICLRDebuggingLibraryProvider,
+      pMaxDebuggerSupportedVersion: ptr CLR_DEBUGGING_VERSION,
+      riidProcess: REFIID,
+      ppProcess: ptr ptr IUnknown,
+      pVersion: ptr CLR_DEBUGGING_VERSION,
+      pdwFlags: ptr CLR_DEBUGGING_PROCESS_FLAGS,
+    ): HRESULT {.stdcall.}
     CanUnloadNow*: proc(self: ptr ICLRDebugging, hModule: HMODULE): HRESULT {.stdcall.}
+
   ICLRStrongName* {.pure.} = object
     lpVtbl*: ptr ICLRStrongNameVtbl
+
   ICLRStrongNameVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetHashFromAssemblyFile*: proc(self: ptr ICLRStrongName, pszFilePath: LPCSTR, piHashAlg: ptr int32, pbHash: ptr BYTE, cchHash: DWORD, pchHash: ptr DWORD): HRESULT {.stdcall.}
-    GetHashFromAssemblyFileW*: proc(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, piHashAlg: ptr int32, pbHash: ptr BYTE, cchHash: DWORD, pchHash: ptr DWORD): HRESULT {.stdcall.}
-    GetHashFromBlob*: proc(self: ptr ICLRStrongName, pbBlob: ptr BYTE, cchBlob: DWORD, piHashAlg: ptr int32, pbHash: ptr BYTE, cchHash: DWORD, pchHash: ptr DWORD): HRESULT {.stdcall.}
-    GetHashFromFile*: proc(self: ptr ICLRStrongName, pszFilePath: LPCSTR, piHashAlg: ptr int32, pbHash: ptr BYTE, cchHash: DWORD, pchHash: ptr DWORD): HRESULT {.stdcall.}
-    GetHashFromFileW*: proc(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, piHashAlg: ptr int32, pbHash: ptr BYTE, cchHash: DWORD, pchHash: ptr DWORD): HRESULT {.stdcall.}
-    GetHashFromHandle*: proc(self: ptr ICLRStrongName, hFile: HANDLE, piHashAlg: ptr int32, pbHash: ptr BYTE, cchHash: DWORD, pchHash: ptr DWORD): HRESULT {.stdcall.}
-    StrongNameCompareAssemblies*: proc(self: ptr ICLRStrongName, pwzAssembly1: LPCWSTR, pwzAssembly2: LPCWSTR, pdwResult: ptr DWORD): HRESULT {.stdcall.}
-    StrongNameFreeBuffer*: proc(self: ptr ICLRStrongName, pbMemory: ptr BYTE): HRESULT {.stdcall.}
-    StrongNameGetBlob*: proc(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, pbBlob: ptr BYTE, pcbBlob: ptr DWORD): HRESULT {.stdcall.}
-    StrongNameGetBlobFromImage*: proc(self: ptr ICLRStrongName, pbBase: ptr BYTE, dwLength: DWORD, pbBlob: ptr BYTE, pcbBlob: ptr DWORD): HRESULT {.stdcall.}
-    StrongNameGetPublicKey*: proc(self: ptr ICLRStrongName, pwzKeyContainer: LPCWSTR, pbKeyBlob: ptr BYTE, cbKeyBlob: ULONG, ppbPublicKeyBlob: ptr ptr BYTE, pcbPublicKeyBlob: ptr ULONG): HRESULT {.stdcall.}
-    StrongNameHashSize*: proc(self: ptr ICLRStrongName, ulHashAlg: ULONG, pcbSize: ptr DWORD): HRESULT {.stdcall.}
-    StrongNameKeyDelete*: proc(self: ptr ICLRStrongName, pwzKeyContainer: LPCWSTR): HRESULT {.stdcall.}
-    StrongNameKeyGen*: proc(self: ptr ICLRStrongName, pwzKeyContainer: LPCWSTR, dwFlags: DWORD, ppbKeyBlob: ptr ptr BYTE, pcbKeyBlob: ptr ULONG): HRESULT {.stdcall.}
-    StrongNameKeyGenEx*: proc(self: ptr ICLRStrongName, pwzKeyContainer: LPCWSTR, dwFlags: DWORD, dwKeySize: DWORD, ppbKeyBlob: ptr ptr BYTE, pcbKeyBlob: ptr ULONG): HRESULT {.stdcall.}
-    StrongNameKeyInstall*: proc(self: ptr ICLRStrongName, pwzKeyContainer: LPCWSTR, pbKeyBlob: ptr BYTE, cbKeyBlob: ULONG): HRESULT {.stdcall.}
-    StrongNameSignatureGeneration*: proc(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, pwzKeyContainer: LPCWSTR, pbKeyBlob: ptr BYTE, cbKeyBlob: ULONG, ppbSignatureBlob: ptr ptr BYTE, pcbSignatureBlob: ptr ULONG): HRESULT {.stdcall.}
-    StrongNameSignatureGenerationEx*: proc(self: ptr ICLRStrongName, wszFilePath: LPCWSTR, wszKeyContainer: LPCWSTR, pbKeyBlob: ptr BYTE, cbKeyBlob: ULONG, ppbSignatureBlob: ptr ptr BYTE, pcbSignatureBlob: ptr ULONG, dwFlags: DWORD): HRESULT {.stdcall.}
-    StrongNameSignatureSize*: proc(self: ptr ICLRStrongName, pbPublicKeyBlob: ptr BYTE, cbPublicKeyBlob: ULONG, pcbSize: ptr DWORD): HRESULT {.stdcall.}
-    StrongNameSignatureVerification*: proc(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, dwInFlags: DWORD, pdwOutFlags: ptr DWORD): HRESULT {.stdcall.}
-    StrongNameSignatureVerificationEx*: proc(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, fForceVerification: BOOLEAN, pfWasVerified: ptr BOOLEAN): HRESULT {.stdcall.}
-    StrongNameSignatureVerificationFromImage*: proc(self: ptr ICLRStrongName, pbBase: ptr BYTE, dwLength: DWORD, dwInFlags: DWORD, pdwOutFlags: ptr DWORD): HRESULT {.stdcall.}
-    StrongNameTokenFromAssembly*: proc(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, ppbStrongNameToken: ptr ptr BYTE, pcbStrongNameToken: ptr ULONG): HRESULT {.stdcall.}
-    StrongNameTokenFromAssemblyEx*: proc(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, ppbStrongNameToken: ptr ptr BYTE, pcbStrongNameToken: ptr ULONG, ppbPublicKeyBlob: ptr ptr BYTE, pcbPublicKeyBlob: ptr ULONG): HRESULT {.stdcall.}
-    StrongNameTokenFromPublicKey*: proc(self: ptr ICLRStrongName, pbPublicKeyBlob: ptr BYTE, cbPublicKeyBlob: ULONG, ppbStrongNameToken: ptr ptr BYTE, pcbStrongNameToken: ptr ULONG): HRESULT {.stdcall.}
+    GetHashFromAssemblyFile*: proc(
+      self: ptr ICLRStrongName,
+      pszFilePath: LPCSTR,
+      piHashAlg: ptr int32,
+      pbHash: ptr BYTE,
+      cchHash: DWORD,
+      pchHash: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetHashFromAssemblyFileW*: proc(
+      self: ptr ICLRStrongName,
+      pwzFilePath: LPCWSTR,
+      piHashAlg: ptr int32,
+      pbHash: ptr BYTE,
+      cchHash: DWORD,
+      pchHash: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetHashFromBlob*: proc(
+      self: ptr ICLRStrongName,
+      pbBlob: ptr BYTE,
+      cchBlob: DWORD,
+      piHashAlg: ptr int32,
+      pbHash: ptr BYTE,
+      cchHash: DWORD,
+      pchHash: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetHashFromFile*: proc(
+      self: ptr ICLRStrongName,
+      pszFilePath: LPCSTR,
+      piHashAlg: ptr int32,
+      pbHash: ptr BYTE,
+      cchHash: DWORD,
+      pchHash: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetHashFromFileW*: proc(
+      self: ptr ICLRStrongName,
+      pwzFilePath: LPCWSTR,
+      piHashAlg: ptr int32,
+      pbHash: ptr BYTE,
+      cchHash: DWORD,
+      pchHash: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetHashFromHandle*: proc(
+      self: ptr ICLRStrongName,
+      hFile: HANDLE,
+      piHashAlg: ptr int32,
+      pbHash: ptr BYTE,
+      cchHash: DWORD,
+      pchHash: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    StrongNameCompareAssemblies*: proc(
+      self: ptr ICLRStrongName,
+      pwzAssembly1: LPCWSTR,
+      pwzAssembly2: LPCWSTR,
+      pdwResult: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    StrongNameFreeBuffer*:
+      proc(self: ptr ICLRStrongName, pbMemory: ptr BYTE): HRESULT {.stdcall.}
+    StrongNameGetBlob*: proc(
+      self: ptr ICLRStrongName,
+      pwzFilePath: LPCWSTR,
+      pbBlob: ptr BYTE,
+      pcbBlob: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    StrongNameGetBlobFromImage*: proc(
+      self: ptr ICLRStrongName,
+      pbBase: ptr BYTE,
+      dwLength: DWORD,
+      pbBlob: ptr BYTE,
+      pcbBlob: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    StrongNameGetPublicKey*: proc(
+      self: ptr ICLRStrongName,
+      pwzKeyContainer: LPCWSTR,
+      pbKeyBlob: ptr BYTE,
+      cbKeyBlob: ULONG,
+      ppbPublicKeyBlob: ptr ptr BYTE,
+      pcbPublicKeyBlob: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    StrongNameHashSize*: proc(
+      self: ptr ICLRStrongName, ulHashAlg: ULONG, pcbSize: ptr DWORD
+    ): HRESULT {.stdcall.}
+    StrongNameKeyDelete*:
+      proc(self: ptr ICLRStrongName, pwzKeyContainer: LPCWSTR): HRESULT {.stdcall.}
+    StrongNameKeyGen*: proc(
+      self: ptr ICLRStrongName,
+      pwzKeyContainer: LPCWSTR,
+      dwFlags: DWORD,
+      ppbKeyBlob: ptr ptr BYTE,
+      pcbKeyBlob: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    StrongNameKeyGenEx*: proc(
+      self: ptr ICLRStrongName,
+      pwzKeyContainer: LPCWSTR,
+      dwFlags: DWORD,
+      dwKeySize: DWORD,
+      ppbKeyBlob: ptr ptr BYTE,
+      pcbKeyBlob: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    StrongNameKeyInstall*: proc(
+      self: ptr ICLRStrongName,
+      pwzKeyContainer: LPCWSTR,
+      pbKeyBlob: ptr BYTE,
+      cbKeyBlob: ULONG,
+    ): HRESULT {.stdcall.}
+    StrongNameSignatureGeneration*: proc(
+      self: ptr ICLRStrongName,
+      pwzFilePath: LPCWSTR,
+      pwzKeyContainer: LPCWSTR,
+      pbKeyBlob: ptr BYTE,
+      cbKeyBlob: ULONG,
+      ppbSignatureBlob: ptr ptr BYTE,
+      pcbSignatureBlob: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    StrongNameSignatureGenerationEx*: proc(
+      self: ptr ICLRStrongName,
+      wszFilePath: LPCWSTR,
+      wszKeyContainer: LPCWSTR,
+      pbKeyBlob: ptr BYTE,
+      cbKeyBlob: ULONG,
+      ppbSignatureBlob: ptr ptr BYTE,
+      pcbSignatureBlob: ptr ULONG,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    StrongNameSignatureSize*: proc(
+      self: ptr ICLRStrongName,
+      pbPublicKeyBlob: ptr BYTE,
+      cbPublicKeyBlob: ULONG,
+      pcbSize: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    StrongNameSignatureVerification*: proc(
+      self: ptr ICLRStrongName,
+      pwzFilePath: LPCWSTR,
+      dwInFlags: DWORD,
+      pdwOutFlags: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    StrongNameSignatureVerificationEx*: proc(
+      self: ptr ICLRStrongName,
+      pwzFilePath: LPCWSTR,
+      fForceVerification: BOOLEAN,
+      pfWasVerified: ptr BOOLEAN,
+    ): HRESULT {.stdcall.}
+    StrongNameSignatureVerificationFromImage*: proc(
+      self: ptr ICLRStrongName,
+      pbBase: ptr BYTE,
+      dwLength: DWORD,
+      dwInFlags: DWORD,
+      pdwOutFlags: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    StrongNameTokenFromAssembly*: proc(
+      self: ptr ICLRStrongName,
+      pwzFilePath: LPCWSTR,
+      ppbStrongNameToken: ptr ptr BYTE,
+      pcbStrongNameToken: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    StrongNameTokenFromAssemblyEx*: proc(
+      self: ptr ICLRStrongName,
+      pwzFilePath: LPCWSTR,
+      ppbStrongNameToken: ptr ptr BYTE,
+      pcbStrongNameToken: ptr ULONG,
+      ppbPublicKeyBlob: ptr ptr BYTE,
+      pcbPublicKeyBlob: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    StrongNameTokenFromPublicKey*: proc(
+      self: ptr ICLRStrongName,
+      pbPublicKeyBlob: ptr BYTE,
+      cbPublicKeyBlob: ULONG,
+      ppbStrongNameToken: ptr ptr BYTE,
+      pcbStrongNameToken: ptr ULONG,
+    ): HRESULT {.stdcall.}
+
   ICLRStrongName2* {.pure.} = object
     lpVtbl*: ptr ICLRStrongName2Vtbl
+
   ICLRStrongName2Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    StrongNameGetPublicKeyEx*: proc(self: ptr ICLRStrongName2, pwzKeyContainer: LPCWSTR, pbKeyBlob: ptr BYTE, cbKeyBlob: ULONG, ppbPublicKeyBlob: ptr ptr BYTE, pcbPublicKeyBlob: ptr ULONG, uHashAlgId: ULONG, uReserved: ULONG): HRESULT {.stdcall.}
-    StrongNameSignatureVerificationEx2*: proc(self: ptr ICLRStrongName2, wszFilePath: LPCWSTR, fForceVerification: BOOLEAN, pbEcmaPublicKey: ptr BYTE, cbEcmaPublicKey: DWORD, pfWasVerified: ptr BOOLEAN): HRESULT {.stdcall.}
+    StrongNameGetPublicKeyEx*: proc(
+      self: ptr ICLRStrongName2,
+      pwzKeyContainer: LPCWSTR,
+      pbKeyBlob: ptr BYTE,
+      cbKeyBlob: ULONG,
+      ppbPublicKeyBlob: ptr ptr BYTE,
+      pcbPublicKeyBlob: ptr ULONG,
+      uHashAlgId: ULONG,
+      uReserved: ULONG,
+    ): HRESULT {.stdcall.}
+    StrongNameSignatureVerificationEx2*: proc(
+      self: ptr ICLRStrongName2,
+      wszFilePath: LPCWSTR,
+      fForceVerification: BOOLEAN,
+      pbEcmaPublicKey: ptr BYTE,
+      cbEcmaPublicKey: DWORD,
+      pfWasVerified: ptr BOOLEAN,
+    ): HRESULT {.stdcall.}
+
   ICLRStrongName3* {.pure.} = object
     lpVtbl*: ptr ICLRStrongName3Vtbl
+
   ICLRStrongName3Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    StrongNameDigestGenerate*: proc(self: ptr ICLRStrongName3, wszFilePath: LPCWSTR, ppbDigestBlob: ptr ptr BYTE, pcbDigestBlob: ptr ULONG, dwFlags: DWORD): HRESULT {.stdcall.}
-    StrongNameDigestSign*: proc(self: ptr ICLRStrongName3, wszKeyContainer: LPCWSTR, pbKeyBlob: ptr BYTE, cbKeyBlob: ULONG, pbDigestBlob: ptr BYTE, cbDigestBlob: ULONG, hashAlgId: DWORD, ppbSignatureBlob: ptr ptr BYTE, pcbSignatureBlob: ptr ULONG, dwFlags: DWORD): HRESULT {.stdcall.}
-    StrongNameDigestEmbed*: proc(self: ptr ICLRStrongName3, wszFilePath: LPCWSTR, pbSignatureBlob: ptr BYTE, cbSignatureBlob: ULONG): HRESULT {.stdcall.}
+    StrongNameDigestGenerate*: proc(
+      self: ptr ICLRStrongName3,
+      wszFilePath: LPCWSTR,
+      ppbDigestBlob: ptr ptr BYTE,
+      pcbDigestBlob: ptr ULONG,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    StrongNameDigestSign*: proc(
+      self: ptr ICLRStrongName3,
+      wszKeyContainer: LPCWSTR,
+      pbKeyBlob: ptr BYTE,
+      cbKeyBlob: ULONG,
+      pbDigestBlob: ptr BYTE,
+      cbDigestBlob: ULONG,
+      hashAlgId: DWORD,
+      ppbSignatureBlob: ptr ptr BYTE,
+      pcbSignatureBlob: ptr ULONG,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    StrongNameDigestEmbed*: proc(
+      self: ptr ICLRStrongName3,
+      wszFilePath: LPCWSTR,
+      pbSignatureBlob: ptr BYTE,
+      cbSignatureBlob: ULONG,
+    ): HRESULT {.stdcall.}
+
   IMethodInfo* {.pure.} = object
     lpVtbl*: ptr IMethodInfoVtbl
+
   IMethodInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetTypeInfoCount*: proc(self: ptr IMethodInfo, pcTInfo: ptr int32): HRESULT {.stdcall.}
-    GetTypeInfo*: proc(self: ptr IMethodInfo, iTInfo: int32, lcid: int32, ppTInfo: int32): HRESULT {.stdcall.}
-    GetIDsOfNames*: proc(self: ptr IMethodInfo, riid: ptr GUID, rgszNames: int32, cNames: int32, lcid: int32, rgDispId: int32): HRESULT {.stdcall.}
-    Invoke*: proc(self: ptr IMethodInfo, dispIdMember: int32, riid: ptr GUID, lcid: int32, wFlags: int16, pDispParams: int32, pVarResult: int32, pExcepInfo: int32, puArgErr: int32): HRESULT {.stdcall.}
+    GetTypeInfoCount*:
+      proc(self: ptr IMethodInfo, pcTInfo: ptr int32): HRESULT {.stdcall.}
+    GetTypeInfo*: proc(
+      self: ptr IMethodInfo, iTInfo: int32, lcid: int32, ppTInfo: int32
+    ): HRESULT {.stdcall.}
+    GetIDsOfNames*: proc(
+      self: ptr IMethodInfo,
+      riid: ptr GUID,
+      rgszNames: int32,
+      cNames: int32,
+      lcid: int32,
+      rgDispId: int32,
+    ): HRESULT {.stdcall.}
+    Invoke*: proc(
+      self: ptr IMethodInfo,
+      dispIdMember: int32,
+      riid: ptr GUID,
+      lcid: int32,
+      wFlags: int16,
+      pDispParams: int32,
+      pVarResult: int32,
+      pExcepInfo: int32,
+      puArgErr: int32,
+    ): HRESULT {.stdcall.}
     get_ToString*: proc(self: ptr IMethodInfo, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    Equals*: proc(self: ptr IMethodInfo, other: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    Equals*: proc(
+      self: ptr IMethodInfo, other: VARIANT, pRetVal: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     GetHashCode*: proc(self: ptr IMethodInfo, pRetVal: ptr int32): HRESULT {.stdcall.}
     GetType*: proc(self: ptr IMethodInfo, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    get_MemberType*: proc(self: ptr IMethodInfo, pRetVal: ptr MemberTypes): HRESULT {.stdcall.}
+    get_MemberType*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr MemberTypes): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IMethodInfo, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    get_DeclaringType*: proc(self: ptr IMethodInfo, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    get_ReflectedType*: proc(self: ptr IMethodInfo, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    GetCustomAttributes*: proc(self: ptr IMethodInfo, attributeType: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetCustomAttributes_2*: proc(self: ptr IMethodInfo, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    IsDefined*: proc(self: ptr IMethodInfo, attributeType: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    GetParameters*: proc(self: ptr IMethodInfo, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetMethodImplementationFlags*: proc(self: ptr IMethodInfo, pRetVal: ptr MethodImplAttributes): HRESULT {.stdcall.}
-    get_MethodHandle*: proc(self: ptr IMethodInfo, pRetVal: POBJECT): HRESULT {.stdcall.}
-    get_Attributes*: proc(self: ptr IMethodInfo, pRetVal: ptr MethodAttributes): HRESULT {.stdcall.}
-    get_CallingConvention*: proc(self: ptr IMethodInfo, pRetVal: ptr CallingConventions): HRESULT {.stdcall.}
-    Invoke_2*: proc(self: ptr IMethodInfo, obj: VARIANT, invokeAttr: BindingFlags, Binder: POBJECT, parameters: ptr SAFEARRAY, culture: POBJECT, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
-    get_IsPublic*: proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsPrivate*: proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsFamily*: proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsAssembly*: proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsFamilyAndAssembly*: proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsFamilyOrAssembly*: proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsStatic*: proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsFinal*: proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsVirtual*: proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsHideBySig*: proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsAbstract*: proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsSpecialName*: proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsConstructor*: proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    Invoke_3*: proc(self: ptr IMethodInfo, obj: VARIANT, parameters: ptr SAFEARRAY, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
-    get_returnType*: proc(self: ptr IMethodInfo, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    get_ReturnTypeCustomAttributes*: proc(self: ptr IMethodInfo, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetBaseDefinition*: proc(self: ptr IMethodInfo, pRetVal: ptr ptr IMethodInfo): HRESULT {.stdcall.}
+    get_DeclaringType*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
+    get_ReflectedType*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
+    GetCustomAttributes*: proc(
+      self: ptr IMethodInfo,
+      attributeType: ptr IType,
+      inherit: VARIANT_BOOL,
+      pRetVal: ptr ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+    GetCustomAttributes_2*: proc(
+      self: ptr IMethodInfo, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    IsDefined*: proc(
+      self: ptr IMethodInfo,
+      attributeType: ptr IType,
+      inherit: VARIANT_BOOL,
+      pRetVal: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    GetParameters*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetMethodImplementationFlags*: proc(
+      self: ptr IMethodInfo, pRetVal: ptr MethodImplAttributes
+    ): HRESULT {.stdcall.}
+    get_MethodHandle*:
+      proc(self: ptr IMethodInfo, pRetVal: POBJECT): HRESULT {.stdcall.}
+    get_Attributes*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr MethodAttributes): HRESULT {.stdcall.}
+    get_CallingConvention*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr CallingConventions): HRESULT {.stdcall.}
+    Invoke_2*: proc(
+      self: ptr IMethodInfo,
+      obj: VARIANT,
+      invokeAttr: BindingFlags,
+      Binder: POBJECT,
+      parameters: ptr SAFEARRAY,
+      culture: POBJECT,
+      pRetVal: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    get_IsPublic*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsPrivate*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsFamily*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsAssembly*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsFamilyAndAssembly*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsFamilyOrAssembly*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsStatic*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsFinal*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsVirtual*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsHideBySig*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsAbstract*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsSpecialName*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsConstructor*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    Invoke_3*: proc(
+      self: ptr IMethodInfo,
+      obj: VARIANT,
+      parameters: ptr SAFEARRAY,
+      pRetVal: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    get_returnType*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
+    get_ReturnTypeCustomAttributes*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
+    GetBaseDefinition*:
+      proc(self: ptr IMethodInfo, pRetVal: ptr ptr IMethodInfo): HRESULT {.stdcall.}
+
   IAssembly* {.pure.} = object
     lpVtbl*: ptr IAssemblyVtbl
+
   IAssemblyVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_ToString*: proc(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    Equals*: proc(self: ptr IAssembly, other: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    Equals*: proc(
+      self: ptr IAssembly, other: VARIANT, pRetVal: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     GetHashCode*: proc(self: ptr IAssembly, pRetVal: ptr int32): HRESULT {.stdcall.}
     GetType*: proc(self: ptr IAssembly, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
     get_CodeBase*: proc(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    get_EscapedCodeBase*: proc(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    get_EscapedCodeBase*:
+      proc(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.stdcall.}
     GetName*: proc(self: ptr IAssembly, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetName_2*: proc(self: ptr IAssembly, copiedName: VARIANT_BOOL, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
+    GetName_2*: proc(
+      self: ptr IAssembly, copiedName: VARIANT_BOOL, pRetVal: ptr POBJECT
+    ): HRESULT {.stdcall.}
     get_FullName*: proc(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    get_EntryPoint*: proc(self: ptr IAssembly, pRetVal: ptr ptr IMethodInfo): HRESULT {.stdcall.}
-    GetType_2*: proc(self: ptr IAssembly, name: BSTR, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    GetType_3*: proc(self: ptr IAssembly, name: BSTR, throwOnError: VARIANT_BOOL, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    GetExportedTypes*: proc(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetTypes*: proc(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetManifestResourceStream*: proc(self: ptr IAssembly, Type: ptr IType, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetManifestResourceStream_2*: proc(self: ptr IAssembly, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetFile*: proc(self: ptr IAssembly, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetFiles*: proc(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetFiles_2*: proc(self: ptr IAssembly, getResourceModules: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetManifestResourceNames*: proc(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetManifestResourceInfo*: proc(self: ptr IAssembly, resourceName: BSTR, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
+    get_EntryPoint*:
+      proc(self: ptr IAssembly, pRetVal: ptr ptr IMethodInfo): HRESULT {.stdcall.}
+    GetType_2*:
+      proc(self: ptr IAssembly, name: BSTR, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
+    GetType_3*: proc(
+      self: ptr IAssembly,
+      name: BSTR,
+      throwOnError: VARIANT_BOOL,
+      pRetVal: ptr ptr IType,
+    ): HRESULT {.stdcall.}
+    GetExportedTypes*:
+      proc(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetTypes*:
+      proc(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetManifestResourceStream*: proc(
+      self: ptr IAssembly, Type: ptr IType, name: BSTR, pRetVal: ptr POBJECT
+    ): HRESULT {.stdcall.}
+    GetManifestResourceStream_2*:
+      proc(self: ptr IAssembly, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
+    GetFile*:
+      proc(self: ptr IAssembly, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
+    GetFiles*:
+      proc(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetFiles_2*: proc(
+      self: ptr IAssembly, getResourceModules: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetManifestResourceNames*:
+      proc(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetManifestResourceInfo*: proc(
+      self: ptr IAssembly, resourceName: BSTR, pRetVal: ptr POBJECT
+    ): HRESULT {.stdcall.}
     get_Location*: proc(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.stdcall.}
     get_Evidence*: proc(self: ptr IAssembly, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetCustomAttributes*: proc(self: ptr IAssembly, attributeType: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetCustomAttributes_2*: proc(self: ptr IAssembly, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    IsDefined*: proc(self: ptr IAssembly, attributeType: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    GetObjectData*: proc(self: ptr IAssembly, info: POBJECT, Context: StreamingContext): HRESULT {.stdcall.}
+    GetCustomAttributes*: proc(
+      self: ptr IAssembly,
+      attributeType: ptr IType,
+      inherit: VARIANT_BOOL,
+      pRetVal: ptr ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+    GetCustomAttributes_2*: proc(
+      self: ptr IAssembly, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    IsDefined*: proc(
+      self: ptr IAssembly,
+      attributeType: ptr IType,
+      inherit: VARIANT_BOOL,
+      pRetVal: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    GetObjectData*: proc(
+      self: ptr IAssembly, info: POBJECT, Context: StreamingContext
+    ): HRESULT {.stdcall.}
     add_ModuleResolve*: proc(self: ptr IAssembly, value: POBJECT): HRESULT {.stdcall.}
-    remove_ModuleResolve*: proc(self: ptr IAssembly, value: POBJECT): HRESULT {.stdcall.}
-    GetType_4*: proc(self: ptr IAssembly, name: BSTR, throwOnError: VARIANT_BOOL, ignoreCase: VARIANT_BOOL, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    GetSatelliteAssembly*: proc(self: ptr IAssembly, culture: POBJECT, pRetVal: ptr ptr IAssembly): HRESULT {.stdcall.}
-    GetSatelliteAssembly_2*: proc(self: ptr IAssembly, culture: POBJECT, Version: POBJECT, pRetVal: ptr ptr IAssembly): HRESULT {.stdcall.}
-    LoadModule*: proc(self: ptr IAssembly, moduleName: BSTR, rawModule: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    LoadModule_2*: proc(self: ptr IAssembly, moduleName: BSTR, rawModule: ptr SAFEARRAY, rawSymbolStore: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    CreateInstance*: proc(self: ptr IAssembly, typeName: BSTR, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
-    CreateInstance_2*: proc(self: ptr IAssembly, typeName: BSTR, ignoreCase: VARIANT_BOOL, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
-    CreateInstance_3*: proc(self: ptr IAssembly, typeName: BSTR, ignoreCase: VARIANT_BOOL, bindingAttr: BindingFlags, Binder: POBJECT, args: ptr SAFEARRAY, culture: POBJECT, activationAttributes: ptr SAFEARRAY, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
-    GetLoadedModules*: proc(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetLoadedModules_2*: proc(self: ptr IAssembly, getResourceModules: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetModules*: proc(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetModules_2*: proc(self: ptr IAssembly, getResourceModules: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetModule*: proc(self: ptr IAssembly, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetReferencedAssemblies*: proc(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    get_GlobalAssemblyCache*: proc(self: ptr IAssembly, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    remove_ModuleResolve*:
+      proc(self: ptr IAssembly, value: POBJECT): HRESULT {.stdcall.}
+    GetType_4*: proc(
+      self: ptr IAssembly,
+      name: BSTR,
+      throwOnError: VARIANT_BOOL,
+      ignoreCase: VARIANT_BOOL,
+      pRetVal: ptr ptr IType,
+    ): HRESULT {.stdcall.}
+    GetSatelliteAssembly*: proc(
+      self: ptr IAssembly, culture: POBJECT, pRetVal: ptr ptr IAssembly
+    ): HRESULT {.stdcall.}
+    GetSatelliteAssembly_2*: proc(
+      self: ptr IAssembly,
+      culture: POBJECT,
+      Version: POBJECT,
+      pRetVal: ptr ptr IAssembly,
+    ): HRESULT {.stdcall.}
+    LoadModule*: proc(
+      self: ptr IAssembly,
+      moduleName: BSTR,
+      rawModule: ptr SAFEARRAY,
+      pRetVal: ptr POBJECT,
+    ): HRESULT {.stdcall.}
+    LoadModule_2*: proc(
+      self: ptr IAssembly,
+      moduleName: BSTR,
+      rawModule: ptr SAFEARRAY,
+      rawSymbolStore: ptr SAFEARRAY,
+      pRetVal: ptr POBJECT,
+    ): HRESULT {.stdcall.}
+    CreateInstance*: proc(
+      self: ptr IAssembly, typeName: BSTR, pRetVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    CreateInstance_2*: proc(
+      self: ptr IAssembly,
+      typeName: BSTR,
+      ignoreCase: VARIANT_BOOL,
+      pRetVal: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    CreateInstance_3*: proc(
+      self: ptr IAssembly,
+      typeName: BSTR,
+      ignoreCase: VARIANT_BOOL,
+      bindingAttr: BindingFlags,
+      Binder: POBJECT,
+      args: ptr SAFEARRAY,
+      culture: POBJECT,
+      activationAttributes: ptr SAFEARRAY,
+      pRetVal: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    GetLoadedModules*:
+      proc(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetLoadedModules_2*: proc(
+      self: ptr IAssembly, getResourceModules: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetModules*:
+      proc(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetModules_2*: proc(
+      self: ptr IAssembly, getResourceModules: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetModule*:
+      proc(self: ptr IAssembly, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
+    GetReferencedAssemblies*:
+      proc(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    get_GlobalAssemblyCache*:
+      proc(self: ptr IAssembly, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   IType* {.pure.} = object
     lpVtbl*: ptr ITypeVtbl
+
   ITypeVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetTypeInfoCount*: proc(self: ptr IType, pcTInfo: ptr int32): HRESULT {.stdcall.}
-    GetTypeInfo*: proc(self: ptr IType, iTInfo: int32, lcid: int32, ppTInfo: int32): HRESULT {.stdcall.}
-    GetIDsOfNames*: proc(self: ptr IType, riid: ptr GUID, rgszNames: int32, cNames: int32, lcid: int32, rgDispId: int32): HRESULT {.stdcall.}
-    Invoke*: proc(self: ptr IType, dispIdMember: int32, riid: ptr GUID, lcid: int32, wFlags: int16, pDispParams: int32, pVarResult: int32, pExcepInfo: int32, puArgErr: int32): HRESULT {.stdcall.}
+    GetTypeInfo*: proc(
+      self: ptr IType, iTInfo: int32, lcid: int32, ppTInfo: int32
+    ): HRESULT {.stdcall.}
+    GetIDsOfNames*: proc(
+      self: ptr IType,
+      riid: ptr GUID,
+      rgszNames: int32,
+      cNames: int32,
+      lcid: int32,
+      rgDispId: int32,
+    ): HRESULT {.stdcall.}
+    Invoke*: proc(
+      self: ptr IType,
+      dispIdMember: int32,
+      riid: ptr GUID,
+      lcid: int32,
+      wFlags: int16,
+      pDispParams: int32,
+      pVarResult: int32,
+      pExcepInfo: int32,
+      puArgErr: int32,
+    ): HRESULT {.stdcall.}
     get_ToString*: proc(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    Equals*: proc(self: ptr IType, other: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    Equals*: proc(self: ptr IType, other: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.
+      stdcall
+    .}
     GetHashCode*: proc(self: ptr IType, pRetVal: ptr int32): HRESULT {.stdcall.}
     GetType*: proc(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    get_MemberType*: proc(self: ptr IType, pRetVal: ptr MemberTypes): HRESULT {.stdcall.}
+    get_MemberType*:
+      proc(self: ptr IType, pRetVal: ptr MemberTypes): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    get_DeclaringType*: proc(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    get_ReflectedType*: proc(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    GetCustomAttributes*: proc(self: ptr IType, attributeType: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetCustomAttributes_2*: proc(self: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    IsDefined*: proc(self: ptr IType, attributeType: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_DeclaringType*:
+      proc(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
+    get_ReflectedType*:
+      proc(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
+    GetCustomAttributes*: proc(
+      self: ptr IType,
+      attributeType: ptr IType,
+      inherit: VARIANT_BOOL,
+      pRetVal: ptr ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+    GetCustomAttributes_2*: proc(
+      self: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    IsDefined*: proc(
+      self: ptr IType,
+      attributeType: ptr IType,
+      inherit: VARIANT_BOOL,
+      pRetVal: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
     get_Guid*: proc(self: ptr IType, pRetVal: ptr GUID): HRESULT {.stdcall.}
     get_Module*: proc(self: ptr IType, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    getIAssembly*: proc(self: ptr IType, pRetVal: ptr ptr IAssembly): HRESULT {.stdcall.}
+    getIAssembly*:
+      proc(self: ptr IType, pRetVal: ptr ptr IAssembly): HRESULT {.stdcall.}
     get_TypeHandle*: proc(self: ptr IType, pRetVal: POBJECT): HRESULT {.stdcall.}
     get_FullName*: proc(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.stdcall.}
     get_Namespace*: proc(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    get_AssemblyQualifiedName*: proc(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    get_AssemblyQualifiedName*:
+      proc(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.stdcall.}
     GetArrayRank*: proc(self: ptr IType, pRetVal: ptr int32): HRESULT {.stdcall.}
     get_BaseType*: proc(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    GetConstructors*: proc(self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetInterface*: proc(self: ptr IType, name: BSTR, ignoreCase: VARIANT_BOOL, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    GetInterfaces*: proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    FindInterfaces*: proc(self: ptr IType, filter: POBJECT, filterCriteria: VARIANT, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetEvent*: proc(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
+    GetConstructors*: proc(
+      self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetInterface*: proc(
+      self: ptr IType, name: BSTR, ignoreCase: VARIANT_BOOL, pRetVal: ptr ptr IType
+    ): HRESULT {.stdcall.}
+    GetInterfaces*:
+      proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    FindInterfaces*: proc(
+      self: ptr IType,
+      filter: POBJECT,
+      filterCriteria: VARIANT,
+      pRetVal: ptr ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+    GetEvent*: proc(
+      self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr POBJECT
+    ): HRESULT {.stdcall.}
     GetEvents*: proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetEvents_2*: proc(self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetNestedTypes*: proc(self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetNestedType*: proc(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    GetMember*: proc(self: ptr IType, name: BSTR, Type: MemberTypes, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetDefaultMembers*: proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    FindMembers*: proc(self: ptr IType, MemberType: MemberTypes, bindingAttr: BindingFlags, filter: POBJECT, filterCriteria: VARIANT, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetEvents_2*: proc(
+      self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetNestedTypes*: proc(
+      self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetNestedType*: proc(
+      self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr ptr IType
+    ): HRESULT {.stdcall.}
+    GetMember*: proc(
+      self: ptr IType,
+      name: BSTR,
+      Type: MemberTypes,
+      bindingAttr: BindingFlags,
+      pRetVal: ptr ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+    GetDefaultMembers*:
+      proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    FindMembers*: proc(
+      self: ptr IType,
+      MemberType: MemberTypes,
+      bindingAttr: BindingFlags,
+      filter: POBJECT,
+      filterCriteria: VARIANT,
+      pRetVal: ptr ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
     GetElementType*: proc(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    IsSubclassOf*: proc(self: ptr IType, c: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    IsInstanceOfType*: proc(self: ptr IType, o: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    IsAssignableFrom*: proc(self: ptr IType, c: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    GetInterfaceMap*: proc(self: ptr IType, interfaceType: ptr IType, pRetVal: POBJECT): HRESULT {.stdcall.}
-    GetMethod*: proc(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, Binder: POBJECT, types: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, pRetVal: ptr ptr IMethodInfo): HRESULT {.stdcall.}
-    GetMethod_2*: proc(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr ptr IMethodInfo): HRESULT {.stdcall.}
-    GetMethods*: proc(self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetField*: proc(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetFields*: proc(self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetProperty*: proc(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetProperty_2*: proc(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, Binder: POBJECT, returnType: ptr IType, types: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetProperties*: proc(self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetMember_2*: proc(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetMembers*: proc(self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    InvokeMember*: proc(self: ptr IType, name: BSTR, invokeAttr: BindingFlags, Binder: POBJECT, Target: VARIANT, args: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, culture: POBJECT, namedParameters: ptr SAFEARRAY, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
-    get_UnderlyingSystemType*: proc(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    InvokeMember_2*: proc(self: ptr IType, name: BSTR, invokeAttr: BindingFlags, Binder: POBJECT, Target: VARIANT, args: ptr SAFEARRAY, culture: POBJECT, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
-    InvokeMember_3*: proc(self: ptr IType, name: BSTR, invokeAttr: BindingFlags, Binder: POBJECT, Target: VARIANT, args: ptr SAFEARRAY, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
-    GetConstructor*: proc(self: ptr IType, bindingAttr: BindingFlags, Binder: POBJECT, callConvention: CallingConventions, types: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetConstructor_2*: proc(self: ptr IType, bindingAttr: BindingFlags, Binder: POBJECT, types: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetConstructor_3*: proc(self: ptr IType, types: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetConstructors_2*: proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    get_TypeInitializer*: proc(self: ptr IType, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetMethod_3*: proc(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, Binder: POBJECT, callConvention: CallingConventions, types: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, pRetVal: ptr ptr IMethodInfo): HRESULT {.stdcall.}
-    GetMethod_4*: proc(self: ptr IType, name: BSTR, types: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, pRetVal: ptr ptr IMethodInfo): HRESULT {.stdcall.}
-    GetMethod_5*: proc(self: ptr IType, name: BSTR, types: ptr SAFEARRAY, pRetVal: ptr ptr IMethodInfo): HRESULT {.stdcall.}
-    GetMethod_6*: proc(self: ptr IType, name: BSTR, pRetVal: ptr ptr IMethodInfo): HRESULT {.stdcall.}
-    GetMethods_2*: proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetField_2*: proc(self: ptr IType, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
+    IsSubclassOf*: proc(
+      self: ptr IType, c: ptr IType, pRetVal: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    IsInstanceOfType*:
+      proc(self: ptr IType, o: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    IsAssignableFrom*: proc(
+      self: ptr IType, c: ptr IType, pRetVal: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    GetInterfaceMap*: proc(
+      self: ptr IType, interfaceType: ptr IType, pRetVal: POBJECT
+    ): HRESULT {.stdcall.}
+    GetMethod*: proc(
+      self: ptr IType,
+      name: BSTR,
+      bindingAttr: BindingFlags,
+      Binder: POBJECT,
+      types: ptr SAFEARRAY,
+      modifiers: ptr SAFEARRAY,
+      pRetVal: ptr ptr IMethodInfo,
+    ): HRESULT {.stdcall.}
+    GetMethod_2*: proc(
+      self: ptr IType,
+      name: BSTR,
+      bindingAttr: BindingFlags,
+      pRetVal: ptr ptr IMethodInfo,
+    ): HRESULT {.stdcall.}
+    GetMethods*: proc(
+      self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetField*: proc(
+      self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr POBJECT
+    ): HRESULT {.stdcall.}
+    GetFields*: proc(
+      self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetProperty*: proc(
+      self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr POBJECT
+    ): HRESULT {.stdcall.}
+    GetProperty_2*: proc(
+      self: ptr IType,
+      name: BSTR,
+      bindingAttr: BindingFlags,
+      Binder: POBJECT,
+      returnType: ptr IType,
+      types: ptr SAFEARRAY,
+      modifiers: ptr SAFEARRAY,
+      pRetVal: ptr POBJECT,
+    ): HRESULT {.stdcall.}
+    GetProperties*: proc(
+      self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetMember_2*: proc(
+      self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetMembers*: proc(
+      self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    InvokeMember*: proc(
+      self: ptr IType,
+      name: BSTR,
+      invokeAttr: BindingFlags,
+      Binder: POBJECT,
+      Target: VARIANT,
+      args: ptr SAFEARRAY,
+      modifiers: ptr SAFEARRAY,
+      culture: POBJECT,
+      namedParameters: ptr SAFEARRAY,
+      pRetVal: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    get_UnderlyingSystemType*:
+      proc(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
+    InvokeMember_2*: proc(
+      self: ptr IType,
+      name: BSTR,
+      invokeAttr: BindingFlags,
+      Binder: POBJECT,
+      Target: VARIANT,
+      args: ptr SAFEARRAY,
+      culture: POBJECT,
+      pRetVal: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    InvokeMember_3*: proc(
+      self: ptr IType,
+      name: BSTR,
+      invokeAttr: BindingFlags,
+      Binder: POBJECT,
+      Target: VARIANT,
+      args: ptr SAFEARRAY,
+      pRetVal: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    GetConstructor*: proc(
+      self: ptr IType,
+      bindingAttr: BindingFlags,
+      Binder: POBJECT,
+      callConvention: CallingConventions,
+      types: ptr SAFEARRAY,
+      modifiers: ptr SAFEARRAY,
+      pRetVal: ptr POBJECT,
+    ): HRESULT {.stdcall.}
+    GetConstructor_2*: proc(
+      self: ptr IType,
+      bindingAttr: BindingFlags,
+      Binder: POBJECT,
+      types: ptr SAFEARRAY,
+      modifiers: ptr SAFEARRAY,
+      pRetVal: ptr POBJECT,
+    ): HRESULT {.stdcall.}
+    GetConstructor_3*: proc(
+      self: ptr IType, types: ptr SAFEARRAY, pRetVal: ptr POBJECT
+    ): HRESULT {.stdcall.}
+    GetConstructors_2*:
+      proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    get_TypeInitializer*:
+      proc(self: ptr IType, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
+    GetMethod_3*: proc(
+      self: ptr IType,
+      name: BSTR,
+      bindingAttr: BindingFlags,
+      Binder: POBJECT,
+      callConvention: CallingConventions,
+      types: ptr SAFEARRAY,
+      modifiers: ptr SAFEARRAY,
+      pRetVal: ptr ptr IMethodInfo,
+    ): HRESULT {.stdcall.}
+    GetMethod_4*: proc(
+      self: ptr IType,
+      name: BSTR,
+      types: ptr SAFEARRAY,
+      modifiers: ptr SAFEARRAY,
+      pRetVal: ptr ptr IMethodInfo,
+    ): HRESULT {.stdcall.}
+    GetMethod_5*: proc(
+      self: ptr IType, name: BSTR, types: ptr SAFEARRAY, pRetVal: ptr ptr IMethodInfo
+    ): HRESULT {.stdcall.}
+    GetMethod_6*: proc(
+      self: ptr IType, name: BSTR, pRetVal: ptr ptr IMethodInfo
+    ): HRESULT {.stdcall.}
+    GetMethods_2*:
+      proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetField_2*:
+      proc(self: ptr IType, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
     GetFields_2*: proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetInterface_2*: proc(self: ptr IType, name: BSTR, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    GetEvent_2*: proc(self: ptr IType, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetProperty_3*: proc(self: ptr IType, name: BSTR, returnType: ptr IType, types: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetProperty_4*: proc(self: ptr IType, name: BSTR, returnType: ptr IType, types: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetProperty_5*: proc(self: ptr IType, name: BSTR, types: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetProperty_6*: proc(self: ptr IType, name: BSTR, returnType: ptr IType, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetProperty_7*: proc(self: ptr IType, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
-    GetProperties_2*: proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetNestedTypes_2*: proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetNestedType_2*: proc(self: ptr IType, name: BSTR, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    GetMember_3*: proc(self: ptr IType, name: BSTR, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetMembers_2*: proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    get_Attributes*: proc(self: ptr IType, pRetVal: ptr TypeAttributes): HRESULT {.stdcall.}
-    get_IsNotPublic*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    GetInterface_2*:
+      proc(self: ptr IType, name: BSTR, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
+    GetEvent_2*:
+      proc(self: ptr IType, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
+    GetProperty_3*: proc(
+      self: ptr IType,
+      name: BSTR,
+      returnType: ptr IType,
+      types: ptr SAFEARRAY,
+      modifiers: ptr SAFEARRAY,
+      pRetVal: ptr POBJECT,
+    ): HRESULT {.stdcall.}
+    GetProperty_4*: proc(
+      self: ptr IType,
+      name: BSTR,
+      returnType: ptr IType,
+      types: ptr SAFEARRAY,
+      pRetVal: ptr POBJECT,
+    ): HRESULT {.stdcall.}
+    GetProperty_5*: proc(
+      self: ptr IType, name: BSTR, types: ptr SAFEARRAY, pRetVal: ptr POBJECT
+    ): HRESULT {.stdcall.}
+    GetProperty_6*: proc(
+      self: ptr IType, name: BSTR, returnType: ptr IType, pRetVal: ptr POBJECT
+    ): HRESULT {.stdcall.}
+    GetProperty_7*:
+      proc(self: ptr IType, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
+    GetProperties_2*:
+      proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetNestedTypes_2*:
+      proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetNestedType_2*:
+      proc(self: ptr IType, name: BSTR, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
+    GetMember_3*:
+      proc(self: ptr IType, name: BSTR, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetMembers_2*:
+      proc(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    get_Attributes*:
+      proc(self: ptr IType, pRetVal: ptr TypeAttributes): HRESULT {.stdcall.}
+    get_IsNotPublic*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_IsPublic*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsNestedPublic*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsNestedPrivate*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsNestedFamily*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsNestedAssembly*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsNestedFamANDAssem*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsNestedFamORAssem*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsAutoLayout*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsLayoutSequential*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsExplicitLayout*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsNestedPublic*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsNestedPrivate*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsNestedFamily*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsNestedAssembly*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsNestedFamANDAssem*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsNestedFamORAssem*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsAutoLayout*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsLayoutSequential*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsExplicitLayout*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_IsClass*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsInterface*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsValueType*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsAbstract*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsInterface*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsValueType*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsAbstract*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_IsSealed*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_IsEnum*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsSpecialName*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsSpecialName*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_IsImport*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsSerializable*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsAnsiClass*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsUnicodeClass*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsAutoClass*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsSerializable*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsAnsiClass*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsUnicodeClass*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsAutoClass*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_IsArray*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_IsByRef*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsPointer*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsPrimitive*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsCOMObject*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_HasElementType*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsContextful*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsMarshalByRef*: proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    Equals_2*: proc(self: ptr IType, o: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsPointer*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsPrimitive*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsCOMObject*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_HasElementType*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsContextful*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsMarshalByRef*:
+      proc(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    Equals_2*: proc(self: ptr IType, o: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.
+      stdcall
+    .}
+
   IObject* {.pure.} = object
     lpVtbl*: ptr IObjectVtbl
+
   IObjectVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_ToString*: proc(self: ptr IObject, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    Equals*: proc(self: ptr IObject, obj: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    Equals*: proc(self: ptr IObject, obj: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.
+      stdcall
+    .}
     GetHashCode*: proc(self: ptr IObject, pRetVal: ptr int32): HRESULT {.stdcall.}
     GetType*: proc(self: ptr IObject, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
+
   IAppDomainSetup* {.pure.} = object
     lpVtbl*: ptr IAppDomainSetupVtbl
+
   IAppDomainSetupVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_ApplicationBase*: proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    put_ApplicationBase*: proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
-    get_ApplicationName*: proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    put_ApplicationName*: proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
-    get_CachePath*: proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    get_ApplicationBase*:
+      proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    put_ApplicationBase*:
+      proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
+    get_ApplicationName*:
+      proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    put_ApplicationName*:
+      proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
+    get_CachePath*:
+      proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
     put_CachePath*: proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
-    get_ConfigurationFile*: proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    put_ConfigurationFile*: proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
-    get_DynamicBase*: proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    put_DynamicBase*: proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
-    get_LicenseFile*: proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    put_LicenseFile*: proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
-    get_PrivateBinPath*: proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    put_PrivateBinPath*: proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
-    get_PrivateBinPathProbe*: proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    put_PrivateBinPathProbe*: proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
-    get_ShadowCopyDirectories*: proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    put_ShadowCopyDirectories*: proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
-    get_ShadowCopyFiles*: proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    put_ShadowCopyFiles*: proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
+    get_ConfigurationFile*:
+      proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    put_ConfigurationFile*:
+      proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
+    get_DynamicBase*:
+      proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    put_DynamicBase*:
+      proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
+    get_LicenseFile*:
+      proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    put_LicenseFile*:
+      proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
+    get_PrivateBinPath*:
+      proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    put_PrivateBinPath*:
+      proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
+    get_PrivateBinPathProbe*:
+      proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    put_PrivateBinPathProbe*:
+      proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
+    get_ShadowCopyDirectories*:
+      proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    put_ShadowCopyDirectories*:
+      proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
+    get_ShadowCopyFiles*:
+      proc(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    put_ShadowCopyFiles*:
+      proc(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.stdcall.}
+
   ObjectHandle* {.pure.} = object
     lpVtbl*: ptr ObjectHandleVtbl
+
   ObjectHandleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_ToString*: proc(self: ptr ObjectHandle, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    Equals*: proc(self: ptr ObjectHandle, obj: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    Equals*: proc(
+      self: ptr ObjectHandle, obj: VARIANT, pRetVal: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     GetHashCode*: proc(self: ptr ObjectHandle, pRetVal: ptr int32): HRESULT {.stdcall.}
     GetType*: proc(self: ptr ObjectHandle, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    GetLifetimeService*: proc(self: ptr ObjectHandle, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
-    InitializeLifetimeService*: proc(self: ptr ObjectHandle, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
-    CreateObjRef*: proc(self: ptr ObjectHandle, requestedType: ptr IType, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
+    GetLifetimeService*:
+      proc(self: ptr ObjectHandle, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
+    InitializeLifetimeService*:
+      proc(self: ptr ObjectHandle, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
+    CreateObjRef*: proc(
+      self: ptr ObjectHandle, requestedType: ptr IType, pRetVal: ptr POBJECT
+    ): HRESULT {.stdcall.}
     Unwrap*: proc(self: ptr ObjectHandle, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
+
   AppDomain* {.pure.} = object
     lpVtbl*: ptr AppDomainVtbl
+
   AppDomainVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_ToString*: proc(self: ptr AppDomain, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    Equals*: proc(self: ptr AppDomain, other: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    Equals*: proc(
+      self: ptr AppDomain, other: VARIANT, pRetVal: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     GetHashCode*: proc(self: ptr AppDomain, pRetVal: ptr int32): HRESULT {.stdcall.}
     GetType*: proc(self: ptr AppDomain, pRetVal: ptr ptr IType): HRESULT {.stdcall.}
-    InitializeLifetimeService*: proc(self: ptr AppDomain, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
-    GetLifetimeService*: proc(self: ptr AppDomain, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
+    InitializeLifetimeService*:
+      proc(self: ptr AppDomain, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
+    GetLifetimeService*:
+      proc(self: ptr AppDomain, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
     get_Evidence*: proc(self: ptr AppDomain, pRetVal: ptr POBJECT): HRESULT {.stdcall.}
     add_DomainUnload*: proc(self: ptr AppDomain, value: POBJECT): HRESULT {.stdcall.}
     remove_DomainUnload*: proc(self: ptr AppDomain, value: POBJECT): HRESULT {.stdcall.}
@@ -1242,756 +2644,4874 @@
     add_TypeResolve*: proc(self: ptr AppDomain, value: POBJECT): HRESULT {.stdcall.}
     remove_TypeResolve*: proc(self: ptr AppDomain, value: POBJECT): HRESULT {.stdcall.}
     add_ResourceResolve*: proc(self: ptr AppDomain, value: POBJECT): HRESULT {.stdcall.}
-    remove_ResourceResolve*: proc(self: ptr AppDomain, value: POBJECT): HRESULT {.stdcall.}
+    remove_ResourceResolve*:
+      proc(self: ptr AppDomain, value: POBJECT): HRESULT {.stdcall.}
     add_AssemblyResolve*: proc(self: ptr AppDomain, value: POBJECT): HRESULT {.stdcall.}
-    remove_AssemblyResolve*: proc(self: ptr AppDomain, value: POBJECT): HRESULT {.stdcall.}
-    add_UnhandledException*: proc(self: ptr AppDomain, value: POBJECT): HRESULT {.stdcall.}
-    remove_UnhandledException*: proc(self: ptr AppDomain, value: POBJECT): HRESULT {.stdcall.}
-    DefineDynamicAssembly*: proc(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.stdcall.}
-    DefineDynamicAssembly_2*: proc(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, dir: BSTR, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.stdcall.}
-    DefineDynamicAssembly_3*: proc(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, Evidence: POBJECT, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.stdcall.}
-    DefineDynamicAssembly_4*: proc(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, requiredPermissions: POBJECT, optionalPermissions: POBJECT, refusedPermissions: POBJECT, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.stdcall.}
-    DefineDynamicAssembly_5*: proc(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, dir: BSTR, Evidence: POBJECT, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.stdcall.}
-    DefineDynamicAssembly_6*: proc(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, dir: BSTR, requiredPermissions: POBJECT, optionalPermissions: POBJECT, refusedPermissions: POBJECT, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.stdcall.}
-    DefineDynamicAssembly_7*: proc(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, Evidence: POBJECT, requiredPermissions: POBJECT, optionalPermissions: POBJECT, refusedPermissions: POBJECT, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.stdcall.}
-    DefineDynamicAssembly_8*: proc(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, dir: BSTR, Evidence: POBJECT, requiredPermissions: POBJECT, optionalPermissions: POBJECT, refusedPermissions: POBJECT, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.stdcall.}
-    DefineDynamicAssembly_9*: proc(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, dir: BSTR, Evidence: POBJECT, requiredPermissions: POBJECT, optionalPermissions: POBJECT, refusedPermissions: POBJECT, IsSynchronized: VARIANT_BOOL, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.stdcall.}
-    CreateInstance*: proc(self: ptr AppDomain, AssemblyName: BSTR, typeName: BSTR, pRetVal: ptr ptr ObjectHandle): HRESULT {.stdcall.}
-    CreateInstanceFrom*: proc(self: ptr AppDomain, assemblyFile: BSTR, typeName: BSTR, pRetVal: ptr ptr ObjectHandle): HRESULT {.stdcall.}
-    CreateInstance_2*: proc(self: ptr AppDomain, AssemblyName: BSTR, typeName: BSTR, activationAttributes: ptr SAFEARRAY, pRetVal: ptr ptr ObjectHandle): HRESULT {.stdcall.}
-    CreateInstanceFrom_2*: proc(self: ptr AppDomain, assemblyFile: BSTR, typeName: BSTR, activationAttributes: ptr SAFEARRAY, pRetVal: ptr ptr ObjectHandle): HRESULT {.stdcall.}
-    CreateInstance_3*: proc(self: ptr AppDomain, AssemblyName: BSTR, typeName: BSTR, ignoreCase: VARIANT_BOOL, bindingAttr: BindingFlags, Binder: POBJECT, args: ptr SAFEARRAY, culture: POBJECT, activationAttributes: ptr SAFEARRAY, securityAttributes: POBJECT, pRetVal: ptr ptr ObjectHandle): HRESULT {.stdcall.}
-    CreateInstanceFrom_3*: proc(self: ptr AppDomain, assemblyFile: BSTR, typeName: BSTR, ignoreCase: VARIANT_BOOL, bindingAttr: BindingFlags, Binder: POBJECT, args: ptr SAFEARRAY, culture: POBJECT, activationAttributes: ptr SAFEARRAY, securityAttributes: POBJECT, pRetVal: ptr ptr ObjectHandle): HRESULT {.stdcall.}
-    Load*: proc(self: ptr AppDomain, assemblyRef: POBJECT, pRetVal: ptr ptr IAssembly): HRESULT {.stdcall.}
-    Load_2*: proc(self: ptr AppDomain, assemblyString: BSTR, pRetVal: ptr ptr IAssembly): HRESULT {.stdcall.}
-    Load_3*: proc(self: ptr AppDomain, rawAssembly: ptr SAFEARRAY, pRetVal: ptr ptr IAssembly): HRESULT {.stdcall.}
-    Load_4*: proc(self: ptr AppDomain, rawAssembly: ptr SAFEARRAY, rawSymbolStore: ptr SAFEARRAY, pRetVal: ptr ptr IAssembly): HRESULT {.stdcall.}
-    Load_5*: proc(self: ptr AppDomain, rawAssembly: ptr SAFEARRAY, rawSymbolStore: ptr SAFEARRAY, securityEvidence: POBJECT, pRetVal: ptr ptr IAssembly): HRESULT {.stdcall.}
-    Load_6*: proc(self: ptr AppDomain, assemblyRef: POBJECT, assemblySecurity: POBJECT, pRetVal: ptr ptr IAssembly): HRESULT {.stdcall.}
-    Load_7*: proc(self: ptr AppDomain, assemblyString: BSTR, assemblySecurity: POBJECT, pRetVal: ptr ptr IAssembly): HRESULT {.stdcall.}
-    ExecuteAssembly*: proc(self: ptr AppDomain, assemblyFile: BSTR, assemblySecurity: POBJECT, pRetVal: ptr int32): HRESULT {.stdcall.}
-    ExecuteAssembly_2*: proc(self: ptr AppDomain, assemblyFile: BSTR, pRetVal: ptr int32): HRESULT {.stdcall.}
-    ExecuteAssembly_3*: proc(self: ptr AppDomain, assemblyFile: BSTR, assemblySecurity: POBJECT, args: ptr SAFEARRAY, pRetVal: ptr int32): HRESULT {.stdcall.}
+    remove_AssemblyResolve*:
+      proc(self: ptr AppDomain, value: POBJECT): HRESULT {.stdcall.}
+    add_UnhandledException*:
+      proc(self: ptr AppDomain, value: POBJECT): HRESULT {.stdcall.}
+    remove_UnhandledException*:
+      proc(self: ptr AppDomain, value: POBJECT): HRESULT {.stdcall.}
+    DefineDynamicAssembly*: proc(
+      self: ptr AppDomain,
+      name: POBJECT,
+      access: AssemblyBuilderAccess,
+      pRetVal: ptr ptr AssemblyBuilder,
+    ): HRESULT {.stdcall.}
+    DefineDynamicAssembly_2*: proc(
+      self: ptr AppDomain,
+      name: POBJECT,
+      access: AssemblyBuilderAccess,
+      dir: BSTR,
+      pRetVal: ptr ptr AssemblyBuilder,
+    ): HRESULT {.stdcall.}
+    DefineDynamicAssembly_3*: proc(
+      self: ptr AppDomain,
+      name: POBJECT,
+      access: AssemblyBuilderAccess,
+      Evidence: POBJECT,
+      pRetVal: ptr ptr AssemblyBuilder,
+    ): HRESULT {.stdcall.}
+    DefineDynamicAssembly_4*: proc(
+      self: ptr AppDomain,
+      name: POBJECT,
+      access: AssemblyBuilderAccess,
+      requiredPermissions: POBJECT,
+      optionalPermissions: POBJECT,
+      refusedPermissions: POBJECT,
+      pRetVal: ptr ptr AssemblyBuilder,
+    ): HRESULT {.stdcall.}
+    DefineDynamicAssembly_5*: proc(
+      self: ptr AppDomain,
+      name: POBJECT,
+      access: AssemblyBuilderAccess,
+      dir: BSTR,
+      Evidence: POBJECT,
+      pRetVal: ptr ptr AssemblyBuilder,
+    ): HRESULT {.stdcall.}
+    DefineDynamicAssembly_6*: proc(
+      self: ptr AppDomain,
+      name: POBJECT,
+      access: AssemblyBuilderAccess,
+      dir: BSTR,
+      requiredPermissions: POBJECT,
+      optionalPermissions: POBJECT,
+      refusedPermissions: POBJECT,
+      pRetVal: ptr ptr AssemblyBuilder,
+    ): HRESULT {.stdcall.}
+    DefineDynamicAssembly_7*: proc(
+      self: ptr AppDomain,
+      name: POBJECT,
+      access: AssemblyBuilderAccess,
+      Evidence: POBJECT,
+      requiredPermissions: POBJECT,
+      optionalPermissions: POBJECT,
+      refusedPermissions: POBJECT,
+      pRetVal: ptr ptr AssemblyBuilder,
+    ): HRESULT {.stdcall.}
+    DefineDynamicAssembly_8*: proc(
+      self: ptr AppDomain,
+      name: POBJECT,
+      access: AssemblyBuilderAccess,
+      dir: BSTR,
+      Evidence: POBJECT,
+      requiredPermissions: POBJECT,
+      optionalPermissions: POBJECT,
+      refusedPermissions: POBJECT,
+      pRetVal: ptr ptr AssemblyBuilder,
+    ): HRESULT {.stdcall.}
+    DefineDynamicAssembly_9*: proc(
+      self: ptr AppDomain,
+      name: POBJECT,
+      access: AssemblyBuilderAccess,
+      dir: BSTR,
+      Evidence: POBJECT,
+      requiredPermissions: POBJECT,
+      optionalPermissions: POBJECT,
+      refusedPermissions: POBJECT,
+      IsSynchronized: VARIANT_BOOL,
+      pRetVal: ptr ptr AssemblyBuilder,
+    ): HRESULT {.stdcall.}
+    CreateInstance*: proc(
+      self: ptr AppDomain,
+      AssemblyName: BSTR,
+      typeName: BSTR,
+      pRetVal: ptr ptr ObjectHandle,
+    ): HRESULT {.stdcall.}
+    CreateInstanceFrom*: proc(
+      self: ptr AppDomain,
+      assemblyFile: BSTR,
+      typeName: BSTR,
+      pRetVal: ptr ptr ObjectHandle,
+    ): HRESULT {.stdcall.}
+    CreateInstance_2*: proc(
+      self: ptr AppDomain,
+      AssemblyName: BSTR,
+      typeName: BSTR,
+      activationAttributes: ptr SAFEARRAY,
+      pRetVal: ptr ptr ObjectHandle,
+    ): HRESULT {.stdcall.}
+    CreateInstanceFrom_2*: proc(
+      self: ptr AppDomain,
+      assemblyFile: BSTR,
+      typeName: BSTR,
+      activationAttributes: ptr SAFEARRAY,
+      pRetVal: ptr ptr ObjectHandle,
+    ): HRESULT {.stdcall.}
+    CreateInstance_3*: proc(
+      self: ptr AppDomain,
+      AssemblyName: BSTR,
+      typeName: BSTR,
+      ignoreCase: VARIANT_BOOL,
+      bindingAttr: BindingFlags,
+      Binder: POBJECT,
+      args: ptr SAFEARRAY,
+      culture: POBJECT,
+      activationAttributes: ptr SAFEARRAY,
+      securityAttributes: POBJECT,
+      pRetVal: ptr ptr ObjectHandle,
+    ): HRESULT {.stdcall.}
+    CreateInstanceFrom_3*: proc(
+      self: ptr AppDomain,
+      assemblyFile: BSTR,
+      typeName: BSTR,
+      ignoreCase: VARIANT_BOOL,
+      bindingAttr: BindingFlags,
+      Binder: POBJECT,
+      args: ptr SAFEARRAY,
+      culture: POBJECT,
+      activationAttributes: ptr SAFEARRAY,
+      securityAttributes: POBJECT,
+      pRetVal: ptr ptr ObjectHandle,
+    ): HRESULT {.stdcall.}
+    Load*: proc(
+      self: ptr AppDomain, assemblyRef: POBJECT, pRetVal: ptr ptr IAssembly
+    ): HRESULT {.stdcall.}
+    Load_2*: proc(
+      self: ptr AppDomain, assemblyString: BSTR, pRetVal: ptr ptr IAssembly
+    ): HRESULT {.stdcall.}
+    Load_3*: proc(
+      self: ptr AppDomain, rawAssembly: ptr SAFEARRAY, pRetVal: ptr ptr IAssembly
+    ): HRESULT {.stdcall.}
+    Load_4*: proc(
+      self: ptr AppDomain,
+      rawAssembly: ptr SAFEARRAY,
+      rawSymbolStore: ptr SAFEARRAY,
+      pRetVal: ptr ptr IAssembly,
+    ): HRESULT {.stdcall.}
+    Load_5*: proc(
+      self: ptr AppDomain,
+      rawAssembly: ptr SAFEARRAY,
+      rawSymbolStore: ptr SAFEARRAY,
+      securityEvidence: POBJECT,
+      pRetVal: ptr ptr IAssembly,
+    ): HRESULT {.stdcall.}
+    Load_6*: proc(
+      self: ptr AppDomain,
+      assemblyRef: POBJECT,
+      assemblySecurity: POBJECT,
+      pRetVal: ptr ptr IAssembly,
+    ): HRESULT {.stdcall.}
+    Load_7*: proc(
+      self: ptr AppDomain,
+      assemblyString: BSTR,
+      assemblySecurity: POBJECT,
+      pRetVal: ptr ptr IAssembly,
+    ): HRESULT {.stdcall.}
+    ExecuteAssembly*: proc(
+      self: ptr AppDomain,
+      assemblyFile: BSTR,
+      assemblySecurity: POBJECT,
+      pRetVal: ptr int32,
+    ): HRESULT {.stdcall.}
+    ExecuteAssembly_2*: proc(
+      self: ptr AppDomain, assemblyFile: BSTR, pRetVal: ptr int32
+    ): HRESULT {.stdcall.}
+    ExecuteAssembly_3*: proc(
+      self: ptr AppDomain,
+      assemblyFile: BSTR,
+      assemblySecurity: POBJECT,
+      args: ptr SAFEARRAY,
+      pRetVal: ptr int32,
+    ): HRESULT {.stdcall.}
     get_FriendlyName*: proc(self: ptr AppDomain, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    get_BaseDirectory*: proc(self: ptr AppDomain, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    get_RelativeSearchPath*: proc(self: ptr AppDomain, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    get_ShadowCopyFiles*: proc(self: ptr AppDomain, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    GetAssemblies*: proc(self: ptr AppDomain, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    get_BaseDirectory*:
+      proc(self: ptr AppDomain, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    get_RelativeSearchPath*:
+      proc(self: ptr AppDomain, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    get_ShadowCopyFiles*:
+      proc(self: ptr AppDomain, pRetVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    GetAssemblies*:
+      proc(self: ptr AppDomain, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
     AppendPrivatePath*: proc(self: ptr AppDomain, Path: BSTR): HRESULT {.stdcall.}
     ClearPrivatePath*: proc(self: ptr AppDomain): HRESULT {.stdcall.}
     SetShadowCopyPath*: proc(self: ptr AppDomain, s: BSTR): HRESULT {.stdcall.}
     ClearShadowCopyPath*: proc(self: ptr AppDomain): HRESULT {.stdcall.}
     SetCachePath*: proc(self: ptr AppDomain, s: BSTR): HRESULT {.stdcall.}
     SetData*: proc(self: ptr AppDomain, name: BSTR, data: VARIANT): HRESULT {.stdcall.}
-    GetData*: proc(self: ptr AppDomain, name: BSTR, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
-    SetAppDomainPolicy*: proc(self: ptr AppDomain, domainPolicy: POBJECT): HRESULT {.stdcall.}
-    SetThreadPrincipal*: proc(self: ptr AppDomain, principal: POBJECT): HRESULT {.stdcall.}
-    SetPrincipalPolicy*: proc(self: ptr AppDomain, policy: PrincipalPolicy): HRESULT {.stdcall.}
+    GetData*:
+      proc(self: ptr AppDomain, name: BSTR, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
+    SetAppDomainPolicy*:
+      proc(self: ptr AppDomain, domainPolicy: POBJECT): HRESULT {.stdcall.}
+    SetThreadPrincipal*:
+      proc(self: ptr AppDomain, principal: POBJECT): HRESULT {.stdcall.}
+    SetPrincipalPolicy*:
+      proc(self: ptr AppDomain, policy: PrincipalPolicy): HRESULT {.stdcall.}
     DoCallBack*: proc(self: ptr AppDomain, theDelegate: POBJECT): HRESULT {.stdcall.}
-    get_DynamicDirectory*: proc(self: ptr AppDomain, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-proc GetCORSystemDirectory*(pbuffer: LPWSTR, cchBuffer: DWORD, dwLength: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc GetCORVersion*(pbBuffer: LPWSTR, cchBuffer: DWORD, dwLength: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc GetFileVersion*(szFilename: LPCWSTR, szBuffer: LPWSTR, cchBuffer: DWORD, dwLength: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc GetCORRequiredVersion*(pbuffer: LPWSTR, cchBuffer: DWORD, dwLength: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc GetRequestedRuntimeInfo*(pExe: LPCWSTR, pwszVersion: LPCWSTR, pConfigurationFile: LPCWSTR, startupFlags: DWORD, runtimeInfoFlags: DWORD, pDirectory: LPWSTR, dwDirectory: DWORD, dwDirectoryLength: ptr DWORD, pVersion: LPWSTR, cchBuffer: DWORD, dwlength: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc GetRequestedRuntimeVersion*(pExe: LPWSTR, pVersion: LPWSTR, cchBuffer: DWORD, dwLength: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc CorBindToRuntimeHost*(pwszVersion: LPCWSTR, pwszBuildFlavor: LPCWSTR, pwszHostConfigFile: LPCWSTR, pReserved: pointer, startupFlags: DWORD, rclsid: REFCLSID, riid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc CorBindToRuntimeEx*(pwszVersion: LPCWSTR, pwszBuildFlavor: LPCWSTR, startupFlags: DWORD, rclsid: REFCLSID, riid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc CorBindToRuntimeByCfg*(pCfgStream: ptr IStream, reserved: DWORD, startupFlags: DWORD, rclsid: REFCLSID, riid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc CorBindToRuntime*(pwszVersion: LPCWSTR, pwszBuildFlavor: LPCWSTR, rclsid: REFCLSID, riid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc CorBindToCurrentRuntime*(pwszFileName: LPCWSTR, rclsid: REFCLSID, riid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc ClrCreateManagedInstance*(pTypeName: LPCWSTR, riid: REFIID, ppObject: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc RunDll32ShimW*(hwnd: HWND, hinst: HINSTANCE, lpszCmdLine: LPCWSTR, nCmdShow: int32): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc LoadLibraryShim*(szDllName: LPCWSTR, szVersion: LPCWSTR, pvReserved: LPVOID, phModDll: ptr HMODULE): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc CallFunctionShim*(szDllName: LPCWSTR, szFunctionName: LPCSTR, lpvArgument1: LPVOID, lpvArgument2: LPVOID, szVersion: LPCWSTR, pvReserved: LPVOID): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc GetRealProcAddress*(pwszProcName: LPCSTR, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc LoadStringRC*(iResouceID: UINT, szBuffer: LPWSTR, iMax: int32, bQuiet: int32): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc LoadStringRCEx*(lcid: LCID, iResouceID: UINT, szBuffer: LPWSTR, iMax: int32, bQuiet: int32, pcwchUsed: ptr int32): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc LockClrVersion*(hostCallback: FLockClrVersionCallback, pBeginHostSetup: ptr FLockClrVersionCallback, pEndHostSetup: ptr FLockClrVersionCallback): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc CreateDebuggingInterfaceFromVersion*(iDebuggerVersion: int32, szDebuggeeVersion: LPCWSTR, ppCordb: ptr ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc GetVersionFromProcess*(hProcess: HANDLE, pVersion: LPWSTR, cchBuffer: DWORD, dwLength: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc GetRequestedRuntimeVersionForCLSID*(rclsid: REFCLSID, pVersion: LPWSTR, cchBuffer: DWORD, dwLength: ptr DWORD, dwResolutionFlags: CLSID_RESOLUTION_FLAGS): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc CLRCreateInstance*(clsid: REFCLSID, riid: REFIID, ppInterface: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
-proc `pReserved=`*(self: var CustomDumpItem, x: UINT_PTR) {.inline.} = self.union1.pReserved = x
-proc pReserved*(self: CustomDumpItem): UINT_PTR {.inline.} = self.union1.pReserved
-proc pReserved*(self: var CustomDumpItem): var UINT_PTR {.inline.} = self.union1.pReserved
-proc SetGCStartupLimits*(self: ptr IGCHost, SegmentSize: DWORD, MaxGen0Size: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetGCStartupLimits(self, SegmentSize, MaxGen0Size)
-proc Collect*(self: ptr IGCHost, Generation: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Collect(self, Generation)
-proc GetStats*(self: ptr IGCHost, pStats: ptr COR_GC_STATS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetStats(self, pStats)
-proc GetThreadStats*(self: ptr IGCHost, pFiberCookie: ptr DWORD, pStats: ptr COR_GC_THREAD_STATS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetThreadStats(self, pFiberCookie, pStats)
-proc SetVirtualMemLimit*(self: ptr IGCHost, sztMaxVirtualMemMB: SIZE_T): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetVirtualMemLimit(self, sztMaxVirtualMemMB)
-proc SetGCStartupLimitsEx*(self: ptr IGCHost2, SegmentSize: SIZE_T, MaxGen0Size: SIZE_T): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetGCStartupLimitsEx(self, SegmentSize, MaxGen0Size)
-proc VEHandler*(self: ptr IVEHandler, VECode: HRESULT, Context: VEContext, psa: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.VEHandler(self, VECode, Context, psa)
-proc SetReporterFtn*(self: ptr IVEHandler, lFnPtr: int64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetReporterFtn(self, lFnPtr)
-proc Validate*(self: ptr IValidator, veh: ptr IVEHandler, pAppDomain: ptr IUnknown, ulFlags: int32, ulMaxError: int32, token: int32, fileName: LPWSTR, pe: ptr BYTE, ulSize: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Validate(self, veh, pAppDomain, ulFlags, ulMaxError, token, fileName, pe, ulSize)
-proc FormatEventInfo*(self: ptr IValidator, hVECode: HRESULT, Context: VEContext, msg: LPWSTR, ulMaxLength: int32, psa: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FormatEventInfo(self, hVECode, Context, msg, ulMaxLength, psa)
-proc Validate*(self: ptr ICLRValidator, veh: ptr IVEHandler, ulAppDomainId: int32, ulFlags: int32, ulMaxError: int32, token: int32, fileName: LPWSTR, pe: ptr BYTE, ulSize: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Validate(self, veh, ulAppDomainId, ulFlags, ulMaxError, token, fileName, pe, ulSize)
-proc FormatEventInfo*(self: ptr ICLRValidator, hVECode: HRESULT, Context: VEContext, msg: LPWSTR, ulMaxLength: int32, psa: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FormatEventInfo(self, hVECode, Context, msg, ulMaxLength, psa)
-proc Unwrap*(self: ptr IObjectHandle, ppv: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unwrap(self, ppv)
-proc OnAppDomain*(self: ptr IAppDomainBinding, pAppdomain: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnAppDomain(self, pAppdomain)
-proc ThreadIsBlockingForSuspension*(self: ptr IGCThreadControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ThreadIsBlockingForSuspension(self)
-proc SuspensionStarting*(self: ptr IGCThreadControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SuspensionStarting(self)
-proc SuspensionEnding*(self: ptr IGCThreadControl, Generation: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SuspensionEnding(self, Generation)
-proc RequestVirtualMemLimit*(self: ptr IGCHostControl, sztMaxVirtualMemMB: SIZE_T, psztNewMaxVirtualMemMB: ptr SIZE_T): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestVirtualMemLimit(self, sztMaxVirtualMemMB, psztNewMaxVirtualMemMB)
-proc CorRegisterWaitForSingleObject*(self: ptr ICorThreadpool, phNewWaitObject: ptr HANDLE, hWaitObject: HANDLE, Callback: WAITORTIMERCALLBACK, Context: PVOID, timeout: ULONG, executeOnlyOnce: BOOL, ret: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CorRegisterWaitForSingleObject(self, phNewWaitObject, hWaitObject, Callback, Context, timeout, executeOnlyOnce, ret)
-proc CorUnregisterWait*(self: ptr ICorThreadpool, hWaitObject: HANDLE, CompletionEvent: HANDLE, ret: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CorUnregisterWait(self, hWaitObject, CompletionEvent, ret)
-proc CorQueueUserWorkItem*(self: ptr ICorThreadpool, Function: LPTHREAD_START_ROUTINE, Context: PVOID, executeOnlyOnce: BOOL, ret: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CorQueueUserWorkItem(self, Function, Context, executeOnlyOnce, ret)
-proc CorCreateTimer*(self: ptr ICorThreadpool, phNewTimer: ptr HANDLE, Callback: WAITORTIMERCALLBACK, Parameter: PVOID, DueTime: DWORD, Period: DWORD, ret: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CorCreateTimer(self, phNewTimer, Callback, Parameter, DueTime, Period, ret)
-proc CorChangeTimer*(self: ptr ICorThreadpool, Timer: HANDLE, DueTime: ULONG, Period: ULONG, ret: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CorChangeTimer(self, Timer, DueTime, Period, ret)
-proc CorDeleteTimer*(self: ptr ICorThreadpool, Timer: HANDLE, CompletionEvent: HANDLE, ret: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CorDeleteTimer(self, Timer, CompletionEvent, ret)
-proc CorBindIoCompletionCallback*(self: ptr ICorThreadpool, fileHandle: HANDLE, callback: LPOVERLAPPED_COMPLETION_ROUTINE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CorBindIoCompletionCallback(self, fileHandle, callback)
-proc CorCallOrQueueUserWorkItem*(self: ptr ICorThreadpool, Function: LPTHREAD_START_ROUTINE, Context: PVOID, ret: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CorCallOrQueueUserWorkItem(self, Function, Context, ret)
-proc CorSetMaxThreads*(self: ptr ICorThreadpool, MaxWorkerThreads: DWORD, MaxIOCompletionThreads: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CorSetMaxThreads(self, MaxWorkerThreads, MaxIOCompletionThreads)
-proc CorGetMaxThreads*(self: ptr ICorThreadpool, MaxWorkerThreads: ptr DWORD, MaxIOCompletionThreads: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CorGetMaxThreads(self, MaxWorkerThreads, MaxIOCompletionThreads)
-proc CorGetAvailableThreads*(self: ptr ICorThreadpool, AvailableWorkerThreads: ptr DWORD, AvailableIOCompletionThreads: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CorGetAvailableThreads(self, AvailableWorkerThreads, AvailableIOCompletionThreads)
-proc ThreadIsBlockingForDebugger*(self: ptr IDebuggerThreadControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ThreadIsBlockingForDebugger(self)
-proc ReleaseAllRuntimeThreads*(self: ptr IDebuggerThreadControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseAllRuntimeThreads(self)
-proc StartBlockingForDebugger*(self: ptr IDebuggerThreadControl, dwUnused: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StartBlockingForDebugger(self, dwUnused)
-proc IsDebuggerAttached*(self: ptr IDebuggerInfo, pbAttached: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDebuggerAttached(self, pbAttached)
-proc SetGCThreadControl*(self: ptr ICorConfiguration, pGCThreadControl: ptr IGCThreadControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetGCThreadControl(self, pGCThreadControl)
-proc SetGCHostControl*(self: ptr ICorConfiguration, pGCHostControl: ptr IGCHostControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetGCHostControl(self, pGCHostControl)
-proc SetDebuggerThreadControl*(self: ptr ICorConfiguration, pDebuggerThreadControl: ptr IDebuggerThreadControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDebuggerThreadControl(self, pDebuggerThreadControl)
-proc AddDebuggerSpecialThread*(self: ptr ICorConfiguration, dwSpecialThreadId: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddDebuggerSpecialThread(self, dwSpecialThreadId)
-proc CreateLogicalThreadState*(self: ptr ICorRuntimeHost): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateLogicalThreadState(self)
-proc DeleteLogicalThreadState*(self: ptr ICorRuntimeHost): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteLogicalThreadState(self)
-proc SwitchInLogicalThreadState*(self: ptr ICorRuntimeHost, pFiberCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SwitchInLogicalThreadState(self, pFiberCookie)
-proc SwitchOutLogicalThreadState*(self: ptr ICorRuntimeHost, pFiberCookie: ptr ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SwitchOutLogicalThreadState(self, pFiberCookie)
-proc LocksHeldByLogicalThread*(self: ptr ICorRuntimeHost, pCount: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LocksHeldByLogicalThread(self, pCount)
-proc MapFile*(self: ptr ICorRuntimeHost, hFile: HANDLE, hMapAddress: ptr HMODULE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MapFile(self, hFile, hMapAddress)
-proc GetConfiguration*(self: ptr ICorRuntimeHost, pConfiguration: ptr ptr ICorConfiguration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConfiguration(self, pConfiguration)
-proc Start*(self: ptr ICorRuntimeHost): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Start(self)
-proc Stop*(self: ptr ICorRuntimeHost): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Stop(self)
-proc CreateDomain*(self: ptr ICorRuntimeHost, pwzFriendlyName: LPCWSTR, pIdentityArray: ptr IUnknown, pAppDomain: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateDomain(self, pwzFriendlyName, pIdentityArray, pAppDomain)
-proc GetDefaultDomain*(self: ptr ICorRuntimeHost, pAppDomain: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultDomain(self, pAppDomain)
-proc EnumDomains*(self: ptr ICorRuntimeHost, hEnum: ptr HDOMAINENUM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumDomains(self, hEnum)
-proc NextDomain*(self: ptr ICorRuntimeHost, hEnum: HDOMAINENUM, pAppDomain: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NextDomain(self, hEnum, pAppDomain)
-proc CloseEnum*(self: ptr ICorRuntimeHost, hEnum: HDOMAINENUM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CloseEnum(self, hEnum)
-proc CreateDomainEx*(self: ptr ICorRuntimeHost, pwzFriendlyName: LPCWSTR, pSetup: ptr IUnknown, pEvidence: ptr IUnknown, pAppDomain: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateDomainEx(self, pwzFriendlyName, pSetup, pEvidence, pAppDomain)
-proc CreateDomainSetup*(self: ptr ICorRuntimeHost, pAppDomainSetup: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateDomainSetup(self, pAppDomainSetup)
-proc CreateEvidence*(self: ptr ICorRuntimeHost, pEvidence: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateEvidence(self, pEvidence)
-proc UnloadDomain*(self: ptr ICorRuntimeHost, pAppDomain: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnloadDomain(self, pAppDomain)
-proc CurrentDomain*(self: ptr ICorRuntimeHost, pAppDomain: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CurrentDomain(self, pAppDomain)
-proc OnMemoryNotification*(self: ptr ICLRMemoryNotificationCallback, eMemoryAvailable: EMemoryAvailable): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnMemoryNotification(self, eMemoryAvailable)
-proc Alloc*(self: ptr IHostMalloc, cbSize: SIZE_T, eCriticalLevel: EMemoryCriticalLevel, ppMem: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Alloc(self, cbSize, eCriticalLevel, ppMem)
-proc DebugAlloc*(self: ptr IHostMalloc, cbSize: SIZE_T, eCriticalLevel: EMemoryCriticalLevel, pszFileName: ptr char, iLineNo: int32, ppMem: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DebugAlloc(self, cbSize, eCriticalLevel, pszFileName, iLineNo, ppMem)
-proc Free*(self: ptr IHostMalloc, pMem: pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Free(self, pMem)
-proc CreateMalloc*(self: ptr IHostMemoryManager, dwMallocType: DWORD, ppMalloc: ptr ptr IHostMalloc): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateMalloc(self, dwMallocType, ppMalloc)
-proc VirtualAlloc*(self: ptr IHostMemoryManager, pAddress: pointer, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD, eCriticalLevel: EMemoryCriticalLevel, ppMem: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.VirtualAlloc(self, pAddress, dwSize, flAllocationType, flProtect, eCriticalLevel, ppMem)
-proc VirtualFree*(self: ptr IHostMemoryManager, lpAddress: LPVOID, dwSize: SIZE_T, dwFreeType: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.VirtualFree(self, lpAddress, dwSize, dwFreeType)
-proc VirtualQuery*(self: ptr IHostMemoryManager, lpAddress: pointer, lpBuffer: pointer, dwLength: SIZE_T, pResult: ptr SIZE_T): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.VirtualQuery(self, lpAddress, lpBuffer, dwLength, pResult)
-proc VirtualProtect*(self: ptr IHostMemoryManager, lpAddress: pointer, dwSize: SIZE_T, flNewProtect: DWORD, pflOldProtect: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.VirtualProtect(self, lpAddress, dwSize, flNewProtect, pflOldProtect)
-proc GetMemoryLoad*(self: ptr IHostMemoryManager, pMemoryLoad: ptr DWORD, pAvailableBytes: ptr SIZE_T): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMemoryLoad(self, pMemoryLoad, pAvailableBytes)
-proc RegisterMemoryNotificationCallback*(self: ptr IHostMemoryManager, pCallback: ptr ICLRMemoryNotificationCallback): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterMemoryNotificationCallback(self, pCallback)
-proc NeedsVirtualAddressSpace*(self: ptr IHostMemoryManager, startAddress: LPVOID, size: SIZE_T): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NeedsVirtualAddressSpace(self, startAddress, size)
-proc AcquiredVirtualAddressSpace*(self: ptr IHostMemoryManager, startAddress: LPVOID, size: SIZE_T): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AcquiredVirtualAddressSpace(self, startAddress, size)
-proc ReleasedVirtualAddressSpace*(self: ptr IHostMemoryManager, startAddress: LPVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleasedVirtualAddressSpace(self, startAddress)
-proc SwitchIn*(self: ptr ICLRTask, threadHandle: HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SwitchIn(self, threadHandle)
-proc SwitchOut*(self: ptr ICLRTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SwitchOut(self)
-proc GetMemStats*(self: ptr ICLRTask, memUsage: ptr COR_GC_THREAD_STATS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMemStats(self, memUsage)
-proc Reset*(self: ptr ICLRTask, fFull: BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self, fFull)
-proc ExitTask*(self: ptr ICLRTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExitTask(self)
-proc Abort*(self: ptr ICLRTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Abort(self)
-proc RudeAbort*(self: ptr ICLRTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RudeAbort(self)
-proc NeedsPriorityScheduling*(self: ptr ICLRTask, pbNeedsPriorityScheduling: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NeedsPriorityScheduling(self, pbNeedsPriorityScheduling)
-proc YieldTask*(self: ptr ICLRTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.YieldTask(self)
-proc LocksHeld*(self: ptr ICLRTask, pLockCount: ptr SIZE_T): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LocksHeld(self, pLockCount)
-proc SetTaskIdentifier*(self: ptr ICLRTask, asked: TASKID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTaskIdentifier(self, asked)
-proc BeginPreventAsyncAbort*(self: ptr ICLRTask2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeginPreventAsyncAbort(self)
-proc EndPreventAsyncAbort*(self: ptr ICLRTask2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EndPreventAsyncAbort(self)
-proc Start*(self: ptr IHostTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Start(self)
-proc Alert*(self: ptr IHostTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Alert(self)
-proc Join*(self: ptr IHostTask, dwMilliseconds: DWORD, option: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Join(self, dwMilliseconds, option)
-proc SetPriority*(self: ptr IHostTask, newPriority: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPriority(self, newPriority)
-proc GetPriority*(self: ptr IHostTask, pPriority: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPriority(self, pPriority)
-proc SetCLRTask*(self: ptr IHostTask, pCLRTask: ptr ICLRTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCLRTask(self, pCLRTask)
-proc CreateTask*(self: ptr ICLRTaskManager, pTask: ptr ptr ICLRTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateTask(self, pTask)
-proc GetCurrentTask*(self: ptr ICLRTaskManager, pTask: ptr ptr ICLRTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentTask(self, pTask)
-proc SetUILocale*(self: ptr ICLRTaskManager, lcid: LCID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetUILocale(self, lcid)
-proc SetLocale*(self: ptr ICLRTaskManager, lcid: LCID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetLocale(self, lcid)
-proc GetCurrentTaskType*(self: ptr ICLRTaskManager, pTaskType: ptr ETaskType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentTaskType(self, pTaskType)
-proc GetCurrentTask*(self: ptr IHostTaskManager, pTask: ptr ptr IHostTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentTask(self, pTask)
-proc CreateTask*(self: ptr IHostTaskManager, dwStackSize: DWORD, pStartAddress: LPTHREAD_START_ROUTINE, pParameter: PVOID, ppTask: ptr ptr IHostTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateTask(self, dwStackSize, pStartAddress, pParameter, ppTask)
-proc Sleep*(self: ptr IHostTaskManager, dwMilliseconds: DWORD, option: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Sleep(self, dwMilliseconds, option)
-proc SwitchToTask*(self: ptr IHostTaskManager, option: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SwitchToTask(self, option)
-proc SetUILocale*(self: ptr IHostTaskManager, lcid: LCID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetUILocale(self, lcid)
-proc SetLocale*(self: ptr IHostTaskManager, lcid: LCID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetLocale(self, lcid)
-proc CallNeedsHostHook*(self: ptr IHostTaskManager, target: SIZE_T, pbCallNeedsHostHook: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CallNeedsHostHook(self, target, pbCallNeedsHostHook)
-proc LeaveRuntime*(self: ptr IHostTaskManager, target: SIZE_T): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LeaveRuntime(self, target)
-proc EnterRuntime*(self: ptr IHostTaskManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnterRuntime(self)
-proc ReverseLeaveRuntime*(self: ptr IHostTaskManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReverseLeaveRuntime(self)
-proc ReverseEnterRuntime*(self: ptr IHostTaskManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReverseEnterRuntime(self)
-proc BeginDelayAbort*(self: ptr IHostTaskManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeginDelayAbort(self)
-proc EndDelayAbort*(self: ptr IHostTaskManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EndDelayAbort(self)
-proc BeginThreadAffinity*(self: ptr IHostTaskManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeginThreadAffinity(self)
-proc EndThreadAffinity*(self: ptr IHostTaskManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EndThreadAffinity(self)
-proc SetStackGuarantee*(self: ptr IHostTaskManager, guarantee: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetStackGuarantee(self, guarantee)
-proc GetStackGuarantee*(self: ptr IHostTaskManager, pGuarantee: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetStackGuarantee(self, pGuarantee)
-proc SetCLRTaskManager*(self: ptr IHostTaskManager, ppManager: ptr ICLRTaskManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCLRTaskManager(self, ppManager)
-proc QueueUserWorkItem*(self: ptr IHostThreadpoolManager, Function: LPTHREAD_START_ROUTINE, Context: PVOID, Flags: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueueUserWorkItem(self, Function, Context, Flags)
-proc SetMaxThreads*(self: ptr IHostThreadpoolManager, dwMaxWorkerThreads: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMaxThreads(self, dwMaxWorkerThreads)
-proc GetMaxThreads*(self: ptr IHostThreadpoolManager, pdwMaxWorkerThreads: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMaxThreads(self, pdwMaxWorkerThreads)
-proc GetAvailableThreads*(self: ptr IHostThreadpoolManager, pdwAvailableWorkerThreads: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAvailableThreads(self, pdwAvailableWorkerThreads)
-proc SetMinThreads*(self: ptr IHostThreadpoolManager, dwMinIOCompletionThreads: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMinThreads(self, dwMinIOCompletionThreads)
-proc GetMinThreads*(self: ptr IHostThreadpoolManager, pdwMinIOCompletionThreads: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMinThreads(self, pdwMinIOCompletionThreads)
-proc OnComplete*(self: ptr ICLRIoCompletionManager, dwErrorCode: DWORD, NumberOfBytesTransferred: DWORD, pvOverlapped: pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnComplete(self, dwErrorCode, NumberOfBytesTransferred, pvOverlapped)
-proc CreateIoCompletionPort*(self: ptr IHostIoCompletionManager, phPort: ptr HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateIoCompletionPort(self, phPort)
-proc CloseIoCompletionPort*(self: ptr IHostIoCompletionManager, hPort: HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CloseIoCompletionPort(self, hPort)
-proc SetMaxThreads*(self: ptr IHostIoCompletionManager, dwMaxIOCompletionThreads: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMaxThreads(self, dwMaxIOCompletionThreads)
-proc GetMaxThreads*(self: ptr IHostIoCompletionManager, pdwMaxIOCompletionThreads: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMaxThreads(self, pdwMaxIOCompletionThreads)
-proc GetAvailableThreads*(self: ptr IHostIoCompletionManager, pdwAvailableIOCompletionThreads: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAvailableThreads(self, pdwAvailableIOCompletionThreads)
-proc GetHostOverlappedSize*(self: ptr IHostIoCompletionManager, pcbSize: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHostOverlappedSize(self, pcbSize)
-proc SetCLRIoCompletionManager*(self: ptr IHostIoCompletionManager, pManager: ptr ICLRIoCompletionManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCLRIoCompletionManager(self, pManager)
-proc InitializeHostOverlapped*(self: ptr IHostIoCompletionManager, pvOverlapped: pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeHostOverlapped(self, pvOverlapped)
-proc Bind*(self: ptr IHostIoCompletionManager, hPort: HANDLE, hHandle: HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Bind(self, hPort, hHandle)
-proc SetMinThreads*(self: ptr IHostIoCompletionManager, dwMinIOCompletionThreads: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMinThreads(self, dwMinIOCompletionThreads)
-proc GetMinThreads*(self: ptr IHostIoCompletionManager, pdwMinIOCompletionThreads: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMinThreads(self, pdwMinIOCompletionThreads)
-proc BeginConnection*(self: ptr ICLRDebugManager, dwConnectionId: CONNID, szConnectionName: ptr uint16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeginConnection(self, dwConnectionId, szConnectionName)
-proc SetConnectionTasks*(self: ptr ICLRDebugManager, id: CONNID, dwCount: DWORD, ppCLRTask: ptr ptr ICLRTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetConnectionTasks(self, id, dwCount, ppCLRTask)
-proc EndConnection*(self: ptr ICLRDebugManager, dwConnectionId: CONNID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EndConnection(self, dwConnectionId)
-proc SetDacl*(self: ptr ICLRDebugManager, pacl: PACL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDacl(self, pacl)
-proc GetDacl*(self: ptr ICLRDebugManager, pacl: ptr PACL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDacl(self, pacl)
-proc IsDebuggerAttached*(self: ptr ICLRDebugManager, pbAttached: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDebuggerAttached(self, pbAttached)
-proc SetSymbolReadingPolicy*(self: ptr ICLRDebugManager, policy: ESymbolReadingPolicy): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSymbolReadingPolicy(self, policy)
-proc GetBucketParametersForCurrentException*(self: ptr ICLRErrorReportingManager, pParams: ptr BucketParameters): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBucketParametersForCurrentException(self, pParams)
-proc BeginCustomDump*(self: ptr ICLRErrorReportingManager, dwFlavor: ECustomDumpFlavor, dwNumItems: DWORD, items: ptr CustomDumpItem, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeginCustomDump(self, dwFlavor, dwNumItems, items, dwReserved)
-proc EndCustomDump*(self: ptr ICLRErrorReportingManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EndCustomDump(self)
-proc Enter*(self: ptr IHostCrst, option: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Enter(self, option)
-proc Leave*(self: ptr IHostCrst): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Leave(self)
-proc TryEnter*(self: ptr IHostCrst, option: DWORD, pbSucceeded: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TryEnter(self, option, pbSucceeded)
-proc SetSpinCount*(self: ptr IHostCrst, dwSpinCount: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSpinCount(self, dwSpinCount)
-proc Wait*(self: ptr IHostAutoEvent, dwMilliseconds: DWORD, option: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Wait(self, dwMilliseconds, option)
-proc Set*(self: ptr IHostAutoEvent): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Set(self)
-proc Wait*(self: ptr IHostManualEvent, dwMilliseconds: DWORD, option: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Wait(self, dwMilliseconds, option)
-proc Reset*(self: ptr IHostManualEvent): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Set*(self: ptr IHostManualEvent): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Set(self)
-proc Wait*(self: ptr IHostSemaphore, dwMilliseconds: DWORD, option: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Wait(self, dwMilliseconds, option)
-proc ReleaseSemaphore*(self: ptr IHostSemaphore, lReleaseCount: LONG, lpPreviousCount: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseSemaphore(self, lReleaseCount, lpPreviousCount)
-proc GetMonitorOwner*(self: ptr ICLRSyncManager, Cookie: SIZE_T, ppOwnerHostTask: ptr ptr IHostTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMonitorOwner(self, Cookie, ppOwnerHostTask)
-proc CreateRWLockOwnerIterator*(self: ptr ICLRSyncManager, Cookie: SIZE_T, pIterator: ptr SIZE_T): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateRWLockOwnerIterator(self, Cookie, pIterator)
-proc GetRWLockOwnerNext*(self: ptr ICLRSyncManager, Iterator: SIZE_T, ppOwnerHostTask: ptr ptr IHostTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRWLockOwnerNext(self, Iterator, ppOwnerHostTask)
-proc DeleteRWLockOwnerIterator*(self: ptr ICLRSyncManager, Iterator: SIZE_T): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteRWLockOwnerIterator(self, Iterator)
-proc SetCLRSyncManager*(self: ptr IHostSyncManager, pManager: ptr ICLRSyncManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCLRSyncManager(self, pManager)
-proc CreateCrst*(self: ptr IHostSyncManager, ppCrst: ptr ptr IHostCrst): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateCrst(self, ppCrst)
-proc CreateCrstWithSpinCount*(self: ptr IHostSyncManager, dwSpinCount: DWORD, ppCrst: ptr ptr IHostCrst): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateCrstWithSpinCount(self, dwSpinCount, ppCrst)
-proc CreateAutoEvent*(self: ptr IHostSyncManager, ppEvent: ptr ptr IHostAutoEvent): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateAutoEvent(self, ppEvent)
-proc CreateManualEvent*(self: ptr IHostSyncManager, bInitialState: BOOL, ppEvent: ptr ptr IHostManualEvent): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateManualEvent(self, bInitialState, ppEvent)
-proc CreateMonitorEvent*(self: ptr IHostSyncManager, Cookie: SIZE_T, ppEvent: ptr ptr IHostAutoEvent): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateMonitorEvent(self, Cookie, ppEvent)
-proc CreateRWLockWriterEvent*(self: ptr IHostSyncManager, Cookie: SIZE_T, ppEvent: ptr ptr IHostAutoEvent): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateRWLockWriterEvent(self, Cookie, ppEvent)
-proc CreateRWLockReaderEvent*(self: ptr IHostSyncManager, bInitialState: BOOL, Cookie: SIZE_T, ppEvent: ptr ptr IHostManualEvent): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateRWLockReaderEvent(self, bInitialState, Cookie, ppEvent)
-proc CreateSemaphore*(self: ptr IHostSyncManager, dwInitial: DWORD, dwMax: DWORD, ppSemaphore: ptr ptr IHostSemaphore): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateSemaphore(self, dwInitial, dwMax, ppSemaphore)
-proc SetDefaultAction*(self: ptr ICLRPolicyManager, operation: EClrOperation, action: EPolicyAction): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDefaultAction(self, operation, action)
-proc SetTimeout*(self: ptr ICLRPolicyManager, operation: EClrOperation, dwMilliseconds: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTimeout(self, operation, dwMilliseconds)
-proc SetActionOnTimeout*(self: ptr ICLRPolicyManager, operation: EClrOperation, action: EPolicyAction): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetActionOnTimeout(self, operation, action)
-proc SetTimeoutAndAction*(self: ptr ICLRPolicyManager, operation: EClrOperation, dwMilliseconds: DWORD, action: EPolicyAction): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTimeoutAndAction(self, operation, dwMilliseconds, action)
-proc SetActionOnFailure*(self: ptr ICLRPolicyManager, failure: EClrFailure, action: EPolicyAction): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetActionOnFailure(self, failure, action)
-proc SetUnhandledExceptionPolicy*(self: ptr ICLRPolicyManager, policy: EClrUnhandledException): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetUnhandledExceptionPolicy(self, policy)
-proc OnDefaultAction*(self: ptr IHostPolicyManager, operation: EClrOperation, action: EPolicyAction): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDefaultAction(self, operation, action)
-proc OnTimeout*(self: ptr IHostPolicyManager, operation: EClrOperation, action: EPolicyAction): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnTimeout(self, operation, action)
-proc OnFailure*(self: ptr IHostPolicyManager, failure: EClrFailure, action: EPolicyAction): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnFailure(self, failure, action)
-proc OnEvent*(self: ptr IActionOnCLREvent, event: EClrEvent, data: PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnEvent(self, event, data)
-proc RegisterActionOnEvent*(self: ptr ICLROnEventManager, event: EClrEvent, pAction: ptr IActionOnCLREvent): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterActionOnEvent(self, event, pAction)
-proc UnregisterActionOnEvent*(self: ptr ICLROnEventManager, event: EClrEvent, pAction: ptr IActionOnCLREvent): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterActionOnEvent(self, event, pAction)
-proc ThreadIsBlockingForSuspension*(self: ptr IHostGCManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ThreadIsBlockingForSuspension(self)
-proc SuspensionStarting*(self: ptr IHostGCManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SuspensionStarting(self)
-proc SuspensionEnding*(self: ptr IHostGCManager, Generation: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SuspensionEnding(self, Generation)
-proc IsStringAssemblyReferenceInList*(self: ptr ICLRAssemblyReferenceList, pwzAssemblyName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsStringAssemblyReferenceInList(self, pwzAssemblyName)
-proc IsAssemblyReferenceInList*(self: ptr ICLRAssemblyReferenceList, pName: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsAssemblyReferenceInList(self, pName)
-proc Get*(self: ptr ICLRReferenceAssemblyEnum, dwIndex: DWORD, pwzBuffer: LPWSTR, pcchBufferSize: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Get(self, dwIndex, pwzBuffer, pcchBufferSize)
-proc Get*(self: ptr ICLRProbingAssemblyEnum, dwIndex: DWORD, pwzBuffer: LPWSTR, pcchBufferSize: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Get(self, dwIndex, pwzBuffer, pcchBufferSize)
-proc GetCLRAssemblyReferenceList*(self: ptr ICLRAssemblyIdentityManager, ppwzAssemblyReferences: ptr LPCWSTR, dwNumOfReferences: DWORD, ppReferenceList: ptr ptr ICLRAssemblyReferenceList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCLRAssemblyReferenceList(self, ppwzAssemblyReferences, dwNumOfReferences, ppReferenceList)
-proc GetBindingIdentityFromFile*(self: ptr ICLRAssemblyIdentityManager, pwzFilePath: LPCWSTR, dwFlags: DWORD, pwzBuffer: LPWSTR, pcchBufferSize: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBindingIdentityFromFile(self, pwzFilePath, dwFlags, pwzBuffer, pcchBufferSize)
-proc GetBindingIdentityFromStream*(self: ptr ICLRAssemblyIdentityManager, pStream: ptr IStream, dwFlags: DWORD, pwzBuffer: LPWSTR, pcchBufferSize: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBindingIdentityFromStream(self, pStream, dwFlags, pwzBuffer, pcchBufferSize)
-proc GetReferencedAssembliesFromFile*(self: ptr ICLRAssemblyIdentityManager, pwzFilePath: LPCWSTR, dwFlags: DWORD, pExcludeAssembliesList: ptr ICLRAssemblyReferenceList, ppReferenceEnum: ptr ptr ICLRReferenceAssemblyEnum): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetReferencedAssembliesFromFile(self, pwzFilePath, dwFlags, pExcludeAssembliesList, ppReferenceEnum)
-proc GetReferencedAssembliesFromStream*(self: ptr ICLRAssemblyIdentityManager, pStream: ptr IStream, dwFlags: DWORD, pExcludeAssembliesList: ptr ICLRAssemblyReferenceList, ppReferenceEnum: ptr ptr ICLRReferenceAssemblyEnum): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetReferencedAssembliesFromStream(self, pStream, dwFlags, pExcludeAssembliesList, ppReferenceEnum)
-proc GetProbingAssembliesFromReference*(self: ptr ICLRAssemblyIdentityManager, dwMachineType: DWORD, dwFlags: DWORD, pwzReferenceIdentity: LPCWSTR, ppProbingAssemblyEnum: ptr ptr ICLRProbingAssemblyEnum): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProbingAssembliesFromReference(self, dwMachineType, dwFlags, pwzReferenceIdentity, ppProbingAssemblyEnum)
-proc IsStronglyNamed*(self: ptr ICLRAssemblyIdentityManager, pwzAssemblyIdentity: LPCWSTR, pbIsStronglyNamed: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsStronglyNamed(self, pwzAssemblyIdentity, pbIsStronglyNamed)
-proc ModifyApplicationPolicy*(self: ptr ICLRHostBindingPolicyManager, pwzSourceAssemblyIdentity: LPCWSTR, pwzTargetAssemblyIdentity: LPCWSTR, pbApplicationPolicy: ptr BYTE, cbAppPolicySize: DWORD, dwPolicyModifyFlags: DWORD, pbNewApplicationPolicy: ptr BYTE, pcbNewAppPolicySize: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ModifyApplicationPolicy(self, pwzSourceAssemblyIdentity, pwzTargetAssemblyIdentity, pbApplicationPolicy, cbAppPolicySize, dwPolicyModifyFlags, pbNewApplicationPolicy, pcbNewAppPolicySize)
-proc EvaluatePolicy*(self: ptr ICLRHostBindingPolicyManager, pwzReferenceIdentity: LPCWSTR, pbApplicationPolicy: ptr BYTE, cbAppPolicySize: DWORD, pwzPostPolicyReferenceIdentity: LPWSTR, pcchPostPolicyReferenceIdentity: ptr DWORD, pdwPoliciesApplied: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EvaluatePolicy(self, pwzReferenceIdentity, pbApplicationPolicy, cbAppPolicySize, pwzPostPolicyReferenceIdentity, pcchPostPolicyReferenceIdentity, pdwPoliciesApplied)
-proc Collect*(self: ptr ICLRGCManager, Generation: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Collect(self, Generation)
-proc GetStats*(self: ptr ICLRGCManager, pStats: ptr COR_GC_STATS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetStats(self, pStats)
-proc SetGCStartupLimits*(self: ptr ICLRGCManager, SegmentSize: DWORD, MaxGen0Size: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetGCStartupLimits(self, SegmentSize, MaxGen0Size)
-proc SetGCStartupLimitsEx*(self: ptr ICLRGCManager2, SegmentSize: SIZE_T, MaxGen0Size: SIZE_T): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetGCStartupLimitsEx(self, SegmentSize, MaxGen0Size)
-proc ProvideAssembly*(self: ptr IHostAssemblyStore, pBindInfo: ptr AssemblyBindInfo, pAssemblyId: ptr UINT64, pContext: ptr UINT64, ppStmAssemblyImage: ptr ptr IStream, ppStmPDB: ptr ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ProvideAssembly(self, pBindInfo, pAssemblyId, pContext, ppStmAssemblyImage, ppStmPDB)
-proc ProvideModule*(self: ptr IHostAssemblyStore, pBindInfo: ptr ModuleBindInfo, pdwModuleId: ptr DWORD, ppStmModuleImage: ptr ptr IStream, ppStmPDB: ptr ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ProvideModule(self, pBindInfo, pdwModuleId, ppStmModuleImage, ppStmPDB)
-proc GetNonHostStoreAssemblies*(self: ptr IHostAssemblyManager, ppReferenceList: ptr ptr ICLRAssemblyReferenceList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNonHostStoreAssemblies(self, ppReferenceList)
-proc GetAssemblyStore*(self: ptr IHostAssemblyManager, ppAssemblyStore: ptr ptr IHostAssemblyStore): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAssemblyStore(self, ppAssemblyStore)
-proc GetHostManager*(self: ptr IHostControl, riid: REFIID, ppObject: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHostManager(self, riid, ppObject)
-proc SetAppDomainManager*(self: ptr IHostControl, dwAppDomainID: DWORD, pUnkAppDomainManager: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAppDomainManager(self, dwAppDomainID, pUnkAppDomainManager)
-proc GetCLRManager*(self: ptr ICLRControl, riid: REFIID, ppObject: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCLRManager(self, riid, ppObject)
-proc SetAppDomainManagerType*(self: ptr ICLRControl, pwzAppDomainManagerAssembly: LPCWSTR, pwzAppDomainManagerType: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAppDomainManagerType(self, pwzAppDomainManagerAssembly, pwzAppDomainManagerType)
-proc Start*(self: ptr ICLRRuntimeHost): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Start(self)
-proc Stop*(self: ptr ICLRRuntimeHost): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Stop(self)
-proc SetHostControl*(self: ptr ICLRRuntimeHost, pHostControl: ptr IHostControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHostControl(self, pHostControl)
-proc GetCLRControl*(self: ptr ICLRRuntimeHost, pCLRControl: ptr ptr ICLRControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCLRControl(self, pCLRControl)
-proc UnloadAppDomain*(self: ptr ICLRRuntimeHost, dwAppDomainId: DWORD, fWaitUntilDone: BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnloadAppDomain(self, dwAppDomainId, fWaitUntilDone)
-proc ExecuteInAppDomain*(self: ptr ICLRRuntimeHost, dwAppDomainId: DWORD, pCallback: FExecuteInAppDomainCallback, cookie: pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExecuteInAppDomain(self, dwAppDomainId, pCallback, cookie)
-proc GetCurrentAppDomainId*(self: ptr ICLRRuntimeHost, pdwAppDomainId: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentAppDomainId(self, pdwAppDomainId)
-proc ExecuteApplication*(self: ptr ICLRRuntimeHost, pwzAppFullName: LPCWSTR, dwManifestPaths: DWORD, ppwzManifestPaths: ptr LPCWSTR, dwActivationData: DWORD, ppwzActivationData: ptr LPCWSTR, pReturnValue: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExecuteApplication(self, pwzAppFullName, dwManifestPaths, ppwzManifestPaths, dwActivationData, ppwzActivationData, pReturnValue)
-proc ExecuteInDefaultAppDomain*(self: ptr ICLRRuntimeHost, pwzAssemblyPath: LPCWSTR, pwzTypeName: LPCWSTR, pwzMethodName: LPCWSTR, pwzArgument: LPCWSTR, pReturnValue: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExecuteInDefaultAppDomain(self, pwzAssemblyPath, pwzTypeName, pwzMethodName, pwzArgument, pReturnValue)
-proc SetProtectedCategories*(self: ptr ICLRHostProtectionManager, categories: EApiCategories): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProtectedCategories(self, categories)
-proc SetEagerSerializeGrantSets*(self: ptr ICLRHostProtectionManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetEagerSerializeGrantSets(self)
-proc SetAppDomainManagerType*(self: ptr ICLRDomainManager, wszAppDomainManagerAssembly: LPCWSTR, wszAppDomainManagerType: LPCWSTR, dwInitializeDomainFlags: EInitializeNewDomainFlags): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAppDomainManagerType(self, wszAppDomainManagerAssembly, wszAppDomainManagerType, dwInitializeDomainFlags)
-proc SetPropertiesForDefaultAppDomain*(self: ptr ICLRDomainManager, nProperties: DWORD, pwszPropertyNames: ptr LPCWSTR, pwszPropertyValues: ptr LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPropertiesForDefaultAppDomain(self, nProperties, pwszPropertyNames, pwszPropertyValues)
-proc GetNameCount*(self: ptr ITypeName, pCount: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNameCount(self, pCount)
-proc GetNames*(self: ptr ITypeName, count: DWORD, rgbszNames: ptr BSTR, pCount: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNames(self, count, rgbszNames, pCount)
-proc GetTypeArgumentCount*(self: ptr ITypeName, pCount: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeArgumentCount(self, pCount)
-proc GetTypeArguments*(self: ptr ITypeName, count: DWORD, rgpArguments: ptr ptr ITypeName, pCount: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeArguments(self, count, rgpArguments, pCount)
-proc GetModifierLength*(self: ptr ITypeName, pCount: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetModifierLength(self, pCount)
-proc GetModifiers*(self: ptr ITypeName, count: DWORD, rgModifiers: ptr DWORD, pCount: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetModifiers(self, count, rgModifiers, pCount)
-proc GetAssemblyName*(self: ptr ITypeName, rgbszAssemblyNames: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAssemblyName(self, rgbszAssemblyNames)
-proc OpenGenericArguments*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OpenGenericArguments(self)
-proc CloseGenericArguments*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CloseGenericArguments(self)
-proc OpenGenericArgument*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OpenGenericArgument(self)
-proc CloseGenericArgument*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CloseGenericArgument(self)
-proc AddName*(self: ptr ITypeNameBuilder, szName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddName(self, szName)
-proc AddPointer*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddPointer(self)
-proc AddByRef*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddByRef(self)
-proc AddSzArray*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddSzArray(self)
-proc AddArray*(self: ptr ITypeNameBuilder, rank: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddArray(self, rank)
-proc AddAssemblySpec*(self: ptr ITypeNameBuilder, szAssemblySpec: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddAssemblySpec(self, szAssemblySpec)
-proc ToString*(self: ptr ITypeNameBuilder, pszStringRepresentation: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ToString(self, pszStringRepresentation)
-proc Clear*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clear(self)
-proc ParseTypeName*(self: ptr ITypeNameFactory, szName: LPCWSTR, pError: ptr DWORD, ppTypeName: ptr ptr ITypeName): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseTypeName(self, szName, pError, ppTypeName)
-proc GetTypeNameBuilder*(self: ptr ITypeNameFactory, ppTypeBuilder: ptr ptr ITypeNameBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeNameBuilder(self, ppTypeBuilder)
-proc DoCallback*(self: ptr IApartmentCallback, pFunc: SIZE_T, pData: SIZE_T): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoCallback(self, pFunc, pData)
-proc GetSerializedBuffer*(self: ptr IManagedObject, pBSTR: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSerializedBuffer(self, pBSTR)
-proc GetObjectIdentity*(self: ptr IManagedObject, pBSTRGUID: ptr BSTR, AppDomainID: ptr int32, pCCW: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObjectIdentity(self, pBSTRGUID, AppDomainID, pCCW)
-proc Autodone*(self: ptr ICatalogServices): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Autodone(self)
-proc NotAutodone*(self: ptr ICatalogServices): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NotAutodone(self)
-proc Capture*(self: ptr IHostSecurityContext, ppClonedContext: ptr ptr IHostSecurityContext): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Capture(self, ppClonedContext)
-proc ImpersonateLoggedOnUser*(self: ptr IHostSecurityManager, hToken: HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ImpersonateLoggedOnUser(self, hToken)
-proc RevertToSelf*(self: ptr IHostSecurityManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RevertToSelf(self)
-proc OpenThreadToken*(self: ptr IHostSecurityManager, dwDesiredAccess: DWORD, bOpenAsSelf: BOOL, phThreadToken: ptr HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OpenThreadToken(self, dwDesiredAccess, bOpenAsSelf, phThreadToken)
-proc SetThreadToken*(self: ptr IHostSecurityManager, hToken: HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetThreadToken(self, hToken)
-proc GetSecurityContext*(self: ptr IHostSecurityManager, eContextType: EContextType, ppSecurityContext: ptr ptr IHostSecurityContext): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSecurityContext(self, eContextType, ppSecurityContext)
-proc SetSecurityContext*(self: ptr IHostSecurityManager, eContextType: EContextType, pSecurityContext: ptr IHostSecurityContext): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSecurityContext(self, eContextType, pSecurityContext)
-proc GetCurrentAllocated*(self: ptr ICLRAppDomainResourceMonitor, dwAppDomainId: DWORD, pBytesAllocated: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentAllocated(self, dwAppDomainId, pBytesAllocated)
-proc GetCurrentSurvived*(self: ptr ICLRAppDomainResourceMonitor, dwAppDomainId: DWORD, pAppDomainBytesSurvived: ptr ULONGLONG, pTotalBytesSurvived: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentSurvived(self, dwAppDomainId, pAppDomainBytesSurvived, pTotalBytesSurvived)
-proc GetCurrentCpuTime*(self: ptr ICLRAppDomainResourceMonitor, dwAppDomainId: DWORD, pMilliseconds: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentCpuTime(self, dwAppDomainId, pMilliseconds)
-proc GetRuntime*(self: ptr ICLRMetaHost, pwzVersion: LPCWSTR, riid: REFIID, ppRuntime: ptr LPVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRuntime(self, pwzVersion, riid, ppRuntime)
-proc GetVersionFromFile*(self: ptr ICLRMetaHost, pwzFilePath: LPCWSTR, pwzBuffer: LPWSTR, pcchBuffer: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetVersionFromFile(self, pwzFilePath, pwzBuffer, pcchBuffer)
-proc EnumerateInstalledRuntimes*(self: ptr ICLRMetaHost, ppEnumerator: ptr ptr IEnumUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumerateInstalledRuntimes(self, ppEnumerator)
-proc EnumerateLoadedRuntimes*(self: ptr ICLRMetaHost, hndProcess: HANDLE, ppEnumerator: ptr ptr IEnumUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumerateLoadedRuntimes(self, hndProcess, ppEnumerator)
-proc RequestRuntimeLoadedNotification*(self: ptr ICLRMetaHost, pCallbackFunction: RuntimeLoadedCallbackFnPtr): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestRuntimeLoadedNotification(self, pCallbackFunction)
-proc QueryLegacyV2RuntimeBinding*(self: ptr ICLRMetaHost, riid: REFIID, ppUnk: ptr LPVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryLegacyV2RuntimeBinding(self, riid, ppUnk)
-proc ExitProcess*(self: ptr ICLRMetaHost, iExitCode: INT32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExitProcess(self, iExitCode)
-proc GetRequestedRuntime*(self: ptr ICLRMetaHostPolicy, dwPolicyFlags: METAHOST_POLICY_FLAGS, pwzBinary: LPCWSTR, pCfgStream: ptr IStream, pwzVersion: LPWSTR, pcchVersion: ptr DWORD, pwzImageVersion: LPWSTR, pcchImageVersion: ptr DWORD, pdwConfigFlags: ptr DWORD, riid: REFIID, ppRuntime: ptr LPVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRequestedRuntime(self, dwPolicyFlags, pwzBinary, pCfgStream, pwzVersion, pcchVersion, pwzImageVersion, pcchImageVersion, pdwConfigFlags, riid, ppRuntime)
-proc AttachProfiler*(self: ptr ICLRProfiling, dwProfileeProcessID: DWORD, dwMillisecondsMax: DWORD, pClsidProfiler: ptr CLSID, wszProfilerPath: LPCWSTR, pvClientData: pointer, cbClientData: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AttachProfiler(self, dwProfileeProcessID, dwMillisecondsMax, pClsidProfiler, wszProfilerPath, pvClientData, cbClientData)
-proc ProvideLibrary*(self: ptr ICLRDebuggingLibraryProvider, pwszFileName: ptr WCHAR, dwTimestamp: DWORD, dwSizeOfImage: DWORD, phModule: ptr HMODULE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ProvideLibrary(self, pwszFileName, dwTimestamp, dwSizeOfImage, phModule)
-proc OpenVirtualProcess*(self: ptr ICLRDebugging, moduleBaseAddress: ULONG64, pDataTarget: ptr IUnknown, pLibraryProvider: ptr ICLRDebuggingLibraryProvider, pMaxDebuggerSupportedVersion: ptr CLR_DEBUGGING_VERSION, riidProcess: REFIID, ppProcess: ptr ptr IUnknown, pVersion: ptr CLR_DEBUGGING_VERSION, pdwFlags: ptr CLR_DEBUGGING_PROCESS_FLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OpenVirtualProcess(self, moduleBaseAddress, pDataTarget, pLibraryProvider, pMaxDebuggerSupportedVersion, riidProcess, ppProcess, pVersion, pdwFlags)
-proc CanUnloadNow*(self: ptr ICLRDebugging, hModule: HMODULE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CanUnloadNow(self, hModule)
-proc GetVersionString*(self: ptr ICLRRuntimeInfo, pwzBuffer: LPWSTR, pcchBuffer: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetVersionString(self, pwzBuffer, pcchBuffer)
-proc GetRuntimeDirectory*(self: ptr ICLRRuntimeInfo, pwzBuffer: LPWSTR, pcchBuffer: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRuntimeDirectory(self, pwzBuffer, pcchBuffer)
-proc IsLoaded*(self: ptr ICLRRuntimeInfo, hndProcess: HANDLE, pbLoaded: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsLoaded(self, hndProcess, pbLoaded)
-proc LoadErrorString*(self: ptr ICLRRuntimeInfo, iResourceID: UINT, pwzBuffer: LPWSTR, pcchBuffer: ptr DWORD, iLocaleID: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LoadErrorString(self, iResourceID, pwzBuffer, pcchBuffer, iLocaleID)
-proc LoadLibrary*(self: ptr ICLRRuntimeInfo, pwzDllName: LPCWSTR, phndModule: ptr HMODULE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LoadLibrary(self, pwzDllName, phndModule)
-proc GetProcAddress*(self: ptr ICLRRuntimeInfo, pszProcName: LPCSTR, ppProc: ptr LPVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProcAddress(self, pszProcName, ppProc)
-proc GetInterface*(self: ptr ICLRRuntimeInfo, rclsid: REFCLSID, riid: REFIID, ppUnk: ptr LPVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInterface(self, rclsid, riid, ppUnk)
-proc IsLoadable*(self: ptr ICLRRuntimeInfo, pbLoadable: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsLoadable(self, pbLoadable)
-proc SetDefaultStartupFlags*(self: ptr ICLRRuntimeInfo, dwStartupFlags: DWORD, pwzHostConfigFile: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDefaultStartupFlags(self, dwStartupFlags, pwzHostConfigFile)
-proc GetDefaultStartupFlags*(self: ptr ICLRRuntimeInfo, pdwStartupFlags: ptr DWORD, pwzHostConfigFile: LPWSTR, pcchHostConfigFile: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultStartupFlags(self, pdwStartupFlags, pwzHostConfigFile, pcchHostConfigFile)
-proc BindAsLegacyV2Runtime*(self: ptr ICLRRuntimeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindAsLegacyV2Runtime(self)
-proc IsStarted*(self: ptr ICLRRuntimeInfo, pbStarted: ptr BOOL, pdwStartupFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsStarted(self, pbStarted, pdwStartupFlags)
-proc GetHashFromAssemblyFile*(self: ptr ICLRStrongName, pszFilePath: LPCSTR, piHashAlg: ptr int32, pbHash: ptr BYTE, cchHash: DWORD, pchHash: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHashFromAssemblyFile(self, pszFilePath, piHashAlg, pbHash, cchHash, pchHash)
-proc GetHashFromAssemblyFileW*(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, piHashAlg: ptr int32, pbHash: ptr BYTE, cchHash: DWORD, pchHash: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHashFromAssemblyFileW(self, pwzFilePath, piHashAlg, pbHash, cchHash, pchHash)
-proc GetHashFromBlob*(self: ptr ICLRStrongName, pbBlob: ptr BYTE, cchBlob: DWORD, piHashAlg: ptr int32, pbHash: ptr BYTE, cchHash: DWORD, pchHash: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHashFromBlob(self, pbBlob, cchBlob, piHashAlg, pbHash, cchHash, pchHash)
-proc GetHashFromFile*(self: ptr ICLRStrongName, pszFilePath: LPCSTR, piHashAlg: ptr int32, pbHash: ptr BYTE, cchHash: DWORD, pchHash: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHashFromFile(self, pszFilePath, piHashAlg, pbHash, cchHash, pchHash)
-proc GetHashFromFileW*(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, piHashAlg: ptr int32, pbHash: ptr BYTE, cchHash: DWORD, pchHash: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHashFromFileW(self, pwzFilePath, piHashAlg, pbHash, cchHash, pchHash)
-proc GetHashFromHandle*(self: ptr ICLRStrongName, hFile: HANDLE, piHashAlg: ptr int32, pbHash: ptr BYTE, cchHash: DWORD, pchHash: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHashFromHandle(self, hFile, piHashAlg, pbHash, cchHash, pchHash)
-proc StrongNameCompareAssemblies*(self: ptr ICLRStrongName, pwzAssembly1: LPCWSTR, pwzAssembly2: LPCWSTR, pdwResult: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameCompareAssemblies(self, pwzAssembly1, pwzAssembly2, pdwResult)
-proc StrongNameFreeBuffer*(self: ptr ICLRStrongName, pbMemory: ptr BYTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameFreeBuffer(self, pbMemory)
-proc StrongNameGetBlob*(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, pbBlob: ptr BYTE, pcbBlob: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameGetBlob(self, pwzFilePath, pbBlob, pcbBlob)
-proc StrongNameGetBlobFromImage*(self: ptr ICLRStrongName, pbBase: ptr BYTE, dwLength: DWORD, pbBlob: ptr BYTE, pcbBlob: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameGetBlobFromImage(self, pbBase, dwLength, pbBlob, pcbBlob)
-proc StrongNameGetPublicKey*(self: ptr ICLRStrongName, pwzKeyContainer: LPCWSTR, pbKeyBlob: ptr BYTE, cbKeyBlob: ULONG, ppbPublicKeyBlob: ptr ptr BYTE, pcbPublicKeyBlob: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameGetPublicKey(self, pwzKeyContainer, pbKeyBlob, cbKeyBlob, ppbPublicKeyBlob, pcbPublicKeyBlob)
-proc StrongNameHashSize*(self: ptr ICLRStrongName, ulHashAlg: ULONG, pcbSize: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameHashSize(self, ulHashAlg, pcbSize)
-proc StrongNameKeyDelete*(self: ptr ICLRStrongName, pwzKeyContainer: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameKeyDelete(self, pwzKeyContainer)
-proc StrongNameKeyGen*(self: ptr ICLRStrongName, pwzKeyContainer: LPCWSTR, dwFlags: DWORD, ppbKeyBlob: ptr ptr BYTE, pcbKeyBlob: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameKeyGen(self, pwzKeyContainer, dwFlags, ppbKeyBlob, pcbKeyBlob)
-proc StrongNameKeyGenEx*(self: ptr ICLRStrongName, pwzKeyContainer: LPCWSTR, dwFlags: DWORD, dwKeySize: DWORD, ppbKeyBlob: ptr ptr BYTE, pcbKeyBlob: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameKeyGenEx(self, pwzKeyContainer, dwFlags, dwKeySize, ppbKeyBlob, pcbKeyBlob)
-proc StrongNameKeyInstall*(self: ptr ICLRStrongName, pwzKeyContainer: LPCWSTR, pbKeyBlob: ptr BYTE, cbKeyBlob: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameKeyInstall(self, pwzKeyContainer, pbKeyBlob, cbKeyBlob)
-proc StrongNameSignatureGeneration*(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, pwzKeyContainer: LPCWSTR, pbKeyBlob: ptr BYTE, cbKeyBlob: ULONG, ppbSignatureBlob: ptr ptr BYTE, pcbSignatureBlob: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameSignatureGeneration(self, pwzFilePath, pwzKeyContainer, pbKeyBlob, cbKeyBlob, ppbSignatureBlob, pcbSignatureBlob)
-proc StrongNameSignatureGenerationEx*(self: ptr ICLRStrongName, wszFilePath: LPCWSTR, wszKeyContainer: LPCWSTR, pbKeyBlob: ptr BYTE, cbKeyBlob: ULONG, ppbSignatureBlob: ptr ptr BYTE, pcbSignatureBlob: ptr ULONG, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameSignatureGenerationEx(self, wszFilePath, wszKeyContainer, pbKeyBlob, cbKeyBlob, ppbSignatureBlob, pcbSignatureBlob, dwFlags)
-proc StrongNameSignatureSize*(self: ptr ICLRStrongName, pbPublicKeyBlob: ptr BYTE, cbPublicKeyBlob: ULONG, pcbSize: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameSignatureSize(self, pbPublicKeyBlob, cbPublicKeyBlob, pcbSize)
-proc StrongNameSignatureVerification*(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, dwInFlags: DWORD, pdwOutFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameSignatureVerification(self, pwzFilePath, dwInFlags, pdwOutFlags)
-proc StrongNameSignatureVerificationEx*(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, fForceVerification: BOOLEAN, pfWasVerified: ptr BOOLEAN): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameSignatureVerificationEx(self, pwzFilePath, fForceVerification, pfWasVerified)
-proc StrongNameSignatureVerificationFromImage*(self: ptr ICLRStrongName, pbBase: ptr BYTE, dwLength: DWORD, dwInFlags: DWORD, pdwOutFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameSignatureVerificationFromImage(self, pbBase, dwLength, dwInFlags, pdwOutFlags)
-proc StrongNameTokenFromAssembly*(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, ppbStrongNameToken: ptr ptr BYTE, pcbStrongNameToken: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameTokenFromAssembly(self, pwzFilePath, ppbStrongNameToken, pcbStrongNameToken)
-proc StrongNameTokenFromAssemblyEx*(self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, ppbStrongNameToken: ptr ptr BYTE, pcbStrongNameToken: ptr ULONG, ppbPublicKeyBlob: ptr ptr BYTE, pcbPublicKeyBlob: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameTokenFromAssemblyEx(self, pwzFilePath, ppbStrongNameToken, pcbStrongNameToken, ppbPublicKeyBlob, pcbPublicKeyBlob)
-proc StrongNameTokenFromPublicKey*(self: ptr ICLRStrongName, pbPublicKeyBlob: ptr BYTE, cbPublicKeyBlob: ULONG, ppbStrongNameToken: ptr ptr BYTE, pcbStrongNameToken: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameTokenFromPublicKey(self, pbPublicKeyBlob, cbPublicKeyBlob, ppbStrongNameToken, pcbStrongNameToken)
-proc StrongNameGetPublicKeyEx*(self: ptr ICLRStrongName2, pwzKeyContainer: LPCWSTR, pbKeyBlob: ptr BYTE, cbKeyBlob: ULONG, ppbPublicKeyBlob: ptr ptr BYTE, pcbPublicKeyBlob: ptr ULONG, uHashAlgId: ULONG, uReserved: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameGetPublicKeyEx(self, pwzKeyContainer, pbKeyBlob, cbKeyBlob, ppbPublicKeyBlob, pcbPublicKeyBlob, uHashAlgId, uReserved)
-proc StrongNameSignatureVerificationEx2*(self: ptr ICLRStrongName2, wszFilePath: LPCWSTR, fForceVerification: BOOLEAN, pbEcmaPublicKey: ptr BYTE, cbEcmaPublicKey: DWORD, pfWasVerified: ptr BOOLEAN): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameSignatureVerificationEx2(self, wszFilePath, fForceVerification, pbEcmaPublicKey, cbEcmaPublicKey, pfWasVerified)
-proc StrongNameDigestGenerate*(self: ptr ICLRStrongName3, wszFilePath: LPCWSTR, ppbDigestBlob: ptr ptr BYTE, pcbDigestBlob: ptr ULONG, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameDigestGenerate(self, wszFilePath, ppbDigestBlob, pcbDigestBlob, dwFlags)
-proc StrongNameDigestSign*(self: ptr ICLRStrongName3, wszKeyContainer: LPCWSTR, pbKeyBlob: ptr BYTE, cbKeyBlob: ULONG, pbDigestBlob: ptr BYTE, cbDigestBlob: ULONG, hashAlgId: DWORD, ppbSignatureBlob: ptr ptr BYTE, pcbSignatureBlob: ptr ULONG, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameDigestSign(self, wszKeyContainer, pbKeyBlob, cbKeyBlob, pbDigestBlob, cbDigestBlob, hashAlgId, ppbSignatureBlob, pcbSignatureBlob, dwFlags)
-proc StrongNameDigestEmbed*(self: ptr ICLRStrongName3, wszFilePath: LPCWSTR, pbSignatureBlob: ptr BYTE, cbSignatureBlob: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrongNameDigestEmbed(self, wszFilePath, pbSignatureBlob, cbSignatureBlob)
-proc get_ToString*(self: ptr IObject, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ToString(self, pRetVal)
-proc Equals*(self: ptr IObject, obj: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Equals(self, obj, pRetVal)
-proc GetHashCode*(self: ptr IObject, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHashCode(self, pRetVal)
-proc GetType*(self: ptr IObject, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetType(self, pRetVal)
-proc GetTypeInfoCount*(self: ptr IType, pcTInfo: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfoCount(self, pcTInfo)
-proc GetTypeInfo*(self: ptr IType, iTInfo: int32, lcid: int32, ppTInfo: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfo(self, iTInfo, lcid, ppTInfo)
-proc GetIDsOfNames*(self: ptr IType, riid: ptr GUID, rgszNames: int32, cNames: int32, lcid: int32, rgDispId: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIDsOfNames(self, riid, rgszNames, cNames, lcid, rgDispId)
-proc Invoke*(self: ptr IType, dispIdMember: int32, riid: ptr GUID, lcid: int32, wFlags: int16, pDispParams: int32, pVarResult: int32, pExcepInfo: int32, puArgErr: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invoke(self, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)
-proc get_ToString*(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ToString(self, pRetVal)
-proc Equals*(self: ptr IType, other: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Equals(self, other, pRetVal)
-proc GetHashCode*(self: ptr IType, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHashCode(self, pRetVal)
-proc GetType*(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetType(self, pRetVal)
-proc get_MemberType*(self: ptr IType, pRetVal: ptr MemberTypes): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_MemberType(self, pRetVal)
-proc get_name*(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, pRetVal)
-proc get_DeclaringType*(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DeclaringType(self, pRetVal)
-proc get_ReflectedType*(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ReflectedType(self, pRetVal)
-proc GetCustomAttributes*(self: ptr IType, attributeType: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCustomAttributes(self, attributeType, inherit, pRetVal)
-proc GetCustomAttributes_2*(self: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCustomAttributes_2(self, inherit, pRetVal)
-proc IsDefined*(self: ptr IType, attributeType: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDefined(self, attributeType, inherit, pRetVal)
-proc get_Guid*(self: ptr IType, pRetVal: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Guid(self, pRetVal)
-proc get_Module*(self: ptr IType, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Module(self, pRetVal)
-proc getIAssembly*(self: ptr IType, pRetVal: ptr ptr IAssembly): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getIAssembly(self, pRetVal)
-proc get_TypeHandle*(self: ptr IType, pRetVal: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TypeHandle(self, pRetVal)
-proc get_FullName*(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_FullName(self, pRetVal)
-proc get_Namespace*(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Namespace(self, pRetVal)
-proc get_AssemblyQualifiedName*(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_AssemblyQualifiedName(self, pRetVal)
-proc GetArrayRank*(self: ptr IType, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetArrayRank(self, pRetVal)
-proc get_BaseType*(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_BaseType(self, pRetVal)
-proc GetConstructors*(self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConstructors(self, bindingAttr, pRetVal)
-proc GetInterface*(self: ptr IType, name: BSTR, ignoreCase: VARIANT_BOOL, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInterface(self, name, ignoreCase, pRetVal)
-proc GetInterfaces*(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInterfaces(self, pRetVal)
-proc FindInterfaces*(self: ptr IType, filter: POBJECT, filterCriteria: VARIANT, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindInterfaces(self, filter, filterCriteria, pRetVal)
-proc GetEvent*(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEvent(self, name, bindingAttr, pRetVal)
-proc GetEvents*(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEvents(self, pRetVal)
-proc GetEvents_2*(self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEvents_2(self, bindingAttr, pRetVal)
-proc GetNestedTypes*(self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNestedTypes(self, bindingAttr, pRetVal)
-proc GetNestedType*(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNestedType(self, name, bindingAttr, pRetVal)
-proc GetMember*(self: ptr IType, name: BSTR, Type: MemberTypes, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMember(self, name, Type, bindingAttr, pRetVal)
-proc GetDefaultMembers*(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultMembers(self, pRetVal)
-proc FindMembers*(self: ptr IType, MemberType: MemberTypes, bindingAttr: BindingFlags, filter: POBJECT, filterCriteria: VARIANT, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindMembers(self, MemberType, bindingAttr, filter, filterCriteria, pRetVal)
-proc GetElementType*(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetElementType(self, pRetVal)
-proc IsSubclassOf*(self: ptr IType, c: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsSubclassOf(self, c, pRetVal)
-proc IsInstanceOfType*(self: ptr IType, o: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsInstanceOfType(self, o, pRetVal)
-proc IsAssignableFrom*(self: ptr IType, c: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsAssignableFrom(self, c, pRetVal)
-proc GetInterfaceMap*(self: ptr IType, interfaceType: ptr IType, pRetVal: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInterfaceMap(self, interfaceType, pRetVal)
-proc GetMethod*(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, Binder: POBJECT, types: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, pRetVal: ptr ptr IMethodInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMethod(self, name, bindingAttr, Binder, types, modifiers, pRetVal)
-proc GetMethod_2*(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr ptr IMethodInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMethod_2(self, name, bindingAttr, pRetVal)
-proc GetMethods*(self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMethods(self, bindingAttr, pRetVal)
-proc GetField*(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetField(self, name, bindingAttr, pRetVal)
-proc GetFields*(self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFields(self, bindingAttr, pRetVal)
-proc GetProperty*(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty(self, name, bindingAttr, pRetVal)
-proc GetProperty_2*(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, Binder: POBJECT, returnType: ptr IType, types: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty_2(self, name, bindingAttr, Binder, returnType, types, modifiers, pRetVal)
-proc GetProperties*(self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperties(self, bindingAttr, pRetVal)
-proc GetMember_2*(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMember_2(self, name, bindingAttr, pRetVal)
-proc GetMembers*(self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMembers(self, bindingAttr, pRetVal)
-proc InvokeMember*(self: ptr IType, name: BSTR, invokeAttr: BindingFlags, Binder: POBJECT, Target: VARIANT, args: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, culture: POBJECT, namedParameters: ptr SAFEARRAY, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvokeMember(self, name, invokeAttr, Binder, Target, args, modifiers, culture, namedParameters, pRetVal)
-proc get_UnderlyingSystemType*(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_UnderlyingSystemType(self, pRetVal)
-proc InvokeMember_2*(self: ptr IType, name: BSTR, invokeAttr: BindingFlags, Binder: POBJECT, Target: VARIANT, args: ptr SAFEARRAY, culture: POBJECT, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvokeMember_2(self, name, invokeAttr, Binder, Target, args, culture, pRetVal)
-proc InvokeMember_3*(self: ptr IType, name: BSTR, invokeAttr: BindingFlags, Binder: POBJECT, Target: VARIANT, args: ptr SAFEARRAY, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvokeMember_3(self, name, invokeAttr, Binder, Target, args, pRetVal)
-proc GetConstructor*(self: ptr IType, bindingAttr: BindingFlags, Binder: POBJECT, callConvention: CallingConventions, types: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConstructor(self, bindingAttr, Binder, callConvention, types, modifiers, pRetVal)
-proc GetConstructor_2*(self: ptr IType, bindingAttr: BindingFlags, Binder: POBJECT, types: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConstructor_2(self, bindingAttr, Binder, types, modifiers, pRetVal)
-proc GetConstructor_3*(self: ptr IType, types: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConstructor_3(self, types, pRetVal)
-proc GetConstructors_2*(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConstructors_2(self, pRetVal)
-proc get_TypeInitializer*(self: ptr IType, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TypeInitializer(self, pRetVal)
-proc GetMethod_3*(self: ptr IType, name: BSTR, bindingAttr: BindingFlags, Binder: POBJECT, callConvention: CallingConventions, types: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, pRetVal: ptr ptr IMethodInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMethod_3(self, name, bindingAttr, Binder, callConvention, types, modifiers, pRetVal)
-proc GetMethod_4*(self: ptr IType, name: BSTR, types: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, pRetVal: ptr ptr IMethodInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMethod_4(self, name, types, modifiers, pRetVal)
-proc GetMethod_5*(self: ptr IType, name: BSTR, types: ptr SAFEARRAY, pRetVal: ptr ptr IMethodInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMethod_5(self, name, types, pRetVal)
-proc GetMethod_6*(self: ptr IType, name: BSTR, pRetVal: ptr ptr IMethodInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMethod_6(self, name, pRetVal)
-proc GetMethods_2*(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMethods_2(self, pRetVal)
-proc GetField_2*(self: ptr IType, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetField_2(self, name, pRetVal)
-proc GetFields_2*(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFields_2(self, pRetVal)
-proc GetInterface_2*(self: ptr IType, name: BSTR, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInterface_2(self, name, pRetVal)
-proc GetEvent_2*(self: ptr IType, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEvent_2(self, name, pRetVal)
-proc GetProperty_3*(self: ptr IType, name: BSTR, returnType: ptr IType, types: ptr SAFEARRAY, modifiers: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty_3(self, name, returnType, types, modifiers, pRetVal)
-proc GetProperty_4*(self: ptr IType, name: BSTR, returnType: ptr IType, types: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty_4(self, name, returnType, types, pRetVal)
-proc GetProperty_5*(self: ptr IType, name: BSTR, types: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty_5(self, name, types, pRetVal)
-proc GetProperty_6*(self: ptr IType, name: BSTR, returnType: ptr IType, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty_6(self, name, returnType, pRetVal)
-proc GetProperty_7*(self: ptr IType, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty_7(self, name, pRetVal)
-proc GetProperties_2*(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperties_2(self, pRetVal)
-proc GetNestedTypes_2*(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNestedTypes_2(self, pRetVal)
-proc GetNestedType_2*(self: ptr IType, name: BSTR, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNestedType_2(self, name, pRetVal)
-proc GetMember_3*(self: ptr IType, name: BSTR, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMember_3(self, name, pRetVal)
-proc GetMembers_2*(self: ptr IType, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMembers_2(self, pRetVal)
-proc get_Attributes*(self: ptr IType, pRetVal: ptr TypeAttributes): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Attributes(self, pRetVal)
-proc get_IsNotPublic*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsNotPublic(self, pRetVal)
-proc get_IsPublic*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsPublic(self, pRetVal)
-proc get_IsNestedPublic*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsNestedPublic(self, pRetVal)
-proc get_IsNestedPrivate*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsNestedPrivate(self, pRetVal)
-proc get_IsNestedFamily*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsNestedFamily(self, pRetVal)
-proc get_IsNestedAssembly*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsNestedAssembly(self, pRetVal)
-proc get_IsNestedFamANDAssem*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsNestedFamANDAssem(self, pRetVal)
-proc get_IsNestedFamORAssem*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsNestedFamORAssem(self, pRetVal)
-proc get_IsAutoLayout*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsAutoLayout(self, pRetVal)
-proc get_IsLayoutSequential*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsLayoutSequential(self, pRetVal)
-proc get_IsExplicitLayout*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsExplicitLayout(self, pRetVal)
-proc get_IsClass*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsClass(self, pRetVal)
-proc get_IsInterface*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsInterface(self, pRetVal)
-proc get_IsValueType*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsValueType(self, pRetVal)
-proc get_IsAbstract*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsAbstract(self, pRetVal)
-proc get_IsSealed*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsSealed(self, pRetVal)
-proc get_IsEnum*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsEnum(self, pRetVal)
-proc get_IsSpecialName*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsSpecialName(self, pRetVal)
-proc get_IsImport*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsImport(self, pRetVal)
-proc get_IsSerializable*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsSerializable(self, pRetVal)
-proc get_IsAnsiClass*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsAnsiClass(self, pRetVal)
-proc get_IsUnicodeClass*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsUnicodeClass(self, pRetVal)
-proc get_IsAutoClass*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsAutoClass(self, pRetVal)
-proc get_IsArray*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsArray(self, pRetVal)
-proc get_IsByRef*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsByRef(self, pRetVal)
-proc get_IsPointer*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsPointer(self, pRetVal)
-proc get_IsPrimitive*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsPrimitive(self, pRetVal)
-proc get_IsCOMObject*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsCOMObject(self, pRetVal)
-proc get_HasElementType*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HasElementType(self, pRetVal)
-proc get_IsContextful*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsContextful(self, pRetVal)
-proc get_IsMarshalByRef*(self: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsMarshalByRef(self, pRetVal)
-proc Equals_2*(self: ptr IType, o: ptr IType, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Equals_2(self, o, pRetVal)
-proc get_ApplicationBase*(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ApplicationBase(self, pRetVal)
-proc put_ApplicationBase*(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ApplicationBase(self, pRetVal)
-proc get_ApplicationName*(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ApplicationName(self, pRetVal)
-proc put_ApplicationName*(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ApplicationName(self, pRetVal)
-proc get_CachePath*(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachePath(self, pRetVal)
-proc put_CachePath*(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_CachePath(self, pRetVal)
-proc get_ConfigurationFile*(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ConfigurationFile(self, pRetVal)
-proc put_ConfigurationFile*(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ConfigurationFile(self, pRetVal)
-proc get_DynamicBase*(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DynamicBase(self, pRetVal)
-proc put_DynamicBase*(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_DynamicBase(self, pRetVal)
-proc get_LicenseFile*(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_LicenseFile(self, pRetVal)
-proc put_LicenseFile*(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_LicenseFile(self, pRetVal)
-proc get_PrivateBinPath*(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_PrivateBinPath(self, pRetVal)
-proc put_PrivateBinPath*(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_PrivateBinPath(self, pRetVal)
-proc get_PrivateBinPathProbe*(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_PrivateBinPathProbe(self, pRetVal)
-proc put_PrivateBinPathProbe*(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_PrivateBinPathProbe(self, pRetVal)
-proc get_ShadowCopyDirectories*(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ShadowCopyDirectories(self, pRetVal)
-proc put_ShadowCopyDirectories*(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ShadowCopyDirectories(self, pRetVal)
-proc get_ShadowCopyFiles*(self: ptr IAppDomainSetup, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ShadowCopyFiles(self, pRetVal)
-proc put_ShadowCopyFiles*(self: ptr IAppDomainSetup, pRetVal: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ShadowCopyFiles(self, pRetVal)
-proc get_ToString*(self: ptr ObjectHandle, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ToString(self, pRetVal)
-proc Equals*(self: ptr ObjectHandle, obj: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Equals(self, obj, pRetVal)
-proc GetHashCode*(self: ptr ObjectHandle, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHashCode(self, pRetVal)
-proc GetType*(self: ptr ObjectHandle, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetType(self, pRetVal)
-proc GetLifetimeService*(self: ptr ObjectHandle, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLifetimeService(self, pRetVal)
-proc InitializeLifetimeService*(self: ptr ObjectHandle, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeLifetimeService(self, pRetVal)
-proc CreateObjRef*(self: ptr ObjectHandle, requestedType: ptr IType, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateObjRef(self, requestedType, pRetVal)
-proc Unwrap*(self: ptr ObjectHandle, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unwrap(self, pRetVal)
-proc get_ToString*(self: ptr AppDomain, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ToString(self, pRetVal)
-proc Equals*(self: ptr AppDomain, other: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Equals(self, other, pRetVal)
-proc GetHashCode*(self: ptr AppDomain, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHashCode(self, pRetVal)
-proc GetType*(self: ptr AppDomain, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetType(self, pRetVal)
-proc InitializeLifetimeService*(self: ptr AppDomain, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeLifetimeService(self, pRetVal)
-proc GetLifetimeService*(self: ptr AppDomain, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLifetimeService(self, pRetVal)
-proc get_Evidence*(self: ptr AppDomain, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Evidence(self, pRetVal)
-proc add_DomainUnload*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.add_DomainUnload(self, value)
-proc remove_DomainUnload*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.remove_DomainUnload(self, value)
-proc add_AssemblyLoad*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.add_AssemblyLoad(self, value)
-proc remove_AssemblyLoad*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.remove_AssemblyLoad(self, value)
-proc add_ProcessExit*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.add_ProcessExit(self, value)
-proc remove_ProcessExit*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.remove_ProcessExit(self, value)
-proc add_TypeResolve*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.add_TypeResolve(self, value)
-proc remove_TypeResolve*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.remove_TypeResolve(self, value)
-proc add_ResourceResolve*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.add_ResourceResolve(self, value)
-proc remove_ResourceResolve*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.remove_ResourceResolve(self, value)
-proc add_AssemblyResolve*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.add_AssemblyResolve(self, value)
-proc remove_AssemblyResolve*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.remove_AssemblyResolve(self, value)
-proc add_UnhandledException*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.add_UnhandledException(self, value)
-proc remove_UnhandledException*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.remove_UnhandledException(self, value)
-proc DefineDynamicAssembly*(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DefineDynamicAssembly(self, name, access, pRetVal)
-proc DefineDynamicAssembly_2*(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, dir: BSTR, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DefineDynamicAssembly_2(self, name, access, dir, pRetVal)
-proc DefineDynamicAssembly_3*(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, Evidence: POBJECT, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DefineDynamicAssembly_3(self, name, access, Evidence, pRetVal)
-proc DefineDynamicAssembly_4*(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, requiredPermissions: POBJECT, optionalPermissions: POBJECT, refusedPermissions: POBJECT, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DefineDynamicAssembly_4(self, name, access, requiredPermissions, optionalPermissions, refusedPermissions, pRetVal)
-proc DefineDynamicAssembly_5*(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, dir: BSTR, Evidence: POBJECT, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DefineDynamicAssembly_5(self, name, access, dir, Evidence, pRetVal)
-proc DefineDynamicAssembly_6*(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, dir: BSTR, requiredPermissions: POBJECT, optionalPermissions: POBJECT, refusedPermissions: POBJECT, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DefineDynamicAssembly_6(self, name, access, dir, requiredPermissions, optionalPermissions, refusedPermissions, pRetVal)
-proc DefineDynamicAssembly_7*(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, Evidence: POBJECT, requiredPermissions: POBJECT, optionalPermissions: POBJECT, refusedPermissions: POBJECT, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DefineDynamicAssembly_7(self, name, access, Evidence, requiredPermissions, optionalPermissions, refusedPermissions, pRetVal)
-proc DefineDynamicAssembly_8*(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, dir: BSTR, Evidence: POBJECT, requiredPermissions: POBJECT, optionalPermissions: POBJECT, refusedPermissions: POBJECT, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DefineDynamicAssembly_8(self, name, access, dir, Evidence, requiredPermissions, optionalPermissions, refusedPermissions, pRetVal)
-proc DefineDynamicAssembly_9*(self: ptr AppDomain, name: POBJECT, access: AssemblyBuilderAccess, dir: BSTR, Evidence: POBJECT, requiredPermissions: POBJECT, optionalPermissions: POBJECT, refusedPermissions: POBJECT, IsSynchronized: VARIANT_BOOL, pRetVal: ptr ptr AssemblyBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DefineDynamicAssembly_9(self, name, access, dir, Evidence, requiredPermissions, optionalPermissions, refusedPermissions, IsSynchronized, pRetVal)
-proc CreateInstance*(self: ptr AppDomain, AssemblyName: BSTR, typeName: BSTR, pRetVal: ptr ptr ObjectHandle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstance(self, AssemblyName, typeName, pRetVal)
-proc CreateInstanceFrom*(self: ptr AppDomain, assemblyFile: BSTR, typeName: BSTR, pRetVal: ptr ptr ObjectHandle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstanceFrom(self, assemblyFile, typeName, pRetVal)
-proc CreateInstance_2*(self: ptr AppDomain, AssemblyName: BSTR, typeName: BSTR, activationAttributes: ptr SAFEARRAY, pRetVal: ptr ptr ObjectHandle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstance_2(self, AssemblyName, typeName, activationAttributes, pRetVal)
-proc CreateInstanceFrom_2*(self: ptr AppDomain, assemblyFile: BSTR, typeName: BSTR, activationAttributes: ptr SAFEARRAY, pRetVal: ptr ptr ObjectHandle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstanceFrom_2(self, assemblyFile, typeName, activationAttributes, pRetVal)
-proc CreateInstance_3*(self: ptr AppDomain, AssemblyName: BSTR, typeName: BSTR, ignoreCase: VARIANT_BOOL, bindingAttr: BindingFlags, Binder: POBJECT, args: ptr SAFEARRAY, culture: POBJECT, activationAttributes: ptr SAFEARRAY, securityAttributes: POBJECT, pRetVal: ptr ptr ObjectHandle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstance_3(self, AssemblyName, typeName, ignoreCase, bindingAttr, Binder, args, culture, activationAttributes, securityAttributes, pRetVal)
-proc CreateInstanceFrom_3*(self: ptr AppDomain, assemblyFile: BSTR, typeName: BSTR, ignoreCase: VARIANT_BOOL, bindingAttr: BindingFlags, Binder: POBJECT, args: ptr SAFEARRAY, culture: POBJECT, activationAttributes: ptr SAFEARRAY, securityAttributes: POBJECT, pRetVal: ptr ptr ObjectHandle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstanceFrom_3(self, assemblyFile, typeName, ignoreCase, bindingAttr, Binder, args, culture, activationAttributes, securityAttributes, pRetVal)
-proc Load*(self: ptr AppDomain, assemblyRef: POBJECT, pRetVal: ptr ptr IAssembly): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load(self, assemblyRef, pRetVal)
-proc Load_2*(self: ptr AppDomain, assemblyString: BSTR, pRetVal: ptr ptr IAssembly): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load_2(self, assemblyString, pRetVal)
-proc Load_3*(self: ptr AppDomain, rawAssembly: ptr SAFEARRAY, pRetVal: ptr ptr IAssembly): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load_3(self, rawAssembly, pRetVal)
-proc Load_4*(self: ptr AppDomain, rawAssembly: ptr SAFEARRAY, rawSymbolStore: ptr SAFEARRAY, pRetVal: ptr ptr IAssembly): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load_4(self, rawAssembly, rawSymbolStore, pRetVal)
-proc Load_5*(self: ptr AppDomain, rawAssembly: ptr SAFEARRAY, rawSymbolStore: ptr SAFEARRAY, securityEvidence: POBJECT, pRetVal: ptr ptr IAssembly): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load_5(self, rawAssembly, rawSymbolStore, securityEvidence, pRetVal)
-proc Load_6*(self: ptr AppDomain, assemblyRef: POBJECT, assemblySecurity: POBJECT, pRetVal: ptr ptr IAssembly): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load_6(self, assemblyRef, assemblySecurity, pRetVal)
-proc Load_7*(self: ptr AppDomain, assemblyString: BSTR, assemblySecurity: POBJECT, pRetVal: ptr ptr IAssembly): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load_7(self, assemblyString, assemblySecurity, pRetVal)
-proc ExecuteAssembly*(self: ptr AppDomain, assemblyFile: BSTR, assemblySecurity: POBJECT, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExecuteAssembly(self, assemblyFile, assemblySecurity, pRetVal)
-proc ExecuteAssembly_2*(self: ptr AppDomain, assemblyFile: BSTR, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExecuteAssembly_2(self, assemblyFile, pRetVal)
-proc ExecuteAssembly_3*(self: ptr AppDomain, assemblyFile: BSTR, assemblySecurity: POBJECT, args: ptr SAFEARRAY, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExecuteAssembly_3(self, assemblyFile, assemblySecurity, args, pRetVal)
-proc get_FriendlyName*(self: ptr AppDomain, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_FriendlyName(self, pRetVal)
-proc get_BaseDirectory*(self: ptr AppDomain, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_BaseDirectory(self, pRetVal)
-proc get_RelativeSearchPath*(self: ptr AppDomain, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_RelativeSearchPath(self, pRetVal)
-proc get_ShadowCopyFiles*(self: ptr AppDomain, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ShadowCopyFiles(self, pRetVal)
-proc GetAssemblies*(self: ptr AppDomain, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAssemblies(self, pRetVal)
-proc AppendPrivatePath*(self: ptr AppDomain, Path: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AppendPrivatePath(self, Path)
-proc ClearPrivatePath*(self: ptr AppDomain): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClearPrivatePath(self)
-proc SetShadowCopyPath*(self: ptr AppDomain, s: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetShadowCopyPath(self, s)
-proc ClearShadowCopyPath*(self: ptr AppDomain): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClearShadowCopyPath(self)
-proc SetCachePath*(self: ptr AppDomain, s: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCachePath(self, s)
-proc SetData*(self: ptr AppDomain, name: BSTR, data: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetData(self, name, data)
-proc GetData*(self: ptr AppDomain, name: BSTR, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetData(self, name, pRetVal)
-proc SetAppDomainPolicy*(self: ptr AppDomain, domainPolicy: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAppDomainPolicy(self, domainPolicy)
-proc SetThreadPrincipal*(self: ptr AppDomain, principal: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetThreadPrincipal(self, principal)
-proc SetPrincipalPolicy*(self: ptr AppDomain, policy: PrincipalPolicy): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPrincipalPolicy(self, policy)
-proc DoCallBack*(self: ptr AppDomain, theDelegate: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoCallBack(self, theDelegate)
-proc get_DynamicDirectory*(self: ptr AppDomain, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DynamicDirectory(self, pRetVal)
-proc get_ToString*(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ToString(self, pRetVal)
-proc Equals*(self: ptr IAssembly, other: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Equals(self, other, pRetVal)
-proc GetHashCode*(self: ptr IAssembly, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHashCode(self, pRetVal)
-proc GetType*(self: ptr IAssembly, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetType(self, pRetVal)
-proc get_CodeBase*(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CodeBase(self, pRetVal)
-proc get_EscapedCodeBase*(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_EscapedCodeBase(self, pRetVal)
-proc GetName*(self: ptr IAssembly, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetName(self, pRetVal)
-proc GetName_2*(self: ptr IAssembly, copiedName: VARIANT_BOOL, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetName_2(self, copiedName, pRetVal)
-proc get_FullName*(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_FullName(self, pRetVal)
-proc get_EntryPoint*(self: ptr IAssembly, pRetVal: ptr ptr IMethodInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_EntryPoint(self, pRetVal)
-proc GetType_2*(self: ptr IAssembly, name: BSTR, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetType_2(self, name, pRetVal)
-proc GetType_3*(self: ptr IAssembly, name: BSTR, throwOnError: VARIANT_BOOL, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetType_3(self, name, throwOnError, pRetVal)
-proc GetExportedTypes*(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetExportedTypes(self, pRetVal)
-proc GetTypes*(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypes(self, pRetVal)
-proc GetManifestResourceStream*(self: ptr IAssembly, Type: ptr IType, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetManifestResourceStream(self, Type, name, pRetVal)
-proc GetManifestResourceStream_2*(self: ptr IAssembly, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetManifestResourceStream_2(self, name, pRetVal)
-proc GetFile*(self: ptr IAssembly, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFile(self, name, pRetVal)
-proc GetFiles*(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFiles(self, pRetVal)
-proc GetFiles_2*(self: ptr IAssembly, getResourceModules: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFiles_2(self, getResourceModules, pRetVal)
-proc GetManifestResourceNames*(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetManifestResourceNames(self, pRetVal)
-proc GetManifestResourceInfo*(self: ptr IAssembly, resourceName: BSTR, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetManifestResourceInfo(self, resourceName, pRetVal)
-proc get_Location*(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Location(self, pRetVal)
-proc get_Evidence*(self: ptr IAssembly, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Evidence(self, pRetVal)
-proc GetCustomAttributes*(self: ptr IAssembly, attributeType: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCustomAttributes(self, attributeType, inherit, pRetVal)
-proc GetCustomAttributes_2*(self: ptr IAssembly, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCustomAttributes_2(self, inherit, pRetVal)
-proc IsDefined*(self: ptr IAssembly, attributeType: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDefined(self, attributeType, inherit, pRetVal)
-proc GetObjectData*(self: ptr IAssembly, info: POBJECT, Context: StreamingContext): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObjectData(self, info, Context)
-proc add_ModuleResolve*(self: ptr IAssembly, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.add_ModuleResolve(self, value)
-proc remove_ModuleResolve*(self: ptr IAssembly, value: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.remove_ModuleResolve(self, value)
-proc GetType_4*(self: ptr IAssembly, name: BSTR, throwOnError: VARIANT_BOOL, ignoreCase: VARIANT_BOOL, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetType_4(self, name, throwOnError, ignoreCase, pRetVal)
-proc GetSatelliteAssembly*(self: ptr IAssembly, culture: POBJECT, pRetVal: ptr ptr IAssembly): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSatelliteAssembly(self, culture, pRetVal)
-proc GetSatelliteAssembly_2*(self: ptr IAssembly, culture: POBJECT, Version: POBJECT, pRetVal: ptr ptr IAssembly): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSatelliteAssembly_2(self, culture, Version, pRetVal)
-proc LoadModule*(self: ptr IAssembly, moduleName: BSTR, rawModule: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LoadModule(self, moduleName, rawModule, pRetVal)
-proc LoadModule_2*(self: ptr IAssembly, moduleName: BSTR, rawModule: ptr SAFEARRAY, rawSymbolStore: ptr SAFEARRAY, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LoadModule_2(self, moduleName, rawModule, rawSymbolStore, pRetVal)
-proc CreateInstance*(self: ptr IAssembly, typeName: BSTR, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstance(self, typeName, pRetVal)
-proc CreateInstance_2*(self: ptr IAssembly, typeName: BSTR, ignoreCase: VARIANT_BOOL, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstance_2(self, typeName, ignoreCase, pRetVal)
-proc CreateInstance_3*(self: ptr IAssembly, typeName: BSTR, ignoreCase: VARIANT_BOOL, bindingAttr: BindingFlags, Binder: POBJECT, args: ptr SAFEARRAY, culture: POBJECT, activationAttributes: ptr SAFEARRAY, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstance_3(self, typeName, ignoreCase, bindingAttr, Binder, args, culture, activationAttributes, pRetVal)
-proc GetLoadedModules*(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLoadedModules(self, pRetVal)
-proc GetLoadedModules_2*(self: ptr IAssembly, getResourceModules: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLoadedModules_2(self, getResourceModules, pRetVal)
-proc GetModules*(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetModules(self, pRetVal)
-proc GetModules_2*(self: ptr IAssembly, getResourceModules: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetModules_2(self, getResourceModules, pRetVal)
-proc GetModule*(self: ptr IAssembly, name: BSTR, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetModule(self, name, pRetVal)
-proc GetReferencedAssemblies*(self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetReferencedAssemblies(self, pRetVal)
-proc get_GlobalAssemblyCache*(self: ptr IAssembly, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_GlobalAssemblyCache(self, pRetVal)
-proc GetTypeInfoCount*(self: ptr IMethodInfo, pcTInfo: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfoCount(self, pcTInfo)
-proc GetTypeInfo*(self: ptr IMethodInfo, iTInfo: int32, lcid: int32, ppTInfo: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfo(self, iTInfo, lcid, ppTInfo)
-proc GetIDsOfNames*(self: ptr IMethodInfo, riid: ptr GUID, rgszNames: int32, cNames: int32, lcid: int32, rgDispId: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIDsOfNames(self, riid, rgszNames, cNames, lcid, rgDispId)
-proc Invoke*(self: ptr IMethodInfo, dispIdMember: int32, riid: ptr GUID, lcid: int32, wFlags: int16, pDispParams: int32, pVarResult: int32, pExcepInfo: int32, puArgErr: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invoke(self, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)
-proc get_ToString*(self: ptr IMethodInfo, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ToString(self, pRetVal)
-proc Equals*(self: ptr IMethodInfo, other: VARIANT, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Equals(self, other, pRetVal)
-proc GetHashCode*(self: ptr IMethodInfo, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHashCode(self, pRetVal)
-proc GetType*(self: ptr IMethodInfo, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetType(self, pRetVal)
-proc get_MemberType*(self: ptr IMethodInfo, pRetVal: ptr MemberTypes): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_MemberType(self, pRetVal)
-proc get_name*(self: ptr IMethodInfo, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, pRetVal)
-proc get_DeclaringType*(self: ptr IMethodInfo, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DeclaringType(self, pRetVal)
-proc get_ReflectedType*(self: ptr IMethodInfo, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ReflectedType(self, pRetVal)
-proc GetCustomAttributes*(self: ptr IMethodInfo, attributeType: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCustomAttributes(self, attributeType, inherit, pRetVal)
-proc GetCustomAttributes_2*(self: ptr IMethodInfo, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCustomAttributes_2(self, inherit, pRetVal)
-proc IsDefined*(self: ptr IMethodInfo, attributeType: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDefined(self, attributeType, inherit, pRetVal)
-proc GetParameters*(self: ptr IMethodInfo, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetParameters(self, pRetVal)
-proc GetMethodImplementationFlags*(self: ptr IMethodInfo, pRetVal: ptr MethodImplAttributes): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMethodImplementationFlags(self, pRetVal)
-proc get_MethodHandle*(self: ptr IMethodInfo, pRetVal: POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_MethodHandle(self, pRetVal)
-proc get_Attributes*(self: ptr IMethodInfo, pRetVal: ptr MethodAttributes): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Attributes(self, pRetVal)
-proc get_CallingConvention*(self: ptr IMethodInfo, pRetVal: ptr CallingConventions): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CallingConvention(self, pRetVal)
-proc Invoke_2*(self: ptr IMethodInfo, obj: VARIANT, invokeAttr: BindingFlags, Binder: POBJECT, parameters: ptr SAFEARRAY, culture: POBJECT, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invoke_2(self, obj, invokeAttr, Binder, parameters, culture, pRetVal)
-proc get_IsPublic*(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsPublic(self, pRetVal)
-proc get_IsPrivate*(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsPrivate(self, pRetVal)
-proc get_IsFamily*(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsFamily(self, pRetVal)
-proc get_IsAssembly*(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsAssembly(self, pRetVal)
-proc get_IsFamilyAndAssembly*(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsFamilyAndAssembly(self, pRetVal)
-proc get_IsFamilyOrAssembly*(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsFamilyOrAssembly(self, pRetVal)
-proc get_IsStatic*(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsStatic(self, pRetVal)
-proc get_IsFinal*(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsFinal(self, pRetVal)
-proc get_IsVirtual*(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsVirtual(self, pRetVal)
-proc get_IsHideBySig*(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsHideBySig(self, pRetVal)
-proc get_IsAbstract*(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsAbstract(self, pRetVal)
-proc get_IsSpecialName*(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsSpecialName(self, pRetVal)
-proc get_IsConstructor*(self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsConstructor(self, pRetVal)
-proc Invoke_3*(self: ptr IMethodInfo, obj: VARIANT, parameters: ptr SAFEARRAY, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invoke_3(self, obj, parameters, pRetVal)
-proc get_returnType*(self: ptr IMethodInfo, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_returnType(self, pRetVal)
-proc get_ReturnTypeCustomAttributes*(self: ptr IMethodInfo, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ReturnTypeCustomAttributes(self, pRetVal)
-proc GetBaseDefinition*(self: ptr IMethodInfo, pRetVal: ptr ptr IMethodInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBaseDefinition(self, pRetVal)
-converter winimConverterIGCHostToIUnknown*(x: ptr IGCHost): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIGCHost2ToIGCHost*(x: ptr IGCHost2): ptr IGCHost = cast[ptr IGCHost](x)
-converter winimConverterIGCHost2ToIUnknown*(x: ptr IGCHost2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIVEHandlerToIUnknown*(x: ptr IVEHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIValidatorToIUnknown*(x: ptr IValidator): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRValidatorToIUnknown*(x: ptr ICLRValidator): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectHandleToIUnknown*(x: ptr IObjectHandle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAppDomainBindingToIUnknown*(x: ptr IAppDomainBinding): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIGCThreadControlToIUnknown*(x: ptr IGCThreadControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIGCHostControlToIUnknown*(x: ptr IGCHostControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICorThreadpoolToIUnknown*(x: ptr ICorThreadpool): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDebuggerThreadControlToIUnknown*(x: ptr IDebuggerThreadControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDebuggerInfoToIUnknown*(x: ptr IDebuggerInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICorConfigurationToIUnknown*(x: ptr ICorConfiguration): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICorRuntimeHostToIUnknown*(x: ptr ICorRuntimeHost): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRMemoryNotificationCallbackToIUnknown*(x: ptr ICLRMemoryNotificationCallback): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostMallocToIUnknown*(x: ptr IHostMalloc): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostMemoryManagerToIUnknown*(x: ptr IHostMemoryManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRTaskToIUnknown*(x: ptr ICLRTask): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRTask2ToICLRTask*(x: ptr ICLRTask2): ptr ICLRTask = cast[ptr ICLRTask](x)
-converter winimConverterICLRTask2ToIUnknown*(x: ptr ICLRTask2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostTaskToIUnknown*(x: ptr IHostTask): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRTaskManagerToIUnknown*(x: ptr ICLRTaskManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostTaskManagerToIUnknown*(x: ptr IHostTaskManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostThreadpoolManagerToIUnknown*(x: ptr IHostThreadpoolManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRIoCompletionManagerToIUnknown*(x: ptr ICLRIoCompletionManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostIoCompletionManagerToIUnknown*(x: ptr IHostIoCompletionManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRDebugManagerToIUnknown*(x: ptr ICLRDebugManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRErrorReportingManagerToIUnknown*(x: ptr ICLRErrorReportingManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostCrstToIUnknown*(x: ptr IHostCrst): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostAutoEventToIUnknown*(x: ptr IHostAutoEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostManualEventToIUnknown*(x: ptr IHostManualEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostSemaphoreToIUnknown*(x: ptr IHostSemaphore): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRSyncManagerToIUnknown*(x: ptr ICLRSyncManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostSyncManagerToIUnknown*(x: ptr IHostSyncManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRPolicyManagerToIUnknown*(x: ptr ICLRPolicyManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostPolicyManagerToIUnknown*(x: ptr IHostPolicyManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActionOnCLREventToIUnknown*(x: ptr IActionOnCLREvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLROnEventManagerToIUnknown*(x: ptr ICLROnEventManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostGCManagerToIUnknown*(x: ptr IHostGCManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRAssemblyReferenceListToIUnknown*(x: ptr ICLRAssemblyReferenceList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRReferenceAssemblyEnumToIUnknown*(x: ptr ICLRReferenceAssemblyEnum): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRProbingAssemblyEnumToIUnknown*(x: ptr ICLRProbingAssemblyEnum): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRAssemblyIdentityManagerToIUnknown*(x: ptr ICLRAssemblyIdentityManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRHostBindingPolicyManagerToIUnknown*(x: ptr ICLRHostBindingPolicyManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRGCManagerToIUnknown*(x: ptr ICLRGCManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRGCManager2ToICLRGCManager*(x: ptr ICLRGCManager2): ptr ICLRGCManager = cast[ptr ICLRGCManager](x)
-converter winimConverterICLRGCManager2ToIUnknown*(x: ptr ICLRGCManager2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostAssemblyStoreToIUnknown*(x: ptr IHostAssemblyStore): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostAssemblyManagerToIUnknown*(x: ptr IHostAssemblyManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostControlToIUnknown*(x: ptr IHostControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRControlToIUnknown*(x: ptr ICLRControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRRuntimeHostToIUnknown*(x: ptr ICLRRuntimeHost): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRHostProtectionManagerToIUnknown*(x: ptr ICLRHostProtectionManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRDomainManagerToIUnknown*(x: ptr ICLRDomainManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITypeNameToIUnknown*(x: ptr ITypeName): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITypeNameBuilderToIUnknown*(x: ptr ITypeNameBuilder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITypeNameFactoryToIUnknown*(x: ptr ITypeNameFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIApartmentCallbackToIUnknown*(x: ptr IApartmentCallback): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIManagedObjectToIUnknown*(x: ptr IManagedObject): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICatalogServicesToIUnknown*(x: ptr ICatalogServices): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostSecurityContextToIUnknown*(x: ptr IHostSecurityContext): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostSecurityManagerToIUnknown*(x: ptr IHostSecurityManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRAppDomainResourceMonitorToIUnknown*(x: ptr ICLRAppDomainResourceMonitor): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRMetaHostToIUnknown*(x: ptr ICLRMetaHost): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRMetaHostPolicyToIUnknown*(x: ptr ICLRMetaHostPolicy): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRProfilingToIUnknown*(x: ptr ICLRProfiling): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRDebuggingLibraryProviderToIUnknown*(x: ptr ICLRDebuggingLibraryProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRDebuggingToIUnknown*(x: ptr ICLRDebugging): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRRuntimeInfoToIUnknown*(x: ptr ICLRRuntimeInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRStrongNameToIUnknown*(x: ptr ICLRStrongName): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRStrongName2ToIUnknown*(x: ptr ICLRStrongName2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICLRStrongName3ToIUnknown*(x: ptr ICLRStrongName3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectToIDispatch*(x: ptr IObject): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIObjectToIUnknown*(x: ptr IObject): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITypeToIUnknown*(x: ptr IType): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAppDomainSetupToIUnknown*(x: ptr IAppDomainSetup): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterObjectHandleToIDispatch*(x: ptr ObjectHandle): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterObjectHandleToIUnknown*(x: ptr ObjectHandle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterAppDomainToIDispatch*(x: ptr AppDomain): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterAppDomainToIUnknown*(x: ptr AppDomain): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAssemblyToIDispatch*(x: ptr IAssembly): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIAssemblyToIUnknown*(x: ptr IAssembly): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMethodInfoToIUnknown*(x: ptr IMethodInfo): ptr IUnknown = cast[ptr IUnknown](x)
+    get_DynamicDirectory*:
+      proc(self: ptr AppDomain, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+
+proc GetCORSystemDirectory*(
+  pbuffer: LPWSTR, cchBuffer: DWORD, dwLength: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc GetCORVersion*(
+  pbBuffer: LPWSTR, cchBuffer: DWORD, dwLength: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc GetFileVersion*(
+  szFilename: LPCWSTR, szBuffer: LPWSTR, cchBuffer: DWORD, dwLength: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc GetCORRequiredVersion*(
+  pbuffer: LPWSTR, cchBuffer: DWORD, dwLength: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc GetRequestedRuntimeInfo*(
+  pExe: LPCWSTR,
+  pwszVersion: LPCWSTR,
+  pConfigurationFile: LPCWSTR,
+  startupFlags: DWORD,
+  runtimeInfoFlags: DWORD,
+  pDirectory: LPWSTR,
+  dwDirectory: DWORD,
+  dwDirectoryLength: ptr DWORD,
+  pVersion: LPWSTR,
+  cchBuffer: DWORD,
+  dwlength: ptr DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc GetRequestedRuntimeVersion*(
+  pExe: LPWSTR, pVersion: LPWSTR, cchBuffer: DWORD, dwLength: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc CorBindToRuntimeHost*(
+  pwszVersion: LPCWSTR,
+  pwszBuildFlavor: LPCWSTR,
+  pwszHostConfigFile: LPCWSTR,
+  pReserved: pointer,
+  startupFlags: DWORD,
+  rclsid: REFCLSID,
+  riid: REFIID,
+  ppv: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc CorBindToRuntimeEx*(
+  pwszVersion: LPCWSTR,
+  pwszBuildFlavor: LPCWSTR,
+  startupFlags: DWORD,
+  rclsid: REFCLSID,
+  riid: REFIID,
+  ppv: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc CorBindToRuntimeByCfg*(
+  pCfgStream: ptr IStream,
+  reserved: DWORD,
+  startupFlags: DWORD,
+  rclsid: REFCLSID,
+  riid: REFIID,
+  ppv: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc CorBindToRuntime*(
+  pwszVersion: LPCWSTR,
+  pwszBuildFlavor: LPCWSTR,
+  rclsid: REFCLSID,
+  riid: REFIID,
+  ppv: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc CorBindToCurrentRuntime*(
+  pwszFileName: LPCWSTR, rclsid: REFCLSID, riid: REFIID, ppv: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc ClrCreateManagedInstance*(
+  pTypeName: LPCWSTR, riid: REFIID, ppObject: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc RunDll32ShimW*(
+  hwnd: HWND, hinst: HINSTANCE, lpszCmdLine: LPCWSTR, nCmdShow: int32
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc LoadLibraryShim*(
+  szDllName: LPCWSTR, szVersion: LPCWSTR, pvReserved: LPVOID, phModDll: ptr HMODULE
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc CallFunctionShim*(
+  szDllName: LPCWSTR,
+  szFunctionName: LPCSTR,
+  lpvArgument1: LPVOID,
+  lpvArgument2: LPVOID,
+  szVersion: LPCWSTR,
+  pvReserved: LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc GetRealProcAddress*(
+  pwszProcName: LPCSTR, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc LoadStringRC*(
+  iResouceID: UINT, szBuffer: LPWSTR, iMax: int32, bQuiet: int32
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc LoadStringRCEx*(
+  lcid: LCID,
+  iResouceID: UINT,
+  szBuffer: LPWSTR,
+  iMax: int32,
+  bQuiet: int32,
+  pcwchUsed: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc LockClrVersion*(
+  hostCallback: FLockClrVersionCallback,
+  pBeginHostSetup: ptr FLockClrVersionCallback,
+  pEndHostSetup: ptr FLockClrVersionCallback,
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc CreateDebuggingInterfaceFromVersion*(
+  iDebuggerVersion: int32, szDebuggeeVersion: LPCWSTR, ppCordb: ptr ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc GetVersionFromProcess*(
+  hProcess: HANDLE, pVersion: LPWSTR, cchBuffer: DWORD, dwLength: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc GetRequestedRuntimeVersionForCLSID*(
+  rclsid: REFCLSID,
+  pVersion: LPWSTR,
+  cchBuffer: DWORD,
+  dwLength: ptr DWORD,
+  dwResolutionFlags: CLSID_RESOLUTION_FLAGS,
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc CLRCreateInstance*(
+  clsid: REFCLSID, riid: REFIID, ppInterface: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "mscoree", importc.}
+
+proc `pReserved=`*(self: var CustomDumpItem, x: UINT_PTR) {.inline.} =
+  self.union1.pReserved = x
+
+proc pReserved*(self: CustomDumpItem): UINT_PTR {.inline.} =
+  self.union1.pReserved
+
+proc pReserved*(self: var CustomDumpItem): var UINT_PTR {.inline.} =
+  self.union1.pReserved
+
+proc SetGCStartupLimits*(
+    self: ptr IGCHost, SegmentSize: DWORD, MaxGen0Size: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetGCStartupLimits(self, SegmentSize, MaxGen0Size)
+
+proc Collect*(self: ptr IGCHost, Generation: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Collect(self, Generation)
+
+proc GetStats*(
+    self: ptr IGCHost, pStats: ptr COR_GC_STATS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetStats(self, pStats)
+
+proc GetThreadStats*(
+    self: ptr IGCHost, pFiberCookie: ptr DWORD, pStats: ptr COR_GC_THREAD_STATS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetThreadStats(self, pFiberCookie, pStats)
+
+proc SetVirtualMemLimit*(
+    self: ptr IGCHost, sztMaxVirtualMemMB: SIZE_T
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetVirtualMemLimit(self, sztMaxVirtualMemMB)
+
+proc SetGCStartupLimitsEx*(
+    self: ptr IGCHost2, SegmentSize: SIZE_T, MaxGen0Size: SIZE_T
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetGCStartupLimitsEx(self, SegmentSize, MaxGen0Size)
+
+proc VEHandler*(
+    self: ptr IVEHandler, VECode: HRESULT, Context: VEContext, psa: ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.VEHandler(self, VECode, Context, psa)
+
+proc SetReporterFtn*(self: ptr IVEHandler, lFnPtr: int64): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetReporterFtn(self, lFnPtr)
+
+proc Validate*(
+    self: ptr IValidator,
+    veh: ptr IVEHandler,
+    pAppDomain: ptr IUnknown,
+    ulFlags: int32,
+    ulMaxError: int32,
+    token: int32,
+    fileName: LPWSTR,
+    pe: ptr BYTE,
+    ulSize: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Validate(
+      self, veh, pAppDomain, ulFlags, ulMaxError, token, fileName, pe, ulSize
+    )
+
+proc FormatEventInfo*(
+    self: ptr IValidator,
+    hVECode: HRESULT,
+    Context: VEContext,
+    msg: LPWSTR,
+    ulMaxLength: int32,
+    psa: ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FormatEventInfo(self, hVECode, Context, msg, ulMaxLength, psa)
+
+proc Validate*(
+    self: ptr ICLRValidator,
+    veh: ptr IVEHandler,
+    ulAppDomainId: int32,
+    ulFlags: int32,
+    ulMaxError: int32,
+    token: int32,
+    fileName: LPWSTR,
+    pe: ptr BYTE,
+    ulSize: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Validate(
+      self, veh, ulAppDomainId, ulFlags, ulMaxError, token, fileName, pe, ulSize
+    )
+
+proc FormatEventInfo*(
+    self: ptr ICLRValidator,
+    hVECode: HRESULT,
+    Context: VEContext,
+    msg: LPWSTR,
+    ulMaxLength: int32,
+    psa: ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FormatEventInfo(self, hVECode, Context, msg, ulMaxLength, psa)
+
+proc Unwrap*(self: ptr IObjectHandle, ppv: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unwrap(self, ppv)
+
+proc OnAppDomain*(
+    self: ptr IAppDomainBinding, pAppdomain: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnAppDomain(self, pAppdomain)
+
+proc ThreadIsBlockingForSuspension*(
+    self: ptr IGCThreadControl
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ThreadIsBlockingForSuspension(self)
+
+proc SuspensionStarting*(self: ptr IGCThreadControl): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SuspensionStarting(self)
+
+proc SuspensionEnding*(
+    self: ptr IGCThreadControl, Generation: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SuspensionEnding(self, Generation)
+
+proc RequestVirtualMemLimit*(
+    self: ptr IGCHostControl,
+    sztMaxVirtualMemMB: SIZE_T,
+    psztNewMaxVirtualMemMB: ptr SIZE_T,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RequestVirtualMemLimit(self, sztMaxVirtualMemMB, psztNewMaxVirtualMemMB)
+
+proc CorRegisterWaitForSingleObject*(
+    self: ptr ICorThreadpool,
+    phNewWaitObject: ptr HANDLE,
+    hWaitObject: HANDLE,
+    Callback: WAITORTIMERCALLBACK,
+    Context: PVOID,
+    timeout: ULONG,
+    executeOnlyOnce: BOOL,
+    ret: ptr BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CorRegisterWaitForSingleObject(
+      self, phNewWaitObject, hWaitObject, Callback, Context, timeout, executeOnlyOnce,
+      ret,
+    )
+
+proc CorUnregisterWait*(
+    self: ptr ICorThreadpool,
+    hWaitObject: HANDLE,
+    CompletionEvent: HANDLE,
+    ret: ptr BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CorUnregisterWait(self, hWaitObject, CompletionEvent, ret)
+
+proc CorQueueUserWorkItem*(
+    self: ptr ICorThreadpool,
+    Function: LPTHREAD_START_ROUTINE,
+    Context: PVOID,
+    executeOnlyOnce: BOOL,
+    ret: ptr BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CorQueueUserWorkItem(self, Function, Context, executeOnlyOnce, ret)
+
+proc CorCreateTimer*(
+    self: ptr ICorThreadpool,
+    phNewTimer: ptr HANDLE,
+    Callback: WAITORTIMERCALLBACK,
+    Parameter: PVOID,
+    DueTime: DWORD,
+    Period: DWORD,
+    ret: ptr BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CorCreateTimer(
+      self, phNewTimer, Callback, Parameter, DueTime, Period, ret
+    )
+
+proc CorChangeTimer*(
+    self: ptr ICorThreadpool,
+    Timer: HANDLE,
+    DueTime: ULONG,
+    Period: ULONG,
+    ret: ptr BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CorChangeTimer(self, Timer, DueTime, Period, ret)
+
+proc CorDeleteTimer*(
+    self: ptr ICorThreadpool, Timer: HANDLE, CompletionEvent: HANDLE, ret: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CorDeleteTimer(self, Timer, CompletionEvent, ret)
+
+proc CorBindIoCompletionCallback*(
+    self: ptr ICorThreadpool,
+    fileHandle: HANDLE,
+    callback: LPOVERLAPPED_COMPLETION_ROUTINE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CorBindIoCompletionCallback(self, fileHandle, callback)
+
+proc CorCallOrQueueUserWorkItem*(
+    self: ptr ICorThreadpool,
+    Function: LPTHREAD_START_ROUTINE,
+    Context: PVOID,
+    ret: ptr BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CorCallOrQueueUserWorkItem(self, Function, Context, ret)
+
+proc CorSetMaxThreads*(
+    self: ptr ICorThreadpool, MaxWorkerThreads: DWORD, MaxIOCompletionThreads: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CorSetMaxThreads(self, MaxWorkerThreads, MaxIOCompletionThreads)
+
+proc CorGetMaxThreads*(
+    self: ptr ICorThreadpool,
+    MaxWorkerThreads: ptr DWORD,
+    MaxIOCompletionThreads: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CorGetMaxThreads(self, MaxWorkerThreads, MaxIOCompletionThreads)
+
+proc CorGetAvailableThreads*(
+    self: ptr ICorThreadpool,
+    AvailableWorkerThreads: ptr DWORD,
+    AvailableIOCompletionThreads: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CorGetAvailableThreads(
+      self, AvailableWorkerThreads, AvailableIOCompletionThreads
+    )
+
+proc ThreadIsBlockingForDebugger*(
+    self: ptr IDebuggerThreadControl
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ThreadIsBlockingForDebugger(self)
+
+proc ReleaseAllRuntimeThreads*(
+    self: ptr IDebuggerThreadControl
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseAllRuntimeThreads(self)
+
+proc StartBlockingForDebugger*(
+    self: ptr IDebuggerThreadControl, dwUnused: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StartBlockingForDebugger(self, dwUnused)
+
+proc IsDebuggerAttached*(
+    self: ptr IDebuggerInfo, pbAttached: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDebuggerAttached(self, pbAttached)
+
+proc SetGCThreadControl*(
+    self: ptr ICorConfiguration, pGCThreadControl: ptr IGCThreadControl
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetGCThreadControl(self, pGCThreadControl)
+
+proc SetGCHostControl*(
+    self: ptr ICorConfiguration, pGCHostControl: ptr IGCHostControl
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetGCHostControl(self, pGCHostControl)
+
+proc SetDebuggerThreadControl*(
+    self: ptr ICorConfiguration, pDebuggerThreadControl: ptr IDebuggerThreadControl
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDebuggerThreadControl(self, pDebuggerThreadControl)
+
+proc AddDebuggerSpecialThread*(
+    self: ptr ICorConfiguration, dwSpecialThreadId: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddDebuggerSpecialThread(self, dwSpecialThreadId)
+
+proc CreateLogicalThreadState*(self: ptr ICorRuntimeHost): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateLogicalThreadState(self)
+
+proc DeleteLogicalThreadState*(self: ptr ICorRuntimeHost): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteLogicalThreadState(self)
+
+proc SwitchInLogicalThreadState*(
+    self: ptr ICorRuntimeHost, pFiberCookie: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SwitchInLogicalThreadState(self, pFiberCookie)
+
+proc SwitchOutLogicalThreadState*(
+    self: ptr ICorRuntimeHost, pFiberCookie: ptr ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SwitchOutLogicalThreadState(self, pFiberCookie)
+
+proc LocksHeldByLogicalThread*(
+    self: ptr ICorRuntimeHost, pCount: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LocksHeldByLogicalThread(self, pCount)
+
+proc MapFile*(
+    self: ptr ICorRuntimeHost, hFile: HANDLE, hMapAddress: ptr HMODULE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MapFile(self, hFile, hMapAddress)
+
+proc GetConfiguration*(
+    self: ptr ICorRuntimeHost, pConfiguration: ptr ptr ICorConfiguration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConfiguration(self, pConfiguration)
+
+proc Start*(self: ptr ICorRuntimeHost): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Start(self)
+
+proc Stop*(self: ptr ICorRuntimeHost): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Stop(self)
+
+proc CreateDomain*(
+    self: ptr ICorRuntimeHost,
+    pwzFriendlyName: LPCWSTR,
+    pIdentityArray: ptr IUnknown,
+    pAppDomain: ptr ptr IUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateDomain(self, pwzFriendlyName, pIdentityArray, pAppDomain)
+
+proc GetDefaultDomain*(
+    self: ptr ICorRuntimeHost, pAppDomain: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultDomain(self, pAppDomain)
+
+proc EnumDomains*(
+    self: ptr ICorRuntimeHost, hEnum: ptr HDOMAINENUM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumDomains(self, hEnum)
+
+proc NextDomain*(
+    self: ptr ICorRuntimeHost, hEnum: HDOMAINENUM, pAppDomain: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NextDomain(self, hEnum, pAppDomain)
+
+proc CloseEnum*(
+    self: ptr ICorRuntimeHost, hEnum: HDOMAINENUM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CloseEnum(self, hEnum)
+
+proc CreateDomainEx*(
+    self: ptr ICorRuntimeHost,
+    pwzFriendlyName: LPCWSTR,
+    pSetup: ptr IUnknown,
+    pEvidence: ptr IUnknown,
+    pAppDomain: ptr ptr IUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateDomainEx(self, pwzFriendlyName, pSetup, pEvidence, pAppDomain)
+
+proc CreateDomainSetup*(
+    self: ptr ICorRuntimeHost, pAppDomainSetup: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateDomainSetup(self, pAppDomainSetup)
+
+proc CreateEvidence*(
+    self: ptr ICorRuntimeHost, pEvidence: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateEvidence(self, pEvidence)
+
+proc UnloadDomain*(
+    self: ptr ICorRuntimeHost, pAppDomain: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnloadDomain(self, pAppDomain)
+
+proc CurrentDomain*(
+    self: ptr ICorRuntimeHost, pAppDomain: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CurrentDomain(self, pAppDomain)
+
+proc OnMemoryNotification*(
+    self: ptr ICLRMemoryNotificationCallback, eMemoryAvailable: EMemoryAvailable
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnMemoryNotification(self, eMemoryAvailable)
+
+proc Alloc*(
+    self: ptr IHostMalloc,
+    cbSize: SIZE_T,
+    eCriticalLevel: EMemoryCriticalLevel,
+    ppMem: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Alloc(self, cbSize, eCriticalLevel, ppMem)
+
+proc DebugAlloc*(
+    self: ptr IHostMalloc,
+    cbSize: SIZE_T,
+    eCriticalLevel: EMemoryCriticalLevel,
+    pszFileName: ptr char,
+    iLineNo: int32,
+    ppMem: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DebugAlloc(self, cbSize, eCriticalLevel, pszFileName, iLineNo, ppMem)
+
+proc Free*(self: ptr IHostMalloc, pMem: pointer): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Free(self, pMem)
+
+proc CreateMalloc*(
+    self: ptr IHostMemoryManager, dwMallocType: DWORD, ppMalloc: ptr ptr IHostMalloc
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateMalloc(self, dwMallocType, ppMalloc)
+
+proc VirtualAlloc*(
+    self: ptr IHostMemoryManager,
+    pAddress: pointer,
+    dwSize: SIZE_T,
+    flAllocationType: DWORD,
+    flProtect: DWORD,
+    eCriticalLevel: EMemoryCriticalLevel,
+    ppMem: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.VirtualAlloc(
+      self, pAddress, dwSize, flAllocationType, flProtect, eCriticalLevel, ppMem
+    )
+
+proc VirtualFree*(
+    self: ptr IHostMemoryManager, lpAddress: LPVOID, dwSize: SIZE_T, dwFreeType: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.VirtualFree(self, lpAddress, dwSize, dwFreeType)
+
+proc VirtualQuery*(
+    self: ptr IHostMemoryManager,
+    lpAddress: pointer,
+    lpBuffer: pointer,
+    dwLength: SIZE_T,
+    pResult: ptr SIZE_T,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.VirtualQuery(self, lpAddress, lpBuffer, dwLength, pResult)
+
+proc VirtualProtect*(
+    self: ptr IHostMemoryManager,
+    lpAddress: pointer,
+    dwSize: SIZE_T,
+    flNewProtect: DWORD,
+    pflOldProtect: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.VirtualProtect(self, lpAddress, dwSize, flNewProtect, pflOldProtect)
+
+proc GetMemoryLoad*(
+    self: ptr IHostMemoryManager, pMemoryLoad: ptr DWORD, pAvailableBytes: ptr SIZE_T
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMemoryLoad(self, pMemoryLoad, pAvailableBytes)
+
+proc RegisterMemoryNotificationCallback*(
+    self: ptr IHostMemoryManager, pCallback: ptr ICLRMemoryNotificationCallback
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterMemoryNotificationCallback(self, pCallback)
+
+proc NeedsVirtualAddressSpace*(
+    self: ptr IHostMemoryManager, startAddress: LPVOID, size: SIZE_T
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NeedsVirtualAddressSpace(self, startAddress, size)
+
+proc AcquiredVirtualAddressSpace*(
+    self: ptr IHostMemoryManager, startAddress: LPVOID, size: SIZE_T
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AcquiredVirtualAddressSpace(self, startAddress, size)
+
+proc ReleasedVirtualAddressSpace*(
+    self: ptr IHostMemoryManager, startAddress: LPVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleasedVirtualAddressSpace(self, startAddress)
+
+proc SwitchIn*(self: ptr ICLRTask, threadHandle: HANDLE): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SwitchIn(self, threadHandle)
+
+proc SwitchOut*(self: ptr ICLRTask): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SwitchOut(self)
+
+proc GetMemStats*(
+    self: ptr ICLRTask, memUsage: ptr COR_GC_THREAD_STATS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMemStats(self, memUsage)
+
+proc Reset*(self: ptr ICLRTask, fFull: BOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self, fFull)
+
+proc ExitTask*(self: ptr ICLRTask): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExitTask(self)
+
+proc Abort*(self: ptr ICLRTask): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Abort(self)
+
+proc RudeAbort*(self: ptr ICLRTask): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RudeAbort(self)
+
+proc NeedsPriorityScheduling*(
+    self: ptr ICLRTask, pbNeedsPriorityScheduling: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NeedsPriorityScheduling(self, pbNeedsPriorityScheduling)
+
+proc YieldTask*(self: ptr ICLRTask): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.YieldTask(self)
+
+proc LocksHeld*(
+    self: ptr ICLRTask, pLockCount: ptr SIZE_T
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LocksHeld(self, pLockCount)
+
+proc SetTaskIdentifier*(self: ptr ICLRTask, asked: TASKID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTaskIdentifier(self, asked)
+
+proc BeginPreventAsyncAbort*(self: ptr ICLRTask2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeginPreventAsyncAbort(self)
+
+proc EndPreventAsyncAbort*(self: ptr ICLRTask2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EndPreventAsyncAbort(self)
+
+proc Start*(self: ptr IHostTask): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Start(self)
+
+proc Alert*(self: ptr IHostTask): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Alert(self)
+
+proc Join*(
+    self: ptr IHostTask, dwMilliseconds: DWORD, option: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Join(self, dwMilliseconds, option)
+
+proc SetPriority*(self: ptr IHostTask, newPriority: int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPriority(self, newPriority)
+
+proc GetPriority*(
+    self: ptr IHostTask, pPriority: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPriority(self, pPriority)
+
+proc SetCLRTask*(
+    self: ptr IHostTask, pCLRTask: ptr ICLRTask
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCLRTask(self, pCLRTask)
+
+proc CreateTask*(
+    self: ptr ICLRTaskManager, pTask: ptr ptr ICLRTask
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateTask(self, pTask)
+
+proc GetCurrentTask*(
+    self: ptr ICLRTaskManager, pTask: ptr ptr ICLRTask
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentTask(self, pTask)
+
+proc SetUILocale*(self: ptr ICLRTaskManager, lcid: LCID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetUILocale(self, lcid)
+
+proc SetLocale*(self: ptr ICLRTaskManager, lcid: LCID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetLocale(self, lcid)
+
+proc GetCurrentTaskType*(
+    self: ptr ICLRTaskManager, pTaskType: ptr ETaskType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentTaskType(self, pTaskType)
+
+proc GetCurrentTask*(
+    self: ptr IHostTaskManager, pTask: ptr ptr IHostTask
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentTask(self, pTask)
+
+proc CreateTask*(
+    self: ptr IHostTaskManager,
+    dwStackSize: DWORD,
+    pStartAddress: LPTHREAD_START_ROUTINE,
+    pParameter: PVOID,
+    ppTask: ptr ptr IHostTask,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateTask(self, dwStackSize, pStartAddress, pParameter, ppTask)
+
+proc Sleep*(
+    self: ptr IHostTaskManager, dwMilliseconds: DWORD, option: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Sleep(self, dwMilliseconds, option)
+
+proc SwitchToTask*(
+    self: ptr IHostTaskManager, option: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SwitchToTask(self, option)
+
+proc SetUILocale*(self: ptr IHostTaskManager, lcid: LCID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetUILocale(self, lcid)
+
+proc SetLocale*(self: ptr IHostTaskManager, lcid: LCID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetLocale(self, lcid)
+
+proc CallNeedsHostHook*(
+    self: ptr IHostTaskManager, target: SIZE_T, pbCallNeedsHostHook: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CallNeedsHostHook(self, target, pbCallNeedsHostHook)
+
+proc LeaveRuntime*(
+    self: ptr IHostTaskManager, target: SIZE_T
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LeaveRuntime(self, target)
+
+proc EnterRuntime*(self: ptr IHostTaskManager): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnterRuntime(self)
+
+proc ReverseLeaveRuntime*(self: ptr IHostTaskManager): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReverseLeaveRuntime(self)
+
+proc ReverseEnterRuntime*(self: ptr IHostTaskManager): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReverseEnterRuntime(self)
+
+proc BeginDelayAbort*(self: ptr IHostTaskManager): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeginDelayAbort(self)
+
+proc EndDelayAbort*(self: ptr IHostTaskManager): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EndDelayAbort(self)
+
+proc BeginThreadAffinity*(self: ptr IHostTaskManager): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeginThreadAffinity(self)
+
+proc EndThreadAffinity*(self: ptr IHostTaskManager): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EndThreadAffinity(self)
+
+proc SetStackGuarantee*(
+    self: ptr IHostTaskManager, guarantee: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetStackGuarantee(self, guarantee)
+
+proc GetStackGuarantee*(
+    self: ptr IHostTaskManager, pGuarantee: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetStackGuarantee(self, pGuarantee)
+
+proc SetCLRTaskManager*(
+    self: ptr IHostTaskManager, ppManager: ptr ICLRTaskManager
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCLRTaskManager(self, ppManager)
+
+proc QueueUserWorkItem*(
+    self: ptr IHostThreadpoolManager,
+    Function: LPTHREAD_START_ROUTINE,
+    Context: PVOID,
+    Flags: ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueueUserWorkItem(self, Function, Context, Flags)
+
+proc SetMaxThreads*(
+    self: ptr IHostThreadpoolManager, dwMaxWorkerThreads: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetMaxThreads(self, dwMaxWorkerThreads)
+
+proc GetMaxThreads*(
+    self: ptr IHostThreadpoolManager, pdwMaxWorkerThreads: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMaxThreads(self, pdwMaxWorkerThreads)
+
+proc GetAvailableThreads*(
+    self: ptr IHostThreadpoolManager, pdwAvailableWorkerThreads: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAvailableThreads(self, pdwAvailableWorkerThreads)
+
+proc SetMinThreads*(
+    self: ptr IHostThreadpoolManager, dwMinIOCompletionThreads: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetMinThreads(self, dwMinIOCompletionThreads)
+
+proc GetMinThreads*(
+    self: ptr IHostThreadpoolManager, pdwMinIOCompletionThreads: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMinThreads(self, pdwMinIOCompletionThreads)
+
+proc OnComplete*(
+    self: ptr ICLRIoCompletionManager,
+    dwErrorCode: DWORD,
+    NumberOfBytesTransferred: DWORD,
+    pvOverlapped: pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnComplete(self, dwErrorCode, NumberOfBytesTransferred, pvOverlapped)
+
+proc CreateIoCompletionPort*(
+    self: ptr IHostIoCompletionManager, phPort: ptr HANDLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateIoCompletionPort(self, phPort)
+
+proc CloseIoCompletionPort*(
+    self: ptr IHostIoCompletionManager, hPort: HANDLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CloseIoCompletionPort(self, hPort)
+
+proc SetMaxThreads*(
+    self: ptr IHostIoCompletionManager, dwMaxIOCompletionThreads: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetMaxThreads(self, dwMaxIOCompletionThreads)
+
+proc GetMaxThreads*(
+    self: ptr IHostIoCompletionManager, pdwMaxIOCompletionThreads: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMaxThreads(self, pdwMaxIOCompletionThreads)
+
+proc GetAvailableThreads*(
+    self: ptr IHostIoCompletionManager, pdwAvailableIOCompletionThreads: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAvailableThreads(self, pdwAvailableIOCompletionThreads)
+
+proc GetHostOverlappedSize*(
+    self: ptr IHostIoCompletionManager, pcbSize: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHostOverlappedSize(self, pcbSize)
+
+proc SetCLRIoCompletionManager*(
+    self: ptr IHostIoCompletionManager, pManager: ptr ICLRIoCompletionManager
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCLRIoCompletionManager(self, pManager)
+
+proc InitializeHostOverlapped*(
+    self: ptr IHostIoCompletionManager, pvOverlapped: pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeHostOverlapped(self, pvOverlapped)
+
+proc Bind*(
+    self: ptr IHostIoCompletionManager, hPort: HANDLE, hHandle: HANDLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Bind(self, hPort, hHandle)
+
+proc SetMinThreads*(
+    self: ptr IHostIoCompletionManager, dwMinIOCompletionThreads: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetMinThreads(self, dwMinIOCompletionThreads)
+
+proc GetMinThreads*(
+    self: ptr IHostIoCompletionManager, pdwMinIOCompletionThreads: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMinThreads(self, pdwMinIOCompletionThreads)
+
+proc BeginConnection*(
+    self: ptr ICLRDebugManager, dwConnectionId: CONNID, szConnectionName: ptr uint16
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeginConnection(self, dwConnectionId, szConnectionName)
+
+proc SetConnectionTasks*(
+    self: ptr ICLRDebugManager, id: CONNID, dwCount: DWORD, ppCLRTask: ptr ptr ICLRTask
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetConnectionTasks(self, id, dwCount, ppCLRTask)
+
+proc EndConnection*(
+    self: ptr ICLRDebugManager, dwConnectionId: CONNID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EndConnection(self, dwConnectionId)
+
+proc SetDacl*(self: ptr ICLRDebugManager, pacl: PACL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDacl(self, pacl)
+
+proc GetDacl*(self: ptr ICLRDebugManager, pacl: ptr PACL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDacl(self, pacl)
+
+proc IsDebuggerAttached*(
+    self: ptr ICLRDebugManager, pbAttached: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDebuggerAttached(self, pbAttached)
+
+proc SetSymbolReadingPolicy*(
+    self: ptr ICLRDebugManager, policy: ESymbolReadingPolicy
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSymbolReadingPolicy(self, policy)
+
+proc GetBucketParametersForCurrentException*(
+    self: ptr ICLRErrorReportingManager, pParams: ptr BucketParameters
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBucketParametersForCurrentException(self, pParams)
+
+proc BeginCustomDump*(
+    self: ptr ICLRErrorReportingManager,
+    dwFlavor: ECustomDumpFlavor,
+    dwNumItems: DWORD,
+    items: ptr CustomDumpItem,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeginCustomDump(self, dwFlavor, dwNumItems, items, dwReserved)
+
+proc EndCustomDump*(self: ptr ICLRErrorReportingManager): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EndCustomDump(self)
+
+proc Enter*(self: ptr IHostCrst, option: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Enter(self, option)
+
+proc Leave*(self: ptr IHostCrst): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Leave(self)
+
+proc TryEnter*(
+    self: ptr IHostCrst, option: DWORD, pbSucceeded: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TryEnter(self, option, pbSucceeded)
+
+proc SetSpinCount*(
+    self: ptr IHostCrst, dwSpinCount: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSpinCount(self, dwSpinCount)
+
+proc Wait*(
+    self: ptr IHostAutoEvent, dwMilliseconds: DWORD, option: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Wait(self, dwMilliseconds, option)
+
+proc Set*(self: ptr IHostAutoEvent): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Set(self)
+
+proc Wait*(
+    self: ptr IHostManualEvent, dwMilliseconds: DWORD, option: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Wait(self, dwMilliseconds, option)
+
+proc Reset*(self: ptr IHostManualEvent): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Set*(self: ptr IHostManualEvent): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Set(self)
+
+proc Wait*(
+    self: ptr IHostSemaphore, dwMilliseconds: DWORD, option: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Wait(self, dwMilliseconds, option)
+
+proc ReleaseSemaphore*(
+    self: ptr IHostSemaphore, lReleaseCount: LONG, lpPreviousCount: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseSemaphore(self, lReleaseCount, lpPreviousCount)
+
+proc GetMonitorOwner*(
+    self: ptr ICLRSyncManager, Cookie: SIZE_T, ppOwnerHostTask: ptr ptr IHostTask
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMonitorOwner(self, Cookie, ppOwnerHostTask)
+
+proc CreateRWLockOwnerIterator*(
+    self: ptr ICLRSyncManager, Cookie: SIZE_T, pIterator: ptr SIZE_T
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateRWLockOwnerIterator(self, Cookie, pIterator)
+
+proc GetRWLockOwnerNext*(
+    self: ptr ICLRSyncManager, Iterator: SIZE_T, ppOwnerHostTask: ptr ptr IHostTask
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRWLockOwnerNext(self, Iterator, ppOwnerHostTask)
+
+proc DeleteRWLockOwnerIterator*(
+    self: ptr ICLRSyncManager, Iterator: SIZE_T
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteRWLockOwnerIterator(self, Iterator)
+
+proc SetCLRSyncManager*(
+    self: ptr IHostSyncManager, pManager: ptr ICLRSyncManager
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCLRSyncManager(self, pManager)
+
+proc CreateCrst*(
+    self: ptr IHostSyncManager, ppCrst: ptr ptr IHostCrst
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateCrst(self, ppCrst)
+
+proc CreateCrstWithSpinCount*(
+    self: ptr IHostSyncManager, dwSpinCount: DWORD, ppCrst: ptr ptr IHostCrst
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateCrstWithSpinCount(self, dwSpinCount, ppCrst)
+
+proc CreateAutoEvent*(
+    self: ptr IHostSyncManager, ppEvent: ptr ptr IHostAutoEvent
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateAutoEvent(self, ppEvent)
+
+proc CreateManualEvent*(
+    self: ptr IHostSyncManager, bInitialState: BOOL, ppEvent: ptr ptr IHostManualEvent
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateManualEvent(self, bInitialState, ppEvent)
+
+proc CreateMonitorEvent*(
+    self: ptr IHostSyncManager, Cookie: SIZE_T, ppEvent: ptr ptr IHostAutoEvent
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateMonitorEvent(self, Cookie, ppEvent)
+
+proc CreateRWLockWriterEvent*(
+    self: ptr IHostSyncManager, Cookie: SIZE_T, ppEvent: ptr ptr IHostAutoEvent
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateRWLockWriterEvent(self, Cookie, ppEvent)
+
+proc CreateRWLockReaderEvent*(
+    self: ptr IHostSyncManager,
+    bInitialState: BOOL,
+    Cookie: SIZE_T,
+    ppEvent: ptr ptr IHostManualEvent,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateRWLockReaderEvent(self, bInitialState, Cookie, ppEvent)
+
+proc CreateSemaphore*(
+    self: ptr IHostSyncManager,
+    dwInitial: DWORD,
+    dwMax: DWORD,
+    ppSemaphore: ptr ptr IHostSemaphore,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateSemaphore(self, dwInitial, dwMax, ppSemaphore)
+
+proc SetDefaultAction*(
+    self: ptr ICLRPolicyManager, operation: EClrOperation, action: EPolicyAction
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDefaultAction(self, operation, action)
+
+proc SetTimeout*(
+    self: ptr ICLRPolicyManager, operation: EClrOperation, dwMilliseconds: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTimeout(self, operation, dwMilliseconds)
+
+proc SetActionOnTimeout*(
+    self: ptr ICLRPolicyManager, operation: EClrOperation, action: EPolicyAction
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetActionOnTimeout(self, operation, action)
+
+proc SetTimeoutAndAction*(
+    self: ptr ICLRPolicyManager,
+    operation: EClrOperation,
+    dwMilliseconds: DWORD,
+    action: EPolicyAction,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTimeoutAndAction(self, operation, dwMilliseconds, action)
+
+proc SetActionOnFailure*(
+    self: ptr ICLRPolicyManager, failure: EClrFailure, action: EPolicyAction
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetActionOnFailure(self, failure, action)
+
+proc SetUnhandledExceptionPolicy*(
+    self: ptr ICLRPolicyManager, policy: EClrUnhandledException
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetUnhandledExceptionPolicy(self, policy)
+
+proc OnDefaultAction*(
+    self: ptr IHostPolicyManager, operation: EClrOperation, action: EPolicyAction
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDefaultAction(self, operation, action)
+
+proc OnTimeout*(
+    self: ptr IHostPolicyManager, operation: EClrOperation, action: EPolicyAction
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnTimeout(self, operation, action)
+
+proc OnFailure*(
+    self: ptr IHostPolicyManager, failure: EClrFailure, action: EPolicyAction
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnFailure(self, failure, action)
+
+proc OnEvent*(
+    self: ptr IActionOnCLREvent, event: EClrEvent, data: PVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnEvent(self, event, data)
+
+proc RegisterActionOnEvent*(
+    self: ptr ICLROnEventManager, event: EClrEvent, pAction: ptr IActionOnCLREvent
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterActionOnEvent(self, event, pAction)
+
+proc UnregisterActionOnEvent*(
+    self: ptr ICLROnEventManager, event: EClrEvent, pAction: ptr IActionOnCLREvent
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnregisterActionOnEvent(self, event, pAction)
+
+proc ThreadIsBlockingForSuspension*(
+    self: ptr IHostGCManager
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ThreadIsBlockingForSuspension(self)
+
+proc SuspensionStarting*(self: ptr IHostGCManager): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SuspensionStarting(self)
+
+proc SuspensionEnding*(
+    self: ptr IHostGCManager, Generation: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SuspensionEnding(self, Generation)
+
+proc IsStringAssemblyReferenceInList*(
+    self: ptr ICLRAssemblyReferenceList, pwzAssemblyName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsStringAssemblyReferenceInList(self, pwzAssemblyName)
+
+proc IsAssemblyReferenceInList*(
+    self: ptr ICLRAssemblyReferenceList, pName: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsAssemblyReferenceInList(self, pName)
+
+proc Get*(
+    self: ptr ICLRReferenceAssemblyEnum,
+    dwIndex: DWORD,
+    pwzBuffer: LPWSTR,
+    pcchBufferSize: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Get(self, dwIndex, pwzBuffer, pcchBufferSize)
+
+proc Get*(
+    self: ptr ICLRProbingAssemblyEnum,
+    dwIndex: DWORD,
+    pwzBuffer: LPWSTR,
+    pcchBufferSize: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Get(self, dwIndex, pwzBuffer, pcchBufferSize)
+
+proc GetCLRAssemblyReferenceList*(
+    self: ptr ICLRAssemblyIdentityManager,
+    ppwzAssemblyReferences: ptr LPCWSTR,
+    dwNumOfReferences: DWORD,
+    ppReferenceList: ptr ptr ICLRAssemblyReferenceList,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCLRAssemblyReferenceList(
+      self, ppwzAssemblyReferences, dwNumOfReferences, ppReferenceList
+    )
+
+proc GetBindingIdentityFromFile*(
+    self: ptr ICLRAssemblyIdentityManager,
+    pwzFilePath: LPCWSTR,
+    dwFlags: DWORD,
+    pwzBuffer: LPWSTR,
+    pcchBufferSize: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBindingIdentityFromFile(
+      self, pwzFilePath, dwFlags, pwzBuffer, pcchBufferSize
+    )
+
+proc GetBindingIdentityFromStream*(
+    self: ptr ICLRAssemblyIdentityManager,
+    pStream: ptr IStream,
+    dwFlags: DWORD,
+    pwzBuffer: LPWSTR,
+    pcchBufferSize: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBindingIdentityFromStream(
+      self, pStream, dwFlags, pwzBuffer, pcchBufferSize
+    )
+
+proc GetReferencedAssembliesFromFile*(
+    self: ptr ICLRAssemblyIdentityManager,
+    pwzFilePath: LPCWSTR,
+    dwFlags: DWORD,
+    pExcludeAssembliesList: ptr ICLRAssemblyReferenceList,
+    ppReferenceEnum: ptr ptr ICLRReferenceAssemblyEnum,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetReferencedAssembliesFromFile(
+      self, pwzFilePath, dwFlags, pExcludeAssembliesList, ppReferenceEnum
+    )
+
+proc GetReferencedAssembliesFromStream*(
+    self: ptr ICLRAssemblyIdentityManager,
+    pStream: ptr IStream,
+    dwFlags: DWORD,
+    pExcludeAssembliesList: ptr ICLRAssemblyReferenceList,
+    ppReferenceEnum: ptr ptr ICLRReferenceAssemblyEnum,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetReferencedAssembliesFromStream(
+      self, pStream, dwFlags, pExcludeAssembliesList, ppReferenceEnum
+    )
+
+proc GetProbingAssembliesFromReference*(
+    self: ptr ICLRAssemblyIdentityManager,
+    dwMachineType: DWORD,
+    dwFlags: DWORD,
+    pwzReferenceIdentity: LPCWSTR,
+    ppProbingAssemblyEnum: ptr ptr ICLRProbingAssemblyEnum,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProbingAssembliesFromReference(
+      self, dwMachineType, dwFlags, pwzReferenceIdentity, ppProbingAssemblyEnum
+    )
+
+proc IsStronglyNamed*(
+    self: ptr ICLRAssemblyIdentityManager,
+    pwzAssemblyIdentity: LPCWSTR,
+    pbIsStronglyNamed: ptr BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsStronglyNamed(self, pwzAssemblyIdentity, pbIsStronglyNamed)
+
+proc ModifyApplicationPolicy*(
+    self: ptr ICLRHostBindingPolicyManager,
+    pwzSourceAssemblyIdentity: LPCWSTR,
+    pwzTargetAssemblyIdentity: LPCWSTR,
+    pbApplicationPolicy: ptr BYTE,
+    cbAppPolicySize: DWORD,
+    dwPolicyModifyFlags: DWORD,
+    pbNewApplicationPolicy: ptr BYTE,
+    pcbNewAppPolicySize: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ModifyApplicationPolicy(
+      self, pwzSourceAssemblyIdentity, pwzTargetAssemblyIdentity, pbApplicationPolicy,
+      cbAppPolicySize, dwPolicyModifyFlags, pbNewApplicationPolicy, pcbNewAppPolicySize,
+    )
+
+proc EvaluatePolicy*(
+    self: ptr ICLRHostBindingPolicyManager,
+    pwzReferenceIdentity: LPCWSTR,
+    pbApplicationPolicy: ptr BYTE,
+    cbAppPolicySize: DWORD,
+    pwzPostPolicyReferenceIdentity: LPWSTR,
+    pcchPostPolicyReferenceIdentity: ptr DWORD,
+    pdwPoliciesApplied: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EvaluatePolicy(
+      self, pwzReferenceIdentity, pbApplicationPolicy, cbAppPolicySize,
+      pwzPostPolicyReferenceIdentity, pcchPostPolicyReferenceIdentity,
+      pdwPoliciesApplied,
+    )
+
+proc Collect*(self: ptr ICLRGCManager, Generation: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Collect(self, Generation)
+
+proc GetStats*(
+    self: ptr ICLRGCManager, pStats: ptr COR_GC_STATS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetStats(self, pStats)
+
+proc SetGCStartupLimits*(
+    self: ptr ICLRGCManager, SegmentSize: DWORD, MaxGen0Size: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetGCStartupLimits(self, SegmentSize, MaxGen0Size)
+
+proc SetGCStartupLimitsEx*(
+    self: ptr ICLRGCManager2, SegmentSize: SIZE_T, MaxGen0Size: SIZE_T
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetGCStartupLimitsEx(self, SegmentSize, MaxGen0Size)
+
+proc ProvideAssembly*(
+    self: ptr IHostAssemblyStore,
+    pBindInfo: ptr AssemblyBindInfo,
+    pAssemblyId: ptr UINT64,
+    pContext: ptr UINT64,
+    ppStmAssemblyImage: ptr ptr IStream,
+    ppStmPDB: ptr ptr IStream,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ProvideAssembly(
+      self, pBindInfo, pAssemblyId, pContext, ppStmAssemblyImage, ppStmPDB
+    )
+
+proc ProvideModule*(
+    self: ptr IHostAssemblyStore,
+    pBindInfo: ptr ModuleBindInfo,
+    pdwModuleId: ptr DWORD,
+    ppStmModuleImage: ptr ptr IStream,
+    ppStmPDB: ptr ptr IStream,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ProvideModule(self, pBindInfo, pdwModuleId, ppStmModuleImage, ppStmPDB)
+
+proc GetNonHostStoreAssemblies*(
+    self: ptr IHostAssemblyManager, ppReferenceList: ptr ptr ICLRAssemblyReferenceList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNonHostStoreAssemblies(self, ppReferenceList)
+
+proc GetAssemblyStore*(
+    self: ptr IHostAssemblyManager, ppAssemblyStore: ptr ptr IHostAssemblyStore
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAssemblyStore(self, ppAssemblyStore)
+
+proc GetHostManager*(
+    self: ptr IHostControl, riid: REFIID, ppObject: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHostManager(self, riid, ppObject)
+
+proc SetAppDomainManager*(
+    self: ptr IHostControl, dwAppDomainID: DWORD, pUnkAppDomainManager: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAppDomainManager(self, dwAppDomainID, pUnkAppDomainManager)
+
+proc GetCLRManager*(
+    self: ptr ICLRControl, riid: REFIID, ppObject: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCLRManager(self, riid, ppObject)
+
+proc SetAppDomainManagerType*(
+    self: ptr ICLRControl,
+    pwzAppDomainManagerAssembly: LPCWSTR,
+    pwzAppDomainManagerType: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAppDomainManagerType(
+      self, pwzAppDomainManagerAssembly, pwzAppDomainManagerType
+    )
+
+proc Start*(self: ptr ICLRRuntimeHost): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Start(self)
+
+proc Stop*(self: ptr ICLRRuntimeHost): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Stop(self)
+
+proc SetHostControl*(
+    self: ptr ICLRRuntimeHost, pHostControl: ptr IHostControl
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHostControl(self, pHostControl)
+
+proc GetCLRControl*(
+    self: ptr ICLRRuntimeHost, pCLRControl: ptr ptr ICLRControl
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCLRControl(self, pCLRControl)
+
+proc UnloadAppDomain*(
+    self: ptr ICLRRuntimeHost, dwAppDomainId: DWORD, fWaitUntilDone: BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnloadAppDomain(self, dwAppDomainId, fWaitUntilDone)
+
+proc ExecuteInAppDomain*(
+    self: ptr ICLRRuntimeHost,
+    dwAppDomainId: DWORD,
+    pCallback: FExecuteInAppDomainCallback,
+    cookie: pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExecuteInAppDomain(self, dwAppDomainId, pCallback, cookie)
+
+proc GetCurrentAppDomainId*(
+    self: ptr ICLRRuntimeHost, pdwAppDomainId: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentAppDomainId(self, pdwAppDomainId)
+
+proc ExecuteApplication*(
+    self: ptr ICLRRuntimeHost,
+    pwzAppFullName: LPCWSTR,
+    dwManifestPaths: DWORD,
+    ppwzManifestPaths: ptr LPCWSTR,
+    dwActivationData: DWORD,
+    ppwzActivationData: ptr LPCWSTR,
+    pReturnValue: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExecuteApplication(
+      self, pwzAppFullName, dwManifestPaths, ppwzManifestPaths, dwActivationData,
+      ppwzActivationData, pReturnValue,
+    )
+
+proc ExecuteInDefaultAppDomain*(
+    self: ptr ICLRRuntimeHost,
+    pwzAssemblyPath: LPCWSTR,
+    pwzTypeName: LPCWSTR,
+    pwzMethodName: LPCWSTR,
+    pwzArgument: LPCWSTR,
+    pReturnValue: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExecuteInDefaultAppDomain(
+      self, pwzAssemblyPath, pwzTypeName, pwzMethodName, pwzArgument, pReturnValue
+    )
+
+proc SetProtectedCategories*(
+    self: ptr ICLRHostProtectionManager, categories: EApiCategories
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetProtectedCategories(self, categories)
+
+proc SetEagerSerializeGrantSets*(
+    self: ptr ICLRHostProtectionManager
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetEagerSerializeGrantSets(self)
+
+proc SetAppDomainManagerType*(
+    self: ptr ICLRDomainManager,
+    wszAppDomainManagerAssembly: LPCWSTR,
+    wszAppDomainManagerType: LPCWSTR,
+    dwInitializeDomainFlags: EInitializeNewDomainFlags,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAppDomainManagerType(
+      self, wszAppDomainManagerAssembly, wszAppDomainManagerType,
+      dwInitializeDomainFlags,
+    )
+
+proc SetPropertiesForDefaultAppDomain*(
+    self: ptr ICLRDomainManager,
+    nProperties: DWORD,
+    pwszPropertyNames: ptr LPCWSTR,
+    pwszPropertyValues: ptr LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPropertiesForDefaultAppDomain(
+      self, nProperties, pwszPropertyNames, pwszPropertyValues
+    )
+
+proc GetNameCount*(self: ptr ITypeName, pCount: ptr DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNameCount(self, pCount)
+
+proc GetNames*(
+    self: ptr ITypeName, count: DWORD, rgbszNames: ptr BSTR, pCount: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNames(self, count, rgbszNames, pCount)
+
+proc GetTypeArgumentCount*(
+    self: ptr ITypeName, pCount: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeArgumentCount(self, pCount)
+
+proc GetTypeArguments*(
+    self: ptr ITypeName,
+    count: DWORD,
+    rgpArguments: ptr ptr ITypeName,
+    pCount: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeArguments(self, count, rgpArguments, pCount)
+
+proc GetModifierLength*(
+    self: ptr ITypeName, pCount: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetModifierLength(self, pCount)
+
+proc GetModifiers*(
+    self: ptr ITypeName, count: DWORD, rgModifiers: ptr DWORD, pCount: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetModifiers(self, count, rgModifiers, pCount)
+
+proc GetAssemblyName*(
+    self: ptr ITypeName, rgbszAssemblyNames: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAssemblyName(self, rgbszAssemblyNames)
+
+proc OpenGenericArguments*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OpenGenericArguments(self)
+
+proc CloseGenericArguments*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CloseGenericArguments(self)
+
+proc OpenGenericArgument*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OpenGenericArgument(self)
+
+proc CloseGenericArgument*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CloseGenericArgument(self)
+
+proc AddName*(self: ptr ITypeNameBuilder, szName: LPCWSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddName(self, szName)
+
+proc AddPointer*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddPointer(self)
+
+proc AddByRef*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddByRef(self)
+
+proc AddSzArray*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddSzArray(self)
+
+proc AddArray*(self: ptr ITypeNameBuilder, rank: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddArray(self, rank)
+
+proc AddAssemblySpec*(
+    self: ptr ITypeNameBuilder, szAssemblySpec: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddAssemblySpec(self, szAssemblySpec)
+
+proc ToString*(
+    self: ptr ITypeNameBuilder, pszStringRepresentation: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ToString(self, pszStringRepresentation)
+
+proc Clear*(self: ptr ITypeNameBuilder): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clear(self)
+
+proc ParseTypeName*(
+    self: ptr ITypeNameFactory,
+    szName: LPCWSTR,
+    pError: ptr DWORD,
+    ppTypeName: ptr ptr ITypeName,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseTypeName(self, szName, pError, ppTypeName)
+
+proc GetTypeNameBuilder*(
+    self: ptr ITypeNameFactory, ppTypeBuilder: ptr ptr ITypeNameBuilder
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeNameBuilder(self, ppTypeBuilder)
+
+proc DoCallback*(
+    self: ptr IApartmentCallback, pFunc: SIZE_T, pData: SIZE_T
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoCallback(self, pFunc, pData)
+
+proc GetSerializedBuffer*(
+    self: ptr IManagedObject, pBSTR: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSerializedBuffer(self, pBSTR)
+
+proc GetObjectIdentity*(
+    self: ptr IManagedObject,
+    pBSTRGUID: ptr BSTR,
+    AppDomainID: ptr int32,
+    pCCW: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObjectIdentity(self, pBSTRGUID, AppDomainID, pCCW)
+
+proc Autodone*(self: ptr ICatalogServices): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Autodone(self)
+
+proc NotAutodone*(self: ptr ICatalogServices): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NotAutodone(self)
+
+proc Capture*(
+    self: ptr IHostSecurityContext, ppClonedContext: ptr ptr IHostSecurityContext
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Capture(self, ppClonedContext)
+
+proc ImpersonateLoggedOnUser*(
+    self: ptr IHostSecurityManager, hToken: HANDLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ImpersonateLoggedOnUser(self, hToken)
+
+proc RevertToSelf*(self: ptr IHostSecurityManager): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RevertToSelf(self)
+
+proc OpenThreadToken*(
+    self: ptr IHostSecurityManager,
+    dwDesiredAccess: DWORD,
+    bOpenAsSelf: BOOL,
+    phThreadToken: ptr HANDLE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OpenThreadToken(self, dwDesiredAccess, bOpenAsSelf, phThreadToken)
+
+proc SetThreadToken*(
+    self: ptr IHostSecurityManager, hToken: HANDLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetThreadToken(self, hToken)
+
+proc GetSecurityContext*(
+    self: ptr IHostSecurityManager,
+    eContextType: EContextType,
+    ppSecurityContext: ptr ptr IHostSecurityContext,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSecurityContext(self, eContextType, ppSecurityContext)
+
+proc SetSecurityContext*(
+    self: ptr IHostSecurityManager,
+    eContextType: EContextType,
+    pSecurityContext: ptr IHostSecurityContext,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSecurityContext(self, eContextType, pSecurityContext)
+
+proc GetCurrentAllocated*(
+    self: ptr ICLRAppDomainResourceMonitor,
+    dwAppDomainId: DWORD,
+    pBytesAllocated: ptr ULONGLONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentAllocated(self, dwAppDomainId, pBytesAllocated)
+
+proc GetCurrentSurvived*(
+    self: ptr ICLRAppDomainResourceMonitor,
+    dwAppDomainId: DWORD,
+    pAppDomainBytesSurvived: ptr ULONGLONG,
+    pTotalBytesSurvived: ptr ULONGLONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentSurvived(
+      self, dwAppDomainId, pAppDomainBytesSurvived, pTotalBytesSurvived
+    )
+
+proc GetCurrentCpuTime*(
+    self: ptr ICLRAppDomainResourceMonitor,
+    dwAppDomainId: DWORD,
+    pMilliseconds: ptr ULONGLONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentCpuTime(self, dwAppDomainId, pMilliseconds)
+
+proc GetRuntime*(
+    self: ptr ICLRMetaHost, pwzVersion: LPCWSTR, riid: REFIID, ppRuntime: ptr LPVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRuntime(self, pwzVersion, riid, ppRuntime)
+
+proc GetVersionFromFile*(
+    self: ptr ICLRMetaHost,
+    pwzFilePath: LPCWSTR,
+    pwzBuffer: LPWSTR,
+    pcchBuffer: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetVersionFromFile(self, pwzFilePath, pwzBuffer, pcchBuffer)
+
+proc EnumerateInstalledRuntimes*(
+    self: ptr ICLRMetaHost, ppEnumerator: ptr ptr IEnumUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumerateInstalledRuntimes(self, ppEnumerator)
+
+proc EnumerateLoadedRuntimes*(
+    self: ptr ICLRMetaHost, hndProcess: HANDLE, ppEnumerator: ptr ptr IEnumUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumerateLoadedRuntimes(self, hndProcess, ppEnumerator)
+
+proc RequestRuntimeLoadedNotification*(
+    self: ptr ICLRMetaHost, pCallbackFunction: RuntimeLoadedCallbackFnPtr
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RequestRuntimeLoadedNotification(self, pCallbackFunction)
+
+proc QueryLegacyV2RuntimeBinding*(
+    self: ptr ICLRMetaHost, riid: REFIID, ppUnk: ptr LPVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryLegacyV2RuntimeBinding(self, riid, ppUnk)
+
+proc ExitProcess*(
+    self: ptr ICLRMetaHost, iExitCode: INT32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExitProcess(self, iExitCode)
+
+proc GetRequestedRuntime*(
+    self: ptr ICLRMetaHostPolicy,
+    dwPolicyFlags: METAHOST_POLICY_FLAGS,
+    pwzBinary: LPCWSTR,
+    pCfgStream: ptr IStream,
+    pwzVersion: LPWSTR,
+    pcchVersion: ptr DWORD,
+    pwzImageVersion: LPWSTR,
+    pcchImageVersion: ptr DWORD,
+    pdwConfigFlags: ptr DWORD,
+    riid: REFIID,
+    ppRuntime: ptr LPVOID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRequestedRuntime(
+      self, dwPolicyFlags, pwzBinary, pCfgStream, pwzVersion, pcchVersion,
+      pwzImageVersion, pcchImageVersion, pdwConfigFlags, riid, ppRuntime,
+    )
+
+proc AttachProfiler*(
+    self: ptr ICLRProfiling,
+    dwProfileeProcessID: DWORD,
+    dwMillisecondsMax: DWORD,
+    pClsidProfiler: ptr CLSID,
+    wszProfilerPath: LPCWSTR,
+    pvClientData: pointer,
+    cbClientData: UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AttachProfiler(
+      self, dwProfileeProcessID, dwMillisecondsMax, pClsidProfiler, wszProfilerPath,
+      pvClientData, cbClientData,
+    )
+
+proc ProvideLibrary*(
+    self: ptr ICLRDebuggingLibraryProvider,
+    pwszFileName: ptr WCHAR,
+    dwTimestamp: DWORD,
+    dwSizeOfImage: DWORD,
+    phModule: ptr HMODULE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ProvideLibrary(self, pwszFileName, dwTimestamp, dwSizeOfImage, phModule)
+
+proc OpenVirtualProcess*(
+    self: ptr ICLRDebugging,
+    moduleBaseAddress: ULONG64,
+    pDataTarget: ptr IUnknown,
+    pLibraryProvider: ptr ICLRDebuggingLibraryProvider,
+    pMaxDebuggerSupportedVersion: ptr CLR_DEBUGGING_VERSION,
+    riidProcess: REFIID,
+    ppProcess: ptr ptr IUnknown,
+    pVersion: ptr CLR_DEBUGGING_VERSION,
+    pdwFlags: ptr CLR_DEBUGGING_PROCESS_FLAGS,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OpenVirtualProcess(
+      self, moduleBaseAddress, pDataTarget, pLibraryProvider,
+      pMaxDebuggerSupportedVersion, riidProcess, ppProcess, pVersion, pdwFlags,
+    )
+
+proc CanUnloadNow*(
+    self: ptr ICLRDebugging, hModule: HMODULE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CanUnloadNow(self, hModule)
+
+proc GetVersionString*(
+    self: ptr ICLRRuntimeInfo, pwzBuffer: LPWSTR, pcchBuffer: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetVersionString(self, pwzBuffer, pcchBuffer)
+
+proc GetRuntimeDirectory*(
+    self: ptr ICLRRuntimeInfo, pwzBuffer: LPWSTR, pcchBuffer: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRuntimeDirectory(self, pwzBuffer, pcchBuffer)
+
+proc IsLoaded*(
+    self: ptr ICLRRuntimeInfo, hndProcess: HANDLE, pbLoaded: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsLoaded(self, hndProcess, pbLoaded)
+
+proc LoadErrorString*(
+    self: ptr ICLRRuntimeInfo,
+    iResourceID: UINT,
+    pwzBuffer: LPWSTR,
+    pcchBuffer: ptr DWORD,
+    iLocaleID: LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LoadErrorString(self, iResourceID, pwzBuffer, pcchBuffer, iLocaleID)
+
+proc LoadLibrary*(
+    self: ptr ICLRRuntimeInfo, pwzDllName: LPCWSTR, phndModule: ptr HMODULE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LoadLibrary(self, pwzDllName, phndModule)
+
+proc GetProcAddress*(
+    self: ptr ICLRRuntimeInfo, pszProcName: LPCSTR, ppProc: ptr LPVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProcAddress(self, pszProcName, ppProc)
+
+proc GetInterface*(
+    self: ptr ICLRRuntimeInfo, rclsid: REFCLSID, riid: REFIID, ppUnk: ptr LPVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInterface(self, rclsid, riid, ppUnk)
+
+proc IsLoadable*(
+    self: ptr ICLRRuntimeInfo, pbLoadable: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsLoadable(self, pbLoadable)
+
+proc SetDefaultStartupFlags*(
+    self: ptr ICLRRuntimeInfo, dwStartupFlags: DWORD, pwzHostConfigFile: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDefaultStartupFlags(self, dwStartupFlags, pwzHostConfigFile)
+
+proc GetDefaultStartupFlags*(
+    self: ptr ICLRRuntimeInfo,
+    pdwStartupFlags: ptr DWORD,
+    pwzHostConfigFile: LPWSTR,
+    pcchHostConfigFile: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultStartupFlags(
+      self, pdwStartupFlags, pwzHostConfigFile, pcchHostConfigFile
+    )
+
+proc BindAsLegacyV2Runtime*(self: ptr ICLRRuntimeInfo): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BindAsLegacyV2Runtime(self)
+
+proc IsStarted*(
+    self: ptr ICLRRuntimeInfo, pbStarted: ptr BOOL, pdwStartupFlags: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsStarted(self, pbStarted, pdwStartupFlags)
+
+proc GetHashFromAssemblyFile*(
+    self: ptr ICLRStrongName,
+    pszFilePath: LPCSTR,
+    piHashAlg: ptr int32,
+    pbHash: ptr BYTE,
+    cchHash: DWORD,
+    pchHash: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHashFromAssemblyFile(
+      self, pszFilePath, piHashAlg, pbHash, cchHash, pchHash
+    )
+
+proc GetHashFromAssemblyFileW*(
+    self: ptr ICLRStrongName,
+    pwzFilePath: LPCWSTR,
+    piHashAlg: ptr int32,
+    pbHash: ptr BYTE,
+    cchHash: DWORD,
+    pchHash: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHashFromAssemblyFileW(
+      self, pwzFilePath, piHashAlg, pbHash, cchHash, pchHash
+    )
+
+proc GetHashFromBlob*(
+    self: ptr ICLRStrongName,
+    pbBlob: ptr BYTE,
+    cchBlob: DWORD,
+    piHashAlg: ptr int32,
+    pbHash: ptr BYTE,
+    cchHash: DWORD,
+    pchHash: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHashFromBlob(
+      self, pbBlob, cchBlob, piHashAlg, pbHash, cchHash, pchHash
+    )
+
+proc GetHashFromFile*(
+    self: ptr ICLRStrongName,
+    pszFilePath: LPCSTR,
+    piHashAlg: ptr int32,
+    pbHash: ptr BYTE,
+    cchHash: DWORD,
+    pchHash: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHashFromFile(self, pszFilePath, piHashAlg, pbHash, cchHash, pchHash)
+
+proc GetHashFromFileW*(
+    self: ptr ICLRStrongName,
+    pwzFilePath: LPCWSTR,
+    piHashAlg: ptr int32,
+    pbHash: ptr BYTE,
+    cchHash: DWORD,
+    pchHash: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHashFromFileW(self, pwzFilePath, piHashAlg, pbHash, cchHash, pchHash)
+
+proc GetHashFromHandle*(
+    self: ptr ICLRStrongName,
+    hFile: HANDLE,
+    piHashAlg: ptr int32,
+    pbHash: ptr BYTE,
+    cchHash: DWORD,
+    pchHash: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHashFromHandle(self, hFile, piHashAlg, pbHash, cchHash, pchHash)
+
+proc StrongNameCompareAssemblies*(
+    self: ptr ICLRStrongName,
+    pwzAssembly1: LPCWSTR,
+    pwzAssembly2: LPCWSTR,
+    pdwResult: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameCompareAssemblies(self, pwzAssembly1, pwzAssembly2, pdwResult)
+
+proc StrongNameFreeBuffer*(
+    self: ptr ICLRStrongName, pbMemory: ptr BYTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameFreeBuffer(self, pbMemory)
+
+proc StrongNameGetBlob*(
+    self: ptr ICLRStrongName, pwzFilePath: LPCWSTR, pbBlob: ptr BYTE, pcbBlob: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameGetBlob(self, pwzFilePath, pbBlob, pcbBlob)
+
+proc StrongNameGetBlobFromImage*(
+    self: ptr ICLRStrongName,
+    pbBase: ptr BYTE,
+    dwLength: DWORD,
+    pbBlob: ptr BYTE,
+    pcbBlob: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameGetBlobFromImage(self, pbBase, dwLength, pbBlob, pcbBlob)
+
+proc StrongNameGetPublicKey*(
+    self: ptr ICLRStrongName,
+    pwzKeyContainer: LPCWSTR,
+    pbKeyBlob: ptr BYTE,
+    cbKeyBlob: ULONG,
+    ppbPublicKeyBlob: ptr ptr BYTE,
+    pcbPublicKeyBlob: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameGetPublicKey(
+      self, pwzKeyContainer, pbKeyBlob, cbKeyBlob, ppbPublicKeyBlob, pcbPublicKeyBlob
+    )
+
+proc StrongNameHashSize*(
+    self: ptr ICLRStrongName, ulHashAlg: ULONG, pcbSize: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameHashSize(self, ulHashAlg, pcbSize)
+
+proc StrongNameKeyDelete*(
+    self: ptr ICLRStrongName, pwzKeyContainer: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameKeyDelete(self, pwzKeyContainer)
+
+proc StrongNameKeyGen*(
+    self: ptr ICLRStrongName,
+    pwzKeyContainer: LPCWSTR,
+    dwFlags: DWORD,
+    ppbKeyBlob: ptr ptr BYTE,
+    pcbKeyBlob: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameKeyGen(self, pwzKeyContainer, dwFlags, ppbKeyBlob, pcbKeyBlob)
+
+proc StrongNameKeyGenEx*(
+    self: ptr ICLRStrongName,
+    pwzKeyContainer: LPCWSTR,
+    dwFlags: DWORD,
+    dwKeySize: DWORD,
+    ppbKeyBlob: ptr ptr BYTE,
+    pcbKeyBlob: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameKeyGenEx(
+      self, pwzKeyContainer, dwFlags, dwKeySize, ppbKeyBlob, pcbKeyBlob
+    )
+
+proc StrongNameKeyInstall*(
+    self: ptr ICLRStrongName,
+    pwzKeyContainer: LPCWSTR,
+    pbKeyBlob: ptr BYTE,
+    cbKeyBlob: ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameKeyInstall(self, pwzKeyContainer, pbKeyBlob, cbKeyBlob)
+
+proc StrongNameSignatureGeneration*(
+    self: ptr ICLRStrongName,
+    pwzFilePath: LPCWSTR,
+    pwzKeyContainer: LPCWSTR,
+    pbKeyBlob: ptr BYTE,
+    cbKeyBlob: ULONG,
+    ppbSignatureBlob: ptr ptr BYTE,
+    pcbSignatureBlob: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameSignatureGeneration(
+      self, pwzFilePath, pwzKeyContainer, pbKeyBlob, cbKeyBlob, ppbSignatureBlob,
+      pcbSignatureBlob,
+    )
+
+proc StrongNameSignatureGenerationEx*(
+    self: ptr ICLRStrongName,
+    wszFilePath: LPCWSTR,
+    wszKeyContainer: LPCWSTR,
+    pbKeyBlob: ptr BYTE,
+    cbKeyBlob: ULONG,
+    ppbSignatureBlob: ptr ptr BYTE,
+    pcbSignatureBlob: ptr ULONG,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameSignatureGenerationEx(
+      self, wszFilePath, wszKeyContainer, pbKeyBlob, cbKeyBlob, ppbSignatureBlob,
+      pcbSignatureBlob, dwFlags,
+    )
+
+proc StrongNameSignatureSize*(
+    self: ptr ICLRStrongName,
+    pbPublicKeyBlob: ptr BYTE,
+    cbPublicKeyBlob: ULONG,
+    pcbSize: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameSignatureSize(self, pbPublicKeyBlob, cbPublicKeyBlob, pcbSize)
+
+proc StrongNameSignatureVerification*(
+    self: ptr ICLRStrongName,
+    pwzFilePath: LPCWSTR,
+    dwInFlags: DWORD,
+    pdwOutFlags: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameSignatureVerification(
+      self, pwzFilePath, dwInFlags, pdwOutFlags
+    )
+
+proc StrongNameSignatureVerificationEx*(
+    self: ptr ICLRStrongName,
+    pwzFilePath: LPCWSTR,
+    fForceVerification: BOOLEAN,
+    pfWasVerified: ptr BOOLEAN,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameSignatureVerificationEx(
+      self, pwzFilePath, fForceVerification, pfWasVerified
+    )
+
+proc StrongNameSignatureVerificationFromImage*(
+    self: ptr ICLRStrongName,
+    pbBase: ptr BYTE,
+    dwLength: DWORD,
+    dwInFlags: DWORD,
+    pdwOutFlags: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameSignatureVerificationFromImage(
+      self, pbBase, dwLength, dwInFlags, pdwOutFlags
+    )
+
+proc StrongNameTokenFromAssembly*(
+    self: ptr ICLRStrongName,
+    pwzFilePath: LPCWSTR,
+    ppbStrongNameToken: ptr ptr BYTE,
+    pcbStrongNameToken: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameTokenFromAssembly(
+      self, pwzFilePath, ppbStrongNameToken, pcbStrongNameToken
+    )
+
+proc StrongNameTokenFromAssemblyEx*(
+    self: ptr ICLRStrongName,
+    pwzFilePath: LPCWSTR,
+    ppbStrongNameToken: ptr ptr BYTE,
+    pcbStrongNameToken: ptr ULONG,
+    ppbPublicKeyBlob: ptr ptr BYTE,
+    pcbPublicKeyBlob: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameTokenFromAssemblyEx(
+      self, pwzFilePath, ppbStrongNameToken, pcbStrongNameToken, ppbPublicKeyBlob,
+      pcbPublicKeyBlob,
+    )
+
+proc StrongNameTokenFromPublicKey*(
+    self: ptr ICLRStrongName,
+    pbPublicKeyBlob: ptr BYTE,
+    cbPublicKeyBlob: ULONG,
+    ppbStrongNameToken: ptr ptr BYTE,
+    pcbStrongNameToken: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameTokenFromPublicKey(
+      self, pbPublicKeyBlob, cbPublicKeyBlob, ppbStrongNameToken, pcbStrongNameToken
+    )
+
+proc StrongNameGetPublicKeyEx*(
+    self: ptr ICLRStrongName2,
+    pwzKeyContainer: LPCWSTR,
+    pbKeyBlob: ptr BYTE,
+    cbKeyBlob: ULONG,
+    ppbPublicKeyBlob: ptr ptr BYTE,
+    pcbPublicKeyBlob: ptr ULONG,
+    uHashAlgId: ULONG,
+    uReserved: ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameGetPublicKeyEx(
+      self, pwzKeyContainer, pbKeyBlob, cbKeyBlob, ppbPublicKeyBlob, pcbPublicKeyBlob,
+      uHashAlgId, uReserved,
+    )
+
+proc StrongNameSignatureVerificationEx2*(
+    self: ptr ICLRStrongName2,
+    wszFilePath: LPCWSTR,
+    fForceVerification: BOOLEAN,
+    pbEcmaPublicKey: ptr BYTE,
+    cbEcmaPublicKey: DWORD,
+    pfWasVerified: ptr BOOLEAN,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameSignatureVerificationEx2(
+      self, wszFilePath, fForceVerification, pbEcmaPublicKey, cbEcmaPublicKey,
+      pfWasVerified,
+    )
+
+proc StrongNameDigestGenerate*(
+    self: ptr ICLRStrongName3,
+    wszFilePath: LPCWSTR,
+    ppbDigestBlob: ptr ptr BYTE,
+    pcbDigestBlob: ptr ULONG,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameDigestGenerate(
+      self, wszFilePath, ppbDigestBlob, pcbDigestBlob, dwFlags
+    )
+
+proc StrongNameDigestSign*(
+    self: ptr ICLRStrongName3,
+    wszKeyContainer: LPCWSTR,
+    pbKeyBlob: ptr BYTE,
+    cbKeyBlob: ULONG,
+    pbDigestBlob: ptr BYTE,
+    cbDigestBlob: ULONG,
+    hashAlgId: DWORD,
+    ppbSignatureBlob: ptr ptr BYTE,
+    pcbSignatureBlob: ptr ULONG,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameDigestSign(
+      self, wszKeyContainer, pbKeyBlob, cbKeyBlob, pbDigestBlob, cbDigestBlob,
+      hashAlgId, ppbSignatureBlob, pcbSignatureBlob, dwFlags,
+    )
+
+proc StrongNameDigestEmbed*(
+    self: ptr ICLRStrongName3,
+    wszFilePath: LPCWSTR,
+    pbSignatureBlob: ptr BYTE,
+    cbSignatureBlob: ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrongNameDigestEmbed(
+      self, wszFilePath, pbSignatureBlob, cbSignatureBlob
+    )
+
+proc get_ToString*(self: ptr IObject, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ToString(self, pRetVal)
+
+proc Equals*(
+    self: ptr IObject, obj: VARIANT, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Equals(self, obj, pRetVal)
+
+proc GetHashCode*(self: ptr IObject, pRetVal: ptr int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHashCode(self, pRetVal)
+
+proc GetType*(self: ptr IObject, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetType(self, pRetVal)
+
+proc GetTypeInfoCount*(
+    self: ptr IType, pcTInfo: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeInfoCount(self, pcTInfo)
+
+proc GetTypeInfo*(
+    self: ptr IType, iTInfo: int32, lcid: int32, ppTInfo: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeInfo(self, iTInfo, lcid, ppTInfo)
+
+proc GetIDsOfNames*(
+    self: ptr IType,
+    riid: ptr GUID,
+    rgszNames: int32,
+    cNames: int32,
+    lcid: int32,
+    rgDispId: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIDsOfNames(self, riid, rgszNames, cNames, lcid, rgDispId)
+
+proc Invoke*(
+    self: ptr IType,
+    dispIdMember: int32,
+    riid: ptr GUID,
+    lcid: int32,
+    wFlags: int16,
+    pDispParams: int32,
+    pVarResult: int32,
+    pExcepInfo: int32,
+    puArgErr: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Invoke(
+      self, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo,
+      puArgErr,
+    )
+
+proc get_ToString*(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ToString(self, pRetVal)
+
+proc Equals*(
+    self: ptr IType, other: VARIANT, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Equals(self, other, pRetVal)
+
+proc GetHashCode*(self: ptr IType, pRetVal: ptr int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHashCode(self, pRetVal)
+
+proc GetType*(self: ptr IType, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetType(self, pRetVal)
+
+proc get_MemberType*(
+    self: ptr IType, pRetVal: ptr MemberTypes
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_MemberType(self, pRetVal)
+
+proc get_name*(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, pRetVal)
+
+proc get_DeclaringType*(
+    self: ptr IType, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DeclaringType(self, pRetVal)
+
+proc get_ReflectedType*(
+    self: ptr IType, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ReflectedType(self, pRetVal)
+
+proc GetCustomAttributes*(
+    self: ptr IType,
+    attributeType: ptr IType,
+    inherit: VARIANT_BOOL,
+    pRetVal: ptr ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCustomAttributes(self, attributeType, inherit, pRetVal)
+
+proc GetCustomAttributes_2*(
+    self: ptr IType, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCustomAttributes_2(self, inherit, pRetVal)
+
+proc IsDefined*(
+    self: ptr IType,
+    attributeType: ptr IType,
+    inherit: VARIANT_BOOL,
+    pRetVal: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDefined(self, attributeType, inherit, pRetVal)
+
+proc get_Guid*(self: ptr IType, pRetVal: ptr GUID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Guid(self, pRetVal)
+
+proc get_Module*(self: ptr IType, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Module(self, pRetVal)
+
+proc getIAssembly*(
+    self: ptr IType, pRetVal: ptr ptr IAssembly
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getIAssembly(self, pRetVal)
+
+proc get_TypeHandle*(self: ptr IType, pRetVal: POBJECT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TypeHandle(self, pRetVal)
+
+proc get_FullName*(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_FullName(self, pRetVal)
+
+proc get_Namespace*(self: ptr IType, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Namespace(self, pRetVal)
+
+proc get_AssemblyQualifiedName*(
+    self: ptr IType, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_AssemblyQualifiedName(self, pRetVal)
+
+proc GetArrayRank*(self: ptr IType, pRetVal: ptr int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetArrayRank(self, pRetVal)
+
+proc get_BaseType*(
+    self: ptr IType, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_BaseType(self, pRetVal)
+
+proc GetConstructors*(
+    self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConstructors(self, bindingAttr, pRetVal)
+
+proc GetInterface*(
+    self: ptr IType, name: BSTR, ignoreCase: VARIANT_BOOL, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInterface(self, name, ignoreCase, pRetVal)
+
+proc GetInterfaces*(
+    self: ptr IType, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInterfaces(self, pRetVal)
+
+proc FindInterfaces*(
+    self: ptr IType,
+    filter: POBJECT,
+    filterCriteria: VARIANT,
+    pRetVal: ptr ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindInterfaces(self, filter, filterCriteria, pRetVal)
+
+proc GetEvent*(
+    self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEvent(self, name, bindingAttr, pRetVal)
+
+proc GetEvents*(
+    self: ptr IType, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEvents(self, pRetVal)
+
+proc GetEvents_2*(
+    self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEvents_2(self, bindingAttr, pRetVal)
+
+proc GetNestedTypes*(
+    self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNestedTypes(self, bindingAttr, pRetVal)
+
+proc GetNestedType*(
+    self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNestedType(self, name, bindingAttr, pRetVal)
+
+proc GetMember*(
+    self: ptr IType,
+    name: BSTR,
+    Type: MemberTypes,
+    bindingAttr: BindingFlags,
+    pRetVal: ptr ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMember(self, name, Type, bindingAttr, pRetVal)
+
+proc GetDefaultMembers*(
+    self: ptr IType, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultMembers(self, pRetVal)
+
+proc FindMembers*(
+    self: ptr IType,
+    MemberType: MemberTypes,
+    bindingAttr: BindingFlags,
+    filter: POBJECT,
+    filterCriteria: VARIANT,
+    pRetVal: ptr ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindMembers(
+      self, MemberType, bindingAttr, filter, filterCriteria, pRetVal
+    )
+
+proc GetElementType*(
+    self: ptr IType, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetElementType(self, pRetVal)
+
+proc IsSubclassOf*(
+    self: ptr IType, c: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsSubclassOf(self, c, pRetVal)
+
+proc IsInstanceOfType*(
+    self: ptr IType, o: VARIANT, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsInstanceOfType(self, o, pRetVal)
+
+proc IsAssignableFrom*(
+    self: ptr IType, c: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsAssignableFrom(self, c, pRetVal)
+
+proc GetInterfaceMap*(
+    self: ptr IType, interfaceType: ptr IType, pRetVal: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInterfaceMap(self, interfaceType, pRetVal)
+
+proc GetMethod*(
+    self: ptr IType,
+    name: BSTR,
+    bindingAttr: BindingFlags,
+    Binder: POBJECT,
+    types: ptr SAFEARRAY,
+    modifiers: ptr SAFEARRAY,
+    pRetVal: ptr ptr IMethodInfo,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMethod(self, name, bindingAttr, Binder, types, modifiers, pRetVal)
+
+proc GetMethod_2*(
+    self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr ptr IMethodInfo
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMethod_2(self, name, bindingAttr, pRetVal)
+
+proc GetMethods*(
+    self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMethods(self, bindingAttr, pRetVal)
+
+proc GetField*(
+    self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetField(self, name, bindingAttr, pRetVal)
+
+proc GetFields*(
+    self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFields(self, bindingAttr, pRetVal)
+
+proc GetProperty*(
+    self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty(self, name, bindingAttr, pRetVal)
+
+proc GetProperty_2*(
+    self: ptr IType,
+    name: BSTR,
+    bindingAttr: BindingFlags,
+    Binder: POBJECT,
+    returnType: ptr IType,
+    types: ptr SAFEARRAY,
+    modifiers: ptr SAFEARRAY,
+    pRetVal: ptr POBJECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty_2(
+      self, name, bindingAttr, Binder, returnType, types, modifiers, pRetVal
+    )
+
+proc GetProperties*(
+    self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperties(self, bindingAttr, pRetVal)
+
+proc GetMember_2*(
+    self: ptr IType, name: BSTR, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMember_2(self, name, bindingAttr, pRetVal)
+
+proc GetMembers*(
+    self: ptr IType, bindingAttr: BindingFlags, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMembers(self, bindingAttr, pRetVal)
+
+proc InvokeMember*(
+    self: ptr IType,
+    name: BSTR,
+    invokeAttr: BindingFlags,
+    Binder: POBJECT,
+    Target: VARIANT,
+    args: ptr SAFEARRAY,
+    modifiers: ptr SAFEARRAY,
+    culture: POBJECT,
+    namedParameters: ptr SAFEARRAY,
+    pRetVal: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvokeMember(
+      self, name, invokeAttr, Binder, Target, args, modifiers, culture, namedParameters,
+      pRetVal,
+    )
+
+proc get_UnderlyingSystemType*(
+    self: ptr IType, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_UnderlyingSystemType(self, pRetVal)
+
+proc InvokeMember_2*(
+    self: ptr IType,
+    name: BSTR,
+    invokeAttr: BindingFlags,
+    Binder: POBJECT,
+    Target: VARIANT,
+    args: ptr SAFEARRAY,
+    culture: POBJECT,
+    pRetVal: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvokeMember_2(
+      self, name, invokeAttr, Binder, Target, args, culture, pRetVal
+    )
+
+proc InvokeMember_3*(
+    self: ptr IType,
+    name: BSTR,
+    invokeAttr: BindingFlags,
+    Binder: POBJECT,
+    Target: VARIANT,
+    args: ptr SAFEARRAY,
+    pRetVal: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvokeMember_3(self, name, invokeAttr, Binder, Target, args, pRetVal)
+
+proc GetConstructor*(
+    self: ptr IType,
+    bindingAttr: BindingFlags,
+    Binder: POBJECT,
+    callConvention: CallingConventions,
+    types: ptr SAFEARRAY,
+    modifiers: ptr SAFEARRAY,
+    pRetVal: ptr POBJECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConstructor(
+      self, bindingAttr, Binder, callConvention, types, modifiers, pRetVal
+    )
+
+proc GetConstructor_2*(
+    self: ptr IType,
+    bindingAttr: BindingFlags,
+    Binder: POBJECT,
+    types: ptr SAFEARRAY,
+    modifiers: ptr SAFEARRAY,
+    pRetVal: ptr POBJECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConstructor_2(self, bindingAttr, Binder, types, modifiers, pRetVal)
+
+proc GetConstructor_3*(
+    self: ptr IType, types: ptr SAFEARRAY, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConstructor_3(self, types, pRetVal)
+
+proc GetConstructors_2*(
+    self: ptr IType, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConstructors_2(self, pRetVal)
+
+proc get_TypeInitializer*(
+    self: ptr IType, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TypeInitializer(self, pRetVal)
+
+proc GetMethod_3*(
+    self: ptr IType,
+    name: BSTR,
+    bindingAttr: BindingFlags,
+    Binder: POBJECT,
+    callConvention: CallingConventions,
+    types: ptr SAFEARRAY,
+    modifiers: ptr SAFEARRAY,
+    pRetVal: ptr ptr IMethodInfo,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMethod_3(
+      self, name, bindingAttr, Binder, callConvention, types, modifiers, pRetVal
+    )
+
+proc GetMethod_4*(
+    self: ptr IType,
+    name: BSTR,
+    types: ptr SAFEARRAY,
+    modifiers: ptr SAFEARRAY,
+    pRetVal: ptr ptr IMethodInfo,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMethod_4(self, name, types, modifiers, pRetVal)
+
+proc GetMethod_5*(
+    self: ptr IType, name: BSTR, types: ptr SAFEARRAY, pRetVal: ptr ptr IMethodInfo
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMethod_5(self, name, types, pRetVal)
+
+proc GetMethod_6*(
+    self: ptr IType, name: BSTR, pRetVal: ptr ptr IMethodInfo
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMethod_6(self, name, pRetVal)
+
+proc GetMethods_2*(
+    self: ptr IType, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMethods_2(self, pRetVal)
+
+proc GetField_2*(
+    self: ptr IType, name: BSTR, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetField_2(self, name, pRetVal)
+
+proc GetFields_2*(
+    self: ptr IType, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFields_2(self, pRetVal)
+
+proc GetInterface_2*(
+    self: ptr IType, name: BSTR, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInterface_2(self, name, pRetVal)
+
+proc GetEvent_2*(
+    self: ptr IType, name: BSTR, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEvent_2(self, name, pRetVal)
+
+proc GetProperty_3*(
+    self: ptr IType,
+    name: BSTR,
+    returnType: ptr IType,
+    types: ptr SAFEARRAY,
+    modifiers: ptr SAFEARRAY,
+    pRetVal: ptr POBJECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty_3(self, name, returnType, types, modifiers, pRetVal)
+
+proc GetProperty_4*(
+    self: ptr IType,
+    name: BSTR,
+    returnType: ptr IType,
+    types: ptr SAFEARRAY,
+    pRetVal: ptr POBJECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty_4(self, name, returnType, types, pRetVal)
+
+proc GetProperty_5*(
+    self: ptr IType, name: BSTR, types: ptr SAFEARRAY, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty_5(self, name, types, pRetVal)
+
+proc GetProperty_6*(
+    self: ptr IType, name: BSTR, returnType: ptr IType, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty_6(self, name, returnType, pRetVal)
+
+proc GetProperty_7*(
+    self: ptr IType, name: BSTR, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty_7(self, name, pRetVal)
+
+proc GetProperties_2*(
+    self: ptr IType, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperties_2(self, pRetVal)
+
+proc GetNestedTypes_2*(
+    self: ptr IType, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNestedTypes_2(self, pRetVal)
+
+proc GetNestedType_2*(
+    self: ptr IType, name: BSTR, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNestedType_2(self, name, pRetVal)
+
+proc GetMember_3*(
+    self: ptr IType, name: BSTR, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMember_3(self, name, pRetVal)
+
+proc GetMembers_2*(
+    self: ptr IType, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMembers_2(self, pRetVal)
+
+proc get_Attributes*(
+    self: ptr IType, pRetVal: ptr TypeAttributes
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Attributes(self, pRetVal)
+
+proc get_IsNotPublic*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsNotPublic(self, pRetVal)
+
+proc get_IsPublic*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsPublic(self, pRetVal)
+
+proc get_IsNestedPublic*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsNestedPublic(self, pRetVal)
+
+proc get_IsNestedPrivate*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsNestedPrivate(self, pRetVal)
+
+proc get_IsNestedFamily*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsNestedFamily(self, pRetVal)
+
+proc get_IsNestedAssembly*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsNestedAssembly(self, pRetVal)
+
+proc get_IsNestedFamANDAssem*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsNestedFamANDAssem(self, pRetVal)
+
+proc get_IsNestedFamORAssem*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsNestedFamORAssem(self, pRetVal)
+
+proc get_IsAutoLayout*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsAutoLayout(self, pRetVal)
+
+proc get_IsLayoutSequential*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsLayoutSequential(self, pRetVal)
+
+proc get_IsExplicitLayout*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsExplicitLayout(self, pRetVal)
+
+proc get_IsClass*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsClass(self, pRetVal)
+
+proc get_IsInterface*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsInterface(self, pRetVal)
+
+proc get_IsValueType*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsValueType(self, pRetVal)
+
+proc get_IsAbstract*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsAbstract(self, pRetVal)
+
+proc get_IsSealed*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsSealed(self, pRetVal)
+
+proc get_IsEnum*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsEnum(self, pRetVal)
+
+proc get_IsSpecialName*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsSpecialName(self, pRetVal)
+
+proc get_IsImport*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsImport(self, pRetVal)
+
+proc get_IsSerializable*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsSerializable(self, pRetVal)
+
+proc get_IsAnsiClass*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsAnsiClass(self, pRetVal)
+
+proc get_IsUnicodeClass*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsUnicodeClass(self, pRetVal)
+
+proc get_IsAutoClass*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsAutoClass(self, pRetVal)
+
+proc get_IsArray*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsArray(self, pRetVal)
+
+proc get_IsByRef*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsByRef(self, pRetVal)
+
+proc get_IsPointer*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsPointer(self, pRetVal)
+
+proc get_IsPrimitive*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsPrimitive(self, pRetVal)
+
+proc get_IsCOMObject*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsCOMObject(self, pRetVal)
+
+proc get_HasElementType*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HasElementType(self, pRetVal)
+
+proc get_IsContextful*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsContextful(self, pRetVal)
+
+proc get_IsMarshalByRef*(
+    self: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsMarshalByRef(self, pRetVal)
+
+proc Equals_2*(
+    self: ptr IType, o: ptr IType, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Equals_2(self, o, pRetVal)
+
+proc get_ApplicationBase*(
+    self: ptr IAppDomainSetup, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ApplicationBase(self, pRetVal)
+
+proc put_ApplicationBase*(
+    self: ptr IAppDomainSetup, pRetVal: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ApplicationBase(self, pRetVal)
+
+proc get_ApplicationName*(
+    self: ptr IAppDomainSetup, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ApplicationName(self, pRetVal)
+
+proc put_ApplicationName*(
+    self: ptr IAppDomainSetup, pRetVal: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ApplicationName(self, pRetVal)
+
+proc get_CachePath*(
+    self: ptr IAppDomainSetup, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachePath(self, pRetVal)
+
+proc put_CachePath*(
+    self: ptr IAppDomainSetup, pRetVal: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_CachePath(self, pRetVal)
+
+proc get_ConfigurationFile*(
+    self: ptr IAppDomainSetup, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ConfigurationFile(self, pRetVal)
+
+proc put_ConfigurationFile*(
+    self: ptr IAppDomainSetup, pRetVal: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ConfigurationFile(self, pRetVal)
+
+proc get_DynamicBase*(
+    self: ptr IAppDomainSetup, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DynamicBase(self, pRetVal)
+
+proc put_DynamicBase*(
+    self: ptr IAppDomainSetup, pRetVal: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_DynamicBase(self, pRetVal)
+
+proc get_LicenseFile*(
+    self: ptr IAppDomainSetup, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_LicenseFile(self, pRetVal)
+
+proc put_LicenseFile*(
+    self: ptr IAppDomainSetup, pRetVal: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_LicenseFile(self, pRetVal)
+
+proc get_PrivateBinPath*(
+    self: ptr IAppDomainSetup, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_PrivateBinPath(self, pRetVal)
+
+proc put_PrivateBinPath*(
+    self: ptr IAppDomainSetup, pRetVal: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_PrivateBinPath(self, pRetVal)
+
+proc get_PrivateBinPathProbe*(
+    self: ptr IAppDomainSetup, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_PrivateBinPathProbe(self, pRetVal)
+
+proc put_PrivateBinPathProbe*(
+    self: ptr IAppDomainSetup, pRetVal: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_PrivateBinPathProbe(self, pRetVal)
+
+proc get_ShadowCopyDirectories*(
+    self: ptr IAppDomainSetup, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ShadowCopyDirectories(self, pRetVal)
+
+proc put_ShadowCopyDirectories*(
+    self: ptr IAppDomainSetup, pRetVal: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ShadowCopyDirectories(self, pRetVal)
+
+proc get_ShadowCopyFiles*(
+    self: ptr IAppDomainSetup, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ShadowCopyFiles(self, pRetVal)
+
+proc put_ShadowCopyFiles*(
+    self: ptr IAppDomainSetup, pRetVal: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ShadowCopyFiles(self, pRetVal)
+
+proc get_ToString*(
+    self: ptr ObjectHandle, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ToString(self, pRetVal)
+
+proc Equals*(
+    self: ptr ObjectHandle, obj: VARIANT, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Equals(self, obj, pRetVal)
+
+proc GetHashCode*(
+    self: ptr ObjectHandle, pRetVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHashCode(self, pRetVal)
+
+proc GetType*(
+    self: ptr ObjectHandle, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetType(self, pRetVal)
+
+proc GetLifetimeService*(
+    self: ptr ObjectHandle, pRetVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLifetimeService(self, pRetVal)
+
+proc InitializeLifetimeService*(
+    self: ptr ObjectHandle, pRetVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeLifetimeService(self, pRetVal)
+
+proc CreateObjRef*(
+    self: ptr ObjectHandle, requestedType: ptr IType, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateObjRef(self, requestedType, pRetVal)
+
+proc Unwrap*(self: ptr ObjectHandle, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unwrap(self, pRetVal)
+
+proc get_ToString*(self: ptr AppDomain, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ToString(self, pRetVal)
+
+proc Equals*(
+    self: ptr AppDomain, other: VARIANT, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Equals(self, other, pRetVal)
+
+proc GetHashCode*(self: ptr AppDomain, pRetVal: ptr int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHashCode(self, pRetVal)
+
+proc GetType*(self: ptr AppDomain, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetType(self, pRetVal)
+
+proc InitializeLifetimeService*(
+    self: ptr AppDomain, pRetVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeLifetimeService(self, pRetVal)
+
+proc GetLifetimeService*(
+    self: ptr AppDomain, pRetVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLifetimeService(self, pRetVal)
+
+proc get_Evidence*(
+    self: ptr AppDomain, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Evidence(self, pRetVal)
+
+proc add_DomainUnload*(
+    self: ptr AppDomain, value: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.add_DomainUnload(self, value)
+
+proc remove_DomainUnload*(
+    self: ptr AppDomain, value: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.remove_DomainUnload(self, value)
+
+proc add_AssemblyLoad*(
+    self: ptr AppDomain, value: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.add_AssemblyLoad(self, value)
+
+proc remove_AssemblyLoad*(
+    self: ptr AppDomain, value: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.remove_AssemblyLoad(self, value)
+
+proc add_ProcessExit*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.add_ProcessExit(self, value)
+
+proc remove_ProcessExit*(
+    self: ptr AppDomain, value: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.remove_ProcessExit(self, value)
+
+proc add_TypeResolve*(self: ptr AppDomain, value: POBJECT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.add_TypeResolve(self, value)
+
+proc remove_TypeResolve*(
+    self: ptr AppDomain, value: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.remove_TypeResolve(self, value)
+
+proc add_ResourceResolve*(
+    self: ptr AppDomain, value: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.add_ResourceResolve(self, value)
+
+proc remove_ResourceResolve*(
+    self: ptr AppDomain, value: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.remove_ResourceResolve(self, value)
+
+proc add_AssemblyResolve*(
+    self: ptr AppDomain, value: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.add_AssemblyResolve(self, value)
+
+proc remove_AssemblyResolve*(
+    self: ptr AppDomain, value: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.remove_AssemblyResolve(self, value)
+
+proc add_UnhandledException*(
+    self: ptr AppDomain, value: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.add_UnhandledException(self, value)
+
+proc remove_UnhandledException*(
+    self: ptr AppDomain, value: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.remove_UnhandledException(self, value)
+
+proc DefineDynamicAssembly*(
+    self: ptr AppDomain,
+    name: POBJECT,
+    access: AssemblyBuilderAccess,
+    pRetVal: ptr ptr AssemblyBuilder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DefineDynamicAssembly(self, name, access, pRetVal)
+
+proc DefineDynamicAssembly_2*(
+    self: ptr AppDomain,
+    name: POBJECT,
+    access: AssemblyBuilderAccess,
+    dir: BSTR,
+    pRetVal: ptr ptr AssemblyBuilder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DefineDynamicAssembly_2(self, name, access, dir, pRetVal)
+
+proc DefineDynamicAssembly_3*(
+    self: ptr AppDomain,
+    name: POBJECT,
+    access: AssemblyBuilderAccess,
+    Evidence: POBJECT,
+    pRetVal: ptr ptr AssemblyBuilder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DefineDynamicAssembly_3(self, name, access, Evidence, pRetVal)
+
+proc DefineDynamicAssembly_4*(
+    self: ptr AppDomain,
+    name: POBJECT,
+    access: AssemblyBuilderAccess,
+    requiredPermissions: POBJECT,
+    optionalPermissions: POBJECT,
+    refusedPermissions: POBJECT,
+    pRetVal: ptr ptr AssemblyBuilder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DefineDynamicAssembly_4(
+      self, name, access, requiredPermissions, optionalPermissions, refusedPermissions,
+      pRetVal,
+    )
+
+proc DefineDynamicAssembly_5*(
+    self: ptr AppDomain,
+    name: POBJECT,
+    access: AssemblyBuilderAccess,
+    dir: BSTR,
+    Evidence: POBJECT,
+    pRetVal: ptr ptr AssemblyBuilder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DefineDynamicAssembly_5(self, name, access, dir, Evidence, pRetVal)
+
+proc DefineDynamicAssembly_6*(
+    self: ptr AppDomain,
+    name: POBJECT,
+    access: AssemblyBuilderAccess,
+    dir: BSTR,
+    requiredPermissions: POBJECT,
+    optionalPermissions: POBJECT,
+    refusedPermissions: POBJECT,
+    pRetVal: ptr ptr AssemblyBuilder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DefineDynamicAssembly_6(
+      self, name, access, dir, requiredPermissions, optionalPermissions,
+      refusedPermissions, pRetVal,
+    )
+
+proc DefineDynamicAssembly_7*(
+    self: ptr AppDomain,
+    name: POBJECT,
+    access: AssemblyBuilderAccess,
+    Evidence: POBJECT,
+    requiredPermissions: POBJECT,
+    optionalPermissions: POBJECT,
+    refusedPermissions: POBJECT,
+    pRetVal: ptr ptr AssemblyBuilder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DefineDynamicAssembly_7(
+      self, name, access, Evidence, requiredPermissions, optionalPermissions,
+      refusedPermissions, pRetVal,
+    )
+
+proc DefineDynamicAssembly_8*(
+    self: ptr AppDomain,
+    name: POBJECT,
+    access: AssemblyBuilderAccess,
+    dir: BSTR,
+    Evidence: POBJECT,
+    requiredPermissions: POBJECT,
+    optionalPermissions: POBJECT,
+    refusedPermissions: POBJECT,
+    pRetVal: ptr ptr AssemblyBuilder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DefineDynamicAssembly_8(
+      self, name, access, dir, Evidence, requiredPermissions, optionalPermissions,
+      refusedPermissions, pRetVal,
+    )
+
+proc DefineDynamicAssembly_9*(
+    self: ptr AppDomain,
+    name: POBJECT,
+    access: AssemblyBuilderAccess,
+    dir: BSTR,
+    Evidence: POBJECT,
+    requiredPermissions: POBJECT,
+    optionalPermissions: POBJECT,
+    refusedPermissions: POBJECT,
+    IsSynchronized: VARIANT_BOOL,
+    pRetVal: ptr ptr AssemblyBuilder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DefineDynamicAssembly_9(
+      self, name, access, dir, Evidence, requiredPermissions, optionalPermissions,
+      refusedPermissions, IsSynchronized, pRetVal,
+    )
+
+proc CreateInstance*(
+    self: ptr AppDomain,
+    AssemblyName: BSTR,
+    typeName: BSTR,
+    pRetVal: ptr ptr ObjectHandle,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstance(self, AssemblyName, typeName, pRetVal)
+
+proc CreateInstanceFrom*(
+    self: ptr AppDomain,
+    assemblyFile: BSTR,
+    typeName: BSTR,
+    pRetVal: ptr ptr ObjectHandle,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstanceFrom(self, assemblyFile, typeName, pRetVal)
+
+proc CreateInstance_2*(
+    self: ptr AppDomain,
+    AssemblyName: BSTR,
+    typeName: BSTR,
+    activationAttributes: ptr SAFEARRAY,
+    pRetVal: ptr ptr ObjectHandle,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstance_2(
+      self, AssemblyName, typeName, activationAttributes, pRetVal
+    )
+
+proc CreateInstanceFrom_2*(
+    self: ptr AppDomain,
+    assemblyFile: BSTR,
+    typeName: BSTR,
+    activationAttributes: ptr SAFEARRAY,
+    pRetVal: ptr ptr ObjectHandle,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstanceFrom_2(
+      self, assemblyFile, typeName, activationAttributes, pRetVal
+    )
+
+proc CreateInstance_3*(
+    self: ptr AppDomain,
+    AssemblyName: BSTR,
+    typeName: BSTR,
+    ignoreCase: VARIANT_BOOL,
+    bindingAttr: BindingFlags,
+    Binder: POBJECT,
+    args: ptr SAFEARRAY,
+    culture: POBJECT,
+    activationAttributes: ptr SAFEARRAY,
+    securityAttributes: POBJECT,
+    pRetVal: ptr ptr ObjectHandle,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstance_3(
+      self, AssemblyName, typeName, ignoreCase, bindingAttr, Binder, args, culture,
+      activationAttributes, securityAttributes, pRetVal,
+    )
+
+proc CreateInstanceFrom_3*(
+    self: ptr AppDomain,
+    assemblyFile: BSTR,
+    typeName: BSTR,
+    ignoreCase: VARIANT_BOOL,
+    bindingAttr: BindingFlags,
+    Binder: POBJECT,
+    args: ptr SAFEARRAY,
+    culture: POBJECT,
+    activationAttributes: ptr SAFEARRAY,
+    securityAttributes: POBJECT,
+    pRetVal: ptr ptr ObjectHandle,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstanceFrom_3(
+      self, assemblyFile, typeName, ignoreCase, bindingAttr, Binder, args, culture,
+      activationAttributes, securityAttributes, pRetVal,
+    )
+
+proc Load*(
+    self: ptr AppDomain, assemblyRef: POBJECT, pRetVal: ptr ptr IAssembly
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load(self, assemblyRef, pRetVal)
+
+proc Load_2*(
+    self: ptr AppDomain, assemblyString: BSTR, pRetVal: ptr ptr IAssembly
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load_2(self, assemblyString, pRetVal)
+
+proc Load_3*(
+    self: ptr AppDomain, rawAssembly: ptr SAFEARRAY, pRetVal: ptr ptr IAssembly
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load_3(self, rawAssembly, pRetVal)
+
+proc Load_4*(
+    self: ptr AppDomain,
+    rawAssembly: ptr SAFEARRAY,
+    rawSymbolStore: ptr SAFEARRAY,
+    pRetVal: ptr ptr IAssembly,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load_4(self, rawAssembly, rawSymbolStore, pRetVal)
+
+proc Load_5*(
+    self: ptr AppDomain,
+    rawAssembly: ptr SAFEARRAY,
+    rawSymbolStore: ptr SAFEARRAY,
+    securityEvidence: POBJECT,
+    pRetVal: ptr ptr IAssembly,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load_5(self, rawAssembly, rawSymbolStore, securityEvidence, pRetVal)
+
+proc Load_6*(
+    self: ptr AppDomain,
+    assemblyRef: POBJECT,
+    assemblySecurity: POBJECT,
+    pRetVal: ptr ptr IAssembly,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load_6(self, assemblyRef, assemblySecurity, pRetVal)
+
+proc Load_7*(
+    self: ptr AppDomain,
+    assemblyString: BSTR,
+    assemblySecurity: POBJECT,
+    pRetVal: ptr ptr IAssembly,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load_7(self, assemblyString, assemblySecurity, pRetVal)
+
+proc ExecuteAssembly*(
+    self: ptr AppDomain,
+    assemblyFile: BSTR,
+    assemblySecurity: POBJECT,
+    pRetVal: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExecuteAssembly(self, assemblyFile, assemblySecurity, pRetVal)
+
+proc ExecuteAssembly_2*(
+    self: ptr AppDomain, assemblyFile: BSTR, pRetVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExecuteAssembly_2(self, assemblyFile, pRetVal)
+
+proc ExecuteAssembly_3*(
+    self: ptr AppDomain,
+    assemblyFile: BSTR,
+    assemblySecurity: POBJECT,
+    args: ptr SAFEARRAY,
+    pRetVal: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExecuteAssembly_3(self, assemblyFile, assemblySecurity, args, pRetVal)
+
+proc get_FriendlyName*(
+    self: ptr AppDomain, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_FriendlyName(self, pRetVal)
+
+proc get_BaseDirectory*(
+    self: ptr AppDomain, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_BaseDirectory(self, pRetVal)
+
+proc get_RelativeSearchPath*(
+    self: ptr AppDomain, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_RelativeSearchPath(self, pRetVal)
+
+proc get_ShadowCopyFiles*(
+    self: ptr AppDomain, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ShadowCopyFiles(self, pRetVal)
+
+proc GetAssemblies*(
+    self: ptr AppDomain, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAssemblies(self, pRetVal)
+
+proc AppendPrivatePath*(self: ptr AppDomain, Path: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AppendPrivatePath(self, Path)
+
+proc ClearPrivatePath*(self: ptr AppDomain): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ClearPrivatePath(self)
+
+proc SetShadowCopyPath*(self: ptr AppDomain, s: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetShadowCopyPath(self, s)
+
+proc ClearShadowCopyPath*(self: ptr AppDomain): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ClearShadowCopyPath(self)
+
+proc SetCachePath*(self: ptr AppDomain, s: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCachePath(self, s)
+
+proc SetData*(
+    self: ptr AppDomain, name: BSTR, data: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetData(self, name, data)
+
+proc GetData*(
+    self: ptr AppDomain, name: BSTR, pRetVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetData(self, name, pRetVal)
+
+proc SetAppDomainPolicy*(
+    self: ptr AppDomain, domainPolicy: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAppDomainPolicy(self, domainPolicy)
+
+proc SetThreadPrincipal*(
+    self: ptr AppDomain, principal: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetThreadPrincipal(self, principal)
+
+proc SetPrincipalPolicy*(
+    self: ptr AppDomain, policy: PrincipalPolicy
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPrincipalPolicy(self, policy)
+
+proc DoCallBack*(
+    self: ptr AppDomain, theDelegate: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoCallBack(self, theDelegate)
+
+proc get_DynamicDirectory*(
+    self: ptr AppDomain, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DynamicDirectory(self, pRetVal)
+
+proc get_ToString*(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ToString(self, pRetVal)
+
+proc Equals*(
+    self: ptr IAssembly, other: VARIANT, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Equals(self, other, pRetVal)
+
+proc GetHashCode*(self: ptr IAssembly, pRetVal: ptr int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHashCode(self, pRetVal)
+
+proc GetType*(self: ptr IAssembly, pRetVal: ptr ptr IType): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetType(self, pRetVal)
+
+proc get_CodeBase*(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CodeBase(self, pRetVal)
+
+proc get_EscapedCodeBase*(
+    self: ptr IAssembly, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_EscapedCodeBase(self, pRetVal)
+
+proc GetName*(self: ptr IAssembly, pRetVal: ptr POBJECT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetName(self, pRetVal)
+
+proc GetName_2*(
+    self: ptr IAssembly, copiedName: VARIANT_BOOL, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetName_2(self, copiedName, pRetVal)
+
+proc get_FullName*(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_FullName(self, pRetVal)
+
+proc get_EntryPoint*(
+    self: ptr IAssembly, pRetVal: ptr ptr IMethodInfo
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_EntryPoint(self, pRetVal)
+
+proc GetType_2*(
+    self: ptr IAssembly, name: BSTR, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetType_2(self, name, pRetVal)
+
+proc GetType_3*(
+    self: ptr IAssembly, name: BSTR, throwOnError: VARIANT_BOOL, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetType_3(self, name, throwOnError, pRetVal)
+
+proc GetExportedTypes*(
+    self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetExportedTypes(self, pRetVal)
+
+proc GetTypes*(
+    self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypes(self, pRetVal)
+
+proc GetManifestResourceStream*(
+    self: ptr IAssembly, Type: ptr IType, name: BSTR, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetManifestResourceStream(self, Type, name, pRetVal)
+
+proc GetManifestResourceStream_2*(
+    self: ptr IAssembly, name: BSTR, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetManifestResourceStream_2(self, name, pRetVal)
+
+proc GetFile*(
+    self: ptr IAssembly, name: BSTR, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFile(self, name, pRetVal)
+
+proc GetFiles*(
+    self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFiles(self, pRetVal)
+
+proc GetFiles_2*(
+    self: ptr IAssembly, getResourceModules: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFiles_2(self, getResourceModules, pRetVal)
+
+proc GetManifestResourceNames*(
+    self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetManifestResourceNames(self, pRetVal)
+
+proc GetManifestResourceInfo*(
+    self: ptr IAssembly, resourceName: BSTR, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetManifestResourceInfo(self, resourceName, pRetVal)
+
+proc get_Location*(self: ptr IAssembly, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Location(self, pRetVal)
+
+proc get_Evidence*(
+    self: ptr IAssembly, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Evidence(self, pRetVal)
+
+proc GetCustomAttributes*(
+    self: ptr IAssembly,
+    attributeType: ptr IType,
+    inherit: VARIANT_BOOL,
+    pRetVal: ptr ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCustomAttributes(self, attributeType, inherit, pRetVal)
+
+proc GetCustomAttributes_2*(
+    self: ptr IAssembly, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCustomAttributes_2(self, inherit, pRetVal)
+
+proc IsDefined*(
+    self: ptr IAssembly,
+    attributeType: ptr IType,
+    inherit: VARIANT_BOOL,
+    pRetVal: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDefined(self, attributeType, inherit, pRetVal)
+
+proc GetObjectData*(
+    self: ptr IAssembly, info: POBJECT, Context: StreamingContext
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObjectData(self, info, Context)
+
+proc add_ModuleResolve*(
+    self: ptr IAssembly, value: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.add_ModuleResolve(self, value)
+
+proc remove_ModuleResolve*(
+    self: ptr IAssembly, value: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.remove_ModuleResolve(self, value)
+
+proc GetType_4*(
+    self: ptr IAssembly,
+    name: BSTR,
+    throwOnError: VARIANT_BOOL,
+    ignoreCase: VARIANT_BOOL,
+    pRetVal: ptr ptr IType,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetType_4(self, name, throwOnError, ignoreCase, pRetVal)
+
+proc GetSatelliteAssembly*(
+    self: ptr IAssembly, culture: POBJECT, pRetVal: ptr ptr IAssembly
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSatelliteAssembly(self, culture, pRetVal)
+
+proc GetSatelliteAssembly_2*(
+    self: ptr IAssembly, culture: POBJECT, Version: POBJECT, pRetVal: ptr ptr IAssembly
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSatelliteAssembly_2(self, culture, Version, pRetVal)
+
+proc LoadModule*(
+    self: ptr IAssembly,
+    moduleName: BSTR,
+    rawModule: ptr SAFEARRAY,
+    pRetVal: ptr POBJECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LoadModule(self, moduleName, rawModule, pRetVal)
+
+proc LoadModule_2*(
+    self: ptr IAssembly,
+    moduleName: BSTR,
+    rawModule: ptr SAFEARRAY,
+    rawSymbolStore: ptr SAFEARRAY,
+    pRetVal: ptr POBJECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LoadModule_2(self, moduleName, rawModule, rawSymbolStore, pRetVal)
+
+proc CreateInstance*(
+    self: ptr IAssembly, typeName: BSTR, pRetVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstance(self, typeName, pRetVal)
+
+proc CreateInstance_2*(
+    self: ptr IAssembly, typeName: BSTR, ignoreCase: VARIANT_BOOL, pRetVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstance_2(self, typeName, ignoreCase, pRetVal)
+
+proc CreateInstance_3*(
+    self: ptr IAssembly,
+    typeName: BSTR,
+    ignoreCase: VARIANT_BOOL,
+    bindingAttr: BindingFlags,
+    Binder: POBJECT,
+    args: ptr SAFEARRAY,
+    culture: POBJECT,
+    activationAttributes: ptr SAFEARRAY,
+    pRetVal: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstance_3(
+      self, typeName, ignoreCase, bindingAttr, Binder, args, culture,
+      activationAttributes, pRetVal,
+    )
+
+proc GetLoadedModules*(
+    self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLoadedModules(self, pRetVal)
+
+proc GetLoadedModules_2*(
+    self: ptr IAssembly, getResourceModules: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLoadedModules_2(self, getResourceModules, pRetVal)
+
+proc GetModules*(
+    self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetModules(self, pRetVal)
+
+proc GetModules_2*(
+    self: ptr IAssembly, getResourceModules: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetModules_2(self, getResourceModules, pRetVal)
+
+proc GetModule*(
+    self: ptr IAssembly, name: BSTR, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetModule(self, name, pRetVal)
+
+proc GetReferencedAssemblies*(
+    self: ptr IAssembly, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetReferencedAssemblies(self, pRetVal)
+
+proc get_GlobalAssemblyCache*(
+    self: ptr IAssembly, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_GlobalAssemblyCache(self, pRetVal)
+
+proc GetTypeInfoCount*(
+    self: ptr IMethodInfo, pcTInfo: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeInfoCount(self, pcTInfo)
+
+proc GetTypeInfo*(
+    self: ptr IMethodInfo, iTInfo: int32, lcid: int32, ppTInfo: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeInfo(self, iTInfo, lcid, ppTInfo)
+
+proc GetIDsOfNames*(
+    self: ptr IMethodInfo,
+    riid: ptr GUID,
+    rgszNames: int32,
+    cNames: int32,
+    lcid: int32,
+    rgDispId: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIDsOfNames(self, riid, rgszNames, cNames, lcid, rgDispId)
+
+proc Invoke*(
+    self: ptr IMethodInfo,
+    dispIdMember: int32,
+    riid: ptr GUID,
+    lcid: int32,
+    wFlags: int16,
+    pDispParams: int32,
+    pVarResult: int32,
+    pExcepInfo: int32,
+    puArgErr: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Invoke(
+      self, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo,
+      puArgErr,
+    )
+
+proc get_ToString*(
+    self: ptr IMethodInfo, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ToString(self, pRetVal)
+
+proc Equals*(
+    self: ptr IMethodInfo, other: VARIANT, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Equals(self, other, pRetVal)
+
+proc GetHashCode*(
+    self: ptr IMethodInfo, pRetVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHashCode(self, pRetVal)
+
+proc GetType*(
+    self: ptr IMethodInfo, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetType(self, pRetVal)
+
+proc get_MemberType*(
+    self: ptr IMethodInfo, pRetVal: ptr MemberTypes
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_MemberType(self, pRetVal)
+
+proc get_name*(self: ptr IMethodInfo, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, pRetVal)
+
+proc get_DeclaringType*(
+    self: ptr IMethodInfo, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DeclaringType(self, pRetVal)
+
+proc get_ReflectedType*(
+    self: ptr IMethodInfo, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ReflectedType(self, pRetVal)
+
+proc GetCustomAttributes*(
+    self: ptr IMethodInfo,
+    attributeType: ptr IType,
+    inherit: VARIANT_BOOL,
+    pRetVal: ptr ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCustomAttributes(self, attributeType, inherit, pRetVal)
+
+proc GetCustomAttributes_2*(
+    self: ptr IMethodInfo, inherit: VARIANT_BOOL, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCustomAttributes_2(self, inherit, pRetVal)
+
+proc IsDefined*(
+    self: ptr IMethodInfo,
+    attributeType: ptr IType,
+    inherit: VARIANT_BOOL,
+    pRetVal: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDefined(self, attributeType, inherit, pRetVal)
+
+proc GetParameters*(
+    self: ptr IMethodInfo, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetParameters(self, pRetVal)
+
+proc GetMethodImplementationFlags*(
+    self: ptr IMethodInfo, pRetVal: ptr MethodImplAttributes
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMethodImplementationFlags(self, pRetVal)
+
+proc get_MethodHandle*(
+    self: ptr IMethodInfo, pRetVal: POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_MethodHandle(self, pRetVal)
+
+proc get_Attributes*(
+    self: ptr IMethodInfo, pRetVal: ptr MethodAttributes
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Attributes(self, pRetVal)
+
+proc get_CallingConvention*(
+    self: ptr IMethodInfo, pRetVal: ptr CallingConventions
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CallingConvention(self, pRetVal)
+
+proc Invoke_2*(
+    self: ptr IMethodInfo,
+    obj: VARIANT,
+    invokeAttr: BindingFlags,
+    Binder: POBJECT,
+    parameters: ptr SAFEARRAY,
+    culture: POBJECT,
+    pRetVal: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Invoke_2(self, obj, invokeAttr, Binder, parameters, culture, pRetVal)
+
+proc get_IsPublic*(
+    self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsPublic(self, pRetVal)
+
+proc get_IsPrivate*(
+    self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsPrivate(self, pRetVal)
+
+proc get_IsFamily*(
+    self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsFamily(self, pRetVal)
+
+proc get_IsAssembly*(
+    self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsAssembly(self, pRetVal)
+
+proc get_IsFamilyAndAssembly*(
+    self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsFamilyAndAssembly(self, pRetVal)
+
+proc get_IsFamilyOrAssembly*(
+    self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsFamilyOrAssembly(self, pRetVal)
+
+proc get_IsStatic*(
+    self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsStatic(self, pRetVal)
+
+proc get_IsFinal*(
+    self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsFinal(self, pRetVal)
+
+proc get_IsVirtual*(
+    self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsVirtual(self, pRetVal)
+
+proc get_IsHideBySig*(
+    self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsHideBySig(self, pRetVal)
+
+proc get_IsAbstract*(
+    self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsAbstract(self, pRetVal)
+
+proc get_IsSpecialName*(
+    self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsSpecialName(self, pRetVal)
+
+proc get_IsConstructor*(
+    self: ptr IMethodInfo, pRetVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsConstructor(self, pRetVal)
+
+proc Invoke_3*(
+    self: ptr IMethodInfo, obj: VARIANT, parameters: ptr SAFEARRAY, pRetVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Invoke_3(self, obj, parameters, pRetVal)
+
+proc get_returnType*(
+    self: ptr IMethodInfo, pRetVal: ptr ptr IType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_returnType(self, pRetVal)
+
+proc get_ReturnTypeCustomAttributes*(
+    self: ptr IMethodInfo, pRetVal: ptr POBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ReturnTypeCustomAttributes(self, pRetVal)
+
+proc GetBaseDefinition*(
+    self: ptr IMethodInfo, pRetVal: ptr ptr IMethodInfo
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBaseDefinition(self, pRetVal)
+
+converter winimConverterIGCHostToIUnknown*(x: ptr IGCHost): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIGCHost2ToIGCHost*(x: ptr IGCHost2): ptr IGCHost =
+  cast[ptr IGCHost](x)
+
+converter winimConverterIGCHost2ToIUnknown*(x: ptr IGCHost2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIVEHandlerToIUnknown*(x: ptr IVEHandler): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIValidatorToIUnknown*(x: ptr IValidator): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRValidatorToIUnknown*(x: ptr ICLRValidator): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectHandleToIUnknown*(x: ptr IObjectHandle): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAppDomainBindingToIUnknown*(
+    x: ptr IAppDomainBinding
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIGCThreadControlToIUnknown*(
+    x: ptr IGCThreadControl
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIGCHostControlToIUnknown*(x: ptr IGCHostControl): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICorThreadpoolToIUnknown*(x: ptr ICorThreadpool): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDebuggerThreadControlToIUnknown*(
+    x: ptr IDebuggerThreadControl
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDebuggerInfoToIUnknown*(x: ptr IDebuggerInfo): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICorConfigurationToIUnknown*(
+    x: ptr ICorConfiguration
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICorRuntimeHostToIUnknown*(
+    x: ptr ICorRuntimeHost
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRMemoryNotificationCallbackToIUnknown*(
+    x: ptr ICLRMemoryNotificationCallback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostMallocToIUnknown*(x: ptr IHostMalloc): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostMemoryManagerToIUnknown*(
+    x: ptr IHostMemoryManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRTaskToIUnknown*(x: ptr ICLRTask): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRTask2ToICLRTask*(x: ptr ICLRTask2): ptr ICLRTask =
+  cast[ptr ICLRTask](x)
+
+converter winimConverterICLRTask2ToIUnknown*(x: ptr ICLRTask2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostTaskToIUnknown*(x: ptr IHostTask): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRTaskManagerToIUnknown*(
+    x: ptr ICLRTaskManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostTaskManagerToIUnknown*(
+    x: ptr IHostTaskManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostThreadpoolManagerToIUnknown*(
+    x: ptr IHostThreadpoolManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRIoCompletionManagerToIUnknown*(
+    x: ptr ICLRIoCompletionManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostIoCompletionManagerToIUnknown*(
+    x: ptr IHostIoCompletionManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRDebugManagerToIUnknown*(
+    x: ptr ICLRDebugManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRErrorReportingManagerToIUnknown*(
+    x: ptr ICLRErrorReportingManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostCrstToIUnknown*(x: ptr IHostCrst): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostAutoEventToIUnknown*(x: ptr IHostAutoEvent): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostManualEventToIUnknown*(
+    x: ptr IHostManualEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostSemaphoreToIUnknown*(x: ptr IHostSemaphore): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRSyncManagerToIUnknown*(
+    x: ptr ICLRSyncManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostSyncManagerToIUnknown*(
+    x: ptr IHostSyncManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRPolicyManagerToIUnknown*(
+    x: ptr ICLRPolicyManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostPolicyManagerToIUnknown*(
+    x: ptr IHostPolicyManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActionOnCLREventToIUnknown*(
+    x: ptr IActionOnCLREvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLROnEventManagerToIUnknown*(
+    x: ptr ICLROnEventManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostGCManagerToIUnknown*(x: ptr IHostGCManager): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRAssemblyReferenceListToIUnknown*(
+    x: ptr ICLRAssemblyReferenceList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRReferenceAssemblyEnumToIUnknown*(
+    x: ptr ICLRReferenceAssemblyEnum
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRProbingAssemblyEnumToIUnknown*(
+    x: ptr ICLRProbingAssemblyEnum
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRAssemblyIdentityManagerToIUnknown*(
+    x: ptr ICLRAssemblyIdentityManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRHostBindingPolicyManagerToIUnknown*(
+    x: ptr ICLRHostBindingPolicyManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRGCManagerToIUnknown*(x: ptr ICLRGCManager): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRGCManager2ToICLRGCManager*(
+    x: ptr ICLRGCManager2
+): ptr ICLRGCManager =
+  cast[ptr ICLRGCManager](x)
+
+converter winimConverterICLRGCManager2ToIUnknown*(x: ptr ICLRGCManager2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostAssemblyStoreToIUnknown*(
+    x: ptr IHostAssemblyStore
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostAssemblyManagerToIUnknown*(
+    x: ptr IHostAssemblyManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostControlToIUnknown*(x: ptr IHostControl): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRControlToIUnknown*(x: ptr ICLRControl): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRRuntimeHostToIUnknown*(
+    x: ptr ICLRRuntimeHost
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRHostProtectionManagerToIUnknown*(
+    x: ptr ICLRHostProtectionManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRDomainManagerToIUnknown*(
+    x: ptr ICLRDomainManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITypeNameToIUnknown*(x: ptr ITypeName): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITypeNameBuilderToIUnknown*(
+    x: ptr ITypeNameBuilder
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITypeNameFactoryToIUnknown*(
+    x: ptr ITypeNameFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIApartmentCallbackToIUnknown*(
+    x: ptr IApartmentCallback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIManagedObjectToIUnknown*(x: ptr IManagedObject): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICatalogServicesToIUnknown*(
+    x: ptr ICatalogServices
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostSecurityContextToIUnknown*(
+    x: ptr IHostSecurityContext
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostSecurityManagerToIUnknown*(
+    x: ptr IHostSecurityManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRAppDomainResourceMonitorToIUnknown*(
+    x: ptr ICLRAppDomainResourceMonitor
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRMetaHostToIUnknown*(x: ptr ICLRMetaHost): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRMetaHostPolicyToIUnknown*(
+    x: ptr ICLRMetaHostPolicy
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRProfilingToIUnknown*(x: ptr ICLRProfiling): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRDebuggingLibraryProviderToIUnknown*(
+    x: ptr ICLRDebuggingLibraryProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRDebuggingToIUnknown*(x: ptr ICLRDebugging): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRRuntimeInfoToIUnknown*(
+    x: ptr ICLRRuntimeInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRStrongNameToIUnknown*(x: ptr ICLRStrongName): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRStrongName2ToIUnknown*(
+    x: ptr ICLRStrongName2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICLRStrongName3ToIUnknown*(
+    x: ptr ICLRStrongName3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectToIDispatch*(x: ptr IObject): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIObjectToIUnknown*(x: ptr IObject): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITypeToIUnknown*(x: ptr IType): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAppDomainSetupToIUnknown*(
+    x: ptr IAppDomainSetup
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterObjectHandleToIDispatch*(x: ptr ObjectHandle): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterObjectHandleToIUnknown*(x: ptr ObjectHandle): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterAppDomainToIDispatch*(x: ptr AppDomain): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterAppDomainToIUnknown*(x: ptr AppDomain): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAssemblyToIDispatch*(x: ptr IAssembly): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIAssemblyToIUnknown*(x: ptr IAssembly): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMethodInfoToIUnknown*(x: ptr IMethodInfo): ptr IUnknown =
+  cast[ptr IUnknown](x)
--- a/semicongine/thirdparty/winim/winim/inc/mshtml.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/mshtml.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -280,12 +280,22 @@
     g*: float32
     b*: float32
     a*: float32
+
   DXGI_RGBA* = D3DCOLORVALUE
   IClassFactoryEx* {.pure.} = object
     lpVtbl*: ptr IClassFactoryExVtbl
+
   IClassFactoryExVtbl* {.pure, inheritable.} = object of IClassFactoryVtbl
-    CreateInstanceWithContext*: proc(self: ptr IClassFactoryEx, punkContext: ptr IUnknown, punkOuter: ptr IUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    CreateInstanceWithContext*: proc(
+      self: ptr IClassFactoryEx,
+      punkContext: ptr IUnknown,
+      punkOuter: ptr IUnknown,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+
   IClassFactory3* = IClassFactoryEx
+
 const
   SID_VariantConversion* = DEFINE_GUID("1f101481-bccd-11d0-9336-00a0c90dcaa9")
   SID_GetCaller* = DEFINE_GUID("4717cc40-bcb9-11d0-9336-00a0c90dcaa9")
@@ -311,8 +321,12 @@
   fdexPropCannotConstruct* = 0x800
   fdexPropCanSourceEvents* = 0x1000
   fdexPropCannotSourceEvents* = 0x02000
-  grfdexPropCanAll* = fdexPropCanGet or fdexPropCanPut or fdexPropCanPutRef or fdexPropCanCall or fdexPropCanConstruct or fdexPropCanSourceEvents
-  grfdexPropCannotAll* = fdexPropCannotGet or fdexPropCannotPut or fdexPropCannotPutRef or fdexPropCannotCall or fdexPropCannotConstruct or fdexPropCannotSourceEvents
+  grfdexPropCanAll* =
+    fdexPropCanGet or fdexPropCanPut or fdexPropCanPutRef or fdexPropCanCall or
+    fdexPropCanConstruct or fdexPropCanSourceEvents
+  grfdexPropCannotAll* =
+    fdexPropCannotGet or fdexPropCannotPut or fdexPropCannotPutRef or fdexPropCannotCall or
+    fdexPropCannotConstruct or fdexPropCannotSourceEvents
   grfdexPropExtraAll* = fdexPropNoSideEffects or fdexPropDynamicType
   grfdexPropAll* = grfdexPropCanAll or grfdexPropCannotAll or grfdexPropExtraAll
   fdexEnumDefault* = 0x1
@@ -1398,7 +1412,8 @@
   IID_IHTMLCSSStyleDeclaration* = DEFINE_GUID("30510740-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLCSSStyleDeclaration2* = DEFINE_GUID("305107d1-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLStyleEnabled* = DEFINE_GUID("305104c2-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispHTMLCSSStyleDeclaration* = DEFINE_GUID("3059009a-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispHTMLCSSStyleDeclaration* =
+    DEFINE_GUID("3059009a-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispHTMLCSSStyleDeclaration* = DEFINE_GUID("3059009a-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_HTMLCSSStyleDeclaration* = DEFINE_GUID("30510741-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLStyle* = DEFINE_GUID("3050f25e-98b5-11cf-bb82-00aa00bdce0b")
@@ -1535,7 +1550,8 @@
   IID_IHTMLAttributeCollection4* = DEFINE_GUID("305106fa-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLDOMChildrenCollection* = DEFINE_GUID("3050f5ab-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLDOMChildrenCollection2* = DEFINE_GUID("30510791-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispHTMLAttributeCollection* = DEFINE_GUID("3050f56c-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispHTMLAttributeCollection* =
+    DEFINE_GUID("3050f56c-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispHTMLAttributeCollection* = DEFINE_GUID("3050f56c-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_HTMLAttributeCollection* = DEFINE_GUID("3050f4cc-98b5-11cf-bb82-00aa00bdce0b")
   DIID_DispStaticNodeList* = DEFINE_GUID("3050f59b-98b5-11cf-bb82-00aa00bdce0b")
@@ -1712,23 +1728,32 @@
   IID_IHTMLStyleSheetRule* = DEFINE_GUID("3050f357-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLStyleSheetRuleApplied* = DEFINE_GUID("305104c1-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLStyleSheetRule2* = DEFINE_GUID("305106fd-98b5-11cf-bb82-00aa00bdce0b")
-  IID_IHTMLStyleSheetRulesCollection* = DEFINE_GUID("3050f2e5-98b5-11cf-bb82-00aa00bdce0b")
-  IID_IHTMLStyleSheetRulesCollection2* = DEFINE_GUID("305106e8-98b5-11cf-bb82-00aa00bdce0b")
+  IID_IHTMLStyleSheetRulesCollection* =
+    DEFINE_GUID("3050f2e5-98b5-11cf-bb82-00aa00bdce0b")
+  IID_IHTMLStyleSheetRulesCollection2* =
+    DEFINE_GUID("305106e8-98b5-11cf-bb82-00aa00bdce0b")
   DIID_DispHTMLStyleSheetRule* = DEFINE_GUID("3050f50e-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispHTMLStyleSheetRule* = DEFINE_GUID("3050f50e-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_HTMLStyleSheetRule* = DEFINE_GUID("3050f3ce-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispHTMLStyleSheetRulesCollection* = DEFINE_GUID("3050f52f-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispHTMLStyleSheetRulesCollection* = DEFINE_GUID("3050f52f-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_HTMLStyleSheetRulesCollection* = DEFINE_GUID("3050f3cd-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispHTMLStyleSheetRulesCollection* =
+    DEFINE_GUID("3050f52f-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispHTMLStyleSheetRulesCollection* =
+    DEFINE_GUID("3050f52f-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_HTMLStyleSheetRulesCollection* =
+    DEFINE_GUID("3050f3cd-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLStyleSheetPage* = DEFINE_GUID("3050f7ee-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLStyleSheetPage2* = DEFINE_GUID("305106ed-98b5-11cf-bb82-00aa00bdce0b")
-  IID_IHTMLStyleSheetPagesCollection* = DEFINE_GUID("3050f7f0-98b5-11cf-bb82-00aa00bdce0b")
+  IID_IHTMLStyleSheetPagesCollection* =
+    DEFINE_GUID("3050f7f0-98b5-11cf-bb82-00aa00bdce0b")
   DIID_DispHTMLStyleSheetPage* = DEFINE_GUID("3050f540-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispHTMLStyleSheetPage* = DEFINE_GUID("3050f540-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_HTMLStyleSheetPage* = DEFINE_GUID("3050f7ef-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispHTMLStyleSheetPagesCollection* = DEFINE_GUID("3050f543-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispHTMLStyleSheetPagesCollection* = DEFINE_GUID("3050f543-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_HTMLStyleSheetPagesCollection* = DEFINE_GUID("3050f7f1-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispHTMLStyleSheetPagesCollection* =
+    DEFINE_GUID("3050f543-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispHTMLStyleSheetPagesCollection* =
+    DEFINE_GUID("3050f543-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_HTMLStyleSheetPagesCollection* =
+    DEFINE_GUID("3050f7f1-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLStyleSheet* = DEFINE_GUID("3050f2e3-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLStyleSheet2* = DEFINE_GUID("3050f3d1-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLStyleSheet3* = DEFINE_GUID("30510496-98b5-11cf-bb82-00aa00bdce0b")
@@ -1738,8 +1763,10 @@
   CLSID_HTMLStyleSheet* = DEFINE_GUID("3050f2e4-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLStyleSheetsCollection* = DEFINE_GUID("3050f37e-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLStyleSheetsCollection2* = DEFINE_GUID("305106e7-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispHTMLStyleSheetsCollection* = DEFINE_GUID("3050f547-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispHTMLStyleSheetsCollection* = DEFINE_GUID("3050f547-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispHTMLStyleSheetsCollection* =
+    DEFINE_GUID("3050f547-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispHTMLStyleSheetsCollection* =
+    DEFINE_GUID("3050f547-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_HTMLStyleSheetsCollection* = DEFINE_GUID("3050f37f-98b5-11cf-bb82-00aa00bdce0b")
   DIID_HTMLLinkElementEvents2* = DEFINE_GUID("3050f61d-98b5-11cf-bb82-00aa00bdce0b")
   IID_HTMLLinkElementEvents2* = DEFINE_GUID("3050f61d-98b5-11cf-bb82-00aa00bdce0b")
@@ -1962,18 +1989,24 @@
   IID_HTMLButtonElementEvents2* = DEFINE_GUID("3050f617-98b5-11cf-bb82-00aa00bdce0b")
   DIID_HTMLButtonElementEvents* = DEFINE_GUID("3050f2b3-98b5-11cf-bb82-00aa00bdce0b")
   IID_HTMLButtonElementEvents* = DEFINE_GUID("3050f2b3-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_HTMLInputTextElementEvents2* = DEFINE_GUID("3050f618-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_HTMLInputTextElementEvents2* =
+    DEFINE_GUID("3050f618-98b5-11cf-bb82-00aa00bdce0b")
   IID_HTMLInputTextElementEvents2* = DEFINE_GUID("3050f618-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_HTMLOptionButtonElementEvents2* = DEFINE_GUID("3050f619-98b5-11cf-bb82-00aa00bdce0b")
-  IID_HTMLOptionButtonElementEvents2* = DEFINE_GUID("3050f619-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_HTMLInputFileElementEvents2* = DEFINE_GUID("3050f61a-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_HTMLOptionButtonElementEvents2* =
+    DEFINE_GUID("3050f619-98b5-11cf-bb82-00aa00bdce0b")
+  IID_HTMLOptionButtonElementEvents2* =
+    DEFINE_GUID("3050f619-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_HTMLInputFileElementEvents2* =
+    DEFINE_GUID("3050f61a-98b5-11cf-bb82-00aa00bdce0b")
   IID_HTMLInputFileElementEvents2* = DEFINE_GUID("3050f61a-98b5-11cf-bb82-00aa00bdce0b")
   DIID_HTMLInputImageEvents2* = DEFINE_GUID("3050f61b-98b5-11cf-bb82-00aa00bdce0b")
   IID_HTMLInputImageEvents2* = DEFINE_GUID("3050f61b-98b5-11cf-bb82-00aa00bdce0b")
   DIID_HTMLInputTextElementEvents* = DEFINE_GUID("3050f2a7-98b5-11cf-bb82-00aa00bdce0b")
   IID_HTMLInputTextElementEvents* = DEFINE_GUID("3050f2a7-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_HTMLOptionButtonElementEvents* = DEFINE_GUID("3050f2bd-98b5-11cf-bb82-00aa00bdce0b")
-  IID_HTMLOptionButtonElementEvents* = DEFINE_GUID("3050f2bd-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_HTMLOptionButtonElementEvents* =
+    DEFINE_GUID("3050f2bd-98b5-11cf-bb82-00aa00bdce0b")
+  IID_HTMLOptionButtonElementEvents* =
+    DEFINE_GUID("3050f2bd-98b5-11cf-bb82-00aa00bdce0b")
   DIID_HTMLInputFileElementEvents* = DEFINE_GUID("3050f2af-98b5-11cf-bb82-00aa00bdce0b")
   IID_HTMLInputFileElementEvents* = DEFINE_GUID("3050f2af-98b5-11cf-bb82-00aa00bdce0b")
   DIID_HTMLInputImageEvents* = DEFINE_GUID("3050f2c3-98b5-11cf-bb82-00aa00bdce0b")
@@ -2149,13 +2182,20 @@
   IID_DispHTMLWindowProxy* = DEFINE_GUID("3050f55e-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_HTMLWindowProxy* = DEFINE_GUID("3050f391-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLDocumentCompatibleInfo* = DEFINE_GUID("3051041a-98b5-11cf-bb82-00aa00bdce0b")
-  IID_IHTMLDocumentCompatibleInfoCollection* = DEFINE_GUID("30510418-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispHTMLDocumentCompatibleInfo* = DEFINE_GUID("3050f53e-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispHTMLDocumentCompatibleInfo* = DEFINE_GUID("3050f53e-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_HTMLDocumentCompatibleInfo* = DEFINE_GUID("3051041b-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispHTMLDocumentCompatibleInfoCollection* = DEFINE_GUID("3050f53f-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispHTMLDocumentCompatibleInfoCollection* = DEFINE_GUID("3050f53f-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_HTMLDocumentCompatibleInfoCollection* = DEFINE_GUID("30510419-98b5-11cf-bb82-00aa00bdce0b")
+  IID_IHTMLDocumentCompatibleInfoCollection* =
+    DEFINE_GUID("30510418-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispHTMLDocumentCompatibleInfo* =
+    DEFINE_GUID("3050f53e-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispHTMLDocumentCompatibleInfo* =
+    DEFINE_GUID("3050f53e-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_HTMLDocumentCompatibleInfo* =
+    DEFINE_GUID("3051041b-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispHTMLDocumentCompatibleInfoCollection* =
+    DEFINE_GUID("3050f53f-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispHTMLDocumentCompatibleInfoCollection* =
+    DEFINE_GUID("3050f53f-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_HTMLDocumentCompatibleInfoCollection* =
+    DEFINE_GUID("30510419-98b5-11cf-bb82-00aa00bdce0b")
   DIID_HTMLDocumentEvents4* = DEFINE_GUID("30510737-98b5-11cf-bb82-00aa00bdce0b")
   IID_HTMLDocumentEvents4* = DEFINE_GUID("30510737-98b5-11cf-bb82-00aa00bdce0b")
   DIID_HTMLDocumentEvents3* = DEFINE_GUID("3050f5a0-98b5-11cf-bb82-00aa00bdce0b")
@@ -2510,8 +2550,10 @@
   DIID_DispCanvasImageData* = DEFINE_GUID("3059008f-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispCanvasImageData* = DEFINE_GUID("3059008f-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_CanvasImageData* = DEFINE_GUID("3051071b-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispCanvasRenderingContext2D* = DEFINE_GUID("30590082-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispCanvasRenderingContext2D* = DEFINE_GUID("30590082-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispCanvasRenderingContext2D* =
+    DEFINE_GUID("30590082-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispCanvasRenderingContext2D* =
+    DEFINE_GUID("30590082-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_CanvasRenderingContext2D* = DEFINE_GUID("30510700-98b5-11cf-bb82-00aa00bdce0b")
   DIID_DispHTMLCanvasElement* = DEFINE_GUID("3059007b-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispHTMLCanvasElement* = DEFINE_GUID("3059007b-98b5-11cf-bb82-00aa00bdce0b")
@@ -2533,8 +2575,10 @@
   IID_DispDOMStorageEvent* = DEFINE_GUID("30590093-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_DOMStorageEvent* = DEFINE_GUID("30510723-98b5-11cf-bb82-00aa00bdce0b")
   IID_IXMLHttpRequestEventTarget* = DEFINE_GUID("30510830-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispXMLHttpRequestEventTarget* = DEFINE_GUID("305900e7-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispXMLHttpRequestEventTarget* = DEFINE_GUID("305900e7-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispXMLHttpRequestEventTarget* =
+    DEFINE_GUID("305900e7-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispXMLHttpRequestEventTarget* =
+    DEFINE_GUID("305900e7-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_XMLHttpRequestEventTarget* = DEFINE_GUID("30510831-98b5-11cf-bb82-00aa00bdce0b")
   DIID_HTMLXMLHttpRequestEvents* = DEFINE_GUID("30510498-98b5-11cf-bb82-00aa00bdce0b")
   IID_HTMLXMLHttpRequestEvents* = DEFINE_GUID("30510498-98b5-11cf-bb82-00aa00bdce0b")
@@ -2561,7 +2605,8 @@
   IID_ISVGTransformable* = DEFINE_GUID("305104dc-98b5-11cf-bb82-00aa00bdce0b")
   IID_ISVGTests* = DEFINE_GUID("305104dd-98b5-11cf-bb82-00aa00bdce0b")
   IID_ISVGLangSpace* = DEFINE_GUID("305104de-98b5-11cf-bb82-00aa00bdce0b")
-  IID_ISVGExternalResourcesRequired* = DEFINE_GUID("305104df-98b5-11cf-bb82-00aa00bdce0b")
+  IID_ISVGExternalResourcesRequired* =
+    DEFINE_GUID("305104df-98b5-11cf-bb82-00aa00bdce0b")
   IID_ISVGFitToViewBox* = DEFINE_GUID("305104e0-98b5-11cf-bb82-00aa00bdce0b")
   IID_ISVGZoomAndPan* = DEFINE_GUID("305104e1-98b5-11cf-bb82-00aa00bdce0b")
   IID_ISVGURIReference* = DEFINE_GUID("305104e3-98b5-11cf-bb82-00aa00bdce0b")
@@ -2661,16 +2706,26 @@
   IID_ISVGPathSegLinetoRel* = DEFINE_GUID("30510501-98b5-11cf-bb82-00aa00bdce0b")
   IID_ISVGPathSegCurvetoCubicAbs* = DEFINE_GUID("30510502-98b5-11cf-bb82-00aa00bdce0b")
   IID_ISVGPathSegCurvetoCubicRel* = DEFINE_GUID("30510503-98b5-11cf-bb82-00aa00bdce0b")
-  IID_ISVGPathSegCurvetoCubicSmoothAbs* = DEFINE_GUID("3051050c-98b5-11cf-bb82-00aa00bdce0b")
-  IID_ISVGPathSegCurvetoCubicSmoothRel* = DEFINE_GUID("3051050d-98b5-11cf-bb82-00aa00bdce0b")
-  IID_ISVGPathSegCurvetoQuadraticAbs* = DEFINE_GUID("30510504-98b5-11cf-bb82-00aa00bdce0b")
-  IID_ISVGPathSegCurvetoQuadraticRel* = DEFINE_GUID("30510505-98b5-11cf-bb82-00aa00bdce0b")
-  IID_ISVGPathSegCurvetoQuadraticSmoothAbs* = DEFINE_GUID("3051050e-98b5-11cf-bb82-00aa00bdce0b")
-  IID_ISVGPathSegCurvetoQuadraticSmoothRel* = DEFINE_GUID("3051050f-98b5-11cf-bb82-00aa00bdce0b")
-  IID_ISVGPathSegLinetoHorizontalAbs* = DEFINE_GUID("30510508-98b5-11cf-bb82-00aa00bdce0b")
-  IID_ISVGPathSegLinetoHorizontalRel* = DEFINE_GUID("30510509-98b5-11cf-bb82-00aa00bdce0b")
-  IID_ISVGPathSegLinetoVerticalAbs* = DEFINE_GUID("3051050a-98b5-11cf-bb82-00aa00bdce0b")
-  IID_ISVGPathSegLinetoVerticalRel* = DEFINE_GUID("3051050b-98b5-11cf-bb82-00aa00bdce0b")
+  IID_ISVGPathSegCurvetoCubicSmoothAbs* =
+    DEFINE_GUID("3051050c-98b5-11cf-bb82-00aa00bdce0b")
+  IID_ISVGPathSegCurvetoCubicSmoothRel* =
+    DEFINE_GUID("3051050d-98b5-11cf-bb82-00aa00bdce0b")
+  IID_ISVGPathSegCurvetoQuadraticAbs* =
+    DEFINE_GUID("30510504-98b5-11cf-bb82-00aa00bdce0b")
+  IID_ISVGPathSegCurvetoQuadraticRel* =
+    DEFINE_GUID("30510505-98b5-11cf-bb82-00aa00bdce0b")
+  IID_ISVGPathSegCurvetoQuadraticSmoothAbs* =
+    DEFINE_GUID("3051050e-98b5-11cf-bb82-00aa00bdce0b")
+  IID_ISVGPathSegCurvetoQuadraticSmoothRel* =
+    DEFINE_GUID("3051050f-98b5-11cf-bb82-00aa00bdce0b")
+  IID_ISVGPathSegLinetoHorizontalAbs* =
+    DEFINE_GUID("30510508-98b5-11cf-bb82-00aa00bdce0b")
+  IID_ISVGPathSegLinetoHorizontalRel* =
+    DEFINE_GUID("30510509-98b5-11cf-bb82-00aa00bdce0b")
+  IID_ISVGPathSegLinetoVerticalAbs* =
+    DEFINE_GUID("3051050a-98b5-11cf-bb82-00aa00bdce0b")
+  IID_ISVGPathSegLinetoVerticalRel* =
+    DEFINE_GUID("3051050b-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_SVGPathSeg* = DEFINE_GUID("305105b3-98b5-11cf-bb82-00aa00bdce0b")
   DIID_DispSVGPathSegArcAbs* = DEFINE_GUID("30590013-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispSVGPathSegArcAbs* = DEFINE_GUID("30590013-98b5-11cf-bb82-00aa00bdce0b")
@@ -2693,42 +2748,76 @@
   DIID_DispSVGPathSegLinetoRel* = DEFINE_GUID("30590021-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispSVGPathSegLinetoRel* = DEFINE_GUID("30590021-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_SVGPathSegLinetoRel* = DEFINE_GUID("305105c9-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGPathSegCurvetoCubicAbs* = DEFINE_GUID("30590016-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGPathSegCurvetoCubicAbs* = DEFINE_GUID("30590016-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGPathSegCurvetoCubicAbs* =
+    DEFINE_GUID("30590016-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGPathSegCurvetoCubicAbs* =
+    DEFINE_GUID("30590016-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_SVGPathSegCurvetoCubicAbs* = DEFINE_GUID("305105be-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGPathSegCurvetoCubicRel* = DEFINE_GUID("30590017-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGPathSegCurvetoCubicRel* = DEFINE_GUID("30590017-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGPathSegCurvetoCubicRel* =
+    DEFINE_GUID("30590017-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGPathSegCurvetoCubicRel* =
+    DEFINE_GUID("30590017-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_SVGPathSegCurvetoCubicRel* = DEFINE_GUID("305105bf-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGPathSegCurvetoCubicSmoothAbs* = DEFINE_GUID("30590018-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGPathSegCurvetoCubicSmoothAbs* = DEFINE_GUID("30590018-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_SVGPathSegCurvetoCubicSmoothAbs* = DEFINE_GUID("305105c0-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGPathSegCurvetoCubicSmoothRel* = DEFINE_GUID("30590019-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGPathSegCurvetoCubicSmoothRel* = DEFINE_GUID("30590019-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_SVGPathSegCurvetoCubicSmoothRel* = DEFINE_GUID("305105c1-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGPathSegCurvetoQuadraticAbs* = DEFINE_GUID("3059001a-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGPathSegCurvetoQuadraticAbs* = DEFINE_GUID("3059001a-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_SVGPathSegCurvetoQuadraticAbs* = DEFINE_GUID("305105c2-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGPathSegCurvetoQuadraticRel* = DEFINE_GUID("3059001b-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGPathSegCurvetoQuadraticRel* = DEFINE_GUID("3059001b-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_SVGPathSegCurvetoQuadraticRel* = DEFINE_GUID("305105c3-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGPathSegCurvetoQuadraticSmoothAbs* = DEFINE_GUID("3059001c-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGPathSegCurvetoQuadraticSmoothAbs* = DEFINE_GUID("3059001c-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_SVGPathSegCurvetoQuadraticSmoothAbs* = DEFINE_GUID("305105c4-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGPathSegCurvetoQuadraticSmoothRel* = DEFINE_GUID("3059001d-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGPathSegCurvetoQuadraticSmoothRel* = DEFINE_GUID("3059001d-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_SVGPathSegCurvetoQuadraticSmoothRel* = DEFINE_GUID("305105c5-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGPathSegLinetoHorizontalAbs* = DEFINE_GUID("3059001f-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGPathSegLinetoHorizontalAbs* = DEFINE_GUID("3059001f-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_SVGPathSegLinetoHorizontalAbs* = DEFINE_GUID("305105c7-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGPathSegLinetoHorizontalRel* = DEFINE_GUID("30590020-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGPathSegLinetoHorizontalRel* = DEFINE_GUID("30590020-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_SVGPathSegLinetoHorizontalRel* = DEFINE_GUID("305105c8-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGPathSegLinetoVerticalAbs* = DEFINE_GUID("30590022-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGPathSegLinetoVerticalAbs* = DEFINE_GUID("30590022-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_SVGPathSegLinetoVerticalAbs* = DEFINE_GUID("305105ca-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGPathSegLinetoVerticalRel* = DEFINE_GUID("30590023-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGPathSegLinetoVerticalRel* = DEFINE_GUID("30590023-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_SVGPathSegLinetoVerticalRel* = DEFINE_GUID("305105cb-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGPathSegCurvetoCubicSmoothAbs* =
+    DEFINE_GUID("30590018-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGPathSegCurvetoCubicSmoothAbs* =
+    DEFINE_GUID("30590018-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_SVGPathSegCurvetoCubicSmoothAbs* =
+    DEFINE_GUID("305105c0-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGPathSegCurvetoCubicSmoothRel* =
+    DEFINE_GUID("30590019-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGPathSegCurvetoCubicSmoothRel* =
+    DEFINE_GUID("30590019-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_SVGPathSegCurvetoCubicSmoothRel* =
+    DEFINE_GUID("305105c1-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGPathSegCurvetoQuadraticAbs* =
+    DEFINE_GUID("3059001a-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGPathSegCurvetoQuadraticAbs* =
+    DEFINE_GUID("3059001a-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_SVGPathSegCurvetoQuadraticAbs* =
+    DEFINE_GUID("305105c2-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGPathSegCurvetoQuadraticRel* =
+    DEFINE_GUID("3059001b-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGPathSegCurvetoQuadraticRel* =
+    DEFINE_GUID("3059001b-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_SVGPathSegCurvetoQuadraticRel* =
+    DEFINE_GUID("305105c3-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGPathSegCurvetoQuadraticSmoothAbs* =
+    DEFINE_GUID("3059001c-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGPathSegCurvetoQuadraticSmoothAbs* =
+    DEFINE_GUID("3059001c-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_SVGPathSegCurvetoQuadraticSmoothAbs* =
+    DEFINE_GUID("305105c4-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGPathSegCurvetoQuadraticSmoothRel* =
+    DEFINE_GUID("3059001d-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGPathSegCurvetoQuadraticSmoothRel* =
+    DEFINE_GUID("3059001d-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_SVGPathSegCurvetoQuadraticSmoothRel* =
+    DEFINE_GUID("305105c5-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGPathSegLinetoHorizontalAbs* =
+    DEFINE_GUID("3059001f-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGPathSegLinetoHorizontalAbs* =
+    DEFINE_GUID("3059001f-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_SVGPathSegLinetoHorizontalAbs* =
+    DEFINE_GUID("305105c7-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGPathSegLinetoHorizontalRel* =
+    DEFINE_GUID("30590020-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGPathSegLinetoHorizontalRel* =
+    DEFINE_GUID("30590020-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_SVGPathSegLinetoHorizontalRel* =
+    DEFINE_GUID("305105c8-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGPathSegLinetoVerticalAbs* =
+    DEFINE_GUID("30590022-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGPathSegLinetoVerticalAbs* =
+    DEFINE_GUID("30590022-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_SVGPathSegLinetoVerticalAbs* =
+    DEFINE_GUID("305105ca-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGPathSegLinetoVerticalRel* =
+    DEFINE_GUID("30590023-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGPathSegLinetoVerticalRel* =
+    DEFINE_GUID("30590023-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_SVGPathSegLinetoVerticalRel* =
+    DEFINE_GUID("305105cb-98b5-11cf-bb82-00aa00bdce0b")
   IID_ISVGPathSegList* = DEFINE_GUID("30510510-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_SVGPathSegList* = DEFINE_GUID("305105b4-98b5-11cf-bb82-00aa00bdce0b")
   IID_ISVGPoint* = DEFINE_GUID("305104f4-98b5-11cf-bb82-00aa00bdce0b")
@@ -2758,12 +2847,16 @@
   DIID_DispSVGUseElement* = DEFINE_GUID("30590010-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispSVGUseElement* = DEFINE_GUID("30590010-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_SVGUseElement* = DEFINE_GUID("30510590-98b5-11cf-bb82-00aa00bdce0b")
-  IID_IHTMLStyleSheetRulesAppliedCollection* = DEFINE_GUID("305104c0-98b5-11cf-bb82-00aa00bdce0b")
+  IID_IHTMLStyleSheetRulesAppliedCollection* =
+    DEFINE_GUID("305104c0-98b5-11cf-bb82-00aa00bdce0b")
   IID_IRulesApplied* = DEFINE_GUID("305104bf-98b5-11cf-bb82-00aa00bdce0b")
   IID_IRulesAppliedCollection* = DEFINE_GUID("305104be-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispHTMLStyleSheetRulesAppliedCollection* = DEFINE_GUID("3050f5a6-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispHTMLStyleSheetRulesAppliedCollection* = DEFINE_GUID("3050f5a6-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_HTMLStyleSheetRulesAppliedCollection* = DEFINE_GUID("eb36f845-2395-4719-b85c-d0d80e184bd9")
+  DIID_DispHTMLStyleSheetRulesAppliedCollection* =
+    DEFINE_GUID("3050f5a6-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispHTMLStyleSheetRulesAppliedCollection* =
+    DEFINE_GUID("3050f5a6-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_HTMLStyleSheetRulesAppliedCollection* =
+    DEFINE_GUID("eb36f845-2395-4719-b85c-d0d80e184bd9")
   DIID_DispRulesApplied* = DEFINE_GUID("3050f5a5-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispRulesApplied* = DEFINE_GUID("3050f5a5-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_RulesApplied* = DEFINE_GUID("7c803920-7a53-4d26-98ac-fdd23e6b9e01")
@@ -2839,8 +2932,10 @@
   DIID_DispSVGTextElement* = DEFINE_GUID("30590037-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispSVGTextElement* = DEFINE_GUID("30590037-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_SVGTextElement* = DEFINE_GUID("305105df-98b5-11cf-bb82-00aa00bdce0b")
-  IID_ISVGAnimatedPreserveAspectRatio* = DEFINE_GUID("305104fb-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_SVGAnimatedPreserveAspectRatio* = DEFINE_GUID("305105ce-98b5-11cf-bb82-00aa00bdce0b")
+  IID_ISVGAnimatedPreserveAspectRatio* =
+    DEFINE_GUID("305104fb-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_SVGAnimatedPreserveAspectRatio* =
+    DEFINE_GUID("305105ce-98b5-11cf-bb82-00aa00bdce0b")
   IID_ISVGImageElement* = DEFINE_GUID("305104f0-98b5-11cf-bb82-00aa00bdce0b")
   DIID_DispSVGImageElement* = DEFINE_GUID("30590027-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispSVGImageElement* = DEFINE_GUID("30590027-98b5-11cf-bb82-00aa00bdce0b")
@@ -2863,12 +2958,16 @@
   IID_DispSVGGradientElement* = DEFINE_GUID("3059002e-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_SVGGradientElement* = DEFINE_GUID("305105d6-98b5-11cf-bb82-00aa00bdce0b")
   IID_ISVGLinearGradientElement* = DEFINE_GUID("30510529-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGLinearGradientElement* = DEFINE_GUID("3059002a-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGLinearGradientElement* = DEFINE_GUID("3059002a-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGLinearGradientElement* =
+    DEFINE_GUID("3059002a-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGLinearGradientElement* =
+    DEFINE_GUID("3059002a-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_SVGLinearGradientElement* = DEFINE_GUID("305105d2-98b5-11cf-bb82-00aa00bdce0b")
   IID_ISVGRadialGradientElement* = DEFINE_GUID("3051052a-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGRadialGradientElement* = DEFINE_GUID("3059002b-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGRadialGradientElement* = DEFINE_GUID("3059002b-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGRadialGradientElement* =
+    DEFINE_GUID("3059002b-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGRadialGradientElement* =
+    DEFINE_GUID("3059002b-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_SVGRadialGradientElement* = DEFINE_GUID("305105d3-98b5-11cf-bb82-00aa00bdce0b")
   IID_ISVGMaskElement* = DEFINE_GUID("3051052e-98b5-11cf-bb82-00aa00bdce0b")
   DIID_DispSVGMaskElement* = DEFINE_GUID("3059003c-98b5-11cf-bb82-00aa00bdce0b")
@@ -3056,8 +3155,10 @@
   IID_DispSVGTextContentElement* = DEFINE_GUID("30590035-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_SVGTextContentElement* = DEFINE_GUID("305105dd-98b5-11cf-bb82-00aa00bdce0b")
   IID_ISVGTextPositioningElement* = DEFINE_GUID("3051051b-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispSVGTextPositioningElement* = DEFINE_GUID("30590038-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispSVGTextPositioningElement* = DEFINE_GUID("30590038-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispSVGTextPositioningElement* =
+    DEFINE_GUID("30590038-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispSVGTextPositioningElement* =
+    DEFINE_GUID("30590038-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_SVGTextPositioningElement* = DEFINE_GUID("305105e0-98b5-11cf-bb82-00aa00bdce0b")
   IID_IDOMDocumentType* = DEFINE_GUID("30510738-98b5-11cf-bb82-00aa00bdce0b")
   DIID_DispDOMDocumentType* = DEFINE_GUID("30590098-98b5-11cf-bb82-00aa00bdce0b")
@@ -3072,8 +3173,10 @@
   IID_DispTreeWalker* = DEFINE_GUID("3059009d-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_TreeWalker* = DEFINE_GUID("30510747-98b5-11cf-bb82-00aa00bdce0b")
   IID_IDOMProcessingInstruction* = DEFINE_GUID("30510742-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispDOMProcessingInstruction* = DEFINE_GUID("3059009b-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispDOMProcessingInstruction* = DEFINE_GUID("3059009b-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispDOMProcessingInstruction* =
+    DEFINE_GUID("3059009b-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispDOMProcessingInstruction* =
+    DEFINE_GUID("3059009b-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_DOMProcessingInstruction* = DEFINE_GUID("30510743-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLPerformance* = DEFINE_GUID("3051074e-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLPerformanceNavigation* = DEFINE_GUID("30510750-98b5-11cf-bb82-00aa00bdce0b")
@@ -3081,8 +3184,10 @@
   DIID_DispHTMLPerformance* = DEFINE_GUID("3059009f-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispHTMLPerformance* = DEFINE_GUID("3059009f-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_HTMLPerformance* = DEFINE_GUID("3051074f-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispHTMLPerformanceNavigation* = DEFINE_GUID("305900a0-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispHTMLPerformanceNavigation* = DEFINE_GUID("305900a0-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispHTMLPerformanceNavigation* =
+    DEFINE_GUID("305900a0-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispHTMLPerformanceNavigation* =
+    DEFINE_GUID("305900a0-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_HTMLPerformanceNavigation* = DEFINE_GUID("30510751-98b5-11cf-bb82-00aa00bdce0b")
   DIID_DispHTMLPerformanceTiming* = DEFINE_GUID("305900a1-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispHTMLPerformanceTiming* = DEFINE_GUID("305900a1-98b5-11cf-bb82-00aa00bdce0b")
@@ -3094,11 +3199,15 @@
   IID_ITemplatePrinter* = DEFINE_GUID("3050f6b4-98b5-11cf-bb82-00aa00bdce0b")
   IID_ITemplatePrinter2* = DEFINE_GUID("3050f83f-98b5-11cf-bb82-00aa00bdce0b")
   IID_ITemplatePrinter3* = DEFINE_GUID("305104a3-98b5-11cf-bb82-00aa00bdce0b")
-  IID_IPrintManagerTemplatePrinter* = DEFINE_GUID("f633be14-9eff-4c4d-929e-05717b21b3e6")
+  IID_IPrintManagerTemplatePrinter* =
+    DEFINE_GUID("f633be14-9eff-4c4d-929e-05717b21b3e6")
   CLSID_CTemplatePrinter* = DEFINE_GUID("3050f6b3-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispCPrintManagerTemplatePrinter* = DEFINE_GUID("305900e9-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispCPrintManagerTemplatePrinter* = DEFINE_GUID("305900e9-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_CPrintManagerTemplatePrinter* = DEFINE_GUID("63619f54-9d71-4c23-a08d-50d7f18db2e9")
+  DIID_DispCPrintManagerTemplatePrinter* =
+    DEFINE_GUID("305900e9-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispCPrintManagerTemplatePrinter* =
+    DEFINE_GUID("305900e9-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_CPrintManagerTemplatePrinter* =
+    DEFINE_GUID("63619f54-9d71-4c23-a08d-50d7f18db2e9")
   TEXTPATH_METHODTYPE_UNKNOWN* = 0
   TEXTPATH_METHODTYPE_ALIGN* = 1
   TEXTPATH_METHODTYPE_STRETCH* = 2
@@ -3118,7 +3227,8 @@
   DIID_DispXMLSerializer* = DEFINE_GUID("305900ad-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispXMLSerializer* = DEFINE_GUID("305900ad-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_XMLSerializer* = DEFINE_GUID("3051077e-98b5-11cf-bb82-00aa00bdce0b")
-  CLSID_HTMLDOMXmlSerializerFactory* = DEFINE_GUID("30510780-98b5-11cf-bb82-00aa00bdce0b")
+  CLSID_HTMLDOMXmlSerializerFactory* =
+    DEFINE_GUID("30510780-98b5-11cf-bb82-00aa00bdce0b")
   DIID_DispDOMParser* = DEFINE_GUID("305900ae-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispDOMParser* = DEFINE_GUID("305900ae-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_DOMParser* = DEFINE_GUID("30510782-98b5-11cf-bb82-00aa00bdce0b")
@@ -3697,11 +3807,15 @@
   CLSID_HtmlDlgSafeHelper* = DEFINE_GUID("3050f819-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_BlockFormats* = DEFINE_GUID("3050f831-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_FontNames* = DEFINE_GUID("3050f83a-98b5-11cf-bb82-00aa00bdce0b")
-  IID_IDeveloperConsoleMessageReceiver* = DEFINE_GUID("30510808-98b5-11cf-bb82-00aa00bdce0b")
-  IID_IDebugCallbackNotificationHandler* = DEFINE_GUID("30510842-98b5-11cf-bb82-00aa00bdce0b")
+  IID_IDeveloperConsoleMessageReceiver* =
+    DEFINE_GUID("30510808-98b5-11cf-bb82-00aa00bdce0b")
+  IID_IDebugCallbackNotificationHandler* =
+    DEFINE_GUID("30510842-98b5-11cf-bb82-00aa00bdce0b")
   IID_IScriptEventHandler* = DEFINE_GUID("3051083a-98b5-11cf-bb82-00aa00bdce0b")
-  IID_IScriptEventHandlerSourceInfo* = DEFINE_GUID("30510841-98b5-11cf-bb82-00aa00bdce0b")
-  IID_IDOMEventRegistrationCallback* = DEFINE_GUID("3051083b-98b5-11cf-bb82-00aa00bdce0b")
+  IID_IScriptEventHandlerSourceInfo* =
+    DEFINE_GUID("30510841-98b5-11cf-bb82-00aa00bdce0b")
+  IID_IDOMEventRegistrationCallback* =
+    DEFINE_GUID("3051083b-98b5-11cf-bb82-00aa00bdce0b")
   IID_IEventTarget2* = DEFINE_GUID("30510839-98b5-11cf-bb82-00aa00bdce0b")
   DIID_HTMLNamespaceEvents* = DEFINE_GUID("3050f6bd-98b5-11cf-bb82-00aa00bdce0b")
   IID_HTMLNamespaceEvents* = DEFINE_GUID("3050f6bd-98b5-11cf-bb82-00aa00bdce0b")
@@ -3710,7 +3824,8 @@
   DIID_DispHTMLNamespace* = DEFINE_GUID("3050f54f-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispHTMLNamespace* = DEFINE_GUID("3050f54f-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_HTMLNamespace* = DEFINE_GUID("3050f6bc-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispHTMLNamespaceCollection* = DEFINE_GUID("3050f550-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispHTMLNamespaceCollection* =
+    DEFINE_GUID("3050f550-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispHTMLNamespaceCollection* = DEFINE_GUID("3050f550-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_HTMLNamespaceCollection* = DEFINE_GUID("3050f6b9-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLPainter* = DEFINE_GUID("3050f6a6-98b5-11cf-bb82-00aa00bdce0b")
@@ -3720,7 +3835,8 @@
   IID_IHTMLIPrintCollection* = DEFINE_GUID("3050f6b5-98b5-11cf-bb82-00aa00bdce0b")
   IID_IEnumPrivacyRecords* = DEFINE_GUID("3050f844-98b5-11cf-bb82-00aa00bdce0b")
   IID_IWPCBlockedUrls* = DEFINE_GUID("30510413-98b5-11cf-bb82-00aa00bdce0b")
-  IID_IHTMLDOMConstructorCollection* = DEFINE_GUID("3051049c-98b5-11cf-bb82-00aa00bdce0b")
+  IID_IHTMLDOMConstructorCollection* =
+    DEFINE_GUID("3051049c-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLDialog* = DEFINE_GUID("3050f216-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLDialog2* = DEFINE_GUID("3050f5e0-98b5-11cf-bb82-00aa00bdce0b")
   IID_IHTMLDialog3* = DEFINE_GUID("3050f388-98b5-11cf-bb82-00aa00bdce0b")
@@ -3739,7 +3855,8 @@
   CLSID_HTMLAppBehavior* = DEFINE_GUID("3050f5cb-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_OldHTMLDocument* = DEFINE_GUID("d48a6ec9-6a4a-11cf-94a7-444553540000")
   CLSID_OldHTMLFormElement* = DEFINE_GUID("0d04d285-6bec-11cf-8b97-00aa00476da6")
-  DIID_DispIHTMLInputButtonElement* = DEFINE_GUID("3050f51e-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispIHTMLInputButtonElement* =
+    DEFINE_GUID("3050f51e-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispIHTMLInputButtonElement* = DEFINE_GUID("3050f51e-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_HTMLInputButtonElement* = DEFINE_GUID("3050f2b4-98b5-11cf-bb82-00aa00bdce0b")
   DIID_DispIHTMLInputTextElement* = DEFINE_GUID("3050f520-98b5-11cf-bb82-00aa00bdce0b")
@@ -3748,8 +3865,10 @@
   DIID_DispIHTMLInputFileElement* = DEFINE_GUID("3050f542-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispIHTMLInputFileElement* = DEFINE_GUID("3050f542-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_HTMLInputFileElement* = DEFINE_GUID("3050f2ae-98b5-11cf-bb82-00aa00bdce0b")
-  DIID_DispIHTMLOptionButtonElement* = DEFINE_GUID("3050f509-98b5-11cf-bb82-00aa00bdce0b")
-  IID_DispIHTMLOptionButtonElement* = DEFINE_GUID("3050f509-98b5-11cf-bb82-00aa00bdce0b")
+  DIID_DispIHTMLOptionButtonElement* =
+    DEFINE_GUID("3050f509-98b5-11cf-bb82-00aa00bdce0b")
+  IID_DispIHTMLOptionButtonElement* =
+    DEFINE_GUID("3050f509-98b5-11cf-bb82-00aa00bdce0b")
   CLSID_HTMLOptionButtonElement* = DEFINE_GUID("3050f2be-98b5-11cf-bb82-00aa00bdce0b")
   DIID_DispIHTMLInputImage* = DEFINE_GUID("3050f51d-98b5-11cf-bb82-00aa00bdce0b")
   IID_DispIHTMLInputImage* = DEFINE_GUID("3050f51d-98b5-11cf-bb82-00aa00bdce0b")
@@ -3758,7 +3877,8 @@
   IID_IElementNamespaceTable* = DEFINE_GUID("3050f670-98b5-11cf-bb82-00aa00bdce0b")
   IID_IElementNamespaceFactory* = DEFINE_GUID("3050f672-98b5-11cf-bb82-00aa00bdce0b")
   IID_IElementNamespaceFactory2* = DEFINE_GUID("3050f805-98b5-11cf-bb82-00aa00bdce0b")
-  IID_IElementNamespaceFactoryCallback* = DEFINE_GUID("3050f7fd-98b5-11cf-bb82-00aa00bdce0b")
+  IID_IElementNamespaceFactoryCallback* =
+    DEFINE_GUID("3050f7fd-98b5-11cf-bb82-00aa00bdce0b")
   IID_IElementBehavior* = DEFINE_GUID("3050f425-98b5-11cf-bb82-00aa00bdce0b")
   IID_IElementBehaviorSite* = DEFINE_GUID("3050f427-98b5-11cf-bb82-00aa00bdce0b")
   IID_IElementBehaviorSiteOM* = DEFINE_GUID("3050f489-98b5-11cf-bb82-00aa00bdce0b")
@@ -3766,7 +3886,8 @@
   IID_IElementBehaviorRender* = DEFINE_GUID("3050f4aa-98b5-11cf-bb82-00aa00bdce0b")
   IID_IElementBehaviorSiteRender* = DEFINE_GUID("3050f4a7-98b5-11cf-bb82-00aa00bdce0b")
   IID_IElementBehaviorCategory* = DEFINE_GUID("3050f4ed-98b5-11cf-bb82-00aa00bdce0b")
-  IID_IElementBehaviorSiteCategory* = DEFINE_GUID("3050f4ee-98b5-11cf-bb82-00aa00bdce0b")
+  IID_IElementBehaviorSiteCategory* =
+    DEFINE_GUID("3050f4ee-98b5-11cf-bb82-00aa00bdce0b")
   IID_IElementBehaviorSubmit* = DEFINE_GUID("3050f646-98b5-11cf-bb82-00aa00bdce0b")
   IID_IElementBehaviorFocus* = DEFINE_GUID("3050f6b6-98b5-11cf-bb82-00aa00bdce0b")
   IID_IElementBehaviorLayout* = DEFINE_GUID("3050f6ba-98b5-11cf-bb82-00aa00bdce0b")
@@ -3778,7 +3899,8 @@
   IID_ISurfacePresenter* = DEFINE_GUID("305106e2-98b5-11cf-bb82-00aa00bdce0b")
   IID_ICanvasPixelArrayData* = DEFINE_GUID("305107f9-98b5-11cf-bb82-00aa00bdce0b")
   IID_IViewObjectPrint* = DEFINE_GUID("305106e3-98b5-11cf-bb82-00aa00bdce0b")
-  IID_IViewObjectPresentNotifySite* = DEFINE_GUID("305107fa-98b5-11cf-bb82-00aa00bdce0b")
+  IID_IViewObjectPresentNotifySite* =
+    DEFINE_GUID("305107fa-98b5-11cf-bb82-00aa00bdce0b")
   IID_IViewObjectPresentNotify* = DEFINE_GUID("305107f8-98b5-11cf-bb82-00aa00bdce0b")
   CONTEXT_MENU_DEFAULT* = 0
   CONTEXT_MENU_IMAGE* = 1
@@ -3811,7 +3933,9 @@
   HTMLDLG_ALLOW_UNKNOWN_THREAD* = 0x200
   PRINT_DONTBOTHERUSER* = 0x1
   PRINT_WAITFORCOMPLETION* = 0x2
-  CGID_MSHTML* = DEFINE_GUID(0xde4ba900'i32, 0x59ca, 0x11cf, [0x95'u8, 0x92, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00])
+  CGID_MSHTML* = DEFINE_GUID(
+    0xde4ba900'i32, 0x59ca, 0x11cf, [0x95'u8, 0x92, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]
+  )
   CMDSETID_Forms3* = CGID_MSHTML
   SZ_HTML_CLIENTSITE_OBJECTPARAM* = "{d4db6850-5385-11d0-89e9-00a0c90a90ac}"
   CGID_DocHostCommandHandler* = DEFINE_GUID("f38bc242-b950-11d1-8918-00c04fc2c836")
@@ -3848,7 +3972,8 @@
   DOCHOSTUIFLAG_USE_WINDOWED_SELECTCONTROL* = 0x10000000
   DOCHOSTUIFLAG_ENABLE_ACTIVEX_INACTIVATE_MODE* = 0x20000000
   DOCHOSTUIFLAG_DPI_AWARE* = 0x40000000
-  DOCHOSTUIFLAG_BROWSER* = DOCHOSTUIFLAG_DISABLE_HELP_MENU or DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE
+  DOCHOSTUIFLAG_BROWSER* =
+    DOCHOSTUIFLAG_DISABLE_HELP_MENU or DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE
   DOCHOSTUITYPE_BROWSE* = 0
   DOCHOSTUITYPE_AUTHOR* = 1
   IID_IHostDialogHelper* = DEFINE_GUID("53dec138-a51e-11d2-861e-00c04fa35c89")
@@ -3862,25 +3987,48 @@
   IID_IHTMLOMWindowServices* = DEFINE_GUID("3050f5fc-98b5-11cf-bb82-00aa00bdce0b")
   SID_SHTMLOMWindowServices* = IID_IHTMLOMWindowServices
 type
-  SHOWHTMLDIALOGFN* = proc (hwndParent: HWND, pmk: ptr IMoniker, pvarArgIn: ptr VARIANT, pchOptions: ptr WCHAR, pvArgOut: ptr VARIANT): HRESULT {.stdcall.}
-  SHOWHTMLDIALOGEXFN* = proc (hwndParent: HWND, pmk: ptr IMoniker, dwDialogFlags: DWORD, pvarArgIn: ptr VARIANT, pchOptions: ptr WCHAR, pvArgOut: ptr VARIANT): HRESULT {.stdcall.}
+  SHOWHTMLDIALOGFN* = proc(
+    hwndParent: HWND,
+    pmk: ptr IMoniker,
+    pvarArgIn: ptr VARIANT,
+    pchOptions: ptr WCHAR,
+    pvArgOut: ptr VARIANT,
+  ): HRESULT {.stdcall.}
+  SHOWHTMLDIALOGEXFN* = proc(
+    hwndParent: HWND,
+    pmk: ptr IMoniker,
+    dwDialogFlags: DWORD,
+    pvarArgIn: ptr VARIANT,
+    pchOptions: ptr WCHAR,
+    pvArgOut: ptr VARIANT,
+  ): HRESULT {.stdcall.}
   IHTMLFramesCollection2* {.pure.} = object
     lpVtbl*: ptr IHTMLFramesCollection2Vtbl
+
   IHTMLFramesCollection2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    item*: proc(self: ptr IHTMLFramesCollection2, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.stdcall.}
-    get_length*: proc(self: ptr IHTMLFramesCollection2, p: ptr LONG): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLFramesCollection2, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLFramesCollection2, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLImgElement* {.pure.} = object
     lpVtbl*: ptr IHTMLImgElementVtbl
+
   IHTMLImgElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_isMap*: proc(self: ptr IHTMLImgElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_isMap*: proc(self: ptr IHTMLImgElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_isMap*:
+      proc(self: ptr IHTMLImgElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_useMap*: proc(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.stdcall.}
     get_useMap*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_mimeType*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_fileSize*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_fileCreatedDate*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_fileModifiedDate*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_fileUpdatedDate*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_fileCreatedDate*:
+      proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_fileModifiedDate*:
+      proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_fileUpdatedDate*:
+      proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_protocol*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_href*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_nameProp*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
@@ -3901,7 +4049,8 @@
     put_dynsrc*: proc(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.stdcall.}
     get_dynsrc*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_readyState*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_complete*: proc(self: ptr IHTMLImgElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_complete*:
+      proc(self: ptr IHTMLImgElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_loop*: proc(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.stdcall.}
     get_loop*: proc(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_align*: proc(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.stdcall.}
@@ -3920,12 +4069,21 @@
     get_height*: proc(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.stdcall.}
     put_start*: proc(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.stdcall.}
     get_start*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLImageElementFactory* {.pure.} = object
     lpVtbl*: ptr IHTMLImageElementFactoryVtbl
+
   IHTMLImageElementFactoryVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    create*: proc(self: ptr IHTMLImageElementFactory, width: VARIANT, height: VARIANT, a: ptr ptr IHTMLImgElement): HRESULT {.stdcall.}
+    create*: proc(
+      self: ptr IHTMLImageElementFactory,
+      width: VARIANT,
+      height: VARIANT,
+      a: ptr ptr IHTMLImgElement,
+    ): HRESULT {.stdcall.}
+
   IHTMLLocation* {.pure.} = object
     lpVtbl*: ptr IHTMLLocationVtbl
+
   IHTMLLocationVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_href*: proc(self: ptr IHTMLLocation, v: BSTR): HRESULT {.stdcall.}
     get_href*: proc(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.stdcall.}
@@ -3947,47 +4105,104 @@
     replace*: proc(self: ptr IHTMLLocation, bstr: BSTR): HRESULT {.stdcall.}
     assign*: proc(self: ptr IHTMLLocation, bstr: BSTR): HRESULT {.stdcall.}
     toString*: proc(self: ptr IHTMLLocation, string: ptr BSTR): HRESULT {.stdcall.}
+
   IOmHistory* {.pure.} = object
     lpVtbl*: ptr IOmHistoryVtbl
+
   IOmHistoryVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_length*: proc(self: ptr IOmHistory, p: ptr int16): HRESULT {.stdcall.}
     back*: proc(self: ptr IOmHistory, pvargdistance: ptr VARIANT): HRESULT {.stdcall.}
-    forward*: proc(self: ptr IOmHistory, pvargdistance: ptr VARIANT): HRESULT {.stdcall.}
+    forward*:
+      proc(self: ptr IOmHistory, pvargdistance: ptr VARIANT): HRESULT {.stdcall.}
     go*: proc(self: ptr IOmHistory, pvargdistance: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLMimeTypesCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLMimeTypesCollectionVtbl
+
   IHTMLMimeTypesCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLMimeTypesCollection, p: ptr LONG): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLMimeTypesCollection, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLPluginsCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLPluginsCollectionVtbl
+
   IHTMLPluginsCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLPluginsCollection, p: ptr LONG): HRESULT {.stdcall.}
-    refresh*: proc(self: ptr IHTMLPluginsCollection, reload: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLPluginsCollection, p: ptr LONG): HRESULT {.stdcall.}
+    refresh*:
+      proc(self: ptr IHTMLPluginsCollection, reload: VARIANT_BOOL): HRESULT {.stdcall.}
+
   IHTMLOpsProfile* {.pure.} = object
     lpVtbl*: ptr IHTMLOpsProfileVtbl
+
   IHTMLOpsProfileVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    addRequest*: proc(self: ptr IHTMLOpsProfile, name: BSTR, reserved: VARIANT, success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    addRequest*: proc(
+      self: ptr IHTMLOpsProfile,
+      name: BSTR,
+      reserved: VARIANT,
+      success: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
     clearRequest*: proc(self: ptr IHTMLOpsProfile): HRESULT {.stdcall.}
-    doRequest*: proc(self: ptr IHTMLOpsProfile, usage: VARIANT, fname: VARIANT, domain: VARIANT, path: VARIANT, expire: VARIANT, reserved: VARIANT): HRESULT {.stdcall.}
-    getAttribute*: proc(self: ptr IHTMLOpsProfile, name: BSTR, value: ptr BSTR): HRESULT {.stdcall.}
-    setAttribute*: proc(self: ptr IHTMLOpsProfile, name: BSTR, value: BSTR, prefs: VARIANT, success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    commitChanges*: proc(self: ptr IHTMLOpsProfile, success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    addReadRequest*: proc(self: ptr IHTMLOpsProfile, name: BSTR, reserved: VARIANT, success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    doReadRequest*: proc(self: ptr IHTMLOpsProfile, usage: VARIANT, fname: VARIANT, domain: VARIANT, path: VARIANT, expire: VARIANT, reserved: VARIANT): HRESULT {.stdcall.}
-    doWriteRequest*: proc(self: ptr IHTMLOpsProfile, success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    doRequest*: proc(
+      self: ptr IHTMLOpsProfile,
+      usage: VARIANT,
+      fname: VARIANT,
+      domain: VARIANT,
+      path: VARIANT,
+      expire: VARIANT,
+      reserved: VARIANT,
+    ): HRESULT {.stdcall.}
+    getAttribute*:
+      proc(self: ptr IHTMLOpsProfile, name: BSTR, value: ptr BSTR): HRESULT {.stdcall.}
+    setAttribute*: proc(
+      self: ptr IHTMLOpsProfile,
+      name: BSTR,
+      value: BSTR,
+      prefs: VARIANT,
+      success: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    commitChanges*:
+      proc(self: ptr IHTMLOpsProfile, success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    addReadRequest*: proc(
+      self: ptr IHTMLOpsProfile,
+      name: BSTR,
+      reserved: VARIANT,
+      success: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    doReadRequest*: proc(
+      self: ptr IHTMLOpsProfile,
+      usage: VARIANT,
+      fname: VARIANT,
+      domain: VARIANT,
+      path: VARIANT,
+      expire: VARIANT,
+      reserved: VARIANT,
+    ): HRESULT {.stdcall.}
+    doWriteRequest*:
+      proc(self: ptr IHTMLOpsProfile, success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   IOmNavigator* {.pure.} = object
     lpVtbl*: ptr IOmNavigatorVtbl
+
   IOmNavigatorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_appCodeName*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
     get_appName*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
     get_appVersion*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
     get_userAgent*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
-    javaEnabled*: proc(self: ptr IOmNavigator, enabled: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    taintEnabled*: proc(self: ptr IOmNavigator, enabled: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_mimeTypes*: proc(self: ptr IOmNavigator, p: ptr ptr IHTMLMimeTypesCollection): HRESULT {.stdcall.}
-    get_plugins*: proc(self: ptr IOmNavigator, p: ptr ptr IHTMLPluginsCollection): HRESULT {.stdcall.}
-    get_cookieEnabled*: proc(self: ptr IOmNavigator, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_opsProfile*: proc(self: ptr IOmNavigator, p: ptr ptr IHTMLOpsProfile): HRESULT {.stdcall.}
+    javaEnabled*:
+      proc(self: ptr IOmNavigator, enabled: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    taintEnabled*:
+      proc(self: ptr IOmNavigator, enabled: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_mimeTypes*: proc(
+      self: ptr IOmNavigator, p: ptr ptr IHTMLMimeTypesCollection
+    ): HRESULT {.stdcall.}
+    get_plugins*: proc(
+      self: ptr IOmNavigator, p: ptr ptr IHTMLPluginsCollection
+    ): HRESULT {.stdcall.}
+    get_cookieEnabled*:
+      proc(self: ptr IOmNavigator, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_opsProfile*:
+      proc(self: ptr IOmNavigator, p: ptr ptr IHTMLOpsProfile): HRESULT {.stdcall.}
     toString*: proc(self: ptr IOmNavigator, string: ptr BSTR): HRESULT {.stdcall.}
     get_cpuClass*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
     get_systemLanguage*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
@@ -3997,22 +4212,40 @@
     get_appMinorVersion*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
     get_connectionSpeed*: proc(self: ptr IOmNavigator, p: ptr LONG): HRESULT {.stdcall.}
     get_onLine*: proc(self: ptr IOmNavigator, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_userProfile*: proc(self: ptr IOmNavigator, p: ptr ptr IHTMLOpsProfile): HRESULT {.stdcall.}
+    get_userProfile*:
+      proc(self: ptr IOmNavigator, p: ptr ptr IHTMLOpsProfile): HRESULT {.stdcall.}
+
   IHTMLDocument* {.pure.} = object
     lpVtbl*: ptr IHTMLDocumentVtbl
+
   IHTMLDocumentVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_Script*: proc(self: ptr IHTMLDocument, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Script*:
+      proc(self: ptr IHTMLDocument, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+
   IHTMLElementCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLElementCollectionVtbl
+
   IHTMLElementCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    toString*: proc(self: ptr IHTMLElementCollection, String: ptr BSTR): HRESULT {.stdcall.}
+    toString*:
+      proc(self: ptr IHTMLElementCollection, String: ptr BSTR): HRESULT {.stdcall.}
     put_length*: proc(self: ptr IHTMLElementCollection, v: LONG): HRESULT {.stdcall.}
-    get_length*: proc(self: ptr IHTMLElementCollection, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IHTMLElementCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLElementCollection, name: VARIANT, index: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
-    tags*: proc(self: ptr IHTMLElementCollection, tagName: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLElementCollection, p: ptr LONG): HRESULT {.stdcall.}
+    get_newEnum*:
+      proc(self: ptr IHTMLElementCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLElementCollection,
+      name: VARIANT,
+      index: VARIANT,
+      pdisp: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
+    tags*: proc(
+      self: ptr IHTMLElementCollection, tagName: VARIANT, pdisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLStyle* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleVtbl
+
   IHTMLStyleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_fontFamily*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
     get_fontFamily*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
@@ -4031,35 +4264,52 @@
     put_background*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
     get_background*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_backgroundColor*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_backgroundColor*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_backgroundColor*:
+      proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_backgroundImage*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
     get_backgroundImage*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_backgroundRepeat*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
     get_backgroundRepeat*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_backgroundAttachment*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
-    get_backgroundAttachment*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_backgroundAttachment*:
+      proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_backgroundPosition*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
-    get_backgroundPosition*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    put_backgroundPositionX*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_backgroundPositionX*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_backgroundPositionY*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_backgroundPositionY*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_backgroundPosition*:
+      proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    put_backgroundPositionX*:
+      proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
+    get_backgroundPositionX*:
+      proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_backgroundPositionY*:
+      proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
+    get_backgroundPositionY*:
+      proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_wordSpacing*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
     get_wordSpacing*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_letterSpacing*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
     get_letterSpacing*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_textDecoration*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
     get_textDecoration*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textDecorationNone*: proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_textDecorationNone*: proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_textDecorationUnderline*: proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_textDecorationUnderline*: proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_textDecorationOverline*: proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_textDecorationOverline*: proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_textDecorationLineThrough*: proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_textDecorationLineThrough*: proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_textDecorationBlink*: proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_textDecorationBlink*: proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_textDecorationNone*:
+      proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_textDecorationNone*:
+      proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_textDecorationUnderline*:
+      proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_textDecorationUnderline*:
+      proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_textDecorationOverline*:
+      proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_textDecorationOverline*:
+      proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_textDecorationLineThrough*:
+      proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_textDecorationLineThrough*:
+      proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_textDecorationBlink*:
+      proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_textDecorationBlink*:
+      proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_verticalAlign*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
     get_verticalAlign*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_textTransform*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
@@ -4105,21 +4355,27 @@
     put_borderTopColor*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
     get_borderTopColor*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_borderRightColor*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_borderRightColor*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderRightColor*:
+      proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_borderBottomColor*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_borderBottomColor*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderBottomColor*:
+      proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_borderLeftColor*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_borderLeftColor*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderLeftColor*:
+      proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_borderWidth*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
     get_borderWidth*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_borderTopWidth*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
     get_borderTopWidth*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_borderRightWidth*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_borderRightWidth*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderRightWidth*:
+      proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_borderBottomWidth*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_borderBottomWidth*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderBottomWidth*:
+      proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_borderLeftWidth*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_borderLeftWidth*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderLeftWidth*:
+      proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_borderStyle*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
     get_borderStyle*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_borderTopStyle*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
@@ -4189,28 +4445,67 @@
     get_clip*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_filter*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
     get_filter*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    setAttribute*: proc(self: ptr IHTMLStyle, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG): HRESULT {.stdcall.}
-    getAttribute*: proc(self: ptr IHTMLStyle, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.stdcall.}
-    removeAttribute*: proc(self: ptr IHTMLStyle, strAttributeName: BSTR, lFlags: LONG, pfSuccess: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    setAttribute*: proc(
+      self: ptr IHTMLStyle,
+      strAttributeName: BSTR,
+      AttributeValue: VARIANT,
+      lFlags: LONG,
+    ): HRESULT {.stdcall.}
+    getAttribute*: proc(
+      self: ptr IHTMLStyle,
+      strAttributeName: BSTR,
+      lFlags: LONG,
+      AttributeValue: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    removeAttribute*: proc(
+      self: ptr IHTMLStyle,
+      strAttributeName: BSTR,
+      lFlags: LONG,
+      pfSuccess: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
     toString*: proc(self: ptr IHTMLStyle, String: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLFiltersCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLFiltersCollectionVtbl
+
   IHTMLFiltersCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLFiltersCollection, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IHTMLFiltersCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLFiltersCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLFiltersCollection, p: ptr LONG): HRESULT {.stdcall.}
+    get_newEnum*:
+      proc(self: ptr IHTMLFiltersCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLFiltersCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT
+    ): HRESULT {.stdcall.}
+
   IHTMLElement* {.pure.} = object
     lpVtbl*: ptr IHTMLElementVtbl
+
   IHTMLElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    setAttribute*: proc(self: ptr IHTMLElement, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG): HRESULT {.stdcall.}
-    getAttribute*: proc(self: ptr IHTMLElement, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.stdcall.}
-    removeAttribute*: proc(self: ptr IHTMLElement, strAttributeName: BSTR, lFlags: LONG, pfSuccess: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    setAttribute*: proc(
+      self: ptr IHTMLElement,
+      strAttributeName: BSTR,
+      AttributeValue: VARIANT,
+      lFlags: LONG,
+    ): HRESULT {.stdcall.}
+    getAttribute*: proc(
+      self: ptr IHTMLElement,
+      strAttributeName: BSTR,
+      lFlags: LONG,
+      AttributeValue: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    removeAttribute*: proc(
+      self: ptr IHTMLElement,
+      strAttributeName: BSTR,
+      lFlags: LONG,
+      pfSuccess: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
     put_className*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
     get_className*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_id*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
     get_id*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_tagName*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_parentElement*: proc(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_parentElement*:
+      proc(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
     get_style*: proc(self: ptr IHTMLElement, p: ptr ptr IHTMLStyle): HRESULT {.stdcall.}
     put_onhelp*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
     get_onhelp*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
@@ -4234,15 +4529,20 @@
     get_onmousedown*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmouseup*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
     get_onmouseup*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_document*: proc(self: ptr IHTMLElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_document*:
+      proc(self: ptr IHTMLElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     put_title*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
     get_title*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_language*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
     get_language*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_onselectstart*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onselectstart*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    scrollIntoView*: proc(self: ptr IHTMLElement, varargStart: VARIANT): HRESULT {.stdcall.}
-    contains*: proc(self: ptr IHTMLElement, pChild: ptr IHTMLElement, pfResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_onselectstart*:
+      proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    scrollIntoView*:
+      proc(self: ptr IHTMLElement, varargStart: VARIANT): HRESULT {.stdcall.}
+    contains*: proc(
+      self: ptr IHTMLElement, pChild: ptr IHTMLElement, pfResult: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     get_sourceIndex*: proc(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.stdcall.}
     get_recordNumber*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_lang*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
@@ -4251,7 +4551,8 @@
     get_offsetTop*: proc(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.stdcall.}
     get_offsetWidth*: proc(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.stdcall.}
     get_offsetHeight*: proc(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.stdcall.}
-    get_offsetParent*: proc(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_offsetParent*:
+      proc(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
     put_innerHTML*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
     get_innerHTML*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_innerText*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
@@ -4260,50 +4561,80 @@
     get_outerHTML*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_outerText*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
     get_outerText*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
-    insertAdjacentHTML*: proc(self: ptr IHTMLElement, where: BSTR, html: BSTR): HRESULT {.stdcall.}
-    insertAdjacentText*: proc(self: ptr IHTMLElement, where: BSTR, text: BSTR): HRESULT {.stdcall.}
-    get_parentTextEdit*: proc(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    get_isTextEdit*: proc(self: ptr IHTMLElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    insertAdjacentHTML*:
+      proc(self: ptr IHTMLElement, where: BSTR, html: BSTR): HRESULT {.stdcall.}
+    insertAdjacentText*:
+      proc(self: ptr IHTMLElement, where: BSTR, text: BSTR): HRESULT {.stdcall.}
+    get_parentTextEdit*:
+      proc(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_isTextEdit*:
+      proc(self: ptr IHTMLElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     click*: proc(self: ptr IHTMLElement): HRESULT {.stdcall.}
-    get_filters*: proc(self: ptr IHTMLElement, p: ptr ptr IHTMLFiltersCollection): HRESULT {.stdcall.}
+    get_filters*: proc(
+      self: ptr IHTMLElement, p: ptr ptr IHTMLFiltersCollection
+    ): HRESULT {.stdcall.}
     put_ondragstart*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
     get_ondragstart*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
     toString*: proc(self: ptr IHTMLElement, String: ptr BSTR): HRESULT {.stdcall.}
     put_onbeforeupdate*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforeupdate*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onbeforeupdate*:
+      proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onafterupdate*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onafterupdate*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onafterupdate*:
+      proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onerrorupdate*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onerrorupdate*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onerrorupdate*:
+      proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onrowexit*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
     get_onrowexit*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onrowenter*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
     get_onrowenter*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ondatasetchanged*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
-    get_ondatasetchanged*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_ondatasetchanged*:
+      proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ondataavailable*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
-    get_ondataavailable*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_ondatasetcomplete*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
-    get_ondatasetcomplete*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_ondataavailable*:
+      proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_ondatasetcomplete*:
+      proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
+    get_ondatasetcomplete*:
+      proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onfilterchange*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onfilterchange*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_children*: proc(self: ptr IHTMLElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_onfilterchange*:
+      proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_children*:
+      proc(self: ptr IHTMLElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_all*: proc(self: ptr IHTMLElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+
   IHTMLSelectionObject* {.pure.} = object
     lpVtbl*: ptr IHTMLSelectionObjectVtbl
+
   IHTMLSelectionObjectVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    createRange*: proc(self: ptr IHTMLSelectionObject, range: ptr ptr IDispatch): HRESULT {.stdcall.}
+    createRange*: proc(
+      self: ptr IHTMLSelectionObject, range: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
     empty*: proc(self: ptr IHTMLSelectionObject): HRESULT {.stdcall.}
     clear*: proc(self: ptr IHTMLSelectionObject): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IHTMLSelectionObject, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLStyleSheetsCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheetsCollectionVtbl
+
   IHTMLStyleSheetsCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLStyleSheetsCollection, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IHTMLStyleSheetsCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLStyleSheetsCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLStyleSheetsCollection, p: ptr LONG): HRESULT {.stdcall.}
+    get_newEnum*: proc(
+      self: ptr IHTMLStyleSheetsCollection, p: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLStyleSheetsCollection,
+      pvarIndex: ptr VARIANT,
+      pvarResult: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+
   IHTMLRuleStyle* {.pure.} = object
     lpVtbl*: ptr IHTMLRuleStyleVtbl
+
   IHTMLRuleStyleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_fontFamily*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
     get_fontFamily*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
@@ -4321,38 +4652,64 @@
     get_color*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_background*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
     get_background*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    put_backgroundColor*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_backgroundColor*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_backgroundColor*:
+      proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
+    get_backgroundColor*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_backgroundImage*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
-    get_backgroundImage*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_backgroundImage*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_backgroundRepeat*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
-    get_backgroundRepeat*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    put_backgroundAttachment*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
-    get_backgroundAttachment*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    put_backgroundPosition*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
-    get_backgroundPosition*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    put_backgroundPositionX*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_backgroundPositionX*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_backgroundPositionY*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_backgroundPositionY*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_backgroundRepeat*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    put_backgroundAttachment*:
+      proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
+    get_backgroundAttachment*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    put_backgroundPosition*:
+      proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
+    get_backgroundPosition*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    put_backgroundPositionX*:
+      proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
+    get_backgroundPositionX*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_backgroundPositionY*:
+      proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
+    get_backgroundPositionY*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_wordSpacing*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_wordSpacing*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_wordSpacing*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_letterSpacing*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_letterSpacing*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_letterSpacing*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_textDecoration*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
-    get_textDecoration*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textDecorationNone*: proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_textDecorationNone*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_textDecorationUnderline*: proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_textDecorationUnderline*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_textDecorationOverline*: proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_textDecorationOverline*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_textDecorationLineThrough*: proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_textDecorationLineThrough*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_textDecorationBlink*: proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_textDecorationBlink*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_textDecoration*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textDecorationNone*:
+      proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_textDecorationNone*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_textDecorationUnderline*:
+      proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_textDecorationUnderline*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_textDecorationOverline*:
+      proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_textDecorationOverline*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_textDecorationLineThrough*:
+      proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_textDecorationLineThrough*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_textDecorationBlink*:
+      proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_textDecorationBlink*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_verticalAlign*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_verticalAlign*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_verticalAlign*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_textTransform*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
     get_textTransform*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_textAlign*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
@@ -4364,9 +4721,11 @@
     put_marginTop*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
     get_marginTop*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_marginRight*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_marginRight*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_marginRight*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_marginBottom*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_marginBottom*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_marginBottom*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_marginLeft*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
     get_marginLeft*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_margin*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
@@ -4374,11 +4733,14 @@
     put_paddingTop*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
     get_paddingTop*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_paddingRight*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_paddingRight*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_paddingRight*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_paddingBottom*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_paddingBottom*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_paddingBottom*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_paddingLeft*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_paddingLeft*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_paddingLeft*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_padding*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
     get_padding*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_border*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
@@ -4394,33 +4756,51 @@
     put_borderColor*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
     get_borderColor*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_borderTopColor*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_borderTopColor*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderRightColor*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_borderRightColor*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderBottomColor*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_borderBottomColor*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderLeftColor*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_borderLeftColor*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderTopColor*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderRightColor*:
+      proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
+    get_borderRightColor*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderBottomColor*:
+      proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
+    get_borderBottomColor*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderLeftColor*:
+      proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
+    get_borderLeftColor*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_borderWidth*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
     get_borderWidth*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_borderTopWidth*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_borderTopWidth*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderRightWidth*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_borderRightWidth*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderBottomWidth*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_borderBottomWidth*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderLeftWidth*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_borderLeftWidth*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderTopWidth*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderRightWidth*:
+      proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
+    get_borderRightWidth*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderBottomWidth*:
+      proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
+    get_borderBottomWidth*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderLeftWidth*:
+      proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
+    get_borderLeftWidth*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_borderStyle*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
     get_borderStyle*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_borderTopStyle*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
-    get_borderTopStyle*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderTopStyle*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_borderRightStyle*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
-    get_borderRightStyle*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderRightStyle*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_borderBottomStyle*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
-    get_borderBottomStyle*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderBottomStyle*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_borderLeftStyle*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
-    get_borderLeftStyle*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderLeftStyle*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_width*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
     get_width*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     put_height*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
@@ -4436,9 +4816,11 @@
     put_listStyleType*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
     get_listStyleType*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_listStylePosition*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
-    get_listStylePosition*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_listStylePosition*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_listStyleImage*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
-    get_listStyleImage*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_listStyleImage*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_listStyle*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
     get_listStyle*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_whiteSpace*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
@@ -4453,9 +4835,11 @@
     put_overflow*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
     get_overflow*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_pageBreakBefore*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
-    get_pageBreakBefore*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_pageBreakBefore*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_pageBreakAfter*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
-    get_pageBreakAfter*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_pageBreakAfter*:
+      proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_cssText*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
     get_cssText*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_cursor*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
@@ -4464,66 +4848,138 @@
     get_clip*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_filter*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
     get_filter*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    setAttribute*: proc(self: ptr IHTMLRuleStyle, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG): HRESULT {.stdcall.}
-    getAttribute*: proc(self: ptr IHTMLRuleStyle, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.stdcall.}
-    removeAttribute*: proc(self: ptr IHTMLRuleStyle, strAttributeName: BSTR, lFlags: LONG, pfSuccess: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    setAttribute*: proc(
+      self: ptr IHTMLRuleStyle,
+      strAttributeName: BSTR,
+      AttributeValue: VARIANT,
+      lFlags: LONG,
+    ): HRESULT {.stdcall.}
+    getAttribute*: proc(
+      self: ptr IHTMLRuleStyle,
+      strAttributeName: BSTR,
+      lFlags: LONG,
+      AttributeValue: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    removeAttribute*: proc(
+      self: ptr IHTMLRuleStyle,
+      strAttributeName: BSTR,
+      lFlags: LONG,
+      pfSuccess: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+
   IHTMLStyleSheetRule* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheetRuleVtbl
+
   IHTMLStyleSheetRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_selectorText*: proc(self: ptr IHTMLStyleSheetRule, v: BSTR): HRESULT {.stdcall.}
-    get_selectorText*: proc(self: ptr IHTMLStyleSheetRule, p: ptr BSTR): HRESULT {.stdcall.}
-    get_style*: proc(self: ptr IHTMLStyleSheetRule, p: ptr ptr IHTMLRuleStyle): HRESULT {.stdcall.}
-    get_readOnly*: proc(self: ptr IHTMLStyleSheetRule, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_selectorText*:
+      proc(self: ptr IHTMLStyleSheetRule, p: ptr BSTR): HRESULT {.stdcall.}
+    get_style*: proc(self: ptr IHTMLStyleSheetRule, p: ptr ptr IHTMLRuleStyle): HRESULT {.
+      stdcall
+    .}
+    get_readOnly*:
+      proc(self: ptr IHTMLStyleSheetRule, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   IHTMLStyleSheetRulesCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheetRulesCollectionVtbl
+
   IHTMLStyleSheetRulesCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLStyleSheetRulesCollection, p: ptr LONG): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLStyleSheetRulesCollection, index: LONG, ppHTMLStyleSheetRule: ptr ptr IHTMLStyleSheetRule): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLStyleSheetRulesCollection, p: ptr LONG): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLStyleSheetRulesCollection,
+      index: LONG,
+      ppHTMLStyleSheetRule: ptr ptr IHTMLStyleSheetRule,
+    ): HRESULT {.stdcall.}
+
   IHTMLStyleSheet* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheetVtbl
+
   IHTMLStyleSheetVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_title*: proc(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.stdcall.}
     get_title*: proc(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.stdcall.}
-    get_parentStyleSheet*: proc(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
-    get_owningElement*: proc(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_parentStyleSheet*:
+      proc(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
+    get_owningElement*:
+      proc(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
     put_disabled*: proc(self: ptr IHTMLStyleSheet, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLStyleSheet, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_readOnly*: proc(self: ptr IHTMLStyleSheet, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_imports*: proc(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheetsCollection): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLStyleSheet, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_readOnly*:
+      proc(self: ptr IHTMLStyleSheet, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_imports*: proc(
+      self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheetsCollection
+    ): HRESULT {.stdcall.}
     put_href*: proc(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.stdcall.}
     get_href*: proc(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.stdcall.}
     get_id*: proc(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.stdcall.}
-    addImport*: proc(self: ptr IHTMLStyleSheet, bstrURL: BSTR, lIndex: LONG, plIndex: ptr LONG): HRESULT {.stdcall.}
-    addRule*: proc(self: ptr IHTMLStyleSheet, bstrSelector: BSTR, bstrStyle: BSTR, lIndex: LONG, plNewIndex: ptr LONG): HRESULT {.stdcall.}
+    addImport*: proc(
+      self: ptr IHTMLStyleSheet, bstrURL: BSTR, lIndex: LONG, plIndex: ptr LONG
+    ): HRESULT {.stdcall.}
+    addRule*: proc(
+      self: ptr IHTMLStyleSheet,
+      bstrSelector: BSTR,
+      bstrStyle: BSTR,
+      lIndex: LONG,
+      plNewIndex: ptr LONG,
+    ): HRESULT {.stdcall.}
     removeImport*: proc(self: ptr IHTMLStyleSheet, lIndex: LONG): HRESULT {.stdcall.}
     removeRule*: proc(self: ptr IHTMLStyleSheet, lIndex: LONG): HRESULT {.stdcall.}
     put_media*: proc(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.stdcall.}
     get_media*: proc(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.stdcall.}
     put_cssText*: proc(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.stdcall.}
     get_cssText*: proc(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.stdcall.}
-    get_rules*: proc(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheetRulesCollection): HRESULT {.stdcall.}
+    get_rules*: proc(
+      self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheetRulesCollection
+    ): HRESULT {.stdcall.}
+
   IHTMLDocument2* {.pure.} = object
     lpVtbl*: ptr IHTMLDocument2Vtbl
+
   IHTMLDocument2Vtbl* {.pure, inheritable.} = object of IHTMLDocumentVtbl
-    get_all*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    get_body*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    get_activeElement*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    get_images*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    get_applets*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    get_links*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    get_forms*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    get_anchors*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
+    get_all*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.
+      stdcall
+    .}
+    get_body*:
+      proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_activeElement*:
+      proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_images*: proc(
+      self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
+    get_applets*: proc(
+      self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
+    get_links*: proc(
+      self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
+    get_forms*: proc(
+      self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
+    get_anchors*: proc(
+      self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
     put_title*: proc(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.stdcall.}
     get_title*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_scripts*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
+    get_scripts*: proc(
+      self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
     put_designMode*: proc(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.stdcall.}
     get_designMode*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_selection*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLSelectionObject): HRESULT {.stdcall.}
+    get_selection*: proc(
+      self: ptr IHTMLDocument2, p: ptr ptr IHTMLSelectionObject
+    ): HRESULT {.stdcall.}
     get_readyState*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_frames*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLFramesCollection2): HRESULT {.stdcall.}
-    get_embeds*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    get_plugins*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
+    get_frames*: proc(
+      self: ptr IHTMLDocument2, p: ptr ptr IHTMLFramesCollection2
+    ): HRESULT {.stdcall.}
+    get_embeds*: proc(
+      self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
+    get_plugins*: proc(
+      self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
     put_alinkColor*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
     get_alinkColor*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_bgColor*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
@@ -4535,7 +4991,8 @@
     put_vlinkColor*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
     get_vlinkColor*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
     get_referrer*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_location*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLLocation): HRESULT {.stdcall.}
+    get_location*:
+      proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLLocation): HRESULT {.stdcall.}
     get_lastModified*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
     put_URL*: proc(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.stdcall.}
     get_URL*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
@@ -4544,33 +5001,68 @@
     put_cookie*: proc(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.stdcall.}
     get_cookie*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
     put_expando*: proc(self: ptr IHTMLDocument2, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_expando*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_expando*:
+      proc(self: ptr IHTMLDocument2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_charset*: proc(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.stdcall.}
     get_charset*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
     put_defaultCharset*: proc(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.stdcall.}
-    get_defaultCharset*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_defaultCharset*:
+      proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
     get_mimeType*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
     get_fileSize*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_fileCreatedDate*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_fileModifiedDate*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_fileUpdatedDate*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_fileCreatedDate*:
+      proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_fileModifiedDate*:
+      proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_fileUpdatedDate*:
+      proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
     get_security*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
     get_protocol*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
     get_nameProp*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
     write*: proc(self: ptr IHTMLDocument2, psarray: ptr SAFEARRAY): HRESULT {.stdcall.}
-    writeln*: proc(self: ptr IHTMLDocument2, psarray: ptr SAFEARRAY): HRESULT {.stdcall.}
-    open*: proc(self: ptr IHTMLDocument2, url: BSTR, name: VARIANT, features: VARIANT, replace: VARIANT, pomWindowResult: ptr ptr IDispatch): HRESULT {.stdcall.}
+    writeln*:
+      proc(self: ptr IHTMLDocument2, psarray: ptr SAFEARRAY): HRESULT {.stdcall.}
+    open*: proc(
+      self: ptr IHTMLDocument2,
+      url: BSTR,
+      name: VARIANT,
+      features: VARIANT,
+      replace: VARIANT,
+      pomWindowResult: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
     close*: proc(self: ptr IHTMLDocument2): HRESULT {.stdcall.}
     clear*: proc(self: ptr IHTMLDocument2): HRESULT {.stdcall.}
-    queryCommandSupported*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    queryCommandEnabled*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    queryCommandState*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    queryCommandIndeterm*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    queryCommandText*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, pcmdText: ptr BSTR): HRESULT {.stdcall.}
-    queryCommandValue*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, pcmdValue: ptr VARIANT): HRESULT {.stdcall.}
-    execCommand*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, showUI: VARIANT_BOOL, value: VARIANT, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    execCommandShowHelp*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    createElement*: proc(self: ptr IHTMLDocument2, eTag: BSTR, newElem: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    queryCommandSupported*: proc(
+      self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    queryCommandEnabled*: proc(
+      self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    queryCommandState*: proc(
+      self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    queryCommandIndeterm*: proc(
+      self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    queryCommandText*: proc(
+      self: ptr IHTMLDocument2, cmdID: BSTR, pcmdText: ptr BSTR
+    ): HRESULT {.stdcall.}
+    queryCommandValue*: proc(
+      self: ptr IHTMLDocument2, cmdID: BSTR, pcmdValue: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    execCommand*: proc(
+      self: ptr IHTMLDocument2,
+      cmdID: BSTR,
+      showUI: VARIANT_BOOL,
+      value: VARIANT,
+      pfRet: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    execCommandShowHelp*: proc(
+      self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    createElement*: proc(
+      self: ptr IHTMLDocument2, eTag: BSTR, newElem: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
     put_onhelp*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
     get_onhelp*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onclick*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
@@ -4586,47 +5078,76 @@
     put_onmouseup*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
     get_onmouseup*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmousedown*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
-    get_onmousedown*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmousedown*:
+      proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmousemove*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
-    get_onmousemove*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmousemove*:
+      proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmouseout*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
     get_onmouseout*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmouseover*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
-    get_onmouseover*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onreadystatechange*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
-    get_onreadystatechange*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmouseover*:
+      proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onreadystatechange*:
+      proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
+    get_onreadystatechange*:
+      proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onafterupdate*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
-    get_onafterupdate*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onafterupdate*:
+      proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onrowexit*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
     get_onrowexit*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onrowenter*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
     get_onrowenter*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ondragstart*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
-    get_ondragstart*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_ondragstart*:
+      proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onselectstart*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
-    get_onselectstart*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
-    elementFromPoint*: proc(self: ptr IHTMLDocument2, x: LONG, y: LONG, elementHit: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    get_parentWindow*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
-    get_styleSheets*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLStyleSheetsCollection): HRESULT {.stdcall.}
+    get_onselectstart*:
+      proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
+    elementFromPoint*: proc(
+      self: ptr IHTMLDocument2, x: LONG, y: LONG, elementHit: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
+    get_parentWindow*:
+      proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
+    get_styleSheets*: proc(
+      self: ptr IHTMLDocument2, p: ptr ptr IHTMLStyleSheetsCollection
+    ): HRESULT {.stdcall.}
     put_onbeforeupdate*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforeupdate*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onbeforeupdate*:
+      proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onerrorupdate*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
-    get_onerrorupdate*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onerrorupdate*:
+      proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
     toString*: proc(self: ptr IHTMLDocument2, String: ptr BSTR): HRESULT {.stdcall.}
-    createStyleSheet*: proc(self: ptr IHTMLDocument2, bstrHref: BSTR, lIndex: LONG, ppnewStyleSheet: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
+    createStyleSheet*: proc(
+      self: ptr IHTMLDocument2,
+      bstrHref: BSTR,
+      lIndex: LONG,
+      ppnewStyleSheet: ptr ptr IHTMLStyleSheet,
+    ): HRESULT {.stdcall.}
+
   IHTMLEventObj* {.pure.} = object
     lpVtbl*: ptr IHTMLEventObjVtbl
+
   IHTMLEventObjVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_srcElement*: proc(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_srcElement*:
+      proc(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
     get_altKey*: proc(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_ctrlKey*: proc(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_shiftKey*: proc(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_ctrlKey*:
+      proc(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_shiftKey*:
+      proc(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_returnValue*: proc(self: ptr IHTMLEventObj, v: VARIANT): HRESULT {.stdcall.}
     get_returnValue*: proc(self: ptr IHTMLEventObj, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_cancelBubble*: proc(self: ptr IHTMLEventObj, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_cancelBubble*: proc(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_fromElement*: proc(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    get_toElement*: proc(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    put_cancelBubble*:
+      proc(self: ptr IHTMLEventObj, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_cancelBubble*:
+      proc(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_fromElement*:
+      proc(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_toElement*:
+      proc(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
     put_keyCode*: proc(self: ptr IHTMLEventObj, v: LONG): HRESULT {.stdcall.}
     get_keyCode*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
     get_button*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
@@ -4641,9 +5162,12 @@
     get_offsetY*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
     get_screenX*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
     get_screenY*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
-    get_srcFilter*: proc(self: ptr IHTMLEventObj, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_srcFilter*:
+      proc(self: ptr IHTMLEventObj, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+
   IHTMLScreen* {.pure.} = object
     lpVtbl*: ptr IHTMLScreenVtbl
+
   IHTMLScreenVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_colorDepth*: proc(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.stdcall.}
     put_bufferDepth*: proc(self: ptr IHTMLScreen, v: LONG): HRESULT {.stdcall.}
@@ -4654,9 +5178,12 @@
     get_updateInterval*: proc(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.stdcall.}
     get_availHeight*: proc(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.stdcall.}
     get_availWidth*: proc(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.stdcall.}
-    get_fontSmoothingEnabled*: proc(self: ptr IHTMLScreen, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_fontSmoothingEnabled*:
+      proc(self: ptr IHTMLScreen, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   IHTMLFormElement* {.pure.} = object
     lpVtbl*: ptr IHTMLFormElementVtbl
+
   IHTMLFormElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_action*: proc(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.stdcall.}
     get_action*: proc(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.stdcall.}
@@ -4666,7 +5193,8 @@
     get_encoding*: proc(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_method*: proc(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.stdcall.}
     get_method*: proc(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_elements*: proc(self: ptr IHTMLFormElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_elements*:
+      proc(self: ptr IHTMLFormElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     put_target*: proc(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.stdcall.}
     get_target*: proc(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_name*: proc(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.stdcall.}
@@ -4679,54 +5207,108 @@
     reset*: proc(self: ptr IHTMLFormElement): HRESULT {.stdcall.}
     put_length*: proc(self: ptr IHTMLFormElement, v: LONG): HRESULT {.stdcall.}
     get_length*: proc(self: ptr IHTMLFormElement, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IHTMLFormElement, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLFormElement, name: VARIANT, index: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
-    tags*: proc(self: ptr IHTMLFormElement, tagName: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_newEnum*:
+      proc(self: ptr IHTMLFormElement, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLFormElement,
+      name: VARIANT,
+      index: VARIANT,
+      pdisp: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
+    tags*: proc(
+      self: ptr IHTMLFormElement, tagName: VARIANT, pdisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLOptionElement* {.pure.} = object
     lpVtbl*: ptr IHTMLOptionElementVtbl
+
   IHTMLOptionElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_selected*: proc(self: ptr IHTMLOptionElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_selected*: proc(self: ptr IHTMLOptionElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_selected*:
+      proc(self: ptr IHTMLOptionElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_selected*:
+      proc(self: ptr IHTMLOptionElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_value*: proc(self: ptr IHTMLOptionElement, v: BSTR): HRESULT {.stdcall.}
     get_value*: proc(self: ptr IHTMLOptionElement, p: ptr BSTR): HRESULT {.stdcall.}
-    put_defaultSelected*: proc(self: ptr IHTMLOptionElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_defaultSelected*: proc(self: ptr IHTMLOptionElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_defaultSelected*:
+      proc(self: ptr IHTMLOptionElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_defaultSelected*:
+      proc(self: ptr IHTMLOptionElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_index*: proc(self: ptr IHTMLOptionElement, v: LONG): HRESULT {.stdcall.}
     get_index*: proc(self: ptr IHTMLOptionElement, p: ptr LONG): HRESULT {.stdcall.}
     put_text*: proc(self: ptr IHTMLOptionElement, v: BSTR): HRESULT {.stdcall.}
     get_text*: proc(self: ptr IHTMLOptionElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_form*: proc(self: ptr IHTMLOptionElement, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
+    get_form*: proc(self: ptr IHTMLOptionElement, p: ptr ptr IHTMLFormElement): HRESULT {.
+      stdcall
+    .}
+
   IHTMLOptionElementFactory* {.pure.} = object
     lpVtbl*: ptr IHTMLOptionElementFactoryVtbl
+
   IHTMLOptionElementFactoryVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    create*: proc(self: ptr IHTMLOptionElementFactory, text: VARIANT, value: VARIANT, defaultselected: VARIANT, selected: VARIANT, a: ptr ptr IHTMLOptionElement): HRESULT {.stdcall.}
+    create*: proc(
+      self: ptr IHTMLOptionElementFactory,
+      text: VARIANT,
+      value: VARIANT,
+      defaultselected: VARIANT,
+      selected: VARIANT,
+      a: ptr ptr IHTMLOptionElement,
+    ): HRESULT {.stdcall.}
+
   IHTMLWindow2* {.pure.} = object
     lpVtbl*: ptr IHTMLWindow2Vtbl
+
   IHTMLWindow2Vtbl* {.pure, inheritable.} = object of IHTMLFramesCollection2Vtbl
-    get_frames*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLFramesCollection2): HRESULT {.stdcall.}
+    get_frames*: proc(
+      self: ptr IHTMLWindow2, p: ptr ptr IHTMLFramesCollection2
+    ): HRESULT {.stdcall.}
     put_defaultStatus*: proc(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.stdcall.}
     get_defaultStatus*: proc(self: ptr IHTMLWindow2, p: ptr BSTR): HRESULT {.stdcall.}
     put_status*: proc(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.stdcall.}
     get_status*: proc(self: ptr IHTMLWindow2, p: ptr BSTR): HRESULT {.stdcall.}
-    setTimeout*: proc(self: ptr IHTMLWindow2, expression: BSTR, msec: LONG, language: ptr VARIANT, timerID: ptr LONG): HRESULT {.stdcall.}
+    setTimeout*: proc(
+      self: ptr IHTMLWindow2,
+      expression: BSTR,
+      msec: LONG,
+      language: ptr VARIANT,
+      timerID: ptr LONG,
+    ): HRESULT {.stdcall.}
     clearTimeout*: proc(self: ptr IHTMLWindow2, timerID: LONG): HRESULT {.stdcall.}
     alert*: proc(self: ptr IHTMLWindow2, message: BSTR): HRESULT {.stdcall.}
-    confirm*: proc(self: ptr IHTMLWindow2, message: BSTR, confirmed: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    prompt*: proc(self: ptr IHTMLWindow2, message: BSTR, defstr: BSTR, textdata: ptr VARIANT): HRESULT {.stdcall.}
-    get_Image*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLImageElementFactory): HRESULT {.stdcall.}
-    get_location*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLLocation): HRESULT {.stdcall.}
-    get_history*: proc(self: ptr IHTMLWindow2, p: ptr ptr IOmHistory): HRESULT {.stdcall.}
+    confirm*: proc(
+      self: ptr IHTMLWindow2, message: BSTR, confirmed: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    prompt*: proc(
+      self: ptr IHTMLWindow2, message: BSTR, defstr: BSTR, textdata: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    get_Image*: proc(
+      self: ptr IHTMLWindow2, p: ptr ptr IHTMLImageElementFactory
+    ): HRESULT {.stdcall.}
+    get_location*:
+      proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLLocation): HRESULT {.stdcall.}
+    get_history*:
+      proc(self: ptr IHTMLWindow2, p: ptr ptr IOmHistory): HRESULT {.stdcall.}
     close*: proc(self: ptr IHTMLWindow2): HRESULT {.stdcall.}
     put_opener*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
     get_opener*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_navigator*: proc(self: ptr IHTMLWindow2, p: ptr ptr IOmNavigator): HRESULT {.stdcall.}
+    get_navigator*:
+      proc(self: ptr IHTMLWindow2, p: ptr ptr IOmNavigator): HRESULT {.stdcall.}
     put_name*: proc(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTMLWindow2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_parent*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
-    open*: proc(self: ptr IHTMLWindow2, url: BSTR, name: BSTR, features: BSTR, replace: VARIANT_BOOL, pomWindowResult: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
-    get_self*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
+    get_parent*:
+      proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
+    open*: proc(
+      self: ptr IHTMLWindow2,
+      url: BSTR,
+      name: BSTR,
+      features: BSTR,
+      replace: VARIANT_BOOL,
+      pomWindowResult: ptr ptr IHTMLWindow2,
+    ): HRESULT {.stdcall.}
+    get_self*:
+      proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
     get_top*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
-    get_window*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
+    get_window*:
+      proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
     navigate*: proc(self: ptr IHTMLWindow2, url: BSTR): HRESULT {.stdcall.}
     put_onfocus*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
     get_onfocus*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
@@ -4735,7 +5317,8 @@
     put_onload*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
     get_onload*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onbeforeunload*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforeunload*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onbeforeunload*:
+      proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onunload*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
     get_onunload*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onhelp*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
@@ -4746,23 +5329,47 @@
     get_onresize*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onscroll*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
     get_onscroll*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_document*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLDocument2): HRESULT {.stdcall.}
-    get_event*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLEventObj): HRESULT {.stdcall.}
+    get_document*:
+      proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLDocument2): HRESULT {.stdcall.}
+    get_event*:
+      proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLEventObj): HRESULT {.stdcall.}
     get_newEnum*: proc(self: ptr IHTMLWindow2, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    showModalDialog*: proc(self: ptr IHTMLWindow2, dialog: BSTR, varArgIn: ptr VARIANT, varOptions: ptr VARIANT, varArgOut: ptr VARIANT): HRESULT {.stdcall.}
-    showHelp*: proc(self: ptr IHTMLWindow2, helpURL: BSTR, helpArg: VARIANT, features: BSTR): HRESULT {.stdcall.}
-    get_screen*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLScreen): HRESULT {.stdcall.}
-    get_Option*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLOptionElementFactory): HRESULT {.stdcall.}
+    showModalDialog*: proc(
+      self: ptr IHTMLWindow2,
+      dialog: BSTR,
+      varArgIn: ptr VARIANT,
+      varOptions: ptr VARIANT,
+      varArgOut: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    showHelp*: proc(
+      self: ptr IHTMLWindow2, helpURL: BSTR, helpArg: VARIANT, features: BSTR
+    ): HRESULT {.stdcall.}
+    get_screen*:
+      proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLScreen): HRESULT {.stdcall.}
+    get_Option*: proc(
+      self: ptr IHTMLWindow2, p: ptr ptr IHTMLOptionElementFactory
+    ): HRESULT {.stdcall.}
     focus*: proc(self: ptr IHTMLWindow2): HRESULT {.stdcall.}
     get_closed*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     blur*: proc(self: ptr IHTMLWindow2): HRESULT {.stdcall.}
     scroll*: proc(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.stdcall.}
-    get_clientInformation*: proc(self: ptr IHTMLWindow2, p: ptr ptr IOmNavigator): HRESULT {.stdcall.}
-    setInterval*: proc(self: ptr IHTMLWindow2, expression: BSTR, msec: LONG, language: ptr VARIANT, timerID: ptr LONG): HRESULT {.stdcall.}
+    get_clientInformation*:
+      proc(self: ptr IHTMLWindow2, p: ptr ptr IOmNavigator): HRESULT {.stdcall.}
+    setInterval*: proc(
+      self: ptr IHTMLWindow2,
+      expression: BSTR,
+      msec: LONG,
+      language: ptr VARIANT,
+      timerID: ptr LONG,
+    ): HRESULT {.stdcall.}
     clearInterval*: proc(self: ptr IHTMLWindow2, timerID: LONG): HRESULT {.stdcall.}
-    put_offscreenBuffering*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
-    get_offscreenBuffering*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
-    execScript*: proc(self: ptr IHTMLWindow2, code: BSTR, language: BSTR, pvarRet: ptr VARIANT): HRESULT {.stdcall.}
+    put_offscreenBuffering*:
+      proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
+    get_offscreenBuffering*:
+      proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
+    execScript*: proc(
+      self: ptr IHTMLWindow2, code: BSTR, language: BSTR, pvarRet: ptr VARIANT
+    ): HRESULT {.stdcall.}
     toString*: proc(self: ptr IHTMLWindow2, String: ptr BSTR): HRESULT {.stdcall.}
     scrollBy*: proc(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.stdcall.}
     scrollTo*: proc(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.stdcall.}
@@ -4770,16 +5377,27 @@
     moveBy*: proc(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.stdcall.}
     resizeTo*: proc(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.stdcall.}
     resizeBy*: proc(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.stdcall.}
-    get_external*: proc(self: ptr IHTMLWindow2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-  SHOWMODELESSHTMLDIALOGFN* = proc (hwndParent: HWND, pmk: ptr IMoniker, pvarArgIn: ptr VARIANT, pvarOptions: ptr VARIANT, ppWindow: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
-  IEREGISTERXMLNSFN* = proc (lpszURI: LPCWSTR, clsid: GUID, fMachine: BOOL): HRESULT {.stdcall.}
-  IEISXMLNSREGISTEREDFN* = proc (lpszURI: LPCWSTR, pCLSID: ptr GUID): HRESULT {.stdcall.}
+    get_external*:
+      proc(self: ptr IHTMLWindow2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+
+  SHOWMODELESSHTMLDIALOGFN* = proc(
+    hwndParent: HWND,
+    pmk: ptr IMoniker,
+    pvarArgIn: ptr VARIANT,
+    pvarOptions: ptr VARIANT,
+    ppWindow: ptr ptr IHTMLWindow2,
+  ): HRESULT {.stdcall.}
+  IEREGISTERXMLNSFN* =
+    proc(lpszURI: LPCWSTR, clsid: GUID, fMachine: BOOL): HRESULT {.stdcall.}
+  IEISXMLNSREGISTEREDFN* = proc(lpszURI: LPCWSTR, pCLSID: ptr GUID): HRESULT {.stdcall.}
   DXGI_SAMPLE_DESC* {.pure.} = object
     Count*: UINT
     Quality*: UINT
+
   DXGI_RATIONAL* {.pure.} = object
     Numerator*: UINT
     Denominator*: UINT
+
   DXGI_MODE_DESC* {.pure.} = object
     Width*: UINT
     Height*: UINT
@@ -4787,25 +5405,30 @@
     Format*: DXGI_FORMAT
     ScanlineOrdering*: DXGI_MODE_SCANLINE_ORDER
     Scaling*: DXGI_MODE_SCALING
+
   DXGI_GAMMA_CONTROL_CAPABILITIES* {.pure.} = object
     ScaleAndOffsetSupported*: WINBOOL
     MaxConvertedValue*: float32
     MinConvertedValue*: float32
     NumGammaControlPoints*: UINT
     ControlPointPositions*: array[1025, float32]
+
   DXGI_RGB* {.pure.} = object
     Red*: float32
     Green*: float32
     Blue*: float32
+
   DXGI_GAMMA_CONTROL* {.pure.} = object
     Scale*: DXGI_RGB
     Offset*: DXGI_RGB
     GammaCurve*: array[1025, DXGI_RGB]
+
   HTML_PAINTER_INFO* {.pure.} = object
     lFlags*: LONG
     lZOrder*: LONG
     iidDrawObject*: IID
     rcExpand*: RECT
+
   HTML_PAINT_XFORM* {.pure.} = object
     eM11*: FLOAT
     eM12*: FLOAT
@@ -4813,684 +5436,1354 @@
     eM22*: FLOAT
     eDx*: FLOAT
     eDy*: FLOAT
+
   HTML_PAINT_DRAW_INFO* {.pure.} = object
     rcViewport*: RECT
     hrgnUpdate*: HRGN
     xform*: HTML_PAINT_XFORM
+
   DOCHOSTUIINFO* {.pure.} = object
     cbSize*: ULONG
     dwFlags*: DWORD
     dwDoubleClick*: DWORD
     pchHostCss*: ptr OLECHAR
     pchHostNS*: ptr OLECHAR
+
   IDispatchEx* {.pure.} = object
     lpVtbl*: ptr IDispatchExVtbl
+
   IDispatchExVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    GetDispID*: proc(self: ptr IDispatchEx, bstrName: BSTR, grfdex: DWORD, pid: ptr DISPID): HRESULT {.stdcall.}
-    InvokeEx*: proc(self: ptr IDispatchEx, id: DISPID, lcid: LCID, wFlags: WORD, pdp: ptr DISPPARAMS, pvarRes: ptr VARIANT, pei: ptr EXCEPINFO, pspCaller: ptr IServiceProvider): HRESULT {.stdcall.}
-    DeleteMemberByName*: proc(self: ptr IDispatchEx, bstrName: BSTR, grfdex: DWORD): HRESULT {.stdcall.}
+    GetDispID*: proc(
+      self: ptr IDispatchEx, bstrName: BSTR, grfdex: DWORD, pid: ptr DISPID
+    ): HRESULT {.stdcall.}
+    InvokeEx*: proc(
+      self: ptr IDispatchEx,
+      id: DISPID,
+      lcid: LCID,
+      wFlags: WORD,
+      pdp: ptr DISPPARAMS,
+      pvarRes: ptr VARIANT,
+      pei: ptr EXCEPINFO,
+      pspCaller: ptr IServiceProvider,
+    ): HRESULT {.stdcall.}
+    DeleteMemberByName*:
+      proc(self: ptr IDispatchEx, bstrName: BSTR, grfdex: DWORD): HRESULT {.stdcall.}
     DeleteMemberByDispID*: proc(self: ptr IDispatchEx, id: DISPID): HRESULT {.stdcall.}
-    GetMemberProperties*: proc(self: ptr IDispatchEx, id: DISPID, grfdexFetch: DWORD, pgrfdex: ptr DWORD): HRESULT {.stdcall.}
-    GetMemberName*: proc(self: ptr IDispatchEx, id: DISPID, pbstrName: ptr BSTR): HRESULT {.stdcall.}
-    GetNextDispID*: proc(self: ptr IDispatchEx, grfdex: DWORD, id: DISPID, pid: ptr DISPID): HRESULT {.stdcall.}
-    GetNameSpaceParent*: proc(self: ptr IDispatchEx, ppunk: ptr ptr IUnknown): HRESULT {.stdcall.}
+    GetMemberProperties*: proc(
+      self: ptr IDispatchEx, id: DISPID, grfdexFetch: DWORD, pgrfdex: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetMemberName*:
+      proc(self: ptr IDispatchEx, id: DISPID, pbstrName: ptr BSTR): HRESULT {.stdcall.}
+    GetNextDispID*: proc(
+      self: ptr IDispatchEx, grfdex: DWORD, id: DISPID, pid: ptr DISPID
+    ): HRESULT {.stdcall.}
+    GetNameSpaceParent*:
+      proc(self: ptr IDispatchEx, ppunk: ptr ptr IUnknown): HRESULT {.stdcall.}
+
   IDispError* {.pure.} = object
     lpVtbl*: ptr IDispErrorVtbl
+
   IDispErrorVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QueryErrorInfo*: proc(self: ptr IDispError, guidErrorType: GUID, ppde: ptr ptr IDispError): HRESULT {.stdcall.}
+    QueryErrorInfo*: proc(
+      self: ptr IDispError, guidErrorType: GUID, ppde: ptr ptr IDispError
+    ): HRESULT {.stdcall.}
     GetNext*: proc(self: ptr IDispError, ppde: ptr ptr IDispError): HRESULT {.stdcall.}
     GetHresult*: proc(self: ptr IDispError, phr: ptr HRESULT): HRESULT {.stdcall.}
     GetSource*: proc(self: ptr IDispError, pbstrSource: ptr BSTR): HRESULT {.stdcall.}
-    GetHelpInfo*: proc(self: ptr IDispError, pbstrFileName: ptr BSTR, pdwContext: ptr DWORD): HRESULT {.stdcall.}
-    GetDescription*: proc(self: ptr IDispError, pbstrDescription: ptr BSTR): HRESULT {.stdcall.}
+    GetHelpInfo*: proc(
+      self: ptr IDispError, pbstrFileName: ptr BSTR, pdwContext: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetDescription*:
+      proc(self: ptr IDispError, pbstrDescription: ptr BSTR): HRESULT {.stdcall.}
+
   IVariantChangeType* {.pure.} = object
     lpVtbl*: ptr IVariantChangeTypeVtbl
+
   IVariantChangeTypeVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ChangeType*: proc(self: ptr IVariantChangeType, pvarDst: ptr VARIANT, pvarSrc: ptr VARIANT, lcid: LCID, vtNew: VARTYPE): HRESULT {.stdcall.}
+    ChangeType*: proc(
+      self: ptr IVariantChangeType,
+      pvarDst: ptr VARIANT,
+      pvarSrc: ptr VARIANT,
+      lcid: LCID,
+      vtNew: VARTYPE,
+    ): HRESULT {.stdcall.}
+
   IObjectIdentity* {.pure.} = object
     lpVtbl*: ptr IObjectIdentityVtbl
+
   IObjectIdentityVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    IsEqualObject*: proc(self: ptr IObjectIdentity, punk: ptr IUnknown): HRESULT {.stdcall.}
+    IsEqualObject*:
+      proc(self: ptr IObjectIdentity, punk: ptr IUnknown): HRESULT {.stdcall.}
+
   ICanHandleException* {.pure.} = object
     lpVtbl*: ptr ICanHandleExceptionVtbl
+
   ICanHandleExceptionVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CanHandleException*: proc(self: ptr ICanHandleException, pExcepInfo: ptr EXCEPINFO, pvar: ptr VARIANT): HRESULT {.stdcall.}
+    CanHandleException*: proc(
+      self: ptr ICanHandleException, pExcepInfo: ptr EXCEPINFO, pvar: ptr VARIANT
+    ): HRESULT {.stdcall.}
+
   IProvideRuntimeContext* {.pure.} = object
     lpVtbl*: ptr IProvideRuntimeContextVtbl
+
   IProvideRuntimeContextVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCurrentSourceContext*: proc(self: ptr IProvideRuntimeContext, pdwContext: ptr DWORD_PTR, pfExecutingGlobalCode: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    GetCurrentSourceContext*: proc(
+      self: ptr IProvideRuntimeContext,
+      pdwContext: ptr DWORD_PTR,
+      pfExecutingGlobalCode: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+
   IIE70DispatchEx* {.pure.} = object
     lpVtbl*: ptr IIE70DispatchExVtbl
+
   IIE70DispatchExVtbl* {.pure, inheritable.} = object of IDispatchExVtbl
   IIE80DispatchEx* {.pure.} = object
     lpVtbl*: ptr IIE80DispatchExVtbl
+
   IIE80DispatchExVtbl* {.pure, inheritable.} = object of IDispatchExVtbl
   IHTMLDOMConstructor* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMConstructorVtbl
+
   IHTMLDOMConstructorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_constructor*: proc(self: ptr IHTMLDOMConstructor, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    LookupGetter*: proc(self: ptr IHTMLDOMConstructor, propname: BSTR, ppDispHandler: ptr VARIANT): HRESULT {.stdcall.}
-    LookupSetter*: proc(self: ptr IHTMLDOMConstructor, propname: BSTR, ppDispHandler: ptr VARIANT): HRESULT {.stdcall.}
-    DefineGetter*: proc(self: ptr IHTMLDOMConstructor, propname: BSTR, pdispHandler: ptr VARIANT): HRESULT {.stdcall.}
-    DefineSetter*: proc(self: ptr IHTMLDOMConstructor, propname: BSTR, pdispHandler: ptr VARIANT): HRESULT {.stdcall.}
+    get_constructor*:
+      proc(self: ptr IHTMLDOMConstructor, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    LookupGetter*: proc(
+      self: ptr IHTMLDOMConstructor, propname: BSTR, ppDispHandler: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    LookupSetter*: proc(
+      self: ptr IHTMLDOMConstructor, propname: BSTR, ppDispHandler: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    DefineGetter*: proc(
+      self: ptr IHTMLDOMConstructor, propname: BSTR, pdispHandler: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    DefineSetter*: proc(
+      self: ptr IHTMLDOMConstructor, propname: BSTR, pdispHandler: ptr VARIANT
+    ): HRESULT {.stdcall.}
+
   IHTMLCSSStyleDeclaration* {.pure.} = object
     lpVtbl*: ptr IHTMLCSSStyleDeclarationVtbl
+
   IHTMLCSSStyleDeclarationVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr LONG): HRESULT {.stdcall.}
-    get_parentRule*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    getPropertyValue*: proc(self: ptr IHTMLCSSStyleDeclaration, bstrPropertyName: BSTR, pbstrPropertyValue: ptr BSTR): HRESULT {.stdcall.}
-    getPropertyPriority*: proc(self: ptr IHTMLCSSStyleDeclaration, bstrPropertyName: BSTR, pbstrPropertyPriority: ptr BSTR): HRESULT {.stdcall.}
-    removeProperty*: proc(self: ptr IHTMLCSSStyleDeclaration, bstrPropertyName: BSTR, pbstrPropertyValue: ptr BSTR): HRESULT {.stdcall.}
-    setProperty*: proc(self: ptr IHTMLCSSStyleDeclaration, bstrPropertyName: BSTR, pvarPropertyValue: ptr VARIANT, pvarPropertyPriority: ptr VARIANT): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLCSSStyleDeclaration, index: LONG, pbstrPropertyName: ptr BSTR): HRESULT {.stdcall.}
-    put_fontFamily*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_fontFamily*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_fontStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_fontStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_fontVariant*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_fontVariant*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_fontWeight*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_fontWeight*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_fontSize*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_fontSize*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr LONG): HRESULT {.stdcall.}
+    get_parentRule*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    getPropertyValue*: proc(
+      self: ptr IHTMLCSSStyleDeclaration,
+      bstrPropertyName: BSTR,
+      pbstrPropertyValue: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    getPropertyPriority*: proc(
+      self: ptr IHTMLCSSStyleDeclaration,
+      bstrPropertyName: BSTR,
+      pbstrPropertyPriority: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    removeProperty*: proc(
+      self: ptr IHTMLCSSStyleDeclaration,
+      bstrPropertyName: BSTR,
+      pbstrPropertyValue: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    setProperty*: proc(
+      self: ptr IHTMLCSSStyleDeclaration,
+      bstrPropertyName: BSTR,
+      pvarPropertyValue: ptr VARIANT,
+      pvarPropertyPriority: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLCSSStyleDeclaration, index: LONG, pbstrPropertyName: ptr BSTR
+    ): HRESULT {.stdcall.}
+    put_fontFamily*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_fontFamily*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_fontStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_fontStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_fontVariant*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_fontVariant*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_fontWeight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_fontWeight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_fontSize*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_fontSize*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
     put_font*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_font*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_color*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_color*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_background*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_background*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_backgroundColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_backgroundColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_backgroundImage*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_backgroundImage*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_backgroundRepeat*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_backgroundRepeat*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_backgroundAttachment*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_backgroundAttachment*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_backgroundPosition*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_backgroundPosition*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_backgroundPositionX*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_backgroundPositionX*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_backgroundPositionY*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_backgroundPositionY*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_wordSpacing*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_wordSpacing*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_letterSpacing*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_letterSpacing*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_textDecoration*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_textDecoration*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_verticalAlign*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_verticalAlign*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_textTransform*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_textTransform*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textAlign*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_textAlign*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textIndent*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_textIndent*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_lineHeight*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_lineHeight*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_marginTop*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_marginTop*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_marginRight*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_marginRight*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_marginBottom*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_marginBottom*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_marginLeft*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_marginLeft*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_font*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_color*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_color*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_background*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_background*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_backgroundColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_backgroundColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_backgroundImage*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_backgroundImage*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_backgroundRepeat*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_backgroundRepeat*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_backgroundAttachment*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_backgroundAttachment*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_backgroundPosition*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_backgroundPosition*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_backgroundPositionX*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_backgroundPositionX*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_backgroundPositionY*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_backgroundPositionY*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_wordSpacing*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_wordSpacing*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_letterSpacing*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_letterSpacing*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_textDecoration*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_textDecoration*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_verticalAlign*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_verticalAlign*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_textTransform*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_textTransform*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textAlign*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_textAlign*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textIndent*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_textIndent*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_lineHeight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_lineHeight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_marginTop*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_marginTop*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_marginRight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_marginRight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_marginBottom*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_marginBottom*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_marginLeft*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_marginLeft*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
     put_margin*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_margin*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_paddingTop*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_paddingTop*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_paddingRight*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_paddingRight*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_paddingBottom*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_paddingBottom*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_paddingLeft*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_paddingLeft*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_margin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_paddingTop*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_paddingTop*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_paddingRight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_paddingRight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_paddingBottom*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_paddingBottom*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_paddingLeft*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_paddingLeft*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
     put_padding*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_padding*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    get_padding*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
     put_border*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_border*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderTop*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderTop*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderRight*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderRight*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderBottom*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderBottom*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderLeft*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderLeft*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderTopColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_borderTopColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderRightColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_borderRightColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderBottomColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_borderBottomColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderLeftColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_borderLeftColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderTopWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_borderTopWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderRightWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_borderRightWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderBottomWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_borderBottomWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderLeftWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_borderLeftWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderTopStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderTopStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderRightStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderRightStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderBottomStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderBottomStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderLeftStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderLeftStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_width*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_width*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_height*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_height*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_styleFloat*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_styleFloat*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    get_border*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderTop*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderTop*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderRight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderRight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderBottom*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderBottom*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderLeft*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderLeft*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderTopColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_borderTopColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderRightColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_borderRightColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderBottomColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_borderBottomColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderLeftColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_borderLeftColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderTopWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_borderTopWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderRightWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_borderRightWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderBottomWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_borderBottomWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderLeftWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_borderLeftWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderTopStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderTopStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderRightStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderRightStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderBottomStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderBottomStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderLeftStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderLeftStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_width*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_width*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_height*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_height*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_styleFloat*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_styleFloat*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
     put_clear*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_clear*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    get_clear*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
     put_display*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_display*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_visibility*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_visibility*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_listStyleType*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_listStyleType*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_listStylePosition*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_listStylePosition*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_listStyleImage*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_listStyleImage*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_listStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_listStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_whiteSpace*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_whiteSpace*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    get_display*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_visibility*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_visibility*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_listStyleType*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_listStyleType*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_listStylePosition*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_listStylePosition*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_listStyleImage*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_listStyleImage*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_listStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_listStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_whiteSpace*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_whiteSpace*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
     put_top*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_top*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_top*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
     put_left*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_left*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_zIndex*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_zIndex*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_overflow*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_overflow*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_pageBreakBefore*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_pageBreakBefore*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_pageBreakAfter*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_pageBreakAfter*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    get_left*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_zIndex*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_zIndex*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_overflow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_overflow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_pageBreakBefore*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_pageBreakBefore*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_pageBreakAfter*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_pageBreakAfter*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
     put_cssText*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_cssText*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    get_cssText*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
     put_cursor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_cursor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    get_cursor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
     put_clip*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_clip*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    get_clip*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
     put_filter*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_filter*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_tableLayout*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_tableLayout*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderCollapse*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderCollapse*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_direction*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_direction*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_behavior*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_behavior*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_position*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_position*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_unicodeBidi*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_unicodeBidi*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_bottom*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_bottom*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_right*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_right*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_filter*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_tableLayout*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_tableLayout*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderCollapse*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderCollapse*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_direction*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_direction*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_behavior*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_behavior*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_position*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_position*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_unicodeBidi*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_unicodeBidi*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_bottom*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_bottom*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_right*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_right*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
     put_imeMode*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_imeMode*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_rubyAlign*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_rubyAlign*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_rubyPosition*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_rubyPosition*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_rubyOverhang*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_rubyOverhang*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_layoutGridChar*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_layoutGridChar*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_layoutGridLine*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_layoutGridLine*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_layoutGridMode*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_layoutGridMode*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_layoutGridType*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_layoutGridType*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_layoutGrid*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_layoutGrid*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textAutospace*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_textAutospace*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_wordBreak*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_wordBreak*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_lineBreak*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_lineBreak*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textJustify*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_textJustify*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textJustifyTrim*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_textJustifyTrim*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textKashida*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_textKashida*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_overflowX*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_overflowX*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_overflowY*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_overflowY*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_accelerator*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_accelerator*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_layoutFlow*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_layoutFlow*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    get_imeMode*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_rubyAlign*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_rubyAlign*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_rubyPosition*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_rubyPosition*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_rubyOverhang*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_rubyOverhang*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_layoutGridChar*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_layoutGridChar*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_layoutGridLine*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_layoutGridLine*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_layoutGridMode*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_layoutGridMode*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_layoutGridType*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_layoutGridType*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_layoutGrid*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_layoutGrid*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textAutospace*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_textAutospace*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_wordBreak*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_wordBreak*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_lineBreak*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_lineBreak*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textJustify*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_textJustify*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textJustifyTrim*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_textJustifyTrim*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textKashida*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_textKashida*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_overflowX*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_overflowX*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_overflowY*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_overflowY*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_accelerator*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_accelerator*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_layoutFlow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_layoutFlow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
     put_zoom*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_zoom*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_wordWrap*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_wordWrap*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textUnderlinePosition*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_textUnderlinePosition*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_scrollbarBaseColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarBaseColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarFaceColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarFaceColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbar3dLightColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbar3dLightColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarShadowColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarShadowColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarHighlightColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarHighlightColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarDarkShadowColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarDarkShadowColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarArrowColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarArrowColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarTrackColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarTrackColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_writingMode*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_writingMode*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textAlignLast*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_textAlignLast*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textKashidaSpace*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_textKashidaSpace*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_textOverflow*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_textOverflow*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_minHeight*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_minHeight*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msInterpolationMode*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_msInterpolationMode*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_maxHeight*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_maxHeight*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_minWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_minWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_maxWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_maxWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_zoom*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_wordWrap*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_wordWrap*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textUnderlinePosition*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_textUnderlinePosition*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_scrollbarBaseColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarBaseColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarFaceColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarFaceColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbar3dLightColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbar3dLightColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarShadowColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarShadowColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarHighlightColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarHighlightColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarDarkShadowColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarDarkShadowColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarArrowColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarArrowColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarTrackColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarTrackColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_writingMode*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_writingMode*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textAlignLast*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_textAlignLast*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textKashidaSpace*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_textKashidaSpace*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_textOverflow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_textOverflow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_minHeight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_minHeight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msInterpolationMode*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_msInterpolationMode*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_maxHeight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_maxHeight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_minWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_minWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_maxWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_maxWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
     put_content*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_content*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_captionSide*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_captionSide*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_counterIncrement*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_counterIncrement*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_counterReset*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_counterReset*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    get_content*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_captionSide*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_captionSide*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_counterIncrement*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_counterIncrement*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_counterReset*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_counterReset*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
     put_outline*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_outline*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_outlineWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_outlineWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_outlineStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_outlineStyle*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_outlineColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_outlineColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_boxSizing*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_boxSizing*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderSpacing*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderSpacing*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_orphans*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_orphans*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_widows*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_widows*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_pageBreakInside*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_pageBreakInside*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_emptyCells*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_emptyCells*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msBlockProgression*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_msBlockProgression*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    get_outline*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_outlineWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_outlineWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_outlineStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_outlineStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_outlineColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_outlineColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_boxSizing*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_boxSizing*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderSpacing*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderSpacing*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_orphans*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_orphans*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_widows*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_widows*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_pageBreakInside*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_pageBreakInside*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_emptyCells*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_emptyCells*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msBlockProgression*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_msBlockProgression*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
     put_quotes*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_quotes*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_alignmentBaseline*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_alignmentBaseline*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_baselineShift*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_baselineShift*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_dominantBaseline*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_dominantBaseline*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_fontSizeAdjust*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_fontSizeAdjust*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_fontStretch*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_fontStretch*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_opacity*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_opacity*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_clipPath*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_clipPath*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_clipRule*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_clipRule*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    get_quotes*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_alignmentBaseline*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_alignmentBaseline*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_baselineShift*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_baselineShift*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_dominantBaseline*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_dominantBaseline*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_fontSizeAdjust*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_fontSizeAdjust*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_fontStretch*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_fontStretch*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_opacity*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_opacity*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_clipPath*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_clipPath*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_clipRule*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_clipRule*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
     put_fill*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_fill*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_fillOpacity*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_fillOpacity*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_fillRule*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_fillRule*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_kerning*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_kerning*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_fill*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_fillOpacity*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_fillOpacity*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_fillRule*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_fillRule*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_kerning*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_kerning*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
     put_marker*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_marker*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_markerEnd*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_markerEnd*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_markerMid*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_markerMid*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_markerStart*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_markerStart*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    get_marker*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_markerEnd*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_markerEnd*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_markerMid*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_markerMid*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_markerStart*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_markerStart*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
     put_mask*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_mask*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_pointerEvents*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_pointerEvents*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_stopColor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_stopColor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_stopOpacity*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_stopOpacity*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_mask*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_pointerEvents*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_pointerEvents*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_stopColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_stopColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_stopOpacity*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_stopOpacity*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
     put_stroke*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_stroke*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_strokeDasharray*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_strokeDasharray*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_strokeDashoffset*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_strokeDashoffset*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_strokeLinecap*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_strokeLinecap*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_strokeLinejoin*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_strokeLinejoin*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_strokeMiterlimit*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_strokeMiterlimit*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_strokeOpacity*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_strokeOpacity*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_strokeWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_strokeWidth*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_textAnchor*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_textAnchor*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_glyphOrientationHorizontal*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_glyphOrientationHorizontal*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_glyphOrientationVertical*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_glyphOrientationVertical*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderRadius*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderRadius*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderTopLeftRadius*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderTopLeftRadius*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderTopRightRadius*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderTopRightRadius*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderBottomRightRadius*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderBottomRightRadius*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_borderBottomLeftRadius*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_borderBottomLeftRadius*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_clipTop*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_clipTop*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_clipRight*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_clipRight*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_clipBottom*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_clipLeft*: proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
-    get_clipLeft*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_cssFloat*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_cssFloat*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_backgroundClip*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_backgroundClip*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_backgroundOrigin*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_backgroundOrigin*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_backgroundSize*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_backgroundSize*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_boxShadow*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_boxShadow*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msTransform*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_msTransform*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msTransformOrigin*: proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
-    get_msTransformOrigin*: proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    get_stroke*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_strokeDasharray*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_strokeDasharray*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_strokeDashoffset*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_strokeDashoffset*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_strokeLinecap*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_strokeLinecap*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_strokeLinejoin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_strokeLinejoin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_strokeMiterlimit*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_strokeMiterlimit*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_strokeOpacity*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_strokeOpacity*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_strokeWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_strokeWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_textAnchor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_textAnchor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_glyphOrientationHorizontal*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_glyphOrientationHorizontal*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_glyphOrientationVertical*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_glyphOrientationVertical*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderRadius*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderRadius*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderTopLeftRadius*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderTopLeftRadius*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderTopRightRadius*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderTopRightRadius*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderBottomRightRadius*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderBottomRightRadius*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_borderBottomLeftRadius*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_borderBottomLeftRadius*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_clipTop*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_clipTop*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_clipRight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_clipRight*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_clipBottom*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_clipLeft*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.stdcall.}
+    get_clipLeft*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_cssFloat*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_cssFloat*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_backgroundClip*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_backgroundClip*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_backgroundOrigin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_backgroundOrigin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_backgroundSize*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_backgroundSize*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_boxShadow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_boxShadow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msTransform*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_msTransform*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msTransformOrigin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.stdcall.}
+    get_msTransformOrigin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLCSSStyleDeclaration2* {.pure.} = object
     lpVtbl*: ptr IHTMLCSSStyleDeclaration2Vtbl
+
   IHTMLCSSStyleDeclaration2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_msScrollChaining*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msScrollChaining*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msContentZooming*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msContentZooming*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msContentZoomSnapType*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msContentZoomSnapType*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msScrollRails*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msScrollRails*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msContentZoomChaining*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msContentZoomChaining*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msScrollSnapType*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msScrollSnapType*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msContentZoomLimit*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msContentZoomLimit*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msContentZoomSnap*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msContentZoomSnap*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msContentZoomSnapPoints*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msContentZoomSnapPoints*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msContentZoomLimitMin*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msContentZoomLimitMin*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msContentZoomLimitMax*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msContentZoomLimitMax*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msScrollSnapX*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msScrollSnapX*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msScrollSnapY*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msScrollSnapY*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msScrollSnapPointsX*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msScrollSnapPointsX*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msScrollSnapPointsY*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msScrollSnapPointsY*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msGridColumn*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msGridColumn*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msGridColumnAlign*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msGridColumnAlign*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msGridColumns*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msGridColumns*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msGridColumnSpan*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msGridColumnSpan*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msGridRow*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msGridRow*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msGridRowAlign*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msGridRowAlign*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msGridRows*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msGridRows*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msGridRowSpan*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msGridRowSpan*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msWrapThrough*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msWrapThrough*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msWrapMargin*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msWrapMargin*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msWrapFlow*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msWrapFlow*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msAnimationName*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msAnimationName*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msAnimationDuration*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msAnimationDuration*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msAnimationTimingFunction*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msAnimationTimingFunction*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msAnimationDelay*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msAnimationDelay*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msAnimationDirection*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msAnimationDirection*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msAnimationPlayState*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msAnimationPlayState*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msAnimationIterationCount*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msAnimationIterationCount*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msAnimation*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msAnimation*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msAnimationFillMode*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msAnimationFillMode*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_colorInterpolationFilters*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_colorInterpolationFilters*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_columnCount*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_columnCount*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_columnWidth*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_columnWidth*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_columnGap*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_columnGap*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_columnFill*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_columnFill*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_columnSpan*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_columnSpan*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_columns*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_columns*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_columnRule*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_columnRule*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_columnRuleColor*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_columnRuleColor*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_columnRuleStyle*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_columnRuleStyle*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_columnRuleWidth*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_columnRuleWidth*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_breakBefore*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_breakBefore*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_breakAfter*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_breakAfter*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_breakInside*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_breakInside*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_floodColor*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_floodColor*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_floodOpacity*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_floodOpacity*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_lightingColor*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_lightingColor*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msScrollLimitXMin*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msScrollLimitXMin*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msScrollLimitYMin*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msScrollLimitYMin*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msScrollLimitXMax*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msScrollLimitXMax*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msScrollLimitYMax*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msScrollLimitYMax*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msScrollLimit*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msScrollLimit*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textShadow*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_textShadow*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msFlowFrom*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msFlowFrom*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msFlowInto*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msFlowInto*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msHyphens*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msHyphens*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msHyphenateLimitZone*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msHyphenateLimitZone*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msHyphenateLimitChars*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msHyphenateLimitChars*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msHyphenateLimitLines*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msHyphenateLimitLines*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msHighContrastAdjust*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msHighContrastAdjust*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_enableBackground*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_enableBackground*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msFontFeatureSettings*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msFontFeatureSettings*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msUserSelect*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msUserSelect*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msOverflowStyle*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msOverflowStyle*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msTransformStyle*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msTransformStyle*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msBackfaceVisibility*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msBackfaceVisibility*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msPerspective*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msPerspective*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msPerspectiveOrigin*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msPerspectiveOrigin*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msTransitionProperty*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msTransitionProperty*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msTransitionDuration*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msTransitionDuration*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msTransitionTimingFunction*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msTransitionTimingFunction*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msTransitionDelay*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msTransitionDelay*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msTransition*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msTransition*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msTouchAction*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msTouchAction*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msScrollTranslation*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msScrollTranslation*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msScrollChaining*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msScrollChaining*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msContentZooming*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msContentZooming*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msContentZoomSnapType*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msContentZoomSnapType*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msScrollRails*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msScrollRails*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msContentZoomChaining*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msContentZoomChaining*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msScrollSnapType*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msScrollSnapType*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msContentZoomLimit*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msContentZoomLimit*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msContentZoomSnap*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msContentZoomSnap*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msContentZoomSnapPoints*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msContentZoomSnapPoints*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msContentZoomLimitMin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msContentZoomLimitMin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msContentZoomLimitMax*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msContentZoomLimitMax*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msScrollSnapX*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msScrollSnapX*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msScrollSnapY*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msScrollSnapY*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msScrollSnapPointsX*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msScrollSnapPointsX*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msScrollSnapPointsY*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msScrollSnapPointsY*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msGridColumn*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msGridColumn*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msGridColumnAlign*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msGridColumnAlign*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msGridColumns*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msGridColumns*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msGridColumnSpan*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msGridColumnSpan*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msGridRow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msGridRow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msGridRowAlign*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msGridRowAlign*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msGridRows*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msGridRows*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msGridRowSpan*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msGridRowSpan*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msWrapThrough*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msWrapThrough*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msWrapMargin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msWrapMargin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msWrapFlow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msWrapFlow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msAnimationName*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msAnimationName*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msAnimationDuration*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msAnimationDuration*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msAnimationTimingFunction*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msAnimationTimingFunction*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msAnimationDelay*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msAnimationDelay*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msAnimationDirection*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msAnimationDirection*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msAnimationPlayState*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msAnimationPlayState*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msAnimationIterationCount*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msAnimationIterationCount*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msAnimation*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msAnimation*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msAnimationFillMode*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msAnimationFillMode*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_colorInterpolationFilters*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_colorInterpolationFilters*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_columnCount*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_columnCount*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_columnWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_columnWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_columnGap*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_columnGap*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_columnFill*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_columnFill*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_columnSpan*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_columnSpan*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_columns*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_columns*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_columnRule*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_columnRule*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_columnRuleColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_columnRuleColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_columnRuleStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_columnRuleStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_columnRuleWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_columnRuleWidth*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_breakBefore*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_breakBefore*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_breakAfter*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_breakAfter*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_breakInside*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_breakInside*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_floodColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_floodColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_floodOpacity*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_floodOpacity*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_lightingColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_lightingColor*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msScrollLimitXMin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msScrollLimitXMin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msScrollLimitYMin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msScrollLimitYMin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msScrollLimitXMax*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msScrollLimitXMax*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msScrollLimitYMax*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msScrollLimitYMax*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msScrollLimit*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msScrollLimit*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textShadow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_textShadow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msFlowFrom*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msFlowFrom*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msFlowInto*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msFlowInto*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msHyphens*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msHyphens*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msHyphenateLimitZone*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msHyphenateLimitZone*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msHyphenateLimitChars*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msHyphenateLimitChars*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msHyphenateLimitLines*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msHyphenateLimitLines*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msHighContrastAdjust*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msHighContrastAdjust*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_enableBackground*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_enableBackground*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msFontFeatureSettings*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msFontFeatureSettings*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msUserSelect*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msUserSelect*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msOverflowStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msOverflowStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msTransformStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msTransformStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msBackfaceVisibility*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msBackfaceVisibility*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msPerspective*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msPerspective*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msPerspectiveOrigin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msPerspectiveOrigin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msTransitionProperty*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msTransitionProperty*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msTransitionDuration*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msTransitionDuration*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msTransitionTimingFunction*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msTransitionTimingFunction*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msTransitionDelay*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msTransitionDelay*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msTransition*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msTransition*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msTouchAction*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msTouchAction*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msScrollTranslation*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msScrollTranslation*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
     put_msFlex*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msFlex*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msFlexPositive*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msFlexPositive*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msFlexNegative*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msFlexNegative*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msFlexPreferredSize*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msFlexPreferredSize*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msFlexFlow*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msFlexFlow*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msFlexDirection*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msFlexDirection*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msFlexWrap*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msFlexWrap*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msFlexAlign*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msFlexAlign*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msFlexItemAlign*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msFlexItemAlign*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msFlexPack*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msFlexPack*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msFlexLinePack*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msFlexLinePack*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msFlexOrder*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_msFlexOrder*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msTouchSelect*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_msTouchSelect*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_transform*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_transform*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_transformOrigin*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_transformOrigin*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_transformStyle*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_transformStyle*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_backfaceVisibility*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_backfaceVisibility*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_perspective*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
-    get_perspective*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_perspectiveOrigin*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_perspectiveOrigin*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_transitionProperty*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_transitionProperty*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_transitionDuration*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_transitionDuration*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_transitionTimingFunction*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_transitionTimingFunction*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_transitionDelay*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_transitionDelay*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_transition*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_transition*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_fontFeatureSettings*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_fontFeatureSettings*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_animationName*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_animationName*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_animationDuration*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_animationDuration*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_animationTimingFunction*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_animationTimingFunction*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_animationDelay*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_animationDelay*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_animationDirection*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_animationDirection*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_animationPlayState*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_animationPlayState*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_animationIterationCount*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_animationIterationCount*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_animation*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_animation*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_animationFillMode*: proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
-    get_animationFillMode*: proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_msFlex*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msFlexPositive*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msFlexPositive*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msFlexNegative*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msFlexNegative*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msFlexPreferredSize*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msFlexPreferredSize*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msFlexFlow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msFlexFlow*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msFlexDirection*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msFlexDirection*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msFlexWrap*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msFlexWrap*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msFlexAlign*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msFlexAlign*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msFlexItemAlign*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msFlexItemAlign*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msFlexPack*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msFlexPack*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msFlexLinePack*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msFlexLinePack*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msFlexOrder*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_msFlexOrder*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msTouchSelect*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_msTouchSelect*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_transform*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_transform*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_transformOrigin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_transformOrigin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_transformStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_transformStyle*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_backfaceVisibility*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_backfaceVisibility*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_perspective*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.stdcall.}
+    get_perspective*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_perspectiveOrigin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_perspectiveOrigin*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_transitionProperty*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_transitionProperty*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_transitionDuration*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_transitionDuration*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_transitionTimingFunction*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_transitionTimingFunction*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_transitionDelay*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_transitionDelay*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_transition*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_transition*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_fontFeatureSettings*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_fontFeatureSettings*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_animationName*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_animationName*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_animationDuration*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_animationDuration*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_animationTimingFunction*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_animationTimingFunction*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_animationDelay*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_animationDelay*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_animationDirection*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_animationDirection*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_animationPlayState*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_animationPlayState*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_animationIterationCount*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_animationIterationCount*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_animation*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_animation*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_animationFillMode*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.stdcall.}
+    get_animationFillMode*:
+      proc(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLStyleEnabled* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleEnabledVtbl
+
   IHTMLStyleEnabledVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    msGetPropertyEnabled*: proc(self: ptr IHTMLStyleEnabled, name: BSTR, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    msPutPropertyEnabled*: proc(self: ptr IHTMLStyleEnabled, name: BSTR, b: VARIANT_BOOL): HRESULT {.stdcall.}
+    msGetPropertyEnabled*: proc(
+      self: ptr IHTMLStyleEnabled, name: BSTR, p: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    msPutPropertyEnabled*: proc(
+      self: ptr IHTMLStyleEnabled, name: BSTR, b: VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+
   DispHTMLCSSStyleDeclaration* {.pure.} = object
     lpVtbl*: ptr DispHTMLCSSStyleDeclarationVtbl
+
   DispHTMLCSSStyleDeclarationVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLStyle2* {.pure.} = object
     lpVtbl*: ptr IHTMLStyle2Vtbl
+
   IHTMLStyle2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_tableLayout*: proc(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.stdcall.}
     get_tableLayout*: proc(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.stdcall.}
@@ -5500,9 +6793,15 @@
     get_direction*: proc(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_behavior*: proc(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.stdcall.}
     get_behavior*: proc(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.stdcall.}
-    setExpression*: proc(self: ptr IHTMLStyle2, propname: BSTR, expression: BSTR, language: BSTR): HRESULT {.stdcall.}
-    getExpression*: proc(self: ptr IHTMLStyle2, propname: BSTR, expression: ptr VARIANT): HRESULT {.stdcall.}
-    removeExpression*: proc(self: ptr IHTMLStyle2, propname: BSTR, pfSuccess: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    setExpression*: proc(
+      self: ptr IHTMLStyle2, propname: BSTR, expression: BSTR, language: BSTR
+    ): HRESULT {.stdcall.}
+    getExpression*: proc(
+      self: ptr IHTMLStyle2, propname: BSTR, expression: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    removeExpression*: proc(
+      self: ptr IHTMLStyle2, propname: BSTR, pfSuccess: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     put_position*: proc(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.stdcall.}
     get_position*: proc(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_unicodeBidi*: proc(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.stdcall.}
@@ -5528,9 +6827,11 @@
     put_rubyOverhang*: proc(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.stdcall.}
     get_rubyOverhang*: proc(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_layoutGridChar*: proc(self: ptr IHTMLStyle2, v: VARIANT): HRESULT {.stdcall.}
-    get_layoutGridChar*: proc(self: ptr IHTMLStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_layoutGridChar*:
+      proc(self: ptr IHTMLStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_layoutGridLine*: proc(self: ptr IHTMLStyle2, v: VARIANT): HRESULT {.stdcall.}
-    get_layoutGridLine*: proc(self: ptr IHTMLStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_layoutGridLine*:
+      proc(self: ptr IHTMLStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_layoutGridMode*: proc(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.stdcall.}
     get_layoutGridMode*: proc(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_layoutGridType*: proc(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.stdcall.}
@@ -5555,8 +6856,10 @@
     get_overflowY*: proc(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_accelerator*: proc(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.stdcall.}
     get_accelerator*: proc(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLStyle3* {.pure.} = object
     lpVtbl*: ptr IHTMLStyle3Vtbl
+
   IHTMLStyle3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_layoutFlow*: proc(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.stdcall.}
     get_layoutFlow*: proc(self: ptr IHTMLStyle3, p: ptr BSTR): HRESULT {.stdcall.}
@@ -5564,50 +6867,76 @@
     get_zoom*: proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_wordWrap*: proc(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.stdcall.}
     get_wordWrap*: proc(self: ptr IHTMLStyle3, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textUnderlinePosition*: proc(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.stdcall.}
-    get_textUnderlinePosition*: proc(self: ptr IHTMLStyle3, p: ptr BSTR): HRESULT {.stdcall.}
-    put_scrollbarBaseColor*: proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarBaseColor*: proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarFaceColor*: proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarFaceColor*: proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbar3dLightColor*: proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbar3dLightColor*: proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarShadowColor*: proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarShadowColor*: proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarHighlightColor*: proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarHighlightColor*: proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarDarkShadowColor*: proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarDarkShadowColor*: proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarArrowColor*: proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarArrowColor*: proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarTrackColor*: proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarTrackColor*: proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_textUnderlinePosition*:
+      proc(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.stdcall.}
+    get_textUnderlinePosition*:
+      proc(self: ptr IHTMLStyle3, p: ptr BSTR): HRESULT {.stdcall.}
+    put_scrollbarBaseColor*:
+      proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarBaseColor*:
+      proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarFaceColor*:
+      proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarFaceColor*:
+      proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbar3dLightColor*:
+      proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbar3dLightColor*:
+      proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarShadowColor*:
+      proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarShadowColor*:
+      proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarHighlightColor*:
+      proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarHighlightColor*:
+      proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarDarkShadowColor*:
+      proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarDarkShadowColor*:
+      proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarArrowColor*:
+      proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarArrowColor*:
+      proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarTrackColor*:
+      proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarTrackColor*:
+      proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_writingMode*: proc(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.stdcall.}
     get_writingMode*: proc(self: ptr IHTMLStyle3, p: ptr BSTR): HRESULT {.stdcall.}
     put_textAlignLast*: proc(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.stdcall.}
     get_textAlignLast*: proc(self: ptr IHTMLStyle3, p: ptr BSTR): HRESULT {.stdcall.}
     put_textKashidaSpace*: proc(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_textKashidaSpace*: proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_textKashidaSpace*:
+      proc(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLStyle4* {.pure.} = object
     lpVtbl*: ptr IHTMLStyle4Vtbl
+
   IHTMLStyle4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_textOverflow*: proc(self: ptr IHTMLStyle4, v: BSTR): HRESULT {.stdcall.}
     get_textOverflow*: proc(self: ptr IHTMLStyle4, p: ptr BSTR): HRESULT {.stdcall.}
     put_minHeight*: proc(self: ptr IHTMLStyle4, v: VARIANT): HRESULT {.stdcall.}
     get_minHeight*: proc(self: ptr IHTMLStyle4, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLStyle5* {.pure.} = object
     lpVtbl*: ptr IHTMLStyle5Vtbl
+
   IHTMLStyle5Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_msInterpolationMode*: proc(self: ptr IHTMLStyle5, v: BSTR): HRESULT {.stdcall.}
-    get_msInterpolationMode*: proc(self: ptr IHTMLStyle5, p: ptr BSTR): HRESULT {.stdcall.}
+    get_msInterpolationMode*:
+      proc(self: ptr IHTMLStyle5, p: ptr BSTR): HRESULT {.stdcall.}
     put_maxHeight*: proc(self: ptr IHTMLStyle5, v: VARIANT): HRESULT {.stdcall.}
     get_maxHeight*: proc(self: ptr IHTMLStyle5, p: ptr VARIANT): HRESULT {.stdcall.}
     put_minWidth*: proc(self: ptr IHTMLStyle5, v: VARIANT): HRESULT {.stdcall.}
     get_minWidth*: proc(self: ptr IHTMLStyle5, p: ptr VARIANT): HRESULT {.stdcall.}
     put_maxWidth*: proc(self: ptr IHTMLStyle5, v: VARIANT): HRESULT {.stdcall.}
     get_maxWidth*: proc(self: ptr IHTMLStyle5, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLStyle6* {.pure.} = object
     lpVtbl*: ptr IHTMLStyle6Vtbl
+
   IHTMLStyle6Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_content*: proc(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.stdcall.}
     get_content*: proc(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.stdcall.}
@@ -5638,16 +6967,20 @@
     put_emptyCells*: proc(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.stdcall.}
     get_emptyCells*: proc(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.stdcall.}
     put_msBlockProgression*: proc(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.stdcall.}
-    get_msBlockProgression*: proc(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.stdcall.}
+    get_msBlockProgression*:
+      proc(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.stdcall.}
     put_quotes*: proc(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.stdcall.}
     get_quotes*: proc(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLRuleStyle2* {.pure.} = object
     lpVtbl*: ptr IHTMLRuleStyle2Vtbl
+
   IHTMLRuleStyle2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_tableLayout*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
     get_tableLayout*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_borderCollapse*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
-    get_borderCollapse*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderCollapse*:
+      proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_direction*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
     get_direction*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_behavior*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
@@ -5676,18 +7009,25 @@
     get_rubyPosition*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_rubyOverhang*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
     get_rubyOverhang*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_layoutGridChar*: proc(self: ptr IHTMLRuleStyle2, v: VARIANT): HRESULT {.stdcall.}
-    get_layoutGridChar*: proc(self: ptr IHTMLRuleStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_layoutGridLine*: proc(self: ptr IHTMLRuleStyle2, v: VARIANT): HRESULT {.stdcall.}
-    get_layoutGridLine*: proc(self: ptr IHTMLRuleStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_layoutGridChar*:
+      proc(self: ptr IHTMLRuleStyle2, v: VARIANT): HRESULT {.stdcall.}
+    get_layoutGridChar*:
+      proc(self: ptr IHTMLRuleStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_layoutGridLine*:
+      proc(self: ptr IHTMLRuleStyle2, v: VARIANT): HRESULT {.stdcall.}
+    get_layoutGridLine*:
+      proc(self: ptr IHTMLRuleStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_layoutGridMode*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
-    get_layoutGridMode*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_layoutGridMode*:
+      proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_layoutGridType*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
-    get_layoutGridType*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_layoutGridType*:
+      proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_layoutGrid*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
     get_layoutGrid*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_textAutospace*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
-    get_textAutospace*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_textAutospace*:
+      proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_wordBreak*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
     get_wordBreak*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_lineBreak*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
@@ -5695,17 +7035,21 @@
     put_textJustify*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
     get_textJustify*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_textJustifyTrim*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
-    get_textJustifyTrim*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_textJustifyTrim*:
+      proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_textKashida*: proc(self: ptr IHTMLRuleStyle2, v: VARIANT): HRESULT {.stdcall.}
-    get_textKashida*: proc(self: ptr IHTMLRuleStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_textKashida*:
+      proc(self: ptr IHTMLRuleStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_overflowX*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
     get_overflowX*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_overflowY*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
     get_overflowY*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     put_accelerator*: proc(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.stdcall.}
     get_accelerator*: proc(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLRuleStyle3* {.pure.} = object
     lpVtbl*: ptr IHTMLRuleStyle3Vtbl
+
   IHTMLRuleStyle3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_layoutFlow*: proc(self: ptr IHTMLRuleStyle3, v: BSTR): HRESULT {.stdcall.}
     get_layoutFlow*: proc(self: ptr IHTMLRuleStyle3, p: ptr BSTR): HRESULT {.stdcall.}
@@ -5713,336 +7057,547 @@
     get_zoom*: proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_wordWrap*: proc(self: ptr IHTMLRuleStyle3, v: BSTR): HRESULT {.stdcall.}
     get_wordWrap*: proc(self: ptr IHTMLRuleStyle3, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textUnderlinePosition*: proc(self: ptr IHTMLRuleStyle3, v: BSTR): HRESULT {.stdcall.}
-    get_textUnderlinePosition*: proc(self: ptr IHTMLRuleStyle3, p: ptr BSTR): HRESULT {.stdcall.}
-    put_scrollbarBaseColor*: proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarBaseColor*: proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarFaceColor*: proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarFaceColor*: proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbar3dLightColor*: proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbar3dLightColor*: proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarShadowColor*: proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarShadowColor*: proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarHighlightColor*: proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarHighlightColor*: proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarDarkShadowColor*: proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarDarkShadowColor*: proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarArrowColor*: proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarArrowColor*: proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_scrollbarTrackColor*: proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_scrollbarTrackColor*: proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_textUnderlinePosition*:
+      proc(self: ptr IHTMLRuleStyle3, v: BSTR): HRESULT {.stdcall.}
+    get_textUnderlinePosition*:
+      proc(self: ptr IHTMLRuleStyle3, p: ptr BSTR): HRESULT {.stdcall.}
+    put_scrollbarBaseColor*:
+      proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarBaseColor*:
+      proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarFaceColor*:
+      proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarFaceColor*:
+      proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbar3dLightColor*:
+      proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbar3dLightColor*:
+      proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarShadowColor*:
+      proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarShadowColor*:
+      proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarHighlightColor*:
+      proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarHighlightColor*:
+      proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarDarkShadowColor*:
+      proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarDarkShadowColor*:
+      proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarArrowColor*:
+      proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarArrowColor*:
+      proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_scrollbarTrackColor*:
+      proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_scrollbarTrackColor*:
+      proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_writingMode*: proc(self: ptr IHTMLRuleStyle3, v: BSTR): HRESULT {.stdcall.}
     get_writingMode*: proc(self: ptr IHTMLRuleStyle3, p: ptr BSTR): HRESULT {.stdcall.}
     put_textAlignLast*: proc(self: ptr IHTMLRuleStyle3, v: BSTR): HRESULT {.stdcall.}
-    get_textAlignLast*: proc(self: ptr IHTMLRuleStyle3, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textKashidaSpace*: proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
-    get_textKashidaSpace*: proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_textAlignLast*:
+      proc(self: ptr IHTMLRuleStyle3, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textKashidaSpace*:
+      proc(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.stdcall.}
+    get_textKashidaSpace*:
+      proc(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLRuleStyle4* {.pure.} = object
     lpVtbl*: ptr IHTMLRuleStyle4Vtbl
+
   IHTMLRuleStyle4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_textOverflow*: proc(self: ptr IHTMLRuleStyle4, v: BSTR): HRESULT {.stdcall.}
     get_textOverflow*: proc(self: ptr IHTMLRuleStyle4, p: ptr BSTR): HRESULT {.stdcall.}
     put_minHeight*: proc(self: ptr IHTMLRuleStyle4, v: VARIANT): HRESULT {.stdcall.}
     get_minHeight*: proc(self: ptr IHTMLRuleStyle4, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLRuleStyle5* {.pure.} = object
     lpVtbl*: ptr IHTMLRuleStyle5Vtbl
+
   IHTMLRuleStyle5Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_msInterpolationMode*: proc(self: ptr IHTMLRuleStyle5, v: BSTR): HRESULT {.stdcall.}
-    get_msInterpolationMode*: proc(self: ptr IHTMLRuleStyle5, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msInterpolationMode*:
+      proc(self: ptr IHTMLRuleStyle5, v: BSTR): HRESULT {.stdcall.}
+    get_msInterpolationMode*:
+      proc(self: ptr IHTMLRuleStyle5, p: ptr BSTR): HRESULT {.stdcall.}
     put_maxHeight*: proc(self: ptr IHTMLRuleStyle5, v: VARIANT): HRESULT {.stdcall.}
     get_maxHeight*: proc(self: ptr IHTMLRuleStyle5, p: ptr VARIANT): HRESULT {.stdcall.}
     put_minWidth*: proc(self: ptr IHTMLRuleStyle5, v: VARIANT): HRESULT {.stdcall.}
     get_minWidth*: proc(self: ptr IHTMLRuleStyle5, p: ptr VARIANT): HRESULT {.stdcall.}
     put_maxWidth*: proc(self: ptr IHTMLRuleStyle5, v: VARIANT): HRESULT {.stdcall.}
     get_maxWidth*: proc(self: ptr IHTMLRuleStyle5, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLRuleStyle6* {.pure.} = object
     lpVtbl*: ptr IHTMLRuleStyle6Vtbl
+
   IHTMLRuleStyle6Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_content*: proc(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.stdcall.}
     get_content*: proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
     put_captionSide*: proc(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.stdcall.}
     get_captionSide*: proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
     put_counterIncrement*: proc(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.stdcall.}
-    get_counterIncrement*: proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
+    get_counterIncrement*:
+      proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
     put_counterReset*: proc(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.stdcall.}
     get_counterReset*: proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
     put_outline*: proc(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.stdcall.}
     get_outline*: proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
     put_outlineWidth*: proc(self: ptr IHTMLRuleStyle6, v: VARIANT): HRESULT {.stdcall.}
-    get_outlineWidth*: proc(self: ptr IHTMLRuleStyle6, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_outlineWidth*:
+      proc(self: ptr IHTMLRuleStyle6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_outlineStyle*: proc(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.stdcall.}
     get_outlineStyle*: proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
     put_outlineColor*: proc(self: ptr IHTMLRuleStyle6, v: VARIANT): HRESULT {.stdcall.}
-    get_outlineColor*: proc(self: ptr IHTMLRuleStyle6, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_outlineColor*:
+      proc(self: ptr IHTMLRuleStyle6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_boxSizing*: proc(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.stdcall.}
     get_boxSizing*: proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
     put_borderSpacing*: proc(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.stdcall.}
-    get_borderSpacing*: proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderSpacing*:
+      proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
     put_orphans*: proc(self: ptr IHTMLRuleStyle6, v: VARIANT): HRESULT {.stdcall.}
     get_orphans*: proc(self: ptr IHTMLRuleStyle6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_widows*: proc(self: ptr IHTMLRuleStyle6, v: VARIANT): HRESULT {.stdcall.}
     get_widows*: proc(self: ptr IHTMLRuleStyle6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_pageBreakInside*: proc(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.stdcall.}
-    get_pageBreakInside*: proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
+    get_pageBreakInside*:
+      proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
     put_emptyCells*: proc(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.stdcall.}
     get_emptyCells*: proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
-    put_msBlockProgression*: proc(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.stdcall.}
-    get_msBlockProgression*: proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
+    put_msBlockProgression*:
+      proc(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.stdcall.}
+    get_msBlockProgression*:
+      proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
     put_quotes*: proc(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.stdcall.}
     get_quotes*: proc(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLStyle* {.pure.} = object
     lpVtbl*: ptr DispHTMLStyleVtbl
+
   DispHTMLStyleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLRuleStyle* {.pure.} = object
     lpVtbl*: ptr DispHTMLRuleStyleVtbl
+
   DispHTMLRuleStyleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLCSSRule* {.pure.} = object
     lpVtbl*: ptr IHTMLCSSRuleVtbl
+
   IHTMLCSSRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_type*: proc(self: ptr IHTMLCSSRule, p: ptr USHORT): HRESULT {.stdcall.}
     put_cssText*: proc(self: ptr IHTMLCSSRule, v: BSTR): HRESULT {.stdcall.}
     get_cssText*: proc(self: ptr IHTMLCSSRule, p: ptr BSTR): HRESULT {.stdcall.}
-    get_parentRule*: proc(self: ptr IHTMLCSSRule, p: ptr ptr IHTMLCSSRule): HRESULT {.stdcall.}
-    get_parentStyleSheet*: proc(self: ptr IHTMLCSSRule, p: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
+    get_parentRule*:
+      proc(self: ptr IHTMLCSSRule, p: ptr ptr IHTMLCSSRule): HRESULT {.stdcall.}
+    get_parentStyleSheet*:
+      proc(self: ptr IHTMLCSSRule, p: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
+
   IHTMLCSSImportRule* {.pure.} = object
     lpVtbl*: ptr IHTMLCSSImportRuleVtbl
+
   IHTMLCSSImportRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_href*: proc(self: ptr IHTMLCSSImportRule, p: ptr BSTR): HRESULT {.stdcall.}
     put_media*: proc(self: ptr IHTMLCSSImportRule, v: VARIANT): HRESULT {.stdcall.}
     get_media*: proc(self: ptr IHTMLCSSImportRule, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_styleSheet*: proc(self: ptr IHTMLCSSImportRule, p: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
+    get_styleSheet*: proc(
+      self: ptr IHTMLCSSImportRule, p: ptr ptr IHTMLStyleSheet
+    ): HRESULT {.stdcall.}
+
   IHTMLCSSMediaRule* {.pure.} = object
     lpVtbl*: ptr IHTMLCSSMediaRuleVtbl
+
   IHTMLCSSMediaRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_media*: proc(self: ptr IHTMLCSSMediaRule, v: VARIANT): HRESULT {.stdcall.}
     get_media*: proc(self: ptr IHTMLCSSMediaRule, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_cssRules*: proc(self: ptr IHTMLCSSMediaRule, p: ptr ptr IHTMLStyleSheetRulesCollection): HRESULT {.stdcall.}
-    insertRule*: proc(self: ptr IHTMLCSSMediaRule, bstrRule: BSTR, lIndex: LONG, plNewIndex: ptr LONG): HRESULT {.stdcall.}
+    get_cssRules*: proc(
+      self: ptr IHTMLCSSMediaRule, p: ptr ptr IHTMLStyleSheetRulesCollection
+    ): HRESULT {.stdcall.}
+    insertRule*: proc(
+      self: ptr IHTMLCSSMediaRule, bstrRule: BSTR, lIndex: LONG, plNewIndex: ptr LONG
+    ): HRESULT {.stdcall.}
     deleteRule*: proc(self: ptr IHTMLCSSMediaRule, lIndex: LONG): HRESULT {.stdcall.}
+
   IHTMLCSSMediaList* {.pure.} = object
     lpVtbl*: ptr IHTMLCSSMediaListVtbl
+
   IHTMLCSSMediaListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_mediaText*: proc(self: ptr IHTMLCSSMediaList, v: BSTR): HRESULT {.stdcall.}
     get_mediaText*: proc(self: ptr IHTMLCSSMediaList, p: ptr BSTR): HRESULT {.stdcall.}
     get_length*: proc(self: ptr IHTMLCSSMediaList, p: ptr LONG): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLCSSMediaList, index: LONG, pbstrMedium: ptr BSTR): HRESULT {.stdcall.}
-    appendMedium*: proc(self: ptr IHTMLCSSMediaList, bstrMedium: BSTR): HRESULT {.stdcall.}
-    deleteMedium*: proc(self: ptr IHTMLCSSMediaList, bstrMedium: BSTR): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLCSSMediaList, index: LONG, pbstrMedium: ptr BSTR
+    ): HRESULT {.stdcall.}
+    appendMedium*:
+      proc(self: ptr IHTMLCSSMediaList, bstrMedium: BSTR): HRESULT {.stdcall.}
+    deleteMedium*:
+      proc(self: ptr IHTMLCSSMediaList, bstrMedium: BSTR): HRESULT {.stdcall.}
+
   IHTMLCSSNamespaceRule* {.pure.} = object
     lpVtbl*: ptr IHTMLCSSNamespaceRuleVtbl
+
   IHTMLCSSNamespaceRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_namespaceURI*: proc(self: ptr IHTMLCSSNamespaceRule, p: ptr BSTR): HRESULT {.stdcall.}
+    get_namespaceURI*:
+      proc(self: ptr IHTMLCSSNamespaceRule, p: ptr BSTR): HRESULT {.stdcall.}
     get_prefix*: proc(self: ptr IHTMLCSSNamespaceRule, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLMSCSSKeyframeRule* {.pure.} = object
     lpVtbl*: ptr IHTMLMSCSSKeyframeRuleVtbl
+
   IHTMLMSCSSKeyframeRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_keyText*: proc(self: ptr IHTMLMSCSSKeyframeRule, v: BSTR): HRESULT {.stdcall.}
-    get_keyText*: proc(self: ptr IHTMLMSCSSKeyframeRule, p: ptr BSTR): HRESULT {.stdcall.}
-    get_style*: proc(self: ptr IHTMLMSCSSKeyframeRule, p: ptr ptr IHTMLRuleStyle): HRESULT {.stdcall.}
+    get_keyText*:
+      proc(self: ptr IHTMLMSCSSKeyframeRule, p: ptr BSTR): HRESULT {.stdcall.}
+    get_style*: proc(
+      self: ptr IHTMLMSCSSKeyframeRule, p: ptr ptr IHTMLRuleStyle
+    ): HRESULT {.stdcall.}
+
   IHTMLMSCSSKeyframesRule* {.pure.} = object
     lpVtbl*: ptr IHTMLMSCSSKeyframesRuleVtbl
+
   IHTMLMSCSSKeyframesRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_name*: proc(self: ptr IHTMLMSCSSKeyframesRule, v: BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTMLMSCSSKeyframesRule, p: ptr BSTR): HRESULT {.stdcall.}
-    get_cssRules*: proc(self: ptr IHTMLMSCSSKeyframesRule, p: ptr ptr IHTMLStyleSheetRulesCollection): HRESULT {.stdcall.}
-    appendRule*: proc(self: ptr IHTMLMSCSSKeyframesRule, bstrRule: BSTR): HRESULT {.stdcall.}
-    deleteRule*: proc(self: ptr IHTMLMSCSSKeyframesRule, bstrKey: BSTR): HRESULT {.stdcall.}
-    findRule*: proc(self: ptr IHTMLMSCSSKeyframesRule, bstrKey: BSTR, ppMSKeyframeRule: ptr ptr IHTMLMSCSSKeyframeRule): HRESULT {.stdcall.}
+    get_cssRules*: proc(
+      self: ptr IHTMLMSCSSKeyframesRule, p: ptr ptr IHTMLStyleSheetRulesCollection
+    ): HRESULT {.stdcall.}
+    appendRule*:
+      proc(self: ptr IHTMLMSCSSKeyframesRule, bstrRule: BSTR): HRESULT {.stdcall.}
+    deleteRule*:
+      proc(self: ptr IHTMLMSCSSKeyframesRule, bstrKey: BSTR): HRESULT {.stdcall.}
+    findRule*: proc(
+      self: ptr IHTMLMSCSSKeyframesRule,
+      bstrKey: BSTR,
+      ppMSKeyframeRule: ptr ptr IHTMLMSCSSKeyframeRule,
+    ): HRESULT {.stdcall.}
+
   DispHTMLCSSRule* {.pure.} = object
     lpVtbl*: ptr DispHTMLCSSRuleVtbl
+
   DispHTMLCSSRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLCSSImportRule* {.pure.} = object
     lpVtbl*: ptr DispHTMLCSSImportRuleVtbl
+
   DispHTMLCSSImportRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLCSSMediaRule* {.pure.} = object
     lpVtbl*: ptr DispHTMLCSSMediaRuleVtbl
+
   DispHTMLCSSMediaRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLCSSMediaList* {.pure.} = object
     lpVtbl*: ptr DispHTMLCSSMediaListVtbl
+
   DispHTMLCSSMediaListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLCSSNamespaceRule* {.pure.} = object
     lpVtbl*: ptr DispHTMLCSSNamespaceRuleVtbl
+
   DispHTMLCSSNamespaceRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLMSCSSKeyframeRule* {.pure.} = object
     lpVtbl*: ptr DispHTMLMSCSSKeyframeRuleVtbl
+
   DispHTMLMSCSSKeyframeRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLMSCSSKeyframesRule* {.pure.} = object
     lpVtbl*: ptr DispHTMLMSCSSKeyframesRuleVtbl
+
   DispHTMLMSCSSKeyframesRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLRenderStyle* {.pure.} = object
     lpVtbl*: ptr IHTMLRenderStyleVtbl
+
   IHTMLRenderStyleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_textLineThroughStyle*: proc(self: ptr IHTMLRenderStyle, v: BSTR): HRESULT {.stdcall.}
-    get_textLineThroughStyle*: proc(self: ptr IHTMLRenderStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textUnderlineStyle*: proc(self: ptr IHTMLRenderStyle, v: BSTR): HRESULT {.stdcall.}
-    get_textUnderlineStyle*: proc(self: ptr IHTMLRenderStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textLineThroughStyle*:
+      proc(self: ptr IHTMLRenderStyle, v: BSTR): HRESULT {.stdcall.}
+    get_textLineThroughStyle*:
+      proc(self: ptr IHTMLRenderStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textUnderlineStyle*:
+      proc(self: ptr IHTMLRenderStyle, v: BSTR): HRESULT {.stdcall.}
+    get_textUnderlineStyle*:
+      proc(self: ptr IHTMLRenderStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_textEffect*: proc(self: ptr IHTMLRenderStyle, v: BSTR): HRESULT {.stdcall.}
     get_textEffect*: proc(self: ptr IHTMLRenderStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_textColor*: proc(self: ptr IHTMLRenderStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_textColor*: proc(self: ptr IHTMLRenderStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_textBackgroundColor*: proc(self: ptr IHTMLRenderStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_textBackgroundColor*: proc(self: ptr IHTMLRenderStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_textDecorationColor*: proc(self: ptr IHTMLRenderStyle, v: VARIANT): HRESULT {.stdcall.}
-    get_textDecorationColor*: proc(self: ptr IHTMLRenderStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_renderingPriority*: proc(self: ptr IHTMLRenderStyle, v: LONG): HRESULT {.stdcall.}
-    get_renderingPriority*: proc(self: ptr IHTMLRenderStyle, p: ptr LONG): HRESULT {.stdcall.}
-    put_defaultTextSelection*: proc(self: ptr IHTMLRenderStyle, v: BSTR): HRESULT {.stdcall.}
-    get_defaultTextSelection*: proc(self: ptr IHTMLRenderStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_textColor*:
+      proc(self: ptr IHTMLRenderStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_textBackgroundColor*:
+      proc(self: ptr IHTMLRenderStyle, v: VARIANT): HRESULT {.stdcall.}
+    get_textBackgroundColor*:
+      proc(self: ptr IHTMLRenderStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_textDecorationColor*:
+      proc(self: ptr IHTMLRenderStyle, v: VARIANT): HRESULT {.stdcall.}
+    get_textDecorationColor*:
+      proc(self: ptr IHTMLRenderStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_renderingPriority*:
+      proc(self: ptr IHTMLRenderStyle, v: LONG): HRESULT {.stdcall.}
+    get_renderingPriority*:
+      proc(self: ptr IHTMLRenderStyle, p: ptr LONG): HRESULT {.stdcall.}
+    put_defaultTextSelection*:
+      proc(self: ptr IHTMLRenderStyle, v: BSTR): HRESULT {.stdcall.}
+    get_defaultTextSelection*:
+      proc(self: ptr IHTMLRenderStyle, p: ptr BSTR): HRESULT {.stdcall.}
     put_textDecoration*: proc(self: ptr IHTMLRenderStyle, v: BSTR): HRESULT {.stdcall.}
-    get_textDecoration*: proc(self: ptr IHTMLRenderStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_textDecoration*:
+      proc(self: ptr IHTMLRenderStyle, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLRenderStyle* {.pure.} = object
     lpVtbl*: ptr DispHTMLRenderStyleVtbl
+
   DispHTMLRenderStyleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLCurrentStyle* {.pure.} = object
     lpVtbl*: ptr IHTMLCurrentStyleVtbl
+
   IHTMLCurrentStyleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_position*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_styleFloat*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_color*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_backgroundColor*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_backgroundColor*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     get_fontFamily*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_fontStyle*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_fontVariant*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_fontWeight*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_fontSize*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_backgroundImage*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_backgroundPositionX*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_backgroundPositionY*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_backgroundRepeat*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_borderLeftColor*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_borderTopColor*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_borderRightColor*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_borderBottomColor*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_borderTopStyle*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_borderRightStyle*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_borderBottomStyle*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_borderLeftStyle*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_borderTopWidth*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_borderRightWidth*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_borderBottomWidth*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_borderLeftWidth*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_fontVariant*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_fontWeight*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_fontSize*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_backgroundImage*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_backgroundPositionX*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_backgroundPositionY*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_backgroundRepeat*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderLeftColor*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderTopColor*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderRightColor*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderBottomColor*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderTopStyle*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderRightStyle*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderBottomStyle*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderLeftStyle*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderTopWidth*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderRightWidth*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderBottomWidth*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderLeftWidth*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     get_left*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     get_top*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     get_width*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     get_height*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_paddingLeft*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_paddingTop*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_paddingRight*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_paddingBottom*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_paddingLeft*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_paddingTop*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_paddingRight*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_paddingBottom*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     get_textAlign*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_textDecoration*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_textDecoration*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_display*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_visibility*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_zIndex*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_letterSpacing*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_lineHeight*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_textIndent*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_verticalAlign*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_backgroundAttachment*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_marginTop*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_marginRight*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_marginBottom*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_marginLeft*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_letterSpacing*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_lineHeight*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_textIndent*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_verticalAlign*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_backgroundAttachment*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_marginTop*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_marginRight*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_marginBottom*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_marginLeft*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     get_clear*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_listStyleType*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_listStylePosition*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_listStyleImage*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_listStyleType*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_listStylePosition*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_listStyleImage*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_clipTop*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_clipRight*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_clipBottom*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_clipLeft*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_clipRight*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_clipBottom*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_clipLeft*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     get_overflow*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_pageBreakBefore*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_pageBreakAfter*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_pageBreakBefore*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_pageBreakAfter*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_cursor*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_tableLayout*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_borderCollapse*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_tableLayout*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderCollapse*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_direction*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_behavior*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    getAttribute*: proc(self: ptr IHTMLCurrentStyle, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.stdcall.}
-    get_unicodeBidi*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    getAttribute*: proc(
+      self: ptr IHTMLCurrentStyle,
+      strAttributeName: BSTR,
+      lFlags: LONG,
+      AttributeValue: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    get_unicodeBidi*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_right*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     get_bottom*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
     get_imeMode*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_rubyAlign*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_rubyPosition*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_rubyOverhang*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_textAutospace*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_rubyPosition*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_rubyOverhang*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_textAutospace*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_lineBreak*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_wordBreak*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_textJustify*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_textJustifyTrim*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_textKashida*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_blockDirection*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_layoutGridChar*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_layoutGridLine*: proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_layoutGridMode*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_layoutGridType*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_borderStyle*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_borderColor*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_borderWidth*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_textJustify*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_textJustifyTrim*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_textKashida*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_blockDirection*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_layoutGridChar*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_layoutGridLine*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_layoutGridMode*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_layoutGridType*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderStyle*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderColor*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_borderWidth*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_padding*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_margin*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_accelerator*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_accelerator*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_overflowX*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
     get_overflowY*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
-    get_textTransform*: proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+    get_textTransform*:
+      proc(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLCurrentStyle2* {.pure.} = object
     lpVtbl*: ptr IHTMLCurrentStyle2Vtbl
+
   IHTMLCurrentStyle2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_layoutFlow*: proc(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_layoutFlow*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     get_wordWrap*: proc(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_textUnderlinePosition*: proc(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_hasLayout*: proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_scrollbarBaseColor*: proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_scrollbarFaceColor*: proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_scrollbar3dLightColor*: proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_scrollbarShadowColor*: proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_scrollbarHighlightColor*: proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_scrollbarDarkShadowColor*: proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_scrollbarArrowColor*: proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_scrollbarTrackColor*: proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_writingMode*: proc(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_textUnderlinePosition*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_hasLayout*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_scrollbarBaseColor*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_scrollbarFaceColor*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_scrollbar3dLightColor*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_scrollbarShadowColor*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_scrollbarHighlightColor*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_scrollbarDarkShadowColor*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_scrollbarArrowColor*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_scrollbarTrackColor*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_writingMode*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.stdcall.}
     get_zoom*: proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
     get_filter*: proc(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_textAlignLast*: proc(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_textKashidaSpace*: proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_isBlock*: proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_textAlignLast*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_textKashidaSpace*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_isBlock*:
+      proc(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   IHTMLCurrentStyle3* {.pure.} = object
     lpVtbl*: ptr IHTMLCurrentStyle3Vtbl
+
   IHTMLCurrentStyle3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_textOverflow*: proc(self: ptr IHTMLCurrentStyle3, p: ptr BSTR): HRESULT {.stdcall.}
-    get_minHeight*: proc(self: ptr IHTMLCurrentStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_wordSpacing*: proc(self: ptr IHTMLCurrentStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_whiteSpace*: proc(self: ptr IHTMLCurrentStyle3, p: ptr BSTR): HRESULT {.stdcall.}
+    get_textOverflow*:
+      proc(self: ptr IHTMLCurrentStyle3, p: ptr BSTR): HRESULT {.stdcall.}
+    get_minHeight*:
+      proc(self: ptr IHTMLCurrentStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_wordSpacing*:
+      proc(self: ptr IHTMLCurrentStyle3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_whiteSpace*:
+      proc(self: ptr IHTMLCurrentStyle3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLCurrentStyle4* {.pure.} = object
     lpVtbl*: ptr IHTMLCurrentStyle4Vtbl
+
   IHTMLCurrentStyle4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_msInterpolationMode*: proc(self: ptr IHTMLCurrentStyle4, p: ptr BSTR): HRESULT {.stdcall.}
-    get_maxHeight*: proc(self: ptr IHTMLCurrentStyle4, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_minWidth*: proc(self: ptr IHTMLCurrentStyle4, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_maxWidth*: proc(self: ptr IHTMLCurrentStyle4, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_msInterpolationMode*:
+      proc(self: ptr IHTMLCurrentStyle4, p: ptr BSTR): HRESULT {.stdcall.}
+    get_maxHeight*:
+      proc(self: ptr IHTMLCurrentStyle4, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_minWidth*:
+      proc(self: ptr IHTMLCurrentStyle4, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_maxWidth*:
+      proc(self: ptr IHTMLCurrentStyle4, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLCurrentStyle5* {.pure.} = object
     lpVtbl*: ptr IHTMLCurrentStyle5Vtbl
+
   IHTMLCurrentStyle5Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_captionSide*: proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
+    get_captionSide*:
+      proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
     get_outline*: proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
-    get_outlineWidth*: proc(self: ptr IHTMLCurrentStyle5, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_outlineStyle*: proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
-    get_outlineColor*: proc(self: ptr IHTMLCurrentStyle5, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_outlineWidth*:
+      proc(self: ptr IHTMLCurrentStyle5, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_outlineStyle*:
+      proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
+    get_outlineColor*:
+      proc(self: ptr IHTMLCurrentStyle5, p: ptr VARIANT): HRESULT {.stdcall.}
     get_boxSizing*: proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
-    get_borderSpacing*: proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
-    get_orphans*: proc(self: ptr IHTMLCurrentStyle5, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderSpacing*:
+      proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
+    get_orphans*:
+      proc(self: ptr IHTMLCurrentStyle5, p: ptr VARIANT): HRESULT {.stdcall.}
     get_widows*: proc(self: ptr IHTMLCurrentStyle5, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_pageBreakInside*: proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
-    get_emptyCells*: proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
-    get_msBlockProgression*: proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
+    get_pageBreakInside*:
+      proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
+    get_emptyCells*:
+      proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
+    get_msBlockProgression*:
+      proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
     get_quotes*: proc(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLCurrentStyle* {.pure.} = object
     lpVtbl*: ptr DispHTMLCurrentStyleVtbl
+
   DispHTMLCurrentStyleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLRect* {.pure.} = object
     lpVtbl*: ptr IHTMLRectVtbl
+
   IHTMLRectVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_left*: proc(self: ptr IHTMLRect, v: LONG): HRESULT {.stdcall.}
     get_left*: proc(self: ptr IHTMLRect, p: ptr LONG): HRESULT {.stdcall.}
@@ -6052,102 +7607,229 @@
     get_right*: proc(self: ptr IHTMLRect, p: ptr LONG): HRESULT {.stdcall.}
     put_bottom*: proc(self: ptr IHTMLRect, v: LONG): HRESULT {.stdcall.}
     get_bottom*: proc(self: ptr IHTMLRect, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLRect2* {.pure.} = object
     lpVtbl*: ptr IHTMLRect2Vtbl
+
   IHTMLRect2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_width*: proc(self: ptr IHTMLRect2, p: ptr float32): HRESULT {.stdcall.}
     get_height*: proc(self: ptr IHTMLRect2, p: ptr float32): HRESULT {.stdcall.}
+
   IHTMLRectCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLRectCollectionVtbl
+
   IHTMLRectCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_length*: proc(self: ptr IHTMLRectCollection, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IHTMLRectCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLRectCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.stdcall.}
+    get_newEnum*:
+      proc(self: ptr IHTMLRectCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLRectCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT
+    ): HRESULT {.stdcall.}
+
   IHTMLDOMNode* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMNodeVtbl
+
   IHTMLDOMNodeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_nodeType*: proc(self: ptr IHTMLDOMNode, p: ptr LONG): HRESULT {.stdcall.}
-    get_parentNode*: proc(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    hasChildNodes*: proc(self: ptr IHTMLDOMNode, fChildren: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_childNodes*: proc(self: ptr IHTMLDOMNode, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_attributes*: proc(self: ptr IHTMLDOMNode, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    insertBefore*: proc(self: ptr IHTMLDOMNode, newChild: ptr IHTMLDOMNode, refChild: VARIANT, node: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    removeChild*: proc(self: ptr IHTMLDOMNode, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    replaceChild*: proc(self: ptr IHTMLDOMNode, newChild: ptr IHTMLDOMNode, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    cloneNode*: proc(self: ptr IHTMLDOMNode, fDeep: VARIANT_BOOL, clonedNode: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    removeNode*: proc(self: ptr IHTMLDOMNode, fDeep: VARIANT_BOOL, removed: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    swapNode*: proc(self: ptr IHTMLDOMNode, otherNode: ptr IHTMLDOMNode, swappedNode: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    replaceNode*: proc(self: ptr IHTMLDOMNode, replacement: ptr IHTMLDOMNode, replaced: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    appendChild*: proc(self: ptr IHTMLDOMNode, newChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_parentNode*:
+      proc(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    hasChildNodes*:
+      proc(self: ptr IHTMLDOMNode, fChildren: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_childNodes*:
+      proc(self: ptr IHTMLDOMNode, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_attributes*:
+      proc(self: ptr IHTMLDOMNode, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    insertBefore*: proc(
+      self: ptr IHTMLDOMNode,
+      newChild: ptr IHTMLDOMNode,
+      refChild: VARIANT,
+      node: ptr ptr IHTMLDOMNode,
+    ): HRESULT {.stdcall.}
+    removeChild*: proc(
+      self: ptr IHTMLDOMNode, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode
+    ): HRESULT {.stdcall.}
+    replaceChild*: proc(
+      self: ptr IHTMLDOMNode,
+      newChild: ptr IHTMLDOMNode,
+      oldChild: ptr IHTMLDOMNode,
+      node: ptr ptr IHTMLDOMNode,
+    ): HRESULT {.stdcall.}
+    cloneNode*: proc(
+      self: ptr IHTMLDOMNode, fDeep: VARIANT_BOOL, clonedNode: ptr ptr IHTMLDOMNode
+    ): HRESULT {.stdcall.}
+    removeNode*: proc(
+      self: ptr IHTMLDOMNode, fDeep: VARIANT_BOOL, removed: ptr ptr IHTMLDOMNode
+    ): HRESULT {.stdcall.}
+    swapNode*: proc(
+      self: ptr IHTMLDOMNode,
+      otherNode: ptr IHTMLDOMNode,
+      swappedNode: ptr ptr IHTMLDOMNode,
+    ): HRESULT {.stdcall.}
+    replaceNode*: proc(
+      self: ptr IHTMLDOMNode,
+      replacement: ptr IHTMLDOMNode,
+      replaced: ptr ptr IHTMLDOMNode,
+    ): HRESULT {.stdcall.}
+    appendChild*: proc(
+      self: ptr IHTMLDOMNode, newChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode
+    ): HRESULT {.stdcall.}
     get_nodeName*: proc(self: ptr IHTMLDOMNode, p: ptr BSTR): HRESULT {.stdcall.}
     put_nodeValue*: proc(self: ptr IHTMLDOMNode, v: VARIANT): HRESULT {.stdcall.}
     get_nodeValue*: proc(self: ptr IHTMLDOMNode, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_firstChild*: proc(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    get_lastChild*: proc(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    get_previousSibling*: proc(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    get_nextSibling*: proc(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_firstChild*:
+      proc(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_lastChild*:
+      proc(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_previousSibling*:
+      proc(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_nextSibling*:
+      proc(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+
   IHTMLDOMNode2* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMNode2Vtbl
+
   IHTMLDOMNode2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_ownerDocument*: proc(self: ptr IHTMLDOMNode2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_ownerDocument*:
+      proc(self: ptr IHTMLDOMNode2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+
   IHTMLDOMNode3* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMNode3Vtbl
+
   IHTMLDOMNode3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_prefix*: proc(self: ptr IHTMLDOMNode3, v: VARIANT): HRESULT {.stdcall.}
     get_prefix*: proc(self: ptr IHTMLDOMNode3, p: ptr VARIANT): HRESULT {.stdcall.}
     get_localName*: proc(self: ptr IHTMLDOMNode3, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_namespaceURI*: proc(self: ptr IHTMLDOMNode3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_namespaceURI*:
+      proc(self: ptr IHTMLDOMNode3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_textContent*: proc(self: ptr IHTMLDOMNode3, v: VARIANT): HRESULT {.stdcall.}
     get_textContent*: proc(self: ptr IHTMLDOMNode3, p: ptr VARIANT): HRESULT {.stdcall.}
-    isEqualNode*: proc(self: ptr IHTMLDOMNode3, otherNode: ptr IHTMLDOMNode3, isEqual: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    lookupNamespaceURI*: proc(self: ptr IHTMLDOMNode3, pvarPrefix: ptr VARIANT, pvarNamespaceURI: ptr VARIANT): HRESULT {.stdcall.}
-    lookupPrefix*: proc(self: ptr IHTMLDOMNode3, pvarNamespaceURI: ptr VARIANT, pvarPrefix: ptr VARIANT): HRESULT {.stdcall.}
-    isDefaultNamespace*: proc(self: ptr IHTMLDOMNode3, pvarNamespace: ptr VARIANT, pfDefaultNamespace: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    appendChild*: proc(self: ptr IHTMLDOMNode3, newChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    insertBefore*: proc(self: ptr IHTMLDOMNode3, newChild: ptr IHTMLDOMNode, refChild: VARIANT, node: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    removeChild*: proc(self: ptr IHTMLDOMNode3, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    replaceChild*: proc(self: ptr IHTMLDOMNode3, newChild: ptr IHTMLDOMNode, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    isSameNode*: proc(self: ptr IHTMLDOMNode3, otherNode: ptr IHTMLDOMNode3, isSame: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    compareDocumentPosition*: proc(self: ptr IHTMLDOMNode3, otherNode: ptr IHTMLDOMNode, flags: ptr USHORT): HRESULT {.stdcall.}
-    isSupported*: proc(self: ptr IHTMLDOMNode3, feature: BSTR, version: VARIANT, pfisSupported: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    isEqualNode*: proc(
+      self: ptr IHTMLDOMNode3, otherNode: ptr IHTMLDOMNode3, isEqual: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    lookupNamespaceURI*: proc(
+      self: ptr IHTMLDOMNode3, pvarPrefix: ptr VARIANT, pvarNamespaceURI: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    lookupPrefix*: proc(
+      self: ptr IHTMLDOMNode3, pvarNamespaceURI: ptr VARIANT, pvarPrefix: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    isDefaultNamespace*: proc(
+      self: ptr IHTMLDOMNode3,
+      pvarNamespace: ptr VARIANT,
+      pfDefaultNamespace: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    appendChild*: proc(
+      self: ptr IHTMLDOMNode3, newChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode
+    ): HRESULT {.stdcall.}
+    insertBefore*: proc(
+      self: ptr IHTMLDOMNode3,
+      newChild: ptr IHTMLDOMNode,
+      refChild: VARIANT,
+      node: ptr ptr IHTMLDOMNode,
+    ): HRESULT {.stdcall.}
+    removeChild*: proc(
+      self: ptr IHTMLDOMNode3, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode
+    ): HRESULT {.stdcall.}
+    replaceChild*: proc(
+      self: ptr IHTMLDOMNode3,
+      newChild: ptr IHTMLDOMNode,
+      oldChild: ptr IHTMLDOMNode,
+      node: ptr ptr IHTMLDOMNode,
+    ): HRESULT {.stdcall.}
+    isSameNode*: proc(
+      self: ptr IHTMLDOMNode3, otherNode: ptr IHTMLDOMNode3, isSame: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    compareDocumentPosition*: proc(
+      self: ptr IHTMLDOMNode3, otherNode: ptr IHTMLDOMNode, flags: ptr USHORT
+    ): HRESULT {.stdcall.}
+    isSupported*: proc(
+      self: ptr IHTMLDOMNode3,
+      feature: BSTR,
+      version: VARIANT,
+      pfisSupported: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+
   IHTMLDOMAttribute* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMAttributeVtbl
+
   IHTMLDOMAttributeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_nodeName*: proc(self: ptr IHTMLDOMAttribute, p: ptr BSTR): HRESULT {.stdcall.}
     put_nodeValue*: proc(self: ptr IHTMLDOMAttribute, v: VARIANT): HRESULT {.stdcall.}
-    get_nodeValue*: proc(self: ptr IHTMLDOMAttribute, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_specified*: proc(self: ptr IHTMLDOMAttribute, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_nodeValue*:
+      proc(self: ptr IHTMLDOMAttribute, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_specified*:
+      proc(self: ptr IHTMLDOMAttribute, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   IHTMLDOMAttribute2* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMAttribute2Vtbl
+
   IHTMLDOMAttribute2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_name*: proc(self: ptr IHTMLDOMAttribute2, p: ptr BSTR): HRESULT {.stdcall.}
     put_value*: proc(self: ptr IHTMLDOMAttribute2, v: BSTR): HRESULT {.stdcall.}
     get_value*: proc(self: ptr IHTMLDOMAttribute2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_expando*: proc(self: ptr IHTMLDOMAttribute2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_expando*:
+      proc(self: ptr IHTMLDOMAttribute2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_nodeType*: proc(self: ptr IHTMLDOMAttribute2, p: ptr LONG): HRESULT {.stdcall.}
-    get_parentNode*: proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    get_childNodes*: proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_firstChild*: proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    get_lastChild*: proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    get_previousSibling*: proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    get_nextSibling*: proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    get_attributes*: proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_ownerDocument*: proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    insertBefore*: proc(self: ptr IHTMLDOMAttribute2, newChild: ptr IHTMLDOMNode, refChild: VARIANT, node: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    replaceChild*: proc(self: ptr IHTMLDOMAttribute2, newChild: ptr IHTMLDOMNode, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    removeChild*: proc(self: ptr IHTMLDOMAttribute2, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    appendChild*: proc(self: ptr IHTMLDOMAttribute2, newChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    hasChildNodes*: proc(self: ptr IHTMLDOMAttribute2, fChildren: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    cloneNode*: proc(self: ptr IHTMLDOMAttribute2, fDeep: VARIANT_BOOL, clonedNode: ptr ptr IHTMLDOMAttribute): HRESULT {.stdcall.}
+    get_parentNode*:
+      proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_childNodes*:
+      proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_firstChild*:
+      proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_lastChild*:
+      proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_previousSibling*:
+      proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_nextSibling*:
+      proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_attributes*:
+      proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_ownerDocument*:
+      proc(self: ptr IHTMLDOMAttribute2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    insertBefore*: proc(
+      self: ptr IHTMLDOMAttribute2,
+      newChild: ptr IHTMLDOMNode,
+      refChild: VARIANT,
+      node: ptr ptr IHTMLDOMNode,
+    ): HRESULT {.stdcall.}
+    replaceChild*: proc(
+      self: ptr IHTMLDOMAttribute2,
+      newChild: ptr IHTMLDOMNode,
+      oldChild: ptr IHTMLDOMNode,
+      node: ptr ptr IHTMLDOMNode,
+    ): HRESULT {.stdcall.}
+    removeChild*: proc(
+      self: ptr IHTMLDOMAttribute2,
+      oldChild: ptr IHTMLDOMNode,
+      node: ptr ptr IHTMLDOMNode,
+    ): HRESULT {.stdcall.}
+    appendChild*: proc(
+      self: ptr IHTMLDOMAttribute2,
+      newChild: ptr IHTMLDOMNode,
+      node: ptr ptr IHTMLDOMNode,
+    ): HRESULT {.stdcall.}
+    hasChildNodes*: proc(
+      self: ptr IHTMLDOMAttribute2, fChildren: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    cloneNode*: proc(
+      self: ptr IHTMLDOMAttribute2,
+      fDeep: VARIANT_BOOL,
+      clonedNode: ptr ptr IHTMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+
   IHTMLElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLElement2Vtbl
+
   IHTMLElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_scopeName*: proc(self: ptr IHTMLElement2, p: ptr BSTR): HRESULT {.stdcall.}
-    setCapture*: proc(self: ptr IHTMLElement2, containerCapture: VARIANT_BOOL): HRESULT {.stdcall.}
+    setCapture*:
+      proc(self: ptr IHTMLElement2, containerCapture: VARIANT_BOOL): HRESULT {.stdcall.}
     releaseCapture*: proc(self: ptr IHTMLElement2): HRESULT {.stdcall.}
     put_onlosecapture*: proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_onlosecapture*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
-    componentFromPoint*: proc(self: ptr IHTMLElement2, x: LONG, y: LONG, component: ptr BSTR): HRESULT {.stdcall.}
+    get_onlosecapture*:
+      proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    componentFromPoint*: proc(
+      self: ptr IHTMLElement2, x: LONG, y: LONG, component: ptr BSTR
+    ): HRESULT {.stdcall.}
     doScroll*: proc(self: ptr IHTMLElement2, component: VARIANT): HRESULT {.stdcall.}
     put_onscroll*: proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
     get_onscroll*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
@@ -6168,21 +7850,35 @@
     put_oncut*: proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
     get_oncut*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onbeforecopy*: proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforecopy*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onbeforecopy*:
+      proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_oncopy*: proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
     get_oncopy*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onbeforepaste*: proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforepaste*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onbeforepaste*:
+      proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onpaste*: proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
     get_onpaste*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_currentStyle*: proc(self: ptr IHTMLElement2, p: ptr ptr IHTMLCurrentStyle): HRESULT {.stdcall.}
-    put_onpropertychange*: proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_onpropertychange*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
-    getClientRects*: proc(self: ptr IHTMLElement2, pRectCol: ptr ptr IHTMLRectCollection): HRESULT {.stdcall.}
-    getBoundingClientRect*: proc(self: ptr IHTMLElement2, pRect: ptr ptr IHTMLRect): HRESULT {.stdcall.}
-    setExpression*: proc(self: ptr IHTMLElement2, propname: BSTR, expression: BSTR, language: BSTR): HRESULT {.stdcall.}
-    getExpression*: proc(self: ptr IHTMLElement2, propname: BSTR, expression: ptr VARIANT): HRESULT {.stdcall.}
-    removeExpression*: proc(self: ptr IHTMLElement2, propname: BSTR, pfSuccess: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_currentStyle*:
+      proc(self: ptr IHTMLElement2, p: ptr ptr IHTMLCurrentStyle): HRESULT {.stdcall.}
+    put_onpropertychange*:
+      proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
+    get_onpropertychange*:
+      proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    getClientRects*: proc(
+      self: ptr IHTMLElement2, pRectCol: ptr ptr IHTMLRectCollection
+    ): HRESULT {.stdcall.}
+    getBoundingClientRect*:
+      proc(self: ptr IHTMLElement2, pRect: ptr ptr IHTMLRect): HRESULT {.stdcall.}
+    setExpression*: proc(
+      self: ptr IHTMLElement2, propname: BSTR, expression: BSTR, language: BSTR
+    ): HRESULT {.stdcall.}
+    getExpression*: proc(
+      self: ptr IHTMLElement2, propname: BSTR, expression: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    removeExpression*: proc(
+      self: ptr IHTMLElement2, propname: BSTR, pfSuccess: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     put_tabIndex*: proc(self: ptr IHTMLElement2, v: int16): HRESULT {.stdcall.}
     get_tabIndex*: proc(self: ptr IHTMLElement2, p: ptr int16): HRESULT {.stdcall.}
     focus*: proc(self: ptr IHTMLElement2): HRESULT {.stdcall.}
@@ -6196,25 +7892,39 @@
     get_onresize*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
     blur*: proc(self: ptr IHTMLElement2): HRESULT {.stdcall.}
     addFilter*: proc(self: ptr IHTMLElement2, pUnk: ptr IUnknown): HRESULT {.stdcall.}
-    removeFilter*: proc(self: ptr IHTMLElement2, pUnk: ptr IUnknown): HRESULT {.stdcall.}
+    removeFilter*:
+      proc(self: ptr IHTMLElement2, pUnk: ptr IUnknown): HRESULT {.stdcall.}
     get_clientHeight*: proc(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.stdcall.}
     get_clientWidth*: proc(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.stdcall.}
     get_clientTop*: proc(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.stdcall.}
     get_clientLeft*: proc(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.stdcall.}
-    attachEvent*: proc(self: ptr IHTMLElement2, event: BSTR, pDisp: ptr IDispatch, pfResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    detachEvent*: proc(self: ptr IHTMLElement2, event: BSTR, pDisp: ptr IDispatch): HRESULT {.stdcall.}
+    attachEvent*: proc(
+      self: ptr IHTMLElement2,
+      event: BSTR,
+      pDisp: ptr IDispatch,
+      pfResult: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    detachEvent*: proc(
+      self: ptr IHTMLElement2, event: BSTR, pDisp: ptr IDispatch
+    ): HRESULT {.stdcall.}
     get_readyState*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onreadystatechange*: proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_onreadystatechange*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onreadystatechange*:
+      proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
+    get_onreadystatechange*:
+      proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onrowsdelete*: proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_onrowsdelete*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onrowsdelete*:
+      proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onrowsinserted*: proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_onrowsinserted*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onrowsinserted*:
+      proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_oncellchange*: proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_oncellchange*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_oncellchange*:
+      proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_dir*: proc(self: ptr IHTMLElement2, v: BSTR): HRESULT {.stdcall.}
     get_dir*: proc(self: ptr IHTMLElement2, p: ptr BSTR): HRESULT {.stdcall.}
-    createControlRange*: proc(self: ptr IHTMLElement2, range: ptr ptr IDispatch): HRESULT {.stdcall.}
+    createControlRange*:
+      proc(self: ptr IHTMLElement2, range: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_scrollHeight*: proc(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.stdcall.}
     get_scrollWidth*: proc(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.stdcall.}
     put_scrollTop*: proc(self: ptr IHTMLElement2, v: LONG): HRESULT {.stdcall.}
@@ -6222,179 +7932,366 @@
     put_scrollLeft*: proc(self: ptr IHTMLElement2, v: LONG): HRESULT {.stdcall.}
     get_scrollLeft*: proc(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.stdcall.}
     clearAttributes*: proc(self: ptr IHTMLElement2): HRESULT {.stdcall.}
-    mergeAttributes*: proc(self: ptr IHTMLElement2, mergeThis: ptr IHTMLElement): HRESULT {.stdcall.}
+    mergeAttributes*:
+      proc(self: ptr IHTMLElement2, mergeThis: ptr IHTMLElement): HRESULT {.stdcall.}
     put_oncontextmenu*: proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_oncontextmenu*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
-    insertAdjacentElement*: proc(self: ptr IHTMLElement2, where: BSTR, insertedElement: ptr IHTMLElement, inserted: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    applyElement*: proc(self: ptr IHTMLElement2, apply: ptr IHTMLElement, where: BSTR, applied: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    getAdjacentText*: proc(self: ptr IHTMLElement2, where: BSTR, text: ptr BSTR): HRESULT {.stdcall.}
-    replaceAdjacentText*: proc(self: ptr IHTMLElement2, where: BSTR, newText: BSTR, oldText: ptr BSTR): HRESULT {.stdcall.}
-    get_canHaveChildren*: proc(self: ptr IHTMLElement2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    addBehavior*: proc(self: ptr IHTMLElement2, bstrUrl: BSTR, pvarFactory: ptr VARIANT, pCookie: ptr LONG): HRESULT {.stdcall.}
-    removeBehavior*: proc(self: ptr IHTMLElement2, cookie: LONG, pfResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_runtimeStyle*: proc(self: ptr IHTMLElement2, p: ptr ptr IHTMLStyle): HRESULT {.stdcall.}
-    get_behaviorUrns*: proc(self: ptr IHTMLElement2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_oncontextmenu*:
+      proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    insertAdjacentElement*: proc(
+      self: ptr IHTMLElement2,
+      where: BSTR,
+      insertedElement: ptr IHTMLElement,
+      inserted: ptr ptr IHTMLElement,
+    ): HRESULT {.stdcall.}
+    applyElement*: proc(
+      self: ptr IHTMLElement2,
+      apply: ptr IHTMLElement,
+      where: BSTR,
+      applied: ptr ptr IHTMLElement,
+    ): HRESULT {.stdcall.}
+    getAdjacentText*:
+      proc(self: ptr IHTMLElement2, where: BSTR, text: ptr BSTR): HRESULT {.stdcall.}
+    replaceAdjacentText*: proc(
+      self: ptr IHTMLElement2, where: BSTR, newText: BSTR, oldText: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_canHaveChildren*:
+      proc(self: ptr IHTMLElement2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    addBehavior*: proc(
+      self: ptr IHTMLElement2,
+      bstrUrl: BSTR,
+      pvarFactory: ptr VARIANT,
+      pCookie: ptr LONG,
+    ): HRESULT {.stdcall.}
+    removeBehavior*: proc(
+      self: ptr IHTMLElement2, cookie: LONG, pfResult: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    get_runtimeStyle*:
+      proc(self: ptr IHTMLElement2, p: ptr ptr IHTMLStyle): HRESULT {.stdcall.}
+    get_behaviorUrns*:
+      proc(self: ptr IHTMLElement2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     put_tagUrn*: proc(self: ptr IHTMLElement2, v: BSTR): HRESULT {.stdcall.}
     get_tagUrn*: proc(self: ptr IHTMLElement2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_onbeforeeditfocus*: proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforeeditfocus*: proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_readyStateValue*: proc(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.stdcall.}
-    getElementsByTagName*: proc(self: ptr IHTMLElement2, v: BSTR, pelColl: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
+    put_onbeforeeditfocus*:
+      proc(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.stdcall.}
+    get_onbeforeeditfocus*:
+      proc(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_readyStateValue*:
+      proc(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.stdcall.}
+    getElementsByTagName*: proc(
+      self: ptr IHTMLElement2, v: BSTR, pelColl: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
+
   IHTMLDOMAttribute3* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMAttribute3Vtbl
+
   IHTMLDOMAttribute3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_nodeValue*: proc(self: ptr IHTMLDOMAttribute3, v: VARIANT): HRESULT {.stdcall.}
-    get_nodeValue*: proc(self: ptr IHTMLDOMAttribute3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_nodeValue*:
+      proc(self: ptr IHTMLDOMAttribute3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_value*: proc(self: ptr IHTMLDOMAttribute3, v: BSTR): HRESULT {.stdcall.}
     get_value*: proc(self: ptr IHTMLDOMAttribute3, p: ptr BSTR): HRESULT {.stdcall.}
-    get_specified*: proc(self: ptr IHTMLDOMAttribute3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_ownerElement*: proc(self: ptr IHTMLDOMAttribute3, p: ptr ptr IHTMLElement2): HRESULT {.stdcall.}
+    get_specified*:
+      proc(self: ptr IHTMLDOMAttribute3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_ownerElement*:
+      proc(self: ptr IHTMLDOMAttribute3, p: ptr ptr IHTMLElement2): HRESULT {.stdcall.}
+
   IHTMLDOMAttribute4* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMAttribute4Vtbl
+
   IHTMLDOMAttribute4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_nodeValue*: proc(self: ptr IHTMLDOMAttribute4, v: VARIANT): HRESULT {.stdcall.}
-    get_nodeValue*: proc(self: ptr IHTMLDOMAttribute4, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_nodeValue*:
+      proc(self: ptr IHTMLDOMAttribute4, p: ptr VARIANT): HRESULT {.stdcall.}
     get_nodeName*: proc(self: ptr IHTMLDOMAttribute4, p: ptr BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTMLDOMAttribute4, p: ptr BSTR): HRESULT {.stdcall.}
     put_value*: proc(self: ptr IHTMLDOMAttribute4, v: BSTR): HRESULT {.stdcall.}
     get_value*: proc(self: ptr IHTMLDOMAttribute4, p: ptr BSTR): HRESULT {.stdcall.}
-    get_firstChild*: proc(self: ptr IHTMLDOMAttribute4, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    get_lastChild*: proc(self: ptr IHTMLDOMAttribute4, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    get_childNodes*: proc(self: ptr IHTMLDOMAttribute4, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    hasAttributes*: proc(self: ptr IHTMLDOMAttribute4, pfHasAttributes: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    hasChildNodes*: proc(self: ptr IHTMLDOMAttribute4, fChildren: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_firstChild*:
+      proc(self: ptr IHTMLDOMAttribute4, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_lastChild*:
+      proc(self: ptr IHTMLDOMAttribute4, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_childNodes*:
+      proc(self: ptr IHTMLDOMAttribute4, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    hasAttributes*: proc(
+      self: ptr IHTMLDOMAttribute4, pfHasAttributes: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    hasChildNodes*: proc(
+      self: ptr IHTMLDOMAttribute4, fChildren: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     normalize*: proc(self: ptr IHTMLDOMAttribute4): HRESULT {.stdcall.}
-    get_specified*: proc(self: ptr IHTMLDOMAttribute4, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_specified*:
+      proc(self: ptr IHTMLDOMAttribute4, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   IHTMLDOMTextNode* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMTextNodeVtbl
+
   IHTMLDOMTextNodeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_data*: proc(self: ptr IHTMLDOMTextNode, v: BSTR): HRESULT {.stdcall.}
     get_data*: proc(self: ptr IHTMLDOMTextNode, p: ptr BSTR): HRESULT {.stdcall.}
     toString*: proc(self: ptr IHTMLDOMTextNode, String: ptr BSTR): HRESULT {.stdcall.}
     get_length*: proc(self: ptr IHTMLDOMTextNode, p: ptr LONG): HRESULT {.stdcall.}
-    splitText*: proc(self: ptr IHTMLDOMTextNode, offset: LONG, pRetNode: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    splitText*: proc(
+      self: ptr IHTMLDOMTextNode, offset: LONG, pRetNode: ptr ptr IHTMLDOMNode
+    ): HRESULT {.stdcall.}
+
   IHTMLDOMTextNode2* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMTextNode2Vtbl
+
   IHTMLDOMTextNode2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    substringData*: proc(self: ptr IHTMLDOMTextNode2, offset: LONG, Count: LONG, pbstrsubString: ptr BSTR): HRESULT {.stdcall.}
-    appendData*: proc(self: ptr IHTMLDOMTextNode2, bstrstring: BSTR): HRESULT {.stdcall.}
-    insertData*: proc(self: ptr IHTMLDOMTextNode2, offset: LONG, bstrstring: BSTR): HRESULT {.stdcall.}
-    deleteData*: proc(self: ptr IHTMLDOMTextNode2, offset: LONG, Count: LONG): HRESULT {.stdcall.}
-    replaceData*: proc(self: ptr IHTMLDOMTextNode2, offset: LONG, Count: LONG, bstrstring: BSTR): HRESULT {.stdcall.}
+    substringData*: proc(
+      self: ptr IHTMLDOMTextNode2, offset: LONG, Count: LONG, pbstrsubString: ptr BSTR
+    ): HRESULT {.stdcall.}
+    appendData*:
+      proc(self: ptr IHTMLDOMTextNode2, bstrstring: BSTR): HRESULT {.stdcall.}
+    insertData*: proc(
+      self: ptr IHTMLDOMTextNode2, offset: LONG, bstrstring: BSTR
+    ): HRESULT {.stdcall.}
+    deleteData*:
+      proc(self: ptr IHTMLDOMTextNode2, offset: LONG, Count: LONG): HRESULT {.stdcall.}
+    replaceData*: proc(
+      self: ptr IHTMLDOMTextNode2, offset: LONG, Count: LONG, bstrstring: BSTR
+    ): HRESULT {.stdcall.}
+
   IHTMLDOMTextNode3* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMTextNode3Vtbl
+
   IHTMLDOMTextNode3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    substringData*: proc(self: ptr IHTMLDOMTextNode3, offset: LONG, Count: LONG, pbstrsubString: ptr BSTR): HRESULT {.stdcall.}
-    insertData*: proc(self: ptr IHTMLDOMTextNode3, offset: LONG, bstrstring: BSTR): HRESULT {.stdcall.}
-    deleteData*: proc(self: ptr IHTMLDOMTextNode3, offset: LONG, Count: LONG): HRESULT {.stdcall.}
-    replaceData*: proc(self: ptr IHTMLDOMTextNode3, offset: LONG, Count: LONG, bstrstring: BSTR): HRESULT {.stdcall.}
-    splitText*: proc(self: ptr IHTMLDOMTextNode3, offset: LONG, pRetNode: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    substringData*: proc(
+      self: ptr IHTMLDOMTextNode3, offset: LONG, Count: LONG, pbstrsubString: ptr BSTR
+    ): HRESULT {.stdcall.}
+    insertData*: proc(
+      self: ptr IHTMLDOMTextNode3, offset: LONG, bstrstring: BSTR
+    ): HRESULT {.stdcall.}
+    deleteData*:
+      proc(self: ptr IHTMLDOMTextNode3, offset: LONG, Count: LONG): HRESULT {.stdcall.}
+    replaceData*: proc(
+      self: ptr IHTMLDOMTextNode3, offset: LONG, Count: LONG, bstrstring: BSTR
+    ): HRESULT {.stdcall.}
+    splitText*: proc(
+      self: ptr IHTMLDOMTextNode3, offset: LONG, pRetNode: ptr ptr IHTMLDOMNode
+    ): HRESULT {.stdcall.}
     get_wholeText*: proc(self: ptr IHTMLDOMTextNode3, p: ptr BSTR): HRESULT {.stdcall.}
-    replaceWholeText*: proc(self: ptr IHTMLDOMTextNode3, bstrText: BSTR, ppRetNode: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    hasAttributes*: proc(self: ptr IHTMLDOMTextNode3, pfHasAttributes: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    replaceWholeText*: proc(
+      self: ptr IHTMLDOMTextNode3, bstrText: BSTR, ppRetNode: ptr ptr IHTMLDOMNode
+    ): HRESULT {.stdcall.}
+    hasAttributes*: proc(
+      self: ptr IHTMLDOMTextNode3, pfHasAttributes: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     normalize*: proc(self: ptr IHTMLDOMTextNode3): HRESULT {.stdcall.}
+
   IHTMLDOMImplementation* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMImplementationVtbl
+
   IHTMLDOMImplementationVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    hasFeature*: proc(self: ptr IHTMLDOMImplementation, bstrfeature: BSTR, version: VARIANT, pfHasFeature: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    hasFeature*: proc(
+      self: ptr IHTMLDOMImplementation,
+      bstrfeature: BSTR,
+      version: VARIANT,
+      pfHasFeature: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+
   IDOMDocumentType* {.pure.} = object
     lpVtbl*: ptr IDOMDocumentTypeVtbl
+
   IDOMDocumentTypeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_name*: proc(self: ptr IDOMDocumentType, p: ptr BSTR): HRESULT {.stdcall.}
-    get_entities*: proc(self: ptr IDOMDocumentType, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_notations*: proc(self: ptr IDOMDocumentType, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_entities*:
+      proc(self: ptr IDOMDocumentType, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_notations*:
+      proc(self: ptr IDOMDocumentType, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_publicId*: proc(self: ptr IDOMDocumentType, p: ptr VARIANT): HRESULT {.stdcall.}
     get_systemId*: proc(self: ptr IDOMDocumentType, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_internalSubset*: proc(self: ptr IDOMDocumentType, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_internalSubset*:
+      proc(self: ptr IDOMDocumentType, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLDOMRange* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMRangeVtbl
+
   IHTMLDOMRangeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_startContainer*: proc(self: ptr IHTMLDOMRange, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_startContainer*:
+      proc(self: ptr IHTMLDOMRange, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
     get_startOffset*: proc(self: ptr IHTMLDOMRange, p: ptr LONG): HRESULT {.stdcall.}
-    get_endContainer*: proc(self: ptr IHTMLDOMRange, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_endContainer*:
+      proc(self: ptr IHTMLDOMRange, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
     get_endOffset*: proc(self: ptr IHTMLDOMRange, p: ptr LONG): HRESULT {.stdcall.}
-    get_collapsed*: proc(self: ptr IHTMLDOMRange, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_commonAncestorContainer*: proc(self: ptr IHTMLDOMRange, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    setStart*: proc(self: ptr IHTMLDOMRange, refNode: ptr IDispatch, offset: LONG): HRESULT {.stdcall.}
-    setEnd*: proc(self: ptr IHTMLDOMRange, refNode: ptr IDispatch, offset: LONG): HRESULT {.stdcall.}
-    setStartBefore*: proc(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.stdcall.}
-    setStartAfter*: proc(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.stdcall.}
-    setEndBefore*: proc(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.stdcall.}
-    setEndAfter*: proc(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.stdcall.}
+    get_collapsed*:
+      proc(self: ptr IHTMLDOMRange, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_commonAncestorContainer*:
+      proc(self: ptr IHTMLDOMRange, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    setStart*: proc(
+      self: ptr IHTMLDOMRange, refNode: ptr IDispatch, offset: LONG
+    ): HRESULT {.stdcall.}
+    setEnd*: proc(
+      self: ptr IHTMLDOMRange, refNode: ptr IDispatch, offset: LONG
+    ): HRESULT {.stdcall.}
+    setStartBefore*:
+      proc(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.stdcall.}
+    setStartAfter*:
+      proc(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.stdcall.}
+    setEndBefore*:
+      proc(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.stdcall.}
+    setEndAfter*:
+      proc(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.stdcall.}
     collapse*: proc(self: ptr IHTMLDOMRange, toStart: VARIANT_BOOL): HRESULT {.stdcall.}
-    selectNode*: proc(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.stdcall.}
-    selectNodeContents*: proc(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.stdcall.}
-    compareBoundaryPoints*: proc(self: ptr IHTMLDOMRange, how: int16, sourceRange: ptr IDispatch, compareResult: ptr LONG): HRESULT {.stdcall.}
+    selectNode*:
+      proc(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.stdcall.}
+    selectNodeContents*:
+      proc(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.stdcall.}
+    compareBoundaryPoints*: proc(
+      self: ptr IHTMLDOMRange,
+      how: int16,
+      sourceRange: ptr IDispatch,
+      compareResult: ptr LONG,
+    ): HRESULT {.stdcall.}
     deleteContents*: proc(self: ptr IHTMLDOMRange): HRESULT {.stdcall.}
-    extractContents*: proc(self: ptr IHTMLDOMRange, ppDocumentFragment: ptr ptr IDispatch): HRESULT {.stdcall.}
-    cloneContents*: proc(self: ptr IHTMLDOMRange, ppDocumentFragment: ptr ptr IDispatch): HRESULT {.stdcall.}
-    insertNode*: proc(self: ptr IHTMLDOMRange, newNode: ptr IDispatch): HRESULT {.stdcall.}
-    surroundContents*: proc(self: ptr IHTMLDOMRange, newParent: ptr IDispatch): HRESULT {.stdcall.}
-    cloneRange*: proc(self: ptr IHTMLDOMRange, ppClonedRange: ptr ptr IHTMLDOMRange): HRESULT {.stdcall.}
-    toString*: proc(self: ptr IHTMLDOMRange, pRangeString: ptr BSTR): HRESULT {.stdcall.}
+    extractContents*: proc(
+      self: ptr IHTMLDOMRange, ppDocumentFragment: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    cloneContents*: proc(
+      self: ptr IHTMLDOMRange, ppDocumentFragment: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    insertNode*:
+      proc(self: ptr IHTMLDOMRange, newNode: ptr IDispatch): HRESULT {.stdcall.}
+    surroundContents*:
+      proc(self: ptr IHTMLDOMRange, newParent: ptr IDispatch): HRESULT {.stdcall.}
+    cloneRange*: proc(
+      self: ptr IHTMLDOMRange, ppClonedRange: ptr ptr IHTMLDOMRange
+    ): HRESULT {.stdcall.}
+    toString*:
+      proc(self: ptr IHTMLDOMRange, pRangeString: ptr BSTR): HRESULT {.stdcall.}
     detach*: proc(self: ptr IHTMLDOMRange): HRESULT {.stdcall.}
-    getClientRects*: proc(self: ptr IHTMLDOMRange, ppRectCol: ptr ptr IHTMLRectCollection): HRESULT {.stdcall.}
-    getBoundingClientRect*: proc(self: ptr IHTMLDOMRange, ppRect: ptr ptr IHTMLRect): HRESULT {.stdcall.}
+    getClientRects*: proc(
+      self: ptr IHTMLDOMRange, ppRectCol: ptr ptr IHTMLRectCollection
+    ): HRESULT {.stdcall.}
+    getBoundingClientRect*:
+      proc(self: ptr IHTMLDOMRange, ppRect: ptr ptr IHTMLRect): HRESULT {.stdcall.}
+
   IHTMLSelection* {.pure.} = object
     lpVtbl*: ptr IHTMLSelectionVtbl
+
   IHTMLSelectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_anchorNode*: proc(self: ptr IHTMLSelection, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_anchorNode*:
+      proc(self: ptr IHTMLSelection, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
     get_anchorOffset*: proc(self: ptr IHTMLSelection, p: ptr LONG): HRESULT {.stdcall.}
-    get_focusNode*: proc(self: ptr IHTMLSelection, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_focusNode*:
+      proc(self: ptr IHTMLSelection, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
     get_focusOffset*: proc(self: ptr IHTMLSelection, p: ptr LONG): HRESULT {.stdcall.}
-    get_isCollapsed*: proc(self: ptr IHTMLSelection, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    collapse*: proc(self: ptr IHTMLSelection, parentNode: ptr IDispatch, offfset: LONG): HRESULT {.stdcall.}
+    get_isCollapsed*:
+      proc(self: ptr IHTMLSelection, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    collapse*: proc(
+      self: ptr IHTMLSelection, parentNode: ptr IDispatch, offfset: LONG
+    ): HRESULT {.stdcall.}
     collapseToStart*: proc(self: ptr IHTMLSelection): HRESULT {.stdcall.}
     collapseToEnd*: proc(self: ptr IHTMLSelection): HRESULT {.stdcall.}
-    selectAllChildren*: proc(self: ptr IHTMLSelection, parentNode: ptr IDispatch): HRESULT {.stdcall.}
+    selectAllChildren*:
+      proc(self: ptr IHTMLSelection, parentNode: ptr IDispatch): HRESULT {.stdcall.}
     deleteFromDocument*: proc(self: ptr IHTMLSelection): HRESULT {.stdcall.}
     get_rangeCount*: proc(self: ptr IHTMLSelection, p: ptr LONG): HRESULT {.stdcall.}
-    getRangeAt*: proc(self: ptr IHTMLSelection, index: LONG, ppRange: ptr ptr IHTMLDOMRange): HRESULT {.stdcall.}
+    getRangeAt*: proc(
+      self: ptr IHTMLSelection, index: LONG, ppRange: ptr ptr IHTMLDOMRange
+    ): HRESULT {.stdcall.}
     addRange*: proc(self: ptr IHTMLSelection, range: ptr IDispatch): HRESULT {.stdcall.}
-    removeRange*: proc(self: ptr IHTMLSelection, range: ptr IDispatch): HRESULT {.stdcall.}
+    removeRange*:
+      proc(self: ptr IHTMLSelection, range: ptr IDispatch): HRESULT {.stdcall.}
     removeAllRanges*: proc(self: ptr IHTMLSelection): HRESULT {.stdcall.}
-    toString*: proc(self: ptr IHTMLSelection, pSelectionString: ptr BSTR): HRESULT {.stdcall.}
+    toString*:
+      proc(self: ptr IHTMLSelection, pSelectionString: ptr BSTR): HRESULT {.stdcall.}
+
   IDOMProcessingInstruction* {.pure.} = object
     lpVtbl*: ptr IDOMProcessingInstructionVtbl
+
   IDOMProcessingInstructionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_target*: proc(self: ptr IDOMProcessingInstruction, p: ptr BSTR): HRESULT {.stdcall.}
+    get_target*:
+      proc(self: ptr IDOMProcessingInstruction, p: ptr BSTR): HRESULT {.stdcall.}
     put_data*: proc(self: ptr IDOMProcessingInstruction, v: BSTR): HRESULT {.stdcall.}
-    get_data*: proc(self: ptr IDOMProcessingInstruction, p: ptr BSTR): HRESULT {.stdcall.}
+    get_data*:
+      proc(self: ptr IDOMProcessingInstruction, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLDocument7* {.pure.} = object
     lpVtbl*: ptr IHTMLDocument7Vtbl
+
   IHTMLDocument7Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_defaultView*: proc(self: ptr IHTMLDocument7, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
-    createCDATASection*: proc(self: ptr IHTMLDocument7, text: BSTR, newCDATASectionNode: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    getSelection*: proc(self: ptr IHTMLDocument7, ppIHTMLSelection: ptr ptr IHTMLSelection): HRESULT {.stdcall.}
-    getElementsByTagNameNS*: proc(self: ptr IHTMLDocument7, pvarNS: ptr VARIANT, bstrLocalName: BSTR, pelColl: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    createElementNS*: proc(self: ptr IHTMLDocument7, pvarNS: ptr VARIANT, bstrTag: BSTR, newElem: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    createAttributeNS*: proc(self: ptr IHTMLDocument7, pvarNS: ptr VARIANT, bstrAttrName: BSTR, ppAttribute: ptr ptr IHTMLDOMAttribute): HRESULT {.stdcall.}
-    put_onmsthumbnailclick*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsthumbnailclick*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_defaultView*:
+      proc(self: ptr IHTMLDocument7, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
+    createCDATASection*: proc(
+      self: ptr IHTMLDocument7, text: BSTR, newCDATASectionNode: ptr ptr IHTMLDOMNode
+    ): HRESULT {.stdcall.}
+    getSelection*: proc(
+      self: ptr IHTMLDocument7, ppIHTMLSelection: ptr ptr IHTMLSelection
+    ): HRESULT {.stdcall.}
+    getElementsByTagNameNS*: proc(
+      self: ptr IHTMLDocument7,
+      pvarNS: ptr VARIANT,
+      bstrLocalName: BSTR,
+      pelColl: ptr ptr IHTMLElementCollection,
+    ): HRESULT {.stdcall.}
+    createElementNS*: proc(
+      self: ptr IHTMLDocument7,
+      pvarNS: ptr VARIANT,
+      bstrTag: BSTR,
+      newElem: ptr ptr IHTMLElement,
+    ): HRESULT {.stdcall.}
+    createAttributeNS*: proc(
+      self: ptr IHTMLDocument7,
+      pvarNS: ptr VARIANT,
+      bstrAttrName: BSTR,
+      ppAttribute: ptr ptr IHTMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+    put_onmsthumbnailclick*:
+      proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsthumbnailclick*:
+      proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     get_characterSet*: proc(self: ptr IHTMLDocument7, p: ptr BSTR): HRESULT {.stdcall.}
-    createElement*: proc(self: ptr IHTMLDocument7, bstrTag: BSTR, newElem: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    createAttribute*: proc(self: ptr IHTMLDocument7, bstrAttrName: BSTR, ppAttribute: ptr ptr IHTMLDOMAttribute): HRESULT {.stdcall.}
-    getElementsByClassName*: proc(self: ptr IHTMLDocument7, v: BSTR, pel: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    createProcessingInstruction*: proc(self: ptr IHTMLDocument7, bstrTarget: BSTR, bstrData: BSTR, newProcessingInstruction: ptr ptr IDOMProcessingInstruction): HRESULT {.stdcall.}
-    adoptNode*: proc(self: ptr IHTMLDocument7, pNodeSource: ptr IHTMLDOMNode, ppNodeDest: ptr ptr IHTMLDOMNode3): HRESULT {.stdcall.}
-    put_onmssitemodejumplistitemremoved*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmssitemodejumplistitemremoved*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_all*: proc(self: ptr IHTMLDocument7, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
+    createElement*: proc(
+      self: ptr IHTMLDocument7, bstrTag: BSTR, newElem: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
+    createAttribute*: proc(
+      self: ptr IHTMLDocument7,
+      bstrAttrName: BSTR,
+      ppAttribute: ptr ptr IHTMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+    getElementsByClassName*: proc(
+      self: ptr IHTMLDocument7, v: BSTR, pel: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
+    createProcessingInstruction*: proc(
+      self: ptr IHTMLDocument7,
+      bstrTarget: BSTR,
+      bstrData: BSTR,
+      newProcessingInstruction: ptr ptr IDOMProcessingInstruction,
+    ): HRESULT {.stdcall.}
+    adoptNode*: proc(
+      self: ptr IHTMLDocument7,
+      pNodeSource: ptr IHTMLDOMNode,
+      ppNodeDest: ptr ptr IHTMLDOMNode3,
+    ): HRESULT {.stdcall.}
+    put_onmssitemodejumplistitemremoved*:
+      proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmssitemodejumplistitemremoved*:
+      proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_all*: proc(self: ptr IHTMLDocument7, p: ptr ptr IHTMLElementCollection): HRESULT {.
+      stdcall
+    .}
     get_inputEncoding*: proc(self: ptr IHTMLDocument7, p: ptr BSTR): HRESULT {.stdcall.}
     get_xmlEncoding*: proc(self: ptr IHTMLDocument7, p: ptr BSTR): HRESULT {.stdcall.}
-    put_xmlStandalone*: proc(self: ptr IHTMLDocument7, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_xmlStandalone*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_xmlStandalone*:
+      proc(self: ptr IHTMLDocument7, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_xmlStandalone*:
+      proc(self: ptr IHTMLDocument7, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_xmlVersion*: proc(self: ptr IHTMLDocument7, v: BSTR): HRESULT {.stdcall.}
     get_xmlVersion*: proc(self: ptr IHTMLDocument7, p: ptr BSTR): HRESULT {.stdcall.}
-    hasAttributes*: proc(self: ptr IHTMLDocument7, pfHasAttributes: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    hasAttributes*: proc(
+      self: ptr IHTMLDocument7, pfHasAttributes: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     put_onabort*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
     get_onabort*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onblur*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
     get_onblur*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_oncanplay*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
     get_oncanplay*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_oncanplaythrough*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
-    get_oncanplaythrough*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_oncanplaythrough*:
+      proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
+    get_oncanplaythrough*:
+      proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onchange*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
     get_onchange*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ondrag*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
@@ -6402,15 +8299,19 @@
     put_ondragend*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
     get_ondragend*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ondragenter*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
-    get_ondragenter*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_ondragenter*:
+      proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ondragleave*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
-    get_ondragleave*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_ondragleave*:
+      proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ondragover*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
     get_ondragover*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ondrop*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
     get_ondrop*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_ondurationchange*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
-    get_ondurationchange*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_ondurationchange*:
+      proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
+    get_ondurationchange*:
+      proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onemptied*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
     get_onemptied*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onended*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
@@ -6424,11 +8325,15 @@
     put_onload*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
     get_onload*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onloadeddata*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
-    get_onloadeddata*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onloadedmetadata*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
-    get_onloadedmetadata*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onloadeddata*:
+      proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onloadedmetadata*:
+      proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
+    get_onloadedmetadata*:
+      proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onloadstart*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
-    get_onloadstart*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onloadstart*:
+      proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onpause*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
     get_onpause*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onplay*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
@@ -6438,7 +8343,8 @@
     put_onprogress*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
     get_onprogress*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onratechange*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
-    get_onratechange*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onratechange*:
+      proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onreset*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
     get_onreset*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onscroll*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
@@ -6456,125 +8362,276 @@
     put_onsuspend*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
     get_onsuspend*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ontimeupdate*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
-    get_ontimeupdate*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_ontimeupdate*:
+      proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onvolumechange*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
-    get_onvolumechange*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onvolumechange*:
+      proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onwaiting*: proc(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.stdcall.}
     get_onwaiting*: proc(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.stdcall.}
     normalize*: proc(self: ptr IHTMLDocument7): HRESULT {.stdcall.}
-    importNode*: proc(self: ptr IHTMLDocument7, pNodeSource: ptr IHTMLDOMNode, fDeep: VARIANT_BOOL, ppNodeDest: ptr ptr IHTMLDOMNode3): HRESULT {.stdcall.}
-    get_parentWindow*: proc(self: ptr IHTMLDocument7, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
-    putref_body*: proc(self: ptr IHTMLDocument7, v: ptr IHTMLElement): HRESULT {.stdcall.}
-    get_body*: proc(self: ptr IHTMLDocument7, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    get_head*: proc(self: ptr IHTMLDocument7, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    importNode*: proc(
+      self: ptr IHTMLDocument7,
+      pNodeSource: ptr IHTMLDOMNode,
+      fDeep: VARIANT_BOOL,
+      ppNodeDest: ptr ptr IHTMLDOMNode3,
+    ): HRESULT {.stdcall.}
+    get_parentWindow*:
+      proc(self: ptr IHTMLDocument7, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
+    putref_body*:
+      proc(self: ptr IHTMLDocument7, v: ptr IHTMLElement): HRESULT {.stdcall.}
+    get_body*:
+      proc(self: ptr IHTMLDocument7, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_head*:
+      proc(self: ptr IHTMLDocument7, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+
   IHTMLDOMImplementation2* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMImplementation2Vtbl
+
   IHTMLDOMImplementation2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    createDocumentType*: proc(self: ptr IHTMLDOMImplementation2, bstrQualifiedName: BSTR, pvarPublicId: ptr VARIANT, pvarSystemId: ptr VARIANT, newDocumentType: ptr ptr IDOMDocumentType): HRESULT {.stdcall.}
-    createDocument*: proc(self: ptr IHTMLDOMImplementation2, pvarNS: ptr VARIANT, pvarTagName: ptr VARIANT, pDocumentType: ptr IDOMDocumentType, ppnewDocument: ptr ptr IHTMLDocument7): HRESULT {.stdcall.}
-    createHTMLDocument*: proc(self: ptr IHTMLDOMImplementation2, bstrTitle: BSTR, ppnewDocument: ptr ptr IHTMLDocument7): HRESULT {.stdcall.}
-    hasFeature*: proc(self: ptr IHTMLDOMImplementation2, bstrfeature: BSTR, version: VARIANT, pfHasFeature: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    createDocumentType*: proc(
+      self: ptr IHTMLDOMImplementation2,
+      bstrQualifiedName: BSTR,
+      pvarPublicId: ptr VARIANT,
+      pvarSystemId: ptr VARIANT,
+      newDocumentType: ptr ptr IDOMDocumentType,
+    ): HRESULT {.stdcall.}
+    createDocument*: proc(
+      self: ptr IHTMLDOMImplementation2,
+      pvarNS: ptr VARIANT,
+      pvarTagName: ptr VARIANT,
+      pDocumentType: ptr IDOMDocumentType,
+      ppnewDocument: ptr ptr IHTMLDocument7,
+    ): HRESULT {.stdcall.}
+    createHTMLDocument*: proc(
+      self: ptr IHTMLDOMImplementation2,
+      bstrTitle: BSTR,
+      ppnewDocument: ptr ptr IHTMLDocument7,
+    ): HRESULT {.stdcall.}
+    hasFeature*: proc(
+      self: ptr IHTMLDOMImplementation2,
+      bstrfeature: BSTR,
+      version: VARIANT,
+      pfHasFeature: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+
   DispHTMLDOMAttribute* {.pure.} = object
     lpVtbl*: ptr DispHTMLDOMAttributeVtbl
+
   DispHTMLDOMAttributeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLDOMTextNode* {.pure.} = object
     lpVtbl*: ptr DispHTMLDOMTextNodeVtbl
+
   DispHTMLDOMTextNodeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLDOMImplementation* {.pure.} = object
     lpVtbl*: ptr DispHTMLDOMImplementationVtbl
+
   DispHTMLDOMImplementationVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLAttributeCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLAttributeCollectionVtbl
+
   IHTMLAttributeCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLAttributeCollection, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IHTMLAttributeCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLAttributeCollection, name: ptr VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLAttributeCollection, p: ptr LONG): HRESULT {.stdcall.}
+    get_newEnum*:
+      proc(self: ptr IHTMLAttributeCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLAttributeCollection, name: ptr VARIANT, pdisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLAttributeCollection2* {.pure.} = object
     lpVtbl*: ptr IHTMLAttributeCollection2Vtbl
+
   IHTMLAttributeCollection2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    getNamedItem*: proc(self: ptr IHTMLAttributeCollection2, bstrName: BSTR, newretNode: ptr ptr IHTMLDOMAttribute): HRESULT {.stdcall.}
-    setNamedItem*: proc(self: ptr IHTMLAttributeCollection2, ppNode: ptr IHTMLDOMAttribute, newretNode: ptr ptr IHTMLDOMAttribute): HRESULT {.stdcall.}
-    removeNamedItem*: proc(self: ptr IHTMLAttributeCollection2, bstrName: BSTR, newretNode: ptr ptr IHTMLDOMAttribute): HRESULT {.stdcall.}
+    getNamedItem*: proc(
+      self: ptr IHTMLAttributeCollection2,
+      bstrName: BSTR,
+      newretNode: ptr ptr IHTMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+    setNamedItem*: proc(
+      self: ptr IHTMLAttributeCollection2,
+      ppNode: ptr IHTMLDOMAttribute,
+      newretNode: ptr ptr IHTMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+    removeNamedItem*: proc(
+      self: ptr IHTMLAttributeCollection2,
+      bstrName: BSTR,
+      newretNode: ptr ptr IHTMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+
   IHTMLAttributeCollection3* {.pure.} = object
     lpVtbl*: ptr IHTMLAttributeCollection3Vtbl
+
   IHTMLAttributeCollection3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    getNamedItem*: proc(self: ptr IHTMLAttributeCollection3, bstrName: BSTR, ppNodeOut: ptr ptr IHTMLDOMAttribute): HRESULT {.stdcall.}
-    setNamedItem*: proc(self: ptr IHTMLAttributeCollection3, pNodeIn: ptr IHTMLDOMAttribute, ppNodeOut: ptr ptr IHTMLDOMAttribute): HRESULT {.stdcall.}
-    removeNamedItem*: proc(self: ptr IHTMLAttributeCollection3, bstrName: BSTR, ppNodeOut: ptr ptr IHTMLDOMAttribute): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLAttributeCollection3, index: LONG, ppNodeOut: ptr ptr IHTMLDOMAttribute): HRESULT {.stdcall.}
-    get_length*: proc(self: ptr IHTMLAttributeCollection3, p: ptr LONG): HRESULT {.stdcall.}
+    getNamedItem*: proc(
+      self: ptr IHTMLAttributeCollection3,
+      bstrName: BSTR,
+      ppNodeOut: ptr ptr IHTMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+    setNamedItem*: proc(
+      self: ptr IHTMLAttributeCollection3,
+      pNodeIn: ptr IHTMLDOMAttribute,
+      ppNodeOut: ptr ptr IHTMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+    removeNamedItem*: proc(
+      self: ptr IHTMLAttributeCollection3,
+      bstrName: BSTR,
+      ppNodeOut: ptr ptr IHTMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLAttributeCollection3,
+      index: LONG,
+      ppNodeOut: ptr ptr IHTMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLAttributeCollection3, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLAttributeCollection4* {.pure.} = object
     lpVtbl*: ptr IHTMLAttributeCollection4Vtbl
+
   IHTMLAttributeCollection4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    getNamedItemNS*: proc(self: ptr IHTMLAttributeCollection4, pvarNS: ptr VARIANT, bstrName: BSTR, ppNodeOut: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    setNamedItemNS*: proc(self: ptr IHTMLAttributeCollection4, pNodeIn: ptr IHTMLDOMAttribute2, ppNodeOut: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    removeNamedItemNS*: proc(self: ptr IHTMLAttributeCollection4, pvarNS: ptr VARIANT, bstrName: BSTR, ppNodeOut: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    getNamedItem*: proc(self: ptr IHTMLAttributeCollection4, bstrName: BSTR, ppNodeOut: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    setNamedItem*: proc(self: ptr IHTMLAttributeCollection4, pNodeIn: ptr IHTMLDOMAttribute2, ppNodeOut: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    removeNamedItem*: proc(self: ptr IHTMLAttributeCollection4, bstrName: BSTR, ppNodeOut: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLAttributeCollection4, index: LONG, ppNodeOut: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    get_length*: proc(self: ptr IHTMLAttributeCollection4, p: ptr LONG): HRESULT {.stdcall.}
+    getNamedItemNS*: proc(
+      self: ptr IHTMLAttributeCollection4,
+      pvarNS: ptr VARIANT,
+      bstrName: BSTR,
+      ppNodeOut: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    setNamedItemNS*: proc(
+      self: ptr IHTMLAttributeCollection4,
+      pNodeIn: ptr IHTMLDOMAttribute2,
+      ppNodeOut: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    removeNamedItemNS*: proc(
+      self: ptr IHTMLAttributeCollection4,
+      pvarNS: ptr VARIANT,
+      bstrName: BSTR,
+      ppNodeOut: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    getNamedItem*: proc(
+      self: ptr IHTMLAttributeCollection4,
+      bstrName: BSTR,
+      ppNodeOut: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    setNamedItem*: proc(
+      self: ptr IHTMLAttributeCollection4,
+      pNodeIn: ptr IHTMLDOMAttribute2,
+      ppNodeOut: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    removeNamedItem*: proc(
+      self: ptr IHTMLAttributeCollection4,
+      bstrName: BSTR,
+      ppNodeOut: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLAttributeCollection4,
+      index: LONG,
+      ppNodeOut: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLAttributeCollection4, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLDOMChildrenCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMChildrenCollectionVtbl
+
   IHTMLDOMChildrenCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLDOMChildrenCollection, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IHTMLDOMChildrenCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLDOMChildrenCollection, index: LONG, ppItem: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLDOMChildrenCollection, p: ptr LONG): HRESULT {.stdcall.}
+    get_newEnum*: proc(
+      self: ptr IHTMLDOMChildrenCollection, p: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLDOMChildrenCollection, index: LONG, ppItem: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLDOMChildrenCollection2* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMChildrenCollection2Vtbl
+
   IHTMLDOMChildrenCollection2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    item*: proc(self: ptr IHTMLDOMChildrenCollection2, index: LONG, ppItem: ptr ptr IDispatch): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLDOMChildrenCollection2, index: LONG, ppItem: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   DispHTMLAttributeCollection* {.pure.} = object
     lpVtbl*: ptr DispHTMLAttributeCollectionVtbl
+
   DispHTMLAttributeCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispStaticNodeList* {.pure.} = object
     lpVtbl*: ptr DispStaticNodeListVtbl
+
   DispStaticNodeListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispDOMChildrenCollection* {.pure.} = object
     lpVtbl*: ptr DispDOMChildrenCollectionVtbl
+
   DispDOMChildrenCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLElementEvents4* {.pure.} = object
     lpVtbl*: ptr HTMLElementEvents4Vtbl
+
   HTMLElementEvents4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLElementEvents3* {.pure.} = object
     lpVtbl*: ptr HTMLElementEvents3Vtbl
+
   HTMLElementEvents3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLElementEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLElementEvents2Vtbl
+
   HTMLElementEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLElementEvents* {.pure.} = object
     lpVtbl*: ptr HTMLElementEventsVtbl
+
   HTMLElementEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLElement3Vtbl
+
   IHTMLElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    mergeAttributes*: proc(self: ptr IHTMLElement3, mergeThis: ptr IHTMLElement, pvarFlags: ptr VARIANT): HRESULT {.stdcall.}
-    get_isMultiLine*: proc(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_canHaveHTML*: proc(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_onlayoutcomplete*: proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_onlayoutcomplete*: proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    mergeAttributes*: proc(
+      self: ptr IHTMLElement3, mergeThis: ptr IHTMLElement, pvarFlags: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    get_isMultiLine*:
+      proc(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_canHaveHTML*:
+      proc(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_onlayoutcomplete*:
+      proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
+    get_onlayoutcomplete*:
+      proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onpage*: proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
     get_onpage*: proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_inflateBlock*: proc(self: ptr IHTMLElement3, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_inflateBlock*: proc(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_onbeforedeactivate*: proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforedeactivate*: proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_inflateBlock*:
+      proc(self: ptr IHTMLElement3, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_inflateBlock*:
+      proc(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_onbeforedeactivate*:
+      proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
+    get_onbeforedeactivate*:
+      proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
     setActive*: proc(self: ptr IHTMLElement3): HRESULT {.stdcall.}
     put_contentEditable*: proc(self: ptr IHTMLElement3, v: BSTR): HRESULT {.stdcall.}
-    get_contentEditable*: proc(self: ptr IHTMLElement3, p: ptr BSTR): HRESULT {.stdcall.}
-    get_isContentEditable*: proc(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_contentEditable*:
+      proc(self: ptr IHTMLElement3, p: ptr BSTR): HRESULT {.stdcall.}
+    get_isContentEditable*:
+      proc(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_hideFocus*: proc(self: ptr IHTMLElement3, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_hideFocus*: proc(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_hideFocus*:
+      proc(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_disabled*: proc(self: ptr IHTMLElement3, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_isDisabled*: proc(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_isDisabled*:
+      proc(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_onmove*: proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
     get_onmove*: proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_oncontrolselect*: proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_oncontrolselect*: proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
-    fireEvent*: proc(self: ptr IHTMLElement3, bstrEventName: BSTR, pvarEventObject: ptr VARIANT, pfCancelled: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_oncontrolselect*:
+      proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    fireEvent*: proc(
+      self: ptr IHTMLElement3,
+      bstrEventName: BSTR,
+      pvarEventObject: ptr VARIANT,
+      pfCancelled: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
     put_onresizestart*: proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_onresizestart*: proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onresizestart*:
+      proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onresizeend*: proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
     get_onresizeend*: proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmovestart*: proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
@@ -6582,52 +8639,99 @@
     put_onmoveend*: proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
     get_onmoveend*: proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmouseenter*: proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_onmouseenter*: proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmouseenter*:
+      proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmouseleave*: proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_onmouseleave*: proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmouseleave*:
+      proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onactivate*: proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
     get_onactivate*: proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ondeactivate*: proc(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_ondeactivate*: proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
-    dragDrop*: proc(self: ptr IHTMLElement3, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_ondeactivate*:
+      proc(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    dragDrop*:
+      proc(self: ptr IHTMLElement3, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_glyphMode*: proc(self: ptr IHTMLElement3, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLElement4* {.pure.} = object
     lpVtbl*: ptr IHTMLElement4Vtbl
+
   IHTMLElement4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_onmousewheel*: proc(self: ptr IHTMLElement4, v: VARIANT): HRESULT {.stdcall.}
-    get_onmousewheel*: proc(self: ptr IHTMLElement4, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmousewheel*:
+      proc(self: ptr IHTMLElement4, p: ptr VARIANT): HRESULT {.stdcall.}
     normalize*: proc(self: ptr IHTMLElement4): HRESULT {.stdcall.}
-    getAttributeNode*: proc(self: ptr IHTMLElement4, bstrname: BSTR, ppAttribute: ptr ptr IHTMLDOMAttribute): HRESULT {.stdcall.}
-    setAttributeNode*: proc(self: ptr IHTMLElement4, pattr: ptr IHTMLDOMAttribute, ppretAttribute: ptr ptr IHTMLDOMAttribute): HRESULT {.stdcall.}
-    removeAttributeNode*: proc(self: ptr IHTMLElement4, pattr: ptr IHTMLDOMAttribute, ppretAttribute: ptr ptr IHTMLDOMAttribute): HRESULT {.stdcall.}
-    put_onbeforeactivate*: proc(self: ptr IHTMLElement4, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforeactivate*: proc(self: ptr IHTMLElement4, p: ptr VARIANT): HRESULT {.stdcall.}
+    getAttributeNode*: proc(
+      self: ptr IHTMLElement4, bstrname: BSTR, ppAttribute: ptr ptr IHTMLDOMAttribute
+    ): HRESULT {.stdcall.}
+    setAttributeNode*: proc(
+      self: ptr IHTMLElement4,
+      pattr: ptr IHTMLDOMAttribute,
+      ppretAttribute: ptr ptr IHTMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+    removeAttributeNode*: proc(
+      self: ptr IHTMLElement4,
+      pattr: ptr IHTMLDOMAttribute,
+      ppretAttribute: ptr ptr IHTMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+    put_onbeforeactivate*:
+      proc(self: ptr IHTMLElement4, v: VARIANT): HRESULT {.stdcall.}
+    get_onbeforeactivate*:
+      proc(self: ptr IHTMLElement4, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onfocusin*: proc(self: ptr IHTMLElement4, v: VARIANT): HRESULT {.stdcall.}
     get_onfocusin*: proc(self: ptr IHTMLElement4, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onfocusout*: proc(self: ptr IHTMLElement4, v: VARIANT): HRESULT {.stdcall.}
     get_onfocusout*: proc(self: ptr IHTMLElement4, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IElementSelector* {.pure.} = object
     lpVtbl*: ptr IElementSelectorVtbl
+
   IElementSelectorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    querySelector*: proc(self: ptr IElementSelector, v: BSTR, pel: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    querySelectorAll*: proc(self: ptr IElementSelector, v: BSTR, pel: ptr ptr IHTMLDOMChildrenCollection): HRESULT {.stdcall.}
+    querySelector*: proc(
+      self: ptr IElementSelector, v: BSTR, pel: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
+    querySelectorAll*: proc(
+      self: ptr IElementSelector, v: BSTR, pel: ptr ptr IHTMLDOMChildrenCollection
+    ): HRESULT {.stdcall.}
+
   IHTMLElementRender* {.pure.} = object
     lpVtbl*: ptr IHTMLElementRenderVtbl
+
   IHTMLElementRenderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     DrawToDC*: proc(self: ptr IHTMLElementRender, hDC: HDC): HRESULT {.stdcall.}
-    SetDocumentPrinter*: proc(self: ptr IHTMLElementRender, bstrPrinterName: BSTR, hDC: HDC): HRESULT {.stdcall.}
+    SetDocumentPrinter*: proc(
+      self: ptr IHTMLElementRender, bstrPrinterName: BSTR, hDC: HDC
+    ): HRESULT {.stdcall.}
+
   IHTMLUniqueName* {.pure.} = object
     lpVtbl*: ptr IHTMLUniqueNameVtbl
+
   IHTMLUniqueNameVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_uniqueNumber*: proc(self: ptr IHTMLUniqueName, p: ptr LONG): HRESULT {.stdcall.}
     get_uniqueID*: proc(self: ptr IHTMLUniqueName, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLElement5* {.pure.} = object
     lpVtbl*: ptr IHTMLElement5Vtbl
+
   IHTMLElement5Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    getAttributeNode*: proc(self: ptr IHTMLElement5, bstrname: BSTR, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    setAttributeNode*: proc(self: ptr IHTMLElement5, pattr: ptr IHTMLDOMAttribute2, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    removeAttributeNode*: proc(self: ptr IHTMLElement5, pattr: ptr IHTMLDOMAttribute2, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    hasAttribute*: proc(self: ptr IHTMLElement5, name: BSTR, pfHasAttribute: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    getAttributeNode*: proc(
+      self: ptr IHTMLElement5,
+      bstrname: BSTR,
+      ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    setAttributeNode*: proc(
+      self: ptr IHTMLElement5,
+      pattr: ptr IHTMLDOMAttribute2,
+      ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    removeAttributeNode*: proc(
+      self: ptr IHTMLElement5,
+      pattr: ptr IHTMLDOMAttribute2,
+      ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    hasAttribute*: proc(
+      self: ptr IHTMLElement5, name: BSTR, pfHasAttribute: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     put_role*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
     get_role*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
     put_ariaBusy*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
@@ -6644,8 +8748,10 @@
     get_ariaHidden*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
     put_ariaInvalid*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
     get_ariaInvalid*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
-    put_ariaMultiselectable*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
-    get_ariaMultiselectable*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
+    put_ariaMultiselectable*:
+      proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
+    get_ariaMultiselectable*:
+      proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
     put_ariaPressed*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
     get_ariaPressed*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
     put_ariaReadonly*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
@@ -6656,10 +8762,18 @@
     get_ariaSecret*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
     put_ariaSelected*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
     get_ariaSelected*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
-    getAttribute*: proc(self: ptr IHTMLElement5, strAttributeName: BSTR, AttributeValue: ptr VARIANT): HRESULT {.stdcall.}
-    setAttribute*: proc(self: ptr IHTMLElement5, strAttributeName: BSTR, AttributeValue: VARIANT): HRESULT {.stdcall.}
-    removeAttribute*: proc(self: ptr IHTMLElement5, strAttributeName: BSTR, pfSuccess: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_attributes*: proc(self: ptr IHTMLElement5, p: ptr ptr IHTMLAttributeCollection3): HRESULT {.stdcall.}
+    getAttribute*: proc(
+      self: ptr IHTMLElement5, strAttributeName: BSTR, AttributeValue: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    setAttribute*: proc(
+      self: ptr IHTMLElement5, strAttributeName: BSTR, AttributeValue: VARIANT
+    ): HRESULT {.stdcall.}
+    removeAttribute*: proc(
+      self: ptr IHTMLElement5, strAttributeName: BSTR, pfSuccess: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    get_attributes*: proc(
+      self: ptr IHTMLElement5, p: ptr ptr IHTMLAttributeCollection3
+    ): HRESULT {.stdcall.}
     put_ariaValuenow*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
     get_ariaValuenow*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
     put_ariaPosinset*: proc(self: ptr IHTMLElement5, v: int16): HRESULT {.stdcall.}
@@ -6675,51 +8789,116 @@
     put_ariaControls*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
     get_ariaControls*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
     put_ariaDescribedby*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
-    get_ariaDescribedby*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
+    get_ariaDescribedby*:
+      proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
     put_ariaFlowto*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
     get_ariaFlowto*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
     put_ariaLabelledby*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
     get_ariaLabelledby*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
-    put_ariaActivedescendant*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
-    get_ariaActivedescendant*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
+    put_ariaActivedescendant*:
+      proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
+    get_ariaActivedescendant*:
+      proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
     put_ariaOwns*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
     get_ariaOwns*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
-    hasAttributes*: proc(self: ptr IHTMLElement5, pfHasAttributes: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    hasAttributes*: proc(
+      self: ptr IHTMLElement5, pfHasAttributes: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     put_ariaLive*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
     get_ariaLive*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
     put_ariaRelevant*: proc(self: ptr IHTMLElement5, v: BSTR): HRESULT {.stdcall.}
     get_ariaRelevant*: proc(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLElement6* {.pure.} = object
     lpVtbl*: ptr IHTMLElement6Vtbl
+
   IHTMLElement6Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    getAttributeNS*: proc(self: ptr IHTMLElement6, pvarNS: ptr VARIANT, strAttributeName: BSTR, AttributeValue: ptr VARIANT): HRESULT {.stdcall.}
-    setAttributeNS*: proc(self: ptr IHTMLElement6, pvarNS: ptr VARIANT, strAttributeName: BSTR, pvarAttributeValue: ptr VARIANT): HRESULT {.stdcall.}
-    removeAttributeNS*: proc(self: ptr IHTMLElement6, pvarNS: ptr VARIANT, strAttributeName: BSTR): HRESULT {.stdcall.}
-    getAttributeNodeNS*: proc(self: ptr IHTMLElement6, pvarNS: ptr VARIANT, bstrname: BSTR, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    setAttributeNodeNS*: proc(self: ptr IHTMLElement6, pattr: ptr IHTMLDOMAttribute2, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    hasAttributeNS*: proc(self: ptr IHTMLElement6, pvarNS: ptr VARIANT, name: BSTR, pfHasAttribute: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    getAttribute*: proc(self: ptr IHTMLElement6, strAttributeName: BSTR, AttributeValue: ptr VARIANT): HRESULT {.stdcall.}
-    setAttribute*: proc(self: ptr IHTMLElement6, strAttributeName: BSTR, pvarAttributeValue: ptr VARIANT): HRESULT {.stdcall.}
-    removeAttribute*: proc(self: ptr IHTMLElement6, strAttributeName: BSTR): HRESULT {.stdcall.}
-    getAttributeNode*: proc(self: ptr IHTMLElement6, strAttributeName: BSTR, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    setAttributeNode*: proc(self: ptr IHTMLElement6, pattr: ptr IHTMLDOMAttribute2, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    removeAttributeNode*: proc(self: ptr IHTMLElement6, pattr: ptr IHTMLDOMAttribute2, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.stdcall.}
-    hasAttribute*: proc(self: ptr IHTMLElement6, name: BSTR, pfHasAttribute: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    getElementsByTagNameNS*: proc(self: ptr IHTMLElement6, varNS: ptr VARIANT, bstrLocalName: BSTR, pelColl: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
+    getAttributeNS*: proc(
+      self: ptr IHTMLElement6,
+      pvarNS: ptr VARIANT,
+      strAttributeName: BSTR,
+      AttributeValue: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    setAttributeNS*: proc(
+      self: ptr IHTMLElement6,
+      pvarNS: ptr VARIANT,
+      strAttributeName: BSTR,
+      pvarAttributeValue: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    removeAttributeNS*: proc(
+      self: ptr IHTMLElement6, pvarNS: ptr VARIANT, strAttributeName: BSTR
+    ): HRESULT {.stdcall.}
+    getAttributeNodeNS*: proc(
+      self: ptr IHTMLElement6,
+      pvarNS: ptr VARIANT,
+      bstrname: BSTR,
+      ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    setAttributeNodeNS*: proc(
+      self: ptr IHTMLElement6,
+      pattr: ptr IHTMLDOMAttribute2,
+      ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    hasAttributeNS*: proc(
+      self: ptr IHTMLElement6,
+      pvarNS: ptr VARIANT,
+      name: BSTR,
+      pfHasAttribute: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    getAttribute*: proc(
+      self: ptr IHTMLElement6, strAttributeName: BSTR, AttributeValue: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    setAttribute*: proc(
+      self: ptr IHTMLElement6, strAttributeName: BSTR, pvarAttributeValue: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    removeAttribute*:
+      proc(self: ptr IHTMLElement6, strAttributeName: BSTR): HRESULT {.stdcall.}
+    getAttributeNode*: proc(
+      self: ptr IHTMLElement6,
+      strAttributeName: BSTR,
+      ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    setAttributeNode*: proc(
+      self: ptr IHTMLElement6,
+      pattr: ptr IHTMLDOMAttribute2,
+      ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    removeAttributeNode*: proc(
+      self: ptr IHTMLElement6,
+      pattr: ptr IHTMLDOMAttribute2,
+      ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+    ): HRESULT {.stdcall.}
+    hasAttribute*: proc(
+      self: ptr IHTMLElement6, name: BSTR, pfHasAttribute: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    getElementsByTagNameNS*: proc(
+      self: ptr IHTMLElement6,
+      varNS: ptr VARIANT,
+      bstrLocalName: BSTR,
+      pelColl: ptr ptr IHTMLElementCollection,
+    ): HRESULT {.stdcall.}
     get_tagName*: proc(self: ptr IHTMLElement6, p: ptr BSTR): HRESULT {.stdcall.}
     get_nodeName*: proc(self: ptr IHTMLElement6, p: ptr BSTR): HRESULT {.stdcall.}
-    getElementsByClassName*: proc(self: ptr IHTMLElement6, v: BSTR, pel: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    msMatchesSelector*: proc(self: ptr IHTMLElement6, v: BSTR, pfMatches: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    getElementsByClassName*: proc(
+      self: ptr IHTMLElement6, v: BSTR, pel: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
+    msMatchesSelector*: proc(
+      self: ptr IHTMLElement6, v: BSTR, pfMatches: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     put_onabort*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
     get_onabort*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_oncanplay*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
     get_oncanplay*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_oncanplaythrough*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
-    get_oncanplaythrough*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_oncanplaythrough*:
+      proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
+    get_oncanplaythrough*:
+      proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onchange*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
     get_onchange*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_ondurationchange*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
-    get_ondurationchange*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_ondurationchange*:
+      proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
+    get_ondurationchange*:
+      proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onemptied*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
     get_onemptied*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onended*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
@@ -6731,9 +8910,12 @@
     put_onload*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
     get_onload*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onloadeddata*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
-    get_onloadeddata*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onloadedmetadata*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
-    get_onloadedmetadata*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onloadeddata*:
+      proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onloadedmetadata*:
+      proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
+    get_onloadedmetadata*:
+      proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onloadstart*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
     get_onloadstart*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onpause*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
@@ -6745,7 +8927,8 @@
     put_onprogress*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
     get_onprogress*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onratechange*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
-    get_onratechange*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onratechange*:
+      proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onreset*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
     get_onreset*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onseeked*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
@@ -6761,299 +8944,550 @@
     put_onsuspend*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
     get_onsuspend*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ontimeupdate*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
-    get_ontimeupdate*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_ontimeupdate*:
+      proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onvolumechange*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
-    get_onvolumechange*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onvolumechange*:
+      proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onwaiting*: proc(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.stdcall.}
     get_onwaiting*: proc(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.stdcall.}
-    hasAttributes*: proc(self: ptr IHTMLElement6, pfHasAttributes: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    hasAttributes*: proc(
+      self: ptr IHTMLElement6, pfHasAttributes: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+
   IHTMLElement7* {.pure.} = object
     lpVtbl*: ptr IHTMLElement7Vtbl
+
   IHTMLElement7Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_onmspointerdown*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerdown*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmspointerdown*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmspointermove*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointermove*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmspointermove*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmspointerup*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerup*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmspointerup*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmspointerover*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerover*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmspointerover*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmspointerout*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerout*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmspointercancel*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointercancel*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmspointerhover*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerhover*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmslostpointercapture*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmslostpointercapture*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsgotpointercapture*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgotpointercapture*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsgesturestart*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturestart*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsgesturechange*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturechange*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmspointerout*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmspointercancel*:
+      proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmspointercancel*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmspointerhover*:
+      proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmspointerhover*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmslostpointercapture*:
+      proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmslostpointercapture*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsgotpointercapture*:
+      proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsgotpointercapture*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsgesturestart*:
+      proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsgesturestart*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsgesturechange*:
+      proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsgesturechange*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmsgestureend*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgestureend*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmsgestureend*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmsgesturehold*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturehold*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmsgesturehold*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmsgesturetap*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturetap*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsgesturedoubletap*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturedoubletap*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsinertiastart*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsinertiastart*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
-    msSetPointerCapture*: proc(self: ptr IHTMLElement7, pointerId: LONG): HRESULT {.stdcall.}
-    msReleasePointerCapture*: proc(self: ptr IHTMLElement7, pointerId: LONG): HRESULT {.stdcall.}
-    put_onmstransitionstart*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmstransitionstart*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmstransitionend*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmstransitionend*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsanimationstart*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsanimationstart*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsanimationend*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsanimationend*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsanimationiteration*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsanimationiteration*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmsgesturetap*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsgesturedoubletap*:
+      proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsgesturedoubletap*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsinertiastart*:
+      proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsinertiastart*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    msSetPointerCapture*:
+      proc(self: ptr IHTMLElement7, pointerId: LONG): HRESULT {.stdcall.}
+    msReleasePointerCapture*:
+      proc(self: ptr IHTMLElement7, pointerId: LONG): HRESULT {.stdcall.}
+    put_onmstransitionstart*:
+      proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmstransitionstart*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmstransitionend*:
+      proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmstransitionend*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsanimationstart*:
+      proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsanimationstart*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsanimationend*:
+      proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsanimationend*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsanimationiteration*:
+      proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsanimationiteration*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_oninvalid*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
     get_oninvalid*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_xmsAcceleratorKey*: proc(self: ptr IHTMLElement7, v: BSTR): HRESULT {.stdcall.}
-    get_xmsAcceleratorKey*: proc(self: ptr IHTMLElement7, p: ptr BSTR): HRESULT {.stdcall.}
+    get_xmsAcceleratorKey*:
+      proc(self: ptr IHTMLElement7, p: ptr BSTR): HRESULT {.stdcall.}
     put_spellcheck*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
     get_spellcheck*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsmanipulationstatechanged*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsmanipulationstatechanged*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsmanipulationstatechanged*:
+      proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsmanipulationstatechanged*:
+      proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_oncuechange*: proc(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.stdcall.}
     get_oncuechange*: proc(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLStyleSheetRulesAppliedCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheetRulesAppliedCollectionVtbl
+
   IHTMLStyleSheetRulesAppliedCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    item*: proc(self: ptr IHTMLStyleSheetRulesAppliedCollection, index: LONG, ppHTMLStyleSheetRule: ptr ptr IHTMLStyleSheetRule): HRESULT {.stdcall.}
-    get_length*: proc(self: ptr IHTMLStyleSheetRulesAppliedCollection, p: ptr LONG): HRESULT {.stdcall.}
-    propertyAppliedBy*: proc(self: ptr IHTMLStyleSheetRulesAppliedCollection, name: BSTR, ppRule: ptr ptr IHTMLStyleSheetRule): HRESULT {.stdcall.}
-    propertyAppliedTrace*: proc(self: ptr IHTMLStyleSheetRulesAppliedCollection, name: BSTR, index: LONG, ppRule: ptr ptr IHTMLStyleSheetRule): HRESULT {.stdcall.}
-    propertyAppliedTraceLength*: proc(self: ptr IHTMLStyleSheetRulesAppliedCollection, name: BSTR, pLength: ptr LONG): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLStyleSheetRulesAppliedCollection,
+      index: LONG,
+      ppHTMLStyleSheetRule: ptr ptr IHTMLStyleSheetRule,
+    ): HRESULT {.stdcall.}
+    get_length*: proc(
+      self: ptr IHTMLStyleSheetRulesAppliedCollection, p: ptr LONG
+    ): HRESULT {.stdcall.}
+    propertyAppliedBy*: proc(
+      self: ptr IHTMLStyleSheetRulesAppliedCollection,
+      name: BSTR,
+      ppRule: ptr ptr IHTMLStyleSheetRule,
+    ): HRESULT {.stdcall.}
+    propertyAppliedTrace*: proc(
+      self: ptr IHTMLStyleSheetRulesAppliedCollection,
+      name: BSTR,
+      index: LONG,
+      ppRule: ptr ptr IHTMLStyleSheetRule,
+    ): HRESULT {.stdcall.}
+    propertyAppliedTraceLength*: proc(
+      self: ptr IHTMLStyleSheetRulesAppliedCollection, name: BSTR, pLength: ptr LONG
+    ): HRESULT {.stdcall.}
+
   IRulesApplied* {.pure.} = object
     lpVtbl*: ptr IRulesAppliedVtbl
+
   IRulesAppliedVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_element*: proc(self: ptr IRulesApplied, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    get_inlineStyles*: proc(self: ptr IRulesApplied, p: ptr ptr IHTMLStyle): HRESULT {.stdcall.}
-    get_appliedRules*: proc(self: ptr IRulesApplied, p: ptr ptr IHTMLStyleSheetRulesAppliedCollection): HRESULT {.stdcall.}
-    propertyIsInline*: proc(self: ptr IRulesApplied, name: BSTR, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    propertyIsInheritable*: proc(self: ptr IRulesApplied, name: BSTR, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    hasInheritableProperty*: proc(self: ptr IRulesApplied, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_element*:
+      proc(self: ptr IRulesApplied, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_inlineStyles*:
+      proc(self: ptr IRulesApplied, p: ptr ptr IHTMLStyle): HRESULT {.stdcall.}
+    get_appliedRules*: proc(
+      self: ptr IRulesApplied, p: ptr ptr IHTMLStyleSheetRulesAppliedCollection
+    ): HRESULT {.stdcall.}
+    propertyIsInline*: proc(
+      self: ptr IRulesApplied, name: BSTR, p: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    propertyIsInheritable*: proc(
+      self: ptr IRulesApplied, name: BSTR, p: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    hasInheritableProperty*:
+      proc(self: ptr IRulesApplied, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   IRulesAppliedCollection* {.pure.} = object
     lpVtbl*: ptr IRulesAppliedCollectionVtbl
+
   IRulesAppliedCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    item*: proc(self: ptr IRulesAppliedCollection, index: LONG, ppRulesApplied: ptr ptr IRulesApplied): HRESULT {.stdcall.}
-    get_length*: proc(self: ptr IRulesAppliedCollection, p: ptr LONG): HRESULT {.stdcall.}
-    get_element*: proc(self: ptr IRulesAppliedCollection, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    propertyInheritedFrom*: proc(self: ptr IRulesAppliedCollection, name: BSTR, ppRulesApplied: ptr ptr IRulesApplied): HRESULT {.stdcall.}
-    get_propertyCount*: proc(self: ptr IRulesAppliedCollection, p: ptr LONG): HRESULT {.stdcall.}
-    property*: proc(self: ptr IRulesAppliedCollection, index: LONG, pbstrProperty: ptr BSTR): HRESULT {.stdcall.}
-    propertyInheritedTrace*: proc(self: ptr IRulesAppliedCollection, name: BSTR, index: LONG, ppRulesApplied: ptr ptr IRulesApplied): HRESULT {.stdcall.}
-    propertyInheritedTraceLength*: proc(self: ptr IRulesAppliedCollection, name: BSTR, pLength: ptr LONG): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IRulesAppliedCollection,
+      index: LONG,
+      ppRulesApplied: ptr ptr IRulesApplied,
+    ): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IRulesAppliedCollection, p: ptr LONG): HRESULT {.stdcall.}
+    get_element*: proc(
+      self: ptr IRulesAppliedCollection, p: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
+    propertyInheritedFrom*: proc(
+      self: ptr IRulesAppliedCollection,
+      name: BSTR,
+      ppRulesApplied: ptr ptr IRulesApplied,
+    ): HRESULT {.stdcall.}
+    get_propertyCount*:
+      proc(self: ptr IRulesAppliedCollection, p: ptr LONG): HRESULT {.stdcall.}
+    property*: proc(
+      self: ptr IRulesAppliedCollection, index: LONG, pbstrProperty: ptr BSTR
+    ): HRESULT {.stdcall.}
+    propertyInheritedTrace*: proc(
+      self: ptr IRulesAppliedCollection,
+      name: BSTR,
+      index: LONG,
+      ppRulesApplied: ptr ptr IRulesApplied,
+    ): HRESULT {.stdcall.}
+    propertyInheritedTraceLength*: proc(
+      self: ptr IRulesAppliedCollection, name: BSTR, pLength: ptr LONG
+    ): HRESULT {.stdcall.}
+
   IHTMLElementAppliedStyles* {.pure.} = object
     lpVtbl*: ptr IHTMLElementAppliedStylesVtbl
+
   IHTMLElementAppliedStylesVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    msGetRulesApplied*: proc(self: ptr IHTMLElementAppliedStyles, ppRulesAppliedCollection: ptr ptr IRulesAppliedCollection): HRESULT {.stdcall.}
-    msGetRulesAppliedWithAncestor*: proc(self: ptr IHTMLElementAppliedStyles, varContext: VARIANT, ppRulesAppliedCollection: ptr ptr IRulesAppliedCollection): HRESULT {.stdcall.}
+    msGetRulesApplied*: proc(
+      self: ptr IHTMLElementAppliedStyles,
+      ppRulesAppliedCollection: ptr ptr IRulesAppliedCollection,
+    ): HRESULT {.stdcall.}
+    msGetRulesAppliedWithAncestor*: proc(
+      self: ptr IHTMLElementAppliedStyles,
+      varContext: VARIANT,
+      ppRulesAppliedCollection: ptr ptr IRulesAppliedCollection,
+    ): HRESULT {.stdcall.}
+
   IElementTraversal* {.pure.} = object
     lpVtbl*: ptr IElementTraversalVtbl
+
   IElementTraversalVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_firstElementChild*: proc(self: ptr IElementTraversal, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    get_lastElementChild*: proc(self: ptr IElementTraversal, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    get_previousElementSibling*: proc(self: ptr IElementTraversal, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    get_nextElementSibling*: proc(self: ptr IElementTraversal, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    get_childElementCount*: proc(self: ptr IElementTraversal, p: ptr LONG): HRESULT {.stdcall.}
+    get_firstElementChild*:
+      proc(self: ptr IElementTraversal, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_lastElementChild*:
+      proc(self: ptr IElementTraversal, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_previousElementSibling*:
+      proc(self: ptr IElementTraversal, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_nextElementSibling*:
+      proc(self: ptr IElementTraversal, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_childElementCount*:
+      proc(self: ptr IElementTraversal, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLDatabinding* {.pure.} = object
     lpVtbl*: ptr IHTMLDatabindingVtbl
+
   IHTMLDatabindingVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_dataFld*: proc(self: ptr IHTMLDatabinding, v: BSTR): HRESULT {.stdcall.}
     get_dataFld*: proc(self: ptr IHTMLDatabinding, p: ptr BSTR): HRESULT {.stdcall.}
     put_dataSrc*: proc(self: ptr IHTMLDatabinding, v: BSTR): HRESULT {.stdcall.}
     get_dataSrc*: proc(self: ptr IHTMLDatabinding, p: ptr BSTR): HRESULT {.stdcall.}
     put_dataFormatAs*: proc(self: ptr IHTMLDatabinding, v: BSTR): HRESULT {.stdcall.}
-    get_dataFormatAs*: proc(self: ptr IHTMLDatabinding, p: ptr BSTR): HRESULT {.stdcall.}
+    get_dataFormatAs*:
+      proc(self: ptr IHTMLDatabinding, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLElementDefaults* {.pure.} = object
     lpVtbl*: ptr IHTMLElementDefaultsVtbl
+
   IHTMLElementDefaultsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_style*: proc(self: ptr IHTMLElementDefaults, p: ptr ptr IHTMLStyle): HRESULT {.stdcall.}
-    put_tabStop*: proc(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_tabStop*: proc(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_viewInheritStyle*: proc(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_viewInheritStyle*: proc(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_viewMasterTab*: proc(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_viewMasterTab*: proc(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_scrollSegmentX*: proc(self: ptr IHTMLElementDefaults, v: LONG): HRESULT {.stdcall.}
-    get_scrollSegmentX*: proc(self: ptr IHTMLElementDefaults, p: ptr LONG): HRESULT {.stdcall.}
-    put_scrollSegmentY*: proc(self: ptr IHTMLElementDefaults, v: LONG): HRESULT {.stdcall.}
-    get_scrollSegmentY*: proc(self: ptr IHTMLElementDefaults, p: ptr LONG): HRESULT {.stdcall.}
-    put_isMultiLine*: proc(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_isMultiLine*: proc(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_contentEditable*: proc(self: ptr IHTMLElementDefaults, v: BSTR): HRESULT {.stdcall.}
-    get_contentEditable*: proc(self: ptr IHTMLElementDefaults, p: ptr BSTR): HRESULT {.stdcall.}
-    put_canHaveHTML*: proc(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_canHaveHTML*: proc(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    putref_viewLink*: proc(self: ptr IHTMLElementDefaults, v: ptr IHTMLDocument): HRESULT {.stdcall.}
-    get_viewLink*: proc(self: ptr IHTMLElementDefaults, p: ptr ptr IHTMLDocument): HRESULT {.stdcall.}
-    put_frozen*: proc(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_frozen*: proc(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_style*:
+      proc(self: ptr IHTMLElementDefaults, p: ptr ptr IHTMLStyle): HRESULT {.stdcall.}
+    put_tabStop*:
+      proc(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_tabStop*:
+      proc(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_viewInheritStyle*:
+      proc(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_viewInheritStyle*:
+      proc(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_viewMasterTab*:
+      proc(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_viewMasterTab*:
+      proc(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_scrollSegmentX*:
+      proc(self: ptr IHTMLElementDefaults, v: LONG): HRESULT {.stdcall.}
+    get_scrollSegmentX*:
+      proc(self: ptr IHTMLElementDefaults, p: ptr LONG): HRESULT {.stdcall.}
+    put_scrollSegmentY*:
+      proc(self: ptr IHTMLElementDefaults, v: LONG): HRESULT {.stdcall.}
+    get_scrollSegmentY*:
+      proc(self: ptr IHTMLElementDefaults, p: ptr LONG): HRESULT {.stdcall.}
+    put_isMultiLine*:
+      proc(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_isMultiLine*:
+      proc(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_contentEditable*:
+      proc(self: ptr IHTMLElementDefaults, v: BSTR): HRESULT {.stdcall.}
+    get_contentEditable*:
+      proc(self: ptr IHTMLElementDefaults, p: ptr BSTR): HRESULT {.stdcall.}
+    put_canHaveHTML*:
+      proc(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_canHaveHTML*:
+      proc(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    putref_viewLink*:
+      proc(self: ptr IHTMLElementDefaults, v: ptr IHTMLDocument): HRESULT {.stdcall.}
+    get_viewLink*: proc(
+      self: ptr IHTMLElementDefaults, p: ptr ptr IHTMLDocument
+    ): HRESULT {.stdcall.}
+    put_frozen*:
+      proc(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_frozen*:
+      proc(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   DispHTMLDefaults* {.pure.} = object
     lpVtbl*: ptr DispHTMLDefaultsVtbl
+
   DispHTMLDefaultsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTCDefaultDispatch* {.pure.} = object
     lpVtbl*: ptr IHTCDefaultDispatchVtbl
+
   IHTCDefaultDispatchVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_element*: proc(self: ptr IHTCDefaultDispatch, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    createEventObject*: proc(self: ptr IHTCDefaultDispatch, eventObj: ptr ptr IHTMLEventObj): HRESULT {.stdcall.}
-    get_defaults*: proc(self: ptr IHTCDefaultDispatch, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_document*: proc(self: ptr IHTCDefaultDispatch, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_element*:
+      proc(self: ptr IHTCDefaultDispatch, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    createEventObject*: proc(
+      self: ptr IHTCDefaultDispatch, eventObj: ptr ptr IHTMLEventObj
+    ): HRESULT {.stdcall.}
+    get_defaults*:
+      proc(self: ptr IHTCDefaultDispatch, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_document*:
+      proc(self: ptr IHTCDefaultDispatch, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+
   IHTCPropertyBehavior* {.pure.} = object
     lpVtbl*: ptr IHTCPropertyBehaviorVtbl
+
   IHTCPropertyBehaviorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     fireChange*: proc(self: ptr IHTCPropertyBehavior): HRESULT {.stdcall.}
     put_value*: proc(self: ptr IHTCPropertyBehavior, v: VARIANT): HRESULT {.stdcall.}
-    get_value*: proc(self: ptr IHTCPropertyBehavior, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_value*:
+      proc(self: ptr IHTCPropertyBehavior, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTCMethodBehavior* {.pure.} = object
     lpVtbl*: ptr IHTCMethodBehaviorVtbl
+
   IHTCMethodBehaviorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTCEventBehavior* {.pure.} = object
     lpVtbl*: ptr IHTCEventBehaviorVtbl
+
   IHTCEventBehaviorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    fire*: proc(self: ptr IHTCEventBehavior, pvar: ptr IHTMLEventObj): HRESULT {.stdcall.}
+    fire*:
+      proc(self: ptr IHTCEventBehavior, pvar: ptr IHTMLEventObj): HRESULT {.stdcall.}
+
   IHTCAttachBehavior* {.pure.} = object
     lpVtbl*: ptr IHTCAttachBehaviorVtbl
+
   IHTCAttachBehaviorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    fireEvent*: proc(self: ptr IHTCAttachBehavior, evt: ptr IDispatch): HRESULT {.stdcall.}
+    fireEvent*:
+      proc(self: ptr IHTCAttachBehavior, evt: ptr IDispatch): HRESULT {.stdcall.}
     detachEvent*: proc(self: ptr IHTCAttachBehavior): HRESULT {.stdcall.}
+
   IHTCAttachBehavior2* {.pure.} = object
     lpVtbl*: ptr IHTCAttachBehavior2Vtbl
+
   IHTCAttachBehavior2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     fireEvent*: proc(self: ptr IHTCAttachBehavior2, evt: VARIANT): HRESULT {.stdcall.}
+
   IHTCDescBehavior* {.pure.} = object
     lpVtbl*: ptr IHTCDescBehaviorVtbl
+
   IHTCDescBehaviorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_urn*: proc(self: ptr IHTCDescBehavior, p: ptr BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTCDescBehavior, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTCDefaultDispatch* {.pure.} = object
     lpVtbl*: ptr DispHTCDefaultDispatchVtbl
+
   DispHTCDefaultDispatchVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTCPropertyBehavior* {.pure.} = object
     lpVtbl*: ptr DispHTCPropertyBehaviorVtbl
+
   DispHTCPropertyBehaviorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTCMethodBehavior* {.pure.} = object
     lpVtbl*: ptr DispHTCMethodBehaviorVtbl
+
   DispHTCMethodBehaviorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTCEventBehavior* {.pure.} = object
     lpVtbl*: ptr DispHTCEventBehaviorVtbl
+
   DispHTCEventBehaviorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTCAttachBehavior* {.pure.} = object
     lpVtbl*: ptr DispHTCAttachBehaviorVtbl
+
   DispHTCAttachBehaviorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTCDescBehavior* {.pure.} = object
     lpVtbl*: ptr DispHTCDescBehaviorVtbl
+
   DispHTCDescBehaviorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLUrnCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLUrnCollectionVtbl
+
   IHTMLUrnCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_length*: proc(self: ptr IHTMLUrnCollection, p: ptr LONG): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLUrnCollection, index: LONG, ppUrn: ptr BSTR): HRESULT {.stdcall.}
+    item*: proc(self: ptr IHTMLUrnCollection, index: LONG, ppUrn: ptr BSTR): HRESULT {.
+      stdcall
+    .}
+
   DispHTMLUrnCollection* {.pure.} = object
     lpVtbl*: ptr DispHTMLUrnCollectionVtbl
+
   DispHTMLUrnCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLGenericElement* {.pure.} = object
     lpVtbl*: ptr IHTMLGenericElementVtbl
+
   IHTMLGenericElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_recordset*: proc(self: ptr IHTMLGenericElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    namedRecordset*: proc(self: ptr IHTMLGenericElement, dataMember: BSTR, hierarchy: ptr VARIANT, ppRecordset: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_recordset*:
+      proc(self: ptr IHTMLGenericElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    namedRecordset*: proc(
+      self: ptr IHTMLGenericElement,
+      dataMember: BSTR,
+      hierarchy: ptr VARIANT,
+      ppRecordset: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
+
   DispHTMLGenericElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLGenericElementVtbl
+
   DispHTMLGenericElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLStyleSheetRuleApplied* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheetRuleAppliedVtbl
+
   IHTMLStyleSheetRuleAppliedVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_msSpecificity*: proc(self: ptr IHTMLStyleSheetRuleApplied, p: ptr LONG): HRESULT {.stdcall.}
-    msGetSpecificity*: proc(self: ptr IHTMLStyleSheetRuleApplied, index: LONG, p: ptr LONG): HRESULT {.stdcall.}
+    get_msSpecificity*:
+      proc(self: ptr IHTMLStyleSheetRuleApplied, p: ptr LONG): HRESULT {.stdcall.}
+    msGetSpecificity*: proc(
+      self: ptr IHTMLStyleSheetRuleApplied, index: LONG, p: ptr LONG
+    ): HRESULT {.stdcall.}
+
   IHTMLStyleSheetRule2* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheetRule2Vtbl
+
   IHTMLStyleSheetRule2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_selectorText*: proc(self: ptr IHTMLStyleSheetRule2, v: BSTR): HRESULT {.stdcall.}
-    get_selectorText*: proc(self: ptr IHTMLStyleSheetRule2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_selectorText*:
+      proc(self: ptr IHTMLStyleSheetRule2, v: BSTR): HRESULT {.stdcall.}
+    get_selectorText*:
+      proc(self: ptr IHTMLStyleSheetRule2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLStyleSheetRulesCollection2* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheetRulesCollection2Vtbl
+
   IHTMLStyleSheetRulesCollection2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLStyleSheetRulesCollection2, p: ptr LONG): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLStyleSheetRulesCollection2, index: LONG, ppHTMLCSSRule: ptr ptr IHTMLCSSRule): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLStyleSheetRulesCollection2, p: ptr LONG): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLStyleSheetRulesCollection2,
+      index: LONG,
+      ppHTMLCSSRule: ptr ptr IHTMLCSSRule,
+    ): HRESULT {.stdcall.}
+
   DispHTMLStyleSheetRule* {.pure.} = object
     lpVtbl*: ptr DispHTMLStyleSheetRuleVtbl
+
   DispHTMLStyleSheetRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLStyleSheetRulesCollection* {.pure.} = object
     lpVtbl*: ptr DispHTMLStyleSheetRulesCollectionVtbl
+
   DispHTMLStyleSheetRulesCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLStyleSheetPage* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheetPageVtbl
+
   IHTMLStyleSheetPageVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_selector*: proc(self: ptr IHTMLStyleSheetPage, p: ptr BSTR): HRESULT {.stdcall.}
-    get_pseudoClass*: proc(self: ptr IHTMLStyleSheetPage, p: ptr BSTR): HRESULT {.stdcall.}
+    get_pseudoClass*:
+      proc(self: ptr IHTMLStyleSheetPage, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLStyleSheetPage2* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheetPage2Vtbl
+
   IHTMLStyleSheetPage2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_selectorText*: proc(self: ptr IHTMLStyleSheetPage2, v: BSTR): HRESULT {.stdcall.}
-    get_selectorText*: proc(self: ptr IHTMLStyleSheetPage2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_style*: proc(self: ptr IHTMLStyleSheetPage2, p: ptr ptr IHTMLRuleStyle): HRESULT {.stdcall.}
+    put_selectorText*:
+      proc(self: ptr IHTMLStyleSheetPage2, v: BSTR): HRESULT {.stdcall.}
+    get_selectorText*:
+      proc(self: ptr IHTMLStyleSheetPage2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_style*: proc(self: ptr IHTMLStyleSheetPage2, p: ptr ptr IHTMLRuleStyle): HRESULT {.
+      stdcall
+    .}
+
   IHTMLStyleSheetPagesCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheetPagesCollectionVtbl
+
   IHTMLStyleSheetPagesCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLStyleSheetPagesCollection, p: ptr LONG): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLStyleSheetPagesCollection, index: LONG, ppHTMLStyleSheetPage: ptr ptr IHTMLStyleSheetPage): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLStyleSheetPagesCollection, p: ptr LONG): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLStyleSheetPagesCollection,
+      index: LONG,
+      ppHTMLStyleSheetPage: ptr ptr IHTMLStyleSheetPage,
+    ): HRESULT {.stdcall.}
+
   DispHTMLStyleSheetPage* {.pure.} = object
     lpVtbl*: ptr DispHTMLStyleSheetPageVtbl
+
   DispHTMLStyleSheetPageVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLStyleSheetPagesCollection* {.pure.} = object
     lpVtbl*: ptr DispHTMLStyleSheetPagesCollectionVtbl
+
   DispHTMLStyleSheetPagesCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLStyleSheet2* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheet2Vtbl
+
   IHTMLStyleSheet2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_pages*: proc(self: ptr IHTMLStyleSheet2, p: ptr ptr IHTMLStyleSheetPagesCollection): HRESULT {.stdcall.}
-    addPageRule*: proc(self: ptr IHTMLStyleSheet2, bstrSelector: BSTR, bstrStyle: BSTR, lIndex: LONG, plNewIndex: ptr LONG): HRESULT {.stdcall.}
+    get_pages*: proc(
+      self: ptr IHTMLStyleSheet2, p: ptr ptr IHTMLStyleSheetPagesCollection
+    ): HRESULT {.stdcall.}
+    addPageRule*: proc(
+      self: ptr IHTMLStyleSheet2,
+      bstrSelector: BSTR,
+      bstrStyle: BSTR,
+      lIndex: LONG,
+      plNewIndex: ptr LONG,
+    ): HRESULT {.stdcall.}
+
   IHTMLStyleSheet3* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheet3Vtbl
+
   IHTMLStyleSheet3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_href*: proc(self: ptr IHTMLStyleSheet3, v: BSTR): HRESULT {.stdcall.}
     get_href*: proc(self: ptr IHTMLStyleSheet3, p: ptr BSTR): HRESULT {.stdcall.}
-    get_isAlternate*: proc(self: ptr IHTMLStyleSheet3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_isPrefAlternate*: proc(self: ptr IHTMLStyleSheet3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_isAlternate*:
+      proc(self: ptr IHTMLStyleSheet3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_isPrefAlternate*:
+      proc(self: ptr IHTMLStyleSheet3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   IHTMLStyleSheet4* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheet4Vtbl
+
   IHTMLStyleSheet4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_type*: proc(self: ptr IHTMLStyleSheet4, p: ptr BSTR): HRESULT {.stdcall.}
     get_href*: proc(self: ptr IHTMLStyleSheet4, p: ptr VARIANT): HRESULT {.stdcall.}
     get_title*: proc(self: ptr IHTMLStyleSheet4, p: ptr BSTR): HRESULT {.stdcall.}
-    get_ownerNode*: proc(self: ptr IHTMLStyleSheet4, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    get_ownerRule*: proc(self: ptr IHTMLStyleSheet4, p: ptr ptr IHTMLCSSRule): HRESULT {.stdcall.}
-    get_cssRules*: proc(self: ptr IHTMLStyleSheet4, p: ptr ptr IHTMLStyleSheetRulesCollection): HRESULT {.stdcall.}
+    get_ownerNode*:
+      proc(self: ptr IHTMLStyleSheet4, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_ownerRule*:
+      proc(self: ptr IHTMLStyleSheet4, p: ptr ptr IHTMLCSSRule): HRESULT {.stdcall.}
+    get_cssRules*: proc(
+      self: ptr IHTMLStyleSheet4, p: ptr ptr IHTMLStyleSheetRulesCollection
+    ): HRESULT {.stdcall.}
     get_media*: proc(self: ptr IHTMLStyleSheet4, p: ptr VARIANT): HRESULT {.stdcall.}
-    insertRule*: proc(self: ptr IHTMLStyleSheet4, bstrRule: BSTR, lIndex: LONG, plNewIndex: ptr LONG): HRESULT {.stdcall.}
+    insertRule*: proc(
+      self: ptr IHTMLStyleSheet4, bstrRule: BSTR, lIndex: LONG, plNewIndex: ptr LONG
+    ): HRESULT {.stdcall.}
     deleteRule*: proc(self: ptr IHTMLStyleSheet4, lIndex: LONG): HRESULT {.stdcall.}
+
   DispHTMLStyleSheet* {.pure.} = object
     lpVtbl*: ptr DispHTMLStyleSheetVtbl
+
   DispHTMLStyleSheetVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLStyleSheetsCollection2* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleSheetsCollection2Vtbl
+
   IHTMLStyleSheetsCollection2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    item*: proc(self: ptr IHTMLStyleSheetsCollection2, index: LONG, pvarResult: ptr VARIANT): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLStyleSheetsCollection2, index: LONG, pvarResult: ptr VARIANT
+    ): HRESULT {.stdcall.}
+
   DispHTMLStyleSheetsCollection* {.pure.} = object
     lpVtbl*: ptr DispHTMLStyleSheetsCollectionVtbl
+
   DispHTMLStyleSheetsCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLLinkElementEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLLinkElementEvents2Vtbl
+
   HTMLLinkElementEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLLinkElementEvents* {.pure.} = object
     lpVtbl*: ptr HTMLLinkElementEventsVtbl
+
   HTMLLinkElementEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLLinkElement* {.pure.} = object
     lpVtbl*: ptr IHTMLLinkElementVtbl
+
   IHTMLLinkElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_href*: proc(self: ptr IHTMLLinkElement, v: BSTR): HRESULT {.stdcall.}
     get_href*: proc(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.stdcall.}
@@ -7064,213 +9498,382 @@
     put_type*: proc(self: ptr IHTMLLinkElement, v: BSTR): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_readyState*: proc(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.stdcall.}
-    put_onreadystatechange*: proc(self: ptr IHTMLLinkElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onreadystatechange*: proc(self: ptr IHTMLLinkElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onreadystatechange*:
+      proc(self: ptr IHTMLLinkElement, v: VARIANT): HRESULT {.stdcall.}
+    get_onreadystatechange*:
+      proc(self: ptr IHTMLLinkElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onload*: proc(self: ptr IHTMLLinkElement, v: VARIANT): HRESULT {.stdcall.}
     get_onload*: proc(self: ptr IHTMLLinkElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onerror*: proc(self: ptr IHTMLLinkElement, v: VARIANT): HRESULT {.stdcall.}
     get_onerror*: proc(self: ptr IHTMLLinkElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_styleSheet*: proc(self: ptr IHTMLLinkElement, p: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
-    put_disabled*: proc(self: ptr IHTMLLinkElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLLinkElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_styleSheet*:
+      proc(self: ptr IHTMLLinkElement, p: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
+    put_disabled*:
+      proc(self: ptr IHTMLLinkElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLLinkElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_media*: proc(self: ptr IHTMLLinkElement, v: BSTR): HRESULT {.stdcall.}
     get_media*: proc(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLLinkElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLLinkElement2Vtbl
+
   IHTMLLinkElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_target*: proc(self: ptr IHTMLLinkElement2, v: BSTR): HRESULT {.stdcall.}
     get_target*: proc(self: ptr IHTMLLinkElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLLinkElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLLinkElement3Vtbl
+
   IHTMLLinkElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_charset*: proc(self: ptr IHTMLLinkElement3, v: BSTR): HRESULT {.stdcall.}
     get_charset*: proc(self: ptr IHTMLLinkElement3, p: ptr BSTR): HRESULT {.stdcall.}
     put_hreflang*: proc(self: ptr IHTMLLinkElement3, v: BSTR): HRESULT {.stdcall.}
     get_hreflang*: proc(self: ptr IHTMLLinkElement3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLLinkElement4* {.pure.} = object
     lpVtbl*: ptr IHTMLLinkElement4Vtbl
+
   IHTMLLinkElement4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_href*: proc(self: ptr IHTMLLinkElement4, v: BSTR): HRESULT {.stdcall.}
     get_href*: proc(self: ptr IHTMLLinkElement4, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLLinkElement5* {.pure.} = object
     lpVtbl*: ptr IHTMLLinkElement5Vtbl
+
   IHTMLLinkElement5Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_sheet*: proc(self: ptr IHTMLLinkElement5, p: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
+    get_sheet*:
+      proc(self: ptr IHTMLLinkElement5, p: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
+
   DispHTMLLinkElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLLinkElementVtbl
+
   DispHTMLLinkElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLTxtRange* {.pure.} = object
     lpVtbl*: ptr IHTMLTxtRangeVtbl
+
   IHTMLTxtRangeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_htmlText*: proc(self: ptr IHTMLTxtRange, p: ptr BSTR): HRESULT {.stdcall.}
     put_text*: proc(self: ptr IHTMLTxtRange, v: BSTR): HRESULT {.stdcall.}
     get_text*: proc(self: ptr IHTMLTxtRange, p: ptr BSTR): HRESULT {.stdcall.}
-    parentElement*: proc(self: ptr IHTMLTxtRange, parent: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    duplicate*: proc(self: ptr IHTMLTxtRange, Duplicate: ptr ptr IHTMLTxtRange): HRESULT {.stdcall.}
-    inRange*: proc(self: ptr IHTMLTxtRange, Range: ptr IHTMLTxtRange, InRange: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    isEqual*: proc(self: ptr IHTMLTxtRange, Range: ptr IHTMLTxtRange, IsEqual: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    scrollIntoView*: proc(self: ptr IHTMLTxtRange, fStart: VARIANT_BOOL): HRESULT {.stdcall.}
+    parentElement*:
+      proc(self: ptr IHTMLTxtRange, parent: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    duplicate*: proc(self: ptr IHTMLTxtRange, Duplicate: ptr ptr IHTMLTxtRange): HRESULT {.
+      stdcall
+    .}
+    inRange*: proc(
+      self: ptr IHTMLTxtRange, Range: ptr IHTMLTxtRange, InRange: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    isEqual*: proc(
+      self: ptr IHTMLTxtRange, Range: ptr IHTMLTxtRange, IsEqual: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    scrollIntoView*:
+      proc(self: ptr IHTMLTxtRange, fStart: VARIANT_BOOL): HRESULT {.stdcall.}
     collapse*: proc(self: ptr IHTMLTxtRange, Start: VARIANT_BOOL): HRESULT {.stdcall.}
-    expand*: proc(self: ptr IHTMLTxtRange, Unit: BSTR, Success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    move*: proc(self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG): HRESULT {.stdcall.}
-    moveStart*: proc(self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG): HRESULT {.stdcall.}
-    moveEnd*: proc(self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG): HRESULT {.stdcall.}
+    expand*: proc(
+      self: ptr IHTMLTxtRange, Unit: BSTR, Success: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    move*: proc(
+      self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG
+    ): HRESULT {.stdcall.}
+    moveStart*: proc(
+      self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG
+    ): HRESULT {.stdcall.}
+    moveEnd*: proc(
+      self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG
+    ): HRESULT {.stdcall.}
     select*: proc(self: ptr IHTMLTxtRange): HRESULT {.stdcall.}
     pasteHTML*: proc(self: ptr IHTMLTxtRange, html: BSTR): HRESULT {.stdcall.}
-    moveToElementText*: proc(self: ptr IHTMLTxtRange, element: ptr IHTMLElement): HRESULT {.stdcall.}
-    setEndPoint*: proc(self: ptr IHTMLTxtRange, how: BSTR, SourceRange: ptr IHTMLTxtRange): HRESULT {.stdcall.}
-    compareEndPoints*: proc(self: ptr IHTMLTxtRange, how: BSTR, SourceRange: ptr IHTMLTxtRange, ret: ptr LONG): HRESULT {.stdcall.}
-    findText*: proc(self: ptr IHTMLTxtRange, String: BSTR, count: LONG, Flags: LONG, Success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    moveToElementText*:
+      proc(self: ptr IHTMLTxtRange, element: ptr IHTMLElement): HRESULT {.stdcall.}
+    setEndPoint*: proc(
+      self: ptr IHTMLTxtRange, how: BSTR, SourceRange: ptr IHTMLTxtRange
+    ): HRESULT {.stdcall.}
+    compareEndPoints*: proc(
+      self: ptr IHTMLTxtRange, how: BSTR, SourceRange: ptr IHTMLTxtRange, ret: ptr LONG
+    ): HRESULT {.stdcall.}
+    findText*: proc(
+      self: ptr IHTMLTxtRange,
+      String: BSTR,
+      count: LONG,
+      Flags: LONG,
+      Success: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
     moveToPoint*: proc(self: ptr IHTMLTxtRange, x: LONG, y: LONG): HRESULT {.stdcall.}
     getBookmark*: proc(self: ptr IHTMLTxtRange, Boolmark: ptr BSTR): HRESULT {.stdcall.}
-    moveToBookmark*: proc(self: ptr IHTMLTxtRange, Bookmark: BSTR, Success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    queryCommandSupported*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    queryCommandEnabled*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    queryCommandState*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    queryCommandIndeterm*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    queryCommandText*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, pcmdText: ptr BSTR): HRESULT {.stdcall.}
-    queryCommandValue*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, pcmdValue: ptr VARIANT): HRESULT {.stdcall.}
-    execCommand*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, showUI: VARIANT_BOOL, value: VARIANT, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    execCommandShowHelp*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    moveToBookmark*: proc(
+      self: ptr IHTMLTxtRange, Bookmark: BSTR, Success: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    queryCommandSupported*: proc(
+      self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    queryCommandEnabled*: proc(
+      self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    queryCommandState*: proc(
+      self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    queryCommandIndeterm*: proc(
+      self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    queryCommandText*: proc(
+      self: ptr IHTMLTxtRange, cmdID: BSTR, pcmdText: ptr BSTR
+    ): HRESULT {.stdcall.}
+    queryCommandValue*: proc(
+      self: ptr IHTMLTxtRange, cmdID: BSTR, pcmdValue: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    execCommand*: proc(
+      self: ptr IHTMLTxtRange,
+      cmdID: BSTR,
+      showUI: VARIANT_BOOL,
+      value: VARIANT,
+      pfRet: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    execCommandShowHelp*: proc(
+      self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+
   IHTMLTextRangeMetrics* {.pure.} = object
     lpVtbl*: ptr IHTMLTextRangeMetricsVtbl
+
   IHTMLTextRangeMetricsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_offsetTop*: proc(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.stdcall.}
-    get_offsetLeft*: proc(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.stdcall.}
-    get_boundingTop*: proc(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.stdcall.}
-    get_boundingLeft*: proc(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.stdcall.}
-    get_boundingWidth*: proc(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.stdcall.}
-    get_boundingHeight*: proc(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.stdcall.}
+    get_offsetTop*:
+      proc(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.stdcall.}
+    get_offsetLeft*:
+      proc(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.stdcall.}
+    get_boundingTop*:
+      proc(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.stdcall.}
+    get_boundingLeft*:
+      proc(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.stdcall.}
+    get_boundingWidth*:
+      proc(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.stdcall.}
+    get_boundingHeight*:
+      proc(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLTextRangeMetrics2* {.pure.} = object
     lpVtbl*: ptr IHTMLTextRangeMetrics2Vtbl
+
   IHTMLTextRangeMetrics2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    getClientRects*: proc(self: ptr IHTMLTextRangeMetrics2, pRectCol: ptr ptr IHTMLRectCollection): HRESULT {.stdcall.}
-    getBoundingClientRect*: proc(self: ptr IHTMLTextRangeMetrics2, pRect: ptr ptr IHTMLRect): HRESULT {.stdcall.}
+    getClientRects*: proc(
+      self: ptr IHTMLTextRangeMetrics2, pRectCol: ptr ptr IHTMLRectCollection
+    ): HRESULT {.stdcall.}
+    getBoundingClientRect*: proc(
+      self: ptr IHTMLTextRangeMetrics2, pRect: ptr ptr IHTMLRect
+    ): HRESULT {.stdcall.}
+
   IHTMLTxtRangeCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLTxtRangeCollectionVtbl
+
   IHTMLTxtRangeCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLTxtRangeCollection, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IHTMLTxtRangeCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLTxtRangeCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLTxtRangeCollection, p: ptr LONG): HRESULT {.stdcall.}
+    get_newEnum*:
+      proc(self: ptr IHTMLTxtRangeCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLTxtRangeCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT
+    ): HRESULT {.stdcall.}
+
   DispHTMLDOMRange* {.pure.} = object
     lpVtbl*: ptr DispHTMLDOMRangeVtbl
+
   DispHTMLDOMRangeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLFormElementEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLFormElementEvents2Vtbl
+
   HTMLFormElementEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLFormElementEvents* {.pure.} = object
     lpVtbl*: ptr HTMLFormElementEventsVtbl
+
   HTMLFormElementEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLFormElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLFormElement2Vtbl
+
   IHTMLFormElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_acceptCharset*: proc(self: ptr IHTMLFormElement2, v: BSTR): HRESULT {.stdcall.}
-    get_acceptCharset*: proc(self: ptr IHTMLFormElement2, p: ptr BSTR): HRESULT {.stdcall.}
-    urns*: proc(self: ptr IHTMLFormElement2, urn: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_acceptCharset*:
+      proc(self: ptr IHTMLFormElement2, p: ptr BSTR): HRESULT {.stdcall.}
+    urns*: proc(
+      self: ptr IHTMLFormElement2, urn: VARIANT, pdisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLFormElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLFormElement3Vtbl
+
   IHTMLFormElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    namedItem*: proc(self: ptr IHTMLFormElement3, name: BSTR, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    namedItem*: proc(
+      self: ptr IHTMLFormElement3, name: BSTR, pdisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLSubmitData* {.pure.} = object
     lpVtbl*: ptr IHTMLSubmitDataVtbl
+
   IHTMLSubmitDataVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    appendNameValuePair*: proc(self: ptr IHTMLSubmitData, name: BSTR, value: BSTR): HRESULT {.stdcall.}
-    appendNameFilePair*: proc(self: ptr IHTMLSubmitData, name: BSTR, filename: BSTR): HRESULT {.stdcall.}
+    appendNameValuePair*:
+      proc(self: ptr IHTMLSubmitData, name: BSTR, value: BSTR): HRESULT {.stdcall.}
+    appendNameFilePair*:
+      proc(self: ptr IHTMLSubmitData, name: BSTR, filename: BSTR): HRESULT {.stdcall.}
     appendItemSeparator*: proc(self: ptr IHTMLSubmitData): HRESULT {.stdcall.}
+
   IHTMLFormElement4* {.pure.} = object
     lpVtbl*: ptr IHTMLFormElement4Vtbl
+
   IHTMLFormElement4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_action*: proc(self: ptr IHTMLFormElement4, v: BSTR): HRESULT {.stdcall.}
     get_action*: proc(self: ptr IHTMLFormElement4, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLFormElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLFormElementVtbl
+
   DispHTMLFormElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLControlElementEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLControlElementEvents2Vtbl
+
   HTMLControlElementEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLControlElementEvents* {.pure.} = object
     lpVtbl*: ptr HTMLControlElementEventsVtbl
+
   HTMLControlElementEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLControlElement* {.pure.} = object
     lpVtbl*: ptr IHTMLControlElementVtbl
+
   IHTMLControlElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_tabIndex*: proc(self: ptr IHTMLControlElement, v: int16): HRESULT {.stdcall.}
-    get_tabIndex*: proc(self: ptr IHTMLControlElement, p: ptr int16): HRESULT {.stdcall.}
+    get_tabIndex*:
+      proc(self: ptr IHTMLControlElement, p: ptr int16): HRESULT {.stdcall.}
     focus*: proc(self: ptr IHTMLControlElement): HRESULT {.stdcall.}
     put_accessKey*: proc(self: ptr IHTMLControlElement, v: BSTR): HRESULT {.stdcall.}
-    get_accessKey*: proc(self: ptr IHTMLControlElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_accessKey*:
+      proc(self: ptr IHTMLControlElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_onblur*: proc(self: ptr IHTMLControlElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onblur*: proc(self: ptr IHTMLControlElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onblur*:
+      proc(self: ptr IHTMLControlElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onfocus*: proc(self: ptr IHTMLControlElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onfocus*: proc(self: ptr IHTMLControlElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onfocus*:
+      proc(self: ptr IHTMLControlElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onresize*: proc(self: ptr IHTMLControlElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onresize*: proc(self: ptr IHTMLControlElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onresize*:
+      proc(self: ptr IHTMLControlElement, p: ptr VARIANT): HRESULT {.stdcall.}
     blur*: proc(self: ptr IHTMLControlElement): HRESULT {.stdcall.}
-    addFilter*: proc(self: ptr IHTMLControlElement, pUnk: ptr IUnknown): HRESULT {.stdcall.}
-    removeFilter*: proc(self: ptr IHTMLControlElement, pUnk: ptr IUnknown): HRESULT {.stdcall.}
-    get_clientHeight*: proc(self: ptr IHTMLControlElement, p: ptr LONG): HRESULT {.stdcall.}
-    get_clientWidth*: proc(self: ptr IHTMLControlElement, p: ptr LONG): HRESULT {.stdcall.}
-    get_clientTop*: proc(self: ptr IHTMLControlElement, p: ptr LONG): HRESULT {.stdcall.}
-    get_clientLeft*: proc(self: ptr IHTMLControlElement, p: ptr LONG): HRESULT {.stdcall.}
+    addFilter*:
+      proc(self: ptr IHTMLControlElement, pUnk: ptr IUnknown): HRESULT {.stdcall.}
+    removeFilter*:
+      proc(self: ptr IHTMLControlElement, pUnk: ptr IUnknown): HRESULT {.stdcall.}
+    get_clientHeight*:
+      proc(self: ptr IHTMLControlElement, p: ptr LONG): HRESULT {.stdcall.}
+    get_clientWidth*:
+      proc(self: ptr IHTMLControlElement, p: ptr LONG): HRESULT {.stdcall.}
+    get_clientTop*:
+      proc(self: ptr IHTMLControlElement, p: ptr LONG): HRESULT {.stdcall.}
+    get_clientLeft*:
+      proc(self: ptr IHTMLControlElement, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLTextElement* {.pure.} = object
     lpVtbl*: ptr IHTMLTextElementVtbl
+
   IHTMLTextElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLTextElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLTextElementVtbl
+
   DispHTMLTextElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLTextContainerEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLTextContainerEvents2Vtbl
+
   HTMLTextContainerEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLTextContainerEvents* {.pure.} = object
     lpVtbl*: ptr HTMLTextContainerEventsVtbl
+
   HTMLTextContainerEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLTextContainer* {.pure.} = object
     lpVtbl*: ptr IHTMLTextContainerVtbl
+
   IHTMLTextContainerVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    createControlRange*: proc(self: ptr IHTMLTextContainer, range: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_scrollHeight*: proc(self: ptr IHTMLTextContainer, p: ptr LONG): HRESULT {.stdcall.}
-    get_scrollWidth*: proc(self: ptr IHTMLTextContainer, p: ptr LONG): HRESULT {.stdcall.}
+    createControlRange*:
+      proc(self: ptr IHTMLTextContainer, range: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_scrollHeight*:
+      proc(self: ptr IHTMLTextContainer, p: ptr LONG): HRESULT {.stdcall.}
+    get_scrollWidth*:
+      proc(self: ptr IHTMLTextContainer, p: ptr LONG): HRESULT {.stdcall.}
     put_scrollTop*: proc(self: ptr IHTMLTextContainer, v: LONG): HRESULT {.stdcall.}
     get_scrollTop*: proc(self: ptr IHTMLTextContainer, p: ptr LONG): HRESULT {.stdcall.}
     put_scrollLeft*: proc(self: ptr IHTMLTextContainer, v: LONG): HRESULT {.stdcall.}
-    get_scrollLeft*: proc(self: ptr IHTMLTextContainer, p: ptr LONG): HRESULT {.stdcall.}
+    get_scrollLeft*:
+      proc(self: ptr IHTMLTextContainer, p: ptr LONG): HRESULT {.stdcall.}
     put_onscroll*: proc(self: ptr IHTMLTextContainer, v: VARIANT): HRESULT {.stdcall.}
-    get_onscroll*: proc(self: ptr IHTMLTextContainer, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onscroll*:
+      proc(self: ptr IHTMLTextContainer, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLControlRange* {.pure.} = object
     lpVtbl*: ptr IHTMLControlRangeVtbl
+
   IHTMLControlRangeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     select*: proc(self: ptr IHTMLControlRange): HRESULT {.stdcall.}
-    add*: proc(self: ptr IHTMLControlRange, item: ptr IHTMLControlElement): HRESULT {.stdcall.}
+    add*: proc(self: ptr IHTMLControlRange, item: ptr IHTMLControlElement): HRESULT {.
+      stdcall
+    .}
     remove*: proc(self: ptr IHTMLControlRange, index: LONG): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLControlRange, index: LONG, pdisp: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    scrollIntoView*: proc(self: ptr IHTMLControlRange, varargStart: VARIANT): HRESULT {.stdcall.}
-    queryCommandSupported*: proc(self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    queryCommandEnabled*: proc(self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    queryCommandState*: proc(self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    queryCommandIndeterm*: proc(self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    queryCommandText*: proc(self: ptr IHTMLControlRange, cmdID: BSTR, pcmdText: ptr BSTR): HRESULT {.stdcall.}
-    queryCommandValue*: proc(self: ptr IHTMLControlRange, cmdID: BSTR, pcmdValue: ptr VARIANT): HRESULT {.stdcall.}
-    execCommand*: proc(self: ptr IHTMLControlRange, cmdID: BSTR, showUI: VARIANT_BOOL, value: VARIANT, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    execCommandShowHelp*: proc(self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    commonParentElement*: proc(self: ptr IHTMLControlRange, parent: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLControlRange, index: LONG, pdisp: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
+    scrollIntoView*:
+      proc(self: ptr IHTMLControlRange, varargStart: VARIANT): HRESULT {.stdcall.}
+    queryCommandSupported*: proc(
+      self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    queryCommandEnabled*: proc(
+      self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    queryCommandState*: proc(
+      self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    queryCommandIndeterm*: proc(
+      self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    queryCommandText*: proc(
+      self: ptr IHTMLControlRange, cmdID: BSTR, pcmdText: ptr BSTR
+    ): HRESULT {.stdcall.}
+    queryCommandValue*: proc(
+      self: ptr IHTMLControlRange, cmdID: BSTR, pcmdValue: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    execCommand*: proc(
+      self: ptr IHTMLControlRange,
+      cmdID: BSTR,
+      showUI: VARIANT_BOOL,
+      value: VARIANT,
+      pfRet: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    execCommandShowHelp*: proc(
+      self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    commonParentElement*: proc(
+      self: ptr IHTMLControlRange, parent: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
     get_length*: proc(self: ptr IHTMLControlRange, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLControlRange2* {.pure.} = object
     lpVtbl*: ptr IHTMLControlRange2Vtbl
+
   IHTMLControlRange2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    addElement*: proc(self: ptr IHTMLControlRange2, item: ptr IHTMLElement): HRESULT {.stdcall.}
+    addElement*:
+      proc(self: ptr IHTMLControlRange2, item: ptr IHTMLElement): HRESULT {.stdcall.}
+
   HTMLImgEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLImgEvents2Vtbl
+
   HTMLImgEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLImgEvents* {.pure.} = object
     lpVtbl*: ptr HTMLImgEventsVtbl
+
   HTMLImgEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLImgElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLImgElement2Vtbl
+
   IHTMLImgElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_longDesc*: proc(self: ptr IHTMLImgElement2, v: BSTR): HRESULT {.stdcall.}
     get_longDesc*: proc(self: ptr IHTMLImgElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLImgElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLImgElement3Vtbl
+
   IHTMLImgElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_longDesc*: proc(self: ptr IHTMLImgElement3, v: BSTR): HRESULT {.stdcall.}
     get_longDesc*: proc(self: ptr IHTMLImgElement3, p: ptr BSTR): HRESULT {.stdcall.}
@@ -7280,38 +9883,57 @@
     get_lowsrc*: proc(self: ptr IHTMLImgElement3, p: ptr BSTR): HRESULT {.stdcall.}
     put_dynsrc*: proc(self: ptr IHTMLImgElement3, v: BSTR): HRESULT {.stdcall.}
     get_dynsrc*: proc(self: ptr IHTMLImgElement3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLImgElement4* {.pure.} = object
     lpVtbl*: ptr IHTMLImgElement4Vtbl
+
   IHTMLImgElement4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_naturalWidth*: proc(self: ptr IHTMLImgElement4, p: ptr LONG): HRESULT {.stdcall.}
-    get_naturalHeight*: proc(self: ptr IHTMLImgElement4, p: ptr LONG): HRESULT {.stdcall.}
+    get_naturalWidth*:
+      proc(self: ptr IHTMLImgElement4, p: ptr LONG): HRESULT {.stdcall.}
+    get_naturalHeight*:
+      proc(self: ptr IHTMLImgElement4, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLMSImgElement* {.pure.} = object
     lpVtbl*: ptr IHTMLMSImgElementVtbl
+
   IHTMLMSImgElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_msPlayToDisabled*: proc(self: ptr IHTMLMSImgElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_msPlayToDisabled*: proc(self: ptr IHTMLMSImgElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_msPlayToPrimary*: proc(self: ptr IHTMLMSImgElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_msPlayToPrimary*: proc(self: ptr IHTMLMSImgElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_msPlayToDisabled*:
+      proc(self: ptr IHTMLMSImgElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_msPlayToDisabled*:
+      proc(self: ptr IHTMLMSImgElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_msPlayToPrimary*:
+      proc(self: ptr IHTMLMSImgElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_msPlayToPrimary*:
+      proc(self: ptr IHTMLMSImgElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   DispHTMLImg* {.pure.} = object
     lpVtbl*: ptr DispHTMLImgVtbl
+
   DispHTMLImgVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLBodyElement* {.pure.} = object
     lpVtbl*: ptr IHTMLBodyElementVtbl
+
   IHTMLBodyElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_background*: proc(self: ptr IHTMLBodyElement, v: BSTR): HRESULT {.stdcall.}
     get_background*: proc(self: ptr IHTMLBodyElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_bgProperties*: proc(self: ptr IHTMLBodyElement, v: BSTR): HRESULT {.stdcall.}
-    get_bgProperties*: proc(self: ptr IHTMLBodyElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_bgProperties*:
+      proc(self: ptr IHTMLBodyElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_leftMargin*: proc(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.stdcall.}
-    get_leftMargin*: proc(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_leftMargin*:
+      proc(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_topMargin*: proc(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.stdcall.}
-    get_topMargin*: proc(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_topMargin*:
+      proc(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_rightMargin*: proc(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.stdcall.}
-    get_rightMargin*: proc(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_rightMargin*:
+      proc(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_bottomMargin*: proc(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.stdcall.}
-    get_bottomMargin*: proc(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_bottomMargin*:
+      proc(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_noWrap*: proc(self: ptr IHTMLBodyElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_noWrap*: proc(self: ptr IHTMLBodyElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_noWrap*:
+      proc(self: ptr IHTMLBodyElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_bgColor*: proc(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.stdcall.}
     get_bgColor*: proc(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_text*: proc(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.stdcall.}
@@ -7330,44 +9952,70 @@
     get_scroll*: proc(self: ptr IHTMLBodyElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_onselect*: proc(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.stdcall.}
     get_onselect*: proc(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onbeforeunload*: proc(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforeunload*: proc(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    createTextRange*: proc(self: ptr IHTMLBodyElement, range: ptr ptr IHTMLTxtRange): HRESULT {.stdcall.}
+    put_onbeforeunload*:
+      proc(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.stdcall.}
+    get_onbeforeunload*:
+      proc(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    createTextRange*: proc(
+      self: ptr IHTMLBodyElement, range: ptr ptr IHTMLTxtRange
+    ): HRESULT {.stdcall.}
+
   IHTMLBodyElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLBodyElement2Vtbl
+
   IHTMLBodyElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_onbeforeprint*: proc(self: ptr IHTMLBodyElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforeprint*: proc(self: ptr IHTMLBodyElement2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onafterprint*: proc(self: ptr IHTMLBodyElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_onafterprint*: proc(self: ptr IHTMLBodyElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onbeforeprint*:
+      proc(self: ptr IHTMLBodyElement2, v: VARIANT): HRESULT {.stdcall.}
+    get_onbeforeprint*:
+      proc(self: ptr IHTMLBodyElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onafterprint*:
+      proc(self: ptr IHTMLBodyElement2, v: VARIANT): HRESULT {.stdcall.}
+    get_onafterprint*:
+      proc(self: ptr IHTMLBodyElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLBodyElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLBodyElement3Vtbl
+
   IHTMLBodyElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_background*: proc(self: ptr IHTMLBodyElement3, v: BSTR): HRESULT {.stdcall.}
     get_background*: proc(self: ptr IHTMLBodyElement3, p: ptr BSTR): HRESULT {.stdcall.}
     put_ononline*: proc(self: ptr IHTMLBodyElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_ononline*: proc(self: ptr IHTMLBodyElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_ononline*:
+      proc(self: ptr IHTMLBodyElement3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onoffline*: proc(self: ptr IHTMLBodyElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_onoffline*: proc(self: ptr IHTMLBodyElement3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onhashchange*: proc(self: ptr IHTMLBodyElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_onhashchange*: proc(self: ptr IHTMLBodyElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onoffline*:
+      proc(self: ptr IHTMLBodyElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onhashchange*:
+      proc(self: ptr IHTMLBodyElement3, v: VARIANT): HRESULT {.stdcall.}
+    get_onhashchange*:
+      proc(self: ptr IHTMLBodyElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLBodyElement4* {.pure.} = object
     lpVtbl*: ptr IHTMLBodyElement4Vtbl
+
   IHTMLBodyElement4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_onmessage*: proc(self: ptr IHTMLBodyElement4, v: VARIANT): HRESULT {.stdcall.}
-    get_onmessage*: proc(self: ptr IHTMLBodyElement4, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmessage*:
+      proc(self: ptr IHTMLBodyElement4, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onstorage*: proc(self: ptr IHTMLBodyElement4, v: VARIANT): HRESULT {.stdcall.}
-    get_onstorage*: proc(self: ptr IHTMLBodyElement4, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onstorage*:
+      proc(self: ptr IHTMLBodyElement4, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLBodyElement5* {.pure.} = object
     lpVtbl*: ptr IHTMLBodyElement5Vtbl
+
   IHTMLBodyElement5Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_onpopstate*: proc(self: ptr IHTMLBodyElement5, v: VARIANT): HRESULT {.stdcall.}
-    get_onpopstate*: proc(self: ptr IHTMLBodyElement5, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onpopstate*:
+      proc(self: ptr IHTMLBodyElement5, p: ptr VARIANT): HRESULT {.stdcall.}
+
   DispHTMLBody* {.pure.} = object
     lpVtbl*: ptr DispHTMLBodyVtbl
+
   DispHTMLBodyVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLFontElement* {.pure.} = object
     lpVtbl*: ptr IHTMLFontElementVtbl
+
   IHTMLFontElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_color*: proc(self: ptr IHTMLFontElement, v: VARIANT): HRESULT {.stdcall.}
     get_color*: proc(self: ptr IHTMLFontElement, p: ptr VARIANT): HRESULT {.stdcall.}
@@ -7375,17 +10023,22 @@
     get_face*: proc(self: ptr IHTMLFontElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_size*: proc(self: ptr IHTMLFontElement, v: VARIANT): HRESULT {.stdcall.}
     get_size*: proc(self: ptr IHTMLFontElement, p: ptr VARIANT): HRESULT {.stdcall.}
+
   DispHTMLFontElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLFontElementVtbl
+
   DispHTMLFontElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLAnchorEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLAnchorEvents2Vtbl
+
   HTMLAnchorEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLAnchorEvents* {.pure.} = object
     lpVtbl*: ptr HTMLAnchorEventsVtbl
+
   HTMLAnchorEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLAnchorElement* {.pure.} = object
     lpVtbl*: ptr IHTMLAnchorElementVtbl
+
   IHTMLAnchorElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_href*: proc(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.stdcall.}
     get_href*: proc(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.stdcall.}
@@ -7418,18 +10071,22 @@
     put_onblur*: proc(self: ptr IHTMLAnchorElement, v: VARIANT): HRESULT {.stdcall.}
     get_onblur*: proc(self: ptr IHTMLAnchorElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onfocus*: proc(self: ptr IHTMLAnchorElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onfocus*: proc(self: ptr IHTMLAnchorElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onfocus*:
+      proc(self: ptr IHTMLAnchorElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_accessKey*: proc(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.stdcall.}
     get_accessKey*: proc(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_protocolLong*: proc(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_protocolLong*:
+      proc(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_mimeType*: proc(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_nameProp*: proc(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_tabIndex*: proc(self: ptr IHTMLAnchorElement, v: int16): HRESULT {.stdcall.}
     get_tabIndex*: proc(self: ptr IHTMLAnchorElement, p: ptr int16): HRESULT {.stdcall.}
     focus*: proc(self: ptr IHTMLAnchorElement): HRESULT {.stdcall.}
     blur*: proc(self: ptr IHTMLAnchorElement): HRESULT {.stdcall.}
+
   IHTMLAnchorElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLAnchorElement2Vtbl
+
   IHTMLAnchorElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_charset*: proc(self: ptr IHTMLAnchorElement2, v: BSTR): HRESULT {.stdcall.}
     get_charset*: proc(self: ptr IHTMLAnchorElement2, p: ptr BSTR): HRESULT {.stdcall.}
@@ -7441,8 +10098,10 @@
     get_shape*: proc(self: ptr IHTMLAnchorElement2, p: ptr BSTR): HRESULT {.stdcall.}
     put_type*: proc(self: ptr IHTMLAnchorElement2, v: BSTR): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IHTMLAnchorElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLAnchorElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLAnchorElement3Vtbl
+
   IHTMLAnchorElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_shape*: proc(self: ptr IHTMLAnchorElement3, v: BSTR): HRESULT {.stdcall.}
     get_shape*: proc(self: ptr IHTMLAnchorElement3, p: ptr BSTR): HRESULT {.stdcall.}
@@ -7450,300 +10109,456 @@
     get_coords*: proc(self: ptr IHTMLAnchorElement3, p: ptr BSTR): HRESULT {.stdcall.}
     put_href*: proc(self: ptr IHTMLAnchorElement3, v: BSTR): HRESULT {.stdcall.}
     get_href*: proc(self: ptr IHTMLAnchorElement3, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLAnchorElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLAnchorElementVtbl
+
   DispHTMLAnchorElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLLabelEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLLabelEvents2Vtbl
+
   HTMLLabelEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLLabelEvents* {.pure.} = object
     lpVtbl*: ptr HTMLLabelEventsVtbl
+
   HTMLLabelEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLLabelElement* {.pure.} = object
     lpVtbl*: ptr IHTMLLabelElementVtbl
+
   IHTMLLabelElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_htmlFor*: proc(self: ptr IHTMLLabelElement, v: BSTR): HRESULT {.stdcall.}
     get_htmlFor*: proc(self: ptr IHTMLLabelElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_accessKey*: proc(self: ptr IHTMLLabelElement, v: BSTR): HRESULT {.stdcall.}
     get_accessKey*: proc(self: ptr IHTMLLabelElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLLabelElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLLabelElement2Vtbl
+
   IHTMLLabelElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_form*: proc(self: ptr IHTMLLabelElement2, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
+    get_form*: proc(self: ptr IHTMLLabelElement2, p: ptr ptr IHTMLFormElement): HRESULT {.
+      stdcall
+    .}
+
   DispHTMLLabelElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLLabelElementVtbl
+
   DispHTMLLabelElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLListElement* {.pure.} = object
     lpVtbl*: ptr IHTMLListElementVtbl
+
   IHTMLListElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLListElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLListElement2Vtbl
+
   IHTMLListElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_compact*: proc(self: ptr IHTMLListElement2, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_compact*: proc(self: ptr IHTMLListElement2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_compact*:
+      proc(self: ptr IHTMLListElement2, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_compact*:
+      proc(self: ptr IHTMLListElement2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   DispHTMLListElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLListElementVtbl
+
   DispHTMLListElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLUListElement* {.pure.} = object
     lpVtbl*: ptr IHTMLUListElementVtbl
+
   IHTMLUListElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_compact*: proc(self: ptr IHTMLUListElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_compact*: proc(self: ptr IHTMLUListElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_compact*:
+      proc(self: ptr IHTMLUListElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_compact*:
+      proc(self: ptr IHTMLUListElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_type*: proc(self: ptr IHTMLUListElement, v: BSTR): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IHTMLUListElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLUListElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLUListElementVtbl
+
   DispHTMLUListElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLOListElement* {.pure.} = object
     lpVtbl*: ptr IHTMLOListElementVtbl
+
   IHTMLOListElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_compact*: proc(self: ptr IHTMLOListElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_compact*: proc(self: ptr IHTMLOListElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_compact*:
+      proc(self: ptr IHTMLOListElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_compact*:
+      proc(self: ptr IHTMLOListElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_start*: proc(self: ptr IHTMLOListElement, v: LONG): HRESULT {.stdcall.}
     get_start*: proc(self: ptr IHTMLOListElement, p: ptr LONG): HRESULT {.stdcall.}
     put_type*: proc(self: ptr IHTMLOListElement, v: BSTR): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IHTMLOListElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLOListElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLOListElementVtbl
+
   DispHTMLOListElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLLIElement* {.pure.} = object
     lpVtbl*: ptr IHTMLLIElementVtbl
+
   IHTMLLIElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_type*: proc(self: ptr IHTMLLIElement, v: BSTR): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IHTMLLIElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_value*: proc(self: ptr IHTMLLIElement, v: LONG): HRESULT {.stdcall.}
     get_value*: proc(self: ptr IHTMLLIElement, p: ptr LONG): HRESULT {.stdcall.}
+
   DispHTMLLIElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLLIElementVtbl
+
   DispHTMLLIElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLBlockElement* {.pure.} = object
     lpVtbl*: ptr IHTMLBlockElementVtbl
+
   IHTMLBlockElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_clear*: proc(self: ptr IHTMLBlockElement, v: BSTR): HRESULT {.stdcall.}
     get_clear*: proc(self: ptr IHTMLBlockElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLBlockElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLBlockElement2Vtbl
+
   IHTMLBlockElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_cite*: proc(self: ptr IHTMLBlockElement2, v: BSTR): HRESULT {.stdcall.}
     get_cite*: proc(self: ptr IHTMLBlockElement2, p: ptr BSTR): HRESULT {.stdcall.}
     put_width*: proc(self: ptr IHTMLBlockElement2, v: BSTR): HRESULT {.stdcall.}
     get_width*: proc(self: ptr IHTMLBlockElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLBlockElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLBlockElement3Vtbl
+
   IHTMLBlockElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_cite*: proc(self: ptr IHTMLBlockElement3, v: BSTR): HRESULT {.stdcall.}
     get_cite*: proc(self: ptr IHTMLBlockElement3, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLBlockElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLBlockElementVtbl
+
   DispHTMLBlockElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLDivElement* {.pure.} = object
     lpVtbl*: ptr IHTMLDivElementVtbl
+
   IHTMLDivElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_align*: proc(self: ptr IHTMLDivElement, v: BSTR): HRESULT {.stdcall.}
     get_align*: proc(self: ptr IHTMLDivElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_noWrap*: proc(self: ptr IHTMLDivElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_noWrap*: proc(self: ptr IHTMLDivElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_noWrap*:
+      proc(self: ptr IHTMLDivElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   DispHTMLDivElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLDivElementVtbl
+
   DispHTMLDivElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLDDElement* {.pure.} = object
     lpVtbl*: ptr IHTMLDDElementVtbl
+
   IHTMLDDElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_noWrap*: proc(self: ptr IHTMLDDElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_noWrap*: proc(self: ptr IHTMLDDElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_noWrap*:
+      proc(self: ptr IHTMLDDElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   DispHTMLDDElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLDDElementVtbl
+
   DispHTMLDDElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLDTElement* {.pure.} = object
     lpVtbl*: ptr IHTMLDTElementVtbl
+
   IHTMLDTElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_noWrap*: proc(self: ptr IHTMLDTElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_noWrap*: proc(self: ptr IHTMLDTElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_noWrap*:
+      proc(self: ptr IHTMLDTElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   DispHTMLDTElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLDTElementVtbl
+
   DispHTMLDTElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLBRElement* {.pure.} = object
     lpVtbl*: ptr IHTMLBRElementVtbl
+
   IHTMLBRElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_clear*: proc(self: ptr IHTMLBRElement, v: BSTR): HRESULT {.stdcall.}
     get_clear*: proc(self: ptr IHTMLBRElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLBRElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLBRElementVtbl
+
   DispHTMLBRElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLDListElement* {.pure.} = object
     lpVtbl*: ptr IHTMLDListElementVtbl
+
   IHTMLDListElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_compact*: proc(self: ptr IHTMLDListElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_compact*: proc(self: ptr IHTMLDListElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_compact*:
+      proc(self: ptr IHTMLDListElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_compact*:
+      proc(self: ptr IHTMLDListElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   DispHTMLDListElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLDListElementVtbl
+
   DispHTMLDListElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLHRElement* {.pure.} = object
     lpVtbl*: ptr IHTMLHRElementVtbl
+
   IHTMLHRElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_align*: proc(self: ptr IHTMLHRElement, v: BSTR): HRESULT {.stdcall.}
     get_align*: proc(self: ptr IHTMLHRElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_color*: proc(self: ptr IHTMLHRElement, v: VARIANT): HRESULT {.stdcall.}
     get_color*: proc(self: ptr IHTMLHRElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_noShade*: proc(self: ptr IHTMLHRElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_noShade*: proc(self: ptr IHTMLHRElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_noShade*:
+      proc(self: ptr IHTMLHRElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_width*: proc(self: ptr IHTMLHRElement, v: VARIANT): HRESULT {.stdcall.}
     get_width*: proc(self: ptr IHTMLHRElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_size*: proc(self: ptr IHTMLHRElement, v: VARIANT): HRESULT {.stdcall.}
     get_size*: proc(self: ptr IHTMLHRElement, p: ptr VARIANT): HRESULT {.stdcall.}
+
   DispHTMLHRElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLHRElementVtbl
+
   DispHTMLHRElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLParaElement* {.pure.} = object
     lpVtbl*: ptr IHTMLParaElementVtbl
+
   IHTMLParaElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_align*: proc(self: ptr IHTMLParaElement, v: BSTR): HRESULT {.stdcall.}
     get_align*: proc(self: ptr IHTMLParaElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLParaElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLParaElementVtbl
+
   DispHTMLParaElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLElementCollection2* {.pure.} = object
     lpVtbl*: ptr IHTMLElementCollection2Vtbl
+
   IHTMLElementCollection2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    urns*: proc(self: ptr IHTMLElementCollection2, urn: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    urns*: proc(
+      self: ptr IHTMLElementCollection2, urn: VARIANT, pdisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLElementCollection3* {.pure.} = object
     lpVtbl*: ptr IHTMLElementCollection3Vtbl
+
   IHTMLElementCollection3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    namedItem*: proc(self: ptr IHTMLElementCollection3, name: BSTR, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    namedItem*: proc(
+      self: ptr IHTMLElementCollection3, name: BSTR, pdisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLElementCollection4* {.pure.} = object
     lpVtbl*: ptr IHTMLElementCollection4Vtbl
+
   IHTMLElementCollection4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLElementCollection4, p: ptr LONG): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLElementCollection4, index: LONG, pNode: ptr ptr IHTMLElement2): HRESULT {.stdcall.}
-    namedItem*: proc(self: ptr IHTMLElementCollection4, name: BSTR, pNode: ptr ptr IHTMLElement2): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLElementCollection4, p: ptr LONG): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLElementCollection4, index: LONG, pNode: ptr ptr IHTMLElement2
+    ): HRESULT {.stdcall.}
+    namedItem*: proc(
+      self: ptr IHTMLElementCollection4, name: BSTR, pNode: ptr ptr IHTMLElement2
+    ): HRESULT {.stdcall.}
+
   DispHTMLElementCollection* {.pure.} = object
     lpVtbl*: ptr DispHTMLElementCollectionVtbl
+
   DispHTMLElementCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLHeaderElement* {.pure.} = object
     lpVtbl*: ptr IHTMLHeaderElementVtbl
+
   IHTMLHeaderElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_align*: proc(self: ptr IHTMLHeaderElement, v: BSTR): HRESULT {.stdcall.}
     get_align*: proc(self: ptr IHTMLHeaderElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLHeaderElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLHeaderElementVtbl
+
   DispHTMLHeaderElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLSelectElementEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLSelectElementEvents2Vtbl
+
   HTMLSelectElementEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLSelectElementEvents* {.pure.} = object
     lpVtbl*: ptr HTMLSelectElementEventsVtbl
+
   HTMLSelectElementEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLSelectElementEx* {.pure.} = object
     lpVtbl*: ptr IHTMLSelectElementExVtbl
+
   IHTMLSelectElementExVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ShowDropdown*: proc(self: ptr IHTMLSelectElementEx, fShow: WINBOOL): HRESULT {.stdcall.}
-    SetSelectExFlags*: proc(self: ptr IHTMLSelectElementEx, lFlags: DWORD): HRESULT {.stdcall.}
-    GetSelectExFlags*: proc(self: ptr IHTMLSelectElementEx, pFlags: ptr DWORD): HRESULT {.stdcall.}
-    GetDropdownOpen*: proc(self: ptr IHTMLSelectElementEx, pfOpen: ptr WINBOOL): HRESULT {.stdcall.}
+    ShowDropdown*:
+      proc(self: ptr IHTMLSelectElementEx, fShow: WINBOOL): HRESULT {.stdcall.}
+    SetSelectExFlags*:
+      proc(self: ptr IHTMLSelectElementEx, lFlags: DWORD): HRESULT {.stdcall.}
+    GetSelectExFlags*:
+      proc(self: ptr IHTMLSelectElementEx, pFlags: ptr DWORD): HRESULT {.stdcall.}
+    GetDropdownOpen*:
+      proc(self: ptr IHTMLSelectElementEx, pfOpen: ptr WINBOOL): HRESULT {.stdcall.}
+
   IHTMLSelectElement* {.pure.} = object
     lpVtbl*: ptr IHTMLSelectElementVtbl
+
   IHTMLSelectElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_size*: proc(self: ptr IHTMLSelectElement, v: LONG): HRESULT {.stdcall.}
     get_size*: proc(self: ptr IHTMLSelectElement, p: ptr LONG): HRESULT {.stdcall.}
-    put_multiple*: proc(self: ptr IHTMLSelectElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_multiple*: proc(self: ptr IHTMLSelectElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_multiple*:
+      proc(self: ptr IHTMLSelectElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_multiple*:
+      proc(self: ptr IHTMLSelectElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_name*: proc(self: ptr IHTMLSelectElement, v: BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTMLSelectElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_options*: proc(self: ptr IHTMLSelectElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_options*:
+      proc(self: ptr IHTMLSelectElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     put_onchange*: proc(self: ptr IHTMLSelectElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onchange*: proc(self: ptr IHTMLSelectElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onchange*:
+      proc(self: ptr IHTMLSelectElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_selectedIndex*: proc(self: ptr IHTMLSelectElement, v: LONG): HRESULT {.stdcall.}
-    get_selectedIndex*: proc(self: ptr IHTMLSelectElement, p: ptr LONG): HRESULT {.stdcall.}
+    get_selectedIndex*:
+      proc(self: ptr IHTMLSelectElement, p: ptr LONG): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IHTMLSelectElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_value*: proc(self: ptr IHTMLSelectElement, v: BSTR): HRESULT {.stdcall.}
     get_value*: proc(self: ptr IHTMLSelectElement, p: ptr BSTR): HRESULT {.stdcall.}
-    put_disabled*: proc(self: ptr IHTMLSelectElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLSelectElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_form*: proc(self: ptr IHTMLSelectElement, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
-    add*: proc(self: ptr IHTMLSelectElement, element: ptr IHTMLElement, before: VARIANT): HRESULT {.stdcall.}
+    put_disabled*:
+      proc(self: ptr IHTMLSelectElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLSelectElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_form*: proc(self: ptr IHTMLSelectElement, p: ptr ptr IHTMLFormElement): HRESULT {.
+      stdcall
+    .}
+    add*: proc(
+      self: ptr IHTMLSelectElement, element: ptr IHTMLElement, before: VARIANT
+    ): HRESULT {.stdcall.}
     remove*: proc(self: ptr IHTMLSelectElement, index: LONG): HRESULT {.stdcall.}
     put_length*: proc(self: ptr IHTMLSelectElement, v: LONG): HRESULT {.stdcall.}
     get_length*: proc(self: ptr IHTMLSelectElement, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IHTMLSelectElement, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLSelectElement, name: VARIANT, index: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
-    tags*: proc(self: ptr IHTMLSelectElement, tagName: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_newEnum*:
+      proc(self: ptr IHTMLSelectElement, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLSelectElement,
+      name: VARIANT,
+      index: VARIANT,
+      pdisp: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
+    tags*: proc(
+      self: ptr IHTMLSelectElement, tagName: VARIANT, pdisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLSelectElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLSelectElement2Vtbl
+
   IHTMLSelectElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    urns*: proc(self: ptr IHTMLSelectElement2, urn: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    urns*: proc(
+      self: ptr IHTMLSelectElement2, urn: VARIANT, pdisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLSelectElement4* {.pure.} = object
     lpVtbl*: ptr IHTMLSelectElement4Vtbl
+
   IHTMLSelectElement4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    namedItem*: proc(self: ptr IHTMLSelectElement4, name: BSTR, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    namedItem*: proc(
+      self: ptr IHTMLSelectElement4, name: BSTR, pdisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLSelectElement5* {.pure.} = object
     lpVtbl*: ptr IHTMLSelectElement5Vtbl
+
   IHTMLSelectElement5Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    add*: proc(self: ptr IHTMLSelectElement5, pElem: ptr IHTMLOptionElement, pvarBefore: ptr VARIANT): HRESULT {.stdcall.}
+    add*: proc(
+      self: ptr IHTMLSelectElement5,
+      pElem: ptr IHTMLOptionElement,
+      pvarBefore: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+
   IHTMLSelectElement6* {.pure.} = object
     lpVtbl*: ptr IHTMLSelectElement6Vtbl
+
   IHTMLSelectElement6Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    add*: proc(self: ptr IHTMLSelectElement6, pElem: ptr IHTMLOptionElement, pvarBefore: ptr VARIANT): HRESULT {.stdcall.}
+    add*: proc(
+      self: ptr IHTMLSelectElement6,
+      pElem: ptr IHTMLOptionElement,
+      pvarBefore: ptr VARIANT,
+    ): HRESULT {.stdcall.}
     put_value*: proc(self: ptr IHTMLSelectElement6, v: BSTR): HRESULT {.stdcall.}
     get_value*: proc(self: ptr IHTMLSelectElement6, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLSelectElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLSelectElementVtbl
+
   DispHTMLSelectElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLWndSelectElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLWndSelectElementVtbl
+
   DispHTMLWndSelectElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLSelectionObject2* {.pure.} = object
     lpVtbl*: ptr IHTMLSelectionObject2Vtbl
+
   IHTMLSelectionObject2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    createRangeCollection*: proc(self: ptr IHTMLSelectionObject2, rangeCollection: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_typeDetail*: proc(self: ptr IHTMLSelectionObject2, p: ptr BSTR): HRESULT {.stdcall.}
+    createRangeCollection*: proc(
+      self: ptr IHTMLSelectionObject2, rangeCollection: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_typeDetail*:
+      proc(self: ptr IHTMLSelectionObject2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLOptionElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLOptionElement3Vtbl
+
   IHTMLOptionElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_label*: proc(self: ptr IHTMLOptionElement3, v: BSTR): HRESULT {.stdcall.}
     get_label*: proc(self: ptr IHTMLOptionElement3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLOptionElement4* {.pure.} = object
     lpVtbl*: ptr IHTMLOptionElement4Vtbl
+
   IHTMLOptionElement4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_value*: proc(self: ptr IHTMLOptionElement4, v: BSTR): HRESULT {.stdcall.}
     get_value*: proc(self: ptr IHTMLOptionElement4, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLOptionElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLOptionElementVtbl
+
   DispHTMLOptionElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLWndOptionElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLWndOptionElementVtbl
+
   DispHTMLWndOptionElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLButtonElementEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLButtonElementEvents2Vtbl
+
   HTMLButtonElementEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLButtonElementEvents* {.pure.} = object
     lpVtbl*: ptr HTMLButtonElementEventsVtbl
+
   HTMLButtonElementEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLInputTextElementEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLInputTextElementEvents2Vtbl
+
   HTMLInputTextElementEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLOptionButtonElementEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLOptionButtonElementEvents2Vtbl
+
   HTMLOptionButtonElementEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLInputFileElementEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLInputFileElementEvents2Vtbl
+
   HTMLInputFileElementEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLInputImageEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLInputImageEvents2Vtbl
+
   HTMLInputImageEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLInputTextElementEvents* {.pure.} = object
     lpVtbl*: ptr HTMLInputTextElementEventsVtbl
+
   HTMLInputTextElementEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLOptionButtonElementEvents* {.pure.} = object
     lpVtbl*: ptr HTMLOptionButtonElementEventsVtbl
+
   HTMLOptionButtonElementEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLInputFileElementEvents* {.pure.} = object
     lpVtbl*: ptr HTMLInputFileElementEventsVtbl
+
   HTMLInputFileElementEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLInputImageEvents* {.pure.} = object
     lpVtbl*: ptr HTMLInputImageEventsVtbl
+
   HTMLInputImageEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLInputElement* {.pure.} = object
     lpVtbl*: ptr IHTMLInputElementVtbl
+
   IHTMLInputElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_type*: proc(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.stdcall.}
@@ -7752,30 +10567,48 @@
     put_name*: proc(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_status*: proc(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_status*: proc(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_disabled*: proc(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_form*: proc(self: ptr IHTMLInputElement, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
+    get_status*:
+      proc(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_disabled*:
+      proc(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_form*: proc(self: ptr IHTMLInputElement, p: ptr ptr IHTMLFormElement): HRESULT {.
+      stdcall
+    .}
     put_size*: proc(self: ptr IHTMLInputElement, v: LONG): HRESULT {.stdcall.}
     get_size*: proc(self: ptr IHTMLInputElement, p: ptr LONG): HRESULT {.stdcall.}
     put_maxLength*: proc(self: ptr IHTMLInputElement, v: LONG): HRESULT {.stdcall.}
     get_maxLength*: proc(self: ptr IHTMLInputElement, p: ptr LONG): HRESULT {.stdcall.}
     select*: proc(self: ptr IHTMLInputElement): HRESULT {.stdcall.}
     put_onchange*: proc(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onchange*: proc(self: ptr IHTMLInputElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onchange*:
+      proc(self: ptr IHTMLInputElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onselect*: proc(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onselect*: proc(self: ptr IHTMLInputElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onselect*:
+      proc(self: ptr IHTMLInputElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_defaultValue*: proc(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.stdcall.}
-    get_defaultValue*: proc(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.stdcall.}
-    put_readOnly*: proc(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_readOnly*: proc(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    createTextRange*: proc(self: ptr IHTMLInputElement, range: ptr ptr IHTMLTxtRange): HRESULT {.stdcall.}
-    put_indeterminate*: proc(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_indeterminate*: proc(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_defaultChecked*: proc(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_defaultChecked*: proc(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_checked*: proc(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_checked*: proc(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_defaultValue*:
+      proc(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.stdcall.}
+    put_readOnly*:
+      proc(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_readOnly*:
+      proc(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    createTextRange*: proc(
+      self: ptr IHTMLInputElement, range: ptr ptr IHTMLTxtRange
+    ): HRESULT {.stdcall.}
+    put_indeterminate*:
+      proc(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_indeterminate*:
+      proc(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_defaultChecked*:
+      proc(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_defaultChecked*:
+      proc(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_checked*:
+      proc(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_checked*:
+      proc(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_border*: proc(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.stdcall.}
     get_border*: proc(self: ptr IHTMLInputElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_vspace*: proc(self: ptr IHTMLInputElement, v: LONG): HRESULT {.stdcall.}
@@ -7793,7 +10626,8 @@
     put_dynsrc*: proc(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.stdcall.}
     get_dynsrc*: proc(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_readyState*: proc(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_complete*: proc(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_complete*:
+      proc(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_loop*: proc(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.stdcall.}
     get_loop*: proc(self: ptr IHTMLInputElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_align*: proc(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.stdcall.}
@@ -7810,15 +10644,19 @@
     get_height*: proc(self: ptr IHTMLInputElement, p: ptr LONG): HRESULT {.stdcall.}
     put_start*: proc(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.stdcall.}
     get_start*: proc(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLInputElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLInputElement2Vtbl
+
   IHTMLInputElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_accept*: proc(self: ptr IHTMLInputElement2, v: BSTR): HRESULT {.stdcall.}
     get_accept*: proc(self: ptr IHTMLInputElement2, p: ptr BSTR): HRESULT {.stdcall.}
     put_useMap*: proc(self: ptr IHTMLInputElement2, v: BSTR): HRESULT {.stdcall.}
     get_useMap*: proc(self: ptr IHTMLInputElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLInputElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLInputElement3Vtbl
+
   IHTMLInputElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_src*: proc(self: ptr IHTMLInputElement3, v: BSTR): HRESULT {.stdcall.}
     get_src*: proc(self: ptr IHTMLInputElement3, p: ptr BSTR): HRESULT {.stdcall.}
@@ -7828,36 +10666,60 @@
     get_vrml*: proc(self: ptr IHTMLInputElement3, p: ptr BSTR): HRESULT {.stdcall.}
     put_dynsrc*: proc(self: ptr IHTMLInputElement3, v: BSTR): HRESULT {.stdcall.}
     get_dynsrc*: proc(self: ptr IHTMLInputElement3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLInputButtonElement* {.pure.} = object
     lpVtbl*: ptr IHTMLInputButtonElementVtbl
+
   IHTMLInputButtonElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_type*: proc(self: ptr IHTMLInputButtonElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_value*: proc(self: ptr IHTMLInputButtonElement, v: BSTR): HRESULT {.stdcall.}
-    get_value*: proc(self: ptr IHTMLInputButtonElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_value*:
+      proc(self: ptr IHTMLInputButtonElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_name*: proc(self: ptr IHTMLInputButtonElement, v: BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTMLInputButtonElement, p: ptr BSTR): HRESULT {.stdcall.}
-    put_status*: proc(self: ptr IHTMLInputButtonElement, v: VARIANT): HRESULT {.stdcall.}
-    get_status*: proc(self: ptr IHTMLInputButtonElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_disabled*: proc(self: ptr IHTMLInputButtonElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLInputButtonElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_form*: proc(self: ptr IHTMLInputButtonElement, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
-    createTextRange*: proc(self: ptr IHTMLInputButtonElement, range: ptr ptr IHTMLTxtRange): HRESULT {.stdcall.}
+    put_status*:
+      proc(self: ptr IHTMLInputButtonElement, v: VARIANT): HRESULT {.stdcall.}
+    get_status*:
+      proc(self: ptr IHTMLInputButtonElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_disabled*:
+      proc(self: ptr IHTMLInputButtonElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLInputButtonElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_form*: proc(
+      self: ptr IHTMLInputButtonElement, p: ptr ptr IHTMLFormElement
+    ): HRESULT {.stdcall.}
+    createTextRange*: proc(
+      self: ptr IHTMLInputButtonElement, range: ptr ptr IHTMLTxtRange
+    ): HRESULT {.stdcall.}
+
   IHTMLInputHiddenElement* {.pure.} = object
     lpVtbl*: ptr IHTMLInputHiddenElementVtbl
+
   IHTMLInputHiddenElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_type*: proc(self: ptr IHTMLInputHiddenElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_value*: proc(self: ptr IHTMLInputHiddenElement, v: BSTR): HRESULT {.stdcall.}
-    get_value*: proc(self: ptr IHTMLInputHiddenElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_value*:
+      proc(self: ptr IHTMLInputHiddenElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_name*: proc(self: ptr IHTMLInputHiddenElement, v: BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTMLInputHiddenElement, p: ptr BSTR): HRESULT {.stdcall.}
-    put_status*: proc(self: ptr IHTMLInputHiddenElement, v: VARIANT): HRESULT {.stdcall.}
-    get_status*: proc(self: ptr IHTMLInputHiddenElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_disabled*: proc(self: ptr IHTMLInputHiddenElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLInputHiddenElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_form*: proc(self: ptr IHTMLInputHiddenElement, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
-    createTextRange*: proc(self: ptr IHTMLInputHiddenElement, range: ptr ptr IHTMLTxtRange): HRESULT {.stdcall.}
+    put_status*:
+      proc(self: ptr IHTMLInputHiddenElement, v: VARIANT): HRESULT {.stdcall.}
+    get_status*:
+      proc(self: ptr IHTMLInputHiddenElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_disabled*:
+      proc(self: ptr IHTMLInputHiddenElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLInputHiddenElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_form*: proc(
+      self: ptr IHTMLInputHiddenElement, p: ptr ptr IHTMLFormElement
+    ): HRESULT {.stdcall.}
+    createTextRange*: proc(
+      self: ptr IHTMLInputHiddenElement, range: ptr ptr IHTMLTxtRange
+    ): HRESULT {.stdcall.}
+
   IHTMLInputTextElement* {.pure.} = object
     lpVtbl*: ptr IHTMLInputTextElementVtbl
+
   IHTMLInputTextElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_type*: proc(self: ptr IHTMLInputTextElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_value*: proc(self: ptr IHTMLInputTextElement, v: BSTR): HRESULT {.stdcall.}
@@ -7865,81 +10727,139 @@
     put_name*: proc(self: ptr IHTMLInputTextElement, v: BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTMLInputTextElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_status*: proc(self: ptr IHTMLInputTextElement, v: VARIANT): HRESULT {.stdcall.}
-    get_status*: proc(self: ptr IHTMLInputTextElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_disabled*: proc(self: ptr IHTMLInputTextElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLInputTextElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_form*: proc(self: ptr IHTMLInputTextElement, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
-    put_defaultValue*: proc(self: ptr IHTMLInputTextElement, v: BSTR): HRESULT {.stdcall.}
-    get_defaultValue*: proc(self: ptr IHTMLInputTextElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_status*:
+      proc(self: ptr IHTMLInputTextElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_disabled*:
+      proc(self: ptr IHTMLInputTextElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLInputTextElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_form*: proc(
+      self: ptr IHTMLInputTextElement, p: ptr ptr IHTMLFormElement
+    ): HRESULT {.stdcall.}
+    put_defaultValue*:
+      proc(self: ptr IHTMLInputTextElement, v: BSTR): HRESULT {.stdcall.}
+    get_defaultValue*:
+      proc(self: ptr IHTMLInputTextElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_size*: proc(self: ptr IHTMLInputTextElement, v: LONG): HRESULT {.stdcall.}
     get_size*: proc(self: ptr IHTMLInputTextElement, p: ptr LONG): HRESULT {.stdcall.}
     put_maxLength*: proc(self: ptr IHTMLInputTextElement, v: LONG): HRESULT {.stdcall.}
-    get_maxLength*: proc(self: ptr IHTMLInputTextElement, p: ptr LONG): HRESULT {.stdcall.}
+    get_maxLength*:
+      proc(self: ptr IHTMLInputTextElement, p: ptr LONG): HRESULT {.stdcall.}
     select*: proc(self: ptr IHTMLInputTextElement): HRESULT {.stdcall.}
-    put_onchange*: proc(self: ptr IHTMLInputTextElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onchange*: proc(self: ptr IHTMLInputTextElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onselect*: proc(self: ptr IHTMLInputTextElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onselect*: proc(self: ptr IHTMLInputTextElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_readOnly*: proc(self: ptr IHTMLInputTextElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_readOnly*: proc(self: ptr IHTMLInputTextElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    createTextRange*: proc(self: ptr IHTMLInputTextElement, range: ptr ptr IHTMLTxtRange): HRESULT {.stdcall.}
+    put_onchange*:
+      proc(self: ptr IHTMLInputTextElement, v: VARIANT): HRESULT {.stdcall.}
+    get_onchange*:
+      proc(self: ptr IHTMLInputTextElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onselect*:
+      proc(self: ptr IHTMLInputTextElement, v: VARIANT): HRESULT {.stdcall.}
+    get_onselect*:
+      proc(self: ptr IHTMLInputTextElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_readOnly*:
+      proc(self: ptr IHTMLInputTextElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_readOnly*:
+      proc(self: ptr IHTMLInputTextElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    createTextRange*: proc(
+      self: ptr IHTMLInputTextElement, range: ptr ptr IHTMLTxtRange
+    ): HRESULT {.stdcall.}
+
   IHTMLInputTextElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLInputTextElement2Vtbl
+
   IHTMLInputTextElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_selectionStart*: proc(self: ptr IHTMLInputTextElement2, v: LONG): HRESULT {.stdcall.}
-    get_selectionStart*: proc(self: ptr IHTMLInputTextElement2, p: ptr LONG): HRESULT {.stdcall.}
-    put_selectionEnd*: proc(self: ptr IHTMLInputTextElement2, v: LONG): HRESULT {.stdcall.}
-    get_selectionEnd*: proc(self: ptr IHTMLInputTextElement2, p: ptr LONG): HRESULT {.stdcall.}
-    setSelectionRange*: proc(self: ptr IHTMLInputTextElement2, start: LONG, `end`: LONG): HRESULT {.stdcall.}
+    put_selectionStart*:
+      proc(self: ptr IHTMLInputTextElement2, v: LONG): HRESULT {.stdcall.}
+    get_selectionStart*:
+      proc(self: ptr IHTMLInputTextElement2, p: ptr LONG): HRESULT {.stdcall.}
+    put_selectionEnd*:
+      proc(self: ptr IHTMLInputTextElement2, v: LONG): HRESULT {.stdcall.}
+    get_selectionEnd*:
+      proc(self: ptr IHTMLInputTextElement2, p: ptr LONG): HRESULT {.stdcall.}
+    setSelectionRange*: proc(
+      self: ptr IHTMLInputTextElement2, start: LONG, `end`: LONG
+    ): HRESULT {.stdcall.}
+
   IHTMLInputFileElement* {.pure.} = object
     lpVtbl*: ptr IHTMLInputFileElementVtbl
+
   IHTMLInputFileElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_type*: proc(self: ptr IHTMLInputFileElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_name*: proc(self: ptr IHTMLInputFileElement, v: BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTMLInputFileElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_status*: proc(self: ptr IHTMLInputFileElement, v: VARIANT): HRESULT {.stdcall.}
-    get_status*: proc(self: ptr IHTMLInputFileElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_disabled*: proc(self: ptr IHTMLInputFileElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLInputFileElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_form*: proc(self: ptr IHTMLInputFileElement, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
+    get_status*:
+      proc(self: ptr IHTMLInputFileElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_disabled*:
+      proc(self: ptr IHTMLInputFileElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLInputFileElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_form*: proc(
+      self: ptr IHTMLInputFileElement, p: ptr ptr IHTMLFormElement
+    ): HRESULT {.stdcall.}
     put_size*: proc(self: ptr IHTMLInputFileElement, v: LONG): HRESULT {.stdcall.}
     get_size*: proc(self: ptr IHTMLInputFileElement, p: ptr LONG): HRESULT {.stdcall.}
     put_maxLength*: proc(self: ptr IHTMLInputFileElement, v: LONG): HRESULT {.stdcall.}
-    get_maxLength*: proc(self: ptr IHTMLInputFileElement, p: ptr LONG): HRESULT {.stdcall.}
+    get_maxLength*:
+      proc(self: ptr IHTMLInputFileElement, p: ptr LONG): HRESULT {.stdcall.}
     select*: proc(self: ptr IHTMLInputFileElement): HRESULT {.stdcall.}
-    put_onchange*: proc(self: ptr IHTMLInputFileElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onchange*: proc(self: ptr IHTMLInputFileElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onselect*: proc(self: ptr IHTMLInputFileElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onselect*: proc(self: ptr IHTMLInputFileElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onchange*:
+      proc(self: ptr IHTMLInputFileElement, v: VARIANT): HRESULT {.stdcall.}
+    get_onchange*:
+      proc(self: ptr IHTMLInputFileElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onselect*:
+      proc(self: ptr IHTMLInputFileElement, v: VARIANT): HRESULT {.stdcall.}
+    get_onselect*:
+      proc(self: ptr IHTMLInputFileElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_value*: proc(self: ptr IHTMLInputFileElement, v: BSTR): HRESULT {.stdcall.}
     get_value*: proc(self: ptr IHTMLInputFileElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLOptionButtonElement* {.pure.} = object
     lpVtbl*: ptr IHTMLOptionButtonElementVtbl
+
   IHTMLOptionButtonElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_value*: proc(self: ptr IHTMLOptionButtonElement, v: BSTR): HRESULT {.stdcall.}
-    get_value*: proc(self: ptr IHTMLOptionButtonElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_type*: proc(self: ptr IHTMLOptionButtonElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_value*:
+      proc(self: ptr IHTMLOptionButtonElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_type*:
+      proc(self: ptr IHTMLOptionButtonElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_name*: proc(self: ptr IHTMLOptionButtonElement, v: BSTR): HRESULT {.stdcall.}
-    get_name*: proc(self: ptr IHTMLOptionButtonElement, p: ptr BSTR): HRESULT {.stdcall.}
-    put_checked*: proc(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_checked*: proc(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_defaultChecked*: proc(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_defaultChecked*: proc(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_onchange*: proc(self: ptr IHTMLOptionButtonElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onchange*: proc(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_disabled*: proc(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_status*: proc(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_status*: proc(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_indeterminate*: proc(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_indeterminate*: proc(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_form*: proc(self: ptr IHTMLOptionButtonElement, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
+    get_name*:
+      proc(self: ptr IHTMLOptionButtonElement, p: ptr BSTR): HRESULT {.stdcall.}
+    put_checked*:
+      proc(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_checked*:
+      proc(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_defaultChecked*:
+      proc(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_defaultChecked*:
+      proc(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_onchange*:
+      proc(self: ptr IHTMLOptionButtonElement, v: VARIANT): HRESULT {.stdcall.}
+    get_onchange*:
+      proc(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_disabled*:
+      proc(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_status*:
+      proc(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_status*:
+      proc(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_indeterminate*:
+      proc(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_indeterminate*:
+      proc(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_form*: proc(
+      self: ptr IHTMLOptionButtonElement, p: ptr ptr IHTMLFormElement
+    ): HRESULT {.stdcall.}
+
   IHTMLInputImage* {.pure.} = object
     lpVtbl*: ptr IHTMLInputImageVtbl
+
   IHTMLInputImageVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_type*: proc(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.stdcall.}
     put_disabled*: proc(self: ptr IHTMLInputImage, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLInputImage, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLInputImage, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_border*: proc(self: ptr IHTMLInputImage, v: VARIANT): HRESULT {.stdcall.}
     get_border*: proc(self: ptr IHTMLInputImage, p: ptr VARIANT): HRESULT {.stdcall.}
     put_vspace*: proc(self: ptr IHTMLInputImage, v: LONG): HRESULT {.stdcall.}
@@ -7957,7 +10877,8 @@
     put_dynsrc*: proc(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.stdcall.}
     get_dynsrc*: proc(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.stdcall.}
     get_readyState*: proc(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.stdcall.}
-    get_complete*: proc(self: ptr IHTMLInputImage, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_complete*:
+      proc(self: ptr IHTMLInputImage, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_loop*: proc(self: ptr IHTMLInputImage, v: VARIANT): HRESULT {.stdcall.}
     get_loop*: proc(self: ptr IHTMLInputImage, p: ptr VARIANT): HRESULT {.stdcall.}
     put_align*: proc(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.stdcall.}
@@ -7976,11 +10897,15 @@
     get_height*: proc(self: ptr IHTMLInputImage, p: ptr LONG): HRESULT {.stdcall.}
     put_start*: proc(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.stdcall.}
     get_start*: proc(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLInputRangeElement* {.pure.} = object
     lpVtbl*: ptr IHTMLInputRangeElementVtbl
+
   IHTMLInputRangeElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_disabled*: proc(self: ptr IHTMLInputRangeElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLInputRangeElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_disabled*:
+      proc(self: ptr IHTMLInputRangeElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLInputRangeElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IHTMLInputRangeElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_alt*: proc(self: ptr IHTMLInputRangeElement, v: BSTR): HRESULT {.stdcall.}
     get_alt*: proc(self: ptr IHTMLInputRangeElement, p: ptr BSTR): HRESULT {.stdcall.}
@@ -7994,15 +10919,20 @@
     get_max*: proc(self: ptr IHTMLInputRangeElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_step*: proc(self: ptr IHTMLInputRangeElement, v: BSTR): HRESULT {.stdcall.}
     get_step*: proc(self: ptr IHTMLInputRangeElement, p: ptr BSTR): HRESULT {.stdcall.}
-    put_valueAsNumber*: proc(self: ptr IHTMLInputRangeElement, v: float64): HRESULT {.stdcall.}
-    get_valueAsNumber*: proc(self: ptr IHTMLInputRangeElement, p: ptr float64): HRESULT {.stdcall.}
+    put_valueAsNumber*:
+      proc(self: ptr IHTMLInputRangeElement, v: float64): HRESULT {.stdcall.}
+    get_valueAsNumber*:
+      proc(self: ptr IHTMLInputRangeElement, p: ptr float64): HRESULT {.stdcall.}
     stepUp*: proc(self: ptr IHTMLInputRangeElement, n: LONG): HRESULT {.stdcall.}
     stepDown*: proc(self: ptr IHTMLInputRangeElement, n: LONG): HRESULT {.stdcall.}
+
   DispHTMLInputElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLInputElementVtbl
+
   DispHTMLInputElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLTextAreaElement* {.pure.} = object
     lpVtbl*: ptr IHTMLTextAreaElementVtbl
+
   IHTMLTextAreaElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_type*: proc(self: ptr IHTMLTextAreaElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_value*: proc(self: ptr IHTMLTextAreaElement, v: BSTR): HRESULT {.stdcall.}
@@ -8010,42 +10940,67 @@
     put_name*: proc(self: ptr IHTMLTextAreaElement, v: BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTMLTextAreaElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_status*: proc(self: ptr IHTMLTextAreaElement, v: VARIANT): HRESULT {.stdcall.}
-    get_status*: proc(self: ptr IHTMLTextAreaElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_disabled*: proc(self: ptr IHTMLTextAreaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLTextAreaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_form*: proc(self: ptr IHTMLTextAreaElement, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
-    put_defaultValue*: proc(self: ptr IHTMLTextAreaElement, v: BSTR): HRESULT {.stdcall.}
-    get_defaultValue*: proc(self: ptr IHTMLTextAreaElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_status*:
+      proc(self: ptr IHTMLTextAreaElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_disabled*:
+      proc(self: ptr IHTMLTextAreaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLTextAreaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_form*: proc(
+      self: ptr IHTMLTextAreaElement, p: ptr ptr IHTMLFormElement
+    ): HRESULT {.stdcall.}
+    put_defaultValue*:
+      proc(self: ptr IHTMLTextAreaElement, v: BSTR): HRESULT {.stdcall.}
+    get_defaultValue*:
+      proc(self: ptr IHTMLTextAreaElement, p: ptr BSTR): HRESULT {.stdcall.}
     select*: proc(self: ptr IHTMLTextAreaElement): HRESULT {.stdcall.}
     put_onchange*: proc(self: ptr IHTMLTextAreaElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onchange*: proc(self: ptr IHTMLTextAreaElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onchange*:
+      proc(self: ptr IHTMLTextAreaElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onselect*: proc(self: ptr IHTMLTextAreaElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onselect*: proc(self: ptr IHTMLTextAreaElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_readOnly*: proc(self: ptr IHTMLTextAreaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_readOnly*: proc(self: ptr IHTMLTextAreaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_onselect*:
+      proc(self: ptr IHTMLTextAreaElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_readOnly*:
+      proc(self: ptr IHTMLTextAreaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_readOnly*:
+      proc(self: ptr IHTMLTextAreaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_rows*: proc(self: ptr IHTMLTextAreaElement, v: LONG): HRESULT {.stdcall.}
     get_rows*: proc(self: ptr IHTMLTextAreaElement, p: ptr LONG): HRESULT {.stdcall.}
     put_cols*: proc(self: ptr IHTMLTextAreaElement, v: LONG): HRESULT {.stdcall.}
     get_cols*: proc(self: ptr IHTMLTextAreaElement, p: ptr LONG): HRESULT {.stdcall.}
     put_wrap*: proc(self: ptr IHTMLTextAreaElement, v: BSTR): HRESULT {.stdcall.}
     get_wrap*: proc(self: ptr IHTMLTextAreaElement, p: ptr BSTR): HRESULT {.stdcall.}
-    createTextRange*: proc(self: ptr IHTMLTextAreaElement, range: ptr ptr IHTMLTxtRange): HRESULT {.stdcall.}
+    createTextRange*: proc(
+      self: ptr IHTMLTextAreaElement, range: ptr ptr IHTMLTxtRange
+    ): HRESULT {.stdcall.}
+
   IHTMLTextAreaElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLTextAreaElement2Vtbl
+
   IHTMLTextAreaElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_selectionStart*: proc(self: ptr IHTMLTextAreaElement2, v: LONG): HRESULT {.stdcall.}
-    get_selectionStart*: proc(self: ptr IHTMLTextAreaElement2, p: ptr LONG): HRESULT {.stdcall.}
-    put_selectionEnd*: proc(self: ptr IHTMLTextAreaElement2, v: LONG): HRESULT {.stdcall.}
-    get_selectionEnd*: proc(self: ptr IHTMLTextAreaElement2, p: ptr LONG): HRESULT {.stdcall.}
-    setSelectionRange*: proc(self: ptr IHTMLTextAreaElement2, start: LONG, `end`: LONG): HRESULT {.stdcall.}
+    put_selectionStart*:
+      proc(self: ptr IHTMLTextAreaElement2, v: LONG): HRESULT {.stdcall.}
+    get_selectionStart*:
+      proc(self: ptr IHTMLTextAreaElement2, p: ptr LONG): HRESULT {.stdcall.}
+    put_selectionEnd*:
+      proc(self: ptr IHTMLTextAreaElement2, v: LONG): HRESULT {.stdcall.}
+    get_selectionEnd*:
+      proc(self: ptr IHTMLTextAreaElement2, p: ptr LONG): HRESULT {.stdcall.}
+    setSelectionRange*: proc(
+      self: ptr IHTMLTextAreaElement2, start: LONG, `end`: LONG
+    ): HRESULT {.stdcall.}
+
   DispHTMLTextAreaElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLTextAreaElementVtbl
+
   DispHTMLTextAreaElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLRichtextElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLRichtextElementVtbl
+
   DispHTMLRichtextElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLButtonElement* {.pure.} = object
     lpVtbl*: ptr IHTMLButtonElementVtbl
+
   IHTMLButtonElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_type*: proc(self: ptr IHTMLButtonElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_value*: proc(self: ptr IHTMLButtonElement, v: BSTR): HRESULT {.stdcall.}
@@ -8054,37 +11009,54 @@
     get_name*: proc(self: ptr IHTMLButtonElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_status*: proc(self: ptr IHTMLButtonElement, v: VARIANT): HRESULT {.stdcall.}
     get_status*: proc(self: ptr IHTMLButtonElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_disabled*: proc(self: ptr IHTMLButtonElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLButtonElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_form*: proc(self: ptr IHTMLButtonElement, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
-    createTextRange*: proc(self: ptr IHTMLButtonElement, range: ptr ptr IHTMLTxtRange): HRESULT {.stdcall.}
+    put_disabled*:
+      proc(self: ptr IHTMLButtonElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLButtonElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_form*: proc(self: ptr IHTMLButtonElement, p: ptr ptr IHTMLFormElement): HRESULT {.
+      stdcall
+    .}
+    createTextRange*: proc(
+      self: ptr IHTMLButtonElement, range: ptr ptr IHTMLTxtRange
+    ): HRESULT {.stdcall.}
+
   IHTMLButtonElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLButtonElement2Vtbl
+
   IHTMLButtonElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_type*: proc(self: ptr IHTMLButtonElement2, v: BSTR): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IHTMLButtonElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLButtonElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLButtonElementVtbl
+
   DispHTMLButtonElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLMarqueeElementEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLMarqueeElementEvents2Vtbl
+
   HTMLMarqueeElementEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLMarqueeElementEvents* {.pure.} = object
     lpVtbl*: ptr HTMLMarqueeElementEventsVtbl
+
   HTMLMarqueeElementEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLMarqueeElement* {.pure.} = object
     lpVtbl*: ptr IHTMLMarqueeElementVtbl
+
   IHTMLMarqueeElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_bgColor*: proc(self: ptr IHTMLMarqueeElement, v: VARIANT): HRESULT {.stdcall.}
-    get_bgColor*: proc(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_bgColor*:
+      proc(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_scrollDelay*: proc(self: ptr IHTMLMarqueeElement, v: LONG): HRESULT {.stdcall.}
-    get_scrollDelay*: proc(self: ptr IHTMLMarqueeElement, p: ptr LONG): HRESULT {.stdcall.}
+    get_scrollDelay*:
+      proc(self: ptr IHTMLMarqueeElement, p: ptr LONG): HRESULT {.stdcall.}
     put_direction*: proc(self: ptr IHTMLMarqueeElement, v: BSTR): HRESULT {.stdcall.}
-    get_direction*: proc(self: ptr IHTMLMarqueeElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_direction*:
+      proc(self: ptr IHTMLMarqueeElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_behavior*: proc(self: ptr IHTMLMarqueeElement, v: BSTR): HRESULT {.stdcall.}
     get_behavior*: proc(self: ptr IHTMLMarqueeElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_scrollAmount*: proc(self: ptr IHTMLMarqueeElement, v: LONG): HRESULT {.stdcall.}
-    get_scrollAmount*: proc(self: ptr IHTMLMarqueeElement, p: ptr LONG): HRESULT {.stdcall.}
+    get_scrollAmount*:
+      proc(self: ptr IHTMLMarqueeElement, p: ptr LONG): HRESULT {.stdcall.}
     put_loop*: proc(self: ptr IHTMLMarqueeElement, v: LONG): HRESULT {.stdcall.}
     get_loop*: proc(self: ptr IHTMLMarqueeElement, p: ptr LONG): HRESULT {.stdcall.}
     put_vspace*: proc(self: ptr IHTMLMarqueeElement, v: LONG): HRESULT {.stdcall.}
@@ -8092,44 +11064,61 @@
     put_hspace*: proc(self: ptr IHTMLMarqueeElement, v: LONG): HRESULT {.stdcall.}
     get_hspace*: proc(self: ptr IHTMLMarqueeElement, p: ptr LONG): HRESULT {.stdcall.}
     put_onfinish*: proc(self: ptr IHTMLMarqueeElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onfinish*: proc(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onfinish*:
+      proc(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onstart*: proc(self: ptr IHTMLMarqueeElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onstart*: proc(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onstart*:
+      proc(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onbounce*: proc(self: ptr IHTMLMarqueeElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onbounce*: proc(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onbounce*:
+      proc(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_width*: proc(self: ptr IHTMLMarqueeElement, v: VARIANT): HRESULT {.stdcall.}
     get_width*: proc(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_height*: proc(self: ptr IHTMLMarqueeElement, v: VARIANT): HRESULT {.stdcall.}
-    get_height*: proc(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_trueSpeed*: proc(self: ptr IHTMLMarqueeElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_trueSpeed*: proc(self: ptr IHTMLMarqueeElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_height*:
+      proc(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_trueSpeed*:
+      proc(self: ptr IHTMLMarqueeElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_trueSpeed*:
+      proc(self: ptr IHTMLMarqueeElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     start*: proc(self: ptr IHTMLMarqueeElement): HRESULT {.stdcall.}
     stop*: proc(self: ptr IHTMLMarqueeElement): HRESULT {.stdcall.}
+
   DispHTMLMarqueeElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLMarqueeElementVtbl
+
   DispHTMLMarqueeElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLHtmlElement* {.pure.} = object
     lpVtbl*: ptr IHTMLHtmlElementVtbl
+
   IHTMLHtmlElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_version*: proc(self: ptr IHTMLHtmlElement, v: BSTR): HRESULT {.stdcall.}
     get_version*: proc(self: ptr IHTMLHtmlElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLHeadElement* {.pure.} = object
     lpVtbl*: ptr IHTMLHeadElementVtbl
+
   IHTMLHeadElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_profile*: proc(self: ptr IHTMLHeadElement, v: BSTR): HRESULT {.stdcall.}
     get_profile*: proc(self: ptr IHTMLHeadElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLHeadElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLHeadElement2Vtbl
+
   IHTMLHeadElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_profile*: proc(self: ptr IHTMLHeadElement2, v: BSTR): HRESULT {.stdcall.}
     get_profile*: proc(self: ptr IHTMLHeadElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLTitleElement* {.pure.} = object
     lpVtbl*: ptr IHTMLTitleElementVtbl
+
   IHTMLTitleElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_text*: proc(self: ptr IHTMLTitleElement, v: BSTR): HRESULT {.stdcall.}
     get_text*: proc(self: ptr IHTMLTitleElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLMetaElement* {.pure.} = object
     lpVtbl*: ptr IHTMLMetaElementVtbl
+
   IHTMLMetaElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_httpEquiv*: proc(self: ptr IHTMLMetaElement, v: BSTR): HRESULT {.stdcall.}
     get_httpEquiv*: proc(self: ptr IHTMLMetaElement, p: ptr BSTR): HRESULT {.stdcall.}
@@ -8141,157 +11130,264 @@
     get_url*: proc(self: ptr IHTMLMetaElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_charset*: proc(self: ptr IHTMLMetaElement, v: BSTR): HRESULT {.stdcall.}
     get_charset*: proc(self: ptr IHTMLMetaElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLMetaElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLMetaElement2Vtbl
+
   IHTMLMetaElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_scheme*: proc(self: ptr IHTMLMetaElement2, v: BSTR): HRESULT {.stdcall.}
     get_scheme*: proc(self: ptr IHTMLMetaElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLMetaElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLMetaElement3Vtbl
+
   IHTMLMetaElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_url*: proc(self: ptr IHTMLMetaElement3, v: BSTR): HRESULT {.stdcall.}
     get_url*: proc(self: ptr IHTMLMetaElement3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLBaseElement* {.pure.} = object
     lpVtbl*: ptr IHTMLBaseElementVtbl
+
   IHTMLBaseElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_href*: proc(self: ptr IHTMLBaseElement, v: BSTR): HRESULT {.stdcall.}
     get_href*: proc(self: ptr IHTMLBaseElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_target*: proc(self: ptr IHTMLBaseElement, v: BSTR): HRESULT {.stdcall.}
     get_target*: proc(self: ptr IHTMLBaseElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLBaseElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLBaseElement2Vtbl
+
   IHTMLBaseElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_href*: proc(self: ptr IHTMLBaseElement2, v: BSTR): HRESULT {.stdcall.}
     get_href*: proc(self: ptr IHTMLBaseElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLIsIndexElement* {.pure.} = object
     lpVtbl*: ptr IHTMLIsIndexElementVtbl
+
   IHTMLIsIndexElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_prompt*: proc(self: ptr IHTMLIsIndexElement, v: BSTR): HRESULT {.stdcall.}
     get_prompt*: proc(self: ptr IHTMLIsIndexElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_action*: proc(self: ptr IHTMLIsIndexElement, v: BSTR): HRESULT {.stdcall.}
     get_action*: proc(self: ptr IHTMLIsIndexElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLIsIndexElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLIsIndexElement2Vtbl
+
   IHTMLIsIndexElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_form*: proc(self: ptr IHTMLIsIndexElement2, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
+    get_form*: proc(
+      self: ptr IHTMLIsIndexElement2, p: ptr ptr IHTMLFormElement
+    ): HRESULT {.stdcall.}
+
   IHTMLNextIdElement* {.pure.} = object
     lpVtbl*: ptr IHTMLNextIdElementVtbl
+
   IHTMLNextIdElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_n*: proc(self: ptr IHTMLNextIdElement, v: BSTR): HRESULT {.stdcall.}
     get_n*: proc(self: ptr IHTMLNextIdElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLHtmlElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLHtmlElementVtbl
+
   DispHTMLHtmlElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLHeadElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLHeadElementVtbl
+
   DispHTMLHeadElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLTitleElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLTitleElementVtbl
+
   DispHTMLTitleElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLMetaElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLMetaElementVtbl
+
   DispHTMLMetaElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLBaseElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLBaseElementVtbl
+
   DispHTMLBaseElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLIsIndexElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLIsIndexElementVtbl
+
   DispHTMLIsIndexElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLNextIdElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLNextIdElementVtbl
+
   DispHTMLNextIdElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLBaseFontElement* {.pure.} = object
     lpVtbl*: ptr IHTMLBaseFontElementVtbl
+
   IHTMLBaseFontElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_color*: proc(self: ptr IHTMLBaseFontElement, v: VARIANT): HRESULT {.stdcall.}
-    get_color*: proc(self: ptr IHTMLBaseFontElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_color*:
+      proc(self: ptr IHTMLBaseFontElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_face*: proc(self: ptr IHTMLBaseFontElement, v: BSTR): HRESULT {.stdcall.}
     get_face*: proc(self: ptr IHTMLBaseFontElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_size*: proc(self: ptr IHTMLBaseFontElement, v: LONG): HRESULT {.stdcall.}
     get_size*: proc(self: ptr IHTMLBaseFontElement, p: ptr LONG): HRESULT {.stdcall.}
+
   DispHTMLBaseFontElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLBaseFontElementVtbl
+
   DispHTMLBaseFontElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLUnknownElement* {.pure.} = object
     lpVtbl*: ptr IHTMLUnknownElementVtbl
+
   IHTMLUnknownElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLUnknownElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLUnknownElementVtbl
+
   DispHTMLUnknownElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IWebGeolocation* {.pure.} = object
     lpVtbl*: ptr IWebGeolocationVtbl
+
   IWebGeolocationVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    getCurrentPosition*: proc(self: ptr IWebGeolocation, successCallback: ptr IDispatch, errorCallback: ptr IDispatch, options: ptr IDispatch): HRESULT {.stdcall.}
-    watchPosition*: proc(self: ptr IWebGeolocation, successCallback: ptr IDispatch, errorCallback: ptr IDispatch, options: ptr IDispatch, watchId: ptr LONG): HRESULT {.stdcall.}
+    getCurrentPosition*: proc(
+      self: ptr IWebGeolocation,
+      successCallback: ptr IDispatch,
+      errorCallback: ptr IDispatch,
+      options: ptr IDispatch,
+    ): HRESULT {.stdcall.}
+    watchPosition*: proc(
+      self: ptr IWebGeolocation,
+      successCallback: ptr IDispatch,
+      errorCallback: ptr IDispatch,
+      options: ptr IDispatch,
+      watchId: ptr LONG,
+    ): HRESULT {.stdcall.}
     clearWatch*: proc(self: ptr IWebGeolocation, watchId: LONG): HRESULT {.stdcall.}
+
   INavigatorGeolocation* {.pure.} = object
     lpVtbl*: ptr INavigatorGeolocationVtbl
+
   INavigatorGeolocationVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_geolocation*: proc(self: ptr INavigatorGeolocation, p: ptr ptr IWebGeolocation): HRESULT {.stdcall.}
+    get_geolocation*: proc(
+      self: ptr INavigatorGeolocation, p: ptr ptr IWebGeolocation
+    ): HRESULT {.stdcall.}
+
   INavigatorDoNotTrack* {.pure.} = object
     lpVtbl*: ptr INavigatorDoNotTrackVtbl
+
   INavigatorDoNotTrackVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_msDoNotTrack*: proc(self: ptr INavigatorDoNotTrack, p: ptr BSTR): HRESULT {.stdcall.}
+    get_msDoNotTrack*:
+      proc(self: ptr INavigatorDoNotTrack, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLHistory* {.pure.} = object
     lpVtbl*: ptr DispHTMLHistoryVtbl
+
   DispHTMLHistoryVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispCPlugins* {.pure.} = object
     lpVtbl*: ptr DispCPluginsVtbl
+
   DispCPluginsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLNavigator* {.pure.} = object
     lpVtbl*: ptr DispHTMLNavigatorVtbl
+
   DispHTMLNavigatorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLLocation* {.pure.} = object
     lpVtbl*: ptr DispHTMLLocationVtbl
+
   DispHTMLLocationVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLBookmarkCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLBookmarkCollectionVtbl
+
   IHTMLBookmarkCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLBookmarkCollection, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IHTMLBookmarkCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLBookmarkCollection, index: LONG, pVarBookmark: ptr VARIANT): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLBookmarkCollection, p: ptr LONG): HRESULT {.stdcall.}
+    get_newEnum*:
+      proc(self: ptr IHTMLBookmarkCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLBookmarkCollection, index: LONG, pVarBookmark: ptr VARIANT
+    ): HRESULT {.stdcall.}
+
   IHTMLDataTransfer* {.pure.} = object
     lpVtbl*: ptr IHTMLDataTransferVtbl
+
   IHTMLDataTransferVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    setData*: proc(self: ptr IHTMLDataTransfer, format: BSTR, data: ptr VARIANT, pret: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    getData*: proc(self: ptr IHTMLDataTransfer, format: BSTR, pvarRet: ptr VARIANT): HRESULT {.stdcall.}
-    clearData*: proc(self: ptr IHTMLDataTransfer, format: BSTR, pret: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    setData*: proc(
+      self: ptr IHTMLDataTransfer,
+      format: BSTR,
+      data: ptr VARIANT,
+      pret: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    getData*: proc(
+      self: ptr IHTMLDataTransfer, format: BSTR, pvarRet: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    clearData*: proc(
+      self: ptr IHTMLDataTransfer, format: BSTR, pret: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     put_dropEffect*: proc(self: ptr IHTMLDataTransfer, v: BSTR): HRESULT {.stdcall.}
     get_dropEffect*: proc(self: ptr IHTMLDataTransfer, p: ptr BSTR): HRESULT {.stdcall.}
     put_effectAllowed*: proc(self: ptr IHTMLDataTransfer, v: BSTR): HRESULT {.stdcall.}
-    get_effectAllowed*: proc(self: ptr IHTMLDataTransfer, p: ptr BSTR): HRESULT {.stdcall.}
+    get_effectAllowed*:
+      proc(self: ptr IHTMLDataTransfer, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLEventObj2* {.pure.} = object
     lpVtbl*: ptr IHTMLEventObj2Vtbl
+
   IHTMLEventObj2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    setAttribute*: proc(self: ptr IHTMLEventObj2, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG): HRESULT {.stdcall.}
-    getAttribute*: proc(self: ptr IHTMLEventObj2, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.stdcall.}
-    removeAttribute*: proc(self: ptr IHTMLEventObj2, strAttributeName: BSTR, lFlags: LONG, pfSuccess: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    setAttribute*: proc(
+      self: ptr IHTMLEventObj2,
+      strAttributeName: BSTR,
+      AttributeValue: VARIANT,
+      lFlags: LONG,
+    ): HRESULT {.stdcall.}
+    getAttribute*: proc(
+      self: ptr IHTMLEventObj2,
+      strAttributeName: BSTR,
+      lFlags: LONG,
+      AttributeValue: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    removeAttribute*: proc(
+      self: ptr IHTMLEventObj2,
+      strAttributeName: BSTR,
+      lFlags: LONG,
+      pfSuccess: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
     put_propertyName*: proc(self: ptr IHTMLEventObj2, v: BSTR): HRESULT {.stdcall.}
     get_propertyName*: proc(self: ptr IHTMLEventObj2, p: ptr BSTR): HRESULT {.stdcall.}
-    putref_bookmarks*: proc(self: ptr IHTMLEventObj2, v: ptr IHTMLBookmarkCollection): HRESULT {.stdcall.}
-    get_bookmarks*: proc(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLBookmarkCollection): HRESULT {.stdcall.}
-    putref_recordset*: proc(self: ptr IHTMLEventObj2, v: ptr IDispatch): HRESULT {.stdcall.}
-    get_recordset*: proc(self: ptr IHTMLEventObj2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    putref_bookmarks*: proc(
+      self: ptr IHTMLEventObj2, v: ptr IHTMLBookmarkCollection
+    ): HRESULT {.stdcall.}
+    get_bookmarks*: proc(
+      self: ptr IHTMLEventObj2, p: ptr ptr IHTMLBookmarkCollection
+    ): HRESULT {.stdcall.}
+    putref_recordset*:
+      proc(self: ptr IHTMLEventObj2, v: ptr IDispatch): HRESULT {.stdcall.}
+    get_recordset*:
+      proc(self: ptr IHTMLEventObj2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     put_dataFld*: proc(self: ptr IHTMLEventObj2, v: BSTR): HRESULT {.stdcall.}
     get_dataFld*: proc(self: ptr IHTMLEventObj2, p: ptr BSTR): HRESULT {.stdcall.}
-    putref_boundElements*: proc(self: ptr IHTMLEventObj2, v: ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    get_boundElements*: proc(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
+    putref_boundElements*:
+      proc(self: ptr IHTMLEventObj2, v: ptr IHTMLElementCollection): HRESULT {.stdcall.}
+    get_boundElements*: proc(
+      self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
     put_repeat*: proc(self: ptr IHTMLEventObj2, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_repeat*: proc(self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_repeat*:
+      proc(self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_srcUrn*: proc(self: ptr IHTMLEventObj2, v: BSTR): HRESULT {.stdcall.}
     get_srcUrn*: proc(self: ptr IHTMLEventObj2, p: ptr BSTR): HRESULT {.stdcall.}
-    putref_srcElement*: proc(self: ptr IHTMLEventObj2, v: ptr IHTMLElement): HRESULT {.stdcall.}
-    get_srcElement*: proc(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    putref_srcElement*:
+      proc(self: ptr IHTMLEventObj2, v: ptr IHTMLElement): HRESULT {.stdcall.}
+    get_srcElement*:
+      proc(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
     put_altKey*: proc(self: ptr IHTMLEventObj2, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_altKey*: proc(self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_altKey*:
+      proc(self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_ctrlKey*: proc(self: ptr IHTMLEventObj2, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_ctrlKey*: proc(self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_ctrlKey*:
+      proc(self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_shiftKey*: proc(self: ptr IHTMLEventObj2, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_shiftKey*: proc(self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    putref_fromElement*: proc(self: ptr IHTMLEventObj2, v: ptr IHTMLElement): HRESULT {.stdcall.}
-    get_fromElement*: proc(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    putref_toElement*: proc(self: ptr IHTMLEventObj2, v: ptr IHTMLElement): HRESULT {.stdcall.}
-    get_toElement*: proc(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_shiftKey*:
+      proc(self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    putref_fromElement*:
+      proc(self: ptr IHTMLEventObj2, v: ptr IHTMLElement): HRESULT {.stdcall.}
+    get_fromElement*:
+      proc(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    putref_toElement*:
+      proc(self: ptr IHTMLEventObj2, v: ptr IHTMLElement): HRESULT {.stdcall.}
+    get_toElement*:
+      proc(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
     put_button*: proc(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.stdcall.}
     get_button*: proc(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.stdcall.}
     put_type*: proc(self: ptr IHTMLEventObj2, v: BSTR): HRESULT {.stdcall.}
@@ -8316,103 +11412,173 @@
     get_screenX*: proc(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.stdcall.}
     put_screenY*: proc(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.stdcall.}
     get_screenY*: proc(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.stdcall.}
-    putref_srcFilter*: proc(self: ptr IHTMLEventObj2, v: ptr IDispatch): HRESULT {.stdcall.}
-    get_srcFilter*: proc(self: ptr IHTMLEventObj2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_dataTransfer*: proc(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLDataTransfer): HRESULT {.stdcall.}
+    putref_srcFilter*:
+      proc(self: ptr IHTMLEventObj2, v: ptr IDispatch): HRESULT {.stdcall.}
+    get_srcFilter*:
+      proc(self: ptr IHTMLEventObj2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_dataTransfer*:
+      proc(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLDataTransfer): HRESULT {.stdcall.}
+
   IHTMLEventObj3* {.pure.} = object
     lpVtbl*: ptr IHTMLEventObj3Vtbl
+
   IHTMLEventObj3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_contentOverflow*: proc(self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_contentOverflow*:
+      proc(self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_shiftLeft*: proc(self: ptr IHTMLEventObj3, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_shiftLeft*: proc(self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_shiftLeft*:
+      proc(self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_altLeft*: proc(self: ptr IHTMLEventObj3, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_altLeft*: proc(self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_altLeft*:
+      proc(self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_ctrlLeft*: proc(self: ptr IHTMLEventObj3, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_ctrlLeft*: proc(self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_imeCompositionChange*: proc(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.stdcall.}
-    get_imeNotifyCommand*: proc(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.stdcall.}
-    get_imeNotifyData*: proc(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.stdcall.}
-    get_imeRequest*: proc(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.stdcall.}
-    get_imeRequestData*: proc(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.stdcall.}
-    get_keyboardLayout*: proc(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.stdcall.}
-    get_behaviorCookie*: proc(self: ptr IHTMLEventObj3, p: ptr LONG): HRESULT {.stdcall.}
+    get_ctrlLeft*:
+      proc(self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_imeCompositionChange*:
+      proc(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.stdcall.}
+    get_imeNotifyCommand*:
+      proc(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.stdcall.}
+    get_imeNotifyData*:
+      proc(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.stdcall.}
+    get_imeRequest*:
+      proc(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.stdcall.}
+    get_imeRequestData*:
+      proc(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.stdcall.}
+    get_keyboardLayout*:
+      proc(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.stdcall.}
+    get_behaviorCookie*:
+      proc(self: ptr IHTMLEventObj3, p: ptr LONG): HRESULT {.stdcall.}
     get_behaviorPart*: proc(self: ptr IHTMLEventObj3, p: ptr LONG): HRESULT {.stdcall.}
     get_nextPage*: proc(self: ptr IHTMLEventObj3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLEventObj4* {.pure.} = object
     lpVtbl*: ptr IHTMLEventObj4Vtbl
+
   IHTMLEventObj4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_wheelDelta*: proc(self: ptr IHTMLEventObj4, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLEventObj5* {.pure.} = object
     lpVtbl*: ptr IHTMLEventObj5Vtbl
+
   IHTMLEventObj5Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_url*: proc(self: ptr IHTMLEventObj5, v: BSTR): HRESULT {.stdcall.}
     get_url*: proc(self: ptr IHTMLEventObj5, p: ptr BSTR): HRESULT {.stdcall.}
     put_data*: proc(self: ptr IHTMLEventObj5, v: BSTR): HRESULT {.stdcall.}
     get_data*: proc(self: ptr IHTMLEventObj5, p: ptr BSTR): HRESULT {.stdcall.}
-    get_source*: proc(self: ptr IHTMLEventObj5, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_source*:
+      proc(self: ptr IHTMLEventObj5, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     put_origin*: proc(self: ptr IHTMLEventObj5, v: BSTR): HRESULT {.stdcall.}
     get_origin*: proc(self: ptr IHTMLEventObj5, p: ptr BSTR): HRESULT {.stdcall.}
     put_issession*: proc(self: ptr IHTMLEventObj5, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_issession*: proc(self: ptr IHTMLEventObj5, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_issession*:
+      proc(self: ptr IHTMLEventObj5, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   IHTMLEventObj6* {.pure.} = object
     lpVtbl*: ptr IHTMLEventObj6Vtbl
+
   IHTMLEventObj6Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_actionURL*: proc(self: ptr IHTMLEventObj6, p: ptr BSTR): HRESULT {.stdcall.}
     get_buttonID*: proc(self: ptr IHTMLEventObj6, p: ptr LONG): HRESULT {.stdcall.}
+
   DispCEventObj* {.pure.} = object
     lpVtbl*: ptr DispCEventObjVtbl
+
   DispCEventObjVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLStyleMedia* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleMediaVtbl
+
   IHTMLStyleMediaVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_type*: proc(self: ptr IHTMLStyleMedia, p: ptr BSTR): HRESULT {.stdcall.}
-    matchMedium*: proc(self: ptr IHTMLStyleMedia, mediaQuery: BSTR, matches: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    matchMedium*: proc(
+      self: ptr IHTMLStyleMedia, mediaQuery: BSTR, matches: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+
   DispHTMLStyleMedia* {.pure.} = object
     lpVtbl*: ptr DispHTMLStyleMediaVtbl
+
   DispHTMLStyleMediaVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLWindowEvents3* {.pure.} = object
     lpVtbl*: ptr HTMLWindowEvents3Vtbl
+
   HTMLWindowEvents3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLWindowEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLWindowEvents2Vtbl
+
   HTMLWindowEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLWindowEvents* {.pure.} = object
     lpVtbl*: ptr HTMLWindowEventsVtbl
+
   HTMLWindowEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLScreen2* {.pure.} = object
     lpVtbl*: ptr IHTMLScreen2Vtbl
+
   IHTMLScreen2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_logicalXDPI*: proc(self: ptr IHTMLScreen2, p: ptr LONG): HRESULT {.stdcall.}
     get_logicalYDPI*: proc(self: ptr IHTMLScreen2, p: ptr LONG): HRESULT {.stdcall.}
     get_deviceXDPI*: proc(self: ptr IHTMLScreen2, p: ptr LONG): HRESULT {.stdcall.}
     get_deviceYDPI*: proc(self: ptr IHTMLScreen2, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLScreen3* {.pure.} = object
     lpVtbl*: ptr IHTMLScreen3Vtbl
+
   IHTMLScreen3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_systemXDPI*: proc(self: ptr IHTMLScreen3, p: ptr LONG): HRESULT {.stdcall.}
     get_systemYDPI*: proc(self: ptr IHTMLScreen3, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLScreen4* {.pure.} = object
     lpVtbl*: ptr IHTMLScreen4Vtbl
+
   IHTMLScreen4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_pixelDepth*: proc(self: ptr IHTMLScreen4, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLWindow3* {.pure.} = object
     lpVtbl*: ptr IHTMLWindow3Vtbl
+
   IHTMLWindow3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_screenLeft*: proc(self: ptr IHTMLWindow3, p: ptr LONG): HRESULT {.stdcall.}
     get_screenTop*: proc(self: ptr IHTMLWindow3, p: ptr LONG): HRESULT {.stdcall.}
-    attachEvent*: proc(self: ptr IHTMLWindow3, event: BSTR, pDisp: ptr IDispatch, pfResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    detachEvent*: proc(self: ptr IHTMLWindow3, event: BSTR, pDisp: ptr IDispatch): HRESULT {.stdcall.}
-    setTimeout*: proc(self: ptr IHTMLWindow3, expression: ptr VARIANT, msec: LONG, language: ptr VARIANT, timerID: ptr LONG): HRESULT {.stdcall.}
-    setInterval*: proc(self: ptr IHTMLWindow3, expression: ptr VARIANT, msec: LONG, language: ptr VARIANT, timerID: ptr LONG): HRESULT {.stdcall.}
+    attachEvent*: proc(
+      self: ptr IHTMLWindow3,
+      event: BSTR,
+      pDisp: ptr IDispatch,
+      pfResult: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    detachEvent*: proc(
+      self: ptr IHTMLWindow3, event: BSTR, pDisp: ptr IDispatch
+    ): HRESULT {.stdcall.}
+    setTimeout*: proc(
+      self: ptr IHTMLWindow3,
+      expression: ptr VARIANT,
+      msec: LONG,
+      language: ptr VARIANT,
+      timerID: ptr LONG,
+    ): HRESULT {.stdcall.}
+    setInterval*: proc(
+      self: ptr IHTMLWindow3,
+      expression: ptr VARIANT,
+      msec: LONG,
+      language: ptr VARIANT,
+      timerID: ptr LONG,
+    ): HRESULT {.stdcall.}
     print*: proc(self: ptr IHTMLWindow3): HRESULT {.stdcall.}
     put_onbeforeprint*: proc(self: ptr IHTMLWindow3, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforeprint*: proc(self: ptr IHTMLWindow3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onbeforeprint*:
+      proc(self: ptr IHTMLWindow3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onafterprint*: proc(self: ptr IHTMLWindow3, v: VARIANT): HRESULT {.stdcall.}
     get_onafterprint*: proc(self: ptr IHTMLWindow3, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_clipboardData*: proc(self: ptr IHTMLWindow3, p: ptr ptr IHTMLDataTransfer): HRESULT {.stdcall.}
-    showModelessDialog*: proc(self: ptr IHTMLWindow3, url: BSTR, varArgIn: ptr VARIANT, options: ptr VARIANT, pDialog: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
+    get_clipboardData*:
+      proc(self: ptr IHTMLWindow3, p: ptr ptr IHTMLDataTransfer): HRESULT {.stdcall.}
+    showModelessDialog*: proc(
+      self: ptr IHTMLWindow3,
+      url: BSTR,
+      varArgIn: ptr VARIANT,
+      options: ptr VARIANT,
+      pDialog: ptr ptr IHTMLWindow2,
+    ): HRESULT {.stdcall.}
+
   IHTMLFrameBase* {.pure.} = object
     lpVtbl*: ptr IHTMLFrameBaseVtbl
+
   IHTMLFrameBaseVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_src*: proc(self: ptr IHTMLFrameBase, v: BSTR): HRESULT {.stdcall.}
     get_src*: proc(self: ptr IHTMLFrameBase, p: ptr BSTR): HRESULT {.stdcall.}
@@ -8423,56 +11589,93 @@
     put_frameBorder*: proc(self: ptr IHTMLFrameBase, v: BSTR): HRESULT {.stdcall.}
     get_frameBorder*: proc(self: ptr IHTMLFrameBase, p: ptr BSTR): HRESULT {.stdcall.}
     put_frameSpacing*: proc(self: ptr IHTMLFrameBase, v: VARIANT): HRESULT {.stdcall.}
-    get_frameSpacing*: proc(self: ptr IHTMLFrameBase, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_frameSpacing*:
+      proc(self: ptr IHTMLFrameBase, p: ptr VARIANT): HRESULT {.stdcall.}
     put_marginWidth*: proc(self: ptr IHTMLFrameBase, v: VARIANT): HRESULT {.stdcall.}
-    get_marginWidth*: proc(self: ptr IHTMLFrameBase, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_marginWidth*:
+      proc(self: ptr IHTMLFrameBase, p: ptr VARIANT): HRESULT {.stdcall.}
     put_marginHeight*: proc(self: ptr IHTMLFrameBase, v: VARIANT): HRESULT {.stdcall.}
-    get_marginHeight*: proc(self: ptr IHTMLFrameBase, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_marginHeight*:
+      proc(self: ptr IHTMLFrameBase, p: ptr VARIANT): HRESULT {.stdcall.}
     put_noResize*: proc(self: ptr IHTMLFrameBase, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_noResize*: proc(self: ptr IHTMLFrameBase, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_noResize*:
+      proc(self: ptr IHTMLFrameBase, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_scrolling*: proc(self: ptr IHTMLFrameBase, v: BSTR): HRESULT {.stdcall.}
     get_scrolling*: proc(self: ptr IHTMLFrameBase, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLWindow4* {.pure.} = object
     lpVtbl*: ptr IHTMLWindow4Vtbl
+
   IHTMLWindow4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    createPopup*: proc(self: ptr IHTMLWindow4, varArgIn: ptr VARIANT, ppPopup: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_frameElement*: proc(self: ptr IHTMLWindow4, p: ptr ptr IHTMLFrameBase): HRESULT {.stdcall.}
+    createPopup*: proc(
+      self: ptr IHTMLWindow4, varArgIn: ptr VARIANT, ppPopup: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_frameElement*:
+      proc(self: ptr IHTMLWindow4, p: ptr ptr IHTMLFrameBase): HRESULT {.stdcall.}
+
   IHTMLWindow5* {.pure.} = object
     lpVtbl*: ptr IHTMLWindow5Vtbl
+
   IHTMLWindow5Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_XMLHttpRequest*: proc(self: ptr IHTMLWindow5, v: VARIANT): HRESULT {.stdcall.}
-    get_XMLHttpRequest*: proc(self: ptr IHTMLWindow5, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_XMLHttpRequest*:
+      proc(self: ptr IHTMLWindow5, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLStorage* {.pure.} = object
     lpVtbl*: ptr IHTMLStorageVtbl
+
   IHTMLStorageVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_length*: proc(self: ptr IHTMLStorage, p: ptr LONG): HRESULT {.stdcall.}
     get_remainingSpace*: proc(self: ptr IHTMLStorage, p: ptr LONG): HRESULT {.stdcall.}
     key*: proc(self: ptr IHTMLStorage, lIndex: LONG, a: ptr BSTR): HRESULT {.stdcall.}
-    getItem*: proc(self: ptr IHTMLStorage, bstrKey: BSTR, a: ptr VARIANT): HRESULT {.stdcall.}
-    setItem*: proc(self: ptr IHTMLStorage, bstrKey: BSTR, bstrValue: BSTR): HRESULT {.stdcall.}
+    getItem*:
+      proc(self: ptr IHTMLStorage, bstrKey: BSTR, a: ptr VARIANT): HRESULT {.stdcall.}
+    setItem*:
+      proc(self: ptr IHTMLStorage, bstrKey: BSTR, bstrValue: BSTR): HRESULT {.stdcall.}
     removeItem*: proc(self: ptr IHTMLStorage, bstrKey: BSTR): HRESULT {.stdcall.}
     clear*: proc(self: ptr IHTMLStorage): HRESULT {.stdcall.}
+
   IHTMLWindow6* {.pure.} = object
     lpVtbl*: ptr IHTMLWindow6Vtbl
+
   IHTMLWindow6Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_XDomainRequest*: proc(self: ptr IHTMLWindow6, v: VARIANT): HRESULT {.stdcall.}
-    get_XDomainRequest*: proc(self: ptr IHTMLWindow6, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_sessionStorage*: proc(self: ptr IHTMLWindow6, p: ptr ptr IHTMLStorage): HRESULT {.stdcall.}
-    get_localStorage*: proc(self: ptr IHTMLWindow6, p: ptr ptr IHTMLStorage): HRESULT {.stdcall.}
+    get_XDomainRequest*:
+      proc(self: ptr IHTMLWindow6, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_sessionStorage*:
+      proc(self: ptr IHTMLWindow6, p: ptr ptr IHTMLStorage): HRESULT {.stdcall.}
+    get_localStorage*:
+      proc(self: ptr IHTMLWindow6, p: ptr ptr IHTMLStorage): HRESULT {.stdcall.}
     put_onhashchange*: proc(self: ptr IHTMLWindow6, v: VARIANT): HRESULT {.stdcall.}
     get_onhashchange*: proc(self: ptr IHTMLWindow6, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_maxConnectionsPerServer*: proc(self: ptr IHTMLWindow6, p: ptr LONG): HRESULT {.stdcall.}
-    postMessage*: proc(self: ptr IHTMLWindow6, msg: BSTR, targetOrigin: VARIANT): HRESULT {.stdcall.}
-    toStaticHTML*: proc(self: ptr IHTMLWindow6, bstrHTML: BSTR, pbstrStaticHTML: ptr BSTR): HRESULT {.stdcall.}
+    get_maxConnectionsPerServer*:
+      proc(self: ptr IHTMLWindow6, p: ptr LONG): HRESULT {.stdcall.}
+    postMessage*: proc(
+      self: ptr IHTMLWindow6, msg: BSTR, targetOrigin: VARIANT
+    ): HRESULT {.stdcall.}
+    toStaticHTML*: proc(
+      self: ptr IHTMLWindow6, bstrHTML: BSTR, pbstrStaticHTML: ptr BSTR
+    ): HRESULT {.stdcall.}
     put_onmessage*: proc(self: ptr IHTMLWindow6, v: VARIANT): HRESULT {.stdcall.}
     get_onmessage*: proc(self: ptr IHTMLWindow6, p: ptr VARIANT): HRESULT {.stdcall.}
-    msWriteProfilerMark*: proc(self: ptr IHTMLWindow6, bstrProfilerMarkName: BSTR): HRESULT {.stdcall.}
+    msWriteProfilerMark*:
+      proc(self: ptr IHTMLWindow6, bstrProfilerMarkName: BSTR): HRESULT {.stdcall.}
+
   IHTMLWindow7* {.pure.} = object
     lpVtbl*: ptr IHTMLWindow7Vtbl
+
   IHTMLWindow7Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    getSelection*: proc(self: ptr IHTMLWindow7, ppIHTMLSelection: ptr ptr IHTMLSelection): HRESULT {.stdcall.}
-    getComputedStyle*: proc(self: ptr IHTMLWindow7, varArgIn: ptr IHTMLDOMNode, bstrPseudoElt: BSTR, ppComputedStyle: ptr ptr IHTMLCSSStyleDeclaration): HRESULT {.stdcall.}
-    get_styleMedia*: proc(self: ptr IHTMLWindow7, p: ptr ptr IHTMLStyleMedia): HRESULT {.stdcall.}
+    getSelection*: proc(
+      self: ptr IHTMLWindow7, ppIHTMLSelection: ptr ptr IHTMLSelection
+    ): HRESULT {.stdcall.}
+    getComputedStyle*: proc(
+      self: ptr IHTMLWindow7,
+      varArgIn: ptr IHTMLDOMNode,
+      bstrPseudoElt: BSTR,
+      ppComputedStyle: ptr ptr IHTMLCSSStyleDeclaration,
+    ): HRESULT {.stdcall.}
+    get_styleMedia*:
+      proc(self: ptr IHTMLWindow7, p: ptr ptr IHTMLStyleMedia): HRESULT {.stdcall.}
     put_performance*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
     get_performance*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     get_innerWidth*: proc(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.stdcall.}
@@ -8488,13 +11691,15 @@
     put_oncanplay*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
     get_oncanplay*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_oncanplaythrough*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
-    get_oncanplaythrough*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_oncanplaythrough*:
+      proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onchange*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
     get_onchange*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onclick*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
     get_onclick*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_oncontextmenu*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
-    get_oncontextmenu*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_oncontextmenu*:
+      proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ondblclick*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
     get_ondblclick*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ondrag*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
@@ -8512,7 +11717,8 @@
     put_ondrop*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
     get_ondrop*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ondurationchange*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
-    get_ondurationchange*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_ondurationchange*:
+      proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onfocusin*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
     get_onfocusin*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onfocusout*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
@@ -8532,7 +11738,8 @@
     put_onloadeddata*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
     get_onloadeddata*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onloadedmetadata*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
-    get_onloadedmetadata*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onloadedmetadata*:
+      proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onloadstart*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
     get_onloadstart*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmousedown*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
@@ -8559,8 +11766,10 @@
     get_onprogress*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onratechange*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
     get_onratechange*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onreadystatechange*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
-    get_onreadystatechange*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onreadystatechange*:
+      proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
+    get_onreadystatechange*:
+      proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onreset*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
     get_onreset*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onseeked*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
@@ -8586,173 +11795,309 @@
     put_onplaying*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
     get_onplaying*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onvolumechange*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
-    get_onvolumechange*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onvolumechange*:
+      proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onwaiting*: proc(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.stdcall.}
     get_onwaiting*: proc(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLApplicationCache* {.pure.} = object
     lpVtbl*: ptr IHTMLApplicationCacheVtbl
+
   IHTMLApplicationCacheVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_status*: proc(self: ptr IHTMLApplicationCache, p: ptr LONG): HRESULT {.stdcall.}
-    put_onchecking*: proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
-    get_onchecking*: proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onchecking*:
+      proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
+    get_onchecking*:
+      proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onerror*: proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
-    get_onerror*: proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onnoupdate*: proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
-    get_onnoupdate*: proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_ondownloading*: proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
-    get_ondownloading*: proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onprogress*: proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
-    get_onprogress*: proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onupdateready*: proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
-    get_onupdateready*: proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_oncached*: proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
-    get_oncached*: proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onobsolete*: proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
-    get_onobsolete*: proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onerror*:
+      proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onnoupdate*:
+      proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
+    get_onnoupdate*:
+      proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_ondownloading*:
+      proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
+    get_ondownloading*:
+      proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onprogress*:
+      proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
+    get_onprogress*:
+      proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onupdateready*:
+      proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
+    get_onupdateready*:
+      proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_oncached*:
+      proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
+    get_oncached*:
+      proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onobsolete*:
+      proc(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.stdcall.}
+    get_onobsolete*:
+      proc(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.stdcall.}
     update*: proc(self: ptr IHTMLApplicationCache): HRESULT {.stdcall.}
     swapCache*: proc(self: ptr IHTMLApplicationCache): HRESULT {.stdcall.}
     abort*: proc(self: ptr IHTMLApplicationCache): HRESULT {.stdcall.}
+
   IHTMLWindow8* {.pure.} = object
     lpVtbl*: ptr IHTMLWindow8Vtbl
+
   IHTMLWindow8Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_onmspointerdown*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerdown*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmspointerdown*:
+      proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmspointermove*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointermove*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmspointermove*:
+      proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmspointerup*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerup*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmspointerup*:
+      proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmspointerover*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerover*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmspointerover*:
+      proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmspointerout*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerout*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmspointercancel*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointercancel*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmspointerout*:
+      proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmspointercancel*:
+      proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmspointercancel*:
+      proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmspointerhover*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerhover*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmspointerhover*:
+      proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmsgesturestart*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturestart*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsgesturechange*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturechange*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmsgesturestart*:
+      proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsgesturechange*:
+      proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsgesturechange*:
+      proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmsgestureend*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgestureend*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmsgestureend*:
+      proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmsgesturehold*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturehold*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmsgesturehold*:
+      proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmsgesturetap*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturetap*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsgesturedoubletap*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturedoubletap*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmsgesturetap*:
+      proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsgesturedoubletap*:
+      proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsgesturedoubletap*:
+      proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmsinertiastart*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsinertiastart*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_applicationCache*: proc(self: ptr IHTMLWindow8, p: ptr ptr IHTMLApplicationCache): HRESULT {.stdcall.}
+    get_onmsinertiastart*:
+      proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_applicationCache*: proc(
+      self: ptr IHTMLWindow8, p: ptr ptr IHTMLApplicationCache
+    ): HRESULT {.stdcall.}
     put_onpopstate*: proc(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.stdcall.}
     get_onpopstate*: proc(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.stdcall.}
+
   DispHTMLScreen* {.pure.} = object
     lpVtbl*: ptr DispHTMLScreenVtbl
+
   DispHTMLScreenVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLWindow2* {.pure.} = object
     lpVtbl*: ptr DispHTMLWindow2Vtbl
+
   DispHTMLWindow2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLWindowProxy* {.pure.} = object
     lpVtbl*: ptr DispHTMLWindowProxyVtbl
+
   DispHTMLWindowProxyVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLDocumentCompatibleInfo* {.pure.} = object
     lpVtbl*: ptr IHTMLDocumentCompatibleInfoVtbl
+
   IHTMLDocumentCompatibleInfoVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_userAgent*: proc(self: ptr IHTMLDocumentCompatibleInfo, p: ptr BSTR): HRESULT {.stdcall.}
-    get_version*: proc(self: ptr IHTMLDocumentCompatibleInfo, p: ptr BSTR): HRESULT {.stdcall.}
+    get_userAgent*:
+      proc(self: ptr IHTMLDocumentCompatibleInfo, p: ptr BSTR): HRESULT {.stdcall.}
+    get_version*:
+      proc(self: ptr IHTMLDocumentCompatibleInfo, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLDocumentCompatibleInfoCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLDocumentCompatibleInfoCollectionVtbl
+
   IHTMLDocumentCompatibleInfoCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLDocumentCompatibleInfoCollection, p: ptr LONG): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLDocumentCompatibleInfoCollection, index: LONG, compatibleInfo: ptr ptr IHTMLDocumentCompatibleInfo): HRESULT {.stdcall.}
+    get_length*: proc(
+      self: ptr IHTMLDocumentCompatibleInfoCollection, p: ptr LONG
+    ): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLDocumentCompatibleInfoCollection,
+      index: LONG,
+      compatibleInfo: ptr ptr IHTMLDocumentCompatibleInfo,
+    ): HRESULT {.stdcall.}
+
   DispHTMLDocumentCompatibleInfo* {.pure.} = object
     lpVtbl*: ptr DispHTMLDocumentCompatibleInfoVtbl
+
   DispHTMLDocumentCompatibleInfoVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLDocumentCompatibleInfoCollection* {.pure.} = object
     lpVtbl*: ptr DispHTMLDocumentCompatibleInfoCollectionVtbl
+
   DispHTMLDocumentCompatibleInfoCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLDocumentEvents4* {.pure.} = object
     lpVtbl*: ptr HTMLDocumentEvents4Vtbl
+
   HTMLDocumentEvents4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLDocumentEvents3* {.pure.} = object
     lpVtbl*: ptr HTMLDocumentEvents3Vtbl
+
   HTMLDocumentEvents3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLDocumentEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLDocumentEvents2Vtbl
+
   HTMLDocumentEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLDocumentEvents* {.pure.} = object
     lpVtbl*: ptr HTMLDocumentEventsVtbl
+
   HTMLDocumentEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLDocument3* {.pure.} = object
     lpVtbl*: ptr IHTMLDocument3Vtbl
+
   IHTMLDocument3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     releaseCapture*: proc(self: ptr IHTMLDocument3): HRESULT {.stdcall.}
     recalc*: proc(self: ptr IHTMLDocument3, fForce: VARIANT_BOOL): HRESULT {.stdcall.}
-    createTextNode*: proc(self: ptr IHTMLDocument3, text: BSTR, newTextNode: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    get_documentElement*: proc(self: ptr IHTMLDocument3, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    createTextNode*: proc(
+      self: ptr IHTMLDocument3, text: BSTR, newTextNode: ptr ptr IHTMLDOMNode
+    ): HRESULT {.stdcall.}
+    get_documentElement*:
+      proc(self: ptr IHTMLDocument3, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
     get_uniqueID*: proc(self: ptr IHTMLDocument3, p: ptr BSTR): HRESULT {.stdcall.}
-    attachEvent*: proc(self: ptr IHTMLDocument3, event: BSTR, pDisp: ptr IDispatch, pfResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    detachEvent*: proc(self: ptr IHTMLDocument3, event: BSTR, pDisp: ptr IDispatch): HRESULT {.stdcall.}
+    attachEvent*: proc(
+      self: ptr IHTMLDocument3,
+      event: BSTR,
+      pDisp: ptr IDispatch,
+      pfResult: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    detachEvent*: proc(
+      self: ptr IHTMLDocument3, event: BSTR, pDisp: ptr IDispatch
+    ): HRESULT {.stdcall.}
     put_onrowsdelete*: proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
-    get_onrowsdelete*: proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onrowsdelete*:
+      proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onrowsinserted*: proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
-    get_onrowsinserted*: proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onrowsinserted*:
+      proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_oncellchange*: proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
-    get_oncellchange*: proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_ondatasetchanged*: proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
-    get_ondatasetchanged*: proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_ondataavailable*: proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
-    get_ondataavailable*: proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_ondatasetcomplete*: proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
-    get_ondatasetcomplete*: proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onpropertychange*: proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
-    get_onpropertychange*: proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_oncellchange*:
+      proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_ondatasetchanged*:
+      proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
+    get_ondatasetchanged*:
+      proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_ondataavailable*:
+      proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
+    get_ondataavailable*:
+      proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_ondatasetcomplete*:
+      proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
+    get_ondatasetcomplete*:
+      proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onpropertychange*:
+      proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
+    get_onpropertychange*:
+      proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_dir*: proc(self: ptr IHTMLDocument3, v: BSTR): HRESULT {.stdcall.}
     get_dir*: proc(self: ptr IHTMLDocument3, p: ptr BSTR): HRESULT {.stdcall.}
     put_oncontextmenu*: proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
-    get_oncontextmenu*: proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_oncontextmenu*:
+      proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onstop*: proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
     get_onstop*: proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
-    createDocumentFragment*: proc(self: ptr IHTMLDocument3, pNewDoc: ptr ptr IHTMLDocument2): HRESULT {.stdcall.}
-    get_parentDocument*: proc(self: ptr IHTMLDocument3, p: ptr ptr IHTMLDocument2): HRESULT {.stdcall.}
-    put_enableDownload*: proc(self: ptr IHTMLDocument3, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_enableDownload*: proc(self: ptr IHTMLDocument3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    createDocumentFragment*: proc(
+      self: ptr IHTMLDocument3, pNewDoc: ptr ptr IHTMLDocument2
+    ): HRESULT {.stdcall.}
+    get_parentDocument*:
+      proc(self: ptr IHTMLDocument3, p: ptr ptr IHTMLDocument2): HRESULT {.stdcall.}
+    put_enableDownload*:
+      proc(self: ptr IHTMLDocument3, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_enableDownload*:
+      proc(self: ptr IHTMLDocument3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_baseUrl*: proc(self: ptr IHTMLDocument3, v: BSTR): HRESULT {.stdcall.}
     get_baseUrl*: proc(self: ptr IHTMLDocument3, p: ptr BSTR): HRESULT {.stdcall.}
-    get_childNodes*: proc(self: ptr IHTMLDocument3, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    put_inheritStyleSheets*: proc(self: ptr IHTMLDocument3, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_inheritStyleSheets*: proc(self: ptr IHTMLDocument3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_onbeforeeditfocus*: proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforeeditfocus*: proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
-    getElementsByName*: proc(self: ptr IHTMLDocument3, v: BSTR, pelColl: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    getElementById*: proc(self: ptr IHTMLDocument3, v: BSTR, pel: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    getElementsByTagName*: proc(self: ptr IHTMLDocument3, v: BSTR, pelColl: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
+    get_childNodes*:
+      proc(self: ptr IHTMLDocument3, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    put_inheritStyleSheets*:
+      proc(self: ptr IHTMLDocument3, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_inheritStyleSheets*:
+      proc(self: ptr IHTMLDocument3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_onbeforeeditfocus*:
+      proc(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.stdcall.}
+    get_onbeforeeditfocus*:
+      proc(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.stdcall.}
+    getElementsByName*: proc(
+      self: ptr IHTMLDocument3, v: BSTR, pelColl: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
+    getElementById*: proc(
+      self: ptr IHTMLDocument3, v: BSTR, pel: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
+    getElementsByTagName*: proc(
+      self: ptr IHTMLDocument3, v: BSTR, pelColl: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
+
   IHTMLDocument4* {.pure.} = object
     lpVtbl*: ptr IHTMLDocument4Vtbl
+
   IHTMLDocument4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     focus*: proc(self: ptr IHTMLDocument4): HRESULT {.stdcall.}
-    hasFocus*: proc(self: ptr IHTMLDocument4, pfFocus: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_onselectionchange*: proc(self: ptr IHTMLDocument4, v: VARIANT): HRESULT {.stdcall.}
-    get_onselectionchange*: proc(self: ptr IHTMLDocument4, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_namespaces*: proc(self: ptr IHTMLDocument4, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    createDocumentFromUrl*: proc(self: ptr IHTMLDocument4, bstrUrl: BSTR, bstrOptions: BSTR, newDoc: ptr ptr IHTMLDocument2): HRESULT {.stdcall.}
+    hasFocus*:
+      proc(self: ptr IHTMLDocument4, pfFocus: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_onselectionchange*:
+      proc(self: ptr IHTMLDocument4, v: VARIANT): HRESULT {.stdcall.}
+    get_onselectionchange*:
+      proc(self: ptr IHTMLDocument4, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_namespaces*:
+      proc(self: ptr IHTMLDocument4, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    createDocumentFromUrl*: proc(
+      self: ptr IHTMLDocument4,
+      bstrUrl: BSTR,
+      bstrOptions: BSTR,
+      newDoc: ptr ptr IHTMLDocument2,
+    ): HRESULT {.stdcall.}
     put_media*: proc(self: ptr IHTMLDocument4, v: BSTR): HRESULT {.stdcall.}
     get_media*: proc(self: ptr IHTMLDocument4, p: ptr BSTR): HRESULT {.stdcall.}
-    createEventObject*: proc(self: ptr IHTMLDocument4, pvarEventObject: ptr VARIANT, ppEventObj: ptr ptr IHTMLEventObj): HRESULT {.stdcall.}
-    fireEvent*: proc(self: ptr IHTMLDocument4, bstrEventName: BSTR, pvarEventObject: ptr VARIANT, pfCancelled: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    createRenderStyle*: proc(self: ptr IHTMLDocument4, v: BSTR, ppIHTMLRenderStyle: ptr ptr IHTMLRenderStyle): HRESULT {.stdcall.}
-    put_oncontrolselect*: proc(self: ptr IHTMLDocument4, v: VARIANT): HRESULT {.stdcall.}
-    get_oncontrolselect*: proc(self: ptr IHTMLDocument4, p: ptr VARIANT): HRESULT {.stdcall.}
+    createEventObject*: proc(
+      self: ptr IHTMLDocument4,
+      pvarEventObject: ptr VARIANT,
+      ppEventObj: ptr ptr IHTMLEventObj,
+    ): HRESULT {.stdcall.}
+    fireEvent*: proc(
+      self: ptr IHTMLDocument4,
+      bstrEventName: BSTR,
+      pvarEventObject: ptr VARIANT,
+      pfCancelled: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    createRenderStyle*: proc(
+      self: ptr IHTMLDocument4, v: BSTR, ppIHTMLRenderStyle: ptr ptr IHTMLRenderStyle
+    ): HRESULT {.stdcall.}
+    put_oncontrolselect*:
+      proc(self: ptr IHTMLDocument4, v: VARIANT): HRESULT {.stdcall.}
+    get_oncontrolselect*:
+      proc(self: ptr IHTMLDocument4, p: ptr VARIANT): HRESULT {.stdcall.}
     get_URLUnencoded*: proc(self: ptr IHTMLDocument4, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLDocument5* {.pure.} = object
     lpVtbl*: ptr IHTMLDocument5Vtbl
+
   IHTMLDocument5Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_onmousewheel*: proc(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.stdcall.}
-    get_onmousewheel*: proc(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_doctype*: proc(self: ptr IHTMLDocument5, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
-    get_implementation*: proc(self: ptr IHTMLDocument5, p: ptr ptr IHTMLDOMImplementation): HRESULT {.stdcall.}
-    createAttribute*: proc(self: ptr IHTMLDocument5, bstrattrName: BSTR, ppattribute: ptr ptr IHTMLDOMAttribute): HRESULT {.stdcall.}
-    createComment*: proc(self: ptr IHTMLDocument5, bstrdata: BSTR, ppRetNode: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_onmousewheel*:
+      proc(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_doctype*:
+      proc(self: ptr IHTMLDocument5, p: ptr ptr IHTMLDOMNode): HRESULT {.stdcall.}
+    get_implementation*: proc(
+      self: ptr IHTMLDocument5, p: ptr ptr IHTMLDOMImplementation
+    ): HRESULT {.stdcall.}
+    createAttribute*: proc(
+      self: ptr IHTMLDocument5,
+      bstrattrName: BSTR,
+      ppattribute: ptr ptr IHTMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+    createComment*: proc(
+      self: ptr IHTMLDocument5, bstrdata: BSTR, ppRetNode: ptr ptr IHTMLDOMNode
+    ): HRESULT {.stdcall.}
     put_onfocusin*: proc(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.stdcall.}
     get_onfocusin*: proc(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onfocusout*: proc(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.stdcall.}
@@ -8760,139 +12105,278 @@
     put_onactivate*: proc(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.stdcall.}
     get_onactivate*: proc(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ondeactivate*: proc(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.stdcall.}
-    get_ondeactivate*: proc(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onbeforeactivate*: proc(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforeactivate*: proc(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onbeforedeactivate*: proc(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforedeactivate*: proc(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_ondeactivate*:
+      proc(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onbeforeactivate*:
+      proc(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.stdcall.}
+    get_onbeforeactivate*:
+      proc(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onbeforedeactivate*:
+      proc(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.stdcall.}
+    get_onbeforedeactivate*:
+      proc(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.stdcall.}
     get_compatMode*: proc(self: ptr IHTMLDocument5, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLDocument6* {.pure.} = object
     lpVtbl*: ptr IHTMLDocument6Vtbl
+
   IHTMLDocument6Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_compatible*: proc(self: ptr IHTMLDocument6, p: ptr ptr IHTMLDocumentCompatibleInfoCollection): HRESULT {.stdcall.}
-    get_documentMode*: proc(self: ptr IHTMLDocument6, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_compatible*: proc(
+      self: ptr IHTMLDocument6, p: ptr ptr IHTMLDocumentCompatibleInfoCollection
+    ): HRESULT {.stdcall.}
+    get_documentMode*:
+      proc(self: ptr IHTMLDocument6, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onstorage*: proc(self: ptr IHTMLDocument6, v: VARIANT): HRESULT {.stdcall.}
     get_onstorage*: proc(self: ptr IHTMLDocument6, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onstoragecommit*: proc(self: ptr IHTMLDocument6, v: VARIANT): HRESULT {.stdcall.}
-    get_onstoragecommit*: proc(self: ptr IHTMLDocument6, p: ptr VARIANT): HRESULT {.stdcall.}
-    getElementById*: proc(self: ptr IHTMLDocument6, bstrId: BSTR, ppRetElement: ptr ptr IHTMLElement2): HRESULT {.stdcall.}
+    put_onstoragecommit*:
+      proc(self: ptr IHTMLDocument6, v: VARIANT): HRESULT {.stdcall.}
+    get_onstoragecommit*:
+      proc(self: ptr IHTMLDocument6, p: ptr VARIANT): HRESULT {.stdcall.}
+    getElementById*: proc(
+      self: ptr IHTMLDocument6, bstrId: BSTR, ppRetElement: ptr ptr IHTMLElement2
+    ): HRESULT {.stdcall.}
     updateSettings*: proc(self: ptr IHTMLDocument6): HRESULT {.stdcall.}
+
   IHTMLDocument8* {.pure.} = object
     lpVtbl*: ptr IHTMLDocument8Vtbl
+
   IHTMLDocument8Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_onmscontentzoom*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmscontentzoom*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmspointerdown*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerdown*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmspointermove*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointermove*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmscontentzoom*:
+      proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmscontentzoom*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmspointerdown*:
+      proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmspointerdown*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmspointermove*:
+      proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmspointermove*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmspointerup*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerup*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmspointerover*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerover*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmspointerup*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmspointerover*:
+      proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmspointerover*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmspointerout*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerout*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmspointercancel*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointercancel*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmspointerhover*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmspointerhover*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsgesturestart*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturestart*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsgesturechange*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturechange*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmspointerout*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmspointercancel*:
+      proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmspointercancel*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmspointerhover*:
+      proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmspointerhover*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsgesturestart*:
+      proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsgesturestart*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsgesturechange*:
+      proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsgesturechange*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmsgestureend*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgestureend*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsgesturehold*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturehold*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onmsgestureend*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsgesturehold*:
+      proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsgesturehold*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onmsgesturetap*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturetap*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsgesturedoubletap*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsgesturedoubletap*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmsinertiastart*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsinertiastart*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
-    elementsFromPoint*: proc(self: ptr IHTMLDocument8, x: float32, y: float32, elementsHit: ptr ptr IHTMLDOMChildrenCollection): HRESULT {.stdcall.}
-    elementsFromRect*: proc(self: ptr IHTMLDocument8, left: float32, top: float32, width: float32, height: float32, elementsHit: ptr ptr IHTMLDOMChildrenCollection): HRESULT {.stdcall.}
-    put_onmsmanipulationstatechanged*: proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
-    get_onmsmanipulationstatechanged*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_msCapsLockWarningOff*: proc(self: ptr IHTMLDocument8, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_msCapsLockWarningOff*: proc(self: ptr IHTMLDocument8, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_onmsgesturetap*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsgesturedoubletap*:
+      proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsgesturedoubletap*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmsinertiastart*:
+      proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsinertiastart*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    elementsFromPoint*: proc(
+      self: ptr IHTMLDocument8,
+      x: float32,
+      y: float32,
+      elementsHit: ptr ptr IHTMLDOMChildrenCollection,
+    ): HRESULT {.stdcall.}
+    elementsFromRect*: proc(
+      self: ptr IHTMLDocument8,
+      left: float32,
+      top: float32,
+      width: float32,
+      height: float32,
+      elementsHit: ptr ptr IHTMLDOMChildrenCollection,
+    ): HRESULT {.stdcall.}
+    put_onmsmanipulationstatechanged*:
+      proc(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.stdcall.}
+    get_onmsmanipulationstatechanged*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_msCapsLockWarningOff*:
+      proc(self: ptr IHTMLDocument8, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_msCapsLockWarningOff*:
+      proc(self: ptr IHTMLDocument8, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   IEventTarget* {.pure.} = object
     lpVtbl*: ptr IEventTargetVtbl
+
   IEventTargetVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    addEventListener*: proc(self: ptr IEventTarget, `type`: BSTR, listener: ptr IDispatch, useCapture: VARIANT_BOOL): HRESULT {.stdcall.}
-    removeEventListener*: proc(self: ptr IEventTarget, `type`: BSTR, listener: ptr IDispatch, useCapture: VARIANT_BOOL): HRESULT {.stdcall.}
-    dispatchEvent*: proc(self: ptr IEventTarget, evt: ptr IDOMEvent, pfResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    addEventListener*: proc(
+      self: ptr IEventTarget,
+      `type`: BSTR,
+      listener: ptr IDispatch,
+      useCapture: VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    removeEventListener*: proc(
+      self: ptr IEventTarget,
+      `type`: BSTR,
+      listener: ptr IDispatch,
+      useCapture: VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    dispatchEvent*: proc(
+      self: ptr IEventTarget, evt: ptr IDOMEvent, pfResult: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+
   IDOMEvent* {.pure.} = object
     lpVtbl*: ptr IDOMEventVtbl
+
   IDOMEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_bubbles*: proc(self: ptr IDOMEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_cancelable*: proc(self: ptr IDOMEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_currentTarget*: proc(self: ptr IDOMEvent, p: ptr ptr IEventTarget): HRESULT {.stdcall.}
-    get_defaultPrevented*: proc(self: ptr IDOMEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_currentTarget*:
+      proc(self: ptr IDOMEvent, p: ptr ptr IEventTarget): HRESULT {.stdcall.}
+    get_defaultPrevented*:
+      proc(self: ptr IDOMEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_eventPhase*: proc(self: ptr IDOMEvent, p: ptr USHORT): HRESULT {.stdcall.}
     get_target*: proc(self: ptr IDOMEvent, p: ptr ptr IEventTarget): HRESULT {.stdcall.}
     get_timeStamp*: proc(self: ptr IDOMEvent, p: ptr ULONGLONG): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IDOMEvent, p: ptr BSTR): HRESULT {.stdcall.}
-    initEvent*: proc(self: ptr IDOMEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL): HRESULT {.stdcall.}
+    initEvent*: proc(
+      self: ptr IDOMEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
     preventDefault*: proc(self: ptr IDOMEvent): HRESULT {.stdcall.}
     stopPropagation*: proc(self: ptr IDOMEvent): HRESULT {.stdcall.}
     stopImmediatePropagation*: proc(self: ptr IDOMEvent): HRESULT {.stdcall.}
     get_isTrusted*: proc(self: ptr IDOMEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_cancelBubble*: proc(self: ptr IDOMEvent, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_cancelBubble*: proc(self: ptr IDOMEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_srcElement*: proc(self: ptr IDOMEvent, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_cancelBubble*:
+      proc(self: ptr IDOMEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_srcElement*:
+      proc(self: ptr IDOMEvent, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+
   IDocumentEvent* {.pure.} = object
     lpVtbl*: ptr IDocumentEventVtbl
+
   IDocumentEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    createEvent*: proc(self: ptr IDocumentEvent, eventType: BSTR, ppEvent: ptr ptr IDOMEvent): HRESULT {.stdcall.}
+    createEvent*: proc(
+      self: ptr IDocumentEvent, eventType: BSTR, ppEvent: ptr ptr IDOMEvent
+    ): HRESULT {.stdcall.}
+
   IDocumentRange* {.pure.} = object
     lpVtbl*: ptr IDocumentRangeVtbl
+
   IDocumentRangeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    createRange*: proc(self: ptr IDocumentRange, ppIHTMLDOMRange: ptr ptr IHTMLDOMRange): HRESULT {.stdcall.}
+    createRange*: proc(
+      self: ptr IDocumentRange, ppIHTMLDOMRange: ptr ptr IHTMLDOMRange
+    ): HRESULT {.stdcall.}
+
   IDocumentSelector* {.pure.} = object
     lpVtbl*: ptr IDocumentSelectorVtbl
+
   IDocumentSelectorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    querySelector*: proc(self: ptr IDocumentSelector, v: BSTR, pel: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    querySelectorAll*: proc(self: ptr IDocumentSelector, v: BSTR, pel: ptr ptr IHTMLDOMChildrenCollection): HRESULT {.stdcall.}
+    querySelector*: proc(
+      self: ptr IDocumentSelector, v: BSTR, pel: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
+    querySelectorAll*: proc(
+      self: ptr IDocumentSelector, v: BSTR, pel: ptr ptr IHTMLDOMChildrenCollection
+    ): HRESULT {.stdcall.}
+
   IDOMNodeIterator* {.pure.} = object
     lpVtbl*: ptr IDOMNodeIteratorVtbl
+
   IDOMNodeIteratorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_root*: proc(self: ptr IDOMNodeIterator, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_root*:
+      proc(self: ptr IDOMNodeIterator, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_whatToShow*: proc(self: ptr IDOMNodeIterator, p: ptr ULONG): HRESULT {.stdcall.}
-    get_filter*: proc(self: ptr IDOMNodeIterator, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_expandEntityReferences*: proc(self: ptr IDOMNodeIterator, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    nextNode*: proc(self: ptr IDOMNodeIterator, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
-    previousNode*: proc(self: ptr IDOMNodeIterator, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_filter*:
+      proc(self: ptr IDOMNodeIterator, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_expandEntityReferences*:
+      proc(self: ptr IDOMNodeIterator, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    nextNode*: proc(self: ptr IDOMNodeIterator, ppRetNode: ptr ptr IDispatch): HRESULT {.
+      stdcall
+    .}
+    previousNode*: proc(
+      self: ptr IDOMNodeIterator, ppRetNode: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
     detach*: proc(self: ptr IDOMNodeIterator): HRESULT {.stdcall.}
+
   IDOMTreeWalker* {.pure.} = object
     lpVtbl*: ptr IDOMTreeWalkerVtbl
+
   IDOMTreeWalkerVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_root*: proc(self: ptr IDOMTreeWalker, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_whatToShow*: proc(self: ptr IDOMTreeWalker, p: ptr ULONG): HRESULT {.stdcall.}
-    get_filter*: proc(self: ptr IDOMTreeWalker, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_expandEntityReferences*: proc(self: ptr IDOMTreeWalker, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    putref_currentNode*: proc(self: ptr IDOMTreeWalker, v: ptr IDispatch): HRESULT {.stdcall.}
-    get_currentNode*: proc(self: ptr IDOMTreeWalker, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    parentNode*: proc(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
-    firstChild*: proc(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
-    lastChild*: proc(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
-    previousSibling*: proc(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
-    nextSibling*: proc(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
-    previousNode*: proc(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
-    nextNode*: proc(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_filter*:
+      proc(self: ptr IDOMTreeWalker, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_expandEntityReferences*:
+      proc(self: ptr IDOMTreeWalker, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    putref_currentNode*:
+      proc(self: ptr IDOMTreeWalker, v: ptr IDispatch): HRESULT {.stdcall.}
+    get_currentNode*:
+      proc(self: ptr IDOMTreeWalker, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    parentNode*:
+      proc(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
+    firstChild*:
+      proc(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
+    lastChild*:
+      proc(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
+    previousSibling*:
+      proc(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
+    nextSibling*:
+      proc(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
+    previousNode*:
+      proc(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
+    nextNode*:
+      proc(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.stdcall.}
+
   IDocumentTraversal* {.pure.} = object
     lpVtbl*: ptr IDocumentTraversalVtbl
+
   IDocumentTraversalVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    createNodeIterator*: proc(self: ptr IDocumentTraversal, pRootNode: ptr IDispatch, ulWhatToShow: LONG, pFilter: ptr VARIANT, fEntityReferenceExpansion: VARIANT_BOOL, ppNodeIterator: ptr ptr IDOMNodeIterator): HRESULT {.stdcall.}
-    createTreeWalker*: proc(self: ptr IDocumentTraversal, pRootNode: ptr IDispatch, ulWhatToShow: LONG, pFilter: ptr VARIANT, fEntityReferenceExpansion: VARIANT_BOOL, ppTreeWalker: ptr ptr IDOMTreeWalker): HRESULT {.stdcall.}
+    createNodeIterator*: proc(
+      self: ptr IDocumentTraversal,
+      pRootNode: ptr IDispatch,
+      ulWhatToShow: LONG,
+      pFilter: ptr VARIANT,
+      fEntityReferenceExpansion: VARIANT_BOOL,
+      ppNodeIterator: ptr ptr IDOMNodeIterator,
+    ): HRESULT {.stdcall.}
+    createTreeWalker*: proc(
+      self: ptr IDocumentTraversal,
+      pRootNode: ptr IDispatch,
+      ulWhatToShow: LONG,
+      pFilter: ptr VARIANT,
+      fEntityReferenceExpansion: VARIANT_BOOL,
+      ppTreeWalker: ptr ptr IDOMTreeWalker,
+    ): HRESULT {.stdcall.}
+
   DispHTMLDocument* {.pure.} = object
     lpVtbl*: ptr DispHTMLDocumentVtbl
+
   DispHTMLDocumentVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DWebBridgeEvents* {.pure.} = object
     lpVtbl*: ptr DWebBridgeEventsVtbl
+
   DWebBridgeEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IWebBridge* {.pure.} = object
     lpVtbl*: ptr IWebBridgeVtbl
+
   IWebBridgeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_URL*: proc(self: ptr IWebBridge, v: BSTR): HRESULT {.stdcall.}
     get_URL*: proc(self: ptr IWebBridge, p: ptr BSTR): HRESULT {.stdcall.}
@@ -8903,28 +12387,44 @@
     get_event*: proc(self: ptr IWebBridge, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_readyState*: proc(self: ptr IWebBridge, p: ptr LONG): HRESULT {.stdcall.}
     AboutBox*: proc(self: ptr IWebBridge): HRESULT {.stdcall.}
+
   IWBScriptControl* {.pure.} = object
     lpVtbl*: ptr IWBScriptControlVtbl
+
   IWBScriptControlVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    raiseEvent*: proc(self: ptr IWBScriptControl, name: BSTR, eventData: VARIANT): HRESULT {.stdcall.}
+    raiseEvent*: proc(
+      self: ptr IWBScriptControl, name: BSTR, eventData: VARIANT
+    ): HRESULT {.stdcall.}
     bubbleEvent*: proc(self: ptr IWBScriptControl): HRESULT {.stdcall.}
-    setContextMenu*: proc(self: ptr IWBScriptControl, menuItemPairs: VARIANT): HRESULT {.stdcall.}
-    put_selectableContent*: proc(self: ptr IWBScriptControl, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_selectableContent*: proc(self: ptr IWBScriptControl, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_frozen*: proc(self: ptr IWBScriptControl, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_scrollbar*: proc(self: ptr IWBScriptControl, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_scrollbar*: proc(self: ptr IWBScriptControl, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    setContextMenu*:
+      proc(self: ptr IWBScriptControl, menuItemPairs: VARIANT): HRESULT {.stdcall.}
+    put_selectableContent*:
+      proc(self: ptr IWBScriptControl, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_selectableContent*:
+      proc(self: ptr IWBScriptControl, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_frozen*:
+      proc(self: ptr IWBScriptControl, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_scrollbar*:
+      proc(self: ptr IWBScriptControl, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_scrollbar*:
+      proc(self: ptr IWBScriptControl, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_version*: proc(self: ptr IWBScriptControl, p: ptr BSTR): HRESULT {.stdcall.}
-    get_visibility*: proc(self: ptr IWBScriptControl, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_onvisibilitychange*: proc(self: ptr IWBScriptControl, v: VARIANT): HRESULT {.stdcall.}
-    get_onvisibilitychange*: proc(self: ptr IWBScriptControl, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_visibility*:
+      proc(self: ptr IWBScriptControl, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_onvisibilitychange*:
+      proc(self: ptr IWBScriptControl, v: VARIANT): HRESULT {.stdcall.}
+    get_onvisibilitychange*:
+      proc(self: ptr IWBScriptControl, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLEmbedElement* {.pure.} = object
     lpVtbl*: ptr IHTMLEmbedElementVtbl
+
   IHTMLEmbedElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_hidden*: proc(self: ptr IHTMLEmbedElement, v: BSTR): HRESULT {.stdcall.}
     get_hidden*: proc(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_palette*: proc(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_pluginspage*: proc(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_pluginspage*:
+      proc(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_src*: proc(self: ptr IHTMLEmbedElement, v: BSTR): HRESULT {.stdcall.}
     get_src*: proc(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_units*: proc(self: ptr IHTMLEmbedElement, v: BSTR): HRESULT {.stdcall.}
@@ -8935,65 +12435,107 @@
     get_width*: proc(self: ptr IHTMLEmbedElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_height*: proc(self: ptr IHTMLEmbedElement, v: VARIANT): HRESULT {.stdcall.}
     get_height*: proc(self: ptr IHTMLEmbedElement, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLEmbedElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLEmbedElement2Vtbl
+
   IHTMLEmbedElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_src*: proc(self: ptr IHTMLEmbedElement2, v: BSTR): HRESULT {.stdcall.}
     get_src*: proc(self: ptr IHTMLEmbedElement2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_pluginspage*: proc(self: ptr IHTMLEmbedElement2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_pluginspage*:
+      proc(self: ptr IHTMLEmbedElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLEmbed* {.pure.} = object
     lpVtbl*: ptr DispHTMLEmbedVtbl
+
   DispHTMLEmbedVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLMapEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLMapEvents2Vtbl
+
   HTMLMapEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLMapEvents* {.pure.} = object
     lpVtbl*: ptr HTMLMapEventsVtbl
+
   HTMLMapEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLAreasCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLAreasCollectionVtbl
+
   IHTMLAreasCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_length*: proc(self: ptr IHTMLAreasCollection, v: LONG): HRESULT {.stdcall.}
     get_length*: proc(self: ptr IHTMLAreasCollection, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IHTMLAreasCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLAreasCollection, name: VARIANT, index: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
-    tags*: proc(self: ptr IHTMLAreasCollection, tagName: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
-    add*: proc(self: ptr IHTMLAreasCollection, element: ptr IHTMLElement, before: VARIANT): HRESULT {.stdcall.}
+    get_newEnum*:
+      proc(self: ptr IHTMLAreasCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLAreasCollection,
+      name: VARIANT,
+      index: VARIANT,
+      pdisp: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
+    tags*: proc(
+      self: ptr IHTMLAreasCollection, tagName: VARIANT, pdisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    add*: proc(
+      self: ptr IHTMLAreasCollection, element: ptr IHTMLElement, before: VARIANT
+    ): HRESULT {.stdcall.}
     remove*: proc(self: ptr IHTMLAreasCollection, index: LONG): HRESULT {.stdcall.}
+
   IHTMLAreasCollection2* {.pure.} = object
     lpVtbl*: ptr IHTMLAreasCollection2Vtbl
+
   IHTMLAreasCollection2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    urns*: proc(self: ptr IHTMLAreasCollection2, urn: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    urns*: proc(
+      self: ptr IHTMLAreasCollection2, urn: VARIANT, pdisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLAreasCollection3* {.pure.} = object
     lpVtbl*: ptr IHTMLAreasCollection3Vtbl
+
   IHTMLAreasCollection3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    namedItem*: proc(self: ptr IHTMLAreasCollection3, name: BSTR, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    namedItem*: proc(
+      self: ptr IHTMLAreasCollection3, name: BSTR, pdisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLAreasCollection4* {.pure.} = object
     lpVtbl*: ptr IHTMLAreasCollection4Vtbl
+
   IHTMLAreasCollection4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_length*: proc(self: ptr IHTMLAreasCollection4, p: ptr LONG): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLAreasCollection4, index: LONG, pNode: ptr ptr IHTMLElement2): HRESULT {.stdcall.}
-    namedItem*: proc(self: ptr IHTMLAreasCollection4, name: BSTR, pNode: ptr ptr IHTMLElement2): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLAreasCollection4, index: LONG, pNode: ptr ptr IHTMLElement2
+    ): HRESULT {.stdcall.}
+    namedItem*: proc(
+      self: ptr IHTMLAreasCollection4, name: BSTR, pNode: ptr ptr IHTMLElement2
+    ): HRESULT {.stdcall.}
+
   IHTMLMapElement* {.pure.} = object
     lpVtbl*: ptr IHTMLMapElementVtbl
+
   IHTMLMapElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_areas*: proc(self: ptr IHTMLMapElement, p: ptr ptr IHTMLAreasCollection): HRESULT {.stdcall.}
+    get_areas*: proc(
+      self: ptr IHTMLMapElement, p: ptr ptr IHTMLAreasCollection
+    ): HRESULT {.stdcall.}
     put_name*: proc(self: ptr IHTMLMapElement, v: BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTMLMapElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLAreasCollection* {.pure.} = object
     lpVtbl*: ptr DispHTMLAreasCollectionVtbl
+
   DispHTMLAreasCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLMapElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLMapElementVtbl
+
   DispHTMLMapElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLAreaEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLAreaEvents2Vtbl
+
   HTMLAreaEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLAreaEvents* {.pure.} = object
     lpVtbl*: ptr HTMLAreaEventsVtbl
+
   HTMLAreaEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLAreaElement* {.pure.} = object
     lpVtbl*: ptr IHTMLAreaElementVtbl
+
   IHTMLAreaElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_shape*: proc(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.stdcall.}
     get_shape*: proc(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.stdcall.}
@@ -9006,7 +12548,8 @@
     put_alt*: proc(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.stdcall.}
     get_alt*: proc(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_noHref*: proc(self: ptr IHTMLAreaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_noHref*: proc(self: ptr IHTMLAreaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_noHref*:
+      proc(self: ptr IHTMLAreaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_host*: proc(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.stdcall.}
     get_host*: proc(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_hostname*: proc(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.stdcall.}
@@ -9029,8 +12572,10 @@
     get_tabIndex*: proc(self: ptr IHTMLAreaElement, p: ptr int16): HRESULT {.stdcall.}
     focus*: proc(self: ptr IHTMLAreaElement): HRESULT {.stdcall.}
     blur*: proc(self: ptr IHTMLAreaElement): HRESULT {.stdcall.}
+
   IHTMLAreaElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLAreaElement2Vtbl
+
   IHTMLAreaElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_shape*: proc(self: ptr IHTMLAreaElement2, v: BSTR): HRESULT {.stdcall.}
     get_shape*: proc(self: ptr IHTMLAreaElement2, p: ptr BSTR): HRESULT {.stdcall.}
@@ -9038,79 +12583,125 @@
     get_coords*: proc(self: ptr IHTMLAreaElement2, p: ptr BSTR): HRESULT {.stdcall.}
     put_href*: proc(self: ptr IHTMLAreaElement2, v: BSTR): HRESULT {.stdcall.}
     get_href*: proc(self: ptr IHTMLAreaElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLAreaElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLAreaElementVtbl
+
   DispHTMLAreaElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLTableCaption* {.pure.} = object
     lpVtbl*: ptr IHTMLTableCaptionVtbl
+
   IHTMLTableCaptionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_align*: proc(self: ptr IHTMLTableCaption, v: BSTR): HRESULT {.stdcall.}
     get_align*: proc(self: ptr IHTMLTableCaption, p: ptr BSTR): HRESULT {.stdcall.}
     put_vAlign*: proc(self: ptr IHTMLTableCaption, v: BSTR): HRESULT {.stdcall.}
     get_vAlign*: proc(self: ptr IHTMLTableCaption, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLTableCaption* {.pure.} = object
     lpVtbl*: ptr DispHTMLTableCaptionVtbl
+
   DispHTMLTableCaptionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLCommentElement* {.pure.} = object
     lpVtbl*: ptr IHTMLCommentElementVtbl
+
   IHTMLCommentElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_text*: proc(self: ptr IHTMLCommentElement, v: BSTR): HRESULT {.stdcall.}
     get_text*: proc(self: ptr IHTMLCommentElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_atomic*: proc(self: ptr IHTMLCommentElement, v: LONG): HRESULT {.stdcall.}
     get_atomic*: proc(self: ptr IHTMLCommentElement, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLCommentElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLCommentElement2Vtbl
+
   IHTMLCommentElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_data*: proc(self: ptr IHTMLCommentElement2, v: BSTR): HRESULT {.stdcall.}
     get_data*: proc(self: ptr IHTMLCommentElement2, p: ptr BSTR): HRESULT {.stdcall.}
     get_length*: proc(self: ptr IHTMLCommentElement2, p: ptr LONG): HRESULT {.stdcall.}
-    substringData*: proc(self: ptr IHTMLCommentElement2, offset: LONG, Count: LONG, pbstrsubString: ptr BSTR): HRESULT {.stdcall.}
-    appendData*: proc(self: ptr IHTMLCommentElement2, bstrstring: BSTR): HRESULT {.stdcall.}
-    insertData*: proc(self: ptr IHTMLCommentElement2, offset: LONG, bstrstring: BSTR): HRESULT {.stdcall.}
-    deleteData*: proc(self: ptr IHTMLCommentElement2, offset: LONG, Count: LONG): HRESULT {.stdcall.}
-    replaceData*: proc(self: ptr IHTMLCommentElement2, offset: LONG, Count: LONG, bstrstring: BSTR): HRESULT {.stdcall.}
+    substringData*: proc(
+      self: ptr IHTMLCommentElement2,
+      offset: LONG,
+      Count: LONG,
+      pbstrsubString: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    appendData*:
+      proc(self: ptr IHTMLCommentElement2, bstrstring: BSTR): HRESULT {.stdcall.}
+    insertData*: proc(
+      self: ptr IHTMLCommentElement2, offset: LONG, bstrstring: BSTR
+    ): HRESULT {.stdcall.}
+    deleteData*: proc(
+      self: ptr IHTMLCommentElement2, offset: LONG, Count: LONG
+    ): HRESULT {.stdcall.}
+    replaceData*: proc(
+      self: ptr IHTMLCommentElement2, offset: LONG, Count: LONG, bstrstring: BSTR
+    ): HRESULT {.stdcall.}
+
   IHTMLCommentElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLCommentElement3Vtbl
+
   IHTMLCommentElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    substringData*: proc(self: ptr IHTMLCommentElement3, offset: LONG, Count: LONG, pbstrsubString: ptr BSTR): HRESULT {.stdcall.}
-    insertData*: proc(self: ptr IHTMLCommentElement3, offset: LONG, bstrstring: BSTR): HRESULT {.stdcall.}
-    deleteData*: proc(self: ptr IHTMLCommentElement3, offset: LONG, Count: LONG): HRESULT {.stdcall.}
-    replaceData*: proc(self: ptr IHTMLCommentElement3, offset: LONG, Count: LONG, bstrstring: BSTR): HRESULT {.stdcall.}
+    substringData*: proc(
+      self: ptr IHTMLCommentElement3,
+      offset: LONG,
+      Count: LONG,
+      pbstrsubString: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    insertData*: proc(
+      self: ptr IHTMLCommentElement3, offset: LONG, bstrstring: BSTR
+    ): HRESULT {.stdcall.}
+    deleteData*: proc(
+      self: ptr IHTMLCommentElement3, offset: LONG, Count: LONG
+    ): HRESULT {.stdcall.}
+    replaceData*: proc(
+      self: ptr IHTMLCommentElement3, offset: LONG, Count: LONG, bstrstring: BSTR
+    ): HRESULT {.stdcall.}
+
   DispHTMLCommentElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLCommentElementVtbl
+
   DispHTMLCommentElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLPhraseElement* {.pure.} = object
     lpVtbl*: ptr IHTMLPhraseElementVtbl
+
   IHTMLPhraseElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLPhraseElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLPhraseElement2Vtbl
+
   IHTMLPhraseElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_cite*: proc(self: ptr IHTMLPhraseElement2, v: BSTR): HRESULT {.stdcall.}
     get_cite*: proc(self: ptr IHTMLPhraseElement2, p: ptr BSTR): HRESULT {.stdcall.}
     put_dateTime*: proc(self: ptr IHTMLPhraseElement2, v: BSTR): HRESULT {.stdcall.}
     get_dateTime*: proc(self: ptr IHTMLPhraseElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLPhraseElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLPhraseElement3Vtbl
+
   IHTMLPhraseElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_cite*: proc(self: ptr IHTMLPhraseElement3, v: BSTR): HRESULT {.stdcall.}
     get_cite*: proc(self: ptr IHTMLPhraseElement3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLSpanElement* {.pure.} = object
     lpVtbl*: ptr IHTMLSpanElementVtbl
+
   IHTMLSpanElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLPhraseElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLPhraseElementVtbl
+
   DispHTMLPhraseElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLSpanElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLSpanElementVtbl
+
   DispHTMLSpanElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLTableEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLTableEvents2Vtbl
+
   HTMLTableEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLTableEvents* {.pure.} = object
     lpVtbl*: ptr HTMLTableEventsVtbl
+
   HTMLTableEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLTableSection* {.pure.} = object
     lpVtbl*: ptr IHTMLTableSectionVtbl
+
   IHTMLTableSectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_align*: proc(self: ptr IHTMLTableSection, v: BSTR): HRESULT {.stdcall.}
     get_align*: proc(self: ptr IHTMLTableSection, p: ptr BSTR): HRESULT {.stdcall.}
@@ -9118,11 +12709,17 @@
     get_vAlign*: proc(self: ptr IHTMLTableSection, p: ptr BSTR): HRESULT {.stdcall.}
     put_bgColor*: proc(self: ptr IHTMLTableSection, v: VARIANT): HRESULT {.stdcall.}
     get_bgColor*: proc(self: ptr IHTMLTableSection, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_rows*: proc(self: ptr IHTMLTableSection, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    insertRow*: proc(self: ptr IHTMLTableSection, index: LONG, row: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_rows*: proc(
+      self: ptr IHTMLTableSection, p: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
+    insertRow*: proc(
+      self: ptr IHTMLTableSection, index: LONG, row: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
     deleteRow*: proc(self: ptr IHTMLTableSection, index: LONG): HRESULT {.stdcall.}
+
   IHTMLTable* {.pure.} = object
     lpVtbl*: ptr IHTMLTableVtbl
+
   IHTMLTableVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_cols*: proc(self: ptr IHTMLTable, v: LONG): HRESULT {.stdcall.}
     get_cols*: proc(self: ptr IHTMLTable, p: ptr LONG): HRESULT {.stdcall.}
@@ -9143,13 +12740,16 @@
     put_borderColor*: proc(self: ptr IHTMLTable, v: VARIANT): HRESULT {.stdcall.}
     get_borderColor*: proc(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.stdcall.}
     put_borderColorLight*: proc(self: ptr IHTMLTable, v: VARIANT): HRESULT {.stdcall.}
-    get_borderColorLight*: proc(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderColorLight*:
+      proc(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.stdcall.}
     put_borderColorDark*: proc(self: ptr IHTMLTable, v: VARIANT): HRESULT {.stdcall.}
-    get_borderColorDark*: proc(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderColorDark*:
+      proc(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.stdcall.}
     put_align*: proc(self: ptr IHTMLTable, v: BSTR): HRESULT {.stdcall.}
     get_align*: proc(self: ptr IHTMLTable, p: ptr BSTR): HRESULT {.stdcall.}
     refresh*: proc(self: ptr IHTMLTable): HRESULT {.stdcall.}
-    get_rows*: proc(self: ptr IHTMLTable, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
+    get_rows*:
+      proc(self: ptr IHTMLTable, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
     put_width*: proc(self: ptr IHTMLTable, v: VARIANT): HRESULT {.stdcall.}
     get_width*: proc(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.stdcall.}
     put_height*: proc(self: ptr IHTMLTable, v: VARIANT): HRESULT {.stdcall.}
@@ -9158,47 +12758,79 @@
     get_dataPageSize*: proc(self: ptr IHTMLTable, p: ptr LONG): HRESULT {.stdcall.}
     nextPage*: proc(self: ptr IHTMLTable): HRESULT {.stdcall.}
     previousPage*: proc(self: ptr IHTMLTable): HRESULT {.stdcall.}
-    get_tHead*: proc(self: ptr IHTMLTable, p: ptr ptr IHTMLTableSection): HRESULT {.stdcall.}
-    get_tFoot*: proc(self: ptr IHTMLTable, p: ptr ptr IHTMLTableSection): HRESULT {.stdcall.}
-    get_tBodies*: proc(self: ptr IHTMLTable, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    get_caption*: proc(self: ptr IHTMLTable, p: ptr ptr IHTMLTableCaption): HRESULT {.stdcall.}
-    createTHead*: proc(self: ptr IHTMLTable, head: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_tHead*:
+      proc(self: ptr IHTMLTable, p: ptr ptr IHTMLTableSection): HRESULT {.stdcall.}
+    get_tFoot*:
+      proc(self: ptr IHTMLTable, p: ptr ptr IHTMLTableSection): HRESULT {.stdcall.}
+    get_tBodies*:
+      proc(self: ptr IHTMLTable, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
+    get_caption*:
+      proc(self: ptr IHTMLTable, p: ptr ptr IHTMLTableCaption): HRESULT {.stdcall.}
+    createTHead*:
+      proc(self: ptr IHTMLTable, head: ptr ptr IDispatch): HRESULT {.stdcall.}
     deleteTHead*: proc(self: ptr IHTMLTable): HRESULT {.stdcall.}
-    createTFoot*: proc(self: ptr IHTMLTable, foot: ptr ptr IDispatch): HRESULT {.stdcall.}
+    createTFoot*:
+      proc(self: ptr IHTMLTable, foot: ptr ptr IDispatch): HRESULT {.stdcall.}
     deleteTFoot*: proc(self: ptr IHTMLTable): HRESULT {.stdcall.}
-    createCaption*: proc(self: ptr IHTMLTable, caption: ptr ptr IHTMLTableCaption): HRESULT {.stdcall.}
+    createCaption*: proc(
+      self: ptr IHTMLTable, caption: ptr ptr IHTMLTableCaption
+    ): HRESULT {.stdcall.}
     deleteCaption*: proc(self: ptr IHTMLTable): HRESULT {.stdcall.}
-    insertRow*: proc(self: ptr IHTMLTable, index: LONG, row: ptr ptr IDispatch): HRESULT {.stdcall.}
+    insertRow*: proc(self: ptr IHTMLTable, index: LONG, row: ptr ptr IDispatch): HRESULT {.
+      stdcall
+    .}
     deleteRow*: proc(self: ptr IHTMLTable, index: LONG): HRESULT {.stdcall.}
     get_readyState*: proc(self: ptr IHTMLTable, p: ptr BSTR): HRESULT {.stdcall.}
     put_onreadystatechange*: proc(self: ptr IHTMLTable, v: VARIANT): HRESULT {.stdcall.}
-    get_onreadystatechange*: proc(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onreadystatechange*:
+      proc(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLTable2* {.pure.} = object
     lpVtbl*: ptr IHTMLTable2Vtbl
+
   IHTMLTable2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     firstPage*: proc(self: ptr IHTMLTable2): HRESULT {.stdcall.}
     lastPage*: proc(self: ptr IHTMLTable2): HRESULT {.stdcall.}
-    get_cells*: proc(self: ptr IHTMLTable2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    moveRow*: proc(self: ptr IHTMLTable2, indexFrom: LONG, indexTo: LONG, row: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_cells*: proc(self: ptr IHTMLTable2, p: ptr ptr IHTMLElementCollection): HRESULT {.
+      stdcall
+    .}
+    moveRow*: proc(
+      self: ptr IHTMLTable2, indexFrom: LONG, indexTo: LONG, row: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLTable3* {.pure.} = object
     lpVtbl*: ptr IHTMLTable3Vtbl
+
   IHTMLTable3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_summary*: proc(self: ptr IHTMLTable3, v: BSTR): HRESULT {.stdcall.}
     get_summary*: proc(self: ptr IHTMLTable3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLTable4* {.pure.} = object
     lpVtbl*: ptr IHTMLTable4Vtbl
+
   IHTMLTable4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_tHead*: proc(self: ptr IHTMLTable4, v: ptr IHTMLTableSection): HRESULT {.stdcall.}
-    get_tHead*: proc(self: ptr IHTMLTable4, p: ptr ptr IHTMLTableSection): HRESULT {.stdcall.}
-    putref_tFoot*: proc(self: ptr IHTMLTable4, v: ptr IHTMLTableSection): HRESULT {.stdcall.}
-    get_tFoot*: proc(self: ptr IHTMLTable4, p: ptr ptr IHTMLTableSection): HRESULT {.stdcall.}
-    putref_caption*: proc(self: ptr IHTMLTable4, v: ptr IHTMLTableCaption): HRESULT {.stdcall.}
-    get_caption*: proc(self: ptr IHTMLTable4, p: ptr ptr IHTMLTableCaption): HRESULT {.stdcall.}
-    insertRow*: proc(self: ptr IHTMLTable4, index: LONG, row: ptr ptr IDispatch): HRESULT {.stdcall.}
+    putref_tHead*:
+      proc(self: ptr IHTMLTable4, v: ptr IHTMLTableSection): HRESULT {.stdcall.}
+    get_tHead*:
+      proc(self: ptr IHTMLTable4, p: ptr ptr IHTMLTableSection): HRESULT {.stdcall.}
+    putref_tFoot*:
+      proc(self: ptr IHTMLTable4, v: ptr IHTMLTableSection): HRESULT {.stdcall.}
+    get_tFoot*:
+      proc(self: ptr IHTMLTable4, p: ptr ptr IHTMLTableSection): HRESULT {.stdcall.}
+    putref_caption*:
+      proc(self: ptr IHTMLTable4, v: ptr IHTMLTableCaption): HRESULT {.stdcall.}
+    get_caption*:
+      proc(self: ptr IHTMLTable4, p: ptr ptr IHTMLTableCaption): HRESULT {.stdcall.}
+    insertRow*: proc(
+      self: ptr IHTMLTable4, index: LONG, row: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
     deleteRow*: proc(self: ptr IHTMLTable4, index: LONG): HRESULT {.stdcall.}
-    createTBody*: proc(self: ptr IHTMLTable4, tbody: ptr ptr IHTMLTableSection): HRESULT {.stdcall.}
+    createTBody*:
+      proc(self: ptr IHTMLTable4, tbody: ptr ptr IHTMLTableSection): HRESULT {.stdcall.}
+
   IHTMLTableCol* {.pure.} = object
     lpVtbl*: ptr IHTMLTableColVtbl
+
   IHTMLTableColVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_span*: proc(self: ptr IHTMLTableCol, v: LONG): HRESULT {.stdcall.}
     get_span*: proc(self: ptr IHTMLTableCol, p: ptr LONG): HRESULT {.stdcall.}
@@ -9208,42 +12840,61 @@
     get_align*: proc(self: ptr IHTMLTableCol, p: ptr BSTR): HRESULT {.stdcall.}
     put_vAlign*: proc(self: ptr IHTMLTableCol, v: BSTR): HRESULT {.stdcall.}
     get_vAlign*: proc(self: ptr IHTMLTableCol, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLTableCol2* {.pure.} = object
     lpVtbl*: ptr IHTMLTableCol2Vtbl
+
   IHTMLTableCol2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_ch*: proc(self: ptr IHTMLTableCol2, v: BSTR): HRESULT {.stdcall.}
     get_ch*: proc(self: ptr IHTMLTableCol2, p: ptr BSTR): HRESULT {.stdcall.}
     put_chOff*: proc(self: ptr IHTMLTableCol2, v: BSTR): HRESULT {.stdcall.}
     get_chOff*: proc(self: ptr IHTMLTableCol2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLTableCol3* {.pure.} = object
     lpVtbl*: ptr IHTMLTableCol3Vtbl
+
   IHTMLTableCol3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_ch*: proc(self: ptr IHTMLTableCol3, v: BSTR): HRESULT {.stdcall.}
     get_ch*: proc(self: ptr IHTMLTableCol3, p: ptr BSTR): HRESULT {.stdcall.}
     put_chOff*: proc(self: ptr IHTMLTableCol3, v: BSTR): HRESULT {.stdcall.}
     get_chOff*: proc(self: ptr IHTMLTableCol3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLTableSection2* {.pure.} = object
     lpVtbl*: ptr IHTMLTableSection2Vtbl
+
   IHTMLTableSection2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    moveRow*: proc(self: ptr IHTMLTableSection2, indexFrom: LONG, indexTo: LONG, row: ptr ptr IDispatch): HRESULT {.stdcall.}
+    moveRow*: proc(
+      self: ptr IHTMLTableSection2,
+      indexFrom: LONG,
+      indexTo: LONG,
+      row: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
+
   IHTMLTableSection3* {.pure.} = object
     lpVtbl*: ptr IHTMLTableSection3Vtbl
+
   IHTMLTableSection3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_ch*: proc(self: ptr IHTMLTableSection3, v: BSTR): HRESULT {.stdcall.}
     get_ch*: proc(self: ptr IHTMLTableSection3, p: ptr BSTR): HRESULT {.stdcall.}
     put_chOff*: proc(self: ptr IHTMLTableSection3, v: BSTR): HRESULT {.stdcall.}
     get_chOff*: proc(self: ptr IHTMLTableSection3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLTableSection4* {.pure.} = object
     lpVtbl*: ptr IHTMLTableSection4Vtbl
+
   IHTMLTableSection4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_ch*: proc(self: ptr IHTMLTableSection4, v: BSTR): HRESULT {.stdcall.}
     get_ch*: proc(self: ptr IHTMLTableSection4, p: ptr BSTR): HRESULT {.stdcall.}
     put_chOff*: proc(self: ptr IHTMLTableSection4, v: BSTR): HRESULT {.stdcall.}
     get_chOff*: proc(self: ptr IHTMLTableSection4, p: ptr BSTR): HRESULT {.stdcall.}
-    insertRow*: proc(self: ptr IHTMLTableSection4, index: LONG, row: ptr ptr IDispatch): HRESULT {.stdcall.}
+    insertRow*: proc(
+      self: ptr IHTMLTableSection4, index: LONG, row: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
     deleteRow*: proc(self: ptr IHTMLTableSection4, index: LONG): HRESULT {.stdcall.}
+
   IHTMLTableRow* {.pure.} = object
     lpVtbl*: ptr IHTMLTableRowVtbl
+
   IHTMLTableRowVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_align*: proc(self: ptr IHTMLTableRow, v: BSTR): HRESULT {.stdcall.}
     get_align*: proc(self: ptr IHTMLTableRow, p: ptr BSTR): HRESULT {.stdcall.}
@@ -9253,45 +12904,69 @@
     get_bgColor*: proc(self: ptr IHTMLTableRow, p: ptr VARIANT): HRESULT {.stdcall.}
     put_borderColor*: proc(self: ptr IHTMLTableRow, v: VARIANT): HRESULT {.stdcall.}
     get_borderColor*: proc(self: ptr IHTMLTableRow, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderColorLight*: proc(self: ptr IHTMLTableRow, v: VARIANT): HRESULT {.stdcall.}
-    get_borderColorLight*: proc(self: ptr IHTMLTableRow, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderColorLight*:
+      proc(self: ptr IHTMLTableRow, v: VARIANT): HRESULT {.stdcall.}
+    get_borderColorLight*:
+      proc(self: ptr IHTMLTableRow, p: ptr VARIANT): HRESULT {.stdcall.}
     put_borderColorDark*: proc(self: ptr IHTMLTableRow, v: VARIANT): HRESULT {.stdcall.}
-    get_borderColorDark*: proc(self: ptr IHTMLTableRow, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderColorDark*:
+      proc(self: ptr IHTMLTableRow, p: ptr VARIANT): HRESULT {.stdcall.}
     get_rowIndex*: proc(self: ptr IHTMLTableRow, p: ptr LONG): HRESULT {.stdcall.}
-    get_sectionRowIndex*: proc(self: ptr IHTMLTableRow, p: ptr LONG): HRESULT {.stdcall.}
-    get_cells*: proc(self: ptr IHTMLTableRow, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
-    insertCell*: proc(self: ptr IHTMLTableRow, index: LONG, row: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_sectionRowIndex*:
+      proc(self: ptr IHTMLTableRow, p: ptr LONG): HRESULT {.stdcall.}
+    get_cells*: proc(
+      self: ptr IHTMLTableRow, p: ptr ptr IHTMLElementCollection
+    ): HRESULT {.stdcall.}
+    insertCell*: proc(
+      self: ptr IHTMLTableRow, index: LONG, row: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
     deleteCell*: proc(self: ptr IHTMLTableRow, index: LONG): HRESULT {.stdcall.}
+
   IHTMLTableRow2* {.pure.} = object
     lpVtbl*: ptr IHTMLTableRow2Vtbl
+
   IHTMLTableRow2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_height*: proc(self: ptr IHTMLTableRow2, v: VARIANT): HRESULT {.stdcall.}
     get_height*: proc(self: ptr IHTMLTableRow2, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLTableRow3* {.pure.} = object
     lpVtbl*: ptr IHTMLTableRow3Vtbl
+
   IHTMLTableRow3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_ch*: proc(self: ptr IHTMLTableRow3, v: BSTR): HRESULT {.stdcall.}
     get_ch*: proc(self: ptr IHTMLTableRow3, p: ptr BSTR): HRESULT {.stdcall.}
     put_chOff*: proc(self: ptr IHTMLTableRow3, v: BSTR): HRESULT {.stdcall.}
     get_chOff*: proc(self: ptr IHTMLTableRow3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLTableRow4* {.pure.} = object
     lpVtbl*: ptr IHTMLTableRow4Vtbl
+
   IHTMLTableRow4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_ch*: proc(self: ptr IHTMLTableRow4, v: BSTR): HRESULT {.stdcall.}
     get_ch*: proc(self: ptr IHTMLTableRow4, p: ptr BSTR): HRESULT {.stdcall.}
     put_chOff*: proc(self: ptr IHTMLTableRow4, v: BSTR): HRESULT {.stdcall.}
     get_chOff*: proc(self: ptr IHTMLTableRow4, p: ptr BSTR): HRESULT {.stdcall.}
-    insertCell*: proc(self: ptr IHTMLTableRow4, index: LONG, row: ptr ptr IDispatch): HRESULT {.stdcall.}
+    insertCell*: proc(
+      self: ptr IHTMLTableRow4, index: LONG, row: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
     deleteCell*: proc(self: ptr IHTMLTableRow4, index: LONG): HRESULT {.stdcall.}
+
   IHTMLTableRowMetrics* {.pure.} = object
     lpVtbl*: ptr IHTMLTableRowMetricsVtbl
+
   IHTMLTableRowMetricsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_clientHeight*: proc(self: ptr IHTMLTableRowMetrics, p: ptr LONG): HRESULT {.stdcall.}
-    get_clientWidth*: proc(self: ptr IHTMLTableRowMetrics, p: ptr LONG): HRESULT {.stdcall.}
-    get_clientTop*: proc(self: ptr IHTMLTableRowMetrics, p: ptr LONG): HRESULT {.stdcall.}
-    get_clientLeft*: proc(self: ptr IHTMLTableRowMetrics, p: ptr LONG): HRESULT {.stdcall.}
+    get_clientHeight*:
+      proc(self: ptr IHTMLTableRowMetrics, p: ptr LONG): HRESULT {.stdcall.}
+    get_clientWidth*:
+      proc(self: ptr IHTMLTableRowMetrics, p: ptr LONG): HRESULT {.stdcall.}
+    get_clientTop*:
+      proc(self: ptr IHTMLTableRowMetrics, p: ptr LONG): HRESULT {.stdcall.}
+    get_clientLeft*:
+      proc(self: ptr IHTMLTableRowMetrics, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLTableCell* {.pure.} = object
     lpVtbl*: ptr IHTMLTableCellVtbl
+
   IHTMLTableCellVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_rowSpan*: proc(self: ptr IHTMLTableCell, v: LONG): HRESULT {.stdcall.}
     get_rowSpan*: proc(self: ptr IHTMLTableCell, p: ptr LONG): HRESULT {.stdcall.}
@@ -9304,22 +12979,30 @@
     put_bgColor*: proc(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.stdcall.}
     get_bgColor*: proc(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.stdcall.}
     put_noWrap*: proc(self: ptr IHTMLTableCell, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_noWrap*: proc(self: ptr IHTMLTableCell, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_noWrap*:
+      proc(self: ptr IHTMLTableCell, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_background*: proc(self: ptr IHTMLTableCell, v: BSTR): HRESULT {.stdcall.}
     get_background*: proc(self: ptr IHTMLTableCell, p: ptr BSTR): HRESULT {.stdcall.}
     put_borderColor*: proc(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.stdcall.}
-    get_borderColor*: proc(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderColorLight*: proc(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.stdcall.}
-    get_borderColorLight*: proc(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderColorDark*: proc(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.stdcall.}
-    get_borderColorDark*: proc(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderColor*:
+      proc(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderColorLight*:
+      proc(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.stdcall.}
+    get_borderColorLight*:
+      proc(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderColorDark*:
+      proc(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.stdcall.}
+    get_borderColorDark*:
+      proc(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.stdcall.}
     put_width*: proc(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.stdcall.}
     get_width*: proc(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.stdcall.}
     put_height*: proc(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.stdcall.}
     get_height*: proc(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.stdcall.}
     get_cellIndex*: proc(self: ptr IHTMLTableCell, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLTableCell2* {.pure.} = object
     lpVtbl*: ptr IHTMLTableCell2Vtbl
+
   IHTMLTableCell2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_abbr*: proc(self: ptr IHTMLTableCell2, v: BSTR): HRESULT {.stdcall.}
     get_abbr*: proc(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.stdcall.}
@@ -9333,36 +13016,47 @@
     get_headers*: proc(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.stdcall.}
     put_scope*: proc(self: ptr IHTMLTableCell2, v: BSTR): HRESULT {.stdcall.}
     get_scope*: proc(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLTableCell3* {.pure.} = object
     lpVtbl*: ptr IHTMLTableCell3Vtbl
+
   IHTMLTableCell3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_ch*: proc(self: ptr IHTMLTableCell3, v: BSTR): HRESULT {.stdcall.}
     get_ch*: proc(self: ptr IHTMLTableCell3, p: ptr BSTR): HRESULT {.stdcall.}
     put_chOff*: proc(self: ptr IHTMLTableCell3, v: BSTR): HRESULT {.stdcall.}
     get_chOff*: proc(self: ptr IHTMLTableCell3, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLTable* {.pure.} = object
     lpVtbl*: ptr DispHTMLTableVtbl
+
   DispHTMLTableVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLTableCol* {.pure.} = object
     lpVtbl*: ptr DispHTMLTableColVtbl
+
   DispHTMLTableColVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLTableSection* {.pure.} = object
     lpVtbl*: ptr DispHTMLTableSectionVtbl
+
   DispHTMLTableSectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLTableRow* {.pure.} = object
     lpVtbl*: ptr DispHTMLTableRowVtbl
+
   DispHTMLTableRowVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLTableCell* {.pure.} = object
     lpVtbl*: ptr DispHTMLTableCellVtbl
+
   DispHTMLTableCellVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLScriptEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLScriptEvents2Vtbl
+
   HTMLScriptEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLScriptEvents* {.pure.} = object
     lpVtbl*: ptr HTMLScriptEventsVtbl
+
   HTMLScriptEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLScriptElement* {.pure.} = object
     lpVtbl*: ptr IHTMLScriptElementVtbl
+
   IHTMLScriptElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_src*: proc(self: ptr IHTMLScriptElement, v: BSTR): HRESULT {.stdcall.}
     get_src*: proc(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.stdcall.}
@@ -9373,49 +13067,69 @@
     put_text*: proc(self: ptr IHTMLScriptElement, v: BSTR): HRESULT {.stdcall.}
     get_text*: proc(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_defer*: proc(self: ptr IHTMLScriptElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_defer*: proc(self: ptr IHTMLScriptElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_readyState*: proc(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_defer*:
+      proc(self: ptr IHTMLScriptElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_readyState*:
+      proc(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_onerror*: proc(self: ptr IHTMLScriptElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onerror*: proc(self: ptr IHTMLScriptElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onerror*:
+      proc(self: ptr IHTMLScriptElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_type*: proc(self: ptr IHTMLScriptElement, v: BSTR): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLScriptElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLScriptElement2Vtbl
+
   IHTMLScriptElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_charset*: proc(self: ptr IHTMLScriptElement2, v: BSTR): HRESULT {.stdcall.}
     get_charset*: proc(self: ptr IHTMLScriptElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLScriptElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLScriptElement3Vtbl
+
   IHTMLScriptElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_src*: proc(self: ptr IHTMLScriptElement3, v: BSTR): HRESULT {.stdcall.}
     get_src*: proc(self: ptr IHTMLScriptElement3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLScriptElement4* {.pure.} = object
     lpVtbl*: ptr IHTMLScriptElement4Vtbl
+
   IHTMLScriptElement4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_usedCharset*: proc(self: ptr IHTMLScriptElement4, p: ptr BSTR): HRESULT {.stdcall.}
+    get_usedCharset*:
+      proc(self: ptr IHTMLScriptElement4, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLScriptElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLScriptElementVtbl
+
   DispHTMLScriptElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLNoShowElement* {.pure.} = object
     lpVtbl*: ptr IHTMLNoShowElementVtbl
+
   IHTMLNoShowElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLNoShowElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLNoShowElementVtbl
+
   DispHTMLNoShowElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLObjectElementEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLObjectElementEvents2Vtbl
+
   HTMLObjectElementEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLObjectElementEvents* {.pure.} = object
     lpVtbl*: ptr HTMLObjectElementEventsVtbl
+
   HTMLObjectElementEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLObjectElement* {.pure.} = object
     lpVtbl*: ptr IHTMLObjectElementVtbl
+
   IHTMLObjectElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_object*: proc(self: ptr IHTMLObjectElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_object*:
+      proc(self: ptr IHTMLObjectElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_classid*: proc(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_data*: proc(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.stdcall.}
-    putref_recordset*: proc(self: ptr IHTMLObjectElement, v: ptr IDispatch): HRESULT {.stdcall.}
-    get_recordset*: proc(self: ptr IHTMLObjectElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    putref_recordset*:
+      proc(self: ptr IHTMLObjectElement, v: ptr IDispatch): HRESULT {.stdcall.}
+    get_recordset*:
+      proc(self: ptr IHTMLObjectElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     put_align*: proc(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.stdcall.}
     get_align*: proc(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_name*: proc(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.stdcall.}
@@ -9429,60 +13143,85 @@
     get_BaseHref*: proc(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_type*: proc(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_form*: proc(self: ptr IHTMLObjectElement, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
+    get_form*: proc(self: ptr IHTMLObjectElement, p: ptr ptr IHTMLFormElement): HRESULT {.
+      stdcall
+    .}
     put_width*: proc(self: ptr IHTMLObjectElement, v: VARIANT): HRESULT {.stdcall.}
     get_width*: proc(self: ptr IHTMLObjectElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_height*: proc(self: ptr IHTMLObjectElement, v: VARIANT): HRESULT {.stdcall.}
     get_height*: proc(self: ptr IHTMLObjectElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_readyState*: proc(self: ptr IHTMLObjectElement, p: ptr LONG): HRESULT {.stdcall.}
-    put_onreadystatechange*: proc(self: ptr IHTMLObjectElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onreadystatechange*: proc(self: ptr IHTMLObjectElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_readyState*:
+      proc(self: ptr IHTMLObjectElement, p: ptr LONG): HRESULT {.stdcall.}
+    put_onreadystatechange*:
+      proc(self: ptr IHTMLObjectElement, v: VARIANT): HRESULT {.stdcall.}
+    get_onreadystatechange*:
+      proc(self: ptr IHTMLObjectElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onerror*: proc(self: ptr IHTMLObjectElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onerror*: proc(self: ptr IHTMLObjectElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onerror*:
+      proc(self: ptr IHTMLObjectElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_altHtml*: proc(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.stdcall.}
     get_altHtml*: proc(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_vspace*: proc(self: ptr IHTMLObjectElement, v: LONG): HRESULT {.stdcall.}
     get_vspace*: proc(self: ptr IHTMLObjectElement, p: ptr LONG): HRESULT {.stdcall.}
     put_hspace*: proc(self: ptr IHTMLObjectElement, v: LONG): HRESULT {.stdcall.}
     get_hspace*: proc(self: ptr IHTMLObjectElement, p: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLObjectElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLObjectElement2Vtbl
+
   IHTMLObjectElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    namedRecordset*: proc(self: ptr IHTMLObjectElement2, dataMember: BSTR, hierarchy: ptr VARIANT, ppRecordset: ptr ptr IDispatch): HRESULT {.stdcall.}
+    namedRecordset*: proc(
+      self: ptr IHTMLObjectElement2,
+      dataMember: BSTR,
+      hierarchy: ptr VARIANT,
+      ppRecordset: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
     put_classid*: proc(self: ptr IHTMLObjectElement2, v: BSTR): HRESULT {.stdcall.}
     get_classid*: proc(self: ptr IHTMLObjectElement2, p: ptr BSTR): HRESULT {.stdcall.}
     put_data*: proc(self: ptr IHTMLObjectElement2, v: BSTR): HRESULT {.stdcall.}
     get_data*: proc(self: ptr IHTMLObjectElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLObjectElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLObjectElement3Vtbl
+
   IHTMLObjectElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_archive*: proc(self: ptr IHTMLObjectElement3, v: BSTR): HRESULT {.stdcall.}
     get_archive*: proc(self: ptr IHTMLObjectElement3, p: ptr BSTR): HRESULT {.stdcall.}
     put_alt*: proc(self: ptr IHTMLObjectElement3, v: BSTR): HRESULT {.stdcall.}
     get_alt*: proc(self: ptr IHTMLObjectElement3, p: ptr BSTR): HRESULT {.stdcall.}
-    put_declare*: proc(self: ptr IHTMLObjectElement3, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_declare*: proc(self: ptr IHTMLObjectElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_declare*:
+      proc(self: ptr IHTMLObjectElement3, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_declare*:
+      proc(self: ptr IHTMLObjectElement3, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_standby*: proc(self: ptr IHTMLObjectElement3, v: BSTR): HRESULT {.stdcall.}
     get_standby*: proc(self: ptr IHTMLObjectElement3, p: ptr BSTR): HRESULT {.stdcall.}
     put_border*: proc(self: ptr IHTMLObjectElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_border*: proc(self: ptr IHTMLObjectElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_border*:
+      proc(self: ptr IHTMLObjectElement3, p: ptr VARIANT): HRESULT {.stdcall.}
     put_useMap*: proc(self: ptr IHTMLObjectElement3, v: BSTR): HRESULT {.stdcall.}
     get_useMap*: proc(self: ptr IHTMLObjectElement3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLObjectElement4* {.pure.} = object
     lpVtbl*: ptr IHTMLObjectElement4Vtbl
+
   IHTMLObjectElement4Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_contentDocument*: proc(self: ptr IHTMLObjectElement4, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_contentDocument*:
+      proc(self: ptr IHTMLObjectElement4, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     put_codeBase*: proc(self: ptr IHTMLObjectElement4, v: BSTR): HRESULT {.stdcall.}
     get_codeBase*: proc(self: ptr IHTMLObjectElement4, p: ptr BSTR): HRESULT {.stdcall.}
     put_data*: proc(self: ptr IHTMLObjectElement4, v: BSTR): HRESULT {.stdcall.}
     get_data*: proc(self: ptr IHTMLObjectElement4, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLObjectElement5* {.pure.} = object
     lpVtbl*: ptr IHTMLObjectElement5Vtbl
+
   IHTMLObjectElement5Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_object*: proc(self: ptr IHTMLObjectElement5, v: BSTR): HRESULT {.stdcall.}
     get_object*: proc(self: ptr IHTMLObjectElement5, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLParamElement* {.pure.} = object
     lpVtbl*: ptr IHTMLParamElementVtbl
+
   IHTMLParamElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_name*: proc(self: ptr IHTMLParamElement, v: BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTMLParamElement, p: ptr BSTR): HRESULT {.stdcall.}
@@ -9492,8 +13231,10 @@
     get_type*: proc(self: ptr IHTMLParamElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_valueType*: proc(self: ptr IHTMLParamElement, v: BSTR): HRESULT {.stdcall.}
     get_valueType*: proc(self: ptr IHTMLParamElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLParamElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLParamElement2Vtbl
+
   IHTMLParamElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_name*: proc(self: ptr IHTMLParamElement2, v: BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTMLParamElement2, p: ptr BSTR): HRESULT {.stdcall.}
@@ -9503,64 +13244,90 @@
     get_value*: proc(self: ptr IHTMLParamElement2, p: ptr BSTR): HRESULT {.stdcall.}
     put_valueType*: proc(self: ptr IHTMLParamElement2, v: BSTR): HRESULT {.stdcall.}
     get_valueType*: proc(self: ptr IHTMLParamElement2, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLObjectElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLObjectElementVtbl
+
   DispHTMLObjectElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLParamElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLParamElementVtbl
+
   DispHTMLParamElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLFrameSiteEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLFrameSiteEvents2Vtbl
+
   HTMLFrameSiteEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLFrameSiteEvents* {.pure.} = object
     lpVtbl*: ptr HTMLFrameSiteEventsVtbl
+
   HTMLFrameSiteEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLFrameBase2* {.pure.} = object
     lpVtbl*: ptr IHTMLFrameBase2Vtbl
+
   IHTMLFrameBase2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_contentWindow*: proc(self: ptr IHTMLFrameBase2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
+    get_contentWindow*:
+      proc(self: ptr IHTMLFrameBase2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
     put_onload*: proc(self: ptr IHTMLFrameBase2, v: VARIANT): HRESULT {.stdcall.}
     get_onload*: proc(self: ptr IHTMLFrameBase2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onreadystatechange*: proc(self: ptr IHTMLFrameBase2, v: VARIANT): HRESULT {.stdcall.}
-    get_onreadystatechange*: proc(self: ptr IHTMLFrameBase2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onreadystatechange*:
+      proc(self: ptr IHTMLFrameBase2, v: VARIANT): HRESULT {.stdcall.}
+    get_onreadystatechange*:
+      proc(self: ptr IHTMLFrameBase2, p: ptr VARIANT): HRESULT {.stdcall.}
     get_readyState*: proc(self: ptr IHTMLFrameBase2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_allowTransparency*: proc(self: ptr IHTMLFrameBase2, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_allowTransparency*: proc(self: ptr IHTMLFrameBase2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_allowTransparency*:
+      proc(self: ptr IHTMLFrameBase2, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_allowTransparency*:
+      proc(self: ptr IHTMLFrameBase2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   IHTMLFrameBase3* {.pure.} = object
     lpVtbl*: ptr IHTMLFrameBase3Vtbl
+
   IHTMLFrameBase3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_longDesc*: proc(self: ptr IHTMLFrameBase3, v: BSTR): HRESULT {.stdcall.}
     get_longDesc*: proc(self: ptr IHTMLFrameBase3, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLFrameBase* {.pure.} = object
     lpVtbl*: ptr DispHTMLFrameBaseVtbl
+
   DispHTMLFrameBaseVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLFrameElement* {.pure.} = object
     lpVtbl*: ptr IHTMLFrameElementVtbl
+
   IHTMLFrameElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_borderColor*: proc(self: ptr IHTMLFrameElement, v: VARIANT): HRESULT {.stdcall.}
-    get_borderColor*: proc(self: ptr IHTMLFrameElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_borderColor*:
+      proc(self: ptr IHTMLFrameElement, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLFrameElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLFrameElement2Vtbl
+
   IHTMLFrameElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_height*: proc(self: ptr IHTMLFrameElement2, v: VARIANT): HRESULT {.stdcall.}
     get_height*: proc(self: ptr IHTMLFrameElement2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_width*: proc(self: ptr IHTMLFrameElement2, v: VARIANT): HRESULT {.stdcall.}
     get_width*: proc(self: ptr IHTMLFrameElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLFrameElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLFrameElement3Vtbl
+
   IHTMLFrameElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_contentDocument*: proc(self: ptr IHTMLFrameElement3, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_contentDocument*:
+      proc(self: ptr IHTMLFrameElement3, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     put_src*: proc(self: ptr IHTMLFrameElement3, v: BSTR): HRESULT {.stdcall.}
     get_src*: proc(self: ptr IHTMLFrameElement3, p: ptr BSTR): HRESULT {.stdcall.}
     put_longDesc*: proc(self: ptr IHTMLFrameElement3, v: BSTR): HRESULT {.stdcall.}
     get_longDesc*: proc(self: ptr IHTMLFrameElement3, p: ptr BSTR): HRESULT {.stdcall.}
     put_frameBorder*: proc(self: ptr IHTMLFrameElement3, v: BSTR): HRESULT {.stdcall.}
-    get_frameBorder*: proc(self: ptr IHTMLFrameElement3, p: ptr BSTR): HRESULT {.stdcall.}
+    get_frameBorder*:
+      proc(self: ptr IHTMLFrameElement3, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLFrameElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLFrameElementVtbl
+
   DispHTMLFrameElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLIFrameElement* {.pure.} = object
     lpVtbl*: ptr IHTMLIFrameElementVtbl
+
   IHTMLIFrameElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_vspace*: proc(self: ptr IHTMLIFrameElement, v: LONG): HRESULT {.stdcall.}
     get_vspace*: proc(self: ptr IHTMLIFrameElement, p: ptr LONG): HRESULT {.stdcall.}
@@ -9568,114 +13335,175 @@
     get_hspace*: proc(self: ptr IHTMLIFrameElement, p: ptr LONG): HRESULT {.stdcall.}
     put_align*: proc(self: ptr IHTMLIFrameElement, v: BSTR): HRESULT {.stdcall.}
     get_align*: proc(self: ptr IHTMLIFrameElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLIFrameElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLIFrameElement2Vtbl
+
   IHTMLIFrameElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_height*: proc(self: ptr IHTMLIFrameElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_height*: proc(self: ptr IHTMLIFrameElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_height*:
+      proc(self: ptr IHTMLIFrameElement2, p: ptr VARIANT): HRESULT {.stdcall.}
     put_width*: proc(self: ptr IHTMLIFrameElement2, v: VARIANT): HRESULT {.stdcall.}
     get_width*: proc(self: ptr IHTMLIFrameElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLIFrameElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLIFrameElement3Vtbl
+
   IHTMLIFrameElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_contentDocument*: proc(self: ptr IHTMLIFrameElement3, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_contentDocument*:
+      proc(self: ptr IHTMLIFrameElement3, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     put_src*: proc(self: ptr IHTMLIFrameElement3, v: BSTR): HRESULT {.stdcall.}
     get_src*: proc(self: ptr IHTMLIFrameElement3, p: ptr BSTR): HRESULT {.stdcall.}
     put_longDesc*: proc(self: ptr IHTMLIFrameElement3, v: BSTR): HRESULT {.stdcall.}
     get_longDesc*: proc(self: ptr IHTMLIFrameElement3, p: ptr BSTR): HRESULT {.stdcall.}
     put_frameBorder*: proc(self: ptr IHTMLIFrameElement3, v: BSTR): HRESULT {.stdcall.}
-    get_frameBorder*: proc(self: ptr IHTMLIFrameElement3, p: ptr BSTR): HRESULT {.stdcall.}
+    get_frameBorder*:
+      proc(self: ptr IHTMLIFrameElement3, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLIFrame* {.pure.} = object
     lpVtbl*: ptr DispHTMLIFrameVtbl
+
   DispHTMLIFrameVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLDivPosition* {.pure.} = object
     lpVtbl*: ptr IHTMLDivPositionVtbl
+
   IHTMLDivPositionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_align*: proc(self: ptr IHTMLDivPosition, v: BSTR): HRESULT {.stdcall.}
     get_align*: proc(self: ptr IHTMLDivPosition, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLFieldSetElement* {.pure.} = object
     lpVtbl*: ptr IHTMLFieldSetElementVtbl
+
   IHTMLFieldSetElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_align*: proc(self: ptr IHTMLFieldSetElement, v: BSTR): HRESULT {.stdcall.}
     get_align*: proc(self: ptr IHTMLFieldSetElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLFieldSetElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLFieldSetElement2Vtbl
+
   IHTMLFieldSetElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_form*: proc(self: ptr IHTMLFieldSetElement2, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
+    get_form*: proc(
+      self: ptr IHTMLFieldSetElement2, p: ptr ptr IHTMLFormElement
+    ): HRESULT {.stdcall.}
+
   IHTMLLegendElement* {.pure.} = object
     lpVtbl*: ptr IHTMLLegendElementVtbl
+
   IHTMLLegendElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_align*: proc(self: ptr IHTMLLegendElement, v: BSTR): HRESULT {.stdcall.}
     get_align*: proc(self: ptr IHTMLLegendElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLLegendElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLLegendElement2Vtbl
+
   IHTMLLegendElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_form*: proc(self: ptr IHTMLLegendElement2, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
+    get_form*: proc(self: ptr IHTMLLegendElement2, p: ptr ptr IHTMLFormElement): HRESULT {.
+      stdcall
+    .}
+
   DispHTMLDivPosition* {.pure.} = object
     lpVtbl*: ptr DispHTMLDivPositionVtbl
+
   DispHTMLDivPositionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLFieldSetElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLFieldSetElementVtbl
+
   DispHTMLFieldSetElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLLegendElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLLegendElementVtbl
+
   DispHTMLLegendElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLSpanFlow* {.pure.} = object
     lpVtbl*: ptr IHTMLSpanFlowVtbl
+
   IHTMLSpanFlowVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_align*: proc(self: ptr IHTMLSpanFlow, v: BSTR): HRESULT {.stdcall.}
     get_align*: proc(self: ptr IHTMLSpanFlow, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLSpanFlow* {.pure.} = object
     lpVtbl*: ptr DispHTMLSpanFlowVtbl
+
   DispHTMLSpanFlowVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLFrameSetElement* {.pure.} = object
     lpVtbl*: ptr IHTMLFrameSetElementVtbl
+
   IHTMLFrameSetElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_rows*: proc(self: ptr IHTMLFrameSetElement, v: BSTR): HRESULT {.stdcall.}
     get_rows*: proc(self: ptr IHTMLFrameSetElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_cols*: proc(self: ptr IHTMLFrameSetElement, v: BSTR): HRESULT {.stdcall.}
     get_cols*: proc(self: ptr IHTMLFrameSetElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_border*: proc(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.stdcall.}
-    get_border*: proc(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_borderColor*: proc(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.stdcall.}
-    get_borderColor*: proc(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_border*:
+      proc(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_borderColor*:
+      proc(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.stdcall.}
+    get_borderColor*:
+      proc(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_frameBorder*: proc(self: ptr IHTMLFrameSetElement, v: BSTR): HRESULT {.stdcall.}
-    get_frameBorder*: proc(self: ptr IHTMLFrameSetElement, p: ptr BSTR): HRESULT {.stdcall.}
-    put_frameSpacing*: proc(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.stdcall.}
-    get_frameSpacing*: proc(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_frameBorder*:
+      proc(self: ptr IHTMLFrameSetElement, p: ptr BSTR): HRESULT {.stdcall.}
+    put_frameSpacing*:
+      proc(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.stdcall.}
+    get_frameSpacing*:
+      proc(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_name*: proc(self: ptr IHTMLFrameSetElement, v: BSTR): HRESULT {.stdcall.}
     get_name*: proc(self: ptr IHTMLFrameSetElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_onload*: proc(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onload*: proc(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onload*:
+      proc(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onunload*: proc(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onunload*: proc(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onbeforeunload*: proc(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforeunload*: proc(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onunload*:
+      proc(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onbeforeunload*:
+      proc(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.stdcall.}
+    get_onbeforeunload*:
+      proc(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLFrameSetElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLFrameSetElement2Vtbl
+
   IHTMLFrameSetElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_onbeforeprint*: proc(self: ptr IHTMLFrameSetElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_onbeforeprint*: proc(self: ptr IHTMLFrameSetElement2, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onafterprint*: proc(self: ptr IHTMLFrameSetElement2, v: VARIANT): HRESULT {.stdcall.}
-    get_onafterprint*: proc(self: ptr IHTMLFrameSetElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onbeforeprint*:
+      proc(self: ptr IHTMLFrameSetElement2, v: VARIANT): HRESULT {.stdcall.}
+    get_onbeforeprint*:
+      proc(self: ptr IHTMLFrameSetElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onafterprint*:
+      proc(self: ptr IHTMLFrameSetElement2, v: VARIANT): HRESULT {.stdcall.}
+    get_onafterprint*:
+      proc(self: ptr IHTMLFrameSetElement2, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLFrameSetElement3* {.pure.} = object
     lpVtbl*: ptr IHTMLFrameSetElement3Vtbl
+
   IHTMLFrameSetElement3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_onhashchange*: proc(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_onhashchange*: proc(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onmessage*: proc(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_onmessage*: proc(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onoffline*: proc(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_onoffline*: proc(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_ononline*: proc(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_ononline*: proc(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onstorage*: proc(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.stdcall.}
-    get_onstorage*: proc(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onhashchange*:
+      proc(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.stdcall.}
+    get_onhashchange*:
+      proc(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onmessage*:
+      proc(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.stdcall.}
+    get_onmessage*:
+      proc(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onoffline*:
+      proc(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.stdcall.}
+    get_onoffline*:
+      proc(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_ononline*:
+      proc(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.stdcall.}
+    get_ononline*:
+      proc(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onstorage*:
+      proc(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.stdcall.}
+    get_onstorage*:
+      proc(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.stdcall.}
+
   DispHTMLFrameSetSite* {.pure.} = object
     lpVtbl*: ptr DispHTMLFrameSetSiteVtbl
+
   DispHTMLFrameSetSiteVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLBGsound* {.pure.} = object
     lpVtbl*: ptr IHTMLBGsoundVtbl
+
   IHTMLBGsoundVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_src*: proc(self: ptr IHTMLBGsound, v: BSTR): HRESULT {.stdcall.}
     get_src*: proc(self: ptr IHTMLBGsound, p: ptr BSTR): HRESULT {.stdcall.}
@@ -9685,156 +13513,291 @@
     get_volume*: proc(self: ptr IHTMLBGsound, p: ptr VARIANT): HRESULT {.stdcall.}
     put_balance*: proc(self: ptr IHTMLBGsound, v: VARIANT): HRESULT {.stdcall.}
     get_balance*: proc(self: ptr IHTMLBGsound, p: ptr VARIANT): HRESULT {.stdcall.}
+
   DispHTMLBGsound* {.pure.} = object
     lpVtbl*: ptr DispHTMLBGsoundVtbl
+
   DispHTMLBGsoundVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLFontNamesCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLFontNamesCollectionVtbl
+
   IHTMLFontNamesCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLFontNamesCollection, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IHTMLFontNamesCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLFontNamesCollection, index: LONG, pBstr: ptr BSTR): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLFontNamesCollection, p: ptr LONG): HRESULT {.stdcall.}
+    get_newEnum*:
+      proc(self: ptr IHTMLFontNamesCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLFontNamesCollection, index: LONG, pBstr: ptr BSTR
+    ): HRESULT {.stdcall.}
+
   IHTMLFontSizesCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLFontSizesCollectionVtbl
+
   IHTMLFontSizesCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLFontSizesCollection, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IHTMLFontSizesCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    get_forFont*: proc(self: ptr IHTMLFontSizesCollection, p: ptr BSTR): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLFontSizesCollection, index: LONG, plSize: ptr LONG): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLFontSizesCollection, p: ptr LONG): HRESULT {.stdcall.}
+    get_newEnum*:
+      proc(self: ptr IHTMLFontSizesCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    get_forFont*:
+      proc(self: ptr IHTMLFontSizesCollection, p: ptr BSTR): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLFontSizesCollection, index: LONG, plSize: ptr LONG
+    ): HRESULT {.stdcall.}
+
   IHTMLOptionsHolder* {.pure.} = object
     lpVtbl*: ptr IHTMLOptionsHolderVtbl
+
   IHTMLOptionsHolderVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_document*: proc(self: ptr IHTMLOptionsHolder, p: ptr ptr IHTMLDocument2): HRESULT {.stdcall.}
-    get_fonts*: proc(self: ptr IHTMLOptionsHolder, p: ptr ptr IHTMLFontNamesCollection): HRESULT {.stdcall.}
+    get_document*:
+      proc(self: ptr IHTMLOptionsHolder, p: ptr ptr IHTMLDocument2): HRESULT {.stdcall.}
+    get_fonts*: proc(
+      self: ptr IHTMLOptionsHolder, p: ptr ptr IHTMLFontNamesCollection
+    ): HRESULT {.stdcall.}
     put_execArg*: proc(self: ptr IHTMLOptionsHolder, v: VARIANT): HRESULT {.stdcall.}
-    get_execArg*: proc(self: ptr IHTMLOptionsHolder, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_execArg*:
+      proc(self: ptr IHTMLOptionsHolder, p: ptr VARIANT): HRESULT {.stdcall.}
     put_errorLine*: proc(self: ptr IHTMLOptionsHolder, v: LONG): HRESULT {.stdcall.}
     get_errorLine*: proc(self: ptr IHTMLOptionsHolder, p: ptr LONG): HRESULT {.stdcall.}
-    put_errorCharacter*: proc(self: ptr IHTMLOptionsHolder, v: LONG): HRESULT {.stdcall.}
-    get_errorCharacter*: proc(self: ptr IHTMLOptionsHolder, p: ptr LONG): HRESULT {.stdcall.}
+    put_errorCharacter*:
+      proc(self: ptr IHTMLOptionsHolder, v: LONG): HRESULT {.stdcall.}
+    get_errorCharacter*:
+      proc(self: ptr IHTMLOptionsHolder, p: ptr LONG): HRESULT {.stdcall.}
     put_errorCode*: proc(self: ptr IHTMLOptionsHolder, v: LONG): HRESULT {.stdcall.}
     get_errorCode*: proc(self: ptr IHTMLOptionsHolder, p: ptr LONG): HRESULT {.stdcall.}
     put_errorMessage*: proc(self: ptr IHTMLOptionsHolder, v: BSTR): HRESULT {.stdcall.}
-    get_errorMessage*: proc(self: ptr IHTMLOptionsHolder, p: ptr BSTR): HRESULT {.stdcall.}
-    put_errorDebug*: proc(self: ptr IHTMLOptionsHolder, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_errorDebug*: proc(self: ptr IHTMLOptionsHolder, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_unsecuredWindowOfDocument*: proc(self: ptr IHTMLOptionsHolder, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
+    get_errorMessage*:
+      proc(self: ptr IHTMLOptionsHolder, p: ptr BSTR): HRESULT {.stdcall.}
+    put_errorDebug*:
+      proc(self: ptr IHTMLOptionsHolder, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_errorDebug*:
+      proc(self: ptr IHTMLOptionsHolder, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_unsecuredWindowOfDocument*:
+      proc(self: ptr IHTMLOptionsHolder, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
     put_findText*: proc(self: ptr IHTMLOptionsHolder, v: BSTR): HRESULT {.stdcall.}
     get_findText*: proc(self: ptr IHTMLOptionsHolder, p: ptr BSTR): HRESULT {.stdcall.}
-    put_anythingAfterFrameset*: proc(self: ptr IHTMLOptionsHolder, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_anythingAfterFrameset*: proc(self: ptr IHTMLOptionsHolder, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    sizes*: proc(self: ptr IHTMLOptionsHolder, fontName: BSTR, pSizesCollection: ptr ptr IHTMLFontSizesCollection): HRESULT {.stdcall.}
-    openfiledlg*: proc(self: ptr IHTMLOptionsHolder, initFile: VARIANT, initDir: VARIANT, filter: VARIANT, title: VARIANT, pathName: ptr BSTR): HRESULT {.stdcall.}
-    savefiledlg*: proc(self: ptr IHTMLOptionsHolder, initFile: VARIANT, initDir: VARIANT, filter: VARIANT, title: VARIANT, pathName: ptr BSTR): HRESULT {.stdcall.}
-    choosecolordlg*: proc(self: ptr IHTMLOptionsHolder, initColor: VARIANT, rgbColor: ptr LONG): HRESULT {.stdcall.}
+    put_anythingAfterFrameset*:
+      proc(self: ptr IHTMLOptionsHolder, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_anythingAfterFrameset*:
+      proc(self: ptr IHTMLOptionsHolder, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    sizes*: proc(
+      self: ptr IHTMLOptionsHolder,
+      fontName: BSTR,
+      pSizesCollection: ptr ptr IHTMLFontSizesCollection,
+    ): HRESULT {.stdcall.}
+    openfiledlg*: proc(
+      self: ptr IHTMLOptionsHolder,
+      initFile: VARIANT,
+      initDir: VARIANT,
+      filter: VARIANT,
+      title: VARIANT,
+      pathName: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    savefiledlg*: proc(
+      self: ptr IHTMLOptionsHolder,
+      initFile: VARIANT,
+      initDir: VARIANT,
+      filter: VARIANT,
+      title: VARIANT,
+      pathName: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    choosecolordlg*: proc(
+      self: ptr IHTMLOptionsHolder, initColor: VARIANT, rgbColor: ptr LONG
+    ): HRESULT {.stdcall.}
     showSecurityInfo*: proc(self: ptr IHTMLOptionsHolder): HRESULT {.stdcall.}
-    isApartmentModel*: proc(self: ptr IHTMLOptionsHolder, `object`: ptr IHTMLObjectElement, fApartment: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    getCharset*: proc(self: ptr IHTMLOptionsHolder, fontName: BSTR, charset: ptr LONG): HRESULT {.stdcall.}
-    get_secureConnectionInfo*: proc(self: ptr IHTMLOptionsHolder, p: ptr BSTR): HRESULT {.stdcall.}
+    isApartmentModel*: proc(
+      self: ptr IHTMLOptionsHolder,
+      `object`: ptr IHTMLObjectElement,
+      fApartment: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    getCharset*: proc(
+      self: ptr IHTMLOptionsHolder, fontName: BSTR, charset: ptr LONG
+    ): HRESULT {.stdcall.}
+    get_secureConnectionInfo*:
+      proc(self: ptr IHTMLOptionsHolder, p: ptr BSTR): HRESULT {.stdcall.}
+
   HTMLStyleElementEvents2* {.pure.} = object
     lpVtbl*: ptr HTMLStyleElementEvents2Vtbl
+
   HTMLStyleElementEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLStyleElementEvents* {.pure.} = object
     lpVtbl*: ptr HTMLStyleElementEventsVtbl
+
   HTMLStyleElementEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLStyleElement* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleElementVtbl
+
   IHTMLStyleElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_type*: proc(self: ptr IHTMLStyleElement, v: BSTR): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IHTMLStyleElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_readyState*: proc(self: ptr IHTMLStyleElement, p: ptr BSTR): HRESULT {.stdcall.}
-    put_onreadystatechange*: proc(self: ptr IHTMLStyleElement, v: VARIANT): HRESULT {.stdcall.}
-    get_onreadystatechange*: proc(self: ptr IHTMLStyleElement, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_onreadystatechange*:
+      proc(self: ptr IHTMLStyleElement, v: VARIANT): HRESULT {.stdcall.}
+    get_onreadystatechange*:
+      proc(self: ptr IHTMLStyleElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onload*: proc(self: ptr IHTMLStyleElement, v: VARIANT): HRESULT {.stdcall.}
     get_onload*: proc(self: ptr IHTMLStyleElement, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onerror*: proc(self: ptr IHTMLStyleElement, v: VARIANT): HRESULT {.stdcall.}
     get_onerror*: proc(self: ptr IHTMLStyleElement, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_styleSheet*: proc(self: ptr IHTMLStyleElement, p: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
-    put_disabled*: proc(self: ptr IHTMLStyleElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_disabled*: proc(self: ptr IHTMLStyleElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_styleSheet*:
+      proc(self: ptr IHTMLStyleElement, p: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
+    put_disabled*:
+      proc(self: ptr IHTMLStyleElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_disabled*:
+      proc(self: ptr IHTMLStyleElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_media*: proc(self: ptr IHTMLStyleElement, v: BSTR): HRESULT {.stdcall.}
     get_media*: proc(self: ptr IHTMLStyleElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLStyleElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleElement2Vtbl
+
   IHTMLStyleElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_sheet*: proc(self: ptr IHTMLStyleElement2, p: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
+    get_sheet*: proc(self: ptr IHTMLStyleElement2, p: ptr ptr IHTMLStyleSheet): HRESULT {.
+      stdcall
+    .}
+
   DispHTMLStyleElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLStyleElementVtbl
+
   DispHTMLStyleElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLStyleFontFace* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleFontFaceVtbl
+
   IHTMLStyleFontFaceVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_fontsrc*: proc(self: ptr IHTMLStyleFontFace, v: BSTR): HRESULT {.stdcall.}
     get_fontsrc*: proc(self: ptr IHTMLStyleFontFace, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLStyleFontFace2* {.pure.} = object
     lpVtbl*: ptr IHTMLStyleFontFace2Vtbl
+
   IHTMLStyleFontFace2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_style*: proc(self: ptr IHTMLStyleFontFace2, p: ptr ptr IHTMLRuleStyle): HRESULT {.stdcall.}
+    get_style*: proc(self: ptr IHTMLStyleFontFace2, p: ptr ptr IHTMLRuleStyle): HRESULT {.
+      stdcall
+    .}
+
   DispHTMLStyleFontFace* {.pure.} = object
     lpVtbl*: ptr DispHTMLStyleFontFaceVtbl
+
   DispHTMLStyleFontFaceVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLXDomainRequest* {.pure.} = object
     lpVtbl*: ptr IHTMLXDomainRequestVtbl
+
   IHTMLXDomainRequestVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_responseText*: proc(self: ptr IHTMLXDomainRequest, p: ptr BSTR): HRESULT {.stdcall.}
+    get_responseText*:
+      proc(self: ptr IHTMLXDomainRequest, p: ptr BSTR): HRESULT {.stdcall.}
     put_timeout*: proc(self: ptr IHTMLXDomainRequest, v: LONG): HRESULT {.stdcall.}
     get_timeout*: proc(self: ptr IHTMLXDomainRequest, p: ptr LONG): HRESULT {.stdcall.}
-    get_contentType*: proc(self: ptr IHTMLXDomainRequest, p: ptr BSTR): HRESULT {.stdcall.}
-    put_onprogress*: proc(self: ptr IHTMLXDomainRequest, v: VARIANT): HRESULT {.stdcall.}
-    get_onprogress*: proc(self: ptr IHTMLXDomainRequest, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_contentType*:
+      proc(self: ptr IHTMLXDomainRequest, p: ptr BSTR): HRESULT {.stdcall.}
+    put_onprogress*:
+      proc(self: ptr IHTMLXDomainRequest, v: VARIANT): HRESULT {.stdcall.}
+    get_onprogress*:
+      proc(self: ptr IHTMLXDomainRequest, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onerror*: proc(self: ptr IHTMLXDomainRequest, v: VARIANT): HRESULT {.stdcall.}
-    get_onerror*: proc(self: ptr IHTMLXDomainRequest, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onerror*:
+      proc(self: ptr IHTMLXDomainRequest, p: ptr VARIANT): HRESULT {.stdcall.}
     put_ontimeout*: proc(self: ptr IHTMLXDomainRequest, v: VARIANT): HRESULT {.stdcall.}
-    get_ontimeout*: proc(self: ptr IHTMLXDomainRequest, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_ontimeout*:
+      proc(self: ptr IHTMLXDomainRequest, p: ptr VARIANT): HRESULT {.stdcall.}
     put_onload*: proc(self: ptr IHTMLXDomainRequest, v: VARIANT): HRESULT {.stdcall.}
-    get_onload*: proc(self: ptr IHTMLXDomainRequest, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_onload*:
+      proc(self: ptr IHTMLXDomainRequest, p: ptr VARIANT): HRESULT {.stdcall.}
     abort*: proc(self: ptr IHTMLXDomainRequest): HRESULT {.stdcall.}
-    open*: proc(self: ptr IHTMLXDomainRequest, bstrMethod: BSTR, bstrUrl: BSTR): HRESULT {.stdcall.}
+    open*: proc(self: ptr IHTMLXDomainRequest, bstrMethod: BSTR, bstrUrl: BSTR): HRESULT {.
+      stdcall
+    .}
     send*: proc(self: ptr IHTMLXDomainRequest, varBody: VARIANT): HRESULT {.stdcall.}
+
   IHTMLXDomainRequestFactory* {.pure.} = object
     lpVtbl*: ptr IHTMLXDomainRequestFactoryVtbl
+
   IHTMLXDomainRequestFactoryVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    create*: proc(self: ptr IHTMLXDomainRequestFactory, a: ptr ptr IHTMLXDomainRequest): HRESULT {.stdcall.}
+    create*: proc(
+      self: ptr IHTMLXDomainRequestFactory, a: ptr ptr IHTMLXDomainRequest
+    ): HRESULT {.stdcall.}
+
   DispXDomainRequest* {.pure.} = object
     lpVtbl*: ptr DispXDomainRequestVtbl
+
   DispXDomainRequestVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLStorage2* {.pure.} = object
     lpVtbl*: ptr IHTMLStorage2Vtbl
+
   IHTMLStorage2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    setItem*: proc(self: ptr IHTMLStorage2, bstrKey: BSTR, bstrValue: BSTR): HRESULT {.stdcall.}
+    setItem*:
+      proc(self: ptr IHTMLStorage2, bstrKey: BSTR, bstrValue: BSTR): HRESULT {.stdcall.}
+
   DispHTMLStorage* {.pure.} = object
     lpVtbl*: ptr DispHTMLStorageVtbl
+
   DispHTMLStorageVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispDOMEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMEventVtbl
+
   DispDOMEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMUIEvent* {.pure.} = object
     lpVtbl*: ptr IDOMUIEventVtbl
+
   IDOMUIEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_view*: proc(self: ptr IDOMUIEvent, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
     get_detail*: proc(self: ptr IDOMUIEvent, p: ptr LONG): HRESULT {.stdcall.}
-    initUIEvent*: proc(self: ptr IDOMUIEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, view: ptr IHTMLWindow2, detail: LONG): HRESULT {.stdcall.}
+    initUIEvent*: proc(
+      self: ptr IDOMUIEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      view: ptr IHTMLWindow2,
+      detail: LONG,
+    ): HRESULT {.stdcall.}
+
   DispDOMUIEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMUIEventVtbl
+
   DispDOMUIEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMMouseEvent* {.pure.} = object
     lpVtbl*: ptr IDOMMouseEventVtbl
+
   IDOMMouseEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_screenX*: proc(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.stdcall.}
     get_screenY*: proc(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.stdcall.}
     get_clientX*: proc(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.stdcall.}
     get_clientY*: proc(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.stdcall.}
-    get_ctrlKey*: proc(self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_shiftKey*: proc(self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_altKey*: proc(self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_metaKey*: proc(self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_ctrlKey*:
+      proc(self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_shiftKey*:
+      proc(self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_altKey*:
+      proc(self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_metaKey*:
+      proc(self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_button*: proc(self: ptr IDOMMouseEvent, p: ptr USHORT): HRESULT {.stdcall.}
-    get_relatedTarget*: proc(self: ptr IDOMMouseEvent, p: ptr ptr IEventTarget): HRESULT {.stdcall.}
-    initMouseEvent*: proc(self: ptr IDOMMouseEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, detailArg: LONG, screenXArg: LONG, screenYArg: LONG, clientXArg: LONG, clientYArg: LONG, ctrlKeyArg: VARIANT_BOOL, altKeyArg: VARIANT_BOOL, shiftKeyArg: VARIANT_BOOL, metaKeyArg: VARIANT_BOOL, buttonArg: USHORT, relatedTargetArg: ptr IEventTarget): HRESULT {.stdcall.}
-    getModifierState*: proc(self: ptr IDOMMouseEvent, keyArg: BSTR, activated: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_relatedTarget*:
+      proc(self: ptr IDOMMouseEvent, p: ptr ptr IEventTarget): HRESULT {.stdcall.}
+    initMouseEvent*: proc(
+      self: ptr IDOMMouseEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      viewArg: ptr IHTMLWindow2,
+      detailArg: LONG,
+      screenXArg: LONG,
+      screenYArg: LONG,
+      clientXArg: LONG,
+      clientYArg: LONG,
+      ctrlKeyArg: VARIANT_BOOL,
+      altKeyArg: VARIANT_BOOL,
+      shiftKeyArg: VARIANT_BOOL,
+      metaKeyArg: VARIANT_BOOL,
+      buttonArg: USHORT,
+      relatedTargetArg: ptr IEventTarget,
+    ): HRESULT {.stdcall.}
+    getModifierState*: proc(
+      self: ptr IDOMMouseEvent, keyArg: BSTR, activated: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     get_buttons*: proc(self: ptr IDOMMouseEvent, p: ptr USHORT): HRESULT {.stdcall.}
-    get_fromElement*: proc(self: ptr IDOMMouseEvent, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    get_toElement*: proc(self: ptr IDOMMouseEvent, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_fromElement*:
+      proc(self: ptr IDOMMouseEvent, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    get_toElement*:
+      proc(self: ptr IDOMMouseEvent, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
     get_x*: proc(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.stdcall.}
     get_y*: proc(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.stdcall.}
     get_offsetX*: proc(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.stdcall.}
@@ -9844,351 +13807,812 @@
     get_layerX*: proc(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.stdcall.}
     get_layerY*: proc(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.stdcall.}
     get_which*: proc(self: ptr IDOMMouseEvent, p: ptr USHORT): HRESULT {.stdcall.}
+
   DispDOMMouseEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMMouseEventVtbl
+
   DispDOMMouseEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMDragEvent* {.pure.} = object
     lpVtbl*: ptr IDOMDragEventVtbl
+
   IDOMDragEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_dataTransfer*: proc(self: ptr IDOMDragEvent, p: ptr ptr IHTMLDataTransfer): HRESULT {.stdcall.}
-    initDragEvent*: proc(self: ptr IDOMDragEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, detailArg: LONG, screenXArg: LONG, screenYArg: LONG, clientXArg: LONG, clientYArg: LONG, ctrlKeyArg: VARIANT_BOOL, altKeyArg: VARIANT_BOOL, shiftKeyArg: VARIANT_BOOL, metaKeyArg: VARIANT_BOOL, buttonArg: USHORT, relatedTargetArg: ptr IEventTarget, dataTransferArg: ptr IHTMLDataTransfer): HRESULT {.stdcall.}
+    get_dataTransfer*:
+      proc(self: ptr IDOMDragEvent, p: ptr ptr IHTMLDataTransfer): HRESULT {.stdcall.}
+    initDragEvent*: proc(
+      self: ptr IDOMDragEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      viewArg: ptr IHTMLWindow2,
+      detailArg: LONG,
+      screenXArg: LONG,
+      screenYArg: LONG,
+      clientXArg: LONG,
+      clientYArg: LONG,
+      ctrlKeyArg: VARIANT_BOOL,
+      altKeyArg: VARIANT_BOOL,
+      shiftKeyArg: VARIANT_BOOL,
+      metaKeyArg: VARIANT_BOOL,
+      buttonArg: USHORT,
+      relatedTargetArg: ptr IEventTarget,
+      dataTransferArg: ptr IHTMLDataTransfer,
+    ): HRESULT {.stdcall.}
+
   DispDOMDragEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMDragEventVtbl
+
   DispDOMDragEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMMouseWheelEvent* {.pure.} = object
     lpVtbl*: ptr IDOMMouseWheelEventVtbl
+
   IDOMMouseWheelEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_wheelDelta*: proc(self: ptr IDOMMouseWheelEvent, p: ptr LONG): HRESULT {.stdcall.}
-    initMouseWheelEvent*: proc(self: ptr IDOMMouseWheelEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, detailArg: LONG, screenXArg: LONG, screenYArg: LONG, clientXArg: LONG, clientYArg: LONG, buttonArg: USHORT, relatedTargetArg: ptr IEventTarget, modifiersListArg: BSTR, wheelDeltaArg: LONG): HRESULT {.stdcall.}
+    get_wheelDelta*:
+      proc(self: ptr IDOMMouseWheelEvent, p: ptr LONG): HRESULT {.stdcall.}
+    initMouseWheelEvent*: proc(
+      self: ptr IDOMMouseWheelEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      viewArg: ptr IHTMLWindow2,
+      detailArg: LONG,
+      screenXArg: LONG,
+      screenYArg: LONG,
+      clientXArg: LONG,
+      clientYArg: LONG,
+      buttonArg: USHORT,
+      relatedTargetArg: ptr IEventTarget,
+      modifiersListArg: BSTR,
+      wheelDeltaArg: LONG,
+    ): HRESULT {.stdcall.}
+
   DispDOMMouseWheelEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMMouseWheelEventVtbl
+
   DispDOMMouseWheelEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMWheelEvent* {.pure.} = object
     lpVtbl*: ptr IDOMWheelEventVtbl
+
   IDOMWheelEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_deltaX*: proc(self: ptr IDOMWheelEvent, p: ptr LONG): HRESULT {.stdcall.}
     get_deltaY*: proc(self: ptr IDOMWheelEvent, p: ptr LONG): HRESULT {.stdcall.}
     get_deltaZ*: proc(self: ptr IDOMWheelEvent, p: ptr LONG): HRESULT {.stdcall.}
     get_deltaMode*: proc(self: ptr IDOMWheelEvent, p: ptr ULONG): HRESULT {.stdcall.}
-    initWheelEvent*: proc(self: ptr IDOMWheelEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, detailArg: LONG, screenXArg: LONG, screenYArg: LONG, clientXArg: LONG, clientYArg: LONG, buttonArg: USHORT, relatedTargetArg: ptr IEventTarget, modifiersListArg: BSTR, deltaX: LONG, deltaY: LONG, deltaZ: LONG, deltaMode: ULONG): HRESULT {.stdcall.}
+    initWheelEvent*: proc(
+      self: ptr IDOMWheelEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      viewArg: ptr IHTMLWindow2,
+      detailArg: LONG,
+      screenXArg: LONG,
+      screenYArg: LONG,
+      clientXArg: LONG,
+      clientYArg: LONG,
+      buttonArg: USHORT,
+      relatedTargetArg: ptr IEventTarget,
+      modifiersListArg: BSTR,
+      deltaX: LONG,
+      deltaY: LONG,
+      deltaZ: LONG,
+      deltaMode: ULONG,
+    ): HRESULT {.stdcall.}
+
   DispDOMWheelEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMWheelEventVtbl
+
   DispDOMWheelEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMTextEvent* {.pure.} = object
     lpVtbl*: ptr IDOMTextEventVtbl
+
   IDOMTextEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_data*: proc(self: ptr IDOMTextEvent, p: ptr BSTR): HRESULT {.stdcall.}
     get_inputMethod*: proc(self: ptr IDOMTextEvent, p: ptr ULONG): HRESULT {.stdcall.}
-    initTextEvent*: proc(self: ptr IDOMTextEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, dataArg: BSTR, inputMethod: ULONG, locale: BSTR): HRESULT {.stdcall.}
+    initTextEvent*: proc(
+      self: ptr IDOMTextEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      viewArg: ptr IHTMLWindow2,
+      dataArg: BSTR,
+      inputMethod: ULONG,
+      locale: BSTR,
+    ): HRESULT {.stdcall.}
     get_locale*: proc(self: ptr IDOMTextEvent, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispDOMTextEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMTextEventVtbl
+
   DispDOMTextEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMKeyboardEvent* {.pure.} = object
     lpVtbl*: ptr IDOMKeyboardEventVtbl
+
   IDOMKeyboardEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_key*: proc(self: ptr IDOMKeyboardEvent, p: ptr BSTR): HRESULT {.stdcall.}
     get_location*: proc(self: ptr IDOMKeyboardEvent, p: ptr ULONG): HRESULT {.stdcall.}
-    get_ctrlKey*: proc(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_shiftKey*: proc(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_altKey*: proc(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_metaKey*: proc(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_repeat*: proc(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    getModifierState*: proc(self: ptr IDOMKeyboardEvent, keyArg: BSTR, state: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    initKeyboardEvent*: proc(self: ptr IDOMKeyboardEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, keyArg: BSTR, locationArg: ULONG, modifiersListArg: BSTR, repeat: VARIANT_BOOL, locale: BSTR): HRESULT {.stdcall.}
+    get_ctrlKey*:
+      proc(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_shiftKey*:
+      proc(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_altKey*:
+      proc(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_metaKey*:
+      proc(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_repeat*:
+      proc(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    getModifierState*: proc(
+      self: ptr IDOMKeyboardEvent, keyArg: BSTR, state: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    initKeyboardEvent*: proc(
+      self: ptr IDOMKeyboardEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      viewArg: ptr IHTMLWindow2,
+      keyArg: BSTR,
+      locationArg: ULONG,
+      modifiersListArg: BSTR,
+      repeat: VARIANT_BOOL,
+      locale: BSTR,
+    ): HRESULT {.stdcall.}
     get_keyCode*: proc(self: ptr IDOMKeyboardEvent, p: ptr LONG): HRESULT {.stdcall.}
     get_charCode*: proc(self: ptr IDOMKeyboardEvent, p: ptr LONG): HRESULT {.stdcall.}
     get_which*: proc(self: ptr IDOMKeyboardEvent, p: ptr LONG): HRESULT {.stdcall.}
-    get_ie9_char*: proc(self: ptr IDOMKeyboardEvent, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_ie9_char*:
+      proc(self: ptr IDOMKeyboardEvent, p: ptr VARIANT): HRESULT {.stdcall.}
     get_locale*: proc(self: ptr IDOMKeyboardEvent, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispDOMKeyboardEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMKeyboardEventVtbl
+
   DispDOMKeyboardEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMCompositionEvent* {.pure.} = object
     lpVtbl*: ptr IDOMCompositionEventVtbl
+
   IDOMCompositionEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_data*: proc(self: ptr IDOMCompositionEvent, p: ptr BSTR): HRESULT {.stdcall.}
-    initCompositionEvent*: proc(self: ptr IDOMCompositionEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, data: BSTR, locale: BSTR): HRESULT {.stdcall.}
+    initCompositionEvent*: proc(
+      self: ptr IDOMCompositionEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      viewArg: ptr IHTMLWindow2,
+      data: BSTR,
+      locale: BSTR,
+    ): HRESULT {.stdcall.}
     get_locale*: proc(self: ptr IDOMCompositionEvent, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispDOMCompositionEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMCompositionEventVtbl
+
   DispDOMCompositionEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMMutationEvent* {.pure.} = object
     lpVtbl*: ptr IDOMMutationEventVtbl
+
   IDOMMutationEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_relatedNode*: proc(self: ptr IDOMMutationEvent, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_relatedNode*:
+      proc(self: ptr IDOMMutationEvent, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_prevValue*: proc(self: ptr IDOMMutationEvent, p: ptr BSTR): HRESULT {.stdcall.}
     get_newValue*: proc(self: ptr IDOMMutationEvent, p: ptr BSTR): HRESULT {.stdcall.}
     get_attrName*: proc(self: ptr IDOMMutationEvent, p: ptr BSTR): HRESULT {.stdcall.}
-    get_attrChange*: proc(self: ptr IDOMMutationEvent, p: ptr USHORT): HRESULT {.stdcall.}
-    initMutationEvent*: proc(self: ptr IDOMMutationEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, relatedNodeArg: ptr IDispatch, prevValueArg: BSTR, newValueArg: BSTR, attrNameArg: BSTR, attrChangeArg: USHORT): HRESULT {.stdcall.}
+    get_attrChange*:
+      proc(self: ptr IDOMMutationEvent, p: ptr USHORT): HRESULT {.stdcall.}
+    initMutationEvent*: proc(
+      self: ptr IDOMMutationEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      relatedNodeArg: ptr IDispatch,
+      prevValueArg: BSTR,
+      newValueArg: BSTR,
+      attrNameArg: BSTR,
+      attrChangeArg: USHORT,
+    ): HRESULT {.stdcall.}
+
   DispDOMMutationEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMMutationEventVtbl
+
   DispDOMMutationEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMBeforeUnloadEvent* {.pure.} = object
     lpVtbl*: ptr IDOMBeforeUnloadEventVtbl
+
   IDOMBeforeUnloadEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_returnValue*: proc(self: ptr IDOMBeforeUnloadEvent, v: VARIANT): HRESULT {.stdcall.}
-    get_returnValue*: proc(self: ptr IDOMBeforeUnloadEvent, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_returnValue*:
+      proc(self: ptr IDOMBeforeUnloadEvent, v: VARIANT): HRESULT {.stdcall.}
+    get_returnValue*:
+      proc(self: ptr IDOMBeforeUnloadEvent, p: ptr VARIANT): HRESULT {.stdcall.}
+
   DispDOMBeforeUnloadEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMBeforeUnloadEventVtbl
+
   DispDOMBeforeUnloadEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMFocusEvent* {.pure.} = object
     lpVtbl*: ptr IDOMFocusEventVtbl
+
   IDOMFocusEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_relatedTarget*: proc(self: ptr IDOMFocusEvent, p: ptr ptr IEventTarget): HRESULT {.stdcall.}
-    initFocusEvent*: proc(self: ptr IDOMFocusEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, view: ptr IHTMLWindow2, detail: LONG, relatedTargetArg: ptr IEventTarget): HRESULT {.stdcall.}
+    get_relatedTarget*:
+      proc(self: ptr IDOMFocusEvent, p: ptr ptr IEventTarget): HRESULT {.stdcall.}
+    initFocusEvent*: proc(
+      self: ptr IDOMFocusEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      view: ptr IHTMLWindow2,
+      detail: LONG,
+      relatedTargetArg: ptr IEventTarget,
+    ): HRESULT {.stdcall.}
+
   DispDOMFocusEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMFocusEventVtbl
+
   DispDOMFocusEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMCustomEvent* {.pure.} = object
     lpVtbl*: ptr IDOMCustomEventVtbl
+
   IDOMCustomEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_detail*: proc(self: ptr IDOMCustomEvent, p: ptr VARIANT): HRESULT {.stdcall.}
-    initCustomEvent*: proc(self: ptr IDOMCustomEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, detail: ptr VARIANT): HRESULT {.stdcall.}
+    initCustomEvent*: proc(
+      self: ptr IDOMCustomEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      detail: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+
   DispDOMCustomEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMCustomEventVtbl
+
   DispDOMCustomEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ICanvasGradient* {.pure.} = object
     lpVtbl*: ptr ICanvasGradientVtbl
+
   ICanvasGradientVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    addColorStop*: proc(self: ptr ICanvasGradient, offset: float32, color: BSTR): HRESULT {.stdcall.}
+    addColorStop*:
+      proc(self: ptr ICanvasGradient, offset: float32, color: BSTR): HRESULT {.stdcall.}
+
   ICanvasPattern* {.pure.} = object
     lpVtbl*: ptr ICanvasPatternVtbl
+
   ICanvasPatternVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ICanvasTextMetrics* {.pure.} = object
     lpVtbl*: ptr ICanvasTextMetricsVtbl
+
   ICanvasTextMetricsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_width*: proc(self: ptr ICanvasTextMetrics, p: ptr float32): HRESULT {.stdcall.}
+
   ICanvasImageData* {.pure.} = object
     lpVtbl*: ptr ICanvasImageDataVtbl
+
   ICanvasImageDataVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_width*: proc(self: ptr ICanvasImageData, p: ptr ULONG): HRESULT {.stdcall.}
     get_height*: proc(self: ptr ICanvasImageData, p: ptr ULONG): HRESULT {.stdcall.}
     get_data*: proc(self: ptr ICanvasImageData, p: ptr VARIANT): HRESULT {.stdcall.}
+
   ICanvasPixelArray* {.pure.} = object
     lpVtbl*: ptr ICanvasPixelArrayVtbl
+
   ICanvasPixelArrayVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_length*: proc(self: ptr ICanvasPixelArray, p: ptr ULONG): HRESULT {.stdcall.}
+
   IHTMLCanvasElement* {.pure.} = object
     lpVtbl*: ptr IHTMLCanvasElementVtbl
+
   IHTMLCanvasElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_width*: proc(self: ptr IHTMLCanvasElement, v: LONG): HRESULT {.stdcall.}
     get_width*: proc(self: ptr IHTMLCanvasElement, p: ptr LONG): HRESULT {.stdcall.}
     put_height*: proc(self: ptr IHTMLCanvasElement, v: LONG): HRESULT {.stdcall.}
     get_height*: proc(self: ptr IHTMLCanvasElement, p: ptr LONG): HRESULT {.stdcall.}
-    getContext*: proc(self: ptr IHTMLCanvasElement, contextId: BSTR, ppContext: ptr ptr ICanvasRenderingContext2D): HRESULT {.stdcall.}
-    toDataURL*: proc(self: ptr IHTMLCanvasElement, `type`: BSTR, jpegquality: VARIANT, pUrl: ptr BSTR): HRESULT {.stdcall.}
+    getContext*: proc(
+      self: ptr IHTMLCanvasElement,
+      contextId: BSTR,
+      ppContext: ptr ptr ICanvasRenderingContext2D,
+    ): HRESULT {.stdcall.}
+    toDataURL*: proc(
+      self: ptr IHTMLCanvasElement, `type`: BSTR, jpegquality: VARIANT, pUrl: ptr BSTR
+    ): HRESULT {.stdcall.}
+
   ICanvasRenderingContext2D* {.pure.} = object
     lpVtbl*: ptr ICanvasRenderingContext2DVtbl
+
   ICanvasRenderingContext2DVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_canvas*: proc(self: ptr ICanvasRenderingContext2D, p: ptr ptr IHTMLCanvasElement): HRESULT {.stdcall.}
+    get_canvas*: proc(
+      self: ptr ICanvasRenderingContext2D, p: ptr ptr IHTMLCanvasElement
+    ): HRESULT {.stdcall.}
     restore*: proc(self: ptr ICanvasRenderingContext2D): HRESULT {.stdcall.}
     save*: proc(self: ptr ICanvasRenderingContext2D): HRESULT {.stdcall.}
-    rotate*: proc(self: ptr ICanvasRenderingContext2D, angle: float32): HRESULT {.stdcall.}
-    scale*: proc(self: ptr ICanvasRenderingContext2D, x: float32, y: float32): HRESULT {.stdcall.}
-    setTransform*: proc(self: ptr ICanvasRenderingContext2D, m11: float32, m12: float32, m21: float32, m22: float32, dx: float32, dy: float32): HRESULT {.stdcall.}
-    transform*: proc(self: ptr ICanvasRenderingContext2D, m11: float32, m12: float32, m21: float32, m22: float32, dx: float32, dy: float32): HRESULT {.stdcall.}
-    translate*: proc(self: ptr ICanvasRenderingContext2D, x: float32, y: float32): HRESULT {.stdcall.}
-    put_globalAlpha*: proc(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.stdcall.}
-    get_globalAlpha*: proc(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.stdcall.}
-    put_globalCompositeOperation*: proc(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.stdcall.}
-    get_globalCompositeOperation*: proc(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.stdcall.}
-    put_fillStyle*: proc(self: ptr ICanvasRenderingContext2D, v: VARIANT): HRESULT {.stdcall.}
-    get_fillStyle*: proc(self: ptr ICanvasRenderingContext2D, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_strokeStyle*: proc(self: ptr ICanvasRenderingContext2D, v: VARIANT): HRESULT {.stdcall.}
-    get_strokeStyle*: proc(self: ptr ICanvasRenderingContext2D, p: ptr VARIANT): HRESULT {.stdcall.}
-    createLinearGradient*: proc(self: ptr ICanvasRenderingContext2D, x0: float32, y0: float32, x1: float32, y1: float32, ppCanvasGradient: ptr ptr ICanvasGradient): HRESULT {.stdcall.}
-    createRadialGradient*: proc(self: ptr ICanvasRenderingContext2D, x0: float32, y0: float32, r0: float32, x1: float32, y1: float32, r1: float32, ppCanvasGradient: ptr ptr ICanvasGradient): HRESULT {.stdcall.}
-    createPattern*: proc(self: ptr ICanvasRenderingContext2D, image: ptr IDispatch, repetition: VARIANT, ppCanvasPattern: ptr ptr ICanvasPattern): HRESULT {.stdcall.}
-    put_lineCap*: proc(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.stdcall.}
-    get_lineCap*: proc(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.stdcall.}
-    put_lineJoin*: proc(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.stdcall.}
-    get_lineJoin*: proc(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.stdcall.}
-    put_lineWidth*: proc(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.stdcall.}
-    get_lineWidth*: proc(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.stdcall.}
-    put_miterLimit*: proc(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.stdcall.}
-    get_miterLimit*: proc(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.stdcall.}
-    put_shadowBlur*: proc(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.stdcall.}
-    get_shadowBlur*: proc(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.stdcall.}
-    put_shadowColor*: proc(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.stdcall.}
-    get_shadowColor*: proc(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.stdcall.}
-    put_shadowOffsetX*: proc(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.stdcall.}
-    get_shadowOffsetX*: proc(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.stdcall.}
-    put_shadowOffsetY*: proc(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.stdcall.}
-    get_shadowOffsetY*: proc(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.stdcall.}
-    clearRect*: proc(self: ptr ICanvasRenderingContext2D, x: float32, y: float32, w: float32, h: float32): HRESULT {.stdcall.}
-    fillRect*: proc(self: ptr ICanvasRenderingContext2D, x: float32, y: float32, w: float32, h: float32): HRESULT {.stdcall.}
-    strokeRect*: proc(self: ptr ICanvasRenderingContext2D, x: float32, y: float32, w: float32, h: float32): HRESULT {.stdcall.}
-    arc*: proc(self: ptr ICanvasRenderingContext2D, x: float32, y: float32, radius: float32, startAngle: float32, endAngle: float32, anticlockwise: WINBOOL): HRESULT {.stdcall.}
-    arcTo*: proc(self: ptr ICanvasRenderingContext2D, x1: float32, y1: float32, x2: float32, y2: float32, radius: float32): HRESULT {.stdcall.}
+    rotate*:
+      proc(self: ptr ICanvasRenderingContext2D, angle: float32): HRESULT {.stdcall.}
+    scale*: proc(self: ptr ICanvasRenderingContext2D, x: float32, y: float32): HRESULT {.
+      stdcall
+    .}
+    setTransform*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      m11: float32,
+      m12: float32,
+      m21: float32,
+      m22: float32,
+      dx: float32,
+      dy: float32,
+    ): HRESULT {.stdcall.}
+    transform*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      m11: float32,
+      m12: float32,
+      m21: float32,
+      m22: float32,
+      dx: float32,
+      dy: float32,
+    ): HRESULT {.stdcall.}
+    translate*: proc(
+      self: ptr ICanvasRenderingContext2D, x: float32, y: float32
+    ): HRESULT {.stdcall.}
+    put_globalAlpha*:
+      proc(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.stdcall.}
+    get_globalAlpha*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.stdcall.}
+    put_globalCompositeOperation*:
+      proc(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.stdcall.}
+    get_globalCompositeOperation*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.stdcall.}
+    put_fillStyle*:
+      proc(self: ptr ICanvasRenderingContext2D, v: VARIANT): HRESULT {.stdcall.}
+    get_fillStyle*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_strokeStyle*:
+      proc(self: ptr ICanvasRenderingContext2D, v: VARIANT): HRESULT {.stdcall.}
+    get_strokeStyle*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr VARIANT): HRESULT {.stdcall.}
+    createLinearGradient*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      x0: float32,
+      y0: float32,
+      x1: float32,
+      y1: float32,
+      ppCanvasGradient: ptr ptr ICanvasGradient,
+    ): HRESULT {.stdcall.}
+    createRadialGradient*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      x0: float32,
+      y0: float32,
+      r0: float32,
+      x1: float32,
+      y1: float32,
+      r1: float32,
+      ppCanvasGradient: ptr ptr ICanvasGradient,
+    ): HRESULT {.stdcall.}
+    createPattern*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      image: ptr IDispatch,
+      repetition: VARIANT,
+      ppCanvasPattern: ptr ptr ICanvasPattern,
+    ): HRESULT {.stdcall.}
+    put_lineCap*:
+      proc(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.stdcall.}
+    get_lineCap*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.stdcall.}
+    put_lineJoin*:
+      proc(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.stdcall.}
+    get_lineJoin*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.stdcall.}
+    put_lineWidth*:
+      proc(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.stdcall.}
+    get_lineWidth*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.stdcall.}
+    put_miterLimit*:
+      proc(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.stdcall.}
+    get_miterLimit*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.stdcall.}
+    put_shadowBlur*:
+      proc(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.stdcall.}
+    get_shadowBlur*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.stdcall.}
+    put_shadowColor*:
+      proc(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.stdcall.}
+    get_shadowColor*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.stdcall.}
+    put_shadowOffsetX*:
+      proc(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.stdcall.}
+    get_shadowOffsetX*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.stdcall.}
+    put_shadowOffsetY*:
+      proc(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.stdcall.}
+    get_shadowOffsetY*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.stdcall.}
+    clearRect*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      x: float32,
+      y: float32,
+      w: float32,
+      h: float32,
+    ): HRESULT {.stdcall.}
+    fillRect*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      x: float32,
+      y: float32,
+      w: float32,
+      h: float32,
+    ): HRESULT {.stdcall.}
+    strokeRect*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      x: float32,
+      y: float32,
+      w: float32,
+      h: float32,
+    ): HRESULT {.stdcall.}
+    arc*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      x: float32,
+      y: float32,
+      radius: float32,
+      startAngle: float32,
+      endAngle: float32,
+      anticlockwise: WINBOOL,
+    ): HRESULT {.stdcall.}
+    arcTo*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      x1: float32,
+      y1: float32,
+      x2: float32,
+      y2: float32,
+      radius: float32,
+    ): HRESULT {.stdcall.}
     beginPath*: proc(self: ptr ICanvasRenderingContext2D): HRESULT {.stdcall.}
-    bezierCurveTo*: proc(self: ptr ICanvasRenderingContext2D, cp1x: float32, cp1y: float32, cp2x: float32, cp2y: float32, x: float32, y: float32): HRESULT {.stdcall.}
+    bezierCurveTo*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      cp1x: float32,
+      cp1y: float32,
+      cp2x: float32,
+      cp2y: float32,
+      x: float32,
+      y: float32,
+    ): HRESULT {.stdcall.}
     clip*: proc(self: ptr ICanvasRenderingContext2D): HRESULT {.stdcall.}
     closePath*: proc(self: ptr ICanvasRenderingContext2D): HRESULT {.stdcall.}
     fill*: proc(self: ptr ICanvasRenderingContext2D): HRESULT {.stdcall.}
-    lineTo*: proc(self: ptr ICanvasRenderingContext2D, x: float32, y: float32): HRESULT {.stdcall.}
-    moveTo*: proc(self: ptr ICanvasRenderingContext2D, x: float32, y: float32): HRESULT {.stdcall.}
-    quadraticCurveTo*: proc(self: ptr ICanvasRenderingContext2D, cpx: float32, cpy: float32, x: float32, y: float32): HRESULT {.stdcall.}
-    rect*: proc(self: ptr ICanvasRenderingContext2D, x: float32, y: float32, w: float32, h: float32): HRESULT {.stdcall.}
+    lineTo*: proc(self: ptr ICanvasRenderingContext2D, x: float32, y: float32): HRESULT {.
+      stdcall
+    .}
+    moveTo*: proc(self: ptr ICanvasRenderingContext2D, x: float32, y: float32): HRESULT {.
+      stdcall
+    .}
+    quadraticCurveTo*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      cpx: float32,
+      cpy: float32,
+      x: float32,
+      y: float32,
+    ): HRESULT {.stdcall.}
+    rect*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      x: float32,
+      y: float32,
+      w: float32,
+      h: float32,
+    ): HRESULT {.stdcall.}
     stroke*: proc(self: ptr ICanvasRenderingContext2D): HRESULT {.stdcall.}
-    isPointInPath*: proc(self: ptr ICanvasRenderingContext2D, x: float32, y: float32, pResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    isPointInPath*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      x: float32,
+      y: float32,
+      pResult: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
     put_font*: proc(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.stdcall.}
-    get_font*: proc(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textAlign*: proc(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.stdcall.}
-    get_textAlign*: proc(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.stdcall.}
-    put_textBaseline*: proc(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.stdcall.}
-    get_textBaseline*: proc(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.stdcall.}
-    fillText*: proc(self: ptr ICanvasRenderingContext2D, text: BSTR, x: float32, y: float32, maxWidth: VARIANT): HRESULT {.stdcall.}
-    measureText*: proc(self: ptr ICanvasRenderingContext2D, text: BSTR, ppCanvasTextMetrics: ptr ptr ICanvasTextMetrics): HRESULT {.stdcall.}
-    strokeText*: proc(self: ptr ICanvasRenderingContext2D, text: BSTR, x: float32, y: float32, maxWidth: VARIANT): HRESULT {.stdcall.}
-    drawImage*: proc(self: ptr ICanvasRenderingContext2D, pSrc: ptr IDispatch, a1: VARIANT, a2: VARIANT, a3: VARIANT, a4: VARIANT, a5: VARIANT, a6: VARIANT, a7: VARIANT, a8: VARIANT): HRESULT {.stdcall.}
-    createImageData*: proc(self: ptr ICanvasRenderingContext2D, a1: VARIANT, a2: VARIANT, ppCanvasImageData: ptr ptr ICanvasImageData): HRESULT {.stdcall.}
-    getImageData*: proc(self: ptr ICanvasRenderingContext2D, sx: float32, sy: float32, sw: float32, sh: float32, ppCanvasImageData: ptr ptr ICanvasImageData): HRESULT {.stdcall.}
-    putImageData*: proc(self: ptr ICanvasRenderingContext2D, imagedata: ptr ICanvasImageData, dx: float32, dy: float32, dirtyX: VARIANT, dirtyY: VARIANT, dirtyWidth: VARIANT, dirtyHeight: VARIANT): HRESULT {.stdcall.}
+    get_font*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textAlign*:
+      proc(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.stdcall.}
+    get_textAlign*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.stdcall.}
+    put_textBaseline*:
+      proc(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.stdcall.}
+    get_textBaseline*:
+      proc(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.stdcall.}
+    fillText*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      text: BSTR,
+      x: float32,
+      y: float32,
+      maxWidth: VARIANT,
+    ): HRESULT {.stdcall.}
+    measureText*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      text: BSTR,
+      ppCanvasTextMetrics: ptr ptr ICanvasTextMetrics,
+    ): HRESULT {.stdcall.}
+    strokeText*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      text: BSTR,
+      x: float32,
+      y: float32,
+      maxWidth: VARIANT,
+    ): HRESULT {.stdcall.}
+    drawImage*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      pSrc: ptr IDispatch,
+      a1: VARIANT,
+      a2: VARIANT,
+      a3: VARIANT,
+      a4: VARIANT,
+      a5: VARIANT,
+      a6: VARIANT,
+      a7: VARIANT,
+      a8: VARIANT,
+    ): HRESULT {.stdcall.}
+    createImageData*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      a1: VARIANT,
+      a2: VARIANT,
+      ppCanvasImageData: ptr ptr ICanvasImageData,
+    ): HRESULT {.stdcall.}
+    getImageData*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      sx: float32,
+      sy: float32,
+      sw: float32,
+      sh: float32,
+      ppCanvasImageData: ptr ptr ICanvasImageData,
+    ): HRESULT {.stdcall.}
+    putImageData*: proc(
+      self: ptr ICanvasRenderingContext2D,
+      imagedata: ptr ICanvasImageData,
+      dx: float32,
+      dy: float32,
+      dirtyX: VARIANT,
+      dirtyY: VARIANT,
+      dirtyWidth: VARIANT,
+      dirtyHeight: VARIANT,
+    ): HRESULT {.stdcall.}
+
   DispCanvasGradient* {.pure.} = object
     lpVtbl*: ptr DispCanvasGradientVtbl
+
   DispCanvasGradientVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispCanvasPattern* {.pure.} = object
     lpVtbl*: ptr DispCanvasPatternVtbl
+
   DispCanvasPatternVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispCanvasTextMetrics* {.pure.} = object
     lpVtbl*: ptr DispCanvasTextMetricsVtbl
+
   DispCanvasTextMetricsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispCanvasImageData* {.pure.} = object
     lpVtbl*: ptr DispCanvasImageDataVtbl
+
   DispCanvasImageDataVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispCanvasRenderingContext2D* {.pure.} = object
     lpVtbl*: ptr DispCanvasRenderingContext2DVtbl
+
   DispCanvasRenderingContext2DVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLCanvasElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLCanvasElementVtbl
+
   DispHTMLCanvasElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMProgressEvent* {.pure.} = object
     lpVtbl*: ptr IDOMProgressEventVtbl
+
   IDOMProgressEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_lengthComputable*: proc(self: ptr IDOMProgressEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_loaded*: proc(self: ptr IDOMProgressEvent, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_lengthComputable*:
+      proc(self: ptr IDOMProgressEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_loaded*:
+      proc(self: ptr IDOMProgressEvent, p: ptr ULONGLONG): HRESULT {.stdcall.}
     get_total*: proc(self: ptr IDOMProgressEvent, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    initProgressEvent*: proc(self: ptr IDOMProgressEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, lengthComputableArg: VARIANT_BOOL, loadedArg: ULONGLONG, totalArg: ULONGLONG): HRESULT {.stdcall.}
+    initProgressEvent*: proc(
+      self: ptr IDOMProgressEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      lengthComputableArg: VARIANT_BOOL,
+      loadedArg: ULONGLONG,
+      totalArg: ULONGLONG,
+    ): HRESULT {.stdcall.}
+
   DispDOMProgressEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMProgressEventVtbl
+
   DispDOMProgressEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMMessageEvent* {.pure.} = object
     lpVtbl*: ptr IDOMMessageEventVtbl
+
   IDOMMessageEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_data*: proc(self: ptr IDOMMessageEvent, p: ptr BSTR): HRESULT {.stdcall.}
     get_origin*: proc(self: ptr IDOMMessageEvent, p: ptr BSTR): HRESULT {.stdcall.}
-    get_source*: proc(self: ptr IDOMMessageEvent, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
-    initMessageEvent*: proc(self: ptr IDOMMessageEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, data: BSTR, origin: BSTR, lastEventId: BSTR, source: ptr IHTMLWindow2): HRESULT {.stdcall.}
+    get_source*:
+      proc(self: ptr IDOMMessageEvent, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
+    initMessageEvent*: proc(
+      self: ptr IDOMMessageEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      data: BSTR,
+      origin: BSTR,
+      lastEventId: BSTR,
+      source: ptr IHTMLWindow2,
+    ): HRESULT {.stdcall.}
+
   DispDOMMessageEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMMessageEventVtbl
+
   DispDOMMessageEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMSiteModeEvent* {.pure.} = object
     lpVtbl*: ptr IDOMSiteModeEventVtbl
+
   IDOMSiteModeEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_buttonID*: proc(self: ptr IDOMSiteModeEvent, p: ptr LONG): HRESULT {.stdcall.}
     get_actionURL*: proc(self: ptr IDOMSiteModeEvent, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispDOMSiteModeEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMSiteModeEventVtbl
+
   DispDOMSiteModeEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMStorageEvent* {.pure.} = object
     lpVtbl*: ptr IDOMStorageEventVtbl
+
   IDOMStorageEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_key*: proc(self: ptr IDOMStorageEvent, p: ptr BSTR): HRESULT {.stdcall.}
     get_oldValue*: proc(self: ptr IDOMStorageEvent, p: ptr BSTR): HRESULT {.stdcall.}
     get_newValue*: proc(self: ptr IDOMStorageEvent, p: ptr BSTR): HRESULT {.stdcall.}
     get_url*: proc(self: ptr IDOMStorageEvent, p: ptr BSTR): HRESULT {.stdcall.}
-    get_storageArea*: proc(self: ptr IDOMStorageEvent, p: ptr ptr IHTMLStorage): HRESULT {.stdcall.}
-    initStorageEvent*: proc(self: ptr IDOMStorageEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, keyArg: BSTR, oldValueArg: BSTR, newValueArg: BSTR, urlArg: BSTR, storageAreaArg: ptr IHTMLStorage): HRESULT {.stdcall.}
+    get_storageArea*:
+      proc(self: ptr IDOMStorageEvent, p: ptr ptr IHTMLStorage): HRESULT {.stdcall.}
+    initStorageEvent*: proc(
+      self: ptr IDOMStorageEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      keyArg: BSTR,
+      oldValueArg: BSTR,
+      newValueArg: BSTR,
+      urlArg: BSTR,
+      storageAreaArg: ptr IHTMLStorage,
+    ): HRESULT {.stdcall.}
+
   DispDOMStorageEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMStorageEventVtbl
+
   DispDOMStorageEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IXMLHttpRequestEventTarget* {.pure.} = object
     lpVtbl*: ptr IXMLHttpRequestEventTargetVtbl
+
   IXMLHttpRequestEventTargetVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispXMLHttpRequestEventTarget* {.pure.} = object
     lpVtbl*: ptr DispXMLHttpRequestEventTargetVtbl
+
   DispXMLHttpRequestEventTargetVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   HTMLXMLHttpRequestEvents* {.pure.} = object
     lpVtbl*: ptr HTMLXMLHttpRequestEventsVtbl
+
   HTMLXMLHttpRequestEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLXMLHttpRequest* {.pure.} = object
     lpVtbl*: ptr IHTMLXMLHttpRequestVtbl
+
   IHTMLXMLHttpRequestVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_readyState*: proc(self: ptr IHTMLXMLHttpRequest, p: ptr LONG): HRESULT {.stdcall.}
-    get_responseBody*: proc(self: ptr IHTMLXMLHttpRequest, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_responseText*: proc(self: ptr IHTMLXMLHttpRequest, p: ptr BSTR): HRESULT {.stdcall.}
-    get_responseXML*: proc(self: ptr IHTMLXMLHttpRequest, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_readyState*:
+      proc(self: ptr IHTMLXMLHttpRequest, p: ptr LONG): HRESULT {.stdcall.}
+    get_responseBody*:
+      proc(self: ptr IHTMLXMLHttpRequest, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_responseText*:
+      proc(self: ptr IHTMLXMLHttpRequest, p: ptr BSTR): HRESULT {.stdcall.}
+    get_responseXML*:
+      proc(self: ptr IHTMLXMLHttpRequest, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_status*: proc(self: ptr IHTMLXMLHttpRequest, p: ptr LONG): HRESULT {.stdcall.}
-    get_statusText*: proc(self: ptr IHTMLXMLHttpRequest, p: ptr BSTR): HRESULT {.stdcall.}
-    put_onreadystatechange*: proc(self: ptr IHTMLXMLHttpRequest, v: VARIANT): HRESULT {.stdcall.}
-    get_onreadystatechange*: proc(self: ptr IHTMLXMLHttpRequest, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_statusText*:
+      proc(self: ptr IHTMLXMLHttpRequest, p: ptr BSTR): HRESULT {.stdcall.}
+    put_onreadystatechange*:
+      proc(self: ptr IHTMLXMLHttpRequest, v: VARIANT): HRESULT {.stdcall.}
+    get_onreadystatechange*:
+      proc(self: ptr IHTMLXMLHttpRequest, p: ptr VARIANT): HRESULT {.stdcall.}
     abort*: proc(self: ptr IHTMLXMLHttpRequest): HRESULT {.stdcall.}
-    open*: proc(self: ptr IHTMLXMLHttpRequest, bstrMethod: BSTR, bstrUrl: BSTR, varAsync: VARIANT, varUser: VARIANT, varPassword: VARIANT): HRESULT {.stdcall.}
+    open*: proc(
+      self: ptr IHTMLXMLHttpRequest,
+      bstrMethod: BSTR,
+      bstrUrl: BSTR,
+      varAsync: VARIANT,
+      varUser: VARIANT,
+      varPassword: VARIANT,
+    ): HRESULT {.stdcall.}
     send*: proc(self: ptr IHTMLXMLHttpRequest, varBody: VARIANT): HRESULT {.stdcall.}
-    getAllResponseHeaders*: proc(self: ptr IHTMLXMLHttpRequest, a: ptr BSTR): HRESULT {.stdcall.}
-    getResponseHeader*: proc(self: ptr IHTMLXMLHttpRequest, bstrHeader: BSTR, a: ptr BSTR): HRESULT {.stdcall.}
-    setRequestHeader*: proc(self: ptr IHTMLXMLHttpRequest, bstrHeader: BSTR, bstrValue: BSTR): HRESULT {.stdcall.}
+    getAllResponseHeaders*:
+      proc(self: ptr IHTMLXMLHttpRequest, a: ptr BSTR): HRESULT {.stdcall.}
+    getResponseHeader*: proc(
+      self: ptr IHTMLXMLHttpRequest, bstrHeader: BSTR, a: ptr BSTR
+    ): HRESULT {.stdcall.}
+    setRequestHeader*: proc(
+      self: ptr IHTMLXMLHttpRequest, bstrHeader: BSTR, bstrValue: BSTR
+    ): HRESULT {.stdcall.}
+
   IHTMLXMLHttpRequest2* {.pure.} = object
     lpVtbl*: ptr IHTMLXMLHttpRequest2Vtbl
+
   IHTMLXMLHttpRequest2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_timeout*: proc(self: ptr IHTMLXMLHttpRequest2, v: LONG): HRESULT {.stdcall.}
     get_timeout*: proc(self: ptr IHTMLXMLHttpRequest2, p: ptr LONG): HRESULT {.stdcall.}
-    put_ontimeout*: proc(self: ptr IHTMLXMLHttpRequest2, v: VARIANT): HRESULT {.stdcall.}
-    get_ontimeout*: proc(self: ptr IHTMLXMLHttpRequest2, p: ptr VARIANT): HRESULT {.stdcall.}
+    put_ontimeout*:
+      proc(self: ptr IHTMLXMLHttpRequest2, v: VARIANT): HRESULT {.stdcall.}
+    get_ontimeout*:
+      proc(self: ptr IHTMLXMLHttpRequest2, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLXMLHttpRequestFactory* {.pure.} = object
     lpVtbl*: ptr IHTMLXMLHttpRequestFactoryVtbl
+
   IHTMLXMLHttpRequestFactoryVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    create*: proc(self: ptr IHTMLXMLHttpRequestFactory, a: ptr ptr IHTMLXMLHttpRequest): HRESULT {.stdcall.}
+    create*: proc(
+      self: ptr IHTMLXMLHttpRequestFactory, a: ptr ptr IHTMLXMLHttpRequest
+    ): HRESULT {.stdcall.}
+
   DispHTMLXMLHttpRequest* {.pure.} = object
     lpVtbl*: ptr DispHTMLXMLHttpRequestVtbl
+
   DispHTMLXMLHttpRequestVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGAngle* {.pure.} = object
     lpVtbl*: ptr ISVGAngleVtbl
+
   ISVGAngleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_unitType*: proc(self: ptr ISVGAngle, v: int16): HRESULT {.stdcall.}
     get_unitType*: proc(self: ptr ISVGAngle, p: ptr int16): HRESULT {.stdcall.}
     put_value*: proc(self: ptr ISVGAngle, v: float32): HRESULT {.stdcall.}
     get_value*: proc(self: ptr ISVGAngle, p: ptr float32): HRESULT {.stdcall.}
-    put_valueInSpecifiedUnits*: proc(self: ptr ISVGAngle, v: float32): HRESULT {.stdcall.}
-    get_valueInSpecifiedUnits*: proc(self: ptr ISVGAngle, p: ptr float32): HRESULT {.stdcall.}
+    put_valueInSpecifiedUnits*:
+      proc(self: ptr ISVGAngle, v: float32): HRESULT {.stdcall.}
+    get_valueInSpecifiedUnits*:
+      proc(self: ptr ISVGAngle, p: ptr float32): HRESULT {.stdcall.}
     put_valueAsString*: proc(self: ptr ISVGAngle, v: BSTR): HRESULT {.stdcall.}
     get_valueAsString*: proc(self: ptr ISVGAngle, p: ptr BSTR): HRESULT {.stdcall.}
-    newValueSpecifiedUnits*: proc(self: ptr ISVGAngle, unitType: int16, valueInSpecifiedUnits: float32): HRESULT {.stdcall.}
-    convertToSpecifiedUnits*: proc(self: ptr ISVGAngle, unitType: int16): HRESULT {.stdcall.}
+    newValueSpecifiedUnits*: proc(
+      self: ptr ISVGAngle, unitType: int16, valueInSpecifiedUnits: float32
+    ): HRESULT {.stdcall.}
+    convertToSpecifiedUnits*:
+      proc(self: ptr ISVGAngle, unitType: int16): HRESULT {.stdcall.}
+
   ISVGAnimatedString* {.pure.} = object
     lpVtbl*: ptr ISVGAnimatedStringVtbl
+
   ISVGAnimatedStringVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_baseVal*: proc(self: ptr ISVGAnimatedString, v: BSTR): HRESULT {.stdcall.}
     get_baseVal*: proc(self: ptr ISVGAnimatedString, p: ptr BSTR): HRESULT {.stdcall.}
     get_animVal*: proc(self: ptr ISVGAnimatedString, p: ptr BSTR): HRESULT {.stdcall.}
+
   ISVGStylable* {.pure.} = object
     lpVtbl*: ptr ISVGStylableVtbl
+
   ISVGStylableVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_className*: proc(self: ptr ISVGStylable, p: ptr ptr ISVGAnimatedString): HRESULT {.stdcall.}
+    get_className*:
+      proc(self: ptr ISVGStylable, p: ptr ptr ISVGAnimatedString): HRESULT {.stdcall.}
+
   ISVGLength* {.pure.} = object
     lpVtbl*: ptr ISVGLengthVtbl
+
   ISVGLengthVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_unitType*: proc(self: ptr ISVGLength, v: int16): HRESULT {.stdcall.}
     get_unitType*: proc(self: ptr ISVGLength, p: ptr int16): HRESULT {.stdcall.}
     put_value*: proc(self: ptr ISVGLength, v: float32): HRESULT {.stdcall.}
     get_value*: proc(self: ptr ISVGLength, p: ptr float32): HRESULT {.stdcall.}
-    put_valueInSpecifiedUnits*: proc(self: ptr ISVGLength, v: float32): HRESULT {.stdcall.}
-    get_valueInSpecifiedUnits*: proc(self: ptr ISVGLength, p: ptr float32): HRESULT {.stdcall.}
+    put_valueInSpecifiedUnits*:
+      proc(self: ptr ISVGLength, v: float32): HRESULT {.stdcall.}
+    get_valueInSpecifiedUnits*:
+      proc(self: ptr ISVGLength, p: ptr float32): HRESULT {.stdcall.}
     put_valueAsString*: proc(self: ptr ISVGLength, v: BSTR): HRESULT {.stdcall.}
     get_valueAsString*: proc(self: ptr ISVGLength, p: ptr BSTR): HRESULT {.stdcall.}
-    newValueSpecifiedUnits*: proc(self: ptr ISVGLength, unitType: int16, valueInSpecifiedUnits: float32): HRESULT {.stdcall.}
-    convertToSpecifiedUnits*: proc(self: ptr ISVGLength, unitType: int16): HRESULT {.stdcall.}
+    newValueSpecifiedUnits*: proc(
+      self: ptr ISVGLength, unitType: int16, valueInSpecifiedUnits: float32
+    ): HRESULT {.stdcall.}
+    convertToSpecifiedUnits*:
+      proc(self: ptr ISVGLength, unitType: int16): HRESULT {.stdcall.}
+
   ISVGAnimatedLength* {.pure.} = object
     lpVtbl*: ptr ISVGAnimatedLengthVtbl
+
   ISVGAnimatedLengthVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_baseVal*: proc(self: ptr ISVGAnimatedLength, v: ptr ISVGLength): HRESULT {.stdcall.}
-    get_baseVal*: proc(self: ptr ISVGAnimatedLength, p: ptr ptr ISVGLength): HRESULT {.stdcall.}
-    putref_animVal*: proc(self: ptr ISVGAnimatedLength, v: ptr ISVGLength): HRESULT {.stdcall.}
-    get_animVal*: proc(self: ptr ISVGAnimatedLength, p: ptr ptr ISVGLength): HRESULT {.stdcall.}
+    putref_baseVal*:
+      proc(self: ptr ISVGAnimatedLength, v: ptr ISVGLength): HRESULT {.stdcall.}
+    get_baseVal*:
+      proc(self: ptr ISVGAnimatedLength, p: ptr ptr ISVGLength): HRESULT {.stdcall.}
+    putref_animVal*:
+      proc(self: ptr ISVGAnimatedLength, v: ptr ISVGLength): HRESULT {.stdcall.}
+    get_animVal*:
+      proc(self: ptr ISVGAnimatedLength, p: ptr ptr ISVGLength): HRESULT {.stdcall.}
+
   ISVGRect* {.pure.} = object
     lpVtbl*: ptr ISVGRectVtbl
+
   ISVGRectVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_x*: proc(self: ptr ISVGRect, v: float32): HRESULT {.stdcall.}
     get_x*: proc(self: ptr ISVGRect, p: ptr float32): HRESULT {.stdcall.}
@@ -10198,11 +14622,14 @@
     get_width*: proc(self: ptr ISVGRect, p: ptr float32): HRESULT {.stdcall.}
     put_height*: proc(self: ptr ISVGRect, v: float32): HRESULT {.stdcall.}
     get_height*: proc(self: ptr ISVGRect, p: ptr float32): HRESULT {.stdcall.}
+
   ISVGViewSpec* {.pure.} = object
     lpVtbl*: ptr ISVGViewSpecVtbl
+
   ISVGViewSpecVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGMatrix* {.pure.} = object
     lpVtbl*: ptr ISVGMatrixVtbl
+
   ISVGMatrixVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_a*: proc(self: ptr ISVGMatrix, v: float32): HRESULT {.stdcall.}
     get_a*: proc(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.stdcall.}
@@ -10216,337 +14643,694 @@
     get_e*: proc(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.stdcall.}
     put_f*: proc(self: ptr ISVGMatrix, v: float32): HRESULT {.stdcall.}
     get_f*: proc(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.stdcall.}
-    multiply*: proc(self: ptr ISVGMatrix, secondMatrix: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
-    inverse*: proc(self: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
-    translate*: proc(self: ptr ISVGMatrix, x: float32, y: float32, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
-    scale*: proc(self: ptr ISVGMatrix, scaleFactor: float32, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
-    scaleNonUniform*: proc(self: ptr ISVGMatrix, scaleFactorX: float32, scaleFactorY: float32, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
-    rotate*: proc(self: ptr ISVGMatrix, angle: float32, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
-    rotateFromVector*: proc(self: ptr ISVGMatrix, x: float32, y: float32, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
-    flipX*: proc(self: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
-    flipY*: proc(self: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
-    skewX*: proc(self: ptr ISVGMatrix, angle: float32, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
-    skewY*: proc(self: ptr ISVGMatrix, angle: float32, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
+    multiply*: proc(
+      self: ptr ISVGMatrix, secondMatrix: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix
+    ): HRESULT {.stdcall.}
+    inverse*:
+      proc(self: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
+    translate*: proc(
+      self: ptr ISVGMatrix, x: float32, y: float32, ppResult: ptr ptr ISVGMatrix
+    ): HRESULT {.stdcall.}
+    scale*: proc(
+      self: ptr ISVGMatrix, scaleFactor: float32, ppResult: ptr ptr ISVGMatrix
+    ): HRESULT {.stdcall.}
+    scaleNonUniform*: proc(
+      self: ptr ISVGMatrix,
+      scaleFactorX: float32,
+      scaleFactorY: float32,
+      ppResult: ptr ptr ISVGMatrix,
+    ): HRESULT {.stdcall.}
+    rotate*: proc(
+      self: ptr ISVGMatrix, angle: float32, ppResult: ptr ptr ISVGMatrix
+    ): HRESULT {.stdcall.}
+    rotateFromVector*: proc(
+      self: ptr ISVGMatrix, x: float32, y: float32, ppResult: ptr ptr ISVGMatrix
+    ): HRESULT {.stdcall.}
+    flipX*:
+      proc(self: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
+    flipY*:
+      proc(self: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
+    skewX*: proc(
+      self: ptr ISVGMatrix, angle: float32, ppResult: ptr ptr ISVGMatrix
+    ): HRESULT {.stdcall.}
+    skewY*: proc(
+      self: ptr ISVGMatrix, angle: float32, ppResult: ptr ptr ISVGMatrix
+    ): HRESULT {.stdcall.}
+
   ISVGPoint* {.pure.} = object
     lpVtbl*: ptr ISVGPointVtbl
+
   ISVGPointVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_x*: proc(self: ptr ISVGPoint, v: float32): HRESULT {.stdcall.}
     get_x*: proc(self: ptr ISVGPoint, p: ptr float32): HRESULT {.stdcall.}
     put_y*: proc(self: ptr ISVGPoint, v: float32): HRESULT {.stdcall.}
     get_y*: proc(self: ptr ISVGPoint, p: ptr float32): HRESULT {.stdcall.}
-    matrixTransform*: proc(self: ptr ISVGPoint, pMatrix: ptr ISVGMatrix, ppResult: ptr ptr ISVGPoint): HRESULT {.stdcall.}
+    matrixTransform*: proc(
+      self: ptr ISVGPoint, pMatrix: ptr ISVGMatrix, ppResult: ptr ptr ISVGPoint
+    ): HRESULT {.stdcall.}
+
   ISVGNumber* {.pure.} = object
     lpVtbl*: ptr ISVGNumberVtbl
+
   ISVGNumberVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_value*: proc(self: ptr ISVGNumber, v: float32): HRESULT {.stdcall.}
     get_value*: proc(self: ptr ISVGNumber, p: ptr float32): HRESULT {.stdcall.}
+
   ISVGTransform* {.pure.} = object
     lpVtbl*: ptr ISVGTransformVtbl
+
   ISVGTransformVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_type*: proc(self: ptr ISVGTransform, v: int16): HRESULT {.stdcall.}
     get_type*: proc(self: ptr ISVGTransform, p: ptr int16): HRESULT {.stdcall.}
-    putref_matrix*: proc(self: ptr ISVGTransform, v: ptr ISVGMatrix): HRESULT {.stdcall.}
-    get_matrix*: proc(self: ptr ISVGTransform, p: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
+    putref_matrix*:
+      proc(self: ptr ISVGTransform, v: ptr ISVGMatrix): HRESULT {.stdcall.}
+    get_matrix*:
+      proc(self: ptr ISVGTransform, p: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
     put_angle*: proc(self: ptr ISVGTransform, v: float32): HRESULT {.stdcall.}
     get_angle*: proc(self: ptr ISVGTransform, p: ptr float32): HRESULT {.stdcall.}
-    setMatrix*: proc(self: ptr ISVGTransform, matrix: ptr ISVGMatrix): HRESULT {.stdcall.}
-    setTranslate*: proc(self: ptr ISVGTransform, tx: float32, ty: float32): HRESULT {.stdcall.}
-    setScale*: proc(self: ptr ISVGTransform, sx: float32, sy: float32): HRESULT {.stdcall.}
-    setRotate*: proc(self: ptr ISVGTransform, angle: float32, cx: float32, cy: float32): HRESULT {.stdcall.}
+    setMatrix*:
+      proc(self: ptr ISVGTransform, matrix: ptr ISVGMatrix): HRESULT {.stdcall.}
+    setTranslate*:
+      proc(self: ptr ISVGTransform, tx: float32, ty: float32): HRESULT {.stdcall.}
+    setScale*:
+      proc(self: ptr ISVGTransform, sx: float32, sy: float32): HRESULT {.stdcall.}
+    setRotate*: proc(
+      self: ptr ISVGTransform, angle: float32, cx: float32, cy: float32
+    ): HRESULT {.stdcall.}
     setSkewX*: proc(self: ptr ISVGTransform, angle: float32): HRESULT {.stdcall.}
     setSkewY*: proc(self: ptr ISVGTransform, angle: float32): HRESULT {.stdcall.}
+
   ISVGSVGElement* {.pure.} = object
     lpVtbl*: ptr ISVGSVGElementVtbl
+
   ISVGSVGElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_x*: proc(self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_y*: proc(self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_width*: proc(self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_width*: proc(self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_height*: proc(self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_height*: proc(self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_x*:
+      proc(self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_x*:
+      proc(self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_y*:
+      proc(self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_y*:
+      proc(self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_width*:
+      proc(self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_width*:
+      proc(self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_height*:
+      proc(self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_height*:
+      proc(self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
     put_contentScriptType*: proc(self: ptr ISVGSVGElement, v: BSTR): HRESULT {.stdcall.}
-    get_contentScriptType*: proc(self: ptr ISVGSVGElement, p: ptr BSTR): HRESULT {.stdcall.}
+    get_contentScriptType*:
+      proc(self: ptr ISVGSVGElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_contentStyleType*: proc(self: ptr ISVGSVGElement, v: BSTR): HRESULT {.stdcall.}
-    get_contentStyleType*: proc(self: ptr ISVGSVGElement, p: ptr BSTR): HRESULT {.stdcall.}
-    putref_viewport*: proc(self: ptr ISVGSVGElement, v: ptr ISVGRect): HRESULT {.stdcall.}
-    get_viewport*: proc(self: ptr ISVGSVGElement, p: ptr ptr ISVGRect): HRESULT {.stdcall.}
-    put_pixelUnitToMillimeterX*: proc(self: ptr ISVGSVGElement, v: float32): HRESULT {.stdcall.}
-    get_pixelUnitToMillimeterX*: proc(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.stdcall.}
-    put_pixelUnitToMillimeterY*: proc(self: ptr ISVGSVGElement, v: float32): HRESULT {.stdcall.}
-    get_pixelUnitToMillimeterY*: proc(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.stdcall.}
-    put_screenPixelToMillimeterX*: proc(self: ptr ISVGSVGElement, v: float32): HRESULT {.stdcall.}
-    get_screenPixelToMillimeterX*: proc(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.stdcall.}
-    put_screenPixelToMillimeterY*: proc(self: ptr ISVGSVGElement, v: float32): HRESULT {.stdcall.}
-    get_screenPixelToMillimeterY*: proc(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.stdcall.}
-    put_useCurrentView*: proc(self: ptr ISVGSVGElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_useCurrentView*: proc(self: ptr ISVGSVGElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    putref_currentView*: proc(self: ptr ISVGSVGElement, v: ptr ISVGViewSpec): HRESULT {.stdcall.}
-    get_currentView*: proc(self: ptr ISVGSVGElement, p: ptr ptr ISVGViewSpec): HRESULT {.stdcall.}
+    get_contentStyleType*:
+      proc(self: ptr ISVGSVGElement, p: ptr BSTR): HRESULT {.stdcall.}
+    putref_viewport*:
+      proc(self: ptr ISVGSVGElement, v: ptr ISVGRect): HRESULT {.stdcall.}
+    get_viewport*:
+      proc(self: ptr ISVGSVGElement, p: ptr ptr ISVGRect): HRESULT {.stdcall.}
+    put_pixelUnitToMillimeterX*:
+      proc(self: ptr ISVGSVGElement, v: float32): HRESULT {.stdcall.}
+    get_pixelUnitToMillimeterX*:
+      proc(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.stdcall.}
+    put_pixelUnitToMillimeterY*:
+      proc(self: ptr ISVGSVGElement, v: float32): HRESULT {.stdcall.}
+    get_pixelUnitToMillimeterY*:
+      proc(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.stdcall.}
+    put_screenPixelToMillimeterX*:
+      proc(self: ptr ISVGSVGElement, v: float32): HRESULT {.stdcall.}
+    get_screenPixelToMillimeterX*:
+      proc(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.stdcall.}
+    put_screenPixelToMillimeterY*:
+      proc(self: ptr ISVGSVGElement, v: float32): HRESULT {.stdcall.}
+    get_screenPixelToMillimeterY*:
+      proc(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.stdcall.}
+    put_useCurrentView*:
+      proc(self: ptr ISVGSVGElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_useCurrentView*:
+      proc(self: ptr ISVGSVGElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    putref_currentView*:
+      proc(self: ptr ISVGSVGElement, v: ptr ISVGViewSpec): HRESULT {.stdcall.}
+    get_currentView*:
+      proc(self: ptr ISVGSVGElement, p: ptr ptr ISVGViewSpec): HRESULT {.stdcall.}
     put_currentScale*: proc(self: ptr ISVGSVGElement, v: float32): HRESULT {.stdcall.}
-    get_currentScale*: proc(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.stdcall.}
-    putref_currentTranslate*: proc(self: ptr ISVGSVGElement, v: ptr ISVGPoint): HRESULT {.stdcall.}
-    get_currentTranslate*: proc(self: ptr ISVGSVGElement, p: ptr ptr ISVGPoint): HRESULT {.stdcall.}
-    suspendRedraw*: proc(self: ptr ISVGSVGElement, maxWaitMilliseconds: ULONG, pResult: ptr ULONG): HRESULT {.stdcall.}
-    unsuspendRedraw*: proc(self: ptr ISVGSVGElement, suspendHandeID: ULONG): HRESULT {.stdcall.}
+    get_currentScale*:
+      proc(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.stdcall.}
+    putref_currentTranslate*:
+      proc(self: ptr ISVGSVGElement, v: ptr ISVGPoint): HRESULT {.stdcall.}
+    get_currentTranslate*:
+      proc(self: ptr ISVGSVGElement, p: ptr ptr ISVGPoint): HRESULT {.stdcall.}
+    suspendRedraw*: proc(
+      self: ptr ISVGSVGElement, maxWaitMilliseconds: ULONG, pResult: ptr ULONG
+    ): HRESULT {.stdcall.}
+    unsuspendRedraw*:
+      proc(self: ptr ISVGSVGElement, suspendHandeID: ULONG): HRESULT {.stdcall.}
     unsuspendRedrawAll*: proc(self: ptr ISVGSVGElement): HRESULT {.stdcall.}
     forceRedraw*: proc(self: ptr ISVGSVGElement): HRESULT {.stdcall.}
     pauseAnimations*: proc(self: ptr ISVGSVGElement): HRESULT {.stdcall.}
     unpauseAnimations*: proc(self: ptr ISVGSVGElement): HRESULT {.stdcall.}
-    animationsPaused*: proc(self: ptr ISVGSVGElement, pResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    getCurrentTime*: proc(self: ptr ISVGSVGElement, pResult: ptr float32): HRESULT {.stdcall.}
-    setCurrentTime*: proc(self: ptr ISVGSVGElement, seconds: float32): HRESULT {.stdcall.}
-    getIntersectionList*: proc(self: ptr ISVGSVGElement, rect: ptr ISVGRect, referenceElement: ptr ISVGElement, pResult: ptr VARIANT): HRESULT {.stdcall.}
-    getEnclosureList*: proc(self: ptr ISVGSVGElement, rect: ptr ISVGRect, referenceElement: ptr ISVGElement, pResult: ptr VARIANT): HRESULT {.stdcall.}
-    checkIntersection*: proc(self: ptr ISVGSVGElement, element: ptr ISVGElement, rect: ptr ISVGRect, pResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    checkEnclosure*: proc(self: ptr ISVGSVGElement, element: ptr ISVGElement, rect: ptr ISVGRect, pResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    animationsPaused*:
+      proc(self: ptr ISVGSVGElement, pResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    getCurrentTime*:
+      proc(self: ptr ISVGSVGElement, pResult: ptr float32): HRESULT {.stdcall.}
+    setCurrentTime*:
+      proc(self: ptr ISVGSVGElement, seconds: float32): HRESULT {.stdcall.}
+    getIntersectionList*: proc(
+      self: ptr ISVGSVGElement,
+      rect: ptr ISVGRect,
+      referenceElement: ptr ISVGElement,
+      pResult: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    getEnclosureList*: proc(
+      self: ptr ISVGSVGElement,
+      rect: ptr ISVGRect,
+      referenceElement: ptr ISVGElement,
+      pResult: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    checkIntersection*: proc(
+      self: ptr ISVGSVGElement,
+      element: ptr ISVGElement,
+      rect: ptr ISVGRect,
+      pResult: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    checkEnclosure*: proc(
+      self: ptr ISVGSVGElement,
+      element: ptr ISVGElement,
+      rect: ptr ISVGRect,
+      pResult: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
     deselectAll*: proc(self: ptr ISVGSVGElement): HRESULT {.stdcall.}
-    createSVGNumber*: proc(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGNumber): HRESULT {.stdcall.}
-    createSVGLength*: proc(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGLength): HRESULT {.stdcall.}
-    createSVGAngle*: proc(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGAngle): HRESULT {.stdcall.}
-    createSVGPoint*: proc(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGPoint): HRESULT {.stdcall.}
-    createSVGMatrix*: proc(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
-    createSVGRect*: proc(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGRect): HRESULT {.stdcall.}
-    createSVGTransform*: proc(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGTransform): HRESULT {.stdcall.}
-    createSVGTransformFromMatrix*: proc(self: ptr ISVGSVGElement, matrix: ptr ISVGMatrix, pResult: ptr ptr ISVGTransform): HRESULT {.stdcall.}
-    getElementById*: proc(self: ptr ISVGSVGElement, elementId: BSTR, pResult: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    createSVGNumber*:
+      proc(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGNumber): HRESULT {.stdcall.}
+    createSVGLength*:
+      proc(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGLength): HRESULT {.stdcall.}
+    createSVGAngle*:
+      proc(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGAngle): HRESULT {.stdcall.}
+    createSVGPoint*:
+      proc(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGPoint): HRESULT {.stdcall.}
+    createSVGMatrix*:
+      proc(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
+    createSVGRect*:
+      proc(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGRect): HRESULT {.stdcall.}
+    createSVGTransform*: proc(
+      self: ptr ISVGSVGElement, pResult: ptr ptr ISVGTransform
+    ): HRESULT {.stdcall.}
+    createSVGTransformFromMatrix*: proc(
+      self: ptr ISVGSVGElement, matrix: ptr ISVGMatrix, pResult: ptr ptr ISVGTransform
+    ): HRESULT {.stdcall.}
+    getElementById*: proc(
+      self: ptr ISVGSVGElement, elementId: BSTR, pResult: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
+
   ISVGAnimatedEnumeration* {.pure.} = object
     lpVtbl*: ptr ISVGAnimatedEnumerationVtbl
+
   ISVGAnimatedEnumerationVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_baseVal*: proc(self: ptr ISVGAnimatedEnumeration, v: USHORT): HRESULT {.stdcall.}
-    get_baseVal*: proc(self: ptr ISVGAnimatedEnumeration, p: ptr USHORT): HRESULT {.stdcall.}
-    put_animVal*: proc(self: ptr ISVGAnimatedEnumeration, v: USHORT): HRESULT {.stdcall.}
-    get_animVal*: proc(self: ptr ISVGAnimatedEnumeration, p: ptr USHORT): HRESULT {.stdcall.}
+    put_baseVal*:
+      proc(self: ptr ISVGAnimatedEnumeration, v: USHORT): HRESULT {.stdcall.}
+    get_baseVal*:
+      proc(self: ptr ISVGAnimatedEnumeration, p: ptr USHORT): HRESULT {.stdcall.}
+    put_animVal*:
+      proc(self: ptr ISVGAnimatedEnumeration, v: USHORT): HRESULT {.stdcall.}
+    get_animVal*:
+      proc(self: ptr ISVGAnimatedEnumeration, p: ptr USHORT): HRESULT {.stdcall.}
+
   ISVGElement* {.pure.} = object
     lpVtbl*: ptr ISVGElementVtbl
+
   ISVGElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_xmlbase*: proc(self: ptr ISVGElement, v: BSTR): HRESULT {.stdcall.}
     get_xmlbase*: proc(self: ptr ISVGElement, p: ptr BSTR): HRESULT {.stdcall.}
-    putref_ownerSVGElement*: proc(self: ptr ISVGElement, v: ptr ISVGSVGElement): HRESULT {.stdcall.}
-    get_ownerSVGElement*: proc(self: ptr ISVGElement, p: ptr ptr ISVGSVGElement): HRESULT {.stdcall.}
-    putref_viewportElement*: proc(self: ptr ISVGElement, v: ptr ISVGElement): HRESULT {.stdcall.}
-    get_viewportElement*: proc(self: ptr ISVGElement, p: ptr ptr ISVGElement): HRESULT {.stdcall.}
-    putref_focusable*: proc(self: ptr ISVGElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    get_focusable*: proc(self: ptr ISVGElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
+    putref_ownerSVGElement*:
+      proc(self: ptr ISVGElement, v: ptr ISVGSVGElement): HRESULT {.stdcall.}
+    get_ownerSVGElement*:
+      proc(self: ptr ISVGElement, p: ptr ptr ISVGSVGElement): HRESULT {.stdcall.}
+    putref_viewportElement*:
+      proc(self: ptr ISVGElement, v: ptr ISVGElement): HRESULT {.stdcall.}
+    get_viewportElement*:
+      proc(self: ptr ISVGElement, p: ptr ptr ISVGElement): HRESULT {.stdcall.}
+    putref_focusable*:
+      proc(self: ptr ISVGElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
+    get_focusable*: proc(
+      self: ptr ISVGElement, p: ptr ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+
   ISVGLocatable* {.pure.} = object
     lpVtbl*: ptr ISVGLocatableVtbl
+
   ISVGLocatableVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_nearestViewportElement*: proc(self: ptr ISVGLocatable, p: ptr ptr ISVGElement): HRESULT {.stdcall.}
-    get_farthestViewportElement*: proc(self: ptr ISVGLocatable, p: ptr ptr ISVGElement): HRESULT {.stdcall.}
-    getBBox*: proc(self: ptr ISVGLocatable, ppResult: ptr ptr ISVGRect): HRESULT {.stdcall.}
-    getCTM*: proc(self: ptr ISVGLocatable, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
-    getScreenCTM*: proc(self: ptr ISVGLocatable, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
-    getTransformToElement*: proc(self: ptr ISVGLocatable, pElement: ptr ISVGElement, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
+    get_nearestViewportElement*:
+      proc(self: ptr ISVGLocatable, p: ptr ptr ISVGElement): HRESULT {.stdcall.}
+    get_farthestViewportElement*:
+      proc(self: ptr ISVGLocatable, p: ptr ptr ISVGElement): HRESULT {.stdcall.}
+    getBBox*:
+      proc(self: ptr ISVGLocatable, ppResult: ptr ptr ISVGRect): HRESULT {.stdcall.}
+    getCTM*:
+      proc(self: ptr ISVGLocatable, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
+    getScreenCTM*:
+      proc(self: ptr ISVGLocatable, ppResult: ptr ptr ISVGMatrix): HRESULT {.stdcall.}
+    getTransformToElement*: proc(
+      self: ptr ISVGLocatable, pElement: ptr ISVGElement, ppResult: ptr ptr ISVGMatrix
+    ): HRESULT {.stdcall.}
+
   ISVGTransformList* {.pure.} = object
     lpVtbl*: ptr ISVGTransformListVtbl
+
   ISVGTransformListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_numberOfItems*: proc(self: ptr ISVGTransformList, v: LONG): HRESULT {.stdcall.}
-    get_numberOfItems*: proc(self: ptr ISVGTransformList, p: ptr LONG): HRESULT {.stdcall.}
+    get_numberOfItems*:
+      proc(self: ptr ISVGTransformList, p: ptr LONG): HRESULT {.stdcall.}
     clear*: proc(self: ptr ISVGTransformList): HRESULT {.stdcall.}
-    initialize*: proc(self: ptr ISVGTransformList, newItem: ptr ISVGTransform, ppResult: ptr ptr ISVGTransform): HRESULT {.stdcall.}
-    getItem*: proc(self: ptr ISVGTransformList, index: LONG, ppResult: ptr ptr ISVGTransform): HRESULT {.stdcall.}
-    insertItemBefore*: proc(self: ptr ISVGTransformList, newItem: ptr ISVGTransform, index: LONG, ppResult: ptr ptr ISVGTransform): HRESULT {.stdcall.}
-    replaceItem*: proc(self: ptr ISVGTransformList, newItem: ptr ISVGTransform, index: LONG, ppResult: ptr ptr ISVGTransform): HRESULT {.stdcall.}
-    removeItem*: proc(self: ptr ISVGTransformList, index: LONG, ppResult: ptr ptr ISVGTransform): HRESULT {.stdcall.}
-    appendItem*: proc(self: ptr ISVGTransformList, newItem: ptr ISVGTransform, ppResult: ptr ptr ISVGTransform): HRESULT {.stdcall.}
-    createSVGTransformFromMatrix*: proc(self: ptr ISVGTransformList, newItem: ptr ISVGMatrix, ppResult: ptr ptr ISVGTransform): HRESULT {.stdcall.}
-    consolidate*: proc(self: ptr ISVGTransformList, ppResult: ptr ptr ISVGTransform): HRESULT {.stdcall.}
+    initialize*: proc(
+      self: ptr ISVGTransformList,
+      newItem: ptr ISVGTransform,
+      ppResult: ptr ptr ISVGTransform,
+    ): HRESULT {.stdcall.}
+    getItem*: proc(
+      self: ptr ISVGTransformList, index: LONG, ppResult: ptr ptr ISVGTransform
+    ): HRESULT {.stdcall.}
+    insertItemBefore*: proc(
+      self: ptr ISVGTransformList,
+      newItem: ptr ISVGTransform,
+      index: LONG,
+      ppResult: ptr ptr ISVGTransform,
+    ): HRESULT {.stdcall.}
+    replaceItem*: proc(
+      self: ptr ISVGTransformList,
+      newItem: ptr ISVGTransform,
+      index: LONG,
+      ppResult: ptr ptr ISVGTransform,
+    ): HRESULT {.stdcall.}
+    removeItem*: proc(
+      self: ptr ISVGTransformList, index: LONG, ppResult: ptr ptr ISVGTransform
+    ): HRESULT {.stdcall.}
+    appendItem*: proc(
+      self: ptr ISVGTransformList,
+      newItem: ptr ISVGTransform,
+      ppResult: ptr ptr ISVGTransform,
+    ): HRESULT {.stdcall.}
+    createSVGTransformFromMatrix*: proc(
+      self: ptr ISVGTransformList,
+      newItem: ptr ISVGMatrix,
+      ppResult: ptr ptr ISVGTransform,
+    ): HRESULT {.stdcall.}
+    consolidate*: proc(
+      self: ptr ISVGTransformList, ppResult: ptr ptr ISVGTransform
+    ): HRESULT {.stdcall.}
+
   ISVGAnimatedTransformList* {.pure.} = object
     lpVtbl*: ptr ISVGAnimatedTransformListVtbl
+
   ISVGAnimatedTransformListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_baseVal*: proc(self: ptr ISVGAnimatedTransformList, v: ptr ISVGTransformList): HRESULT {.stdcall.}
-    get_baseVal*: proc(self: ptr ISVGAnimatedTransformList, p: ptr ptr ISVGTransformList): HRESULT {.stdcall.}
-    putref_animVal*: proc(self: ptr ISVGAnimatedTransformList, v: ptr ISVGTransformList): HRESULT {.stdcall.}
-    get_animVal*: proc(self: ptr ISVGAnimatedTransformList, p: ptr ptr ISVGTransformList): HRESULT {.stdcall.}
+    putref_baseVal*: proc(
+      self: ptr ISVGAnimatedTransformList, v: ptr ISVGTransformList
+    ): HRESULT {.stdcall.}
+    get_baseVal*: proc(
+      self: ptr ISVGAnimatedTransformList, p: ptr ptr ISVGTransformList
+    ): HRESULT {.stdcall.}
+    putref_animVal*: proc(
+      self: ptr ISVGAnimatedTransformList, v: ptr ISVGTransformList
+    ): HRESULT {.stdcall.}
+    get_animVal*: proc(
+      self: ptr ISVGAnimatedTransformList, p: ptr ptr ISVGTransformList
+    ): HRESULT {.stdcall.}
+
   ISVGTransformable* {.pure.} = object
     lpVtbl*: ptr ISVGTransformableVtbl
+
   ISVGTransformableVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_transform*: proc(self: ptr ISVGTransformable, p: ptr ptr ISVGAnimatedTransformList): HRESULT {.stdcall.}
+    get_transform*: proc(
+      self: ptr ISVGTransformable, p: ptr ptr ISVGAnimatedTransformList
+    ): HRESULT {.stdcall.}
+
   ISVGStringList* {.pure.} = object
     lpVtbl*: ptr ISVGStringListVtbl
+
   ISVGStringListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_numberOfItems*: proc(self: ptr ISVGStringList, v: LONG): HRESULT {.stdcall.}
     get_numberOfItems*: proc(self: ptr ISVGStringList, p: ptr LONG): HRESULT {.stdcall.}
     clear*: proc(self: ptr ISVGStringList): HRESULT {.stdcall.}
-    initialize*: proc(self: ptr ISVGStringList, newItem: BSTR, ppResult: ptr BSTR): HRESULT {.stdcall.}
-    getItem*: proc(self: ptr ISVGStringList, index: LONG, ppResult: ptr BSTR): HRESULT {.stdcall.}
-    insertItemBefore*: proc(self: ptr ISVGStringList, newItem: BSTR, index: LONG, ppResult: ptr BSTR): HRESULT {.stdcall.}
-    replaceItem*: proc(self: ptr ISVGStringList, newItem: BSTR, index: LONG, ppResult: ptr BSTR): HRESULT {.stdcall.}
-    removeItem*: proc(self: ptr ISVGStringList, index: LONG, ppResult: ptr BSTR): HRESULT {.stdcall.}
-    appendItem*: proc(self: ptr ISVGStringList, newItem: BSTR, ppResult: ptr BSTR): HRESULT {.stdcall.}
+    initialize*: proc(
+      self: ptr ISVGStringList, newItem: BSTR, ppResult: ptr BSTR
+    ): HRESULT {.stdcall.}
+    getItem*: proc(self: ptr ISVGStringList, index: LONG, ppResult: ptr BSTR): HRESULT {.
+      stdcall
+    .}
+    insertItemBefore*: proc(
+      self: ptr ISVGStringList, newItem: BSTR, index: LONG, ppResult: ptr BSTR
+    ): HRESULT {.stdcall.}
+    replaceItem*: proc(
+      self: ptr ISVGStringList, newItem: BSTR, index: LONG, ppResult: ptr BSTR
+    ): HRESULT {.stdcall.}
+    removeItem*: proc(
+      self: ptr ISVGStringList, index: LONG, ppResult: ptr BSTR
+    ): HRESULT {.stdcall.}
+    appendItem*: proc(
+      self: ptr ISVGStringList, newItem: BSTR, ppResult: ptr BSTR
+    ): HRESULT {.stdcall.}
+
   ISVGTests* {.pure.} = object
     lpVtbl*: ptr ISVGTestsVtbl
+
   ISVGTestsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_requiredFeatures*: proc(self: ptr ISVGTests, p: ptr ptr ISVGStringList): HRESULT {.stdcall.}
-    get_requiredExtensions*: proc(self: ptr ISVGTests, p: ptr ptr ISVGStringList): HRESULT {.stdcall.}
-    get_systemLanguage*: proc(self: ptr ISVGTests, p: ptr ptr ISVGStringList): HRESULT {.stdcall.}
-    hasExtension*: proc(self: ptr ISVGTests, extension: BSTR, pResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_requiredFeatures*:
+      proc(self: ptr ISVGTests, p: ptr ptr ISVGStringList): HRESULT {.stdcall.}
+    get_requiredExtensions*:
+      proc(self: ptr ISVGTests, p: ptr ptr ISVGStringList): HRESULT {.stdcall.}
+    get_systemLanguage*:
+      proc(self: ptr ISVGTests, p: ptr ptr ISVGStringList): HRESULT {.stdcall.}
+    hasExtension*: proc(
+      self: ptr ISVGTests, extension: BSTR, pResult: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+
   ISVGLangSpace* {.pure.} = object
     lpVtbl*: ptr ISVGLangSpaceVtbl
+
   ISVGLangSpaceVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_xmllang*: proc(self: ptr ISVGLangSpace, v: BSTR): HRESULT {.stdcall.}
     get_xmllang*: proc(self: ptr ISVGLangSpace, p: ptr BSTR): HRESULT {.stdcall.}
     put_xmlspace*: proc(self: ptr ISVGLangSpace, v: BSTR): HRESULT {.stdcall.}
     get_xmlspace*: proc(self: ptr ISVGLangSpace, p: ptr BSTR): HRESULT {.stdcall.}
+
   ISVGAnimatedBoolean* {.pure.} = object
     lpVtbl*: ptr ISVGAnimatedBooleanVtbl
+
   ISVGAnimatedBooleanVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_baseVal*: proc(self: ptr ISVGAnimatedBoolean, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_baseVal*: proc(self: ptr ISVGAnimatedBoolean, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_animVal*: proc(self: ptr ISVGAnimatedBoolean, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_animVal*: proc(self: ptr ISVGAnimatedBoolean, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_baseVal*:
+      proc(self: ptr ISVGAnimatedBoolean, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_baseVal*:
+      proc(self: ptr ISVGAnimatedBoolean, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_animVal*:
+      proc(self: ptr ISVGAnimatedBoolean, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_animVal*:
+      proc(self: ptr ISVGAnimatedBoolean, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   ISVGExternalResourcesRequired* {.pure.} = object
     lpVtbl*: ptr ISVGExternalResourcesRequiredVtbl
+
   ISVGExternalResourcesRequiredVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_externalResourcesRequired*: proc(self: ptr ISVGExternalResourcesRequired, p: ptr ptr ISVGAnimatedBoolean): HRESULT {.stdcall.}
+    get_externalResourcesRequired*: proc(
+      self: ptr ISVGExternalResourcesRequired, p: ptr ptr ISVGAnimatedBoolean
+    ): HRESULT {.stdcall.}
+
   ISVGAnimatedRect* {.pure.} = object
     lpVtbl*: ptr ISVGAnimatedRectVtbl
+
   ISVGAnimatedRectVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_baseVal*: proc(self: ptr ISVGAnimatedRect, v: ptr ISVGRect): HRESULT {.stdcall.}
-    get_baseVal*: proc(self: ptr ISVGAnimatedRect, p: ptr ptr ISVGRect): HRESULT {.stdcall.}
-    putref_animVal*: proc(self: ptr ISVGAnimatedRect, v: ptr ISVGRect): HRESULT {.stdcall.}
-    get_animVal*: proc(self: ptr ISVGAnimatedRect, p: ptr ptr ISVGRect): HRESULT {.stdcall.}
+    putref_baseVal*:
+      proc(self: ptr ISVGAnimatedRect, v: ptr ISVGRect): HRESULT {.stdcall.}
+    get_baseVal*:
+      proc(self: ptr ISVGAnimatedRect, p: ptr ptr ISVGRect): HRESULT {.stdcall.}
+    putref_animVal*:
+      proc(self: ptr ISVGAnimatedRect, v: ptr ISVGRect): HRESULT {.stdcall.}
+    get_animVal*:
+      proc(self: ptr ISVGAnimatedRect, p: ptr ptr ISVGRect): HRESULT {.stdcall.}
+
   ISVGPreserveAspectRatio* {.pure.} = object
     lpVtbl*: ptr ISVGPreserveAspectRatioVtbl
+
   ISVGPreserveAspectRatioVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_align*: proc(self: ptr ISVGPreserveAspectRatio, v: int16): HRESULT {.stdcall.}
-    get_align*: proc(self: ptr ISVGPreserveAspectRatio, p: ptr int16): HRESULT {.stdcall.}
-    put_meetOrSlice*: proc(self: ptr ISVGPreserveAspectRatio, v: int16): HRESULT {.stdcall.}
-    get_meetOrSlice*: proc(self: ptr ISVGPreserveAspectRatio, p: ptr int16): HRESULT {.stdcall.}
+    get_align*:
+      proc(self: ptr ISVGPreserveAspectRatio, p: ptr int16): HRESULT {.stdcall.}
+    put_meetOrSlice*:
+      proc(self: ptr ISVGPreserveAspectRatio, v: int16): HRESULT {.stdcall.}
+    get_meetOrSlice*:
+      proc(self: ptr ISVGPreserveAspectRatio, p: ptr int16): HRESULT {.stdcall.}
+
   ISVGAnimatedPreserveAspectRatio* {.pure.} = object
     lpVtbl*: ptr ISVGAnimatedPreserveAspectRatioVtbl
+
   ISVGAnimatedPreserveAspectRatioVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_baseVal*: proc(self: ptr ISVGAnimatedPreserveAspectRatio, v: ptr ISVGPreserveAspectRatio): HRESULT {.stdcall.}
-    get_baseVal*: proc(self: ptr ISVGAnimatedPreserveAspectRatio, p: ptr ptr ISVGPreserveAspectRatio): HRESULT {.stdcall.}
-    putref_animVal*: proc(self: ptr ISVGAnimatedPreserveAspectRatio, v: ptr ISVGPreserveAspectRatio): HRESULT {.stdcall.}
-    get_animVal*: proc(self: ptr ISVGAnimatedPreserveAspectRatio, p: ptr ptr ISVGPreserveAspectRatio): HRESULT {.stdcall.}
+    putref_baseVal*: proc(
+      self: ptr ISVGAnimatedPreserveAspectRatio, v: ptr ISVGPreserveAspectRatio
+    ): HRESULT {.stdcall.}
+    get_baseVal*: proc(
+      self: ptr ISVGAnimatedPreserveAspectRatio, p: ptr ptr ISVGPreserveAspectRatio
+    ): HRESULT {.stdcall.}
+    putref_animVal*: proc(
+      self: ptr ISVGAnimatedPreserveAspectRatio, v: ptr ISVGPreserveAspectRatio
+    ): HRESULT {.stdcall.}
+    get_animVal*: proc(
+      self: ptr ISVGAnimatedPreserveAspectRatio, p: ptr ptr ISVGPreserveAspectRatio
+    ): HRESULT {.stdcall.}
+
   ISVGFitToViewBox* {.pure.} = object
     lpVtbl*: ptr ISVGFitToViewBoxVtbl
+
   ISVGFitToViewBoxVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_viewBox*: proc(self: ptr ISVGFitToViewBox, p: ptr ptr ISVGAnimatedRect): HRESULT {.stdcall.}
-    putref_preserveAspectRatio*: proc(self: ptr ISVGFitToViewBox, v: ptr ISVGAnimatedPreserveAspectRatio): HRESULT {.stdcall.}
-    get_preserveAspectRatio*: proc(self: ptr ISVGFitToViewBox, p: ptr ptr ISVGAnimatedPreserveAspectRatio): HRESULT {.stdcall.}
+    get_viewBox*:
+      proc(self: ptr ISVGFitToViewBox, p: ptr ptr ISVGAnimatedRect): HRESULT {.stdcall.}
+    putref_preserveAspectRatio*: proc(
+      self: ptr ISVGFitToViewBox, v: ptr ISVGAnimatedPreserveAspectRatio
+    ): HRESULT {.stdcall.}
+    get_preserveAspectRatio*: proc(
+      self: ptr ISVGFitToViewBox, p: ptr ptr ISVGAnimatedPreserveAspectRatio
+    ): HRESULT {.stdcall.}
+
   ISVGZoomAndPan* {.pure.} = object
     lpVtbl*: ptr ISVGZoomAndPanVtbl
+
   ISVGZoomAndPanVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_zoomAndPan*: proc(self: ptr ISVGZoomAndPan, p: ptr int16): HRESULT {.stdcall.}
+
   ISVGURIReference* {.pure.} = object
     lpVtbl*: ptr ISVGURIReferenceVtbl
+
   ISVGURIReferenceVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_href*: proc(self: ptr ISVGURIReference, p: ptr ptr ISVGAnimatedString): HRESULT {.stdcall.}
+    get_href*: proc(self: ptr ISVGURIReference, p: ptr ptr ISVGAnimatedString): HRESULT {.
+      stdcall
+    .}
+
   ISVGAnimatedAngle* {.pure.} = object
     lpVtbl*: ptr ISVGAnimatedAngleVtbl
+
   ISVGAnimatedAngleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_baseVal*: proc(self: ptr ISVGAnimatedAngle, v: ptr ISVGAngle): HRESULT {.stdcall.}
-    get_baseVal*: proc(self: ptr ISVGAnimatedAngle, p: ptr ptr ISVGAngle): HRESULT {.stdcall.}
-    putref_animVal*: proc(self: ptr ISVGAnimatedAngle, v: ptr ISVGAngle): HRESULT {.stdcall.}
-    get_animVal*: proc(self: ptr ISVGAnimatedAngle, p: ptr ptr ISVGAngle): HRESULT {.stdcall.}
+    putref_baseVal*:
+      proc(self: ptr ISVGAnimatedAngle, v: ptr ISVGAngle): HRESULT {.stdcall.}
+    get_baseVal*:
+      proc(self: ptr ISVGAnimatedAngle, p: ptr ptr ISVGAngle): HRESULT {.stdcall.}
+    putref_animVal*:
+      proc(self: ptr ISVGAnimatedAngle, v: ptr ISVGAngle): HRESULT {.stdcall.}
+    get_animVal*:
+      proc(self: ptr ISVGAnimatedAngle, p: ptr ptr ISVGAngle): HRESULT {.stdcall.}
+
   ISVGAnimatedInteger* {.pure.} = object
     lpVtbl*: ptr ISVGAnimatedIntegerVtbl
+
   ISVGAnimatedIntegerVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_baseVal*: proc(self: ptr ISVGAnimatedInteger, v: LONG): HRESULT {.stdcall.}
     get_baseVal*: proc(self: ptr ISVGAnimatedInteger, p: ptr LONG): HRESULT {.stdcall.}
     put_animVal*: proc(self: ptr ISVGAnimatedInteger, v: LONG): HRESULT {.stdcall.}
     get_animVal*: proc(self: ptr ISVGAnimatedInteger, p: ptr LONG): HRESULT {.stdcall.}
+
   ISVGLengthList* {.pure.} = object
     lpVtbl*: ptr ISVGLengthListVtbl
+
   ISVGLengthListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_numberOfItems*: proc(self: ptr ISVGLengthList, v: LONG): HRESULT {.stdcall.}
     get_numberOfItems*: proc(self: ptr ISVGLengthList, p: ptr LONG): HRESULT {.stdcall.}
     clear*: proc(self: ptr ISVGLengthList): HRESULT {.stdcall.}
-    initialize*: proc(self: ptr ISVGLengthList, newItem: ptr ISVGLength, ppResult: ptr ptr ISVGLength): HRESULT {.stdcall.}
-    getItem*: proc(self: ptr ISVGLengthList, index: LONG, ppResult: ptr ptr ISVGLength): HRESULT {.stdcall.}
-    insertItemBefore*: proc(self: ptr ISVGLengthList, newItem: ptr ISVGLength, index: LONG, ppResult: ptr ptr ISVGLength): HRESULT {.stdcall.}
-    replaceItem*: proc(self: ptr ISVGLengthList, newItem: ptr ISVGLength, index: LONG, ppResult: ptr ptr ISVGLength): HRESULT {.stdcall.}
-    removeItem*: proc(self: ptr ISVGLengthList, index: LONG, ppResult: ptr ptr ISVGLength): HRESULT {.stdcall.}
-    appendItem*: proc(self: ptr ISVGLengthList, newItem: ptr ISVGLength, ppResult: ptr ptr ISVGLength): HRESULT {.stdcall.}
+    initialize*: proc(
+      self: ptr ISVGLengthList, newItem: ptr ISVGLength, ppResult: ptr ptr ISVGLength
+    ): HRESULT {.stdcall.}
+    getItem*: proc(
+      self: ptr ISVGLengthList, index: LONG, ppResult: ptr ptr ISVGLength
+    ): HRESULT {.stdcall.}
+    insertItemBefore*: proc(
+      self: ptr ISVGLengthList,
+      newItem: ptr ISVGLength,
+      index: LONG,
+      ppResult: ptr ptr ISVGLength,
+    ): HRESULT {.stdcall.}
+    replaceItem*: proc(
+      self: ptr ISVGLengthList,
+      newItem: ptr ISVGLength,
+      index: LONG,
+      ppResult: ptr ptr ISVGLength,
+    ): HRESULT {.stdcall.}
+    removeItem*: proc(
+      self: ptr ISVGLengthList, index: LONG, ppResult: ptr ptr ISVGLength
+    ): HRESULT {.stdcall.}
+    appendItem*: proc(
+      self: ptr ISVGLengthList, newItem: ptr ISVGLength, ppResult: ptr ptr ISVGLength
+    ): HRESULT {.stdcall.}
+
   ISVGAnimatedLengthList* {.pure.} = object
     lpVtbl*: ptr ISVGAnimatedLengthListVtbl
+
   ISVGAnimatedLengthListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_baseVal*: proc(self: ptr ISVGAnimatedLengthList, v: ptr ISVGLengthList): HRESULT {.stdcall.}
-    get_baseVal*: proc(self: ptr ISVGAnimatedLengthList, p: ptr ptr ISVGLengthList): HRESULT {.stdcall.}
-    putref_animVal*: proc(self: ptr ISVGAnimatedLengthList, v: ptr ISVGLengthList): HRESULT {.stdcall.}
-    get_animVal*: proc(self: ptr ISVGAnimatedLengthList, p: ptr ptr ISVGLengthList): HRESULT {.stdcall.}
+    putref_baseVal*:
+      proc(self: ptr ISVGAnimatedLengthList, v: ptr ISVGLengthList): HRESULT {.stdcall.}
+    get_baseVal*: proc(
+      self: ptr ISVGAnimatedLengthList, p: ptr ptr ISVGLengthList
+    ): HRESULT {.stdcall.}
+    putref_animVal*:
+      proc(self: ptr ISVGAnimatedLengthList, v: ptr ISVGLengthList): HRESULT {.stdcall.}
+    get_animVal*: proc(
+      self: ptr ISVGAnimatedLengthList, p: ptr ptr ISVGLengthList
+    ): HRESULT {.stdcall.}
+
   ISVGAnimatedNumber* {.pure.} = object
     lpVtbl*: ptr ISVGAnimatedNumberVtbl
+
   ISVGAnimatedNumberVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_baseVal*: proc(self: ptr ISVGAnimatedNumber, v: float32): HRESULT {.stdcall.}
-    get_baseVal*: proc(self: ptr ISVGAnimatedNumber, p: ptr float32): HRESULT {.stdcall.}
+    get_baseVal*:
+      proc(self: ptr ISVGAnimatedNumber, p: ptr float32): HRESULT {.stdcall.}
     put_animVal*: proc(self: ptr ISVGAnimatedNumber, v: float32): HRESULT {.stdcall.}
-    get_animVal*: proc(self: ptr ISVGAnimatedNumber, p: ptr float32): HRESULT {.stdcall.}
+    get_animVal*:
+      proc(self: ptr ISVGAnimatedNumber, p: ptr float32): HRESULT {.stdcall.}
+
   ISVGNumberList* {.pure.} = object
     lpVtbl*: ptr ISVGNumberListVtbl
+
   ISVGNumberListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_numberOfItems*: proc(self: ptr ISVGNumberList, v: LONG): HRESULT {.stdcall.}
     get_numberOfItems*: proc(self: ptr ISVGNumberList, p: ptr LONG): HRESULT {.stdcall.}
     clear*: proc(self: ptr ISVGNumberList): HRESULT {.stdcall.}
-    initialize*: proc(self: ptr ISVGNumberList, newItem: ptr ISVGNumber, ppResult: ptr ptr ISVGNumber): HRESULT {.stdcall.}
-    getItem*: proc(self: ptr ISVGNumberList, index: LONG, ppResult: ptr ptr ISVGNumber): HRESULT {.stdcall.}
-    insertItemBefore*: proc(self: ptr ISVGNumberList, newItem: ptr ISVGNumber, index: LONG, ppResult: ptr ptr ISVGNumber): HRESULT {.stdcall.}
-    replaceItem*: proc(self: ptr ISVGNumberList, newItem: ptr ISVGNumber, index: LONG, ppResult: ptr ptr ISVGNumber): HRESULT {.stdcall.}
-    removeItem*: proc(self: ptr ISVGNumberList, index: LONG, ppResult: ptr ptr ISVGNumber): HRESULT {.stdcall.}
-    appendItem*: proc(self: ptr ISVGNumberList, newItem: ptr ISVGNumber, ppResult: ptr ptr ISVGNumber): HRESULT {.stdcall.}
+    initialize*: proc(
+      self: ptr ISVGNumberList, newItem: ptr ISVGNumber, ppResult: ptr ptr ISVGNumber
+    ): HRESULT {.stdcall.}
+    getItem*: proc(
+      self: ptr ISVGNumberList, index: LONG, ppResult: ptr ptr ISVGNumber
+    ): HRESULT {.stdcall.}
+    insertItemBefore*: proc(
+      self: ptr ISVGNumberList,
+      newItem: ptr ISVGNumber,
+      index: LONG,
+      ppResult: ptr ptr ISVGNumber,
+    ): HRESULT {.stdcall.}
+    replaceItem*: proc(
+      self: ptr ISVGNumberList,
+      newItem: ptr ISVGNumber,
+      index: LONG,
+      ppResult: ptr ptr ISVGNumber,
+    ): HRESULT {.stdcall.}
+    removeItem*: proc(
+      self: ptr ISVGNumberList, index: LONG, ppResult: ptr ptr ISVGNumber
+    ): HRESULT {.stdcall.}
+    appendItem*: proc(
+      self: ptr ISVGNumberList, newItem: ptr ISVGNumber, ppResult: ptr ptr ISVGNumber
+    ): HRESULT {.stdcall.}
+
   ISVGAnimatedNumberList* {.pure.} = object
     lpVtbl*: ptr ISVGAnimatedNumberListVtbl
+
   ISVGAnimatedNumberListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_baseVal*: proc(self: ptr ISVGAnimatedNumberList, v: ptr ISVGNumberList): HRESULT {.stdcall.}
-    get_baseVal*: proc(self: ptr ISVGAnimatedNumberList, p: ptr ptr ISVGNumberList): HRESULT {.stdcall.}
-    putref_animVal*: proc(self: ptr ISVGAnimatedNumberList, v: ptr ISVGNumberList): HRESULT {.stdcall.}
-    get_animVal*: proc(self: ptr ISVGAnimatedNumberList, p: ptr ptr ISVGNumberList): HRESULT {.stdcall.}
+    putref_baseVal*:
+      proc(self: ptr ISVGAnimatedNumberList, v: ptr ISVGNumberList): HRESULT {.stdcall.}
+    get_baseVal*: proc(
+      self: ptr ISVGAnimatedNumberList, p: ptr ptr ISVGNumberList
+    ): HRESULT {.stdcall.}
+    putref_animVal*:
+      proc(self: ptr ISVGAnimatedNumberList, v: ptr ISVGNumberList): HRESULT {.stdcall.}
+    get_animVal*: proc(
+      self: ptr ISVGAnimatedNumberList, p: ptr ptr ISVGNumberList
+    ): HRESULT {.stdcall.}
+
   ISVGClipPathElement* {.pure.} = object
     lpVtbl*: ptr ISVGClipPathElementVtbl
+
   ISVGClipPathElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_clipPathUnits*: proc(self: ptr ISVGClipPathElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    get_clipPathUnits*: proc(self: ptr ISVGClipPathElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
+    putref_clipPathUnits*: proc(
+      self: ptr ISVGClipPathElement, v: ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    get_clipPathUnits*: proc(
+      self: ptr ISVGClipPathElement, p: ptr ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+
   DispSVGClipPathElement* {.pure.} = object
     lpVtbl*: ptr DispSVGClipPathElementVtbl
+
   DispSVGClipPathElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGDocument* {.pure.} = object
     lpVtbl*: ptr ISVGDocumentVtbl
+
   ISVGDocumentVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_rootElement*: proc(self: ptr ISVGDocument, p: ptr ptr ISVGSVGElement): HRESULT {.stdcall.}
+    get_rootElement*:
+      proc(self: ptr ISVGDocument, p: ptr ptr ISVGSVGElement): HRESULT {.stdcall.}
+
   IGetSVGDocument* {.pure.} = object
     lpVtbl*: ptr IGetSVGDocumentVtbl
+
   IGetSVGDocumentVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    getSVGDocument*: proc(self: ptr IGetSVGDocument, ppSVGDocument: ptr ptr IDispatch): HRESULT {.stdcall.}
+    getSVGDocument*: proc(
+      self: ptr IGetSVGDocument, ppSVGDocument: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   DispSVGElement* {.pure.} = object
     lpVtbl*: ptr DispSVGElementVtbl
+
   DispSVGElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IICCSVGColor* {.pure.} = object
     lpVtbl*: ptr IICCSVGColorVtbl
+
   IICCSVGColorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGPaint* {.pure.} = object
     lpVtbl*: ptr ISVGPaintVtbl
+
   ISVGPaintVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGPatternElement* {.pure.} = object
     lpVtbl*: ptr ISVGPatternElementVtbl
+
   ISVGPatternElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_patternUnits*: proc(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    get_patternUnits*: proc(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    putref_patternContentUnits*: proc(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    get_patternContentUnits*: proc(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    putref_patternTransform*: proc(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedTransformList): HRESULT {.stdcall.}
-    get_patternTransform*: proc(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedTransformList): HRESULT {.stdcall.}
-    putref_x*: proc(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_y*: proc(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_width*: proc(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_width*: proc(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_height*: proc(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_height*: proc(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_patternUnits*: proc(
+      self: ptr ISVGPatternElement, v: ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    get_patternUnits*: proc(
+      self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    putref_patternContentUnits*: proc(
+      self: ptr ISVGPatternElement, v: ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    get_patternContentUnits*: proc(
+      self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    putref_patternTransform*: proc(
+      self: ptr ISVGPatternElement, v: ptr ISVGAnimatedTransformList
+    ): HRESULT {.stdcall.}
+    get_patternTransform*: proc(
+      self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedTransformList
+    ): HRESULT {.stdcall.}
+    putref_x*:
+      proc(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_x*: proc(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_y*:
+      proc(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_y*: proc(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_width*:
+      proc(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_width*: proc(
+      self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    putref_height*:
+      proc(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_height*: proc(
+      self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+
   DispSVGPatternElement* {.pure.} = object
     lpVtbl*: ptr DispSVGPatternElementVtbl
+
   DispSVGPatternElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGPathSeg* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegVtbl
+
   ISVGPathSegVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_pathSegType*: proc(self: ptr ISVGPathSeg, v: int16): HRESULT {.stdcall.}
     get_pathSegType*: proc(self: ptr ISVGPathSeg, p: ptr int16): HRESULT {.stdcall.}
-    get_pathSegTypeAsLetter*: proc(self: ptr ISVGPathSeg, p: ptr BSTR): HRESULT {.stdcall.}
+    get_pathSegTypeAsLetter*:
+      proc(self: ptr ISVGPathSeg, p: ptr BSTR): HRESULT {.stdcall.}
+
   ISVGPathSegArcAbs* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegArcAbsVtbl
+
   ISVGPathSegArcAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_x*: proc(self: ptr ISVGPathSegArcAbs, v: float32): HRESULT {.stdcall.}
     get_x*: proc(self: ptr ISVGPathSegArcAbs, p: ptr float32): HRESULT {.stdcall.}
@@ -10558,12 +15342,18 @@
     get_r2*: proc(self: ptr ISVGPathSegArcAbs, p: ptr float32): HRESULT {.stdcall.}
     put_angle*: proc(self: ptr ISVGPathSegArcAbs, v: float32): HRESULT {.stdcall.}
     get_angle*: proc(self: ptr ISVGPathSegArcAbs, p: ptr float32): HRESULT {.stdcall.}
-    put_largeArcFlag*: proc(self: ptr ISVGPathSegArcAbs, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_largeArcFlag*: proc(self: ptr ISVGPathSegArcAbs, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_sweepFlag*: proc(self: ptr ISVGPathSegArcAbs, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_sweepFlag*: proc(self: ptr ISVGPathSegArcAbs, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_largeArcFlag*:
+      proc(self: ptr ISVGPathSegArcAbs, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_largeArcFlag*:
+      proc(self: ptr ISVGPathSegArcAbs, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_sweepFlag*:
+      proc(self: ptr ISVGPathSegArcAbs, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_sweepFlag*:
+      proc(self: ptr ISVGPathSegArcAbs, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   ISVGPathSegArcRel* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegArcRelVtbl
+
   ISVGPathSegArcRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_x*: proc(self: ptr ISVGPathSegArcRel, v: float32): HRESULT {.stdcall.}
     get_x*: proc(self: ptr ISVGPathSegArcRel, p: ptr float32): HRESULT {.stdcall.}
@@ -10575,629 +15365,1284 @@
     get_r2*: proc(self: ptr ISVGPathSegArcRel, p: ptr float32): HRESULT {.stdcall.}
     put_angle*: proc(self: ptr ISVGPathSegArcRel, v: float32): HRESULT {.stdcall.}
     get_angle*: proc(self: ptr ISVGPathSegArcRel, p: ptr float32): HRESULT {.stdcall.}
-    put_largeArcFlag*: proc(self: ptr ISVGPathSegArcRel, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_largeArcFlag*: proc(self: ptr ISVGPathSegArcRel, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_sweepFlag*: proc(self: ptr ISVGPathSegArcRel, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_sweepFlag*: proc(self: ptr ISVGPathSegArcRel, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_largeArcFlag*:
+      proc(self: ptr ISVGPathSegArcRel, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_largeArcFlag*:
+      proc(self: ptr ISVGPathSegArcRel, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_sweepFlag*:
+      proc(self: ptr ISVGPathSegArcRel, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_sweepFlag*:
+      proc(self: ptr ISVGPathSegArcRel, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   ISVGPathSegClosePath* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegClosePathVtbl
+
   ISVGPathSegClosePathVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGPathSegMovetoAbs* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegMovetoAbsVtbl
+
   ISVGPathSegMovetoAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_x*: proc(self: ptr ISVGPathSegMovetoAbs, v: float32): HRESULT {.stdcall.}
     get_x*: proc(self: ptr ISVGPathSegMovetoAbs, p: ptr float32): HRESULT {.stdcall.}
     put_y*: proc(self: ptr ISVGPathSegMovetoAbs, v: float32): HRESULT {.stdcall.}
     get_y*: proc(self: ptr ISVGPathSegMovetoAbs, p: ptr float32): HRESULT {.stdcall.}
+
   ISVGPathSegMovetoRel* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegMovetoRelVtbl
+
   ISVGPathSegMovetoRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_x*: proc(self: ptr ISVGPathSegMovetoRel, v: float32): HRESULT {.stdcall.}
     get_x*: proc(self: ptr ISVGPathSegMovetoRel, p: ptr float32): HRESULT {.stdcall.}
     put_y*: proc(self: ptr ISVGPathSegMovetoRel, v: float32): HRESULT {.stdcall.}
     get_y*: proc(self: ptr ISVGPathSegMovetoRel, p: ptr float32): HRESULT {.stdcall.}
+
   ISVGPathSegLinetoAbs* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegLinetoAbsVtbl
+
   ISVGPathSegLinetoAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_x*: proc(self: ptr ISVGPathSegLinetoAbs, v: float32): HRESULT {.stdcall.}
     get_x*: proc(self: ptr ISVGPathSegLinetoAbs, p: ptr float32): HRESULT {.stdcall.}
     put_y*: proc(self: ptr ISVGPathSegLinetoAbs, v: float32): HRESULT {.stdcall.}
     get_y*: proc(self: ptr ISVGPathSegLinetoAbs, p: ptr float32): HRESULT {.stdcall.}
+
   ISVGPathSegLinetoRel* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegLinetoRelVtbl
+
   ISVGPathSegLinetoRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_x*: proc(self: ptr ISVGPathSegLinetoRel, v: float32): HRESULT {.stdcall.}
     get_x*: proc(self: ptr ISVGPathSegLinetoRel, p: ptr float32): HRESULT {.stdcall.}
     put_y*: proc(self: ptr ISVGPathSegLinetoRel, v: float32): HRESULT {.stdcall.}
     get_y*: proc(self: ptr ISVGPathSegLinetoRel, p: ptr float32): HRESULT {.stdcall.}
+
   ISVGPathSegCurvetoCubicAbs* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegCurvetoCubicAbsVtbl
+
   ISVGPathSegCurvetoCubicAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_x*: proc(self: ptr ISVGPathSegCurvetoCubicAbs, v: float32): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.stdcall.}
+    get_x*:
+      proc(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.stdcall.}
     put_y*: proc(self: ptr ISVGPathSegCurvetoCubicAbs, v: float32): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.stdcall.}
+    get_y*:
+      proc(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.stdcall.}
     put_x1*: proc(self: ptr ISVGPathSegCurvetoCubicAbs, v: float32): HRESULT {.stdcall.}
-    get_x1*: proc(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.stdcall.}
+    get_x1*:
+      proc(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.stdcall.}
     put_y1*: proc(self: ptr ISVGPathSegCurvetoCubicAbs, v: float32): HRESULT {.stdcall.}
-    get_y1*: proc(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.stdcall.}
+    get_y1*:
+      proc(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.stdcall.}
     put_x2*: proc(self: ptr ISVGPathSegCurvetoCubicAbs, v: float32): HRESULT {.stdcall.}
-    get_x2*: proc(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.stdcall.}
+    get_x2*:
+      proc(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.stdcall.}
     put_y2*: proc(self: ptr ISVGPathSegCurvetoCubicAbs, v: float32): HRESULT {.stdcall.}
-    get_y2*: proc(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.stdcall.}
+    get_y2*:
+      proc(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.stdcall.}
+
   ISVGPathSegCurvetoCubicRel* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegCurvetoCubicRelVtbl
+
   ISVGPathSegCurvetoCubicRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_x*: proc(self: ptr ISVGPathSegCurvetoCubicRel, v: float32): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.stdcall.}
+    get_x*:
+      proc(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.stdcall.}
     put_y*: proc(self: ptr ISVGPathSegCurvetoCubicRel, v: float32): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.stdcall.}
+    get_y*:
+      proc(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.stdcall.}
     put_x1*: proc(self: ptr ISVGPathSegCurvetoCubicRel, v: float32): HRESULT {.stdcall.}
-    get_x1*: proc(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.stdcall.}
+    get_x1*:
+      proc(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.stdcall.}
     put_y1*: proc(self: ptr ISVGPathSegCurvetoCubicRel, v: float32): HRESULT {.stdcall.}
-    get_y1*: proc(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.stdcall.}
+    get_y1*:
+      proc(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.stdcall.}
     put_x2*: proc(self: ptr ISVGPathSegCurvetoCubicRel, v: float32): HRESULT {.stdcall.}
-    get_x2*: proc(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.stdcall.}
+    get_x2*:
+      proc(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.stdcall.}
     put_y2*: proc(self: ptr ISVGPathSegCurvetoCubicRel, v: float32): HRESULT {.stdcall.}
-    get_y2*: proc(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.stdcall.}
+    get_y2*:
+      proc(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.stdcall.}
+
   ISVGPathSegCurvetoCubicSmoothAbs* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegCurvetoCubicSmoothAbsVtbl
+
   ISVGPathSegCurvetoCubicSmoothAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_x*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32): HRESULT {.stdcall.}
-    put_y*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32): HRESULT {.stdcall.}
-    put_x2*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32): HRESULT {.stdcall.}
-    get_x2*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32): HRESULT {.stdcall.}
-    put_y2*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32): HRESULT {.stdcall.}
-    get_y2*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32): HRESULT {.stdcall.}
+    put_x*:
+      proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32): HRESULT {.stdcall.}
+    get_x*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+    put_y*:
+      proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32): HRESULT {.stdcall.}
+    get_y*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+    put_x2*:
+      proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32): HRESULT {.stdcall.}
+    get_x2*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+    put_y2*:
+      proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32): HRESULT {.stdcall.}
+    get_y2*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+
   ISVGPathSegCurvetoCubicSmoothRel* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegCurvetoCubicSmoothRelVtbl
+
   ISVGPathSegCurvetoCubicSmoothRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_x*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32): HRESULT {.stdcall.}
-    put_y*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32): HRESULT {.stdcall.}
-    put_x2*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32): HRESULT {.stdcall.}
-    get_x2*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32): HRESULT {.stdcall.}
-    put_y2*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32): HRESULT {.stdcall.}
-    get_y2*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32): HRESULT {.stdcall.}
+    put_x*:
+      proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32): HRESULT {.stdcall.}
+    get_x*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+    put_y*:
+      proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32): HRESULT {.stdcall.}
+    get_y*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+    put_x2*:
+      proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32): HRESULT {.stdcall.}
+    get_x2*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+    put_y2*:
+      proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32): HRESULT {.stdcall.}
+    get_y2*: proc(self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+
   ISVGPathSegCurvetoQuadraticAbs* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegCurvetoQuadraticAbsVtbl
+
   ISVGPathSegCurvetoQuadraticAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_x*: proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32): HRESULT {.stdcall.}
-    put_y*: proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32): HRESULT {.stdcall.}
-    put_x1*: proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32): HRESULT {.stdcall.}
-    get_x1*: proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32): HRESULT {.stdcall.}
-    put_y1*: proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32): HRESULT {.stdcall.}
-    get_y1*: proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32): HRESULT {.stdcall.}
+    put_x*:
+      proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32): HRESULT {.stdcall.}
+    get_x*: proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+    put_y*:
+      proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32): HRESULT {.stdcall.}
+    get_y*: proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+    put_x1*:
+      proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32): HRESULT {.stdcall.}
+    get_x1*: proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+    put_y1*:
+      proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32): HRESULT {.stdcall.}
+    get_y1*: proc(self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+
   ISVGPathSegCurvetoQuadraticRel* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegCurvetoQuadraticRelVtbl
+
   ISVGPathSegCurvetoQuadraticRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_x*: proc(self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32): HRESULT {.stdcall.}
-    put_y*: proc(self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32): HRESULT {.stdcall.}
-    put_x1*: proc(self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32): HRESULT {.stdcall.}
-    get_x1*: proc(self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32): HRESULT {.stdcall.}
-    put_y1*: proc(self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32): HRESULT {.stdcall.}
-    get_y1*: proc(self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32): HRESULT {.stdcall.}
+    put_x*:
+      proc(self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32): HRESULT {.stdcall.}
+    get_x*: proc(self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+    put_y*:
+      proc(self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32): HRESULT {.stdcall.}
+    get_y*: proc(self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+    put_x1*:
+      proc(self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32): HRESULT {.stdcall.}
+    get_x1*: proc(self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+    put_y1*:
+      proc(self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32): HRESULT {.stdcall.}
+    get_y1*: proc(self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+
   ISVGPathSegCurvetoQuadraticSmoothAbs* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegCurvetoQuadraticSmoothAbsVtbl
+
   ISVGPathSegCurvetoQuadraticSmoothAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_x*: proc(self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, v: float32): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, p: ptr float32): HRESULT {.stdcall.}
-    put_y*: proc(self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, v: float32): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, p: ptr float32): HRESULT {.stdcall.}
+    put_x*: proc(self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, v: float32): HRESULT {.
+      stdcall
+    .}
+    get_x*: proc(
+      self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, p: ptr float32
+    ): HRESULT {.stdcall.}
+    put_y*: proc(self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, v: float32): HRESULT {.
+      stdcall
+    .}
+    get_y*: proc(
+      self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, p: ptr float32
+    ): HRESULT {.stdcall.}
+
   ISVGPathSegCurvetoQuadraticSmoothRel* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegCurvetoQuadraticSmoothRelVtbl
+
   ISVGPathSegCurvetoQuadraticSmoothRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_x*: proc(self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, v: float32): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, p: ptr float32): HRESULT {.stdcall.}
-    put_y*: proc(self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, v: float32): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, p: ptr float32): HRESULT {.stdcall.}
+    put_x*: proc(self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, v: float32): HRESULT {.
+      stdcall
+    .}
+    get_x*: proc(
+      self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, p: ptr float32
+    ): HRESULT {.stdcall.}
+    put_y*: proc(self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, v: float32): HRESULT {.
+      stdcall
+    .}
+    get_y*: proc(
+      self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, p: ptr float32
+    ): HRESULT {.stdcall.}
+
   ISVGPathSegLinetoHorizontalAbs* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegLinetoHorizontalAbsVtbl
+
   ISVGPathSegLinetoHorizontalAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_x*: proc(self: ptr ISVGPathSegLinetoHorizontalAbs, v: float32): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGPathSegLinetoHorizontalAbs, p: ptr float32): HRESULT {.stdcall.}
+    put_x*:
+      proc(self: ptr ISVGPathSegLinetoHorizontalAbs, v: float32): HRESULT {.stdcall.}
+    get_x*: proc(self: ptr ISVGPathSegLinetoHorizontalAbs, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+
   ISVGPathSegLinetoHorizontalRel* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegLinetoHorizontalRelVtbl
+
   ISVGPathSegLinetoHorizontalRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_x*: proc(self: ptr ISVGPathSegLinetoHorizontalRel, v: float32): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGPathSegLinetoHorizontalRel, p: ptr float32): HRESULT {.stdcall.}
+    put_x*:
+      proc(self: ptr ISVGPathSegLinetoHorizontalRel, v: float32): HRESULT {.stdcall.}
+    get_x*: proc(self: ptr ISVGPathSegLinetoHorizontalRel, p: ptr float32): HRESULT {.
+      stdcall
+    .}
+
   ISVGPathSegLinetoVerticalAbs* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegLinetoVerticalAbsVtbl
+
   ISVGPathSegLinetoVerticalAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_y*: proc(self: ptr ISVGPathSegLinetoVerticalAbs, v: float32): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGPathSegLinetoVerticalAbs, p: ptr float32): HRESULT {.stdcall.}
+    put_y*:
+      proc(self: ptr ISVGPathSegLinetoVerticalAbs, v: float32): HRESULT {.stdcall.}
+    get_y*:
+      proc(self: ptr ISVGPathSegLinetoVerticalAbs, p: ptr float32): HRESULT {.stdcall.}
+
   ISVGPathSegLinetoVerticalRel* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegLinetoVerticalRelVtbl
+
   ISVGPathSegLinetoVerticalRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_y*: proc(self: ptr ISVGPathSegLinetoVerticalRel, v: float32): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGPathSegLinetoVerticalRel, p: ptr float32): HRESULT {.stdcall.}
+    put_y*:
+      proc(self: ptr ISVGPathSegLinetoVerticalRel, v: float32): HRESULT {.stdcall.}
+    get_y*:
+      proc(self: ptr ISVGPathSegLinetoVerticalRel, p: ptr float32): HRESULT {.stdcall.}
+
   DispSVGPathSegArcAbs* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegArcAbsVtbl
+
   DispSVGPathSegArcAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegArcRel* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegArcRelVtbl
+
   DispSVGPathSegArcRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegClosePath* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegClosePathVtbl
+
   DispSVGPathSegClosePathVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegMovetoAbs* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegMovetoAbsVtbl
+
   DispSVGPathSegMovetoAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegMovetoRel* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegMovetoRelVtbl
+
   DispSVGPathSegMovetoRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegLinetoAbs* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegLinetoAbsVtbl
+
   DispSVGPathSegLinetoAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegLinetoRel* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegLinetoRelVtbl
+
   DispSVGPathSegLinetoRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegCurvetoCubicAbs* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegCurvetoCubicAbsVtbl
+
   DispSVGPathSegCurvetoCubicAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegCurvetoCubicRel* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegCurvetoCubicRelVtbl
+
   DispSVGPathSegCurvetoCubicRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegCurvetoCubicSmoothAbs* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegCurvetoCubicSmoothAbsVtbl
+
   DispSVGPathSegCurvetoCubicSmoothAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegCurvetoCubicSmoothRel* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegCurvetoCubicSmoothRelVtbl
+
   DispSVGPathSegCurvetoCubicSmoothRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegCurvetoQuadraticAbs* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegCurvetoQuadraticAbsVtbl
+
   DispSVGPathSegCurvetoQuadraticAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegCurvetoQuadraticRel* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegCurvetoQuadraticRelVtbl
+
   DispSVGPathSegCurvetoQuadraticRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegCurvetoQuadraticSmoothAbs* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegCurvetoQuadraticSmoothAbsVtbl
+
   DispSVGPathSegCurvetoQuadraticSmoothAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegCurvetoQuadraticSmoothRel* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegCurvetoQuadraticSmoothRelVtbl
+
   DispSVGPathSegCurvetoQuadraticSmoothRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegLinetoHorizontalAbs* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegLinetoHorizontalAbsVtbl
+
   DispSVGPathSegLinetoHorizontalAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegLinetoHorizontalRel* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegLinetoHorizontalRelVtbl
+
   DispSVGPathSegLinetoHorizontalRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegLinetoVerticalAbs* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegLinetoVerticalAbsVtbl
+
   DispSVGPathSegLinetoVerticalAbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPathSegLinetoVerticalRel* {.pure.} = object
     lpVtbl*: ptr DispSVGPathSegLinetoVerticalRelVtbl
+
   DispSVGPathSegLinetoVerticalRelVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGPathSegList* {.pure.} = object
     lpVtbl*: ptr ISVGPathSegListVtbl
+
   ISVGPathSegListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_numberOfItems*: proc(self: ptr ISVGPathSegList, v: LONG): HRESULT {.stdcall.}
-    get_numberOfItems*: proc(self: ptr ISVGPathSegList, p: ptr LONG): HRESULT {.stdcall.}
+    get_numberOfItems*:
+      proc(self: ptr ISVGPathSegList, p: ptr LONG): HRESULT {.stdcall.}
     clear*: proc(self: ptr ISVGPathSegList): HRESULT {.stdcall.}
-    initialize*: proc(self: ptr ISVGPathSegList, newItem: ptr ISVGPathSeg, ppResult: ptr ptr ISVGPathSeg): HRESULT {.stdcall.}
-    getItem*: proc(self: ptr ISVGPathSegList, index: LONG, ppResult: ptr ptr ISVGPathSeg): HRESULT {.stdcall.}
-    insertItemBefore*: proc(self: ptr ISVGPathSegList, newItem: ptr ISVGPathSeg, index: LONG, ppResult: ptr ptr ISVGPathSeg): HRESULT {.stdcall.}
-    replaceItem*: proc(self: ptr ISVGPathSegList, newItem: ptr ISVGPathSeg, index: LONG, ppResult: ptr ptr ISVGPathSeg): HRESULT {.stdcall.}
-    removeItem*: proc(self: ptr ISVGPathSegList, index: LONG, ppResult: ptr ptr ISVGPathSeg): HRESULT {.stdcall.}
-    appendItem*: proc(self: ptr ISVGPathSegList, newItem: ptr ISVGPathSeg, ppResult: ptr ptr ISVGPathSeg): HRESULT {.stdcall.}
+    initialize*: proc(
+      self: ptr ISVGPathSegList, newItem: ptr ISVGPathSeg, ppResult: ptr ptr ISVGPathSeg
+    ): HRESULT {.stdcall.}
+    getItem*: proc(
+      self: ptr ISVGPathSegList, index: LONG, ppResult: ptr ptr ISVGPathSeg
+    ): HRESULT {.stdcall.}
+    insertItemBefore*: proc(
+      self: ptr ISVGPathSegList,
+      newItem: ptr ISVGPathSeg,
+      index: LONG,
+      ppResult: ptr ptr ISVGPathSeg,
+    ): HRESULT {.stdcall.}
+    replaceItem*: proc(
+      self: ptr ISVGPathSegList,
+      newItem: ptr ISVGPathSeg,
+      index: LONG,
+      ppResult: ptr ptr ISVGPathSeg,
+    ): HRESULT {.stdcall.}
+    removeItem*: proc(
+      self: ptr ISVGPathSegList, index: LONG, ppResult: ptr ptr ISVGPathSeg
+    ): HRESULT {.stdcall.}
+    appendItem*: proc(
+      self: ptr ISVGPathSegList, newItem: ptr ISVGPathSeg, ppResult: ptr ptr ISVGPathSeg
+    ): HRESULT {.stdcall.}
+
   ISVGPointList* {.pure.} = object
     lpVtbl*: ptr ISVGPointListVtbl
+
   ISVGPointListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_numberOfItems*: proc(self: ptr ISVGPointList, v: LONG): HRESULT {.stdcall.}
     get_numberOfItems*: proc(self: ptr ISVGPointList, p: ptr LONG): HRESULT {.stdcall.}
     clear*: proc(self: ptr ISVGPointList): HRESULT {.stdcall.}
-    initialize*: proc(self: ptr ISVGPointList, pNewItem: ptr ISVGPoint, ppResult: ptr ptr ISVGPoint): HRESULT {.stdcall.}
-    getItem*: proc(self: ptr ISVGPointList, index: LONG, ppResult: ptr ptr ISVGPoint): HRESULT {.stdcall.}
-    insertItemBefore*: proc(self: ptr ISVGPointList, pNewItem: ptr ISVGPoint, index: LONG, ppResult: ptr ptr ISVGPoint): HRESULT {.stdcall.}
-    replaceItem*: proc(self: ptr ISVGPointList, pNewItem: ptr ISVGPoint, index: LONG, ppResult: ptr ptr ISVGPoint): HRESULT {.stdcall.}
-    removeItem*: proc(self: ptr ISVGPointList, index: LONG, ppResult: ptr ptr ISVGPoint): HRESULT {.stdcall.}
-    appendItem*: proc(self: ptr ISVGPointList, pNewItem: ptr ISVGPoint, ppResult: ptr ptr ISVGPoint): HRESULT {.stdcall.}
+    initialize*: proc(
+      self: ptr ISVGPointList, pNewItem: ptr ISVGPoint, ppResult: ptr ptr ISVGPoint
+    ): HRESULT {.stdcall.}
+    getItem*: proc(
+      self: ptr ISVGPointList, index: LONG, ppResult: ptr ptr ISVGPoint
+    ): HRESULT {.stdcall.}
+    insertItemBefore*: proc(
+      self: ptr ISVGPointList,
+      pNewItem: ptr ISVGPoint,
+      index: LONG,
+      ppResult: ptr ptr ISVGPoint,
+    ): HRESULT {.stdcall.}
+    replaceItem*: proc(
+      self: ptr ISVGPointList,
+      pNewItem: ptr ISVGPoint,
+      index: LONG,
+      ppResult: ptr ptr ISVGPoint,
+    ): HRESULT {.stdcall.}
+    removeItem*: proc(
+      self: ptr ISVGPointList, index: LONG, ppResult: ptr ptr ISVGPoint
+    ): HRESULT {.stdcall.}
+    appendItem*: proc(
+      self: ptr ISVGPointList, pNewItem: ptr ISVGPoint, ppResult: ptr ptr ISVGPoint
+    ): HRESULT {.stdcall.}
+
   DispSVGSVGElement* {.pure.} = object
     lpVtbl*: ptr DispSVGSVGElementVtbl
+
   DispSVGSVGElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGElementInstanceList* {.pure.} = object
     lpVtbl*: ptr ISVGElementInstanceListVtbl
+
   ISVGElementInstanceListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr ISVGElementInstanceList, p: ptr LONG): HRESULT {.stdcall.}
-    item*: proc(self: ptr ISVGElementInstanceList, index: LONG, ppResult: ptr ptr ISVGElementInstance): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr ISVGElementInstanceList, p: ptr LONG): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr ISVGElementInstanceList,
+      index: LONG,
+      ppResult: ptr ptr ISVGElementInstance,
+    ): HRESULT {.stdcall.}
+
   ISVGElementInstance* {.pure.} = object
     lpVtbl*: ptr ISVGElementInstanceVtbl
+
   ISVGElementInstanceVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_correspondingElement*: proc(self: ptr ISVGElementInstance, p: ptr ptr ISVGElement): HRESULT {.stdcall.}
-    get_correspondingUseElement*: proc(self: ptr ISVGElementInstance, p: ptr ptr ISVGUseElement): HRESULT {.stdcall.}
-    get_parentNode*: proc(self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance): HRESULT {.stdcall.}
-    get_childNodes*: proc(self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstanceList): HRESULT {.stdcall.}
-    get_firstChild*: proc(self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance): HRESULT {.stdcall.}
-    get_lastChild*: proc(self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance): HRESULT {.stdcall.}
-    get_previousSibling*: proc(self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance): HRESULT {.stdcall.}
-    get_nextSibling*: proc(self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance): HRESULT {.stdcall.}
+    get_correspondingElement*:
+      proc(self: ptr ISVGElementInstance, p: ptr ptr ISVGElement): HRESULT {.stdcall.}
+    get_correspondingUseElement*: proc(
+      self: ptr ISVGElementInstance, p: ptr ptr ISVGUseElement
+    ): HRESULT {.stdcall.}
+    get_parentNode*: proc(
+      self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance
+    ): HRESULT {.stdcall.}
+    get_childNodes*: proc(
+      self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstanceList
+    ): HRESULT {.stdcall.}
+    get_firstChild*: proc(
+      self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance
+    ): HRESULT {.stdcall.}
+    get_lastChild*: proc(
+      self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance
+    ): HRESULT {.stdcall.}
+    get_previousSibling*: proc(
+      self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance
+    ): HRESULT {.stdcall.}
+    get_nextSibling*: proc(
+      self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance
+    ): HRESULT {.stdcall.}
+
   ISVGUseElement* {.pure.} = object
     lpVtbl*: ptr ISVGUseElementVtbl
+
   ISVGUseElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_x*: proc(self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_y*: proc(self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_width*: proc(self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_width*: proc(self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_height*: proc(self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_height*: proc(self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_instanceRoot*: proc(self: ptr ISVGUseElement, v: ptr ISVGElementInstance): HRESULT {.stdcall.}
-    get_instanceRoot*: proc(self: ptr ISVGUseElement, p: ptr ptr ISVGElementInstance): HRESULT {.stdcall.}
-    putref_animatedInstanceRoot*: proc(self: ptr ISVGUseElement, v: ptr ISVGElementInstance): HRESULT {.stdcall.}
-    get_animatedInstanceRoot*: proc(self: ptr ISVGUseElement, p: ptr ptr ISVGElementInstance): HRESULT {.stdcall.}
+    putref_x*:
+      proc(self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_x*:
+      proc(self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_y*:
+      proc(self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_y*:
+      proc(self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_width*:
+      proc(self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_width*:
+      proc(self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_height*:
+      proc(self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_height*:
+      proc(self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_instanceRoot*:
+      proc(self: ptr ISVGUseElement, v: ptr ISVGElementInstance): HRESULT {.stdcall.}
+    get_instanceRoot*: proc(
+      self: ptr ISVGUseElement, p: ptr ptr ISVGElementInstance
+    ): HRESULT {.stdcall.}
+    putref_animatedInstanceRoot*:
+      proc(self: ptr ISVGUseElement, v: ptr ISVGElementInstance): HRESULT {.stdcall.}
+    get_animatedInstanceRoot*: proc(
+      self: ptr ISVGUseElement, p: ptr ptr ISVGElementInstance
+    ): HRESULT {.stdcall.}
+
   DispSVGUseElement* {.pure.} = object
     lpVtbl*: ptr DispSVGUseElementVtbl
+
   DispSVGUseElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLStyleSheetRulesAppliedCollection* {.pure.} = object
     lpVtbl*: ptr DispHTMLStyleSheetRulesAppliedCollectionVtbl
+
   DispHTMLStyleSheetRulesAppliedCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispRulesApplied* {.pure.} = object
     lpVtbl*: ptr DispRulesAppliedVtbl
+
   DispRulesAppliedVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispRulesAppliedCollection* {.pure.} = object
     lpVtbl*: ptr DispRulesAppliedCollectionVtbl
+
   DispRulesAppliedCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLW3CComputedStyle* {.pure.} = object
     lpVtbl*: ptr DispHTMLW3CComputedStyleVtbl
+
   DispHTMLW3CComputedStyleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGAnimatedPoints* {.pure.} = object
     lpVtbl*: ptr ISVGAnimatedPointsVtbl
+
   ISVGAnimatedPointsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_points*: proc(self: ptr ISVGAnimatedPoints, v: ptr ISVGPointList): HRESULT {.stdcall.}
-    get_points*: proc(self: ptr ISVGAnimatedPoints, p: ptr ptr ISVGPointList): HRESULT {.stdcall.}
-    putref_animatedPoints*: proc(self: ptr ISVGAnimatedPoints, v: ptr ISVGPointList): HRESULT {.stdcall.}
-    get_animatedPoints*: proc(self: ptr ISVGAnimatedPoints, p: ptr ptr ISVGPointList): HRESULT {.stdcall.}
+    putref_points*:
+      proc(self: ptr ISVGAnimatedPoints, v: ptr ISVGPointList): HRESULT {.stdcall.}
+    get_points*:
+      proc(self: ptr ISVGAnimatedPoints, p: ptr ptr ISVGPointList): HRESULT {.stdcall.}
+    putref_animatedPoints*:
+      proc(self: ptr ISVGAnimatedPoints, v: ptr ISVGPointList): HRESULT {.stdcall.}
+    get_animatedPoints*:
+      proc(self: ptr ISVGAnimatedPoints, p: ptr ptr ISVGPointList): HRESULT {.stdcall.}
+
   ISVGCircleElement* {.pure.} = object
     lpVtbl*: ptr ISVGCircleElementVtbl
+
   ISVGCircleElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_cx*: proc(self: ptr ISVGCircleElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_cx*: proc(self: ptr ISVGCircleElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_cy*: proc(self: ptr ISVGCircleElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_cy*: proc(self: ptr ISVGCircleElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_r*: proc(self: ptr ISVGCircleElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_r*: proc(self: ptr ISVGCircleElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_cx*:
+      proc(self: ptr ISVGCircleElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_cx*: proc(self: ptr ISVGCircleElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_cy*:
+      proc(self: ptr ISVGCircleElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_cy*: proc(self: ptr ISVGCircleElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_r*:
+      proc(self: ptr ISVGCircleElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_r*: proc(self: ptr ISVGCircleElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+
   ISVGEllipseElement* {.pure.} = object
     lpVtbl*: ptr ISVGEllipseElementVtbl
+
   ISVGEllipseElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_cx*: proc(self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_cx*: proc(self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_cy*: proc(self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_cy*: proc(self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_rx*: proc(self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_rx*: proc(self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_ry*: proc(self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_ry*: proc(self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_cx*:
+      proc(self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_cx*: proc(self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_cy*:
+      proc(self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_cy*: proc(self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_rx*:
+      proc(self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_rx*: proc(self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_ry*:
+      proc(self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_ry*: proc(self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+
   ISVGLineElement* {.pure.} = object
     lpVtbl*: ptr ISVGLineElementVtbl
+
   ISVGLineElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_x1*: proc(self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_x1*: proc(self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_y1*: proc(self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_y1*: proc(self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_x2*: proc(self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_x2*: proc(self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_y2*: proc(self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_y2*: proc(self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_x1*:
+      proc(self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_x1*: proc(self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_y1*:
+      proc(self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_y1*: proc(self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_x2*:
+      proc(self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_x2*: proc(self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_y2*:
+      proc(self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_y2*: proc(self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+
   ISVGRectElement* {.pure.} = object
     lpVtbl*: ptr ISVGRectElementVtbl
+
   ISVGRectElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_x*: proc(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_y*: proc(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_width*: proc(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_width*: proc(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_height*: proc(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_height*: proc(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_rx*: proc(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_rx*: proc(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_ry*: proc(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_ry*: proc(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_x*:
+      proc(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_x*: proc(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_y*:
+      proc(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_y*: proc(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_width*:
+      proc(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_width*: proc(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_height*:
+      proc(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_height*: proc(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_rx*:
+      proc(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_rx*: proc(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_ry*:
+      proc(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_ry*: proc(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+
   ISVGPolygonElement* {.pure.} = object
     lpVtbl*: ptr ISVGPolygonElementVtbl
+
   ISVGPolygonElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGPolylineElement* {.pure.} = object
     lpVtbl*: ptr ISVGPolylineElementVtbl
+
   ISVGPolylineElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGCircleElement* {.pure.} = object
     lpVtbl*: ptr DispSVGCircleElementVtbl
+
   DispSVGCircleElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGEllipseElement* {.pure.} = object
     lpVtbl*: ptr DispSVGEllipseElementVtbl
+
   DispSVGEllipseElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGLineElement* {.pure.} = object
     lpVtbl*: ptr DispSVGLineElementVtbl
+
   DispSVGLineElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGRectElement* {.pure.} = object
     lpVtbl*: ptr DispSVGRectElementVtbl
+
   DispSVGRectElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPolygonElement* {.pure.} = object
     lpVtbl*: ptr DispSVGPolygonElementVtbl
+
   DispSVGPolygonElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGPolylineElement* {.pure.} = object
     lpVtbl*: ptr DispSVGPolylineElementVtbl
+
   DispSVGPolylineElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGGElement* {.pure.} = object
     lpVtbl*: ptr ISVGGElementVtbl
+
   ISVGGElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGGElement* {.pure.} = object
     lpVtbl*: ptr DispSVGGElementVtbl
+
   DispSVGGElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGSymbolElement* {.pure.} = object
     lpVtbl*: ptr ISVGSymbolElementVtbl
+
   ISVGSymbolElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGSymbolElement* {.pure.} = object
     lpVtbl*: ptr DispSVGSymbolElementVtbl
+
   DispSVGSymbolElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGDefsElement* {.pure.} = object
     lpVtbl*: ptr ISVGDefsElementVtbl
+
   ISVGDefsElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGDefsElement* {.pure.} = object
     lpVtbl*: ptr DispSVGDefsElementVtbl
+
   DispSVGDefsElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGAnimatedPathData* {.pure.} = object
     lpVtbl*: ptr ISVGAnimatedPathDataVtbl
+
   ISVGAnimatedPathDataVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_pathSegList*: proc(self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList): HRESULT {.stdcall.}
-    get_pathSegList*: proc(self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList): HRESULT {.stdcall.}
-    putref_normalizedPathSegList*: proc(self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList): HRESULT {.stdcall.}
-    get_normalizedPathSegList*: proc(self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList): HRESULT {.stdcall.}
-    putref_animatedPathSegList*: proc(self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList): HRESULT {.stdcall.}
-    get_animatedPathSegList*: proc(self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList): HRESULT {.stdcall.}
-    putref_animatedNormalizedPathSegList*: proc(self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList): HRESULT {.stdcall.}
-    get_animatedNormalizedPathSegList*: proc(self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList): HRESULT {.stdcall.}
+    putref_pathSegList*:
+      proc(self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList): HRESULT {.stdcall.}
+    get_pathSegList*: proc(
+      self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList
+    ): HRESULT {.stdcall.}
+    putref_normalizedPathSegList*:
+      proc(self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList): HRESULT {.stdcall.}
+    get_normalizedPathSegList*: proc(
+      self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList
+    ): HRESULT {.stdcall.}
+    putref_animatedPathSegList*:
+      proc(self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList): HRESULT {.stdcall.}
+    get_animatedPathSegList*: proc(
+      self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList
+    ): HRESULT {.stdcall.}
+    putref_animatedNormalizedPathSegList*:
+      proc(self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList): HRESULT {.stdcall.}
+    get_animatedNormalizedPathSegList*: proc(
+      self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList
+    ): HRESULT {.stdcall.}
+
   ISVGPathElement* {.pure.} = object
     lpVtbl*: ptr ISVGPathElementVtbl
+
   ISVGPathElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_pathLength*: proc(self: ptr ISVGPathElement, v: ptr ISVGAnimatedNumber): HRESULT {.stdcall.}
-    get_pathLength*: proc(self: ptr ISVGPathElement, p: ptr ptr ISVGAnimatedNumber): HRESULT {.stdcall.}
-    getTotalLength*: proc(self: ptr ISVGPathElement, pfltResult: ptr float32): HRESULT {.stdcall.}
-    getPointAtLength*: proc(self: ptr ISVGPathElement, fltdistance: float32, ppPointResult: ptr ptr ISVGPoint): HRESULT {.stdcall.}
-    getPathSegAtLength*: proc(self: ptr ISVGPathElement, fltdistance: float32, plResult: ptr LONG): HRESULT {.stdcall.}
-    createSVGPathSegClosePath*: proc(self: ptr ISVGPathElement, ppResult: ptr ptr ISVGPathSegClosePath): HRESULT {.stdcall.}
-    createSVGPathSegMovetoAbs*: proc(self: ptr ISVGPathElement, x: float32, y: float32, ppResult: ptr ptr ISVGPathSegMovetoAbs): HRESULT {.stdcall.}
-    createSVGPathSegMovetoRel*: proc(self: ptr ISVGPathElement, x: float32, y: float32, ppResult: ptr ptr ISVGPathSegMovetoRel): HRESULT {.stdcall.}
-    createSVGPathSegLinetoAbs*: proc(self: ptr ISVGPathElement, x: float32, y: float32, ppResult: ptr ptr ISVGPathSegLinetoAbs): HRESULT {.stdcall.}
-    createSVGPathSegLinetoRel*: proc(self: ptr ISVGPathElement, x: float32, y: float32, ppResult: ptr ptr ISVGPathSegLinetoRel): HRESULT {.stdcall.}
-    createSVGPathSegCurvetoCubicAbs*: proc(self: ptr ISVGPathElement, x: float32, y: float32, x1: float32, y1: float32, x2: float32, y2: float32, ppResult: ptr ptr ISVGPathSegCurvetoCubicAbs): HRESULT {.stdcall.}
-    createSVGPathSegCurvetoCubicRel*: proc(self: ptr ISVGPathElement, x: float32, y: float32, x1: float32, y1: float32, x2: float32, y2: float32, ppResult: ptr ptr ISVGPathSegCurvetoCubicRel): HRESULT {.stdcall.}
-    createSVGPathSegCurvetoQuadraticAbs*: proc(self: ptr ISVGPathElement, x: float32, y: float32, x1: float32, y1: float32, ppResult: ptr ptr ISVGPathSegCurvetoQuadraticAbs): HRESULT {.stdcall.}
-    createSVGPathSegCurvetoQuadraticRel*: proc(self: ptr ISVGPathElement, x: float32, y: float32, x1: float32, y1: float32, ppResult: ptr ptr ISVGPathSegCurvetoQuadraticRel): HRESULT {.stdcall.}
-    createSVGPathSegArcAbs*: proc(self: ptr ISVGPathElement, x: float32, y: float32, r1: float32, r2: float32, angle: float32, largeArcFlag: VARIANT_BOOL, sweepFlag: VARIANT_BOOL, ppResult: ptr ptr ISVGPathSegArcAbs): HRESULT {.stdcall.}
-    createSVGPathSegArcRel*: proc(self: ptr ISVGPathElement, x: float32, y: float32, r1: float32, r2: float32, angle: float32, largeArcFlag: VARIANT_BOOL, sweepFlag: VARIANT_BOOL, ppResult: ptr ptr ISVGPathSegArcRel): HRESULT {.stdcall.}
-    createSVGPathSegLinetoHorizontalAbs*: proc(self: ptr ISVGPathElement, x: float32, ppResult: ptr ptr ISVGPathSegLinetoHorizontalAbs): HRESULT {.stdcall.}
-    createSVGPathSegLinetoHorizontalRel*: proc(self: ptr ISVGPathElement, x: float32, ppResult: ptr ptr ISVGPathSegLinetoHorizontalRel): HRESULT {.stdcall.}
-    createSVGPathSegLinetoVerticalAbs*: proc(self: ptr ISVGPathElement, y: float32, ppResult: ptr ptr ISVGPathSegLinetoVerticalAbs): HRESULT {.stdcall.}
-    createSVGPathSegLinetoVerticalRel*: proc(self: ptr ISVGPathElement, y: float32, ppResult: ptr ptr ISVGPathSegLinetoVerticalRel): HRESULT {.stdcall.}
-    createSVGPathSegCurvetoCubicSmoothAbs*: proc(self: ptr ISVGPathElement, x: float32, y: float32, x2: float32, y2: float32, ppResult: ptr ptr ISVGPathSegCurvetoCubicSmoothAbs): HRESULT {.stdcall.}
-    createSVGPathSegCurvetoCubicSmoothRel*: proc(self: ptr ISVGPathElement, x: float32, y: float32, x2: float32, y2: float32, ppResult: ptr ptr ISVGPathSegCurvetoCubicSmoothRel): HRESULT {.stdcall.}
-    createSVGPathSegCurvetoQuadraticSmoothAbs*: proc(self: ptr ISVGPathElement, x: float32, y: float32, ppResult: ptr ptr ISVGPathSegCurvetoQuadraticSmoothAbs): HRESULT {.stdcall.}
-    createSVGPathSegCurvetoQuadraticSmoothRel*: proc(self: ptr ISVGPathElement, x: float32, y: float32, ppResult: ptr ptr ISVGPathSegCurvetoQuadraticSmoothRel): HRESULT {.stdcall.}
+    putref_pathLength*:
+      proc(self: ptr ISVGPathElement, v: ptr ISVGAnimatedNumber): HRESULT {.stdcall.}
+    get_pathLength*: proc(
+      self: ptr ISVGPathElement, p: ptr ptr ISVGAnimatedNumber
+    ): HRESULT {.stdcall.}
+    getTotalLength*:
+      proc(self: ptr ISVGPathElement, pfltResult: ptr float32): HRESULT {.stdcall.}
+    getPointAtLength*: proc(
+      self: ptr ISVGPathElement, fltdistance: float32, ppPointResult: ptr ptr ISVGPoint
+    ): HRESULT {.stdcall.}
+    getPathSegAtLength*: proc(
+      self: ptr ISVGPathElement, fltdistance: float32, plResult: ptr LONG
+    ): HRESULT {.stdcall.}
+    createSVGPathSegClosePath*: proc(
+      self: ptr ISVGPathElement, ppResult: ptr ptr ISVGPathSegClosePath
+    ): HRESULT {.stdcall.}
+    createSVGPathSegMovetoAbs*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      y: float32,
+      ppResult: ptr ptr ISVGPathSegMovetoAbs,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegMovetoRel*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      y: float32,
+      ppResult: ptr ptr ISVGPathSegMovetoRel,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegLinetoAbs*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      y: float32,
+      ppResult: ptr ptr ISVGPathSegLinetoAbs,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegLinetoRel*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      y: float32,
+      ppResult: ptr ptr ISVGPathSegLinetoRel,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegCurvetoCubicAbs*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      y: float32,
+      x1: float32,
+      y1: float32,
+      x2: float32,
+      y2: float32,
+      ppResult: ptr ptr ISVGPathSegCurvetoCubicAbs,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegCurvetoCubicRel*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      y: float32,
+      x1: float32,
+      y1: float32,
+      x2: float32,
+      y2: float32,
+      ppResult: ptr ptr ISVGPathSegCurvetoCubicRel,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegCurvetoQuadraticAbs*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      y: float32,
+      x1: float32,
+      y1: float32,
+      ppResult: ptr ptr ISVGPathSegCurvetoQuadraticAbs,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegCurvetoQuadraticRel*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      y: float32,
+      x1: float32,
+      y1: float32,
+      ppResult: ptr ptr ISVGPathSegCurvetoQuadraticRel,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegArcAbs*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      y: float32,
+      r1: float32,
+      r2: float32,
+      angle: float32,
+      largeArcFlag: VARIANT_BOOL,
+      sweepFlag: VARIANT_BOOL,
+      ppResult: ptr ptr ISVGPathSegArcAbs,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegArcRel*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      y: float32,
+      r1: float32,
+      r2: float32,
+      angle: float32,
+      largeArcFlag: VARIANT_BOOL,
+      sweepFlag: VARIANT_BOOL,
+      ppResult: ptr ptr ISVGPathSegArcRel,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegLinetoHorizontalAbs*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      ppResult: ptr ptr ISVGPathSegLinetoHorizontalAbs,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegLinetoHorizontalRel*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      ppResult: ptr ptr ISVGPathSegLinetoHorizontalRel,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegLinetoVerticalAbs*: proc(
+      self: ptr ISVGPathElement,
+      y: float32,
+      ppResult: ptr ptr ISVGPathSegLinetoVerticalAbs,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegLinetoVerticalRel*: proc(
+      self: ptr ISVGPathElement,
+      y: float32,
+      ppResult: ptr ptr ISVGPathSegLinetoVerticalRel,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegCurvetoCubicSmoothAbs*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      y: float32,
+      x2: float32,
+      y2: float32,
+      ppResult: ptr ptr ISVGPathSegCurvetoCubicSmoothAbs,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegCurvetoCubicSmoothRel*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      y: float32,
+      x2: float32,
+      y2: float32,
+      ppResult: ptr ptr ISVGPathSegCurvetoCubicSmoothRel,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegCurvetoQuadraticSmoothAbs*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      y: float32,
+      ppResult: ptr ptr ISVGPathSegCurvetoQuadraticSmoothAbs,
+    ): HRESULT {.stdcall.}
+    createSVGPathSegCurvetoQuadraticSmoothRel*: proc(
+      self: ptr ISVGPathElement,
+      x: float32,
+      y: float32,
+      ppResult: ptr ptr ISVGPathSegCurvetoQuadraticSmoothRel,
+    ): HRESULT {.stdcall.}
+
   DispSVGPathElement* {.pure.} = object
     lpVtbl*: ptr DispSVGPathElementVtbl
+
   DispSVGPathElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGTextElement* {.pure.} = object
     lpVtbl*: ptr ISVGTextElementVtbl
+
   ISVGTextElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGTextElement* {.pure.} = object
     lpVtbl*: ptr DispSVGTextElementVtbl
+
   DispSVGTextElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGImageElement* {.pure.} = object
     lpVtbl*: ptr ISVGImageElementVtbl
+
   ISVGImageElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_x*: proc(self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_y*: proc(self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_width*: proc(self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_width*: proc(self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_height*: proc(self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_height*: proc(self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_x*:
+      proc(self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_x*: proc(self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_y*:
+      proc(self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_y*: proc(self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_width*:
+      proc(self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_width*: proc(self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_height*:
+      proc(self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_height*: proc(
+      self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+
   DispSVGImageElement* {.pure.} = object
     lpVtbl*: ptr DispSVGImageElementVtbl
+
   DispSVGImageElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGStopElement* {.pure.} = object
     lpVtbl*: ptr ISVGStopElementVtbl
+
   ISVGStopElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_offset*: proc(self: ptr ISVGStopElement, v: ptr ISVGAnimatedNumber): HRESULT {.stdcall.}
-    get_offset*: proc(self: ptr ISVGStopElement, p: ptr ptr ISVGAnimatedNumber): HRESULT {.stdcall.}
+    putref_offset*:
+      proc(self: ptr ISVGStopElement, v: ptr ISVGAnimatedNumber): HRESULT {.stdcall.}
+    get_offset*: proc(self: ptr ISVGStopElement, p: ptr ptr ISVGAnimatedNumber): HRESULT {.
+      stdcall
+    .}
+
   DispSVGStopElement* {.pure.} = object
     lpVtbl*: ptr DispSVGStopElementVtbl
+
   DispSVGStopElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGGradientElement* {.pure.} = object
     lpVtbl*: ptr ISVGGradientElementVtbl
+
   ISVGGradientElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_gradientUnits*: proc(self: ptr ISVGGradientElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    get_gradientUnits*: proc(self: ptr ISVGGradientElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    putref_gradientTransform*: proc(self: ptr ISVGGradientElement, v: ptr ISVGAnimatedTransformList): HRESULT {.stdcall.}
-    get_gradientTransform*: proc(self: ptr ISVGGradientElement, p: ptr ptr ISVGAnimatedTransformList): HRESULT {.stdcall.}
-    putref_spreadMethod*: proc(self: ptr ISVGGradientElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    get_spreadMethod*: proc(self: ptr ISVGGradientElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
+    putref_gradientUnits*: proc(
+      self: ptr ISVGGradientElement, v: ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    get_gradientUnits*: proc(
+      self: ptr ISVGGradientElement, p: ptr ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    putref_gradientTransform*: proc(
+      self: ptr ISVGGradientElement, v: ptr ISVGAnimatedTransformList
+    ): HRESULT {.stdcall.}
+    get_gradientTransform*: proc(
+      self: ptr ISVGGradientElement, p: ptr ptr ISVGAnimatedTransformList
+    ): HRESULT {.stdcall.}
+    putref_spreadMethod*: proc(
+      self: ptr ISVGGradientElement, v: ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    get_spreadMethod*: proc(
+      self: ptr ISVGGradientElement, p: ptr ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+
   DispSVGGradientElement* {.pure.} = object
     lpVtbl*: ptr DispSVGGradientElementVtbl
+
   DispSVGGradientElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGLinearGradientElement* {.pure.} = object
     lpVtbl*: ptr ISVGLinearGradientElementVtbl
+
   ISVGLinearGradientElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_x1*: proc(self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_x1*: proc(self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_y1*: proc(self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_y1*: proc(self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_x2*: proc(self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_x2*: proc(self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_y2*: proc(self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_y2*: proc(self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_x1*: proc(
+      self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    get_x1*: proc(
+      self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    putref_y1*: proc(
+      self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    get_y1*: proc(
+      self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    putref_x2*: proc(
+      self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    get_x2*: proc(
+      self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    putref_y2*: proc(
+      self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    get_y2*: proc(
+      self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+
   DispSVGLinearGradientElement* {.pure.} = object
     lpVtbl*: ptr DispSVGLinearGradientElementVtbl
+
   DispSVGLinearGradientElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGRadialGradientElement* {.pure.} = object
     lpVtbl*: ptr ISVGRadialGradientElementVtbl
+
   ISVGRadialGradientElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_cx*: proc(self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_cx*: proc(self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_cy*: proc(self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_cy*: proc(self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_r*: proc(self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_r*: proc(self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_fx*: proc(self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_fx*: proc(self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_fy*: proc(self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_fy*: proc(self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_cx*: proc(
+      self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    get_cx*: proc(
+      self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    putref_cy*: proc(
+      self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    get_cy*: proc(
+      self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    putref_r*: proc(
+      self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    get_r*: proc(
+      self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    putref_fx*: proc(
+      self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    get_fx*: proc(
+      self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    putref_fy*: proc(
+      self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    get_fy*: proc(
+      self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+
   DispSVGRadialGradientElement* {.pure.} = object
     lpVtbl*: ptr DispSVGRadialGradientElementVtbl
+
   DispSVGRadialGradientElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGMaskElement* {.pure.} = object
     lpVtbl*: ptr ISVGMaskElementVtbl
+
   ISVGMaskElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_maskUnits*: proc(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    get_maskUnits*: proc(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    putref_maskContentUnits*: proc(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    get_maskContentUnits*: proc(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    putref_x*: proc(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_y*: proc(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_width*: proc(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_width*: proc(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_height*: proc(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_height*: proc(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    putref_maskUnits*: proc(
+      self: ptr ISVGMaskElement, v: ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    get_maskUnits*: proc(
+      self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    putref_maskContentUnits*: proc(
+      self: ptr ISVGMaskElement, v: ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    get_maskContentUnits*: proc(
+      self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    putref_x*:
+      proc(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_x*: proc(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_y*:
+      proc(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_y*: proc(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_width*:
+      proc(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_width*: proc(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_height*:
+      proc(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_height*: proc(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+
   DispSVGMaskElement* {.pure.} = object
     lpVtbl*: ptr DispSVGMaskElementVtbl
+
   DispSVGMaskElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGMarkerElement* {.pure.} = object
     lpVtbl*: ptr ISVGMarkerElementVtbl
+
   ISVGMarkerElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_refX*: proc(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_refX*: proc(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_refY*: proc(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_refY*: proc(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_markerUnits*: proc(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    get_markerUnits*: proc(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    putref_markerWidth*: proc(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_markerWidth*: proc(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_markerHeight*: proc(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_markerHeight*: proc(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_orientType*: proc(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    get_orientType*: proc(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    putref_orientAngle*: proc(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedAngle): HRESULT {.stdcall.}
-    get_orientAngle*: proc(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedAngle): HRESULT {.stdcall.}
+    putref_refX*:
+      proc(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_refX*: proc(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_refY*:
+      proc(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_refY*: proc(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.
+      stdcall
+    .}
+    putref_markerUnits*: proc(
+      self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    get_markerUnits*: proc(
+      self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    putref_markerWidth*:
+      proc(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_markerWidth*: proc(
+      self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    putref_markerHeight*:
+      proc(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
+    get_markerHeight*: proc(
+      self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    putref_orientType*: proc(
+      self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    get_orientType*: proc(
+      self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    putref_orientAngle*:
+      proc(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedAngle): HRESULT {.stdcall.}
+    get_orientAngle*: proc(
+      self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedAngle
+    ): HRESULT {.stdcall.}
     setOrientToAuto*: proc(self: ptr ISVGMarkerElement): HRESULT {.stdcall.}
-    setOrientToAngle*: proc(self: ptr ISVGMarkerElement, pSVGAngle: ptr ISVGAngle): HRESULT {.stdcall.}
+    setOrientToAngle*:
+      proc(self: ptr ISVGMarkerElement, pSVGAngle: ptr ISVGAngle): HRESULT {.stdcall.}
+
   DispSVGMarkerElement* {.pure.} = object
     lpVtbl*: ptr DispSVGMarkerElementVtbl
+
   DispSVGMarkerElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGZoomEvent* {.pure.} = object
     lpVtbl*: ptr ISVGZoomEventVtbl
+
   ISVGZoomEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_zoomRectScreen*: proc(self: ptr ISVGZoomEvent, p: ptr ptr ISVGRect): HRESULT {.stdcall.}
-    get_previousScale*: proc(self: ptr ISVGZoomEvent, p: ptr float32): HRESULT {.stdcall.}
-    get_previousTranslate*: proc(self: ptr ISVGZoomEvent, p: ptr ptr ISVGPoint): HRESULT {.stdcall.}
+    get_zoomRectScreen*:
+      proc(self: ptr ISVGZoomEvent, p: ptr ptr ISVGRect): HRESULT {.stdcall.}
+    get_previousScale*:
+      proc(self: ptr ISVGZoomEvent, p: ptr float32): HRESULT {.stdcall.}
+    get_previousTranslate*:
+      proc(self: ptr ISVGZoomEvent, p: ptr ptr ISVGPoint): HRESULT {.stdcall.}
     get_newScale*: proc(self: ptr ISVGZoomEvent, p: ptr float32): HRESULT {.stdcall.}
-    get_newTranslate*: proc(self: ptr ISVGZoomEvent, p: ptr ptr ISVGPoint): HRESULT {.stdcall.}
+    get_newTranslate*:
+      proc(self: ptr ISVGZoomEvent, p: ptr ptr ISVGPoint): HRESULT {.stdcall.}
+
   DispSVGZoomEvent* {.pure.} = object
     lpVtbl*: ptr DispSVGZoomEventVtbl
+
   DispSVGZoomEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGAElement* {.pure.} = object
     lpVtbl*: ptr ISVGAElementVtbl
+
   ISVGAElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_target*: proc(self: ptr ISVGAElement, v: ptr ISVGAnimatedString): HRESULT {.stdcall.}
-    get_target*: proc(self: ptr ISVGAElement, p: ptr ptr ISVGAnimatedString): HRESULT {.stdcall.}
+    putref_target*:
+      proc(self: ptr ISVGAElement, v: ptr ISVGAnimatedString): HRESULT {.stdcall.}
+    get_target*:
+      proc(self: ptr ISVGAElement, p: ptr ptr ISVGAnimatedString): HRESULT {.stdcall.}
+
   DispSVGAElement* {.pure.} = object
     lpVtbl*: ptr DispSVGAElementVtbl
+
   DispSVGAElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGViewElement* {.pure.} = object
     lpVtbl*: ptr ISVGViewElementVtbl
+
   ISVGViewElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_viewTarget*: proc(self: ptr ISVGViewElement, v: ptr ISVGStringList): HRESULT {.stdcall.}
-    get_viewTarget*: proc(self: ptr ISVGViewElement, p: ptr ptr ISVGStringList): HRESULT {.stdcall.}
+    putref_viewTarget*:
+      proc(self: ptr ISVGViewElement, v: ptr ISVGStringList): HRESULT {.stdcall.}
+    get_viewTarget*:
+      proc(self: ptr ISVGViewElement, p: ptr ptr ISVGStringList): HRESULT {.stdcall.}
+
   DispSVGViewElement* {.pure.} = object
     lpVtbl*: ptr DispSVGViewElementVtbl
+
   DispSVGViewElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLMediaError* {.pure.} = object
     lpVtbl*: ptr IHTMLMediaErrorVtbl
+
   IHTMLMediaErrorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_code*: proc(self: ptr IHTMLMediaError, p: ptr int16): HRESULT {.stdcall.}
+
   IHTMLTimeRanges* {.pure.} = object
     lpVtbl*: ptr IHTMLTimeRangesVtbl
+
   IHTMLTimeRangesVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_length*: proc(self: ptr IHTMLTimeRanges, p: ptr LONG): HRESULT {.stdcall.}
-    start*: proc(self: ptr IHTMLTimeRanges, index: LONG, startTime: ptr float32): HRESULT {.stdcall.}
-    `end`*: proc(self: ptr IHTMLTimeRanges, index: LONG, endTime: ptr float32): HRESULT {.stdcall.}
+    start*: proc(
+      self: ptr IHTMLTimeRanges, index: LONG, startTime: ptr float32
+    ): HRESULT {.stdcall.}
+    `end`*: proc(self: ptr IHTMLTimeRanges, index: LONG, endTime: ptr float32): HRESULT {.
+      stdcall
+    .}
+
   IHTMLTimeRanges2* {.pure.} = object
     lpVtbl*: ptr IHTMLTimeRanges2Vtbl
+
   IHTMLTimeRanges2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    startDouble*: proc(self: ptr IHTMLTimeRanges2, index: LONG, startTime: ptr float64): HRESULT {.stdcall.}
-    endDouble*: proc(self: ptr IHTMLTimeRanges2, index: LONG, endTime: ptr float64): HRESULT {.stdcall.}
+    startDouble*: proc(
+      self: ptr IHTMLTimeRanges2, index: LONG, startTime: ptr float64
+    ): HRESULT {.stdcall.}
+    endDouble*: proc(
+      self: ptr IHTMLTimeRanges2, index: LONG, endTime: ptr float64
+    ): HRESULT {.stdcall.}
+
   IHTMLMediaElement* {.pure.} = object
     lpVtbl*: ptr IHTMLMediaElementVtbl
+
   IHTMLMediaElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_error*: proc(self: ptr IHTMLMediaElement, p: ptr ptr IHTMLMediaError): HRESULT {.stdcall.}
+    get_error*:
+      proc(self: ptr IHTMLMediaElement, p: ptr ptr IHTMLMediaError): HRESULT {.stdcall.}
     put_src*: proc(self: ptr IHTMLMediaElement, v: BSTR): HRESULT {.stdcall.}
     get_src*: proc(self: ptr IHTMLMediaElement, p: ptr BSTR): HRESULT {.stdcall.}
     get_currentSrc*: proc(self: ptr IHTMLMediaElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_networkState*: proc(self: ptr IHTMLMediaElement, p: ptr USHORT): HRESULT {.stdcall.}
+    get_networkState*:
+      proc(self: ptr IHTMLMediaElement, p: ptr USHORT): HRESULT {.stdcall.}
     put_preload*: proc(self: ptr IHTMLMediaElement, v: BSTR): HRESULT {.stdcall.}
     get_preload*: proc(self: ptr IHTMLMediaElement, p: ptr BSTR): HRESULT {.stdcall.}
-    get_buffered*: proc(self: ptr IHTMLMediaElement, p: ptr ptr IHTMLTimeRanges): HRESULT {.stdcall.}
+    get_buffered*:
+      proc(self: ptr IHTMLMediaElement, p: ptr ptr IHTMLTimeRanges): HRESULT {.stdcall.}
     load*: proc(self: ptr IHTMLMediaElement): HRESULT {.stdcall.}
-    canPlayType*: proc(self: ptr IHTMLMediaElement, `type`: BSTR, canPlay: ptr BSTR): HRESULT {.stdcall.}
-    get_seeking*: proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    canPlayType*: proc(
+      self: ptr IHTMLMediaElement, `type`: BSTR, canPlay: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_seeking*:
+      proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_currentTime*: proc(self: ptr IHTMLMediaElement, v: float32): HRESULT {.stdcall.}
-    get_currentTime*: proc(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.stdcall.}
-    get_initialTime*: proc(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.stdcall.}
-    get_duration*: proc(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.stdcall.}
-    get_paused*: proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_defaultPlaybackRate*: proc(self: ptr IHTMLMediaElement, v: float32): HRESULT {.stdcall.}
-    get_defaultPlaybackRate*: proc(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.stdcall.}
-    put_playbackRate*: proc(self: ptr IHTMLMediaElement, v: float32): HRESULT {.stdcall.}
-    get_playbackRate*: proc(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.stdcall.}
-    get_played*: proc(self: ptr IHTMLMediaElement, p: ptr ptr IHTMLTimeRanges): HRESULT {.stdcall.}
-    get_seekable*: proc(self: ptr IHTMLMediaElement, p: ptr ptr IHTMLTimeRanges): HRESULT {.stdcall.}
-    get_ended*: proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_autoplay*: proc(self: ptr IHTMLMediaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_autoplay*: proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_currentTime*:
+      proc(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.stdcall.}
+    get_initialTime*:
+      proc(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.stdcall.}
+    get_duration*:
+      proc(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.stdcall.}
+    get_paused*:
+      proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_defaultPlaybackRate*:
+      proc(self: ptr IHTMLMediaElement, v: float32): HRESULT {.stdcall.}
+    get_defaultPlaybackRate*:
+      proc(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.stdcall.}
+    put_playbackRate*:
+      proc(self: ptr IHTMLMediaElement, v: float32): HRESULT {.stdcall.}
+    get_playbackRate*:
+      proc(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.stdcall.}
+    get_played*:
+      proc(self: ptr IHTMLMediaElement, p: ptr ptr IHTMLTimeRanges): HRESULT {.stdcall.}
+    get_seekable*:
+      proc(self: ptr IHTMLMediaElement, p: ptr ptr IHTMLTimeRanges): HRESULT {.stdcall.}
+    get_ended*:
+      proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_autoplay*:
+      proc(self: ptr IHTMLMediaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_autoplay*:
+      proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_loop*: proc(self: ptr IHTMLMediaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_loop*: proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_loop*:
+      proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     play*: proc(self: ptr IHTMLMediaElement): HRESULT {.stdcall.}
     pause*: proc(self: ptr IHTMLMediaElement): HRESULT {.stdcall.}
-    put_controls*: proc(self: ptr IHTMLMediaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_controls*: proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_controls*:
+      proc(self: ptr IHTMLMediaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_controls*:
+      proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_volume*: proc(self: ptr IHTMLMediaElement, v: float32): HRESULT {.stdcall.}
     get_volume*: proc(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.stdcall.}
     put_muted*: proc(self: ptr IHTMLMediaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_muted*: proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_autobuffer*: proc(self: ptr IHTMLMediaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_autobuffer*: proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_muted*:
+      proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_autobuffer*:
+      proc(self: ptr IHTMLMediaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_autobuffer*:
+      proc(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   IHTMLMediaElement2* {.pure.} = object
     lpVtbl*: ptr IHTMLMediaElement2Vtbl
+
   IHTMLMediaElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_currentTimeDouble*: proc(self: ptr IHTMLMediaElement2, v: float64): HRESULT {.stdcall.}
-    get_currentTimeDouble*: proc(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.stdcall.}
-    get_initialTimeDouble*: proc(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.stdcall.}
-    get_durationDouble*: proc(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.stdcall.}
-    put_defaultPlaybackRateDouble*: proc(self: ptr IHTMLMediaElement2, v: float64): HRESULT {.stdcall.}
-    get_defaultPlaybackRateDouble*: proc(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.stdcall.}
-    put_playbackRateDouble*: proc(self: ptr IHTMLMediaElement2, v: float64): HRESULT {.stdcall.}
-    get_playbackRateDouble*: proc(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.stdcall.}
-    put_volumeDouble*: proc(self: ptr IHTMLMediaElement2, v: float64): HRESULT {.stdcall.}
-    get_volumeDouble*: proc(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.stdcall.}
+    put_currentTimeDouble*:
+      proc(self: ptr IHTMLMediaElement2, v: float64): HRESULT {.stdcall.}
+    get_currentTimeDouble*:
+      proc(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.stdcall.}
+    get_initialTimeDouble*:
+      proc(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.stdcall.}
+    get_durationDouble*:
+      proc(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.stdcall.}
+    put_defaultPlaybackRateDouble*:
+      proc(self: ptr IHTMLMediaElement2, v: float64): HRESULT {.stdcall.}
+    get_defaultPlaybackRateDouble*:
+      proc(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.stdcall.}
+    put_playbackRateDouble*:
+      proc(self: ptr IHTMLMediaElement2, v: float64): HRESULT {.stdcall.}
+    get_playbackRateDouble*:
+      proc(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.stdcall.}
+    put_volumeDouble*:
+      proc(self: ptr IHTMLMediaElement2, v: float64): HRESULT {.stdcall.}
+    get_volumeDouble*:
+      proc(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.stdcall.}
+
   IHTMLMSMediaElement* {.pure.} = object
     lpVtbl*: ptr IHTMLMSMediaElementVtbl
+
   IHTMLMSMediaElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    put_msPlayToDisabled*: proc(self: ptr IHTMLMSMediaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_msPlayToDisabled*: proc(self: ptr IHTMLMSMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_msPlayToPrimary*: proc(self: ptr IHTMLMSMediaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_msPlayToPrimary*: proc(self: ptr IHTMLMSMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_msPlayToDisabled*:
+      proc(self: ptr IHTMLMSMediaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_msPlayToDisabled*:
+      proc(self: ptr IHTMLMSMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_msPlayToPrimary*:
+      proc(self: ptr IHTMLMSMediaElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_msPlayToPrimary*:
+      proc(self: ptr IHTMLMSMediaElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   IHTMLSourceElement* {.pure.} = object
     lpVtbl*: ptr IHTMLSourceElementVtbl
+
   IHTMLSourceElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_src*: proc(self: ptr IHTMLSourceElement, v: BSTR): HRESULT {.stdcall.}
     get_src*: proc(self: ptr IHTMLSourceElement, p: ptr BSTR): HRESULT {.stdcall.}
@@ -11205,267 +16650,441 @@
     get_type*: proc(self: ptr IHTMLSourceElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_media*: proc(self: ptr IHTMLSourceElement, v: BSTR): HRESULT {.stdcall.}
     get_media*: proc(self: ptr IHTMLSourceElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLAudioElement* {.pure.} = object
     lpVtbl*: ptr IHTMLAudioElementVtbl
+
   IHTMLAudioElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLVideoElement* {.pure.} = object
     lpVtbl*: ptr IHTMLVideoElementVtbl
+
   IHTMLVideoElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_width*: proc(self: ptr IHTMLVideoElement, v: LONG): HRESULT {.stdcall.}
     get_width*: proc(self: ptr IHTMLVideoElement, p: ptr LONG): HRESULT {.stdcall.}
     put_height*: proc(self: ptr IHTMLVideoElement, v: LONG): HRESULT {.stdcall.}
     get_height*: proc(self: ptr IHTMLVideoElement, p: ptr LONG): HRESULT {.stdcall.}
-    get_videoWidth*: proc(self: ptr IHTMLVideoElement, p: ptr ULONG): HRESULT {.stdcall.}
-    get_videoHeight*: proc(self: ptr IHTMLVideoElement, p: ptr ULONG): HRESULT {.stdcall.}
+    get_videoWidth*:
+      proc(self: ptr IHTMLVideoElement, p: ptr ULONG): HRESULT {.stdcall.}
+    get_videoHeight*:
+      proc(self: ptr IHTMLVideoElement, p: ptr ULONG): HRESULT {.stdcall.}
     put_poster*: proc(self: ptr IHTMLVideoElement, v: BSTR): HRESULT {.stdcall.}
     get_poster*: proc(self: ptr IHTMLVideoElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLAudioElementFactory* {.pure.} = object
     lpVtbl*: ptr IHTMLAudioElementFactoryVtbl
+
   IHTMLAudioElementFactoryVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    create*: proc(self: ptr IHTMLAudioElementFactory, src: VARIANT, a: ptr ptr IHTMLAudioElement): HRESULT {.stdcall.}
+    create*: proc(
+      self: ptr IHTMLAudioElementFactory, src: VARIANT, a: ptr ptr IHTMLAudioElement
+    ): HRESULT {.stdcall.}
+
   DispHTMLMediaError* {.pure.} = object
     lpVtbl*: ptr DispHTMLMediaErrorVtbl
+
   DispHTMLMediaErrorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLTimeRanges* {.pure.} = object
     lpVtbl*: ptr DispHTMLTimeRangesVtbl
+
   DispHTMLTimeRangesVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLMediaElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLMediaElementVtbl
+
   DispHTMLMediaElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLSourceElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLSourceElementVtbl
+
   DispHTMLSourceElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLAudioElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLAudioElementVtbl
+
   DispHTMLAudioElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLVideoElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLVideoElementVtbl
+
   DispHTMLVideoElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGSwitchElement* {.pure.} = object
     lpVtbl*: ptr ISVGSwitchElementVtbl
+
   ISVGSwitchElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGSwitchElement* {.pure.} = object
     lpVtbl*: ptr DispSVGSwitchElementVtbl
+
   DispSVGSwitchElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGDescElement* {.pure.} = object
     lpVtbl*: ptr ISVGDescElementVtbl
+
   ISVGDescElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGDescElement* {.pure.} = object
     lpVtbl*: ptr DispSVGDescElementVtbl
+
   DispSVGDescElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGTitleElement* {.pure.} = object
     lpVtbl*: ptr ISVGTitleElementVtbl
+
   ISVGTitleElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGTitleElement* {.pure.} = object
     lpVtbl*: ptr DispSVGTitleElementVtbl
+
   DispSVGTitleElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGMetadataElement* {.pure.} = object
     lpVtbl*: ptr ISVGMetadataElementVtbl
+
   ISVGMetadataElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGMetadataElement* {.pure.} = object
     lpVtbl*: ptr DispSVGMetadataElementVtbl
+
   DispSVGMetadataElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGElementInstance* {.pure.} = object
     lpVtbl*: ptr DispSVGElementInstanceVtbl
+
   DispSVGElementInstanceVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGElementInstanceList* {.pure.} = object
     lpVtbl*: ptr DispSVGElementInstanceListVtbl
+
   DispSVGElementInstanceListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMException* {.pure.} = object
     lpVtbl*: ptr IDOMExceptionVtbl
+
   IDOMExceptionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_code*: proc(self: ptr IDOMException, v: LONG): HRESULT {.stdcall.}
     get_code*: proc(self: ptr IDOMException, p: ptr LONG): HRESULT {.stdcall.}
     get_message*: proc(self: ptr IDOMException, p: ptr BSTR): HRESULT {.stdcall.}
+
   IRangeException* {.pure.} = object
     lpVtbl*: ptr IRangeExceptionVtbl
+
   IRangeExceptionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_code*: proc(self: ptr IRangeException, v: LONG): HRESULT {.stdcall.}
     get_code*: proc(self: ptr IRangeException, p: ptr LONG): HRESULT {.stdcall.}
     get_message*: proc(self: ptr IRangeException, p: ptr BSTR): HRESULT {.stdcall.}
+
   ISVGException* {.pure.} = object
     lpVtbl*: ptr ISVGExceptionVtbl
+
   ISVGExceptionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_code*: proc(self: ptr ISVGException, v: LONG): HRESULT {.stdcall.}
     get_code*: proc(self: ptr ISVGException, p: ptr LONG): HRESULT {.stdcall.}
     get_message*: proc(self: ptr ISVGException, p: ptr BSTR): HRESULT {.stdcall.}
+
   IEventException* {.pure.} = object
     lpVtbl*: ptr IEventExceptionVtbl
+
   IEventExceptionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_code*: proc(self: ptr IEventException, v: LONG): HRESULT {.stdcall.}
     get_code*: proc(self: ptr IEventException, p: ptr LONG): HRESULT {.stdcall.}
     get_message*: proc(self: ptr IEventException, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispDOMException* {.pure.} = object
     lpVtbl*: ptr DispDOMExceptionVtbl
+
   DispDOMExceptionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispRangeException* {.pure.} = object
     lpVtbl*: ptr DispRangeExceptionVtbl
+
   DispRangeExceptionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGException* {.pure.} = object
     lpVtbl*: ptr DispSVGExceptionVtbl
+
   DispSVGExceptionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispEventException* {.pure.} = object
     lpVtbl*: ptr DispEventExceptionVtbl
+
   DispEventExceptionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGScriptElement* {.pure.} = object
     lpVtbl*: ptr ISVGScriptElementVtbl
+
   ISVGScriptElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_type*: proc(self: ptr ISVGScriptElement, v: BSTR): HRESULT {.stdcall.}
     get_type*: proc(self: ptr ISVGScriptElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispSVGScriptElement* {.pure.} = object
     lpVtbl*: ptr DispSVGScriptElementVtbl
+
   DispSVGScriptElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGStyleElement* {.pure.} = object
     lpVtbl*: ptr ISVGStyleElementVtbl
+
   ISVGStyleElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_type*: proc(self: ptr ISVGStyleElement, v: BSTR): HRESULT {.stdcall.}
     get_type*: proc(self: ptr ISVGStyleElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_media*: proc(self: ptr ISVGStyleElement, v: BSTR): HRESULT {.stdcall.}
     get_media*: proc(self: ptr ISVGStyleElement, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispSVGStyleElement* {.pure.} = object
     lpVtbl*: ptr DispSVGStyleElementVtbl
+
   DispSVGStyleElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGTextContentElement* {.pure.} = object
     lpVtbl*: ptr ISVGTextContentElementVtbl
+
   ISVGTextContentElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_textLength*: proc(self: ptr ISVGTextContentElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_textLength*: proc(self: ptr ISVGTextContentElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_lengthAdjust*: proc(self: ptr ISVGTextContentElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    get_lengthAdjust*: proc(self: ptr ISVGTextContentElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    getNumberOfChars*: proc(self: ptr ISVGTextContentElement, pResult: ptr LONG): HRESULT {.stdcall.}
-    getComputedTextLength*: proc(self: ptr ISVGTextContentElement, pResult: ptr float32): HRESULT {.stdcall.}
-    getSubStringLength*: proc(self: ptr ISVGTextContentElement, charnum: LONG, nchars: LONG, pResult: ptr float32): HRESULT {.stdcall.}
-    getStartPositionOfChar*: proc(self: ptr ISVGTextContentElement, charnum: LONG, ppResult: ptr ptr ISVGPoint): HRESULT {.stdcall.}
-    getEndPositionOfChar*: proc(self: ptr ISVGTextContentElement, charnum: LONG, ppResult: ptr ptr ISVGPoint): HRESULT {.stdcall.}
-    getExtentOfChar*: proc(self: ptr ISVGTextContentElement, charnum: LONG, ppResult: ptr ptr ISVGRect): HRESULT {.stdcall.}
-    getRotationOfChar*: proc(self: ptr ISVGTextContentElement, charnum: LONG, pResult: ptr float32): HRESULT {.stdcall.}
-    getCharNumAtPosition*: proc(self: ptr ISVGTextContentElement, point: ptr ISVGPoint, pResult: ptr LONG): HRESULT {.stdcall.}
-    selectSubString*: proc(self: ptr ISVGTextContentElement, charnum: LONG, nchars: LONG): HRESULT {.stdcall.}
+    putref_textLength*: proc(
+      self: ptr ISVGTextContentElement, v: ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    get_textLength*: proc(
+      self: ptr ISVGTextContentElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    putref_lengthAdjust*: proc(
+      self: ptr ISVGTextContentElement, v: ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    get_lengthAdjust*: proc(
+      self: ptr ISVGTextContentElement, p: ptr ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    getNumberOfChars*:
+      proc(self: ptr ISVGTextContentElement, pResult: ptr LONG): HRESULT {.stdcall.}
+    getComputedTextLength*:
+      proc(self: ptr ISVGTextContentElement, pResult: ptr float32): HRESULT {.stdcall.}
+    getSubStringLength*: proc(
+      self: ptr ISVGTextContentElement,
+      charnum: LONG,
+      nchars: LONG,
+      pResult: ptr float32,
+    ): HRESULT {.stdcall.}
+    getStartPositionOfChar*: proc(
+      self: ptr ISVGTextContentElement, charnum: LONG, ppResult: ptr ptr ISVGPoint
+    ): HRESULT {.stdcall.}
+    getEndPositionOfChar*: proc(
+      self: ptr ISVGTextContentElement, charnum: LONG, ppResult: ptr ptr ISVGPoint
+    ): HRESULT {.stdcall.}
+    getExtentOfChar*: proc(
+      self: ptr ISVGTextContentElement, charnum: LONG, ppResult: ptr ptr ISVGRect
+    ): HRESULT {.stdcall.}
+    getRotationOfChar*: proc(
+      self: ptr ISVGTextContentElement, charnum: LONG, pResult: ptr float32
+    ): HRESULT {.stdcall.}
+    getCharNumAtPosition*: proc(
+      self: ptr ISVGTextContentElement, point: ptr ISVGPoint, pResult: ptr LONG
+    ): HRESULT {.stdcall.}
+    selectSubString*: proc(
+      self: ptr ISVGTextContentElement, charnum: LONG, nchars: LONG
+    ): HRESULT {.stdcall.}
+
   DispSVGTextContentElement* {.pure.} = object
     lpVtbl*: ptr DispSVGTextContentElementVtbl
+
   DispSVGTextContentElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGTextPositioningElement* {.pure.} = object
     lpVtbl*: ptr ISVGTextPositioningElementVtbl
+
   ISVGTextPositioningElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_x*: proc(self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList): HRESULT {.stdcall.}
-    get_x*: proc(self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList): HRESULT {.stdcall.}
-    putref_y*: proc(self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList): HRESULT {.stdcall.}
-    get_y*: proc(self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList): HRESULT {.stdcall.}
-    putref_dx*: proc(self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList): HRESULT {.stdcall.}
-    get_dx*: proc(self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList): HRESULT {.stdcall.}
-    putref_dy*: proc(self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList): HRESULT {.stdcall.}
-    get_dy*: proc(self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList): HRESULT {.stdcall.}
-    putref_rotate*: proc(self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedNumberList): HRESULT {.stdcall.}
-    get_rotate*: proc(self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedNumberList): HRESULT {.stdcall.}
+    putref_x*: proc(
+      self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList
+    ): HRESULT {.stdcall.}
+    get_x*: proc(
+      self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList
+    ): HRESULT {.stdcall.}
+    putref_y*: proc(
+      self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList
+    ): HRESULT {.stdcall.}
+    get_y*: proc(
+      self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList
+    ): HRESULT {.stdcall.}
+    putref_dx*: proc(
+      self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList
+    ): HRESULT {.stdcall.}
+    get_dx*: proc(
+      self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList
+    ): HRESULT {.stdcall.}
+    putref_dy*: proc(
+      self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList
+    ): HRESULT {.stdcall.}
+    get_dy*: proc(
+      self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList
+    ): HRESULT {.stdcall.}
+    putref_rotate*: proc(
+      self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedNumberList
+    ): HRESULT {.stdcall.}
+    get_rotate*: proc(
+      self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedNumberList
+    ): HRESULT {.stdcall.}
+
   DispSVGTextPositioningElement* {.pure.} = object
     lpVtbl*: ptr DispSVGTextPositioningElementVtbl
+
   DispSVGTextPositioningElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispDOMDocumentType* {.pure.} = object
     lpVtbl*: ptr DispDOMDocumentTypeVtbl
+
   DispDOMDocumentTypeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispNodeIterator* {.pure.} = object
     lpVtbl*: ptr DispNodeIteratorVtbl
+
   DispNodeIteratorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispTreeWalker* {.pure.} = object
     lpVtbl*: ptr DispTreeWalkerVtbl
+
   DispTreeWalkerVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispDOMProcessingInstruction* {.pure.} = object
     lpVtbl*: ptr DispDOMProcessingInstructionVtbl
+
   DispDOMProcessingInstructionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLPerformanceNavigation* {.pure.} = object
     lpVtbl*: ptr IHTMLPerformanceNavigationVtbl
+
   IHTMLPerformanceNavigationVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_type*: proc(self: ptr IHTMLPerformanceNavigation, p: ptr ULONG): HRESULT {.stdcall.}
-    get_redirectCount*: proc(self: ptr IHTMLPerformanceNavigation, p: ptr ULONG): HRESULT {.stdcall.}
-    toString*: proc(self: ptr IHTMLPerformanceNavigation, string: ptr BSTR): HRESULT {.stdcall.}
-    toJSON*: proc(self: ptr IHTMLPerformanceNavigation, pVar: ptr VARIANT): HRESULT {.stdcall.}
+    get_type*:
+      proc(self: ptr IHTMLPerformanceNavigation, p: ptr ULONG): HRESULT {.stdcall.}
+    get_redirectCount*:
+      proc(self: ptr IHTMLPerformanceNavigation, p: ptr ULONG): HRESULT {.stdcall.}
+    toString*:
+      proc(self: ptr IHTMLPerformanceNavigation, string: ptr BSTR): HRESULT {.stdcall.}
+    toJSON*:
+      proc(self: ptr IHTMLPerformanceNavigation, pVar: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLPerformanceTiming* {.pure.} = object
     lpVtbl*: ptr IHTMLPerformanceTimingVtbl
+
   IHTMLPerformanceTimingVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_navigationStart*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_unloadEventStart*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_unloadEventEnd*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_redirectStart*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_redirectEnd*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_fetchStart*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_domainLookupStart*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_domainLookupEnd*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_connectStart*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_connectEnd*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_requestStart*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_responseStart*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_responseEnd*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_domLoading*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_domInteractive*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_domContentLoadedEventStart*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_domContentLoadedEventEnd*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_domComplete*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_loadEventStart*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_loadEventEnd*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    get_msFirstPaint*: proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
-    toString*: proc(self: ptr IHTMLPerformanceTiming, string: ptr BSTR): HRESULT {.stdcall.}
-    toJSON*: proc(self: ptr IHTMLPerformanceTiming, pVar: ptr VARIANT): HRESULT {.stdcall.}
+    get_navigationStart*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_unloadEventStart*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_unloadEventEnd*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_redirectStart*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_redirectEnd*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_fetchStart*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_domainLookupStart*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_domainLookupEnd*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_connectStart*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_connectEnd*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_requestStart*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_responseStart*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_responseEnd*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_domLoading*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_domInteractive*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_domContentLoadedEventStart*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_domContentLoadedEventEnd*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_domComplete*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_loadEventStart*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_loadEventEnd*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_msFirstPaint*:
+      proc(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    toString*:
+      proc(self: ptr IHTMLPerformanceTiming, string: ptr BSTR): HRESULT {.stdcall.}
+    toJSON*:
+      proc(self: ptr IHTMLPerformanceTiming, pVar: ptr VARIANT): HRESULT {.stdcall.}
+
   IHTMLPerformance* {.pure.} = object
     lpVtbl*: ptr IHTMLPerformanceVtbl
+
   IHTMLPerformanceVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_navigation*: proc(self: ptr IHTMLPerformance, p: ptr ptr IHTMLPerformanceNavigation): HRESULT {.stdcall.}
-    get_timing*: proc(self: ptr IHTMLPerformance, p: ptr ptr IHTMLPerformanceTiming): HRESULT {.stdcall.}
+    get_navigation*: proc(
+      self: ptr IHTMLPerformance, p: ptr ptr IHTMLPerformanceNavigation
+    ): HRESULT {.stdcall.}
+    get_timing*: proc(
+      self: ptr IHTMLPerformance, p: ptr ptr IHTMLPerformanceTiming
+    ): HRESULT {.stdcall.}
     toString*: proc(self: ptr IHTMLPerformance, string: ptr BSTR): HRESULT {.stdcall.}
     toJSON*: proc(self: ptr IHTMLPerformance, pVar: ptr VARIANT): HRESULT {.stdcall.}
+
   DispHTMLPerformance* {.pure.} = object
     lpVtbl*: ptr DispHTMLPerformanceVtbl
+
   DispHTMLPerformanceVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLPerformanceNavigation* {.pure.} = object
     lpVtbl*: ptr DispHTMLPerformanceNavigationVtbl
+
   DispHTMLPerformanceNavigationVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLPerformanceTiming* {.pure.} = object
     lpVtbl*: ptr DispHTMLPerformanceTimingVtbl
+
   DispHTMLPerformanceTimingVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGTSpanElement* {.pure.} = object
     lpVtbl*: ptr ISVGTSpanElementVtbl
+
   ISVGTSpanElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispSVGTSpanElement* {.pure.} = object
     lpVtbl*: ptr DispSVGTSpanElementVtbl
+
   DispSVGTSpanElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ITemplatePrinter* {.pure.} = object
     lpVtbl*: ptr ITemplatePrinterVtbl
+
   ITemplatePrinterVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    startDoc*: proc(self: ptr ITemplatePrinter, bstrTitle: BSTR, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    startDoc*: proc(
+      self: ptr ITemplatePrinter, bstrTitle: BSTR, p: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     stopDoc*: proc(self: ptr ITemplatePrinter): HRESULT {.stdcall.}
     printBlankPage*: proc(self: ptr ITemplatePrinter): HRESULT {.stdcall.}
-    printPage*: proc(self: ptr ITemplatePrinter, pElemDisp: ptr IDispatch): HRESULT {.stdcall.}
-    ensurePrintDialogDefaults*: proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    showPrintDialog*: proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    showPageSetupDialog*: proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    printNonNative*: proc(self: ptr ITemplatePrinter, pMarkup: ptr IUnknown, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    printNonNativeFrames*: proc(self: ptr ITemplatePrinter, pMarkup: ptr IUnknown, fActiveFrame: VARIANT_BOOL): HRESULT {.stdcall.}
-    put_framesetDocument*: proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_framesetDocument*: proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_frameActive*: proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_frameActive*: proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_frameAsShown*: proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_frameAsShown*: proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_selection*: proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_selection*: proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_selectedPages*: proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_selectedPages*: proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_currentPage*: proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_currentPage*: proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_currentPageAvail*: proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_currentPageAvail*: proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    printPage*:
+      proc(self: ptr ITemplatePrinter, pElemDisp: ptr IDispatch): HRESULT {.stdcall.}
+    ensurePrintDialogDefaults*:
+      proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    showPrintDialog*:
+      proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    showPageSetupDialog*:
+      proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    printNonNative*: proc(
+      self: ptr ITemplatePrinter, pMarkup: ptr IUnknown, p: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    printNonNativeFrames*: proc(
+      self: ptr ITemplatePrinter, pMarkup: ptr IUnknown, fActiveFrame: VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    put_framesetDocument*:
+      proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_framesetDocument*:
+      proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_frameActive*:
+      proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_frameActive*:
+      proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_frameAsShown*:
+      proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_frameAsShown*:
+      proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_selection*:
+      proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_selection*:
+      proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_selectedPages*:
+      proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_selectedPages*:
+      proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_currentPage*:
+      proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_currentPage*:
+      proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_currentPageAvail*:
+      proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_currentPageAvail*:
+      proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_collate*: proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_collate*: proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_duplex*: proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_collate*:
+      proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_duplex*:
+      proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_copies*: proc(self: ptr ITemplatePrinter, v: USHORT): HRESULT {.stdcall.}
     get_copies*: proc(self: ptr ITemplatePrinter, p: ptr USHORT): HRESULT {.stdcall.}
     put_pageFrom*: proc(self: ptr ITemplatePrinter, v: USHORT): HRESULT {.stdcall.}
     get_pageFrom*: proc(self: ptr ITemplatePrinter, p: ptr USHORT): HRESULT {.stdcall.}
     put_pageTo*: proc(self: ptr ITemplatePrinter, v: USHORT): HRESULT {.stdcall.}
     get_pageTo*: proc(self: ptr ITemplatePrinter, p: ptr USHORT): HRESULT {.stdcall.}
-    put_tableOfLinks*: proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_tableOfLinks*: proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_allLinkedDocuments*: proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_allLinkedDocuments*: proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_tableOfLinks*:
+      proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_tableOfLinks*:
+      proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_allLinkedDocuments*:
+      proc(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_allLinkedDocuments*:
+      proc(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_header*: proc(self: ptr ITemplatePrinter, v: BSTR): HRESULT {.stdcall.}
     get_header*: proc(self: ptr ITemplatePrinter, p: ptr BSTR): HRESULT {.stdcall.}
     put_footer*: proc(self: ptr ITemplatePrinter, v: BSTR): HRESULT {.stdcall.}
@@ -11477,155 +17096,315 @@
     put_marginTop*: proc(self: ptr ITemplatePrinter, v: LONG): HRESULT {.stdcall.}
     get_marginTop*: proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
     put_marginBottom*: proc(self: ptr ITemplatePrinter, v: LONG): HRESULT {.stdcall.}
-    get_marginBottom*: proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
+    get_marginBottom*:
+      proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
     get_pageWidth*: proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
     get_pageHeight*: proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
-    get_unprintableLeft*: proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
-    get_unprintableTop*: proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
-    get_unprintableRight*: proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
-    get_unprintableBottom*: proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
-    updatePageStatus*: proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
+    get_unprintableLeft*:
+      proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
+    get_unprintableTop*:
+      proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
+    get_unprintableRight*:
+      proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
+    get_unprintableBottom*:
+      proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
+    updatePageStatus*:
+      proc(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.stdcall.}
+
   ITemplatePrinter2* {.pure.} = object
     lpVtbl*: ptr ITemplatePrinter2Vtbl
+
   ITemplatePrinter2Vtbl* {.pure, inheritable.} = object of ITemplatePrinterVtbl
-    put_selectionEnabled*: proc(self: ptr ITemplatePrinter2, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_selectionEnabled*: proc(self: ptr ITemplatePrinter2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_frameActiveEnabled*: proc(self: ptr ITemplatePrinter2, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_frameActiveEnabled*: proc(self: ptr ITemplatePrinter2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_selectionEnabled*:
+      proc(self: ptr ITemplatePrinter2, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_selectionEnabled*:
+      proc(self: ptr ITemplatePrinter2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_frameActiveEnabled*:
+      proc(self: ptr ITemplatePrinter2, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_frameActiveEnabled*:
+      proc(self: ptr ITemplatePrinter2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_orientation*: proc(self: ptr ITemplatePrinter2, v: BSTR): HRESULT {.stdcall.}
-    get_orientation*: proc(self: ptr ITemplatePrinter2, p: ptr BSTR): HRESULT {.stdcall.}
-    put_usePrinterCopyCollate*: proc(self: ptr ITemplatePrinter2, v: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_usePrinterCopyCollate*: proc(self: ptr ITemplatePrinter2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    deviceSupports*: proc(self: ptr ITemplatePrinter2, bstrProperty: BSTR, pvar: ptr VARIANT): HRESULT {.stdcall.}
+    get_orientation*:
+      proc(self: ptr ITemplatePrinter2, p: ptr BSTR): HRESULT {.stdcall.}
+    put_usePrinterCopyCollate*:
+      proc(self: ptr ITemplatePrinter2, v: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_usePrinterCopyCollate*:
+      proc(self: ptr ITemplatePrinter2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    deviceSupports*: proc(
+      self: ptr ITemplatePrinter2, bstrProperty: BSTR, pvar: ptr VARIANT
+    ): HRESULT {.stdcall.}
+
   ITemplatePrinter3* {.pure.} = object
     lpVtbl*: ptr ITemplatePrinter3Vtbl
+
   ITemplatePrinter3Vtbl* {.pure, inheritable.} = object of ITemplatePrinter2Vtbl
-    put_headerFooterFont*: proc(self: ptr ITemplatePrinter3, v: BSTR): HRESULT {.stdcall.}
-    get_headerFooterFont*: proc(self: ptr ITemplatePrinter3, p: ptr BSTR): HRESULT {.stdcall.}
-    getPageMarginTop*: proc(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pageWidth: LONG, pageHeight: LONG, pMargin: ptr VARIANT): HRESULT {.stdcall.}
-    getPageMarginRight*: proc(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pageWidth: LONG, pageHeight: LONG, pMargin: ptr VARIANT): HRESULT {.stdcall.}
-    getPageMarginBottom*: proc(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pageWidth: LONG, pageHeight: LONG, pMargin: ptr VARIANT): HRESULT {.stdcall.}
-    getPageMarginLeft*: proc(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pageWidth: LONG, pageHeight: LONG, pMargin: ptr VARIANT): HRESULT {.stdcall.}
-    getPageMarginTopImportant*: proc(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pbImportant: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    getPageMarginRightImportant*: proc(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pbImportant: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    getPageMarginBottomImportant*: proc(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pbImportant: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    getPageMarginLeftImportant*: proc(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pbImportant: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_headerFooterFont*:
+      proc(self: ptr ITemplatePrinter3, v: BSTR): HRESULT {.stdcall.}
+    get_headerFooterFont*:
+      proc(self: ptr ITemplatePrinter3, p: ptr BSTR): HRESULT {.stdcall.}
+    getPageMarginTop*: proc(
+      self: ptr ITemplatePrinter3,
+      pageRule: ptr IDispatch,
+      pageWidth: LONG,
+      pageHeight: LONG,
+      pMargin: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    getPageMarginRight*: proc(
+      self: ptr ITemplatePrinter3,
+      pageRule: ptr IDispatch,
+      pageWidth: LONG,
+      pageHeight: LONG,
+      pMargin: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    getPageMarginBottom*: proc(
+      self: ptr ITemplatePrinter3,
+      pageRule: ptr IDispatch,
+      pageWidth: LONG,
+      pageHeight: LONG,
+      pMargin: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    getPageMarginLeft*: proc(
+      self: ptr ITemplatePrinter3,
+      pageRule: ptr IDispatch,
+      pageWidth: LONG,
+      pageHeight: LONG,
+      pMargin: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    getPageMarginTopImportant*: proc(
+      self: ptr ITemplatePrinter3,
+      pageRule: ptr IDispatch,
+      pbImportant: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    getPageMarginRightImportant*: proc(
+      self: ptr ITemplatePrinter3,
+      pageRule: ptr IDispatch,
+      pbImportant: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    getPageMarginBottomImportant*: proc(
+      self: ptr ITemplatePrinter3,
+      pageRule: ptr IDispatch,
+      pbImportant: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    getPageMarginLeftImportant*: proc(
+      self: ptr ITemplatePrinter3,
+      pageRule: ptr IDispatch,
+      pbImportant: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+
   IPrintManagerTemplatePrinter* {.pure.} = object
     lpVtbl*: ptr IPrintManagerTemplatePrinterVtbl
+
   IPrintManagerTemplatePrinterVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     startPrint*: proc(self: ptr IPrintManagerTemplatePrinter): HRESULT {.stdcall.}
-    drawPreviewPage*: proc(self: ptr IPrintManagerTemplatePrinter, pElemDisp: ptr IDispatch, nPage: LONG): HRESULT {.stdcall.}
-    setPageCount*: proc(self: ptr IPrintManagerTemplatePrinter, nPage: LONG): HRESULT {.stdcall.}
-    invalidatePreview*: proc(self: ptr IPrintManagerTemplatePrinter): HRESULT {.stdcall.}
-    getPrintTaskOptionValue*: proc(self: ptr IPrintManagerTemplatePrinter, bstrKey: BSTR, pvarin: ptr VARIANT): HRESULT {.stdcall.}
+    drawPreviewPage*: proc(
+      self: ptr IPrintManagerTemplatePrinter, pElemDisp: ptr IDispatch, nPage: LONG
+    ): HRESULT {.stdcall.}
+    setPageCount*:
+      proc(self: ptr IPrintManagerTemplatePrinter, nPage: LONG): HRESULT {.stdcall.}
+    invalidatePreview*:
+      proc(self: ptr IPrintManagerTemplatePrinter): HRESULT {.stdcall.}
+    getPrintTaskOptionValue*: proc(
+      self: ptr IPrintManagerTemplatePrinter, bstrKey: BSTR, pvarin: ptr VARIANT
+    ): HRESULT {.stdcall.}
     endPrint*: proc(self: ptr IPrintManagerTemplatePrinter): HRESULT {.stdcall.}
+
   DispCPrintManagerTemplatePrinter* {.pure.} = object
     lpVtbl*: ptr DispCPrintManagerTemplatePrinterVtbl
+
   DispCPrintManagerTemplatePrinterVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ISVGTextPathElement* {.pure.} = object
     lpVtbl*: ptr ISVGTextPathElementVtbl
+
   ISVGTextPathElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    putref_startOffset*: proc(self: ptr ISVGTextPathElement, v: ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    get_startOffset*: proc(self: ptr ISVGTextPathElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.stdcall.}
-    putref_method*: proc(self: ptr ISVGTextPathElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    get_method*: proc(self: ptr ISVGTextPathElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    putref_spacing*: proc(self: ptr ISVGTextPathElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
-    get_spacing*: proc(self: ptr ISVGTextPathElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.stdcall.}
+    putref_startOffset*: proc(
+      self: ptr ISVGTextPathElement, v: ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    get_startOffset*: proc(
+      self: ptr ISVGTextPathElement, p: ptr ptr ISVGAnimatedLength
+    ): HRESULT {.stdcall.}
+    putref_method*: proc(
+      self: ptr ISVGTextPathElement, v: ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    get_method*: proc(
+      self: ptr ISVGTextPathElement, p: ptr ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    putref_spacing*: proc(
+      self: ptr ISVGTextPathElement, v: ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+    get_spacing*: proc(
+      self: ptr ISVGTextPathElement, p: ptr ptr ISVGAnimatedEnumeration
+    ): HRESULT {.stdcall.}
+
   DispSVGTextPathElement* {.pure.} = object
     lpVtbl*: ptr DispSVGTextPathElementVtbl
+
   DispSVGTextPathElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMXmlSerializer* {.pure.} = object
     lpVtbl*: ptr IDOMXmlSerializerVtbl
+
   IDOMXmlSerializerVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    serializeToString*: proc(self: ptr IDOMXmlSerializer, pNode: ptr IHTMLDOMNode, pString: ptr BSTR): HRESULT {.stdcall.}
+    serializeToString*: proc(
+      self: ptr IDOMXmlSerializer, pNode: ptr IHTMLDOMNode, pString: ptr BSTR
+    ): HRESULT {.stdcall.}
+
   IDOMXmlSerializerFactory* {.pure.} = object
     lpVtbl*: ptr IDOMXmlSerializerFactoryVtbl
+
   IDOMXmlSerializerFactoryVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    create*: proc(self: ptr IDOMXmlSerializerFactory, a: ptr ptr IDOMXmlSerializer): HRESULT {.stdcall.}
+    create*: proc(
+      self: ptr IDOMXmlSerializerFactory, a: ptr ptr IDOMXmlSerializer
+    ): HRESULT {.stdcall.}
+
   IDOMParser* {.pure.} = object
     lpVtbl*: ptr IDOMParserVtbl
+
   IDOMParserVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    parseFromString*: proc(self: ptr IDOMParser, xmlSource: BSTR, mimeType: BSTR, ppNode: ptr ptr IHTMLDocument2): HRESULT {.stdcall.}
+    parseFromString*: proc(
+      self: ptr IDOMParser,
+      xmlSource: BSTR,
+      mimeType: BSTR,
+      ppNode: ptr ptr IHTMLDocument2,
+    ): HRESULT {.stdcall.}
+
   IDOMParserFactory* {.pure.} = object
     lpVtbl*: ptr IDOMParserFactoryVtbl
+
   IDOMParserFactoryVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    create*: proc(self: ptr IDOMParserFactory, a: ptr ptr IDOMParser): HRESULT {.stdcall.}
+    create*:
+      proc(self: ptr IDOMParserFactory, a: ptr ptr IDOMParser): HRESULT {.stdcall.}
+
   DispXMLSerializer* {.pure.} = object
     lpVtbl*: ptr DispXMLSerializerVtbl
+
   DispXMLSerializerVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispDOMParser* {.pure.} = object
     lpVtbl*: ptr DispDOMParserVtbl
+
   DispDOMParserVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLSemanticElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLSemanticElementVtbl
+
   DispHTMLSemanticElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLProgressElement* {.pure.} = object
     lpVtbl*: ptr IHTMLProgressElementVtbl
+
   IHTMLProgressElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_value*: proc(self: ptr IHTMLProgressElement, v: float32): HRESULT {.stdcall.}
-    get_value*: proc(self: ptr IHTMLProgressElement, p: ptr float32): HRESULT {.stdcall.}
+    get_value*:
+      proc(self: ptr IHTMLProgressElement, p: ptr float32): HRESULT {.stdcall.}
     put_max*: proc(self: ptr IHTMLProgressElement, v: float32): HRESULT {.stdcall.}
     get_max*: proc(self: ptr IHTMLProgressElement, p: ptr float32): HRESULT {.stdcall.}
-    get_position*: proc(self: ptr IHTMLProgressElement, p: ptr float32): HRESULT {.stdcall.}
-    get_form*: proc(self: ptr IHTMLProgressElement, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
+    get_position*:
+      proc(self: ptr IHTMLProgressElement, p: ptr float32): HRESULT {.stdcall.}
+    get_form*: proc(
+      self: ptr IHTMLProgressElement, p: ptr ptr IHTMLFormElement
+    ): HRESULT {.stdcall.}
+
   DispHTMLProgressElement* {.pure.} = object
     lpVtbl*: ptr DispHTMLProgressElementVtbl
+
   DispHTMLProgressElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMMSTransitionEvent* {.pure.} = object
     lpVtbl*: ptr IDOMMSTransitionEventVtbl
+
   IDOMMSTransitionEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_propertyName*: proc(self: ptr IDOMMSTransitionEvent, p: ptr BSTR): HRESULT {.stdcall.}
-    get_elapsedTime*: proc(self: ptr IDOMMSTransitionEvent, p: ptr float32): HRESULT {.stdcall.}
-    initMSTransitionEvent*: proc(self: ptr IDOMMSTransitionEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, propertyName: BSTR, elapsedTime: float32): HRESULT {.stdcall.}
+    get_propertyName*:
+      proc(self: ptr IDOMMSTransitionEvent, p: ptr BSTR): HRESULT {.stdcall.}
+    get_elapsedTime*:
+      proc(self: ptr IDOMMSTransitionEvent, p: ptr float32): HRESULT {.stdcall.}
+    initMSTransitionEvent*: proc(
+      self: ptr IDOMMSTransitionEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      propertyName: BSTR,
+      elapsedTime: float32,
+    ): HRESULT {.stdcall.}
+
   DispDOMMSTransitionEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMMSTransitionEventVtbl
+
   DispDOMMSTransitionEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMMSAnimationEvent* {.pure.} = object
     lpVtbl*: ptr IDOMMSAnimationEventVtbl
+
   IDOMMSAnimationEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_animationName*: proc(self: ptr IDOMMSAnimationEvent, p: ptr BSTR): HRESULT {.stdcall.}
-    get_elapsedTime*: proc(self: ptr IDOMMSAnimationEvent, p: ptr float32): HRESULT {.stdcall.}
-    initMSAnimationEvent*: proc(self: ptr IDOMMSAnimationEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, animationName: BSTR, elapsedTime: float32): HRESULT {.stdcall.}
+    get_animationName*:
+      proc(self: ptr IDOMMSAnimationEvent, p: ptr BSTR): HRESULT {.stdcall.}
+    get_elapsedTime*:
+      proc(self: ptr IDOMMSAnimationEvent, p: ptr float32): HRESULT {.stdcall.}
+    initMSAnimationEvent*: proc(
+      self: ptr IDOMMSAnimationEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      animationName: BSTR,
+      elapsedTime: float32,
+    ): HRESULT {.stdcall.}
+
   DispDOMMSAnimationEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMMSAnimationEventVtbl
+
   DispDOMMSAnimationEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IWebGeocoordinates* {.pure.} = object
     lpVtbl*: ptr IWebGeocoordinatesVtbl
+
   IWebGeocoordinatesVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_latitude*: proc(self: ptr IWebGeocoordinates, p: ptr float64): HRESULT {.stdcall.}
-    get_longitude*: proc(self: ptr IWebGeocoordinates, p: ptr float64): HRESULT {.stdcall.}
-    get_altitude*: proc(self: ptr IWebGeocoordinates, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_accuracy*: proc(self: ptr IWebGeocoordinates, p: ptr float64): HRESULT {.stdcall.}
-    get_altitudeAccuracy*: proc(self: ptr IWebGeocoordinates, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_heading*: proc(self: ptr IWebGeocoordinates, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_latitude*:
+      proc(self: ptr IWebGeocoordinates, p: ptr float64): HRESULT {.stdcall.}
+    get_longitude*:
+      proc(self: ptr IWebGeocoordinates, p: ptr float64): HRESULT {.stdcall.}
+    get_altitude*:
+      proc(self: ptr IWebGeocoordinates, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_accuracy*:
+      proc(self: ptr IWebGeocoordinates, p: ptr float64): HRESULT {.stdcall.}
+    get_altitudeAccuracy*:
+      proc(self: ptr IWebGeocoordinates, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_heading*:
+      proc(self: ptr IWebGeocoordinates, p: ptr VARIANT): HRESULT {.stdcall.}
     get_speed*: proc(self: ptr IWebGeocoordinates, p: ptr VARIANT): HRESULT {.stdcall.}
+
   IWebGeopositionError* {.pure.} = object
     lpVtbl*: ptr IWebGeopositionErrorVtbl
+
   IWebGeopositionErrorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_code*: proc(self: ptr IWebGeopositionError, p: ptr LONG): HRESULT {.stdcall.}
     get_message*: proc(self: ptr IWebGeopositionError, p: ptr BSTR): HRESULT {.stdcall.}
+
   IWebGeoposition* {.pure.} = object
     lpVtbl*: ptr IWebGeopositionVtbl
+
   IWebGeopositionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_coords*: proc(self: ptr IWebGeoposition, p: ptr ptr IWebGeocoordinates): HRESULT {.stdcall.}
-    get_timestamp*: proc(self: ptr IWebGeoposition, p: ptr ULONGLONG): HRESULT {.stdcall.}
+    get_coords*: proc(self: ptr IWebGeoposition, p: ptr ptr IWebGeocoordinates): HRESULT {.
+      stdcall
+    .}
+    get_timestamp*:
+      proc(self: ptr IWebGeoposition, p: ptr ULONGLONG): HRESULT {.stdcall.}
+
   DispWebGeolocation* {.pure.} = object
     lpVtbl*: ptr DispWebGeolocationVtbl
+
   DispWebGeolocationVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispWebGeocoordinates* {.pure.} = object
     lpVtbl*: ptr DispWebGeocoordinatesVtbl
+
   DispWebGeocoordinatesVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispWebGeopositionError* {.pure.} = object
     lpVtbl*: ptr DispWebGeopositionErrorVtbl
+
   DispWebGeopositionErrorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispWebGeoposition* {.pure.} = object
     lpVtbl*: ptr DispWebGeopositionVtbl
+
   DispWebGeopositionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IClientCaps* {.pure.} = object
     lpVtbl*: ptr IClientCapsVtbl
+
   IClientCapsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_javaEnabled*: proc(self: ptr IClientCaps, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_cookieEnabled*: proc(self: ptr IClientCaps, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_javaEnabled*:
+      proc(self: ptr IClientCaps, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_cookieEnabled*:
+      proc(self: ptr IClientCaps, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_cpuClass*: proc(self: ptr IClientCaps, p: ptr BSTR): HRESULT {.stdcall.}
     get_systemLanguage*: proc(self: ptr IClientCaps, p: ptr BSTR): HRESULT {.stdcall.}
     get_userLanguage*: proc(self: ptr IClientCaps, p: ptr BSTR): HRESULT {.stdcall.}
@@ -11639,554 +17418,1487 @@
     get_availHeight*: proc(self: ptr IClientCaps, p: ptr LONG): HRESULT {.stdcall.}
     get_availWidth*: proc(self: ptr IClientCaps, p: ptr LONG): HRESULT {.stdcall.}
     get_connectionType*: proc(self: ptr IClientCaps, p: ptr BSTR): HRESULT {.stdcall.}
-    isComponentInstalled*: proc(self: ptr IClientCaps, bstrName: BSTR, bstrUrl: BSTR, bStrVer: BSTR, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    getComponentVersion*: proc(self: ptr IClientCaps, bstrName: BSTR, bstrUrl: BSTR, pbstrVer: ptr BSTR): HRESULT {.stdcall.}
-    compareVersions*: proc(self: ptr IClientCaps, bstrVer1: BSTR, bstrVer2: BSTR, p: ptr LONG): HRESULT {.stdcall.}
-    addComponentRequest*: proc(self: ptr IClientCaps, bstrName: BSTR, bstrUrl: BSTR, bStrVer: BSTR): HRESULT {.stdcall.}
-    doComponentRequest*: proc(self: ptr IClientCaps, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    isComponentInstalled*: proc(
+      self: ptr IClientCaps,
+      bstrName: BSTR,
+      bstrUrl: BSTR,
+      bStrVer: BSTR,
+      p: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    getComponentVersion*: proc(
+      self: ptr IClientCaps, bstrName: BSTR, bstrUrl: BSTR, pbstrVer: ptr BSTR
+    ): HRESULT {.stdcall.}
+    compareVersions*: proc(
+      self: ptr IClientCaps, bstrVer1: BSTR, bstrVer2: BSTR, p: ptr LONG
+    ): HRESULT {.stdcall.}
+    addComponentRequest*: proc(
+      self: ptr IClientCaps, bstrName: BSTR, bstrUrl: BSTR, bStrVer: BSTR
+    ): HRESULT {.stdcall.}
+    doComponentRequest*:
+      proc(self: ptr IClientCaps, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     clearComponentRequest*: proc(self: ptr IClientCaps): HRESULT {.stdcall.}
+
   IDOMMSManipulationEvent* {.pure.} = object
     lpVtbl*: ptr IDOMMSManipulationEventVtbl
+
   IDOMMSManipulationEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_lastState*: proc(self: ptr IDOMMSManipulationEvent, p: ptr LONG): HRESULT {.stdcall.}
-    get_currentState*: proc(self: ptr IDOMMSManipulationEvent, p: ptr LONG): HRESULT {.stdcall.}
-    initMSManipulationEvent*: proc(self: ptr IDOMMSManipulationEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, detailArg: LONG, lastState: LONG, currentState: LONG): HRESULT {.stdcall.}
+    get_lastState*:
+      proc(self: ptr IDOMMSManipulationEvent, p: ptr LONG): HRESULT {.stdcall.}
+    get_currentState*:
+      proc(self: ptr IDOMMSManipulationEvent, p: ptr LONG): HRESULT {.stdcall.}
+    initMSManipulationEvent*: proc(
+      self: ptr IDOMMSManipulationEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      viewArg: ptr IHTMLWindow2,
+      detailArg: LONG,
+      lastState: LONG,
+      currentState: LONG,
+    ): HRESULT {.stdcall.}
+
   DispDOMMSManipulationEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMMSManipulationEventVtbl
+
   DispDOMMSManipulationEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IDOMCloseEvent* {.pure.} = object
     lpVtbl*: ptr IDOMCloseEventVtbl
+
   IDOMCloseEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_wasClean*: proc(self: ptr IDOMCloseEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    initCloseEvent*: proc(self: ptr IDOMCloseEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, wasClean: VARIANT_BOOL, code: LONG, reason: BSTR): HRESULT {.stdcall.}
+    get_wasClean*:
+      proc(self: ptr IDOMCloseEvent, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    initCloseEvent*: proc(
+      self: ptr IDOMCloseEvent,
+      eventType: BSTR,
+      canBubble: VARIANT_BOOL,
+      cancelable: VARIANT_BOOL,
+      wasClean: VARIANT_BOOL,
+      code: LONG,
+      reason: BSTR,
+    ): HRESULT {.stdcall.}
+
   DispDOMCloseEvent* {.pure.} = object
     lpVtbl*: ptr DispDOMCloseEventVtbl
+
   DispDOMCloseEventVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispApplicationCache* {.pure.} = object
     lpVtbl*: ptr DispApplicationCacheVtbl
+
   DispApplicationCacheVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   ICSSFilterSite* {.pure.} = object
     lpVtbl*: ptr ICSSFilterSiteVtbl
+
   ICSSFilterSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetElement*: proc(self: ptr ICSSFilterSite, Element: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    GetElement*:
+      proc(self: ptr ICSSFilterSite, Element: ptr ptr IHTMLElement): HRESULT {.stdcall.}
     FireOnFilterChangeEvent*: proc(self: ptr ICSSFilterSite): HRESULT {.stdcall.}
+
   ICSSFilter* {.pure.} = object
     lpVtbl*: ptr ICSSFilterVtbl
+
   ICSSFilterVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SetSite*: proc(self: ptr ICSSFilter, pSink: ptr ICSSFilterSite): HRESULT {.stdcall.}
-    OnAmbientPropertyChange*: proc(self: ptr ICSSFilter, dispid: LONG): HRESULT {.stdcall.}
+    OnAmbientPropertyChange*:
+      proc(self: ptr ICSSFilter, dispid: LONG): HRESULT {.stdcall.}
+
   ISecureUrlHost* {.pure.} = object
     lpVtbl*: ptr ISecureUrlHostVtbl
+
   ISecureUrlHostVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ValidateSecureUrl*: proc(self: ptr ISecureUrlHost, pfAllow: ptr WINBOOL, pchUrlInQuestion: ptr OLECHAR, dwFlags: DWORD): HRESULT {.stdcall.}
+    ValidateSecureUrl*: proc(
+      self: ptr ISecureUrlHost,
+      pfAllow: ptr WINBOOL,
+      pchUrlInQuestion: ptr OLECHAR,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+
   IMarkupContainer* {.pure.} = object
     lpVtbl*: ptr IMarkupContainerVtbl
+
   IMarkupContainerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OwningDoc*: proc(self: ptr IMarkupContainer, ppDoc: ptr ptr IHTMLDocument2): HRESULT {.stdcall.}
+    OwningDoc*: proc(self: ptr IMarkupContainer, ppDoc: ptr ptr IHTMLDocument2): HRESULT {.
+      stdcall
+    .}
+
   IMarkupPointer* {.pure.} = object
     lpVtbl*: ptr IMarkupPointerVtbl
+
   IMarkupPointerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OwningDoc*: proc(self: ptr IMarkupPointer, ppDoc: ptr ptr IHTMLDocument2): HRESULT {.stdcall.}
-    Gravity*: proc(self: ptr IMarkupPointer, pGravity: ptr POINTER_GRAVITY): HRESULT {.stdcall.}
-    SetGravity*: proc(self: ptr IMarkupPointer, Gravity: POINTER_GRAVITY): HRESULT {.stdcall.}
+    OwningDoc*:
+      proc(self: ptr IMarkupPointer, ppDoc: ptr ptr IHTMLDocument2): HRESULT {.stdcall.}
+    Gravity*:
+      proc(self: ptr IMarkupPointer, pGravity: ptr POINTER_GRAVITY): HRESULT {.stdcall.}
+    SetGravity*:
+      proc(self: ptr IMarkupPointer, Gravity: POINTER_GRAVITY): HRESULT {.stdcall.}
     Cling*: proc(self: ptr IMarkupPointer, pfCling: ptr WINBOOL): HRESULT {.stdcall.}
     SetCling*: proc(self: ptr IMarkupPointer, fCLing: WINBOOL): HRESULT {.stdcall.}
     Unposition*: proc(self: ptr IMarkupPointer): HRESULT {.stdcall.}
-    IsPositioned*: proc(self: ptr IMarkupPointer, pfPositioned: ptr WINBOOL): HRESULT {.stdcall.}
-    GetContainer*: proc(self: ptr IMarkupPointer, ppContainer: ptr ptr IMarkupContainer): HRESULT {.stdcall.}
-    MoveAdjacentToElement*: proc(self: ptr IMarkupPointer, pElement: ptr IHTMLElement, eAdj: ELEMENT_ADJACENCY): HRESULT {.stdcall.}
-    MoveToPointer*: proc(self: ptr IMarkupPointer, pPointer: ptr IMarkupPointer): HRESULT {.stdcall.}
-    MoveToContainer*: proc(self: ptr IMarkupPointer, pContainer: ptr IMarkupContainer, fAtStart: WINBOOL): HRESULT {.stdcall.}
-    Left*: proc(self: ptr IMarkupPointer, fMove: WINBOOL, pContext: ptr MARKUP_CONTEXT_TYPE, ppElement: ptr ptr IHTMLElement, pcch: ptr LONG, pchText: ptr OLECHAR): HRESULT {.stdcall.}
-    Right*: proc(self: ptr IMarkupPointer, fMove: WINBOOL, pContext: ptr MARKUP_CONTEXT_TYPE, ppElement: ptr ptr IHTMLElement, pcch: ptr LONG, pchText: ptr OLECHAR): HRESULT {.stdcall.}
-    CurrentScope*: proc(self: ptr IMarkupPointer, ppElemCurrent: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    IsLeftOf*: proc(self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL): HRESULT {.stdcall.}
-    IsLeftOfOrEqualTo*: proc(self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL): HRESULT {.stdcall.}
-    IsRightOf*: proc(self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL): HRESULT {.stdcall.}
-    IsRightOfOrEqualTo*: proc(self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL): HRESULT {.stdcall.}
-    IsEqualTo*: proc(self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfAreEqual: ptr WINBOOL): HRESULT {.stdcall.}
-    MoveUnit*: proc(self: ptr IMarkupPointer, muAction: MOVEUNIT_ACTION): HRESULT {.stdcall.}
-    FindText*: proc(self: ptr IMarkupPointer, pchFindText: ptr OLECHAR, dwFlags: DWORD, pIEndMatch: ptr IMarkupPointer, pIEndSearch: ptr IMarkupPointer): HRESULT {.stdcall.}
+    IsPositioned*:
+      proc(self: ptr IMarkupPointer, pfPositioned: ptr WINBOOL): HRESULT {.stdcall.}
+    GetContainer*: proc(
+      self: ptr IMarkupPointer, ppContainer: ptr ptr IMarkupContainer
+    ): HRESULT {.stdcall.}
+    MoveAdjacentToElement*: proc(
+      self: ptr IMarkupPointer, pElement: ptr IHTMLElement, eAdj: ELEMENT_ADJACENCY
+    ): HRESULT {.stdcall.}
+    MoveToPointer*:
+      proc(self: ptr IMarkupPointer, pPointer: ptr IMarkupPointer): HRESULT {.stdcall.}
+    MoveToContainer*: proc(
+      self: ptr IMarkupPointer, pContainer: ptr IMarkupContainer, fAtStart: WINBOOL
+    ): HRESULT {.stdcall.}
+    Left*: proc(
+      self: ptr IMarkupPointer,
+      fMove: WINBOOL,
+      pContext: ptr MARKUP_CONTEXT_TYPE,
+      ppElement: ptr ptr IHTMLElement,
+      pcch: ptr LONG,
+      pchText: ptr OLECHAR,
+    ): HRESULT {.stdcall.}
+    Right*: proc(
+      self: ptr IMarkupPointer,
+      fMove: WINBOOL,
+      pContext: ptr MARKUP_CONTEXT_TYPE,
+      ppElement: ptr ptr IHTMLElement,
+      pcch: ptr LONG,
+      pchText: ptr OLECHAR,
+    ): HRESULT {.stdcall.}
+    CurrentScope*: proc(
+      self: ptr IMarkupPointer, ppElemCurrent: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
+    IsLeftOf*: proc(
+      self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    IsLeftOfOrEqualTo*: proc(
+      self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    IsRightOf*: proc(
+      self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    IsRightOfOrEqualTo*: proc(
+      self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    IsEqualTo*: proc(
+      self: ptr IMarkupPointer,
+      pPointerThat: ptr IMarkupPointer,
+      pfAreEqual: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+    MoveUnit*:
+      proc(self: ptr IMarkupPointer, muAction: MOVEUNIT_ACTION): HRESULT {.stdcall.}
+    FindText*: proc(
+      self: ptr IMarkupPointer,
+      pchFindText: ptr OLECHAR,
+      dwFlags: DWORD,
+      pIEndMatch: ptr IMarkupPointer,
+      pIEndSearch: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
+
   IMarkupServices* {.pure.} = object
     lpVtbl*: ptr IMarkupServicesVtbl
+
   IMarkupServicesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateMarkupPointer*: proc(self: ptr IMarkupServices, ppPointer: ptr ptr IMarkupPointer): HRESULT {.stdcall.}
-    CreateMarkupContainer*: proc(self: ptr IMarkupServices, ppMarkupContainer: ptr ptr IMarkupContainer): HRESULT {.stdcall.}
-    CreateElement*: proc(self: ptr IMarkupServices, tagID: ELEMENT_TAG_ID, pchAttributes: ptr OLECHAR, ppElement: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    CloneElement*: proc(self: ptr IMarkupServices, pElemCloneThis: ptr IHTMLElement, ppElementTheClone: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    InsertElement*: proc(self: ptr IMarkupServices, pElementInsert: ptr IHTMLElement, pPointerStart: ptr IMarkupPointer, pPointerFinish: ptr IMarkupPointer): HRESULT {.stdcall.}
-    RemoveElement*: proc(self: ptr IMarkupServices, pElementRemove: ptr IHTMLElement): HRESULT {.stdcall.}
-    Remove*: proc(self: ptr IMarkupServices, pPointerStart: ptr IMarkupPointer, pPointerFinish: ptr IMarkupPointer): HRESULT {.stdcall.}
-    Copy*: proc(self: ptr IMarkupServices, pPointerSourceStart: ptr IMarkupPointer, pPointerSourceFinish: ptr IMarkupPointer, pPointerTarget: ptr IMarkupPointer): HRESULT {.stdcall.}
-    Move*: proc(self: ptr IMarkupServices, pPointerSourceStart: ptr IMarkupPointer, pPointerSourceFinish: ptr IMarkupPointer, pPointerTarget: ptr IMarkupPointer): HRESULT {.stdcall.}
-    InsertText*: proc(self: ptr IMarkupServices, pchText: ptr OLECHAR, cch: LONG, pPointerTarget: ptr IMarkupPointer): HRESULT {.stdcall.}
-    ParseString*: proc(self: ptr IMarkupServices, pchHTML: ptr OLECHAR, dwFlags: DWORD, ppContainerResult: ptr ptr IMarkupContainer, ppPointerStart: ptr IMarkupPointer, ppPointerFinish: ptr IMarkupPointer): HRESULT {.stdcall.}
-    ParseGlobal*: proc(self: ptr IMarkupServices, hglobalHTML: HGLOBAL, dwFlags: DWORD, ppContainerResult: ptr ptr IMarkupContainer, pPointerStart: ptr IMarkupPointer, pPointerFinish: ptr IMarkupPointer): HRESULT {.stdcall.}
-    IsScopedElement*: proc(self: ptr IMarkupServices, pElement: ptr IHTMLElement, pfScoped: ptr WINBOOL): HRESULT {.stdcall.}
-    GetElementTagId*: proc(self: ptr IMarkupServices, pElement: ptr IHTMLElement, ptagId: ptr ELEMENT_TAG_ID): HRESULT {.stdcall.}
-    GetTagIDForName*: proc(self: ptr IMarkupServices, bstrName: BSTR, ptagId: ptr ELEMENT_TAG_ID): HRESULT {.stdcall.}
-    GetNameForTagID*: proc(self: ptr IMarkupServices, tagId: ELEMENT_TAG_ID, pbstrName: ptr BSTR): HRESULT {.stdcall.}
-    MovePointersToRange*: proc(self: ptr IMarkupServices, pIRange: ptr IHTMLTxtRange, pPointerStart: ptr IMarkupPointer, pPointerFinish: ptr IMarkupPointer): HRESULT {.stdcall.}
-    MoveRangeToPointers*: proc(self: ptr IMarkupServices, pPointerStart: ptr IMarkupPointer, pPointerFinish: ptr IMarkupPointer, pIRange: ptr IHTMLTxtRange): HRESULT {.stdcall.}
-    BeginUndoUnit*: proc(self: ptr IMarkupServices, pchTitle: ptr OLECHAR): HRESULT {.stdcall.}
+    CreateMarkupPointer*: proc(
+      self: ptr IMarkupServices, ppPointer: ptr ptr IMarkupPointer
+    ): HRESULT {.stdcall.}
+    CreateMarkupContainer*: proc(
+      self: ptr IMarkupServices, ppMarkupContainer: ptr ptr IMarkupContainer
+    ): HRESULT {.stdcall.}
+    CreateElement*: proc(
+      self: ptr IMarkupServices,
+      tagID: ELEMENT_TAG_ID,
+      pchAttributes: ptr OLECHAR,
+      ppElement: ptr ptr IHTMLElement,
+    ): HRESULT {.stdcall.}
+    CloneElement*: proc(
+      self: ptr IMarkupServices,
+      pElemCloneThis: ptr IHTMLElement,
+      ppElementTheClone: ptr ptr IHTMLElement,
+    ): HRESULT {.stdcall.}
+    InsertElement*: proc(
+      self: ptr IMarkupServices,
+      pElementInsert: ptr IHTMLElement,
+      pPointerStart: ptr IMarkupPointer,
+      pPointerFinish: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
+    RemoveElement*: proc(
+      self: ptr IMarkupServices, pElementRemove: ptr IHTMLElement
+    ): HRESULT {.stdcall.}
+    Remove*: proc(
+      self: ptr IMarkupServices,
+      pPointerStart: ptr IMarkupPointer,
+      pPointerFinish: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
+    Copy*: proc(
+      self: ptr IMarkupServices,
+      pPointerSourceStart: ptr IMarkupPointer,
+      pPointerSourceFinish: ptr IMarkupPointer,
+      pPointerTarget: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
+    Move*: proc(
+      self: ptr IMarkupServices,
+      pPointerSourceStart: ptr IMarkupPointer,
+      pPointerSourceFinish: ptr IMarkupPointer,
+      pPointerTarget: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
+    InsertText*: proc(
+      self: ptr IMarkupServices,
+      pchText: ptr OLECHAR,
+      cch: LONG,
+      pPointerTarget: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
+    ParseString*: proc(
+      self: ptr IMarkupServices,
+      pchHTML: ptr OLECHAR,
+      dwFlags: DWORD,
+      ppContainerResult: ptr ptr IMarkupContainer,
+      ppPointerStart: ptr IMarkupPointer,
+      ppPointerFinish: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
+    ParseGlobal*: proc(
+      self: ptr IMarkupServices,
+      hglobalHTML: HGLOBAL,
+      dwFlags: DWORD,
+      ppContainerResult: ptr ptr IMarkupContainer,
+      pPointerStart: ptr IMarkupPointer,
+      pPointerFinish: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
+    IsScopedElement*: proc(
+      self: ptr IMarkupServices, pElement: ptr IHTMLElement, pfScoped: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    GetElementTagId*: proc(
+      self: ptr IMarkupServices, pElement: ptr IHTMLElement, ptagId: ptr ELEMENT_TAG_ID
+    ): HRESULT {.stdcall.}
+    GetTagIDForName*: proc(
+      self: ptr IMarkupServices, bstrName: BSTR, ptagId: ptr ELEMENT_TAG_ID
+    ): HRESULT {.stdcall.}
+    GetNameForTagID*: proc(
+      self: ptr IMarkupServices, tagId: ELEMENT_TAG_ID, pbstrName: ptr BSTR
+    ): HRESULT {.stdcall.}
+    MovePointersToRange*: proc(
+      self: ptr IMarkupServices,
+      pIRange: ptr IHTMLTxtRange,
+      pPointerStart: ptr IMarkupPointer,
+      pPointerFinish: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
+    MoveRangeToPointers*: proc(
+      self: ptr IMarkupServices,
+      pPointerStart: ptr IMarkupPointer,
+      pPointerFinish: ptr IMarkupPointer,
+      pIRange: ptr IHTMLTxtRange,
+    ): HRESULT {.stdcall.}
+    BeginUndoUnit*:
+      proc(self: ptr IMarkupServices, pchTitle: ptr OLECHAR): HRESULT {.stdcall.}
     EndUndoUnit*: proc(self: ptr IMarkupServices): HRESULT {.stdcall.}
+
   ISegment* {.pure.} = object
     lpVtbl*: ptr ISegmentVtbl
+
   ISegmentVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetPointers*: proc(self: ptr ISegment, pIStart: ptr IMarkupPointer, pIEnd: ptr IMarkupPointer): HRESULT {.stdcall.}
+    GetPointers*: proc(
+      self: ptr ISegment, pIStart: ptr IMarkupPointer, pIEnd: ptr IMarkupPointer
+    ): HRESULT {.stdcall.}
+
   ISegmentListIterator* {.pure.} = object
     lpVtbl*: ptr ISegmentListIteratorVtbl
+
   ISegmentListIteratorVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Current*: proc(self: ptr ISegmentListIterator, ppISegment: ptr ptr ISegment): HRESULT {.stdcall.}
+    Current*: proc(
+      self: ptr ISegmentListIterator, ppISegment: ptr ptr ISegment
+    ): HRESULT {.stdcall.}
     First*: proc(self: ptr ISegmentListIterator): HRESULT {.stdcall.}
     IsDone*: proc(self: ptr ISegmentListIterator): HRESULT {.stdcall.}
     Advance*: proc(self: ptr ISegmentListIterator): HRESULT {.stdcall.}
+
   ISegmentList* {.pure.} = object
     lpVtbl*: ptr ISegmentListVtbl
+
   ISegmentListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateIterator*: proc(self: ptr ISegmentList, ppIIter: ptr ptr ISegmentListIterator): HRESULT {.stdcall.}
-    GetType*: proc(self: ptr ISegmentList, peType: ptr SELECTION_TYPE): HRESULT {.stdcall.}
+    CreateIterator*: proc(
+      self: ptr ISegmentList, ppIIter: ptr ptr ISegmentListIterator
+    ): HRESULT {.stdcall.}
+    GetType*:
+      proc(self: ptr ISegmentList, peType: ptr SELECTION_TYPE): HRESULT {.stdcall.}
     IsEmpty*: proc(self: ptr ISegmentList, pfEmpty: ptr WINBOOL): HRESULT {.stdcall.}
+
   IMarkupServices2* {.pure.} = object
     lpVtbl*: ptr IMarkupServices2Vtbl
+
   IMarkupServices2Vtbl* {.pure, inheritable.} = object of IMarkupServicesVtbl
-    ParseGlobalEx*: proc(self: ptr IMarkupServices2, hglobalHTML: HGLOBAL, dwFlags: DWORD, pContext: ptr IMarkupContainer, ppContainerResult: ptr ptr IMarkupContainer, pPointerStart: ptr IMarkupPointer, pPointerFinish: ptr IMarkupPointer): HRESULT {.stdcall.}
-    ValidateElements*: proc(self: ptr IMarkupServices2, pPointerStart: ptr IMarkupPointer, pPointerFinish: ptr IMarkupPointer, pPointerTarget: ptr IMarkupPointer, pPointerStatus: ptr IMarkupPointer, ppElemFailBottom: ptr ptr IHTMLElement, ppElemFailTop: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    SaveSegmentsToClipboard*: proc(self: ptr IMarkupServices2, pSegmentList: ptr ISegmentList, dwFlags: DWORD): HRESULT {.stdcall.}
+    ParseGlobalEx*: proc(
+      self: ptr IMarkupServices2,
+      hglobalHTML: HGLOBAL,
+      dwFlags: DWORD,
+      pContext: ptr IMarkupContainer,
+      ppContainerResult: ptr ptr IMarkupContainer,
+      pPointerStart: ptr IMarkupPointer,
+      pPointerFinish: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
+    ValidateElements*: proc(
+      self: ptr IMarkupServices2,
+      pPointerStart: ptr IMarkupPointer,
+      pPointerFinish: ptr IMarkupPointer,
+      pPointerTarget: ptr IMarkupPointer,
+      pPointerStatus: ptr IMarkupPointer,
+      ppElemFailBottom: ptr ptr IHTMLElement,
+      ppElemFailTop: ptr ptr IHTMLElement,
+    ): HRESULT {.stdcall.}
+    SaveSegmentsToClipboard*: proc(
+      self: ptr IMarkupServices2, pSegmentList: ptr ISegmentList, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
+
   IHTMLChangeSink* {.pure.} = object
     lpVtbl*: ptr IHTMLChangeSinkVtbl
+
   IHTMLChangeSinkVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Notify*: proc(self: ptr IHTMLChangeSink): HRESULT {.stdcall.}
+
   IHTMLChangeLog* {.pure.} = object
     lpVtbl*: ptr IHTMLChangeLogVtbl
+
   IHTMLChangeLogVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetNextChange*: proc(self: ptr IHTMLChangeLog, pbBuffer: ptr BYTE, nBufferSize: LONG, pnRecordLength: ptr LONG): HRESULT {.stdcall.}
+    GetNextChange*: proc(
+      self: ptr IHTMLChangeLog,
+      pbBuffer: ptr BYTE,
+      nBufferSize: LONG,
+      pnRecordLength: ptr LONG,
+    ): HRESULT {.stdcall.}
+
   IMarkupContainer2* {.pure.} = object
     lpVtbl*: ptr IMarkupContainer2Vtbl
+
   IMarkupContainer2Vtbl* {.pure, inheritable.} = object of IMarkupContainerVtbl
-    CreateChangeLog*: proc(self: ptr IMarkupContainer2, pChangeSink: ptr IHTMLChangeSink, ppChangeLog: ptr ptr IHTMLChangeLog, fForward: WINBOOL, fBackward: WINBOOL): HRESULT {.stdcall.}
-    RegisterForDirtyRange*: proc(self: ptr IMarkupContainer2, pChangeSink: ptr IHTMLChangeSink, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
-    UnRegisterForDirtyRange*: proc(self: ptr IMarkupContainer2, dwCookie: DWORD): HRESULT {.stdcall.}
-    GetAndClearDirtyRange*: proc(self: ptr IMarkupContainer2, dwCookie: DWORD, pIPointerBegin: ptr IMarkupPointer, pIPointerEnd: ptr IMarkupPointer): HRESULT {.stdcall.}
+    CreateChangeLog*: proc(
+      self: ptr IMarkupContainer2,
+      pChangeSink: ptr IHTMLChangeSink,
+      ppChangeLog: ptr ptr IHTMLChangeLog,
+      fForward: WINBOOL,
+      fBackward: WINBOOL,
+    ): HRESULT {.stdcall.}
+    RegisterForDirtyRange*: proc(
+      self: ptr IMarkupContainer2,
+      pChangeSink: ptr IHTMLChangeSink,
+      pdwCookie: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    UnRegisterForDirtyRange*:
+      proc(self: ptr IMarkupContainer2, dwCookie: DWORD): HRESULT {.stdcall.}
+    GetAndClearDirtyRange*: proc(
+      self: ptr IMarkupContainer2,
+      dwCookie: DWORD,
+      pIPointerBegin: ptr IMarkupPointer,
+      pIPointerEnd: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
     GetVersionNumber*: proc(self: ptr IMarkupContainer2): LONG {.stdcall.}
-    GetMasterElement*: proc(self: ptr IMarkupContainer2, ppElementMaster: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    GetMasterElement*: proc(
+      self: ptr IMarkupContainer2, ppElementMaster: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
+
   IHTMLChangePlayback* {.pure.} = object
     lpVtbl*: ptr IHTMLChangePlaybackVtbl
+
   IHTMLChangePlaybackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ExecChange*: proc(self: ptr IHTMLChangePlayback, pbRecord: ptr BYTE, fForward: WINBOOL): HRESULT {.stdcall.}
+    ExecChange*: proc(
+      self: ptr IHTMLChangePlayback, pbRecord: ptr BYTE, fForward: WINBOOL
+    ): HRESULT {.stdcall.}
+
   IMarkupPointer2* {.pure.} = object
     lpVtbl*: ptr IMarkupPointer2Vtbl
+
   IMarkupPointer2Vtbl* {.pure, inheritable.} = object of IMarkupPointerVtbl
-    IsAtWordBreak*: proc(self: ptr IMarkupPointer2, pfAtBreak: ptr WINBOOL): HRESULT {.stdcall.}
-    GetMarkupPosition*: proc(self: ptr IMarkupPointer2, plMP: ptr LONG): HRESULT {.stdcall.}
-    MoveToMarkupPosition*: proc(self: ptr IMarkupPointer2, pContainer: ptr IMarkupContainer, lMP: LONG): HRESULT {.stdcall.}
-    MoveUnitBounded*: proc(self: ptr IMarkupPointer2, muAction: MOVEUNIT_ACTION, pIBoundary: ptr IMarkupPointer): HRESULT {.stdcall.}
-    IsInsideURL*: proc(self: ptr IMarkupPointer2, pRight: ptr IMarkupPointer, pfResult: ptr WINBOOL): HRESULT {.stdcall.}
-    MoveToContent*: proc(self: ptr IMarkupPointer2, pIElement: ptr IHTMLElement, fAtStart: WINBOOL): HRESULT {.stdcall.}
+    IsAtWordBreak*:
+      proc(self: ptr IMarkupPointer2, pfAtBreak: ptr WINBOOL): HRESULT {.stdcall.}
+    GetMarkupPosition*:
+      proc(self: ptr IMarkupPointer2, plMP: ptr LONG): HRESULT {.stdcall.}
+    MoveToMarkupPosition*: proc(
+      self: ptr IMarkupPointer2, pContainer: ptr IMarkupContainer, lMP: LONG
+    ): HRESULT {.stdcall.}
+    MoveUnitBounded*: proc(
+      self: ptr IMarkupPointer2,
+      muAction: MOVEUNIT_ACTION,
+      pIBoundary: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
+    IsInsideURL*: proc(
+      self: ptr IMarkupPointer2, pRight: ptr IMarkupPointer, pfResult: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    MoveToContent*: proc(
+      self: ptr IMarkupPointer2, pIElement: ptr IHTMLElement, fAtStart: WINBOOL
+    ): HRESULT {.stdcall.}
+
   IMarkupTextFrags* {.pure.} = object
     lpVtbl*: ptr IMarkupTextFragsVtbl
+
   IMarkupTextFragsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetTextFragCount*: proc(self: ptr IMarkupTextFrags, pcFrags: ptr LONG): HRESULT {.stdcall.}
-    GetTextFrag*: proc(self: ptr IMarkupTextFrags, iFrag: LONG, pbstrFrag: ptr BSTR, pPointerFrag: ptr IMarkupPointer): HRESULT {.stdcall.}
+    GetTextFragCount*:
+      proc(self: ptr IMarkupTextFrags, pcFrags: ptr LONG): HRESULT {.stdcall.}
+    GetTextFrag*: proc(
+      self: ptr IMarkupTextFrags,
+      iFrag: LONG,
+      pbstrFrag: ptr BSTR,
+      pPointerFrag: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
     RemoveTextFrag*: proc(self: ptr IMarkupTextFrags, iFrag: LONG): HRESULT {.stdcall.}
-    InsertTextFrag*: proc(self: ptr IMarkupTextFrags, iFrag: LONG, bstrInsert: BSTR, pPointerInsert: ptr IMarkupPointer): HRESULT {.stdcall.}
-    FindTextFragFromMarkupPointer*: proc(self: ptr IMarkupTextFrags, pPointerFind: ptr IMarkupPointer, piFrag: ptr LONG, pfFragFound: ptr WINBOOL): HRESULT {.stdcall.}
+    InsertTextFrag*: proc(
+      self: ptr IMarkupTextFrags,
+      iFrag: LONG,
+      bstrInsert: BSTR,
+      pPointerInsert: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
+    FindTextFragFromMarkupPointer*: proc(
+      self: ptr IMarkupTextFrags,
+      pPointerFind: ptr IMarkupPointer,
+      piFrag: ptr LONG,
+      pfFragFound: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+
   IXMLGenericParse* {.pure.} = object
     lpVtbl*: ptr IXMLGenericParseVtbl
+
   IXMLGenericParseVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetGenericParse*: proc(self: ptr IXMLGenericParse, fDoGeneric: VARIANT_BOOL): HRESULT {.stdcall.}
+    SetGenericParse*:
+      proc(self: ptr IXMLGenericParse, fDoGeneric: VARIANT_BOOL): HRESULT {.stdcall.}
+
   IHTMLEditHost* {.pure.} = object
     lpVtbl*: ptr IHTMLEditHostVtbl
+
   IHTMLEditHostVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SnapRect*: proc(self: ptr IHTMLEditHost, pIElement: ptr IHTMLElement, prcNew: ptr RECT, eHandle: ELEMENT_CORNER): HRESULT {.stdcall.}
+    SnapRect*: proc(
+      self: ptr IHTMLEditHost,
+      pIElement: ptr IHTMLElement,
+      prcNew: ptr RECT,
+      eHandle: ELEMENT_CORNER,
+    ): HRESULT {.stdcall.}
+
   IHTMLEditHost2* {.pure.} = object
     lpVtbl*: ptr IHTMLEditHost2Vtbl
+
   IHTMLEditHost2Vtbl* {.pure, inheritable.} = object of IHTMLEditHostVtbl
     PreDrag*: proc(self: ptr IHTMLEditHost2): HRESULT {.stdcall.}
+
   ISequenceNumber* {.pure.} = object
     lpVtbl*: ptr ISequenceNumberVtbl
+
   ISequenceNumberVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSequenceNumber*: proc(self: ptr ISequenceNumber, nCurrent: LONG, pnNew: ptr LONG): HRESULT {.stdcall.}
+    GetSequenceNumber*: proc(
+      self: ptr ISequenceNumber, nCurrent: LONG, pnNew: ptr LONG
+    ): HRESULT {.stdcall.}
+
   IIMEServices* {.pure.} = object
     lpVtbl*: ptr IIMEServicesVtbl
+
   IIMEServicesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetActiveIMM*: proc(self: ptr IIMEServices, ppActiveIMM: ptr ptr IActiveIMMApp): HRESULT {.stdcall.}
+    GetActiveIMM*: proc(
+      self: ptr IIMEServices, ppActiveIMM: ptr ptr IActiveIMMApp
+    ): HRESULT {.stdcall.}
+
   ILineInfo* {.pure.} = object
     lpVtbl*: ptr ILineInfoVtbl
+
   ILineInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     get_x*: proc(self: ptr ILineInfo, p: ptr LONG): HRESULT {.stdcall.}
     get_baseLine*: proc(self: ptr ILineInfo, p: ptr LONG): HRESULT {.stdcall.}
     get_textDescent*: proc(self: ptr ILineInfo, p: ptr LONG): HRESULT {.stdcall.}
     get_textHeight*: proc(self: ptr ILineInfo, p: ptr LONG): HRESULT {.stdcall.}
     get_lineDirection*: proc(self: ptr ILineInfo, p: ptr LONG): HRESULT {.stdcall.}
+
   IDisplayPointer* {.pure.} = object
     lpVtbl*: ptr IDisplayPointerVtbl
+
   IDisplayPointerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    MoveToPoint*: proc(self: ptr IDisplayPointer, ptPoint: POINT, eCoordSystem: COORD_SYSTEM, pElementContext: ptr IHTMLElement, dwHitTestOptions: DWORD, pdwHitTestResults: ptr DWORD): HRESULT {.stdcall.}
-    MoveUnit*: proc(self: ptr IDisplayPointer, eMoveUnit: DISPLAY_MOVEUNIT, lXPos: LONG): HRESULT {.stdcall.}
-    PositionMarkupPointer*: proc(self: ptr IDisplayPointer, pMarkupPointer: ptr IMarkupPointer): HRESULT {.stdcall.}
-    MoveToPointer*: proc(self: ptr IDisplayPointer, pDispPointer: ptr IDisplayPointer): HRESULT {.stdcall.}
-    SetPointerGravity*: proc(self: ptr IDisplayPointer, eGravity: POINTER_GRAVITY): HRESULT {.stdcall.}
-    GetPointerGravity*: proc(self: ptr IDisplayPointer, peGravity: ptr POINTER_GRAVITY): HRESULT {.stdcall.}
-    SetDisplayGravity*: proc(self: ptr IDisplayPointer, eGravity: DISPLAY_GRAVITY): HRESULT {.stdcall.}
-    GetDisplayGravity*: proc(self: ptr IDisplayPointer, peGravity: ptr DISPLAY_GRAVITY): HRESULT {.stdcall.}
-    IsPositioned*: proc(self: ptr IDisplayPointer, pfPositioned: ptr WINBOOL): HRESULT {.stdcall.}
+    MoveToPoint*: proc(
+      self: ptr IDisplayPointer,
+      ptPoint: POINT,
+      eCoordSystem: COORD_SYSTEM,
+      pElementContext: ptr IHTMLElement,
+      dwHitTestOptions: DWORD,
+      pdwHitTestResults: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    MoveUnit*: proc(
+      self: ptr IDisplayPointer, eMoveUnit: DISPLAY_MOVEUNIT, lXPos: LONG
+    ): HRESULT {.stdcall.}
+    PositionMarkupPointer*: proc(
+      self: ptr IDisplayPointer, pMarkupPointer: ptr IMarkupPointer
+    ): HRESULT {.stdcall.}
+    MoveToPointer*: proc(
+      self: ptr IDisplayPointer, pDispPointer: ptr IDisplayPointer
+    ): HRESULT {.stdcall.}
+    SetPointerGravity*:
+      proc(self: ptr IDisplayPointer, eGravity: POINTER_GRAVITY): HRESULT {.stdcall.}
+    GetPointerGravity*: proc(
+      self: ptr IDisplayPointer, peGravity: ptr POINTER_GRAVITY
+    ): HRESULT {.stdcall.}
+    SetDisplayGravity*:
+      proc(self: ptr IDisplayPointer, eGravity: DISPLAY_GRAVITY): HRESULT {.stdcall.}
+    GetDisplayGravity*: proc(
+      self: ptr IDisplayPointer, peGravity: ptr DISPLAY_GRAVITY
+    ): HRESULT {.stdcall.}
+    IsPositioned*:
+      proc(self: ptr IDisplayPointer, pfPositioned: ptr WINBOOL): HRESULT {.stdcall.}
     Unposition*: proc(self: ptr IDisplayPointer): HRESULT {.stdcall.}
-    IsEqualTo*: proc(self: ptr IDisplayPointer, pDispPointer: ptr IDisplayPointer, pfIsEqual: ptr WINBOOL): HRESULT {.stdcall.}
-    IsLeftOf*: proc(self: ptr IDisplayPointer, pDispPointer: ptr IDisplayPointer, pfIsLeftOf: ptr WINBOOL): HRESULT {.stdcall.}
-    IsRightOf*: proc(self: ptr IDisplayPointer, pDispPointer: ptr IDisplayPointer, pfIsRightOf: ptr WINBOOL): HRESULT {.stdcall.}
+    IsEqualTo*: proc(
+      self: ptr IDisplayPointer,
+      pDispPointer: ptr IDisplayPointer,
+      pfIsEqual: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+    IsLeftOf*: proc(
+      self: ptr IDisplayPointer,
+      pDispPointer: ptr IDisplayPointer,
+      pfIsLeftOf: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+    IsRightOf*: proc(
+      self: ptr IDisplayPointer,
+      pDispPointer: ptr IDisplayPointer,
+      pfIsRightOf: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
     IsAtBOL*: proc(self: ptr IDisplayPointer, pfBOL: ptr WINBOOL): HRESULT {.stdcall.}
-    MoveToMarkupPointer*: proc(self: ptr IDisplayPointer, pPointer: ptr IMarkupPointer, pDispLineContext: ptr IDisplayPointer): HRESULT {.stdcall.}
+    MoveToMarkupPointer*: proc(
+      self: ptr IDisplayPointer,
+      pPointer: ptr IMarkupPointer,
+      pDispLineContext: ptr IDisplayPointer,
+    ): HRESULT {.stdcall.}
     ScrollIntoView*: proc(self: ptr IDisplayPointer): HRESULT {.stdcall.}
-    GetLineInfo*: proc(self: ptr IDisplayPointer, ppLineInfo: ptr ptr ILineInfo): HRESULT {.stdcall.}
-    GetFlowElement*: proc(self: ptr IDisplayPointer, ppLayoutElement: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    QueryBreaks*: proc(self: ptr IDisplayPointer, pdwBreaks: ptr DWORD): HRESULT {.stdcall.}
+    GetLineInfo*: proc(
+      self: ptr IDisplayPointer, ppLineInfo: ptr ptr ILineInfo
+    ): HRESULT {.stdcall.}
+    GetFlowElement*: proc(
+      self: ptr IDisplayPointer, ppLayoutElement: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
+    QueryBreaks*:
+      proc(self: ptr IDisplayPointer, pdwBreaks: ptr DWORD): HRESULT {.stdcall.}
+
   IHTMLCaret* {.pure.} = object
     lpVtbl*: ptr IHTMLCaretVtbl
+
   IHTMLCaretVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    MoveCaretToPointer*: proc(self: ptr IHTMLCaret, pDispPointer: ptr IDisplayPointer, fScrollIntoView: WINBOOL, eDir: CARET_DIRECTION): HRESULT {.stdcall.}
-    MoveCaretToPointerEx*: proc(self: ptr IHTMLCaret, pDispPointer: ptr IDisplayPointer, fVisible: WINBOOL, fScrollIntoView: WINBOOL, eDir: CARET_DIRECTION): HRESULT {.stdcall.}
-    MoveMarkupPointerToCaret*: proc(self: ptr IHTMLCaret, pIMarkupPointer: ptr IMarkupPointer): HRESULT {.stdcall.}
-    MoveDisplayPointerToCaret*: proc(self: ptr IHTMLCaret, pDispPointer: ptr IDisplayPointer): HRESULT {.stdcall.}
+    MoveCaretToPointer*: proc(
+      self: ptr IHTMLCaret,
+      pDispPointer: ptr IDisplayPointer,
+      fScrollIntoView: WINBOOL,
+      eDir: CARET_DIRECTION,
+    ): HRESULT {.stdcall.}
+    MoveCaretToPointerEx*: proc(
+      self: ptr IHTMLCaret,
+      pDispPointer: ptr IDisplayPointer,
+      fVisible: WINBOOL,
+      fScrollIntoView: WINBOOL,
+      eDir: CARET_DIRECTION,
+    ): HRESULT {.stdcall.}
+    MoveMarkupPointerToCaret*: proc(
+      self: ptr IHTMLCaret, pIMarkupPointer: ptr IMarkupPointer
+    ): HRESULT {.stdcall.}
+    MoveDisplayPointerToCaret*:
+      proc(self: ptr IHTMLCaret, pDispPointer: ptr IDisplayPointer): HRESULT {.stdcall.}
     IsVisible*: proc(self: ptr IHTMLCaret, pIsVisible: ptr WINBOOL): HRESULT {.stdcall.}
     Show*: proc(self: ptr IHTMLCaret, fScrollIntoView: WINBOOL): HRESULT {.stdcall.}
     Hide*: proc(self: ptr IHTMLCaret): HRESULT {.stdcall.}
-    InsertText*: proc(self: ptr IHTMLCaret, pText: ptr OLECHAR, lLen: LONG): HRESULT {.stdcall.}
+    InsertText*:
+      proc(self: ptr IHTMLCaret, pText: ptr OLECHAR, lLen: LONG): HRESULT {.stdcall.}
     ScrollIntoView*: proc(self: ptr IHTMLCaret): HRESULT {.stdcall.}
-    GetLocation*: proc(self: ptr IHTMLCaret, pPoint: ptr POINT, fTranslate: WINBOOL): HRESULT {.stdcall.}
-    GetCaretDirection*: proc(self: ptr IHTMLCaret, peDir: ptr CARET_DIRECTION): HRESULT {.stdcall.}
-    SetCaretDirection*: proc(self: ptr IHTMLCaret, eDir: CARET_DIRECTION): HRESULT {.stdcall.}
+    GetLocation*: proc(
+      self: ptr IHTMLCaret, pPoint: ptr POINT, fTranslate: WINBOOL
+    ): HRESULT {.stdcall.}
+    GetCaretDirection*:
+      proc(self: ptr IHTMLCaret, peDir: ptr CARET_DIRECTION): HRESULT {.stdcall.}
+    SetCaretDirection*:
+      proc(self: ptr IHTMLCaret, eDir: CARET_DIRECTION): HRESULT {.stdcall.}
+
   IHighlightSegment* {.pure.} = object
     lpVtbl*: ptr IHighlightSegmentVtbl
+
   IHighlightSegmentVtbl* {.pure, inheritable.} = object of ISegmentVtbl
   IHighlightRenderingServices* {.pure.} = object
     lpVtbl*: ptr IHighlightRenderingServicesVtbl
+
   IHighlightRenderingServicesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AddSegment*: proc(self: ptr IHighlightRenderingServices, pDispPointerStart: ptr IDisplayPointer, pDispPointerEnd: ptr IDisplayPointer, pIRenderStyle: ptr IHTMLRenderStyle, ppISegment: ptr ptr IHighlightSegment): HRESULT {.stdcall.}
-    MoveSegmentToPointers*: proc(self: ptr IHighlightRenderingServices, pISegment: ptr IHighlightSegment, pDispPointerStart: ptr IDisplayPointer, pDispPointerEnd: ptr IDisplayPointer): HRESULT {.stdcall.}
-    RemoveSegment*: proc(self: ptr IHighlightRenderingServices, pISegment: ptr IHighlightSegment): HRESULT {.stdcall.}
+    AddSegment*: proc(
+      self: ptr IHighlightRenderingServices,
+      pDispPointerStart: ptr IDisplayPointer,
+      pDispPointerEnd: ptr IDisplayPointer,
+      pIRenderStyle: ptr IHTMLRenderStyle,
+      ppISegment: ptr ptr IHighlightSegment,
+    ): HRESULT {.stdcall.}
+    MoveSegmentToPointers*: proc(
+      self: ptr IHighlightRenderingServices,
+      pISegment: ptr IHighlightSegment,
+      pDispPointerStart: ptr IDisplayPointer,
+      pDispPointerEnd: ptr IDisplayPointer,
+    ): HRESULT {.stdcall.}
+    RemoveSegment*: proc(
+      self: ptr IHighlightRenderingServices, pISegment: ptr IHighlightSegment
+    ): HRESULT {.stdcall.}
+
   ISelectionServicesListener* {.pure.} = object
     lpVtbl*: ptr ISelectionServicesListenerVtbl
+
   ISelectionServicesListenerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     BeginSelectionUndo*: proc(self: ptr ISelectionServicesListener): HRESULT {.stdcall.}
     EndSelectionUndo*: proc(self: ptr ISelectionServicesListener): HRESULT {.stdcall.}
-    OnSelectedElementExit*: proc(self: ptr ISelectionServicesListener, pIElementStart: ptr IMarkupPointer, pIElementEnd: ptr IMarkupPointer, pIElementContentStart: ptr IMarkupPointer, pIElementContentEnd: ptr IMarkupPointer): HRESULT {.stdcall.}
-    OnChangeType*: proc(self: ptr ISelectionServicesListener, eType: SELECTION_TYPE, pIListener: ptr ISelectionServicesListener): HRESULT {.stdcall.}
-    GetTypeDetail*: proc(self: ptr ISelectionServicesListener, pTypeDetail: ptr BSTR): HRESULT {.stdcall.}
+    OnSelectedElementExit*: proc(
+      self: ptr ISelectionServicesListener,
+      pIElementStart: ptr IMarkupPointer,
+      pIElementEnd: ptr IMarkupPointer,
+      pIElementContentStart: ptr IMarkupPointer,
+      pIElementContentEnd: ptr IMarkupPointer,
+    ): HRESULT {.stdcall.}
+    OnChangeType*: proc(
+      self: ptr ISelectionServicesListener,
+      eType: SELECTION_TYPE,
+      pIListener: ptr ISelectionServicesListener,
+    ): HRESULT {.stdcall.}
+    GetTypeDetail*: proc(
+      self: ptr ISelectionServicesListener, pTypeDetail: ptr BSTR
+    ): HRESULT {.stdcall.}
+
   IElementSegment* {.pure.} = object
     lpVtbl*: ptr IElementSegmentVtbl
+
   IElementSegmentVtbl* {.pure, inheritable.} = object of ISegmentVtbl
-    GetElement*: proc(self: ptr IElementSegment, ppIElement: ptr ptr IHTMLElement): HRESULT {.stdcall.}
+    GetElement*: proc(
+      self: ptr IElementSegment, ppIElement: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
     SetPrimary*: proc(self: ptr IElementSegment, fPrimary: WINBOOL): HRESULT {.stdcall.}
-    IsPrimary*: proc(self: ptr IElementSegment, pfPrimary: ptr WINBOOL): HRESULT {.stdcall.}
+    IsPrimary*:
+      proc(self: ptr IElementSegment, pfPrimary: ptr WINBOOL): HRESULT {.stdcall.}
+
   ISelectionServices* {.pure.} = object
     lpVtbl*: ptr ISelectionServicesVtbl
+
   ISelectionServicesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetSelectionType*: proc(self: ptr ISelectionServices, eType: SELECTION_TYPE, pIListener: ptr ISelectionServicesListener): HRESULT {.stdcall.}
-    GetMarkupContainer*: proc(self: ptr ISelectionServices, ppIContainer: ptr ptr IMarkupContainer): HRESULT {.stdcall.}
-    AddSegment*: proc(self: ptr ISelectionServices, pIStart: ptr IMarkupPointer, pIEnd: ptr IMarkupPointer, ppISegmentAdded: ptr ptr ISegment): HRESULT {.stdcall.}
-    AddElementSegment*: proc(self: ptr ISelectionServices, pIElement: ptr IHTMLElement, ppISegmentAdded: ptr ptr IElementSegment): HRESULT {.stdcall.}
-    RemoveSegment*: proc(self: ptr ISelectionServices, pISegment: ptr ISegment): HRESULT {.stdcall.}
-    GetSelectionServicesListener*: proc(self: ptr ISelectionServices, ppISelectionServicesListener: ptr ptr ISelectionServicesListener): HRESULT {.stdcall.}
+    SetSelectionType*: proc(
+      self: ptr ISelectionServices,
+      eType: SELECTION_TYPE,
+      pIListener: ptr ISelectionServicesListener,
+    ): HRESULT {.stdcall.}
+    GetMarkupContainer*: proc(
+      self: ptr ISelectionServices, ppIContainer: ptr ptr IMarkupContainer
+    ): HRESULT {.stdcall.}
+    AddSegment*: proc(
+      self: ptr ISelectionServices,
+      pIStart: ptr IMarkupPointer,
+      pIEnd: ptr IMarkupPointer,
+      ppISegmentAdded: ptr ptr ISegment,
+    ): HRESULT {.stdcall.}
+    AddElementSegment*: proc(
+      self: ptr ISelectionServices,
+      pIElement: ptr IHTMLElement,
+      ppISegmentAdded: ptr ptr IElementSegment,
+    ): HRESULT {.stdcall.}
+    RemoveSegment*:
+      proc(self: ptr ISelectionServices, pISegment: ptr ISegment): HRESULT {.stdcall.}
+    GetSelectionServicesListener*: proc(
+      self: ptr ISelectionServices,
+      ppISelectionServicesListener: ptr ptr ISelectionServicesListener,
+    ): HRESULT {.stdcall.}
+
   IHTMLEditDesigner* {.pure.} = object
     lpVtbl*: ptr IHTMLEditDesignerVtbl
+
   IHTMLEditDesignerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    PreHandleEvent*: proc(self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj): HRESULT {.stdcall.}
-    PostHandleEvent*: proc(self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj): HRESULT {.stdcall.}
-    TranslateAccelerator*: proc(self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj): HRESULT {.stdcall.}
-    PostEditorEventNotify*: proc(self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj): HRESULT {.stdcall.}
+    PreHandleEvent*: proc(
+      self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj
+    ): HRESULT {.stdcall.}
+    PostHandleEvent*: proc(
+      self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj
+    ): HRESULT {.stdcall.}
+    TranslateAccelerator*: proc(
+      self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj
+    ): HRESULT {.stdcall.}
+    PostEditorEventNotify*: proc(
+      self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj
+    ): HRESULT {.stdcall.}
+
   IHTMLEditServices* {.pure.} = object
     lpVtbl*: ptr IHTMLEditServicesVtbl
+
   IHTMLEditServicesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AddDesigner*: proc(self: ptr IHTMLEditServices, pIDesigner: ptr IHTMLEditDesigner): HRESULT {.stdcall.}
-    RemoveDesigner*: proc(self: ptr IHTMLEditServices, pIDesigner: ptr IHTMLEditDesigner): HRESULT {.stdcall.}
-    GetSelectionServices*: proc(self: ptr IHTMLEditServices, pIContainer: ptr IMarkupContainer, ppSelSvc: ptr ptr ISelectionServices): HRESULT {.stdcall.}
-    MoveToSelectionAnchor*: proc(self: ptr IHTMLEditServices, pIStartAnchor: ptr IMarkupPointer): HRESULT {.stdcall.}
-    MoveToSelectionEnd*: proc(self: ptr IHTMLEditServices, pIEndAnchor: ptr IMarkupPointer): HRESULT {.stdcall.}
-    SelectRange*: proc(self: ptr IHTMLEditServices, pStart: ptr IMarkupPointer, pEnd: ptr IMarkupPointer, eType: SELECTION_TYPE): HRESULT {.stdcall.}
+    AddDesigner*: proc(
+      self: ptr IHTMLEditServices, pIDesigner: ptr IHTMLEditDesigner
+    ): HRESULT {.stdcall.}
+    RemoveDesigner*: proc(
+      self: ptr IHTMLEditServices, pIDesigner: ptr IHTMLEditDesigner
+    ): HRESULT {.stdcall.}
+    GetSelectionServices*: proc(
+      self: ptr IHTMLEditServices,
+      pIContainer: ptr IMarkupContainer,
+      ppSelSvc: ptr ptr ISelectionServices,
+    ): HRESULT {.stdcall.}
+    MoveToSelectionAnchor*: proc(
+      self: ptr IHTMLEditServices, pIStartAnchor: ptr IMarkupPointer
+    ): HRESULT {.stdcall.}
+    MoveToSelectionEnd*: proc(
+      self: ptr IHTMLEditServices, pIEndAnchor: ptr IMarkupPointer
+    ): HRESULT {.stdcall.}
+    SelectRange*: proc(
+      self: ptr IHTMLEditServices,
+      pStart: ptr IMarkupPointer,
+      pEnd: ptr IMarkupPointer,
+      eType: SELECTION_TYPE,
+    ): HRESULT {.stdcall.}
+
   IHTMLEditServices2* {.pure.} = object
     lpVtbl*: ptr IHTMLEditServices2Vtbl
+
   IHTMLEditServices2Vtbl* {.pure, inheritable.} = object of IHTMLEditServicesVtbl
-    MoveToSelectionAnchorEx*: proc(self: ptr IHTMLEditServices2, pIStartAnchor: ptr IDisplayPointer): HRESULT {.stdcall.}
-    MoveToSelectionEndEx*: proc(self: ptr IHTMLEditServices2, pIEndAnchor: ptr IDisplayPointer): HRESULT {.stdcall.}
-    FreezeVirtualCaretPos*: proc(self: ptr IHTMLEditServices2, fReCompute: WINBOOL): HRESULT {.stdcall.}
-    UnFreezeVirtualCaretPos*: proc(self: ptr IHTMLEditServices2, fReset: WINBOOL): HRESULT {.stdcall.}
+    MoveToSelectionAnchorEx*: proc(
+      self: ptr IHTMLEditServices2, pIStartAnchor: ptr IDisplayPointer
+    ): HRESULT {.stdcall.}
+    MoveToSelectionEndEx*: proc(
+      self: ptr IHTMLEditServices2, pIEndAnchor: ptr IDisplayPointer
+    ): HRESULT {.stdcall.}
+    FreezeVirtualCaretPos*:
+      proc(self: ptr IHTMLEditServices2, fReCompute: WINBOOL): HRESULT {.stdcall.}
+    UnFreezeVirtualCaretPos*:
+      proc(self: ptr IHTMLEditServices2, fReset: WINBOOL): HRESULT {.stdcall.}
+
   IHTMLComputedStyle* {.pure.} = object
     lpVtbl*: ptr IHTMLComputedStyleVtbl
+
   IHTMLComputedStyleVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_bold*: proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_italic*: proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_underline*: proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_overline*: proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_strikeOut*: proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_subScript*: proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_superScript*: proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_explicitFace*: proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_fontWeight*: proc(self: ptr IHTMLComputedStyle, p: ptr LONG): HRESULT {.stdcall.}
+    get_bold*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_italic*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_underline*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_overline*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_strikeOut*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_subScript*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_superScript*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_explicitFace*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_fontWeight*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr LONG): HRESULT {.stdcall.}
     get_fontSize*: proc(self: ptr IHTMLComputedStyle, p: ptr LONG): HRESULT {.stdcall.}
     get_fontName*: proc(self: ptr IHTMLComputedStyle, p: ptr TCHAR): HRESULT {.stdcall.}
-    get_hasBgColor*: proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_textColor*: proc(self: ptr IHTMLComputedStyle, p: ptr DWORD): HRESULT {.stdcall.}
-    get_backgroundColor*: proc(self: ptr IHTMLComputedStyle, p: ptr DWORD): HRESULT {.stdcall.}
-    get_preFormatted*: proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_direction*: proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_blockDirection*: proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_OL*: proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    IsEqual*: proc(self: ptr IHTMLComputedStyle, pComputedStyle: ptr IHTMLComputedStyle, pfEqual: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_hasBgColor*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_textColor*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr DWORD): HRESULT {.stdcall.}
+    get_backgroundColor*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr DWORD): HRESULT {.stdcall.}
+    get_preFormatted*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_direction*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_blockDirection*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_OL*:
+      proc(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    IsEqual*: proc(
+      self: ptr IHTMLComputedStyle,
+      pComputedStyle: ptr IHTMLComputedStyle,
+      pfEqual: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+
   IDisplayServices* {.pure.} = object
     lpVtbl*: ptr IDisplayServicesVtbl
+
   IDisplayServicesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateDisplayPointer*: proc(self: ptr IDisplayServices, ppDispPointer: ptr ptr IDisplayPointer): HRESULT {.stdcall.}
-    TransformRect*: proc(self: ptr IDisplayServices, pRect: ptr RECT, eSource: COORD_SYSTEM, eDestination: COORD_SYSTEM, pIElement: ptr IHTMLElement): HRESULT {.stdcall.}
-    TransformPoint*: proc(self: ptr IDisplayServices, pPoint: ptr POINT, eSource: COORD_SYSTEM, eDestination: COORD_SYSTEM, pIElement: ptr IHTMLElement): HRESULT {.stdcall.}
-    GetCaret*: proc(self: ptr IDisplayServices, ppCaret: ptr ptr IHTMLCaret): HRESULT {.stdcall.}
-    GetComputedStyle*: proc(self: ptr IDisplayServices, pPointer: ptr IMarkupPointer, ppComputedStyle: ptr ptr IHTMLComputedStyle): HRESULT {.stdcall.}
-    ScrollRectIntoView*: proc(self: ptr IDisplayServices, pIElement: ptr IHTMLElement, rect: RECT): HRESULT {.stdcall.}
-    HasFlowLayout*: proc(self: ptr IDisplayServices, pIElement: ptr IHTMLElement, pfHasFlowLayout: ptr WINBOOL): HRESULT {.stdcall.}
+    CreateDisplayPointer*: proc(
+      self: ptr IDisplayServices, ppDispPointer: ptr ptr IDisplayPointer
+    ): HRESULT {.stdcall.}
+    TransformRect*: proc(
+      self: ptr IDisplayServices,
+      pRect: ptr RECT,
+      eSource: COORD_SYSTEM,
+      eDestination: COORD_SYSTEM,
+      pIElement: ptr IHTMLElement,
+    ): HRESULT {.stdcall.}
+    TransformPoint*: proc(
+      self: ptr IDisplayServices,
+      pPoint: ptr POINT,
+      eSource: COORD_SYSTEM,
+      eDestination: COORD_SYSTEM,
+      pIElement: ptr IHTMLElement,
+    ): HRESULT {.stdcall.}
+    GetCaret*:
+      proc(self: ptr IDisplayServices, ppCaret: ptr ptr IHTMLCaret): HRESULT {.stdcall.}
+    GetComputedStyle*: proc(
+      self: ptr IDisplayServices,
+      pPointer: ptr IMarkupPointer,
+      ppComputedStyle: ptr ptr IHTMLComputedStyle,
+    ): HRESULT {.stdcall.}
+    ScrollRectIntoView*: proc(
+      self: ptr IDisplayServices, pIElement: ptr IHTMLElement, rect: RECT
+    ): HRESULT {.stdcall.}
+    HasFlowLayout*: proc(
+      self: ptr IDisplayServices,
+      pIElement: ptr IHTMLElement,
+      pfHasFlowLayout: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+
   IHtmlDlgSafeHelper* {.pure.} = object
     lpVtbl*: ptr IHtmlDlgSafeHelperVtbl
+
   IHtmlDlgSafeHelperVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    choosecolordlg*: proc(self: ptr IHtmlDlgSafeHelper, initColor: VARIANT, rgbColor: ptr VARIANT): HRESULT {.stdcall.}
-    getCharset*: proc(self: ptr IHtmlDlgSafeHelper, fontName: BSTR, charset: ptr VARIANT): HRESULT {.stdcall.}
-    get_Fonts*: proc(self: ptr IHtmlDlgSafeHelper, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_BlockFormats*: proc(self: ptr IHtmlDlgSafeHelper, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    choosecolordlg*: proc(
+      self: ptr IHtmlDlgSafeHelper, initColor: VARIANT, rgbColor: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    getCharset*: proc(
+      self: ptr IHtmlDlgSafeHelper, fontName: BSTR, charset: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    get_Fonts*:
+      proc(self: ptr IHtmlDlgSafeHelper, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_BlockFormats*:
+      proc(self: ptr IHtmlDlgSafeHelper, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+
   IBlockFormats* {.pure.} = object
     lpVtbl*: ptr IBlockFormatsVtbl
+
   IBlockFormatsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_NewEnum*: proc(self: ptr IBlockFormats, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    get_NewEnum*:
+      proc(self: ptr IBlockFormats, p: ptr ptr IUnknown): HRESULT {.stdcall.}
     get_Count*: proc(self: ptr IBlockFormats, p: ptr LONG): HRESULT {.stdcall.}
-    Item*: proc(self: ptr IBlockFormats, pvarIndex: ptr VARIANT, pbstrBlockFormat: ptr BSTR): HRESULT {.stdcall.}
+    Item*: proc(
+      self: ptr IBlockFormats, pvarIndex: ptr VARIANT, pbstrBlockFormat: ptr BSTR
+    ): HRESULT {.stdcall.}
+
   IFontNames* {.pure.} = object
     lpVtbl*: ptr IFontNamesVtbl
+
   IFontNamesVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_NewEnum*: proc(self: ptr IFontNames, p: ptr ptr IUnknown): HRESULT {.stdcall.}
     get_Count*: proc(self: ptr IFontNames, p: ptr LONG): HRESULT {.stdcall.}
-    Item*: proc(self: ptr IFontNames, pvarIndex: ptr VARIANT, pbstrFontName: ptr BSTR): HRESULT {.stdcall.}
+    Item*: proc(
+      self: ptr IFontNames, pvarIndex: ptr VARIANT, pbstrFontName: ptr BSTR
+    ): HRESULT {.stdcall.}
+
   IDeveloperConsoleMessageReceiver* {.pure.} = object
     lpVtbl*: ptr IDeveloperConsoleMessageReceiverVtbl
+
   IDeveloperConsoleMessageReceiverVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Write*: proc(self: ptr IDeveloperConsoleMessageReceiver, source: LPCWSTR, level: DEV_CONSOLE_MESSAGE_LEVEL, messageId: int32, messageText: LPCWSTR): HRESULT {.stdcall.}
-    WriteWithUrl*: proc(self: ptr IDeveloperConsoleMessageReceiver, source: LPCWSTR, level: DEV_CONSOLE_MESSAGE_LEVEL, messageId: int32, messageText: LPCWSTR, fileUrl: LPCWSTR): HRESULT {.stdcall.}
-    WriteWithUrlAndLine*: proc(self: ptr IDeveloperConsoleMessageReceiver, source: LPCWSTR, level: DEV_CONSOLE_MESSAGE_LEVEL, messageId: int32, messageText: LPCWSTR, fileUrl: LPCWSTR, line: ULONG): HRESULT {.stdcall.}
-    WriteWithUrlLineAndColumn*: proc(self: ptr IDeveloperConsoleMessageReceiver, source: LPCWSTR, level: DEV_CONSOLE_MESSAGE_LEVEL, messageId: int32, messageText: LPCWSTR, fileUrl: LPCWSTR, line: ULONG, column: ULONG): HRESULT {.stdcall.}
+    Write*: proc(
+      self: ptr IDeveloperConsoleMessageReceiver,
+      source: LPCWSTR,
+      level: DEV_CONSOLE_MESSAGE_LEVEL,
+      messageId: int32,
+      messageText: LPCWSTR,
+    ): HRESULT {.stdcall.}
+    WriteWithUrl*: proc(
+      self: ptr IDeveloperConsoleMessageReceiver,
+      source: LPCWSTR,
+      level: DEV_CONSOLE_MESSAGE_LEVEL,
+      messageId: int32,
+      messageText: LPCWSTR,
+      fileUrl: LPCWSTR,
+    ): HRESULT {.stdcall.}
+    WriteWithUrlAndLine*: proc(
+      self: ptr IDeveloperConsoleMessageReceiver,
+      source: LPCWSTR,
+      level: DEV_CONSOLE_MESSAGE_LEVEL,
+      messageId: int32,
+      messageText: LPCWSTR,
+      fileUrl: LPCWSTR,
+      line: ULONG,
+    ): HRESULT {.stdcall.}
+    WriteWithUrlLineAndColumn*: proc(
+      self: ptr IDeveloperConsoleMessageReceiver,
+      source: LPCWSTR,
+      level: DEV_CONSOLE_MESSAGE_LEVEL,
+      messageId: int32,
+      messageText: LPCWSTR,
+      fileUrl: LPCWSTR,
+      line: ULONG,
+      column: ULONG,
+    ): HRESULT {.stdcall.}
+
   IScriptEventHandler* {.pure.} = object
     lpVtbl*: ptr IScriptEventHandlerVtbl
+
   IScriptEventHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    FunctionName*: proc(self: ptr IScriptEventHandler, pbstrFunctionName: ptr BSTR): HRESULT {.stdcall.}
-    DebugDocumentContext*: proc(self: ptr IScriptEventHandler, ppDebugDocumentContext: ptr ptr IUnknown): HRESULT {.stdcall.}
-    EventHandlerDispatch*: proc(self: ptr IScriptEventHandler, ppDispHandler: ptr ptr IDispatch): HRESULT {.stdcall.}
-    UsesCapture*: proc(self: ptr IScriptEventHandler, pfUsesCapture: ptr WINBOOL): HRESULT {.stdcall.}
-    Cookie*: proc(self: ptr IScriptEventHandler, pullCookie: ptr ULONGLONG): HRESULT {.stdcall.}
+    FunctionName*: proc(
+      self: ptr IScriptEventHandler, pbstrFunctionName: ptr BSTR
+    ): HRESULT {.stdcall.}
+    DebugDocumentContext*: proc(
+      self: ptr IScriptEventHandler, ppDebugDocumentContext: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
+    EventHandlerDispatch*: proc(
+      self: ptr IScriptEventHandler, ppDispHandler: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    UsesCapture*: proc(
+      self: ptr IScriptEventHandler, pfUsesCapture: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    Cookie*: proc(self: ptr IScriptEventHandler, pullCookie: ptr ULONGLONG): HRESULT {.
+      stdcall
+    .}
+
   IDebugCallbackNotificationHandler* {.pure.} = object
     lpVtbl*: ptr IDebugCallbackNotificationHandlerVtbl
+
   IDebugCallbackNotificationHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RequestedCallbackTypes*: proc(self: ptr IDebugCallbackNotificationHandler, pCallbackMask: ptr DWORD): HRESULT {.stdcall.}
-    BeforeDispatchEvent*: proc(self: ptr IDebugCallbackNotificationHandler, pEvent: ptr IUnknown): HRESULT {.stdcall.}
-    DispatchEventComplete*: proc(self: ptr IDebugCallbackNotificationHandler, pEvent: ptr IUnknown, propagationStatus: DWORD): HRESULT {.stdcall.}
-    BeforeInvokeDomCallback*: proc(self: ptr IDebugCallbackNotificationHandler, pEvent: ptr IUnknown, pCallback: ptr IScriptEventHandler, eStage: DOM_EVENT_PHASE, propagationStatus: DWORD): HRESULT {.stdcall.}
-    InvokeDomCallbackComplete*: proc(self: ptr IDebugCallbackNotificationHandler, pEvent: ptr IUnknown, pCallback: ptr IScriptEventHandler, eStage: DOM_EVENT_PHASE, propagationStatus: DWORD): HRESULT {.stdcall.}
-    BeforeInvokeCallback*: proc(self: ptr IDebugCallbackNotificationHandler, eCallbackType: SCRIPT_TIMER_TYPE, callbackCookie: DWORD, pDispHandler: ptr IDispatch, ullHandlerCookie: ULONGLONG, functionName: BSTR, line: UINT32, column: UINT32, cchLength: UINT32, pDebugDocumentContext: ptr IUnknown): HRESULT {.stdcall.}
-    InvokeCallbackComplete*: proc(self: ptr IDebugCallbackNotificationHandler, eCallbackType: SCRIPT_TIMER_TYPE, callbackCookie: DWORD, pDispHandler: ptr IDispatch, ullHandlerCookie: ULONGLONG, functionName: BSTR, line: UINT32, column: UINT32, cchLength: UINT32, pDebugDocumentContext: ptr IUnknown): HRESULT {.stdcall.}
+    RequestedCallbackTypes*: proc(
+      self: ptr IDebugCallbackNotificationHandler, pCallbackMask: ptr DWORD
+    ): HRESULT {.stdcall.}
+    BeforeDispatchEvent*: proc(
+      self: ptr IDebugCallbackNotificationHandler, pEvent: ptr IUnknown
+    ): HRESULT {.stdcall.}
+    DispatchEventComplete*: proc(
+      self: ptr IDebugCallbackNotificationHandler,
+      pEvent: ptr IUnknown,
+      propagationStatus: DWORD,
+    ): HRESULT {.stdcall.}
+    BeforeInvokeDomCallback*: proc(
+      self: ptr IDebugCallbackNotificationHandler,
+      pEvent: ptr IUnknown,
+      pCallback: ptr IScriptEventHandler,
+      eStage: DOM_EVENT_PHASE,
+      propagationStatus: DWORD,
+    ): HRESULT {.stdcall.}
+    InvokeDomCallbackComplete*: proc(
+      self: ptr IDebugCallbackNotificationHandler,
+      pEvent: ptr IUnknown,
+      pCallback: ptr IScriptEventHandler,
+      eStage: DOM_EVENT_PHASE,
+      propagationStatus: DWORD,
+    ): HRESULT {.stdcall.}
+    BeforeInvokeCallback*: proc(
+      self: ptr IDebugCallbackNotificationHandler,
+      eCallbackType: SCRIPT_TIMER_TYPE,
+      callbackCookie: DWORD,
+      pDispHandler: ptr IDispatch,
+      ullHandlerCookie: ULONGLONG,
+      functionName: BSTR,
+      line: UINT32,
+      column: UINT32,
+      cchLength: UINT32,
+      pDebugDocumentContext: ptr IUnknown,
+    ): HRESULT {.stdcall.}
+    InvokeCallbackComplete*: proc(
+      self: ptr IDebugCallbackNotificationHandler,
+      eCallbackType: SCRIPT_TIMER_TYPE,
+      callbackCookie: DWORD,
+      pDispHandler: ptr IDispatch,
+      ullHandlerCookie: ULONGLONG,
+      functionName: BSTR,
+      line: UINT32,
+      column: UINT32,
+      cchLength: UINT32,
+      pDebugDocumentContext: ptr IUnknown,
+    ): HRESULT {.stdcall.}
+
   IScriptEventHandlerSourceInfo* {.pure.} = object
     lpVtbl*: ptr IScriptEventHandlerSourceInfoVtbl
+
   IScriptEventHandlerSourceInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSourceInfo*: proc(self: ptr IScriptEventHandlerSourceInfo, pbstrFunctionName: ptr BSTR, line: ptr UINT32, column: ptr UINT32, cchLength: ptr UINT32): HRESULT {.stdcall.}
+    GetSourceInfo*: proc(
+      self: ptr IScriptEventHandlerSourceInfo,
+      pbstrFunctionName: ptr BSTR,
+      line: ptr UINT32,
+      column: ptr UINT32,
+      cchLength: ptr UINT32,
+    ): HRESULT {.stdcall.}
+
   IDOMEventRegistrationCallback* {.pure.} = object
     lpVtbl*: ptr IDOMEventRegistrationCallbackVtbl
+
   IDOMEventRegistrationCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnDOMEventListenerAdded*: proc(self: ptr IDOMEventRegistrationCallback, pszEventType: LPCWSTR, pHandler: ptr IScriptEventHandler): HRESULT {.stdcall.}
-    OnDOMEventListenerRemoved*: proc(self: ptr IDOMEventRegistrationCallback, ullCookie: ULONGLONG): HRESULT {.stdcall.}
+    OnDOMEventListenerAdded*: proc(
+      self: ptr IDOMEventRegistrationCallback,
+      pszEventType: LPCWSTR,
+      pHandler: ptr IScriptEventHandler,
+    ): HRESULT {.stdcall.}
+    OnDOMEventListenerRemoved*: proc(
+      self: ptr IDOMEventRegistrationCallback, ullCookie: ULONGLONG
+    ): HRESULT {.stdcall.}
+
   IEventTarget2* {.pure.} = object
     lpVtbl*: ptr IEventTarget2Vtbl
+
   IEventTarget2Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetRegisteredEventTypes*: proc(self: ptr IEventTarget2, ppEventTypeArray: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetListenersForType*: proc(self: ptr IEventTarget2, pszEventType: LPCWSTR, ppEventHandlerArray: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    RegisterForDOMEventListeners*: proc(self: ptr IEventTarget2, pCallback: ptr IDOMEventRegistrationCallback): HRESULT {.stdcall.}
-    UnregisterForDOMEventListeners*: proc(self: ptr IEventTarget2, pCallback: ptr IDOMEventRegistrationCallback): HRESULT {.stdcall.}
+    GetRegisteredEventTypes*: proc(
+      self: ptr IEventTarget2, ppEventTypeArray: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetListenersForType*: proc(
+      self: ptr IEventTarget2,
+      pszEventType: LPCWSTR,
+      ppEventHandlerArray: ptr ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+    RegisterForDOMEventListeners*: proc(
+      self: ptr IEventTarget2, pCallback: ptr IDOMEventRegistrationCallback
+    ): HRESULT {.stdcall.}
+    UnregisterForDOMEventListeners*: proc(
+      self: ptr IEventTarget2, pCallback: ptr IDOMEventRegistrationCallback
+    ): HRESULT {.stdcall.}
+
   HTMLNamespaceEvents* {.pure.} = object
     lpVtbl*: ptr HTMLNamespaceEventsVtbl
+
   HTMLNamespaceEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLNamespace* {.pure.} = object
     lpVtbl*: ptr IHTMLNamespaceVtbl
+
   IHTMLNamespaceVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_name*: proc(self: ptr IHTMLNamespace, p: ptr BSTR): HRESULT {.stdcall.}
     get_urn*: proc(self: ptr IHTMLNamespace, p: ptr BSTR): HRESULT {.stdcall.}
-    get_tagNames*: proc(self: ptr IHTMLNamespace, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_tagNames*:
+      proc(self: ptr IHTMLNamespace, p: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_readyState*: proc(self: ptr IHTMLNamespace, p: ptr VARIANT): HRESULT {.stdcall.}
-    put_onreadystatechange*: proc(self: ptr IHTMLNamespace, v: VARIANT): HRESULT {.stdcall.}
-    get_onreadystatechange*: proc(self: ptr IHTMLNamespace, p: ptr VARIANT): HRESULT {.stdcall.}
-    doImport*: proc(self: ptr IHTMLNamespace, bstrImplementationUrl: BSTR): HRESULT {.stdcall.}
-    attachEvent*: proc(self: ptr IHTMLNamespace, event: BSTR, pDisp: ptr IDispatch, pfResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    detachEvent*: proc(self: ptr IHTMLNamespace, event: BSTR, pDisp: ptr IDispatch): HRESULT {.stdcall.}
+    put_onreadystatechange*:
+      proc(self: ptr IHTMLNamespace, v: VARIANT): HRESULT {.stdcall.}
+    get_onreadystatechange*:
+      proc(self: ptr IHTMLNamespace, p: ptr VARIANT): HRESULT {.stdcall.}
+    doImport*:
+      proc(self: ptr IHTMLNamespace, bstrImplementationUrl: BSTR): HRESULT {.stdcall.}
+    attachEvent*: proc(
+      self: ptr IHTMLNamespace,
+      event: BSTR,
+      pDisp: ptr IDispatch,
+      pfResult: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    detachEvent*: proc(
+      self: ptr IHTMLNamespace, event: BSTR, pDisp: ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLNamespaceCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLNamespaceCollectionVtbl
+
   IHTMLNamespaceCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_length*: proc(self: ptr IHTMLNamespaceCollection, p: ptr LONG): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLNamespaceCollection, index: VARIANT, ppNamespace: ptr ptr IDispatch): HRESULT {.stdcall.}
-    add*: proc(self: ptr IHTMLNamespaceCollection, bstrNamespace: BSTR, bstrUrn: BSTR, implementationUrl: VARIANT, ppNamespace: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IHTMLNamespaceCollection, p: ptr LONG): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLNamespaceCollection, index: VARIANT, ppNamespace: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    add*: proc(
+      self: ptr IHTMLNamespaceCollection,
+      bstrNamespace: BSTR,
+      bstrUrn: BSTR,
+      implementationUrl: VARIANT,
+      ppNamespace: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
+
   DispHTMLNamespace* {.pure.} = object
     lpVtbl*: ptr DispHTMLNamespaceVtbl
+
   DispHTMLNamespaceVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispHTMLNamespaceCollection* {.pure.} = object
     lpVtbl*: ptr DispHTMLNamespaceCollectionVtbl
+
   DispHTMLNamespaceCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLPainter* {.pure.} = object
     lpVtbl*: ptr IHTMLPainterVtbl
+
   IHTMLPainterVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Draw*: proc(self: ptr IHTMLPainter, rcBounds: RECT, rcUpdate: RECT, lDrawFlags: LONG, hdc: HDC, pvDrawObject: LPVOID): HRESULT {.stdcall.}
+    Draw*: proc(
+      self: ptr IHTMLPainter,
+      rcBounds: RECT,
+      rcUpdate: RECT,
+      lDrawFlags: LONG,
+      hdc: HDC,
+      pvDrawObject: LPVOID,
+    ): HRESULT {.stdcall.}
     OnResize*: proc(self: ptr IHTMLPainter, size: SIZE): HRESULT {.stdcall.}
-    GetPainterInfo*: proc(self: ptr IHTMLPainter, pInfo: ptr HTML_PAINTER_INFO): HRESULT {.stdcall.}
-    HitTestPoint*: proc(self: ptr IHTMLPainter, pt: POINT, pbHit: ptr WINBOOL, plPartID: ptr LONG): HRESULT {.stdcall.}
+    GetPainterInfo*:
+      proc(self: ptr IHTMLPainter, pInfo: ptr HTML_PAINTER_INFO): HRESULT {.stdcall.}
+    HitTestPoint*: proc(
+      self: ptr IHTMLPainter, pt: POINT, pbHit: ptr WINBOOL, plPartID: ptr LONG
+    ): HRESULT {.stdcall.}
+
   IHTMLPainterEventInfo* {.pure.} = object
     lpVtbl*: ptr IHTMLPainterEventInfoVtbl
+
   IHTMLPainterEventInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetEventInfoFlags*: proc(self: ptr IHTMLPainterEventInfo, plEventInfoFlags: ptr LONG): HRESULT {.stdcall.}
-    GetEventTarget*: proc(self: ptr IHTMLPainterEventInfo, ppElement: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    SetCursor*: proc(self: ptr IHTMLPainterEventInfo, lPartID: LONG): HRESULT {.stdcall.}
-    StringFromPartID*: proc(self: ptr IHTMLPainterEventInfo, lPartID: LONG, pbstrPart: ptr BSTR): HRESULT {.stdcall.}
+    GetEventInfoFlags*: proc(
+      self: ptr IHTMLPainterEventInfo, plEventInfoFlags: ptr LONG
+    ): HRESULT {.stdcall.}
+    GetEventTarget*: proc(
+      self: ptr IHTMLPainterEventInfo, ppElement: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
+    SetCursor*:
+      proc(self: ptr IHTMLPainterEventInfo, lPartID: LONG): HRESULT {.stdcall.}
+    StringFromPartID*: proc(
+      self: ptr IHTMLPainterEventInfo, lPartID: LONG, pbstrPart: ptr BSTR
+    ): HRESULT {.stdcall.}
+
   IHTMLPainterOverlay* {.pure.} = object
     lpVtbl*: ptr IHTMLPainterOverlayVtbl
+
   IHTMLPainterOverlayVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     OnMove*: proc(self: ptr IHTMLPainterOverlay, rcDevice: RECT): HRESULT {.stdcall.}
+
   IHTMLPaintSite* {.pure.} = object
     lpVtbl*: ptr IHTMLPaintSiteVtbl
+
   IHTMLPaintSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     InvalidatePainterInfo*: proc(self: ptr IHTMLPaintSite): HRESULT {.stdcall.}
-    InvalidateRect*: proc(self: ptr IHTMLPaintSite, prcInvalid: ptr RECT): HRESULT {.stdcall.}
-    InvalidateRegion*: proc(self: ptr IHTMLPaintSite, rgnInvalid: HRGN): HRESULT {.stdcall.}
-    GetDrawInfo*: proc(self: ptr IHTMLPaintSite, lFlags: LONG, pDrawInfo: ptr HTML_PAINT_DRAW_INFO): HRESULT {.stdcall.}
-    TransformGlobalToLocal*: proc(self: ptr IHTMLPaintSite, ptGlobal: POINT, pptLocal: ptr POINT): HRESULT {.stdcall.}
-    TransformLocalToGlobal*: proc(self: ptr IHTMLPaintSite, ptLocal: POINT, pptGlobal: ptr POINT): HRESULT {.stdcall.}
-    GetHitTestCookie*: proc(self: ptr IHTMLPaintSite, plCookie: ptr LONG): HRESULT {.stdcall.}
+    InvalidateRect*:
+      proc(self: ptr IHTMLPaintSite, prcInvalid: ptr RECT): HRESULT {.stdcall.}
+    InvalidateRegion*:
+      proc(self: ptr IHTMLPaintSite, rgnInvalid: HRGN): HRESULT {.stdcall.}
+    GetDrawInfo*: proc(
+      self: ptr IHTMLPaintSite, lFlags: LONG, pDrawInfo: ptr HTML_PAINT_DRAW_INFO
+    ): HRESULT {.stdcall.}
+    TransformGlobalToLocal*: proc(
+      self: ptr IHTMLPaintSite, ptGlobal: POINT, pptLocal: ptr POINT
+    ): HRESULT {.stdcall.}
+    TransformLocalToGlobal*: proc(
+      self: ptr IHTMLPaintSite, ptLocal: POINT, pptGlobal: ptr POINT
+    ): HRESULT {.stdcall.}
+    GetHitTestCookie*:
+      proc(self: ptr IHTMLPaintSite, plCookie: ptr LONG): HRESULT {.stdcall.}
+
   IHTMLIPrintCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLIPrintCollectionVtbl
+
   IHTMLIPrintCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_length*: proc(self: ptr IHTMLIPrintCollection, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IHTMLIPrintCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    item*: proc(self: ptr IHTMLIPrintCollection, index: LONG, ppIPrint: ptr ptr IUnknown): HRESULT {.stdcall.}
+    get_newEnum*:
+      proc(self: ptr IHTMLIPrintCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IHTMLIPrintCollection, index: LONG, ppIPrint: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
+
   IEnumPrivacyRecords* {.pure.} = object
     lpVtbl*: ptr IEnumPrivacyRecordsVtbl
+
   IEnumPrivacyRecordsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Reset*: proc(self: ptr IEnumPrivacyRecords): HRESULT {.stdcall.}
     GetSize*: proc(self: ptr IEnumPrivacyRecords, pSize: ptr ULONG): HRESULT {.stdcall.}
-    GetPrivacyImpacted*: proc(self: ptr IEnumPrivacyRecords, pState: ptr WINBOOL): HRESULT {.stdcall.}
-    Next*: proc(self: ptr IEnumPrivacyRecords, pbstrUrl: ptr BSTR, pbstrPolicyRef: ptr BSTR, pdwReserved: ptr LONG, pdwPrivacyFlags: ptr DWORD): HRESULT {.stdcall.}
+    GetPrivacyImpacted*:
+      proc(self: ptr IEnumPrivacyRecords, pState: ptr WINBOOL): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumPrivacyRecords,
+      pbstrUrl: ptr BSTR,
+      pbstrPolicyRef: ptr BSTR,
+      pdwReserved: ptr LONG,
+      pdwPrivacyFlags: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   IWPCBlockedUrls* {.pure.} = object
     lpVtbl*: ptr IWPCBlockedUrlsVtbl
+
   IWPCBlockedUrlsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetCount*: proc(self: ptr IWPCBlockedUrls, pdwCount: ptr DWORD): HRESULT {.stdcall.}
-    GetUrl*: proc(self: ptr IWPCBlockedUrls, dwIdx: DWORD, pbstrUrl: ptr BSTR): HRESULT {.stdcall.}
+    GetUrl*: proc(self: ptr IWPCBlockedUrls, dwIdx: DWORD, pbstrUrl: ptr BSTR): HRESULT {.
+      stdcall
+    .}
+
   IHTMLDOMConstructorCollection* {.pure.} = object
     lpVtbl*: ptr IHTMLDOMConstructorCollectionVtbl
+
   IHTMLDOMConstructorCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_Attr*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_BehaviorUrnsCollection*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_BookmarkCollection*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_CompatibleInfo*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_CompatibleInfoCollection*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_ControlRangeCollection*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_CSSCurrentStyleDeclaration*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_CSSRuleList*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_CSSRuleStyleDeclaration*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_CSSStyleDeclaration*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_CSSStyleRule*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_CSSStyleSheet*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_DataTransfer*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_DOMImplementation*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Element*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Event*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_History*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTCElementBehaviorDefaults*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLAnchorElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLAreaElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLAreasCollection*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLBaseElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLBaseFontElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLBGSoundElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLBlockElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLBodyElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLBRElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLButtonElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLCollection*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLCommentElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLDDElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLDivElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLDocument*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLDListElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLDTElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLEmbedElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLFieldSetElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLFontElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLFormElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLFrameElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLFrameSetElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLGenericElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLHeadElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLHeadingElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLHRElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLHtmlElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLIFrameElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLImageElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLInputElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLIsIndexElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLLabelElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLLegendElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLLIElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLLinkElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLMapElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLMarqueeElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLMetaElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLModelessDialog*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLNamespaceInfo*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLNamespaceInfoCollection*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLNextIdElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLNoShowElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLObjectElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLOListElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLOptionElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLParagraphElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLParamElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLPhraseElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLPluginsCollection*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLPopup*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLScriptElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLSelectElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLSpanElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLStyleElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLTableCaptionElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLTableCellElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLTableColElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLTableElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLTableRowElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLTableSectionElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLTextAreaElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLTextElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLTitleElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLUListElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_HTMLUnknownElement*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Image*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Location*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_NamedNodeMap*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Navigator*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_NodeList*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Option*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Screen*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Selection*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_StaticNodeList*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Storage*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_StyleSheetList*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_StyleSheetPage*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_StyleSheetPageList*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Text*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_TextRange*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_TextRangeCollection*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_TextRectangle*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_TextRectangleList*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Window*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_XDomainRequest*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_XMLHttpRequest*: proc(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Attr*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_BehaviorUrnsCollection*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_BookmarkCollection*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_CompatibleInfo*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_CompatibleInfoCollection*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_ControlRangeCollection*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_CSSCurrentStyleDeclaration*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_CSSRuleList*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_CSSRuleStyleDeclaration*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_CSSStyleDeclaration*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_CSSStyleRule*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_CSSStyleSheet*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_DataTransfer*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_DOMImplementation*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_Element*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_Event*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_History*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTCElementBehaviorDefaults*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLAnchorElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLAreaElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLAreasCollection*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLBaseElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLBaseFontElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLBGSoundElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLBlockElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLBodyElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLBRElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLButtonElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLCollection*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLCommentElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLDDElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLDivElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLDocument*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLDListElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLDTElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLEmbedElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLFieldSetElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLFontElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLFormElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLFrameElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLFrameSetElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLGenericElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLHeadElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLHeadingElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLHRElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLHtmlElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLIFrameElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLImageElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLInputElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLIsIndexElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLLabelElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLLegendElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLLIElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLLinkElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLMapElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLMarqueeElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLMetaElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLModelessDialog*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLNamespaceInfo*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLNamespaceInfoCollection*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLNextIdElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLNoShowElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLObjectElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLOListElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLOptionElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLParagraphElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLParamElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLPhraseElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLPluginsCollection*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLPopup*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLScriptElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLSelectElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLSpanElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLStyleElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLTableCaptionElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLTableCellElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLTableColElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLTableElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLTableRowElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLTableSectionElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLTextAreaElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLTextElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLTitleElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLUListElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_HTMLUnknownElement*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_Image*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_Location*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_NamedNodeMap*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_Navigator*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_NodeList*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_Option*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_Screen*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_Selection*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_StaticNodeList*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_Storage*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_StyleSheetList*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_StyleSheetPage*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_StyleSheetPageList*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_Text*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_TextRange*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_TextRangeCollection*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_TextRectangle*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_TextRectangleList*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_Window*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_XDomainRequest*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_XMLHttpRequest*: proc(
+      self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IHTMLDialog* {.pure.} = object
     lpVtbl*: ptr IHTMLDialogVtbl
+
   IHTMLDialogVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_dialogTop*: proc(self: ptr IHTMLDialog, v: VARIANT): HRESULT {.stdcall.}
     get_dialogTop*: proc(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.stdcall.}
@@ -12196,58 +18908,81 @@
     get_dialogWidth*: proc(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.stdcall.}
     put_dialogHeight*: proc(self: ptr IHTMLDialog, v: VARIANT): HRESULT {.stdcall.}
     get_dialogHeight*: proc(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_dialogArguments*: proc(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_dialogArguments*:
+      proc(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.stdcall.}
     get_menuArguments*: proc(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.stdcall.}
     put_returnValue*: proc(self: ptr IHTMLDialog, v: VARIANT): HRESULT {.stdcall.}
     get_returnValue*: proc(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.stdcall.}
     close*: proc(self: ptr IHTMLDialog): HRESULT {.stdcall.}
     toString*: proc(self: ptr IHTMLDialog, String: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLDialog2* {.pure.} = object
     lpVtbl*: ptr IHTMLDialog2Vtbl
+
   IHTMLDialog2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_status*: proc(self: ptr IHTMLDialog2, v: BSTR): HRESULT {.stdcall.}
     get_status*: proc(self: ptr IHTMLDialog2, p: ptr BSTR): HRESULT {.stdcall.}
     put_resizable*: proc(self: ptr IHTMLDialog2, v: BSTR): HRESULT {.stdcall.}
     get_resizable*: proc(self: ptr IHTMLDialog2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLDialog3* {.pure.} = object
     lpVtbl*: ptr IHTMLDialog3Vtbl
+
   IHTMLDialog3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_unadorned*: proc(self: ptr IHTMLDialog3, v: BSTR): HRESULT {.stdcall.}
     get_unadorned*: proc(self: ptr IHTMLDialog3, p: ptr BSTR): HRESULT {.stdcall.}
     put_dialogHide*: proc(self: ptr IHTMLDialog3, v: BSTR): HRESULT {.stdcall.}
     get_dialogHide*: proc(self: ptr IHTMLDialog3, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLModelessInit* {.pure.} = object
     lpVtbl*: ptr IHTMLModelessInitVtbl
+
   IHTMLModelessInitVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_parameters*: proc(self: ptr IHTMLModelessInit, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_optionString*: proc(self: ptr IHTMLModelessInit, p: ptr VARIANT): HRESULT {.stdcall.}
-    get_moniker*: proc(self: ptr IHTMLModelessInit, p: ptr ptr IUnknown): HRESULT {.stdcall.}
-    get_document*: proc(self: ptr IHTMLModelessInit, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    get_parameters*:
+      proc(self: ptr IHTMLModelessInit, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_optionString*:
+      proc(self: ptr IHTMLModelessInit, p: ptr VARIANT): HRESULT {.stdcall.}
+    get_moniker*:
+      proc(self: ptr IHTMLModelessInit, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+    get_document*:
+      proc(self: ptr IHTMLModelessInit, p: ptr ptr IUnknown): HRESULT {.stdcall.}
+
   IHTMLPopup* {.pure.} = object
     lpVtbl*: ptr IHTMLPopupVtbl
+
   IHTMLPopupVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    show*: proc(self: ptr IHTMLPopup, x: LONG, y: LONG, w: LONG, h: LONG, pElement: ptr VARIANT): HRESULT {.stdcall.}
+    show*: proc(
+      self: ptr IHTMLPopup, x: LONG, y: LONG, w: LONG, h: LONG, pElement: ptr VARIANT
+    ): HRESULT {.stdcall.}
     hide*: proc(self: ptr IHTMLPopup): HRESULT {.stdcall.}
-    get_document*: proc(self: ptr IHTMLPopup, p: ptr ptr IHTMLDocument): HRESULT {.stdcall.}
+    get_document*:
+      proc(self: ptr IHTMLPopup, p: ptr ptr IHTMLDocument): HRESULT {.stdcall.}
     get_isOpen*: proc(self: ptr IHTMLPopup, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   DispHTMLPopup* {.pure.} = object
     lpVtbl*: ptr DispHTMLPopupVtbl
+
   DispHTMLPopupVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IHTMLAppBehavior* {.pure.} = object
     lpVtbl*: ptr IHTMLAppBehaviorVtbl
+
   IHTMLAppBehaviorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_applicationName*: proc(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.stdcall.}
-    get_applicationName*: proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
+    get_applicationName*:
+      proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
     put_version*: proc(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.stdcall.}
     get_version*: proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
     put_icon*: proc(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.stdcall.}
     get_icon*: proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
     put_singleInstance*: proc(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.stdcall.}
-    get_singleInstance*: proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
+    get_singleInstance*:
+      proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
     put_minimizeButton*: proc(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.stdcall.}
-    get_minimizeButton*: proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
+    get_minimizeButton*:
+      proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
     put_maximizeButton*: proc(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.stdcall.}
-    get_maximizeButton*: proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
+    get_maximizeButton*:
+      proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
     put_border*: proc(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.stdcall.}
     get_border*: proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
     put_borderStyle*: proc(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.stdcall.}
@@ -12259,7826 +18994,41477 @@
     put_windowState*: proc(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.stdcall.}
     get_windowState*: proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
     put_showInTaskBar*: proc(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.stdcall.}
-    get_showInTaskBar*: proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
+    get_showInTaskBar*:
+      proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
     get_commandLine*: proc(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLAppBehavior2* {.pure.} = object
     lpVtbl*: ptr IHTMLAppBehavior2Vtbl
+
   IHTMLAppBehavior2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_contextMenu*: proc(self: ptr IHTMLAppBehavior2, v: BSTR): HRESULT {.stdcall.}
-    get_contextMenu*: proc(self: ptr IHTMLAppBehavior2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_contextMenu*:
+      proc(self: ptr IHTMLAppBehavior2, p: ptr BSTR): HRESULT {.stdcall.}
     put_innerBorder*: proc(self: ptr IHTMLAppBehavior2, v: BSTR): HRESULT {.stdcall.}
-    get_innerBorder*: proc(self: ptr IHTMLAppBehavior2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_innerBorder*:
+      proc(self: ptr IHTMLAppBehavior2, p: ptr BSTR): HRESULT {.stdcall.}
     put_scroll*: proc(self: ptr IHTMLAppBehavior2, v: BSTR): HRESULT {.stdcall.}
     get_scroll*: proc(self: ptr IHTMLAppBehavior2, p: ptr BSTR): HRESULT {.stdcall.}
     put_scrollFlat*: proc(self: ptr IHTMLAppBehavior2, v: BSTR): HRESULT {.stdcall.}
     get_scrollFlat*: proc(self: ptr IHTMLAppBehavior2, p: ptr BSTR): HRESULT {.stdcall.}
     put_selection*: proc(self: ptr IHTMLAppBehavior2, v: BSTR): HRESULT {.stdcall.}
     get_selection*: proc(self: ptr IHTMLAppBehavior2, p: ptr BSTR): HRESULT {.stdcall.}
+
   IHTMLAppBehavior3* {.pure.} = object
     lpVtbl*: ptr IHTMLAppBehavior3Vtbl
+
   IHTMLAppBehavior3Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_navigable*: proc(self: ptr IHTMLAppBehavior3, v: BSTR): HRESULT {.stdcall.}
     get_navigable*: proc(self: ptr IHTMLAppBehavior3, p: ptr BSTR): HRESULT {.stdcall.}
+
   DispHTMLAppBehavior* {.pure.} = object
     lpVtbl*: ptr DispHTMLAppBehaviorVtbl
+
   DispHTMLAppBehaviorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispIHTMLInputButtonElement* {.pure.} = object
     lpVtbl*: ptr DispIHTMLInputButtonElementVtbl
+
   DispIHTMLInputButtonElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispIHTMLInputTextElement* {.pure.} = object
     lpVtbl*: ptr DispIHTMLInputTextElementVtbl
+
   DispIHTMLInputTextElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispIHTMLInputFileElement* {.pure.} = object
     lpVtbl*: ptr DispIHTMLInputFileElementVtbl
+
   DispIHTMLInputFileElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispIHTMLOptionButtonElement* {.pure.} = object
     lpVtbl*: ptr DispIHTMLOptionButtonElementVtbl
+
   DispIHTMLOptionButtonElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DispIHTMLInputImage* {.pure.} = object
     lpVtbl*: ptr DispIHTMLInputImageVtbl
+
   DispIHTMLInputImageVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IElementBehaviorSite* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorSiteVtbl
+
   IElementBehaviorSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetElement*: proc(self: ptr IElementBehaviorSite, ppElement: ptr ptr IHTMLElement): HRESULT {.stdcall.}
-    RegisterNotification*: proc(self: ptr IElementBehaviorSite, lEvent: LONG): HRESULT {.stdcall.}
+    GetElement*: proc(
+      self: ptr IElementBehaviorSite, ppElement: ptr ptr IHTMLElement
+    ): HRESULT {.stdcall.}
+    RegisterNotification*:
+      proc(self: ptr IElementBehaviorSite, lEvent: LONG): HRESULT {.stdcall.}
+
   IElementBehavior* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorVtbl
+
   IElementBehaviorVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Init*: proc(self: ptr IElementBehavior, pBehaviorSite: ptr IElementBehaviorSite): HRESULT {.stdcall.}
-    Notify*: proc(self: ptr IElementBehavior, lEvent: LONG, pVar: ptr VARIANT): HRESULT {.stdcall.}
+    Init*: proc(
+      self: ptr IElementBehavior, pBehaviorSite: ptr IElementBehaviorSite
+    ): HRESULT {.stdcall.}
+    Notify*: proc(self: ptr IElementBehavior, lEvent: LONG, pVar: ptr VARIANT): HRESULT {.
+      stdcall
+    .}
     Detach*: proc(self: ptr IElementBehavior): HRESULT {.stdcall.}
+
   IElementBehaviorFactory* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorFactoryVtbl
+
   IElementBehaviorFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    FindBehavior*: proc(self: ptr IElementBehaviorFactory, bstrBehavior: BSTR, bstrBehaviorUrl: BSTR, pSite: ptr IElementBehaviorSite, ppBehavior: ptr ptr IElementBehavior): HRESULT {.stdcall.}
+    FindBehavior*: proc(
+      self: ptr IElementBehaviorFactory,
+      bstrBehavior: BSTR,
+      bstrBehaviorUrl: BSTR,
+      pSite: ptr IElementBehaviorSite,
+      ppBehavior: ptr ptr IElementBehavior,
+    ): HRESULT {.stdcall.}
+
   IElementNamespace* {.pure.} = object
     lpVtbl*: ptr IElementNamespaceVtbl
+
   IElementNamespaceVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AddTag*: proc(self: ptr IElementNamespace, bstrTagName: BSTR, lFlags: LONG): HRESULT {.stdcall.}
+    AddTag*: proc(self: ptr IElementNamespace, bstrTagName: BSTR, lFlags: LONG): HRESULT {.
+      stdcall
+    .}
+
   IElementNamespaceTable* {.pure.} = object
     lpVtbl*: ptr IElementNamespaceTableVtbl
+
   IElementNamespaceTableVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AddNamespace*: proc(self: ptr IElementNamespaceTable, bstrNamespace: BSTR, bstrUrn: BSTR, lFlags: LONG, pvarFactory: ptr VARIANT): HRESULT {.stdcall.}
+    AddNamespace*: proc(
+      self: ptr IElementNamespaceTable,
+      bstrNamespace: BSTR,
+      bstrUrn: BSTR,
+      lFlags: LONG,
+      pvarFactory: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+
   IElementNamespaceFactory* {.pure.} = object
     lpVtbl*: ptr IElementNamespaceFactoryVtbl
+
   IElementNamespaceFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Create*: proc(self: ptr IElementNamespaceFactory, pNamespace: ptr IElementNamespace): HRESULT {.stdcall.}
+    Create*: proc(
+      self: ptr IElementNamespaceFactory, pNamespace: ptr IElementNamespace
+    ): HRESULT {.stdcall.}
+
   IElementNamespaceFactory2* {.pure.} = object
     lpVtbl*: ptr IElementNamespaceFactory2Vtbl
+
   IElementNamespaceFactory2Vtbl* {.pure, inheritable.} = object of IElementNamespaceFactoryVtbl
-    CreateWithImplementation*: proc(self: ptr IElementNamespaceFactory2, pNamespace: ptr IElementNamespace, bstrImplementation: BSTR): HRESULT {.stdcall.}
+    CreateWithImplementation*: proc(
+      self: ptr IElementNamespaceFactory2,
+      pNamespace: ptr IElementNamespace,
+      bstrImplementation: BSTR,
+    ): HRESULT {.stdcall.}
+
   IElementNamespaceFactoryCallback* {.pure.} = object
     lpVtbl*: ptr IElementNamespaceFactoryCallbackVtbl
+
   IElementNamespaceFactoryCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Resolve*: proc(self: ptr IElementNamespaceFactoryCallback, bstrNamespace: BSTR, bstrTagName: BSTR, bstrAttrs: BSTR, pNamespace: ptr IElementNamespace): HRESULT {.stdcall.}
+    Resolve*: proc(
+      self: ptr IElementNamespaceFactoryCallback,
+      bstrNamespace: BSTR,
+      bstrTagName: BSTR,
+      bstrAttrs: BSTR,
+      pNamespace: ptr IElementNamespace,
+    ): HRESULT {.stdcall.}
+
   IElementBehaviorSiteOM* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorSiteOMVtbl
+
   IElementBehaviorSiteOMVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RegisterEvent*: proc(self: ptr IElementBehaviorSiteOM, pchEvent: LPOLESTR, lFlags: LONG, plCookie: ptr LONG): HRESULT {.stdcall.}
-    GetEventCookie*: proc(self: ptr IElementBehaviorSiteOM, pchEvent: LPOLESTR, plCookie: ptr LONG): HRESULT {.stdcall.}
-    FireEvent*: proc(self: ptr IElementBehaviorSiteOM, lCookie: LONG, pEventObject: ptr IHTMLEventObj): HRESULT {.stdcall.}
-    CreateEventObject*: proc(self: ptr IElementBehaviorSiteOM, ppEventObject: ptr ptr IHTMLEventObj): HRESULT {.stdcall.}
-    RegisterName*: proc(self: ptr IElementBehaviorSiteOM, pchName: LPOLESTR): HRESULT {.stdcall.}
-    RegisterUrn*: proc(self: ptr IElementBehaviorSiteOM, pchUrn: LPOLESTR): HRESULT {.stdcall.}
+    RegisterEvent*: proc(
+      self: ptr IElementBehaviorSiteOM,
+      pchEvent: LPOLESTR,
+      lFlags: LONG,
+      plCookie: ptr LONG,
+    ): HRESULT {.stdcall.}
+    GetEventCookie*: proc(
+      self: ptr IElementBehaviorSiteOM, pchEvent: LPOLESTR, plCookie: ptr LONG
+    ): HRESULT {.stdcall.}
+    FireEvent*: proc(
+      self: ptr IElementBehaviorSiteOM, lCookie: LONG, pEventObject: ptr IHTMLEventObj
+    ): HRESULT {.stdcall.}
+    CreateEventObject*: proc(
+      self: ptr IElementBehaviorSiteOM, ppEventObject: ptr ptr IHTMLEventObj
+    ): HRESULT {.stdcall.}
+    RegisterName*:
+      proc(self: ptr IElementBehaviorSiteOM, pchName: LPOLESTR): HRESULT {.stdcall.}
+    RegisterUrn*:
+      proc(self: ptr IElementBehaviorSiteOM, pchUrn: LPOLESTR): HRESULT {.stdcall.}
+
   IElementBehaviorSiteOM2* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorSiteOM2Vtbl
+
   IElementBehaviorSiteOM2Vtbl* {.pure, inheritable.} = object of IElementBehaviorSiteOMVtbl
-    GetDefaults*: proc(self: ptr IElementBehaviorSiteOM2, ppDefaults: ptr ptr IHTMLElementDefaults): HRESULT {.stdcall.}
+    GetDefaults*: proc(
+      self: ptr IElementBehaviorSiteOM2, ppDefaults: ptr ptr IHTMLElementDefaults
+    ): HRESULT {.stdcall.}
+
   IElementBehaviorRender* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorRenderVtbl
+
   IElementBehaviorRenderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Draw*: proc(self: ptr IElementBehaviorRender, hdc: HDC, lLayer: LONG, pRect: ptr RECT, pReserved: ptr IUnknown): HRESULT {.stdcall.}
-    GetRenderInfo*: proc(self: ptr IElementBehaviorRender, plRenderInfo: ptr LONG): HRESULT {.stdcall.}
-    HitTestPoint*: proc(self: ptr IElementBehaviorRender, pPoint: ptr POINT, pReserved: ptr IUnknown, pbHit: ptr WINBOOL): HRESULT {.stdcall.}
+    Draw*: proc(
+      self: ptr IElementBehaviorRender,
+      hdc: HDC,
+      lLayer: LONG,
+      pRect: ptr RECT,
+      pReserved: ptr IUnknown,
+    ): HRESULT {.stdcall.}
+    GetRenderInfo*: proc(
+      self: ptr IElementBehaviorRender, plRenderInfo: ptr LONG
+    ): HRESULT {.stdcall.}
+    HitTestPoint*: proc(
+      self: ptr IElementBehaviorRender,
+      pPoint: ptr POINT,
+      pReserved: ptr IUnknown,
+      pbHit: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+
   IElementBehaviorSiteRender* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorSiteRenderVtbl
+
   IElementBehaviorSiteRenderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Invalidate*: proc(self: ptr IElementBehaviorSiteRender, pRect: ptr RECT): HRESULT {.stdcall.}
-    InvalidateRenderInfo*: proc(self: ptr IElementBehaviorSiteRender): HRESULT {.stdcall.}
+    Invalidate*:
+      proc(self: ptr IElementBehaviorSiteRender, pRect: ptr RECT): HRESULT {.stdcall.}
+    InvalidateRenderInfo*:
+      proc(self: ptr IElementBehaviorSiteRender): HRESULT {.stdcall.}
     InvalidateStyle*: proc(self: ptr IElementBehaviorSiteRender): HRESULT {.stdcall.}
+
   IElementBehaviorCategory* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorCategoryVtbl
+
   IElementBehaviorCategoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCategory*: proc(self: ptr IElementBehaviorCategory, ppchCategory: ptr LPOLESTR): HRESULT {.stdcall.}
+    GetCategory*: proc(
+      self: ptr IElementBehaviorCategory, ppchCategory: ptr LPOLESTR
+    ): HRESULT {.stdcall.}
+
   IElementBehaviorSiteCategory* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorSiteCategoryVtbl
+
   IElementBehaviorSiteCategoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetRelatedBehaviors*: proc(self: ptr IElementBehaviorSiteCategory, lDirection: LONG, pchCategory: LPOLESTR, ppEnumerator: ptr ptr IEnumUnknown): HRESULT {.stdcall.}
+    GetRelatedBehaviors*: proc(
+      self: ptr IElementBehaviorSiteCategory,
+      lDirection: LONG,
+      pchCategory: LPOLESTR,
+      ppEnumerator: ptr ptr IEnumUnknown,
+    ): HRESULT {.stdcall.}
+
   IElementBehaviorSubmit* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorSubmitVtbl
+
   IElementBehaviorSubmitVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSubmitInfo*: proc(self: ptr IElementBehaviorSubmit, pSubmitData: ptr IHTMLSubmitData): HRESULT {.stdcall.}
+    GetSubmitInfo*: proc(
+      self: ptr IElementBehaviorSubmit, pSubmitData: ptr IHTMLSubmitData
+    ): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IElementBehaviorSubmit): HRESULT {.stdcall.}
+
   IElementBehaviorFocus* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorFocusVtbl
+
   IElementBehaviorFocusVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetFocusRect*: proc(self: ptr IElementBehaviorFocus, pRect: ptr RECT): HRESULT {.stdcall.}
+    GetFocusRect*:
+      proc(self: ptr IElementBehaviorFocus, pRect: ptr RECT): HRESULT {.stdcall.}
+
   IElementBehaviorLayout* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorLayoutVtbl
+
   IElementBehaviorLayoutVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSize*: proc(self: ptr IElementBehaviorLayout, dwFlags: LONG, sizeContent: SIZE, pptTranslateBy: ptr POINT, pptTopLeft: ptr POINT, psizeProposed: ptr SIZE): HRESULT {.stdcall.}
-    GetLayoutInfo*: proc(self: ptr IElementBehaviorLayout, plLayoutInfo: ptr LONG): HRESULT {.stdcall.}
-    GetPosition*: proc(self: ptr IElementBehaviorLayout, lFlags: LONG, pptTopLeft: ptr POINT): HRESULT {.stdcall.}
-    MapSize*: proc(self: ptr IElementBehaviorLayout, psizeIn: ptr SIZE, prcOut: ptr RECT): HRESULT {.stdcall.}
+    GetSize*: proc(
+      self: ptr IElementBehaviorLayout,
+      dwFlags: LONG,
+      sizeContent: SIZE,
+      pptTranslateBy: ptr POINT,
+      pptTopLeft: ptr POINT,
+      psizeProposed: ptr SIZE,
+    ): HRESULT {.stdcall.}
+    GetLayoutInfo*: proc(
+      self: ptr IElementBehaviorLayout, plLayoutInfo: ptr LONG
+    ): HRESULT {.stdcall.}
+    GetPosition*: proc(
+      self: ptr IElementBehaviorLayout, lFlags: LONG, pptTopLeft: ptr POINT
+    ): HRESULT {.stdcall.}
+    MapSize*: proc(
+      self: ptr IElementBehaviorLayout, psizeIn: ptr SIZE, prcOut: ptr RECT
+    ): HRESULT {.stdcall.}
+
   IElementBehaviorLayout2* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorLayout2Vtbl
+
   IElementBehaviorLayout2Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetTextDescent*: proc(self: ptr IElementBehaviorLayout2, plDescent: ptr LONG): HRESULT {.stdcall.}
+    GetTextDescent*:
+      proc(self: ptr IElementBehaviorLayout2, plDescent: ptr LONG): HRESULT {.stdcall.}
+
   IElementBehaviorSiteLayout* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorSiteLayoutVtbl
+
   IElementBehaviorSiteLayoutVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    InvalidateLayoutInfo*: proc(self: ptr IElementBehaviorSiteLayout): HRESULT {.stdcall.}
+    InvalidateLayoutInfo*:
+      proc(self: ptr IElementBehaviorSiteLayout): HRESULT {.stdcall.}
     InvalidateSize*: proc(self: ptr IElementBehaviorSiteLayout): HRESULT {.stdcall.}
-    GetMediaResolution*: proc(self: ptr IElementBehaviorSiteLayout, psizeResolution: ptr SIZE): HRESULT {.stdcall.}
+    GetMediaResolution*: proc(
+      self: ptr IElementBehaviorSiteLayout, psizeResolution: ptr SIZE
+    ): HRESULT {.stdcall.}
+
   IElementBehaviorSiteLayout2* {.pure.} = object
     lpVtbl*: ptr IElementBehaviorSiteLayout2Vtbl
+
   IElementBehaviorSiteLayout2Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetFontInfo*: proc(self: ptr IElementBehaviorSiteLayout2, plf: ptr LOGFONTW): HRESULT {.stdcall.}
+    GetFontInfo*: proc(
+      self: ptr IElementBehaviorSiteLayout2, plf: ptr LOGFONTW
+    ): HRESULT {.stdcall.}
+
   IHostBehaviorInit* {.pure.} = object
     lpVtbl*: ptr IHostBehaviorInitVtbl
+
   IHostBehaviorInitVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     PopulateNamespaceTable*: proc(self: ptr IHostBehaviorInit): HRESULT {.stdcall.}
+
   ISurfacePresenter* {.pure.} = object
     lpVtbl*: ptr ISurfacePresenterVtbl
+
   ISurfacePresenterVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Present*: proc(self: ptr ISurfacePresenter, uBuffer: UINT, pDirty: ptr RECT): HRESULT {.stdcall.}
-    GetBuffer*: proc(self: ptr ISurfacePresenter, backBufferIndex: UINT, riid: REFIID, ppBuffer: ptr pointer): HRESULT {.stdcall.}
-    IsCurrent*: proc(self: ptr ISurfacePresenter, pIsCurrent: ptr WINBOOL): HRESULT {.stdcall.}
+    Present*: proc(
+      self: ptr ISurfacePresenter, uBuffer: UINT, pDirty: ptr RECT
+    ): HRESULT {.stdcall.}
+    GetBuffer*: proc(
+      self: ptr ISurfacePresenter,
+      backBufferIndex: UINT,
+      riid: REFIID,
+      ppBuffer: ptr pointer,
+    ): HRESULT {.stdcall.}
+    IsCurrent*:
+      proc(self: ptr ISurfacePresenter, pIsCurrent: ptr WINBOOL): HRESULT {.stdcall.}
+
   IViewObjectPresentSite* {.pure.} = object
     lpVtbl*: ptr IViewObjectPresentSiteVtbl
+
   IViewObjectPresentSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateSurfacePresenter*: proc(self: ptr IViewObjectPresentSite, pDevice: ptr IUnknown, width: UINT, height: UINT, backBufferCount: UINT, format: DXGI_FORMAT, mode: VIEW_OBJECT_ALPHA_MODE, ppQueue: ptr ptr ISurfacePresenter): HRESULT {.stdcall.}
-    IsHardwareComposition*: proc(self: ptr IViewObjectPresentSite, pIsHardwareComposition: ptr WINBOOL): HRESULT {.stdcall.}
-    SetCompositionMode*: proc(self: ptr IViewObjectPresentSite, mode: VIEW_OBJECT_COMPOSITION_MODE): HRESULT {.stdcall.}
+    CreateSurfacePresenter*: proc(
+      self: ptr IViewObjectPresentSite,
+      pDevice: ptr IUnknown,
+      width: UINT,
+      height: UINT,
+      backBufferCount: UINT,
+      format: DXGI_FORMAT,
+      mode: VIEW_OBJECT_ALPHA_MODE,
+      ppQueue: ptr ptr ISurfacePresenter,
+    ): HRESULT {.stdcall.}
+    IsHardwareComposition*: proc(
+      self: ptr IViewObjectPresentSite, pIsHardwareComposition: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    SetCompositionMode*: proc(
+      self: ptr IViewObjectPresentSite, mode: VIEW_OBJECT_COMPOSITION_MODE
+    ): HRESULT {.stdcall.}
+
   ICanvasPixelArrayData* {.pure.} = object
     lpVtbl*: ptr ICanvasPixelArrayDataVtbl
+
   ICanvasPixelArrayDataVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetBufferPointer*: proc(self: ptr ICanvasPixelArrayData, ppBuffer: ptr ptr BYTE, pBufferLength: ptr ULONG): HRESULT {.stdcall.}
+    GetBufferPointer*: proc(
+      self: ptr ICanvasPixelArrayData, ppBuffer: ptr ptr BYTE, pBufferLength: ptr ULONG
+    ): HRESULT {.stdcall.}
+
   IViewObjectPrint* {.pure.} = object
     lpVtbl*: ptr IViewObjectPrintVtbl
+
   IViewObjectPrintVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetPrintBitmap*: proc(self: ptr IViewObjectPrint, ppPrintBitmap: ptr ptr IUnknown): HRESULT {.stdcall.}
+    GetPrintBitmap*: proc(
+      self: ptr IViewObjectPrint, ppPrintBitmap: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
+
   IViewObjectPresentNotifySite* {.pure.} = object
     lpVtbl*: ptr IViewObjectPresentNotifySiteVtbl
+
   IViewObjectPresentNotifySiteVtbl* {.pure, inheritable.} = object of IViewObjectPresentSiteVtbl
     RequestFrame*: proc(self: ptr IViewObjectPresentNotifySite): HRESULT {.stdcall.}
+
   IViewObjectPresentNotify* {.pure.} = object
     lpVtbl*: ptr IViewObjectPresentNotifyVtbl
+
   IViewObjectPresentNotifyVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     OnPreRender*: proc(self: ptr IViewObjectPresentNotify): HRESULT {.stdcall.}
+
   ITrackingProtection* {.pure.} = object
     lpVtbl*: ptr ITrackingProtectionVtbl
+
   ITrackingProtectionVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    EvaluateUrl*: proc(self: ptr ITrackingProtection, bstrUrl: BSTR, pfAllowed: ptr WINBOOL): HRESULT {.stdcall.}
-    GetEnabled*: proc(self: ptr ITrackingProtection, pfEnabled: ptr WINBOOL): HRESULT {.stdcall.}
+    EvaluateUrl*: proc(
+      self: ptr ITrackingProtection, bstrUrl: BSTR, pfAllowed: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    GetEnabled*:
+      proc(self: ptr ITrackingProtection, pfEnabled: ptr WINBOOL): HRESULT {.stdcall.}
+
   IHostDialogHelper* {.pure.} = object
     lpVtbl*: ptr IHostDialogHelperVtbl
+
   IHostDialogHelperVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ShowHTMLDialog*: proc(self: ptr IHostDialogHelper, hwndParent: HWND, pMk: ptr IMoniker, pvarArgIn: ptr VARIANT, pchOptions: ptr WCHAR, pvarArgOut: ptr VARIANT, punkHost: ptr IUnknown): HRESULT {.stdcall.}
+    ShowHTMLDialog*: proc(
+      self: ptr IHostDialogHelper,
+      hwndParent: HWND,
+      pMk: ptr IMoniker,
+      pvarArgIn: ptr VARIANT,
+      pchOptions: ptr WCHAR,
+      pvarArgOut: ptr VARIANT,
+      punkHost: ptr IUnknown,
+    ): HRESULT {.stdcall.}
+
   IDocHostUIHandler* {.pure.} = object
     lpVtbl*: ptr IDocHostUIHandlerVtbl
+
   IDocHostUIHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ShowContextMenu*: proc(self: ptr IDocHostUIHandler, dwID: DWORD, ppt: ptr POINT, pcmdtReserved: ptr IUnknown, pdispReserved: ptr IDispatch): HRESULT {.stdcall.}
-    GetHostInfo*: proc(self: ptr IDocHostUIHandler, pInfo: ptr DOCHOSTUIINFO): HRESULT {.stdcall.}
-    ShowUI*: proc(self: ptr IDocHostUIHandler, dwID: DWORD, pActiveObject: ptr IOleInPlaceActiveObject, pCommandTarget: ptr IOleCommandTarget, pFrame: ptr IOleInPlaceFrame, pDoc: ptr IOleInPlaceUIWindow): HRESULT {.stdcall.}
+    ShowContextMenu*: proc(
+      self: ptr IDocHostUIHandler,
+      dwID: DWORD,
+      ppt: ptr POINT,
+      pcmdtReserved: ptr IUnknown,
+      pdispReserved: ptr IDispatch,
+    ): HRESULT {.stdcall.}
+    GetHostInfo*:
+      proc(self: ptr IDocHostUIHandler, pInfo: ptr DOCHOSTUIINFO): HRESULT {.stdcall.}
+    ShowUI*: proc(
+      self: ptr IDocHostUIHandler,
+      dwID: DWORD,
+      pActiveObject: ptr IOleInPlaceActiveObject,
+      pCommandTarget: ptr IOleCommandTarget,
+      pFrame: ptr IOleInPlaceFrame,
+      pDoc: ptr IOleInPlaceUIWindow,
+    ): HRESULT {.stdcall.}
     HideUI*: proc(self: ptr IDocHostUIHandler): HRESULT {.stdcall.}
     UpdateUI*: proc(self: ptr IDocHostUIHandler): HRESULT {.stdcall.}
-    EnableModeless*: proc(self: ptr IDocHostUIHandler, fEnable: WINBOOL): HRESULT {.stdcall.}
-    OnDocWindowActivate*: proc(self: ptr IDocHostUIHandler, fActivate: WINBOOL): HRESULT {.stdcall.}
-    OnFrameWindowActivate*: proc(self: ptr IDocHostUIHandler, fActivate: WINBOOL): HRESULT {.stdcall.}
-    ResizeBorder*: proc(self: ptr IDocHostUIHandler, prcBorder: LPCRECT, pUIWindow: ptr IOleInPlaceUIWindow, fRameWindow: WINBOOL): HRESULT {.stdcall.}
-    TranslateAccelerator*: proc(self: ptr IDocHostUIHandler, lpMsg: LPMSG, pguidCmdGroup: ptr GUID, nCmdID: DWORD): HRESULT {.stdcall.}
-    GetOptionKeyPath*: proc(self: ptr IDocHostUIHandler, pchKey: ptr LPOLESTR, dw: DWORD): HRESULT {.stdcall.}
-    GetDropTarget*: proc(self: ptr IDocHostUIHandler, pDropTarget: ptr IDropTarget, ppDropTarget: ptr ptr IDropTarget): HRESULT {.stdcall.}
-    GetExternal*: proc(self: ptr IDocHostUIHandler, ppDispatch: ptr ptr IDispatch): HRESULT {.stdcall.}
-    TranslateUrl*: proc(self: ptr IDocHostUIHandler, dwTranslate: DWORD, pchURLIn: LPWSTR, ppchURLOut: ptr LPWSTR): HRESULT {.stdcall.}
-    FilterDataObject*: proc(self: ptr IDocHostUIHandler, pDO: ptr IDataObject, ppDORet: ptr ptr IDataObject): HRESULT {.stdcall.}
+    EnableModeless*:
+      proc(self: ptr IDocHostUIHandler, fEnable: WINBOOL): HRESULT {.stdcall.}
+    OnDocWindowActivate*:
+      proc(self: ptr IDocHostUIHandler, fActivate: WINBOOL): HRESULT {.stdcall.}
+    OnFrameWindowActivate*:
+      proc(self: ptr IDocHostUIHandler, fActivate: WINBOOL): HRESULT {.stdcall.}
+    ResizeBorder*: proc(
+      self: ptr IDocHostUIHandler,
+      prcBorder: LPCRECT,
+      pUIWindow: ptr IOleInPlaceUIWindow,
+      fRameWindow: WINBOOL,
+    ): HRESULT {.stdcall.}
+    TranslateAccelerator*: proc(
+      self: ptr IDocHostUIHandler, lpMsg: LPMSG, pguidCmdGroup: ptr GUID, nCmdID: DWORD
+    ): HRESULT {.stdcall.}
+    GetOptionKeyPath*: proc(
+      self: ptr IDocHostUIHandler, pchKey: ptr LPOLESTR, dw: DWORD
+    ): HRESULT {.stdcall.}
+    GetDropTarget*: proc(
+      self: ptr IDocHostUIHandler,
+      pDropTarget: ptr IDropTarget,
+      ppDropTarget: ptr ptr IDropTarget,
+    ): HRESULT {.stdcall.}
+    GetExternal*: proc(
+      self: ptr IDocHostUIHandler, ppDispatch: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    TranslateUrl*: proc(
+      self: ptr IDocHostUIHandler,
+      dwTranslate: DWORD,
+      pchURLIn: LPWSTR,
+      ppchURLOut: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+    FilterDataObject*: proc(
+      self: ptr IDocHostUIHandler, pDO: ptr IDataObject, ppDORet: ptr ptr IDataObject
+    ): HRESULT {.stdcall.}
+
   IDocHostUIHandler2* {.pure.} = object
     lpVtbl*: ptr IDocHostUIHandler2Vtbl
+
   IDocHostUIHandler2Vtbl* {.pure, inheritable.} = object of IDocHostUIHandlerVtbl
-    GetOverrideKeyPath*: proc(self: ptr IDocHostUIHandler2, pchKey: ptr LPOLESTR, dw: DWORD): HRESULT {.stdcall.}
+    GetOverrideKeyPath*: proc(
+      self: ptr IDocHostUIHandler2, pchKey: ptr LPOLESTR, dw: DWORD
+    ): HRESULT {.stdcall.}
+
   ICustomDoc* {.pure.} = object
     lpVtbl*: ptr ICustomDocVtbl
+
   ICustomDocVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetUIHandler*: proc(self: ptr ICustomDoc, pUIHandler: ptr IDocHostUIHandler): HRESULT {.stdcall.}
+    SetUIHandler*:
+      proc(self: ptr ICustomDoc, pUIHandler: ptr IDocHostUIHandler): HRESULT {.stdcall.}
+
   IDocHostShowUI* {.pure.} = object
     lpVtbl*: ptr IDocHostShowUIVtbl
+
   IDocHostShowUIVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ShowMessage*: proc(self: ptr IDocHostShowUI, hwnd: HWND, lpstrText: LPOLESTR, lpstrCaption: LPOLESTR, dwType: DWORD, lpstrHelpFile: LPOLESTR, dwHelpContext: DWORD, plResult: ptr LRESULT): HRESULT {.stdcall.}
-    ShowHelp*: proc(self: ptr IDocHostShowUI, hwnd: HWND, pszHelpFile: LPOLESTR, uCommand: UINT, dwData: DWORD, ptMouse: POINT, pDispatchObjectHit: ptr IDispatch): HRESULT {.stdcall.}
+    ShowMessage*: proc(
+      self: ptr IDocHostShowUI,
+      hwnd: HWND,
+      lpstrText: LPOLESTR,
+      lpstrCaption: LPOLESTR,
+      dwType: DWORD,
+      lpstrHelpFile: LPOLESTR,
+      dwHelpContext: DWORD,
+      plResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+    ShowHelp*: proc(
+      self: ptr IDocHostShowUI,
+      hwnd: HWND,
+      pszHelpFile: LPOLESTR,
+      uCommand: UINT,
+      dwData: DWORD,
+      ptMouse: POINT,
+      pDispatchObjectHit: ptr IDispatch,
+    ): HRESULT {.stdcall.}
+
   IHTMLOMWindowServices* {.pure.} = object
     lpVtbl*: ptr IHTMLOMWindowServicesVtbl
+
   IHTMLOMWindowServicesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    moveTo*: proc(self: ptr IHTMLOMWindowServices, x: LONG, y: LONG): HRESULT {.stdcall.}
-    moveBy*: proc(self: ptr IHTMLOMWindowServices, x: LONG, y: LONG): HRESULT {.stdcall.}
-    resizeTo*: proc(self: ptr IHTMLOMWindowServices, x: LONG, y: LONG): HRESULT {.stdcall.}
-    resizeBy*: proc(self: ptr IHTMLOMWindowServices, x: LONG, y: LONG): HRESULT {.stdcall.}
-proc GetDispID*(self: ptr IDispatchEx, bstrName: BSTR, grfdex: DWORD, pid: ptr DISPID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDispID(self, bstrName, grfdex, pid)
-proc InvokeEx*(self: ptr IDispatchEx, id: DISPID, lcid: LCID, wFlags: WORD, pdp: ptr DISPPARAMS, pvarRes: ptr VARIANT, pei: ptr EXCEPINFO, pspCaller: ptr IServiceProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvokeEx(self, id, lcid, wFlags, pdp, pvarRes, pei, pspCaller)
-proc DeleteMemberByName*(self: ptr IDispatchEx, bstrName: BSTR, grfdex: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteMemberByName(self, bstrName, grfdex)
-proc DeleteMemberByDispID*(self: ptr IDispatchEx, id: DISPID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteMemberByDispID(self, id)
-proc GetMemberProperties*(self: ptr IDispatchEx, id: DISPID, grfdexFetch: DWORD, pgrfdex: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMemberProperties(self, id, grfdexFetch, pgrfdex)
-proc GetMemberName*(self: ptr IDispatchEx, id: DISPID, pbstrName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMemberName(self, id, pbstrName)
-proc GetNextDispID*(self: ptr IDispatchEx, grfdex: DWORD, id: DISPID, pid: ptr DISPID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNextDispID(self, grfdex, id, pid)
-proc GetNameSpaceParent*(self: ptr IDispatchEx, ppunk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNameSpaceParent(self, ppunk)
-proc QueryErrorInfo*(self: ptr IDispError, guidErrorType: GUID, ppde: ptr ptr IDispError): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryErrorInfo(self, guidErrorType, ppde)
-proc GetNext*(self: ptr IDispError, ppde: ptr ptr IDispError): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNext(self, ppde)
-proc GetHresult*(self: ptr IDispError, phr: ptr HRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHresult(self, phr)
-proc GetSource*(self: ptr IDispError, pbstrSource: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSource(self, pbstrSource)
-proc GetHelpInfo*(self: ptr IDispError, pbstrFileName: ptr BSTR, pdwContext: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHelpInfo(self, pbstrFileName, pdwContext)
-proc GetDescription*(self: ptr IDispError, pbstrDescription: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDescription(self, pbstrDescription)
-proc ChangeType*(self: ptr IVariantChangeType, pvarDst: ptr VARIANT, pvarSrc: ptr VARIANT, lcid: LCID, vtNew: VARTYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ChangeType(self, pvarDst, pvarSrc, lcid, vtNew)
-proc IsEqualObject*(self: ptr IObjectIdentity, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsEqualObject(self, punk)
-proc CanHandleException*(self: ptr ICanHandleException, pExcepInfo: ptr EXCEPINFO, pvar: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CanHandleException(self, pExcepInfo, pvar)
-proc GetCurrentSourceContext*(self: ptr IProvideRuntimeContext, pdwContext: ptr DWORD_PTR, pfExecutingGlobalCode: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentSourceContext(self, pdwContext, pfExecutingGlobalCode)
-proc get_length*(self: ptr IHTMLFiltersCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IHTMLFiltersCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc item*(self: ptr IHTMLFiltersCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, pvarIndex, pvarResult)
-proc get_constructor*(self: ptr IHTMLDOMConstructor, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_constructor(self, p)
-proc LookupGetter*(self: ptr IHTMLDOMConstructor, propname: BSTR, ppDispHandler: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LookupGetter(self, propname, ppDispHandler)
-proc LookupSetter*(self: ptr IHTMLDOMConstructor, propname: BSTR, ppDispHandler: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LookupSetter(self, propname, ppDispHandler)
-proc DefineGetter*(self: ptr IHTMLDOMConstructor, propname: BSTR, pdispHandler: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DefineGetter(self, propname, pdispHandler)
-proc DefineSetter*(self: ptr IHTMLDOMConstructor, propname: BSTR, pdispHandler: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DefineSetter(self, propname, pdispHandler)
-proc get_length*(self: ptr IHTMLCSSStyleDeclaration, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_parentRule*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentRule(self, p)
-proc getPropertyValue*(self: ptr IHTMLCSSStyleDeclaration, bstrPropertyName: BSTR, pbstrPropertyValue: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getPropertyValue(self, bstrPropertyName, pbstrPropertyValue)
-proc getPropertyPriority*(self: ptr IHTMLCSSStyleDeclaration, bstrPropertyName: BSTR, pbstrPropertyPriority: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getPropertyPriority(self, bstrPropertyName, pbstrPropertyPriority)
-proc removeProperty*(self: ptr IHTMLCSSStyleDeclaration, bstrPropertyName: BSTR, pbstrPropertyValue: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeProperty(self, bstrPropertyName, pbstrPropertyValue)
-proc setProperty*(self: ptr IHTMLCSSStyleDeclaration, bstrPropertyName: BSTR, pvarPropertyValue: ptr VARIANT, pvarPropertyPriority: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setProperty(self, bstrPropertyName, pvarPropertyValue, pvarPropertyPriority)
-proc item*(self: ptr IHTMLCSSStyleDeclaration, index: LONG, pbstrPropertyName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, pbstrPropertyName)
-proc put_fontFamily*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontFamily(self, v)
-proc get_fontFamily*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontFamily(self, p)
-proc put_fontStyle*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontStyle(self, v)
-proc get_fontStyle*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontStyle(self, p)
-proc put_fontVariant*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontVariant(self, v)
-proc get_fontVariant*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontVariant(self, p)
-proc put_fontWeight*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontWeight(self, v)
-proc get_fontWeight*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontWeight(self, p)
-proc put_fontSize*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontSize(self, v)
-proc get_fontSize*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontSize(self, p)
-proc put_font*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_font(self, v)
-proc get_font*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_font(self, p)
-proc put_color*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_color(self, v)
-proc get_color*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_color(self, p)
-proc put_background*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_background(self, v)
-proc get_background*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_background(self, p)
-proc put_backgroundColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundColor(self, v)
-proc get_backgroundColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundColor(self, p)
-proc put_backgroundImage*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundImage(self, v)
-proc get_backgroundImage*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundImage(self, p)
-proc put_backgroundRepeat*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundRepeat(self, v)
-proc get_backgroundRepeat*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundRepeat(self, p)
-proc put_backgroundAttachment*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundAttachment(self, v)
-proc get_backgroundAttachment*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundAttachment(self, p)
-proc put_backgroundPosition*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPosition(self, v)
-proc get_backgroundPosition*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPosition(self, p)
-proc put_backgroundPositionX*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPositionX(self, v)
-proc get_backgroundPositionX*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPositionX(self, p)
-proc put_backgroundPositionY*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPositionY(self, v)
-proc get_backgroundPositionY*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPositionY(self, p)
-proc put_wordSpacing*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_wordSpacing(self, v)
-proc get_wordSpacing*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wordSpacing(self, p)
-proc put_letterSpacing*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_letterSpacing(self, v)
-proc get_letterSpacing*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_letterSpacing(self, p)
-proc put_textDecoration*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecoration(self, v)
-proc get_textDecoration*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecoration(self, p)
-proc put_verticalAlign*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_verticalAlign(self, v)
-proc get_verticalAlign*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_verticalAlign(self, p)
-proc put_textTransform*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textTransform(self, v)
-proc get_textTransform*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textTransform(self, p)
-proc put_textAlign*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textAlign(self, v)
-proc get_textAlign*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAlign(self, p)
-proc put_textIndent*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textIndent(self, v)
-proc get_textIndent*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textIndent(self, p)
-proc put_lineHeight*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lineHeight(self, v)
-proc get_lineHeight*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lineHeight(self, p)
-proc put_marginTop*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginTop(self, v)
-proc get_marginTop*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginTop(self, p)
-proc put_marginRight*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginRight(self, v)
-proc get_marginRight*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginRight(self, p)
-proc put_marginBottom*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginBottom(self, v)
-proc get_marginBottom*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginBottom(self, p)
-proc put_marginLeft*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginLeft(self, v)
-proc get_marginLeft*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginLeft(self, p)
-proc put_margin*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_margin(self, v)
-proc get_margin*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_margin(self, p)
-proc put_paddingTop*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingTop(self, v)
-proc get_paddingTop*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingTop(self, p)
-proc put_paddingRight*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingRight(self, v)
-proc get_paddingRight*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingRight(self, p)
-proc put_paddingBottom*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingBottom(self, v)
-proc get_paddingBottom*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingBottom(self, p)
-proc put_paddingLeft*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingLeft(self, v)
-proc get_paddingLeft*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingLeft(self, p)
-proc put_padding*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_padding(self, v)
-proc get_padding*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_padding(self, p)
-proc put_border*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_border(self, v)
-proc get_border*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_border(self, p)
-proc put_borderTop*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTop(self, v)
-proc get_borderTop*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTop(self, p)
-proc put_borderRight*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRight(self, v)
-proc get_borderRight*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRight(self, p)
-proc put_borderBottom*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottom(self, v)
-proc get_borderBottom*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottom(self, p)
-proc put_borderLeft*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeft(self, v)
-proc get_borderLeft*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeft(self, p)
-proc put_borderColor*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColor(self, v)
-proc get_borderColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColor(self, p)
-proc put_borderTopColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopColor(self, v)
-proc get_borderTopColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopColor(self, p)
-proc put_borderRightColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightColor(self, v)
-proc get_borderRightColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightColor(self, p)
-proc put_borderBottomColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomColor(self, v)
-proc get_borderBottomColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomColor(self, p)
-proc put_borderLeftColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftColor(self, v)
-proc get_borderLeftColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftColor(self, p)
-proc put_borderWidth*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderWidth(self, v)
-proc get_borderWidth*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderWidth(self, p)
-proc put_borderTopWidth*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopWidth(self, v)
-proc get_borderTopWidth*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopWidth(self, p)
-proc put_borderRightWidth*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightWidth(self, v)
-proc get_borderRightWidth*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightWidth(self, p)
-proc put_borderBottomWidth*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomWidth(self, v)
-proc get_borderBottomWidth*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomWidth(self, p)
-proc put_borderLeftWidth*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftWidth(self, v)
-proc get_borderLeftWidth*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftWidth(self, p)
-proc put_borderStyle*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderStyle(self, v)
-proc get_borderStyle*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderStyle(self, p)
-proc put_borderTopStyle*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopStyle(self, v)
-proc get_borderTopStyle*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopStyle(self, p)
-proc put_borderRightStyle*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightStyle(self, v)
-proc get_borderRightStyle*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightStyle(self, p)
-proc put_borderBottomStyle*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomStyle(self, v)
-proc get_borderBottomStyle*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomStyle(self, p)
-proc put_borderLeftStyle*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftStyle(self, v)
-proc get_borderLeftStyle*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftStyle(self, p)
-proc put_width*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_height*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_styleFloat*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_styleFloat(self, v)
-proc get_styleFloat*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_styleFloat(self, p)
-proc put_clear*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clear(self, v)
-proc get_clear*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clear(self, p)
-proc put_display*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_display(self, v)
-proc get_display*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_display(self, p)
-proc put_visibility*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_visibility(self, v)
-proc get_visibility*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_visibility(self, p)
-proc put_listStyleType*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyleType(self, v)
-proc get_listStyleType*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyleType(self, p)
-proc put_listStylePosition*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStylePosition(self, v)
-proc get_listStylePosition*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStylePosition(self, p)
-proc put_listStyleImage*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyleImage(self, v)
-proc get_listStyleImage*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyleImage(self, p)
-proc put_listStyle*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyle(self, v)
-proc get_listStyle*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyle(self, p)
-proc put_whiteSpace*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_whiteSpace(self, v)
-proc get_whiteSpace*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_whiteSpace(self, p)
-proc put_top*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_top(self, v)
-proc get_top*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_top(self, p)
-proc put_left*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_left(self, v)
-proc get_left*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_left(self, p)
-proc put_zIndex*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_zIndex(self, v)
-proc get_zIndex*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_zIndex(self, p)
-proc put_overflow*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_overflow(self, v)
-proc get_overflow*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overflow(self, p)
-proc put_pageBreakBefore*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageBreakBefore(self, v)
-proc get_pageBreakBefore*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakBefore(self, p)
-proc put_pageBreakAfter*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageBreakAfter(self, v)
-proc get_pageBreakAfter*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakAfter(self, p)
-proc put_cssText*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cssText(self, v)
-proc get_cssText*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cssText(self, p)
-proc put_cursor*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cursor(self, v)
-proc get_cursor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cursor(self, p)
-proc put_clip*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clip(self, v)
-proc get_clip*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clip(self, p)
-proc put_filter*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_filter(self, v)
-proc get_filter*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_filter(self, p)
-proc put_tableLayout*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_tableLayout(self, v)
-proc get_tableLayout*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tableLayout(self, p)
-proc put_borderCollapse*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderCollapse(self, v)
-proc get_borderCollapse*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderCollapse(self, p)
-proc put_direction*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_direction(self, v)
-proc get_direction*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_direction(self, p)
-proc put_behavior*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_behavior(self, v)
-proc get_behavior*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_behavior(self, p)
-proc put_position*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_position(self, v)
-proc get_position*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_position(self, p)
-proc put_unicodeBidi*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_unicodeBidi(self, v)
-proc get_unicodeBidi*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_unicodeBidi(self, p)
-proc put_bottom*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bottom(self, v)
-proc get_bottom*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bottom(self, p)
-proc put_right*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_right(self, v)
-proc get_right*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_right(self, p)
-proc put_imeMode*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_imeMode(self, v)
-proc get_imeMode*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_imeMode(self, p)
-proc put_rubyAlign*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rubyAlign(self, v)
-proc get_rubyAlign*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rubyAlign(self, p)
-proc put_rubyPosition*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rubyPosition(self, v)
-proc get_rubyPosition*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rubyPosition(self, p)
-proc put_rubyOverhang*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rubyOverhang(self, v)
-proc get_rubyOverhang*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rubyOverhang(self, p)
-proc put_layoutGridChar*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGridChar(self, v)
-proc get_layoutGridChar*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridChar(self, p)
-proc put_layoutGridLine*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGridLine(self, v)
-proc get_layoutGridLine*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridLine(self, p)
-proc put_layoutGridMode*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGridMode(self, v)
-proc get_layoutGridMode*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridMode(self, p)
-proc put_layoutGridType*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGridType(self, v)
-proc get_layoutGridType*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridType(self, p)
-proc put_layoutGrid*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGrid(self, v)
-proc get_layoutGrid*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGrid(self, p)
-proc put_textAutospace*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textAutospace(self, v)
-proc get_textAutospace*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAutospace(self, p)
-proc put_wordBreak*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_wordBreak(self, v)
-proc get_wordBreak*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wordBreak(self, p)
-proc put_lineBreak*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lineBreak(self, v)
-proc get_lineBreak*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lineBreak(self, p)
-proc put_textJustify*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textJustify(self, v)
-proc get_textJustify*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textJustify(self, p)
-proc put_textJustifyTrim*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textJustifyTrim(self, v)
-proc get_textJustifyTrim*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textJustifyTrim(self, p)
-proc put_textKashida*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textKashida(self, v)
-proc get_textKashida*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textKashida(self, p)
-proc put_overflowX*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_overflowX(self, v)
-proc get_overflowX*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overflowX(self, p)
-proc put_overflowY*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_overflowY(self, v)
-proc get_overflowY*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overflowY(self, p)
-proc put_accelerator*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_accelerator(self, v)
-proc get_accelerator*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accelerator(self, p)
-proc put_layoutFlow*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutFlow(self, v)
-proc get_layoutFlow*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutFlow(self, p)
-proc put_zoom*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_zoom(self, v)
-proc get_zoom*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_zoom(self, p)
-proc put_wordWrap*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_wordWrap(self, v)
-proc get_wordWrap*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wordWrap(self, p)
-proc put_textUnderlinePosition*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textUnderlinePosition(self, v)
-proc get_textUnderlinePosition*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textUnderlinePosition(self, p)
-proc put_scrollbarBaseColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarBaseColor(self, v)
-proc get_scrollbarBaseColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarBaseColor(self, p)
-proc put_scrollbarFaceColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarFaceColor(self, v)
-proc get_scrollbarFaceColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarFaceColor(self, p)
-proc put_scrollbar3dLightColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbar3dLightColor(self, v)
-proc get_scrollbar3dLightColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbar3dLightColor(self, p)
-proc put_scrollbarShadowColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarShadowColor(self, v)
-proc get_scrollbarShadowColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarShadowColor(self, p)
-proc put_scrollbarHighlightColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarHighlightColor(self, v)
-proc get_scrollbarHighlightColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarHighlightColor(self, p)
-proc put_scrollbarDarkShadowColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarDarkShadowColor(self, v)
-proc get_scrollbarDarkShadowColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarDarkShadowColor(self, p)
-proc put_scrollbarArrowColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarArrowColor(self, v)
-proc get_scrollbarArrowColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarArrowColor(self, p)
-proc put_scrollbarTrackColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarTrackColor(self, v)
-proc get_scrollbarTrackColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarTrackColor(self, p)
-proc put_writingMode*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_writingMode(self, v)
-proc get_writingMode*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_writingMode(self, p)
-proc put_textAlignLast*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textAlignLast(self, v)
-proc get_textAlignLast*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAlignLast(self, p)
-proc put_textKashidaSpace*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textKashidaSpace(self, v)
-proc get_textKashidaSpace*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textKashidaSpace(self, p)
-proc put_textOverflow*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textOverflow(self, v)
-proc get_textOverflow*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textOverflow(self, p)
-proc put_minHeight*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_minHeight(self, v)
-proc get_minHeight*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_minHeight(self, p)
-proc put_msInterpolationMode*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msInterpolationMode(self, v)
-proc get_msInterpolationMode*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msInterpolationMode(self, p)
-proc put_maxHeight*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_maxHeight(self, v)
-proc get_maxHeight*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maxHeight(self, p)
-proc put_minWidth*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_minWidth(self, v)
-proc get_minWidth*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_minWidth(self, p)
-proc put_maxWidth*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_maxWidth(self, v)
-proc get_maxWidth*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maxWidth(self, p)
-proc put_content*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_content(self, v)
-proc get_content*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_content(self, p)
-proc put_captionSide*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_captionSide(self, v)
-proc get_captionSide*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_captionSide(self, p)
-proc put_counterIncrement*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_counterIncrement(self, v)
-proc get_counterIncrement*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_counterIncrement(self, p)
-proc put_counterReset*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_counterReset(self, v)
-proc get_counterReset*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_counterReset(self, p)
-proc put_outline*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outline(self, v)
-proc get_outline*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outline(self, p)
-proc put_outlineWidth*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outlineWidth(self, v)
-proc get_outlineWidth*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outlineWidth(self, p)
-proc put_outlineStyle*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outlineStyle(self, v)
-proc get_outlineStyle*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outlineStyle(self, p)
-proc put_outlineColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outlineColor(self, v)
-proc get_outlineColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outlineColor(self, p)
-proc put_boxSizing*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_boxSizing(self, v)
-proc get_boxSizing*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_boxSizing(self, p)
-proc put_borderSpacing*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderSpacing(self, v)
-proc get_borderSpacing*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderSpacing(self, p)
-proc put_orphans*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_orphans(self, v)
-proc get_orphans*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_orphans(self, p)
-proc put_widows*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_widows(self, v)
-proc get_widows*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_widows(self, p)
-proc put_pageBreakInside*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageBreakInside(self, v)
-proc get_pageBreakInside*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakInside(self, p)
-proc put_emptyCells*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_emptyCells(self, v)
-proc get_emptyCells*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_emptyCells(self, p)
-proc put_msBlockProgression*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msBlockProgression(self, v)
-proc get_msBlockProgression*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msBlockProgression(self, p)
-proc put_quotes*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_quotes(self, v)
-proc get_quotes*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_quotes(self, p)
-proc put_alignmentBaseline*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_alignmentBaseline(self, v)
-proc get_alignmentBaseline*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_alignmentBaseline(self, p)
-proc put_baselineShift*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_baselineShift(self, v)
-proc get_baselineShift*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baselineShift(self, p)
-proc put_dominantBaseline*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dominantBaseline(self, v)
-proc get_dominantBaseline*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dominantBaseline(self, p)
-proc put_fontSizeAdjust*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontSizeAdjust(self, v)
-proc get_fontSizeAdjust*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontSizeAdjust(self, p)
-proc put_fontStretch*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontStretch(self, v)
-proc get_fontStretch*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontStretch(self, p)
-proc put_opacity*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_opacity(self, v)
-proc get_opacity*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_opacity(self, p)
-proc put_clipPath*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clipPath(self, v)
-proc get_clipPath*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clipPath(self, p)
-proc put_clipRule*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clipRule(self, v)
-proc get_clipRule*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clipRule(self, p)
-proc put_fill*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fill(self, v)
-proc get_fill*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fill(self, p)
-proc put_fillOpacity*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fillOpacity(self, v)
-proc get_fillOpacity*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fillOpacity(self, p)
-proc put_fillRule*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fillRule(self, v)
-proc get_fillRule*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fillRule(self, p)
-proc put_kerning*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_kerning(self, v)
-proc get_kerning*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_kerning(self, p)
-proc put_marker*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marker(self, v)
-proc get_marker*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marker(self, p)
-proc put_markerEnd*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_markerEnd(self, v)
-proc get_markerEnd*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_markerEnd(self, p)
-proc put_markerMid*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_markerMid(self, v)
-proc get_markerMid*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_markerMid(self, p)
-proc put_markerStart*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_markerStart(self, v)
-proc get_markerStart*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_markerStart(self, p)
-proc put_mask*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_mask(self, v)
-proc get_mask*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_mask(self, p)
-proc put_pointerEvents*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pointerEvents(self, v)
-proc get_pointerEvents*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pointerEvents(self, p)
-proc put_stopColor*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_stopColor(self, v)
-proc get_stopColor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_stopColor(self, p)
-proc put_stopOpacity*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_stopOpacity(self, v)
-proc get_stopOpacity*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_stopOpacity(self, p)
-proc put_stroke*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_stroke(self, v)
-proc get_stroke*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_stroke(self, p)
-proc put_strokeDasharray*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_strokeDasharray(self, v)
-proc get_strokeDasharray*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_strokeDasharray(self, p)
-proc put_strokeDashoffset*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_strokeDashoffset(self, v)
-proc get_strokeDashoffset*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_strokeDashoffset(self, p)
-proc put_strokeLinecap*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_strokeLinecap(self, v)
-proc get_strokeLinecap*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_strokeLinecap(self, p)
-proc put_strokeLinejoin*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_strokeLinejoin(self, v)
-proc get_strokeLinejoin*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_strokeLinejoin(self, p)
-proc put_strokeMiterlimit*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_strokeMiterlimit(self, v)
-proc get_strokeMiterlimit*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_strokeMiterlimit(self, p)
-proc put_strokeOpacity*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_strokeOpacity(self, v)
-proc get_strokeOpacity*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_strokeOpacity(self, p)
-proc put_strokeWidth*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_strokeWidth(self, v)
-proc get_strokeWidth*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_strokeWidth(self, p)
-proc put_textAnchor*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textAnchor(self, v)
-proc get_textAnchor*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAnchor(self, p)
-proc put_glyphOrientationHorizontal*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_glyphOrientationHorizontal(self, v)
-proc get_glyphOrientationHorizontal*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_glyphOrientationHorizontal(self, p)
-proc put_glyphOrientationVertical*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_glyphOrientationVertical(self, v)
-proc get_glyphOrientationVertical*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_glyphOrientationVertical(self, p)
-proc put_borderRadius*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRadius(self, v)
-proc get_borderRadius*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRadius(self, p)
-proc put_borderTopLeftRadius*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopLeftRadius(self, v)
-proc get_borderTopLeftRadius*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopLeftRadius(self, p)
-proc put_borderTopRightRadius*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopRightRadius(self, v)
-proc get_borderTopRightRadius*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopRightRadius(self, p)
-proc put_borderBottomRightRadius*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomRightRadius(self, v)
-proc get_borderBottomRightRadius*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomRightRadius(self, p)
-proc put_borderBottomLeftRadius*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomLeftRadius(self, v)
-proc get_borderBottomLeftRadius*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomLeftRadius(self, p)
-proc put_clipTop*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clipTop(self, v)
-proc get_clipTop*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clipTop(self, p)
-proc put_clipRight*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clipRight(self, v)
-proc get_clipRight*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clipRight(self, p)
-proc get_clipBottom*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clipBottom(self, p)
-proc put_clipLeft*(self: ptr IHTMLCSSStyleDeclaration, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clipLeft(self, v)
-proc get_clipLeft*(self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clipLeft(self, p)
-proc put_cssFloat*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cssFloat(self, v)
-proc get_cssFloat*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cssFloat(self, p)
-proc put_backgroundClip*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundClip(self, v)
-proc get_backgroundClip*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundClip(self, p)
-proc put_backgroundOrigin*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundOrigin(self, v)
-proc get_backgroundOrigin*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundOrigin(self, p)
-proc put_backgroundSize*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundSize(self, v)
-proc get_backgroundSize*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundSize(self, p)
-proc put_boxShadow*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_boxShadow(self, v)
-proc get_boxShadow*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_boxShadow(self, p)
-proc put_msTransform*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msTransform(self, v)
-proc get_msTransform*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msTransform(self, p)
-proc put_msTransformOrigin*(self: ptr IHTMLCSSStyleDeclaration, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msTransformOrigin(self, v)
-proc get_msTransformOrigin*(self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msTransformOrigin(self, p)
-proc put_msScrollChaining*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msScrollChaining(self, v)
-proc get_msScrollChaining*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msScrollChaining(self, p)
-proc put_msContentZooming*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msContentZooming(self, v)
-proc get_msContentZooming*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msContentZooming(self, p)
-proc put_msContentZoomSnapType*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msContentZoomSnapType(self, v)
-proc get_msContentZoomSnapType*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msContentZoomSnapType(self, p)
-proc put_msScrollRails*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msScrollRails(self, v)
-proc get_msScrollRails*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msScrollRails(self, p)
-proc put_msContentZoomChaining*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msContentZoomChaining(self, v)
-proc get_msContentZoomChaining*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msContentZoomChaining(self, p)
-proc put_msScrollSnapType*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msScrollSnapType(self, v)
-proc get_msScrollSnapType*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msScrollSnapType(self, p)
-proc put_msContentZoomLimit*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msContentZoomLimit(self, v)
-proc get_msContentZoomLimit*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msContentZoomLimit(self, p)
-proc put_msContentZoomSnap*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msContentZoomSnap(self, v)
-proc get_msContentZoomSnap*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msContentZoomSnap(self, p)
-proc put_msContentZoomSnapPoints*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msContentZoomSnapPoints(self, v)
-proc get_msContentZoomSnapPoints*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msContentZoomSnapPoints(self, p)
-proc put_msContentZoomLimitMin*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msContentZoomLimitMin(self, v)
-proc get_msContentZoomLimitMin*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msContentZoomLimitMin(self, p)
-proc put_msContentZoomLimitMax*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msContentZoomLimitMax(self, v)
-proc get_msContentZoomLimitMax*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msContentZoomLimitMax(self, p)
-proc put_msScrollSnapX*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msScrollSnapX(self, v)
-proc get_msScrollSnapX*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msScrollSnapX(self, p)
-proc put_msScrollSnapY*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msScrollSnapY(self, v)
-proc get_msScrollSnapY*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msScrollSnapY(self, p)
-proc put_msScrollSnapPointsX*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msScrollSnapPointsX(self, v)
-proc get_msScrollSnapPointsX*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msScrollSnapPointsX(self, p)
-proc put_msScrollSnapPointsY*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msScrollSnapPointsY(self, v)
-proc get_msScrollSnapPointsY*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msScrollSnapPointsY(self, p)
-proc put_msGridColumn*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msGridColumn(self, v)
-proc get_msGridColumn*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msGridColumn(self, p)
-proc put_msGridColumnAlign*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msGridColumnAlign(self, v)
-proc get_msGridColumnAlign*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msGridColumnAlign(self, p)
-proc put_msGridColumns*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msGridColumns(self, v)
-proc get_msGridColumns*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msGridColumns(self, p)
-proc put_msGridColumnSpan*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msGridColumnSpan(self, v)
-proc get_msGridColumnSpan*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msGridColumnSpan(self, p)
-proc put_msGridRow*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msGridRow(self, v)
-proc get_msGridRow*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msGridRow(self, p)
-proc put_msGridRowAlign*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msGridRowAlign(self, v)
-proc get_msGridRowAlign*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msGridRowAlign(self, p)
-proc put_msGridRows*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msGridRows(self, v)
-proc get_msGridRows*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msGridRows(self, p)
-proc put_msGridRowSpan*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msGridRowSpan(self, v)
-proc get_msGridRowSpan*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msGridRowSpan(self, p)
-proc put_msWrapThrough*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msWrapThrough(self, v)
-proc get_msWrapThrough*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msWrapThrough(self, p)
-proc put_msWrapMargin*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msWrapMargin(self, v)
-proc get_msWrapMargin*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msWrapMargin(self, p)
-proc put_msWrapFlow*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msWrapFlow(self, v)
-proc get_msWrapFlow*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msWrapFlow(self, p)
-proc put_msAnimationName*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msAnimationName(self, v)
-proc get_msAnimationName*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msAnimationName(self, p)
-proc put_msAnimationDuration*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msAnimationDuration(self, v)
-proc get_msAnimationDuration*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msAnimationDuration(self, p)
-proc put_msAnimationTimingFunction*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msAnimationTimingFunction(self, v)
-proc get_msAnimationTimingFunction*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msAnimationTimingFunction(self, p)
-proc put_msAnimationDelay*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msAnimationDelay(self, v)
-proc get_msAnimationDelay*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msAnimationDelay(self, p)
-proc put_msAnimationDirection*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msAnimationDirection(self, v)
-proc get_msAnimationDirection*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msAnimationDirection(self, p)
-proc put_msAnimationPlayState*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msAnimationPlayState(self, v)
-proc get_msAnimationPlayState*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msAnimationPlayState(self, p)
-proc put_msAnimationIterationCount*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msAnimationIterationCount(self, v)
-proc get_msAnimationIterationCount*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msAnimationIterationCount(self, p)
-proc put_msAnimation*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msAnimation(self, v)
-proc get_msAnimation*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msAnimation(self, p)
-proc put_msAnimationFillMode*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msAnimationFillMode(self, v)
-proc get_msAnimationFillMode*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msAnimationFillMode(self, p)
-proc put_colorInterpolationFilters*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_colorInterpolationFilters(self, v)
-proc get_colorInterpolationFilters*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_colorInterpolationFilters(self, p)
-proc put_columnCount*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_columnCount(self, v)
-proc get_columnCount*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_columnCount(self, p)
-proc put_columnWidth*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_columnWidth(self, v)
-proc get_columnWidth*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_columnWidth(self, p)
-proc put_columnGap*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_columnGap(self, v)
-proc get_columnGap*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_columnGap(self, p)
-proc put_columnFill*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_columnFill(self, v)
-proc get_columnFill*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_columnFill(self, p)
-proc put_columnSpan*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_columnSpan(self, v)
-proc get_columnSpan*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_columnSpan(self, p)
-proc put_columns*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_columns(self, v)
-proc get_columns*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_columns(self, p)
-proc put_columnRule*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_columnRule(self, v)
-proc get_columnRule*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_columnRule(self, p)
-proc put_columnRuleColor*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_columnRuleColor(self, v)
-proc get_columnRuleColor*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_columnRuleColor(self, p)
-proc put_columnRuleStyle*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_columnRuleStyle(self, v)
-proc get_columnRuleStyle*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_columnRuleStyle(self, p)
-proc put_columnRuleWidth*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_columnRuleWidth(self, v)
-proc get_columnRuleWidth*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_columnRuleWidth(self, p)
-proc put_breakBefore*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_breakBefore(self, v)
-proc get_breakBefore*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_breakBefore(self, p)
-proc put_breakAfter*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_breakAfter(self, v)
-proc get_breakAfter*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_breakAfter(self, p)
-proc put_breakInside*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_breakInside(self, v)
-proc get_breakInside*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_breakInside(self, p)
-proc put_floodColor*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_floodColor(self, v)
-proc get_floodColor*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_floodColor(self, p)
-proc put_floodOpacity*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_floodOpacity(self, v)
-proc get_floodOpacity*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_floodOpacity(self, p)
-proc put_lightingColor*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lightingColor(self, v)
-proc get_lightingColor*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lightingColor(self, p)
-proc put_msScrollLimitXMin*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msScrollLimitXMin(self, v)
-proc get_msScrollLimitXMin*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msScrollLimitXMin(self, p)
-proc put_msScrollLimitYMin*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msScrollLimitYMin(self, v)
-proc get_msScrollLimitYMin*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msScrollLimitYMin(self, p)
-proc put_msScrollLimitXMax*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msScrollLimitXMax(self, v)
-proc get_msScrollLimitXMax*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msScrollLimitXMax(self, p)
-proc put_msScrollLimitYMax*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msScrollLimitYMax(self, v)
-proc get_msScrollLimitYMax*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msScrollLimitYMax(self, p)
-proc put_msScrollLimit*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msScrollLimit(self, v)
-proc get_msScrollLimit*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msScrollLimit(self, p)
-proc put_textShadow*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textShadow(self, v)
-proc get_textShadow*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textShadow(self, p)
-proc put_msFlowFrom*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFlowFrom(self, v)
-proc get_msFlowFrom*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFlowFrom(self, p)
-proc put_msFlowInto*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFlowInto(self, v)
-proc get_msFlowInto*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFlowInto(self, p)
-proc put_msHyphens*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msHyphens(self, v)
-proc get_msHyphens*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msHyphens(self, p)
-proc put_msHyphenateLimitZone*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msHyphenateLimitZone(self, v)
-proc get_msHyphenateLimitZone*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msHyphenateLimitZone(self, p)
-proc put_msHyphenateLimitChars*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msHyphenateLimitChars(self, v)
-proc get_msHyphenateLimitChars*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msHyphenateLimitChars(self, p)
-proc put_msHyphenateLimitLines*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msHyphenateLimitLines(self, v)
-proc get_msHyphenateLimitLines*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msHyphenateLimitLines(self, p)
-proc put_msHighContrastAdjust*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msHighContrastAdjust(self, v)
-proc get_msHighContrastAdjust*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msHighContrastAdjust(self, p)
-proc put_enableBackground*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_enableBackground(self, v)
-proc get_enableBackground*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_enableBackground(self, p)
-proc put_msFontFeatureSettings*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFontFeatureSettings(self, v)
-proc get_msFontFeatureSettings*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFontFeatureSettings(self, p)
-proc put_msUserSelect*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msUserSelect(self, v)
-proc get_msUserSelect*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msUserSelect(self, p)
-proc put_msOverflowStyle*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msOverflowStyle(self, v)
-proc get_msOverflowStyle*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msOverflowStyle(self, p)
-proc put_msTransformStyle*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msTransformStyle(self, v)
-proc get_msTransformStyle*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msTransformStyle(self, p)
-proc put_msBackfaceVisibility*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msBackfaceVisibility(self, v)
-proc get_msBackfaceVisibility*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msBackfaceVisibility(self, p)
-proc put_msPerspective*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msPerspective(self, v)
-proc get_msPerspective*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msPerspective(self, p)
-proc put_msPerspectiveOrigin*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msPerspectiveOrigin(self, v)
-proc get_msPerspectiveOrigin*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msPerspectiveOrigin(self, p)
-proc put_msTransitionProperty*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msTransitionProperty(self, v)
-proc get_msTransitionProperty*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msTransitionProperty(self, p)
-proc put_msTransitionDuration*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msTransitionDuration(self, v)
-proc get_msTransitionDuration*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msTransitionDuration(self, p)
-proc put_msTransitionTimingFunction*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msTransitionTimingFunction(self, v)
-proc get_msTransitionTimingFunction*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msTransitionTimingFunction(self, p)
-proc put_msTransitionDelay*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msTransitionDelay(self, v)
-proc get_msTransitionDelay*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msTransitionDelay(self, p)
-proc put_msTransition*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msTransition(self, v)
-proc get_msTransition*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msTransition(self, p)
-proc put_msTouchAction*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msTouchAction(self, v)
-proc get_msTouchAction*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msTouchAction(self, p)
-proc put_msScrollTranslation*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msScrollTranslation(self, v)
-proc get_msScrollTranslation*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msScrollTranslation(self, p)
-proc put_msFlex*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFlex(self, v)
-proc get_msFlex*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFlex(self, p)
-proc put_msFlexPositive*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFlexPositive(self, v)
-proc get_msFlexPositive*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFlexPositive(self, p)
-proc put_msFlexNegative*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFlexNegative(self, v)
-proc get_msFlexNegative*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFlexNegative(self, p)
-proc put_msFlexPreferredSize*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFlexPreferredSize(self, v)
-proc get_msFlexPreferredSize*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFlexPreferredSize(self, p)
-proc put_msFlexFlow*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFlexFlow(self, v)
-proc get_msFlexFlow*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFlexFlow(self, p)
-proc put_msFlexDirection*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFlexDirection(self, v)
-proc get_msFlexDirection*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFlexDirection(self, p)
-proc put_msFlexWrap*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFlexWrap(self, v)
-proc get_msFlexWrap*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFlexWrap(self, p)
-proc put_msFlexAlign*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFlexAlign(self, v)
-proc get_msFlexAlign*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFlexAlign(self, p)
-proc put_msFlexItemAlign*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFlexItemAlign(self, v)
-proc get_msFlexItemAlign*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFlexItemAlign(self, p)
-proc put_msFlexPack*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFlexPack(self, v)
-proc get_msFlexPack*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFlexPack(self, p)
-proc put_msFlexLinePack*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFlexLinePack(self, v)
-proc get_msFlexLinePack*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFlexLinePack(self, p)
-proc put_msFlexOrder*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msFlexOrder(self, v)
-proc get_msFlexOrder*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFlexOrder(self, p)
-proc put_msTouchSelect*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msTouchSelect(self, v)
-proc get_msTouchSelect*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msTouchSelect(self, p)
-proc put_transform*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_transform(self, v)
-proc get_transform*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_transform(self, p)
-proc put_transformOrigin*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_transformOrigin(self, v)
-proc get_transformOrigin*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_transformOrigin(self, p)
-proc put_transformStyle*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_transformStyle(self, v)
-proc get_transformStyle*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_transformStyle(self, p)
-proc put_backfaceVisibility*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backfaceVisibility(self, v)
-proc get_backfaceVisibility*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backfaceVisibility(self, p)
-proc put_perspective*(self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_perspective(self, v)
-proc get_perspective*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_perspective(self, p)
-proc put_perspectiveOrigin*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_perspectiveOrigin(self, v)
-proc get_perspectiveOrigin*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_perspectiveOrigin(self, p)
-proc put_transitionProperty*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_transitionProperty(self, v)
-proc get_transitionProperty*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_transitionProperty(self, p)
-proc put_transitionDuration*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_transitionDuration(self, v)
-proc get_transitionDuration*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_transitionDuration(self, p)
-proc put_transitionTimingFunction*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_transitionTimingFunction(self, v)
-proc get_transitionTimingFunction*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_transitionTimingFunction(self, p)
-proc put_transitionDelay*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_transitionDelay(self, v)
-proc get_transitionDelay*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_transitionDelay(self, p)
-proc put_transition*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_transition(self, v)
-proc get_transition*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_transition(self, p)
-proc put_fontFeatureSettings*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontFeatureSettings(self, v)
-proc get_fontFeatureSettings*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontFeatureSettings(self, p)
-proc put_animationName*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_animationName(self, v)
-proc get_animationName*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animationName(self, p)
-proc put_animationDuration*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_animationDuration(self, v)
-proc get_animationDuration*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animationDuration(self, p)
-proc put_animationTimingFunction*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_animationTimingFunction(self, v)
-proc get_animationTimingFunction*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animationTimingFunction(self, p)
-proc put_animationDelay*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_animationDelay(self, v)
-proc get_animationDelay*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animationDelay(self, p)
-proc put_animationDirection*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_animationDirection(self, v)
-proc get_animationDirection*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animationDirection(self, p)
-proc put_animationPlayState*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_animationPlayState(self, v)
-proc get_animationPlayState*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animationPlayState(self, p)
-proc put_animationIterationCount*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_animationIterationCount(self, v)
-proc get_animationIterationCount*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animationIterationCount(self, p)
-proc put_animation*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_animation(self, v)
-proc get_animation*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animation(self, p)
-proc put_animationFillMode*(self: ptr IHTMLCSSStyleDeclaration2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_animationFillMode(self, v)
-proc get_animationFillMode*(self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animationFillMode(self, p)
-proc msGetPropertyEnabled*(self: ptr IHTMLStyleEnabled, name: BSTR, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.msGetPropertyEnabled(self, name, p)
-proc msPutPropertyEnabled*(self: ptr IHTMLStyleEnabled, name: BSTR, b: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.msPutPropertyEnabled(self, name, b)
-proc put_fontFamily*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontFamily(self, v)
-proc get_fontFamily*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontFamily(self, p)
-proc put_fontStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontStyle(self, v)
-proc get_fontStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontStyle(self, p)
-proc put_fontVariant*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontVariant(self, v)
-proc get_fontVariant*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontVariant(self, p)
-proc put_fontWeight*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontWeight(self, v)
-proc get_fontWeight*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontWeight(self, p)
-proc put_fontSize*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontSize(self, v)
-proc get_fontSize*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontSize(self, p)
-proc put_font*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_font(self, v)
-proc get_font*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_font(self, p)
-proc put_color*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_color(self, v)
-proc get_color*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_color(self, p)
-proc put_background*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_background(self, v)
-proc get_background*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_background(self, p)
-proc put_backgroundColor*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundColor(self, v)
-proc get_backgroundColor*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundColor(self, p)
-proc put_backgroundImage*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundImage(self, v)
-proc get_backgroundImage*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundImage(self, p)
-proc put_backgroundRepeat*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundRepeat(self, v)
-proc get_backgroundRepeat*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundRepeat(self, p)
-proc put_backgroundAttachment*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundAttachment(self, v)
-proc get_backgroundAttachment*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundAttachment(self, p)
-proc put_backgroundPosition*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPosition(self, v)
-proc get_backgroundPosition*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPosition(self, p)
-proc put_backgroundPositionX*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPositionX(self, v)
-proc get_backgroundPositionX*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPositionX(self, p)
-proc put_backgroundPositionY*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPositionY(self, v)
-proc get_backgroundPositionY*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPositionY(self, p)
-proc put_wordSpacing*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_wordSpacing(self, v)
-proc get_wordSpacing*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wordSpacing(self, p)
-proc put_letterSpacing*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_letterSpacing(self, v)
-proc get_letterSpacing*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_letterSpacing(self, p)
-proc put_textDecoration*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecoration(self, v)
-proc get_textDecoration*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecoration(self, p)
-proc put_textDecorationNone*(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationNone(self, v)
-proc get_textDecorationNone*(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationNone(self, p)
-proc put_textDecorationUnderline*(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationUnderline(self, v)
-proc get_textDecorationUnderline*(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationUnderline(self, p)
-proc put_textDecorationOverline*(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationOverline(self, v)
-proc get_textDecorationOverline*(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationOverline(self, p)
-proc put_textDecorationLineThrough*(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationLineThrough(self, v)
-proc get_textDecorationLineThrough*(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationLineThrough(self, p)
-proc put_textDecorationBlink*(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationBlink(self, v)
-proc get_textDecorationBlink*(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationBlink(self, p)
-proc put_verticalAlign*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_verticalAlign(self, v)
-proc get_verticalAlign*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_verticalAlign(self, p)
-proc put_textTransform*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textTransform(self, v)
-proc get_textTransform*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textTransform(self, p)
-proc put_textAlign*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textAlign(self, v)
-proc get_textAlign*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAlign(self, p)
-proc put_textIndent*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textIndent(self, v)
-proc get_textIndent*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textIndent(self, p)
-proc put_lineHeight*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lineHeight(self, v)
-proc get_lineHeight*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lineHeight(self, p)
-proc put_marginTop*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginTop(self, v)
-proc get_marginTop*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginTop(self, p)
-proc put_marginRight*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginRight(self, v)
-proc get_marginRight*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginRight(self, p)
-proc put_marginBottom*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginBottom(self, v)
-proc get_marginBottom*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginBottom(self, p)
-proc put_marginLeft*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginLeft(self, v)
-proc get_marginLeft*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginLeft(self, p)
-proc put_margin*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_margin(self, v)
-proc get_margin*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_margin(self, p)
-proc put_paddingTop*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingTop(self, v)
-proc get_paddingTop*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingTop(self, p)
-proc put_paddingRight*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingRight(self, v)
-proc get_paddingRight*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingRight(self, p)
-proc put_paddingBottom*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingBottom(self, v)
-proc get_paddingBottom*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingBottom(self, p)
-proc put_paddingLeft*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingLeft(self, v)
-proc get_paddingLeft*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingLeft(self, p)
-proc put_padding*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_padding(self, v)
-proc get_padding*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_padding(self, p)
-proc put_border*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_border(self, v)
-proc get_border*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_border(self, p)
-proc put_borderTop*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTop(self, v)
-proc get_borderTop*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTop(self, p)
-proc put_borderRight*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRight(self, v)
-proc get_borderRight*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRight(self, p)
-proc put_borderBottom*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottom(self, v)
-proc get_borderBottom*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottom(self, p)
-proc put_borderLeft*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeft(self, v)
-proc get_borderLeft*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeft(self, p)
-proc put_borderColor*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColor(self, v)
-proc get_borderColor*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColor(self, p)
-proc put_borderTopColor*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopColor(self, v)
-proc get_borderTopColor*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopColor(self, p)
-proc put_borderRightColor*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightColor(self, v)
-proc get_borderRightColor*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightColor(self, p)
-proc put_borderBottomColor*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomColor(self, v)
-proc get_borderBottomColor*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomColor(self, p)
-proc put_borderLeftColor*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftColor(self, v)
-proc get_borderLeftColor*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftColor(self, p)
-proc put_borderWidth*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderWidth(self, v)
-proc get_borderWidth*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderWidth(self, p)
-proc put_borderTopWidth*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopWidth(self, v)
-proc get_borderTopWidth*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopWidth(self, p)
-proc put_borderRightWidth*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightWidth(self, v)
-proc get_borderRightWidth*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightWidth(self, p)
-proc put_borderBottomWidth*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomWidth(self, v)
-proc get_borderBottomWidth*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomWidth(self, p)
-proc put_borderLeftWidth*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftWidth(self, v)
-proc get_borderLeftWidth*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftWidth(self, p)
-proc put_borderStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderStyle(self, v)
-proc get_borderStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderStyle(self, p)
-proc put_borderTopStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopStyle(self, v)
-proc get_borderTopStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopStyle(self, p)
-proc put_borderRightStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightStyle(self, v)
-proc get_borderRightStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightStyle(self, p)
-proc put_borderBottomStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomStyle(self, v)
-proc get_borderBottomStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomStyle(self, p)
-proc put_borderLeftStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftStyle(self, v)
-proc get_borderLeftStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftStyle(self, p)
-proc put_width*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_height*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_styleFloat*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_styleFloat(self, v)
-proc get_styleFloat*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_styleFloat(self, p)
-proc put_clear*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clear(self, v)
-proc get_clear*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clear(self, p)
-proc put_display*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_display(self, v)
-proc get_display*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_display(self, p)
-proc put_visibility*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_visibility(self, v)
-proc get_visibility*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_visibility(self, p)
-proc put_listStyleType*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyleType(self, v)
-proc get_listStyleType*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyleType(self, p)
-proc put_listStylePosition*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStylePosition(self, v)
-proc get_listStylePosition*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStylePosition(self, p)
-proc put_listStyleImage*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyleImage(self, v)
-proc get_listStyleImage*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyleImage(self, p)
-proc put_listStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyle(self, v)
-proc get_listStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyle(self, p)
-proc put_whiteSpace*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_whiteSpace(self, v)
-proc get_whiteSpace*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_whiteSpace(self, p)
-proc put_top*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_top(self, v)
-proc get_top*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_top(self, p)
-proc put_left*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_left(self, v)
-proc get_left*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_left(self, p)
-proc get_position*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_position(self, p)
-proc put_zIndex*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_zIndex(self, v)
-proc get_zIndex*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_zIndex(self, p)
-proc put_overflow*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_overflow(self, v)
-proc get_overflow*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overflow(self, p)
-proc put_pageBreakBefore*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageBreakBefore(self, v)
-proc get_pageBreakBefore*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakBefore(self, p)
-proc put_pageBreakAfter*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageBreakAfter(self, v)
-proc get_pageBreakAfter*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakAfter(self, p)
-proc put_cssText*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cssText(self, v)
-proc get_cssText*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cssText(self, p)
-proc put_pixelTop*(self: ptr IHTMLStyle, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pixelTop(self, v)
-proc get_pixelTop*(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelTop(self, p)
-proc put_pixelLeft*(self: ptr IHTMLStyle, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pixelLeft(self, v)
-proc get_pixelLeft*(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelLeft(self, p)
-proc put_pixelWidth*(self: ptr IHTMLStyle, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pixelWidth(self, v)
-proc get_pixelWidth*(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelWidth(self, p)
-proc put_pixelHeight*(self: ptr IHTMLStyle, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pixelHeight(self, v)
-proc get_pixelHeight*(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelHeight(self, p)
-proc put_posTop*(self: ptr IHTMLStyle, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_posTop(self, v)
-proc get_posTop*(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_posTop(self, p)
-proc put_posLeft*(self: ptr IHTMLStyle, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_posLeft(self, v)
-proc get_posLeft*(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_posLeft(self, p)
-proc put_posWidth*(self: ptr IHTMLStyle, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_posWidth(self, v)
-proc get_posWidth*(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_posWidth(self, p)
-proc put_posHeight*(self: ptr IHTMLStyle, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_posHeight(self, v)
-proc get_posHeight*(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_posHeight(self, p)
-proc put_cursor*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cursor(self, v)
-proc get_cursor*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cursor(self, p)
-proc put_clip*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clip(self, v)
-proc get_clip*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clip(self, p)
-proc put_filter*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_filter(self, v)
-proc get_filter*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_filter(self, p)
-proc setAttribute*(self: ptr IHTMLStyle, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttribute(self, strAttributeName, AttributeValue, lFlags)
-proc getAttribute*(self: ptr IHTMLStyle, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, strAttributeName, lFlags, AttributeValue)
-proc removeAttribute*(self: ptr IHTMLStyle, strAttributeName: BSTR, lFlags: LONG, pfSuccess: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttribute(self, strAttributeName, lFlags, pfSuccess)
-proc toString*(self: ptr IHTMLStyle, String: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, String)
-proc put_tableLayout*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_tableLayout(self, v)
-proc get_tableLayout*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tableLayout(self, p)
-proc put_borderCollapse*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderCollapse(self, v)
-proc get_borderCollapse*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderCollapse(self, p)
-proc put_direction*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_direction(self, v)
-proc get_direction*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_direction(self, p)
-proc put_behavior*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_behavior(self, v)
-proc get_behavior*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_behavior(self, p)
-proc setExpression*(self: ptr IHTMLStyle2, propname: BSTR, expression: BSTR, language: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setExpression(self, propname, expression, language)
-proc getExpression*(self: ptr IHTMLStyle2, propname: BSTR, expression: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getExpression(self, propname, expression)
-proc removeExpression*(self: ptr IHTMLStyle2, propname: BSTR, pfSuccess: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeExpression(self, propname, pfSuccess)
-proc put_position*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_position(self, v)
-proc get_position*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_position(self, p)
-proc put_unicodeBidi*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_unicodeBidi(self, v)
-proc get_unicodeBidi*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_unicodeBidi(self, p)
-proc put_bottom*(self: ptr IHTMLStyle2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bottom(self, v)
-proc get_bottom*(self: ptr IHTMLStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bottom(self, p)
-proc put_right*(self: ptr IHTMLStyle2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_right(self, v)
-proc get_right*(self: ptr IHTMLStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_right(self, p)
-proc put_pixelBottom*(self: ptr IHTMLStyle2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pixelBottom(self, v)
-proc get_pixelBottom*(self: ptr IHTMLStyle2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelBottom(self, p)
-proc put_pixelRight*(self: ptr IHTMLStyle2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pixelRight(self, v)
-proc get_pixelRight*(self: ptr IHTMLStyle2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelRight(self, p)
-proc put_posBottom*(self: ptr IHTMLStyle2, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_posBottom(self, v)
-proc get_posBottom*(self: ptr IHTMLStyle2, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_posBottom(self, p)
-proc put_posRight*(self: ptr IHTMLStyle2, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_posRight(self, v)
-proc get_posRight*(self: ptr IHTMLStyle2, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_posRight(self, p)
-proc put_imeMode*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_imeMode(self, v)
-proc get_imeMode*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_imeMode(self, p)
-proc put_rubyAlign*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rubyAlign(self, v)
-proc get_rubyAlign*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rubyAlign(self, p)
-proc put_rubyPosition*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rubyPosition(self, v)
-proc get_rubyPosition*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rubyPosition(self, p)
-proc put_rubyOverhang*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rubyOverhang(self, v)
-proc get_rubyOverhang*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rubyOverhang(self, p)
-proc put_layoutGridChar*(self: ptr IHTMLStyle2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGridChar(self, v)
-proc get_layoutGridChar*(self: ptr IHTMLStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridChar(self, p)
-proc put_layoutGridLine*(self: ptr IHTMLStyle2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGridLine(self, v)
-proc get_layoutGridLine*(self: ptr IHTMLStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridLine(self, p)
-proc put_layoutGridMode*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGridMode(self, v)
-proc get_layoutGridMode*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridMode(self, p)
-proc put_layoutGridType*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGridType(self, v)
-proc get_layoutGridType*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridType(self, p)
-proc put_layoutGrid*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGrid(self, v)
-proc get_layoutGrid*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGrid(self, p)
-proc put_wordBreak*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_wordBreak(self, v)
-proc get_wordBreak*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wordBreak(self, p)
-proc put_lineBreak*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lineBreak(self, v)
-proc get_lineBreak*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lineBreak(self, p)
-proc put_textJustify*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textJustify(self, v)
-proc get_textJustify*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textJustify(self, p)
-proc put_textJustifyTrim*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textJustifyTrim(self, v)
-proc get_textJustifyTrim*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textJustifyTrim(self, p)
-proc put_textKashida*(self: ptr IHTMLStyle2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textKashida(self, v)
-proc get_textKashida*(self: ptr IHTMLStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textKashida(self, p)
-proc put_textAutospace*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textAutospace(self, v)
-proc get_textAutospace*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAutospace(self, p)
-proc put_overflowX*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_overflowX(self, v)
-proc get_overflowX*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overflowX(self, p)
-proc put_overflowY*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_overflowY(self, v)
-proc get_overflowY*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overflowY(self, p)
-proc put_accelerator*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_accelerator(self, v)
-proc get_accelerator*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accelerator(self, p)
-proc put_layoutFlow*(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutFlow(self, v)
-proc get_layoutFlow*(self: ptr IHTMLStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutFlow(self, p)
-proc put_zoom*(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_zoom(self, v)
-proc get_zoom*(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_zoom(self, p)
-proc put_wordWrap*(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_wordWrap(self, v)
-proc get_wordWrap*(self: ptr IHTMLStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wordWrap(self, p)
-proc put_textUnderlinePosition*(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textUnderlinePosition(self, v)
-proc get_textUnderlinePosition*(self: ptr IHTMLStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textUnderlinePosition(self, p)
-proc put_scrollbarBaseColor*(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarBaseColor(self, v)
-proc get_scrollbarBaseColor*(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarBaseColor(self, p)
-proc put_scrollbarFaceColor*(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarFaceColor(self, v)
-proc get_scrollbarFaceColor*(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarFaceColor(self, p)
-proc put_scrollbar3dLightColor*(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbar3dLightColor(self, v)
-proc get_scrollbar3dLightColor*(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbar3dLightColor(self, p)
-proc put_scrollbarShadowColor*(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarShadowColor(self, v)
-proc get_scrollbarShadowColor*(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarShadowColor(self, p)
-proc put_scrollbarHighlightColor*(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarHighlightColor(self, v)
-proc get_scrollbarHighlightColor*(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarHighlightColor(self, p)
-proc put_scrollbarDarkShadowColor*(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarDarkShadowColor(self, v)
-proc get_scrollbarDarkShadowColor*(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarDarkShadowColor(self, p)
-proc put_scrollbarArrowColor*(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarArrowColor(self, v)
-proc get_scrollbarArrowColor*(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarArrowColor(self, p)
-proc put_scrollbarTrackColor*(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarTrackColor(self, v)
-proc get_scrollbarTrackColor*(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarTrackColor(self, p)
-proc put_writingMode*(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_writingMode(self, v)
-proc get_writingMode*(self: ptr IHTMLStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_writingMode(self, p)
-proc put_textAlignLast*(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textAlignLast(self, v)
-proc get_textAlignLast*(self: ptr IHTMLStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAlignLast(self, p)
-proc put_textKashidaSpace*(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textKashidaSpace(self, v)
-proc get_textKashidaSpace*(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textKashidaSpace(self, p)
-proc put_textOverflow*(self: ptr IHTMLStyle4, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textOverflow(self, v)
-proc get_textOverflow*(self: ptr IHTMLStyle4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textOverflow(self, p)
-proc put_minHeight*(self: ptr IHTMLStyle4, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_minHeight(self, v)
-proc get_minHeight*(self: ptr IHTMLStyle4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_minHeight(self, p)
-proc put_msInterpolationMode*(self: ptr IHTMLStyle5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msInterpolationMode(self, v)
-proc get_msInterpolationMode*(self: ptr IHTMLStyle5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msInterpolationMode(self, p)
-proc put_maxHeight*(self: ptr IHTMLStyle5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_maxHeight(self, v)
-proc get_maxHeight*(self: ptr IHTMLStyle5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maxHeight(self, p)
-proc put_minWidth*(self: ptr IHTMLStyle5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_minWidth(self, v)
-proc get_minWidth*(self: ptr IHTMLStyle5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_minWidth(self, p)
-proc put_maxWidth*(self: ptr IHTMLStyle5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_maxWidth(self, v)
-proc get_maxWidth*(self: ptr IHTMLStyle5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maxWidth(self, p)
-proc put_content*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_content(self, v)
-proc get_content*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_content(self, p)
-proc put_captionSide*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_captionSide(self, v)
-proc get_captionSide*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_captionSide(self, p)
-proc put_counterIncrement*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_counterIncrement(self, v)
-proc get_counterIncrement*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_counterIncrement(self, p)
-proc put_counterReset*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_counterReset(self, v)
-proc get_counterReset*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_counterReset(self, p)
-proc put_outline*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outline(self, v)
-proc get_outline*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outline(self, p)
-proc put_outlineWidth*(self: ptr IHTMLStyle6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outlineWidth(self, v)
-proc get_outlineWidth*(self: ptr IHTMLStyle6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outlineWidth(self, p)
-proc put_outlineStyle*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outlineStyle(self, v)
-proc get_outlineStyle*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outlineStyle(self, p)
-proc put_outlineColor*(self: ptr IHTMLStyle6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outlineColor(self, v)
-proc get_outlineColor*(self: ptr IHTMLStyle6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outlineColor(self, p)
-proc put_boxSizing*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_boxSizing(self, v)
-proc get_boxSizing*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_boxSizing(self, p)
-proc put_borderSpacing*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderSpacing(self, v)
-proc get_borderSpacing*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderSpacing(self, p)
-proc put_orphans*(self: ptr IHTMLStyle6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_orphans(self, v)
-proc get_orphans*(self: ptr IHTMLStyle6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_orphans(self, p)
-proc put_widows*(self: ptr IHTMLStyle6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_widows(self, v)
-proc get_widows*(self: ptr IHTMLStyle6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_widows(self, p)
-proc put_pageBreakInside*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageBreakInside(self, v)
-proc get_pageBreakInside*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakInside(self, p)
-proc put_emptyCells*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_emptyCells(self, v)
-proc get_emptyCells*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_emptyCells(self, p)
-proc put_msBlockProgression*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msBlockProgression(self, v)
-proc get_msBlockProgression*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msBlockProgression(self, p)
-proc put_quotes*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_quotes(self, v)
-proc get_quotes*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_quotes(self, p)
-proc put_fontFamily*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontFamily(self, v)
-proc get_fontFamily*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontFamily(self, p)
-proc put_fontStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontStyle(self, v)
-proc get_fontStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontStyle(self, p)
-proc put_fontVariant*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontVariant(self, v)
-proc get_fontVariant*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontVariant(self, p)
-proc put_fontWeight*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontWeight(self, v)
-proc get_fontWeight*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontWeight(self, p)
-proc put_fontSize*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontSize(self, v)
-proc get_fontSize*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontSize(self, p)
-proc put_font*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_font(self, v)
-proc get_font*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_font(self, p)
-proc put_color*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_color(self, v)
-proc get_color*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_color(self, p)
-proc put_background*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_background(self, v)
-proc get_background*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_background(self, p)
-proc put_backgroundColor*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundColor(self, v)
-proc get_backgroundColor*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundColor(self, p)
-proc put_backgroundImage*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundImage(self, v)
-proc get_backgroundImage*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundImage(self, p)
-proc put_backgroundRepeat*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundRepeat(self, v)
-proc get_backgroundRepeat*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundRepeat(self, p)
-proc put_backgroundAttachment*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundAttachment(self, v)
-proc get_backgroundAttachment*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundAttachment(self, p)
-proc put_backgroundPosition*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPosition(self, v)
-proc get_backgroundPosition*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPosition(self, p)
-proc put_backgroundPositionX*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPositionX(self, v)
-proc get_backgroundPositionX*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPositionX(self, p)
-proc put_backgroundPositionY*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPositionY(self, v)
-proc get_backgroundPositionY*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPositionY(self, p)
-proc put_wordSpacing*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_wordSpacing(self, v)
-proc get_wordSpacing*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wordSpacing(self, p)
-proc put_letterSpacing*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_letterSpacing(self, v)
-proc get_letterSpacing*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_letterSpacing(self, p)
-proc put_textDecoration*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecoration(self, v)
-proc get_textDecoration*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecoration(self, p)
-proc put_textDecorationNone*(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationNone(self, v)
-proc get_textDecorationNone*(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationNone(self, p)
-proc put_textDecorationUnderline*(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationUnderline(self, v)
-proc get_textDecorationUnderline*(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationUnderline(self, p)
-proc put_textDecorationOverline*(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationOverline(self, v)
-proc get_textDecorationOverline*(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationOverline(self, p)
-proc put_textDecorationLineThrough*(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationLineThrough(self, v)
-proc get_textDecorationLineThrough*(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationLineThrough(self, p)
-proc put_textDecorationBlink*(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationBlink(self, v)
-proc get_textDecorationBlink*(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationBlink(self, p)
-proc put_verticalAlign*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_verticalAlign(self, v)
-proc get_verticalAlign*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_verticalAlign(self, p)
-proc put_textTransform*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textTransform(self, v)
-proc get_textTransform*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textTransform(self, p)
-proc put_textAlign*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textAlign(self, v)
-proc get_textAlign*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAlign(self, p)
-proc put_textIndent*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textIndent(self, v)
-proc get_textIndent*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textIndent(self, p)
-proc put_lineHeight*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lineHeight(self, v)
-proc get_lineHeight*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lineHeight(self, p)
-proc put_marginTop*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginTop(self, v)
-proc get_marginTop*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginTop(self, p)
-proc put_marginRight*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginRight(self, v)
-proc get_marginRight*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginRight(self, p)
-proc put_marginBottom*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginBottom(self, v)
-proc get_marginBottom*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginBottom(self, p)
-proc put_marginLeft*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginLeft(self, v)
-proc get_marginLeft*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginLeft(self, p)
-proc put_margin*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_margin(self, v)
-proc get_margin*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_margin(self, p)
-proc put_paddingTop*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingTop(self, v)
-proc get_paddingTop*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingTop(self, p)
-proc put_paddingRight*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingRight(self, v)
-proc get_paddingRight*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingRight(self, p)
-proc put_paddingBottom*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingBottom(self, v)
-proc get_paddingBottom*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingBottom(self, p)
-proc put_paddingLeft*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingLeft(self, v)
-proc get_paddingLeft*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingLeft(self, p)
-proc put_padding*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_padding(self, v)
-proc get_padding*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_padding(self, p)
-proc put_border*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_border(self, v)
-proc get_border*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_border(self, p)
-proc put_borderTop*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTop(self, v)
-proc get_borderTop*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTop(self, p)
-proc put_borderRight*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRight(self, v)
-proc get_borderRight*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRight(self, p)
-proc put_borderBottom*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottom(self, v)
-proc get_borderBottom*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottom(self, p)
-proc put_borderLeft*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeft(self, v)
-proc get_borderLeft*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeft(self, p)
-proc put_borderColor*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColor(self, v)
-proc get_borderColor*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColor(self, p)
-proc put_borderTopColor*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopColor(self, v)
-proc get_borderTopColor*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopColor(self, p)
-proc put_borderRightColor*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightColor(self, v)
-proc get_borderRightColor*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightColor(self, p)
-proc put_borderBottomColor*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomColor(self, v)
-proc get_borderBottomColor*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomColor(self, p)
-proc put_borderLeftColor*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftColor(self, v)
-proc get_borderLeftColor*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftColor(self, p)
-proc put_borderWidth*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderWidth(self, v)
-proc get_borderWidth*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderWidth(self, p)
-proc put_borderTopWidth*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopWidth(self, v)
-proc get_borderTopWidth*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopWidth(self, p)
-proc put_borderRightWidth*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightWidth(self, v)
-proc get_borderRightWidth*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightWidth(self, p)
-proc put_borderBottomWidth*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomWidth(self, v)
-proc get_borderBottomWidth*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomWidth(self, p)
-proc put_borderLeftWidth*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftWidth(self, v)
-proc get_borderLeftWidth*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftWidth(self, p)
-proc put_borderStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderStyle(self, v)
-proc get_borderStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderStyle(self, p)
-proc put_borderTopStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopStyle(self, v)
-proc get_borderTopStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopStyle(self, p)
-proc put_borderRightStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightStyle(self, v)
-proc get_borderRightStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightStyle(self, p)
-proc put_borderBottomStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomStyle(self, v)
-proc get_borderBottomStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomStyle(self, p)
-proc put_borderLeftStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftStyle(self, v)
-proc get_borderLeftStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftStyle(self, p)
-proc put_width*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_height*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_styleFloat*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_styleFloat(self, v)
-proc get_styleFloat*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_styleFloat(self, p)
-proc put_clear*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clear(self, v)
-proc get_clear*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clear(self, p)
-proc put_display*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_display(self, v)
-proc get_display*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_display(self, p)
-proc put_visibility*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_visibility(self, v)
-proc get_visibility*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_visibility(self, p)
-proc put_listStyleType*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyleType(self, v)
-proc get_listStyleType*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyleType(self, p)
-proc put_listStylePosition*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStylePosition(self, v)
-proc get_listStylePosition*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStylePosition(self, p)
-proc put_listStyleImage*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyleImage(self, v)
-proc get_listStyleImage*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyleImage(self, p)
-proc put_listStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyle(self, v)
-proc get_listStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyle(self, p)
-proc put_whiteSpace*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_whiteSpace(self, v)
-proc get_whiteSpace*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_whiteSpace(self, p)
-proc put_top*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_top(self, v)
-proc get_top*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_top(self, p)
-proc put_left*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_left(self, v)
-proc get_left*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_left(self, p)
-proc get_position*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_position(self, p)
-proc put_zIndex*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_zIndex(self, v)
-proc get_zIndex*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_zIndex(self, p)
-proc put_overflow*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_overflow(self, v)
-proc get_overflow*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overflow(self, p)
-proc put_pageBreakBefore*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageBreakBefore(self, v)
-proc get_pageBreakBefore*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakBefore(self, p)
-proc put_pageBreakAfter*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageBreakAfter(self, v)
-proc get_pageBreakAfter*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakAfter(self, p)
-proc put_cssText*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cssText(self, v)
-proc get_cssText*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cssText(self, p)
-proc put_cursor*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cursor(self, v)
-proc get_cursor*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cursor(self, p)
-proc put_clip*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clip(self, v)
-proc get_clip*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clip(self, p)
-proc put_filter*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_filter(self, v)
-proc get_filter*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_filter(self, p)
-proc setAttribute*(self: ptr IHTMLRuleStyle, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttribute(self, strAttributeName, AttributeValue, lFlags)
-proc getAttribute*(self: ptr IHTMLRuleStyle, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, strAttributeName, lFlags, AttributeValue)
-proc removeAttribute*(self: ptr IHTMLRuleStyle, strAttributeName: BSTR, lFlags: LONG, pfSuccess: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttribute(self, strAttributeName, lFlags, pfSuccess)
-proc put_tableLayout*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_tableLayout(self, v)
-proc get_tableLayout*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tableLayout(self, p)
-proc put_borderCollapse*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderCollapse(self, v)
-proc get_borderCollapse*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderCollapse(self, p)
-proc put_direction*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_direction(self, v)
-proc get_direction*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_direction(self, p)
-proc put_behavior*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_behavior(self, v)
-proc get_behavior*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_behavior(self, p)
-proc put_position*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_position(self, v)
-proc get_position*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_position(self, p)
-proc put_unicodeBidi*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_unicodeBidi(self, v)
-proc get_unicodeBidi*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_unicodeBidi(self, p)
-proc put_bottom*(self: ptr IHTMLRuleStyle2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bottom(self, v)
-proc get_bottom*(self: ptr IHTMLRuleStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bottom(self, p)
-proc put_right*(self: ptr IHTMLRuleStyle2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_right(self, v)
-proc get_right*(self: ptr IHTMLRuleStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_right(self, p)
-proc put_pixelBottom*(self: ptr IHTMLRuleStyle2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pixelBottom(self, v)
-proc get_pixelBottom*(self: ptr IHTMLRuleStyle2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelBottom(self, p)
-proc put_pixelRight*(self: ptr IHTMLRuleStyle2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pixelRight(self, v)
-proc get_pixelRight*(self: ptr IHTMLRuleStyle2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelRight(self, p)
-proc put_posBottom*(self: ptr IHTMLRuleStyle2, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_posBottom(self, v)
-proc get_posBottom*(self: ptr IHTMLRuleStyle2, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_posBottom(self, p)
-proc put_posRight*(self: ptr IHTMLRuleStyle2, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_posRight(self, v)
-proc get_posRight*(self: ptr IHTMLRuleStyle2, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_posRight(self, p)
-proc put_imeMode*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_imeMode(self, v)
-proc get_imeMode*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_imeMode(self, p)
-proc put_rubyAlign*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rubyAlign(self, v)
-proc get_rubyAlign*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rubyAlign(self, p)
-proc put_rubyPosition*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rubyPosition(self, v)
-proc get_rubyPosition*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rubyPosition(self, p)
-proc put_rubyOverhang*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rubyOverhang(self, v)
-proc get_rubyOverhang*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rubyOverhang(self, p)
-proc put_layoutGridChar*(self: ptr IHTMLRuleStyle2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGridChar(self, v)
-proc get_layoutGridChar*(self: ptr IHTMLRuleStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridChar(self, p)
-proc put_layoutGridLine*(self: ptr IHTMLRuleStyle2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGridLine(self, v)
-proc get_layoutGridLine*(self: ptr IHTMLRuleStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridLine(self, p)
-proc put_layoutGridMode*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGridMode(self, v)
-proc get_layoutGridMode*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridMode(self, p)
-proc put_layoutGridType*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGridType(self, v)
-proc get_layoutGridType*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridType(self, p)
-proc put_layoutGrid*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutGrid(self, v)
-proc get_layoutGrid*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGrid(self, p)
-proc put_textAutospace*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textAutospace(self, v)
-proc get_textAutospace*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAutospace(self, p)
-proc put_wordBreak*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_wordBreak(self, v)
-proc get_wordBreak*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wordBreak(self, p)
-proc put_lineBreak*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lineBreak(self, v)
-proc get_lineBreak*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lineBreak(self, p)
-proc put_textJustify*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textJustify(self, v)
-proc get_textJustify*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textJustify(self, p)
-proc put_textJustifyTrim*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textJustifyTrim(self, v)
-proc get_textJustifyTrim*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textJustifyTrim(self, p)
-proc put_textKashida*(self: ptr IHTMLRuleStyle2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textKashida(self, v)
-proc get_textKashida*(self: ptr IHTMLRuleStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textKashida(self, p)
-proc put_overflowX*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_overflowX(self, v)
-proc get_overflowX*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overflowX(self, p)
-proc put_overflowY*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_overflowY(self, v)
-proc get_overflowY*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overflowY(self, p)
-proc put_accelerator*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_accelerator(self, v)
-proc get_accelerator*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accelerator(self, p)
-proc put_layoutFlow*(self: ptr IHTMLRuleStyle3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_layoutFlow(self, v)
-proc get_layoutFlow*(self: ptr IHTMLRuleStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutFlow(self, p)
-proc put_zoom*(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_zoom(self, v)
-proc get_zoom*(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_zoom(self, p)
-proc put_wordWrap*(self: ptr IHTMLRuleStyle3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_wordWrap(self, v)
-proc get_wordWrap*(self: ptr IHTMLRuleStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wordWrap(self, p)
-proc put_textUnderlinePosition*(self: ptr IHTMLRuleStyle3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textUnderlinePosition(self, v)
-proc get_textUnderlinePosition*(self: ptr IHTMLRuleStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textUnderlinePosition(self, p)
-proc put_scrollbarBaseColor*(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarBaseColor(self, v)
-proc get_scrollbarBaseColor*(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarBaseColor(self, p)
-proc put_scrollbarFaceColor*(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarFaceColor(self, v)
-proc get_scrollbarFaceColor*(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarFaceColor(self, p)
-proc put_scrollbar3dLightColor*(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbar3dLightColor(self, v)
-proc get_scrollbar3dLightColor*(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbar3dLightColor(self, p)
-proc put_scrollbarShadowColor*(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarShadowColor(self, v)
-proc get_scrollbarShadowColor*(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarShadowColor(self, p)
-proc put_scrollbarHighlightColor*(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarHighlightColor(self, v)
-proc get_scrollbarHighlightColor*(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarHighlightColor(self, p)
-proc put_scrollbarDarkShadowColor*(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarDarkShadowColor(self, v)
-proc get_scrollbarDarkShadowColor*(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarDarkShadowColor(self, p)
-proc put_scrollbarArrowColor*(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarArrowColor(self, v)
-proc get_scrollbarArrowColor*(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarArrowColor(self, p)
-proc put_scrollbarTrackColor*(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbarTrackColor(self, v)
-proc get_scrollbarTrackColor*(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarTrackColor(self, p)
-proc put_writingMode*(self: ptr IHTMLRuleStyle3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_writingMode(self, v)
-proc get_writingMode*(self: ptr IHTMLRuleStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_writingMode(self, p)
-proc put_textAlignLast*(self: ptr IHTMLRuleStyle3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textAlignLast(self, v)
-proc get_textAlignLast*(self: ptr IHTMLRuleStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAlignLast(self, p)
-proc put_textKashidaSpace*(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textKashidaSpace(self, v)
-proc get_textKashidaSpace*(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textKashidaSpace(self, p)
-proc put_textOverflow*(self: ptr IHTMLRuleStyle4, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textOverflow(self, v)
-proc get_textOverflow*(self: ptr IHTMLRuleStyle4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textOverflow(self, p)
-proc put_minHeight*(self: ptr IHTMLRuleStyle4, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_minHeight(self, v)
-proc get_minHeight*(self: ptr IHTMLRuleStyle4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_minHeight(self, p)
-proc put_msInterpolationMode*(self: ptr IHTMLRuleStyle5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msInterpolationMode(self, v)
-proc get_msInterpolationMode*(self: ptr IHTMLRuleStyle5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msInterpolationMode(self, p)
-proc put_maxHeight*(self: ptr IHTMLRuleStyle5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_maxHeight(self, v)
-proc get_maxHeight*(self: ptr IHTMLRuleStyle5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maxHeight(self, p)
-proc put_minWidth*(self: ptr IHTMLRuleStyle5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_minWidth(self, v)
-proc get_minWidth*(self: ptr IHTMLRuleStyle5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_minWidth(self, p)
-proc put_maxWidth*(self: ptr IHTMLRuleStyle5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_maxWidth(self, v)
-proc get_maxWidth*(self: ptr IHTMLRuleStyle5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maxWidth(self, p)
-proc put_content*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_content(self, v)
-proc get_content*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_content(self, p)
-proc put_captionSide*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_captionSide(self, v)
-proc get_captionSide*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_captionSide(self, p)
-proc put_counterIncrement*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_counterIncrement(self, v)
-proc get_counterIncrement*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_counterIncrement(self, p)
-proc put_counterReset*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_counterReset(self, v)
-proc get_counterReset*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_counterReset(self, p)
-proc put_outline*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outline(self, v)
-proc get_outline*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outline(self, p)
-proc put_outlineWidth*(self: ptr IHTMLRuleStyle6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outlineWidth(self, v)
-proc get_outlineWidth*(self: ptr IHTMLRuleStyle6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outlineWidth(self, p)
-proc put_outlineStyle*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outlineStyle(self, v)
-proc get_outlineStyle*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outlineStyle(self, p)
-proc put_outlineColor*(self: ptr IHTMLRuleStyle6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outlineColor(self, v)
-proc get_outlineColor*(self: ptr IHTMLRuleStyle6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outlineColor(self, p)
-proc put_boxSizing*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_boxSizing(self, v)
-proc get_boxSizing*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_boxSizing(self, p)
-proc put_borderSpacing*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderSpacing(self, v)
-proc get_borderSpacing*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderSpacing(self, p)
-proc put_orphans*(self: ptr IHTMLRuleStyle6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_orphans(self, v)
-proc get_orphans*(self: ptr IHTMLRuleStyle6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_orphans(self, p)
-proc put_widows*(self: ptr IHTMLRuleStyle6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_widows(self, v)
-proc get_widows*(self: ptr IHTMLRuleStyle6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_widows(self, p)
-proc put_pageBreakInside*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageBreakInside(self, v)
-proc get_pageBreakInside*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakInside(self, p)
-proc put_emptyCells*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_emptyCells(self, v)
-proc get_emptyCells*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_emptyCells(self, p)
-proc put_msBlockProgression*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msBlockProgression(self, v)
-proc get_msBlockProgression*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msBlockProgression(self, p)
-proc put_quotes*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_quotes(self, v)
-proc get_quotes*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_quotes(self, p)
-proc get_type*(self: ptr IHTMLCSSRule, p: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_cssText*(self: ptr IHTMLCSSRule, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cssText(self, v)
-proc get_cssText*(self: ptr IHTMLCSSRule, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cssText(self, p)
-proc get_parentRule*(self: ptr IHTMLCSSRule, p: ptr ptr IHTMLCSSRule): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentRule(self, p)
-proc get_parentStyleSheet*(self: ptr IHTMLCSSRule, p: ptr ptr IHTMLStyleSheet): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentStyleSheet(self, p)
-proc get_href*(self: ptr IHTMLCSSImportRule, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc put_media*(self: ptr IHTMLCSSImportRule, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_media(self, v)
-proc get_media*(self: ptr IHTMLCSSImportRule, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_media(self, p)
-proc get_styleSheet*(self: ptr IHTMLCSSImportRule, p: ptr ptr IHTMLStyleSheet): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_styleSheet(self, p)
-proc put_media*(self: ptr IHTMLCSSMediaRule, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_media(self, v)
-proc get_media*(self: ptr IHTMLCSSMediaRule, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_media(self, p)
-proc get_cssRules*(self: ptr IHTMLCSSMediaRule, p: ptr ptr IHTMLStyleSheetRulesCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cssRules(self, p)
-proc insertRule*(self: ptr IHTMLCSSMediaRule, bstrRule: BSTR, lIndex: LONG, plNewIndex: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertRule(self, bstrRule, lIndex, plNewIndex)
-proc deleteRule*(self: ptr IHTMLCSSMediaRule, lIndex: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteRule(self, lIndex)
-proc put_mediaText*(self: ptr IHTMLCSSMediaList, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_mediaText(self, v)
-proc get_mediaText*(self: ptr IHTMLCSSMediaList, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_mediaText(self, p)
-proc get_length*(self: ptr IHTMLCSSMediaList, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc item*(self: ptr IHTMLCSSMediaList, index: LONG, pbstrMedium: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, pbstrMedium)
-proc appendMedium*(self: ptr IHTMLCSSMediaList, bstrMedium: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendMedium(self, bstrMedium)
-proc deleteMedium*(self: ptr IHTMLCSSMediaList, bstrMedium: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteMedium(self, bstrMedium)
-proc get_namespaceURI*(self: ptr IHTMLCSSNamespaceRule, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_namespaceURI(self, p)
-proc get_prefix*(self: ptr IHTMLCSSNamespaceRule, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_prefix(self, p)
-proc put_keyText*(self: ptr IHTMLMSCSSKeyframeRule, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_keyText(self, v)
-proc get_keyText*(self: ptr IHTMLMSCSSKeyframeRule, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_keyText(self, p)
-proc get_style*(self: ptr IHTMLMSCSSKeyframeRule, p: ptr ptr IHTMLRuleStyle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_style(self, p)
-proc put_name*(self: ptr IHTMLMSCSSKeyframesRule, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLMSCSSKeyframesRule, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc get_cssRules*(self: ptr IHTMLMSCSSKeyframesRule, p: ptr ptr IHTMLStyleSheetRulesCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cssRules(self, p)
-proc appendRule*(self: ptr IHTMLMSCSSKeyframesRule, bstrRule: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendRule(self, bstrRule)
-proc deleteRule*(self: ptr IHTMLMSCSSKeyframesRule, bstrKey: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteRule(self, bstrKey)
-proc findRule*(self: ptr IHTMLMSCSSKeyframesRule, bstrKey: BSTR, ppMSKeyframeRule: ptr ptr IHTMLMSCSSKeyframeRule): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.findRule(self, bstrKey, ppMSKeyframeRule)
-proc put_textLineThroughStyle*(self: ptr IHTMLRenderStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textLineThroughStyle(self, v)
-proc get_textLineThroughStyle*(self: ptr IHTMLRenderStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textLineThroughStyle(self, p)
-proc put_textUnderlineStyle*(self: ptr IHTMLRenderStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textUnderlineStyle(self, v)
-proc get_textUnderlineStyle*(self: ptr IHTMLRenderStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textUnderlineStyle(self, p)
-proc put_textEffect*(self: ptr IHTMLRenderStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textEffect(self, v)
-proc get_textEffect*(self: ptr IHTMLRenderStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textEffect(self, p)
-proc put_textColor*(self: ptr IHTMLRenderStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textColor(self, v)
-proc get_textColor*(self: ptr IHTMLRenderStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textColor(self, p)
-proc put_textBackgroundColor*(self: ptr IHTMLRenderStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textBackgroundColor(self, v)
-proc get_textBackgroundColor*(self: ptr IHTMLRenderStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textBackgroundColor(self, p)
-proc put_textDecorationColor*(self: ptr IHTMLRenderStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationColor(self, v)
-proc get_textDecorationColor*(self: ptr IHTMLRenderStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationColor(self, p)
-proc put_renderingPriority*(self: ptr IHTMLRenderStyle, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_renderingPriority(self, v)
-proc get_renderingPriority*(self: ptr IHTMLRenderStyle, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_renderingPriority(self, p)
-proc put_defaultTextSelection*(self: ptr IHTMLRenderStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defaultTextSelection(self, v)
-proc get_defaultTextSelection*(self: ptr IHTMLRenderStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultTextSelection(self, p)
-proc put_textDecoration*(self: ptr IHTMLRenderStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecoration(self, v)
-proc get_textDecoration*(self: ptr IHTMLRenderStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecoration(self, p)
-proc get_position*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_position(self, p)
-proc get_styleFloat*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_styleFloat(self, p)
-proc get_color*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_color(self, p)
-proc get_backgroundColor*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundColor(self, p)
-proc get_fontFamily*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontFamily(self, p)
-proc get_fontStyle*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontStyle(self, p)
-proc get_fontVariant*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontVariant(self, p)
-proc get_fontWeight*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontWeight(self, p)
-proc get_fontSize*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontSize(self, p)
-proc get_backgroundImage*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundImage(self, p)
-proc get_backgroundPositionX*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPositionX(self, p)
-proc get_backgroundPositionY*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPositionY(self, p)
-proc get_backgroundRepeat*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundRepeat(self, p)
-proc get_borderLeftColor*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftColor(self, p)
-proc get_borderTopColor*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopColor(self, p)
-proc get_borderRightColor*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightColor(self, p)
-proc get_borderBottomColor*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomColor(self, p)
-proc get_borderTopStyle*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopStyle(self, p)
-proc get_borderRightStyle*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightStyle(self, p)
-proc get_borderBottomStyle*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomStyle(self, p)
-proc get_borderLeftStyle*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftStyle(self, p)
-proc get_borderTopWidth*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopWidth(self, p)
-proc get_borderRightWidth*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightWidth(self, p)
-proc get_borderBottomWidth*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomWidth(self, p)
-proc get_borderLeftWidth*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftWidth(self, p)
-proc get_left*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_left(self, p)
-proc get_top*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_top(self, p)
-proc get_width*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc get_height*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc get_paddingLeft*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingLeft(self, p)
-proc get_paddingTop*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingTop(self, p)
-proc get_paddingRight*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingRight(self, p)
-proc get_paddingBottom*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingBottom(self, p)
-proc get_textAlign*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAlign(self, p)
-proc get_textDecoration*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecoration(self, p)
-proc get_display*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_display(self, p)
-proc get_visibility*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_visibility(self, p)
-proc get_zIndex*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_zIndex(self, p)
-proc get_letterSpacing*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_letterSpacing(self, p)
-proc get_lineHeight*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lineHeight(self, p)
-proc get_textIndent*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textIndent(self, p)
-proc get_verticalAlign*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_verticalAlign(self, p)
-proc get_backgroundAttachment*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundAttachment(self, p)
-proc get_marginTop*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginTop(self, p)
-proc get_marginRight*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginRight(self, p)
-proc get_marginBottom*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginBottom(self, p)
-proc get_marginLeft*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginLeft(self, p)
-proc get_clear*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clear(self, p)
-proc get_listStyleType*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyleType(self, p)
-proc get_listStylePosition*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStylePosition(self, p)
-proc get_listStyleImage*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyleImage(self, p)
-proc get_clipTop*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clipTop(self, p)
-proc get_clipRight*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clipRight(self, p)
-proc get_clipBottom*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clipBottom(self, p)
-proc get_clipLeft*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clipLeft(self, p)
-proc get_overflow*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overflow(self, p)
-proc get_pageBreakBefore*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakBefore(self, p)
-proc get_pageBreakAfter*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakAfter(self, p)
-proc get_cursor*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cursor(self, p)
-proc get_tableLayout*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tableLayout(self, p)
-proc get_borderCollapse*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderCollapse(self, p)
-proc get_direction*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_direction(self, p)
-proc get_behavior*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_behavior(self, p)
-proc getAttribute*(self: ptr IHTMLCurrentStyle, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, strAttributeName, lFlags, AttributeValue)
-proc get_unicodeBidi*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_unicodeBidi(self, p)
-proc get_right*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_right(self, p)
-proc get_bottom*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bottom(self, p)
-proc get_imeMode*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_imeMode(self, p)
-proc get_rubyAlign*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rubyAlign(self, p)
-proc get_rubyPosition*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rubyPosition(self, p)
-proc get_rubyOverhang*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rubyOverhang(self, p)
-proc get_textAutospace*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAutospace(self, p)
-proc get_lineBreak*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lineBreak(self, p)
-proc get_wordBreak*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wordBreak(self, p)
-proc get_textJustify*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textJustify(self, p)
-proc get_textJustifyTrim*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textJustifyTrim(self, p)
-proc get_textKashida*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textKashida(self, p)
-proc get_blockDirection*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_blockDirection(self, p)
-proc get_layoutGridChar*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridChar(self, p)
-proc get_layoutGridLine*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridLine(self, p)
-proc get_layoutGridMode*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridMode(self, p)
-proc get_layoutGridType*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutGridType(self, p)
-proc get_borderStyle*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderStyle(self, p)
-proc get_borderColor*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColor(self, p)
-proc get_borderWidth*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderWidth(self, p)
-proc get_padding*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_padding(self, p)
-proc get_margin*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_margin(self, p)
-proc get_accelerator*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accelerator(self, p)
-proc get_overflowX*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overflowX(self, p)
-proc get_overflowY*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overflowY(self, p)
-proc get_textTransform*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textTransform(self, p)
-proc get_layoutFlow*(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layoutFlow(self, p)
-proc get_wordWrap*(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wordWrap(self, p)
-proc get_textUnderlinePosition*(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textUnderlinePosition(self, p)
-proc get_hasLayout*(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hasLayout(self, p)
-proc get_scrollbarBaseColor*(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarBaseColor(self, p)
-proc get_scrollbarFaceColor*(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarFaceColor(self, p)
-proc get_scrollbar3dLightColor*(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbar3dLightColor(self, p)
-proc get_scrollbarShadowColor*(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarShadowColor(self, p)
-proc get_scrollbarHighlightColor*(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarHighlightColor(self, p)
-proc get_scrollbarDarkShadowColor*(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarDarkShadowColor(self, p)
-proc get_scrollbarArrowColor*(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarArrowColor(self, p)
-proc get_scrollbarTrackColor*(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbarTrackColor(self, p)
-proc get_writingMode*(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_writingMode(self, p)
-proc get_zoom*(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_zoom(self, p)
-proc get_filter*(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_filter(self, p)
-proc get_textAlignLast*(self: ptr IHTMLCurrentStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAlignLast(self, p)
-proc get_textKashidaSpace*(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textKashidaSpace(self, p)
-proc get_isBlock*(self: ptr IHTMLCurrentStyle2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_isBlock(self, p)
-proc get_textOverflow*(self: ptr IHTMLCurrentStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textOverflow(self, p)
-proc get_minHeight*(self: ptr IHTMLCurrentStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_minHeight(self, p)
-proc get_wordSpacing*(self: ptr IHTMLCurrentStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wordSpacing(self, p)
-proc get_whiteSpace*(self: ptr IHTMLCurrentStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_whiteSpace(self, p)
-proc get_msInterpolationMode*(self: ptr IHTMLCurrentStyle4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msInterpolationMode(self, p)
-proc get_maxHeight*(self: ptr IHTMLCurrentStyle4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maxHeight(self, p)
-proc get_minWidth*(self: ptr IHTMLCurrentStyle4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_minWidth(self, p)
-proc get_maxWidth*(self: ptr IHTMLCurrentStyle4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maxWidth(self, p)
-proc get_captionSide*(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_captionSide(self, p)
-proc get_outline*(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outline(self, p)
-proc get_outlineWidth*(self: ptr IHTMLCurrentStyle5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outlineWidth(self, p)
-proc get_outlineStyle*(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outlineStyle(self, p)
-proc get_outlineColor*(self: ptr IHTMLCurrentStyle5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outlineColor(self, p)
-proc get_boxSizing*(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_boxSizing(self, p)
-proc get_borderSpacing*(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderSpacing(self, p)
-proc get_orphans*(self: ptr IHTMLCurrentStyle5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_orphans(self, p)
-proc get_widows*(self: ptr IHTMLCurrentStyle5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_widows(self, p)
-proc get_pageBreakInside*(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakInside(self, p)
-proc get_emptyCells*(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_emptyCells(self, p)
-proc get_msBlockProgression*(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msBlockProgression(self, p)
-proc get_quotes*(self: ptr IHTMLCurrentStyle5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_quotes(self, p)
-proc put_left*(self: ptr IHTMLRect, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_left(self, v)
-proc get_left*(self: ptr IHTMLRect, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_left(self, p)
-proc put_top*(self: ptr IHTMLRect, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_top(self, v)
-proc get_top*(self: ptr IHTMLRect, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_top(self, p)
-proc put_right*(self: ptr IHTMLRect, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_right(self, v)
-proc get_right*(self: ptr IHTMLRect, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_right(self, p)
-proc put_bottom*(self: ptr IHTMLRect, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bottom(self, v)
-proc get_bottom*(self: ptr IHTMLRect, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bottom(self, p)
-proc get_width*(self: ptr IHTMLRect2, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc get_height*(self: ptr IHTMLRect2, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc get_length*(self: ptr IHTMLRectCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IHTMLRectCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc item*(self: ptr IHTMLRectCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, pvarIndex, pvarResult)
-proc get_nodeType*(self: ptr IHTMLDOMNode, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeType(self, p)
-proc get_parentNode*(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentNode(self, p)
-proc hasChildNodes*(self: ptr IHTMLDOMNode, fChildren: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasChildNodes(self, fChildren)
-proc get_childNodes*(self: ptr IHTMLDOMNode, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_childNodes(self, p)
-proc get_attributes*(self: ptr IHTMLDOMNode, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_attributes(self, p)
-proc insertBefore*(self: ptr IHTMLDOMNode, newChild: ptr IHTMLDOMNode, refChild: VARIANT, node: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertBefore(self, newChild, refChild, node)
-proc removeChild*(self: ptr IHTMLDOMNode, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeChild(self, oldChild, node)
-proc replaceChild*(self: ptr IHTMLDOMNode, newChild: ptr IHTMLDOMNode, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceChild(self, newChild, oldChild, node)
-proc cloneNode*(self: ptr IHTMLDOMNode, fDeep: VARIANT_BOOL, clonedNode: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.cloneNode(self, fDeep, clonedNode)
-proc removeNode*(self: ptr IHTMLDOMNode, fDeep: VARIANT_BOOL, removed: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeNode(self, fDeep, removed)
-proc swapNode*(self: ptr IHTMLDOMNode, otherNode: ptr IHTMLDOMNode, swappedNode: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.swapNode(self, otherNode, swappedNode)
-proc replaceNode*(self: ptr IHTMLDOMNode, replacement: ptr IHTMLDOMNode, replaced: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceNode(self, replacement, replaced)
-proc appendChild*(self: ptr IHTMLDOMNode, newChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendChild(self, newChild, node)
-proc get_nodeName*(self: ptr IHTMLDOMNode, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeName(self, p)
-proc put_nodeValue*(self: ptr IHTMLDOMNode, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_nodeValue(self, v)
-proc get_nodeValue*(self: ptr IHTMLDOMNode, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeValue(self, p)
-proc get_firstChild*(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_firstChild(self, p)
-proc get_lastChild*(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lastChild(self, p)
-proc get_previousSibling*(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_previousSibling(self, p)
-proc get_nextSibling*(self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nextSibling(self, p)
-proc get_ownerDocument*(self: ptr IHTMLDOMNode2, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ownerDocument(self, p)
-proc put_prefix*(self: ptr IHTMLDOMNode3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_prefix(self, v)
-proc get_prefix*(self: ptr IHTMLDOMNode3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_prefix(self, p)
-proc get_localName*(self: ptr IHTMLDOMNode3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_localName(self, p)
-proc get_namespaceURI*(self: ptr IHTMLDOMNode3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_namespaceURI(self, p)
-proc put_textContent*(self: ptr IHTMLDOMNode3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textContent(self, v)
-proc get_textContent*(self: ptr IHTMLDOMNode3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textContent(self, p)
-proc isEqualNode*(self: ptr IHTMLDOMNode3, otherNode: ptr IHTMLDOMNode3, isEqual: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.isEqualNode(self, otherNode, isEqual)
-proc lookupNamespaceURI*(self: ptr IHTMLDOMNode3, pvarPrefix: ptr VARIANT, pvarNamespaceURI: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.lookupNamespaceURI(self, pvarPrefix, pvarNamespaceURI)
-proc lookupPrefix*(self: ptr IHTMLDOMNode3, pvarNamespaceURI: ptr VARIANT, pvarPrefix: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.lookupPrefix(self, pvarNamespaceURI, pvarPrefix)
-proc isDefaultNamespace*(self: ptr IHTMLDOMNode3, pvarNamespace: ptr VARIANT, pfDefaultNamespace: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.isDefaultNamespace(self, pvarNamespace, pfDefaultNamespace)
-proc appendChild*(self: ptr IHTMLDOMNode3, newChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendChild(self, newChild, node)
-proc insertBefore*(self: ptr IHTMLDOMNode3, newChild: ptr IHTMLDOMNode, refChild: VARIANT, node: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertBefore(self, newChild, refChild, node)
-proc removeChild*(self: ptr IHTMLDOMNode3, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeChild(self, oldChild, node)
-proc replaceChild*(self: ptr IHTMLDOMNode3, newChild: ptr IHTMLDOMNode, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceChild(self, newChild, oldChild, node)
-proc isSameNode*(self: ptr IHTMLDOMNode3, otherNode: ptr IHTMLDOMNode3, isSame: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.isSameNode(self, otherNode, isSame)
-proc compareDocumentPosition*(self: ptr IHTMLDOMNode3, otherNode: ptr IHTMLDOMNode, flags: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.compareDocumentPosition(self, otherNode, flags)
-proc isSupported*(self: ptr IHTMLDOMNode3, feature: BSTR, version: VARIANT, pfisSupported: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.isSupported(self, feature, version, pfisSupported)
-proc get_nodeName*(self: ptr IHTMLDOMAttribute, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeName(self, p)
-proc put_nodeValue*(self: ptr IHTMLDOMAttribute, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_nodeValue(self, v)
-proc get_nodeValue*(self: ptr IHTMLDOMAttribute, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeValue(self, p)
-proc get_specified*(self: ptr IHTMLDOMAttribute, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_specified(self, p)
-proc get_name*(self: ptr IHTMLDOMAttribute2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_value*(self: ptr IHTMLDOMAttribute2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLDOMAttribute2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc get_expando*(self: ptr IHTMLDOMAttribute2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_expando(self, p)
-proc get_nodeType*(self: ptr IHTMLDOMAttribute2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeType(self, p)
-proc get_parentNode*(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentNode(self, p)
-proc get_childNodes*(self: ptr IHTMLDOMAttribute2, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_childNodes(self, p)
-proc get_firstChild*(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_firstChild(self, p)
-proc get_lastChild*(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lastChild(self, p)
-proc get_previousSibling*(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_previousSibling(self, p)
-proc get_nextSibling*(self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nextSibling(self, p)
-proc get_attributes*(self: ptr IHTMLDOMAttribute2, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_attributes(self, p)
-proc get_ownerDocument*(self: ptr IHTMLDOMAttribute2, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ownerDocument(self, p)
-proc insertBefore*(self: ptr IHTMLDOMAttribute2, newChild: ptr IHTMLDOMNode, refChild: VARIANT, node: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertBefore(self, newChild, refChild, node)
-proc replaceChild*(self: ptr IHTMLDOMAttribute2, newChild: ptr IHTMLDOMNode, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceChild(self, newChild, oldChild, node)
-proc removeChild*(self: ptr IHTMLDOMAttribute2, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeChild(self, oldChild, node)
-proc appendChild*(self: ptr IHTMLDOMAttribute2, newChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendChild(self, newChild, node)
-proc hasChildNodes*(self: ptr IHTMLDOMAttribute2, fChildren: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasChildNodes(self, fChildren)
-proc cloneNode*(self: ptr IHTMLDOMAttribute2, fDeep: VARIANT_BOOL, clonedNode: ptr ptr IHTMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.cloneNode(self, fDeep, clonedNode)
-proc put_nodeValue*(self: ptr IHTMLDOMAttribute3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_nodeValue(self, v)
-proc get_nodeValue*(self: ptr IHTMLDOMAttribute3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeValue(self, p)
-proc put_value*(self: ptr IHTMLDOMAttribute3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLDOMAttribute3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc get_specified*(self: ptr IHTMLDOMAttribute3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_specified(self, p)
-proc get_ownerElement*(self: ptr IHTMLDOMAttribute3, p: ptr ptr IHTMLElement2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ownerElement(self, p)
-proc put_nodeValue*(self: ptr IHTMLDOMAttribute4, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_nodeValue(self, v)
-proc get_nodeValue*(self: ptr IHTMLDOMAttribute4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeValue(self, p)
-proc get_nodeName*(self: ptr IHTMLDOMAttribute4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeName(self, p)
-proc get_name*(self: ptr IHTMLDOMAttribute4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_value*(self: ptr IHTMLDOMAttribute4, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLDOMAttribute4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc get_firstChild*(self: ptr IHTMLDOMAttribute4, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_firstChild(self, p)
-proc get_lastChild*(self: ptr IHTMLDOMAttribute4, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lastChild(self, p)
-proc get_childNodes*(self: ptr IHTMLDOMAttribute4, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_childNodes(self, p)
-proc hasAttributes*(self: ptr IHTMLDOMAttribute4, pfHasAttributes: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasAttributes(self, pfHasAttributes)
-proc hasChildNodes*(self: ptr IHTMLDOMAttribute4, fChildren: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasChildNodes(self, fChildren)
-proc normalize*(self: ptr IHTMLDOMAttribute4): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.normalize(self)
-proc get_specified*(self: ptr IHTMLDOMAttribute4, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_specified(self, p)
-proc put_data*(self: ptr IHTMLDOMTextNode, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_data(self, v)
-proc get_data*(self: ptr IHTMLDOMTextNode, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_data(self, p)
-proc toString*(self: ptr IHTMLDOMTextNode, String: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, String)
-proc get_length*(self: ptr IHTMLDOMTextNode, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc splitText*(self: ptr IHTMLDOMTextNode, offset: LONG, pRetNode: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.splitText(self, offset, pRetNode)
-proc substringData*(self: ptr IHTMLDOMTextNode2, offset: LONG, Count: LONG, pbstrsubString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.substringData(self, offset, Count, pbstrsubString)
-proc appendData*(self: ptr IHTMLDOMTextNode2, bstrstring: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendData(self, bstrstring)
-proc insertData*(self: ptr IHTMLDOMTextNode2, offset: LONG, bstrstring: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertData(self, offset, bstrstring)
-proc deleteData*(self: ptr IHTMLDOMTextNode2, offset: LONG, Count: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteData(self, offset, Count)
-proc replaceData*(self: ptr IHTMLDOMTextNode2, offset: LONG, Count: LONG, bstrstring: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceData(self, offset, Count, bstrstring)
-proc substringData*(self: ptr IHTMLDOMTextNode3, offset: LONG, Count: LONG, pbstrsubString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.substringData(self, offset, Count, pbstrsubString)
-proc insertData*(self: ptr IHTMLDOMTextNode3, offset: LONG, bstrstring: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertData(self, offset, bstrstring)
-proc deleteData*(self: ptr IHTMLDOMTextNode3, offset: LONG, Count: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteData(self, offset, Count)
-proc replaceData*(self: ptr IHTMLDOMTextNode3, offset: LONG, Count: LONG, bstrstring: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceData(self, offset, Count, bstrstring)
-proc splitText*(self: ptr IHTMLDOMTextNode3, offset: LONG, pRetNode: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.splitText(self, offset, pRetNode)
-proc get_wholeText*(self: ptr IHTMLDOMTextNode3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wholeText(self, p)
-proc replaceWholeText*(self: ptr IHTMLDOMTextNode3, bstrText: BSTR, ppRetNode: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceWholeText(self, bstrText, ppRetNode)
-proc hasAttributes*(self: ptr IHTMLDOMTextNode3, pfHasAttributes: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasAttributes(self, pfHasAttributes)
-proc normalize*(self: ptr IHTMLDOMTextNode3): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.normalize(self)
-proc hasFeature*(self: ptr IHTMLDOMImplementation, bstrfeature: BSTR, version: VARIANT, pfHasFeature: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasFeature(self, bstrfeature, version, pfHasFeature)
-proc createDocumentType*(self: ptr IHTMLDOMImplementation2, bstrQualifiedName: BSTR, pvarPublicId: ptr VARIANT, pvarSystemId: ptr VARIANT, newDocumentType: ptr ptr IDOMDocumentType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createDocumentType(self, bstrQualifiedName, pvarPublicId, pvarSystemId, newDocumentType)
-proc createDocument*(self: ptr IHTMLDOMImplementation2, pvarNS: ptr VARIANT, pvarTagName: ptr VARIANT, pDocumentType: ptr IDOMDocumentType, ppnewDocument: ptr ptr IHTMLDocument7): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createDocument(self, pvarNS, pvarTagName, pDocumentType, ppnewDocument)
-proc createHTMLDocument*(self: ptr IHTMLDOMImplementation2, bstrTitle: BSTR, ppnewDocument: ptr ptr IHTMLDocument7): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createHTMLDocument(self, bstrTitle, ppnewDocument)
-proc hasFeature*(self: ptr IHTMLDOMImplementation2, bstrfeature: BSTR, version: VARIANT, pfHasFeature: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasFeature(self, bstrfeature, version, pfHasFeature)
-proc get_length*(self: ptr IHTMLAttributeCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IHTMLAttributeCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc item*(self: ptr IHTMLAttributeCollection, name: ptr VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, name, pdisp)
-proc getNamedItem*(self: ptr IHTMLAttributeCollection2, bstrName: BSTR, newretNode: ptr ptr IHTMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getNamedItem(self, bstrName, newretNode)
-proc setNamedItem*(self: ptr IHTMLAttributeCollection2, ppNode: ptr IHTMLDOMAttribute, newretNode: ptr ptr IHTMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setNamedItem(self, ppNode, newretNode)
-proc removeNamedItem*(self: ptr IHTMLAttributeCollection2, bstrName: BSTR, newretNode: ptr ptr IHTMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeNamedItem(self, bstrName, newretNode)
-proc getNamedItem*(self: ptr IHTMLAttributeCollection3, bstrName: BSTR, ppNodeOut: ptr ptr IHTMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getNamedItem(self, bstrName, ppNodeOut)
-proc setNamedItem*(self: ptr IHTMLAttributeCollection3, pNodeIn: ptr IHTMLDOMAttribute, ppNodeOut: ptr ptr IHTMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setNamedItem(self, pNodeIn, ppNodeOut)
-proc removeNamedItem*(self: ptr IHTMLAttributeCollection3, bstrName: BSTR, ppNodeOut: ptr ptr IHTMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeNamedItem(self, bstrName, ppNodeOut)
-proc item*(self: ptr IHTMLAttributeCollection3, index: LONG, ppNodeOut: ptr ptr IHTMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, ppNodeOut)
-proc get_length*(self: ptr IHTMLAttributeCollection3, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc getNamedItemNS*(self: ptr IHTMLAttributeCollection4, pvarNS: ptr VARIANT, bstrName: BSTR, ppNodeOut: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getNamedItemNS(self, pvarNS, bstrName, ppNodeOut)
-proc setNamedItemNS*(self: ptr IHTMLAttributeCollection4, pNodeIn: ptr IHTMLDOMAttribute2, ppNodeOut: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setNamedItemNS(self, pNodeIn, ppNodeOut)
-proc removeNamedItemNS*(self: ptr IHTMLAttributeCollection4, pvarNS: ptr VARIANT, bstrName: BSTR, ppNodeOut: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeNamedItemNS(self, pvarNS, bstrName, ppNodeOut)
-proc getNamedItem*(self: ptr IHTMLAttributeCollection4, bstrName: BSTR, ppNodeOut: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getNamedItem(self, bstrName, ppNodeOut)
-proc setNamedItem*(self: ptr IHTMLAttributeCollection4, pNodeIn: ptr IHTMLDOMAttribute2, ppNodeOut: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setNamedItem(self, pNodeIn, ppNodeOut)
-proc removeNamedItem*(self: ptr IHTMLAttributeCollection4, bstrName: BSTR, ppNodeOut: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeNamedItem(self, bstrName, ppNodeOut)
-proc item*(self: ptr IHTMLAttributeCollection4, index: LONG, ppNodeOut: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, ppNodeOut)
-proc get_length*(self: ptr IHTMLAttributeCollection4, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_length*(self: ptr IHTMLDOMChildrenCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IHTMLDOMChildrenCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc item*(self: ptr IHTMLDOMChildrenCollection, index: LONG, ppItem: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, ppItem)
-proc item*(self: ptr IHTMLDOMChildrenCollection2, index: LONG, ppItem: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, ppItem)
-proc setAttribute*(self: ptr IHTMLElement, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttribute(self, strAttributeName, AttributeValue, lFlags)
-proc getAttribute*(self: ptr IHTMLElement, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, strAttributeName, lFlags, AttributeValue)
-proc removeAttribute*(self: ptr IHTMLElement, strAttributeName: BSTR, lFlags: LONG, pfSuccess: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttribute(self, strAttributeName, lFlags, pfSuccess)
-proc put_className*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_className(self, v)
-proc get_className*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_className(self, p)
-proc put_id*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_id(self, v)
-proc get_id*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_id(self, p)
-proc get_tagName*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tagName(self, p)
-proc get_parentElement*(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentElement(self, p)
-proc get_style*(self: ptr IHTMLElement, p: ptr ptr IHTMLStyle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_style(self, p)
-proc put_onhelp*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onhelp(self, v)
-proc get_onhelp*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onhelp(self, p)
-proc put_onclick*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onclick(self, v)
-proc get_onclick*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onclick(self, p)
-proc put_ondblclick*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondblclick(self, v)
-proc get_ondblclick*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondblclick(self, p)
-proc put_onkeydown*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeydown(self, v)
-proc get_onkeydown*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeydown(self, p)
-proc put_onkeyup*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeyup(self, v)
-proc get_onkeyup*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeyup(self, p)
-proc put_onkeypress*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeypress(self, v)
-proc get_onkeypress*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeypress(self, p)
-proc put_onmouseout*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseout(self, v)
-proc get_onmouseout*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseout(self, p)
-proc put_onmouseover*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseover(self, v)
-proc get_onmouseover*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseover(self, p)
-proc put_onmousemove*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmousemove(self, v)
-proc get_onmousemove*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmousemove(self, p)
-proc put_onmousedown*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmousedown(self, v)
-proc get_onmousedown*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmousedown(self, p)
-proc put_onmouseup*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseup(self, v)
-proc get_onmouseup*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseup(self, p)
-proc get_document*(self: ptr IHTMLElement, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_document(self, p)
-proc put_title*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_title(self, v)
-proc get_title*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_title(self, p)
-proc put_language*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_language(self, v)
-proc get_language*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_language(self, p)
-proc put_onselectstart*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onselectstart(self, v)
-proc get_onselectstart*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onselectstart(self, p)
-proc scrollIntoView*(self: ptr IHTMLElement, varargStart: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.scrollIntoView(self, varargStart)
-proc contains*(self: ptr IHTMLElement, pChild: ptr IHTMLElement, pfResult: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.contains(self, pChild, pfResult)
-proc get_sourceIndex*(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_sourceIndex(self, p)
-proc get_recordNumber*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_recordNumber(self, p)
-proc put_lang*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lang(self, v)
-proc get_lang*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lang(self, p)
-proc get_offsetLeft*(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetLeft(self, p)
-proc get_offsetTop*(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetTop(self, p)
-proc get_offsetWidth*(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetWidth(self, p)
-proc get_offsetHeight*(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetHeight(self, p)
-proc get_offsetParent*(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetParent(self, p)
-proc put_innerHTML*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_innerHTML(self, v)
-proc get_innerHTML*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_innerHTML(self, p)
-proc put_innerText*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_innerText(self, v)
-proc get_innerText*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_innerText(self, p)
-proc put_outerHTML*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outerHTML(self, v)
-proc get_outerHTML*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outerHTML(self, p)
-proc put_outerText*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outerText(self, v)
-proc get_outerText*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outerText(self, p)
-proc insertAdjacentHTML*(self: ptr IHTMLElement, where: BSTR, html: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertAdjacentHTML(self, where, html)
-proc insertAdjacentText*(self: ptr IHTMLElement, where: BSTR, text: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertAdjacentText(self, where, text)
-proc get_parentTextEdit*(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentTextEdit(self, p)
-proc get_isTextEdit*(self: ptr IHTMLElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_isTextEdit(self, p)
-proc click*(self: ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.click(self)
-proc get_filters*(self: ptr IHTMLElement, p: ptr ptr IHTMLFiltersCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_filters(self, p)
-proc put_ondragstart*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragstart(self, v)
-proc get_ondragstart*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragstart(self, p)
-proc toString*(self: ptr IHTMLElement, String: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, String)
-proc put_onbeforeupdate*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeupdate(self, v)
-proc get_onbeforeupdate*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeupdate(self, p)
-proc put_onafterupdate*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onafterupdate(self, v)
-proc get_onafterupdate*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onafterupdate(self, p)
-proc put_onerrorupdate*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerrorupdate(self, v)
-proc get_onerrorupdate*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerrorupdate(self, p)
-proc put_onrowexit*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onrowexit(self, v)
-proc get_onrowexit*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onrowexit(self, p)
-proc put_onrowenter*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onrowenter(self, v)
-proc get_onrowenter*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onrowenter(self, p)
-proc put_ondatasetchanged*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondatasetchanged(self, v)
-proc get_ondatasetchanged*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondatasetchanged(self, p)
-proc put_ondataavailable*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondataavailable(self, v)
-proc get_ondataavailable*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondataavailable(self, p)
-proc put_ondatasetcomplete*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondatasetcomplete(self, v)
-proc get_ondatasetcomplete*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondatasetcomplete(self, p)
-proc put_onfilterchange*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfilterchange(self, v)
-proc get_onfilterchange*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfilterchange(self, p)
-proc get_children*(self: ptr IHTMLElement, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_children(self, p)
-proc get_all*(self: ptr IHTMLElement, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_all(self, p)
-proc get_scopeName*(self: ptr IHTMLElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scopeName(self, p)
-proc setCapture*(self: ptr IHTMLElement2, containerCapture: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setCapture(self, containerCapture)
-proc releaseCapture*(self: ptr IHTMLElement2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.releaseCapture(self)
-proc put_onlosecapture*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onlosecapture(self, v)
-proc get_onlosecapture*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onlosecapture(self, p)
-proc componentFromPoint*(self: ptr IHTMLElement2, x: LONG, y: LONG, component: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.componentFromPoint(self, x, y, component)
-proc doScroll*(self: ptr IHTMLElement2, component: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.doScroll(self, component)
-proc put_onscroll*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onscroll(self, v)
-proc get_onscroll*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onscroll(self, p)
-proc put_ondrag*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondrag(self, v)
-proc get_ondrag*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondrag(self, p)
-proc put_ondragend*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragend(self, v)
-proc get_ondragend*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragend(self, p)
-proc put_ondragenter*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragenter(self, v)
-proc get_ondragenter*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragenter(self, p)
-proc put_ondragover*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragover(self, v)
-proc get_ondragover*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragover(self, p)
-proc put_ondragleave*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragleave(self, v)
-proc get_ondragleave*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragleave(self, p)
-proc put_ondrop*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondrop(self, v)
-proc get_ondrop*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondrop(self, p)
-proc put_onbeforecut*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforecut(self, v)
-proc get_onbeforecut*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforecut(self, p)
-proc put_oncut*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncut(self, v)
-proc get_oncut*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncut(self, p)
-proc put_onbeforecopy*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforecopy(self, v)
-proc get_onbeforecopy*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforecopy(self, p)
-proc put_oncopy*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncopy(self, v)
-proc get_oncopy*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncopy(self, p)
-proc put_onbeforepaste*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforepaste(self, v)
-proc get_onbeforepaste*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforepaste(self, p)
-proc put_onpaste*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onpaste(self, v)
-proc get_onpaste*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onpaste(self, p)
-proc get_currentStyle*(self: ptr IHTMLElement2, p: ptr ptr IHTMLCurrentStyle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_currentStyle(self, p)
-proc put_onpropertychange*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onpropertychange(self, v)
-proc get_onpropertychange*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onpropertychange(self, p)
-proc getClientRects*(self: ptr IHTMLElement2, pRectCol: ptr ptr IHTMLRectCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getClientRects(self, pRectCol)
-proc getBoundingClientRect*(self: ptr IHTMLElement2, pRect: ptr ptr IHTMLRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getBoundingClientRect(self, pRect)
-proc setExpression*(self: ptr IHTMLElement2, propname: BSTR, expression: BSTR, language: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setExpression(self, propname, expression, language)
-proc getExpression*(self: ptr IHTMLElement2, propname: BSTR, expression: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getExpression(self, propname, expression)
-proc removeExpression*(self: ptr IHTMLElement2, propname: BSTR, pfSuccess: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeExpression(self, propname, pfSuccess)
-proc put_tabIndex*(self: ptr IHTMLElement2, v: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_tabIndex(self, v)
-proc get_tabIndex*(self: ptr IHTMLElement2, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tabIndex(self, p)
-proc focus*(self: ptr IHTMLElement2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.focus(self)
-proc put_accessKey*(self: ptr IHTMLElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_accessKey(self, v)
-proc get_accessKey*(self: ptr IHTMLElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accessKey(self, p)
-proc put_onblur*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onblur(self, v)
-proc get_onblur*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onblur(self, p)
-proc put_onfocus*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfocus(self, v)
-proc get_onfocus*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfocus(self, p)
-proc put_onresize*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onresize(self, v)
-proc get_onresize*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onresize(self, p)
-proc blur*(self: ptr IHTMLElement2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.blur(self)
-proc addFilter*(self: ptr IHTMLElement2, pUnk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addFilter(self, pUnk)
-proc removeFilter*(self: ptr IHTMLElement2, pUnk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeFilter(self, pUnk)
-proc get_clientHeight*(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientHeight(self, p)
-proc get_clientWidth*(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientWidth(self, p)
-proc get_clientTop*(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientTop(self, p)
-proc get_clientLeft*(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientLeft(self, p)
-proc attachEvent*(self: ptr IHTMLElement2, event: BSTR, pDisp: ptr IDispatch, pfResult: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.attachEvent(self, event, pDisp, pfResult)
-proc detachEvent*(self: ptr IHTMLElement2, event: BSTR, pDisp: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.detachEvent(self, event, pDisp)
-proc get_readyState*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
-proc put_onreadystatechange*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreadystatechange(self, v)
-proc get_onreadystatechange*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreadystatechange(self, p)
-proc put_onrowsdelete*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onrowsdelete(self, v)
-proc get_onrowsdelete*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onrowsdelete(self, p)
-proc put_onrowsinserted*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onrowsinserted(self, v)
-proc get_onrowsinserted*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onrowsinserted(self, p)
-proc put_oncellchange*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncellchange(self, v)
-proc get_oncellchange*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncellchange(self, p)
-proc put_dir*(self: ptr IHTMLElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dir(self, v)
-proc get_dir*(self: ptr IHTMLElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dir(self, p)
-proc createControlRange*(self: ptr IHTMLElement2, range: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createControlRange(self, range)
-proc get_scrollHeight*(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollHeight(self, p)
-proc get_scrollWidth*(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollWidth(self, p)
-proc put_scrollTop*(self: ptr IHTMLElement2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollTop(self, v)
-proc get_scrollTop*(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollTop(self, p)
-proc put_scrollLeft*(self: ptr IHTMLElement2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollLeft(self, v)
-proc get_scrollLeft*(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollLeft(self, p)
-proc clearAttributes*(self: ptr IHTMLElement2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clearAttributes(self)
-proc mergeAttributes*(self: ptr IHTMLElement2, mergeThis: ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.mergeAttributes(self, mergeThis)
-proc put_oncontextmenu*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncontextmenu(self, v)
-proc get_oncontextmenu*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncontextmenu(self, p)
-proc insertAdjacentElement*(self: ptr IHTMLElement2, where: BSTR, insertedElement: ptr IHTMLElement, inserted: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertAdjacentElement(self, where, insertedElement, inserted)
-proc applyElement*(self: ptr IHTMLElement2, apply: ptr IHTMLElement, where: BSTR, applied: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.applyElement(self, apply, where, applied)
-proc getAdjacentText*(self: ptr IHTMLElement2, where: BSTR, text: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAdjacentText(self, where, text)
-proc replaceAdjacentText*(self: ptr IHTMLElement2, where: BSTR, newText: BSTR, oldText: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceAdjacentText(self, where, newText, oldText)
-proc get_canHaveChildren*(self: ptr IHTMLElement2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_canHaveChildren(self, p)
-proc addBehavior*(self: ptr IHTMLElement2, bstrUrl: BSTR, pvarFactory: ptr VARIANT, pCookie: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addBehavior(self, bstrUrl, pvarFactory, pCookie)
-proc removeBehavior*(self: ptr IHTMLElement2, cookie: LONG, pfResult: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeBehavior(self, cookie, pfResult)
-proc get_runtimeStyle*(self: ptr IHTMLElement2, p: ptr ptr IHTMLStyle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_runtimeStyle(self, p)
-proc get_behaviorUrns*(self: ptr IHTMLElement2, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_behaviorUrns(self, p)
-proc put_tagUrn*(self: ptr IHTMLElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_tagUrn(self, v)
-proc get_tagUrn*(self: ptr IHTMLElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tagUrn(self, p)
-proc put_onbeforeeditfocus*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeeditfocus(self, v)
-proc get_onbeforeeditfocus*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeeditfocus(self, p)
-proc get_readyStateValue*(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyStateValue(self, p)
-proc getElementsByTagName*(self: ptr IHTMLElement2, v: BSTR, pelColl: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getElementsByTagName(self, v, pelColl)
-proc mergeAttributes*(self: ptr IHTMLElement3, mergeThis: ptr IHTMLElement, pvarFlags: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.mergeAttributes(self, mergeThis, pvarFlags)
-proc get_isMultiLine*(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_isMultiLine(self, p)
-proc get_canHaveHTML*(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_canHaveHTML(self, p)
-proc put_onlayoutcomplete*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onlayoutcomplete(self, v)
-proc get_onlayoutcomplete*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onlayoutcomplete(self, p)
-proc put_onpage*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onpage(self, v)
-proc get_onpage*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onpage(self, p)
-proc put_inflateBlock*(self: ptr IHTMLElement3, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_inflateBlock(self, v)
-proc get_inflateBlock*(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_inflateBlock(self, p)
-proc put_onbeforedeactivate*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforedeactivate(self, v)
-proc get_onbeforedeactivate*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforedeactivate(self, p)
-proc setActive*(self: ptr IHTMLElement3): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setActive(self)
-proc put_contentEditable*(self: ptr IHTMLElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_contentEditable(self, v)
-proc get_contentEditable*(self: ptr IHTMLElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_contentEditable(self, p)
-proc get_isContentEditable*(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_isContentEditable(self, p)
-proc put_hideFocus*(self: ptr IHTMLElement3, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hideFocus(self, v)
-proc get_hideFocus*(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hideFocus(self, p)
-proc put_disabled*(self: ptr IHTMLElement3, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc get_isDisabled*(self: ptr IHTMLElement3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_isDisabled(self, p)
-proc put_onmove*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmove(self, v)
-proc get_onmove*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmove(self, p)
-proc put_oncontrolselect*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncontrolselect(self, v)
-proc get_oncontrolselect*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncontrolselect(self, p)
-proc fireEvent*(self: ptr IHTMLElement3, bstrEventName: BSTR, pvarEventObject: ptr VARIANT, pfCancelled: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.fireEvent(self, bstrEventName, pvarEventObject, pfCancelled)
-proc put_onresizestart*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onresizestart(self, v)
-proc get_onresizestart*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onresizestart(self, p)
-proc put_onresizeend*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onresizeend(self, v)
-proc get_onresizeend*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onresizeend(self, p)
-proc put_onmovestart*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmovestart(self, v)
-proc get_onmovestart*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmovestart(self, p)
-proc put_onmoveend*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmoveend(self, v)
-proc get_onmoveend*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmoveend(self, p)
-proc put_onmouseenter*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseenter(self, v)
-proc get_onmouseenter*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseenter(self, p)
-proc put_onmouseleave*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseleave(self, v)
-proc get_onmouseleave*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseleave(self, p)
-proc put_onactivate*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onactivate(self, v)
-proc get_onactivate*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onactivate(self, p)
-proc put_ondeactivate*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondeactivate(self, v)
-proc get_ondeactivate*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondeactivate(self, p)
-proc dragDrop*(self: ptr IHTMLElement3, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.dragDrop(self, pfRet)
-proc get_glyphMode*(self: ptr IHTMLElement3, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_glyphMode(self, p)
-proc put_onmousewheel*(self: ptr IHTMLElement4, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmousewheel(self, v)
-proc get_onmousewheel*(self: ptr IHTMLElement4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmousewheel(self, p)
-proc normalize*(self: ptr IHTMLElement4): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.normalize(self)
-proc getAttributeNode*(self: ptr IHTMLElement4, bstrname: BSTR, ppAttribute: ptr ptr IHTMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttributeNode(self, bstrname, ppAttribute)
-proc setAttributeNode*(self: ptr IHTMLElement4, pattr: ptr IHTMLDOMAttribute, ppretAttribute: ptr ptr IHTMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttributeNode(self, pattr, ppretAttribute)
-proc removeAttributeNode*(self: ptr IHTMLElement4, pattr: ptr IHTMLDOMAttribute, ppretAttribute: ptr ptr IHTMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttributeNode(self, pattr, ppretAttribute)
-proc put_onbeforeactivate*(self: ptr IHTMLElement4, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeactivate(self, v)
-proc get_onbeforeactivate*(self: ptr IHTMLElement4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeactivate(self, p)
-proc put_onfocusin*(self: ptr IHTMLElement4, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfocusin(self, v)
-proc get_onfocusin*(self: ptr IHTMLElement4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfocusin(self, p)
-proc put_onfocusout*(self: ptr IHTMLElement4, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfocusout(self, v)
-proc get_onfocusout*(self: ptr IHTMLElement4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfocusout(self, p)
-proc querySelector*(self: ptr IElementSelector, v: BSTR, pel: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.querySelector(self, v, pel)
-proc querySelectorAll*(self: ptr IElementSelector, v: BSTR, pel: ptr ptr IHTMLDOMChildrenCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.querySelectorAll(self, v, pel)
-proc DrawToDC*(self: ptr IHTMLElementRender, hDC: HDC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DrawToDC(self, hDC)
-proc SetDocumentPrinter*(self: ptr IHTMLElementRender, bstrPrinterName: BSTR, hDC: HDC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDocumentPrinter(self, bstrPrinterName, hDC)
-proc get_uniqueNumber*(self: ptr IHTMLUniqueName, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_uniqueNumber(self, p)
-proc get_uniqueID*(self: ptr IHTMLUniqueName, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_uniqueID(self, p)
-proc getAttributeNode*(self: ptr IHTMLElement5, bstrname: BSTR, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttributeNode(self, bstrname, ppretAttribute)
-proc setAttributeNode*(self: ptr IHTMLElement5, pattr: ptr IHTMLDOMAttribute2, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttributeNode(self, pattr, ppretAttribute)
-proc removeAttributeNode*(self: ptr IHTMLElement5, pattr: ptr IHTMLDOMAttribute2, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttributeNode(self, pattr, ppretAttribute)
-proc hasAttribute*(self: ptr IHTMLElement5, name: BSTR, pfHasAttribute: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasAttribute(self, name, pfHasAttribute)
-proc put_role*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_role(self, v)
-proc get_role*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_role(self, p)
-proc put_ariaBusy*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaBusy(self, v)
-proc get_ariaBusy*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaBusy(self, p)
-proc put_ariaChecked*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaChecked(self, v)
-proc get_ariaChecked*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaChecked(self, p)
-proc put_ariaDisabled*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaDisabled(self, v)
-proc get_ariaDisabled*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaDisabled(self, p)
-proc put_ariaExpanded*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaExpanded(self, v)
-proc get_ariaExpanded*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaExpanded(self, p)
-proc put_ariaHaspopup*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaHaspopup(self, v)
-proc get_ariaHaspopup*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaHaspopup(self, p)
-proc put_ariaHidden*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaHidden(self, v)
-proc get_ariaHidden*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaHidden(self, p)
-proc put_ariaInvalid*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaInvalid(self, v)
-proc get_ariaInvalid*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaInvalid(self, p)
-proc put_ariaMultiselectable*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaMultiselectable(self, v)
-proc get_ariaMultiselectable*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaMultiselectable(self, p)
-proc put_ariaPressed*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaPressed(self, v)
-proc get_ariaPressed*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaPressed(self, p)
-proc put_ariaReadonly*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaReadonly(self, v)
-proc get_ariaReadonly*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaReadonly(self, p)
-proc put_ariaRequired*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaRequired(self, v)
-proc get_ariaRequired*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaRequired(self, p)
-proc put_ariaSecret*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaSecret(self, v)
-proc get_ariaSecret*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaSecret(self, p)
-proc put_ariaSelected*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaSelected(self, v)
-proc get_ariaSelected*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaSelected(self, p)
-proc getAttribute*(self: ptr IHTMLElement5, strAttributeName: BSTR, AttributeValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, strAttributeName, AttributeValue)
-proc setAttribute*(self: ptr IHTMLElement5, strAttributeName: BSTR, AttributeValue: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttribute(self, strAttributeName, AttributeValue)
-proc removeAttribute*(self: ptr IHTMLElement5, strAttributeName: BSTR, pfSuccess: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttribute(self, strAttributeName, pfSuccess)
-proc get_attributes*(self: ptr IHTMLElement5, p: ptr ptr IHTMLAttributeCollection3): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_attributes(self, p)
-proc put_ariaValuenow*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaValuenow(self, v)
-proc get_ariaValuenow*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaValuenow(self, p)
-proc put_ariaPosinset*(self: ptr IHTMLElement5, v: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaPosinset(self, v)
-proc get_ariaPosinset*(self: ptr IHTMLElement5, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaPosinset(self, p)
-proc put_ariaSetsize*(self: ptr IHTMLElement5, v: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaSetsize(self, v)
-proc get_ariaSetsize*(self: ptr IHTMLElement5, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaSetsize(self, p)
-proc put_ariaLevel*(self: ptr IHTMLElement5, v: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaLevel(self, v)
-proc get_ariaLevel*(self: ptr IHTMLElement5, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaLevel(self, p)
-proc put_ariaValuemin*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaValuemin(self, v)
-proc get_ariaValuemin*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaValuemin(self, p)
-proc put_ariaValuemax*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaValuemax(self, v)
-proc get_ariaValuemax*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaValuemax(self, p)
-proc put_ariaControls*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaControls(self, v)
-proc get_ariaControls*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaControls(self, p)
-proc put_ariaDescribedby*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaDescribedby(self, v)
-proc get_ariaDescribedby*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaDescribedby(self, p)
-proc put_ariaFlowto*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaFlowto(self, v)
-proc get_ariaFlowto*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaFlowto(self, p)
-proc put_ariaLabelledby*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaLabelledby(self, v)
-proc get_ariaLabelledby*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaLabelledby(self, p)
-proc put_ariaActivedescendant*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaActivedescendant(self, v)
-proc get_ariaActivedescendant*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaActivedescendant(self, p)
-proc put_ariaOwns*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaOwns(self, v)
-proc get_ariaOwns*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaOwns(self, p)
-proc hasAttributes*(self: ptr IHTMLElement5, pfHasAttributes: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasAttributes(self, pfHasAttributes)
-proc put_ariaLive*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaLive(self, v)
-proc get_ariaLive*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaLive(self, p)
-proc put_ariaRelevant*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ariaRelevant(self, v)
-proc get_ariaRelevant*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ariaRelevant(self, p)
-proc getAttributeNS*(self: ptr IHTMLElement6, pvarNS: ptr VARIANT, strAttributeName: BSTR, AttributeValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttributeNS(self, pvarNS, strAttributeName, AttributeValue)
-proc setAttributeNS*(self: ptr IHTMLElement6, pvarNS: ptr VARIANT, strAttributeName: BSTR, pvarAttributeValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttributeNS(self, pvarNS, strAttributeName, pvarAttributeValue)
-proc removeAttributeNS*(self: ptr IHTMLElement6, pvarNS: ptr VARIANT, strAttributeName: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttributeNS(self, pvarNS, strAttributeName)
-proc getAttributeNodeNS*(self: ptr IHTMLElement6, pvarNS: ptr VARIANT, bstrname: BSTR, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttributeNodeNS(self, pvarNS, bstrname, ppretAttribute)
-proc setAttributeNodeNS*(self: ptr IHTMLElement6, pattr: ptr IHTMLDOMAttribute2, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttributeNodeNS(self, pattr, ppretAttribute)
-proc hasAttributeNS*(self: ptr IHTMLElement6, pvarNS: ptr VARIANT, name: BSTR, pfHasAttribute: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasAttributeNS(self, pvarNS, name, pfHasAttribute)
-proc getAttribute*(self: ptr IHTMLElement6, strAttributeName: BSTR, AttributeValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, strAttributeName, AttributeValue)
-proc setAttribute*(self: ptr IHTMLElement6, strAttributeName: BSTR, pvarAttributeValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttribute(self, strAttributeName, pvarAttributeValue)
-proc removeAttribute*(self: ptr IHTMLElement6, strAttributeName: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttribute(self, strAttributeName)
-proc getAttributeNode*(self: ptr IHTMLElement6, strAttributeName: BSTR, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttributeNode(self, strAttributeName, ppretAttribute)
-proc setAttributeNode*(self: ptr IHTMLElement6, pattr: ptr IHTMLDOMAttribute2, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttributeNode(self, pattr, ppretAttribute)
-proc removeAttributeNode*(self: ptr IHTMLElement6, pattr: ptr IHTMLDOMAttribute2, ppretAttribute: ptr ptr IHTMLDOMAttribute2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttributeNode(self, pattr, ppretAttribute)
-proc hasAttribute*(self: ptr IHTMLElement6, name: BSTR, pfHasAttribute: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasAttribute(self, name, pfHasAttribute)
-proc getElementsByTagNameNS*(self: ptr IHTMLElement6, varNS: ptr VARIANT, bstrLocalName: BSTR, pelColl: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getElementsByTagNameNS(self, varNS, bstrLocalName, pelColl)
-proc get_tagName*(self: ptr IHTMLElement6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tagName(self, p)
-proc get_nodeName*(self: ptr IHTMLElement6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeName(self, p)
-proc getElementsByClassName*(self: ptr IHTMLElement6, v: BSTR, pel: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getElementsByClassName(self, v, pel)
-proc msMatchesSelector*(self: ptr IHTMLElement6, v: BSTR, pfMatches: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.msMatchesSelector(self, v, pfMatches)
-proc put_onabort*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onabort(self, v)
-proc get_onabort*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onabort(self, p)
-proc put_oncanplay*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncanplay(self, v)
-proc get_oncanplay*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncanplay(self, p)
-proc put_oncanplaythrough*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncanplaythrough(self, v)
-proc get_oncanplaythrough*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncanplaythrough(self, p)
-proc put_onchange*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onchange(self, v)
-proc get_onchange*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onchange(self, p)
-proc put_ondurationchange*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondurationchange(self, v)
-proc get_ondurationchange*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondurationchange(self, p)
-proc put_onemptied*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onemptied(self, v)
-proc get_onemptied*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onemptied(self, p)
-proc put_onended*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onended(self, v)
-proc get_onended*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onended(self, p)
-proc put_onerror*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerror(self, v)
-proc get_onerror*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerror(self, p)
-proc put_oninput*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oninput(self, v)
-proc get_oninput*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oninput(self, p)
-proc put_onload*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onload(self, v)
-proc get_onload*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onload(self, p)
-proc put_onloadeddata*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onloadeddata(self, v)
-proc get_onloadeddata*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onloadeddata(self, p)
-proc put_onloadedmetadata*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onloadedmetadata(self, v)
-proc get_onloadedmetadata*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onloadedmetadata(self, p)
-proc put_onloadstart*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onloadstart(self, v)
-proc get_onloadstart*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onloadstart(self, p)
-proc put_onpause*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onpause(self, v)
-proc get_onpause*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onpause(self, p)
-proc put_onplay*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onplay(self, v)
-proc get_onplay*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onplay(self, p)
-proc put_onplaying*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onplaying(self, v)
-proc get_onplaying*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onplaying(self, p)
-proc put_onprogress*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onprogress(self, v)
-proc get_onprogress*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onprogress(self, p)
-proc put_onratechange*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onratechange(self, v)
-proc get_onratechange*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onratechange(self, p)
-proc put_onreset*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreset(self, v)
-proc get_onreset*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreset(self, p)
-proc put_onseeked*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onseeked(self, v)
-proc get_onseeked*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onseeked(self, p)
-proc put_onseeking*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onseeking(self, v)
-proc get_onseeking*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onseeking(self, p)
-proc put_onselect*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onselect(self, v)
-proc get_onselect*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onselect(self, p)
-proc put_onstalled*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onstalled(self, v)
-proc get_onstalled*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onstalled(self, p)
-proc put_onsubmit*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onsubmit(self, v)
-proc get_onsubmit*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onsubmit(self, p)
-proc put_onsuspend*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onsuspend(self, v)
-proc get_onsuspend*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onsuspend(self, p)
-proc put_ontimeupdate*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ontimeupdate(self, v)
-proc get_ontimeupdate*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ontimeupdate(self, p)
-proc put_onvolumechange*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onvolumechange(self, v)
-proc get_onvolumechange*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onvolumechange(self, p)
-proc put_onwaiting*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onwaiting(self, v)
-proc get_onwaiting*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onwaiting(self, p)
-proc hasAttributes*(self: ptr IHTMLElement6, pfHasAttributes: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasAttributes(self, pfHasAttributes)
-proc put_onmspointerdown*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerdown(self, v)
-proc get_onmspointerdown*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerdown(self, p)
-proc put_onmspointermove*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointermove(self, v)
-proc get_onmspointermove*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointermove(self, p)
-proc put_onmspointerup*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerup(self, v)
-proc get_onmspointerup*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerup(self, p)
-proc put_onmspointerover*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerover(self, v)
-proc get_onmspointerover*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerover(self, p)
-proc put_onmspointerout*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerout(self, v)
-proc get_onmspointerout*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerout(self, p)
-proc put_onmspointercancel*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointercancel(self, v)
-proc get_onmspointercancel*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointercancel(self, p)
-proc put_onmspointerhover*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerhover(self, v)
-proc get_onmspointerhover*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerhover(self, p)
-proc put_onmslostpointercapture*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmslostpointercapture(self, v)
-proc get_onmslostpointercapture*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmslostpointercapture(self, p)
-proc put_onmsgotpointercapture*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgotpointercapture(self, v)
-proc get_onmsgotpointercapture*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgotpointercapture(self, p)
-proc put_onmsgesturestart*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturestart(self, v)
-proc get_onmsgesturestart*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturestart(self, p)
-proc put_onmsgesturechange*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturechange(self, v)
-proc get_onmsgesturechange*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturechange(self, p)
-proc put_onmsgestureend*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgestureend(self, v)
-proc get_onmsgestureend*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgestureend(self, p)
-proc put_onmsgesturehold*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturehold(self, v)
-proc get_onmsgesturehold*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturehold(self, p)
-proc put_onmsgesturetap*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturetap(self, v)
-proc get_onmsgesturetap*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturetap(self, p)
-proc put_onmsgesturedoubletap*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturedoubletap(self, v)
-proc get_onmsgesturedoubletap*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturedoubletap(self, p)
-proc put_onmsinertiastart*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsinertiastart(self, v)
-proc get_onmsinertiastart*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsinertiastart(self, p)
-proc msSetPointerCapture*(self: ptr IHTMLElement7, pointerId: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.msSetPointerCapture(self, pointerId)
-proc msReleasePointerCapture*(self: ptr IHTMLElement7, pointerId: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.msReleasePointerCapture(self, pointerId)
-proc put_onmstransitionstart*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmstransitionstart(self, v)
-proc get_onmstransitionstart*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmstransitionstart(self, p)
-proc put_onmstransitionend*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmstransitionend(self, v)
-proc get_onmstransitionend*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmstransitionend(self, p)
-proc put_onmsanimationstart*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsanimationstart(self, v)
-proc get_onmsanimationstart*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsanimationstart(self, p)
-proc put_onmsanimationend*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsanimationend(self, v)
-proc get_onmsanimationend*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsanimationend(self, p)
-proc put_onmsanimationiteration*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsanimationiteration(self, v)
-proc get_onmsanimationiteration*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsanimationiteration(self, p)
-proc put_oninvalid*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oninvalid(self, v)
-proc get_oninvalid*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oninvalid(self, p)
-proc put_xmsAcceleratorKey*(self: ptr IHTMLElement7, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_xmsAcceleratorKey(self, v)
-proc get_xmsAcceleratorKey*(self: ptr IHTMLElement7, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_xmsAcceleratorKey(self, p)
-proc put_spellcheck*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_spellcheck(self, v)
-proc get_spellcheck*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_spellcheck(self, p)
-proc put_onmsmanipulationstatechanged*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsmanipulationstatechanged(self, v)
-proc get_onmsmanipulationstatechanged*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsmanipulationstatechanged(self, p)
-proc put_oncuechange*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncuechange(self, v)
-proc get_oncuechange*(self: ptr IHTMLElement7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncuechange(self, p)
-proc msGetRulesApplied*(self: ptr IHTMLElementAppliedStyles, ppRulesAppliedCollection: ptr ptr IRulesAppliedCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.msGetRulesApplied(self, ppRulesAppliedCollection)
-proc msGetRulesAppliedWithAncestor*(self: ptr IHTMLElementAppliedStyles, varContext: VARIANT, ppRulesAppliedCollection: ptr ptr IRulesAppliedCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.msGetRulesAppliedWithAncestor(self, varContext, ppRulesAppliedCollection)
-proc get_firstElementChild*(self: ptr IElementTraversal, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_firstElementChild(self, p)
-proc get_lastElementChild*(self: ptr IElementTraversal, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lastElementChild(self, p)
-proc get_previousElementSibling*(self: ptr IElementTraversal, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_previousElementSibling(self, p)
-proc get_nextElementSibling*(self: ptr IElementTraversal, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nextElementSibling(self, p)
-proc get_childElementCount*(self: ptr IElementTraversal, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_childElementCount(self, p)
-proc put_dataFld*(self: ptr IHTMLDatabinding, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dataFld(self, v)
-proc get_dataFld*(self: ptr IHTMLDatabinding, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dataFld(self, p)
-proc put_dataSrc*(self: ptr IHTMLDatabinding, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dataSrc(self, v)
-proc get_dataSrc*(self: ptr IHTMLDatabinding, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dataSrc(self, p)
-proc put_dataFormatAs*(self: ptr IHTMLDatabinding, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dataFormatAs(self, v)
-proc get_dataFormatAs*(self: ptr IHTMLDatabinding, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dataFormatAs(self, p)
-proc get_style*(self: ptr IHTMLElementDefaults, p: ptr ptr IHTMLStyle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_style(self, p)
-proc put_tabStop*(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_tabStop(self, v)
-proc get_tabStop*(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tabStop(self, p)
-proc put_viewInheritStyle*(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_viewInheritStyle(self, v)
-proc get_viewInheritStyle*(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_viewInheritStyle(self, p)
-proc put_viewMasterTab*(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_viewMasterTab(self, v)
-proc get_viewMasterTab*(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_viewMasterTab(self, p)
-proc put_scrollSegmentX*(self: ptr IHTMLElementDefaults, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollSegmentX(self, v)
-proc get_scrollSegmentX*(self: ptr IHTMLElementDefaults, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollSegmentX(self, p)
-proc put_scrollSegmentY*(self: ptr IHTMLElementDefaults, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollSegmentY(self, v)
-proc get_scrollSegmentY*(self: ptr IHTMLElementDefaults, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollSegmentY(self, p)
-proc put_isMultiLine*(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_isMultiLine(self, v)
-proc get_isMultiLine*(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_isMultiLine(self, p)
-proc put_contentEditable*(self: ptr IHTMLElementDefaults, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_contentEditable(self, v)
-proc get_contentEditable*(self: ptr IHTMLElementDefaults, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_contentEditable(self, p)
-proc put_canHaveHTML*(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_canHaveHTML(self, v)
-proc get_canHaveHTML*(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_canHaveHTML(self, p)
-proc putref_viewLink*(self: ptr IHTMLElementDefaults, v: ptr IHTMLDocument): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_viewLink(self, v)
-proc get_viewLink*(self: ptr IHTMLElementDefaults, p: ptr ptr IHTMLDocument): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_viewLink(self, p)
-proc put_frozen*(self: ptr IHTMLElementDefaults, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_frozen(self, v)
-proc get_frozen*(self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frozen(self, p)
-proc get_element*(self: ptr IHTCDefaultDispatch, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_element(self, p)
-proc createEventObject*(self: ptr IHTCDefaultDispatch, eventObj: ptr ptr IHTMLEventObj): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createEventObject(self, eventObj)
-proc get_defaults*(self: ptr IHTCDefaultDispatch, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaults(self, p)
-proc get_document*(self: ptr IHTCDefaultDispatch, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_document(self, p)
-proc fireChange*(self: ptr IHTCPropertyBehavior): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.fireChange(self)
-proc put_value*(self: ptr IHTCPropertyBehavior, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTCPropertyBehavior, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc fire*(self: ptr IHTCEventBehavior, pvar: ptr IHTMLEventObj): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.fire(self, pvar)
-proc fireEvent*(self: ptr IHTCAttachBehavior, evt: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.fireEvent(self, evt)
-proc detachEvent*(self: ptr IHTCAttachBehavior): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.detachEvent(self)
-proc fireEvent*(self: ptr IHTCAttachBehavior2, evt: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.fireEvent(self, evt)
-proc get_urn*(self: ptr IHTCDescBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_urn(self, p)
-proc get_name*(self: ptr IHTCDescBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc get_length*(self: ptr IHTMLUrnCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc item*(self: ptr IHTMLUrnCollection, index: LONG, ppUrn: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, ppUrn)
-proc get_recordset*(self: ptr IHTMLGenericElement, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_recordset(self, p)
-proc namedRecordset*(self: ptr IHTMLGenericElement, dataMember: BSTR, hierarchy: ptr VARIANT, ppRecordset: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.namedRecordset(self, dataMember, hierarchy, ppRecordset)
-proc put_selectorText*(self: ptr IHTMLStyleSheetRule, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selectorText(self, v)
-proc get_selectorText*(self: ptr IHTMLStyleSheetRule, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selectorText(self, p)
-proc get_style*(self: ptr IHTMLStyleSheetRule, p: ptr ptr IHTMLRuleStyle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_style(self, p)
-proc get_readOnly*(self: ptr IHTMLStyleSheetRule, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readOnly(self, p)
-proc get_msSpecificity*(self: ptr IHTMLStyleSheetRuleApplied, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msSpecificity(self, p)
-proc msGetSpecificity*(self: ptr IHTMLStyleSheetRuleApplied, index: LONG, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.msGetSpecificity(self, index, p)
-proc put_selectorText*(self: ptr IHTMLStyleSheetRule2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selectorText(self, v)
-proc get_selectorText*(self: ptr IHTMLStyleSheetRule2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selectorText(self, p)
-proc get_length*(self: ptr IHTMLStyleSheetRulesCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc item*(self: ptr IHTMLStyleSheetRulesCollection, index: LONG, ppHTMLStyleSheetRule: ptr ptr IHTMLStyleSheetRule): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, ppHTMLStyleSheetRule)
-proc get_length*(self: ptr IHTMLStyleSheetRulesCollection2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc item*(self: ptr IHTMLStyleSheetRulesCollection2, index: LONG, ppHTMLCSSRule: ptr ptr IHTMLCSSRule): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, ppHTMLCSSRule)
-proc get_selector*(self: ptr IHTMLStyleSheetPage, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selector(self, p)
-proc get_pseudoClass*(self: ptr IHTMLStyleSheetPage, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pseudoClass(self, p)
-proc put_selectorText*(self: ptr IHTMLStyleSheetPage2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selectorText(self, v)
-proc get_selectorText*(self: ptr IHTMLStyleSheetPage2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selectorText(self, p)
-proc get_style*(self: ptr IHTMLStyleSheetPage2, p: ptr ptr IHTMLRuleStyle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_style(self, p)
-proc get_length*(self: ptr IHTMLStyleSheetPagesCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc item*(self: ptr IHTMLStyleSheetPagesCollection, index: LONG, ppHTMLStyleSheetPage: ptr ptr IHTMLStyleSheetPage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, ppHTMLStyleSheetPage)
-proc put_title*(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_title(self, v)
-proc get_title*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_title(self, p)
-proc get_parentStyleSheet*(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheet): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentStyleSheet(self, p)
-proc get_owningElement*(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_owningElement(self, p)
-proc put_disabled*(self: ptr IHTMLStyleSheet, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLStyleSheet, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc get_readOnly*(self: ptr IHTMLStyleSheet, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readOnly(self, p)
-proc get_imports*(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheetsCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_imports(self, p)
-proc put_href*(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_href(self, v)
-proc get_href*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc get_type*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc get_id*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_id(self, p)
-proc addImport*(self: ptr IHTMLStyleSheet, bstrURL: BSTR, lIndex: LONG, plIndex: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addImport(self, bstrURL, lIndex, plIndex)
-proc addRule*(self: ptr IHTMLStyleSheet, bstrSelector: BSTR, bstrStyle: BSTR, lIndex: LONG, plNewIndex: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addRule(self, bstrSelector, bstrStyle, lIndex, plNewIndex)
-proc removeImport*(self: ptr IHTMLStyleSheet, lIndex: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeImport(self, lIndex)
-proc removeRule*(self: ptr IHTMLStyleSheet, lIndex: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeRule(self, lIndex)
-proc put_media*(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_media(self, v)
-proc get_media*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_media(self, p)
-proc put_cssText*(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cssText(self, v)
-proc get_cssText*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cssText(self, p)
-proc get_rules*(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheetRulesCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rules(self, p)
-proc get_pages*(self: ptr IHTMLStyleSheet2, p: ptr ptr IHTMLStyleSheetPagesCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pages(self, p)
-proc addPageRule*(self: ptr IHTMLStyleSheet2, bstrSelector: BSTR, bstrStyle: BSTR, lIndex: LONG, plNewIndex: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addPageRule(self, bstrSelector, bstrStyle, lIndex, plNewIndex)
-proc put_href*(self: ptr IHTMLStyleSheet3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_href(self, v)
-proc get_href*(self: ptr IHTMLStyleSheet3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc get_isAlternate*(self: ptr IHTMLStyleSheet3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_isAlternate(self, p)
-proc get_isPrefAlternate*(self: ptr IHTMLStyleSheet3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_isPrefAlternate(self, p)
-proc get_type*(self: ptr IHTMLStyleSheet4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc get_href*(self: ptr IHTMLStyleSheet4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc get_title*(self: ptr IHTMLStyleSheet4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_title(self, p)
-proc get_ownerNode*(self: ptr IHTMLStyleSheet4, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ownerNode(self, p)
-proc get_ownerRule*(self: ptr IHTMLStyleSheet4, p: ptr ptr IHTMLCSSRule): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ownerRule(self, p)
-proc get_cssRules*(self: ptr IHTMLStyleSheet4, p: ptr ptr IHTMLStyleSheetRulesCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cssRules(self, p)
-proc get_media*(self: ptr IHTMLStyleSheet4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_media(self, p)
-proc insertRule*(self: ptr IHTMLStyleSheet4, bstrRule: BSTR, lIndex: LONG, plNewIndex: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertRule(self, bstrRule, lIndex, plNewIndex)
-proc deleteRule*(self: ptr IHTMLStyleSheet4, lIndex: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteRule(self, lIndex)
-proc get_length*(self: ptr IHTMLStyleSheetsCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IHTMLStyleSheetsCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc item*(self: ptr IHTMLStyleSheetsCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, pvarIndex, pvarResult)
-proc item*(self: ptr IHTMLStyleSheetsCollection2, index: LONG, pvarResult: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, pvarResult)
-proc put_href*(self: ptr IHTMLLinkElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_href(self, v)
-proc get_href*(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc put_rel*(self: ptr IHTMLLinkElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rel(self, v)
-proc get_rel*(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rel(self, p)
-proc put_rev*(self: ptr IHTMLLinkElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rev(self, v)
-proc get_rev*(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rev(self, p)
-proc put_type*(self: ptr IHTMLLinkElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc get_readyState*(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
-proc put_onreadystatechange*(self: ptr IHTMLLinkElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreadystatechange(self, v)
-proc get_onreadystatechange*(self: ptr IHTMLLinkElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreadystatechange(self, p)
-proc put_onload*(self: ptr IHTMLLinkElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onload(self, v)
-proc get_onload*(self: ptr IHTMLLinkElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onload(self, p)
-proc put_onerror*(self: ptr IHTMLLinkElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerror(self, v)
-proc get_onerror*(self: ptr IHTMLLinkElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerror(self, p)
-proc get_styleSheet*(self: ptr IHTMLLinkElement, p: ptr ptr IHTMLStyleSheet): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_styleSheet(self, p)
-proc put_disabled*(self: ptr IHTMLLinkElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLLinkElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc put_media*(self: ptr IHTMLLinkElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_media(self, v)
-proc get_media*(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_media(self, p)
-proc put_target*(self: ptr IHTMLLinkElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_target(self, v)
-proc get_target*(self: ptr IHTMLLinkElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_target(self, p)
-proc put_charset*(self: ptr IHTMLLinkElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_charset(self, v)
-proc get_charset*(self: ptr IHTMLLinkElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_charset(self, p)
-proc put_hreflang*(self: ptr IHTMLLinkElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hreflang(self, v)
-proc get_hreflang*(self: ptr IHTMLLinkElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hreflang(self, p)
-proc put_href*(self: ptr IHTMLLinkElement4, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_href(self, v)
-proc get_href*(self: ptr IHTMLLinkElement4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc get_sheet*(self: ptr IHTMLLinkElement5, p: ptr ptr IHTMLStyleSheet): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_sheet(self, p)
-proc get_htmlText*(self: ptr IHTMLTxtRange, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_htmlText(self, p)
-proc put_text*(self: ptr IHTMLTxtRange, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_text(self, v)
-proc get_text*(self: ptr IHTMLTxtRange, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_text(self, p)
-proc parentElement*(self: ptr IHTMLTxtRange, parent: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.parentElement(self, parent)
-proc duplicate*(self: ptr IHTMLTxtRange, Duplicate: ptr ptr IHTMLTxtRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.duplicate(self, Duplicate)
-proc inRange*(self: ptr IHTMLTxtRange, Range: ptr IHTMLTxtRange, InRange: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.inRange(self, Range, InRange)
-proc isEqual*(self: ptr IHTMLTxtRange, Range: ptr IHTMLTxtRange, IsEqual: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.isEqual(self, Range, IsEqual)
-proc scrollIntoView*(self: ptr IHTMLTxtRange, fStart: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.scrollIntoView(self, fStart)
-proc collapse*(self: ptr IHTMLTxtRange, Start: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.collapse(self, Start)
-proc expand*(self: ptr IHTMLTxtRange, Unit: BSTR, Success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.expand(self, Unit, Success)
-proc move*(self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.move(self, Unit, Count, ActualCount)
-proc moveStart*(self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveStart(self, Unit, Count, ActualCount)
-proc moveEnd*(self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveEnd(self, Unit, Count, ActualCount)
-proc select*(self: ptr IHTMLTxtRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.select(self)
-proc pasteHTML*(self: ptr IHTMLTxtRange, html: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.pasteHTML(self, html)
-proc moveToElementText*(self: ptr IHTMLTxtRange, element: ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveToElementText(self, element)
-proc setEndPoint*(self: ptr IHTMLTxtRange, how: BSTR, SourceRange: ptr IHTMLTxtRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setEndPoint(self, how, SourceRange)
-proc compareEndPoints*(self: ptr IHTMLTxtRange, how: BSTR, SourceRange: ptr IHTMLTxtRange, ret: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.compareEndPoints(self, how, SourceRange, ret)
-proc findText*(self: ptr IHTMLTxtRange, String: BSTR, count: LONG, Flags: LONG, Success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.findText(self, String, count, Flags, Success)
-proc moveToPoint*(self: ptr IHTMLTxtRange, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveToPoint(self, x, y)
-proc getBookmark*(self: ptr IHTMLTxtRange, Boolmark: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getBookmark(self, Boolmark)
-proc moveToBookmark*(self: ptr IHTMLTxtRange, Bookmark: BSTR, Success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveToBookmark(self, Bookmark, Success)
-proc queryCommandSupported*(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandSupported(self, cmdID, pfRet)
-proc queryCommandEnabled*(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandEnabled(self, cmdID, pfRet)
-proc queryCommandState*(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandState(self, cmdID, pfRet)
-proc queryCommandIndeterm*(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandIndeterm(self, cmdID, pfRet)
-proc queryCommandText*(self: ptr IHTMLTxtRange, cmdID: BSTR, pcmdText: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandText(self, cmdID, pcmdText)
-proc queryCommandValue*(self: ptr IHTMLTxtRange, cmdID: BSTR, pcmdValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandValue(self, cmdID, pcmdValue)
-proc execCommand*(self: ptr IHTMLTxtRange, cmdID: BSTR, showUI: VARIANT_BOOL, value: VARIANT, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.execCommand(self, cmdID, showUI, value, pfRet)
-proc execCommandShowHelp*(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.execCommandShowHelp(self, cmdID, pfRet)
-proc get_offsetTop*(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetTop(self, p)
-proc get_offsetLeft*(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetLeft(self, p)
-proc get_boundingTop*(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_boundingTop(self, p)
-proc get_boundingLeft*(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_boundingLeft(self, p)
-proc get_boundingWidth*(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_boundingWidth(self, p)
-proc get_boundingHeight*(self: ptr IHTMLTextRangeMetrics, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_boundingHeight(self, p)
-proc getClientRects*(self: ptr IHTMLTextRangeMetrics2, pRectCol: ptr ptr IHTMLRectCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getClientRects(self, pRectCol)
-proc getBoundingClientRect*(self: ptr IHTMLTextRangeMetrics2, pRect: ptr ptr IHTMLRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getBoundingClientRect(self, pRect)
-proc get_length*(self: ptr IHTMLTxtRangeCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IHTMLTxtRangeCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc item*(self: ptr IHTMLTxtRangeCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, pvarIndex, pvarResult)
-proc get_startContainer*(self: ptr IHTMLDOMRange, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_startContainer(self, p)
-proc get_startOffset*(self: ptr IHTMLDOMRange, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_startOffset(self, p)
-proc get_endContainer*(self: ptr IHTMLDOMRange, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_endContainer(self, p)
-proc get_endOffset*(self: ptr IHTMLDOMRange, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_endOffset(self, p)
-proc get_collapsed*(self: ptr IHTMLDOMRange, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_collapsed(self, p)
-proc get_commonAncestorContainer*(self: ptr IHTMLDOMRange, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_commonAncestorContainer(self, p)
-proc setStart*(self: ptr IHTMLDOMRange, refNode: ptr IDispatch, offset: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setStart(self, refNode, offset)
-proc setEnd*(self: ptr IHTMLDOMRange, refNode: ptr IDispatch, offset: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setEnd(self, refNode, offset)
-proc setStartBefore*(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setStartBefore(self, refNode)
-proc setStartAfter*(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setStartAfter(self, refNode)
-proc setEndBefore*(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setEndBefore(self, refNode)
-proc setEndAfter*(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setEndAfter(self, refNode)
-proc collapse*(self: ptr IHTMLDOMRange, toStart: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.collapse(self, toStart)
-proc selectNode*(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.selectNode(self, refNode)
-proc selectNodeContents*(self: ptr IHTMLDOMRange, refNode: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.selectNodeContents(self, refNode)
-proc compareBoundaryPoints*(self: ptr IHTMLDOMRange, how: int16, sourceRange: ptr IDispatch, compareResult: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.compareBoundaryPoints(self, how, sourceRange, compareResult)
-proc deleteContents*(self: ptr IHTMLDOMRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteContents(self)
-proc extractContents*(self: ptr IHTMLDOMRange, ppDocumentFragment: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.extractContents(self, ppDocumentFragment)
-proc cloneContents*(self: ptr IHTMLDOMRange, ppDocumentFragment: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.cloneContents(self, ppDocumentFragment)
-proc insertNode*(self: ptr IHTMLDOMRange, newNode: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertNode(self, newNode)
-proc surroundContents*(self: ptr IHTMLDOMRange, newParent: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.surroundContents(self, newParent)
-proc cloneRange*(self: ptr IHTMLDOMRange, ppClonedRange: ptr ptr IHTMLDOMRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.cloneRange(self, ppClonedRange)
-proc toString*(self: ptr IHTMLDOMRange, pRangeString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, pRangeString)
-proc detach*(self: ptr IHTMLDOMRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.detach(self)
-proc getClientRects*(self: ptr IHTMLDOMRange, ppRectCol: ptr ptr IHTMLRectCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getClientRects(self, ppRectCol)
-proc getBoundingClientRect*(self: ptr IHTMLDOMRange, ppRect: ptr ptr IHTMLRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getBoundingClientRect(self, ppRect)
-proc put_action*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_action(self, v)
-proc get_action*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_action(self, p)
-proc put_dir*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dir(self, v)
-proc get_dir*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dir(self, p)
-proc put_encoding*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_encoding(self, v)
-proc get_encoding*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_encoding(self, p)
-proc put_method*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_method(self, v)
-proc get_method*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_method(self, p)
-proc get_elements*(self: ptr IHTMLFormElement, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_elements(self, p)
-proc put_target*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_target(self, v)
-proc get_target*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_target(self, p)
-proc put_name*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_onsubmit*(self: ptr IHTMLFormElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onsubmit(self, v)
-proc get_onsubmit*(self: ptr IHTMLFormElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onsubmit(self, p)
-proc put_onreset*(self: ptr IHTMLFormElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreset(self, v)
-proc get_onreset*(self: ptr IHTMLFormElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreset(self, p)
-proc submit*(self: ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.submit(self)
-proc reset*(self: ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.reset(self)
-proc put_length*(self: ptr IHTMLFormElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_length(self, v)
-proc get_length*(self: ptr IHTMLFormElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IHTMLFormElement, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc item*(self: ptr IHTMLFormElement, name: VARIANT, index: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, name, index, pdisp)
-proc tags*(self: ptr IHTMLFormElement, tagName: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.tags(self, tagName, pdisp)
-proc put_acceptCharset*(self: ptr IHTMLFormElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_acceptCharset(self, v)
-proc get_acceptCharset*(self: ptr IHTMLFormElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_acceptCharset(self, p)
-proc urns*(self: ptr IHTMLFormElement2, urn: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.urns(self, urn, pdisp)
-proc namedItem*(self: ptr IHTMLFormElement3, name: BSTR, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.namedItem(self, name, pdisp)
-proc appendNameValuePair*(self: ptr IHTMLSubmitData, name: BSTR, value: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendNameValuePair(self, name, value)
-proc appendNameFilePair*(self: ptr IHTMLSubmitData, name: BSTR, filename: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendNameFilePair(self, name, filename)
-proc appendItemSeparator*(self: ptr IHTMLSubmitData): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendItemSeparator(self)
-proc put_action*(self: ptr IHTMLFormElement4, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_action(self, v)
-proc get_action*(self: ptr IHTMLFormElement4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_action(self, p)
-proc put_tabIndex*(self: ptr IHTMLControlElement, v: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_tabIndex(self, v)
-proc get_tabIndex*(self: ptr IHTMLControlElement, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tabIndex(self, p)
-proc focus*(self: ptr IHTMLControlElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.focus(self)
-proc put_accessKey*(self: ptr IHTMLControlElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_accessKey(self, v)
-proc get_accessKey*(self: ptr IHTMLControlElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accessKey(self, p)
-proc put_onblur*(self: ptr IHTMLControlElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onblur(self, v)
-proc get_onblur*(self: ptr IHTMLControlElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onblur(self, p)
-proc put_onfocus*(self: ptr IHTMLControlElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfocus(self, v)
-proc get_onfocus*(self: ptr IHTMLControlElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfocus(self, p)
-proc put_onresize*(self: ptr IHTMLControlElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onresize(self, v)
-proc get_onresize*(self: ptr IHTMLControlElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onresize(self, p)
-proc blur*(self: ptr IHTMLControlElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.blur(self)
-proc addFilter*(self: ptr IHTMLControlElement, pUnk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addFilter(self, pUnk)
-proc removeFilter*(self: ptr IHTMLControlElement, pUnk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeFilter(self, pUnk)
-proc get_clientHeight*(self: ptr IHTMLControlElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientHeight(self, p)
-proc get_clientWidth*(self: ptr IHTMLControlElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientWidth(self, p)
-proc get_clientTop*(self: ptr IHTMLControlElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientTop(self, p)
-proc get_clientLeft*(self: ptr IHTMLControlElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientLeft(self, p)
-proc createControlRange*(self: ptr IHTMLTextContainer, range: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createControlRange(self, range)
-proc get_scrollHeight*(self: ptr IHTMLTextContainer, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollHeight(self, p)
-proc get_scrollWidth*(self: ptr IHTMLTextContainer, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollWidth(self, p)
-proc put_scrollTop*(self: ptr IHTMLTextContainer, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollTop(self, v)
-proc get_scrollTop*(self: ptr IHTMLTextContainer, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollTop(self, p)
-proc put_scrollLeft*(self: ptr IHTMLTextContainer, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollLeft(self, v)
-proc get_scrollLeft*(self: ptr IHTMLTextContainer, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollLeft(self, p)
-proc put_onscroll*(self: ptr IHTMLTextContainer, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onscroll(self, v)
-proc get_onscroll*(self: ptr IHTMLTextContainer, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onscroll(self, p)
-proc select*(self: ptr IHTMLControlRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.select(self)
-proc add*(self: ptr IHTMLControlRange, item: ptr IHTMLControlElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.add(self, item)
-proc remove*(self: ptr IHTMLControlRange, index: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.remove(self, index)
-proc item*(self: ptr IHTMLControlRange, index: LONG, pdisp: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, pdisp)
-proc scrollIntoView*(self: ptr IHTMLControlRange, varargStart: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.scrollIntoView(self, varargStart)
-proc queryCommandSupported*(self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandSupported(self, cmdID, pfRet)
-proc queryCommandEnabled*(self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandEnabled(self, cmdID, pfRet)
-proc queryCommandState*(self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandState(self, cmdID, pfRet)
-proc queryCommandIndeterm*(self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandIndeterm(self, cmdID, pfRet)
-proc queryCommandText*(self: ptr IHTMLControlRange, cmdID: BSTR, pcmdText: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandText(self, cmdID, pcmdText)
-proc queryCommandValue*(self: ptr IHTMLControlRange, cmdID: BSTR, pcmdValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandValue(self, cmdID, pcmdValue)
-proc execCommand*(self: ptr IHTMLControlRange, cmdID: BSTR, showUI: VARIANT_BOOL, value: VARIANT, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.execCommand(self, cmdID, showUI, value, pfRet)
-proc execCommandShowHelp*(self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.execCommandShowHelp(self, cmdID, pfRet)
-proc commonParentElement*(self: ptr IHTMLControlRange, parent: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.commonParentElement(self, parent)
-proc get_length*(self: ptr IHTMLControlRange, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc addElement*(self: ptr IHTMLControlRange2, item: ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addElement(self, item)
-proc put_isMap*(self: ptr IHTMLImgElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_isMap(self, v)
-proc get_isMap*(self: ptr IHTMLImgElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_isMap(self, p)
-proc put_useMap*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_useMap(self, v)
-proc get_useMap*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_useMap(self, p)
-proc get_mimeType*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_mimeType(self, p)
-proc get_fileSize*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileSize(self, p)
-proc get_fileCreatedDate*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileCreatedDate(self, p)
-proc get_fileModifiedDate*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileModifiedDate(self, p)
-proc get_fileUpdatedDate*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileUpdatedDate(self, p)
-proc get_protocol*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_protocol(self, p)
-proc get_href*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc get_nameProp*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nameProp(self, p)
-proc put_border*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_border(self, v)
-proc get_border*(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_border(self, p)
-proc put_vspace*(self: ptr IHTMLImgElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vspace(self, v)
-proc get_vspace*(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vspace(self, p)
-proc put_hspace*(self: ptr IHTMLImgElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hspace(self, v)
-proc get_hspace*(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hspace(self, p)
-proc put_alt*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_alt(self, v)
-proc get_alt*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_alt(self, p)
-proc put_src*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
-proc get_src*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
-proc put_lowsrc*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lowsrc(self, v)
-proc get_lowsrc*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lowsrc(self, p)
-proc put_vrml*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vrml(self, v)
-proc get_vrml*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vrml(self, p)
-proc put_dynsrc*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dynsrc(self, v)
-proc get_dynsrc*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dynsrc(self, p)
-proc get_readyState*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
-proc get_complete*(self: ptr IHTMLImgElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_complete(self, p)
-proc put_loop*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_loop(self, v)
-proc get_loop*(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_loop(self, p)
-proc put_align*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_onload*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onload(self, v)
-proc get_onload*(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onload(self, p)
-proc put_onerror*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerror(self, v)
-proc get_onerror*(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerror(self, p)
-proc put_onabort*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onabort(self, v)
-proc get_onabort*(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onabort(self, p)
-proc put_name*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_width*(self: ptr IHTMLImgElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_height*(self: ptr IHTMLImgElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_start*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_start(self, v)
-proc get_start*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_start(self, p)
-proc put_longDesc*(self: ptr IHTMLImgElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_longDesc(self, v)
-proc get_longDesc*(self: ptr IHTMLImgElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_longDesc(self, p)
-proc put_longDesc*(self: ptr IHTMLImgElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_longDesc(self, v)
-proc get_longDesc*(self: ptr IHTMLImgElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_longDesc(self, p)
-proc put_vrml*(self: ptr IHTMLImgElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vrml(self, v)
-proc get_vrml*(self: ptr IHTMLImgElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vrml(self, p)
-proc put_lowsrc*(self: ptr IHTMLImgElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lowsrc(self, v)
-proc get_lowsrc*(self: ptr IHTMLImgElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lowsrc(self, p)
-proc put_dynsrc*(self: ptr IHTMLImgElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dynsrc(self, v)
-proc get_dynsrc*(self: ptr IHTMLImgElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dynsrc(self, p)
-proc get_naturalWidth*(self: ptr IHTMLImgElement4, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_naturalWidth(self, p)
-proc get_naturalHeight*(self: ptr IHTMLImgElement4, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_naturalHeight(self, p)
-proc put_msPlayToDisabled*(self: ptr IHTMLMSImgElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msPlayToDisabled(self, v)
-proc get_msPlayToDisabled*(self: ptr IHTMLMSImgElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msPlayToDisabled(self, p)
-proc put_msPlayToPrimary*(self: ptr IHTMLMSImgElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msPlayToPrimary(self, v)
-proc get_msPlayToPrimary*(self: ptr IHTMLMSImgElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msPlayToPrimary(self, p)
-proc create*(self: ptr IHTMLImageElementFactory, width: VARIANT, height: VARIANT, a: ptr ptr IHTMLImgElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.create(self, width, height, a)
-proc put_background*(self: ptr IHTMLBodyElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_background(self, v)
-proc get_background*(self: ptr IHTMLBodyElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_background(self, p)
-proc put_bgProperties*(self: ptr IHTMLBodyElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bgProperties(self, v)
-proc get_bgProperties*(self: ptr IHTMLBodyElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bgProperties(self, p)
-proc put_leftMargin*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_leftMargin(self, v)
-proc get_leftMargin*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_leftMargin(self, p)
-proc put_topMargin*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_topMargin(self, v)
-proc get_topMargin*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_topMargin(self, p)
-proc put_rightMargin*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rightMargin(self, v)
-proc get_rightMargin*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rightMargin(self, p)
-proc put_bottomMargin*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bottomMargin(self, v)
-proc get_bottomMargin*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bottomMargin(self, p)
-proc put_noWrap*(self: ptr IHTMLBodyElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_noWrap(self, v)
-proc get_noWrap*(self: ptr IHTMLBodyElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_noWrap(self, p)
-proc put_bgColor*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bgColor(self, v)
-proc get_bgColor*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bgColor(self, p)
-proc put_text*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_text(self, v)
-proc get_text*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_text(self, p)
-proc put_link*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_link(self, v)
-proc get_link*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_link(self, p)
-proc put_vLink*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vLink(self, v)
-proc get_vLink*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vLink(self, p)
-proc put_aLink*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_aLink(self, v)
-proc get_aLink*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_aLink(self, p)
-proc put_onload*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onload(self, v)
-proc get_onload*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onload(self, p)
-proc put_onunload*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onunload(self, v)
-proc get_onunload*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onunload(self, p)
-proc put_scroll*(self: ptr IHTMLBodyElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scroll(self, v)
-proc get_scroll*(self: ptr IHTMLBodyElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scroll(self, p)
-proc put_onselect*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onselect(self, v)
-proc get_onselect*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onselect(self, p)
-proc put_onbeforeunload*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeunload(self, v)
-proc get_onbeforeunload*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeunload(self, p)
-proc createTextRange*(self: ptr IHTMLBodyElement, range: ptr ptr IHTMLTxtRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createTextRange(self, range)
-proc put_onbeforeprint*(self: ptr IHTMLBodyElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeprint(self, v)
-proc get_onbeforeprint*(self: ptr IHTMLBodyElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeprint(self, p)
-proc put_onafterprint*(self: ptr IHTMLBodyElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onafterprint(self, v)
-proc get_onafterprint*(self: ptr IHTMLBodyElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onafterprint(self, p)
-proc put_background*(self: ptr IHTMLBodyElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_background(self, v)
-proc get_background*(self: ptr IHTMLBodyElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_background(self, p)
-proc put_ononline*(self: ptr IHTMLBodyElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ononline(self, v)
-proc get_ononline*(self: ptr IHTMLBodyElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ononline(self, p)
-proc put_onoffline*(self: ptr IHTMLBodyElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onoffline(self, v)
-proc get_onoffline*(self: ptr IHTMLBodyElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onoffline(self, p)
-proc put_onhashchange*(self: ptr IHTMLBodyElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onhashchange(self, v)
-proc get_onhashchange*(self: ptr IHTMLBodyElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onhashchange(self, p)
-proc put_onmessage*(self: ptr IHTMLBodyElement4, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmessage(self, v)
-proc get_onmessage*(self: ptr IHTMLBodyElement4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmessage(self, p)
-proc put_onstorage*(self: ptr IHTMLBodyElement4, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onstorage(self, v)
-proc get_onstorage*(self: ptr IHTMLBodyElement4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onstorage(self, p)
-proc put_onpopstate*(self: ptr IHTMLBodyElement5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onpopstate(self, v)
-proc get_onpopstate*(self: ptr IHTMLBodyElement5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onpopstate(self, p)
-proc put_color*(self: ptr IHTMLFontElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_color(self, v)
-proc get_color*(self: ptr IHTMLFontElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_color(self, p)
-proc put_face*(self: ptr IHTMLFontElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_face(self, v)
-proc get_face*(self: ptr IHTMLFontElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_face(self, p)
-proc put_size*(self: ptr IHTMLFontElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_size(self, v)
-proc get_size*(self: ptr IHTMLFontElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_size(self, p)
-proc put_href*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_href(self, v)
-proc get_href*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc put_target*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_target(self, v)
-proc get_target*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_target(self, p)
-proc put_rel*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rel(self, v)
-proc get_rel*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rel(self, p)
-proc put_rev*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rev(self, v)
-proc get_rev*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rev(self, p)
-proc put_urn*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_urn(self, v)
-proc get_urn*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_urn(self, p)
-proc put_Methods*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Methods(self, v)
-proc get_Methods*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Methods(self, p)
-proc put_name*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_host*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_host(self, v)
-proc get_host*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_host(self, p)
-proc put_hostname*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hostname(self, v)
-proc get_hostname*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hostname(self, p)
-proc put_pathname*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pathname(self, v)
-proc get_pathname*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pathname(self, p)
-proc put_port*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_port(self, v)
-proc get_port*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_port(self, p)
-proc put_protocol*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_protocol(self, v)
-proc get_protocol*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_protocol(self, p)
-proc put_search*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_search(self, v)
-proc get_search*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_search(self, p)
-proc put_hash*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hash(self, v)
-proc get_hash*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hash(self, p)
-proc put_onblur*(self: ptr IHTMLAnchorElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onblur(self, v)
-proc get_onblur*(self: ptr IHTMLAnchorElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onblur(self, p)
-proc put_onfocus*(self: ptr IHTMLAnchorElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfocus(self, v)
-proc get_onfocus*(self: ptr IHTMLAnchorElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfocus(self, p)
-proc put_accessKey*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_accessKey(self, v)
-proc get_accessKey*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accessKey(self, p)
-proc get_protocolLong*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_protocolLong(self, p)
-proc get_mimeType*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_mimeType(self, p)
-proc get_nameProp*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nameProp(self, p)
-proc put_tabIndex*(self: ptr IHTMLAnchorElement, v: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_tabIndex(self, v)
-proc get_tabIndex*(self: ptr IHTMLAnchorElement, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tabIndex(self, p)
-proc focus*(self: ptr IHTMLAnchorElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.focus(self)
-proc blur*(self: ptr IHTMLAnchorElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.blur(self)
-proc put_charset*(self: ptr IHTMLAnchorElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_charset(self, v)
-proc get_charset*(self: ptr IHTMLAnchorElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_charset(self, p)
-proc put_coords*(self: ptr IHTMLAnchorElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_coords(self, v)
-proc get_coords*(self: ptr IHTMLAnchorElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_coords(self, p)
-proc put_hreflang*(self: ptr IHTMLAnchorElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hreflang(self, v)
-proc get_hreflang*(self: ptr IHTMLAnchorElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hreflang(self, p)
-proc put_shape*(self: ptr IHTMLAnchorElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_shape(self, v)
-proc get_shape*(self: ptr IHTMLAnchorElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_shape(self, p)
-proc put_type*(self: ptr IHTMLAnchorElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr IHTMLAnchorElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_shape*(self: ptr IHTMLAnchorElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_shape(self, v)
-proc get_shape*(self: ptr IHTMLAnchorElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_shape(self, p)
-proc put_coords*(self: ptr IHTMLAnchorElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_coords(self, v)
-proc get_coords*(self: ptr IHTMLAnchorElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_coords(self, p)
-proc put_href*(self: ptr IHTMLAnchorElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_href(self, v)
-proc get_href*(self: ptr IHTMLAnchorElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc put_htmlFor*(self: ptr IHTMLLabelElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_htmlFor(self, v)
-proc get_htmlFor*(self: ptr IHTMLLabelElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_htmlFor(self, p)
-proc put_accessKey*(self: ptr IHTMLLabelElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_accessKey(self, v)
-proc get_accessKey*(self: ptr IHTMLLabelElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accessKey(self, p)
-proc get_form*(self: ptr IHTMLLabelElement2, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc put_compact*(self: ptr IHTMLListElement2, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_compact(self, v)
-proc get_compact*(self: ptr IHTMLListElement2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_compact(self, p)
-proc put_compact*(self: ptr IHTMLUListElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_compact(self, v)
-proc get_compact*(self: ptr IHTMLUListElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_compact(self, p)
-proc put_type*(self: ptr IHTMLUListElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr IHTMLUListElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_compact*(self: ptr IHTMLOListElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_compact(self, v)
-proc get_compact*(self: ptr IHTMLOListElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_compact(self, p)
-proc put_start*(self: ptr IHTMLOListElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_start(self, v)
-proc get_start*(self: ptr IHTMLOListElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_start(self, p)
-proc put_type*(self: ptr IHTMLOListElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr IHTMLOListElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_type*(self: ptr IHTMLLIElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr IHTMLLIElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_value*(self: ptr IHTMLLIElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLLIElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_clear*(self: ptr IHTMLBlockElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clear(self, v)
-proc get_clear*(self: ptr IHTMLBlockElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clear(self, p)
-proc put_cite*(self: ptr IHTMLBlockElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cite(self, v)
-proc get_cite*(self: ptr IHTMLBlockElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cite(self, p)
-proc put_width*(self: ptr IHTMLBlockElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLBlockElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_cite*(self: ptr IHTMLBlockElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cite(self, v)
-proc get_cite*(self: ptr IHTMLBlockElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cite(self, p)
-proc put_align*(self: ptr IHTMLDivElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLDivElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_noWrap*(self: ptr IHTMLDivElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_noWrap(self, v)
-proc get_noWrap*(self: ptr IHTMLDivElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_noWrap(self, p)
-proc put_noWrap*(self: ptr IHTMLDDElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_noWrap(self, v)
-proc get_noWrap*(self: ptr IHTMLDDElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_noWrap(self, p)
-proc put_noWrap*(self: ptr IHTMLDTElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_noWrap(self, v)
-proc get_noWrap*(self: ptr IHTMLDTElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_noWrap(self, p)
-proc put_clear*(self: ptr IHTMLBRElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clear(self, v)
-proc get_clear*(self: ptr IHTMLBRElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clear(self, p)
-proc put_compact*(self: ptr IHTMLDListElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_compact(self, v)
-proc get_compact*(self: ptr IHTMLDListElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_compact(self, p)
-proc put_align*(self: ptr IHTMLHRElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLHRElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_color*(self: ptr IHTMLHRElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_color(self, v)
-proc get_color*(self: ptr IHTMLHRElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_color(self, p)
-proc put_noShade*(self: ptr IHTMLHRElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_noShade(self, v)
-proc get_noShade*(self: ptr IHTMLHRElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_noShade(self, p)
-proc put_width*(self: ptr IHTMLHRElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLHRElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_size*(self: ptr IHTMLHRElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_size(self, v)
-proc get_size*(self: ptr IHTMLHRElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_size(self, p)
-proc put_align*(self: ptr IHTMLParaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLParaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc toString*(self: ptr IHTMLElementCollection, String: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, String)
-proc put_length*(self: ptr IHTMLElementCollection, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_length(self, v)
-proc get_length*(self: ptr IHTMLElementCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IHTMLElementCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc item*(self: ptr IHTMLElementCollection, name: VARIANT, index: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, name, index, pdisp)
-proc tags*(self: ptr IHTMLElementCollection, tagName: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.tags(self, tagName, pdisp)
-proc urns*(self: ptr IHTMLElementCollection2, urn: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.urns(self, urn, pdisp)
-proc namedItem*(self: ptr IHTMLElementCollection3, name: BSTR, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.namedItem(self, name, pdisp)
-proc get_length*(self: ptr IHTMLElementCollection4, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc item*(self: ptr IHTMLElementCollection4, index: LONG, pNode: ptr ptr IHTMLElement2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, pNode)
-proc namedItem*(self: ptr IHTMLElementCollection4, name: BSTR, pNode: ptr ptr IHTMLElement2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.namedItem(self, name, pNode)
-proc put_align*(self: ptr IHTMLHeaderElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLHeaderElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc ShowDropdown*(self: ptr IHTMLSelectElementEx, fShow: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowDropdown(self, fShow)
-proc SetSelectExFlags*(self: ptr IHTMLSelectElementEx, lFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSelectExFlags(self, lFlags)
-proc GetSelectExFlags*(self: ptr IHTMLSelectElementEx, pFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelectExFlags(self, pFlags)
-proc GetDropdownOpen*(self: ptr IHTMLSelectElementEx, pfOpen: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDropdownOpen(self, pfOpen)
-proc put_size*(self: ptr IHTMLSelectElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_size(self, v)
-proc get_size*(self: ptr IHTMLSelectElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_size(self, p)
-proc put_multiple*(self: ptr IHTMLSelectElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_multiple(self, v)
-proc get_multiple*(self: ptr IHTMLSelectElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_multiple(self, p)
-proc put_name*(self: ptr IHTMLSelectElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLSelectElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc get_options*(self: ptr IHTMLSelectElement, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_options(self, p)
-proc put_onchange*(self: ptr IHTMLSelectElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onchange(self, v)
-proc get_onchange*(self: ptr IHTMLSelectElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onchange(self, p)
-proc put_selectedIndex*(self: ptr IHTMLSelectElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selectedIndex(self, v)
-proc get_selectedIndex*(self: ptr IHTMLSelectElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selectedIndex(self, p)
-proc get_type*(self: ptr IHTMLSelectElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_value*(self: ptr IHTMLSelectElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLSelectElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_disabled*(self: ptr IHTMLSelectElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLSelectElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc get_form*(self: ptr IHTMLSelectElement, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc add*(self: ptr IHTMLSelectElement, element: ptr IHTMLElement, before: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.add(self, element, before)
-proc remove*(self: ptr IHTMLSelectElement, index: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.remove(self, index)
-proc put_length*(self: ptr IHTMLSelectElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_length(self, v)
-proc get_length*(self: ptr IHTMLSelectElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IHTMLSelectElement, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc item*(self: ptr IHTMLSelectElement, name: VARIANT, index: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, name, index, pdisp)
-proc tags*(self: ptr IHTMLSelectElement, tagName: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.tags(self, tagName, pdisp)
-proc urns*(self: ptr IHTMLSelectElement2, urn: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.urns(self, urn, pdisp)
-proc namedItem*(self: ptr IHTMLSelectElement4, name: BSTR, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.namedItem(self, name, pdisp)
-proc add*(self: ptr IHTMLSelectElement5, pElem: ptr IHTMLOptionElement, pvarBefore: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.add(self, pElem, pvarBefore)
-proc add*(self: ptr IHTMLSelectElement6, pElem: ptr IHTMLOptionElement, pvarBefore: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.add(self, pElem, pvarBefore)
-proc put_value*(self: ptr IHTMLSelectElement6, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLSelectElement6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc createRange*(self: ptr IHTMLSelectionObject, range: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createRange(self, range)
-proc empty*(self: ptr IHTMLSelectionObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.empty(self)
-proc clear*(self: ptr IHTMLSelectionObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clear(self)
-proc get_type*(self: ptr IHTMLSelectionObject, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc createRangeCollection*(self: ptr IHTMLSelectionObject2, rangeCollection: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createRangeCollection(self, rangeCollection)
-proc get_typeDetail*(self: ptr IHTMLSelectionObject2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_typeDetail(self, p)
-proc get_anchorNode*(self: ptr IHTMLSelection, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_anchorNode(self, p)
-proc get_anchorOffset*(self: ptr IHTMLSelection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_anchorOffset(self, p)
-proc get_focusNode*(self: ptr IHTMLSelection, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_focusNode(self, p)
-proc get_focusOffset*(self: ptr IHTMLSelection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_focusOffset(self, p)
-proc get_isCollapsed*(self: ptr IHTMLSelection, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_isCollapsed(self, p)
-proc collapse*(self: ptr IHTMLSelection, parentNode: ptr IDispatch, offfset: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.collapse(self, parentNode, offfset)
-proc collapseToStart*(self: ptr IHTMLSelection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.collapseToStart(self)
-proc collapseToEnd*(self: ptr IHTMLSelection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.collapseToEnd(self)
-proc selectAllChildren*(self: ptr IHTMLSelection, parentNode: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.selectAllChildren(self, parentNode)
-proc deleteFromDocument*(self: ptr IHTMLSelection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteFromDocument(self)
-proc get_rangeCount*(self: ptr IHTMLSelection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rangeCount(self, p)
-proc getRangeAt*(self: ptr IHTMLSelection, index: LONG, ppRange: ptr ptr IHTMLDOMRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getRangeAt(self, index, ppRange)
-proc addRange*(self: ptr IHTMLSelection, range: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addRange(self, range)
-proc removeRange*(self: ptr IHTMLSelection, range: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeRange(self, range)
-proc removeAllRanges*(self: ptr IHTMLSelection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAllRanges(self)
-proc toString*(self: ptr IHTMLSelection, pSelectionString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, pSelectionString)
-proc put_selected*(self: ptr IHTMLOptionElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selected(self, v)
-proc get_selected*(self: ptr IHTMLOptionElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selected(self, p)
-proc put_value*(self: ptr IHTMLOptionElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLOptionElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_defaultSelected*(self: ptr IHTMLOptionElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defaultSelected(self, v)
-proc get_defaultSelected*(self: ptr IHTMLOptionElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultSelected(self, p)
-proc put_index*(self: ptr IHTMLOptionElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_index(self, v)
-proc get_index*(self: ptr IHTMLOptionElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_index(self, p)
-proc put_text*(self: ptr IHTMLOptionElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_text(self, v)
-proc get_text*(self: ptr IHTMLOptionElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_text(self, p)
-proc get_form*(self: ptr IHTMLOptionElement, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc put_label*(self: ptr IHTMLOptionElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_label(self, v)
-proc get_label*(self: ptr IHTMLOptionElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_label(self, p)
-proc put_value*(self: ptr IHTMLOptionElement4, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLOptionElement4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc create*(self: ptr IHTMLOptionElementFactory, text: VARIANT, value: VARIANT, defaultselected: VARIANT, selected: VARIANT, a: ptr ptr IHTMLOptionElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.create(self, text, value, defaultselected, selected, a)
-proc put_type*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_value*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_name*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_status*(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_status(self, v)
-proc get_status*(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_status(self, p)
-proc put_disabled*(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc get_form*(self: ptr IHTMLInputElement, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc put_size*(self: ptr IHTMLInputElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_size(self, v)
-proc get_size*(self: ptr IHTMLInputElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_size(self, p)
-proc put_maxLength*(self: ptr IHTMLInputElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_maxLength(self, v)
-proc get_maxLength*(self: ptr IHTMLInputElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maxLength(self, p)
-proc select*(self: ptr IHTMLInputElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.select(self)
-proc put_onchange*(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onchange(self, v)
-proc get_onchange*(self: ptr IHTMLInputElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onchange(self, p)
-proc put_onselect*(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onselect(self, v)
-proc get_onselect*(self: ptr IHTMLInputElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onselect(self, p)
-proc put_defaultValue*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defaultValue(self, v)
-proc get_defaultValue*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultValue(self, p)
-proc put_readOnly*(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_readOnly(self, v)
-proc get_readOnly*(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readOnly(self, p)
-proc createTextRange*(self: ptr IHTMLInputElement, range: ptr ptr IHTMLTxtRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createTextRange(self, range)
-proc put_indeterminate*(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_indeterminate(self, v)
-proc get_indeterminate*(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_indeterminate(self, p)
-proc put_defaultChecked*(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defaultChecked(self, v)
-proc get_defaultChecked*(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultChecked(self, p)
-proc put_checked*(self: ptr IHTMLInputElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_checked(self, v)
-proc get_checked*(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_checked(self, p)
-proc put_border*(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_border(self, v)
-proc get_border*(self: ptr IHTMLInputElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_border(self, p)
-proc put_vspace*(self: ptr IHTMLInputElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vspace(self, v)
-proc get_vspace*(self: ptr IHTMLInputElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vspace(self, p)
-proc put_hspace*(self: ptr IHTMLInputElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hspace(self, v)
-proc get_hspace*(self: ptr IHTMLInputElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hspace(self, p)
-proc put_alt*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_alt(self, v)
-proc get_alt*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_alt(self, p)
-proc put_src*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
-proc get_src*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
-proc put_lowsrc*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lowsrc(self, v)
-proc get_lowsrc*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lowsrc(self, p)
-proc put_vrml*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vrml(self, v)
-proc get_vrml*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vrml(self, p)
-proc put_dynsrc*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dynsrc(self, v)
-proc get_dynsrc*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dynsrc(self, p)
-proc get_readyState*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
-proc get_complete*(self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_complete(self, p)
-proc put_loop*(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_loop(self, v)
-proc get_loop*(self: ptr IHTMLInputElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_loop(self, p)
-proc put_align*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_onload*(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onload(self, v)
-proc get_onload*(self: ptr IHTMLInputElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onload(self, p)
-proc put_onerror*(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerror(self, v)
-proc get_onerror*(self: ptr IHTMLInputElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerror(self, p)
-proc put_onabort*(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onabort(self, v)
-proc get_onabort*(self: ptr IHTMLInputElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onabort(self, p)
-proc put_width*(self: ptr IHTMLInputElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLInputElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_height*(self: ptr IHTMLInputElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLInputElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_start*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_start(self, v)
-proc get_start*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_start(self, p)
-proc put_accept*(self: ptr IHTMLInputElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_accept(self, v)
-proc get_accept*(self: ptr IHTMLInputElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accept(self, p)
-proc put_useMap*(self: ptr IHTMLInputElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_useMap(self, v)
-proc get_useMap*(self: ptr IHTMLInputElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_useMap(self, p)
-proc put_src*(self: ptr IHTMLInputElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
-proc get_src*(self: ptr IHTMLInputElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
-proc put_lowsrc*(self: ptr IHTMLInputElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lowsrc(self, v)
-proc get_lowsrc*(self: ptr IHTMLInputElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lowsrc(self, p)
-proc put_vrml*(self: ptr IHTMLInputElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vrml(self, v)
-proc get_vrml*(self: ptr IHTMLInputElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vrml(self, p)
-proc put_dynsrc*(self: ptr IHTMLInputElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dynsrc(self, v)
-proc get_dynsrc*(self: ptr IHTMLInputElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dynsrc(self, p)
-proc get_type*(self: ptr IHTMLInputButtonElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_value*(self: ptr IHTMLInputButtonElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLInputButtonElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_name*(self: ptr IHTMLInputButtonElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLInputButtonElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_status*(self: ptr IHTMLInputButtonElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_status(self, v)
-proc get_status*(self: ptr IHTMLInputButtonElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_status(self, p)
-proc put_disabled*(self: ptr IHTMLInputButtonElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLInputButtonElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc get_form*(self: ptr IHTMLInputButtonElement, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc createTextRange*(self: ptr IHTMLInputButtonElement, range: ptr ptr IHTMLTxtRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createTextRange(self, range)
-proc get_type*(self: ptr IHTMLInputHiddenElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_value*(self: ptr IHTMLInputHiddenElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLInputHiddenElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_name*(self: ptr IHTMLInputHiddenElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLInputHiddenElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_status*(self: ptr IHTMLInputHiddenElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_status(self, v)
-proc get_status*(self: ptr IHTMLInputHiddenElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_status(self, p)
-proc put_disabled*(self: ptr IHTMLInputHiddenElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLInputHiddenElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc get_form*(self: ptr IHTMLInputHiddenElement, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc createTextRange*(self: ptr IHTMLInputHiddenElement, range: ptr ptr IHTMLTxtRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createTextRange(self, range)
-proc get_type*(self: ptr IHTMLInputTextElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_value*(self: ptr IHTMLInputTextElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLInputTextElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_name*(self: ptr IHTMLInputTextElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLInputTextElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_status*(self: ptr IHTMLInputTextElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_status(self, v)
-proc get_status*(self: ptr IHTMLInputTextElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_status(self, p)
-proc put_disabled*(self: ptr IHTMLInputTextElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLInputTextElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc get_form*(self: ptr IHTMLInputTextElement, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc put_defaultValue*(self: ptr IHTMLInputTextElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defaultValue(self, v)
-proc get_defaultValue*(self: ptr IHTMLInputTextElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultValue(self, p)
-proc put_size*(self: ptr IHTMLInputTextElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_size(self, v)
-proc get_size*(self: ptr IHTMLInputTextElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_size(self, p)
-proc put_maxLength*(self: ptr IHTMLInputTextElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_maxLength(self, v)
-proc get_maxLength*(self: ptr IHTMLInputTextElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maxLength(self, p)
-proc select*(self: ptr IHTMLInputTextElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.select(self)
-proc put_onchange*(self: ptr IHTMLInputTextElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onchange(self, v)
-proc get_onchange*(self: ptr IHTMLInputTextElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onchange(self, p)
-proc put_onselect*(self: ptr IHTMLInputTextElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onselect(self, v)
-proc get_onselect*(self: ptr IHTMLInputTextElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onselect(self, p)
-proc put_readOnly*(self: ptr IHTMLInputTextElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_readOnly(self, v)
-proc get_readOnly*(self: ptr IHTMLInputTextElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readOnly(self, p)
-proc createTextRange*(self: ptr IHTMLInputTextElement, range: ptr ptr IHTMLTxtRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createTextRange(self, range)
-proc put_selectionStart*(self: ptr IHTMLInputTextElement2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selectionStart(self, v)
-proc get_selectionStart*(self: ptr IHTMLInputTextElement2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selectionStart(self, p)
-proc put_selectionEnd*(self: ptr IHTMLInputTextElement2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selectionEnd(self, v)
-proc get_selectionEnd*(self: ptr IHTMLInputTextElement2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selectionEnd(self, p)
-proc setSelectionRange*(self: ptr IHTMLInputTextElement2, start: LONG, `end`: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setSelectionRange(self, start, `end`)
-proc get_type*(self: ptr IHTMLInputFileElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_name*(self: ptr IHTMLInputFileElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLInputFileElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_status*(self: ptr IHTMLInputFileElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_status(self, v)
-proc get_status*(self: ptr IHTMLInputFileElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_status(self, p)
-proc put_disabled*(self: ptr IHTMLInputFileElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLInputFileElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc get_form*(self: ptr IHTMLInputFileElement, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc put_size*(self: ptr IHTMLInputFileElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_size(self, v)
-proc get_size*(self: ptr IHTMLInputFileElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_size(self, p)
-proc put_maxLength*(self: ptr IHTMLInputFileElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_maxLength(self, v)
-proc get_maxLength*(self: ptr IHTMLInputFileElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maxLength(self, p)
-proc select*(self: ptr IHTMLInputFileElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.select(self)
-proc put_onchange*(self: ptr IHTMLInputFileElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onchange(self, v)
-proc get_onchange*(self: ptr IHTMLInputFileElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onchange(self, p)
-proc put_onselect*(self: ptr IHTMLInputFileElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onselect(self, v)
-proc get_onselect*(self: ptr IHTMLInputFileElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onselect(self, p)
-proc put_value*(self: ptr IHTMLInputFileElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLInputFileElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_value*(self: ptr IHTMLOptionButtonElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLOptionButtonElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc get_type*(self: ptr IHTMLOptionButtonElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_name*(self: ptr IHTMLOptionButtonElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLOptionButtonElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_checked*(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_checked(self, v)
-proc get_checked*(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_checked(self, p)
-proc put_defaultChecked*(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defaultChecked(self, v)
-proc get_defaultChecked*(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultChecked(self, p)
-proc put_onchange*(self: ptr IHTMLOptionButtonElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onchange(self, v)
-proc get_onchange*(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onchange(self, p)
-proc put_disabled*(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc put_status*(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_status(self, v)
-proc get_status*(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_status(self, p)
-proc put_indeterminate*(self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_indeterminate(self, v)
-proc get_indeterminate*(self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_indeterminate(self, p)
-proc get_form*(self: ptr IHTMLOptionButtonElement, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc get_type*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_disabled*(self: ptr IHTMLInputImage, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLInputImage, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc put_border*(self: ptr IHTMLInputImage, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_border(self, v)
-proc get_border*(self: ptr IHTMLInputImage, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_border(self, p)
-proc put_vspace*(self: ptr IHTMLInputImage, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vspace(self, v)
-proc get_vspace*(self: ptr IHTMLInputImage, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vspace(self, p)
-proc put_hspace*(self: ptr IHTMLInputImage, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hspace(self, v)
-proc get_hspace*(self: ptr IHTMLInputImage, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hspace(self, p)
-proc put_alt*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_alt(self, v)
-proc get_alt*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_alt(self, p)
-proc put_src*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
-proc get_src*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
-proc put_lowsrc*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lowsrc(self, v)
-proc get_lowsrc*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lowsrc(self, p)
-proc put_vrml*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vrml(self, v)
-proc get_vrml*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vrml(self, p)
-proc put_dynsrc*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dynsrc(self, v)
-proc get_dynsrc*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dynsrc(self, p)
-proc get_readyState*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
-proc get_complete*(self: ptr IHTMLInputImage, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_complete(self, p)
-proc put_loop*(self: ptr IHTMLInputImage, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_loop(self, v)
-proc get_loop*(self: ptr IHTMLInputImage, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_loop(self, p)
-proc put_align*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_onload*(self: ptr IHTMLInputImage, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onload(self, v)
-proc get_onload*(self: ptr IHTMLInputImage, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onload(self, p)
-proc put_onerror*(self: ptr IHTMLInputImage, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerror(self, v)
-proc get_onerror*(self: ptr IHTMLInputImage, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerror(self, p)
-proc put_onabort*(self: ptr IHTMLInputImage, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onabort(self, v)
-proc get_onabort*(self: ptr IHTMLInputImage, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onabort(self, p)
-proc put_name*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_width*(self: ptr IHTMLInputImage, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLInputImage, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_height*(self: ptr IHTMLInputImage, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLInputImage, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_start*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_start(self, v)
-proc get_start*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_start(self, p)
-proc put_disabled*(self: ptr IHTMLInputRangeElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLInputRangeElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc get_type*(self: ptr IHTMLInputRangeElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_alt*(self: ptr IHTMLInputRangeElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_alt(self, v)
-proc get_alt*(self: ptr IHTMLInputRangeElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_alt(self, p)
-proc put_name*(self: ptr IHTMLInputRangeElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLInputRangeElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_value*(self: ptr IHTMLInputRangeElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLInputRangeElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_min*(self: ptr IHTMLInputRangeElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_min(self, v)
-proc get_min*(self: ptr IHTMLInputRangeElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_min(self, p)
-proc put_max*(self: ptr IHTMLInputRangeElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_max(self, v)
-proc get_max*(self: ptr IHTMLInputRangeElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_max(self, p)
-proc put_step*(self: ptr IHTMLInputRangeElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_step(self, v)
-proc get_step*(self: ptr IHTMLInputRangeElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_step(self, p)
-proc put_valueAsNumber*(self: ptr IHTMLInputRangeElement, v: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_valueAsNumber(self, v)
-proc get_valueAsNumber*(self: ptr IHTMLInputRangeElement, p: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_valueAsNumber(self, p)
-proc stepUp*(self: ptr IHTMLInputRangeElement, n: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.stepUp(self, n)
-proc stepDown*(self: ptr IHTMLInputRangeElement, n: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.stepDown(self, n)
-proc get_type*(self: ptr IHTMLTextAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_value*(self: ptr IHTMLTextAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLTextAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_name*(self: ptr IHTMLTextAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLTextAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_status*(self: ptr IHTMLTextAreaElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_status(self, v)
-proc get_status*(self: ptr IHTMLTextAreaElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_status(self, p)
-proc put_disabled*(self: ptr IHTMLTextAreaElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLTextAreaElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc get_form*(self: ptr IHTMLTextAreaElement, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc put_defaultValue*(self: ptr IHTMLTextAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defaultValue(self, v)
-proc get_defaultValue*(self: ptr IHTMLTextAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultValue(self, p)
-proc select*(self: ptr IHTMLTextAreaElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.select(self)
-proc put_onchange*(self: ptr IHTMLTextAreaElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onchange(self, v)
-proc get_onchange*(self: ptr IHTMLTextAreaElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onchange(self, p)
-proc put_onselect*(self: ptr IHTMLTextAreaElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onselect(self, v)
-proc get_onselect*(self: ptr IHTMLTextAreaElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onselect(self, p)
-proc put_readOnly*(self: ptr IHTMLTextAreaElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_readOnly(self, v)
-proc get_readOnly*(self: ptr IHTMLTextAreaElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readOnly(self, p)
-proc put_rows*(self: ptr IHTMLTextAreaElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rows(self, v)
-proc get_rows*(self: ptr IHTMLTextAreaElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rows(self, p)
-proc put_cols*(self: ptr IHTMLTextAreaElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cols(self, v)
-proc get_cols*(self: ptr IHTMLTextAreaElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cols(self, p)
-proc put_wrap*(self: ptr IHTMLTextAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_wrap(self, v)
-proc get_wrap*(self: ptr IHTMLTextAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wrap(self, p)
-proc createTextRange*(self: ptr IHTMLTextAreaElement, range: ptr ptr IHTMLTxtRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createTextRange(self, range)
-proc put_selectionStart*(self: ptr IHTMLTextAreaElement2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selectionStart(self, v)
-proc get_selectionStart*(self: ptr IHTMLTextAreaElement2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selectionStart(self, p)
-proc put_selectionEnd*(self: ptr IHTMLTextAreaElement2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selectionEnd(self, v)
-proc get_selectionEnd*(self: ptr IHTMLTextAreaElement2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selectionEnd(self, p)
-proc setSelectionRange*(self: ptr IHTMLTextAreaElement2, start: LONG, `end`: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setSelectionRange(self, start, `end`)
-proc get_type*(self: ptr IHTMLButtonElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_value*(self: ptr IHTMLButtonElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLButtonElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_name*(self: ptr IHTMLButtonElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLButtonElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_status*(self: ptr IHTMLButtonElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_status(self, v)
-proc get_status*(self: ptr IHTMLButtonElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_status(self, p)
-proc put_disabled*(self: ptr IHTMLButtonElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLButtonElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc get_form*(self: ptr IHTMLButtonElement, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc createTextRange*(self: ptr IHTMLButtonElement, range: ptr ptr IHTMLTxtRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createTextRange(self, range)
-proc put_type*(self: ptr IHTMLButtonElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr IHTMLButtonElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_bgColor*(self: ptr IHTMLMarqueeElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bgColor(self, v)
-proc get_bgColor*(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bgColor(self, p)
-proc put_scrollDelay*(self: ptr IHTMLMarqueeElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollDelay(self, v)
-proc get_scrollDelay*(self: ptr IHTMLMarqueeElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollDelay(self, p)
-proc put_direction*(self: ptr IHTMLMarqueeElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_direction(self, v)
-proc get_direction*(self: ptr IHTMLMarqueeElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_direction(self, p)
-proc put_behavior*(self: ptr IHTMLMarqueeElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_behavior(self, v)
-proc get_behavior*(self: ptr IHTMLMarqueeElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_behavior(self, p)
-proc put_scrollAmount*(self: ptr IHTMLMarqueeElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollAmount(self, v)
-proc get_scrollAmount*(self: ptr IHTMLMarqueeElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollAmount(self, p)
-proc put_loop*(self: ptr IHTMLMarqueeElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_loop(self, v)
-proc get_loop*(self: ptr IHTMLMarqueeElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_loop(self, p)
-proc put_vspace*(self: ptr IHTMLMarqueeElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vspace(self, v)
-proc get_vspace*(self: ptr IHTMLMarqueeElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vspace(self, p)
-proc put_hspace*(self: ptr IHTMLMarqueeElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hspace(self, v)
-proc get_hspace*(self: ptr IHTMLMarqueeElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hspace(self, p)
-proc put_onfinish*(self: ptr IHTMLMarqueeElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfinish(self, v)
-proc get_onfinish*(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfinish(self, p)
-proc put_onstart*(self: ptr IHTMLMarqueeElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onstart(self, v)
-proc get_onstart*(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onstart(self, p)
-proc put_onbounce*(self: ptr IHTMLMarqueeElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbounce(self, v)
-proc get_onbounce*(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbounce(self, p)
-proc put_width*(self: ptr IHTMLMarqueeElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_height*(self: ptr IHTMLMarqueeElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLMarqueeElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_trueSpeed*(self: ptr IHTMLMarqueeElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_trueSpeed(self, v)
-proc get_trueSpeed*(self: ptr IHTMLMarqueeElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_trueSpeed(self, p)
-proc start*(self: ptr IHTMLMarqueeElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.start(self)
-proc stop*(self: ptr IHTMLMarqueeElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.stop(self)
-proc put_version*(self: ptr IHTMLHtmlElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_version(self, v)
-proc get_version*(self: ptr IHTMLHtmlElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_version(self, p)
-proc put_profile*(self: ptr IHTMLHeadElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_profile(self, v)
-proc get_profile*(self: ptr IHTMLHeadElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_profile(self, p)
-proc put_profile*(self: ptr IHTMLHeadElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_profile(self, v)
-proc get_profile*(self: ptr IHTMLHeadElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_profile(self, p)
-proc put_text*(self: ptr IHTMLTitleElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_text(self, v)
-proc get_text*(self: ptr IHTMLTitleElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_text(self, p)
-proc put_httpEquiv*(self: ptr IHTMLMetaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_httpEquiv(self, v)
-proc get_httpEquiv*(self: ptr IHTMLMetaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_httpEquiv(self, p)
-proc put_content*(self: ptr IHTMLMetaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_content(self, v)
-proc get_content*(self: ptr IHTMLMetaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_content(self, p)
-proc put_name*(self: ptr IHTMLMetaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLMetaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_url*(self: ptr IHTMLMetaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_url(self, v)
-proc get_url*(self: ptr IHTMLMetaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_url(self, p)
-proc put_charset*(self: ptr IHTMLMetaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_charset(self, v)
-proc get_charset*(self: ptr IHTMLMetaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_charset(self, p)
-proc put_scheme*(self: ptr IHTMLMetaElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scheme(self, v)
-proc get_scheme*(self: ptr IHTMLMetaElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scheme(self, p)
-proc put_url*(self: ptr IHTMLMetaElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_url(self, v)
-proc get_url*(self: ptr IHTMLMetaElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_url(self, p)
-proc put_href*(self: ptr IHTMLBaseElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_href(self, v)
-proc get_href*(self: ptr IHTMLBaseElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc put_target*(self: ptr IHTMLBaseElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_target(self, v)
-proc get_target*(self: ptr IHTMLBaseElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_target(self, p)
-proc put_href*(self: ptr IHTMLBaseElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_href(self, v)
-proc get_href*(self: ptr IHTMLBaseElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc put_prompt*(self: ptr IHTMLIsIndexElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_prompt(self, v)
-proc get_prompt*(self: ptr IHTMLIsIndexElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_prompt(self, p)
-proc put_action*(self: ptr IHTMLIsIndexElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_action(self, v)
-proc get_action*(self: ptr IHTMLIsIndexElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_action(self, p)
-proc get_form*(self: ptr IHTMLIsIndexElement2, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc put_n*(self: ptr IHTMLNextIdElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_n(self, v)
-proc get_n*(self: ptr IHTMLNextIdElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_n(self, p)
-proc put_color*(self: ptr IHTMLBaseFontElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_color(self, v)
-proc get_color*(self: ptr IHTMLBaseFontElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_color(self, p)
-proc put_face*(self: ptr IHTMLBaseFontElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_face(self, v)
-proc get_face*(self: ptr IHTMLBaseFontElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_face(self, p)
-proc put_size*(self: ptr IHTMLBaseFontElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_size(self, v)
-proc get_size*(self: ptr IHTMLBaseFontElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_size(self, p)
-proc get_length*(self: ptr IOmHistory, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc back*(self: ptr IOmHistory, pvargdistance: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.back(self, pvargdistance)
-proc forward*(self: ptr IOmHistory, pvargdistance: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.forward(self, pvargdistance)
-proc go*(self: ptr IOmHistory, pvargdistance: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.go(self, pvargdistance)
-proc get_length*(self: ptr IHTMLMimeTypesCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_length*(self: ptr IHTMLPluginsCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc refresh*(self: ptr IHTMLPluginsCollection, reload: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.refresh(self, reload)
-proc addRequest*(self: ptr IHTMLOpsProfile, name: BSTR, reserved: VARIANT, success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addRequest(self, name, reserved, success)
-proc clearRequest*(self: ptr IHTMLOpsProfile): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clearRequest(self)
-proc doRequest*(self: ptr IHTMLOpsProfile, usage: VARIANT, fname: VARIANT, domain: VARIANT, path: VARIANT, expire: VARIANT, reserved: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.doRequest(self, usage, fname, domain, path, expire, reserved)
-proc getAttribute*(self: ptr IHTMLOpsProfile, name: BSTR, value: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, name, value)
-proc setAttribute*(self: ptr IHTMLOpsProfile, name: BSTR, value: BSTR, prefs: VARIANT, success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttribute(self, name, value, prefs, success)
-proc commitChanges*(self: ptr IHTMLOpsProfile, success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.commitChanges(self, success)
-proc addReadRequest*(self: ptr IHTMLOpsProfile, name: BSTR, reserved: VARIANT, success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addReadRequest(self, name, reserved, success)
-proc doReadRequest*(self: ptr IHTMLOpsProfile, usage: VARIANT, fname: VARIANT, domain: VARIANT, path: VARIANT, expire: VARIANT, reserved: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.doReadRequest(self, usage, fname, domain, path, expire, reserved)
-proc doWriteRequest*(self: ptr IHTMLOpsProfile, success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.doWriteRequest(self, success)
-proc get_appCodeName*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_appCodeName(self, p)
-proc get_appName*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_appName(self, p)
-proc get_appVersion*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_appVersion(self, p)
-proc get_userAgent*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_userAgent(self, p)
-proc javaEnabled*(self: ptr IOmNavigator, enabled: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.javaEnabled(self, enabled)
-proc taintEnabled*(self: ptr IOmNavigator, enabled: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.taintEnabled(self, enabled)
-proc get_mimeTypes*(self: ptr IOmNavigator, p: ptr ptr IHTMLMimeTypesCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_mimeTypes(self, p)
-proc get_plugins*(self: ptr IOmNavigator, p: ptr ptr IHTMLPluginsCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_plugins(self, p)
-proc get_cookieEnabled*(self: ptr IOmNavigator, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cookieEnabled(self, p)
-proc get_opsProfile*(self: ptr IOmNavigator, p: ptr ptr IHTMLOpsProfile): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_opsProfile(self, p)
-proc toString*(self: ptr IOmNavigator, string: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, string)
-proc get_cpuClass*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cpuClass(self, p)
-proc get_systemLanguage*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_systemLanguage(self, p)
-proc get_browserLanguage*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_browserLanguage(self, p)
-proc get_userLanguage*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_userLanguage(self, p)
-proc get_platform*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_platform(self, p)
-proc get_appMinorVersion*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_appMinorVersion(self, p)
-proc get_connectionSpeed*(self: ptr IOmNavigator, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_connectionSpeed(self, p)
-proc get_onLine*(self: ptr IOmNavigator, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onLine(self, p)
-proc get_userProfile*(self: ptr IOmNavigator, p: ptr ptr IHTMLOpsProfile): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_userProfile(self, p)
-proc get_geolocation*(self: ptr INavigatorGeolocation, p: ptr ptr IWebGeolocation): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_geolocation(self, p)
-proc get_msDoNotTrack*(self: ptr INavigatorDoNotTrack, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msDoNotTrack(self, p)
-proc put_href*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_href(self, v)
-proc get_href*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc put_protocol*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_protocol(self, v)
-proc get_protocol*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_protocol(self, p)
-proc put_host*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_host(self, v)
-proc get_host*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_host(self, p)
-proc put_hostname*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hostname(self, v)
-proc get_hostname*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hostname(self, p)
-proc put_port*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_port(self, v)
-proc get_port*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_port(self, p)
-proc put_pathname*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pathname(self, v)
-proc get_pathname*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pathname(self, p)
-proc put_search*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_search(self, v)
-proc get_search*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_search(self, p)
-proc put_hash*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hash(self, v)
-proc get_hash*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hash(self, p)
-proc reload*(self: ptr IHTMLLocation, flag: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.reload(self, flag)
-proc replace*(self: ptr IHTMLLocation, bstr: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replace(self, bstr)
-proc assign*(self: ptr IHTMLLocation, bstr: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.assign(self, bstr)
-proc toString*(self: ptr IHTMLLocation, string: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, string)
-proc get_length*(self: ptr IHTMLBookmarkCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IHTMLBookmarkCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc item*(self: ptr IHTMLBookmarkCollection, index: LONG, pVarBookmark: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, pVarBookmark)
-proc setData*(self: ptr IHTMLDataTransfer, format: BSTR, data: ptr VARIANT, pret: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setData(self, format, data, pret)
-proc getData*(self: ptr IHTMLDataTransfer, format: BSTR, pvarRet: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getData(self, format, pvarRet)
-proc clearData*(self: ptr IHTMLDataTransfer, format: BSTR, pret: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clearData(self, format, pret)
-proc put_dropEffect*(self: ptr IHTMLDataTransfer, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dropEffect(self, v)
-proc get_dropEffect*(self: ptr IHTMLDataTransfer, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dropEffect(self, p)
-proc put_effectAllowed*(self: ptr IHTMLDataTransfer, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_effectAllowed(self, v)
-proc get_effectAllowed*(self: ptr IHTMLDataTransfer, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_effectAllowed(self, p)
-proc get_srcElement*(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_srcElement(self, p)
-proc get_altKey*(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_altKey(self, p)
-proc get_ctrlKey*(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ctrlKey(self, p)
-proc get_shiftKey*(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_shiftKey(self, p)
-proc put_returnValue*(self: ptr IHTMLEventObj, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_returnValue(self, v)
-proc get_returnValue*(self: ptr IHTMLEventObj, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_returnValue(self, p)
-proc put_cancelBubble*(self: ptr IHTMLEventObj, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cancelBubble(self, v)
-proc get_cancelBubble*(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cancelBubble(self, p)
-proc get_fromElement*(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fromElement(self, p)
-proc get_toElement*(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_toElement(self, p)
-proc put_keyCode*(self: ptr IHTMLEventObj, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_keyCode(self, v)
-proc get_keyCode*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_keyCode(self, p)
-proc get_button*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_button(self, p)
-proc get_type*(self: ptr IHTMLEventObj, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc get_qualifier*(self: ptr IHTMLEventObj, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_qualifier(self, p)
-proc get_reason*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_reason(self, p)
-proc get_x*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc get_y*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc get_clientX*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientX(self, p)
-proc get_clientY*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientY(self, p)
-proc get_offsetX*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetX(self, p)
-proc get_offsetY*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetY(self, p)
-proc get_screenX*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screenX(self, p)
-proc get_screenY*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screenY(self, p)
-proc get_srcFilter*(self: ptr IHTMLEventObj, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_srcFilter(self, p)
-proc setAttribute*(self: ptr IHTMLEventObj2, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttribute(self, strAttributeName, AttributeValue, lFlags)
-proc getAttribute*(self: ptr IHTMLEventObj2, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, strAttributeName, lFlags, AttributeValue)
-proc removeAttribute*(self: ptr IHTMLEventObj2, strAttributeName: BSTR, lFlags: LONG, pfSuccess: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttribute(self, strAttributeName, lFlags, pfSuccess)
-proc put_propertyName*(self: ptr IHTMLEventObj2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_propertyName(self, v)
-proc get_propertyName*(self: ptr IHTMLEventObj2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_propertyName(self, p)
-proc putref_bookmarks*(self: ptr IHTMLEventObj2, v: ptr IHTMLBookmarkCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_bookmarks(self, v)
-proc get_bookmarks*(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLBookmarkCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bookmarks(self, p)
-proc putref_recordset*(self: ptr IHTMLEventObj2, v: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_recordset(self, v)
-proc get_recordset*(self: ptr IHTMLEventObj2, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_recordset(self, p)
-proc put_dataFld*(self: ptr IHTMLEventObj2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dataFld(self, v)
-proc get_dataFld*(self: ptr IHTMLEventObj2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dataFld(self, p)
-proc putref_boundElements*(self: ptr IHTMLEventObj2, v: ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_boundElements(self, v)
-proc get_boundElements*(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_boundElements(self, p)
-proc put_repeat*(self: ptr IHTMLEventObj2, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_repeat(self, v)
-proc get_repeat*(self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_repeat(self, p)
-proc put_srcUrn*(self: ptr IHTMLEventObj2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_srcUrn(self, v)
-proc get_srcUrn*(self: ptr IHTMLEventObj2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_srcUrn(self, p)
-proc putref_srcElement*(self: ptr IHTMLEventObj2, v: ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_srcElement(self, v)
-proc get_srcElement*(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_srcElement(self, p)
-proc put_altKey*(self: ptr IHTMLEventObj2, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_altKey(self, v)
-proc get_altKey*(self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_altKey(self, p)
-proc put_ctrlKey*(self: ptr IHTMLEventObj2, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ctrlKey(self, v)
-proc get_ctrlKey*(self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ctrlKey(self, p)
-proc put_shiftKey*(self: ptr IHTMLEventObj2, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_shiftKey(self, v)
-proc get_shiftKey*(self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_shiftKey(self, p)
-proc putref_fromElement*(self: ptr IHTMLEventObj2, v: ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_fromElement(self, v)
-proc get_fromElement*(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fromElement(self, p)
-proc putref_toElement*(self: ptr IHTMLEventObj2, v: ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_toElement(self, v)
-proc get_toElement*(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_toElement(self, p)
-proc put_button*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_button(self, v)
-proc get_button*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_button(self, p)
-proc put_type*(self: ptr IHTMLEventObj2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr IHTMLEventObj2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_qualifier*(self: ptr IHTMLEventObj2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_qualifier(self, v)
-proc get_qualifier*(self: ptr IHTMLEventObj2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_qualifier(self, p)
-proc put_reason*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_reason(self, v)
-proc get_reason*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_reason(self, p)
-proc put_x*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_clientX*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clientX(self, v)
-proc get_clientX*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientX(self, p)
-proc put_clientY*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clientY(self, v)
-proc get_clientY*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientY(self, p)
-proc put_offsetX*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_offsetX(self, v)
-proc get_offsetX*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetX(self, p)
-proc put_offsetY*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_offsetY(self, v)
-proc get_offsetY*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetY(self, p)
-proc put_screenX*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_screenX(self, v)
-proc get_screenX*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screenX(self, p)
-proc put_screenY*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_screenY(self, v)
-proc get_screenY*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screenY(self, p)
-proc putref_srcFilter*(self: ptr IHTMLEventObj2, v: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_srcFilter(self, v)
-proc get_srcFilter*(self: ptr IHTMLEventObj2, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_srcFilter(self, p)
-proc get_dataTransfer*(self: ptr IHTMLEventObj2, p: ptr ptr IHTMLDataTransfer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dataTransfer(self, p)
-proc get_contentOverflow*(self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_contentOverflow(self, p)
-proc put_shiftLeft*(self: ptr IHTMLEventObj3, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_shiftLeft(self, v)
-proc get_shiftLeft*(self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_shiftLeft(self, p)
-proc put_altLeft*(self: ptr IHTMLEventObj3, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_altLeft(self, v)
-proc get_altLeft*(self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_altLeft(self, p)
-proc put_ctrlLeft*(self: ptr IHTMLEventObj3, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ctrlLeft(self, v)
-proc get_ctrlLeft*(self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ctrlLeft(self, p)
-proc get_imeCompositionChange*(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_imeCompositionChange(self, p)
-proc get_imeNotifyCommand*(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_imeNotifyCommand(self, p)
-proc get_imeNotifyData*(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_imeNotifyData(self, p)
-proc get_imeRequest*(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_imeRequest(self, p)
-proc get_imeRequestData*(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_imeRequestData(self, p)
-proc get_keyboardLayout*(self: ptr IHTMLEventObj3, p: ptr LONG_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_keyboardLayout(self, p)
-proc get_behaviorCookie*(self: ptr IHTMLEventObj3, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_behaviorCookie(self, p)
-proc get_behaviorPart*(self: ptr IHTMLEventObj3, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_behaviorPart(self, p)
-proc get_nextPage*(self: ptr IHTMLEventObj3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nextPage(self, p)
-proc get_wheelDelta*(self: ptr IHTMLEventObj4, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wheelDelta(self, p)
-proc put_url*(self: ptr IHTMLEventObj5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_url(self, v)
-proc get_url*(self: ptr IHTMLEventObj5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_url(self, p)
-proc put_data*(self: ptr IHTMLEventObj5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_data(self, v)
-proc get_data*(self: ptr IHTMLEventObj5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_data(self, p)
-proc get_source*(self: ptr IHTMLEventObj5, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_source(self, p)
-proc put_origin*(self: ptr IHTMLEventObj5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_origin(self, v)
-proc get_origin*(self: ptr IHTMLEventObj5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_origin(self, p)
-proc put_issession*(self: ptr IHTMLEventObj5, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_issession(self, v)
-proc get_issession*(self: ptr IHTMLEventObj5, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_issession(self, p)
-proc get_actionURL*(self: ptr IHTMLEventObj6, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_actionURL(self, p)
-proc get_buttonID*(self: ptr IHTMLEventObj6, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_buttonID(self, p)
-proc get_type*(self: ptr IHTMLStyleMedia, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc matchMedium*(self: ptr IHTMLStyleMedia, mediaQuery: BSTR, matches: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.matchMedium(self, mediaQuery, matches)
-proc item*(self: ptr IHTMLFramesCollection2, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, pvarIndex, pvarResult)
-proc get_length*(self: ptr IHTMLFramesCollection2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_colorDepth*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_colorDepth(self, p)
-proc put_bufferDepth*(self: ptr IHTMLScreen, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bufferDepth(self, v)
-proc get_bufferDepth*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bufferDepth(self, p)
-proc get_width*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc get_height*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_updateInterval*(self: ptr IHTMLScreen, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_updateInterval(self, v)
-proc get_updateInterval*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_updateInterval(self, p)
-proc get_availHeight*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_availHeight(self, p)
-proc get_availWidth*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_availWidth(self, p)
-proc get_fontSmoothingEnabled*(self: ptr IHTMLScreen, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontSmoothingEnabled(self, p)
-proc get_logicalXDPI*(self: ptr IHTMLScreen2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_logicalXDPI(self, p)
-proc get_logicalYDPI*(self: ptr IHTMLScreen2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_logicalYDPI(self, p)
-proc get_deviceXDPI*(self: ptr IHTMLScreen2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_deviceXDPI(self, p)
-proc get_deviceYDPI*(self: ptr IHTMLScreen2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_deviceYDPI(self, p)
-proc get_systemXDPI*(self: ptr IHTMLScreen3, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_systemXDPI(self, p)
-proc get_systemYDPI*(self: ptr IHTMLScreen3, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_systemYDPI(self, p)
-proc get_pixelDepth*(self: ptr IHTMLScreen4, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelDepth(self, p)
-proc get_frames*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLFramesCollection2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frames(self, p)
-proc put_defaultStatus*(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defaultStatus(self, v)
-proc get_defaultStatus*(self: ptr IHTMLWindow2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultStatus(self, p)
-proc put_status*(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_status(self, v)
-proc get_status*(self: ptr IHTMLWindow2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_status(self, p)
-proc setTimeout*(self: ptr IHTMLWindow2, expression: BSTR, msec: LONG, language: ptr VARIANT, timerID: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setTimeout(self, expression, msec, language, timerID)
-proc clearTimeout*(self: ptr IHTMLWindow2, timerID: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clearTimeout(self, timerID)
-proc alert*(self: ptr IHTMLWindow2, message: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.alert(self, message)
-proc confirm*(self: ptr IHTMLWindow2, message: BSTR, confirmed: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.confirm(self, message, confirmed)
-proc prompt*(self: ptr IHTMLWindow2, message: BSTR, defstr: BSTR, textdata: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.prompt(self, message, defstr, textdata)
-proc get_Image*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLImageElementFactory): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Image(self, p)
-proc get_location*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLLocation): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_location(self, p)
-proc get_history*(self: ptr IHTMLWindow2, p: ptr ptr IOmHistory): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_history(self, p)
-proc close*(self: ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.close(self)
-proc put_opener*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_opener(self, v)
-proc get_opener*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_opener(self, p)
-proc get_navigator*(self: ptr IHTMLWindow2, p: ptr ptr IOmNavigator): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_navigator(self, p)
-proc put_name*(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLWindow2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc get_parent*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parent(self, p)
-proc open*(self: ptr IHTMLWindow2, url: BSTR, name: BSTR, features: BSTR, replace: VARIANT_BOOL, pomWindowResult: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.open(self, url, name, features, replace, pomWindowResult)
-proc get_self*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_self(self, p)
-proc get_top*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_top(self, p)
-proc get_window*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_window(self, p)
-proc navigate*(self: ptr IHTMLWindow2, url: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.navigate(self, url)
-proc put_onfocus*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfocus(self, v)
-proc get_onfocus*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfocus(self, p)
-proc put_onblur*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onblur(self, v)
-proc get_onblur*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onblur(self, p)
-proc put_onload*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onload(self, v)
-proc get_onload*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onload(self, p)
-proc put_onbeforeunload*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeunload(self, v)
-proc get_onbeforeunload*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeunload(self, p)
-proc put_onunload*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onunload(self, v)
-proc get_onunload*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onunload(self, p)
-proc put_onhelp*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onhelp(self, v)
-proc get_onhelp*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onhelp(self, p)
-proc put_onerror*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerror(self, v)
-proc get_onerror*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerror(self, p)
-proc put_onresize*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onresize(self, v)
-proc get_onresize*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onresize(self, p)
-proc put_onscroll*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onscroll(self, v)
-proc get_onscroll*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onscroll(self, p)
-proc get_document*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLDocument2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_document(self, p)
-proc get_event*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLEventObj): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_event(self, p)
-proc get_newEnum*(self: ptr IHTMLWindow2, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc showModalDialog*(self: ptr IHTMLWindow2, dialog: BSTR, varArgIn: ptr VARIANT, varOptions: ptr VARIANT, varArgOut: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.showModalDialog(self, dialog, varArgIn, varOptions, varArgOut)
-proc showHelp*(self: ptr IHTMLWindow2, helpURL: BSTR, helpArg: VARIANT, features: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.showHelp(self, helpURL, helpArg, features)
-proc get_screen*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLScreen): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screen(self, p)
-proc get_Option*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLOptionElementFactory): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Option(self, p)
-proc focus*(self: ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.focus(self)
-proc get_closed*(self: ptr IHTMLWindow2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_closed(self, p)
-proc blur*(self: ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.blur(self)
-proc scroll*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.scroll(self, x, y)
-proc get_clientInformation*(self: ptr IHTMLWindow2, p: ptr ptr IOmNavigator): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientInformation(self, p)
-proc setInterval*(self: ptr IHTMLWindow2, expression: BSTR, msec: LONG, language: ptr VARIANT, timerID: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setInterval(self, expression, msec, language, timerID)
-proc clearInterval*(self: ptr IHTMLWindow2, timerID: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clearInterval(self, timerID)
-proc put_offscreenBuffering*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_offscreenBuffering(self, v)
-proc get_offscreenBuffering*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offscreenBuffering(self, p)
-proc execScript*(self: ptr IHTMLWindow2, code: BSTR, language: BSTR, pvarRet: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.execScript(self, code, language, pvarRet)
-proc toString*(self: ptr IHTMLWindow2, String: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, String)
-proc scrollBy*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.scrollBy(self, x, y)
-proc scrollTo*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.scrollTo(self, x, y)
-proc moveTo*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveTo(self, x, y)
-proc moveBy*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveBy(self, x, y)
-proc resizeTo*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.resizeTo(self, x, y)
-proc resizeBy*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.resizeBy(self, x, y)
-proc get_external*(self: ptr IHTMLWindow2, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_external(self, p)
-proc get_screenLeft*(self: ptr IHTMLWindow3, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screenLeft(self, p)
-proc get_screenTop*(self: ptr IHTMLWindow3, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screenTop(self, p)
-proc attachEvent*(self: ptr IHTMLWindow3, event: BSTR, pDisp: ptr IDispatch, pfResult: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.attachEvent(self, event, pDisp, pfResult)
-proc detachEvent*(self: ptr IHTMLWindow3, event: BSTR, pDisp: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.detachEvent(self, event, pDisp)
-proc setTimeout*(self: ptr IHTMLWindow3, expression: ptr VARIANT, msec: LONG, language: ptr VARIANT, timerID: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setTimeout(self, expression, msec, language, timerID)
-proc setInterval*(self: ptr IHTMLWindow3, expression: ptr VARIANT, msec: LONG, language: ptr VARIANT, timerID: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setInterval(self, expression, msec, language, timerID)
-proc print*(self: ptr IHTMLWindow3): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.print(self)
-proc put_onbeforeprint*(self: ptr IHTMLWindow3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeprint(self, v)
-proc get_onbeforeprint*(self: ptr IHTMLWindow3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeprint(self, p)
-proc put_onafterprint*(self: ptr IHTMLWindow3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onafterprint(self, v)
-proc get_onafterprint*(self: ptr IHTMLWindow3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onafterprint(self, p)
-proc get_clipboardData*(self: ptr IHTMLWindow3, p: ptr ptr IHTMLDataTransfer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clipboardData(self, p)
-proc showModelessDialog*(self: ptr IHTMLWindow3, url: BSTR, varArgIn: ptr VARIANT, options: ptr VARIANT, pDialog: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.showModelessDialog(self, url, varArgIn, options, pDialog)
-proc createPopup*(self: ptr IHTMLWindow4, varArgIn: ptr VARIANT, ppPopup: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createPopup(self, varArgIn, ppPopup)
-proc get_frameElement*(self: ptr IHTMLWindow4, p: ptr ptr IHTMLFrameBase): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frameElement(self, p)
-proc put_XMLHttpRequest*(self: ptr IHTMLWindow5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_XMLHttpRequest(self, v)
-proc get_XMLHttpRequest*(self: ptr IHTMLWindow5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_XMLHttpRequest(self, p)
-proc put_XDomainRequest*(self: ptr IHTMLWindow6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_XDomainRequest(self, v)
-proc get_XDomainRequest*(self: ptr IHTMLWindow6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_XDomainRequest(self, p)
-proc get_sessionStorage*(self: ptr IHTMLWindow6, p: ptr ptr IHTMLStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_sessionStorage(self, p)
-proc get_localStorage*(self: ptr IHTMLWindow6, p: ptr ptr IHTMLStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_localStorage(self, p)
-proc put_onhashchange*(self: ptr IHTMLWindow6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onhashchange(self, v)
-proc get_onhashchange*(self: ptr IHTMLWindow6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onhashchange(self, p)
-proc get_maxConnectionsPerServer*(self: ptr IHTMLWindow6, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maxConnectionsPerServer(self, p)
-proc postMessage*(self: ptr IHTMLWindow6, msg: BSTR, targetOrigin: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.postMessage(self, msg, targetOrigin)
-proc toStaticHTML*(self: ptr IHTMLWindow6, bstrHTML: BSTR, pbstrStaticHTML: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toStaticHTML(self, bstrHTML, pbstrStaticHTML)
-proc put_onmessage*(self: ptr IHTMLWindow6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmessage(self, v)
-proc get_onmessage*(self: ptr IHTMLWindow6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmessage(self, p)
-proc msWriteProfilerMark*(self: ptr IHTMLWindow6, bstrProfilerMarkName: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.msWriteProfilerMark(self, bstrProfilerMarkName)
-proc getSelection*(self: ptr IHTMLWindow7, ppIHTMLSelection: ptr ptr IHTMLSelection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getSelection(self, ppIHTMLSelection)
-proc getComputedStyle*(self: ptr IHTMLWindow7, varArgIn: ptr IHTMLDOMNode, bstrPseudoElt: BSTR, ppComputedStyle: ptr ptr IHTMLCSSStyleDeclaration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getComputedStyle(self, varArgIn, bstrPseudoElt, ppComputedStyle)
-proc get_styleMedia*(self: ptr IHTMLWindow7, p: ptr ptr IHTMLStyleMedia): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_styleMedia(self, p)
-proc put_performance*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_performance(self, v)
-proc get_performance*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_performance(self, p)
-proc get_innerWidth*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_innerWidth(self, p)
-proc get_innerHeight*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_innerHeight(self, p)
-proc get_pageXOffset*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageXOffset(self, p)
-proc get_pageYOffset*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageYOffset(self, p)
-proc get_screenX*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screenX(self, p)
-proc get_screenY*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screenY(self, p)
-proc get_outerWidth*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outerWidth(self, p)
-proc get_outerHeight*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outerHeight(self, p)
-proc put_onabort*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onabort(self, v)
-proc get_onabort*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onabort(self, p)
-proc put_oncanplay*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncanplay(self, v)
-proc get_oncanplay*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncanplay(self, p)
-proc put_oncanplaythrough*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncanplaythrough(self, v)
-proc get_oncanplaythrough*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncanplaythrough(self, p)
-proc put_onchange*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onchange(self, v)
-proc get_onchange*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onchange(self, p)
-proc put_onclick*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onclick(self, v)
-proc get_onclick*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onclick(self, p)
-proc put_oncontextmenu*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncontextmenu(self, v)
-proc get_oncontextmenu*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncontextmenu(self, p)
-proc put_ondblclick*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondblclick(self, v)
-proc get_ondblclick*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondblclick(self, p)
-proc put_ondrag*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondrag(self, v)
-proc get_ondrag*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondrag(self, p)
-proc put_ondragend*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragend(self, v)
-proc get_ondragend*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragend(self, p)
-proc put_ondragenter*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragenter(self, v)
-proc get_ondragenter*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragenter(self, p)
-proc put_ondragleave*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragleave(self, v)
-proc get_ondragleave*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragleave(self, p)
-proc put_ondragover*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragover(self, v)
-proc get_ondragover*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragover(self, p)
-proc put_ondragstart*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragstart(self, v)
-proc get_ondragstart*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragstart(self, p)
-proc put_ondrop*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondrop(self, v)
-proc get_ondrop*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondrop(self, p)
-proc put_ondurationchange*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondurationchange(self, v)
-proc get_ondurationchange*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondurationchange(self, p)
-proc put_onfocusin*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfocusin(self, v)
-proc get_onfocusin*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfocusin(self, p)
-proc put_onfocusout*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfocusout(self, v)
-proc get_onfocusout*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfocusout(self, p)
-proc put_oninput*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oninput(self, v)
-proc get_oninput*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oninput(self, p)
-proc put_onemptied*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onemptied(self, v)
-proc get_onemptied*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onemptied(self, p)
-proc put_onended*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onended(self, v)
-proc get_onended*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onended(self, p)
-proc put_onkeydown*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeydown(self, v)
-proc get_onkeydown*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeydown(self, p)
-proc put_onkeypress*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeypress(self, v)
-proc get_onkeypress*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeypress(self, p)
-proc put_onkeyup*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeyup(self, v)
-proc get_onkeyup*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeyup(self, p)
-proc put_onloadeddata*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onloadeddata(self, v)
-proc get_onloadeddata*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onloadeddata(self, p)
-proc put_onloadedmetadata*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onloadedmetadata(self, v)
-proc get_onloadedmetadata*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onloadedmetadata(self, p)
-proc put_onloadstart*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onloadstart(self, v)
-proc get_onloadstart*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onloadstart(self, p)
-proc put_onmousedown*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmousedown(self, v)
-proc get_onmousedown*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmousedown(self, p)
-proc put_onmouseenter*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseenter(self, v)
-proc get_onmouseenter*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseenter(self, p)
-proc put_onmouseleave*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseleave(self, v)
-proc get_onmouseleave*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseleave(self, p)
-proc put_onmousemove*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmousemove(self, v)
-proc get_onmousemove*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmousemove(self, p)
-proc put_onmouseout*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseout(self, v)
-proc get_onmouseout*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseout(self, p)
-proc put_onmouseover*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseover(self, v)
-proc get_onmouseover*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseover(self, p)
-proc put_onmouseup*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseup(self, v)
-proc get_onmouseup*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseup(self, p)
-proc put_onmousewheel*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmousewheel(self, v)
-proc get_onmousewheel*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmousewheel(self, p)
-proc put_onoffline*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onoffline(self, v)
-proc get_onoffline*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onoffline(self, p)
-proc put_ononline*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ononline(self, v)
-proc get_ononline*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ononline(self, p)
-proc put_onprogress*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onprogress(self, v)
-proc get_onprogress*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onprogress(self, p)
-proc put_onratechange*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onratechange(self, v)
-proc get_onratechange*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onratechange(self, p)
-proc put_onreadystatechange*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreadystatechange(self, v)
-proc get_onreadystatechange*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreadystatechange(self, p)
-proc put_onreset*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreset(self, v)
-proc get_onreset*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreset(self, p)
-proc put_onseeked*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onseeked(self, v)
-proc get_onseeked*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onseeked(self, p)
-proc put_onseeking*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onseeking(self, v)
-proc get_onseeking*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onseeking(self, p)
-proc put_onselect*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onselect(self, v)
-proc get_onselect*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onselect(self, p)
-proc put_onstalled*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onstalled(self, v)
-proc get_onstalled*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onstalled(self, p)
-proc put_onstorage*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onstorage(self, v)
-proc get_onstorage*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onstorage(self, p)
-proc put_onsubmit*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onsubmit(self, v)
-proc get_onsubmit*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onsubmit(self, p)
-proc put_onsuspend*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onsuspend(self, v)
-proc get_onsuspend*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onsuspend(self, p)
-proc put_ontimeupdate*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ontimeupdate(self, v)
-proc get_ontimeupdate*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ontimeupdate(self, p)
-proc put_onpause*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onpause(self, v)
-proc get_onpause*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onpause(self, p)
-proc put_onplay*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onplay(self, v)
-proc get_onplay*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onplay(self, p)
-proc put_onplaying*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onplaying(self, v)
-proc get_onplaying*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onplaying(self, p)
-proc put_onvolumechange*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onvolumechange(self, v)
-proc get_onvolumechange*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onvolumechange(self, p)
-proc put_onwaiting*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onwaiting(self, v)
-proc get_onwaiting*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onwaiting(self, p)
-proc put_onmspointerdown*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerdown(self, v)
-proc get_onmspointerdown*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerdown(self, p)
-proc put_onmspointermove*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointermove(self, v)
-proc get_onmspointermove*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointermove(self, p)
-proc put_onmspointerup*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerup(self, v)
-proc get_onmspointerup*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerup(self, p)
-proc put_onmspointerover*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerover(self, v)
-proc get_onmspointerover*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerover(self, p)
-proc put_onmspointerout*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerout(self, v)
-proc get_onmspointerout*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerout(self, p)
-proc put_onmspointercancel*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointercancel(self, v)
-proc get_onmspointercancel*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointercancel(self, p)
-proc put_onmspointerhover*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerhover(self, v)
-proc get_onmspointerhover*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerhover(self, p)
-proc put_onmsgesturestart*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturestart(self, v)
-proc get_onmsgesturestart*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturestart(self, p)
-proc put_onmsgesturechange*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturechange(self, v)
-proc get_onmsgesturechange*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturechange(self, p)
-proc put_onmsgestureend*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgestureend(self, v)
-proc get_onmsgestureend*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgestureend(self, p)
-proc put_onmsgesturehold*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturehold(self, v)
-proc get_onmsgesturehold*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturehold(self, p)
-proc put_onmsgesturetap*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturetap(self, v)
-proc get_onmsgesturetap*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturetap(self, p)
-proc put_onmsgesturedoubletap*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturedoubletap(self, v)
-proc get_onmsgesturedoubletap*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturedoubletap(self, p)
-proc put_onmsinertiastart*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsinertiastart(self, v)
-proc get_onmsinertiastart*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsinertiastart(self, p)
-proc get_applicationCache*(self: ptr IHTMLWindow8, p: ptr ptr IHTMLApplicationCache): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_applicationCache(self, p)
-proc put_onpopstate*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onpopstate(self, v)
-proc get_onpopstate*(self: ptr IHTMLWindow8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onpopstate(self, p)
-proc get_userAgent*(self: ptr IHTMLDocumentCompatibleInfo, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_userAgent(self, p)
-proc get_version*(self: ptr IHTMLDocumentCompatibleInfo, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_version(self, p)
-proc get_length*(self: ptr IHTMLDocumentCompatibleInfoCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc item*(self: ptr IHTMLDocumentCompatibleInfoCollection, index: LONG, compatibleInfo: ptr ptr IHTMLDocumentCompatibleInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, compatibleInfo)
-proc get_Script*(self: ptr IHTMLDocument, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Script(self, p)
-proc get_all*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_all(self, p)
-proc get_body*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_body(self, p)
-proc get_activeElement*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_activeElement(self, p)
-proc get_images*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_images(self, p)
-proc get_applets*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_applets(self, p)
-proc get_links*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_links(self, p)
-proc get_forms*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_forms(self, p)
-proc get_anchors*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_anchors(self, p)
-proc put_title*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_title(self, v)
-proc get_title*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_title(self, p)
-proc get_scripts*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scripts(self, p)
-proc put_designMode*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_designMode(self, v)
-proc get_designMode*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_designMode(self, p)
-proc get_selection*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLSelectionObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selection(self, p)
-proc get_readyState*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
-proc get_frames*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLFramesCollection2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frames(self, p)
-proc get_embeds*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_embeds(self, p)
-proc get_plugins*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_plugins(self, p)
-proc put_alinkColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_alinkColor(self, v)
-proc get_alinkColor*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_alinkColor(self, p)
-proc put_bgColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bgColor(self, v)
-proc get_bgColor*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bgColor(self, p)
-proc put_fgColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fgColor(self, v)
-proc get_fgColor*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fgColor(self, p)
-proc put_linkColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_linkColor(self, v)
-proc get_linkColor*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_linkColor(self, p)
-proc put_vlinkColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vlinkColor(self, v)
-proc get_vlinkColor*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vlinkColor(self, p)
-proc get_referrer*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_referrer(self, p)
-proc get_location*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLLocation): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_location(self, p)
-proc get_lastModified*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lastModified(self, p)
-proc put_URL*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_URL(self, v)
-proc get_URL*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_URL(self, p)
-proc put_domain*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_domain(self, v)
-proc get_domain*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_domain(self, p)
-proc put_cookie*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cookie(self, v)
-proc get_cookie*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cookie(self, p)
-proc put_expando*(self: ptr IHTMLDocument2, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_expando(self, v)
-proc get_expando*(self: ptr IHTMLDocument2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_expando(self, p)
-proc put_charset*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_charset(self, v)
-proc get_charset*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_charset(self, p)
-proc put_defaultCharset*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defaultCharset(self, v)
-proc get_defaultCharset*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultCharset(self, p)
-proc get_mimeType*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_mimeType(self, p)
-proc get_fileSize*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileSize(self, p)
-proc get_fileCreatedDate*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileCreatedDate(self, p)
-proc get_fileModifiedDate*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileModifiedDate(self, p)
-proc get_fileUpdatedDate*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileUpdatedDate(self, p)
-proc get_security*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_security(self, p)
-proc get_protocol*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_protocol(self, p)
-proc get_nameProp*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nameProp(self, p)
-proc write*(self: ptr IHTMLDocument2, psarray: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.write(self, psarray)
-proc writeln*(self: ptr IHTMLDocument2, psarray: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.writeln(self, psarray)
-proc open*(self: ptr IHTMLDocument2, url: BSTR, name: VARIANT, features: VARIANT, replace: VARIANT, pomWindowResult: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.open(self, url, name, features, replace, pomWindowResult)
-proc close*(self: ptr IHTMLDocument2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.close(self)
-proc clear*(self: ptr IHTMLDocument2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clear(self)
-proc queryCommandSupported*(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandSupported(self, cmdID, pfRet)
-proc queryCommandEnabled*(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandEnabled(self, cmdID, pfRet)
-proc queryCommandState*(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandState(self, cmdID, pfRet)
-proc queryCommandIndeterm*(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandIndeterm(self, cmdID, pfRet)
-proc queryCommandText*(self: ptr IHTMLDocument2, cmdID: BSTR, pcmdText: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandText(self, cmdID, pcmdText)
-proc queryCommandValue*(self: ptr IHTMLDocument2, cmdID: BSTR, pcmdValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandValue(self, cmdID, pcmdValue)
-proc execCommand*(self: ptr IHTMLDocument2, cmdID: BSTR, showUI: VARIANT_BOOL, value: VARIANT, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.execCommand(self, cmdID, showUI, value, pfRet)
-proc execCommandShowHelp*(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.execCommandShowHelp(self, cmdID, pfRet)
-proc createElement*(self: ptr IHTMLDocument2, eTag: BSTR, newElem: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createElement(self, eTag, newElem)
-proc put_onhelp*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onhelp(self, v)
-proc get_onhelp*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onhelp(self, p)
-proc put_onclick*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onclick(self, v)
-proc get_onclick*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onclick(self, p)
-proc put_ondblclick*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondblclick(self, v)
-proc get_ondblclick*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondblclick(self, p)
-proc put_onkeyup*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeyup(self, v)
-proc get_onkeyup*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeyup(self, p)
-proc put_onkeydown*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeydown(self, v)
-proc get_onkeydown*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeydown(self, p)
-proc put_onkeypress*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeypress(self, v)
-proc get_onkeypress*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeypress(self, p)
-proc put_onmouseup*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseup(self, v)
-proc get_onmouseup*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseup(self, p)
-proc put_onmousedown*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmousedown(self, v)
-proc get_onmousedown*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmousedown(self, p)
-proc put_onmousemove*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmousemove(self, v)
-proc get_onmousemove*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmousemove(self, p)
-proc put_onmouseout*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseout(self, v)
-proc get_onmouseout*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseout(self, p)
-proc put_onmouseover*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseover(self, v)
-proc get_onmouseover*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseover(self, p)
-proc put_onreadystatechange*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreadystatechange(self, v)
-proc get_onreadystatechange*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreadystatechange(self, p)
-proc put_onafterupdate*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onafterupdate(self, v)
-proc get_onafterupdate*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onafterupdate(self, p)
-proc put_onrowexit*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onrowexit(self, v)
-proc get_onrowexit*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onrowexit(self, p)
-proc put_onrowenter*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onrowenter(self, v)
-proc get_onrowenter*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onrowenter(self, p)
-proc put_ondragstart*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragstart(self, v)
-proc get_ondragstart*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragstart(self, p)
-proc put_onselectstart*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onselectstart(self, v)
-proc get_onselectstart*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onselectstart(self, p)
-proc elementFromPoint*(self: ptr IHTMLDocument2, x: LONG, y: LONG, elementHit: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.elementFromPoint(self, x, y, elementHit)
-proc get_parentWindow*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentWindow(self, p)
-proc get_styleSheets*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLStyleSheetsCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_styleSheets(self, p)
-proc put_onbeforeupdate*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeupdate(self, v)
-proc get_onbeforeupdate*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeupdate(self, p)
-proc put_onerrorupdate*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerrorupdate(self, v)
-proc get_onerrorupdate*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerrorupdate(self, p)
-proc toString*(self: ptr IHTMLDocument2, String: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, String)
-proc createStyleSheet*(self: ptr IHTMLDocument2, bstrHref: BSTR, lIndex: LONG, ppnewStyleSheet: ptr ptr IHTMLStyleSheet): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createStyleSheet(self, bstrHref, lIndex, ppnewStyleSheet)
-proc releaseCapture*(self: ptr IHTMLDocument3): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.releaseCapture(self)
-proc recalc*(self: ptr IHTMLDocument3, fForce: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.recalc(self, fForce)
-proc createTextNode*(self: ptr IHTMLDocument3, text: BSTR, newTextNode: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createTextNode(self, text, newTextNode)
-proc get_documentElement*(self: ptr IHTMLDocument3, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_documentElement(self, p)
-proc get_uniqueID*(self: ptr IHTMLDocument3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_uniqueID(self, p)
-proc attachEvent*(self: ptr IHTMLDocument3, event: BSTR, pDisp: ptr IDispatch, pfResult: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.attachEvent(self, event, pDisp, pfResult)
-proc detachEvent*(self: ptr IHTMLDocument3, event: BSTR, pDisp: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.detachEvent(self, event, pDisp)
-proc put_onrowsdelete*(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onrowsdelete(self, v)
-proc get_onrowsdelete*(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onrowsdelete(self, p)
-proc put_onrowsinserted*(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onrowsinserted(self, v)
-proc get_onrowsinserted*(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onrowsinserted(self, p)
-proc put_oncellchange*(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncellchange(self, v)
-proc get_oncellchange*(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncellchange(self, p)
-proc put_ondatasetchanged*(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondatasetchanged(self, v)
-proc get_ondatasetchanged*(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondatasetchanged(self, p)
-proc put_ondataavailable*(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondataavailable(self, v)
-proc get_ondataavailable*(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondataavailable(self, p)
-proc put_ondatasetcomplete*(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondatasetcomplete(self, v)
-proc get_ondatasetcomplete*(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondatasetcomplete(self, p)
-proc put_onpropertychange*(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onpropertychange(self, v)
-proc get_onpropertychange*(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onpropertychange(self, p)
-proc put_dir*(self: ptr IHTMLDocument3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dir(self, v)
-proc get_dir*(self: ptr IHTMLDocument3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dir(self, p)
-proc put_oncontextmenu*(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncontextmenu(self, v)
-proc get_oncontextmenu*(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncontextmenu(self, p)
-proc put_onstop*(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onstop(self, v)
-proc get_onstop*(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onstop(self, p)
-proc createDocumentFragment*(self: ptr IHTMLDocument3, pNewDoc: ptr ptr IHTMLDocument2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createDocumentFragment(self, pNewDoc)
-proc get_parentDocument*(self: ptr IHTMLDocument3, p: ptr ptr IHTMLDocument2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentDocument(self, p)
-proc put_enableDownload*(self: ptr IHTMLDocument3, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_enableDownload(self, v)
-proc get_enableDownload*(self: ptr IHTMLDocument3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_enableDownload(self, p)
-proc put_baseUrl*(self: ptr IHTMLDocument3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_baseUrl(self, v)
-proc get_baseUrl*(self: ptr IHTMLDocument3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseUrl(self, p)
-proc get_childNodes*(self: ptr IHTMLDocument3, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_childNodes(self, p)
-proc put_inheritStyleSheets*(self: ptr IHTMLDocument3, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_inheritStyleSheets(self, v)
-proc get_inheritStyleSheets*(self: ptr IHTMLDocument3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_inheritStyleSheets(self, p)
-proc put_onbeforeeditfocus*(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeeditfocus(self, v)
-proc get_onbeforeeditfocus*(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeeditfocus(self, p)
-proc getElementsByName*(self: ptr IHTMLDocument3, v: BSTR, pelColl: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getElementsByName(self, v, pelColl)
-proc getElementById*(self: ptr IHTMLDocument3, v: BSTR, pel: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getElementById(self, v, pel)
-proc getElementsByTagName*(self: ptr IHTMLDocument3, v: BSTR, pelColl: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getElementsByTagName(self, v, pelColl)
-proc focus*(self: ptr IHTMLDocument4): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.focus(self)
-proc hasFocus*(self: ptr IHTMLDocument4, pfFocus: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasFocus(self, pfFocus)
-proc put_onselectionchange*(self: ptr IHTMLDocument4, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onselectionchange(self, v)
-proc get_onselectionchange*(self: ptr IHTMLDocument4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onselectionchange(self, p)
-proc get_namespaces*(self: ptr IHTMLDocument4, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_namespaces(self, p)
-proc createDocumentFromUrl*(self: ptr IHTMLDocument4, bstrUrl: BSTR, bstrOptions: BSTR, newDoc: ptr ptr IHTMLDocument2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createDocumentFromUrl(self, bstrUrl, bstrOptions, newDoc)
-proc put_media*(self: ptr IHTMLDocument4, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_media(self, v)
-proc get_media*(self: ptr IHTMLDocument4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_media(self, p)
-proc createEventObject*(self: ptr IHTMLDocument4, pvarEventObject: ptr VARIANT, ppEventObj: ptr ptr IHTMLEventObj): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createEventObject(self, pvarEventObject, ppEventObj)
-proc fireEvent*(self: ptr IHTMLDocument4, bstrEventName: BSTR, pvarEventObject: ptr VARIANT, pfCancelled: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.fireEvent(self, bstrEventName, pvarEventObject, pfCancelled)
-proc createRenderStyle*(self: ptr IHTMLDocument4, v: BSTR, ppIHTMLRenderStyle: ptr ptr IHTMLRenderStyle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createRenderStyle(self, v, ppIHTMLRenderStyle)
-proc put_oncontrolselect*(self: ptr IHTMLDocument4, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncontrolselect(self, v)
-proc get_oncontrolselect*(self: ptr IHTMLDocument4, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncontrolselect(self, p)
-proc get_URLUnencoded*(self: ptr IHTMLDocument4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_URLUnencoded(self, p)
-proc put_onmousewheel*(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmousewheel(self, v)
-proc get_onmousewheel*(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmousewheel(self, p)
-proc get_doctype*(self: ptr IHTMLDocument5, p: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_doctype(self, p)
-proc get_implementation*(self: ptr IHTMLDocument5, p: ptr ptr IHTMLDOMImplementation): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_implementation(self, p)
-proc createAttribute*(self: ptr IHTMLDocument5, bstrattrName: BSTR, ppattribute: ptr ptr IHTMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createAttribute(self, bstrattrName, ppattribute)
-proc createComment*(self: ptr IHTMLDocument5, bstrdata: BSTR, ppRetNode: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createComment(self, bstrdata, ppRetNode)
-proc put_onfocusin*(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfocusin(self, v)
-proc get_onfocusin*(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfocusin(self, p)
-proc put_onfocusout*(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfocusout(self, v)
-proc get_onfocusout*(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfocusout(self, p)
-proc put_onactivate*(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onactivate(self, v)
-proc get_onactivate*(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onactivate(self, p)
-proc put_ondeactivate*(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondeactivate(self, v)
-proc get_ondeactivate*(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondeactivate(self, p)
-proc put_onbeforeactivate*(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeactivate(self, v)
-proc get_onbeforeactivate*(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeactivate(self, p)
-proc put_onbeforedeactivate*(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforedeactivate(self, v)
-proc get_onbeforedeactivate*(self: ptr IHTMLDocument5, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforedeactivate(self, p)
-proc get_compatMode*(self: ptr IHTMLDocument5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_compatMode(self, p)
-proc get_compatible*(self: ptr IHTMLDocument6, p: ptr ptr IHTMLDocumentCompatibleInfoCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_compatible(self, p)
-proc get_documentMode*(self: ptr IHTMLDocument6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_documentMode(self, p)
-proc put_onstorage*(self: ptr IHTMLDocument6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onstorage(self, v)
-proc get_onstorage*(self: ptr IHTMLDocument6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onstorage(self, p)
-proc put_onstoragecommit*(self: ptr IHTMLDocument6, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onstoragecommit(self, v)
-proc get_onstoragecommit*(self: ptr IHTMLDocument6, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onstoragecommit(self, p)
-proc getElementById*(self: ptr IHTMLDocument6, bstrId: BSTR, ppRetElement: ptr ptr IHTMLElement2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getElementById(self, bstrId, ppRetElement)
-proc updateSettings*(self: ptr IHTMLDocument6): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.updateSettings(self)
-proc get_defaultView*(self: ptr IHTMLDocument7, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultView(self, p)
-proc createCDATASection*(self: ptr IHTMLDocument7, text: BSTR, newCDATASectionNode: ptr ptr IHTMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createCDATASection(self, text, newCDATASectionNode)
-proc getSelection*(self: ptr IHTMLDocument7, ppIHTMLSelection: ptr ptr IHTMLSelection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getSelection(self, ppIHTMLSelection)
-proc getElementsByTagNameNS*(self: ptr IHTMLDocument7, pvarNS: ptr VARIANT, bstrLocalName: BSTR, pelColl: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getElementsByTagNameNS(self, pvarNS, bstrLocalName, pelColl)
-proc createElementNS*(self: ptr IHTMLDocument7, pvarNS: ptr VARIANT, bstrTag: BSTR, newElem: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createElementNS(self, pvarNS, bstrTag, newElem)
-proc createAttributeNS*(self: ptr IHTMLDocument7, pvarNS: ptr VARIANT, bstrAttrName: BSTR, ppAttribute: ptr ptr IHTMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createAttributeNS(self, pvarNS, bstrAttrName, ppAttribute)
-proc put_onmsthumbnailclick*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsthumbnailclick(self, v)
-proc get_onmsthumbnailclick*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsthumbnailclick(self, p)
-proc get_characterSet*(self: ptr IHTMLDocument7, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_characterSet(self, p)
-proc createElement*(self: ptr IHTMLDocument7, bstrTag: BSTR, newElem: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createElement(self, bstrTag, newElem)
-proc createAttribute*(self: ptr IHTMLDocument7, bstrAttrName: BSTR, ppAttribute: ptr ptr IHTMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createAttribute(self, bstrAttrName, ppAttribute)
-proc getElementsByClassName*(self: ptr IHTMLDocument7, v: BSTR, pel: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getElementsByClassName(self, v, pel)
-proc createProcessingInstruction*(self: ptr IHTMLDocument7, bstrTarget: BSTR, bstrData: BSTR, newProcessingInstruction: ptr ptr IDOMProcessingInstruction): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createProcessingInstruction(self, bstrTarget, bstrData, newProcessingInstruction)
-proc adoptNode*(self: ptr IHTMLDocument7, pNodeSource: ptr IHTMLDOMNode, ppNodeDest: ptr ptr IHTMLDOMNode3): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.adoptNode(self, pNodeSource, ppNodeDest)
-proc put_onmssitemodejumplistitemremoved*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmssitemodejumplistitemremoved(self, v)
-proc get_onmssitemodejumplistitemremoved*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmssitemodejumplistitemremoved(self, p)
-proc get_all*(self: ptr IHTMLDocument7, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_all(self, p)
-proc get_inputEncoding*(self: ptr IHTMLDocument7, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_inputEncoding(self, p)
-proc get_xmlEncoding*(self: ptr IHTMLDocument7, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_xmlEncoding(self, p)
-proc put_xmlStandalone*(self: ptr IHTMLDocument7, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_xmlStandalone(self, v)
-proc get_xmlStandalone*(self: ptr IHTMLDocument7, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_xmlStandalone(self, p)
-proc put_xmlVersion*(self: ptr IHTMLDocument7, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_xmlVersion(self, v)
-proc get_xmlVersion*(self: ptr IHTMLDocument7, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_xmlVersion(self, p)
-proc hasAttributes*(self: ptr IHTMLDocument7, pfHasAttributes: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasAttributes(self, pfHasAttributes)
-proc put_onabort*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onabort(self, v)
-proc get_onabort*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onabort(self, p)
-proc put_onblur*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onblur(self, v)
-proc get_onblur*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onblur(self, p)
-proc put_oncanplay*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncanplay(self, v)
-proc get_oncanplay*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncanplay(self, p)
-proc put_oncanplaythrough*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncanplaythrough(self, v)
-proc get_oncanplaythrough*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncanplaythrough(self, p)
-proc put_onchange*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onchange(self, v)
-proc get_onchange*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onchange(self, p)
-proc put_ondrag*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondrag(self, v)
-proc get_ondrag*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondrag(self, p)
-proc put_ondragend*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragend(self, v)
-proc get_ondragend*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragend(self, p)
-proc put_ondragenter*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragenter(self, v)
-proc get_ondragenter*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragenter(self, p)
-proc put_ondragleave*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragleave(self, v)
-proc get_ondragleave*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragleave(self, p)
-proc put_ondragover*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragover(self, v)
-proc get_ondragover*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragover(self, p)
-proc put_ondrop*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondrop(self, v)
-proc get_ondrop*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondrop(self, p)
-proc put_ondurationchange*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondurationchange(self, v)
-proc get_ondurationchange*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondurationchange(self, p)
-proc put_onemptied*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onemptied(self, v)
-proc get_onemptied*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onemptied(self, p)
-proc put_onended*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onended(self, v)
-proc get_onended*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onended(self, p)
-proc put_onerror*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerror(self, v)
-proc get_onerror*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerror(self, p)
-proc put_onfocus*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfocus(self, v)
-proc get_onfocus*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfocus(self, p)
-proc put_oninput*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oninput(self, v)
-proc get_oninput*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oninput(self, p)
-proc put_onload*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onload(self, v)
-proc get_onload*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onload(self, p)
-proc put_onloadeddata*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onloadeddata(self, v)
-proc get_onloadeddata*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onloadeddata(self, p)
-proc put_onloadedmetadata*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onloadedmetadata(self, v)
-proc get_onloadedmetadata*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onloadedmetadata(self, p)
-proc put_onloadstart*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onloadstart(self, v)
-proc get_onloadstart*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onloadstart(self, p)
-proc put_onpause*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onpause(self, v)
-proc get_onpause*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onpause(self, p)
-proc put_onplay*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onplay(self, v)
-proc get_onplay*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onplay(self, p)
-proc put_onplaying*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onplaying(self, v)
-proc get_onplaying*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onplaying(self, p)
-proc put_onprogress*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onprogress(self, v)
-proc get_onprogress*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onprogress(self, p)
-proc put_onratechange*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onratechange(self, v)
-proc get_onratechange*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onratechange(self, p)
-proc put_onreset*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreset(self, v)
-proc get_onreset*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreset(self, p)
-proc put_onscroll*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onscroll(self, v)
-proc get_onscroll*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onscroll(self, p)
-proc put_onseeked*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onseeked(self, v)
-proc get_onseeked*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onseeked(self, p)
-proc put_onseeking*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onseeking(self, v)
-proc get_onseeking*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onseeking(self, p)
-proc put_onselect*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onselect(self, v)
-proc get_onselect*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onselect(self, p)
-proc put_onstalled*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onstalled(self, v)
-proc get_onstalled*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onstalled(self, p)
-proc put_onsubmit*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onsubmit(self, v)
-proc get_onsubmit*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onsubmit(self, p)
-proc put_onsuspend*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onsuspend(self, v)
-proc get_onsuspend*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onsuspend(self, p)
-proc put_ontimeupdate*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ontimeupdate(self, v)
-proc get_ontimeupdate*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ontimeupdate(self, p)
-proc put_onvolumechange*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onvolumechange(self, v)
-proc get_onvolumechange*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onvolumechange(self, p)
-proc put_onwaiting*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onwaiting(self, v)
-proc get_onwaiting*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onwaiting(self, p)
-proc normalize*(self: ptr IHTMLDocument7): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.normalize(self)
-proc importNode*(self: ptr IHTMLDocument7, pNodeSource: ptr IHTMLDOMNode, fDeep: VARIANT_BOOL, ppNodeDest: ptr ptr IHTMLDOMNode3): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.importNode(self, pNodeSource, fDeep, ppNodeDest)
-proc get_parentWindow*(self: ptr IHTMLDocument7, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentWindow(self, p)
-proc putref_body*(self: ptr IHTMLDocument7, v: ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_body(self, v)
-proc get_body*(self: ptr IHTMLDocument7, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_body(self, p)
-proc get_head*(self: ptr IHTMLDocument7, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_head(self, p)
-proc put_onmscontentzoom*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmscontentzoom(self, v)
-proc get_onmscontentzoom*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmscontentzoom(self, p)
-proc put_onmspointerdown*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerdown(self, v)
-proc get_onmspointerdown*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerdown(self, p)
-proc put_onmspointermove*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointermove(self, v)
-proc get_onmspointermove*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointermove(self, p)
-proc put_onmspointerup*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerup(self, v)
-proc get_onmspointerup*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerup(self, p)
-proc put_onmspointerover*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerover(self, v)
-proc get_onmspointerover*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerover(self, p)
-proc put_onmspointerout*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerout(self, v)
-proc get_onmspointerout*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerout(self, p)
-proc put_onmspointercancel*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointercancel(self, v)
-proc get_onmspointercancel*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointercancel(self, p)
-proc put_onmspointerhover*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmspointerhover(self, v)
-proc get_onmspointerhover*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmspointerhover(self, p)
-proc put_onmsgesturestart*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturestart(self, v)
-proc get_onmsgesturestart*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturestart(self, p)
-proc put_onmsgesturechange*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturechange(self, v)
-proc get_onmsgesturechange*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturechange(self, p)
-proc put_onmsgestureend*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgestureend(self, v)
-proc get_onmsgestureend*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgestureend(self, p)
-proc put_onmsgesturehold*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturehold(self, v)
-proc get_onmsgesturehold*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturehold(self, p)
-proc put_onmsgesturetap*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturetap(self, v)
-proc get_onmsgesturetap*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturetap(self, p)
-proc put_onmsgesturedoubletap*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsgesturedoubletap(self, v)
-proc get_onmsgesturedoubletap*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsgesturedoubletap(self, p)
-proc put_onmsinertiastart*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsinertiastart(self, v)
-proc get_onmsinertiastart*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsinertiastart(self, p)
-proc elementsFromPoint*(self: ptr IHTMLDocument8, x: float32, y: float32, elementsHit: ptr ptr IHTMLDOMChildrenCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.elementsFromPoint(self, x, y, elementsHit)
-proc elementsFromRect*(self: ptr IHTMLDocument8, left: float32, top: float32, width: float32, height: float32, elementsHit: ptr ptr IHTMLDOMChildrenCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.elementsFromRect(self, left, top, width, height, elementsHit)
-proc put_onmsmanipulationstatechanged*(self: ptr IHTMLDocument8, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmsmanipulationstatechanged(self, v)
-proc get_onmsmanipulationstatechanged*(self: ptr IHTMLDocument8, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmsmanipulationstatechanged(self, p)
-proc put_msCapsLockWarningOff*(self: ptr IHTMLDocument8, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msCapsLockWarningOff(self, v)
-proc get_msCapsLockWarningOff*(self: ptr IHTMLDocument8, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msCapsLockWarningOff(self, p)
-proc createEvent*(self: ptr IDocumentEvent, eventType: BSTR, ppEvent: ptr ptr IDOMEvent): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createEvent(self, eventType, ppEvent)
-proc createRange*(self: ptr IDocumentRange, ppIHTMLDOMRange: ptr ptr IHTMLDOMRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createRange(self, ppIHTMLDOMRange)
-proc querySelector*(self: ptr IDocumentSelector, v: BSTR, pel: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.querySelector(self, v, pel)
-proc querySelectorAll*(self: ptr IDocumentSelector, v: BSTR, pel: ptr ptr IHTMLDOMChildrenCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.querySelectorAll(self, v, pel)
-proc createNodeIterator*(self: ptr IDocumentTraversal, pRootNode: ptr IDispatch, ulWhatToShow: LONG, pFilter: ptr VARIANT, fEntityReferenceExpansion: VARIANT_BOOL, ppNodeIterator: ptr ptr IDOMNodeIterator): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createNodeIterator(self, pRootNode, ulWhatToShow, pFilter, fEntityReferenceExpansion, ppNodeIterator)
-proc createTreeWalker*(self: ptr IDocumentTraversal, pRootNode: ptr IDispatch, ulWhatToShow: LONG, pFilter: ptr VARIANT, fEntityReferenceExpansion: VARIANT_BOOL, ppTreeWalker: ptr ptr IDOMTreeWalker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createTreeWalker(self, pRootNode, ulWhatToShow, pFilter, fEntityReferenceExpansion, ppTreeWalker)
-proc put_URL*(self: ptr IWebBridge, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_URL(self, v)
-proc get_URL*(self: ptr IWebBridge, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_URL(self, p)
-proc put_Scrollbar*(self: ptr IWebBridge, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Scrollbar(self, v)
-proc get_Scrollbar*(self: ptr IWebBridge, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Scrollbar(self, p)
-proc put_embed*(self: ptr IWebBridge, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_embed(self, v)
-proc get_embed*(self: ptr IWebBridge, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_embed(self, p)
-proc get_event*(self: ptr IWebBridge, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_event(self, p)
-proc get_readyState*(self: ptr IWebBridge, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
-proc AboutBox*(self: ptr IWebBridge): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AboutBox(self)
-proc raiseEvent*(self: ptr IWBScriptControl, name: BSTR, eventData: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.raiseEvent(self, name, eventData)
-proc bubbleEvent*(self: ptr IWBScriptControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.bubbleEvent(self)
-proc setContextMenu*(self: ptr IWBScriptControl, menuItemPairs: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setContextMenu(self, menuItemPairs)
-proc put_selectableContent*(self: ptr IWBScriptControl, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selectableContent(self, v)
-proc get_selectableContent*(self: ptr IWBScriptControl, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selectableContent(self, p)
-proc get_frozen*(self: ptr IWBScriptControl, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frozen(self, p)
-proc put_scrollbar*(self: ptr IWBScriptControl, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollbar(self, v)
-proc get_scrollbar*(self: ptr IWBScriptControl, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollbar(self, p)
-proc get_version*(self: ptr IWBScriptControl, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_version(self, p)
-proc get_visibility*(self: ptr IWBScriptControl, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_visibility(self, p)
-proc put_onvisibilitychange*(self: ptr IWBScriptControl, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onvisibilitychange(self, v)
-proc get_onvisibilitychange*(self: ptr IWBScriptControl, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onvisibilitychange(self, p)
-proc put_hidden*(self: ptr IHTMLEmbedElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hidden(self, v)
-proc get_hidden*(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hidden(self, p)
-proc get_palette*(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_palette(self, p)
-proc get_pluginspage*(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pluginspage(self, p)
-proc put_src*(self: ptr IHTMLEmbedElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
-proc get_src*(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
-proc put_units*(self: ptr IHTMLEmbedElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_units(self, v)
-proc get_units*(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_units(self, p)
-proc put_name*(self: ptr IHTMLEmbedElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_width*(self: ptr IHTMLEmbedElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLEmbedElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_height*(self: ptr IHTMLEmbedElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLEmbedElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_src*(self: ptr IHTMLEmbedElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
-proc get_src*(self: ptr IHTMLEmbedElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
-proc get_pluginspage*(self: ptr IHTMLEmbedElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pluginspage(self, p)
-proc put_length*(self: ptr IHTMLAreasCollection, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_length(self, v)
-proc get_length*(self: ptr IHTMLAreasCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IHTMLAreasCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc item*(self: ptr IHTMLAreasCollection, name: VARIANT, index: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, name, index, pdisp)
-proc tags*(self: ptr IHTMLAreasCollection, tagName: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.tags(self, tagName, pdisp)
-proc add*(self: ptr IHTMLAreasCollection, element: ptr IHTMLElement, before: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.add(self, element, before)
-proc remove*(self: ptr IHTMLAreasCollection, index: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.remove(self, index)
-proc urns*(self: ptr IHTMLAreasCollection2, urn: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.urns(self, urn, pdisp)
-proc namedItem*(self: ptr IHTMLAreasCollection3, name: BSTR, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.namedItem(self, name, pdisp)
-proc get_length*(self: ptr IHTMLAreasCollection4, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc item*(self: ptr IHTMLAreasCollection4, index: LONG, pNode: ptr ptr IHTMLElement2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, pNode)
-proc namedItem*(self: ptr IHTMLAreasCollection4, name: BSTR, pNode: ptr ptr IHTMLElement2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.namedItem(self, name, pNode)
-proc get_areas*(self: ptr IHTMLMapElement, p: ptr ptr IHTMLAreasCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_areas(self, p)
-proc put_name*(self: ptr IHTMLMapElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLMapElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_shape*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_shape(self, v)
-proc get_shape*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_shape(self, p)
-proc put_coords*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_coords(self, v)
-proc get_coords*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_coords(self, p)
-proc put_href*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_href(self, v)
-proc get_href*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc put_target*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_target(self, v)
-proc get_target*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_target(self, p)
-proc put_alt*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_alt(self, v)
-proc get_alt*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_alt(self, p)
-proc put_noHref*(self: ptr IHTMLAreaElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_noHref(self, v)
-proc get_noHref*(self: ptr IHTMLAreaElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_noHref(self, p)
-proc put_host*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_host(self, v)
-proc get_host*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_host(self, p)
-proc put_hostname*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hostname(self, v)
-proc get_hostname*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hostname(self, p)
-proc put_pathname*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pathname(self, v)
-proc get_pathname*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pathname(self, p)
-proc put_port*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_port(self, v)
-proc get_port*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_port(self, p)
-proc put_protocol*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_protocol(self, v)
-proc get_protocol*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_protocol(self, p)
-proc put_search*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_search(self, v)
-proc get_search*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_search(self, p)
-proc put_hash*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hash(self, v)
-proc get_hash*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hash(self, p)
-proc put_onblur*(self: ptr IHTMLAreaElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onblur(self, v)
-proc get_onblur*(self: ptr IHTMLAreaElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onblur(self, p)
-proc put_onfocus*(self: ptr IHTMLAreaElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfocus(self, v)
-proc get_onfocus*(self: ptr IHTMLAreaElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfocus(self, p)
-proc put_tabIndex*(self: ptr IHTMLAreaElement, v: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_tabIndex(self, v)
-proc get_tabIndex*(self: ptr IHTMLAreaElement, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tabIndex(self, p)
-proc focus*(self: ptr IHTMLAreaElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.focus(self)
-proc blur*(self: ptr IHTMLAreaElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.blur(self)
-proc put_shape*(self: ptr IHTMLAreaElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_shape(self, v)
-proc get_shape*(self: ptr IHTMLAreaElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_shape(self, p)
-proc put_coords*(self: ptr IHTMLAreaElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_coords(self, v)
-proc get_coords*(self: ptr IHTMLAreaElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_coords(self, p)
-proc put_href*(self: ptr IHTMLAreaElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_href(self, v)
-proc get_href*(self: ptr IHTMLAreaElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc put_align*(self: ptr IHTMLTableCaption, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLTableCaption, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_vAlign*(self: ptr IHTMLTableCaption, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vAlign(self, v)
-proc get_vAlign*(self: ptr IHTMLTableCaption, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vAlign(self, p)
-proc put_text*(self: ptr IHTMLCommentElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_text(self, v)
-proc get_text*(self: ptr IHTMLCommentElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_text(self, p)
-proc put_atomic*(self: ptr IHTMLCommentElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_atomic(self, v)
-proc get_atomic*(self: ptr IHTMLCommentElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_atomic(self, p)
-proc put_data*(self: ptr IHTMLCommentElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_data(self, v)
-proc get_data*(self: ptr IHTMLCommentElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_data(self, p)
-proc get_length*(self: ptr IHTMLCommentElement2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc substringData*(self: ptr IHTMLCommentElement2, offset: LONG, Count: LONG, pbstrsubString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.substringData(self, offset, Count, pbstrsubString)
-proc appendData*(self: ptr IHTMLCommentElement2, bstrstring: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendData(self, bstrstring)
-proc insertData*(self: ptr IHTMLCommentElement2, offset: LONG, bstrstring: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertData(self, offset, bstrstring)
-proc deleteData*(self: ptr IHTMLCommentElement2, offset: LONG, Count: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteData(self, offset, Count)
-proc replaceData*(self: ptr IHTMLCommentElement2, offset: LONG, Count: LONG, bstrstring: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceData(self, offset, Count, bstrstring)
-proc substringData*(self: ptr IHTMLCommentElement3, offset: LONG, Count: LONG, pbstrsubString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.substringData(self, offset, Count, pbstrsubString)
-proc insertData*(self: ptr IHTMLCommentElement3, offset: LONG, bstrstring: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertData(self, offset, bstrstring)
-proc deleteData*(self: ptr IHTMLCommentElement3, offset: LONG, Count: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteData(self, offset, Count)
-proc replaceData*(self: ptr IHTMLCommentElement3, offset: LONG, Count: LONG, bstrstring: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceData(self, offset, Count, bstrstring)
-proc put_cite*(self: ptr IHTMLPhraseElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cite(self, v)
-proc get_cite*(self: ptr IHTMLPhraseElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cite(self, p)
-proc put_dateTime*(self: ptr IHTMLPhraseElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dateTime(self, v)
-proc get_dateTime*(self: ptr IHTMLPhraseElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dateTime(self, p)
-proc put_cite*(self: ptr IHTMLPhraseElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cite(self, v)
-proc get_cite*(self: ptr IHTMLPhraseElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cite(self, p)
-proc put_cols*(self: ptr IHTMLTable, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cols(self, v)
-proc get_cols*(self: ptr IHTMLTable, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cols(self, p)
-proc put_border*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_border(self, v)
-proc get_border*(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_border(self, p)
-proc put_frame*(self: ptr IHTMLTable, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_frame(self, v)
-proc get_frame*(self: ptr IHTMLTable, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frame(self, p)
-proc put_rules*(self: ptr IHTMLTable, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rules(self, v)
-proc get_rules*(self: ptr IHTMLTable, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rules(self, p)
-proc put_cellSpacing*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cellSpacing(self, v)
-proc get_cellSpacing*(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cellSpacing(self, p)
-proc put_cellPadding*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cellPadding(self, v)
-proc get_cellPadding*(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cellPadding(self, p)
-proc put_background*(self: ptr IHTMLTable, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_background(self, v)
-proc get_background*(self: ptr IHTMLTable, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_background(self, p)
-proc put_bgColor*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bgColor(self, v)
-proc get_bgColor*(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bgColor(self, p)
-proc put_borderColor*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColor(self, v)
-proc get_borderColor*(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColor(self, p)
-proc put_borderColorLight*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColorLight(self, v)
-proc get_borderColorLight*(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColorLight(self, p)
-proc put_borderColorDark*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColorDark(self, v)
-proc get_borderColorDark*(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColorDark(self, p)
-proc put_align*(self: ptr IHTMLTable, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLTable, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc refresh*(self: ptr IHTMLTable): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.refresh(self)
-proc get_rows*(self: ptr IHTMLTable, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rows(self, p)
-proc put_width*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_height*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_dataPageSize*(self: ptr IHTMLTable, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dataPageSize(self, v)
-proc get_dataPageSize*(self: ptr IHTMLTable, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dataPageSize(self, p)
-proc nextPage*(self: ptr IHTMLTable): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.nextPage(self)
-proc previousPage*(self: ptr IHTMLTable): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.previousPage(self)
-proc get_tHead*(self: ptr IHTMLTable, p: ptr ptr IHTMLTableSection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tHead(self, p)
-proc get_tFoot*(self: ptr IHTMLTable, p: ptr ptr IHTMLTableSection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tFoot(self, p)
-proc get_tBodies*(self: ptr IHTMLTable, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tBodies(self, p)
-proc get_caption*(self: ptr IHTMLTable, p: ptr ptr IHTMLTableCaption): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_caption(self, p)
-proc createTHead*(self: ptr IHTMLTable, head: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createTHead(self, head)
-proc deleteTHead*(self: ptr IHTMLTable): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteTHead(self)
-proc createTFoot*(self: ptr IHTMLTable, foot: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createTFoot(self, foot)
-proc deleteTFoot*(self: ptr IHTMLTable): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteTFoot(self)
-proc createCaption*(self: ptr IHTMLTable, caption: ptr ptr IHTMLTableCaption): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createCaption(self, caption)
-proc deleteCaption*(self: ptr IHTMLTable): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteCaption(self)
-proc insertRow*(self: ptr IHTMLTable, index: LONG, row: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertRow(self, index, row)
-proc deleteRow*(self: ptr IHTMLTable, index: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteRow(self, index)
-proc get_readyState*(self: ptr IHTMLTable, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
-proc put_onreadystatechange*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreadystatechange(self, v)
-proc get_onreadystatechange*(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreadystatechange(self, p)
-proc firstPage*(self: ptr IHTMLTable2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.firstPage(self)
-proc lastPage*(self: ptr IHTMLTable2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.lastPage(self)
-proc get_cells*(self: ptr IHTMLTable2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cells(self, p)
-proc moveRow*(self: ptr IHTMLTable2, indexFrom: LONG, indexTo: LONG, row: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveRow(self, indexFrom, indexTo, row)
-proc put_summary*(self: ptr IHTMLTable3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_summary(self, v)
-proc get_summary*(self: ptr IHTMLTable3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_summary(self, p)
-proc putref_tHead*(self: ptr IHTMLTable4, v: ptr IHTMLTableSection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_tHead(self, v)
-proc get_tHead*(self: ptr IHTMLTable4, p: ptr ptr IHTMLTableSection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tHead(self, p)
-proc putref_tFoot*(self: ptr IHTMLTable4, v: ptr IHTMLTableSection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_tFoot(self, v)
-proc get_tFoot*(self: ptr IHTMLTable4, p: ptr ptr IHTMLTableSection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tFoot(self, p)
-proc putref_caption*(self: ptr IHTMLTable4, v: ptr IHTMLTableCaption): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_caption(self, v)
-proc get_caption*(self: ptr IHTMLTable4, p: ptr ptr IHTMLTableCaption): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_caption(self, p)
-proc insertRow*(self: ptr IHTMLTable4, index: LONG, row: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertRow(self, index, row)
-proc deleteRow*(self: ptr IHTMLTable4, index: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteRow(self, index)
-proc createTBody*(self: ptr IHTMLTable4, tbody: ptr ptr IHTMLTableSection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createTBody(self, tbody)
-proc put_span*(self: ptr IHTMLTableCol, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_span(self, v)
-proc get_span*(self: ptr IHTMLTableCol, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_span(self, p)
-proc put_width*(self: ptr IHTMLTableCol, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLTableCol, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_align*(self: ptr IHTMLTableCol, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLTableCol, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_vAlign*(self: ptr IHTMLTableCol, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vAlign(self, v)
-proc get_vAlign*(self: ptr IHTMLTableCol, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vAlign(self, p)
-proc put_ch*(self: ptr IHTMLTableCol2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ch(self, v)
-proc get_ch*(self: ptr IHTMLTableCol2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ch(self, p)
-proc put_chOff*(self: ptr IHTMLTableCol2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_chOff(self, v)
-proc get_chOff*(self: ptr IHTMLTableCol2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_chOff(self, p)
-proc put_ch*(self: ptr IHTMLTableCol3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ch(self, v)
-proc get_ch*(self: ptr IHTMLTableCol3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ch(self, p)
-proc put_chOff*(self: ptr IHTMLTableCol3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_chOff(self, v)
-proc get_chOff*(self: ptr IHTMLTableCol3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_chOff(self, p)
-proc put_align*(self: ptr IHTMLTableSection, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLTableSection, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_vAlign*(self: ptr IHTMLTableSection, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vAlign(self, v)
-proc get_vAlign*(self: ptr IHTMLTableSection, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vAlign(self, p)
-proc put_bgColor*(self: ptr IHTMLTableSection, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bgColor(self, v)
-proc get_bgColor*(self: ptr IHTMLTableSection, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bgColor(self, p)
-proc get_rows*(self: ptr IHTMLTableSection, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rows(self, p)
-proc insertRow*(self: ptr IHTMLTableSection, index: LONG, row: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertRow(self, index, row)
-proc deleteRow*(self: ptr IHTMLTableSection, index: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteRow(self, index)
-proc moveRow*(self: ptr IHTMLTableSection2, indexFrom: LONG, indexTo: LONG, row: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveRow(self, indexFrom, indexTo, row)
-proc put_ch*(self: ptr IHTMLTableSection3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ch(self, v)
-proc get_ch*(self: ptr IHTMLTableSection3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ch(self, p)
-proc put_chOff*(self: ptr IHTMLTableSection3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_chOff(self, v)
-proc get_chOff*(self: ptr IHTMLTableSection3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_chOff(self, p)
-proc put_ch*(self: ptr IHTMLTableSection4, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ch(self, v)
-proc get_ch*(self: ptr IHTMLTableSection4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ch(self, p)
-proc put_chOff*(self: ptr IHTMLTableSection4, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_chOff(self, v)
-proc get_chOff*(self: ptr IHTMLTableSection4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_chOff(self, p)
-proc insertRow*(self: ptr IHTMLTableSection4, index: LONG, row: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertRow(self, index, row)
-proc deleteRow*(self: ptr IHTMLTableSection4, index: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteRow(self, index)
-proc put_align*(self: ptr IHTMLTableRow, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLTableRow, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_vAlign*(self: ptr IHTMLTableRow, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vAlign(self, v)
-proc get_vAlign*(self: ptr IHTMLTableRow, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vAlign(self, p)
-proc put_bgColor*(self: ptr IHTMLTableRow, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bgColor(self, v)
-proc get_bgColor*(self: ptr IHTMLTableRow, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bgColor(self, p)
-proc put_borderColor*(self: ptr IHTMLTableRow, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColor(self, v)
-proc get_borderColor*(self: ptr IHTMLTableRow, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColor(self, p)
-proc put_borderColorLight*(self: ptr IHTMLTableRow, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColorLight(self, v)
-proc get_borderColorLight*(self: ptr IHTMLTableRow, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColorLight(self, p)
-proc put_borderColorDark*(self: ptr IHTMLTableRow, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColorDark(self, v)
-proc get_borderColorDark*(self: ptr IHTMLTableRow, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColorDark(self, p)
-proc get_rowIndex*(self: ptr IHTMLTableRow, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rowIndex(self, p)
-proc get_sectionRowIndex*(self: ptr IHTMLTableRow, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_sectionRowIndex(self, p)
-proc get_cells*(self: ptr IHTMLTableRow, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cells(self, p)
-proc insertCell*(self: ptr IHTMLTableRow, index: LONG, row: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertCell(self, index, row)
-proc deleteCell*(self: ptr IHTMLTableRow, index: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteCell(self, index)
-proc put_height*(self: ptr IHTMLTableRow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLTableRow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_ch*(self: ptr IHTMLTableRow3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ch(self, v)
-proc get_ch*(self: ptr IHTMLTableRow3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ch(self, p)
-proc put_chOff*(self: ptr IHTMLTableRow3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_chOff(self, v)
-proc get_chOff*(self: ptr IHTMLTableRow3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_chOff(self, p)
-proc put_ch*(self: ptr IHTMLTableRow4, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ch(self, v)
-proc get_ch*(self: ptr IHTMLTableRow4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ch(self, p)
-proc put_chOff*(self: ptr IHTMLTableRow4, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_chOff(self, v)
-proc get_chOff*(self: ptr IHTMLTableRow4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_chOff(self, p)
-proc insertCell*(self: ptr IHTMLTableRow4, index: LONG, row: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertCell(self, index, row)
-proc deleteCell*(self: ptr IHTMLTableRow4, index: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteCell(self, index)
-proc get_clientHeight*(self: ptr IHTMLTableRowMetrics, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientHeight(self, p)
-proc get_clientWidth*(self: ptr IHTMLTableRowMetrics, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientWidth(self, p)
-proc get_clientTop*(self: ptr IHTMLTableRowMetrics, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientTop(self, p)
-proc get_clientLeft*(self: ptr IHTMLTableRowMetrics, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientLeft(self, p)
-proc put_rowSpan*(self: ptr IHTMLTableCell, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rowSpan(self, v)
-proc get_rowSpan*(self: ptr IHTMLTableCell, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rowSpan(self, p)
-proc put_colSpan*(self: ptr IHTMLTableCell, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_colSpan(self, v)
-proc get_colSpan*(self: ptr IHTMLTableCell, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_colSpan(self, p)
-proc put_align*(self: ptr IHTMLTableCell, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLTableCell, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_vAlign*(self: ptr IHTMLTableCell, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vAlign(self, v)
-proc get_vAlign*(self: ptr IHTMLTableCell, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vAlign(self, p)
-proc put_bgColor*(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bgColor(self, v)
-proc get_bgColor*(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bgColor(self, p)
-proc put_noWrap*(self: ptr IHTMLTableCell, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_noWrap(self, v)
-proc get_noWrap*(self: ptr IHTMLTableCell, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_noWrap(self, p)
-proc put_background*(self: ptr IHTMLTableCell, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_background(self, v)
-proc get_background*(self: ptr IHTMLTableCell, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_background(self, p)
-proc put_borderColor*(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColor(self, v)
-proc get_borderColor*(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColor(self, p)
-proc put_borderColorLight*(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColorLight(self, v)
-proc get_borderColorLight*(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColorLight(self, p)
-proc put_borderColorDark*(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColorDark(self, v)
-proc get_borderColorDark*(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColorDark(self, p)
-proc put_width*(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_height*(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc get_cellIndex*(self: ptr IHTMLTableCell, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cellIndex(self, p)
-proc put_abbr*(self: ptr IHTMLTableCell2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_abbr(self, v)
-proc get_abbr*(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_abbr(self, p)
-proc put_axis*(self: ptr IHTMLTableCell2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_axis(self, v)
-proc get_axis*(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_axis(self, p)
-proc put_ch*(self: ptr IHTMLTableCell2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ch(self, v)
-proc get_ch*(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ch(self, p)
-proc put_chOff*(self: ptr IHTMLTableCell2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_chOff(self, v)
-proc get_chOff*(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_chOff(self, p)
-proc put_headers*(self: ptr IHTMLTableCell2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_headers(self, v)
-proc get_headers*(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_headers(self, p)
-proc put_scope*(self: ptr IHTMLTableCell2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scope(self, v)
-proc get_scope*(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scope(self, p)
-proc put_ch*(self: ptr IHTMLTableCell3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ch(self, v)
-proc get_ch*(self: ptr IHTMLTableCell3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ch(self, p)
-proc put_chOff*(self: ptr IHTMLTableCell3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_chOff(self, v)
-proc get_chOff*(self: ptr IHTMLTableCell3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_chOff(self, p)
-proc put_src*(self: ptr IHTMLScriptElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
-proc get_src*(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
-proc put_htmlFor*(self: ptr IHTMLScriptElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_htmlFor(self, v)
-proc get_htmlFor*(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_htmlFor(self, p)
-proc put_event*(self: ptr IHTMLScriptElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_event(self, v)
-proc get_event*(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_event(self, p)
-proc put_text*(self: ptr IHTMLScriptElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_text(self, v)
-proc get_text*(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_text(self, p)
-proc put_defer*(self: ptr IHTMLScriptElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defer(self, v)
-proc get_defer*(self: ptr IHTMLScriptElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defer(self, p)
-proc get_readyState*(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
-proc put_onerror*(self: ptr IHTMLScriptElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerror(self, v)
-proc get_onerror*(self: ptr IHTMLScriptElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerror(self, p)
-proc put_type*(self: ptr IHTMLScriptElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_charset*(self: ptr IHTMLScriptElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_charset(self, v)
-proc get_charset*(self: ptr IHTMLScriptElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_charset(self, p)
-proc put_src*(self: ptr IHTMLScriptElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
-proc get_src*(self: ptr IHTMLScriptElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
-proc get_usedCharset*(self: ptr IHTMLScriptElement4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_usedCharset(self, p)
-proc get_object*(self: ptr IHTMLObjectElement, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_object(self, p)
-proc get_classid*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_classid(self, p)
-proc get_data*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_data(self, p)
-proc putref_recordset*(self: ptr IHTMLObjectElement, v: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_recordset(self, v)
-proc get_recordset*(self: ptr IHTMLObjectElement, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_recordset(self, p)
-proc put_align*(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_name*(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_codeBase*(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_codeBase(self, v)
-proc get_codeBase*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_codeBase(self, p)
-proc put_codeType*(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_codeType(self, v)
-proc get_codeType*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_codeType(self, p)
-proc put_code*(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_code(self, v)
-proc get_code*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_code(self, p)
-proc get_BaseHref*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_BaseHref(self, p)
-proc put_type*(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc get_form*(self: ptr IHTMLObjectElement, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc put_width*(self: ptr IHTMLObjectElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLObjectElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_height*(self: ptr IHTMLObjectElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLObjectElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc get_readyState*(self: ptr IHTMLObjectElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
-proc put_onreadystatechange*(self: ptr IHTMLObjectElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreadystatechange(self, v)
-proc get_onreadystatechange*(self: ptr IHTMLObjectElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreadystatechange(self, p)
-proc put_onerror*(self: ptr IHTMLObjectElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerror(self, v)
-proc get_onerror*(self: ptr IHTMLObjectElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerror(self, p)
-proc put_altHtml*(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_altHtml(self, v)
-proc get_altHtml*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_altHtml(self, p)
-proc put_vspace*(self: ptr IHTMLObjectElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vspace(self, v)
-proc get_vspace*(self: ptr IHTMLObjectElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vspace(self, p)
-proc put_hspace*(self: ptr IHTMLObjectElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hspace(self, v)
-proc get_hspace*(self: ptr IHTMLObjectElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hspace(self, p)
-proc namedRecordset*(self: ptr IHTMLObjectElement2, dataMember: BSTR, hierarchy: ptr VARIANT, ppRecordset: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.namedRecordset(self, dataMember, hierarchy, ppRecordset)
-proc put_classid*(self: ptr IHTMLObjectElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_classid(self, v)
-proc get_classid*(self: ptr IHTMLObjectElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_classid(self, p)
-proc put_data*(self: ptr IHTMLObjectElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_data(self, v)
-proc get_data*(self: ptr IHTMLObjectElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_data(self, p)
-proc put_archive*(self: ptr IHTMLObjectElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_archive(self, v)
-proc get_archive*(self: ptr IHTMLObjectElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_archive(self, p)
-proc put_alt*(self: ptr IHTMLObjectElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_alt(self, v)
-proc get_alt*(self: ptr IHTMLObjectElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_alt(self, p)
-proc put_declare*(self: ptr IHTMLObjectElement3, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_declare(self, v)
-proc get_declare*(self: ptr IHTMLObjectElement3, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_declare(self, p)
-proc put_standby*(self: ptr IHTMLObjectElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_standby(self, v)
-proc get_standby*(self: ptr IHTMLObjectElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_standby(self, p)
-proc put_border*(self: ptr IHTMLObjectElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_border(self, v)
-proc get_border*(self: ptr IHTMLObjectElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_border(self, p)
-proc put_useMap*(self: ptr IHTMLObjectElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_useMap(self, v)
-proc get_useMap*(self: ptr IHTMLObjectElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_useMap(self, p)
-proc get_contentDocument*(self: ptr IHTMLObjectElement4, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_contentDocument(self, p)
-proc put_codeBase*(self: ptr IHTMLObjectElement4, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_codeBase(self, v)
-proc get_codeBase*(self: ptr IHTMLObjectElement4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_codeBase(self, p)
-proc put_data*(self: ptr IHTMLObjectElement4, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_data(self, v)
-proc get_data*(self: ptr IHTMLObjectElement4, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_data(self, p)
-proc put_object*(self: ptr IHTMLObjectElement5, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_object(self, v)
-proc get_object*(self: ptr IHTMLObjectElement5, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_object(self, p)
-proc put_name*(self: ptr IHTMLParamElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLParamElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_value*(self: ptr IHTMLParamElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLParamElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_type*(self: ptr IHTMLParamElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr IHTMLParamElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_valueType*(self: ptr IHTMLParamElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_valueType(self, v)
-proc get_valueType*(self: ptr IHTMLParamElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_valueType(self, p)
-proc put_name*(self: ptr IHTMLParamElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLParamElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_type*(self: ptr IHTMLParamElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr IHTMLParamElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_value*(self: ptr IHTMLParamElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLParamElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_valueType*(self: ptr IHTMLParamElement2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_valueType(self, v)
-proc get_valueType*(self: ptr IHTMLParamElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_valueType(self, p)
-proc put_src*(self: ptr IHTMLFrameBase, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
-proc get_src*(self: ptr IHTMLFrameBase, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
-proc put_name*(self: ptr IHTMLFrameBase, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLFrameBase, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_border*(self: ptr IHTMLFrameBase, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_border(self, v)
-proc get_border*(self: ptr IHTMLFrameBase, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_border(self, p)
-proc put_frameBorder*(self: ptr IHTMLFrameBase, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_frameBorder(self, v)
-proc get_frameBorder*(self: ptr IHTMLFrameBase, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frameBorder(self, p)
-proc put_frameSpacing*(self: ptr IHTMLFrameBase, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_frameSpacing(self, v)
-proc get_frameSpacing*(self: ptr IHTMLFrameBase, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frameSpacing(self, p)
-proc put_marginWidth*(self: ptr IHTMLFrameBase, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginWidth(self, v)
-proc get_marginWidth*(self: ptr IHTMLFrameBase, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginWidth(self, p)
-proc put_marginHeight*(self: ptr IHTMLFrameBase, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginHeight(self, v)
-proc get_marginHeight*(self: ptr IHTMLFrameBase, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginHeight(self, p)
-proc put_noResize*(self: ptr IHTMLFrameBase, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_noResize(self, v)
-proc get_noResize*(self: ptr IHTMLFrameBase, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_noResize(self, p)
-proc put_scrolling*(self: ptr IHTMLFrameBase, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrolling(self, v)
-proc get_scrolling*(self: ptr IHTMLFrameBase, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrolling(self, p)
-proc get_contentWindow*(self: ptr IHTMLFrameBase2, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_contentWindow(self, p)
-proc put_onload*(self: ptr IHTMLFrameBase2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onload(self, v)
-proc get_onload*(self: ptr IHTMLFrameBase2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onload(self, p)
-proc put_onreadystatechange*(self: ptr IHTMLFrameBase2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreadystatechange(self, v)
-proc get_onreadystatechange*(self: ptr IHTMLFrameBase2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreadystatechange(self, p)
-proc get_readyState*(self: ptr IHTMLFrameBase2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
-proc put_allowTransparency*(self: ptr IHTMLFrameBase2, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_allowTransparency(self, v)
-proc get_allowTransparency*(self: ptr IHTMLFrameBase2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_allowTransparency(self, p)
-proc put_longDesc*(self: ptr IHTMLFrameBase3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_longDesc(self, v)
-proc get_longDesc*(self: ptr IHTMLFrameBase3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_longDesc(self, p)
-proc put_borderColor*(self: ptr IHTMLFrameElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColor(self, v)
-proc get_borderColor*(self: ptr IHTMLFrameElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColor(self, p)
-proc put_height*(self: ptr IHTMLFrameElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLFrameElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_width*(self: ptr IHTMLFrameElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLFrameElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc get_contentDocument*(self: ptr IHTMLFrameElement3, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_contentDocument(self, p)
-proc put_src*(self: ptr IHTMLFrameElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
-proc get_src*(self: ptr IHTMLFrameElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
-proc put_longDesc*(self: ptr IHTMLFrameElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_longDesc(self, v)
-proc get_longDesc*(self: ptr IHTMLFrameElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_longDesc(self, p)
-proc put_frameBorder*(self: ptr IHTMLFrameElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_frameBorder(self, v)
-proc get_frameBorder*(self: ptr IHTMLFrameElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frameBorder(self, p)
-proc put_vspace*(self: ptr IHTMLIFrameElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vspace(self, v)
-proc get_vspace*(self: ptr IHTMLIFrameElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vspace(self, p)
-proc put_hspace*(self: ptr IHTMLIFrameElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hspace(self, v)
-proc get_hspace*(self: ptr IHTMLIFrameElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hspace(self, p)
-proc put_align*(self: ptr IHTMLIFrameElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLIFrameElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_height*(self: ptr IHTMLIFrameElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLIFrameElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_width*(self: ptr IHTMLIFrameElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLIFrameElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc get_contentDocument*(self: ptr IHTMLIFrameElement3, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_contentDocument(self, p)
-proc put_src*(self: ptr IHTMLIFrameElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
-proc get_src*(self: ptr IHTMLIFrameElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
-proc put_longDesc*(self: ptr IHTMLIFrameElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_longDesc(self, v)
-proc get_longDesc*(self: ptr IHTMLIFrameElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_longDesc(self, p)
-proc put_frameBorder*(self: ptr IHTMLIFrameElement3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_frameBorder(self, v)
-proc get_frameBorder*(self: ptr IHTMLIFrameElement3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frameBorder(self, p)
-proc put_align*(self: ptr IHTMLDivPosition, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLDivPosition, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_align*(self: ptr IHTMLFieldSetElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLFieldSetElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc get_form*(self: ptr IHTMLFieldSetElement2, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc put_align*(self: ptr IHTMLLegendElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLLegendElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc get_form*(self: ptr IHTMLLegendElement2, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc put_align*(self: ptr IHTMLSpanFlow, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr IHTMLSpanFlow, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_rows*(self: ptr IHTMLFrameSetElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_rows(self, v)
-proc get_rows*(self: ptr IHTMLFrameSetElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rows(self, p)
-proc put_cols*(self: ptr IHTMLFrameSetElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cols(self, v)
-proc get_cols*(self: ptr IHTMLFrameSetElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cols(self, p)
-proc put_border*(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_border(self, v)
-proc get_border*(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_border(self, p)
-proc put_borderColor*(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColor(self, v)
-proc get_borderColor*(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColor(self, p)
-proc put_frameBorder*(self: ptr IHTMLFrameSetElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_frameBorder(self, v)
-proc get_frameBorder*(self: ptr IHTMLFrameSetElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frameBorder(self, p)
-proc put_frameSpacing*(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_frameSpacing(self, v)
-proc get_frameSpacing*(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frameSpacing(self, p)
-proc put_name*(self: ptr IHTMLFrameSetElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
-proc get_name*(self: ptr IHTMLFrameSetElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc put_onload*(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onload(self, v)
-proc get_onload*(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onload(self, p)
-proc put_onunload*(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onunload(self, v)
-proc get_onunload*(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onunload(self, p)
-proc put_onbeforeunload*(self: ptr IHTMLFrameSetElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeunload(self, v)
-proc get_onbeforeunload*(self: ptr IHTMLFrameSetElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeunload(self, p)
-proc put_onbeforeprint*(self: ptr IHTMLFrameSetElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeprint(self, v)
-proc get_onbeforeprint*(self: ptr IHTMLFrameSetElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeprint(self, p)
-proc put_onafterprint*(self: ptr IHTMLFrameSetElement2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onafterprint(self, v)
-proc get_onafterprint*(self: ptr IHTMLFrameSetElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onafterprint(self, p)
-proc put_onhashchange*(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onhashchange(self, v)
-proc get_onhashchange*(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onhashchange(self, p)
-proc put_onmessage*(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmessage(self, v)
-proc get_onmessage*(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmessage(self, p)
-proc put_onoffline*(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onoffline(self, v)
-proc get_onoffline*(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onoffline(self, p)
-proc put_ononline*(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ononline(self, v)
-proc get_ononline*(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ononline(self, p)
-proc put_onstorage*(self: ptr IHTMLFrameSetElement3, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onstorage(self, v)
-proc get_onstorage*(self: ptr IHTMLFrameSetElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onstorage(self, p)
-proc put_src*(self: ptr IHTMLBGsound, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
-proc get_src*(self: ptr IHTMLBGsound, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
-proc put_loop*(self: ptr IHTMLBGsound, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_loop(self, v)
-proc get_loop*(self: ptr IHTMLBGsound, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_loop(self, p)
-proc put_volume*(self: ptr IHTMLBGsound, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_volume(self, v)
-proc get_volume*(self: ptr IHTMLBGsound, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_volume(self, p)
-proc put_balance*(self: ptr IHTMLBGsound, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_balance(self, v)
-proc get_balance*(self: ptr IHTMLBGsound, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_balance(self, p)
-proc get_length*(self: ptr IHTMLFontNamesCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IHTMLFontNamesCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc item*(self: ptr IHTMLFontNamesCollection, index: LONG, pBstr: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, pBstr)
-proc get_length*(self: ptr IHTMLFontSizesCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IHTMLFontSizesCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc get_forFont*(self: ptr IHTMLFontSizesCollection, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_forFont(self, p)
-proc item*(self: ptr IHTMLFontSizesCollection, index: LONG, plSize: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, plSize)
-proc get_document*(self: ptr IHTMLOptionsHolder, p: ptr ptr IHTMLDocument2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_document(self, p)
-proc get_fonts*(self: ptr IHTMLOptionsHolder, p: ptr ptr IHTMLFontNamesCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fonts(self, p)
-proc put_execArg*(self: ptr IHTMLOptionsHolder, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_execArg(self, v)
-proc get_execArg*(self: ptr IHTMLOptionsHolder, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_execArg(self, p)
-proc put_errorLine*(self: ptr IHTMLOptionsHolder, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_errorLine(self, v)
-proc get_errorLine*(self: ptr IHTMLOptionsHolder, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_errorLine(self, p)
-proc put_errorCharacter*(self: ptr IHTMLOptionsHolder, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_errorCharacter(self, v)
-proc get_errorCharacter*(self: ptr IHTMLOptionsHolder, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_errorCharacter(self, p)
-proc put_errorCode*(self: ptr IHTMLOptionsHolder, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_errorCode(self, v)
-proc get_errorCode*(self: ptr IHTMLOptionsHolder, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_errorCode(self, p)
-proc put_errorMessage*(self: ptr IHTMLOptionsHolder, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_errorMessage(self, v)
-proc get_errorMessage*(self: ptr IHTMLOptionsHolder, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_errorMessage(self, p)
-proc put_errorDebug*(self: ptr IHTMLOptionsHolder, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_errorDebug(self, v)
-proc get_errorDebug*(self: ptr IHTMLOptionsHolder, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_errorDebug(self, p)
-proc get_unsecuredWindowOfDocument*(self: ptr IHTMLOptionsHolder, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_unsecuredWindowOfDocument(self, p)
-proc put_findText*(self: ptr IHTMLOptionsHolder, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_findText(self, v)
-proc get_findText*(self: ptr IHTMLOptionsHolder, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_findText(self, p)
-proc put_anythingAfterFrameset*(self: ptr IHTMLOptionsHolder, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_anythingAfterFrameset(self, v)
-proc get_anythingAfterFrameset*(self: ptr IHTMLOptionsHolder, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_anythingAfterFrameset(self, p)
-proc sizes*(self: ptr IHTMLOptionsHolder, fontName: BSTR, pSizesCollection: ptr ptr IHTMLFontSizesCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.sizes(self, fontName, pSizesCollection)
-proc openfiledlg*(self: ptr IHTMLOptionsHolder, initFile: VARIANT, initDir: VARIANT, filter: VARIANT, title: VARIANT, pathName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.openfiledlg(self, initFile, initDir, filter, title, pathName)
-proc savefiledlg*(self: ptr IHTMLOptionsHolder, initFile: VARIANT, initDir: VARIANT, filter: VARIANT, title: VARIANT, pathName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.savefiledlg(self, initFile, initDir, filter, title, pathName)
-proc choosecolordlg*(self: ptr IHTMLOptionsHolder, initColor: VARIANT, rgbColor: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.choosecolordlg(self, initColor, rgbColor)
-proc showSecurityInfo*(self: ptr IHTMLOptionsHolder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.showSecurityInfo(self)
-proc isApartmentModel*(self: ptr IHTMLOptionsHolder, `object`: ptr IHTMLObjectElement, fApartment: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.isApartmentModel(self, `object`, fApartment)
-proc getCharset*(self: ptr IHTMLOptionsHolder, fontName: BSTR, charset: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getCharset(self, fontName, charset)
-proc get_secureConnectionInfo*(self: ptr IHTMLOptionsHolder, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_secureConnectionInfo(self, p)
-proc put_type*(self: ptr IHTMLStyleElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr IHTMLStyleElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc get_readyState*(self: ptr IHTMLStyleElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
-proc put_onreadystatechange*(self: ptr IHTMLStyleElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreadystatechange(self, v)
-proc get_onreadystatechange*(self: ptr IHTMLStyleElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreadystatechange(self, p)
-proc put_onload*(self: ptr IHTMLStyleElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onload(self, v)
-proc get_onload*(self: ptr IHTMLStyleElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onload(self, p)
-proc put_onerror*(self: ptr IHTMLStyleElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerror(self, v)
-proc get_onerror*(self: ptr IHTMLStyleElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerror(self, p)
-proc get_styleSheet*(self: ptr IHTMLStyleElement, p: ptr ptr IHTMLStyleSheet): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_styleSheet(self, p)
-proc put_disabled*(self: ptr IHTMLStyleElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
-proc get_disabled*(self: ptr IHTMLStyleElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
-proc put_media*(self: ptr IHTMLStyleElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_media(self, v)
-proc get_media*(self: ptr IHTMLStyleElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_media(self, p)
-proc get_sheet*(self: ptr IHTMLStyleElement2, p: ptr ptr IHTMLStyleSheet): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_sheet(self, p)
-proc put_fontsrc*(self: ptr IHTMLStyleFontFace, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontsrc(self, v)
-proc get_fontsrc*(self: ptr IHTMLStyleFontFace, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontsrc(self, p)
-proc get_style*(self: ptr IHTMLStyleFontFace2, p: ptr ptr IHTMLRuleStyle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_style(self, p)
-proc get_responseText*(self: ptr IHTMLXDomainRequest, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_responseText(self, p)
-proc put_timeout*(self: ptr IHTMLXDomainRequest, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_timeout(self, v)
-proc get_timeout*(self: ptr IHTMLXDomainRequest, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_timeout(self, p)
-proc get_contentType*(self: ptr IHTMLXDomainRequest, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_contentType(self, p)
-proc put_onprogress*(self: ptr IHTMLXDomainRequest, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onprogress(self, v)
-proc get_onprogress*(self: ptr IHTMLXDomainRequest, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onprogress(self, p)
-proc put_onerror*(self: ptr IHTMLXDomainRequest, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerror(self, v)
-proc get_onerror*(self: ptr IHTMLXDomainRequest, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerror(self, p)
-proc put_ontimeout*(self: ptr IHTMLXDomainRequest, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ontimeout(self, v)
-proc get_ontimeout*(self: ptr IHTMLXDomainRequest, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ontimeout(self, p)
-proc put_onload*(self: ptr IHTMLXDomainRequest, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onload(self, v)
-proc get_onload*(self: ptr IHTMLXDomainRequest, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onload(self, p)
-proc abort*(self: ptr IHTMLXDomainRequest): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.abort(self)
-proc open*(self: ptr IHTMLXDomainRequest, bstrMethod: BSTR, bstrUrl: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.open(self, bstrMethod, bstrUrl)
-proc send*(self: ptr IHTMLXDomainRequest, varBody: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.send(self, varBody)
-proc create*(self: ptr IHTMLXDomainRequestFactory, a: ptr ptr IHTMLXDomainRequest): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.create(self, a)
-proc get_length*(self: ptr IHTMLStorage, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_remainingSpace*(self: ptr IHTMLStorage, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_remainingSpace(self, p)
-proc key*(self: ptr IHTMLStorage, lIndex: LONG, a: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.key(self, lIndex, a)
-proc getItem*(self: ptr IHTMLStorage, bstrKey: BSTR, a: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getItem(self, bstrKey, a)
-proc setItem*(self: ptr IHTMLStorage, bstrKey: BSTR, bstrValue: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setItem(self, bstrKey, bstrValue)
-proc removeItem*(self: ptr IHTMLStorage, bstrKey: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeItem(self, bstrKey)
-proc clear*(self: ptr IHTMLStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clear(self)
-proc setItem*(self: ptr IHTMLStorage2, bstrKey: BSTR, bstrValue: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setItem(self, bstrKey, bstrValue)
-proc addEventListener*(self: ptr IEventTarget, `type`: BSTR, listener: ptr IDispatch, useCapture: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addEventListener(self, `type`, listener, useCapture)
-proc removeEventListener*(self: ptr IEventTarget, `type`: BSTR, listener: ptr IDispatch, useCapture: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeEventListener(self, `type`, listener, useCapture)
-proc dispatchEvent*(self: ptr IEventTarget, evt: ptr IDOMEvent, pfResult: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.dispatchEvent(self, evt, pfResult)
-proc get_bubbles*(self: ptr IDOMEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bubbles(self, p)
-proc get_cancelable*(self: ptr IDOMEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cancelable(self, p)
-proc get_currentTarget*(self: ptr IDOMEvent, p: ptr ptr IEventTarget): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_currentTarget(self, p)
-proc get_defaultPrevented*(self: ptr IDOMEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultPrevented(self, p)
-proc get_eventPhase*(self: ptr IDOMEvent, p: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_eventPhase(self, p)
-proc get_target*(self: ptr IDOMEvent, p: ptr ptr IEventTarget): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_target(self, p)
-proc get_timeStamp*(self: ptr IDOMEvent, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_timeStamp(self, p)
-proc get_type*(self: ptr IDOMEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc initEvent*(self: ptr IDOMEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initEvent(self, eventType, canBubble, cancelable)
-proc preventDefault*(self: ptr IDOMEvent): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.preventDefault(self)
-proc stopPropagation*(self: ptr IDOMEvent): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.stopPropagation(self)
-proc stopImmediatePropagation*(self: ptr IDOMEvent): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.stopImmediatePropagation(self)
-proc get_isTrusted*(self: ptr IDOMEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_isTrusted(self, p)
-proc put_cancelBubble*(self: ptr IDOMEvent, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cancelBubble(self, v)
-proc get_cancelBubble*(self: ptr IDOMEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cancelBubble(self, p)
-proc get_srcElement*(self: ptr IDOMEvent, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_srcElement(self, p)
-proc get_view*(self: ptr IDOMUIEvent, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_view(self, p)
-proc get_detail*(self: ptr IDOMUIEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_detail(self, p)
-proc initUIEvent*(self: ptr IDOMUIEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, view: ptr IHTMLWindow2, detail: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initUIEvent(self, eventType, canBubble, cancelable, view, detail)
-proc get_screenX*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screenX(self, p)
-proc get_screenY*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screenY(self, p)
-proc get_clientX*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientX(self, p)
-proc get_clientY*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientY(self, p)
-proc get_ctrlKey*(self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ctrlKey(self, p)
-proc get_shiftKey*(self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_shiftKey(self, p)
-proc get_altKey*(self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_altKey(self, p)
-proc get_metaKey*(self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_metaKey(self, p)
-proc get_button*(self: ptr IDOMMouseEvent, p: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_button(self, p)
-proc get_relatedTarget*(self: ptr IDOMMouseEvent, p: ptr ptr IEventTarget): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_relatedTarget(self, p)
-proc initMouseEvent*(self: ptr IDOMMouseEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, detailArg: LONG, screenXArg: LONG, screenYArg: LONG, clientXArg: LONG, clientYArg: LONG, ctrlKeyArg: VARIANT_BOOL, altKeyArg: VARIANT_BOOL, shiftKeyArg: VARIANT_BOOL, metaKeyArg: VARIANT_BOOL, buttonArg: USHORT, relatedTargetArg: ptr IEventTarget): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initMouseEvent(self, eventType, canBubble, cancelable, viewArg, detailArg, screenXArg, screenYArg, clientXArg, clientYArg, ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg, buttonArg, relatedTargetArg)
-proc getModifierState*(self: ptr IDOMMouseEvent, keyArg: BSTR, activated: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getModifierState(self, keyArg, activated)
-proc get_buttons*(self: ptr IDOMMouseEvent, p: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_buttons(self, p)
-proc get_fromElement*(self: ptr IDOMMouseEvent, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fromElement(self, p)
-proc get_toElement*(self: ptr IDOMMouseEvent, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_toElement(self, p)
-proc get_x*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc get_y*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc get_offsetX*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetX(self, p)
-proc get_offsetY*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetY(self, p)
-proc get_pageX*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageX(self, p)
-proc get_pageY*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageY(self, p)
-proc get_layerX*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layerX(self, p)
-proc get_layerY*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_layerY(self, p)
-proc get_which*(self: ptr IDOMMouseEvent, p: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_which(self, p)
-proc get_dataTransfer*(self: ptr IDOMDragEvent, p: ptr ptr IHTMLDataTransfer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dataTransfer(self, p)
-proc initDragEvent*(self: ptr IDOMDragEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, detailArg: LONG, screenXArg: LONG, screenYArg: LONG, clientXArg: LONG, clientYArg: LONG, ctrlKeyArg: VARIANT_BOOL, altKeyArg: VARIANT_BOOL, shiftKeyArg: VARIANT_BOOL, metaKeyArg: VARIANT_BOOL, buttonArg: USHORT, relatedTargetArg: ptr IEventTarget, dataTransferArg: ptr IHTMLDataTransfer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initDragEvent(self, eventType, canBubble, cancelable, viewArg, detailArg, screenXArg, screenYArg, clientXArg, clientYArg, ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg, buttonArg, relatedTargetArg, dataTransferArg)
-proc get_wheelDelta*(self: ptr IDOMMouseWheelEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wheelDelta(self, p)
-proc initMouseWheelEvent*(self: ptr IDOMMouseWheelEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, detailArg: LONG, screenXArg: LONG, screenYArg: LONG, clientXArg: LONG, clientYArg: LONG, buttonArg: USHORT, relatedTargetArg: ptr IEventTarget, modifiersListArg: BSTR, wheelDeltaArg: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initMouseWheelEvent(self, eventType, canBubble, cancelable, viewArg, detailArg, screenXArg, screenYArg, clientXArg, clientYArg, buttonArg, relatedTargetArg, modifiersListArg, wheelDeltaArg)
-proc get_deltaX*(self: ptr IDOMWheelEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_deltaX(self, p)
-proc get_deltaY*(self: ptr IDOMWheelEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_deltaY(self, p)
-proc get_deltaZ*(self: ptr IDOMWheelEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_deltaZ(self, p)
-proc get_deltaMode*(self: ptr IDOMWheelEvent, p: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_deltaMode(self, p)
-proc initWheelEvent*(self: ptr IDOMWheelEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, detailArg: LONG, screenXArg: LONG, screenYArg: LONG, clientXArg: LONG, clientYArg: LONG, buttonArg: USHORT, relatedTargetArg: ptr IEventTarget, modifiersListArg: BSTR, deltaX: LONG, deltaY: LONG, deltaZ: LONG, deltaMode: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initWheelEvent(self, eventType, canBubble, cancelable, viewArg, detailArg, screenXArg, screenYArg, clientXArg, clientYArg, buttonArg, relatedTargetArg, modifiersListArg, deltaX, deltaY, deltaZ, deltaMode)
-proc get_data*(self: ptr IDOMTextEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_data(self, p)
-proc get_inputMethod*(self: ptr IDOMTextEvent, p: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_inputMethod(self, p)
-proc initTextEvent*(self: ptr IDOMTextEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, dataArg: BSTR, inputMethod: ULONG, locale: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initTextEvent(self, eventType, canBubble, cancelable, viewArg, dataArg, inputMethod, locale)
-proc get_locale*(self: ptr IDOMTextEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_locale(self, p)
-proc get_key*(self: ptr IDOMKeyboardEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_key(self, p)
-proc get_location*(self: ptr IDOMKeyboardEvent, p: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_location(self, p)
-proc get_ctrlKey*(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ctrlKey(self, p)
-proc get_shiftKey*(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_shiftKey(self, p)
-proc get_altKey*(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_altKey(self, p)
-proc get_metaKey*(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_metaKey(self, p)
-proc get_repeat*(self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_repeat(self, p)
-proc getModifierState*(self: ptr IDOMKeyboardEvent, keyArg: BSTR, state: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getModifierState(self, keyArg, state)
-proc initKeyboardEvent*(self: ptr IDOMKeyboardEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, keyArg: BSTR, locationArg: ULONG, modifiersListArg: BSTR, repeat: VARIANT_BOOL, locale: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initKeyboardEvent(self, eventType, canBubble, cancelable, viewArg, keyArg, locationArg, modifiersListArg, repeat, locale)
-proc get_keyCode*(self: ptr IDOMKeyboardEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_keyCode(self, p)
-proc get_charCode*(self: ptr IDOMKeyboardEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_charCode(self, p)
-proc get_which*(self: ptr IDOMKeyboardEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_which(self, p)
-proc get_ie9_char*(self: ptr IDOMKeyboardEvent, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ie9_char(self, p)
-proc get_locale*(self: ptr IDOMKeyboardEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_locale(self, p)
-proc get_data*(self: ptr IDOMCompositionEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_data(self, p)
-proc initCompositionEvent*(self: ptr IDOMCompositionEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, data: BSTR, locale: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initCompositionEvent(self, eventType, canBubble, cancelable, viewArg, data, locale)
-proc get_locale*(self: ptr IDOMCompositionEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_locale(self, p)
-proc get_relatedNode*(self: ptr IDOMMutationEvent, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_relatedNode(self, p)
-proc get_prevValue*(self: ptr IDOMMutationEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_prevValue(self, p)
-proc get_newValue*(self: ptr IDOMMutationEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newValue(self, p)
-proc get_attrName*(self: ptr IDOMMutationEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_attrName(self, p)
-proc get_attrChange*(self: ptr IDOMMutationEvent, p: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_attrChange(self, p)
-proc initMutationEvent*(self: ptr IDOMMutationEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, relatedNodeArg: ptr IDispatch, prevValueArg: BSTR, newValueArg: BSTR, attrNameArg: BSTR, attrChangeArg: USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initMutationEvent(self, eventType, canBubble, cancelable, relatedNodeArg, prevValueArg, newValueArg, attrNameArg, attrChangeArg)
-proc put_returnValue*(self: ptr IDOMBeforeUnloadEvent, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_returnValue(self, v)
-proc get_returnValue*(self: ptr IDOMBeforeUnloadEvent, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_returnValue(self, p)
-proc get_relatedTarget*(self: ptr IDOMFocusEvent, p: ptr ptr IEventTarget): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_relatedTarget(self, p)
-proc initFocusEvent*(self: ptr IDOMFocusEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, view: ptr IHTMLWindow2, detail: LONG, relatedTargetArg: ptr IEventTarget): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initFocusEvent(self, eventType, canBubble, cancelable, view, detail, relatedTargetArg)
-proc get_detail*(self: ptr IDOMCustomEvent, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_detail(self, p)
-proc initCustomEvent*(self: ptr IDOMCustomEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, detail: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initCustomEvent(self, eventType, canBubble, cancelable, detail)
-proc addColorStop*(self: ptr ICanvasGradient, offset: float32, color: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addColorStop(self, offset, color)
-proc get_width*(self: ptr ICanvasTextMetrics, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc get_width*(self: ptr ICanvasImageData, p: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc get_height*(self: ptr ICanvasImageData, p: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc get_data*(self: ptr ICanvasImageData, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_data(self, p)
-proc get_length*(self: ptr ICanvasPixelArray, p: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_canvas*(self: ptr ICanvasRenderingContext2D, p: ptr ptr IHTMLCanvasElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_canvas(self, p)
-proc restore*(self: ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.restore(self)
-proc save*(self: ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.save(self)
-proc rotate*(self: ptr ICanvasRenderingContext2D, angle: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.rotate(self, angle)
-proc scale*(self: ptr ICanvasRenderingContext2D, x: float32, y: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.scale(self, x, y)
-proc setTransform*(self: ptr ICanvasRenderingContext2D, m11: float32, m12: float32, m21: float32, m22: float32, dx: float32, dy: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setTransform(self, m11, m12, m21, m22, dx, dy)
-proc transform*(self: ptr ICanvasRenderingContext2D, m11: float32, m12: float32, m21: float32, m22: float32, dx: float32, dy: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.transform(self, m11, m12, m21, m22, dx, dy)
-proc translate*(self: ptr ICanvasRenderingContext2D, x: float32, y: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.translate(self, x, y)
-proc put_globalAlpha*(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_globalAlpha(self, v)
-proc get_globalAlpha*(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_globalAlpha(self, p)
-proc put_globalCompositeOperation*(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_globalCompositeOperation(self, v)
-proc get_globalCompositeOperation*(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_globalCompositeOperation(self, p)
-proc put_fillStyle*(self: ptr ICanvasRenderingContext2D, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fillStyle(self, v)
-proc get_fillStyle*(self: ptr ICanvasRenderingContext2D, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fillStyle(self, p)
-proc put_strokeStyle*(self: ptr ICanvasRenderingContext2D, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_strokeStyle(self, v)
-proc get_strokeStyle*(self: ptr ICanvasRenderingContext2D, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_strokeStyle(self, p)
-proc createLinearGradient*(self: ptr ICanvasRenderingContext2D, x0: float32, y0: float32, x1: float32, y1: float32, ppCanvasGradient: ptr ptr ICanvasGradient): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createLinearGradient(self, x0, y0, x1, y1, ppCanvasGradient)
-proc createRadialGradient*(self: ptr ICanvasRenderingContext2D, x0: float32, y0: float32, r0: float32, x1: float32, y1: float32, r1: float32, ppCanvasGradient: ptr ptr ICanvasGradient): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createRadialGradient(self, x0, y0, r0, x1, y1, r1, ppCanvasGradient)
-proc createPattern*(self: ptr ICanvasRenderingContext2D, image: ptr IDispatch, repetition: VARIANT, ppCanvasPattern: ptr ptr ICanvasPattern): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createPattern(self, image, repetition, ppCanvasPattern)
-proc put_lineCap*(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lineCap(self, v)
-proc get_lineCap*(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lineCap(self, p)
-proc put_lineJoin*(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lineJoin(self, v)
-proc get_lineJoin*(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lineJoin(self, p)
-proc put_lineWidth*(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lineWidth(self, v)
-proc get_lineWidth*(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lineWidth(self, p)
-proc put_miterLimit*(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_miterLimit(self, v)
-proc get_miterLimit*(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_miterLimit(self, p)
-proc put_shadowBlur*(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_shadowBlur(self, v)
-proc get_shadowBlur*(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_shadowBlur(self, p)
-proc put_shadowColor*(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_shadowColor(self, v)
-proc get_shadowColor*(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_shadowColor(self, p)
-proc put_shadowOffsetX*(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_shadowOffsetX(self, v)
-proc get_shadowOffsetX*(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_shadowOffsetX(self, p)
-proc put_shadowOffsetY*(self: ptr ICanvasRenderingContext2D, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_shadowOffsetY(self, v)
-proc get_shadowOffsetY*(self: ptr ICanvasRenderingContext2D, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_shadowOffsetY(self, p)
-proc clearRect*(self: ptr ICanvasRenderingContext2D, x: float32, y: float32, w: float32, h: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clearRect(self, x, y, w, h)
-proc fillRect*(self: ptr ICanvasRenderingContext2D, x: float32, y: float32, w: float32, h: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.fillRect(self, x, y, w, h)
-proc strokeRect*(self: ptr ICanvasRenderingContext2D, x: float32, y: float32, w: float32, h: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.strokeRect(self, x, y, w, h)
-proc arc*(self: ptr ICanvasRenderingContext2D, x: float32, y: float32, radius: float32, startAngle: float32, endAngle: float32, anticlockwise: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.arc(self, x, y, radius, startAngle, endAngle, anticlockwise)
-proc arcTo*(self: ptr ICanvasRenderingContext2D, x1: float32, y1: float32, x2: float32, y2: float32, radius: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.arcTo(self, x1, y1, x2, y2, radius)
-proc mBeginPath*(self: ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.beginPath(self)
-proc bezierCurveTo*(self: ptr ICanvasRenderingContext2D, cp1x: float32, cp1y: float32, cp2x: float32, cp2y: float32, x: float32, y: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.bezierCurveTo(self, cp1x, cp1y, cp2x, cp2y, x, y)
-proc clip*(self: ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clip(self)
-proc closePath*(self: ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.closePath(self)
-proc fill*(self: ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.fill(self)
-proc lineTo*(self: ptr ICanvasRenderingContext2D, x: float32, y: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.lineTo(self, x, y)
-proc moveTo*(self: ptr ICanvasRenderingContext2D, x: float32, y: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveTo(self, x, y)
-proc quadraticCurveTo*(self: ptr ICanvasRenderingContext2D, cpx: float32, cpy: float32, x: float32, y: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.quadraticCurveTo(self, cpx, cpy, x, y)
-proc rect*(self: ptr ICanvasRenderingContext2D, x: float32, y: float32, w: float32, h: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.rect(self, x, y, w, h)
-proc stroke*(self: ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.stroke(self)
-proc isPointInPath*(self: ptr ICanvasRenderingContext2D, x: float32, y: float32, pResult: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.isPointInPath(self, x, y, pResult)
-proc put_font*(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_font(self, v)
-proc get_font*(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_font(self, p)
-proc put_textAlign*(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textAlign(self, v)
-proc get_textAlign*(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAlign(self, p)
-proc put_textBaseline*(self: ptr ICanvasRenderingContext2D, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textBaseline(self, v)
-proc get_textBaseline*(self: ptr ICanvasRenderingContext2D, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textBaseline(self, p)
-proc fillText*(self: ptr ICanvasRenderingContext2D, text: BSTR, x: float32, y: float32, maxWidth: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.fillText(self, text, x, y, maxWidth)
-proc measureText*(self: ptr ICanvasRenderingContext2D, text: BSTR, ppCanvasTextMetrics: ptr ptr ICanvasTextMetrics): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.measureText(self, text, ppCanvasTextMetrics)
-proc strokeText*(self: ptr ICanvasRenderingContext2D, text: BSTR, x: float32, y: float32, maxWidth: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.strokeText(self, text, x, y, maxWidth)
-proc drawImage*(self: ptr ICanvasRenderingContext2D, pSrc: ptr IDispatch, a1: VARIANT, a2: VARIANT, a3: VARIANT, a4: VARIANT, a5: VARIANT, a6: VARIANT, a7: VARIANT, a8: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.drawImage(self, pSrc, a1, a2, a3, a4, a5, a6, a7, a8)
-proc createImageData*(self: ptr ICanvasRenderingContext2D, a1: VARIANT, a2: VARIANT, ppCanvasImageData: ptr ptr ICanvasImageData): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createImageData(self, a1, a2, ppCanvasImageData)
-proc getImageData*(self: ptr ICanvasRenderingContext2D, sx: float32, sy: float32, sw: float32, sh: float32, ppCanvasImageData: ptr ptr ICanvasImageData): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getImageData(self, sx, sy, sw, sh, ppCanvasImageData)
-proc putImageData*(self: ptr ICanvasRenderingContext2D, imagedata: ptr ICanvasImageData, dx: float32, dy: float32, dirtyX: VARIANT, dirtyY: VARIANT, dirtyWidth: VARIANT, dirtyHeight: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putImageData(self, imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight)
-proc put_width*(self: ptr IHTMLCanvasElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLCanvasElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_height*(self: ptr IHTMLCanvasElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLCanvasElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc getContext*(self: ptr IHTMLCanvasElement, contextId: BSTR, ppContext: ptr ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getContext(self, contextId, ppContext)
-proc toDataURL*(self: ptr IHTMLCanvasElement, `type`: BSTR, jpegquality: VARIANT, pUrl: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toDataURL(self, `type`, jpegquality, pUrl)
-proc get_lengthComputable*(self: ptr IDOMProgressEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lengthComputable(self, p)
-proc get_loaded*(self: ptr IDOMProgressEvent, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_loaded(self, p)
-proc get_total*(self: ptr IDOMProgressEvent, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_total(self, p)
-proc initProgressEvent*(self: ptr IDOMProgressEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, lengthComputableArg: VARIANT_BOOL, loadedArg: ULONGLONG, totalArg: ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initProgressEvent(self, eventType, canBubble, cancelable, lengthComputableArg, loadedArg, totalArg)
-proc get_data*(self: ptr IDOMMessageEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_data(self, p)
-proc get_origin*(self: ptr IDOMMessageEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_origin(self, p)
-proc get_source*(self: ptr IDOMMessageEvent, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_source(self, p)
-proc initMessageEvent*(self: ptr IDOMMessageEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, data: BSTR, origin: BSTR, lastEventId: BSTR, source: ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initMessageEvent(self, eventType, canBubble, cancelable, data, origin, lastEventId, source)
-proc get_buttonID*(self: ptr IDOMSiteModeEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_buttonID(self, p)
-proc get_actionURL*(self: ptr IDOMSiteModeEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_actionURL(self, p)
-proc get_key*(self: ptr IDOMStorageEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_key(self, p)
-proc get_oldValue*(self: ptr IDOMStorageEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oldValue(self, p)
-proc get_newValue*(self: ptr IDOMStorageEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newValue(self, p)
-proc get_url*(self: ptr IDOMStorageEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_url(self, p)
-proc get_storageArea*(self: ptr IDOMStorageEvent, p: ptr ptr IHTMLStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_storageArea(self, p)
-proc initStorageEvent*(self: ptr IDOMStorageEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, keyArg: BSTR, oldValueArg: BSTR, newValueArg: BSTR, urlArg: BSTR, storageAreaArg: ptr IHTMLStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initStorageEvent(self, eventType, canBubble, cancelable, keyArg, oldValueArg, newValueArg, urlArg, storageAreaArg)
-proc get_readyState*(self: ptr IHTMLXMLHttpRequest, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
-proc get_responseBody*(self: ptr IHTMLXMLHttpRequest, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_responseBody(self, p)
-proc get_responseText*(self: ptr IHTMLXMLHttpRequest, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_responseText(self, p)
-proc get_responseXML*(self: ptr IHTMLXMLHttpRequest, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_responseXML(self, p)
-proc get_status*(self: ptr IHTMLXMLHttpRequest, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_status(self, p)
-proc get_statusText*(self: ptr IHTMLXMLHttpRequest, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_statusText(self, p)
-proc put_onreadystatechange*(self: ptr IHTMLXMLHttpRequest, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreadystatechange(self, v)
-proc get_onreadystatechange*(self: ptr IHTMLXMLHttpRequest, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreadystatechange(self, p)
-proc abort*(self: ptr IHTMLXMLHttpRequest): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.abort(self)
-proc open*(self: ptr IHTMLXMLHttpRequest, bstrMethod: BSTR, bstrUrl: BSTR, varAsync: VARIANT, varUser: VARIANT, varPassword: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.open(self, bstrMethod, bstrUrl, varAsync, varUser, varPassword)
-proc send*(self: ptr IHTMLXMLHttpRequest, varBody: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.send(self, varBody)
-proc getAllResponseHeaders*(self: ptr IHTMLXMLHttpRequest, a: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAllResponseHeaders(self, a)
-proc getResponseHeader*(self: ptr IHTMLXMLHttpRequest, bstrHeader: BSTR, a: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getResponseHeader(self, bstrHeader, a)
-proc setRequestHeader*(self: ptr IHTMLXMLHttpRequest, bstrHeader: BSTR, bstrValue: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setRequestHeader(self, bstrHeader, bstrValue)
-proc put_timeout*(self: ptr IHTMLXMLHttpRequest2, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_timeout(self, v)
-proc get_timeout*(self: ptr IHTMLXMLHttpRequest2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_timeout(self, p)
-proc put_ontimeout*(self: ptr IHTMLXMLHttpRequest2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ontimeout(self, v)
-proc get_ontimeout*(self: ptr IHTMLXMLHttpRequest2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ontimeout(self, p)
-proc create*(self: ptr IHTMLXMLHttpRequestFactory, a: ptr ptr IHTMLXMLHttpRequest): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.create(self, a)
-proc put_unitType*(self: ptr ISVGAngle, v: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_unitType(self, v)
-proc get_unitType*(self: ptr ISVGAngle, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_unitType(self, p)
-proc put_value*(self: ptr ISVGAngle, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr ISVGAngle, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_valueInSpecifiedUnits*(self: ptr ISVGAngle, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_valueInSpecifiedUnits(self, v)
-proc get_valueInSpecifiedUnits*(self: ptr ISVGAngle, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_valueInSpecifiedUnits(self, p)
-proc put_valueAsString*(self: ptr ISVGAngle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_valueAsString(self, v)
-proc get_valueAsString*(self: ptr ISVGAngle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_valueAsString(self, p)
-proc newValueSpecifiedUnits*(self: ptr ISVGAngle, unitType: int16, valueInSpecifiedUnits: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.newValueSpecifiedUnits(self, unitType, valueInSpecifiedUnits)
-proc convertToSpecifiedUnits*(self: ptr ISVGAngle, unitType: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.convertToSpecifiedUnits(self, unitType)
-proc get_className*(self: ptr ISVGStylable, p: ptr ptr ISVGAnimatedString): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_className(self, p)
-proc get_nearestViewportElement*(self: ptr ISVGLocatable, p: ptr ptr ISVGElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nearestViewportElement(self, p)
-proc get_farthestViewportElement*(self: ptr ISVGLocatable, p: ptr ptr ISVGElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_farthestViewportElement(self, p)
-proc getBBox*(self: ptr ISVGLocatable, ppResult: ptr ptr ISVGRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getBBox(self, ppResult)
-proc getCTM*(self: ptr ISVGLocatable, ppResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getCTM(self, ppResult)
-proc getScreenCTM*(self: ptr ISVGLocatable, ppResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getScreenCTM(self, ppResult)
-proc getTransformToElement*(self: ptr ISVGLocatable, pElement: ptr ISVGElement, ppResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getTransformToElement(self, pElement, ppResult)
-proc get_transform*(self: ptr ISVGTransformable, p: ptr ptr ISVGAnimatedTransformList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_transform(self, p)
-proc get_requiredFeatures*(self: ptr ISVGTests, p: ptr ptr ISVGStringList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_requiredFeatures(self, p)
-proc get_requiredExtensions*(self: ptr ISVGTests, p: ptr ptr ISVGStringList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_requiredExtensions(self, p)
-proc get_systemLanguage*(self: ptr ISVGTests, p: ptr ptr ISVGStringList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_systemLanguage(self, p)
-proc hasExtension*(self: ptr ISVGTests, extension: BSTR, pResult: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasExtension(self, extension, pResult)
-proc put_xmllang*(self: ptr ISVGLangSpace, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_xmllang(self, v)
-proc get_xmllang*(self: ptr ISVGLangSpace, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_xmllang(self, p)
-proc put_xmlspace*(self: ptr ISVGLangSpace, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_xmlspace(self, v)
-proc get_xmlspace*(self: ptr ISVGLangSpace, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_xmlspace(self, p)
-proc get_externalResourcesRequired*(self: ptr ISVGExternalResourcesRequired, p: ptr ptr ISVGAnimatedBoolean): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_externalResourcesRequired(self, p)
-proc get_viewBox*(self: ptr ISVGFitToViewBox, p: ptr ptr ISVGAnimatedRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_viewBox(self, p)
-proc putref_preserveAspectRatio*(self: ptr ISVGFitToViewBox, v: ptr ISVGAnimatedPreserveAspectRatio): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_preserveAspectRatio(self, v)
-proc get_preserveAspectRatio*(self: ptr ISVGFitToViewBox, p: ptr ptr ISVGAnimatedPreserveAspectRatio): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_preserveAspectRatio(self, p)
-proc get_zoomAndPan*(self: ptr ISVGZoomAndPan, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_zoomAndPan(self, p)
-proc get_href*(self: ptr ISVGURIReference, p: ptr ptr ISVGAnimatedString): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
-proc putref_baseVal*(self: ptr ISVGAnimatedAngle, v: ptr ISVGAngle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_baseVal(self, v)
-proc get_baseVal*(self: ptr ISVGAnimatedAngle, p: ptr ptr ISVGAngle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseVal(self, p)
-proc putref_animVal*(self: ptr ISVGAnimatedAngle, v: ptr ISVGAngle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_animVal(self, v)
-proc get_animVal*(self: ptr ISVGAnimatedAngle, p: ptr ptr ISVGAngle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animVal(self, p)
-proc putref_baseVal*(self: ptr ISVGAnimatedTransformList, v: ptr ISVGTransformList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_baseVal(self, v)
-proc get_baseVal*(self: ptr ISVGAnimatedTransformList, p: ptr ptr ISVGTransformList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseVal(self, p)
-proc putref_animVal*(self: ptr ISVGAnimatedTransformList, v: ptr ISVGTransformList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_animVal(self, v)
-proc get_animVal*(self: ptr ISVGAnimatedTransformList, p: ptr ptr ISVGTransformList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animVal(self, p)
-proc put_baseVal*(self: ptr ISVGAnimatedBoolean, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_baseVal(self, v)
-proc get_baseVal*(self: ptr ISVGAnimatedBoolean, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseVal(self, p)
-proc put_animVal*(self: ptr ISVGAnimatedBoolean, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_animVal(self, v)
-proc get_animVal*(self: ptr ISVGAnimatedBoolean, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animVal(self, p)
-proc put_baseVal*(self: ptr ISVGAnimatedEnumeration, v: USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_baseVal(self, v)
-proc get_baseVal*(self: ptr ISVGAnimatedEnumeration, p: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseVal(self, p)
-proc put_animVal*(self: ptr ISVGAnimatedEnumeration, v: USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_animVal(self, v)
-proc get_animVal*(self: ptr ISVGAnimatedEnumeration, p: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animVal(self, p)
-proc put_baseVal*(self: ptr ISVGAnimatedInteger, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_baseVal(self, v)
-proc get_baseVal*(self: ptr ISVGAnimatedInteger, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseVal(self, p)
-proc put_animVal*(self: ptr ISVGAnimatedInteger, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_animVal(self, v)
-proc get_animVal*(self: ptr ISVGAnimatedInteger, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animVal(self, p)
-proc putref_baseVal*(self: ptr ISVGAnimatedLength, v: ptr ISVGLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_baseVal(self, v)
-proc get_baseVal*(self: ptr ISVGAnimatedLength, p: ptr ptr ISVGLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseVal(self, p)
-proc putref_animVal*(self: ptr ISVGAnimatedLength, v: ptr ISVGLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_animVal(self, v)
-proc get_animVal*(self: ptr ISVGAnimatedLength, p: ptr ptr ISVGLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animVal(self, p)
-proc putref_baseVal*(self: ptr ISVGAnimatedLengthList, v: ptr ISVGLengthList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_baseVal(self, v)
-proc get_baseVal*(self: ptr ISVGAnimatedLengthList, p: ptr ptr ISVGLengthList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseVal(self, p)
-proc putref_animVal*(self: ptr ISVGAnimatedLengthList, v: ptr ISVGLengthList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_animVal(self, v)
-proc get_animVal*(self: ptr ISVGAnimatedLengthList, p: ptr ptr ISVGLengthList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animVal(self, p)
-proc put_baseVal*(self: ptr ISVGAnimatedNumber, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_baseVal(self, v)
-proc get_baseVal*(self: ptr ISVGAnimatedNumber, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseVal(self, p)
-proc put_animVal*(self: ptr ISVGAnimatedNumber, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_animVal(self, v)
-proc get_animVal*(self: ptr ISVGAnimatedNumber, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animVal(self, p)
-proc putref_baseVal*(self: ptr ISVGAnimatedNumberList, v: ptr ISVGNumberList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_baseVal(self, v)
-proc get_baseVal*(self: ptr ISVGAnimatedNumberList, p: ptr ptr ISVGNumberList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseVal(self, p)
-proc putref_animVal*(self: ptr ISVGAnimatedNumberList, v: ptr ISVGNumberList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_animVal(self, v)
-proc get_animVal*(self: ptr ISVGAnimatedNumberList, p: ptr ptr ISVGNumberList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animVal(self, p)
-proc putref_baseVal*(self: ptr ISVGAnimatedRect, v: ptr ISVGRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_baseVal(self, v)
-proc get_baseVal*(self: ptr ISVGAnimatedRect, p: ptr ptr ISVGRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseVal(self, p)
-proc putref_animVal*(self: ptr ISVGAnimatedRect, v: ptr ISVGRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_animVal(self, v)
-proc get_animVal*(self: ptr ISVGAnimatedRect, p: ptr ptr ISVGRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animVal(self, p)
-proc put_baseVal*(self: ptr ISVGAnimatedString, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_baseVal(self, v)
-proc get_baseVal*(self: ptr ISVGAnimatedString, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseVal(self, p)
-proc get_animVal*(self: ptr ISVGAnimatedString, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animVal(self, p)
-proc putref_clipPathUnits*(self: ptr ISVGClipPathElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_clipPathUnits(self, v)
-proc get_clipPathUnits*(self: ptr ISVGClipPathElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clipPathUnits(self, p)
-proc get_rootElement*(self: ptr ISVGDocument, p: ptr ptr ISVGSVGElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rootElement(self, p)
-proc getSVGDocument*(self: ptr IGetSVGDocument, ppSVGDocument: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getSVGDocument(self, ppSVGDocument)
-proc put_xmlbase*(self: ptr ISVGElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_xmlbase(self, v)
-proc get_xmlbase*(self: ptr ISVGElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_xmlbase(self, p)
-proc putref_ownerSVGElement*(self: ptr ISVGElement, v: ptr ISVGSVGElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_ownerSVGElement(self, v)
-proc get_ownerSVGElement*(self: ptr ISVGElement, p: ptr ptr ISVGSVGElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ownerSVGElement(self, p)
-proc putref_viewportElement*(self: ptr ISVGElement, v: ptr ISVGElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_viewportElement(self, v)
-proc get_viewportElement*(self: ptr ISVGElement, p: ptr ptr ISVGElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_viewportElement(self, p)
-proc putref_focusable*(self: ptr ISVGElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_focusable(self, v)
-proc get_focusable*(self: ptr ISVGElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_focusable(self, p)
-proc put_unitType*(self: ptr ISVGLength, v: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_unitType(self, v)
-proc get_unitType*(self: ptr ISVGLength, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_unitType(self, p)
-proc put_value*(self: ptr ISVGLength, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr ISVGLength, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_valueInSpecifiedUnits*(self: ptr ISVGLength, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_valueInSpecifiedUnits(self, v)
-proc get_valueInSpecifiedUnits*(self: ptr ISVGLength, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_valueInSpecifiedUnits(self, p)
-proc put_valueAsString*(self: ptr ISVGLength, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_valueAsString(self, v)
-proc get_valueAsString*(self: ptr ISVGLength, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_valueAsString(self, p)
-proc newValueSpecifiedUnits*(self: ptr ISVGLength, unitType: int16, valueInSpecifiedUnits: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.newValueSpecifiedUnits(self, unitType, valueInSpecifiedUnits)
-proc convertToSpecifiedUnits*(self: ptr ISVGLength, unitType: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.convertToSpecifiedUnits(self, unitType)
-proc put_numberOfItems*(self: ptr ISVGLengthList, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_numberOfItems(self, v)
-proc get_numberOfItems*(self: ptr ISVGLengthList, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_numberOfItems(self, p)
-proc clear*(self: ptr ISVGLengthList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clear(self)
-proc initialize*(self: ptr ISVGLengthList, newItem: ptr ISVGLength, ppResult: ptr ptr ISVGLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initialize(self, newItem, ppResult)
-proc getItem*(self: ptr ISVGLengthList, index: LONG, ppResult: ptr ptr ISVGLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getItem(self, index, ppResult)
-proc insertItemBefore*(self: ptr ISVGLengthList, newItem: ptr ISVGLength, index: LONG, ppResult: ptr ptr ISVGLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertItemBefore(self, newItem, index, ppResult)
-proc replaceItem*(self: ptr ISVGLengthList, newItem: ptr ISVGLength, index: LONG, ppResult: ptr ptr ISVGLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceItem(self, newItem, index, ppResult)
-proc removeItem*(self: ptr ISVGLengthList, index: LONG, ppResult: ptr ptr ISVGLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeItem(self, index, ppResult)
-proc appendItem*(self: ptr ISVGLengthList, newItem: ptr ISVGLength, ppResult: ptr ptr ISVGLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendItem(self, newItem, ppResult)
-proc put_a*(self: ptr ISVGMatrix, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_a(self, v)
-proc get_a*(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_a(self, p)
-proc put_b*(self: ptr ISVGMatrix, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_b(self, v)
-proc get_b*(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_b(self, p)
-proc put_c*(self: ptr ISVGMatrix, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_c(self, v)
-proc get_c*(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_c(self, p)
-proc put_d*(self: ptr ISVGMatrix, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_d(self, v)
-proc get_d*(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_d(self, p)
-proc put_e*(self: ptr ISVGMatrix, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_e(self, v)
-proc get_e*(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_e(self, p)
-proc put_f*(self: ptr ISVGMatrix, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_f(self, v)
-proc get_f*(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_f(self, p)
-proc multiply*(self: ptr ISVGMatrix, secondMatrix: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.multiply(self, secondMatrix, ppResult)
-proc inverse*(self: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.inverse(self, ppResult)
-proc translate*(self: ptr ISVGMatrix, x: float32, y: float32, ppResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.translate(self, x, y, ppResult)
-proc scale*(self: ptr ISVGMatrix, scaleFactor: float32, ppResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.scale(self, scaleFactor, ppResult)
-proc scaleNonUniform*(self: ptr ISVGMatrix, scaleFactorX: float32, scaleFactorY: float32, ppResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.scaleNonUniform(self, scaleFactorX, scaleFactorY, ppResult)
-proc rotate*(self: ptr ISVGMatrix, angle: float32, ppResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.rotate(self, angle, ppResult)
-proc rotateFromVector*(self: ptr ISVGMatrix, x: float32, y: float32, ppResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.rotateFromVector(self, x, y, ppResult)
-proc flipX*(self: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.flipX(self, ppResult)
-proc flipY*(self: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.flipY(self, ppResult)
-proc skewX*(self: ptr ISVGMatrix, angle: float32, ppResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.skewX(self, angle, ppResult)
-proc skewY*(self: ptr ISVGMatrix, angle: float32, ppResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.skewY(self, angle, ppResult)
-proc put_value*(self: ptr ISVGNumber, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr ISVGNumber, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_numberOfItems*(self: ptr ISVGNumberList, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_numberOfItems(self, v)
-proc get_numberOfItems*(self: ptr ISVGNumberList, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_numberOfItems(self, p)
-proc clear*(self: ptr ISVGNumberList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clear(self)
-proc initialize*(self: ptr ISVGNumberList, newItem: ptr ISVGNumber, ppResult: ptr ptr ISVGNumber): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initialize(self, newItem, ppResult)
-proc getItem*(self: ptr ISVGNumberList, index: LONG, ppResult: ptr ptr ISVGNumber): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getItem(self, index, ppResult)
-proc insertItemBefore*(self: ptr ISVGNumberList, newItem: ptr ISVGNumber, index: LONG, ppResult: ptr ptr ISVGNumber): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertItemBefore(self, newItem, index, ppResult)
-proc replaceItem*(self: ptr ISVGNumberList, newItem: ptr ISVGNumber, index: LONG, ppResult: ptr ptr ISVGNumber): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceItem(self, newItem, index, ppResult)
-proc removeItem*(self: ptr ISVGNumberList, index: LONG, ppResult: ptr ptr ISVGNumber): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeItem(self, index, ppResult)
-proc appendItem*(self: ptr ISVGNumberList, newItem: ptr ISVGNumber, ppResult: ptr ptr ISVGNumber): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendItem(self, newItem, ppResult)
-proc putref_patternUnits*(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_patternUnits(self, v)
-proc get_patternUnits*(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_patternUnits(self, p)
-proc putref_patternContentUnits*(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_patternContentUnits(self, v)
-proc get_patternContentUnits*(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_patternContentUnits(self, p)
-proc putref_patternTransform*(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedTransformList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_patternTransform(self, v)
-proc get_patternTransform*(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedTransformList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_patternTransform(self, p)
-proc putref_x*(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_x(self, v)
-proc get_x*(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc putref_y*(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_y(self, v)
-proc get_y*(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc putref_width*(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_width(self, v)
-proc get_width*(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc putref_height*(self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_height(self, v)
-proc get_height*(self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_pathSegType*(self: ptr ISVGPathSeg, v: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pathSegType(self, v)
-proc get_pathSegType*(self: ptr ISVGPathSeg, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pathSegType(self, p)
-proc get_pathSegTypeAsLetter*(self: ptr ISVGPathSeg, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pathSegTypeAsLetter(self, p)
-proc put_x*(self: ptr ISVGPathSegArcAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegArcAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegArcAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegArcAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_r1*(self: ptr ISVGPathSegArcAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_r1(self, v)
-proc get_r1*(self: ptr ISVGPathSegArcAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_r1(self, p)
-proc put_r2*(self: ptr ISVGPathSegArcAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_r2(self, v)
-proc get_r2*(self: ptr ISVGPathSegArcAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_r2(self, p)
-proc put_angle*(self: ptr ISVGPathSegArcAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_angle(self, v)
-proc get_angle*(self: ptr ISVGPathSegArcAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_angle(self, p)
-proc put_largeArcFlag*(self: ptr ISVGPathSegArcAbs, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_largeArcFlag(self, v)
-proc get_largeArcFlag*(self: ptr ISVGPathSegArcAbs, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_largeArcFlag(self, p)
-proc put_sweepFlag*(self: ptr ISVGPathSegArcAbs, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_sweepFlag(self, v)
-proc get_sweepFlag*(self: ptr ISVGPathSegArcAbs, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_sweepFlag(self, p)
-proc put_x*(self: ptr ISVGPathSegArcRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegArcRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegArcRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegArcRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_r1*(self: ptr ISVGPathSegArcRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_r1(self, v)
-proc get_r1*(self: ptr ISVGPathSegArcRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_r1(self, p)
-proc put_r2*(self: ptr ISVGPathSegArcRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_r2(self, v)
-proc get_r2*(self: ptr ISVGPathSegArcRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_r2(self, p)
-proc put_angle*(self: ptr ISVGPathSegArcRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_angle(self, v)
-proc get_angle*(self: ptr ISVGPathSegArcRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_angle(self, p)
-proc put_largeArcFlag*(self: ptr ISVGPathSegArcRel, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_largeArcFlag(self, v)
-proc get_largeArcFlag*(self: ptr ISVGPathSegArcRel, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_largeArcFlag(self, p)
-proc put_sweepFlag*(self: ptr ISVGPathSegArcRel, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_sweepFlag(self, v)
-proc get_sweepFlag*(self: ptr ISVGPathSegArcRel, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_sweepFlag(self, p)
-proc put_x*(self: ptr ISVGPathSegMovetoAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegMovetoAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegMovetoAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegMovetoAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_x*(self: ptr ISVGPathSegMovetoRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegMovetoRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegMovetoRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegMovetoRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_x*(self: ptr ISVGPathSegLinetoAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegLinetoAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegLinetoAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegLinetoAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_x*(self: ptr ISVGPathSegLinetoRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegLinetoRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegLinetoRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegLinetoRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_x*(self: ptr ISVGPathSegCurvetoCubicAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegCurvetoCubicAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_x1*(self: ptr ISVGPathSegCurvetoCubicAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x1(self, v)
-proc get_x1*(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x1(self, p)
-proc put_y1*(self: ptr ISVGPathSegCurvetoCubicAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y1(self, v)
-proc get_y1*(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y1(self, p)
-proc put_x2*(self: ptr ISVGPathSegCurvetoCubicAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x2(self, v)
-proc get_x2*(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x2(self, p)
-proc put_y2*(self: ptr ISVGPathSegCurvetoCubicAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y2(self, v)
-proc get_y2*(self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y2(self, p)
-proc put_x*(self: ptr ISVGPathSegCurvetoCubicRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegCurvetoCubicRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_x1*(self: ptr ISVGPathSegCurvetoCubicRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x1(self, v)
-proc get_x1*(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x1(self, p)
-proc put_y1*(self: ptr ISVGPathSegCurvetoCubicRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y1(self, v)
-proc get_y1*(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y1(self, p)
-proc put_x2*(self: ptr ISVGPathSegCurvetoCubicRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x2(self, v)
-proc get_x2*(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x2(self, p)
-proc put_y2*(self: ptr ISVGPathSegCurvetoCubicRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y2(self, v)
-proc get_y2*(self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y2(self, p)
-proc put_x*(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_x2*(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x2(self, v)
-proc get_x2*(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x2(self, p)
-proc put_y2*(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y2(self, v)
-proc get_y2*(self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y2(self, p)
-proc put_x*(self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_x2*(self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x2(self, v)
-proc get_x2*(self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x2(self, p)
-proc put_y2*(self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y2(self, v)
-proc get_y2*(self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y2(self, p)
-proc put_x*(self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_x1*(self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x1(self, v)
-proc get_x1*(self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x1(self, p)
-proc put_y1*(self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y1(self, v)
-proc get_y1*(self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y1(self, p)
-proc put_x*(self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_x1*(self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x1(self, v)
-proc get_x1*(self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x1(self, p)
-proc put_y1*(self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y1(self, v)
-proc get_y1*(self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y1(self, p)
-proc put_x*(self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_x*(self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_x*(self: ptr ISVGPathSegLinetoHorizontalAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegLinetoHorizontalAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_x*(self: ptr ISVGPathSegLinetoHorizontalRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPathSegLinetoHorizontalRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPathSegLinetoVerticalAbs, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegLinetoVerticalAbs, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_y*(self: ptr ISVGPathSegLinetoVerticalRel, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPathSegLinetoVerticalRel, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_numberOfItems*(self: ptr ISVGPathSegList, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_numberOfItems(self, v)
-proc get_numberOfItems*(self: ptr ISVGPathSegList, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_numberOfItems(self, p)
-proc clear*(self: ptr ISVGPathSegList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clear(self)
-proc initialize*(self: ptr ISVGPathSegList, newItem: ptr ISVGPathSeg, ppResult: ptr ptr ISVGPathSeg): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initialize(self, newItem, ppResult)
-proc getItem*(self: ptr ISVGPathSegList, index: LONG, ppResult: ptr ptr ISVGPathSeg): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getItem(self, index, ppResult)
-proc insertItemBefore*(self: ptr ISVGPathSegList, newItem: ptr ISVGPathSeg, index: LONG, ppResult: ptr ptr ISVGPathSeg): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertItemBefore(self, newItem, index, ppResult)
-proc replaceItem*(self: ptr ISVGPathSegList, newItem: ptr ISVGPathSeg, index: LONG, ppResult: ptr ptr ISVGPathSeg): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceItem(self, newItem, index, ppResult)
-proc removeItem*(self: ptr ISVGPathSegList, index: LONG, ppResult: ptr ptr ISVGPathSeg): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeItem(self, index, ppResult)
-proc appendItem*(self: ptr ISVGPathSegList, newItem: ptr ISVGPathSeg, ppResult: ptr ptr ISVGPathSeg): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendItem(self, newItem, ppResult)
-proc put_x*(self: ptr ISVGPoint, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGPoint, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGPoint, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGPoint, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc matrixTransform*(self: ptr ISVGPoint, pMatrix: ptr ISVGMatrix, ppResult: ptr ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.matrixTransform(self, pMatrix, ppResult)
-proc put_numberOfItems*(self: ptr ISVGPointList, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_numberOfItems(self, v)
-proc get_numberOfItems*(self: ptr ISVGPointList, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_numberOfItems(self, p)
-proc clear*(self: ptr ISVGPointList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clear(self)
-proc initialize*(self: ptr ISVGPointList, pNewItem: ptr ISVGPoint, ppResult: ptr ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initialize(self, pNewItem, ppResult)
-proc getItem*(self: ptr ISVGPointList, index: LONG, ppResult: ptr ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getItem(self, index, ppResult)
-proc insertItemBefore*(self: ptr ISVGPointList, pNewItem: ptr ISVGPoint, index: LONG, ppResult: ptr ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertItemBefore(self, pNewItem, index, ppResult)
-proc replaceItem*(self: ptr ISVGPointList, pNewItem: ptr ISVGPoint, index: LONG, ppResult: ptr ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceItem(self, pNewItem, index, ppResult)
-proc removeItem*(self: ptr ISVGPointList, index: LONG, ppResult: ptr ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeItem(self, index, ppResult)
-proc appendItem*(self: ptr ISVGPointList, pNewItem: ptr ISVGPoint, ppResult: ptr ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendItem(self, pNewItem, ppResult)
-proc put_x*(self: ptr ISVGRect, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_x(self, v)
-proc get_x*(self: ptr ISVGRect, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc put_y*(self: ptr ISVGRect, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_y(self, v)
-proc get_y*(self: ptr ISVGRect, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc put_width*(self: ptr ISVGRect, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr ISVGRect, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_height*(self: ptr ISVGRect, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr ISVGRect, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_numberOfItems*(self: ptr ISVGStringList, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_numberOfItems(self, v)
-proc get_numberOfItems*(self: ptr ISVGStringList, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_numberOfItems(self, p)
-proc clear*(self: ptr ISVGStringList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clear(self)
-proc initialize*(self: ptr ISVGStringList, newItem: BSTR, ppResult: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initialize(self, newItem, ppResult)
-proc getItem*(self: ptr ISVGStringList, index: LONG, ppResult: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getItem(self, index, ppResult)
-proc insertItemBefore*(self: ptr ISVGStringList, newItem: BSTR, index: LONG, ppResult: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertItemBefore(self, newItem, index, ppResult)
-proc replaceItem*(self: ptr ISVGStringList, newItem: BSTR, index: LONG, ppResult: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceItem(self, newItem, index, ppResult)
-proc removeItem*(self: ptr ISVGStringList, index: LONG, ppResult: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeItem(self, index, ppResult)
-proc appendItem*(self: ptr ISVGStringList, newItem: BSTR, ppResult: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendItem(self, newItem, ppResult)
-proc put_type*(self: ptr ISVGTransform, v: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr ISVGTransform, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc putref_matrix*(self: ptr ISVGTransform, v: ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_matrix(self, v)
-proc get_matrix*(self: ptr ISVGTransform, p: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_matrix(self, p)
-proc put_angle*(self: ptr ISVGTransform, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_angle(self, v)
-proc get_angle*(self: ptr ISVGTransform, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_angle(self, p)
-proc setMatrix*(self: ptr ISVGTransform, matrix: ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setMatrix(self, matrix)
-proc setTranslate*(self: ptr ISVGTransform, tx: float32, ty: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setTranslate(self, tx, ty)
-proc setScale*(self: ptr ISVGTransform, sx: float32, sy: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setScale(self, sx, sy)
-proc setRotate*(self: ptr ISVGTransform, angle: float32, cx: float32, cy: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setRotate(self, angle, cx, cy)
-proc setSkewX*(self: ptr ISVGTransform, angle: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setSkewX(self, angle)
-proc setSkewY*(self: ptr ISVGTransform, angle: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setSkewY(self, angle)
-proc putref_x*(self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_x(self, v)
-proc get_x*(self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc putref_y*(self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_y(self, v)
-proc get_y*(self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc putref_width*(self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_width(self, v)
-proc get_width*(self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc putref_height*(self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_height(self, v)
-proc get_height*(self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc put_contentScriptType*(self: ptr ISVGSVGElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_contentScriptType(self, v)
-proc get_contentScriptType*(self: ptr ISVGSVGElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_contentScriptType(self, p)
-proc put_contentStyleType*(self: ptr ISVGSVGElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_contentStyleType(self, v)
-proc get_contentStyleType*(self: ptr ISVGSVGElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_contentStyleType(self, p)
-proc putref_viewport*(self: ptr ISVGSVGElement, v: ptr ISVGRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_viewport(self, v)
-proc get_viewport*(self: ptr ISVGSVGElement, p: ptr ptr ISVGRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_viewport(self, p)
-proc put_pixelUnitToMillimeterX*(self: ptr ISVGSVGElement, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pixelUnitToMillimeterX(self, v)
-proc get_pixelUnitToMillimeterX*(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelUnitToMillimeterX(self, p)
-proc put_pixelUnitToMillimeterY*(self: ptr ISVGSVGElement, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pixelUnitToMillimeterY(self, v)
-proc get_pixelUnitToMillimeterY*(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelUnitToMillimeterY(self, p)
-proc put_screenPixelToMillimeterX*(self: ptr ISVGSVGElement, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_screenPixelToMillimeterX(self, v)
-proc get_screenPixelToMillimeterX*(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screenPixelToMillimeterX(self, p)
-proc put_screenPixelToMillimeterY*(self: ptr ISVGSVGElement, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_screenPixelToMillimeterY(self, v)
-proc get_screenPixelToMillimeterY*(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screenPixelToMillimeterY(self, p)
-proc put_useCurrentView*(self: ptr ISVGSVGElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_useCurrentView(self, v)
-proc get_useCurrentView*(self: ptr ISVGSVGElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_useCurrentView(self, p)
-proc putref_currentView*(self: ptr ISVGSVGElement, v: ptr ISVGViewSpec): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_currentView(self, v)
-proc get_currentView*(self: ptr ISVGSVGElement, p: ptr ptr ISVGViewSpec): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_currentView(self, p)
-proc put_currentScale*(self: ptr ISVGSVGElement, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_currentScale(self, v)
-proc get_currentScale*(self: ptr ISVGSVGElement, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_currentScale(self, p)
-proc putref_currentTranslate*(self: ptr ISVGSVGElement, v: ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_currentTranslate(self, v)
-proc get_currentTranslate*(self: ptr ISVGSVGElement, p: ptr ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_currentTranslate(self, p)
-proc suspendRedraw*(self: ptr ISVGSVGElement, maxWaitMilliseconds: ULONG, pResult: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.suspendRedraw(self, maxWaitMilliseconds, pResult)
-proc unsuspendRedraw*(self: ptr ISVGSVGElement, suspendHandeID: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.unsuspendRedraw(self, suspendHandeID)
-proc unsuspendRedrawAll*(self: ptr ISVGSVGElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.unsuspendRedrawAll(self)
-proc forceRedraw*(self: ptr ISVGSVGElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.forceRedraw(self)
-proc pauseAnimations*(self: ptr ISVGSVGElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.pauseAnimations(self)
-proc unpauseAnimations*(self: ptr ISVGSVGElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.unpauseAnimations(self)
-proc animationsPaused*(self: ptr ISVGSVGElement, pResult: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.animationsPaused(self, pResult)
-proc getCurrentTime*(self: ptr ISVGSVGElement, pResult: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getCurrentTime(self, pResult)
-proc setCurrentTime*(self: ptr ISVGSVGElement, seconds: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setCurrentTime(self, seconds)
-proc getIntersectionList*(self: ptr ISVGSVGElement, rect: ptr ISVGRect, referenceElement: ptr ISVGElement, pResult: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getIntersectionList(self, rect, referenceElement, pResult)
-proc getEnclosureList*(self: ptr ISVGSVGElement, rect: ptr ISVGRect, referenceElement: ptr ISVGElement, pResult: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getEnclosureList(self, rect, referenceElement, pResult)
-proc checkIntersection*(self: ptr ISVGSVGElement, element: ptr ISVGElement, rect: ptr ISVGRect, pResult: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.checkIntersection(self, element, rect, pResult)
-proc checkEnclosure*(self: ptr ISVGSVGElement, element: ptr ISVGElement, rect: ptr ISVGRect, pResult: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.checkEnclosure(self, element, rect, pResult)
-proc deselectAll*(self: ptr ISVGSVGElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deselectAll(self)
-proc createSVGNumber*(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGNumber): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGNumber(self, pResult)
-proc createSVGLength*(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGLength(self, pResult)
-proc createSVGAngle*(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGAngle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGAngle(self, pResult)
-proc createSVGPoint*(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPoint(self, pResult)
-proc createSVGMatrix*(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGMatrix): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGMatrix(self, pResult)
-proc createSVGRect*(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGRect(self, pResult)
-proc createSVGTransform*(self: ptr ISVGSVGElement, pResult: ptr ptr ISVGTransform): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGTransform(self, pResult)
-proc createSVGTransformFromMatrix*(self: ptr ISVGSVGElement, matrix: ptr ISVGMatrix, pResult: ptr ptr ISVGTransform): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGTransformFromMatrix(self, matrix, pResult)
-proc getElementById*(self: ptr ISVGSVGElement, elementId: BSTR, pResult: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getElementById(self, elementId, pResult)
-proc putref_x*(self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_x(self, v)
-proc get_x*(self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc putref_y*(self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_y(self, v)
-proc get_y*(self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc putref_width*(self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_width(self, v)
-proc get_width*(self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc putref_height*(self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_height(self, v)
-proc get_height*(self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc putref_instanceRoot*(self: ptr ISVGUseElement, v: ptr ISVGElementInstance): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_instanceRoot(self, v)
-proc get_instanceRoot*(self: ptr ISVGUseElement, p: ptr ptr ISVGElementInstance): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_instanceRoot(self, p)
-proc putref_animatedInstanceRoot*(self: ptr ISVGUseElement, v: ptr ISVGElementInstance): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_animatedInstanceRoot(self, v)
-proc get_animatedInstanceRoot*(self: ptr ISVGUseElement, p: ptr ptr ISVGElementInstance): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animatedInstanceRoot(self, p)
-proc item*(self: ptr IHTMLStyleSheetRulesAppliedCollection, index: LONG, ppHTMLStyleSheetRule: ptr ptr IHTMLStyleSheetRule): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, ppHTMLStyleSheetRule)
-proc get_length*(self: ptr IHTMLStyleSheetRulesAppliedCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc propertyAppliedBy*(self: ptr IHTMLStyleSheetRulesAppliedCollection, name: BSTR, ppRule: ptr ptr IHTMLStyleSheetRule): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.propertyAppliedBy(self, name, ppRule)
-proc propertyAppliedTrace*(self: ptr IHTMLStyleSheetRulesAppliedCollection, name: BSTR, index: LONG, ppRule: ptr ptr IHTMLStyleSheetRule): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.propertyAppliedTrace(self, name, index, ppRule)
-proc propertyAppliedTraceLength*(self: ptr IHTMLStyleSheetRulesAppliedCollection, name: BSTR, pLength: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.propertyAppliedTraceLength(self, name, pLength)
-proc get_element*(self: ptr IRulesApplied, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_element(self, p)
-proc get_inlineStyles*(self: ptr IRulesApplied, p: ptr ptr IHTMLStyle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_inlineStyles(self, p)
-proc get_appliedRules*(self: ptr IRulesApplied, p: ptr ptr IHTMLStyleSheetRulesAppliedCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_appliedRules(self, p)
-proc propertyIsInline*(self: ptr IRulesApplied, name: BSTR, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.propertyIsInline(self, name, p)
-proc propertyIsInheritable*(self: ptr IRulesApplied, name: BSTR, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.propertyIsInheritable(self, name, p)
-proc hasInheritableProperty*(self: ptr IRulesApplied, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasInheritableProperty(self, p)
-proc item*(self: ptr IRulesAppliedCollection, index: LONG, ppRulesApplied: ptr ptr IRulesApplied): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, ppRulesApplied)
-proc get_length*(self: ptr IRulesAppliedCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_element*(self: ptr IRulesAppliedCollection, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_element(self, p)
-proc propertyInheritedFrom*(self: ptr IRulesAppliedCollection, name: BSTR, ppRulesApplied: ptr ptr IRulesApplied): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.propertyInheritedFrom(self, name, ppRulesApplied)
-proc get_propertyCount*(self: ptr IRulesAppliedCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_propertyCount(self, p)
-proc property*(self: ptr IRulesAppliedCollection, index: LONG, pbstrProperty: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.property(self, index, pbstrProperty)
-proc propertyInheritedTrace*(self: ptr IRulesAppliedCollection, name: BSTR, index: LONG, ppRulesApplied: ptr ptr IRulesApplied): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.propertyInheritedTrace(self, name, index, ppRulesApplied)
-proc propertyInheritedTraceLength*(self: ptr IRulesAppliedCollection, name: BSTR, pLength: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.propertyInheritedTraceLength(self, name, pLength)
-proc put_numberOfItems*(self: ptr ISVGTransformList, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_numberOfItems(self, v)
-proc get_numberOfItems*(self: ptr ISVGTransformList, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_numberOfItems(self, p)
-proc clear*(self: ptr ISVGTransformList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clear(self)
-proc initialize*(self: ptr ISVGTransformList, newItem: ptr ISVGTransform, ppResult: ptr ptr ISVGTransform): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initialize(self, newItem, ppResult)
-proc getItem*(self: ptr ISVGTransformList, index: LONG, ppResult: ptr ptr ISVGTransform): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getItem(self, index, ppResult)
-proc insertItemBefore*(self: ptr ISVGTransformList, newItem: ptr ISVGTransform, index: LONG, ppResult: ptr ptr ISVGTransform): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertItemBefore(self, newItem, index, ppResult)
-proc replaceItem*(self: ptr ISVGTransformList, newItem: ptr ISVGTransform, index: LONG, ppResult: ptr ptr ISVGTransform): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceItem(self, newItem, index, ppResult)
-proc removeItem*(self: ptr ISVGTransformList, index: LONG, ppResult: ptr ptr ISVGTransform): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeItem(self, index, ppResult)
-proc appendItem*(self: ptr ISVGTransformList, newItem: ptr ISVGTransform, ppResult: ptr ptr ISVGTransform): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendItem(self, newItem, ppResult)
-proc createSVGTransformFromMatrix*(self: ptr ISVGTransformList, newItem: ptr ISVGMatrix, ppResult: ptr ptr ISVGTransform): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGTransformFromMatrix(self, newItem, ppResult)
-proc consolidate*(self: ptr ISVGTransformList, ppResult: ptr ptr ISVGTransform): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.consolidate(self, ppResult)
-proc putref_points*(self: ptr ISVGAnimatedPoints, v: ptr ISVGPointList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_points(self, v)
-proc get_points*(self: ptr ISVGAnimatedPoints, p: ptr ptr ISVGPointList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_points(self, p)
-proc putref_animatedPoints*(self: ptr ISVGAnimatedPoints, v: ptr ISVGPointList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_animatedPoints(self, v)
-proc get_animatedPoints*(self: ptr ISVGAnimatedPoints, p: ptr ptr ISVGPointList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animatedPoints(self, p)
-proc putref_cx*(self: ptr ISVGCircleElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_cx(self, v)
-proc get_cx*(self: ptr ISVGCircleElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cx(self, p)
-proc putref_cy*(self: ptr ISVGCircleElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_cy(self, v)
-proc get_cy*(self: ptr ISVGCircleElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cy(self, p)
-proc putref_r*(self: ptr ISVGCircleElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_r(self, v)
-proc get_r*(self: ptr ISVGCircleElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_r(self, p)
-proc putref_cx*(self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_cx(self, v)
-proc get_cx*(self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cx(self, p)
-proc putref_cy*(self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_cy(self, v)
-proc get_cy*(self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cy(self, p)
-proc putref_rx*(self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_rx(self, v)
-proc get_rx*(self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rx(self, p)
-proc putref_ry*(self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_ry(self, v)
-proc get_ry*(self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ry(self, p)
-proc putref_x1*(self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_x1(self, v)
-proc get_x1*(self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x1(self, p)
-proc putref_y1*(self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_y1(self, v)
-proc get_y1*(self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y1(self, p)
-proc putref_x2*(self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_x2(self, v)
-proc get_x2*(self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x2(self, p)
-proc putref_y2*(self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_y2(self, v)
-proc get_y2*(self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y2(self, p)
-proc putref_x*(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_x(self, v)
-proc get_x*(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc putref_y*(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_y(self, v)
-proc get_y*(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc putref_width*(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_width(self, v)
-proc get_width*(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc putref_height*(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_height(self, v)
-proc get_height*(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc putref_rx*(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_rx(self, v)
-proc get_rx*(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rx(self, p)
-proc putref_ry*(self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_ry(self, v)
-proc get_ry*(self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ry(self, p)
-proc putref_pathSegList*(self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_pathSegList(self, v)
-proc get_pathSegList*(self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pathSegList(self, p)
-proc putref_normalizedPathSegList*(self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_normalizedPathSegList(self, v)
-proc get_normalizedPathSegList*(self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_normalizedPathSegList(self, p)
-proc putref_animatedPathSegList*(self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_animatedPathSegList(self, v)
-proc get_animatedPathSegList*(self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animatedPathSegList(self, p)
-proc putref_animatedNormalizedPathSegList*(self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_animatedNormalizedPathSegList(self, v)
-proc get_animatedNormalizedPathSegList*(self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animatedNormalizedPathSegList(self, p)
-proc putref_pathLength*(self: ptr ISVGPathElement, v: ptr ISVGAnimatedNumber): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_pathLength(self, v)
-proc get_pathLength*(self: ptr ISVGPathElement, p: ptr ptr ISVGAnimatedNumber): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pathLength(self, p)
-proc getTotalLength*(self: ptr ISVGPathElement, pfltResult: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getTotalLength(self, pfltResult)
-proc getPointAtLength*(self: ptr ISVGPathElement, fltdistance: float32, ppPointResult: ptr ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getPointAtLength(self, fltdistance, ppPointResult)
-proc getPathSegAtLength*(self: ptr ISVGPathElement, fltdistance: float32, plResult: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getPathSegAtLength(self, fltdistance, plResult)
-proc createSVGPathSegClosePath*(self: ptr ISVGPathElement, ppResult: ptr ptr ISVGPathSegClosePath): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegClosePath(self, ppResult)
-proc createSVGPathSegMovetoAbs*(self: ptr ISVGPathElement, x: float32, y: float32, ppResult: ptr ptr ISVGPathSegMovetoAbs): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegMovetoAbs(self, x, y, ppResult)
-proc createSVGPathSegMovetoRel*(self: ptr ISVGPathElement, x: float32, y: float32, ppResult: ptr ptr ISVGPathSegMovetoRel): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegMovetoRel(self, x, y, ppResult)
-proc createSVGPathSegLinetoAbs*(self: ptr ISVGPathElement, x: float32, y: float32, ppResult: ptr ptr ISVGPathSegLinetoAbs): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegLinetoAbs(self, x, y, ppResult)
-proc createSVGPathSegLinetoRel*(self: ptr ISVGPathElement, x: float32, y: float32, ppResult: ptr ptr ISVGPathSegLinetoRel): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegLinetoRel(self, x, y, ppResult)
-proc createSVGPathSegCurvetoCubicAbs*(self: ptr ISVGPathElement, x: float32, y: float32, x1: float32, y1: float32, x2: float32, y2: float32, ppResult: ptr ptr ISVGPathSegCurvetoCubicAbs): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegCurvetoCubicAbs(self, x, y, x1, y1, x2, y2, ppResult)
-proc createSVGPathSegCurvetoCubicRel*(self: ptr ISVGPathElement, x: float32, y: float32, x1: float32, y1: float32, x2: float32, y2: float32, ppResult: ptr ptr ISVGPathSegCurvetoCubicRel): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegCurvetoCubicRel(self, x, y, x1, y1, x2, y2, ppResult)
-proc createSVGPathSegCurvetoQuadraticAbs*(self: ptr ISVGPathElement, x: float32, y: float32, x1: float32, y1: float32, ppResult: ptr ptr ISVGPathSegCurvetoQuadraticAbs): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegCurvetoQuadraticAbs(self, x, y, x1, y1, ppResult)
-proc createSVGPathSegCurvetoQuadraticRel*(self: ptr ISVGPathElement, x: float32, y: float32, x1: float32, y1: float32, ppResult: ptr ptr ISVGPathSegCurvetoQuadraticRel): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegCurvetoQuadraticRel(self, x, y, x1, y1, ppResult)
-proc createSVGPathSegArcAbs*(self: ptr ISVGPathElement, x: float32, y: float32, r1: float32, r2: float32, angle: float32, largeArcFlag: VARIANT_BOOL, sweepFlag: VARIANT_BOOL, ppResult: ptr ptr ISVGPathSegArcAbs): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegArcAbs(self, x, y, r1, r2, angle, largeArcFlag, sweepFlag, ppResult)
-proc createSVGPathSegArcRel*(self: ptr ISVGPathElement, x: float32, y: float32, r1: float32, r2: float32, angle: float32, largeArcFlag: VARIANT_BOOL, sweepFlag: VARIANT_BOOL, ppResult: ptr ptr ISVGPathSegArcRel): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegArcRel(self, x, y, r1, r2, angle, largeArcFlag, sweepFlag, ppResult)
-proc createSVGPathSegLinetoHorizontalAbs*(self: ptr ISVGPathElement, x: float32, ppResult: ptr ptr ISVGPathSegLinetoHorizontalAbs): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegLinetoHorizontalAbs(self, x, ppResult)
-proc createSVGPathSegLinetoHorizontalRel*(self: ptr ISVGPathElement, x: float32, ppResult: ptr ptr ISVGPathSegLinetoHorizontalRel): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegLinetoHorizontalRel(self, x, ppResult)
-proc createSVGPathSegLinetoVerticalAbs*(self: ptr ISVGPathElement, y: float32, ppResult: ptr ptr ISVGPathSegLinetoVerticalAbs): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegLinetoVerticalAbs(self, y, ppResult)
-proc createSVGPathSegLinetoVerticalRel*(self: ptr ISVGPathElement, y: float32, ppResult: ptr ptr ISVGPathSegLinetoVerticalRel): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegLinetoVerticalRel(self, y, ppResult)
-proc createSVGPathSegCurvetoCubicSmoothAbs*(self: ptr ISVGPathElement, x: float32, y: float32, x2: float32, y2: float32, ppResult: ptr ptr ISVGPathSegCurvetoCubicSmoothAbs): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegCurvetoCubicSmoothAbs(self, x, y, x2, y2, ppResult)
-proc createSVGPathSegCurvetoCubicSmoothRel*(self: ptr ISVGPathElement, x: float32, y: float32, x2: float32, y2: float32, ppResult: ptr ptr ISVGPathSegCurvetoCubicSmoothRel): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegCurvetoCubicSmoothRel(self, x, y, x2, y2, ppResult)
-proc createSVGPathSegCurvetoQuadraticSmoothAbs*(self: ptr ISVGPathElement, x: float32, y: float32, ppResult: ptr ptr ISVGPathSegCurvetoQuadraticSmoothAbs): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegCurvetoQuadraticSmoothAbs(self, x, y, ppResult)
-proc createSVGPathSegCurvetoQuadraticSmoothRel*(self: ptr ISVGPathElement, x: float32, y: float32, ppResult: ptr ptr ISVGPathSegCurvetoQuadraticSmoothRel): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createSVGPathSegCurvetoQuadraticSmoothRel(self, x, y, ppResult)
-proc put_align*(self: ptr ISVGPreserveAspectRatio, v: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
-proc get_align*(self: ptr ISVGPreserveAspectRatio, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
-proc put_meetOrSlice*(self: ptr ISVGPreserveAspectRatio, v: int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_meetOrSlice(self, v)
-proc get_meetOrSlice*(self: ptr ISVGPreserveAspectRatio, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_meetOrSlice(self, p)
-proc putref_baseVal*(self: ptr ISVGAnimatedPreserveAspectRatio, v: ptr ISVGPreserveAspectRatio): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_baseVal(self, v)
-proc get_baseVal*(self: ptr ISVGAnimatedPreserveAspectRatio, p: ptr ptr ISVGPreserveAspectRatio): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseVal(self, p)
-proc putref_animVal*(self: ptr ISVGAnimatedPreserveAspectRatio, v: ptr ISVGPreserveAspectRatio): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_animVal(self, v)
-proc get_animVal*(self: ptr ISVGAnimatedPreserveAspectRatio, p: ptr ptr ISVGPreserveAspectRatio): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animVal(self, p)
-proc putref_x*(self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_x(self, v)
-proc get_x*(self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc putref_y*(self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_y(self, v)
-proc get_y*(self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc putref_width*(self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_width(self, v)
-proc get_width*(self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc putref_height*(self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_height(self, v)
-proc get_height*(self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc putref_offset*(self: ptr ISVGStopElement, v: ptr ISVGAnimatedNumber): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_offset(self, v)
-proc get_offset*(self: ptr ISVGStopElement, p: ptr ptr ISVGAnimatedNumber): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offset(self, p)
-proc putref_gradientUnits*(self: ptr ISVGGradientElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_gradientUnits(self, v)
-proc get_gradientUnits*(self: ptr ISVGGradientElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_gradientUnits(self, p)
-proc putref_gradientTransform*(self: ptr ISVGGradientElement, v: ptr ISVGAnimatedTransformList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_gradientTransform(self, v)
-proc get_gradientTransform*(self: ptr ISVGGradientElement, p: ptr ptr ISVGAnimatedTransformList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_gradientTransform(self, p)
-proc putref_spreadMethod*(self: ptr ISVGGradientElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_spreadMethod(self, v)
-proc get_spreadMethod*(self: ptr ISVGGradientElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_spreadMethod(self, p)
-proc putref_x1*(self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_x1(self, v)
-proc get_x1*(self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x1(self, p)
-proc putref_y1*(self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_y1(self, v)
-proc get_y1*(self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y1(self, p)
-proc putref_x2*(self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_x2(self, v)
-proc get_x2*(self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x2(self, p)
-proc putref_y2*(self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_y2(self, v)
-proc get_y2*(self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y2(self, p)
-proc putref_cx*(self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_cx(self, v)
-proc get_cx*(self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cx(self, p)
-proc putref_cy*(self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_cy(self, v)
-proc get_cy*(self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cy(self, p)
-proc putref_r*(self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_r(self, v)
-proc get_r*(self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_r(self, p)
-proc putref_fx*(self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_fx(self, v)
-proc get_fx*(self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fx(self, p)
-proc putref_fy*(self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_fy(self, v)
-proc get_fy*(self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fy(self, p)
-proc putref_maskUnits*(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_maskUnits(self, v)
-proc get_maskUnits*(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maskUnits(self, p)
-proc putref_maskContentUnits*(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_maskContentUnits(self, v)
-proc get_maskContentUnits*(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maskContentUnits(self, p)
-proc putref_x*(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_x(self, v)
-proc get_x*(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc putref_y*(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_y(self, v)
-proc get_y*(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc putref_width*(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_width(self, v)
-proc get_width*(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc putref_height*(self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_height(self, v)
-proc get_height*(self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc putref_refX*(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_refX(self, v)
-proc get_refX*(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_refX(self, p)
-proc putref_refY*(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_refY(self, v)
-proc get_refY*(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_refY(self, p)
-proc putref_markerUnits*(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_markerUnits(self, v)
-proc get_markerUnits*(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_markerUnits(self, p)
-proc putref_markerWidth*(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_markerWidth(self, v)
-proc get_markerWidth*(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_markerWidth(self, p)
-proc putref_markerHeight*(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_markerHeight(self, v)
-proc get_markerHeight*(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_markerHeight(self, p)
-proc putref_orientType*(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_orientType(self, v)
-proc get_orientType*(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_orientType(self, p)
-proc putref_orientAngle*(self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedAngle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_orientAngle(self, v)
-proc get_orientAngle*(self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedAngle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_orientAngle(self, p)
-proc setOrientToAuto*(self: ptr ISVGMarkerElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setOrientToAuto(self)
-proc setOrientToAngle*(self: ptr ISVGMarkerElement, pSVGAngle: ptr ISVGAngle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setOrientToAngle(self, pSVGAngle)
-proc get_zoomRectScreen*(self: ptr ISVGZoomEvent, p: ptr ptr ISVGRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_zoomRectScreen(self, p)
-proc get_previousScale*(self: ptr ISVGZoomEvent, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_previousScale(self, p)
-proc get_previousTranslate*(self: ptr ISVGZoomEvent, p: ptr ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_previousTranslate(self, p)
-proc get_newScale*(self: ptr ISVGZoomEvent, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newScale(self, p)
-proc get_newTranslate*(self: ptr ISVGZoomEvent, p: ptr ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newTranslate(self, p)
-proc putref_target*(self: ptr ISVGAElement, v: ptr ISVGAnimatedString): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_target(self, v)
-proc get_target*(self: ptr ISVGAElement, p: ptr ptr ISVGAnimatedString): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_target(self, p)
-proc putref_viewTarget*(self: ptr ISVGViewElement, v: ptr ISVGStringList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_viewTarget(self, v)
-proc get_viewTarget*(self: ptr ISVGViewElement, p: ptr ptr ISVGStringList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_viewTarget(self, p)
-proc get_code*(self: ptr IHTMLMediaError, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_code(self, p)
-proc get_length*(self: ptr IHTMLTimeRanges, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc start*(self: ptr IHTMLTimeRanges, index: LONG, startTime: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.start(self, index, startTime)
-proc `end`*(self: ptr IHTMLTimeRanges, index: LONG, endTime: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.`end`(self, index, endTime)
-proc startDouble*(self: ptr IHTMLTimeRanges2, index: LONG, startTime: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.startDouble(self, index, startTime)
-proc endDouble*(self: ptr IHTMLTimeRanges2, index: LONG, endTime: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.endDouble(self, index, endTime)
-proc get_error*(self: ptr IHTMLMediaElement, p: ptr ptr IHTMLMediaError): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_error(self, p)
-proc put_src*(self: ptr IHTMLMediaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
-proc get_src*(self: ptr IHTMLMediaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
-proc get_currentSrc*(self: ptr IHTMLMediaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_currentSrc(self, p)
-proc get_networkState*(self: ptr IHTMLMediaElement, p: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_networkState(self, p)
-proc put_preload*(self: ptr IHTMLMediaElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_preload(self, v)
-proc get_preload*(self: ptr IHTMLMediaElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_preload(self, p)
-proc get_buffered*(self: ptr IHTMLMediaElement, p: ptr ptr IHTMLTimeRanges): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_buffered(self, p)
-proc load*(self: ptr IHTMLMediaElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.load(self)
-proc canPlayType*(self: ptr IHTMLMediaElement, `type`: BSTR, canPlay: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.canPlayType(self, `type`, canPlay)
-proc get_seeking*(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_seeking(self, p)
-proc put_currentTime*(self: ptr IHTMLMediaElement, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_currentTime(self, v)
-proc get_currentTime*(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_currentTime(self, p)
-proc get_initialTime*(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_initialTime(self, p)
-proc get_duration*(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_duration(self, p)
-proc get_paused*(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paused(self, p)
-proc put_defaultPlaybackRate*(self: ptr IHTMLMediaElement, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defaultPlaybackRate(self, v)
-proc get_defaultPlaybackRate*(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultPlaybackRate(self, p)
-proc put_playbackRate*(self: ptr IHTMLMediaElement, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_playbackRate(self, v)
-proc get_playbackRate*(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_playbackRate(self, p)
-proc get_played*(self: ptr IHTMLMediaElement, p: ptr ptr IHTMLTimeRanges): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_played(self, p)
-proc get_seekable*(self: ptr IHTMLMediaElement, p: ptr ptr IHTMLTimeRanges): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_seekable(self, p)
-proc get_ended*(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ended(self, p)
-proc put_autoplay*(self: ptr IHTMLMediaElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_autoplay(self, v)
-proc get_autoplay*(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_autoplay(self, p)
-proc put_loop*(self: ptr IHTMLMediaElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_loop(self, v)
-proc get_loop*(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_loop(self, p)
-proc play*(self: ptr IHTMLMediaElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.play(self)
-proc pause*(self: ptr IHTMLMediaElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.pause(self)
-proc put_controls*(self: ptr IHTMLMediaElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_controls(self, v)
-proc get_controls*(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_controls(self, p)
-proc put_volume*(self: ptr IHTMLMediaElement, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_volume(self, v)
-proc get_volume*(self: ptr IHTMLMediaElement, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_volume(self, p)
-proc put_muted*(self: ptr IHTMLMediaElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_muted(self, v)
-proc get_muted*(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_muted(self, p)
-proc put_autobuffer*(self: ptr IHTMLMediaElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_autobuffer(self, v)
-proc get_autobuffer*(self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_autobuffer(self, p)
-proc put_currentTimeDouble*(self: ptr IHTMLMediaElement2, v: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_currentTimeDouble(self, v)
-proc get_currentTimeDouble*(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_currentTimeDouble(self, p)
-proc get_initialTimeDouble*(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_initialTimeDouble(self, p)
-proc get_durationDouble*(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_durationDouble(self, p)
-proc put_defaultPlaybackRateDouble*(self: ptr IHTMLMediaElement2, v: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defaultPlaybackRateDouble(self, v)
-proc get_defaultPlaybackRateDouble*(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultPlaybackRateDouble(self, p)
-proc put_playbackRateDouble*(self: ptr IHTMLMediaElement2, v: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_playbackRateDouble(self, v)
-proc get_playbackRateDouble*(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_playbackRateDouble(self, p)
-proc put_volumeDouble*(self: ptr IHTMLMediaElement2, v: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_volumeDouble(self, v)
-proc get_volumeDouble*(self: ptr IHTMLMediaElement2, p: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_volumeDouble(self, p)
-proc put_msPlayToDisabled*(self: ptr IHTMLMSMediaElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msPlayToDisabled(self, v)
-proc get_msPlayToDisabled*(self: ptr IHTMLMSMediaElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msPlayToDisabled(self, p)
-proc put_msPlayToPrimary*(self: ptr IHTMLMSMediaElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_msPlayToPrimary(self, v)
-proc get_msPlayToPrimary*(self: ptr IHTMLMSMediaElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msPlayToPrimary(self, p)
-proc put_src*(self: ptr IHTMLSourceElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
-proc get_src*(self: ptr IHTMLSourceElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
-proc put_type*(self: ptr IHTMLSourceElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr IHTMLSourceElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_media*(self: ptr IHTMLSourceElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_media(self, v)
-proc get_media*(self: ptr IHTMLSourceElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_media(self, p)
-proc put_width*(self: ptr IHTMLVideoElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
-proc get_width*(self: ptr IHTMLVideoElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc put_height*(self: ptr IHTMLVideoElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
-proc get_height*(self: ptr IHTMLVideoElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc get_videoWidth*(self: ptr IHTMLVideoElement, p: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_videoWidth(self, p)
-proc get_videoHeight*(self: ptr IHTMLVideoElement, p: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_videoHeight(self, p)
-proc put_poster*(self: ptr IHTMLVideoElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_poster(self, v)
-proc get_poster*(self: ptr IHTMLVideoElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_poster(self, p)
-proc create*(self: ptr IHTMLAudioElementFactory, src: VARIANT, a: ptr ptr IHTMLAudioElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.create(self, src, a)
-proc get_correspondingElement*(self: ptr ISVGElementInstance, p: ptr ptr ISVGElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_correspondingElement(self, p)
-proc get_correspondingUseElement*(self: ptr ISVGElementInstance, p: ptr ptr ISVGUseElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_correspondingUseElement(self, p)
-proc get_parentNode*(self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentNode(self, p)
-proc get_childNodes*(self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstanceList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_childNodes(self, p)
-proc get_firstChild*(self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_firstChild(self, p)
-proc get_lastChild*(self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lastChild(self, p)
-proc get_previousSibling*(self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_previousSibling(self, p)
-proc get_nextSibling*(self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nextSibling(self, p)
-proc get_length*(self: ptr ISVGElementInstanceList, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc item*(self: ptr ISVGElementInstanceList, index: LONG, ppResult: ptr ptr ISVGElementInstance): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, ppResult)
-proc put_code*(self: ptr IDOMException, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_code(self, v)
-proc get_code*(self: ptr IDOMException, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_code(self, p)
-proc get_message*(self: ptr IDOMException, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_message(self, p)
-proc put_code*(self: ptr IRangeException, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_code(self, v)
-proc get_code*(self: ptr IRangeException, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_code(self, p)
-proc get_message*(self: ptr IRangeException, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_message(self, p)
-proc put_code*(self: ptr ISVGException, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_code(self, v)
-proc get_code*(self: ptr ISVGException, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_code(self, p)
-proc get_message*(self: ptr ISVGException, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_message(self, p)
-proc put_code*(self: ptr IEventException, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_code(self, v)
-proc get_code*(self: ptr IEventException, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_code(self, p)
-proc get_message*(self: ptr IEventException, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_message(self, p)
-proc put_type*(self: ptr ISVGScriptElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr ISVGScriptElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_type*(self: ptr ISVGStyleElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_type(self, v)
-proc get_type*(self: ptr ISVGStyleElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc put_media*(self: ptr ISVGStyleElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_media(self, v)
-proc get_media*(self: ptr ISVGStyleElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_media(self, p)
-proc putref_textLength*(self: ptr ISVGTextContentElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_textLength(self, v)
-proc get_textLength*(self: ptr ISVGTextContentElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textLength(self, p)
-proc putref_lengthAdjust*(self: ptr ISVGTextContentElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_lengthAdjust(self, v)
-proc get_lengthAdjust*(self: ptr ISVGTextContentElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lengthAdjust(self, p)
-proc getNumberOfChars*(self: ptr ISVGTextContentElement, pResult: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getNumberOfChars(self, pResult)
-proc getComputedTextLength*(self: ptr ISVGTextContentElement, pResult: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getComputedTextLength(self, pResult)
-proc getSubStringLength*(self: ptr ISVGTextContentElement, charnum: LONG, nchars: LONG, pResult: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getSubStringLength(self, charnum, nchars, pResult)
-proc getStartPositionOfChar*(self: ptr ISVGTextContentElement, charnum: LONG, ppResult: ptr ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getStartPositionOfChar(self, charnum, ppResult)
-proc getEndPositionOfChar*(self: ptr ISVGTextContentElement, charnum: LONG, ppResult: ptr ptr ISVGPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getEndPositionOfChar(self, charnum, ppResult)
-proc getExtentOfChar*(self: ptr ISVGTextContentElement, charnum: LONG, ppResult: ptr ptr ISVGRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getExtentOfChar(self, charnum, ppResult)
-proc getRotationOfChar*(self: ptr ISVGTextContentElement, charnum: LONG, pResult: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getRotationOfChar(self, charnum, pResult)
-proc getCharNumAtPosition*(self: ptr ISVGTextContentElement, point: ptr ISVGPoint, pResult: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getCharNumAtPosition(self, point, pResult)
-proc selectSubString*(self: ptr ISVGTextContentElement, charnum: LONG, nchars: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.selectSubString(self, charnum, nchars)
-proc putref_x*(self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_x(self, v)
-proc get_x*(self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc putref_y*(self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_y(self, v)
-proc get_y*(self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
-proc putref_dx*(self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_dx(self, v)
-proc get_dx*(self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dx(self, p)
-proc putref_dy*(self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_dy(self, v)
-proc get_dy*(self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dy(self, p)
-proc putref_rotate*(self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedNumberList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_rotate(self, v)
-proc get_rotate*(self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedNumberList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rotate(self, p)
-proc get_name*(self: ptr IDOMDocumentType, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc get_entities*(self: ptr IDOMDocumentType, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_entities(self, p)
-proc get_notations*(self: ptr IDOMDocumentType, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_notations(self, p)
-proc get_publicId*(self: ptr IDOMDocumentType, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_publicId(self, p)
-proc get_systemId*(self: ptr IDOMDocumentType, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_systemId(self, p)
-proc get_internalSubset*(self: ptr IDOMDocumentType, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_internalSubset(self, p)
-proc get_root*(self: ptr IDOMNodeIterator, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_root(self, p)
-proc get_whatToShow*(self: ptr IDOMNodeIterator, p: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_whatToShow(self, p)
-proc get_filter*(self: ptr IDOMNodeIterator, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_filter(self, p)
-proc get_expandEntityReferences*(self: ptr IDOMNodeIterator, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_expandEntityReferences(self, p)
-proc nextNode*(self: ptr IDOMNodeIterator, ppRetNode: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.nextNode(self, ppRetNode)
-proc previousNode*(self: ptr IDOMNodeIterator, ppRetNode: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.previousNode(self, ppRetNode)
-proc detach*(self: ptr IDOMNodeIterator): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.detach(self)
-proc get_root*(self: ptr IDOMTreeWalker, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_root(self, p)
-proc get_whatToShow*(self: ptr IDOMTreeWalker, p: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_whatToShow(self, p)
-proc get_filter*(self: ptr IDOMTreeWalker, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_filter(self, p)
-proc get_expandEntityReferences*(self: ptr IDOMTreeWalker, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_expandEntityReferences(self, p)
-proc putref_currentNode*(self: ptr IDOMTreeWalker, v: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_currentNode(self, v)
-proc get_currentNode*(self: ptr IDOMTreeWalker, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_currentNode(self, p)
-proc parentNode*(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.parentNode(self, ppRetNode)
-proc firstChild*(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.firstChild(self, ppRetNode)
-proc lastChild*(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.lastChild(self, ppRetNode)
-proc previousSibling*(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.previousSibling(self, ppRetNode)
-proc nextSibling*(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.nextSibling(self, ppRetNode)
-proc previousNode*(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.previousNode(self, ppRetNode)
-proc nextNode*(self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.nextNode(self, ppRetNode)
-proc get_target*(self: ptr IDOMProcessingInstruction, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_target(self, p)
-proc put_data*(self: ptr IDOMProcessingInstruction, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_data(self, v)
-proc get_data*(self: ptr IDOMProcessingInstruction, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_data(self, p)
-proc get_navigation*(self: ptr IHTMLPerformance, p: ptr ptr IHTMLPerformanceNavigation): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_navigation(self, p)
-proc get_timing*(self: ptr IHTMLPerformance, p: ptr ptr IHTMLPerformanceTiming): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_timing(self, p)
-proc toString*(self: ptr IHTMLPerformance, string: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, string)
-proc toJSON*(self: ptr IHTMLPerformance, pVar: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toJSON(self, pVar)
-proc get_type*(self: ptr IHTMLPerformanceNavigation, p: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
-proc get_redirectCount*(self: ptr IHTMLPerformanceNavigation, p: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_redirectCount(self, p)
-proc toString*(self: ptr IHTMLPerformanceNavigation, string: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, string)
-proc toJSON*(self: ptr IHTMLPerformanceNavigation, pVar: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toJSON(self, pVar)
-proc get_navigationStart*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_navigationStart(self, p)
-proc get_unloadEventStart*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_unloadEventStart(self, p)
-proc get_unloadEventEnd*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_unloadEventEnd(self, p)
-proc get_redirectStart*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_redirectStart(self, p)
-proc get_redirectEnd*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_redirectEnd(self, p)
-proc get_fetchStart*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fetchStart(self, p)
-proc get_domainLookupStart*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_domainLookupStart(self, p)
-proc get_domainLookupEnd*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_domainLookupEnd(self, p)
-proc get_connectStart*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_connectStart(self, p)
-proc get_connectEnd*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_connectEnd(self, p)
-proc get_requestStart*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_requestStart(self, p)
-proc get_responseStart*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_responseStart(self, p)
-proc get_responseEnd*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_responseEnd(self, p)
-proc get_domLoading*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_domLoading(self, p)
-proc get_domInteractive*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_domInteractive(self, p)
-proc get_domContentLoadedEventStart*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_domContentLoadedEventStart(self, p)
-proc get_domContentLoadedEventEnd*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_domContentLoadedEventEnd(self, p)
-proc get_domComplete*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_domComplete(self, p)
-proc get_loadEventStart*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_loadEventStart(self, p)
-proc get_loadEventEnd*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_loadEventEnd(self, p)
-proc get_msFirstPaint*(self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_msFirstPaint(self, p)
-proc toString*(self: ptr IHTMLPerformanceTiming, string: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, string)
-proc toJSON*(self: ptr IHTMLPerformanceTiming, pVar: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toJSON(self, pVar)
-proc mStartDoc*(self: ptr ITemplatePrinter, bstrTitle: BSTR, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.startDoc(self, bstrTitle, p)
-proc stopDoc*(self: ptr ITemplatePrinter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.stopDoc(self)
-proc printBlankPage*(self: ptr ITemplatePrinter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.printBlankPage(self)
-proc printPage*(self: ptr ITemplatePrinter, pElemDisp: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.printPage(self, pElemDisp)
-proc ensurePrintDialogDefaults*(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ensurePrintDialogDefaults(self, p)
-proc showPrintDialog*(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.showPrintDialog(self, p)
-proc showPageSetupDialog*(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.showPageSetupDialog(self, p)
-proc printNonNative*(self: ptr ITemplatePrinter, pMarkup: ptr IUnknown, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.printNonNative(self, pMarkup, p)
-proc printNonNativeFrames*(self: ptr ITemplatePrinter, pMarkup: ptr IUnknown, fActiveFrame: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.printNonNativeFrames(self, pMarkup, fActiveFrame)
-proc put_framesetDocument*(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_framesetDocument(self, v)
-proc get_framesetDocument*(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_framesetDocument(self, p)
-proc put_frameActive*(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_frameActive(self, v)
-proc get_frameActive*(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frameActive(self, p)
-proc put_frameAsShown*(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_frameAsShown(self, v)
-proc get_frameAsShown*(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frameAsShown(self, p)
-proc put_selection*(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selection(self, v)
-proc get_selection*(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selection(self, p)
-proc put_selectedPages*(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selectedPages(self, v)
-proc get_selectedPages*(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selectedPages(self, p)
-proc put_currentPage*(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_currentPage(self, v)
-proc get_currentPage*(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_currentPage(self, p)
-proc put_currentPageAvail*(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_currentPageAvail(self, v)
-proc get_currentPageAvail*(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_currentPageAvail(self, p)
-proc put_collate*(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_collate(self, v)
-proc get_collate*(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_collate(self, p)
-proc get_duplex*(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_duplex(self, p)
-proc put_copies*(self: ptr ITemplatePrinter, v: USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_copies(self, v)
-proc get_copies*(self: ptr ITemplatePrinter, p: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_copies(self, p)
-proc put_pageFrom*(self: ptr ITemplatePrinter, v: USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageFrom(self, v)
-proc get_pageFrom*(self: ptr ITemplatePrinter, p: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageFrom(self, p)
-proc put_pageTo*(self: ptr ITemplatePrinter, v: USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageTo(self, v)
-proc get_pageTo*(self: ptr ITemplatePrinter, p: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageTo(self, p)
-proc put_tableOfLinks*(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_tableOfLinks(self, v)
-proc get_tableOfLinks*(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tableOfLinks(self, p)
-proc put_allLinkedDocuments*(self: ptr ITemplatePrinter, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_allLinkedDocuments(self, v)
-proc get_allLinkedDocuments*(self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_allLinkedDocuments(self, p)
-proc put_header*(self: ptr ITemplatePrinter, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_header(self, v)
-proc get_header*(self: ptr ITemplatePrinter, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_header(self, p)
-proc put_footer*(self: ptr ITemplatePrinter, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_footer(self, v)
-proc get_footer*(self: ptr ITemplatePrinter, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_footer(self, p)
-proc put_marginLeft*(self: ptr ITemplatePrinter, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginLeft(self, v)
-proc get_marginLeft*(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginLeft(self, p)
-proc put_marginRight*(self: ptr ITemplatePrinter, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginRight(self, v)
-proc get_marginRight*(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginRight(self, p)
-proc put_marginTop*(self: ptr ITemplatePrinter, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginTop(self, v)
-proc get_marginTop*(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginTop(self, p)
-proc put_marginBottom*(self: ptr ITemplatePrinter, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginBottom(self, v)
-proc get_marginBottom*(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginBottom(self, p)
-proc get_pageWidth*(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageWidth(self, p)
-proc get_pageHeight*(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageHeight(self, p)
-proc get_unprintableLeft*(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_unprintableLeft(self, p)
-proc get_unprintableTop*(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_unprintableTop(self, p)
-proc get_unprintableRight*(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_unprintableRight(self, p)
-proc get_unprintableBottom*(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_unprintableBottom(self, p)
-proc updatePageStatus*(self: ptr ITemplatePrinter, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.updatePageStatus(self, p)
-proc put_selectionEnabled*(self: ptr ITemplatePrinter2, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selectionEnabled(self, v)
-proc get_selectionEnabled*(self: ptr ITemplatePrinter2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selectionEnabled(self, p)
-proc put_frameActiveEnabled*(self: ptr ITemplatePrinter2, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_frameActiveEnabled(self, v)
-proc get_frameActiveEnabled*(self: ptr ITemplatePrinter2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frameActiveEnabled(self, p)
-proc put_orientation*(self: ptr ITemplatePrinter2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_orientation(self, v)
-proc get_orientation*(self: ptr ITemplatePrinter2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_orientation(self, p)
-proc put_usePrinterCopyCollate*(self: ptr ITemplatePrinter2, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_usePrinterCopyCollate(self, v)
-proc get_usePrinterCopyCollate*(self: ptr ITemplatePrinter2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_usePrinterCopyCollate(self, p)
-proc deviceSupports*(self: ptr ITemplatePrinter2, bstrProperty: BSTR, pvar: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deviceSupports(self, bstrProperty, pvar)
-proc put_headerFooterFont*(self: ptr ITemplatePrinter3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_headerFooterFont(self, v)
-proc get_headerFooterFont*(self: ptr ITemplatePrinter3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_headerFooterFont(self, p)
-proc getPageMarginTop*(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pageWidth: LONG, pageHeight: LONG, pMargin: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getPageMarginTop(self, pageRule, pageWidth, pageHeight, pMargin)
-proc getPageMarginRight*(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pageWidth: LONG, pageHeight: LONG, pMargin: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getPageMarginRight(self, pageRule, pageWidth, pageHeight, pMargin)
-proc getPageMarginBottom*(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pageWidth: LONG, pageHeight: LONG, pMargin: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getPageMarginBottom(self, pageRule, pageWidth, pageHeight, pMargin)
-proc getPageMarginLeft*(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pageWidth: LONG, pageHeight: LONG, pMargin: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getPageMarginLeft(self, pageRule, pageWidth, pageHeight, pMargin)
-proc getPageMarginTopImportant*(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pbImportant: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getPageMarginTopImportant(self, pageRule, pbImportant)
-proc getPageMarginRightImportant*(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pbImportant: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getPageMarginRightImportant(self, pageRule, pbImportant)
-proc getPageMarginBottomImportant*(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pbImportant: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getPageMarginBottomImportant(self, pageRule, pbImportant)
-proc getPageMarginLeftImportant*(self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pbImportant: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getPageMarginLeftImportant(self, pageRule, pbImportant)
-proc startPrint*(self: ptr IPrintManagerTemplatePrinter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.startPrint(self)
-proc drawPreviewPage*(self: ptr IPrintManagerTemplatePrinter, pElemDisp: ptr IDispatch, nPage: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.drawPreviewPage(self, pElemDisp, nPage)
-proc setPageCount*(self: ptr IPrintManagerTemplatePrinter, nPage: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setPageCount(self, nPage)
-proc invalidatePreview*(self: ptr IPrintManagerTemplatePrinter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.invalidatePreview(self)
-proc getPrintTaskOptionValue*(self: ptr IPrintManagerTemplatePrinter, bstrKey: BSTR, pvarin: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getPrintTaskOptionValue(self, bstrKey, pvarin)
-proc endPrint*(self: ptr IPrintManagerTemplatePrinter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.endPrint(self)
-proc putref_startOffset*(self: ptr ISVGTextPathElement, v: ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_startOffset(self, v)
-proc get_startOffset*(self: ptr ISVGTextPathElement, p: ptr ptr ISVGAnimatedLength): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_startOffset(self, p)
-proc putref_method*(self: ptr ISVGTextPathElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_method(self, v)
-proc get_method*(self: ptr ISVGTextPathElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_method(self, p)
-proc putref_spacing*(self: ptr ISVGTextPathElement, v: ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_spacing(self, v)
-proc get_spacing*(self: ptr ISVGTextPathElement, p: ptr ptr ISVGAnimatedEnumeration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_spacing(self, p)
-proc serializeToString*(self: ptr IDOMXmlSerializer, pNode: ptr IHTMLDOMNode, pString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.serializeToString(self, pNode, pString)
-proc create*(self: ptr IDOMXmlSerializerFactory, a: ptr ptr IDOMXmlSerializer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.create(self, a)
-proc parseFromString*(self: ptr IDOMParser, xmlSource: BSTR, mimeType: BSTR, ppNode: ptr ptr IHTMLDocument2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.parseFromString(self, xmlSource, mimeType, ppNode)
-proc create*(self: ptr IDOMParserFactory, a: ptr ptr IDOMParser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.create(self, a)
-proc put_value*(self: ptr IHTMLProgressElement, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
-proc get_value*(self: ptr IHTMLProgressElement, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
-proc put_max*(self: ptr IHTMLProgressElement, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_max(self, v)
-proc get_max*(self: ptr IHTMLProgressElement, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_max(self, p)
-proc get_position*(self: ptr IHTMLProgressElement, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_position(self, p)
-proc get_form*(self: ptr IHTMLProgressElement, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
-proc get_propertyName*(self: ptr IDOMMSTransitionEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_propertyName(self, p)
-proc get_elapsedTime*(self: ptr IDOMMSTransitionEvent, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_elapsedTime(self, p)
-proc initMSTransitionEvent*(self: ptr IDOMMSTransitionEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, propertyName: BSTR, elapsedTime: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initMSTransitionEvent(self, eventType, canBubble, cancelable, propertyName, elapsedTime)
-proc get_animationName*(self: ptr IDOMMSAnimationEvent, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_animationName(self, p)
-proc get_elapsedTime*(self: ptr IDOMMSAnimationEvent, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_elapsedTime(self, p)
-proc initMSAnimationEvent*(self: ptr IDOMMSAnimationEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, animationName: BSTR, elapsedTime: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initMSAnimationEvent(self, eventType, canBubble, cancelable, animationName, elapsedTime)
-proc getCurrentPosition*(self: ptr IWebGeolocation, successCallback: ptr IDispatch, errorCallback: ptr IDispatch, options: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getCurrentPosition(self, successCallback, errorCallback, options)
-proc watchPosition*(self: ptr IWebGeolocation, successCallback: ptr IDispatch, errorCallback: ptr IDispatch, options: ptr IDispatch, watchId: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.watchPosition(self, successCallback, errorCallback, options, watchId)
-proc clearWatch*(self: ptr IWebGeolocation, watchId: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clearWatch(self, watchId)
-proc get_latitude*(self: ptr IWebGeocoordinates, p: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_latitude(self, p)
-proc get_longitude*(self: ptr IWebGeocoordinates, p: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_longitude(self, p)
-proc get_altitude*(self: ptr IWebGeocoordinates, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_altitude(self, p)
-proc get_accuracy*(self: ptr IWebGeocoordinates, p: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accuracy(self, p)
-proc get_altitudeAccuracy*(self: ptr IWebGeocoordinates, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_altitudeAccuracy(self, p)
-proc get_heading*(self: ptr IWebGeocoordinates, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_heading(self, p)
-proc get_speed*(self: ptr IWebGeocoordinates, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_speed(self, p)
-proc get_code*(self: ptr IWebGeopositionError, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_code(self, p)
-proc get_message*(self: ptr IWebGeopositionError, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_message(self, p)
-proc get_coords*(self: ptr IWebGeoposition, p: ptr ptr IWebGeocoordinates): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_coords(self, p)
-proc get_timestamp*(self: ptr IWebGeoposition, p: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_timestamp(self, p)
-proc get_javaEnabled*(self: ptr IClientCaps, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_javaEnabled(self, p)
-proc get_cookieEnabled*(self: ptr IClientCaps, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cookieEnabled(self, p)
-proc get_cpuClass*(self: ptr IClientCaps, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cpuClass(self, p)
-proc get_systemLanguage*(self: ptr IClientCaps, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_systemLanguage(self, p)
-proc get_userLanguage*(self: ptr IClientCaps, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_userLanguage(self, p)
-proc get_platform*(self: ptr IClientCaps, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_platform(self, p)
-proc get_connectionSpeed*(self: ptr IClientCaps, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_connectionSpeed(self, p)
-proc get_onLine*(self: ptr IClientCaps, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onLine(self, p)
-proc get_colorDepth*(self: ptr IClientCaps, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_colorDepth(self, p)
-proc get_bufferDepth*(self: ptr IClientCaps, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bufferDepth(self, p)
-proc get_width*(self: ptr IClientCaps, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
-proc get_height*(self: ptr IClientCaps, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
-proc get_availHeight*(self: ptr IClientCaps, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_availHeight(self, p)
-proc get_availWidth*(self: ptr IClientCaps, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_availWidth(self, p)
-proc get_connectionType*(self: ptr IClientCaps, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_connectionType(self, p)
-proc isComponentInstalled*(self: ptr IClientCaps, bstrName: BSTR, bstrUrl: BSTR, bStrVer: BSTR, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.isComponentInstalled(self, bstrName, bstrUrl, bStrVer, p)
-proc getComponentVersion*(self: ptr IClientCaps, bstrName: BSTR, bstrUrl: BSTR, pbstrVer: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getComponentVersion(self, bstrName, bstrUrl, pbstrVer)
-proc compareVersions*(self: ptr IClientCaps, bstrVer1: BSTR, bstrVer2: BSTR, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.compareVersions(self, bstrVer1, bstrVer2, p)
-proc addComponentRequest*(self: ptr IClientCaps, bstrName: BSTR, bstrUrl: BSTR, bStrVer: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addComponentRequest(self, bstrName, bstrUrl, bStrVer)
-proc doComponentRequest*(self: ptr IClientCaps, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.doComponentRequest(self, p)
-proc clearComponentRequest*(self: ptr IClientCaps): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clearComponentRequest(self)
-proc get_lastState*(self: ptr IDOMMSManipulationEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lastState(self, p)
-proc get_currentState*(self: ptr IDOMMSManipulationEvent, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_currentState(self, p)
-proc initMSManipulationEvent*(self: ptr IDOMMSManipulationEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, viewArg: ptr IHTMLWindow2, detailArg: LONG, lastState: LONG, currentState: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initMSManipulationEvent(self, eventType, canBubble, cancelable, viewArg, detailArg, lastState, currentState)
-proc get_wasClean*(self: ptr IDOMCloseEvent, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wasClean(self, p)
-proc initCloseEvent*(self: ptr IDOMCloseEvent, eventType: BSTR, canBubble: VARIANT_BOOL, cancelable: VARIANT_BOOL, wasClean: VARIANT_BOOL, code: LONG, reason: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.initCloseEvent(self, eventType, canBubble, cancelable, wasClean, code, reason)
-proc get_status*(self: ptr IHTMLApplicationCache, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_status(self, p)
-proc put_onchecking*(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onchecking(self, v)
-proc get_onchecking*(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onchecking(self, p)
-proc put_onerror*(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerror(self, v)
-proc get_onerror*(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerror(self, p)
-proc put_onnoupdate*(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onnoupdate(self, v)
-proc get_onnoupdate*(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onnoupdate(self, p)
-proc put_ondownloading*(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondownloading(self, v)
-proc get_ondownloading*(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondownloading(self, p)
-proc put_onprogress*(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onprogress(self, v)
-proc get_onprogress*(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onprogress(self, p)
-proc put_onupdateready*(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onupdateready(self, v)
-proc get_onupdateready*(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onupdateready(self, p)
-proc put_oncached*(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_oncached(self, v)
-proc get_oncached*(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_oncached(self, p)
-proc put_onobsolete*(self: ptr IHTMLApplicationCache, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onobsolete(self, v)
-proc get_onobsolete*(self: ptr IHTMLApplicationCache, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onobsolete(self, p)
-proc update*(self: ptr IHTMLApplicationCache): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.update(self)
-proc swapCache*(self: ptr IHTMLApplicationCache): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.swapCache(self)
-proc abort*(self: ptr IHTMLApplicationCache): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.abort(self)
-proc GetElement*(self: ptr ICSSFilterSite, Element: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetElement(self, Element)
-proc FireOnFilterChangeEvent*(self: ptr ICSSFilterSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FireOnFilterChangeEvent(self)
-proc SetSite*(self: ptr ICSSFilter, pSink: ptr ICSSFilterSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSite(self, pSink)
-proc OnAmbientPropertyChange*(self: ptr ICSSFilter, dispid: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnAmbientPropertyChange(self, dispid)
-proc ValidateSecureUrl*(self: ptr ISecureUrlHost, pfAllow: ptr WINBOOL, pchUrlInQuestion: ptr OLECHAR, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ValidateSecureUrl(self, pfAllow, pchUrlInQuestion, dwFlags)
-proc CreateMarkupPointer*(self: ptr IMarkupServices, ppPointer: ptr ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateMarkupPointer(self, ppPointer)
-proc CreateMarkupContainer*(self: ptr IMarkupServices, ppMarkupContainer: ptr ptr IMarkupContainer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateMarkupContainer(self, ppMarkupContainer)
-proc CreateElement*(self: ptr IMarkupServices, tagID: ELEMENT_TAG_ID, pchAttributes: ptr OLECHAR, ppElement: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateElement(self, tagID, pchAttributes, ppElement)
-proc CloneElement*(self: ptr IMarkupServices, pElemCloneThis: ptr IHTMLElement, ppElementTheClone: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CloneElement(self, pElemCloneThis, ppElementTheClone)
-proc InsertElement*(self: ptr IMarkupServices, pElementInsert: ptr IHTMLElement, pPointerStart: ptr IMarkupPointer, pPointerFinish: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InsertElement(self, pElementInsert, pPointerStart, pPointerFinish)
-proc RemoveElement*(self: ptr IMarkupServices, pElementRemove: ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveElement(self, pElementRemove)
-proc Remove*(self: ptr IMarkupServices, pPointerStart: ptr IMarkupPointer, pPointerFinish: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Remove(self, pPointerStart, pPointerFinish)
-proc Copy*(self: ptr IMarkupServices, pPointerSourceStart: ptr IMarkupPointer, pPointerSourceFinish: ptr IMarkupPointer, pPointerTarget: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Copy(self, pPointerSourceStart, pPointerSourceFinish, pPointerTarget)
-proc Move*(self: ptr IMarkupServices, pPointerSourceStart: ptr IMarkupPointer, pPointerSourceFinish: ptr IMarkupPointer, pPointerTarget: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Move(self, pPointerSourceStart, pPointerSourceFinish, pPointerTarget)
-proc InsertText*(self: ptr IMarkupServices, pchText: ptr OLECHAR, cch: LONG, pPointerTarget: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InsertText(self, pchText, cch, pPointerTarget)
-proc ParseString*(self: ptr IMarkupServices, pchHTML: ptr OLECHAR, dwFlags: DWORD, ppContainerResult: ptr ptr IMarkupContainer, ppPointerStart: ptr IMarkupPointer, ppPointerFinish: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseString(self, pchHTML, dwFlags, ppContainerResult, ppPointerStart, ppPointerFinish)
-proc ParseGlobal*(self: ptr IMarkupServices, hglobalHTML: HGLOBAL, dwFlags: DWORD, ppContainerResult: ptr ptr IMarkupContainer, pPointerStart: ptr IMarkupPointer, pPointerFinish: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseGlobal(self, hglobalHTML, dwFlags, ppContainerResult, pPointerStart, pPointerFinish)
-proc IsScopedElement*(self: ptr IMarkupServices, pElement: ptr IHTMLElement, pfScoped: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsScopedElement(self, pElement, pfScoped)
-proc GetElementTagId*(self: ptr IMarkupServices, pElement: ptr IHTMLElement, ptagId: ptr ELEMENT_TAG_ID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetElementTagId(self, pElement, ptagId)
-proc GetTagIDForName*(self: ptr IMarkupServices, bstrName: BSTR, ptagId: ptr ELEMENT_TAG_ID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTagIDForName(self, bstrName, ptagId)
-proc GetNameForTagID*(self: ptr IMarkupServices, tagId: ELEMENT_TAG_ID, pbstrName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNameForTagID(self, tagId, pbstrName)
-proc MovePointersToRange*(self: ptr IMarkupServices, pIRange: ptr IHTMLTxtRange, pPointerStart: ptr IMarkupPointer, pPointerFinish: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MovePointersToRange(self, pIRange, pPointerStart, pPointerFinish)
-proc MoveRangeToPointers*(self: ptr IMarkupServices, pPointerStart: ptr IMarkupPointer, pPointerFinish: ptr IMarkupPointer, pIRange: ptr IHTMLTxtRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveRangeToPointers(self, pPointerStart, pPointerFinish, pIRange)
-proc BeginUndoUnit*(self: ptr IMarkupServices, pchTitle: ptr OLECHAR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeginUndoUnit(self, pchTitle)
-proc EndUndoUnit*(self: ptr IMarkupServices): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EndUndoUnit(self)
-proc ParseGlobalEx*(self: ptr IMarkupServices2, hglobalHTML: HGLOBAL, dwFlags: DWORD, pContext: ptr IMarkupContainer, ppContainerResult: ptr ptr IMarkupContainer, pPointerStart: ptr IMarkupPointer, pPointerFinish: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseGlobalEx(self, hglobalHTML, dwFlags, pContext, ppContainerResult, pPointerStart, pPointerFinish)
-proc ValidateElements*(self: ptr IMarkupServices2, pPointerStart: ptr IMarkupPointer, pPointerFinish: ptr IMarkupPointer, pPointerTarget: ptr IMarkupPointer, pPointerStatus: ptr IMarkupPointer, ppElemFailBottom: ptr ptr IHTMLElement, ppElemFailTop: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ValidateElements(self, pPointerStart, pPointerFinish, pPointerTarget, pPointerStatus, ppElemFailBottom, ppElemFailTop)
-proc SaveSegmentsToClipboard*(self: ptr IMarkupServices2, pSegmentList: ptr ISegmentList, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SaveSegmentsToClipboard(self, pSegmentList, dwFlags)
-proc OwningDoc*(self: ptr IMarkupContainer, ppDoc: ptr ptr IHTMLDocument2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OwningDoc(self, ppDoc)
-proc CreateChangeLog*(self: ptr IMarkupContainer2, pChangeSink: ptr IHTMLChangeSink, ppChangeLog: ptr ptr IHTMLChangeLog, fForward: WINBOOL, fBackward: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateChangeLog(self, pChangeSink, ppChangeLog, fForward, fBackward)
-proc RegisterForDirtyRange*(self: ptr IMarkupContainer2, pChangeSink: ptr IHTMLChangeSink, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterForDirtyRange(self, pChangeSink, pdwCookie)
-proc UnRegisterForDirtyRange*(self: ptr IMarkupContainer2, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnRegisterForDirtyRange(self, dwCookie)
-proc GetAndClearDirtyRange*(self: ptr IMarkupContainer2, dwCookie: DWORD, pIPointerBegin: ptr IMarkupPointer, pIPointerEnd: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAndClearDirtyRange(self, dwCookie, pIPointerBegin, pIPointerEnd)
-proc GetVersionNumber*(self: ptr IMarkupContainer2): LONG {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetVersionNumber(self)
-proc GetMasterElement*(self: ptr IMarkupContainer2, ppElementMaster: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMasterElement(self, ppElementMaster)
-proc ExecChange*(self: ptr IHTMLChangePlayback, pbRecord: ptr BYTE, fForward: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExecChange(self, pbRecord, fForward)
-proc OwningDoc*(self: ptr IMarkupPointer, ppDoc: ptr ptr IHTMLDocument2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OwningDoc(self, ppDoc)
-proc Gravity*(self: ptr IMarkupPointer, pGravity: ptr POINTER_GRAVITY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Gravity(self, pGravity)
-proc SetGravity*(self: ptr IMarkupPointer, Gravity: POINTER_GRAVITY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetGravity(self, Gravity)
-proc Cling*(self: ptr IMarkupPointer, pfCling: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Cling(self, pfCling)
-proc SetCling*(self: ptr IMarkupPointer, fCLing: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCling(self, fCLing)
-proc Unposition*(self: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unposition(self)
-proc IsPositioned*(self: ptr IMarkupPointer, pfPositioned: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsPositioned(self, pfPositioned)
-proc GetContainer*(self: ptr IMarkupPointer, ppContainer: ptr ptr IMarkupContainer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetContainer(self, ppContainer)
-proc MoveAdjacentToElement*(self: ptr IMarkupPointer, pElement: ptr IHTMLElement, eAdj: ELEMENT_ADJACENCY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveAdjacentToElement(self, pElement, eAdj)
-proc MoveToPointer*(self: ptr IMarkupPointer, pPointer: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveToPointer(self, pPointer)
-proc MoveToContainer*(self: ptr IMarkupPointer, pContainer: ptr IMarkupContainer, fAtStart: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveToContainer(self, pContainer, fAtStart)
-proc Left*(self: ptr IMarkupPointer, fMove: WINBOOL, pContext: ptr MARKUP_CONTEXT_TYPE, ppElement: ptr ptr IHTMLElement, pcch: ptr LONG, pchText: ptr OLECHAR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Left(self, fMove, pContext, ppElement, pcch, pchText)
-proc Right*(self: ptr IMarkupPointer, fMove: WINBOOL, pContext: ptr MARKUP_CONTEXT_TYPE, ppElement: ptr ptr IHTMLElement, pcch: ptr LONG, pchText: ptr OLECHAR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Right(self, fMove, pContext, ppElement, pcch, pchText)
-proc CurrentScope*(self: ptr IMarkupPointer, ppElemCurrent: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CurrentScope(self, ppElemCurrent)
-proc IsLeftOf*(self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsLeftOf(self, pPointerThat, pfResult)
-proc IsLeftOfOrEqualTo*(self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsLeftOfOrEqualTo(self, pPointerThat, pfResult)
-proc IsRightOf*(self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsRightOf(self, pPointerThat, pfResult)
-proc IsRightOfOrEqualTo*(self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsRightOfOrEqualTo(self, pPointerThat, pfResult)
-proc IsEqualTo*(self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfAreEqual: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsEqualTo(self, pPointerThat, pfAreEqual)
-proc MoveUnit*(self: ptr IMarkupPointer, muAction: MOVEUNIT_ACTION): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveUnit(self, muAction)
-proc FindText*(self: ptr IMarkupPointer, pchFindText: ptr OLECHAR, dwFlags: DWORD, pIEndMatch: ptr IMarkupPointer, pIEndSearch: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindText(self, pchFindText, dwFlags, pIEndMatch, pIEndSearch)
-proc IsAtWordBreak*(self: ptr IMarkupPointer2, pfAtBreak: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsAtWordBreak(self, pfAtBreak)
-proc GetMarkupPosition*(self: ptr IMarkupPointer2, plMP: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMarkupPosition(self, plMP)
-proc MoveToMarkupPosition*(self: ptr IMarkupPointer2, pContainer: ptr IMarkupContainer, lMP: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveToMarkupPosition(self, pContainer, lMP)
-proc MoveUnitBounded*(self: ptr IMarkupPointer2, muAction: MOVEUNIT_ACTION, pIBoundary: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveUnitBounded(self, muAction, pIBoundary)
-proc IsInsideURL*(self: ptr IMarkupPointer2, pRight: ptr IMarkupPointer, pfResult: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsInsideURL(self, pRight, pfResult)
-proc MoveToContent*(self: ptr IMarkupPointer2, pIElement: ptr IHTMLElement, fAtStart: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveToContent(self, pIElement, fAtStart)
-proc GetTextFragCount*(self: ptr IMarkupTextFrags, pcFrags: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTextFragCount(self, pcFrags)
-proc GetTextFrag*(self: ptr IMarkupTextFrags, iFrag: LONG, pbstrFrag: ptr BSTR, pPointerFrag: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTextFrag(self, iFrag, pbstrFrag, pPointerFrag)
-proc RemoveTextFrag*(self: ptr IMarkupTextFrags, iFrag: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveTextFrag(self, iFrag)
-proc InsertTextFrag*(self: ptr IMarkupTextFrags, iFrag: LONG, bstrInsert: BSTR, pPointerInsert: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InsertTextFrag(self, iFrag, bstrInsert, pPointerInsert)
-proc FindTextFragFromMarkupPointer*(self: ptr IMarkupTextFrags, pPointerFind: ptr IMarkupPointer, piFrag: ptr LONG, pfFragFound: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindTextFragFromMarkupPointer(self, pPointerFind, piFrag, pfFragFound)
-proc GetNextChange*(self: ptr IHTMLChangeLog, pbBuffer: ptr BYTE, nBufferSize: LONG, pnRecordLength: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNextChange(self, pbBuffer, nBufferSize, pnRecordLength)
-proc Notify*(self: ptr IHTMLChangeSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Notify(self)
-proc SetGenericParse*(self: ptr IXMLGenericParse, fDoGeneric: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetGenericParse(self, fDoGeneric)
-proc SnapRect*(self: ptr IHTMLEditHost, pIElement: ptr IHTMLElement, prcNew: ptr RECT, eHandle: ELEMENT_CORNER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SnapRect(self, pIElement, prcNew, eHandle)
-proc PreDrag*(self: ptr IHTMLEditHost2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreDrag(self)
-proc GetPointers*(self: ptr ISegment, pIStart: ptr IMarkupPointer, pIEnd: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPointers(self, pIStart, pIEnd)
-proc Current*(self: ptr ISegmentListIterator, ppISegment: ptr ptr ISegment): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Current(self, ppISegment)
-proc First*(self: ptr ISegmentListIterator): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.First(self)
-proc IsDone*(self: ptr ISegmentListIterator): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDone(self)
-proc Advance*(self: ptr ISegmentListIterator): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advance(self)
-proc CreateIterator*(self: ptr ISegmentList, ppIIter: ptr ptr ISegmentListIterator): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateIterator(self, ppIIter)
-proc GetType*(self: ptr ISegmentList, peType: ptr SELECTION_TYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetType(self, peType)
-proc IsEmpty*(self: ptr ISegmentList, pfEmpty: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsEmpty(self, pfEmpty)
-proc GetSequenceNumber*(self: ptr ISequenceNumber, nCurrent: LONG, pnNew: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSequenceNumber(self, nCurrent, pnNew)
-proc GetActiveIMM*(self: ptr IIMEServices, ppActiveIMM: ptr ptr IActiveIMMApp): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetActiveIMM(self, ppActiveIMM)
-proc MoveCaretToPointer*(self: ptr IHTMLCaret, pDispPointer: ptr IDisplayPointer, fScrollIntoView: WINBOOL, eDir: CARET_DIRECTION): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveCaretToPointer(self, pDispPointer, fScrollIntoView, eDir)
-proc MoveCaretToPointerEx*(self: ptr IHTMLCaret, pDispPointer: ptr IDisplayPointer, fVisible: WINBOOL, fScrollIntoView: WINBOOL, eDir: CARET_DIRECTION): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveCaretToPointerEx(self, pDispPointer, fVisible, fScrollIntoView, eDir)
-proc MoveMarkupPointerToCaret*(self: ptr IHTMLCaret, pIMarkupPointer: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveMarkupPointerToCaret(self, pIMarkupPointer)
-proc MoveDisplayPointerToCaret*(self: ptr IHTMLCaret, pDispPointer: ptr IDisplayPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveDisplayPointerToCaret(self, pDispPointer)
-proc IsVisible*(self: ptr IHTMLCaret, pIsVisible: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsVisible(self, pIsVisible)
-proc Show*(self: ptr IHTMLCaret, fScrollIntoView: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Show(self, fScrollIntoView)
-proc Hide*(self: ptr IHTMLCaret): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Hide(self)
-proc InsertText*(self: ptr IHTMLCaret, pText: ptr OLECHAR, lLen: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InsertText(self, pText, lLen)
-proc ScrollIntoView*(self: ptr IHTMLCaret): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ScrollIntoView(self)
-proc GetLocation*(self: ptr IHTMLCaret, pPoint: ptr POINT, fTranslate: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLocation(self, pPoint, fTranslate)
-proc GetCaretDirection*(self: ptr IHTMLCaret, peDir: ptr CARET_DIRECTION): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCaretDirection(self, peDir)
-proc SetCaretDirection*(self: ptr IHTMLCaret, eDir: CARET_DIRECTION): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCaretDirection(self, eDir)
-proc AddSegment*(self: ptr IHighlightRenderingServices, pDispPointerStart: ptr IDisplayPointer, pDispPointerEnd: ptr IDisplayPointer, pIRenderStyle: ptr IHTMLRenderStyle, ppISegment: ptr ptr IHighlightSegment): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddSegment(self, pDispPointerStart, pDispPointerEnd, pIRenderStyle, ppISegment)
-proc MoveSegmentToPointers*(self: ptr IHighlightRenderingServices, pISegment: ptr IHighlightSegment, pDispPointerStart: ptr IDisplayPointer, pDispPointerEnd: ptr IDisplayPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveSegmentToPointers(self, pISegment, pDispPointerStart, pDispPointerEnd)
-proc RemoveSegment*(self: ptr IHighlightRenderingServices, pISegment: ptr IHighlightSegment): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveSegment(self, pISegment)
-proc BeginSelectionUndo*(self: ptr ISelectionServicesListener): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeginSelectionUndo(self)
-proc EndSelectionUndo*(self: ptr ISelectionServicesListener): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EndSelectionUndo(self)
-proc OnSelectedElementExit*(self: ptr ISelectionServicesListener, pIElementStart: ptr IMarkupPointer, pIElementEnd: ptr IMarkupPointer, pIElementContentStart: ptr IMarkupPointer, pIElementContentEnd: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnSelectedElementExit(self, pIElementStart, pIElementEnd, pIElementContentStart, pIElementContentEnd)
-proc OnChangeType*(self: ptr ISelectionServicesListener, eType: SELECTION_TYPE, pIListener: ptr ISelectionServicesListener): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnChangeType(self, eType, pIListener)
-proc GetTypeDetail*(self: ptr ISelectionServicesListener, pTypeDetail: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeDetail(self, pTypeDetail)
-proc SetSelectionType*(self: ptr ISelectionServices, eType: SELECTION_TYPE, pIListener: ptr ISelectionServicesListener): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSelectionType(self, eType, pIListener)
-proc GetMarkupContainer*(self: ptr ISelectionServices, ppIContainer: ptr ptr IMarkupContainer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMarkupContainer(self, ppIContainer)
-proc AddSegment*(self: ptr ISelectionServices, pIStart: ptr IMarkupPointer, pIEnd: ptr IMarkupPointer, ppISegmentAdded: ptr ptr ISegment): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddSegment(self, pIStart, pIEnd, ppISegmentAdded)
-proc AddElementSegment*(self: ptr ISelectionServices, pIElement: ptr IHTMLElement, ppISegmentAdded: ptr ptr IElementSegment): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddElementSegment(self, pIElement, ppISegmentAdded)
-proc RemoveSegment*(self: ptr ISelectionServices, pISegment: ptr ISegment): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveSegment(self, pISegment)
-proc GetSelectionServicesListener*(self: ptr ISelectionServices, ppISelectionServicesListener: ptr ptr ISelectionServicesListener): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelectionServicesListener(self, ppISelectionServicesListener)
-proc GetElement*(self: ptr IElementSegment, ppIElement: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetElement(self, ppIElement)
-proc SetPrimary*(self: ptr IElementSegment, fPrimary: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPrimary(self, fPrimary)
-proc IsPrimary*(self: ptr IElementSegment, pfPrimary: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsPrimary(self, pfPrimary)
-proc PreHandleEvent*(self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreHandleEvent(self, inEvtDispId, pIEventObj)
-proc PostHandleEvent*(self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostHandleEvent(self, inEvtDispId, pIEventObj)
-proc TranslateAccelerator*(self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAccelerator(self, inEvtDispId, pIEventObj)
-proc PostEditorEventNotify*(self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostEditorEventNotify(self, inEvtDispId, pIEventObj)
-proc AddDesigner*(self: ptr IHTMLEditServices, pIDesigner: ptr IHTMLEditDesigner): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddDesigner(self, pIDesigner)
-proc RemoveDesigner*(self: ptr IHTMLEditServices, pIDesigner: ptr IHTMLEditDesigner): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveDesigner(self, pIDesigner)
-proc GetSelectionServices*(self: ptr IHTMLEditServices, pIContainer: ptr IMarkupContainer, ppSelSvc: ptr ptr ISelectionServices): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelectionServices(self, pIContainer, ppSelSvc)
-proc MoveToSelectionAnchor*(self: ptr IHTMLEditServices, pIStartAnchor: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveToSelectionAnchor(self, pIStartAnchor)
-proc MoveToSelectionEnd*(self: ptr IHTMLEditServices, pIEndAnchor: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveToSelectionEnd(self, pIEndAnchor)
-proc SelectRange*(self: ptr IHTMLEditServices, pStart: ptr IMarkupPointer, pEnd: ptr IMarkupPointer, eType: SELECTION_TYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SelectRange(self, pStart, pEnd, eType)
-proc MoveToSelectionAnchorEx*(self: ptr IHTMLEditServices2, pIStartAnchor: ptr IDisplayPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveToSelectionAnchorEx(self, pIStartAnchor)
-proc MoveToSelectionEndEx*(self: ptr IHTMLEditServices2, pIEndAnchor: ptr IDisplayPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveToSelectionEndEx(self, pIEndAnchor)
-proc FreezeVirtualCaretPos*(self: ptr IHTMLEditServices2, fReCompute: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FreezeVirtualCaretPos(self, fReCompute)
-proc UnFreezeVirtualCaretPos*(self: ptr IHTMLEditServices2, fReset: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnFreezeVirtualCaretPos(self, fReset)
-proc get_x*(self: ptr ILineInfo, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
-proc get_baseLine*(self: ptr ILineInfo, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseLine(self, p)
-proc get_textDescent*(self: ptr ILineInfo, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDescent(self, p)
-proc get_textHeight*(self: ptr ILineInfo, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textHeight(self, p)
-proc get_lineDirection*(self: ptr ILineInfo, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lineDirection(self, p)
-proc get_bold*(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bold(self, p)
-proc get_italic*(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_italic(self, p)
-proc get_underline*(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_underline(self, p)
-proc get_overline*(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overline(self, p)
-proc get_strikeOut*(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_strikeOut(self, p)
-proc get_subScript*(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_subScript(self, p)
-proc get_superScript*(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_superScript(self, p)
-proc get_explicitFace*(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_explicitFace(self, p)
-proc get_fontWeight*(self: ptr IHTMLComputedStyle, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontWeight(self, p)
-proc get_fontSize*(self: ptr IHTMLComputedStyle, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontSize(self, p)
-proc get_fontName*(self: ptr IHTMLComputedStyle, p: ptr TCHAR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontName(self, p)
-proc get_hasBgColor*(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hasBgColor(self, p)
-proc get_textColor*(self: ptr IHTMLComputedStyle, p: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textColor(self, p)
-proc get_backgroundColor*(self: ptr IHTMLComputedStyle, p: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundColor(self, p)
-proc get_preFormatted*(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_preFormatted(self, p)
-proc get_direction*(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_direction(self, p)
-proc get_blockDirection*(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_blockDirection(self, p)
-proc get_OL*(self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_OL(self, p)
-proc IsEqual*(self: ptr IHTMLComputedStyle, pComputedStyle: ptr IHTMLComputedStyle, pfEqual: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsEqual(self, pComputedStyle, pfEqual)
-proc MoveToPoint*(self: ptr IDisplayPointer, ptPoint: POINT, eCoordSystem: COORD_SYSTEM, pElementContext: ptr IHTMLElement, dwHitTestOptions: DWORD, pdwHitTestResults: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveToPoint(self, ptPoint, eCoordSystem, pElementContext, dwHitTestOptions, pdwHitTestResults)
-proc MoveUnit*(self: ptr IDisplayPointer, eMoveUnit: DISPLAY_MOVEUNIT, lXPos: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveUnit(self, eMoveUnit, lXPos)
-proc PositionMarkupPointer*(self: ptr IDisplayPointer, pMarkupPointer: ptr IMarkupPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PositionMarkupPointer(self, pMarkupPointer)
-proc MoveToPointer*(self: ptr IDisplayPointer, pDispPointer: ptr IDisplayPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveToPointer(self, pDispPointer)
-proc SetPointerGravity*(self: ptr IDisplayPointer, eGravity: POINTER_GRAVITY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPointerGravity(self, eGravity)
-proc GetPointerGravity*(self: ptr IDisplayPointer, peGravity: ptr POINTER_GRAVITY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPointerGravity(self, peGravity)
-proc SetDisplayGravity*(self: ptr IDisplayPointer, eGravity: DISPLAY_GRAVITY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDisplayGravity(self, eGravity)
-proc GetDisplayGravity*(self: ptr IDisplayPointer, peGravity: ptr DISPLAY_GRAVITY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDisplayGravity(self, peGravity)
-proc IsPositioned*(self: ptr IDisplayPointer, pfPositioned: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsPositioned(self, pfPositioned)
-proc Unposition*(self: ptr IDisplayPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unposition(self)
-proc IsEqualTo*(self: ptr IDisplayPointer, pDispPointer: ptr IDisplayPointer, pfIsEqual: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsEqualTo(self, pDispPointer, pfIsEqual)
-proc IsLeftOf*(self: ptr IDisplayPointer, pDispPointer: ptr IDisplayPointer, pfIsLeftOf: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsLeftOf(self, pDispPointer, pfIsLeftOf)
-proc IsRightOf*(self: ptr IDisplayPointer, pDispPointer: ptr IDisplayPointer, pfIsRightOf: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsRightOf(self, pDispPointer, pfIsRightOf)
-proc IsAtBOL*(self: ptr IDisplayPointer, pfBOL: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsAtBOL(self, pfBOL)
-proc MoveToMarkupPointer*(self: ptr IDisplayPointer, pPointer: ptr IMarkupPointer, pDispLineContext: ptr IDisplayPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveToMarkupPointer(self, pPointer, pDispLineContext)
-proc ScrollIntoView*(self: ptr IDisplayPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ScrollIntoView(self)
-proc GetLineInfo*(self: ptr IDisplayPointer, ppLineInfo: ptr ptr ILineInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLineInfo(self, ppLineInfo)
-proc GetFlowElement*(self: ptr IDisplayPointer, ppLayoutElement: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFlowElement(self, ppLayoutElement)
-proc QueryBreaks*(self: ptr IDisplayPointer, pdwBreaks: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryBreaks(self, pdwBreaks)
-proc CreateDisplayPointer*(self: ptr IDisplayServices, ppDispPointer: ptr ptr IDisplayPointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateDisplayPointer(self, ppDispPointer)
-proc TransformRect*(self: ptr IDisplayServices, pRect: ptr RECT, eSource: COORD_SYSTEM, eDestination: COORD_SYSTEM, pIElement: ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TransformRect(self, pRect, eSource, eDestination, pIElement)
-proc TransformPoint*(self: ptr IDisplayServices, pPoint: ptr POINT, eSource: COORD_SYSTEM, eDestination: COORD_SYSTEM, pIElement: ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TransformPoint(self, pPoint, eSource, eDestination, pIElement)
-proc GetCaret*(self: ptr IDisplayServices, ppCaret: ptr ptr IHTMLCaret): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCaret(self, ppCaret)
-proc GetComputedStyle*(self: ptr IDisplayServices, pPointer: ptr IMarkupPointer, ppComputedStyle: ptr ptr IHTMLComputedStyle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetComputedStyle(self, pPointer, ppComputedStyle)
-proc ScrollRectIntoView*(self: ptr IDisplayServices, pIElement: ptr IHTMLElement, rect: RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ScrollRectIntoView(self, pIElement, rect)
-proc HasFlowLayout*(self: ptr IDisplayServices, pIElement: ptr IHTMLElement, pfHasFlowLayout: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HasFlowLayout(self, pIElement, pfHasFlowLayout)
-proc choosecolordlg*(self: ptr IHtmlDlgSafeHelper, initColor: VARIANT, rgbColor: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.choosecolordlg(self, initColor, rgbColor)
-proc getCharset*(self: ptr IHtmlDlgSafeHelper, fontName: BSTR, charset: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getCharset(self, fontName, charset)
-proc get_Fonts*(self: ptr IHtmlDlgSafeHelper, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Fonts(self, p)
-proc get_BlockFormats*(self: ptr IHtmlDlgSafeHelper, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_BlockFormats(self, p)
-proc get_NewEnum*(self: ptr IBlockFormats, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_NewEnum(self, p)
-proc get_Count*(self: ptr IBlockFormats, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Count(self, p)
-proc Item*(self: ptr IBlockFormats, pvarIndex: ptr VARIANT, pbstrBlockFormat: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Item(self, pvarIndex, pbstrBlockFormat)
-proc get_NewEnum*(self: ptr IFontNames, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_NewEnum(self, p)
-proc get_Count*(self: ptr IFontNames, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Count(self, p)
-proc Item*(self: ptr IFontNames, pvarIndex: ptr VARIANT, pbstrFontName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Item(self, pvarIndex, pbstrFontName)
-proc Write*(self: ptr IDeveloperConsoleMessageReceiver, source: LPCWSTR, level: DEV_CONSOLE_MESSAGE_LEVEL, messageId: int32, messageText: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Write(self, source, level, messageId, messageText)
-proc WriteWithUrl*(self: ptr IDeveloperConsoleMessageReceiver, source: LPCWSTR, level: DEV_CONSOLE_MESSAGE_LEVEL, messageId: int32, messageText: LPCWSTR, fileUrl: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WriteWithUrl(self, source, level, messageId, messageText, fileUrl)
-proc WriteWithUrlAndLine*(self: ptr IDeveloperConsoleMessageReceiver, source: LPCWSTR, level: DEV_CONSOLE_MESSAGE_LEVEL, messageId: int32, messageText: LPCWSTR, fileUrl: LPCWSTR, line: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WriteWithUrlAndLine(self, source, level, messageId, messageText, fileUrl, line)
-proc WriteWithUrlLineAndColumn*(self: ptr IDeveloperConsoleMessageReceiver, source: LPCWSTR, level: DEV_CONSOLE_MESSAGE_LEVEL, messageId: int32, messageText: LPCWSTR, fileUrl: LPCWSTR, line: ULONG, column: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WriteWithUrlLineAndColumn(self, source, level, messageId, messageText, fileUrl, line, column)
-proc RequestedCallbackTypes*(self: ptr IDebugCallbackNotificationHandler, pCallbackMask: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestedCallbackTypes(self, pCallbackMask)
-proc BeforeDispatchEvent*(self: ptr IDebugCallbackNotificationHandler, pEvent: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeforeDispatchEvent(self, pEvent)
-proc DispatchEventComplete*(self: ptr IDebugCallbackNotificationHandler, pEvent: ptr IUnknown, propagationStatus: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DispatchEventComplete(self, pEvent, propagationStatus)
-proc BeforeInvokeDomCallback*(self: ptr IDebugCallbackNotificationHandler, pEvent: ptr IUnknown, pCallback: ptr IScriptEventHandler, eStage: DOM_EVENT_PHASE, propagationStatus: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeforeInvokeDomCallback(self, pEvent, pCallback, eStage, propagationStatus)
-proc InvokeDomCallbackComplete*(self: ptr IDebugCallbackNotificationHandler, pEvent: ptr IUnknown, pCallback: ptr IScriptEventHandler, eStage: DOM_EVENT_PHASE, propagationStatus: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvokeDomCallbackComplete(self, pEvent, pCallback, eStage, propagationStatus)
-proc BeforeInvokeCallback*(self: ptr IDebugCallbackNotificationHandler, eCallbackType: SCRIPT_TIMER_TYPE, callbackCookie: DWORD, pDispHandler: ptr IDispatch, ullHandlerCookie: ULONGLONG, functionName: BSTR, line: UINT32, column: UINT32, cchLength: UINT32, pDebugDocumentContext: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeforeInvokeCallback(self, eCallbackType, callbackCookie, pDispHandler, ullHandlerCookie, functionName, line, column, cchLength, pDebugDocumentContext)
-proc InvokeCallbackComplete*(self: ptr IDebugCallbackNotificationHandler, eCallbackType: SCRIPT_TIMER_TYPE, callbackCookie: DWORD, pDispHandler: ptr IDispatch, ullHandlerCookie: ULONGLONG, functionName: BSTR, line: UINT32, column: UINT32, cchLength: UINT32, pDebugDocumentContext: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvokeCallbackComplete(self, eCallbackType, callbackCookie, pDispHandler, ullHandlerCookie, functionName, line, column, cchLength, pDebugDocumentContext)
-proc FunctionName*(self: ptr IScriptEventHandler, pbstrFunctionName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FunctionName(self, pbstrFunctionName)
-proc DebugDocumentContext*(self: ptr IScriptEventHandler, ppDebugDocumentContext: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DebugDocumentContext(self, ppDebugDocumentContext)
-proc EventHandlerDispatch*(self: ptr IScriptEventHandler, ppDispHandler: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EventHandlerDispatch(self, ppDispHandler)
-proc UsesCapture*(self: ptr IScriptEventHandler, pfUsesCapture: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UsesCapture(self, pfUsesCapture)
-proc Cookie*(self: ptr IScriptEventHandler, pullCookie: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Cookie(self, pullCookie)
-proc GetSourceInfo*(self: ptr IScriptEventHandlerSourceInfo, pbstrFunctionName: ptr BSTR, line: ptr UINT32, column: ptr UINT32, cchLength: ptr UINT32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSourceInfo(self, pbstrFunctionName, line, column, cchLength)
-proc OnDOMEventListenerAdded*(self: ptr IDOMEventRegistrationCallback, pszEventType: LPCWSTR, pHandler: ptr IScriptEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDOMEventListenerAdded(self, pszEventType, pHandler)
-proc OnDOMEventListenerRemoved*(self: ptr IDOMEventRegistrationCallback, ullCookie: ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDOMEventListenerRemoved(self, ullCookie)
-proc GetRegisteredEventTypes*(self: ptr IEventTarget2, ppEventTypeArray: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRegisteredEventTypes(self, ppEventTypeArray)
-proc GetListenersForType*(self: ptr IEventTarget2, pszEventType: LPCWSTR, ppEventHandlerArray: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetListenersForType(self, pszEventType, ppEventHandlerArray)
-proc RegisterForDOMEventListeners*(self: ptr IEventTarget2, pCallback: ptr IDOMEventRegistrationCallback): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterForDOMEventListeners(self, pCallback)
-proc UnregisterForDOMEventListeners*(self: ptr IEventTarget2, pCallback: ptr IDOMEventRegistrationCallback): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterForDOMEventListeners(self, pCallback)
-proc get_name*(self: ptr IHTMLNamespace, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
-proc get_urn*(self: ptr IHTMLNamespace, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_urn(self, p)
-proc get_tagNames*(self: ptr IHTMLNamespace, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tagNames(self, p)
-proc get_readyState*(self: ptr IHTMLNamespace, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
-proc put_onreadystatechange*(self: ptr IHTMLNamespace, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreadystatechange(self, v)
-proc get_onreadystatechange*(self: ptr IHTMLNamespace, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreadystatechange(self, p)
-proc doImport*(self: ptr IHTMLNamespace, bstrImplementationUrl: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.doImport(self, bstrImplementationUrl)
-proc attachEvent*(self: ptr IHTMLNamespace, event: BSTR, pDisp: ptr IDispatch, pfResult: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.attachEvent(self, event, pDisp, pfResult)
-proc detachEvent*(self: ptr IHTMLNamespace, event: BSTR, pDisp: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.detachEvent(self, event, pDisp)
-proc get_length*(self: ptr IHTMLNamespaceCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc item*(self: ptr IHTMLNamespaceCollection, index: VARIANT, ppNamespace: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, ppNamespace)
-proc add*(self: ptr IHTMLNamespaceCollection, bstrNamespace: BSTR, bstrUrn: BSTR, implementationUrl: VARIANT, ppNamespace: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.add(self, bstrNamespace, bstrUrn, implementationUrl, ppNamespace)
-proc Draw*(self: ptr IHTMLPainter, rcBounds: RECT, rcUpdate: RECT, lDrawFlags: LONG, hdc: HDC, pvDrawObject: LPVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Draw(self, rcBounds, rcUpdate, lDrawFlags, hdc, pvDrawObject)
-proc OnResize*(self: ptr IHTMLPainter, size: SIZE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnResize(self, size)
-proc GetPainterInfo*(self: ptr IHTMLPainter, pInfo: ptr HTML_PAINTER_INFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPainterInfo(self, pInfo)
-proc HitTestPoint*(self: ptr IHTMLPainter, pt: POINT, pbHit: ptr WINBOOL, plPartID: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HitTestPoint(self, pt, pbHit, plPartID)
-proc GetEventInfoFlags*(self: ptr IHTMLPainterEventInfo, plEventInfoFlags: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEventInfoFlags(self, plEventInfoFlags)
-proc GetEventTarget*(self: ptr IHTMLPainterEventInfo, ppElement: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEventTarget(self, ppElement)
-proc SetCursor*(self: ptr IHTMLPainterEventInfo, lPartID: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCursor(self, lPartID)
-proc StringFromPartID*(self: ptr IHTMLPainterEventInfo, lPartID: LONG, pbstrPart: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StringFromPartID(self, lPartID, pbstrPart)
-proc OnMove*(self: ptr IHTMLPainterOverlay, rcDevice: RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnMove(self, rcDevice)
-proc InvalidatePainterInfo*(self: ptr IHTMLPaintSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvalidatePainterInfo(self)
-proc InvalidateRect*(self: ptr IHTMLPaintSite, prcInvalid: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvalidateRect(self, prcInvalid)
-proc InvalidateRegion*(self: ptr IHTMLPaintSite, rgnInvalid: HRGN): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvalidateRegion(self, rgnInvalid)
-proc GetDrawInfo*(self: ptr IHTMLPaintSite, lFlags: LONG, pDrawInfo: ptr HTML_PAINT_DRAW_INFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDrawInfo(self, lFlags, pDrawInfo)
-proc TransformGlobalToLocal*(self: ptr IHTMLPaintSite, ptGlobal: POINT, pptLocal: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TransformGlobalToLocal(self, ptGlobal, pptLocal)
-proc TransformLocalToGlobal*(self: ptr IHTMLPaintSite, ptLocal: POINT, pptGlobal: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TransformLocalToGlobal(self, ptLocal, pptGlobal)
-proc GetHitTestCookie*(self: ptr IHTMLPaintSite, plCookie: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHitTestCookie(self, plCookie)
-proc get_length*(self: ptr IHTMLIPrintCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IHTMLIPrintCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
-proc item*(self: ptr IHTMLIPrintCollection, index: LONG, ppIPrint: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, ppIPrint)
-proc Reset*(self: ptr IEnumPrivacyRecords): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc GetSize*(self: ptr IEnumPrivacyRecords, pSize: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSize(self, pSize)
-proc GetPrivacyImpacted*(self: ptr IEnumPrivacyRecords, pState: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPrivacyImpacted(self, pState)
-proc Next*(self: ptr IEnumPrivacyRecords, pbstrUrl: ptr BSTR, pbstrPolicyRef: ptr BSTR, pdwReserved: ptr LONG, pdwPrivacyFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, pbstrUrl, pbstrPolicyRef, pdwReserved, pdwPrivacyFlags)
-proc GetCount*(self: ptr IWPCBlockedUrls, pdwCount: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCount(self, pdwCount)
-proc GetUrl*(self: ptr IWPCBlockedUrls, dwIdx: DWORD, pbstrUrl: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUrl(self, dwIdx, pbstrUrl)
-proc get_Attr*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Attr(self, p)
-proc get_BehaviorUrnsCollection*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_BehaviorUrnsCollection(self, p)
-proc get_BookmarkCollection*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_BookmarkCollection(self, p)
-proc get_CompatibleInfo*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CompatibleInfo(self, p)
-proc get_CompatibleInfoCollection*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CompatibleInfoCollection(self, p)
-proc get_ControlRangeCollection*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ControlRangeCollection(self, p)
-proc get_CSSCurrentStyleDeclaration*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CSSCurrentStyleDeclaration(self, p)
-proc get_CSSRuleList*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CSSRuleList(self, p)
-proc get_CSSRuleStyleDeclaration*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CSSRuleStyleDeclaration(self, p)
-proc get_CSSStyleDeclaration*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CSSStyleDeclaration(self, p)
-proc get_CSSStyleRule*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CSSStyleRule(self, p)
-proc get_CSSStyleSheet*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CSSStyleSheet(self, p)
-proc get_DataTransfer*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DataTransfer(self, p)
-proc get_DOMImplementation*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DOMImplementation(self, p)
-proc get_Element*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Element(self, p)
-proc get_Event*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Event(self, p)
-proc get_History*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_History(self, p)
-proc get_HTCElementBehaviorDefaults*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTCElementBehaviorDefaults(self, p)
-proc get_HTMLAnchorElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLAnchorElement(self, p)
-proc get_HTMLAreaElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLAreaElement(self, p)
-proc get_HTMLAreasCollection*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLAreasCollection(self, p)
-proc get_HTMLBaseElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLBaseElement(self, p)
-proc get_HTMLBaseFontElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLBaseFontElement(self, p)
-proc get_HTMLBGSoundElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLBGSoundElement(self, p)
-proc get_HTMLBlockElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLBlockElement(self, p)
-proc get_HTMLBodyElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLBodyElement(self, p)
-proc get_HTMLBRElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLBRElement(self, p)
-proc get_HTMLButtonElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLButtonElement(self, p)
-proc get_HTMLCollection*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLCollection(self, p)
-proc get_HTMLCommentElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLCommentElement(self, p)
-proc get_HTMLDDElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLDDElement(self, p)
-proc get_HTMLDivElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLDivElement(self, p)
-proc get_HTMLDocument*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLDocument(self, p)
-proc get_HTMLDListElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLDListElement(self, p)
-proc get_HTMLDTElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLDTElement(self, p)
-proc get_HTMLEmbedElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLEmbedElement(self, p)
-proc get_HTMLFieldSetElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLFieldSetElement(self, p)
-proc get_HTMLFontElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLFontElement(self, p)
-proc get_HTMLFormElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLFormElement(self, p)
-proc get_HTMLFrameElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLFrameElement(self, p)
-proc get_HTMLFrameSetElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLFrameSetElement(self, p)
-proc get_HTMLGenericElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLGenericElement(self, p)
-proc get_HTMLHeadElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLHeadElement(self, p)
-proc get_HTMLHeadingElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLHeadingElement(self, p)
-proc get_HTMLHRElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLHRElement(self, p)
-proc get_HTMLHtmlElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLHtmlElement(self, p)
-proc get_HTMLIFrameElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLIFrameElement(self, p)
-proc get_HTMLImageElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLImageElement(self, p)
-proc get_HTMLInputElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLInputElement(self, p)
-proc get_HTMLIsIndexElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLIsIndexElement(self, p)
-proc get_HTMLLabelElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLLabelElement(self, p)
-proc get_HTMLLegendElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLLegendElement(self, p)
-proc get_HTMLLIElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLLIElement(self, p)
-proc get_HTMLLinkElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLLinkElement(self, p)
-proc get_HTMLMapElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLMapElement(self, p)
-proc get_HTMLMarqueeElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLMarqueeElement(self, p)
-proc get_HTMLMetaElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLMetaElement(self, p)
-proc get_HTMLModelessDialog*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLModelessDialog(self, p)
-proc get_HTMLNamespaceInfo*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLNamespaceInfo(self, p)
-proc get_HTMLNamespaceInfoCollection*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLNamespaceInfoCollection(self, p)
-proc get_HTMLNextIdElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLNextIdElement(self, p)
-proc get_HTMLNoShowElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLNoShowElement(self, p)
-proc get_HTMLObjectElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLObjectElement(self, p)
-proc get_HTMLOListElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLOListElement(self, p)
-proc get_HTMLOptionElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLOptionElement(self, p)
-proc get_HTMLParagraphElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLParagraphElement(self, p)
-proc get_HTMLParamElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLParamElement(self, p)
-proc get_HTMLPhraseElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLPhraseElement(self, p)
-proc get_HTMLPluginsCollection*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLPluginsCollection(self, p)
-proc get_HTMLPopup*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLPopup(self, p)
-proc get_HTMLScriptElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLScriptElement(self, p)
-proc get_HTMLSelectElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLSelectElement(self, p)
-proc get_HTMLSpanElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLSpanElement(self, p)
-proc get_HTMLStyleElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLStyleElement(self, p)
-proc get_HTMLTableCaptionElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLTableCaptionElement(self, p)
-proc get_HTMLTableCellElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLTableCellElement(self, p)
-proc get_HTMLTableColElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLTableColElement(self, p)
-proc get_HTMLTableElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLTableElement(self, p)
-proc get_HTMLTableRowElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLTableRowElement(self, p)
-proc get_HTMLTableSectionElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLTableSectionElement(self, p)
-proc get_HTMLTextAreaElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLTextAreaElement(self, p)
-proc get_HTMLTextElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLTextElement(self, p)
-proc get_HTMLTitleElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLTitleElement(self, p)
-proc get_HTMLUListElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLUListElement(self, p)
-proc get_HTMLUnknownElement*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HTMLUnknownElement(self, p)
-proc get_Image*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Image(self, p)
-proc get_Location*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Location(self, p)
-proc get_NamedNodeMap*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_NamedNodeMap(self, p)
-proc get_Navigator*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Navigator(self, p)
-proc get_NodeList*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_NodeList(self, p)
-proc get_Option*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Option(self, p)
-proc get_Screen*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Screen(self, p)
-proc get_Selection*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Selection(self, p)
-proc get_StaticNodeList*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_StaticNodeList(self, p)
-proc get_Storage*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Storage(self, p)
-proc get_StyleSheetList*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_StyleSheetList(self, p)
-proc get_StyleSheetPage*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_StyleSheetPage(self, p)
-proc get_StyleSheetPageList*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_StyleSheetPageList(self, p)
-proc get_Text*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Text(self, p)
-proc get_TextRange*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TextRange(self, p)
-proc get_TextRangeCollection*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TextRangeCollection(self, p)
-proc get_TextRectangle*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TextRectangle(self, p)
-proc get_TextRectangleList*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TextRectangleList(self, p)
-proc get_Window*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Window(self, p)
-proc get_XDomainRequest*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_XDomainRequest(self, p)
-proc get_XMLHttpRequest*(self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_XMLHttpRequest(self, p)
-proc put_dialogTop*(self: ptr IHTMLDialog, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dialogTop(self, v)
-proc get_dialogTop*(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dialogTop(self, p)
-proc put_dialogLeft*(self: ptr IHTMLDialog, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dialogLeft(self, v)
-proc get_dialogLeft*(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dialogLeft(self, p)
-proc put_dialogWidth*(self: ptr IHTMLDialog, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dialogWidth(self, v)
-proc get_dialogWidth*(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dialogWidth(self, p)
-proc put_dialogHeight*(self: ptr IHTMLDialog, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dialogHeight(self, v)
-proc get_dialogHeight*(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dialogHeight(self, p)
-proc get_dialogArguments*(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dialogArguments(self, p)
-proc get_menuArguments*(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_menuArguments(self, p)
-proc put_returnValue*(self: ptr IHTMLDialog, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_returnValue(self, v)
-proc get_returnValue*(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_returnValue(self, p)
-proc close*(self: ptr IHTMLDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.close(self)
-proc toString*(self: ptr IHTMLDialog, String: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, String)
-proc put_status*(self: ptr IHTMLDialog2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_status(self, v)
-proc get_status*(self: ptr IHTMLDialog2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_status(self, p)
-proc put_resizable*(self: ptr IHTMLDialog2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_resizable(self, v)
-proc get_resizable*(self: ptr IHTMLDialog2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_resizable(self, p)
-proc put_unadorned*(self: ptr IHTMLDialog3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_unadorned(self, v)
-proc get_unadorned*(self: ptr IHTMLDialog3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_unadorned(self, p)
-proc put_dialogHide*(self: ptr IHTMLDialog3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dialogHide(self, v)
-proc get_dialogHide*(self: ptr IHTMLDialog3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dialogHide(self, p)
-proc get_parameters*(self: ptr IHTMLModelessInit, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parameters(self, p)
-proc get_optionString*(self: ptr IHTMLModelessInit, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_optionString(self, p)
-proc get_moniker*(self: ptr IHTMLModelessInit, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_moniker(self, p)
-proc get_document*(self: ptr IHTMLModelessInit, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_document(self, p)
-proc show*(self: ptr IHTMLPopup, x: LONG, y: LONG, w: LONG, h: LONG, pElement: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.show(self, x, y, w, h, pElement)
-proc hide*(self: ptr IHTMLPopup): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hide(self)
-proc get_document*(self: ptr IHTMLPopup, p: ptr ptr IHTMLDocument): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_document(self, p)
-proc get_isOpen*(self: ptr IHTMLPopup, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_isOpen(self, p)
-proc put_applicationName*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_applicationName(self, v)
-proc get_applicationName*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_applicationName(self, p)
-proc put_version*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_version(self, v)
-proc get_version*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_version(self, p)
-proc put_icon*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_icon(self, v)
-proc get_icon*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_icon(self, p)
-proc put_singleInstance*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_singleInstance(self, v)
-proc get_singleInstance*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_singleInstance(self, p)
-proc put_minimizeButton*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_minimizeButton(self, v)
-proc get_minimizeButton*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_minimizeButton(self, p)
-proc put_maximizeButton*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_maximizeButton(self, v)
-proc get_maximizeButton*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_maximizeButton(self, p)
-proc put_border*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_border(self, v)
-proc get_border*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_border(self, p)
-proc put_borderStyle*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderStyle(self, v)
-proc get_borderStyle*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderStyle(self, p)
-proc put_sysMenu*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_sysMenu(self, v)
-proc get_sysMenu*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_sysMenu(self, p)
-proc put_caption*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_caption(self, v)
-proc get_caption*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_caption(self, p)
-proc put_windowState*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_windowState(self, v)
-proc get_windowState*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_windowState(self, p)
-proc put_showInTaskBar*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_showInTaskBar(self, v)
-proc get_showInTaskBar*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_showInTaskBar(self, p)
-proc get_commandLine*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_commandLine(self, p)
-proc put_contextMenu*(self: ptr IHTMLAppBehavior2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_contextMenu(self, v)
-proc get_contextMenu*(self: ptr IHTMLAppBehavior2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_contextMenu(self, p)
-proc put_innerBorder*(self: ptr IHTMLAppBehavior2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_innerBorder(self, v)
-proc get_innerBorder*(self: ptr IHTMLAppBehavior2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_innerBorder(self, p)
-proc put_scroll*(self: ptr IHTMLAppBehavior2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scroll(self, v)
-proc get_scroll*(self: ptr IHTMLAppBehavior2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scroll(self, p)
-proc put_scrollFlat*(self: ptr IHTMLAppBehavior2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_scrollFlat(self, v)
-proc get_scrollFlat*(self: ptr IHTMLAppBehavior2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scrollFlat(self, p)
-proc put_selection*(self: ptr IHTMLAppBehavior2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selection(self, v)
-proc get_selection*(self: ptr IHTMLAppBehavior2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selection(self, p)
-proc put_navigable*(self: ptr IHTMLAppBehavior3, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_navigable(self, v)
-proc get_navigable*(self: ptr IHTMLAppBehavior3, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_navigable(self, p)
-proc FindBehavior*(self: ptr IElementBehaviorFactory, bstrBehavior: BSTR, bstrBehaviorUrl: BSTR, pSite: ptr IElementBehaviorSite, ppBehavior: ptr ptr IElementBehavior): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindBehavior(self, bstrBehavior, bstrBehaviorUrl, pSite, ppBehavior)
-proc AddTag*(self: ptr IElementNamespace, bstrTagName: BSTR, lFlags: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddTag(self, bstrTagName, lFlags)
-proc AddNamespace*(self: ptr IElementNamespaceTable, bstrNamespace: BSTR, bstrUrn: BSTR, lFlags: LONG, pvarFactory: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddNamespace(self, bstrNamespace, bstrUrn, lFlags, pvarFactory)
-proc Create*(self: ptr IElementNamespaceFactory, pNamespace: ptr IElementNamespace): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Create(self, pNamespace)
-proc CreateWithImplementation*(self: ptr IElementNamespaceFactory2, pNamespace: ptr IElementNamespace, bstrImplementation: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateWithImplementation(self, pNamespace, bstrImplementation)
-proc Resolve*(self: ptr IElementNamespaceFactoryCallback, bstrNamespace: BSTR, bstrTagName: BSTR, bstrAttrs: BSTR, pNamespace: ptr IElementNamespace): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Resolve(self, bstrNamespace, bstrTagName, bstrAttrs, pNamespace)
-proc Init*(self: ptr IElementBehavior, pBehaviorSite: ptr IElementBehaviorSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Init(self, pBehaviorSite)
-proc Notify*(self: ptr IElementBehavior, lEvent: LONG, pVar: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Notify(self, lEvent, pVar)
-proc Detach*(self: ptr IElementBehavior): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Detach(self)
-proc GetElement*(self: ptr IElementBehaviorSite, ppElement: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetElement(self, ppElement)
-proc RegisterNotification*(self: ptr IElementBehaviorSite, lEvent: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterNotification(self, lEvent)
-proc RegisterEvent*(self: ptr IElementBehaviorSiteOM, pchEvent: LPOLESTR, lFlags: LONG, plCookie: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterEvent(self, pchEvent, lFlags, plCookie)
-proc GetEventCookie*(self: ptr IElementBehaviorSiteOM, pchEvent: LPOLESTR, plCookie: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEventCookie(self, pchEvent, plCookie)
-proc FireEvent*(self: ptr IElementBehaviorSiteOM, lCookie: LONG, pEventObject: ptr IHTMLEventObj): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FireEvent(self, lCookie, pEventObject)
-proc CreateEventObject*(self: ptr IElementBehaviorSiteOM, ppEventObject: ptr ptr IHTMLEventObj): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateEventObject(self, ppEventObject)
-proc RegisterName*(self: ptr IElementBehaviorSiteOM, pchName: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterName(self, pchName)
-proc RegisterUrn*(self: ptr IElementBehaviorSiteOM, pchUrn: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterUrn(self, pchUrn)
-proc GetDefaults*(self: ptr IElementBehaviorSiteOM2, ppDefaults: ptr ptr IHTMLElementDefaults): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaults(self, ppDefaults)
-proc Draw*(self: ptr IElementBehaviorRender, hdc: HDC, lLayer: LONG, pRect: ptr RECT, pReserved: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Draw(self, hdc, lLayer, pRect, pReserved)
-proc GetRenderInfo*(self: ptr IElementBehaviorRender, plRenderInfo: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRenderInfo(self, plRenderInfo)
-proc HitTestPoint*(self: ptr IElementBehaviorRender, pPoint: ptr POINT, pReserved: ptr IUnknown, pbHit: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HitTestPoint(self, pPoint, pReserved, pbHit)
-proc Invalidate*(self: ptr IElementBehaviorSiteRender, pRect: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invalidate(self, pRect)
-proc InvalidateRenderInfo*(self: ptr IElementBehaviorSiteRender): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvalidateRenderInfo(self)
-proc InvalidateStyle*(self: ptr IElementBehaviorSiteRender): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvalidateStyle(self)
-proc GetCategory*(self: ptr IElementBehaviorCategory, ppchCategory: ptr LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCategory(self, ppchCategory)
-proc GetRelatedBehaviors*(self: ptr IElementBehaviorSiteCategory, lDirection: LONG, pchCategory: LPOLESTR, ppEnumerator: ptr ptr IEnumUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRelatedBehaviors(self, lDirection, pchCategory, ppEnumerator)
-proc GetSubmitInfo*(self: ptr IElementBehaviorSubmit, pSubmitData: ptr IHTMLSubmitData): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSubmitInfo(self, pSubmitData)
-proc Reset*(self: ptr IElementBehaviorSubmit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc GetFocusRect*(self: ptr IElementBehaviorFocus, pRect: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFocusRect(self, pRect)
-proc GetSize*(self: ptr IElementBehaviorLayout, dwFlags: LONG, sizeContent: SIZE, pptTranslateBy: ptr POINT, pptTopLeft: ptr POINT, psizeProposed: ptr SIZE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSize(self, dwFlags, sizeContent, pptTranslateBy, pptTopLeft, psizeProposed)
-proc GetLayoutInfo*(self: ptr IElementBehaviorLayout, plLayoutInfo: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLayoutInfo(self, plLayoutInfo)
-proc GetPosition*(self: ptr IElementBehaviorLayout, lFlags: LONG, pptTopLeft: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPosition(self, lFlags, pptTopLeft)
-proc MapSize*(self: ptr IElementBehaviorLayout, psizeIn: ptr SIZE, prcOut: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MapSize(self, psizeIn, prcOut)
-proc GetTextDescent*(self: ptr IElementBehaviorLayout2, plDescent: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTextDescent(self, plDescent)
-proc InvalidateLayoutInfo*(self: ptr IElementBehaviorSiteLayout): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvalidateLayoutInfo(self)
-proc InvalidateSize*(self: ptr IElementBehaviorSiteLayout): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvalidateSize(self)
-proc GetMediaResolution*(self: ptr IElementBehaviorSiteLayout, psizeResolution: ptr SIZE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMediaResolution(self, psizeResolution)
-proc GetFontInfo*(self: ptr IElementBehaviorSiteLayout2, plf: ptr LOGFONTW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFontInfo(self, plf)
-proc PopulateNamespaceTable*(self: ptr IHostBehaviorInit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PopulateNamespaceTable(self)
-proc CreateSurfacePresenter*(self: ptr IViewObjectPresentSite, pDevice: ptr IUnknown, width: UINT, height: UINT, backBufferCount: UINT, format: DXGI_FORMAT, mode: VIEW_OBJECT_ALPHA_MODE, ppQueue: ptr ptr ISurfacePresenter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateSurfacePresenter(self, pDevice, width, height, backBufferCount, format, mode, ppQueue)
-proc IsHardwareComposition*(self: ptr IViewObjectPresentSite, pIsHardwareComposition: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsHardwareComposition(self, pIsHardwareComposition)
-proc SetCompositionMode*(self: ptr IViewObjectPresentSite, mode: VIEW_OBJECT_COMPOSITION_MODE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCompositionMode(self, mode)
-proc Present*(self: ptr ISurfacePresenter, uBuffer: UINT, pDirty: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Present(self, uBuffer, pDirty)
-proc GetBuffer*(self: ptr ISurfacePresenter, backBufferIndex: UINT, riid: REFIID, ppBuffer: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBuffer(self, backBufferIndex, riid, ppBuffer)
-proc IsCurrent*(self: ptr ISurfacePresenter, pIsCurrent: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsCurrent(self, pIsCurrent)
-proc GetBufferPointer*(self: ptr ICanvasPixelArrayData, ppBuffer: ptr ptr BYTE, pBufferLength: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBufferPointer(self, ppBuffer, pBufferLength)
-proc GetPrintBitmap*(self: ptr IViewObjectPrint, ppPrintBitmap: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPrintBitmap(self, ppPrintBitmap)
-proc RequestFrame*(self: ptr IViewObjectPresentNotifySite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestFrame(self)
-proc OnPreRender*(self: ptr IViewObjectPresentNotify): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnPreRender(self)
-proc EvaluateUrl*(self: ptr ITrackingProtection, bstrUrl: BSTR, pfAllowed: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EvaluateUrl(self, bstrUrl, pfAllowed)
-proc GetEnabled*(self: ptr ITrackingProtection, pfEnabled: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEnabled(self, pfEnabled)
-proc ShowHTMLDialog*(self: ptr IHostDialogHelper, hwndParent: HWND, pMk: ptr IMoniker, pvarArgIn: ptr VARIANT, pchOptions: ptr WCHAR, pvarArgOut: ptr VARIANT, punkHost: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowHTMLDialog(self, hwndParent, pMk, pvarArgIn, pchOptions, pvarArgOut, punkHost)
-proc ShowContextMenu*(self: ptr IDocHostUIHandler, dwID: DWORD, ppt: ptr POINT, pcmdtReserved: ptr IUnknown, pdispReserved: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowContextMenu(self, dwID, ppt, pcmdtReserved, pdispReserved)
-proc GetHostInfo*(self: ptr IDocHostUIHandler, pInfo: ptr DOCHOSTUIINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHostInfo(self, pInfo)
-proc ShowUI*(self: ptr IDocHostUIHandler, dwID: DWORD, pActiveObject: ptr IOleInPlaceActiveObject, pCommandTarget: ptr IOleCommandTarget, pFrame: ptr IOleInPlaceFrame, pDoc: ptr IOleInPlaceUIWindow): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowUI(self, dwID, pActiveObject, pCommandTarget, pFrame, pDoc)
-proc HideUI*(self: ptr IDocHostUIHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HideUI(self)
-proc UpdateUI*(self: ptr IDocHostUIHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateUI(self)
-proc EnableModeless*(self: ptr IDocHostUIHandler, fEnable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnableModeless(self, fEnable)
-proc OnDocWindowActivate*(self: ptr IDocHostUIHandler, fActivate: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDocWindowActivate(self, fActivate)
-proc OnFrameWindowActivate*(self: ptr IDocHostUIHandler, fActivate: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnFrameWindowActivate(self, fActivate)
-proc ResizeBorder*(self: ptr IDocHostUIHandler, prcBorder: LPCRECT, pUIWindow: ptr IOleInPlaceUIWindow, fRameWindow: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResizeBorder(self, prcBorder, pUIWindow, fRameWindow)
-proc TranslateAccelerator*(self: ptr IDocHostUIHandler, lpMsg: LPMSG, pguidCmdGroup: ptr GUID, nCmdID: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAccelerator(self, lpMsg, pguidCmdGroup, nCmdID)
-proc GetOptionKeyPath*(self: ptr IDocHostUIHandler, pchKey: ptr LPOLESTR, dw: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOptionKeyPath(self, pchKey, dw)
-proc GetDropTarget*(self: ptr IDocHostUIHandler, pDropTarget: ptr IDropTarget, ppDropTarget: ptr ptr IDropTarget): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDropTarget(self, pDropTarget, ppDropTarget)
-proc GetExternal*(self: ptr IDocHostUIHandler, ppDispatch: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetExternal(self, ppDispatch)
-proc TranslateUrl*(self: ptr IDocHostUIHandler, dwTranslate: DWORD, pchURLIn: LPWSTR, ppchURLOut: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateUrl(self, dwTranslate, pchURLIn, ppchURLOut)
-proc FilterDataObject*(self: ptr IDocHostUIHandler, pDO: ptr IDataObject, ppDORet: ptr ptr IDataObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FilterDataObject(self, pDO, ppDORet)
-proc GetOverrideKeyPath*(self: ptr IDocHostUIHandler2, pchKey: ptr LPOLESTR, dw: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOverrideKeyPath(self, pchKey, dw)
-proc SetUIHandler*(self: ptr ICustomDoc, pUIHandler: ptr IDocHostUIHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetUIHandler(self, pUIHandler)
-proc ShowMessage*(self: ptr IDocHostShowUI, hwnd: HWND, lpstrText: LPOLESTR, lpstrCaption: LPOLESTR, dwType: DWORD, lpstrHelpFile: LPOLESTR, dwHelpContext: DWORD, plResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowMessage(self, hwnd, lpstrText, lpstrCaption, dwType, lpstrHelpFile, dwHelpContext, plResult)
-proc ShowHelp*(self: ptr IDocHostShowUI, hwnd: HWND, pszHelpFile: LPOLESTR, uCommand: UINT, dwData: DWORD, ptMouse: POINT, pDispatchObjectHit: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowHelp(self, hwnd, pszHelpFile, uCommand, dwData, ptMouse, pDispatchObjectHit)
-proc CreateInstanceWithContext*(self: ptr IClassFactoryEx, punkContext: ptr IUnknown, punkOuter: ptr IUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstanceWithContext(self, punkContext, punkOuter, riid, ppv)
-proc moveTo*(self: ptr IHTMLOMWindowServices, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveTo(self, x, y)
-proc moveBy*(self: ptr IHTMLOMWindowServices, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveBy(self, x, y)
-proc resizeTo*(self: ptr IHTMLOMWindowServices, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.resizeTo(self, x, y)
-proc resizeBy*(self: ptr IHTMLOMWindowServices, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.resizeBy(self, x, y)
-converter winimConverterIDispatchExToIDispatch*(x: ptr IDispatchEx): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDispatchExToIUnknown*(x: ptr IDispatchEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDispErrorToIUnknown*(x: ptr IDispError): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIVariantChangeTypeToIUnknown*(x: ptr IVariantChangeType): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectIdentityToIUnknown*(x: ptr IObjectIdentity): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICanHandleExceptionToIUnknown*(x: ptr ICanHandleException): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIProvideRuntimeContextToIUnknown*(x: ptr IProvideRuntimeContext): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFiltersCollectionToIDispatch*(x: ptr IHTMLFiltersCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFiltersCollectionToIUnknown*(x: ptr IHTMLFiltersCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIIE70DispatchExToIDispatchEx*(x: ptr IIE70DispatchEx): ptr IDispatchEx = cast[ptr IDispatchEx](x)
-converter winimConverterIIE70DispatchExToIDispatch*(x: ptr IIE70DispatchEx): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIIE70DispatchExToIUnknown*(x: ptr IIE70DispatchEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIIE80DispatchExToIDispatchEx*(x: ptr IIE80DispatchEx): ptr IDispatchEx = cast[ptr IDispatchEx](x)
-converter winimConverterIIE80DispatchExToIDispatch*(x: ptr IIE80DispatchEx): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIIE80DispatchExToIUnknown*(x: ptr IIE80DispatchEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMConstructorToIDispatch*(x: ptr IHTMLDOMConstructor): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMConstructorToIUnknown*(x: ptr IHTMLDOMConstructor): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCSSStyleDeclarationToIDispatch*(x: ptr IHTMLCSSStyleDeclaration): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCSSStyleDeclarationToIUnknown*(x: ptr IHTMLCSSStyleDeclaration): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCSSStyleDeclaration2ToIDispatch*(x: ptr IHTMLCSSStyleDeclaration2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCSSStyleDeclaration2ToIUnknown*(x: ptr IHTMLCSSStyleDeclaration2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleEnabledToIDispatch*(x: ptr IHTMLStyleEnabled): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleEnabledToIUnknown*(x: ptr IHTMLStyleEnabled): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLCSSStyleDeclarationToIDispatch*(x: ptr DispHTMLCSSStyleDeclaration): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLCSSStyleDeclarationToIUnknown*(x: ptr DispHTMLCSSStyleDeclaration): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleToIDispatch*(x: ptr IHTMLStyle): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleToIUnknown*(x: ptr IHTMLStyle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyle2ToIDispatch*(x: ptr IHTMLStyle2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyle2ToIUnknown*(x: ptr IHTMLStyle2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyle3ToIDispatch*(x: ptr IHTMLStyle3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyle3ToIUnknown*(x: ptr IHTMLStyle3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyle4ToIDispatch*(x: ptr IHTMLStyle4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyle4ToIUnknown*(x: ptr IHTMLStyle4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyle5ToIDispatch*(x: ptr IHTMLStyle5): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyle5ToIUnknown*(x: ptr IHTMLStyle5): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyle6ToIDispatch*(x: ptr IHTMLStyle6): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyle6ToIUnknown*(x: ptr IHTMLStyle6): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLRuleStyleToIDispatch*(x: ptr IHTMLRuleStyle): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLRuleStyleToIUnknown*(x: ptr IHTMLRuleStyle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLRuleStyle2ToIDispatch*(x: ptr IHTMLRuleStyle2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLRuleStyle2ToIUnknown*(x: ptr IHTMLRuleStyle2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLRuleStyle3ToIDispatch*(x: ptr IHTMLRuleStyle3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLRuleStyle3ToIUnknown*(x: ptr IHTMLRuleStyle3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLRuleStyle4ToIDispatch*(x: ptr IHTMLRuleStyle4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLRuleStyle4ToIUnknown*(x: ptr IHTMLRuleStyle4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLRuleStyle5ToIDispatch*(x: ptr IHTMLRuleStyle5): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLRuleStyle5ToIUnknown*(x: ptr IHTMLRuleStyle5): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLRuleStyle6ToIDispatch*(x: ptr IHTMLRuleStyle6): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLRuleStyle6ToIUnknown*(x: ptr IHTMLRuleStyle6): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLStyleToIDispatch*(x: ptr DispHTMLStyle): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLStyleToIUnknown*(x: ptr DispHTMLStyle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLRuleStyleToIDispatch*(x: ptr DispHTMLRuleStyle): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLRuleStyleToIUnknown*(x: ptr DispHTMLRuleStyle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCSSRuleToIDispatch*(x: ptr IHTMLCSSRule): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCSSRuleToIUnknown*(x: ptr IHTMLCSSRule): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCSSImportRuleToIDispatch*(x: ptr IHTMLCSSImportRule): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCSSImportRuleToIUnknown*(x: ptr IHTMLCSSImportRule): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCSSMediaRuleToIDispatch*(x: ptr IHTMLCSSMediaRule): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCSSMediaRuleToIUnknown*(x: ptr IHTMLCSSMediaRule): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCSSMediaListToIDispatch*(x: ptr IHTMLCSSMediaList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCSSMediaListToIUnknown*(x: ptr IHTMLCSSMediaList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCSSNamespaceRuleToIDispatch*(x: ptr IHTMLCSSNamespaceRule): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCSSNamespaceRuleToIUnknown*(x: ptr IHTMLCSSNamespaceRule): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLMSCSSKeyframeRuleToIDispatch*(x: ptr IHTMLMSCSSKeyframeRule): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLMSCSSKeyframeRuleToIUnknown*(x: ptr IHTMLMSCSSKeyframeRule): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLMSCSSKeyframesRuleToIDispatch*(x: ptr IHTMLMSCSSKeyframesRule): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLMSCSSKeyframesRuleToIUnknown*(x: ptr IHTMLMSCSSKeyframesRule): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLCSSRuleToIDispatch*(x: ptr DispHTMLCSSRule): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLCSSRuleToIUnknown*(x: ptr DispHTMLCSSRule): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLCSSImportRuleToIDispatch*(x: ptr DispHTMLCSSImportRule): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLCSSImportRuleToIUnknown*(x: ptr DispHTMLCSSImportRule): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLCSSMediaRuleToIDispatch*(x: ptr DispHTMLCSSMediaRule): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLCSSMediaRuleToIUnknown*(x: ptr DispHTMLCSSMediaRule): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLCSSMediaListToIDispatch*(x: ptr DispHTMLCSSMediaList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLCSSMediaListToIUnknown*(x: ptr DispHTMLCSSMediaList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLCSSNamespaceRuleToIDispatch*(x: ptr DispHTMLCSSNamespaceRule): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLCSSNamespaceRuleToIUnknown*(x: ptr DispHTMLCSSNamespaceRule): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLMSCSSKeyframeRuleToIDispatch*(x: ptr DispHTMLMSCSSKeyframeRule): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLMSCSSKeyframeRuleToIUnknown*(x: ptr DispHTMLMSCSSKeyframeRule): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLMSCSSKeyframesRuleToIDispatch*(x: ptr DispHTMLMSCSSKeyframesRule): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLMSCSSKeyframesRuleToIUnknown*(x: ptr DispHTMLMSCSSKeyframesRule): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLRenderStyleToIDispatch*(x: ptr IHTMLRenderStyle): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLRenderStyleToIUnknown*(x: ptr IHTMLRenderStyle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLRenderStyleToIDispatch*(x: ptr DispHTMLRenderStyle): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLRenderStyleToIUnknown*(x: ptr DispHTMLRenderStyle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCurrentStyleToIDispatch*(x: ptr IHTMLCurrentStyle): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCurrentStyleToIUnknown*(x: ptr IHTMLCurrentStyle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCurrentStyle2ToIDispatch*(x: ptr IHTMLCurrentStyle2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCurrentStyle2ToIUnknown*(x: ptr IHTMLCurrentStyle2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCurrentStyle3ToIDispatch*(x: ptr IHTMLCurrentStyle3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCurrentStyle3ToIUnknown*(x: ptr IHTMLCurrentStyle3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCurrentStyle4ToIDispatch*(x: ptr IHTMLCurrentStyle4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCurrentStyle4ToIUnknown*(x: ptr IHTMLCurrentStyle4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCurrentStyle5ToIDispatch*(x: ptr IHTMLCurrentStyle5): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCurrentStyle5ToIUnknown*(x: ptr IHTMLCurrentStyle5): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLCurrentStyleToIDispatch*(x: ptr DispHTMLCurrentStyle): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLCurrentStyleToIUnknown*(x: ptr DispHTMLCurrentStyle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLRectToIDispatch*(x: ptr IHTMLRect): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLRectToIUnknown*(x: ptr IHTMLRect): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLRect2ToIDispatch*(x: ptr IHTMLRect2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLRect2ToIUnknown*(x: ptr IHTMLRect2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLRectCollectionToIDispatch*(x: ptr IHTMLRectCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLRectCollectionToIUnknown*(x: ptr IHTMLRectCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMNodeToIDispatch*(x: ptr IHTMLDOMNode): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMNodeToIUnknown*(x: ptr IHTMLDOMNode): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMNode2ToIDispatch*(x: ptr IHTMLDOMNode2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMNode2ToIUnknown*(x: ptr IHTMLDOMNode2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMNode3ToIDispatch*(x: ptr IHTMLDOMNode3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMNode3ToIUnknown*(x: ptr IHTMLDOMNode3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMAttributeToIDispatch*(x: ptr IHTMLDOMAttribute): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMAttributeToIUnknown*(x: ptr IHTMLDOMAttribute): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMAttribute2ToIDispatch*(x: ptr IHTMLDOMAttribute2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMAttribute2ToIUnknown*(x: ptr IHTMLDOMAttribute2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMAttribute3ToIDispatch*(x: ptr IHTMLDOMAttribute3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMAttribute3ToIUnknown*(x: ptr IHTMLDOMAttribute3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMAttribute4ToIDispatch*(x: ptr IHTMLDOMAttribute4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMAttribute4ToIUnknown*(x: ptr IHTMLDOMAttribute4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMTextNodeToIDispatch*(x: ptr IHTMLDOMTextNode): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMTextNodeToIUnknown*(x: ptr IHTMLDOMTextNode): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMTextNode2ToIDispatch*(x: ptr IHTMLDOMTextNode2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMTextNode2ToIUnknown*(x: ptr IHTMLDOMTextNode2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMTextNode3ToIDispatch*(x: ptr IHTMLDOMTextNode3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMTextNode3ToIUnknown*(x: ptr IHTMLDOMTextNode3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMImplementationToIDispatch*(x: ptr IHTMLDOMImplementation): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMImplementationToIUnknown*(x: ptr IHTMLDOMImplementation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMImplementation2ToIDispatch*(x: ptr IHTMLDOMImplementation2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMImplementation2ToIUnknown*(x: ptr IHTMLDOMImplementation2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLDOMAttributeToIDispatch*(x: ptr DispHTMLDOMAttribute): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLDOMAttributeToIUnknown*(x: ptr DispHTMLDOMAttribute): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLDOMTextNodeToIDispatch*(x: ptr DispHTMLDOMTextNode): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLDOMTextNodeToIUnknown*(x: ptr DispHTMLDOMTextNode): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLDOMImplementationToIDispatch*(x: ptr DispHTMLDOMImplementation): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLDOMImplementationToIUnknown*(x: ptr DispHTMLDOMImplementation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAttributeCollectionToIDispatch*(x: ptr IHTMLAttributeCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAttributeCollectionToIUnknown*(x: ptr IHTMLAttributeCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAttributeCollection2ToIDispatch*(x: ptr IHTMLAttributeCollection2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAttributeCollection2ToIUnknown*(x: ptr IHTMLAttributeCollection2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAttributeCollection3ToIDispatch*(x: ptr IHTMLAttributeCollection3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAttributeCollection3ToIUnknown*(x: ptr IHTMLAttributeCollection3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAttributeCollection4ToIDispatch*(x: ptr IHTMLAttributeCollection4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAttributeCollection4ToIUnknown*(x: ptr IHTMLAttributeCollection4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMChildrenCollectionToIDispatch*(x: ptr IHTMLDOMChildrenCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMChildrenCollectionToIUnknown*(x: ptr IHTMLDOMChildrenCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMChildrenCollection2ToIDispatch*(x: ptr IHTMLDOMChildrenCollection2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMChildrenCollection2ToIUnknown*(x: ptr IHTMLDOMChildrenCollection2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLAttributeCollectionToIDispatch*(x: ptr DispHTMLAttributeCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLAttributeCollectionToIUnknown*(x: ptr DispHTMLAttributeCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispStaticNodeListToIDispatch*(x: ptr DispStaticNodeList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispStaticNodeListToIUnknown*(x: ptr DispStaticNodeList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMChildrenCollectionToIDispatch*(x: ptr DispDOMChildrenCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMChildrenCollectionToIUnknown*(x: ptr DispDOMChildrenCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLElementEvents4ToIDispatch*(x: ptr HTMLElementEvents4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLElementEvents4ToIUnknown*(x: ptr HTMLElementEvents4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLElementEvents3ToIDispatch*(x: ptr HTMLElementEvents3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLElementEvents3ToIUnknown*(x: ptr HTMLElementEvents3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLElementEvents2ToIDispatch*(x: ptr HTMLElementEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLElementEvents2ToIUnknown*(x: ptr HTMLElementEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLElementEventsToIDispatch*(x: ptr HTMLElementEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLElementEventsToIUnknown*(x: ptr HTMLElementEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLElementToIDispatch*(x: ptr IHTMLElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLElementToIUnknown*(x: ptr IHTMLElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLElement2ToIDispatch*(x: ptr IHTMLElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLElement2ToIUnknown*(x: ptr IHTMLElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLElement3ToIDispatch*(x: ptr IHTMLElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLElement3ToIUnknown*(x: ptr IHTMLElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLElement4ToIDispatch*(x: ptr IHTMLElement4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLElement4ToIUnknown*(x: ptr IHTMLElement4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementSelectorToIDispatch*(x: ptr IElementSelector): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIElementSelectorToIUnknown*(x: ptr IElementSelector): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLElementRenderToIUnknown*(x: ptr IHTMLElementRender): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLUniqueNameToIDispatch*(x: ptr IHTMLUniqueName): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLUniqueNameToIUnknown*(x: ptr IHTMLUniqueName): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLElement5ToIDispatch*(x: ptr IHTMLElement5): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLElement5ToIUnknown*(x: ptr IHTMLElement5): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLElement6ToIDispatch*(x: ptr IHTMLElement6): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLElement6ToIUnknown*(x: ptr IHTMLElement6): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLElement7ToIDispatch*(x: ptr IHTMLElement7): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLElement7ToIUnknown*(x: ptr IHTMLElement7): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLElementAppliedStylesToIDispatch*(x: ptr IHTMLElementAppliedStyles): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLElementAppliedStylesToIUnknown*(x: ptr IHTMLElementAppliedStyles): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementTraversalToIDispatch*(x: ptr IElementTraversal): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIElementTraversalToIUnknown*(x: ptr IElementTraversal): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDatabindingToIDispatch*(x: ptr IHTMLDatabinding): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDatabindingToIUnknown*(x: ptr IHTMLDatabinding): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLElementDefaultsToIDispatch*(x: ptr IHTMLElementDefaults): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLElementDefaultsToIUnknown*(x: ptr IHTMLElementDefaults): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLDefaultsToIDispatch*(x: ptr DispHTMLDefaults): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLDefaultsToIUnknown*(x: ptr DispHTMLDefaults): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTCDefaultDispatchToIDispatch*(x: ptr IHTCDefaultDispatch): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTCDefaultDispatchToIUnknown*(x: ptr IHTCDefaultDispatch): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTCPropertyBehaviorToIDispatch*(x: ptr IHTCPropertyBehavior): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTCPropertyBehaviorToIUnknown*(x: ptr IHTCPropertyBehavior): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTCMethodBehaviorToIDispatch*(x: ptr IHTCMethodBehavior): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTCMethodBehaviorToIUnknown*(x: ptr IHTCMethodBehavior): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTCEventBehaviorToIDispatch*(x: ptr IHTCEventBehavior): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTCEventBehaviorToIUnknown*(x: ptr IHTCEventBehavior): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTCAttachBehaviorToIDispatch*(x: ptr IHTCAttachBehavior): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTCAttachBehaviorToIUnknown*(x: ptr IHTCAttachBehavior): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTCAttachBehavior2ToIDispatch*(x: ptr IHTCAttachBehavior2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTCAttachBehavior2ToIUnknown*(x: ptr IHTCAttachBehavior2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTCDescBehaviorToIDispatch*(x: ptr IHTCDescBehavior): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTCDescBehaviorToIUnknown*(x: ptr IHTCDescBehavior): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTCDefaultDispatchToIDispatch*(x: ptr DispHTCDefaultDispatch): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTCDefaultDispatchToIUnknown*(x: ptr DispHTCDefaultDispatch): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTCPropertyBehaviorToIDispatch*(x: ptr DispHTCPropertyBehavior): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTCPropertyBehaviorToIUnknown*(x: ptr DispHTCPropertyBehavior): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTCMethodBehaviorToIDispatch*(x: ptr DispHTCMethodBehavior): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTCMethodBehaviorToIUnknown*(x: ptr DispHTCMethodBehavior): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTCEventBehaviorToIDispatch*(x: ptr DispHTCEventBehavior): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTCEventBehaviorToIUnknown*(x: ptr DispHTCEventBehavior): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTCAttachBehaviorToIDispatch*(x: ptr DispHTCAttachBehavior): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTCAttachBehaviorToIUnknown*(x: ptr DispHTCAttachBehavior): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTCDescBehaviorToIDispatch*(x: ptr DispHTCDescBehavior): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTCDescBehaviorToIUnknown*(x: ptr DispHTCDescBehavior): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLUrnCollectionToIDispatch*(x: ptr IHTMLUrnCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLUrnCollectionToIUnknown*(x: ptr IHTMLUrnCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLUrnCollectionToIDispatch*(x: ptr DispHTMLUrnCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLUrnCollectionToIUnknown*(x: ptr DispHTMLUrnCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLGenericElementToIDispatch*(x: ptr IHTMLGenericElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLGenericElementToIUnknown*(x: ptr IHTMLGenericElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLGenericElementToIDispatch*(x: ptr DispHTMLGenericElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLGenericElementToIUnknown*(x: ptr DispHTMLGenericElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheetRuleToIDispatch*(x: ptr IHTMLStyleSheetRule): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheetRuleToIUnknown*(x: ptr IHTMLStyleSheetRule): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheetRuleAppliedToIDispatch*(x: ptr IHTMLStyleSheetRuleApplied): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheetRuleAppliedToIUnknown*(x: ptr IHTMLStyleSheetRuleApplied): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheetRule2ToIDispatch*(x: ptr IHTMLStyleSheetRule2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheetRule2ToIUnknown*(x: ptr IHTMLStyleSheetRule2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheetRulesCollectionToIDispatch*(x: ptr IHTMLStyleSheetRulesCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheetRulesCollectionToIUnknown*(x: ptr IHTMLStyleSheetRulesCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheetRulesCollection2ToIDispatch*(x: ptr IHTMLStyleSheetRulesCollection2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheetRulesCollection2ToIUnknown*(x: ptr IHTMLStyleSheetRulesCollection2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLStyleSheetRuleToIDispatch*(x: ptr DispHTMLStyleSheetRule): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLStyleSheetRuleToIUnknown*(x: ptr DispHTMLStyleSheetRule): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLStyleSheetRulesCollectionToIDispatch*(x: ptr DispHTMLStyleSheetRulesCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLStyleSheetRulesCollectionToIUnknown*(x: ptr DispHTMLStyleSheetRulesCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheetPageToIDispatch*(x: ptr IHTMLStyleSheetPage): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheetPageToIUnknown*(x: ptr IHTMLStyleSheetPage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheetPage2ToIDispatch*(x: ptr IHTMLStyleSheetPage2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheetPage2ToIUnknown*(x: ptr IHTMLStyleSheetPage2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheetPagesCollectionToIDispatch*(x: ptr IHTMLStyleSheetPagesCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheetPagesCollectionToIUnknown*(x: ptr IHTMLStyleSheetPagesCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLStyleSheetPageToIDispatch*(x: ptr DispHTMLStyleSheetPage): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLStyleSheetPageToIUnknown*(x: ptr DispHTMLStyleSheetPage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLStyleSheetPagesCollectionToIDispatch*(x: ptr DispHTMLStyleSheetPagesCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLStyleSheetPagesCollectionToIUnknown*(x: ptr DispHTMLStyleSheetPagesCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheetToIDispatch*(x: ptr IHTMLStyleSheet): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheetToIUnknown*(x: ptr IHTMLStyleSheet): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheet2ToIDispatch*(x: ptr IHTMLStyleSheet2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheet2ToIUnknown*(x: ptr IHTMLStyleSheet2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheet3ToIDispatch*(x: ptr IHTMLStyleSheet3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheet3ToIUnknown*(x: ptr IHTMLStyleSheet3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheet4ToIDispatch*(x: ptr IHTMLStyleSheet4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheet4ToIUnknown*(x: ptr IHTMLStyleSheet4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLStyleSheetToIDispatch*(x: ptr DispHTMLStyleSheet): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLStyleSheetToIUnknown*(x: ptr DispHTMLStyleSheet): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheetsCollectionToIDispatch*(x: ptr IHTMLStyleSheetsCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheetsCollectionToIUnknown*(x: ptr IHTMLStyleSheetsCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheetsCollection2ToIDispatch*(x: ptr IHTMLStyleSheetsCollection2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheetsCollection2ToIUnknown*(x: ptr IHTMLStyleSheetsCollection2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLStyleSheetsCollectionToIDispatch*(x: ptr DispHTMLStyleSheetsCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLStyleSheetsCollectionToIUnknown*(x: ptr DispHTMLStyleSheetsCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLLinkElementEvents2ToIDispatch*(x: ptr HTMLLinkElementEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLLinkElementEvents2ToIUnknown*(x: ptr HTMLLinkElementEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLLinkElementEventsToIDispatch*(x: ptr HTMLLinkElementEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLLinkElementEventsToIUnknown*(x: ptr HTMLLinkElementEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLLinkElementToIDispatch*(x: ptr IHTMLLinkElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLLinkElementToIUnknown*(x: ptr IHTMLLinkElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLLinkElement2ToIDispatch*(x: ptr IHTMLLinkElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLLinkElement2ToIUnknown*(x: ptr IHTMLLinkElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLLinkElement3ToIDispatch*(x: ptr IHTMLLinkElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLLinkElement3ToIUnknown*(x: ptr IHTMLLinkElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLLinkElement4ToIDispatch*(x: ptr IHTMLLinkElement4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLLinkElement4ToIUnknown*(x: ptr IHTMLLinkElement4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLLinkElement5ToIDispatch*(x: ptr IHTMLLinkElement5): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLLinkElement5ToIUnknown*(x: ptr IHTMLLinkElement5): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLLinkElementToIDispatch*(x: ptr DispHTMLLinkElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLLinkElementToIUnknown*(x: ptr DispHTMLLinkElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTxtRangeToIDispatch*(x: ptr IHTMLTxtRange): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTxtRangeToIUnknown*(x: ptr IHTMLTxtRange): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTextRangeMetricsToIDispatch*(x: ptr IHTMLTextRangeMetrics): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTextRangeMetricsToIUnknown*(x: ptr IHTMLTextRangeMetrics): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTextRangeMetrics2ToIDispatch*(x: ptr IHTMLTextRangeMetrics2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTextRangeMetrics2ToIUnknown*(x: ptr IHTMLTextRangeMetrics2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTxtRangeCollectionToIDispatch*(x: ptr IHTMLTxtRangeCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTxtRangeCollectionToIUnknown*(x: ptr IHTMLTxtRangeCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMRangeToIDispatch*(x: ptr IHTMLDOMRange): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMRangeToIUnknown*(x: ptr IHTMLDOMRange): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLDOMRangeToIDispatch*(x: ptr DispHTMLDOMRange): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLDOMRangeToIUnknown*(x: ptr DispHTMLDOMRange): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLFormElementEvents2ToIDispatch*(x: ptr HTMLFormElementEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLFormElementEvents2ToIUnknown*(x: ptr HTMLFormElementEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLFormElementEventsToIDispatch*(x: ptr HTMLFormElementEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLFormElementEventsToIUnknown*(x: ptr HTMLFormElementEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFormElementToIDispatch*(x: ptr IHTMLFormElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFormElementToIUnknown*(x: ptr IHTMLFormElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFormElement2ToIDispatch*(x: ptr IHTMLFormElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFormElement2ToIUnknown*(x: ptr IHTMLFormElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFormElement3ToIDispatch*(x: ptr IHTMLFormElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFormElement3ToIUnknown*(x: ptr IHTMLFormElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLSubmitDataToIDispatch*(x: ptr IHTMLSubmitData): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLSubmitDataToIUnknown*(x: ptr IHTMLSubmitData): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFormElement4ToIDispatch*(x: ptr IHTMLFormElement4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFormElement4ToIUnknown*(x: ptr IHTMLFormElement4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLFormElementToIDispatch*(x: ptr DispHTMLFormElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLFormElementToIUnknown*(x: ptr DispHTMLFormElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLControlElementEvents2ToIDispatch*(x: ptr HTMLControlElementEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLControlElementEvents2ToIUnknown*(x: ptr HTMLControlElementEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLControlElementEventsToIDispatch*(x: ptr HTMLControlElementEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLControlElementEventsToIUnknown*(x: ptr HTMLControlElementEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLControlElementToIDispatch*(x: ptr IHTMLControlElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLControlElementToIUnknown*(x: ptr IHTMLControlElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTextElementToIDispatch*(x: ptr IHTMLTextElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTextElementToIUnknown*(x: ptr IHTMLTextElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLTextElementToIDispatch*(x: ptr DispHTMLTextElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLTextElementToIUnknown*(x: ptr DispHTMLTextElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLTextContainerEvents2ToIDispatch*(x: ptr HTMLTextContainerEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLTextContainerEvents2ToIUnknown*(x: ptr HTMLTextContainerEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLTextContainerEventsToIDispatch*(x: ptr HTMLTextContainerEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLTextContainerEventsToIUnknown*(x: ptr HTMLTextContainerEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTextContainerToIDispatch*(x: ptr IHTMLTextContainer): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTextContainerToIUnknown*(x: ptr IHTMLTextContainer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLControlRangeToIDispatch*(x: ptr IHTMLControlRange): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLControlRangeToIUnknown*(x: ptr IHTMLControlRange): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLControlRange2ToIDispatch*(x: ptr IHTMLControlRange2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLControlRange2ToIUnknown*(x: ptr IHTMLControlRange2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLImgEvents2ToIDispatch*(x: ptr HTMLImgEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLImgEvents2ToIUnknown*(x: ptr HTMLImgEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLImgEventsToIDispatch*(x: ptr HTMLImgEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLImgEventsToIUnknown*(x: ptr HTMLImgEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLImgElementToIDispatch*(x: ptr IHTMLImgElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLImgElementToIUnknown*(x: ptr IHTMLImgElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLImgElement2ToIDispatch*(x: ptr IHTMLImgElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLImgElement2ToIUnknown*(x: ptr IHTMLImgElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLImgElement3ToIDispatch*(x: ptr IHTMLImgElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLImgElement3ToIUnknown*(x: ptr IHTMLImgElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLImgElement4ToIDispatch*(x: ptr IHTMLImgElement4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLImgElement4ToIUnknown*(x: ptr IHTMLImgElement4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLMSImgElementToIDispatch*(x: ptr IHTMLMSImgElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLMSImgElementToIUnknown*(x: ptr IHTMLMSImgElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLImageElementFactoryToIDispatch*(x: ptr IHTMLImageElementFactory): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLImageElementFactoryToIUnknown*(x: ptr IHTMLImageElementFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLImgToIDispatch*(x: ptr DispHTMLImg): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLImgToIUnknown*(x: ptr DispHTMLImg): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLBodyElementToIDispatch*(x: ptr IHTMLBodyElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLBodyElementToIUnknown*(x: ptr IHTMLBodyElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLBodyElement2ToIDispatch*(x: ptr IHTMLBodyElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLBodyElement2ToIUnknown*(x: ptr IHTMLBodyElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLBodyElement3ToIDispatch*(x: ptr IHTMLBodyElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLBodyElement3ToIUnknown*(x: ptr IHTMLBodyElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLBodyElement4ToIDispatch*(x: ptr IHTMLBodyElement4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLBodyElement4ToIUnknown*(x: ptr IHTMLBodyElement4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLBodyElement5ToIDispatch*(x: ptr IHTMLBodyElement5): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLBodyElement5ToIUnknown*(x: ptr IHTMLBodyElement5): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLBodyToIDispatch*(x: ptr DispHTMLBody): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLBodyToIUnknown*(x: ptr DispHTMLBody): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFontElementToIDispatch*(x: ptr IHTMLFontElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFontElementToIUnknown*(x: ptr IHTMLFontElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLFontElementToIDispatch*(x: ptr DispHTMLFontElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLFontElementToIUnknown*(x: ptr DispHTMLFontElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLAnchorEvents2ToIDispatch*(x: ptr HTMLAnchorEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLAnchorEvents2ToIUnknown*(x: ptr HTMLAnchorEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLAnchorEventsToIDispatch*(x: ptr HTMLAnchorEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLAnchorEventsToIUnknown*(x: ptr HTMLAnchorEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAnchorElementToIDispatch*(x: ptr IHTMLAnchorElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAnchorElementToIUnknown*(x: ptr IHTMLAnchorElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAnchorElement2ToIDispatch*(x: ptr IHTMLAnchorElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAnchorElement2ToIUnknown*(x: ptr IHTMLAnchorElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAnchorElement3ToIDispatch*(x: ptr IHTMLAnchorElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAnchorElement3ToIUnknown*(x: ptr IHTMLAnchorElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLAnchorElementToIDispatch*(x: ptr DispHTMLAnchorElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLAnchorElementToIUnknown*(x: ptr DispHTMLAnchorElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLLabelEvents2ToIDispatch*(x: ptr HTMLLabelEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLLabelEvents2ToIUnknown*(x: ptr HTMLLabelEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLLabelEventsToIDispatch*(x: ptr HTMLLabelEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLLabelEventsToIUnknown*(x: ptr HTMLLabelEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLLabelElementToIDispatch*(x: ptr IHTMLLabelElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLLabelElementToIUnknown*(x: ptr IHTMLLabelElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLLabelElement2ToIDispatch*(x: ptr IHTMLLabelElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLLabelElement2ToIUnknown*(x: ptr IHTMLLabelElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLLabelElementToIDispatch*(x: ptr DispHTMLLabelElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLLabelElementToIUnknown*(x: ptr DispHTMLLabelElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLListElementToIDispatch*(x: ptr IHTMLListElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLListElementToIUnknown*(x: ptr IHTMLListElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLListElement2ToIDispatch*(x: ptr IHTMLListElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLListElement2ToIUnknown*(x: ptr IHTMLListElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLListElementToIDispatch*(x: ptr DispHTMLListElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLListElementToIUnknown*(x: ptr DispHTMLListElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLUListElementToIDispatch*(x: ptr IHTMLUListElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLUListElementToIUnknown*(x: ptr IHTMLUListElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLUListElementToIDispatch*(x: ptr DispHTMLUListElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLUListElementToIUnknown*(x: ptr DispHTMLUListElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLOListElementToIDispatch*(x: ptr IHTMLOListElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLOListElementToIUnknown*(x: ptr IHTMLOListElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLOListElementToIDispatch*(x: ptr DispHTMLOListElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLOListElementToIUnknown*(x: ptr DispHTMLOListElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLLIElementToIDispatch*(x: ptr IHTMLLIElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLLIElementToIUnknown*(x: ptr IHTMLLIElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLLIElementToIDispatch*(x: ptr DispHTMLLIElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLLIElementToIUnknown*(x: ptr DispHTMLLIElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLBlockElementToIDispatch*(x: ptr IHTMLBlockElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLBlockElementToIUnknown*(x: ptr IHTMLBlockElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLBlockElement2ToIDispatch*(x: ptr IHTMLBlockElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLBlockElement2ToIUnknown*(x: ptr IHTMLBlockElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLBlockElement3ToIDispatch*(x: ptr IHTMLBlockElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLBlockElement3ToIUnknown*(x: ptr IHTMLBlockElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLBlockElementToIDispatch*(x: ptr DispHTMLBlockElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLBlockElementToIUnknown*(x: ptr DispHTMLBlockElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDivElementToIDispatch*(x: ptr IHTMLDivElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDivElementToIUnknown*(x: ptr IHTMLDivElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLDivElementToIDispatch*(x: ptr DispHTMLDivElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLDivElementToIUnknown*(x: ptr DispHTMLDivElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDDElementToIDispatch*(x: ptr IHTMLDDElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDDElementToIUnknown*(x: ptr IHTMLDDElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLDDElementToIDispatch*(x: ptr DispHTMLDDElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLDDElementToIUnknown*(x: ptr DispHTMLDDElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDTElementToIDispatch*(x: ptr IHTMLDTElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDTElementToIUnknown*(x: ptr IHTMLDTElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLDTElementToIDispatch*(x: ptr DispHTMLDTElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLDTElementToIUnknown*(x: ptr DispHTMLDTElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLBRElementToIDispatch*(x: ptr IHTMLBRElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLBRElementToIUnknown*(x: ptr IHTMLBRElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLBRElementToIDispatch*(x: ptr DispHTMLBRElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLBRElementToIUnknown*(x: ptr DispHTMLBRElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDListElementToIDispatch*(x: ptr IHTMLDListElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDListElementToIUnknown*(x: ptr IHTMLDListElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLDListElementToIDispatch*(x: ptr DispHTMLDListElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLDListElementToIUnknown*(x: ptr DispHTMLDListElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLHRElementToIDispatch*(x: ptr IHTMLHRElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLHRElementToIUnknown*(x: ptr IHTMLHRElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLHRElementToIDispatch*(x: ptr DispHTMLHRElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLHRElementToIUnknown*(x: ptr DispHTMLHRElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLParaElementToIDispatch*(x: ptr IHTMLParaElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLParaElementToIUnknown*(x: ptr IHTMLParaElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLParaElementToIDispatch*(x: ptr DispHTMLParaElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLParaElementToIUnknown*(x: ptr DispHTMLParaElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLElementCollectionToIDispatch*(x: ptr IHTMLElementCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLElementCollectionToIUnknown*(x: ptr IHTMLElementCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLElementCollection2ToIDispatch*(x: ptr IHTMLElementCollection2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLElementCollection2ToIUnknown*(x: ptr IHTMLElementCollection2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLElementCollection3ToIDispatch*(x: ptr IHTMLElementCollection3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLElementCollection3ToIUnknown*(x: ptr IHTMLElementCollection3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLElementCollection4ToIDispatch*(x: ptr IHTMLElementCollection4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLElementCollection4ToIUnknown*(x: ptr IHTMLElementCollection4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLElementCollectionToIDispatch*(x: ptr DispHTMLElementCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLElementCollectionToIUnknown*(x: ptr DispHTMLElementCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLHeaderElementToIDispatch*(x: ptr IHTMLHeaderElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLHeaderElementToIUnknown*(x: ptr IHTMLHeaderElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLHeaderElementToIDispatch*(x: ptr DispHTMLHeaderElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLHeaderElementToIUnknown*(x: ptr DispHTMLHeaderElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLSelectElementEvents2ToIDispatch*(x: ptr HTMLSelectElementEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLSelectElementEvents2ToIUnknown*(x: ptr HTMLSelectElementEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLSelectElementEventsToIDispatch*(x: ptr HTMLSelectElementEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLSelectElementEventsToIUnknown*(x: ptr HTMLSelectElementEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLSelectElementExToIUnknown*(x: ptr IHTMLSelectElementEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLSelectElementToIDispatch*(x: ptr IHTMLSelectElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLSelectElementToIUnknown*(x: ptr IHTMLSelectElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLSelectElement2ToIDispatch*(x: ptr IHTMLSelectElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLSelectElement2ToIUnknown*(x: ptr IHTMLSelectElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLSelectElement4ToIDispatch*(x: ptr IHTMLSelectElement4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLSelectElement4ToIUnknown*(x: ptr IHTMLSelectElement4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLSelectElement5ToIDispatch*(x: ptr IHTMLSelectElement5): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLSelectElement5ToIUnknown*(x: ptr IHTMLSelectElement5): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLSelectElement6ToIDispatch*(x: ptr IHTMLSelectElement6): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLSelectElement6ToIUnknown*(x: ptr IHTMLSelectElement6): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLSelectElementToIDispatch*(x: ptr DispHTMLSelectElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLSelectElementToIUnknown*(x: ptr DispHTMLSelectElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLWndSelectElementToIDispatch*(x: ptr DispHTMLWndSelectElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLWndSelectElementToIUnknown*(x: ptr DispHTMLWndSelectElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLSelectionObjectToIDispatch*(x: ptr IHTMLSelectionObject): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLSelectionObjectToIUnknown*(x: ptr IHTMLSelectionObject): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLSelectionObject2ToIDispatch*(x: ptr IHTMLSelectionObject2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLSelectionObject2ToIUnknown*(x: ptr IHTMLSelectionObject2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLSelectionToIDispatch*(x: ptr IHTMLSelection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLSelectionToIUnknown*(x: ptr IHTMLSelection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLOptionElementToIDispatch*(x: ptr IHTMLOptionElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLOptionElementToIUnknown*(x: ptr IHTMLOptionElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLOptionElement3ToIDispatch*(x: ptr IHTMLOptionElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLOptionElement3ToIUnknown*(x: ptr IHTMLOptionElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLOptionElement4ToIDispatch*(x: ptr IHTMLOptionElement4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLOptionElement4ToIUnknown*(x: ptr IHTMLOptionElement4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLOptionElementFactoryToIDispatch*(x: ptr IHTMLOptionElementFactory): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLOptionElementFactoryToIUnknown*(x: ptr IHTMLOptionElementFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLOptionElementToIDispatch*(x: ptr DispHTMLOptionElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLOptionElementToIUnknown*(x: ptr DispHTMLOptionElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLWndOptionElementToIDispatch*(x: ptr DispHTMLWndOptionElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLWndOptionElementToIUnknown*(x: ptr DispHTMLWndOptionElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLButtonElementEvents2ToIDispatch*(x: ptr HTMLButtonElementEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLButtonElementEvents2ToIUnknown*(x: ptr HTMLButtonElementEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLButtonElementEventsToIDispatch*(x: ptr HTMLButtonElementEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLButtonElementEventsToIUnknown*(x: ptr HTMLButtonElementEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLInputTextElementEvents2ToIDispatch*(x: ptr HTMLInputTextElementEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLInputTextElementEvents2ToIUnknown*(x: ptr HTMLInputTextElementEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLOptionButtonElementEvents2ToIDispatch*(x: ptr HTMLOptionButtonElementEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLOptionButtonElementEvents2ToIUnknown*(x: ptr HTMLOptionButtonElementEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLInputFileElementEvents2ToIDispatch*(x: ptr HTMLInputFileElementEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLInputFileElementEvents2ToIUnknown*(x: ptr HTMLInputFileElementEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLInputImageEvents2ToIDispatch*(x: ptr HTMLInputImageEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLInputImageEvents2ToIUnknown*(x: ptr HTMLInputImageEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLInputTextElementEventsToIDispatch*(x: ptr HTMLInputTextElementEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLInputTextElementEventsToIUnknown*(x: ptr HTMLInputTextElementEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLOptionButtonElementEventsToIDispatch*(x: ptr HTMLOptionButtonElementEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLOptionButtonElementEventsToIUnknown*(x: ptr HTMLOptionButtonElementEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLInputFileElementEventsToIDispatch*(x: ptr HTMLInputFileElementEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLInputFileElementEventsToIUnknown*(x: ptr HTMLInputFileElementEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLInputImageEventsToIDispatch*(x: ptr HTMLInputImageEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLInputImageEventsToIUnknown*(x: ptr HTMLInputImageEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLInputElementToIDispatch*(x: ptr IHTMLInputElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLInputElementToIUnknown*(x: ptr IHTMLInputElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLInputElement2ToIDispatch*(x: ptr IHTMLInputElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLInputElement2ToIUnknown*(x: ptr IHTMLInputElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLInputElement3ToIDispatch*(x: ptr IHTMLInputElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLInputElement3ToIUnknown*(x: ptr IHTMLInputElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLInputButtonElementToIDispatch*(x: ptr IHTMLInputButtonElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLInputButtonElementToIUnknown*(x: ptr IHTMLInputButtonElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLInputHiddenElementToIDispatch*(x: ptr IHTMLInputHiddenElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLInputHiddenElementToIUnknown*(x: ptr IHTMLInputHiddenElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLInputTextElementToIDispatch*(x: ptr IHTMLInputTextElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLInputTextElementToIUnknown*(x: ptr IHTMLInputTextElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLInputTextElement2ToIDispatch*(x: ptr IHTMLInputTextElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLInputTextElement2ToIUnknown*(x: ptr IHTMLInputTextElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLInputFileElementToIDispatch*(x: ptr IHTMLInputFileElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLInputFileElementToIUnknown*(x: ptr IHTMLInputFileElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLOptionButtonElementToIDispatch*(x: ptr IHTMLOptionButtonElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLOptionButtonElementToIUnknown*(x: ptr IHTMLOptionButtonElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLInputImageToIDispatch*(x: ptr IHTMLInputImage): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLInputImageToIUnknown*(x: ptr IHTMLInputImage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLInputRangeElementToIDispatch*(x: ptr IHTMLInputRangeElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLInputRangeElementToIUnknown*(x: ptr IHTMLInputRangeElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLInputElementToIDispatch*(x: ptr DispHTMLInputElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLInputElementToIUnknown*(x: ptr DispHTMLInputElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTextAreaElementToIDispatch*(x: ptr IHTMLTextAreaElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTextAreaElementToIUnknown*(x: ptr IHTMLTextAreaElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTextAreaElement2ToIDispatch*(x: ptr IHTMLTextAreaElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTextAreaElement2ToIUnknown*(x: ptr IHTMLTextAreaElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLTextAreaElementToIDispatch*(x: ptr DispHTMLTextAreaElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLTextAreaElementToIUnknown*(x: ptr DispHTMLTextAreaElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLRichtextElementToIDispatch*(x: ptr DispHTMLRichtextElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLRichtextElementToIUnknown*(x: ptr DispHTMLRichtextElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLButtonElementToIDispatch*(x: ptr IHTMLButtonElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLButtonElementToIUnknown*(x: ptr IHTMLButtonElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLButtonElement2ToIDispatch*(x: ptr IHTMLButtonElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLButtonElement2ToIUnknown*(x: ptr IHTMLButtonElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLButtonElementToIDispatch*(x: ptr DispHTMLButtonElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLButtonElementToIUnknown*(x: ptr DispHTMLButtonElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLMarqueeElementEvents2ToIDispatch*(x: ptr HTMLMarqueeElementEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLMarqueeElementEvents2ToIUnknown*(x: ptr HTMLMarqueeElementEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLMarqueeElementEventsToIDispatch*(x: ptr HTMLMarqueeElementEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLMarqueeElementEventsToIUnknown*(x: ptr HTMLMarqueeElementEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLMarqueeElementToIDispatch*(x: ptr IHTMLMarqueeElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLMarqueeElementToIUnknown*(x: ptr IHTMLMarqueeElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLMarqueeElementToIDispatch*(x: ptr DispHTMLMarqueeElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLMarqueeElementToIUnknown*(x: ptr DispHTMLMarqueeElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLHtmlElementToIDispatch*(x: ptr IHTMLHtmlElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLHtmlElementToIUnknown*(x: ptr IHTMLHtmlElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLHeadElementToIDispatch*(x: ptr IHTMLHeadElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLHeadElementToIUnknown*(x: ptr IHTMLHeadElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLHeadElement2ToIDispatch*(x: ptr IHTMLHeadElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLHeadElement2ToIUnknown*(x: ptr IHTMLHeadElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTitleElementToIDispatch*(x: ptr IHTMLTitleElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTitleElementToIUnknown*(x: ptr IHTMLTitleElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLMetaElementToIDispatch*(x: ptr IHTMLMetaElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLMetaElementToIUnknown*(x: ptr IHTMLMetaElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLMetaElement2ToIDispatch*(x: ptr IHTMLMetaElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLMetaElement2ToIUnknown*(x: ptr IHTMLMetaElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLMetaElement3ToIDispatch*(x: ptr IHTMLMetaElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLMetaElement3ToIUnknown*(x: ptr IHTMLMetaElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLBaseElementToIDispatch*(x: ptr IHTMLBaseElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLBaseElementToIUnknown*(x: ptr IHTMLBaseElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLBaseElement2ToIDispatch*(x: ptr IHTMLBaseElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLBaseElement2ToIUnknown*(x: ptr IHTMLBaseElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLIsIndexElementToIDispatch*(x: ptr IHTMLIsIndexElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLIsIndexElementToIUnknown*(x: ptr IHTMLIsIndexElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLIsIndexElement2ToIDispatch*(x: ptr IHTMLIsIndexElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLIsIndexElement2ToIUnknown*(x: ptr IHTMLIsIndexElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLNextIdElementToIDispatch*(x: ptr IHTMLNextIdElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLNextIdElementToIUnknown*(x: ptr IHTMLNextIdElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLHtmlElementToIDispatch*(x: ptr DispHTMLHtmlElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLHtmlElementToIUnknown*(x: ptr DispHTMLHtmlElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLHeadElementToIDispatch*(x: ptr DispHTMLHeadElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLHeadElementToIUnknown*(x: ptr DispHTMLHeadElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLTitleElementToIDispatch*(x: ptr DispHTMLTitleElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLTitleElementToIUnknown*(x: ptr DispHTMLTitleElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLMetaElementToIDispatch*(x: ptr DispHTMLMetaElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLMetaElementToIUnknown*(x: ptr DispHTMLMetaElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLBaseElementToIDispatch*(x: ptr DispHTMLBaseElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLBaseElementToIUnknown*(x: ptr DispHTMLBaseElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLIsIndexElementToIDispatch*(x: ptr DispHTMLIsIndexElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLIsIndexElementToIUnknown*(x: ptr DispHTMLIsIndexElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLNextIdElementToIDispatch*(x: ptr DispHTMLNextIdElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLNextIdElementToIUnknown*(x: ptr DispHTMLNextIdElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLBaseFontElementToIDispatch*(x: ptr IHTMLBaseFontElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLBaseFontElementToIUnknown*(x: ptr IHTMLBaseFontElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLBaseFontElementToIDispatch*(x: ptr DispHTMLBaseFontElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLBaseFontElementToIUnknown*(x: ptr DispHTMLBaseFontElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLUnknownElementToIDispatch*(x: ptr IHTMLUnknownElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLUnknownElementToIUnknown*(x: ptr IHTMLUnknownElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLUnknownElementToIDispatch*(x: ptr DispHTMLUnknownElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLUnknownElementToIUnknown*(x: ptr DispHTMLUnknownElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOmHistoryToIDispatch*(x: ptr IOmHistory): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIOmHistoryToIUnknown*(x: ptr IOmHistory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLMimeTypesCollectionToIDispatch*(x: ptr IHTMLMimeTypesCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLMimeTypesCollectionToIUnknown*(x: ptr IHTMLMimeTypesCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLPluginsCollectionToIDispatch*(x: ptr IHTMLPluginsCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLPluginsCollectionToIUnknown*(x: ptr IHTMLPluginsCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLOpsProfileToIDispatch*(x: ptr IHTMLOpsProfile): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLOpsProfileToIUnknown*(x: ptr IHTMLOpsProfile): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOmNavigatorToIDispatch*(x: ptr IOmNavigator): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIOmNavigatorToIUnknown*(x: ptr IOmNavigator): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINavigatorGeolocationToIDispatch*(x: ptr INavigatorGeolocation): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterINavigatorGeolocationToIUnknown*(x: ptr INavigatorGeolocation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINavigatorDoNotTrackToIDispatch*(x: ptr INavigatorDoNotTrack): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterINavigatorDoNotTrackToIUnknown*(x: ptr INavigatorDoNotTrack): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLLocationToIDispatch*(x: ptr IHTMLLocation): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLLocationToIUnknown*(x: ptr IHTMLLocation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLHistoryToIDispatch*(x: ptr DispHTMLHistory): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLHistoryToIUnknown*(x: ptr DispHTMLHistory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispCPluginsToIDispatch*(x: ptr DispCPlugins): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispCPluginsToIUnknown*(x: ptr DispCPlugins): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLNavigatorToIDispatch*(x: ptr DispHTMLNavigator): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLNavigatorToIUnknown*(x: ptr DispHTMLNavigator): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLLocationToIDispatch*(x: ptr DispHTMLLocation): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLLocationToIUnknown*(x: ptr DispHTMLLocation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLBookmarkCollectionToIDispatch*(x: ptr IHTMLBookmarkCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLBookmarkCollectionToIUnknown*(x: ptr IHTMLBookmarkCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDataTransferToIDispatch*(x: ptr IHTMLDataTransfer): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDataTransferToIUnknown*(x: ptr IHTMLDataTransfer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLEventObjToIDispatch*(x: ptr IHTMLEventObj): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLEventObjToIUnknown*(x: ptr IHTMLEventObj): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLEventObj2ToIDispatch*(x: ptr IHTMLEventObj2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLEventObj2ToIUnknown*(x: ptr IHTMLEventObj2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLEventObj3ToIDispatch*(x: ptr IHTMLEventObj3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLEventObj3ToIUnknown*(x: ptr IHTMLEventObj3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLEventObj4ToIDispatch*(x: ptr IHTMLEventObj4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLEventObj4ToIUnknown*(x: ptr IHTMLEventObj4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLEventObj5ToIDispatch*(x: ptr IHTMLEventObj5): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLEventObj5ToIUnknown*(x: ptr IHTMLEventObj5): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLEventObj6ToIDispatch*(x: ptr IHTMLEventObj6): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLEventObj6ToIUnknown*(x: ptr IHTMLEventObj6): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispCEventObjToIDispatch*(x: ptr DispCEventObj): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispCEventObjToIUnknown*(x: ptr DispCEventObj): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleMediaToIDispatch*(x: ptr IHTMLStyleMedia): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleMediaToIUnknown*(x: ptr IHTMLStyleMedia): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLStyleMediaToIDispatch*(x: ptr DispHTMLStyleMedia): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLStyleMediaToIUnknown*(x: ptr DispHTMLStyleMedia): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLWindowEvents3ToIDispatch*(x: ptr HTMLWindowEvents3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLWindowEvents3ToIUnknown*(x: ptr HTMLWindowEvents3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLWindowEvents2ToIDispatch*(x: ptr HTMLWindowEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLWindowEvents2ToIUnknown*(x: ptr HTMLWindowEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLWindowEventsToIDispatch*(x: ptr HTMLWindowEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLWindowEventsToIUnknown*(x: ptr HTMLWindowEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFramesCollection2ToIDispatch*(x: ptr IHTMLFramesCollection2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFramesCollection2ToIUnknown*(x: ptr IHTMLFramesCollection2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLScreenToIDispatch*(x: ptr IHTMLScreen): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLScreenToIUnknown*(x: ptr IHTMLScreen): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLScreen2ToIDispatch*(x: ptr IHTMLScreen2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLScreen2ToIUnknown*(x: ptr IHTMLScreen2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLScreen3ToIDispatch*(x: ptr IHTMLScreen3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLScreen3ToIUnknown*(x: ptr IHTMLScreen3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLScreen4ToIDispatch*(x: ptr IHTMLScreen4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLScreen4ToIUnknown*(x: ptr IHTMLScreen4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLWindow2ToIHTMLFramesCollection2*(x: ptr IHTMLWindow2): ptr IHTMLFramesCollection2 = cast[ptr IHTMLFramesCollection2](x)
-converter winimConverterIHTMLWindow2ToIDispatch*(x: ptr IHTMLWindow2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLWindow2ToIUnknown*(x: ptr IHTMLWindow2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLWindow3ToIDispatch*(x: ptr IHTMLWindow3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLWindow3ToIUnknown*(x: ptr IHTMLWindow3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLWindow4ToIDispatch*(x: ptr IHTMLWindow4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLWindow4ToIUnknown*(x: ptr IHTMLWindow4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLWindow5ToIDispatch*(x: ptr IHTMLWindow5): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLWindow5ToIUnknown*(x: ptr IHTMLWindow5): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLWindow6ToIDispatch*(x: ptr IHTMLWindow6): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLWindow6ToIUnknown*(x: ptr IHTMLWindow6): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLWindow7ToIDispatch*(x: ptr IHTMLWindow7): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLWindow7ToIUnknown*(x: ptr IHTMLWindow7): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLWindow8ToIDispatch*(x: ptr IHTMLWindow8): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLWindow8ToIUnknown*(x: ptr IHTMLWindow8): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLScreenToIDispatch*(x: ptr DispHTMLScreen): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLScreenToIUnknown*(x: ptr DispHTMLScreen): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLWindow2ToIDispatch*(x: ptr DispHTMLWindow2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLWindow2ToIUnknown*(x: ptr DispHTMLWindow2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLWindowProxyToIDispatch*(x: ptr DispHTMLWindowProxy): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLWindowProxyToIUnknown*(x: ptr DispHTMLWindowProxy): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDocumentCompatibleInfoToIDispatch*(x: ptr IHTMLDocumentCompatibleInfo): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDocumentCompatibleInfoToIUnknown*(x: ptr IHTMLDocumentCompatibleInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDocumentCompatibleInfoCollectionToIDispatch*(x: ptr IHTMLDocumentCompatibleInfoCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDocumentCompatibleInfoCollectionToIUnknown*(x: ptr IHTMLDocumentCompatibleInfoCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLDocumentCompatibleInfoToIDispatch*(x: ptr DispHTMLDocumentCompatibleInfo): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLDocumentCompatibleInfoToIUnknown*(x: ptr DispHTMLDocumentCompatibleInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLDocumentCompatibleInfoCollectionToIDispatch*(x: ptr DispHTMLDocumentCompatibleInfoCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLDocumentCompatibleInfoCollectionToIUnknown*(x: ptr DispHTMLDocumentCompatibleInfoCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLDocumentEvents4ToIDispatch*(x: ptr HTMLDocumentEvents4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLDocumentEvents4ToIUnknown*(x: ptr HTMLDocumentEvents4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLDocumentEvents3ToIDispatch*(x: ptr HTMLDocumentEvents3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLDocumentEvents3ToIUnknown*(x: ptr HTMLDocumentEvents3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLDocumentEvents2ToIDispatch*(x: ptr HTMLDocumentEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLDocumentEvents2ToIUnknown*(x: ptr HTMLDocumentEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLDocumentEventsToIDispatch*(x: ptr HTMLDocumentEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLDocumentEventsToIUnknown*(x: ptr HTMLDocumentEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDocumentToIDispatch*(x: ptr IHTMLDocument): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDocumentToIUnknown*(x: ptr IHTMLDocument): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDocument2ToIHTMLDocument*(x: ptr IHTMLDocument2): ptr IHTMLDocument = cast[ptr IHTMLDocument](x)
-converter winimConverterIHTMLDocument2ToIDispatch*(x: ptr IHTMLDocument2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDocument2ToIUnknown*(x: ptr IHTMLDocument2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDocument3ToIDispatch*(x: ptr IHTMLDocument3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDocument3ToIUnknown*(x: ptr IHTMLDocument3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDocument4ToIDispatch*(x: ptr IHTMLDocument4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDocument4ToIUnknown*(x: ptr IHTMLDocument4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDocument5ToIDispatch*(x: ptr IHTMLDocument5): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDocument5ToIUnknown*(x: ptr IHTMLDocument5): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDocument6ToIDispatch*(x: ptr IHTMLDocument6): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDocument6ToIUnknown*(x: ptr IHTMLDocument6): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDocument7ToIDispatch*(x: ptr IHTMLDocument7): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDocument7ToIUnknown*(x: ptr IHTMLDocument7): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDocument8ToIDispatch*(x: ptr IHTMLDocument8): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDocument8ToIUnknown*(x: ptr IHTMLDocument8): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDocumentEventToIDispatch*(x: ptr IDocumentEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDocumentEventToIUnknown*(x: ptr IDocumentEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDocumentRangeToIDispatch*(x: ptr IDocumentRange): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDocumentRangeToIUnknown*(x: ptr IDocumentRange): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDocumentSelectorToIDispatch*(x: ptr IDocumentSelector): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDocumentSelectorToIUnknown*(x: ptr IDocumentSelector): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDocumentTraversalToIDispatch*(x: ptr IDocumentTraversal): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDocumentTraversalToIUnknown*(x: ptr IDocumentTraversal): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLDocumentToIDispatch*(x: ptr DispHTMLDocument): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLDocumentToIUnknown*(x: ptr DispHTMLDocument): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDWebBridgeEventsToIDispatch*(x: ptr DWebBridgeEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDWebBridgeEventsToIUnknown*(x: ptr DWebBridgeEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWebBridgeToIDispatch*(x: ptr IWebBridge): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIWebBridgeToIUnknown*(x: ptr IWebBridge): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWBScriptControlToIDispatch*(x: ptr IWBScriptControl): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIWBScriptControlToIUnknown*(x: ptr IWBScriptControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLEmbedElementToIDispatch*(x: ptr IHTMLEmbedElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLEmbedElementToIUnknown*(x: ptr IHTMLEmbedElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLEmbedElement2ToIDispatch*(x: ptr IHTMLEmbedElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLEmbedElement2ToIUnknown*(x: ptr IHTMLEmbedElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLEmbedToIDispatch*(x: ptr DispHTMLEmbed): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLEmbedToIUnknown*(x: ptr DispHTMLEmbed): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLMapEvents2ToIDispatch*(x: ptr HTMLMapEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLMapEvents2ToIUnknown*(x: ptr HTMLMapEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLMapEventsToIDispatch*(x: ptr HTMLMapEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLMapEventsToIUnknown*(x: ptr HTMLMapEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAreasCollectionToIDispatch*(x: ptr IHTMLAreasCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAreasCollectionToIUnknown*(x: ptr IHTMLAreasCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAreasCollection2ToIDispatch*(x: ptr IHTMLAreasCollection2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAreasCollection2ToIUnknown*(x: ptr IHTMLAreasCollection2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAreasCollection3ToIDispatch*(x: ptr IHTMLAreasCollection3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAreasCollection3ToIUnknown*(x: ptr IHTMLAreasCollection3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAreasCollection4ToIDispatch*(x: ptr IHTMLAreasCollection4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAreasCollection4ToIUnknown*(x: ptr IHTMLAreasCollection4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLMapElementToIDispatch*(x: ptr IHTMLMapElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLMapElementToIUnknown*(x: ptr IHTMLMapElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLAreasCollectionToIDispatch*(x: ptr DispHTMLAreasCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLAreasCollectionToIUnknown*(x: ptr DispHTMLAreasCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLMapElementToIDispatch*(x: ptr DispHTMLMapElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLMapElementToIUnknown*(x: ptr DispHTMLMapElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLAreaEvents2ToIDispatch*(x: ptr HTMLAreaEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLAreaEvents2ToIUnknown*(x: ptr HTMLAreaEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLAreaEventsToIDispatch*(x: ptr HTMLAreaEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLAreaEventsToIUnknown*(x: ptr HTMLAreaEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAreaElementToIDispatch*(x: ptr IHTMLAreaElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAreaElementToIUnknown*(x: ptr IHTMLAreaElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAreaElement2ToIDispatch*(x: ptr IHTMLAreaElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAreaElement2ToIUnknown*(x: ptr IHTMLAreaElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLAreaElementToIDispatch*(x: ptr DispHTMLAreaElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLAreaElementToIUnknown*(x: ptr DispHTMLAreaElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableCaptionToIDispatch*(x: ptr IHTMLTableCaption): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableCaptionToIUnknown*(x: ptr IHTMLTableCaption): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLTableCaptionToIDispatch*(x: ptr DispHTMLTableCaption): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLTableCaptionToIUnknown*(x: ptr DispHTMLTableCaption): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCommentElementToIDispatch*(x: ptr IHTMLCommentElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCommentElementToIUnknown*(x: ptr IHTMLCommentElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCommentElement2ToIDispatch*(x: ptr IHTMLCommentElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCommentElement2ToIUnknown*(x: ptr IHTMLCommentElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCommentElement3ToIDispatch*(x: ptr IHTMLCommentElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCommentElement3ToIUnknown*(x: ptr IHTMLCommentElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLCommentElementToIDispatch*(x: ptr DispHTMLCommentElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLCommentElementToIUnknown*(x: ptr DispHTMLCommentElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLPhraseElementToIDispatch*(x: ptr IHTMLPhraseElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLPhraseElementToIUnknown*(x: ptr IHTMLPhraseElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLPhraseElement2ToIDispatch*(x: ptr IHTMLPhraseElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLPhraseElement2ToIUnknown*(x: ptr IHTMLPhraseElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLPhraseElement3ToIDispatch*(x: ptr IHTMLPhraseElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLPhraseElement3ToIUnknown*(x: ptr IHTMLPhraseElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLSpanElementToIDispatch*(x: ptr IHTMLSpanElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLSpanElementToIUnknown*(x: ptr IHTMLSpanElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLPhraseElementToIDispatch*(x: ptr DispHTMLPhraseElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLPhraseElementToIUnknown*(x: ptr DispHTMLPhraseElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLSpanElementToIDispatch*(x: ptr DispHTMLSpanElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLSpanElementToIUnknown*(x: ptr DispHTMLSpanElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLTableEvents2ToIDispatch*(x: ptr HTMLTableEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLTableEvents2ToIUnknown*(x: ptr HTMLTableEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLTableEventsToIDispatch*(x: ptr HTMLTableEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLTableEventsToIUnknown*(x: ptr HTMLTableEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableToIDispatch*(x: ptr IHTMLTable): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableToIUnknown*(x: ptr IHTMLTable): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTable2ToIDispatch*(x: ptr IHTMLTable2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTable2ToIUnknown*(x: ptr IHTMLTable2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTable3ToIDispatch*(x: ptr IHTMLTable3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTable3ToIUnknown*(x: ptr IHTMLTable3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTable4ToIDispatch*(x: ptr IHTMLTable4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTable4ToIUnknown*(x: ptr IHTMLTable4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableColToIDispatch*(x: ptr IHTMLTableCol): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableColToIUnknown*(x: ptr IHTMLTableCol): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableCol2ToIDispatch*(x: ptr IHTMLTableCol2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableCol2ToIUnknown*(x: ptr IHTMLTableCol2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableCol3ToIDispatch*(x: ptr IHTMLTableCol3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableCol3ToIUnknown*(x: ptr IHTMLTableCol3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableSectionToIDispatch*(x: ptr IHTMLTableSection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableSectionToIUnknown*(x: ptr IHTMLTableSection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableSection2ToIDispatch*(x: ptr IHTMLTableSection2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableSection2ToIUnknown*(x: ptr IHTMLTableSection2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableSection3ToIDispatch*(x: ptr IHTMLTableSection3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableSection3ToIUnknown*(x: ptr IHTMLTableSection3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableSection4ToIDispatch*(x: ptr IHTMLTableSection4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableSection4ToIUnknown*(x: ptr IHTMLTableSection4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableRowToIDispatch*(x: ptr IHTMLTableRow): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableRowToIUnknown*(x: ptr IHTMLTableRow): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableRow2ToIDispatch*(x: ptr IHTMLTableRow2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableRow2ToIUnknown*(x: ptr IHTMLTableRow2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableRow3ToIDispatch*(x: ptr IHTMLTableRow3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableRow3ToIUnknown*(x: ptr IHTMLTableRow3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableRow4ToIDispatch*(x: ptr IHTMLTableRow4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableRow4ToIUnknown*(x: ptr IHTMLTableRow4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableRowMetricsToIDispatch*(x: ptr IHTMLTableRowMetrics): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableRowMetricsToIUnknown*(x: ptr IHTMLTableRowMetrics): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableCellToIDispatch*(x: ptr IHTMLTableCell): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableCellToIUnknown*(x: ptr IHTMLTableCell): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableCell2ToIDispatch*(x: ptr IHTMLTableCell2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableCell2ToIUnknown*(x: ptr IHTMLTableCell2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTableCell3ToIDispatch*(x: ptr IHTMLTableCell3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTableCell3ToIUnknown*(x: ptr IHTMLTableCell3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLTableToIDispatch*(x: ptr DispHTMLTable): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLTableToIUnknown*(x: ptr DispHTMLTable): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLTableColToIDispatch*(x: ptr DispHTMLTableCol): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLTableColToIUnknown*(x: ptr DispHTMLTableCol): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLTableSectionToIDispatch*(x: ptr DispHTMLTableSection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLTableSectionToIUnknown*(x: ptr DispHTMLTableSection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLTableRowToIDispatch*(x: ptr DispHTMLTableRow): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLTableRowToIUnknown*(x: ptr DispHTMLTableRow): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLTableCellToIDispatch*(x: ptr DispHTMLTableCell): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLTableCellToIUnknown*(x: ptr DispHTMLTableCell): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLScriptEvents2ToIDispatch*(x: ptr HTMLScriptEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLScriptEvents2ToIUnknown*(x: ptr HTMLScriptEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLScriptEventsToIDispatch*(x: ptr HTMLScriptEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLScriptEventsToIUnknown*(x: ptr HTMLScriptEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLScriptElementToIDispatch*(x: ptr IHTMLScriptElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLScriptElementToIUnknown*(x: ptr IHTMLScriptElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLScriptElement2ToIDispatch*(x: ptr IHTMLScriptElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLScriptElement2ToIUnknown*(x: ptr IHTMLScriptElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLScriptElement3ToIDispatch*(x: ptr IHTMLScriptElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLScriptElement3ToIUnknown*(x: ptr IHTMLScriptElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLScriptElement4ToIDispatch*(x: ptr IHTMLScriptElement4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLScriptElement4ToIUnknown*(x: ptr IHTMLScriptElement4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLScriptElementToIDispatch*(x: ptr DispHTMLScriptElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLScriptElementToIUnknown*(x: ptr DispHTMLScriptElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLNoShowElementToIDispatch*(x: ptr IHTMLNoShowElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLNoShowElementToIUnknown*(x: ptr IHTMLNoShowElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLNoShowElementToIDispatch*(x: ptr DispHTMLNoShowElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLNoShowElementToIUnknown*(x: ptr DispHTMLNoShowElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLObjectElementEvents2ToIDispatch*(x: ptr HTMLObjectElementEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLObjectElementEvents2ToIUnknown*(x: ptr HTMLObjectElementEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLObjectElementEventsToIDispatch*(x: ptr HTMLObjectElementEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLObjectElementEventsToIUnknown*(x: ptr HTMLObjectElementEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLObjectElementToIDispatch*(x: ptr IHTMLObjectElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLObjectElementToIUnknown*(x: ptr IHTMLObjectElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLObjectElement2ToIDispatch*(x: ptr IHTMLObjectElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLObjectElement2ToIUnknown*(x: ptr IHTMLObjectElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLObjectElement3ToIDispatch*(x: ptr IHTMLObjectElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLObjectElement3ToIUnknown*(x: ptr IHTMLObjectElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLObjectElement4ToIDispatch*(x: ptr IHTMLObjectElement4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLObjectElement4ToIUnknown*(x: ptr IHTMLObjectElement4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLObjectElement5ToIDispatch*(x: ptr IHTMLObjectElement5): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLObjectElement5ToIUnknown*(x: ptr IHTMLObjectElement5): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLParamElementToIDispatch*(x: ptr IHTMLParamElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLParamElementToIUnknown*(x: ptr IHTMLParamElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLParamElement2ToIDispatch*(x: ptr IHTMLParamElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLParamElement2ToIUnknown*(x: ptr IHTMLParamElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLObjectElementToIDispatch*(x: ptr DispHTMLObjectElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLObjectElementToIUnknown*(x: ptr DispHTMLObjectElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLParamElementToIDispatch*(x: ptr DispHTMLParamElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLParamElementToIUnknown*(x: ptr DispHTMLParamElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLFrameSiteEvents2ToIDispatch*(x: ptr HTMLFrameSiteEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLFrameSiteEvents2ToIUnknown*(x: ptr HTMLFrameSiteEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLFrameSiteEventsToIDispatch*(x: ptr HTMLFrameSiteEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLFrameSiteEventsToIUnknown*(x: ptr HTMLFrameSiteEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFrameBaseToIDispatch*(x: ptr IHTMLFrameBase): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFrameBaseToIUnknown*(x: ptr IHTMLFrameBase): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFrameBase2ToIDispatch*(x: ptr IHTMLFrameBase2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFrameBase2ToIUnknown*(x: ptr IHTMLFrameBase2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFrameBase3ToIDispatch*(x: ptr IHTMLFrameBase3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFrameBase3ToIUnknown*(x: ptr IHTMLFrameBase3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLFrameBaseToIDispatch*(x: ptr DispHTMLFrameBase): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLFrameBaseToIUnknown*(x: ptr DispHTMLFrameBase): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFrameElementToIDispatch*(x: ptr IHTMLFrameElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFrameElementToIUnknown*(x: ptr IHTMLFrameElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFrameElement2ToIDispatch*(x: ptr IHTMLFrameElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFrameElement2ToIUnknown*(x: ptr IHTMLFrameElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFrameElement3ToIDispatch*(x: ptr IHTMLFrameElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFrameElement3ToIUnknown*(x: ptr IHTMLFrameElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLFrameElementToIDispatch*(x: ptr DispHTMLFrameElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLFrameElementToIUnknown*(x: ptr DispHTMLFrameElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLIFrameElementToIDispatch*(x: ptr IHTMLIFrameElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLIFrameElementToIUnknown*(x: ptr IHTMLIFrameElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLIFrameElement2ToIDispatch*(x: ptr IHTMLIFrameElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLIFrameElement2ToIUnknown*(x: ptr IHTMLIFrameElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLIFrameElement3ToIDispatch*(x: ptr IHTMLIFrameElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLIFrameElement3ToIUnknown*(x: ptr IHTMLIFrameElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLIFrameToIDispatch*(x: ptr DispHTMLIFrame): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLIFrameToIUnknown*(x: ptr DispHTMLIFrame): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDivPositionToIDispatch*(x: ptr IHTMLDivPosition): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDivPositionToIUnknown*(x: ptr IHTMLDivPosition): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFieldSetElementToIDispatch*(x: ptr IHTMLFieldSetElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFieldSetElementToIUnknown*(x: ptr IHTMLFieldSetElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFieldSetElement2ToIDispatch*(x: ptr IHTMLFieldSetElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFieldSetElement2ToIUnknown*(x: ptr IHTMLFieldSetElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLLegendElementToIDispatch*(x: ptr IHTMLLegendElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLLegendElementToIUnknown*(x: ptr IHTMLLegendElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLLegendElement2ToIDispatch*(x: ptr IHTMLLegendElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLLegendElement2ToIUnknown*(x: ptr IHTMLLegendElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLDivPositionToIDispatch*(x: ptr DispHTMLDivPosition): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLDivPositionToIUnknown*(x: ptr DispHTMLDivPosition): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLFieldSetElementToIDispatch*(x: ptr DispHTMLFieldSetElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLFieldSetElementToIUnknown*(x: ptr DispHTMLFieldSetElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLLegendElementToIDispatch*(x: ptr DispHTMLLegendElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLLegendElementToIUnknown*(x: ptr DispHTMLLegendElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLSpanFlowToIDispatch*(x: ptr IHTMLSpanFlow): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLSpanFlowToIUnknown*(x: ptr IHTMLSpanFlow): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLSpanFlowToIDispatch*(x: ptr DispHTMLSpanFlow): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLSpanFlowToIUnknown*(x: ptr DispHTMLSpanFlow): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFrameSetElementToIDispatch*(x: ptr IHTMLFrameSetElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFrameSetElementToIUnknown*(x: ptr IHTMLFrameSetElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFrameSetElement2ToIDispatch*(x: ptr IHTMLFrameSetElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFrameSetElement2ToIUnknown*(x: ptr IHTMLFrameSetElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFrameSetElement3ToIDispatch*(x: ptr IHTMLFrameSetElement3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFrameSetElement3ToIUnknown*(x: ptr IHTMLFrameSetElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLFrameSetSiteToIDispatch*(x: ptr DispHTMLFrameSetSite): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLFrameSetSiteToIUnknown*(x: ptr DispHTMLFrameSetSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLBGsoundToIDispatch*(x: ptr IHTMLBGsound): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLBGsoundToIUnknown*(x: ptr IHTMLBGsound): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLBGsoundToIDispatch*(x: ptr DispHTMLBGsound): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLBGsoundToIUnknown*(x: ptr DispHTMLBGsound): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFontNamesCollectionToIDispatch*(x: ptr IHTMLFontNamesCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFontNamesCollectionToIUnknown*(x: ptr IHTMLFontNamesCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLFontSizesCollectionToIDispatch*(x: ptr IHTMLFontSizesCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLFontSizesCollectionToIUnknown*(x: ptr IHTMLFontSizesCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLOptionsHolderToIDispatch*(x: ptr IHTMLOptionsHolder): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLOptionsHolderToIUnknown*(x: ptr IHTMLOptionsHolder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLStyleElementEvents2ToIDispatch*(x: ptr HTMLStyleElementEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLStyleElementEvents2ToIUnknown*(x: ptr HTMLStyleElementEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLStyleElementEventsToIDispatch*(x: ptr HTMLStyleElementEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLStyleElementEventsToIUnknown*(x: ptr HTMLStyleElementEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleElementToIDispatch*(x: ptr IHTMLStyleElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleElementToIUnknown*(x: ptr IHTMLStyleElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleElement2ToIDispatch*(x: ptr IHTMLStyleElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleElement2ToIUnknown*(x: ptr IHTMLStyleElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLStyleElementToIDispatch*(x: ptr DispHTMLStyleElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLStyleElementToIUnknown*(x: ptr DispHTMLStyleElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleFontFaceToIDispatch*(x: ptr IHTMLStyleFontFace): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleFontFaceToIUnknown*(x: ptr IHTMLStyleFontFace): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleFontFace2ToIDispatch*(x: ptr IHTMLStyleFontFace2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleFontFace2ToIUnknown*(x: ptr IHTMLStyleFontFace2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLStyleFontFaceToIDispatch*(x: ptr DispHTMLStyleFontFace): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLStyleFontFaceToIUnknown*(x: ptr DispHTMLStyleFontFace): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLXDomainRequestToIDispatch*(x: ptr IHTMLXDomainRequest): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLXDomainRequestToIUnknown*(x: ptr IHTMLXDomainRequest): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLXDomainRequestFactoryToIDispatch*(x: ptr IHTMLXDomainRequestFactory): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLXDomainRequestFactoryToIUnknown*(x: ptr IHTMLXDomainRequestFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispXDomainRequestToIDispatch*(x: ptr DispXDomainRequest): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispXDomainRequestToIUnknown*(x: ptr DispXDomainRequest): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStorageToIDispatch*(x: ptr IHTMLStorage): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStorageToIUnknown*(x: ptr IHTMLStorage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStorage2ToIDispatch*(x: ptr IHTMLStorage2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStorage2ToIUnknown*(x: ptr IHTMLStorage2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLStorageToIDispatch*(x: ptr DispHTMLStorage): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLStorageToIUnknown*(x: ptr DispHTMLStorage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEventTargetToIDispatch*(x: ptr IEventTarget): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIEventTargetToIUnknown*(x: ptr IEventTarget): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMEventToIDispatch*(x: ptr IDOMEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMEventToIUnknown*(x: ptr IDOMEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMEventToIDispatch*(x: ptr DispDOMEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMEventToIUnknown*(x: ptr DispDOMEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMUIEventToIDispatch*(x: ptr IDOMUIEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMUIEventToIUnknown*(x: ptr IDOMUIEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMUIEventToIDispatch*(x: ptr DispDOMUIEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMUIEventToIUnknown*(x: ptr DispDOMUIEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMMouseEventToIDispatch*(x: ptr IDOMMouseEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMMouseEventToIUnknown*(x: ptr IDOMMouseEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMMouseEventToIDispatch*(x: ptr DispDOMMouseEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMMouseEventToIUnknown*(x: ptr DispDOMMouseEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMDragEventToIDispatch*(x: ptr IDOMDragEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMDragEventToIUnknown*(x: ptr IDOMDragEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMDragEventToIDispatch*(x: ptr DispDOMDragEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMDragEventToIUnknown*(x: ptr DispDOMDragEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMMouseWheelEventToIDispatch*(x: ptr IDOMMouseWheelEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMMouseWheelEventToIUnknown*(x: ptr IDOMMouseWheelEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMMouseWheelEventToIDispatch*(x: ptr DispDOMMouseWheelEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMMouseWheelEventToIUnknown*(x: ptr DispDOMMouseWheelEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMWheelEventToIDispatch*(x: ptr IDOMWheelEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMWheelEventToIUnknown*(x: ptr IDOMWheelEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMWheelEventToIDispatch*(x: ptr DispDOMWheelEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMWheelEventToIUnknown*(x: ptr DispDOMWheelEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMTextEventToIDispatch*(x: ptr IDOMTextEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMTextEventToIUnknown*(x: ptr IDOMTextEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMTextEventToIDispatch*(x: ptr DispDOMTextEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMTextEventToIUnknown*(x: ptr DispDOMTextEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMKeyboardEventToIDispatch*(x: ptr IDOMKeyboardEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMKeyboardEventToIUnknown*(x: ptr IDOMKeyboardEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMKeyboardEventToIDispatch*(x: ptr DispDOMKeyboardEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMKeyboardEventToIUnknown*(x: ptr DispDOMKeyboardEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMCompositionEventToIDispatch*(x: ptr IDOMCompositionEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMCompositionEventToIUnknown*(x: ptr IDOMCompositionEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMCompositionEventToIDispatch*(x: ptr DispDOMCompositionEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMCompositionEventToIUnknown*(x: ptr DispDOMCompositionEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMMutationEventToIDispatch*(x: ptr IDOMMutationEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMMutationEventToIUnknown*(x: ptr IDOMMutationEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMMutationEventToIDispatch*(x: ptr DispDOMMutationEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMMutationEventToIUnknown*(x: ptr DispDOMMutationEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMBeforeUnloadEventToIDispatch*(x: ptr IDOMBeforeUnloadEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMBeforeUnloadEventToIUnknown*(x: ptr IDOMBeforeUnloadEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMBeforeUnloadEventToIDispatch*(x: ptr DispDOMBeforeUnloadEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMBeforeUnloadEventToIUnknown*(x: ptr DispDOMBeforeUnloadEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMFocusEventToIDispatch*(x: ptr IDOMFocusEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMFocusEventToIUnknown*(x: ptr IDOMFocusEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMFocusEventToIDispatch*(x: ptr DispDOMFocusEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMFocusEventToIUnknown*(x: ptr DispDOMFocusEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMCustomEventToIDispatch*(x: ptr IDOMCustomEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMCustomEventToIUnknown*(x: ptr IDOMCustomEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMCustomEventToIDispatch*(x: ptr DispDOMCustomEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMCustomEventToIUnknown*(x: ptr DispDOMCustomEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICanvasGradientToIDispatch*(x: ptr ICanvasGradient): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterICanvasGradientToIUnknown*(x: ptr ICanvasGradient): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICanvasPatternToIDispatch*(x: ptr ICanvasPattern): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterICanvasPatternToIUnknown*(x: ptr ICanvasPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICanvasTextMetricsToIDispatch*(x: ptr ICanvasTextMetrics): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterICanvasTextMetricsToIUnknown*(x: ptr ICanvasTextMetrics): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICanvasImageDataToIDispatch*(x: ptr ICanvasImageData): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterICanvasImageDataToIUnknown*(x: ptr ICanvasImageData): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICanvasPixelArrayToIDispatch*(x: ptr ICanvasPixelArray): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterICanvasPixelArrayToIUnknown*(x: ptr ICanvasPixelArray): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICanvasRenderingContext2DToIDispatch*(x: ptr ICanvasRenderingContext2D): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterICanvasRenderingContext2DToIUnknown*(x: ptr ICanvasRenderingContext2D): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCanvasElementToIDispatch*(x: ptr IHTMLCanvasElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLCanvasElementToIUnknown*(x: ptr IHTMLCanvasElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispCanvasGradientToIDispatch*(x: ptr DispCanvasGradient): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispCanvasGradientToIUnknown*(x: ptr DispCanvasGradient): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispCanvasPatternToIDispatch*(x: ptr DispCanvasPattern): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispCanvasPatternToIUnknown*(x: ptr DispCanvasPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispCanvasTextMetricsToIDispatch*(x: ptr DispCanvasTextMetrics): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispCanvasTextMetricsToIUnknown*(x: ptr DispCanvasTextMetrics): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispCanvasImageDataToIDispatch*(x: ptr DispCanvasImageData): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispCanvasImageDataToIUnknown*(x: ptr DispCanvasImageData): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispCanvasRenderingContext2DToIDispatch*(x: ptr DispCanvasRenderingContext2D): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispCanvasRenderingContext2DToIUnknown*(x: ptr DispCanvasRenderingContext2D): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLCanvasElementToIDispatch*(x: ptr DispHTMLCanvasElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLCanvasElementToIUnknown*(x: ptr DispHTMLCanvasElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMProgressEventToIDispatch*(x: ptr IDOMProgressEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMProgressEventToIUnknown*(x: ptr IDOMProgressEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMProgressEventToIDispatch*(x: ptr DispDOMProgressEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMProgressEventToIUnknown*(x: ptr DispDOMProgressEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMMessageEventToIDispatch*(x: ptr IDOMMessageEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMMessageEventToIUnknown*(x: ptr IDOMMessageEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMMessageEventToIDispatch*(x: ptr DispDOMMessageEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMMessageEventToIUnknown*(x: ptr DispDOMMessageEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMSiteModeEventToIDispatch*(x: ptr IDOMSiteModeEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMSiteModeEventToIUnknown*(x: ptr IDOMSiteModeEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMSiteModeEventToIDispatch*(x: ptr DispDOMSiteModeEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMSiteModeEventToIUnknown*(x: ptr DispDOMSiteModeEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMStorageEventToIDispatch*(x: ptr IDOMStorageEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMStorageEventToIUnknown*(x: ptr IDOMStorageEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMStorageEventToIDispatch*(x: ptr DispDOMStorageEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMStorageEventToIUnknown*(x: ptr DispDOMStorageEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLHttpRequestEventTargetToIDispatch*(x: ptr IXMLHttpRequestEventTarget): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLHttpRequestEventTargetToIUnknown*(x: ptr IXMLHttpRequestEventTarget): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispXMLHttpRequestEventTargetToIDispatch*(x: ptr DispXMLHttpRequestEventTarget): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispXMLHttpRequestEventTargetToIUnknown*(x: ptr DispXMLHttpRequestEventTarget): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLXMLHttpRequestEventsToIDispatch*(x: ptr HTMLXMLHttpRequestEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLXMLHttpRequestEventsToIUnknown*(x: ptr HTMLXMLHttpRequestEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLXMLHttpRequestToIDispatch*(x: ptr IHTMLXMLHttpRequest): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLXMLHttpRequestToIUnknown*(x: ptr IHTMLXMLHttpRequest): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLXMLHttpRequest2ToIDispatch*(x: ptr IHTMLXMLHttpRequest2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLXMLHttpRequest2ToIUnknown*(x: ptr IHTMLXMLHttpRequest2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLXMLHttpRequestFactoryToIDispatch*(x: ptr IHTMLXMLHttpRequestFactory): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLXMLHttpRequestFactoryToIUnknown*(x: ptr IHTMLXMLHttpRequestFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLXMLHttpRequestToIDispatch*(x: ptr DispHTMLXMLHttpRequest): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLXMLHttpRequestToIUnknown*(x: ptr DispHTMLXMLHttpRequest): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAngleToIDispatch*(x: ptr ISVGAngle): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAngleToIUnknown*(x: ptr ISVGAngle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGStylableToIDispatch*(x: ptr ISVGStylable): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGStylableToIUnknown*(x: ptr ISVGStylable): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGLocatableToIDispatch*(x: ptr ISVGLocatable): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGLocatableToIUnknown*(x: ptr ISVGLocatable): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGTransformableToIDispatch*(x: ptr ISVGTransformable): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGTransformableToIUnknown*(x: ptr ISVGTransformable): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGTestsToIDispatch*(x: ptr ISVGTests): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGTestsToIUnknown*(x: ptr ISVGTests): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGLangSpaceToIDispatch*(x: ptr ISVGLangSpace): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGLangSpaceToIUnknown*(x: ptr ISVGLangSpace): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGExternalResourcesRequiredToIDispatch*(x: ptr ISVGExternalResourcesRequired): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGExternalResourcesRequiredToIUnknown*(x: ptr ISVGExternalResourcesRequired): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGFitToViewBoxToIDispatch*(x: ptr ISVGFitToViewBox): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGFitToViewBoxToIUnknown*(x: ptr ISVGFitToViewBox): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGZoomAndPanToIDispatch*(x: ptr ISVGZoomAndPan): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGZoomAndPanToIUnknown*(x: ptr ISVGZoomAndPan): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGURIReferenceToIDispatch*(x: ptr ISVGURIReference): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGURIReferenceToIUnknown*(x: ptr ISVGURIReference): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAnimatedAngleToIDispatch*(x: ptr ISVGAnimatedAngle): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAnimatedAngleToIUnknown*(x: ptr ISVGAnimatedAngle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAnimatedTransformListToIDispatch*(x: ptr ISVGAnimatedTransformList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAnimatedTransformListToIUnknown*(x: ptr ISVGAnimatedTransformList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAnimatedBooleanToIDispatch*(x: ptr ISVGAnimatedBoolean): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAnimatedBooleanToIUnknown*(x: ptr ISVGAnimatedBoolean): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAnimatedEnumerationToIDispatch*(x: ptr ISVGAnimatedEnumeration): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAnimatedEnumerationToIUnknown*(x: ptr ISVGAnimatedEnumeration): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAnimatedIntegerToIDispatch*(x: ptr ISVGAnimatedInteger): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAnimatedIntegerToIUnknown*(x: ptr ISVGAnimatedInteger): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAnimatedLengthToIDispatch*(x: ptr ISVGAnimatedLength): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAnimatedLengthToIUnknown*(x: ptr ISVGAnimatedLength): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAnimatedLengthListToIDispatch*(x: ptr ISVGAnimatedLengthList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAnimatedLengthListToIUnknown*(x: ptr ISVGAnimatedLengthList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAnimatedNumberToIDispatch*(x: ptr ISVGAnimatedNumber): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAnimatedNumberToIUnknown*(x: ptr ISVGAnimatedNumber): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAnimatedNumberListToIDispatch*(x: ptr ISVGAnimatedNumberList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAnimatedNumberListToIUnknown*(x: ptr ISVGAnimatedNumberList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAnimatedRectToIDispatch*(x: ptr ISVGAnimatedRect): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAnimatedRectToIUnknown*(x: ptr ISVGAnimatedRect): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAnimatedStringToIDispatch*(x: ptr ISVGAnimatedString): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAnimatedStringToIUnknown*(x: ptr ISVGAnimatedString): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGClipPathElementToIDispatch*(x: ptr ISVGClipPathElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGClipPathElementToIUnknown*(x: ptr ISVGClipPathElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGClipPathElementToIDispatch*(x: ptr DispSVGClipPathElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGClipPathElementToIUnknown*(x: ptr DispSVGClipPathElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGDocumentToIDispatch*(x: ptr ISVGDocument): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGDocumentToIUnknown*(x: ptr ISVGDocument): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIGetSVGDocumentToIDispatch*(x: ptr IGetSVGDocument): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIGetSVGDocumentToIUnknown*(x: ptr IGetSVGDocument): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGElementToIDispatch*(x: ptr ISVGElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGElementToIUnknown*(x: ptr ISVGElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGElementToIDispatch*(x: ptr DispSVGElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGElementToIUnknown*(x: ptr DispSVGElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIICCSVGColorToIDispatch*(x: ptr IICCSVGColor): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIICCSVGColorToIUnknown*(x: ptr IICCSVGColor): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGLengthToIDispatch*(x: ptr ISVGLength): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGLengthToIUnknown*(x: ptr ISVGLength): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGLengthListToIDispatch*(x: ptr ISVGLengthList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGLengthListToIUnknown*(x: ptr ISVGLengthList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGMatrixToIDispatch*(x: ptr ISVGMatrix): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGMatrixToIUnknown*(x: ptr ISVGMatrix): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGNumberToIDispatch*(x: ptr ISVGNumber): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGNumberToIUnknown*(x: ptr ISVGNumber): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGNumberListToIDispatch*(x: ptr ISVGNumberList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGNumberListToIUnknown*(x: ptr ISVGNumberList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPaintToIDispatch*(x: ptr ISVGPaint): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPaintToIUnknown*(x: ptr ISVGPaint): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPatternElementToIDispatch*(x: ptr ISVGPatternElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPatternElementToIUnknown*(x: ptr ISVGPatternElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPatternElementToIDispatch*(x: ptr DispSVGPatternElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPatternElementToIUnknown*(x: ptr DispSVGPatternElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegToIDispatch*(x: ptr ISVGPathSeg): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegToIUnknown*(x: ptr ISVGPathSeg): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegArcAbsToIDispatch*(x: ptr ISVGPathSegArcAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegArcAbsToIUnknown*(x: ptr ISVGPathSegArcAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegArcRelToIDispatch*(x: ptr ISVGPathSegArcRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegArcRelToIUnknown*(x: ptr ISVGPathSegArcRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegClosePathToIDispatch*(x: ptr ISVGPathSegClosePath): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegClosePathToIUnknown*(x: ptr ISVGPathSegClosePath): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegMovetoAbsToIDispatch*(x: ptr ISVGPathSegMovetoAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegMovetoAbsToIUnknown*(x: ptr ISVGPathSegMovetoAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegMovetoRelToIDispatch*(x: ptr ISVGPathSegMovetoRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegMovetoRelToIUnknown*(x: ptr ISVGPathSegMovetoRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegLinetoAbsToIDispatch*(x: ptr ISVGPathSegLinetoAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegLinetoAbsToIUnknown*(x: ptr ISVGPathSegLinetoAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegLinetoRelToIDispatch*(x: ptr ISVGPathSegLinetoRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegLinetoRelToIUnknown*(x: ptr ISVGPathSegLinetoRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegCurvetoCubicAbsToIDispatch*(x: ptr ISVGPathSegCurvetoCubicAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegCurvetoCubicAbsToIUnknown*(x: ptr ISVGPathSegCurvetoCubicAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegCurvetoCubicRelToIDispatch*(x: ptr ISVGPathSegCurvetoCubicRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegCurvetoCubicRelToIUnknown*(x: ptr ISVGPathSegCurvetoCubicRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegCurvetoCubicSmoothAbsToIDispatch*(x: ptr ISVGPathSegCurvetoCubicSmoothAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegCurvetoCubicSmoothAbsToIUnknown*(x: ptr ISVGPathSegCurvetoCubicSmoothAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegCurvetoCubicSmoothRelToIDispatch*(x: ptr ISVGPathSegCurvetoCubicSmoothRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegCurvetoCubicSmoothRelToIUnknown*(x: ptr ISVGPathSegCurvetoCubicSmoothRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegCurvetoQuadraticAbsToIDispatch*(x: ptr ISVGPathSegCurvetoQuadraticAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegCurvetoQuadraticAbsToIUnknown*(x: ptr ISVGPathSegCurvetoQuadraticAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegCurvetoQuadraticRelToIDispatch*(x: ptr ISVGPathSegCurvetoQuadraticRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegCurvetoQuadraticRelToIUnknown*(x: ptr ISVGPathSegCurvetoQuadraticRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegCurvetoQuadraticSmoothAbsToIDispatch*(x: ptr ISVGPathSegCurvetoQuadraticSmoothAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegCurvetoQuadraticSmoothAbsToIUnknown*(x: ptr ISVGPathSegCurvetoQuadraticSmoothAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegCurvetoQuadraticSmoothRelToIDispatch*(x: ptr ISVGPathSegCurvetoQuadraticSmoothRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegCurvetoQuadraticSmoothRelToIUnknown*(x: ptr ISVGPathSegCurvetoQuadraticSmoothRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegLinetoHorizontalAbsToIDispatch*(x: ptr ISVGPathSegLinetoHorizontalAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegLinetoHorizontalAbsToIUnknown*(x: ptr ISVGPathSegLinetoHorizontalAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegLinetoHorizontalRelToIDispatch*(x: ptr ISVGPathSegLinetoHorizontalRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegLinetoHorizontalRelToIUnknown*(x: ptr ISVGPathSegLinetoHorizontalRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegLinetoVerticalAbsToIDispatch*(x: ptr ISVGPathSegLinetoVerticalAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegLinetoVerticalAbsToIUnknown*(x: ptr ISVGPathSegLinetoVerticalAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegLinetoVerticalRelToIDispatch*(x: ptr ISVGPathSegLinetoVerticalRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegLinetoVerticalRelToIUnknown*(x: ptr ISVGPathSegLinetoVerticalRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegArcAbsToIDispatch*(x: ptr DispSVGPathSegArcAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegArcAbsToIUnknown*(x: ptr DispSVGPathSegArcAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegArcRelToIDispatch*(x: ptr DispSVGPathSegArcRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegArcRelToIUnknown*(x: ptr DispSVGPathSegArcRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegClosePathToIDispatch*(x: ptr DispSVGPathSegClosePath): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegClosePathToIUnknown*(x: ptr DispSVGPathSegClosePath): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegMovetoAbsToIDispatch*(x: ptr DispSVGPathSegMovetoAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegMovetoAbsToIUnknown*(x: ptr DispSVGPathSegMovetoAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegMovetoRelToIDispatch*(x: ptr DispSVGPathSegMovetoRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegMovetoRelToIUnknown*(x: ptr DispSVGPathSegMovetoRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegLinetoAbsToIDispatch*(x: ptr DispSVGPathSegLinetoAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegLinetoAbsToIUnknown*(x: ptr DispSVGPathSegLinetoAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegLinetoRelToIDispatch*(x: ptr DispSVGPathSegLinetoRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegLinetoRelToIUnknown*(x: ptr DispSVGPathSegLinetoRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegCurvetoCubicAbsToIDispatch*(x: ptr DispSVGPathSegCurvetoCubicAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegCurvetoCubicAbsToIUnknown*(x: ptr DispSVGPathSegCurvetoCubicAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegCurvetoCubicRelToIDispatch*(x: ptr DispSVGPathSegCurvetoCubicRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegCurvetoCubicRelToIUnknown*(x: ptr DispSVGPathSegCurvetoCubicRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegCurvetoCubicSmoothAbsToIDispatch*(x: ptr DispSVGPathSegCurvetoCubicSmoothAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegCurvetoCubicSmoothAbsToIUnknown*(x: ptr DispSVGPathSegCurvetoCubicSmoothAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegCurvetoCubicSmoothRelToIDispatch*(x: ptr DispSVGPathSegCurvetoCubicSmoothRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegCurvetoCubicSmoothRelToIUnknown*(x: ptr DispSVGPathSegCurvetoCubicSmoothRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegCurvetoQuadraticAbsToIDispatch*(x: ptr DispSVGPathSegCurvetoQuadraticAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegCurvetoQuadraticAbsToIUnknown*(x: ptr DispSVGPathSegCurvetoQuadraticAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegCurvetoQuadraticRelToIDispatch*(x: ptr DispSVGPathSegCurvetoQuadraticRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegCurvetoQuadraticRelToIUnknown*(x: ptr DispSVGPathSegCurvetoQuadraticRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegCurvetoQuadraticSmoothAbsToIDispatch*(x: ptr DispSVGPathSegCurvetoQuadraticSmoothAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegCurvetoQuadraticSmoothAbsToIUnknown*(x: ptr DispSVGPathSegCurvetoQuadraticSmoothAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegCurvetoQuadraticSmoothRelToIDispatch*(x: ptr DispSVGPathSegCurvetoQuadraticSmoothRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegCurvetoQuadraticSmoothRelToIUnknown*(x: ptr DispSVGPathSegCurvetoQuadraticSmoothRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegLinetoHorizontalAbsToIDispatch*(x: ptr DispSVGPathSegLinetoHorizontalAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegLinetoHorizontalAbsToIUnknown*(x: ptr DispSVGPathSegLinetoHorizontalAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegLinetoHorizontalRelToIDispatch*(x: ptr DispSVGPathSegLinetoHorizontalRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegLinetoHorizontalRelToIUnknown*(x: ptr DispSVGPathSegLinetoHorizontalRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegLinetoVerticalAbsToIDispatch*(x: ptr DispSVGPathSegLinetoVerticalAbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegLinetoVerticalAbsToIUnknown*(x: ptr DispSVGPathSegLinetoVerticalAbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathSegLinetoVerticalRelToIDispatch*(x: ptr DispSVGPathSegLinetoVerticalRel): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathSegLinetoVerticalRelToIUnknown*(x: ptr DispSVGPathSegLinetoVerticalRel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathSegListToIDispatch*(x: ptr ISVGPathSegList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathSegListToIUnknown*(x: ptr ISVGPathSegList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPointToIDispatch*(x: ptr ISVGPoint): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPointToIUnknown*(x: ptr ISVGPoint): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPointListToIDispatch*(x: ptr ISVGPointList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPointListToIUnknown*(x: ptr ISVGPointList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGRectToIDispatch*(x: ptr ISVGRect): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGRectToIUnknown*(x: ptr ISVGRect): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGStringListToIDispatch*(x: ptr ISVGStringList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGStringListToIUnknown*(x: ptr ISVGStringList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGViewSpecToIDispatch*(x: ptr ISVGViewSpec): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGViewSpecToIUnknown*(x: ptr ISVGViewSpec): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGTransformToIDispatch*(x: ptr ISVGTransform): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGTransformToIUnknown*(x: ptr ISVGTransform): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGSVGElementToIDispatch*(x: ptr ISVGSVGElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGSVGElementToIUnknown*(x: ptr ISVGSVGElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGSVGElementToIDispatch*(x: ptr DispSVGSVGElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGSVGElementToIUnknown*(x: ptr DispSVGSVGElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGUseElementToIDispatch*(x: ptr ISVGUseElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGUseElementToIUnknown*(x: ptr ISVGUseElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGUseElementToIDispatch*(x: ptr DispSVGUseElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGUseElementToIUnknown*(x: ptr DispSVGUseElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLStyleSheetRulesAppliedCollectionToIDispatch*(x: ptr IHTMLStyleSheetRulesAppliedCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLStyleSheetRulesAppliedCollectionToIUnknown*(x: ptr IHTMLStyleSheetRulesAppliedCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRulesAppliedToIDispatch*(x: ptr IRulesApplied): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIRulesAppliedToIUnknown*(x: ptr IRulesApplied): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRulesAppliedCollectionToIDispatch*(x: ptr IRulesAppliedCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIRulesAppliedCollectionToIUnknown*(x: ptr IRulesAppliedCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLStyleSheetRulesAppliedCollectionToIDispatch*(x: ptr DispHTMLStyleSheetRulesAppliedCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLStyleSheetRulesAppliedCollectionToIUnknown*(x: ptr DispHTMLStyleSheetRulesAppliedCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispRulesAppliedToIDispatch*(x: ptr DispRulesApplied): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispRulesAppliedToIUnknown*(x: ptr DispRulesApplied): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispRulesAppliedCollectionToIDispatch*(x: ptr DispRulesAppliedCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispRulesAppliedCollectionToIUnknown*(x: ptr DispRulesAppliedCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLW3CComputedStyleToIDispatch*(x: ptr DispHTMLW3CComputedStyle): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLW3CComputedStyleToIUnknown*(x: ptr DispHTMLW3CComputedStyle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGTransformListToIDispatch*(x: ptr ISVGTransformList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGTransformListToIUnknown*(x: ptr ISVGTransformList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAnimatedPointsToIDispatch*(x: ptr ISVGAnimatedPoints): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAnimatedPointsToIUnknown*(x: ptr ISVGAnimatedPoints): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGCircleElementToIDispatch*(x: ptr ISVGCircleElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGCircleElementToIUnknown*(x: ptr ISVGCircleElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGEllipseElementToIDispatch*(x: ptr ISVGEllipseElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGEllipseElementToIUnknown*(x: ptr ISVGEllipseElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGLineElementToIDispatch*(x: ptr ISVGLineElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGLineElementToIUnknown*(x: ptr ISVGLineElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGRectElementToIDispatch*(x: ptr ISVGRectElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGRectElementToIUnknown*(x: ptr ISVGRectElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPolygonElementToIDispatch*(x: ptr ISVGPolygonElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPolygonElementToIUnknown*(x: ptr ISVGPolygonElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPolylineElementToIDispatch*(x: ptr ISVGPolylineElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPolylineElementToIUnknown*(x: ptr ISVGPolylineElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGCircleElementToIDispatch*(x: ptr DispSVGCircleElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGCircleElementToIUnknown*(x: ptr DispSVGCircleElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGEllipseElementToIDispatch*(x: ptr DispSVGEllipseElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGEllipseElementToIUnknown*(x: ptr DispSVGEllipseElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGLineElementToIDispatch*(x: ptr DispSVGLineElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGLineElementToIUnknown*(x: ptr DispSVGLineElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGRectElementToIDispatch*(x: ptr DispSVGRectElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGRectElementToIUnknown*(x: ptr DispSVGRectElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPolygonElementToIDispatch*(x: ptr DispSVGPolygonElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPolygonElementToIUnknown*(x: ptr DispSVGPolygonElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPolylineElementToIDispatch*(x: ptr DispSVGPolylineElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPolylineElementToIUnknown*(x: ptr DispSVGPolylineElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGGElementToIDispatch*(x: ptr ISVGGElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGGElementToIUnknown*(x: ptr ISVGGElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGGElementToIDispatch*(x: ptr DispSVGGElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGGElementToIUnknown*(x: ptr DispSVGGElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGSymbolElementToIDispatch*(x: ptr ISVGSymbolElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGSymbolElementToIUnknown*(x: ptr ISVGSymbolElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGSymbolElementToIDispatch*(x: ptr DispSVGSymbolElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGSymbolElementToIUnknown*(x: ptr DispSVGSymbolElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGDefsElementToIDispatch*(x: ptr ISVGDefsElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGDefsElementToIUnknown*(x: ptr ISVGDefsElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGDefsElementToIDispatch*(x: ptr DispSVGDefsElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGDefsElementToIUnknown*(x: ptr DispSVGDefsElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAnimatedPathDataToIDispatch*(x: ptr ISVGAnimatedPathData): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAnimatedPathDataToIUnknown*(x: ptr ISVGAnimatedPathData): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPathElementToIDispatch*(x: ptr ISVGPathElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPathElementToIUnknown*(x: ptr ISVGPathElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGPathElementToIDispatch*(x: ptr DispSVGPathElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGPathElementToIUnknown*(x: ptr DispSVGPathElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGPreserveAspectRatioToIDispatch*(x: ptr ISVGPreserveAspectRatio): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGPreserveAspectRatioToIUnknown*(x: ptr ISVGPreserveAspectRatio): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGTextElementToIDispatch*(x: ptr ISVGTextElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGTextElementToIUnknown*(x: ptr ISVGTextElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGTextElementToIDispatch*(x: ptr DispSVGTextElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGTextElementToIUnknown*(x: ptr DispSVGTextElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAnimatedPreserveAspectRatioToIDispatch*(x: ptr ISVGAnimatedPreserveAspectRatio): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAnimatedPreserveAspectRatioToIUnknown*(x: ptr ISVGAnimatedPreserveAspectRatio): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGImageElementToIDispatch*(x: ptr ISVGImageElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGImageElementToIUnknown*(x: ptr ISVGImageElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGImageElementToIDispatch*(x: ptr DispSVGImageElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGImageElementToIUnknown*(x: ptr DispSVGImageElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGStopElementToIDispatch*(x: ptr ISVGStopElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGStopElementToIUnknown*(x: ptr ISVGStopElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGStopElementToIDispatch*(x: ptr DispSVGStopElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGStopElementToIUnknown*(x: ptr DispSVGStopElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGGradientElementToIDispatch*(x: ptr ISVGGradientElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGGradientElementToIUnknown*(x: ptr ISVGGradientElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGGradientElementToIDispatch*(x: ptr DispSVGGradientElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGGradientElementToIUnknown*(x: ptr DispSVGGradientElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGLinearGradientElementToIDispatch*(x: ptr ISVGLinearGradientElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGLinearGradientElementToIUnknown*(x: ptr ISVGLinearGradientElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGLinearGradientElementToIDispatch*(x: ptr DispSVGLinearGradientElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGLinearGradientElementToIUnknown*(x: ptr DispSVGLinearGradientElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGRadialGradientElementToIDispatch*(x: ptr ISVGRadialGradientElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGRadialGradientElementToIUnknown*(x: ptr ISVGRadialGradientElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGRadialGradientElementToIDispatch*(x: ptr DispSVGRadialGradientElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGRadialGradientElementToIUnknown*(x: ptr DispSVGRadialGradientElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGMaskElementToIDispatch*(x: ptr ISVGMaskElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGMaskElementToIUnknown*(x: ptr ISVGMaskElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGMaskElementToIDispatch*(x: ptr DispSVGMaskElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGMaskElementToIUnknown*(x: ptr DispSVGMaskElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGMarkerElementToIDispatch*(x: ptr ISVGMarkerElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGMarkerElementToIUnknown*(x: ptr ISVGMarkerElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGMarkerElementToIDispatch*(x: ptr DispSVGMarkerElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGMarkerElementToIUnknown*(x: ptr DispSVGMarkerElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGZoomEventToIDispatch*(x: ptr ISVGZoomEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGZoomEventToIUnknown*(x: ptr ISVGZoomEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGZoomEventToIDispatch*(x: ptr DispSVGZoomEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGZoomEventToIUnknown*(x: ptr DispSVGZoomEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGAElementToIDispatch*(x: ptr ISVGAElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGAElementToIUnknown*(x: ptr ISVGAElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGAElementToIDispatch*(x: ptr DispSVGAElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGAElementToIUnknown*(x: ptr DispSVGAElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGViewElementToIDispatch*(x: ptr ISVGViewElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGViewElementToIUnknown*(x: ptr ISVGViewElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGViewElementToIDispatch*(x: ptr DispSVGViewElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGViewElementToIUnknown*(x: ptr DispSVGViewElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLMediaErrorToIDispatch*(x: ptr IHTMLMediaError): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLMediaErrorToIUnknown*(x: ptr IHTMLMediaError): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTimeRangesToIDispatch*(x: ptr IHTMLTimeRanges): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTimeRangesToIUnknown*(x: ptr IHTMLTimeRanges): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLTimeRanges2ToIDispatch*(x: ptr IHTMLTimeRanges2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLTimeRanges2ToIUnknown*(x: ptr IHTMLTimeRanges2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLMediaElementToIDispatch*(x: ptr IHTMLMediaElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLMediaElementToIUnknown*(x: ptr IHTMLMediaElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLMediaElement2ToIDispatch*(x: ptr IHTMLMediaElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLMediaElement2ToIUnknown*(x: ptr IHTMLMediaElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLMSMediaElementToIDispatch*(x: ptr IHTMLMSMediaElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLMSMediaElementToIUnknown*(x: ptr IHTMLMSMediaElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLSourceElementToIDispatch*(x: ptr IHTMLSourceElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLSourceElementToIUnknown*(x: ptr IHTMLSourceElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAudioElementToIDispatch*(x: ptr IHTMLAudioElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAudioElementToIUnknown*(x: ptr IHTMLAudioElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLVideoElementToIDispatch*(x: ptr IHTMLVideoElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLVideoElementToIUnknown*(x: ptr IHTMLVideoElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAudioElementFactoryToIDispatch*(x: ptr IHTMLAudioElementFactory): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAudioElementFactoryToIUnknown*(x: ptr IHTMLAudioElementFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLMediaErrorToIDispatch*(x: ptr DispHTMLMediaError): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLMediaErrorToIUnknown*(x: ptr DispHTMLMediaError): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLTimeRangesToIDispatch*(x: ptr DispHTMLTimeRanges): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLTimeRangesToIUnknown*(x: ptr DispHTMLTimeRanges): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLMediaElementToIDispatch*(x: ptr DispHTMLMediaElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLMediaElementToIUnknown*(x: ptr DispHTMLMediaElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLSourceElementToIDispatch*(x: ptr DispHTMLSourceElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLSourceElementToIUnknown*(x: ptr DispHTMLSourceElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLAudioElementToIDispatch*(x: ptr DispHTMLAudioElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLAudioElementToIUnknown*(x: ptr DispHTMLAudioElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLVideoElementToIDispatch*(x: ptr DispHTMLVideoElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLVideoElementToIUnknown*(x: ptr DispHTMLVideoElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGSwitchElementToIDispatch*(x: ptr ISVGSwitchElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGSwitchElementToIUnknown*(x: ptr ISVGSwitchElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGSwitchElementToIDispatch*(x: ptr DispSVGSwitchElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGSwitchElementToIUnknown*(x: ptr DispSVGSwitchElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGDescElementToIDispatch*(x: ptr ISVGDescElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGDescElementToIUnknown*(x: ptr ISVGDescElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGDescElementToIDispatch*(x: ptr DispSVGDescElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGDescElementToIUnknown*(x: ptr DispSVGDescElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGTitleElementToIDispatch*(x: ptr ISVGTitleElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGTitleElementToIUnknown*(x: ptr ISVGTitleElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGTitleElementToIDispatch*(x: ptr DispSVGTitleElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGTitleElementToIUnknown*(x: ptr DispSVGTitleElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGMetadataElementToIDispatch*(x: ptr ISVGMetadataElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGMetadataElementToIUnknown*(x: ptr ISVGMetadataElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGMetadataElementToIDispatch*(x: ptr DispSVGMetadataElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGMetadataElementToIUnknown*(x: ptr DispSVGMetadataElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGElementInstanceToIDispatch*(x: ptr ISVGElementInstance): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGElementInstanceToIUnknown*(x: ptr ISVGElementInstance): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGElementInstanceToIDispatch*(x: ptr DispSVGElementInstance): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGElementInstanceToIUnknown*(x: ptr DispSVGElementInstance): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGElementInstanceListToIDispatch*(x: ptr ISVGElementInstanceList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGElementInstanceListToIUnknown*(x: ptr ISVGElementInstanceList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGElementInstanceListToIDispatch*(x: ptr DispSVGElementInstanceList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGElementInstanceListToIUnknown*(x: ptr DispSVGElementInstanceList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMExceptionToIDispatch*(x: ptr IDOMException): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMExceptionToIUnknown*(x: ptr IDOMException): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRangeExceptionToIDispatch*(x: ptr IRangeException): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIRangeExceptionToIUnknown*(x: ptr IRangeException): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGExceptionToIDispatch*(x: ptr ISVGException): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGExceptionToIUnknown*(x: ptr ISVGException): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEventExceptionToIDispatch*(x: ptr IEventException): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIEventExceptionToIUnknown*(x: ptr IEventException): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMExceptionToIDispatch*(x: ptr DispDOMException): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMExceptionToIUnknown*(x: ptr DispDOMException): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispRangeExceptionToIDispatch*(x: ptr DispRangeException): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispRangeExceptionToIUnknown*(x: ptr DispRangeException): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGExceptionToIDispatch*(x: ptr DispSVGException): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGExceptionToIUnknown*(x: ptr DispSVGException): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispEventExceptionToIDispatch*(x: ptr DispEventException): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispEventExceptionToIUnknown*(x: ptr DispEventException): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGScriptElementToIDispatch*(x: ptr ISVGScriptElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGScriptElementToIUnknown*(x: ptr ISVGScriptElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGScriptElementToIDispatch*(x: ptr DispSVGScriptElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGScriptElementToIUnknown*(x: ptr DispSVGScriptElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGStyleElementToIDispatch*(x: ptr ISVGStyleElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGStyleElementToIUnknown*(x: ptr ISVGStyleElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGStyleElementToIDispatch*(x: ptr DispSVGStyleElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGStyleElementToIUnknown*(x: ptr DispSVGStyleElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGTextContentElementToIDispatch*(x: ptr ISVGTextContentElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGTextContentElementToIUnknown*(x: ptr ISVGTextContentElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGTextContentElementToIDispatch*(x: ptr DispSVGTextContentElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGTextContentElementToIUnknown*(x: ptr DispSVGTextContentElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGTextPositioningElementToIDispatch*(x: ptr ISVGTextPositioningElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGTextPositioningElementToIUnknown*(x: ptr ISVGTextPositioningElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGTextPositioningElementToIDispatch*(x: ptr DispSVGTextPositioningElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGTextPositioningElementToIUnknown*(x: ptr DispSVGTextPositioningElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMDocumentTypeToIDispatch*(x: ptr IDOMDocumentType): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMDocumentTypeToIUnknown*(x: ptr IDOMDocumentType): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMDocumentTypeToIDispatch*(x: ptr DispDOMDocumentType): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMDocumentTypeToIUnknown*(x: ptr DispDOMDocumentType): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMNodeIteratorToIDispatch*(x: ptr IDOMNodeIterator): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMNodeIteratorToIUnknown*(x: ptr IDOMNodeIterator): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMTreeWalkerToIDispatch*(x: ptr IDOMTreeWalker): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMTreeWalkerToIUnknown*(x: ptr IDOMTreeWalker): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispNodeIteratorToIDispatch*(x: ptr DispNodeIterator): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispNodeIteratorToIUnknown*(x: ptr DispNodeIterator): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispTreeWalkerToIDispatch*(x: ptr DispTreeWalker): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispTreeWalkerToIUnknown*(x: ptr DispTreeWalker): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMProcessingInstructionToIDispatch*(x: ptr IDOMProcessingInstruction): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMProcessingInstructionToIUnknown*(x: ptr IDOMProcessingInstruction): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMProcessingInstructionToIDispatch*(x: ptr DispDOMProcessingInstruction): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMProcessingInstructionToIUnknown*(x: ptr DispDOMProcessingInstruction): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLPerformanceToIDispatch*(x: ptr IHTMLPerformance): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLPerformanceToIUnknown*(x: ptr IHTMLPerformance): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLPerformanceNavigationToIDispatch*(x: ptr IHTMLPerformanceNavigation): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLPerformanceNavigationToIUnknown*(x: ptr IHTMLPerformanceNavigation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLPerformanceTimingToIDispatch*(x: ptr IHTMLPerformanceTiming): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLPerformanceTimingToIUnknown*(x: ptr IHTMLPerformanceTiming): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLPerformanceToIDispatch*(x: ptr DispHTMLPerformance): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLPerformanceToIUnknown*(x: ptr DispHTMLPerformance): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLPerformanceNavigationToIDispatch*(x: ptr DispHTMLPerformanceNavigation): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLPerformanceNavigationToIUnknown*(x: ptr DispHTMLPerformanceNavigation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLPerformanceTimingToIDispatch*(x: ptr DispHTMLPerformanceTiming): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLPerformanceTimingToIUnknown*(x: ptr DispHTMLPerformanceTiming): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGTSpanElementToIDispatch*(x: ptr ISVGTSpanElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGTSpanElementToIUnknown*(x: ptr ISVGTSpanElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGTSpanElementToIDispatch*(x: ptr DispSVGTSpanElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGTSpanElementToIUnknown*(x: ptr DispSVGTSpanElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITemplatePrinterToIDispatch*(x: ptr ITemplatePrinter): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterITemplatePrinterToIUnknown*(x: ptr ITemplatePrinter): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITemplatePrinter2ToITemplatePrinter*(x: ptr ITemplatePrinter2): ptr ITemplatePrinter = cast[ptr ITemplatePrinter](x)
-converter winimConverterITemplatePrinter2ToIDispatch*(x: ptr ITemplatePrinter2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterITemplatePrinter2ToIUnknown*(x: ptr ITemplatePrinter2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITemplatePrinter3ToITemplatePrinter2*(x: ptr ITemplatePrinter3): ptr ITemplatePrinter2 = cast[ptr ITemplatePrinter2](x)
-converter winimConverterITemplatePrinter3ToITemplatePrinter*(x: ptr ITemplatePrinter3): ptr ITemplatePrinter = cast[ptr ITemplatePrinter](x)
-converter winimConverterITemplatePrinter3ToIDispatch*(x: ptr ITemplatePrinter3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterITemplatePrinter3ToIUnknown*(x: ptr ITemplatePrinter3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPrintManagerTemplatePrinterToIDispatch*(x: ptr IPrintManagerTemplatePrinter): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIPrintManagerTemplatePrinterToIUnknown*(x: ptr IPrintManagerTemplatePrinter): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispCPrintManagerTemplatePrinterToIDispatch*(x: ptr DispCPrintManagerTemplatePrinter): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispCPrintManagerTemplatePrinterToIUnknown*(x: ptr DispCPrintManagerTemplatePrinter): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISVGTextPathElementToIDispatch*(x: ptr ISVGTextPathElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISVGTextPathElementToIUnknown*(x: ptr ISVGTextPathElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispSVGTextPathElementToIDispatch*(x: ptr DispSVGTextPathElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispSVGTextPathElementToIUnknown*(x: ptr DispSVGTextPathElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMXmlSerializerToIDispatch*(x: ptr IDOMXmlSerializer): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMXmlSerializerToIUnknown*(x: ptr IDOMXmlSerializer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMXmlSerializerFactoryToIDispatch*(x: ptr IDOMXmlSerializerFactory): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMXmlSerializerFactoryToIUnknown*(x: ptr IDOMXmlSerializerFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMParserToIDispatch*(x: ptr IDOMParser): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMParserToIUnknown*(x: ptr IDOMParser): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMParserFactoryToIDispatch*(x: ptr IDOMParserFactory): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMParserFactoryToIUnknown*(x: ptr IDOMParserFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispXMLSerializerToIDispatch*(x: ptr DispXMLSerializer): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispXMLSerializerToIUnknown*(x: ptr DispXMLSerializer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMParserToIDispatch*(x: ptr DispDOMParser): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMParserToIUnknown*(x: ptr DispDOMParser): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLSemanticElementToIDispatch*(x: ptr DispHTMLSemanticElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLSemanticElementToIUnknown*(x: ptr DispHTMLSemanticElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLProgressElementToIDispatch*(x: ptr IHTMLProgressElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLProgressElementToIUnknown*(x: ptr IHTMLProgressElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLProgressElementToIDispatch*(x: ptr DispHTMLProgressElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLProgressElementToIUnknown*(x: ptr DispHTMLProgressElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMMSTransitionEventToIDispatch*(x: ptr IDOMMSTransitionEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMMSTransitionEventToIUnknown*(x: ptr IDOMMSTransitionEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMMSTransitionEventToIDispatch*(x: ptr DispDOMMSTransitionEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMMSTransitionEventToIUnknown*(x: ptr DispDOMMSTransitionEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMMSAnimationEventToIDispatch*(x: ptr IDOMMSAnimationEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMMSAnimationEventToIUnknown*(x: ptr IDOMMSAnimationEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMMSAnimationEventToIDispatch*(x: ptr DispDOMMSAnimationEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMMSAnimationEventToIUnknown*(x: ptr DispDOMMSAnimationEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWebGeolocationToIDispatch*(x: ptr IWebGeolocation): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIWebGeolocationToIUnknown*(x: ptr IWebGeolocation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWebGeocoordinatesToIDispatch*(x: ptr IWebGeocoordinates): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIWebGeocoordinatesToIUnknown*(x: ptr IWebGeocoordinates): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWebGeopositionErrorToIDispatch*(x: ptr IWebGeopositionError): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIWebGeopositionErrorToIUnknown*(x: ptr IWebGeopositionError): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWebGeopositionToIDispatch*(x: ptr IWebGeoposition): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIWebGeopositionToIUnknown*(x: ptr IWebGeoposition): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispWebGeolocationToIDispatch*(x: ptr DispWebGeolocation): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispWebGeolocationToIUnknown*(x: ptr DispWebGeolocation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispWebGeocoordinatesToIDispatch*(x: ptr DispWebGeocoordinates): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispWebGeocoordinatesToIUnknown*(x: ptr DispWebGeocoordinates): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispWebGeopositionErrorToIDispatch*(x: ptr DispWebGeopositionError): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispWebGeopositionErrorToIUnknown*(x: ptr DispWebGeopositionError): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispWebGeopositionToIDispatch*(x: ptr DispWebGeoposition): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispWebGeopositionToIUnknown*(x: ptr DispWebGeoposition): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIClientCapsToIDispatch*(x: ptr IClientCaps): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIClientCapsToIUnknown*(x: ptr IClientCaps): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMMSManipulationEventToIDispatch*(x: ptr IDOMMSManipulationEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMMSManipulationEventToIUnknown*(x: ptr IDOMMSManipulationEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMMSManipulationEventToIDispatch*(x: ptr DispDOMMSManipulationEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMMSManipulationEventToIUnknown*(x: ptr DispDOMMSManipulationEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMCloseEventToIDispatch*(x: ptr IDOMCloseEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIDOMCloseEventToIUnknown*(x: ptr IDOMCloseEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispDOMCloseEventToIDispatch*(x: ptr DispDOMCloseEvent): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispDOMCloseEventToIUnknown*(x: ptr DispDOMCloseEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLApplicationCacheToIDispatch*(x: ptr IHTMLApplicationCache): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLApplicationCacheToIUnknown*(x: ptr IHTMLApplicationCache): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispApplicationCacheToIDispatch*(x: ptr DispApplicationCache): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispApplicationCacheToIUnknown*(x: ptr DispApplicationCache): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICSSFilterSiteToIUnknown*(x: ptr ICSSFilterSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICSSFilterToIUnknown*(x: ptr ICSSFilter): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISecureUrlHostToIUnknown*(x: ptr ISecureUrlHost): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMarkupServicesToIUnknown*(x: ptr IMarkupServices): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMarkupServices2ToIMarkupServices*(x: ptr IMarkupServices2): ptr IMarkupServices = cast[ptr IMarkupServices](x)
-converter winimConverterIMarkupServices2ToIUnknown*(x: ptr IMarkupServices2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMarkupContainerToIUnknown*(x: ptr IMarkupContainer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMarkupContainer2ToIMarkupContainer*(x: ptr IMarkupContainer2): ptr IMarkupContainer = cast[ptr IMarkupContainer](x)
-converter winimConverterIMarkupContainer2ToIUnknown*(x: ptr IMarkupContainer2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLChangePlaybackToIUnknown*(x: ptr IHTMLChangePlayback): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMarkupPointerToIUnknown*(x: ptr IMarkupPointer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMarkupPointer2ToIMarkupPointer*(x: ptr IMarkupPointer2): ptr IMarkupPointer = cast[ptr IMarkupPointer](x)
-converter winimConverterIMarkupPointer2ToIUnknown*(x: ptr IMarkupPointer2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMarkupTextFragsToIUnknown*(x: ptr IMarkupTextFrags): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLChangeLogToIUnknown*(x: ptr IHTMLChangeLog): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLChangeSinkToIUnknown*(x: ptr IHTMLChangeSink): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLGenericParseToIUnknown*(x: ptr IXMLGenericParse): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLEditHostToIUnknown*(x: ptr IHTMLEditHost): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLEditHost2ToIHTMLEditHost*(x: ptr IHTMLEditHost2): ptr IHTMLEditHost = cast[ptr IHTMLEditHost](x)
-converter winimConverterIHTMLEditHost2ToIUnknown*(x: ptr IHTMLEditHost2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISegmentToIUnknown*(x: ptr ISegment): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISegmentListIteratorToIUnknown*(x: ptr ISegmentListIterator): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISegmentListToIUnknown*(x: ptr ISegmentList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISequenceNumberToIUnknown*(x: ptr ISequenceNumber): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIIMEServicesToIUnknown*(x: ptr IIMEServices): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLCaretToIUnknown*(x: ptr IHTMLCaret): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHighlightRenderingServicesToIUnknown*(x: ptr IHighlightRenderingServices): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISelectionServicesListenerToIUnknown*(x: ptr ISelectionServicesListener): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISelectionServicesToIUnknown*(x: ptr ISelectionServices): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementSegmentToISegment*(x: ptr IElementSegment): ptr ISegment = cast[ptr ISegment](x)
-converter winimConverterIElementSegmentToIUnknown*(x: ptr IElementSegment): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHighlightSegmentToISegment*(x: ptr IHighlightSegment): ptr ISegment = cast[ptr ISegment](x)
-converter winimConverterIHighlightSegmentToIUnknown*(x: ptr IHighlightSegment): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLEditDesignerToIUnknown*(x: ptr IHTMLEditDesigner): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLEditServicesToIUnknown*(x: ptr IHTMLEditServices): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLEditServices2ToIHTMLEditServices*(x: ptr IHTMLEditServices2): ptr IHTMLEditServices = cast[ptr IHTMLEditServices](x)
-converter winimConverterIHTMLEditServices2ToIUnknown*(x: ptr IHTMLEditServices2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterILineInfoToIUnknown*(x: ptr ILineInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLComputedStyleToIUnknown*(x: ptr IHTMLComputedStyle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDisplayPointerToIUnknown*(x: ptr IDisplayPointer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDisplayServicesToIUnknown*(x: ptr IDisplayServices): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHtmlDlgSafeHelperToIDispatch*(x: ptr IHtmlDlgSafeHelper): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHtmlDlgSafeHelperToIUnknown*(x: ptr IHtmlDlgSafeHelper): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIBlockFormatsToIDispatch*(x: ptr IBlockFormats): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIBlockFormatsToIUnknown*(x: ptr IBlockFormats): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFontNamesToIDispatch*(x: ptr IFontNames): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIFontNamesToIUnknown*(x: ptr IFontNames): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDeveloperConsoleMessageReceiverToIUnknown*(x: ptr IDeveloperConsoleMessageReceiver): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDebugCallbackNotificationHandlerToIUnknown*(x: ptr IDebugCallbackNotificationHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIScriptEventHandlerToIUnknown*(x: ptr IScriptEventHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIScriptEventHandlerSourceInfoToIUnknown*(x: ptr IScriptEventHandlerSourceInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDOMEventRegistrationCallbackToIUnknown*(x: ptr IDOMEventRegistrationCallback): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEventTarget2ToIUnknown*(x: ptr IEventTarget2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterHTMLNamespaceEventsToIDispatch*(x: ptr HTMLNamespaceEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterHTMLNamespaceEventsToIUnknown*(x: ptr HTMLNamespaceEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLNamespaceToIDispatch*(x: ptr IHTMLNamespace): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLNamespaceToIUnknown*(x: ptr IHTMLNamespace): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLNamespaceCollectionToIDispatch*(x: ptr IHTMLNamespaceCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLNamespaceCollectionToIUnknown*(x: ptr IHTMLNamespaceCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLNamespaceToIDispatch*(x: ptr DispHTMLNamespace): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLNamespaceToIUnknown*(x: ptr DispHTMLNamespace): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLNamespaceCollectionToIDispatch*(x: ptr DispHTMLNamespaceCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLNamespaceCollectionToIUnknown*(x: ptr DispHTMLNamespaceCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLPainterToIUnknown*(x: ptr IHTMLPainter): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLPainterEventInfoToIUnknown*(x: ptr IHTMLPainterEventInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLPainterOverlayToIUnknown*(x: ptr IHTMLPainterOverlay): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLPaintSiteToIUnknown*(x: ptr IHTMLPaintSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLIPrintCollectionToIDispatch*(x: ptr IHTMLIPrintCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLIPrintCollectionToIUnknown*(x: ptr IHTMLIPrintCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumPrivacyRecordsToIUnknown*(x: ptr IEnumPrivacyRecords): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWPCBlockedUrlsToIUnknown*(x: ptr IWPCBlockedUrls): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDOMConstructorCollectionToIDispatch*(x: ptr IHTMLDOMConstructorCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDOMConstructorCollectionToIUnknown*(x: ptr IHTMLDOMConstructorCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDialogToIDispatch*(x: ptr IHTMLDialog): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDialogToIUnknown*(x: ptr IHTMLDialog): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDialog2ToIDispatch*(x: ptr IHTMLDialog2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDialog2ToIUnknown*(x: ptr IHTMLDialog2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLDialog3ToIDispatch*(x: ptr IHTMLDialog3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLDialog3ToIUnknown*(x: ptr IHTMLDialog3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLModelessInitToIDispatch*(x: ptr IHTMLModelessInit): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLModelessInitToIUnknown*(x: ptr IHTMLModelessInit): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLPopupToIDispatch*(x: ptr IHTMLPopup): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLPopupToIUnknown*(x: ptr IHTMLPopup): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLPopupToIDispatch*(x: ptr DispHTMLPopup): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLPopupToIUnknown*(x: ptr DispHTMLPopup): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAppBehaviorToIDispatch*(x: ptr IHTMLAppBehavior): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAppBehaviorToIUnknown*(x: ptr IHTMLAppBehavior): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAppBehavior2ToIDispatch*(x: ptr IHTMLAppBehavior2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAppBehavior2ToIUnknown*(x: ptr IHTMLAppBehavior2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLAppBehavior3ToIDispatch*(x: ptr IHTMLAppBehavior3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIHTMLAppBehavior3ToIUnknown*(x: ptr IHTMLAppBehavior3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispHTMLAppBehaviorToIDispatch*(x: ptr DispHTMLAppBehavior): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispHTMLAppBehaviorToIUnknown*(x: ptr DispHTMLAppBehavior): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispIHTMLInputButtonElementToIDispatch*(x: ptr DispIHTMLInputButtonElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispIHTMLInputButtonElementToIUnknown*(x: ptr DispIHTMLInputButtonElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispIHTMLInputTextElementToIDispatch*(x: ptr DispIHTMLInputTextElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispIHTMLInputTextElementToIUnknown*(x: ptr DispIHTMLInputTextElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispIHTMLInputFileElementToIDispatch*(x: ptr DispIHTMLInputFileElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispIHTMLInputFileElementToIUnknown*(x: ptr DispIHTMLInputFileElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispIHTMLOptionButtonElementToIDispatch*(x: ptr DispIHTMLOptionButtonElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispIHTMLOptionButtonElementToIUnknown*(x: ptr DispIHTMLOptionButtonElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDispIHTMLInputImageToIDispatch*(x: ptr DispIHTMLInputImage): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDispIHTMLInputImageToIUnknown*(x: ptr DispIHTMLInputImage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorFactoryToIUnknown*(x: ptr IElementBehaviorFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementNamespaceToIUnknown*(x: ptr IElementNamespace): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementNamespaceTableToIUnknown*(x: ptr IElementNamespaceTable): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementNamespaceFactoryToIUnknown*(x: ptr IElementNamespaceFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementNamespaceFactory2ToIElementNamespaceFactory*(x: ptr IElementNamespaceFactory2): ptr IElementNamespaceFactory = cast[ptr IElementNamespaceFactory](x)
-converter winimConverterIElementNamespaceFactory2ToIUnknown*(x: ptr IElementNamespaceFactory2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementNamespaceFactoryCallbackToIUnknown*(x: ptr IElementNamespaceFactoryCallback): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorToIUnknown*(x: ptr IElementBehavior): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorSiteToIUnknown*(x: ptr IElementBehaviorSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorSiteOMToIUnknown*(x: ptr IElementBehaviorSiteOM): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorSiteOM2ToIElementBehaviorSiteOM*(x: ptr IElementBehaviorSiteOM2): ptr IElementBehaviorSiteOM = cast[ptr IElementBehaviorSiteOM](x)
-converter winimConverterIElementBehaviorSiteOM2ToIUnknown*(x: ptr IElementBehaviorSiteOM2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorRenderToIUnknown*(x: ptr IElementBehaviorRender): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorSiteRenderToIUnknown*(x: ptr IElementBehaviorSiteRender): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorCategoryToIUnknown*(x: ptr IElementBehaviorCategory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorSiteCategoryToIUnknown*(x: ptr IElementBehaviorSiteCategory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorSubmitToIUnknown*(x: ptr IElementBehaviorSubmit): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorFocusToIUnknown*(x: ptr IElementBehaviorFocus): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorLayoutToIUnknown*(x: ptr IElementBehaviorLayout): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorLayout2ToIUnknown*(x: ptr IElementBehaviorLayout2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorSiteLayoutToIUnknown*(x: ptr IElementBehaviorSiteLayout): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIElementBehaviorSiteLayout2ToIUnknown*(x: ptr IElementBehaviorSiteLayout2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostBehaviorInitToIUnknown*(x: ptr IHostBehaviorInit): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIViewObjectPresentSiteToIUnknown*(x: ptr IViewObjectPresentSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISurfacePresenterToIUnknown*(x: ptr ISurfacePresenter): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICanvasPixelArrayDataToIUnknown*(x: ptr ICanvasPixelArrayData): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIViewObjectPrintToIUnknown*(x: ptr IViewObjectPrint): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIViewObjectPresentNotifySiteToIViewObjectPresentSite*(x: ptr IViewObjectPresentNotifySite): ptr IViewObjectPresentSite = cast[ptr IViewObjectPresentSite](x)
-converter winimConverterIViewObjectPresentNotifySiteToIUnknown*(x: ptr IViewObjectPresentNotifySite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIViewObjectPresentNotifyToIUnknown*(x: ptr IViewObjectPresentNotify): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITrackingProtectionToIUnknown*(x: ptr ITrackingProtection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHostDialogHelperToIUnknown*(x: ptr IHostDialogHelper): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDocHostUIHandlerToIUnknown*(x: ptr IDocHostUIHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDocHostUIHandler2ToIDocHostUIHandler*(x: ptr IDocHostUIHandler2): ptr IDocHostUIHandler = cast[ptr IDocHostUIHandler](x)
-converter winimConverterIDocHostUIHandler2ToIUnknown*(x: ptr IDocHostUIHandler2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICustomDocToIUnknown*(x: ptr ICustomDoc): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDocHostShowUIToIUnknown*(x: ptr IDocHostShowUI): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIClassFactoryExToIClassFactory*(x: ptr IClassFactoryEx): ptr IClassFactory = cast[ptr IClassFactory](x)
-converter winimConverterIClassFactoryExToIUnknown*(x: ptr IClassFactoryEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHTMLOMWindowServicesToIUnknown*(x: ptr IHTMLOMWindowServices): ptr IUnknown = cast[ptr IUnknown](x)
+    moveTo*:
+      proc(self: ptr IHTMLOMWindowServices, x: LONG, y: LONG): HRESULT {.stdcall.}
+    moveBy*:
+      proc(self: ptr IHTMLOMWindowServices, x: LONG, y: LONG): HRESULT {.stdcall.}
+    resizeTo*:
+      proc(self: ptr IHTMLOMWindowServices, x: LONG, y: LONG): HRESULT {.stdcall.}
+    resizeBy*:
+      proc(self: ptr IHTMLOMWindowServices, x: LONG, y: LONG): HRESULT {.stdcall.}
+
+proc GetDispID*(
+    self: ptr IDispatchEx, bstrName: BSTR, grfdex: DWORD, pid: ptr DISPID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDispID(self, bstrName, grfdex, pid)
+
+proc InvokeEx*(
+    self: ptr IDispatchEx,
+    id: DISPID,
+    lcid: LCID,
+    wFlags: WORD,
+    pdp: ptr DISPPARAMS,
+    pvarRes: ptr VARIANT,
+    pei: ptr EXCEPINFO,
+    pspCaller: ptr IServiceProvider,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvokeEx(self, id, lcid, wFlags, pdp, pvarRes, pei, pspCaller)
+
+proc DeleteMemberByName*(
+    self: ptr IDispatchEx, bstrName: BSTR, grfdex: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteMemberByName(self, bstrName, grfdex)
+
+proc DeleteMemberByDispID*(
+    self: ptr IDispatchEx, id: DISPID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteMemberByDispID(self, id)
+
+proc GetMemberProperties*(
+    self: ptr IDispatchEx, id: DISPID, grfdexFetch: DWORD, pgrfdex: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMemberProperties(self, id, grfdexFetch, pgrfdex)
+
+proc GetMemberName*(
+    self: ptr IDispatchEx, id: DISPID, pbstrName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMemberName(self, id, pbstrName)
+
+proc GetNextDispID*(
+    self: ptr IDispatchEx, grfdex: DWORD, id: DISPID, pid: ptr DISPID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNextDispID(self, grfdex, id, pid)
+
+proc GetNameSpaceParent*(
+    self: ptr IDispatchEx, ppunk: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNameSpaceParent(self, ppunk)
+
+proc QueryErrorInfo*(
+    self: ptr IDispError, guidErrorType: GUID, ppde: ptr ptr IDispError
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryErrorInfo(self, guidErrorType, ppde)
+
+proc GetNext*(
+    self: ptr IDispError, ppde: ptr ptr IDispError
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNext(self, ppde)
+
+proc GetHresult*(self: ptr IDispError, phr: ptr HRESULT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHresult(self, phr)
+
+proc GetSource*(
+    self: ptr IDispError, pbstrSource: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSource(self, pbstrSource)
+
+proc GetHelpInfo*(
+    self: ptr IDispError, pbstrFileName: ptr BSTR, pdwContext: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHelpInfo(self, pbstrFileName, pdwContext)
+
+proc GetDescription*(
+    self: ptr IDispError, pbstrDescription: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDescription(self, pbstrDescription)
+
+proc ChangeType*(
+    self: ptr IVariantChangeType,
+    pvarDst: ptr VARIANT,
+    pvarSrc: ptr VARIANT,
+    lcid: LCID,
+    vtNew: VARTYPE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ChangeType(self, pvarDst, pvarSrc, lcid, vtNew)
+
+proc IsEqualObject*(
+    self: ptr IObjectIdentity, punk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsEqualObject(self, punk)
+
+proc CanHandleException*(
+    self: ptr ICanHandleException, pExcepInfo: ptr EXCEPINFO, pvar: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CanHandleException(self, pExcepInfo, pvar)
+
+proc GetCurrentSourceContext*(
+    self: ptr IProvideRuntimeContext,
+    pdwContext: ptr DWORD_PTR,
+    pfExecutingGlobalCode: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentSourceContext(self, pdwContext, pfExecutingGlobalCode)
+
+proc get_length*(
+    self: ptr IHTMLFiltersCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLFiltersCollection, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc item*(
+    self: ptr IHTMLFiltersCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, pvarIndex, pvarResult)
+
+proc get_constructor*(
+    self: ptr IHTMLDOMConstructor, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_constructor(self, p)
+
+proc LookupGetter*(
+    self: ptr IHTMLDOMConstructor, propname: BSTR, ppDispHandler: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LookupGetter(self, propname, ppDispHandler)
+
+proc LookupSetter*(
+    self: ptr IHTMLDOMConstructor, propname: BSTR, ppDispHandler: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LookupSetter(self, propname, ppDispHandler)
+
+proc DefineGetter*(
+    self: ptr IHTMLDOMConstructor, propname: BSTR, pdispHandler: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DefineGetter(self, propname, pdispHandler)
+
+proc DefineSetter*(
+    self: ptr IHTMLDOMConstructor, propname: BSTR, pdispHandler: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DefineSetter(self, propname, pdispHandler)
+
+proc get_length*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_parentRule*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parentRule(self, p)
+
+proc getPropertyValue*(
+    self: ptr IHTMLCSSStyleDeclaration,
+    bstrPropertyName: BSTR,
+    pbstrPropertyValue: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getPropertyValue(self, bstrPropertyName, pbstrPropertyValue)
+
+proc getPropertyPriority*(
+    self: ptr IHTMLCSSStyleDeclaration,
+    bstrPropertyName: BSTR,
+    pbstrPropertyPriority: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getPropertyPriority(self, bstrPropertyName, pbstrPropertyPriority)
+
+proc removeProperty*(
+    self: ptr IHTMLCSSStyleDeclaration,
+    bstrPropertyName: BSTR,
+    pbstrPropertyValue: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeProperty(self, bstrPropertyName, pbstrPropertyValue)
+
+proc setProperty*(
+    self: ptr IHTMLCSSStyleDeclaration,
+    bstrPropertyName: BSTR,
+    pvarPropertyValue: ptr VARIANT,
+    pvarPropertyPriority: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setProperty(
+      self, bstrPropertyName, pvarPropertyValue, pvarPropertyPriority
+    )
+
+proc item*(
+    self: ptr IHTMLCSSStyleDeclaration, index: LONG, pbstrPropertyName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, pbstrPropertyName)
+
+proc put_fontFamily*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontFamily(self, v)
+
+proc get_fontFamily*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontFamily(self, p)
+
+proc put_fontStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontStyle(self, v)
+
+proc get_fontStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontStyle(self, p)
+
+proc put_fontVariant*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontVariant(self, v)
+
+proc get_fontVariant*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontVariant(self, p)
+
+proc put_fontWeight*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontWeight(self, v)
+
+proc get_fontWeight*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontWeight(self, p)
+
+proc put_fontSize*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontSize(self, v)
+
+proc get_fontSize*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontSize(self, p)
+
+proc put_font*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_font(self, v)
+
+proc get_font*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_font(self, p)
+
+proc put_color*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_color(self, v)
+
+proc get_color*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_color(self, p)
+
+proc put_background*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_background(self, v)
+
+proc get_background*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_background(self, p)
+
+proc put_backgroundColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundColor(self, v)
+
+proc get_backgroundColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundColor(self, p)
+
+proc put_backgroundImage*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundImage(self, v)
+
+proc get_backgroundImage*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundImage(self, p)
+
+proc put_backgroundRepeat*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundRepeat(self, v)
+
+proc get_backgroundRepeat*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundRepeat(self, p)
+
+proc put_backgroundAttachment*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundAttachment(self, v)
+
+proc get_backgroundAttachment*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundAttachment(self, p)
+
+proc put_backgroundPosition*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundPosition(self, v)
+
+proc get_backgroundPosition*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundPosition(self, p)
+
+proc put_backgroundPositionX*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundPositionX(self, v)
+
+proc get_backgroundPositionX*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundPositionX(self, p)
+
+proc put_backgroundPositionY*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundPositionY(self, v)
+
+proc get_backgroundPositionY*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundPositionY(self, p)
+
+proc put_wordSpacing*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_wordSpacing(self, v)
+
+proc get_wordSpacing*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wordSpacing(self, p)
+
+proc put_letterSpacing*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_letterSpacing(self, v)
+
+proc get_letterSpacing*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_letterSpacing(self, p)
+
+proc put_textDecoration*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecoration(self, v)
+
+proc get_textDecoration*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecoration(self, p)
+
+proc put_verticalAlign*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_verticalAlign(self, v)
+
+proc get_verticalAlign*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_verticalAlign(self, p)
+
+proc put_textTransform*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textTransform(self, v)
+
+proc get_textTransform*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textTransform(self, p)
+
+proc put_textAlign*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textAlign(self, v)
+
+proc get_textAlign*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textAlign(self, p)
+
+proc put_textIndent*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textIndent(self, v)
+
+proc get_textIndent*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textIndent(self, p)
+
+proc put_lineHeight*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lineHeight(self, v)
+
+proc get_lineHeight*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lineHeight(self, p)
+
+proc put_marginTop*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginTop(self, v)
+
+proc get_marginTop*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginTop(self, p)
+
+proc put_marginRight*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginRight(self, v)
+
+proc get_marginRight*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginRight(self, p)
+
+proc put_marginBottom*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginBottom(self, v)
+
+proc get_marginBottom*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginBottom(self, p)
+
+proc put_marginLeft*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginLeft(self, v)
+
+proc get_marginLeft*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginLeft(self, p)
+
+proc put_margin*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_margin(self, v)
+
+proc get_margin*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_margin(self, p)
+
+proc put_paddingTop*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_paddingTop(self, v)
+
+proc get_paddingTop*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingTop(self, p)
+
+proc put_paddingRight*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_paddingRight(self, v)
+
+proc get_paddingRight*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingRight(self, p)
+
+proc put_paddingBottom*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_paddingBottom(self, v)
+
+proc get_paddingBottom*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingBottom(self, p)
+
+proc put_paddingLeft*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_paddingLeft(self, v)
+
+proc get_paddingLeft*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingLeft(self, p)
+
+proc put_padding*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_padding(self, v)
+
+proc get_padding*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_padding(self, p)
+
+proc put_border*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_border(self, v)
+
+proc get_border*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_border(self, p)
+
+proc put_borderTop*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderTop(self, v)
+
+proc get_borderTop*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTop(self, p)
+
+proc put_borderRight*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderRight(self, v)
+
+proc get_borderRight*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRight(self, p)
+
+proc put_borderBottom*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderBottom(self, v)
+
+proc get_borderBottom*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottom(self, p)
+
+proc put_borderLeft*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderLeft(self, v)
+
+proc get_borderLeft*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeft(self, p)
+
+proc put_borderColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderColor(self, v)
+
+proc get_borderColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColor(self, p)
+
+proc put_borderTopColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderTopColor(self, v)
+
+proc get_borderTopColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTopColor(self, p)
+
+proc put_borderRightColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderRightColor(self, v)
+
+proc get_borderRightColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRightColor(self, p)
+
+proc put_borderBottomColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderBottomColor(self, v)
+
+proc get_borderBottomColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottomColor(self, p)
+
+proc put_borderLeftColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderLeftColor(self, v)
+
+proc get_borderLeftColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeftColor(self, p)
+
+proc put_borderWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderWidth(self, v)
+
+proc get_borderWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderWidth(self, p)
+
+proc put_borderTopWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderTopWidth(self, v)
+
+proc get_borderTopWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTopWidth(self, p)
+
+proc put_borderRightWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderRightWidth(self, v)
+
+proc get_borderRightWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRightWidth(self, p)
+
+proc put_borderBottomWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderBottomWidth(self, v)
+
+proc get_borderBottomWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottomWidth(self, p)
+
+proc put_borderLeftWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderLeftWidth(self, v)
+
+proc get_borderLeftWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeftWidth(self, p)
+
+proc put_borderStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderStyle(self, v)
+
+proc get_borderStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderStyle(self, p)
+
+proc put_borderTopStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderTopStyle(self, v)
+
+proc get_borderTopStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTopStyle(self, p)
+
+proc put_borderRightStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderRightStyle(self, v)
+
+proc get_borderRightStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRightStyle(self, p)
+
+proc put_borderBottomStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderBottomStyle(self, v)
+
+proc get_borderBottomStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottomStyle(self, p)
+
+proc put_borderLeftStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderLeftStyle(self, v)
+
+proc get_borderLeftStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeftStyle(self, p)
+
+proc put_width*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_height*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_styleFloat*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_styleFloat(self, v)
+
+proc get_styleFloat*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_styleFloat(self, p)
+
+proc put_clear*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clear(self, v)
+
+proc get_clear*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clear(self, p)
+
+proc put_display*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_display(self, v)
+
+proc get_display*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_display(self, p)
+
+proc put_visibility*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_visibility(self, v)
+
+proc get_visibility*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_visibility(self, p)
+
+proc put_listStyleType*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_listStyleType(self, v)
+
+proc get_listStyleType*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStyleType(self, p)
+
+proc put_listStylePosition*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_listStylePosition(self, v)
+
+proc get_listStylePosition*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStylePosition(self, p)
+
+proc put_listStyleImage*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_listStyleImage(self, v)
+
+proc get_listStyleImage*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStyleImage(self, p)
+
+proc put_listStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_listStyle(self, v)
+
+proc get_listStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStyle(self, p)
+
+proc put_whiteSpace*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_whiteSpace(self, v)
+
+proc get_whiteSpace*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_whiteSpace(self, p)
+
+proc put_top*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_top(self, v)
+
+proc get_top*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_top(self, p)
+
+proc put_left*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_left(self, v)
+
+proc get_left*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_left(self, p)
+
+proc put_zIndex*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_zIndex(self, v)
+
+proc get_zIndex*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_zIndex(self, p)
+
+proc put_overflow*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_overflow(self, v)
+
+proc get_overflow*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_overflow(self, p)
+
+proc put_pageBreakBefore*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pageBreakBefore(self, v)
+
+proc get_pageBreakBefore*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageBreakBefore(self, p)
+
+proc put_pageBreakAfter*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pageBreakAfter(self, v)
+
+proc get_pageBreakAfter*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageBreakAfter(self, p)
+
+proc put_cssText*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cssText(self, v)
+
+proc get_cssText*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cssText(self, p)
+
+proc put_cursor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cursor(self, v)
+
+proc get_cursor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cursor(self, p)
+
+proc put_clip*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clip(self, v)
+
+proc get_clip*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clip(self, p)
+
+proc put_filter*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_filter(self, v)
+
+proc get_filter*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_filter(self, p)
+
+proc put_tableLayout*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_tableLayout(self, v)
+
+proc get_tableLayout*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tableLayout(self, p)
+
+proc put_borderCollapse*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderCollapse(self, v)
+
+proc get_borderCollapse*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderCollapse(self, p)
+
+proc put_direction*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_direction(self, v)
+
+proc get_direction*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_direction(self, p)
+
+proc put_behavior*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_behavior(self, v)
+
+proc get_behavior*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_behavior(self, p)
+
+proc put_position*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_position(self, v)
+
+proc get_position*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_position(self, p)
+
+proc put_unicodeBidi*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_unicodeBidi(self, v)
+
+proc get_unicodeBidi*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_unicodeBidi(self, p)
+
+proc put_bottom*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_bottom(self, v)
+
+proc get_bottom*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bottom(self, p)
+
+proc put_right*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_right(self, v)
+
+proc get_right*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_right(self, p)
+
+proc put_imeMode*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_imeMode(self, v)
+
+proc get_imeMode*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_imeMode(self, p)
+
+proc put_rubyAlign*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rubyAlign(self, v)
+
+proc get_rubyAlign*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rubyAlign(self, p)
+
+proc put_rubyPosition*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rubyPosition(self, v)
+
+proc get_rubyPosition*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rubyPosition(self, p)
+
+proc put_rubyOverhang*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rubyOverhang(self, v)
+
+proc get_rubyOverhang*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rubyOverhang(self, p)
+
+proc put_layoutGridChar*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGridChar(self, v)
+
+proc get_layoutGridChar*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridChar(self, p)
+
+proc put_layoutGridLine*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGridLine(self, v)
+
+proc get_layoutGridLine*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridLine(self, p)
+
+proc put_layoutGridMode*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGridMode(self, v)
+
+proc get_layoutGridMode*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridMode(self, p)
+
+proc put_layoutGridType*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGridType(self, v)
+
+proc get_layoutGridType*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridType(self, p)
+
+proc put_layoutGrid*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGrid(self, v)
+
+proc get_layoutGrid*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGrid(self, p)
+
+proc put_textAutospace*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textAutospace(self, v)
+
+proc get_textAutospace*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textAutospace(self, p)
+
+proc put_wordBreak*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_wordBreak(self, v)
+
+proc get_wordBreak*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wordBreak(self, p)
+
+proc put_lineBreak*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lineBreak(self, v)
+
+proc get_lineBreak*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lineBreak(self, p)
+
+proc put_textJustify*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textJustify(self, v)
+
+proc get_textJustify*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textJustify(self, p)
+
+proc put_textJustifyTrim*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textJustifyTrim(self, v)
+
+proc get_textJustifyTrim*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textJustifyTrim(self, p)
+
+proc put_textKashida*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textKashida(self, v)
+
+proc get_textKashida*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textKashida(self, p)
+
+proc put_overflowX*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_overflowX(self, v)
+
+proc get_overflowX*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_overflowX(self, p)
+
+proc put_overflowY*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_overflowY(self, v)
+
+proc get_overflowY*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_overflowY(self, p)
+
+proc put_accelerator*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_accelerator(self, v)
+
+proc get_accelerator*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accelerator(self, p)
+
+proc put_layoutFlow*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutFlow(self, v)
+
+proc get_layoutFlow*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutFlow(self, p)
+
+proc put_zoom*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_zoom(self, v)
+
+proc get_zoom*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_zoom(self, p)
+
+proc put_wordWrap*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_wordWrap(self, v)
+
+proc get_wordWrap*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wordWrap(self, p)
+
+proc put_textUnderlinePosition*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textUnderlinePosition(self, v)
+
+proc get_textUnderlinePosition*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textUnderlinePosition(self, p)
+
+proc put_scrollbarBaseColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarBaseColor(self, v)
+
+proc get_scrollbarBaseColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarBaseColor(self, p)
+
+proc put_scrollbarFaceColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarFaceColor(self, v)
+
+proc get_scrollbarFaceColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarFaceColor(self, p)
+
+proc put_scrollbar3dLightColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbar3dLightColor(self, v)
+
+proc get_scrollbar3dLightColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbar3dLightColor(self, p)
+
+proc put_scrollbarShadowColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarShadowColor(self, v)
+
+proc get_scrollbarShadowColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarShadowColor(self, p)
+
+proc put_scrollbarHighlightColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarHighlightColor(self, v)
+
+proc get_scrollbarHighlightColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarHighlightColor(self, p)
+
+proc put_scrollbarDarkShadowColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarDarkShadowColor(self, v)
+
+proc get_scrollbarDarkShadowColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarDarkShadowColor(self, p)
+
+proc put_scrollbarArrowColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarArrowColor(self, v)
+
+proc get_scrollbarArrowColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarArrowColor(self, p)
+
+proc put_scrollbarTrackColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarTrackColor(self, v)
+
+proc get_scrollbarTrackColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarTrackColor(self, p)
+
+proc put_writingMode*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_writingMode(self, v)
+
+proc get_writingMode*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_writingMode(self, p)
+
+proc put_textAlignLast*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textAlignLast(self, v)
+
+proc get_textAlignLast*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textAlignLast(self, p)
+
+proc put_textKashidaSpace*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textKashidaSpace(self, v)
+
+proc get_textKashidaSpace*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textKashidaSpace(self, p)
+
+proc put_textOverflow*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textOverflow(self, v)
+
+proc get_textOverflow*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textOverflow(self, p)
+
+proc put_minHeight*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_minHeight(self, v)
+
+proc get_minHeight*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_minHeight(self, p)
+
+proc put_msInterpolationMode*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msInterpolationMode(self, v)
+
+proc get_msInterpolationMode*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msInterpolationMode(self, p)
+
+proc put_maxHeight*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_maxHeight(self, v)
+
+proc get_maxHeight*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maxHeight(self, p)
+
+proc put_minWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_minWidth(self, v)
+
+proc get_minWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_minWidth(self, p)
+
+proc put_maxWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_maxWidth(self, v)
+
+proc get_maxWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maxWidth(self, p)
+
+proc put_content*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_content(self, v)
+
+proc get_content*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_content(self, p)
+
+proc put_captionSide*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_captionSide(self, v)
+
+proc get_captionSide*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_captionSide(self, p)
+
+proc put_counterIncrement*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_counterIncrement(self, v)
+
+proc get_counterIncrement*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_counterIncrement(self, p)
+
+proc put_counterReset*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_counterReset(self, v)
+
+proc get_counterReset*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_counterReset(self, p)
+
+proc put_outline*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_outline(self, v)
+
+proc get_outline*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outline(self, p)
+
+proc put_outlineWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_outlineWidth(self, v)
+
+proc get_outlineWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outlineWidth(self, p)
+
+proc put_outlineStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_outlineStyle(self, v)
+
+proc get_outlineStyle*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outlineStyle(self, p)
+
+proc put_outlineColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_outlineColor(self, v)
+
+proc get_outlineColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outlineColor(self, p)
+
+proc put_boxSizing*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_boxSizing(self, v)
+
+proc get_boxSizing*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_boxSizing(self, p)
+
+proc put_borderSpacing*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderSpacing(self, v)
+
+proc get_borderSpacing*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderSpacing(self, p)
+
+proc put_orphans*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_orphans(self, v)
+
+proc get_orphans*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_orphans(self, p)
+
+proc put_widows*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_widows(self, v)
+
+proc get_widows*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_widows(self, p)
+
+proc put_pageBreakInside*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pageBreakInside(self, v)
+
+proc get_pageBreakInside*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageBreakInside(self, p)
+
+proc put_emptyCells*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_emptyCells(self, v)
+
+proc get_emptyCells*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_emptyCells(self, p)
+
+proc put_msBlockProgression*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msBlockProgression(self, v)
+
+proc get_msBlockProgression*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msBlockProgression(self, p)
+
+proc put_quotes*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_quotes(self, v)
+
+proc get_quotes*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_quotes(self, p)
+
+proc put_alignmentBaseline*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_alignmentBaseline(self, v)
+
+proc get_alignmentBaseline*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_alignmentBaseline(self, p)
+
+proc put_baselineShift*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_baselineShift(self, v)
+
+proc get_baselineShift*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baselineShift(self, p)
+
+proc put_dominantBaseline*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dominantBaseline(self, v)
+
+proc get_dominantBaseline*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dominantBaseline(self, p)
+
+proc put_fontSizeAdjust*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontSizeAdjust(self, v)
+
+proc get_fontSizeAdjust*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontSizeAdjust(self, p)
+
+proc put_fontStretch*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontStretch(self, v)
+
+proc get_fontStretch*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontStretch(self, p)
+
+proc put_opacity*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_opacity(self, v)
+
+proc get_opacity*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_opacity(self, p)
+
+proc put_clipPath*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clipPath(self, v)
+
+proc get_clipPath*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clipPath(self, p)
+
+proc put_clipRule*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clipRule(self, v)
+
+proc get_clipRule*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clipRule(self, p)
+
+proc put_fill*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fill(self, v)
+
+proc get_fill*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fill(self, p)
+
+proc put_fillOpacity*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fillOpacity(self, v)
+
+proc get_fillOpacity*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fillOpacity(self, p)
+
+proc put_fillRule*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fillRule(self, v)
+
+proc get_fillRule*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fillRule(self, p)
+
+proc put_kerning*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_kerning(self, v)
+
+proc get_kerning*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_kerning(self, p)
+
+proc put_marker*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marker(self, v)
+
+proc get_marker*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marker(self, p)
+
+proc put_markerEnd*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_markerEnd(self, v)
+
+proc get_markerEnd*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_markerEnd(self, p)
+
+proc put_markerMid*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_markerMid(self, v)
+
+proc get_markerMid*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_markerMid(self, p)
+
+proc put_markerStart*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_markerStart(self, v)
+
+proc get_markerStart*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_markerStart(self, p)
+
+proc put_mask*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_mask(self, v)
+
+proc get_mask*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_mask(self, p)
+
+proc put_pointerEvents*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pointerEvents(self, v)
+
+proc get_pointerEvents*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pointerEvents(self, p)
+
+proc put_stopColor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_stopColor(self, v)
+
+proc get_stopColor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_stopColor(self, p)
+
+proc put_stopOpacity*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_stopOpacity(self, v)
+
+proc get_stopOpacity*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_stopOpacity(self, p)
+
+proc put_stroke*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_stroke(self, v)
+
+proc get_stroke*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_stroke(self, p)
+
+proc put_strokeDasharray*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_strokeDasharray(self, v)
+
+proc get_strokeDasharray*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_strokeDasharray(self, p)
+
+proc put_strokeDashoffset*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_strokeDashoffset(self, v)
+
+proc get_strokeDashoffset*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_strokeDashoffset(self, p)
+
+proc put_strokeLinecap*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_strokeLinecap(self, v)
+
+proc get_strokeLinecap*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_strokeLinecap(self, p)
+
+proc put_strokeLinejoin*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_strokeLinejoin(self, v)
+
+proc get_strokeLinejoin*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_strokeLinejoin(self, p)
+
+proc put_strokeMiterlimit*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_strokeMiterlimit(self, v)
+
+proc get_strokeMiterlimit*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_strokeMiterlimit(self, p)
+
+proc put_strokeOpacity*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_strokeOpacity(self, v)
+
+proc get_strokeOpacity*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_strokeOpacity(self, p)
+
+proc put_strokeWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_strokeWidth(self, v)
+
+proc get_strokeWidth*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_strokeWidth(self, p)
+
+proc put_textAnchor*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textAnchor(self, v)
+
+proc get_textAnchor*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textAnchor(self, p)
+
+proc put_glyphOrientationHorizontal*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_glyphOrientationHorizontal(self, v)
+
+proc get_glyphOrientationHorizontal*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_glyphOrientationHorizontal(self, p)
+
+proc put_glyphOrientationVertical*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_glyphOrientationVertical(self, v)
+
+proc get_glyphOrientationVertical*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_glyphOrientationVertical(self, p)
+
+proc put_borderRadius*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderRadius(self, v)
+
+proc get_borderRadius*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRadius(self, p)
+
+proc put_borderTopLeftRadius*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderTopLeftRadius(self, v)
+
+proc get_borderTopLeftRadius*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTopLeftRadius(self, p)
+
+proc put_borderTopRightRadius*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderTopRightRadius(self, v)
+
+proc get_borderTopRightRadius*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTopRightRadius(self, p)
+
+proc put_borderBottomRightRadius*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderBottomRightRadius(self, v)
+
+proc get_borderBottomRightRadius*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottomRightRadius(self, p)
+
+proc put_borderBottomLeftRadius*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderBottomLeftRadius(self, v)
+
+proc get_borderBottomLeftRadius*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottomLeftRadius(self, p)
+
+proc put_clipTop*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clipTop(self, v)
+
+proc get_clipTop*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clipTop(self, p)
+
+proc put_clipRight*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clipRight(self, v)
+
+proc get_clipRight*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clipRight(self, p)
+
+proc get_clipBottom*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clipBottom(self, p)
+
+proc put_clipLeft*(
+    self: ptr IHTMLCSSStyleDeclaration, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clipLeft(self, v)
+
+proc get_clipLeft*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clipLeft(self, p)
+
+proc put_cssFloat*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cssFloat(self, v)
+
+proc get_cssFloat*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cssFloat(self, p)
+
+proc put_backgroundClip*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundClip(self, v)
+
+proc get_backgroundClip*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundClip(self, p)
+
+proc put_backgroundOrigin*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundOrigin(self, v)
+
+proc get_backgroundOrigin*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundOrigin(self, p)
+
+proc put_backgroundSize*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundSize(self, v)
+
+proc get_backgroundSize*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundSize(self, p)
+
+proc put_boxShadow*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_boxShadow(self, v)
+
+proc get_boxShadow*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_boxShadow(self, p)
+
+proc put_msTransform*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msTransform(self, v)
+
+proc get_msTransform*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msTransform(self, p)
+
+proc put_msTransformOrigin*(
+    self: ptr IHTMLCSSStyleDeclaration, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msTransformOrigin(self, v)
+
+proc get_msTransformOrigin*(
+    self: ptr IHTMLCSSStyleDeclaration, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msTransformOrigin(self, p)
+
+proc put_msScrollChaining*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msScrollChaining(self, v)
+
+proc get_msScrollChaining*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msScrollChaining(self, p)
+
+proc put_msContentZooming*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msContentZooming(self, v)
+
+proc get_msContentZooming*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msContentZooming(self, p)
+
+proc put_msContentZoomSnapType*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msContentZoomSnapType(self, v)
+
+proc get_msContentZoomSnapType*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msContentZoomSnapType(self, p)
+
+proc put_msScrollRails*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msScrollRails(self, v)
+
+proc get_msScrollRails*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msScrollRails(self, p)
+
+proc put_msContentZoomChaining*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msContentZoomChaining(self, v)
+
+proc get_msContentZoomChaining*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msContentZoomChaining(self, p)
+
+proc put_msScrollSnapType*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msScrollSnapType(self, v)
+
+proc get_msScrollSnapType*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msScrollSnapType(self, p)
+
+proc put_msContentZoomLimit*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msContentZoomLimit(self, v)
+
+proc get_msContentZoomLimit*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msContentZoomLimit(self, p)
+
+proc put_msContentZoomSnap*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msContentZoomSnap(self, v)
+
+proc get_msContentZoomSnap*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msContentZoomSnap(self, p)
+
+proc put_msContentZoomSnapPoints*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msContentZoomSnapPoints(self, v)
+
+proc get_msContentZoomSnapPoints*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msContentZoomSnapPoints(self, p)
+
+proc put_msContentZoomLimitMin*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msContentZoomLimitMin(self, v)
+
+proc get_msContentZoomLimitMin*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msContentZoomLimitMin(self, p)
+
+proc put_msContentZoomLimitMax*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msContentZoomLimitMax(self, v)
+
+proc get_msContentZoomLimitMax*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msContentZoomLimitMax(self, p)
+
+proc put_msScrollSnapX*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msScrollSnapX(self, v)
+
+proc get_msScrollSnapX*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msScrollSnapX(self, p)
+
+proc put_msScrollSnapY*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msScrollSnapY(self, v)
+
+proc get_msScrollSnapY*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msScrollSnapY(self, p)
+
+proc put_msScrollSnapPointsX*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msScrollSnapPointsX(self, v)
+
+proc get_msScrollSnapPointsX*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msScrollSnapPointsX(self, p)
+
+proc put_msScrollSnapPointsY*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msScrollSnapPointsY(self, v)
+
+proc get_msScrollSnapPointsY*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msScrollSnapPointsY(self, p)
+
+proc put_msGridColumn*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msGridColumn(self, v)
+
+proc get_msGridColumn*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msGridColumn(self, p)
+
+proc put_msGridColumnAlign*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msGridColumnAlign(self, v)
+
+proc get_msGridColumnAlign*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msGridColumnAlign(self, p)
+
+proc put_msGridColumns*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msGridColumns(self, v)
+
+proc get_msGridColumns*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msGridColumns(self, p)
+
+proc put_msGridColumnSpan*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msGridColumnSpan(self, v)
+
+proc get_msGridColumnSpan*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msGridColumnSpan(self, p)
+
+proc put_msGridRow*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msGridRow(self, v)
+
+proc get_msGridRow*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msGridRow(self, p)
+
+proc put_msGridRowAlign*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msGridRowAlign(self, v)
+
+proc get_msGridRowAlign*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msGridRowAlign(self, p)
+
+proc put_msGridRows*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msGridRows(self, v)
+
+proc get_msGridRows*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msGridRows(self, p)
+
+proc put_msGridRowSpan*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msGridRowSpan(self, v)
+
+proc get_msGridRowSpan*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msGridRowSpan(self, p)
+
+proc put_msWrapThrough*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msWrapThrough(self, v)
+
+proc get_msWrapThrough*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msWrapThrough(self, p)
+
+proc put_msWrapMargin*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msWrapMargin(self, v)
+
+proc get_msWrapMargin*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msWrapMargin(self, p)
+
+proc put_msWrapFlow*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msWrapFlow(self, v)
+
+proc get_msWrapFlow*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msWrapFlow(self, p)
+
+proc put_msAnimationName*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msAnimationName(self, v)
+
+proc get_msAnimationName*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msAnimationName(self, p)
+
+proc put_msAnimationDuration*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msAnimationDuration(self, v)
+
+proc get_msAnimationDuration*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msAnimationDuration(self, p)
+
+proc put_msAnimationTimingFunction*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msAnimationTimingFunction(self, v)
+
+proc get_msAnimationTimingFunction*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msAnimationTimingFunction(self, p)
+
+proc put_msAnimationDelay*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msAnimationDelay(self, v)
+
+proc get_msAnimationDelay*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msAnimationDelay(self, p)
+
+proc put_msAnimationDirection*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msAnimationDirection(self, v)
+
+proc get_msAnimationDirection*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msAnimationDirection(self, p)
+
+proc put_msAnimationPlayState*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msAnimationPlayState(self, v)
+
+proc get_msAnimationPlayState*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msAnimationPlayState(self, p)
+
+proc put_msAnimationIterationCount*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msAnimationIterationCount(self, v)
+
+proc get_msAnimationIterationCount*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msAnimationIterationCount(self, p)
+
+proc put_msAnimation*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msAnimation(self, v)
+
+proc get_msAnimation*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msAnimation(self, p)
+
+proc put_msAnimationFillMode*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msAnimationFillMode(self, v)
+
+proc get_msAnimationFillMode*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msAnimationFillMode(self, p)
+
+proc put_colorInterpolationFilters*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_colorInterpolationFilters(self, v)
+
+proc get_colorInterpolationFilters*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_colorInterpolationFilters(self, p)
+
+proc put_columnCount*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_columnCount(self, v)
+
+proc get_columnCount*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_columnCount(self, p)
+
+proc put_columnWidth*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_columnWidth(self, v)
+
+proc get_columnWidth*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_columnWidth(self, p)
+
+proc put_columnGap*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_columnGap(self, v)
+
+proc get_columnGap*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_columnGap(self, p)
+
+proc put_columnFill*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_columnFill(self, v)
+
+proc get_columnFill*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_columnFill(self, p)
+
+proc put_columnSpan*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_columnSpan(self, v)
+
+proc get_columnSpan*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_columnSpan(self, p)
+
+proc put_columns*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_columns(self, v)
+
+proc get_columns*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_columns(self, p)
+
+proc put_columnRule*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_columnRule(self, v)
+
+proc get_columnRule*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_columnRule(self, p)
+
+proc put_columnRuleColor*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_columnRuleColor(self, v)
+
+proc get_columnRuleColor*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_columnRuleColor(self, p)
+
+proc put_columnRuleStyle*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_columnRuleStyle(self, v)
+
+proc get_columnRuleStyle*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_columnRuleStyle(self, p)
+
+proc put_columnRuleWidth*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_columnRuleWidth(self, v)
+
+proc get_columnRuleWidth*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_columnRuleWidth(self, p)
+
+proc put_breakBefore*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_breakBefore(self, v)
+
+proc get_breakBefore*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_breakBefore(self, p)
+
+proc put_breakAfter*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_breakAfter(self, v)
+
+proc get_breakAfter*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_breakAfter(self, p)
+
+proc put_breakInside*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_breakInside(self, v)
+
+proc get_breakInside*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_breakInside(self, p)
+
+proc put_floodColor*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_floodColor(self, v)
+
+proc get_floodColor*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_floodColor(self, p)
+
+proc put_floodOpacity*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_floodOpacity(self, v)
+
+proc get_floodOpacity*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_floodOpacity(self, p)
+
+proc put_lightingColor*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lightingColor(self, v)
+
+proc get_lightingColor*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lightingColor(self, p)
+
+proc put_msScrollLimitXMin*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msScrollLimitXMin(self, v)
+
+proc get_msScrollLimitXMin*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msScrollLimitXMin(self, p)
+
+proc put_msScrollLimitYMin*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msScrollLimitYMin(self, v)
+
+proc get_msScrollLimitYMin*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msScrollLimitYMin(self, p)
+
+proc put_msScrollLimitXMax*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msScrollLimitXMax(self, v)
+
+proc get_msScrollLimitXMax*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msScrollLimitXMax(self, p)
+
+proc put_msScrollLimitYMax*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msScrollLimitYMax(self, v)
+
+proc get_msScrollLimitYMax*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msScrollLimitYMax(self, p)
+
+proc put_msScrollLimit*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msScrollLimit(self, v)
+
+proc get_msScrollLimit*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msScrollLimit(self, p)
+
+proc put_textShadow*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textShadow(self, v)
+
+proc get_textShadow*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textShadow(self, p)
+
+proc put_msFlowFrom*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFlowFrom(self, v)
+
+proc get_msFlowFrom*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFlowFrom(self, p)
+
+proc put_msFlowInto*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFlowInto(self, v)
+
+proc get_msFlowInto*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFlowInto(self, p)
+
+proc put_msHyphens*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msHyphens(self, v)
+
+proc get_msHyphens*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msHyphens(self, p)
+
+proc put_msHyphenateLimitZone*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msHyphenateLimitZone(self, v)
+
+proc get_msHyphenateLimitZone*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msHyphenateLimitZone(self, p)
+
+proc put_msHyphenateLimitChars*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msHyphenateLimitChars(self, v)
+
+proc get_msHyphenateLimitChars*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msHyphenateLimitChars(self, p)
+
+proc put_msHyphenateLimitLines*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msHyphenateLimitLines(self, v)
+
+proc get_msHyphenateLimitLines*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msHyphenateLimitLines(self, p)
+
+proc put_msHighContrastAdjust*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msHighContrastAdjust(self, v)
+
+proc get_msHighContrastAdjust*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msHighContrastAdjust(self, p)
+
+proc put_enableBackground*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_enableBackground(self, v)
+
+proc get_enableBackground*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_enableBackground(self, p)
+
+proc put_msFontFeatureSettings*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFontFeatureSettings(self, v)
+
+proc get_msFontFeatureSettings*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFontFeatureSettings(self, p)
+
+proc put_msUserSelect*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msUserSelect(self, v)
+
+proc get_msUserSelect*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msUserSelect(self, p)
+
+proc put_msOverflowStyle*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msOverflowStyle(self, v)
+
+proc get_msOverflowStyle*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msOverflowStyle(self, p)
+
+proc put_msTransformStyle*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msTransformStyle(self, v)
+
+proc get_msTransformStyle*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msTransformStyle(self, p)
+
+proc put_msBackfaceVisibility*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msBackfaceVisibility(self, v)
+
+proc get_msBackfaceVisibility*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msBackfaceVisibility(self, p)
+
+proc put_msPerspective*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msPerspective(self, v)
+
+proc get_msPerspective*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msPerspective(self, p)
+
+proc put_msPerspectiveOrigin*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msPerspectiveOrigin(self, v)
+
+proc get_msPerspectiveOrigin*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msPerspectiveOrigin(self, p)
+
+proc put_msTransitionProperty*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msTransitionProperty(self, v)
+
+proc get_msTransitionProperty*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msTransitionProperty(self, p)
+
+proc put_msTransitionDuration*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msTransitionDuration(self, v)
+
+proc get_msTransitionDuration*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msTransitionDuration(self, p)
+
+proc put_msTransitionTimingFunction*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msTransitionTimingFunction(self, v)
+
+proc get_msTransitionTimingFunction*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msTransitionTimingFunction(self, p)
+
+proc put_msTransitionDelay*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msTransitionDelay(self, v)
+
+proc get_msTransitionDelay*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msTransitionDelay(self, p)
+
+proc put_msTransition*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msTransition(self, v)
+
+proc get_msTransition*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msTransition(self, p)
+
+proc put_msTouchAction*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msTouchAction(self, v)
+
+proc get_msTouchAction*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msTouchAction(self, p)
+
+proc put_msScrollTranslation*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msScrollTranslation(self, v)
+
+proc get_msScrollTranslation*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msScrollTranslation(self, p)
+
+proc put_msFlex*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFlex(self, v)
+
+proc get_msFlex*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFlex(self, p)
+
+proc put_msFlexPositive*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFlexPositive(self, v)
+
+proc get_msFlexPositive*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFlexPositive(self, p)
+
+proc put_msFlexNegative*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFlexNegative(self, v)
+
+proc get_msFlexNegative*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFlexNegative(self, p)
+
+proc put_msFlexPreferredSize*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFlexPreferredSize(self, v)
+
+proc get_msFlexPreferredSize*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFlexPreferredSize(self, p)
+
+proc put_msFlexFlow*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFlexFlow(self, v)
+
+proc get_msFlexFlow*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFlexFlow(self, p)
+
+proc put_msFlexDirection*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFlexDirection(self, v)
+
+proc get_msFlexDirection*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFlexDirection(self, p)
+
+proc put_msFlexWrap*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFlexWrap(self, v)
+
+proc get_msFlexWrap*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFlexWrap(self, p)
+
+proc put_msFlexAlign*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFlexAlign(self, v)
+
+proc get_msFlexAlign*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFlexAlign(self, p)
+
+proc put_msFlexItemAlign*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFlexItemAlign(self, v)
+
+proc get_msFlexItemAlign*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFlexItemAlign(self, p)
+
+proc put_msFlexPack*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFlexPack(self, v)
+
+proc get_msFlexPack*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFlexPack(self, p)
+
+proc put_msFlexLinePack*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFlexLinePack(self, v)
+
+proc get_msFlexLinePack*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFlexLinePack(self, p)
+
+proc put_msFlexOrder*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msFlexOrder(self, v)
+
+proc get_msFlexOrder*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFlexOrder(self, p)
+
+proc put_msTouchSelect*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msTouchSelect(self, v)
+
+proc get_msTouchSelect*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msTouchSelect(self, p)
+
+proc put_transform*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_transform(self, v)
+
+proc get_transform*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_transform(self, p)
+
+proc put_transformOrigin*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_transformOrigin(self, v)
+
+proc get_transformOrigin*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_transformOrigin(self, p)
+
+proc put_transformStyle*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_transformStyle(self, v)
+
+proc get_transformStyle*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_transformStyle(self, p)
+
+proc put_backfaceVisibility*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backfaceVisibility(self, v)
+
+proc get_backfaceVisibility*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backfaceVisibility(self, p)
+
+proc put_perspective*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_perspective(self, v)
+
+proc get_perspective*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_perspective(self, p)
+
+proc put_perspectiveOrigin*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_perspectiveOrigin(self, v)
+
+proc get_perspectiveOrigin*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_perspectiveOrigin(self, p)
+
+proc put_transitionProperty*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_transitionProperty(self, v)
+
+proc get_transitionProperty*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_transitionProperty(self, p)
+
+proc put_transitionDuration*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_transitionDuration(self, v)
+
+proc get_transitionDuration*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_transitionDuration(self, p)
+
+proc put_transitionTimingFunction*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_transitionTimingFunction(self, v)
+
+proc get_transitionTimingFunction*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_transitionTimingFunction(self, p)
+
+proc put_transitionDelay*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_transitionDelay(self, v)
+
+proc get_transitionDelay*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_transitionDelay(self, p)
+
+proc put_transition*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_transition(self, v)
+
+proc get_transition*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_transition(self, p)
+
+proc put_fontFeatureSettings*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontFeatureSettings(self, v)
+
+proc get_fontFeatureSettings*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontFeatureSettings(self, p)
+
+proc put_animationName*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_animationName(self, v)
+
+proc get_animationName*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animationName(self, p)
+
+proc put_animationDuration*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_animationDuration(self, v)
+
+proc get_animationDuration*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animationDuration(self, p)
+
+proc put_animationTimingFunction*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_animationTimingFunction(self, v)
+
+proc get_animationTimingFunction*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animationTimingFunction(self, p)
+
+proc put_animationDelay*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_animationDelay(self, v)
+
+proc get_animationDelay*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animationDelay(self, p)
+
+proc put_animationDirection*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_animationDirection(self, v)
+
+proc get_animationDirection*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animationDirection(self, p)
+
+proc put_animationPlayState*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_animationPlayState(self, v)
+
+proc get_animationPlayState*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animationPlayState(self, p)
+
+proc put_animationIterationCount*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_animationIterationCount(self, v)
+
+proc get_animationIterationCount*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animationIterationCount(self, p)
+
+proc put_animation*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_animation(self, v)
+
+proc get_animation*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animation(self, p)
+
+proc put_animationFillMode*(
+    self: ptr IHTMLCSSStyleDeclaration2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_animationFillMode(self, v)
+
+proc get_animationFillMode*(
+    self: ptr IHTMLCSSStyleDeclaration2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animationFillMode(self, p)
+
+proc msGetPropertyEnabled*(
+    self: ptr IHTMLStyleEnabled, name: BSTR, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.msGetPropertyEnabled(self, name, p)
+
+proc msPutPropertyEnabled*(
+    self: ptr IHTMLStyleEnabled, name: BSTR, b: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.msPutPropertyEnabled(self, name, b)
+
+proc put_fontFamily*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontFamily(self, v)
+
+proc get_fontFamily*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontFamily(self, p)
+
+proc put_fontStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontStyle(self, v)
+
+proc get_fontStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontStyle(self, p)
+
+proc put_fontVariant*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontVariant(self, v)
+
+proc get_fontVariant*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontVariant(self, p)
+
+proc put_fontWeight*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontWeight(self, v)
+
+proc get_fontWeight*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontWeight(self, p)
+
+proc put_fontSize*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontSize(self, v)
+
+proc get_fontSize*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontSize(self, p)
+
+proc put_font*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_font(self, v)
+
+proc get_font*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_font(self, p)
+
+proc put_color*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_color(self, v)
+
+proc get_color*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_color(self, p)
+
+proc put_background*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_background(self, v)
+
+proc get_background*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_background(self, p)
+
+proc put_backgroundColor*(
+    self: ptr IHTMLStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundColor(self, v)
+
+proc get_backgroundColor*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundColor(self, p)
+
+proc put_backgroundImage*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundImage(self, v)
+
+proc get_backgroundImage*(
+    self: ptr IHTMLStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundImage(self, p)
+
+proc put_backgroundRepeat*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundRepeat(self, v)
+
+proc get_backgroundRepeat*(
+    self: ptr IHTMLStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundRepeat(self, p)
+
+proc put_backgroundAttachment*(
+    self: ptr IHTMLStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundAttachment(self, v)
+
+proc get_backgroundAttachment*(
+    self: ptr IHTMLStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundAttachment(self, p)
+
+proc put_backgroundPosition*(
+    self: ptr IHTMLStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundPosition(self, v)
+
+proc get_backgroundPosition*(
+    self: ptr IHTMLStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundPosition(self, p)
+
+proc put_backgroundPositionX*(
+    self: ptr IHTMLStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundPositionX(self, v)
+
+proc get_backgroundPositionX*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundPositionX(self, p)
+
+proc put_backgroundPositionY*(
+    self: ptr IHTMLStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundPositionY(self, v)
+
+proc get_backgroundPositionY*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundPositionY(self, p)
+
+proc put_wordSpacing*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_wordSpacing(self, v)
+
+proc get_wordSpacing*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wordSpacing(self, p)
+
+proc put_letterSpacing*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_letterSpacing(self, v)
+
+proc get_letterSpacing*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_letterSpacing(self, p)
+
+proc put_textDecoration*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecoration(self, v)
+
+proc get_textDecoration*(
+    self: ptr IHTMLStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecoration(self, p)
+
+proc put_textDecorationNone*(
+    self: ptr IHTMLStyle, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecorationNone(self, v)
+
+proc get_textDecorationNone*(
+    self: ptr IHTMLStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecorationNone(self, p)
+
+proc put_textDecorationUnderline*(
+    self: ptr IHTMLStyle, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecorationUnderline(self, v)
+
+proc get_textDecorationUnderline*(
+    self: ptr IHTMLStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecorationUnderline(self, p)
+
+proc put_textDecorationOverline*(
+    self: ptr IHTMLStyle, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecorationOverline(self, v)
+
+proc get_textDecorationOverline*(
+    self: ptr IHTMLStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecorationOverline(self, p)
+
+proc put_textDecorationLineThrough*(
+    self: ptr IHTMLStyle, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecorationLineThrough(self, v)
+
+proc get_textDecorationLineThrough*(
+    self: ptr IHTMLStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecorationLineThrough(self, p)
+
+proc put_textDecorationBlink*(
+    self: ptr IHTMLStyle, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecorationBlink(self, v)
+
+proc get_textDecorationBlink*(
+    self: ptr IHTMLStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecorationBlink(self, p)
+
+proc put_verticalAlign*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_verticalAlign(self, v)
+
+proc get_verticalAlign*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_verticalAlign(self, p)
+
+proc put_textTransform*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textTransform(self, v)
+
+proc get_textTransform*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textTransform(self, p)
+
+proc put_textAlign*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textAlign(self, v)
+
+proc get_textAlign*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textAlign(self, p)
+
+proc put_textIndent*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textIndent(self, v)
+
+proc get_textIndent*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textIndent(self, p)
+
+proc put_lineHeight*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lineHeight(self, v)
+
+proc get_lineHeight*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lineHeight(self, p)
+
+proc put_marginTop*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginTop(self, v)
+
+proc get_marginTop*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginTop(self, p)
+
+proc put_marginRight*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginRight(self, v)
+
+proc get_marginRight*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginRight(self, p)
+
+proc put_marginBottom*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginBottom(self, v)
+
+proc get_marginBottom*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginBottom(self, p)
+
+proc put_marginLeft*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginLeft(self, v)
+
+proc get_marginLeft*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginLeft(self, p)
+
+proc put_margin*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_margin(self, v)
+
+proc get_margin*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_margin(self, p)
+
+proc put_paddingTop*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_paddingTop(self, v)
+
+proc get_paddingTop*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingTop(self, p)
+
+proc put_paddingRight*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_paddingRight(self, v)
+
+proc get_paddingRight*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingRight(self, p)
+
+proc put_paddingBottom*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_paddingBottom(self, v)
+
+proc get_paddingBottom*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingBottom(self, p)
+
+proc put_paddingLeft*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_paddingLeft(self, v)
+
+proc get_paddingLeft*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingLeft(self, p)
+
+proc put_padding*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_padding(self, v)
+
+proc get_padding*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_padding(self, p)
+
+proc put_border*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_border(self, v)
+
+proc get_border*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_border(self, p)
+
+proc put_borderTop*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderTop(self, v)
+
+proc get_borderTop*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTop(self, p)
+
+proc put_borderRight*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderRight(self, v)
+
+proc get_borderRight*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRight(self, p)
+
+proc put_borderBottom*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderBottom(self, v)
+
+proc get_borderBottom*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottom(self, p)
+
+proc put_borderLeft*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderLeft(self, v)
+
+proc get_borderLeft*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeft(self, p)
+
+proc put_borderColor*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderColor(self, v)
+
+proc get_borderColor*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColor(self, p)
+
+proc put_borderTopColor*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderTopColor(self, v)
+
+proc get_borderTopColor*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTopColor(self, p)
+
+proc put_borderRightColor*(
+    self: ptr IHTMLStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderRightColor(self, v)
+
+proc get_borderRightColor*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRightColor(self, p)
+
+proc put_borderBottomColor*(
+    self: ptr IHTMLStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderBottomColor(self, v)
+
+proc get_borderBottomColor*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottomColor(self, p)
+
+proc put_borderLeftColor*(
+    self: ptr IHTMLStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderLeftColor(self, v)
+
+proc get_borderLeftColor*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeftColor(self, p)
+
+proc put_borderWidth*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderWidth(self, v)
+
+proc get_borderWidth*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderWidth(self, p)
+
+proc put_borderTopWidth*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderTopWidth(self, v)
+
+proc get_borderTopWidth*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTopWidth(self, p)
+
+proc put_borderRightWidth*(
+    self: ptr IHTMLStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderRightWidth(self, v)
+
+proc get_borderRightWidth*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRightWidth(self, p)
+
+proc put_borderBottomWidth*(
+    self: ptr IHTMLStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderBottomWidth(self, v)
+
+proc get_borderBottomWidth*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottomWidth(self, p)
+
+proc put_borderLeftWidth*(
+    self: ptr IHTMLStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderLeftWidth(self, v)
+
+proc get_borderLeftWidth*(
+    self: ptr IHTMLStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeftWidth(self, p)
+
+proc put_borderStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderStyle(self, v)
+
+proc get_borderStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderStyle(self, p)
+
+proc put_borderTopStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderTopStyle(self, v)
+
+proc get_borderTopStyle*(
+    self: ptr IHTMLStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTopStyle(self, p)
+
+proc put_borderRightStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderRightStyle(self, v)
+
+proc get_borderRightStyle*(
+    self: ptr IHTMLStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRightStyle(self, p)
+
+proc put_borderBottomStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderBottomStyle(self, v)
+
+proc get_borderBottomStyle*(
+    self: ptr IHTMLStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottomStyle(self, p)
+
+proc put_borderLeftStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderLeftStyle(self, v)
+
+proc get_borderLeftStyle*(
+    self: ptr IHTMLStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeftStyle(self, p)
+
+proc put_width*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_height*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_styleFloat*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_styleFloat(self, v)
+
+proc get_styleFloat*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_styleFloat(self, p)
+
+proc put_clear*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clear(self, v)
+
+proc get_clear*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clear(self, p)
+
+proc put_display*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_display(self, v)
+
+proc get_display*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_display(self, p)
+
+proc put_visibility*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_visibility(self, v)
+
+proc get_visibility*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_visibility(self, p)
+
+proc put_listStyleType*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_listStyleType(self, v)
+
+proc get_listStyleType*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStyleType(self, p)
+
+proc put_listStylePosition*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_listStylePosition(self, v)
+
+proc get_listStylePosition*(
+    self: ptr IHTMLStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStylePosition(self, p)
+
+proc put_listStyleImage*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_listStyleImage(self, v)
+
+proc get_listStyleImage*(
+    self: ptr IHTMLStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStyleImage(self, p)
+
+proc put_listStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_listStyle(self, v)
+
+proc get_listStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStyle(self, p)
+
+proc put_whiteSpace*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_whiteSpace(self, v)
+
+proc get_whiteSpace*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_whiteSpace(self, p)
+
+proc put_top*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_top(self, v)
+
+proc get_top*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_top(self, p)
+
+proc put_left*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_left(self, v)
+
+proc get_left*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_left(self, p)
+
+proc get_position*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_position(self, p)
+
+proc put_zIndex*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_zIndex(self, v)
+
+proc get_zIndex*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_zIndex(self, p)
+
+proc put_overflow*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_overflow(self, v)
+
+proc get_overflow*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_overflow(self, p)
+
+proc put_pageBreakBefore*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pageBreakBefore(self, v)
+
+proc get_pageBreakBefore*(
+    self: ptr IHTMLStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageBreakBefore(self, p)
+
+proc put_pageBreakAfter*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pageBreakAfter(self, v)
+
+proc get_pageBreakAfter*(
+    self: ptr IHTMLStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageBreakAfter(self, p)
+
+proc put_cssText*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cssText(self, v)
+
+proc get_cssText*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cssText(self, p)
+
+proc put_pixelTop*(self: ptr IHTMLStyle, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pixelTop(self, v)
+
+proc get_pixelTop*(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pixelTop(self, p)
+
+proc put_pixelLeft*(self: ptr IHTMLStyle, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pixelLeft(self, v)
+
+proc get_pixelLeft*(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pixelLeft(self, p)
+
+proc put_pixelWidth*(self: ptr IHTMLStyle, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pixelWidth(self, v)
+
+proc get_pixelWidth*(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pixelWidth(self, p)
+
+proc put_pixelHeight*(self: ptr IHTMLStyle, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pixelHeight(self, v)
+
+proc get_pixelHeight*(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pixelHeight(self, p)
+
+proc put_posTop*(self: ptr IHTMLStyle, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_posTop(self, v)
+
+proc get_posTop*(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_posTop(self, p)
+
+proc put_posLeft*(self: ptr IHTMLStyle, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_posLeft(self, v)
+
+proc get_posLeft*(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_posLeft(self, p)
+
+proc put_posWidth*(self: ptr IHTMLStyle, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_posWidth(self, v)
+
+proc get_posWidth*(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_posWidth(self, p)
+
+proc put_posHeight*(self: ptr IHTMLStyle, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_posHeight(self, v)
+
+proc get_posHeight*(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_posHeight(self, p)
+
+proc put_cursor*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cursor(self, v)
+
+proc get_cursor*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cursor(self, p)
+
+proc put_clip*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clip(self, v)
+
+proc get_clip*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clip(self, p)
+
+proc put_filter*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_filter(self, v)
+
+proc get_filter*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_filter(self, p)
+
+proc setAttribute*(
+    self: ptr IHTMLStyle, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttribute(self, strAttributeName, AttributeValue, lFlags)
+
+proc getAttribute*(
+    self: ptr IHTMLStyle,
+    strAttributeName: BSTR,
+    lFlags: LONG,
+    AttributeValue: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttribute(self, strAttributeName, lFlags, AttributeValue)
+
+proc removeAttribute*(
+    self: ptr IHTMLStyle,
+    strAttributeName: BSTR,
+    lFlags: LONG,
+    pfSuccess: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAttribute(self, strAttributeName, lFlags, pfSuccess)
+
+proc toString*(self: ptr IHTMLStyle, String: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toString(self, String)
+
+proc put_tableLayout*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_tableLayout(self, v)
+
+proc get_tableLayout*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tableLayout(self, p)
+
+proc put_borderCollapse*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderCollapse(self, v)
+
+proc get_borderCollapse*(
+    self: ptr IHTMLStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderCollapse(self, p)
+
+proc put_direction*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_direction(self, v)
+
+proc get_direction*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_direction(self, p)
+
+proc put_behavior*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_behavior(self, v)
+
+proc get_behavior*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_behavior(self, p)
+
+proc setExpression*(
+    self: ptr IHTMLStyle2, propname: BSTR, expression: BSTR, language: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setExpression(self, propname, expression, language)
+
+proc getExpression*(
+    self: ptr IHTMLStyle2, propname: BSTR, expression: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getExpression(self, propname, expression)
+
+proc removeExpression*(
+    self: ptr IHTMLStyle2, propname: BSTR, pfSuccess: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeExpression(self, propname, pfSuccess)
+
+proc put_position*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_position(self, v)
+
+proc get_position*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_position(self, p)
+
+proc put_unicodeBidi*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_unicodeBidi(self, v)
+
+proc get_unicodeBidi*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_unicodeBidi(self, p)
+
+proc put_bottom*(self: ptr IHTMLStyle2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_bottom(self, v)
+
+proc get_bottom*(self: ptr IHTMLStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bottom(self, p)
+
+proc put_right*(self: ptr IHTMLStyle2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_right(self, v)
+
+proc get_right*(self: ptr IHTMLStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_right(self, p)
+
+proc put_pixelBottom*(self: ptr IHTMLStyle2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pixelBottom(self, v)
+
+proc get_pixelBottom*(self: ptr IHTMLStyle2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pixelBottom(self, p)
+
+proc put_pixelRight*(self: ptr IHTMLStyle2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pixelRight(self, v)
+
+proc get_pixelRight*(self: ptr IHTMLStyle2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pixelRight(self, p)
+
+proc put_posBottom*(self: ptr IHTMLStyle2, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_posBottom(self, v)
+
+proc get_posBottom*(self: ptr IHTMLStyle2, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_posBottom(self, p)
+
+proc put_posRight*(self: ptr IHTMLStyle2, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_posRight(self, v)
+
+proc get_posRight*(self: ptr IHTMLStyle2, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_posRight(self, p)
+
+proc put_imeMode*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_imeMode(self, v)
+
+proc get_imeMode*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_imeMode(self, p)
+
+proc put_rubyAlign*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rubyAlign(self, v)
+
+proc get_rubyAlign*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rubyAlign(self, p)
+
+proc put_rubyPosition*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rubyPosition(self, v)
+
+proc get_rubyPosition*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rubyPosition(self, p)
+
+proc put_rubyOverhang*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rubyOverhang(self, v)
+
+proc get_rubyOverhang*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rubyOverhang(self, p)
+
+proc put_layoutGridChar*(
+    self: ptr IHTMLStyle2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGridChar(self, v)
+
+proc get_layoutGridChar*(
+    self: ptr IHTMLStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridChar(self, p)
+
+proc put_layoutGridLine*(
+    self: ptr IHTMLStyle2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGridLine(self, v)
+
+proc get_layoutGridLine*(
+    self: ptr IHTMLStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridLine(self, p)
+
+proc put_layoutGridMode*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGridMode(self, v)
+
+proc get_layoutGridMode*(
+    self: ptr IHTMLStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridMode(self, p)
+
+proc put_layoutGridType*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGridType(self, v)
+
+proc get_layoutGridType*(
+    self: ptr IHTMLStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridType(self, p)
+
+proc put_layoutGrid*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGrid(self, v)
+
+proc get_layoutGrid*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGrid(self, p)
+
+proc put_wordBreak*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_wordBreak(self, v)
+
+proc get_wordBreak*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wordBreak(self, p)
+
+proc put_lineBreak*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lineBreak(self, v)
+
+proc get_lineBreak*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lineBreak(self, p)
+
+proc put_textJustify*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textJustify(self, v)
+
+proc get_textJustify*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textJustify(self, p)
+
+proc put_textJustifyTrim*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textJustifyTrim(self, v)
+
+proc get_textJustifyTrim*(
+    self: ptr IHTMLStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textJustifyTrim(self, p)
+
+proc put_textKashida*(self: ptr IHTMLStyle2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textKashida(self, v)
+
+proc get_textKashida*(
+    self: ptr IHTMLStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textKashida(self, p)
+
+proc put_textAutospace*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textAutospace(self, v)
+
+proc get_textAutospace*(
+    self: ptr IHTMLStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textAutospace(self, p)
+
+proc put_overflowX*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_overflowX(self, v)
+
+proc get_overflowX*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_overflowX(self, p)
+
+proc put_overflowY*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_overflowY(self, v)
+
+proc get_overflowY*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_overflowY(self, p)
+
+proc put_accelerator*(self: ptr IHTMLStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_accelerator(self, v)
+
+proc get_accelerator*(self: ptr IHTMLStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accelerator(self, p)
+
+proc put_layoutFlow*(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutFlow(self, v)
+
+proc get_layoutFlow*(self: ptr IHTMLStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutFlow(self, p)
+
+proc put_zoom*(self: ptr IHTMLStyle3, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_zoom(self, v)
+
+proc get_zoom*(self: ptr IHTMLStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_zoom(self, p)
+
+proc put_wordWrap*(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_wordWrap(self, v)
+
+proc get_wordWrap*(self: ptr IHTMLStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wordWrap(self, p)
+
+proc put_textUnderlinePosition*(
+    self: ptr IHTMLStyle3, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textUnderlinePosition(self, v)
+
+proc get_textUnderlinePosition*(
+    self: ptr IHTMLStyle3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textUnderlinePosition(self, p)
+
+proc put_scrollbarBaseColor*(
+    self: ptr IHTMLStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarBaseColor(self, v)
+
+proc get_scrollbarBaseColor*(
+    self: ptr IHTMLStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarBaseColor(self, p)
+
+proc put_scrollbarFaceColor*(
+    self: ptr IHTMLStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarFaceColor(self, v)
+
+proc get_scrollbarFaceColor*(
+    self: ptr IHTMLStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarFaceColor(self, p)
+
+proc put_scrollbar3dLightColor*(
+    self: ptr IHTMLStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbar3dLightColor(self, v)
+
+proc get_scrollbar3dLightColor*(
+    self: ptr IHTMLStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbar3dLightColor(self, p)
+
+proc put_scrollbarShadowColor*(
+    self: ptr IHTMLStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarShadowColor(self, v)
+
+proc get_scrollbarShadowColor*(
+    self: ptr IHTMLStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarShadowColor(self, p)
+
+proc put_scrollbarHighlightColor*(
+    self: ptr IHTMLStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarHighlightColor(self, v)
+
+proc get_scrollbarHighlightColor*(
+    self: ptr IHTMLStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarHighlightColor(self, p)
+
+proc put_scrollbarDarkShadowColor*(
+    self: ptr IHTMLStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarDarkShadowColor(self, v)
+
+proc get_scrollbarDarkShadowColor*(
+    self: ptr IHTMLStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarDarkShadowColor(self, p)
+
+proc put_scrollbarArrowColor*(
+    self: ptr IHTMLStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarArrowColor(self, v)
+
+proc get_scrollbarArrowColor*(
+    self: ptr IHTMLStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarArrowColor(self, p)
+
+proc put_scrollbarTrackColor*(
+    self: ptr IHTMLStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarTrackColor(self, v)
+
+proc get_scrollbarTrackColor*(
+    self: ptr IHTMLStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarTrackColor(self, p)
+
+proc put_writingMode*(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_writingMode(self, v)
+
+proc get_writingMode*(self: ptr IHTMLStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_writingMode(self, p)
+
+proc put_textAlignLast*(self: ptr IHTMLStyle3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textAlignLast(self, v)
+
+proc get_textAlignLast*(
+    self: ptr IHTMLStyle3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textAlignLast(self, p)
+
+proc put_textKashidaSpace*(
+    self: ptr IHTMLStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textKashidaSpace(self, v)
+
+proc get_textKashidaSpace*(
+    self: ptr IHTMLStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textKashidaSpace(self, p)
+
+proc put_textOverflow*(self: ptr IHTMLStyle4, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textOverflow(self, v)
+
+proc get_textOverflow*(self: ptr IHTMLStyle4, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textOverflow(self, p)
+
+proc put_minHeight*(self: ptr IHTMLStyle4, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_minHeight(self, v)
+
+proc get_minHeight*(self: ptr IHTMLStyle4, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_minHeight(self, p)
+
+proc put_msInterpolationMode*(
+    self: ptr IHTMLStyle5, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msInterpolationMode(self, v)
+
+proc get_msInterpolationMode*(
+    self: ptr IHTMLStyle5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msInterpolationMode(self, p)
+
+proc put_maxHeight*(self: ptr IHTMLStyle5, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_maxHeight(self, v)
+
+proc get_maxHeight*(self: ptr IHTMLStyle5, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maxHeight(self, p)
+
+proc put_minWidth*(self: ptr IHTMLStyle5, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_minWidth(self, v)
+
+proc get_minWidth*(self: ptr IHTMLStyle5, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_minWidth(self, p)
+
+proc put_maxWidth*(self: ptr IHTMLStyle5, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_maxWidth(self, v)
+
+proc get_maxWidth*(self: ptr IHTMLStyle5, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maxWidth(self, p)
+
+proc put_content*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_content(self, v)
+
+proc get_content*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_content(self, p)
+
+proc put_captionSide*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_captionSide(self, v)
+
+proc get_captionSide*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_captionSide(self, p)
+
+proc put_counterIncrement*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_counterIncrement(self, v)
+
+proc get_counterIncrement*(
+    self: ptr IHTMLStyle6, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_counterIncrement(self, p)
+
+proc put_counterReset*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_counterReset(self, v)
+
+proc get_counterReset*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_counterReset(self, p)
+
+proc put_outline*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_outline(self, v)
+
+proc get_outline*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outline(self, p)
+
+proc put_outlineWidth*(self: ptr IHTMLStyle6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_outlineWidth(self, v)
+
+proc get_outlineWidth*(
+    self: ptr IHTMLStyle6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outlineWidth(self, p)
+
+proc put_outlineStyle*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_outlineStyle(self, v)
+
+proc get_outlineStyle*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outlineStyle(self, p)
+
+proc put_outlineColor*(self: ptr IHTMLStyle6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_outlineColor(self, v)
+
+proc get_outlineColor*(
+    self: ptr IHTMLStyle6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outlineColor(self, p)
+
+proc put_boxSizing*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_boxSizing(self, v)
+
+proc get_boxSizing*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_boxSizing(self, p)
+
+proc put_borderSpacing*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderSpacing(self, v)
+
+proc get_borderSpacing*(
+    self: ptr IHTMLStyle6, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderSpacing(self, p)
+
+proc put_orphans*(self: ptr IHTMLStyle6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_orphans(self, v)
+
+proc get_orphans*(self: ptr IHTMLStyle6, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_orphans(self, p)
+
+proc put_widows*(self: ptr IHTMLStyle6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_widows(self, v)
+
+proc get_widows*(self: ptr IHTMLStyle6, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_widows(self, p)
+
+proc put_pageBreakInside*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pageBreakInside(self, v)
+
+proc get_pageBreakInside*(
+    self: ptr IHTMLStyle6, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageBreakInside(self, p)
+
+proc put_emptyCells*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_emptyCells(self, v)
+
+proc get_emptyCells*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_emptyCells(self, p)
+
+proc put_msBlockProgression*(
+    self: ptr IHTMLStyle6, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msBlockProgression(self, v)
+
+proc get_msBlockProgression*(
+    self: ptr IHTMLStyle6, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msBlockProgression(self, p)
+
+proc put_quotes*(self: ptr IHTMLStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_quotes(self, v)
+
+proc get_quotes*(self: ptr IHTMLStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_quotes(self, p)
+
+proc put_fontFamily*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontFamily(self, v)
+
+proc get_fontFamily*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontFamily(self, p)
+
+proc put_fontStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontStyle(self, v)
+
+proc get_fontStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontStyle(self, p)
+
+proc put_fontVariant*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontVariant(self, v)
+
+proc get_fontVariant*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontVariant(self, p)
+
+proc put_fontWeight*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontWeight(self, v)
+
+proc get_fontWeight*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontWeight(self, p)
+
+proc put_fontSize*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontSize(self, v)
+
+proc get_fontSize*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontSize(self, p)
+
+proc put_font*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_font(self, v)
+
+proc get_font*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_font(self, p)
+
+proc put_color*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_color(self, v)
+
+proc get_color*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_color(self, p)
+
+proc put_background*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_background(self, v)
+
+proc get_background*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_background(self, p)
+
+proc put_backgroundColor*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundColor(self, v)
+
+proc get_backgroundColor*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundColor(self, p)
+
+proc put_backgroundImage*(
+    self: ptr IHTMLRuleStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundImage(self, v)
+
+proc get_backgroundImage*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundImage(self, p)
+
+proc put_backgroundRepeat*(
+    self: ptr IHTMLRuleStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundRepeat(self, v)
+
+proc get_backgroundRepeat*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundRepeat(self, p)
+
+proc put_backgroundAttachment*(
+    self: ptr IHTMLRuleStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundAttachment(self, v)
+
+proc get_backgroundAttachment*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundAttachment(self, p)
+
+proc put_backgroundPosition*(
+    self: ptr IHTMLRuleStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundPosition(self, v)
+
+proc get_backgroundPosition*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundPosition(self, p)
+
+proc put_backgroundPositionX*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundPositionX(self, v)
+
+proc get_backgroundPositionX*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundPositionX(self, p)
+
+proc put_backgroundPositionY*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_backgroundPositionY(self, v)
+
+proc get_backgroundPositionY*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundPositionY(self, p)
+
+proc put_wordSpacing*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_wordSpacing(self, v)
+
+proc get_wordSpacing*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wordSpacing(self, p)
+
+proc put_letterSpacing*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_letterSpacing(self, v)
+
+proc get_letterSpacing*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_letterSpacing(self, p)
+
+proc put_textDecoration*(
+    self: ptr IHTMLRuleStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecoration(self, v)
+
+proc get_textDecoration*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecoration(self, p)
+
+proc put_textDecorationNone*(
+    self: ptr IHTMLRuleStyle, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecorationNone(self, v)
+
+proc get_textDecorationNone*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecorationNone(self, p)
+
+proc put_textDecorationUnderline*(
+    self: ptr IHTMLRuleStyle, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecorationUnderline(self, v)
+
+proc get_textDecorationUnderline*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecorationUnderline(self, p)
+
+proc put_textDecorationOverline*(
+    self: ptr IHTMLRuleStyle, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecorationOverline(self, v)
+
+proc get_textDecorationOverline*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecorationOverline(self, p)
+
+proc put_textDecorationLineThrough*(
+    self: ptr IHTMLRuleStyle, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecorationLineThrough(self, v)
+
+proc get_textDecorationLineThrough*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecorationLineThrough(self, p)
+
+proc put_textDecorationBlink*(
+    self: ptr IHTMLRuleStyle, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecorationBlink(self, v)
+
+proc get_textDecorationBlink*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecorationBlink(self, p)
+
+proc put_verticalAlign*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_verticalAlign(self, v)
+
+proc get_verticalAlign*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_verticalAlign(self, p)
+
+proc put_textTransform*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textTransform(self, v)
+
+proc get_textTransform*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textTransform(self, p)
+
+proc put_textAlign*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textAlign(self, v)
+
+proc get_textAlign*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textAlign(self, p)
+
+proc put_textIndent*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textIndent(self, v)
+
+proc get_textIndent*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textIndent(self, p)
+
+proc put_lineHeight*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lineHeight(self, v)
+
+proc get_lineHeight*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lineHeight(self, p)
+
+proc put_marginTop*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginTop(self, v)
+
+proc get_marginTop*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginTop(self, p)
+
+proc put_marginRight*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginRight(self, v)
+
+proc get_marginRight*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginRight(self, p)
+
+proc put_marginBottom*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginBottom(self, v)
+
+proc get_marginBottom*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginBottom(self, p)
+
+proc put_marginLeft*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginLeft(self, v)
+
+proc get_marginLeft*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginLeft(self, p)
+
+proc put_margin*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_margin(self, v)
+
+proc get_margin*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_margin(self, p)
+
+proc put_paddingTop*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_paddingTop(self, v)
+
+proc get_paddingTop*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingTop(self, p)
+
+proc put_paddingRight*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_paddingRight(self, v)
+
+proc get_paddingRight*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingRight(self, p)
+
+proc put_paddingBottom*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_paddingBottom(self, v)
+
+proc get_paddingBottom*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingBottom(self, p)
+
+proc put_paddingLeft*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_paddingLeft(self, v)
+
+proc get_paddingLeft*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingLeft(self, p)
+
+proc put_padding*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_padding(self, v)
+
+proc get_padding*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_padding(self, p)
+
+proc put_border*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_border(self, v)
+
+proc get_border*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_border(self, p)
+
+proc put_borderTop*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderTop(self, v)
+
+proc get_borderTop*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTop(self, p)
+
+proc put_borderRight*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderRight(self, v)
+
+proc get_borderRight*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRight(self, p)
+
+proc put_borderBottom*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderBottom(self, v)
+
+proc get_borderBottom*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottom(self, p)
+
+proc put_borderLeft*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderLeft(self, v)
+
+proc get_borderLeft*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeft(self, p)
+
+proc put_borderColor*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderColor(self, v)
+
+proc get_borderColor*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColor(self, p)
+
+proc put_borderTopColor*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderTopColor(self, v)
+
+proc get_borderTopColor*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTopColor(self, p)
+
+proc put_borderRightColor*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderRightColor(self, v)
+
+proc get_borderRightColor*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRightColor(self, p)
+
+proc put_borderBottomColor*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderBottomColor(self, v)
+
+proc get_borderBottomColor*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottomColor(self, p)
+
+proc put_borderLeftColor*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderLeftColor(self, v)
+
+proc get_borderLeftColor*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeftColor(self, p)
+
+proc put_borderWidth*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderWidth(self, v)
+
+proc get_borderWidth*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderWidth(self, p)
+
+proc put_borderTopWidth*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderTopWidth(self, v)
+
+proc get_borderTopWidth*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTopWidth(self, p)
+
+proc put_borderRightWidth*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderRightWidth(self, v)
+
+proc get_borderRightWidth*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRightWidth(self, p)
+
+proc put_borderBottomWidth*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderBottomWidth(self, v)
+
+proc get_borderBottomWidth*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottomWidth(self, p)
+
+proc put_borderLeftWidth*(
+    self: ptr IHTMLRuleStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderLeftWidth(self, v)
+
+proc get_borderLeftWidth*(
+    self: ptr IHTMLRuleStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeftWidth(self, p)
+
+proc put_borderStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderStyle(self, v)
+
+proc get_borderStyle*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderStyle(self, p)
+
+proc put_borderTopStyle*(
+    self: ptr IHTMLRuleStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderTopStyle(self, v)
+
+proc get_borderTopStyle*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTopStyle(self, p)
+
+proc put_borderRightStyle*(
+    self: ptr IHTMLRuleStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderRightStyle(self, v)
+
+proc get_borderRightStyle*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRightStyle(self, p)
+
+proc put_borderBottomStyle*(
+    self: ptr IHTMLRuleStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderBottomStyle(self, v)
+
+proc get_borderBottomStyle*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottomStyle(self, p)
+
+proc put_borderLeftStyle*(
+    self: ptr IHTMLRuleStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderLeftStyle(self, v)
+
+proc get_borderLeftStyle*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeftStyle(self, p)
+
+proc put_width*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_height*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_styleFloat*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_styleFloat(self, v)
+
+proc get_styleFloat*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_styleFloat(self, p)
+
+proc put_clear*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clear(self, v)
+
+proc get_clear*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clear(self, p)
+
+proc put_display*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_display(self, v)
+
+proc get_display*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_display(self, p)
+
+proc put_visibility*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_visibility(self, v)
+
+proc get_visibility*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_visibility(self, p)
+
+proc put_listStyleType*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_listStyleType(self, v)
+
+proc get_listStyleType*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStyleType(self, p)
+
+proc put_listStylePosition*(
+    self: ptr IHTMLRuleStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_listStylePosition(self, v)
+
+proc get_listStylePosition*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStylePosition(self, p)
+
+proc put_listStyleImage*(
+    self: ptr IHTMLRuleStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_listStyleImage(self, v)
+
+proc get_listStyleImage*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStyleImage(self, p)
+
+proc put_listStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_listStyle(self, v)
+
+proc get_listStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStyle(self, p)
+
+proc put_whiteSpace*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_whiteSpace(self, v)
+
+proc get_whiteSpace*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_whiteSpace(self, p)
+
+proc put_top*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_top(self, v)
+
+proc get_top*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_top(self, p)
+
+proc put_left*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_left(self, v)
+
+proc get_left*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_left(self, p)
+
+proc get_position*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_position(self, p)
+
+proc put_zIndex*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_zIndex(self, v)
+
+proc get_zIndex*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_zIndex(self, p)
+
+proc put_overflow*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_overflow(self, v)
+
+proc get_overflow*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_overflow(self, p)
+
+proc put_pageBreakBefore*(
+    self: ptr IHTMLRuleStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pageBreakBefore(self, v)
+
+proc get_pageBreakBefore*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageBreakBefore(self, p)
+
+proc put_pageBreakAfter*(
+    self: ptr IHTMLRuleStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pageBreakAfter(self, v)
+
+proc get_pageBreakAfter*(
+    self: ptr IHTMLRuleStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageBreakAfter(self, p)
+
+proc put_cssText*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cssText(self, v)
+
+proc get_cssText*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cssText(self, p)
+
+proc put_cursor*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cursor(self, v)
+
+proc get_cursor*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cursor(self, p)
+
+proc put_clip*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clip(self, v)
+
+proc get_clip*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clip(self, p)
+
+proc put_filter*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_filter(self, v)
+
+proc get_filter*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_filter(self, p)
+
+proc setAttribute*(
+    self: ptr IHTMLRuleStyle,
+    strAttributeName: BSTR,
+    AttributeValue: VARIANT,
+    lFlags: LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttribute(self, strAttributeName, AttributeValue, lFlags)
+
+proc getAttribute*(
+    self: ptr IHTMLRuleStyle,
+    strAttributeName: BSTR,
+    lFlags: LONG,
+    AttributeValue: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttribute(self, strAttributeName, lFlags, AttributeValue)
+
+proc removeAttribute*(
+    self: ptr IHTMLRuleStyle,
+    strAttributeName: BSTR,
+    lFlags: LONG,
+    pfSuccess: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAttribute(self, strAttributeName, lFlags, pfSuccess)
+
+proc put_tableLayout*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_tableLayout(self, v)
+
+proc get_tableLayout*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tableLayout(self, p)
+
+proc put_borderCollapse*(
+    self: ptr IHTMLRuleStyle2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderCollapse(self, v)
+
+proc get_borderCollapse*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderCollapse(self, p)
+
+proc put_direction*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_direction(self, v)
+
+proc get_direction*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_direction(self, p)
+
+proc put_behavior*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_behavior(self, v)
+
+proc get_behavior*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_behavior(self, p)
+
+proc put_position*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_position(self, v)
+
+proc get_position*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_position(self, p)
+
+proc put_unicodeBidi*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_unicodeBidi(self, v)
+
+proc get_unicodeBidi*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_unicodeBidi(self, p)
+
+proc put_bottom*(self: ptr IHTMLRuleStyle2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_bottom(self, v)
+
+proc get_bottom*(
+    self: ptr IHTMLRuleStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bottom(self, p)
+
+proc put_right*(self: ptr IHTMLRuleStyle2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_right(self, v)
+
+proc get_right*(self: ptr IHTMLRuleStyle2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_right(self, p)
+
+proc put_pixelBottom*(self: ptr IHTMLRuleStyle2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pixelBottom(self, v)
+
+proc get_pixelBottom*(
+    self: ptr IHTMLRuleStyle2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pixelBottom(self, p)
+
+proc put_pixelRight*(self: ptr IHTMLRuleStyle2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pixelRight(self, v)
+
+proc get_pixelRight*(
+    self: ptr IHTMLRuleStyle2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pixelRight(self, p)
+
+proc put_posBottom*(self: ptr IHTMLRuleStyle2, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_posBottom(self, v)
+
+proc get_posBottom*(
+    self: ptr IHTMLRuleStyle2, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_posBottom(self, p)
+
+proc put_posRight*(self: ptr IHTMLRuleStyle2, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_posRight(self, v)
+
+proc get_posRight*(
+    self: ptr IHTMLRuleStyle2, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_posRight(self, p)
+
+proc put_imeMode*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_imeMode(self, v)
+
+proc get_imeMode*(self: ptr IHTMLRuleStyle2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_imeMode(self, p)
+
+proc put_rubyAlign*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rubyAlign(self, v)
+
+proc get_rubyAlign*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rubyAlign(self, p)
+
+proc put_rubyPosition*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rubyPosition(self, v)
+
+proc get_rubyPosition*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rubyPosition(self, p)
+
+proc put_rubyOverhang*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rubyOverhang(self, v)
+
+proc get_rubyOverhang*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rubyOverhang(self, p)
+
+proc put_layoutGridChar*(
+    self: ptr IHTMLRuleStyle2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGridChar(self, v)
+
+proc get_layoutGridChar*(
+    self: ptr IHTMLRuleStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridChar(self, p)
+
+proc put_layoutGridLine*(
+    self: ptr IHTMLRuleStyle2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGridLine(self, v)
+
+proc get_layoutGridLine*(
+    self: ptr IHTMLRuleStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridLine(self, p)
+
+proc put_layoutGridMode*(
+    self: ptr IHTMLRuleStyle2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGridMode(self, v)
+
+proc get_layoutGridMode*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridMode(self, p)
+
+proc put_layoutGridType*(
+    self: ptr IHTMLRuleStyle2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGridType(self, v)
+
+proc get_layoutGridType*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridType(self, p)
+
+proc put_layoutGrid*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutGrid(self, v)
+
+proc get_layoutGrid*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGrid(self, p)
+
+proc put_textAutospace*(
+    self: ptr IHTMLRuleStyle2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textAutospace(self, v)
+
+proc get_textAutospace*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textAutospace(self, p)
+
+proc put_wordBreak*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_wordBreak(self, v)
+
+proc get_wordBreak*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wordBreak(self, p)
+
+proc put_lineBreak*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lineBreak(self, v)
+
+proc get_lineBreak*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lineBreak(self, p)
+
+proc put_textJustify*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textJustify(self, v)
+
+proc get_textJustify*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textJustify(self, p)
+
+proc put_textJustifyTrim*(
+    self: ptr IHTMLRuleStyle2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textJustifyTrim(self, v)
+
+proc get_textJustifyTrim*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textJustifyTrim(self, p)
+
+proc put_textKashida*(
+    self: ptr IHTMLRuleStyle2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textKashida(self, v)
+
+proc get_textKashida*(
+    self: ptr IHTMLRuleStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textKashida(self, p)
+
+proc put_overflowX*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_overflowX(self, v)
+
+proc get_overflowX*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_overflowX(self, p)
+
+proc put_overflowY*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_overflowY(self, v)
+
+proc get_overflowY*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_overflowY(self, p)
+
+proc put_accelerator*(self: ptr IHTMLRuleStyle2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_accelerator(self, v)
+
+proc get_accelerator*(
+    self: ptr IHTMLRuleStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accelerator(self, p)
+
+proc put_layoutFlow*(self: ptr IHTMLRuleStyle3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_layoutFlow(self, v)
+
+proc get_layoutFlow*(
+    self: ptr IHTMLRuleStyle3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutFlow(self, p)
+
+proc put_zoom*(self: ptr IHTMLRuleStyle3, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_zoom(self, v)
+
+proc get_zoom*(self: ptr IHTMLRuleStyle3, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_zoom(self, p)
+
+proc put_wordWrap*(self: ptr IHTMLRuleStyle3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_wordWrap(self, v)
+
+proc get_wordWrap*(self: ptr IHTMLRuleStyle3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wordWrap(self, p)
+
+proc put_textUnderlinePosition*(
+    self: ptr IHTMLRuleStyle3, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textUnderlinePosition(self, v)
+
+proc get_textUnderlinePosition*(
+    self: ptr IHTMLRuleStyle3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textUnderlinePosition(self, p)
+
+proc put_scrollbarBaseColor*(
+    self: ptr IHTMLRuleStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarBaseColor(self, v)
+
+proc get_scrollbarBaseColor*(
+    self: ptr IHTMLRuleStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarBaseColor(self, p)
+
+proc put_scrollbarFaceColor*(
+    self: ptr IHTMLRuleStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarFaceColor(self, v)
+
+proc get_scrollbarFaceColor*(
+    self: ptr IHTMLRuleStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarFaceColor(self, p)
+
+proc put_scrollbar3dLightColor*(
+    self: ptr IHTMLRuleStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbar3dLightColor(self, v)
+
+proc get_scrollbar3dLightColor*(
+    self: ptr IHTMLRuleStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbar3dLightColor(self, p)
+
+proc put_scrollbarShadowColor*(
+    self: ptr IHTMLRuleStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarShadowColor(self, v)
+
+proc get_scrollbarShadowColor*(
+    self: ptr IHTMLRuleStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarShadowColor(self, p)
+
+proc put_scrollbarHighlightColor*(
+    self: ptr IHTMLRuleStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarHighlightColor(self, v)
+
+proc get_scrollbarHighlightColor*(
+    self: ptr IHTMLRuleStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarHighlightColor(self, p)
+
+proc put_scrollbarDarkShadowColor*(
+    self: ptr IHTMLRuleStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarDarkShadowColor(self, v)
+
+proc get_scrollbarDarkShadowColor*(
+    self: ptr IHTMLRuleStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarDarkShadowColor(self, p)
+
+proc put_scrollbarArrowColor*(
+    self: ptr IHTMLRuleStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarArrowColor(self, v)
+
+proc get_scrollbarArrowColor*(
+    self: ptr IHTMLRuleStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarArrowColor(self, p)
+
+proc put_scrollbarTrackColor*(
+    self: ptr IHTMLRuleStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbarTrackColor(self, v)
+
+proc get_scrollbarTrackColor*(
+    self: ptr IHTMLRuleStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarTrackColor(self, p)
+
+proc put_writingMode*(self: ptr IHTMLRuleStyle3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_writingMode(self, v)
+
+proc get_writingMode*(
+    self: ptr IHTMLRuleStyle3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_writingMode(self, p)
+
+proc put_textAlignLast*(
+    self: ptr IHTMLRuleStyle3, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textAlignLast(self, v)
+
+proc get_textAlignLast*(
+    self: ptr IHTMLRuleStyle3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textAlignLast(self, p)
+
+proc put_textKashidaSpace*(
+    self: ptr IHTMLRuleStyle3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textKashidaSpace(self, v)
+
+proc get_textKashidaSpace*(
+    self: ptr IHTMLRuleStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textKashidaSpace(self, p)
+
+proc put_textOverflow*(self: ptr IHTMLRuleStyle4, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textOverflow(self, v)
+
+proc get_textOverflow*(
+    self: ptr IHTMLRuleStyle4, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textOverflow(self, p)
+
+proc put_minHeight*(self: ptr IHTMLRuleStyle4, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_minHeight(self, v)
+
+proc get_minHeight*(
+    self: ptr IHTMLRuleStyle4, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_minHeight(self, p)
+
+proc put_msInterpolationMode*(
+    self: ptr IHTMLRuleStyle5, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msInterpolationMode(self, v)
+
+proc get_msInterpolationMode*(
+    self: ptr IHTMLRuleStyle5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msInterpolationMode(self, p)
+
+proc put_maxHeight*(self: ptr IHTMLRuleStyle5, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_maxHeight(self, v)
+
+proc get_maxHeight*(
+    self: ptr IHTMLRuleStyle5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maxHeight(self, p)
+
+proc put_minWidth*(self: ptr IHTMLRuleStyle5, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_minWidth(self, v)
+
+proc get_minWidth*(
+    self: ptr IHTMLRuleStyle5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_minWidth(self, p)
+
+proc put_maxWidth*(self: ptr IHTMLRuleStyle5, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_maxWidth(self, v)
+
+proc get_maxWidth*(
+    self: ptr IHTMLRuleStyle5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maxWidth(self, p)
+
+proc put_content*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_content(self, v)
+
+proc get_content*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_content(self, p)
+
+proc put_captionSide*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_captionSide(self, v)
+
+proc get_captionSide*(
+    self: ptr IHTMLRuleStyle6, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_captionSide(self, p)
+
+proc put_counterIncrement*(
+    self: ptr IHTMLRuleStyle6, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_counterIncrement(self, v)
+
+proc get_counterIncrement*(
+    self: ptr IHTMLRuleStyle6, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_counterIncrement(self, p)
+
+proc put_counterReset*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_counterReset(self, v)
+
+proc get_counterReset*(
+    self: ptr IHTMLRuleStyle6, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_counterReset(self, p)
+
+proc put_outline*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_outline(self, v)
+
+proc get_outline*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outline(self, p)
+
+proc put_outlineWidth*(
+    self: ptr IHTMLRuleStyle6, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_outlineWidth(self, v)
+
+proc get_outlineWidth*(
+    self: ptr IHTMLRuleStyle6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outlineWidth(self, p)
+
+proc put_outlineStyle*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_outlineStyle(self, v)
+
+proc get_outlineStyle*(
+    self: ptr IHTMLRuleStyle6, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outlineStyle(self, p)
+
+proc put_outlineColor*(
+    self: ptr IHTMLRuleStyle6, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_outlineColor(self, v)
+
+proc get_outlineColor*(
+    self: ptr IHTMLRuleStyle6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outlineColor(self, p)
+
+proc put_boxSizing*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_boxSizing(self, v)
+
+proc get_boxSizing*(
+    self: ptr IHTMLRuleStyle6, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_boxSizing(self, p)
+
+proc put_borderSpacing*(
+    self: ptr IHTMLRuleStyle6, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderSpacing(self, v)
+
+proc get_borderSpacing*(
+    self: ptr IHTMLRuleStyle6, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderSpacing(self, p)
+
+proc put_orphans*(self: ptr IHTMLRuleStyle6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_orphans(self, v)
+
+proc get_orphans*(
+    self: ptr IHTMLRuleStyle6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_orphans(self, p)
+
+proc put_widows*(self: ptr IHTMLRuleStyle6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_widows(self, v)
+
+proc get_widows*(
+    self: ptr IHTMLRuleStyle6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_widows(self, p)
+
+proc put_pageBreakInside*(
+    self: ptr IHTMLRuleStyle6, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pageBreakInside(self, v)
+
+proc get_pageBreakInside*(
+    self: ptr IHTMLRuleStyle6, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageBreakInside(self, p)
+
+proc put_emptyCells*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_emptyCells(self, v)
+
+proc get_emptyCells*(
+    self: ptr IHTMLRuleStyle6, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_emptyCells(self, p)
+
+proc put_msBlockProgression*(
+    self: ptr IHTMLRuleStyle6, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msBlockProgression(self, v)
+
+proc get_msBlockProgression*(
+    self: ptr IHTMLRuleStyle6, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msBlockProgression(self, p)
+
+proc put_quotes*(self: ptr IHTMLRuleStyle6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_quotes(self, v)
+
+proc get_quotes*(self: ptr IHTMLRuleStyle6, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_quotes(self, p)
+
+proc get_type*(self: ptr IHTMLCSSRule, p: ptr USHORT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_cssText*(self: ptr IHTMLCSSRule, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cssText(self, v)
+
+proc get_cssText*(self: ptr IHTMLCSSRule, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cssText(self, p)
+
+proc get_parentRule*(
+    self: ptr IHTMLCSSRule, p: ptr ptr IHTMLCSSRule
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parentRule(self, p)
+
+proc get_parentStyleSheet*(
+    self: ptr IHTMLCSSRule, p: ptr ptr IHTMLStyleSheet
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parentStyleSheet(self, p)
+
+proc get_href*(self: ptr IHTMLCSSImportRule, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc put_media*(self: ptr IHTMLCSSImportRule, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_media(self, v)
+
+proc get_media*(
+    self: ptr IHTMLCSSImportRule, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_media(self, p)
+
+proc get_styleSheet*(
+    self: ptr IHTMLCSSImportRule, p: ptr ptr IHTMLStyleSheet
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_styleSheet(self, p)
+
+proc put_media*(self: ptr IHTMLCSSMediaRule, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_media(self, v)
+
+proc get_media*(
+    self: ptr IHTMLCSSMediaRule, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_media(self, p)
+
+proc get_cssRules*(
+    self: ptr IHTMLCSSMediaRule, p: ptr ptr IHTMLStyleSheetRulesCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cssRules(self, p)
+
+proc insertRule*(
+    self: ptr IHTMLCSSMediaRule, bstrRule: BSTR, lIndex: LONG, plNewIndex: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertRule(self, bstrRule, lIndex, plNewIndex)
+
+proc deleteRule*(
+    self: ptr IHTMLCSSMediaRule, lIndex: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteRule(self, lIndex)
+
+proc put_mediaText*(self: ptr IHTMLCSSMediaList, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_mediaText(self, v)
+
+proc get_mediaText*(
+    self: ptr IHTMLCSSMediaList, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_mediaText(self, p)
+
+proc get_length*(self: ptr IHTMLCSSMediaList, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc item*(
+    self: ptr IHTMLCSSMediaList, index: LONG, pbstrMedium: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, pbstrMedium)
+
+proc appendMedium*(
+    self: ptr IHTMLCSSMediaList, bstrMedium: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendMedium(self, bstrMedium)
+
+proc deleteMedium*(
+    self: ptr IHTMLCSSMediaList, bstrMedium: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteMedium(self, bstrMedium)
+
+proc get_namespaceURI*(
+    self: ptr IHTMLCSSNamespaceRule, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_namespaceURI(self, p)
+
+proc get_prefix*(
+    self: ptr IHTMLCSSNamespaceRule, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_prefix(self, p)
+
+proc put_keyText*(
+    self: ptr IHTMLMSCSSKeyframeRule, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_keyText(self, v)
+
+proc get_keyText*(
+    self: ptr IHTMLMSCSSKeyframeRule, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_keyText(self, p)
+
+proc get_style*(
+    self: ptr IHTMLMSCSSKeyframeRule, p: ptr ptr IHTMLRuleStyle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_style(self, p)
+
+proc put_name*(self: ptr IHTMLMSCSSKeyframesRule, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(
+    self: ptr IHTMLMSCSSKeyframesRule, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc get_cssRules*(
+    self: ptr IHTMLMSCSSKeyframesRule, p: ptr ptr IHTMLStyleSheetRulesCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cssRules(self, p)
+
+proc appendRule*(
+    self: ptr IHTMLMSCSSKeyframesRule, bstrRule: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendRule(self, bstrRule)
+
+proc deleteRule*(
+    self: ptr IHTMLMSCSSKeyframesRule, bstrKey: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteRule(self, bstrKey)
+
+proc findRule*(
+    self: ptr IHTMLMSCSSKeyframesRule,
+    bstrKey: BSTR,
+    ppMSKeyframeRule: ptr ptr IHTMLMSCSSKeyframeRule,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.findRule(self, bstrKey, ppMSKeyframeRule)
+
+proc put_textLineThroughStyle*(
+    self: ptr IHTMLRenderStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textLineThroughStyle(self, v)
+
+proc get_textLineThroughStyle*(
+    self: ptr IHTMLRenderStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textLineThroughStyle(self, p)
+
+proc put_textUnderlineStyle*(
+    self: ptr IHTMLRenderStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textUnderlineStyle(self, v)
+
+proc get_textUnderlineStyle*(
+    self: ptr IHTMLRenderStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textUnderlineStyle(self, p)
+
+proc put_textEffect*(self: ptr IHTMLRenderStyle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textEffect(self, v)
+
+proc get_textEffect*(
+    self: ptr IHTMLRenderStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textEffect(self, p)
+
+proc put_textColor*(
+    self: ptr IHTMLRenderStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textColor(self, v)
+
+proc get_textColor*(
+    self: ptr IHTMLRenderStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textColor(self, p)
+
+proc put_textBackgroundColor*(
+    self: ptr IHTMLRenderStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textBackgroundColor(self, v)
+
+proc get_textBackgroundColor*(
+    self: ptr IHTMLRenderStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textBackgroundColor(self, p)
+
+proc put_textDecorationColor*(
+    self: ptr IHTMLRenderStyle, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecorationColor(self, v)
+
+proc get_textDecorationColor*(
+    self: ptr IHTMLRenderStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecorationColor(self, p)
+
+proc put_renderingPriority*(
+    self: ptr IHTMLRenderStyle, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_renderingPriority(self, v)
+
+proc get_renderingPriority*(
+    self: ptr IHTMLRenderStyle, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_renderingPriority(self, p)
+
+proc put_defaultTextSelection*(
+    self: ptr IHTMLRenderStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_defaultTextSelection(self, v)
+
+proc get_defaultTextSelection*(
+    self: ptr IHTMLRenderStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defaultTextSelection(self, p)
+
+proc put_textDecoration*(
+    self: ptr IHTMLRenderStyle, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textDecoration(self, v)
+
+proc get_textDecoration*(
+    self: ptr IHTMLRenderStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecoration(self, p)
+
+proc get_position*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_position(self, p)
+
+proc get_styleFloat*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_styleFloat(self, p)
+
+proc get_color*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_color(self, p)
+
+proc get_backgroundColor*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundColor(self, p)
+
+proc get_fontFamily*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontFamily(self, p)
+
+proc get_fontStyle*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontStyle(self, p)
+
+proc get_fontVariant*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontVariant(self, p)
+
+proc get_fontWeight*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontWeight(self, p)
+
+proc get_fontSize*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontSize(self, p)
+
+proc get_backgroundImage*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundImage(self, p)
+
+proc get_backgroundPositionX*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundPositionX(self, p)
+
+proc get_backgroundPositionY*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundPositionY(self, p)
+
+proc get_backgroundRepeat*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundRepeat(self, p)
+
+proc get_borderLeftColor*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeftColor(self, p)
+
+proc get_borderTopColor*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTopColor(self, p)
+
+proc get_borderRightColor*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRightColor(self, p)
+
+proc get_borderBottomColor*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottomColor(self, p)
+
+proc get_borderTopStyle*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTopStyle(self, p)
+
+proc get_borderRightStyle*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRightStyle(self, p)
+
+proc get_borderBottomStyle*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottomStyle(self, p)
+
+proc get_borderLeftStyle*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeftStyle(self, p)
+
+proc get_borderTopWidth*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderTopWidth(self, p)
+
+proc get_borderRightWidth*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderRightWidth(self, p)
+
+proc get_borderBottomWidth*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderBottomWidth(self, p)
+
+proc get_borderLeftWidth*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderLeftWidth(self, p)
+
+proc get_left*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_left(self, p)
+
+proc get_top*(self: ptr IHTMLCurrentStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_top(self, p)
+
+proc get_width*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc get_height*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc get_paddingLeft*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingLeft(self, p)
+
+proc get_paddingTop*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingTop(self, p)
+
+proc get_paddingRight*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingRight(self, p)
+
+proc get_paddingBottom*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paddingBottom(self, p)
+
+proc get_textAlign*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textAlign(self, p)
+
+proc get_textDecoration*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDecoration(self, p)
+
+proc get_display*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_display(self, p)
+
+proc get_visibility*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_visibility(self, p)
+
+proc get_zIndex*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_zIndex(self, p)
+
+proc get_letterSpacing*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_letterSpacing(self, p)
+
+proc get_lineHeight*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lineHeight(self, p)
+
+proc get_textIndent*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textIndent(self, p)
+
+proc get_verticalAlign*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_verticalAlign(self, p)
+
+proc get_backgroundAttachment*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundAttachment(self, p)
+
+proc get_marginTop*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginTop(self, p)
+
+proc get_marginRight*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginRight(self, p)
+
+proc get_marginBottom*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginBottom(self, p)
+
+proc get_marginLeft*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginLeft(self, p)
+
+proc get_clear*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clear(self, p)
+
+proc get_listStyleType*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStyleType(self, p)
+
+proc get_listStylePosition*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStylePosition(self, p)
+
+proc get_listStyleImage*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_listStyleImage(self, p)
+
+proc get_clipTop*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clipTop(self, p)
+
+proc get_clipRight*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clipRight(self, p)
+
+proc get_clipBottom*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clipBottom(self, p)
+
+proc get_clipLeft*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clipLeft(self, p)
+
+proc get_overflow*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_overflow(self, p)
+
+proc get_pageBreakBefore*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageBreakBefore(self, p)
+
+proc get_pageBreakAfter*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageBreakAfter(self, p)
+
+proc get_cursor*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cursor(self, p)
+
+proc get_tableLayout*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tableLayout(self, p)
+
+proc get_borderCollapse*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderCollapse(self, p)
+
+proc get_direction*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_direction(self, p)
+
+proc get_behavior*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_behavior(self, p)
+
+proc getAttribute*(
+    self: ptr IHTMLCurrentStyle,
+    strAttributeName: BSTR,
+    lFlags: LONG,
+    AttributeValue: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttribute(self, strAttributeName, lFlags, AttributeValue)
+
+proc get_unicodeBidi*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_unicodeBidi(self, p)
+
+proc get_right*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_right(self, p)
+
+proc get_bottom*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bottom(self, p)
+
+proc get_imeMode*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_imeMode(self, p)
+
+proc get_rubyAlign*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rubyAlign(self, p)
+
+proc get_rubyPosition*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rubyPosition(self, p)
+
+proc get_rubyOverhang*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rubyOverhang(self, p)
+
+proc get_textAutospace*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textAutospace(self, p)
+
+proc get_lineBreak*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lineBreak(self, p)
+
+proc get_wordBreak*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wordBreak(self, p)
+
+proc get_textJustify*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textJustify(self, p)
+
+proc get_textJustifyTrim*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textJustifyTrim(self, p)
+
+proc get_textKashida*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textKashida(self, p)
+
+proc get_blockDirection*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_blockDirection(self, p)
+
+proc get_layoutGridChar*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridChar(self, p)
+
+proc get_layoutGridLine*(
+    self: ptr IHTMLCurrentStyle, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridLine(self, p)
+
+proc get_layoutGridMode*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridMode(self, p)
+
+proc get_layoutGridType*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutGridType(self, p)
+
+proc get_borderStyle*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderStyle(self, p)
+
+proc get_borderColor*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColor(self, p)
+
+proc get_borderWidth*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderWidth(self, p)
+
+proc get_padding*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_padding(self, p)
+
+proc get_margin*(self: ptr IHTMLCurrentStyle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_margin(self, p)
+
+proc get_accelerator*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accelerator(self, p)
+
+proc get_overflowX*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_overflowX(self, p)
+
+proc get_overflowY*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_overflowY(self, p)
+
+proc get_textTransform*(
+    self: ptr IHTMLCurrentStyle, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textTransform(self, p)
+
+proc get_layoutFlow*(
+    self: ptr IHTMLCurrentStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layoutFlow(self, p)
+
+proc get_wordWrap*(
+    self: ptr IHTMLCurrentStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wordWrap(self, p)
+
+proc get_textUnderlinePosition*(
+    self: ptr IHTMLCurrentStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textUnderlinePosition(self, p)
+
+proc get_hasLayout*(
+    self: ptr IHTMLCurrentStyle2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hasLayout(self, p)
+
+proc get_scrollbarBaseColor*(
+    self: ptr IHTMLCurrentStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarBaseColor(self, p)
+
+proc get_scrollbarFaceColor*(
+    self: ptr IHTMLCurrentStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarFaceColor(self, p)
+
+proc get_scrollbar3dLightColor*(
+    self: ptr IHTMLCurrentStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbar3dLightColor(self, p)
+
+proc get_scrollbarShadowColor*(
+    self: ptr IHTMLCurrentStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarShadowColor(self, p)
+
+proc get_scrollbarHighlightColor*(
+    self: ptr IHTMLCurrentStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarHighlightColor(self, p)
+
+proc get_scrollbarDarkShadowColor*(
+    self: ptr IHTMLCurrentStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarDarkShadowColor(self, p)
+
+proc get_scrollbarArrowColor*(
+    self: ptr IHTMLCurrentStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarArrowColor(self, p)
+
+proc get_scrollbarTrackColor*(
+    self: ptr IHTMLCurrentStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbarTrackColor(self, p)
+
+proc get_writingMode*(
+    self: ptr IHTMLCurrentStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_writingMode(self, p)
+
+proc get_zoom*(
+    self: ptr IHTMLCurrentStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_zoom(self, p)
+
+proc get_filter*(
+    self: ptr IHTMLCurrentStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_filter(self, p)
+
+proc get_textAlignLast*(
+    self: ptr IHTMLCurrentStyle2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textAlignLast(self, p)
+
+proc get_textKashidaSpace*(
+    self: ptr IHTMLCurrentStyle2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textKashidaSpace(self, p)
+
+proc get_isBlock*(
+    self: ptr IHTMLCurrentStyle2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_isBlock(self, p)
+
+proc get_textOverflow*(
+    self: ptr IHTMLCurrentStyle3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textOverflow(self, p)
+
+proc get_minHeight*(
+    self: ptr IHTMLCurrentStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_minHeight(self, p)
+
+proc get_wordSpacing*(
+    self: ptr IHTMLCurrentStyle3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wordSpacing(self, p)
+
+proc get_whiteSpace*(
+    self: ptr IHTMLCurrentStyle3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_whiteSpace(self, p)
+
+proc get_msInterpolationMode*(
+    self: ptr IHTMLCurrentStyle4, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msInterpolationMode(self, p)
+
+proc get_maxHeight*(
+    self: ptr IHTMLCurrentStyle4, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maxHeight(self, p)
+
+proc get_minWidth*(
+    self: ptr IHTMLCurrentStyle4, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_minWidth(self, p)
+
+proc get_maxWidth*(
+    self: ptr IHTMLCurrentStyle4, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maxWidth(self, p)
+
+proc get_captionSide*(
+    self: ptr IHTMLCurrentStyle5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_captionSide(self, p)
+
+proc get_outline*(
+    self: ptr IHTMLCurrentStyle5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outline(self, p)
+
+proc get_outlineWidth*(
+    self: ptr IHTMLCurrentStyle5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outlineWidth(self, p)
+
+proc get_outlineStyle*(
+    self: ptr IHTMLCurrentStyle5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outlineStyle(self, p)
+
+proc get_outlineColor*(
+    self: ptr IHTMLCurrentStyle5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outlineColor(self, p)
+
+proc get_boxSizing*(
+    self: ptr IHTMLCurrentStyle5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_boxSizing(self, p)
+
+proc get_borderSpacing*(
+    self: ptr IHTMLCurrentStyle5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderSpacing(self, p)
+
+proc get_orphans*(
+    self: ptr IHTMLCurrentStyle5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_orphans(self, p)
+
+proc get_widows*(
+    self: ptr IHTMLCurrentStyle5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_widows(self, p)
+
+proc get_pageBreakInside*(
+    self: ptr IHTMLCurrentStyle5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageBreakInside(self, p)
+
+proc get_emptyCells*(
+    self: ptr IHTMLCurrentStyle5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_emptyCells(self, p)
+
+proc get_msBlockProgression*(
+    self: ptr IHTMLCurrentStyle5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msBlockProgression(self, p)
+
+proc get_quotes*(
+    self: ptr IHTMLCurrentStyle5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_quotes(self, p)
+
+proc put_left*(self: ptr IHTMLRect, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_left(self, v)
+
+proc get_left*(self: ptr IHTMLRect, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_left(self, p)
+
+proc put_top*(self: ptr IHTMLRect, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_top(self, v)
+
+proc get_top*(self: ptr IHTMLRect, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_top(self, p)
+
+proc put_right*(self: ptr IHTMLRect, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_right(self, v)
+
+proc get_right*(self: ptr IHTMLRect, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_right(self, p)
+
+proc put_bottom*(self: ptr IHTMLRect, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_bottom(self, v)
+
+proc get_bottom*(self: ptr IHTMLRect, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bottom(self, p)
+
+proc get_width*(self: ptr IHTMLRect2, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc get_height*(self: ptr IHTMLRect2, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc get_length*(
+    self: ptr IHTMLRectCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLRectCollection, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc item*(
+    self: ptr IHTMLRectCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, pvarIndex, pvarResult)
+
+proc get_nodeType*(self: ptr IHTMLDOMNode, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeType(self, p)
+
+proc get_parentNode*(
+    self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parentNode(self, p)
+
+proc hasChildNodes*(
+    self: ptr IHTMLDOMNode, fChildren: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasChildNodes(self, fChildren)
+
+proc get_childNodes*(
+    self: ptr IHTMLDOMNode, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_childNodes(self, p)
+
+proc get_attributes*(
+    self: ptr IHTMLDOMNode, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_attributes(self, p)
+
+proc insertBefore*(
+    self: ptr IHTMLDOMNode,
+    newChild: ptr IHTMLDOMNode,
+    refChild: VARIANT,
+    node: ptr ptr IHTMLDOMNode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertBefore(self, newChild, refChild, node)
+
+proc removeChild*(
+    self: ptr IHTMLDOMNode, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeChild(self, oldChild, node)
+
+proc replaceChild*(
+    self: ptr IHTMLDOMNode,
+    newChild: ptr IHTMLDOMNode,
+    oldChild: ptr IHTMLDOMNode,
+    node: ptr ptr IHTMLDOMNode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceChild(self, newChild, oldChild, node)
+
+proc cloneNode*(
+    self: ptr IHTMLDOMNode, fDeep: VARIANT_BOOL, clonedNode: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.cloneNode(self, fDeep, clonedNode)
+
+proc removeNode*(
+    self: ptr IHTMLDOMNode, fDeep: VARIANT_BOOL, removed: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeNode(self, fDeep, removed)
+
+proc swapNode*(
+    self: ptr IHTMLDOMNode,
+    otherNode: ptr IHTMLDOMNode,
+    swappedNode: ptr ptr IHTMLDOMNode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.swapNode(self, otherNode, swappedNode)
+
+proc replaceNode*(
+    self: ptr IHTMLDOMNode,
+    replacement: ptr IHTMLDOMNode,
+    replaced: ptr ptr IHTMLDOMNode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceNode(self, replacement, replaced)
+
+proc appendChild*(
+    self: ptr IHTMLDOMNode, newChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendChild(self, newChild, node)
+
+proc get_nodeName*(self: ptr IHTMLDOMNode, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeName(self, p)
+
+proc put_nodeValue*(self: ptr IHTMLDOMNode, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_nodeValue(self, v)
+
+proc get_nodeValue*(
+    self: ptr IHTMLDOMNode, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeValue(self, p)
+
+proc get_firstChild*(
+    self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_firstChild(self, p)
+
+proc get_lastChild*(
+    self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lastChild(self, p)
+
+proc get_previousSibling*(
+    self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_previousSibling(self, p)
+
+proc get_nextSibling*(
+    self: ptr IHTMLDOMNode, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nextSibling(self, p)
+
+proc get_ownerDocument*(
+    self: ptr IHTMLDOMNode2, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ownerDocument(self, p)
+
+proc put_prefix*(self: ptr IHTMLDOMNode3, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_prefix(self, v)
+
+proc get_prefix*(self: ptr IHTMLDOMNode3, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_prefix(self, p)
+
+proc get_localName*(
+    self: ptr IHTMLDOMNode3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_localName(self, p)
+
+proc get_namespaceURI*(
+    self: ptr IHTMLDOMNode3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_namespaceURI(self, p)
+
+proc put_textContent*(self: ptr IHTMLDOMNode3, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textContent(self, v)
+
+proc get_textContent*(
+    self: ptr IHTMLDOMNode3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textContent(self, p)
+
+proc isEqualNode*(
+    self: ptr IHTMLDOMNode3, otherNode: ptr IHTMLDOMNode3, isEqual: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.isEqualNode(self, otherNode, isEqual)
+
+proc lookupNamespaceURI*(
+    self: ptr IHTMLDOMNode3, pvarPrefix: ptr VARIANT, pvarNamespaceURI: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.lookupNamespaceURI(self, pvarPrefix, pvarNamespaceURI)
+
+proc lookupPrefix*(
+    self: ptr IHTMLDOMNode3, pvarNamespaceURI: ptr VARIANT, pvarPrefix: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.lookupPrefix(self, pvarNamespaceURI, pvarPrefix)
+
+proc isDefaultNamespace*(
+    self: ptr IHTMLDOMNode3,
+    pvarNamespace: ptr VARIANT,
+    pfDefaultNamespace: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.isDefaultNamespace(self, pvarNamespace, pfDefaultNamespace)
+
+proc appendChild*(
+    self: ptr IHTMLDOMNode3, newChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendChild(self, newChild, node)
+
+proc insertBefore*(
+    self: ptr IHTMLDOMNode3,
+    newChild: ptr IHTMLDOMNode,
+    refChild: VARIANT,
+    node: ptr ptr IHTMLDOMNode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertBefore(self, newChild, refChild, node)
+
+proc removeChild*(
+    self: ptr IHTMLDOMNode3, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeChild(self, oldChild, node)
+
+proc replaceChild*(
+    self: ptr IHTMLDOMNode3,
+    newChild: ptr IHTMLDOMNode,
+    oldChild: ptr IHTMLDOMNode,
+    node: ptr ptr IHTMLDOMNode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceChild(self, newChild, oldChild, node)
+
+proc isSameNode*(
+    self: ptr IHTMLDOMNode3, otherNode: ptr IHTMLDOMNode3, isSame: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.isSameNode(self, otherNode, isSame)
+
+proc compareDocumentPosition*(
+    self: ptr IHTMLDOMNode3, otherNode: ptr IHTMLDOMNode, flags: ptr USHORT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.compareDocumentPosition(self, otherNode, flags)
+
+proc isSupported*(
+    self: ptr IHTMLDOMNode3,
+    feature: BSTR,
+    version: VARIANT,
+    pfisSupported: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.isSupported(self, feature, version, pfisSupported)
+
+proc get_nodeName*(
+    self: ptr IHTMLDOMAttribute, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeName(self, p)
+
+proc put_nodeValue*(
+    self: ptr IHTMLDOMAttribute, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_nodeValue(self, v)
+
+proc get_nodeValue*(
+    self: ptr IHTMLDOMAttribute, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeValue(self, p)
+
+proc get_specified*(
+    self: ptr IHTMLDOMAttribute, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_specified(self, p)
+
+proc get_name*(self: ptr IHTMLDOMAttribute2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_value*(self: ptr IHTMLDOMAttribute2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(self: ptr IHTMLDOMAttribute2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc get_expando*(
+    self: ptr IHTMLDOMAttribute2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_expando(self, p)
+
+proc get_nodeType*(
+    self: ptr IHTMLDOMAttribute2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeType(self, p)
+
+proc get_parentNode*(
+    self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parentNode(self, p)
+
+proc get_childNodes*(
+    self: ptr IHTMLDOMAttribute2, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_childNodes(self, p)
+
+proc get_firstChild*(
+    self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_firstChild(self, p)
+
+proc get_lastChild*(
+    self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lastChild(self, p)
+
+proc get_previousSibling*(
+    self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_previousSibling(self, p)
+
+proc get_nextSibling*(
+    self: ptr IHTMLDOMAttribute2, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nextSibling(self, p)
+
+proc get_attributes*(
+    self: ptr IHTMLDOMAttribute2, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_attributes(self, p)
+
+proc get_ownerDocument*(
+    self: ptr IHTMLDOMAttribute2, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ownerDocument(self, p)
+
+proc insertBefore*(
+    self: ptr IHTMLDOMAttribute2,
+    newChild: ptr IHTMLDOMNode,
+    refChild: VARIANT,
+    node: ptr ptr IHTMLDOMNode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertBefore(self, newChild, refChild, node)
+
+proc replaceChild*(
+    self: ptr IHTMLDOMAttribute2,
+    newChild: ptr IHTMLDOMNode,
+    oldChild: ptr IHTMLDOMNode,
+    node: ptr ptr IHTMLDOMNode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceChild(self, newChild, oldChild, node)
+
+proc removeChild*(
+    self: ptr IHTMLDOMAttribute2, oldChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeChild(self, oldChild, node)
+
+proc appendChild*(
+    self: ptr IHTMLDOMAttribute2, newChild: ptr IHTMLDOMNode, node: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendChild(self, newChild, node)
+
+proc hasChildNodes*(
+    self: ptr IHTMLDOMAttribute2, fChildren: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasChildNodes(self, fChildren)
+
+proc cloneNode*(
+    self: ptr IHTMLDOMAttribute2,
+    fDeep: VARIANT_BOOL,
+    clonedNode: ptr ptr IHTMLDOMAttribute,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.cloneNode(self, fDeep, clonedNode)
+
+proc put_nodeValue*(
+    self: ptr IHTMLDOMAttribute3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_nodeValue(self, v)
+
+proc get_nodeValue*(
+    self: ptr IHTMLDOMAttribute3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeValue(self, p)
+
+proc put_value*(self: ptr IHTMLDOMAttribute3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(self: ptr IHTMLDOMAttribute3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc get_specified*(
+    self: ptr IHTMLDOMAttribute3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_specified(self, p)
+
+proc get_ownerElement*(
+    self: ptr IHTMLDOMAttribute3, p: ptr ptr IHTMLElement2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ownerElement(self, p)
+
+proc put_nodeValue*(
+    self: ptr IHTMLDOMAttribute4, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_nodeValue(self, v)
+
+proc get_nodeValue*(
+    self: ptr IHTMLDOMAttribute4, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeValue(self, p)
+
+proc get_nodeName*(
+    self: ptr IHTMLDOMAttribute4, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeName(self, p)
+
+proc get_name*(self: ptr IHTMLDOMAttribute4, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_value*(self: ptr IHTMLDOMAttribute4, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(self: ptr IHTMLDOMAttribute4, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc get_firstChild*(
+    self: ptr IHTMLDOMAttribute4, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_firstChild(self, p)
+
+proc get_lastChild*(
+    self: ptr IHTMLDOMAttribute4, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lastChild(self, p)
+
+proc get_childNodes*(
+    self: ptr IHTMLDOMAttribute4, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_childNodes(self, p)
+
+proc hasAttributes*(
+    self: ptr IHTMLDOMAttribute4, pfHasAttributes: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasAttributes(self, pfHasAttributes)
+
+proc hasChildNodes*(
+    self: ptr IHTMLDOMAttribute4, fChildren: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasChildNodes(self, fChildren)
+
+proc normalize*(self: ptr IHTMLDOMAttribute4): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.normalize(self)
+
+proc get_specified*(
+    self: ptr IHTMLDOMAttribute4, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_specified(self, p)
+
+proc put_data*(self: ptr IHTMLDOMTextNode, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_data(self, v)
+
+proc get_data*(self: ptr IHTMLDOMTextNode, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_data(self, p)
+
+proc toString*(
+    self: ptr IHTMLDOMTextNode, String: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toString(self, String)
+
+proc get_length*(self: ptr IHTMLDOMTextNode, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc splitText*(
+    self: ptr IHTMLDOMTextNode, offset: LONG, pRetNode: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.splitText(self, offset, pRetNode)
+
+proc substringData*(
+    self: ptr IHTMLDOMTextNode2, offset: LONG, Count: LONG, pbstrsubString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.substringData(self, offset, Count, pbstrsubString)
+
+proc appendData*(
+    self: ptr IHTMLDOMTextNode2, bstrstring: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendData(self, bstrstring)
+
+proc insertData*(
+    self: ptr IHTMLDOMTextNode2, offset: LONG, bstrstring: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertData(self, offset, bstrstring)
+
+proc deleteData*(
+    self: ptr IHTMLDOMTextNode2, offset: LONG, Count: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteData(self, offset, Count)
+
+proc replaceData*(
+    self: ptr IHTMLDOMTextNode2, offset: LONG, Count: LONG, bstrstring: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceData(self, offset, Count, bstrstring)
+
+proc substringData*(
+    self: ptr IHTMLDOMTextNode3, offset: LONG, Count: LONG, pbstrsubString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.substringData(self, offset, Count, pbstrsubString)
+
+proc insertData*(
+    self: ptr IHTMLDOMTextNode3, offset: LONG, bstrstring: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertData(self, offset, bstrstring)
+
+proc deleteData*(
+    self: ptr IHTMLDOMTextNode3, offset: LONG, Count: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteData(self, offset, Count)
+
+proc replaceData*(
+    self: ptr IHTMLDOMTextNode3, offset: LONG, Count: LONG, bstrstring: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceData(self, offset, Count, bstrstring)
+
+proc splitText*(
+    self: ptr IHTMLDOMTextNode3, offset: LONG, pRetNode: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.splitText(self, offset, pRetNode)
+
+proc get_wholeText*(
+    self: ptr IHTMLDOMTextNode3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wholeText(self, p)
+
+proc replaceWholeText*(
+    self: ptr IHTMLDOMTextNode3, bstrText: BSTR, ppRetNode: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceWholeText(self, bstrText, ppRetNode)
+
+proc hasAttributes*(
+    self: ptr IHTMLDOMTextNode3, pfHasAttributes: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasAttributes(self, pfHasAttributes)
+
+proc normalize*(self: ptr IHTMLDOMTextNode3): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.normalize(self)
+
+proc hasFeature*(
+    self: ptr IHTMLDOMImplementation,
+    bstrfeature: BSTR,
+    version: VARIANT,
+    pfHasFeature: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasFeature(self, bstrfeature, version, pfHasFeature)
+
+proc createDocumentType*(
+    self: ptr IHTMLDOMImplementation2,
+    bstrQualifiedName: BSTR,
+    pvarPublicId: ptr VARIANT,
+    pvarSystemId: ptr VARIANT,
+    newDocumentType: ptr ptr IDOMDocumentType,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createDocumentType(
+      self, bstrQualifiedName, pvarPublicId, pvarSystemId, newDocumentType
+    )
+
+proc createDocument*(
+    self: ptr IHTMLDOMImplementation2,
+    pvarNS: ptr VARIANT,
+    pvarTagName: ptr VARIANT,
+    pDocumentType: ptr IDOMDocumentType,
+    ppnewDocument: ptr ptr IHTMLDocument7,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createDocument(self, pvarNS, pvarTagName, pDocumentType, ppnewDocument)
+
+proc createHTMLDocument*(
+    self: ptr IHTMLDOMImplementation2,
+    bstrTitle: BSTR,
+    ppnewDocument: ptr ptr IHTMLDocument7,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createHTMLDocument(self, bstrTitle, ppnewDocument)
+
+proc hasFeature*(
+    self: ptr IHTMLDOMImplementation2,
+    bstrfeature: BSTR,
+    version: VARIANT,
+    pfHasFeature: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasFeature(self, bstrfeature, version, pfHasFeature)
+
+proc get_length*(
+    self: ptr IHTMLAttributeCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLAttributeCollection, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc item*(
+    self: ptr IHTMLAttributeCollection, name: ptr VARIANT, pdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, name, pdisp)
+
+proc getNamedItem*(
+    self: ptr IHTMLAttributeCollection2,
+    bstrName: BSTR,
+    newretNode: ptr ptr IHTMLDOMAttribute,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getNamedItem(self, bstrName, newretNode)
+
+proc setNamedItem*(
+    self: ptr IHTMLAttributeCollection2,
+    ppNode: ptr IHTMLDOMAttribute,
+    newretNode: ptr ptr IHTMLDOMAttribute,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setNamedItem(self, ppNode, newretNode)
+
+proc removeNamedItem*(
+    self: ptr IHTMLAttributeCollection2,
+    bstrName: BSTR,
+    newretNode: ptr ptr IHTMLDOMAttribute,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeNamedItem(self, bstrName, newretNode)
+
+proc getNamedItem*(
+    self: ptr IHTMLAttributeCollection3,
+    bstrName: BSTR,
+    ppNodeOut: ptr ptr IHTMLDOMAttribute,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getNamedItem(self, bstrName, ppNodeOut)
+
+proc setNamedItem*(
+    self: ptr IHTMLAttributeCollection3,
+    pNodeIn: ptr IHTMLDOMAttribute,
+    ppNodeOut: ptr ptr IHTMLDOMAttribute,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setNamedItem(self, pNodeIn, ppNodeOut)
+
+proc removeNamedItem*(
+    self: ptr IHTMLAttributeCollection3,
+    bstrName: BSTR,
+    ppNodeOut: ptr ptr IHTMLDOMAttribute,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeNamedItem(self, bstrName, ppNodeOut)
+
+proc item*(
+    self: ptr IHTMLAttributeCollection3,
+    index: LONG,
+    ppNodeOut: ptr ptr IHTMLDOMAttribute,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, ppNodeOut)
+
+proc get_length*(
+    self: ptr IHTMLAttributeCollection3, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc getNamedItemNS*(
+    self: ptr IHTMLAttributeCollection4,
+    pvarNS: ptr VARIANT,
+    bstrName: BSTR,
+    ppNodeOut: ptr ptr IHTMLDOMAttribute2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getNamedItemNS(self, pvarNS, bstrName, ppNodeOut)
+
+proc setNamedItemNS*(
+    self: ptr IHTMLAttributeCollection4,
+    pNodeIn: ptr IHTMLDOMAttribute2,
+    ppNodeOut: ptr ptr IHTMLDOMAttribute2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setNamedItemNS(self, pNodeIn, ppNodeOut)
+
+proc removeNamedItemNS*(
+    self: ptr IHTMLAttributeCollection4,
+    pvarNS: ptr VARIANT,
+    bstrName: BSTR,
+    ppNodeOut: ptr ptr IHTMLDOMAttribute2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeNamedItemNS(self, pvarNS, bstrName, ppNodeOut)
+
+proc getNamedItem*(
+    self: ptr IHTMLAttributeCollection4,
+    bstrName: BSTR,
+    ppNodeOut: ptr ptr IHTMLDOMAttribute2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getNamedItem(self, bstrName, ppNodeOut)
+
+proc setNamedItem*(
+    self: ptr IHTMLAttributeCollection4,
+    pNodeIn: ptr IHTMLDOMAttribute2,
+    ppNodeOut: ptr ptr IHTMLDOMAttribute2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setNamedItem(self, pNodeIn, ppNodeOut)
+
+proc removeNamedItem*(
+    self: ptr IHTMLAttributeCollection4,
+    bstrName: BSTR,
+    ppNodeOut: ptr ptr IHTMLDOMAttribute2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeNamedItem(self, bstrName, ppNodeOut)
+
+proc item*(
+    self: ptr IHTMLAttributeCollection4,
+    index: LONG,
+    ppNodeOut: ptr ptr IHTMLDOMAttribute2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, ppNodeOut)
+
+proc get_length*(
+    self: ptr IHTMLAttributeCollection4, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_length*(
+    self: ptr IHTMLDOMChildrenCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLDOMChildrenCollection, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc item*(
+    self: ptr IHTMLDOMChildrenCollection, index: LONG, ppItem: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, ppItem)
+
+proc item*(
+    self: ptr IHTMLDOMChildrenCollection2, index: LONG, ppItem: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, ppItem)
+
+proc setAttribute*(
+    self: ptr IHTMLElement,
+    strAttributeName: BSTR,
+    AttributeValue: VARIANT,
+    lFlags: LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttribute(self, strAttributeName, AttributeValue, lFlags)
+
+proc getAttribute*(
+    self: ptr IHTMLElement,
+    strAttributeName: BSTR,
+    lFlags: LONG,
+    AttributeValue: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttribute(self, strAttributeName, lFlags, AttributeValue)
+
+proc removeAttribute*(
+    self: ptr IHTMLElement,
+    strAttributeName: BSTR,
+    lFlags: LONG,
+    pfSuccess: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAttribute(self, strAttributeName, lFlags, pfSuccess)
+
+proc put_className*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_className(self, v)
+
+proc get_className*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_className(self, p)
+
+proc put_id*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_id(self, v)
+
+proc get_id*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_id(self, p)
+
+proc get_tagName*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tagName(self, p)
+
+proc get_parentElement*(
+    self: ptr IHTMLElement, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parentElement(self, p)
+
+proc get_style*(
+    self: ptr IHTMLElement, p: ptr ptr IHTMLStyle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_style(self, p)
+
+proc put_onhelp*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onhelp(self, v)
+
+proc get_onhelp*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onhelp(self, p)
+
+proc put_onclick*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onclick(self, v)
+
+proc get_onclick*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onclick(self, p)
+
+proc put_ondblclick*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondblclick(self, v)
+
+proc get_ondblclick*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondblclick(self, p)
+
+proc put_onkeydown*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onkeydown(self, v)
+
+proc get_onkeydown*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onkeydown(self, p)
+
+proc put_onkeyup*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onkeyup(self, v)
+
+proc get_onkeyup*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onkeyup(self, p)
+
+proc put_onkeypress*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onkeypress(self, v)
+
+proc get_onkeypress*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onkeypress(self, p)
+
+proc put_onmouseout*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmouseout(self, v)
+
+proc get_onmouseout*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmouseout(self, p)
+
+proc put_onmouseover*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmouseover(self, v)
+
+proc get_onmouseover*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmouseover(self, p)
+
+proc put_onmousemove*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmousemove(self, v)
+
+proc get_onmousemove*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmousemove(self, p)
+
+proc put_onmousedown*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmousedown(self, v)
+
+proc get_onmousedown*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmousedown(self, p)
+
+proc put_onmouseup*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmouseup(self, v)
+
+proc get_onmouseup*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmouseup(self, p)
+
+proc get_document*(
+    self: ptr IHTMLElement, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_document(self, p)
+
+proc put_title*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_title(self, v)
+
+proc get_title*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_title(self, p)
+
+proc put_language*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_language(self, v)
+
+proc get_language*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_language(self, p)
+
+proc put_onselectstart*(
+    self: ptr IHTMLElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onselectstart(self, v)
+
+proc get_onselectstart*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onselectstart(self, p)
+
+proc scrollIntoView*(
+    self: ptr IHTMLElement, varargStart: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.scrollIntoView(self, varargStart)
+
+proc contains*(
+    self: ptr IHTMLElement, pChild: ptr IHTMLElement, pfResult: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.contains(self, pChild, pfResult)
+
+proc get_sourceIndex*(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_sourceIndex(self, p)
+
+proc get_recordNumber*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_recordNumber(self, p)
+
+proc put_lang*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lang(self, v)
+
+proc get_lang*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lang(self, p)
+
+proc get_offsetLeft*(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offsetLeft(self, p)
+
+proc get_offsetTop*(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offsetTop(self, p)
+
+proc get_offsetWidth*(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offsetWidth(self, p)
+
+proc get_offsetHeight*(
+    self: ptr IHTMLElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offsetHeight(self, p)
+
+proc get_offsetParent*(
+    self: ptr IHTMLElement, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offsetParent(self, p)
+
+proc put_innerHTML*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_innerHTML(self, v)
+
+proc get_innerHTML*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_innerHTML(self, p)
+
+proc put_innerText*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_innerText(self, v)
+
+proc get_innerText*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_innerText(self, p)
+
+proc put_outerHTML*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_outerHTML(self, v)
+
+proc get_outerHTML*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outerHTML(self, p)
+
+proc put_outerText*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_outerText(self, v)
+
+proc get_outerText*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outerText(self, p)
+
+proc insertAdjacentHTML*(
+    self: ptr IHTMLElement, where: BSTR, html: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertAdjacentHTML(self, where, html)
+
+proc insertAdjacentText*(
+    self: ptr IHTMLElement, where: BSTR, text: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertAdjacentText(self, where, text)
+
+proc get_parentTextEdit*(
+    self: ptr IHTMLElement, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parentTextEdit(self, p)
+
+proc get_isTextEdit*(
+    self: ptr IHTMLElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_isTextEdit(self, p)
+
+proc click*(self: ptr IHTMLElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.click(self)
+
+proc get_filters*(
+    self: ptr IHTMLElement, p: ptr ptr IHTMLFiltersCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_filters(self, p)
+
+proc put_ondragstart*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragstart(self, v)
+
+proc get_ondragstart*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragstart(self, p)
+
+proc toString*(self: ptr IHTMLElement, String: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toString(self, String)
+
+proc put_onbeforeupdate*(
+    self: ptr IHTMLElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforeupdate(self, v)
+
+proc get_onbeforeupdate*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforeupdate(self, p)
+
+proc put_onafterupdate*(
+    self: ptr IHTMLElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onafterupdate(self, v)
+
+proc get_onafterupdate*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onafterupdate(self, p)
+
+proc put_onerrorupdate*(
+    self: ptr IHTMLElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onerrorupdate(self, v)
+
+proc get_onerrorupdate*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onerrorupdate(self, p)
+
+proc put_onrowexit*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onrowexit(self, v)
+
+proc get_onrowexit*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onrowexit(self, p)
+
+proc put_onrowenter*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onrowenter(self, v)
+
+proc get_onrowenter*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onrowenter(self, p)
+
+proc put_ondatasetchanged*(
+    self: ptr IHTMLElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondatasetchanged(self, v)
+
+proc get_ondatasetchanged*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondatasetchanged(self, p)
+
+proc put_ondataavailable*(
+    self: ptr IHTMLElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondataavailable(self, v)
+
+proc get_ondataavailable*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondataavailable(self, p)
+
+proc put_ondatasetcomplete*(
+    self: ptr IHTMLElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondatasetcomplete(self, v)
+
+proc get_ondatasetcomplete*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondatasetcomplete(self, p)
+
+proc put_onfilterchange*(
+    self: ptr IHTMLElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onfilterchange(self, v)
+
+proc get_onfilterchange*(
+    self: ptr IHTMLElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onfilterchange(self, p)
+
+proc get_children*(
+    self: ptr IHTMLElement, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_children(self, p)
+
+proc get_all*(
+    self: ptr IHTMLElement, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_all(self, p)
+
+proc get_scopeName*(self: ptr IHTMLElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scopeName(self, p)
+
+proc setCapture*(
+    self: ptr IHTMLElement2, containerCapture: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setCapture(self, containerCapture)
+
+proc releaseCapture*(self: ptr IHTMLElement2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.releaseCapture(self)
+
+proc put_onlosecapture*(
+    self: ptr IHTMLElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onlosecapture(self, v)
+
+proc get_onlosecapture*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onlosecapture(self, p)
+
+proc componentFromPoint*(
+    self: ptr IHTMLElement2, x: LONG, y: LONG, component: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.componentFromPoint(self, x, y, component)
+
+proc doScroll*(
+    self: ptr IHTMLElement2, component: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.doScroll(self, component)
+
+proc put_onscroll*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onscroll(self, v)
+
+proc get_onscroll*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onscroll(self, p)
+
+proc put_ondrag*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondrag(self, v)
+
+proc get_ondrag*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondrag(self, p)
+
+proc put_ondragend*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragend(self, v)
+
+proc get_ondragend*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragend(self, p)
+
+proc put_ondragenter*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragenter(self, v)
+
+proc get_ondragenter*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragenter(self, p)
+
+proc put_ondragover*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragover(self, v)
+
+proc get_ondragover*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragover(self, p)
+
+proc put_ondragleave*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragleave(self, v)
+
+proc get_ondragleave*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragleave(self, p)
+
+proc put_ondrop*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondrop(self, v)
+
+proc get_ondrop*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondrop(self, p)
+
+proc put_onbeforecut*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforecut(self, v)
+
+proc get_onbeforecut*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforecut(self, p)
+
+proc put_oncut*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncut(self, v)
+
+proc get_oncut*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncut(self, p)
+
+proc put_onbeforecopy*(
+    self: ptr IHTMLElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforecopy(self, v)
+
+proc get_onbeforecopy*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforecopy(self, p)
+
+proc put_oncopy*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncopy(self, v)
+
+proc get_oncopy*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncopy(self, p)
+
+proc put_onbeforepaste*(
+    self: ptr IHTMLElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforepaste(self, v)
+
+proc get_onbeforepaste*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforepaste(self, p)
+
+proc put_onpaste*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onpaste(self, v)
+
+proc get_onpaste*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onpaste(self, p)
+
+proc get_currentStyle*(
+    self: ptr IHTMLElement2, p: ptr ptr IHTMLCurrentStyle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_currentStyle(self, p)
+
+proc put_onpropertychange*(
+    self: ptr IHTMLElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onpropertychange(self, v)
+
+proc get_onpropertychange*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onpropertychange(self, p)
+
+proc getClientRects*(
+    self: ptr IHTMLElement2, pRectCol: ptr ptr IHTMLRectCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getClientRects(self, pRectCol)
+
+proc getBoundingClientRect*(
+    self: ptr IHTMLElement2, pRect: ptr ptr IHTMLRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getBoundingClientRect(self, pRect)
+
+proc setExpression*(
+    self: ptr IHTMLElement2, propname: BSTR, expression: BSTR, language: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setExpression(self, propname, expression, language)
+
+proc getExpression*(
+    self: ptr IHTMLElement2, propname: BSTR, expression: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getExpression(self, propname, expression)
+
+proc removeExpression*(
+    self: ptr IHTMLElement2, propname: BSTR, pfSuccess: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeExpression(self, propname, pfSuccess)
+
+proc put_tabIndex*(self: ptr IHTMLElement2, v: int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_tabIndex(self, v)
+
+proc get_tabIndex*(self: ptr IHTMLElement2, p: ptr int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tabIndex(self, p)
+
+proc focus*(self: ptr IHTMLElement2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.focus(self)
+
+proc put_accessKey*(self: ptr IHTMLElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_accessKey(self, v)
+
+proc get_accessKey*(self: ptr IHTMLElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accessKey(self, p)
+
+proc put_onblur*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onblur(self, v)
+
+proc get_onblur*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onblur(self, p)
+
+proc put_onfocus*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onfocus(self, v)
+
+proc get_onfocus*(self: ptr IHTMLElement2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onfocus(self, p)
+
+proc put_onresize*(self: ptr IHTMLElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onresize(self, v)
+
+proc get_onresize*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onresize(self, p)
+
+proc blur*(self: ptr IHTMLElement2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.blur(self)
+
+proc addFilter*(
+    self: ptr IHTMLElement2, pUnk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addFilter(self, pUnk)
+
+proc removeFilter*(
+    self: ptr IHTMLElement2, pUnk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeFilter(self, pUnk)
+
+proc get_clientHeight*(
+    self: ptr IHTMLElement2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientHeight(self, p)
+
+proc get_clientWidth*(
+    self: ptr IHTMLElement2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientWidth(self, p)
+
+proc get_clientTop*(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientTop(self, p)
+
+proc get_clientLeft*(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientLeft(self, p)
+
+proc attachEvent*(
+    self: ptr IHTMLElement2,
+    event: BSTR,
+    pDisp: ptr IDispatch,
+    pfResult: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.attachEvent(self, event, pDisp, pfResult)
+
+proc detachEvent*(
+    self: ptr IHTMLElement2, event: BSTR, pDisp: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.detachEvent(self, event, pDisp)
+
+proc get_readyState*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, p)
+
+proc put_onreadystatechange*(
+    self: ptr IHTMLElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreadystatechange(self, v)
+
+proc get_onreadystatechange*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onreadystatechange(self, p)
+
+proc put_onrowsdelete*(
+    self: ptr IHTMLElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onrowsdelete(self, v)
+
+proc get_onrowsdelete*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onrowsdelete(self, p)
+
+proc put_onrowsinserted*(
+    self: ptr IHTMLElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onrowsinserted(self, v)
+
+proc get_onrowsinserted*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onrowsinserted(self, p)
+
+proc put_oncellchange*(
+    self: ptr IHTMLElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncellchange(self, v)
+
+proc get_oncellchange*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncellchange(self, p)
+
+proc put_dir*(self: ptr IHTMLElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dir(self, v)
+
+proc get_dir*(self: ptr IHTMLElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dir(self, p)
+
+proc createControlRange*(
+    self: ptr IHTMLElement2, range: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createControlRange(self, range)
+
+proc get_scrollHeight*(
+    self: ptr IHTMLElement2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollHeight(self, p)
+
+proc get_scrollWidth*(
+    self: ptr IHTMLElement2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollWidth(self, p)
+
+proc put_scrollTop*(self: ptr IHTMLElement2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollTop(self, v)
+
+proc get_scrollTop*(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollTop(self, p)
+
+proc put_scrollLeft*(self: ptr IHTMLElement2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollLeft(self, v)
+
+proc get_scrollLeft*(self: ptr IHTMLElement2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollLeft(self, p)
+
+proc clearAttributes*(self: ptr IHTMLElement2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clearAttributes(self)
+
+proc mergeAttributes*(
+    self: ptr IHTMLElement2, mergeThis: ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.mergeAttributes(self, mergeThis)
+
+proc put_oncontextmenu*(
+    self: ptr IHTMLElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncontextmenu(self, v)
+
+proc get_oncontextmenu*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncontextmenu(self, p)
+
+proc insertAdjacentElement*(
+    self: ptr IHTMLElement2,
+    where: BSTR,
+    insertedElement: ptr IHTMLElement,
+    inserted: ptr ptr IHTMLElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertAdjacentElement(self, where, insertedElement, inserted)
+
+proc applyElement*(
+    self: ptr IHTMLElement2,
+    apply: ptr IHTMLElement,
+    where: BSTR,
+    applied: ptr ptr IHTMLElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.applyElement(self, apply, where, applied)
+
+proc getAdjacentText*(
+    self: ptr IHTMLElement2, where: BSTR, text: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAdjacentText(self, where, text)
+
+proc replaceAdjacentText*(
+    self: ptr IHTMLElement2, where: BSTR, newText: BSTR, oldText: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceAdjacentText(self, where, newText, oldText)
+
+proc get_canHaveChildren*(
+    self: ptr IHTMLElement2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_canHaveChildren(self, p)
+
+proc addBehavior*(
+    self: ptr IHTMLElement2, bstrUrl: BSTR, pvarFactory: ptr VARIANT, pCookie: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addBehavior(self, bstrUrl, pvarFactory, pCookie)
+
+proc removeBehavior*(
+    self: ptr IHTMLElement2, cookie: LONG, pfResult: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeBehavior(self, cookie, pfResult)
+
+proc get_runtimeStyle*(
+    self: ptr IHTMLElement2, p: ptr ptr IHTMLStyle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_runtimeStyle(self, p)
+
+proc get_behaviorUrns*(
+    self: ptr IHTMLElement2, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_behaviorUrns(self, p)
+
+proc put_tagUrn*(self: ptr IHTMLElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_tagUrn(self, v)
+
+proc get_tagUrn*(self: ptr IHTMLElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tagUrn(self, p)
+
+proc put_onbeforeeditfocus*(
+    self: ptr IHTMLElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforeeditfocus(self, v)
+
+proc get_onbeforeeditfocus*(
+    self: ptr IHTMLElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforeeditfocus(self, p)
+
+proc get_readyStateValue*(
+    self: ptr IHTMLElement2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyStateValue(self, p)
+
+proc getElementsByTagName*(
+    self: ptr IHTMLElement2, v: BSTR, pelColl: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getElementsByTagName(self, v, pelColl)
+
+proc mergeAttributes*(
+    self: ptr IHTMLElement3, mergeThis: ptr IHTMLElement, pvarFlags: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.mergeAttributes(self, mergeThis, pvarFlags)
+
+proc get_isMultiLine*(
+    self: ptr IHTMLElement3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_isMultiLine(self, p)
+
+proc get_canHaveHTML*(
+    self: ptr IHTMLElement3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_canHaveHTML(self, p)
+
+proc put_onlayoutcomplete*(
+    self: ptr IHTMLElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onlayoutcomplete(self, v)
+
+proc get_onlayoutcomplete*(
+    self: ptr IHTMLElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onlayoutcomplete(self, p)
+
+proc put_onpage*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onpage(self, v)
+
+proc get_onpage*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onpage(self, p)
+
+proc put_inflateBlock*(
+    self: ptr IHTMLElement3, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_inflateBlock(self, v)
+
+proc get_inflateBlock*(
+    self: ptr IHTMLElement3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_inflateBlock(self, p)
+
+proc put_onbeforedeactivate*(
+    self: ptr IHTMLElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforedeactivate(self, v)
+
+proc get_onbeforedeactivate*(
+    self: ptr IHTMLElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforedeactivate(self, p)
+
+proc setActive*(self: ptr IHTMLElement3): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setActive(self)
+
+proc put_contentEditable*(
+    self: ptr IHTMLElement3, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_contentEditable(self, v)
+
+proc get_contentEditable*(
+    self: ptr IHTMLElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_contentEditable(self, p)
+
+proc get_isContentEditable*(
+    self: ptr IHTMLElement3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_isContentEditable(self, p)
+
+proc put_hideFocus*(
+    self: ptr IHTMLElement3, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hideFocus(self, v)
+
+proc get_hideFocus*(
+    self: ptr IHTMLElement3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hideFocus(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLElement3, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLElement3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc get_isDisabled*(
+    self: ptr IHTMLElement3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_isDisabled(self, p)
+
+proc put_onmove*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmove(self, v)
+
+proc get_onmove*(self: ptr IHTMLElement3, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmove(self, p)
+
+proc put_oncontrolselect*(
+    self: ptr IHTMLElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncontrolselect(self, v)
+
+proc get_oncontrolselect*(
+    self: ptr IHTMLElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncontrolselect(self, p)
+
+proc fireEvent*(
+    self: ptr IHTMLElement3,
+    bstrEventName: BSTR,
+    pvarEventObject: ptr VARIANT,
+    pfCancelled: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.fireEvent(self, bstrEventName, pvarEventObject, pfCancelled)
+
+proc put_onresizestart*(
+    self: ptr IHTMLElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onresizestart(self, v)
+
+proc get_onresizestart*(
+    self: ptr IHTMLElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onresizestart(self, p)
+
+proc put_onresizeend*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onresizeend(self, v)
+
+proc get_onresizeend*(
+    self: ptr IHTMLElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onresizeend(self, p)
+
+proc put_onmovestart*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmovestart(self, v)
+
+proc get_onmovestart*(
+    self: ptr IHTMLElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmovestart(self, p)
+
+proc put_onmoveend*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmoveend(self, v)
+
+proc get_onmoveend*(
+    self: ptr IHTMLElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmoveend(self, p)
+
+proc put_onmouseenter*(
+    self: ptr IHTMLElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmouseenter(self, v)
+
+proc get_onmouseenter*(
+    self: ptr IHTMLElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmouseenter(self, p)
+
+proc put_onmouseleave*(
+    self: ptr IHTMLElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmouseleave(self, v)
+
+proc get_onmouseleave*(
+    self: ptr IHTMLElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmouseleave(self, p)
+
+proc put_onactivate*(self: ptr IHTMLElement3, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onactivate(self, v)
+
+proc get_onactivate*(
+    self: ptr IHTMLElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onactivate(self, p)
+
+proc put_ondeactivate*(
+    self: ptr IHTMLElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondeactivate(self, v)
+
+proc get_ondeactivate*(
+    self: ptr IHTMLElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondeactivate(self, p)
+
+proc dragDrop*(
+    self: ptr IHTMLElement3, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.dragDrop(self, pfRet)
+
+proc get_glyphMode*(self: ptr IHTMLElement3, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_glyphMode(self, p)
+
+proc put_onmousewheel*(
+    self: ptr IHTMLElement4, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmousewheel(self, v)
+
+proc get_onmousewheel*(
+    self: ptr IHTMLElement4, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmousewheel(self, p)
+
+proc normalize*(self: ptr IHTMLElement4): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.normalize(self)
+
+proc getAttributeNode*(
+    self: ptr IHTMLElement4, bstrname: BSTR, ppAttribute: ptr ptr IHTMLDOMAttribute
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttributeNode(self, bstrname, ppAttribute)
+
+proc setAttributeNode*(
+    self: ptr IHTMLElement4,
+    pattr: ptr IHTMLDOMAttribute,
+    ppretAttribute: ptr ptr IHTMLDOMAttribute,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttributeNode(self, pattr, ppretAttribute)
+
+proc removeAttributeNode*(
+    self: ptr IHTMLElement4,
+    pattr: ptr IHTMLDOMAttribute,
+    ppretAttribute: ptr ptr IHTMLDOMAttribute,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAttributeNode(self, pattr, ppretAttribute)
+
+proc put_onbeforeactivate*(
+    self: ptr IHTMLElement4, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforeactivate(self, v)
+
+proc get_onbeforeactivate*(
+    self: ptr IHTMLElement4, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforeactivate(self, p)
+
+proc put_onfocusin*(self: ptr IHTMLElement4, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onfocusin(self, v)
+
+proc get_onfocusin*(
+    self: ptr IHTMLElement4, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onfocusin(self, p)
+
+proc put_onfocusout*(self: ptr IHTMLElement4, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onfocusout(self, v)
+
+proc get_onfocusout*(
+    self: ptr IHTMLElement4, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onfocusout(self, p)
+
+proc querySelector*(
+    self: ptr IElementSelector, v: BSTR, pel: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.querySelector(self, v, pel)
+
+proc querySelectorAll*(
+    self: ptr IElementSelector, v: BSTR, pel: ptr ptr IHTMLDOMChildrenCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.querySelectorAll(self, v, pel)
+
+proc DrawToDC*(self: ptr IHTMLElementRender, hDC: HDC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DrawToDC(self, hDC)
+
+proc SetDocumentPrinter*(
+    self: ptr IHTMLElementRender, bstrPrinterName: BSTR, hDC: HDC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDocumentPrinter(self, bstrPrinterName, hDC)
+
+proc get_uniqueNumber*(
+    self: ptr IHTMLUniqueName, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_uniqueNumber(self, p)
+
+proc get_uniqueID*(self: ptr IHTMLUniqueName, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_uniqueID(self, p)
+
+proc getAttributeNode*(
+    self: ptr IHTMLElement5, bstrname: BSTR, ppretAttribute: ptr ptr IHTMLDOMAttribute2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttributeNode(self, bstrname, ppretAttribute)
+
+proc setAttributeNode*(
+    self: ptr IHTMLElement5,
+    pattr: ptr IHTMLDOMAttribute2,
+    ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttributeNode(self, pattr, ppretAttribute)
+
+proc removeAttributeNode*(
+    self: ptr IHTMLElement5,
+    pattr: ptr IHTMLDOMAttribute2,
+    ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAttributeNode(self, pattr, ppretAttribute)
+
+proc hasAttribute*(
+    self: ptr IHTMLElement5, name: BSTR, pfHasAttribute: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasAttribute(self, name, pfHasAttribute)
+
+proc put_role*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_role(self, v)
+
+proc get_role*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_role(self, p)
+
+proc put_ariaBusy*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaBusy(self, v)
+
+proc get_ariaBusy*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaBusy(self, p)
+
+proc put_ariaChecked*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaChecked(self, v)
+
+proc get_ariaChecked*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaChecked(self, p)
+
+proc put_ariaDisabled*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaDisabled(self, v)
+
+proc get_ariaDisabled*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaDisabled(self, p)
+
+proc put_ariaExpanded*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaExpanded(self, v)
+
+proc get_ariaExpanded*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaExpanded(self, p)
+
+proc put_ariaHaspopup*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaHaspopup(self, v)
+
+proc get_ariaHaspopup*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaHaspopup(self, p)
+
+proc put_ariaHidden*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaHidden(self, v)
+
+proc get_ariaHidden*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaHidden(self, p)
+
+proc put_ariaInvalid*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaInvalid(self, v)
+
+proc get_ariaInvalid*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaInvalid(self, p)
+
+proc put_ariaMultiselectable*(
+    self: ptr IHTMLElement5, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaMultiselectable(self, v)
+
+proc get_ariaMultiselectable*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaMultiselectable(self, p)
+
+proc put_ariaPressed*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaPressed(self, v)
+
+proc get_ariaPressed*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaPressed(self, p)
+
+proc put_ariaReadonly*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaReadonly(self, v)
+
+proc get_ariaReadonly*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaReadonly(self, p)
+
+proc put_ariaRequired*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaRequired(self, v)
+
+proc get_ariaRequired*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaRequired(self, p)
+
+proc put_ariaSecret*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaSecret(self, v)
+
+proc get_ariaSecret*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaSecret(self, p)
+
+proc put_ariaSelected*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaSelected(self, v)
+
+proc get_ariaSelected*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaSelected(self, p)
+
+proc getAttribute*(
+    self: ptr IHTMLElement5, strAttributeName: BSTR, AttributeValue: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttribute(self, strAttributeName, AttributeValue)
+
+proc setAttribute*(
+    self: ptr IHTMLElement5, strAttributeName: BSTR, AttributeValue: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttribute(self, strAttributeName, AttributeValue)
+
+proc removeAttribute*(
+    self: ptr IHTMLElement5, strAttributeName: BSTR, pfSuccess: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAttribute(self, strAttributeName, pfSuccess)
+
+proc get_attributes*(
+    self: ptr IHTMLElement5, p: ptr ptr IHTMLAttributeCollection3
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_attributes(self, p)
+
+proc put_ariaValuenow*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaValuenow(self, v)
+
+proc get_ariaValuenow*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaValuenow(self, p)
+
+proc put_ariaPosinset*(self: ptr IHTMLElement5, v: int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaPosinset(self, v)
+
+proc get_ariaPosinset*(
+    self: ptr IHTMLElement5, p: ptr int16
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaPosinset(self, p)
+
+proc put_ariaSetsize*(self: ptr IHTMLElement5, v: int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaSetsize(self, v)
+
+proc get_ariaSetsize*(
+    self: ptr IHTMLElement5, p: ptr int16
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaSetsize(self, p)
+
+proc put_ariaLevel*(self: ptr IHTMLElement5, v: int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaLevel(self, v)
+
+proc get_ariaLevel*(self: ptr IHTMLElement5, p: ptr int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaLevel(self, p)
+
+proc put_ariaValuemin*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaValuemin(self, v)
+
+proc get_ariaValuemin*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaValuemin(self, p)
+
+proc put_ariaValuemax*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaValuemax(self, v)
+
+proc get_ariaValuemax*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaValuemax(self, p)
+
+proc put_ariaControls*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaControls(self, v)
+
+proc get_ariaControls*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaControls(self, p)
+
+proc put_ariaDescribedby*(
+    self: ptr IHTMLElement5, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaDescribedby(self, v)
+
+proc get_ariaDescribedby*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaDescribedby(self, p)
+
+proc put_ariaFlowto*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaFlowto(self, v)
+
+proc get_ariaFlowto*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaFlowto(self, p)
+
+proc put_ariaLabelledby*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaLabelledby(self, v)
+
+proc get_ariaLabelledby*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaLabelledby(self, p)
+
+proc put_ariaActivedescendant*(
+    self: ptr IHTMLElement5, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaActivedescendant(self, v)
+
+proc get_ariaActivedescendant*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaActivedescendant(self, p)
+
+proc put_ariaOwns*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaOwns(self, v)
+
+proc get_ariaOwns*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaOwns(self, p)
+
+proc hasAttributes*(
+    self: ptr IHTMLElement5, pfHasAttributes: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasAttributes(self, pfHasAttributes)
+
+proc put_ariaLive*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaLive(self, v)
+
+proc get_ariaLive*(self: ptr IHTMLElement5, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaLive(self, p)
+
+proc put_ariaRelevant*(self: ptr IHTMLElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ariaRelevant(self, v)
+
+proc get_ariaRelevant*(
+    self: ptr IHTMLElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ariaRelevant(self, p)
+
+proc getAttributeNS*(
+    self: ptr IHTMLElement6,
+    pvarNS: ptr VARIANT,
+    strAttributeName: BSTR,
+    AttributeValue: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttributeNS(self, pvarNS, strAttributeName, AttributeValue)
+
+proc setAttributeNS*(
+    self: ptr IHTMLElement6,
+    pvarNS: ptr VARIANT,
+    strAttributeName: BSTR,
+    pvarAttributeValue: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttributeNS(self, pvarNS, strAttributeName, pvarAttributeValue)
+
+proc removeAttributeNS*(
+    self: ptr IHTMLElement6, pvarNS: ptr VARIANT, strAttributeName: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAttributeNS(self, pvarNS, strAttributeName)
+
+proc getAttributeNodeNS*(
+    self: ptr IHTMLElement6,
+    pvarNS: ptr VARIANT,
+    bstrname: BSTR,
+    ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttributeNodeNS(self, pvarNS, bstrname, ppretAttribute)
+
+proc setAttributeNodeNS*(
+    self: ptr IHTMLElement6,
+    pattr: ptr IHTMLDOMAttribute2,
+    ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttributeNodeNS(self, pattr, ppretAttribute)
+
+proc hasAttributeNS*(
+    self: ptr IHTMLElement6,
+    pvarNS: ptr VARIANT,
+    name: BSTR,
+    pfHasAttribute: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasAttributeNS(self, pvarNS, name, pfHasAttribute)
+
+proc getAttribute*(
+    self: ptr IHTMLElement6, strAttributeName: BSTR, AttributeValue: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttribute(self, strAttributeName, AttributeValue)
+
+proc setAttribute*(
+    self: ptr IHTMLElement6, strAttributeName: BSTR, pvarAttributeValue: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttribute(self, strAttributeName, pvarAttributeValue)
+
+proc removeAttribute*(
+    self: ptr IHTMLElement6, strAttributeName: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAttribute(self, strAttributeName)
+
+proc getAttributeNode*(
+    self: ptr IHTMLElement6,
+    strAttributeName: BSTR,
+    ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttributeNode(self, strAttributeName, ppretAttribute)
+
+proc setAttributeNode*(
+    self: ptr IHTMLElement6,
+    pattr: ptr IHTMLDOMAttribute2,
+    ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttributeNode(self, pattr, ppretAttribute)
+
+proc removeAttributeNode*(
+    self: ptr IHTMLElement6,
+    pattr: ptr IHTMLDOMAttribute2,
+    ppretAttribute: ptr ptr IHTMLDOMAttribute2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAttributeNode(self, pattr, ppretAttribute)
+
+proc hasAttribute*(
+    self: ptr IHTMLElement6, name: BSTR, pfHasAttribute: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasAttribute(self, name, pfHasAttribute)
+
+proc getElementsByTagNameNS*(
+    self: ptr IHTMLElement6,
+    varNS: ptr VARIANT,
+    bstrLocalName: BSTR,
+    pelColl: ptr ptr IHTMLElementCollection,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getElementsByTagNameNS(self, varNS, bstrLocalName, pelColl)
+
+proc get_tagName*(self: ptr IHTMLElement6, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tagName(self, p)
+
+proc get_nodeName*(self: ptr IHTMLElement6, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeName(self, p)
+
+proc getElementsByClassName*(
+    self: ptr IHTMLElement6, v: BSTR, pel: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getElementsByClassName(self, v, pel)
+
+proc msMatchesSelector*(
+    self: ptr IHTMLElement6, v: BSTR, pfMatches: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.msMatchesSelector(self, v, pfMatches)
+
+proc put_onabort*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onabort(self, v)
+
+proc get_onabort*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onabort(self, p)
+
+proc put_oncanplay*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncanplay(self, v)
+
+proc get_oncanplay*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncanplay(self, p)
+
+proc put_oncanplaythrough*(
+    self: ptr IHTMLElement6, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncanplaythrough(self, v)
+
+proc get_oncanplaythrough*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncanplaythrough(self, p)
+
+proc put_onchange*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onchange(self, v)
+
+proc get_onchange*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onchange(self, p)
+
+proc put_ondurationchange*(
+    self: ptr IHTMLElement6, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondurationchange(self, v)
+
+proc get_ondurationchange*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondurationchange(self, p)
+
+proc put_onemptied*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onemptied(self, v)
+
+proc get_onemptied*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onemptied(self, p)
+
+proc put_onended*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onended(self, v)
+
+proc get_onended*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onended(self, p)
+
+proc put_onerror*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onerror(self, v)
+
+proc get_onerror*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onerror(self, p)
+
+proc put_oninput*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oninput(self, v)
+
+proc get_oninput*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oninput(self, p)
+
+proc put_onload*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onload(self, v)
+
+proc get_onload*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onload(self, p)
+
+proc put_onloadeddata*(
+    self: ptr IHTMLElement6, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onloadeddata(self, v)
+
+proc get_onloadeddata*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onloadeddata(self, p)
+
+proc put_onloadedmetadata*(
+    self: ptr IHTMLElement6, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onloadedmetadata(self, v)
+
+proc get_onloadedmetadata*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onloadedmetadata(self, p)
+
+proc put_onloadstart*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onloadstart(self, v)
+
+proc get_onloadstart*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onloadstart(self, p)
+
+proc put_onpause*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onpause(self, v)
+
+proc get_onpause*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onpause(self, p)
+
+proc put_onplay*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onplay(self, v)
+
+proc get_onplay*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onplay(self, p)
+
+proc put_onplaying*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onplaying(self, v)
+
+proc get_onplaying*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onplaying(self, p)
+
+proc put_onprogress*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onprogress(self, v)
+
+proc get_onprogress*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onprogress(self, p)
+
+proc put_onratechange*(
+    self: ptr IHTMLElement6, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onratechange(self, v)
+
+proc get_onratechange*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onratechange(self, p)
+
+proc put_onreset*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreset(self, v)
+
+proc get_onreset*(self: ptr IHTMLElement6, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onreset(self, p)
+
+proc put_onseeked*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onseeked(self, v)
+
+proc get_onseeked*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onseeked(self, p)
+
+proc put_onseeking*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onseeking(self, v)
+
+proc get_onseeking*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onseeking(self, p)
+
+proc put_onselect*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onselect(self, v)
+
+proc get_onselect*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onselect(self, p)
+
+proc put_onstalled*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onstalled(self, v)
+
+proc get_onstalled*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onstalled(self, p)
+
+proc put_onsubmit*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onsubmit(self, v)
+
+proc get_onsubmit*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onsubmit(self, p)
+
+proc put_onsuspend*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onsuspend(self, v)
+
+proc get_onsuspend*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onsuspend(self, p)
+
+proc put_ontimeupdate*(
+    self: ptr IHTMLElement6, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ontimeupdate(self, v)
+
+proc get_ontimeupdate*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ontimeupdate(self, p)
+
+proc put_onvolumechange*(
+    self: ptr IHTMLElement6, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onvolumechange(self, v)
+
+proc get_onvolumechange*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onvolumechange(self, p)
+
+proc put_onwaiting*(self: ptr IHTMLElement6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onwaiting(self, v)
+
+proc get_onwaiting*(
+    self: ptr IHTMLElement6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onwaiting(self, p)
+
+proc hasAttributes*(
+    self: ptr IHTMLElement6, pfHasAttributes: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasAttributes(self, pfHasAttributes)
+
+proc put_onmspointerdown*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerdown(self, v)
+
+proc get_onmspointerdown*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerdown(self, p)
+
+proc put_onmspointermove*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointermove(self, v)
+
+proc get_onmspointermove*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointermove(self, p)
+
+proc put_onmspointerup*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerup(self, v)
+
+proc get_onmspointerup*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerup(self, p)
+
+proc put_onmspointerover*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerover(self, v)
+
+proc get_onmspointerover*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerover(self, p)
+
+proc put_onmspointerout*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerout(self, v)
+
+proc get_onmspointerout*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerout(self, p)
+
+proc put_onmspointercancel*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointercancel(self, v)
+
+proc get_onmspointercancel*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointercancel(self, p)
+
+proc put_onmspointerhover*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerhover(self, v)
+
+proc get_onmspointerhover*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerhover(self, p)
+
+proc put_onmslostpointercapture*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmslostpointercapture(self, v)
+
+proc get_onmslostpointercapture*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmslostpointercapture(self, p)
+
+proc put_onmsgotpointercapture*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgotpointercapture(self, v)
+
+proc get_onmsgotpointercapture*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgotpointercapture(self, p)
+
+proc put_onmsgesturestart*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturestart(self, v)
+
+proc get_onmsgesturestart*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturestart(self, p)
+
+proc put_onmsgesturechange*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturechange(self, v)
+
+proc get_onmsgesturechange*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturechange(self, p)
+
+proc put_onmsgestureend*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgestureend(self, v)
+
+proc get_onmsgestureend*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgestureend(self, p)
+
+proc put_onmsgesturehold*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturehold(self, v)
+
+proc get_onmsgesturehold*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturehold(self, p)
+
+proc put_onmsgesturetap*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturetap(self, v)
+
+proc get_onmsgesturetap*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturetap(self, p)
+
+proc put_onmsgesturedoubletap*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturedoubletap(self, v)
+
+proc get_onmsgesturedoubletap*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturedoubletap(self, p)
+
+proc put_onmsinertiastart*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsinertiastart(self, v)
+
+proc get_onmsinertiastart*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsinertiastart(self, p)
+
+proc msSetPointerCapture*(
+    self: ptr IHTMLElement7, pointerId: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.msSetPointerCapture(self, pointerId)
+
+proc msReleasePointerCapture*(
+    self: ptr IHTMLElement7, pointerId: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.msReleasePointerCapture(self, pointerId)
+
+proc put_onmstransitionstart*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmstransitionstart(self, v)
+
+proc get_onmstransitionstart*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmstransitionstart(self, p)
+
+proc put_onmstransitionend*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmstransitionend(self, v)
+
+proc get_onmstransitionend*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmstransitionend(self, p)
+
+proc put_onmsanimationstart*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsanimationstart(self, v)
+
+proc get_onmsanimationstart*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsanimationstart(self, p)
+
+proc put_onmsanimationend*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsanimationend(self, v)
+
+proc get_onmsanimationend*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsanimationend(self, p)
+
+proc put_onmsanimationiteration*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsanimationiteration(self, v)
+
+proc get_onmsanimationiteration*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsanimationiteration(self, p)
+
+proc put_oninvalid*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oninvalid(self, v)
+
+proc get_oninvalid*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oninvalid(self, p)
+
+proc put_xmsAcceleratorKey*(
+    self: ptr IHTMLElement7, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_xmsAcceleratorKey(self, v)
+
+proc get_xmsAcceleratorKey*(
+    self: ptr IHTMLElement7, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_xmsAcceleratorKey(self, p)
+
+proc put_spellcheck*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_spellcheck(self, v)
+
+proc get_spellcheck*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_spellcheck(self, p)
+
+proc put_onmsmanipulationstatechanged*(
+    self: ptr IHTMLElement7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsmanipulationstatechanged(self, v)
+
+proc get_onmsmanipulationstatechanged*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsmanipulationstatechanged(self, p)
+
+proc put_oncuechange*(self: ptr IHTMLElement7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncuechange(self, v)
+
+proc get_oncuechange*(
+    self: ptr IHTMLElement7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncuechange(self, p)
+
+proc msGetRulesApplied*(
+    self: ptr IHTMLElementAppliedStyles,
+    ppRulesAppliedCollection: ptr ptr IRulesAppliedCollection,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.msGetRulesApplied(self, ppRulesAppliedCollection)
+
+proc msGetRulesAppliedWithAncestor*(
+    self: ptr IHTMLElementAppliedStyles,
+    varContext: VARIANT,
+    ppRulesAppliedCollection: ptr ptr IRulesAppliedCollection,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.msGetRulesAppliedWithAncestor(
+      self, varContext, ppRulesAppliedCollection
+    )
+
+proc get_firstElementChild*(
+    self: ptr IElementTraversal, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_firstElementChild(self, p)
+
+proc get_lastElementChild*(
+    self: ptr IElementTraversal, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lastElementChild(self, p)
+
+proc get_previousElementSibling*(
+    self: ptr IElementTraversal, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_previousElementSibling(self, p)
+
+proc get_nextElementSibling*(
+    self: ptr IElementTraversal, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nextElementSibling(self, p)
+
+proc get_childElementCount*(
+    self: ptr IElementTraversal, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_childElementCount(self, p)
+
+proc put_dataFld*(self: ptr IHTMLDatabinding, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dataFld(self, v)
+
+proc get_dataFld*(self: ptr IHTMLDatabinding, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dataFld(self, p)
+
+proc put_dataSrc*(self: ptr IHTMLDatabinding, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dataSrc(self, v)
+
+proc get_dataSrc*(self: ptr IHTMLDatabinding, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dataSrc(self, p)
+
+proc put_dataFormatAs*(
+    self: ptr IHTMLDatabinding, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dataFormatAs(self, v)
+
+proc get_dataFormatAs*(
+    self: ptr IHTMLDatabinding, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dataFormatAs(self, p)
+
+proc get_style*(
+    self: ptr IHTMLElementDefaults, p: ptr ptr IHTMLStyle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_style(self, p)
+
+proc put_tabStop*(
+    self: ptr IHTMLElementDefaults, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_tabStop(self, v)
+
+proc get_tabStop*(
+    self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tabStop(self, p)
+
+proc put_viewInheritStyle*(
+    self: ptr IHTMLElementDefaults, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_viewInheritStyle(self, v)
+
+proc get_viewInheritStyle*(
+    self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_viewInheritStyle(self, p)
+
+proc put_viewMasterTab*(
+    self: ptr IHTMLElementDefaults, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_viewMasterTab(self, v)
+
+proc get_viewMasterTab*(
+    self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_viewMasterTab(self, p)
+
+proc put_scrollSegmentX*(
+    self: ptr IHTMLElementDefaults, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollSegmentX(self, v)
+
+proc get_scrollSegmentX*(
+    self: ptr IHTMLElementDefaults, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollSegmentX(self, p)
+
+proc put_scrollSegmentY*(
+    self: ptr IHTMLElementDefaults, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollSegmentY(self, v)
+
+proc get_scrollSegmentY*(
+    self: ptr IHTMLElementDefaults, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollSegmentY(self, p)
+
+proc put_isMultiLine*(
+    self: ptr IHTMLElementDefaults, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_isMultiLine(self, v)
+
+proc get_isMultiLine*(
+    self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_isMultiLine(self, p)
+
+proc put_contentEditable*(
+    self: ptr IHTMLElementDefaults, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_contentEditable(self, v)
+
+proc get_contentEditable*(
+    self: ptr IHTMLElementDefaults, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_contentEditable(self, p)
+
+proc put_canHaveHTML*(
+    self: ptr IHTMLElementDefaults, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_canHaveHTML(self, v)
+
+proc get_canHaveHTML*(
+    self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_canHaveHTML(self, p)
+
+proc putref_viewLink*(
+    self: ptr IHTMLElementDefaults, v: ptr IHTMLDocument
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_viewLink(self, v)
+
+proc get_viewLink*(
+    self: ptr IHTMLElementDefaults, p: ptr ptr IHTMLDocument
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_viewLink(self, p)
+
+proc put_frozen*(
+    self: ptr IHTMLElementDefaults, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_frozen(self, v)
+
+proc get_frozen*(
+    self: ptr IHTMLElementDefaults, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frozen(self, p)
+
+proc get_element*(
+    self: ptr IHTCDefaultDispatch, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_element(self, p)
+
+proc createEventObject*(
+    self: ptr IHTCDefaultDispatch, eventObj: ptr ptr IHTMLEventObj
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createEventObject(self, eventObj)
+
+proc get_defaults*(
+    self: ptr IHTCDefaultDispatch, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defaults(self, p)
+
+proc get_document*(
+    self: ptr IHTCDefaultDispatch, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_document(self, p)
+
+proc fireChange*(self: ptr IHTCPropertyBehavior): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.fireChange(self)
+
+proc put_value*(
+    self: ptr IHTCPropertyBehavior, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(
+    self: ptr IHTCPropertyBehavior, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc fire*(
+    self: ptr IHTCEventBehavior, pvar: ptr IHTMLEventObj
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.fire(self, pvar)
+
+proc fireEvent*(
+    self: ptr IHTCAttachBehavior, evt: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.fireEvent(self, evt)
+
+proc detachEvent*(self: ptr IHTCAttachBehavior): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.detachEvent(self)
+
+proc fireEvent*(
+    self: ptr IHTCAttachBehavior2, evt: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.fireEvent(self, evt)
+
+proc get_urn*(self: ptr IHTCDescBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_urn(self, p)
+
+proc get_name*(self: ptr IHTCDescBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc get_length*(
+    self: ptr IHTMLUrnCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc item*(
+    self: ptr IHTMLUrnCollection, index: LONG, ppUrn: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, ppUrn)
+
+proc get_recordset*(
+    self: ptr IHTMLGenericElement, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_recordset(self, p)
+
+proc namedRecordset*(
+    self: ptr IHTMLGenericElement,
+    dataMember: BSTR,
+    hierarchy: ptr VARIANT,
+    ppRecordset: ptr ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.namedRecordset(self, dataMember, hierarchy, ppRecordset)
+
+proc put_selectorText*(
+    self: ptr IHTMLStyleSheetRule, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_selectorText(self, v)
+
+proc get_selectorText*(
+    self: ptr IHTMLStyleSheetRule, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selectorText(self, p)
+
+proc get_style*(
+    self: ptr IHTMLStyleSheetRule, p: ptr ptr IHTMLRuleStyle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_style(self, p)
+
+proc get_readOnly*(
+    self: ptr IHTMLStyleSheetRule, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readOnly(self, p)
+
+proc get_msSpecificity*(
+    self: ptr IHTMLStyleSheetRuleApplied, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msSpecificity(self, p)
+
+proc msGetSpecificity*(
+    self: ptr IHTMLStyleSheetRuleApplied, index: LONG, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.msGetSpecificity(self, index, p)
+
+proc put_selectorText*(
+    self: ptr IHTMLStyleSheetRule2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_selectorText(self, v)
+
+proc get_selectorText*(
+    self: ptr IHTMLStyleSheetRule2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selectorText(self, p)
+
+proc get_length*(
+    self: ptr IHTMLStyleSheetRulesCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc item*(
+    self: ptr IHTMLStyleSheetRulesCollection,
+    index: LONG,
+    ppHTMLStyleSheetRule: ptr ptr IHTMLStyleSheetRule,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, ppHTMLStyleSheetRule)
+
+proc get_length*(
+    self: ptr IHTMLStyleSheetRulesCollection2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc item*(
+    self: ptr IHTMLStyleSheetRulesCollection2,
+    index: LONG,
+    ppHTMLCSSRule: ptr ptr IHTMLCSSRule,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, ppHTMLCSSRule)
+
+proc get_selector*(
+    self: ptr IHTMLStyleSheetPage, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selector(self, p)
+
+proc get_pseudoClass*(
+    self: ptr IHTMLStyleSheetPage, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pseudoClass(self, p)
+
+proc put_selectorText*(
+    self: ptr IHTMLStyleSheetPage2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_selectorText(self, v)
+
+proc get_selectorText*(
+    self: ptr IHTMLStyleSheetPage2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selectorText(self, p)
+
+proc get_style*(
+    self: ptr IHTMLStyleSheetPage2, p: ptr ptr IHTMLRuleStyle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_style(self, p)
+
+proc get_length*(
+    self: ptr IHTMLStyleSheetPagesCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc item*(
+    self: ptr IHTMLStyleSheetPagesCollection,
+    index: LONG,
+    ppHTMLStyleSheetPage: ptr ptr IHTMLStyleSheetPage,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, ppHTMLStyleSheetPage)
+
+proc put_title*(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_title(self, v)
+
+proc get_title*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_title(self, p)
+
+proc get_parentStyleSheet*(
+    self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheet
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parentStyleSheet(self, p)
+
+proc get_owningElement*(
+    self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_owningElement(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLStyleSheet, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLStyleSheet, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc get_readOnly*(
+    self: ptr IHTMLStyleSheet, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readOnly(self, p)
+
+proc get_imports*(
+    self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheetsCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_imports(self, p)
+
+proc put_href*(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_href(self, v)
+
+proc get_href*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc get_type*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc get_id*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_id(self, p)
+
+proc addImport*(
+    self: ptr IHTMLStyleSheet, bstrURL: BSTR, lIndex: LONG, plIndex: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addImport(self, bstrURL, lIndex, plIndex)
+
+proc addRule*(
+    self: ptr IHTMLStyleSheet,
+    bstrSelector: BSTR,
+    bstrStyle: BSTR,
+    lIndex: LONG,
+    plNewIndex: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addRule(self, bstrSelector, bstrStyle, lIndex, plNewIndex)
+
+proc removeImport*(
+    self: ptr IHTMLStyleSheet, lIndex: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeImport(self, lIndex)
+
+proc removeRule*(self: ptr IHTMLStyleSheet, lIndex: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeRule(self, lIndex)
+
+proc put_media*(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_media(self, v)
+
+proc get_media*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_media(self, p)
+
+proc put_cssText*(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cssText(self, v)
+
+proc get_cssText*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cssText(self, p)
+
+proc get_rules*(
+    self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheetRulesCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rules(self, p)
+
+proc get_pages*(
+    self: ptr IHTMLStyleSheet2, p: ptr ptr IHTMLStyleSheetPagesCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pages(self, p)
+
+proc addPageRule*(
+    self: ptr IHTMLStyleSheet2,
+    bstrSelector: BSTR,
+    bstrStyle: BSTR,
+    lIndex: LONG,
+    plNewIndex: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addPageRule(self, bstrSelector, bstrStyle, lIndex, plNewIndex)
+
+proc put_href*(self: ptr IHTMLStyleSheet3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_href(self, v)
+
+proc get_href*(self: ptr IHTMLStyleSheet3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc get_isAlternate*(
+    self: ptr IHTMLStyleSheet3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_isAlternate(self, p)
+
+proc get_isPrefAlternate*(
+    self: ptr IHTMLStyleSheet3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_isPrefAlternate(self, p)
+
+proc get_type*(self: ptr IHTMLStyleSheet4, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc get_href*(self: ptr IHTMLStyleSheet4, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc get_title*(self: ptr IHTMLStyleSheet4, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_title(self, p)
+
+proc get_ownerNode*(
+    self: ptr IHTMLStyleSheet4, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ownerNode(self, p)
+
+proc get_ownerRule*(
+    self: ptr IHTMLStyleSheet4, p: ptr ptr IHTMLCSSRule
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ownerRule(self, p)
+
+proc get_cssRules*(
+    self: ptr IHTMLStyleSheet4, p: ptr ptr IHTMLStyleSheetRulesCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cssRules(self, p)
+
+proc get_media*(
+    self: ptr IHTMLStyleSheet4, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_media(self, p)
+
+proc insertRule*(
+    self: ptr IHTMLStyleSheet4, bstrRule: BSTR, lIndex: LONG, plNewIndex: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertRule(self, bstrRule, lIndex, plNewIndex)
+
+proc deleteRule*(self: ptr IHTMLStyleSheet4, lIndex: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteRule(self, lIndex)
+
+proc get_length*(
+    self: ptr IHTMLStyleSheetsCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLStyleSheetsCollection, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc item*(
+    self: ptr IHTMLStyleSheetsCollection,
+    pvarIndex: ptr VARIANT,
+    pvarResult: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, pvarIndex, pvarResult)
+
+proc item*(
+    self: ptr IHTMLStyleSheetsCollection2, index: LONG, pvarResult: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, pvarResult)
+
+proc put_href*(self: ptr IHTMLLinkElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_href(self, v)
+
+proc get_href*(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc put_rel*(self: ptr IHTMLLinkElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rel(self, v)
+
+proc get_rel*(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rel(self, p)
+
+proc put_rev*(self: ptr IHTMLLinkElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rev(self, v)
+
+proc get_rev*(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rev(self, p)
+
+proc put_type*(self: ptr IHTMLLinkElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc get_readyState*(
+    self: ptr IHTMLLinkElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, p)
+
+proc put_onreadystatechange*(
+    self: ptr IHTMLLinkElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreadystatechange(self, v)
+
+proc get_onreadystatechange*(
+    self: ptr IHTMLLinkElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onreadystatechange(self, p)
+
+proc put_onload*(self: ptr IHTMLLinkElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onload(self, v)
+
+proc get_onload*(
+    self: ptr IHTMLLinkElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onload(self, p)
+
+proc put_onerror*(self: ptr IHTMLLinkElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onerror(self, v)
+
+proc get_onerror*(
+    self: ptr IHTMLLinkElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onerror(self, p)
+
+proc get_styleSheet*(
+    self: ptr IHTMLLinkElement, p: ptr ptr IHTMLStyleSheet
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_styleSheet(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLLinkElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLLinkElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc put_media*(self: ptr IHTMLLinkElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_media(self, v)
+
+proc get_media*(self: ptr IHTMLLinkElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_media(self, p)
+
+proc put_target*(self: ptr IHTMLLinkElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_target(self, v)
+
+proc get_target*(self: ptr IHTMLLinkElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_target(self, p)
+
+proc put_charset*(self: ptr IHTMLLinkElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_charset(self, v)
+
+proc get_charset*(
+    self: ptr IHTMLLinkElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_charset(self, p)
+
+proc put_hreflang*(self: ptr IHTMLLinkElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hreflang(self, v)
+
+proc get_hreflang*(
+    self: ptr IHTMLLinkElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hreflang(self, p)
+
+proc put_href*(self: ptr IHTMLLinkElement4, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_href(self, v)
+
+proc get_href*(self: ptr IHTMLLinkElement4, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc get_sheet*(
+    self: ptr IHTMLLinkElement5, p: ptr ptr IHTMLStyleSheet
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_sheet(self, p)
+
+proc get_htmlText*(self: ptr IHTMLTxtRange, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_htmlText(self, p)
+
+proc put_text*(self: ptr IHTMLTxtRange, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_text(self, v)
+
+proc get_text*(self: ptr IHTMLTxtRange, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_text(self, p)
+
+proc parentElement*(
+    self: ptr IHTMLTxtRange, parent: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.parentElement(self, parent)
+
+proc duplicate*(
+    self: ptr IHTMLTxtRange, Duplicate: ptr ptr IHTMLTxtRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.duplicate(self, Duplicate)
+
+proc inRange*(
+    self: ptr IHTMLTxtRange, Range: ptr IHTMLTxtRange, InRange: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.inRange(self, Range, InRange)
+
+proc isEqual*(
+    self: ptr IHTMLTxtRange, Range: ptr IHTMLTxtRange, IsEqual: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.isEqual(self, Range, IsEqual)
+
+proc scrollIntoView*(
+    self: ptr IHTMLTxtRange, fStart: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.scrollIntoView(self, fStart)
+
+proc collapse*(
+    self: ptr IHTMLTxtRange, Start: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.collapse(self, Start)
+
+proc expand*(
+    self: ptr IHTMLTxtRange, Unit: BSTR, Success: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.expand(self, Unit, Success)
+
+proc move*(
+    self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.move(self, Unit, Count, ActualCount)
+
+proc moveStart*(
+    self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.moveStart(self, Unit, Count, ActualCount)
+
+proc moveEnd*(
+    self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.moveEnd(self, Unit, Count, ActualCount)
+
+proc select*(self: ptr IHTMLTxtRange): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.select(self)
+
+proc pasteHTML*(self: ptr IHTMLTxtRange, html: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.pasteHTML(self, html)
+
+proc moveToElementText*(
+    self: ptr IHTMLTxtRange, element: ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.moveToElementText(self, element)
+
+proc setEndPoint*(
+    self: ptr IHTMLTxtRange, how: BSTR, SourceRange: ptr IHTMLTxtRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setEndPoint(self, how, SourceRange)
+
+proc compareEndPoints*(
+    self: ptr IHTMLTxtRange, how: BSTR, SourceRange: ptr IHTMLTxtRange, ret: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.compareEndPoints(self, how, SourceRange, ret)
+
+proc findText*(
+    self: ptr IHTMLTxtRange,
+    String: BSTR,
+    count: LONG,
+    Flags: LONG,
+    Success: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.findText(self, String, count, Flags, Success)
+
+proc moveToPoint*(
+    self: ptr IHTMLTxtRange, x: LONG, y: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.moveToPoint(self, x, y)
+
+proc getBookmark*(
+    self: ptr IHTMLTxtRange, Boolmark: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getBookmark(self, Boolmark)
+
+proc moveToBookmark*(
+    self: ptr IHTMLTxtRange, Bookmark: BSTR, Success: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.moveToBookmark(self, Bookmark, Success)
+
+proc queryCommandSupported*(
+    self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandSupported(self, cmdID, pfRet)
+
+proc queryCommandEnabled*(
+    self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandEnabled(self, cmdID, pfRet)
+
+proc queryCommandState*(
+    self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandState(self, cmdID, pfRet)
+
+proc queryCommandIndeterm*(
+    self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandIndeterm(self, cmdID, pfRet)
+
+proc queryCommandText*(
+    self: ptr IHTMLTxtRange, cmdID: BSTR, pcmdText: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandText(self, cmdID, pcmdText)
+
+proc queryCommandValue*(
+    self: ptr IHTMLTxtRange, cmdID: BSTR, pcmdValue: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandValue(self, cmdID, pcmdValue)
+
+proc execCommand*(
+    self: ptr IHTMLTxtRange,
+    cmdID: BSTR,
+    showUI: VARIANT_BOOL,
+    value: VARIANT,
+    pfRet: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.execCommand(self, cmdID, showUI, value, pfRet)
+
+proc execCommandShowHelp*(
+    self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.execCommandShowHelp(self, cmdID, pfRet)
+
+proc get_offsetTop*(
+    self: ptr IHTMLTextRangeMetrics, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offsetTop(self, p)
+
+proc get_offsetLeft*(
+    self: ptr IHTMLTextRangeMetrics, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offsetLeft(self, p)
+
+proc get_boundingTop*(
+    self: ptr IHTMLTextRangeMetrics, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_boundingTop(self, p)
+
+proc get_boundingLeft*(
+    self: ptr IHTMLTextRangeMetrics, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_boundingLeft(self, p)
+
+proc get_boundingWidth*(
+    self: ptr IHTMLTextRangeMetrics, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_boundingWidth(self, p)
+
+proc get_boundingHeight*(
+    self: ptr IHTMLTextRangeMetrics, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_boundingHeight(self, p)
+
+proc getClientRects*(
+    self: ptr IHTMLTextRangeMetrics2, pRectCol: ptr ptr IHTMLRectCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getClientRects(self, pRectCol)
+
+proc getBoundingClientRect*(
+    self: ptr IHTMLTextRangeMetrics2, pRect: ptr ptr IHTMLRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getBoundingClientRect(self, pRect)
+
+proc get_length*(
+    self: ptr IHTMLTxtRangeCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLTxtRangeCollection, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc item*(
+    self: ptr IHTMLTxtRangeCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, pvarIndex, pvarResult)
+
+proc get_startContainer*(
+    self: ptr IHTMLDOMRange, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_startContainer(self, p)
+
+proc get_startOffset*(
+    self: ptr IHTMLDOMRange, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_startOffset(self, p)
+
+proc get_endContainer*(
+    self: ptr IHTMLDOMRange, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_endContainer(self, p)
+
+proc get_endOffset*(self: ptr IHTMLDOMRange, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_endOffset(self, p)
+
+proc get_collapsed*(
+    self: ptr IHTMLDOMRange, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_collapsed(self, p)
+
+proc get_commonAncestorContainer*(
+    self: ptr IHTMLDOMRange, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_commonAncestorContainer(self, p)
+
+proc setStart*(
+    self: ptr IHTMLDOMRange, refNode: ptr IDispatch, offset: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setStart(self, refNode, offset)
+
+proc setEnd*(
+    self: ptr IHTMLDOMRange, refNode: ptr IDispatch, offset: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setEnd(self, refNode, offset)
+
+proc setStartBefore*(
+    self: ptr IHTMLDOMRange, refNode: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setStartBefore(self, refNode)
+
+proc setStartAfter*(
+    self: ptr IHTMLDOMRange, refNode: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setStartAfter(self, refNode)
+
+proc setEndBefore*(
+    self: ptr IHTMLDOMRange, refNode: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setEndBefore(self, refNode)
+
+proc setEndAfter*(
+    self: ptr IHTMLDOMRange, refNode: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setEndAfter(self, refNode)
+
+proc collapse*(
+    self: ptr IHTMLDOMRange, toStart: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.collapse(self, toStart)
+
+proc selectNode*(
+    self: ptr IHTMLDOMRange, refNode: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.selectNode(self, refNode)
+
+proc selectNodeContents*(
+    self: ptr IHTMLDOMRange, refNode: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.selectNodeContents(self, refNode)
+
+proc compareBoundaryPoints*(
+    self: ptr IHTMLDOMRange,
+    how: int16,
+    sourceRange: ptr IDispatch,
+    compareResult: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.compareBoundaryPoints(self, how, sourceRange, compareResult)
+
+proc deleteContents*(self: ptr IHTMLDOMRange): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteContents(self)
+
+proc extractContents*(
+    self: ptr IHTMLDOMRange, ppDocumentFragment: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.extractContents(self, ppDocumentFragment)
+
+proc cloneContents*(
+    self: ptr IHTMLDOMRange, ppDocumentFragment: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.cloneContents(self, ppDocumentFragment)
+
+proc insertNode*(
+    self: ptr IHTMLDOMRange, newNode: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertNode(self, newNode)
+
+proc surroundContents*(
+    self: ptr IHTMLDOMRange, newParent: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.surroundContents(self, newParent)
+
+proc cloneRange*(
+    self: ptr IHTMLDOMRange, ppClonedRange: ptr ptr IHTMLDOMRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.cloneRange(self, ppClonedRange)
+
+proc toString*(
+    self: ptr IHTMLDOMRange, pRangeString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toString(self, pRangeString)
+
+proc detach*(self: ptr IHTMLDOMRange): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.detach(self)
+
+proc getClientRects*(
+    self: ptr IHTMLDOMRange, ppRectCol: ptr ptr IHTMLRectCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getClientRects(self, ppRectCol)
+
+proc getBoundingClientRect*(
+    self: ptr IHTMLDOMRange, ppRect: ptr ptr IHTMLRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getBoundingClientRect(self, ppRect)
+
+proc put_action*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_action(self, v)
+
+proc get_action*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_action(self, p)
+
+proc put_dir*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dir(self, v)
+
+proc get_dir*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dir(self, p)
+
+proc put_encoding*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_encoding(self, v)
+
+proc get_encoding*(
+    self: ptr IHTMLFormElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_encoding(self, p)
+
+proc put_method*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_method(self, v)
+
+proc get_method*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_method(self, p)
+
+proc get_elements*(
+    self: ptr IHTMLFormElement, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_elements(self, p)
+
+proc put_target*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_target(self, v)
+
+proc get_target*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_target(self, p)
+
+proc put_name*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_onsubmit*(self: ptr IHTMLFormElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onsubmit(self, v)
+
+proc get_onsubmit*(
+    self: ptr IHTMLFormElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onsubmit(self, p)
+
+proc put_onreset*(self: ptr IHTMLFormElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreset(self, v)
+
+proc get_onreset*(
+    self: ptr IHTMLFormElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onreset(self, p)
+
+proc submit*(self: ptr IHTMLFormElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.submit(self)
+
+proc reset*(self: ptr IHTMLFormElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.reset(self)
+
+proc put_length*(self: ptr IHTMLFormElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_length(self, v)
+
+proc get_length*(self: ptr IHTMLFormElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLFormElement, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc item*(
+    self: ptr IHTMLFormElement, name: VARIANT, index: VARIANT, pdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, name, index, pdisp)
+
+proc tags*(
+    self: ptr IHTMLFormElement, tagName: VARIANT, pdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.tags(self, tagName, pdisp)
+
+proc put_acceptCharset*(
+    self: ptr IHTMLFormElement2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_acceptCharset(self, v)
+
+proc get_acceptCharset*(
+    self: ptr IHTMLFormElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_acceptCharset(self, p)
+
+proc urns*(
+    self: ptr IHTMLFormElement2, urn: VARIANT, pdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.urns(self, urn, pdisp)
+
+proc namedItem*(
+    self: ptr IHTMLFormElement3, name: BSTR, pdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.namedItem(self, name, pdisp)
+
+proc appendNameValuePair*(
+    self: ptr IHTMLSubmitData, name: BSTR, value: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendNameValuePair(self, name, value)
+
+proc appendNameFilePair*(
+    self: ptr IHTMLSubmitData, name: BSTR, filename: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendNameFilePair(self, name, filename)
+
+proc appendItemSeparator*(self: ptr IHTMLSubmitData): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendItemSeparator(self)
+
+proc put_action*(self: ptr IHTMLFormElement4, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_action(self, v)
+
+proc get_action*(self: ptr IHTMLFormElement4, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_action(self, p)
+
+proc put_tabIndex*(
+    self: ptr IHTMLControlElement, v: int16
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_tabIndex(self, v)
+
+proc get_tabIndex*(
+    self: ptr IHTMLControlElement, p: ptr int16
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tabIndex(self, p)
+
+proc focus*(self: ptr IHTMLControlElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.focus(self)
+
+proc put_accessKey*(
+    self: ptr IHTMLControlElement, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_accessKey(self, v)
+
+proc get_accessKey*(
+    self: ptr IHTMLControlElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accessKey(self, p)
+
+proc put_onblur*(
+    self: ptr IHTMLControlElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onblur(self, v)
+
+proc get_onblur*(
+    self: ptr IHTMLControlElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onblur(self, p)
+
+proc put_onfocus*(
+    self: ptr IHTMLControlElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onfocus(self, v)
+
+proc get_onfocus*(
+    self: ptr IHTMLControlElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onfocus(self, p)
+
+proc put_onresize*(
+    self: ptr IHTMLControlElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onresize(self, v)
+
+proc get_onresize*(
+    self: ptr IHTMLControlElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onresize(self, p)
+
+proc blur*(self: ptr IHTMLControlElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.blur(self)
+
+proc addFilter*(
+    self: ptr IHTMLControlElement, pUnk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addFilter(self, pUnk)
+
+proc removeFilter*(
+    self: ptr IHTMLControlElement, pUnk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeFilter(self, pUnk)
+
+proc get_clientHeight*(
+    self: ptr IHTMLControlElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientHeight(self, p)
+
+proc get_clientWidth*(
+    self: ptr IHTMLControlElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientWidth(self, p)
+
+proc get_clientTop*(
+    self: ptr IHTMLControlElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientTop(self, p)
+
+proc get_clientLeft*(
+    self: ptr IHTMLControlElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientLeft(self, p)
+
+proc createControlRange*(
+    self: ptr IHTMLTextContainer, range: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createControlRange(self, range)
+
+proc get_scrollHeight*(
+    self: ptr IHTMLTextContainer, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollHeight(self, p)
+
+proc get_scrollWidth*(
+    self: ptr IHTMLTextContainer, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollWidth(self, p)
+
+proc put_scrollTop*(self: ptr IHTMLTextContainer, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollTop(self, v)
+
+proc get_scrollTop*(
+    self: ptr IHTMLTextContainer, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollTop(self, p)
+
+proc put_scrollLeft*(
+    self: ptr IHTMLTextContainer, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollLeft(self, v)
+
+proc get_scrollLeft*(
+    self: ptr IHTMLTextContainer, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollLeft(self, p)
+
+proc put_onscroll*(
+    self: ptr IHTMLTextContainer, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onscroll(self, v)
+
+proc get_onscroll*(
+    self: ptr IHTMLTextContainer, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onscroll(self, p)
+
+proc select*(self: ptr IHTMLControlRange): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.select(self)
+
+proc add*(
+    self: ptr IHTMLControlRange, item: ptr IHTMLControlElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.add(self, item)
+
+proc remove*(self: ptr IHTMLControlRange, index: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.remove(self, index)
+
+proc item*(
+    self: ptr IHTMLControlRange, index: LONG, pdisp: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, pdisp)
+
+proc scrollIntoView*(
+    self: ptr IHTMLControlRange, varargStart: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.scrollIntoView(self, varargStart)
+
+proc queryCommandSupported*(
+    self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandSupported(self, cmdID, pfRet)
+
+proc queryCommandEnabled*(
+    self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandEnabled(self, cmdID, pfRet)
+
+proc queryCommandState*(
+    self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandState(self, cmdID, pfRet)
+
+proc queryCommandIndeterm*(
+    self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandIndeterm(self, cmdID, pfRet)
+
+proc queryCommandText*(
+    self: ptr IHTMLControlRange, cmdID: BSTR, pcmdText: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandText(self, cmdID, pcmdText)
+
+proc queryCommandValue*(
+    self: ptr IHTMLControlRange, cmdID: BSTR, pcmdValue: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandValue(self, cmdID, pcmdValue)
+
+proc execCommand*(
+    self: ptr IHTMLControlRange,
+    cmdID: BSTR,
+    showUI: VARIANT_BOOL,
+    value: VARIANT,
+    pfRet: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.execCommand(self, cmdID, showUI, value, pfRet)
+
+proc execCommandShowHelp*(
+    self: ptr IHTMLControlRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.execCommandShowHelp(self, cmdID, pfRet)
+
+proc commonParentElement*(
+    self: ptr IHTMLControlRange, parent: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.commonParentElement(self, parent)
+
+proc get_length*(self: ptr IHTMLControlRange, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc addElement*(
+    self: ptr IHTMLControlRange2, item: ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addElement(self, item)
+
+proc put_isMap*(
+    self: ptr IHTMLImgElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_isMap(self, v)
+
+proc get_isMap*(
+    self: ptr IHTMLImgElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_isMap(self, p)
+
+proc put_useMap*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_useMap(self, v)
+
+proc get_useMap*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_useMap(self, p)
+
+proc get_mimeType*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_mimeType(self, p)
+
+proc get_fileSize*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fileSize(self, p)
+
+proc get_fileCreatedDate*(
+    self: ptr IHTMLImgElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fileCreatedDate(self, p)
+
+proc get_fileModifiedDate*(
+    self: ptr IHTMLImgElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fileModifiedDate(self, p)
+
+proc get_fileUpdatedDate*(
+    self: ptr IHTMLImgElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fileUpdatedDate(self, p)
+
+proc get_protocol*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_protocol(self, p)
+
+proc get_href*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc get_nameProp*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nameProp(self, p)
+
+proc put_border*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_border(self, v)
+
+proc get_border*(
+    self: ptr IHTMLImgElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_border(self, p)
+
+proc put_vspace*(self: ptr IHTMLImgElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vspace(self, v)
+
+proc get_vspace*(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vspace(self, p)
+
+proc put_hspace*(self: ptr IHTMLImgElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hspace(self, v)
+
+proc get_hspace*(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hspace(self, p)
+
+proc put_alt*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_alt(self, v)
+
+proc get_alt*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_alt(self, p)
+
+proc put_src*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_src(self, v)
+
+proc get_src*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_src(self, p)
+
+proc put_lowsrc*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lowsrc(self, v)
+
+proc get_lowsrc*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lowsrc(self, p)
+
+proc put_vrml*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vrml(self, v)
+
+proc get_vrml*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vrml(self, p)
+
+proc put_dynsrc*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dynsrc(self, v)
+
+proc get_dynsrc*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dynsrc(self, p)
+
+proc get_readyState*(
+    self: ptr IHTMLImgElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, p)
+
+proc get_complete*(
+    self: ptr IHTMLImgElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_complete(self, p)
+
+proc put_loop*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_loop(self, v)
+
+proc get_loop*(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_loop(self, p)
+
+proc put_align*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_onload*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onload(self, v)
+
+proc get_onload*(
+    self: ptr IHTMLImgElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onload(self, p)
+
+proc put_onerror*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onerror(self, v)
+
+proc get_onerror*(
+    self: ptr IHTMLImgElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onerror(self, p)
+
+proc put_onabort*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onabort(self, v)
+
+proc get_onabort*(
+    self: ptr IHTMLImgElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onabort(self, p)
+
+proc put_name*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_width*(self: ptr IHTMLImgElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_height*(self: ptr IHTMLImgElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_start*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_start(self, v)
+
+proc get_start*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_start(self, p)
+
+proc put_longDesc*(self: ptr IHTMLImgElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_longDesc(self, v)
+
+proc get_longDesc*(
+    self: ptr IHTMLImgElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_longDesc(self, p)
+
+proc put_longDesc*(self: ptr IHTMLImgElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_longDesc(self, v)
+
+proc get_longDesc*(
+    self: ptr IHTMLImgElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_longDesc(self, p)
+
+proc put_vrml*(self: ptr IHTMLImgElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vrml(self, v)
+
+proc get_vrml*(self: ptr IHTMLImgElement3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vrml(self, p)
+
+proc put_lowsrc*(self: ptr IHTMLImgElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lowsrc(self, v)
+
+proc get_lowsrc*(self: ptr IHTMLImgElement3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lowsrc(self, p)
+
+proc put_dynsrc*(self: ptr IHTMLImgElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dynsrc(self, v)
+
+proc get_dynsrc*(self: ptr IHTMLImgElement3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dynsrc(self, p)
+
+proc get_naturalWidth*(
+    self: ptr IHTMLImgElement4, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_naturalWidth(self, p)
+
+proc get_naturalHeight*(
+    self: ptr IHTMLImgElement4, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_naturalHeight(self, p)
+
+proc put_msPlayToDisabled*(
+    self: ptr IHTMLMSImgElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msPlayToDisabled(self, v)
+
+proc get_msPlayToDisabled*(
+    self: ptr IHTMLMSImgElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msPlayToDisabled(self, p)
+
+proc put_msPlayToPrimary*(
+    self: ptr IHTMLMSImgElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msPlayToPrimary(self, v)
+
+proc get_msPlayToPrimary*(
+    self: ptr IHTMLMSImgElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msPlayToPrimary(self, p)
+
+proc create*(
+    self: ptr IHTMLImageElementFactory,
+    width: VARIANT,
+    height: VARIANT,
+    a: ptr ptr IHTMLImgElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.create(self, width, height, a)
+
+proc put_background*(self: ptr IHTMLBodyElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_background(self, v)
+
+proc get_background*(
+    self: ptr IHTMLBodyElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_background(self, p)
+
+proc put_bgProperties*(
+    self: ptr IHTMLBodyElement, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_bgProperties(self, v)
+
+proc get_bgProperties*(
+    self: ptr IHTMLBodyElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bgProperties(self, p)
+
+proc put_leftMargin*(
+    self: ptr IHTMLBodyElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_leftMargin(self, v)
+
+proc get_leftMargin*(
+    self: ptr IHTMLBodyElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_leftMargin(self, p)
+
+proc put_topMargin*(
+    self: ptr IHTMLBodyElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_topMargin(self, v)
+
+proc get_topMargin*(
+    self: ptr IHTMLBodyElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_topMargin(self, p)
+
+proc put_rightMargin*(
+    self: ptr IHTMLBodyElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rightMargin(self, v)
+
+proc get_rightMargin*(
+    self: ptr IHTMLBodyElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rightMargin(self, p)
+
+proc put_bottomMargin*(
+    self: ptr IHTMLBodyElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_bottomMargin(self, v)
+
+proc get_bottomMargin*(
+    self: ptr IHTMLBodyElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bottomMargin(self, p)
+
+proc put_noWrap*(
+    self: ptr IHTMLBodyElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_noWrap(self, v)
+
+proc get_noWrap*(
+    self: ptr IHTMLBodyElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_noWrap(self, p)
+
+proc put_bgColor*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_bgColor(self, v)
+
+proc get_bgColor*(
+    self: ptr IHTMLBodyElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bgColor(self, p)
+
+proc put_text*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_text(self, v)
+
+proc get_text*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_text(self, p)
+
+proc put_link*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_link(self, v)
+
+proc get_link*(self: ptr IHTMLBodyElement, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_link(self, p)
+
+proc put_vLink*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vLink(self, v)
+
+proc get_vLink*(
+    self: ptr IHTMLBodyElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vLink(self, p)
+
+proc put_aLink*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_aLink(self, v)
+
+proc get_aLink*(
+    self: ptr IHTMLBodyElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_aLink(self, p)
+
+proc put_onload*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onload(self, v)
+
+proc get_onload*(
+    self: ptr IHTMLBodyElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onload(self, p)
+
+proc put_onunload*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onunload(self, v)
+
+proc get_onunload*(
+    self: ptr IHTMLBodyElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onunload(self, p)
+
+proc put_scroll*(self: ptr IHTMLBodyElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scroll(self, v)
+
+proc get_scroll*(self: ptr IHTMLBodyElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scroll(self, p)
+
+proc put_onselect*(self: ptr IHTMLBodyElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onselect(self, v)
+
+proc get_onselect*(
+    self: ptr IHTMLBodyElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onselect(self, p)
+
+proc put_onbeforeunload*(
+    self: ptr IHTMLBodyElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforeunload(self, v)
+
+proc get_onbeforeunload*(
+    self: ptr IHTMLBodyElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforeunload(self, p)
+
+proc createTextRange*(
+    self: ptr IHTMLBodyElement, range: ptr ptr IHTMLTxtRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createTextRange(self, range)
+
+proc put_onbeforeprint*(
+    self: ptr IHTMLBodyElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforeprint(self, v)
+
+proc get_onbeforeprint*(
+    self: ptr IHTMLBodyElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforeprint(self, p)
+
+proc put_onafterprint*(
+    self: ptr IHTMLBodyElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onafterprint(self, v)
+
+proc get_onafterprint*(
+    self: ptr IHTMLBodyElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onafterprint(self, p)
+
+proc put_background*(self: ptr IHTMLBodyElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_background(self, v)
+
+proc get_background*(
+    self: ptr IHTMLBodyElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_background(self, p)
+
+proc put_ononline*(
+    self: ptr IHTMLBodyElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ononline(self, v)
+
+proc get_ononline*(
+    self: ptr IHTMLBodyElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ononline(self, p)
+
+proc put_onoffline*(
+    self: ptr IHTMLBodyElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onoffline(self, v)
+
+proc get_onoffline*(
+    self: ptr IHTMLBodyElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onoffline(self, p)
+
+proc put_onhashchange*(
+    self: ptr IHTMLBodyElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onhashchange(self, v)
+
+proc get_onhashchange*(
+    self: ptr IHTMLBodyElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onhashchange(self, p)
+
+proc put_onmessage*(
+    self: ptr IHTMLBodyElement4, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmessage(self, v)
+
+proc get_onmessage*(
+    self: ptr IHTMLBodyElement4, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmessage(self, p)
+
+proc put_onstorage*(
+    self: ptr IHTMLBodyElement4, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onstorage(self, v)
+
+proc get_onstorage*(
+    self: ptr IHTMLBodyElement4, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onstorage(self, p)
+
+proc put_onpopstate*(
+    self: ptr IHTMLBodyElement5, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onpopstate(self, v)
+
+proc get_onpopstate*(
+    self: ptr IHTMLBodyElement5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onpopstate(self, p)
+
+proc put_color*(self: ptr IHTMLFontElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_color(self, v)
+
+proc get_color*(
+    self: ptr IHTMLFontElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_color(self, p)
+
+proc put_face*(self: ptr IHTMLFontElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_face(self, v)
+
+proc get_face*(self: ptr IHTMLFontElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_face(self, p)
+
+proc put_size*(self: ptr IHTMLFontElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_size(self, v)
+
+proc get_size*(self: ptr IHTMLFontElement, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_size(self, p)
+
+proc put_href*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_href(self, v)
+
+proc get_href*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc put_target*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_target(self, v)
+
+proc get_target*(
+    self: ptr IHTMLAnchorElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_target(self, p)
+
+proc put_rel*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rel(self, v)
+
+proc get_rel*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rel(self, p)
+
+proc put_rev*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rev(self, v)
+
+proc get_rev*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rev(self, p)
+
+proc put_urn*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_urn(self, v)
+
+proc get_urn*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_urn(self, p)
+
+proc put_Methods*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Methods(self, v)
+
+proc get_Methods*(
+    self: ptr IHTMLAnchorElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Methods(self, p)
+
+proc put_name*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_host*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_host(self, v)
+
+proc get_host*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_host(self, p)
+
+proc put_hostname*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hostname(self, v)
+
+proc get_hostname*(
+    self: ptr IHTMLAnchorElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hostname(self, p)
+
+proc put_pathname*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pathname(self, v)
+
+proc get_pathname*(
+    self: ptr IHTMLAnchorElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pathname(self, p)
+
+proc put_port*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_port(self, v)
+
+proc get_port*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_port(self, p)
+
+proc put_protocol*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_protocol(self, v)
+
+proc get_protocol*(
+    self: ptr IHTMLAnchorElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_protocol(self, p)
+
+proc put_search*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_search(self, v)
+
+proc get_search*(
+    self: ptr IHTMLAnchorElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_search(self, p)
+
+proc put_hash*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hash(self, v)
+
+proc get_hash*(self: ptr IHTMLAnchorElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hash(self, p)
+
+proc put_onblur*(self: ptr IHTMLAnchorElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onblur(self, v)
+
+proc get_onblur*(
+    self: ptr IHTMLAnchorElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onblur(self, p)
+
+proc put_onfocus*(
+    self: ptr IHTMLAnchorElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onfocus(self, v)
+
+proc get_onfocus*(
+    self: ptr IHTMLAnchorElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onfocus(self, p)
+
+proc put_accessKey*(self: ptr IHTMLAnchorElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_accessKey(self, v)
+
+proc get_accessKey*(
+    self: ptr IHTMLAnchorElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accessKey(self, p)
+
+proc get_protocolLong*(
+    self: ptr IHTMLAnchorElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_protocolLong(self, p)
+
+proc get_mimeType*(
+    self: ptr IHTMLAnchorElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_mimeType(self, p)
+
+proc get_nameProp*(
+    self: ptr IHTMLAnchorElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nameProp(self, p)
+
+proc put_tabIndex*(self: ptr IHTMLAnchorElement, v: int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_tabIndex(self, v)
+
+proc get_tabIndex*(
+    self: ptr IHTMLAnchorElement, p: ptr int16
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tabIndex(self, p)
+
+proc focus*(self: ptr IHTMLAnchorElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.focus(self)
+
+proc blur*(self: ptr IHTMLAnchorElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.blur(self)
+
+proc put_charset*(self: ptr IHTMLAnchorElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_charset(self, v)
+
+proc get_charset*(
+    self: ptr IHTMLAnchorElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_charset(self, p)
+
+proc put_coords*(self: ptr IHTMLAnchorElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_coords(self, v)
+
+proc get_coords*(
+    self: ptr IHTMLAnchorElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_coords(self, p)
+
+proc put_hreflang*(self: ptr IHTMLAnchorElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hreflang(self, v)
+
+proc get_hreflang*(
+    self: ptr IHTMLAnchorElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hreflang(self, p)
+
+proc put_shape*(self: ptr IHTMLAnchorElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_shape(self, v)
+
+proc get_shape*(
+    self: ptr IHTMLAnchorElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_shape(self, p)
+
+proc put_type*(self: ptr IHTMLAnchorElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr IHTMLAnchorElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_shape*(self: ptr IHTMLAnchorElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_shape(self, v)
+
+proc get_shape*(
+    self: ptr IHTMLAnchorElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_shape(self, p)
+
+proc put_coords*(self: ptr IHTMLAnchorElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_coords(self, v)
+
+proc get_coords*(
+    self: ptr IHTMLAnchorElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_coords(self, p)
+
+proc put_href*(self: ptr IHTMLAnchorElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_href(self, v)
+
+proc get_href*(self: ptr IHTMLAnchorElement3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc put_htmlFor*(self: ptr IHTMLLabelElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_htmlFor(self, v)
+
+proc get_htmlFor*(
+    self: ptr IHTMLLabelElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_htmlFor(self, p)
+
+proc put_accessKey*(self: ptr IHTMLLabelElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_accessKey(self, v)
+
+proc get_accessKey*(
+    self: ptr IHTMLLabelElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accessKey(self, p)
+
+proc get_form*(
+    self: ptr IHTMLLabelElement2, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc put_compact*(
+    self: ptr IHTMLListElement2, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_compact(self, v)
+
+proc get_compact*(
+    self: ptr IHTMLListElement2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_compact(self, p)
+
+proc put_compact*(
+    self: ptr IHTMLUListElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_compact(self, v)
+
+proc get_compact*(
+    self: ptr IHTMLUListElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_compact(self, p)
+
+proc put_type*(self: ptr IHTMLUListElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr IHTMLUListElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_compact*(
+    self: ptr IHTMLOListElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_compact(self, v)
+
+proc get_compact*(
+    self: ptr IHTMLOListElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_compact(self, p)
+
+proc put_start*(self: ptr IHTMLOListElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_start(self, v)
+
+proc get_start*(self: ptr IHTMLOListElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_start(self, p)
+
+proc put_type*(self: ptr IHTMLOListElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr IHTMLOListElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_type*(self: ptr IHTMLLIElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr IHTMLLIElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_value*(self: ptr IHTMLLIElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(self: ptr IHTMLLIElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_clear*(self: ptr IHTMLBlockElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clear(self, v)
+
+proc get_clear*(self: ptr IHTMLBlockElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clear(self, p)
+
+proc put_cite*(self: ptr IHTMLBlockElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cite(self, v)
+
+proc get_cite*(self: ptr IHTMLBlockElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cite(self, p)
+
+proc put_width*(self: ptr IHTMLBlockElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(self: ptr IHTMLBlockElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_cite*(self: ptr IHTMLBlockElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cite(self, v)
+
+proc get_cite*(self: ptr IHTMLBlockElement3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cite(self, p)
+
+proc put_align*(self: ptr IHTMLDivElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLDivElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_noWrap*(
+    self: ptr IHTMLDivElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_noWrap(self, v)
+
+proc get_noWrap*(
+    self: ptr IHTMLDivElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_noWrap(self, p)
+
+proc put_noWrap*(
+    self: ptr IHTMLDDElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_noWrap(self, v)
+
+proc get_noWrap*(
+    self: ptr IHTMLDDElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_noWrap(self, p)
+
+proc put_noWrap*(
+    self: ptr IHTMLDTElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_noWrap(self, v)
+
+proc get_noWrap*(
+    self: ptr IHTMLDTElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_noWrap(self, p)
+
+proc put_clear*(self: ptr IHTMLBRElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clear(self, v)
+
+proc get_clear*(self: ptr IHTMLBRElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clear(self, p)
+
+proc put_compact*(
+    self: ptr IHTMLDListElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_compact(self, v)
+
+proc get_compact*(
+    self: ptr IHTMLDListElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_compact(self, p)
+
+proc put_align*(self: ptr IHTMLHRElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLHRElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_color*(self: ptr IHTMLHRElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_color(self, v)
+
+proc get_color*(self: ptr IHTMLHRElement, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_color(self, p)
+
+proc put_noShade*(
+    self: ptr IHTMLHRElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_noShade(self, v)
+
+proc get_noShade*(
+    self: ptr IHTMLHRElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_noShade(self, p)
+
+proc put_width*(self: ptr IHTMLHRElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(self: ptr IHTMLHRElement, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_size*(self: ptr IHTMLHRElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_size(self, v)
+
+proc get_size*(self: ptr IHTMLHRElement, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_size(self, p)
+
+proc put_align*(self: ptr IHTMLParaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLParaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc toString*(
+    self: ptr IHTMLElementCollection, String: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toString(self, String)
+
+proc put_length*(
+    self: ptr IHTMLElementCollection, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_length(self, v)
+
+proc get_length*(
+    self: ptr IHTMLElementCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLElementCollection, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc item*(
+    self: ptr IHTMLElementCollection,
+    name: VARIANT,
+    index: VARIANT,
+    pdisp: ptr ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, name, index, pdisp)
+
+proc tags*(
+    self: ptr IHTMLElementCollection, tagName: VARIANT, pdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.tags(self, tagName, pdisp)
+
+proc urns*(
+    self: ptr IHTMLElementCollection2, urn: VARIANT, pdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.urns(self, urn, pdisp)
+
+proc namedItem*(
+    self: ptr IHTMLElementCollection3, name: BSTR, pdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.namedItem(self, name, pdisp)
+
+proc get_length*(
+    self: ptr IHTMLElementCollection4, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc item*(
+    self: ptr IHTMLElementCollection4, index: LONG, pNode: ptr ptr IHTMLElement2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, pNode)
+
+proc namedItem*(
+    self: ptr IHTMLElementCollection4, name: BSTR, pNode: ptr ptr IHTMLElement2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.namedItem(self, name, pNode)
+
+proc put_align*(self: ptr IHTMLHeaderElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLHeaderElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc ShowDropdown*(
+    self: ptr IHTMLSelectElementEx, fShow: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowDropdown(self, fShow)
+
+proc SetSelectExFlags*(
+    self: ptr IHTMLSelectElementEx, lFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSelectExFlags(self, lFlags)
+
+proc GetSelectExFlags*(
+    self: ptr IHTMLSelectElementEx, pFlags: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelectExFlags(self, pFlags)
+
+proc GetDropdownOpen*(
+    self: ptr IHTMLSelectElementEx, pfOpen: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDropdownOpen(self, pfOpen)
+
+proc put_size*(self: ptr IHTMLSelectElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_size(self, v)
+
+proc get_size*(self: ptr IHTMLSelectElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_size(self, p)
+
+proc put_multiple*(
+    self: ptr IHTMLSelectElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_multiple(self, v)
+
+proc get_multiple*(
+    self: ptr IHTMLSelectElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_multiple(self, p)
+
+proc put_name*(self: ptr IHTMLSelectElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLSelectElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc get_options*(
+    self: ptr IHTMLSelectElement, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_options(self, p)
+
+proc put_onchange*(
+    self: ptr IHTMLSelectElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onchange(self, v)
+
+proc get_onchange*(
+    self: ptr IHTMLSelectElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onchange(self, p)
+
+proc put_selectedIndex*(
+    self: ptr IHTMLSelectElement, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_selectedIndex(self, v)
+
+proc get_selectedIndex*(
+    self: ptr IHTMLSelectElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selectedIndex(self, p)
+
+proc get_type*(self: ptr IHTMLSelectElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_value*(self: ptr IHTMLSelectElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(self: ptr IHTMLSelectElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLSelectElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLSelectElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc get_form*(
+    self: ptr IHTMLSelectElement, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc add*(
+    self: ptr IHTMLSelectElement, element: ptr IHTMLElement, before: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.add(self, element, before)
+
+proc remove*(self: ptr IHTMLSelectElement, index: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.remove(self, index)
+
+proc put_length*(self: ptr IHTMLSelectElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_length(self, v)
+
+proc get_length*(
+    self: ptr IHTMLSelectElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLSelectElement, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc item*(
+    self: ptr IHTMLSelectElement,
+    name: VARIANT,
+    index: VARIANT,
+    pdisp: ptr ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, name, index, pdisp)
+
+proc tags*(
+    self: ptr IHTMLSelectElement, tagName: VARIANT, pdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.tags(self, tagName, pdisp)
+
+proc urns*(
+    self: ptr IHTMLSelectElement2, urn: VARIANT, pdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.urns(self, urn, pdisp)
+
+proc namedItem*(
+    self: ptr IHTMLSelectElement4, name: BSTR, pdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.namedItem(self, name, pdisp)
+
+proc add*(
+    self: ptr IHTMLSelectElement5,
+    pElem: ptr IHTMLOptionElement,
+    pvarBefore: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.add(self, pElem, pvarBefore)
+
+proc add*(
+    self: ptr IHTMLSelectElement6,
+    pElem: ptr IHTMLOptionElement,
+    pvarBefore: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.add(self, pElem, pvarBefore)
+
+proc put_value*(self: ptr IHTMLSelectElement6, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(
+    self: ptr IHTMLSelectElement6, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc createRange*(
+    self: ptr IHTMLSelectionObject, range: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createRange(self, range)
+
+proc empty*(self: ptr IHTMLSelectionObject): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.empty(self)
+
+proc clear*(self: ptr IHTMLSelectionObject): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clear(self)
+
+proc get_type*(
+    self: ptr IHTMLSelectionObject, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc createRangeCollection*(
+    self: ptr IHTMLSelectionObject2, rangeCollection: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createRangeCollection(self, rangeCollection)
+
+proc get_typeDetail*(
+    self: ptr IHTMLSelectionObject2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_typeDetail(self, p)
+
+proc get_anchorNode*(
+    self: ptr IHTMLSelection, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_anchorNode(self, p)
+
+proc get_anchorOffset*(
+    self: ptr IHTMLSelection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_anchorOffset(self, p)
+
+proc get_focusNode*(
+    self: ptr IHTMLSelection, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_focusNode(self, p)
+
+proc get_focusOffset*(
+    self: ptr IHTMLSelection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_focusOffset(self, p)
+
+proc get_isCollapsed*(
+    self: ptr IHTMLSelection, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_isCollapsed(self, p)
+
+proc collapse*(
+    self: ptr IHTMLSelection, parentNode: ptr IDispatch, offfset: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.collapse(self, parentNode, offfset)
+
+proc collapseToStart*(self: ptr IHTMLSelection): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.collapseToStart(self)
+
+proc collapseToEnd*(self: ptr IHTMLSelection): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.collapseToEnd(self)
+
+proc selectAllChildren*(
+    self: ptr IHTMLSelection, parentNode: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.selectAllChildren(self, parentNode)
+
+proc deleteFromDocument*(self: ptr IHTMLSelection): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteFromDocument(self)
+
+proc get_rangeCount*(
+    self: ptr IHTMLSelection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rangeCount(self, p)
+
+proc getRangeAt*(
+    self: ptr IHTMLSelection, index: LONG, ppRange: ptr ptr IHTMLDOMRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getRangeAt(self, index, ppRange)
+
+proc addRange*(
+    self: ptr IHTMLSelection, range: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addRange(self, range)
+
+proc removeRange*(
+    self: ptr IHTMLSelection, range: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeRange(self, range)
+
+proc removeAllRanges*(self: ptr IHTMLSelection): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAllRanges(self)
+
+proc toString*(
+    self: ptr IHTMLSelection, pSelectionString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toString(self, pSelectionString)
+
+proc put_selected*(
+    self: ptr IHTMLOptionElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_selected(self, v)
+
+proc get_selected*(
+    self: ptr IHTMLOptionElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selected(self, p)
+
+proc put_value*(self: ptr IHTMLOptionElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(self: ptr IHTMLOptionElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_defaultSelected*(
+    self: ptr IHTMLOptionElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_defaultSelected(self, v)
+
+proc get_defaultSelected*(
+    self: ptr IHTMLOptionElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defaultSelected(self, p)
+
+proc put_index*(self: ptr IHTMLOptionElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_index(self, v)
+
+proc get_index*(self: ptr IHTMLOptionElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_index(self, p)
+
+proc put_text*(self: ptr IHTMLOptionElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_text(self, v)
+
+proc get_text*(self: ptr IHTMLOptionElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_text(self, p)
+
+proc get_form*(
+    self: ptr IHTMLOptionElement, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc put_label*(self: ptr IHTMLOptionElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_label(self, v)
+
+proc get_label*(
+    self: ptr IHTMLOptionElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_label(self, p)
+
+proc put_value*(self: ptr IHTMLOptionElement4, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(
+    self: ptr IHTMLOptionElement4, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc create*(
+    self: ptr IHTMLOptionElementFactory,
+    text: VARIANT,
+    value: VARIANT,
+    defaultselected: VARIANT,
+    selected: VARIANT,
+    a: ptr ptr IHTMLOptionElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.create(self, text, value, defaultselected, selected, a)
+
+proc put_type*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_value*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_name*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_status*(
+    self: ptr IHTMLInputElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_status(self, v)
+
+proc get_status*(
+    self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_status(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLInputElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc get_form*(
+    self: ptr IHTMLInputElement, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc put_size*(self: ptr IHTMLInputElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_size(self, v)
+
+proc get_size*(self: ptr IHTMLInputElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_size(self, p)
+
+proc put_maxLength*(self: ptr IHTMLInputElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_maxLength(self, v)
+
+proc get_maxLength*(
+    self: ptr IHTMLInputElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maxLength(self, p)
+
+proc select*(self: ptr IHTMLInputElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.select(self)
+
+proc put_onchange*(
+    self: ptr IHTMLInputElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onchange(self, v)
+
+proc get_onchange*(
+    self: ptr IHTMLInputElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onchange(self, p)
+
+proc put_onselect*(
+    self: ptr IHTMLInputElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onselect(self, v)
+
+proc get_onselect*(
+    self: ptr IHTMLInputElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onselect(self, p)
+
+proc put_defaultValue*(
+    self: ptr IHTMLInputElement, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_defaultValue(self, v)
+
+proc get_defaultValue*(
+    self: ptr IHTMLInputElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defaultValue(self, p)
+
+proc put_readOnly*(
+    self: ptr IHTMLInputElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_readOnly(self, v)
+
+proc get_readOnly*(
+    self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readOnly(self, p)
+
+proc createTextRange*(
+    self: ptr IHTMLInputElement, range: ptr ptr IHTMLTxtRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createTextRange(self, range)
+
+proc put_indeterminate*(
+    self: ptr IHTMLInputElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_indeterminate(self, v)
+
+proc get_indeterminate*(
+    self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_indeterminate(self, p)
+
+proc put_defaultChecked*(
+    self: ptr IHTMLInputElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_defaultChecked(self, v)
+
+proc get_defaultChecked*(
+    self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defaultChecked(self, p)
+
+proc put_checked*(
+    self: ptr IHTMLInputElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_checked(self, v)
+
+proc get_checked*(
+    self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_checked(self, p)
+
+proc put_border*(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_border(self, v)
+
+proc get_border*(
+    self: ptr IHTMLInputElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_border(self, p)
+
+proc put_vspace*(self: ptr IHTMLInputElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vspace(self, v)
+
+proc get_vspace*(self: ptr IHTMLInputElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vspace(self, p)
+
+proc put_hspace*(self: ptr IHTMLInputElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hspace(self, v)
+
+proc get_hspace*(self: ptr IHTMLInputElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hspace(self, p)
+
+proc put_alt*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_alt(self, v)
+
+proc get_alt*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_alt(self, p)
+
+proc put_src*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_src(self, v)
+
+proc get_src*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_src(self, p)
+
+proc put_lowsrc*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lowsrc(self, v)
+
+proc get_lowsrc*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lowsrc(self, p)
+
+proc put_vrml*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vrml(self, v)
+
+proc get_vrml*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vrml(self, p)
+
+proc put_dynsrc*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dynsrc(self, v)
+
+proc get_dynsrc*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dynsrc(self, p)
+
+proc get_readyState*(
+    self: ptr IHTMLInputElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, p)
+
+proc get_complete*(
+    self: ptr IHTMLInputElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_complete(self, p)
+
+proc put_loop*(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_loop(self, v)
+
+proc get_loop*(
+    self: ptr IHTMLInputElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_loop(self, p)
+
+proc put_align*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_onload*(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onload(self, v)
+
+proc get_onload*(
+    self: ptr IHTMLInputElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onload(self, p)
+
+proc put_onerror*(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onerror(self, v)
+
+proc get_onerror*(
+    self: ptr IHTMLInputElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onerror(self, p)
+
+proc put_onabort*(self: ptr IHTMLInputElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onabort(self, v)
+
+proc get_onabort*(
+    self: ptr IHTMLInputElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onabort(self, p)
+
+proc put_width*(self: ptr IHTMLInputElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(self: ptr IHTMLInputElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_height*(self: ptr IHTMLInputElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(self: ptr IHTMLInputElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_start*(self: ptr IHTMLInputElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_start(self, v)
+
+proc get_start*(self: ptr IHTMLInputElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_start(self, p)
+
+proc put_accept*(self: ptr IHTMLInputElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_accept(self, v)
+
+proc get_accept*(
+    self: ptr IHTMLInputElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accept(self, p)
+
+proc put_useMap*(self: ptr IHTMLInputElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_useMap(self, v)
+
+proc get_useMap*(
+    self: ptr IHTMLInputElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_useMap(self, p)
+
+proc put_src*(self: ptr IHTMLInputElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_src(self, v)
+
+proc get_src*(self: ptr IHTMLInputElement3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_src(self, p)
+
+proc put_lowsrc*(self: ptr IHTMLInputElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lowsrc(self, v)
+
+proc get_lowsrc*(
+    self: ptr IHTMLInputElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lowsrc(self, p)
+
+proc put_vrml*(self: ptr IHTMLInputElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vrml(self, v)
+
+proc get_vrml*(self: ptr IHTMLInputElement3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vrml(self, p)
+
+proc put_dynsrc*(self: ptr IHTMLInputElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dynsrc(self, v)
+
+proc get_dynsrc*(
+    self: ptr IHTMLInputElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dynsrc(self, p)
+
+proc get_type*(
+    self: ptr IHTMLInputButtonElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_value*(
+    self: ptr IHTMLInputButtonElement, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(
+    self: ptr IHTMLInputButtonElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_name*(self: ptr IHTMLInputButtonElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(
+    self: ptr IHTMLInputButtonElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_status*(
+    self: ptr IHTMLInputButtonElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_status(self, v)
+
+proc get_status*(
+    self: ptr IHTMLInputButtonElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_status(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLInputButtonElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLInputButtonElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc get_form*(
+    self: ptr IHTMLInputButtonElement, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc createTextRange*(
+    self: ptr IHTMLInputButtonElement, range: ptr ptr IHTMLTxtRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createTextRange(self, range)
+
+proc get_type*(
+    self: ptr IHTMLInputHiddenElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_value*(
+    self: ptr IHTMLInputHiddenElement, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(
+    self: ptr IHTMLInputHiddenElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_name*(self: ptr IHTMLInputHiddenElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(
+    self: ptr IHTMLInputHiddenElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_status*(
+    self: ptr IHTMLInputHiddenElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_status(self, v)
+
+proc get_status*(
+    self: ptr IHTMLInputHiddenElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_status(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLInputHiddenElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLInputHiddenElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc get_form*(
+    self: ptr IHTMLInputHiddenElement, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc createTextRange*(
+    self: ptr IHTMLInputHiddenElement, range: ptr ptr IHTMLTxtRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createTextRange(self, range)
+
+proc get_type*(
+    self: ptr IHTMLInputTextElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_value*(self: ptr IHTMLInputTextElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(
+    self: ptr IHTMLInputTextElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_name*(self: ptr IHTMLInputTextElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(
+    self: ptr IHTMLInputTextElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_status*(
+    self: ptr IHTMLInputTextElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_status(self, v)
+
+proc get_status*(
+    self: ptr IHTMLInputTextElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_status(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLInputTextElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLInputTextElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc get_form*(
+    self: ptr IHTMLInputTextElement, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc put_defaultValue*(
+    self: ptr IHTMLInputTextElement, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_defaultValue(self, v)
+
+proc get_defaultValue*(
+    self: ptr IHTMLInputTextElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defaultValue(self, p)
+
+proc put_size*(self: ptr IHTMLInputTextElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_size(self, v)
+
+proc get_size*(
+    self: ptr IHTMLInputTextElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_size(self, p)
+
+proc put_maxLength*(
+    self: ptr IHTMLInputTextElement, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_maxLength(self, v)
+
+proc get_maxLength*(
+    self: ptr IHTMLInputTextElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maxLength(self, p)
+
+proc select*(self: ptr IHTMLInputTextElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.select(self)
+
+proc put_onchange*(
+    self: ptr IHTMLInputTextElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onchange(self, v)
+
+proc get_onchange*(
+    self: ptr IHTMLInputTextElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onchange(self, p)
+
+proc put_onselect*(
+    self: ptr IHTMLInputTextElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onselect(self, v)
+
+proc get_onselect*(
+    self: ptr IHTMLInputTextElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onselect(self, p)
+
+proc put_readOnly*(
+    self: ptr IHTMLInputTextElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_readOnly(self, v)
+
+proc get_readOnly*(
+    self: ptr IHTMLInputTextElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readOnly(self, p)
+
+proc createTextRange*(
+    self: ptr IHTMLInputTextElement, range: ptr ptr IHTMLTxtRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createTextRange(self, range)
+
+proc put_selectionStart*(
+    self: ptr IHTMLInputTextElement2, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_selectionStart(self, v)
+
+proc get_selectionStart*(
+    self: ptr IHTMLInputTextElement2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selectionStart(self, p)
+
+proc put_selectionEnd*(
+    self: ptr IHTMLInputTextElement2, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_selectionEnd(self, v)
+
+proc get_selectionEnd*(
+    self: ptr IHTMLInputTextElement2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selectionEnd(self, p)
+
+proc setSelectionRange*(
+    self: ptr IHTMLInputTextElement2, start: LONG, `end`: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setSelectionRange(self, start, `end`)
+
+proc get_type*(
+    self: ptr IHTMLInputFileElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_name*(self: ptr IHTMLInputFileElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(
+    self: ptr IHTMLInputFileElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_status*(
+    self: ptr IHTMLInputFileElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_status(self, v)
+
+proc get_status*(
+    self: ptr IHTMLInputFileElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_status(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLInputFileElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLInputFileElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc get_form*(
+    self: ptr IHTMLInputFileElement, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc put_size*(self: ptr IHTMLInputFileElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_size(self, v)
+
+proc get_size*(
+    self: ptr IHTMLInputFileElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_size(self, p)
+
+proc put_maxLength*(
+    self: ptr IHTMLInputFileElement, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_maxLength(self, v)
+
+proc get_maxLength*(
+    self: ptr IHTMLInputFileElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maxLength(self, p)
+
+proc select*(self: ptr IHTMLInputFileElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.select(self)
+
+proc put_onchange*(
+    self: ptr IHTMLInputFileElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onchange(self, v)
+
+proc get_onchange*(
+    self: ptr IHTMLInputFileElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onchange(self, p)
+
+proc put_onselect*(
+    self: ptr IHTMLInputFileElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onselect(self, v)
+
+proc get_onselect*(
+    self: ptr IHTMLInputFileElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onselect(self, p)
+
+proc put_value*(self: ptr IHTMLInputFileElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(
+    self: ptr IHTMLInputFileElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_value*(
+    self: ptr IHTMLOptionButtonElement, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(
+    self: ptr IHTMLOptionButtonElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc get_type*(
+    self: ptr IHTMLOptionButtonElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_name*(
+    self: ptr IHTMLOptionButtonElement, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(
+    self: ptr IHTMLOptionButtonElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_checked*(
+    self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_checked(self, v)
+
+proc get_checked*(
+    self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_checked(self, p)
+
+proc put_defaultChecked*(
+    self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_defaultChecked(self, v)
+
+proc get_defaultChecked*(
+    self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defaultChecked(self, p)
+
+proc put_onchange*(
+    self: ptr IHTMLOptionButtonElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onchange(self, v)
+
+proc get_onchange*(
+    self: ptr IHTMLOptionButtonElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onchange(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc put_status*(
+    self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_status(self, v)
+
+proc get_status*(
+    self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_status(self, p)
+
+proc put_indeterminate*(
+    self: ptr IHTMLOptionButtonElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_indeterminate(self, v)
+
+proc get_indeterminate*(
+    self: ptr IHTMLOptionButtonElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_indeterminate(self, p)
+
+proc get_form*(
+    self: ptr IHTMLOptionButtonElement, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc get_type*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLInputImage, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLInputImage, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc put_border*(self: ptr IHTMLInputImage, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_border(self, v)
+
+proc get_border*(
+    self: ptr IHTMLInputImage, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_border(self, p)
+
+proc put_vspace*(self: ptr IHTMLInputImage, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vspace(self, v)
+
+proc get_vspace*(self: ptr IHTMLInputImage, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vspace(self, p)
+
+proc put_hspace*(self: ptr IHTMLInputImage, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hspace(self, v)
+
+proc get_hspace*(self: ptr IHTMLInputImage, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hspace(self, p)
+
+proc put_alt*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_alt(self, v)
+
+proc get_alt*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_alt(self, p)
+
+proc put_src*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_src(self, v)
+
+proc get_src*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_src(self, p)
+
+proc put_lowsrc*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lowsrc(self, v)
+
+proc get_lowsrc*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lowsrc(self, p)
+
+proc put_vrml*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vrml(self, v)
+
+proc get_vrml*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vrml(self, p)
+
+proc put_dynsrc*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dynsrc(self, v)
+
+proc get_dynsrc*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dynsrc(self, p)
+
+proc get_readyState*(
+    self: ptr IHTMLInputImage, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, p)
+
+proc get_complete*(
+    self: ptr IHTMLInputImage, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_complete(self, p)
+
+proc put_loop*(self: ptr IHTMLInputImage, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_loop(self, v)
+
+proc get_loop*(self: ptr IHTMLInputImage, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_loop(self, p)
+
+proc put_align*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_onload*(self: ptr IHTMLInputImage, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onload(self, v)
+
+proc get_onload*(
+    self: ptr IHTMLInputImage, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onload(self, p)
+
+proc put_onerror*(self: ptr IHTMLInputImage, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onerror(self, v)
+
+proc get_onerror*(
+    self: ptr IHTMLInputImage, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onerror(self, p)
+
+proc put_onabort*(self: ptr IHTMLInputImage, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onabort(self, v)
+
+proc get_onabort*(
+    self: ptr IHTMLInputImage, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onabort(self, p)
+
+proc put_name*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_width*(self: ptr IHTMLInputImage, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(self: ptr IHTMLInputImage, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_height*(self: ptr IHTMLInputImage, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(self: ptr IHTMLInputImage, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_start*(self: ptr IHTMLInputImage, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_start(self, v)
+
+proc get_start*(self: ptr IHTMLInputImage, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_start(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLInputRangeElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLInputRangeElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc get_type*(
+    self: ptr IHTMLInputRangeElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_alt*(self: ptr IHTMLInputRangeElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_alt(self, v)
+
+proc get_alt*(
+    self: ptr IHTMLInputRangeElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_alt(self, p)
+
+proc put_name*(self: ptr IHTMLInputRangeElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(
+    self: ptr IHTMLInputRangeElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_value*(self: ptr IHTMLInputRangeElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(
+    self: ptr IHTMLInputRangeElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_min*(self: ptr IHTMLInputRangeElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_min(self, v)
+
+proc get_min*(
+    self: ptr IHTMLInputRangeElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_min(self, p)
+
+proc put_max*(self: ptr IHTMLInputRangeElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_max(self, v)
+
+proc get_max*(
+    self: ptr IHTMLInputRangeElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_max(self, p)
+
+proc put_step*(self: ptr IHTMLInputRangeElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_step(self, v)
+
+proc get_step*(
+    self: ptr IHTMLInputRangeElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_step(self, p)
+
+proc put_valueAsNumber*(
+    self: ptr IHTMLInputRangeElement, v: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_valueAsNumber(self, v)
+
+proc get_valueAsNumber*(
+    self: ptr IHTMLInputRangeElement, p: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_valueAsNumber(self, p)
+
+proc stepUp*(self: ptr IHTMLInputRangeElement, n: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.stepUp(self, n)
+
+proc stepDown*(self: ptr IHTMLInputRangeElement, n: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.stepDown(self, n)
+
+proc get_type*(
+    self: ptr IHTMLTextAreaElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_value*(self: ptr IHTMLTextAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(
+    self: ptr IHTMLTextAreaElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_name*(self: ptr IHTMLTextAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(
+    self: ptr IHTMLTextAreaElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_status*(
+    self: ptr IHTMLTextAreaElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_status(self, v)
+
+proc get_status*(
+    self: ptr IHTMLTextAreaElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_status(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLTextAreaElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLTextAreaElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc get_form*(
+    self: ptr IHTMLTextAreaElement, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc put_defaultValue*(
+    self: ptr IHTMLTextAreaElement, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_defaultValue(self, v)
+
+proc get_defaultValue*(
+    self: ptr IHTMLTextAreaElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defaultValue(self, p)
+
+proc select*(self: ptr IHTMLTextAreaElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.select(self)
+
+proc put_onchange*(
+    self: ptr IHTMLTextAreaElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onchange(self, v)
+
+proc get_onchange*(
+    self: ptr IHTMLTextAreaElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onchange(self, p)
+
+proc put_onselect*(
+    self: ptr IHTMLTextAreaElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onselect(self, v)
+
+proc get_onselect*(
+    self: ptr IHTMLTextAreaElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onselect(self, p)
+
+proc put_readOnly*(
+    self: ptr IHTMLTextAreaElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_readOnly(self, v)
+
+proc get_readOnly*(
+    self: ptr IHTMLTextAreaElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readOnly(self, p)
+
+proc put_rows*(self: ptr IHTMLTextAreaElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rows(self, v)
+
+proc get_rows*(
+    self: ptr IHTMLTextAreaElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rows(self, p)
+
+proc put_cols*(self: ptr IHTMLTextAreaElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cols(self, v)
+
+proc get_cols*(
+    self: ptr IHTMLTextAreaElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cols(self, p)
+
+proc put_wrap*(self: ptr IHTMLTextAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_wrap(self, v)
+
+proc get_wrap*(
+    self: ptr IHTMLTextAreaElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wrap(self, p)
+
+proc createTextRange*(
+    self: ptr IHTMLTextAreaElement, range: ptr ptr IHTMLTxtRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createTextRange(self, range)
+
+proc put_selectionStart*(
+    self: ptr IHTMLTextAreaElement2, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_selectionStart(self, v)
+
+proc get_selectionStart*(
+    self: ptr IHTMLTextAreaElement2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selectionStart(self, p)
+
+proc put_selectionEnd*(
+    self: ptr IHTMLTextAreaElement2, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_selectionEnd(self, v)
+
+proc get_selectionEnd*(
+    self: ptr IHTMLTextAreaElement2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selectionEnd(self, p)
+
+proc setSelectionRange*(
+    self: ptr IHTMLTextAreaElement2, start: LONG, `end`: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setSelectionRange(self, start, `end`)
+
+proc get_type*(self: ptr IHTMLButtonElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_value*(self: ptr IHTMLButtonElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(self: ptr IHTMLButtonElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_name*(self: ptr IHTMLButtonElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLButtonElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_status*(self: ptr IHTMLButtonElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_status(self, v)
+
+proc get_status*(
+    self: ptr IHTMLButtonElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_status(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLButtonElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLButtonElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc get_form*(
+    self: ptr IHTMLButtonElement, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc createTextRange*(
+    self: ptr IHTMLButtonElement, range: ptr ptr IHTMLTxtRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createTextRange(self, range)
+
+proc put_type*(self: ptr IHTMLButtonElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr IHTMLButtonElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_bgColor*(
+    self: ptr IHTMLMarqueeElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_bgColor(self, v)
+
+proc get_bgColor*(
+    self: ptr IHTMLMarqueeElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bgColor(self, p)
+
+proc put_scrollDelay*(
+    self: ptr IHTMLMarqueeElement, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollDelay(self, v)
+
+proc get_scrollDelay*(
+    self: ptr IHTMLMarqueeElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollDelay(self, p)
+
+proc put_direction*(
+    self: ptr IHTMLMarqueeElement, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_direction(self, v)
+
+proc get_direction*(
+    self: ptr IHTMLMarqueeElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_direction(self, p)
+
+proc put_behavior*(self: ptr IHTMLMarqueeElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_behavior(self, v)
+
+proc get_behavior*(
+    self: ptr IHTMLMarqueeElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_behavior(self, p)
+
+proc put_scrollAmount*(
+    self: ptr IHTMLMarqueeElement, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollAmount(self, v)
+
+proc get_scrollAmount*(
+    self: ptr IHTMLMarqueeElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollAmount(self, p)
+
+proc put_loop*(self: ptr IHTMLMarqueeElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_loop(self, v)
+
+proc get_loop*(self: ptr IHTMLMarqueeElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_loop(self, p)
+
+proc put_vspace*(self: ptr IHTMLMarqueeElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vspace(self, v)
+
+proc get_vspace*(
+    self: ptr IHTMLMarqueeElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vspace(self, p)
+
+proc put_hspace*(self: ptr IHTMLMarqueeElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hspace(self, v)
+
+proc get_hspace*(
+    self: ptr IHTMLMarqueeElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hspace(self, p)
+
+proc put_onfinish*(
+    self: ptr IHTMLMarqueeElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onfinish(self, v)
+
+proc get_onfinish*(
+    self: ptr IHTMLMarqueeElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onfinish(self, p)
+
+proc put_onstart*(
+    self: ptr IHTMLMarqueeElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onstart(self, v)
+
+proc get_onstart*(
+    self: ptr IHTMLMarqueeElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onstart(self, p)
+
+proc put_onbounce*(
+    self: ptr IHTMLMarqueeElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbounce(self, v)
+
+proc get_onbounce*(
+    self: ptr IHTMLMarqueeElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbounce(self, p)
+
+proc put_width*(self: ptr IHTMLMarqueeElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(
+    self: ptr IHTMLMarqueeElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_height*(
+    self: ptr IHTMLMarqueeElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(
+    self: ptr IHTMLMarqueeElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_trueSpeed*(
+    self: ptr IHTMLMarqueeElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_trueSpeed(self, v)
+
+proc get_trueSpeed*(
+    self: ptr IHTMLMarqueeElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_trueSpeed(self, p)
+
+proc start*(self: ptr IHTMLMarqueeElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.start(self)
+
+proc stop*(self: ptr IHTMLMarqueeElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.stop(self)
+
+proc put_version*(self: ptr IHTMLHtmlElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_version(self, v)
+
+proc get_version*(self: ptr IHTMLHtmlElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_version(self, p)
+
+proc put_profile*(self: ptr IHTMLHeadElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_profile(self, v)
+
+proc get_profile*(self: ptr IHTMLHeadElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_profile(self, p)
+
+proc put_profile*(self: ptr IHTMLHeadElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_profile(self, v)
+
+proc get_profile*(
+    self: ptr IHTMLHeadElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_profile(self, p)
+
+proc put_text*(self: ptr IHTMLTitleElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_text(self, v)
+
+proc get_text*(self: ptr IHTMLTitleElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_text(self, p)
+
+proc put_httpEquiv*(self: ptr IHTMLMetaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_httpEquiv(self, v)
+
+proc get_httpEquiv*(
+    self: ptr IHTMLMetaElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_httpEquiv(self, p)
+
+proc put_content*(self: ptr IHTMLMetaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_content(self, v)
+
+proc get_content*(self: ptr IHTMLMetaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_content(self, p)
+
+proc put_name*(self: ptr IHTMLMetaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLMetaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_url*(self: ptr IHTMLMetaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_url(self, v)
+
+proc get_url*(self: ptr IHTMLMetaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_url(self, p)
+
+proc put_charset*(self: ptr IHTMLMetaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_charset(self, v)
+
+proc get_charset*(self: ptr IHTMLMetaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_charset(self, p)
+
+proc put_scheme*(self: ptr IHTMLMetaElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scheme(self, v)
+
+proc get_scheme*(self: ptr IHTMLMetaElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scheme(self, p)
+
+proc put_url*(self: ptr IHTMLMetaElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_url(self, v)
+
+proc get_url*(self: ptr IHTMLMetaElement3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_url(self, p)
+
+proc put_href*(self: ptr IHTMLBaseElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_href(self, v)
+
+proc get_href*(self: ptr IHTMLBaseElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc put_target*(self: ptr IHTMLBaseElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_target(self, v)
+
+proc get_target*(self: ptr IHTMLBaseElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_target(self, p)
+
+proc put_href*(self: ptr IHTMLBaseElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_href(self, v)
+
+proc get_href*(self: ptr IHTMLBaseElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc put_prompt*(self: ptr IHTMLIsIndexElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_prompt(self, v)
+
+proc get_prompt*(
+    self: ptr IHTMLIsIndexElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_prompt(self, p)
+
+proc put_action*(self: ptr IHTMLIsIndexElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_action(self, v)
+
+proc get_action*(
+    self: ptr IHTMLIsIndexElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_action(self, p)
+
+proc get_form*(
+    self: ptr IHTMLIsIndexElement2, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc put_n*(self: ptr IHTMLNextIdElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_n(self, v)
+
+proc get_n*(self: ptr IHTMLNextIdElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_n(self, p)
+
+proc put_color*(
+    self: ptr IHTMLBaseFontElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_color(self, v)
+
+proc get_color*(
+    self: ptr IHTMLBaseFontElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_color(self, p)
+
+proc put_face*(self: ptr IHTMLBaseFontElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_face(self, v)
+
+proc get_face*(
+    self: ptr IHTMLBaseFontElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_face(self, p)
+
+proc put_size*(self: ptr IHTMLBaseFontElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_size(self, v)
+
+proc get_size*(
+    self: ptr IHTMLBaseFontElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_size(self, p)
+
+proc get_length*(self: ptr IOmHistory, p: ptr int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc back*(
+    self: ptr IOmHistory, pvargdistance: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.back(self, pvargdistance)
+
+proc forward*(
+    self: ptr IOmHistory, pvargdistance: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.forward(self, pvargdistance)
+
+proc go*(self: ptr IOmHistory, pvargdistance: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.go(self, pvargdistance)
+
+proc get_length*(
+    self: ptr IHTMLMimeTypesCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_length*(
+    self: ptr IHTMLPluginsCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc refresh*(
+    self: ptr IHTMLPluginsCollection, reload: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.refresh(self, reload)
+
+proc addRequest*(
+    self: ptr IHTMLOpsProfile, name: BSTR, reserved: VARIANT, success: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addRequest(self, name, reserved, success)
+
+proc clearRequest*(self: ptr IHTMLOpsProfile): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clearRequest(self)
+
+proc doRequest*(
+    self: ptr IHTMLOpsProfile,
+    usage: VARIANT,
+    fname: VARIANT,
+    domain: VARIANT,
+    path: VARIANT,
+    expire: VARIANT,
+    reserved: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.doRequest(self, usage, fname, domain, path, expire, reserved)
+
+proc getAttribute*(
+    self: ptr IHTMLOpsProfile, name: BSTR, value: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttribute(self, name, value)
+
+proc setAttribute*(
+    self: ptr IHTMLOpsProfile,
+    name: BSTR,
+    value: BSTR,
+    prefs: VARIANT,
+    success: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttribute(self, name, value, prefs, success)
+
+proc commitChanges*(
+    self: ptr IHTMLOpsProfile, success: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.commitChanges(self, success)
+
+proc addReadRequest*(
+    self: ptr IHTMLOpsProfile, name: BSTR, reserved: VARIANT, success: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addReadRequest(self, name, reserved, success)
+
+proc doReadRequest*(
+    self: ptr IHTMLOpsProfile,
+    usage: VARIANT,
+    fname: VARIANT,
+    domain: VARIANT,
+    path: VARIANT,
+    expire: VARIANT,
+    reserved: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.doReadRequest(self, usage, fname, domain, path, expire, reserved)
+
+proc doWriteRequest*(
+    self: ptr IHTMLOpsProfile, success: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.doWriteRequest(self, success)
+
+proc get_appCodeName*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_appCodeName(self, p)
+
+proc get_appName*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_appName(self, p)
+
+proc get_appVersion*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_appVersion(self, p)
+
+proc get_userAgent*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_userAgent(self, p)
+
+proc javaEnabled*(
+    self: ptr IOmNavigator, enabled: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.javaEnabled(self, enabled)
+
+proc taintEnabled*(
+    self: ptr IOmNavigator, enabled: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.taintEnabled(self, enabled)
+
+proc get_mimeTypes*(
+    self: ptr IOmNavigator, p: ptr ptr IHTMLMimeTypesCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_mimeTypes(self, p)
+
+proc get_plugins*(
+    self: ptr IOmNavigator, p: ptr ptr IHTMLPluginsCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_plugins(self, p)
+
+proc get_cookieEnabled*(
+    self: ptr IOmNavigator, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cookieEnabled(self, p)
+
+proc get_opsProfile*(
+    self: ptr IOmNavigator, p: ptr ptr IHTMLOpsProfile
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_opsProfile(self, p)
+
+proc toString*(self: ptr IOmNavigator, string: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toString(self, string)
+
+proc get_cpuClass*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cpuClass(self, p)
+
+proc get_systemLanguage*(
+    self: ptr IOmNavigator, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_systemLanguage(self, p)
+
+proc get_browserLanguage*(
+    self: ptr IOmNavigator, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_browserLanguage(self, p)
+
+proc get_userLanguage*(
+    self: ptr IOmNavigator, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_userLanguage(self, p)
+
+proc get_platform*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_platform(self, p)
+
+proc get_appMinorVersion*(
+    self: ptr IOmNavigator, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_appMinorVersion(self, p)
+
+proc get_connectionSpeed*(
+    self: ptr IOmNavigator, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_connectionSpeed(self, p)
+
+proc get_onLine*(
+    self: ptr IOmNavigator, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onLine(self, p)
+
+proc get_userProfile*(
+    self: ptr IOmNavigator, p: ptr ptr IHTMLOpsProfile
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_userProfile(self, p)
+
+proc get_geolocation*(
+    self: ptr INavigatorGeolocation, p: ptr ptr IWebGeolocation
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_geolocation(self, p)
+
+proc get_msDoNotTrack*(
+    self: ptr INavigatorDoNotTrack, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msDoNotTrack(self, p)
+
+proc put_href*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_href(self, v)
+
+proc get_href*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc put_protocol*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_protocol(self, v)
+
+proc get_protocol*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_protocol(self, p)
+
+proc put_host*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_host(self, v)
+
+proc get_host*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_host(self, p)
+
+proc put_hostname*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hostname(self, v)
+
+proc get_hostname*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hostname(self, p)
+
+proc put_port*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_port(self, v)
+
+proc get_port*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_port(self, p)
+
+proc put_pathname*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pathname(self, v)
+
+proc get_pathname*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pathname(self, p)
+
+proc put_search*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_search(self, v)
+
+proc get_search*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_search(self, p)
+
+proc put_hash*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hash(self, v)
+
+proc get_hash*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hash(self, p)
+
+proc reload*(self: ptr IHTMLLocation, flag: VARIANT_BOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.reload(self, flag)
+
+proc replace*(self: ptr IHTMLLocation, bstr: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replace(self, bstr)
+
+proc assign*(self: ptr IHTMLLocation, bstr: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.assign(self, bstr)
+
+proc toString*(self: ptr IHTMLLocation, string: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toString(self, string)
+
+proc get_length*(
+    self: ptr IHTMLBookmarkCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLBookmarkCollection, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc item*(
+    self: ptr IHTMLBookmarkCollection, index: LONG, pVarBookmark: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, pVarBookmark)
+
+proc setData*(
+    self: ptr IHTMLDataTransfer, format: BSTR, data: ptr VARIANT, pret: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setData(self, format, data, pret)
+
+proc getData*(
+    self: ptr IHTMLDataTransfer, format: BSTR, pvarRet: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getData(self, format, pvarRet)
+
+proc clearData*(
+    self: ptr IHTMLDataTransfer, format: BSTR, pret: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clearData(self, format, pret)
+
+proc put_dropEffect*(self: ptr IHTMLDataTransfer, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dropEffect(self, v)
+
+proc get_dropEffect*(
+    self: ptr IHTMLDataTransfer, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dropEffect(self, p)
+
+proc put_effectAllowed*(
+    self: ptr IHTMLDataTransfer, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_effectAllowed(self, v)
+
+proc get_effectAllowed*(
+    self: ptr IHTMLDataTransfer, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_effectAllowed(self, p)
+
+proc get_srcElement*(
+    self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_srcElement(self, p)
+
+proc get_altKey*(
+    self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_altKey(self, p)
+
+proc get_ctrlKey*(
+    self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ctrlKey(self, p)
+
+proc get_shiftKey*(
+    self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_shiftKey(self, p)
+
+proc put_returnValue*(self: ptr IHTMLEventObj, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_returnValue(self, v)
+
+proc get_returnValue*(
+    self: ptr IHTMLEventObj, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_returnValue(self, p)
+
+proc put_cancelBubble*(
+    self: ptr IHTMLEventObj, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cancelBubble(self, v)
+
+proc get_cancelBubble*(
+    self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cancelBubble(self, p)
+
+proc get_fromElement*(
+    self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fromElement(self, p)
+
+proc get_toElement*(
+    self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_toElement(self, p)
+
+proc put_keyCode*(self: ptr IHTMLEventObj, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_keyCode(self, v)
+
+proc get_keyCode*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_keyCode(self, p)
+
+proc get_button*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_button(self, p)
+
+proc get_type*(self: ptr IHTMLEventObj, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc get_qualifier*(self: ptr IHTMLEventObj, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_qualifier(self, p)
+
+proc get_reason*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_reason(self, p)
+
+proc get_x*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc get_y*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc get_clientX*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientX(self, p)
+
+proc get_clientY*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientY(self, p)
+
+proc get_offsetX*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offsetX(self, p)
+
+proc get_offsetY*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offsetY(self, p)
+
+proc get_screenX*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_screenX(self, p)
+
+proc get_screenY*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_screenY(self, p)
+
+proc get_srcFilter*(
+    self: ptr IHTMLEventObj, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_srcFilter(self, p)
+
+proc setAttribute*(
+    self: ptr IHTMLEventObj2,
+    strAttributeName: BSTR,
+    AttributeValue: VARIANT,
+    lFlags: LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttribute(self, strAttributeName, AttributeValue, lFlags)
+
+proc getAttribute*(
+    self: ptr IHTMLEventObj2,
+    strAttributeName: BSTR,
+    lFlags: LONG,
+    AttributeValue: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttribute(self, strAttributeName, lFlags, AttributeValue)
+
+proc removeAttribute*(
+    self: ptr IHTMLEventObj2,
+    strAttributeName: BSTR,
+    lFlags: LONG,
+    pfSuccess: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAttribute(self, strAttributeName, lFlags, pfSuccess)
+
+proc put_propertyName*(self: ptr IHTMLEventObj2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_propertyName(self, v)
+
+proc get_propertyName*(
+    self: ptr IHTMLEventObj2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_propertyName(self, p)
+
+proc putref_bookmarks*(
+    self: ptr IHTMLEventObj2, v: ptr IHTMLBookmarkCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_bookmarks(self, v)
+
+proc get_bookmarks*(
+    self: ptr IHTMLEventObj2, p: ptr ptr IHTMLBookmarkCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bookmarks(self, p)
+
+proc putref_recordset*(
+    self: ptr IHTMLEventObj2, v: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_recordset(self, v)
+
+proc get_recordset*(
+    self: ptr IHTMLEventObj2, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_recordset(self, p)
+
+proc put_dataFld*(self: ptr IHTMLEventObj2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dataFld(self, v)
+
+proc get_dataFld*(self: ptr IHTMLEventObj2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dataFld(self, p)
+
+proc putref_boundElements*(
+    self: ptr IHTMLEventObj2, v: ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_boundElements(self, v)
+
+proc get_boundElements*(
+    self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_boundElements(self, p)
+
+proc put_repeat*(
+    self: ptr IHTMLEventObj2, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_repeat(self, v)
+
+proc get_repeat*(
+    self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_repeat(self, p)
+
+proc put_srcUrn*(self: ptr IHTMLEventObj2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_srcUrn(self, v)
+
+proc get_srcUrn*(self: ptr IHTMLEventObj2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_srcUrn(self, p)
+
+proc putref_srcElement*(
+    self: ptr IHTMLEventObj2, v: ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_srcElement(self, v)
+
+proc get_srcElement*(
+    self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_srcElement(self, p)
+
+proc put_altKey*(
+    self: ptr IHTMLEventObj2, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_altKey(self, v)
+
+proc get_altKey*(
+    self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_altKey(self, p)
+
+proc put_ctrlKey*(
+    self: ptr IHTMLEventObj2, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ctrlKey(self, v)
+
+proc get_ctrlKey*(
+    self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ctrlKey(self, p)
+
+proc put_shiftKey*(
+    self: ptr IHTMLEventObj2, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_shiftKey(self, v)
+
+proc get_shiftKey*(
+    self: ptr IHTMLEventObj2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_shiftKey(self, p)
+
+proc putref_fromElement*(
+    self: ptr IHTMLEventObj2, v: ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_fromElement(self, v)
+
+proc get_fromElement*(
+    self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fromElement(self, p)
+
+proc putref_toElement*(
+    self: ptr IHTMLEventObj2, v: ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_toElement(self, v)
+
+proc get_toElement*(
+    self: ptr IHTMLEventObj2, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_toElement(self, p)
+
+proc put_button*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_button(self, v)
+
+proc get_button*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_button(self, p)
+
+proc put_type*(self: ptr IHTMLEventObj2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr IHTMLEventObj2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_qualifier*(self: ptr IHTMLEventObj2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_qualifier(self, v)
+
+proc get_qualifier*(self: ptr IHTMLEventObj2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_qualifier(self, p)
+
+proc put_reason*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_reason(self, v)
+
+proc get_reason*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_reason(self, p)
+
+proc put_x*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_clientX*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clientX(self, v)
+
+proc get_clientX*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientX(self, p)
+
+proc put_clientY*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_clientY(self, v)
+
+proc get_clientY*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientY(self, p)
+
+proc put_offsetX*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_offsetX(self, v)
+
+proc get_offsetX*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offsetX(self, p)
+
+proc put_offsetY*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_offsetY(self, v)
+
+proc get_offsetY*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offsetY(self, p)
+
+proc put_screenX*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_screenX(self, v)
+
+proc get_screenX*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_screenX(self, p)
+
+proc put_screenY*(self: ptr IHTMLEventObj2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_screenY(self, v)
+
+proc get_screenY*(self: ptr IHTMLEventObj2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_screenY(self, p)
+
+proc putref_srcFilter*(
+    self: ptr IHTMLEventObj2, v: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_srcFilter(self, v)
+
+proc get_srcFilter*(
+    self: ptr IHTMLEventObj2, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_srcFilter(self, p)
+
+proc get_dataTransfer*(
+    self: ptr IHTMLEventObj2, p: ptr ptr IHTMLDataTransfer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dataTransfer(self, p)
+
+proc get_contentOverflow*(
+    self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_contentOverflow(self, p)
+
+proc put_shiftLeft*(
+    self: ptr IHTMLEventObj3, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_shiftLeft(self, v)
+
+proc get_shiftLeft*(
+    self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_shiftLeft(self, p)
+
+proc put_altLeft*(
+    self: ptr IHTMLEventObj3, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_altLeft(self, v)
+
+proc get_altLeft*(
+    self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_altLeft(self, p)
+
+proc put_ctrlLeft*(
+    self: ptr IHTMLEventObj3, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ctrlLeft(self, v)
+
+proc get_ctrlLeft*(
+    self: ptr IHTMLEventObj3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ctrlLeft(self, p)
+
+proc get_imeCompositionChange*(
+    self: ptr IHTMLEventObj3, p: ptr LONG_PTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_imeCompositionChange(self, p)
+
+proc get_imeNotifyCommand*(
+    self: ptr IHTMLEventObj3, p: ptr LONG_PTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_imeNotifyCommand(self, p)
+
+proc get_imeNotifyData*(
+    self: ptr IHTMLEventObj3, p: ptr LONG_PTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_imeNotifyData(self, p)
+
+proc get_imeRequest*(
+    self: ptr IHTMLEventObj3, p: ptr LONG_PTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_imeRequest(self, p)
+
+proc get_imeRequestData*(
+    self: ptr IHTMLEventObj3, p: ptr LONG_PTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_imeRequestData(self, p)
+
+proc get_keyboardLayout*(
+    self: ptr IHTMLEventObj3, p: ptr LONG_PTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_keyboardLayout(self, p)
+
+proc get_behaviorCookie*(
+    self: ptr IHTMLEventObj3, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_behaviorCookie(self, p)
+
+proc get_behaviorPart*(
+    self: ptr IHTMLEventObj3, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_behaviorPart(self, p)
+
+proc get_nextPage*(self: ptr IHTMLEventObj3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nextPage(self, p)
+
+proc get_wheelDelta*(
+    self: ptr IHTMLEventObj4, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wheelDelta(self, p)
+
+proc put_url*(self: ptr IHTMLEventObj5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_url(self, v)
+
+proc get_url*(self: ptr IHTMLEventObj5, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_url(self, p)
+
+proc put_data*(self: ptr IHTMLEventObj5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_data(self, v)
+
+proc get_data*(self: ptr IHTMLEventObj5, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_data(self, p)
+
+proc get_source*(
+    self: ptr IHTMLEventObj5, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_source(self, p)
+
+proc put_origin*(self: ptr IHTMLEventObj5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_origin(self, v)
+
+proc get_origin*(self: ptr IHTMLEventObj5, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_origin(self, p)
+
+proc put_issession*(
+    self: ptr IHTMLEventObj5, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_issession(self, v)
+
+proc get_issession*(
+    self: ptr IHTMLEventObj5, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_issession(self, p)
+
+proc get_actionURL*(self: ptr IHTMLEventObj6, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_actionURL(self, p)
+
+proc get_buttonID*(self: ptr IHTMLEventObj6, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_buttonID(self, p)
+
+proc get_type*(self: ptr IHTMLStyleMedia, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc matchMedium*(
+    self: ptr IHTMLStyleMedia, mediaQuery: BSTR, matches: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.matchMedium(self, mediaQuery, matches)
+
+proc item*(
+    self: ptr IHTMLFramesCollection2, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, pvarIndex, pvarResult)
+
+proc get_length*(
+    self: ptr IHTMLFramesCollection2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_colorDepth*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_colorDepth(self, p)
+
+proc put_bufferDepth*(self: ptr IHTMLScreen, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_bufferDepth(self, v)
+
+proc get_bufferDepth*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bufferDepth(self, p)
+
+proc get_width*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc get_height*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_updateInterval*(self: ptr IHTMLScreen, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_updateInterval(self, v)
+
+proc get_updateInterval*(
+    self: ptr IHTMLScreen, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_updateInterval(self, p)
+
+proc get_availHeight*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_availHeight(self, p)
+
+proc get_availWidth*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_availWidth(self, p)
+
+proc get_fontSmoothingEnabled*(
+    self: ptr IHTMLScreen, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontSmoothingEnabled(self, p)
+
+proc get_logicalXDPI*(self: ptr IHTMLScreen2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_logicalXDPI(self, p)
+
+proc get_logicalYDPI*(self: ptr IHTMLScreen2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_logicalYDPI(self, p)
+
+proc get_deviceXDPI*(self: ptr IHTMLScreen2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_deviceXDPI(self, p)
+
+proc get_deviceYDPI*(self: ptr IHTMLScreen2, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_deviceYDPI(self, p)
+
+proc get_systemXDPI*(self: ptr IHTMLScreen3, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_systemXDPI(self, p)
+
+proc get_systemYDPI*(self: ptr IHTMLScreen3, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_systemYDPI(self, p)
+
+proc get_pixelDepth*(self: ptr IHTMLScreen4, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pixelDepth(self, p)
+
+proc get_frames*(
+    self: ptr IHTMLWindow2, p: ptr ptr IHTMLFramesCollection2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frames(self, p)
+
+proc put_defaultStatus*(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_defaultStatus(self, v)
+
+proc get_defaultStatus*(
+    self: ptr IHTMLWindow2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defaultStatus(self, p)
+
+proc put_status*(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_status(self, v)
+
+proc get_status*(self: ptr IHTMLWindow2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_status(self, p)
+
+proc setTimeout*(
+    self: ptr IHTMLWindow2,
+    expression: BSTR,
+    msec: LONG,
+    language: ptr VARIANT,
+    timerID: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setTimeout(self, expression, msec, language, timerID)
+
+proc clearTimeout*(self: ptr IHTMLWindow2, timerID: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clearTimeout(self, timerID)
+
+proc alert*(self: ptr IHTMLWindow2, message: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.alert(self, message)
+
+proc confirm*(
+    self: ptr IHTMLWindow2, message: BSTR, confirmed: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.confirm(self, message, confirmed)
+
+proc prompt*(
+    self: ptr IHTMLWindow2, message: BSTR, defstr: BSTR, textdata: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.prompt(self, message, defstr, textdata)
+
+proc get_Image*(
+    self: ptr IHTMLWindow2, p: ptr ptr IHTMLImageElementFactory
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Image(self, p)
+
+proc get_location*(
+    self: ptr IHTMLWindow2, p: ptr ptr IHTMLLocation
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_location(self, p)
+
+proc get_history*(
+    self: ptr IHTMLWindow2, p: ptr ptr IOmHistory
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_history(self, p)
+
+proc close*(self: ptr IHTMLWindow2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.close(self)
+
+proc put_opener*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_opener(self, v)
+
+proc get_opener*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_opener(self, p)
+
+proc get_navigator*(
+    self: ptr IHTMLWindow2, p: ptr ptr IOmNavigator
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_navigator(self, p)
+
+proc put_name*(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLWindow2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc get_parent*(
+    self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parent(self, p)
+
+proc open*(
+    self: ptr IHTMLWindow2,
+    url: BSTR,
+    name: BSTR,
+    features: BSTR,
+    replace: VARIANT_BOOL,
+    pomWindowResult: ptr ptr IHTMLWindow2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.open(self, url, name, features, replace, pomWindowResult)
+
+proc get_self*(
+    self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_self(self, p)
+
+proc get_top*(
+    self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_top(self, p)
+
+proc get_window*(
+    self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_window(self, p)
+
+proc navigate*(self: ptr IHTMLWindow2, url: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.navigate(self, url)
+
+proc put_onfocus*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onfocus(self, v)
+
+proc get_onfocus*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onfocus(self, p)
+
+proc put_onblur*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onblur(self, v)
+
+proc get_onblur*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onblur(self, p)
+
+proc put_onload*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onload(self, v)
+
+proc get_onload*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onload(self, p)
+
+proc put_onbeforeunload*(
+    self: ptr IHTMLWindow2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforeunload(self, v)
+
+proc get_onbeforeunload*(
+    self: ptr IHTMLWindow2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforeunload(self, p)
+
+proc put_onunload*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onunload(self, v)
+
+proc get_onunload*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onunload(self, p)
+
+proc put_onhelp*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onhelp(self, v)
+
+proc get_onhelp*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onhelp(self, p)
+
+proc put_onerror*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onerror(self, v)
+
+proc get_onerror*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onerror(self, p)
+
+proc put_onresize*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onresize(self, v)
+
+proc get_onresize*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onresize(self, p)
+
+proc put_onscroll*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onscroll(self, v)
+
+proc get_onscroll*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onscroll(self, p)
+
+proc get_document*(
+    self: ptr IHTMLWindow2, p: ptr ptr IHTMLDocument2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_document(self, p)
+
+proc get_event*(
+    self: ptr IHTMLWindow2, p: ptr ptr IHTMLEventObj
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_event(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLWindow2, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc showModalDialog*(
+    self: ptr IHTMLWindow2,
+    dialog: BSTR,
+    varArgIn: ptr VARIANT,
+    varOptions: ptr VARIANT,
+    varArgOut: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.showModalDialog(self, dialog, varArgIn, varOptions, varArgOut)
+
+proc showHelp*(
+    self: ptr IHTMLWindow2, helpURL: BSTR, helpArg: VARIANT, features: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.showHelp(self, helpURL, helpArg, features)
+
+proc get_screen*(
+    self: ptr IHTMLWindow2, p: ptr ptr IHTMLScreen
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_screen(self, p)
+
+proc get_Option*(
+    self: ptr IHTMLWindow2, p: ptr ptr IHTMLOptionElementFactory
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Option(self, p)
+
+proc focus*(self: ptr IHTMLWindow2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.focus(self)
+
+proc get_closed*(
+    self: ptr IHTMLWindow2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_closed(self, p)
+
+proc blur*(self: ptr IHTMLWindow2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.blur(self)
+
+proc scroll*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.scroll(self, x, y)
+
+proc get_clientInformation*(
+    self: ptr IHTMLWindow2, p: ptr ptr IOmNavigator
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientInformation(self, p)
+
+proc setInterval*(
+    self: ptr IHTMLWindow2,
+    expression: BSTR,
+    msec: LONG,
+    language: ptr VARIANT,
+    timerID: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setInterval(self, expression, msec, language, timerID)
+
+proc clearInterval*(self: ptr IHTMLWindow2, timerID: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clearInterval(self, timerID)
+
+proc put_offscreenBuffering*(
+    self: ptr IHTMLWindow2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_offscreenBuffering(self, v)
+
+proc get_offscreenBuffering*(
+    self: ptr IHTMLWindow2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offscreenBuffering(self, p)
+
+proc execScript*(
+    self: ptr IHTMLWindow2, code: BSTR, language: BSTR, pvarRet: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.execScript(self, code, language, pvarRet)
+
+proc toString*(self: ptr IHTMLWindow2, String: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toString(self, String)
+
+proc scrollBy*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.scrollBy(self, x, y)
+
+proc scrollTo*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.scrollTo(self, x, y)
+
+proc moveTo*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.moveTo(self, x, y)
+
+proc moveBy*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.moveBy(self, x, y)
+
+proc resizeTo*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.resizeTo(self, x, y)
+
+proc resizeBy*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.resizeBy(self, x, y)
+
+proc get_external*(
+    self: ptr IHTMLWindow2, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_external(self, p)
+
+proc get_screenLeft*(self: ptr IHTMLWindow3, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_screenLeft(self, p)
+
+proc get_screenTop*(self: ptr IHTMLWindow3, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_screenTop(self, p)
+
+proc attachEvent*(
+    self: ptr IHTMLWindow3,
+    event: BSTR,
+    pDisp: ptr IDispatch,
+    pfResult: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.attachEvent(self, event, pDisp, pfResult)
+
+proc detachEvent*(
+    self: ptr IHTMLWindow3, event: BSTR, pDisp: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.detachEvent(self, event, pDisp)
+
+proc setTimeout*(
+    self: ptr IHTMLWindow3,
+    expression: ptr VARIANT,
+    msec: LONG,
+    language: ptr VARIANT,
+    timerID: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setTimeout(self, expression, msec, language, timerID)
+
+proc setInterval*(
+    self: ptr IHTMLWindow3,
+    expression: ptr VARIANT,
+    msec: LONG,
+    language: ptr VARIANT,
+    timerID: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setInterval(self, expression, msec, language, timerID)
+
+proc print*(self: ptr IHTMLWindow3): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.print(self)
+
+proc put_onbeforeprint*(
+    self: ptr IHTMLWindow3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforeprint(self, v)
+
+proc get_onbeforeprint*(
+    self: ptr IHTMLWindow3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforeprint(self, p)
+
+proc put_onafterprint*(self: ptr IHTMLWindow3, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onafterprint(self, v)
+
+proc get_onafterprint*(
+    self: ptr IHTMLWindow3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onafterprint(self, p)
+
+proc get_clipboardData*(
+    self: ptr IHTMLWindow3, p: ptr ptr IHTMLDataTransfer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clipboardData(self, p)
+
+proc showModelessDialog*(
+    self: ptr IHTMLWindow3,
+    url: BSTR,
+    varArgIn: ptr VARIANT,
+    options: ptr VARIANT,
+    pDialog: ptr ptr IHTMLWindow2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.showModelessDialog(self, url, varArgIn, options, pDialog)
+
+proc createPopup*(
+    self: ptr IHTMLWindow4, varArgIn: ptr VARIANT, ppPopup: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createPopup(self, varArgIn, ppPopup)
+
+proc get_frameElement*(
+    self: ptr IHTMLWindow4, p: ptr ptr IHTMLFrameBase
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frameElement(self, p)
+
+proc put_XMLHttpRequest*(
+    self: ptr IHTMLWindow5, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_XMLHttpRequest(self, v)
+
+proc get_XMLHttpRequest*(
+    self: ptr IHTMLWindow5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_XMLHttpRequest(self, p)
+
+proc put_XDomainRequest*(
+    self: ptr IHTMLWindow6, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_XDomainRequest(self, v)
+
+proc get_XDomainRequest*(
+    self: ptr IHTMLWindow6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_XDomainRequest(self, p)
+
+proc get_sessionStorage*(
+    self: ptr IHTMLWindow6, p: ptr ptr IHTMLStorage
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_sessionStorage(self, p)
+
+proc get_localStorage*(
+    self: ptr IHTMLWindow6, p: ptr ptr IHTMLStorage
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_localStorage(self, p)
+
+proc put_onhashchange*(self: ptr IHTMLWindow6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onhashchange(self, v)
+
+proc get_onhashchange*(
+    self: ptr IHTMLWindow6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onhashchange(self, p)
+
+proc get_maxConnectionsPerServer*(
+    self: ptr IHTMLWindow6, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maxConnectionsPerServer(self, p)
+
+proc postMessage*(
+    self: ptr IHTMLWindow6, msg: BSTR, targetOrigin: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.postMessage(self, msg, targetOrigin)
+
+proc toStaticHTML*(
+    self: ptr IHTMLWindow6, bstrHTML: BSTR, pbstrStaticHTML: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toStaticHTML(self, bstrHTML, pbstrStaticHTML)
+
+proc put_onmessage*(self: ptr IHTMLWindow6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmessage(self, v)
+
+proc get_onmessage*(
+    self: ptr IHTMLWindow6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmessage(self, p)
+
+proc msWriteProfilerMark*(
+    self: ptr IHTMLWindow6, bstrProfilerMarkName: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.msWriteProfilerMark(self, bstrProfilerMarkName)
+
+proc getSelection*(
+    self: ptr IHTMLWindow7, ppIHTMLSelection: ptr ptr IHTMLSelection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getSelection(self, ppIHTMLSelection)
+
+proc getComputedStyle*(
+    self: ptr IHTMLWindow7,
+    varArgIn: ptr IHTMLDOMNode,
+    bstrPseudoElt: BSTR,
+    ppComputedStyle: ptr ptr IHTMLCSSStyleDeclaration,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getComputedStyle(self, varArgIn, bstrPseudoElt, ppComputedStyle)
+
+proc get_styleMedia*(
+    self: ptr IHTMLWindow7, p: ptr ptr IHTMLStyleMedia
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_styleMedia(self, p)
+
+proc put_performance*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_performance(self, v)
+
+proc get_performance*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_performance(self, p)
+
+proc get_innerWidth*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_innerWidth(self, p)
+
+proc get_innerHeight*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_innerHeight(self, p)
+
+proc get_pageXOffset*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageXOffset(self, p)
+
+proc get_pageYOffset*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageYOffset(self, p)
+
+proc get_screenX*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_screenX(self, p)
+
+proc get_screenY*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_screenY(self, p)
+
+proc get_outerWidth*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outerWidth(self, p)
+
+proc get_outerHeight*(self: ptr IHTMLWindow7, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_outerHeight(self, p)
+
+proc put_onabort*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onabort(self, v)
+
+proc get_onabort*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onabort(self, p)
+
+proc put_oncanplay*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncanplay(self, v)
+
+proc get_oncanplay*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncanplay(self, p)
+
+proc put_oncanplaythrough*(
+    self: ptr IHTMLWindow7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncanplaythrough(self, v)
+
+proc get_oncanplaythrough*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncanplaythrough(self, p)
+
+proc put_onchange*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onchange(self, v)
+
+proc get_onchange*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onchange(self, p)
+
+proc put_onclick*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onclick(self, v)
+
+proc get_onclick*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onclick(self, p)
+
+proc put_oncontextmenu*(
+    self: ptr IHTMLWindow7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncontextmenu(self, v)
+
+proc get_oncontextmenu*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncontextmenu(self, p)
+
+proc put_ondblclick*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondblclick(self, v)
+
+proc get_ondblclick*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondblclick(self, p)
+
+proc put_ondrag*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondrag(self, v)
+
+proc get_ondrag*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondrag(self, p)
+
+proc put_ondragend*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragend(self, v)
+
+proc get_ondragend*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragend(self, p)
+
+proc put_ondragenter*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragenter(self, v)
+
+proc get_ondragenter*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragenter(self, p)
+
+proc put_ondragleave*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragleave(self, v)
+
+proc get_ondragleave*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragleave(self, p)
+
+proc put_ondragover*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragover(self, v)
+
+proc get_ondragover*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragover(self, p)
+
+proc put_ondragstart*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragstart(self, v)
+
+proc get_ondragstart*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragstart(self, p)
+
+proc put_ondrop*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondrop(self, v)
+
+proc get_ondrop*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondrop(self, p)
+
+proc put_ondurationchange*(
+    self: ptr IHTMLWindow7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondurationchange(self, v)
+
+proc get_ondurationchange*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondurationchange(self, p)
+
+proc put_onfocusin*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onfocusin(self, v)
+
+proc get_onfocusin*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onfocusin(self, p)
+
+proc put_onfocusout*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onfocusout(self, v)
+
+proc get_onfocusout*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onfocusout(self, p)
+
+proc put_oninput*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oninput(self, v)
+
+proc get_oninput*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oninput(self, p)
+
+proc put_onemptied*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onemptied(self, v)
+
+proc get_onemptied*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onemptied(self, p)
+
+proc put_onended*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onended(self, v)
+
+proc get_onended*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onended(self, p)
+
+proc put_onkeydown*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onkeydown(self, v)
+
+proc get_onkeydown*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onkeydown(self, p)
+
+proc put_onkeypress*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onkeypress(self, v)
+
+proc get_onkeypress*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onkeypress(self, p)
+
+proc put_onkeyup*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onkeyup(self, v)
+
+proc get_onkeyup*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onkeyup(self, p)
+
+proc put_onloadeddata*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onloadeddata(self, v)
+
+proc get_onloadeddata*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onloadeddata(self, p)
+
+proc put_onloadedmetadata*(
+    self: ptr IHTMLWindow7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onloadedmetadata(self, v)
+
+proc get_onloadedmetadata*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onloadedmetadata(self, p)
+
+proc put_onloadstart*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onloadstart(self, v)
+
+proc get_onloadstart*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onloadstart(self, p)
+
+proc put_onmousedown*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmousedown(self, v)
+
+proc get_onmousedown*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmousedown(self, p)
+
+proc put_onmouseenter*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmouseenter(self, v)
+
+proc get_onmouseenter*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmouseenter(self, p)
+
+proc put_onmouseleave*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmouseleave(self, v)
+
+proc get_onmouseleave*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmouseleave(self, p)
+
+proc put_onmousemove*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmousemove(self, v)
+
+proc get_onmousemove*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmousemove(self, p)
+
+proc put_onmouseout*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmouseout(self, v)
+
+proc get_onmouseout*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmouseout(self, p)
+
+proc put_onmouseover*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmouseover(self, v)
+
+proc get_onmouseover*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmouseover(self, p)
+
+proc put_onmouseup*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmouseup(self, v)
+
+proc get_onmouseup*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmouseup(self, p)
+
+proc put_onmousewheel*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmousewheel(self, v)
+
+proc get_onmousewheel*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmousewheel(self, p)
+
+proc put_onoffline*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onoffline(self, v)
+
+proc get_onoffline*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onoffline(self, p)
+
+proc put_ononline*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ononline(self, v)
+
+proc get_ononline*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ononline(self, p)
+
+proc put_onprogress*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onprogress(self, v)
+
+proc get_onprogress*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onprogress(self, p)
+
+proc put_onratechange*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onratechange(self, v)
+
+proc get_onratechange*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onratechange(self, p)
+
+proc put_onreadystatechange*(
+    self: ptr IHTMLWindow7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreadystatechange(self, v)
+
+proc get_onreadystatechange*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onreadystatechange(self, p)
+
+proc put_onreset*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreset(self, v)
+
+proc get_onreset*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onreset(self, p)
+
+proc put_onseeked*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onseeked(self, v)
+
+proc get_onseeked*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onseeked(self, p)
+
+proc put_onseeking*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onseeking(self, v)
+
+proc get_onseeking*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onseeking(self, p)
+
+proc put_onselect*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onselect(self, v)
+
+proc get_onselect*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onselect(self, p)
+
+proc put_onstalled*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onstalled(self, v)
+
+proc get_onstalled*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onstalled(self, p)
+
+proc put_onstorage*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onstorage(self, v)
+
+proc get_onstorage*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onstorage(self, p)
+
+proc put_onsubmit*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onsubmit(self, v)
+
+proc get_onsubmit*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onsubmit(self, p)
+
+proc put_onsuspend*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onsuspend(self, v)
+
+proc get_onsuspend*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onsuspend(self, p)
+
+proc put_ontimeupdate*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ontimeupdate(self, v)
+
+proc get_ontimeupdate*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ontimeupdate(self, p)
+
+proc put_onpause*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onpause(self, v)
+
+proc get_onpause*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onpause(self, p)
+
+proc put_onplay*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onplay(self, v)
+
+proc get_onplay*(self: ptr IHTMLWindow7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onplay(self, p)
+
+proc put_onplaying*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onplaying(self, v)
+
+proc get_onplaying*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onplaying(self, p)
+
+proc put_onvolumechange*(
+    self: ptr IHTMLWindow7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onvolumechange(self, v)
+
+proc get_onvolumechange*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onvolumechange(self, p)
+
+proc put_onwaiting*(self: ptr IHTMLWindow7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onwaiting(self, v)
+
+proc get_onwaiting*(
+    self: ptr IHTMLWindow7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onwaiting(self, p)
+
+proc put_onmspointerdown*(
+    self: ptr IHTMLWindow8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerdown(self, v)
+
+proc get_onmspointerdown*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerdown(self, p)
+
+proc put_onmspointermove*(
+    self: ptr IHTMLWindow8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointermove(self, v)
+
+proc get_onmspointermove*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointermove(self, p)
+
+proc put_onmspointerup*(
+    self: ptr IHTMLWindow8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerup(self, v)
+
+proc get_onmspointerup*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerup(self, p)
+
+proc put_onmspointerover*(
+    self: ptr IHTMLWindow8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerover(self, v)
+
+proc get_onmspointerover*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerover(self, p)
+
+proc put_onmspointerout*(
+    self: ptr IHTMLWindow8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerout(self, v)
+
+proc get_onmspointerout*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerout(self, p)
+
+proc put_onmspointercancel*(
+    self: ptr IHTMLWindow8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointercancel(self, v)
+
+proc get_onmspointercancel*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointercancel(self, p)
+
+proc put_onmspointerhover*(
+    self: ptr IHTMLWindow8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerhover(self, v)
+
+proc get_onmspointerhover*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerhover(self, p)
+
+proc put_onmsgesturestart*(
+    self: ptr IHTMLWindow8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturestart(self, v)
+
+proc get_onmsgesturestart*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturestart(self, p)
+
+proc put_onmsgesturechange*(
+    self: ptr IHTMLWindow8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturechange(self, v)
+
+proc get_onmsgesturechange*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturechange(self, p)
+
+proc put_onmsgestureend*(
+    self: ptr IHTMLWindow8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgestureend(self, v)
+
+proc get_onmsgestureend*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgestureend(self, p)
+
+proc put_onmsgesturehold*(
+    self: ptr IHTMLWindow8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturehold(self, v)
+
+proc get_onmsgesturehold*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturehold(self, p)
+
+proc put_onmsgesturetap*(
+    self: ptr IHTMLWindow8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturetap(self, v)
+
+proc get_onmsgesturetap*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturetap(self, p)
+
+proc put_onmsgesturedoubletap*(
+    self: ptr IHTMLWindow8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturedoubletap(self, v)
+
+proc get_onmsgesturedoubletap*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturedoubletap(self, p)
+
+proc put_onmsinertiastart*(
+    self: ptr IHTMLWindow8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsinertiastart(self, v)
+
+proc get_onmsinertiastart*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsinertiastart(self, p)
+
+proc get_applicationCache*(
+    self: ptr IHTMLWindow8, p: ptr ptr IHTMLApplicationCache
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_applicationCache(self, p)
+
+proc put_onpopstate*(self: ptr IHTMLWindow8, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onpopstate(self, v)
+
+proc get_onpopstate*(
+    self: ptr IHTMLWindow8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onpopstate(self, p)
+
+proc get_userAgent*(
+    self: ptr IHTMLDocumentCompatibleInfo, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_userAgent(self, p)
+
+proc get_version*(
+    self: ptr IHTMLDocumentCompatibleInfo, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_version(self, p)
+
+proc get_length*(
+    self: ptr IHTMLDocumentCompatibleInfoCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc item*(
+    self: ptr IHTMLDocumentCompatibleInfoCollection,
+    index: LONG,
+    compatibleInfo: ptr ptr IHTMLDocumentCompatibleInfo,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, compatibleInfo)
+
+proc get_Script*(
+    self: ptr IHTMLDocument, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Script(self, p)
+
+proc get_all*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_all(self, p)
+
+proc get_body*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_body(self, p)
+
+proc get_activeElement*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_activeElement(self, p)
+
+proc get_images*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_images(self, p)
+
+proc get_applets*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_applets(self, p)
+
+proc get_links*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_links(self, p)
+
+proc get_forms*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_forms(self, p)
+
+proc get_anchors*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_anchors(self, p)
+
+proc put_title*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_title(self, v)
+
+proc get_title*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_title(self, p)
+
+proc get_scripts*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scripts(self, p)
+
+proc put_designMode*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_designMode(self, v)
+
+proc get_designMode*(
+    self: ptr IHTMLDocument2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_designMode(self, p)
+
+proc get_selection*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLSelectionObject
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selection(self, p)
+
+proc get_readyState*(
+    self: ptr IHTMLDocument2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, p)
+
+proc get_frames*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLFramesCollection2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frames(self, p)
+
+proc get_embeds*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_embeds(self, p)
+
+proc get_plugins*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_plugins(self, p)
+
+proc put_alinkColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_alinkColor(self, v)
+
+proc get_alinkColor*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_alinkColor(self, p)
+
+proc put_bgColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_bgColor(self, v)
+
+proc get_bgColor*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bgColor(self, p)
+
+proc put_fgColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fgColor(self, v)
+
+proc get_fgColor*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fgColor(self, p)
+
+proc put_linkColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_linkColor(self, v)
+
+proc get_linkColor*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_linkColor(self, p)
+
+proc put_vlinkColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vlinkColor(self, v)
+
+proc get_vlinkColor*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vlinkColor(self, p)
+
+proc get_referrer*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_referrer(self, p)
+
+proc get_location*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLLocation
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_location(self, p)
+
+proc get_lastModified*(
+    self: ptr IHTMLDocument2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lastModified(self, p)
+
+proc put_URL*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_URL(self, v)
+
+proc get_URL*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_URL(self, p)
+
+proc put_domain*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_domain(self, v)
+
+proc get_domain*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_domain(self, p)
+
+proc put_cookie*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cookie(self, v)
+
+proc get_cookie*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cookie(self, p)
+
+proc put_expando*(
+    self: ptr IHTMLDocument2, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_expando(self, v)
+
+proc get_expando*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_expando(self, p)
+
+proc put_charset*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_charset(self, v)
+
+proc get_charset*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_charset(self, p)
+
+proc put_defaultCharset*(
+    self: ptr IHTMLDocument2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_defaultCharset(self, v)
+
+proc get_defaultCharset*(
+    self: ptr IHTMLDocument2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defaultCharset(self, p)
+
+proc get_mimeType*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_mimeType(self, p)
+
+proc get_fileSize*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fileSize(self, p)
+
+proc get_fileCreatedDate*(
+    self: ptr IHTMLDocument2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fileCreatedDate(self, p)
+
+proc get_fileModifiedDate*(
+    self: ptr IHTMLDocument2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fileModifiedDate(self, p)
+
+proc get_fileUpdatedDate*(
+    self: ptr IHTMLDocument2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fileUpdatedDate(self, p)
+
+proc get_security*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_security(self, p)
+
+proc get_protocol*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_protocol(self, p)
+
+proc get_nameProp*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nameProp(self, p)
+
+proc write*(
+    self: ptr IHTMLDocument2, psarray: ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.write(self, psarray)
+
+proc writeln*(
+    self: ptr IHTMLDocument2, psarray: ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.writeln(self, psarray)
+
+proc open*(
+    self: ptr IHTMLDocument2,
+    url: BSTR,
+    name: VARIANT,
+    features: VARIANT,
+    replace: VARIANT,
+    pomWindowResult: ptr ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.open(self, url, name, features, replace, pomWindowResult)
+
+proc close*(self: ptr IHTMLDocument2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.close(self)
+
+proc clear*(self: ptr IHTMLDocument2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clear(self)
+
+proc queryCommandSupported*(
+    self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandSupported(self, cmdID, pfRet)
+
+proc queryCommandEnabled*(
+    self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandEnabled(self, cmdID, pfRet)
+
+proc queryCommandState*(
+    self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandState(self, cmdID, pfRet)
+
+proc queryCommandIndeterm*(
+    self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandIndeterm(self, cmdID, pfRet)
+
+proc queryCommandText*(
+    self: ptr IHTMLDocument2, cmdID: BSTR, pcmdText: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandText(self, cmdID, pcmdText)
+
+proc queryCommandValue*(
+    self: ptr IHTMLDocument2, cmdID: BSTR, pcmdValue: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.queryCommandValue(self, cmdID, pcmdValue)
+
+proc execCommand*(
+    self: ptr IHTMLDocument2,
+    cmdID: BSTR,
+    showUI: VARIANT_BOOL,
+    value: VARIANT,
+    pfRet: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.execCommand(self, cmdID, showUI, value, pfRet)
+
+proc execCommandShowHelp*(
+    self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.execCommandShowHelp(self, cmdID, pfRet)
+
+proc createElement*(
+    self: ptr IHTMLDocument2, eTag: BSTR, newElem: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createElement(self, eTag, newElem)
+
+proc put_onhelp*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onhelp(self, v)
+
+proc get_onhelp*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onhelp(self, p)
+
+proc put_onclick*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onclick(self, v)
+
+proc get_onclick*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onclick(self, p)
+
+proc put_ondblclick*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondblclick(self, v)
+
+proc get_ondblclick*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondblclick(self, p)
+
+proc put_onkeyup*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onkeyup(self, v)
+
+proc get_onkeyup*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onkeyup(self, p)
+
+proc put_onkeydown*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onkeydown(self, v)
+
+proc get_onkeydown*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onkeydown(self, p)
+
+proc put_onkeypress*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onkeypress(self, v)
+
+proc get_onkeypress*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onkeypress(self, p)
+
+proc put_onmouseup*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmouseup(self, v)
+
+proc get_onmouseup*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmouseup(self, p)
+
+proc put_onmousedown*(
+    self: ptr IHTMLDocument2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmousedown(self, v)
+
+proc get_onmousedown*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmousedown(self, p)
+
+proc put_onmousemove*(
+    self: ptr IHTMLDocument2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmousemove(self, v)
+
+proc get_onmousemove*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmousemove(self, p)
+
+proc put_onmouseout*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmouseout(self, v)
+
+proc get_onmouseout*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmouseout(self, p)
+
+proc put_onmouseover*(
+    self: ptr IHTMLDocument2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmouseover(self, v)
+
+proc get_onmouseover*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmouseover(self, p)
+
+proc put_onreadystatechange*(
+    self: ptr IHTMLDocument2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreadystatechange(self, v)
+
+proc get_onreadystatechange*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onreadystatechange(self, p)
+
+proc put_onafterupdate*(
+    self: ptr IHTMLDocument2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onafterupdate(self, v)
+
+proc get_onafterupdate*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onafterupdate(self, p)
+
+proc put_onrowexit*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onrowexit(self, v)
+
+proc get_onrowexit*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onrowexit(self, p)
+
+proc put_onrowenter*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onrowenter(self, v)
+
+proc get_onrowenter*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onrowenter(self, p)
+
+proc put_ondragstart*(
+    self: ptr IHTMLDocument2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragstart(self, v)
+
+proc get_ondragstart*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragstart(self, p)
+
+proc put_onselectstart*(
+    self: ptr IHTMLDocument2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onselectstart(self, v)
+
+proc get_onselectstart*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onselectstart(self, p)
+
+proc elementFromPoint*(
+    self: ptr IHTMLDocument2, x: LONG, y: LONG, elementHit: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.elementFromPoint(self, x, y, elementHit)
+
+proc get_parentWindow*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLWindow2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parentWindow(self, p)
+
+proc get_styleSheets*(
+    self: ptr IHTMLDocument2, p: ptr ptr IHTMLStyleSheetsCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_styleSheets(self, p)
+
+proc put_onbeforeupdate*(
+    self: ptr IHTMLDocument2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforeupdate(self, v)
+
+proc get_onbeforeupdate*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforeupdate(self, p)
+
+proc put_onerrorupdate*(
+    self: ptr IHTMLDocument2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onerrorupdate(self, v)
+
+proc get_onerrorupdate*(
+    self: ptr IHTMLDocument2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onerrorupdate(self, p)
+
+proc toString*(self: ptr IHTMLDocument2, String: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toString(self, String)
+
+proc createStyleSheet*(
+    self: ptr IHTMLDocument2,
+    bstrHref: BSTR,
+    lIndex: LONG,
+    ppnewStyleSheet: ptr ptr IHTMLStyleSheet,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createStyleSheet(self, bstrHref, lIndex, ppnewStyleSheet)
+
+proc releaseCapture*(self: ptr IHTMLDocument3): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.releaseCapture(self)
+
+proc recalc*(
+    self: ptr IHTMLDocument3, fForce: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.recalc(self, fForce)
+
+proc createTextNode*(
+    self: ptr IHTMLDocument3, text: BSTR, newTextNode: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createTextNode(self, text, newTextNode)
+
+proc get_documentElement*(
+    self: ptr IHTMLDocument3, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_documentElement(self, p)
+
+proc get_uniqueID*(self: ptr IHTMLDocument3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_uniqueID(self, p)
+
+proc attachEvent*(
+    self: ptr IHTMLDocument3,
+    event: BSTR,
+    pDisp: ptr IDispatch,
+    pfResult: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.attachEvent(self, event, pDisp, pfResult)
+
+proc detachEvent*(
+    self: ptr IHTMLDocument3, event: BSTR, pDisp: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.detachEvent(self, event, pDisp)
+
+proc put_onrowsdelete*(
+    self: ptr IHTMLDocument3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onrowsdelete(self, v)
+
+proc get_onrowsdelete*(
+    self: ptr IHTMLDocument3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onrowsdelete(self, p)
+
+proc put_onrowsinserted*(
+    self: ptr IHTMLDocument3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onrowsinserted(self, v)
+
+proc get_onrowsinserted*(
+    self: ptr IHTMLDocument3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onrowsinserted(self, p)
+
+proc put_oncellchange*(
+    self: ptr IHTMLDocument3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncellchange(self, v)
+
+proc get_oncellchange*(
+    self: ptr IHTMLDocument3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncellchange(self, p)
+
+proc put_ondatasetchanged*(
+    self: ptr IHTMLDocument3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondatasetchanged(self, v)
+
+proc get_ondatasetchanged*(
+    self: ptr IHTMLDocument3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondatasetchanged(self, p)
+
+proc put_ondataavailable*(
+    self: ptr IHTMLDocument3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondataavailable(self, v)
+
+proc get_ondataavailable*(
+    self: ptr IHTMLDocument3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondataavailable(self, p)
+
+proc put_ondatasetcomplete*(
+    self: ptr IHTMLDocument3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondatasetcomplete(self, v)
+
+proc get_ondatasetcomplete*(
+    self: ptr IHTMLDocument3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondatasetcomplete(self, p)
+
+proc put_onpropertychange*(
+    self: ptr IHTMLDocument3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onpropertychange(self, v)
+
+proc get_onpropertychange*(
+    self: ptr IHTMLDocument3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onpropertychange(self, p)
+
+proc put_dir*(self: ptr IHTMLDocument3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dir(self, v)
+
+proc get_dir*(self: ptr IHTMLDocument3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dir(self, p)
+
+proc put_oncontextmenu*(
+    self: ptr IHTMLDocument3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncontextmenu(self, v)
+
+proc get_oncontextmenu*(
+    self: ptr IHTMLDocument3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncontextmenu(self, p)
+
+proc put_onstop*(self: ptr IHTMLDocument3, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onstop(self, v)
+
+proc get_onstop*(self: ptr IHTMLDocument3, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onstop(self, p)
+
+proc createDocumentFragment*(
+    self: ptr IHTMLDocument3, pNewDoc: ptr ptr IHTMLDocument2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createDocumentFragment(self, pNewDoc)
+
+proc get_parentDocument*(
+    self: ptr IHTMLDocument3, p: ptr ptr IHTMLDocument2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parentDocument(self, p)
+
+proc put_enableDownload*(
+    self: ptr IHTMLDocument3, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_enableDownload(self, v)
+
+proc get_enableDownload*(
+    self: ptr IHTMLDocument3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_enableDownload(self, p)
+
+proc put_baseUrl*(self: ptr IHTMLDocument3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_baseUrl(self, v)
+
+proc get_baseUrl*(self: ptr IHTMLDocument3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseUrl(self, p)
+
+proc get_childNodes*(
+    self: ptr IHTMLDocument3, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_childNodes(self, p)
+
+proc put_inheritStyleSheets*(
+    self: ptr IHTMLDocument3, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_inheritStyleSheets(self, v)
+
+proc get_inheritStyleSheets*(
+    self: ptr IHTMLDocument3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_inheritStyleSheets(self, p)
+
+proc put_onbeforeeditfocus*(
+    self: ptr IHTMLDocument3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforeeditfocus(self, v)
+
+proc get_onbeforeeditfocus*(
+    self: ptr IHTMLDocument3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforeeditfocus(self, p)
+
+proc getElementsByName*(
+    self: ptr IHTMLDocument3, v: BSTR, pelColl: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getElementsByName(self, v, pelColl)
+
+proc getElementById*(
+    self: ptr IHTMLDocument3, v: BSTR, pel: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getElementById(self, v, pel)
+
+proc getElementsByTagName*(
+    self: ptr IHTMLDocument3, v: BSTR, pelColl: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getElementsByTagName(self, v, pelColl)
+
+proc focus*(self: ptr IHTMLDocument4): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.focus(self)
+
+proc hasFocus*(
+    self: ptr IHTMLDocument4, pfFocus: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasFocus(self, pfFocus)
+
+proc put_onselectionchange*(
+    self: ptr IHTMLDocument4, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onselectionchange(self, v)
+
+proc get_onselectionchange*(
+    self: ptr IHTMLDocument4, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onselectionchange(self, p)
+
+proc get_namespaces*(
+    self: ptr IHTMLDocument4, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_namespaces(self, p)
+
+proc createDocumentFromUrl*(
+    self: ptr IHTMLDocument4,
+    bstrUrl: BSTR,
+    bstrOptions: BSTR,
+    newDoc: ptr ptr IHTMLDocument2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createDocumentFromUrl(self, bstrUrl, bstrOptions, newDoc)
+
+proc put_media*(self: ptr IHTMLDocument4, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_media(self, v)
+
+proc get_media*(self: ptr IHTMLDocument4, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_media(self, p)
+
+proc createEventObject*(
+    self: ptr IHTMLDocument4,
+    pvarEventObject: ptr VARIANT,
+    ppEventObj: ptr ptr IHTMLEventObj,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createEventObject(self, pvarEventObject, ppEventObj)
+
+proc fireEvent*(
+    self: ptr IHTMLDocument4,
+    bstrEventName: BSTR,
+    pvarEventObject: ptr VARIANT,
+    pfCancelled: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.fireEvent(self, bstrEventName, pvarEventObject, pfCancelled)
+
+proc createRenderStyle*(
+    self: ptr IHTMLDocument4, v: BSTR, ppIHTMLRenderStyle: ptr ptr IHTMLRenderStyle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createRenderStyle(self, v, ppIHTMLRenderStyle)
+
+proc put_oncontrolselect*(
+    self: ptr IHTMLDocument4, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncontrolselect(self, v)
+
+proc get_oncontrolselect*(
+    self: ptr IHTMLDocument4, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncontrolselect(self, p)
+
+proc get_URLUnencoded*(
+    self: ptr IHTMLDocument4, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_URLUnencoded(self, p)
+
+proc put_onmousewheel*(
+    self: ptr IHTMLDocument5, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmousewheel(self, v)
+
+proc get_onmousewheel*(
+    self: ptr IHTMLDocument5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmousewheel(self, p)
+
+proc get_doctype*(
+    self: ptr IHTMLDocument5, p: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_doctype(self, p)
+
+proc get_implementation*(
+    self: ptr IHTMLDocument5, p: ptr ptr IHTMLDOMImplementation
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_implementation(self, p)
+
+proc createAttribute*(
+    self: ptr IHTMLDocument5, bstrattrName: BSTR, ppattribute: ptr ptr IHTMLDOMAttribute
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createAttribute(self, bstrattrName, ppattribute)
+
+proc createComment*(
+    self: ptr IHTMLDocument5, bstrdata: BSTR, ppRetNode: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createComment(self, bstrdata, ppRetNode)
+
+proc put_onfocusin*(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onfocusin(self, v)
+
+proc get_onfocusin*(
+    self: ptr IHTMLDocument5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onfocusin(self, p)
+
+proc put_onfocusout*(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onfocusout(self, v)
+
+proc get_onfocusout*(
+    self: ptr IHTMLDocument5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onfocusout(self, p)
+
+proc put_onactivate*(self: ptr IHTMLDocument5, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onactivate(self, v)
+
+proc get_onactivate*(
+    self: ptr IHTMLDocument5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onactivate(self, p)
+
+proc put_ondeactivate*(
+    self: ptr IHTMLDocument5, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondeactivate(self, v)
+
+proc get_ondeactivate*(
+    self: ptr IHTMLDocument5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondeactivate(self, p)
+
+proc put_onbeforeactivate*(
+    self: ptr IHTMLDocument5, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforeactivate(self, v)
+
+proc get_onbeforeactivate*(
+    self: ptr IHTMLDocument5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforeactivate(self, p)
+
+proc put_onbeforedeactivate*(
+    self: ptr IHTMLDocument5, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforedeactivate(self, v)
+
+proc get_onbeforedeactivate*(
+    self: ptr IHTMLDocument5, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforedeactivate(self, p)
+
+proc get_compatMode*(
+    self: ptr IHTMLDocument5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_compatMode(self, p)
+
+proc get_compatible*(
+    self: ptr IHTMLDocument6, p: ptr ptr IHTMLDocumentCompatibleInfoCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_compatible(self, p)
+
+proc get_documentMode*(
+    self: ptr IHTMLDocument6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_documentMode(self, p)
+
+proc put_onstorage*(self: ptr IHTMLDocument6, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onstorage(self, v)
+
+proc get_onstorage*(
+    self: ptr IHTMLDocument6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onstorage(self, p)
+
+proc put_onstoragecommit*(
+    self: ptr IHTMLDocument6, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onstoragecommit(self, v)
+
+proc get_onstoragecommit*(
+    self: ptr IHTMLDocument6, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onstoragecommit(self, p)
+
+proc getElementById*(
+    self: ptr IHTMLDocument6, bstrId: BSTR, ppRetElement: ptr ptr IHTMLElement2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getElementById(self, bstrId, ppRetElement)
+
+proc updateSettings*(self: ptr IHTMLDocument6): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.updateSettings(self)
+
+proc get_defaultView*(
+    self: ptr IHTMLDocument7, p: ptr ptr IHTMLWindow2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defaultView(self, p)
+
+proc createCDATASection*(
+    self: ptr IHTMLDocument7, text: BSTR, newCDATASectionNode: ptr ptr IHTMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createCDATASection(self, text, newCDATASectionNode)
+
+proc getSelection*(
+    self: ptr IHTMLDocument7, ppIHTMLSelection: ptr ptr IHTMLSelection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getSelection(self, ppIHTMLSelection)
+
+proc getElementsByTagNameNS*(
+    self: ptr IHTMLDocument7,
+    pvarNS: ptr VARIANT,
+    bstrLocalName: BSTR,
+    pelColl: ptr ptr IHTMLElementCollection,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getElementsByTagNameNS(self, pvarNS, bstrLocalName, pelColl)
+
+proc createElementNS*(
+    self: ptr IHTMLDocument7,
+    pvarNS: ptr VARIANT,
+    bstrTag: BSTR,
+    newElem: ptr ptr IHTMLElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createElementNS(self, pvarNS, bstrTag, newElem)
+
+proc createAttributeNS*(
+    self: ptr IHTMLDocument7,
+    pvarNS: ptr VARIANT,
+    bstrAttrName: BSTR,
+    ppAttribute: ptr ptr IHTMLDOMAttribute,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createAttributeNS(self, pvarNS, bstrAttrName, ppAttribute)
+
+proc put_onmsthumbnailclick*(
+    self: ptr IHTMLDocument7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsthumbnailclick(self, v)
+
+proc get_onmsthumbnailclick*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsthumbnailclick(self, p)
+
+proc get_characterSet*(
+    self: ptr IHTMLDocument7, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_characterSet(self, p)
+
+proc createElement*(
+    self: ptr IHTMLDocument7, bstrTag: BSTR, newElem: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createElement(self, bstrTag, newElem)
+
+proc createAttribute*(
+    self: ptr IHTMLDocument7, bstrAttrName: BSTR, ppAttribute: ptr ptr IHTMLDOMAttribute
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createAttribute(self, bstrAttrName, ppAttribute)
+
+proc getElementsByClassName*(
+    self: ptr IHTMLDocument7, v: BSTR, pel: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getElementsByClassName(self, v, pel)
+
+proc createProcessingInstruction*(
+    self: ptr IHTMLDocument7,
+    bstrTarget: BSTR,
+    bstrData: BSTR,
+    newProcessingInstruction: ptr ptr IDOMProcessingInstruction,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createProcessingInstruction(
+      self, bstrTarget, bstrData, newProcessingInstruction
+    )
+
+proc adoptNode*(
+    self: ptr IHTMLDocument7,
+    pNodeSource: ptr IHTMLDOMNode,
+    ppNodeDest: ptr ptr IHTMLDOMNode3,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.adoptNode(self, pNodeSource, ppNodeDest)
+
+proc put_onmssitemodejumplistitemremoved*(
+    self: ptr IHTMLDocument7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmssitemodejumplistitemremoved(self, v)
+
+proc get_onmssitemodejumplistitemremoved*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmssitemodejumplistitemremoved(self, p)
+
+proc get_all*(
+    self: ptr IHTMLDocument7, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_all(self, p)
+
+proc get_inputEncoding*(
+    self: ptr IHTMLDocument7, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_inputEncoding(self, p)
+
+proc get_xmlEncoding*(
+    self: ptr IHTMLDocument7, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_xmlEncoding(self, p)
+
+proc put_xmlStandalone*(
+    self: ptr IHTMLDocument7, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_xmlStandalone(self, v)
+
+proc get_xmlStandalone*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_xmlStandalone(self, p)
+
+proc put_xmlVersion*(self: ptr IHTMLDocument7, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_xmlVersion(self, v)
+
+proc get_xmlVersion*(
+    self: ptr IHTMLDocument7, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_xmlVersion(self, p)
+
+proc hasAttributes*(
+    self: ptr IHTMLDocument7, pfHasAttributes: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasAttributes(self, pfHasAttributes)
+
+proc put_onabort*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onabort(self, v)
+
+proc get_onabort*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onabort(self, p)
+
+proc put_onblur*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onblur(self, v)
+
+proc get_onblur*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onblur(self, p)
+
+proc put_oncanplay*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncanplay(self, v)
+
+proc get_oncanplay*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncanplay(self, p)
+
+proc put_oncanplaythrough*(
+    self: ptr IHTMLDocument7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncanplaythrough(self, v)
+
+proc get_oncanplaythrough*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncanplaythrough(self, p)
+
+proc put_onchange*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onchange(self, v)
+
+proc get_onchange*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onchange(self, p)
+
+proc put_ondrag*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondrag(self, v)
+
+proc get_ondrag*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondrag(self, p)
+
+proc put_ondragend*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragend(self, v)
+
+proc get_ondragend*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragend(self, p)
+
+proc put_ondragenter*(
+    self: ptr IHTMLDocument7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragenter(self, v)
+
+proc get_ondragenter*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragenter(self, p)
+
+proc put_ondragleave*(
+    self: ptr IHTMLDocument7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragleave(self, v)
+
+proc get_ondragleave*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragleave(self, p)
+
+proc put_ondragover*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondragover(self, v)
+
+proc get_ondragover*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondragover(self, p)
+
+proc put_ondrop*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondrop(self, v)
+
+proc get_ondrop*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondrop(self, p)
+
+proc put_ondurationchange*(
+    self: ptr IHTMLDocument7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondurationchange(self, v)
+
+proc get_ondurationchange*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondurationchange(self, p)
+
+proc put_onemptied*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onemptied(self, v)
+
+proc get_onemptied*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onemptied(self, p)
+
+proc put_onended*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onended(self, v)
+
+proc get_onended*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onended(self, p)
+
+proc put_onerror*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onerror(self, v)
+
+proc get_onerror*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onerror(self, p)
+
+proc put_onfocus*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onfocus(self, v)
+
+proc get_onfocus*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onfocus(self, p)
+
+proc put_oninput*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oninput(self, v)
+
+proc get_oninput*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oninput(self, p)
+
+proc put_onload*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onload(self, v)
+
+proc get_onload*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onload(self, p)
+
+proc put_onloadeddata*(
+    self: ptr IHTMLDocument7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onloadeddata(self, v)
+
+proc get_onloadeddata*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onloadeddata(self, p)
+
+proc put_onloadedmetadata*(
+    self: ptr IHTMLDocument7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onloadedmetadata(self, v)
+
+proc get_onloadedmetadata*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onloadedmetadata(self, p)
+
+proc put_onloadstart*(
+    self: ptr IHTMLDocument7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onloadstart(self, v)
+
+proc get_onloadstart*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onloadstart(self, p)
+
+proc put_onpause*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onpause(self, v)
+
+proc get_onpause*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onpause(self, p)
+
+proc put_onplay*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onplay(self, v)
+
+proc get_onplay*(self: ptr IHTMLDocument7, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onplay(self, p)
+
+proc put_onplaying*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onplaying(self, v)
+
+proc get_onplaying*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onplaying(self, p)
+
+proc put_onprogress*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onprogress(self, v)
+
+proc get_onprogress*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onprogress(self, p)
+
+proc put_onratechange*(
+    self: ptr IHTMLDocument7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onratechange(self, v)
+
+proc get_onratechange*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onratechange(self, p)
+
+proc put_onreset*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreset(self, v)
+
+proc get_onreset*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onreset(self, p)
+
+proc put_onscroll*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onscroll(self, v)
+
+proc get_onscroll*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onscroll(self, p)
+
+proc put_onseeked*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onseeked(self, v)
+
+proc get_onseeked*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onseeked(self, p)
+
+proc put_onseeking*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onseeking(self, v)
+
+proc get_onseeking*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onseeking(self, p)
+
+proc put_onselect*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onselect(self, v)
+
+proc get_onselect*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onselect(self, p)
+
+proc put_onstalled*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onstalled(self, v)
+
+proc get_onstalled*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onstalled(self, p)
+
+proc put_onsubmit*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onsubmit(self, v)
+
+proc get_onsubmit*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onsubmit(self, p)
+
+proc put_onsuspend*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onsuspend(self, v)
+
+proc get_onsuspend*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onsuspend(self, p)
+
+proc put_ontimeupdate*(
+    self: ptr IHTMLDocument7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ontimeupdate(self, v)
+
+proc get_ontimeupdate*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ontimeupdate(self, p)
+
+proc put_onvolumechange*(
+    self: ptr IHTMLDocument7, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onvolumechange(self, v)
+
+proc get_onvolumechange*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onvolumechange(self, p)
+
+proc put_onwaiting*(self: ptr IHTMLDocument7, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onwaiting(self, v)
+
+proc get_onwaiting*(
+    self: ptr IHTMLDocument7, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onwaiting(self, p)
+
+proc normalize*(self: ptr IHTMLDocument7): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.normalize(self)
+
+proc importNode*(
+    self: ptr IHTMLDocument7,
+    pNodeSource: ptr IHTMLDOMNode,
+    fDeep: VARIANT_BOOL,
+    ppNodeDest: ptr ptr IHTMLDOMNode3,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.importNode(self, pNodeSource, fDeep, ppNodeDest)
+
+proc get_parentWindow*(
+    self: ptr IHTMLDocument7, p: ptr ptr IHTMLWindow2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parentWindow(self, p)
+
+proc putref_body*(
+    self: ptr IHTMLDocument7, v: ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_body(self, v)
+
+proc get_body*(
+    self: ptr IHTMLDocument7, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_body(self, p)
+
+proc get_head*(
+    self: ptr IHTMLDocument7, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_head(self, p)
+
+proc put_onmscontentzoom*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmscontentzoom(self, v)
+
+proc get_onmscontentzoom*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmscontentzoom(self, p)
+
+proc put_onmspointerdown*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerdown(self, v)
+
+proc get_onmspointerdown*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerdown(self, p)
+
+proc put_onmspointermove*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointermove(self, v)
+
+proc get_onmspointermove*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointermove(self, p)
+
+proc put_onmspointerup*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerup(self, v)
+
+proc get_onmspointerup*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerup(self, p)
+
+proc put_onmspointerover*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerover(self, v)
+
+proc get_onmspointerover*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerover(self, p)
+
+proc put_onmspointerout*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerout(self, v)
+
+proc get_onmspointerout*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerout(self, p)
+
+proc put_onmspointercancel*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointercancel(self, v)
+
+proc get_onmspointercancel*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointercancel(self, p)
+
+proc put_onmspointerhover*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmspointerhover(self, v)
+
+proc get_onmspointerhover*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmspointerhover(self, p)
+
+proc put_onmsgesturestart*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturestart(self, v)
+
+proc get_onmsgesturestart*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturestart(self, p)
+
+proc put_onmsgesturechange*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturechange(self, v)
+
+proc get_onmsgesturechange*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturechange(self, p)
+
+proc put_onmsgestureend*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgestureend(self, v)
+
+proc get_onmsgestureend*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgestureend(self, p)
+
+proc put_onmsgesturehold*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturehold(self, v)
+
+proc get_onmsgesturehold*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturehold(self, p)
+
+proc put_onmsgesturetap*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturetap(self, v)
+
+proc get_onmsgesturetap*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturetap(self, p)
+
+proc put_onmsgesturedoubletap*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsgesturedoubletap(self, v)
+
+proc get_onmsgesturedoubletap*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsgesturedoubletap(self, p)
+
+proc put_onmsinertiastart*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsinertiastart(self, v)
+
+proc get_onmsinertiastart*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsinertiastart(self, p)
+
+proc elementsFromPoint*(
+    self: ptr IHTMLDocument8,
+    x: float32,
+    y: float32,
+    elementsHit: ptr ptr IHTMLDOMChildrenCollection,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.elementsFromPoint(self, x, y, elementsHit)
+
+proc elementsFromRect*(
+    self: ptr IHTMLDocument8,
+    left: float32,
+    top: float32,
+    width: float32,
+    height: float32,
+    elementsHit: ptr ptr IHTMLDOMChildrenCollection,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.elementsFromRect(self, left, top, width, height, elementsHit)
+
+proc put_onmsmanipulationstatechanged*(
+    self: ptr IHTMLDocument8, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmsmanipulationstatechanged(self, v)
+
+proc get_onmsmanipulationstatechanged*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmsmanipulationstatechanged(self, p)
+
+proc put_msCapsLockWarningOff*(
+    self: ptr IHTMLDocument8, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msCapsLockWarningOff(self, v)
+
+proc get_msCapsLockWarningOff*(
+    self: ptr IHTMLDocument8, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msCapsLockWarningOff(self, p)
+
+proc createEvent*(
+    self: ptr IDocumentEvent, eventType: BSTR, ppEvent: ptr ptr IDOMEvent
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createEvent(self, eventType, ppEvent)
+
+proc createRange*(
+    self: ptr IDocumentRange, ppIHTMLDOMRange: ptr ptr IHTMLDOMRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createRange(self, ppIHTMLDOMRange)
+
+proc querySelector*(
+    self: ptr IDocumentSelector, v: BSTR, pel: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.querySelector(self, v, pel)
+
+proc querySelectorAll*(
+    self: ptr IDocumentSelector, v: BSTR, pel: ptr ptr IHTMLDOMChildrenCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.querySelectorAll(self, v, pel)
+
+proc createNodeIterator*(
+    self: ptr IDocumentTraversal,
+    pRootNode: ptr IDispatch,
+    ulWhatToShow: LONG,
+    pFilter: ptr VARIANT,
+    fEntityReferenceExpansion: VARIANT_BOOL,
+    ppNodeIterator: ptr ptr IDOMNodeIterator,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createNodeIterator(
+      self, pRootNode, ulWhatToShow, pFilter, fEntityReferenceExpansion, ppNodeIterator
+    )
+
+proc createTreeWalker*(
+    self: ptr IDocumentTraversal,
+    pRootNode: ptr IDispatch,
+    ulWhatToShow: LONG,
+    pFilter: ptr VARIANT,
+    fEntityReferenceExpansion: VARIANT_BOOL,
+    ppTreeWalker: ptr ptr IDOMTreeWalker,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createTreeWalker(
+      self, pRootNode, ulWhatToShow, pFilter, fEntityReferenceExpansion, ppTreeWalker
+    )
+
+proc put_URL*(self: ptr IWebBridge, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_URL(self, v)
+
+proc get_URL*(self: ptr IWebBridge, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_URL(self, p)
+
+proc put_Scrollbar*(self: ptr IWebBridge, v: VARIANT_BOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Scrollbar(self, v)
+
+proc get_Scrollbar*(
+    self: ptr IWebBridge, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Scrollbar(self, p)
+
+proc put_embed*(self: ptr IWebBridge, v: VARIANT_BOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_embed(self, v)
+
+proc get_embed*(self: ptr IWebBridge, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_embed(self, p)
+
+proc get_event*(
+    self: ptr IWebBridge, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_event(self, p)
+
+proc get_readyState*(self: ptr IWebBridge, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, p)
+
+proc AboutBox*(self: ptr IWebBridge): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AboutBox(self)
+
+proc raiseEvent*(
+    self: ptr IWBScriptControl, name: BSTR, eventData: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.raiseEvent(self, name, eventData)
+
+proc bubbleEvent*(self: ptr IWBScriptControl): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.bubbleEvent(self)
+
+proc setContextMenu*(
+    self: ptr IWBScriptControl, menuItemPairs: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setContextMenu(self, menuItemPairs)
+
+proc put_selectableContent*(
+    self: ptr IWBScriptControl, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_selectableContent(self, v)
+
+proc get_selectableContent*(
+    self: ptr IWBScriptControl, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selectableContent(self, p)
+
+proc get_frozen*(
+    self: ptr IWBScriptControl, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frozen(self, p)
+
+proc put_scrollbar*(
+    self: ptr IWBScriptControl, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollbar(self, v)
+
+proc get_scrollbar*(
+    self: ptr IWBScriptControl, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollbar(self, p)
+
+proc get_version*(self: ptr IWBScriptControl, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_version(self, p)
+
+proc get_visibility*(
+    self: ptr IWBScriptControl, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_visibility(self, p)
+
+proc put_onvisibilitychange*(
+    self: ptr IWBScriptControl, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onvisibilitychange(self, v)
+
+proc get_onvisibilitychange*(
+    self: ptr IWBScriptControl, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onvisibilitychange(self, p)
+
+proc put_hidden*(self: ptr IHTMLEmbedElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hidden(self, v)
+
+proc get_hidden*(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hidden(self, p)
+
+proc get_palette*(
+    self: ptr IHTMLEmbedElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_palette(self, p)
+
+proc get_pluginspage*(
+    self: ptr IHTMLEmbedElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pluginspage(self, p)
+
+proc put_src*(self: ptr IHTMLEmbedElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_src(self, v)
+
+proc get_src*(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_src(self, p)
+
+proc put_units*(self: ptr IHTMLEmbedElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_units(self, v)
+
+proc get_units*(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_units(self, p)
+
+proc put_name*(self: ptr IHTMLEmbedElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLEmbedElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_width*(self: ptr IHTMLEmbedElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(
+    self: ptr IHTMLEmbedElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_height*(self: ptr IHTMLEmbedElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(
+    self: ptr IHTMLEmbedElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_src*(self: ptr IHTMLEmbedElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_src(self, v)
+
+proc get_src*(self: ptr IHTMLEmbedElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_src(self, p)
+
+proc get_pluginspage*(
+    self: ptr IHTMLEmbedElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pluginspage(self, p)
+
+proc put_length*(self: ptr IHTMLAreasCollection, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_length(self, v)
+
+proc get_length*(
+    self: ptr IHTMLAreasCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLAreasCollection, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc item*(
+    self: ptr IHTMLAreasCollection,
+    name: VARIANT,
+    index: VARIANT,
+    pdisp: ptr ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, name, index, pdisp)
+
+proc tags*(
+    self: ptr IHTMLAreasCollection, tagName: VARIANT, pdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.tags(self, tagName, pdisp)
+
+proc add*(
+    self: ptr IHTMLAreasCollection, element: ptr IHTMLElement, before: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.add(self, element, before)
+
+proc remove*(self: ptr IHTMLAreasCollection, index: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.remove(self, index)
+
+proc urns*(
+    self: ptr IHTMLAreasCollection2, urn: VARIANT, pdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.urns(self, urn, pdisp)
+
+proc namedItem*(
+    self: ptr IHTMLAreasCollection3, name: BSTR, pdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.namedItem(self, name, pdisp)
+
+proc get_length*(
+    self: ptr IHTMLAreasCollection4, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc item*(
+    self: ptr IHTMLAreasCollection4, index: LONG, pNode: ptr ptr IHTMLElement2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, pNode)
+
+proc namedItem*(
+    self: ptr IHTMLAreasCollection4, name: BSTR, pNode: ptr ptr IHTMLElement2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.namedItem(self, name, pNode)
+
+proc get_areas*(
+    self: ptr IHTMLMapElement, p: ptr ptr IHTMLAreasCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_areas(self, p)
+
+proc put_name*(self: ptr IHTMLMapElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLMapElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_shape*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_shape(self, v)
+
+proc get_shape*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_shape(self, p)
+
+proc put_coords*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_coords(self, v)
+
+proc get_coords*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_coords(self, p)
+
+proc put_href*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_href(self, v)
+
+proc get_href*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc put_target*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_target(self, v)
+
+proc get_target*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_target(self, p)
+
+proc put_alt*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_alt(self, v)
+
+proc get_alt*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_alt(self, p)
+
+proc put_noHref*(
+    self: ptr IHTMLAreaElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_noHref(self, v)
+
+proc get_noHref*(
+    self: ptr IHTMLAreaElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_noHref(self, p)
+
+proc put_host*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_host(self, v)
+
+proc get_host*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_host(self, p)
+
+proc put_hostname*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hostname(self, v)
+
+proc get_hostname*(
+    self: ptr IHTMLAreaElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hostname(self, p)
+
+proc put_pathname*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pathname(self, v)
+
+proc get_pathname*(
+    self: ptr IHTMLAreaElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pathname(self, p)
+
+proc put_port*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_port(self, v)
+
+proc get_port*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_port(self, p)
+
+proc put_protocol*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_protocol(self, v)
+
+proc get_protocol*(
+    self: ptr IHTMLAreaElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_protocol(self, p)
+
+proc put_search*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_search(self, v)
+
+proc get_search*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_search(self, p)
+
+proc put_hash*(self: ptr IHTMLAreaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hash(self, v)
+
+proc get_hash*(self: ptr IHTMLAreaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hash(self, p)
+
+proc put_onblur*(self: ptr IHTMLAreaElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onblur(self, v)
+
+proc get_onblur*(
+    self: ptr IHTMLAreaElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onblur(self, p)
+
+proc put_onfocus*(self: ptr IHTMLAreaElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onfocus(self, v)
+
+proc get_onfocus*(
+    self: ptr IHTMLAreaElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onfocus(self, p)
+
+proc put_tabIndex*(self: ptr IHTMLAreaElement, v: int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_tabIndex(self, v)
+
+proc get_tabIndex*(
+    self: ptr IHTMLAreaElement, p: ptr int16
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tabIndex(self, p)
+
+proc focus*(self: ptr IHTMLAreaElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.focus(self)
+
+proc blur*(self: ptr IHTMLAreaElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.blur(self)
+
+proc put_shape*(self: ptr IHTMLAreaElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_shape(self, v)
+
+proc get_shape*(self: ptr IHTMLAreaElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_shape(self, p)
+
+proc put_coords*(self: ptr IHTMLAreaElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_coords(self, v)
+
+proc get_coords*(self: ptr IHTMLAreaElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_coords(self, p)
+
+proc put_href*(self: ptr IHTMLAreaElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_href(self, v)
+
+proc get_href*(self: ptr IHTMLAreaElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc put_align*(self: ptr IHTMLTableCaption, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLTableCaption, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_vAlign*(self: ptr IHTMLTableCaption, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vAlign(self, v)
+
+proc get_vAlign*(self: ptr IHTMLTableCaption, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vAlign(self, p)
+
+proc put_text*(self: ptr IHTMLCommentElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_text(self, v)
+
+proc get_text*(self: ptr IHTMLCommentElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_text(self, p)
+
+proc put_atomic*(self: ptr IHTMLCommentElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_atomic(self, v)
+
+proc get_atomic*(
+    self: ptr IHTMLCommentElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_atomic(self, p)
+
+proc put_data*(self: ptr IHTMLCommentElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_data(self, v)
+
+proc get_data*(
+    self: ptr IHTMLCommentElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_data(self, p)
+
+proc get_length*(
+    self: ptr IHTMLCommentElement2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc substringData*(
+    self: ptr IHTMLCommentElement2, offset: LONG, Count: LONG, pbstrsubString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.substringData(self, offset, Count, pbstrsubString)
+
+proc appendData*(
+    self: ptr IHTMLCommentElement2, bstrstring: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendData(self, bstrstring)
+
+proc insertData*(
+    self: ptr IHTMLCommentElement2, offset: LONG, bstrstring: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertData(self, offset, bstrstring)
+
+proc deleteData*(
+    self: ptr IHTMLCommentElement2, offset: LONG, Count: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteData(self, offset, Count)
+
+proc replaceData*(
+    self: ptr IHTMLCommentElement2, offset: LONG, Count: LONG, bstrstring: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceData(self, offset, Count, bstrstring)
+
+proc substringData*(
+    self: ptr IHTMLCommentElement3, offset: LONG, Count: LONG, pbstrsubString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.substringData(self, offset, Count, pbstrsubString)
+
+proc insertData*(
+    self: ptr IHTMLCommentElement3, offset: LONG, bstrstring: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertData(self, offset, bstrstring)
+
+proc deleteData*(
+    self: ptr IHTMLCommentElement3, offset: LONG, Count: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteData(self, offset, Count)
+
+proc replaceData*(
+    self: ptr IHTMLCommentElement3, offset: LONG, Count: LONG, bstrstring: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceData(self, offset, Count, bstrstring)
+
+proc put_cite*(self: ptr IHTMLPhraseElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cite(self, v)
+
+proc get_cite*(self: ptr IHTMLPhraseElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cite(self, p)
+
+proc put_dateTime*(self: ptr IHTMLPhraseElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dateTime(self, v)
+
+proc get_dateTime*(
+    self: ptr IHTMLPhraseElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dateTime(self, p)
+
+proc put_cite*(self: ptr IHTMLPhraseElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cite(self, v)
+
+proc get_cite*(self: ptr IHTMLPhraseElement3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cite(self, p)
+
+proc put_cols*(self: ptr IHTMLTable, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cols(self, v)
+
+proc get_cols*(self: ptr IHTMLTable, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cols(self, p)
+
+proc put_border*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_border(self, v)
+
+proc get_border*(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_border(self, p)
+
+proc put_frame*(self: ptr IHTMLTable, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_frame(self, v)
+
+proc get_frame*(self: ptr IHTMLTable, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frame(self, p)
+
+proc put_rules*(self: ptr IHTMLTable, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rules(self, v)
+
+proc get_rules*(self: ptr IHTMLTable, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rules(self, p)
+
+proc put_cellSpacing*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cellSpacing(self, v)
+
+proc get_cellSpacing*(
+    self: ptr IHTMLTable, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cellSpacing(self, p)
+
+proc put_cellPadding*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cellPadding(self, v)
+
+proc get_cellPadding*(
+    self: ptr IHTMLTable, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cellPadding(self, p)
+
+proc put_background*(self: ptr IHTMLTable, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_background(self, v)
+
+proc get_background*(self: ptr IHTMLTable, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_background(self, p)
+
+proc put_bgColor*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_bgColor(self, v)
+
+proc get_bgColor*(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bgColor(self, p)
+
+proc put_borderColor*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderColor(self, v)
+
+proc get_borderColor*(
+    self: ptr IHTMLTable, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColor(self, p)
+
+proc put_borderColorLight*(
+    self: ptr IHTMLTable, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderColorLight(self, v)
+
+proc get_borderColorLight*(
+    self: ptr IHTMLTable, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColorLight(self, p)
+
+proc put_borderColorDark*(
+    self: ptr IHTMLTable, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderColorDark(self, v)
+
+proc get_borderColorDark*(
+    self: ptr IHTMLTable, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColorDark(self, p)
+
+proc put_align*(self: ptr IHTMLTable, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLTable, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc refresh*(self: ptr IHTMLTable): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.refresh(self)
+
+proc get_rows*(
+    self: ptr IHTMLTable, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rows(self, p)
+
+proc put_width*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_height*(self: ptr IHTMLTable, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(self: ptr IHTMLTable, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_dataPageSize*(self: ptr IHTMLTable, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dataPageSize(self, v)
+
+proc get_dataPageSize*(self: ptr IHTMLTable, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dataPageSize(self, p)
+
+proc nextPage*(self: ptr IHTMLTable): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.nextPage(self)
+
+proc previousPage*(self: ptr IHTMLTable): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.previousPage(self)
+
+proc get_tHead*(
+    self: ptr IHTMLTable, p: ptr ptr IHTMLTableSection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tHead(self, p)
+
+proc get_tFoot*(
+    self: ptr IHTMLTable, p: ptr ptr IHTMLTableSection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tFoot(self, p)
+
+proc get_tBodies*(
+    self: ptr IHTMLTable, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tBodies(self, p)
+
+proc get_caption*(
+    self: ptr IHTMLTable, p: ptr ptr IHTMLTableCaption
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_caption(self, p)
+
+proc createTHead*(
+    self: ptr IHTMLTable, head: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createTHead(self, head)
+
+proc deleteTHead*(self: ptr IHTMLTable): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteTHead(self)
+
+proc createTFoot*(
+    self: ptr IHTMLTable, foot: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createTFoot(self, foot)
+
+proc deleteTFoot*(self: ptr IHTMLTable): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteTFoot(self)
+
+proc createCaption*(
+    self: ptr IHTMLTable, caption: ptr ptr IHTMLTableCaption
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createCaption(self, caption)
+
+proc deleteCaption*(self: ptr IHTMLTable): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteCaption(self)
+
+proc insertRow*(
+    self: ptr IHTMLTable, index: LONG, row: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertRow(self, index, row)
+
+proc deleteRow*(self: ptr IHTMLTable, index: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteRow(self, index)
+
+proc get_readyState*(self: ptr IHTMLTable, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, p)
+
+proc put_onreadystatechange*(
+    self: ptr IHTMLTable, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreadystatechange(self, v)
+
+proc get_onreadystatechange*(
+    self: ptr IHTMLTable, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onreadystatechange(self, p)
+
+proc firstPage*(self: ptr IHTMLTable2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.firstPage(self)
+
+proc lastPage*(self: ptr IHTMLTable2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.lastPage(self)
+
+proc get_cells*(
+    self: ptr IHTMLTable2, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cells(self, p)
+
+proc moveRow*(
+    self: ptr IHTMLTable2, indexFrom: LONG, indexTo: LONG, row: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.moveRow(self, indexFrom, indexTo, row)
+
+proc put_summary*(self: ptr IHTMLTable3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_summary(self, v)
+
+proc get_summary*(self: ptr IHTMLTable3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_summary(self, p)
+
+proc putref_tHead*(
+    self: ptr IHTMLTable4, v: ptr IHTMLTableSection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_tHead(self, v)
+
+proc get_tHead*(
+    self: ptr IHTMLTable4, p: ptr ptr IHTMLTableSection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tHead(self, p)
+
+proc putref_tFoot*(
+    self: ptr IHTMLTable4, v: ptr IHTMLTableSection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_tFoot(self, v)
+
+proc get_tFoot*(
+    self: ptr IHTMLTable4, p: ptr ptr IHTMLTableSection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tFoot(self, p)
+
+proc putref_caption*(
+    self: ptr IHTMLTable4, v: ptr IHTMLTableCaption
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_caption(self, v)
+
+proc get_caption*(
+    self: ptr IHTMLTable4, p: ptr ptr IHTMLTableCaption
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_caption(self, p)
+
+proc insertRow*(
+    self: ptr IHTMLTable4, index: LONG, row: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertRow(self, index, row)
+
+proc deleteRow*(self: ptr IHTMLTable4, index: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteRow(self, index)
+
+proc createTBody*(
+    self: ptr IHTMLTable4, tbody: ptr ptr IHTMLTableSection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createTBody(self, tbody)
+
+proc put_span*(self: ptr IHTMLTableCol, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_span(self, v)
+
+proc get_span*(self: ptr IHTMLTableCol, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_span(self, p)
+
+proc put_width*(self: ptr IHTMLTableCol, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(self: ptr IHTMLTableCol, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_align*(self: ptr IHTMLTableCol, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLTableCol, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_vAlign*(self: ptr IHTMLTableCol, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vAlign(self, v)
+
+proc get_vAlign*(self: ptr IHTMLTableCol, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vAlign(self, p)
+
+proc put_ch*(self: ptr IHTMLTableCol2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ch(self, v)
+
+proc get_ch*(self: ptr IHTMLTableCol2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ch(self, p)
+
+proc put_chOff*(self: ptr IHTMLTableCol2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_chOff(self, v)
+
+proc get_chOff*(self: ptr IHTMLTableCol2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_chOff(self, p)
+
+proc put_ch*(self: ptr IHTMLTableCol3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ch(self, v)
+
+proc get_ch*(self: ptr IHTMLTableCol3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ch(self, p)
+
+proc put_chOff*(self: ptr IHTMLTableCol3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_chOff(self, v)
+
+proc get_chOff*(self: ptr IHTMLTableCol3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_chOff(self, p)
+
+proc put_align*(self: ptr IHTMLTableSection, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLTableSection, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_vAlign*(self: ptr IHTMLTableSection, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vAlign(self, v)
+
+proc get_vAlign*(self: ptr IHTMLTableSection, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vAlign(self, p)
+
+proc put_bgColor*(self: ptr IHTMLTableSection, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_bgColor(self, v)
+
+proc get_bgColor*(
+    self: ptr IHTMLTableSection, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bgColor(self, p)
+
+proc get_rows*(
+    self: ptr IHTMLTableSection, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rows(self, p)
+
+proc insertRow*(
+    self: ptr IHTMLTableSection, index: LONG, row: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertRow(self, index, row)
+
+proc deleteRow*(self: ptr IHTMLTableSection, index: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteRow(self, index)
+
+proc moveRow*(
+    self: ptr IHTMLTableSection2, indexFrom: LONG, indexTo: LONG, row: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.moveRow(self, indexFrom, indexTo, row)
+
+proc put_ch*(self: ptr IHTMLTableSection3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ch(self, v)
+
+proc get_ch*(self: ptr IHTMLTableSection3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ch(self, p)
+
+proc put_chOff*(self: ptr IHTMLTableSection3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_chOff(self, v)
+
+proc get_chOff*(self: ptr IHTMLTableSection3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_chOff(self, p)
+
+proc put_ch*(self: ptr IHTMLTableSection4, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ch(self, v)
+
+proc get_ch*(self: ptr IHTMLTableSection4, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ch(self, p)
+
+proc put_chOff*(self: ptr IHTMLTableSection4, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_chOff(self, v)
+
+proc get_chOff*(self: ptr IHTMLTableSection4, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_chOff(self, p)
+
+proc insertRow*(
+    self: ptr IHTMLTableSection4, index: LONG, row: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertRow(self, index, row)
+
+proc deleteRow*(self: ptr IHTMLTableSection4, index: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteRow(self, index)
+
+proc put_align*(self: ptr IHTMLTableRow, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLTableRow, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_vAlign*(self: ptr IHTMLTableRow, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vAlign(self, v)
+
+proc get_vAlign*(self: ptr IHTMLTableRow, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vAlign(self, p)
+
+proc put_bgColor*(self: ptr IHTMLTableRow, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_bgColor(self, v)
+
+proc get_bgColor*(self: ptr IHTMLTableRow, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bgColor(self, p)
+
+proc put_borderColor*(self: ptr IHTMLTableRow, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderColor(self, v)
+
+proc get_borderColor*(
+    self: ptr IHTMLTableRow, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColor(self, p)
+
+proc put_borderColorLight*(
+    self: ptr IHTMLTableRow, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderColorLight(self, v)
+
+proc get_borderColorLight*(
+    self: ptr IHTMLTableRow, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColorLight(self, p)
+
+proc put_borderColorDark*(
+    self: ptr IHTMLTableRow, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderColorDark(self, v)
+
+proc get_borderColorDark*(
+    self: ptr IHTMLTableRow, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColorDark(self, p)
+
+proc get_rowIndex*(self: ptr IHTMLTableRow, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rowIndex(self, p)
+
+proc get_sectionRowIndex*(
+    self: ptr IHTMLTableRow, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_sectionRowIndex(self, p)
+
+proc get_cells*(
+    self: ptr IHTMLTableRow, p: ptr ptr IHTMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cells(self, p)
+
+proc insertCell*(
+    self: ptr IHTMLTableRow, index: LONG, row: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertCell(self, index, row)
+
+proc deleteCell*(self: ptr IHTMLTableRow, index: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteCell(self, index)
+
+proc put_height*(self: ptr IHTMLTableRow2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(self: ptr IHTMLTableRow2, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_ch*(self: ptr IHTMLTableRow3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ch(self, v)
+
+proc get_ch*(self: ptr IHTMLTableRow3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ch(self, p)
+
+proc put_chOff*(self: ptr IHTMLTableRow3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_chOff(self, v)
+
+proc get_chOff*(self: ptr IHTMLTableRow3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_chOff(self, p)
+
+proc put_ch*(self: ptr IHTMLTableRow4, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ch(self, v)
+
+proc get_ch*(self: ptr IHTMLTableRow4, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ch(self, p)
+
+proc put_chOff*(self: ptr IHTMLTableRow4, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_chOff(self, v)
+
+proc get_chOff*(self: ptr IHTMLTableRow4, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_chOff(self, p)
+
+proc insertCell*(
+    self: ptr IHTMLTableRow4, index: LONG, row: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertCell(self, index, row)
+
+proc deleteCell*(self: ptr IHTMLTableRow4, index: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteCell(self, index)
+
+proc get_clientHeight*(
+    self: ptr IHTMLTableRowMetrics, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientHeight(self, p)
+
+proc get_clientWidth*(
+    self: ptr IHTMLTableRowMetrics, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientWidth(self, p)
+
+proc get_clientTop*(
+    self: ptr IHTMLTableRowMetrics, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientTop(self, p)
+
+proc get_clientLeft*(
+    self: ptr IHTMLTableRowMetrics, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientLeft(self, p)
+
+proc put_rowSpan*(self: ptr IHTMLTableCell, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rowSpan(self, v)
+
+proc get_rowSpan*(self: ptr IHTMLTableCell, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rowSpan(self, p)
+
+proc put_colSpan*(self: ptr IHTMLTableCell, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_colSpan(self, v)
+
+proc get_colSpan*(self: ptr IHTMLTableCell, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_colSpan(self, p)
+
+proc put_align*(self: ptr IHTMLTableCell, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLTableCell, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_vAlign*(self: ptr IHTMLTableCell, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vAlign(self, v)
+
+proc get_vAlign*(self: ptr IHTMLTableCell, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vAlign(self, p)
+
+proc put_bgColor*(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_bgColor(self, v)
+
+proc get_bgColor*(
+    self: ptr IHTMLTableCell, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bgColor(self, p)
+
+proc put_noWrap*(
+    self: ptr IHTMLTableCell, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_noWrap(self, v)
+
+proc get_noWrap*(
+    self: ptr IHTMLTableCell, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_noWrap(self, p)
+
+proc put_background*(self: ptr IHTMLTableCell, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_background(self, v)
+
+proc get_background*(
+    self: ptr IHTMLTableCell, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_background(self, p)
+
+proc put_borderColor*(
+    self: ptr IHTMLTableCell, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderColor(self, v)
+
+proc get_borderColor*(
+    self: ptr IHTMLTableCell, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColor(self, p)
+
+proc put_borderColorLight*(
+    self: ptr IHTMLTableCell, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderColorLight(self, v)
+
+proc get_borderColorLight*(
+    self: ptr IHTMLTableCell, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColorLight(self, p)
+
+proc put_borderColorDark*(
+    self: ptr IHTMLTableCell, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderColorDark(self, v)
+
+proc get_borderColorDark*(
+    self: ptr IHTMLTableCell, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColorDark(self, p)
+
+proc put_width*(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_height*(self: ptr IHTMLTableCell, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(self: ptr IHTMLTableCell, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc get_cellIndex*(self: ptr IHTMLTableCell, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cellIndex(self, p)
+
+proc put_abbr*(self: ptr IHTMLTableCell2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_abbr(self, v)
+
+proc get_abbr*(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_abbr(self, p)
+
+proc put_axis*(self: ptr IHTMLTableCell2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_axis(self, v)
+
+proc get_axis*(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_axis(self, p)
+
+proc put_ch*(self: ptr IHTMLTableCell2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ch(self, v)
+
+proc get_ch*(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ch(self, p)
+
+proc put_chOff*(self: ptr IHTMLTableCell2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_chOff(self, v)
+
+proc get_chOff*(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_chOff(self, p)
+
+proc put_headers*(self: ptr IHTMLTableCell2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_headers(self, v)
+
+proc get_headers*(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_headers(self, p)
+
+proc put_scope*(self: ptr IHTMLTableCell2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scope(self, v)
+
+proc get_scope*(self: ptr IHTMLTableCell2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scope(self, p)
+
+proc put_ch*(self: ptr IHTMLTableCell3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ch(self, v)
+
+proc get_ch*(self: ptr IHTMLTableCell3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ch(self, p)
+
+proc put_chOff*(self: ptr IHTMLTableCell3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_chOff(self, v)
+
+proc get_chOff*(self: ptr IHTMLTableCell3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_chOff(self, p)
+
+proc put_src*(self: ptr IHTMLScriptElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_src(self, v)
+
+proc get_src*(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_src(self, p)
+
+proc put_htmlFor*(self: ptr IHTMLScriptElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_htmlFor(self, v)
+
+proc get_htmlFor*(
+    self: ptr IHTMLScriptElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_htmlFor(self, p)
+
+proc put_event*(self: ptr IHTMLScriptElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_event(self, v)
+
+proc get_event*(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_event(self, p)
+
+proc put_text*(self: ptr IHTMLScriptElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_text(self, v)
+
+proc get_text*(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_text(self, p)
+
+proc put_defer*(
+    self: ptr IHTMLScriptElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_defer(self, v)
+
+proc get_defer*(
+    self: ptr IHTMLScriptElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defer(self, p)
+
+proc get_readyState*(
+    self: ptr IHTMLScriptElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, p)
+
+proc put_onerror*(
+    self: ptr IHTMLScriptElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onerror(self, v)
+
+proc get_onerror*(
+    self: ptr IHTMLScriptElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onerror(self, p)
+
+proc put_type*(self: ptr IHTMLScriptElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr IHTMLScriptElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_charset*(self: ptr IHTMLScriptElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_charset(self, v)
+
+proc get_charset*(
+    self: ptr IHTMLScriptElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_charset(self, p)
+
+proc put_src*(self: ptr IHTMLScriptElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_src(self, v)
+
+proc get_src*(self: ptr IHTMLScriptElement3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_src(self, p)
+
+proc get_usedCharset*(
+    self: ptr IHTMLScriptElement4, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_usedCharset(self, p)
+
+proc get_object*(
+    self: ptr IHTMLObjectElement, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_object(self, p)
+
+proc get_classid*(
+    self: ptr IHTMLObjectElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_classid(self, p)
+
+proc get_data*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_data(self, p)
+
+proc putref_recordset*(
+    self: ptr IHTMLObjectElement, v: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_recordset(self, v)
+
+proc get_recordset*(
+    self: ptr IHTMLObjectElement, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_recordset(self, p)
+
+proc put_align*(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_name*(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_codeBase*(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_codeBase(self, v)
+
+proc get_codeBase*(
+    self: ptr IHTMLObjectElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_codeBase(self, p)
+
+proc put_codeType*(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_codeType(self, v)
+
+proc get_codeType*(
+    self: ptr IHTMLObjectElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_codeType(self, p)
+
+proc put_code*(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_code(self, v)
+
+proc get_code*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_code(self, p)
+
+proc get_BaseHref*(
+    self: ptr IHTMLObjectElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_BaseHref(self, p)
+
+proc put_type*(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr IHTMLObjectElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc get_form*(
+    self: ptr IHTMLObjectElement, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc put_width*(self: ptr IHTMLObjectElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(
+    self: ptr IHTMLObjectElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_height*(self: ptr IHTMLObjectElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(
+    self: ptr IHTMLObjectElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc get_readyState*(
+    self: ptr IHTMLObjectElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, p)
+
+proc put_onreadystatechange*(
+    self: ptr IHTMLObjectElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreadystatechange(self, v)
+
+proc get_onreadystatechange*(
+    self: ptr IHTMLObjectElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onreadystatechange(self, p)
+
+proc put_onerror*(
+    self: ptr IHTMLObjectElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onerror(self, v)
+
+proc get_onerror*(
+    self: ptr IHTMLObjectElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onerror(self, p)
+
+proc put_altHtml*(self: ptr IHTMLObjectElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_altHtml(self, v)
+
+proc get_altHtml*(
+    self: ptr IHTMLObjectElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_altHtml(self, p)
+
+proc put_vspace*(self: ptr IHTMLObjectElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vspace(self, v)
+
+proc get_vspace*(
+    self: ptr IHTMLObjectElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vspace(self, p)
+
+proc put_hspace*(self: ptr IHTMLObjectElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hspace(self, v)
+
+proc get_hspace*(
+    self: ptr IHTMLObjectElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hspace(self, p)
+
+proc namedRecordset*(
+    self: ptr IHTMLObjectElement2,
+    dataMember: BSTR,
+    hierarchy: ptr VARIANT,
+    ppRecordset: ptr ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.namedRecordset(self, dataMember, hierarchy, ppRecordset)
+
+proc put_classid*(self: ptr IHTMLObjectElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_classid(self, v)
+
+proc get_classid*(
+    self: ptr IHTMLObjectElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_classid(self, p)
+
+proc put_data*(self: ptr IHTMLObjectElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_data(self, v)
+
+proc get_data*(self: ptr IHTMLObjectElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_data(self, p)
+
+proc put_archive*(self: ptr IHTMLObjectElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_archive(self, v)
+
+proc get_archive*(
+    self: ptr IHTMLObjectElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_archive(self, p)
+
+proc put_alt*(self: ptr IHTMLObjectElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_alt(self, v)
+
+proc get_alt*(self: ptr IHTMLObjectElement3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_alt(self, p)
+
+proc put_declare*(
+    self: ptr IHTMLObjectElement3, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_declare(self, v)
+
+proc get_declare*(
+    self: ptr IHTMLObjectElement3, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_declare(self, p)
+
+proc put_standby*(self: ptr IHTMLObjectElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_standby(self, v)
+
+proc get_standby*(
+    self: ptr IHTMLObjectElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_standby(self, p)
+
+proc put_border*(
+    self: ptr IHTMLObjectElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_border(self, v)
+
+proc get_border*(
+    self: ptr IHTMLObjectElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_border(self, p)
+
+proc put_useMap*(self: ptr IHTMLObjectElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_useMap(self, v)
+
+proc get_useMap*(
+    self: ptr IHTMLObjectElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_useMap(self, p)
+
+proc get_contentDocument*(
+    self: ptr IHTMLObjectElement4, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_contentDocument(self, p)
+
+proc put_codeBase*(self: ptr IHTMLObjectElement4, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_codeBase(self, v)
+
+proc get_codeBase*(
+    self: ptr IHTMLObjectElement4, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_codeBase(self, p)
+
+proc put_data*(self: ptr IHTMLObjectElement4, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_data(self, v)
+
+proc get_data*(self: ptr IHTMLObjectElement4, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_data(self, p)
+
+proc put_object*(self: ptr IHTMLObjectElement5, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_object(self, v)
+
+proc get_object*(
+    self: ptr IHTMLObjectElement5, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_object(self, p)
+
+proc put_name*(self: ptr IHTMLParamElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLParamElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_value*(self: ptr IHTMLParamElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(self: ptr IHTMLParamElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_type*(self: ptr IHTMLParamElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr IHTMLParamElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_valueType*(self: ptr IHTMLParamElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_valueType(self, v)
+
+proc get_valueType*(
+    self: ptr IHTMLParamElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_valueType(self, p)
+
+proc put_name*(self: ptr IHTMLParamElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLParamElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_type*(self: ptr IHTMLParamElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr IHTMLParamElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_value*(self: ptr IHTMLParamElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(self: ptr IHTMLParamElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_valueType*(self: ptr IHTMLParamElement2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_valueType(self, v)
+
+proc get_valueType*(
+    self: ptr IHTMLParamElement2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_valueType(self, p)
+
+proc put_src*(self: ptr IHTMLFrameBase, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_src(self, v)
+
+proc get_src*(self: ptr IHTMLFrameBase, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_src(self, p)
+
+proc put_name*(self: ptr IHTMLFrameBase, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(self: ptr IHTMLFrameBase, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_border*(self: ptr IHTMLFrameBase, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_border(self, v)
+
+proc get_border*(self: ptr IHTMLFrameBase, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_border(self, p)
+
+proc put_frameBorder*(self: ptr IHTMLFrameBase, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_frameBorder(self, v)
+
+proc get_frameBorder*(
+    self: ptr IHTMLFrameBase, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frameBorder(self, p)
+
+proc put_frameSpacing*(
+    self: ptr IHTMLFrameBase, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_frameSpacing(self, v)
+
+proc get_frameSpacing*(
+    self: ptr IHTMLFrameBase, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frameSpacing(self, p)
+
+proc put_marginWidth*(
+    self: ptr IHTMLFrameBase, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginWidth(self, v)
+
+proc get_marginWidth*(
+    self: ptr IHTMLFrameBase, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginWidth(self, p)
+
+proc put_marginHeight*(
+    self: ptr IHTMLFrameBase, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginHeight(self, v)
+
+proc get_marginHeight*(
+    self: ptr IHTMLFrameBase, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginHeight(self, p)
+
+proc put_noResize*(
+    self: ptr IHTMLFrameBase, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_noResize(self, v)
+
+proc get_noResize*(
+    self: ptr IHTMLFrameBase, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_noResize(self, p)
+
+proc put_scrolling*(self: ptr IHTMLFrameBase, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrolling(self, v)
+
+proc get_scrolling*(self: ptr IHTMLFrameBase, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrolling(self, p)
+
+proc get_contentWindow*(
+    self: ptr IHTMLFrameBase2, p: ptr ptr IHTMLWindow2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_contentWindow(self, p)
+
+proc put_onload*(self: ptr IHTMLFrameBase2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onload(self, v)
+
+proc get_onload*(
+    self: ptr IHTMLFrameBase2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onload(self, p)
+
+proc put_onreadystatechange*(
+    self: ptr IHTMLFrameBase2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreadystatechange(self, v)
+
+proc get_onreadystatechange*(
+    self: ptr IHTMLFrameBase2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onreadystatechange(self, p)
+
+proc get_readyState*(
+    self: ptr IHTMLFrameBase2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, p)
+
+proc put_allowTransparency*(
+    self: ptr IHTMLFrameBase2, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_allowTransparency(self, v)
+
+proc get_allowTransparency*(
+    self: ptr IHTMLFrameBase2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_allowTransparency(self, p)
+
+proc put_longDesc*(self: ptr IHTMLFrameBase3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_longDesc(self, v)
+
+proc get_longDesc*(self: ptr IHTMLFrameBase3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_longDesc(self, p)
+
+proc put_borderColor*(
+    self: ptr IHTMLFrameElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderColor(self, v)
+
+proc get_borderColor*(
+    self: ptr IHTMLFrameElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColor(self, p)
+
+proc put_height*(self: ptr IHTMLFrameElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(
+    self: ptr IHTMLFrameElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_width*(self: ptr IHTMLFrameElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(
+    self: ptr IHTMLFrameElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc get_contentDocument*(
+    self: ptr IHTMLFrameElement3, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_contentDocument(self, p)
+
+proc put_src*(self: ptr IHTMLFrameElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_src(self, v)
+
+proc get_src*(self: ptr IHTMLFrameElement3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_src(self, p)
+
+proc put_longDesc*(self: ptr IHTMLFrameElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_longDesc(self, v)
+
+proc get_longDesc*(
+    self: ptr IHTMLFrameElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_longDesc(self, p)
+
+proc put_frameBorder*(
+    self: ptr IHTMLFrameElement3, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_frameBorder(self, v)
+
+proc get_frameBorder*(
+    self: ptr IHTMLFrameElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frameBorder(self, p)
+
+proc put_vspace*(self: ptr IHTMLIFrameElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_vspace(self, v)
+
+proc get_vspace*(
+    self: ptr IHTMLIFrameElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_vspace(self, p)
+
+proc put_hspace*(self: ptr IHTMLIFrameElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_hspace(self, v)
+
+proc get_hspace*(
+    self: ptr IHTMLIFrameElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hspace(self, p)
+
+proc put_align*(self: ptr IHTMLIFrameElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLIFrameElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_height*(
+    self: ptr IHTMLIFrameElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(
+    self: ptr IHTMLIFrameElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_width*(self: ptr IHTMLIFrameElement2, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(
+    self: ptr IHTMLIFrameElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc get_contentDocument*(
+    self: ptr IHTMLIFrameElement3, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_contentDocument(self, p)
+
+proc put_src*(self: ptr IHTMLIFrameElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_src(self, v)
+
+proc get_src*(self: ptr IHTMLIFrameElement3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_src(self, p)
+
+proc put_longDesc*(self: ptr IHTMLIFrameElement3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_longDesc(self, v)
+
+proc get_longDesc*(
+    self: ptr IHTMLIFrameElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_longDesc(self, p)
+
+proc put_frameBorder*(
+    self: ptr IHTMLIFrameElement3, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_frameBorder(self, v)
+
+proc get_frameBorder*(
+    self: ptr IHTMLIFrameElement3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frameBorder(self, p)
+
+proc put_align*(self: ptr IHTMLDivPosition, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLDivPosition, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_align*(self: ptr IHTMLFieldSetElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(
+    self: ptr IHTMLFieldSetElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc get_form*(
+    self: ptr IHTMLFieldSetElement2, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc put_align*(self: ptr IHTMLLegendElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLLegendElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc get_form*(
+    self: ptr IHTMLLegendElement2, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc put_align*(self: ptr IHTMLSpanFlow, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(self: ptr IHTMLSpanFlow, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_rows*(self: ptr IHTMLFrameSetElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_rows(self, v)
+
+proc get_rows*(
+    self: ptr IHTMLFrameSetElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rows(self, p)
+
+proc put_cols*(self: ptr IHTMLFrameSetElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cols(self, v)
+
+proc get_cols*(
+    self: ptr IHTMLFrameSetElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cols(self, p)
+
+proc put_border*(
+    self: ptr IHTMLFrameSetElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_border(self, v)
+
+proc get_border*(
+    self: ptr IHTMLFrameSetElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_border(self, p)
+
+proc put_borderColor*(
+    self: ptr IHTMLFrameSetElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderColor(self, v)
+
+proc get_borderColor*(
+    self: ptr IHTMLFrameSetElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderColor(self, p)
+
+proc put_frameBorder*(
+    self: ptr IHTMLFrameSetElement, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_frameBorder(self, v)
+
+proc get_frameBorder*(
+    self: ptr IHTMLFrameSetElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frameBorder(self, p)
+
+proc put_frameSpacing*(
+    self: ptr IHTMLFrameSetElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_frameSpacing(self, v)
+
+proc get_frameSpacing*(
+    self: ptr IHTMLFrameSetElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frameSpacing(self, p)
+
+proc put_name*(self: ptr IHTMLFrameSetElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_name(self, v)
+
+proc get_name*(
+    self: ptr IHTMLFrameSetElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc put_onload*(
+    self: ptr IHTMLFrameSetElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onload(self, v)
+
+proc get_onload*(
+    self: ptr IHTMLFrameSetElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onload(self, p)
+
+proc put_onunload*(
+    self: ptr IHTMLFrameSetElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onunload(self, v)
+
+proc get_onunload*(
+    self: ptr IHTMLFrameSetElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onunload(self, p)
+
+proc put_onbeforeunload*(
+    self: ptr IHTMLFrameSetElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforeunload(self, v)
+
+proc get_onbeforeunload*(
+    self: ptr IHTMLFrameSetElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforeunload(self, p)
+
+proc put_onbeforeprint*(
+    self: ptr IHTMLFrameSetElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onbeforeprint(self, v)
+
+proc get_onbeforeprint*(
+    self: ptr IHTMLFrameSetElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onbeforeprint(self, p)
+
+proc put_onafterprint*(
+    self: ptr IHTMLFrameSetElement2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onafterprint(self, v)
+
+proc get_onafterprint*(
+    self: ptr IHTMLFrameSetElement2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onafterprint(self, p)
+
+proc put_onhashchange*(
+    self: ptr IHTMLFrameSetElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onhashchange(self, v)
+
+proc get_onhashchange*(
+    self: ptr IHTMLFrameSetElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onhashchange(self, p)
+
+proc put_onmessage*(
+    self: ptr IHTMLFrameSetElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onmessage(self, v)
+
+proc get_onmessage*(
+    self: ptr IHTMLFrameSetElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onmessage(self, p)
+
+proc put_onoffline*(
+    self: ptr IHTMLFrameSetElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onoffline(self, v)
+
+proc get_onoffline*(
+    self: ptr IHTMLFrameSetElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onoffline(self, p)
+
+proc put_ononline*(
+    self: ptr IHTMLFrameSetElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ononline(self, v)
+
+proc get_ononline*(
+    self: ptr IHTMLFrameSetElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ononline(self, p)
+
+proc put_onstorage*(
+    self: ptr IHTMLFrameSetElement3, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onstorage(self, v)
+
+proc get_onstorage*(
+    self: ptr IHTMLFrameSetElement3, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onstorage(self, p)
+
+proc put_src*(self: ptr IHTMLBGsound, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_src(self, v)
+
+proc get_src*(self: ptr IHTMLBGsound, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_src(self, p)
+
+proc put_loop*(self: ptr IHTMLBGsound, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_loop(self, v)
+
+proc get_loop*(self: ptr IHTMLBGsound, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_loop(self, p)
+
+proc put_volume*(self: ptr IHTMLBGsound, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_volume(self, v)
+
+proc get_volume*(self: ptr IHTMLBGsound, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_volume(self, p)
+
+proc put_balance*(self: ptr IHTMLBGsound, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_balance(self, v)
+
+proc get_balance*(self: ptr IHTMLBGsound, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_balance(self, p)
+
+proc get_length*(
+    self: ptr IHTMLFontNamesCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLFontNamesCollection, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc item*(
+    self: ptr IHTMLFontNamesCollection, index: LONG, pBstr: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, pBstr)
+
+proc get_length*(
+    self: ptr IHTMLFontSizesCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLFontSizesCollection, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc get_forFont*(
+    self: ptr IHTMLFontSizesCollection, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_forFont(self, p)
+
+proc item*(
+    self: ptr IHTMLFontSizesCollection, index: LONG, plSize: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, plSize)
+
+proc get_document*(
+    self: ptr IHTMLOptionsHolder, p: ptr ptr IHTMLDocument2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_document(self, p)
+
+proc get_fonts*(
+    self: ptr IHTMLOptionsHolder, p: ptr ptr IHTMLFontNamesCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fonts(self, p)
+
+proc put_execArg*(
+    self: ptr IHTMLOptionsHolder, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_execArg(self, v)
+
+proc get_execArg*(
+    self: ptr IHTMLOptionsHolder, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_execArg(self, p)
+
+proc put_errorLine*(self: ptr IHTMLOptionsHolder, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_errorLine(self, v)
+
+proc get_errorLine*(
+    self: ptr IHTMLOptionsHolder, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_errorLine(self, p)
+
+proc put_errorCharacter*(
+    self: ptr IHTMLOptionsHolder, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_errorCharacter(self, v)
+
+proc get_errorCharacter*(
+    self: ptr IHTMLOptionsHolder, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_errorCharacter(self, p)
+
+proc put_errorCode*(self: ptr IHTMLOptionsHolder, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_errorCode(self, v)
+
+proc get_errorCode*(
+    self: ptr IHTMLOptionsHolder, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_errorCode(self, p)
+
+proc put_errorMessage*(
+    self: ptr IHTMLOptionsHolder, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_errorMessage(self, v)
+
+proc get_errorMessage*(
+    self: ptr IHTMLOptionsHolder, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_errorMessage(self, p)
+
+proc put_errorDebug*(
+    self: ptr IHTMLOptionsHolder, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_errorDebug(self, v)
+
+proc get_errorDebug*(
+    self: ptr IHTMLOptionsHolder, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_errorDebug(self, p)
+
+proc get_unsecuredWindowOfDocument*(
+    self: ptr IHTMLOptionsHolder, p: ptr ptr IHTMLWindow2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_unsecuredWindowOfDocument(self, p)
+
+proc put_findText*(self: ptr IHTMLOptionsHolder, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_findText(self, v)
+
+proc get_findText*(
+    self: ptr IHTMLOptionsHolder, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_findText(self, p)
+
+proc put_anythingAfterFrameset*(
+    self: ptr IHTMLOptionsHolder, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_anythingAfterFrameset(self, v)
+
+proc get_anythingAfterFrameset*(
+    self: ptr IHTMLOptionsHolder, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_anythingAfterFrameset(self, p)
+
+proc sizes*(
+    self: ptr IHTMLOptionsHolder,
+    fontName: BSTR,
+    pSizesCollection: ptr ptr IHTMLFontSizesCollection,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.sizes(self, fontName, pSizesCollection)
+
+proc openfiledlg*(
+    self: ptr IHTMLOptionsHolder,
+    initFile: VARIANT,
+    initDir: VARIANT,
+    filter: VARIANT,
+    title: VARIANT,
+    pathName: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.openfiledlg(self, initFile, initDir, filter, title, pathName)
+
+proc savefiledlg*(
+    self: ptr IHTMLOptionsHolder,
+    initFile: VARIANT,
+    initDir: VARIANT,
+    filter: VARIANT,
+    title: VARIANT,
+    pathName: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.savefiledlg(self, initFile, initDir, filter, title, pathName)
+
+proc choosecolordlg*(
+    self: ptr IHTMLOptionsHolder, initColor: VARIANT, rgbColor: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.choosecolordlg(self, initColor, rgbColor)
+
+proc showSecurityInfo*(self: ptr IHTMLOptionsHolder): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.showSecurityInfo(self)
+
+proc isApartmentModel*(
+    self: ptr IHTMLOptionsHolder,
+    `object`: ptr IHTMLObjectElement,
+    fApartment: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.isApartmentModel(self, `object`, fApartment)
+
+proc getCharset*(
+    self: ptr IHTMLOptionsHolder, fontName: BSTR, charset: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getCharset(self, fontName, charset)
+
+proc get_secureConnectionInfo*(
+    self: ptr IHTMLOptionsHolder, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_secureConnectionInfo(self, p)
+
+proc put_type*(self: ptr IHTMLStyleElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr IHTMLStyleElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc get_readyState*(
+    self: ptr IHTMLStyleElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, p)
+
+proc put_onreadystatechange*(
+    self: ptr IHTMLStyleElement, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreadystatechange(self, v)
+
+proc get_onreadystatechange*(
+    self: ptr IHTMLStyleElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onreadystatechange(self, p)
+
+proc put_onload*(self: ptr IHTMLStyleElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onload(self, v)
+
+proc get_onload*(
+    self: ptr IHTMLStyleElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onload(self, p)
+
+proc put_onerror*(self: ptr IHTMLStyleElement, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onerror(self, v)
+
+proc get_onerror*(
+    self: ptr IHTMLStyleElement, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onerror(self, p)
+
+proc get_styleSheet*(
+    self: ptr IHTMLStyleElement, p: ptr ptr IHTMLStyleSheet
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_styleSheet(self, p)
+
+proc put_disabled*(
+    self: ptr IHTMLStyleElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_disabled(self, v)
+
+proc get_disabled*(
+    self: ptr IHTMLStyleElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_disabled(self, p)
+
+proc put_media*(self: ptr IHTMLStyleElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_media(self, v)
+
+proc get_media*(self: ptr IHTMLStyleElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_media(self, p)
+
+proc get_sheet*(
+    self: ptr IHTMLStyleElement2, p: ptr ptr IHTMLStyleSheet
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_sheet(self, p)
+
+proc put_fontsrc*(self: ptr IHTMLStyleFontFace, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fontsrc(self, v)
+
+proc get_fontsrc*(
+    self: ptr IHTMLStyleFontFace, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontsrc(self, p)
+
+proc get_style*(
+    self: ptr IHTMLStyleFontFace2, p: ptr ptr IHTMLRuleStyle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_style(self, p)
+
+proc get_responseText*(
+    self: ptr IHTMLXDomainRequest, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_responseText(self, p)
+
+proc put_timeout*(self: ptr IHTMLXDomainRequest, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_timeout(self, v)
+
+proc get_timeout*(
+    self: ptr IHTMLXDomainRequest, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_timeout(self, p)
+
+proc get_contentType*(
+    self: ptr IHTMLXDomainRequest, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_contentType(self, p)
+
+proc put_onprogress*(
+    self: ptr IHTMLXDomainRequest, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onprogress(self, v)
+
+proc get_onprogress*(
+    self: ptr IHTMLXDomainRequest, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onprogress(self, p)
+
+proc put_onerror*(
+    self: ptr IHTMLXDomainRequest, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onerror(self, v)
+
+proc get_onerror*(
+    self: ptr IHTMLXDomainRequest, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onerror(self, p)
+
+proc put_ontimeout*(
+    self: ptr IHTMLXDomainRequest, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ontimeout(self, v)
+
+proc get_ontimeout*(
+    self: ptr IHTMLXDomainRequest, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ontimeout(self, p)
+
+proc put_onload*(
+    self: ptr IHTMLXDomainRequest, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onload(self, v)
+
+proc get_onload*(
+    self: ptr IHTMLXDomainRequest, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onload(self, p)
+
+proc abort*(self: ptr IHTMLXDomainRequest): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.abort(self)
+
+proc open*(
+    self: ptr IHTMLXDomainRequest, bstrMethod: BSTR, bstrUrl: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.open(self, bstrMethod, bstrUrl)
+
+proc send*(
+    self: ptr IHTMLXDomainRequest, varBody: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.send(self, varBody)
+
+proc create*(
+    self: ptr IHTMLXDomainRequestFactory, a: ptr ptr IHTMLXDomainRequest
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.create(self, a)
+
+proc get_length*(self: ptr IHTMLStorage, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_remainingSpace*(
+    self: ptr IHTMLStorage, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_remainingSpace(self, p)
+
+proc key*(
+    self: ptr IHTMLStorage, lIndex: LONG, a: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.key(self, lIndex, a)
+
+proc getItem*(
+    self: ptr IHTMLStorage, bstrKey: BSTR, a: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getItem(self, bstrKey, a)
+
+proc setItem*(
+    self: ptr IHTMLStorage, bstrKey: BSTR, bstrValue: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setItem(self, bstrKey, bstrValue)
+
+proc removeItem*(self: ptr IHTMLStorage, bstrKey: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeItem(self, bstrKey)
+
+proc clear*(self: ptr IHTMLStorage): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clear(self)
+
+proc setItem*(
+    self: ptr IHTMLStorage2, bstrKey: BSTR, bstrValue: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setItem(self, bstrKey, bstrValue)
+
+proc addEventListener*(
+    self: ptr IEventTarget,
+    `type`: BSTR,
+    listener: ptr IDispatch,
+    useCapture: VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addEventListener(self, `type`, listener, useCapture)
+
+proc removeEventListener*(
+    self: ptr IEventTarget,
+    `type`: BSTR,
+    listener: ptr IDispatch,
+    useCapture: VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeEventListener(self, `type`, listener, useCapture)
+
+proc dispatchEvent*(
+    self: ptr IEventTarget, evt: ptr IDOMEvent, pfResult: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.dispatchEvent(self, evt, pfResult)
+
+proc get_bubbles*(
+    self: ptr IDOMEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bubbles(self, p)
+
+proc get_cancelable*(
+    self: ptr IDOMEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cancelable(self, p)
+
+proc get_currentTarget*(
+    self: ptr IDOMEvent, p: ptr ptr IEventTarget
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_currentTarget(self, p)
+
+proc get_defaultPrevented*(
+    self: ptr IDOMEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defaultPrevented(self, p)
+
+proc get_eventPhase*(self: ptr IDOMEvent, p: ptr USHORT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_eventPhase(self, p)
+
+proc get_target*(
+    self: ptr IDOMEvent, p: ptr ptr IEventTarget
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_target(self, p)
+
+proc get_timeStamp*(self: ptr IDOMEvent, p: ptr ULONGLONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_timeStamp(self, p)
+
+proc get_type*(self: ptr IDOMEvent, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc initEvent*(
+    self: ptr IDOMEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initEvent(self, eventType, canBubble, cancelable)
+
+proc preventDefault*(self: ptr IDOMEvent): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.preventDefault(self)
+
+proc stopPropagation*(self: ptr IDOMEvent): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.stopPropagation(self)
+
+proc stopImmediatePropagation*(self: ptr IDOMEvent): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.stopImmediatePropagation(self)
+
+proc get_isTrusted*(
+    self: ptr IDOMEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_isTrusted(self, p)
+
+proc put_cancelBubble*(
+    self: ptr IDOMEvent, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_cancelBubble(self, v)
+
+proc get_cancelBubble*(
+    self: ptr IDOMEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cancelBubble(self, p)
+
+proc get_srcElement*(
+    self: ptr IDOMEvent, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_srcElement(self, p)
+
+proc get_view*(
+    self: ptr IDOMUIEvent, p: ptr ptr IHTMLWindow2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_view(self, p)
+
+proc get_detail*(self: ptr IDOMUIEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_detail(self, p)
+
+proc initUIEvent*(
+    self: ptr IDOMUIEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    view: ptr IHTMLWindow2,
+    detail: LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initUIEvent(self, eventType, canBubble, cancelable, view, detail)
+
+proc get_screenX*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_screenX(self, p)
+
+proc get_screenY*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_screenY(self, p)
+
+proc get_clientX*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientX(self, p)
+
+proc get_clientY*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clientY(self, p)
+
+proc get_ctrlKey*(
+    self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ctrlKey(self, p)
+
+proc get_shiftKey*(
+    self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_shiftKey(self, p)
+
+proc get_altKey*(
+    self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_altKey(self, p)
+
+proc get_metaKey*(
+    self: ptr IDOMMouseEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_metaKey(self, p)
+
+proc get_button*(self: ptr IDOMMouseEvent, p: ptr USHORT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_button(self, p)
+
+proc get_relatedTarget*(
+    self: ptr IDOMMouseEvent, p: ptr ptr IEventTarget
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_relatedTarget(self, p)
+
+proc initMouseEvent*(
+    self: ptr IDOMMouseEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    viewArg: ptr IHTMLWindow2,
+    detailArg: LONG,
+    screenXArg: LONG,
+    screenYArg: LONG,
+    clientXArg: LONG,
+    clientYArg: LONG,
+    ctrlKeyArg: VARIANT_BOOL,
+    altKeyArg: VARIANT_BOOL,
+    shiftKeyArg: VARIANT_BOOL,
+    metaKeyArg: VARIANT_BOOL,
+    buttonArg: USHORT,
+    relatedTargetArg: ptr IEventTarget,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initMouseEvent(
+      self, eventType, canBubble, cancelable, viewArg, detailArg, screenXArg,
+      screenYArg, clientXArg, clientYArg, ctrlKeyArg, altKeyArg, shiftKeyArg,
+      metaKeyArg, buttonArg, relatedTargetArg,
+    )
+
+proc getModifierState*(
+    self: ptr IDOMMouseEvent, keyArg: BSTR, activated: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getModifierState(self, keyArg, activated)
+
+proc get_buttons*(self: ptr IDOMMouseEvent, p: ptr USHORT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_buttons(self, p)
+
+proc get_fromElement*(
+    self: ptr IDOMMouseEvent, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fromElement(self, p)
+
+proc get_toElement*(
+    self: ptr IDOMMouseEvent, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_toElement(self, p)
+
+proc get_x*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc get_y*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc get_offsetX*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offsetX(self, p)
+
+proc get_offsetY*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offsetY(self, p)
+
+proc get_pageX*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageX(self, p)
+
+proc get_pageY*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageY(self, p)
+
+proc get_layerX*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layerX(self, p)
+
+proc get_layerY*(self: ptr IDOMMouseEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_layerY(self, p)
+
+proc get_which*(self: ptr IDOMMouseEvent, p: ptr USHORT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_which(self, p)
+
+proc get_dataTransfer*(
+    self: ptr IDOMDragEvent, p: ptr ptr IHTMLDataTransfer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dataTransfer(self, p)
+
+proc initDragEvent*(
+    self: ptr IDOMDragEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    viewArg: ptr IHTMLWindow2,
+    detailArg: LONG,
+    screenXArg: LONG,
+    screenYArg: LONG,
+    clientXArg: LONG,
+    clientYArg: LONG,
+    ctrlKeyArg: VARIANT_BOOL,
+    altKeyArg: VARIANT_BOOL,
+    shiftKeyArg: VARIANT_BOOL,
+    metaKeyArg: VARIANT_BOOL,
+    buttonArg: USHORT,
+    relatedTargetArg: ptr IEventTarget,
+    dataTransferArg: ptr IHTMLDataTransfer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initDragEvent(
+      self, eventType, canBubble, cancelable, viewArg, detailArg, screenXArg,
+      screenYArg, clientXArg, clientYArg, ctrlKeyArg, altKeyArg, shiftKeyArg,
+      metaKeyArg, buttonArg, relatedTargetArg, dataTransferArg,
+    )
+
+proc get_wheelDelta*(
+    self: ptr IDOMMouseWheelEvent, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wheelDelta(self, p)
+
+proc initMouseWheelEvent*(
+    self: ptr IDOMMouseWheelEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    viewArg: ptr IHTMLWindow2,
+    detailArg: LONG,
+    screenXArg: LONG,
+    screenYArg: LONG,
+    clientXArg: LONG,
+    clientYArg: LONG,
+    buttonArg: USHORT,
+    relatedTargetArg: ptr IEventTarget,
+    modifiersListArg: BSTR,
+    wheelDeltaArg: LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initMouseWheelEvent(
+      self, eventType, canBubble, cancelable, viewArg, detailArg, screenXArg,
+      screenYArg, clientXArg, clientYArg, buttonArg, relatedTargetArg, modifiersListArg,
+      wheelDeltaArg,
+    )
+
+proc get_deltaX*(self: ptr IDOMWheelEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_deltaX(self, p)
+
+proc get_deltaY*(self: ptr IDOMWheelEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_deltaY(self, p)
+
+proc get_deltaZ*(self: ptr IDOMWheelEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_deltaZ(self, p)
+
+proc get_deltaMode*(
+    self: ptr IDOMWheelEvent, p: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_deltaMode(self, p)
+
+proc initWheelEvent*(
+    self: ptr IDOMWheelEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    viewArg: ptr IHTMLWindow2,
+    detailArg: LONG,
+    screenXArg: LONG,
+    screenYArg: LONG,
+    clientXArg: LONG,
+    clientYArg: LONG,
+    buttonArg: USHORT,
+    relatedTargetArg: ptr IEventTarget,
+    modifiersListArg: BSTR,
+    deltaX: LONG,
+    deltaY: LONG,
+    deltaZ: LONG,
+    deltaMode: ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initWheelEvent(
+      self, eventType, canBubble, cancelable, viewArg, detailArg, screenXArg,
+      screenYArg, clientXArg, clientYArg, buttonArg, relatedTargetArg, modifiersListArg,
+      deltaX, deltaY, deltaZ, deltaMode,
+    )
+
+proc get_data*(self: ptr IDOMTextEvent, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_data(self, p)
+
+proc get_inputMethod*(
+    self: ptr IDOMTextEvent, p: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_inputMethod(self, p)
+
+proc initTextEvent*(
+    self: ptr IDOMTextEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    viewArg: ptr IHTMLWindow2,
+    dataArg: BSTR,
+    inputMethod: ULONG,
+    locale: BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initTextEvent(
+      self, eventType, canBubble, cancelable, viewArg, dataArg, inputMethod, locale
+    )
+
+proc get_locale*(self: ptr IDOMTextEvent, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_locale(self, p)
+
+proc get_key*(self: ptr IDOMKeyboardEvent, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_key(self, p)
+
+proc get_location*(
+    self: ptr IDOMKeyboardEvent, p: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_location(self, p)
+
+proc get_ctrlKey*(
+    self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ctrlKey(self, p)
+
+proc get_shiftKey*(
+    self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_shiftKey(self, p)
+
+proc get_altKey*(
+    self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_altKey(self, p)
+
+proc get_metaKey*(
+    self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_metaKey(self, p)
+
+proc get_repeat*(
+    self: ptr IDOMKeyboardEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_repeat(self, p)
+
+proc getModifierState*(
+    self: ptr IDOMKeyboardEvent, keyArg: BSTR, state: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getModifierState(self, keyArg, state)
+
+proc initKeyboardEvent*(
+    self: ptr IDOMKeyboardEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    viewArg: ptr IHTMLWindow2,
+    keyArg: BSTR,
+    locationArg: ULONG,
+    modifiersListArg: BSTR,
+    repeat: VARIANT_BOOL,
+    locale: BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initKeyboardEvent(
+      self, eventType, canBubble, cancelable, viewArg, keyArg, locationArg,
+      modifiersListArg, repeat, locale,
+    )
+
+proc get_keyCode*(
+    self: ptr IDOMKeyboardEvent, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_keyCode(self, p)
+
+proc get_charCode*(
+    self: ptr IDOMKeyboardEvent, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_charCode(self, p)
+
+proc get_which*(self: ptr IDOMKeyboardEvent, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_which(self, p)
+
+proc get_ie9_char*(
+    self: ptr IDOMKeyboardEvent, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ie9_char(self, p)
+
+proc get_locale*(self: ptr IDOMKeyboardEvent, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_locale(self, p)
+
+proc get_data*(
+    self: ptr IDOMCompositionEvent, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_data(self, p)
+
+proc initCompositionEvent*(
+    self: ptr IDOMCompositionEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    viewArg: ptr IHTMLWindow2,
+    data: BSTR,
+    locale: BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initCompositionEvent(
+      self, eventType, canBubble, cancelable, viewArg, data, locale
+    )
+
+proc get_locale*(
+    self: ptr IDOMCompositionEvent, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_locale(self, p)
+
+proc get_relatedNode*(
+    self: ptr IDOMMutationEvent, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_relatedNode(self, p)
+
+proc get_prevValue*(
+    self: ptr IDOMMutationEvent, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_prevValue(self, p)
+
+proc get_newValue*(
+    self: ptr IDOMMutationEvent, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newValue(self, p)
+
+proc get_attrName*(
+    self: ptr IDOMMutationEvent, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_attrName(self, p)
+
+proc get_attrChange*(
+    self: ptr IDOMMutationEvent, p: ptr USHORT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_attrChange(self, p)
+
+proc initMutationEvent*(
+    self: ptr IDOMMutationEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    relatedNodeArg: ptr IDispatch,
+    prevValueArg: BSTR,
+    newValueArg: BSTR,
+    attrNameArg: BSTR,
+    attrChangeArg: USHORT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initMutationEvent(
+      self, eventType, canBubble, cancelable, relatedNodeArg, prevValueArg, newValueArg,
+      attrNameArg, attrChangeArg,
+    )
+
+proc put_returnValue*(
+    self: ptr IDOMBeforeUnloadEvent, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_returnValue(self, v)
+
+proc get_returnValue*(
+    self: ptr IDOMBeforeUnloadEvent, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_returnValue(self, p)
+
+proc get_relatedTarget*(
+    self: ptr IDOMFocusEvent, p: ptr ptr IEventTarget
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_relatedTarget(self, p)
+
+proc initFocusEvent*(
+    self: ptr IDOMFocusEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    view: ptr IHTMLWindow2,
+    detail: LONG,
+    relatedTargetArg: ptr IEventTarget,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initFocusEvent(
+      self, eventType, canBubble, cancelable, view, detail, relatedTargetArg
+    )
+
+proc get_detail*(
+    self: ptr IDOMCustomEvent, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_detail(self, p)
+
+proc initCustomEvent*(
+    self: ptr IDOMCustomEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    detail: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initCustomEvent(self, eventType, canBubble, cancelable, detail)
+
+proc addColorStop*(
+    self: ptr ICanvasGradient, offset: float32, color: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addColorStop(self, offset, color)
+
+proc get_width*(
+    self: ptr ICanvasTextMetrics, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc get_width*(self: ptr ICanvasImageData, p: ptr ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc get_height*(self: ptr ICanvasImageData, p: ptr ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc get_data*(self: ptr ICanvasImageData, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_data(self, p)
+
+proc get_length*(
+    self: ptr ICanvasPixelArray, p: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_canvas*(
+    self: ptr ICanvasRenderingContext2D, p: ptr ptr IHTMLCanvasElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_canvas(self, p)
+
+proc restore*(self: ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.restore(self)
+
+proc save*(self: ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.save(self)
+
+proc rotate*(
+    self: ptr ICanvasRenderingContext2D, angle: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.rotate(self, angle)
+
+proc scale*(
+    self: ptr ICanvasRenderingContext2D, x: float32, y: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.scale(self, x, y)
+
+proc setTransform*(
+    self: ptr ICanvasRenderingContext2D,
+    m11: float32,
+    m12: float32,
+    m21: float32,
+    m22: float32,
+    dx: float32,
+    dy: float32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setTransform(self, m11, m12, m21, m22, dx, dy)
+
+proc transform*(
+    self: ptr ICanvasRenderingContext2D,
+    m11: float32,
+    m12: float32,
+    m21: float32,
+    m22: float32,
+    dx: float32,
+    dy: float32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.transform(self, m11, m12, m21, m22, dx, dy)
+
+proc translate*(
+    self: ptr ICanvasRenderingContext2D, x: float32, y: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.translate(self, x, y)
+
+proc put_globalAlpha*(
+    self: ptr ICanvasRenderingContext2D, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_globalAlpha(self, v)
+
+proc get_globalAlpha*(
+    self: ptr ICanvasRenderingContext2D, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_globalAlpha(self, p)
+
+proc put_globalCompositeOperation*(
+    self: ptr ICanvasRenderingContext2D, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_globalCompositeOperation(self, v)
+
+proc get_globalCompositeOperation*(
+    self: ptr ICanvasRenderingContext2D, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_globalCompositeOperation(self, p)
+
+proc put_fillStyle*(
+    self: ptr ICanvasRenderingContext2D, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_fillStyle(self, v)
+
+proc get_fillStyle*(
+    self: ptr ICanvasRenderingContext2D, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fillStyle(self, p)
+
+proc put_strokeStyle*(
+    self: ptr ICanvasRenderingContext2D, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_strokeStyle(self, v)
+
+proc get_strokeStyle*(
+    self: ptr ICanvasRenderingContext2D, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_strokeStyle(self, p)
+
+proc createLinearGradient*(
+    self: ptr ICanvasRenderingContext2D,
+    x0: float32,
+    y0: float32,
+    x1: float32,
+    y1: float32,
+    ppCanvasGradient: ptr ptr ICanvasGradient,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createLinearGradient(self, x0, y0, x1, y1, ppCanvasGradient)
+
+proc createRadialGradient*(
+    self: ptr ICanvasRenderingContext2D,
+    x0: float32,
+    y0: float32,
+    r0: float32,
+    x1: float32,
+    y1: float32,
+    r1: float32,
+    ppCanvasGradient: ptr ptr ICanvasGradient,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createRadialGradient(self, x0, y0, r0, x1, y1, r1, ppCanvasGradient)
+
+proc createPattern*(
+    self: ptr ICanvasRenderingContext2D,
+    image: ptr IDispatch,
+    repetition: VARIANT,
+    ppCanvasPattern: ptr ptr ICanvasPattern,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createPattern(self, image, repetition, ppCanvasPattern)
+
+proc put_lineCap*(
+    self: ptr ICanvasRenderingContext2D, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lineCap(self, v)
+
+proc get_lineCap*(
+    self: ptr ICanvasRenderingContext2D, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lineCap(self, p)
+
+proc put_lineJoin*(
+    self: ptr ICanvasRenderingContext2D, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lineJoin(self, v)
+
+proc get_lineJoin*(
+    self: ptr ICanvasRenderingContext2D, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lineJoin(self, p)
+
+proc put_lineWidth*(
+    self: ptr ICanvasRenderingContext2D, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_lineWidth(self, v)
+
+proc get_lineWidth*(
+    self: ptr ICanvasRenderingContext2D, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lineWidth(self, p)
+
+proc put_miterLimit*(
+    self: ptr ICanvasRenderingContext2D, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_miterLimit(self, v)
+
+proc get_miterLimit*(
+    self: ptr ICanvasRenderingContext2D, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_miterLimit(self, p)
+
+proc put_shadowBlur*(
+    self: ptr ICanvasRenderingContext2D, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_shadowBlur(self, v)
+
+proc get_shadowBlur*(
+    self: ptr ICanvasRenderingContext2D, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_shadowBlur(self, p)
+
+proc put_shadowColor*(
+    self: ptr ICanvasRenderingContext2D, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_shadowColor(self, v)
+
+proc get_shadowColor*(
+    self: ptr ICanvasRenderingContext2D, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_shadowColor(self, p)
+
+proc put_shadowOffsetX*(
+    self: ptr ICanvasRenderingContext2D, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_shadowOffsetX(self, v)
+
+proc get_shadowOffsetX*(
+    self: ptr ICanvasRenderingContext2D, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_shadowOffsetX(self, p)
+
+proc put_shadowOffsetY*(
+    self: ptr ICanvasRenderingContext2D, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_shadowOffsetY(self, v)
+
+proc get_shadowOffsetY*(
+    self: ptr ICanvasRenderingContext2D, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_shadowOffsetY(self, p)
+
+proc clearRect*(
+    self: ptr ICanvasRenderingContext2D, x: float32, y: float32, w: float32, h: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clearRect(self, x, y, w, h)
+
+proc fillRect*(
+    self: ptr ICanvasRenderingContext2D, x: float32, y: float32, w: float32, h: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.fillRect(self, x, y, w, h)
+
+proc strokeRect*(
+    self: ptr ICanvasRenderingContext2D, x: float32, y: float32, w: float32, h: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.strokeRect(self, x, y, w, h)
+
+proc arc*(
+    self: ptr ICanvasRenderingContext2D,
+    x: float32,
+    y: float32,
+    radius: float32,
+    startAngle: float32,
+    endAngle: float32,
+    anticlockwise: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.arc(self, x, y, radius, startAngle, endAngle, anticlockwise)
+
+proc arcTo*(
+    self: ptr ICanvasRenderingContext2D,
+    x1: float32,
+    y1: float32,
+    x2: float32,
+    y2: float32,
+    radius: float32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.arcTo(self, x1, y1, x2, y2, radius)
+
+proc mBeginPath*(self: ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.beginPath(self)
+
+proc bezierCurveTo*(
+    self: ptr ICanvasRenderingContext2D,
+    cp1x: float32,
+    cp1y: float32,
+    cp2x: float32,
+    cp2y: float32,
+    x: float32,
+    y: float32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.bezierCurveTo(self, cp1x, cp1y, cp2x, cp2y, x, y)
+
+proc clip*(self: ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clip(self)
+
+proc closePath*(self: ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.closePath(self)
+
+proc fill*(self: ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.fill(self)
+
+proc lineTo*(
+    self: ptr ICanvasRenderingContext2D, x: float32, y: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.lineTo(self, x, y)
+
+proc moveTo*(
+    self: ptr ICanvasRenderingContext2D, x: float32, y: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.moveTo(self, x, y)
+
+proc quadraticCurveTo*(
+    self: ptr ICanvasRenderingContext2D,
+    cpx: float32,
+    cpy: float32,
+    x: float32,
+    y: float32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.quadraticCurveTo(self, cpx, cpy, x, y)
+
+proc rect*(
+    self: ptr ICanvasRenderingContext2D, x: float32, y: float32, w: float32, h: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.rect(self, x, y, w, h)
+
+proc stroke*(self: ptr ICanvasRenderingContext2D): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.stroke(self)
+
+proc isPointInPath*(
+    self: ptr ICanvasRenderingContext2D,
+    x: float32,
+    y: float32,
+    pResult: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.isPointInPath(self, x, y, pResult)
+
+proc put_font*(
+    self: ptr ICanvasRenderingContext2D, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_font(self, v)
+
+proc get_font*(
+    self: ptr ICanvasRenderingContext2D, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_font(self, p)
+
+proc put_textAlign*(
+    self: ptr ICanvasRenderingContext2D, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textAlign(self, v)
+
+proc get_textAlign*(
+    self: ptr ICanvasRenderingContext2D, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textAlign(self, p)
+
+proc put_textBaseline*(
+    self: ptr ICanvasRenderingContext2D, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_textBaseline(self, v)
+
+proc get_textBaseline*(
+    self: ptr ICanvasRenderingContext2D, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textBaseline(self, p)
+
+proc fillText*(
+    self: ptr ICanvasRenderingContext2D,
+    text: BSTR,
+    x: float32,
+    y: float32,
+    maxWidth: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.fillText(self, text, x, y, maxWidth)
+
+proc measureText*(
+    self: ptr ICanvasRenderingContext2D,
+    text: BSTR,
+    ppCanvasTextMetrics: ptr ptr ICanvasTextMetrics,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.measureText(self, text, ppCanvasTextMetrics)
+
+proc strokeText*(
+    self: ptr ICanvasRenderingContext2D,
+    text: BSTR,
+    x: float32,
+    y: float32,
+    maxWidth: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.strokeText(self, text, x, y, maxWidth)
+
+proc drawImage*(
+    self: ptr ICanvasRenderingContext2D,
+    pSrc: ptr IDispatch,
+    a1: VARIANT,
+    a2: VARIANT,
+    a3: VARIANT,
+    a4: VARIANT,
+    a5: VARIANT,
+    a6: VARIANT,
+    a7: VARIANT,
+    a8: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.drawImage(self, pSrc, a1, a2, a3, a4, a5, a6, a7, a8)
+
+proc createImageData*(
+    self: ptr ICanvasRenderingContext2D,
+    a1: VARIANT,
+    a2: VARIANT,
+    ppCanvasImageData: ptr ptr ICanvasImageData,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createImageData(self, a1, a2, ppCanvasImageData)
+
+proc getImageData*(
+    self: ptr ICanvasRenderingContext2D,
+    sx: float32,
+    sy: float32,
+    sw: float32,
+    sh: float32,
+    ppCanvasImageData: ptr ptr ICanvasImageData,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getImageData(self, sx, sy, sw, sh, ppCanvasImageData)
+
+proc putImageData*(
+    self: ptr ICanvasRenderingContext2D,
+    imagedata: ptr ICanvasImageData,
+    dx: float32,
+    dy: float32,
+    dirtyX: VARIANT,
+    dirtyY: VARIANT,
+    dirtyWidth: VARIANT,
+    dirtyHeight: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putImageData(
+      self, imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight
+    )
+
+proc put_width*(self: ptr IHTMLCanvasElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(self: ptr IHTMLCanvasElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_height*(self: ptr IHTMLCanvasElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(
+    self: ptr IHTMLCanvasElement, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc getContext*(
+    self: ptr IHTMLCanvasElement,
+    contextId: BSTR,
+    ppContext: ptr ptr ICanvasRenderingContext2D,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getContext(self, contextId, ppContext)
+
+proc toDataURL*(
+    self: ptr IHTMLCanvasElement, `type`: BSTR, jpegquality: VARIANT, pUrl: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toDataURL(self, `type`, jpegquality, pUrl)
+
+proc get_lengthComputable*(
+    self: ptr IDOMProgressEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lengthComputable(self, p)
+
+proc get_loaded*(
+    self: ptr IDOMProgressEvent, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_loaded(self, p)
+
+proc get_total*(
+    self: ptr IDOMProgressEvent, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_total(self, p)
+
+proc initProgressEvent*(
+    self: ptr IDOMProgressEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    lengthComputableArg: VARIANT_BOOL,
+    loadedArg: ULONGLONG,
+    totalArg: ULONGLONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initProgressEvent(
+      self, eventType, canBubble, cancelable, lengthComputableArg, loadedArg, totalArg
+    )
+
+proc get_data*(self: ptr IDOMMessageEvent, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_data(self, p)
+
+proc get_origin*(self: ptr IDOMMessageEvent, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_origin(self, p)
+
+proc get_source*(
+    self: ptr IDOMMessageEvent, p: ptr ptr IHTMLWindow2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_source(self, p)
+
+proc initMessageEvent*(
+    self: ptr IDOMMessageEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    data: BSTR,
+    origin: BSTR,
+    lastEventId: BSTR,
+    source: ptr IHTMLWindow2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initMessageEvent(
+      self, eventType, canBubble, cancelable, data, origin, lastEventId, source
+    )
+
+proc get_buttonID*(
+    self: ptr IDOMSiteModeEvent, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_buttonID(self, p)
+
+proc get_actionURL*(
+    self: ptr IDOMSiteModeEvent, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_actionURL(self, p)
+
+proc get_key*(self: ptr IDOMStorageEvent, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_key(self, p)
+
+proc get_oldValue*(
+    self: ptr IDOMStorageEvent, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oldValue(self, p)
+
+proc get_newValue*(
+    self: ptr IDOMStorageEvent, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newValue(self, p)
+
+proc get_url*(self: ptr IDOMStorageEvent, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_url(self, p)
+
+proc get_storageArea*(
+    self: ptr IDOMStorageEvent, p: ptr ptr IHTMLStorage
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_storageArea(self, p)
+
+proc initStorageEvent*(
+    self: ptr IDOMStorageEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    keyArg: BSTR,
+    oldValueArg: BSTR,
+    newValueArg: BSTR,
+    urlArg: BSTR,
+    storageAreaArg: ptr IHTMLStorage,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initStorageEvent(
+      self, eventType, canBubble, cancelable, keyArg, oldValueArg, newValueArg, urlArg,
+      storageAreaArg,
+    )
+
+proc get_readyState*(
+    self: ptr IHTMLXMLHttpRequest, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, p)
+
+proc get_responseBody*(
+    self: ptr IHTMLXMLHttpRequest, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_responseBody(self, p)
+
+proc get_responseText*(
+    self: ptr IHTMLXMLHttpRequest, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_responseText(self, p)
+
+proc get_responseXML*(
+    self: ptr IHTMLXMLHttpRequest, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_responseXML(self, p)
+
+proc get_status*(
+    self: ptr IHTMLXMLHttpRequest, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_status(self, p)
+
+proc get_statusText*(
+    self: ptr IHTMLXMLHttpRequest, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_statusText(self, p)
+
+proc put_onreadystatechange*(
+    self: ptr IHTMLXMLHttpRequest, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreadystatechange(self, v)
+
+proc get_onreadystatechange*(
+    self: ptr IHTMLXMLHttpRequest, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onreadystatechange(self, p)
+
+proc abort*(self: ptr IHTMLXMLHttpRequest): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.abort(self)
+
+proc open*(
+    self: ptr IHTMLXMLHttpRequest,
+    bstrMethod: BSTR,
+    bstrUrl: BSTR,
+    varAsync: VARIANT,
+    varUser: VARIANT,
+    varPassword: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.open(self, bstrMethod, bstrUrl, varAsync, varUser, varPassword)
+
+proc send*(
+    self: ptr IHTMLXMLHttpRequest, varBody: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.send(self, varBody)
+
+proc getAllResponseHeaders*(
+    self: ptr IHTMLXMLHttpRequest, a: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAllResponseHeaders(self, a)
+
+proc getResponseHeader*(
+    self: ptr IHTMLXMLHttpRequest, bstrHeader: BSTR, a: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getResponseHeader(self, bstrHeader, a)
+
+proc setRequestHeader*(
+    self: ptr IHTMLXMLHttpRequest, bstrHeader: BSTR, bstrValue: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setRequestHeader(self, bstrHeader, bstrValue)
+
+proc put_timeout*(self: ptr IHTMLXMLHttpRequest2, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_timeout(self, v)
+
+proc get_timeout*(
+    self: ptr IHTMLXMLHttpRequest2, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_timeout(self, p)
+
+proc put_ontimeout*(
+    self: ptr IHTMLXMLHttpRequest2, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ontimeout(self, v)
+
+proc get_ontimeout*(
+    self: ptr IHTMLXMLHttpRequest2, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ontimeout(self, p)
+
+proc create*(
+    self: ptr IHTMLXMLHttpRequestFactory, a: ptr ptr IHTMLXMLHttpRequest
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.create(self, a)
+
+proc put_unitType*(self: ptr ISVGAngle, v: int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_unitType(self, v)
+
+proc get_unitType*(self: ptr ISVGAngle, p: ptr int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_unitType(self, p)
+
+proc put_value*(self: ptr ISVGAngle, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(self: ptr ISVGAngle, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_valueInSpecifiedUnits*(
+    self: ptr ISVGAngle, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_valueInSpecifiedUnits(self, v)
+
+proc get_valueInSpecifiedUnits*(
+    self: ptr ISVGAngle, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_valueInSpecifiedUnits(self, p)
+
+proc put_valueAsString*(self: ptr ISVGAngle, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_valueAsString(self, v)
+
+proc get_valueAsString*(self: ptr ISVGAngle, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_valueAsString(self, p)
+
+proc newValueSpecifiedUnits*(
+    self: ptr ISVGAngle, unitType: int16, valueInSpecifiedUnits: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.newValueSpecifiedUnits(self, unitType, valueInSpecifiedUnits)
+
+proc convertToSpecifiedUnits*(
+    self: ptr ISVGAngle, unitType: int16
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.convertToSpecifiedUnits(self, unitType)
+
+proc get_className*(
+    self: ptr ISVGStylable, p: ptr ptr ISVGAnimatedString
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_className(self, p)
+
+proc get_nearestViewportElement*(
+    self: ptr ISVGLocatable, p: ptr ptr ISVGElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nearestViewportElement(self, p)
+
+proc get_farthestViewportElement*(
+    self: ptr ISVGLocatable, p: ptr ptr ISVGElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_farthestViewportElement(self, p)
+
+proc getBBox*(
+    self: ptr ISVGLocatable, ppResult: ptr ptr ISVGRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getBBox(self, ppResult)
+
+proc getCTM*(
+    self: ptr ISVGLocatable, ppResult: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getCTM(self, ppResult)
+
+proc getScreenCTM*(
+    self: ptr ISVGLocatable, ppResult: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getScreenCTM(self, ppResult)
+
+proc getTransformToElement*(
+    self: ptr ISVGLocatable, pElement: ptr ISVGElement, ppResult: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getTransformToElement(self, pElement, ppResult)
+
+proc get_transform*(
+    self: ptr ISVGTransformable, p: ptr ptr ISVGAnimatedTransformList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_transform(self, p)
+
+proc get_requiredFeatures*(
+    self: ptr ISVGTests, p: ptr ptr ISVGStringList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_requiredFeatures(self, p)
+
+proc get_requiredExtensions*(
+    self: ptr ISVGTests, p: ptr ptr ISVGStringList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_requiredExtensions(self, p)
+
+proc get_systemLanguage*(
+    self: ptr ISVGTests, p: ptr ptr ISVGStringList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_systemLanguage(self, p)
+
+proc hasExtension*(
+    self: ptr ISVGTests, extension: BSTR, pResult: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasExtension(self, extension, pResult)
+
+proc put_xmllang*(self: ptr ISVGLangSpace, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_xmllang(self, v)
+
+proc get_xmllang*(self: ptr ISVGLangSpace, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_xmllang(self, p)
+
+proc put_xmlspace*(self: ptr ISVGLangSpace, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_xmlspace(self, v)
+
+proc get_xmlspace*(self: ptr ISVGLangSpace, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_xmlspace(self, p)
+
+proc get_externalResourcesRequired*(
+    self: ptr ISVGExternalResourcesRequired, p: ptr ptr ISVGAnimatedBoolean
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_externalResourcesRequired(self, p)
+
+proc get_viewBox*(
+    self: ptr ISVGFitToViewBox, p: ptr ptr ISVGAnimatedRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_viewBox(self, p)
+
+proc putref_preserveAspectRatio*(
+    self: ptr ISVGFitToViewBox, v: ptr ISVGAnimatedPreserveAspectRatio
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_preserveAspectRatio(self, v)
+
+proc get_preserveAspectRatio*(
+    self: ptr ISVGFitToViewBox, p: ptr ptr ISVGAnimatedPreserveAspectRatio
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_preserveAspectRatio(self, p)
+
+proc get_zoomAndPan*(
+    self: ptr ISVGZoomAndPan, p: ptr int16
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_zoomAndPan(self, p)
+
+proc get_href*(
+    self: ptr ISVGURIReference, p: ptr ptr ISVGAnimatedString
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_href(self, p)
+
+proc putref_baseVal*(
+    self: ptr ISVGAnimatedAngle, v: ptr ISVGAngle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_baseVal(self, v)
+
+proc get_baseVal*(
+    self: ptr ISVGAnimatedAngle, p: ptr ptr ISVGAngle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseVal(self, p)
+
+proc putref_animVal*(
+    self: ptr ISVGAnimatedAngle, v: ptr ISVGAngle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_animVal(self, v)
+
+proc get_animVal*(
+    self: ptr ISVGAnimatedAngle, p: ptr ptr ISVGAngle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animVal(self, p)
+
+proc putref_baseVal*(
+    self: ptr ISVGAnimatedTransformList, v: ptr ISVGTransformList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_baseVal(self, v)
+
+proc get_baseVal*(
+    self: ptr ISVGAnimatedTransformList, p: ptr ptr ISVGTransformList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseVal(self, p)
+
+proc putref_animVal*(
+    self: ptr ISVGAnimatedTransformList, v: ptr ISVGTransformList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_animVal(self, v)
+
+proc get_animVal*(
+    self: ptr ISVGAnimatedTransformList, p: ptr ptr ISVGTransformList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animVal(self, p)
+
+proc put_baseVal*(
+    self: ptr ISVGAnimatedBoolean, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_baseVal(self, v)
+
+proc get_baseVal*(
+    self: ptr ISVGAnimatedBoolean, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseVal(self, p)
+
+proc put_animVal*(
+    self: ptr ISVGAnimatedBoolean, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_animVal(self, v)
+
+proc get_animVal*(
+    self: ptr ISVGAnimatedBoolean, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animVal(self, p)
+
+proc put_baseVal*(
+    self: ptr ISVGAnimatedEnumeration, v: USHORT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_baseVal(self, v)
+
+proc get_baseVal*(
+    self: ptr ISVGAnimatedEnumeration, p: ptr USHORT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseVal(self, p)
+
+proc put_animVal*(
+    self: ptr ISVGAnimatedEnumeration, v: USHORT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_animVal(self, v)
+
+proc get_animVal*(
+    self: ptr ISVGAnimatedEnumeration, p: ptr USHORT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animVal(self, p)
+
+proc put_baseVal*(self: ptr ISVGAnimatedInteger, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_baseVal(self, v)
+
+proc get_baseVal*(
+    self: ptr ISVGAnimatedInteger, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseVal(self, p)
+
+proc put_animVal*(self: ptr ISVGAnimatedInteger, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_animVal(self, v)
+
+proc get_animVal*(
+    self: ptr ISVGAnimatedInteger, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animVal(self, p)
+
+proc putref_baseVal*(
+    self: ptr ISVGAnimatedLength, v: ptr ISVGLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_baseVal(self, v)
+
+proc get_baseVal*(
+    self: ptr ISVGAnimatedLength, p: ptr ptr ISVGLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseVal(self, p)
+
+proc putref_animVal*(
+    self: ptr ISVGAnimatedLength, v: ptr ISVGLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_animVal(self, v)
+
+proc get_animVal*(
+    self: ptr ISVGAnimatedLength, p: ptr ptr ISVGLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animVal(self, p)
+
+proc putref_baseVal*(
+    self: ptr ISVGAnimatedLengthList, v: ptr ISVGLengthList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_baseVal(self, v)
+
+proc get_baseVal*(
+    self: ptr ISVGAnimatedLengthList, p: ptr ptr ISVGLengthList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseVal(self, p)
+
+proc putref_animVal*(
+    self: ptr ISVGAnimatedLengthList, v: ptr ISVGLengthList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_animVal(self, v)
+
+proc get_animVal*(
+    self: ptr ISVGAnimatedLengthList, p: ptr ptr ISVGLengthList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animVal(self, p)
+
+proc put_baseVal*(
+    self: ptr ISVGAnimatedNumber, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_baseVal(self, v)
+
+proc get_baseVal*(
+    self: ptr ISVGAnimatedNumber, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseVal(self, p)
+
+proc put_animVal*(
+    self: ptr ISVGAnimatedNumber, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_animVal(self, v)
+
+proc get_animVal*(
+    self: ptr ISVGAnimatedNumber, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animVal(self, p)
+
+proc putref_baseVal*(
+    self: ptr ISVGAnimatedNumberList, v: ptr ISVGNumberList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_baseVal(self, v)
+
+proc get_baseVal*(
+    self: ptr ISVGAnimatedNumberList, p: ptr ptr ISVGNumberList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseVal(self, p)
+
+proc putref_animVal*(
+    self: ptr ISVGAnimatedNumberList, v: ptr ISVGNumberList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_animVal(self, v)
+
+proc get_animVal*(
+    self: ptr ISVGAnimatedNumberList, p: ptr ptr ISVGNumberList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animVal(self, p)
+
+proc putref_baseVal*(
+    self: ptr ISVGAnimatedRect, v: ptr ISVGRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_baseVal(self, v)
+
+proc get_baseVal*(
+    self: ptr ISVGAnimatedRect, p: ptr ptr ISVGRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseVal(self, p)
+
+proc putref_animVal*(
+    self: ptr ISVGAnimatedRect, v: ptr ISVGRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_animVal(self, v)
+
+proc get_animVal*(
+    self: ptr ISVGAnimatedRect, p: ptr ptr ISVGRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animVal(self, p)
+
+proc put_baseVal*(self: ptr ISVGAnimatedString, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_baseVal(self, v)
+
+proc get_baseVal*(
+    self: ptr ISVGAnimatedString, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseVal(self, p)
+
+proc get_animVal*(
+    self: ptr ISVGAnimatedString, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animVal(self, p)
+
+proc putref_clipPathUnits*(
+    self: ptr ISVGClipPathElement, v: ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_clipPathUnits(self, v)
+
+proc get_clipPathUnits*(
+    self: ptr ISVGClipPathElement, p: ptr ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_clipPathUnits(self, p)
+
+proc get_rootElement*(
+    self: ptr ISVGDocument, p: ptr ptr ISVGSVGElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rootElement(self, p)
+
+proc getSVGDocument*(
+    self: ptr IGetSVGDocument, ppSVGDocument: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getSVGDocument(self, ppSVGDocument)
+
+proc put_xmlbase*(self: ptr ISVGElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_xmlbase(self, v)
+
+proc get_xmlbase*(self: ptr ISVGElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_xmlbase(self, p)
+
+proc putref_ownerSVGElement*(
+    self: ptr ISVGElement, v: ptr ISVGSVGElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_ownerSVGElement(self, v)
+
+proc get_ownerSVGElement*(
+    self: ptr ISVGElement, p: ptr ptr ISVGSVGElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ownerSVGElement(self, p)
+
+proc putref_viewportElement*(
+    self: ptr ISVGElement, v: ptr ISVGElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_viewportElement(self, v)
+
+proc get_viewportElement*(
+    self: ptr ISVGElement, p: ptr ptr ISVGElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_viewportElement(self, p)
+
+proc putref_focusable*(
+    self: ptr ISVGElement, v: ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_focusable(self, v)
+
+proc get_focusable*(
+    self: ptr ISVGElement, p: ptr ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_focusable(self, p)
+
+proc put_unitType*(self: ptr ISVGLength, v: int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_unitType(self, v)
+
+proc get_unitType*(self: ptr ISVGLength, p: ptr int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_unitType(self, p)
+
+proc put_value*(self: ptr ISVGLength, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(self: ptr ISVGLength, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_valueInSpecifiedUnits*(
+    self: ptr ISVGLength, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_valueInSpecifiedUnits(self, v)
+
+proc get_valueInSpecifiedUnits*(
+    self: ptr ISVGLength, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_valueInSpecifiedUnits(self, p)
+
+proc put_valueAsString*(self: ptr ISVGLength, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_valueAsString(self, v)
+
+proc get_valueAsString*(self: ptr ISVGLength, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_valueAsString(self, p)
+
+proc newValueSpecifiedUnits*(
+    self: ptr ISVGLength, unitType: int16, valueInSpecifiedUnits: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.newValueSpecifiedUnits(self, unitType, valueInSpecifiedUnits)
+
+proc convertToSpecifiedUnits*(
+    self: ptr ISVGLength, unitType: int16
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.convertToSpecifiedUnits(self, unitType)
+
+proc put_numberOfItems*(self: ptr ISVGLengthList, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_numberOfItems(self, v)
+
+proc get_numberOfItems*(
+    self: ptr ISVGLengthList, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_numberOfItems(self, p)
+
+proc clear*(self: ptr ISVGLengthList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clear(self)
+
+proc initialize*(
+    self: ptr ISVGLengthList, newItem: ptr ISVGLength, ppResult: ptr ptr ISVGLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initialize(self, newItem, ppResult)
+
+proc getItem*(
+    self: ptr ISVGLengthList, index: LONG, ppResult: ptr ptr ISVGLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getItem(self, index, ppResult)
+
+proc insertItemBefore*(
+    self: ptr ISVGLengthList,
+    newItem: ptr ISVGLength,
+    index: LONG,
+    ppResult: ptr ptr ISVGLength,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertItemBefore(self, newItem, index, ppResult)
+
+proc replaceItem*(
+    self: ptr ISVGLengthList,
+    newItem: ptr ISVGLength,
+    index: LONG,
+    ppResult: ptr ptr ISVGLength,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceItem(self, newItem, index, ppResult)
+
+proc removeItem*(
+    self: ptr ISVGLengthList, index: LONG, ppResult: ptr ptr ISVGLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeItem(self, index, ppResult)
+
+proc appendItem*(
+    self: ptr ISVGLengthList, newItem: ptr ISVGLength, ppResult: ptr ptr ISVGLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendItem(self, newItem, ppResult)
+
+proc put_a*(self: ptr ISVGMatrix, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_a(self, v)
+
+proc get_a*(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_a(self, p)
+
+proc put_b*(self: ptr ISVGMatrix, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_b(self, v)
+
+proc get_b*(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_b(self, p)
+
+proc put_c*(self: ptr ISVGMatrix, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_c(self, v)
+
+proc get_c*(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_c(self, p)
+
+proc put_d*(self: ptr ISVGMatrix, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_d(self, v)
+
+proc get_d*(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_d(self, p)
+
+proc put_e*(self: ptr ISVGMatrix, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_e(self, v)
+
+proc get_e*(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_e(self, p)
+
+proc put_f*(self: ptr ISVGMatrix, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_f(self, v)
+
+proc get_f*(self: ptr ISVGMatrix, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_f(self, p)
+
+proc multiply*(
+    self: ptr ISVGMatrix, secondMatrix: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.multiply(self, secondMatrix, ppResult)
+
+proc inverse*(
+    self: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.inverse(self, ppResult)
+
+proc translate*(
+    self: ptr ISVGMatrix, x: float32, y: float32, ppResult: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.translate(self, x, y, ppResult)
+
+proc scale*(
+    self: ptr ISVGMatrix, scaleFactor: float32, ppResult: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.scale(self, scaleFactor, ppResult)
+
+proc scaleNonUniform*(
+    self: ptr ISVGMatrix,
+    scaleFactorX: float32,
+    scaleFactorY: float32,
+    ppResult: ptr ptr ISVGMatrix,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.scaleNonUniform(self, scaleFactorX, scaleFactorY, ppResult)
+
+proc rotate*(
+    self: ptr ISVGMatrix, angle: float32, ppResult: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.rotate(self, angle, ppResult)
+
+proc rotateFromVector*(
+    self: ptr ISVGMatrix, x: float32, y: float32, ppResult: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.rotateFromVector(self, x, y, ppResult)
+
+proc flipX*(
+    self: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.flipX(self, ppResult)
+
+proc flipY*(
+    self: ptr ISVGMatrix, ppResult: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.flipY(self, ppResult)
+
+proc skewX*(
+    self: ptr ISVGMatrix, angle: float32, ppResult: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.skewX(self, angle, ppResult)
+
+proc skewY*(
+    self: ptr ISVGMatrix, angle: float32, ppResult: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.skewY(self, angle, ppResult)
+
+proc put_value*(self: ptr ISVGNumber, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(self: ptr ISVGNumber, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_numberOfItems*(self: ptr ISVGNumberList, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_numberOfItems(self, v)
+
+proc get_numberOfItems*(
+    self: ptr ISVGNumberList, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_numberOfItems(self, p)
+
+proc clear*(self: ptr ISVGNumberList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clear(self)
+
+proc initialize*(
+    self: ptr ISVGNumberList, newItem: ptr ISVGNumber, ppResult: ptr ptr ISVGNumber
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initialize(self, newItem, ppResult)
+
+proc getItem*(
+    self: ptr ISVGNumberList, index: LONG, ppResult: ptr ptr ISVGNumber
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getItem(self, index, ppResult)
+
+proc insertItemBefore*(
+    self: ptr ISVGNumberList,
+    newItem: ptr ISVGNumber,
+    index: LONG,
+    ppResult: ptr ptr ISVGNumber,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertItemBefore(self, newItem, index, ppResult)
+
+proc replaceItem*(
+    self: ptr ISVGNumberList,
+    newItem: ptr ISVGNumber,
+    index: LONG,
+    ppResult: ptr ptr ISVGNumber,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceItem(self, newItem, index, ppResult)
+
+proc removeItem*(
+    self: ptr ISVGNumberList, index: LONG, ppResult: ptr ptr ISVGNumber
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeItem(self, index, ppResult)
+
+proc appendItem*(
+    self: ptr ISVGNumberList, newItem: ptr ISVGNumber, ppResult: ptr ptr ISVGNumber
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendItem(self, newItem, ppResult)
+
+proc putref_patternUnits*(
+    self: ptr ISVGPatternElement, v: ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_patternUnits(self, v)
+
+proc get_patternUnits*(
+    self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_patternUnits(self, p)
+
+proc putref_patternContentUnits*(
+    self: ptr ISVGPatternElement, v: ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_patternContentUnits(self, v)
+
+proc get_patternContentUnits*(
+    self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_patternContentUnits(self, p)
+
+proc putref_patternTransform*(
+    self: ptr ISVGPatternElement, v: ptr ISVGAnimatedTransformList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_patternTransform(self, v)
+
+proc get_patternTransform*(
+    self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedTransformList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_patternTransform(self, p)
+
+proc putref_x*(
+    self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc putref_y*(
+    self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc putref_width*(
+    self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_width(self, v)
+
+proc get_width*(
+    self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc putref_height*(
+    self: ptr ISVGPatternElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_height(self, v)
+
+proc get_height*(
+    self: ptr ISVGPatternElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_pathSegType*(self: ptr ISVGPathSeg, v: int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pathSegType(self, v)
+
+proc get_pathSegType*(self: ptr ISVGPathSeg, p: ptr int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pathSegType(self, p)
+
+proc get_pathSegTypeAsLetter*(
+    self: ptr ISVGPathSeg, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pathSegTypeAsLetter(self, p)
+
+proc put_x*(self: ptr ISVGPathSegArcAbs, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(self: ptr ISVGPathSegArcAbs, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(self: ptr ISVGPathSegArcAbs, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(self: ptr ISVGPathSegArcAbs, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_r1*(self: ptr ISVGPathSegArcAbs, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_r1(self, v)
+
+proc get_r1*(self: ptr ISVGPathSegArcAbs, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_r1(self, p)
+
+proc put_r2*(self: ptr ISVGPathSegArcAbs, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_r2(self, v)
+
+proc get_r2*(self: ptr ISVGPathSegArcAbs, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_r2(self, p)
+
+proc put_angle*(self: ptr ISVGPathSegArcAbs, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_angle(self, v)
+
+proc get_angle*(
+    self: ptr ISVGPathSegArcAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_angle(self, p)
+
+proc put_largeArcFlag*(
+    self: ptr ISVGPathSegArcAbs, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_largeArcFlag(self, v)
+
+proc get_largeArcFlag*(
+    self: ptr ISVGPathSegArcAbs, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_largeArcFlag(self, p)
+
+proc put_sweepFlag*(
+    self: ptr ISVGPathSegArcAbs, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_sweepFlag(self, v)
+
+proc get_sweepFlag*(
+    self: ptr ISVGPathSegArcAbs, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_sweepFlag(self, p)
+
+proc put_x*(self: ptr ISVGPathSegArcRel, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(self: ptr ISVGPathSegArcRel, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(self: ptr ISVGPathSegArcRel, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(self: ptr ISVGPathSegArcRel, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_r1*(self: ptr ISVGPathSegArcRel, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_r1(self, v)
+
+proc get_r1*(self: ptr ISVGPathSegArcRel, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_r1(self, p)
+
+proc put_r2*(self: ptr ISVGPathSegArcRel, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_r2(self, v)
+
+proc get_r2*(self: ptr ISVGPathSegArcRel, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_r2(self, p)
+
+proc put_angle*(self: ptr ISVGPathSegArcRel, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_angle(self, v)
+
+proc get_angle*(
+    self: ptr ISVGPathSegArcRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_angle(self, p)
+
+proc put_largeArcFlag*(
+    self: ptr ISVGPathSegArcRel, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_largeArcFlag(self, v)
+
+proc get_largeArcFlag*(
+    self: ptr ISVGPathSegArcRel, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_largeArcFlag(self, p)
+
+proc put_sweepFlag*(
+    self: ptr ISVGPathSegArcRel, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_sweepFlag(self, v)
+
+proc get_sweepFlag*(
+    self: ptr ISVGPathSegArcRel, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_sweepFlag(self, p)
+
+proc put_x*(self: ptr ISVGPathSegMovetoAbs, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPathSegMovetoAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(self: ptr ISVGPathSegMovetoAbs, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPathSegMovetoAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_x*(self: ptr ISVGPathSegMovetoRel, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPathSegMovetoRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(self: ptr ISVGPathSegMovetoRel, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPathSegMovetoRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_x*(self: ptr ISVGPathSegLinetoAbs, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPathSegLinetoAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(self: ptr ISVGPathSegLinetoAbs, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPathSegLinetoAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_x*(self: ptr ISVGPathSegLinetoRel, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPathSegLinetoRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(self: ptr ISVGPathSegLinetoRel, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPathSegLinetoRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_x*(
+    self: ptr ISVGPathSegCurvetoCubicAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(
+    self: ptr ISVGPathSegCurvetoCubicAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_x1*(
+    self: ptr ISVGPathSegCurvetoCubicAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x1(self, v)
+
+proc get_x1*(
+    self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x1(self, p)
+
+proc put_y1*(
+    self: ptr ISVGPathSegCurvetoCubicAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y1(self, v)
+
+proc get_y1*(
+    self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y1(self, p)
+
+proc put_x2*(
+    self: ptr ISVGPathSegCurvetoCubicAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x2(self, v)
+
+proc get_x2*(
+    self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x2(self, p)
+
+proc put_y2*(
+    self: ptr ISVGPathSegCurvetoCubicAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y2(self, v)
+
+proc get_y2*(
+    self: ptr ISVGPathSegCurvetoCubicAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y2(self, p)
+
+proc put_x*(
+    self: ptr ISVGPathSegCurvetoCubicRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(
+    self: ptr ISVGPathSegCurvetoCubicRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_x1*(
+    self: ptr ISVGPathSegCurvetoCubicRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x1(self, v)
+
+proc get_x1*(
+    self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x1(self, p)
+
+proc put_y1*(
+    self: ptr ISVGPathSegCurvetoCubicRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y1(self, v)
+
+proc get_y1*(
+    self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y1(self, p)
+
+proc put_x2*(
+    self: ptr ISVGPathSegCurvetoCubicRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x2(self, v)
+
+proc get_x2*(
+    self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x2(self, p)
+
+proc put_y2*(
+    self: ptr ISVGPathSegCurvetoCubicRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y2(self, v)
+
+proc get_y2*(
+    self: ptr ISVGPathSegCurvetoCubicRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y2(self, p)
+
+proc put_x*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_x2*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x2(self, v)
+
+proc get_x2*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x2(self, p)
+
+proc put_y2*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y2(self, v)
+
+proc get_y2*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y2(self, p)
+
+proc put_x*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_x2*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x2(self, v)
+
+proc get_x2*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x2(self, p)
+
+proc put_y2*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y2(self, v)
+
+proc get_y2*(
+    self: ptr ISVGPathSegCurvetoCubicSmoothRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y2(self, p)
+
+proc put_x*(
+    self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(
+    self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_x1*(
+    self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x1(self, v)
+
+proc get_x1*(
+    self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x1(self, p)
+
+proc put_y1*(
+    self: ptr ISVGPathSegCurvetoQuadraticAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y1(self, v)
+
+proc get_y1*(
+    self: ptr ISVGPathSegCurvetoQuadraticAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y1(self, p)
+
+proc put_x*(
+    self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(
+    self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_x1*(
+    self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x1(self, v)
+
+proc get_x1*(
+    self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x1(self, p)
+
+proc put_y1*(
+    self: ptr ISVGPathSegCurvetoQuadraticRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y1(self, v)
+
+proc get_y1*(
+    self: ptr ISVGPathSegCurvetoQuadraticRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y1(self, p)
+
+proc put_x*(
+    self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(
+    self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPathSegCurvetoQuadraticSmoothAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_x*(
+    self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(
+    self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPathSegCurvetoQuadraticSmoothRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_x*(
+    self: ptr ISVGPathSegLinetoHorizontalAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPathSegLinetoHorizontalAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_x*(
+    self: ptr ISVGPathSegLinetoHorizontalRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGPathSegLinetoHorizontalRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(
+    self: ptr ISVGPathSegLinetoVerticalAbs, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPathSegLinetoVerticalAbs, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_y*(
+    self: ptr ISVGPathSegLinetoVerticalRel, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGPathSegLinetoVerticalRel, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_numberOfItems*(
+    self: ptr ISVGPathSegList, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_numberOfItems(self, v)
+
+proc get_numberOfItems*(
+    self: ptr ISVGPathSegList, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_numberOfItems(self, p)
+
+proc clear*(self: ptr ISVGPathSegList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clear(self)
+
+proc initialize*(
+    self: ptr ISVGPathSegList, newItem: ptr ISVGPathSeg, ppResult: ptr ptr ISVGPathSeg
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initialize(self, newItem, ppResult)
+
+proc getItem*(
+    self: ptr ISVGPathSegList, index: LONG, ppResult: ptr ptr ISVGPathSeg
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getItem(self, index, ppResult)
+
+proc insertItemBefore*(
+    self: ptr ISVGPathSegList,
+    newItem: ptr ISVGPathSeg,
+    index: LONG,
+    ppResult: ptr ptr ISVGPathSeg,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertItemBefore(self, newItem, index, ppResult)
+
+proc replaceItem*(
+    self: ptr ISVGPathSegList,
+    newItem: ptr ISVGPathSeg,
+    index: LONG,
+    ppResult: ptr ptr ISVGPathSeg,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceItem(self, newItem, index, ppResult)
+
+proc removeItem*(
+    self: ptr ISVGPathSegList, index: LONG, ppResult: ptr ptr ISVGPathSeg
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeItem(self, index, ppResult)
+
+proc appendItem*(
+    self: ptr ISVGPathSegList, newItem: ptr ISVGPathSeg, ppResult: ptr ptr ISVGPathSeg
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendItem(self, newItem, ppResult)
+
+proc put_x*(self: ptr ISVGPoint, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(self: ptr ISVGPoint, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(self: ptr ISVGPoint, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(self: ptr ISVGPoint, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc matrixTransform*(
+    self: ptr ISVGPoint, pMatrix: ptr ISVGMatrix, ppResult: ptr ptr ISVGPoint
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.matrixTransform(self, pMatrix, ppResult)
+
+proc put_numberOfItems*(self: ptr ISVGPointList, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_numberOfItems(self, v)
+
+proc get_numberOfItems*(
+    self: ptr ISVGPointList, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_numberOfItems(self, p)
+
+proc clear*(self: ptr ISVGPointList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clear(self)
+
+proc initialize*(
+    self: ptr ISVGPointList, pNewItem: ptr ISVGPoint, ppResult: ptr ptr ISVGPoint
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initialize(self, pNewItem, ppResult)
+
+proc getItem*(
+    self: ptr ISVGPointList, index: LONG, ppResult: ptr ptr ISVGPoint
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getItem(self, index, ppResult)
+
+proc insertItemBefore*(
+    self: ptr ISVGPointList,
+    pNewItem: ptr ISVGPoint,
+    index: LONG,
+    ppResult: ptr ptr ISVGPoint,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertItemBefore(self, pNewItem, index, ppResult)
+
+proc replaceItem*(
+    self: ptr ISVGPointList,
+    pNewItem: ptr ISVGPoint,
+    index: LONG,
+    ppResult: ptr ptr ISVGPoint,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceItem(self, pNewItem, index, ppResult)
+
+proc removeItem*(
+    self: ptr ISVGPointList, index: LONG, ppResult: ptr ptr ISVGPoint
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeItem(self, index, ppResult)
+
+proc appendItem*(
+    self: ptr ISVGPointList, pNewItem: ptr ISVGPoint, ppResult: ptr ptr ISVGPoint
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendItem(self, pNewItem, ppResult)
+
+proc put_x*(self: ptr ISVGRect, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_x(self, v)
+
+proc get_x*(self: ptr ISVGRect, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc put_y*(self: ptr ISVGRect, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_y(self, v)
+
+proc get_y*(self: ptr ISVGRect, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc put_width*(self: ptr ISVGRect, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(self: ptr ISVGRect, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_height*(self: ptr ISVGRect, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(self: ptr ISVGRect, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_numberOfItems*(self: ptr ISVGStringList, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_numberOfItems(self, v)
+
+proc get_numberOfItems*(
+    self: ptr ISVGStringList, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_numberOfItems(self, p)
+
+proc clear*(self: ptr ISVGStringList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clear(self)
+
+proc initialize*(
+    self: ptr ISVGStringList, newItem: BSTR, ppResult: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initialize(self, newItem, ppResult)
+
+proc getItem*(
+    self: ptr ISVGStringList, index: LONG, ppResult: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getItem(self, index, ppResult)
+
+proc insertItemBefore*(
+    self: ptr ISVGStringList, newItem: BSTR, index: LONG, ppResult: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertItemBefore(self, newItem, index, ppResult)
+
+proc replaceItem*(
+    self: ptr ISVGStringList, newItem: BSTR, index: LONG, ppResult: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceItem(self, newItem, index, ppResult)
+
+proc removeItem*(
+    self: ptr ISVGStringList, index: LONG, ppResult: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeItem(self, index, ppResult)
+
+proc appendItem*(
+    self: ptr ISVGStringList, newItem: BSTR, ppResult: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendItem(self, newItem, ppResult)
+
+proc put_type*(self: ptr ISVGTransform, v: int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr ISVGTransform, p: ptr int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc putref_matrix*(
+    self: ptr ISVGTransform, v: ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_matrix(self, v)
+
+proc get_matrix*(
+    self: ptr ISVGTransform, p: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_matrix(self, p)
+
+proc put_angle*(self: ptr ISVGTransform, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_angle(self, v)
+
+proc get_angle*(self: ptr ISVGTransform, p: ptr float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_angle(self, p)
+
+proc setMatrix*(
+    self: ptr ISVGTransform, matrix: ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setMatrix(self, matrix)
+
+proc setTranslate*(
+    self: ptr ISVGTransform, tx: float32, ty: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setTranslate(self, tx, ty)
+
+proc setScale*(
+    self: ptr ISVGTransform, sx: float32, sy: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setScale(self, sx, sy)
+
+proc setRotate*(
+    self: ptr ISVGTransform, angle: float32, cx: float32, cy: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setRotate(self, angle, cx, cy)
+
+proc setSkewX*(self: ptr ISVGTransform, angle: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setSkewX(self, angle)
+
+proc setSkewY*(self: ptr ISVGTransform, angle: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setSkewY(self, angle)
+
+proc putref_x*(
+    self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc putref_y*(
+    self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc putref_width*(
+    self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_width(self, v)
+
+proc get_width*(
+    self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc putref_height*(
+    self: ptr ISVGSVGElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_height(self, v)
+
+proc get_height*(
+    self: ptr ISVGSVGElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc put_contentScriptType*(
+    self: ptr ISVGSVGElement, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_contentScriptType(self, v)
+
+proc get_contentScriptType*(
+    self: ptr ISVGSVGElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_contentScriptType(self, p)
+
+proc put_contentStyleType*(
+    self: ptr ISVGSVGElement, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_contentStyleType(self, v)
+
+proc get_contentStyleType*(
+    self: ptr ISVGSVGElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_contentStyleType(self, p)
+
+proc putref_viewport*(
+    self: ptr ISVGSVGElement, v: ptr ISVGRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_viewport(self, v)
+
+proc get_viewport*(
+    self: ptr ISVGSVGElement, p: ptr ptr ISVGRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_viewport(self, p)
+
+proc put_pixelUnitToMillimeterX*(
+    self: ptr ISVGSVGElement, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pixelUnitToMillimeterX(self, v)
+
+proc get_pixelUnitToMillimeterX*(
+    self: ptr ISVGSVGElement, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pixelUnitToMillimeterX(self, p)
+
+proc put_pixelUnitToMillimeterY*(
+    self: ptr ISVGSVGElement, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pixelUnitToMillimeterY(self, v)
+
+proc get_pixelUnitToMillimeterY*(
+    self: ptr ISVGSVGElement, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pixelUnitToMillimeterY(self, p)
+
+proc put_screenPixelToMillimeterX*(
+    self: ptr ISVGSVGElement, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_screenPixelToMillimeterX(self, v)
+
+proc get_screenPixelToMillimeterX*(
+    self: ptr ISVGSVGElement, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_screenPixelToMillimeterX(self, p)
+
+proc put_screenPixelToMillimeterY*(
+    self: ptr ISVGSVGElement, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_screenPixelToMillimeterY(self, v)
+
+proc get_screenPixelToMillimeterY*(
+    self: ptr ISVGSVGElement, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_screenPixelToMillimeterY(self, p)
+
+proc put_useCurrentView*(
+    self: ptr ISVGSVGElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_useCurrentView(self, v)
+
+proc get_useCurrentView*(
+    self: ptr ISVGSVGElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_useCurrentView(self, p)
+
+proc putref_currentView*(
+    self: ptr ISVGSVGElement, v: ptr ISVGViewSpec
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_currentView(self, v)
+
+proc get_currentView*(
+    self: ptr ISVGSVGElement, p: ptr ptr ISVGViewSpec
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_currentView(self, p)
+
+proc put_currentScale*(
+    self: ptr ISVGSVGElement, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_currentScale(self, v)
+
+proc get_currentScale*(
+    self: ptr ISVGSVGElement, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_currentScale(self, p)
+
+proc putref_currentTranslate*(
+    self: ptr ISVGSVGElement, v: ptr ISVGPoint
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_currentTranslate(self, v)
+
+proc get_currentTranslate*(
+    self: ptr ISVGSVGElement, p: ptr ptr ISVGPoint
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_currentTranslate(self, p)
+
+proc suspendRedraw*(
+    self: ptr ISVGSVGElement, maxWaitMilliseconds: ULONG, pResult: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.suspendRedraw(self, maxWaitMilliseconds, pResult)
+
+proc unsuspendRedraw*(
+    self: ptr ISVGSVGElement, suspendHandeID: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.unsuspendRedraw(self, suspendHandeID)
+
+proc unsuspendRedrawAll*(self: ptr ISVGSVGElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.unsuspendRedrawAll(self)
+
+proc forceRedraw*(self: ptr ISVGSVGElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.forceRedraw(self)
+
+proc pauseAnimations*(self: ptr ISVGSVGElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.pauseAnimations(self)
+
+proc unpauseAnimations*(self: ptr ISVGSVGElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.unpauseAnimations(self)
+
+proc animationsPaused*(
+    self: ptr ISVGSVGElement, pResult: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.animationsPaused(self, pResult)
+
+proc getCurrentTime*(
+    self: ptr ISVGSVGElement, pResult: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getCurrentTime(self, pResult)
+
+proc setCurrentTime*(
+    self: ptr ISVGSVGElement, seconds: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setCurrentTime(self, seconds)
+
+proc getIntersectionList*(
+    self: ptr ISVGSVGElement,
+    rect: ptr ISVGRect,
+    referenceElement: ptr ISVGElement,
+    pResult: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getIntersectionList(self, rect, referenceElement, pResult)
+
+proc getEnclosureList*(
+    self: ptr ISVGSVGElement,
+    rect: ptr ISVGRect,
+    referenceElement: ptr ISVGElement,
+    pResult: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getEnclosureList(self, rect, referenceElement, pResult)
+
+proc checkIntersection*(
+    self: ptr ISVGSVGElement,
+    element: ptr ISVGElement,
+    rect: ptr ISVGRect,
+    pResult: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.checkIntersection(self, element, rect, pResult)
+
+proc checkEnclosure*(
+    self: ptr ISVGSVGElement,
+    element: ptr ISVGElement,
+    rect: ptr ISVGRect,
+    pResult: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.checkEnclosure(self, element, rect, pResult)
+
+proc deselectAll*(self: ptr ISVGSVGElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deselectAll(self)
+
+proc createSVGNumber*(
+    self: ptr ISVGSVGElement, pResult: ptr ptr ISVGNumber
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGNumber(self, pResult)
+
+proc createSVGLength*(
+    self: ptr ISVGSVGElement, pResult: ptr ptr ISVGLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGLength(self, pResult)
+
+proc createSVGAngle*(
+    self: ptr ISVGSVGElement, pResult: ptr ptr ISVGAngle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGAngle(self, pResult)
+
+proc createSVGPoint*(
+    self: ptr ISVGSVGElement, pResult: ptr ptr ISVGPoint
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPoint(self, pResult)
+
+proc createSVGMatrix*(
+    self: ptr ISVGSVGElement, pResult: ptr ptr ISVGMatrix
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGMatrix(self, pResult)
+
+proc createSVGRect*(
+    self: ptr ISVGSVGElement, pResult: ptr ptr ISVGRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGRect(self, pResult)
+
+proc createSVGTransform*(
+    self: ptr ISVGSVGElement, pResult: ptr ptr ISVGTransform
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGTransform(self, pResult)
+
+proc createSVGTransformFromMatrix*(
+    self: ptr ISVGSVGElement, matrix: ptr ISVGMatrix, pResult: ptr ptr ISVGTransform
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGTransformFromMatrix(self, matrix, pResult)
+
+proc getElementById*(
+    self: ptr ISVGSVGElement, elementId: BSTR, pResult: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getElementById(self, elementId, pResult)
+
+proc putref_x*(
+    self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc putref_y*(
+    self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc putref_width*(
+    self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_width(self, v)
+
+proc get_width*(
+    self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc putref_height*(
+    self: ptr ISVGUseElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_height(self, v)
+
+proc get_height*(
+    self: ptr ISVGUseElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc putref_instanceRoot*(
+    self: ptr ISVGUseElement, v: ptr ISVGElementInstance
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_instanceRoot(self, v)
+
+proc get_instanceRoot*(
+    self: ptr ISVGUseElement, p: ptr ptr ISVGElementInstance
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_instanceRoot(self, p)
+
+proc putref_animatedInstanceRoot*(
+    self: ptr ISVGUseElement, v: ptr ISVGElementInstance
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_animatedInstanceRoot(self, v)
+
+proc get_animatedInstanceRoot*(
+    self: ptr ISVGUseElement, p: ptr ptr ISVGElementInstance
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animatedInstanceRoot(self, p)
+
+proc item*(
+    self: ptr IHTMLStyleSheetRulesAppliedCollection,
+    index: LONG,
+    ppHTMLStyleSheetRule: ptr ptr IHTMLStyleSheetRule,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, ppHTMLStyleSheetRule)
+
+proc get_length*(
+    self: ptr IHTMLStyleSheetRulesAppliedCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc propertyAppliedBy*(
+    self: ptr IHTMLStyleSheetRulesAppliedCollection,
+    name: BSTR,
+    ppRule: ptr ptr IHTMLStyleSheetRule,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.propertyAppliedBy(self, name, ppRule)
+
+proc propertyAppliedTrace*(
+    self: ptr IHTMLStyleSheetRulesAppliedCollection,
+    name: BSTR,
+    index: LONG,
+    ppRule: ptr ptr IHTMLStyleSheetRule,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.propertyAppliedTrace(self, name, index, ppRule)
+
+proc propertyAppliedTraceLength*(
+    self: ptr IHTMLStyleSheetRulesAppliedCollection, name: BSTR, pLength: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.propertyAppliedTraceLength(self, name, pLength)
+
+proc get_element*(
+    self: ptr IRulesApplied, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_element(self, p)
+
+proc get_inlineStyles*(
+    self: ptr IRulesApplied, p: ptr ptr IHTMLStyle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_inlineStyles(self, p)
+
+proc get_appliedRules*(
+    self: ptr IRulesApplied, p: ptr ptr IHTMLStyleSheetRulesAppliedCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_appliedRules(self, p)
+
+proc propertyIsInline*(
+    self: ptr IRulesApplied, name: BSTR, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.propertyIsInline(self, name, p)
+
+proc propertyIsInheritable*(
+    self: ptr IRulesApplied, name: BSTR, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.propertyIsInheritable(self, name, p)
+
+proc hasInheritableProperty*(
+    self: ptr IRulesApplied, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasInheritableProperty(self, p)
+
+proc item*(
+    self: ptr IRulesAppliedCollection,
+    index: LONG,
+    ppRulesApplied: ptr ptr IRulesApplied,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, ppRulesApplied)
+
+proc get_length*(
+    self: ptr IRulesAppliedCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_element*(
+    self: ptr IRulesAppliedCollection, p: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_element(self, p)
+
+proc propertyInheritedFrom*(
+    self: ptr IRulesAppliedCollection, name: BSTR, ppRulesApplied: ptr ptr IRulesApplied
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.propertyInheritedFrom(self, name, ppRulesApplied)
+
+proc get_propertyCount*(
+    self: ptr IRulesAppliedCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_propertyCount(self, p)
+
+proc property*(
+    self: ptr IRulesAppliedCollection, index: LONG, pbstrProperty: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.property(self, index, pbstrProperty)
+
+proc propertyInheritedTrace*(
+    self: ptr IRulesAppliedCollection,
+    name: BSTR,
+    index: LONG,
+    ppRulesApplied: ptr ptr IRulesApplied,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.propertyInheritedTrace(self, name, index, ppRulesApplied)
+
+proc propertyInheritedTraceLength*(
+    self: ptr IRulesAppliedCollection, name: BSTR, pLength: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.propertyInheritedTraceLength(self, name, pLength)
+
+proc put_numberOfItems*(
+    self: ptr ISVGTransformList, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_numberOfItems(self, v)
+
+proc get_numberOfItems*(
+    self: ptr ISVGTransformList, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_numberOfItems(self, p)
+
+proc clear*(self: ptr ISVGTransformList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clear(self)
+
+proc initialize*(
+    self: ptr ISVGTransformList,
+    newItem: ptr ISVGTransform,
+    ppResult: ptr ptr ISVGTransform,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initialize(self, newItem, ppResult)
+
+proc getItem*(
+    self: ptr ISVGTransformList, index: LONG, ppResult: ptr ptr ISVGTransform
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getItem(self, index, ppResult)
+
+proc insertItemBefore*(
+    self: ptr ISVGTransformList,
+    newItem: ptr ISVGTransform,
+    index: LONG,
+    ppResult: ptr ptr ISVGTransform,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertItemBefore(self, newItem, index, ppResult)
+
+proc replaceItem*(
+    self: ptr ISVGTransformList,
+    newItem: ptr ISVGTransform,
+    index: LONG,
+    ppResult: ptr ptr ISVGTransform,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceItem(self, newItem, index, ppResult)
+
+proc removeItem*(
+    self: ptr ISVGTransformList, index: LONG, ppResult: ptr ptr ISVGTransform
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeItem(self, index, ppResult)
+
+proc appendItem*(
+    self: ptr ISVGTransformList,
+    newItem: ptr ISVGTransform,
+    ppResult: ptr ptr ISVGTransform,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendItem(self, newItem, ppResult)
+
+proc createSVGTransformFromMatrix*(
+    self: ptr ISVGTransformList,
+    newItem: ptr ISVGMatrix,
+    ppResult: ptr ptr ISVGTransform,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGTransformFromMatrix(self, newItem, ppResult)
+
+proc consolidate*(
+    self: ptr ISVGTransformList, ppResult: ptr ptr ISVGTransform
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.consolidate(self, ppResult)
+
+proc putref_points*(
+    self: ptr ISVGAnimatedPoints, v: ptr ISVGPointList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_points(self, v)
+
+proc get_points*(
+    self: ptr ISVGAnimatedPoints, p: ptr ptr ISVGPointList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_points(self, p)
+
+proc putref_animatedPoints*(
+    self: ptr ISVGAnimatedPoints, v: ptr ISVGPointList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_animatedPoints(self, v)
+
+proc get_animatedPoints*(
+    self: ptr ISVGAnimatedPoints, p: ptr ptr ISVGPointList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animatedPoints(self, p)
+
+proc putref_cx*(
+    self: ptr ISVGCircleElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_cx(self, v)
+
+proc get_cx*(
+    self: ptr ISVGCircleElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cx(self, p)
+
+proc putref_cy*(
+    self: ptr ISVGCircleElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_cy(self, v)
+
+proc get_cy*(
+    self: ptr ISVGCircleElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cy(self, p)
+
+proc putref_r*(
+    self: ptr ISVGCircleElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_r(self, v)
+
+proc get_r*(
+    self: ptr ISVGCircleElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_r(self, p)
+
+proc putref_cx*(
+    self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_cx(self, v)
+
+proc get_cx*(
+    self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cx(self, p)
+
+proc putref_cy*(
+    self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_cy(self, v)
+
+proc get_cy*(
+    self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cy(self, p)
+
+proc putref_rx*(
+    self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_rx(self, v)
+
+proc get_rx*(
+    self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rx(self, p)
+
+proc putref_ry*(
+    self: ptr ISVGEllipseElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_ry(self, v)
+
+proc get_ry*(
+    self: ptr ISVGEllipseElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ry(self, p)
+
+proc putref_x1*(
+    self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_x1(self, v)
+
+proc get_x1*(
+    self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x1(self, p)
+
+proc putref_y1*(
+    self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_y1(self, v)
+
+proc get_y1*(
+    self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y1(self, p)
+
+proc putref_x2*(
+    self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_x2(self, v)
+
+proc get_x2*(
+    self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x2(self, p)
+
+proc putref_y2*(
+    self: ptr ISVGLineElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_y2(self, v)
+
+proc get_y2*(
+    self: ptr ISVGLineElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y2(self, p)
+
+proc putref_x*(
+    self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc putref_y*(
+    self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc putref_width*(
+    self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_width(self, v)
+
+proc get_width*(
+    self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc putref_height*(
+    self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_height(self, v)
+
+proc get_height*(
+    self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc putref_rx*(
+    self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_rx(self, v)
+
+proc get_rx*(
+    self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rx(self, p)
+
+proc putref_ry*(
+    self: ptr ISVGRectElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_ry(self, v)
+
+proc get_ry*(
+    self: ptr ISVGRectElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ry(self, p)
+
+proc putref_pathSegList*(
+    self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_pathSegList(self, v)
+
+proc get_pathSegList*(
+    self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pathSegList(self, p)
+
+proc putref_normalizedPathSegList*(
+    self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_normalizedPathSegList(self, v)
+
+proc get_normalizedPathSegList*(
+    self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_normalizedPathSegList(self, p)
+
+proc putref_animatedPathSegList*(
+    self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_animatedPathSegList(self, v)
+
+proc get_animatedPathSegList*(
+    self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animatedPathSegList(self, p)
+
+proc putref_animatedNormalizedPathSegList*(
+    self: ptr ISVGAnimatedPathData, v: ptr ISVGPathSegList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_animatedNormalizedPathSegList(self, v)
+
+proc get_animatedNormalizedPathSegList*(
+    self: ptr ISVGAnimatedPathData, p: ptr ptr ISVGPathSegList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animatedNormalizedPathSegList(self, p)
+
+proc putref_pathLength*(
+    self: ptr ISVGPathElement, v: ptr ISVGAnimatedNumber
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_pathLength(self, v)
+
+proc get_pathLength*(
+    self: ptr ISVGPathElement, p: ptr ptr ISVGAnimatedNumber
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pathLength(self, p)
+
+proc getTotalLength*(
+    self: ptr ISVGPathElement, pfltResult: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getTotalLength(self, pfltResult)
+
+proc getPointAtLength*(
+    self: ptr ISVGPathElement, fltdistance: float32, ppPointResult: ptr ptr ISVGPoint
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getPointAtLength(self, fltdistance, ppPointResult)
+
+proc getPathSegAtLength*(
+    self: ptr ISVGPathElement, fltdistance: float32, plResult: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getPathSegAtLength(self, fltdistance, plResult)
+
+proc createSVGPathSegClosePath*(
+    self: ptr ISVGPathElement, ppResult: ptr ptr ISVGPathSegClosePath
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegClosePath(self, ppResult)
+
+proc createSVGPathSegMovetoAbs*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    y: float32,
+    ppResult: ptr ptr ISVGPathSegMovetoAbs,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegMovetoAbs(self, x, y, ppResult)
+
+proc createSVGPathSegMovetoRel*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    y: float32,
+    ppResult: ptr ptr ISVGPathSegMovetoRel,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegMovetoRel(self, x, y, ppResult)
+
+proc createSVGPathSegLinetoAbs*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    y: float32,
+    ppResult: ptr ptr ISVGPathSegLinetoAbs,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegLinetoAbs(self, x, y, ppResult)
+
+proc createSVGPathSegLinetoRel*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    y: float32,
+    ppResult: ptr ptr ISVGPathSegLinetoRel,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegLinetoRel(self, x, y, ppResult)
+
+proc createSVGPathSegCurvetoCubicAbs*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    y: float32,
+    x1: float32,
+    y1: float32,
+    x2: float32,
+    y2: float32,
+    ppResult: ptr ptr ISVGPathSegCurvetoCubicAbs,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegCurvetoCubicAbs(self, x, y, x1, y1, x2, y2, ppResult)
+
+proc createSVGPathSegCurvetoCubicRel*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    y: float32,
+    x1: float32,
+    y1: float32,
+    x2: float32,
+    y2: float32,
+    ppResult: ptr ptr ISVGPathSegCurvetoCubicRel,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegCurvetoCubicRel(self, x, y, x1, y1, x2, y2, ppResult)
+
+proc createSVGPathSegCurvetoQuadraticAbs*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    y: float32,
+    x1: float32,
+    y1: float32,
+    ppResult: ptr ptr ISVGPathSegCurvetoQuadraticAbs,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegCurvetoQuadraticAbs(self, x, y, x1, y1, ppResult)
+
+proc createSVGPathSegCurvetoQuadraticRel*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    y: float32,
+    x1: float32,
+    y1: float32,
+    ppResult: ptr ptr ISVGPathSegCurvetoQuadraticRel,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegCurvetoQuadraticRel(self, x, y, x1, y1, ppResult)
+
+proc createSVGPathSegArcAbs*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    y: float32,
+    r1: float32,
+    r2: float32,
+    angle: float32,
+    largeArcFlag: VARIANT_BOOL,
+    sweepFlag: VARIANT_BOOL,
+    ppResult: ptr ptr ISVGPathSegArcAbs,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegArcAbs(
+      self, x, y, r1, r2, angle, largeArcFlag, sweepFlag, ppResult
+    )
+
+proc createSVGPathSegArcRel*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    y: float32,
+    r1: float32,
+    r2: float32,
+    angle: float32,
+    largeArcFlag: VARIANT_BOOL,
+    sweepFlag: VARIANT_BOOL,
+    ppResult: ptr ptr ISVGPathSegArcRel,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegArcRel(
+      self, x, y, r1, r2, angle, largeArcFlag, sweepFlag, ppResult
+    )
+
+proc createSVGPathSegLinetoHorizontalAbs*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    ppResult: ptr ptr ISVGPathSegLinetoHorizontalAbs,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegLinetoHorizontalAbs(self, x, ppResult)
+
+proc createSVGPathSegLinetoHorizontalRel*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    ppResult: ptr ptr ISVGPathSegLinetoHorizontalRel,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegLinetoHorizontalRel(self, x, ppResult)
+
+proc createSVGPathSegLinetoVerticalAbs*(
+    self: ptr ISVGPathElement,
+    y: float32,
+    ppResult: ptr ptr ISVGPathSegLinetoVerticalAbs,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegLinetoVerticalAbs(self, y, ppResult)
+
+proc createSVGPathSegLinetoVerticalRel*(
+    self: ptr ISVGPathElement,
+    y: float32,
+    ppResult: ptr ptr ISVGPathSegLinetoVerticalRel,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegLinetoVerticalRel(self, y, ppResult)
+
+proc createSVGPathSegCurvetoCubicSmoothAbs*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    y: float32,
+    x2: float32,
+    y2: float32,
+    ppResult: ptr ptr ISVGPathSegCurvetoCubicSmoothAbs,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegCurvetoCubicSmoothAbs(self, x, y, x2, y2, ppResult)
+
+proc createSVGPathSegCurvetoCubicSmoothRel*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    y: float32,
+    x2: float32,
+    y2: float32,
+    ppResult: ptr ptr ISVGPathSegCurvetoCubicSmoothRel,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegCurvetoCubicSmoothRel(self, x, y, x2, y2, ppResult)
+
+proc createSVGPathSegCurvetoQuadraticSmoothAbs*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    y: float32,
+    ppResult: ptr ptr ISVGPathSegCurvetoQuadraticSmoothAbs,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegCurvetoQuadraticSmoothAbs(self, x, y, ppResult)
+
+proc createSVGPathSegCurvetoQuadraticSmoothRel*(
+    self: ptr ISVGPathElement,
+    x: float32,
+    y: float32,
+    ppResult: ptr ptr ISVGPathSegCurvetoQuadraticSmoothRel,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createSVGPathSegCurvetoQuadraticSmoothRel(self, x, y, ppResult)
+
+proc put_align*(
+    self: ptr ISVGPreserveAspectRatio, v: int16
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_align(self, v)
+
+proc get_align*(
+    self: ptr ISVGPreserveAspectRatio, p: ptr int16
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_align(self, p)
+
+proc put_meetOrSlice*(
+    self: ptr ISVGPreserveAspectRatio, v: int16
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_meetOrSlice(self, v)
+
+proc get_meetOrSlice*(
+    self: ptr ISVGPreserveAspectRatio, p: ptr int16
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_meetOrSlice(self, p)
+
+proc putref_baseVal*(
+    self: ptr ISVGAnimatedPreserveAspectRatio, v: ptr ISVGPreserveAspectRatio
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_baseVal(self, v)
+
+proc get_baseVal*(
+    self: ptr ISVGAnimatedPreserveAspectRatio, p: ptr ptr ISVGPreserveAspectRatio
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseVal(self, p)
+
+proc putref_animVal*(
+    self: ptr ISVGAnimatedPreserveAspectRatio, v: ptr ISVGPreserveAspectRatio
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_animVal(self, v)
+
+proc get_animVal*(
+    self: ptr ISVGAnimatedPreserveAspectRatio, p: ptr ptr ISVGPreserveAspectRatio
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animVal(self, p)
+
+proc putref_x*(
+    self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc putref_y*(
+    self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc putref_width*(
+    self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_width(self, v)
+
+proc get_width*(
+    self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc putref_height*(
+    self: ptr ISVGImageElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_height(self, v)
+
+proc get_height*(
+    self: ptr ISVGImageElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc putref_offset*(
+    self: ptr ISVGStopElement, v: ptr ISVGAnimatedNumber
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_offset(self, v)
+
+proc get_offset*(
+    self: ptr ISVGStopElement, p: ptr ptr ISVGAnimatedNumber
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_offset(self, p)
+
+proc putref_gradientUnits*(
+    self: ptr ISVGGradientElement, v: ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_gradientUnits(self, v)
+
+proc get_gradientUnits*(
+    self: ptr ISVGGradientElement, p: ptr ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_gradientUnits(self, p)
+
+proc putref_gradientTransform*(
+    self: ptr ISVGGradientElement, v: ptr ISVGAnimatedTransformList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_gradientTransform(self, v)
+
+proc get_gradientTransform*(
+    self: ptr ISVGGradientElement, p: ptr ptr ISVGAnimatedTransformList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_gradientTransform(self, p)
+
+proc putref_spreadMethod*(
+    self: ptr ISVGGradientElement, v: ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_spreadMethod(self, v)
+
+proc get_spreadMethod*(
+    self: ptr ISVGGradientElement, p: ptr ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_spreadMethod(self, p)
+
+proc putref_x1*(
+    self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_x1(self, v)
+
+proc get_x1*(
+    self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x1(self, p)
+
+proc putref_y1*(
+    self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_y1(self, v)
+
+proc get_y1*(
+    self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y1(self, p)
+
+proc putref_x2*(
+    self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_x2(self, v)
+
+proc get_x2*(
+    self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x2(self, p)
+
+proc putref_y2*(
+    self: ptr ISVGLinearGradientElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_y2(self, v)
+
+proc get_y2*(
+    self: ptr ISVGLinearGradientElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y2(self, p)
+
+proc putref_cx*(
+    self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_cx(self, v)
+
+proc get_cx*(
+    self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cx(self, p)
+
+proc putref_cy*(
+    self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_cy(self, v)
+
+proc get_cy*(
+    self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cy(self, p)
+
+proc putref_r*(
+    self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_r(self, v)
+
+proc get_r*(
+    self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_r(self, p)
+
+proc putref_fx*(
+    self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_fx(self, v)
+
+proc get_fx*(
+    self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fx(self, p)
+
+proc putref_fy*(
+    self: ptr ISVGRadialGradientElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_fy(self, v)
+
+proc get_fy*(
+    self: ptr ISVGRadialGradientElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fy(self, p)
+
+proc putref_maskUnits*(
+    self: ptr ISVGMaskElement, v: ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_maskUnits(self, v)
+
+proc get_maskUnits*(
+    self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maskUnits(self, p)
+
+proc putref_maskContentUnits*(
+    self: ptr ISVGMaskElement, v: ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_maskContentUnits(self, v)
+
+proc get_maskContentUnits*(
+    self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maskContentUnits(self, p)
+
+proc putref_x*(
+    self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc putref_y*(
+    self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc putref_width*(
+    self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_width(self, v)
+
+proc get_width*(
+    self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc putref_height*(
+    self: ptr ISVGMaskElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_height(self, v)
+
+proc get_height*(
+    self: ptr ISVGMaskElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc putref_refX*(
+    self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_refX(self, v)
+
+proc get_refX*(
+    self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_refX(self, p)
+
+proc putref_refY*(
+    self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_refY(self, v)
+
+proc get_refY*(
+    self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_refY(self, p)
+
+proc putref_markerUnits*(
+    self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_markerUnits(self, v)
+
+proc get_markerUnits*(
+    self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_markerUnits(self, p)
+
+proc putref_markerWidth*(
+    self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_markerWidth(self, v)
+
+proc get_markerWidth*(
+    self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_markerWidth(self, p)
+
+proc putref_markerHeight*(
+    self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_markerHeight(self, v)
+
+proc get_markerHeight*(
+    self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_markerHeight(self, p)
+
+proc putref_orientType*(
+    self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_orientType(self, v)
+
+proc get_orientType*(
+    self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_orientType(self, p)
+
+proc putref_orientAngle*(
+    self: ptr ISVGMarkerElement, v: ptr ISVGAnimatedAngle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_orientAngle(self, v)
+
+proc get_orientAngle*(
+    self: ptr ISVGMarkerElement, p: ptr ptr ISVGAnimatedAngle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_orientAngle(self, p)
+
+proc setOrientToAuto*(self: ptr ISVGMarkerElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setOrientToAuto(self)
+
+proc setOrientToAngle*(
+    self: ptr ISVGMarkerElement, pSVGAngle: ptr ISVGAngle
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setOrientToAngle(self, pSVGAngle)
+
+proc get_zoomRectScreen*(
+    self: ptr ISVGZoomEvent, p: ptr ptr ISVGRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_zoomRectScreen(self, p)
+
+proc get_previousScale*(
+    self: ptr ISVGZoomEvent, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_previousScale(self, p)
+
+proc get_previousTranslate*(
+    self: ptr ISVGZoomEvent, p: ptr ptr ISVGPoint
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_previousTranslate(self, p)
+
+proc get_newScale*(
+    self: ptr ISVGZoomEvent, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newScale(self, p)
+
+proc get_newTranslate*(
+    self: ptr ISVGZoomEvent, p: ptr ptr ISVGPoint
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newTranslate(self, p)
+
+proc putref_target*(
+    self: ptr ISVGAElement, v: ptr ISVGAnimatedString
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_target(self, v)
+
+proc get_target*(
+    self: ptr ISVGAElement, p: ptr ptr ISVGAnimatedString
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_target(self, p)
+
+proc putref_viewTarget*(
+    self: ptr ISVGViewElement, v: ptr ISVGStringList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_viewTarget(self, v)
+
+proc get_viewTarget*(
+    self: ptr ISVGViewElement, p: ptr ptr ISVGStringList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_viewTarget(self, p)
+
+proc get_code*(self: ptr IHTMLMediaError, p: ptr int16): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_code(self, p)
+
+proc get_length*(self: ptr IHTMLTimeRanges, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc start*(
+    self: ptr IHTMLTimeRanges, index: LONG, startTime: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.start(self, index, startTime)
+
+proc `end`*(
+    self: ptr IHTMLTimeRanges, index: LONG, endTime: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.`end`(self, index, endTime)
+
+proc startDouble*(
+    self: ptr IHTMLTimeRanges2, index: LONG, startTime: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.startDouble(self, index, startTime)
+
+proc endDouble*(
+    self: ptr IHTMLTimeRanges2, index: LONG, endTime: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.endDouble(self, index, endTime)
+
+proc get_error*(
+    self: ptr IHTMLMediaElement, p: ptr ptr IHTMLMediaError
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_error(self, p)
+
+proc put_src*(self: ptr IHTMLMediaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_src(self, v)
+
+proc get_src*(self: ptr IHTMLMediaElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_src(self, p)
+
+proc get_currentSrc*(
+    self: ptr IHTMLMediaElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_currentSrc(self, p)
+
+proc get_networkState*(
+    self: ptr IHTMLMediaElement, p: ptr USHORT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_networkState(self, p)
+
+proc put_preload*(self: ptr IHTMLMediaElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_preload(self, v)
+
+proc get_preload*(
+    self: ptr IHTMLMediaElement, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_preload(self, p)
+
+proc get_buffered*(
+    self: ptr IHTMLMediaElement, p: ptr ptr IHTMLTimeRanges
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_buffered(self, p)
+
+proc load*(self: ptr IHTMLMediaElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.load(self)
+
+proc canPlayType*(
+    self: ptr IHTMLMediaElement, `type`: BSTR, canPlay: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.canPlayType(self, `type`, canPlay)
+
+proc get_seeking*(
+    self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_seeking(self, p)
+
+proc put_currentTime*(
+    self: ptr IHTMLMediaElement, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_currentTime(self, v)
+
+proc get_currentTime*(
+    self: ptr IHTMLMediaElement, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_currentTime(self, p)
+
+proc get_initialTime*(
+    self: ptr IHTMLMediaElement, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_initialTime(self, p)
+
+proc get_duration*(
+    self: ptr IHTMLMediaElement, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_duration(self, p)
+
+proc get_paused*(
+    self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_paused(self, p)
+
+proc put_defaultPlaybackRate*(
+    self: ptr IHTMLMediaElement, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_defaultPlaybackRate(self, v)
+
+proc get_defaultPlaybackRate*(
+    self: ptr IHTMLMediaElement, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defaultPlaybackRate(self, p)
+
+proc put_playbackRate*(
+    self: ptr IHTMLMediaElement, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_playbackRate(self, v)
+
+proc get_playbackRate*(
+    self: ptr IHTMLMediaElement, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_playbackRate(self, p)
+
+proc get_played*(
+    self: ptr IHTMLMediaElement, p: ptr ptr IHTMLTimeRanges
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_played(self, p)
+
+proc get_seekable*(
+    self: ptr IHTMLMediaElement, p: ptr ptr IHTMLTimeRanges
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_seekable(self, p)
+
+proc get_ended*(
+    self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ended(self, p)
+
+proc put_autoplay*(
+    self: ptr IHTMLMediaElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_autoplay(self, v)
+
+proc get_autoplay*(
+    self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_autoplay(self, p)
+
+proc put_loop*(
+    self: ptr IHTMLMediaElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_loop(self, v)
+
+proc get_loop*(
+    self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_loop(self, p)
+
+proc play*(self: ptr IHTMLMediaElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.play(self)
+
+proc pause*(self: ptr IHTMLMediaElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.pause(self)
+
+proc put_controls*(
+    self: ptr IHTMLMediaElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_controls(self, v)
+
+proc get_controls*(
+    self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_controls(self, p)
+
+proc put_volume*(self: ptr IHTMLMediaElement, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_volume(self, v)
+
+proc get_volume*(
+    self: ptr IHTMLMediaElement, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_volume(self, p)
+
+proc put_muted*(
+    self: ptr IHTMLMediaElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_muted(self, v)
+
+proc get_muted*(
+    self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_muted(self, p)
+
+proc put_autobuffer*(
+    self: ptr IHTMLMediaElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_autobuffer(self, v)
+
+proc get_autobuffer*(
+    self: ptr IHTMLMediaElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_autobuffer(self, p)
+
+proc put_currentTimeDouble*(
+    self: ptr IHTMLMediaElement2, v: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_currentTimeDouble(self, v)
+
+proc get_currentTimeDouble*(
+    self: ptr IHTMLMediaElement2, p: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_currentTimeDouble(self, p)
+
+proc get_initialTimeDouble*(
+    self: ptr IHTMLMediaElement2, p: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_initialTimeDouble(self, p)
+
+proc get_durationDouble*(
+    self: ptr IHTMLMediaElement2, p: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_durationDouble(self, p)
+
+proc put_defaultPlaybackRateDouble*(
+    self: ptr IHTMLMediaElement2, v: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_defaultPlaybackRateDouble(self, v)
+
+proc get_defaultPlaybackRateDouble*(
+    self: ptr IHTMLMediaElement2, p: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_defaultPlaybackRateDouble(self, p)
+
+proc put_playbackRateDouble*(
+    self: ptr IHTMLMediaElement2, v: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_playbackRateDouble(self, v)
+
+proc get_playbackRateDouble*(
+    self: ptr IHTMLMediaElement2, p: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_playbackRateDouble(self, p)
+
+proc put_volumeDouble*(
+    self: ptr IHTMLMediaElement2, v: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_volumeDouble(self, v)
+
+proc get_volumeDouble*(
+    self: ptr IHTMLMediaElement2, p: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_volumeDouble(self, p)
+
+proc put_msPlayToDisabled*(
+    self: ptr IHTMLMSMediaElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msPlayToDisabled(self, v)
+
+proc get_msPlayToDisabled*(
+    self: ptr IHTMLMSMediaElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msPlayToDisabled(self, p)
+
+proc put_msPlayToPrimary*(
+    self: ptr IHTMLMSMediaElement, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_msPlayToPrimary(self, v)
+
+proc get_msPlayToPrimary*(
+    self: ptr IHTMLMSMediaElement, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msPlayToPrimary(self, p)
+
+proc put_src*(self: ptr IHTMLSourceElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_src(self, v)
+
+proc get_src*(self: ptr IHTMLSourceElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_src(self, p)
+
+proc put_type*(self: ptr IHTMLSourceElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr IHTMLSourceElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_media*(self: ptr IHTMLSourceElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_media(self, v)
+
+proc get_media*(self: ptr IHTMLSourceElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_media(self, p)
+
+proc put_width*(self: ptr IHTMLVideoElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_width(self, v)
+
+proc get_width*(self: ptr IHTMLVideoElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc put_height*(self: ptr IHTMLVideoElement, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_height(self, v)
+
+proc get_height*(self: ptr IHTMLVideoElement, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc get_videoWidth*(
+    self: ptr IHTMLVideoElement, p: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_videoWidth(self, p)
+
+proc get_videoHeight*(
+    self: ptr IHTMLVideoElement, p: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_videoHeight(self, p)
+
+proc put_poster*(self: ptr IHTMLVideoElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_poster(self, v)
+
+proc get_poster*(self: ptr IHTMLVideoElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_poster(self, p)
+
+proc create*(
+    self: ptr IHTMLAudioElementFactory, src: VARIANT, a: ptr ptr IHTMLAudioElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.create(self, src, a)
+
+proc get_correspondingElement*(
+    self: ptr ISVGElementInstance, p: ptr ptr ISVGElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_correspondingElement(self, p)
+
+proc get_correspondingUseElement*(
+    self: ptr ISVGElementInstance, p: ptr ptr ISVGUseElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_correspondingUseElement(self, p)
+
+proc get_parentNode*(
+    self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parentNode(self, p)
+
+proc get_childNodes*(
+    self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstanceList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_childNodes(self, p)
+
+proc get_firstChild*(
+    self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_firstChild(self, p)
+
+proc get_lastChild*(
+    self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lastChild(self, p)
+
+proc get_previousSibling*(
+    self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_previousSibling(self, p)
+
+proc get_nextSibling*(
+    self: ptr ISVGElementInstance, p: ptr ptr ISVGElementInstance
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nextSibling(self, p)
+
+proc get_length*(
+    self: ptr ISVGElementInstanceList, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc item*(
+    self: ptr ISVGElementInstanceList,
+    index: LONG,
+    ppResult: ptr ptr ISVGElementInstance,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, ppResult)
+
+proc put_code*(self: ptr IDOMException, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_code(self, v)
+
+proc get_code*(self: ptr IDOMException, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_code(self, p)
+
+proc get_message*(self: ptr IDOMException, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_message(self, p)
+
+proc put_code*(self: ptr IRangeException, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_code(self, v)
+
+proc get_code*(self: ptr IRangeException, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_code(self, p)
+
+proc get_message*(self: ptr IRangeException, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_message(self, p)
+
+proc put_code*(self: ptr ISVGException, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_code(self, v)
+
+proc get_code*(self: ptr ISVGException, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_code(self, p)
+
+proc get_message*(self: ptr ISVGException, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_message(self, p)
+
+proc put_code*(self: ptr IEventException, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_code(self, v)
+
+proc get_code*(self: ptr IEventException, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_code(self, p)
+
+proc get_message*(self: ptr IEventException, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_message(self, p)
+
+proc put_type*(self: ptr ISVGScriptElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr ISVGScriptElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_type*(self: ptr ISVGStyleElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_type(self, v)
+
+proc get_type*(self: ptr ISVGStyleElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc put_media*(self: ptr ISVGStyleElement, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_media(self, v)
+
+proc get_media*(self: ptr ISVGStyleElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_media(self, p)
+
+proc putref_textLength*(
+    self: ptr ISVGTextContentElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_textLength(self, v)
+
+proc get_textLength*(
+    self: ptr ISVGTextContentElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textLength(self, p)
+
+proc putref_lengthAdjust*(
+    self: ptr ISVGTextContentElement, v: ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_lengthAdjust(self, v)
+
+proc get_lengthAdjust*(
+    self: ptr ISVGTextContentElement, p: ptr ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lengthAdjust(self, p)
+
+proc getNumberOfChars*(
+    self: ptr ISVGTextContentElement, pResult: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getNumberOfChars(self, pResult)
+
+proc getComputedTextLength*(
+    self: ptr ISVGTextContentElement, pResult: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getComputedTextLength(self, pResult)
+
+proc getSubStringLength*(
+    self: ptr ISVGTextContentElement, charnum: LONG, nchars: LONG, pResult: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getSubStringLength(self, charnum, nchars, pResult)
+
+proc getStartPositionOfChar*(
+    self: ptr ISVGTextContentElement, charnum: LONG, ppResult: ptr ptr ISVGPoint
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getStartPositionOfChar(self, charnum, ppResult)
+
+proc getEndPositionOfChar*(
+    self: ptr ISVGTextContentElement, charnum: LONG, ppResult: ptr ptr ISVGPoint
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getEndPositionOfChar(self, charnum, ppResult)
+
+proc getExtentOfChar*(
+    self: ptr ISVGTextContentElement, charnum: LONG, ppResult: ptr ptr ISVGRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getExtentOfChar(self, charnum, ppResult)
+
+proc getRotationOfChar*(
+    self: ptr ISVGTextContentElement, charnum: LONG, pResult: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getRotationOfChar(self, charnum, pResult)
+
+proc getCharNumAtPosition*(
+    self: ptr ISVGTextContentElement, point: ptr ISVGPoint, pResult: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getCharNumAtPosition(self, point, pResult)
+
+proc selectSubString*(
+    self: ptr ISVGTextContentElement, charnum: LONG, nchars: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.selectSubString(self, charnum, nchars)
+
+proc putref_x*(
+    self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_x(self, v)
+
+proc get_x*(
+    self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc putref_y*(
+    self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_y(self, v)
+
+proc get_y*(
+    self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_y(self, p)
+
+proc putref_dx*(
+    self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_dx(self, v)
+
+proc get_dx*(
+    self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dx(self, p)
+
+proc putref_dy*(
+    self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedLengthList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_dy(self, v)
+
+proc get_dy*(
+    self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedLengthList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dy(self, p)
+
+proc putref_rotate*(
+    self: ptr ISVGTextPositioningElement, v: ptr ISVGAnimatedNumberList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_rotate(self, v)
+
+proc get_rotate*(
+    self: ptr ISVGTextPositioningElement, p: ptr ptr ISVGAnimatedNumberList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_rotate(self, p)
+
+proc get_name*(self: ptr IDOMDocumentType, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc get_entities*(
+    self: ptr IDOMDocumentType, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_entities(self, p)
+
+proc get_notations*(
+    self: ptr IDOMDocumentType, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_notations(self, p)
+
+proc get_publicId*(
+    self: ptr IDOMDocumentType, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_publicId(self, p)
+
+proc get_systemId*(
+    self: ptr IDOMDocumentType, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_systemId(self, p)
+
+proc get_internalSubset*(
+    self: ptr IDOMDocumentType, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_internalSubset(self, p)
+
+proc get_root*(
+    self: ptr IDOMNodeIterator, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_root(self, p)
+
+proc get_whatToShow*(
+    self: ptr IDOMNodeIterator, p: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_whatToShow(self, p)
+
+proc get_filter*(
+    self: ptr IDOMNodeIterator, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_filter(self, p)
+
+proc get_expandEntityReferences*(
+    self: ptr IDOMNodeIterator, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_expandEntityReferences(self, p)
+
+proc nextNode*(
+    self: ptr IDOMNodeIterator, ppRetNode: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.nextNode(self, ppRetNode)
+
+proc previousNode*(
+    self: ptr IDOMNodeIterator, ppRetNode: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.previousNode(self, ppRetNode)
+
+proc detach*(self: ptr IDOMNodeIterator): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.detach(self)
+
+proc get_root*(
+    self: ptr IDOMTreeWalker, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_root(self, p)
+
+proc get_whatToShow*(
+    self: ptr IDOMTreeWalker, p: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_whatToShow(self, p)
+
+proc get_filter*(
+    self: ptr IDOMTreeWalker, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_filter(self, p)
+
+proc get_expandEntityReferences*(
+    self: ptr IDOMTreeWalker, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_expandEntityReferences(self, p)
+
+proc putref_currentNode*(
+    self: ptr IDOMTreeWalker, v: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_currentNode(self, v)
+
+proc get_currentNode*(
+    self: ptr IDOMTreeWalker, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_currentNode(self, p)
+
+proc parentNode*(
+    self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.parentNode(self, ppRetNode)
+
+proc firstChild*(
+    self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.firstChild(self, ppRetNode)
+
+proc lastChild*(
+    self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.lastChild(self, ppRetNode)
+
+proc previousSibling*(
+    self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.previousSibling(self, ppRetNode)
+
+proc nextSibling*(
+    self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.nextSibling(self, ppRetNode)
+
+proc previousNode*(
+    self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.previousNode(self, ppRetNode)
+
+proc nextNode*(
+    self: ptr IDOMTreeWalker, ppRetNode: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.nextNode(self, ppRetNode)
+
+proc get_target*(
+    self: ptr IDOMProcessingInstruction, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_target(self, p)
+
+proc put_data*(
+    self: ptr IDOMProcessingInstruction, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_data(self, v)
+
+proc get_data*(
+    self: ptr IDOMProcessingInstruction, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_data(self, p)
+
+proc get_navigation*(
+    self: ptr IHTMLPerformance, p: ptr ptr IHTMLPerformanceNavigation
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_navigation(self, p)
+
+proc get_timing*(
+    self: ptr IHTMLPerformance, p: ptr ptr IHTMLPerformanceTiming
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_timing(self, p)
+
+proc toString*(
+    self: ptr IHTMLPerformance, string: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toString(self, string)
+
+proc toJSON*(
+    self: ptr IHTMLPerformance, pVar: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toJSON(self, pVar)
+
+proc get_type*(
+    self: ptr IHTMLPerformanceNavigation, p: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, p)
+
+proc get_redirectCount*(
+    self: ptr IHTMLPerformanceNavigation, p: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_redirectCount(self, p)
+
+proc toString*(
+    self: ptr IHTMLPerformanceNavigation, string: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toString(self, string)
+
+proc toJSON*(
+    self: ptr IHTMLPerformanceNavigation, pVar: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toJSON(self, pVar)
+
+proc get_navigationStart*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_navigationStart(self, p)
+
+proc get_unloadEventStart*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_unloadEventStart(self, p)
+
+proc get_unloadEventEnd*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_unloadEventEnd(self, p)
+
+proc get_redirectStart*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_redirectStart(self, p)
+
+proc get_redirectEnd*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_redirectEnd(self, p)
+
+proc get_fetchStart*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fetchStart(self, p)
+
+proc get_domainLookupStart*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_domainLookupStart(self, p)
+
+proc get_domainLookupEnd*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_domainLookupEnd(self, p)
+
+proc get_connectStart*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_connectStart(self, p)
+
+proc get_connectEnd*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_connectEnd(self, p)
+
+proc get_requestStart*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_requestStart(self, p)
+
+proc get_responseStart*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_responseStart(self, p)
+
+proc get_responseEnd*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_responseEnd(self, p)
+
+proc get_domLoading*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_domLoading(self, p)
+
+proc get_domInteractive*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_domInteractive(self, p)
+
+proc get_domContentLoadedEventStart*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_domContentLoadedEventStart(self, p)
+
+proc get_domContentLoadedEventEnd*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_domContentLoadedEventEnd(self, p)
+
+proc get_domComplete*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_domComplete(self, p)
+
+proc get_loadEventStart*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_loadEventStart(self, p)
+
+proc get_loadEventEnd*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_loadEventEnd(self, p)
+
+proc get_msFirstPaint*(
+    self: ptr IHTMLPerformanceTiming, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_msFirstPaint(self, p)
+
+proc toString*(
+    self: ptr IHTMLPerformanceTiming, string: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toString(self, string)
+
+proc toJSON*(
+    self: ptr IHTMLPerformanceTiming, pVar: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toJSON(self, pVar)
+
+proc mStartDoc*(
+    self: ptr ITemplatePrinter, bstrTitle: BSTR, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.startDoc(self, bstrTitle, p)
+
+proc stopDoc*(self: ptr ITemplatePrinter): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.stopDoc(self)
+
+proc printBlankPage*(self: ptr ITemplatePrinter): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.printBlankPage(self)
+
+proc printPage*(
+    self: ptr ITemplatePrinter, pElemDisp: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.printPage(self, pElemDisp)
+
+proc ensurePrintDialogDefaults*(
+    self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ensurePrintDialogDefaults(self, p)
+
+proc showPrintDialog*(
+    self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.showPrintDialog(self, p)
+
+proc showPageSetupDialog*(
+    self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.showPageSetupDialog(self, p)
+
+proc printNonNative*(
+    self: ptr ITemplatePrinter, pMarkup: ptr IUnknown, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.printNonNative(self, pMarkup, p)
+
+proc printNonNativeFrames*(
+    self: ptr ITemplatePrinter, pMarkup: ptr IUnknown, fActiveFrame: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.printNonNativeFrames(self, pMarkup, fActiveFrame)
+
+proc put_framesetDocument*(
+    self: ptr ITemplatePrinter, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_framesetDocument(self, v)
+
+proc get_framesetDocument*(
+    self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_framesetDocument(self, p)
+
+proc put_frameActive*(
+    self: ptr ITemplatePrinter, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_frameActive(self, v)
+
+proc get_frameActive*(
+    self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frameActive(self, p)
+
+proc put_frameAsShown*(
+    self: ptr ITemplatePrinter, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_frameAsShown(self, v)
+
+proc get_frameAsShown*(
+    self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frameAsShown(self, p)
+
+proc put_selection*(
+    self: ptr ITemplatePrinter, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_selection(self, v)
+
+proc get_selection*(
+    self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selection(self, p)
+
+proc put_selectedPages*(
+    self: ptr ITemplatePrinter, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_selectedPages(self, v)
+
+proc get_selectedPages*(
+    self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selectedPages(self, p)
+
+proc put_currentPage*(
+    self: ptr ITemplatePrinter, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_currentPage(self, v)
+
+proc get_currentPage*(
+    self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_currentPage(self, p)
+
+proc put_currentPageAvail*(
+    self: ptr ITemplatePrinter, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_currentPageAvail(self, v)
+
+proc get_currentPageAvail*(
+    self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_currentPageAvail(self, p)
+
+proc put_collate*(
+    self: ptr ITemplatePrinter, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_collate(self, v)
+
+proc get_collate*(
+    self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_collate(self, p)
+
+proc get_duplex*(
+    self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_duplex(self, p)
+
+proc put_copies*(self: ptr ITemplatePrinter, v: USHORT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_copies(self, v)
+
+proc get_copies*(
+    self: ptr ITemplatePrinter, p: ptr USHORT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_copies(self, p)
+
+proc put_pageFrom*(self: ptr ITemplatePrinter, v: USHORT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pageFrom(self, v)
+
+proc get_pageFrom*(
+    self: ptr ITemplatePrinter, p: ptr USHORT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageFrom(self, p)
+
+proc put_pageTo*(self: ptr ITemplatePrinter, v: USHORT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_pageTo(self, v)
+
+proc get_pageTo*(
+    self: ptr ITemplatePrinter, p: ptr USHORT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageTo(self, p)
+
+proc put_tableOfLinks*(
+    self: ptr ITemplatePrinter, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_tableOfLinks(self, v)
+
+proc get_tableOfLinks*(
+    self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tableOfLinks(self, p)
+
+proc put_allLinkedDocuments*(
+    self: ptr ITemplatePrinter, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_allLinkedDocuments(self, v)
+
+proc get_allLinkedDocuments*(
+    self: ptr ITemplatePrinter, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_allLinkedDocuments(self, p)
+
+proc put_header*(self: ptr ITemplatePrinter, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_header(self, v)
+
+proc get_header*(self: ptr ITemplatePrinter, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_header(self, p)
+
+proc put_footer*(self: ptr ITemplatePrinter, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_footer(self, v)
+
+proc get_footer*(self: ptr ITemplatePrinter, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_footer(self, p)
+
+proc put_marginLeft*(self: ptr ITemplatePrinter, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginLeft(self, v)
+
+proc get_marginLeft*(
+    self: ptr ITemplatePrinter, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginLeft(self, p)
+
+proc put_marginRight*(self: ptr ITemplatePrinter, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginRight(self, v)
+
+proc get_marginRight*(
+    self: ptr ITemplatePrinter, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginRight(self, p)
+
+proc put_marginTop*(self: ptr ITemplatePrinter, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginTop(self, v)
+
+proc get_marginTop*(
+    self: ptr ITemplatePrinter, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginTop(self, p)
+
+proc put_marginBottom*(
+    self: ptr ITemplatePrinter, v: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_marginBottom(self, v)
+
+proc get_marginBottom*(
+    self: ptr ITemplatePrinter, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_marginBottom(self, p)
+
+proc get_pageWidth*(
+    self: ptr ITemplatePrinter, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageWidth(self, p)
+
+proc get_pageHeight*(
+    self: ptr ITemplatePrinter, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_pageHeight(self, p)
+
+proc get_unprintableLeft*(
+    self: ptr ITemplatePrinter, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_unprintableLeft(self, p)
+
+proc get_unprintableTop*(
+    self: ptr ITemplatePrinter, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_unprintableTop(self, p)
+
+proc get_unprintableRight*(
+    self: ptr ITemplatePrinter, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_unprintableRight(self, p)
+
+proc get_unprintableBottom*(
+    self: ptr ITemplatePrinter, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_unprintableBottom(self, p)
+
+proc updatePageStatus*(
+    self: ptr ITemplatePrinter, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.updatePageStatus(self, p)
+
+proc put_selectionEnabled*(
+    self: ptr ITemplatePrinter2, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_selectionEnabled(self, v)
+
+proc get_selectionEnabled*(
+    self: ptr ITemplatePrinter2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selectionEnabled(self, p)
+
+proc put_frameActiveEnabled*(
+    self: ptr ITemplatePrinter2, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_frameActiveEnabled(self, v)
+
+proc get_frameActiveEnabled*(
+    self: ptr ITemplatePrinter2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_frameActiveEnabled(self, p)
+
+proc put_orientation*(
+    self: ptr ITemplatePrinter2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_orientation(self, v)
+
+proc get_orientation*(
+    self: ptr ITemplatePrinter2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_orientation(self, p)
+
+proc put_usePrinterCopyCollate*(
+    self: ptr ITemplatePrinter2, v: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_usePrinterCopyCollate(self, v)
+
+proc get_usePrinterCopyCollate*(
+    self: ptr ITemplatePrinter2, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_usePrinterCopyCollate(self, p)
+
+proc deviceSupports*(
+    self: ptr ITemplatePrinter2, bstrProperty: BSTR, pvar: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deviceSupports(self, bstrProperty, pvar)
+
+proc put_headerFooterFont*(
+    self: ptr ITemplatePrinter3, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_headerFooterFont(self, v)
+
+proc get_headerFooterFont*(
+    self: ptr ITemplatePrinter3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_headerFooterFont(self, p)
+
+proc getPageMarginTop*(
+    self: ptr ITemplatePrinter3,
+    pageRule: ptr IDispatch,
+    pageWidth: LONG,
+    pageHeight: LONG,
+    pMargin: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getPageMarginTop(self, pageRule, pageWidth, pageHeight, pMargin)
+
+proc getPageMarginRight*(
+    self: ptr ITemplatePrinter3,
+    pageRule: ptr IDispatch,
+    pageWidth: LONG,
+    pageHeight: LONG,
+    pMargin: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getPageMarginRight(self, pageRule, pageWidth, pageHeight, pMargin)
+
+proc getPageMarginBottom*(
+    self: ptr ITemplatePrinter3,
+    pageRule: ptr IDispatch,
+    pageWidth: LONG,
+    pageHeight: LONG,
+    pMargin: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getPageMarginBottom(self, pageRule, pageWidth, pageHeight, pMargin)
+
+proc getPageMarginLeft*(
+    self: ptr ITemplatePrinter3,
+    pageRule: ptr IDispatch,
+    pageWidth: LONG,
+    pageHeight: LONG,
+    pMargin: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getPageMarginLeft(self, pageRule, pageWidth, pageHeight, pMargin)
+
+proc getPageMarginTopImportant*(
+    self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pbImportant: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getPageMarginTopImportant(self, pageRule, pbImportant)
+
+proc getPageMarginRightImportant*(
+    self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pbImportant: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getPageMarginRightImportant(self, pageRule, pbImportant)
+
+proc getPageMarginBottomImportant*(
+    self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pbImportant: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getPageMarginBottomImportant(self, pageRule, pbImportant)
+
+proc getPageMarginLeftImportant*(
+    self: ptr ITemplatePrinter3, pageRule: ptr IDispatch, pbImportant: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getPageMarginLeftImportant(self, pageRule, pbImportant)
+
+proc startPrint*(self: ptr IPrintManagerTemplatePrinter): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.startPrint(self)
+
+proc drawPreviewPage*(
+    self: ptr IPrintManagerTemplatePrinter, pElemDisp: ptr IDispatch, nPage: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.drawPreviewPage(self, pElemDisp, nPage)
+
+proc setPageCount*(
+    self: ptr IPrintManagerTemplatePrinter, nPage: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setPageCount(self, nPage)
+
+proc invalidatePreview*(
+    self: ptr IPrintManagerTemplatePrinter
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.invalidatePreview(self)
+
+proc getPrintTaskOptionValue*(
+    self: ptr IPrintManagerTemplatePrinter, bstrKey: BSTR, pvarin: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getPrintTaskOptionValue(self, bstrKey, pvarin)
+
+proc endPrint*(self: ptr IPrintManagerTemplatePrinter): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.endPrint(self)
+
+proc putref_startOffset*(
+    self: ptr ISVGTextPathElement, v: ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_startOffset(self, v)
+
+proc get_startOffset*(
+    self: ptr ISVGTextPathElement, p: ptr ptr ISVGAnimatedLength
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_startOffset(self, p)
+
+proc putref_method*(
+    self: ptr ISVGTextPathElement, v: ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_method(self, v)
+
+proc get_method*(
+    self: ptr ISVGTextPathElement, p: ptr ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_method(self, p)
+
+proc putref_spacing*(
+    self: ptr ISVGTextPathElement, v: ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_spacing(self, v)
+
+proc get_spacing*(
+    self: ptr ISVGTextPathElement, p: ptr ptr ISVGAnimatedEnumeration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_spacing(self, p)
+
+proc serializeToString*(
+    self: ptr IDOMXmlSerializer, pNode: ptr IHTMLDOMNode, pString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.serializeToString(self, pNode, pString)
+
+proc create*(
+    self: ptr IDOMXmlSerializerFactory, a: ptr ptr IDOMXmlSerializer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.create(self, a)
+
+proc parseFromString*(
+    self: ptr IDOMParser,
+    xmlSource: BSTR,
+    mimeType: BSTR,
+    ppNode: ptr ptr IHTMLDocument2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.parseFromString(self, xmlSource, mimeType, ppNode)
+
+proc create*(
+    self: ptr IDOMParserFactory, a: ptr ptr IDOMParser
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.create(self, a)
+
+proc put_value*(
+    self: ptr IHTMLProgressElement, v: float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, v)
+
+proc get_value*(
+    self: ptr IHTMLProgressElement, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, p)
+
+proc put_max*(self: ptr IHTMLProgressElement, v: float32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_max(self, v)
+
+proc get_max*(
+    self: ptr IHTMLProgressElement, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_max(self, p)
+
+proc get_position*(
+    self: ptr IHTMLProgressElement, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_position(self, p)
+
+proc get_form*(
+    self: ptr IHTMLProgressElement, p: ptr ptr IHTMLFormElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_form(self, p)
+
+proc get_propertyName*(
+    self: ptr IDOMMSTransitionEvent, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_propertyName(self, p)
+
+proc get_elapsedTime*(
+    self: ptr IDOMMSTransitionEvent, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_elapsedTime(self, p)
+
+proc initMSTransitionEvent*(
+    self: ptr IDOMMSTransitionEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    propertyName: BSTR,
+    elapsedTime: float32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initMSTransitionEvent(
+      self, eventType, canBubble, cancelable, propertyName, elapsedTime
+    )
+
+proc get_animationName*(
+    self: ptr IDOMMSAnimationEvent, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_animationName(self, p)
+
+proc get_elapsedTime*(
+    self: ptr IDOMMSAnimationEvent, p: ptr float32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_elapsedTime(self, p)
+
+proc initMSAnimationEvent*(
+    self: ptr IDOMMSAnimationEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    animationName: BSTR,
+    elapsedTime: float32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initMSAnimationEvent(
+      self, eventType, canBubble, cancelable, animationName, elapsedTime
+    )
+
+proc getCurrentPosition*(
+    self: ptr IWebGeolocation,
+    successCallback: ptr IDispatch,
+    errorCallback: ptr IDispatch,
+    options: ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getCurrentPosition(self, successCallback, errorCallback, options)
+
+proc watchPosition*(
+    self: ptr IWebGeolocation,
+    successCallback: ptr IDispatch,
+    errorCallback: ptr IDispatch,
+    options: ptr IDispatch,
+    watchId: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.watchPosition(self, successCallback, errorCallback, options, watchId)
+
+proc clearWatch*(self: ptr IWebGeolocation, watchId: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clearWatch(self, watchId)
+
+proc get_latitude*(
+    self: ptr IWebGeocoordinates, p: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_latitude(self, p)
+
+proc get_longitude*(
+    self: ptr IWebGeocoordinates, p: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_longitude(self, p)
+
+proc get_altitude*(
+    self: ptr IWebGeocoordinates, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_altitude(self, p)
+
+proc get_accuracy*(
+    self: ptr IWebGeocoordinates, p: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accuracy(self, p)
+
+proc get_altitudeAccuracy*(
+    self: ptr IWebGeocoordinates, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_altitudeAccuracy(self, p)
+
+proc get_heading*(
+    self: ptr IWebGeocoordinates, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_heading(self, p)
+
+proc get_speed*(
+    self: ptr IWebGeocoordinates, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_speed(self, p)
+
+proc get_code*(
+    self: ptr IWebGeopositionError, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_code(self, p)
+
+proc get_message*(
+    self: ptr IWebGeopositionError, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_message(self, p)
+
+proc get_coords*(
+    self: ptr IWebGeoposition, p: ptr ptr IWebGeocoordinates
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_coords(self, p)
+
+proc get_timestamp*(
+    self: ptr IWebGeoposition, p: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_timestamp(self, p)
+
+proc get_javaEnabled*(
+    self: ptr IClientCaps, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_javaEnabled(self, p)
+
+proc get_cookieEnabled*(
+    self: ptr IClientCaps, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cookieEnabled(self, p)
+
+proc get_cpuClass*(self: ptr IClientCaps, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_cpuClass(self, p)
+
+proc get_systemLanguage*(
+    self: ptr IClientCaps, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_systemLanguage(self, p)
+
+proc get_userLanguage*(self: ptr IClientCaps, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_userLanguage(self, p)
+
+proc get_platform*(self: ptr IClientCaps, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_platform(self, p)
+
+proc get_connectionSpeed*(
+    self: ptr IClientCaps, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_connectionSpeed(self, p)
+
+proc get_onLine*(
+    self: ptr IClientCaps, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onLine(self, p)
+
+proc get_colorDepth*(self: ptr IClientCaps, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_colorDepth(self, p)
+
+proc get_bufferDepth*(self: ptr IClientCaps, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bufferDepth(self, p)
+
+proc get_width*(self: ptr IClientCaps, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_width(self, p)
+
+proc get_height*(self: ptr IClientCaps, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_height(self, p)
+
+proc get_availHeight*(self: ptr IClientCaps, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_availHeight(self, p)
+
+proc get_availWidth*(self: ptr IClientCaps, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_availWidth(self, p)
+
+proc get_connectionType*(
+    self: ptr IClientCaps, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_connectionType(self, p)
+
+proc isComponentInstalled*(
+    self: ptr IClientCaps,
+    bstrName: BSTR,
+    bstrUrl: BSTR,
+    bStrVer: BSTR,
+    p: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.isComponentInstalled(self, bstrName, bstrUrl, bStrVer, p)
+
+proc getComponentVersion*(
+    self: ptr IClientCaps, bstrName: BSTR, bstrUrl: BSTR, pbstrVer: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getComponentVersion(self, bstrName, bstrUrl, pbstrVer)
+
+proc compareVersions*(
+    self: ptr IClientCaps, bstrVer1: BSTR, bstrVer2: BSTR, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.compareVersions(self, bstrVer1, bstrVer2, p)
+
+proc addComponentRequest*(
+    self: ptr IClientCaps, bstrName: BSTR, bstrUrl: BSTR, bStrVer: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addComponentRequest(self, bstrName, bstrUrl, bStrVer)
+
+proc doComponentRequest*(
+    self: ptr IClientCaps, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.doComponentRequest(self, p)
+
+proc clearComponentRequest*(self: ptr IClientCaps): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.clearComponentRequest(self)
+
+proc get_lastState*(
+    self: ptr IDOMMSManipulationEvent, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lastState(self, p)
+
+proc get_currentState*(
+    self: ptr IDOMMSManipulationEvent, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_currentState(self, p)
+
+proc initMSManipulationEvent*(
+    self: ptr IDOMMSManipulationEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    viewArg: ptr IHTMLWindow2,
+    detailArg: LONG,
+    lastState: LONG,
+    currentState: LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initMSManipulationEvent(
+      self, eventType, canBubble, cancelable, viewArg, detailArg, lastState,
+      currentState,
+    )
+
+proc get_wasClean*(
+    self: ptr IDOMCloseEvent, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_wasClean(self, p)
+
+proc initCloseEvent*(
+    self: ptr IDOMCloseEvent,
+    eventType: BSTR,
+    canBubble: VARIANT_BOOL,
+    cancelable: VARIANT_BOOL,
+    wasClean: VARIANT_BOOL,
+    code: LONG,
+    reason: BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.initCloseEvent(
+      self, eventType, canBubble, cancelable, wasClean, code, reason
+    )
+
+proc get_status*(
+    self: ptr IHTMLApplicationCache, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_status(self, p)
+
+proc put_onchecking*(
+    self: ptr IHTMLApplicationCache, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onchecking(self, v)
+
+proc get_onchecking*(
+    self: ptr IHTMLApplicationCache, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onchecking(self, p)
+
+proc put_onerror*(
+    self: ptr IHTMLApplicationCache, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onerror(self, v)
+
+proc get_onerror*(
+    self: ptr IHTMLApplicationCache, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onerror(self, p)
+
+proc put_onnoupdate*(
+    self: ptr IHTMLApplicationCache, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onnoupdate(self, v)
+
+proc get_onnoupdate*(
+    self: ptr IHTMLApplicationCache, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onnoupdate(self, p)
+
+proc put_ondownloading*(
+    self: ptr IHTMLApplicationCache, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondownloading(self, v)
+
+proc get_ondownloading*(
+    self: ptr IHTMLApplicationCache, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ondownloading(self, p)
+
+proc put_onprogress*(
+    self: ptr IHTMLApplicationCache, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onprogress(self, v)
+
+proc get_onprogress*(
+    self: ptr IHTMLApplicationCache, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onprogress(self, p)
+
+proc put_onupdateready*(
+    self: ptr IHTMLApplicationCache, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onupdateready(self, v)
+
+proc get_onupdateready*(
+    self: ptr IHTMLApplicationCache, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onupdateready(self, p)
+
+proc put_oncached*(
+    self: ptr IHTMLApplicationCache, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_oncached(self, v)
+
+proc get_oncached*(
+    self: ptr IHTMLApplicationCache, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_oncached(self, p)
+
+proc put_onobsolete*(
+    self: ptr IHTMLApplicationCache, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onobsolete(self, v)
+
+proc get_onobsolete*(
+    self: ptr IHTMLApplicationCache, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onobsolete(self, p)
+
+proc update*(self: ptr IHTMLApplicationCache): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.update(self)
+
+proc swapCache*(self: ptr IHTMLApplicationCache): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.swapCache(self)
+
+proc abort*(self: ptr IHTMLApplicationCache): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.abort(self)
+
+proc GetElement*(
+    self: ptr ICSSFilterSite, Element: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetElement(self, Element)
+
+proc FireOnFilterChangeEvent*(self: ptr ICSSFilterSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FireOnFilterChangeEvent(self)
+
+proc SetSite*(
+    self: ptr ICSSFilter, pSink: ptr ICSSFilterSite
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSite(self, pSink)
+
+proc OnAmbientPropertyChange*(
+    self: ptr ICSSFilter, dispid: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnAmbientPropertyChange(self, dispid)
+
+proc ValidateSecureUrl*(
+    self: ptr ISecureUrlHost,
+    pfAllow: ptr WINBOOL,
+    pchUrlInQuestion: ptr OLECHAR,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ValidateSecureUrl(self, pfAllow, pchUrlInQuestion, dwFlags)
+
+proc CreateMarkupPointer*(
+    self: ptr IMarkupServices, ppPointer: ptr ptr IMarkupPointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateMarkupPointer(self, ppPointer)
+
+proc CreateMarkupContainer*(
+    self: ptr IMarkupServices, ppMarkupContainer: ptr ptr IMarkupContainer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateMarkupContainer(self, ppMarkupContainer)
+
+proc CreateElement*(
+    self: ptr IMarkupServices,
+    tagID: ELEMENT_TAG_ID,
+    pchAttributes: ptr OLECHAR,
+    ppElement: ptr ptr IHTMLElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateElement(self, tagID, pchAttributes, ppElement)
+
+proc CloneElement*(
+    self: ptr IMarkupServices,
+    pElemCloneThis: ptr IHTMLElement,
+    ppElementTheClone: ptr ptr IHTMLElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CloneElement(self, pElemCloneThis, ppElementTheClone)
+
+proc InsertElement*(
+    self: ptr IMarkupServices,
+    pElementInsert: ptr IHTMLElement,
+    pPointerStart: ptr IMarkupPointer,
+    pPointerFinish: ptr IMarkupPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InsertElement(self, pElementInsert, pPointerStart, pPointerFinish)
+
+proc RemoveElement*(
+    self: ptr IMarkupServices, pElementRemove: ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveElement(self, pElementRemove)
+
+proc Remove*(
+    self: ptr IMarkupServices,
+    pPointerStart: ptr IMarkupPointer,
+    pPointerFinish: ptr IMarkupPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Remove(self, pPointerStart, pPointerFinish)
+
+proc Copy*(
+    self: ptr IMarkupServices,
+    pPointerSourceStart: ptr IMarkupPointer,
+    pPointerSourceFinish: ptr IMarkupPointer,
+    pPointerTarget: ptr IMarkupPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Copy(self, pPointerSourceStart, pPointerSourceFinish, pPointerTarget)
+
+proc Move*(
+    self: ptr IMarkupServices,
+    pPointerSourceStart: ptr IMarkupPointer,
+    pPointerSourceFinish: ptr IMarkupPointer,
+    pPointerTarget: ptr IMarkupPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Move(self, pPointerSourceStart, pPointerSourceFinish, pPointerTarget)
+
+proc InsertText*(
+    self: ptr IMarkupServices,
+    pchText: ptr OLECHAR,
+    cch: LONG,
+    pPointerTarget: ptr IMarkupPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InsertText(self, pchText, cch, pPointerTarget)
+
+proc ParseString*(
+    self: ptr IMarkupServices,
+    pchHTML: ptr OLECHAR,
+    dwFlags: DWORD,
+    ppContainerResult: ptr ptr IMarkupContainer,
+    ppPointerStart: ptr IMarkupPointer,
+    ppPointerFinish: ptr IMarkupPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseString(
+      self, pchHTML, dwFlags, ppContainerResult, ppPointerStart, ppPointerFinish
+    )
+
+proc ParseGlobal*(
+    self: ptr IMarkupServices,
+    hglobalHTML: HGLOBAL,
+    dwFlags: DWORD,
+    ppContainerResult: ptr ptr IMarkupContainer,
+    pPointerStart: ptr IMarkupPointer,
+    pPointerFinish: ptr IMarkupPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseGlobal(
+      self, hglobalHTML, dwFlags, ppContainerResult, pPointerStart, pPointerFinish
+    )
+
+proc IsScopedElement*(
+    self: ptr IMarkupServices, pElement: ptr IHTMLElement, pfScoped: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsScopedElement(self, pElement, pfScoped)
+
+proc GetElementTagId*(
+    self: ptr IMarkupServices, pElement: ptr IHTMLElement, ptagId: ptr ELEMENT_TAG_ID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetElementTagId(self, pElement, ptagId)
+
+proc GetTagIDForName*(
+    self: ptr IMarkupServices, bstrName: BSTR, ptagId: ptr ELEMENT_TAG_ID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTagIDForName(self, bstrName, ptagId)
+
+proc GetNameForTagID*(
+    self: ptr IMarkupServices, tagId: ELEMENT_TAG_ID, pbstrName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNameForTagID(self, tagId, pbstrName)
+
+proc MovePointersToRange*(
+    self: ptr IMarkupServices,
+    pIRange: ptr IHTMLTxtRange,
+    pPointerStart: ptr IMarkupPointer,
+    pPointerFinish: ptr IMarkupPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MovePointersToRange(self, pIRange, pPointerStart, pPointerFinish)
+
+proc MoveRangeToPointers*(
+    self: ptr IMarkupServices,
+    pPointerStart: ptr IMarkupPointer,
+    pPointerFinish: ptr IMarkupPointer,
+    pIRange: ptr IHTMLTxtRange,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveRangeToPointers(self, pPointerStart, pPointerFinish, pIRange)
+
+proc BeginUndoUnit*(
+    self: ptr IMarkupServices, pchTitle: ptr OLECHAR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeginUndoUnit(self, pchTitle)
+
+proc EndUndoUnit*(self: ptr IMarkupServices): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EndUndoUnit(self)
+
+proc ParseGlobalEx*(
+    self: ptr IMarkupServices2,
+    hglobalHTML: HGLOBAL,
+    dwFlags: DWORD,
+    pContext: ptr IMarkupContainer,
+    ppContainerResult: ptr ptr IMarkupContainer,
+    pPointerStart: ptr IMarkupPointer,
+    pPointerFinish: ptr IMarkupPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseGlobalEx(
+      self, hglobalHTML, dwFlags, pContext, ppContainerResult, pPointerStart,
+      pPointerFinish,
+    )
+
+proc ValidateElements*(
+    self: ptr IMarkupServices2,
+    pPointerStart: ptr IMarkupPointer,
+    pPointerFinish: ptr IMarkupPointer,
+    pPointerTarget: ptr IMarkupPointer,
+    pPointerStatus: ptr IMarkupPointer,
+    ppElemFailBottom: ptr ptr IHTMLElement,
+    ppElemFailTop: ptr ptr IHTMLElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ValidateElements(
+      self, pPointerStart, pPointerFinish, pPointerTarget, pPointerStatus,
+      ppElemFailBottom, ppElemFailTop,
+    )
+
+proc SaveSegmentsToClipboard*(
+    self: ptr IMarkupServices2, pSegmentList: ptr ISegmentList, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SaveSegmentsToClipboard(self, pSegmentList, dwFlags)
+
+proc OwningDoc*(
+    self: ptr IMarkupContainer, ppDoc: ptr ptr IHTMLDocument2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OwningDoc(self, ppDoc)
+
+proc CreateChangeLog*(
+    self: ptr IMarkupContainer2,
+    pChangeSink: ptr IHTMLChangeSink,
+    ppChangeLog: ptr ptr IHTMLChangeLog,
+    fForward: WINBOOL,
+    fBackward: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateChangeLog(self, pChangeSink, ppChangeLog, fForward, fBackward)
+
+proc RegisterForDirtyRange*(
+    self: ptr IMarkupContainer2, pChangeSink: ptr IHTMLChangeSink, pdwCookie: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterForDirtyRange(self, pChangeSink, pdwCookie)
+
+proc UnRegisterForDirtyRange*(
+    self: ptr IMarkupContainer2, dwCookie: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnRegisterForDirtyRange(self, dwCookie)
+
+proc GetAndClearDirtyRange*(
+    self: ptr IMarkupContainer2,
+    dwCookie: DWORD,
+    pIPointerBegin: ptr IMarkupPointer,
+    pIPointerEnd: ptr IMarkupPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAndClearDirtyRange(self, dwCookie, pIPointerBegin, pIPointerEnd)
+
+proc GetVersionNumber*(self: ptr IMarkupContainer2): LONG {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetVersionNumber(self)
+
+proc GetMasterElement*(
+    self: ptr IMarkupContainer2, ppElementMaster: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMasterElement(self, ppElementMaster)
+
+proc ExecChange*(
+    self: ptr IHTMLChangePlayback, pbRecord: ptr BYTE, fForward: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExecChange(self, pbRecord, fForward)
+
+proc OwningDoc*(
+    self: ptr IMarkupPointer, ppDoc: ptr ptr IHTMLDocument2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OwningDoc(self, ppDoc)
+
+proc Gravity*(
+    self: ptr IMarkupPointer, pGravity: ptr POINTER_GRAVITY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Gravity(self, pGravity)
+
+proc SetGravity*(
+    self: ptr IMarkupPointer, Gravity: POINTER_GRAVITY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetGravity(self, Gravity)
+
+proc Cling*(
+    self: ptr IMarkupPointer, pfCling: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Cling(self, pfCling)
+
+proc SetCling*(self: ptr IMarkupPointer, fCLing: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCling(self, fCLing)
+
+proc Unposition*(self: ptr IMarkupPointer): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unposition(self)
+
+proc IsPositioned*(
+    self: ptr IMarkupPointer, pfPositioned: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsPositioned(self, pfPositioned)
+
+proc GetContainer*(
+    self: ptr IMarkupPointer, ppContainer: ptr ptr IMarkupContainer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetContainer(self, ppContainer)
+
+proc MoveAdjacentToElement*(
+    self: ptr IMarkupPointer, pElement: ptr IHTMLElement, eAdj: ELEMENT_ADJACENCY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveAdjacentToElement(self, pElement, eAdj)
+
+proc MoveToPointer*(
+    self: ptr IMarkupPointer, pPointer: ptr IMarkupPointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveToPointer(self, pPointer)
+
+proc MoveToContainer*(
+    self: ptr IMarkupPointer, pContainer: ptr IMarkupContainer, fAtStart: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveToContainer(self, pContainer, fAtStart)
+
+proc Left*(
+    self: ptr IMarkupPointer,
+    fMove: WINBOOL,
+    pContext: ptr MARKUP_CONTEXT_TYPE,
+    ppElement: ptr ptr IHTMLElement,
+    pcch: ptr LONG,
+    pchText: ptr OLECHAR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Left(self, fMove, pContext, ppElement, pcch, pchText)
+
+proc Right*(
+    self: ptr IMarkupPointer,
+    fMove: WINBOOL,
+    pContext: ptr MARKUP_CONTEXT_TYPE,
+    ppElement: ptr ptr IHTMLElement,
+    pcch: ptr LONG,
+    pchText: ptr OLECHAR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Right(self, fMove, pContext, ppElement, pcch, pchText)
+
+proc CurrentScope*(
+    self: ptr IMarkupPointer, ppElemCurrent: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CurrentScope(self, ppElemCurrent)
+
+proc IsLeftOf*(
+    self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsLeftOf(self, pPointerThat, pfResult)
+
+proc IsLeftOfOrEqualTo*(
+    self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsLeftOfOrEqualTo(self, pPointerThat, pfResult)
+
+proc IsRightOf*(
+    self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsRightOf(self, pPointerThat, pfResult)
+
+proc IsRightOfOrEqualTo*(
+    self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfResult: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsRightOfOrEqualTo(self, pPointerThat, pfResult)
+
+proc IsEqualTo*(
+    self: ptr IMarkupPointer, pPointerThat: ptr IMarkupPointer, pfAreEqual: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsEqualTo(self, pPointerThat, pfAreEqual)
+
+proc MoveUnit*(
+    self: ptr IMarkupPointer, muAction: MOVEUNIT_ACTION
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveUnit(self, muAction)
+
+proc FindText*(
+    self: ptr IMarkupPointer,
+    pchFindText: ptr OLECHAR,
+    dwFlags: DWORD,
+    pIEndMatch: ptr IMarkupPointer,
+    pIEndSearch: ptr IMarkupPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindText(self, pchFindText, dwFlags, pIEndMatch, pIEndSearch)
+
+proc IsAtWordBreak*(
+    self: ptr IMarkupPointer2, pfAtBreak: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsAtWordBreak(self, pfAtBreak)
+
+proc GetMarkupPosition*(
+    self: ptr IMarkupPointer2, plMP: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMarkupPosition(self, plMP)
+
+proc MoveToMarkupPosition*(
+    self: ptr IMarkupPointer2, pContainer: ptr IMarkupContainer, lMP: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveToMarkupPosition(self, pContainer, lMP)
+
+proc MoveUnitBounded*(
+    self: ptr IMarkupPointer2, muAction: MOVEUNIT_ACTION, pIBoundary: ptr IMarkupPointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveUnitBounded(self, muAction, pIBoundary)
+
+proc IsInsideURL*(
+    self: ptr IMarkupPointer2, pRight: ptr IMarkupPointer, pfResult: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsInsideURL(self, pRight, pfResult)
+
+proc MoveToContent*(
+    self: ptr IMarkupPointer2, pIElement: ptr IHTMLElement, fAtStart: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveToContent(self, pIElement, fAtStart)
+
+proc GetTextFragCount*(
+    self: ptr IMarkupTextFrags, pcFrags: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTextFragCount(self, pcFrags)
+
+proc GetTextFrag*(
+    self: ptr IMarkupTextFrags,
+    iFrag: LONG,
+    pbstrFrag: ptr BSTR,
+    pPointerFrag: ptr IMarkupPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTextFrag(self, iFrag, pbstrFrag, pPointerFrag)
+
+proc RemoveTextFrag*(
+    self: ptr IMarkupTextFrags, iFrag: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveTextFrag(self, iFrag)
+
+proc InsertTextFrag*(
+    self: ptr IMarkupTextFrags,
+    iFrag: LONG,
+    bstrInsert: BSTR,
+    pPointerInsert: ptr IMarkupPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InsertTextFrag(self, iFrag, bstrInsert, pPointerInsert)
+
+proc FindTextFragFromMarkupPointer*(
+    self: ptr IMarkupTextFrags,
+    pPointerFind: ptr IMarkupPointer,
+    piFrag: ptr LONG,
+    pfFragFound: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindTextFragFromMarkupPointer(self, pPointerFind, piFrag, pfFragFound)
+
+proc GetNextChange*(
+    self: ptr IHTMLChangeLog,
+    pbBuffer: ptr BYTE,
+    nBufferSize: LONG,
+    pnRecordLength: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNextChange(self, pbBuffer, nBufferSize, pnRecordLength)
+
+proc Notify*(self: ptr IHTMLChangeSink): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Notify(self)
+
+proc SetGenericParse*(
+    self: ptr IXMLGenericParse, fDoGeneric: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetGenericParse(self, fDoGeneric)
+
+proc SnapRect*(
+    self: ptr IHTMLEditHost,
+    pIElement: ptr IHTMLElement,
+    prcNew: ptr RECT,
+    eHandle: ELEMENT_CORNER,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SnapRect(self, pIElement, prcNew, eHandle)
+
+proc PreDrag*(self: ptr IHTMLEditHost2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreDrag(self)
+
+proc GetPointers*(
+    self: ptr ISegment, pIStart: ptr IMarkupPointer, pIEnd: ptr IMarkupPointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPointers(self, pIStart, pIEnd)
+
+proc Current*(
+    self: ptr ISegmentListIterator, ppISegment: ptr ptr ISegment
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Current(self, ppISegment)
+
+proc First*(self: ptr ISegmentListIterator): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.First(self)
+
+proc IsDone*(self: ptr ISegmentListIterator): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDone(self)
+
+proc Advance*(self: ptr ISegmentListIterator): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Advance(self)
+
+proc CreateIterator*(
+    self: ptr ISegmentList, ppIIter: ptr ptr ISegmentListIterator
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateIterator(self, ppIIter)
+
+proc GetType*(
+    self: ptr ISegmentList, peType: ptr SELECTION_TYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetType(self, peType)
+
+proc IsEmpty*(
+    self: ptr ISegmentList, pfEmpty: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsEmpty(self, pfEmpty)
+
+proc GetSequenceNumber*(
+    self: ptr ISequenceNumber, nCurrent: LONG, pnNew: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSequenceNumber(self, nCurrent, pnNew)
+
+proc GetActiveIMM*(
+    self: ptr IIMEServices, ppActiveIMM: ptr ptr IActiveIMMApp
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetActiveIMM(self, ppActiveIMM)
+
+proc MoveCaretToPointer*(
+    self: ptr IHTMLCaret,
+    pDispPointer: ptr IDisplayPointer,
+    fScrollIntoView: WINBOOL,
+    eDir: CARET_DIRECTION,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveCaretToPointer(self, pDispPointer, fScrollIntoView, eDir)
+
+proc MoveCaretToPointerEx*(
+    self: ptr IHTMLCaret,
+    pDispPointer: ptr IDisplayPointer,
+    fVisible: WINBOOL,
+    fScrollIntoView: WINBOOL,
+    eDir: CARET_DIRECTION,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveCaretToPointerEx(
+      self, pDispPointer, fVisible, fScrollIntoView, eDir
+    )
+
+proc MoveMarkupPointerToCaret*(
+    self: ptr IHTMLCaret, pIMarkupPointer: ptr IMarkupPointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveMarkupPointerToCaret(self, pIMarkupPointer)
+
+proc MoveDisplayPointerToCaret*(
+    self: ptr IHTMLCaret, pDispPointer: ptr IDisplayPointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveDisplayPointerToCaret(self, pDispPointer)
+
+proc IsVisible*(
+    self: ptr IHTMLCaret, pIsVisible: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsVisible(self, pIsVisible)
+
+proc Show*(self: ptr IHTMLCaret, fScrollIntoView: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Show(self, fScrollIntoView)
+
+proc Hide*(self: ptr IHTMLCaret): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Hide(self)
+
+proc InsertText*(
+    self: ptr IHTMLCaret, pText: ptr OLECHAR, lLen: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InsertText(self, pText, lLen)
+
+proc ScrollIntoView*(self: ptr IHTMLCaret): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ScrollIntoView(self)
+
+proc GetLocation*(
+    self: ptr IHTMLCaret, pPoint: ptr POINT, fTranslate: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLocation(self, pPoint, fTranslate)
+
+proc GetCaretDirection*(
+    self: ptr IHTMLCaret, peDir: ptr CARET_DIRECTION
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCaretDirection(self, peDir)
+
+proc SetCaretDirection*(
+    self: ptr IHTMLCaret, eDir: CARET_DIRECTION
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCaretDirection(self, eDir)
+
+proc AddSegment*(
+    self: ptr IHighlightRenderingServices,
+    pDispPointerStart: ptr IDisplayPointer,
+    pDispPointerEnd: ptr IDisplayPointer,
+    pIRenderStyle: ptr IHTMLRenderStyle,
+    ppISegment: ptr ptr IHighlightSegment,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddSegment(
+      self, pDispPointerStart, pDispPointerEnd, pIRenderStyle, ppISegment
+    )
+
+proc MoveSegmentToPointers*(
+    self: ptr IHighlightRenderingServices,
+    pISegment: ptr IHighlightSegment,
+    pDispPointerStart: ptr IDisplayPointer,
+    pDispPointerEnd: ptr IDisplayPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveSegmentToPointers(
+      self, pISegment, pDispPointerStart, pDispPointerEnd
+    )
+
+proc RemoveSegment*(
+    self: ptr IHighlightRenderingServices, pISegment: ptr IHighlightSegment
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveSegment(self, pISegment)
+
+proc BeginSelectionUndo*(
+    self: ptr ISelectionServicesListener
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeginSelectionUndo(self)
+
+proc EndSelectionUndo*(
+    self: ptr ISelectionServicesListener
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EndSelectionUndo(self)
+
+proc OnSelectedElementExit*(
+    self: ptr ISelectionServicesListener,
+    pIElementStart: ptr IMarkupPointer,
+    pIElementEnd: ptr IMarkupPointer,
+    pIElementContentStart: ptr IMarkupPointer,
+    pIElementContentEnd: ptr IMarkupPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnSelectedElementExit(
+      self, pIElementStart, pIElementEnd, pIElementContentStart, pIElementContentEnd
+    )
+
+proc OnChangeType*(
+    self: ptr ISelectionServicesListener,
+    eType: SELECTION_TYPE,
+    pIListener: ptr ISelectionServicesListener,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnChangeType(self, eType, pIListener)
+
+proc GetTypeDetail*(
+    self: ptr ISelectionServicesListener, pTypeDetail: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeDetail(self, pTypeDetail)
+
+proc SetSelectionType*(
+    self: ptr ISelectionServices,
+    eType: SELECTION_TYPE,
+    pIListener: ptr ISelectionServicesListener,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSelectionType(self, eType, pIListener)
+
+proc GetMarkupContainer*(
+    self: ptr ISelectionServices, ppIContainer: ptr ptr IMarkupContainer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMarkupContainer(self, ppIContainer)
+
+proc AddSegment*(
+    self: ptr ISelectionServices,
+    pIStart: ptr IMarkupPointer,
+    pIEnd: ptr IMarkupPointer,
+    ppISegmentAdded: ptr ptr ISegment,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddSegment(self, pIStart, pIEnd, ppISegmentAdded)
+
+proc AddElementSegment*(
+    self: ptr ISelectionServices,
+    pIElement: ptr IHTMLElement,
+    ppISegmentAdded: ptr ptr IElementSegment,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddElementSegment(self, pIElement, ppISegmentAdded)
+
+proc RemoveSegment*(
+    self: ptr ISelectionServices, pISegment: ptr ISegment
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveSegment(self, pISegment)
+
+proc GetSelectionServicesListener*(
+    self: ptr ISelectionServices,
+    ppISelectionServicesListener: ptr ptr ISelectionServicesListener,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelectionServicesListener(self, ppISelectionServicesListener)
+
+proc GetElement*(
+    self: ptr IElementSegment, ppIElement: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetElement(self, ppIElement)
+
+proc SetPrimary*(
+    self: ptr IElementSegment, fPrimary: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPrimary(self, fPrimary)
+
+proc IsPrimary*(
+    self: ptr IElementSegment, pfPrimary: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsPrimary(self, pfPrimary)
+
+proc PreHandleEvent*(
+    self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreHandleEvent(self, inEvtDispId, pIEventObj)
+
+proc PostHandleEvent*(
+    self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostHandleEvent(self, inEvtDispId, pIEventObj)
+
+proc TranslateAccelerator*(
+    self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateAccelerator(self, inEvtDispId, pIEventObj)
+
+proc PostEditorEventNotify*(
+    self: ptr IHTMLEditDesigner, inEvtDispId: DISPID, pIEventObj: ptr IHTMLEventObj
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostEditorEventNotify(self, inEvtDispId, pIEventObj)
+
+proc AddDesigner*(
+    self: ptr IHTMLEditServices, pIDesigner: ptr IHTMLEditDesigner
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddDesigner(self, pIDesigner)
+
+proc RemoveDesigner*(
+    self: ptr IHTMLEditServices, pIDesigner: ptr IHTMLEditDesigner
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveDesigner(self, pIDesigner)
+
+proc GetSelectionServices*(
+    self: ptr IHTMLEditServices,
+    pIContainer: ptr IMarkupContainer,
+    ppSelSvc: ptr ptr ISelectionServices,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelectionServices(self, pIContainer, ppSelSvc)
+
+proc MoveToSelectionAnchor*(
+    self: ptr IHTMLEditServices, pIStartAnchor: ptr IMarkupPointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveToSelectionAnchor(self, pIStartAnchor)
+
+proc MoveToSelectionEnd*(
+    self: ptr IHTMLEditServices, pIEndAnchor: ptr IMarkupPointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveToSelectionEnd(self, pIEndAnchor)
+
+proc SelectRange*(
+    self: ptr IHTMLEditServices,
+    pStart: ptr IMarkupPointer,
+    pEnd: ptr IMarkupPointer,
+    eType: SELECTION_TYPE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SelectRange(self, pStart, pEnd, eType)
+
+proc MoveToSelectionAnchorEx*(
+    self: ptr IHTMLEditServices2, pIStartAnchor: ptr IDisplayPointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveToSelectionAnchorEx(self, pIStartAnchor)
+
+proc MoveToSelectionEndEx*(
+    self: ptr IHTMLEditServices2, pIEndAnchor: ptr IDisplayPointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveToSelectionEndEx(self, pIEndAnchor)
+
+proc FreezeVirtualCaretPos*(
+    self: ptr IHTMLEditServices2, fReCompute: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FreezeVirtualCaretPos(self, fReCompute)
+
+proc UnFreezeVirtualCaretPos*(
+    self: ptr IHTMLEditServices2, fReset: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnFreezeVirtualCaretPos(self, fReset)
+
+proc get_x*(self: ptr ILineInfo, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_x(self, p)
+
+proc get_baseLine*(self: ptr ILineInfo, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseLine(self, p)
+
+proc get_textDescent*(self: ptr ILineInfo, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textDescent(self, p)
+
+proc get_textHeight*(self: ptr ILineInfo, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textHeight(self, p)
+
+proc get_lineDirection*(self: ptr ILineInfo, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lineDirection(self, p)
+
+proc get_bold*(
+    self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_bold(self, p)
+
+proc get_italic*(
+    self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_italic(self, p)
+
+proc get_underline*(
+    self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_underline(self, p)
+
+proc get_overline*(
+    self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_overline(self, p)
+
+proc get_strikeOut*(
+    self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_strikeOut(self, p)
+
+proc get_subScript*(
+    self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_subScript(self, p)
+
+proc get_superScript*(
+    self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_superScript(self, p)
+
+proc get_explicitFace*(
+    self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_explicitFace(self, p)
+
+proc get_fontWeight*(
+    self: ptr IHTMLComputedStyle, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontWeight(self, p)
+
+proc get_fontSize*(
+    self: ptr IHTMLComputedStyle, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontSize(self, p)
+
+proc get_fontName*(
+    self: ptr IHTMLComputedStyle, p: ptr TCHAR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fontName(self, p)
+
+proc get_hasBgColor*(
+    self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hasBgColor(self, p)
+
+proc get_textColor*(
+    self: ptr IHTMLComputedStyle, p: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_textColor(self, p)
+
+proc get_backgroundColor*(
+    self: ptr IHTMLComputedStyle, p: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_backgroundColor(self, p)
+
+proc get_preFormatted*(
+    self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_preFormatted(self, p)
+
+proc get_direction*(
+    self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_direction(self, p)
+
+proc get_blockDirection*(
+    self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_blockDirection(self, p)
+
+proc get_OL*(
+    self: ptr IHTMLComputedStyle, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_OL(self, p)
+
+proc IsEqual*(
+    self: ptr IHTMLComputedStyle,
+    pComputedStyle: ptr IHTMLComputedStyle,
+    pfEqual: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsEqual(self, pComputedStyle, pfEqual)
+
+proc MoveToPoint*(
+    self: ptr IDisplayPointer,
+    ptPoint: POINT,
+    eCoordSystem: COORD_SYSTEM,
+    pElementContext: ptr IHTMLElement,
+    dwHitTestOptions: DWORD,
+    pdwHitTestResults: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveToPoint(
+      self, ptPoint, eCoordSystem, pElementContext, dwHitTestOptions, pdwHitTestResults
+    )
+
+proc MoveUnit*(
+    self: ptr IDisplayPointer, eMoveUnit: DISPLAY_MOVEUNIT, lXPos: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveUnit(self, eMoveUnit, lXPos)
+
+proc PositionMarkupPointer*(
+    self: ptr IDisplayPointer, pMarkupPointer: ptr IMarkupPointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PositionMarkupPointer(self, pMarkupPointer)
+
+proc MoveToPointer*(
+    self: ptr IDisplayPointer, pDispPointer: ptr IDisplayPointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveToPointer(self, pDispPointer)
+
+proc SetPointerGravity*(
+    self: ptr IDisplayPointer, eGravity: POINTER_GRAVITY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPointerGravity(self, eGravity)
+
+proc GetPointerGravity*(
+    self: ptr IDisplayPointer, peGravity: ptr POINTER_GRAVITY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPointerGravity(self, peGravity)
+
+proc SetDisplayGravity*(
+    self: ptr IDisplayPointer, eGravity: DISPLAY_GRAVITY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDisplayGravity(self, eGravity)
+
+proc GetDisplayGravity*(
+    self: ptr IDisplayPointer, peGravity: ptr DISPLAY_GRAVITY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDisplayGravity(self, peGravity)
+
+proc IsPositioned*(
+    self: ptr IDisplayPointer, pfPositioned: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsPositioned(self, pfPositioned)
+
+proc Unposition*(self: ptr IDisplayPointer): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unposition(self)
+
+proc IsEqualTo*(
+    self: ptr IDisplayPointer, pDispPointer: ptr IDisplayPointer, pfIsEqual: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsEqualTo(self, pDispPointer, pfIsEqual)
+
+proc IsLeftOf*(
+    self: ptr IDisplayPointer,
+    pDispPointer: ptr IDisplayPointer,
+    pfIsLeftOf: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsLeftOf(self, pDispPointer, pfIsLeftOf)
+
+proc IsRightOf*(
+    self: ptr IDisplayPointer,
+    pDispPointer: ptr IDisplayPointer,
+    pfIsRightOf: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsRightOf(self, pDispPointer, pfIsRightOf)
+
+proc IsAtBOL*(
+    self: ptr IDisplayPointer, pfBOL: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsAtBOL(self, pfBOL)
+
+proc MoveToMarkupPointer*(
+    self: ptr IDisplayPointer,
+    pPointer: ptr IMarkupPointer,
+    pDispLineContext: ptr IDisplayPointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveToMarkupPointer(self, pPointer, pDispLineContext)
+
+proc ScrollIntoView*(self: ptr IDisplayPointer): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ScrollIntoView(self)
+
+proc GetLineInfo*(
+    self: ptr IDisplayPointer, ppLineInfo: ptr ptr ILineInfo
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLineInfo(self, ppLineInfo)
+
+proc GetFlowElement*(
+    self: ptr IDisplayPointer, ppLayoutElement: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFlowElement(self, ppLayoutElement)
+
+proc QueryBreaks*(
+    self: ptr IDisplayPointer, pdwBreaks: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryBreaks(self, pdwBreaks)
+
+proc CreateDisplayPointer*(
+    self: ptr IDisplayServices, ppDispPointer: ptr ptr IDisplayPointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateDisplayPointer(self, ppDispPointer)
+
+proc TransformRect*(
+    self: ptr IDisplayServices,
+    pRect: ptr RECT,
+    eSource: COORD_SYSTEM,
+    eDestination: COORD_SYSTEM,
+    pIElement: ptr IHTMLElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TransformRect(self, pRect, eSource, eDestination, pIElement)
+
+proc TransformPoint*(
+    self: ptr IDisplayServices,
+    pPoint: ptr POINT,
+    eSource: COORD_SYSTEM,
+    eDestination: COORD_SYSTEM,
+    pIElement: ptr IHTMLElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TransformPoint(self, pPoint, eSource, eDestination, pIElement)
+
+proc GetCaret*(
+    self: ptr IDisplayServices, ppCaret: ptr ptr IHTMLCaret
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCaret(self, ppCaret)
+
+proc GetComputedStyle*(
+    self: ptr IDisplayServices,
+    pPointer: ptr IMarkupPointer,
+    ppComputedStyle: ptr ptr IHTMLComputedStyle,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetComputedStyle(self, pPointer, ppComputedStyle)
+
+proc ScrollRectIntoView*(
+    self: ptr IDisplayServices, pIElement: ptr IHTMLElement, rect: RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ScrollRectIntoView(self, pIElement, rect)
+
+proc HasFlowLayout*(
+    self: ptr IDisplayServices,
+    pIElement: ptr IHTMLElement,
+    pfHasFlowLayout: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HasFlowLayout(self, pIElement, pfHasFlowLayout)
+
+proc choosecolordlg*(
+    self: ptr IHtmlDlgSafeHelper, initColor: VARIANT, rgbColor: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.choosecolordlg(self, initColor, rgbColor)
+
+proc getCharset*(
+    self: ptr IHtmlDlgSafeHelper, fontName: BSTR, charset: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getCharset(self, fontName, charset)
+
+proc get_Fonts*(
+    self: ptr IHtmlDlgSafeHelper, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Fonts(self, p)
+
+proc get_BlockFormats*(
+    self: ptr IHtmlDlgSafeHelper, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_BlockFormats(self, p)
+
+proc get_NewEnum*(
+    self: ptr IBlockFormats, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_NewEnum(self, p)
+
+proc get_Count*(self: ptr IBlockFormats, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Count(self, p)
+
+proc Item*(
+    self: ptr IBlockFormats, pvarIndex: ptr VARIANT, pbstrBlockFormat: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Item(self, pvarIndex, pbstrBlockFormat)
+
+proc get_NewEnum*(
+    self: ptr IFontNames, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_NewEnum(self, p)
+
+proc get_Count*(self: ptr IFontNames, p: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Count(self, p)
+
+proc Item*(
+    self: ptr IFontNames, pvarIndex: ptr VARIANT, pbstrFontName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Item(self, pvarIndex, pbstrFontName)
+
+proc Write*(
+    self: ptr IDeveloperConsoleMessageReceiver,
+    source: LPCWSTR,
+    level: DEV_CONSOLE_MESSAGE_LEVEL,
+    messageId: int32,
+    messageText: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Write(self, source, level, messageId, messageText)
+
+proc WriteWithUrl*(
+    self: ptr IDeveloperConsoleMessageReceiver,
+    source: LPCWSTR,
+    level: DEV_CONSOLE_MESSAGE_LEVEL,
+    messageId: int32,
+    messageText: LPCWSTR,
+    fileUrl: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WriteWithUrl(self, source, level, messageId, messageText, fileUrl)
+
+proc WriteWithUrlAndLine*(
+    self: ptr IDeveloperConsoleMessageReceiver,
+    source: LPCWSTR,
+    level: DEV_CONSOLE_MESSAGE_LEVEL,
+    messageId: int32,
+    messageText: LPCWSTR,
+    fileUrl: LPCWSTR,
+    line: ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WriteWithUrlAndLine(
+      self, source, level, messageId, messageText, fileUrl, line
+    )
+
+proc WriteWithUrlLineAndColumn*(
+    self: ptr IDeveloperConsoleMessageReceiver,
+    source: LPCWSTR,
+    level: DEV_CONSOLE_MESSAGE_LEVEL,
+    messageId: int32,
+    messageText: LPCWSTR,
+    fileUrl: LPCWSTR,
+    line: ULONG,
+    column: ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WriteWithUrlLineAndColumn(
+      self, source, level, messageId, messageText, fileUrl, line, column
+    )
+
+proc RequestedCallbackTypes*(
+    self: ptr IDebugCallbackNotificationHandler, pCallbackMask: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RequestedCallbackTypes(self, pCallbackMask)
+
+proc BeforeDispatchEvent*(
+    self: ptr IDebugCallbackNotificationHandler, pEvent: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeforeDispatchEvent(self, pEvent)
+
+proc DispatchEventComplete*(
+    self: ptr IDebugCallbackNotificationHandler,
+    pEvent: ptr IUnknown,
+    propagationStatus: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DispatchEventComplete(self, pEvent, propagationStatus)
+
+proc BeforeInvokeDomCallback*(
+    self: ptr IDebugCallbackNotificationHandler,
+    pEvent: ptr IUnknown,
+    pCallback: ptr IScriptEventHandler,
+    eStage: DOM_EVENT_PHASE,
+    propagationStatus: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeforeInvokeDomCallback(
+      self, pEvent, pCallback, eStage, propagationStatus
+    )
+
+proc InvokeDomCallbackComplete*(
+    self: ptr IDebugCallbackNotificationHandler,
+    pEvent: ptr IUnknown,
+    pCallback: ptr IScriptEventHandler,
+    eStage: DOM_EVENT_PHASE,
+    propagationStatus: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvokeDomCallbackComplete(
+      self, pEvent, pCallback, eStage, propagationStatus
+    )
+
+proc BeforeInvokeCallback*(
+    self: ptr IDebugCallbackNotificationHandler,
+    eCallbackType: SCRIPT_TIMER_TYPE,
+    callbackCookie: DWORD,
+    pDispHandler: ptr IDispatch,
+    ullHandlerCookie: ULONGLONG,
+    functionName: BSTR,
+    line: UINT32,
+    column: UINT32,
+    cchLength: UINT32,
+    pDebugDocumentContext: ptr IUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeforeInvokeCallback(
+      self, eCallbackType, callbackCookie, pDispHandler, ullHandlerCookie, functionName,
+      line, column, cchLength, pDebugDocumentContext,
+    )
+
+proc InvokeCallbackComplete*(
+    self: ptr IDebugCallbackNotificationHandler,
+    eCallbackType: SCRIPT_TIMER_TYPE,
+    callbackCookie: DWORD,
+    pDispHandler: ptr IDispatch,
+    ullHandlerCookie: ULONGLONG,
+    functionName: BSTR,
+    line: UINT32,
+    column: UINT32,
+    cchLength: UINT32,
+    pDebugDocumentContext: ptr IUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvokeCallbackComplete(
+      self, eCallbackType, callbackCookie, pDispHandler, ullHandlerCookie, functionName,
+      line, column, cchLength, pDebugDocumentContext,
+    )
+
+proc FunctionName*(
+    self: ptr IScriptEventHandler, pbstrFunctionName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FunctionName(self, pbstrFunctionName)
+
+proc DebugDocumentContext*(
+    self: ptr IScriptEventHandler, ppDebugDocumentContext: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DebugDocumentContext(self, ppDebugDocumentContext)
+
+proc EventHandlerDispatch*(
+    self: ptr IScriptEventHandler, ppDispHandler: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EventHandlerDispatch(self, ppDispHandler)
+
+proc UsesCapture*(
+    self: ptr IScriptEventHandler, pfUsesCapture: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UsesCapture(self, pfUsesCapture)
+
+proc Cookie*(
+    self: ptr IScriptEventHandler, pullCookie: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Cookie(self, pullCookie)
+
+proc GetSourceInfo*(
+    self: ptr IScriptEventHandlerSourceInfo,
+    pbstrFunctionName: ptr BSTR,
+    line: ptr UINT32,
+    column: ptr UINT32,
+    cchLength: ptr UINT32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSourceInfo(self, pbstrFunctionName, line, column, cchLength)
+
+proc OnDOMEventListenerAdded*(
+    self: ptr IDOMEventRegistrationCallback,
+    pszEventType: LPCWSTR,
+    pHandler: ptr IScriptEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDOMEventListenerAdded(self, pszEventType, pHandler)
+
+proc OnDOMEventListenerRemoved*(
+    self: ptr IDOMEventRegistrationCallback, ullCookie: ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDOMEventListenerRemoved(self, ullCookie)
+
+proc GetRegisteredEventTypes*(
+    self: ptr IEventTarget2, ppEventTypeArray: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRegisteredEventTypes(self, ppEventTypeArray)
+
+proc GetListenersForType*(
+    self: ptr IEventTarget2,
+    pszEventType: LPCWSTR,
+    ppEventHandlerArray: ptr ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetListenersForType(self, pszEventType, ppEventHandlerArray)
+
+proc RegisterForDOMEventListeners*(
+    self: ptr IEventTarget2, pCallback: ptr IDOMEventRegistrationCallback
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterForDOMEventListeners(self, pCallback)
+
+proc UnregisterForDOMEventListeners*(
+    self: ptr IEventTarget2, pCallback: ptr IDOMEventRegistrationCallback
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnregisterForDOMEventListeners(self, pCallback)
+
+proc get_name*(self: ptr IHTMLNamespace, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, p)
+
+proc get_urn*(self: ptr IHTMLNamespace, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_urn(self, p)
+
+proc get_tagNames*(
+    self: ptr IHTMLNamespace, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tagNames(self, p)
+
+proc get_readyState*(
+    self: ptr IHTMLNamespace, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, p)
+
+proc put_onreadystatechange*(
+    self: ptr IHTMLNamespace, v: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreadystatechange(self, v)
+
+proc get_onreadystatechange*(
+    self: ptr IHTMLNamespace, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_onreadystatechange(self, p)
+
+proc doImport*(
+    self: ptr IHTMLNamespace, bstrImplementationUrl: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.doImport(self, bstrImplementationUrl)
+
+proc attachEvent*(
+    self: ptr IHTMLNamespace,
+    event: BSTR,
+    pDisp: ptr IDispatch,
+    pfResult: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.attachEvent(self, event, pDisp, pfResult)
+
+proc detachEvent*(
+    self: ptr IHTMLNamespace, event: BSTR, pDisp: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.detachEvent(self, event, pDisp)
+
+proc get_length*(
+    self: ptr IHTMLNamespaceCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc item*(
+    self: ptr IHTMLNamespaceCollection, index: VARIANT, ppNamespace: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, ppNamespace)
+
+proc add*(
+    self: ptr IHTMLNamespaceCollection,
+    bstrNamespace: BSTR,
+    bstrUrn: BSTR,
+    implementationUrl: VARIANT,
+    ppNamespace: ptr ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.add(self, bstrNamespace, bstrUrn, implementationUrl, ppNamespace)
+
+proc Draw*(
+    self: ptr IHTMLPainter,
+    rcBounds: RECT,
+    rcUpdate: RECT,
+    lDrawFlags: LONG,
+    hdc: HDC,
+    pvDrawObject: LPVOID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Draw(self, rcBounds, rcUpdate, lDrawFlags, hdc, pvDrawObject)
+
+proc OnResize*(self: ptr IHTMLPainter, size: SIZE): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnResize(self, size)
+
+proc GetPainterInfo*(
+    self: ptr IHTMLPainter, pInfo: ptr HTML_PAINTER_INFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPainterInfo(self, pInfo)
+
+proc HitTestPoint*(
+    self: ptr IHTMLPainter, pt: POINT, pbHit: ptr WINBOOL, plPartID: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HitTestPoint(self, pt, pbHit, plPartID)
+
+proc GetEventInfoFlags*(
+    self: ptr IHTMLPainterEventInfo, plEventInfoFlags: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEventInfoFlags(self, plEventInfoFlags)
+
+proc GetEventTarget*(
+    self: ptr IHTMLPainterEventInfo, ppElement: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEventTarget(self, ppElement)
+
+proc SetCursor*(
+    self: ptr IHTMLPainterEventInfo, lPartID: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCursor(self, lPartID)
+
+proc StringFromPartID*(
+    self: ptr IHTMLPainterEventInfo, lPartID: LONG, pbstrPart: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StringFromPartID(self, lPartID, pbstrPart)
+
+proc OnMove*(
+    self: ptr IHTMLPainterOverlay, rcDevice: RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnMove(self, rcDevice)
+
+proc InvalidatePainterInfo*(self: ptr IHTMLPaintSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvalidatePainterInfo(self)
+
+proc InvalidateRect*(
+    self: ptr IHTMLPaintSite, prcInvalid: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvalidateRect(self, prcInvalid)
+
+proc InvalidateRegion*(
+    self: ptr IHTMLPaintSite, rgnInvalid: HRGN
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvalidateRegion(self, rgnInvalid)
+
+proc GetDrawInfo*(
+    self: ptr IHTMLPaintSite, lFlags: LONG, pDrawInfo: ptr HTML_PAINT_DRAW_INFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDrawInfo(self, lFlags, pDrawInfo)
+
+proc TransformGlobalToLocal*(
+    self: ptr IHTMLPaintSite, ptGlobal: POINT, pptLocal: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TransformGlobalToLocal(self, ptGlobal, pptLocal)
+
+proc TransformLocalToGlobal*(
+    self: ptr IHTMLPaintSite, ptLocal: POINT, pptGlobal: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TransformLocalToGlobal(self, ptLocal, pptGlobal)
+
+proc GetHitTestCookie*(
+    self: ptr IHTMLPaintSite, plCookie: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHitTestCookie(self, plCookie)
+
+proc get_length*(
+    self: ptr IHTMLIPrintCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IHTMLIPrintCollection, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, p)
+
+proc item*(
+    self: ptr IHTMLIPrintCollection, index: LONG, ppIPrint: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, index, ppIPrint)
+
+proc Reset*(self: ptr IEnumPrivacyRecords): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc GetSize*(
+    self: ptr IEnumPrivacyRecords, pSize: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSize(self, pSize)
+
+proc GetPrivacyImpacted*(
+    self: ptr IEnumPrivacyRecords, pState: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPrivacyImpacted(self, pState)
+
+proc Next*(
+    self: ptr IEnumPrivacyRecords,
+    pbstrUrl: ptr BSTR,
+    pbstrPolicyRef: ptr BSTR,
+    pdwReserved: ptr LONG,
+    pdwPrivacyFlags: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, pbstrUrl, pbstrPolicyRef, pdwReserved, pdwPrivacyFlags)
+
+proc GetCount*(
+    self: ptr IWPCBlockedUrls, pdwCount: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCount(self, pdwCount)
+
+proc GetUrl*(
+    self: ptr IWPCBlockedUrls, dwIdx: DWORD, pbstrUrl: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUrl(self, dwIdx, pbstrUrl)
+
+proc get_Attr*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Attr(self, p)
+
+proc get_BehaviorUrnsCollection*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_BehaviorUrnsCollection(self, p)
+
+proc get_BookmarkCollection*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_BookmarkCollection(self, p)
+
+proc get_CompatibleInfo*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CompatibleInfo(self, p)
+
+proc get_CompatibleInfoCollection*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CompatibleInfoCollection(self, p)
+
+proc get_ControlRangeCollection*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ControlRangeCollection(self, p)
+
+proc get_CSSCurrentStyleDeclaration*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CSSCurrentStyleDeclaration(self, p)
+
+proc get_CSSRuleList*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CSSRuleList(self, p)
+
+proc get_CSSRuleStyleDeclaration*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CSSRuleStyleDeclaration(self, p)
+
+proc get_CSSStyleDeclaration*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CSSStyleDeclaration(self, p)
+
+proc get_CSSStyleRule*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CSSStyleRule(self, p)
+
+proc get_CSSStyleSheet*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CSSStyleSheet(self, p)
+
+proc get_DataTransfer*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DataTransfer(self, p)
+
+proc get_DOMImplementation*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DOMImplementation(self, p)
+
+proc get_Element*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Element(self, p)
+
+proc get_Event*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Event(self, p)
+
+proc get_History*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_History(self, p)
+
+proc get_HTCElementBehaviorDefaults*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTCElementBehaviorDefaults(self, p)
+
+proc get_HTMLAnchorElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLAnchorElement(self, p)
+
+proc get_HTMLAreaElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLAreaElement(self, p)
+
+proc get_HTMLAreasCollection*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLAreasCollection(self, p)
+
+proc get_HTMLBaseElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLBaseElement(self, p)
+
+proc get_HTMLBaseFontElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLBaseFontElement(self, p)
+
+proc get_HTMLBGSoundElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLBGSoundElement(self, p)
+
+proc get_HTMLBlockElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLBlockElement(self, p)
+
+proc get_HTMLBodyElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLBodyElement(self, p)
+
+proc get_HTMLBRElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLBRElement(self, p)
+
+proc get_HTMLButtonElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLButtonElement(self, p)
+
+proc get_HTMLCollection*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLCollection(self, p)
+
+proc get_HTMLCommentElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLCommentElement(self, p)
+
+proc get_HTMLDDElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLDDElement(self, p)
+
+proc get_HTMLDivElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLDivElement(self, p)
+
+proc get_HTMLDocument*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLDocument(self, p)
+
+proc get_HTMLDListElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLDListElement(self, p)
+
+proc get_HTMLDTElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLDTElement(self, p)
+
+proc get_HTMLEmbedElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLEmbedElement(self, p)
+
+proc get_HTMLFieldSetElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLFieldSetElement(self, p)
+
+proc get_HTMLFontElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLFontElement(self, p)
+
+proc get_HTMLFormElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLFormElement(self, p)
+
+proc get_HTMLFrameElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLFrameElement(self, p)
+
+proc get_HTMLFrameSetElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLFrameSetElement(self, p)
+
+proc get_HTMLGenericElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLGenericElement(self, p)
+
+proc get_HTMLHeadElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLHeadElement(self, p)
+
+proc get_HTMLHeadingElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLHeadingElement(self, p)
+
+proc get_HTMLHRElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLHRElement(self, p)
+
+proc get_HTMLHtmlElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLHtmlElement(self, p)
+
+proc get_HTMLIFrameElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLIFrameElement(self, p)
+
+proc get_HTMLImageElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLImageElement(self, p)
+
+proc get_HTMLInputElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLInputElement(self, p)
+
+proc get_HTMLIsIndexElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLIsIndexElement(self, p)
+
+proc get_HTMLLabelElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLLabelElement(self, p)
+
+proc get_HTMLLegendElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLLegendElement(self, p)
+
+proc get_HTMLLIElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLLIElement(self, p)
+
+proc get_HTMLLinkElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLLinkElement(self, p)
+
+proc get_HTMLMapElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLMapElement(self, p)
+
+proc get_HTMLMarqueeElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLMarqueeElement(self, p)
+
+proc get_HTMLMetaElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLMetaElement(self, p)
+
+proc get_HTMLModelessDialog*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLModelessDialog(self, p)
+
+proc get_HTMLNamespaceInfo*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLNamespaceInfo(self, p)
+
+proc get_HTMLNamespaceInfoCollection*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLNamespaceInfoCollection(self, p)
+
+proc get_HTMLNextIdElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLNextIdElement(self, p)
+
+proc get_HTMLNoShowElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLNoShowElement(self, p)
+
+proc get_HTMLObjectElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLObjectElement(self, p)
+
+proc get_HTMLOListElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLOListElement(self, p)
+
+proc get_HTMLOptionElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLOptionElement(self, p)
+
+proc get_HTMLParagraphElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLParagraphElement(self, p)
+
+proc get_HTMLParamElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLParamElement(self, p)
+
+proc get_HTMLPhraseElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLPhraseElement(self, p)
+
+proc get_HTMLPluginsCollection*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLPluginsCollection(self, p)
+
+proc get_HTMLPopup*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLPopup(self, p)
+
+proc get_HTMLScriptElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLScriptElement(self, p)
+
+proc get_HTMLSelectElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLSelectElement(self, p)
+
+proc get_HTMLSpanElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLSpanElement(self, p)
+
+proc get_HTMLStyleElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLStyleElement(self, p)
+
+proc get_HTMLTableCaptionElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLTableCaptionElement(self, p)
+
+proc get_HTMLTableCellElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLTableCellElement(self, p)
+
+proc get_HTMLTableColElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLTableColElement(self, p)
+
+proc get_HTMLTableElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLTableElement(self, p)
+
+proc get_HTMLTableRowElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLTableRowElement(self, p)
+
+proc get_HTMLTableSectionElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLTableSectionElement(self, p)
+
+proc get_HTMLTextAreaElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLTextAreaElement(self, p)
+
+proc get_HTMLTextElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLTextElement(self, p)
+
+proc get_HTMLTitleElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLTitleElement(self, p)
+
+proc get_HTMLUListElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLUListElement(self, p)
+
+proc get_HTMLUnknownElement*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HTMLUnknownElement(self, p)
+
+proc get_Image*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Image(self, p)
+
+proc get_Location*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Location(self, p)
+
+proc get_NamedNodeMap*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_NamedNodeMap(self, p)
+
+proc get_Navigator*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Navigator(self, p)
+
+proc get_NodeList*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_NodeList(self, p)
+
+proc get_Option*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Option(self, p)
+
+proc get_Screen*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Screen(self, p)
+
+proc get_Selection*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Selection(self, p)
+
+proc get_StaticNodeList*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_StaticNodeList(self, p)
+
+proc get_Storage*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Storage(self, p)
+
+proc get_StyleSheetList*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_StyleSheetList(self, p)
+
+proc get_StyleSheetPage*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_StyleSheetPage(self, p)
+
+proc get_StyleSheetPageList*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_StyleSheetPageList(self, p)
+
+proc get_Text*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Text(self, p)
+
+proc get_TextRange*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TextRange(self, p)
+
+proc get_TextRangeCollection*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TextRangeCollection(self, p)
+
+proc get_TextRectangle*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TextRectangle(self, p)
+
+proc get_TextRectangleList*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TextRectangleList(self, p)
+
+proc get_Window*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Window(self, p)
+
+proc get_XDomainRequest*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_XDomainRequest(self, p)
+
+proc get_XMLHttpRequest*(
+    self: ptr IHTMLDOMConstructorCollection, p: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_XMLHttpRequest(self, p)
+
+proc put_dialogTop*(self: ptr IHTMLDialog, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dialogTop(self, v)
+
+proc get_dialogTop*(self: ptr IHTMLDialog, p: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dialogTop(self, p)
+
+proc put_dialogLeft*(self: ptr IHTMLDialog, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dialogLeft(self, v)
+
+proc get_dialogLeft*(
+    self: ptr IHTMLDialog, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dialogLeft(self, p)
+
+proc put_dialogWidth*(self: ptr IHTMLDialog, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dialogWidth(self, v)
+
+proc get_dialogWidth*(
+    self: ptr IHTMLDialog, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dialogWidth(self, p)
+
+proc put_dialogHeight*(self: ptr IHTMLDialog, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dialogHeight(self, v)
+
+proc get_dialogHeight*(
+    self: ptr IHTMLDialog, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dialogHeight(self, p)
+
+proc get_dialogArguments*(
+    self: ptr IHTMLDialog, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dialogArguments(self, p)
+
+proc get_menuArguments*(
+    self: ptr IHTMLDialog, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_menuArguments(self, p)
+
+proc put_returnValue*(self: ptr IHTMLDialog, v: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_returnValue(self, v)
+
+proc get_returnValue*(
+    self: ptr IHTMLDialog, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_returnValue(self, p)
+
+proc close*(self: ptr IHTMLDialog): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.close(self)
+
+proc toString*(self: ptr IHTMLDialog, String: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.toString(self, String)
+
+proc put_status*(self: ptr IHTMLDialog2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_status(self, v)
+
+proc get_status*(self: ptr IHTMLDialog2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_status(self, p)
+
+proc put_resizable*(self: ptr IHTMLDialog2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_resizable(self, v)
+
+proc get_resizable*(self: ptr IHTMLDialog2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_resizable(self, p)
+
+proc put_unadorned*(self: ptr IHTMLDialog3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_unadorned(self, v)
+
+proc get_unadorned*(self: ptr IHTMLDialog3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_unadorned(self, p)
+
+proc put_dialogHide*(self: ptr IHTMLDialog3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dialogHide(self, v)
+
+proc get_dialogHide*(self: ptr IHTMLDialog3, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dialogHide(self, p)
+
+proc get_parameters*(
+    self: ptr IHTMLModelessInit, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parameters(self, p)
+
+proc get_optionString*(
+    self: ptr IHTMLModelessInit, p: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_optionString(self, p)
+
+proc get_moniker*(
+    self: ptr IHTMLModelessInit, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_moniker(self, p)
+
+proc get_document*(
+    self: ptr IHTMLModelessInit, p: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_document(self, p)
+
+proc show*(
+    self: ptr IHTMLPopup, x: LONG, y: LONG, w: LONG, h: LONG, pElement: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.show(self, x, y, w, h, pElement)
+
+proc hide*(self: ptr IHTMLPopup): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hide(self)
+
+proc get_document*(
+    self: ptr IHTMLPopup, p: ptr ptr IHTMLDocument
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_document(self, p)
+
+proc get_isOpen*(
+    self: ptr IHTMLPopup, p: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_isOpen(self, p)
+
+proc put_applicationName*(
+    self: ptr IHTMLAppBehavior, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_applicationName(self, v)
+
+proc get_applicationName*(
+    self: ptr IHTMLAppBehavior, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_applicationName(self, p)
+
+proc put_version*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_version(self, v)
+
+proc get_version*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_version(self, p)
+
+proc put_icon*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_icon(self, v)
+
+proc get_icon*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_icon(self, p)
+
+proc put_singleInstance*(
+    self: ptr IHTMLAppBehavior, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_singleInstance(self, v)
+
+proc get_singleInstance*(
+    self: ptr IHTMLAppBehavior, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_singleInstance(self, p)
+
+proc put_minimizeButton*(
+    self: ptr IHTMLAppBehavior, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_minimizeButton(self, v)
+
+proc get_minimizeButton*(
+    self: ptr IHTMLAppBehavior, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_minimizeButton(self, p)
+
+proc put_maximizeButton*(
+    self: ptr IHTMLAppBehavior, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_maximizeButton(self, v)
+
+proc get_maximizeButton*(
+    self: ptr IHTMLAppBehavior, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_maximizeButton(self, p)
+
+proc put_border*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_border(self, v)
+
+proc get_border*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_border(self, p)
+
+proc put_borderStyle*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_borderStyle(self, v)
+
+proc get_borderStyle*(
+    self: ptr IHTMLAppBehavior, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_borderStyle(self, p)
+
+proc put_sysMenu*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_sysMenu(self, v)
+
+proc get_sysMenu*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_sysMenu(self, p)
+
+proc put_caption*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_caption(self, v)
+
+proc get_caption*(self: ptr IHTMLAppBehavior, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_caption(self, p)
+
+proc put_windowState*(self: ptr IHTMLAppBehavior, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_windowState(self, v)
+
+proc get_windowState*(
+    self: ptr IHTMLAppBehavior, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_windowState(self, p)
+
+proc put_showInTaskBar*(
+    self: ptr IHTMLAppBehavior, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_showInTaskBar(self, v)
+
+proc get_showInTaskBar*(
+    self: ptr IHTMLAppBehavior, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_showInTaskBar(self, p)
+
+proc get_commandLine*(
+    self: ptr IHTMLAppBehavior, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_commandLine(self, p)
+
+proc put_contextMenu*(
+    self: ptr IHTMLAppBehavior2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_contextMenu(self, v)
+
+proc get_contextMenu*(
+    self: ptr IHTMLAppBehavior2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_contextMenu(self, p)
+
+proc put_innerBorder*(
+    self: ptr IHTMLAppBehavior2, v: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_innerBorder(self, v)
+
+proc get_innerBorder*(
+    self: ptr IHTMLAppBehavior2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_innerBorder(self, p)
+
+proc put_scroll*(self: ptr IHTMLAppBehavior2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scroll(self, v)
+
+proc get_scroll*(self: ptr IHTMLAppBehavior2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scroll(self, p)
+
+proc put_scrollFlat*(self: ptr IHTMLAppBehavior2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_scrollFlat(self, v)
+
+proc get_scrollFlat*(
+    self: ptr IHTMLAppBehavior2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_scrollFlat(self, p)
+
+proc put_selection*(self: ptr IHTMLAppBehavior2, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_selection(self, v)
+
+proc get_selection*(
+    self: ptr IHTMLAppBehavior2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_selection(self, p)
+
+proc put_navigable*(self: ptr IHTMLAppBehavior3, v: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_navigable(self, v)
+
+proc get_navigable*(
+    self: ptr IHTMLAppBehavior3, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_navigable(self, p)
+
+proc FindBehavior*(
+    self: ptr IElementBehaviorFactory,
+    bstrBehavior: BSTR,
+    bstrBehaviorUrl: BSTR,
+    pSite: ptr IElementBehaviorSite,
+    ppBehavior: ptr ptr IElementBehavior,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindBehavior(self, bstrBehavior, bstrBehaviorUrl, pSite, ppBehavior)
+
+proc AddTag*(
+    self: ptr IElementNamespace, bstrTagName: BSTR, lFlags: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddTag(self, bstrTagName, lFlags)
+
+proc AddNamespace*(
+    self: ptr IElementNamespaceTable,
+    bstrNamespace: BSTR,
+    bstrUrn: BSTR,
+    lFlags: LONG,
+    pvarFactory: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddNamespace(self, bstrNamespace, bstrUrn, lFlags, pvarFactory)
+
+proc Create*(
+    self: ptr IElementNamespaceFactory, pNamespace: ptr IElementNamespace
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Create(self, pNamespace)
+
+proc CreateWithImplementation*(
+    self: ptr IElementNamespaceFactory2,
+    pNamespace: ptr IElementNamespace,
+    bstrImplementation: BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateWithImplementation(self, pNamespace, bstrImplementation)
+
+proc Resolve*(
+    self: ptr IElementNamespaceFactoryCallback,
+    bstrNamespace: BSTR,
+    bstrTagName: BSTR,
+    bstrAttrs: BSTR,
+    pNamespace: ptr IElementNamespace,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Resolve(self, bstrNamespace, bstrTagName, bstrAttrs, pNamespace)
+
+proc Init*(
+    self: ptr IElementBehavior, pBehaviorSite: ptr IElementBehaviorSite
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Init(self, pBehaviorSite)
+
+proc Notify*(
+    self: ptr IElementBehavior, lEvent: LONG, pVar: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Notify(self, lEvent, pVar)
+
+proc Detach*(self: ptr IElementBehavior): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Detach(self)
+
+proc GetElement*(
+    self: ptr IElementBehaviorSite, ppElement: ptr ptr IHTMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetElement(self, ppElement)
+
+proc RegisterNotification*(
+    self: ptr IElementBehaviorSite, lEvent: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterNotification(self, lEvent)
+
+proc RegisterEvent*(
+    self: ptr IElementBehaviorSiteOM,
+    pchEvent: LPOLESTR,
+    lFlags: LONG,
+    plCookie: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterEvent(self, pchEvent, lFlags, plCookie)
+
+proc GetEventCookie*(
+    self: ptr IElementBehaviorSiteOM, pchEvent: LPOLESTR, plCookie: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEventCookie(self, pchEvent, plCookie)
+
+proc FireEvent*(
+    self: ptr IElementBehaviorSiteOM, lCookie: LONG, pEventObject: ptr IHTMLEventObj
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FireEvent(self, lCookie, pEventObject)
+
+proc CreateEventObject*(
+    self: ptr IElementBehaviorSiteOM, ppEventObject: ptr ptr IHTMLEventObj
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateEventObject(self, ppEventObject)
+
+proc RegisterName*(
+    self: ptr IElementBehaviorSiteOM, pchName: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterName(self, pchName)
+
+proc RegisterUrn*(
+    self: ptr IElementBehaviorSiteOM, pchUrn: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterUrn(self, pchUrn)
+
+proc GetDefaults*(
+    self: ptr IElementBehaviorSiteOM2, ppDefaults: ptr ptr IHTMLElementDefaults
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaults(self, ppDefaults)
+
+proc Draw*(
+    self: ptr IElementBehaviorRender,
+    hdc: HDC,
+    lLayer: LONG,
+    pRect: ptr RECT,
+    pReserved: ptr IUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Draw(self, hdc, lLayer, pRect, pReserved)
+
+proc GetRenderInfo*(
+    self: ptr IElementBehaviorRender, plRenderInfo: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRenderInfo(self, plRenderInfo)
+
+proc HitTestPoint*(
+    self: ptr IElementBehaviorRender,
+    pPoint: ptr POINT,
+    pReserved: ptr IUnknown,
+    pbHit: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HitTestPoint(self, pPoint, pReserved, pbHit)
+
+proc Invalidate*(
+    self: ptr IElementBehaviorSiteRender, pRect: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Invalidate(self, pRect)
+
+proc InvalidateRenderInfo*(
+    self: ptr IElementBehaviorSiteRender
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvalidateRenderInfo(self)
+
+proc InvalidateStyle*(
+    self: ptr IElementBehaviorSiteRender
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvalidateStyle(self)
+
+proc GetCategory*(
+    self: ptr IElementBehaviorCategory, ppchCategory: ptr LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCategory(self, ppchCategory)
+
+proc GetRelatedBehaviors*(
+    self: ptr IElementBehaviorSiteCategory,
+    lDirection: LONG,
+    pchCategory: LPOLESTR,
+    ppEnumerator: ptr ptr IEnumUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRelatedBehaviors(self, lDirection, pchCategory, ppEnumerator)
+
+proc GetSubmitInfo*(
+    self: ptr IElementBehaviorSubmit, pSubmitData: ptr IHTMLSubmitData
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSubmitInfo(self, pSubmitData)
+
+proc Reset*(self: ptr IElementBehaviorSubmit): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc GetFocusRect*(
+    self: ptr IElementBehaviorFocus, pRect: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFocusRect(self, pRect)
+
+proc GetSize*(
+    self: ptr IElementBehaviorLayout,
+    dwFlags: LONG,
+    sizeContent: SIZE,
+    pptTranslateBy: ptr POINT,
+    pptTopLeft: ptr POINT,
+    psizeProposed: ptr SIZE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSize(
+      self, dwFlags, sizeContent, pptTranslateBy, pptTopLeft, psizeProposed
+    )
+
+proc GetLayoutInfo*(
+    self: ptr IElementBehaviorLayout, plLayoutInfo: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLayoutInfo(self, plLayoutInfo)
+
+proc GetPosition*(
+    self: ptr IElementBehaviorLayout, lFlags: LONG, pptTopLeft: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPosition(self, lFlags, pptTopLeft)
+
+proc MapSize*(
+    self: ptr IElementBehaviorLayout, psizeIn: ptr SIZE, prcOut: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MapSize(self, psizeIn, prcOut)
+
+proc GetTextDescent*(
+    self: ptr IElementBehaviorLayout2, plDescent: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTextDescent(self, plDescent)
+
+proc InvalidateLayoutInfo*(
+    self: ptr IElementBehaviorSiteLayout
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvalidateLayoutInfo(self)
+
+proc InvalidateSize*(self: ptr IElementBehaviorSiteLayout): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvalidateSize(self)
+
+proc GetMediaResolution*(
+    self: ptr IElementBehaviorSiteLayout, psizeResolution: ptr SIZE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMediaResolution(self, psizeResolution)
+
+proc GetFontInfo*(
+    self: ptr IElementBehaviorSiteLayout2, plf: ptr LOGFONTW
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFontInfo(self, plf)
+
+proc PopulateNamespaceTable*(self: ptr IHostBehaviorInit): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PopulateNamespaceTable(self)
+
+proc CreateSurfacePresenter*(
+    self: ptr IViewObjectPresentSite,
+    pDevice: ptr IUnknown,
+    width: UINT,
+    height: UINT,
+    backBufferCount: UINT,
+    format: DXGI_FORMAT,
+    mode: VIEW_OBJECT_ALPHA_MODE,
+    ppQueue: ptr ptr ISurfacePresenter,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateSurfacePresenter(
+      self, pDevice, width, height, backBufferCount, format, mode, ppQueue
+    )
+
+proc IsHardwareComposition*(
+    self: ptr IViewObjectPresentSite, pIsHardwareComposition: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsHardwareComposition(self, pIsHardwareComposition)
+
+proc SetCompositionMode*(
+    self: ptr IViewObjectPresentSite, mode: VIEW_OBJECT_COMPOSITION_MODE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCompositionMode(self, mode)
+
+proc Present*(
+    self: ptr ISurfacePresenter, uBuffer: UINT, pDirty: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Present(self, uBuffer, pDirty)
+
+proc GetBuffer*(
+    self: ptr ISurfacePresenter,
+    backBufferIndex: UINT,
+    riid: REFIID,
+    ppBuffer: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBuffer(self, backBufferIndex, riid, ppBuffer)
+
+proc IsCurrent*(
+    self: ptr ISurfacePresenter, pIsCurrent: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsCurrent(self, pIsCurrent)
+
+proc GetBufferPointer*(
+    self: ptr ICanvasPixelArrayData, ppBuffer: ptr ptr BYTE, pBufferLength: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBufferPointer(self, ppBuffer, pBufferLength)
+
+proc GetPrintBitmap*(
+    self: ptr IViewObjectPrint, ppPrintBitmap: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPrintBitmap(self, ppPrintBitmap)
+
+proc RequestFrame*(self: ptr IViewObjectPresentNotifySite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RequestFrame(self)
+
+proc OnPreRender*(self: ptr IViewObjectPresentNotify): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnPreRender(self)
+
+proc EvaluateUrl*(
+    self: ptr ITrackingProtection, bstrUrl: BSTR, pfAllowed: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EvaluateUrl(self, bstrUrl, pfAllowed)
+
+proc GetEnabled*(
+    self: ptr ITrackingProtection, pfEnabled: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEnabled(self, pfEnabled)
+
+proc ShowHTMLDialog*(
+    self: ptr IHostDialogHelper,
+    hwndParent: HWND,
+    pMk: ptr IMoniker,
+    pvarArgIn: ptr VARIANT,
+    pchOptions: ptr WCHAR,
+    pvarArgOut: ptr VARIANT,
+    punkHost: ptr IUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowHTMLDialog(
+      self, hwndParent, pMk, pvarArgIn, pchOptions, pvarArgOut, punkHost
+    )
+
+proc ShowContextMenu*(
+    self: ptr IDocHostUIHandler,
+    dwID: DWORD,
+    ppt: ptr POINT,
+    pcmdtReserved: ptr IUnknown,
+    pdispReserved: ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowContextMenu(self, dwID, ppt, pcmdtReserved, pdispReserved)
+
+proc GetHostInfo*(
+    self: ptr IDocHostUIHandler, pInfo: ptr DOCHOSTUIINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHostInfo(self, pInfo)
+
+proc ShowUI*(
+    self: ptr IDocHostUIHandler,
+    dwID: DWORD,
+    pActiveObject: ptr IOleInPlaceActiveObject,
+    pCommandTarget: ptr IOleCommandTarget,
+    pFrame: ptr IOleInPlaceFrame,
+    pDoc: ptr IOleInPlaceUIWindow,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowUI(self, dwID, pActiveObject, pCommandTarget, pFrame, pDoc)
+
+proc HideUI*(self: ptr IDocHostUIHandler): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HideUI(self)
+
+proc UpdateUI*(self: ptr IDocHostUIHandler): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UpdateUI(self)
+
+proc EnableModeless*(
+    self: ptr IDocHostUIHandler, fEnable: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnableModeless(self, fEnable)
+
+proc OnDocWindowActivate*(
+    self: ptr IDocHostUIHandler, fActivate: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDocWindowActivate(self, fActivate)
+
+proc OnFrameWindowActivate*(
+    self: ptr IDocHostUIHandler, fActivate: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnFrameWindowActivate(self, fActivate)
+
+proc ResizeBorder*(
+    self: ptr IDocHostUIHandler,
+    prcBorder: LPCRECT,
+    pUIWindow: ptr IOleInPlaceUIWindow,
+    fRameWindow: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResizeBorder(self, prcBorder, pUIWindow, fRameWindow)
+
+proc TranslateAccelerator*(
+    self: ptr IDocHostUIHandler, lpMsg: LPMSG, pguidCmdGroup: ptr GUID, nCmdID: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateAccelerator(self, lpMsg, pguidCmdGroup, nCmdID)
+
+proc GetOptionKeyPath*(
+    self: ptr IDocHostUIHandler, pchKey: ptr LPOLESTR, dw: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOptionKeyPath(self, pchKey, dw)
+
+proc GetDropTarget*(
+    self: ptr IDocHostUIHandler,
+    pDropTarget: ptr IDropTarget,
+    ppDropTarget: ptr ptr IDropTarget,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDropTarget(self, pDropTarget, ppDropTarget)
+
+proc GetExternal*(
+    self: ptr IDocHostUIHandler, ppDispatch: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetExternal(self, ppDispatch)
+
+proc TranslateUrl*(
+    self: ptr IDocHostUIHandler,
+    dwTranslate: DWORD,
+    pchURLIn: LPWSTR,
+    ppchURLOut: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateUrl(self, dwTranslate, pchURLIn, ppchURLOut)
+
+proc FilterDataObject*(
+    self: ptr IDocHostUIHandler, pDO: ptr IDataObject, ppDORet: ptr ptr IDataObject
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FilterDataObject(self, pDO, ppDORet)
+
+proc GetOverrideKeyPath*(
+    self: ptr IDocHostUIHandler2, pchKey: ptr LPOLESTR, dw: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOverrideKeyPath(self, pchKey, dw)
+
+proc SetUIHandler*(
+    self: ptr ICustomDoc, pUIHandler: ptr IDocHostUIHandler
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetUIHandler(self, pUIHandler)
+
+proc ShowMessage*(
+    self: ptr IDocHostShowUI,
+    hwnd: HWND,
+    lpstrText: LPOLESTR,
+    lpstrCaption: LPOLESTR,
+    dwType: DWORD,
+    lpstrHelpFile: LPOLESTR,
+    dwHelpContext: DWORD,
+    plResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowMessage(
+      self, hwnd, lpstrText, lpstrCaption, dwType, lpstrHelpFile, dwHelpContext,
+      plResult,
+    )
+
+proc ShowHelp*(
+    self: ptr IDocHostShowUI,
+    hwnd: HWND,
+    pszHelpFile: LPOLESTR,
+    uCommand: UINT,
+    dwData: DWORD,
+    ptMouse: POINT,
+    pDispatchObjectHit: ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowHelp(
+      self, hwnd, pszHelpFile, uCommand, dwData, ptMouse, pDispatchObjectHit
+    )
+
+proc CreateInstanceWithContext*(
+    self: ptr IClassFactoryEx,
+    punkContext: ptr IUnknown,
+    punkOuter: ptr IUnknown,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstanceWithContext(self, punkContext, punkOuter, riid, ppv)
+
+proc moveTo*(
+    self: ptr IHTMLOMWindowServices, x: LONG, y: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.moveTo(self, x, y)
+
+proc moveBy*(
+    self: ptr IHTMLOMWindowServices, x: LONG, y: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.moveBy(self, x, y)
+
+proc resizeTo*(
+    self: ptr IHTMLOMWindowServices, x: LONG, y: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.resizeTo(self, x, y)
+
+proc resizeBy*(
+    self: ptr IHTMLOMWindowServices, x: LONG, y: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.resizeBy(self, x, y)
+
+converter winimConverterIDispatchExToIDispatch*(x: ptr IDispatchEx): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDispatchExToIUnknown*(x: ptr IDispatchEx): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDispErrorToIUnknown*(x: ptr IDispError): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIVariantChangeTypeToIUnknown*(
+    x: ptr IVariantChangeType
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectIdentityToIUnknown*(
+    x: ptr IObjectIdentity
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICanHandleExceptionToIUnknown*(
+    x: ptr ICanHandleException
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIProvideRuntimeContextToIUnknown*(
+    x: ptr IProvideRuntimeContext
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFiltersCollectionToIDispatch*(
+    x: ptr IHTMLFiltersCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFiltersCollectionToIUnknown*(
+    x: ptr IHTMLFiltersCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIIE70DispatchExToIDispatchEx*(
+    x: ptr IIE70DispatchEx
+): ptr IDispatchEx =
+  cast[ptr IDispatchEx](x)
+
+converter winimConverterIIE70DispatchExToIDispatch*(
+    x: ptr IIE70DispatchEx
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIIE70DispatchExToIUnknown*(
+    x: ptr IIE70DispatchEx
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIIE80DispatchExToIDispatchEx*(
+    x: ptr IIE80DispatchEx
+): ptr IDispatchEx =
+  cast[ptr IDispatchEx](x)
+
+converter winimConverterIIE80DispatchExToIDispatch*(
+    x: ptr IIE80DispatchEx
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIIE80DispatchExToIUnknown*(
+    x: ptr IIE80DispatchEx
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMConstructorToIDispatch*(
+    x: ptr IHTMLDOMConstructor
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMConstructorToIUnknown*(
+    x: ptr IHTMLDOMConstructor
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCSSStyleDeclarationToIDispatch*(
+    x: ptr IHTMLCSSStyleDeclaration
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCSSStyleDeclarationToIUnknown*(
+    x: ptr IHTMLCSSStyleDeclaration
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCSSStyleDeclaration2ToIDispatch*(
+    x: ptr IHTMLCSSStyleDeclaration2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCSSStyleDeclaration2ToIUnknown*(
+    x: ptr IHTMLCSSStyleDeclaration2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleEnabledToIDispatch*(
+    x: ptr IHTMLStyleEnabled
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleEnabledToIUnknown*(
+    x: ptr IHTMLStyleEnabled
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLCSSStyleDeclarationToIDispatch*(
+    x: ptr DispHTMLCSSStyleDeclaration
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLCSSStyleDeclarationToIUnknown*(
+    x: ptr DispHTMLCSSStyleDeclaration
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleToIDispatch*(x: ptr IHTMLStyle): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleToIUnknown*(x: ptr IHTMLStyle): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyle2ToIDispatch*(x: ptr IHTMLStyle2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyle2ToIUnknown*(x: ptr IHTMLStyle2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyle3ToIDispatch*(x: ptr IHTMLStyle3): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyle3ToIUnknown*(x: ptr IHTMLStyle3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyle4ToIDispatch*(x: ptr IHTMLStyle4): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyle4ToIUnknown*(x: ptr IHTMLStyle4): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyle5ToIDispatch*(x: ptr IHTMLStyle5): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyle5ToIUnknown*(x: ptr IHTMLStyle5): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyle6ToIDispatch*(x: ptr IHTMLStyle6): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyle6ToIUnknown*(x: ptr IHTMLStyle6): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLRuleStyleToIDispatch*(
+    x: ptr IHTMLRuleStyle
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLRuleStyleToIUnknown*(x: ptr IHTMLRuleStyle): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLRuleStyle2ToIDispatch*(
+    x: ptr IHTMLRuleStyle2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLRuleStyle2ToIUnknown*(
+    x: ptr IHTMLRuleStyle2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLRuleStyle3ToIDispatch*(
+    x: ptr IHTMLRuleStyle3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLRuleStyle3ToIUnknown*(
+    x: ptr IHTMLRuleStyle3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLRuleStyle4ToIDispatch*(
+    x: ptr IHTMLRuleStyle4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLRuleStyle4ToIUnknown*(
+    x: ptr IHTMLRuleStyle4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLRuleStyle5ToIDispatch*(
+    x: ptr IHTMLRuleStyle5
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLRuleStyle5ToIUnknown*(
+    x: ptr IHTMLRuleStyle5
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLRuleStyle6ToIDispatch*(
+    x: ptr IHTMLRuleStyle6
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLRuleStyle6ToIUnknown*(
+    x: ptr IHTMLRuleStyle6
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLStyleToIDispatch*(x: ptr DispHTMLStyle): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLStyleToIUnknown*(x: ptr DispHTMLStyle): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLRuleStyleToIDispatch*(
+    x: ptr DispHTMLRuleStyle
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLRuleStyleToIUnknown*(
+    x: ptr DispHTMLRuleStyle
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCSSRuleToIDispatch*(x: ptr IHTMLCSSRule): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCSSRuleToIUnknown*(x: ptr IHTMLCSSRule): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCSSImportRuleToIDispatch*(
+    x: ptr IHTMLCSSImportRule
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCSSImportRuleToIUnknown*(
+    x: ptr IHTMLCSSImportRule
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCSSMediaRuleToIDispatch*(
+    x: ptr IHTMLCSSMediaRule
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCSSMediaRuleToIUnknown*(
+    x: ptr IHTMLCSSMediaRule
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCSSMediaListToIDispatch*(
+    x: ptr IHTMLCSSMediaList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCSSMediaListToIUnknown*(
+    x: ptr IHTMLCSSMediaList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCSSNamespaceRuleToIDispatch*(
+    x: ptr IHTMLCSSNamespaceRule
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCSSNamespaceRuleToIUnknown*(
+    x: ptr IHTMLCSSNamespaceRule
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLMSCSSKeyframeRuleToIDispatch*(
+    x: ptr IHTMLMSCSSKeyframeRule
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLMSCSSKeyframeRuleToIUnknown*(
+    x: ptr IHTMLMSCSSKeyframeRule
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLMSCSSKeyframesRuleToIDispatch*(
+    x: ptr IHTMLMSCSSKeyframesRule
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLMSCSSKeyframesRuleToIUnknown*(
+    x: ptr IHTMLMSCSSKeyframesRule
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLCSSRuleToIDispatch*(
+    x: ptr DispHTMLCSSRule
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLCSSRuleToIUnknown*(
+    x: ptr DispHTMLCSSRule
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLCSSImportRuleToIDispatch*(
+    x: ptr DispHTMLCSSImportRule
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLCSSImportRuleToIUnknown*(
+    x: ptr DispHTMLCSSImportRule
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLCSSMediaRuleToIDispatch*(
+    x: ptr DispHTMLCSSMediaRule
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLCSSMediaRuleToIUnknown*(
+    x: ptr DispHTMLCSSMediaRule
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLCSSMediaListToIDispatch*(
+    x: ptr DispHTMLCSSMediaList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLCSSMediaListToIUnknown*(
+    x: ptr DispHTMLCSSMediaList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLCSSNamespaceRuleToIDispatch*(
+    x: ptr DispHTMLCSSNamespaceRule
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLCSSNamespaceRuleToIUnknown*(
+    x: ptr DispHTMLCSSNamespaceRule
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLMSCSSKeyframeRuleToIDispatch*(
+    x: ptr DispHTMLMSCSSKeyframeRule
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLMSCSSKeyframeRuleToIUnknown*(
+    x: ptr DispHTMLMSCSSKeyframeRule
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLMSCSSKeyframesRuleToIDispatch*(
+    x: ptr DispHTMLMSCSSKeyframesRule
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLMSCSSKeyframesRuleToIUnknown*(
+    x: ptr DispHTMLMSCSSKeyframesRule
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLRenderStyleToIDispatch*(
+    x: ptr IHTMLRenderStyle
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLRenderStyleToIUnknown*(
+    x: ptr IHTMLRenderStyle
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLRenderStyleToIDispatch*(
+    x: ptr DispHTMLRenderStyle
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLRenderStyleToIUnknown*(
+    x: ptr DispHTMLRenderStyle
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCurrentStyleToIDispatch*(
+    x: ptr IHTMLCurrentStyle
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCurrentStyleToIUnknown*(
+    x: ptr IHTMLCurrentStyle
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCurrentStyle2ToIDispatch*(
+    x: ptr IHTMLCurrentStyle2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCurrentStyle2ToIUnknown*(
+    x: ptr IHTMLCurrentStyle2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCurrentStyle3ToIDispatch*(
+    x: ptr IHTMLCurrentStyle3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCurrentStyle3ToIUnknown*(
+    x: ptr IHTMLCurrentStyle3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCurrentStyle4ToIDispatch*(
+    x: ptr IHTMLCurrentStyle4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCurrentStyle4ToIUnknown*(
+    x: ptr IHTMLCurrentStyle4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCurrentStyle5ToIDispatch*(
+    x: ptr IHTMLCurrentStyle5
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCurrentStyle5ToIUnknown*(
+    x: ptr IHTMLCurrentStyle5
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLCurrentStyleToIDispatch*(
+    x: ptr DispHTMLCurrentStyle
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLCurrentStyleToIUnknown*(
+    x: ptr DispHTMLCurrentStyle
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLRectToIDispatch*(x: ptr IHTMLRect): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLRectToIUnknown*(x: ptr IHTMLRect): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLRect2ToIDispatch*(x: ptr IHTMLRect2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLRect2ToIUnknown*(x: ptr IHTMLRect2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLRectCollectionToIDispatch*(
+    x: ptr IHTMLRectCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLRectCollectionToIUnknown*(
+    x: ptr IHTMLRectCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMNodeToIDispatch*(x: ptr IHTMLDOMNode): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMNodeToIUnknown*(x: ptr IHTMLDOMNode): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMNode2ToIDispatch*(x: ptr IHTMLDOMNode2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMNode2ToIUnknown*(x: ptr IHTMLDOMNode2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMNode3ToIDispatch*(x: ptr IHTMLDOMNode3): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMNode3ToIUnknown*(x: ptr IHTMLDOMNode3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMAttributeToIDispatch*(
+    x: ptr IHTMLDOMAttribute
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMAttributeToIUnknown*(
+    x: ptr IHTMLDOMAttribute
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMAttribute2ToIDispatch*(
+    x: ptr IHTMLDOMAttribute2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMAttribute2ToIUnknown*(
+    x: ptr IHTMLDOMAttribute2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMAttribute3ToIDispatch*(
+    x: ptr IHTMLDOMAttribute3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMAttribute3ToIUnknown*(
+    x: ptr IHTMLDOMAttribute3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMAttribute4ToIDispatch*(
+    x: ptr IHTMLDOMAttribute4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMAttribute4ToIUnknown*(
+    x: ptr IHTMLDOMAttribute4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMTextNodeToIDispatch*(
+    x: ptr IHTMLDOMTextNode
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMTextNodeToIUnknown*(
+    x: ptr IHTMLDOMTextNode
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMTextNode2ToIDispatch*(
+    x: ptr IHTMLDOMTextNode2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMTextNode2ToIUnknown*(
+    x: ptr IHTMLDOMTextNode2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMTextNode3ToIDispatch*(
+    x: ptr IHTMLDOMTextNode3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMTextNode3ToIUnknown*(
+    x: ptr IHTMLDOMTextNode3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMImplementationToIDispatch*(
+    x: ptr IHTMLDOMImplementation
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMImplementationToIUnknown*(
+    x: ptr IHTMLDOMImplementation
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMImplementation2ToIDispatch*(
+    x: ptr IHTMLDOMImplementation2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMImplementation2ToIUnknown*(
+    x: ptr IHTMLDOMImplementation2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLDOMAttributeToIDispatch*(
+    x: ptr DispHTMLDOMAttribute
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLDOMAttributeToIUnknown*(
+    x: ptr DispHTMLDOMAttribute
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLDOMTextNodeToIDispatch*(
+    x: ptr DispHTMLDOMTextNode
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLDOMTextNodeToIUnknown*(
+    x: ptr DispHTMLDOMTextNode
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLDOMImplementationToIDispatch*(
+    x: ptr DispHTMLDOMImplementation
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLDOMImplementationToIUnknown*(
+    x: ptr DispHTMLDOMImplementation
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAttributeCollectionToIDispatch*(
+    x: ptr IHTMLAttributeCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAttributeCollectionToIUnknown*(
+    x: ptr IHTMLAttributeCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAttributeCollection2ToIDispatch*(
+    x: ptr IHTMLAttributeCollection2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAttributeCollection2ToIUnknown*(
+    x: ptr IHTMLAttributeCollection2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAttributeCollection3ToIDispatch*(
+    x: ptr IHTMLAttributeCollection3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAttributeCollection3ToIUnknown*(
+    x: ptr IHTMLAttributeCollection3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAttributeCollection4ToIDispatch*(
+    x: ptr IHTMLAttributeCollection4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAttributeCollection4ToIUnknown*(
+    x: ptr IHTMLAttributeCollection4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMChildrenCollectionToIDispatch*(
+    x: ptr IHTMLDOMChildrenCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMChildrenCollectionToIUnknown*(
+    x: ptr IHTMLDOMChildrenCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMChildrenCollection2ToIDispatch*(
+    x: ptr IHTMLDOMChildrenCollection2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMChildrenCollection2ToIUnknown*(
+    x: ptr IHTMLDOMChildrenCollection2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLAttributeCollectionToIDispatch*(
+    x: ptr DispHTMLAttributeCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLAttributeCollectionToIUnknown*(
+    x: ptr DispHTMLAttributeCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispStaticNodeListToIDispatch*(
+    x: ptr DispStaticNodeList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispStaticNodeListToIUnknown*(
+    x: ptr DispStaticNodeList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMChildrenCollectionToIDispatch*(
+    x: ptr DispDOMChildrenCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMChildrenCollectionToIUnknown*(
+    x: ptr DispDOMChildrenCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLElementEvents4ToIDispatch*(
+    x: ptr HTMLElementEvents4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLElementEvents4ToIUnknown*(
+    x: ptr HTMLElementEvents4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLElementEvents3ToIDispatch*(
+    x: ptr HTMLElementEvents3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLElementEvents3ToIUnknown*(
+    x: ptr HTMLElementEvents3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLElementEvents2ToIDispatch*(
+    x: ptr HTMLElementEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLElementEvents2ToIUnknown*(
+    x: ptr HTMLElementEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLElementEventsToIDispatch*(
+    x: ptr HTMLElementEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLElementEventsToIUnknown*(
+    x: ptr HTMLElementEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLElementToIDispatch*(x: ptr IHTMLElement): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLElementToIUnknown*(x: ptr IHTMLElement): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLElement2ToIDispatch*(x: ptr IHTMLElement2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLElement2ToIUnknown*(x: ptr IHTMLElement2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLElement3ToIDispatch*(x: ptr IHTMLElement3): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLElement3ToIUnknown*(x: ptr IHTMLElement3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLElement4ToIDispatch*(x: ptr IHTMLElement4): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLElement4ToIUnknown*(x: ptr IHTMLElement4): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementSelectorToIDispatch*(
+    x: ptr IElementSelector
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIElementSelectorToIUnknown*(
+    x: ptr IElementSelector
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLElementRenderToIUnknown*(
+    x: ptr IHTMLElementRender
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLUniqueNameToIDispatch*(
+    x: ptr IHTMLUniqueName
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLUniqueNameToIUnknown*(
+    x: ptr IHTMLUniqueName
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLElement5ToIDispatch*(x: ptr IHTMLElement5): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLElement5ToIUnknown*(x: ptr IHTMLElement5): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLElement6ToIDispatch*(x: ptr IHTMLElement6): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLElement6ToIUnknown*(x: ptr IHTMLElement6): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLElement7ToIDispatch*(x: ptr IHTMLElement7): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLElement7ToIUnknown*(x: ptr IHTMLElement7): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLElementAppliedStylesToIDispatch*(
+    x: ptr IHTMLElementAppliedStyles
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLElementAppliedStylesToIUnknown*(
+    x: ptr IHTMLElementAppliedStyles
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementTraversalToIDispatch*(
+    x: ptr IElementTraversal
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIElementTraversalToIUnknown*(
+    x: ptr IElementTraversal
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDatabindingToIDispatch*(
+    x: ptr IHTMLDatabinding
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDatabindingToIUnknown*(
+    x: ptr IHTMLDatabinding
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLElementDefaultsToIDispatch*(
+    x: ptr IHTMLElementDefaults
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLElementDefaultsToIUnknown*(
+    x: ptr IHTMLElementDefaults
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLDefaultsToIDispatch*(
+    x: ptr DispHTMLDefaults
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLDefaultsToIUnknown*(
+    x: ptr DispHTMLDefaults
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTCDefaultDispatchToIDispatch*(
+    x: ptr IHTCDefaultDispatch
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTCDefaultDispatchToIUnknown*(
+    x: ptr IHTCDefaultDispatch
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTCPropertyBehaviorToIDispatch*(
+    x: ptr IHTCPropertyBehavior
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTCPropertyBehaviorToIUnknown*(
+    x: ptr IHTCPropertyBehavior
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTCMethodBehaviorToIDispatch*(
+    x: ptr IHTCMethodBehavior
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTCMethodBehaviorToIUnknown*(
+    x: ptr IHTCMethodBehavior
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTCEventBehaviorToIDispatch*(
+    x: ptr IHTCEventBehavior
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTCEventBehaviorToIUnknown*(
+    x: ptr IHTCEventBehavior
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTCAttachBehaviorToIDispatch*(
+    x: ptr IHTCAttachBehavior
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTCAttachBehaviorToIUnknown*(
+    x: ptr IHTCAttachBehavior
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTCAttachBehavior2ToIDispatch*(
+    x: ptr IHTCAttachBehavior2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTCAttachBehavior2ToIUnknown*(
+    x: ptr IHTCAttachBehavior2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTCDescBehaviorToIDispatch*(
+    x: ptr IHTCDescBehavior
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTCDescBehaviorToIUnknown*(
+    x: ptr IHTCDescBehavior
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTCDefaultDispatchToIDispatch*(
+    x: ptr DispHTCDefaultDispatch
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTCDefaultDispatchToIUnknown*(
+    x: ptr DispHTCDefaultDispatch
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTCPropertyBehaviorToIDispatch*(
+    x: ptr DispHTCPropertyBehavior
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTCPropertyBehaviorToIUnknown*(
+    x: ptr DispHTCPropertyBehavior
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTCMethodBehaviorToIDispatch*(
+    x: ptr DispHTCMethodBehavior
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTCMethodBehaviorToIUnknown*(
+    x: ptr DispHTCMethodBehavior
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTCEventBehaviorToIDispatch*(
+    x: ptr DispHTCEventBehavior
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTCEventBehaviorToIUnknown*(
+    x: ptr DispHTCEventBehavior
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTCAttachBehaviorToIDispatch*(
+    x: ptr DispHTCAttachBehavior
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTCAttachBehaviorToIUnknown*(
+    x: ptr DispHTCAttachBehavior
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTCDescBehaviorToIDispatch*(
+    x: ptr DispHTCDescBehavior
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTCDescBehaviorToIUnknown*(
+    x: ptr DispHTCDescBehavior
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLUrnCollectionToIDispatch*(
+    x: ptr IHTMLUrnCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLUrnCollectionToIUnknown*(
+    x: ptr IHTMLUrnCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLUrnCollectionToIDispatch*(
+    x: ptr DispHTMLUrnCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLUrnCollectionToIUnknown*(
+    x: ptr DispHTMLUrnCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLGenericElementToIDispatch*(
+    x: ptr IHTMLGenericElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLGenericElementToIUnknown*(
+    x: ptr IHTMLGenericElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLGenericElementToIDispatch*(
+    x: ptr DispHTMLGenericElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLGenericElementToIUnknown*(
+    x: ptr DispHTMLGenericElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheetRuleToIDispatch*(
+    x: ptr IHTMLStyleSheetRule
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheetRuleToIUnknown*(
+    x: ptr IHTMLStyleSheetRule
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheetRuleAppliedToIDispatch*(
+    x: ptr IHTMLStyleSheetRuleApplied
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheetRuleAppliedToIUnknown*(
+    x: ptr IHTMLStyleSheetRuleApplied
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheetRule2ToIDispatch*(
+    x: ptr IHTMLStyleSheetRule2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheetRule2ToIUnknown*(
+    x: ptr IHTMLStyleSheetRule2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheetRulesCollectionToIDispatch*(
+    x: ptr IHTMLStyleSheetRulesCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheetRulesCollectionToIUnknown*(
+    x: ptr IHTMLStyleSheetRulesCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheetRulesCollection2ToIDispatch*(
+    x: ptr IHTMLStyleSheetRulesCollection2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheetRulesCollection2ToIUnknown*(
+    x: ptr IHTMLStyleSheetRulesCollection2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLStyleSheetRuleToIDispatch*(
+    x: ptr DispHTMLStyleSheetRule
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLStyleSheetRuleToIUnknown*(
+    x: ptr DispHTMLStyleSheetRule
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLStyleSheetRulesCollectionToIDispatch*(
+    x: ptr DispHTMLStyleSheetRulesCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLStyleSheetRulesCollectionToIUnknown*(
+    x: ptr DispHTMLStyleSheetRulesCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheetPageToIDispatch*(
+    x: ptr IHTMLStyleSheetPage
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheetPageToIUnknown*(
+    x: ptr IHTMLStyleSheetPage
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheetPage2ToIDispatch*(
+    x: ptr IHTMLStyleSheetPage2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheetPage2ToIUnknown*(
+    x: ptr IHTMLStyleSheetPage2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheetPagesCollectionToIDispatch*(
+    x: ptr IHTMLStyleSheetPagesCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheetPagesCollectionToIUnknown*(
+    x: ptr IHTMLStyleSheetPagesCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLStyleSheetPageToIDispatch*(
+    x: ptr DispHTMLStyleSheetPage
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLStyleSheetPageToIUnknown*(
+    x: ptr DispHTMLStyleSheetPage
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLStyleSheetPagesCollectionToIDispatch*(
+    x: ptr DispHTMLStyleSheetPagesCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLStyleSheetPagesCollectionToIUnknown*(
+    x: ptr DispHTMLStyleSheetPagesCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheetToIDispatch*(
+    x: ptr IHTMLStyleSheet
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheetToIUnknown*(
+    x: ptr IHTMLStyleSheet
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheet2ToIDispatch*(
+    x: ptr IHTMLStyleSheet2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheet2ToIUnknown*(
+    x: ptr IHTMLStyleSheet2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheet3ToIDispatch*(
+    x: ptr IHTMLStyleSheet3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheet3ToIUnknown*(
+    x: ptr IHTMLStyleSheet3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheet4ToIDispatch*(
+    x: ptr IHTMLStyleSheet4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheet4ToIUnknown*(
+    x: ptr IHTMLStyleSheet4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLStyleSheetToIDispatch*(
+    x: ptr DispHTMLStyleSheet
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLStyleSheetToIUnknown*(
+    x: ptr DispHTMLStyleSheet
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheetsCollectionToIDispatch*(
+    x: ptr IHTMLStyleSheetsCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheetsCollectionToIUnknown*(
+    x: ptr IHTMLStyleSheetsCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheetsCollection2ToIDispatch*(
+    x: ptr IHTMLStyleSheetsCollection2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheetsCollection2ToIUnknown*(
+    x: ptr IHTMLStyleSheetsCollection2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLStyleSheetsCollectionToIDispatch*(
+    x: ptr DispHTMLStyleSheetsCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLStyleSheetsCollectionToIUnknown*(
+    x: ptr DispHTMLStyleSheetsCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLLinkElementEvents2ToIDispatch*(
+    x: ptr HTMLLinkElementEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLLinkElementEvents2ToIUnknown*(
+    x: ptr HTMLLinkElementEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLLinkElementEventsToIDispatch*(
+    x: ptr HTMLLinkElementEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLLinkElementEventsToIUnknown*(
+    x: ptr HTMLLinkElementEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLLinkElementToIDispatch*(
+    x: ptr IHTMLLinkElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLLinkElementToIUnknown*(
+    x: ptr IHTMLLinkElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLLinkElement2ToIDispatch*(
+    x: ptr IHTMLLinkElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLLinkElement2ToIUnknown*(
+    x: ptr IHTMLLinkElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLLinkElement3ToIDispatch*(
+    x: ptr IHTMLLinkElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLLinkElement3ToIUnknown*(
+    x: ptr IHTMLLinkElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLLinkElement4ToIDispatch*(
+    x: ptr IHTMLLinkElement4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLLinkElement4ToIUnknown*(
+    x: ptr IHTMLLinkElement4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLLinkElement5ToIDispatch*(
+    x: ptr IHTMLLinkElement5
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLLinkElement5ToIUnknown*(
+    x: ptr IHTMLLinkElement5
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLLinkElementToIDispatch*(
+    x: ptr DispHTMLLinkElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLLinkElementToIUnknown*(
+    x: ptr DispHTMLLinkElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTxtRangeToIDispatch*(x: ptr IHTMLTxtRange): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTxtRangeToIUnknown*(x: ptr IHTMLTxtRange): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTextRangeMetricsToIDispatch*(
+    x: ptr IHTMLTextRangeMetrics
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTextRangeMetricsToIUnknown*(
+    x: ptr IHTMLTextRangeMetrics
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTextRangeMetrics2ToIDispatch*(
+    x: ptr IHTMLTextRangeMetrics2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTextRangeMetrics2ToIUnknown*(
+    x: ptr IHTMLTextRangeMetrics2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTxtRangeCollectionToIDispatch*(
+    x: ptr IHTMLTxtRangeCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTxtRangeCollectionToIUnknown*(
+    x: ptr IHTMLTxtRangeCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMRangeToIDispatch*(x: ptr IHTMLDOMRange): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMRangeToIUnknown*(x: ptr IHTMLDOMRange): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLDOMRangeToIDispatch*(
+    x: ptr DispHTMLDOMRange
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLDOMRangeToIUnknown*(
+    x: ptr DispHTMLDOMRange
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLFormElementEvents2ToIDispatch*(
+    x: ptr HTMLFormElementEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLFormElementEvents2ToIUnknown*(
+    x: ptr HTMLFormElementEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLFormElementEventsToIDispatch*(
+    x: ptr HTMLFormElementEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLFormElementEventsToIUnknown*(
+    x: ptr HTMLFormElementEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFormElementToIDispatch*(
+    x: ptr IHTMLFormElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFormElementToIUnknown*(
+    x: ptr IHTMLFormElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFormElement2ToIDispatch*(
+    x: ptr IHTMLFormElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFormElement2ToIUnknown*(
+    x: ptr IHTMLFormElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFormElement3ToIDispatch*(
+    x: ptr IHTMLFormElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFormElement3ToIUnknown*(
+    x: ptr IHTMLFormElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLSubmitDataToIDispatch*(
+    x: ptr IHTMLSubmitData
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLSubmitDataToIUnknown*(
+    x: ptr IHTMLSubmitData
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFormElement4ToIDispatch*(
+    x: ptr IHTMLFormElement4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFormElement4ToIUnknown*(
+    x: ptr IHTMLFormElement4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLFormElementToIDispatch*(
+    x: ptr DispHTMLFormElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLFormElementToIUnknown*(
+    x: ptr DispHTMLFormElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLControlElementEvents2ToIDispatch*(
+    x: ptr HTMLControlElementEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLControlElementEvents2ToIUnknown*(
+    x: ptr HTMLControlElementEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLControlElementEventsToIDispatch*(
+    x: ptr HTMLControlElementEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLControlElementEventsToIUnknown*(
+    x: ptr HTMLControlElementEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLControlElementToIDispatch*(
+    x: ptr IHTMLControlElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLControlElementToIUnknown*(
+    x: ptr IHTMLControlElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTextElementToIDispatch*(
+    x: ptr IHTMLTextElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTextElementToIUnknown*(
+    x: ptr IHTMLTextElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLTextElementToIDispatch*(
+    x: ptr DispHTMLTextElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLTextElementToIUnknown*(
+    x: ptr DispHTMLTextElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLTextContainerEvents2ToIDispatch*(
+    x: ptr HTMLTextContainerEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLTextContainerEvents2ToIUnknown*(
+    x: ptr HTMLTextContainerEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLTextContainerEventsToIDispatch*(
+    x: ptr HTMLTextContainerEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLTextContainerEventsToIUnknown*(
+    x: ptr HTMLTextContainerEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTextContainerToIDispatch*(
+    x: ptr IHTMLTextContainer
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTextContainerToIUnknown*(
+    x: ptr IHTMLTextContainer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLControlRangeToIDispatch*(
+    x: ptr IHTMLControlRange
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLControlRangeToIUnknown*(
+    x: ptr IHTMLControlRange
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLControlRange2ToIDispatch*(
+    x: ptr IHTMLControlRange2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLControlRange2ToIUnknown*(
+    x: ptr IHTMLControlRange2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLImgEvents2ToIDispatch*(
+    x: ptr HTMLImgEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLImgEvents2ToIUnknown*(x: ptr HTMLImgEvents2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLImgEventsToIDispatch*(x: ptr HTMLImgEvents): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLImgEventsToIUnknown*(x: ptr HTMLImgEvents): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLImgElementToIDispatch*(
+    x: ptr IHTMLImgElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLImgElementToIUnknown*(
+    x: ptr IHTMLImgElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLImgElement2ToIDispatch*(
+    x: ptr IHTMLImgElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLImgElement2ToIUnknown*(
+    x: ptr IHTMLImgElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLImgElement3ToIDispatch*(
+    x: ptr IHTMLImgElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLImgElement3ToIUnknown*(
+    x: ptr IHTMLImgElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLImgElement4ToIDispatch*(
+    x: ptr IHTMLImgElement4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLImgElement4ToIUnknown*(
+    x: ptr IHTMLImgElement4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLMSImgElementToIDispatch*(
+    x: ptr IHTMLMSImgElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLMSImgElementToIUnknown*(
+    x: ptr IHTMLMSImgElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLImageElementFactoryToIDispatch*(
+    x: ptr IHTMLImageElementFactory
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLImageElementFactoryToIUnknown*(
+    x: ptr IHTMLImageElementFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLImgToIDispatch*(x: ptr DispHTMLImg): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLImgToIUnknown*(x: ptr DispHTMLImg): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLBodyElementToIDispatch*(
+    x: ptr IHTMLBodyElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLBodyElementToIUnknown*(
+    x: ptr IHTMLBodyElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLBodyElement2ToIDispatch*(
+    x: ptr IHTMLBodyElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLBodyElement2ToIUnknown*(
+    x: ptr IHTMLBodyElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLBodyElement3ToIDispatch*(
+    x: ptr IHTMLBodyElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLBodyElement3ToIUnknown*(
+    x: ptr IHTMLBodyElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLBodyElement4ToIDispatch*(
+    x: ptr IHTMLBodyElement4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLBodyElement4ToIUnknown*(
+    x: ptr IHTMLBodyElement4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLBodyElement5ToIDispatch*(
+    x: ptr IHTMLBodyElement5
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLBodyElement5ToIUnknown*(
+    x: ptr IHTMLBodyElement5
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLBodyToIDispatch*(x: ptr DispHTMLBody): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLBodyToIUnknown*(x: ptr DispHTMLBody): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFontElementToIDispatch*(
+    x: ptr IHTMLFontElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFontElementToIUnknown*(
+    x: ptr IHTMLFontElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLFontElementToIDispatch*(
+    x: ptr DispHTMLFontElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLFontElementToIUnknown*(
+    x: ptr DispHTMLFontElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLAnchorEvents2ToIDispatch*(
+    x: ptr HTMLAnchorEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLAnchorEvents2ToIUnknown*(
+    x: ptr HTMLAnchorEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLAnchorEventsToIDispatch*(
+    x: ptr HTMLAnchorEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLAnchorEventsToIUnknown*(
+    x: ptr HTMLAnchorEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAnchorElementToIDispatch*(
+    x: ptr IHTMLAnchorElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAnchorElementToIUnknown*(
+    x: ptr IHTMLAnchorElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAnchorElement2ToIDispatch*(
+    x: ptr IHTMLAnchorElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAnchorElement2ToIUnknown*(
+    x: ptr IHTMLAnchorElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAnchorElement3ToIDispatch*(
+    x: ptr IHTMLAnchorElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAnchorElement3ToIUnknown*(
+    x: ptr IHTMLAnchorElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLAnchorElementToIDispatch*(
+    x: ptr DispHTMLAnchorElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLAnchorElementToIUnknown*(
+    x: ptr DispHTMLAnchorElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLLabelEvents2ToIDispatch*(
+    x: ptr HTMLLabelEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLLabelEvents2ToIUnknown*(
+    x: ptr HTMLLabelEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLLabelEventsToIDispatch*(
+    x: ptr HTMLLabelEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLLabelEventsToIUnknown*(
+    x: ptr HTMLLabelEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLLabelElementToIDispatch*(
+    x: ptr IHTMLLabelElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLLabelElementToIUnknown*(
+    x: ptr IHTMLLabelElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLLabelElement2ToIDispatch*(
+    x: ptr IHTMLLabelElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLLabelElement2ToIUnknown*(
+    x: ptr IHTMLLabelElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLLabelElementToIDispatch*(
+    x: ptr DispHTMLLabelElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLLabelElementToIUnknown*(
+    x: ptr DispHTMLLabelElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLListElementToIDispatch*(
+    x: ptr IHTMLListElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLListElementToIUnknown*(
+    x: ptr IHTMLListElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLListElement2ToIDispatch*(
+    x: ptr IHTMLListElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLListElement2ToIUnknown*(
+    x: ptr IHTMLListElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLListElementToIDispatch*(
+    x: ptr DispHTMLListElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLListElementToIUnknown*(
+    x: ptr DispHTMLListElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLUListElementToIDispatch*(
+    x: ptr IHTMLUListElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLUListElementToIUnknown*(
+    x: ptr IHTMLUListElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLUListElementToIDispatch*(
+    x: ptr DispHTMLUListElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLUListElementToIUnknown*(
+    x: ptr DispHTMLUListElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLOListElementToIDispatch*(
+    x: ptr IHTMLOListElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLOListElementToIUnknown*(
+    x: ptr IHTMLOListElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLOListElementToIDispatch*(
+    x: ptr DispHTMLOListElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLOListElementToIUnknown*(
+    x: ptr DispHTMLOListElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLLIElementToIDispatch*(
+    x: ptr IHTMLLIElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLLIElementToIUnknown*(x: ptr IHTMLLIElement): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLLIElementToIDispatch*(
+    x: ptr DispHTMLLIElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLLIElementToIUnknown*(
+    x: ptr DispHTMLLIElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLBlockElementToIDispatch*(
+    x: ptr IHTMLBlockElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLBlockElementToIUnknown*(
+    x: ptr IHTMLBlockElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLBlockElement2ToIDispatch*(
+    x: ptr IHTMLBlockElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLBlockElement2ToIUnknown*(
+    x: ptr IHTMLBlockElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLBlockElement3ToIDispatch*(
+    x: ptr IHTMLBlockElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLBlockElement3ToIUnknown*(
+    x: ptr IHTMLBlockElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLBlockElementToIDispatch*(
+    x: ptr DispHTMLBlockElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLBlockElementToIUnknown*(
+    x: ptr DispHTMLBlockElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDivElementToIDispatch*(
+    x: ptr IHTMLDivElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDivElementToIUnknown*(
+    x: ptr IHTMLDivElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLDivElementToIDispatch*(
+    x: ptr DispHTMLDivElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLDivElementToIUnknown*(
+    x: ptr DispHTMLDivElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDDElementToIDispatch*(
+    x: ptr IHTMLDDElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDDElementToIUnknown*(x: ptr IHTMLDDElement): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLDDElementToIDispatch*(
+    x: ptr DispHTMLDDElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLDDElementToIUnknown*(
+    x: ptr DispHTMLDDElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDTElementToIDispatch*(
+    x: ptr IHTMLDTElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDTElementToIUnknown*(x: ptr IHTMLDTElement): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLDTElementToIDispatch*(
+    x: ptr DispHTMLDTElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLDTElementToIUnknown*(
+    x: ptr DispHTMLDTElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLBRElementToIDispatch*(
+    x: ptr IHTMLBRElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLBRElementToIUnknown*(x: ptr IHTMLBRElement): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLBRElementToIDispatch*(
+    x: ptr DispHTMLBRElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLBRElementToIUnknown*(
+    x: ptr DispHTMLBRElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDListElementToIDispatch*(
+    x: ptr IHTMLDListElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDListElementToIUnknown*(
+    x: ptr IHTMLDListElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLDListElementToIDispatch*(
+    x: ptr DispHTMLDListElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLDListElementToIUnknown*(
+    x: ptr DispHTMLDListElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLHRElementToIDispatch*(
+    x: ptr IHTMLHRElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLHRElementToIUnknown*(x: ptr IHTMLHRElement): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLHRElementToIDispatch*(
+    x: ptr DispHTMLHRElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLHRElementToIUnknown*(
+    x: ptr DispHTMLHRElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLParaElementToIDispatch*(
+    x: ptr IHTMLParaElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLParaElementToIUnknown*(
+    x: ptr IHTMLParaElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLParaElementToIDispatch*(
+    x: ptr DispHTMLParaElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLParaElementToIUnknown*(
+    x: ptr DispHTMLParaElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLElementCollectionToIDispatch*(
+    x: ptr IHTMLElementCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLElementCollectionToIUnknown*(
+    x: ptr IHTMLElementCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLElementCollection2ToIDispatch*(
+    x: ptr IHTMLElementCollection2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLElementCollection2ToIUnknown*(
+    x: ptr IHTMLElementCollection2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLElementCollection3ToIDispatch*(
+    x: ptr IHTMLElementCollection3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLElementCollection3ToIUnknown*(
+    x: ptr IHTMLElementCollection3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLElementCollection4ToIDispatch*(
+    x: ptr IHTMLElementCollection4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLElementCollection4ToIUnknown*(
+    x: ptr IHTMLElementCollection4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLElementCollectionToIDispatch*(
+    x: ptr DispHTMLElementCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLElementCollectionToIUnknown*(
+    x: ptr DispHTMLElementCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLHeaderElementToIDispatch*(
+    x: ptr IHTMLHeaderElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLHeaderElementToIUnknown*(
+    x: ptr IHTMLHeaderElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLHeaderElementToIDispatch*(
+    x: ptr DispHTMLHeaderElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLHeaderElementToIUnknown*(
+    x: ptr DispHTMLHeaderElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLSelectElementEvents2ToIDispatch*(
+    x: ptr HTMLSelectElementEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLSelectElementEvents2ToIUnknown*(
+    x: ptr HTMLSelectElementEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLSelectElementEventsToIDispatch*(
+    x: ptr HTMLSelectElementEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLSelectElementEventsToIUnknown*(
+    x: ptr HTMLSelectElementEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLSelectElementExToIUnknown*(
+    x: ptr IHTMLSelectElementEx
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLSelectElementToIDispatch*(
+    x: ptr IHTMLSelectElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLSelectElementToIUnknown*(
+    x: ptr IHTMLSelectElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLSelectElement2ToIDispatch*(
+    x: ptr IHTMLSelectElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLSelectElement2ToIUnknown*(
+    x: ptr IHTMLSelectElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLSelectElement4ToIDispatch*(
+    x: ptr IHTMLSelectElement4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLSelectElement4ToIUnknown*(
+    x: ptr IHTMLSelectElement4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLSelectElement5ToIDispatch*(
+    x: ptr IHTMLSelectElement5
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLSelectElement5ToIUnknown*(
+    x: ptr IHTMLSelectElement5
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLSelectElement6ToIDispatch*(
+    x: ptr IHTMLSelectElement6
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLSelectElement6ToIUnknown*(
+    x: ptr IHTMLSelectElement6
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLSelectElementToIDispatch*(
+    x: ptr DispHTMLSelectElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLSelectElementToIUnknown*(
+    x: ptr DispHTMLSelectElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLWndSelectElementToIDispatch*(
+    x: ptr DispHTMLWndSelectElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLWndSelectElementToIUnknown*(
+    x: ptr DispHTMLWndSelectElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLSelectionObjectToIDispatch*(
+    x: ptr IHTMLSelectionObject
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLSelectionObjectToIUnknown*(
+    x: ptr IHTMLSelectionObject
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLSelectionObject2ToIDispatch*(
+    x: ptr IHTMLSelectionObject2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLSelectionObject2ToIUnknown*(
+    x: ptr IHTMLSelectionObject2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLSelectionToIDispatch*(
+    x: ptr IHTMLSelection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLSelectionToIUnknown*(x: ptr IHTMLSelection): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLOptionElementToIDispatch*(
+    x: ptr IHTMLOptionElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLOptionElementToIUnknown*(
+    x: ptr IHTMLOptionElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLOptionElement3ToIDispatch*(
+    x: ptr IHTMLOptionElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLOptionElement3ToIUnknown*(
+    x: ptr IHTMLOptionElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLOptionElement4ToIDispatch*(
+    x: ptr IHTMLOptionElement4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLOptionElement4ToIUnknown*(
+    x: ptr IHTMLOptionElement4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLOptionElementFactoryToIDispatch*(
+    x: ptr IHTMLOptionElementFactory
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLOptionElementFactoryToIUnknown*(
+    x: ptr IHTMLOptionElementFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLOptionElementToIDispatch*(
+    x: ptr DispHTMLOptionElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLOptionElementToIUnknown*(
+    x: ptr DispHTMLOptionElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLWndOptionElementToIDispatch*(
+    x: ptr DispHTMLWndOptionElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLWndOptionElementToIUnknown*(
+    x: ptr DispHTMLWndOptionElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLButtonElementEvents2ToIDispatch*(
+    x: ptr HTMLButtonElementEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLButtonElementEvents2ToIUnknown*(
+    x: ptr HTMLButtonElementEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLButtonElementEventsToIDispatch*(
+    x: ptr HTMLButtonElementEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLButtonElementEventsToIUnknown*(
+    x: ptr HTMLButtonElementEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLInputTextElementEvents2ToIDispatch*(
+    x: ptr HTMLInputTextElementEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLInputTextElementEvents2ToIUnknown*(
+    x: ptr HTMLInputTextElementEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLOptionButtonElementEvents2ToIDispatch*(
+    x: ptr HTMLOptionButtonElementEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLOptionButtonElementEvents2ToIUnknown*(
+    x: ptr HTMLOptionButtonElementEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLInputFileElementEvents2ToIDispatch*(
+    x: ptr HTMLInputFileElementEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLInputFileElementEvents2ToIUnknown*(
+    x: ptr HTMLInputFileElementEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLInputImageEvents2ToIDispatch*(
+    x: ptr HTMLInputImageEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLInputImageEvents2ToIUnknown*(
+    x: ptr HTMLInputImageEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLInputTextElementEventsToIDispatch*(
+    x: ptr HTMLInputTextElementEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLInputTextElementEventsToIUnknown*(
+    x: ptr HTMLInputTextElementEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLOptionButtonElementEventsToIDispatch*(
+    x: ptr HTMLOptionButtonElementEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLOptionButtonElementEventsToIUnknown*(
+    x: ptr HTMLOptionButtonElementEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLInputFileElementEventsToIDispatch*(
+    x: ptr HTMLInputFileElementEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLInputFileElementEventsToIUnknown*(
+    x: ptr HTMLInputFileElementEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLInputImageEventsToIDispatch*(
+    x: ptr HTMLInputImageEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLInputImageEventsToIUnknown*(
+    x: ptr HTMLInputImageEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLInputElementToIDispatch*(
+    x: ptr IHTMLInputElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLInputElementToIUnknown*(
+    x: ptr IHTMLInputElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLInputElement2ToIDispatch*(
+    x: ptr IHTMLInputElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLInputElement2ToIUnknown*(
+    x: ptr IHTMLInputElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLInputElement3ToIDispatch*(
+    x: ptr IHTMLInputElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLInputElement3ToIUnknown*(
+    x: ptr IHTMLInputElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLInputButtonElementToIDispatch*(
+    x: ptr IHTMLInputButtonElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLInputButtonElementToIUnknown*(
+    x: ptr IHTMLInputButtonElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLInputHiddenElementToIDispatch*(
+    x: ptr IHTMLInputHiddenElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLInputHiddenElementToIUnknown*(
+    x: ptr IHTMLInputHiddenElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLInputTextElementToIDispatch*(
+    x: ptr IHTMLInputTextElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLInputTextElementToIUnknown*(
+    x: ptr IHTMLInputTextElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLInputTextElement2ToIDispatch*(
+    x: ptr IHTMLInputTextElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLInputTextElement2ToIUnknown*(
+    x: ptr IHTMLInputTextElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLInputFileElementToIDispatch*(
+    x: ptr IHTMLInputFileElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLInputFileElementToIUnknown*(
+    x: ptr IHTMLInputFileElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLOptionButtonElementToIDispatch*(
+    x: ptr IHTMLOptionButtonElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLOptionButtonElementToIUnknown*(
+    x: ptr IHTMLOptionButtonElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLInputImageToIDispatch*(
+    x: ptr IHTMLInputImage
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLInputImageToIUnknown*(
+    x: ptr IHTMLInputImage
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLInputRangeElementToIDispatch*(
+    x: ptr IHTMLInputRangeElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLInputRangeElementToIUnknown*(
+    x: ptr IHTMLInputRangeElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLInputElementToIDispatch*(
+    x: ptr DispHTMLInputElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLInputElementToIUnknown*(
+    x: ptr DispHTMLInputElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTextAreaElementToIDispatch*(
+    x: ptr IHTMLTextAreaElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTextAreaElementToIUnknown*(
+    x: ptr IHTMLTextAreaElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTextAreaElement2ToIDispatch*(
+    x: ptr IHTMLTextAreaElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTextAreaElement2ToIUnknown*(
+    x: ptr IHTMLTextAreaElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLTextAreaElementToIDispatch*(
+    x: ptr DispHTMLTextAreaElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLTextAreaElementToIUnknown*(
+    x: ptr DispHTMLTextAreaElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLRichtextElementToIDispatch*(
+    x: ptr DispHTMLRichtextElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLRichtextElementToIUnknown*(
+    x: ptr DispHTMLRichtextElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLButtonElementToIDispatch*(
+    x: ptr IHTMLButtonElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLButtonElementToIUnknown*(
+    x: ptr IHTMLButtonElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLButtonElement2ToIDispatch*(
+    x: ptr IHTMLButtonElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLButtonElement2ToIUnknown*(
+    x: ptr IHTMLButtonElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLButtonElementToIDispatch*(
+    x: ptr DispHTMLButtonElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLButtonElementToIUnknown*(
+    x: ptr DispHTMLButtonElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLMarqueeElementEvents2ToIDispatch*(
+    x: ptr HTMLMarqueeElementEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLMarqueeElementEvents2ToIUnknown*(
+    x: ptr HTMLMarqueeElementEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLMarqueeElementEventsToIDispatch*(
+    x: ptr HTMLMarqueeElementEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLMarqueeElementEventsToIUnknown*(
+    x: ptr HTMLMarqueeElementEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLMarqueeElementToIDispatch*(
+    x: ptr IHTMLMarqueeElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLMarqueeElementToIUnknown*(
+    x: ptr IHTMLMarqueeElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLMarqueeElementToIDispatch*(
+    x: ptr DispHTMLMarqueeElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLMarqueeElementToIUnknown*(
+    x: ptr DispHTMLMarqueeElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLHtmlElementToIDispatch*(
+    x: ptr IHTMLHtmlElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLHtmlElementToIUnknown*(
+    x: ptr IHTMLHtmlElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLHeadElementToIDispatch*(
+    x: ptr IHTMLHeadElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLHeadElementToIUnknown*(
+    x: ptr IHTMLHeadElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLHeadElement2ToIDispatch*(
+    x: ptr IHTMLHeadElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLHeadElement2ToIUnknown*(
+    x: ptr IHTMLHeadElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTitleElementToIDispatch*(
+    x: ptr IHTMLTitleElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTitleElementToIUnknown*(
+    x: ptr IHTMLTitleElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLMetaElementToIDispatch*(
+    x: ptr IHTMLMetaElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLMetaElementToIUnknown*(
+    x: ptr IHTMLMetaElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLMetaElement2ToIDispatch*(
+    x: ptr IHTMLMetaElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLMetaElement2ToIUnknown*(
+    x: ptr IHTMLMetaElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLMetaElement3ToIDispatch*(
+    x: ptr IHTMLMetaElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLMetaElement3ToIUnknown*(
+    x: ptr IHTMLMetaElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLBaseElementToIDispatch*(
+    x: ptr IHTMLBaseElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLBaseElementToIUnknown*(
+    x: ptr IHTMLBaseElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLBaseElement2ToIDispatch*(
+    x: ptr IHTMLBaseElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLBaseElement2ToIUnknown*(
+    x: ptr IHTMLBaseElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLIsIndexElementToIDispatch*(
+    x: ptr IHTMLIsIndexElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLIsIndexElementToIUnknown*(
+    x: ptr IHTMLIsIndexElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLIsIndexElement2ToIDispatch*(
+    x: ptr IHTMLIsIndexElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLIsIndexElement2ToIUnknown*(
+    x: ptr IHTMLIsIndexElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLNextIdElementToIDispatch*(
+    x: ptr IHTMLNextIdElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLNextIdElementToIUnknown*(
+    x: ptr IHTMLNextIdElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLHtmlElementToIDispatch*(
+    x: ptr DispHTMLHtmlElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLHtmlElementToIUnknown*(
+    x: ptr DispHTMLHtmlElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLHeadElementToIDispatch*(
+    x: ptr DispHTMLHeadElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLHeadElementToIUnknown*(
+    x: ptr DispHTMLHeadElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLTitleElementToIDispatch*(
+    x: ptr DispHTMLTitleElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLTitleElementToIUnknown*(
+    x: ptr DispHTMLTitleElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLMetaElementToIDispatch*(
+    x: ptr DispHTMLMetaElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLMetaElementToIUnknown*(
+    x: ptr DispHTMLMetaElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLBaseElementToIDispatch*(
+    x: ptr DispHTMLBaseElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLBaseElementToIUnknown*(
+    x: ptr DispHTMLBaseElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLIsIndexElementToIDispatch*(
+    x: ptr DispHTMLIsIndexElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLIsIndexElementToIUnknown*(
+    x: ptr DispHTMLIsIndexElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLNextIdElementToIDispatch*(
+    x: ptr DispHTMLNextIdElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLNextIdElementToIUnknown*(
+    x: ptr DispHTMLNextIdElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLBaseFontElementToIDispatch*(
+    x: ptr IHTMLBaseFontElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLBaseFontElementToIUnknown*(
+    x: ptr IHTMLBaseFontElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLBaseFontElementToIDispatch*(
+    x: ptr DispHTMLBaseFontElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLBaseFontElementToIUnknown*(
+    x: ptr DispHTMLBaseFontElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLUnknownElementToIDispatch*(
+    x: ptr IHTMLUnknownElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLUnknownElementToIUnknown*(
+    x: ptr IHTMLUnknownElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLUnknownElementToIDispatch*(
+    x: ptr DispHTMLUnknownElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLUnknownElementToIUnknown*(
+    x: ptr DispHTMLUnknownElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOmHistoryToIDispatch*(x: ptr IOmHistory): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIOmHistoryToIUnknown*(x: ptr IOmHistory): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLMimeTypesCollectionToIDispatch*(
+    x: ptr IHTMLMimeTypesCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLMimeTypesCollectionToIUnknown*(
+    x: ptr IHTMLMimeTypesCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLPluginsCollectionToIDispatch*(
+    x: ptr IHTMLPluginsCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLPluginsCollectionToIUnknown*(
+    x: ptr IHTMLPluginsCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLOpsProfileToIDispatch*(
+    x: ptr IHTMLOpsProfile
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLOpsProfileToIUnknown*(
+    x: ptr IHTMLOpsProfile
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOmNavigatorToIDispatch*(x: ptr IOmNavigator): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIOmNavigatorToIUnknown*(x: ptr IOmNavigator): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINavigatorGeolocationToIDispatch*(
+    x: ptr INavigatorGeolocation
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterINavigatorGeolocationToIUnknown*(
+    x: ptr INavigatorGeolocation
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINavigatorDoNotTrackToIDispatch*(
+    x: ptr INavigatorDoNotTrack
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterINavigatorDoNotTrackToIUnknown*(
+    x: ptr INavigatorDoNotTrack
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLLocationToIDispatch*(x: ptr IHTMLLocation): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLLocationToIUnknown*(x: ptr IHTMLLocation): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLHistoryToIDispatch*(
+    x: ptr DispHTMLHistory
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLHistoryToIUnknown*(
+    x: ptr DispHTMLHistory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispCPluginsToIDispatch*(x: ptr DispCPlugins): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispCPluginsToIUnknown*(x: ptr DispCPlugins): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLNavigatorToIDispatch*(
+    x: ptr DispHTMLNavigator
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLNavigatorToIUnknown*(
+    x: ptr DispHTMLNavigator
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLLocationToIDispatch*(
+    x: ptr DispHTMLLocation
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLLocationToIUnknown*(
+    x: ptr DispHTMLLocation
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLBookmarkCollectionToIDispatch*(
+    x: ptr IHTMLBookmarkCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLBookmarkCollectionToIUnknown*(
+    x: ptr IHTMLBookmarkCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDataTransferToIDispatch*(
+    x: ptr IHTMLDataTransfer
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDataTransferToIUnknown*(
+    x: ptr IHTMLDataTransfer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLEventObjToIDispatch*(x: ptr IHTMLEventObj): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLEventObjToIUnknown*(x: ptr IHTMLEventObj): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLEventObj2ToIDispatch*(
+    x: ptr IHTMLEventObj2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLEventObj2ToIUnknown*(x: ptr IHTMLEventObj2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLEventObj3ToIDispatch*(
+    x: ptr IHTMLEventObj3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLEventObj3ToIUnknown*(x: ptr IHTMLEventObj3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLEventObj4ToIDispatch*(
+    x: ptr IHTMLEventObj4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLEventObj4ToIUnknown*(x: ptr IHTMLEventObj4): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLEventObj5ToIDispatch*(
+    x: ptr IHTMLEventObj5
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLEventObj5ToIUnknown*(x: ptr IHTMLEventObj5): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLEventObj6ToIDispatch*(
+    x: ptr IHTMLEventObj6
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLEventObj6ToIUnknown*(x: ptr IHTMLEventObj6): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispCEventObjToIDispatch*(x: ptr DispCEventObj): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispCEventObjToIUnknown*(x: ptr DispCEventObj): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleMediaToIDispatch*(
+    x: ptr IHTMLStyleMedia
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleMediaToIUnknown*(
+    x: ptr IHTMLStyleMedia
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLStyleMediaToIDispatch*(
+    x: ptr DispHTMLStyleMedia
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLStyleMediaToIUnknown*(
+    x: ptr DispHTMLStyleMedia
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLWindowEvents3ToIDispatch*(
+    x: ptr HTMLWindowEvents3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLWindowEvents3ToIUnknown*(
+    x: ptr HTMLWindowEvents3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLWindowEvents2ToIDispatch*(
+    x: ptr HTMLWindowEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLWindowEvents2ToIUnknown*(
+    x: ptr HTMLWindowEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLWindowEventsToIDispatch*(
+    x: ptr HTMLWindowEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLWindowEventsToIUnknown*(
+    x: ptr HTMLWindowEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFramesCollection2ToIDispatch*(
+    x: ptr IHTMLFramesCollection2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFramesCollection2ToIUnknown*(
+    x: ptr IHTMLFramesCollection2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLScreenToIDispatch*(x: ptr IHTMLScreen): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLScreenToIUnknown*(x: ptr IHTMLScreen): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLScreen2ToIDispatch*(x: ptr IHTMLScreen2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLScreen2ToIUnknown*(x: ptr IHTMLScreen2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLScreen3ToIDispatch*(x: ptr IHTMLScreen3): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLScreen3ToIUnknown*(x: ptr IHTMLScreen3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLScreen4ToIDispatch*(x: ptr IHTMLScreen4): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLScreen4ToIUnknown*(x: ptr IHTMLScreen4): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLWindow2ToIHTMLFramesCollection2*(
+    x: ptr IHTMLWindow2
+): ptr IHTMLFramesCollection2 =
+  cast[ptr IHTMLFramesCollection2](x)
+
+converter winimConverterIHTMLWindow2ToIDispatch*(x: ptr IHTMLWindow2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLWindow2ToIUnknown*(x: ptr IHTMLWindow2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLWindow3ToIDispatch*(x: ptr IHTMLWindow3): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLWindow3ToIUnknown*(x: ptr IHTMLWindow3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLWindow4ToIDispatch*(x: ptr IHTMLWindow4): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLWindow4ToIUnknown*(x: ptr IHTMLWindow4): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLWindow5ToIDispatch*(x: ptr IHTMLWindow5): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLWindow5ToIUnknown*(x: ptr IHTMLWindow5): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLWindow6ToIDispatch*(x: ptr IHTMLWindow6): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLWindow6ToIUnknown*(x: ptr IHTMLWindow6): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLWindow7ToIDispatch*(x: ptr IHTMLWindow7): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLWindow7ToIUnknown*(x: ptr IHTMLWindow7): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLWindow8ToIDispatch*(x: ptr IHTMLWindow8): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLWindow8ToIUnknown*(x: ptr IHTMLWindow8): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLScreenToIDispatch*(
+    x: ptr DispHTMLScreen
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLScreenToIUnknown*(x: ptr DispHTMLScreen): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLWindow2ToIDispatch*(
+    x: ptr DispHTMLWindow2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLWindow2ToIUnknown*(
+    x: ptr DispHTMLWindow2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLWindowProxyToIDispatch*(
+    x: ptr DispHTMLWindowProxy
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLWindowProxyToIUnknown*(
+    x: ptr DispHTMLWindowProxy
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDocumentCompatibleInfoToIDispatch*(
+    x: ptr IHTMLDocumentCompatibleInfo
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDocumentCompatibleInfoToIUnknown*(
+    x: ptr IHTMLDocumentCompatibleInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDocumentCompatibleInfoCollectionToIDispatch*(
+    x: ptr IHTMLDocumentCompatibleInfoCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDocumentCompatibleInfoCollectionToIUnknown*(
+    x: ptr IHTMLDocumentCompatibleInfoCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLDocumentCompatibleInfoToIDispatch*(
+    x: ptr DispHTMLDocumentCompatibleInfo
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLDocumentCompatibleInfoToIUnknown*(
+    x: ptr DispHTMLDocumentCompatibleInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLDocumentCompatibleInfoCollectionToIDispatch*(
+    x: ptr DispHTMLDocumentCompatibleInfoCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLDocumentCompatibleInfoCollectionToIUnknown*(
+    x: ptr DispHTMLDocumentCompatibleInfoCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLDocumentEvents4ToIDispatch*(
+    x: ptr HTMLDocumentEvents4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLDocumentEvents4ToIUnknown*(
+    x: ptr HTMLDocumentEvents4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLDocumentEvents3ToIDispatch*(
+    x: ptr HTMLDocumentEvents3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLDocumentEvents3ToIUnknown*(
+    x: ptr HTMLDocumentEvents3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLDocumentEvents2ToIDispatch*(
+    x: ptr HTMLDocumentEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLDocumentEvents2ToIUnknown*(
+    x: ptr HTMLDocumentEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLDocumentEventsToIDispatch*(
+    x: ptr HTMLDocumentEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLDocumentEventsToIUnknown*(
+    x: ptr HTMLDocumentEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDocumentToIDispatch*(x: ptr IHTMLDocument): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDocumentToIUnknown*(x: ptr IHTMLDocument): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDocument2ToIHTMLDocument*(
+    x: ptr IHTMLDocument2
+): ptr IHTMLDocument =
+  cast[ptr IHTMLDocument](x)
+
+converter winimConverterIHTMLDocument2ToIDispatch*(
+    x: ptr IHTMLDocument2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDocument2ToIUnknown*(x: ptr IHTMLDocument2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDocument3ToIDispatch*(
+    x: ptr IHTMLDocument3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDocument3ToIUnknown*(x: ptr IHTMLDocument3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDocument4ToIDispatch*(
+    x: ptr IHTMLDocument4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDocument4ToIUnknown*(x: ptr IHTMLDocument4): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDocument5ToIDispatch*(
+    x: ptr IHTMLDocument5
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDocument5ToIUnknown*(x: ptr IHTMLDocument5): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDocument6ToIDispatch*(
+    x: ptr IHTMLDocument6
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDocument6ToIUnknown*(x: ptr IHTMLDocument6): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDocument7ToIDispatch*(
+    x: ptr IHTMLDocument7
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDocument7ToIUnknown*(x: ptr IHTMLDocument7): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDocument8ToIDispatch*(
+    x: ptr IHTMLDocument8
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDocument8ToIUnknown*(x: ptr IHTMLDocument8): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDocumentEventToIDispatch*(
+    x: ptr IDocumentEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDocumentEventToIUnknown*(x: ptr IDocumentEvent): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDocumentRangeToIDispatch*(
+    x: ptr IDocumentRange
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDocumentRangeToIUnknown*(x: ptr IDocumentRange): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDocumentSelectorToIDispatch*(
+    x: ptr IDocumentSelector
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDocumentSelectorToIUnknown*(
+    x: ptr IDocumentSelector
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDocumentTraversalToIDispatch*(
+    x: ptr IDocumentTraversal
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDocumentTraversalToIUnknown*(
+    x: ptr IDocumentTraversal
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLDocumentToIDispatch*(
+    x: ptr DispHTMLDocument
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLDocumentToIUnknown*(
+    x: ptr DispHTMLDocument
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDWebBridgeEventsToIDispatch*(
+    x: ptr DWebBridgeEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDWebBridgeEventsToIUnknown*(
+    x: ptr DWebBridgeEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWebBridgeToIDispatch*(x: ptr IWebBridge): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIWebBridgeToIUnknown*(x: ptr IWebBridge): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWBScriptControlToIDispatch*(
+    x: ptr IWBScriptControl
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIWBScriptControlToIUnknown*(
+    x: ptr IWBScriptControl
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLEmbedElementToIDispatch*(
+    x: ptr IHTMLEmbedElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLEmbedElementToIUnknown*(
+    x: ptr IHTMLEmbedElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLEmbedElement2ToIDispatch*(
+    x: ptr IHTMLEmbedElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLEmbedElement2ToIUnknown*(
+    x: ptr IHTMLEmbedElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLEmbedToIDispatch*(x: ptr DispHTMLEmbed): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLEmbedToIUnknown*(x: ptr DispHTMLEmbed): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLMapEvents2ToIDispatch*(
+    x: ptr HTMLMapEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLMapEvents2ToIUnknown*(x: ptr HTMLMapEvents2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLMapEventsToIDispatch*(x: ptr HTMLMapEvents): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLMapEventsToIUnknown*(x: ptr HTMLMapEvents): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAreasCollectionToIDispatch*(
+    x: ptr IHTMLAreasCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAreasCollectionToIUnknown*(
+    x: ptr IHTMLAreasCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAreasCollection2ToIDispatch*(
+    x: ptr IHTMLAreasCollection2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAreasCollection2ToIUnknown*(
+    x: ptr IHTMLAreasCollection2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAreasCollection3ToIDispatch*(
+    x: ptr IHTMLAreasCollection3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAreasCollection3ToIUnknown*(
+    x: ptr IHTMLAreasCollection3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAreasCollection4ToIDispatch*(
+    x: ptr IHTMLAreasCollection4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAreasCollection4ToIUnknown*(
+    x: ptr IHTMLAreasCollection4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLMapElementToIDispatch*(
+    x: ptr IHTMLMapElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLMapElementToIUnknown*(
+    x: ptr IHTMLMapElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLAreasCollectionToIDispatch*(
+    x: ptr DispHTMLAreasCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLAreasCollectionToIUnknown*(
+    x: ptr DispHTMLAreasCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLMapElementToIDispatch*(
+    x: ptr DispHTMLMapElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLMapElementToIUnknown*(
+    x: ptr DispHTMLMapElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLAreaEvents2ToIDispatch*(
+    x: ptr HTMLAreaEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLAreaEvents2ToIUnknown*(
+    x: ptr HTMLAreaEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLAreaEventsToIDispatch*(
+    x: ptr HTMLAreaEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLAreaEventsToIUnknown*(x: ptr HTMLAreaEvents): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAreaElementToIDispatch*(
+    x: ptr IHTMLAreaElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAreaElementToIUnknown*(
+    x: ptr IHTMLAreaElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAreaElement2ToIDispatch*(
+    x: ptr IHTMLAreaElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAreaElement2ToIUnknown*(
+    x: ptr IHTMLAreaElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLAreaElementToIDispatch*(
+    x: ptr DispHTMLAreaElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLAreaElementToIUnknown*(
+    x: ptr DispHTMLAreaElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableCaptionToIDispatch*(
+    x: ptr IHTMLTableCaption
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableCaptionToIUnknown*(
+    x: ptr IHTMLTableCaption
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLTableCaptionToIDispatch*(
+    x: ptr DispHTMLTableCaption
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLTableCaptionToIUnknown*(
+    x: ptr DispHTMLTableCaption
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCommentElementToIDispatch*(
+    x: ptr IHTMLCommentElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCommentElementToIUnknown*(
+    x: ptr IHTMLCommentElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCommentElement2ToIDispatch*(
+    x: ptr IHTMLCommentElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCommentElement2ToIUnknown*(
+    x: ptr IHTMLCommentElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCommentElement3ToIDispatch*(
+    x: ptr IHTMLCommentElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCommentElement3ToIUnknown*(
+    x: ptr IHTMLCommentElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLCommentElementToIDispatch*(
+    x: ptr DispHTMLCommentElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLCommentElementToIUnknown*(
+    x: ptr DispHTMLCommentElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLPhraseElementToIDispatch*(
+    x: ptr IHTMLPhraseElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLPhraseElementToIUnknown*(
+    x: ptr IHTMLPhraseElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLPhraseElement2ToIDispatch*(
+    x: ptr IHTMLPhraseElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLPhraseElement2ToIUnknown*(
+    x: ptr IHTMLPhraseElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLPhraseElement3ToIDispatch*(
+    x: ptr IHTMLPhraseElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLPhraseElement3ToIUnknown*(
+    x: ptr IHTMLPhraseElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLSpanElementToIDispatch*(
+    x: ptr IHTMLSpanElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLSpanElementToIUnknown*(
+    x: ptr IHTMLSpanElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLPhraseElementToIDispatch*(
+    x: ptr DispHTMLPhraseElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLPhraseElementToIUnknown*(
+    x: ptr DispHTMLPhraseElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLSpanElementToIDispatch*(
+    x: ptr DispHTMLSpanElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLSpanElementToIUnknown*(
+    x: ptr DispHTMLSpanElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLTableEvents2ToIDispatch*(
+    x: ptr HTMLTableEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLTableEvents2ToIUnknown*(
+    x: ptr HTMLTableEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLTableEventsToIDispatch*(
+    x: ptr HTMLTableEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLTableEventsToIUnknown*(
+    x: ptr HTMLTableEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableToIDispatch*(x: ptr IHTMLTable): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableToIUnknown*(x: ptr IHTMLTable): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTable2ToIDispatch*(x: ptr IHTMLTable2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTable2ToIUnknown*(x: ptr IHTMLTable2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTable3ToIDispatch*(x: ptr IHTMLTable3): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTable3ToIUnknown*(x: ptr IHTMLTable3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTable4ToIDispatch*(x: ptr IHTMLTable4): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTable4ToIUnknown*(x: ptr IHTMLTable4): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableColToIDispatch*(x: ptr IHTMLTableCol): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableColToIUnknown*(x: ptr IHTMLTableCol): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableCol2ToIDispatch*(
+    x: ptr IHTMLTableCol2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableCol2ToIUnknown*(x: ptr IHTMLTableCol2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableCol3ToIDispatch*(
+    x: ptr IHTMLTableCol3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableCol3ToIUnknown*(x: ptr IHTMLTableCol3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableSectionToIDispatch*(
+    x: ptr IHTMLTableSection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableSectionToIUnknown*(
+    x: ptr IHTMLTableSection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableSection2ToIDispatch*(
+    x: ptr IHTMLTableSection2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableSection2ToIUnknown*(
+    x: ptr IHTMLTableSection2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableSection3ToIDispatch*(
+    x: ptr IHTMLTableSection3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableSection3ToIUnknown*(
+    x: ptr IHTMLTableSection3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableSection4ToIDispatch*(
+    x: ptr IHTMLTableSection4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableSection4ToIUnknown*(
+    x: ptr IHTMLTableSection4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableRowToIDispatch*(x: ptr IHTMLTableRow): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableRowToIUnknown*(x: ptr IHTMLTableRow): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableRow2ToIDispatch*(
+    x: ptr IHTMLTableRow2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableRow2ToIUnknown*(x: ptr IHTMLTableRow2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableRow3ToIDispatch*(
+    x: ptr IHTMLTableRow3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableRow3ToIUnknown*(x: ptr IHTMLTableRow3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableRow4ToIDispatch*(
+    x: ptr IHTMLTableRow4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableRow4ToIUnknown*(x: ptr IHTMLTableRow4): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableRowMetricsToIDispatch*(
+    x: ptr IHTMLTableRowMetrics
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableRowMetricsToIUnknown*(
+    x: ptr IHTMLTableRowMetrics
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableCellToIDispatch*(
+    x: ptr IHTMLTableCell
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableCellToIUnknown*(x: ptr IHTMLTableCell): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableCell2ToIDispatch*(
+    x: ptr IHTMLTableCell2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableCell2ToIUnknown*(
+    x: ptr IHTMLTableCell2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTableCell3ToIDispatch*(
+    x: ptr IHTMLTableCell3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTableCell3ToIUnknown*(
+    x: ptr IHTMLTableCell3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLTableToIDispatch*(x: ptr DispHTMLTable): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLTableToIUnknown*(x: ptr DispHTMLTable): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLTableColToIDispatch*(
+    x: ptr DispHTMLTableCol
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLTableColToIUnknown*(
+    x: ptr DispHTMLTableCol
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLTableSectionToIDispatch*(
+    x: ptr DispHTMLTableSection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLTableSectionToIUnknown*(
+    x: ptr DispHTMLTableSection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLTableRowToIDispatch*(
+    x: ptr DispHTMLTableRow
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLTableRowToIUnknown*(
+    x: ptr DispHTMLTableRow
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLTableCellToIDispatch*(
+    x: ptr DispHTMLTableCell
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLTableCellToIUnknown*(
+    x: ptr DispHTMLTableCell
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLScriptEvents2ToIDispatch*(
+    x: ptr HTMLScriptEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLScriptEvents2ToIUnknown*(
+    x: ptr HTMLScriptEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLScriptEventsToIDispatch*(
+    x: ptr HTMLScriptEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLScriptEventsToIUnknown*(
+    x: ptr HTMLScriptEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLScriptElementToIDispatch*(
+    x: ptr IHTMLScriptElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLScriptElementToIUnknown*(
+    x: ptr IHTMLScriptElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLScriptElement2ToIDispatch*(
+    x: ptr IHTMLScriptElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLScriptElement2ToIUnknown*(
+    x: ptr IHTMLScriptElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLScriptElement3ToIDispatch*(
+    x: ptr IHTMLScriptElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLScriptElement3ToIUnknown*(
+    x: ptr IHTMLScriptElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLScriptElement4ToIDispatch*(
+    x: ptr IHTMLScriptElement4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLScriptElement4ToIUnknown*(
+    x: ptr IHTMLScriptElement4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLScriptElementToIDispatch*(
+    x: ptr DispHTMLScriptElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLScriptElementToIUnknown*(
+    x: ptr DispHTMLScriptElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLNoShowElementToIDispatch*(
+    x: ptr IHTMLNoShowElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLNoShowElementToIUnknown*(
+    x: ptr IHTMLNoShowElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLNoShowElementToIDispatch*(
+    x: ptr DispHTMLNoShowElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLNoShowElementToIUnknown*(
+    x: ptr DispHTMLNoShowElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLObjectElementEvents2ToIDispatch*(
+    x: ptr HTMLObjectElementEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLObjectElementEvents2ToIUnknown*(
+    x: ptr HTMLObjectElementEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLObjectElementEventsToIDispatch*(
+    x: ptr HTMLObjectElementEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLObjectElementEventsToIUnknown*(
+    x: ptr HTMLObjectElementEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLObjectElementToIDispatch*(
+    x: ptr IHTMLObjectElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLObjectElementToIUnknown*(
+    x: ptr IHTMLObjectElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLObjectElement2ToIDispatch*(
+    x: ptr IHTMLObjectElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLObjectElement2ToIUnknown*(
+    x: ptr IHTMLObjectElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLObjectElement3ToIDispatch*(
+    x: ptr IHTMLObjectElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLObjectElement3ToIUnknown*(
+    x: ptr IHTMLObjectElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLObjectElement4ToIDispatch*(
+    x: ptr IHTMLObjectElement4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLObjectElement4ToIUnknown*(
+    x: ptr IHTMLObjectElement4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLObjectElement5ToIDispatch*(
+    x: ptr IHTMLObjectElement5
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLObjectElement5ToIUnknown*(
+    x: ptr IHTMLObjectElement5
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLParamElementToIDispatch*(
+    x: ptr IHTMLParamElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLParamElementToIUnknown*(
+    x: ptr IHTMLParamElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLParamElement2ToIDispatch*(
+    x: ptr IHTMLParamElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLParamElement2ToIUnknown*(
+    x: ptr IHTMLParamElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLObjectElementToIDispatch*(
+    x: ptr DispHTMLObjectElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLObjectElementToIUnknown*(
+    x: ptr DispHTMLObjectElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLParamElementToIDispatch*(
+    x: ptr DispHTMLParamElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLParamElementToIUnknown*(
+    x: ptr DispHTMLParamElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLFrameSiteEvents2ToIDispatch*(
+    x: ptr HTMLFrameSiteEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLFrameSiteEvents2ToIUnknown*(
+    x: ptr HTMLFrameSiteEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLFrameSiteEventsToIDispatch*(
+    x: ptr HTMLFrameSiteEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLFrameSiteEventsToIUnknown*(
+    x: ptr HTMLFrameSiteEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFrameBaseToIDispatch*(
+    x: ptr IHTMLFrameBase
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFrameBaseToIUnknown*(x: ptr IHTMLFrameBase): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFrameBase2ToIDispatch*(
+    x: ptr IHTMLFrameBase2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFrameBase2ToIUnknown*(
+    x: ptr IHTMLFrameBase2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFrameBase3ToIDispatch*(
+    x: ptr IHTMLFrameBase3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFrameBase3ToIUnknown*(
+    x: ptr IHTMLFrameBase3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLFrameBaseToIDispatch*(
+    x: ptr DispHTMLFrameBase
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLFrameBaseToIUnknown*(
+    x: ptr DispHTMLFrameBase
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFrameElementToIDispatch*(
+    x: ptr IHTMLFrameElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFrameElementToIUnknown*(
+    x: ptr IHTMLFrameElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFrameElement2ToIDispatch*(
+    x: ptr IHTMLFrameElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFrameElement2ToIUnknown*(
+    x: ptr IHTMLFrameElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFrameElement3ToIDispatch*(
+    x: ptr IHTMLFrameElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFrameElement3ToIUnknown*(
+    x: ptr IHTMLFrameElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLFrameElementToIDispatch*(
+    x: ptr DispHTMLFrameElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLFrameElementToIUnknown*(
+    x: ptr DispHTMLFrameElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLIFrameElementToIDispatch*(
+    x: ptr IHTMLIFrameElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLIFrameElementToIUnknown*(
+    x: ptr IHTMLIFrameElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLIFrameElement2ToIDispatch*(
+    x: ptr IHTMLIFrameElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLIFrameElement2ToIUnknown*(
+    x: ptr IHTMLIFrameElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLIFrameElement3ToIDispatch*(
+    x: ptr IHTMLIFrameElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLIFrameElement3ToIUnknown*(
+    x: ptr IHTMLIFrameElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLIFrameToIDispatch*(
+    x: ptr DispHTMLIFrame
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLIFrameToIUnknown*(x: ptr DispHTMLIFrame): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDivPositionToIDispatch*(
+    x: ptr IHTMLDivPosition
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDivPositionToIUnknown*(
+    x: ptr IHTMLDivPosition
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFieldSetElementToIDispatch*(
+    x: ptr IHTMLFieldSetElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFieldSetElementToIUnknown*(
+    x: ptr IHTMLFieldSetElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFieldSetElement2ToIDispatch*(
+    x: ptr IHTMLFieldSetElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFieldSetElement2ToIUnknown*(
+    x: ptr IHTMLFieldSetElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLLegendElementToIDispatch*(
+    x: ptr IHTMLLegendElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLLegendElementToIUnknown*(
+    x: ptr IHTMLLegendElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLLegendElement2ToIDispatch*(
+    x: ptr IHTMLLegendElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLLegendElement2ToIUnknown*(
+    x: ptr IHTMLLegendElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLDivPositionToIDispatch*(
+    x: ptr DispHTMLDivPosition
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLDivPositionToIUnknown*(
+    x: ptr DispHTMLDivPosition
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLFieldSetElementToIDispatch*(
+    x: ptr DispHTMLFieldSetElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLFieldSetElementToIUnknown*(
+    x: ptr DispHTMLFieldSetElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLLegendElementToIDispatch*(
+    x: ptr DispHTMLLegendElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLLegendElementToIUnknown*(
+    x: ptr DispHTMLLegendElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLSpanFlowToIDispatch*(x: ptr IHTMLSpanFlow): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLSpanFlowToIUnknown*(x: ptr IHTMLSpanFlow): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLSpanFlowToIDispatch*(
+    x: ptr DispHTMLSpanFlow
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLSpanFlowToIUnknown*(
+    x: ptr DispHTMLSpanFlow
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFrameSetElementToIDispatch*(
+    x: ptr IHTMLFrameSetElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFrameSetElementToIUnknown*(
+    x: ptr IHTMLFrameSetElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFrameSetElement2ToIDispatch*(
+    x: ptr IHTMLFrameSetElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFrameSetElement2ToIUnknown*(
+    x: ptr IHTMLFrameSetElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFrameSetElement3ToIDispatch*(
+    x: ptr IHTMLFrameSetElement3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFrameSetElement3ToIUnknown*(
+    x: ptr IHTMLFrameSetElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLFrameSetSiteToIDispatch*(
+    x: ptr DispHTMLFrameSetSite
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLFrameSetSiteToIUnknown*(
+    x: ptr DispHTMLFrameSetSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLBGsoundToIDispatch*(x: ptr IHTMLBGsound): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLBGsoundToIUnknown*(x: ptr IHTMLBGsound): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLBGsoundToIDispatch*(
+    x: ptr DispHTMLBGsound
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLBGsoundToIUnknown*(
+    x: ptr DispHTMLBGsound
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFontNamesCollectionToIDispatch*(
+    x: ptr IHTMLFontNamesCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFontNamesCollectionToIUnknown*(
+    x: ptr IHTMLFontNamesCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLFontSizesCollectionToIDispatch*(
+    x: ptr IHTMLFontSizesCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLFontSizesCollectionToIUnknown*(
+    x: ptr IHTMLFontSizesCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLOptionsHolderToIDispatch*(
+    x: ptr IHTMLOptionsHolder
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLOptionsHolderToIUnknown*(
+    x: ptr IHTMLOptionsHolder
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLStyleElementEvents2ToIDispatch*(
+    x: ptr HTMLStyleElementEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLStyleElementEvents2ToIUnknown*(
+    x: ptr HTMLStyleElementEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLStyleElementEventsToIDispatch*(
+    x: ptr HTMLStyleElementEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLStyleElementEventsToIUnknown*(
+    x: ptr HTMLStyleElementEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleElementToIDispatch*(
+    x: ptr IHTMLStyleElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleElementToIUnknown*(
+    x: ptr IHTMLStyleElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleElement2ToIDispatch*(
+    x: ptr IHTMLStyleElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleElement2ToIUnknown*(
+    x: ptr IHTMLStyleElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLStyleElementToIDispatch*(
+    x: ptr DispHTMLStyleElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLStyleElementToIUnknown*(
+    x: ptr DispHTMLStyleElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleFontFaceToIDispatch*(
+    x: ptr IHTMLStyleFontFace
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleFontFaceToIUnknown*(
+    x: ptr IHTMLStyleFontFace
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleFontFace2ToIDispatch*(
+    x: ptr IHTMLStyleFontFace2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleFontFace2ToIUnknown*(
+    x: ptr IHTMLStyleFontFace2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLStyleFontFaceToIDispatch*(
+    x: ptr DispHTMLStyleFontFace
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLStyleFontFaceToIUnknown*(
+    x: ptr DispHTMLStyleFontFace
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLXDomainRequestToIDispatch*(
+    x: ptr IHTMLXDomainRequest
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLXDomainRequestToIUnknown*(
+    x: ptr IHTMLXDomainRequest
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLXDomainRequestFactoryToIDispatch*(
+    x: ptr IHTMLXDomainRequestFactory
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLXDomainRequestFactoryToIUnknown*(
+    x: ptr IHTMLXDomainRequestFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispXDomainRequestToIDispatch*(
+    x: ptr DispXDomainRequest
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispXDomainRequestToIUnknown*(
+    x: ptr DispXDomainRequest
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStorageToIDispatch*(x: ptr IHTMLStorage): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStorageToIUnknown*(x: ptr IHTMLStorage): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStorage2ToIDispatch*(x: ptr IHTMLStorage2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStorage2ToIUnknown*(x: ptr IHTMLStorage2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLStorageToIDispatch*(
+    x: ptr DispHTMLStorage
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLStorageToIUnknown*(
+    x: ptr DispHTMLStorage
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEventTargetToIDispatch*(x: ptr IEventTarget): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIEventTargetToIUnknown*(x: ptr IEventTarget): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMEventToIDispatch*(x: ptr IDOMEvent): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMEventToIUnknown*(x: ptr IDOMEvent): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMEventToIDispatch*(x: ptr DispDOMEvent): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMEventToIUnknown*(x: ptr DispDOMEvent): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMUIEventToIDispatch*(x: ptr IDOMUIEvent): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMUIEventToIUnknown*(x: ptr IDOMUIEvent): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMUIEventToIDispatch*(
+    x: ptr DispDOMUIEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMUIEventToIUnknown*(x: ptr DispDOMUIEvent): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMMouseEventToIDispatch*(
+    x: ptr IDOMMouseEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMMouseEventToIUnknown*(x: ptr IDOMMouseEvent): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMMouseEventToIDispatch*(
+    x: ptr DispDOMMouseEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMMouseEventToIUnknown*(
+    x: ptr DispDOMMouseEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMDragEventToIDispatch*(x: ptr IDOMDragEvent): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMDragEventToIUnknown*(x: ptr IDOMDragEvent): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMDragEventToIDispatch*(
+    x: ptr DispDOMDragEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMDragEventToIUnknown*(
+    x: ptr DispDOMDragEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMMouseWheelEventToIDispatch*(
+    x: ptr IDOMMouseWheelEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMMouseWheelEventToIUnknown*(
+    x: ptr IDOMMouseWheelEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMMouseWheelEventToIDispatch*(
+    x: ptr DispDOMMouseWheelEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMMouseWheelEventToIUnknown*(
+    x: ptr DispDOMMouseWheelEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMWheelEventToIDispatch*(
+    x: ptr IDOMWheelEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMWheelEventToIUnknown*(x: ptr IDOMWheelEvent): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMWheelEventToIDispatch*(
+    x: ptr DispDOMWheelEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMWheelEventToIUnknown*(
+    x: ptr DispDOMWheelEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMTextEventToIDispatch*(x: ptr IDOMTextEvent): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMTextEventToIUnknown*(x: ptr IDOMTextEvent): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMTextEventToIDispatch*(
+    x: ptr DispDOMTextEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMTextEventToIUnknown*(
+    x: ptr DispDOMTextEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMKeyboardEventToIDispatch*(
+    x: ptr IDOMKeyboardEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMKeyboardEventToIUnknown*(
+    x: ptr IDOMKeyboardEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMKeyboardEventToIDispatch*(
+    x: ptr DispDOMKeyboardEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMKeyboardEventToIUnknown*(
+    x: ptr DispDOMKeyboardEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMCompositionEventToIDispatch*(
+    x: ptr IDOMCompositionEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMCompositionEventToIUnknown*(
+    x: ptr IDOMCompositionEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMCompositionEventToIDispatch*(
+    x: ptr DispDOMCompositionEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMCompositionEventToIUnknown*(
+    x: ptr DispDOMCompositionEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMMutationEventToIDispatch*(
+    x: ptr IDOMMutationEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMMutationEventToIUnknown*(
+    x: ptr IDOMMutationEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMMutationEventToIDispatch*(
+    x: ptr DispDOMMutationEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMMutationEventToIUnknown*(
+    x: ptr DispDOMMutationEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMBeforeUnloadEventToIDispatch*(
+    x: ptr IDOMBeforeUnloadEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMBeforeUnloadEventToIUnknown*(
+    x: ptr IDOMBeforeUnloadEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMBeforeUnloadEventToIDispatch*(
+    x: ptr DispDOMBeforeUnloadEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMBeforeUnloadEventToIUnknown*(
+    x: ptr DispDOMBeforeUnloadEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMFocusEventToIDispatch*(
+    x: ptr IDOMFocusEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMFocusEventToIUnknown*(x: ptr IDOMFocusEvent): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMFocusEventToIDispatch*(
+    x: ptr DispDOMFocusEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMFocusEventToIUnknown*(
+    x: ptr DispDOMFocusEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMCustomEventToIDispatch*(
+    x: ptr IDOMCustomEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMCustomEventToIUnknown*(
+    x: ptr IDOMCustomEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMCustomEventToIDispatch*(
+    x: ptr DispDOMCustomEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMCustomEventToIUnknown*(
+    x: ptr DispDOMCustomEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICanvasGradientToIDispatch*(
+    x: ptr ICanvasGradient
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterICanvasGradientToIUnknown*(
+    x: ptr ICanvasGradient
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICanvasPatternToIDispatch*(
+    x: ptr ICanvasPattern
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterICanvasPatternToIUnknown*(x: ptr ICanvasPattern): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICanvasTextMetricsToIDispatch*(
+    x: ptr ICanvasTextMetrics
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterICanvasTextMetricsToIUnknown*(
+    x: ptr ICanvasTextMetrics
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICanvasImageDataToIDispatch*(
+    x: ptr ICanvasImageData
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterICanvasImageDataToIUnknown*(
+    x: ptr ICanvasImageData
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICanvasPixelArrayToIDispatch*(
+    x: ptr ICanvasPixelArray
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterICanvasPixelArrayToIUnknown*(
+    x: ptr ICanvasPixelArray
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICanvasRenderingContext2DToIDispatch*(
+    x: ptr ICanvasRenderingContext2D
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterICanvasRenderingContext2DToIUnknown*(
+    x: ptr ICanvasRenderingContext2D
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCanvasElementToIDispatch*(
+    x: ptr IHTMLCanvasElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLCanvasElementToIUnknown*(
+    x: ptr IHTMLCanvasElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispCanvasGradientToIDispatch*(
+    x: ptr DispCanvasGradient
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispCanvasGradientToIUnknown*(
+    x: ptr DispCanvasGradient
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispCanvasPatternToIDispatch*(
+    x: ptr DispCanvasPattern
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispCanvasPatternToIUnknown*(
+    x: ptr DispCanvasPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispCanvasTextMetricsToIDispatch*(
+    x: ptr DispCanvasTextMetrics
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispCanvasTextMetricsToIUnknown*(
+    x: ptr DispCanvasTextMetrics
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispCanvasImageDataToIDispatch*(
+    x: ptr DispCanvasImageData
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispCanvasImageDataToIUnknown*(
+    x: ptr DispCanvasImageData
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispCanvasRenderingContext2DToIDispatch*(
+    x: ptr DispCanvasRenderingContext2D
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispCanvasRenderingContext2DToIUnknown*(
+    x: ptr DispCanvasRenderingContext2D
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLCanvasElementToIDispatch*(
+    x: ptr DispHTMLCanvasElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLCanvasElementToIUnknown*(
+    x: ptr DispHTMLCanvasElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMProgressEventToIDispatch*(
+    x: ptr IDOMProgressEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMProgressEventToIUnknown*(
+    x: ptr IDOMProgressEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMProgressEventToIDispatch*(
+    x: ptr DispDOMProgressEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMProgressEventToIUnknown*(
+    x: ptr DispDOMProgressEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMMessageEventToIDispatch*(
+    x: ptr IDOMMessageEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMMessageEventToIUnknown*(
+    x: ptr IDOMMessageEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMMessageEventToIDispatch*(
+    x: ptr DispDOMMessageEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMMessageEventToIUnknown*(
+    x: ptr DispDOMMessageEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMSiteModeEventToIDispatch*(
+    x: ptr IDOMSiteModeEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMSiteModeEventToIUnknown*(
+    x: ptr IDOMSiteModeEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMSiteModeEventToIDispatch*(
+    x: ptr DispDOMSiteModeEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMSiteModeEventToIUnknown*(
+    x: ptr DispDOMSiteModeEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMStorageEventToIDispatch*(
+    x: ptr IDOMStorageEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMStorageEventToIUnknown*(
+    x: ptr IDOMStorageEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMStorageEventToIDispatch*(
+    x: ptr DispDOMStorageEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMStorageEventToIUnknown*(
+    x: ptr DispDOMStorageEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLHttpRequestEventTargetToIDispatch*(
+    x: ptr IXMLHttpRequestEventTarget
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLHttpRequestEventTargetToIUnknown*(
+    x: ptr IXMLHttpRequestEventTarget
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispXMLHttpRequestEventTargetToIDispatch*(
+    x: ptr DispXMLHttpRequestEventTarget
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispXMLHttpRequestEventTargetToIUnknown*(
+    x: ptr DispXMLHttpRequestEventTarget
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLXMLHttpRequestEventsToIDispatch*(
+    x: ptr HTMLXMLHttpRequestEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLXMLHttpRequestEventsToIUnknown*(
+    x: ptr HTMLXMLHttpRequestEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLXMLHttpRequestToIDispatch*(
+    x: ptr IHTMLXMLHttpRequest
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLXMLHttpRequestToIUnknown*(
+    x: ptr IHTMLXMLHttpRequest
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLXMLHttpRequest2ToIDispatch*(
+    x: ptr IHTMLXMLHttpRequest2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLXMLHttpRequest2ToIUnknown*(
+    x: ptr IHTMLXMLHttpRequest2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLXMLHttpRequestFactoryToIDispatch*(
+    x: ptr IHTMLXMLHttpRequestFactory
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLXMLHttpRequestFactoryToIUnknown*(
+    x: ptr IHTMLXMLHttpRequestFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLXMLHttpRequestToIDispatch*(
+    x: ptr DispHTMLXMLHttpRequest
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLXMLHttpRequestToIUnknown*(
+    x: ptr DispHTMLXMLHttpRequest
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAngleToIDispatch*(x: ptr ISVGAngle): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAngleToIUnknown*(x: ptr ISVGAngle): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGStylableToIDispatch*(x: ptr ISVGStylable): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGStylableToIUnknown*(x: ptr ISVGStylable): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGLocatableToIDispatch*(x: ptr ISVGLocatable): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGLocatableToIUnknown*(x: ptr ISVGLocatable): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGTransformableToIDispatch*(
+    x: ptr ISVGTransformable
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGTransformableToIUnknown*(
+    x: ptr ISVGTransformable
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGTestsToIDispatch*(x: ptr ISVGTests): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGTestsToIUnknown*(x: ptr ISVGTests): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGLangSpaceToIDispatch*(x: ptr ISVGLangSpace): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGLangSpaceToIUnknown*(x: ptr ISVGLangSpace): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGExternalResourcesRequiredToIDispatch*(
+    x: ptr ISVGExternalResourcesRequired
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGExternalResourcesRequiredToIUnknown*(
+    x: ptr ISVGExternalResourcesRequired
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGFitToViewBoxToIDispatch*(
+    x: ptr ISVGFitToViewBox
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGFitToViewBoxToIUnknown*(
+    x: ptr ISVGFitToViewBox
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGZoomAndPanToIDispatch*(
+    x: ptr ISVGZoomAndPan
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGZoomAndPanToIUnknown*(x: ptr ISVGZoomAndPan): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGURIReferenceToIDispatch*(
+    x: ptr ISVGURIReference
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGURIReferenceToIUnknown*(
+    x: ptr ISVGURIReference
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAnimatedAngleToIDispatch*(
+    x: ptr ISVGAnimatedAngle
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAnimatedAngleToIUnknown*(
+    x: ptr ISVGAnimatedAngle
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAnimatedTransformListToIDispatch*(
+    x: ptr ISVGAnimatedTransformList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAnimatedTransformListToIUnknown*(
+    x: ptr ISVGAnimatedTransformList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAnimatedBooleanToIDispatch*(
+    x: ptr ISVGAnimatedBoolean
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAnimatedBooleanToIUnknown*(
+    x: ptr ISVGAnimatedBoolean
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAnimatedEnumerationToIDispatch*(
+    x: ptr ISVGAnimatedEnumeration
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAnimatedEnumerationToIUnknown*(
+    x: ptr ISVGAnimatedEnumeration
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAnimatedIntegerToIDispatch*(
+    x: ptr ISVGAnimatedInteger
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAnimatedIntegerToIUnknown*(
+    x: ptr ISVGAnimatedInteger
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAnimatedLengthToIDispatch*(
+    x: ptr ISVGAnimatedLength
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAnimatedLengthToIUnknown*(
+    x: ptr ISVGAnimatedLength
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAnimatedLengthListToIDispatch*(
+    x: ptr ISVGAnimatedLengthList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAnimatedLengthListToIUnknown*(
+    x: ptr ISVGAnimatedLengthList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAnimatedNumberToIDispatch*(
+    x: ptr ISVGAnimatedNumber
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAnimatedNumberToIUnknown*(
+    x: ptr ISVGAnimatedNumber
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAnimatedNumberListToIDispatch*(
+    x: ptr ISVGAnimatedNumberList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAnimatedNumberListToIUnknown*(
+    x: ptr ISVGAnimatedNumberList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAnimatedRectToIDispatch*(
+    x: ptr ISVGAnimatedRect
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAnimatedRectToIUnknown*(
+    x: ptr ISVGAnimatedRect
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAnimatedStringToIDispatch*(
+    x: ptr ISVGAnimatedString
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAnimatedStringToIUnknown*(
+    x: ptr ISVGAnimatedString
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGClipPathElementToIDispatch*(
+    x: ptr ISVGClipPathElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGClipPathElementToIUnknown*(
+    x: ptr ISVGClipPathElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGClipPathElementToIDispatch*(
+    x: ptr DispSVGClipPathElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGClipPathElementToIUnknown*(
+    x: ptr DispSVGClipPathElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGDocumentToIDispatch*(x: ptr ISVGDocument): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGDocumentToIUnknown*(x: ptr ISVGDocument): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIGetSVGDocumentToIDispatch*(
+    x: ptr IGetSVGDocument
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIGetSVGDocumentToIUnknown*(
+    x: ptr IGetSVGDocument
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGElementToIDispatch*(x: ptr ISVGElement): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGElementToIUnknown*(x: ptr ISVGElement): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGElementToIDispatch*(
+    x: ptr DispSVGElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGElementToIUnknown*(x: ptr DispSVGElement): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIICCSVGColorToIDispatch*(x: ptr IICCSVGColor): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIICCSVGColorToIUnknown*(x: ptr IICCSVGColor): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGLengthToIDispatch*(x: ptr ISVGLength): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGLengthToIUnknown*(x: ptr ISVGLength): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGLengthListToIDispatch*(
+    x: ptr ISVGLengthList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGLengthListToIUnknown*(x: ptr ISVGLengthList): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGMatrixToIDispatch*(x: ptr ISVGMatrix): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGMatrixToIUnknown*(x: ptr ISVGMatrix): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGNumberToIDispatch*(x: ptr ISVGNumber): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGNumberToIUnknown*(x: ptr ISVGNumber): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGNumberListToIDispatch*(
+    x: ptr ISVGNumberList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGNumberListToIUnknown*(x: ptr ISVGNumberList): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPaintToIDispatch*(x: ptr ISVGPaint): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPaintToIUnknown*(x: ptr ISVGPaint): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPatternElementToIDispatch*(
+    x: ptr ISVGPatternElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPatternElementToIUnknown*(
+    x: ptr ISVGPatternElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPatternElementToIDispatch*(
+    x: ptr DispSVGPatternElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPatternElementToIUnknown*(
+    x: ptr DispSVGPatternElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegToIDispatch*(x: ptr ISVGPathSeg): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegToIUnknown*(x: ptr ISVGPathSeg): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegArcAbsToIDispatch*(
+    x: ptr ISVGPathSegArcAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegArcAbsToIUnknown*(
+    x: ptr ISVGPathSegArcAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegArcRelToIDispatch*(
+    x: ptr ISVGPathSegArcRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegArcRelToIUnknown*(
+    x: ptr ISVGPathSegArcRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegClosePathToIDispatch*(
+    x: ptr ISVGPathSegClosePath
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegClosePathToIUnknown*(
+    x: ptr ISVGPathSegClosePath
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegMovetoAbsToIDispatch*(
+    x: ptr ISVGPathSegMovetoAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegMovetoAbsToIUnknown*(
+    x: ptr ISVGPathSegMovetoAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegMovetoRelToIDispatch*(
+    x: ptr ISVGPathSegMovetoRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegMovetoRelToIUnknown*(
+    x: ptr ISVGPathSegMovetoRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegLinetoAbsToIDispatch*(
+    x: ptr ISVGPathSegLinetoAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegLinetoAbsToIUnknown*(
+    x: ptr ISVGPathSegLinetoAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegLinetoRelToIDispatch*(
+    x: ptr ISVGPathSegLinetoRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegLinetoRelToIUnknown*(
+    x: ptr ISVGPathSegLinetoRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegCurvetoCubicAbsToIDispatch*(
+    x: ptr ISVGPathSegCurvetoCubicAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegCurvetoCubicAbsToIUnknown*(
+    x: ptr ISVGPathSegCurvetoCubicAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegCurvetoCubicRelToIDispatch*(
+    x: ptr ISVGPathSegCurvetoCubicRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegCurvetoCubicRelToIUnknown*(
+    x: ptr ISVGPathSegCurvetoCubicRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegCurvetoCubicSmoothAbsToIDispatch*(
+    x: ptr ISVGPathSegCurvetoCubicSmoothAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegCurvetoCubicSmoothAbsToIUnknown*(
+    x: ptr ISVGPathSegCurvetoCubicSmoothAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegCurvetoCubicSmoothRelToIDispatch*(
+    x: ptr ISVGPathSegCurvetoCubicSmoothRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegCurvetoCubicSmoothRelToIUnknown*(
+    x: ptr ISVGPathSegCurvetoCubicSmoothRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegCurvetoQuadraticAbsToIDispatch*(
+    x: ptr ISVGPathSegCurvetoQuadraticAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegCurvetoQuadraticAbsToIUnknown*(
+    x: ptr ISVGPathSegCurvetoQuadraticAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegCurvetoQuadraticRelToIDispatch*(
+    x: ptr ISVGPathSegCurvetoQuadraticRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegCurvetoQuadraticRelToIUnknown*(
+    x: ptr ISVGPathSegCurvetoQuadraticRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegCurvetoQuadraticSmoothAbsToIDispatch*(
+    x: ptr ISVGPathSegCurvetoQuadraticSmoothAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegCurvetoQuadraticSmoothAbsToIUnknown*(
+    x: ptr ISVGPathSegCurvetoQuadraticSmoothAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegCurvetoQuadraticSmoothRelToIDispatch*(
+    x: ptr ISVGPathSegCurvetoQuadraticSmoothRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegCurvetoQuadraticSmoothRelToIUnknown*(
+    x: ptr ISVGPathSegCurvetoQuadraticSmoothRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegLinetoHorizontalAbsToIDispatch*(
+    x: ptr ISVGPathSegLinetoHorizontalAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegLinetoHorizontalAbsToIUnknown*(
+    x: ptr ISVGPathSegLinetoHorizontalAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegLinetoHorizontalRelToIDispatch*(
+    x: ptr ISVGPathSegLinetoHorizontalRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegLinetoHorizontalRelToIUnknown*(
+    x: ptr ISVGPathSegLinetoHorizontalRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegLinetoVerticalAbsToIDispatch*(
+    x: ptr ISVGPathSegLinetoVerticalAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegLinetoVerticalAbsToIUnknown*(
+    x: ptr ISVGPathSegLinetoVerticalAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegLinetoVerticalRelToIDispatch*(
+    x: ptr ISVGPathSegLinetoVerticalRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegLinetoVerticalRelToIUnknown*(
+    x: ptr ISVGPathSegLinetoVerticalRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegArcAbsToIDispatch*(
+    x: ptr DispSVGPathSegArcAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegArcAbsToIUnknown*(
+    x: ptr DispSVGPathSegArcAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegArcRelToIDispatch*(
+    x: ptr DispSVGPathSegArcRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegArcRelToIUnknown*(
+    x: ptr DispSVGPathSegArcRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegClosePathToIDispatch*(
+    x: ptr DispSVGPathSegClosePath
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegClosePathToIUnknown*(
+    x: ptr DispSVGPathSegClosePath
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegMovetoAbsToIDispatch*(
+    x: ptr DispSVGPathSegMovetoAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegMovetoAbsToIUnknown*(
+    x: ptr DispSVGPathSegMovetoAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegMovetoRelToIDispatch*(
+    x: ptr DispSVGPathSegMovetoRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegMovetoRelToIUnknown*(
+    x: ptr DispSVGPathSegMovetoRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegLinetoAbsToIDispatch*(
+    x: ptr DispSVGPathSegLinetoAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegLinetoAbsToIUnknown*(
+    x: ptr DispSVGPathSegLinetoAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegLinetoRelToIDispatch*(
+    x: ptr DispSVGPathSegLinetoRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegLinetoRelToIUnknown*(
+    x: ptr DispSVGPathSegLinetoRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegCurvetoCubicAbsToIDispatch*(
+    x: ptr DispSVGPathSegCurvetoCubicAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegCurvetoCubicAbsToIUnknown*(
+    x: ptr DispSVGPathSegCurvetoCubicAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegCurvetoCubicRelToIDispatch*(
+    x: ptr DispSVGPathSegCurvetoCubicRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegCurvetoCubicRelToIUnknown*(
+    x: ptr DispSVGPathSegCurvetoCubicRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegCurvetoCubicSmoothAbsToIDispatch*(
+    x: ptr DispSVGPathSegCurvetoCubicSmoothAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegCurvetoCubicSmoothAbsToIUnknown*(
+    x: ptr DispSVGPathSegCurvetoCubicSmoothAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegCurvetoCubicSmoothRelToIDispatch*(
+    x: ptr DispSVGPathSegCurvetoCubicSmoothRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegCurvetoCubicSmoothRelToIUnknown*(
+    x: ptr DispSVGPathSegCurvetoCubicSmoothRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegCurvetoQuadraticAbsToIDispatch*(
+    x: ptr DispSVGPathSegCurvetoQuadraticAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegCurvetoQuadraticAbsToIUnknown*(
+    x: ptr DispSVGPathSegCurvetoQuadraticAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegCurvetoQuadraticRelToIDispatch*(
+    x: ptr DispSVGPathSegCurvetoQuadraticRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegCurvetoQuadraticRelToIUnknown*(
+    x: ptr DispSVGPathSegCurvetoQuadraticRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegCurvetoQuadraticSmoothAbsToIDispatch*(
+    x: ptr DispSVGPathSegCurvetoQuadraticSmoothAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegCurvetoQuadraticSmoothAbsToIUnknown*(
+    x: ptr DispSVGPathSegCurvetoQuadraticSmoothAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegCurvetoQuadraticSmoothRelToIDispatch*(
+    x: ptr DispSVGPathSegCurvetoQuadraticSmoothRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegCurvetoQuadraticSmoothRelToIUnknown*(
+    x: ptr DispSVGPathSegCurvetoQuadraticSmoothRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegLinetoHorizontalAbsToIDispatch*(
+    x: ptr DispSVGPathSegLinetoHorizontalAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegLinetoHorizontalAbsToIUnknown*(
+    x: ptr DispSVGPathSegLinetoHorizontalAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegLinetoHorizontalRelToIDispatch*(
+    x: ptr DispSVGPathSegLinetoHorizontalRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegLinetoHorizontalRelToIUnknown*(
+    x: ptr DispSVGPathSegLinetoHorizontalRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegLinetoVerticalAbsToIDispatch*(
+    x: ptr DispSVGPathSegLinetoVerticalAbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegLinetoVerticalAbsToIUnknown*(
+    x: ptr DispSVGPathSegLinetoVerticalAbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathSegLinetoVerticalRelToIDispatch*(
+    x: ptr DispSVGPathSegLinetoVerticalRel
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathSegLinetoVerticalRelToIUnknown*(
+    x: ptr DispSVGPathSegLinetoVerticalRel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathSegListToIDispatch*(
+    x: ptr ISVGPathSegList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathSegListToIUnknown*(
+    x: ptr ISVGPathSegList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPointToIDispatch*(x: ptr ISVGPoint): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPointToIUnknown*(x: ptr ISVGPoint): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPointListToIDispatch*(x: ptr ISVGPointList): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPointListToIUnknown*(x: ptr ISVGPointList): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGRectToIDispatch*(x: ptr ISVGRect): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGRectToIUnknown*(x: ptr ISVGRect): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGStringListToIDispatch*(
+    x: ptr ISVGStringList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGStringListToIUnknown*(x: ptr ISVGStringList): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGViewSpecToIDispatch*(x: ptr ISVGViewSpec): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGViewSpecToIUnknown*(x: ptr ISVGViewSpec): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGTransformToIDispatch*(x: ptr ISVGTransform): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGTransformToIUnknown*(x: ptr ISVGTransform): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGSVGElementToIDispatch*(
+    x: ptr ISVGSVGElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGSVGElementToIUnknown*(x: ptr ISVGSVGElement): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGSVGElementToIDispatch*(
+    x: ptr DispSVGSVGElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGSVGElementToIUnknown*(
+    x: ptr DispSVGSVGElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGUseElementToIDispatch*(
+    x: ptr ISVGUseElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGUseElementToIUnknown*(x: ptr ISVGUseElement): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGUseElementToIDispatch*(
+    x: ptr DispSVGUseElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGUseElementToIUnknown*(
+    x: ptr DispSVGUseElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLStyleSheetRulesAppliedCollectionToIDispatch*(
+    x: ptr IHTMLStyleSheetRulesAppliedCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLStyleSheetRulesAppliedCollectionToIUnknown*(
+    x: ptr IHTMLStyleSheetRulesAppliedCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRulesAppliedToIDispatch*(x: ptr IRulesApplied): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIRulesAppliedToIUnknown*(x: ptr IRulesApplied): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRulesAppliedCollectionToIDispatch*(
+    x: ptr IRulesAppliedCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIRulesAppliedCollectionToIUnknown*(
+    x: ptr IRulesAppliedCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLStyleSheetRulesAppliedCollectionToIDispatch*(
+    x: ptr DispHTMLStyleSheetRulesAppliedCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLStyleSheetRulesAppliedCollectionToIUnknown*(
+    x: ptr DispHTMLStyleSheetRulesAppliedCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispRulesAppliedToIDispatch*(
+    x: ptr DispRulesApplied
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispRulesAppliedToIUnknown*(
+    x: ptr DispRulesApplied
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispRulesAppliedCollectionToIDispatch*(
+    x: ptr DispRulesAppliedCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispRulesAppliedCollectionToIUnknown*(
+    x: ptr DispRulesAppliedCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLW3CComputedStyleToIDispatch*(
+    x: ptr DispHTMLW3CComputedStyle
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLW3CComputedStyleToIUnknown*(
+    x: ptr DispHTMLW3CComputedStyle
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGTransformListToIDispatch*(
+    x: ptr ISVGTransformList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGTransformListToIUnknown*(
+    x: ptr ISVGTransformList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAnimatedPointsToIDispatch*(
+    x: ptr ISVGAnimatedPoints
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAnimatedPointsToIUnknown*(
+    x: ptr ISVGAnimatedPoints
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGCircleElementToIDispatch*(
+    x: ptr ISVGCircleElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGCircleElementToIUnknown*(
+    x: ptr ISVGCircleElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGEllipseElementToIDispatch*(
+    x: ptr ISVGEllipseElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGEllipseElementToIUnknown*(
+    x: ptr ISVGEllipseElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGLineElementToIDispatch*(
+    x: ptr ISVGLineElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGLineElementToIUnknown*(
+    x: ptr ISVGLineElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGRectElementToIDispatch*(
+    x: ptr ISVGRectElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGRectElementToIUnknown*(
+    x: ptr ISVGRectElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPolygonElementToIDispatch*(
+    x: ptr ISVGPolygonElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPolygonElementToIUnknown*(
+    x: ptr ISVGPolygonElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPolylineElementToIDispatch*(
+    x: ptr ISVGPolylineElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPolylineElementToIUnknown*(
+    x: ptr ISVGPolylineElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGCircleElementToIDispatch*(
+    x: ptr DispSVGCircleElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGCircleElementToIUnknown*(
+    x: ptr DispSVGCircleElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGEllipseElementToIDispatch*(
+    x: ptr DispSVGEllipseElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGEllipseElementToIUnknown*(
+    x: ptr DispSVGEllipseElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGLineElementToIDispatch*(
+    x: ptr DispSVGLineElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGLineElementToIUnknown*(
+    x: ptr DispSVGLineElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGRectElementToIDispatch*(
+    x: ptr DispSVGRectElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGRectElementToIUnknown*(
+    x: ptr DispSVGRectElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPolygonElementToIDispatch*(
+    x: ptr DispSVGPolygonElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPolygonElementToIUnknown*(
+    x: ptr DispSVGPolygonElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPolylineElementToIDispatch*(
+    x: ptr DispSVGPolylineElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPolylineElementToIUnknown*(
+    x: ptr DispSVGPolylineElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGGElementToIDispatch*(x: ptr ISVGGElement): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGGElementToIUnknown*(x: ptr ISVGGElement): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGGElementToIDispatch*(
+    x: ptr DispSVGGElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGGElementToIUnknown*(
+    x: ptr DispSVGGElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGSymbolElementToIDispatch*(
+    x: ptr ISVGSymbolElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGSymbolElementToIUnknown*(
+    x: ptr ISVGSymbolElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGSymbolElementToIDispatch*(
+    x: ptr DispSVGSymbolElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGSymbolElementToIUnknown*(
+    x: ptr DispSVGSymbolElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGDefsElementToIDispatch*(
+    x: ptr ISVGDefsElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGDefsElementToIUnknown*(
+    x: ptr ISVGDefsElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGDefsElementToIDispatch*(
+    x: ptr DispSVGDefsElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGDefsElementToIUnknown*(
+    x: ptr DispSVGDefsElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAnimatedPathDataToIDispatch*(
+    x: ptr ISVGAnimatedPathData
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAnimatedPathDataToIUnknown*(
+    x: ptr ISVGAnimatedPathData
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPathElementToIDispatch*(
+    x: ptr ISVGPathElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPathElementToIUnknown*(
+    x: ptr ISVGPathElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGPathElementToIDispatch*(
+    x: ptr DispSVGPathElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGPathElementToIUnknown*(
+    x: ptr DispSVGPathElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGPreserveAspectRatioToIDispatch*(
+    x: ptr ISVGPreserveAspectRatio
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGPreserveAspectRatioToIUnknown*(
+    x: ptr ISVGPreserveAspectRatio
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGTextElementToIDispatch*(
+    x: ptr ISVGTextElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGTextElementToIUnknown*(
+    x: ptr ISVGTextElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGTextElementToIDispatch*(
+    x: ptr DispSVGTextElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGTextElementToIUnknown*(
+    x: ptr DispSVGTextElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAnimatedPreserveAspectRatioToIDispatch*(
+    x: ptr ISVGAnimatedPreserveAspectRatio
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAnimatedPreserveAspectRatioToIUnknown*(
+    x: ptr ISVGAnimatedPreserveAspectRatio
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGImageElementToIDispatch*(
+    x: ptr ISVGImageElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGImageElementToIUnknown*(
+    x: ptr ISVGImageElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGImageElementToIDispatch*(
+    x: ptr DispSVGImageElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGImageElementToIUnknown*(
+    x: ptr DispSVGImageElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGStopElementToIDispatch*(
+    x: ptr ISVGStopElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGStopElementToIUnknown*(
+    x: ptr ISVGStopElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGStopElementToIDispatch*(
+    x: ptr DispSVGStopElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGStopElementToIUnknown*(
+    x: ptr DispSVGStopElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGGradientElementToIDispatch*(
+    x: ptr ISVGGradientElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGGradientElementToIUnknown*(
+    x: ptr ISVGGradientElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGGradientElementToIDispatch*(
+    x: ptr DispSVGGradientElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGGradientElementToIUnknown*(
+    x: ptr DispSVGGradientElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGLinearGradientElementToIDispatch*(
+    x: ptr ISVGLinearGradientElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGLinearGradientElementToIUnknown*(
+    x: ptr ISVGLinearGradientElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGLinearGradientElementToIDispatch*(
+    x: ptr DispSVGLinearGradientElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGLinearGradientElementToIUnknown*(
+    x: ptr DispSVGLinearGradientElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGRadialGradientElementToIDispatch*(
+    x: ptr ISVGRadialGradientElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGRadialGradientElementToIUnknown*(
+    x: ptr ISVGRadialGradientElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGRadialGradientElementToIDispatch*(
+    x: ptr DispSVGRadialGradientElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGRadialGradientElementToIUnknown*(
+    x: ptr DispSVGRadialGradientElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGMaskElementToIDispatch*(
+    x: ptr ISVGMaskElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGMaskElementToIUnknown*(
+    x: ptr ISVGMaskElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGMaskElementToIDispatch*(
+    x: ptr DispSVGMaskElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGMaskElementToIUnknown*(
+    x: ptr DispSVGMaskElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGMarkerElementToIDispatch*(
+    x: ptr ISVGMarkerElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGMarkerElementToIUnknown*(
+    x: ptr ISVGMarkerElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGMarkerElementToIDispatch*(
+    x: ptr DispSVGMarkerElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGMarkerElementToIUnknown*(
+    x: ptr DispSVGMarkerElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGZoomEventToIDispatch*(x: ptr ISVGZoomEvent): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGZoomEventToIUnknown*(x: ptr ISVGZoomEvent): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGZoomEventToIDispatch*(
+    x: ptr DispSVGZoomEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGZoomEventToIUnknown*(
+    x: ptr DispSVGZoomEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGAElementToIDispatch*(x: ptr ISVGAElement): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGAElementToIUnknown*(x: ptr ISVGAElement): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGAElementToIDispatch*(
+    x: ptr DispSVGAElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGAElementToIUnknown*(
+    x: ptr DispSVGAElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGViewElementToIDispatch*(
+    x: ptr ISVGViewElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGViewElementToIUnknown*(
+    x: ptr ISVGViewElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGViewElementToIDispatch*(
+    x: ptr DispSVGViewElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGViewElementToIUnknown*(
+    x: ptr DispSVGViewElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLMediaErrorToIDispatch*(
+    x: ptr IHTMLMediaError
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLMediaErrorToIUnknown*(
+    x: ptr IHTMLMediaError
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTimeRangesToIDispatch*(
+    x: ptr IHTMLTimeRanges
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTimeRangesToIUnknown*(
+    x: ptr IHTMLTimeRanges
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLTimeRanges2ToIDispatch*(
+    x: ptr IHTMLTimeRanges2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLTimeRanges2ToIUnknown*(
+    x: ptr IHTMLTimeRanges2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLMediaElementToIDispatch*(
+    x: ptr IHTMLMediaElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLMediaElementToIUnknown*(
+    x: ptr IHTMLMediaElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLMediaElement2ToIDispatch*(
+    x: ptr IHTMLMediaElement2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLMediaElement2ToIUnknown*(
+    x: ptr IHTMLMediaElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLMSMediaElementToIDispatch*(
+    x: ptr IHTMLMSMediaElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLMSMediaElementToIUnknown*(
+    x: ptr IHTMLMSMediaElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLSourceElementToIDispatch*(
+    x: ptr IHTMLSourceElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLSourceElementToIUnknown*(
+    x: ptr IHTMLSourceElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAudioElementToIDispatch*(
+    x: ptr IHTMLAudioElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAudioElementToIUnknown*(
+    x: ptr IHTMLAudioElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLVideoElementToIDispatch*(
+    x: ptr IHTMLVideoElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLVideoElementToIUnknown*(
+    x: ptr IHTMLVideoElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAudioElementFactoryToIDispatch*(
+    x: ptr IHTMLAudioElementFactory
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAudioElementFactoryToIUnknown*(
+    x: ptr IHTMLAudioElementFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLMediaErrorToIDispatch*(
+    x: ptr DispHTMLMediaError
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLMediaErrorToIUnknown*(
+    x: ptr DispHTMLMediaError
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLTimeRangesToIDispatch*(
+    x: ptr DispHTMLTimeRanges
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLTimeRangesToIUnknown*(
+    x: ptr DispHTMLTimeRanges
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLMediaElementToIDispatch*(
+    x: ptr DispHTMLMediaElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLMediaElementToIUnknown*(
+    x: ptr DispHTMLMediaElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLSourceElementToIDispatch*(
+    x: ptr DispHTMLSourceElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLSourceElementToIUnknown*(
+    x: ptr DispHTMLSourceElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLAudioElementToIDispatch*(
+    x: ptr DispHTMLAudioElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLAudioElementToIUnknown*(
+    x: ptr DispHTMLAudioElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLVideoElementToIDispatch*(
+    x: ptr DispHTMLVideoElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLVideoElementToIUnknown*(
+    x: ptr DispHTMLVideoElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGSwitchElementToIDispatch*(
+    x: ptr ISVGSwitchElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGSwitchElementToIUnknown*(
+    x: ptr ISVGSwitchElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGSwitchElementToIDispatch*(
+    x: ptr DispSVGSwitchElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGSwitchElementToIUnknown*(
+    x: ptr DispSVGSwitchElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGDescElementToIDispatch*(
+    x: ptr ISVGDescElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGDescElementToIUnknown*(
+    x: ptr ISVGDescElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGDescElementToIDispatch*(
+    x: ptr DispSVGDescElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGDescElementToIUnknown*(
+    x: ptr DispSVGDescElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGTitleElementToIDispatch*(
+    x: ptr ISVGTitleElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGTitleElementToIUnknown*(
+    x: ptr ISVGTitleElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGTitleElementToIDispatch*(
+    x: ptr DispSVGTitleElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGTitleElementToIUnknown*(
+    x: ptr DispSVGTitleElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGMetadataElementToIDispatch*(
+    x: ptr ISVGMetadataElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGMetadataElementToIUnknown*(
+    x: ptr ISVGMetadataElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGMetadataElementToIDispatch*(
+    x: ptr DispSVGMetadataElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGMetadataElementToIUnknown*(
+    x: ptr DispSVGMetadataElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGElementInstanceToIDispatch*(
+    x: ptr ISVGElementInstance
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGElementInstanceToIUnknown*(
+    x: ptr ISVGElementInstance
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGElementInstanceToIDispatch*(
+    x: ptr DispSVGElementInstance
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGElementInstanceToIUnknown*(
+    x: ptr DispSVGElementInstance
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGElementInstanceListToIDispatch*(
+    x: ptr ISVGElementInstanceList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGElementInstanceListToIUnknown*(
+    x: ptr ISVGElementInstanceList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGElementInstanceListToIDispatch*(
+    x: ptr DispSVGElementInstanceList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGElementInstanceListToIUnknown*(
+    x: ptr DispSVGElementInstanceList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMExceptionToIDispatch*(x: ptr IDOMException): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMExceptionToIUnknown*(x: ptr IDOMException): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRangeExceptionToIDispatch*(
+    x: ptr IRangeException
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIRangeExceptionToIUnknown*(
+    x: ptr IRangeException
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGExceptionToIDispatch*(x: ptr ISVGException): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGExceptionToIUnknown*(x: ptr ISVGException): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEventExceptionToIDispatch*(
+    x: ptr IEventException
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIEventExceptionToIUnknown*(
+    x: ptr IEventException
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMExceptionToIDispatch*(
+    x: ptr DispDOMException
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMExceptionToIUnknown*(
+    x: ptr DispDOMException
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispRangeExceptionToIDispatch*(
+    x: ptr DispRangeException
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispRangeExceptionToIUnknown*(
+    x: ptr DispRangeException
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGExceptionToIDispatch*(
+    x: ptr DispSVGException
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGExceptionToIUnknown*(
+    x: ptr DispSVGException
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispEventExceptionToIDispatch*(
+    x: ptr DispEventException
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispEventExceptionToIUnknown*(
+    x: ptr DispEventException
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGScriptElementToIDispatch*(
+    x: ptr ISVGScriptElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGScriptElementToIUnknown*(
+    x: ptr ISVGScriptElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGScriptElementToIDispatch*(
+    x: ptr DispSVGScriptElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGScriptElementToIUnknown*(
+    x: ptr DispSVGScriptElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGStyleElementToIDispatch*(
+    x: ptr ISVGStyleElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGStyleElementToIUnknown*(
+    x: ptr ISVGStyleElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGStyleElementToIDispatch*(
+    x: ptr DispSVGStyleElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGStyleElementToIUnknown*(
+    x: ptr DispSVGStyleElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGTextContentElementToIDispatch*(
+    x: ptr ISVGTextContentElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGTextContentElementToIUnknown*(
+    x: ptr ISVGTextContentElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGTextContentElementToIDispatch*(
+    x: ptr DispSVGTextContentElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGTextContentElementToIUnknown*(
+    x: ptr DispSVGTextContentElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGTextPositioningElementToIDispatch*(
+    x: ptr ISVGTextPositioningElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGTextPositioningElementToIUnknown*(
+    x: ptr ISVGTextPositioningElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGTextPositioningElementToIDispatch*(
+    x: ptr DispSVGTextPositioningElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGTextPositioningElementToIUnknown*(
+    x: ptr DispSVGTextPositioningElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMDocumentTypeToIDispatch*(
+    x: ptr IDOMDocumentType
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMDocumentTypeToIUnknown*(
+    x: ptr IDOMDocumentType
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMDocumentTypeToIDispatch*(
+    x: ptr DispDOMDocumentType
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMDocumentTypeToIUnknown*(
+    x: ptr DispDOMDocumentType
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMNodeIteratorToIDispatch*(
+    x: ptr IDOMNodeIterator
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMNodeIteratorToIUnknown*(
+    x: ptr IDOMNodeIterator
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMTreeWalkerToIDispatch*(
+    x: ptr IDOMTreeWalker
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMTreeWalkerToIUnknown*(x: ptr IDOMTreeWalker): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispNodeIteratorToIDispatch*(
+    x: ptr DispNodeIterator
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispNodeIteratorToIUnknown*(
+    x: ptr DispNodeIterator
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispTreeWalkerToIDispatch*(
+    x: ptr DispTreeWalker
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispTreeWalkerToIUnknown*(x: ptr DispTreeWalker): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMProcessingInstructionToIDispatch*(
+    x: ptr IDOMProcessingInstruction
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMProcessingInstructionToIUnknown*(
+    x: ptr IDOMProcessingInstruction
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMProcessingInstructionToIDispatch*(
+    x: ptr DispDOMProcessingInstruction
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMProcessingInstructionToIUnknown*(
+    x: ptr DispDOMProcessingInstruction
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLPerformanceToIDispatch*(
+    x: ptr IHTMLPerformance
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLPerformanceToIUnknown*(
+    x: ptr IHTMLPerformance
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLPerformanceNavigationToIDispatch*(
+    x: ptr IHTMLPerformanceNavigation
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLPerformanceNavigationToIUnknown*(
+    x: ptr IHTMLPerformanceNavigation
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLPerformanceTimingToIDispatch*(
+    x: ptr IHTMLPerformanceTiming
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLPerformanceTimingToIUnknown*(
+    x: ptr IHTMLPerformanceTiming
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLPerformanceToIDispatch*(
+    x: ptr DispHTMLPerformance
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLPerformanceToIUnknown*(
+    x: ptr DispHTMLPerformance
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLPerformanceNavigationToIDispatch*(
+    x: ptr DispHTMLPerformanceNavigation
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLPerformanceNavigationToIUnknown*(
+    x: ptr DispHTMLPerformanceNavigation
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLPerformanceTimingToIDispatch*(
+    x: ptr DispHTMLPerformanceTiming
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLPerformanceTimingToIUnknown*(
+    x: ptr DispHTMLPerformanceTiming
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGTSpanElementToIDispatch*(
+    x: ptr ISVGTSpanElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGTSpanElementToIUnknown*(
+    x: ptr ISVGTSpanElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGTSpanElementToIDispatch*(
+    x: ptr DispSVGTSpanElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGTSpanElementToIUnknown*(
+    x: ptr DispSVGTSpanElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITemplatePrinterToIDispatch*(
+    x: ptr ITemplatePrinter
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterITemplatePrinterToIUnknown*(
+    x: ptr ITemplatePrinter
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITemplatePrinter2ToITemplatePrinter*(
+    x: ptr ITemplatePrinter2
+): ptr ITemplatePrinter =
+  cast[ptr ITemplatePrinter](x)
+
+converter winimConverterITemplatePrinter2ToIDispatch*(
+    x: ptr ITemplatePrinter2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterITemplatePrinter2ToIUnknown*(
+    x: ptr ITemplatePrinter2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITemplatePrinter3ToITemplatePrinter2*(
+    x: ptr ITemplatePrinter3
+): ptr ITemplatePrinter2 =
+  cast[ptr ITemplatePrinter2](x)
+
+converter winimConverterITemplatePrinter3ToITemplatePrinter*(
+    x: ptr ITemplatePrinter3
+): ptr ITemplatePrinter =
+  cast[ptr ITemplatePrinter](x)
+
+converter winimConverterITemplatePrinter3ToIDispatch*(
+    x: ptr ITemplatePrinter3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterITemplatePrinter3ToIUnknown*(
+    x: ptr ITemplatePrinter3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPrintManagerTemplatePrinterToIDispatch*(
+    x: ptr IPrintManagerTemplatePrinter
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIPrintManagerTemplatePrinterToIUnknown*(
+    x: ptr IPrintManagerTemplatePrinter
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispCPrintManagerTemplatePrinterToIDispatch*(
+    x: ptr DispCPrintManagerTemplatePrinter
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispCPrintManagerTemplatePrinterToIUnknown*(
+    x: ptr DispCPrintManagerTemplatePrinter
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISVGTextPathElementToIDispatch*(
+    x: ptr ISVGTextPathElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISVGTextPathElementToIUnknown*(
+    x: ptr ISVGTextPathElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispSVGTextPathElementToIDispatch*(
+    x: ptr DispSVGTextPathElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispSVGTextPathElementToIUnknown*(
+    x: ptr DispSVGTextPathElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMXmlSerializerToIDispatch*(
+    x: ptr IDOMXmlSerializer
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMXmlSerializerToIUnknown*(
+    x: ptr IDOMXmlSerializer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMXmlSerializerFactoryToIDispatch*(
+    x: ptr IDOMXmlSerializerFactory
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMXmlSerializerFactoryToIUnknown*(
+    x: ptr IDOMXmlSerializerFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMParserToIDispatch*(x: ptr IDOMParser): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMParserToIUnknown*(x: ptr IDOMParser): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMParserFactoryToIDispatch*(
+    x: ptr IDOMParserFactory
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMParserFactoryToIUnknown*(
+    x: ptr IDOMParserFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispXMLSerializerToIDispatch*(
+    x: ptr DispXMLSerializer
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispXMLSerializerToIUnknown*(
+    x: ptr DispXMLSerializer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMParserToIDispatch*(x: ptr DispDOMParser): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMParserToIUnknown*(x: ptr DispDOMParser): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLSemanticElementToIDispatch*(
+    x: ptr DispHTMLSemanticElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLSemanticElementToIUnknown*(
+    x: ptr DispHTMLSemanticElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLProgressElementToIDispatch*(
+    x: ptr IHTMLProgressElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLProgressElementToIUnknown*(
+    x: ptr IHTMLProgressElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLProgressElementToIDispatch*(
+    x: ptr DispHTMLProgressElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLProgressElementToIUnknown*(
+    x: ptr DispHTMLProgressElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMMSTransitionEventToIDispatch*(
+    x: ptr IDOMMSTransitionEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMMSTransitionEventToIUnknown*(
+    x: ptr IDOMMSTransitionEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMMSTransitionEventToIDispatch*(
+    x: ptr DispDOMMSTransitionEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMMSTransitionEventToIUnknown*(
+    x: ptr DispDOMMSTransitionEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMMSAnimationEventToIDispatch*(
+    x: ptr IDOMMSAnimationEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMMSAnimationEventToIUnknown*(
+    x: ptr IDOMMSAnimationEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMMSAnimationEventToIDispatch*(
+    x: ptr DispDOMMSAnimationEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMMSAnimationEventToIUnknown*(
+    x: ptr DispDOMMSAnimationEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWebGeolocationToIDispatch*(
+    x: ptr IWebGeolocation
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIWebGeolocationToIUnknown*(
+    x: ptr IWebGeolocation
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWebGeocoordinatesToIDispatch*(
+    x: ptr IWebGeocoordinates
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIWebGeocoordinatesToIUnknown*(
+    x: ptr IWebGeocoordinates
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWebGeopositionErrorToIDispatch*(
+    x: ptr IWebGeopositionError
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIWebGeopositionErrorToIUnknown*(
+    x: ptr IWebGeopositionError
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWebGeopositionToIDispatch*(
+    x: ptr IWebGeoposition
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIWebGeopositionToIUnknown*(
+    x: ptr IWebGeoposition
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispWebGeolocationToIDispatch*(
+    x: ptr DispWebGeolocation
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispWebGeolocationToIUnknown*(
+    x: ptr DispWebGeolocation
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispWebGeocoordinatesToIDispatch*(
+    x: ptr DispWebGeocoordinates
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispWebGeocoordinatesToIUnknown*(
+    x: ptr DispWebGeocoordinates
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispWebGeopositionErrorToIDispatch*(
+    x: ptr DispWebGeopositionError
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispWebGeopositionErrorToIUnknown*(
+    x: ptr DispWebGeopositionError
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispWebGeopositionToIDispatch*(
+    x: ptr DispWebGeoposition
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispWebGeopositionToIUnknown*(
+    x: ptr DispWebGeoposition
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIClientCapsToIDispatch*(x: ptr IClientCaps): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIClientCapsToIUnknown*(x: ptr IClientCaps): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMMSManipulationEventToIDispatch*(
+    x: ptr IDOMMSManipulationEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMMSManipulationEventToIUnknown*(
+    x: ptr IDOMMSManipulationEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMMSManipulationEventToIDispatch*(
+    x: ptr DispDOMMSManipulationEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMMSManipulationEventToIUnknown*(
+    x: ptr DispDOMMSManipulationEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMCloseEventToIDispatch*(
+    x: ptr IDOMCloseEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIDOMCloseEventToIUnknown*(x: ptr IDOMCloseEvent): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispDOMCloseEventToIDispatch*(
+    x: ptr DispDOMCloseEvent
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispDOMCloseEventToIUnknown*(
+    x: ptr DispDOMCloseEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLApplicationCacheToIDispatch*(
+    x: ptr IHTMLApplicationCache
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLApplicationCacheToIUnknown*(
+    x: ptr IHTMLApplicationCache
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispApplicationCacheToIDispatch*(
+    x: ptr DispApplicationCache
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispApplicationCacheToIUnknown*(
+    x: ptr DispApplicationCache
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICSSFilterSiteToIUnknown*(x: ptr ICSSFilterSite): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICSSFilterToIUnknown*(x: ptr ICSSFilter): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISecureUrlHostToIUnknown*(x: ptr ISecureUrlHost): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMarkupServicesToIUnknown*(
+    x: ptr IMarkupServices
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMarkupServices2ToIMarkupServices*(
+    x: ptr IMarkupServices2
+): ptr IMarkupServices =
+  cast[ptr IMarkupServices](x)
+
+converter winimConverterIMarkupServices2ToIUnknown*(
+    x: ptr IMarkupServices2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMarkupContainerToIUnknown*(
+    x: ptr IMarkupContainer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMarkupContainer2ToIMarkupContainer*(
+    x: ptr IMarkupContainer2
+): ptr IMarkupContainer =
+  cast[ptr IMarkupContainer](x)
+
+converter winimConverterIMarkupContainer2ToIUnknown*(
+    x: ptr IMarkupContainer2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLChangePlaybackToIUnknown*(
+    x: ptr IHTMLChangePlayback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMarkupPointerToIUnknown*(x: ptr IMarkupPointer): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMarkupPointer2ToIMarkupPointer*(
+    x: ptr IMarkupPointer2
+): ptr IMarkupPointer =
+  cast[ptr IMarkupPointer](x)
+
+converter winimConverterIMarkupPointer2ToIUnknown*(
+    x: ptr IMarkupPointer2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMarkupTextFragsToIUnknown*(
+    x: ptr IMarkupTextFrags
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLChangeLogToIUnknown*(x: ptr IHTMLChangeLog): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLChangeSinkToIUnknown*(
+    x: ptr IHTMLChangeSink
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLGenericParseToIUnknown*(
+    x: ptr IXMLGenericParse
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLEditHostToIUnknown*(x: ptr IHTMLEditHost): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLEditHost2ToIHTMLEditHost*(
+    x: ptr IHTMLEditHost2
+): ptr IHTMLEditHost =
+  cast[ptr IHTMLEditHost](x)
+
+converter winimConverterIHTMLEditHost2ToIUnknown*(x: ptr IHTMLEditHost2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISegmentToIUnknown*(x: ptr ISegment): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISegmentListIteratorToIUnknown*(
+    x: ptr ISegmentListIterator
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISegmentListToIUnknown*(x: ptr ISegmentList): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISequenceNumberToIUnknown*(
+    x: ptr ISequenceNumber
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIIMEServicesToIUnknown*(x: ptr IIMEServices): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLCaretToIUnknown*(x: ptr IHTMLCaret): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHighlightRenderingServicesToIUnknown*(
+    x: ptr IHighlightRenderingServices
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISelectionServicesListenerToIUnknown*(
+    x: ptr ISelectionServicesListener
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISelectionServicesToIUnknown*(
+    x: ptr ISelectionServices
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementSegmentToISegment*(
+    x: ptr IElementSegment
+): ptr ISegment =
+  cast[ptr ISegment](x)
+
+converter winimConverterIElementSegmentToIUnknown*(
+    x: ptr IElementSegment
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHighlightSegmentToISegment*(
+    x: ptr IHighlightSegment
+): ptr ISegment =
+  cast[ptr ISegment](x)
+
+converter winimConverterIHighlightSegmentToIUnknown*(
+    x: ptr IHighlightSegment
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLEditDesignerToIUnknown*(
+    x: ptr IHTMLEditDesigner
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLEditServicesToIUnknown*(
+    x: ptr IHTMLEditServices
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLEditServices2ToIHTMLEditServices*(
+    x: ptr IHTMLEditServices2
+): ptr IHTMLEditServices =
+  cast[ptr IHTMLEditServices](x)
+
+converter winimConverterIHTMLEditServices2ToIUnknown*(
+    x: ptr IHTMLEditServices2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterILineInfoToIUnknown*(x: ptr ILineInfo): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLComputedStyleToIUnknown*(
+    x: ptr IHTMLComputedStyle
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDisplayPointerToIUnknown*(
+    x: ptr IDisplayPointer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDisplayServicesToIUnknown*(
+    x: ptr IDisplayServices
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHtmlDlgSafeHelperToIDispatch*(
+    x: ptr IHtmlDlgSafeHelper
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHtmlDlgSafeHelperToIUnknown*(
+    x: ptr IHtmlDlgSafeHelper
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIBlockFormatsToIDispatch*(x: ptr IBlockFormats): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIBlockFormatsToIUnknown*(x: ptr IBlockFormats): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFontNamesToIDispatch*(x: ptr IFontNames): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIFontNamesToIUnknown*(x: ptr IFontNames): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDeveloperConsoleMessageReceiverToIUnknown*(
+    x: ptr IDeveloperConsoleMessageReceiver
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDebugCallbackNotificationHandlerToIUnknown*(
+    x: ptr IDebugCallbackNotificationHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIScriptEventHandlerToIUnknown*(
+    x: ptr IScriptEventHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIScriptEventHandlerSourceInfoToIUnknown*(
+    x: ptr IScriptEventHandlerSourceInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDOMEventRegistrationCallbackToIUnknown*(
+    x: ptr IDOMEventRegistrationCallback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEventTarget2ToIUnknown*(x: ptr IEventTarget2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterHTMLNamespaceEventsToIDispatch*(
+    x: ptr HTMLNamespaceEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterHTMLNamespaceEventsToIUnknown*(
+    x: ptr HTMLNamespaceEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLNamespaceToIDispatch*(
+    x: ptr IHTMLNamespace
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLNamespaceToIUnknown*(x: ptr IHTMLNamespace): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLNamespaceCollectionToIDispatch*(
+    x: ptr IHTMLNamespaceCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLNamespaceCollectionToIUnknown*(
+    x: ptr IHTMLNamespaceCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLNamespaceToIDispatch*(
+    x: ptr DispHTMLNamespace
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLNamespaceToIUnknown*(
+    x: ptr DispHTMLNamespace
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLNamespaceCollectionToIDispatch*(
+    x: ptr DispHTMLNamespaceCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLNamespaceCollectionToIUnknown*(
+    x: ptr DispHTMLNamespaceCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLPainterToIUnknown*(x: ptr IHTMLPainter): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLPainterEventInfoToIUnknown*(
+    x: ptr IHTMLPainterEventInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLPainterOverlayToIUnknown*(
+    x: ptr IHTMLPainterOverlay
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLPaintSiteToIUnknown*(x: ptr IHTMLPaintSite): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLIPrintCollectionToIDispatch*(
+    x: ptr IHTMLIPrintCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLIPrintCollectionToIUnknown*(
+    x: ptr IHTMLIPrintCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumPrivacyRecordsToIUnknown*(
+    x: ptr IEnumPrivacyRecords
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWPCBlockedUrlsToIUnknown*(
+    x: ptr IWPCBlockedUrls
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDOMConstructorCollectionToIDispatch*(
+    x: ptr IHTMLDOMConstructorCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDOMConstructorCollectionToIUnknown*(
+    x: ptr IHTMLDOMConstructorCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDialogToIDispatch*(x: ptr IHTMLDialog): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDialogToIUnknown*(x: ptr IHTMLDialog): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDialog2ToIDispatch*(x: ptr IHTMLDialog2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDialog2ToIUnknown*(x: ptr IHTMLDialog2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLDialog3ToIDispatch*(x: ptr IHTMLDialog3): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLDialog3ToIUnknown*(x: ptr IHTMLDialog3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLModelessInitToIDispatch*(
+    x: ptr IHTMLModelessInit
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLModelessInitToIUnknown*(
+    x: ptr IHTMLModelessInit
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLPopupToIDispatch*(x: ptr IHTMLPopup): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLPopupToIUnknown*(x: ptr IHTMLPopup): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLPopupToIDispatch*(x: ptr DispHTMLPopup): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLPopupToIUnknown*(x: ptr DispHTMLPopup): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAppBehaviorToIDispatch*(
+    x: ptr IHTMLAppBehavior
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAppBehaviorToIUnknown*(
+    x: ptr IHTMLAppBehavior
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAppBehavior2ToIDispatch*(
+    x: ptr IHTMLAppBehavior2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAppBehavior2ToIUnknown*(
+    x: ptr IHTMLAppBehavior2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLAppBehavior3ToIDispatch*(
+    x: ptr IHTMLAppBehavior3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIHTMLAppBehavior3ToIUnknown*(
+    x: ptr IHTMLAppBehavior3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispHTMLAppBehaviorToIDispatch*(
+    x: ptr DispHTMLAppBehavior
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispHTMLAppBehaviorToIUnknown*(
+    x: ptr DispHTMLAppBehavior
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispIHTMLInputButtonElementToIDispatch*(
+    x: ptr DispIHTMLInputButtonElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispIHTMLInputButtonElementToIUnknown*(
+    x: ptr DispIHTMLInputButtonElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispIHTMLInputTextElementToIDispatch*(
+    x: ptr DispIHTMLInputTextElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispIHTMLInputTextElementToIUnknown*(
+    x: ptr DispIHTMLInputTextElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispIHTMLInputFileElementToIDispatch*(
+    x: ptr DispIHTMLInputFileElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispIHTMLInputFileElementToIUnknown*(
+    x: ptr DispIHTMLInputFileElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispIHTMLOptionButtonElementToIDispatch*(
+    x: ptr DispIHTMLOptionButtonElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispIHTMLOptionButtonElementToIUnknown*(
+    x: ptr DispIHTMLOptionButtonElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDispIHTMLInputImageToIDispatch*(
+    x: ptr DispIHTMLInputImage
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDispIHTMLInputImageToIUnknown*(
+    x: ptr DispIHTMLInputImage
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorFactoryToIUnknown*(
+    x: ptr IElementBehaviorFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementNamespaceToIUnknown*(
+    x: ptr IElementNamespace
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementNamespaceTableToIUnknown*(
+    x: ptr IElementNamespaceTable
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementNamespaceFactoryToIUnknown*(
+    x: ptr IElementNamespaceFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementNamespaceFactory2ToIElementNamespaceFactory*(
+    x: ptr IElementNamespaceFactory2
+): ptr IElementNamespaceFactory =
+  cast[ptr IElementNamespaceFactory](x)
+
+converter winimConverterIElementNamespaceFactory2ToIUnknown*(
+    x: ptr IElementNamespaceFactory2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementNamespaceFactoryCallbackToIUnknown*(
+    x: ptr IElementNamespaceFactoryCallback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorToIUnknown*(
+    x: ptr IElementBehavior
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorSiteToIUnknown*(
+    x: ptr IElementBehaviorSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorSiteOMToIUnknown*(
+    x: ptr IElementBehaviorSiteOM
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorSiteOM2ToIElementBehaviorSiteOM*(
+    x: ptr IElementBehaviorSiteOM2
+): ptr IElementBehaviorSiteOM =
+  cast[ptr IElementBehaviorSiteOM](x)
+
+converter winimConverterIElementBehaviorSiteOM2ToIUnknown*(
+    x: ptr IElementBehaviorSiteOM2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorRenderToIUnknown*(
+    x: ptr IElementBehaviorRender
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorSiteRenderToIUnknown*(
+    x: ptr IElementBehaviorSiteRender
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorCategoryToIUnknown*(
+    x: ptr IElementBehaviorCategory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorSiteCategoryToIUnknown*(
+    x: ptr IElementBehaviorSiteCategory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorSubmitToIUnknown*(
+    x: ptr IElementBehaviorSubmit
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorFocusToIUnknown*(
+    x: ptr IElementBehaviorFocus
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorLayoutToIUnknown*(
+    x: ptr IElementBehaviorLayout
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorLayout2ToIUnknown*(
+    x: ptr IElementBehaviorLayout2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorSiteLayoutToIUnknown*(
+    x: ptr IElementBehaviorSiteLayout
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIElementBehaviorSiteLayout2ToIUnknown*(
+    x: ptr IElementBehaviorSiteLayout2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostBehaviorInitToIUnknown*(
+    x: ptr IHostBehaviorInit
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIViewObjectPresentSiteToIUnknown*(
+    x: ptr IViewObjectPresentSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISurfacePresenterToIUnknown*(
+    x: ptr ISurfacePresenter
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICanvasPixelArrayDataToIUnknown*(
+    x: ptr ICanvasPixelArrayData
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIViewObjectPrintToIUnknown*(
+    x: ptr IViewObjectPrint
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIViewObjectPresentNotifySiteToIViewObjectPresentSite*(
+    x: ptr IViewObjectPresentNotifySite
+): ptr IViewObjectPresentSite =
+  cast[ptr IViewObjectPresentSite](x)
+
+converter winimConverterIViewObjectPresentNotifySiteToIUnknown*(
+    x: ptr IViewObjectPresentNotifySite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIViewObjectPresentNotifyToIUnknown*(
+    x: ptr IViewObjectPresentNotify
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITrackingProtectionToIUnknown*(
+    x: ptr ITrackingProtection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHostDialogHelperToIUnknown*(
+    x: ptr IHostDialogHelper
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDocHostUIHandlerToIUnknown*(
+    x: ptr IDocHostUIHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDocHostUIHandler2ToIDocHostUIHandler*(
+    x: ptr IDocHostUIHandler2
+): ptr IDocHostUIHandler =
+  cast[ptr IDocHostUIHandler](x)
+
+converter winimConverterIDocHostUIHandler2ToIUnknown*(
+    x: ptr IDocHostUIHandler2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICustomDocToIUnknown*(x: ptr ICustomDoc): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDocHostShowUIToIUnknown*(x: ptr IDocHostShowUI): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIClassFactoryExToIClassFactory*(
+    x: ptr IClassFactoryEx
+): ptr IClassFactory =
+  cast[ptr IClassFactory](x)
+
+converter winimConverterIClassFactoryExToIUnknown*(
+    x: ptr IClassFactoryEx
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHTMLOMWindowServicesToIUnknown*(
+    x: ptr IHTMLOMWindowServices
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
--- a/semicongine/thirdparty/winim/winim/inc/msi.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/msi.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -34,24 +34,29 @@
   MSICODE* = int32
   MSITRANSACTION* = int32
   MSITRANSACTIONSTATE* = int32
-  INSTALLUI_HANDLER_RECORD* = proc (pvContext: LPVOID, iMessageType: UINT, hRecord: MSIHANDLE): int32 {.stdcall.}
+  INSTALLUI_HANDLER_RECORD* =
+    proc(pvContext: LPVOID, iMessageType: UINT, hRecord: MSIHANDLE): int32 {.stdcall.}
   PINSTALLUI_HANDLER_RECORD* = ptr INSTALLUI_HANDLER_RECORD
   MSIPATCHSEQUENCEINFOA* {.pure.} = object
     szPatchData*: LPCSTR
     ePatchDataType*: MSIPATCHDATATYPE
     dwOrder*: DWORD
     uStatus*: UINT
+
   PMSIPATCHSEQUENCEINFOA* = ptr MSIPATCHSEQUENCEINFOA
   MSIPATCHSEQUENCEINFOW* {.pure.} = object
     szPatchData*: LPCWSTR
     ePatchDataType*: MSIPATCHDATATYPE
     dwOrder*: DWORD
     uStatus*: UINT
+
   PMSIPATCHSEQUENCEINFOW* = ptr MSIPATCHSEQUENCEINFOW
   MSIFILEHASHINFO* {.pure.} = object
     dwFileHashInfoSize*: ULONG
     dwData*: array[4, ULONG]
+
   PMSIFILEHASHINFO* = ptr MSIFILEHASHINFO
+
 const
   NTDDI_WIN2K* = 0x05000000
   NTDDI_WINXP* = 0x05010000
@@ -161,13 +166,17 @@
   MSIPATCHSTATE_SUPERSEDED* = 2
   MSIPATCHSTATE_OBSOLETED* = 4
   MSIPATCHSTATE_REGISTERED* = 8
-  MSIPATCHSTATE_ALL* = MSIPATCHSTATE_APPLIED or MSIPATCHSTATE_SUPERSEDED or MSIPATCHSTATE_OBSOLETED or MSIPATCHSTATE_REGISTERED
+  MSIPATCHSTATE_ALL* =
+    MSIPATCHSTATE_APPLIED or MSIPATCHSTATE_SUPERSEDED or MSIPATCHSTATE_OBSOLETED or
+    MSIPATCHSTATE_REGISTERED
   MSIINSTALLCONTEXT_FIRSTVISIBLE* = 0
   MSIINSTALLCONTEXT_NONE* = 0
   MSIINSTALLCONTEXT_USERMANAGED* = 1
   MSIINSTALLCONTEXT_USERUNMANAGED* = 2
   MSIINSTALLCONTEXT_MACHINE* = 4
-  MSIINSTALLCONTEXT_ALL* = MSIINSTALLCONTEXT_USERMANAGED or MSIINSTALLCONTEXT_USERUNMANAGED or MSIINSTALLCONTEXT_MACHINE
+  MSIINSTALLCONTEXT_ALL* =
+    MSIINSTALLCONTEXT_USERMANAGED or MSIINSTALLCONTEXT_USERUNMANAGED or
+    MSIINSTALLCONTEXT_MACHINE
   MSIINSTALLCONTEXT_ALLUSERMANAGED* = 8
   MSIPATCH_DATATYPE_PATCHFILE* = 0
   MSIPATCH_DATATYPE_XMLPATH* = 1
@@ -217,7 +226,8 @@
   SCRIPTFLAGS_VALIDATE_TRANSFORMS_LIST* = 0x00000040
   SCRIPTFLAGS_REGDATA_CLASSINFO* = 0x00000080
   SCRIPTFLAGS_REGDATA_EXTENSIONINFO* = 0x00000100
-  SCRIPTFLAGS_REGDATA_APPINFO* = SCRIPTFLAGS_REGDATA_CLASSINFO or SCRIPTFLAGS_REGDATA_EXTENSIONINFO
+  SCRIPTFLAGS_REGDATA_APPINFO* =
+    SCRIPTFLAGS_REGDATA_CLASSINFO or SCRIPTFLAGS_REGDATA_EXTENSIONINFO
   SCRIPTFLAGS_REGDATA* = SCRIPTFLAGS_REGDATA_APPINFO or SCRIPTFLAGS_REGDATA_CNFGINFO
   ADVERTISEFLAGS_MACHINEASSIGN* = 0
   ADVERTISEFLAGS_USERASSIGN* = 1
@@ -251,329 +261,1995 @@
   ERROR_INSTALL_SERVICE_SAFEBOOT* = 1652
   ERROR_ROLLBACK_DISABLED* = 1653
 type
-  INSTALLUI_HANDLERA* = proc (pvContext: LPVOID, iMessageType: UINT, szMessage: LPCSTR): int32 {.stdcall.}
-  INSTALLUI_HANDLERW* = proc (pvContext: LPVOID, iMessageType: UINT, szMessage: LPCWSTR): int32 {.stdcall.}
+  INSTALLUI_HANDLERA* =
+    proc(pvContext: LPVOID, iMessageType: UINT, szMessage: LPCSTR): int32 {.stdcall.}
+  INSTALLUI_HANDLERW* =
+    proc(pvContext: LPVOID, iMessageType: UINT, szMessage: LPCWSTR): int32 {.stdcall.}
+
 proc MsiCloseHandle*(hAny: MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
 proc MsiCloseAllHandles*(): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSetInternalUI*(dwUILevel: INSTALLUILEVEL, phWnd: ptr HWND): INSTALLUILEVEL {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSetExternalUIA*(puiHandler: INSTALLUI_HANDLERA, dwMessageFilter: DWORD, pvContext: LPVOID): INSTALLUI_HANDLERA {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSetExternalUIW*(puiHandler: INSTALLUI_HANDLERW, dwMessageFilter: DWORD, pvContext: LPVOID): INSTALLUI_HANDLERW {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSetExternalUIRecord*(puiHandler: INSTALLUI_HANDLER_RECORD, dwMessageFilter: DWORD, pvContext: LPVOID, ppuiPrevHandler: PINSTALLUI_HANDLER_RECORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnableLogA*(dwLogMode: DWORD, szLogFile: LPCSTR, dwLogAttributes: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnableLogW*(dwLogMode: DWORD, szLogFile: LPCWSTR, dwLogAttributes: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiQueryProductStateA*(szProduct: LPCSTR): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiQueryProductStateW*(szProduct: LPCWSTR): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetProductInfoA*(szProduct: LPCSTR, szAttribute: LPCSTR, lpValueBuf: LPSTR, pcchValueBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetProductInfoW*(szProduct: LPCWSTR, szAttribute: LPCWSTR, lpValueBuf: LPWSTR, pcchValueBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetProductInfoExA*(szProductCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, szProperty: LPCSTR, szValue: LPSTR, pcchValue: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetProductInfoExW*(szProductCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, szProperty: LPCWSTR, szValue: LPWSTR, pcchValue: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiInstallProductA*(szPackagePath: LPCSTR, szCommandLine: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiInstallProductW*(szPackagePath: LPCWSTR, szCommandLine: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiConfigureProductA*(szProduct: LPCSTR, iInstallLevel: int32, eInstallState: INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiConfigureProductW*(szProduct: LPCWSTR, iInstallLevel: int32, eInstallState: INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiConfigureProductExA*(szProduct: LPCSTR, iInstallLevel: int32, eInstallState: INSTALLSTATE, szCommandLine: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiConfigureProductExW*(szProduct: LPCWSTR, iInstallLevel: int32, eInstallState: INSTALLSTATE, szCommandLine: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiReinstallProductA*(szProduct: LPCSTR, szReinstallMode: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiReinstallProductW*(szProduct: LPCWSTR, szReinstallMode: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiAdvertiseProductExA*(szPackagePath: LPCSTR, szScriptfilePath: LPCSTR, szTransforms: LPCSTR, lgidLanguage: LANGID, dwPlatform: DWORD, dwOptions: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiAdvertiseProductExW*(szPackagePath: LPCWSTR, szScriptfilePath: LPCWSTR, szTransforms: LPCWSTR, lgidLanguage: LANGID, dwPlatform: DWORD, dwOptions: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiAdvertiseProductA*(szPackagePath: LPCSTR, szScriptfilePath: LPCSTR, szTransforms: LPCSTR, lgidLanguage: LANGID): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiAdvertiseProductW*(szPackagePath: LPCWSTR, szScriptfilePath: LPCWSTR, szTransforms: LPCWSTR, lgidLanguage: LANGID): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiProcessAdvertiseScriptA*(szScriptFile: LPCSTR, szIconFolder: LPCSTR, hRegData: HKEY, fShortcuts: WINBOOL, fRemoveItems: WINBOOL): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiProcessAdvertiseScriptW*(szScriptFile: LPCWSTR, szIconFolder: LPCWSTR, hRegData: HKEY, fShortcuts: WINBOOL, fRemoveItems: WINBOOL): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiAdvertiseScriptA*(szScriptFile: LPCSTR, dwFlags: DWORD, phRegData: PHKEY, fRemoveItems: WINBOOL): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiAdvertiseScriptW*(szScriptFile: LPCWSTR, dwFlags: DWORD, phRegData: PHKEY, fRemoveItems: WINBOOL): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetProductInfoFromScriptA*(szScriptFile: LPCSTR, lpProductBuf39: LPSTR, plgidLanguage: ptr LANGID, pdwVersion: ptr DWORD, lpNameBuf: LPSTR, pcchNameBuf: ptr DWORD, lpPackageBuf: LPSTR, pcchPackageBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetProductInfoFromScriptW*(szScriptFile: LPCWSTR, lpProductBuf39: LPWSTR, plgidLanguage: ptr LANGID, pdwVersion: ptr DWORD, lpNameBuf: LPWSTR, pcchNameBuf: ptr DWORD, lpPackageBuf: LPWSTR, pcchPackageBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetProductCodeA*(szComponent: LPCSTR, lpBuf39: LPSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetProductCodeW*(szComponent: LPCWSTR, lpBuf39: LPWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetUserInfoA*(szProduct: LPCSTR, lpUserNameBuf: LPSTR, pcchUserNameBuf: ptr DWORD, lpOrgNameBuf: LPSTR, pcchOrgNameBuf: ptr DWORD, lpSerialBuf: LPSTR, pcchSerialBuf: ptr DWORD): USERINFOSTATE {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetUserInfoW*(szProduct: LPCWSTR, lpUserNameBuf: LPWSTR, pcchUserNameBuf: ptr DWORD, lpOrgNameBuf: LPWSTR, pcchOrgNameBuf: ptr DWORD, lpSerialBuf: LPWSTR, pcchSerialBuf: ptr DWORD): USERINFOSTATE {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiCollectUserInfoA*(szProduct: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiCollectUserInfoW*(szProduct: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiApplyPatchA*(szPatchPackage: LPCSTR, szInstallPackage: LPCSTR, eInstallType: INSTALLTYPE, szCommandLine: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiApplyPatchW*(szPatchPackage: LPCWSTR, szInstallPackage: LPCWSTR, eInstallType: INSTALLTYPE, szCommandLine: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetPatchInfoA*(szPatch: LPCSTR, szAttribute: LPCSTR, lpValueBuf: LPSTR, pcchValueBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetPatchInfoW*(szPatch: LPCWSTR, szAttribute: LPCWSTR, lpValueBuf: LPWSTR, pcchValueBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumPatchesA*(szProduct: LPCSTR, iPatchIndex: DWORD, lpPatchBuf: LPSTR, lpTransformsBuf: LPSTR, pcchTransformsBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumPatchesW*(szProduct: LPCWSTR, iPatchIndex: DWORD, lpPatchBuf: LPWSTR, lpTransformsBuf: LPWSTR, pcchTransformsBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiRemovePatchesA*(szPatchList: LPCSTR, szProductCode: LPCSTR, eUninstallType: INSTALLTYPE, szPropertyList: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiRemovePatchesW*(szPatchList: LPCWSTR, szProductCode: LPCWSTR, eUninstallType: INSTALLTYPE, szPropertyList: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiExtractPatchXMLDataA*(szPatchPath: LPCSTR, dwReserved: DWORD, szXMLData: LPSTR, pcchXMLData: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiExtractPatchXMLDataW*(szPatchPath: LPCWSTR, dwReserved: DWORD, szXMLData: LPWSTR, pcchXMLData: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetPatchInfoExA*(szPatchCode: LPCSTR, szProductCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, szProperty: LPCSTR, lpValue: LPSTR, pcchValue: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetPatchInfoExW*(szPatchCode: LPCWSTR, szProductCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, szProperty: LPCWSTR, lpValue: LPWSTR, pcchValue: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiApplyMultiplePatchesA*(szPatchPackages: LPCSTR, szProductCode: LPCSTR, szPropertiesList: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiApplyMultiplePatchesW*(szPatchPackages: LPCWSTR, szProductCode: LPCWSTR, szPropertiesList: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiDeterminePatchSequenceA*(szProductCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, cPatchInfo: DWORD, pPatchInfo: PMSIPATCHSEQUENCEINFOA): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiDeterminePatchSequenceW*(szProductCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, cPatchInfo: DWORD, pPatchInfo: PMSIPATCHSEQUENCEINFOW): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiDetermineApplicablePatchesA*(szProductPackagePath: LPCSTR, cPatchInfo: DWORD, pPatchInfo: PMSIPATCHSEQUENCEINFOA): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiDetermineApplicablePatchesW*(szProductPackagePath: LPCWSTR, cPatchInfo: DWORD, pPatchInfo: PMSIPATCHSEQUENCEINFOW): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumPatchesExA*(szProductCode: LPCSTR, szUserSid: LPCSTR, dwContext: DWORD, dwFilter: DWORD, dwIndex: DWORD, szPatchCode: ptr CHAR, szTargetProductCode: ptr CHAR, pdwTargetProductContext: ptr MSIINSTALLCONTEXT, szTargetUserSid: LPSTR, pcchTargetUserSid: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumPatchesExW*(szProductCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: DWORD, dwFilter: DWORD, dwIndex: DWORD, szPatchCode: ptr WCHAR, szTargetProductCode: ptr WCHAR, pdwTargetProductContext: ptr MSIINSTALLCONTEXT, szTargetUserSid: LPWSTR, pcchTargetUserSid: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiQueryFeatureStateA*(szProduct: LPCSTR, szFeature: LPCSTR): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiQueryFeatureStateW*(szProduct: LPCWSTR, szFeature: LPCWSTR): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiQueryFeatureStateExA*(szProductCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, szFeature: LPCSTR, pdwState: ptr INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiQueryFeatureStateExW*(szProductCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, szFeature: LPCWSTR, pdwState: ptr INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiUseFeatureA*(szProduct: LPCSTR, szFeature: LPCSTR): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiUseFeatureW*(szProduct: LPCWSTR, szFeature: LPCWSTR): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiUseFeatureExA*(szProduct: LPCSTR, szFeature: LPCSTR, dwInstallMode: DWORD, dwReserved: DWORD): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiUseFeatureExW*(szProduct: LPCWSTR, szFeature: LPCWSTR, dwInstallMode: DWORD, dwReserved: DWORD): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetFeatureUsageA*(szProduct: LPCSTR, szFeature: LPCSTR, pdwUseCount: ptr DWORD, pwDateUsed: ptr WORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetFeatureUsageW*(szProduct: LPCWSTR, szFeature: LPCWSTR, pdwUseCount: ptr DWORD, pwDateUsed: ptr WORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiConfigureFeatureA*(szProduct: LPCSTR, szFeature: LPCSTR, eInstallState: INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiConfigureFeatureW*(szProduct: LPCWSTR, szFeature: LPCWSTR, eInstallState: INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiReinstallFeatureA*(szProduct: LPCSTR, szFeature: LPCSTR, dwReinstallMode: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiReinstallFeatureW*(szProduct: LPCWSTR, szFeature: LPCWSTR, dwReinstallMode: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiProvideComponentA*(szProduct: LPCSTR, szFeature: LPCSTR, szComponent: LPCSTR, dwInstallMode: DWORD, lpPathBuf: LPSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiProvideComponentW*(szProduct: LPCWSTR, szFeature: LPCWSTR, szComponent: LPCWSTR, dwInstallMode: DWORD, lpPathBuf: LPWSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiProvideQualifiedComponentA*(szCategory: LPCSTR, szQualifier: LPCSTR, dwInstallMode: DWORD, lpPathBuf: LPSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiProvideQualifiedComponentW*(szCategory: LPCWSTR, szQualifier: LPCWSTR, dwInstallMode: DWORD, lpPathBuf: LPWSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiProvideQualifiedComponentExA*(szCategory: LPCSTR, szQualifier: LPCSTR, dwInstallMode: DWORD, szProduct: LPCSTR, dwUnused1: DWORD, dwUnused2: DWORD, lpPathBuf: LPSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiProvideQualifiedComponentExW*(szCategory: LPCWSTR, szQualifier: LPCWSTR, dwInstallMode: DWORD, szProduct: LPCWSTR, dwUnused1: DWORD, dwUnused2: DWORD, lpPathBuf: LPWSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetComponentPathA*(szProduct: LPCSTR, szComponent: LPCSTR, lpPathBuf: LPSTR, pcchBuf: ptr DWORD): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetComponentPathW*(szProduct: LPCWSTR, szComponent: LPCWSTR, lpPathBuf: LPWSTR, pcchBuf: ptr DWORD): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiProvideAssemblyA*(szAssemblyName: LPCSTR, szAppContext: LPCSTR, dwInstallMode: DWORD, dwAssemblyInfo: DWORD, lpPathBuf: LPSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiProvideAssemblyW*(szAssemblyName: LPCWSTR, szAppContext: LPCWSTR, dwInstallMode: DWORD, dwAssemblyInfo: DWORD, lpPathBuf: LPWSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiQueryComponentStateA*(szProductCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, szComponentCode: LPCSTR, pdwState: ptr INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiQueryComponentStateW*(szProductCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, szComponentCode: LPCWSTR, pdwState: ptr INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumProductsA*(iProductIndex: DWORD, lpProductBuf: LPSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumProductsW*(iProductIndex: DWORD, lpProductBuf: LPWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumProductsExA*(szProductCode: LPCSTR, szUserSid: LPCSTR, dwContext: DWORD, dwIndex: DWORD, szInstalledProductCode: ptr CHAR, pdwInstalledContext: ptr MSIINSTALLCONTEXT, szSid: LPSTR, pcchSid: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumProductsExW*(szProductCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: DWORD, dwIndex: DWORD, szInstalledProductCode: ptr WCHAR, pdwInstalledContext: ptr MSIINSTALLCONTEXT, szSid: LPWSTR, pcchSid: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumRelatedProductsA*(lpUpgradeCode: LPCSTR, dwReserved: DWORD, iProductIndex: DWORD, lpProductBuf: LPSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumRelatedProductsW*(lpUpgradeCode: LPCWSTR, dwReserved: DWORD, iProductIndex: DWORD, lpProductBuf: LPWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumFeaturesA*(szProduct: LPCSTR, iFeatureIndex: DWORD, lpFeatureBuf: LPSTR, lpParentBuf: LPSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumFeaturesW*(szProduct: LPCWSTR, iFeatureIndex: DWORD, lpFeatureBuf: LPWSTR, lpParentBuf: LPWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumComponentsA*(iComponentIndex: DWORD, lpComponentBuf: LPSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumComponentsW*(iComponentIndex: DWORD, lpComponentBuf: LPWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumClientsA*(szComponent: LPCSTR, iProductIndex: DWORD, lpProductBuf: LPSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumClientsW*(szComponent: LPCWSTR, iProductIndex: DWORD, lpProductBuf: LPWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumComponentQualifiersA*(szComponent: LPCSTR, iIndex: DWORD, lpQualifierBuf: LPSTR, pcchQualifierBuf: ptr DWORD, lpApplicationDataBuf: LPSTR, pcchApplicationDataBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEnumComponentQualifiersW*(szComponent: LPCWSTR, iIndex: DWORD, lpQualifierBuf: LPWSTR, pcchQualifierBuf: ptr DWORD, lpApplicationDataBuf: LPWSTR, pcchApplicationDataBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiOpenProductA*(szProduct: LPCSTR, hProduct: ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiOpenProductW*(szProduct: LPCWSTR, hProduct: ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiOpenPackageA*(szPackagePath: LPCSTR, hProduct: ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiOpenPackageW*(szPackagePath: LPCWSTR, hProduct: ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiOpenPackageExA*(szPackagePath: LPCSTR, dwOptions: DWORD, hProduct: ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiOpenPackageExW*(szPackagePath: LPCWSTR, dwOptions: DWORD, hProduct: ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetPatchFileListA*(szProductCode: LPCSTR, szPatchPackages: LPCSTR, pcFiles: LPDWORD, pphFileRecords: ptr ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetPatchFileListW*(szProductCode: LPCWSTR, szPatchPackages: LPCWSTR, pcFiles: LPDWORD, pphFileRecords: ptr ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetProductPropertyA*(hProduct: MSIHANDLE, szProperty: LPCSTR, lpValueBuf: LPSTR, pcchValueBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetProductPropertyW*(hProduct: MSIHANDLE, szProperty: LPCWSTR, lpValueBuf: LPWSTR, pcchValueBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiVerifyPackageA*(szPackagePath: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiVerifyPackageW*(szPackagePath: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetFeatureInfoA*(hProduct: MSIHANDLE, szFeature: LPCSTR, lpAttributes: ptr DWORD, lpTitleBuf: LPSTR, pcchTitleBuf: ptr DWORD, lpHelpBuf: LPSTR, pcchHelpBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetFeatureInfoW*(hProduct: MSIHANDLE, szFeature: LPCWSTR, lpAttributes: ptr DWORD, lpTitleBuf: LPWSTR, pcchTitleBuf: ptr DWORD, lpHelpBuf: LPWSTR, pcchHelpBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiInstallMissingComponentA*(szProduct: LPCSTR, szComponent: LPCSTR, eInstallState: INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiInstallMissingComponentW*(szProduct: LPCWSTR, szComponent: LPCWSTR, eInstallState: INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiInstallMissingFileA*(szProduct: LPCSTR, szFile: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiInstallMissingFileW*(szProduct: LPCWSTR, szFile: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiLocateComponentA*(szComponent: LPCSTR, lpPathBuf: LPSTR, pcchBuf: ptr DWORD): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiLocateComponentW*(szComponent: LPCWSTR, lpPathBuf: LPWSTR, pcchBuf: ptr DWORD): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListClearAllA*(szProduct: LPCSTR, szUserName: LPCSTR, dwReserved: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListClearAllW*(szProduct: LPCWSTR, szUserName: LPCWSTR, dwReserved: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListAddSourceA*(szProduct: LPCSTR, szUserName: LPCSTR, dwReserved: DWORD, szSource: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListAddSourceW*(szProduct: LPCWSTR, szUserName: LPCWSTR, dwReserved: DWORD, szSource: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListForceResolutionA*(szProduct: LPCSTR, szUserName: LPCSTR, dwReserved: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListForceResolutionW*(szProduct: LPCWSTR, szUserName: LPCWSTR, dwReserved: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListAddSourceExA*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szSource: LPCSTR, dwIndex: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListAddSourceExW*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szSource: LPCWSTR, dwIndex: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListAddMediaDiskA*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwDiskId: DWORD, szVolumeLabel: LPCSTR, szDiskPrompt: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListAddMediaDiskW*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwDiskId: DWORD, szVolumeLabel: LPCWSTR, szDiskPrompt: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListClearSourceA*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szSource: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListClearSourceW*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szSource: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListClearMediaDiskA*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwDiskId: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListClearMediaDiskW*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwDiskId: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListClearAllExA*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListClearAllExW*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListForceResolutionExA*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListForceResolutionExW*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListSetInfoA*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szProperty: LPCSTR, szValue: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListSetInfoW*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szProperty: LPCWSTR, szValue: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListGetInfoA*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szProperty: LPCSTR, szValue: LPSTR, pcchValue: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListGetInfoW*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szProperty: LPCWSTR, szValue: LPWSTR, pcchValue: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListEnumSourcesA*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwIndex: DWORD, szSource: LPSTR, pcchSource: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListEnumSourcesW*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwIndex: DWORD, szSource: LPWSTR, pcchSource: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListEnumMediaDisksA*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwIndex: DWORD, pdwDiskId: LPDWORD, szVolumeLabel: LPSTR, pcchVolumeLabel: LPDWORD, szDiskPrompt: LPSTR, pcchDiskPrompt: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiSourceListEnumMediaDisksW*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwIndex: DWORD, pdwDiskId: LPDWORD, szVolumeLabel: LPWSTR, pcchVolumeLabel: LPDWORD, szDiskPrompt: LPWSTR, pcchDiskPrompt: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetFileVersionA*(szFilePath: LPCSTR, lpVersionBuf: LPSTR, pcchVersionBuf: ptr DWORD, lpLangBuf: LPSTR, pcchLangBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetFileVersionW*(szFilePath: LPCWSTR, lpVersionBuf: LPWSTR, pcchVersionBuf: ptr DWORD, lpLangBuf: LPWSTR, pcchLangBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetFileHashA*(szFilePath: LPCSTR, dwOptions: DWORD, pHash: PMSIFILEHASHINFO): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetFileHashW*(szFilePath: LPCWSTR, dwOptions: DWORD, pHash: PMSIFILEHASHINFO): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetFileSignatureInformationA*(szSignedObjectPath: LPCSTR, dwFlags: DWORD, ppcCertContext: ptr PCCERT_CONTEXT, pbHashData: ptr BYTE, pcbHashData: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetFileSignatureInformationW*(szSignedObjectPath: LPCWSTR, dwFlags: DWORD, ppcCertContext: ptr PCCERT_CONTEXT, pbHashData: ptr BYTE, pcbHashData: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetShortcutTargetA*(szShortcutPath: LPCSTR, szProductCode: LPSTR, szFeatureId: LPSTR, szComponentCode: LPSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiGetShortcutTargetW*(szShortcutPath: LPCWSTR, szProductCode: LPWSTR, szFeatureId: LPWSTR, szComponentCode: LPWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiIsProductElevatedA*(szProduct: LPCSTR, pfElevated: ptr WINBOOL): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiIsProductElevatedW*(szProduct: LPCWSTR, pfElevated: ptr WINBOOL): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiNotifySidChangeA*(pOldSid: LPCSTR, pNewSid: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiNotifySidChangeW*(pOldSid: LPCWSTR, pNewSid: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiBeginTransactionA*(szName: LPCSTR, dwTransactionAttributes: DWORD, phTransactionHandle: ptr MSIHANDLE, phChangeOfOwnerEvent: ptr HANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiBeginTransactionW*(szName: LPCWSTR, dwTransactionAttributes: DWORD, phTransactionHandle: ptr MSIHANDLE, phChangeOfOwnerEvent: ptr HANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiEndTransaction*(dwTransactionState: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc.}
-proc MsiJoinTransaction*(hTransactionHandle: MSIHANDLE, dwTransactionAttributes: DWORD, phChangeOfOwnerEvent: ptr HANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+proc MsiSetInternalUI*(
+  dwUILevel: INSTALLUILEVEL, phWnd: ptr HWND
+): INSTALLUILEVEL {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSetExternalUIA*(
+  puiHandler: INSTALLUI_HANDLERA, dwMessageFilter: DWORD, pvContext: LPVOID
+): INSTALLUI_HANDLERA {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSetExternalUIW*(
+  puiHandler: INSTALLUI_HANDLERW, dwMessageFilter: DWORD, pvContext: LPVOID
+): INSTALLUI_HANDLERW {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSetExternalUIRecord*(
+  puiHandler: INSTALLUI_HANDLER_RECORD,
+  dwMessageFilter: DWORD,
+  pvContext: LPVOID,
+  ppuiPrevHandler: PINSTALLUI_HANDLER_RECORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnableLogA*(
+  dwLogMode: DWORD, szLogFile: LPCSTR, dwLogAttributes: DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnableLogW*(
+  dwLogMode: DWORD, szLogFile: LPCWSTR, dwLogAttributes: DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiQueryProductStateA*(
+  szProduct: LPCSTR
+): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiQueryProductStateW*(
+  szProduct: LPCWSTR
+): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetProductInfoA*(
+  szProduct: LPCSTR, szAttribute: LPCSTR, lpValueBuf: LPSTR, pcchValueBuf: ptr DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetProductInfoW*(
+  szProduct: LPCWSTR, szAttribute: LPCWSTR, lpValueBuf: LPWSTR, pcchValueBuf: ptr DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetProductInfoExA*(
+  szProductCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  szProperty: LPCSTR,
+  szValue: LPSTR,
+  pcchValue: LPDWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetProductInfoExW*(
+  szProductCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  szProperty: LPCWSTR,
+  szValue: LPWSTR,
+  pcchValue: LPDWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiInstallProductA*(
+  szPackagePath: LPCSTR, szCommandLine: LPCSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiInstallProductW*(
+  szPackagePath: LPCWSTR, szCommandLine: LPCWSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiConfigureProductA*(
+  szProduct: LPCSTR, iInstallLevel: int32, eInstallState: INSTALLSTATE
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiConfigureProductW*(
+  szProduct: LPCWSTR, iInstallLevel: int32, eInstallState: INSTALLSTATE
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiConfigureProductExA*(
+  szProduct: LPCSTR,
+  iInstallLevel: int32,
+  eInstallState: INSTALLSTATE,
+  szCommandLine: LPCSTR,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiConfigureProductExW*(
+  szProduct: LPCWSTR,
+  iInstallLevel: int32,
+  eInstallState: INSTALLSTATE,
+  szCommandLine: LPCWSTR,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiReinstallProductA*(
+  szProduct: LPCSTR, szReinstallMode: DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiReinstallProductW*(
+  szProduct: LPCWSTR, szReinstallMode: DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiAdvertiseProductExA*(
+  szPackagePath: LPCSTR,
+  szScriptfilePath: LPCSTR,
+  szTransforms: LPCSTR,
+  lgidLanguage: LANGID,
+  dwPlatform: DWORD,
+  dwOptions: DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiAdvertiseProductExW*(
+  szPackagePath: LPCWSTR,
+  szScriptfilePath: LPCWSTR,
+  szTransforms: LPCWSTR,
+  lgidLanguage: LANGID,
+  dwPlatform: DWORD,
+  dwOptions: DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiAdvertiseProductA*(
+  szPackagePath: LPCSTR,
+  szScriptfilePath: LPCSTR,
+  szTransforms: LPCSTR,
+  lgidLanguage: LANGID,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiAdvertiseProductW*(
+  szPackagePath: LPCWSTR,
+  szScriptfilePath: LPCWSTR,
+  szTransforms: LPCWSTR,
+  lgidLanguage: LANGID,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiProcessAdvertiseScriptA*(
+  szScriptFile: LPCSTR,
+  szIconFolder: LPCSTR,
+  hRegData: HKEY,
+  fShortcuts: WINBOOL,
+  fRemoveItems: WINBOOL,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiProcessAdvertiseScriptW*(
+  szScriptFile: LPCWSTR,
+  szIconFolder: LPCWSTR,
+  hRegData: HKEY,
+  fShortcuts: WINBOOL,
+  fRemoveItems: WINBOOL,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiAdvertiseScriptA*(
+  szScriptFile: LPCSTR, dwFlags: DWORD, phRegData: PHKEY, fRemoveItems: WINBOOL
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiAdvertiseScriptW*(
+  szScriptFile: LPCWSTR, dwFlags: DWORD, phRegData: PHKEY, fRemoveItems: WINBOOL
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetProductInfoFromScriptA*(
+  szScriptFile: LPCSTR,
+  lpProductBuf39: LPSTR,
+  plgidLanguage: ptr LANGID,
+  pdwVersion: ptr DWORD,
+  lpNameBuf: LPSTR,
+  pcchNameBuf: ptr DWORD,
+  lpPackageBuf: LPSTR,
+  pcchPackageBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetProductInfoFromScriptW*(
+  szScriptFile: LPCWSTR,
+  lpProductBuf39: LPWSTR,
+  plgidLanguage: ptr LANGID,
+  pdwVersion: ptr DWORD,
+  lpNameBuf: LPWSTR,
+  pcchNameBuf: ptr DWORD,
+  lpPackageBuf: LPWSTR,
+  pcchPackageBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetProductCodeA*(
+  szComponent: LPCSTR, lpBuf39: LPSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetProductCodeW*(
+  szComponent: LPCWSTR, lpBuf39: LPWSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetUserInfoA*(
+  szProduct: LPCSTR,
+  lpUserNameBuf: LPSTR,
+  pcchUserNameBuf: ptr DWORD,
+  lpOrgNameBuf: LPSTR,
+  pcchOrgNameBuf: ptr DWORD,
+  lpSerialBuf: LPSTR,
+  pcchSerialBuf: ptr DWORD,
+): USERINFOSTATE {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetUserInfoW*(
+  szProduct: LPCWSTR,
+  lpUserNameBuf: LPWSTR,
+  pcchUserNameBuf: ptr DWORD,
+  lpOrgNameBuf: LPWSTR,
+  pcchOrgNameBuf: ptr DWORD,
+  lpSerialBuf: LPWSTR,
+  pcchSerialBuf: ptr DWORD,
+): USERINFOSTATE {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiCollectUserInfoA*(
+  szProduct: LPCSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiCollectUserInfoW*(
+  szProduct: LPCWSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiApplyPatchA*(
+  szPatchPackage: LPCSTR,
+  szInstallPackage: LPCSTR,
+  eInstallType: INSTALLTYPE,
+  szCommandLine: LPCSTR,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiApplyPatchW*(
+  szPatchPackage: LPCWSTR,
+  szInstallPackage: LPCWSTR,
+  eInstallType: INSTALLTYPE,
+  szCommandLine: LPCWSTR,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetPatchInfoA*(
+  szPatch: LPCSTR, szAttribute: LPCSTR, lpValueBuf: LPSTR, pcchValueBuf: ptr DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetPatchInfoW*(
+  szPatch: LPCWSTR, szAttribute: LPCWSTR, lpValueBuf: LPWSTR, pcchValueBuf: ptr DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumPatchesA*(
+  szProduct: LPCSTR,
+  iPatchIndex: DWORD,
+  lpPatchBuf: LPSTR,
+  lpTransformsBuf: LPSTR,
+  pcchTransformsBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumPatchesW*(
+  szProduct: LPCWSTR,
+  iPatchIndex: DWORD,
+  lpPatchBuf: LPWSTR,
+  lpTransformsBuf: LPWSTR,
+  pcchTransformsBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiRemovePatchesA*(
+  szPatchList: LPCSTR,
+  szProductCode: LPCSTR,
+  eUninstallType: INSTALLTYPE,
+  szPropertyList: LPCSTR,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiRemovePatchesW*(
+  szPatchList: LPCWSTR,
+  szProductCode: LPCWSTR,
+  eUninstallType: INSTALLTYPE,
+  szPropertyList: LPCWSTR,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiExtractPatchXMLDataA*(
+  szPatchPath: LPCSTR, dwReserved: DWORD, szXMLData: LPSTR, pcchXMLData: ptr DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiExtractPatchXMLDataW*(
+  szPatchPath: LPCWSTR, dwReserved: DWORD, szXMLData: LPWSTR, pcchXMLData: ptr DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetPatchInfoExA*(
+  szPatchCode: LPCSTR,
+  szProductCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  szProperty: LPCSTR,
+  lpValue: LPSTR,
+  pcchValue: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetPatchInfoExW*(
+  szPatchCode: LPCWSTR,
+  szProductCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  szProperty: LPCWSTR,
+  lpValue: LPWSTR,
+  pcchValue: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiApplyMultiplePatchesA*(
+  szPatchPackages: LPCSTR, szProductCode: LPCSTR, szPropertiesList: LPCSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiApplyMultiplePatchesW*(
+  szPatchPackages: LPCWSTR, szProductCode: LPCWSTR, szPropertiesList: LPCWSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiDeterminePatchSequenceA*(
+  szProductCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  cPatchInfo: DWORD,
+  pPatchInfo: PMSIPATCHSEQUENCEINFOA,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiDeterminePatchSequenceW*(
+  szProductCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  cPatchInfo: DWORD,
+  pPatchInfo: PMSIPATCHSEQUENCEINFOW,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiDetermineApplicablePatchesA*(
+  szProductPackagePath: LPCSTR, cPatchInfo: DWORD, pPatchInfo: PMSIPATCHSEQUENCEINFOA
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiDetermineApplicablePatchesW*(
+  szProductPackagePath: LPCWSTR, cPatchInfo: DWORD, pPatchInfo: PMSIPATCHSEQUENCEINFOW
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumPatchesExA*(
+  szProductCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: DWORD,
+  dwFilter: DWORD,
+  dwIndex: DWORD,
+  szPatchCode: ptr CHAR,
+  szTargetProductCode: ptr CHAR,
+  pdwTargetProductContext: ptr MSIINSTALLCONTEXT,
+  szTargetUserSid: LPSTR,
+  pcchTargetUserSid: LPDWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumPatchesExW*(
+  szProductCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: DWORD,
+  dwFilter: DWORD,
+  dwIndex: DWORD,
+  szPatchCode: ptr WCHAR,
+  szTargetProductCode: ptr WCHAR,
+  pdwTargetProductContext: ptr MSIINSTALLCONTEXT,
+  szTargetUserSid: LPWSTR,
+  pcchTargetUserSid: LPDWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiQueryFeatureStateA*(
+  szProduct: LPCSTR, szFeature: LPCSTR
+): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiQueryFeatureStateW*(
+  szProduct: LPCWSTR, szFeature: LPCWSTR
+): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiQueryFeatureStateExA*(
+  szProductCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  szFeature: LPCSTR,
+  pdwState: ptr INSTALLSTATE,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiQueryFeatureStateExW*(
+  szProductCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  szFeature: LPCWSTR,
+  pdwState: ptr INSTALLSTATE,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiUseFeatureA*(
+  szProduct: LPCSTR, szFeature: LPCSTR
+): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiUseFeatureW*(
+  szProduct: LPCWSTR, szFeature: LPCWSTR
+): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiUseFeatureExA*(
+  szProduct: LPCSTR, szFeature: LPCSTR, dwInstallMode: DWORD, dwReserved: DWORD
+): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiUseFeatureExW*(
+  szProduct: LPCWSTR, szFeature: LPCWSTR, dwInstallMode: DWORD, dwReserved: DWORD
+): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetFeatureUsageA*(
+  szProduct: LPCSTR, szFeature: LPCSTR, pdwUseCount: ptr DWORD, pwDateUsed: ptr WORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetFeatureUsageW*(
+  szProduct: LPCWSTR, szFeature: LPCWSTR, pdwUseCount: ptr DWORD, pwDateUsed: ptr WORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiConfigureFeatureA*(
+  szProduct: LPCSTR, szFeature: LPCSTR, eInstallState: INSTALLSTATE
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiConfigureFeatureW*(
+  szProduct: LPCWSTR, szFeature: LPCWSTR, eInstallState: INSTALLSTATE
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiReinstallFeatureA*(
+  szProduct: LPCSTR, szFeature: LPCSTR, dwReinstallMode: DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiReinstallFeatureW*(
+  szProduct: LPCWSTR, szFeature: LPCWSTR, dwReinstallMode: DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiProvideComponentA*(
+  szProduct: LPCSTR,
+  szFeature: LPCSTR,
+  szComponent: LPCSTR,
+  dwInstallMode: DWORD,
+  lpPathBuf: LPSTR,
+  pcchPathBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiProvideComponentW*(
+  szProduct: LPCWSTR,
+  szFeature: LPCWSTR,
+  szComponent: LPCWSTR,
+  dwInstallMode: DWORD,
+  lpPathBuf: LPWSTR,
+  pcchPathBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiProvideQualifiedComponentA*(
+  szCategory: LPCSTR,
+  szQualifier: LPCSTR,
+  dwInstallMode: DWORD,
+  lpPathBuf: LPSTR,
+  pcchPathBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiProvideQualifiedComponentW*(
+  szCategory: LPCWSTR,
+  szQualifier: LPCWSTR,
+  dwInstallMode: DWORD,
+  lpPathBuf: LPWSTR,
+  pcchPathBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiProvideQualifiedComponentExA*(
+  szCategory: LPCSTR,
+  szQualifier: LPCSTR,
+  dwInstallMode: DWORD,
+  szProduct: LPCSTR,
+  dwUnused1: DWORD,
+  dwUnused2: DWORD,
+  lpPathBuf: LPSTR,
+  pcchPathBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiProvideQualifiedComponentExW*(
+  szCategory: LPCWSTR,
+  szQualifier: LPCWSTR,
+  dwInstallMode: DWORD,
+  szProduct: LPCWSTR,
+  dwUnused1: DWORD,
+  dwUnused2: DWORD,
+  lpPathBuf: LPWSTR,
+  pcchPathBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetComponentPathA*(
+  szProduct: LPCSTR, szComponent: LPCSTR, lpPathBuf: LPSTR, pcchBuf: ptr DWORD
+): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetComponentPathW*(
+  szProduct: LPCWSTR, szComponent: LPCWSTR, lpPathBuf: LPWSTR, pcchBuf: ptr DWORD
+): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiProvideAssemblyA*(
+  szAssemblyName: LPCSTR,
+  szAppContext: LPCSTR,
+  dwInstallMode: DWORD,
+  dwAssemblyInfo: DWORD,
+  lpPathBuf: LPSTR,
+  pcchPathBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiProvideAssemblyW*(
+  szAssemblyName: LPCWSTR,
+  szAppContext: LPCWSTR,
+  dwInstallMode: DWORD,
+  dwAssemblyInfo: DWORD,
+  lpPathBuf: LPWSTR,
+  pcchPathBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiQueryComponentStateA*(
+  szProductCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  szComponentCode: LPCSTR,
+  pdwState: ptr INSTALLSTATE,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiQueryComponentStateW*(
+  szProductCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  szComponentCode: LPCWSTR,
+  pdwState: ptr INSTALLSTATE,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumProductsA*(
+  iProductIndex: DWORD, lpProductBuf: LPSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumProductsW*(
+  iProductIndex: DWORD, lpProductBuf: LPWSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumProductsExA*(
+  szProductCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: DWORD,
+  dwIndex: DWORD,
+  szInstalledProductCode: ptr CHAR,
+  pdwInstalledContext: ptr MSIINSTALLCONTEXT,
+  szSid: LPSTR,
+  pcchSid: LPDWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumProductsExW*(
+  szProductCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: DWORD,
+  dwIndex: DWORD,
+  szInstalledProductCode: ptr WCHAR,
+  pdwInstalledContext: ptr MSIINSTALLCONTEXT,
+  szSid: LPWSTR,
+  pcchSid: LPDWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumRelatedProductsA*(
+  lpUpgradeCode: LPCSTR, dwReserved: DWORD, iProductIndex: DWORD, lpProductBuf: LPSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumRelatedProductsW*(
+  lpUpgradeCode: LPCWSTR, dwReserved: DWORD, iProductIndex: DWORD, lpProductBuf: LPWSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumFeaturesA*(
+  szProduct: LPCSTR, iFeatureIndex: DWORD, lpFeatureBuf: LPSTR, lpParentBuf: LPSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumFeaturesW*(
+  szProduct: LPCWSTR, iFeatureIndex: DWORD, lpFeatureBuf: LPWSTR, lpParentBuf: LPWSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumComponentsA*(
+  iComponentIndex: DWORD, lpComponentBuf: LPSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumComponentsW*(
+  iComponentIndex: DWORD, lpComponentBuf: LPWSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumClientsA*(
+  szComponent: LPCSTR, iProductIndex: DWORD, lpProductBuf: LPSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumClientsW*(
+  szComponent: LPCWSTR, iProductIndex: DWORD, lpProductBuf: LPWSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumComponentQualifiersA*(
+  szComponent: LPCSTR,
+  iIndex: DWORD,
+  lpQualifierBuf: LPSTR,
+  pcchQualifierBuf: ptr DWORD,
+  lpApplicationDataBuf: LPSTR,
+  pcchApplicationDataBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEnumComponentQualifiersW*(
+  szComponent: LPCWSTR,
+  iIndex: DWORD,
+  lpQualifierBuf: LPWSTR,
+  pcchQualifierBuf: ptr DWORD,
+  lpApplicationDataBuf: LPWSTR,
+  pcchApplicationDataBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiOpenProductA*(
+  szProduct: LPCSTR, hProduct: ptr MSIHANDLE
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiOpenProductW*(
+  szProduct: LPCWSTR, hProduct: ptr MSIHANDLE
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiOpenPackageA*(
+  szPackagePath: LPCSTR, hProduct: ptr MSIHANDLE
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiOpenPackageW*(
+  szPackagePath: LPCWSTR, hProduct: ptr MSIHANDLE
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiOpenPackageExA*(
+  szPackagePath: LPCSTR, dwOptions: DWORD, hProduct: ptr MSIHANDLE
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiOpenPackageExW*(
+  szPackagePath: LPCWSTR, dwOptions: DWORD, hProduct: ptr MSIHANDLE
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetPatchFileListA*(
+  szProductCode: LPCSTR,
+  szPatchPackages: LPCSTR,
+  pcFiles: LPDWORD,
+  pphFileRecords: ptr ptr MSIHANDLE,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetPatchFileListW*(
+  szProductCode: LPCWSTR,
+  szPatchPackages: LPCWSTR,
+  pcFiles: LPDWORD,
+  pphFileRecords: ptr ptr MSIHANDLE,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetProductPropertyA*(
+  hProduct: MSIHANDLE, szProperty: LPCSTR, lpValueBuf: LPSTR, pcchValueBuf: ptr DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetProductPropertyW*(
+  hProduct: MSIHANDLE, szProperty: LPCWSTR, lpValueBuf: LPWSTR, pcchValueBuf: ptr DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiVerifyPackageA*(
+  szPackagePath: LPCSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiVerifyPackageW*(
+  szPackagePath: LPCWSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetFeatureInfoA*(
+  hProduct: MSIHANDLE,
+  szFeature: LPCSTR,
+  lpAttributes: ptr DWORD,
+  lpTitleBuf: LPSTR,
+  pcchTitleBuf: ptr DWORD,
+  lpHelpBuf: LPSTR,
+  pcchHelpBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetFeatureInfoW*(
+  hProduct: MSIHANDLE,
+  szFeature: LPCWSTR,
+  lpAttributes: ptr DWORD,
+  lpTitleBuf: LPWSTR,
+  pcchTitleBuf: ptr DWORD,
+  lpHelpBuf: LPWSTR,
+  pcchHelpBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiInstallMissingComponentA*(
+  szProduct: LPCSTR, szComponent: LPCSTR, eInstallState: INSTALLSTATE
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiInstallMissingComponentW*(
+  szProduct: LPCWSTR, szComponent: LPCWSTR, eInstallState: INSTALLSTATE
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiInstallMissingFileA*(
+  szProduct: LPCSTR, szFile: LPCSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiInstallMissingFileW*(
+  szProduct: LPCWSTR, szFile: LPCWSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiLocateComponentA*(
+  szComponent: LPCSTR, lpPathBuf: LPSTR, pcchBuf: ptr DWORD
+): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiLocateComponentW*(
+  szComponent: LPCWSTR, lpPathBuf: LPWSTR, pcchBuf: ptr DWORD
+): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListClearAllA*(
+  szProduct: LPCSTR, szUserName: LPCSTR, dwReserved: DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListClearAllW*(
+  szProduct: LPCWSTR, szUserName: LPCWSTR, dwReserved: DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListAddSourceA*(
+  szProduct: LPCSTR, szUserName: LPCSTR, dwReserved: DWORD, szSource: LPCSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListAddSourceW*(
+  szProduct: LPCWSTR, szUserName: LPCWSTR, dwReserved: DWORD, szSource: LPCWSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListForceResolutionA*(
+  szProduct: LPCSTR, szUserName: LPCSTR, dwReserved: DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListForceResolutionW*(
+  szProduct: LPCWSTR, szUserName: LPCWSTR, dwReserved: DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListAddSourceExA*(
+  szProductCodeOrPatchCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  szSource: LPCSTR,
+  dwIndex: DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListAddSourceExW*(
+  szProductCodeOrPatchCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  szSource: LPCWSTR,
+  dwIndex: DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListAddMediaDiskA*(
+  szProductCodeOrPatchCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  dwDiskId: DWORD,
+  szVolumeLabel: LPCSTR,
+  szDiskPrompt: LPCSTR,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListAddMediaDiskW*(
+  szProductCodeOrPatchCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  dwDiskId: DWORD,
+  szVolumeLabel: LPCWSTR,
+  szDiskPrompt: LPCWSTR,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListClearSourceA*(
+  szProductCodeOrPatchCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  szSource: LPCSTR,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListClearSourceW*(
+  szProductCodeOrPatchCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  szSource: LPCWSTR,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListClearMediaDiskA*(
+  szProductCodeOrPatchCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  dwDiskId: DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListClearMediaDiskW*(
+  szProductCodeOrPatchCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  dwDiskId: DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListClearAllExA*(
+  szProductCodeOrPatchCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListClearAllExW*(
+  szProductCodeOrPatchCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListForceResolutionExA*(
+  szProductCodeOrPatchCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListForceResolutionExW*(
+  szProductCodeOrPatchCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListSetInfoA*(
+  szProductCodeOrPatchCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  szProperty: LPCSTR,
+  szValue: LPCSTR,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListSetInfoW*(
+  szProductCodeOrPatchCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  szProperty: LPCWSTR,
+  szValue: LPCWSTR,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListGetInfoA*(
+  szProductCodeOrPatchCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  szProperty: LPCSTR,
+  szValue: LPSTR,
+  pcchValue: LPDWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListGetInfoW*(
+  szProductCodeOrPatchCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  szProperty: LPCWSTR,
+  szValue: LPWSTR,
+  pcchValue: LPDWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListEnumSourcesA*(
+  szProductCodeOrPatchCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  dwIndex: DWORD,
+  szSource: LPSTR,
+  pcchSource: LPDWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListEnumSourcesW*(
+  szProductCodeOrPatchCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  dwIndex: DWORD,
+  szSource: LPWSTR,
+  pcchSource: LPDWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListEnumMediaDisksA*(
+  szProductCodeOrPatchCode: LPCSTR,
+  szUserSid: LPCSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  dwIndex: DWORD,
+  pdwDiskId: LPDWORD,
+  szVolumeLabel: LPSTR,
+  pcchVolumeLabel: LPDWORD,
+  szDiskPrompt: LPSTR,
+  pcchDiskPrompt: LPDWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiSourceListEnumMediaDisksW*(
+  szProductCodeOrPatchCode: LPCWSTR,
+  szUserSid: LPCWSTR,
+  dwContext: MSIINSTALLCONTEXT,
+  dwOptions: DWORD,
+  dwIndex: DWORD,
+  pdwDiskId: LPDWORD,
+  szVolumeLabel: LPWSTR,
+  pcchVolumeLabel: LPDWORD,
+  szDiskPrompt: LPWSTR,
+  pcchDiskPrompt: LPDWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetFileVersionA*(
+  szFilePath: LPCSTR,
+  lpVersionBuf: LPSTR,
+  pcchVersionBuf: ptr DWORD,
+  lpLangBuf: LPSTR,
+  pcchLangBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetFileVersionW*(
+  szFilePath: LPCWSTR,
+  lpVersionBuf: LPWSTR,
+  pcchVersionBuf: ptr DWORD,
+  lpLangBuf: LPWSTR,
+  pcchLangBuf: ptr DWORD,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetFileHashA*(
+  szFilePath: LPCSTR, dwOptions: DWORD, pHash: PMSIFILEHASHINFO
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetFileHashW*(
+  szFilePath: LPCWSTR, dwOptions: DWORD, pHash: PMSIFILEHASHINFO
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetFileSignatureInformationA*(
+  szSignedObjectPath: LPCSTR,
+  dwFlags: DWORD,
+  ppcCertContext: ptr PCCERT_CONTEXT,
+  pbHashData: ptr BYTE,
+  pcbHashData: ptr DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetFileSignatureInformationW*(
+  szSignedObjectPath: LPCWSTR,
+  dwFlags: DWORD,
+  ppcCertContext: ptr PCCERT_CONTEXT,
+  pbHashData: ptr BYTE,
+  pcbHashData: ptr DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetShortcutTargetA*(
+  szShortcutPath: LPCSTR,
+  szProductCode: LPSTR,
+  szFeatureId: LPSTR,
+  szComponentCode: LPSTR,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiGetShortcutTargetW*(
+  szShortcutPath: LPCWSTR,
+  szProductCode: LPWSTR,
+  szFeatureId: LPWSTR,
+  szComponentCode: LPWSTR,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiIsProductElevatedA*(
+  szProduct: LPCSTR, pfElevated: ptr WINBOOL
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiIsProductElevatedW*(
+  szProduct: LPCWSTR, pfElevated: ptr WINBOOL
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiNotifySidChangeA*(
+  pOldSid: LPCSTR, pNewSid: LPCSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiNotifySidChangeW*(
+  pOldSid: LPCWSTR, pNewSid: LPCWSTR
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiBeginTransactionA*(
+  szName: LPCSTR,
+  dwTransactionAttributes: DWORD,
+  phTransactionHandle: ptr MSIHANDLE,
+  phChangeOfOwnerEvent: ptr HANDLE,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiBeginTransactionW*(
+  szName: LPCWSTR,
+  dwTransactionAttributes: DWORD,
+  phTransactionHandle: ptr MSIHANDLE,
+  phChangeOfOwnerEvent: ptr HANDLE,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiEndTransaction*(
+  dwTransactionState: DWORD
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
+proc MsiJoinTransaction*(
+  hTransactionHandle: MSIHANDLE,
+  dwTransactionAttributes: DWORD,
+  phChangeOfOwnerEvent: ptr HANDLE,
+): UINT {.winapi, stdcall, dynlib: "msi", importc.}
+
 when winimUnicode:
   type
     INSTALLUI_HANDLER* = INSTALLUI_HANDLERW
     MSIPATCHSEQUENCEINFO* = MSIPATCHSEQUENCEINFOW
     PMSIPATCHSEQUENCEINFO* = PMSIPATCHSEQUENCEINFOW
-  proc MsiSetExternalUI*(puiHandler: INSTALLUI_HANDLERW, dwMessageFilter: DWORD, pvContext: LPVOID): INSTALLUI_HANDLERW {.winapi, stdcall, dynlib: "msi", importc: "MsiSetExternalUIW".}
-  proc MsiEnableLog*(dwLogMode: DWORD, szLogFile: LPCWSTR, dwLogAttributes: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnableLogW".}
-  proc MsiQueryProductState*(szProduct: LPCWSTR): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryProductStateW".}
-  proc MsiGetProductInfo*(szProduct: LPCWSTR, szAttribute: LPCWSTR, lpValueBuf: LPWSTR, pcchValueBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductInfoW".}
-  proc MsiGetProductInfoEx*(szProductCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, szProperty: LPCWSTR, szValue: LPWSTR, pcchValue: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductInfoExW".}
-  proc MsiInstallProduct*(szPackagePath: LPCWSTR, szCommandLine: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiInstallProductW".}
-  proc MsiConfigureProduct*(szProduct: LPCWSTR, iInstallLevel: int32, eInstallState: INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiConfigureProductW".}
-  proc MsiConfigureProductEx*(szProduct: LPCWSTR, iInstallLevel: int32, eInstallState: INSTALLSTATE, szCommandLine: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiConfigureProductExW".}
-  proc MsiReinstallProduct*(szProduct: LPCWSTR, szReinstallMode: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiReinstallProductW".}
-  proc MsiAdvertiseProductEx*(szPackagePath: LPCWSTR, szScriptfilePath: LPCWSTR, szTransforms: LPCWSTR, lgidLanguage: LANGID, dwPlatform: DWORD, dwOptions: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiAdvertiseProductExW".}
-  proc MsiAdvertiseProduct*(szPackagePath: LPCWSTR, szScriptfilePath: LPCWSTR, szTransforms: LPCWSTR, lgidLanguage: LANGID): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiAdvertiseProductW".}
-  proc MsiProcessAdvertiseScript*(szScriptFile: LPCWSTR, szIconFolder: LPCWSTR, hRegData: HKEY, fShortcuts: WINBOOL, fRemoveItems: WINBOOL): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProcessAdvertiseScriptW".}
-  proc MsiAdvertiseScript*(szScriptFile: LPCWSTR, dwFlags: DWORD, phRegData: PHKEY, fRemoveItems: WINBOOL): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiAdvertiseScriptW".}
-  proc MsiGetProductInfoFromScript*(szScriptFile: LPCWSTR, lpProductBuf39: LPWSTR, plgidLanguage: ptr LANGID, pdwVersion: ptr DWORD, lpNameBuf: LPWSTR, pcchNameBuf: ptr DWORD, lpPackageBuf: LPWSTR, pcchPackageBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductInfoFromScriptW".}
-  proc MsiGetProductCode*(szComponent: LPCWSTR, lpBuf39: LPWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductCodeW".}
-  proc MsiGetUserInfo*(szProduct: LPCWSTR, lpUserNameBuf: LPWSTR, pcchUserNameBuf: ptr DWORD, lpOrgNameBuf: LPWSTR, pcchOrgNameBuf: ptr DWORD, lpSerialBuf: LPWSTR, pcchSerialBuf: ptr DWORD): USERINFOSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiGetUserInfoW".}
-  proc MsiCollectUserInfo*(szProduct: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiCollectUserInfoW".}
-  proc MsiApplyPatch*(szPatchPackage: LPCWSTR, szInstallPackage: LPCWSTR, eInstallType: INSTALLTYPE, szCommandLine: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiApplyPatchW".}
-  proc MsiGetPatchInfo*(szPatch: LPCWSTR, szAttribute: LPCWSTR, lpValueBuf: LPWSTR, pcchValueBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetPatchInfoW".}
-  proc MsiEnumPatches*(szProduct: LPCWSTR, iPatchIndex: DWORD, lpPatchBuf: LPWSTR, lpTransformsBuf: LPWSTR, pcchTransformsBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumPatchesW".}
-  proc MsiRemovePatches*(szPatchList: LPCWSTR, szProductCode: LPCWSTR, eUninstallType: INSTALLTYPE, szPropertyList: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiRemovePatchesW".}
-  proc MsiExtractPatchXMLData*(szPatchPath: LPCWSTR, dwReserved: DWORD, szXMLData: LPWSTR, pcchXMLData: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiExtractPatchXMLDataW".}
-  proc MsiGetPatchInfoEx*(szPatchCode: LPCWSTR, szProductCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, szProperty: LPCWSTR, lpValue: LPWSTR, pcchValue: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetPatchInfoExW".}
-  proc MsiApplyMultiplePatches*(szPatchPackages: LPCWSTR, szProductCode: LPCWSTR, szPropertiesList: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiApplyMultiplePatchesW".}
-  proc MsiDeterminePatchSequence*(szProductCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, cPatchInfo: DWORD, pPatchInfo: PMSIPATCHSEQUENCEINFOW): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiDeterminePatchSequenceW".}
-  proc MsiDetermineApplicablePatches*(szProductPackagePath: LPCWSTR, cPatchInfo: DWORD, pPatchInfo: PMSIPATCHSEQUENCEINFOW): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiDetermineApplicablePatchesW".}
-  proc MsiEnumPatchesEx*(szProductCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: DWORD, dwFilter: DWORD, dwIndex: DWORD, szPatchCode: ptr WCHAR, szTargetProductCode: ptr WCHAR, pdwTargetProductContext: ptr MSIINSTALLCONTEXT, szTargetUserSid: LPWSTR, pcchTargetUserSid: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumPatchesExW".}
-  proc MsiQueryFeatureState*(szProduct: LPCWSTR, szFeature: LPCWSTR): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryFeatureStateW".}
-  proc MsiQueryFeatureStateEx*(szProductCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, szFeature: LPCWSTR, pdwState: ptr INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryFeatureStateExW".}
-  proc MsiUseFeature*(szProduct: LPCWSTR, szFeature: LPCWSTR): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiUseFeatureW".}
-  proc MsiUseFeatureEx*(szProduct: LPCWSTR, szFeature: LPCWSTR, dwInstallMode: DWORD, dwReserved: DWORD): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiUseFeatureExW".}
-  proc MsiGetFeatureUsage*(szProduct: LPCWSTR, szFeature: LPCWSTR, pdwUseCount: ptr DWORD, pwDateUsed: ptr WORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFeatureUsageW".}
-  proc MsiConfigureFeature*(szProduct: LPCWSTR, szFeature: LPCWSTR, eInstallState: INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiConfigureFeatureW".}
-  proc MsiReinstallFeature*(szProduct: LPCWSTR, szFeature: LPCWSTR, dwReinstallMode: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiReinstallFeatureW".}
-  proc MsiProvideComponent*(szProduct: LPCWSTR, szFeature: LPCWSTR, szComponent: LPCWSTR, dwInstallMode: DWORD, lpPathBuf: LPWSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideComponentW".}
-  proc MsiProvideQualifiedComponent*(szCategory: LPCWSTR, szQualifier: LPCWSTR, dwInstallMode: DWORD, lpPathBuf: LPWSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideQualifiedComponentW".}
-  proc MsiProvideQualifiedComponentEx*(szCategory: LPCWSTR, szQualifier: LPCWSTR, dwInstallMode: DWORD, szProduct: LPCWSTR, dwUnused1: DWORD, dwUnused2: DWORD, lpPathBuf: LPWSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideQualifiedComponentExW".}
-  proc MsiGetComponentPath*(szProduct: LPCWSTR, szComponent: LPCWSTR, lpPathBuf: LPWSTR, pcchBuf: ptr DWORD): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiGetComponentPathW".}
-  proc MsiProvideAssembly*(szAssemblyName: LPCWSTR, szAppContext: LPCWSTR, dwInstallMode: DWORD, dwAssemblyInfo: DWORD, lpPathBuf: LPWSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideAssemblyW".}
-  proc MsiQueryComponentState*(szProductCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, szComponentCode: LPCWSTR, pdwState: ptr INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryComponentStateW".}
-  proc MsiEnumProducts*(iProductIndex: DWORD, lpProductBuf: LPWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumProductsW".}
-  proc MsiEnumProductsEx*(szProductCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: DWORD, dwIndex: DWORD, szInstalledProductCode: ptr WCHAR, pdwInstalledContext: ptr MSIINSTALLCONTEXT, szSid: LPWSTR, pcchSid: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumProductsExW".}
-  proc MsiEnumRelatedProducts*(lpUpgradeCode: LPCWSTR, dwReserved: DWORD, iProductIndex: DWORD, lpProductBuf: LPWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumRelatedProductsW".}
-  proc MsiEnumFeatures*(szProduct: LPCWSTR, iFeatureIndex: DWORD, lpFeatureBuf: LPWSTR, lpParentBuf: LPWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumFeaturesW".}
-  proc MsiEnumComponents*(iComponentIndex: DWORD, lpComponentBuf: LPWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumComponentsW".}
-  proc MsiEnumClients*(szComponent: LPCWSTR, iProductIndex: DWORD, lpProductBuf: LPWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumClientsW".}
-  proc MsiEnumComponentQualifiers*(szComponent: LPCWSTR, iIndex: DWORD, lpQualifierBuf: LPWSTR, pcchQualifierBuf: ptr DWORD, lpApplicationDataBuf: LPWSTR, pcchApplicationDataBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumComponentQualifiersW".}
-  proc MsiOpenProduct*(szProduct: LPCWSTR, hProduct: ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiOpenProductW".}
-  proc MsiOpenPackage*(szPackagePath: LPCWSTR, hProduct: ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiOpenPackageW".}
-  proc MsiOpenPackageEx*(szPackagePath: LPCWSTR, dwOptions: DWORD, hProduct: ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiOpenPackageExW".}
-  proc MsiGetPatchFileList*(szProductCode: LPCWSTR, szPatchPackages: LPCWSTR, pcFiles: LPDWORD, pphFileRecords: ptr ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetPatchFileListW".}
-  proc MsiGetProductProperty*(hProduct: MSIHANDLE, szProperty: LPCWSTR, lpValueBuf: LPWSTR, pcchValueBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductPropertyW".}
-  proc MsiVerifyPackage*(szPackagePath: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiVerifyPackageW".}
-  proc MsiGetFeatureInfo*(hProduct: MSIHANDLE, szFeature: LPCWSTR, lpAttributes: ptr DWORD, lpTitleBuf: LPWSTR, pcchTitleBuf: ptr DWORD, lpHelpBuf: LPWSTR, pcchHelpBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFeatureInfoW".}
-  proc MsiInstallMissingComponent*(szProduct: LPCWSTR, szComponent: LPCWSTR, eInstallState: INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiInstallMissingComponentW".}
-  proc MsiInstallMissingFile*(szProduct: LPCWSTR, szFile: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiInstallMissingFileW".}
-  proc MsiLocateComponent*(szComponent: LPCWSTR, lpPathBuf: LPWSTR, pcchBuf: ptr DWORD): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiLocateComponentW".}
-  proc MsiSourceListClearAll*(szProduct: LPCWSTR, szUserName: LPCWSTR, dwReserved: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearAllW".}
-  proc MsiSourceListAddSource*(szProduct: LPCWSTR, szUserName: LPCWSTR, dwReserved: DWORD, szSource: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListAddSourceW".}
-  proc MsiSourceListForceResolution*(szProduct: LPCWSTR, szUserName: LPCWSTR, dwReserved: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListForceResolutionW".}
-  proc MsiSourceListAddSourceEx*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szSource: LPCWSTR, dwIndex: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListAddSourceExW".}
-  proc MsiSourceListAddMediaDisk*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwDiskId: DWORD, szVolumeLabel: LPCWSTR, szDiskPrompt: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListAddMediaDiskW".}
-  proc MsiSourceListClearSource*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szSource: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearSourceW".}
-  proc MsiSourceListClearMediaDisk*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwDiskId: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearMediaDiskW".}
-  proc MsiSourceListClearAllEx*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearAllExW".}
-  proc MsiSourceListForceResolutionEx*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListForceResolutionExW".}
-  proc MsiSourceListSetInfo*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szProperty: LPCWSTR, szValue: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListSetInfoW".}
-  proc MsiSourceListGetInfo*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szProperty: LPCWSTR, szValue: LPWSTR, pcchValue: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListGetInfoW".}
-  proc MsiSourceListEnumSources*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwIndex: DWORD, szSource: LPWSTR, pcchSource: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListEnumSourcesW".}
-  proc MsiSourceListEnumMediaDisks*(szProductCodeOrPatchCode: LPCWSTR, szUserSid: LPCWSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwIndex: DWORD, pdwDiskId: LPDWORD, szVolumeLabel: LPWSTR, pcchVolumeLabel: LPDWORD, szDiskPrompt: LPWSTR, pcchDiskPrompt: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListEnumMediaDisksW".}
-  proc MsiGetFileVersion*(szFilePath: LPCWSTR, lpVersionBuf: LPWSTR, pcchVersionBuf: ptr DWORD, lpLangBuf: LPWSTR, pcchLangBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFileVersionW".}
-  proc MsiGetFileHash*(szFilePath: LPCWSTR, dwOptions: DWORD, pHash: PMSIFILEHASHINFO): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFileHashW".}
-  proc MsiGetFileSignatureInformation*(szSignedObjectPath: LPCWSTR, dwFlags: DWORD, ppcCertContext: ptr PCCERT_CONTEXT, pbHashData: ptr BYTE, pcbHashData: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFileSignatureInformationW".}
-  proc MsiGetShortcutTarget*(szShortcutPath: LPCWSTR, szProductCode: LPWSTR, szFeatureId: LPWSTR, szComponentCode: LPWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetShortcutTargetW".}
-  proc MsiIsProductElevated*(szProduct: LPCWSTR, pfElevated: ptr WINBOOL): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiIsProductElevatedW".}
-  proc MsiNotifySidChange*(pOldSid: LPCWSTR, pNewSid: LPCWSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiNotifySidChangeW".}
-  proc MsiBeginTransaction*(szName: LPCWSTR, dwTransactionAttributes: DWORD, phTransactionHandle: ptr MSIHANDLE, phChangeOfOwnerEvent: ptr HANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiBeginTransactionW".}
+
+  proc MsiSetExternalUI*(
+    puiHandler: INSTALLUI_HANDLERW, dwMessageFilter: DWORD, pvContext: LPVOID
+  ): INSTALLUI_HANDLERW {.winapi, stdcall, dynlib: "msi", importc: "MsiSetExternalUIW".}
+
+  proc MsiEnableLog*(
+    dwLogMode: DWORD, szLogFile: LPCWSTR, dwLogAttributes: DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnableLogW".}
+
+  proc MsiQueryProductState*(
+    szProduct: LPCWSTR
+  ): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryProductStateW".}
+
+  proc MsiGetProductInfo*(
+    szProduct: LPCWSTR,
+    szAttribute: LPCWSTR,
+    lpValueBuf: LPWSTR,
+    pcchValueBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductInfoW".}
+
+  proc MsiGetProductInfoEx*(
+    szProductCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    szProperty: LPCWSTR,
+    szValue: LPWSTR,
+    pcchValue: LPDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductInfoExW".}
+
+  proc MsiInstallProduct*(
+    szPackagePath: LPCWSTR, szCommandLine: LPCWSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiInstallProductW".}
+
+  proc MsiConfigureProduct*(
+    szProduct: LPCWSTR, iInstallLevel: int32, eInstallState: INSTALLSTATE
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiConfigureProductW".}
+
+  proc MsiConfigureProductEx*(
+    szProduct: LPCWSTR,
+    iInstallLevel: int32,
+    eInstallState: INSTALLSTATE,
+    szCommandLine: LPCWSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiConfigureProductExW".}
+
+  proc MsiReinstallProduct*(
+    szProduct: LPCWSTR, szReinstallMode: DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiReinstallProductW".}
+
+  proc MsiAdvertiseProductEx*(
+    szPackagePath: LPCWSTR,
+    szScriptfilePath: LPCWSTR,
+    szTransforms: LPCWSTR,
+    lgidLanguage: LANGID,
+    dwPlatform: DWORD,
+    dwOptions: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiAdvertiseProductExW".}
+
+  proc MsiAdvertiseProduct*(
+    szPackagePath: LPCWSTR,
+    szScriptfilePath: LPCWSTR,
+    szTransforms: LPCWSTR,
+    lgidLanguage: LANGID,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiAdvertiseProductW".}
+
+  proc MsiProcessAdvertiseScript*(
+    szScriptFile: LPCWSTR,
+    szIconFolder: LPCWSTR,
+    hRegData: HKEY,
+    fShortcuts: WINBOOL,
+    fRemoveItems: WINBOOL,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProcessAdvertiseScriptW".}
+
+  proc MsiAdvertiseScript*(
+    szScriptFile: LPCWSTR, dwFlags: DWORD, phRegData: PHKEY, fRemoveItems: WINBOOL
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiAdvertiseScriptW".}
+
+  proc MsiGetProductInfoFromScript*(
+    szScriptFile: LPCWSTR,
+    lpProductBuf39: LPWSTR,
+    plgidLanguage: ptr LANGID,
+    pdwVersion: ptr DWORD,
+    lpNameBuf: LPWSTR,
+    pcchNameBuf: ptr DWORD,
+    lpPackageBuf: LPWSTR,
+    pcchPackageBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductInfoFromScriptW".}
+
+  proc MsiGetProductCode*(
+    szComponent: LPCWSTR, lpBuf39: LPWSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductCodeW".}
+
+  proc MsiGetUserInfo*(
+    szProduct: LPCWSTR,
+    lpUserNameBuf: LPWSTR,
+    pcchUserNameBuf: ptr DWORD,
+    lpOrgNameBuf: LPWSTR,
+    pcchOrgNameBuf: ptr DWORD,
+    lpSerialBuf: LPWSTR,
+    pcchSerialBuf: ptr DWORD,
+  ): USERINFOSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiGetUserInfoW".}
+
+  proc MsiCollectUserInfo*(
+    szProduct: LPCWSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiCollectUserInfoW".}
+
+  proc MsiApplyPatch*(
+    szPatchPackage: LPCWSTR,
+    szInstallPackage: LPCWSTR,
+    eInstallType: INSTALLTYPE,
+    szCommandLine: LPCWSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiApplyPatchW".}
+
+  proc MsiGetPatchInfo*(
+    szPatch: LPCWSTR, szAttribute: LPCWSTR, lpValueBuf: LPWSTR, pcchValueBuf: ptr DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetPatchInfoW".}
+
+  proc MsiEnumPatches*(
+    szProduct: LPCWSTR,
+    iPatchIndex: DWORD,
+    lpPatchBuf: LPWSTR,
+    lpTransformsBuf: LPWSTR,
+    pcchTransformsBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumPatchesW".}
+
+  proc MsiRemovePatches*(
+    szPatchList: LPCWSTR,
+    szProductCode: LPCWSTR,
+    eUninstallType: INSTALLTYPE,
+    szPropertyList: LPCWSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiRemovePatchesW".}
+
+  proc MsiExtractPatchXMLData*(
+    szPatchPath: LPCWSTR, dwReserved: DWORD, szXMLData: LPWSTR, pcchXMLData: ptr DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiExtractPatchXMLDataW".}
+
+  proc MsiGetPatchInfoEx*(
+    szPatchCode: LPCWSTR,
+    szProductCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    szProperty: LPCWSTR,
+    lpValue: LPWSTR,
+    pcchValue: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetPatchInfoExW".}
+
+  proc MsiApplyMultiplePatches*(
+    szPatchPackages: LPCWSTR, szProductCode: LPCWSTR, szPropertiesList: LPCWSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiApplyMultiplePatchesW".}
+
+  proc MsiDeterminePatchSequence*(
+    szProductCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    cPatchInfo: DWORD,
+    pPatchInfo: PMSIPATCHSEQUENCEINFOW,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiDeterminePatchSequenceW".}
+
+  proc MsiDetermineApplicablePatches*(
+    szProductPackagePath: LPCWSTR, cPatchInfo: DWORD, pPatchInfo: PMSIPATCHSEQUENCEINFOW
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiDetermineApplicablePatchesW".}
+
+  proc MsiEnumPatchesEx*(
+    szProductCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: DWORD,
+    dwFilter: DWORD,
+    dwIndex: DWORD,
+    szPatchCode: ptr WCHAR,
+    szTargetProductCode: ptr WCHAR,
+    pdwTargetProductContext: ptr MSIINSTALLCONTEXT,
+    szTargetUserSid: LPWSTR,
+    pcchTargetUserSid: LPDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumPatchesExW".}
+
+  proc MsiQueryFeatureState*(
+    szProduct: LPCWSTR, szFeature: LPCWSTR
+  ): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryFeatureStateW".}
+
+  proc MsiQueryFeatureStateEx*(
+    szProductCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    szFeature: LPCWSTR,
+    pdwState: ptr INSTALLSTATE,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryFeatureStateExW".}
+
+  proc MsiUseFeature*(
+    szProduct: LPCWSTR, szFeature: LPCWSTR
+  ): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiUseFeatureW".}
+
+  proc MsiUseFeatureEx*(
+    szProduct: LPCWSTR, szFeature: LPCWSTR, dwInstallMode: DWORD, dwReserved: DWORD
+  ): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiUseFeatureExW".}
+
+  proc MsiGetFeatureUsage*(
+    szProduct: LPCWSTR, szFeature: LPCWSTR, pdwUseCount: ptr DWORD, pwDateUsed: ptr WORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFeatureUsageW".}
+
+  proc MsiConfigureFeature*(
+    szProduct: LPCWSTR, szFeature: LPCWSTR, eInstallState: INSTALLSTATE
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiConfigureFeatureW".}
+
+  proc MsiReinstallFeature*(
+    szProduct: LPCWSTR, szFeature: LPCWSTR, dwReinstallMode: DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiReinstallFeatureW".}
+
+  proc MsiProvideComponent*(
+    szProduct: LPCWSTR,
+    szFeature: LPCWSTR,
+    szComponent: LPCWSTR,
+    dwInstallMode: DWORD,
+    lpPathBuf: LPWSTR,
+    pcchPathBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideComponentW".}
+
+  proc MsiProvideQualifiedComponent*(
+    szCategory: LPCWSTR,
+    szQualifier: LPCWSTR,
+    dwInstallMode: DWORD,
+    lpPathBuf: LPWSTR,
+    pcchPathBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideQualifiedComponentW".}
+
+  proc MsiProvideQualifiedComponentEx*(
+    szCategory: LPCWSTR,
+    szQualifier: LPCWSTR,
+    dwInstallMode: DWORD,
+    szProduct: LPCWSTR,
+    dwUnused1: DWORD,
+    dwUnused2: DWORD,
+    lpPathBuf: LPWSTR,
+    pcchPathBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideQualifiedComponentExW".}
+
+  proc MsiGetComponentPath*(
+    szProduct: LPCWSTR, szComponent: LPCWSTR, lpPathBuf: LPWSTR, pcchBuf: ptr DWORD
+  ): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiGetComponentPathW".}
+
+  proc MsiProvideAssembly*(
+    szAssemblyName: LPCWSTR,
+    szAppContext: LPCWSTR,
+    dwInstallMode: DWORD,
+    dwAssemblyInfo: DWORD,
+    lpPathBuf: LPWSTR,
+    pcchPathBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideAssemblyW".}
+
+  proc MsiQueryComponentState*(
+    szProductCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    szComponentCode: LPCWSTR,
+    pdwState: ptr INSTALLSTATE,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryComponentStateW".}
+
+  proc MsiEnumProducts*(
+    iProductIndex: DWORD, lpProductBuf: LPWSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumProductsW".}
+
+  proc MsiEnumProductsEx*(
+    szProductCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: DWORD,
+    dwIndex: DWORD,
+    szInstalledProductCode: ptr WCHAR,
+    pdwInstalledContext: ptr MSIINSTALLCONTEXT,
+    szSid: LPWSTR,
+    pcchSid: LPDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumProductsExW".}
+
+  proc MsiEnumRelatedProducts*(
+    lpUpgradeCode: LPCWSTR,
+    dwReserved: DWORD,
+    iProductIndex: DWORD,
+    lpProductBuf: LPWSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumRelatedProductsW".}
+
+  proc MsiEnumFeatures*(
+    szProduct: LPCWSTR, iFeatureIndex: DWORD, lpFeatureBuf: LPWSTR, lpParentBuf: LPWSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumFeaturesW".}
+
+  proc MsiEnumComponents*(
+    iComponentIndex: DWORD, lpComponentBuf: LPWSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumComponentsW".}
+
+  proc MsiEnumClients*(
+    szComponent: LPCWSTR, iProductIndex: DWORD, lpProductBuf: LPWSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumClientsW".}
+
+  proc MsiEnumComponentQualifiers*(
+    szComponent: LPCWSTR,
+    iIndex: DWORD,
+    lpQualifierBuf: LPWSTR,
+    pcchQualifierBuf: ptr DWORD,
+    lpApplicationDataBuf: LPWSTR,
+    pcchApplicationDataBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumComponentQualifiersW".}
+
+  proc MsiOpenProduct*(
+    szProduct: LPCWSTR, hProduct: ptr MSIHANDLE
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiOpenProductW".}
+
+  proc MsiOpenPackage*(
+    szPackagePath: LPCWSTR, hProduct: ptr MSIHANDLE
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiOpenPackageW".}
+
+  proc MsiOpenPackageEx*(
+    szPackagePath: LPCWSTR, dwOptions: DWORD, hProduct: ptr MSIHANDLE
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiOpenPackageExW".}
+
+  proc MsiGetPatchFileList*(
+    szProductCode: LPCWSTR,
+    szPatchPackages: LPCWSTR,
+    pcFiles: LPDWORD,
+    pphFileRecords: ptr ptr MSIHANDLE,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetPatchFileListW".}
+
+  proc MsiGetProductProperty*(
+    hProduct: MSIHANDLE,
+    szProperty: LPCWSTR,
+    lpValueBuf: LPWSTR,
+    pcchValueBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductPropertyW".}
+
+  proc MsiVerifyPackage*(
+    szPackagePath: LPCWSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiVerifyPackageW".}
+
+  proc MsiGetFeatureInfo*(
+    hProduct: MSIHANDLE,
+    szFeature: LPCWSTR,
+    lpAttributes: ptr DWORD,
+    lpTitleBuf: LPWSTR,
+    pcchTitleBuf: ptr DWORD,
+    lpHelpBuf: LPWSTR,
+    pcchHelpBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFeatureInfoW".}
+
+  proc MsiInstallMissingComponent*(
+    szProduct: LPCWSTR, szComponent: LPCWSTR, eInstallState: INSTALLSTATE
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiInstallMissingComponentW".}
+
+  proc MsiInstallMissingFile*(
+    szProduct: LPCWSTR, szFile: LPCWSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiInstallMissingFileW".}
+
+  proc MsiLocateComponent*(
+    szComponent: LPCWSTR, lpPathBuf: LPWSTR, pcchBuf: ptr DWORD
+  ): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiLocateComponentW".}
+
+  proc MsiSourceListClearAll*(
+    szProduct: LPCWSTR, szUserName: LPCWSTR, dwReserved: DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearAllW".}
+
+  proc MsiSourceListAddSource*(
+    szProduct: LPCWSTR, szUserName: LPCWSTR, dwReserved: DWORD, szSource: LPCWSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListAddSourceW".}
+
+  proc MsiSourceListForceResolution*(
+    szProduct: LPCWSTR, szUserName: LPCWSTR, dwReserved: DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListForceResolutionW".}
+
+  proc MsiSourceListAddSourceEx*(
+    szProductCodeOrPatchCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    szSource: LPCWSTR,
+    dwIndex: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListAddSourceExW".}
+
+  proc MsiSourceListAddMediaDisk*(
+    szProductCodeOrPatchCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    dwDiskId: DWORD,
+    szVolumeLabel: LPCWSTR,
+    szDiskPrompt: LPCWSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListAddMediaDiskW".}
+
+  proc MsiSourceListClearSource*(
+    szProductCodeOrPatchCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    szSource: LPCWSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearSourceW".}
+
+  proc MsiSourceListClearMediaDisk*(
+    szProductCodeOrPatchCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    dwDiskId: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearMediaDiskW".}
+
+  proc MsiSourceListClearAllEx*(
+    szProductCodeOrPatchCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearAllExW".}
+
+  proc MsiSourceListForceResolutionEx*(
+    szProductCodeOrPatchCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListForceResolutionExW".}
+
+  proc MsiSourceListSetInfo*(
+    szProductCodeOrPatchCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    szProperty: LPCWSTR,
+    szValue: LPCWSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListSetInfoW".}
+
+  proc MsiSourceListGetInfo*(
+    szProductCodeOrPatchCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    szProperty: LPCWSTR,
+    szValue: LPWSTR,
+    pcchValue: LPDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListGetInfoW".}
+
+  proc MsiSourceListEnumSources*(
+    szProductCodeOrPatchCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    dwIndex: DWORD,
+    szSource: LPWSTR,
+    pcchSource: LPDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListEnumSourcesW".}
+
+  proc MsiSourceListEnumMediaDisks*(
+    szProductCodeOrPatchCode: LPCWSTR,
+    szUserSid: LPCWSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    dwIndex: DWORD,
+    pdwDiskId: LPDWORD,
+    szVolumeLabel: LPWSTR,
+    pcchVolumeLabel: LPDWORD,
+    szDiskPrompt: LPWSTR,
+    pcchDiskPrompt: LPDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListEnumMediaDisksW".}
+
+  proc MsiGetFileVersion*(
+    szFilePath: LPCWSTR,
+    lpVersionBuf: LPWSTR,
+    pcchVersionBuf: ptr DWORD,
+    lpLangBuf: LPWSTR,
+    pcchLangBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFileVersionW".}
+
+  proc MsiGetFileHash*(
+    szFilePath: LPCWSTR, dwOptions: DWORD, pHash: PMSIFILEHASHINFO
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFileHashW".}
+
+  proc MsiGetFileSignatureInformation*(
+    szSignedObjectPath: LPCWSTR,
+    dwFlags: DWORD,
+    ppcCertContext: ptr PCCERT_CONTEXT,
+    pbHashData: ptr BYTE,
+    pcbHashData: ptr DWORD,
+  ): HRESULT {.
+    winapi, stdcall, dynlib: "msi", importc: "MsiGetFileSignatureInformationW"
+  .}
+
+  proc MsiGetShortcutTarget*(
+    szShortcutPath: LPCWSTR,
+    szProductCode: LPWSTR,
+    szFeatureId: LPWSTR,
+    szComponentCode: LPWSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetShortcutTargetW".}
+
+  proc MsiIsProductElevated*(
+    szProduct: LPCWSTR, pfElevated: ptr WINBOOL
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiIsProductElevatedW".}
+
+  proc MsiNotifySidChange*(
+    pOldSid: LPCWSTR, pNewSid: LPCWSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiNotifySidChangeW".}
+
+  proc MsiBeginTransaction*(
+    szName: LPCWSTR,
+    dwTransactionAttributes: DWORD,
+    phTransactionHandle: ptr MSIHANDLE,
+    phChangeOfOwnerEvent: ptr HANDLE,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiBeginTransactionW".}
+
 when winimAnsi:
   type
     INSTALLUI_HANDLER* = INSTALLUI_HANDLERA
     MSIPATCHSEQUENCEINFO* = MSIPATCHSEQUENCEINFOA
     PMSIPATCHSEQUENCEINFO* = PMSIPATCHSEQUENCEINFOA
-  proc MsiSetExternalUI*(puiHandler: INSTALLUI_HANDLERA, dwMessageFilter: DWORD, pvContext: LPVOID): INSTALLUI_HANDLERA {.winapi, stdcall, dynlib: "msi", importc: "MsiSetExternalUIA".}
-  proc MsiEnableLog*(dwLogMode: DWORD, szLogFile: LPCSTR, dwLogAttributes: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnableLogA".}
-  proc MsiQueryProductState*(szProduct: LPCSTR): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryProductStateA".}
-  proc MsiGetProductInfo*(szProduct: LPCSTR, szAttribute: LPCSTR, lpValueBuf: LPSTR, pcchValueBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductInfoA".}
-  proc MsiGetProductInfoEx*(szProductCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, szProperty: LPCSTR, szValue: LPSTR, pcchValue: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductInfoExA".}
-  proc MsiInstallProduct*(szPackagePath: LPCSTR, szCommandLine: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiInstallProductA".}
-  proc MsiConfigureProduct*(szProduct: LPCSTR, iInstallLevel: int32, eInstallState: INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiConfigureProductA".}
-  proc MsiConfigureProductEx*(szProduct: LPCSTR, iInstallLevel: int32, eInstallState: INSTALLSTATE, szCommandLine: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiConfigureProductExA".}
-  proc MsiReinstallProduct*(szProduct: LPCSTR, szReinstallMode: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiReinstallProductA".}
-  proc MsiAdvertiseProductEx*(szPackagePath: LPCSTR, szScriptfilePath: LPCSTR, szTransforms: LPCSTR, lgidLanguage: LANGID, dwPlatform: DWORD, dwOptions: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiAdvertiseProductExA".}
-  proc MsiAdvertiseProduct*(szPackagePath: LPCSTR, szScriptfilePath: LPCSTR, szTransforms: LPCSTR, lgidLanguage: LANGID): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiAdvertiseProductA".}
-  proc MsiProcessAdvertiseScript*(szScriptFile: LPCSTR, szIconFolder: LPCSTR, hRegData: HKEY, fShortcuts: WINBOOL, fRemoveItems: WINBOOL): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProcessAdvertiseScriptA".}
-  proc MsiAdvertiseScript*(szScriptFile: LPCSTR, dwFlags: DWORD, phRegData: PHKEY, fRemoveItems: WINBOOL): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiAdvertiseScriptA".}
-  proc MsiGetProductInfoFromScript*(szScriptFile: LPCSTR, lpProductBuf39: LPSTR, plgidLanguage: ptr LANGID, pdwVersion: ptr DWORD, lpNameBuf: LPSTR, pcchNameBuf: ptr DWORD, lpPackageBuf: LPSTR, pcchPackageBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductInfoFromScriptA".}
-  proc MsiGetProductCode*(szComponent: LPCSTR, lpBuf39: LPSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductCodeA".}
-  proc MsiGetUserInfo*(szProduct: LPCSTR, lpUserNameBuf: LPSTR, pcchUserNameBuf: ptr DWORD, lpOrgNameBuf: LPSTR, pcchOrgNameBuf: ptr DWORD, lpSerialBuf: LPSTR, pcchSerialBuf: ptr DWORD): USERINFOSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiGetUserInfoA".}
-  proc MsiCollectUserInfo*(szProduct: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiCollectUserInfoA".}
-  proc MsiApplyPatch*(szPatchPackage: LPCSTR, szInstallPackage: LPCSTR, eInstallType: INSTALLTYPE, szCommandLine: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiApplyPatchA".}
-  proc MsiGetPatchInfo*(szPatch: LPCSTR, szAttribute: LPCSTR, lpValueBuf: LPSTR, pcchValueBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetPatchInfoA".}
-  proc MsiEnumPatches*(szProduct: LPCSTR, iPatchIndex: DWORD, lpPatchBuf: LPSTR, lpTransformsBuf: LPSTR, pcchTransformsBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumPatchesA".}
-  proc MsiRemovePatches*(szPatchList: LPCSTR, szProductCode: LPCSTR, eUninstallType: INSTALLTYPE, szPropertyList: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiRemovePatchesA".}
-  proc MsiExtractPatchXMLData*(szPatchPath: LPCSTR, dwReserved: DWORD, szXMLData: LPSTR, pcchXMLData: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiExtractPatchXMLDataA".}
-  proc MsiGetPatchInfoEx*(szPatchCode: LPCSTR, szProductCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, szProperty: LPCSTR, lpValue: LPSTR, pcchValue: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetPatchInfoExA".}
-  proc MsiApplyMultiplePatches*(szPatchPackages: LPCSTR, szProductCode: LPCSTR, szPropertiesList: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiApplyMultiplePatchesA".}
-  proc MsiDeterminePatchSequence*(szProductCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, cPatchInfo: DWORD, pPatchInfo: PMSIPATCHSEQUENCEINFOA): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiDeterminePatchSequenceA".}
-  proc MsiDetermineApplicablePatches*(szProductPackagePath: LPCSTR, cPatchInfo: DWORD, pPatchInfo: PMSIPATCHSEQUENCEINFOA): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiDetermineApplicablePatchesA".}
-  proc MsiEnumPatchesEx*(szProductCode: LPCSTR, szUserSid: LPCSTR, dwContext: DWORD, dwFilter: DWORD, dwIndex: DWORD, szPatchCode: ptr CHAR, szTargetProductCode: ptr CHAR, pdwTargetProductContext: ptr MSIINSTALLCONTEXT, szTargetUserSid: LPSTR, pcchTargetUserSid: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumPatchesExA".}
-  proc MsiQueryFeatureState*(szProduct: LPCSTR, szFeature: LPCSTR): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryFeatureStateA".}
-  proc MsiQueryFeatureStateEx*(szProductCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, szFeature: LPCSTR, pdwState: ptr INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryFeatureStateExA".}
-  proc MsiUseFeature*(szProduct: LPCSTR, szFeature: LPCSTR): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiUseFeatureA".}
-  proc MsiUseFeatureEx*(szProduct: LPCSTR, szFeature: LPCSTR, dwInstallMode: DWORD, dwReserved: DWORD): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiUseFeatureExA".}
-  proc MsiGetFeatureUsage*(szProduct: LPCSTR, szFeature: LPCSTR, pdwUseCount: ptr DWORD, pwDateUsed: ptr WORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFeatureUsageA".}
-  proc MsiConfigureFeature*(szProduct: LPCSTR, szFeature: LPCSTR, eInstallState: INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiConfigureFeatureA".}
-  proc MsiReinstallFeature*(szProduct: LPCSTR, szFeature: LPCSTR, dwReinstallMode: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiReinstallFeatureA".}
-  proc MsiProvideComponent*(szProduct: LPCSTR, szFeature: LPCSTR, szComponent: LPCSTR, dwInstallMode: DWORD, lpPathBuf: LPSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideComponentA".}
-  proc MsiProvideQualifiedComponent*(szCategory: LPCSTR, szQualifier: LPCSTR, dwInstallMode: DWORD, lpPathBuf: LPSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideQualifiedComponentA".}
-  proc MsiProvideQualifiedComponentEx*(szCategory: LPCSTR, szQualifier: LPCSTR, dwInstallMode: DWORD, szProduct: LPCSTR, dwUnused1: DWORD, dwUnused2: DWORD, lpPathBuf: LPSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideQualifiedComponentExA".}
-  proc MsiGetComponentPath*(szProduct: LPCSTR, szComponent: LPCSTR, lpPathBuf: LPSTR, pcchBuf: ptr DWORD): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiGetComponentPathA".}
-  proc MsiProvideAssembly*(szAssemblyName: LPCSTR, szAppContext: LPCSTR, dwInstallMode: DWORD, dwAssemblyInfo: DWORD, lpPathBuf: LPSTR, pcchPathBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideAssemblyA".}
-  proc MsiQueryComponentState*(szProductCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, szComponentCode: LPCSTR, pdwState: ptr INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryComponentStateA".}
-  proc MsiEnumProducts*(iProductIndex: DWORD, lpProductBuf: LPSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumProductsA".}
-  proc MsiEnumProductsEx*(szProductCode: LPCSTR, szUserSid: LPCSTR, dwContext: DWORD, dwIndex: DWORD, szInstalledProductCode: ptr CHAR, pdwInstalledContext: ptr MSIINSTALLCONTEXT, szSid: LPSTR, pcchSid: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumProductsExA".}
-  proc MsiEnumRelatedProducts*(lpUpgradeCode: LPCSTR, dwReserved: DWORD, iProductIndex: DWORD, lpProductBuf: LPSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumRelatedProductsA".}
-  proc MsiEnumFeatures*(szProduct: LPCSTR, iFeatureIndex: DWORD, lpFeatureBuf: LPSTR, lpParentBuf: LPSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumFeaturesA".}
-  proc MsiEnumComponents*(iComponentIndex: DWORD, lpComponentBuf: LPSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumComponentsA".}
-  proc MsiEnumClients*(szComponent: LPCSTR, iProductIndex: DWORD, lpProductBuf: LPSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumClientsA".}
-  proc MsiEnumComponentQualifiers*(szComponent: LPCSTR, iIndex: DWORD, lpQualifierBuf: LPSTR, pcchQualifierBuf: ptr DWORD, lpApplicationDataBuf: LPSTR, pcchApplicationDataBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumComponentQualifiersA".}
-  proc MsiOpenProduct*(szProduct: LPCSTR, hProduct: ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiOpenProductA".}
-  proc MsiOpenPackage*(szPackagePath: LPCSTR, hProduct: ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiOpenPackageA".}
-  proc MsiOpenPackageEx*(szPackagePath: LPCSTR, dwOptions: DWORD, hProduct: ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiOpenPackageExA".}
-  proc MsiGetPatchFileList*(szProductCode: LPCSTR, szPatchPackages: LPCSTR, pcFiles: LPDWORD, pphFileRecords: ptr ptr MSIHANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetPatchFileListA".}
-  proc MsiGetProductProperty*(hProduct: MSIHANDLE, szProperty: LPCSTR, lpValueBuf: LPSTR, pcchValueBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductPropertyA".}
-  proc MsiVerifyPackage*(szPackagePath: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiVerifyPackageA".}
-  proc MsiGetFeatureInfo*(hProduct: MSIHANDLE, szFeature: LPCSTR, lpAttributes: ptr DWORD, lpTitleBuf: LPSTR, pcchTitleBuf: ptr DWORD, lpHelpBuf: LPSTR, pcchHelpBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFeatureInfoA".}
-  proc MsiInstallMissingComponent*(szProduct: LPCSTR, szComponent: LPCSTR, eInstallState: INSTALLSTATE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiInstallMissingComponentA".}
-  proc MsiInstallMissingFile*(szProduct: LPCSTR, szFile: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiInstallMissingFileA".}
-  proc MsiLocateComponent*(szComponent: LPCSTR, lpPathBuf: LPSTR, pcchBuf: ptr DWORD): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiLocateComponentA".}
-  proc MsiSourceListClearAll*(szProduct: LPCSTR, szUserName: LPCSTR, dwReserved: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearAllA".}
-  proc MsiSourceListAddSource*(szProduct: LPCSTR, szUserName: LPCSTR, dwReserved: DWORD, szSource: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListAddSourceA".}
-  proc MsiSourceListForceResolution*(szProduct: LPCSTR, szUserName: LPCSTR, dwReserved: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListForceResolutionA".}
-  proc MsiSourceListAddSourceEx*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szSource: LPCSTR, dwIndex: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListAddSourceExA".}
-  proc MsiSourceListAddMediaDisk*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwDiskId: DWORD, szVolumeLabel: LPCSTR, szDiskPrompt: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListAddMediaDiskA".}
-  proc MsiSourceListClearSource*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szSource: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearSourceA".}
-  proc MsiSourceListClearMediaDisk*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwDiskId: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearMediaDiskA".}
-  proc MsiSourceListClearAllEx*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearAllExA".}
-  proc MsiSourceListForceResolutionEx*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListForceResolutionExA".}
-  proc MsiSourceListSetInfo*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szProperty: LPCSTR, szValue: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListSetInfoA".}
-  proc MsiSourceListGetInfo*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, szProperty: LPCSTR, szValue: LPSTR, pcchValue: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListGetInfoA".}
-  proc MsiSourceListEnumSources*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwIndex: DWORD, szSource: LPSTR, pcchSource: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListEnumSourcesA".}
-  proc MsiSourceListEnumMediaDisks*(szProductCodeOrPatchCode: LPCSTR, szUserSid: LPCSTR, dwContext: MSIINSTALLCONTEXT, dwOptions: DWORD, dwIndex: DWORD, pdwDiskId: LPDWORD, szVolumeLabel: LPSTR, pcchVolumeLabel: LPDWORD, szDiskPrompt: LPSTR, pcchDiskPrompt: LPDWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListEnumMediaDisksA".}
-  proc MsiGetFileVersion*(szFilePath: LPCSTR, lpVersionBuf: LPSTR, pcchVersionBuf: ptr DWORD, lpLangBuf: LPSTR, pcchLangBuf: ptr DWORD): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFileVersionA".}
-  proc MsiGetFileHash*(szFilePath: LPCSTR, dwOptions: DWORD, pHash: PMSIFILEHASHINFO): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFileHashA".}
-  proc MsiGetFileSignatureInformation*(szSignedObjectPath: LPCSTR, dwFlags: DWORD, ppcCertContext: ptr PCCERT_CONTEXT, pbHashData: ptr BYTE, pcbHashData: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFileSignatureInformationA".}
-  proc MsiGetShortcutTarget*(szShortcutPath: LPCSTR, szProductCode: LPSTR, szFeatureId: LPSTR, szComponentCode: LPSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetShortcutTargetA".}
-  proc MsiIsProductElevated*(szProduct: LPCSTR, pfElevated: ptr WINBOOL): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiIsProductElevatedA".}
-  proc MsiNotifySidChange*(pOldSid: LPCSTR, pNewSid: LPCSTR): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiNotifySidChangeA".}
-  proc MsiBeginTransaction*(szName: LPCSTR, dwTransactionAttributes: DWORD, phTransactionHandle: ptr MSIHANDLE, phChangeOfOwnerEvent: ptr HANDLE): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiBeginTransactionA".}
+
+  proc MsiSetExternalUI*(
+    puiHandler: INSTALLUI_HANDLERA, dwMessageFilter: DWORD, pvContext: LPVOID
+  ): INSTALLUI_HANDLERA {.winapi, stdcall, dynlib: "msi", importc: "MsiSetExternalUIA".}
+
+  proc MsiEnableLog*(
+    dwLogMode: DWORD, szLogFile: LPCSTR, dwLogAttributes: DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnableLogA".}
+
+  proc MsiQueryProductState*(
+    szProduct: LPCSTR
+  ): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryProductStateA".}
+
+  proc MsiGetProductInfo*(
+    szProduct: LPCSTR, szAttribute: LPCSTR, lpValueBuf: LPSTR, pcchValueBuf: ptr DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductInfoA".}
+
+  proc MsiGetProductInfoEx*(
+    szProductCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    szProperty: LPCSTR,
+    szValue: LPSTR,
+    pcchValue: LPDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductInfoExA".}
+
+  proc MsiInstallProduct*(
+    szPackagePath: LPCSTR, szCommandLine: LPCSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiInstallProductA".}
+
+  proc MsiConfigureProduct*(
+    szProduct: LPCSTR, iInstallLevel: int32, eInstallState: INSTALLSTATE
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiConfigureProductA".}
+
+  proc MsiConfigureProductEx*(
+    szProduct: LPCSTR,
+    iInstallLevel: int32,
+    eInstallState: INSTALLSTATE,
+    szCommandLine: LPCSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiConfigureProductExA".}
+
+  proc MsiReinstallProduct*(
+    szProduct: LPCSTR, szReinstallMode: DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiReinstallProductA".}
+
+  proc MsiAdvertiseProductEx*(
+    szPackagePath: LPCSTR,
+    szScriptfilePath: LPCSTR,
+    szTransforms: LPCSTR,
+    lgidLanguage: LANGID,
+    dwPlatform: DWORD,
+    dwOptions: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiAdvertiseProductExA".}
+
+  proc MsiAdvertiseProduct*(
+    szPackagePath: LPCSTR,
+    szScriptfilePath: LPCSTR,
+    szTransforms: LPCSTR,
+    lgidLanguage: LANGID,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiAdvertiseProductA".}
+
+  proc MsiProcessAdvertiseScript*(
+    szScriptFile: LPCSTR,
+    szIconFolder: LPCSTR,
+    hRegData: HKEY,
+    fShortcuts: WINBOOL,
+    fRemoveItems: WINBOOL,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProcessAdvertiseScriptA".}
+
+  proc MsiAdvertiseScript*(
+    szScriptFile: LPCSTR, dwFlags: DWORD, phRegData: PHKEY, fRemoveItems: WINBOOL
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiAdvertiseScriptA".}
+
+  proc MsiGetProductInfoFromScript*(
+    szScriptFile: LPCSTR,
+    lpProductBuf39: LPSTR,
+    plgidLanguage: ptr LANGID,
+    pdwVersion: ptr DWORD,
+    lpNameBuf: LPSTR,
+    pcchNameBuf: ptr DWORD,
+    lpPackageBuf: LPSTR,
+    pcchPackageBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductInfoFromScriptA".}
+
+  proc MsiGetProductCode*(
+    szComponent: LPCSTR, lpBuf39: LPSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductCodeA".}
+
+  proc MsiGetUserInfo*(
+    szProduct: LPCSTR,
+    lpUserNameBuf: LPSTR,
+    pcchUserNameBuf: ptr DWORD,
+    lpOrgNameBuf: LPSTR,
+    pcchOrgNameBuf: ptr DWORD,
+    lpSerialBuf: LPSTR,
+    pcchSerialBuf: ptr DWORD,
+  ): USERINFOSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiGetUserInfoA".}
+
+  proc MsiCollectUserInfo*(
+    szProduct: LPCSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiCollectUserInfoA".}
+
+  proc MsiApplyPatch*(
+    szPatchPackage: LPCSTR,
+    szInstallPackage: LPCSTR,
+    eInstallType: INSTALLTYPE,
+    szCommandLine: LPCSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiApplyPatchA".}
+
+  proc MsiGetPatchInfo*(
+    szPatch: LPCSTR, szAttribute: LPCSTR, lpValueBuf: LPSTR, pcchValueBuf: ptr DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetPatchInfoA".}
+
+  proc MsiEnumPatches*(
+    szProduct: LPCSTR,
+    iPatchIndex: DWORD,
+    lpPatchBuf: LPSTR,
+    lpTransformsBuf: LPSTR,
+    pcchTransformsBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumPatchesA".}
+
+  proc MsiRemovePatches*(
+    szPatchList: LPCSTR,
+    szProductCode: LPCSTR,
+    eUninstallType: INSTALLTYPE,
+    szPropertyList: LPCSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiRemovePatchesA".}
+
+  proc MsiExtractPatchXMLData*(
+    szPatchPath: LPCSTR, dwReserved: DWORD, szXMLData: LPSTR, pcchXMLData: ptr DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiExtractPatchXMLDataA".}
+
+  proc MsiGetPatchInfoEx*(
+    szPatchCode: LPCSTR,
+    szProductCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    szProperty: LPCSTR,
+    lpValue: LPSTR,
+    pcchValue: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetPatchInfoExA".}
+
+  proc MsiApplyMultiplePatches*(
+    szPatchPackages: LPCSTR, szProductCode: LPCSTR, szPropertiesList: LPCSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiApplyMultiplePatchesA".}
+
+  proc MsiDeterminePatchSequence*(
+    szProductCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    cPatchInfo: DWORD,
+    pPatchInfo: PMSIPATCHSEQUENCEINFOA,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiDeterminePatchSequenceA".}
+
+  proc MsiDetermineApplicablePatches*(
+    szProductPackagePath: LPCSTR, cPatchInfo: DWORD, pPatchInfo: PMSIPATCHSEQUENCEINFOA
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiDetermineApplicablePatchesA".}
+
+  proc MsiEnumPatchesEx*(
+    szProductCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: DWORD,
+    dwFilter: DWORD,
+    dwIndex: DWORD,
+    szPatchCode: ptr CHAR,
+    szTargetProductCode: ptr CHAR,
+    pdwTargetProductContext: ptr MSIINSTALLCONTEXT,
+    szTargetUserSid: LPSTR,
+    pcchTargetUserSid: LPDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumPatchesExA".}
+
+  proc MsiQueryFeatureState*(
+    szProduct: LPCSTR, szFeature: LPCSTR
+  ): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryFeatureStateA".}
+
+  proc MsiQueryFeatureStateEx*(
+    szProductCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    szFeature: LPCSTR,
+    pdwState: ptr INSTALLSTATE,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryFeatureStateExA".}
+
+  proc MsiUseFeature*(
+    szProduct: LPCSTR, szFeature: LPCSTR
+  ): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiUseFeatureA".}
+
+  proc MsiUseFeatureEx*(
+    szProduct: LPCSTR, szFeature: LPCSTR, dwInstallMode: DWORD, dwReserved: DWORD
+  ): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiUseFeatureExA".}
+
+  proc MsiGetFeatureUsage*(
+    szProduct: LPCSTR, szFeature: LPCSTR, pdwUseCount: ptr DWORD, pwDateUsed: ptr WORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFeatureUsageA".}
+
+  proc MsiConfigureFeature*(
+    szProduct: LPCSTR, szFeature: LPCSTR, eInstallState: INSTALLSTATE
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiConfigureFeatureA".}
+
+  proc MsiReinstallFeature*(
+    szProduct: LPCSTR, szFeature: LPCSTR, dwReinstallMode: DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiReinstallFeatureA".}
+
+  proc MsiProvideComponent*(
+    szProduct: LPCSTR,
+    szFeature: LPCSTR,
+    szComponent: LPCSTR,
+    dwInstallMode: DWORD,
+    lpPathBuf: LPSTR,
+    pcchPathBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideComponentA".}
+
+  proc MsiProvideQualifiedComponent*(
+    szCategory: LPCSTR,
+    szQualifier: LPCSTR,
+    dwInstallMode: DWORD,
+    lpPathBuf: LPSTR,
+    pcchPathBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideQualifiedComponentA".}
+
+  proc MsiProvideQualifiedComponentEx*(
+    szCategory: LPCSTR,
+    szQualifier: LPCSTR,
+    dwInstallMode: DWORD,
+    szProduct: LPCSTR,
+    dwUnused1: DWORD,
+    dwUnused2: DWORD,
+    lpPathBuf: LPSTR,
+    pcchPathBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideQualifiedComponentExA".}
+
+  proc MsiGetComponentPath*(
+    szProduct: LPCSTR, szComponent: LPCSTR, lpPathBuf: LPSTR, pcchBuf: ptr DWORD
+  ): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiGetComponentPathA".}
+
+  proc MsiProvideAssembly*(
+    szAssemblyName: LPCSTR,
+    szAppContext: LPCSTR,
+    dwInstallMode: DWORD,
+    dwAssemblyInfo: DWORD,
+    lpPathBuf: LPSTR,
+    pcchPathBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiProvideAssemblyA".}
+
+  proc MsiQueryComponentState*(
+    szProductCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    szComponentCode: LPCSTR,
+    pdwState: ptr INSTALLSTATE,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiQueryComponentStateA".}
+
+  proc MsiEnumProducts*(
+    iProductIndex: DWORD, lpProductBuf: LPSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumProductsA".}
+
+  proc MsiEnumProductsEx*(
+    szProductCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: DWORD,
+    dwIndex: DWORD,
+    szInstalledProductCode: ptr CHAR,
+    pdwInstalledContext: ptr MSIINSTALLCONTEXT,
+    szSid: LPSTR,
+    pcchSid: LPDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumProductsExA".}
+
+  proc MsiEnumRelatedProducts*(
+    lpUpgradeCode: LPCSTR, dwReserved: DWORD, iProductIndex: DWORD, lpProductBuf: LPSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumRelatedProductsA".}
+
+  proc MsiEnumFeatures*(
+    szProduct: LPCSTR, iFeatureIndex: DWORD, lpFeatureBuf: LPSTR, lpParentBuf: LPSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumFeaturesA".}
+
+  proc MsiEnumComponents*(
+    iComponentIndex: DWORD, lpComponentBuf: LPSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumComponentsA".}
+
+  proc MsiEnumClients*(
+    szComponent: LPCSTR, iProductIndex: DWORD, lpProductBuf: LPSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumClientsA".}
+
+  proc MsiEnumComponentQualifiers*(
+    szComponent: LPCSTR,
+    iIndex: DWORD,
+    lpQualifierBuf: LPSTR,
+    pcchQualifierBuf: ptr DWORD,
+    lpApplicationDataBuf: LPSTR,
+    pcchApplicationDataBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiEnumComponentQualifiersA".}
+
+  proc MsiOpenProduct*(
+    szProduct: LPCSTR, hProduct: ptr MSIHANDLE
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiOpenProductA".}
+
+  proc MsiOpenPackage*(
+    szPackagePath: LPCSTR, hProduct: ptr MSIHANDLE
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiOpenPackageA".}
+
+  proc MsiOpenPackageEx*(
+    szPackagePath: LPCSTR, dwOptions: DWORD, hProduct: ptr MSIHANDLE
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiOpenPackageExA".}
+
+  proc MsiGetPatchFileList*(
+    szProductCode: LPCSTR,
+    szPatchPackages: LPCSTR,
+    pcFiles: LPDWORD,
+    pphFileRecords: ptr ptr MSIHANDLE,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetPatchFileListA".}
+
+  proc MsiGetProductProperty*(
+    hProduct: MSIHANDLE, szProperty: LPCSTR, lpValueBuf: LPSTR, pcchValueBuf: ptr DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetProductPropertyA".}
+
+  proc MsiVerifyPackage*(
+    szPackagePath: LPCSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiVerifyPackageA".}
+
+  proc MsiGetFeatureInfo*(
+    hProduct: MSIHANDLE,
+    szFeature: LPCSTR,
+    lpAttributes: ptr DWORD,
+    lpTitleBuf: LPSTR,
+    pcchTitleBuf: ptr DWORD,
+    lpHelpBuf: LPSTR,
+    pcchHelpBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFeatureInfoA".}
+
+  proc MsiInstallMissingComponent*(
+    szProduct: LPCSTR, szComponent: LPCSTR, eInstallState: INSTALLSTATE
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiInstallMissingComponentA".}
+
+  proc MsiInstallMissingFile*(
+    szProduct: LPCSTR, szFile: LPCSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiInstallMissingFileA".}
+
+  proc MsiLocateComponent*(
+    szComponent: LPCSTR, lpPathBuf: LPSTR, pcchBuf: ptr DWORD
+  ): INSTALLSTATE {.winapi, stdcall, dynlib: "msi", importc: "MsiLocateComponentA".}
+
+  proc MsiSourceListClearAll*(
+    szProduct: LPCSTR, szUserName: LPCSTR, dwReserved: DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearAllA".}
+
+  proc MsiSourceListAddSource*(
+    szProduct: LPCSTR, szUserName: LPCSTR, dwReserved: DWORD, szSource: LPCSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListAddSourceA".}
+
+  proc MsiSourceListForceResolution*(
+    szProduct: LPCSTR, szUserName: LPCSTR, dwReserved: DWORD
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListForceResolutionA".}
+
+  proc MsiSourceListAddSourceEx*(
+    szProductCodeOrPatchCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    szSource: LPCSTR,
+    dwIndex: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListAddSourceExA".}
+
+  proc MsiSourceListAddMediaDisk*(
+    szProductCodeOrPatchCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    dwDiskId: DWORD,
+    szVolumeLabel: LPCSTR,
+    szDiskPrompt: LPCSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListAddMediaDiskA".}
+
+  proc MsiSourceListClearSource*(
+    szProductCodeOrPatchCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    szSource: LPCSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearSourceA".}
+
+  proc MsiSourceListClearMediaDisk*(
+    szProductCodeOrPatchCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    dwDiskId: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearMediaDiskA".}
+
+  proc MsiSourceListClearAllEx*(
+    szProductCodeOrPatchCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListClearAllExA".}
+
+  proc MsiSourceListForceResolutionEx*(
+    szProductCodeOrPatchCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListForceResolutionExA".}
+
+  proc MsiSourceListSetInfo*(
+    szProductCodeOrPatchCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    szProperty: LPCSTR,
+    szValue: LPCSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListSetInfoA".}
+
+  proc MsiSourceListGetInfo*(
+    szProductCodeOrPatchCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    szProperty: LPCSTR,
+    szValue: LPSTR,
+    pcchValue: LPDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListGetInfoA".}
+
+  proc MsiSourceListEnumSources*(
+    szProductCodeOrPatchCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    dwIndex: DWORD,
+    szSource: LPSTR,
+    pcchSource: LPDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListEnumSourcesA".}
+
+  proc MsiSourceListEnumMediaDisks*(
+    szProductCodeOrPatchCode: LPCSTR,
+    szUserSid: LPCSTR,
+    dwContext: MSIINSTALLCONTEXT,
+    dwOptions: DWORD,
+    dwIndex: DWORD,
+    pdwDiskId: LPDWORD,
+    szVolumeLabel: LPSTR,
+    pcchVolumeLabel: LPDWORD,
+    szDiskPrompt: LPSTR,
+    pcchDiskPrompt: LPDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiSourceListEnumMediaDisksA".}
+
+  proc MsiGetFileVersion*(
+    szFilePath: LPCSTR,
+    lpVersionBuf: LPSTR,
+    pcchVersionBuf: ptr DWORD,
+    lpLangBuf: LPSTR,
+    pcchLangBuf: ptr DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFileVersionA".}
+
+  proc MsiGetFileHash*(
+    szFilePath: LPCSTR, dwOptions: DWORD, pHash: PMSIFILEHASHINFO
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetFileHashA".}
+
+  proc MsiGetFileSignatureInformation*(
+    szSignedObjectPath: LPCSTR,
+    dwFlags: DWORD,
+    ppcCertContext: ptr PCCERT_CONTEXT,
+    pbHashData: ptr BYTE,
+    pcbHashData: ptr DWORD,
+  ): HRESULT {.
+    winapi, stdcall, dynlib: "msi", importc: "MsiGetFileSignatureInformationA"
+  .}
+
+  proc MsiGetShortcutTarget*(
+    szShortcutPath: LPCSTR,
+    szProductCode: LPSTR,
+    szFeatureId: LPSTR,
+    szComponentCode: LPSTR,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiGetShortcutTargetA".}
+
+  proc MsiIsProductElevated*(
+    szProduct: LPCSTR, pfElevated: ptr WINBOOL
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiIsProductElevatedA".}
+
+  proc MsiNotifySidChange*(
+    pOldSid: LPCSTR, pNewSid: LPCSTR
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiNotifySidChangeA".}
+
+  proc MsiBeginTransaction*(
+    szName: LPCSTR,
+    dwTransactionAttributes: DWORD,
+    phTransactionHandle: ptr MSIHANDLE,
+    phChangeOfOwnerEvent: ptr HANDLE,
+  ): UINT {.winapi, stdcall, dynlib: "msi", importc: "MsiBeginTransactionA".}
--- a/semicongine/thirdparty/winim/winim/inc/nb30.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/nb30.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -7,14 +7,11 @@
 import winimbase
 import windef
 #include <nb30.h>
-const
-  NCBNAMSZ* = 16
+const NCBNAMSZ* = 16
 when winimCpu64:
-  type
-    NCB_RESERVE* = array[18, UCHAR]
+  type NCB_RESERVE* = array[18, UCHAR]
 when winimCpu32:
-  type
-    NCB_RESERVE* = array[10, UCHAR]
+  type NCB_RESERVE* = array[10, UCHAR]
 type
   NCB* {.pure.} = object
     ncb_command*: UCHAR
@@ -27,11 +24,12 @@
     ncb_name*: array[NCBNAMSZ, UCHAR]
     ncb_rto*: UCHAR
     ncb_sto*: UCHAR
-    ncb_post*: proc (P1: ptr NCB): void {.stdcall.}
+    ncb_post*: proc(P1: ptr NCB): void {.stdcall.}
     ncb_lana_num*: UCHAR
     ncb_cmd_cplt*: UCHAR
     ncb_reserve*: NCB_RESERVE
     ncb_event*: HANDLE
+
   PNCB* = ptr NCB
   ADAPTER_STATUS* {.pure.} = object
     adapter_address*: array[6, UCHAR]
@@ -61,17 +59,20 @@
     max_sess*: WORD
     max_sess_pkt_size*: WORD
     name_count*: WORD
+
   PADAPTER_STATUS* = ptr ADAPTER_STATUS
   NAME_BUFFER* {.pure.} = object
     name*: array[NCBNAMSZ, UCHAR]
     name_num*: UCHAR
     name_flags*: UCHAR
+
   PNAME_BUFFER* = ptr NAME_BUFFER
   SESSION_HEADER* {.pure.} = object
     sess_name*: UCHAR
     num_sess*: UCHAR
     rcv_dg_outstanding*: UCHAR
     rcv_any_outstanding*: UCHAR
+
   PSESSION_HEADER* = ptr SESSION_HEADER
   SESSION_BUFFER* {.pure.} = object
     lsn*: UCHAR
@@ -80,18 +81,21 @@
     remote_name*: array[NCBNAMSZ, UCHAR]
     rcvs_outstanding*: UCHAR
     sends_outstanding*: UCHAR
+
   PSESSION_BUFFER* = ptr SESSION_BUFFER
-const
-  MAX_LANA* = 254
+
+const MAX_LANA* = 254
 type
   LANA_ENUM* {.pure.} = object
     length*: UCHAR
-    lana*: array[MAX_LANA+1, UCHAR]
+    lana*: array[MAX_LANA + 1, UCHAR]
+
   PLANA_ENUM* = ptr LANA_ENUM
   FIND_NAME_HEADER* {.pure.} = object
     node_count*: WORD
     reserved*: UCHAR
     unique_group*: UCHAR
+
   PFIND_NAME_HEADER* = ptr FIND_NAME_HEADER
   FIND_NAME_BUFFER* {.pure.} = object
     length*: UCHAR
@@ -100,12 +104,15 @@
     destination_addr*: array[6, UCHAR]
     source_addr*: array[6, UCHAR]
     routing_info*: array[18, UCHAR]
+
   PFIND_NAME_BUFFER* = ptr FIND_NAME_BUFFER
   ACTION_HEADER* {.pure.} = object
     transport_id*: ULONG
     action_code*: USHORT
     reserved*: USHORT
+
   PACTION_HEADER* = ptr ACTION_HEADER
+
 const
   NAME_FLAGS_MASK* = 0x87
   GROUP_NAME* = 0x80
--- a/semicongine/thirdparty/winim/winim/inc/objbase.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/objbase.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -232,29 +232,36 @@
   userCLIPFORMAT_u* {.pure, union.} = object
     dwValue*: DWORD
     pwszName*: ptr uint16
+
   userCLIPFORMAT* {.pure.} = object
     fContext*: LONG
     u*: userCLIPFORMAT_u
+
   wireCLIPFORMAT* = ptr userCLIPFORMAT
   FLAGGED_BYTE_BLOB* {.pure.} = object
     fFlags*: ULONG
     clSize*: ULONG
     abData*: array[1, uint8]
+
   userHGLOBAL_u* {.pure, union.} = object
     hInproc*: LONG
     hRemote*: ptr FLAGGED_BYTE_BLOB
     hInproc64*: INT64
+
   userHGLOBAL* {.pure.} = object
     fContext*: LONG
     padding*: array[4, byte]
     u*: userHGLOBAL_u
+
   wireHGLOBAL* = ptr userHGLOBAL
   RemotableHandle_u* {.pure, union.} = object
     hInproc*: LONG
     hRemote*: LONG
+
   RemotableHandle* {.pure.} = object
     fContext*: LONG
     u*: RemotableHandle_u
+
   wireHWND* = ptr RemotableHandle
   wireHMENU* = ptr RemotableHandle
   wireHACCEL* = ptr RemotableHandle
@@ -273,114 +280,153 @@
     bmBitsPixel*: WORD
     cbSize*: ULONG
     pBuffer*: array[1, uint8]
+
   userHBITMAP_u* {.pure, union.} = object
     hInproc*: LONG
     hRemote*: ptr userBITMAP
     hInproc64*: INT64
+
   userHBITMAP* {.pure.} = object
     fContext*: LONG
     padding*: array[4, byte]
     u*: userHBITMAP_u
+
   wireHBITMAP* = ptr userHBITMAP
   userHPALETTE_u* {.pure, union.} = object
     hInproc*: LONG
     hRemote*: ptr LOGPALETTE
     hInproc64*: INT64
+
   userHPALETTE* {.pure.} = object
     fContext*: LONG
     padding*: array[4, byte]
     u*: userHPALETTE_u
+
   wireHPALETTE* = ptr userHPALETTE
   BYTE_BLOB* {.pure.} = object
     clSize*: ULONG
     abData*: array[1, uint8]
+
   userHENHMETAFILE_u* {.pure, union.} = object
     hInproc*: LONG
     hRemote*: ptr BYTE_BLOB
     hInproc64*: INT64
+
   userHENHMETAFILE* {.pure.} = object
     fContext*: LONG
     padding*: array[4, byte]
     u*: userHENHMETAFILE_u
+
   wireHENHMETAFILE* = ptr userHENHMETAFILE
   userHMETAFILE_u* {.pure, union.} = object
     hInproc*: LONG
     hRemote*: ptr BYTE_BLOB
     hInproc64*: INT64
+
   userHMETAFILE* {.pure.} = object
     fContext*: LONG
     padding*: array[4, byte]
     u*: userHMETAFILE_u
+
   wireHMETAFILE* = ptr userHMETAFILE
   remoteMETAFILEPICT* {.pure.} = object
     mm*: LONG
     xExt*: LONG
     yExt*: LONG
     hMF*: ptr userHMETAFILE
+
   userHMETAFILEPICT_u* {.pure, union.} = object
     hInproc*: LONG
     hRemote*: ptr remoteMETAFILEPICT
     hInproc64*: INT64
+
   userHMETAFILEPICT* {.pure.} = object
     fContext*: LONG
     padding*: array[4, byte]
     u*: userHMETAFILEPICT_u
+
   wireHMETAFILEPICT* = ptr userHMETAFILEPICT
   DATE* = float64
   CY_STRUCT1* {.pure.} = object
     Lo*: int32
     Hi*: int32
+
   CY* {.pure, union.} = object
     struct1*: CY_STRUCT1
     int64*: LONGLONG
+
   LPCY* = ptr CY
   DECIMAL_UNION1_STRUCT1* {.pure.} = object
     scale*: BYTE
     sign*: BYTE
+
   DECIMAL_UNION1* {.pure, union.} = object
     struct1*: DECIMAL_UNION1_STRUCT1
     signscale*: USHORT
+
   DECIMAL_UNION2_STRUCT1* {.pure.} = object
     Lo32*: ULONG
     Mid32*: ULONG
+
   DECIMAL_UNION2* {.pure, union.} = object
     struct1*: DECIMAL_UNION2_STRUCT1
     Lo64*: ULONGLONG
+
   DECIMAL* {.pure.} = object
     wReserved*: USHORT
     union1*: DECIMAL_UNION1
     Hi32*: ULONG
     union2*: DECIMAL_UNION2
+
   LPDECIMAL* = ptr DECIMAL
   FLAGGED_WORD_BLOB* {.pure.} = object
     fFlags*: ULONG
     clSize*: ULONG
     asData*: array[1, uint16]
+
   wireBSTR* = ptr FLAGGED_WORD_BLOB
   LPBSTR* = ptr BSTR
   VARIANT_BOOL* = int16
   BSTRBLOB* {.pure.} = object
     cbSize*: ULONG
     pData*: ptr BYTE
+
   LPBSTRBLOB* = ptr BSTRBLOB
   IUnknown* {.pure.} = object
     lpVtbl*: ptr IUnknownVtbl
+
   IUnknownVtbl* {.pure, inheritable.} = object
-    QueryInterface*: proc(self: ptr IUnknown, riid: REFIID, ppvObject: ptr pointer): HRESULT {.stdcall.}
+    QueryInterface*: proc(
+      self: ptr IUnknown, riid: REFIID, ppvObject: ptr pointer
+    ): HRESULT {.stdcall.}
     AddRef*: proc(self: ptr IUnknown): ULONG {.stdcall.}
     Release*: proc(self: ptr IUnknown): ULONG {.stdcall.}
+
   LPUNKNOWN* = ptr IUnknown
   IClassFactory* {.pure.} = object
     lpVtbl*: ptr IClassFactoryVtbl
+
   IClassFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateInstance*: proc(self: ptr IClassFactory, pUnkOuter: ptr IUnknown, riid: REFIID, ppvObject: ptr pointer): HRESULT {.stdcall.}
+    CreateInstance*: proc(
+      self: ptr IClassFactory,
+      pUnkOuter: ptr IUnknown,
+      riid: REFIID,
+      ppvObject: ptr pointer,
+    ): HRESULT {.stdcall.}
     LockServer*: proc(self: ptr IClassFactory, fLock: WINBOOL): HRESULT {.stdcall.}
+
   LPCLASSFACTORY* = ptr IClassFactory
   ISequentialStream* {.pure.} = object
     lpVtbl*: ptr ISequentialStreamVtbl
+
   ISequentialStreamVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Read*: proc(self: ptr ISequentialStream, pv: pointer, cb: ULONG, pcbRead: ptr ULONG): HRESULT {.stdcall.}
-    Write*: proc(self: ptr ISequentialStream, pv: pointer, cb: ULONG, pcbWritten: ptr ULONG): HRESULT {.stdcall.}
+    Read*: proc(
+      self: ptr ISequentialStream, pv: pointer, cb: ULONG, pcbRead: ptr ULONG
+    ): HRESULT {.stdcall.}
+    Write*: proc(
+      self: ptr ISequentialStream, pv: pointer, cb: ULONG, pcbWritten: ptr ULONG
+    ): HRESULT {.stdcall.}
+
   LPOLESTR* = ptr OLECHAR
   STATSTG* {.pure.} = object
     pwcsName*: LPOLESTR
@@ -394,34 +440,91 @@
     clsid*: CLSID
     grfStateBits*: DWORD
     reserved*: DWORD
+
   IStream* {.pure.} = object
     lpVtbl*: ptr IStreamVtbl
+
   IStreamVtbl* {.pure, inheritable.} = object of ISequentialStreamVtbl
-    Seek*: proc(self: ptr IStream, dlibMove: LARGE_INTEGER, dwOrigin: DWORD, plibNewPosition: ptr ULARGE_INTEGER): HRESULT {.stdcall.}
+    Seek*: proc(
+      self: ptr IStream,
+      dlibMove: LARGE_INTEGER,
+      dwOrigin: DWORD,
+      plibNewPosition: ptr ULARGE_INTEGER,
+    ): HRESULT {.stdcall.}
     SetSize*: proc(self: ptr IStream, libNewSize: ULARGE_INTEGER): HRESULT {.stdcall.}
-    CopyTo*: proc(self: ptr IStream, pstm: ptr IStream, cb: ULARGE_INTEGER, pcbRead: ptr ULARGE_INTEGER, pcbWritten: ptr ULARGE_INTEGER): HRESULT {.stdcall.}
+    CopyTo*: proc(
+      self: ptr IStream,
+      pstm: ptr IStream,
+      cb: ULARGE_INTEGER,
+      pcbRead: ptr ULARGE_INTEGER,
+      pcbWritten: ptr ULARGE_INTEGER,
+    ): HRESULT {.stdcall.}
     Commit*: proc(self: ptr IStream, grfCommitFlags: DWORD): HRESULT {.stdcall.}
     Revert*: proc(self: ptr IStream): HRESULT {.stdcall.}
-    LockRegion*: proc(self: ptr IStream, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: DWORD): HRESULT {.stdcall.}
-    UnlockRegion*: proc(self: ptr IStream, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: DWORD): HRESULT {.stdcall.}
-    Stat*: proc(self: ptr IStream, pstatstg: ptr STATSTG, grfStatFlag: DWORD): HRESULT {.stdcall.}
+    LockRegion*: proc(
+      self: ptr IStream,
+      libOffset: ULARGE_INTEGER,
+      cb: ULARGE_INTEGER,
+      dwLockType: DWORD,
+    ): HRESULT {.stdcall.}
+    UnlockRegion*: proc(
+      self: ptr IStream,
+      libOffset: ULARGE_INTEGER,
+      cb: ULARGE_INTEGER,
+      dwLockType: DWORD,
+    ): HRESULT {.stdcall.}
+    Stat*: proc(self: ptr IStream, pstatstg: ptr STATSTG, grfStatFlag: DWORD): HRESULT {.
+      stdcall
+    .}
     Clone*: proc(self: ptr IStream, ppstm: ptr ptr IStream): HRESULT {.stdcall.}
+
   IMarshal* {.pure.} = object
     lpVtbl*: ptr IMarshalVtbl
+
   IMarshalVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetUnmarshalClass*: proc(self: ptr IMarshal, riid: REFIID, pv: pointer, dwDestContext: DWORD, pvDestContext: pointer, mshlflags: DWORD, pCid: ptr CLSID): HRESULT {.stdcall.}
-    GetMarshalSizeMax*: proc(self: ptr IMarshal, riid: REFIID, pv: pointer, dwDestContext: DWORD, pvDestContext: pointer, mshlflags: DWORD, pSize: ptr DWORD): HRESULT {.stdcall.}
-    MarshalInterface*: proc(self: ptr IMarshal, pStm: ptr IStream, riid: REFIID, pv: pointer, dwDestContext: DWORD, pvDestContext: pointer, mshlflags: DWORD): HRESULT {.stdcall.}
-    UnmarshalInterface*: proc(self: ptr IMarshal, pStm: ptr IStream, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    ReleaseMarshalData*: proc(self: ptr IMarshal, pStm: ptr IStream): HRESULT {.stdcall.}
+    GetUnmarshalClass*: proc(
+      self: ptr IMarshal,
+      riid: REFIID,
+      pv: pointer,
+      dwDestContext: DWORD,
+      pvDestContext: pointer,
+      mshlflags: DWORD,
+      pCid: ptr CLSID,
+    ): HRESULT {.stdcall.}
+    GetMarshalSizeMax*: proc(
+      self: ptr IMarshal,
+      riid: REFIID,
+      pv: pointer,
+      dwDestContext: DWORD,
+      pvDestContext: pointer,
+      mshlflags: DWORD,
+      pSize: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    MarshalInterface*: proc(
+      self: ptr IMarshal,
+      pStm: ptr IStream,
+      riid: REFIID,
+      pv: pointer,
+      dwDestContext: DWORD,
+      pvDestContext: pointer,
+      mshlflags: DWORD,
+    ): HRESULT {.stdcall.}
+    UnmarshalInterface*: proc(
+      self: ptr IMarshal, pStm: ptr IStream, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    ReleaseMarshalData*:
+      proc(self: ptr IMarshal, pStm: ptr IStream): HRESULT {.stdcall.}
     DisconnectObject*: proc(self: ptr IMarshal, dwReserved: DWORD): HRESULT {.stdcall.}
+
   LPMARSHAL* = ptr IMarshal
   IMarshal2* {.pure.} = object
     lpVtbl*: ptr IMarshal2Vtbl
+
   IMarshal2Vtbl* {.pure, inheritable.} = object of IMarshalVtbl
   LPMARSHAL2* = ptr IMarshal2
   IMalloc* {.pure.} = object
     lpVtbl*: ptr IMallocVtbl
+
   IMallocVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Alloc*: proc(self: ptr IMalloc, cb: SIZE_T): pointer {.stdcall.}
     Realloc*: proc(self: ptr IMalloc, pv: pointer, cb: SIZE_T): pointer {.stdcall.}
@@ -429,42 +532,76 @@
     GetSize*: proc(self: ptr IMalloc, pv: pointer): SIZE_T {.stdcall.}
     DidAlloc*: proc(self: ptr IMalloc, pv: pointer): int32 {.stdcall.}
     HeapMinimize*: proc(self: ptr IMalloc): void {.stdcall.}
+
   LPMALLOC* = ptr IMalloc
   IStdMarshalInfo* {.pure.} = object
     lpVtbl*: ptr IStdMarshalInfoVtbl
+
   IStdMarshalInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetClassForHandler*: proc(self: ptr IStdMarshalInfo, dwDestContext: DWORD, pvDestContext: pointer, pClsid: ptr CLSID): HRESULT {.stdcall.}
+    GetClassForHandler*: proc(
+      self: ptr IStdMarshalInfo,
+      dwDestContext: DWORD,
+      pvDestContext: pointer,
+      pClsid: ptr CLSID,
+    ): HRESULT {.stdcall.}
+
   LPSTDMARSHALINFO* = ptr IStdMarshalInfo
   IExternalConnection* {.pure.} = object
     lpVtbl*: ptr IExternalConnectionVtbl
+
   IExternalConnectionVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AddConnection*: proc(self: ptr IExternalConnection, extconn: DWORD, reserved: DWORD): DWORD {.stdcall.}
-    ReleaseConnection*: proc(self: ptr IExternalConnection, extconn: DWORD, reserved: DWORD, fLastReleaseCloses: WINBOOL): DWORD {.stdcall.}
+    AddConnection*: proc(
+      self: ptr IExternalConnection, extconn: DWORD, reserved: DWORD
+    ): DWORD {.stdcall.}
+    ReleaseConnection*: proc(
+      self: ptr IExternalConnection,
+      extconn: DWORD,
+      reserved: DWORD,
+      fLastReleaseCloses: WINBOOL,
+    ): DWORD {.stdcall.}
+
   LPEXTERNALCONNECTION* = ptr IExternalConnection
   MULTI_QI* {.pure.} = object
     pIID*: ptr IID
     pItf*: ptr IUnknown
     hr*: HRESULT
+
   IMultiQI* {.pure.} = object
     lpVtbl*: ptr IMultiQIVtbl
+
   IMultiQIVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QueryMultipleInterfaces*: proc(self: ptr IMultiQI, cMQIs: ULONG, pMQIs: ptr MULTI_QI): HRESULT {.stdcall.}
+    QueryMultipleInterfaces*:
+      proc(self: ptr IMultiQI, cMQIs: ULONG, pMQIs: ptr MULTI_QI): HRESULT {.stdcall.}
+
   LPMULTIQI* = ptr IMultiQI
   IEnumUnknown* {.pure.} = object
     lpVtbl*: ptr IEnumUnknownVtbl
+
   IEnumUnknownVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumUnknown, celt: ULONG, rgelt: ptr ptr IUnknown, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumUnknown,
+      celt: ULONG,
+      rgelt: ptr ptr IUnknown,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumUnknown, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumUnknown): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumUnknown, ppenum: ptr ptr IEnumUnknown): HRESULT {.stdcall.}
+    Clone*:
+      proc(self: ptr IEnumUnknown, ppenum: ptr ptr IEnumUnknown): HRESULT {.stdcall.}
+
   LPENUMUNKNOWN* = ptr IEnumUnknown
   IEnumString* {.pure.} = object
     lpVtbl*: ptr IEnumStringVtbl
+
   IEnumStringVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumString, celt: ULONG, rgelt: ptr LPOLESTR, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumString, celt: ULONG, rgelt: ptr LPOLESTR, pceltFetched: ptr ULONG
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumString, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumString): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumString, ppenum: ptr ptr IEnumString): HRESULT {.stdcall.}
+    Clone*:
+      proc(self: ptr IEnumString, ppenum: ptr ptr IEnumString): HRESULT {.stdcall.}
+
   LPENUMSTRING* = ptr IEnumString
   LPSTREAM* = ptr IStream
   RPCOLEMESSAGE* {.pure.} = object
@@ -475,146 +612,306 @@
     iMethod*: ULONG
     reserved2*: array[5, pointer]
     rpcFlags*: ULONG
+
   PRPCOLEMESSAGE* = ptr RPCOLEMESSAGE
   SOLE_AUTHENTICATION_SERVICE* {.pure.} = object
     dwAuthnSvc*: DWORD
     dwAuthzSvc*: DWORD
     pPrincipalName*: ptr OLECHAR
     hr*: HRESULT
+
   PSOLE_AUTHENTICATION_SERVICE* = ptr SOLE_AUTHENTICATION_SERVICE
   SOLE_AUTHENTICATION_INFO* {.pure.} = object
     dwAuthnSvc*: DWORD
     dwAuthzSvc*: DWORD
     pAuthInfo*: pointer
+
   PSOLE_AUTHENTICATION_INFO* = ptr SOLE_AUTHENTICATION_INFO
   SOLE_AUTHENTICATION_LIST* {.pure.} = object
     cAuthInfo*: DWORD
     aAuthInfo*: ptr SOLE_AUTHENTICATION_INFO
+
   PSOLE_AUTHENTICATION_LIST* = ptr SOLE_AUTHENTICATION_LIST
   ISurrogate* {.pure.} = object
     lpVtbl*: ptr ISurrogateVtbl
+
   ISurrogateVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     LoadDllServer*: proc(self: ptr ISurrogate, Clsid: REFCLSID): HRESULT {.stdcall.}
     FreeSurrogate*: proc(self: ptr ISurrogate): HRESULT {.stdcall.}
+
   LPSURROGATE* = ptr ISurrogate
   IGlobalInterfaceTable* {.pure.} = object
     lpVtbl*: ptr IGlobalInterfaceTableVtbl
+
   IGlobalInterfaceTableVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RegisterInterfaceInGlobal*: proc(self: ptr IGlobalInterfaceTable, pUnk: ptr IUnknown, riid: REFIID, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
-    RevokeInterfaceFromGlobal*: proc(self: ptr IGlobalInterfaceTable, dwCookie: DWORD): HRESULT {.stdcall.}
-    GetInterfaceFromGlobal*: proc(self: ptr IGlobalInterfaceTable, dwCookie: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    RegisterInterfaceInGlobal*: proc(
+      self: ptr IGlobalInterfaceTable,
+      pUnk: ptr IUnknown,
+      riid: REFIID,
+      pdwCookie: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    RevokeInterfaceFromGlobal*:
+      proc(self: ptr IGlobalInterfaceTable, dwCookie: DWORD): HRESULT {.stdcall.}
+    GetInterfaceFromGlobal*: proc(
+      self: ptr IGlobalInterfaceTable, dwCookie: DWORD, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+
   LPGLOBALINTERFACETABLE* = ptr IGlobalInterfaceTable
   ICancelMethodCalls* {.pure.} = object
     lpVtbl*: ptr ICancelMethodCallsVtbl
+
   ICancelMethodCallsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Cancel*: proc(self: ptr ICancelMethodCalls, ulSeconds: ULONG): HRESULT {.stdcall.}
     TestCancel*: proc(self: ptr ICancelMethodCalls): HRESULT {.stdcall.}
+
   LPCANCELMETHODCALLS* = ptr ICancelMethodCalls
   IAddrTrackingControl* {.pure.} = object
     lpVtbl*: ptr IAddrTrackingControlVtbl
+
   IAddrTrackingControlVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    EnableCOMDynamicAddrTracking*: proc(self: ptr IAddrTrackingControl): HRESULT {.stdcall.}
-    DisableCOMDynamicAddrTracking*: proc(self: ptr IAddrTrackingControl): HRESULT {.stdcall.}
+    EnableCOMDynamicAddrTracking*:
+      proc(self: ptr IAddrTrackingControl): HRESULT {.stdcall.}
+    DisableCOMDynamicAddrTracking*:
+      proc(self: ptr IAddrTrackingControl): HRESULT {.stdcall.}
+
   LPADDRTRACKINGCONTROL* = ptr IAddrTrackingControl
   IAddrExclusionControl* {.pure.} = object
     lpVtbl*: ptr IAddrExclusionControlVtbl
+
   IAddrExclusionControlVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCurrentAddrExclusionList*: proc(self: ptr IAddrExclusionControl, riid: REFIID, ppEnumerator: ptr pointer): HRESULT {.stdcall.}
-    UpdateAddrExclusionList*: proc(self: ptr IAddrExclusionControl, pEnumerator: ptr IUnknown): HRESULT {.stdcall.}
+    GetCurrentAddrExclusionList*: proc(
+      self: ptr IAddrExclusionControl, riid: REFIID, ppEnumerator: ptr pointer
+    ): HRESULT {.stdcall.}
+    UpdateAddrExclusionList*: proc(
+      self: ptr IAddrExclusionControl, pEnumerator: ptr IUnknown
+    ): HRESULT {.stdcall.}
+
   LPADDREXCLUSIONCONTROL* = ptr IAddrExclusionControl
   ContextProperty* {.pure.} = object
     policyId*: GUID
     flags*: CPFLAGS
     pUnk*: ptr IUnknown
+
   IEnumContextProps* {.pure.} = object
     lpVtbl*: ptr IEnumContextPropsVtbl
+
   IEnumContextPropsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumContextProps, celt: ULONG, pContextProperties: ptr ContextProperty, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumContextProps,
+      celt: ULONG,
+      pContextProperties: ptr ContextProperty,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumContextProps, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumContextProps): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumContextProps, ppEnumContextProps: ptr ptr IEnumContextProps): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr IEnumContextProps, ppEnumContextProps: ptr ptr IEnumContextProps
+    ): HRESULT {.stdcall.}
     Count*: proc(self: ptr IEnumContextProps, pcelt: ptr ULONG): HRESULT {.stdcall.}
+
   LPENUMCONTEXTPROPS* = ptr IEnumContextProps
   IMallocSpy* {.pure.} = object
     lpVtbl*: ptr IMallocSpyVtbl
+
   IMallocSpyVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     PreAlloc*: proc(self: ptr IMallocSpy, cbRequest: SIZE_T): SIZE_T {.stdcall.}
     PostAlloc*: proc(self: ptr IMallocSpy, pActual: pointer): pointer {.stdcall.}
-    PreFree*: proc(self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL): pointer {.stdcall.}
+    PreFree*: proc(self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL): pointer {.
+      stdcall
+    .}
     PostFree*: proc(self: ptr IMallocSpy, fSpyed: WINBOOL): void {.stdcall.}
-    PreRealloc*: proc(self: ptr IMallocSpy, pRequest: pointer, cbRequest: SIZE_T, ppNewRequest: ptr pointer, fSpyed: WINBOOL): SIZE_T {.stdcall.}
-    PostRealloc*: proc(self: ptr IMallocSpy, pActual: pointer, fSpyed: WINBOOL): pointer {.stdcall.}
-    PreGetSize*: proc(self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL): pointer {.stdcall.}
-    PostGetSize*: proc(self: ptr IMallocSpy, cbActual: SIZE_T, fSpyed: WINBOOL): SIZE_T {.stdcall.}
-    PreDidAlloc*: proc(self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL): pointer {.stdcall.}
-    PostDidAlloc*: proc(self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL, fActual: int32): int32 {.stdcall.}
+    PreRealloc*: proc(
+      self: ptr IMallocSpy,
+      pRequest: pointer,
+      cbRequest: SIZE_T,
+      ppNewRequest: ptr pointer,
+      fSpyed: WINBOOL,
+    ): SIZE_T {.stdcall.}
+    PostRealloc*:
+      proc(self: ptr IMallocSpy, pActual: pointer, fSpyed: WINBOOL): pointer {.stdcall.}
+    PreGetSize*: proc(self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL): pointer {.
+      stdcall
+    .}
+    PostGetSize*:
+      proc(self: ptr IMallocSpy, cbActual: SIZE_T, fSpyed: WINBOOL): SIZE_T {.stdcall.}
+    PreDidAlloc*: proc(
+      self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL
+    ): pointer {.stdcall.}
+    PostDidAlloc*: proc(
+      self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL, fActual: int32
+    ): int32 {.stdcall.}
     PreHeapMinimize*: proc(self: ptr IMallocSpy): void {.stdcall.}
     PostHeapMinimize*: proc(self: ptr IMallocSpy): void {.stdcall.}
+
   LPMALLOCSPY* = ptr IMallocSpy
   BIND_OPTS* {.pure.} = object
     cbStruct*: DWORD
     grfFlags*: DWORD
     grfMode*: DWORD
     dwTickCountDeadline*: DWORD
+
   IPersist* {.pure.} = object
     lpVtbl*: ptr IPersistVtbl
+
   IPersistVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetClassID*: proc(self: ptr IPersist, pClassID: ptr CLSID): HRESULT {.stdcall.}
+
   IPersistStream* {.pure.} = object
     lpVtbl*: ptr IPersistStreamVtbl
+
   IPersistStreamVtbl* {.pure, inheritable.} = object of IPersistVtbl
     IsDirty*: proc(self: ptr IPersistStream): HRESULT {.stdcall.}
     Load*: proc(self: ptr IPersistStream, pStm: ptr IStream): HRESULT {.stdcall.}
-    Save*: proc(self: ptr IPersistStream, pStm: ptr IStream, fClearDirty: WINBOOL): HRESULT {.stdcall.}
-    GetSizeMax*: proc(self: ptr IPersistStream, pcbSize: ptr ULARGE_INTEGER): HRESULT {.stdcall.}
+    Save*: proc(
+      self: ptr IPersistStream, pStm: ptr IStream, fClearDirty: WINBOOL
+    ): HRESULT {.stdcall.}
+    GetSizeMax*:
+      proc(self: ptr IPersistStream, pcbSize: ptr ULARGE_INTEGER): HRESULT {.stdcall.}
+
   IEnumMoniker* {.pure.} = object
     lpVtbl*: ptr IEnumMonikerVtbl
+
   IEnumMonikerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumMoniker, celt: ULONG, rgelt: ptr ptr IMoniker, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumMoniker,
+      celt: ULONG,
+      rgelt: ptr ptr IMoniker,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumMoniker, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumMoniker): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumMoniker, ppenum: ptr ptr IEnumMoniker): HRESULT {.stdcall.}
+    Clone*:
+      proc(self: ptr IEnumMoniker, ppenum: ptr ptr IEnumMoniker): HRESULT {.stdcall.}
+
   IMoniker* {.pure.} = object
     lpVtbl*: ptr IMonikerVtbl
+
   IMonikerVtbl* {.pure, inheritable.} = object of IPersistStreamVtbl
-    BindToObject*: proc(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, riidResult: REFIID, ppvResult: ptr pointer): HRESULT {.stdcall.}
-    BindToStorage*: proc(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, riid: REFIID, ppvObj: ptr pointer): HRESULT {.stdcall.}
-    Reduce*: proc(self: ptr IMoniker, pbc: ptr IBindCtx, dwReduceHowFar: DWORD, ppmkToLeft: ptr ptr IMoniker, ppmkReduced: ptr ptr IMoniker): HRESULT {.stdcall.}
-    ComposeWith*: proc(self: ptr IMoniker, pmkRight: ptr IMoniker, fOnlyIfNotGeneric: WINBOOL, ppmkComposite: ptr ptr IMoniker): HRESULT {.stdcall.}
-    Enum*: proc(self: ptr IMoniker, fForward: WINBOOL, ppenumMoniker: ptr ptr IEnumMoniker): HRESULT {.stdcall.}
-    IsEqual*: proc(self: ptr IMoniker, pmkOtherMoniker: ptr IMoniker): HRESULT {.stdcall.}
+    BindToObject*: proc(
+      self: ptr IMoniker,
+      pbc: ptr IBindCtx,
+      pmkToLeft: ptr IMoniker,
+      riidResult: REFIID,
+      ppvResult: ptr pointer,
+    ): HRESULT {.stdcall.}
+    BindToStorage*: proc(
+      self: ptr IMoniker,
+      pbc: ptr IBindCtx,
+      pmkToLeft: ptr IMoniker,
+      riid: REFIID,
+      ppvObj: ptr pointer,
+    ): HRESULT {.stdcall.}
+    Reduce*: proc(
+      self: ptr IMoniker,
+      pbc: ptr IBindCtx,
+      dwReduceHowFar: DWORD,
+      ppmkToLeft: ptr ptr IMoniker,
+      ppmkReduced: ptr ptr IMoniker,
+    ): HRESULT {.stdcall.}
+    ComposeWith*: proc(
+      self: ptr IMoniker,
+      pmkRight: ptr IMoniker,
+      fOnlyIfNotGeneric: WINBOOL,
+      ppmkComposite: ptr ptr IMoniker,
+    ): HRESULT {.stdcall.}
+    Enum*: proc(
+      self: ptr IMoniker, fForward: WINBOOL, ppenumMoniker: ptr ptr IEnumMoniker
+    ): HRESULT {.stdcall.}
+    IsEqual*:
+      proc(self: ptr IMoniker, pmkOtherMoniker: ptr IMoniker): HRESULT {.stdcall.}
     Hash*: proc(self: ptr IMoniker, pdwHash: ptr DWORD): HRESULT {.stdcall.}
-    IsRunning*: proc(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, pmkNewlyRunning: ptr IMoniker): HRESULT {.stdcall.}
-    GetTimeOfLastChange*: proc(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, pFileTime: ptr FILETIME): HRESULT {.stdcall.}
+    IsRunning*: proc(
+      self: ptr IMoniker,
+      pbc: ptr IBindCtx,
+      pmkToLeft: ptr IMoniker,
+      pmkNewlyRunning: ptr IMoniker,
+    ): HRESULT {.stdcall.}
+    GetTimeOfLastChange*: proc(
+      self: ptr IMoniker,
+      pbc: ptr IBindCtx,
+      pmkToLeft: ptr IMoniker,
+      pFileTime: ptr FILETIME,
+    ): HRESULT {.stdcall.}
     Inverse*: proc(self: ptr IMoniker, ppmk: ptr ptr IMoniker): HRESULT {.stdcall.}
-    CommonPrefixWith*: proc(self: ptr IMoniker, pmkOther: ptr IMoniker, ppmkPrefix: ptr ptr IMoniker): HRESULT {.stdcall.}
-    RelativePathTo*: proc(self: ptr IMoniker, pmkOther: ptr IMoniker, ppmkRelPath: ptr ptr IMoniker): HRESULT {.stdcall.}
-    GetDisplayName*: proc(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, ppszDisplayName: ptr LPOLESTR): HRESULT {.stdcall.}
-    ParseDisplayName*: proc(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, pszDisplayName: LPOLESTR, pchEaten: ptr ULONG, ppmkOut: ptr ptr IMoniker): HRESULT {.stdcall.}
+    CommonPrefixWith*: proc(
+      self: ptr IMoniker, pmkOther: ptr IMoniker, ppmkPrefix: ptr ptr IMoniker
+    ): HRESULT {.stdcall.}
+    RelativePathTo*: proc(
+      self: ptr IMoniker, pmkOther: ptr IMoniker, ppmkRelPath: ptr ptr IMoniker
+    ): HRESULT {.stdcall.}
+    GetDisplayName*: proc(
+      self: ptr IMoniker,
+      pbc: ptr IBindCtx,
+      pmkToLeft: ptr IMoniker,
+      ppszDisplayName: ptr LPOLESTR,
+    ): HRESULT {.stdcall.}
+    ParseDisplayName*: proc(
+      self: ptr IMoniker,
+      pbc: ptr IBindCtx,
+      pmkToLeft: ptr IMoniker,
+      pszDisplayName: LPOLESTR,
+      pchEaten: ptr ULONG,
+      ppmkOut: ptr ptr IMoniker,
+    ): HRESULT {.stdcall.}
     IsSystemMoniker*: proc(self: ptr IMoniker, pdwMksys: ptr DWORD): HRESULT {.stdcall.}
+
   IRunningObjectTable* {.pure.} = object
     lpVtbl*: ptr IRunningObjectTableVtbl
+
   IRunningObjectTableVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Register*: proc(self: ptr IRunningObjectTable, grfFlags: DWORD, punkObject: ptr IUnknown, pmkObjectName: ptr IMoniker, pdwRegister: ptr DWORD): HRESULT {.stdcall.}
+    Register*: proc(
+      self: ptr IRunningObjectTable,
+      grfFlags: DWORD,
+      punkObject: ptr IUnknown,
+      pmkObjectName: ptr IMoniker,
+      pdwRegister: ptr DWORD,
+    ): HRESULT {.stdcall.}
     Revoke*: proc(self: ptr IRunningObjectTable, dwRegister: DWORD): HRESULT {.stdcall.}
-    IsRunning*: proc(self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker): HRESULT {.stdcall.}
-    GetObject*: proc(self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker, ppunkObject: ptr ptr IUnknown): HRESULT {.stdcall.}
-    NoteChangeTime*: proc(self: ptr IRunningObjectTable, dwRegister: DWORD, pfiletime: ptr FILETIME): HRESULT {.stdcall.}
-    GetTimeOfLastChange*: proc(self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker, pfiletime: ptr FILETIME): HRESULT {.stdcall.}
-    EnumRunning*: proc(self: ptr IRunningObjectTable, ppenumMoniker: ptr ptr IEnumMoniker): HRESULT {.stdcall.}
+    IsRunning*: proc(
+      self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker
+    ): HRESULT {.stdcall.}
+    GetObject*: proc(
+      self: ptr IRunningObjectTable,
+      pmkObjectName: ptr IMoniker,
+      ppunkObject: ptr ptr IUnknown,
+    ): HRESULT {.stdcall.}
+    NoteChangeTime*: proc(
+      self: ptr IRunningObjectTable, dwRegister: DWORD, pfiletime: ptr FILETIME
+    ): HRESULT {.stdcall.}
+    GetTimeOfLastChange*: proc(
+      self: ptr IRunningObjectTable,
+      pmkObjectName: ptr IMoniker,
+      pfiletime: ptr FILETIME,
+    ): HRESULT {.stdcall.}
+    EnumRunning*: proc(
+      self: ptr IRunningObjectTable, ppenumMoniker: ptr ptr IEnumMoniker
+    ): HRESULT {.stdcall.}
+
   IBindCtx* {.pure.} = object
     lpVtbl*: ptr IBindCtxVtbl
+
   IBindCtxVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RegisterObjectBound*: proc(self: ptr IBindCtx, punk: ptr IUnknown): HRESULT {.stdcall.}
-    RevokeObjectBound*: proc(self: ptr IBindCtx, punk: ptr IUnknown): HRESULT {.stdcall.}
+    RegisterObjectBound*:
+      proc(self: ptr IBindCtx, punk: ptr IUnknown): HRESULT {.stdcall.}
+    RevokeObjectBound*:
+      proc(self: ptr IBindCtx, punk: ptr IUnknown): HRESULT {.stdcall.}
     ReleaseBoundObjects*: proc(self: ptr IBindCtx): HRESULT {.stdcall.}
-    SetBindOptions*: proc(self: ptr IBindCtx, pbindopts: ptr BIND_OPTS): HRESULT {.stdcall.}
-    GetBindOptions*: proc(self: ptr IBindCtx, pbindopts: ptr BIND_OPTS): HRESULT {.stdcall.}
-    GetRunningObjectTable*: proc(self: ptr IBindCtx, pprot: ptr ptr IRunningObjectTable): HRESULT {.stdcall.}
-    RegisterObjectParam*: proc(self: ptr IBindCtx, pszKey: LPOLESTR, punk: ptr IUnknown): HRESULT {.stdcall.}
-    GetObjectParam*: proc(self: ptr IBindCtx, pszKey: LPOLESTR, ppunk: ptr ptr IUnknown): HRESULT {.stdcall.}
-    EnumObjectParam*: proc(self: ptr IBindCtx, ppenum: ptr ptr IEnumString): HRESULT {.stdcall.}
+    SetBindOptions*:
+      proc(self: ptr IBindCtx, pbindopts: ptr BIND_OPTS): HRESULT {.stdcall.}
+    GetBindOptions*:
+      proc(self: ptr IBindCtx, pbindopts: ptr BIND_OPTS): HRESULT {.stdcall.}
+    GetRunningObjectTable*:
+      proc(self: ptr IBindCtx, pprot: ptr ptr IRunningObjectTable): HRESULT {.stdcall.}
+    RegisterObjectParam*: proc(
+      self: ptr IBindCtx, pszKey: LPOLESTR, punk: ptr IUnknown
+    ): HRESULT {.stdcall.}
+    GetObjectParam*: proc(
+      self: ptr IBindCtx, pszKey: LPOLESTR, ppunk: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
+    EnumObjectParam*:
+      proc(self: ptr IBindCtx, ppenum: ptr ptr IEnumString): HRESULT {.stdcall.}
     RevokeObjectParam*: proc(self: ptr IBindCtx, pszKey: LPOLESTR): HRESULT {.stdcall.}
+
   LPBC* = ptr IBindCtx
   LPBINDCTX* = ptr IBindCtx
   LPBIND_OPTS* = ptr BIND_OPTS
@@ -626,6 +923,7 @@
     Password*: ptr USHORT
     PasswordLength*: ULONG
     Flags*: ULONG
+
   COAUTHINFO* {.pure.} = object
     dwAuthnSvc*: DWORD
     dwAuthzSvc*: DWORD
@@ -634,11 +932,13 @@
     dwImpersonationLevel*: DWORD
     pAuthIdentityData*: ptr COAUTHIDENTITY
     dwCapabilities*: DWORD
+
   COSERVERINFO* {.pure.} = object
     dwReserved1*: DWORD
     pwszName*: LPWSTR
     pAuthInfo*: ptr COAUTHINFO
     dwReserved2*: DWORD
+
   BIND_OPTS2* {.pure.} = object
     cbStruct*: DWORD
     grfFlags*: DWORD
@@ -648,6 +948,7 @@
     dwClassContext*: DWORD
     locale*: LCID
     pServerInfo*: ptr COSERVERINFO
+
   LPBIND_OPTS2* = ptr BIND_OPTS2
   BIND_OPTS3* {.pure.} = object
     cbStruct*: DWORD
@@ -659,16 +960,23 @@
     locale*: LCID
     pServerInfo*: ptr COSERVERINFO
     hwnd*: HWND
+
   LPBIND_OPTS3* = ptr BIND_OPTS3
   LPENUMMONIKER* = ptr IEnumMoniker
   IRunnableObject* {.pure.} = object
     lpVtbl*: ptr IRunnableObjectVtbl
+
   IRunnableObjectVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetRunningClass*: proc(self: ptr IRunnableObject, lpClsid: LPCLSID): HRESULT {.stdcall.}
+    GetRunningClass*:
+      proc(self: ptr IRunnableObject, lpClsid: LPCLSID): HRESULT {.stdcall.}
     Run*: proc(self: ptr IRunnableObject, pbc: LPBINDCTX): HRESULT {.stdcall.}
     IsRunning*: proc(self: ptr IRunnableObject): WINBOOL {.stdcall.}
-    LockRunning*: proc(self: ptr IRunnableObject, fLock: WINBOOL, fLastUnlockCloses: WINBOOL): HRESULT {.stdcall.}
-    SetContainedObject*: proc(self: ptr IRunnableObject, fContained: WINBOOL): HRESULT {.stdcall.}
+    LockRunning*: proc(
+      self: ptr IRunnableObject, fLock: WINBOOL, fLastUnlockCloses: WINBOOL
+    ): HRESULT {.stdcall.}
+    SetContainedObject*:
+      proc(self: ptr IRunnableObject, fContained: WINBOOL): HRESULT {.stdcall.}
+
   LPRUNNABLEOBJECT* = ptr IRunnableObject
   LPRUNNINGOBJECTTABLE* = ptr IRunningObjectTable
   LPPERSIST* = ptr IPersist
@@ -676,67 +984,173 @@
   LPMONIKER* = ptr IMoniker
   IEnumSTATSTG* {.pure.} = object
     lpVtbl*: ptr IEnumSTATSTGVtbl
+
   IEnumSTATSTGVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumSTATSTG, celt: ULONG, rgelt: ptr STATSTG, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumSTATSTG, celt: ULONG, rgelt: ptr STATSTG, pceltFetched: ptr ULONG
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumSTATSTG, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumSTATSTG): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumSTATSTG, ppenum: ptr ptr IEnumSTATSTG): HRESULT {.stdcall.}
+    Clone*:
+      proc(self: ptr IEnumSTATSTG, ppenum: ptr ptr IEnumSTATSTG): HRESULT {.stdcall.}
+
   LPENUMSTATSTG* = ptr IEnumSTATSTG
   SNB* = ptr LPOLESTR
   IStorage* {.pure.} = object
     lpVtbl*: ptr IStorageVtbl
+
   IStorageVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateStream*: proc(self: ptr IStorage, pwcsName: ptr OLECHAR, grfMode: DWORD, reserved1: DWORD, reserved2: DWORD, ppstm: ptr ptr IStream): HRESULT {.stdcall.}
-    OpenStream*: proc(self: ptr IStorage, pwcsName: ptr OLECHAR, reserved1: pointer, grfMode: DWORD, reserved2: DWORD, ppstm: ptr ptr IStream): HRESULT {.stdcall.}
-    CreateStorage*: proc(self: ptr IStorage, pwcsName: ptr OLECHAR, grfMode: DWORD, reserved1: DWORD, reserved2: DWORD, ppstg: ptr ptr IStorage): HRESULT {.stdcall.}
-    OpenStorage*: proc(self: ptr IStorage, pwcsName: ptr OLECHAR, pstgPriority: ptr IStorage, grfMode: DWORD, snbExclude: SNB, reserved: DWORD, ppstg: ptr ptr IStorage): HRESULT {.stdcall.}
-    CopyTo*: proc(self: ptr IStorage, ciidExclude: DWORD, rgiidExclude: ptr IID, snbExclude: SNB, pstgDest: ptr IStorage): HRESULT {.stdcall.}
-    MoveElementTo*: proc(self: ptr IStorage, pwcsName: ptr OLECHAR, pstgDest: ptr IStorage, pwcsNewName: ptr OLECHAR, grfFlags: DWORD): HRESULT {.stdcall.}
+    CreateStream*: proc(
+      self: ptr IStorage,
+      pwcsName: ptr OLECHAR,
+      grfMode: DWORD,
+      reserved1: DWORD,
+      reserved2: DWORD,
+      ppstm: ptr ptr IStream,
+    ): HRESULT {.stdcall.}
+    OpenStream*: proc(
+      self: ptr IStorage,
+      pwcsName: ptr OLECHAR,
+      reserved1: pointer,
+      grfMode: DWORD,
+      reserved2: DWORD,
+      ppstm: ptr ptr IStream,
+    ): HRESULT {.stdcall.}
+    CreateStorage*: proc(
+      self: ptr IStorage,
+      pwcsName: ptr OLECHAR,
+      grfMode: DWORD,
+      reserved1: DWORD,
+      reserved2: DWORD,
+      ppstg: ptr ptr IStorage,
+    ): HRESULT {.stdcall.}
+    OpenStorage*: proc(
+      self: ptr IStorage,
+      pwcsName: ptr OLECHAR,
+      pstgPriority: ptr IStorage,
+      grfMode: DWORD,
+      snbExclude: SNB,
+      reserved: DWORD,
+      ppstg: ptr ptr IStorage,
+    ): HRESULT {.stdcall.}
+    CopyTo*: proc(
+      self: ptr IStorage,
+      ciidExclude: DWORD,
+      rgiidExclude: ptr IID,
+      snbExclude: SNB,
+      pstgDest: ptr IStorage,
+    ): HRESULT {.stdcall.}
+    MoveElementTo*: proc(
+      self: ptr IStorage,
+      pwcsName: ptr OLECHAR,
+      pstgDest: ptr IStorage,
+      pwcsNewName: ptr OLECHAR,
+      grfFlags: DWORD,
+    ): HRESULT {.stdcall.}
     Commit*: proc(self: ptr IStorage, grfCommitFlags: DWORD): HRESULT {.stdcall.}
     Revert*: proc(self: ptr IStorage): HRESULT {.stdcall.}
-    EnumElements*: proc(self: ptr IStorage, reserved1: DWORD, reserved2: pointer, reserved3: DWORD, ppenum: ptr ptr IEnumSTATSTG): HRESULT {.stdcall.}
-    DestroyElement*: proc(self: ptr IStorage, pwcsName: ptr OLECHAR): HRESULT {.stdcall.}
-    RenameElement*: proc(self: ptr IStorage, pwcsOldName: ptr OLECHAR, pwcsNewName: ptr OLECHAR): HRESULT {.stdcall.}
-    SetElementTimes*: proc(self: ptr IStorage, pwcsName: ptr OLECHAR, pctime: ptr FILETIME, patime: ptr FILETIME, pmtime: ptr FILETIME): HRESULT {.stdcall.}
+    EnumElements*: proc(
+      self: ptr IStorage,
+      reserved1: DWORD,
+      reserved2: pointer,
+      reserved3: DWORD,
+      ppenum: ptr ptr IEnumSTATSTG,
+    ): HRESULT {.stdcall.}
+    DestroyElement*:
+      proc(self: ptr IStorage, pwcsName: ptr OLECHAR): HRESULT {.stdcall.}
+    RenameElement*: proc(
+      self: ptr IStorage, pwcsOldName: ptr OLECHAR, pwcsNewName: ptr OLECHAR
+    ): HRESULT {.stdcall.}
+    SetElementTimes*: proc(
+      self: ptr IStorage,
+      pwcsName: ptr OLECHAR,
+      pctime: ptr FILETIME,
+      patime: ptr FILETIME,
+      pmtime: ptr FILETIME,
+    ): HRESULT {.stdcall.}
     SetClass*: proc(self: ptr IStorage, clsid: REFCLSID): HRESULT {.stdcall.}
-    SetStateBits*: proc(self: ptr IStorage, grfStateBits: DWORD, grfMask: DWORD): HRESULT {.stdcall.}
-    Stat*: proc(self: ptr IStorage, pstatstg: ptr STATSTG, grfStatFlag: DWORD): HRESULT {.stdcall.}
+    SetStateBits*:
+      proc(self: ptr IStorage, grfStateBits: DWORD, grfMask: DWORD): HRESULT {.stdcall.}
+    Stat*: proc(self: ptr IStorage, pstatstg: ptr STATSTG, grfStatFlag: DWORD): HRESULT {.
+      stdcall
+    .}
+
   LPSTORAGE* = ptr IStorage
   RemSNB* {.pure.} = object
     ulCntStr*: ULONG
     ulCntChar*: ULONG
     rgString*: array[1, OLECHAR]
+
   wireSNB* = ptr RemSNB
   LPCOLESTR* = ptr OLECHAR
   IPersistFile* {.pure.} = object
     lpVtbl*: ptr IPersistFileVtbl
+
   IPersistFileVtbl* {.pure, inheritable.} = object of IPersistVtbl
     IsDirty*: proc(self: ptr IPersistFile): HRESULT {.stdcall.}
-    Load*: proc(self: ptr IPersistFile, pszFileName: LPCOLESTR, dwMode: DWORD): HRESULT {.stdcall.}
-    Save*: proc(self: ptr IPersistFile, pszFileName: LPCOLESTR, fRemember: WINBOOL): HRESULT {.stdcall.}
-    SaveCompleted*: proc(self: ptr IPersistFile, pszFileName: LPCOLESTR): HRESULT {.stdcall.}
-    GetCurFile*: proc(self: ptr IPersistFile, ppszFileName: ptr LPOLESTR): HRESULT {.stdcall.}
+    Load*: proc(self: ptr IPersistFile, pszFileName: LPCOLESTR, dwMode: DWORD): HRESULT {.
+      stdcall
+    .}
+    Save*: proc(
+      self: ptr IPersistFile, pszFileName: LPCOLESTR, fRemember: WINBOOL
+    ): HRESULT {.stdcall.}
+    SaveCompleted*:
+      proc(self: ptr IPersistFile, pszFileName: LPCOLESTR): HRESULT {.stdcall.}
+    GetCurFile*:
+      proc(self: ptr IPersistFile, ppszFileName: ptr LPOLESTR): HRESULT {.stdcall.}
+
   LPPERSISTFILE* = ptr IPersistFile
   IPersistStorage* {.pure.} = object
     lpVtbl*: ptr IPersistStorageVtbl
+
   IPersistStorageVtbl* {.pure, inheritable.} = object of IPersistVtbl
     IsDirty*: proc(self: ptr IPersistStorage): HRESULT {.stdcall.}
     InitNew*: proc(self: ptr IPersistStorage, pStg: ptr IStorage): HRESULT {.stdcall.}
     Load*: proc(self: ptr IPersistStorage, pStg: ptr IStorage): HRESULT {.stdcall.}
-    Save*: proc(self: ptr IPersistStorage, pStgSave: ptr IStorage, fSameAsLoad: WINBOOL): HRESULT {.stdcall.}
-    SaveCompleted*: proc(self: ptr IPersistStorage, pStgNew: ptr IStorage): HRESULT {.stdcall.}
+    Save*: proc(
+      self: ptr IPersistStorage, pStgSave: ptr IStorage, fSameAsLoad: WINBOOL
+    ): HRESULT {.stdcall.}
+    SaveCompleted*:
+      proc(self: ptr IPersistStorage, pStgNew: ptr IStorage): HRESULT {.stdcall.}
     HandsOffStorage*: proc(self: ptr IPersistStorage): HRESULT {.stdcall.}
+
   LPPERSISTSTORAGE* = ptr IPersistStorage
   ILockBytes* {.pure.} = object
     lpVtbl*: ptr ILockBytesVtbl
+
   ILockBytesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ReadAt*: proc(self: ptr ILockBytes, ulOffset: ULARGE_INTEGER, pv: pointer, cb: ULONG, pcbRead: ptr ULONG): HRESULT {.stdcall.}
-    WriteAt*: proc(self: ptr ILockBytes, ulOffset: ULARGE_INTEGER, pv: pointer, cb: ULONG, pcbWritten: ptr ULONG): HRESULT {.stdcall.}
+    ReadAt*: proc(
+      self: ptr ILockBytes,
+      ulOffset: ULARGE_INTEGER,
+      pv: pointer,
+      cb: ULONG,
+      pcbRead: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    WriteAt*: proc(
+      self: ptr ILockBytes,
+      ulOffset: ULARGE_INTEGER,
+      pv: pointer,
+      cb: ULONG,
+      pcbWritten: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Flush*: proc(self: ptr ILockBytes): HRESULT {.stdcall.}
     SetSize*: proc(self: ptr ILockBytes, cb: ULARGE_INTEGER): HRESULT {.stdcall.}
-    LockRegion*: proc(self: ptr ILockBytes, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: DWORD): HRESULT {.stdcall.}
-    UnlockRegion*: proc(self: ptr ILockBytes, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: DWORD): HRESULT {.stdcall.}
-    Stat*: proc(self: ptr ILockBytes, pstatstg: ptr STATSTG, grfStatFlag: DWORD): HRESULT {.stdcall.}
+    LockRegion*: proc(
+      self: ptr ILockBytes,
+      libOffset: ULARGE_INTEGER,
+      cb: ULARGE_INTEGER,
+      dwLockType: DWORD,
+    ): HRESULT {.stdcall.}
+    UnlockRegion*: proc(
+      self: ptr ILockBytes,
+      libOffset: ULARGE_INTEGER,
+      cb: ULARGE_INTEGER,
+      dwLockType: DWORD,
+    ): HRESULT {.stdcall.}
+    Stat*: proc(
+      self: ptr ILockBytes, pstatstg: ptr STATSTG, grfStatFlag: DWORD
+    ): HRESULT {.stdcall.}
+
   LPLOCKBYTES* = ptr ILockBytes
   DVTARGETDEVICE* {.pure.} = object
     tdSize*: DWORD
@@ -745,19 +1159,30 @@
     tdPortNameOffset*: WORD
     tdExtDevmodeOffset*: WORD
     tdData*: array[1, BYTE]
+
   FORMATETC* {.pure.} = object
     cfFormat*: CLIPFORMAT
     ptd*: ptr DVTARGETDEVICE
     dwAspect*: DWORD
     lindex*: LONG
     tymed*: DWORD
+
   IEnumFORMATETC* {.pure.} = object
     lpVtbl*: ptr IEnumFORMATETCVtbl
+
   IEnumFORMATETCVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumFORMATETC, celt: ULONG, rgelt: ptr FORMATETC, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumFORMATETC,
+      celt: ULONG,
+      rgelt: ptr FORMATETC,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumFORMATETC, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumFORMATETC): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumFORMATETC, ppenum: ptr ptr IEnumFORMATETC): HRESULT {.stdcall.}
+    Clone*: proc(self: ptr IEnumFORMATETC, ppenum: ptr ptr IEnumFORMATETC): HRESULT {.
+      stdcall
+    .}
+
   LPENUMFORMATETC* = ptr IEnumFORMATETC
   LPCLIPFORMAT* = ptr CLIPFORMAT
   LPFORMATETC* = ptr FORMATETC
@@ -769,46 +1194,63 @@
     lpszFileName*: LPOLESTR
     pstm*: ptr IStream
     pstg*: ptr IStorage
+
   uSTGMEDIUM* {.pure.} = object
     tymed*: DWORD
     u*: uSTGMEDIUM_u
     pUnkForRelease*: ptr IUnknown
+
   STGMEDIUM* = uSTGMEDIUM
   IAdviseSink* {.pure.} = object
     lpVtbl*: ptr IAdviseSinkVtbl
+
   IAdviseSinkVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnDataChange*: proc(self: ptr IAdviseSink, pFormatetc: ptr FORMATETC, pStgmed: ptr STGMEDIUM): void {.stdcall.}
-    OnViewChange*: proc(self: ptr IAdviseSink, dwAspect: DWORD, lindex: LONG): void {.stdcall.}
+    OnDataChange*: proc(
+      self: ptr IAdviseSink, pFormatetc: ptr FORMATETC, pStgmed: ptr STGMEDIUM
+    ): void {.stdcall.}
+    OnViewChange*:
+      proc(self: ptr IAdviseSink, dwAspect: DWORD, lindex: LONG): void {.stdcall.}
     OnRename*: proc(self: ptr IAdviseSink, pmk: ptr IMoniker): void {.stdcall.}
     OnSave*: proc(self: ptr IAdviseSink): void {.stdcall.}
     OnClose*: proc(self: ptr IAdviseSink): void {.stdcall.}
+
   STATDATA* {.pure.} = object
     formatetc*: FORMATETC
     advf*: DWORD
     pAdvSink*: ptr IAdviseSink
     dwConnection*: DWORD
+
   IEnumSTATDATA* {.pure.} = object
     lpVtbl*: ptr IEnumSTATDATAVtbl
+
   IEnumSTATDATAVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumSTATDATA, celt: ULONG, rgelt: ptr STATDATA, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumSTATDATA, celt: ULONG, rgelt: ptr STATDATA, pceltFetched: ptr ULONG
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumSTATDATA, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumSTATDATA): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumSTATDATA, ppenum: ptr ptr IEnumSTATDATA): HRESULT {.stdcall.}
+    Clone*:
+      proc(self: ptr IEnumSTATDATA, ppenum: ptr ptr IEnumSTATDATA): HRESULT {.stdcall.}
+
   LPENUMSTATDATA* = ptr IEnumSTATDATA
   LPSTATDATA* = ptr STATDATA
   IRootStorage* {.pure.} = object
     lpVtbl*: ptr IRootStorageVtbl
+
   IRootStorageVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SwitchToFile*: proc(self: ptr IRootStorage, pszFile: LPOLESTR): HRESULT {.stdcall.}
+
   LPROOTSTORAGE* = ptr IRootStorage
   LPADVISESINK* = ptr IAdviseSink
   GDI_OBJECT_u* {.pure, union.} = object
     hBitmap*: wireHBITMAP
     hPalette*: wireHPALETTE
     hGeneric*: wireHGLOBAL
+
   GDI_OBJECT* {.pure.} = object
     ObjectType*: DWORD
     u*: GDI_OBJECT_u
+
   userSTGMEDIUM_STRUCT1_u* {.pure, union.} = object
     hMetaFilePict*: wireHMETAFILEPICT
     hHEnhMetaFile*: wireHENHMETAFILE
@@ -817,12 +1259,15 @@
     lpszFileName*: LPOLESTR
     pstm*: ptr BYTE_BLOB
     pstg*: ptr BYTE_BLOB
+
   userSTGMEDIUM_STRUCT1* {.pure.} = object
     tymed*: DWORD
     u*: userSTGMEDIUM_STRUCT1_u
+
   userSTGMEDIUM* {.pure.} = object
     struct1*: userSTGMEDIUM_STRUCT1
     pUnkForRelease*: ptr IUnknown
+
   wireSTGMEDIUM* = ptr userSTGMEDIUM
   wireASYNC_STGMEDIUM* = ptr userSTGMEDIUM
   ASYNC_STGMEDIUM* = STGMEDIUM
@@ -831,79 +1276,160 @@
     ContextFlags*: LONG
     fPassOwnership*: LONG
     Stgmed*: userSTGMEDIUM
+
   wireFLAG_STGMEDIUM* = ptr userFLAG_STGMEDIUM
   IAdviseSink2* {.pure.} = object
     lpVtbl*: ptr IAdviseSink2Vtbl
+
   IAdviseSink2Vtbl* {.pure, inheritable.} = object of IAdviseSinkVtbl
     OnLinkSrcChange*: proc(self: ptr IAdviseSink2, pmk: ptr IMoniker): void {.stdcall.}
+
   LPADVISESINK2* = ptr IAdviseSink2
   IDataObject* {.pure.} = object
     lpVtbl*: ptr IDataObjectVtbl
+
   IDataObjectVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetData*: proc(self: ptr IDataObject, pformatetcIn: ptr FORMATETC, pmedium: ptr STGMEDIUM): HRESULT {.stdcall.}
-    GetDataHere*: proc(self: ptr IDataObject, pformatetc: ptr FORMATETC, pmedium: ptr STGMEDIUM): HRESULT {.stdcall.}
-    QueryGetData*: proc(self: ptr IDataObject, pformatetc: ptr FORMATETC): HRESULT {.stdcall.}
-    GetCanonicalFormatEtc*: proc(self: ptr IDataObject, pformatectIn: ptr FORMATETC, pformatetcOut: ptr FORMATETC): HRESULT {.stdcall.}
-    SetData*: proc(self: ptr IDataObject, pformatetc: ptr FORMATETC, pmedium: ptr STGMEDIUM, fRelease: WINBOOL): HRESULT {.stdcall.}
-    EnumFormatEtc*: proc(self: ptr IDataObject, dwDirection: DWORD, ppenumFormatEtc: ptr ptr IEnumFORMATETC): HRESULT {.stdcall.}
-    DAdvise*: proc(self: ptr IDataObject, pformatetc: ptr FORMATETC, advf: DWORD, pAdvSink: ptr IAdviseSink, pdwConnection: ptr DWORD): HRESULT {.stdcall.}
+    GetData*: proc(
+      self: ptr IDataObject, pformatetcIn: ptr FORMATETC, pmedium: ptr STGMEDIUM
+    ): HRESULT {.stdcall.}
+    GetDataHere*: proc(
+      self: ptr IDataObject, pformatetc: ptr FORMATETC, pmedium: ptr STGMEDIUM
+    ): HRESULT {.stdcall.}
+    QueryGetData*:
+      proc(self: ptr IDataObject, pformatetc: ptr FORMATETC): HRESULT {.stdcall.}
+    GetCanonicalFormatEtc*: proc(
+      self: ptr IDataObject, pformatectIn: ptr FORMATETC, pformatetcOut: ptr FORMATETC
+    ): HRESULT {.stdcall.}
+    SetData*: proc(
+      self: ptr IDataObject,
+      pformatetc: ptr FORMATETC,
+      pmedium: ptr STGMEDIUM,
+      fRelease: WINBOOL,
+    ): HRESULT {.stdcall.}
+    EnumFormatEtc*: proc(
+      self: ptr IDataObject, dwDirection: DWORD, ppenumFormatEtc: ptr ptr IEnumFORMATETC
+    ): HRESULT {.stdcall.}
+    DAdvise*: proc(
+      self: ptr IDataObject,
+      pformatetc: ptr FORMATETC,
+      advf: DWORD,
+      pAdvSink: ptr IAdviseSink,
+      pdwConnection: ptr DWORD,
+    ): HRESULT {.stdcall.}
     DUnadvise*: proc(self: ptr IDataObject, dwConnection: DWORD): HRESULT {.stdcall.}
-    EnumDAdvise*: proc(self: ptr IDataObject, ppenumAdvise: ptr ptr IEnumSTATDATA): HRESULT {.stdcall.}
+    EnumDAdvise*: proc(
+      self: ptr IDataObject, ppenumAdvise: ptr ptr IEnumSTATDATA
+    ): HRESULT {.stdcall.}
+
   LPDATAOBJECT* = ptr IDataObject
   IDataAdviseHolder* {.pure.} = object
     lpVtbl*: ptr IDataAdviseHolderVtbl
+
   IDataAdviseHolderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Advise*: proc(self: ptr IDataAdviseHolder, pDataObject: ptr IDataObject, pFetc: ptr FORMATETC, advf: DWORD, pAdvise: ptr IAdviseSink, pdwConnection: ptr DWORD): HRESULT {.stdcall.}
-    Unadvise*: proc(self: ptr IDataAdviseHolder, dwConnection: DWORD): HRESULT {.stdcall.}
-    EnumAdvise*: proc(self: ptr IDataAdviseHolder, ppenumAdvise: ptr ptr IEnumSTATDATA): HRESULT {.stdcall.}
-    SendOnDataChange*: proc(self: ptr IDataAdviseHolder, pDataObject: ptr IDataObject, dwReserved: DWORD, advf: DWORD): HRESULT {.stdcall.}
+    Advise*: proc(
+      self: ptr IDataAdviseHolder,
+      pDataObject: ptr IDataObject,
+      pFetc: ptr FORMATETC,
+      advf: DWORD,
+      pAdvise: ptr IAdviseSink,
+      pdwConnection: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    Unadvise*:
+      proc(self: ptr IDataAdviseHolder, dwConnection: DWORD): HRESULT {.stdcall.}
+    EnumAdvise*: proc(
+      self: ptr IDataAdviseHolder, ppenumAdvise: ptr ptr IEnumSTATDATA
+    ): HRESULT {.stdcall.}
+    SendOnDataChange*: proc(
+      self: ptr IDataAdviseHolder,
+      pDataObject: ptr IDataObject,
+      dwReserved: DWORD,
+      advf: DWORD,
+    ): HRESULT {.stdcall.}
+
   LPDATAADVISEHOLDER* = ptr IDataAdviseHolder
   INTERFACEINFO* {.pure.} = object
     pUnk*: ptr IUnknown
     iid*: IID
     wMethod*: WORD
+
   LPINTERFACEINFO* = ptr INTERFACEINFO
   IMessageFilter* {.pure.} = object
     lpVtbl*: ptr IMessageFilterVtbl
+
   IMessageFilterVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    HandleInComingCall*: proc(self: ptr IMessageFilter, dwCallType: DWORD, htaskCaller: HTASK, dwTickCount: DWORD, lpInterfaceInfo: LPINTERFACEINFO): DWORD {.stdcall.}
-    RetryRejectedCall*: proc(self: ptr IMessageFilter, htaskCallee: HTASK, dwTickCount: DWORD, dwRejectType: DWORD): DWORD {.stdcall.}
-    MessagePending*: proc(self: ptr IMessageFilter, htaskCallee: HTASK, dwTickCount: DWORD, dwPendingType: DWORD): DWORD {.stdcall.}
+    HandleInComingCall*: proc(
+      self: ptr IMessageFilter,
+      dwCallType: DWORD,
+      htaskCaller: HTASK,
+      dwTickCount: DWORD,
+      lpInterfaceInfo: LPINTERFACEINFO,
+    ): DWORD {.stdcall.}
+    RetryRejectedCall*: proc(
+      self: ptr IMessageFilter,
+      htaskCallee: HTASK,
+      dwTickCount: DWORD,
+      dwRejectType: DWORD,
+    ): DWORD {.stdcall.}
+    MessagePending*: proc(
+      self: ptr IMessageFilter,
+      htaskCallee: HTASK,
+      dwTickCount: DWORD,
+      dwPendingType: DWORD,
+    ): DWORD {.stdcall.}
+
   LPMESSAGEFILTER* = ptr IMessageFilter
   IInitializeSpy* {.pure.} = object
     lpVtbl*: ptr IInitializeSpyVtbl
+
   IInitializeSpyVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    PreInitialize*: proc(self: ptr IInitializeSpy, dwCoInit: DWORD, dwCurThreadAptRefs: DWORD): HRESULT {.stdcall.}
-    PostInitialize*: proc(self: ptr IInitializeSpy, hrCoInit: HRESULT, dwCoInit: DWORD, dwNewThreadAptRefs: DWORD): HRESULT {.stdcall.}
-    PreUninitialize*: proc(self: ptr IInitializeSpy, dwCurThreadAptRefs: DWORD): HRESULT {.stdcall.}
-    PostUninitialize*: proc(self: ptr IInitializeSpy, dwNewThreadAptRefs: DWORD): HRESULT {.stdcall.}
+    PreInitialize*: proc(
+      self: ptr IInitializeSpy, dwCoInit: DWORD, dwCurThreadAptRefs: DWORD
+    ): HRESULT {.stdcall.}
+    PostInitialize*: proc(
+      self: ptr IInitializeSpy,
+      hrCoInit: HRESULT,
+      dwCoInit: DWORD,
+      dwNewThreadAptRefs: DWORD,
+    ): HRESULT {.stdcall.}
+    PreUninitialize*:
+      proc(self: ptr IInitializeSpy, dwCurThreadAptRefs: DWORD): HRESULT {.stdcall.}
+    PostUninitialize*:
+      proc(self: ptr IInitializeSpy, dwNewThreadAptRefs: DWORD): HRESULT {.stdcall.}
+
   LPINITIALIZESPY* = ptr IInitializeSpy
   CURRENCY* = CY
   SAFEARRAYBOUND* {.pure.} = object
     cElements*: ULONG
     lLbound*: LONG
+
   LPSAFEARRAYBOUND* = ptr SAFEARRAYBOUND
   SAFEARR_BSTR* {.pure.} = object
     Size*: ULONG
     aBstr*: ptr wireBSTR
+
   SAFEARR_UNKNOWN* {.pure.} = object
     Size*: ULONG
     apUnknown*: ptr ptr IUnknown
+
   MEMBERID* = DISPID
   ARRAYDESC* {.pure.} = object
     tdescElem*: TYPEDESC
     cDims*: USHORT
     rgbounds*: array[1, SAFEARRAYBOUND]
+
   TYPEDESC_UNION1* {.pure, union.} = object
     lptdesc*: ptr TYPEDESC
     lpadesc*: ptr ARRAYDESC
     hreftype*: HREFTYPE
+
   TYPEDESC* {.pure.} = object
     union1*: TYPEDESC_UNION1
     vt*: VARTYPE
+
   IDLDESC* {.pure.} = object
     dwReserved*: ULONG_PTR
     wIDLFlags*: USHORT
+
   TYPEATTR* {.pure.} = object
     guid*: GUID
     lcid*: LCID
@@ -923,6 +1449,7 @@
     wMinorVerNum*: WORD
     tdescAlias*: TYPEDESC
     idldescType*: IDLDESC
+
   SAFEARRAY* {.pure.} = object
     cDims*: USHORT
     fFeatures*: USHORT
@@ -930,28 +1457,62 @@
     cLocks*: ULONG
     pvData*: PVOID
     rgsabound*: array[1, SAFEARRAYBOUND]
+
   IRecordInfo* {.pure.} = object
     lpVtbl*: ptr IRecordInfoVtbl
+
   IRecordInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     RecordInit*: proc(self: ptr IRecordInfo, pvNew: PVOID): HRESULT {.stdcall.}
     RecordClear*: proc(self: ptr IRecordInfo, pvExisting: PVOID): HRESULT {.stdcall.}
-    RecordCopy*: proc(self: ptr IRecordInfo, pvExisting: PVOID, pvNew: PVOID): HRESULT {.stdcall.}
+    RecordCopy*:
+      proc(self: ptr IRecordInfo, pvExisting: PVOID, pvNew: PVOID): HRESULT {.stdcall.}
     GetGuid*: proc(self: ptr IRecordInfo, pguid: ptr GUID): HRESULT {.stdcall.}
     GetName*: proc(self: ptr IRecordInfo, pbstrName: ptr BSTR): HRESULT {.stdcall.}
     GetSize*: proc(self: ptr IRecordInfo, pcbSize: ptr ULONG): HRESULT {.stdcall.}
-    GetTypeInfo*: proc(self: ptr IRecordInfo, ppTypeInfo: ptr ptr ITypeInfo): HRESULT {.stdcall.}
-    GetField*: proc(self: ptr IRecordInfo, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT): HRESULT {.stdcall.}
-    GetFieldNoCopy*: proc(self: ptr IRecordInfo, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT, ppvDataCArray: ptr PVOID): HRESULT {.stdcall.}
-    PutField*: proc(self: ptr IRecordInfo, wFlags: ULONG, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT): HRESULT {.stdcall.}
-    PutFieldNoCopy*: proc(self: ptr IRecordInfo, wFlags: ULONG, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT): HRESULT {.stdcall.}
-    GetFieldNames*: proc(self: ptr IRecordInfo, pcNames: ptr ULONG, rgBstrNames: ptr BSTR): HRESULT {.stdcall.}
-    IsMatchingType*: proc(self: ptr IRecordInfo, pRecordInfo: ptr IRecordInfo): WINBOOL {.stdcall.}
+    GetTypeInfo*:
+      proc(self: ptr IRecordInfo, ppTypeInfo: ptr ptr ITypeInfo): HRESULT {.stdcall.}
+    GetField*: proc(
+      self: ptr IRecordInfo,
+      pvData: PVOID,
+      szFieldName: LPCOLESTR,
+      pvarField: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    GetFieldNoCopy*: proc(
+      self: ptr IRecordInfo,
+      pvData: PVOID,
+      szFieldName: LPCOLESTR,
+      pvarField: ptr VARIANT,
+      ppvDataCArray: ptr PVOID,
+    ): HRESULT {.stdcall.}
+    PutField*: proc(
+      self: ptr IRecordInfo,
+      wFlags: ULONG,
+      pvData: PVOID,
+      szFieldName: LPCOLESTR,
+      pvarField: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    PutFieldNoCopy*: proc(
+      self: ptr IRecordInfo,
+      wFlags: ULONG,
+      pvData: PVOID,
+      szFieldName: LPCOLESTR,
+      pvarField: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    GetFieldNames*: proc(
+      self: ptr IRecordInfo, pcNames: ptr ULONG, rgBstrNames: ptr BSTR
+    ): HRESULT {.stdcall.}
+    IsMatchingType*:
+      proc(self: ptr IRecordInfo, pRecordInfo: ptr IRecordInfo): WINBOOL {.stdcall.}
     RecordCreate*: proc(self: ptr IRecordInfo): PVOID {.stdcall.}
-    RecordCreateCopy*: proc(self: ptr IRecordInfo, pvSource: PVOID, ppvDest: ptr PVOID): HRESULT {.stdcall.}
+    RecordCreateCopy*: proc(
+      self: ptr IRecordInfo, pvSource: PVOID, ppvDest: ptr PVOID
+    ): HRESULT {.stdcall.}
     RecordDestroy*: proc(self: ptr IRecordInfo, pvRecord: PVOID): HRESULT {.stdcall.}
+
   VARIANT_UNION1_STRUCT1_UNION1_STRUCT1* {.pure.} = object
     pvRecord*: PVOID
     pRecInfo*: ptr IRecordInfo
+
   VARIANT_UNION1_STRUCT1_UNION1* {.pure, union.} = object
     llVal*: LONGLONG
     lVal*: LONG
@@ -997,31 +1558,39 @@
     pintVal*: ptr INT
     puintVal*: ptr UINT
     struct1*: VARIANT_UNION1_STRUCT1_UNION1_STRUCT1
+
   VARIANT_UNION1_STRUCT1* {.pure.} = object
     vt*: VARTYPE
     wReserved1*: WORD
     wReserved2*: WORD
     wReserved3*: WORD
     union1*: VARIANT_UNION1_STRUCT1_UNION1
+
   VARIANT_UNION1* {.pure, union.} = object
     struct1*: VARIANT_UNION1_STRUCT1
     decVal*: DECIMAL
+
   VARIANT* {.pure.} = object
     union1*: VARIANT_UNION1
+
   VARIANTARG* = VARIANT
   PARAMDESCEX* {.pure.} = object
     cBytes*: ULONG
     varDefaultValue*: VARIANTARG
+
   LPPARAMDESCEX* = ptr PARAMDESCEX
   PARAMDESC* {.pure.} = object
     pparamdescex*: LPPARAMDESCEX
     wParamFlags*: USHORT
+
   ELEMDESC_UNION1* {.pure, union.} = object
     idldesc*: IDLDESC
     paramdesc*: PARAMDESC
+
   ELEMDESC* {.pure.} = object
     tdesc*: TYPEDESC
     union1*: ELEMDESC_UNION1
+
   FUNCDESC* {.pure.} = object
     memid*: MEMBERID
     lprgscode*: ptr SCODE
@@ -1035,9 +1604,11 @@
     cScodes*: SHORT
     elemdescFunc*: ELEMDESC
     wFuncFlags*: WORD
+
   VARDESC_UNION1* {.pure, union.} = object
     oInst*: ULONG
     lpvarValue*: ptr VARIANT
+
   VARDESC* {.pure.} = object
     memid*: MEMBERID
     lpstrSchema*: LPOLESTR
@@ -1045,20 +1616,39 @@
     elemdescVar*: ELEMDESC
     wVarFlags*: WORD
     varkind*: VARKIND
+
   BINDPTR* {.pure, union.} = object
     lpfuncdesc*: ptr FUNCDESC
     lpvardesc*: ptr VARDESC
     lptcomp*: ptr ITypeComp
+
   ITypeComp* {.pure.} = object
     lpVtbl*: ptr ITypeCompVtbl
+
   ITypeCompVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Bind*: proc(self: ptr ITypeComp, szName: LPOLESTR, lHashVal: ULONG, wFlags: WORD, ppTInfo: ptr ptr ITypeInfo, pDescKind: ptr DESCKIND, pBindPtr: ptr BINDPTR): HRESULT {.stdcall.}
-    BindType*: proc(self: ptr ITypeComp, szName: LPOLESTR, lHashVal: ULONG, ppTInfo: ptr ptr ITypeInfo, ppTComp: ptr ptr ITypeComp): HRESULT {.stdcall.}
+    Bind*: proc(
+      self: ptr ITypeComp,
+      szName: LPOLESTR,
+      lHashVal: ULONG,
+      wFlags: WORD,
+      ppTInfo: ptr ptr ITypeInfo,
+      pDescKind: ptr DESCKIND,
+      pBindPtr: ptr BINDPTR,
+    ): HRESULT {.stdcall.}
+    BindType*: proc(
+      self: ptr ITypeComp,
+      szName: LPOLESTR,
+      lHashVal: ULONG,
+      ppTInfo: ptr ptr ITypeInfo,
+      ppTComp: ptr ptr ITypeComp,
+    ): HRESULT {.stdcall.}
+
   DISPPARAMS* {.pure.} = object
     rgvarg*: ptr VARIANTARG
     rgdispidNamedArgs*: ptr DISPID
     cArgs*: UINT
     cNamedArgs*: UINT
+
   EXCEPINFO* {.pure.} = object
     wCode*: WORD
     wReserved*: WORD
@@ -1069,6 +1659,7 @@
     pvReserved*: PVOID
     pfnDeferredFillIn*: proc(P1: ptr EXCEPINFO): HRESULT {.stdcall.}
     scode*: SCODE
+
   TLIBATTR* {.pure.} = object
     guid*: GUID
     lcid*: LCID
@@ -1076,56 +1667,161 @@
     wMajorVerNum*: WORD
     wMinorVerNum*: WORD
     wLibFlags*: WORD
+
   ITypeLib* {.pure.} = object
     lpVtbl*: ptr ITypeLibVtbl
+
   ITypeLibVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetTypeInfoCount*: proc(self: ptr ITypeLib): UINT {.stdcall.}
-    GetTypeInfo*: proc(self: ptr ITypeLib, index: UINT, ppTInfo: ptr ptr ITypeInfo): HRESULT {.stdcall.}
-    GetTypeInfoType*: proc(self: ptr ITypeLib, index: UINT, pTKind: ptr TYPEKIND): HRESULT {.stdcall.}
-    GetTypeInfoOfGuid*: proc(self: ptr ITypeLib, guid: REFGUID, ppTinfo: ptr ptr ITypeInfo): HRESULT {.stdcall.}
-    GetLibAttr*: proc(self: ptr ITypeLib, ppTLibAttr: ptr ptr TLIBATTR): HRESULT {.stdcall.}
-    GetTypeComp*: proc(self: ptr ITypeLib, ppTComp: ptr ptr ITypeComp): HRESULT {.stdcall.}
-    GetDocumentation*: proc(self: ptr ITypeLib, index: INT, pBstrName: ptr BSTR, pBstrDocString: ptr BSTR, pdwHelpContext: ptr DWORD, pBstrHelpFile: ptr BSTR): HRESULT {.stdcall.}
-    IsName*: proc(self: ptr ITypeLib, szNameBuf: LPOLESTR, lHashVal: ULONG, pfName: ptr WINBOOL): HRESULT {.stdcall.}
-    FindName*: proc(self: ptr ITypeLib, szNameBuf: LPOLESTR, lHashVal: ULONG, ppTInfo: ptr ptr ITypeInfo, rgMemId: ptr MEMBERID, pcFound: ptr USHORT): HRESULT {.stdcall.}
-    ReleaseTLibAttr*: proc(self: ptr ITypeLib, pTLibAttr: ptr TLIBATTR): void {.stdcall.}
+    GetTypeInfo*: proc(
+      self: ptr ITypeLib, index: UINT, ppTInfo: ptr ptr ITypeInfo
+    ): HRESULT {.stdcall.}
+    GetTypeInfoType*:
+      proc(self: ptr ITypeLib, index: UINT, pTKind: ptr TYPEKIND): HRESULT {.stdcall.}
+    GetTypeInfoOfGuid*: proc(
+      self: ptr ITypeLib, guid: REFGUID, ppTinfo: ptr ptr ITypeInfo
+    ): HRESULT {.stdcall.}
+    GetLibAttr*:
+      proc(self: ptr ITypeLib, ppTLibAttr: ptr ptr TLIBATTR): HRESULT {.stdcall.}
+    GetTypeComp*:
+      proc(self: ptr ITypeLib, ppTComp: ptr ptr ITypeComp): HRESULT {.stdcall.}
+    GetDocumentation*: proc(
+      self: ptr ITypeLib,
+      index: INT,
+      pBstrName: ptr BSTR,
+      pBstrDocString: ptr BSTR,
+      pdwHelpContext: ptr DWORD,
+      pBstrHelpFile: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    IsName*: proc(
+      self: ptr ITypeLib, szNameBuf: LPOLESTR, lHashVal: ULONG, pfName: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    FindName*: proc(
+      self: ptr ITypeLib,
+      szNameBuf: LPOLESTR,
+      lHashVal: ULONG,
+      ppTInfo: ptr ptr ITypeInfo,
+      rgMemId: ptr MEMBERID,
+      pcFound: ptr USHORT,
+    ): HRESULT {.stdcall.}
+    ReleaseTLibAttr*:
+      proc(self: ptr ITypeLib, pTLibAttr: ptr TLIBATTR): void {.stdcall.}
+
   ITypeInfo* {.pure.} = object
     lpVtbl*: ptr ITypeInfoVtbl
+
   ITypeInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetTypeAttr*: proc(self: ptr ITypeInfo, ppTypeAttr: ptr ptr TYPEATTR): HRESULT {.stdcall.}
-    GetTypeComp*: proc(self: ptr ITypeInfo, ppTComp: ptr ptr ITypeComp): HRESULT {.stdcall.}
-    GetFuncDesc*: proc(self: ptr ITypeInfo, index: UINT, ppFuncDesc: ptr ptr FUNCDESC): HRESULT {.stdcall.}
-    GetVarDesc*: proc(self: ptr ITypeInfo, index: UINT, ppVarDesc: ptr ptr VARDESC): HRESULT {.stdcall.}
-    GetNames*: proc(self: ptr ITypeInfo, memid: MEMBERID, rgBstrNames: ptr BSTR, cMaxNames: UINT, pcNames: ptr UINT): HRESULT {.stdcall.}
-    GetRefTypeOfImplType*: proc(self: ptr ITypeInfo, index: UINT, pRefType: ptr HREFTYPE): HRESULT {.stdcall.}
-    GetImplTypeFlags*: proc(self: ptr ITypeInfo, index: UINT, pImplTypeFlags: ptr INT): HRESULT {.stdcall.}
-    GetIDsOfNames*: proc(self: ptr ITypeInfo, rgszNames: ptr LPOLESTR, cNames: UINT, pMemId: ptr MEMBERID): HRESULT {.stdcall.}
-    Invoke*: proc(self: ptr ITypeInfo, pvInstance: PVOID, memid: MEMBERID, wFlags: WORD, pDispParams: ptr DISPPARAMS, pVarResult: ptr VARIANT, pExcepInfo: ptr EXCEPINFO, puArgErr: ptr UINT): HRESULT {.stdcall.}
-    GetDocumentation*: proc(self: ptr ITypeInfo, memid: MEMBERID, pBstrName: ptr BSTR, pBstrDocString: ptr BSTR, pdwHelpContext: ptr DWORD, pBstrHelpFile: ptr BSTR): HRESULT {.stdcall.}
-    GetDllEntry*: proc(self: ptr ITypeInfo, memid: MEMBERID, invKind: INVOKEKIND, pBstrDllName: ptr BSTR, pBstrName: ptr BSTR, pwOrdinal: ptr WORD): HRESULT {.stdcall.}
-    GetRefTypeInfo*: proc(self: ptr ITypeInfo, hRefType: HREFTYPE, ppTInfo: ptr ptr ITypeInfo): HRESULT {.stdcall.}
-    AddressOfMember*: proc(self: ptr ITypeInfo, memid: MEMBERID, invKind: INVOKEKIND, ppv: ptr PVOID): HRESULT {.stdcall.}
-    CreateInstance*: proc(self: ptr ITypeInfo, pUnkOuter: ptr IUnknown, riid: REFIID, ppvObj: ptr PVOID): HRESULT {.stdcall.}
-    GetMops*: proc(self: ptr ITypeInfo, memid: MEMBERID, pBstrMops: ptr BSTR): HRESULT {.stdcall.}
-    GetContainingTypeLib*: proc(self: ptr ITypeInfo, ppTLib: ptr ptr ITypeLib, pIndex: ptr UINT): HRESULT {.stdcall.}
-    ReleaseTypeAttr*: proc(self: ptr ITypeInfo, pTypeAttr: ptr TYPEATTR): void {.stdcall.}
-    ReleaseFuncDesc*: proc(self: ptr ITypeInfo, pFuncDesc: ptr FUNCDESC): void {.stdcall.}
+    GetTypeAttr*:
+      proc(self: ptr ITypeInfo, ppTypeAttr: ptr ptr TYPEATTR): HRESULT {.stdcall.}
+    GetTypeComp*:
+      proc(self: ptr ITypeInfo, ppTComp: ptr ptr ITypeComp): HRESULT {.stdcall.}
+    GetFuncDesc*: proc(
+      self: ptr ITypeInfo, index: UINT, ppFuncDesc: ptr ptr FUNCDESC
+    ): HRESULT {.stdcall.}
+    GetVarDesc*: proc(
+      self: ptr ITypeInfo, index: UINT, ppVarDesc: ptr ptr VARDESC
+    ): HRESULT {.stdcall.}
+    GetNames*: proc(
+      self: ptr ITypeInfo,
+      memid: MEMBERID,
+      rgBstrNames: ptr BSTR,
+      cMaxNames: UINT,
+      pcNames: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetRefTypeOfImplType*: proc(
+      self: ptr ITypeInfo, index: UINT, pRefType: ptr HREFTYPE
+    ): HRESULT {.stdcall.}
+    GetImplTypeFlags*: proc(
+      self: ptr ITypeInfo, index: UINT, pImplTypeFlags: ptr INT
+    ): HRESULT {.stdcall.}
+    GetIDsOfNames*: proc(
+      self: ptr ITypeInfo, rgszNames: ptr LPOLESTR, cNames: UINT, pMemId: ptr MEMBERID
+    ): HRESULT {.stdcall.}
+    Invoke*: proc(
+      self: ptr ITypeInfo,
+      pvInstance: PVOID,
+      memid: MEMBERID,
+      wFlags: WORD,
+      pDispParams: ptr DISPPARAMS,
+      pVarResult: ptr VARIANT,
+      pExcepInfo: ptr EXCEPINFO,
+      puArgErr: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetDocumentation*: proc(
+      self: ptr ITypeInfo,
+      memid: MEMBERID,
+      pBstrName: ptr BSTR,
+      pBstrDocString: ptr BSTR,
+      pdwHelpContext: ptr DWORD,
+      pBstrHelpFile: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    GetDllEntry*: proc(
+      self: ptr ITypeInfo,
+      memid: MEMBERID,
+      invKind: INVOKEKIND,
+      pBstrDllName: ptr BSTR,
+      pBstrName: ptr BSTR,
+      pwOrdinal: ptr WORD,
+    ): HRESULT {.stdcall.}
+    GetRefTypeInfo*: proc(
+      self: ptr ITypeInfo, hRefType: HREFTYPE, ppTInfo: ptr ptr ITypeInfo
+    ): HRESULT {.stdcall.}
+    AddressOfMember*: proc(
+      self: ptr ITypeInfo, memid: MEMBERID, invKind: INVOKEKIND, ppv: ptr PVOID
+    ): HRESULT {.stdcall.}
+    CreateInstance*: proc(
+      self: ptr ITypeInfo, pUnkOuter: ptr IUnknown, riid: REFIID, ppvObj: ptr PVOID
+    ): HRESULT {.stdcall.}
+    GetMops*: proc(self: ptr ITypeInfo, memid: MEMBERID, pBstrMops: ptr BSTR): HRESULT {.
+      stdcall
+    .}
+    GetContainingTypeLib*: proc(
+      self: ptr ITypeInfo, ppTLib: ptr ptr ITypeLib, pIndex: ptr UINT
+    ): HRESULT {.stdcall.}
+    ReleaseTypeAttr*:
+      proc(self: ptr ITypeInfo, pTypeAttr: ptr TYPEATTR): void {.stdcall.}
+    ReleaseFuncDesc*:
+      proc(self: ptr ITypeInfo, pFuncDesc: ptr FUNCDESC): void {.stdcall.}
     ReleaseVarDesc*: proc(self: ptr ITypeInfo, pVarDesc: ptr VARDESC): void {.stdcall.}
+
   IDispatch* {.pure.} = object
     lpVtbl*: ptr IDispatchVtbl
+
   IDispatchVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetTypeInfoCount*: proc(self: ptr IDispatch, pctinfo: ptr UINT): HRESULT {.stdcall.}
-    GetTypeInfo*: proc(self: ptr IDispatch, iTInfo: UINT, lcid: LCID, ppTInfo: ptr ptr ITypeInfo): HRESULT {.stdcall.}
-    GetIDsOfNames*: proc(self: ptr IDispatch, riid: REFIID, rgszNames: ptr LPOLESTR, cNames: UINT, lcid: LCID, rgDispId: ptr DISPID): HRESULT {.stdcall.}
-    Invoke*: proc(self: ptr IDispatch, dispIdMember: DISPID, riid: REFIID, lcid: LCID, wFlags: WORD, pDispParams: ptr DISPPARAMS, pVarResult: ptr VARIANT, pExcepInfo: ptr EXCEPINFO, puArgErr: ptr UINT): HRESULT {.stdcall.}
+    GetTypeInfo*: proc(
+      self: ptr IDispatch, iTInfo: UINT, lcid: LCID, ppTInfo: ptr ptr ITypeInfo
+    ): HRESULT {.stdcall.}
+    GetIDsOfNames*: proc(
+      self: ptr IDispatch,
+      riid: REFIID,
+      rgszNames: ptr LPOLESTR,
+      cNames: UINT,
+      lcid: LCID,
+      rgDispId: ptr DISPID,
+    ): HRESULT {.stdcall.}
+    Invoke*: proc(
+      self: ptr IDispatch,
+      dispIdMember: DISPID,
+      riid: REFIID,
+      lcid: LCID,
+      wFlags: WORD,
+      pDispParams: ptr DISPPARAMS,
+      pVarResult: ptr VARIANT,
+      pExcepInfo: ptr EXCEPINFO,
+      puArgErr: ptr UINT,
+    ): HRESULT {.stdcall.}
+
   SAFEARR_DISPATCH* {.pure.} = object
     Size*: ULONG
     apDispatch*: ptr ptr IDispatch
+
   wireBRECORD* {.pure.} = ref object
     fFlags*: ULONG
     clSize*: ULONG
     pRecInfo*: ptr IRecordInfo
     pRecord*: ptr uint8
+
   wireVARIANT_UNION1* {.pure, union.} = object
     llVal*: LONGLONG
     lVal*: LONG
@@ -1171,6 +1867,7 @@
     pullVal*: ptr ULONGLONG
     pintVal*: ptr INT
     puintVal*: ptr UINT
+
   wireVARIANT* {.pure.} = ref object
     clSize*: DWORD
     rpcReserved*: DWORD
@@ -1179,28 +1876,36 @@
     wReserved2*: USHORT
     wReserved3*: USHORT
     union1*: wireVARIANT_UNION1
+
   SAFEARR_VARIANT* {.pure.} = object
     Size*: ULONG
     aVariant*: ptr wireVARIANT
+
   SAFEARR_BRECORD* {.pure.} = object
     Size*: ULONG
     aRecord*: ptr wireBRECORD
+
   SAFEARR_HAVEIID* {.pure.} = object
     Size*: ULONG
     apUnknown*: ptr ptr IUnknown
     iid*: IID
+
   BYTE_SIZEDARR* {.pure.} = object
     clSize*: ULONG
     pData*: ptr uint8
+
   WORD_SIZEDARR* {.pure.} = object
     clSize*: ULONG
     pData*: ptr uint16
+
   DWORD_SIZEDARR* {.pure.} = object
     clSize*: ULONG
     pData*: ptr ULONG
+
   HYPER_SIZEDARR* {.pure.} = object
     clSize*: ULONG
     pData*: ptr hyper
+
   SAFEARRAYUNION_u* {.pure, union.} = object
     BstrStr*: SAFEARR_BSTR
     UnknownStr*: SAFEARR_UNKNOWN
@@ -1212,9 +1917,11 @@
     WordStr*: WORD_SIZEDARR
     LongStr*: DWORD_SIZEDARR
     HyperStr*: HYPER_SIZEDARR
+
   SAFEARRAYUNION* {.pure.} = object
     sfType*: ULONG
     u*: SAFEARRAYUNION_u
+
   wireSAFEARRAY* {.pure.} = ref object
     cDims*: USHORT
     fFeatures*: USHORT
@@ -1222,6 +1929,7 @@
     cLocks*: ULONG
     uArrayStructs*: SAFEARRAYUNION
     rgsabound*: array[1, SAFEARRAYBOUND]
+
   wirePSAFEARRAY* = ptr wireSAFEARRAY
   LPSAFEARRAY* = ptr SAFEARRAY
   LPVARIANT* = ptr VARIANT
@@ -1237,163 +1945,341 @@
   CUSTDATAITEM* {.pure.} = object
     guid*: GUID
     varValue*: VARIANTARG
+
   LPCUSTDATAITEM* = ptr CUSTDATAITEM
   CUSTDATA* {.pure.} = object
     cCustData*: DWORD
     prgCustData*: LPCUSTDATAITEM
+
   LPCUSTDATA* = ptr CUSTDATA
   ICreateTypeInfo* {.pure.} = object
     lpVtbl*: ptr ICreateTypeInfoVtbl
+
   ICreateTypeInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SetGuid*: proc(self: ptr ICreateTypeInfo, guid: REFGUID): HRESULT {.stdcall.}
-    SetTypeFlags*: proc(self: ptr ICreateTypeInfo, uTypeFlags: UINT): HRESULT {.stdcall.}
-    SetDocString*: proc(self: ptr ICreateTypeInfo, pStrDoc: LPOLESTR): HRESULT {.stdcall.}
-    SetHelpContext*: proc(self: ptr ICreateTypeInfo, dwHelpContext: DWORD): HRESULT {.stdcall.}
-    SetVersion*: proc(self: ptr ICreateTypeInfo, wMajorVerNum: WORD, wMinorVerNum: WORD): HRESULT {.stdcall.}
-    AddRefTypeInfo*: proc(self: ptr ICreateTypeInfo, pTInfo: ptr ITypeInfo, phRefType: ptr HREFTYPE): HRESULT {.stdcall.}
-    AddFuncDesc*: proc(self: ptr ICreateTypeInfo, index: UINT, pFuncDesc: ptr FUNCDESC): HRESULT {.stdcall.}
-    AddImplType*: proc(self: ptr ICreateTypeInfo, index: UINT, hRefType: HREFTYPE): HRESULT {.stdcall.}
-    SetImplTypeFlags*: proc(self: ptr ICreateTypeInfo, index: UINT, implTypeFlags: INT): HRESULT {.stdcall.}
-    SetAlignment*: proc(self: ptr ICreateTypeInfo, cbAlignment: WORD): HRESULT {.stdcall.}
-    SetSchema*: proc(self: ptr ICreateTypeInfo, pStrSchema: LPOLESTR): HRESULT {.stdcall.}
-    AddVarDesc*: proc(self: ptr ICreateTypeInfo, index: UINT, pVarDesc: ptr VARDESC): HRESULT {.stdcall.}
-    SetFuncAndParamNames*: proc(self: ptr ICreateTypeInfo, index: UINT, rgszNames: ptr LPOLESTR, cNames: UINT): HRESULT {.stdcall.}
-    SetVarName*: proc(self: ptr ICreateTypeInfo, index: UINT, szName: LPOLESTR): HRESULT {.stdcall.}
-    SetTypeDescAlias*: proc(self: ptr ICreateTypeInfo, pTDescAlias: ptr TYPEDESC): HRESULT {.stdcall.}
-    DefineFuncAsDllEntry*: proc(self: ptr ICreateTypeInfo, index: UINT, szDllName: LPOLESTR, szProcName: LPOLESTR): HRESULT {.stdcall.}
-    SetFuncDocString*: proc(self: ptr ICreateTypeInfo, index: UINT, szDocString: LPOLESTR): HRESULT {.stdcall.}
-    SetVarDocString*: proc(self: ptr ICreateTypeInfo, index: UINT, szDocString: LPOLESTR): HRESULT {.stdcall.}
-    SetFuncHelpContext*: proc(self: ptr ICreateTypeInfo, index: UINT, dwHelpContext: DWORD): HRESULT {.stdcall.}
-    SetVarHelpContext*: proc(self: ptr ICreateTypeInfo, index: UINT, dwHelpContext: DWORD): HRESULT {.stdcall.}
-    SetMops*: proc(self: ptr ICreateTypeInfo, index: UINT, bstrMops: BSTR): HRESULT {.stdcall.}
-    SetTypeIdldesc*: proc(self: ptr ICreateTypeInfo, pIdlDesc: ptr IDLDESC): HRESULT {.stdcall.}
+    SetTypeFlags*:
+      proc(self: ptr ICreateTypeInfo, uTypeFlags: UINT): HRESULT {.stdcall.}
+    SetDocString*:
+      proc(self: ptr ICreateTypeInfo, pStrDoc: LPOLESTR): HRESULT {.stdcall.}
+    SetHelpContext*:
+      proc(self: ptr ICreateTypeInfo, dwHelpContext: DWORD): HRESULT {.stdcall.}
+    SetVersion*: proc(
+      self: ptr ICreateTypeInfo, wMajorVerNum: WORD, wMinorVerNum: WORD
+    ): HRESULT {.stdcall.}
+    AddRefTypeInfo*: proc(
+      self: ptr ICreateTypeInfo, pTInfo: ptr ITypeInfo, phRefType: ptr HREFTYPE
+    ): HRESULT {.stdcall.}
+    AddFuncDesc*: proc(
+      self: ptr ICreateTypeInfo, index: UINT, pFuncDesc: ptr FUNCDESC
+    ): HRESULT {.stdcall.}
+    AddImplType*: proc(
+      self: ptr ICreateTypeInfo, index: UINT, hRefType: HREFTYPE
+    ): HRESULT {.stdcall.}
+    SetImplTypeFlags*: proc(
+      self: ptr ICreateTypeInfo, index: UINT, implTypeFlags: INT
+    ): HRESULT {.stdcall.}
+    SetAlignment*:
+      proc(self: ptr ICreateTypeInfo, cbAlignment: WORD): HRESULT {.stdcall.}
+    SetSchema*:
+      proc(self: ptr ICreateTypeInfo, pStrSchema: LPOLESTR): HRESULT {.stdcall.}
+    AddVarDesc*: proc(
+      self: ptr ICreateTypeInfo, index: UINT, pVarDesc: ptr VARDESC
+    ): HRESULT {.stdcall.}
+    SetFuncAndParamNames*: proc(
+      self: ptr ICreateTypeInfo, index: UINT, rgszNames: ptr LPOLESTR, cNames: UINT
+    ): HRESULT {.stdcall.}
+    SetVarName*: proc(self: ptr ICreateTypeInfo, index: UINT, szName: LPOLESTR): HRESULT {.
+      stdcall
+    .}
+    SetTypeDescAlias*:
+      proc(self: ptr ICreateTypeInfo, pTDescAlias: ptr TYPEDESC): HRESULT {.stdcall.}
+    DefineFuncAsDllEntry*: proc(
+      self: ptr ICreateTypeInfo, index: UINT, szDllName: LPOLESTR, szProcName: LPOLESTR
+    ): HRESULT {.stdcall.}
+    SetFuncDocString*: proc(
+      self: ptr ICreateTypeInfo, index: UINT, szDocString: LPOLESTR
+    ): HRESULT {.stdcall.}
+    SetVarDocString*: proc(
+      self: ptr ICreateTypeInfo, index: UINT, szDocString: LPOLESTR
+    ): HRESULT {.stdcall.}
+    SetFuncHelpContext*: proc(
+      self: ptr ICreateTypeInfo, index: UINT, dwHelpContext: DWORD
+    ): HRESULT {.stdcall.}
+    SetVarHelpContext*: proc(
+      self: ptr ICreateTypeInfo, index: UINT, dwHelpContext: DWORD
+    ): HRESULT {.stdcall.}
+    SetMops*:
+      proc(self: ptr ICreateTypeInfo, index: UINT, bstrMops: BSTR): HRESULT {.stdcall.}
+    SetTypeIdldesc*:
+      proc(self: ptr ICreateTypeInfo, pIdlDesc: ptr IDLDESC): HRESULT {.stdcall.}
     LayOut*: proc(self: ptr ICreateTypeInfo): HRESULT {.stdcall.}
+
   LPCREATETYPEINFO* = ptr ICreateTypeInfo
   ICreateTypeInfo2* {.pure.} = object
     lpVtbl*: ptr ICreateTypeInfo2Vtbl
+
   ICreateTypeInfo2Vtbl* {.pure, inheritable.} = object of ICreateTypeInfoVtbl
     DeleteFuncDesc*: proc(self: ptr ICreateTypeInfo2, index: UINT): HRESULT {.stdcall.}
-    DeleteFuncDescByMemId*: proc(self: ptr ICreateTypeInfo2, memid: MEMBERID, invKind: INVOKEKIND): HRESULT {.stdcall.}
+    DeleteFuncDescByMemId*: proc(
+      self: ptr ICreateTypeInfo2, memid: MEMBERID, invKind: INVOKEKIND
+    ): HRESULT {.stdcall.}
     DeleteVarDesc*: proc(self: ptr ICreateTypeInfo2, index: UINT): HRESULT {.stdcall.}
-    DeleteVarDescByMemId*: proc(self: ptr ICreateTypeInfo2, memid: MEMBERID): HRESULT {.stdcall.}
+    DeleteVarDescByMemId*:
+      proc(self: ptr ICreateTypeInfo2, memid: MEMBERID): HRESULT {.stdcall.}
     DeleteImplType*: proc(self: ptr ICreateTypeInfo2, index: UINT): HRESULT {.stdcall.}
-    SetCustData*: proc(self: ptr ICreateTypeInfo2, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.stdcall.}
-    SetFuncCustData*: proc(self: ptr ICreateTypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.stdcall.}
-    SetParamCustData*: proc(self: ptr ICreateTypeInfo2, indexFunc: UINT, indexParam: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.stdcall.}
-    SetVarCustData*: proc(self: ptr ICreateTypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.stdcall.}
-    SetImplTypeCustData*: proc(self: ptr ICreateTypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.stdcall.}
-    SetHelpStringContext*: proc(self: ptr ICreateTypeInfo2, dwHelpStringContext: ULONG): HRESULT {.stdcall.}
-    SetFuncHelpStringContext*: proc(self: ptr ICreateTypeInfo2, index: UINT, dwHelpStringContext: ULONG): HRESULT {.stdcall.}
-    SetVarHelpStringContext*: proc(self: ptr ICreateTypeInfo2, index: UINT, dwHelpStringContext: ULONG): HRESULT {.stdcall.}
+    SetCustData*: proc(
+      self: ptr ICreateTypeInfo2, guid: REFGUID, pVarVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    SetFuncCustData*: proc(
+      self: ptr ICreateTypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    SetParamCustData*: proc(
+      self: ptr ICreateTypeInfo2,
+      indexFunc: UINT,
+      indexParam: UINT,
+      guid: REFGUID,
+      pVarVal: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    SetVarCustData*: proc(
+      self: ptr ICreateTypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    SetImplTypeCustData*: proc(
+      self: ptr ICreateTypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    SetHelpStringContext*:
+      proc(self: ptr ICreateTypeInfo2, dwHelpStringContext: ULONG): HRESULT {.stdcall.}
+    SetFuncHelpStringContext*: proc(
+      self: ptr ICreateTypeInfo2, index: UINT, dwHelpStringContext: ULONG
+    ): HRESULT {.stdcall.}
+    SetVarHelpStringContext*: proc(
+      self: ptr ICreateTypeInfo2, index: UINT, dwHelpStringContext: ULONG
+    ): HRESULT {.stdcall.}
     Invalidate*: proc(self: ptr ICreateTypeInfo2): HRESULT {.stdcall.}
     SetName*: proc(self: ptr ICreateTypeInfo2, szName: LPOLESTR): HRESULT {.stdcall.}
+
   LPCREATETYPEINFO2* = ptr ICreateTypeInfo2
   ICreateTypeLib* {.pure.} = object
     lpVtbl*: ptr ICreateTypeLibVtbl
+
   ICreateTypeLibVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateTypeInfo*: proc(self: ptr ICreateTypeLib, szName: LPOLESTR, tkind: TYPEKIND, ppCTInfo: ptr ptr ICreateTypeInfo): HRESULT {.stdcall.}
+    CreateTypeInfo*: proc(
+      self: ptr ICreateTypeLib,
+      szName: LPOLESTR,
+      tkind: TYPEKIND,
+      ppCTInfo: ptr ptr ICreateTypeInfo,
+    ): HRESULT {.stdcall.}
     SetName*: proc(self: ptr ICreateTypeLib, szName: LPOLESTR): HRESULT {.stdcall.}
-    SetVersion*: proc(self: ptr ICreateTypeLib, wMajorVerNum: WORD, wMinorVerNum: WORD): HRESULT {.stdcall.}
+    SetVersion*: proc(
+      self: ptr ICreateTypeLib, wMajorVerNum: WORD, wMinorVerNum: WORD
+    ): HRESULT {.stdcall.}
     SetGuid*: proc(self: ptr ICreateTypeLib, guid: REFGUID): HRESULT {.stdcall.}
     SetDocString*: proc(self: ptr ICreateTypeLib, szDoc: LPOLESTR): HRESULT {.stdcall.}
-    SetHelpFileName*: proc(self: ptr ICreateTypeLib, szHelpFileName: LPOLESTR): HRESULT {.stdcall.}
-    SetHelpContext*: proc(self: ptr ICreateTypeLib, dwHelpContext: DWORD): HRESULT {.stdcall.}
+    SetHelpFileName*:
+      proc(self: ptr ICreateTypeLib, szHelpFileName: LPOLESTR): HRESULT {.stdcall.}
+    SetHelpContext*:
+      proc(self: ptr ICreateTypeLib, dwHelpContext: DWORD): HRESULT {.stdcall.}
     SetLcid*: proc(self: ptr ICreateTypeLib, lcid: LCID): HRESULT {.stdcall.}
     SetLibFlags*: proc(self: ptr ICreateTypeLib, uLibFlags: UINT): HRESULT {.stdcall.}
     SaveAllChanges*: proc(self: ptr ICreateTypeLib): HRESULT {.stdcall.}
+
   LPCREATETYPELIB* = ptr ICreateTypeLib
   ICreateTypeLib2* {.pure.} = object
     lpVtbl*: ptr ICreateTypeLib2Vtbl
+
   ICreateTypeLib2Vtbl* {.pure, inheritable.} = object of ICreateTypeLibVtbl
-    DeleteTypeInfo*: proc(self: ptr ICreateTypeLib2, szName: LPOLESTR): HRESULT {.stdcall.}
-    SetCustData*: proc(self: ptr ICreateTypeLib2, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.stdcall.}
-    SetHelpStringContext*: proc(self: ptr ICreateTypeLib2, dwHelpStringContext: ULONG): HRESULT {.stdcall.}
-    SetHelpStringDll*: proc(self: ptr ICreateTypeLib2, szFileName: LPOLESTR): HRESULT {.stdcall.}
+    DeleteTypeInfo*:
+      proc(self: ptr ICreateTypeLib2, szName: LPOLESTR): HRESULT {.stdcall.}
+    SetCustData*: proc(
+      self: ptr ICreateTypeLib2, guid: REFGUID, pVarVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    SetHelpStringContext*:
+      proc(self: ptr ICreateTypeLib2, dwHelpStringContext: ULONG): HRESULT {.stdcall.}
+    SetHelpStringDll*:
+      proc(self: ptr ICreateTypeLib2, szFileName: LPOLESTR): HRESULT {.stdcall.}
+
   LPCREATETYPELIB2* = ptr ICreateTypeLib2
   LPDISPATCH* = ptr IDispatch
   IEnumVARIANT* {.pure.} = object
     lpVtbl*: ptr IEnumVARIANTVtbl
+
   IEnumVARIANTVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumVARIANT, celt: ULONG, rgVar: ptr VARIANT, pCeltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumVARIANT, celt: ULONG, rgVar: ptr VARIANT, pCeltFetched: ptr ULONG
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumVARIANT, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumVARIANT): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumVARIANT, ppEnum: ptr ptr IEnumVARIANT): HRESULT {.stdcall.}
+    Clone*:
+      proc(self: ptr IEnumVARIANT, ppEnum: ptr ptr IEnumVARIANT): HRESULT {.stdcall.}
+
   LPENUMVARIANT* = ptr IEnumVARIANT
   LPTYPECOMP* = ptr ITypeComp
   LPTYPEINFO* = ptr ITypeInfo
   ITypeInfo2* {.pure.} = object
     lpVtbl*: ptr ITypeInfo2Vtbl
+
   ITypeInfo2Vtbl* {.pure, inheritable.} = object of ITypeInfoVtbl
-    GetTypeKind*: proc(self: ptr ITypeInfo2, pTypeKind: ptr TYPEKIND): HRESULT {.stdcall.}
-    GetTypeFlags*: proc(self: ptr ITypeInfo2, pTypeFlags: ptr ULONG): HRESULT {.stdcall.}
-    GetFuncIndexOfMemId*: proc(self: ptr ITypeInfo2, memid: MEMBERID, invKind: INVOKEKIND, pFuncIndex: ptr UINT): HRESULT {.stdcall.}
-    GetVarIndexOfMemId*: proc(self: ptr ITypeInfo2, memid: MEMBERID, pVarIndex: ptr UINT): HRESULT {.stdcall.}
-    GetCustData*: proc(self: ptr ITypeInfo2, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.stdcall.}
-    GetFuncCustData*: proc(self: ptr ITypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.stdcall.}
-    GetParamCustData*: proc(self: ptr ITypeInfo2, indexFunc: UINT, indexParam: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.stdcall.}
-    GetVarCustData*: proc(self: ptr ITypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.stdcall.}
-    GetImplTypeCustData*: proc(self: ptr ITypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.stdcall.}
-    GetDocumentation2*: proc(self: ptr ITypeInfo2, memid: MEMBERID, lcid: LCID, pbstrHelpString: ptr BSTR, pdwHelpStringContext: ptr DWORD, pbstrHelpStringDll: ptr BSTR): HRESULT {.stdcall.}
-    GetAllCustData*: proc(self: ptr ITypeInfo2, pCustData: ptr CUSTDATA): HRESULT {.stdcall.}
-    GetAllFuncCustData*: proc(self: ptr ITypeInfo2, index: UINT, pCustData: ptr CUSTDATA): HRESULT {.stdcall.}
-    GetAllParamCustData*: proc(self: ptr ITypeInfo2, indexFunc: UINT, indexParam: UINT, pCustData: ptr CUSTDATA): HRESULT {.stdcall.}
-    GetAllVarCustData*: proc(self: ptr ITypeInfo2, index: UINT, pCustData: ptr CUSTDATA): HRESULT {.stdcall.}
-    GetAllImplTypeCustData*: proc(self: ptr ITypeInfo2, index: UINT, pCustData: ptr CUSTDATA): HRESULT {.stdcall.}
+    GetTypeKind*:
+      proc(self: ptr ITypeInfo2, pTypeKind: ptr TYPEKIND): HRESULT {.stdcall.}
+    GetTypeFlags*:
+      proc(self: ptr ITypeInfo2, pTypeFlags: ptr ULONG): HRESULT {.stdcall.}
+    GetFuncIndexOfMemId*: proc(
+      self: ptr ITypeInfo2, memid: MEMBERID, invKind: INVOKEKIND, pFuncIndex: ptr UINT
+    ): HRESULT {.stdcall.}
+    GetVarIndexOfMemId*: proc(
+      self: ptr ITypeInfo2, memid: MEMBERID, pVarIndex: ptr UINT
+    ): HRESULT {.stdcall.}
+    GetCustData*: proc(
+      self: ptr ITypeInfo2, guid: REFGUID, pVarVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    GetFuncCustData*: proc(
+      self: ptr ITypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    GetParamCustData*: proc(
+      self: ptr ITypeInfo2,
+      indexFunc: UINT,
+      indexParam: UINT,
+      guid: REFGUID,
+      pVarVal: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    GetVarCustData*: proc(
+      self: ptr ITypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    GetImplTypeCustData*: proc(
+      self: ptr ITypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    GetDocumentation2*: proc(
+      self: ptr ITypeInfo2,
+      memid: MEMBERID,
+      lcid: LCID,
+      pbstrHelpString: ptr BSTR,
+      pdwHelpStringContext: ptr DWORD,
+      pbstrHelpStringDll: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    GetAllCustData*:
+      proc(self: ptr ITypeInfo2, pCustData: ptr CUSTDATA): HRESULT {.stdcall.}
+    GetAllFuncCustData*: proc(
+      self: ptr ITypeInfo2, index: UINT, pCustData: ptr CUSTDATA
+    ): HRESULT {.stdcall.}
+    GetAllParamCustData*: proc(
+      self: ptr ITypeInfo2, indexFunc: UINT, indexParam: UINT, pCustData: ptr CUSTDATA
+    ): HRESULT {.stdcall.}
+    GetAllVarCustData*: proc(
+      self: ptr ITypeInfo2, index: UINT, pCustData: ptr CUSTDATA
+    ): HRESULT {.stdcall.}
+    GetAllImplTypeCustData*: proc(
+      self: ptr ITypeInfo2, index: UINT, pCustData: ptr CUSTDATA
+    ): HRESULT {.stdcall.}
+
   LPTYPEINFO2* = ptr ITypeInfo2
   LPTYPELIB* = ptr ITypeLib
   LPTLIBATTR* = ptr TLIBATTR
   ITypeLib2* {.pure.} = object
     lpVtbl*: ptr ITypeLib2Vtbl
+
   ITypeLib2Vtbl* {.pure, inheritable.} = object of ITypeLibVtbl
-    GetCustData*: proc(self: ptr ITypeLib2, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.stdcall.}
-    GetLibStatistics*: proc(self: ptr ITypeLib2, pcUniqueNames: ptr ULONG, pcchUniqueNames: ptr ULONG): HRESULT {.stdcall.}
-    GetDocumentation2*: proc(self: ptr ITypeLib2, index: INT, lcid: LCID, pbstrHelpString: ptr BSTR, pdwHelpStringContext: ptr DWORD, pbstrHelpStringDll: ptr BSTR): HRESULT {.stdcall.}
-    GetAllCustData*: proc(self: ptr ITypeLib2, pCustData: ptr CUSTDATA): HRESULT {.stdcall.}
+    GetCustData*: proc(
+      self: ptr ITypeLib2, guid: REFGUID, pVarVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    GetLibStatistics*: proc(
+      self: ptr ITypeLib2, pcUniqueNames: ptr ULONG, pcchUniqueNames: ptr ULONG
+    ): HRESULT {.stdcall.}
+    GetDocumentation2*: proc(
+      self: ptr ITypeLib2,
+      index: INT,
+      lcid: LCID,
+      pbstrHelpString: ptr BSTR,
+      pdwHelpStringContext: ptr DWORD,
+      pbstrHelpStringDll: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    GetAllCustData*:
+      proc(self: ptr ITypeLib2, pCustData: ptr CUSTDATA): HRESULT {.stdcall.}
+
   LPTYPELIB2* = ptr ITypeLib2
   ITypeChangeEvents* {.pure.} = object
     lpVtbl*: ptr ITypeChangeEventsVtbl
+
   ITypeChangeEventsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RequestTypeChange*: proc(self: ptr ITypeChangeEvents, changeKind: CHANGEKIND, pTInfoBefore: ptr ITypeInfo, pStrName: LPOLESTR, pfCancel: ptr INT): HRESULT {.stdcall.}
-    AfterTypeChange*: proc(self: ptr ITypeChangeEvents, changeKind: CHANGEKIND, pTInfoAfter: ptr ITypeInfo, pStrName: LPOLESTR): HRESULT {.stdcall.}
+    RequestTypeChange*: proc(
+      self: ptr ITypeChangeEvents,
+      changeKind: CHANGEKIND,
+      pTInfoBefore: ptr ITypeInfo,
+      pStrName: LPOLESTR,
+      pfCancel: ptr INT,
+    ): HRESULT {.stdcall.}
+    AfterTypeChange*: proc(
+      self: ptr ITypeChangeEvents,
+      changeKind: CHANGEKIND,
+      pTInfoAfter: ptr ITypeInfo,
+      pStrName: LPOLESTR,
+    ): HRESULT {.stdcall.}
+
   LPTYPECHANGEEVENTS* = ptr ITypeChangeEvents
   IErrorInfo* {.pure.} = object
     lpVtbl*: ptr IErrorInfoVtbl
+
   IErrorInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetGUID*: proc(self: ptr IErrorInfo, pGUID: ptr GUID): HRESULT {.stdcall.}
     GetSource*: proc(self: ptr IErrorInfo, pBstrSource: ptr BSTR): HRESULT {.stdcall.}
-    GetDescription*: proc(self: ptr IErrorInfo, pBstrDescription: ptr BSTR): HRESULT {.stdcall.}
-    GetHelpFile*: proc(self: ptr IErrorInfo, pBstrHelpFile: ptr BSTR): HRESULT {.stdcall.}
-    GetHelpContext*: proc(self: ptr IErrorInfo, pdwHelpContext: ptr DWORD): HRESULT {.stdcall.}
+    GetDescription*:
+      proc(self: ptr IErrorInfo, pBstrDescription: ptr BSTR): HRESULT {.stdcall.}
+    GetHelpFile*:
+      proc(self: ptr IErrorInfo, pBstrHelpFile: ptr BSTR): HRESULT {.stdcall.}
+    GetHelpContext*:
+      proc(self: ptr IErrorInfo, pdwHelpContext: ptr DWORD): HRESULT {.stdcall.}
+
   LPERRORINFO* = ptr IErrorInfo
   ICreateErrorInfo* {.pure.} = object
     lpVtbl*: ptr ICreateErrorInfoVtbl
+
   ICreateErrorInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SetGUID*: proc(self: ptr ICreateErrorInfo, rguid: REFGUID): HRESULT {.stdcall.}
-    SetSource*: proc(self: ptr ICreateErrorInfo, szSource: LPOLESTR): HRESULT {.stdcall.}
-    SetDescription*: proc(self: ptr ICreateErrorInfo, szDescription: LPOLESTR): HRESULT {.stdcall.}
-    SetHelpFile*: proc(self: ptr ICreateErrorInfo, szHelpFile: LPOLESTR): HRESULT {.stdcall.}
-    SetHelpContext*: proc(self: ptr ICreateErrorInfo, dwHelpContext: DWORD): HRESULT {.stdcall.}
+    SetSource*:
+      proc(self: ptr ICreateErrorInfo, szSource: LPOLESTR): HRESULT {.stdcall.}
+    SetDescription*:
+      proc(self: ptr ICreateErrorInfo, szDescription: LPOLESTR): HRESULT {.stdcall.}
+    SetHelpFile*:
+      proc(self: ptr ICreateErrorInfo, szHelpFile: LPOLESTR): HRESULT {.stdcall.}
+    SetHelpContext*:
+      proc(self: ptr ICreateErrorInfo, dwHelpContext: DWORD): HRESULT {.stdcall.}
+
   LPCREATEERRORINFO* = ptr ICreateErrorInfo
   ISupportErrorInfo* {.pure.} = object
     lpVtbl*: ptr ISupportErrorInfoVtbl
+
   ISupportErrorInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    InterfaceSupportsErrorInfo*: proc(self: ptr ISupportErrorInfo, riid: REFIID): HRESULT {.stdcall.}
+    InterfaceSupportsErrorInfo*:
+      proc(self: ptr ISupportErrorInfo, riid: REFIID): HRESULT {.stdcall.}
+
   LPSUPPORTERRORINFO* = ptr ISupportErrorInfo
   LPRECORDINFO* = ptr IRecordInfo
   IErrorLog* {.pure.} = object
     lpVtbl*: ptr IErrorLogVtbl
+
   IErrorLogVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AddError*: proc(self: ptr IErrorLog, pszPropName: LPCOLESTR, pExcepInfo: ptr EXCEPINFO): HRESULT {.stdcall.}
+    AddError*: proc(
+      self: ptr IErrorLog, pszPropName: LPCOLESTR, pExcepInfo: ptr EXCEPINFO
+    ): HRESULT {.stdcall.}
+
   LPERRORLOG* = ptr IErrorLog
   IPropertyBag* {.pure.} = object
     lpVtbl*: ptr IPropertyBagVtbl
+
   IPropertyBagVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Read*: proc(self: ptr IPropertyBag, pszPropName: LPCOLESTR, pVar: ptr VARIANT, pErrorLog: ptr IErrorLog): HRESULT {.stdcall.}
-    Write*: proc(self: ptr IPropertyBag, pszPropName: LPCOLESTR, pVar: ptr VARIANT): HRESULT {.stdcall.}
+    Read*: proc(
+      self: ptr IPropertyBag,
+      pszPropName: LPCOLESTR,
+      pVar: ptr VARIANT,
+      pErrorLog: ptr IErrorLog,
+    ): HRESULT {.stdcall.}
+    Write*: proc(
+      self: ptr IPropertyBag, pszPropName: LPCOLESTR, pVar: ptr VARIANT
+    ): HRESULT {.stdcall.}
+
   LPPROPERTYBAG* = ptr IPropertyBag
   PARAMDATA* {.pure.} = object
     szName*: ptr OLECHAR
     vt*: VARTYPE
+
   LPPARAMDATA* = ptr PARAMDATA
   METHODDATA* {.pure.} = object
     szName*: ptr OLECHAR
@@ -1404,100 +2290,204 @@
     cArgs*: UINT
     wFlags*: WORD
     vtReturn*: VARTYPE
+
   LPMETHODDATA* = ptr METHODDATA
   INTERFACEDATA* {.pure.} = object
     pmethdata*: ptr METHODDATA
     cMembers*: UINT
+
   LPINTERFACEDATA* = ptr INTERFACEDATA
   IOleAdviseHolder* {.pure.} = object
     lpVtbl*: ptr IOleAdviseHolderVtbl
+
   IOleAdviseHolderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Advise*: proc(self: ptr IOleAdviseHolder, pAdvise: ptr IAdviseSink, pdwConnection: ptr DWORD): HRESULT {.stdcall.}
-    Unadvise*: proc(self: ptr IOleAdviseHolder, dwConnection: DWORD): HRESULT {.stdcall.}
-    EnumAdvise*: proc(self: ptr IOleAdviseHolder, ppenumAdvise: ptr ptr IEnumSTATDATA): HRESULT {.stdcall.}
-    SendOnRename*: proc(self: ptr IOleAdviseHolder, pmk: ptr IMoniker): HRESULT {.stdcall.}
+    Advise*: proc(
+      self: ptr IOleAdviseHolder, pAdvise: ptr IAdviseSink, pdwConnection: ptr DWORD
+    ): HRESULT {.stdcall.}
+    Unadvise*:
+      proc(self: ptr IOleAdviseHolder, dwConnection: DWORD): HRESULT {.stdcall.}
+    EnumAdvise*: proc(
+      self: ptr IOleAdviseHolder, ppenumAdvise: ptr ptr IEnumSTATDATA
+    ): HRESULT {.stdcall.}
+    SendOnRename*:
+      proc(self: ptr IOleAdviseHolder, pmk: ptr IMoniker): HRESULT {.stdcall.}
     SendOnSave*: proc(self: ptr IOleAdviseHolder): HRESULT {.stdcall.}
     SendOnClose*: proc(self: ptr IOleAdviseHolder): HRESULT {.stdcall.}
+
   LPOLEADVISEHOLDER* = ptr IOleAdviseHolder
   IOleCache* {.pure.} = object
     lpVtbl*: ptr IOleCacheVtbl
+
   IOleCacheVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Cache*: proc(self: ptr IOleCache, pformatetc: ptr FORMATETC, advf: DWORD, pdwConnection: ptr DWORD): HRESULT {.stdcall.}
+    Cache*: proc(
+      self: ptr IOleCache,
+      pformatetc: ptr FORMATETC,
+      advf: DWORD,
+      pdwConnection: ptr DWORD,
+    ): HRESULT {.stdcall.}
     Uncache*: proc(self: ptr IOleCache, dwConnection: DWORD): HRESULT {.stdcall.}
-    EnumCache*: proc(self: ptr IOleCache, ppenumSTATDATA: ptr ptr IEnumSTATDATA): HRESULT {.stdcall.}
-    InitCache*: proc(self: ptr IOleCache, pDataObject: ptr IDataObject): HRESULT {.stdcall.}
-    SetData*: proc(self: ptr IOleCache, pformatetc: ptr FORMATETC, pmedium: ptr STGMEDIUM, fRelease: WINBOOL): HRESULT {.stdcall.}
+    EnumCache*: proc(
+      self: ptr IOleCache, ppenumSTATDATA: ptr ptr IEnumSTATDATA
+    ): HRESULT {.stdcall.}
+    InitCache*:
+      proc(self: ptr IOleCache, pDataObject: ptr IDataObject): HRESULT {.stdcall.}
+    SetData*: proc(
+      self: ptr IOleCache,
+      pformatetc: ptr FORMATETC,
+      pmedium: ptr STGMEDIUM,
+      fRelease: WINBOOL,
+    ): HRESULT {.stdcall.}
+
   LPOLECACHE* = ptr IOleCache
   IOleCache2* {.pure.} = object
     lpVtbl*: ptr IOleCache2Vtbl
+
   IOleCache2Vtbl* {.pure, inheritable.} = object of IOleCacheVtbl
-    UpdateCache*: proc(self: ptr IOleCache2, pDataObject: LPDATAOBJECT, grfUpdf: DWORD, pReserved: LPVOID): HRESULT {.stdcall.}
-    DiscardCache*: proc(self: ptr IOleCache2, dwDiscardOptions: DWORD): HRESULT {.stdcall.}
+    UpdateCache*: proc(
+      self: ptr IOleCache2, pDataObject: LPDATAOBJECT, grfUpdf: DWORD, pReserved: LPVOID
+    ): HRESULT {.stdcall.}
+    DiscardCache*:
+      proc(self: ptr IOleCache2, dwDiscardOptions: DWORD): HRESULT {.stdcall.}
+
   LPOLECACHE2* = ptr IOleCache2
   IOleCacheControl* {.pure.} = object
     lpVtbl*: ptr IOleCacheControlVtbl
+
   IOleCacheControlVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnRun*: proc(self: ptr IOleCacheControl, pDataObject: LPDATAOBJECT): HRESULT {.stdcall.}
+    OnRun*:
+      proc(self: ptr IOleCacheControl, pDataObject: LPDATAOBJECT): HRESULT {.stdcall.}
     OnStop*: proc(self: ptr IOleCacheControl): HRESULT {.stdcall.}
+
   LPOLECACHECONTROL* = ptr IOleCacheControl
   IParseDisplayName* {.pure.} = object
     lpVtbl*: ptr IParseDisplayNameVtbl
+
   IParseDisplayNameVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ParseDisplayName*: proc(self: ptr IParseDisplayName, pbc: ptr IBindCtx, pszDisplayName: LPOLESTR, pchEaten: ptr ULONG, ppmkOut: ptr ptr IMoniker): HRESULT {.stdcall.}
+    ParseDisplayName*: proc(
+      self: ptr IParseDisplayName,
+      pbc: ptr IBindCtx,
+      pszDisplayName: LPOLESTR,
+      pchEaten: ptr ULONG,
+      ppmkOut: ptr ptr IMoniker,
+    ): HRESULT {.stdcall.}
+
   LPPARSEDISPLAYNAME* = ptr IParseDisplayName
   IOleContainer* {.pure.} = object
     lpVtbl*: ptr IOleContainerVtbl
+
   IOleContainerVtbl* {.pure, inheritable.} = object of IParseDisplayNameVtbl
-    EnumObjects*: proc(self: ptr IOleContainer, grfFlags: DWORD, ppenum: ptr ptr IEnumUnknown): HRESULT {.stdcall.}
+    EnumObjects*: proc(
+      self: ptr IOleContainer, grfFlags: DWORD, ppenum: ptr ptr IEnumUnknown
+    ): HRESULT {.stdcall.}
     LockContainer*: proc(self: ptr IOleContainer, fLock: WINBOOL): HRESULT {.stdcall.}
+
   LPOLECONTAINER* = ptr IOleContainer
   IOleClientSite* {.pure.} = object
     lpVtbl*: ptr IOleClientSiteVtbl
+
   IOleClientSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SaveObject*: proc(self: ptr IOleClientSite): HRESULT {.stdcall.}
-    GetMoniker*: proc(self: ptr IOleClientSite, dwAssign: DWORD, dwWhichMoniker: DWORD, ppmk: ptr ptr IMoniker): HRESULT {.stdcall.}
-    GetContainer*: proc(self: ptr IOleClientSite, ppContainer: ptr ptr IOleContainer): HRESULT {.stdcall.}
+    GetMoniker*: proc(
+      self: ptr IOleClientSite,
+      dwAssign: DWORD,
+      dwWhichMoniker: DWORD,
+      ppmk: ptr ptr IMoniker,
+    ): HRESULT {.stdcall.}
+    GetContainer*: proc(
+      self: ptr IOleClientSite, ppContainer: ptr ptr IOleContainer
+    ): HRESULT {.stdcall.}
     ShowObject*: proc(self: ptr IOleClientSite): HRESULT {.stdcall.}
     OnShowWindow*: proc(self: ptr IOleClientSite, fShow: WINBOOL): HRESULT {.stdcall.}
     RequestNewObjectLayout*: proc(self: ptr IOleClientSite): HRESULT {.stdcall.}
+
   LPOLECLIENTSITE* = ptr IOleClientSite
   OLEVERB* {.pure.} = object
     lVerb*: LONG
     lpszVerbName*: LPOLESTR
     fuFlags*: DWORD
     grfAttribs*: DWORD
+
   LPOLEVERB* = ptr OLEVERB
   IEnumOLEVERB* {.pure.} = object
     lpVtbl*: ptr IEnumOLEVERBVtbl
+
   IEnumOLEVERBVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumOLEVERB, celt: ULONG, rgelt: LPOLEVERB, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumOLEVERB, celt: ULONG, rgelt: LPOLEVERB, pceltFetched: ptr ULONG
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumOLEVERB, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumOLEVERB): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumOLEVERB, ppenum: ptr ptr IEnumOLEVERB): HRESULT {.stdcall.}
+    Clone*:
+      proc(self: ptr IEnumOLEVERB, ppenum: ptr ptr IEnumOLEVERB): HRESULT {.stdcall.}
+
   IOleObject* {.pure.} = object
     lpVtbl*: ptr IOleObjectVtbl
+
   IOleObjectVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetClientSite*: proc(self: ptr IOleObject, pClientSite: ptr IOleClientSite): HRESULT {.stdcall.}
-    GetClientSite*: proc(self: ptr IOleObject, ppClientSite: ptr ptr IOleClientSite): HRESULT {.stdcall.}
-    SetHostNames*: proc(self: ptr IOleObject, szContainerApp: LPCOLESTR, szContainerObj: LPCOLESTR): HRESULT {.stdcall.}
+    SetClientSite*:
+      proc(self: ptr IOleObject, pClientSite: ptr IOleClientSite): HRESULT {.stdcall.}
+    GetClientSite*: proc(
+      self: ptr IOleObject, ppClientSite: ptr ptr IOleClientSite
+    ): HRESULT {.stdcall.}
+    SetHostNames*: proc(
+      self: ptr IOleObject, szContainerApp: LPCOLESTR, szContainerObj: LPCOLESTR
+    ): HRESULT {.stdcall.}
     Close*: proc(self: ptr IOleObject, dwSaveOption: DWORD): HRESULT {.stdcall.}
-    SetMoniker*: proc(self: ptr IOleObject, dwWhichMoniker: DWORD, pmk: ptr IMoniker): HRESULT {.stdcall.}
-    GetMoniker*: proc(self: ptr IOleObject, dwAssign: DWORD, dwWhichMoniker: DWORD, ppmk: ptr ptr IMoniker): HRESULT {.stdcall.}
-    InitFromData*: proc(self: ptr IOleObject, pDataObject: ptr IDataObject, fCreation: WINBOOL, dwReserved: DWORD): HRESULT {.stdcall.}
-    GetClipboardData*: proc(self: ptr IOleObject, dwReserved: DWORD, ppDataObject: ptr ptr IDataObject): HRESULT {.stdcall.}
-    DoVerb*: proc(self: ptr IOleObject, iVerb: LONG, lpmsg: LPMSG, pActiveSite: ptr IOleClientSite, lindex: LONG, hwndParent: HWND, lprcPosRect: LPCRECT): HRESULT {.stdcall.}
-    EnumVerbs*: proc(self: ptr IOleObject, ppEnumOleVerb: ptr ptr IEnumOLEVERB): HRESULT {.stdcall.}
+    SetMoniker*: proc(
+      self: ptr IOleObject, dwWhichMoniker: DWORD, pmk: ptr IMoniker
+    ): HRESULT {.stdcall.}
+    GetMoniker*: proc(
+      self: ptr IOleObject,
+      dwAssign: DWORD,
+      dwWhichMoniker: DWORD,
+      ppmk: ptr ptr IMoniker,
+    ): HRESULT {.stdcall.}
+    InitFromData*: proc(
+      self: ptr IOleObject,
+      pDataObject: ptr IDataObject,
+      fCreation: WINBOOL,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+    GetClipboardData*: proc(
+      self: ptr IOleObject, dwReserved: DWORD, ppDataObject: ptr ptr IDataObject
+    ): HRESULT {.stdcall.}
+    DoVerb*: proc(
+      self: ptr IOleObject,
+      iVerb: LONG,
+      lpmsg: LPMSG,
+      pActiveSite: ptr IOleClientSite,
+      lindex: LONG,
+      hwndParent: HWND,
+      lprcPosRect: LPCRECT,
+    ): HRESULT {.stdcall.}
+    EnumVerbs*: proc(self: ptr IOleObject, ppEnumOleVerb: ptr ptr IEnumOLEVERB): HRESULT {.
+      stdcall
+    .}
     Update*: proc(self: ptr IOleObject): HRESULT {.stdcall.}
     IsUpToDate*: proc(self: ptr IOleObject): HRESULT {.stdcall.}
     GetUserClassID*: proc(self: ptr IOleObject, pClsid: ptr CLSID): HRESULT {.stdcall.}
-    GetUserType*: proc(self: ptr IOleObject, dwFormOfType: DWORD, pszUserType: ptr LPOLESTR): HRESULT {.stdcall.}
-    SetExtent*: proc(self: ptr IOleObject, dwDrawAspect: DWORD, psizel: ptr SIZEL): HRESULT {.stdcall.}
-    GetExtent*: proc(self: ptr IOleObject, dwDrawAspect: DWORD, psizel: ptr SIZEL): HRESULT {.stdcall.}
-    Advise*: proc(self: ptr IOleObject, pAdvSink: ptr IAdviseSink, pdwConnection: ptr DWORD): HRESULT {.stdcall.}
+    GetUserType*: proc(
+      self: ptr IOleObject, dwFormOfType: DWORD, pszUserType: ptr LPOLESTR
+    ): HRESULT {.stdcall.}
+    SetExtent*: proc(
+      self: ptr IOleObject, dwDrawAspect: DWORD, psizel: ptr SIZEL
+    ): HRESULT {.stdcall.}
+    GetExtent*: proc(
+      self: ptr IOleObject, dwDrawAspect: DWORD, psizel: ptr SIZEL
+    ): HRESULT {.stdcall.}
+    Advise*: proc(
+      self: ptr IOleObject, pAdvSink: ptr IAdviseSink, pdwConnection: ptr DWORD
+    ): HRESULT {.stdcall.}
     Unadvise*: proc(self: ptr IOleObject, dwConnection: DWORD): HRESULT {.stdcall.}
-    EnumAdvise*: proc(self: ptr IOleObject, ppenumAdvise: ptr ptr IEnumSTATDATA): HRESULT {.stdcall.}
-    GetMiscStatus*: proc(self: ptr IOleObject, dwAspect: DWORD, pdwStatus: ptr DWORD): HRESULT {.stdcall.}
-    SetColorScheme*: proc(self: ptr IOleObject, pLogpal: ptr LOGPALETTE): HRESULT {.stdcall.}
+    EnumAdvise*: proc(
+      self: ptr IOleObject, ppenumAdvise: ptr ptr IEnumSTATDATA
+    ): HRESULT {.stdcall.}
+    GetMiscStatus*: proc(
+      self: ptr IOleObject, dwAspect: DWORD, pdwStatus: ptr DWORD
+    ): HRESULT {.stdcall.}
+    SetColorScheme*:
+      proc(self: ptr IOleObject, pLogpal: ptr LOGPALETTE): HRESULT {.stdcall.}
+
   LPOLEOBJECT* = ptr IOleObject
   LPOLERENDER* = ptr OLERENDER
   OBJECTDESCRIPTOR* {.pure.} = object
@@ -1509,6 +2499,7 @@
     dwStatus*: DWORD
     dwFullUserTypeName*: DWORD
     dwSrcOfCopy*: DWORD
+
   POBJECTDESCRIPTOR* = ptr OBJECTDESCRIPTOR
   LPOBJECTDESCRIPTOR* = ptr OBJECTDESCRIPTOR
   LINKSRCDESCRIPTOR* = OBJECTDESCRIPTOR
@@ -1516,75 +2507,143 @@
   LPLINKSRCDESCRIPTOR* = ptr OBJECTDESCRIPTOR
   IOleWindow* {.pure.} = object
     lpVtbl*: ptr IOleWindowVtbl
+
   IOleWindowVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetWindow*: proc(self: ptr IOleWindow, phwnd: ptr HWND): HRESULT {.stdcall.}
-    ContextSensitiveHelp*: proc(self: ptr IOleWindow, fEnterMode: WINBOOL): HRESULT {.stdcall.}
+    ContextSensitiveHelp*:
+      proc(self: ptr IOleWindow, fEnterMode: WINBOOL): HRESULT {.stdcall.}
+
   LPOLEWINDOW* = ptr IOleWindow
   IOleLink* {.pure.} = object
     lpVtbl*: ptr IOleLinkVtbl
+
   IOleLinkVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SetUpdateOptions*: proc(self: ptr IOleLink, dwUpdateOpt: DWORD): HRESULT {.stdcall.}
-    GetUpdateOptions*: proc(self: ptr IOleLink, pdwUpdateOpt: ptr DWORD): HRESULT {.stdcall.}
-    SetSourceMoniker*: proc(self: ptr IOleLink, pmk: ptr IMoniker, rclsid: REFCLSID): HRESULT {.stdcall.}
-    GetSourceMoniker*: proc(self: ptr IOleLink, ppmk: ptr ptr IMoniker): HRESULT {.stdcall.}
-    SetSourceDisplayName*: proc(self: ptr IOleLink, pszStatusText: LPCOLESTR): HRESULT {.stdcall.}
-    GetSourceDisplayName*: proc(self: ptr IOleLink, ppszDisplayName: ptr LPOLESTR): HRESULT {.stdcall.}
-    BindToSource*: proc(self: ptr IOleLink, bindflags: DWORD, pbc: ptr IBindCtx): HRESULT {.stdcall.}
+    GetUpdateOptions*:
+      proc(self: ptr IOleLink, pdwUpdateOpt: ptr DWORD): HRESULT {.stdcall.}
+    SetSourceMoniker*:
+      proc(self: ptr IOleLink, pmk: ptr IMoniker, rclsid: REFCLSID): HRESULT {.stdcall.}
+    GetSourceMoniker*:
+      proc(self: ptr IOleLink, ppmk: ptr ptr IMoniker): HRESULT {.stdcall.}
+    SetSourceDisplayName*:
+      proc(self: ptr IOleLink, pszStatusText: LPCOLESTR): HRESULT {.stdcall.}
+    GetSourceDisplayName*:
+      proc(self: ptr IOleLink, ppszDisplayName: ptr LPOLESTR): HRESULT {.stdcall.}
+    BindToSource*:
+      proc(self: ptr IOleLink, bindflags: DWORD, pbc: ptr IBindCtx): HRESULT {.stdcall.}
     BindIfRunning*: proc(self: ptr IOleLink): HRESULT {.stdcall.}
-    GetBoundSource*: proc(self: ptr IOleLink, ppunk: ptr ptr IUnknown): HRESULT {.stdcall.}
+    GetBoundSource*:
+      proc(self: ptr IOleLink, ppunk: ptr ptr IUnknown): HRESULT {.stdcall.}
     UnbindSource*: proc(self: ptr IOleLink): HRESULT {.stdcall.}
     Update*: proc(self: ptr IOleLink, pbc: ptr IBindCtx): HRESULT {.stdcall.}
+
   LPOLELINK* = ptr IOleLink
   LPOLEUPDATE* = ptr OLEUPDATE
   POLEUPDATE* = ptr OLEUPDATE
   IOleItemContainer* {.pure.} = object
     lpVtbl*: ptr IOleItemContainerVtbl
+
   IOleItemContainerVtbl* {.pure, inheritable.} = object of IOleContainerVtbl
-    GetObject*: proc(self: ptr IOleItemContainer, pszItem: LPOLESTR, dwSpeedNeeded: DWORD, pbc: ptr IBindCtx, riid: REFIID, ppvObject: ptr pointer): HRESULT {.stdcall.}
-    GetObjectStorage*: proc(self: ptr IOleItemContainer, pszItem: LPOLESTR, pbc: ptr IBindCtx, riid: REFIID, ppvStorage: ptr pointer): HRESULT {.stdcall.}
-    IsRunning*: proc(self: ptr IOleItemContainer, pszItem: LPOLESTR): HRESULT {.stdcall.}
+    GetObject*: proc(
+      self: ptr IOleItemContainer,
+      pszItem: LPOLESTR,
+      dwSpeedNeeded: DWORD,
+      pbc: ptr IBindCtx,
+      riid: REFIID,
+      ppvObject: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetObjectStorage*: proc(
+      self: ptr IOleItemContainer,
+      pszItem: LPOLESTR,
+      pbc: ptr IBindCtx,
+      riid: REFIID,
+      ppvStorage: ptr pointer,
+    ): HRESULT {.stdcall.}
+    IsRunning*:
+      proc(self: ptr IOleItemContainer, pszItem: LPOLESTR): HRESULT {.stdcall.}
+
   LPOLEITEMCONTAINER* = ptr IOleItemContainer
   LPCBORDERWIDTHS* = LPCRECT
   IOleInPlaceActiveObject* {.pure.} = object
     lpVtbl*: ptr IOleInPlaceActiveObjectVtbl
+
   IOleInPlaceActiveObjectVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
-    TranslateAccelerator*: proc(self: ptr IOleInPlaceActiveObject, lpmsg: LPMSG): HRESULT {.stdcall.}
-    OnFrameWindowActivate*: proc(self: ptr IOleInPlaceActiveObject, fActivate: WINBOOL): HRESULT {.stdcall.}
-    OnDocWindowActivate*: proc(self: ptr IOleInPlaceActiveObject, fActivate: WINBOOL): HRESULT {.stdcall.}
-    ResizeBorder*: proc(self: ptr IOleInPlaceActiveObject, prcBorder: LPCRECT, pUIWindow: ptr IOleInPlaceUIWindow, fFrameWindow: WINBOOL): HRESULT {.stdcall.}
-    EnableModeless*: proc(self: ptr IOleInPlaceActiveObject, fEnable: WINBOOL): HRESULT {.stdcall.}
+    TranslateAccelerator*:
+      proc(self: ptr IOleInPlaceActiveObject, lpmsg: LPMSG): HRESULT {.stdcall.}
+    OnFrameWindowActivate*:
+      proc(self: ptr IOleInPlaceActiveObject, fActivate: WINBOOL): HRESULT {.stdcall.}
+    OnDocWindowActivate*:
+      proc(self: ptr IOleInPlaceActiveObject, fActivate: WINBOOL): HRESULT {.stdcall.}
+    ResizeBorder*: proc(
+      self: ptr IOleInPlaceActiveObject,
+      prcBorder: LPCRECT,
+      pUIWindow: ptr IOleInPlaceUIWindow,
+      fFrameWindow: WINBOOL,
+    ): HRESULT {.stdcall.}
+    EnableModeless*:
+      proc(self: ptr IOleInPlaceActiveObject, fEnable: WINBOOL): HRESULT {.stdcall.}
+
   IOleInPlaceUIWindow* {.pure.} = object
     lpVtbl*: ptr IOleInPlaceUIWindowVtbl
+
   IOleInPlaceUIWindowVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
-    GetBorder*: proc(self: ptr IOleInPlaceUIWindow, lprectBorder: LPRECT): HRESULT {.stdcall.}
-    RequestBorderSpace*: proc(self: ptr IOleInPlaceUIWindow, pborderwidths: LPCBORDERWIDTHS): HRESULT {.stdcall.}
-    SetBorderSpace*: proc(self: ptr IOleInPlaceUIWindow, pborderwidths: LPCBORDERWIDTHS): HRESULT {.stdcall.}
-    SetActiveObject*: proc(self: ptr IOleInPlaceUIWindow, pActiveObject: ptr IOleInPlaceActiveObject, pszObjName: LPCOLESTR): HRESULT {.stdcall.}
+    GetBorder*:
+      proc(self: ptr IOleInPlaceUIWindow, lprectBorder: LPRECT): HRESULT {.stdcall.}
+    RequestBorderSpace*: proc(
+      self: ptr IOleInPlaceUIWindow, pborderwidths: LPCBORDERWIDTHS
+    ): HRESULT {.stdcall.}
+    SetBorderSpace*: proc(
+      self: ptr IOleInPlaceUIWindow, pborderwidths: LPCBORDERWIDTHS
+    ): HRESULT {.stdcall.}
+    SetActiveObject*: proc(
+      self: ptr IOleInPlaceUIWindow,
+      pActiveObject: ptr IOleInPlaceActiveObject,
+      pszObjName: LPCOLESTR,
+    ): HRESULT {.stdcall.}
+
   LPOLEINPLACEUIWINDOW* = ptr IOleInPlaceUIWindow
   BORDERWIDTHS* = RECT
   LPBORDERWIDTHS* = LPRECT
   LPOLEINPLACEACTIVEOBJECT* = ptr IOleInPlaceActiveObject
   OLEMENUGROUPWIDTHS* {.pure.} = object
     width*: array[6, LONG]
+
   LPOLEMENUGROUPWIDTHS* = ptr OLEMENUGROUPWIDTHS
   HOLEMENU* = HGLOBAL
   IOleInPlaceFrame* {.pure.} = object
     lpVtbl*: ptr IOleInPlaceFrameVtbl
+
   IOleInPlaceFrameVtbl* {.pure, inheritable.} = object of IOleInPlaceUIWindowVtbl
-    InsertMenus*: proc(self: ptr IOleInPlaceFrame, hmenuShared: HMENU, lpMenuWidths: LPOLEMENUGROUPWIDTHS): HRESULT {.stdcall.}
-    SetMenu*: proc(self: ptr IOleInPlaceFrame, hmenuShared: HMENU, holemenu: HOLEMENU, hwndActiveObject: HWND): HRESULT {.stdcall.}
-    RemoveMenus*: proc(self: ptr IOleInPlaceFrame, hmenuShared: HMENU): HRESULT {.stdcall.}
-    SetStatusText*: proc(self: ptr IOleInPlaceFrame, pszStatusText: LPCOLESTR): HRESULT {.stdcall.}
-    EnableModeless*: proc(self: ptr IOleInPlaceFrame, fEnable: WINBOOL): HRESULT {.stdcall.}
-    TranslateAccelerator*: proc(self: ptr IOleInPlaceFrame, lpmsg: LPMSG, wID: WORD): HRESULT {.stdcall.}
+    InsertMenus*: proc(
+      self: ptr IOleInPlaceFrame, hmenuShared: HMENU, lpMenuWidths: LPOLEMENUGROUPWIDTHS
+    ): HRESULT {.stdcall.}
+    SetMenu*: proc(
+      self: ptr IOleInPlaceFrame,
+      hmenuShared: HMENU,
+      holemenu: HOLEMENU,
+      hwndActiveObject: HWND,
+    ): HRESULT {.stdcall.}
+    RemoveMenus*:
+      proc(self: ptr IOleInPlaceFrame, hmenuShared: HMENU): HRESULT {.stdcall.}
+    SetStatusText*:
+      proc(self: ptr IOleInPlaceFrame, pszStatusText: LPCOLESTR): HRESULT {.stdcall.}
+    EnableModeless*:
+      proc(self: ptr IOleInPlaceFrame, fEnable: WINBOOL): HRESULT {.stdcall.}
+    TranslateAccelerator*:
+      proc(self: ptr IOleInPlaceFrame, lpmsg: LPMSG, wID: WORD): HRESULT {.stdcall.}
+
   LPOLEINPLACEFRAME* = ptr IOleInPlaceFrame
   IOleInPlaceObject* {.pure.} = object
     lpVtbl*: ptr IOleInPlaceObjectVtbl
+
   IOleInPlaceObjectVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
     InPlaceDeactivate*: proc(self: ptr IOleInPlaceObject): HRESULT {.stdcall.}
     UIDeactivate*: proc(self: ptr IOleInPlaceObject): HRESULT {.stdcall.}
-    SetObjectRects*: proc(self: ptr IOleInPlaceObject, lprcPosRect: LPCRECT, lprcClipRect: LPCRECT): HRESULT {.stdcall.}
+    SetObjectRects*: proc(
+      self: ptr IOleInPlaceObject, lprcPosRect: LPCRECT, lprcClipRect: LPCRECT
+    ): HRESULT {.stdcall.}
     ReactivateAndUndo*: proc(self: ptr IOleInPlaceObject): HRESULT {.stdcall.}
+
   LPOLEINPLACEOBJECT* = ptr IOleInPlaceObject
   OLEINPLACEFRAMEINFO* {.pure.} = object
     cb*: UINT
@@ -1592,67 +2651,146 @@
     hwndFrame*: HWND
     haccel*: HACCEL
     cAccelEntries*: UINT
+
   LPOLEINPLACEFRAMEINFO* = ptr OLEINPLACEFRAMEINFO
   IOleInPlaceSite* {.pure.} = object
     lpVtbl*: ptr IOleInPlaceSiteVtbl
+
   IOleInPlaceSiteVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
     CanInPlaceActivate*: proc(self: ptr IOleInPlaceSite): HRESULT {.stdcall.}
     OnInPlaceActivate*: proc(self: ptr IOleInPlaceSite): HRESULT {.stdcall.}
     OnUIActivate*: proc(self: ptr IOleInPlaceSite): HRESULT {.stdcall.}
-    GetWindowContext*: proc(self: ptr IOleInPlaceSite, ppFrame: ptr ptr IOleInPlaceFrame, ppDoc: ptr ptr IOleInPlaceUIWindow, lprcPosRect: LPRECT, lprcClipRect: LPRECT, lpFrameInfo: LPOLEINPLACEFRAMEINFO): HRESULT {.stdcall.}
+    GetWindowContext*: proc(
+      self: ptr IOleInPlaceSite,
+      ppFrame: ptr ptr IOleInPlaceFrame,
+      ppDoc: ptr ptr IOleInPlaceUIWindow,
+      lprcPosRect: LPRECT,
+      lprcClipRect: LPRECT,
+      lpFrameInfo: LPOLEINPLACEFRAMEINFO,
+    ): HRESULT {.stdcall.}
     Scroll*: proc(self: ptr IOleInPlaceSite, scrollExtant: SIZE): HRESULT {.stdcall.}
-    OnUIDeactivate*: proc(self: ptr IOleInPlaceSite, fUndoable: WINBOOL): HRESULT {.stdcall.}
+    OnUIDeactivate*:
+      proc(self: ptr IOleInPlaceSite, fUndoable: WINBOOL): HRESULT {.stdcall.}
     OnInPlaceDeactivate*: proc(self: ptr IOleInPlaceSite): HRESULT {.stdcall.}
     DiscardUndoState*: proc(self: ptr IOleInPlaceSite): HRESULT {.stdcall.}
     DeactivateAndUndo*: proc(self: ptr IOleInPlaceSite): HRESULT {.stdcall.}
-    OnPosRectChange*: proc(self: ptr IOleInPlaceSite, lprcPosRect: LPCRECT): HRESULT {.stdcall.}
+    OnPosRectChange*:
+      proc(self: ptr IOleInPlaceSite, lprcPosRect: LPCRECT): HRESULT {.stdcall.}
+
   LPOLEINPLACESITE* = ptr IOleInPlaceSite
   IViewObject* {.pure.} = object
     lpVtbl*: ptr IViewObjectVtbl
+
   IViewObjectVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Draw*: proc(self: ptr IViewObject, dwDrawAspect: DWORD, lindex: LONG, pvAspect: pointer, ptd: ptr DVTARGETDEVICE, hdcTargetDev: HDC, hdcDraw: HDC, lprcBounds: LPCRECTL, lprcWBounds: LPCRECTL, pfnContinue: proc (dwContinue: ULONG_PTR): WINBOOL {.stdcall.}, dwContinue: ULONG_PTR): HRESULT {.stdcall.}
-    GetColorSet*: proc(self: ptr IViewObject, dwDrawAspect: DWORD, lindex: LONG, pvAspect: pointer, ptd: ptr DVTARGETDEVICE, hicTargetDev: HDC, ppColorSet: ptr ptr LOGPALETTE): HRESULT {.stdcall.}
-    Freeze*: proc(self: ptr IViewObject, dwDrawAspect: DWORD, lindex: LONG, pvAspect: pointer, pdwFreeze: ptr DWORD): HRESULT {.stdcall.}
+    Draw*: proc(
+      self: ptr IViewObject,
+      dwDrawAspect: DWORD,
+      lindex: LONG,
+      pvAspect: pointer,
+      ptd: ptr DVTARGETDEVICE,
+      hdcTargetDev: HDC,
+      hdcDraw: HDC,
+      lprcBounds: LPCRECTL,
+      lprcWBounds: LPCRECTL,
+      pfnContinue: proc(dwContinue: ULONG_PTR): WINBOOL {.stdcall.},
+      dwContinue: ULONG_PTR,
+    ): HRESULT {.stdcall.}
+    GetColorSet*: proc(
+      self: ptr IViewObject,
+      dwDrawAspect: DWORD,
+      lindex: LONG,
+      pvAspect: pointer,
+      ptd: ptr DVTARGETDEVICE,
+      hicTargetDev: HDC,
+      ppColorSet: ptr ptr LOGPALETTE,
+    ): HRESULT {.stdcall.}
+    Freeze*: proc(
+      self: ptr IViewObject,
+      dwDrawAspect: DWORD,
+      lindex: LONG,
+      pvAspect: pointer,
+      pdwFreeze: ptr DWORD,
+    ): HRESULT {.stdcall.}
     Unfreeze*: proc(self: ptr IViewObject, dwFreeze: DWORD): HRESULT {.stdcall.}
-    SetAdvise*: proc(self: ptr IViewObject, aspects: DWORD, advf: DWORD, pAdvSink: ptr IAdviseSink): HRESULT {.stdcall.}
-    GetAdvise*: proc(self: ptr IViewObject, pAspects: ptr DWORD, pAdvf: ptr DWORD, ppAdvSink: ptr ptr IAdviseSink): HRESULT {.stdcall.}
+    SetAdvise*: proc(
+      self: ptr IViewObject, aspects: DWORD, advf: DWORD, pAdvSink: ptr IAdviseSink
+    ): HRESULT {.stdcall.}
+    GetAdvise*: proc(
+      self: ptr IViewObject,
+      pAspects: ptr DWORD,
+      pAdvf: ptr DWORD,
+      ppAdvSink: ptr ptr IAdviseSink,
+    ): HRESULT {.stdcall.}
+
   LPVIEWOBJECT* = ptr IViewObject
   IViewObject2* {.pure.} = object
     lpVtbl*: ptr IViewObject2Vtbl
+
   IViewObject2Vtbl* {.pure, inheritable.} = object of IViewObjectVtbl
-    GetExtent*: proc(self: ptr IViewObject2, dwDrawAspect: DWORD, lindex: LONG, ptd: ptr DVTARGETDEVICE, lpsizel: LPSIZEL): HRESULT {.stdcall.}
+    GetExtent*: proc(
+      self: ptr IViewObject2,
+      dwDrawAspect: DWORD,
+      lindex: LONG,
+      ptd: ptr DVTARGETDEVICE,
+      lpsizel: LPSIZEL,
+    ): HRESULT {.stdcall.}
+
   LPVIEWOBJECT2* = ptr IViewObject2
   IDropSource* {.pure.} = object
     lpVtbl*: ptr IDropSourceVtbl
+
   IDropSourceVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QueryContinueDrag*: proc(self: ptr IDropSource, fEscapePressed: WINBOOL, grfKeyState: DWORD): HRESULT {.stdcall.}
+    QueryContinueDrag*: proc(
+      self: ptr IDropSource, fEscapePressed: WINBOOL, grfKeyState: DWORD
+    ): HRESULT {.stdcall.}
     GiveFeedback*: proc(self: ptr IDropSource, dwEffect: DWORD): HRESULT {.stdcall.}
+
   LPDROPSOURCE* = ptr IDropSource
   IDropTarget* {.pure.} = object
     lpVtbl*: ptr IDropTargetVtbl
+
   IDropTargetVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    DragEnter*: proc(self: ptr IDropTarget, pDataObj: ptr IDataObject, grfKeyState: DWORD, pt: POINTL, pdwEffect: ptr DWORD): HRESULT {.stdcall.}
-    DragOver*: proc(self: ptr IDropTarget, grfKeyState: DWORD, pt: POINTL, pdwEffect: ptr DWORD): HRESULT {.stdcall.}
+    DragEnter*: proc(
+      self: ptr IDropTarget,
+      pDataObj: ptr IDataObject,
+      grfKeyState: DWORD,
+      pt: POINTL,
+      pdwEffect: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    DragOver*: proc(
+      self: ptr IDropTarget, grfKeyState: DWORD, pt: POINTL, pdwEffect: ptr DWORD
+    ): HRESULT {.stdcall.}
     DragLeave*: proc(self: ptr IDropTarget): HRESULT {.stdcall.}
-    Drop*: proc(self: ptr IDropTarget, pDataObj: ptr IDataObject, grfKeyState: DWORD, pt: POINTL, pdwEffect: ptr DWORD): HRESULT {.stdcall.}
+    Drop*: proc(
+      self: ptr IDropTarget,
+      pDataObj: ptr IDataObject,
+      grfKeyState: DWORD,
+      pt: POINTL,
+      pdwEffect: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   LPDROPTARGET* = ptr IDropTarget
   LPENUMOLEVERB* = ptr IEnumOLEVERB
   OLESTREAMVTBL* {.pure.} = object
     Get*: proc(P1: LPOLESTREAM, P2: pointer, P3: DWORD): DWORD {.stdcall.}
     Put*: proc(P1: LPOLESTREAM, P2: pointer, P3: DWORD): DWORD {.stdcall.}
+
   LPOLESTREAMVTBL* = ptr OLESTREAMVTBL
   OLESTREAM* {.pure.} = object
     lpstbl*: LPOLESTREAMVTBL
+
   LPOLESTREAM* = ptr OLESTREAM
   PSCODE* = ptr SCODE
   UP_BYTE_BLOB* = ptr BYTE_BLOB
   WORD_BLOB* {.pure.} = object
     clSize*: ULONG
     asData*: array[1, uint16]
+
   UP_WORD_BLOB* = ptr WORD_BLOB
   DWORD_BLOB* {.pure.} = object
     clSize*: ULONG
     alData*: array[1, ULONG]
+
   UP_DWORD_BLOB* = ptr DWORD_BLOB
   UP_FLAGGED_BYTE_BLOB* = ptr FLAGGED_BYTE_BLOB
   UP_FLAGGED_WORD_BLOB* = ptr FLAGGED_WORD_BLOB
@@ -1660,40 +2798,78 @@
     dwServerPid*: DWORD
     dwServerTid*: DWORD
     ui64ServerAddress*: UINT64
+
   PServerInformation* = ptr ServerInformation
   IServiceProvider* {.pure.} = object
     lpVtbl*: ptr IServiceProviderVtbl
+
   IServiceProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QueryService*: proc(self: ptr IServiceProvider, guidService: REFGUID, riid: REFIID, ppvObject: ptr pointer): HRESULT {.stdcall.}
+    QueryService*: proc(
+      self: ptr IServiceProvider,
+      guidService: REFGUID,
+      riid: REFIID,
+      ppvObject: ptr pointer,
+    ): HRESULT {.stdcall.}
+
   LPSERVICEPROVIDER* = ptr IServiceProvider
   IPersistMoniker* {.pure.} = object
     lpVtbl*: ptr IPersistMonikerVtbl
+
   IPersistMonikerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetClassID*: proc(self: ptr IPersistMoniker, pClassID: ptr CLSID): HRESULT {.stdcall.}
+    GetClassID*:
+      proc(self: ptr IPersistMoniker, pClassID: ptr CLSID): HRESULT {.stdcall.}
     IsDirty*: proc(self: ptr IPersistMoniker): HRESULT {.stdcall.}
-    Load*: proc(self: ptr IPersistMoniker, fFullyAvailable: WINBOOL, pimkName: ptr IMoniker, pibc: LPBC, grfMode: DWORD): HRESULT {.stdcall.}
-    Save*: proc(self: ptr IPersistMoniker, pimkName: ptr IMoniker, pbc: LPBC, fRemember: WINBOOL): HRESULT {.stdcall.}
-    SaveCompleted*: proc(self: ptr IPersistMoniker, pimkName: ptr IMoniker, pibc: LPBC): HRESULT {.stdcall.}
-    GetCurMoniker*: proc(self: ptr IPersistMoniker, ppimkName: ptr ptr IMoniker): HRESULT {.stdcall.}
+    Load*: proc(
+      self: ptr IPersistMoniker,
+      fFullyAvailable: WINBOOL,
+      pimkName: ptr IMoniker,
+      pibc: LPBC,
+      grfMode: DWORD,
+    ): HRESULT {.stdcall.}
+    Save*: proc(
+      self: ptr IPersistMoniker, pimkName: ptr IMoniker, pbc: LPBC, fRemember: WINBOOL
+    ): HRESULT {.stdcall.}
+    SaveCompleted*: proc(
+      self: ptr IPersistMoniker, pimkName: ptr IMoniker, pibc: LPBC
+    ): HRESULT {.stdcall.}
+    GetCurMoniker*:
+      proc(self: ptr IPersistMoniker, ppimkName: ptr ptr IMoniker): HRESULT {.stdcall.}
+
   LPPERSISTMONIKER* = ptr IPersistMoniker
   IMonikerProp* {.pure.} = object
     lpVtbl*: ptr IMonikerPropVtbl
+
   IMonikerPropVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    PutProperty*: proc(self: ptr IMonikerProp, mkp: MONIKERPROPERTY, val: LPCWSTR): HRESULT {.stdcall.}
+    PutProperty*: proc(
+      self: ptr IMonikerProp, mkp: MONIKERPROPERTY, val: LPCWSTR
+    ): HRESULT {.stdcall.}
+
   LPMONIKERPROP* = ptr IMonikerProp
   IBinding* {.pure.} = object
     lpVtbl*: ptr IBindingVtbl
+
   IBindingVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Abort*: proc(self: ptr IBinding): HRESULT {.stdcall.}
     Suspend*: proc(self: ptr IBinding): HRESULT {.stdcall.}
     Resume*: proc(self: ptr IBinding): HRESULT {.stdcall.}
     SetPriority*: proc(self: ptr IBinding, nPriority: LONG): HRESULT {.stdcall.}
     GetPriority*: proc(self: ptr IBinding, pnPriority: ptr LONG): HRESULT {.stdcall.}
-    GetBindResult*: proc(self: ptr IBinding, pclsidProtocol: ptr CLSID, pdwResult: ptr DWORD, pszResult: ptr LPOLESTR, pdwReserved: ptr DWORD): HRESULT {.stdcall.}
+    GetBindResult*: proc(
+      self: ptr IBinding,
+      pclsidProtocol: ptr CLSID,
+      pdwResult: ptr DWORD,
+      pszResult: ptr LPOLESTR,
+      pdwReserved: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   IBindProtocol* {.pure.} = object
     lpVtbl*: ptr IBindProtocolVtbl
+
   IBindProtocolVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateBinding*: proc(self: ptr IBindProtocol, szUrl: LPCWSTR, pbc: ptr IBindCtx, ppb: ptr ptr IBinding): HRESULT {.stdcall.}
+    CreateBinding*: proc(
+      self: ptr IBindProtocol, szUrl: LPCWSTR, pbc: ptr IBindCtx, ppb: ptr ptr IBinding
+    ): HRESULT {.stdcall.}
+
   LPBINDPROTOCOL* = ptr IBindProtocol
   LPBINDING* = ptr IBinding
   BINDINFO* {.pure.} = object
@@ -1711,22 +2887,48 @@
     iid*: IID
     pUnk*: ptr IUnknown
     dwReserved*: DWORD
+
   IBindStatusCallback* {.pure.} = object
     lpVtbl*: ptr IBindStatusCallbackVtbl
+
   IBindStatusCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnStartBinding*: proc(self: ptr IBindStatusCallback, dwReserved: DWORD, pib: ptr IBinding): HRESULT {.stdcall.}
-    GetPriority*: proc(self: ptr IBindStatusCallback, pnPriority: ptr LONG): HRESULT {.stdcall.}
-    OnLowResource*: proc(self: ptr IBindStatusCallback, reserved: DWORD): HRESULT {.stdcall.}
-    OnProgress*: proc(self: ptr IBindStatusCallback, ulProgress: ULONG, ulProgressMax: ULONG, ulStatusCode: ULONG, szStatusText: LPCWSTR): HRESULT {.stdcall.}
-    OnStopBinding*: proc(self: ptr IBindStatusCallback, hresult: HRESULT, szError: LPCWSTR): HRESULT {.stdcall.}
-    GetBindInfo*: proc(self: ptr IBindStatusCallback, grfBINDF: ptr DWORD, pbindinfo: ptr BINDINFO): HRESULT {.stdcall.}
-    OnDataAvailable*: proc(self: ptr IBindStatusCallback, grfBSCF: DWORD, dwSize: DWORD, pformatetc: ptr FORMATETC, pstgmed: ptr STGMEDIUM): HRESULT {.stdcall.}
-    OnObjectAvailable*: proc(self: ptr IBindStatusCallback, riid: REFIID, punk: ptr IUnknown): HRESULT {.stdcall.}
+    OnStartBinding*: proc(
+      self: ptr IBindStatusCallback, dwReserved: DWORD, pib: ptr IBinding
+    ): HRESULT {.stdcall.}
+    GetPriority*:
+      proc(self: ptr IBindStatusCallback, pnPriority: ptr LONG): HRESULT {.stdcall.}
+    OnLowResource*:
+      proc(self: ptr IBindStatusCallback, reserved: DWORD): HRESULT {.stdcall.}
+    OnProgress*: proc(
+      self: ptr IBindStatusCallback,
+      ulProgress: ULONG,
+      ulProgressMax: ULONG,
+      ulStatusCode: ULONG,
+      szStatusText: LPCWSTR,
+    ): HRESULT {.stdcall.}
+    OnStopBinding*: proc(
+      self: ptr IBindStatusCallback, hresult: HRESULT, szError: LPCWSTR
+    ): HRESULT {.stdcall.}
+    GetBindInfo*: proc(
+      self: ptr IBindStatusCallback, grfBINDF: ptr DWORD, pbindinfo: ptr BINDINFO
+    ): HRESULT {.stdcall.}
+    OnDataAvailable*: proc(
+      self: ptr IBindStatusCallback,
+      grfBSCF: DWORD,
+      dwSize: DWORD,
+      pformatetc: ptr FORMATETC,
+      pstgmed: ptr STGMEDIUM,
+    ): HRESULT {.stdcall.}
+    OnObjectAvailable*: proc(
+      self: ptr IBindStatusCallback, riid: REFIID, punk: ptr IUnknown
+    ): HRESULT {.stdcall.}
+
   LPBINDSTATUSCALLBACK* = ptr IBindStatusCallback
   REMSECURITY_ATTRIBUTES* {.pure.} = object
     nLength*: DWORD
     lpSecurityDescriptor*: DWORD
     bInheritHandle*: WINBOOL
+
   PREMSECURITY_ATTRIBUTES* = ptr REMSECURITY_ATTRIBUTES
   LPREMSECURITY_ATTRIBUTES* = ptr REMSECURITY_ATTRIBUTES
   RemFORMATETC* {.pure.} = object
@@ -1735,172 +2937,438 @@
     dwAspect*: DWORD
     lindex*: LONG
     tymed*: DWORD
+
   LPREMFORMATETC* = ptr RemFORMATETC
   IBindStatusCallbackEx* {.pure.} = object
     lpVtbl*: ptr IBindStatusCallbackExVtbl
+
   IBindStatusCallbackExVtbl* {.pure, inheritable.} = object of IBindStatusCallbackVtbl
-    GetBindInfoEx*: proc(self: ptr IBindStatusCallbackEx, grfBINDF: ptr DWORD, pbindinfo: ptr BINDINFO, grfBINDF2: ptr DWORD, pdwReserved: ptr DWORD): HRESULT {.stdcall.}
+    GetBindInfoEx*: proc(
+      self: ptr IBindStatusCallbackEx,
+      grfBINDF: ptr DWORD,
+      pbindinfo: ptr BINDINFO,
+      grfBINDF2: ptr DWORD,
+      pdwReserved: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   LPBINDSTATUSCALLBACKEX* = ptr IBindStatusCallbackEx
   IAuthenticate* {.pure.} = object
     lpVtbl*: ptr IAuthenticateVtbl
+
   IAuthenticateVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Authenticate*: proc(self: ptr IAuthenticate, phwnd: ptr HWND, pszUsername: ptr LPWSTR, pszPassword: ptr LPWSTR): HRESULT {.stdcall.}
+    Authenticate*: proc(
+      self: ptr IAuthenticate,
+      phwnd: ptr HWND,
+      pszUsername: ptr LPWSTR,
+      pszPassword: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+
   LPAUTHENTICATION* = ptr IAuthenticate
   AUTHENTICATEINFO* {.pure.} = object
     dwFlags*: DWORD
     dwReserved*: DWORD
+
   IAuthenticateEx* {.pure.} = object
     lpVtbl*: ptr IAuthenticateExVtbl
+
   IAuthenticateExVtbl* {.pure, inheritable.} = object of IAuthenticateVtbl
-    AuthenticateEx*: proc(self: ptr IAuthenticateEx, phwnd: ptr HWND, pszUsername: ptr LPWSTR, pszPassword: ptr LPWSTR, pauthinfo: ptr AUTHENTICATEINFO): HRESULT {.stdcall.}
+    AuthenticateEx*: proc(
+      self: ptr IAuthenticateEx,
+      phwnd: ptr HWND,
+      pszUsername: ptr LPWSTR,
+      pszPassword: ptr LPWSTR,
+      pauthinfo: ptr AUTHENTICATEINFO,
+    ): HRESULT {.stdcall.}
+
   LPAUTHENTICATIONEX* = ptr IAuthenticateEx
   IHttpNegotiate* {.pure.} = object
     lpVtbl*: ptr IHttpNegotiateVtbl
+
   IHttpNegotiateVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    BeginningTransaction*: proc(self: ptr IHttpNegotiate, szURL: LPCWSTR, szHeaders: LPCWSTR, dwReserved: DWORD, pszAdditionalHeaders: ptr LPWSTR): HRESULT {.stdcall.}
-    OnResponse*: proc(self: ptr IHttpNegotiate, dwResponseCode: DWORD, szResponseHeaders: LPCWSTR, szRequestHeaders: LPCWSTR, pszAdditionalRequestHeaders: ptr LPWSTR): HRESULT {.stdcall.}
+    BeginningTransaction*: proc(
+      self: ptr IHttpNegotiate,
+      szURL: LPCWSTR,
+      szHeaders: LPCWSTR,
+      dwReserved: DWORD,
+      pszAdditionalHeaders: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+    OnResponse*: proc(
+      self: ptr IHttpNegotiate,
+      dwResponseCode: DWORD,
+      szResponseHeaders: LPCWSTR,
+      szRequestHeaders: LPCWSTR,
+      pszAdditionalRequestHeaders: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+
   LPHTTPNEGOTIATE* = ptr IHttpNegotiate
   IHttpNegotiate2* {.pure.} = object
     lpVtbl*: ptr IHttpNegotiate2Vtbl
+
   IHttpNegotiate2Vtbl* {.pure, inheritable.} = object of IHttpNegotiateVtbl
-    GetRootSecurityId*: proc(self: ptr IHttpNegotiate2, pbSecurityId: ptr BYTE, pcbSecurityId: ptr DWORD, dwReserved: DWORD_PTR): HRESULT {.stdcall.}
+    GetRootSecurityId*: proc(
+      self: ptr IHttpNegotiate2,
+      pbSecurityId: ptr BYTE,
+      pcbSecurityId: ptr DWORD,
+      dwReserved: DWORD_PTR,
+    ): HRESULT {.stdcall.}
+
   LPHTTPNEGOTIATE2* = ptr IHttpNegotiate2
   IHttpNegotiate3* {.pure.} = object
     lpVtbl*: ptr IHttpNegotiate3Vtbl
+
   IHttpNegotiate3Vtbl* {.pure, inheritable.} = object of IHttpNegotiate2Vtbl
-    GetSerializedClientCertContext*: proc(self: ptr IHttpNegotiate3, ppbCert: ptr ptr BYTE, pcbCert: ptr DWORD): HRESULT {.stdcall.}
+    GetSerializedClientCertContext*: proc(
+      self: ptr IHttpNegotiate3, ppbCert: ptr ptr BYTE, pcbCert: ptr DWORD
+    ): HRESULT {.stdcall.}
+
   LPHTTPNEGOTIATE3* = ptr IHttpNegotiate3
   IWinInetFileStream* {.pure.} = object
     lpVtbl*: ptr IWinInetFileStreamVtbl
+
   IWinInetFileStreamVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetHandleForUnlock*: proc(self: ptr IWinInetFileStream, hWinInetLockHandle: DWORD_PTR, dwReserved: DWORD_PTR): HRESULT {.stdcall.}
-    SetDeleteFile*: proc(self: ptr IWinInetFileStream, dwReserved: DWORD_PTR): HRESULT {.stdcall.}
+    SetHandleForUnlock*: proc(
+      self: ptr IWinInetFileStream, hWinInetLockHandle: DWORD_PTR, dwReserved: DWORD_PTR
+    ): HRESULT {.stdcall.}
+    SetDeleteFile*:
+      proc(self: ptr IWinInetFileStream, dwReserved: DWORD_PTR): HRESULT {.stdcall.}
+
   LPWININETFILESTREAM* = ptr IWinInetFileStream
   IWindowForBindingUI* {.pure.} = object
     lpVtbl*: ptr IWindowForBindingUIVtbl
+
   IWindowForBindingUIVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetWindow*: proc(self: ptr IWindowForBindingUI, rguidReason: REFGUID, phwnd: ptr HWND): HRESULT {.stdcall.}
+    GetWindow*: proc(
+      self: ptr IWindowForBindingUI, rguidReason: REFGUID, phwnd: ptr HWND
+    ): HRESULT {.stdcall.}
+
   LPWINDOWFORBINDINGUI* = ptr IWindowForBindingUI
   ICodeInstall* {.pure.} = object
     lpVtbl*: ptr ICodeInstallVtbl
+
   ICodeInstallVtbl* {.pure, inheritable.} = object of IWindowForBindingUIVtbl
-    OnCodeInstallProblem*: proc(self: ptr ICodeInstall, ulStatusCode: ULONG, szDestination: LPCWSTR, szSource: LPCWSTR, dwReserved: DWORD): HRESULT {.stdcall.}
+    OnCodeInstallProblem*: proc(
+      self: ptr ICodeInstall,
+      ulStatusCode: ULONG,
+      szDestination: LPCWSTR,
+      szSource: LPCWSTR,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+
   LPCODEINSTALL* = ptr ICodeInstall
   IWinInetInfo* {.pure.} = object
     lpVtbl*: ptr IWinInetInfoVtbl
+
   IWinInetInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QueryOption*: proc(self: ptr IWinInetInfo, dwOption: DWORD, pBuffer: LPVOID, pcbBuf: ptr DWORD): HRESULT {.stdcall.}
+    QueryOption*: proc(
+      self: ptr IWinInetInfo, dwOption: DWORD, pBuffer: LPVOID, pcbBuf: ptr DWORD
+    ): HRESULT {.stdcall.}
+
   LPWININETINFO* = ptr IWinInetInfo
   IHttpSecurity* {.pure.} = object
     lpVtbl*: ptr IHttpSecurityVtbl
+
   IHttpSecurityVtbl* {.pure, inheritable.} = object of IWindowForBindingUIVtbl
-    OnSecurityProblem*: proc(self: ptr IHttpSecurity, dwProblem: DWORD): HRESULT {.stdcall.}
+    OnSecurityProblem*:
+      proc(self: ptr IHttpSecurity, dwProblem: DWORD): HRESULT {.stdcall.}
+
   LPHTTPSECURITY* = ptr IHttpSecurity
   IWinInetHttpInfo* {.pure.} = object
     lpVtbl*: ptr IWinInetHttpInfoVtbl
+
   IWinInetHttpInfoVtbl* {.pure, inheritable.} = object of IWinInetInfoVtbl
-    QueryInfo*: proc(self: ptr IWinInetHttpInfo, dwOption: DWORD, pBuffer: LPVOID, pcbBuf: ptr DWORD, pdwFlags: ptr DWORD, pdwReserved: ptr DWORD): HRESULT {.stdcall.}
+    QueryInfo*: proc(
+      self: ptr IWinInetHttpInfo,
+      dwOption: DWORD,
+      pBuffer: LPVOID,
+      pcbBuf: ptr DWORD,
+      pdwFlags: ptr DWORD,
+      pdwReserved: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   LPWININETHTTPINFO* = ptr IWinInetHttpInfo
   IWinInetCacheHints* {.pure.} = object
     lpVtbl*: ptr IWinInetCacheHintsVtbl
+
   IWinInetCacheHintsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetCacheExtension*: proc(self: ptr IWinInetCacheHints, pwzExt: LPCWSTR, pszCacheFile: LPVOID, pcbCacheFile: ptr DWORD, pdwWinInetError: ptr DWORD, pdwReserved: ptr DWORD): HRESULT {.stdcall.}
+    SetCacheExtension*: proc(
+      self: ptr IWinInetCacheHints,
+      pwzExt: LPCWSTR,
+      pszCacheFile: LPVOID,
+      pcbCacheFile: ptr DWORD,
+      pdwWinInetError: ptr DWORD,
+      pdwReserved: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   LPWININETCACHEHINTS* = ptr IWinInetCacheHints
   IWinInetCacheHints2* {.pure.} = object
     lpVtbl*: ptr IWinInetCacheHints2Vtbl
+
   IWinInetCacheHints2Vtbl* {.pure, inheritable.} = object of IWinInetCacheHintsVtbl
-    SetCacheExtension2*: proc(self: ptr IWinInetCacheHints2, pwzExt: LPCWSTR, pwzCacheFile: ptr WCHAR, pcchCacheFile: ptr DWORD, pdwWinInetError: ptr DWORD, pdwReserved: ptr DWORD): HRESULT {.stdcall.}
+    SetCacheExtension2*: proc(
+      self: ptr IWinInetCacheHints2,
+      pwzExt: LPCWSTR,
+      pwzCacheFile: ptr WCHAR,
+      pcchCacheFile: ptr DWORD,
+      pdwWinInetError: ptr DWORD,
+      pdwReserved: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   LPWININETCACHEHINTS2* = ptr IWinInetCacheHints2
   IBindHost* {.pure.} = object
     lpVtbl*: ptr IBindHostVtbl
+
   IBindHostVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateMoniker*: proc(self: ptr IBindHost, szName: LPOLESTR, pBC: ptr IBindCtx, ppmk: ptr ptr IMoniker, dwReserved: DWORD): HRESULT {.stdcall.}
-    MonikerBindToStorage*: proc(self: ptr IBindHost, pMk: ptr IMoniker, pBC: ptr IBindCtx, pBSC: ptr IBindStatusCallback, riid: REFIID, ppvObj: ptr pointer): HRESULT {.stdcall.}
-    MonikerBindToObject*: proc(self: ptr IBindHost, pMk: ptr IMoniker, pBC: ptr IBindCtx, pBSC: ptr IBindStatusCallback, riid: REFIID, ppvObj: ptr pointer): HRESULT {.stdcall.}
+    CreateMoniker*: proc(
+      self: ptr IBindHost,
+      szName: LPOLESTR,
+      pBC: ptr IBindCtx,
+      ppmk: ptr ptr IMoniker,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+    MonikerBindToStorage*: proc(
+      self: ptr IBindHost,
+      pMk: ptr IMoniker,
+      pBC: ptr IBindCtx,
+      pBSC: ptr IBindStatusCallback,
+      riid: REFIID,
+      ppvObj: ptr pointer,
+    ): HRESULT {.stdcall.}
+    MonikerBindToObject*: proc(
+      self: ptr IBindHost,
+      pMk: ptr IMoniker,
+      pBC: ptr IBindCtx,
+      pBSC: ptr IBindStatusCallback,
+      riid: REFIID,
+      ppvObj: ptr pointer,
+    ): HRESULT {.stdcall.}
+
   LPBINDHOST* = ptr IBindHost
   IInternet* {.pure.} = object
     lpVtbl*: ptr IInternetVtbl
+
   IInternetVtbl* {.pure, inheritable.} = object of IUnknownVtbl
   LPIINTERNET* = ptr IInternet
   IInternetBindInfo* {.pure.} = object
     lpVtbl*: ptr IInternetBindInfoVtbl
+
   IInternetBindInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetBindInfo*: proc(self: ptr IInternetBindInfo, grfBINDF: ptr DWORD, pbindinfo: ptr BINDINFO): HRESULT {.stdcall.}
-    GetBindString*: proc(self: ptr IInternetBindInfo, ulStringType: ULONG, ppwzStr: ptr LPOLESTR, cEl: ULONG, pcElFetched: ptr ULONG): HRESULT {.stdcall.}
+    GetBindInfo*: proc(
+      self: ptr IInternetBindInfo, grfBINDF: ptr DWORD, pbindinfo: ptr BINDINFO
+    ): HRESULT {.stdcall.}
+    GetBindString*: proc(
+      self: ptr IInternetBindInfo,
+      ulStringType: ULONG,
+      ppwzStr: ptr LPOLESTR,
+      cEl: ULONG,
+      pcElFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
+
   LPIINTERNETBINDINFO* = ptr IInternetBindInfo
   IInternetBindInfoEx* {.pure.} = object
     lpVtbl*: ptr IInternetBindInfoExVtbl
+
   IInternetBindInfoExVtbl* {.pure, inheritable.} = object of IInternetBindInfoVtbl
-    GetBindInfoEx*: proc(self: ptr IInternetBindInfoEx, grfBINDF: ptr DWORD, pbindinfo: ptr BINDINFO, grfBINDF2: ptr DWORD, pdwReserved: ptr DWORD): HRESULT {.stdcall.}
+    GetBindInfoEx*: proc(
+      self: ptr IInternetBindInfoEx,
+      grfBINDF: ptr DWORD,
+      pbindinfo: ptr BINDINFO,
+      grfBINDF2: ptr DWORD,
+      pdwReserved: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   LPIINTERNETBINDINFOEX* = ptr IInternetBindInfoEx
   PROTOCOLDATA* {.pure.} = object
     grfFlags*: DWORD
     dwState*: DWORD
     pData*: LPVOID
     cbData*: ULONG
+
   IInternetProtocolSink* {.pure.} = object
     lpVtbl*: ptr IInternetProtocolSinkVtbl
+
   IInternetProtocolSinkVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Switch*: proc(self: ptr IInternetProtocolSink, pProtocolData: ptr PROTOCOLDATA): HRESULT {.stdcall.}
-    ReportProgress*: proc(self: ptr IInternetProtocolSink, ulStatusCode: ULONG, szStatusText: LPCWSTR): HRESULT {.stdcall.}
-    ReportData*: proc(self: ptr IInternetProtocolSink, grfBSCF: DWORD, ulProgress: ULONG, ulProgressMax: ULONG): HRESULT {.stdcall.}
-    ReportResult*: proc(self: ptr IInternetProtocolSink, hrResult: HRESULT, dwError: DWORD, szResult: LPCWSTR): HRESULT {.stdcall.}
+    Switch*: proc(
+      self: ptr IInternetProtocolSink, pProtocolData: ptr PROTOCOLDATA
+    ): HRESULT {.stdcall.}
+    ReportProgress*: proc(
+      self: ptr IInternetProtocolSink, ulStatusCode: ULONG, szStatusText: LPCWSTR
+    ): HRESULT {.stdcall.}
+    ReportData*: proc(
+      self: ptr IInternetProtocolSink,
+      grfBSCF: DWORD,
+      ulProgress: ULONG,
+      ulProgressMax: ULONG,
+    ): HRESULT {.stdcall.}
+    ReportResult*: proc(
+      self: ptr IInternetProtocolSink,
+      hrResult: HRESULT,
+      dwError: DWORD,
+      szResult: LPCWSTR,
+    ): HRESULT {.stdcall.}
+
   IInternetProtocolRoot* {.pure.} = object
     lpVtbl*: ptr IInternetProtocolRootVtbl
+
   IInternetProtocolRootVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Start*: proc(self: ptr IInternetProtocolRoot, szUrl: LPCWSTR, pOIProtSink: ptr IInternetProtocolSink, pOIBindInfo: ptr IInternetBindInfo, grfPI: DWORD, dwReserved: HANDLE_PTR): HRESULT {.stdcall.}
-    Continue*: proc(self: ptr IInternetProtocolRoot, pProtocolData: ptr PROTOCOLDATA): HRESULT {.stdcall.}
-    Abort*: proc(self: ptr IInternetProtocolRoot, hrReason: HRESULT, dwOptions: DWORD): HRESULT {.stdcall.}
-    Terminate*: proc(self: ptr IInternetProtocolRoot, dwOptions: DWORD): HRESULT {.stdcall.}
+    Start*: proc(
+      self: ptr IInternetProtocolRoot,
+      szUrl: LPCWSTR,
+      pOIProtSink: ptr IInternetProtocolSink,
+      pOIBindInfo: ptr IInternetBindInfo,
+      grfPI: DWORD,
+      dwReserved: HANDLE_PTR,
+    ): HRESULT {.stdcall.}
+    Continue*: proc(
+      self: ptr IInternetProtocolRoot, pProtocolData: ptr PROTOCOLDATA
+    ): HRESULT {.stdcall.}
+    Abort*: proc(
+      self: ptr IInternetProtocolRoot, hrReason: HRESULT, dwOptions: DWORD
+    ): HRESULT {.stdcall.}
+    Terminate*:
+      proc(self: ptr IInternetProtocolRoot, dwOptions: DWORD): HRESULT {.stdcall.}
     Suspend*: proc(self: ptr IInternetProtocolRoot): HRESULT {.stdcall.}
     Resume*: proc(self: ptr IInternetProtocolRoot): HRESULT {.stdcall.}
+
   LPIINTERNETPROTOCOLROOT* = ptr IInternetProtocolRoot
   IInternetProtocol* {.pure.} = object
     lpVtbl*: ptr IInternetProtocolVtbl
+
   IInternetProtocolVtbl* {.pure, inheritable.} = object of IInternetProtocolRootVtbl
-    Read*: proc(self: ptr IInternetProtocol, pv: pointer, cb: ULONG, pcbRead: ptr ULONG): HRESULT {.stdcall.}
-    Seek*: proc(self: ptr IInternetProtocol, dlibMove: LARGE_INTEGER, dwOrigin: DWORD, plibNewPosition: ptr ULARGE_INTEGER): HRESULT {.stdcall.}
-    LockRequest*: proc(self: ptr IInternetProtocol, dwOptions: DWORD): HRESULT {.stdcall.}
+    Read*: proc(
+      self: ptr IInternetProtocol, pv: pointer, cb: ULONG, pcbRead: ptr ULONG
+    ): HRESULT {.stdcall.}
+    Seek*: proc(
+      self: ptr IInternetProtocol,
+      dlibMove: LARGE_INTEGER,
+      dwOrigin: DWORD,
+      plibNewPosition: ptr ULARGE_INTEGER,
+    ): HRESULT {.stdcall.}
+    LockRequest*:
+      proc(self: ptr IInternetProtocol, dwOptions: DWORD): HRESULT {.stdcall.}
     UnlockRequest*: proc(self: ptr IInternetProtocol): HRESULT {.stdcall.}
+
   LPIINTERNETPROTOCOL* = ptr IInternetProtocol
   LPIINTERNETPROTOCOLSINK* = ptr IInternetProtocolSink
   IInternetProtocolSinkStackable* {.pure.} = object
     lpVtbl*: ptr IInternetProtocolSinkStackableVtbl
+
   IInternetProtocolSinkStackableVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SwitchSink*: proc(self: ptr IInternetProtocolSinkStackable, pOIProtSink: ptr IInternetProtocolSink): HRESULT {.stdcall.}
+    SwitchSink*: proc(
+      self: ptr IInternetProtocolSinkStackable, pOIProtSink: ptr IInternetProtocolSink
+    ): HRESULT {.stdcall.}
     CommitSwitch*: proc(self: ptr IInternetProtocolSinkStackable): HRESULT {.stdcall.}
     RollbackSwitch*: proc(self: ptr IInternetProtocolSinkStackable): HRESULT {.stdcall.}
+
   LPIINTERNETPROTOCOLSINKStackable* = ptr IInternetProtocolSinkStackable
   IInternetSession* {.pure.} = object
     lpVtbl*: ptr IInternetSessionVtbl
+
   IInternetSessionVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RegisterNameSpace*: proc(self: ptr IInternetSession, pCF: ptr IClassFactory, rclsid: REFCLSID, pwzProtocol: LPCWSTR, cPatterns: ULONG, ppwzPatterns: ptr LPCWSTR, dwReserved: DWORD): HRESULT {.stdcall.}
-    UnregisterNameSpace*: proc(self: ptr IInternetSession, pCF: ptr IClassFactory, pszProtocol: LPCWSTR): HRESULT {.stdcall.}
-    RegisterMimeFilter*: proc(self: ptr IInternetSession, pCF: ptr IClassFactory, rclsid: REFCLSID, pwzType: LPCWSTR): HRESULT {.stdcall.}
-    UnregisterMimeFilter*: proc(self: ptr IInternetSession, pCF: ptr IClassFactory, pwzType: LPCWSTR): HRESULT {.stdcall.}
-    CreateBinding*: proc(self: ptr IInternetSession, pBC: LPBC, szUrl: LPCWSTR, pUnkOuter: ptr IUnknown, ppUnk: ptr ptr IUnknown, ppOInetProt: ptr ptr IInternetProtocol, dwOption: DWORD): HRESULT {.stdcall.}
-    SetSessionOption*: proc(self: ptr IInternetSession, dwOption: DWORD, pBuffer: LPVOID, dwBufferLength: DWORD, dwReserved: DWORD): HRESULT {.stdcall.}
-    GetSessionOption*: proc(self: ptr IInternetSession, dwOption: DWORD, pBuffer: LPVOID, pdwBufferLength: ptr DWORD, dwReserved: DWORD): HRESULT {.stdcall.}
+    RegisterNameSpace*: proc(
+      self: ptr IInternetSession,
+      pCF: ptr IClassFactory,
+      rclsid: REFCLSID,
+      pwzProtocol: LPCWSTR,
+      cPatterns: ULONG,
+      ppwzPatterns: ptr LPCWSTR,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+    UnregisterNameSpace*: proc(
+      self: ptr IInternetSession, pCF: ptr IClassFactory, pszProtocol: LPCWSTR
+    ): HRESULT {.stdcall.}
+    RegisterMimeFilter*: proc(
+      self: ptr IInternetSession,
+      pCF: ptr IClassFactory,
+      rclsid: REFCLSID,
+      pwzType: LPCWSTR,
+    ): HRESULT {.stdcall.}
+    UnregisterMimeFilter*: proc(
+      self: ptr IInternetSession, pCF: ptr IClassFactory, pwzType: LPCWSTR
+    ): HRESULT {.stdcall.}
+    CreateBinding*: proc(
+      self: ptr IInternetSession,
+      pBC: LPBC,
+      szUrl: LPCWSTR,
+      pUnkOuter: ptr IUnknown,
+      ppUnk: ptr ptr IUnknown,
+      ppOInetProt: ptr ptr IInternetProtocol,
+      dwOption: DWORD,
+    ): HRESULT {.stdcall.}
+    SetSessionOption*: proc(
+      self: ptr IInternetSession,
+      dwOption: DWORD,
+      pBuffer: LPVOID,
+      dwBufferLength: DWORD,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+    GetSessionOption*: proc(
+      self: ptr IInternetSession,
+      dwOption: DWORD,
+      pBuffer: LPVOID,
+      pdwBufferLength: ptr DWORD,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+
   LPIINTERNETSESSION* = ptr IInternetSession
   IInternetThreadSwitch* {.pure.} = object
     lpVtbl*: ptr IInternetThreadSwitchVtbl
+
   IInternetThreadSwitchVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Prepare*: proc(self: ptr IInternetThreadSwitch): HRESULT {.stdcall.}
     Continue*: proc(self: ptr IInternetThreadSwitch): HRESULT {.stdcall.}
+
   LPIINTERNETTHREADSWITCH* = ptr IInternetThreadSwitch
   IInternetPriority* {.pure.} = object
     lpVtbl*: ptr IInternetPriorityVtbl
+
   IInternetPriorityVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetPriority*: proc(self: ptr IInternetPriority, nPriority: LONG): HRESULT {.stdcall.}
-    GetPriority*: proc(self: ptr IInternetPriority, pnPriority: ptr LONG): HRESULT {.stdcall.}
+    SetPriority*:
+      proc(self: ptr IInternetPriority, nPriority: LONG): HRESULT {.stdcall.}
+    GetPriority*:
+      proc(self: ptr IInternetPriority, pnPriority: ptr LONG): HRESULT {.stdcall.}
+
   LPIINTERNETPRIORITY* = ptr IInternetPriority
   IInternetProtocolInfo* {.pure.} = object
     lpVtbl*: ptr IInternetProtocolInfoVtbl
+
   IInternetProtocolInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ParseUrl*: proc(self: ptr IInternetProtocolInfo, pwzUrl: LPCWSTR, ParseAction: PARSEACTION, dwParseFlags: DWORD, pwzResult: LPWSTR, cchResult: DWORD, pcchResult: ptr DWORD, dwReserved: DWORD): HRESULT {.stdcall.}
-    CombineUrl*: proc(self: ptr IInternetProtocolInfo, pwzBaseUrl: LPCWSTR, pwzRelativeUrl: LPCWSTR, dwCombineFlags: DWORD, pwzResult: LPWSTR, cchResult: DWORD, pcchResult: ptr DWORD, dwReserved: DWORD): HRESULT {.stdcall.}
-    CompareUrl*: proc(self: ptr IInternetProtocolInfo, pwzUrl1: LPCWSTR, pwzUrl2: LPCWSTR, dwCompareFlags: DWORD): HRESULT {.stdcall.}
-    QueryInfo*: proc(self: ptr IInternetProtocolInfo, pwzUrl: LPCWSTR, OueryOption: QUERYOPTION, dwQueryFlags: DWORD, pBuffer: LPVOID, cbBuffer: DWORD, pcbBuf: ptr DWORD, dwReserved: DWORD): HRESULT {.stdcall.}
+    ParseUrl*: proc(
+      self: ptr IInternetProtocolInfo,
+      pwzUrl: LPCWSTR,
+      ParseAction: PARSEACTION,
+      dwParseFlags: DWORD,
+      pwzResult: LPWSTR,
+      cchResult: DWORD,
+      pcchResult: ptr DWORD,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+    CombineUrl*: proc(
+      self: ptr IInternetProtocolInfo,
+      pwzBaseUrl: LPCWSTR,
+      pwzRelativeUrl: LPCWSTR,
+      dwCombineFlags: DWORD,
+      pwzResult: LPWSTR,
+      cchResult: DWORD,
+      pcchResult: ptr DWORD,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+    CompareUrl*: proc(
+      self: ptr IInternetProtocolInfo,
+      pwzUrl1: LPCWSTR,
+      pwzUrl2: LPCWSTR,
+      dwCompareFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    QueryInfo*: proc(
+      self: ptr IInternetProtocolInfo,
+      pwzUrl: LPCWSTR,
+      OueryOption: QUERYOPTION,
+      dwQueryFlags: DWORD,
+      pBuffer: LPVOID,
+      cbBuffer: DWORD,
+      pcbBuf: ptr DWORD,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+
   LPIINTERNETPROTOCOLINFO* = ptr IInternetProtocolInfo
   IOInet* = IInternet
   IOInetBindInfo* = IInternetBindInfo
@@ -1909,21 +3377,33 @@
   IOInetProtocol* = IInternetProtocol
   IUri* {.pure.} = object
     lpVtbl*: ptr IUriVtbl
+
   IUriVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetPropertyBSTR*: proc(self: ptr IUri, uriProp: Uri_PROPERTY, pbstrProperty: ptr BSTR, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetPropertyLength*: proc(self: ptr IUri, uriProp: Uri_PROPERTY, pcchProperty: ptr DWORD, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetPropertyDWORD*: proc(self: ptr IUri, uriProp: Uri_PROPERTY, pdwProperty: ptr DWORD, dwFlags: DWORD): HRESULT {.stdcall.}
-    HasProperty*: proc(self: ptr IUri, uriProp: Uri_PROPERTY, pfHasProperty: ptr WINBOOL): HRESULT {.stdcall.}
-    GetAbsoluteUri*: proc(self: ptr IUri, pbstrAbsoluteUri: ptr BSTR): HRESULT {.stdcall.}
+    GetPropertyBSTR*: proc(
+      self: ptr IUri, uriProp: Uri_PROPERTY, pbstrProperty: ptr BSTR, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
+    GetPropertyLength*: proc(
+      self: ptr IUri, uriProp: Uri_PROPERTY, pcchProperty: ptr DWORD, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
+    GetPropertyDWORD*: proc(
+      self: ptr IUri, uriProp: Uri_PROPERTY, pdwProperty: ptr DWORD, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
+    HasProperty*: proc(
+      self: ptr IUri, uriProp: Uri_PROPERTY, pfHasProperty: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    GetAbsoluteUri*:
+      proc(self: ptr IUri, pbstrAbsoluteUri: ptr BSTR): HRESULT {.stdcall.}
     GetAuthority*: proc(self: ptr IUri, pbstrAuthority: ptr BSTR): HRESULT {.stdcall.}
-    GetDisplayUri*: proc(self: ptr IUri, pbstrDisplayString: ptr BSTR): HRESULT {.stdcall.}
+    GetDisplayUri*:
+      proc(self: ptr IUri, pbstrDisplayString: ptr BSTR): HRESULT {.stdcall.}
     GetDomain*: proc(self: ptr IUri, pbstrDomain: ptr BSTR): HRESULT {.stdcall.}
     GetExtension*: proc(self: ptr IUri, pbstrExtension: ptr BSTR): HRESULT {.stdcall.}
     GetFragment*: proc(self: ptr IUri, pbstrFragment: ptr BSTR): HRESULT {.stdcall.}
     GetHost*: proc(self: ptr IUri, pbstrHost: ptr BSTR): HRESULT {.stdcall.}
     GetPassword*: proc(self: ptr IUri, pbstrPassword: ptr BSTR): HRESULT {.stdcall.}
     GetPath*: proc(self: ptr IUri, pbstrPath: ptr BSTR): HRESULT {.stdcall.}
-    GetPathAndQuery*: proc(self: ptr IUri, pbstrPathAndQuery: ptr BSTR): HRESULT {.stdcall.}
+    GetPathAndQuery*:
+      proc(self: ptr IUri, pbstrPathAndQuery: ptr BSTR): HRESULT {.stdcall.}
     GetQuery*: proc(self: ptr IUri, pbstrQuery: ptr BSTR): HRESULT {.stdcall.}
     GetRawUri*: proc(self: ptr IUri, pbstrRawUri: ptr BSTR): HRESULT {.stdcall.}
     GetSchemeName*: proc(self: ptr IUri, pbstrSchemeName: ptr BSTR): HRESULT {.stdcall.}
@@ -1934,11 +3414,22 @@
     GetScheme*: proc(self: ptr IUri, pdwScheme: ptr DWORD): HRESULT {.stdcall.}
     GetZone*: proc(self: ptr IUri, pdwZone: ptr DWORD): HRESULT {.stdcall.}
     GetProperties*: proc(self: ptr IUri, pdwFlags: LPDWORD): HRESULT {.stdcall.}
-    IsEqual*: proc(self: ptr IUri, pUri: ptr IUri, pfEqual: ptr WINBOOL): HRESULT {.stdcall.}
+    IsEqual*:
+      proc(self: ptr IUri, pUri: ptr IUri, pfEqual: ptr WINBOOL): HRESULT {.stdcall.}
+
   IInternetProtocolEx* {.pure.} = object
     lpVtbl*: ptr IInternetProtocolExVtbl
+
   IInternetProtocolExVtbl* {.pure, inheritable.} = object of IInternetProtocolVtbl
-    StartEx*: proc(self: ptr IInternetProtocolEx, pUri: ptr IUri, pOIProtSink: ptr IInternetProtocolSink, pOIBindInfo: ptr IInternetBindInfo, grfPI: DWORD, dwReserved: HANDLE_PTR): HRESULT {.stdcall.}
+    StartEx*: proc(
+      self: ptr IInternetProtocolEx,
+      pUri: ptr IUri,
+      pOIProtSink: ptr IInternetProtocolSink,
+      pOIBindInfo: ptr IInternetBindInfo,
+      grfPI: DWORD,
+      dwReserved: HANDLE_PTR,
+    ): HRESULT {.stdcall.}
+
   IOInetProtocolEx* = IInternetProtocolEx
   IOInetProtocolSink* = IInternetProtocolSink
   IOInetProtocolInfo* = IInternetProtocolInfo
@@ -1965,136 +3456,278 @@
     dwTemplateRecommended*: DWORD
     dwTemplateCurrentLevel*: DWORD
     dwFlags*: DWORD
+
   IInternetZoneManager* {.pure.} = object
     lpVtbl*: ptr IInternetZoneManagerVtbl
+
   IInternetZoneManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetZoneAttributes*: proc(self: ptr IInternetZoneManager, dwZone: DWORD, pZoneAttributes: ptr ZONEATTRIBUTES): HRESULT {.stdcall.}
-    SetZoneAttributes*: proc(self: ptr IInternetZoneManager, dwZone: DWORD, pZoneAttributes: ptr ZONEATTRIBUTES): HRESULT {.stdcall.}
-    GetZoneCustomPolicy*: proc(self: ptr IInternetZoneManager, dwZone: DWORD, guidKey: REFGUID, ppPolicy: ptr ptr BYTE, pcbPolicy: ptr DWORD, urlZoneReg: URLZONEREG): HRESULT {.stdcall.}
-    SetZoneCustomPolicy*: proc(self: ptr IInternetZoneManager, dwZone: DWORD, guidKey: REFGUID, pPolicy: ptr BYTE, cbPolicy: DWORD, urlZoneReg: URLZONEREG): HRESULT {.stdcall.}
-    GetZoneActionPolicy*: proc(self: ptr IInternetZoneManager, dwZone: DWORD, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, urlZoneReg: URLZONEREG): HRESULT {.stdcall.}
-    SetZoneActionPolicy*: proc(self: ptr IInternetZoneManager, dwZone: DWORD, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, urlZoneReg: URLZONEREG): HRESULT {.stdcall.}
-    PromptAction*: proc(self: ptr IInternetZoneManager, dwAction: DWORD, hwndParent: HWND, pwszUrl: LPCWSTR, pwszText: LPCWSTR, dwPromptFlags: DWORD): HRESULT {.stdcall.}
-    LogAction*: proc(self: ptr IInternetZoneManager, dwAction: DWORD, pwszUrl: LPCWSTR, pwszText: LPCWSTR, dwLogFlags: DWORD): HRESULT {.stdcall.}
-    CreateZoneEnumerator*: proc(self: ptr IInternetZoneManager, pdwEnum: ptr DWORD, pdwCount: ptr DWORD, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetZoneAt*: proc(self: ptr IInternetZoneManager, dwEnum: DWORD, dwIndex: DWORD, pdwZone: ptr DWORD): HRESULT {.stdcall.}
-    DestroyZoneEnumerator*: proc(self: ptr IInternetZoneManager, dwEnum: DWORD): HRESULT {.stdcall.}
-    CopyTemplatePoliciesToZone*: proc(self: ptr IInternetZoneManager, dwTemplate: DWORD, dwZone: DWORD, dwReserved: DWORD): HRESULT {.stdcall.}
+    GetZoneAttributes*: proc(
+      self: ptr IInternetZoneManager, dwZone: DWORD, pZoneAttributes: ptr ZONEATTRIBUTES
+    ): HRESULT {.stdcall.}
+    SetZoneAttributes*: proc(
+      self: ptr IInternetZoneManager, dwZone: DWORD, pZoneAttributes: ptr ZONEATTRIBUTES
+    ): HRESULT {.stdcall.}
+    GetZoneCustomPolicy*: proc(
+      self: ptr IInternetZoneManager,
+      dwZone: DWORD,
+      guidKey: REFGUID,
+      ppPolicy: ptr ptr BYTE,
+      pcbPolicy: ptr DWORD,
+      urlZoneReg: URLZONEREG,
+    ): HRESULT {.stdcall.}
+    SetZoneCustomPolicy*: proc(
+      self: ptr IInternetZoneManager,
+      dwZone: DWORD,
+      guidKey: REFGUID,
+      pPolicy: ptr BYTE,
+      cbPolicy: DWORD,
+      urlZoneReg: URLZONEREG,
+    ): HRESULT {.stdcall.}
+    GetZoneActionPolicy*: proc(
+      self: ptr IInternetZoneManager,
+      dwZone: DWORD,
+      dwAction: DWORD,
+      pPolicy: ptr BYTE,
+      cbPolicy: DWORD,
+      urlZoneReg: URLZONEREG,
+    ): HRESULT {.stdcall.}
+    SetZoneActionPolicy*: proc(
+      self: ptr IInternetZoneManager,
+      dwZone: DWORD,
+      dwAction: DWORD,
+      pPolicy: ptr BYTE,
+      cbPolicy: DWORD,
+      urlZoneReg: URLZONEREG,
+    ): HRESULT {.stdcall.}
+    PromptAction*: proc(
+      self: ptr IInternetZoneManager,
+      dwAction: DWORD,
+      hwndParent: HWND,
+      pwszUrl: LPCWSTR,
+      pwszText: LPCWSTR,
+      dwPromptFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    LogAction*: proc(
+      self: ptr IInternetZoneManager,
+      dwAction: DWORD,
+      pwszUrl: LPCWSTR,
+      pwszText: LPCWSTR,
+      dwLogFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    CreateZoneEnumerator*: proc(
+      self: ptr IInternetZoneManager,
+      pdwEnum: ptr DWORD,
+      pdwCount: ptr DWORD,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    GetZoneAt*: proc(
+      self: ptr IInternetZoneManager, dwEnum: DWORD, dwIndex: DWORD, pdwZone: ptr DWORD
+    ): HRESULT {.stdcall.}
+    DestroyZoneEnumerator*:
+      proc(self: ptr IInternetZoneManager, dwEnum: DWORD): HRESULT {.stdcall.}
+    CopyTemplatePoliciesToZone*: proc(
+      self: ptr IInternetZoneManager,
+      dwTemplate: DWORD,
+      dwZone: DWORD,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+
   LPURLZONEMANAGER* = ptr IInternetZoneManager
   LPZONEATTRIBUTES* = ptr ZONEATTRIBUTES
   ICatalogFileInfo* {.pure.} = object
     lpVtbl*: ptr ICatalogFileInfoVtbl
+
   ICatalogFileInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCatalogFile*: proc(self: ptr ICatalogFileInfo, ppszCatalogFile: ptr LPSTR): HRESULT {.stdcall.}
-    GetJavaTrust*: proc(self: ptr ICatalogFileInfo, ppJavaTrust: ptr pointer): HRESULT {.stdcall.}
+    GetCatalogFile*:
+      proc(self: ptr ICatalogFileInfo, ppszCatalogFile: ptr LPSTR): HRESULT {.stdcall.}
+    GetJavaTrust*:
+      proc(self: ptr ICatalogFileInfo, ppJavaTrust: ptr pointer): HRESULT {.stdcall.}
+
   LPCATALOGFILEINFO* = ptr ICatalogFileInfo
   IDataFilter* {.pure.} = object
     lpVtbl*: ptr IDataFilterVtbl
+
   IDataFilterVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    DoEncode*: proc(self: ptr IDataFilter, dwFlags: DWORD, lInBufferSize: LONG, pbInBuffer: ptr BYTE, lOutBufferSize: LONG, pbOutBuffer: ptr BYTE, lInBytesAvailable: LONG, plInBytesRead: ptr LONG, plOutBytesWritten: ptr LONG, dwReserved: DWORD): HRESULT {.stdcall.}
-    DoDecode*: proc(self: ptr IDataFilter, dwFlags: DWORD, lInBufferSize: LONG, pbInBuffer: ptr BYTE, lOutBufferSize: LONG, pbOutBuffer: ptr BYTE, lInBytesAvailable: LONG, plInBytesRead: ptr LONG, plOutBytesWritten: ptr LONG, dwReserved: DWORD): HRESULT {.stdcall.}
-    SetEncodingLevel*: proc(self: ptr IDataFilter, dwEncLevel: DWORD): HRESULT {.stdcall.}
+    DoEncode*: proc(
+      self: ptr IDataFilter,
+      dwFlags: DWORD,
+      lInBufferSize: LONG,
+      pbInBuffer: ptr BYTE,
+      lOutBufferSize: LONG,
+      pbOutBuffer: ptr BYTE,
+      lInBytesAvailable: LONG,
+      plInBytesRead: ptr LONG,
+      plOutBytesWritten: ptr LONG,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+    DoDecode*: proc(
+      self: ptr IDataFilter,
+      dwFlags: DWORD,
+      lInBufferSize: LONG,
+      pbInBuffer: ptr BYTE,
+      lOutBufferSize: LONG,
+      pbOutBuffer: ptr BYTE,
+      lInBytesAvailable: LONG,
+      plInBytesRead: ptr LONG,
+      plOutBytesWritten: ptr LONG,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+    SetEncodingLevel*:
+      proc(self: ptr IDataFilter, dwEncLevel: DWORD): HRESULT {.stdcall.}
+
   LPDATAFILTER* = ptr IDataFilter
   DATAINFO* {.pure.} = object
     ulTotalSize*: ULONG
     ulavrPacketSize*: ULONG
     ulConnectSpeed*: ULONG
     ulProcessorSpeed*: ULONG
+
   IEncodingFilterFactory* {.pure.} = object
     lpVtbl*: ptr IEncodingFilterFactoryVtbl
+
   IEncodingFilterFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    FindBestFilter*: proc(self: ptr IEncodingFilterFactory, pwzCodeIn: LPCWSTR, pwzCodeOut: LPCWSTR, info: DATAINFO, ppDF: ptr ptr IDataFilter): HRESULT {.stdcall.}
-    GetDefaultFilter*: proc(self: ptr IEncodingFilterFactory, pwzCodeIn: LPCWSTR, pwzCodeOut: LPCWSTR, ppDF: ptr ptr IDataFilter): HRESULT {.stdcall.}
+    FindBestFilter*: proc(
+      self: ptr IEncodingFilterFactory,
+      pwzCodeIn: LPCWSTR,
+      pwzCodeOut: LPCWSTR,
+      info: DATAINFO,
+      ppDF: ptr ptr IDataFilter,
+    ): HRESULT {.stdcall.}
+    GetDefaultFilter*: proc(
+      self: ptr IEncodingFilterFactory,
+      pwzCodeIn: LPCWSTR,
+      pwzCodeOut: LPCWSTR,
+      ppDF: ptr ptr IDataFilter,
+    ): HRESULT {.stdcall.}
+
   LPENCODINGFILTERFACTORY* = ptr IEncodingFilterFactory
   IWrappedProtocol* {.pure.} = object
     lpVtbl*: ptr IWrappedProtocolVtbl
+
   IWrappedProtocolVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetWrapperCode*: proc(self: ptr IWrappedProtocol, pnCode: ptr LONG, dwReserved: DWORD_PTR): HRESULT {.stdcall.}
+    GetWrapperCode*: proc(
+      self: ptr IWrappedProtocol, pnCode: ptr LONG, dwReserved: DWORD_PTR
+    ): HRESULT {.stdcall.}
+
   LPIWRAPPEDPROTOCOL* = ptr IWrappedProtocol
   IGetBindHandle* {.pure.} = object
     lpVtbl*: ptr IGetBindHandleVtbl
+
   IGetBindHandleVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetBindHandle*: proc(self: ptr IGetBindHandle, enumRequestedHandle: BINDHANDLETYPES, pRetHandle: ptr HANDLE): HRESULT {.stdcall.}
+    GetBindHandle*: proc(
+      self: ptr IGetBindHandle,
+      enumRequestedHandle: BINDHANDLETYPES,
+      pRetHandle: ptr HANDLE,
+    ): HRESULT {.stdcall.}
+
   LPGETBINDHANDLE* = ptr IGetBindHandle
   IBindCallbackRedirect* {.pure.} = object
     lpVtbl*: ptr IBindCallbackRedirectVtbl
+
   IBindCallbackRedirectVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Redirect*: proc(self: ptr IBindCallbackRedirect, lpcUrl: LPCWSTR, vbCancel: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    Redirect*: proc(
+      self: ptr IBindCallbackRedirect, lpcUrl: LPCWSTR, vbCancel: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+
   LPBINDCALLBACKREDIRECT* = ptr IBindCallbackRedirect
   CLIPDATA* {.pure.} = object
     cbSize*: ULONG
     ulClipFmt*: LONG
     pClipData*: ptr BYTE
+
   VERSIONEDSTREAM* {.pure.} = object
     guidVersion*: GUID
     pStream*: ptr IStream
+
   LPVERSIONEDSTREAM* = ptr VERSIONEDSTREAM
   CAC* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr CHAR
+
   CAUB* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr UCHAR
+
   CAI* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr SHORT
+
   CAUI* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr USHORT
+
   CAL* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr LONG
+
   CAUL* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr ULONG
+
   CAH* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr LARGE_INTEGER
+
   CAUH* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr ULARGE_INTEGER
+
   CAFLT* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr FLOAT
+
   CADBL* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr DOUBLE
+
   CABOOL* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr VARIANT_BOOL
+
   CASCODE* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr SCODE
+
   CACY* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr CY
+
   CADATE* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr DATE
+
   CAFILETIME* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr FILETIME
+
   CACLSID* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr CLSID
+
   CACLIPDATA* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr CLIPDATA
+
   CABSTR* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr BSTR
+
   CABSTRBLOB* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr BSTRBLOB
+
   CALPSTR* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr LPSTR
+
   CALPWSTR* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr LPWSTR
+
   CAPROPVARIANT* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr PROPVARIANT
+
   PROPVARIANT_UNION1_STRUCT1_UNION1* {.pure, union.} = object
     cVal*: CHAR
     bVal*: UCHAR
@@ -2168,36 +3801,52 @@
     ppdispVal*: ptr ptr IDispatch
     pparray*: ptr LPSAFEARRAY
     pvarVal*: ptr PROPVARIANT
+
   PROPVARIANT_UNION1_STRUCT1* {.pure.} = object
     vt*: VARTYPE
     wReserved1*: PROPVAR_PAD1
     wReserved2*: PROPVAR_PAD2
     wReserved3*: PROPVAR_PAD3
     union1*: PROPVARIANT_UNION1_STRUCT1_UNION1
+
   PROPVARIANT_UNION1* {.pure, union.} = object
     struct1*: PROPVARIANT_UNION1_STRUCT1
     decVal*: DECIMAL
+
   PROPVARIANT* {.pure.} = object
     union1*: PROPVARIANT_UNION1
+
   LPPROPVARIANT* = ptr PROPVARIANT
   REFPROPVARIANT* = ptr PROPVARIANT
   PROPSPEC_UNION1* {.pure, union.} = object
     propid*: PROPID
     lpwstr*: LPOLESTR
+
   PROPSPEC* {.pure.} = object
     ulKind*: ULONG
     union1*: PROPSPEC_UNION1
+
   STATPROPSTG* {.pure.} = object
     lpwstrName*: LPOLESTR
     propid*: PROPID
     vt*: VARTYPE
+
   IEnumSTATPROPSTG* {.pure.} = object
     lpVtbl*: ptr IEnumSTATPROPSTGVtbl
+
   IEnumSTATPROPSTGVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumSTATPROPSTG, celt: ULONG, rgelt: ptr STATPROPSTG, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumSTATPROPSTG,
+      celt: ULONG,
+      rgelt: ptr STATPROPSTG,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumSTATPROPSTG, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumSTATPROPSTG): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumSTATPROPSTG, ppenum: ptr ptr IEnumSTATPROPSTG): HRESULT {.stdcall.}
+    Clone*: proc(self: ptr IEnumSTATPROPSTG, ppenum: ptr ptr IEnumSTATPROPSTG): HRESULT {.
+      stdcall
+    .}
+
   STATPROPSETSTG* {.pure.} = object
     fmtid*: FMTID
     clsid*: CLSID
@@ -2206,35 +3855,98 @@
     ctime*: FILETIME
     atime*: FILETIME
     dwOSVersion*: DWORD
+
   IPropertyStorage* {.pure.} = object
     lpVtbl*: ptr IPropertyStorageVtbl
+
   IPropertyStorageVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ReadMultiple*: proc(self: ptr IPropertyStorage, cpspec: ULONG, rgpspec: ptr PROPSPEC, rgpropvar: ptr PROPVARIANT): HRESULT {.stdcall.}
-    WriteMultiple*: proc(self: ptr IPropertyStorage, cpspec: ULONG, rgpspec: ptr PROPSPEC, rgpropvar: ptr PROPVARIANT, propidNameFirst: PROPID): HRESULT {.stdcall.}
-    DeleteMultiple*: proc(self: ptr IPropertyStorage, cpspec: ULONG, rgpspec: ptr PROPSPEC): HRESULT {.stdcall.}
-    ReadPropertyNames*: proc(self: ptr IPropertyStorage, cpropid: ULONG, rgpropid: ptr PROPID, rglpwstrName: ptr LPOLESTR): HRESULT {.stdcall.}
-    WritePropertyNames*: proc(self: ptr IPropertyStorage, cpropid: ULONG, rgpropid: ptr PROPID, rglpwstrName: ptr LPOLESTR): HRESULT {.stdcall.}
-    DeletePropertyNames*: proc(self: ptr IPropertyStorage, cpropid: ULONG, rgpropid: ptr PROPID): HRESULT {.stdcall.}
-    Commit*: proc(self: ptr IPropertyStorage, grfCommitFlags: DWORD): HRESULT {.stdcall.}
+    ReadMultiple*: proc(
+      self: ptr IPropertyStorage,
+      cpspec: ULONG,
+      rgpspec: ptr PROPSPEC,
+      rgpropvar: ptr PROPVARIANT,
+    ): HRESULT {.stdcall.}
+    WriteMultiple*: proc(
+      self: ptr IPropertyStorage,
+      cpspec: ULONG,
+      rgpspec: ptr PROPSPEC,
+      rgpropvar: ptr PROPVARIANT,
+      propidNameFirst: PROPID,
+    ): HRESULT {.stdcall.}
+    DeleteMultiple*: proc(
+      self: ptr IPropertyStorage, cpspec: ULONG, rgpspec: ptr PROPSPEC
+    ): HRESULT {.stdcall.}
+    ReadPropertyNames*: proc(
+      self: ptr IPropertyStorage,
+      cpropid: ULONG,
+      rgpropid: ptr PROPID,
+      rglpwstrName: ptr LPOLESTR,
+    ): HRESULT {.stdcall.}
+    WritePropertyNames*: proc(
+      self: ptr IPropertyStorage,
+      cpropid: ULONG,
+      rgpropid: ptr PROPID,
+      rglpwstrName: ptr LPOLESTR,
+    ): HRESULT {.stdcall.}
+    DeletePropertyNames*: proc(
+      self: ptr IPropertyStorage, cpropid: ULONG, rgpropid: ptr PROPID
+    ): HRESULT {.stdcall.}
+    Commit*:
+      proc(self: ptr IPropertyStorage, grfCommitFlags: DWORD): HRESULT {.stdcall.}
     Revert*: proc(self: ptr IPropertyStorage): HRESULT {.stdcall.}
-    Enum*: proc(self: ptr IPropertyStorage, ppenum: ptr ptr IEnumSTATPROPSTG): HRESULT {.stdcall.}
-    SetTimes*: proc(self: ptr IPropertyStorage, pctime: ptr FILETIME, patime: ptr FILETIME, pmtime: ptr FILETIME): HRESULT {.stdcall.}
+    Enum*: proc(self: ptr IPropertyStorage, ppenum: ptr ptr IEnumSTATPROPSTG): HRESULT {.
+      stdcall
+    .}
+    SetTimes*: proc(
+      self: ptr IPropertyStorage,
+      pctime: ptr FILETIME,
+      patime: ptr FILETIME,
+      pmtime: ptr FILETIME,
+    ): HRESULT {.stdcall.}
     SetClass*: proc(self: ptr IPropertyStorage, clsid: REFCLSID): HRESULT {.stdcall.}
-    Stat*: proc(self: ptr IPropertyStorage, pstatpsstg: ptr STATPROPSETSTG): HRESULT {.stdcall.}
+    Stat*: proc(self: ptr IPropertyStorage, pstatpsstg: ptr STATPROPSETSTG): HRESULT {.
+      stdcall
+    .}
+
   IEnumSTATPROPSETSTG* {.pure.} = object
     lpVtbl*: ptr IEnumSTATPROPSETSTGVtbl
+
   IEnumSTATPROPSETSTGVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumSTATPROPSETSTG, celt: ULONG, rgelt: ptr STATPROPSETSTG, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumSTATPROPSETSTG,
+      celt: ULONG,
+      rgelt: ptr STATPROPSETSTG,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumSTATPROPSETSTG, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumSTATPROPSETSTG): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumSTATPROPSETSTG, ppenum: ptr ptr IEnumSTATPROPSETSTG): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr IEnumSTATPROPSETSTG, ppenum: ptr ptr IEnumSTATPROPSETSTG
+    ): HRESULT {.stdcall.}
+
   IPropertySetStorage* {.pure.} = object
     lpVtbl*: ptr IPropertySetStorageVtbl
+
   IPropertySetStorageVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Create*: proc(self: ptr IPropertySetStorage, rfmtid: REFFMTID, pclsid: ptr CLSID, grfFlags: DWORD, grfMode: DWORD, ppprstg: ptr ptr IPropertyStorage): HRESULT {.stdcall.}
-    Open*: proc(self: ptr IPropertySetStorage, rfmtid: REFFMTID, grfMode: DWORD, ppprstg: ptr ptr IPropertyStorage): HRESULT {.stdcall.}
+    Create*: proc(
+      self: ptr IPropertySetStorage,
+      rfmtid: REFFMTID,
+      pclsid: ptr CLSID,
+      grfFlags: DWORD,
+      grfMode: DWORD,
+      ppprstg: ptr ptr IPropertyStorage,
+    ): HRESULT {.stdcall.}
+    Open*: proc(
+      self: ptr IPropertySetStorage,
+      rfmtid: REFFMTID,
+      grfMode: DWORD,
+      ppprstg: ptr ptr IPropertyStorage,
+    ): HRESULT {.stdcall.}
     Delete*: proc(self: ptr IPropertySetStorage, rfmtid: REFFMTID): HRESULT {.stdcall.}
-    Enum*: proc(self: ptr IPropertySetStorage, ppenum: ptr ptr IEnumSTATPROPSETSTG): HRESULT {.stdcall.}
+    Enum*: proc(
+      self: ptr IPropertySetStorage, ppenum: ptr ptr IEnumSTATPROPSETSTG
+    ): HRESULT {.stdcall.}
+
   LPPROPERTYSETSTORAGE* = ptr IPropertySetStorage
   LPENUMSTATPROPSTG* = ptr IEnumSTATPROPSTG
   LPENUMSTATPROPSETSTG* = ptr IEnumSTATPROPSETSTG
@@ -2242,38 +3954,73 @@
   CONNECTDATA* {.pure.} = object
     pUnk*: ptr IUnknown
     dwCookie*: DWORD
+
   LPCONNECTDATA* = ptr CONNECTDATA
   IEnumConnections* {.pure.} = object
     lpVtbl*: ptr IEnumConnectionsVtbl
+
   IEnumConnectionsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumConnections, cConnections: ULONG, rgcd: LPCONNECTDATA, pcFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumConnections,
+      cConnections: ULONG,
+      rgcd: LPCONNECTDATA,
+      pcFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumConnections, cConnections: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumConnections): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumConnections, ppEnum: ptr ptr IEnumConnections): HRESULT {.stdcall.}
+    Clone*: proc(self: ptr IEnumConnections, ppEnum: ptr ptr IEnumConnections): HRESULT {.
+      stdcall
+    .}
+
   PENUMCONNECTIONS* = ptr IEnumConnections
   LPENUMCONNECTIONS* = ptr IEnumConnections
   PCONNECTDATA* = ptr CONNECTDATA
   LPCONNECTIONPOINT* = ptr IConnectionPoint
   IEnumConnectionPoints* {.pure.} = object
     lpVtbl*: ptr IEnumConnectionPointsVtbl
+
   IEnumConnectionPointsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumConnectionPoints, cConnections: ULONG, ppCP: ptr LPCONNECTIONPOINT, pcFetched: ptr ULONG): HRESULT {.stdcall.}
-    Skip*: proc(self: ptr IEnumConnectionPoints, cConnections: ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumConnectionPoints,
+      cConnections: ULONG,
+      ppCP: ptr LPCONNECTIONPOINT,
+      pcFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    Skip*:
+      proc(self: ptr IEnumConnectionPoints, cConnections: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumConnectionPoints): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumConnectionPoints, ppEnum: ptr ptr IEnumConnectionPoints): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr IEnumConnectionPoints, ppEnum: ptr ptr IEnumConnectionPoints
+    ): HRESULT {.stdcall.}
+
   IConnectionPointContainer* {.pure.} = object
     lpVtbl*: ptr IConnectionPointContainerVtbl
+
   IConnectionPointContainerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    EnumConnectionPoints*: proc(self: ptr IConnectionPointContainer, ppEnum: ptr ptr IEnumConnectionPoints): HRESULT {.stdcall.}
-    FindConnectionPoint*: proc(self: ptr IConnectionPointContainer, riid: REFIID, ppCP: ptr ptr IConnectionPoint): HRESULT {.stdcall.}
+    EnumConnectionPoints*: proc(
+      self: ptr IConnectionPointContainer, ppEnum: ptr ptr IEnumConnectionPoints
+    ): HRESULT {.stdcall.}
+    FindConnectionPoint*: proc(
+      self: ptr IConnectionPointContainer, riid: REFIID, ppCP: ptr ptr IConnectionPoint
+    ): HRESULT {.stdcall.}
+
   IConnectionPoint* {.pure.} = object
     lpVtbl*: ptr IConnectionPointVtbl
+
   IConnectionPointVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetConnectionInterface*: proc(self: ptr IConnectionPoint, pIID: ptr IID): HRESULT {.stdcall.}
-    GetConnectionPointContainer*: proc(self: ptr IConnectionPoint, ppCPC: ptr ptr IConnectionPointContainer): HRESULT {.stdcall.}
-    Advise*: proc(self: ptr IConnectionPoint, pUnkSink: ptr IUnknown, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
+    GetConnectionInterface*:
+      proc(self: ptr IConnectionPoint, pIID: ptr IID): HRESULT {.stdcall.}
+    GetConnectionPointContainer*: proc(
+      self: ptr IConnectionPoint, ppCPC: ptr ptr IConnectionPointContainer
+    ): HRESULT {.stdcall.}
+    Advise*: proc(
+      self: ptr IConnectionPoint, pUnkSink: ptr IUnknown, pdwCookie: ptr DWORD
+    ): HRESULT {.stdcall.}
     Unadvise*: proc(self: ptr IConnectionPoint, dwCookie: DWORD): HRESULT {.stdcall.}
-    EnumConnections*: proc(self: ptr IConnectionPoint, ppEnum: ptr ptr IEnumConnections): HRESULT {.stdcall.}
+    EnumConnections*: proc(
+      self: ptr IConnectionPoint, ppEnum: ptr ptr IEnumConnections
+    ): HRESULT {.stdcall.}
+
   PCONNECTIONPOINT* = ptr IConnectionPoint
   PENUMCONNECTIONPOINTS* = ptr IEnumConnectionPoints
   LPENUMCONNECTIONPOINTS* = ptr IEnumConnectionPoints
@@ -2283,66 +4030,121 @@
     cbLicInfo*: LONG
     fRuntimeKeyAvail*: WINBOOL
     fLicVerified*: WINBOOL
+
   IClassFactory2* {.pure.} = object
     lpVtbl*: ptr IClassFactory2Vtbl
+
   IClassFactory2Vtbl* {.pure, inheritable.} = object of IClassFactoryVtbl
-    GetLicInfo*: proc(self: ptr IClassFactory2, pLicInfo: ptr LICINFO): HRESULT {.stdcall.}
-    RequestLicKey*: proc(self: ptr IClassFactory2, dwReserved: DWORD, pBstrKey: ptr BSTR): HRESULT {.stdcall.}
-    CreateInstanceLic*: proc(self: ptr IClassFactory2, pUnkOuter: ptr IUnknown, pUnkReserved: ptr IUnknown, riid: REFIID, bstrKey: BSTR, ppvObj: ptr PVOID): HRESULT {.stdcall.}
+    GetLicInfo*:
+      proc(self: ptr IClassFactory2, pLicInfo: ptr LICINFO): HRESULT {.stdcall.}
+    RequestLicKey*: proc(
+      self: ptr IClassFactory2, dwReserved: DWORD, pBstrKey: ptr BSTR
+    ): HRESULT {.stdcall.}
+    CreateInstanceLic*: proc(
+      self: ptr IClassFactory2,
+      pUnkOuter: ptr IUnknown,
+      pUnkReserved: ptr IUnknown,
+      riid: REFIID,
+      bstrKey: BSTR,
+      ppvObj: ptr PVOID,
+    ): HRESULT {.stdcall.}
+
   LPCLASSFACTORY2* = ptr IClassFactory2
   LPLICINFO* = ptr LICINFO
   IProvideClassInfo* {.pure.} = object
     lpVtbl*: ptr IProvideClassInfoVtbl
+
   IProvideClassInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetClassInfo*: proc(self: ptr IProvideClassInfo, ppTI: ptr ptr ITypeInfo): HRESULT {.stdcall.}
+    GetClassInfo*:
+      proc(self: ptr IProvideClassInfo, ppTI: ptr ptr ITypeInfo): HRESULT {.stdcall.}
+
   LPPROVIDECLASSINFO* = ptr IProvideClassInfo
   IProvideClassInfo2* {.pure.} = object
     lpVtbl*: ptr IProvideClassInfo2Vtbl
+
   IProvideClassInfo2Vtbl* {.pure, inheritable.} = object of IProvideClassInfoVtbl
-    GetGUID*: proc(self: ptr IProvideClassInfo2, dwGuidKind: DWORD, pGUID: ptr GUID): HRESULT {.stdcall.}
+    GetGUID*: proc(
+      self: ptr IProvideClassInfo2, dwGuidKind: DWORD, pGUID: ptr GUID
+    ): HRESULT {.stdcall.}
+
   LPPROVIDECLASSINFO2* = ptr IProvideClassInfo2
   IProvideMultipleClassInfo* {.pure.} = object
     lpVtbl*: ptr IProvideMultipleClassInfoVtbl
+
   IProvideMultipleClassInfoVtbl* {.pure, inheritable.} = object of IProvideClassInfo2Vtbl
-    GetMultiTypeInfoCount*: proc(self: ptr IProvideMultipleClassInfo, pcti: ptr ULONG): HRESULT {.stdcall.}
-    GetInfoOfIndex*: proc(self: ptr IProvideMultipleClassInfo, iti: ULONG, dwFlags: DWORD, pptiCoClass: ptr ptr ITypeInfo, pdwTIFlags: ptr DWORD, pcdispidReserved: ptr ULONG, piidPrimary: ptr IID, piidSource: ptr IID): HRESULT {.stdcall.}
+    GetMultiTypeInfoCount*:
+      proc(self: ptr IProvideMultipleClassInfo, pcti: ptr ULONG): HRESULT {.stdcall.}
+    GetInfoOfIndex*: proc(
+      self: ptr IProvideMultipleClassInfo,
+      iti: ULONG,
+      dwFlags: DWORD,
+      pptiCoClass: ptr ptr ITypeInfo,
+      pdwTIFlags: ptr DWORD,
+      pcdispidReserved: ptr ULONG,
+      piidPrimary: ptr IID,
+      piidSource: ptr IID,
+    ): HRESULT {.stdcall.}
+
   LPPROVIDEMULTIPLECLASSINFO* = ptr IProvideMultipleClassInfo
   CONTROLINFO* {.pure.} = object
     cb*: ULONG
     hAccel*: HACCEL
     cAccel*: USHORT
     dwFlags*: DWORD
+
   IOleControl* {.pure.} = object
     lpVtbl*: ptr IOleControlVtbl
+
   IOleControlVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetControlInfo*: proc(self: ptr IOleControl, pCI: ptr CONTROLINFO): HRESULT {.stdcall.}
+    GetControlInfo*:
+      proc(self: ptr IOleControl, pCI: ptr CONTROLINFO): HRESULT {.stdcall.}
     OnMnemonic*: proc(self: ptr IOleControl, pMsg: ptr MSG): HRESULT {.stdcall.}
-    OnAmbientPropertyChange*: proc(self: ptr IOleControl, dispID: DISPID): HRESULT {.stdcall.}
+    OnAmbientPropertyChange*:
+      proc(self: ptr IOleControl, dispID: DISPID): HRESULT {.stdcall.}
     FreezeEvents*: proc(self: ptr IOleControl, bFreeze: WINBOOL): HRESULT {.stdcall.}
+
   LPOLECONTROL* = ptr IOleControl
   LPCONTROLINFO* = ptr CONTROLINFO
   POINTF* {.pure.} = object
     x*: FLOAT
     y*: FLOAT
+
   IOleControlSite* {.pure.} = object
     lpVtbl*: ptr IOleControlSiteVtbl
+
   IOleControlSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     OnControlInfoChanged*: proc(self: ptr IOleControlSite): HRESULT {.stdcall.}
-    LockInPlaceActive*: proc(self: ptr IOleControlSite, fLock: WINBOOL): HRESULT {.stdcall.}
-    GetExtendedControl*: proc(self: ptr IOleControlSite, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
-    TransformCoords*: proc(self: ptr IOleControlSite, pPtlHimetric: ptr POINTL, pPtfContainer: ptr POINTF, dwFlags: DWORD): HRESULT {.stdcall.}
-    TranslateAccelerator*: proc(self: ptr IOleControlSite, pMsg: ptr MSG, grfModifiers: DWORD): HRESULT {.stdcall.}
+    LockInPlaceActive*:
+      proc(self: ptr IOleControlSite, fLock: WINBOOL): HRESULT {.stdcall.}
+    GetExtendedControl*:
+      proc(self: ptr IOleControlSite, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    TransformCoords*: proc(
+      self: ptr IOleControlSite,
+      pPtlHimetric: ptr POINTL,
+      pPtfContainer: ptr POINTF,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    TranslateAccelerator*: proc(
+      self: ptr IOleControlSite, pMsg: ptr MSG, grfModifiers: DWORD
+    ): HRESULT {.stdcall.}
     OnFocus*: proc(self: ptr IOleControlSite, fGotFocus: WINBOOL): HRESULT {.stdcall.}
     ShowPropertyFrame*: proc(self: ptr IOleControlSite): HRESULT {.stdcall.}
+
   LPOLECONTROLSITE* = ptr IOleControlSite
   LPPOINTF* = ptr POINTF
   IPropertyPageSite* {.pure.} = object
     lpVtbl*: ptr IPropertyPageSiteVtbl
+
   IPropertyPageSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnStatusChange*: proc(self: ptr IPropertyPageSite, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetLocaleID*: proc(self: ptr IPropertyPageSite, pLocaleID: ptr LCID): HRESULT {.stdcall.}
-    GetPageContainer*: proc(self: ptr IPropertyPageSite, ppUnk: ptr ptr IUnknown): HRESULT {.stdcall.}
-    TranslateAccelerator*: proc(self: ptr IPropertyPageSite, pMsg: ptr MSG): HRESULT {.stdcall.}
+    OnStatusChange*:
+      proc(self: ptr IPropertyPageSite, dwFlags: DWORD): HRESULT {.stdcall.}
+    GetLocaleID*:
+      proc(self: ptr IPropertyPageSite, pLocaleID: ptr LCID): HRESULT {.stdcall.}
+    GetPageContainer*:
+      proc(self: ptr IPropertyPageSite, ppUnk: ptr ptr IUnknown): HRESULT {.stdcall.}
+    TranslateAccelerator*:
+      proc(self: ptr IPropertyPageSite, pMsg: ptr MSG): HRESULT {.stdcall.}
+
   PROPPAGEINFO* {.pure.} = object
     cb*: ULONG
     pszTitle*: LPOLESTR
@@ -2350,77 +4152,138 @@
     pszDocString*: LPOLESTR
     pszHelpFile*: LPOLESTR
     dwHelpContext*: DWORD
+
   IPropertyPage* {.pure.} = object
     lpVtbl*: ptr IPropertyPageVtbl
+
   IPropertyPageVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetPageSite*: proc(self: ptr IPropertyPage, pPageSite: ptr IPropertyPageSite): HRESULT {.stdcall.}
-    Activate*: proc(self: ptr IPropertyPage, hWndParent: HWND, pRect: LPCRECT, bModal: WINBOOL): HRESULT {.stdcall.}
+    SetPageSite*: proc(
+      self: ptr IPropertyPage, pPageSite: ptr IPropertyPageSite
+    ): HRESULT {.stdcall.}
+    Activate*: proc(
+      self: ptr IPropertyPage, hWndParent: HWND, pRect: LPCRECT, bModal: WINBOOL
+    ): HRESULT {.stdcall.}
     Deactivate*: proc(self: ptr IPropertyPage): HRESULT {.stdcall.}
-    GetPageInfo*: proc(self: ptr IPropertyPage, pPageInfo: ptr PROPPAGEINFO): HRESULT {.stdcall.}
-    SetObjects*: proc(self: ptr IPropertyPage, cObjects: ULONG, ppUnk: ptr ptr IUnknown): HRESULT {.stdcall.}
+    GetPageInfo*:
+      proc(self: ptr IPropertyPage, pPageInfo: ptr PROPPAGEINFO): HRESULT {.stdcall.}
+    SetObjects*: proc(
+      self: ptr IPropertyPage, cObjects: ULONG, ppUnk: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
     Show*: proc(self: ptr IPropertyPage, nCmdShow: UINT): HRESULT {.stdcall.}
     Move*: proc(self: ptr IPropertyPage, pRect: LPCRECT): HRESULT {.stdcall.}
     IsPageDirty*: proc(self: ptr IPropertyPage): HRESULT {.stdcall.}
     Apply*: proc(self: ptr IPropertyPage): HRESULT {.stdcall.}
     Help*: proc(self: ptr IPropertyPage, pszHelpDir: LPCOLESTR): HRESULT {.stdcall.}
-    TranslateAccelerator*: proc(self: ptr IPropertyPage, pMsg: ptr MSG): HRESULT {.stdcall.}
+    TranslateAccelerator*:
+      proc(self: ptr IPropertyPage, pMsg: ptr MSG): HRESULT {.stdcall.}
+
   LPPROPERTYPAGE* = ptr IPropertyPage
   LPPROPPAGEINFO* = ptr PROPPAGEINFO
   IPropertyPage2* {.pure.} = object
     lpVtbl*: ptr IPropertyPage2Vtbl
+
   IPropertyPage2Vtbl* {.pure, inheritable.} = object of IPropertyPageVtbl
     EditProperty*: proc(self: ptr IPropertyPage2, dispID: DISPID): HRESULT {.stdcall.}
+
   LPPROPERTYPAGE2* = ptr IPropertyPage2
   LPPROPERTYPAGESITE* = ptr IPropertyPageSite
   IPropertyNotifySink* {.pure.} = object
     lpVtbl*: ptr IPropertyNotifySinkVtbl
+
   IPropertyNotifySinkVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     OnChanged*: proc(self: ptr IPropertyNotifySink, dispID: DISPID): HRESULT {.stdcall.}
-    OnRequestEdit*: proc(self: ptr IPropertyNotifySink, dispID: DISPID): HRESULT {.stdcall.}
+    OnRequestEdit*:
+      proc(self: ptr IPropertyNotifySink, dispID: DISPID): HRESULT {.stdcall.}
+
   LPPROPERTYNOTIFYSINK* = ptr IPropertyNotifySink
   CAUUID* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr GUID
+
   ISpecifyPropertyPages* {.pure.} = object
     lpVtbl*: ptr ISpecifyPropertyPagesVtbl
+
   ISpecifyPropertyPagesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetPages*: proc(self: ptr ISpecifyPropertyPages, pPages: ptr CAUUID): HRESULT {.stdcall.}
+    GetPages*:
+      proc(self: ptr ISpecifyPropertyPages, pPages: ptr CAUUID): HRESULT {.stdcall.}
+
   LPSPECIFYPROPERTYPAGES* = ptr ISpecifyPropertyPages
   LPCAUUID* = ptr CAUUID
   IPersistMemory* {.pure.} = object
     lpVtbl*: ptr IPersistMemoryVtbl
+
   IPersistMemoryVtbl* {.pure, inheritable.} = object of IPersistVtbl
     IsDirty*: proc(self: ptr IPersistMemory): HRESULT {.stdcall.}
-    Load*: proc(self: ptr IPersistMemory, pMem: LPVOID, cbSize: ULONG): HRESULT {.stdcall.}
-    Save*: proc(self: ptr IPersistMemory, pMem: LPVOID, fClearDirty: WINBOOL, cbSize: ULONG): HRESULT {.stdcall.}
+    Load*:
+      proc(self: ptr IPersistMemory, pMem: LPVOID, cbSize: ULONG): HRESULT {.stdcall.}
+    Save*: proc(
+      self: ptr IPersistMemory, pMem: LPVOID, fClearDirty: WINBOOL, cbSize: ULONG
+    ): HRESULT {.stdcall.}
     GetSizeMax*: proc(self: ptr IPersistMemory, pCbSize: ptr ULONG): HRESULT {.stdcall.}
     InitNew*: proc(self: ptr IPersistMemory): HRESULT {.stdcall.}
+
   LPPERSISTMEMORY* = ptr IPersistMemory
   IPersistStreamInit* {.pure.} = object
     lpVtbl*: ptr IPersistStreamInitVtbl
+
   IPersistStreamInitVtbl* {.pure, inheritable.} = object of IPersistVtbl
     IsDirty*: proc(self: ptr IPersistStreamInit): HRESULT {.stdcall.}
     Load*: proc(self: ptr IPersistStreamInit, pStm: LPSTREAM): HRESULT {.stdcall.}
-    Save*: proc(self: ptr IPersistStreamInit, pStm: LPSTREAM, fClearDirty: WINBOOL): HRESULT {.stdcall.}
-    GetSizeMax*: proc(self: ptr IPersistStreamInit, pCbSize: ptr ULARGE_INTEGER): HRESULT {.stdcall.}
+    Save*: proc(
+      self: ptr IPersistStreamInit, pStm: LPSTREAM, fClearDirty: WINBOOL
+    ): HRESULT {.stdcall.}
+    GetSizeMax*: proc(
+      self: ptr IPersistStreamInit, pCbSize: ptr ULARGE_INTEGER
+    ): HRESULT {.stdcall.}
     InitNew*: proc(self: ptr IPersistStreamInit): HRESULT {.stdcall.}
+
   LPPERSISTSTREAMINIT* = ptr IPersistStreamInit
   IPersistPropertyBag* {.pure.} = object
     lpVtbl*: ptr IPersistPropertyBagVtbl
+
   IPersistPropertyBagVtbl* {.pure, inheritable.} = object of IPersistVtbl
     InitNew*: proc(self: ptr IPersistPropertyBag): HRESULT {.stdcall.}
-    Load*: proc(self: ptr IPersistPropertyBag, pPropBag: ptr IPropertyBag, pErrorLog: ptr IErrorLog): HRESULT {.stdcall.}
-    Save*: proc(self: ptr IPersistPropertyBag, pPropBag: ptr IPropertyBag, fClearDirty: WINBOOL, fSaveAllProperties: WINBOOL): HRESULT {.stdcall.}
+    Load*: proc(
+      self: ptr IPersistPropertyBag,
+      pPropBag: ptr IPropertyBag,
+      pErrorLog: ptr IErrorLog,
+    ): HRESULT {.stdcall.}
+    Save*: proc(
+      self: ptr IPersistPropertyBag,
+      pPropBag: ptr IPropertyBag,
+      fClearDirty: WINBOOL,
+      fSaveAllProperties: WINBOOL,
+    ): HRESULT {.stdcall.}
+
   LPPERSISTPROPERTYBAG* = ptr IPersistPropertyBag
   ISimpleFrameSite* {.pure.} = object
     lpVtbl*: ptr ISimpleFrameSiteVtbl
+
   ISimpleFrameSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    PreMessageFilter*: proc(self: ptr ISimpleFrameSite, hWnd: HWND, msg: UINT, wp: WPARAM, lp: LPARAM, plResult: ptr LRESULT, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
-    PostMessageFilter*: proc(self: ptr ISimpleFrameSite, hWnd: HWND, msg: UINT, wp: WPARAM, lp: LPARAM, plResult: ptr LRESULT, dwCookie: DWORD): HRESULT {.stdcall.}
+    PreMessageFilter*: proc(
+      self: ptr ISimpleFrameSite,
+      hWnd: HWND,
+      msg: UINT,
+      wp: WPARAM,
+      lp: LPARAM,
+      plResult: ptr LRESULT,
+      pdwCookie: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    PostMessageFilter*: proc(
+      self: ptr ISimpleFrameSite,
+      hWnd: HWND,
+      msg: UINT,
+      wp: WPARAM,
+      lp: LPARAM,
+      plResult: ptr LRESULT,
+      dwCookie: DWORD,
+    ): HRESULT {.stdcall.}
+
   LPSIMPLEFRAMESITE* = ptr ISimpleFrameSite
   TEXTMETRICOLE* = TEXTMETRICW
   IFont* {.pure.} = object
     lpVtbl*: ptr IFontVtbl
+
   IFontVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     get_Name*: proc(self: ptr IFont, pName: ptr BSTR): HRESULT {.stdcall.}
     put_Name*: proc(self: ptr IFont, name: BSTR): HRESULT {.stdcall.}
@@ -2432,8 +4295,10 @@
     put_Italic*: proc(self: ptr IFont, italic: WINBOOL): HRESULT {.stdcall.}
     get_Underline*: proc(self: ptr IFont, pUnderline: ptr WINBOOL): HRESULT {.stdcall.}
     put_Underline*: proc(self: ptr IFont, underline: WINBOOL): HRESULT {.stdcall.}
-    get_Strikethrough*: proc(self: ptr IFont, pStrikethrough: ptr WINBOOL): HRESULT {.stdcall.}
-    put_Strikethrough*: proc(self: ptr IFont, strikethrough: WINBOOL): HRESULT {.stdcall.}
+    get_Strikethrough*:
+      proc(self: ptr IFont, pStrikethrough: ptr WINBOOL): HRESULT {.stdcall.}
+    put_Strikethrough*:
+      proc(self: ptr IFont, strikethrough: WINBOOL): HRESULT {.stdcall.}
     get_Weight*: proc(self: ptr IFont, pWeight: ptr SHORT): HRESULT {.stdcall.}
     put_Weight*: proc(self: ptr IFont, weight: SHORT): HRESULT {.stdcall.}
     get_Charset*: proc(self: ptr IFont, pCharset: ptr SHORT): HRESULT {.stdcall.}
@@ -2441,171 +4306,366 @@
     get_hFont*: proc(self: ptr IFont, phFont: ptr HFONT): HRESULT {.stdcall.}
     Clone*: proc(self: ptr IFont, ppFont: ptr ptr IFont): HRESULT {.stdcall.}
     IsEqual*: proc(self: ptr IFont, pFontOther: ptr IFont): HRESULT {.stdcall.}
-    SetRatio*: proc(self: ptr IFont, cyLogical: LONG, cyHimetric: LONG): HRESULT {.stdcall.}
-    QueryTextMetrics*: proc(self: ptr IFont, pTM: ptr TEXTMETRICOLE): HRESULT {.stdcall.}
+    SetRatio*:
+      proc(self: ptr IFont, cyLogical: LONG, cyHimetric: LONG): HRESULT {.stdcall.}
+    QueryTextMetrics*:
+      proc(self: ptr IFont, pTM: ptr TEXTMETRICOLE): HRESULT {.stdcall.}
     AddRefHfont*: proc(self: ptr IFont, hFont: HFONT): HRESULT {.stdcall.}
     ReleaseHfont*: proc(self: ptr IFont, hFont: HFONT): HRESULT {.stdcall.}
     SetHdc*: proc(self: ptr IFont, hDC: HDC): HRESULT {.stdcall.}
+
   LPFONT* = ptr IFont
   LPTEXTMETRICOLE* = ptr TEXTMETRICOLE
   OLE_HANDLE* = UINT
   IPicture* {.pure.} = object
     lpVtbl*: ptr IPictureVtbl
+
   IPictureVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     get_Handle*: proc(self: ptr IPicture, pHandle: ptr OLE_HANDLE): HRESULT {.stdcall.}
     get_hPal*: proc(self: ptr IPicture, phPal: ptr OLE_HANDLE): HRESULT {.stdcall.}
     get_Type*: proc(self: ptr IPicture, pType: ptr SHORT): HRESULT {.stdcall.}
-    get_Width*: proc(self: ptr IPicture, pWidth: ptr OLE_XSIZE_HIMETRIC): HRESULT {.stdcall.}
-    get_Height*: proc(self: ptr IPicture, pHeight: ptr OLE_YSIZE_HIMETRIC): HRESULT {.stdcall.}
-    Render*: proc(self: ptr IPicture, hDC: HDC, x: LONG, y: LONG, cx: LONG, cy: LONG, xSrc: OLE_XPOS_HIMETRIC, ySrc: OLE_YPOS_HIMETRIC, cxSrc: OLE_XSIZE_HIMETRIC, cySrc: OLE_YSIZE_HIMETRIC, pRcWBounds: LPCRECT): HRESULT {.stdcall.}
+    get_Width*:
+      proc(self: ptr IPicture, pWidth: ptr OLE_XSIZE_HIMETRIC): HRESULT {.stdcall.}
+    get_Height*:
+      proc(self: ptr IPicture, pHeight: ptr OLE_YSIZE_HIMETRIC): HRESULT {.stdcall.}
+    Render*: proc(
+      self: ptr IPicture,
+      hDC: HDC,
+      x: LONG,
+      y: LONG,
+      cx: LONG,
+      cy: LONG,
+      xSrc: OLE_XPOS_HIMETRIC,
+      ySrc: OLE_YPOS_HIMETRIC,
+      cxSrc: OLE_XSIZE_HIMETRIC,
+      cySrc: OLE_YSIZE_HIMETRIC,
+      pRcWBounds: LPCRECT,
+    ): HRESULT {.stdcall.}
     set_hPal*: proc(self: ptr IPicture, hPal: OLE_HANDLE): HRESULT {.stdcall.}
     get_CurDC*: proc(self: ptr IPicture, phDC: ptr HDC): HRESULT {.stdcall.}
-    SelectPicture*: proc(self: ptr IPicture, hDCIn: HDC, phDCOut: ptr HDC, phBmpOut: ptr OLE_HANDLE): HRESULT {.stdcall.}
-    get_KeepOriginalFormat*: proc(self: ptr IPicture, pKeep: ptr WINBOOL): HRESULT {.stdcall.}
-    put_KeepOriginalFormat*: proc(self: ptr IPicture, keep: WINBOOL): HRESULT {.stdcall.}
+    SelectPicture*: proc(
+      self: ptr IPicture, hDCIn: HDC, phDCOut: ptr HDC, phBmpOut: ptr OLE_HANDLE
+    ): HRESULT {.stdcall.}
+    get_KeepOriginalFormat*:
+      proc(self: ptr IPicture, pKeep: ptr WINBOOL): HRESULT {.stdcall.}
+    put_KeepOriginalFormat*:
+      proc(self: ptr IPicture, keep: WINBOOL): HRESULT {.stdcall.}
     PictureChanged*: proc(self: ptr IPicture): HRESULT {.stdcall.}
-    SaveAsFile*: proc(self: ptr IPicture, pStream: LPSTREAM, fSaveMemCopy: WINBOOL, pCbSize: ptr LONG): HRESULT {.stdcall.}
+    SaveAsFile*: proc(
+      self: ptr IPicture, pStream: LPSTREAM, fSaveMemCopy: WINBOOL, pCbSize: ptr LONG
+    ): HRESULT {.stdcall.}
     get_Attributes*: proc(self: ptr IPicture, pDwAttr: ptr DWORD): HRESULT {.stdcall.}
+
   LPPICTURE* = ptr IPicture
   IPicture2* {.pure.} = object
     lpVtbl*: ptr IPicture2Vtbl
+
   IPicture2Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
     get_Handle*: proc(self: ptr IPicture2, pHandle: ptr HHANDLE): HRESULT {.stdcall.}
     get_hPal*: proc(self: ptr IPicture2, phPal: ptr HHANDLE): HRESULT {.stdcall.}
     get_Type*: proc(self: ptr IPicture2, pType: ptr SHORT): HRESULT {.stdcall.}
-    get_Width*: proc(self: ptr IPicture2, pWidth: ptr OLE_XSIZE_HIMETRIC): HRESULT {.stdcall.}
-    get_Height*: proc(self: ptr IPicture2, pHeight: ptr OLE_YSIZE_HIMETRIC): HRESULT {.stdcall.}
-    Render*: proc(self: ptr IPicture2, hDC: HDC, x: LONG, y: LONG, cx: LONG, cy: LONG, xSrc: OLE_XPOS_HIMETRIC, ySrc: OLE_YPOS_HIMETRIC, cxSrc: OLE_XSIZE_HIMETRIC, cySrc: OLE_YSIZE_HIMETRIC, pRcWBounds: LPCRECT): HRESULT {.stdcall.}
+    get_Width*:
+      proc(self: ptr IPicture2, pWidth: ptr OLE_XSIZE_HIMETRIC): HRESULT {.stdcall.}
+    get_Height*:
+      proc(self: ptr IPicture2, pHeight: ptr OLE_YSIZE_HIMETRIC): HRESULT {.stdcall.}
+    Render*: proc(
+      self: ptr IPicture2,
+      hDC: HDC,
+      x: LONG,
+      y: LONG,
+      cx: LONG,
+      cy: LONG,
+      xSrc: OLE_XPOS_HIMETRIC,
+      ySrc: OLE_YPOS_HIMETRIC,
+      cxSrc: OLE_XSIZE_HIMETRIC,
+      cySrc: OLE_YSIZE_HIMETRIC,
+      pRcWBounds: LPCRECT,
+    ): HRESULT {.stdcall.}
     set_hPal*: proc(self: ptr IPicture2, hPal: HHANDLE): HRESULT {.stdcall.}
     get_CurDC*: proc(self: ptr IPicture2, phDC: ptr HDC): HRESULT {.stdcall.}
-    SelectPicture*: proc(self: ptr IPicture2, hDCIn: HDC, phDCOut: ptr HDC, phBmpOut: ptr HHANDLE): HRESULT {.stdcall.}
-    get_KeepOriginalFormat*: proc(self: ptr IPicture2, pKeep: ptr WINBOOL): HRESULT {.stdcall.}
-    put_KeepOriginalFormat*: proc(self: ptr IPicture2, keep: WINBOOL): HRESULT {.stdcall.}
+    SelectPicture*: proc(
+      self: ptr IPicture2, hDCIn: HDC, phDCOut: ptr HDC, phBmpOut: ptr HHANDLE
+    ): HRESULT {.stdcall.}
+    get_KeepOriginalFormat*:
+      proc(self: ptr IPicture2, pKeep: ptr WINBOOL): HRESULT {.stdcall.}
+    put_KeepOriginalFormat*:
+      proc(self: ptr IPicture2, keep: WINBOOL): HRESULT {.stdcall.}
     PictureChanged*: proc(self: ptr IPicture2): HRESULT {.stdcall.}
-    SaveAsFile*: proc(self: ptr IPicture2, pStream: LPSTREAM, fSaveMemCopy: WINBOOL, pCbSize: ptr LONG): HRESULT {.stdcall.}
+    SaveAsFile*: proc(
+      self: ptr IPicture2, pStream: LPSTREAM, fSaveMemCopy: WINBOOL, pCbSize: ptr LONG
+    ): HRESULT {.stdcall.}
     get_Attributes*: proc(self: ptr IPicture2, pDwAttr: ptr DWORD): HRESULT {.stdcall.}
+
   LPPICTURE2* = ptr IPicture2
   IFontEventsDisp* {.pure.} = object
     lpVtbl*: ptr IFontEventsDispVtbl
+
   IFontEventsDispVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   LPFONTEVENTS* = ptr IFontEventsDisp
   IFontDisp* {.pure.} = object
     lpVtbl*: ptr IFontDispVtbl
+
   IFontDispVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   LPFONTDISP* = ptr IFontDisp
   IPictureDisp* {.pure.} = object
     lpVtbl*: ptr IPictureDispVtbl
+
   IPictureDispVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   LPPICTUREDISP* = ptr IPictureDisp
   IOleInPlaceObjectWindowless* {.pure.} = object
     lpVtbl*: ptr IOleInPlaceObjectWindowlessVtbl
+
   IOleInPlaceObjectWindowlessVtbl* {.pure, inheritable.} = object of IOleInPlaceObjectVtbl
-    OnWindowMessage*: proc(self: ptr IOleInPlaceObjectWindowless, msg: UINT, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.stdcall.}
-    GetDropTarget*: proc(self: ptr IOleInPlaceObjectWindowless, ppDropTarget: ptr ptr IDropTarget): HRESULT {.stdcall.}
+    OnWindowMessage*: proc(
+      self: ptr IOleInPlaceObjectWindowless,
+      msg: UINT,
+      wParam: WPARAM,
+      lParam: LPARAM,
+      plResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+    GetDropTarget*: proc(
+      self: ptr IOleInPlaceObjectWindowless, ppDropTarget: ptr ptr IDropTarget
+    ): HRESULT {.stdcall.}
+
   LPOLEINPLACEOBJECTWINDOWLESS* = ptr IOleInPlaceObjectWindowless
   IOleInPlaceSiteEx* {.pure.} = object
     lpVtbl*: ptr IOleInPlaceSiteExVtbl
+
   IOleInPlaceSiteExVtbl* {.pure, inheritable.} = object of IOleInPlaceSiteVtbl
-    OnInPlaceActivateEx*: proc(self: ptr IOleInPlaceSiteEx, pfNoRedraw: ptr WINBOOL, dwFlags: DWORD): HRESULT {.stdcall.}
-    OnInPlaceDeactivateEx*: proc(self: ptr IOleInPlaceSiteEx, fNoRedraw: WINBOOL): HRESULT {.stdcall.}
+    OnInPlaceActivateEx*: proc(
+      self: ptr IOleInPlaceSiteEx, pfNoRedraw: ptr WINBOOL, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
+    OnInPlaceDeactivateEx*:
+      proc(self: ptr IOleInPlaceSiteEx, fNoRedraw: WINBOOL): HRESULT {.stdcall.}
     RequestUIActivate*: proc(self: ptr IOleInPlaceSiteEx): HRESULT {.stdcall.}
+
   LPOLEINPLACESITEEX* = ptr IOleInPlaceSiteEx
   IOleInPlaceSiteWindowless* {.pure.} = object
     lpVtbl*: ptr IOleInPlaceSiteWindowlessVtbl
+
   IOleInPlaceSiteWindowlessVtbl* {.pure, inheritable.} = object of IOleInPlaceSiteExVtbl
-    CanWindowlessActivate*: proc(self: ptr IOleInPlaceSiteWindowless): HRESULT {.stdcall.}
+    CanWindowlessActivate*:
+      proc(self: ptr IOleInPlaceSiteWindowless): HRESULT {.stdcall.}
     GetCapture*: proc(self: ptr IOleInPlaceSiteWindowless): HRESULT {.stdcall.}
-    SetCapture*: proc(self: ptr IOleInPlaceSiteWindowless, fCapture: WINBOOL): HRESULT {.stdcall.}
+    SetCapture*:
+      proc(self: ptr IOleInPlaceSiteWindowless, fCapture: WINBOOL): HRESULT {.stdcall.}
     GetFocus*: proc(self: ptr IOleInPlaceSiteWindowless): HRESULT {.stdcall.}
-    SetFocus*: proc(self: ptr IOleInPlaceSiteWindowless, fFocus: WINBOOL): HRESULT {.stdcall.}
-    GetDC*: proc(self: ptr IOleInPlaceSiteWindowless, pRect: LPCRECT, grfFlags: DWORD, phDC: ptr HDC): HRESULT {.stdcall.}
+    SetFocus*:
+      proc(self: ptr IOleInPlaceSiteWindowless, fFocus: WINBOOL): HRESULT {.stdcall.}
+    GetDC*: proc(
+      self: ptr IOleInPlaceSiteWindowless,
+      pRect: LPCRECT,
+      grfFlags: DWORD,
+      phDC: ptr HDC,
+    ): HRESULT {.stdcall.}
     ReleaseDC*: proc(self: ptr IOleInPlaceSiteWindowless, hDC: HDC): HRESULT {.stdcall.}
-    InvalidateRect*: proc(self: ptr IOleInPlaceSiteWindowless, pRect: LPCRECT, fErase: WINBOOL): HRESULT {.stdcall.}
-    InvalidateRgn*: proc(self: ptr IOleInPlaceSiteWindowless, hRGN: HRGN, fErase: WINBOOL): HRESULT {.stdcall.}
-    ScrollRect*: proc(self: ptr IOleInPlaceSiteWindowless, dx: INT, dy: INT, pRectScroll: LPCRECT, pRectClip: LPCRECT): HRESULT {.stdcall.}
-    AdjustRect*: proc(self: ptr IOleInPlaceSiteWindowless, prc: LPRECT): HRESULT {.stdcall.}
-    OnDefWindowMessage*: proc(self: ptr IOleInPlaceSiteWindowless, msg: UINT, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.stdcall.}
+    InvalidateRect*: proc(
+      self: ptr IOleInPlaceSiteWindowless, pRect: LPCRECT, fErase: WINBOOL
+    ): HRESULT {.stdcall.}
+    InvalidateRgn*: proc(
+      self: ptr IOleInPlaceSiteWindowless, hRGN: HRGN, fErase: WINBOOL
+    ): HRESULT {.stdcall.}
+    ScrollRect*: proc(
+      self: ptr IOleInPlaceSiteWindowless,
+      dx: INT,
+      dy: INT,
+      pRectScroll: LPCRECT,
+      pRectClip: LPCRECT,
+    ): HRESULT {.stdcall.}
+    AdjustRect*:
+      proc(self: ptr IOleInPlaceSiteWindowless, prc: LPRECT): HRESULT {.stdcall.}
+    OnDefWindowMessage*: proc(
+      self: ptr IOleInPlaceSiteWindowless,
+      msg: UINT,
+      wParam: WPARAM,
+      lParam: LPARAM,
+      plResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+
   LPOLEINPLACESITEWINDOWLESS* = ptr IOleInPlaceSiteWindowless
   DVEXTENTINFO* {.pure.} = object
     cb*: ULONG
     dwExtentMode*: DWORD
     sizelProposed*: SIZEL
+
   IViewObjectEx* {.pure.} = object
     lpVtbl*: ptr IViewObjectExVtbl
+
   IViewObjectExVtbl* {.pure, inheritable.} = object of IViewObject2Vtbl
-    GetRect*: proc(self: ptr IViewObjectEx, dwAspect: DWORD, pRect: LPRECTL): HRESULT {.stdcall.}
-    GetViewStatus*: proc(self: ptr IViewObjectEx, pdwStatus: ptr DWORD): HRESULT {.stdcall.}
-    QueryHitPoint*: proc(self: ptr IViewObjectEx, dwAspect: DWORD, pRectBounds: LPCRECT, ptlLoc: POINT, lCloseHint: LONG, pHitResult: ptr DWORD): HRESULT {.stdcall.}
-    QueryHitRect*: proc(self: ptr IViewObjectEx, dwAspect: DWORD, pRectBounds: LPCRECT, pRectLoc: LPCRECT, lCloseHint: LONG, pHitResult: ptr DWORD): HRESULT {.stdcall.}
-    GetNaturalExtent*: proc(self: ptr IViewObjectEx, dwAspect: DWORD, lindex: LONG, ptd: ptr DVTARGETDEVICE, hicTargetDev: HDC, pExtentInfo: ptr DVEXTENTINFO, pSizel: LPSIZEL): HRESULT {.stdcall.}
+    GetRect*: proc(self: ptr IViewObjectEx, dwAspect: DWORD, pRect: LPRECTL): HRESULT {.
+      stdcall
+    .}
+    GetViewStatus*:
+      proc(self: ptr IViewObjectEx, pdwStatus: ptr DWORD): HRESULT {.stdcall.}
+    QueryHitPoint*: proc(
+      self: ptr IViewObjectEx,
+      dwAspect: DWORD,
+      pRectBounds: LPCRECT,
+      ptlLoc: POINT,
+      lCloseHint: LONG,
+      pHitResult: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    QueryHitRect*: proc(
+      self: ptr IViewObjectEx,
+      dwAspect: DWORD,
+      pRectBounds: LPCRECT,
+      pRectLoc: LPCRECT,
+      lCloseHint: LONG,
+      pHitResult: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetNaturalExtent*: proc(
+      self: ptr IViewObjectEx,
+      dwAspect: DWORD,
+      lindex: LONG,
+      ptd: ptr DVTARGETDEVICE,
+      hicTargetDev: HDC,
+      pExtentInfo: ptr DVEXTENTINFO,
+      pSizel: LPSIZEL,
+    ): HRESULT {.stdcall.}
+
   LPVIEWOBJECTEX* = ptr IViewObjectEx
   IOleUndoUnit* {.pure.} = object
     lpVtbl*: ptr IOleUndoUnitVtbl
+
   IOleUndoUnitVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Do*: proc(self: ptr IOleUndoUnit, pUndoManager: ptr IOleUndoManager): HRESULT {.stdcall.}
+    Do*: proc(self: ptr IOleUndoUnit, pUndoManager: ptr IOleUndoManager): HRESULT {.
+      stdcall
+    .}
     GetDescription*: proc(self: ptr IOleUndoUnit, pBstr: ptr BSTR): HRESULT {.stdcall.}
-    GetUnitType*: proc(self: ptr IOleUndoUnit, pClsid: ptr CLSID, plID: ptr LONG): HRESULT {.stdcall.}
+    GetUnitType*: proc(
+      self: ptr IOleUndoUnit, pClsid: ptr CLSID, plID: ptr LONG
+    ): HRESULT {.stdcall.}
     OnNextAdd*: proc(self: ptr IOleUndoUnit): HRESULT {.stdcall.}
+
   IEnumOleUndoUnits* {.pure.} = object
     lpVtbl*: ptr IEnumOleUndoUnitsVtbl
+
   IEnumOleUndoUnitsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumOleUndoUnits, cElt: ULONG, rgElt: ptr ptr IOleUndoUnit, pcEltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumOleUndoUnits,
+      cElt: ULONG,
+      rgElt: ptr ptr IOleUndoUnit,
+      pcEltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumOleUndoUnits, cElt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumOleUndoUnits): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumOleUndoUnits, ppEnum: ptr ptr IEnumOleUndoUnits): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr IEnumOleUndoUnits, ppEnum: ptr ptr IEnumOleUndoUnits
+    ): HRESULT {.stdcall.}
+
   IOleUndoManager* {.pure.} = object
     lpVtbl*: ptr IOleUndoManagerVtbl
+
   IOleUndoManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Open*: proc(self: ptr IOleUndoManager, pPUU: ptr IOleParentUndoUnit): HRESULT {.stdcall.}
-    Close*: proc(self: ptr IOleUndoManager, pPUU: ptr IOleParentUndoUnit, fCommit: WINBOOL): HRESULT {.stdcall.}
+    Open*:
+      proc(self: ptr IOleUndoManager, pPUU: ptr IOleParentUndoUnit): HRESULT {.stdcall.}
+    Close*: proc(
+      self: ptr IOleUndoManager, pPUU: ptr IOleParentUndoUnit, fCommit: WINBOOL
+    ): HRESULT {.stdcall.}
     Add*: proc(self: ptr IOleUndoManager, pUU: ptr IOleUndoUnit): HRESULT {.stdcall.}
-    GetOpenParentState*: proc(self: ptr IOleUndoManager, pdwState: ptr DWORD): HRESULT {.stdcall.}
-    DiscardFrom*: proc(self: ptr IOleUndoManager, pUU: ptr IOleUndoUnit): HRESULT {.stdcall.}
+    GetOpenParentState*:
+      proc(self: ptr IOleUndoManager, pdwState: ptr DWORD): HRESULT {.stdcall.}
+    DiscardFrom*:
+      proc(self: ptr IOleUndoManager, pUU: ptr IOleUndoUnit): HRESULT {.stdcall.}
     UndoTo*: proc(self: ptr IOleUndoManager, pUU: ptr IOleUndoUnit): HRESULT {.stdcall.}
     RedoTo*: proc(self: ptr IOleUndoManager, pUU: ptr IOleUndoUnit): HRESULT {.stdcall.}
-    EnumUndoable*: proc(self: ptr IOleUndoManager, ppEnum: ptr ptr IEnumOleUndoUnits): HRESULT {.stdcall.}
-    EnumRedoable*: proc(self: ptr IOleUndoManager, ppEnum: ptr ptr IEnumOleUndoUnits): HRESULT {.stdcall.}
-    GetLastUndoDescription*: proc(self: ptr IOleUndoManager, pBstr: ptr BSTR): HRESULT {.stdcall.}
-    GetLastRedoDescription*: proc(self: ptr IOleUndoManager, pBstr: ptr BSTR): HRESULT {.stdcall.}
+    EnumUndoable*: proc(
+      self: ptr IOleUndoManager, ppEnum: ptr ptr IEnumOleUndoUnits
+    ): HRESULT {.stdcall.}
+    EnumRedoable*: proc(
+      self: ptr IOleUndoManager, ppEnum: ptr ptr IEnumOleUndoUnits
+    ): HRESULT {.stdcall.}
+    GetLastUndoDescription*:
+      proc(self: ptr IOleUndoManager, pBstr: ptr BSTR): HRESULT {.stdcall.}
+    GetLastRedoDescription*:
+      proc(self: ptr IOleUndoManager, pBstr: ptr BSTR): HRESULT {.stdcall.}
     Enable*: proc(self: ptr IOleUndoManager, fEnable: WINBOOL): HRESULT {.stdcall.}
+
   IOleParentUndoUnit* {.pure.} = object
     lpVtbl*: ptr IOleParentUndoUnitVtbl
+
   IOleParentUndoUnitVtbl* {.pure, inheritable.} = object of IOleUndoUnitVtbl
-    Open*: proc(self: ptr IOleParentUndoUnit, pPUU: ptr IOleParentUndoUnit): HRESULT {.stdcall.}
-    Close*: proc(self: ptr IOleParentUndoUnit, pPUU: ptr IOleParentUndoUnit, fCommit: WINBOOL): HRESULT {.stdcall.}
+    Open*: proc(self: ptr IOleParentUndoUnit, pPUU: ptr IOleParentUndoUnit): HRESULT {.
+      stdcall
+    .}
+    Close*: proc(
+      self: ptr IOleParentUndoUnit, pPUU: ptr IOleParentUndoUnit, fCommit: WINBOOL
+    ): HRESULT {.stdcall.}
     Add*: proc(self: ptr IOleParentUndoUnit, pUU: ptr IOleUndoUnit): HRESULT {.stdcall.}
-    FindUnit*: proc(self: ptr IOleParentUndoUnit, pUU: ptr IOleUndoUnit): HRESULT {.stdcall.}
-    GetParentState*: proc(self: ptr IOleParentUndoUnit, pdwState: ptr DWORD): HRESULT {.stdcall.}
+    FindUnit*:
+      proc(self: ptr IOleParentUndoUnit, pUU: ptr IOleUndoUnit): HRESULT {.stdcall.}
+    GetParentState*:
+      proc(self: ptr IOleParentUndoUnit, pdwState: ptr DWORD): HRESULT {.stdcall.}
+
   LPOLEUNDOUNIT* = ptr IOleUndoUnit
   LPOLEPARENTUNDOUNIT* = ptr IOleParentUndoUnit
   LPENUMOLEUNDOUNITS* = ptr IEnumOleUndoUnits
   LPOLEUNDOMANAGER* = ptr IOleUndoManager
   IPointerInactive* {.pure.} = object
     lpVtbl*: ptr IPointerInactiveVtbl
+
   IPointerInactiveVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetActivationPolicy*: proc(self: ptr IPointerInactive, pdwPolicy: ptr DWORD): HRESULT {.stdcall.}
-    OnInactiveMouseMove*: proc(self: ptr IPointerInactive, pRectBounds: LPCRECT, x: LONG, y: LONG, grfKeyState: DWORD): HRESULT {.stdcall.}
-    OnInactiveSetCursor*: proc(self: ptr IPointerInactive, pRectBounds: LPCRECT, x: LONG, y: LONG, dwMouseMsg: DWORD, fSetAlways: WINBOOL): HRESULT {.stdcall.}
+    GetActivationPolicy*:
+      proc(self: ptr IPointerInactive, pdwPolicy: ptr DWORD): HRESULT {.stdcall.}
+    OnInactiveMouseMove*: proc(
+      self: ptr IPointerInactive,
+      pRectBounds: LPCRECT,
+      x: LONG,
+      y: LONG,
+      grfKeyState: DWORD,
+    ): HRESULT {.stdcall.}
+    OnInactiveSetCursor*: proc(
+      self: ptr IPointerInactive,
+      pRectBounds: LPCRECT,
+      x: LONG,
+      y: LONG,
+      dwMouseMsg: DWORD,
+      fSetAlways: WINBOOL,
+    ): HRESULT {.stdcall.}
+
   LPPOINTERINACTIVE* = ptr IPointerInactive
   IObjectWithSite* {.pure.} = object
     lpVtbl*: ptr IObjectWithSiteVtbl
+
   IObjectWithSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetSite*: proc(self: ptr IObjectWithSite, pUnkSite: ptr IUnknown): HRESULT {.stdcall.}
-    GetSite*: proc(self: ptr IObjectWithSite, riid: REFIID, ppvSite: ptr pointer): HRESULT {.stdcall.}
+    SetSite*:
+      proc(self: ptr IObjectWithSite, pUnkSite: ptr IUnknown): HRESULT {.stdcall.}
+    GetSite*: proc(
+      self: ptr IObjectWithSite, riid: REFIID, ppvSite: ptr pointer
+    ): HRESULT {.stdcall.}
+
   LPOBJECTWITHSITE* = ptr IObjectWithSite
   CALPOLESTR* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr LPOLESTR
+
   CADWORD* {.pure.} = object
     cElems*: ULONG
     pElems*: ptr DWORD
+
   IPerPropertyBrowsing* {.pure.} = object
     lpVtbl*: ptr IPerPropertyBrowsingVtbl
+
   IPerPropertyBrowsingVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetDisplayString*: proc(self: ptr IPerPropertyBrowsing, dispID: DISPID, pBstr: ptr BSTR): HRESULT {.stdcall.}
-    MapPropertyToPage*: proc(self: ptr IPerPropertyBrowsing, dispID: DISPID, pClsid: ptr CLSID): HRESULT {.stdcall.}
-    GetPredefinedStrings*: proc(self: ptr IPerPropertyBrowsing, dispID: DISPID, pCaStringsOut: ptr CALPOLESTR, pCaCookiesOut: ptr CADWORD): HRESULT {.stdcall.}
-    GetPredefinedValue*: proc(self: ptr IPerPropertyBrowsing, dispID: DISPID, dwCookie: DWORD, pVarOut: ptr VARIANT): HRESULT {.stdcall.}
+    GetDisplayString*: proc(
+      self: ptr IPerPropertyBrowsing, dispID: DISPID, pBstr: ptr BSTR
+    ): HRESULT {.stdcall.}
+    MapPropertyToPage*: proc(
+      self: ptr IPerPropertyBrowsing, dispID: DISPID, pClsid: ptr CLSID
+    ): HRESULT {.stdcall.}
+    GetPredefinedStrings*: proc(
+      self: ptr IPerPropertyBrowsing,
+      dispID: DISPID,
+      pCaStringsOut: ptr CALPOLESTR,
+      pCaCookiesOut: ptr CADWORD,
+    ): HRESULT {.stdcall.}
+    GetPredefinedValue*: proc(
+      self: ptr IPerPropertyBrowsing,
+      dispID: DISPID,
+      dwCookie: DWORD,
+      pVarOut: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+
   LPPERPROPERTYBROWSING* = ptr IPerPropertyBrowsing
   LPCALPOLESTR* = ptr CALPOLESTR
   LPCADWORD* = ptr CADWORD
@@ -2616,27 +4676,69 @@
     dwHint*: DWORD
     pstrName*: LPOLESTR
     clsid*: CLSID
+
   IPropertyBag2* {.pure.} = object
     lpVtbl*: ptr IPropertyBag2Vtbl
+
   IPropertyBag2Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Read*: proc(self: ptr IPropertyBag2, cProperties: ULONG, pPropBag: ptr PROPBAG2, pErrLog: ptr IErrorLog, pvarValue: ptr VARIANT, phrError: ptr HRESULT): HRESULT {.stdcall.}
-    Write*: proc(self: ptr IPropertyBag2, cProperties: ULONG, pPropBag: ptr PROPBAG2, pvarValue: ptr VARIANT): HRESULT {.stdcall.}
-    CountProperties*: proc(self: ptr IPropertyBag2, pcProperties: ptr ULONG): HRESULT {.stdcall.}
-    GetPropertyInfo*: proc(self: ptr IPropertyBag2, iProperty: ULONG, cProperties: ULONG, pPropBag: ptr PROPBAG2, pcProperties: ptr ULONG): HRESULT {.stdcall.}
-    LoadObject*: proc(self: ptr IPropertyBag2, pstrName: LPCOLESTR, dwHint: DWORD, pUnkObject: ptr IUnknown, pErrLog: ptr IErrorLog): HRESULT {.stdcall.}
+    Read*: proc(
+      self: ptr IPropertyBag2,
+      cProperties: ULONG,
+      pPropBag: ptr PROPBAG2,
+      pErrLog: ptr IErrorLog,
+      pvarValue: ptr VARIANT,
+      phrError: ptr HRESULT,
+    ): HRESULT {.stdcall.}
+    Write*: proc(
+      self: ptr IPropertyBag2,
+      cProperties: ULONG,
+      pPropBag: ptr PROPBAG2,
+      pvarValue: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    CountProperties*:
+      proc(self: ptr IPropertyBag2, pcProperties: ptr ULONG): HRESULT {.stdcall.}
+    GetPropertyInfo*: proc(
+      self: ptr IPropertyBag2,
+      iProperty: ULONG,
+      cProperties: ULONG,
+      pPropBag: ptr PROPBAG2,
+      pcProperties: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    LoadObject*: proc(
+      self: ptr IPropertyBag2,
+      pstrName: LPCOLESTR,
+      dwHint: DWORD,
+      pUnkObject: ptr IUnknown,
+      pErrLog: ptr IErrorLog,
+    ): HRESULT {.stdcall.}
+
   LPPROPERTYBAG2* = ptr IPropertyBag2
   IPersistPropertyBag2* {.pure.} = object
     lpVtbl*: ptr IPersistPropertyBag2Vtbl
+
   IPersistPropertyBag2Vtbl* {.pure, inheritable.} = object of IPersistVtbl
     InitNew*: proc(self: ptr IPersistPropertyBag2): HRESULT {.stdcall.}
-    Load*: proc(self: ptr IPersistPropertyBag2, pPropBag: ptr IPropertyBag2, pErrLog: ptr IErrorLog): HRESULT {.stdcall.}
-    Save*: proc(self: ptr IPersistPropertyBag2, pPropBag: ptr IPropertyBag2, fClearDirty: WINBOOL, fSaveAllProperties: WINBOOL): HRESULT {.stdcall.}
+    Load*: proc(
+      self: ptr IPersistPropertyBag2,
+      pPropBag: ptr IPropertyBag2,
+      pErrLog: ptr IErrorLog,
+    ): HRESULT {.stdcall.}
+    Save*: proc(
+      self: ptr IPersistPropertyBag2,
+      pPropBag: ptr IPropertyBag2,
+      fClearDirty: WINBOOL,
+      fSaveAllProperties: WINBOOL,
+    ): HRESULT {.stdcall.}
     IsDirty*: proc(self: ptr IPersistPropertyBag2): HRESULT {.stdcall.}
+
   LPPERSISTPROPERTYBAG2* = ptr IPersistPropertyBag2
   IAdviseSinkEx* {.pure.} = object
     lpVtbl*: ptr IAdviseSinkExVtbl
+
   IAdviseSinkExVtbl* {.pure, inheritable.} = object of IAdviseSinkVtbl
-    OnViewStatusChange*: proc(self: ptr IAdviseSinkEx, dwViewStatus: DWORD): void {.stdcall.}
+    OnViewStatusChange*:
+      proc(self: ptr IAdviseSinkEx, dwViewStatus: DWORD): void {.stdcall.}
+
   LPADVISESINKEX* = ptr IAdviseSinkEx
   QACONTAINER* {.pure.} = object
     cbSize*: ULONG
@@ -2655,6 +4757,7 @@
     pBindHost*: ptr IBindHost
     pOleControlSite*: ptr IOleControlSite
     pServiceProvider*: ptr IServiceProvider
+
   QACONTROL* {.pure.} = object
     cbSize*: ULONG
     dwMiscStatus*: DWORD
@@ -2662,22 +4765,33 @@
     dwEventCookie*: DWORD
     dwPropNotifyCookie*: DWORD
     dwPointerActivationPolicy*: DWORD
+
   IQuickActivate* {.pure.} = object
     lpVtbl*: ptr IQuickActivateVtbl
+
   IQuickActivateVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QuickActivate*: proc(self: ptr IQuickActivate, pQaContainer: ptr QACONTAINER, pQaControl: ptr QACONTROL): HRESULT {.stdcall.}
-    SetContentExtent*: proc(self: ptr IQuickActivate, pSizel: LPSIZEL): HRESULT {.stdcall.}
-    GetContentExtent*: proc(self: ptr IQuickActivate, pSizel: LPSIZEL): HRESULT {.stdcall.}
+    QuickActivate*: proc(
+      self: ptr IQuickActivate, pQaContainer: ptr QACONTAINER, pQaControl: ptr QACONTROL
+    ): HRESULT {.stdcall.}
+    SetContentExtent*:
+      proc(self: ptr IQuickActivate, pSizel: LPSIZEL): HRESULT {.stdcall.}
+    GetContentExtent*:
+      proc(self: ptr IQuickActivate, pSizel: LPSIZEL): HRESULT {.stdcall.}
+
   LPQUICKACTIVATE* = ptr IQuickActivate
   CATID* = GUID
   REFCATID* = REFGUID
   IEnumGUID* {.pure.} = object
     lpVtbl*: ptr IEnumGUIDVtbl
+
   IEnumGUIDVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumGUID, celt: ULONG, rgelt: ptr GUID, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumGUID, celt: ULONG, rgelt: ptr GUID, pceltFetched: ptr ULONG
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumGUID, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumGUID): HRESULT {.stdcall.}
     Clone*: proc(self: ptr IEnumGUID, ppenum: ptr ptr IEnumGUID): HRESULT {.stdcall.}
+
   IEnumCLSID* = IEnumGUID
   LPENUMGUID* = ptr IEnumGUID
   LPENUMCLSID* = LPENUMGUID
@@ -2686,42 +4800,94 @@
     catid*: CATID
     lcid*: LCID
     szDescription*: array[128, OLECHAR]
+
   IEnumCATEGORYINFO* {.pure.} = object
     lpVtbl*: ptr IEnumCATEGORYINFOVtbl
+
   IEnumCATEGORYINFOVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumCATEGORYINFO, celt: ULONG, rgelt: ptr CATEGORYINFO, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumCATEGORYINFO,
+      celt: ULONG,
+      rgelt: ptr CATEGORYINFO,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumCATEGORYINFO, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumCATEGORYINFO): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumCATEGORYINFO, ppenum: ptr ptr IEnumCATEGORYINFO): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr IEnumCATEGORYINFO, ppenum: ptr ptr IEnumCATEGORYINFO
+    ): HRESULT {.stdcall.}
+
   LPENUMCATEGORYINFO* = ptr IEnumCATEGORYINFO
   LPCATEGORYINFO* = ptr CATEGORYINFO
   ICatRegister* {.pure.} = object
     lpVtbl*: ptr ICatRegisterVtbl
+
   ICatRegisterVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RegisterCategories*: proc(self: ptr ICatRegister, cCategories: ULONG, rgCategoryInfo: ptr CATEGORYINFO): HRESULT {.stdcall.}
-    UnRegisterCategories*: proc(self: ptr ICatRegister, cCategories: ULONG, rgcatid: ptr CATID): HRESULT {.stdcall.}
-    RegisterClassImplCategories*: proc(self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID): HRESULT {.stdcall.}
-    UnRegisterClassImplCategories*: proc(self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID): HRESULT {.stdcall.}
-    RegisterClassReqCategories*: proc(self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID): HRESULT {.stdcall.}
-    UnRegisterClassReqCategories*: proc(self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID): HRESULT {.stdcall.}
+    RegisterCategories*: proc(
+      self: ptr ICatRegister, cCategories: ULONG, rgCategoryInfo: ptr CATEGORYINFO
+    ): HRESULT {.stdcall.}
+    UnRegisterCategories*: proc(
+      self: ptr ICatRegister, cCategories: ULONG, rgcatid: ptr CATID
+    ): HRESULT {.stdcall.}
+    RegisterClassImplCategories*: proc(
+      self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID
+    ): HRESULT {.stdcall.}
+    UnRegisterClassImplCategories*: proc(
+      self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID
+    ): HRESULT {.stdcall.}
+    RegisterClassReqCategories*: proc(
+      self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID
+    ): HRESULT {.stdcall.}
+    UnRegisterClassReqCategories*: proc(
+      self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID
+    ): HRESULT {.stdcall.}
+
   LPCATREGISTER* = ptr ICatRegister
   ICatInformation* {.pure.} = object
     lpVtbl*: ptr ICatInformationVtbl
+
   ICatInformationVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    EnumCategories*: proc(self: ptr ICatInformation, lcid: LCID, ppenumCategoryInfo: ptr ptr IEnumCATEGORYINFO): HRESULT {.stdcall.}
-    GetCategoryDesc*: proc(self: ptr ICatInformation, rcatid: REFCATID, lcid: LCID, pszDesc: ptr LPWSTR): HRESULT {.stdcall.}
-    EnumClassesOfCategories*: proc(self: ptr ICatInformation, cImplemented: ULONG, rgcatidImpl: ptr CATID, cRequired: ULONG, rgcatidReq: ptr CATID, ppenumClsid: ptr ptr IEnumGUID): HRESULT {.stdcall.}
-    IsClassOfCategories*: proc(self: ptr ICatInformation, rclsid: REFCLSID, cImplemented: ULONG, rgcatidImpl: ptr CATID, cRequired: ULONG, rgcatidReq: ptr CATID): HRESULT {.stdcall.}
-    EnumImplCategoriesOfClass*: proc(self: ptr ICatInformation, rclsid: REFCLSID, ppenumCatid: ptr ptr IEnumGUID): HRESULT {.stdcall.}
-    EnumReqCategoriesOfClass*: proc(self: ptr ICatInformation, rclsid: REFCLSID, ppenumCatid: ptr ptr IEnumGUID): HRESULT {.stdcall.}
+    EnumCategories*: proc(
+      self: ptr ICatInformation,
+      lcid: LCID,
+      ppenumCategoryInfo: ptr ptr IEnumCATEGORYINFO,
+    ): HRESULT {.stdcall.}
+    GetCategoryDesc*: proc(
+      self: ptr ICatInformation, rcatid: REFCATID, lcid: LCID, pszDesc: ptr LPWSTR
+    ): HRESULT {.stdcall.}
+    EnumClassesOfCategories*: proc(
+      self: ptr ICatInformation,
+      cImplemented: ULONG,
+      rgcatidImpl: ptr CATID,
+      cRequired: ULONG,
+      rgcatidReq: ptr CATID,
+      ppenumClsid: ptr ptr IEnumGUID,
+    ): HRESULT {.stdcall.}
+    IsClassOfCategories*: proc(
+      self: ptr ICatInformation,
+      rclsid: REFCLSID,
+      cImplemented: ULONG,
+      rgcatidImpl: ptr CATID,
+      cRequired: ULONG,
+      rgcatidReq: ptr CATID,
+    ): HRESULT {.stdcall.}
+    EnumImplCategoriesOfClass*: proc(
+      self: ptr ICatInformation, rclsid: REFCLSID, ppenumCatid: ptr ptr IEnumGUID
+    ): HRESULT {.stdcall.}
+    EnumReqCategoriesOfClass*: proc(
+      self: ptr ICatInformation, rclsid: REFCLSID, ppenumCatid: ptr ptr IEnumGUID
+    ): HRESULT {.stdcall.}
+
   LPCATINFORMATION* = ptr ICatInformation
   SHITEMID* {.pure, packed.} = object
     cb*: USHORT
     abID*: array[1, BYTE]
+
   LPSHITEMID* = ptr SHITEMID
   LPCSHITEMID* = ptr SHITEMID
   ITEMIDLIST* {.pure, packed.} = object
     mkid*: SHITEMID
+
   ITEMIDLIST_RELATIVE* = ITEMIDLIST
   ITEMID_CHILD* = ITEMIDLIST
   ITEMIDLIST_ABSOLUTE* = ITEMIDLIST
@@ -2747,14 +4913,17 @@
     pOleStr*: LPWSTR
     uOffset*: UINT
     cStr*: array[260, char]
+
   STRRET* {.pure.} = object
     uType*: UINT
     union1*: STRRET_UNION1
+
   LPSTRRET* = ptr STRRET
   SHELLDETAILS* {.pure.} = object
     fmt*: int32
     cxChar*: int32
     str*: STRRET
+
   LPSHELLDETAILS* = ptr SHELLDETAILS
   KNOWNFOLDERID* = GUID
   REFKNOWNFOLDERID* = ptr KNOWNFOLDERID
@@ -2767,80 +4936,167 @@
   PROPERTYKEY* {.pure.} = object
     fmtid*: GUID
     pid*: DWORD
+
   SHCOLUMNID* = PROPERTYKEY
   LPCSHCOLUMNID* = ptr SHCOLUMNID
   IOleDocumentView* {.pure.} = object
     lpVtbl*: ptr IOleDocumentViewVtbl
+
   IOleDocumentViewVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetInPlaceSite*: proc(self: ptr IOleDocumentView, pIPSite: ptr IOleInPlaceSite): HRESULT {.stdcall.}
-    GetInPlaceSite*: proc(self: ptr IOleDocumentView, ppIPSite: ptr ptr IOleInPlaceSite): HRESULT {.stdcall.}
-    GetDocument*: proc(self: ptr IOleDocumentView, ppunk: ptr ptr IUnknown): HRESULT {.stdcall.}
+    SetInPlaceSite*: proc(
+      self: ptr IOleDocumentView, pIPSite: ptr IOleInPlaceSite
+    ): HRESULT {.stdcall.}
+    GetInPlaceSite*: proc(
+      self: ptr IOleDocumentView, ppIPSite: ptr ptr IOleInPlaceSite
+    ): HRESULT {.stdcall.}
+    GetDocument*:
+      proc(self: ptr IOleDocumentView, ppunk: ptr ptr IUnknown): HRESULT {.stdcall.}
     SetRect*: proc(self: ptr IOleDocumentView, prcView: LPRECT): HRESULT {.stdcall.}
     GetRect*: proc(self: ptr IOleDocumentView, prcView: LPRECT): HRESULT {.stdcall.}
-    SetRectComplex*: proc(self: ptr IOleDocumentView, prcView: LPRECT, prcHScroll: LPRECT, prcVScroll: LPRECT, prcSizeBox: LPRECT): HRESULT {.stdcall.}
+    SetRectComplex*: proc(
+      self: ptr IOleDocumentView,
+      prcView: LPRECT,
+      prcHScroll: LPRECT,
+      prcVScroll: LPRECT,
+      prcSizeBox: LPRECT,
+    ): HRESULT {.stdcall.}
     Show*: proc(self: ptr IOleDocumentView, fShow: WINBOOL): HRESULT {.stdcall.}
-    UIActivate*: proc(self: ptr IOleDocumentView, fUIActivate: WINBOOL): HRESULT {.stdcall.}
+    UIActivate*:
+      proc(self: ptr IOleDocumentView, fUIActivate: WINBOOL): HRESULT {.stdcall.}
     Open*: proc(self: ptr IOleDocumentView): HRESULT {.stdcall.}
     CloseView*: proc(self: ptr IOleDocumentView, dwReserved: DWORD): HRESULT {.stdcall.}
-    SaveViewState*: proc(self: ptr IOleDocumentView, pstm: LPSTREAM): HRESULT {.stdcall.}
-    ApplyViewState*: proc(self: ptr IOleDocumentView, pstm: LPSTREAM): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IOleDocumentView, pIPSiteNew: ptr IOleInPlaceSite, ppViewNew: ptr ptr IOleDocumentView): HRESULT {.stdcall.}
+    SaveViewState*:
+      proc(self: ptr IOleDocumentView, pstm: LPSTREAM): HRESULT {.stdcall.}
+    ApplyViewState*:
+      proc(self: ptr IOleDocumentView, pstm: LPSTREAM): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr IOleDocumentView,
+      pIPSiteNew: ptr IOleInPlaceSite,
+      ppViewNew: ptr ptr IOleDocumentView,
+    ): HRESULT {.stdcall.}
+
   IEnumOleDocumentViews* {.pure.} = object
     lpVtbl*: ptr IEnumOleDocumentViewsVtbl
+
   IEnumOleDocumentViewsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumOleDocumentViews, cViews: ULONG, rgpView: ptr ptr IOleDocumentView, pcFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumOleDocumentViews,
+      cViews: ULONG,
+      rgpView: ptr ptr IOleDocumentView,
+      pcFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumOleDocumentViews, cViews: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumOleDocumentViews): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumOleDocumentViews, ppEnum: ptr ptr IEnumOleDocumentViews): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr IEnumOleDocumentViews, ppEnum: ptr ptr IEnumOleDocumentViews
+    ): HRESULT {.stdcall.}
+
   IOleDocument* {.pure.} = object
     lpVtbl*: ptr IOleDocumentVtbl
+
   IOleDocumentVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateView*: proc(self: ptr IOleDocument, pIPSite: ptr IOleInPlaceSite, pstm: ptr IStream, dwReserved: DWORD, ppView: ptr ptr IOleDocumentView): HRESULT {.stdcall.}
-    GetDocMiscStatus*: proc(self: ptr IOleDocument, pdwStatus: ptr DWORD): HRESULT {.stdcall.}
-    EnumViews*: proc(self: ptr IOleDocument, ppEnum: ptr ptr IEnumOleDocumentViews, ppView: ptr ptr IOleDocumentView): HRESULT {.stdcall.}
+    CreateView*: proc(
+      self: ptr IOleDocument,
+      pIPSite: ptr IOleInPlaceSite,
+      pstm: ptr IStream,
+      dwReserved: DWORD,
+      ppView: ptr ptr IOleDocumentView,
+    ): HRESULT {.stdcall.}
+    GetDocMiscStatus*:
+      proc(self: ptr IOleDocument, pdwStatus: ptr DWORD): HRESULT {.stdcall.}
+    EnumViews*: proc(
+      self: ptr IOleDocument,
+      ppEnum: ptr ptr IEnumOleDocumentViews,
+      ppView: ptr ptr IOleDocumentView,
+    ): HRESULT {.stdcall.}
+
   LPOLEDOCUMENT* = ptr IOleDocument
   IOleDocumentSite* {.pure.} = object
     lpVtbl*: ptr IOleDocumentSiteVtbl
+
   IOleDocumentSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ActivateMe*: proc(self: ptr IOleDocumentSite, pViewToActivate: ptr IOleDocumentView): HRESULT {.stdcall.}
+    ActivateMe*: proc(
+      self: ptr IOleDocumentSite, pViewToActivate: ptr IOleDocumentView
+    ): HRESULT {.stdcall.}
+
   LPOLEDOCUMENTSITE* = ptr IOleDocumentSite
   LPOLEDOCUMENTVIEW* = ptr IOleDocumentView
   LPENUMOLEDOCUMENTVIEWS* = ptr IEnumOleDocumentViews
   IContinueCallback* {.pure.} = object
     lpVtbl*: ptr IContinueCallbackVtbl
+
   IContinueCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     FContinue*: proc(self: ptr IContinueCallback): HRESULT {.stdcall.}
-    FContinuePrinting*: proc(self: ptr IContinueCallback, nCntPrinted: LONG, nCurPage: LONG, pwszPrintStatus: ptr uint16): HRESULT {.stdcall.}
+    FContinuePrinting*: proc(
+      self: ptr IContinueCallback,
+      nCntPrinted: LONG,
+      nCurPage: LONG,
+      pwszPrintStatus: ptr uint16,
+    ): HRESULT {.stdcall.}
+
   LPCONTINUECALLBACK* = ptr IContinueCallback
   PAGERANGE* {.pure.} = object
     nFromPage*: LONG
     nToPage*: LONG
+
   PAGESET* {.pure.} = object
     cbStruct*: ULONG
     fOddPages*: WINBOOL
     fEvenPages*: WINBOOL
     cPageRange*: ULONG
     rgPages*: array[1, PAGERANGE]
+
   IPrint* {.pure.} = object
     lpVtbl*: ptr IPrintVtbl
+
   IPrintVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SetInitialPageNum*: proc(self: ptr IPrint, nFirstPage: LONG): HRESULT {.stdcall.}
-    GetPageInfo*: proc(self: ptr IPrint, pnFirstPage: ptr LONG, pcPages: ptr LONG): HRESULT {.stdcall.}
-    Print*: proc(self: ptr IPrint, grfFlags: DWORD, pptd: ptr ptr DVTARGETDEVICE, ppPageSet: ptr ptr PAGESET, pstgmOptions: ptr STGMEDIUM, pcallback: ptr IContinueCallback, nFirstPage: LONG, pcPagesPrinted: ptr LONG, pnLastPage: ptr LONG): HRESULT {.stdcall.}
+    GetPageInfo*: proc(
+      self: ptr IPrint, pnFirstPage: ptr LONG, pcPages: ptr LONG
+    ): HRESULT {.stdcall.}
+    Print*: proc(
+      self: ptr IPrint,
+      grfFlags: DWORD,
+      pptd: ptr ptr DVTARGETDEVICE,
+      ppPageSet: ptr ptr PAGESET,
+      pstgmOptions: ptr STGMEDIUM,
+      pcallback: ptr IContinueCallback,
+      nFirstPage: LONG,
+      pcPagesPrinted: ptr LONG,
+      pnLastPage: ptr LONG,
+    ): HRESULT {.stdcall.}
+
   LPPRINT* = ptr IPrint
   OLECMD* {.pure.} = object
     cmdID*: ULONG
     cmdf*: DWORD
+
   OLECMDTEXT* {.pure.} = object
     cmdtextf*: DWORD
     cwActual*: ULONG
     cwBuf*: ULONG
     rgwz*: array[1, uint16]
+
   IOleCommandTarget* {.pure.} = object
     lpVtbl*: ptr IOleCommandTargetVtbl
+
   IOleCommandTargetVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QueryStatus*: proc(self: ptr IOleCommandTarget, pguidCmdGroup: ptr GUID, cCmds: ULONG, prgCmds: ptr OLECMD, pCmdText: ptr OLECMDTEXT): HRESULT {.stdcall.}
-    Exec*: proc(self: ptr IOleCommandTarget, pguidCmdGroup: ptr GUID, nCmdID: DWORD, nCmdexecopt: DWORD, pvaIn: ptr VARIANT, pvaOut: ptr VARIANT): HRESULT {.stdcall.}
+    QueryStatus*: proc(
+      self: ptr IOleCommandTarget,
+      pguidCmdGroup: ptr GUID,
+      cCmds: ULONG,
+      prgCmds: ptr OLECMD,
+      pCmdText: ptr OLECMDTEXT,
+    ): HRESULT {.stdcall.}
+    Exec*: proc(
+      self: ptr IOleCommandTarget,
+      pguidCmdGroup: ptr GUID,
+      nCmdID: DWORD,
+      nCmdexecopt: DWORD,
+      pvaIn: ptr VARIANT,
+      pvaOut: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+
   LPOLECOMMANDTARGET* = ptr IOleCommandTarget
   IMsoDocument* = IOleDocument
   IMsoDocumentSite* = IOleDocumentSite
@@ -2857,12 +5113,20 @@
   REFPROPERTYKEY* = ptr PROPERTYKEY
   IPropertyStore* {.pure.} = object
     lpVtbl*: ptr IPropertyStoreVtbl
+
   IPropertyStoreVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetCount*: proc(self: ptr IPropertyStore, cProps: ptr DWORD): HRESULT {.stdcall.}
-    GetAt*: proc(self: ptr IPropertyStore, iProp: DWORD, pkey: ptr PROPERTYKEY): HRESULT {.stdcall.}
-    GetValue*: proc(self: ptr IPropertyStore, key: REFPROPERTYKEY, pv: ptr PROPVARIANT): HRESULT {.stdcall.}
-    SetValue*: proc(self: ptr IPropertyStore, key: REFPROPERTYKEY, propvar: REFPROPVARIANT): HRESULT {.stdcall.}
+    GetAt*: proc(self: ptr IPropertyStore, iProp: DWORD, pkey: ptr PROPERTYKEY): HRESULT {.
+      stdcall
+    .}
+    GetValue*: proc(
+      self: ptr IPropertyStore, key: REFPROPERTYKEY, pv: ptr PROPVARIANT
+    ): HRESULT {.stdcall.}
+    SetValue*: proc(
+      self: ptr IPropertyStore, key: REFPROPERTYKEY, propvar: REFPROPVARIANT
+    ): HRESULT {.stdcall.}
     Commit*: proc(self: ptr IPropertyStore): HRESULT {.stdcall.}
+
   LPPROPERTYSTORE* = ptr IPropertyStore
   SERIALIZEDPROPSTORAGE* {.pure.} = object
   PUSERIALIZEDPROPSTORAGE* = ptr SERIALIZEDPROPSTORAGE
@@ -2875,6 +5139,7 @@
     dwVersionMS*: DWORD
     dwVersionLS*: DWORD
     dwStyle*: DWORD
+
   LPCODEBASEHOLD* = ptr CODEBASEHOLD
   SOFTDISTINFO* {.pure.} = object
     cbSize*: ULONG
@@ -2890,6 +5155,7 @@
     dwAdvertisedVersionMS*: DWORD
     dwAdvertisedVersionLS*: DWORD
     dwReserved*: DWORD
+
   LPSOFTDISTINFO* = ptr SOFTDISTINFO
   HIT_LOGGING_INFO* {.pure.} = object
     dwStructSize*: DWORD
@@ -2897,18 +5163,23 @@
     StartTime*: SYSTEMTIME
     EndTime*: SYSTEMTIME
     lpszExtendedInfo*: LPSTR
+
   LPHIT_LOGGING_INFO* = ptr HIT_LOGGING_INFO
   PROTOCOL_ARGUMENT* {.pure.} = object
     szMethod*: LPCWSTR
     szTargetUrl*: LPCWSTR
+
   LPPROTOCOL_ARGUMENT* = ptr PROTOCOL_ARGUMENT
+
 const
   CLSCTX_INPROC_SERVER* = 0x1
   CLSCTX_INPROC_HANDLER* = 0x2
   CLSCTX_INPROC* = CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER
   CLSCTX_LOCAL_SERVER* = 0x4
   CLSCTX_REMOTE_SERVER* = 0x10
-  CLSCTX_ALL* = CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER or CLSCTX_LOCAL_SERVER or CLSCTX_REMOTE_SERVER
+  CLSCTX_ALL* =
+    CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER or CLSCTX_LOCAL_SERVER or
+    CLSCTX_REMOTE_SERVER
   CLSCTX_SERVER* = CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER or CLSCTX_REMOTE_SERVER
   REGCLS_SINGLEUSE* = 0
   REGCLS_MULTIPLEUSE* = 1
@@ -3604,7 +5875,14 @@
   CLSCTX_APPCONTAINER* = 0x400000
   CLSCTX_ACTIVATE_AAA_AS_IU* = 0x800000
   CLSCTX_PS_DLL* = int32 0x80000000'i32
-  CLSCTX_VALID_MASK* = CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER or CLSCTX_LOCAL_SERVER or CLSCTX_INPROC_SERVER16 or CLSCTX_REMOTE_SERVER or CLSCTX_NO_CODE_DOWNLOAD or CLSCTX_NO_CUSTOM_MARSHAL or CLSCTX_ENABLE_CODE_DOWNLOAD or CLSCTX_NO_FAILURE_LOG or CLSCTX_DISABLE_AAA or CLSCTX_ENABLE_AAA or CLSCTX_FROM_DEFAULT_CONTEXT or CLSCTX_ACTIVATE_32_BIT_SERVER or CLSCTX_ACTIVATE_64_BIT_SERVER or CLSCTX_ENABLE_CLOAKING or CLSCTX_APPCONTAINER or CLSCTX_ACTIVATE_AAA_AS_IU or CLSCTX_PS_DLL
+  CLSCTX_VALID_MASK* =
+    CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER or CLSCTX_LOCAL_SERVER or
+    CLSCTX_INPROC_SERVER16 or CLSCTX_REMOTE_SERVER or CLSCTX_NO_CODE_DOWNLOAD or
+    CLSCTX_NO_CUSTOM_MARSHAL or CLSCTX_ENABLE_CODE_DOWNLOAD or CLSCTX_NO_FAILURE_LOG or
+    CLSCTX_DISABLE_AAA or CLSCTX_ENABLE_AAA or CLSCTX_FROM_DEFAULT_CONTEXT or
+    CLSCTX_ACTIVATE_32_BIT_SERVER or CLSCTX_ACTIVATE_64_BIT_SERVER or
+    CLSCTX_ENABLE_CLOAKING or CLSCTX_APPCONTAINER or CLSCTX_ACTIVATE_AAA_AS_IU or
+    CLSCTX_PS_DLL
   MSHLFLAGS_NORMAL* = 0
   MSHLFLAGS_TABLESTRONG* = 1
   MSHLFLAGS_TABLEWEAK* = 2
@@ -4066,7 +6344,10 @@
   Uri_ENCODING_HOST_IS_PERCENT_ENCODED_CP* = 0x10
   Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8* = 0x20
   Uri_ENCODING_QUERY_AND_FRAGMENT_IS_CP* = 0x40
-  Uri_ENCODING_RFC* = Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8 or Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8 or Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8
+  Uri_ENCODING_RFC* =
+    Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8 or
+    Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8 or
+    Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8
   UriBuilder_USE_ORIGINAL_FLAGS* = 0x1
   IID_IUriContainer* = DEFINE_GUID("a158a630-ed6f-45fb-b987-f68676f57752")
   IID_IUriBuilder* = DEFINE_GUID("4221b2e1-8955-46c0-bd5b-de9897565de7")
@@ -4128,7 +6409,8 @@
   IID_IInternetProtocol* = DEFINE_GUID("79eac9e4-baf9-11ce-8c82-00aa004ba90b")
   IID_IInternetProtocolEx* = DEFINE_GUID("c7a98e66-1010-492c-a1c8-c809e1f75905")
   IID_IInternetProtocolSink* = DEFINE_GUID("79eac9e5-baf9-11ce-8c82-00aa004ba90b")
-  IID_IInternetProtocolSinkStackable* = DEFINE_GUID("79eac9f0-baf9-11ce-8c82-00aa004ba90b")
+  IID_IInternetProtocolSinkStackable* =
+    DEFINE_GUID("79eac9f0-baf9-11ce-8c82-00aa004ba90b")
   OIBDG_APARTMENTTHREADED* = 0x100
   OIBDG_DATAONLY* = 0x1000
   IID_IInternetSession* = DEFINE_GUID("79eac9e7-baf9-11ce-8c82-00aa004ba90b")
@@ -4243,7 +6525,8 @@
   SID_SInternetSecurityManagerEx* = IID_IInternetSecurityManagerEx
   IID_IInternetSecurityManagerEx2* = DEFINE_GUID("f1e50292-a795-4117-8e09-2b560a72ac60")
   SID_SInternetSecurityManagerEx2* = IID_IInternetSecurityManagerEx2
-  IID_IInternetHostSecurityManager* = DEFINE_GUID("3af280b6-cb3f-11d0-891e-00c04fb6bfc4")
+  IID_IInternetHostSecurityManager* =
+    DEFINE_GUID("3af280b6-cb3f-11d0-891e-00c04fb6bfc4")
   SID_SInternetHostSecurityManager* = IID_IInternetHostSecurityManager
   IID_IInternetSecurityMgrSite* = DEFINE_GUID("79eac9ed-baf9-11ce-8c82-00aa004ba90b")
   MUTZ_NOSAVEDFILECHECK* = 0x1
@@ -4854,12 +7137,12 @@
   OLECMDID_MEDIA_PLAYBACK* = 78
   MEDIAPLAYBACK_RESUME* = 0
   MEDIAPLAYBACK_PAUSE* = 1
-  OLECMDERR_E_FIRST* = OLE_E_LAST+1
+  OLECMDERR_E_FIRST* = OLE_E_LAST + 1
   OLECMDERR_E_NOTSUPPORTED* = OLECMDERR_E_FIRST
-  OLECMDERR_E_DISABLED* = OLECMDERR_E_FIRST+1
-  OLECMDERR_E_NOHELP* = OLECMDERR_E_FIRST+2
-  OLECMDERR_E_CANCELED* = OLECMDERR_E_FIRST+3
-  OLECMDERR_E_UNKNOWNGROUP* = OLECMDERR_E_FIRST+4
+  OLECMDERR_E_DISABLED* = OLECMDERR_E_FIRST + 1
+  OLECMDERR_E_NOHELP* = OLECMDERR_E_FIRST + 2
+  OLECMDERR_E_CANCELED* = OLECMDERR_E_FIRST + 3
+  OLECMDERR_E_UNKNOWNGROUP* = OLECMDERR_E_FIRST + 4
   MSOCMDERR_E_FIRST* = OLECMDERR_E_FIRST
   MSOCMDERR_E_NOTSUPPORTED* = OLECMDERR_E_NOTSUPPORTED
   MSOCMDERR_E_DISABLED* = OLECMDERR_E_DISABLED
@@ -5345,7 +7628,8 @@
   PDCOT_NUMBER* = 5
   IID_IPropertyDescription* = DEFINE_GUID("6f79d558-3e96-4549-a1d1-7d75d2288814")
   IID_IPropertyDescription2* = DEFINE_GUID("57d2eded-5062-400e-b107-5dae79fe57a6")
-  IID_IPropertyDescriptionAliasInfo* = DEFINE_GUID("f67104fc-2af9-46fd-b32d-243c1404f3d1")
+  IID_IPropertyDescriptionAliasInfo* =
+    DEFINE_GUID("f67104fc-2af9-46fd-b32d-243c1404f3d1")
   PDSIF_DEFAULT* = 0x0
   PDSIF_ININVERTEDINDEX* = 0x1
   PDSIF_ISCOLUMN* = 0x2
@@ -5358,8 +7642,10 @@
   PDCIT_ONDEMAND* = 3
   PDCIT_ONDISKALL* = 4
   PDCIT_ONDISKVECTOR* = 5
-  IID_IPropertyDescriptionSearchInfo* = DEFINE_GUID("078f91bd-29a2-440f-924e-46a291524520")
-  IID_IPropertyDescriptionRelatedPropertyInfo* = DEFINE_GUID("507393f4-2a3d-4a60-b59e-d9c75716c2dd")
+  IID_IPropertyDescriptionSearchInfo* =
+    DEFINE_GUID("078f91bd-29a2-440f-924e-46a291524520")
+  IID_IPropertyDescriptionRelatedPropertyInfo* =
+    DEFINE_GUID("507393f4-2a3d-4a60-b59e-d9c75716c2dd")
   PDEF_ALL* = 0
   PDEF_SYSTEM* = 1
   PDEF_NONSYSTEM* = 2
@@ -5370,17 +7656,20 @@
   IID_IPropertySystem* = DEFINE_GUID("ca724e8a-c3e6-442b-88a4-6fb0db8035a3")
   IID_IPropertyDescriptionList* = DEFINE_GUID("1f9fc1d0-c39b-4b26-817f-011967d3440e")
   IID_IPropertyStoreFactory* = DEFINE_GUID("bc110b6d-57e8-4148-a9c6-91015ab2f3a5")
-  IID_IDelayedPropertyStoreFactory* = DEFINE_GUID("40d4577f-e237-4bdb-bd69-58f089431b6a")
+  IID_IDelayedPropertyStoreFactory* =
+    DEFINE_GUID("40d4577f-e237-4bdb-bd69-58f089431b6a")
   FPSPS_DEFAULT* = 0x0
   FPSPS_READONLY* = 0x1
   FPSPS_TREAT_NEW_VALUES_AS_DIRTY* = 0x2
-  IID_IPersistSerializedPropStorage* = DEFINE_GUID("e318ad57-0aa0-450f-aca5-6fab7103d917")
-  IID_IPersistSerializedPropStorage2* = DEFINE_GUID("77effa68-4f98-4366-ba72-573b3d880571")
+  IID_IPersistSerializedPropStorage* =
+    DEFINE_GUID("e318ad57-0aa0-450f-aca5-6fab7103d917")
+  IID_IPersistSerializedPropStorage2* =
+    DEFINE_GUID("77effa68-4f98-4366-ba72-573b3d880571")
   IID_IPropertySystemChangeNotify* = DEFINE_GUID("fa955fd9-38be-4879-a6ce-824cf52d609f")
   IID_ICreateObject* = DEFINE_GUID("75121952-e0d0-43e5-9380-1d80483acf72")
   PKEY_PIDSTR_MAX* = 10
   GUIDSTRING_MAX* = 39
-  PKEYSTR_MAX* = GUIDSTRING_MAX+1+PKEY_PIDSTR_MAX
+  PKEYSTR_MAX* = GUIDSTRING_MAX + 1 + PKEY_PIDSTR_MAX
   LIBID_PropSysObjects* = DEFINE_GUID("2cda3294-6c4f-4020-b161-27c530c81fa6")
   CLSID_InMemoryPropertyStore* = DEFINE_GUID("9a02e012-6303-4e1e-b9a1-630f802592c5")
   CLSID_PropertySystem* = DEFINE_GUID("b8967f85-58ae-4f46-9fb2-5d7904798f4b")
@@ -5411,59 +7700,73 @@
   IID_IXMLDOMNodeList* = DEFINE_GUID("2933bf82-7b36-11d2-b20e-00c04f983e60")
   IID_IXMLDOMNotation* = DEFINE_GUID("2933bf8c-7b36-11d2-b20e-00c04f983e60")
   IID_IXMLDOMParseError* = DEFINE_GUID("3efaa426-272f-11d2-836f-0000f87a7782")
-  IID_IXMLDOMProcessingInstruction* = DEFINE_GUID("2933bf89-7b36-11d2-b20e-00c04f983e60")
+  IID_IXMLDOMProcessingInstruction* =
+    DEFINE_GUID("2933bf89-7b36-11d2-b20e-00c04f983e60")
   IID_IXMLDOMText* = DEFINE_GUID("2933bf87-7b36-11d2-b20e-00c04f983e60")
   IID_IXMLHttpRequest* = DEFINE_GUID("ed8c108d-4349-11d2-91a4-00c04f7969e8")
   IID_IXTLRuntime* = DEFINE_GUID("3efaa425-272f-11d2-836f-0000f87a7782")
   PAGESET_TOLASTPAGE* = not WORD(0)
 type
-  LPFNGETCLASSOBJECT* = proc (P1: REFCLSID, P2: REFIID, P3: ptr LPVOID): HRESULT {.stdcall.}
-  LPFNCANUNLOADNOW* = proc (): HRESULT {.stdcall.}
+  LPFNGETCLASSOBJECT* =
+    proc(P1: REFCLSID, P2: REFIID, P3: ptr LPVOID): HRESULT {.stdcall.}
+  LPFNCANUNLOADNOW* = proc(): HRESULT {.stdcall.}
   RemHGLOBAL* {.pure.} = object
     fNullHGlobal*: LONG
     cbData*: ULONG
     data*: array[1, uint8]
+
   RemHMETAFILEPICT* {.pure.} = object
     mm*: LONG
     xExt*: LONG
     yExt*: LONG
     cbData*: ULONG
     data*: array[1, uint8]
+
   RemHENHMETAFILE* {.pure.} = object
     cbData*: ULONG
     data*: array[1, uint8]
+
   RemHBITMAP* {.pure.} = object
     cbData*: ULONG
     data*: array[1, uint8]
+
   RemHPALETTE* {.pure.} = object
     cbData*: ULONG
     data*: array[1, uint8]
+
   RemHBRUSH* {.pure.} = object
     cbData*: ULONG
     data*: array[1, uint8]
+
   GDI_NONREMOTE_u* {.pure, union.} = object
     hInproc*: LONG
     hRemote*: ptr DWORD_BLOB
+
   GDI_NONREMOTE* {.pure.} = object
     fContext*: LONG
     u*: GDI_NONREMOTE_u
+
   CSPLATFORM* {.pure.} = object
     dwPlatformId*: DWORD
     dwVersionHi*: DWORD
     dwVersionLo*: DWORD
     dwProcessorArch*: DWORD
+
   QUERYCONTEXT* {.pure.} = object
     dwContext*: DWORD
     Platform*: CSPLATFORM
     Locale*: LCID
     dwVersionHi*: DWORD
     dwVersionLo*: DWORD
+
   uCLSSPEC_tagged_union_ByName* {.pure.} = object
     pPackageName*: LPOLESTR
     PolicyId*: GUID
+
   uCLSSPEC_tagged_union_ByObjectId* {.pure.} = object
     ObjectId*: GUID
     PolicyId*: GUID
+
   uCLSSPEC_tagged_union* {.pure, union.} = object
     clsid*: CLSID
     pFileExt*: LPOLESTR
@@ -5472,9 +7775,11 @@
     pFileName*: LPOLESTR
     ByName*: uCLSSPEC_tagged_union_ByName
     ByObjectId*: uCLSSPEC_tagged_union_ByObjectId
+
   uCLSSPEC* {.pure.} = object
     tyspec*: DWORD
     tagged_union*: uCLSSPEC_tagged_union
+
   SChannelHookCallInfo* {.pure.} = object
     iid*: IID
     cbSize*: DWORD
@@ -5482,6 +7787,7 @@
     dwServerPid*: DWORD
     iMethod*: DWORD
     pObject*: pointer
+
   RemSTGMEDIUM* {.pure.} = object
     tymed*: DWORD
     dwHandleType*: DWORD
@@ -5489,19 +7795,23 @@
     pUnkForRelease*: ULONG
     cbData*: ULONG
     data*: array[1, uint8]
+
   FLAG_STGMEDIUM* {.pure.} = object
     ContextFlags*: LONG
     fPassOwnership*: LONG
     Stgmed*: STGMEDIUM
+
   StorageLayout* {.pure.} = object
     LayoutType*: DWORD
     pwcsElementName*: ptr OLECHAR
     cOffset*: LARGE_INTEGER
     cBytes*: LARGE_INTEGER
+
   CLEANLOCALSTORAGE* {.pure.} = object
     pInterface*: ptr IUnknown
     pStorage*: PVOID
     flags*: DWORD
+
   NUMPARSE* {.pure.} = object
     cDig*: INT
     dwInFlags*: ULONG
@@ -5509,14 +7819,17 @@
     cchUsed*: INT
     nBaseShift*: INT
     nPwr10*: INT
+
   UDATE* {.pure.} = object
     st*: SYSTEMTIME
     wDayOfYear*: USHORT
+
   STGOPTIONS* {.pure.} = object
     usVersion*: USHORT
     reserved*: USHORT
     ulSectorSize*: ULONG
     pwcsTemplateFile*: ptr WCHAR
+
   XML_ERROR* {.pure.} = object
     nLine*: int32
     pchBuf*: BSTR
@@ -5526,6 +7839,7 @@
     pszExpected*: BSTR
     reserved1*: DWORD
     reserved2*: DWORD
+
   RemBINDINFO* {.pure.} = object
     cbSize*: ULONG
     szExtraInfo*: LPWSTR
@@ -5540,589 +7854,1354 @@
     iid*: IID
     pUnk*: ptr IUnknown
     dwReserved*: DWORD
+
   StartParam* {.pure.} = object
     iid*: IID
     pIBindCtx*: ptr IBindCtx
     pItf*: ptr IUnknown
+
   PROTOCOLFILTERDATA* {.pure.} = object
     cbSize*: DWORD
     pProtocolSink*: ptr IInternetProtocolSink
     pProtocol*: ptr IInternetProtocol
     pUnk*: ptr IUnknown
     dwFilterFlags*: DWORD
+
   CONFIRMSAFETY* {.pure.} = object
     clsid*: CLSID
     pUnk*: ptr IUnknown
     dwFlags*: DWORD
+
   SERIALIZEDPROPERTYVALUE* {.pure.} = object
     dwType*: DWORD
     rgb*: array[1, BYTE]
+
   DVASPECTINFO* {.pure.} = object
     cb*: ULONG
     dwFlags*: DWORD
+
   COMDLG_FILTERSPEC* {.pure.} = object
     pszName*: LPCWSTR
     pszSpec*: LPCWSTR
+
   AsyncIUnknown* {.pure.} = object
     lpVtbl*: ptr AsyncIUnknownVtbl
+
   AsyncIUnknownVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Begin_QueryInterface*: proc(self: ptr AsyncIUnknown, riid: REFIID): HRESULT {.stdcall.}
-    Finish_QueryInterface*: proc(self: ptr AsyncIUnknown, ppvObject: ptr pointer): HRESULT {.stdcall.}
+    Begin_QueryInterface*:
+      proc(self: ptr AsyncIUnknown, riid: REFIID): HRESULT {.stdcall.}
+    Finish_QueryInterface*:
+      proc(self: ptr AsyncIUnknown, ppvObject: ptr pointer): HRESULT {.stdcall.}
     Begin_AddRef*: proc(self: ptr AsyncIUnknown): HRESULT {.stdcall.}
     Finish_AddRef*: proc(self: ptr AsyncIUnknown): ULONG {.stdcall.}
     Begin_Release*: proc(self: ptr AsyncIUnknown): HRESULT {.stdcall.}
     Finish_Release*: proc(self: ptr AsyncIUnknown): ULONG {.stdcall.}
+
   INoMarshal* {.pure.} = object
     lpVtbl*: ptr INoMarshalVtbl
+
   INoMarshalVtbl* {.pure, inheritable.} = object of IUnknownVtbl
   IAgileObject* {.pure.} = object
     lpVtbl*: ptr IAgileObjectVtbl
+
   IAgileObjectVtbl* {.pure, inheritable.} = object of IUnknownVtbl
   AsyncIMultiQI* {.pure.} = object
     lpVtbl*: ptr AsyncIMultiQIVtbl
+
   AsyncIMultiQIVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Begin_QueryMultipleInterfaces*: proc(self: ptr AsyncIMultiQI, cMQIs: ULONG, pMQIs: ptr MULTI_QI): void {.stdcall.}
-    Finish_QueryMultipleInterfaces*: proc(self: ptr AsyncIMultiQI, pMQIs: ptr MULTI_QI): HRESULT {.stdcall.}
+    Begin_QueryMultipleInterfaces*:
+      proc(self: ptr AsyncIMultiQI, cMQIs: ULONG, pMQIs: ptr MULTI_QI): void {.stdcall.}
+    Finish_QueryMultipleInterfaces*:
+      proc(self: ptr AsyncIMultiQI, pMQIs: ptr MULTI_QI): HRESULT {.stdcall.}
+
   IInternalUnknown* {.pure.} = object
     lpVtbl*: ptr IInternalUnknownVtbl
+
   IInternalUnknownVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QueryInternalInterface*: proc(self: ptr IInternalUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    QueryInternalInterface*: proc(
+      self: ptr IInternalUnknown, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+
   IRpcChannelBuffer* {.pure.} = object
     lpVtbl*: ptr IRpcChannelBufferVtbl
+
   IRpcChannelBufferVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetBuffer*: proc(self: ptr IRpcChannelBuffer, pMessage: ptr RPCOLEMESSAGE, riid: REFIID): HRESULT {.stdcall.}
-    SendReceive*: proc(self: ptr IRpcChannelBuffer, pMessage: ptr RPCOLEMESSAGE, pStatus: ptr ULONG): HRESULT {.stdcall.}
-    FreeBuffer*: proc(self: ptr IRpcChannelBuffer, pMessage: ptr RPCOLEMESSAGE): HRESULT {.stdcall.}
-    GetDestCtx*: proc(self: ptr IRpcChannelBuffer, pdwDestContext: ptr DWORD, ppvDestContext: ptr pointer): HRESULT {.stdcall.}
+    GetBuffer*: proc(
+      self: ptr IRpcChannelBuffer, pMessage: ptr RPCOLEMESSAGE, riid: REFIID
+    ): HRESULT {.stdcall.}
+    SendReceive*: proc(
+      self: ptr IRpcChannelBuffer, pMessage: ptr RPCOLEMESSAGE, pStatus: ptr ULONG
+    ): HRESULT {.stdcall.}
+    FreeBuffer*: proc(self: ptr IRpcChannelBuffer, pMessage: ptr RPCOLEMESSAGE): HRESULT {.
+      stdcall
+    .}
+    GetDestCtx*: proc(
+      self: ptr IRpcChannelBuffer,
+      pdwDestContext: ptr DWORD,
+      ppvDestContext: ptr pointer,
+    ): HRESULT {.stdcall.}
     IsConnected*: proc(self: ptr IRpcChannelBuffer): HRESULT {.stdcall.}
+
   IRpcChannelBuffer2* {.pure.} = object
     lpVtbl*: ptr IRpcChannelBuffer2Vtbl
+
   IRpcChannelBuffer2Vtbl* {.pure, inheritable.} = object of IRpcChannelBufferVtbl
-    GetProtocolVersion*: proc(self: ptr IRpcChannelBuffer2, pdwVersion: ptr DWORD): HRESULT {.stdcall.}
+    GetProtocolVersion*:
+      proc(self: ptr IRpcChannelBuffer2, pdwVersion: ptr DWORD): HRESULT {.stdcall.}
+
   ISynchronize* {.pure.} = object
     lpVtbl*: ptr ISynchronizeVtbl
+
   ISynchronizeVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Wait*: proc(self: ptr ISynchronize, dwFlags: DWORD, dwMilliseconds: DWORD): HRESULT {.stdcall.}
+    Wait*: proc(self: ptr ISynchronize, dwFlags: DWORD, dwMilliseconds: DWORD): HRESULT {.
+      stdcall
+    .}
     Signal*: proc(self: ptr ISynchronize): HRESULT {.stdcall.}
     Reset*: proc(self: ptr ISynchronize): HRESULT {.stdcall.}
+
   IAsyncRpcChannelBuffer* {.pure.} = object
     lpVtbl*: ptr IAsyncRpcChannelBufferVtbl
+
   IAsyncRpcChannelBufferVtbl* {.pure, inheritable.} = object of IRpcChannelBuffer2Vtbl
-    Send*: proc(self: ptr IAsyncRpcChannelBuffer, pMsg: ptr RPCOLEMESSAGE, pSync: ptr ISynchronize, pulStatus: ptr ULONG): HRESULT {.stdcall.}
-    Receive*: proc(self: ptr IAsyncRpcChannelBuffer, pMsg: ptr RPCOLEMESSAGE, pulStatus: ptr ULONG): HRESULT {.stdcall.}
-    GetDestCtxEx*: proc(self: ptr IAsyncRpcChannelBuffer, pMsg: ptr RPCOLEMESSAGE, pdwDestContext: ptr DWORD, ppvDestContext: ptr pointer): HRESULT {.stdcall.}
+    Send*: proc(
+      self: ptr IAsyncRpcChannelBuffer,
+      pMsg: ptr RPCOLEMESSAGE,
+      pSync: ptr ISynchronize,
+      pulStatus: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    Receive*: proc(
+      self: ptr IAsyncRpcChannelBuffer, pMsg: ptr RPCOLEMESSAGE, pulStatus: ptr ULONG
+    ): HRESULT {.stdcall.}
+    GetDestCtxEx*: proc(
+      self: ptr IAsyncRpcChannelBuffer,
+      pMsg: ptr RPCOLEMESSAGE,
+      pdwDestContext: ptr DWORD,
+      ppvDestContext: ptr pointer,
+    ): HRESULT {.stdcall.}
+
   IAsyncManager* {.pure.} = object
     lpVtbl*: ptr IAsyncManagerVtbl
+
   IAsyncManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     CompleteCall*: proc(self: ptr IAsyncManager, Result: HRESULT): HRESULT {.stdcall.}
-    GetCallContext*: proc(self: ptr IAsyncManager, riid: REFIID, pInterface: ptr pointer): HRESULT {.stdcall.}
-    GetState*: proc(self: ptr IAsyncManager, pulStateFlags: ptr ULONG): HRESULT {.stdcall.}
+    GetCallContext*: proc(
+      self: ptr IAsyncManager, riid: REFIID, pInterface: ptr pointer
+    ): HRESULT {.stdcall.}
+    GetState*:
+      proc(self: ptr IAsyncManager, pulStateFlags: ptr ULONG): HRESULT {.stdcall.}
+
   IRpcChannelBuffer3* {.pure.} = object
     lpVtbl*: ptr IRpcChannelBuffer3Vtbl
+
   IRpcChannelBuffer3Vtbl* {.pure, inheritable.} = object of IRpcChannelBuffer2Vtbl
-    Send*: proc(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, pulStatus: ptr ULONG): HRESULT {.stdcall.}
-    Receive*: proc(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, ulSize: ULONG, pulStatus: ptr ULONG): HRESULT {.stdcall.}
-    Cancel*: proc(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE): HRESULT {.stdcall.}
-    GetCallContext*: proc(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, riid: REFIID, pInterface: ptr pointer): HRESULT {.stdcall.}
-    GetDestCtxEx*: proc(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, pdwDestContext: ptr DWORD, ppvDestContext: ptr pointer): HRESULT {.stdcall.}
-    GetState*: proc(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, pState: ptr DWORD): HRESULT {.stdcall.}
-    RegisterAsync*: proc(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, pAsyncMgr: ptr IAsyncManager): HRESULT {.stdcall.}
+    Send*: proc(
+      self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, pulStatus: ptr ULONG
+    ): HRESULT {.stdcall.}
+    Receive*: proc(
+      self: ptr IRpcChannelBuffer3,
+      pMsg: ptr RPCOLEMESSAGE,
+      ulSize: ULONG,
+      pulStatus: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    Cancel*:
+      proc(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE): HRESULT {.stdcall.}
+    GetCallContext*: proc(
+      self: ptr IRpcChannelBuffer3,
+      pMsg: ptr RPCOLEMESSAGE,
+      riid: REFIID,
+      pInterface: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetDestCtxEx*: proc(
+      self: ptr IRpcChannelBuffer3,
+      pMsg: ptr RPCOLEMESSAGE,
+      pdwDestContext: ptr DWORD,
+      ppvDestContext: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetState*: proc(
+      self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, pState: ptr DWORD
+    ): HRESULT {.stdcall.}
+    RegisterAsync*: proc(
+      self: ptr IRpcChannelBuffer3,
+      pMsg: ptr RPCOLEMESSAGE,
+      pAsyncMgr: ptr IAsyncManager,
+    ): HRESULT {.stdcall.}
+
   IRpcSyntaxNegotiate* {.pure.} = object
     lpVtbl*: ptr IRpcSyntaxNegotiateVtbl
+
   IRpcSyntaxNegotiateVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    NegotiateSyntax*: proc(self: ptr IRpcSyntaxNegotiate, pMsg: ptr RPCOLEMESSAGE): HRESULT {.stdcall.}
+    NegotiateSyntax*:
+      proc(self: ptr IRpcSyntaxNegotiate, pMsg: ptr RPCOLEMESSAGE): HRESULT {.stdcall.}
+
   IRpcProxyBuffer* {.pure.} = object
     lpVtbl*: ptr IRpcProxyBufferVtbl
+
   IRpcProxyBufferVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Connect*: proc(self: ptr IRpcProxyBuffer, pRpcChannelBuffer: ptr IRpcChannelBuffer): HRESULT {.stdcall.}
+    Connect*: proc(
+      self: ptr IRpcProxyBuffer, pRpcChannelBuffer: ptr IRpcChannelBuffer
+    ): HRESULT {.stdcall.}
     Disconnect*: proc(self: ptr IRpcProxyBuffer): void {.stdcall.}
+
   IRpcStubBuffer* {.pure.} = object
     lpVtbl*: ptr IRpcStubBufferVtbl
+
   IRpcStubBufferVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Connect*: proc(self: ptr IRpcStubBuffer, pUnkServer: ptr IUnknown): HRESULT {.stdcall.}
+    Connect*:
+      proc(self: ptr IRpcStubBuffer, pUnkServer: ptr IUnknown): HRESULT {.stdcall.}
     Disconnect*: proc(self: ptr IRpcStubBuffer): void {.stdcall.}
-    Invoke*: proc(self: ptr IRpcStubBuffer, prpcmsg: ptr RPCOLEMESSAGE, pRpcChannelBuffer: ptr IRpcChannelBuffer): HRESULT {.stdcall.}
-    IsIIDSupported*: proc(self: ptr IRpcStubBuffer, riid: REFIID): ptr IRpcStubBuffer {.stdcall.}
+    Invoke*: proc(
+      self: ptr IRpcStubBuffer,
+      prpcmsg: ptr RPCOLEMESSAGE,
+      pRpcChannelBuffer: ptr IRpcChannelBuffer,
+    ): HRESULT {.stdcall.}
+    IsIIDSupported*:
+      proc(self: ptr IRpcStubBuffer, riid: REFIID): ptr IRpcStubBuffer {.stdcall.}
     CountRefs*: proc(self: ptr IRpcStubBuffer): ULONG {.stdcall.}
-    DebugServerQueryInterface*: proc(self: ptr IRpcStubBuffer, ppv: ptr pointer): HRESULT {.stdcall.}
+    DebugServerQueryInterface*:
+      proc(self: ptr IRpcStubBuffer, ppv: ptr pointer): HRESULT {.stdcall.}
     DebugServerRelease*: proc(self: ptr IRpcStubBuffer, pv: pointer): void {.stdcall.}
+
   IPSFactoryBuffer* {.pure.} = object
     lpVtbl*: ptr IPSFactoryBufferVtbl
+
   IPSFactoryBufferVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateProxy*: proc(self: ptr IPSFactoryBuffer, pUnkOuter: ptr IUnknown, riid: REFIID, ppProxy: ptr ptr IRpcProxyBuffer, ppv: ptr pointer): HRESULT {.stdcall.}
-    CreateStub*: proc(self: ptr IPSFactoryBuffer, riid: REFIID, pUnkServer: ptr IUnknown, ppStub: ptr ptr IRpcStubBuffer): HRESULT {.stdcall.}
+    CreateProxy*: proc(
+      self: ptr IPSFactoryBuffer,
+      pUnkOuter: ptr IUnknown,
+      riid: REFIID,
+      ppProxy: ptr ptr IRpcProxyBuffer,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    CreateStub*: proc(
+      self: ptr IPSFactoryBuffer,
+      riid: REFIID,
+      pUnkServer: ptr IUnknown,
+      ppStub: ptr ptr IRpcStubBuffer,
+    ): HRESULT {.stdcall.}
+
   IChannelHook* {.pure.} = object
     lpVtbl*: ptr IChannelHookVtbl
+
   IChannelHookVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ClientGetSize*: proc(self: ptr IChannelHook, uExtent: REFGUID, riid: REFIID, pDataSize: ptr ULONG): void {.stdcall.}
-    ClientFillBuffer*: proc(self: ptr IChannelHook, uExtent: REFGUID, riid: REFIID, pDataSize: ptr ULONG, pDataBuffer: pointer): void {.stdcall.}
-    ClientNotify*: proc(self: ptr IChannelHook, uExtent: REFGUID, riid: REFIID, cbDataSize: ULONG, pDataBuffer: pointer, lDataRep: DWORD, hrFault: HRESULT): void {.stdcall.}
-    ServerNotify*: proc(self: ptr IChannelHook, uExtent: REFGUID, riid: REFIID, cbDataSize: ULONG, pDataBuffer: pointer, lDataRep: DWORD): void {.stdcall.}
-    ServerGetSize*: proc(self: ptr IChannelHook, uExtent: REFGUID, riid: REFIID, hrFault: HRESULT, pDataSize: ptr ULONG): void {.stdcall.}
-    ServerFillBuffer*: proc(self: ptr IChannelHook, uExtent: REFGUID, riid: REFIID, pDataSize: ptr ULONG, pDataBuffer: pointer, hrFault: HRESULT): void {.stdcall.}
+    ClientGetSize*: proc(
+      self: ptr IChannelHook, uExtent: REFGUID, riid: REFIID, pDataSize: ptr ULONG
+    ): void {.stdcall.}
+    ClientFillBuffer*: proc(
+      self: ptr IChannelHook,
+      uExtent: REFGUID,
+      riid: REFIID,
+      pDataSize: ptr ULONG,
+      pDataBuffer: pointer,
+    ): void {.stdcall.}
+    ClientNotify*: proc(
+      self: ptr IChannelHook,
+      uExtent: REFGUID,
+      riid: REFIID,
+      cbDataSize: ULONG,
+      pDataBuffer: pointer,
+      lDataRep: DWORD,
+      hrFault: HRESULT,
+    ): void {.stdcall.}
+    ServerNotify*: proc(
+      self: ptr IChannelHook,
+      uExtent: REFGUID,
+      riid: REFIID,
+      cbDataSize: ULONG,
+      pDataBuffer: pointer,
+      lDataRep: DWORD,
+    ): void {.stdcall.}
+    ServerGetSize*: proc(
+      self: ptr IChannelHook,
+      uExtent: REFGUID,
+      riid: REFIID,
+      hrFault: HRESULT,
+      pDataSize: ptr ULONG,
+    ): void {.stdcall.}
+    ServerFillBuffer*: proc(
+      self: ptr IChannelHook,
+      uExtent: REFGUID,
+      riid: REFIID,
+      pDataSize: ptr ULONG,
+      pDataBuffer: pointer,
+      hrFault: HRESULT,
+    ): void {.stdcall.}
+
   IClientSecurity* {.pure.} = object
     lpVtbl*: ptr IClientSecurityVtbl
+
   IClientSecurityVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QueryBlanket*: proc(self: ptr IClientSecurity, pProxy: ptr IUnknown, pAuthnSvc: ptr DWORD, pAuthzSvc: ptr DWORD, pServerPrincName: ptr ptr OLECHAR, pAuthnLevel: ptr DWORD, pImpLevel: ptr DWORD, pAuthInfo: ptr pointer, pCapabilites: ptr DWORD): HRESULT {.stdcall.}
-    SetBlanket*: proc(self: ptr IClientSecurity, pProxy: ptr IUnknown, dwAuthnSvc: DWORD, dwAuthzSvc: DWORD, pServerPrincName: ptr OLECHAR, dwAuthnLevel: DWORD, dwImpLevel: DWORD, pAuthInfo: pointer, dwCapabilities: DWORD): HRESULT {.stdcall.}
-    CopyProxy*: proc(self: ptr IClientSecurity, pProxy: ptr IUnknown, ppCopy: ptr ptr IUnknown): HRESULT {.stdcall.}
+    QueryBlanket*: proc(
+      self: ptr IClientSecurity,
+      pProxy: ptr IUnknown,
+      pAuthnSvc: ptr DWORD,
+      pAuthzSvc: ptr DWORD,
+      pServerPrincName: ptr ptr OLECHAR,
+      pAuthnLevel: ptr DWORD,
+      pImpLevel: ptr DWORD,
+      pAuthInfo: ptr pointer,
+      pCapabilites: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    SetBlanket*: proc(
+      self: ptr IClientSecurity,
+      pProxy: ptr IUnknown,
+      dwAuthnSvc: DWORD,
+      dwAuthzSvc: DWORD,
+      pServerPrincName: ptr OLECHAR,
+      dwAuthnLevel: DWORD,
+      dwImpLevel: DWORD,
+      pAuthInfo: pointer,
+      dwCapabilities: DWORD,
+    ): HRESULT {.stdcall.}
+    CopyProxy*: proc(
+      self: ptr IClientSecurity, pProxy: ptr IUnknown, ppCopy: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
+
   IServerSecurity* {.pure.} = object
     lpVtbl*: ptr IServerSecurityVtbl
+
   IServerSecurityVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QueryBlanket*: proc(self: ptr IServerSecurity, pAuthnSvc: ptr DWORD, pAuthzSvc: ptr DWORD, pServerPrincName: ptr ptr OLECHAR, pAuthnLevel: ptr DWORD, pImpLevel: ptr DWORD, pPrivs: ptr pointer, pCapabilities: ptr DWORD): HRESULT {.stdcall.}
+    QueryBlanket*: proc(
+      self: ptr IServerSecurity,
+      pAuthnSvc: ptr DWORD,
+      pAuthzSvc: ptr DWORD,
+      pServerPrincName: ptr ptr OLECHAR,
+      pAuthnLevel: ptr DWORD,
+      pImpLevel: ptr DWORD,
+      pPrivs: ptr pointer,
+      pCapabilities: ptr DWORD,
+    ): HRESULT {.stdcall.}
     ImpersonateClient*: proc(self: ptr IServerSecurity): HRESULT {.stdcall.}
     RevertToSelf*: proc(self: ptr IServerSecurity): HRESULT {.stdcall.}
     IsImpersonating*: proc(self: ptr IServerSecurity): WINBOOL {.stdcall.}
+
   IRpcOptions* {.pure.} = object
     lpVtbl*: ptr IRpcOptionsVtbl
+
   IRpcOptionsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Set*: proc(self: ptr IRpcOptions, pPrx: ptr IUnknown, dwProperty: RPCOPT_PROPERTIES, dwValue: ULONG_PTR): HRESULT {.stdcall.}
-    Query*: proc(self: ptr IRpcOptions, pPrx: ptr IUnknown, dwProperty: RPCOPT_PROPERTIES, pdwValue: ptr ULONG_PTR): HRESULT {.stdcall.}
+    Set*: proc(
+      self: ptr IRpcOptions,
+      pPrx: ptr IUnknown,
+      dwProperty: RPCOPT_PROPERTIES,
+      dwValue: ULONG_PTR,
+    ): HRESULT {.stdcall.}
+    Query*: proc(
+      self: ptr IRpcOptions,
+      pPrx: ptr IUnknown,
+      dwProperty: RPCOPT_PROPERTIES,
+      pdwValue: ptr ULONG_PTR,
+    ): HRESULT {.stdcall.}
+
   IGlobalOptions* {.pure.} = object
     lpVtbl*: ptr IGlobalOptionsVtbl
+
   IGlobalOptionsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Set*: proc(self: ptr IGlobalOptions, dwProperty: GLOBALOPT_PROPERTIES, dwValue: ULONG_PTR): HRESULT {.stdcall.}
-    Query*: proc(self: ptr IGlobalOptions, dwProperty: GLOBALOPT_PROPERTIES, pdwValue: ptr ULONG_PTR): HRESULT {.stdcall.}
+    Set*: proc(
+      self: ptr IGlobalOptions, dwProperty: GLOBALOPT_PROPERTIES, dwValue: ULONG_PTR
+    ): HRESULT {.stdcall.}
+    Query*: proc(
+      self: ptr IGlobalOptions,
+      dwProperty: GLOBALOPT_PROPERTIES,
+      pdwValue: ptr ULONG_PTR,
+    ): HRESULT {.stdcall.}
+
   ISynchronizeHandle* {.pure.} = object
     lpVtbl*: ptr ISynchronizeHandleVtbl
+
   ISynchronizeHandleVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetHandle*: proc(self: ptr ISynchronizeHandle, ph: ptr HANDLE): HRESULT {.stdcall.}
+
   ISynchronizeEvent* {.pure.} = object
     lpVtbl*: ptr ISynchronizeEventVtbl
+
   ISynchronizeEventVtbl* {.pure, inheritable.} = object of ISynchronizeHandleVtbl
-    SetEventHandle*: proc(self: ptr ISynchronizeEvent, ph: ptr HANDLE): HRESULT {.stdcall.}
+    SetEventHandle*:
+      proc(self: ptr ISynchronizeEvent, ph: ptr HANDLE): HRESULT {.stdcall.}
+
   ISynchronizeContainer* {.pure.} = object
     lpVtbl*: ptr ISynchronizeContainerVtbl
+
   ISynchronizeContainerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AddSynchronize*: proc(self: ptr ISynchronizeContainer, pSync: ptr ISynchronize): HRESULT {.stdcall.}
-    WaitMultiple*: proc(self: ptr ISynchronizeContainer, dwFlags: DWORD, dwTimeOut: DWORD, ppSync: ptr ptr ISynchronize): HRESULT {.stdcall.}
+    AddSynchronize*: proc(
+      self: ptr ISynchronizeContainer, pSync: ptr ISynchronize
+    ): HRESULT {.stdcall.}
+    WaitMultiple*: proc(
+      self: ptr ISynchronizeContainer,
+      dwFlags: DWORD,
+      dwTimeOut: DWORD,
+      ppSync: ptr ptr ISynchronize,
+    ): HRESULT {.stdcall.}
+
   ISynchronizeMutex* {.pure.} = object
     lpVtbl*: ptr ISynchronizeMutexVtbl
+
   ISynchronizeMutexVtbl* {.pure, inheritable.} = object of ISynchronizeVtbl
     ReleaseMutex*: proc(self: ptr ISynchronizeMutex): HRESULT {.stdcall.}
+
   ICallFactory* {.pure.} = object
     lpVtbl*: ptr ICallFactoryVtbl
+
   ICallFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateCall*: proc(self: ptr ICallFactory, riid: REFIID, pCtrlUnk: ptr IUnknown, riid2: REFIID, ppv: ptr ptr IUnknown): HRESULT {.stdcall.}
+    CreateCall*: proc(
+      self: ptr ICallFactory,
+      riid: REFIID,
+      pCtrlUnk: ptr IUnknown,
+      riid2: REFIID,
+      ppv: ptr ptr IUnknown,
+    ): HRESULT {.stdcall.}
+
   IRpcHelper* {.pure.} = object
     lpVtbl*: ptr IRpcHelperVtbl
+
   IRpcHelperVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetDCOMProtocolVersion*: proc(self: ptr IRpcHelper, pComVersion: ptr DWORD): HRESULT {.stdcall.}
-    GetIIDFromOBJREF*: proc(self: ptr IRpcHelper, pObjRef: pointer, piid: ptr ptr IID): HRESULT {.stdcall.}
+    GetDCOMProtocolVersion*:
+      proc(self: ptr IRpcHelper, pComVersion: ptr DWORD): HRESULT {.stdcall.}
+    GetIIDFromOBJREF*: proc(
+      self: ptr IRpcHelper, pObjRef: pointer, piid: ptr ptr IID
+    ): HRESULT {.stdcall.}
+
   IReleaseMarshalBuffers* {.pure.} = object
     lpVtbl*: ptr IReleaseMarshalBuffersVtbl
+
   IReleaseMarshalBuffersVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ReleaseMarshalBuffer*: proc(self: ptr IReleaseMarshalBuffers, pMsg: ptr RPCOLEMESSAGE, dwFlags: DWORD, pChnl: ptr IUnknown): HRESULT {.stdcall.}
+    ReleaseMarshalBuffer*: proc(
+      self: ptr IReleaseMarshalBuffers,
+      pMsg: ptr RPCOLEMESSAGE,
+      dwFlags: DWORD,
+      pChnl: ptr IUnknown,
+    ): HRESULT {.stdcall.}
+
   IWaitMultiple* {.pure.} = object
     lpVtbl*: ptr IWaitMultipleVtbl
+
   IWaitMultipleVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    WaitMultiple*: proc(self: ptr IWaitMultiple, timeout: DWORD, pSync: ptr ptr ISynchronize): HRESULT {.stdcall.}
-    AddSynchronize*: proc(self: ptr IWaitMultiple, pSync: ptr ISynchronize): HRESULT {.stdcall.}
+    WaitMultiple*: proc(
+      self: ptr IWaitMultiple, timeout: DWORD, pSync: ptr ptr ISynchronize
+    ): HRESULT {.stdcall.}
+    AddSynchronize*:
+      proc(self: ptr IWaitMultiple, pSync: ptr ISynchronize): HRESULT {.stdcall.}
+
   IPipeByte* {.pure.} = object
     lpVtbl*: ptr IPipeByteVtbl
+
   IPipeByteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Pull*: proc(self: ptr IPipeByte, buf: ptr BYTE, cRequest: ULONG, pcReturned: ptr ULONG): HRESULT {.stdcall.}
+    Pull*: proc(
+      self: ptr IPipeByte, buf: ptr BYTE, cRequest: ULONG, pcReturned: ptr ULONG
+    ): HRESULT {.stdcall.}
     Push*: proc(self: ptr IPipeByte, buf: ptr BYTE, cSent: ULONG): HRESULT {.stdcall.}
+
   IPipeLong* {.pure.} = object
     lpVtbl*: ptr IPipeLongVtbl
+
   IPipeLongVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Pull*: proc(self: ptr IPipeLong, buf: ptr LONG, cRequest: ULONG, pcReturned: ptr ULONG): HRESULT {.stdcall.}
+    Pull*: proc(
+      self: ptr IPipeLong, buf: ptr LONG, cRequest: ULONG, pcReturned: ptr ULONG
+    ): HRESULT {.stdcall.}
     Push*: proc(self: ptr IPipeLong, buf: ptr LONG, cSent: ULONG): HRESULT {.stdcall.}
+
   IPipeDouble* {.pure.} = object
     lpVtbl*: ptr IPipeDoubleVtbl
+
   IPipeDoubleVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Pull*: proc(self: ptr IPipeDouble, buf: ptr DOUBLE, cRequest: ULONG, pcReturned: ptr ULONG): HRESULT {.stdcall.}
-    Push*: proc(self: ptr IPipeDouble, buf: ptr DOUBLE, cSent: ULONG): HRESULT {.stdcall.}
+    Pull*: proc(
+      self: ptr IPipeDouble, buf: ptr DOUBLE, cRequest: ULONG, pcReturned: ptr ULONG
+    ): HRESULT {.stdcall.}
+    Push*:
+      proc(self: ptr IPipeDouble, buf: ptr DOUBLE, cSent: ULONG): HRESULT {.stdcall.}
+
   IContext* {.pure.} = object
     lpVtbl*: ptr IContextVtbl
+
   IContextVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetProperty*: proc(self: ptr IContext, rpolicyId: REFGUID, flags: CPFLAGS, pUnk: ptr IUnknown): HRESULT {.stdcall.}
+    SetProperty*: proc(
+      self: ptr IContext, rpolicyId: REFGUID, flags: CPFLAGS, pUnk: ptr IUnknown
+    ): HRESULT {.stdcall.}
     RemoveProperty*: proc(self: ptr IContext, rPolicyId: REFGUID): HRESULT {.stdcall.}
-    GetProperty*: proc(self: ptr IContext, rGuid: REFGUID, pFlags: ptr CPFLAGS, ppUnk: ptr ptr IUnknown): HRESULT {.stdcall.}
-    EnumContextProps*: proc(self: ptr IContext, ppEnumContextProps: ptr ptr IEnumContextProps): HRESULT {.stdcall.}
+    GetProperty*: proc(
+      self: ptr IContext, rGuid: REFGUID, pFlags: ptr CPFLAGS, ppUnk: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
+    EnumContextProps*: proc(
+      self: ptr IContext, ppEnumContextProps: ptr ptr IEnumContextProps
+    ): HRESULT {.stdcall.}
+
   IComThreadingInfo* {.pure.} = object
     lpVtbl*: ptr IComThreadingInfoVtbl
+
   IComThreadingInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCurrentApartmentType*: proc(self: ptr IComThreadingInfo, pAptType: ptr APTTYPE): HRESULT {.stdcall.}
-    GetCurrentThreadType*: proc(self: ptr IComThreadingInfo, pThreadType: ptr THDTYPE): HRESULT {.stdcall.}
-    GetCurrentLogicalThreadId*: proc(self: ptr IComThreadingInfo, pguidLogicalThreadId: ptr GUID): HRESULT {.stdcall.}
-    SetCurrentLogicalThreadId*: proc(self: ptr IComThreadingInfo, rguid: REFGUID): HRESULT {.stdcall.}
+    GetCurrentApartmentType*:
+      proc(self: ptr IComThreadingInfo, pAptType: ptr APTTYPE): HRESULT {.stdcall.}
+    GetCurrentThreadType*:
+      proc(self: ptr IComThreadingInfo, pThreadType: ptr THDTYPE): HRESULT {.stdcall.}
+    GetCurrentLogicalThreadId*: proc(
+      self: ptr IComThreadingInfo, pguidLogicalThreadId: ptr GUID
+    ): HRESULT {.stdcall.}
+    SetCurrentLogicalThreadId*:
+      proc(self: ptr IComThreadingInfo, rguid: REFGUID): HRESULT {.stdcall.}
+
   IProcessInitControl* {.pure.} = object
     lpVtbl*: ptr IProcessInitControlVtbl
+
   IProcessInitControlVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ResetInitializerTimeout*: proc(self: ptr IProcessInitControl, dwSecondsRemaining: DWORD): HRESULT {.stdcall.}
+    ResetInitializerTimeout*: proc(
+      self: ptr IProcessInitControl, dwSecondsRemaining: DWORD
+    ): HRESULT {.stdcall.}
+
   IFastRundown* {.pure.} = object
     lpVtbl*: ptr IFastRundownVtbl
+
   IFastRundownVtbl* {.pure, inheritable.} = object of IUnknownVtbl
   IMarshalingStream* {.pure.} = object
     lpVtbl*: ptr IMarshalingStreamVtbl
+
   IMarshalingStreamVtbl* {.pure, inheritable.} = object of IStreamVtbl
-    GetMarshalingContextAttribute*: proc(self: ptr IMarshalingStream, attribute: CO_MARSHALING_CONTEXT_ATTRIBUTES, pAttributeValue: ptr ULONG_PTR): HRESULT {.stdcall.}
+    GetMarshalingContextAttribute*: proc(
+      self: ptr IMarshalingStream,
+      attribute: CO_MARSHALING_CONTEXT_ATTRIBUTES,
+      pAttributeValue: ptr ULONG_PTR,
+    ): HRESULT {.stdcall.}
+
   IROTData* {.pure.} = object
     lpVtbl*: ptr IROTDataVtbl
+
   IROTDataVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetComparisonData*: proc(self: ptr IROTData, pbData: ptr uint8, cbMax: ULONG, pcbData: ptr ULONG): HRESULT {.stdcall.}
+    GetComparisonData*: proc(
+      self: ptr IROTData, pbData: ptr uint8, cbMax: ULONG, pcbData: ptr ULONG
+    ): HRESULT {.stdcall.}
+
   AsyncIAdviseSink* {.pure.} = object
     lpVtbl*: ptr AsyncIAdviseSinkVtbl
+
   AsyncIAdviseSinkVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Begin_OnDataChange*: proc(self: ptr AsyncIAdviseSink, pFormatetc: ptr FORMATETC, pStgmed: ptr STGMEDIUM): void {.stdcall.}
+    Begin_OnDataChange*: proc(
+      self: ptr AsyncIAdviseSink, pFormatetc: ptr FORMATETC, pStgmed: ptr STGMEDIUM
+    ): void {.stdcall.}
     Finish_OnDataChange*: proc(self: ptr AsyncIAdviseSink): void {.stdcall.}
-    Begin_OnViewChange*: proc(self: ptr AsyncIAdviseSink, dwAspect: DWORD, lindex: LONG): void {.stdcall.}
+    Begin_OnViewChange*:
+      proc(self: ptr AsyncIAdviseSink, dwAspect: DWORD, lindex: LONG): void {.stdcall.}
     Finish_OnViewChange*: proc(self: ptr AsyncIAdviseSink): void {.stdcall.}
-    Begin_OnRename*: proc(self: ptr AsyncIAdviseSink, pmk: ptr IMoniker): void {.stdcall.}
+    Begin_OnRename*:
+      proc(self: ptr AsyncIAdviseSink, pmk: ptr IMoniker): void {.stdcall.}
     Finish_OnRename*: proc(self: ptr AsyncIAdviseSink): void {.stdcall.}
     Begin_OnSave*: proc(self: ptr AsyncIAdviseSink): void {.stdcall.}
     Finish_OnSave*: proc(self: ptr AsyncIAdviseSink): void {.stdcall.}
     Begin_OnClose*: proc(self: ptr AsyncIAdviseSink): void {.stdcall.}
     Finish_OnClose*: proc(self: ptr AsyncIAdviseSink): void {.stdcall.}
+
   AsyncIAdviseSink2* {.pure.} = object
     lpVtbl*: ptr AsyncIAdviseSink2Vtbl
+
   AsyncIAdviseSink2Vtbl* {.pure, inheritable.} = object of IAdviseSinkVtbl
-    Begin_OnLinkSrcChange*: proc(self: ptr AsyncIAdviseSink2, pmk: ptr IMoniker): void {.stdcall.}
+    Begin_OnLinkSrcChange*:
+      proc(self: ptr AsyncIAdviseSink2, pmk: ptr IMoniker): void {.stdcall.}
     Finish_OnLinkSrcChange*: proc(self: ptr AsyncIAdviseSink2): void {.stdcall.}
+
   IClassActivator* {.pure.} = object
     lpVtbl*: ptr IClassActivatorVtbl
+
   IClassActivatorVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetClassObject*: proc(self: ptr IClassActivator, rclsid: REFCLSID, dwClassContext: DWORD, locale: LCID, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetClassObject*: proc(
+      self: ptr IClassActivator,
+      rclsid: REFCLSID,
+      dwClassContext: DWORD,
+      locale: LCID,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+
   IFillLockBytes* {.pure.} = object
     lpVtbl*: ptr IFillLockBytesVtbl
+
   IFillLockBytesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    FillAppend*: proc(self: ptr IFillLockBytes, pv: pointer, cb: ULONG, pcbWritten: ptr ULONG): HRESULT {.stdcall.}
-    FillAt*: proc(self: ptr IFillLockBytes, ulOffset: ULARGE_INTEGER, pv: pointer, cb: ULONG, pcbWritten: ptr ULONG): HRESULT {.stdcall.}
-    SetFillSize*: proc(self: ptr IFillLockBytes, ulSize: ULARGE_INTEGER): HRESULT {.stdcall.}
+    FillAppend*: proc(
+      self: ptr IFillLockBytes, pv: pointer, cb: ULONG, pcbWritten: ptr ULONG
+    ): HRESULT {.stdcall.}
+    FillAt*: proc(
+      self: ptr IFillLockBytes,
+      ulOffset: ULARGE_INTEGER,
+      pv: pointer,
+      cb: ULONG,
+      pcbWritten: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    SetFillSize*:
+      proc(self: ptr IFillLockBytes, ulSize: ULARGE_INTEGER): HRESULT {.stdcall.}
     Terminate*: proc(self: ptr IFillLockBytes, bCanceled: WINBOOL): HRESULT {.stdcall.}
+
   IProgressNotify* {.pure.} = object
     lpVtbl*: ptr IProgressNotifyVtbl
+
   IProgressNotifyVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnProgress*: proc(self: ptr IProgressNotify, dwProgressCurrent: DWORD, dwProgressMaximum: DWORD, fAccurate: WINBOOL, fOwner: WINBOOL): HRESULT {.stdcall.}
+    OnProgress*: proc(
+      self: ptr IProgressNotify,
+      dwProgressCurrent: DWORD,
+      dwProgressMaximum: DWORD,
+      fAccurate: WINBOOL,
+      fOwner: WINBOOL,
+    ): HRESULT {.stdcall.}
+
   ILayoutStorage* {.pure.} = object
     lpVtbl*: ptr ILayoutStorageVtbl
+
   ILayoutStorageVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    LayoutScript*: proc(self: ptr ILayoutStorage, pStorageLayout: ptr StorageLayout, nEntries: DWORD, glfInterleavedFlag: DWORD): HRESULT {.stdcall.}
+    LayoutScript*: proc(
+      self: ptr ILayoutStorage,
+      pStorageLayout: ptr StorageLayout,
+      nEntries: DWORD,
+      glfInterleavedFlag: DWORD,
+    ): HRESULT {.stdcall.}
     BeginMonitor*: proc(self: ptr ILayoutStorage): HRESULT {.stdcall.}
     EndMonitor*: proc(self: ptr ILayoutStorage): HRESULT {.stdcall.}
-    ReLayoutDocfile*: proc(self: ptr ILayoutStorage, pwcsNewDfName: ptr OLECHAR): HRESULT {.stdcall.}
-    ReLayoutDocfileOnILockBytes*: proc(self: ptr ILayoutStorage, pILockBytes: ptr ILockBytes): HRESULT {.stdcall.}
+    ReLayoutDocfile*:
+      proc(self: ptr ILayoutStorage, pwcsNewDfName: ptr OLECHAR): HRESULT {.stdcall.}
+    ReLayoutDocfileOnILockBytes*:
+      proc(self: ptr ILayoutStorage, pILockBytes: ptr ILockBytes): HRESULT {.stdcall.}
+
   IBlockingLock* {.pure.} = object
     lpVtbl*: ptr IBlockingLockVtbl
+
   IBlockingLockVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Lock*: proc(self: ptr IBlockingLock, dwTimeout: DWORD): HRESULT {.stdcall.}
     Unlock*: proc(self: ptr IBlockingLock): HRESULT {.stdcall.}
+
   ITimeAndNoticeControl* {.pure.} = object
     lpVtbl*: ptr ITimeAndNoticeControlVtbl
+
   ITimeAndNoticeControlVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SuppressChanges*: proc(self: ptr ITimeAndNoticeControl, res1: DWORD, res2: DWORD): HRESULT {.stdcall.}
+    SuppressChanges*: proc(
+      self: ptr ITimeAndNoticeControl, res1: DWORD, res2: DWORD
+    ): HRESULT {.stdcall.}
+
   IOplockStorage* {.pure.} = object
     lpVtbl*: ptr IOplockStorageVtbl
+
   IOplockStorageVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateStorageEx*: proc(self: ptr IOplockStorage, pwcsName: LPCWSTR, grfMode: DWORD, stgfmt: DWORD, grfAttrs: DWORD, riid: REFIID, ppstgOpen: ptr pointer): HRESULT {.stdcall.}
-    OpenStorageEx*: proc(self: ptr IOplockStorage, pwcsName: LPCWSTR, grfMode: DWORD, stgfmt: DWORD, grfAttrs: DWORD, riid: REFIID, ppstgOpen: ptr pointer): HRESULT {.stdcall.}
+    CreateStorageEx*: proc(
+      self: ptr IOplockStorage,
+      pwcsName: LPCWSTR,
+      grfMode: DWORD,
+      stgfmt: DWORD,
+      grfAttrs: DWORD,
+      riid: REFIID,
+      ppstgOpen: ptr pointer,
+    ): HRESULT {.stdcall.}
+    OpenStorageEx*: proc(
+      self: ptr IOplockStorage,
+      pwcsName: LPCWSTR,
+      grfMode: DWORD,
+      stgfmt: DWORD,
+      grfAttrs: DWORD,
+      riid: REFIID,
+      ppstgOpen: ptr pointer,
+    ): HRESULT {.stdcall.}
+
   IDirectWriterLock* {.pure.} = object
     lpVtbl*: ptr IDirectWriterLockVtbl
+
   IDirectWriterLockVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    WaitForWriteAccess*: proc(self: ptr IDirectWriterLock, dwTimeout: DWORD): HRESULT {.stdcall.}
+    WaitForWriteAccess*:
+      proc(self: ptr IDirectWriterLock, dwTimeout: DWORD): HRESULT {.stdcall.}
     ReleaseWriteAccess*: proc(self: ptr IDirectWriterLock): HRESULT {.stdcall.}
     HaveWriteAccess*: proc(self: ptr IDirectWriterLock): HRESULT {.stdcall.}
+
   IUrlMon* {.pure.} = object
     lpVtbl*: ptr IUrlMonVtbl
+
   IUrlMonVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AsyncGetClassBits*: proc(self: ptr IUrlMon, rclsid: REFCLSID, pszTYPE: LPCWSTR, pszExt: LPCWSTR, dwFileVersionMS: DWORD, dwFileVersionLS: DWORD, pszCodeBase: LPCWSTR, pbc: ptr IBindCtx, dwClassContext: DWORD, riid: REFIID, flags: DWORD): HRESULT {.stdcall.}
+    AsyncGetClassBits*: proc(
+      self: ptr IUrlMon,
+      rclsid: REFCLSID,
+      pszTYPE: LPCWSTR,
+      pszExt: LPCWSTR,
+      dwFileVersionMS: DWORD,
+      dwFileVersionLS: DWORD,
+      pszCodeBase: LPCWSTR,
+      pbc: ptr IBindCtx,
+      dwClassContext: DWORD,
+      riid: REFIID,
+      flags: DWORD,
+    ): HRESULT {.stdcall.}
+
   IForegroundTransfer* {.pure.} = object
     lpVtbl*: ptr IForegroundTransferVtbl
+
   IForegroundTransferVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AllowForegroundTransfer*: proc(self: ptr IForegroundTransfer, lpvReserved: pointer): HRESULT {.stdcall.}
+    AllowForegroundTransfer*:
+      proc(self: ptr IForegroundTransfer, lpvReserved: pointer): HRESULT {.stdcall.}
+
   IThumbnailExtractor* {.pure.} = object
     lpVtbl*: ptr IThumbnailExtractorVtbl
+
   IThumbnailExtractorVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ExtractThumbnail*: proc(self: ptr IThumbnailExtractor, pStg: ptr IStorage, ulLength: ULONG, ulHeight: ULONG, pulOutputLength: ptr ULONG, pulOutputHeight: ptr ULONG, phOutputBitmap: ptr HBITMAP): HRESULT {.stdcall.}
-    OnFileUpdated*: proc(self: ptr IThumbnailExtractor, pStg: ptr IStorage): HRESULT {.stdcall.}
+    ExtractThumbnail*: proc(
+      self: ptr IThumbnailExtractor,
+      pStg: ptr IStorage,
+      ulLength: ULONG,
+      ulHeight: ULONG,
+      pulOutputLength: ptr ULONG,
+      pulOutputHeight: ptr ULONG,
+      phOutputBitmap: ptr HBITMAP,
+    ): HRESULT {.stdcall.}
+    OnFileUpdated*:
+      proc(self: ptr IThumbnailExtractor, pStg: ptr IStorage): HRESULT {.stdcall.}
+
   IDummyHICONIncluder* {.pure.} = object
     lpVtbl*: ptr IDummyHICONIncluderVtbl
+
   IDummyHICONIncluderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Dummy*: proc(self: ptr IDummyHICONIncluder, h1: HICON, h2: HDC): HRESULT {.stdcall.}
+
   IProcessLock* {.pure.} = object
     lpVtbl*: ptr IProcessLockVtbl
+
   IProcessLockVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     AddRefOnProcess*: proc(self: ptr IProcessLock): ULONG {.stdcall.}
     ReleaseRefOnProcess*: proc(self: ptr IProcessLock): ULONG {.stdcall.}
+
   ISurrogateService* {.pure.} = object
     lpVtbl*: ptr ISurrogateServiceVtbl
+
   ISurrogateServiceVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Init*: proc(self: ptr ISurrogateService, rguidProcessID: REFGUID, pProcessLock: ptr IProcessLock, pfApplicationAware: ptr WINBOOL): HRESULT {.stdcall.}
-    ApplicationLaunch*: proc(self: ptr ISurrogateService, rguidApplID: REFGUID, appType: ApplicationType): HRESULT {.stdcall.}
-    ApplicationFree*: proc(self: ptr ISurrogateService, rguidApplID: REFGUID): HRESULT {.stdcall.}
-    CatalogRefresh*: proc(self: ptr ISurrogateService, ulReserved: ULONG): HRESULT {.stdcall.}
-    ProcessShutdown*: proc(self: ptr ISurrogateService, shutdownType: ShutdownType): HRESULT {.stdcall.}
+    Init*: proc(
+      self: ptr ISurrogateService,
+      rguidProcessID: REFGUID,
+      pProcessLock: ptr IProcessLock,
+      pfApplicationAware: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+    ApplicationLaunch*: proc(
+      self: ptr ISurrogateService, rguidApplID: REFGUID, appType: ApplicationType
+    ): HRESULT {.stdcall.}
+    ApplicationFree*:
+      proc(self: ptr ISurrogateService, rguidApplID: REFGUID): HRESULT {.stdcall.}
+    CatalogRefresh*:
+      proc(self: ptr ISurrogateService, ulReserved: ULONG): HRESULT {.stdcall.}
+    ProcessShutdown*:
+      proc(self: ptr ISurrogateService, shutdownType: ShutdownType): HRESULT {.stdcall.}
+
   IApartmentShutdown* {.pure.} = object
     lpVtbl*: ptr IApartmentShutdownVtbl
+
   IApartmentShutdownVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnUninitialize*: proc(self: ptr IApartmentShutdown, ui64ApartmentIdentifier: UINT64): void {.stdcall.}
+    OnUninitialize*: proc(
+      self: ptr IApartmentShutdown, ui64ApartmentIdentifier: UINT64
+    ): void {.stdcall.}
+
   ITypeFactory* {.pure.} = object
     lpVtbl*: ptr ITypeFactoryVtbl
+
   ITypeFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateFromTypeInfo*: proc(self: ptr ITypeFactory, pTypeInfo: ptr ITypeInfo, riid: REFIID, ppv: ptr ptr IUnknown): HRESULT {.stdcall.}
+    CreateFromTypeInfo*: proc(
+      self: ptr ITypeFactory,
+      pTypeInfo: ptr ITypeInfo,
+      riid: REFIID,
+      ppv: ptr ptr IUnknown,
+    ): HRESULT {.stdcall.}
+
   ITypeMarshal* {.pure.} = object
     lpVtbl*: ptr ITypeMarshalVtbl
+
   ITypeMarshalVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Size*: proc(self: ptr ITypeMarshal, pvType: PVOID, dwDestContext: DWORD, pvDestContext: PVOID, pSize: ptr ULONG): HRESULT {.stdcall.}
-    Marshal*: proc(self: ptr ITypeMarshal, pvType: PVOID, dwDestContext: DWORD, pvDestContext: PVOID, cbBufferLength: ULONG, pBuffer: ptr BYTE, pcbWritten: ptr ULONG): HRESULT {.stdcall.}
-    Unmarshal*: proc(self: ptr ITypeMarshal, pvType: PVOID, dwFlags: DWORD, cbBufferLength: ULONG, pBuffer: ptr BYTE, pcbRead: ptr ULONG): HRESULT {.stdcall.}
+    Size*: proc(
+      self: ptr ITypeMarshal,
+      pvType: PVOID,
+      dwDestContext: DWORD,
+      pvDestContext: PVOID,
+      pSize: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    Marshal*: proc(
+      self: ptr ITypeMarshal,
+      pvType: PVOID,
+      dwDestContext: DWORD,
+      pvDestContext: PVOID,
+      cbBufferLength: ULONG,
+      pBuffer: ptr BYTE,
+      pcbWritten: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    Unmarshal*: proc(
+      self: ptr ITypeMarshal,
+      pvType: PVOID,
+      dwFlags: DWORD,
+      cbBufferLength: ULONG,
+      pBuffer: ptr BYTE,
+      pcbRead: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Free*: proc(self: ptr ITypeMarshal, pvType: PVOID): HRESULT {.stdcall.}
+
   IContinue* {.pure.} = object
     lpVtbl*: ptr IContinueVtbl
+
   IContinueVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     FContinue*: proc(self: ptr IContinue): HRESULT {.stdcall.}
+
   IDropSourceNotify* {.pure.} = object
     lpVtbl*: ptr IDropSourceNotifyVtbl
+
   IDropSourceNotifyVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    DragEnterTarget*: proc(self: ptr IDropSourceNotify, hwndTarget: HWND): HRESULT {.stdcall.}
+    DragEnterTarget*:
+      proc(self: ptr IDropSourceNotify, hwndTarget: HWND): HRESULT {.stdcall.}
     DragLeaveTarget*: proc(self: ptr IDropSourceNotify): HRESULT {.stdcall.}
+
   IXMLDOMImplementation* {.pure.} = object
     lpVtbl*: ptr IXMLDOMImplementationVtbl
+
   IXMLDOMImplementationVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    hasFeature*: proc(self: ptr IXMLDOMImplementation, feature: BSTR, version: BSTR, hasFeature: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    hasFeature*: proc(
+      self: ptr IXMLDOMImplementation,
+      feature: BSTR,
+      version: BSTR,
+      hasFeature: ptr VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+
   IXMLDOMNodeList* {.pure.} = object
     lpVtbl*: ptr IXMLDOMNodeListVtbl
+
   IXMLDOMNodeListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_item*: proc(self: ptr IXMLDOMNodeList, index: LONG, listItem: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    get_length*: proc(self: ptr IXMLDOMNodeList, listLength: ptr LONG): HRESULT {.stdcall.}
-    nextNode*: proc(self: ptr IXMLDOMNodeList, nextItem: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
+    get_item*: proc(
+      self: ptr IXMLDOMNodeList, index: LONG, listItem: ptr ptr IXMLDOMNode
+    ): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IXMLDOMNodeList, listLength: ptr LONG): HRESULT {.stdcall.}
+    nextNode*: proc(self: ptr IXMLDOMNodeList, nextItem: ptr ptr IXMLDOMNode): HRESULT {.
+      stdcall
+    .}
     reset*: proc(self: ptr IXMLDOMNodeList): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IXMLDOMNodeList, ppUnk: ptr ptr IUnknown): HRESULT {.stdcall.}
+    get_newEnum*:
+      proc(self: ptr IXMLDOMNodeList, ppUnk: ptr ptr IUnknown): HRESULT {.stdcall.}
+
   IXMLDOMNode* {.pure.} = object
     lpVtbl*: ptr IXMLDOMNodeVtbl
+
   IXMLDOMNodeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_nodeName*: proc(self: ptr IXMLDOMNode, name: ptr BSTR): HRESULT {.stdcall.}
     get_nodeValue*: proc(self: ptr IXMLDOMNode, value: ptr VARIANT): HRESULT {.stdcall.}
     put_nodeValue*: proc(self: ptr IXMLDOMNode, value: VARIANT): HRESULT {.stdcall.}
-    get_nodeType*: proc(self: ptr IXMLDOMNode, `type`: ptr DOMNodeType): HRESULT {.stdcall.}
-    get_parentNode*: proc(self: ptr IXMLDOMNode, parent: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    get_childNodes*: proc(self: ptr IXMLDOMNode, childList: ptr ptr IXMLDOMNodeList): HRESULT {.stdcall.}
-    get_firstChild*: proc(self: ptr IXMLDOMNode, firstChild: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    get_lastChild*: proc(self: ptr IXMLDOMNode, lastChild: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    get_previousSibling*: proc(self: ptr IXMLDOMNode, previousSibling: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    get_nextSibling*: proc(self: ptr IXMLDOMNode, nextSibling: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    get_attributes*: proc(self: ptr IXMLDOMNode, attributeMap: ptr ptr IXMLDOMNamedNodeMap): HRESULT {.stdcall.}
-    insertBefore*: proc(self: ptr IXMLDOMNode, newChild: ptr IXMLDOMNode, refChild: VARIANT, outNewChild: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    replaceChild*: proc(self: ptr IXMLDOMNode, newChild: ptr IXMLDOMNode, oldChild: ptr IXMLDOMNode, outOldChild: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    removeChild*: proc(self: ptr IXMLDOMNode, childNode: ptr IXMLDOMNode, oldChild: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    appendChild*: proc(self: ptr IXMLDOMNode, newChild: ptr IXMLDOMNode, outNewChild: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    hasChildNodes*: proc(self: ptr IXMLDOMNode, hasChild: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_ownerDocument*: proc(self: ptr IXMLDOMNode, DOMDocument: ptr ptr IXMLDOMDocument): HRESULT {.stdcall.}
-    cloneNode*: proc(self: ptr IXMLDOMNode, deep: VARIANT_BOOL, cloneRoot: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    get_nodeTypeString*: proc(self: ptr IXMLDOMNode, nodeType: ptr BSTR): HRESULT {.stdcall.}
+    get_nodeType*:
+      proc(self: ptr IXMLDOMNode, `type`: ptr DOMNodeType): HRESULT {.stdcall.}
+    get_parentNode*:
+      proc(self: ptr IXMLDOMNode, parent: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
+    get_childNodes*: proc(
+      self: ptr IXMLDOMNode, childList: ptr ptr IXMLDOMNodeList
+    ): HRESULT {.stdcall.}
+    get_firstChild*:
+      proc(self: ptr IXMLDOMNode, firstChild: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
+    get_lastChild*:
+      proc(self: ptr IXMLDOMNode, lastChild: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
+    get_previousSibling*: proc(
+      self: ptr IXMLDOMNode, previousSibling: ptr ptr IXMLDOMNode
+    ): HRESULT {.stdcall.}
+    get_nextSibling*:
+      proc(self: ptr IXMLDOMNode, nextSibling: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
+    get_attributes*: proc(
+      self: ptr IXMLDOMNode, attributeMap: ptr ptr IXMLDOMNamedNodeMap
+    ): HRESULT {.stdcall.}
+    insertBefore*: proc(
+      self: ptr IXMLDOMNode,
+      newChild: ptr IXMLDOMNode,
+      refChild: VARIANT,
+      outNewChild: ptr ptr IXMLDOMNode,
+    ): HRESULT {.stdcall.}
+    replaceChild*: proc(
+      self: ptr IXMLDOMNode,
+      newChild: ptr IXMLDOMNode,
+      oldChild: ptr IXMLDOMNode,
+      outOldChild: ptr ptr IXMLDOMNode,
+    ): HRESULT {.stdcall.}
+    removeChild*: proc(
+      self: ptr IXMLDOMNode, childNode: ptr IXMLDOMNode, oldChild: ptr ptr IXMLDOMNode
+    ): HRESULT {.stdcall.}
+    appendChild*: proc(
+      self: ptr IXMLDOMNode, newChild: ptr IXMLDOMNode, outNewChild: ptr ptr IXMLDOMNode
+    ): HRESULT {.stdcall.}
+    hasChildNodes*:
+      proc(self: ptr IXMLDOMNode, hasChild: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_ownerDocument*: proc(
+      self: ptr IXMLDOMNode, DOMDocument: ptr ptr IXMLDOMDocument
+    ): HRESULT {.stdcall.}
+    cloneNode*: proc(
+      self: ptr IXMLDOMNode, deep: VARIANT_BOOL, cloneRoot: ptr ptr IXMLDOMNode
+    ): HRESULT {.stdcall.}
+    get_nodeTypeString*:
+      proc(self: ptr IXMLDOMNode, nodeType: ptr BSTR): HRESULT {.stdcall.}
     get_text*: proc(self: ptr IXMLDOMNode, text: ptr BSTR): HRESULT {.stdcall.}
     put_text*: proc(self: ptr IXMLDOMNode, text: BSTR): HRESULT {.stdcall.}
-    get_specified*: proc(self: ptr IXMLDOMNode, isSpecified: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_definition*: proc(self: ptr IXMLDOMNode, definitionNode: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    get_nodeTypedValue*: proc(self: ptr IXMLDOMNode, typedValue: ptr VARIANT): HRESULT {.stdcall.}
-    put_nodeTypedValue*: proc(self: ptr IXMLDOMNode, typedValue: VARIANT): HRESULT {.stdcall.}
-    get_dataType*: proc(self: ptr IXMLDOMNode, dataTypeName: ptr VARIANT): HRESULT {.stdcall.}
+    get_specified*:
+      proc(self: ptr IXMLDOMNode, isSpecified: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_definition*: proc(
+      self: ptr IXMLDOMNode, definitionNode: ptr ptr IXMLDOMNode
+    ): HRESULT {.stdcall.}
+    get_nodeTypedValue*:
+      proc(self: ptr IXMLDOMNode, typedValue: ptr VARIANT): HRESULT {.stdcall.}
+    put_nodeTypedValue*:
+      proc(self: ptr IXMLDOMNode, typedValue: VARIANT): HRESULT {.stdcall.}
+    get_dataType*:
+      proc(self: ptr IXMLDOMNode, dataTypeName: ptr VARIANT): HRESULT {.stdcall.}
     put_dataType*: proc(self: ptr IXMLDOMNode, dataTypeName: BSTR): HRESULT {.stdcall.}
     get_xml*: proc(self: ptr IXMLDOMNode, xmlString: ptr BSTR): HRESULT {.stdcall.}
-    transformNode*: proc(self: ptr IXMLDOMNode, stylesheet: ptr IXMLDOMNode, xmlString: ptr BSTR): HRESULT {.stdcall.}
-    selectNodes*: proc(self: ptr IXMLDOMNode, queryString: BSTR, resultList: ptr ptr IXMLDOMNodeList): HRESULT {.stdcall.}
-    selectSingleNode*: proc(self: ptr IXMLDOMNode, queryString: BSTR, resultNode: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    get_parsed*: proc(self: ptr IXMLDOMNode, isParsed: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_namespaceURI*: proc(self: ptr IXMLDOMNode, namespaceURI: ptr BSTR): HRESULT {.stdcall.}
-    get_prefix*: proc(self: ptr IXMLDOMNode, prefixString: ptr BSTR): HRESULT {.stdcall.}
-    get_baseName*: proc(self: ptr IXMLDOMNode, nameString: ptr BSTR): HRESULT {.stdcall.}
-    transformNodeToObject*: proc(self: ptr IXMLDOMNode, stylesheet: ptr IXMLDOMNode, outputObject: VARIANT): HRESULT {.stdcall.}
+    transformNode*: proc(
+      self: ptr IXMLDOMNode, stylesheet: ptr IXMLDOMNode, xmlString: ptr BSTR
+    ): HRESULT {.stdcall.}
+    selectNodes*: proc(
+      self: ptr IXMLDOMNode, queryString: BSTR, resultList: ptr ptr IXMLDOMNodeList
+    ): HRESULT {.stdcall.}
+    selectSingleNode*: proc(
+      self: ptr IXMLDOMNode, queryString: BSTR, resultNode: ptr ptr IXMLDOMNode
+    ): HRESULT {.stdcall.}
+    get_parsed*:
+      proc(self: ptr IXMLDOMNode, isParsed: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_namespaceURI*:
+      proc(self: ptr IXMLDOMNode, namespaceURI: ptr BSTR): HRESULT {.stdcall.}
+    get_prefix*:
+      proc(self: ptr IXMLDOMNode, prefixString: ptr BSTR): HRESULT {.stdcall.}
+    get_baseName*:
+      proc(self: ptr IXMLDOMNode, nameString: ptr BSTR): HRESULT {.stdcall.}
+    transformNodeToObject*: proc(
+      self: ptr IXMLDOMNode, stylesheet: ptr IXMLDOMNode, outputObject: VARIANT
+    ): HRESULT {.stdcall.}
+
   IXMLDOMDocumentType* {.pure.} = object
     lpVtbl*: ptr IXMLDOMDocumentTypeVtbl
+
   IXMLDOMDocumentTypeVtbl* {.pure, inheritable.} = object of IXMLDOMNodeVtbl
-    get_name*: proc(self: ptr IXMLDOMDocumentType, rootName: ptr BSTR): HRESULT {.stdcall.}
-    get_entities*: proc(self: ptr IXMLDOMDocumentType, entityMap: ptr ptr IXMLDOMNamedNodeMap): HRESULT {.stdcall.}
-    get_notations*: proc(self: ptr IXMLDOMDocumentType, notationMap: ptr ptr IXMLDOMNamedNodeMap): HRESULT {.stdcall.}
+    get_name*:
+      proc(self: ptr IXMLDOMDocumentType, rootName: ptr BSTR): HRESULT {.stdcall.}
+    get_entities*: proc(
+      self: ptr IXMLDOMDocumentType, entityMap: ptr ptr IXMLDOMNamedNodeMap
+    ): HRESULT {.stdcall.}
+    get_notations*: proc(
+      self: ptr IXMLDOMDocumentType, notationMap: ptr ptr IXMLDOMNamedNodeMap
+    ): HRESULT {.stdcall.}
+
   IXMLDOMAttribute* {.pure.} = object
     lpVtbl*: ptr IXMLDOMAttributeVtbl
+
   IXMLDOMAttributeVtbl* {.pure, inheritable.} = object of IXMLDOMNodeVtbl
-    get_name*: proc(self: ptr IXMLDOMAttribute, attributeName: ptr BSTR): HRESULT {.stdcall.}
-    get_value*: proc(self: ptr IXMLDOMAttribute, attributeValue: ptr VARIANT): HRESULT {.stdcall.}
-    put_value*: proc(self: ptr IXMLDOMAttribute, attributeValue: VARIANT): HRESULT {.stdcall.}
+    get_name*:
+      proc(self: ptr IXMLDOMAttribute, attributeName: ptr BSTR): HRESULT {.stdcall.}
+    get_value*:
+      proc(self: ptr IXMLDOMAttribute, attributeValue: ptr VARIANT): HRESULT {.stdcall.}
+    put_value*:
+      proc(self: ptr IXMLDOMAttribute, attributeValue: VARIANT): HRESULT {.stdcall.}
+
   IXMLDOMElement* {.pure.} = object
     lpVtbl*: ptr IXMLDOMElementVtbl
+
   IXMLDOMElementVtbl* {.pure, inheritable.} = object of IXMLDOMNodeVtbl
     get_tagName*: proc(self: ptr IXMLDOMElement, tagName: ptr BSTR): HRESULT {.stdcall.}
-    getAttribute*: proc(self: ptr IXMLDOMElement, name: BSTR, value: ptr VARIANT): HRESULT {.stdcall.}
-    setAttribute*: proc(self: ptr IXMLDOMElement, name: BSTR, value: VARIANT): HRESULT {.stdcall.}
+    getAttribute*: proc(
+      self: ptr IXMLDOMElement, name: BSTR, value: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    setAttribute*:
+      proc(self: ptr IXMLDOMElement, name: BSTR, value: VARIANT): HRESULT {.stdcall.}
     removeAttribute*: proc(self: ptr IXMLDOMElement, name: BSTR): HRESULT {.stdcall.}
-    getAttributeNode*: proc(self: ptr IXMLDOMElement, name: BSTR, attributeNode: ptr ptr IXMLDOMAttribute): HRESULT {.stdcall.}
-    setAttributeNode*: proc(self: ptr IXMLDOMElement, DOMAttribute: ptr IXMLDOMAttribute, attributeNode: ptr ptr IXMLDOMAttribute): HRESULT {.stdcall.}
-    removeAttributeNode*: proc(self: ptr IXMLDOMElement, DOMAttribute: ptr IXMLDOMAttribute, attributeNode: ptr ptr IXMLDOMAttribute): HRESULT {.stdcall.}
-    getElementsByTagName*: proc(self: ptr IXMLDOMElement, tagName: BSTR, resultList: ptr ptr IXMLDOMNodeList): HRESULT {.stdcall.}
+    getAttributeNode*: proc(
+      self: ptr IXMLDOMElement, name: BSTR, attributeNode: ptr ptr IXMLDOMAttribute
+    ): HRESULT {.stdcall.}
+    setAttributeNode*: proc(
+      self: ptr IXMLDOMElement,
+      DOMAttribute: ptr IXMLDOMAttribute,
+      attributeNode: ptr ptr IXMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+    removeAttributeNode*: proc(
+      self: ptr IXMLDOMElement,
+      DOMAttribute: ptr IXMLDOMAttribute,
+      attributeNode: ptr ptr IXMLDOMAttribute,
+    ): HRESULT {.stdcall.}
+    getElementsByTagName*: proc(
+      self: ptr IXMLDOMElement, tagName: BSTR, resultList: ptr ptr IXMLDOMNodeList
+    ): HRESULT {.stdcall.}
     normalize*: proc(self: ptr IXMLDOMElement): HRESULT {.stdcall.}
+
   IXMLDOMDocumentFragment* {.pure.} = object
     lpVtbl*: ptr IXMLDOMDocumentFragmentVtbl
+
   IXMLDOMDocumentFragmentVtbl* {.pure, inheritable.} = object of IXMLDOMNodeVtbl
   IXMLDOMCharacterData* {.pure.} = object
     lpVtbl*: ptr IXMLDOMCharacterDataVtbl
+
   IXMLDOMCharacterDataVtbl* {.pure, inheritable.} = object of IXMLDOMNodeVtbl
     get_data*: proc(self: ptr IXMLDOMCharacterData, data: ptr BSTR): HRESULT {.stdcall.}
     put_data*: proc(self: ptr IXMLDOMCharacterData, data: BSTR): HRESULT {.stdcall.}
-    get_length*: proc(self: ptr IXMLDOMCharacterData, dataLength: ptr LONG): HRESULT {.stdcall.}
-    substringData*: proc(self: ptr IXMLDOMCharacterData, offset: LONG, count: LONG, data: ptr BSTR): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IXMLDOMCharacterData, dataLength: ptr LONG): HRESULT {.stdcall.}
+    substringData*: proc(
+      self: ptr IXMLDOMCharacterData, offset: LONG, count: LONG, data: ptr BSTR
+    ): HRESULT {.stdcall.}
     appendData*: proc(self: ptr IXMLDOMCharacterData, data: BSTR): HRESULT {.stdcall.}
-    insertData*: proc(self: ptr IXMLDOMCharacterData, offset: LONG, data: BSTR): HRESULT {.stdcall.}
-    deleteData*: proc(self: ptr IXMLDOMCharacterData, offset: LONG, count: LONG): HRESULT {.stdcall.}
-    replaceData*: proc(self: ptr IXMLDOMCharacterData, offset: LONG, count: LONG, data: BSTR): HRESULT {.stdcall.}
+    insertData*: proc(self: ptr IXMLDOMCharacterData, offset: LONG, data: BSTR): HRESULT {.
+      stdcall
+    .}
+    deleteData*: proc(
+      self: ptr IXMLDOMCharacterData, offset: LONG, count: LONG
+    ): HRESULT {.stdcall.}
+    replaceData*: proc(
+      self: ptr IXMLDOMCharacterData, offset: LONG, count: LONG, data: BSTR
+    ): HRESULT {.stdcall.}
+
   IXMLDOMText* {.pure.} = object
     lpVtbl*: ptr IXMLDOMTextVtbl
+
   IXMLDOMTextVtbl* {.pure, inheritable.} = object of IXMLDOMCharacterDataVtbl
-    splitText*: proc(self: ptr IXMLDOMText, offset: LONG, rightHandTextNode: ptr ptr IXMLDOMText): HRESULT {.stdcall.}
+    splitText*: proc(
+      self: ptr IXMLDOMText, offset: LONG, rightHandTextNode: ptr ptr IXMLDOMText
+    ): HRESULT {.stdcall.}
+
   IXMLDOMComment* {.pure.} = object
     lpVtbl*: ptr IXMLDOMCommentVtbl
+
   IXMLDOMCommentVtbl* {.pure, inheritable.} = object of IXMLDOMCharacterDataVtbl
   IXMLDOMCDATASection* {.pure.} = object
     lpVtbl*: ptr IXMLDOMCDATASectionVtbl
+
   IXMLDOMCDATASectionVtbl* {.pure, inheritable.} = object of IXMLDOMTextVtbl
   IXMLDOMProcessingInstruction* {.pure.} = object
     lpVtbl*: ptr IXMLDOMProcessingInstructionVtbl
+
   IXMLDOMProcessingInstructionVtbl* {.pure, inheritable.} = object of IXMLDOMNodeVtbl
-    get_target*: proc(self: ptr IXMLDOMProcessingInstruction, name: ptr BSTR): HRESULT {.stdcall.}
-    get_data*: proc(self: ptr IXMLDOMProcessingInstruction, value: ptr BSTR): HRESULT {.stdcall.}
-    put_data*: proc(self: ptr IXMLDOMProcessingInstruction, value: BSTR): HRESULT {.stdcall.}
+    get_target*:
+      proc(self: ptr IXMLDOMProcessingInstruction, name: ptr BSTR): HRESULT {.stdcall.}
+    get_data*:
+      proc(self: ptr IXMLDOMProcessingInstruction, value: ptr BSTR): HRESULT {.stdcall.}
+    put_data*:
+      proc(self: ptr IXMLDOMProcessingInstruction, value: BSTR): HRESULT {.stdcall.}
+
   IXMLDOMEntityReference* {.pure.} = object
     lpVtbl*: ptr IXMLDOMEntityReferenceVtbl
+
   IXMLDOMEntityReferenceVtbl* {.pure, inheritable.} = object of IXMLDOMNodeVtbl
   IXMLDOMParseError* {.pure.} = object
     lpVtbl*: ptr IXMLDOMParseErrorVtbl
+
   IXMLDOMParseErrorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_errorCode*: proc(self: ptr IXMLDOMParseError, errorCode: ptr LONG): HRESULT {.stdcall.}
-    get_url*: proc(self: ptr IXMLDOMParseError, urlString: ptr BSTR): HRESULT {.stdcall.}
-    get_reason*: proc(self: ptr IXMLDOMParseError, reasonString: ptr BSTR): HRESULT {.stdcall.}
-    get_srcText*: proc(self: ptr IXMLDOMParseError, sourceString: ptr BSTR): HRESULT {.stdcall.}
-    get_line*: proc(self: ptr IXMLDOMParseError, lineNumber: ptr LONG): HRESULT {.stdcall.}
-    get_linepos*: proc(self: ptr IXMLDOMParseError, linePosition: ptr LONG): HRESULT {.stdcall.}
-    get_filepos*: proc(self: ptr IXMLDOMParseError, filePosition: ptr LONG): HRESULT {.stdcall.}
+    get_errorCode*:
+      proc(self: ptr IXMLDOMParseError, errorCode: ptr LONG): HRESULT {.stdcall.}
+    get_url*:
+      proc(self: ptr IXMLDOMParseError, urlString: ptr BSTR): HRESULT {.stdcall.}
+    get_reason*:
+      proc(self: ptr IXMLDOMParseError, reasonString: ptr BSTR): HRESULT {.stdcall.}
+    get_srcText*:
+      proc(self: ptr IXMLDOMParseError, sourceString: ptr BSTR): HRESULT {.stdcall.}
+    get_line*:
+      proc(self: ptr IXMLDOMParseError, lineNumber: ptr LONG): HRESULT {.stdcall.}
+    get_linepos*:
+      proc(self: ptr IXMLDOMParseError, linePosition: ptr LONG): HRESULT {.stdcall.}
+    get_filepos*:
+      proc(self: ptr IXMLDOMParseError, filePosition: ptr LONG): HRESULT {.stdcall.}
+
   IXMLDOMDocument* {.pure.} = object
     lpVtbl*: ptr IXMLDOMDocumentVtbl
+
   IXMLDOMDocumentVtbl* {.pure, inheritable.} = object of IXMLDOMNodeVtbl
-    get_doctype*: proc(self: ptr IXMLDOMDocument, documentType: ptr ptr IXMLDOMDocumentType): HRESULT {.stdcall.}
-    get_implementation*: proc(self: ptr IXMLDOMDocument, impl: ptr ptr IXMLDOMImplementation): HRESULT {.stdcall.}
-    get_documentElement*: proc(self: ptr IXMLDOMDocument, DOMElement: ptr ptr IXMLDOMElement): HRESULT {.stdcall.}
-    putref_documentElement*: proc(self: ptr IXMLDOMDocument, DOMElement: ptr IXMLDOMElement): HRESULT {.stdcall.}
-    createElement*: proc(self: ptr IXMLDOMDocument, tagName: BSTR, element: ptr ptr IXMLDOMElement): HRESULT {.stdcall.}
-    createDocumentFragment*: proc(self: ptr IXMLDOMDocument, docFrag: ptr ptr IXMLDOMDocumentFragment): HRESULT {.stdcall.}
-    createTextNode*: proc(self: ptr IXMLDOMDocument, data: BSTR, text: ptr ptr IXMLDOMText): HRESULT {.stdcall.}
-    createComment*: proc(self: ptr IXMLDOMDocument, data: BSTR, comment: ptr ptr IXMLDOMComment): HRESULT {.stdcall.}
-    createCDATASection*: proc(self: ptr IXMLDOMDocument, data: BSTR, cdata: ptr ptr IXMLDOMCDATASection): HRESULT {.stdcall.}
-    createProcessingInstruction*: proc(self: ptr IXMLDOMDocument, target: BSTR, data: BSTR, pi: ptr ptr IXMLDOMProcessingInstruction): HRESULT {.stdcall.}
-    createAttribute*: proc(self: ptr IXMLDOMDocument, name: BSTR, attribute: ptr ptr IXMLDOMAttribute): HRESULT {.stdcall.}
-    createEntityReference*: proc(self: ptr IXMLDOMDocument, name: BSTR, entityRef: ptr ptr IXMLDOMEntityReference): HRESULT {.stdcall.}
-    getElementsByTagName*: proc(self: ptr IXMLDOMDocument, tagName: BSTR, resultList: ptr ptr IXMLDOMNodeList): HRESULT {.stdcall.}
-    createNode*: proc(self: ptr IXMLDOMDocument, Type: VARIANT, name: BSTR, namespaceURI: BSTR, node: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    nodeFromID*: proc(self: ptr IXMLDOMDocument, idString: BSTR, node: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    load*: proc(self: ptr IXMLDOMDocument, xmlSource: VARIANT, isSuccessful: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_readyState*: proc(self: ptr IXMLDOMDocument, value: ptr LONG): HRESULT {.stdcall.}
-    get_parseError*: proc(self: ptr IXMLDOMDocument, errorObj: ptr ptr IXMLDOMParseError): HRESULT {.stdcall.}
+    get_doctype*: proc(
+      self: ptr IXMLDOMDocument, documentType: ptr ptr IXMLDOMDocumentType
+    ): HRESULT {.stdcall.}
+    get_implementation*: proc(
+      self: ptr IXMLDOMDocument, impl: ptr ptr IXMLDOMImplementation
+    ): HRESULT {.stdcall.}
+    get_documentElement*: proc(
+      self: ptr IXMLDOMDocument, DOMElement: ptr ptr IXMLDOMElement
+    ): HRESULT {.stdcall.}
+    putref_documentElement*: proc(
+      self: ptr IXMLDOMDocument, DOMElement: ptr IXMLDOMElement
+    ): HRESULT {.stdcall.}
+    createElement*: proc(
+      self: ptr IXMLDOMDocument, tagName: BSTR, element: ptr ptr IXMLDOMElement
+    ): HRESULT {.stdcall.}
+    createDocumentFragment*: proc(
+      self: ptr IXMLDOMDocument, docFrag: ptr ptr IXMLDOMDocumentFragment
+    ): HRESULT {.stdcall.}
+    createTextNode*: proc(
+      self: ptr IXMLDOMDocument, data: BSTR, text: ptr ptr IXMLDOMText
+    ): HRESULT {.stdcall.}
+    createComment*: proc(
+      self: ptr IXMLDOMDocument, data: BSTR, comment: ptr ptr IXMLDOMComment
+    ): HRESULT {.stdcall.}
+    createCDATASection*: proc(
+      self: ptr IXMLDOMDocument, data: BSTR, cdata: ptr ptr IXMLDOMCDATASection
+    ): HRESULT {.stdcall.}
+    createProcessingInstruction*: proc(
+      self: ptr IXMLDOMDocument,
+      target: BSTR,
+      data: BSTR,
+      pi: ptr ptr IXMLDOMProcessingInstruction,
+    ): HRESULT {.stdcall.}
+    createAttribute*: proc(
+      self: ptr IXMLDOMDocument, name: BSTR, attribute: ptr ptr IXMLDOMAttribute
+    ): HRESULT {.stdcall.}
+    createEntityReference*: proc(
+      self: ptr IXMLDOMDocument, name: BSTR, entityRef: ptr ptr IXMLDOMEntityReference
+    ): HRESULT {.stdcall.}
+    getElementsByTagName*: proc(
+      self: ptr IXMLDOMDocument, tagName: BSTR, resultList: ptr ptr IXMLDOMNodeList
+    ): HRESULT {.stdcall.}
+    createNode*: proc(
+      self: ptr IXMLDOMDocument,
+      Type: VARIANT,
+      name: BSTR,
+      namespaceURI: BSTR,
+      node: ptr ptr IXMLDOMNode,
+    ): HRESULT {.stdcall.}
+    nodeFromID*: proc(
+      self: ptr IXMLDOMDocument, idString: BSTR, node: ptr ptr IXMLDOMNode
+    ): HRESULT {.stdcall.}
+    load*: proc(
+      self: ptr IXMLDOMDocument, xmlSource: VARIANT, isSuccessful: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    get_readyState*:
+      proc(self: ptr IXMLDOMDocument, value: ptr LONG): HRESULT {.stdcall.}
+    get_parseError*: proc(
+      self: ptr IXMLDOMDocument, errorObj: ptr ptr IXMLDOMParseError
+    ): HRESULT {.stdcall.}
     get_url*: proc(self: ptr IXMLDOMDocument, urlString: ptr BSTR): HRESULT {.stdcall.}
-    get_async*: proc(self: ptr IXMLDOMDocument, isAsync: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_async*: proc(self: ptr IXMLDOMDocument, isAsync: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_async*:
+      proc(self: ptr IXMLDOMDocument, isAsync: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_async*:
+      proc(self: ptr IXMLDOMDocument, isAsync: VARIANT_BOOL): HRESULT {.stdcall.}
     abort*: proc(self: ptr IXMLDOMDocument): HRESULT {.stdcall.}
-    loadXML*: proc(self: ptr IXMLDOMDocument, bstrXML: BSTR, isSuccessful: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    loadXML*: proc(
+      self: ptr IXMLDOMDocument, bstrXML: BSTR, isSuccessful: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     save*: proc(self: ptr IXMLDOMDocument, destination: VARIANT): HRESULT {.stdcall.}
-    get_validateOnParse*: proc(self: ptr IXMLDOMDocument, isValidating: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_validateOnParse*: proc(self: ptr IXMLDOMDocument, isValidating: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_resolveExternals*: proc(self: ptr IXMLDOMDocument, isResolving: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_resolveExternals*: proc(self: ptr IXMLDOMDocument, isResolving: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_preserveWhiteSpace*: proc(self: ptr IXMLDOMDocument, isPreserving: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_preserveWhiteSpace*: proc(self: ptr IXMLDOMDocument, isPreserving: VARIANT_BOOL): HRESULT {.stdcall.}
-    put_onreadystatechange*: proc(self: ptr IXMLDOMDocument, readystatechangeSink: VARIANT): HRESULT {.stdcall.}
-    put_ondataavailable*: proc(self: ptr IXMLDOMDocument, ondataavailableSink: VARIANT): HRESULT {.stdcall.}
-    put_ontransformnode*: proc(self: ptr IXMLDOMDocument, ontransformnodeSink: VARIANT): HRESULT {.stdcall.}
+    get_validateOnParse*: proc(
+      self: ptr IXMLDOMDocument, isValidating: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    put_validateOnParse*:
+      proc(self: ptr IXMLDOMDocument, isValidating: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_resolveExternals*: proc(
+      self: ptr IXMLDOMDocument, isResolving: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    put_resolveExternals*:
+      proc(self: ptr IXMLDOMDocument, isResolving: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_preserveWhiteSpace*: proc(
+      self: ptr IXMLDOMDocument, isPreserving: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    put_preserveWhiteSpace*:
+      proc(self: ptr IXMLDOMDocument, isPreserving: VARIANT_BOOL): HRESULT {.stdcall.}
+    put_onreadystatechange*: proc(
+      self: ptr IXMLDOMDocument, readystatechangeSink: VARIANT
+    ): HRESULT {.stdcall.}
+    put_ondataavailable*:
+      proc(self: ptr IXMLDOMDocument, ondataavailableSink: VARIANT): HRESULT {.stdcall.}
+    put_ontransformnode*:
+      proc(self: ptr IXMLDOMDocument, ontransformnodeSink: VARIANT): HRESULT {.stdcall.}
+
   IXMLDOMNamedNodeMap* {.pure.} = object
     lpVtbl*: ptr IXMLDOMNamedNodeMapVtbl
+
   IXMLDOMNamedNodeMapVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    getNamedItem*: proc(self: ptr IXMLDOMNamedNodeMap, name: BSTR, namedItem: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    setNamedItem*: proc(self: ptr IXMLDOMNamedNodeMap, newItem: ptr IXMLDOMNode, nameItem: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    removeNamedItem*: proc(self: ptr IXMLDOMNamedNodeMap, name: BSTR, namedItem: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    get_item*: proc(self: ptr IXMLDOMNamedNodeMap, index: LONG, listItem: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    get_length*: proc(self: ptr IXMLDOMNamedNodeMap, listLength: ptr LONG): HRESULT {.stdcall.}
-    getQualifiedItem*: proc(self: ptr IXMLDOMNamedNodeMap, baseName: BSTR, namespaceURI: BSTR, qualifiedItem: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    removeQualifiedItem*: proc(self: ptr IXMLDOMNamedNodeMap, baseName: BSTR, namespaceURI: BSTR, qualifiedItem: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
-    nextNode*: proc(self: ptr IXMLDOMNamedNodeMap, nextItem: ptr ptr IXMLDOMNode): HRESULT {.stdcall.}
+    getNamedItem*: proc(
+      self: ptr IXMLDOMNamedNodeMap, name: BSTR, namedItem: ptr ptr IXMLDOMNode
+    ): HRESULT {.stdcall.}
+    setNamedItem*: proc(
+      self: ptr IXMLDOMNamedNodeMap,
+      newItem: ptr IXMLDOMNode,
+      nameItem: ptr ptr IXMLDOMNode,
+    ): HRESULT {.stdcall.}
+    removeNamedItem*: proc(
+      self: ptr IXMLDOMNamedNodeMap, name: BSTR, namedItem: ptr ptr IXMLDOMNode
+    ): HRESULT {.stdcall.}
+    get_item*: proc(
+      self: ptr IXMLDOMNamedNodeMap, index: LONG, listItem: ptr ptr IXMLDOMNode
+    ): HRESULT {.stdcall.}
+    get_length*:
+      proc(self: ptr IXMLDOMNamedNodeMap, listLength: ptr LONG): HRESULT {.stdcall.}
+    getQualifiedItem*: proc(
+      self: ptr IXMLDOMNamedNodeMap,
+      baseName: BSTR,
+      namespaceURI: BSTR,
+      qualifiedItem: ptr ptr IXMLDOMNode,
+    ): HRESULT {.stdcall.}
+    removeQualifiedItem*: proc(
+      self: ptr IXMLDOMNamedNodeMap,
+      baseName: BSTR,
+      namespaceURI: BSTR,
+      qualifiedItem: ptr ptr IXMLDOMNode,
+    ): HRESULT {.stdcall.}
+    nextNode*: proc(
+      self: ptr IXMLDOMNamedNodeMap, nextItem: ptr ptr IXMLDOMNode
+    ): HRESULT {.stdcall.}
     reset*: proc(self: ptr IXMLDOMNamedNodeMap): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IXMLDOMNamedNodeMap, ppUnk: ptr ptr IUnknown): HRESULT {.stdcall.}
+    get_newEnum*:
+      proc(self: ptr IXMLDOMNamedNodeMap, ppUnk: ptr ptr IUnknown): HRESULT {.stdcall.}
+
   IXMLDOMNotation* {.pure.} = object
     lpVtbl*: ptr IXMLDOMNotationVtbl
+
   IXMLDOMNotationVtbl* {.pure, inheritable.} = object of IXMLDOMNodeVtbl
-    get_publicId*: proc(self: ptr IXMLDOMNotation, publicID: ptr VARIANT): HRESULT {.stdcall.}
-    get_systemId*: proc(self: ptr IXMLDOMNotation, systemID: ptr VARIANT): HRESULT {.stdcall.}
+    get_publicId*:
+      proc(self: ptr IXMLDOMNotation, publicID: ptr VARIANT): HRESULT {.stdcall.}
+    get_systemId*:
+      proc(self: ptr IXMLDOMNotation, systemID: ptr VARIANT): HRESULT {.stdcall.}
+
   IXMLDOMEntity* {.pure.} = object
     lpVtbl*: ptr IXMLDOMEntityVtbl
+
   IXMLDOMEntityVtbl* {.pure, inheritable.} = object of IXMLDOMNodeVtbl
-    get_publicId*: proc(self: ptr IXMLDOMEntity, publicID: ptr VARIANT): HRESULT {.stdcall.}
-    get_systemId*: proc(self: ptr IXMLDOMEntity, systemID: ptr VARIANT): HRESULT {.stdcall.}
-    get_notationName*: proc(self: ptr IXMLDOMEntity, name: ptr BSTR): HRESULT {.stdcall.}
+    get_publicId*:
+      proc(self: ptr IXMLDOMEntity, publicID: ptr VARIANT): HRESULT {.stdcall.}
+    get_systemId*:
+      proc(self: ptr IXMLDOMEntity, systemID: ptr VARIANT): HRESULT {.stdcall.}
+    get_notationName*:
+      proc(self: ptr IXMLDOMEntity, name: ptr BSTR): HRESULT {.stdcall.}
+
   IXTLRuntime* {.pure.} = object
     lpVtbl*: ptr IXTLRuntimeVtbl
+
   IXTLRuntimeVtbl* {.pure, inheritable.} = object of IXMLDOMNodeVtbl
-    uniqueID*: proc(self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pID: ptr LONG): HRESULT {.stdcall.}
-    depth*: proc(self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pDepth: ptr LONG): HRESULT {.stdcall.}
-    childNumber*: proc(self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pNumber: ptr LONG): HRESULT {.stdcall.}
-    ancestorChildNumber*: proc(self: ptr IXTLRuntime, bstrNodeName: BSTR, pNode: ptr IXMLDOMNode, pNumber: ptr LONG): HRESULT {.stdcall.}
-    absoluteChildNumber*: proc(self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pNumber: ptr LONG): HRESULT {.stdcall.}
-    formatIndex*: proc(self: ptr IXTLRuntime, lIndex: LONG, bstrFormat: BSTR, pbstrFormattedString: ptr BSTR): HRESULT {.stdcall.}
-    formatNumber*: proc(self: ptr IXTLRuntime, dblNumber: float64, bstrFormat: BSTR, pbstrFormattedString: ptr BSTR): HRESULT {.stdcall.}
-    formatDate*: proc(self: ptr IXTLRuntime, varDate: VARIANT, bstrFormat: BSTR, varDestLocale: VARIANT, pbstrFormattedString: ptr BSTR): HRESULT {.stdcall.}
-    formatTime*: proc(self: ptr IXTLRuntime, varTime: VARIANT, bstrFormat: BSTR, varDestLocale: VARIANT, pbstrFormattedString: ptr BSTR): HRESULT {.stdcall.}
+    uniqueID*: proc(
+      self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pID: ptr LONG
+    ): HRESULT {.stdcall.}
+    depth*: proc(
+      self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pDepth: ptr LONG
+    ): HRESULT {.stdcall.}
+    childNumber*: proc(
+      self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pNumber: ptr LONG
+    ): HRESULT {.stdcall.}
+    ancestorChildNumber*: proc(
+      self: ptr IXTLRuntime,
+      bstrNodeName: BSTR,
+      pNode: ptr IXMLDOMNode,
+      pNumber: ptr LONG,
+    ): HRESULT {.stdcall.}
+    absoluteChildNumber*: proc(
+      self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pNumber: ptr LONG
+    ): HRESULT {.stdcall.}
+    formatIndex*: proc(
+      self: ptr IXTLRuntime,
+      lIndex: LONG,
+      bstrFormat: BSTR,
+      pbstrFormattedString: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    formatNumber*: proc(
+      self: ptr IXTLRuntime,
+      dblNumber: float64,
+      bstrFormat: BSTR,
+      pbstrFormattedString: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    formatDate*: proc(
+      self: ptr IXTLRuntime,
+      varDate: VARIANT,
+      bstrFormat: BSTR,
+      varDestLocale: VARIANT,
+      pbstrFormattedString: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    formatTime*: proc(
+      self: ptr IXTLRuntime,
+      varTime: VARIANT,
+      bstrFormat: BSTR,
+      varDestLocale: VARIANT,
+      pbstrFormattedString: ptr BSTR,
+    ): HRESULT {.stdcall.}
+
   XMLDOMDocumentEvents* {.pure.} = object
     lpVtbl*: ptr XMLDOMDocumentEventsVtbl
+
   XMLDOMDocumentEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IXMLHttpRequest* {.pure.} = object
     lpVtbl*: ptr IXMLHttpRequestVtbl
+
   IXMLHttpRequestVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    open*: proc(self: ptr IXMLHttpRequest, bstrMethod: BSTR, bstrUrl: BSTR, varAsync: VARIANT, bstrUser: VARIANT, bstrPassword: VARIANT): HRESULT {.stdcall.}
-    setRequestHeader*: proc(self: ptr IXMLHttpRequest, bstrHeader: BSTR, bstrValue: BSTR): HRESULT {.stdcall.}
-    getResponseHeader*: proc(self: ptr IXMLHttpRequest, bstrHeader: BSTR, pbstrValue: ptr BSTR): HRESULT {.stdcall.}
-    getAllResponseHeaders*: proc(self: ptr IXMLHttpRequest, pbstrHeaders: ptr BSTR): HRESULT {.stdcall.}
+    open*: proc(
+      self: ptr IXMLHttpRequest,
+      bstrMethod: BSTR,
+      bstrUrl: BSTR,
+      varAsync: VARIANT,
+      bstrUser: VARIANT,
+      bstrPassword: VARIANT,
+    ): HRESULT {.stdcall.}
+    setRequestHeader*: proc(
+      self: ptr IXMLHttpRequest, bstrHeader: BSTR, bstrValue: BSTR
+    ): HRESULT {.stdcall.}
+    getResponseHeader*: proc(
+      self: ptr IXMLHttpRequest, bstrHeader: BSTR, pbstrValue: ptr BSTR
+    ): HRESULT {.stdcall.}
+    getAllResponseHeaders*:
+      proc(self: ptr IXMLHttpRequest, pbstrHeaders: ptr BSTR): HRESULT {.stdcall.}
     send*: proc(self: ptr IXMLHttpRequest, varBody: VARIANT): HRESULT {.stdcall.}
     abort*: proc(self: ptr IXMLHttpRequest): HRESULT {.stdcall.}
-    get_status*: proc(self: ptr IXMLHttpRequest, plStatus: ptr LONG): HRESULT {.stdcall.}
-    get_statusText*: proc(self: ptr IXMLHttpRequest, pbstrStatus: ptr BSTR): HRESULT {.stdcall.}
-    get_responseXML*: proc(self: ptr IXMLHttpRequest, ppBody: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_responseText*: proc(self: ptr IXMLHttpRequest, pbstrBody: ptr BSTR): HRESULT {.stdcall.}
-    get_responseBody*: proc(self: ptr IXMLHttpRequest, pvarBody: ptr VARIANT): HRESULT {.stdcall.}
-    get_responseStream*: proc(self: ptr IXMLHttpRequest, pvarBody: ptr VARIANT): HRESULT {.stdcall.}
-    get_readyState*: proc(self: ptr IXMLHttpRequest, plState: ptr LONG): HRESULT {.stdcall.}
-    put_onreadystatechange*: proc(self: ptr IXMLHttpRequest, pReadyStateSink: ptr IDispatch): HRESULT {.stdcall.}
+    get_status*:
+      proc(self: ptr IXMLHttpRequest, plStatus: ptr LONG): HRESULT {.stdcall.}
+    get_statusText*:
+      proc(self: ptr IXMLHttpRequest, pbstrStatus: ptr BSTR): HRESULT {.stdcall.}
+    get_responseXML*:
+      proc(self: ptr IXMLHttpRequest, ppBody: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_responseText*:
+      proc(self: ptr IXMLHttpRequest, pbstrBody: ptr BSTR): HRESULT {.stdcall.}
+    get_responseBody*:
+      proc(self: ptr IXMLHttpRequest, pvarBody: ptr VARIANT): HRESULT {.stdcall.}
+    get_responseStream*:
+      proc(self: ptr IXMLHttpRequest, pvarBody: ptr VARIANT): HRESULT {.stdcall.}
+    get_readyState*:
+      proc(self: ptr IXMLHttpRequest, plState: ptr LONG): HRESULT {.stdcall.}
+    put_onreadystatechange*: proc(
+      self: ptr IXMLHttpRequest, pReadyStateSink: ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IXMLDSOControl* {.pure.} = object
     lpVtbl*: ptr IXMLDSOControlVtbl
+
   IXMLDSOControlVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_XMLDocument*: proc(self: ptr IXMLDSOControl, ppDoc: ptr ptr IXMLDOMDocument): HRESULT {.stdcall.}
-    put_XMLDocument*: proc(self: ptr IXMLDSOControl, ppDoc: ptr IXMLDOMDocument): HRESULT {.stdcall.}
-    get_JavaDSOCompatible*: proc(self: ptr IXMLDSOControl, fJavaDSOCompatible: ptr WINBOOL): HRESULT {.stdcall.}
-    put_JavaDSOCompatible*: proc(self: ptr IXMLDSOControl, fJavaDSOCompatible: WINBOOL): HRESULT {.stdcall.}
-    get_readyState*: proc(self: ptr IXMLDSOControl, state: ptr LONG): HRESULT {.stdcall.}
+    get_XMLDocument*: proc(
+      self: ptr IXMLDSOControl, ppDoc: ptr ptr IXMLDOMDocument
+    ): HRESULT {.stdcall.}
+    put_XMLDocument*:
+      proc(self: ptr IXMLDSOControl, ppDoc: ptr IXMLDOMDocument): HRESULT {.stdcall.}
+    get_JavaDSOCompatible*: proc(
+      self: ptr IXMLDSOControl, fJavaDSOCompatible: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    put_JavaDSOCompatible*:
+      proc(self: ptr IXMLDSOControl, fJavaDSOCompatible: WINBOOL): HRESULT {.stdcall.}
+    get_readyState*:
+      proc(self: ptr IXMLDSOControl, state: ptr LONG): HRESULT {.stdcall.}
+
   IXMLElementCollection* {.pure.} = object
     lpVtbl*: ptr IXMLElementCollectionVtbl
+
   IXMLElementCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     put_length*: proc(self: ptr IXMLElementCollection, v: LONG): HRESULT {.stdcall.}
     get_length*: proc(self: ptr IXMLElementCollection, p: ptr LONG): HRESULT {.stdcall.}
-    get_newEnum*: proc(self: ptr IXMLElementCollection, ppUnk: ptr ptr IUnknown): HRESULT {.stdcall.}
-    item*: proc(self: ptr IXMLElementCollection, var1: VARIANT, var2: VARIANT, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_newEnum*: proc(
+      self: ptr IXMLElementCollection, ppUnk: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
+    item*: proc(
+      self: ptr IXMLElementCollection,
+      var1: VARIANT,
+      var2: VARIANT,
+      ppDisp: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
+
   IXMLElement* {.pure.} = object
     lpVtbl*: ptr IXMLElementVtbl
+
   IXMLElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_tagName*: proc(self: ptr IXMLElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_tagName*: proc(self: ptr IXMLElement, p: BSTR): HRESULT {.stdcall.}
-    get_parent*: proc(self: ptr IXMLElement, ppParent: ptr ptr IXMLElement): HRESULT {.stdcall.}
-    setAttribute*: proc(self: ptr IXMLElement, strPropertyName: BSTR, PropertyValue: VARIANT): HRESULT {.stdcall.}
-    getAttribute*: proc(self: ptr IXMLElement, strPropertyName: BSTR, PropertyValue: ptr VARIANT): HRESULT {.stdcall.}
-    removeAttribute*: proc(self: ptr IXMLElement, strPropertyName: BSTR): HRESULT {.stdcall.}
-    get_children*: proc(self: ptr IXMLElement, pp: ptr ptr IXMLElementCollection): HRESULT {.stdcall.}
+    get_parent*:
+      proc(self: ptr IXMLElement, ppParent: ptr ptr IXMLElement): HRESULT {.stdcall.}
+    setAttribute*: proc(
+      self: ptr IXMLElement, strPropertyName: BSTR, PropertyValue: VARIANT
+    ): HRESULT {.stdcall.}
+    getAttribute*: proc(
+      self: ptr IXMLElement, strPropertyName: BSTR, PropertyValue: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    removeAttribute*:
+      proc(self: ptr IXMLElement, strPropertyName: BSTR): HRESULT {.stdcall.}
+    get_children*: proc(
+      self: ptr IXMLElement, pp: ptr ptr IXMLElementCollection
+    ): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IXMLElement, plType: ptr LONG): HRESULT {.stdcall.}
     get_text*: proc(self: ptr IXMLElement, p: ptr BSTR): HRESULT {.stdcall.}
     put_text*: proc(self: ptr IXMLElement, p: BSTR): HRESULT {.stdcall.}
-    addChild*: proc(self: ptr IXMLElement, pChildElem: ptr IXMLElement, lIndex: LONG, lReserved: LONG): HRESULT {.stdcall.}
-    removeChild*: proc(self: ptr IXMLElement, pChildElem: ptr IXMLElement): HRESULT {.stdcall.}
+    addChild*: proc(
+      self: ptr IXMLElement, pChildElem: ptr IXMLElement, lIndex: LONG, lReserved: LONG
+    ): HRESULT {.stdcall.}
+    removeChild*:
+      proc(self: ptr IXMLElement, pChildElem: ptr IXMLElement): HRESULT {.stdcall.}
+
   IXMLDocument* {.pure.} = object
     lpVtbl*: ptr IXMLDocumentVtbl
+
   IXMLDocumentVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_root*: proc(self: ptr IXMLDocument, p: ptr ptr IXMLElement): HRESULT {.stdcall.}
     get_fileSize*: proc(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.stdcall.}
-    get_fileModifiedDate*: proc(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.stdcall.}
+    get_fileModifiedDate*:
+      proc(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.stdcall.}
     get_fileUpdatedDate*: proc(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.stdcall.}
     get_URL*: proc(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.stdcall.}
     put_URL*: proc(self: ptr IXMLDocument, p: BSTR): HRESULT {.stdcall.}
@@ -6133,30 +9212,55 @@
     get_version*: proc(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.stdcall.}
     get_doctype*: proc(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.stdcall.}
     get_dtdURL*: proc(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.stdcall.}
-    createElement*: proc(self: ptr IXMLDocument, vType: VARIANT, var1: VARIANT, ppElem: ptr ptr IXMLElement): HRESULT {.stdcall.}
+    createElement*: proc(
+      self: ptr IXMLDocument, vType: VARIANT, var1: VARIANT, ppElem: ptr ptr IXMLElement
+    ): HRESULT {.stdcall.}
+
   IXMLElement2* {.pure.} = object
     lpVtbl*: ptr IXMLElement2Vtbl
+
   IXMLElement2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_tagName*: proc(self: ptr IXMLElement2, p: ptr BSTR): HRESULT {.stdcall.}
     put_tagName*: proc(self: ptr IXMLElement2, p: BSTR): HRESULT {.stdcall.}
-    get_parent*: proc(self: ptr IXMLElement2, ppParent: ptr ptr IXMLElement2): HRESULT {.stdcall.}
-    setAttribute*: proc(self: ptr IXMLElement2, strPropertyName: BSTR, PropertyValue: VARIANT): HRESULT {.stdcall.}
-    getAttribute*: proc(self: ptr IXMLElement2, strPropertyName: BSTR, PropertyValue: ptr VARIANT): HRESULT {.stdcall.}
-    removeAttribute*: proc(self: ptr IXMLElement2, strPropertyName: BSTR): HRESULT {.stdcall.}
-    get_children*: proc(self: ptr IXMLElement2, pp: ptr ptr IXMLElementCollection): HRESULT {.stdcall.}
+    get_parent*:
+      proc(self: ptr IXMLElement2, ppParent: ptr ptr IXMLElement2): HRESULT {.stdcall.}
+    setAttribute*: proc(
+      self: ptr IXMLElement2, strPropertyName: BSTR, PropertyValue: VARIANT
+    ): HRESULT {.stdcall.}
+    getAttribute*: proc(
+      self: ptr IXMLElement2, strPropertyName: BSTR, PropertyValue: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    removeAttribute*:
+      proc(self: ptr IXMLElement2, strPropertyName: BSTR): HRESULT {.stdcall.}
+    get_children*: proc(
+      self: ptr IXMLElement2, pp: ptr ptr IXMLElementCollection
+    ): HRESULT {.stdcall.}
     get_type*: proc(self: ptr IXMLElement2, plType: ptr LONG): HRESULT {.stdcall.}
     get_text*: proc(self: ptr IXMLElement2, p: ptr BSTR): HRESULT {.stdcall.}
     put_text*: proc(self: ptr IXMLElement2, p: BSTR): HRESULT {.stdcall.}
-    addChild*: proc(self: ptr IXMLElement2, pChildElem: ptr IXMLElement2, lIndex: LONG, lReserved: LONG): HRESULT {.stdcall.}
-    removeChild*: proc(self: ptr IXMLElement2, pChildElem: ptr IXMLElement2): HRESULT {.stdcall.}
-    get_attributes*: proc(self: ptr IXMLElement2, pp: ptr ptr IXMLElementCollection): HRESULT {.stdcall.}
+    addChild*: proc(
+      self: ptr IXMLElement2,
+      pChildElem: ptr IXMLElement2,
+      lIndex: LONG,
+      lReserved: LONG,
+    ): HRESULT {.stdcall.}
+    removeChild*:
+      proc(self: ptr IXMLElement2, pChildElem: ptr IXMLElement2): HRESULT {.stdcall.}
+    get_attributes*: proc(
+      self: ptr IXMLElement2, pp: ptr ptr IXMLElementCollection
+    ): HRESULT {.stdcall.}
+
   IXMLDocument2* {.pure.} = object
     lpVtbl*: ptr IXMLDocument2Vtbl
+
   IXMLDocument2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_root*: proc(self: ptr IXMLDocument2, p: ptr ptr IXMLElement2): HRESULT {.stdcall.}
+    get_root*:
+      proc(self: ptr IXMLDocument2, p: ptr ptr IXMLElement2): HRESULT {.stdcall.}
     get_fileSize*: proc(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_fileModifiedDate*: proc(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
-    get_fileUpdatedDate*: proc(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_fileModifiedDate*:
+      proc(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
+    get_fileUpdatedDate*:
+      proc(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
     get_URL*: proc(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
     put_URL*: proc(self: ptr IXMLDocument2, p: BSTR): HRESULT {.stdcall.}
     get_mimeType*: proc(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
@@ -6166,145 +9270,428 @@
     get_version*: proc(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
     get_doctype*: proc(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
     get_dtdURL*: proc(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
-    createElement*: proc(self: ptr IXMLDocument2, vType: VARIANT, var1: VARIANT, ppElem: ptr ptr IXMLElement2): HRESULT {.stdcall.}
+    createElement*: proc(
+      self: ptr IXMLDocument2,
+      vType: VARIANT,
+      var1: VARIANT,
+      ppElem: ptr ptr IXMLElement2,
+    ): HRESULT {.stdcall.}
     get_async*: proc(self: ptr IXMLDocument2, pf: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     put_async*: proc(self: ptr IXMLDocument2, f: VARIANT_BOOL): HRESULT {.stdcall.}
+
   IXMLAttribute* {.pure.} = object
     lpVtbl*: ptr IXMLAttributeVtbl
+
   IXMLAttributeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_name*: proc(self: ptr IXMLAttribute, n: ptr BSTR): HRESULT {.stdcall.}
     get_value*: proc(self: ptr IXMLAttribute, v: ptr BSTR): HRESULT {.stdcall.}
+
   IXMLError* {.pure.} = object
     lpVtbl*: ptr IXMLErrorVtbl
+
   IXMLErrorVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetErrorInfo*: proc(self: ptr IXMLError, pErrorReturn: ptr XML_ERROR): HRESULT {.stdcall.}
+    GetErrorInfo*:
+      proc(self: ptr IXMLError, pErrorReturn: ptr XML_ERROR): HRESULT {.stdcall.}
+
   IUriContainer* {.pure.} = object
     lpVtbl*: ptr IUriContainerVtbl
+
   IUriContainerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetIUri*: proc(self: ptr IUriContainer, ppIUri: ptr ptr IUri): HRESULT {.stdcall.}
+
   IUriBuilder* {.pure.} = object
     lpVtbl*: ptr IUriBuilderVtbl
+
   IUriBuilderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateUriSimple*: proc(self: ptr IUriBuilder, dwAllowEncodingPropertyMask: DWORD, dwReserved: DWORD_PTR, ppIUri: ptr ptr IUri): HRESULT {.stdcall.}
-    CreateUri*: proc(self: ptr IUriBuilder, dwCreateFlags: DWORD, dwAllowEncodingPropertyMask: DWORD, dwReserved: DWORD_PTR, ppIUri: ptr ptr IUri): HRESULT {.stdcall.}
-    CreateUriWithFlags*: proc(self: ptr IUriBuilder, dwCreateFlags: DWORD, dwUriBuilderFlags: DWORD, dwAllowEncodingPropertyMask: DWORD, dwReserved: DWORD_PTR, ppIUri: ptr ptr IUri): HRESULT {.stdcall.}
+    CreateUriSimple*: proc(
+      self: ptr IUriBuilder,
+      dwAllowEncodingPropertyMask: DWORD,
+      dwReserved: DWORD_PTR,
+      ppIUri: ptr ptr IUri,
+    ): HRESULT {.stdcall.}
+    CreateUri*: proc(
+      self: ptr IUriBuilder,
+      dwCreateFlags: DWORD,
+      dwAllowEncodingPropertyMask: DWORD,
+      dwReserved: DWORD_PTR,
+      ppIUri: ptr ptr IUri,
+    ): HRESULT {.stdcall.}
+    CreateUriWithFlags*: proc(
+      self: ptr IUriBuilder,
+      dwCreateFlags: DWORD,
+      dwUriBuilderFlags: DWORD,
+      dwAllowEncodingPropertyMask: DWORD,
+      dwReserved: DWORD_PTR,
+      ppIUri: ptr ptr IUri,
+    ): HRESULT {.stdcall.}
     GetIUri*: proc(self: ptr IUriBuilder, ppIUri: ptr ptr IUri): HRESULT {.stdcall.}
     SetIUri*: proc(self: ptr IUriBuilder, pIUri: ptr IUri): HRESULT {.stdcall.}
-    GetFragment*: proc(self: ptr IUriBuilder, pcchFragment: ptr DWORD, ppwzFragment: ptr LPCWSTR): HRESULT {.stdcall.}
-    GetHost*: proc(self: ptr IUriBuilder, pcchHost: ptr DWORD, ppwzHost: ptr LPCWSTR): HRESULT {.stdcall.}
-    GetPassword*: proc(self: ptr IUriBuilder, pcchPassword: ptr DWORD, ppwzPassword: ptr LPCWSTR): HRESULT {.stdcall.}
-    GetPath*: proc(self: ptr IUriBuilder, pcchPath: ptr DWORD, ppwzPath: ptr LPCWSTR): HRESULT {.stdcall.}
-    GetPort*: proc(self: ptr IUriBuilder, pfHasPort: ptr WINBOOL, pdwPort: ptr DWORD): HRESULT {.stdcall.}
-    GetQuery*: proc(self: ptr IUriBuilder, pcchQuery: ptr DWORD, ppwzQuery: ptr LPCWSTR): HRESULT {.stdcall.}
-    GetSchemeName*: proc(self: ptr IUriBuilder, pcchSchemeName: ptr DWORD, ppwzSchemeName: ptr LPCWSTR): HRESULT {.stdcall.}
-    GetUserName*: proc(self: ptr IUriBuilder, pcchUserName: ptr DWORD, ppwzUserName: ptr LPCWSTR): HRESULT {.stdcall.}
+    GetFragment*: proc(
+      self: ptr IUriBuilder, pcchFragment: ptr DWORD, ppwzFragment: ptr LPCWSTR
+    ): HRESULT {.stdcall.}
+    GetHost*: proc(
+      self: ptr IUriBuilder, pcchHost: ptr DWORD, ppwzHost: ptr LPCWSTR
+    ): HRESULT {.stdcall.}
+    GetPassword*: proc(
+      self: ptr IUriBuilder, pcchPassword: ptr DWORD, ppwzPassword: ptr LPCWSTR
+    ): HRESULT {.stdcall.}
+    GetPath*: proc(
+      self: ptr IUriBuilder, pcchPath: ptr DWORD, ppwzPath: ptr LPCWSTR
+    ): HRESULT {.stdcall.}
+    GetPort*: proc(
+      self: ptr IUriBuilder, pfHasPort: ptr WINBOOL, pdwPort: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetQuery*: proc(
+      self: ptr IUriBuilder, pcchQuery: ptr DWORD, ppwzQuery: ptr LPCWSTR
+    ): HRESULT {.stdcall.}
+    GetSchemeName*: proc(
+      self: ptr IUriBuilder, pcchSchemeName: ptr DWORD, ppwzSchemeName: ptr LPCWSTR
+    ): HRESULT {.stdcall.}
+    GetUserName*: proc(
+      self: ptr IUriBuilder, pcchUserName: ptr DWORD, ppwzUserName: ptr LPCWSTR
+    ): HRESULT {.stdcall.}
     SetFragment*: proc(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.stdcall.}
     SetHost*: proc(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.stdcall.}
     SetPassword*: proc(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.stdcall.}
     SetPath*: proc(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.stdcall.}
-    SetPort*: proc(self: ptr IUriBuilder, fHasPort: WINBOOL, dwNewValue: DWORD): HRESULT {.stdcall.}
+    SetPort*: proc(self: ptr IUriBuilder, fHasPort: WINBOOL, dwNewValue: DWORD): HRESULT {.
+      stdcall
+    .}
     SetQuery*: proc(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.stdcall.}
-    SetSchemeName*: proc(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.stdcall.}
+    SetSchemeName*:
+      proc(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.stdcall.}
     SetUserName*: proc(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.stdcall.}
-    RemoveProperties*: proc(self: ptr IUriBuilder, dwPropertyMask: DWORD): HRESULT {.stdcall.}
-    HasBeenModified*: proc(self: ptr IUriBuilder, pfModified: ptr WINBOOL): HRESULT {.stdcall.}
+    RemoveProperties*:
+      proc(self: ptr IUriBuilder, dwPropertyMask: DWORD): HRESULT {.stdcall.}
+    HasBeenModified*:
+      proc(self: ptr IUriBuilder, pfModified: ptr WINBOOL): HRESULT {.stdcall.}
+
   IUriBuilderFactory* {.pure.} = object
     lpVtbl*: ptr IUriBuilderFactoryVtbl
+
   IUriBuilderFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateIUriBuilder*: proc(self: ptr IUriBuilderFactory, dwFlags: DWORD, dwReserved: DWORD_PTR, ppIUriBuilder: ptr ptr IUriBuilder): HRESULT {.stdcall.}
-    CreateInitializedIUriBuilder*: proc(self: ptr IUriBuilderFactory, dwFlags: DWORD, dwReserved: DWORD_PTR, ppIUriBuilder: ptr ptr IUriBuilder): HRESULT {.stdcall.}
+    CreateIUriBuilder*: proc(
+      self: ptr IUriBuilderFactory,
+      dwFlags: DWORD,
+      dwReserved: DWORD_PTR,
+      ppIUriBuilder: ptr ptr IUriBuilder,
+    ): HRESULT {.stdcall.}
+    CreateInitializedIUriBuilder*: proc(
+      self: ptr IUriBuilderFactory,
+      dwFlags: DWORD,
+      dwReserved: DWORD_PTR,
+      ppIUriBuilder: ptr ptr IUriBuilder,
+    ): HRESULT {.stdcall.}
+
   IWinInetHttpTimeouts* {.pure.} = object
     lpVtbl*: ptr IWinInetHttpTimeoutsVtbl
+
   IWinInetHttpTimeoutsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetRequestTimeouts*: proc(self: ptr IWinInetHttpTimeouts, pdwConnectTimeout: ptr DWORD, pdwSendTimeout: ptr DWORD, pdwReceiveTimeout: ptr DWORD): HRESULT {.stdcall.}
+    GetRequestTimeouts*: proc(
+      self: ptr IWinInetHttpTimeouts,
+      pdwConnectTimeout: ptr DWORD,
+      pdwSendTimeout: ptr DWORD,
+      pdwReceiveTimeout: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   IInternetSecurityMgrSite* {.pure.} = object
     lpVtbl*: ptr IInternetSecurityMgrSiteVtbl
+
   IInternetSecurityMgrSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetWindow*: proc(self: ptr IInternetSecurityMgrSite, phwnd: ptr HWND): HRESULT {.stdcall.}
-    EnableModeless*: proc(self: ptr IInternetSecurityMgrSite, fEnable: WINBOOL): HRESULT {.stdcall.}
+    GetWindow*:
+      proc(self: ptr IInternetSecurityMgrSite, phwnd: ptr HWND): HRESULT {.stdcall.}
+    EnableModeless*:
+      proc(self: ptr IInternetSecurityMgrSite, fEnable: WINBOOL): HRESULT {.stdcall.}
+
   IInternetSecurityManager* {.pure.} = object
     lpVtbl*: ptr IInternetSecurityManagerVtbl
+
   IInternetSecurityManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetSecuritySite*: proc(self: ptr IInternetSecurityManager, pSite: ptr IInternetSecurityMgrSite): HRESULT {.stdcall.}
-    GetSecuritySite*: proc(self: ptr IInternetSecurityManager, ppSite: ptr ptr IInternetSecurityMgrSite): HRESULT {.stdcall.}
-    MapUrlToZone*: proc(self: ptr IInternetSecurityManager, pwszUrl: LPCWSTR, pdwZone: ptr DWORD, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetSecurityId*: proc(self: ptr IInternetSecurityManager, pwszUrl: LPCWSTR, pbSecurityId: ptr BYTE, pcbSecurityId: ptr DWORD, dwReserved: DWORD_PTR): HRESULT {.stdcall.}
-    ProcessUrlAction*: proc(self: ptr IInternetSecurityManager, pwszUrl: LPCWSTR, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, pContext: ptr BYTE, cbContext: DWORD, dwFlags: DWORD, dwReserved: DWORD): HRESULT {.stdcall.}
-    QueryCustomPolicy*: proc(self: ptr IInternetSecurityManager, pwszUrl: LPCWSTR, guidKey: REFGUID, ppPolicy: ptr ptr BYTE, pcbPolicy: ptr DWORD, pContext: ptr BYTE, cbContext: DWORD, dwReserved: DWORD): HRESULT {.stdcall.}
-    SetZoneMapping*: proc(self: ptr IInternetSecurityManager, dwZone: DWORD, lpszPattern: LPCWSTR, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetZoneMappings*: proc(self: ptr IInternetSecurityManager, dwZone: DWORD, ppenumString: ptr ptr IEnumString, dwFlags: DWORD): HRESULT {.stdcall.}
+    SetSecuritySite*: proc(
+      self: ptr IInternetSecurityManager, pSite: ptr IInternetSecurityMgrSite
+    ): HRESULT {.stdcall.}
+    GetSecuritySite*: proc(
+      self: ptr IInternetSecurityManager, ppSite: ptr ptr IInternetSecurityMgrSite
+    ): HRESULT {.stdcall.}
+    MapUrlToZone*: proc(
+      self: ptr IInternetSecurityManager,
+      pwszUrl: LPCWSTR,
+      pdwZone: ptr DWORD,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    GetSecurityId*: proc(
+      self: ptr IInternetSecurityManager,
+      pwszUrl: LPCWSTR,
+      pbSecurityId: ptr BYTE,
+      pcbSecurityId: ptr DWORD,
+      dwReserved: DWORD_PTR,
+    ): HRESULT {.stdcall.}
+    ProcessUrlAction*: proc(
+      self: ptr IInternetSecurityManager,
+      pwszUrl: LPCWSTR,
+      dwAction: DWORD,
+      pPolicy: ptr BYTE,
+      cbPolicy: DWORD,
+      pContext: ptr BYTE,
+      cbContext: DWORD,
+      dwFlags: DWORD,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+    QueryCustomPolicy*: proc(
+      self: ptr IInternetSecurityManager,
+      pwszUrl: LPCWSTR,
+      guidKey: REFGUID,
+      ppPolicy: ptr ptr BYTE,
+      pcbPolicy: ptr DWORD,
+      pContext: ptr BYTE,
+      cbContext: DWORD,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+    SetZoneMapping*: proc(
+      self: ptr IInternetSecurityManager,
+      dwZone: DWORD,
+      lpszPattern: LPCWSTR,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    GetZoneMappings*: proc(
+      self: ptr IInternetSecurityManager,
+      dwZone: DWORD,
+      ppenumString: ptr ptr IEnumString,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+
   IInternetSecurityManagerEx* {.pure.} = object
     lpVtbl*: ptr IInternetSecurityManagerExVtbl
+
   IInternetSecurityManagerExVtbl* {.pure, inheritable.} = object of IInternetSecurityManagerVtbl
-    ProcessUrlActionEx*: proc(self: ptr IInternetSecurityManagerEx, pwszUrl: LPCWSTR, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, pContext: ptr BYTE, cbContext: DWORD, dwFlags: DWORD, dwReserved: DWORD, pdwOutFlags: ptr DWORD): HRESULT {.stdcall.}
+    ProcessUrlActionEx*: proc(
+      self: ptr IInternetSecurityManagerEx,
+      pwszUrl: LPCWSTR,
+      dwAction: DWORD,
+      pPolicy: ptr BYTE,
+      cbPolicy: DWORD,
+      pContext: ptr BYTE,
+      cbContext: DWORD,
+      dwFlags: DWORD,
+      dwReserved: DWORD,
+      pdwOutFlags: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   IInternetSecurityManagerEx2* {.pure.} = object
     lpVtbl*: ptr IInternetSecurityManagerEx2Vtbl
+
   IInternetSecurityManagerEx2Vtbl* {.pure, inheritable.} = object of IInternetSecurityManagerExVtbl
-    MapUrlToZoneEx2*: proc(self: ptr IInternetSecurityManagerEx2, pUri: ptr IUri, pdwZone: ptr DWORD, dwFlags: DWORD, ppwszMappedUrl: ptr LPWSTR, pdwOutFlags: ptr DWORD): HRESULT {.stdcall.}
-    ProcessUrlActionEx2*: proc(self: ptr IInternetSecurityManagerEx2, pUri: ptr IUri, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, pContext: ptr BYTE, cbContext: DWORD, dwFlags: DWORD, dwReserved: DWORD_PTR, pdwOutFlags: ptr DWORD): HRESULT {.stdcall.}
-    GetSecurityIdEx2*: proc(self: ptr IInternetSecurityManagerEx2, pUri: ptr IUri, pbSecurityId: ptr BYTE, pcbSecurityId: ptr DWORD, dwReserved: DWORD_PTR): HRESULT {.stdcall.}
-    QueryCustomPolicyEx2*: proc(self: ptr IInternetSecurityManagerEx2, pUri: ptr IUri, guidKey: REFGUID, ppPolicy: ptr ptr BYTE, pcbPolicy: ptr DWORD, pContext: ptr BYTE, cbContext: DWORD, dwReserved: DWORD_PTR): HRESULT {.stdcall.}
+    MapUrlToZoneEx2*: proc(
+      self: ptr IInternetSecurityManagerEx2,
+      pUri: ptr IUri,
+      pdwZone: ptr DWORD,
+      dwFlags: DWORD,
+      ppwszMappedUrl: ptr LPWSTR,
+      pdwOutFlags: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    ProcessUrlActionEx2*: proc(
+      self: ptr IInternetSecurityManagerEx2,
+      pUri: ptr IUri,
+      dwAction: DWORD,
+      pPolicy: ptr BYTE,
+      cbPolicy: DWORD,
+      pContext: ptr BYTE,
+      cbContext: DWORD,
+      dwFlags: DWORD,
+      dwReserved: DWORD_PTR,
+      pdwOutFlags: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetSecurityIdEx2*: proc(
+      self: ptr IInternetSecurityManagerEx2,
+      pUri: ptr IUri,
+      pbSecurityId: ptr BYTE,
+      pcbSecurityId: ptr DWORD,
+      dwReserved: DWORD_PTR,
+    ): HRESULT {.stdcall.}
+    QueryCustomPolicyEx2*: proc(
+      self: ptr IInternetSecurityManagerEx2,
+      pUri: ptr IUri,
+      guidKey: REFGUID,
+      ppPolicy: ptr ptr BYTE,
+      pcbPolicy: ptr DWORD,
+      pContext: ptr BYTE,
+      cbContext: DWORD,
+      dwReserved: DWORD_PTR,
+    ): HRESULT {.stdcall.}
+
   IZoneIdentifier* {.pure.} = object
     lpVtbl*: ptr IZoneIdentifierVtbl
+
   IZoneIdentifierVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetId*: proc(self: ptr IZoneIdentifier, pdwZone: ptr DWORD): HRESULT {.stdcall.}
     SetId*: proc(self: ptr IZoneIdentifier, dwZone: DWORD): HRESULT {.stdcall.}
     Remove*: proc(self: ptr IZoneIdentifier): HRESULT {.stdcall.}
+
   IInternetHostSecurityManager* {.pure.} = object
     lpVtbl*: ptr IInternetHostSecurityManagerVtbl
+
   IInternetHostSecurityManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSecurityId*: proc(self: ptr IInternetHostSecurityManager, pbSecurityId: ptr BYTE, pcbSecurityId: ptr DWORD, dwReserved: DWORD_PTR): HRESULT {.stdcall.}
-    ProcessUrlAction*: proc(self: ptr IInternetHostSecurityManager, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, pContext: ptr BYTE, cbContext: DWORD, dwFlags: DWORD, dwReserved: DWORD): HRESULT {.stdcall.}
-    QueryCustomPolicy*: proc(self: ptr IInternetHostSecurityManager, guidKey: REFGUID, ppPolicy: ptr ptr BYTE, pcbPolicy: ptr DWORD, pContext: ptr BYTE, cbContext: DWORD, dwReserved: DWORD): HRESULT {.stdcall.}
+    GetSecurityId*: proc(
+      self: ptr IInternetHostSecurityManager,
+      pbSecurityId: ptr BYTE,
+      pcbSecurityId: ptr DWORD,
+      dwReserved: DWORD_PTR,
+    ): HRESULT {.stdcall.}
+    ProcessUrlAction*: proc(
+      self: ptr IInternetHostSecurityManager,
+      dwAction: DWORD,
+      pPolicy: ptr BYTE,
+      cbPolicy: DWORD,
+      pContext: ptr BYTE,
+      cbContext: DWORD,
+      dwFlags: DWORD,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+    QueryCustomPolicy*: proc(
+      self: ptr IInternetHostSecurityManager,
+      guidKey: REFGUID,
+      ppPolicy: ptr ptr BYTE,
+      pcbPolicy: ptr DWORD,
+      pContext: ptr BYTE,
+      cbContext: DWORD,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+
   IInternetZoneManagerEx* {.pure.} = object
     lpVtbl*: ptr IInternetZoneManagerExVtbl
+
   IInternetZoneManagerExVtbl* {.pure, inheritable.} = object of IInternetZoneManagerVtbl
-    GetZoneActionPolicyEx*: proc(self: ptr IInternetZoneManagerEx, dwZone: DWORD, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, urlZoneReg: URLZONEREG, dwFlags: DWORD): HRESULT {.stdcall.}
-    SetZoneActionPolicyEx*: proc(self: ptr IInternetZoneManagerEx, dwZone: DWORD, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, urlZoneReg: URLZONEREG, dwFlags: DWORD): HRESULT {.stdcall.}
+    GetZoneActionPolicyEx*: proc(
+      self: ptr IInternetZoneManagerEx,
+      dwZone: DWORD,
+      dwAction: DWORD,
+      pPolicy: ptr BYTE,
+      cbPolicy: DWORD,
+      urlZoneReg: URLZONEREG,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    SetZoneActionPolicyEx*: proc(
+      self: ptr IInternetZoneManagerEx,
+      dwZone: DWORD,
+      dwAction: DWORD,
+      pPolicy: ptr BYTE,
+      cbPolicy: DWORD,
+      urlZoneReg: URLZONEREG,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+
   IInternetZoneManagerEx2* {.pure.} = object
     lpVtbl*: ptr IInternetZoneManagerEx2Vtbl
+
   IInternetZoneManagerEx2Vtbl* {.pure, inheritable.} = object of IInternetZoneManagerExVtbl
-    GetZoneAttributesEx*: proc(self: ptr IInternetZoneManagerEx2, dwZone: DWORD, pZoneAttributes: ptr ZONEATTRIBUTES, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetZoneSecurityState*: proc(self: ptr IInternetZoneManagerEx2, dwZoneIndex: DWORD, fRespectPolicy: WINBOOL, pdwState: LPDWORD, pfPolicyEncountered: ptr WINBOOL): HRESULT {.stdcall.}
-    GetIESecurityState*: proc(self: ptr IInternetZoneManagerEx2, fRespectPolicy: WINBOOL, pdwState: LPDWORD, pfPolicyEncountered: ptr WINBOOL, fNoCache: WINBOOL): HRESULT {.stdcall.}
+    GetZoneAttributesEx*: proc(
+      self: ptr IInternetZoneManagerEx2,
+      dwZone: DWORD,
+      pZoneAttributes: ptr ZONEATTRIBUTES,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    GetZoneSecurityState*: proc(
+      self: ptr IInternetZoneManagerEx2,
+      dwZoneIndex: DWORD,
+      fRespectPolicy: WINBOOL,
+      pdwState: LPDWORD,
+      pfPolicyEncountered: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+    GetIESecurityState*: proc(
+      self: ptr IInternetZoneManagerEx2,
+      fRespectPolicy: WINBOOL,
+      pdwState: LPDWORD,
+      pfPolicyEncountered: ptr WINBOOL,
+      fNoCache: WINBOOL,
+    ): HRESULT {.stdcall.}
     FixUnsecureSettings*: proc(self: ptr IInternetZoneManagerEx2): HRESULT {.stdcall.}
+
   ISoftDistExt* {.pure.} = object
     lpVtbl*: ptr ISoftDistExtVtbl
+
   ISoftDistExtVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ProcessSoftDist*: proc(self: ptr ISoftDistExt, szCDFURL: LPCWSTR, pSoftDistElement: ptr IXMLElement, lpsdi: LPSOFTDISTINFO): HRESULT {.stdcall.}
-    GetFirstCodeBase*: proc(self: ptr ISoftDistExt, szCodeBase: ptr LPWSTR, dwMaxSize: LPDWORD): HRESULT {.stdcall.}
-    GetNextCodeBase*: proc(self: ptr ISoftDistExt, szCodeBase: ptr LPWSTR, dwMaxSize: LPDWORD): HRESULT {.stdcall.}
-    AsyncInstallDistributionUnit*: proc(self: ptr ISoftDistExt, pbc: ptr IBindCtx, pvReserved: LPVOID, flags: DWORD, lpcbh: LPCODEBASEHOLD): HRESULT {.stdcall.}
+    ProcessSoftDist*: proc(
+      self: ptr ISoftDistExt,
+      szCDFURL: LPCWSTR,
+      pSoftDistElement: ptr IXMLElement,
+      lpsdi: LPSOFTDISTINFO,
+    ): HRESULT {.stdcall.}
+    GetFirstCodeBase*: proc(
+      self: ptr ISoftDistExt, szCodeBase: ptr LPWSTR, dwMaxSize: LPDWORD
+    ): HRESULT {.stdcall.}
+    GetNextCodeBase*: proc(
+      self: ptr ISoftDistExt, szCodeBase: ptr LPWSTR, dwMaxSize: LPDWORD
+    ): HRESULT {.stdcall.}
+    AsyncInstallDistributionUnit*: proc(
+      self: ptr ISoftDistExt,
+      pbc: ptr IBindCtx,
+      pvReserved: LPVOID,
+      flags: DWORD,
+      lpcbh: LPCODEBASEHOLD,
+    ): HRESULT {.stdcall.}
+
   IZoomEvents* {.pure.} = object
     lpVtbl*: ptr IZoomEventsVtbl
+
   IZoomEventsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnZoomPercentChanged*: proc(self: ptr IZoomEvents, ulZoomPercent: ULONG): HRESULT {.stdcall.}
+    OnZoomPercentChanged*:
+      proc(self: ptr IZoomEvents, ulZoomPercent: ULONG): HRESULT {.stdcall.}
+
   IProtectFocus* {.pure.} = object
     lpVtbl*: ptr IProtectFocusVtbl
+
   IProtectFocusVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AllowFocusChange*: proc(self: ptr IProtectFocus, pfAllow: ptr WINBOOL): HRESULT {.stdcall.}
+    AllowFocusChange*:
+      proc(self: ptr IProtectFocus, pfAllow: ptr WINBOOL): HRESULT {.stdcall.}
+
   IProtectedModeMenuServices* {.pure.} = object
     lpVtbl*: ptr IProtectedModeMenuServicesVtbl
+
   IProtectedModeMenuServicesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateMenu*: proc(self: ptr IProtectedModeMenuServices, phMenu: ptr HMENU): HRESULT {.stdcall.}
-    LoadMenu*: proc(self: ptr IProtectedModeMenuServices, pszModuleName: LPCWSTR, pszMenuName: LPCWSTR, phMenu: ptr HMENU): HRESULT {.stdcall.}
-    LoadMenuID*: proc(self: ptr IProtectedModeMenuServices, pszModuleName: LPCWSTR, wResourceID: WORD, phMenu: ptr HMENU): HRESULT {.stdcall.}
+    CreateMenu*:
+      proc(self: ptr IProtectedModeMenuServices, phMenu: ptr HMENU): HRESULT {.stdcall.}
+    LoadMenu*: proc(
+      self: ptr IProtectedModeMenuServices,
+      pszModuleName: LPCWSTR,
+      pszMenuName: LPCWSTR,
+      phMenu: ptr HMENU,
+    ): HRESULT {.stdcall.}
+    LoadMenuID*: proc(
+      self: ptr IProtectedModeMenuServices,
+      pszModuleName: LPCWSTR,
+      wResourceID: WORD,
+      phMenu: ptr HMENU,
+    ): HRESULT {.stdcall.}
+
   IWebBrowser* {.pure.} = object
     lpVtbl*: ptr IWebBrowserVtbl
+
   IWebBrowserVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     GoBack*: proc(self: ptr IWebBrowser): HRESULT {.stdcall.}
     GoForward*: proc(self: ptr IWebBrowser): HRESULT {.stdcall.}
     GoHome*: proc(self: ptr IWebBrowser): HRESULT {.stdcall.}
     GoSearch*: proc(self: ptr IWebBrowser): HRESULT {.stdcall.}
-    Navigate*: proc(self: ptr IWebBrowser, URL: BSTR, Flags: ptr VARIANT, TargetFrameName: ptr VARIANT, PostData: ptr VARIANT, Headers: ptr VARIANT): HRESULT {.stdcall.}
+    Navigate*: proc(
+      self: ptr IWebBrowser,
+      URL: BSTR,
+      Flags: ptr VARIANT,
+      TargetFrameName: ptr VARIANT,
+      PostData: ptr VARIANT,
+      Headers: ptr VARIANT,
+    ): HRESULT {.stdcall.}
     Refresh*: proc(self: ptr IWebBrowser): HRESULT {.stdcall.}
     Refresh2*: proc(self: ptr IWebBrowser, Level: ptr VARIANT): HRESULT {.stdcall.}
     Stop*: proc(self: ptr IWebBrowser): HRESULT {.stdcall.}
-    get_Application*: proc(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Parent*: proc(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Container*: proc(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Document*: proc(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_TopLevelContainer*: proc(self: ptr IWebBrowser, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_Application*:
+      proc(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Parent*:
+      proc(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Container*:
+      proc(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Document*:
+      proc(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_TopLevelContainer*:
+      proc(self: ptr IWebBrowser, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_Type*: proc(self: ptr IWebBrowser, Type: ptr BSTR): HRESULT {.stdcall.}
     get_Left*: proc(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.stdcall.}
     put_Left*: proc(self: ptr IWebBrowser, Left: LONG): HRESULT {.stdcall.}
@@ -6314,117 +9701,263 @@
     put_Width*: proc(self: ptr IWebBrowser, Width: LONG): HRESULT {.stdcall.}
     get_Height*: proc(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.stdcall.}
     put_Height*: proc(self: ptr IWebBrowser, Height: LONG): HRESULT {.stdcall.}
-    get_LocationName*: proc(self: ptr IWebBrowser, LocationName: ptr BSTR): HRESULT {.stdcall.}
-    get_LocationURL*: proc(self: ptr IWebBrowser, LocationURL: ptr BSTR): HRESULT {.stdcall.}
+    get_LocationName*:
+      proc(self: ptr IWebBrowser, LocationName: ptr BSTR): HRESULT {.stdcall.}
+    get_LocationURL*:
+      proc(self: ptr IWebBrowser, LocationURL: ptr BSTR): HRESULT {.stdcall.}
     get_Busy*: proc(self: ptr IWebBrowser, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+
   DWebBrowserEvents* {.pure.} = object
     lpVtbl*: ptr DWebBrowserEventsVtbl
+
   DWebBrowserEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IWebBrowserApp* {.pure.} = object
     lpVtbl*: ptr IWebBrowserAppVtbl
+
   IWebBrowserAppVtbl* {.pure, inheritable.} = object of IWebBrowserVtbl
     Quit*: proc(self: ptr IWebBrowserApp): HRESULT {.stdcall.}
-    ClientToWindow*: proc(self: ptr IWebBrowserApp, pcx: ptr int32, pcy: ptr int32): HRESULT {.stdcall.}
-    PutProperty*: proc(self: ptr IWebBrowserApp, Property: BSTR, vtValue: VARIANT): HRESULT {.stdcall.}
-    GetProperty*: proc(self: ptr IWebBrowserApp, Property: BSTR, pvtValue: ptr VARIANT): HRESULT {.stdcall.}
+    ClientToWindow*: proc(
+      self: ptr IWebBrowserApp, pcx: ptr int32, pcy: ptr int32
+    ): HRESULT {.stdcall.}
+    PutProperty*: proc(
+      self: ptr IWebBrowserApp, Property: BSTR, vtValue: VARIANT
+    ): HRESULT {.stdcall.}
+    GetProperty*: proc(
+      self: ptr IWebBrowserApp, Property: BSTR, pvtValue: ptr VARIANT
+    ): HRESULT {.stdcall.}
     get_Name*: proc(self: ptr IWebBrowserApp, Name: ptr BSTR): HRESULT {.stdcall.}
-    get_HWND*: proc(self: ptr IWebBrowserApp, pHWND: ptr SHANDLE_PTR): HRESULT {.stdcall.}
-    get_FullName*: proc(self: ptr IWebBrowserApp, FullName: ptr BSTR): HRESULT {.stdcall.}
+    get_HWND*:
+      proc(self: ptr IWebBrowserApp, pHWND: ptr SHANDLE_PTR): HRESULT {.stdcall.}
+    get_FullName*:
+      proc(self: ptr IWebBrowserApp, FullName: ptr BSTR): HRESULT {.stdcall.}
     get_Path*: proc(self: ptr IWebBrowserApp, Path: ptr BSTR): HRESULT {.stdcall.}
-    get_Visible*: proc(self: ptr IWebBrowserApp, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_Visible*: proc(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_StatusBar*: proc(self: ptr IWebBrowserApp, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_StatusBar*: proc(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_StatusText*: proc(self: ptr IWebBrowserApp, StatusText: ptr BSTR): HRESULT {.stdcall.}
-    put_StatusText*: proc(self: ptr IWebBrowserApp, StatusText: BSTR): HRESULT {.stdcall.}
+    get_Visible*:
+      proc(self: ptr IWebBrowserApp, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_Visible*:
+      proc(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_StatusBar*:
+      proc(self: ptr IWebBrowserApp, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_StatusBar*:
+      proc(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_StatusText*:
+      proc(self: ptr IWebBrowserApp, StatusText: ptr BSTR): HRESULT {.stdcall.}
+    put_StatusText*:
+      proc(self: ptr IWebBrowserApp, StatusText: BSTR): HRESULT {.stdcall.}
     get_ToolBar*: proc(self: ptr IWebBrowserApp, Value: ptr int32): HRESULT {.stdcall.}
     put_ToolBar*: proc(self: ptr IWebBrowserApp, Value: int32): HRESULT {.stdcall.}
-    get_MenuBar*: proc(self: ptr IWebBrowserApp, Value: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_MenuBar*: proc(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_FullScreen*: proc(self: ptr IWebBrowserApp, pbFullScreen: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_FullScreen*: proc(self: ptr IWebBrowserApp, bFullScreen: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_MenuBar*:
+      proc(self: ptr IWebBrowserApp, Value: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_MenuBar*:
+      proc(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_FullScreen*: proc(
+      self: ptr IWebBrowserApp, pbFullScreen: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    put_FullScreen*:
+      proc(self: ptr IWebBrowserApp, bFullScreen: VARIANT_BOOL): HRESULT {.stdcall.}
+
   IWebBrowser2* {.pure.} = object
     lpVtbl*: ptr IWebBrowser2Vtbl
+
   IWebBrowser2Vtbl* {.pure, inheritable.} = object of IWebBrowserAppVtbl
-    Navigate2*: proc(self: ptr IWebBrowser2, URL: ptr VARIANT, Flags: ptr VARIANT, TargetFrameName: ptr VARIANT, PostData: ptr VARIANT, Headers: ptr VARIANT): HRESULT {.stdcall.}
-    QueryStatusWB*: proc(self: ptr IWebBrowser2, cmdID: OLECMDID, pcmdf: ptr OLECMDF): HRESULT {.stdcall.}
-    ExecWB*: proc(self: ptr IWebBrowser2, cmdID: OLECMDID, cmdexecopt: OLECMDEXECOPT, pvaIn: ptr VARIANT, pvaOut: ptr VARIANT): HRESULT {.stdcall.}
-    ShowBrowserBar*: proc(self: ptr IWebBrowser2, pvaClsid: ptr VARIANT, pvarShow: ptr VARIANT, pvarSize: ptr VARIANT): HRESULT {.stdcall.}
-    get_ReadyState*: proc(self: ptr IWebBrowser2, plReadyState: ptr READYSTATE): HRESULT {.stdcall.}
-    get_Offline*: proc(self: ptr IWebBrowser2, pbOffline: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_Offline*: proc(self: ptr IWebBrowser2, bOffline: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_Silent*: proc(self: ptr IWebBrowser2, pbSilent: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_Silent*: proc(self: ptr IWebBrowser2, bSilent: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_RegisterAsBrowser*: proc(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_RegisterAsBrowser*: proc(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_RegisterAsDropTarget*: proc(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_RegisterAsDropTarget*: proc(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_TheaterMode*: proc(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_TheaterMode*: proc(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_AddressBar*: proc(self: ptr IWebBrowser2, Value: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_AddressBar*: proc(self: ptr IWebBrowser2, Value: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_Resizable*: proc(self: ptr IWebBrowser2, Value: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_Resizable*: proc(self: ptr IWebBrowser2, Value: VARIANT_BOOL): HRESULT {.stdcall.}
+    Navigate2*: proc(
+      self: ptr IWebBrowser2,
+      URL: ptr VARIANT,
+      Flags: ptr VARIANT,
+      TargetFrameName: ptr VARIANT,
+      PostData: ptr VARIANT,
+      Headers: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    QueryStatusWB*: proc(
+      self: ptr IWebBrowser2, cmdID: OLECMDID, pcmdf: ptr OLECMDF
+    ): HRESULT {.stdcall.}
+    ExecWB*: proc(
+      self: ptr IWebBrowser2,
+      cmdID: OLECMDID,
+      cmdexecopt: OLECMDEXECOPT,
+      pvaIn: ptr VARIANT,
+      pvaOut: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    ShowBrowserBar*: proc(
+      self: ptr IWebBrowser2,
+      pvaClsid: ptr VARIANT,
+      pvarShow: ptr VARIANT,
+      pvarSize: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    get_ReadyState*:
+      proc(self: ptr IWebBrowser2, plReadyState: ptr READYSTATE): HRESULT {.stdcall.}
+    get_Offline*:
+      proc(self: ptr IWebBrowser2, pbOffline: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_Offline*:
+      proc(self: ptr IWebBrowser2, bOffline: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_Silent*:
+      proc(self: ptr IWebBrowser2, pbSilent: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_Silent*:
+      proc(self: ptr IWebBrowser2, bSilent: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_RegisterAsBrowser*:
+      proc(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_RegisterAsBrowser*:
+      proc(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_RegisterAsDropTarget*:
+      proc(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_RegisterAsDropTarget*:
+      proc(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_TheaterMode*:
+      proc(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_TheaterMode*:
+      proc(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_AddressBar*:
+      proc(self: ptr IWebBrowser2, Value: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_AddressBar*:
+      proc(self: ptr IWebBrowser2, Value: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_Resizable*:
+      proc(self: ptr IWebBrowser2, Value: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    put_Resizable*:
+      proc(self: ptr IWebBrowser2, Value: VARIANT_BOOL): HRESULT {.stdcall.}
+
   DWebBrowserEvents2* {.pure.} = object
     lpVtbl*: ptr DWebBrowserEvents2Vtbl
+
   DWebBrowserEvents2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DShellWindowsEvents* {.pure.} = object
     lpVtbl*: ptr DShellWindowsEventsVtbl
+
   DShellWindowsEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IShellWindows* {.pure.} = object
     lpVtbl*: ptr IShellWindowsVtbl
+
   IShellWindowsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_Count*: proc(self: ptr IShellWindows, Count: ptr LONG): HRESULT {.stdcall.}
-    Item*: proc(self: ptr IShellWindows, index: VARIANT, Folder: ptr ptr IDispatch): HRESULT {.stdcall.}
-    NewEnum*: proc(self: ptr IShellWindows, ppunk: ptr ptr IUnknown): HRESULT {.stdcall.}
-    Register*: proc(self: ptr IShellWindows, pid: ptr IDispatch, hWnd: LONG, swClass: int32, plCookie: ptr LONG): HRESULT {.stdcall.}
-    RegisterPending*: proc(self: ptr IShellWindows, lThreadId: LONG, pvarloc: ptr VARIANT, pvarlocRoot: ptr VARIANT, swClass: int32, plCookie: ptr LONG): HRESULT {.stdcall.}
+    Item*: proc(
+      self: ptr IShellWindows, index: VARIANT, Folder: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    NewEnum*:
+      proc(self: ptr IShellWindows, ppunk: ptr ptr IUnknown): HRESULT {.stdcall.}
+    Register*: proc(
+      self: ptr IShellWindows,
+      pid: ptr IDispatch,
+      hWnd: LONG,
+      swClass: int32,
+      plCookie: ptr LONG,
+    ): HRESULT {.stdcall.}
+    RegisterPending*: proc(
+      self: ptr IShellWindows,
+      lThreadId: LONG,
+      pvarloc: ptr VARIANT,
+      pvarlocRoot: ptr VARIANT,
+      swClass: int32,
+      plCookie: ptr LONG,
+    ): HRESULT {.stdcall.}
     Revoke*: proc(self: ptr IShellWindows, lCookie: LONG): HRESULT {.stdcall.}
-    OnNavigate*: proc(self: ptr IShellWindows, lCookie: LONG, pvarLoc: ptr VARIANT): HRESULT {.stdcall.}
-    OnActivated*: proc(self: ptr IShellWindows, lCookie: LONG, fActive: VARIANT_BOOL): HRESULT {.stdcall.}
-    FindWindowSW*: proc(self: ptr IShellWindows, pvarLoc: ptr VARIANT, pvarLocRoot: ptr VARIANT, swClass: int32, phwnd: ptr LONG, swfwOptions: int32, ppdispOut: ptr ptr IDispatch): HRESULT {.stdcall.}
-    OnCreated*: proc(self: ptr IShellWindows, lCookie: LONG, punk: ptr IUnknown): HRESULT {.stdcall.}
-    ProcessAttachDetach*: proc(self: ptr IShellWindows, fAttach: VARIANT_BOOL): HRESULT {.stdcall.}
+    OnNavigate*: proc(
+      self: ptr IShellWindows, lCookie: LONG, pvarLoc: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    OnActivated*: proc(
+      self: ptr IShellWindows, lCookie: LONG, fActive: VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    FindWindowSW*: proc(
+      self: ptr IShellWindows,
+      pvarLoc: ptr VARIANT,
+      pvarLocRoot: ptr VARIANT,
+      swClass: int32,
+      phwnd: ptr LONG,
+      swfwOptions: int32,
+      ppdispOut: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
+    OnCreated*: proc(
+      self: ptr IShellWindows, lCookie: LONG, punk: ptr IUnknown
+    ): HRESULT {.stdcall.}
+    ProcessAttachDetach*:
+      proc(self: ptr IShellWindows, fAttach: VARIANT_BOOL): HRESULT {.stdcall.}
+
   IShellUIHelper* {.pure.} = object
     lpVtbl*: ptr IShellUIHelperVtbl
+
   IShellUIHelperVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     ResetFirstBootMode*: proc(self: ptr IShellUIHelper): HRESULT {.stdcall.}
     ResetSafeMode*: proc(self: ptr IShellUIHelper): HRESULT {.stdcall.}
     RefreshOfflineDesktop*: proc(self: ptr IShellUIHelper): HRESULT {.stdcall.}
-    AddFavorite*: proc(self: ptr IShellUIHelper, URL: BSTR, Title: ptr VARIANT): HRESULT {.stdcall.}
+    AddFavorite*:
+      proc(self: ptr IShellUIHelper, URL: BSTR, Title: ptr VARIANT): HRESULT {.stdcall.}
     AddChannel*: proc(self: ptr IShellUIHelper, URL: BSTR): HRESULT {.stdcall.}
-    AddDesktopComponent*: proc(self: ptr IShellUIHelper, URL: BSTR, Type: BSTR, Left: ptr VARIANT, Top: ptr VARIANT, Width: ptr VARIANT, Height: ptr VARIANT): HRESULT {.stdcall.}
-    IsSubscribed*: proc(self: ptr IShellUIHelper, URL: BSTR, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    NavigateAndFind*: proc(self: ptr IShellUIHelper, URL: BSTR, strQuery: BSTR, varTargetFrame: ptr VARIANT): HRESULT {.stdcall.}
-    ImportExportFavorites*: proc(self: ptr IShellUIHelper, fImport: VARIANT_BOOL, strImpExpPath: BSTR): HRESULT {.stdcall.}
-    AutoCompleteSaveForm*: proc(self: ptr IShellUIHelper, Form: ptr VARIANT): HRESULT {.stdcall.}
-    AutoScan*: proc(self: ptr IShellUIHelper, strSearch: BSTR, strFailureUrl: BSTR, pvarTargetFrame: ptr VARIANT): HRESULT {.stdcall.}
-    AutoCompleteAttach*: proc(self: ptr IShellUIHelper, Reserved: ptr VARIANT): HRESULT {.stdcall.}
-    ShowBrowserUI*: proc(self: ptr IShellUIHelper, bstrName: BSTR, pvarIn: ptr VARIANT, pvarOut: ptr VARIANT): HRESULT {.stdcall.}
+    AddDesktopComponent*: proc(
+      self: ptr IShellUIHelper,
+      URL: BSTR,
+      Type: BSTR,
+      Left: ptr VARIANT,
+      Top: ptr VARIANT,
+      Width: ptr VARIANT,
+      Height: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    IsSubscribed*: proc(
+      self: ptr IShellUIHelper, URL: BSTR, pBool: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    NavigateAndFind*: proc(
+      self: ptr IShellUIHelper, URL: BSTR, strQuery: BSTR, varTargetFrame: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    ImportExportFavorites*: proc(
+      self: ptr IShellUIHelper, fImport: VARIANT_BOOL, strImpExpPath: BSTR
+    ): HRESULT {.stdcall.}
+    AutoCompleteSaveForm*:
+      proc(self: ptr IShellUIHelper, Form: ptr VARIANT): HRESULT {.stdcall.}
+    AutoScan*: proc(
+      self: ptr IShellUIHelper,
+      strSearch: BSTR,
+      strFailureUrl: BSTR,
+      pvarTargetFrame: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    AutoCompleteAttach*:
+      proc(self: ptr IShellUIHelper, Reserved: ptr VARIANT): HRESULT {.stdcall.}
+    ShowBrowserUI*: proc(
+      self: ptr IShellUIHelper,
+      bstrName: BSTR,
+      pvarIn: ptr VARIANT,
+      pvarOut: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+
   IShellUIHelper2* {.pure.} = object
     lpVtbl*: ptr IShellUIHelper2Vtbl
+
   IShellUIHelper2Vtbl* {.pure, inheritable.} = object of IShellUIHelperVtbl
     AddSearchProvider*: proc(self: ptr IShellUIHelper2, URL: BSTR): HRESULT {.stdcall.}
     RunOnceShown*: proc(self: ptr IShellUIHelper2): HRESULT {.stdcall.}
     SkipRunOnce*: proc(self: ptr IShellUIHelper2): HRESULT {.stdcall.}
-    CustomizeSettings*: proc(self: ptr IShellUIHelper2, fSQM: VARIANT_BOOL, fPhishing: VARIANT_BOOL, bstrLocale: BSTR): HRESULT {.stdcall.}
-    SqmEnabled*: proc(self: ptr IShellUIHelper2, pfEnabled: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    PhishingEnabled*: proc(self: ptr IShellUIHelper2, pfEnabled: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    BrandImageUri*: proc(self: ptr IShellUIHelper2, pbstrUri: ptr BSTR): HRESULT {.stdcall.}
+    CustomizeSettings*: proc(
+      self: ptr IShellUIHelper2,
+      fSQM: VARIANT_BOOL,
+      fPhishing: VARIANT_BOOL,
+      bstrLocale: BSTR,
+    ): HRESULT {.stdcall.}
+    SqmEnabled*:
+      proc(self: ptr IShellUIHelper2, pfEnabled: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    PhishingEnabled*:
+      proc(self: ptr IShellUIHelper2, pfEnabled: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    BrandImageUri*:
+      proc(self: ptr IShellUIHelper2, pbstrUri: ptr BSTR): HRESULT {.stdcall.}
     SkipTabsWelcome*: proc(self: ptr IShellUIHelper2): HRESULT {.stdcall.}
     DiagnoseConnection*: proc(self: ptr IShellUIHelper2): HRESULT {.stdcall.}
-    CustomizeClearType*: proc(self: ptr IShellUIHelper2, fSet: VARIANT_BOOL): HRESULT {.stdcall.}
-    IsSearchProviderInstalled*: proc(self: ptr IShellUIHelper2, URL: BSTR, pdwResult: ptr DWORD): HRESULT {.stdcall.}
-    IsSearchMigrated*: proc(self: ptr IShellUIHelper2, pfMigrated: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    DefaultSearchProvider*: proc(self: ptr IShellUIHelper2, pbstrName: ptr BSTR): HRESULT {.stdcall.}
-    RunOnceRequiredSettingsComplete*: proc(self: ptr IShellUIHelper2, fComplete: VARIANT_BOOL): HRESULT {.stdcall.}
-    RunOnceHasShown*: proc(self: ptr IShellUIHelper2, pfShown: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    SearchGuideUrl*: proc(self: ptr IShellUIHelper2, pbstrUrl: ptr BSTR): HRESULT {.stdcall.}
+    CustomizeClearType*:
+      proc(self: ptr IShellUIHelper2, fSet: VARIANT_BOOL): HRESULT {.stdcall.}
+    IsSearchProviderInstalled*: proc(
+      self: ptr IShellUIHelper2, URL: BSTR, pdwResult: ptr DWORD
+    ): HRESULT {.stdcall.}
+    IsSearchMigrated*:
+      proc(self: ptr IShellUIHelper2, pfMigrated: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    DefaultSearchProvider*:
+      proc(self: ptr IShellUIHelper2, pbstrName: ptr BSTR): HRESULT {.stdcall.}
+    RunOnceRequiredSettingsComplete*:
+      proc(self: ptr IShellUIHelper2, fComplete: VARIANT_BOOL): HRESULT {.stdcall.}
+    RunOnceHasShown*:
+      proc(self: ptr IShellUIHelper2, pfShown: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    SearchGuideUrl*:
+      proc(self: ptr IShellUIHelper2, pbstrUrl: ptr BSTR): HRESULT {.stdcall.}
+
   DShellNameSpaceEvents* {.pure.} = object
     lpVtbl*: ptr DShellNameSpaceEventsVtbl
+
   DShellNameSpaceEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IShellFavoritesNameSpace* {.pure.} = object
     lpVtbl*: ptr IShellFavoritesNameSpaceVtbl
+
   IShellFavoritesNameSpaceVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     MoveSelectionUp*: proc(self: ptr IShellFavoritesNameSpace): HRESULT {.stdcall.}
     MoveSelectionDown*: proc(self: ptr IShellFavoritesNameSpace): HRESULT {.stdcall.}
@@ -6433,3659 +9966,17890 @@
     Synchronize*: proc(self: ptr IShellFavoritesNameSpace): HRESULT {.stdcall.}
     Import*: proc(self: ptr IShellFavoritesNameSpace): HRESULT {.stdcall.}
     Export*: proc(self: ptr IShellFavoritesNameSpace): HRESULT {.stdcall.}
-    InvokeContextMenuCommand*: proc(self: ptr IShellFavoritesNameSpace, strCommand: BSTR): HRESULT {.stdcall.}
+    InvokeContextMenuCommand*:
+      proc(self: ptr IShellFavoritesNameSpace, strCommand: BSTR): HRESULT {.stdcall.}
     MoveSelectionTo*: proc(self: ptr IShellFavoritesNameSpace): HRESULT {.stdcall.}
-    get_SubscriptionsEnabled*: proc(self: ptr IShellFavoritesNameSpace, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    CreateSubscriptionForSelection*: proc(self: ptr IShellFavoritesNameSpace, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    DeleteSubscriptionForSelection*: proc(self: ptr IShellFavoritesNameSpace, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    SetRoot*: proc(self: ptr IShellFavoritesNameSpace, bstrFullPath: BSTR): HRESULT {.stdcall.}
+    get_SubscriptionsEnabled*: proc(
+      self: ptr IShellFavoritesNameSpace, pBool: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    CreateSubscriptionForSelection*: proc(
+      self: ptr IShellFavoritesNameSpace, pBool: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    DeleteSubscriptionForSelection*: proc(
+      self: ptr IShellFavoritesNameSpace, pBool: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    SetRoot*:
+      proc(self: ptr IShellFavoritesNameSpace, bstrFullPath: BSTR): HRESULT {.stdcall.}
+
   IShellNameSpace* {.pure.} = object
     lpVtbl*: ptr IShellNameSpaceVtbl
+
   IShellNameSpaceVtbl* {.pure, inheritable.} = object of IShellFavoritesNameSpaceVtbl
-    get_EnumOptions*: proc(self: ptr IShellNameSpace, pgrfEnumFlags: ptr LONG): HRESULT {.stdcall.}
-    put_EnumOptions*: proc(self: ptr IShellNameSpace, pgrfEnumFlags: LONG): HRESULT {.stdcall.}
-    get_SelectedItem*: proc(self: ptr IShellNameSpace, pItem: ptr ptr IDispatch): HRESULT {.stdcall.}
-    put_SelectedItem*: proc(self: ptr IShellNameSpace, pItem: ptr IDispatch): HRESULT {.stdcall.}
+    get_EnumOptions*:
+      proc(self: ptr IShellNameSpace, pgrfEnumFlags: ptr LONG): HRESULT {.stdcall.}
+    put_EnumOptions*:
+      proc(self: ptr IShellNameSpace, pgrfEnumFlags: LONG): HRESULT {.stdcall.}
+    get_SelectedItem*:
+      proc(self: ptr IShellNameSpace, pItem: ptr ptr IDispatch): HRESULT {.stdcall.}
+    put_SelectedItem*:
+      proc(self: ptr IShellNameSpace, pItem: ptr IDispatch): HRESULT {.stdcall.}
     get_Root*: proc(self: ptr IShellNameSpace, pvar: ptr VARIANT): HRESULT {.stdcall.}
     put_Root*: proc(self: ptr IShellNameSpace, pvar: VARIANT): HRESULT {.stdcall.}
     get_Depth*: proc(self: ptr IShellNameSpace, piDepth: ptr int32): HRESULT {.stdcall.}
     put_Depth*: proc(self: ptr IShellNameSpace, piDepth: int32): HRESULT {.stdcall.}
     get_Mode*: proc(self: ptr IShellNameSpace, puMode: ptr int32): HRESULT {.stdcall.}
     put_Mode*: proc(self: ptr IShellNameSpace, puMode: int32): HRESULT {.stdcall.}
-    get_Flags*: proc(self: ptr IShellNameSpace, pdwFlags: ptr ULONG): HRESULT {.stdcall.}
+    get_Flags*:
+      proc(self: ptr IShellNameSpace, pdwFlags: ptr ULONG): HRESULT {.stdcall.}
     put_Flags*: proc(self: ptr IShellNameSpace, pdwFlags: ULONG): HRESULT {.stdcall.}
     put_TVFlags*: proc(self: ptr IShellNameSpace, dwFlags: ULONG): HRESULT {.stdcall.}
-    get_TVFlags*: proc(self: ptr IShellNameSpace, dwFlags: ptr ULONG): HRESULT {.stdcall.}
-    get_Columns*: proc(self: ptr IShellNameSpace, bstrColumns: ptr BSTR): HRESULT {.stdcall.}
-    put_Columns*: proc(self: ptr IShellNameSpace, bstrColumns: BSTR): HRESULT {.stdcall.}
-    get_CountViewTypes*: proc(self: ptr IShellNameSpace, piTypes: ptr int32): HRESULT {.stdcall.}
+    get_TVFlags*:
+      proc(self: ptr IShellNameSpace, dwFlags: ptr ULONG): HRESULT {.stdcall.}
+    get_Columns*:
+      proc(self: ptr IShellNameSpace, bstrColumns: ptr BSTR): HRESULT {.stdcall.}
+    put_Columns*:
+      proc(self: ptr IShellNameSpace, bstrColumns: BSTR): HRESULT {.stdcall.}
+    get_CountViewTypes*:
+      proc(self: ptr IShellNameSpace, piTypes: ptr int32): HRESULT {.stdcall.}
     SetViewType*: proc(self: ptr IShellNameSpace, iType: int32): HRESULT {.stdcall.}
-    SelectedItems*: proc(self: ptr IShellNameSpace, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
-    Expand*: proc(self: ptr IShellNameSpace, `var`: VARIANT, iDepth: int32): HRESULT {.stdcall.}
+    SelectedItems*:
+      proc(self: ptr IShellNameSpace, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    Expand*: proc(self: ptr IShellNameSpace, `var`: VARIANT, iDepth: int32): HRESULT {.
+      stdcall
+    .}
     UnselectAll*: proc(self: ptr IShellNameSpace): HRESULT {.stdcall.}
+
   IScriptErrorList* {.pure.} = object
     lpVtbl*: ptr IScriptErrorListVtbl
+
   IScriptErrorListVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     advanceError*: proc(self: ptr IScriptErrorList): HRESULT {.stdcall.}
     retreatError*: proc(self: ptr IScriptErrorList): HRESULT {.stdcall.}
-    canAdvanceError*: proc(self: ptr IScriptErrorList, pfCanAdvance: ptr LONG): HRESULT {.stdcall.}
-    canRetreatError*: proc(self: ptr IScriptErrorList, pfCanRetreat: ptr LONG): HRESULT {.stdcall.}
-    getErrorLine*: proc(self: ptr IScriptErrorList, plLine: ptr LONG): HRESULT {.stdcall.}
-    getErrorChar*: proc(self: ptr IScriptErrorList, plChar: ptr LONG): HRESULT {.stdcall.}
-    getErrorCode*: proc(self: ptr IScriptErrorList, plCode: ptr LONG): HRESULT {.stdcall.}
+    canAdvanceError*:
+      proc(self: ptr IScriptErrorList, pfCanAdvance: ptr LONG): HRESULT {.stdcall.}
+    canRetreatError*:
+      proc(self: ptr IScriptErrorList, pfCanRetreat: ptr LONG): HRESULT {.stdcall.}
+    getErrorLine*:
+      proc(self: ptr IScriptErrorList, plLine: ptr LONG): HRESULT {.stdcall.}
+    getErrorChar*:
+      proc(self: ptr IScriptErrorList, plChar: ptr LONG): HRESULT {.stdcall.}
+    getErrorCode*:
+      proc(self: ptr IScriptErrorList, plCode: ptr LONG): HRESULT {.stdcall.}
     getErrorMsg*: proc(self: ptr IScriptErrorList, pstr: ptr BSTR): HRESULT {.stdcall.}
     getErrorUrl*: proc(self: ptr IScriptErrorList, pstr: ptr BSTR): HRESULT {.stdcall.}
-    getAlwaysShowLockState*: proc(self: ptr IScriptErrorList, pfAlwaysShowLocked: ptr LONG): HRESULT {.stdcall.}
-    getDetailsPaneOpen*: proc(self: ptr IScriptErrorList, pfDetailsPaneOpen: ptr LONG): HRESULT {.stdcall.}
-    setDetailsPaneOpen*: proc(self: ptr IScriptErrorList, fDetailsPaneOpen: LONG): HRESULT {.stdcall.}
-    getPerErrorDisplay*: proc(self: ptr IScriptErrorList, pfPerErrorDisplay: ptr LONG): HRESULT {.stdcall.}
-    setPerErrorDisplay*: proc(self: ptr IScriptErrorList, fPerErrorDisplay: LONG): HRESULT {.stdcall.}
+    getAlwaysShowLockState*: proc(
+      self: ptr IScriptErrorList, pfAlwaysShowLocked: ptr LONG
+    ): HRESULT {.stdcall.}
+    getDetailsPaneOpen*:
+      proc(self: ptr IScriptErrorList, pfDetailsPaneOpen: ptr LONG): HRESULT {.stdcall.}
+    setDetailsPaneOpen*:
+      proc(self: ptr IScriptErrorList, fDetailsPaneOpen: LONG): HRESULT {.stdcall.}
+    getPerErrorDisplay*:
+      proc(self: ptr IScriptErrorList, pfPerErrorDisplay: ptr LONG): HRESULT {.stdcall.}
+    setPerErrorDisplay*:
+      proc(self: ptr IScriptErrorList, fPerErrorDisplay: LONG): HRESULT {.stdcall.}
+
   ISearch* {.pure.} = object
     lpVtbl*: ptr ISearchVtbl
+
   ISearchVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_Title*: proc(self: ptr ISearch, pbstrTitle: ptr BSTR): HRESULT {.stdcall.}
     get_Id*: proc(self: ptr ISearch, pbstrId: ptr BSTR): HRESULT {.stdcall.}
     get_URL*: proc(self: ptr ISearch, pbstrUrl: ptr BSTR): HRESULT {.stdcall.}
+
   ISearches* {.pure.} = object
     lpVtbl*: ptr ISearchesVtbl
+
   ISearchesVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_Count*: proc(self: ptr ISearches, plCount: ptr LONG): HRESULT {.stdcall.}
     get_Default*: proc(self: ptr ISearches, pbstrDefault: ptr BSTR): HRESULT {.stdcall.}
-    Item*: proc(self: ptr ISearches, index: VARIANT, ppid: ptr ptr ISearch): HRESULT {.stdcall.}
+    Item*: proc(self: ptr ISearches, index: VARIANT, ppid: ptr ptr ISearch): HRESULT {.
+      stdcall
+    .}
     NewEnum*: proc(self: ptr ISearches, ppunk: ptr ptr IUnknown): HRESULT {.stdcall.}
+
   ISearchAssistantOC* {.pure.} = object
     lpVtbl*: ptr ISearchAssistantOCVtbl
+
   ISearchAssistantOCVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    AddNextMenuItem*: proc(self: ptr ISearchAssistantOC, bstrText: BSTR, idItem: LONG): HRESULT {.stdcall.}
-    SetDefaultSearchUrl*: proc(self: ptr ISearchAssistantOC, bstrUrl: BSTR): HRESULT {.stdcall.}
+    AddNextMenuItem*: proc(
+      self: ptr ISearchAssistantOC, bstrText: BSTR, idItem: LONG
+    ): HRESULT {.stdcall.}
+    SetDefaultSearchUrl*:
+      proc(self: ptr ISearchAssistantOC, bstrUrl: BSTR): HRESULT {.stdcall.}
     NavigateToDefaultSearch*: proc(self: ptr ISearchAssistantOC): HRESULT {.stdcall.}
-    IsRestricted*: proc(self: ptr ISearchAssistantOC, bstrGuid: BSTR, pVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_ShellFeaturesEnabled*: proc(self: ptr ISearchAssistantOC, pVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_SearchAssistantDefault*: proc(self: ptr ISearchAssistantOC, pVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_Searches*: proc(self: ptr ISearchAssistantOC, ppid: ptr ptr ISearches): HRESULT {.stdcall.}
-    get_InWebFolder*: proc(self: ptr ISearchAssistantOC, pVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    PutProperty*: proc(self: ptr ISearchAssistantOC, bPerLocale: VARIANT_BOOL, bstrName: BSTR, bstrValue: BSTR): HRESULT {.stdcall.}
-    GetProperty*: proc(self: ptr ISearchAssistantOC, bPerLocale: VARIANT_BOOL, bstrName: BSTR, pbstrValue: ptr BSTR): HRESULT {.stdcall.}
-    put_EventHandled*: proc(self: ptr ISearchAssistantOC, rhs: VARIANT_BOOL): HRESULT {.stdcall.}
+    IsRestricted*: proc(
+      self: ptr ISearchAssistantOC, bstrGuid: BSTR, pVal: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    get_ShellFeaturesEnabled*:
+      proc(self: ptr ISearchAssistantOC, pVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_SearchAssistantDefault*:
+      proc(self: ptr ISearchAssistantOC, pVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_Searches*:
+      proc(self: ptr ISearchAssistantOC, ppid: ptr ptr ISearches): HRESULT {.stdcall.}
+    get_InWebFolder*:
+      proc(self: ptr ISearchAssistantOC, pVal: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    PutProperty*: proc(
+      self: ptr ISearchAssistantOC,
+      bPerLocale: VARIANT_BOOL,
+      bstrName: BSTR,
+      bstrValue: BSTR,
+    ): HRESULT {.stdcall.}
+    GetProperty*: proc(
+      self: ptr ISearchAssistantOC,
+      bPerLocale: VARIANT_BOOL,
+      bstrName: BSTR,
+      pbstrValue: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    put_EventHandled*:
+      proc(self: ptr ISearchAssistantOC, rhs: VARIANT_BOOL): HRESULT {.stdcall.}
     ResetNextMenu*: proc(self: ptr ISearchAssistantOC): HRESULT {.stdcall.}
     FindOnWeb*: proc(self: ptr ISearchAssistantOC): HRESULT {.stdcall.}
     FindFilesOrFolders*: proc(self: ptr ISearchAssistantOC): HRESULT {.stdcall.}
     FindComputer*: proc(self: ptr ISearchAssistantOC): HRESULT {.stdcall.}
     FindPrinter*: proc(self: ptr ISearchAssistantOC): HRESULT {.stdcall.}
     FindPeople*: proc(self: ptr ISearchAssistantOC): HRESULT {.stdcall.}
-    GetSearchAssistantURL*: proc(self: ptr ISearchAssistantOC, bSubstitute: VARIANT_BOOL, bCustomize: VARIANT_BOOL, pbstrValue: ptr BSTR): HRESULT {.stdcall.}
-    NotifySearchSettingsChanged*: proc(self: ptr ISearchAssistantOC): HRESULT {.stdcall.}
-    put_ASProvider*: proc(self: ptr ISearchAssistantOC, pProvider: BSTR): HRESULT {.stdcall.}
-    get_ASProvider*: proc(self: ptr ISearchAssistantOC, pProvider: ptr BSTR): HRESULT {.stdcall.}
-    put_ASSetting*: proc(self: ptr ISearchAssistantOC, pSetting: int32): HRESULT {.stdcall.}
-    get_ASSetting*: proc(self: ptr ISearchAssistantOC, pSetting: ptr int32): HRESULT {.stdcall.}
+    GetSearchAssistantURL*: proc(
+      self: ptr ISearchAssistantOC,
+      bSubstitute: VARIANT_BOOL,
+      bCustomize: VARIANT_BOOL,
+      pbstrValue: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    NotifySearchSettingsChanged*:
+      proc(self: ptr ISearchAssistantOC): HRESULT {.stdcall.}
+    put_ASProvider*:
+      proc(self: ptr ISearchAssistantOC, pProvider: BSTR): HRESULT {.stdcall.}
+    get_ASProvider*:
+      proc(self: ptr ISearchAssistantOC, pProvider: ptr BSTR): HRESULT {.stdcall.}
+    put_ASSetting*:
+      proc(self: ptr ISearchAssistantOC, pSetting: int32): HRESULT {.stdcall.}
+    get_ASSetting*:
+      proc(self: ptr ISearchAssistantOC, pSetting: ptr int32): HRESULT {.stdcall.}
     NETDetectNextNavigate*: proc(self: ptr ISearchAssistantOC): HRESULT {.stdcall.}
-    PutFindText*: proc(self: ptr ISearchAssistantOC, FindText: BSTR): HRESULT {.stdcall.}
-    get_Version*: proc(self: ptr ISearchAssistantOC, pVersion: ptr int32): HRESULT {.stdcall.}
-    EncodeString*: proc(self: ptr ISearchAssistantOC, bstrValue: BSTR, bstrCharSet: BSTR, bUseUTF8: VARIANT_BOOL, pbstrResult: ptr BSTR): HRESULT {.stdcall.}
+    PutFindText*:
+      proc(self: ptr ISearchAssistantOC, FindText: BSTR): HRESULT {.stdcall.}
+    get_Version*:
+      proc(self: ptr ISearchAssistantOC, pVersion: ptr int32): HRESULT {.stdcall.}
+    EncodeString*: proc(
+      self: ptr ISearchAssistantOC,
+      bstrValue: BSTR,
+      bstrCharSet: BSTR,
+      bUseUTF8: VARIANT_BOOL,
+      pbstrResult: ptr BSTR,
+    ): HRESULT {.stdcall.}
+
   ISearchAssistantOC2* {.pure.} = object
     lpVtbl*: ptr ISearchAssistantOC2Vtbl
+
   ISearchAssistantOC2Vtbl* {.pure, inheritable.} = object of ISearchAssistantOCVtbl
-    get_ShowFindPrinter*: proc(self: ptr ISearchAssistantOC2, pbShowFindPrinter: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_ShowFindPrinter*: proc(
+      self: ptr ISearchAssistantOC2, pbShowFindPrinter: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+
   ISearchAssistantOC3* {.pure.} = object
     lpVtbl*: ptr ISearchAssistantOC3Vtbl
+
   ISearchAssistantOC3Vtbl* {.pure, inheritable.} = object of ISearchAssistantOC2Vtbl
-    get_SearchCompanionAvailable*: proc(self: ptr ISearchAssistantOC3, pbAvailable: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_UseSearchCompanion*: proc(self: ptr ISearchAssistantOC3, pbUseSC: VARIANT_BOOL): HRESULT {.stdcall.}
-    get_UseSearchCompanion*: proc(self: ptr ISearchAssistantOC3, pbUseSC: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_SearchCompanionAvailable*: proc(
+      self: ptr ISearchAssistantOC3, pbAvailable: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    put_UseSearchCompanion*:
+      proc(self: ptr ISearchAssistantOC3, pbUseSC: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_UseSearchCompanion*: proc(
+      self: ptr ISearchAssistantOC3, pbUseSC: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+
   SearchAssistantEvents* {.pure.} = object
     lpVtbl*: ptr SearchAssistantEventsVtbl
+
   SearchAssistantEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   IRichChunk* {.pure.} = object
     lpVtbl*: ptr IRichChunkVtbl
+
   IRichChunkVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetData*: proc(self: ptr IRichChunk, pFirstPos: ptr ULONG, pLength: ptr ULONG, ppsz: ptr LPWSTR, pValue: ptr PROPVARIANT): HRESULT {.stdcall.}
+    GetData*: proc(
+      self: ptr IRichChunk,
+      pFirstPos: ptr ULONG,
+      pLength: ptr ULONG,
+      ppsz: ptr LPWSTR,
+      pValue: ptr PROPVARIANT,
+    ): HRESULT {.stdcall.}
+
   ICondition* {.pure.} = object
     lpVtbl*: ptr IConditionVtbl
+
   IConditionVtbl* {.pure, inheritable.} = object of IPersistStreamVtbl
-    GetConditionType*: proc(self: ptr ICondition, pNodeType: ptr CONDITION_TYPE): HRESULT {.stdcall.}
-    GetSubConditions*: proc(self: ptr ICondition, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetComparisonInfo*: proc(self: ptr ICondition, ppszPropertyName: ptr LPWSTR, pcop: ptr CONDITION_OPERATION, ppropvar: ptr PROPVARIANT): HRESULT {.stdcall.}
-    GetValueType*: proc(self: ptr ICondition, ppszValueTypeName: ptr LPWSTR): HRESULT {.stdcall.}
-    GetValueNormalization*: proc(self: ptr ICondition, ppszNormalization: ptr LPWSTR): HRESULT {.stdcall.}
-    GetInputTerms*: proc(self: ptr ICondition, ppPropertyTerm: ptr ptr IRichChunk, ppOperationTerm: ptr ptr IRichChunk, ppValueTerm: ptr ptr IRichChunk): HRESULT {.stdcall.}
+    GetConditionType*:
+      proc(self: ptr ICondition, pNodeType: ptr CONDITION_TYPE): HRESULT {.stdcall.}
+    GetSubConditions*:
+      proc(self: ptr ICondition, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetComparisonInfo*: proc(
+      self: ptr ICondition,
+      ppszPropertyName: ptr LPWSTR,
+      pcop: ptr CONDITION_OPERATION,
+      ppropvar: ptr PROPVARIANT,
+    ): HRESULT {.stdcall.}
+    GetValueType*:
+      proc(self: ptr ICondition, ppszValueTypeName: ptr LPWSTR): HRESULT {.stdcall.}
+    GetValueNormalization*:
+      proc(self: ptr ICondition, ppszNormalization: ptr LPWSTR): HRESULT {.stdcall.}
+    GetInputTerms*: proc(
+      self: ptr ICondition,
+      ppPropertyTerm: ptr ptr IRichChunk,
+      ppOperationTerm: ptr ptr IRichChunk,
+      ppValueTerm: ptr ptr IRichChunk,
+    ): HRESULT {.stdcall.}
     Clone*: proc(self: ptr ICondition, ppc: ptr ptr ICondition): HRESULT {.stdcall.}
+
   ICondition2* {.pure.} = object
     lpVtbl*: ptr ICondition2Vtbl
+
   ICondition2Vtbl* {.pure, inheritable.} = object of IConditionVtbl
-    GetLocale*: proc(self: ptr ICondition2, ppszLocaleName: ptr LPWSTR): HRESULT {.stdcall.}
-    GetLeafConditionInfo*: proc(self: ptr ICondition2, ppropkey: ptr PROPERTYKEY, pcop: ptr CONDITION_OPERATION, ppropvar: ptr PROPVARIANT): HRESULT {.stdcall.}
+    GetLocale*:
+      proc(self: ptr ICondition2, ppszLocaleName: ptr LPWSTR): HRESULT {.stdcall.}
+    GetLeafConditionInfo*: proc(
+      self: ptr ICondition2,
+      ppropkey: ptr PROPERTYKEY,
+      pcop: ptr CONDITION_OPERATION,
+      ppropvar: ptr PROPVARIANT,
+    ): HRESULT {.stdcall.}
+
   IInitializeWithFile* {.pure.} = object
     lpVtbl*: ptr IInitializeWithFileVtbl
+
   IInitializeWithFileVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IInitializeWithFile, pszFilePath: LPCWSTR, grfMode: DWORD): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IInitializeWithFile, pszFilePath: LPCWSTR, grfMode: DWORD
+    ): HRESULT {.stdcall.}
+
   IInitializeWithStream* {.pure.} = object
     lpVtbl*: ptr IInitializeWithStreamVtbl
+
   IInitializeWithStreamVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IInitializeWithStream, pstream: ptr IStream, grfMode: DWORD): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IInitializeWithStream, pstream: ptr IStream, grfMode: DWORD
+    ): HRESULT {.stdcall.}
+
   INamedPropertyStore* {.pure.} = object
     lpVtbl*: ptr INamedPropertyStoreVtbl
+
   INamedPropertyStoreVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetNamedValue*: proc(self: ptr INamedPropertyStore, pszName: LPCWSTR, ppropvar: ptr PROPVARIANT): HRESULT {.stdcall.}
-    SetNamedValue*: proc(self: ptr INamedPropertyStore, pszName: LPCWSTR, propvar: REFPROPVARIANT): HRESULT {.stdcall.}
-    GetNameCount*: proc(self: ptr INamedPropertyStore, pdwCount: ptr DWORD): HRESULT {.stdcall.}
-    GetNameAt*: proc(self: ptr INamedPropertyStore, iProp: DWORD, pbstrName: ptr BSTR): HRESULT {.stdcall.}
+    GetNamedValue*: proc(
+      self: ptr INamedPropertyStore, pszName: LPCWSTR, ppropvar: ptr PROPVARIANT
+    ): HRESULT {.stdcall.}
+    SetNamedValue*: proc(
+      self: ptr INamedPropertyStore, pszName: LPCWSTR, propvar: REFPROPVARIANT
+    ): HRESULT {.stdcall.}
+    GetNameCount*:
+      proc(self: ptr INamedPropertyStore, pdwCount: ptr DWORD): HRESULT {.stdcall.}
+    GetNameAt*: proc(
+      self: ptr INamedPropertyStore, iProp: DWORD, pbstrName: ptr BSTR
+    ): HRESULT {.stdcall.}
+
   IObjectWithPropertyKey* {.pure.} = object
     lpVtbl*: ptr IObjectWithPropertyKeyVtbl
+
   IObjectWithPropertyKeyVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetPropertyKey*: proc(self: ptr IObjectWithPropertyKey, key: REFPROPERTYKEY): HRESULT {.stdcall.}
-    GetPropertyKey*: proc(self: ptr IObjectWithPropertyKey, pkey: ptr PROPERTYKEY): HRESULT {.stdcall.}
+    SetPropertyKey*:
+      proc(self: ptr IObjectWithPropertyKey, key: REFPROPERTYKEY): HRESULT {.stdcall.}
+    GetPropertyKey*:
+      proc(self: ptr IObjectWithPropertyKey, pkey: ptr PROPERTYKEY): HRESULT {.stdcall.}
+
   IPropertyChange* {.pure.} = object
     lpVtbl*: ptr IPropertyChangeVtbl
+
   IPropertyChangeVtbl* {.pure, inheritable.} = object of IObjectWithPropertyKeyVtbl
-    ApplyToPropVariant*: proc(self: ptr IPropertyChange, propvarIn: REFPROPVARIANT, ppropvarOut: ptr PROPVARIANT): HRESULT {.stdcall.}
+    ApplyToPropVariant*: proc(
+      self: ptr IPropertyChange, propvarIn: REFPROPVARIANT, ppropvarOut: ptr PROPVARIANT
+    ): HRESULT {.stdcall.}
+
   IPropertyChangeArray* {.pure.} = object
     lpVtbl*: ptr IPropertyChangeArrayVtbl
+
   IPropertyChangeArrayVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCount*: proc(self: ptr IPropertyChangeArray, pcOperations: ptr UINT): HRESULT {.stdcall.}
-    GetAt*: proc(self: ptr IPropertyChangeArray, iIndex: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    InsertAt*: proc(self: ptr IPropertyChangeArray, iIndex: UINT, ppropChange: ptr IPropertyChange): HRESULT {.stdcall.}
-    Append*: proc(self: ptr IPropertyChangeArray, ppropChange: ptr IPropertyChange): HRESULT {.stdcall.}
-    AppendOrReplace*: proc(self: ptr IPropertyChangeArray, ppropChange: ptr IPropertyChange): HRESULT {.stdcall.}
+    GetCount*:
+      proc(self: ptr IPropertyChangeArray, pcOperations: ptr UINT): HRESULT {.stdcall.}
+    GetAt*: proc(
+      self: ptr IPropertyChangeArray, iIndex: UINT, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    InsertAt*: proc(
+      self: ptr IPropertyChangeArray, iIndex: UINT, ppropChange: ptr IPropertyChange
+    ): HRESULT {.stdcall.}
+    Append*: proc(
+      self: ptr IPropertyChangeArray, ppropChange: ptr IPropertyChange
+    ): HRESULT {.stdcall.}
+    AppendOrReplace*: proc(
+      self: ptr IPropertyChangeArray, ppropChange: ptr IPropertyChange
+    ): HRESULT {.stdcall.}
     RemoveAt*: proc(self: ptr IPropertyChangeArray, iIndex: UINT): HRESULT {.stdcall.}
-    IsKeyInArray*: proc(self: ptr IPropertyChangeArray, key: REFPROPERTYKEY): HRESULT {.stdcall.}
+    IsKeyInArray*:
+      proc(self: ptr IPropertyChangeArray, key: REFPROPERTYKEY): HRESULT {.stdcall.}
+
   IPropertyStoreCapabilities* {.pure.} = object
     lpVtbl*: ptr IPropertyStoreCapabilitiesVtbl
+
   IPropertyStoreCapabilitiesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    IsPropertyWritable*: proc(self: ptr IPropertyStoreCapabilities, key: REFPROPERTYKEY): HRESULT {.stdcall.}
+    IsPropertyWritable*: proc(
+      self: ptr IPropertyStoreCapabilities, key: REFPROPERTYKEY
+    ): HRESULT {.stdcall.}
+
   IPropertyStoreCache* {.pure.} = object
     lpVtbl*: ptr IPropertyStoreCacheVtbl
+
   IPropertyStoreCacheVtbl* {.pure, inheritable.} = object of IPropertyStoreVtbl
-    GetState*: proc(self: ptr IPropertyStoreCache, key: REFPROPERTYKEY, pstate: ptr PSC_STATE): HRESULT {.stdcall.}
-    GetValueAndState*: proc(self: ptr IPropertyStoreCache, key: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT, pstate: ptr PSC_STATE): HRESULT {.stdcall.}
-    SetState*: proc(self: ptr IPropertyStoreCache, key: REFPROPERTYKEY, state: PSC_STATE): HRESULT {.stdcall.}
-    SetValueAndState*: proc(self: ptr IPropertyStoreCache, key: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT, state: PSC_STATE): HRESULT {.stdcall.}
+    GetState*: proc(
+      self: ptr IPropertyStoreCache, key: REFPROPERTYKEY, pstate: ptr PSC_STATE
+    ): HRESULT {.stdcall.}
+    GetValueAndState*: proc(
+      self: ptr IPropertyStoreCache,
+      key: REFPROPERTYKEY,
+      ppropvar: ptr PROPVARIANT,
+      pstate: ptr PSC_STATE,
+    ): HRESULT {.stdcall.}
+    SetState*: proc(
+      self: ptr IPropertyStoreCache, key: REFPROPERTYKEY, state: PSC_STATE
+    ): HRESULT {.stdcall.}
+    SetValueAndState*: proc(
+      self: ptr IPropertyStoreCache,
+      key: REFPROPERTYKEY,
+      ppropvar: ptr PROPVARIANT,
+      state: PSC_STATE,
+    ): HRESULT {.stdcall.}
+
   IPropertyEnumType* {.pure.} = object
     lpVtbl*: ptr IPropertyEnumTypeVtbl
+
   IPropertyEnumTypeVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetEnumType*: proc(self: ptr IPropertyEnumType, penumtype: ptr PROPENUMTYPE): HRESULT {.stdcall.}
-    GetValue*: proc(self: ptr IPropertyEnumType, ppropvar: ptr PROPVARIANT): HRESULT {.stdcall.}
-    GetRangeMinValue*: proc(self: ptr IPropertyEnumType, ppropvarMin: ptr PROPVARIANT): HRESULT {.stdcall.}
-    GetRangeSetValue*: proc(self: ptr IPropertyEnumType, ppropvarSet: ptr PROPVARIANT): HRESULT {.stdcall.}
-    GetDisplayText*: proc(self: ptr IPropertyEnumType, ppszDisplay: ptr LPWSTR): HRESULT {.stdcall.}
+    GetEnumType*: proc(
+      self: ptr IPropertyEnumType, penumtype: ptr PROPENUMTYPE
+    ): HRESULT {.stdcall.}
+    GetValue*:
+      proc(self: ptr IPropertyEnumType, ppropvar: ptr PROPVARIANT): HRESULT {.stdcall.}
+    GetRangeMinValue*: proc(
+      self: ptr IPropertyEnumType, ppropvarMin: ptr PROPVARIANT
+    ): HRESULT {.stdcall.}
+    GetRangeSetValue*: proc(
+      self: ptr IPropertyEnumType, ppropvarSet: ptr PROPVARIANT
+    ): HRESULT {.stdcall.}
+    GetDisplayText*:
+      proc(self: ptr IPropertyEnumType, ppszDisplay: ptr LPWSTR): HRESULT {.stdcall.}
+
   IPropertyEnumType2* {.pure.} = object
     lpVtbl*: ptr IPropertyEnumType2Vtbl
+
   IPropertyEnumType2Vtbl* {.pure, inheritable.} = object of IPropertyEnumTypeVtbl
-    GetImageReference*: proc(self: ptr IPropertyEnumType2, ppszImageRes: ptr LPWSTR): HRESULT {.stdcall.}
+    GetImageReference*:
+      proc(self: ptr IPropertyEnumType2, ppszImageRes: ptr LPWSTR): HRESULT {.stdcall.}
+
   IPropertyEnumTypeList* {.pure.} = object
     lpVtbl*: ptr IPropertyEnumTypeListVtbl
+
   IPropertyEnumTypeListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCount*: proc(self: ptr IPropertyEnumTypeList, pctypes: ptr UINT): HRESULT {.stdcall.}
-    GetAt*: proc(self: ptr IPropertyEnumTypeList, itype: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetConditionAt*: proc(self: ptr IPropertyEnumTypeList, nIndex: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    FindMatchingIndex*: proc(self: ptr IPropertyEnumTypeList, propvarCmp: REFPROPVARIANT, pnIndex: ptr UINT): HRESULT {.stdcall.}
+    GetCount*:
+      proc(self: ptr IPropertyEnumTypeList, pctypes: ptr UINT): HRESULT {.stdcall.}
+    GetAt*: proc(
+      self: ptr IPropertyEnumTypeList, itype: UINT, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    GetConditionAt*: proc(
+      self: ptr IPropertyEnumTypeList, nIndex: UINT, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    FindMatchingIndex*: proc(
+      self: ptr IPropertyEnumTypeList, propvarCmp: REFPROPVARIANT, pnIndex: ptr UINT
+    ): HRESULT {.stdcall.}
+
   IPropertyDescription* {.pure.} = object
     lpVtbl*: ptr IPropertyDescriptionVtbl
+
   IPropertyDescriptionVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetPropertyKey*: proc(self: ptr IPropertyDescription, pkey: ptr PROPERTYKEY): HRESULT {.stdcall.}
-    GetCanonicalName*: proc(self: ptr IPropertyDescription, ppszName: ptr LPWSTR): HRESULT {.stdcall.}
-    GetPropertyType*: proc(self: ptr IPropertyDescription, pvartype: ptr VARTYPE): HRESULT {.stdcall.}
-    GetDisplayName*: proc(self: ptr IPropertyDescription, ppszName: ptr LPWSTR): HRESULT {.stdcall.}
-    GetEditInvitation*: proc(self: ptr IPropertyDescription, ppszInvite: ptr LPWSTR): HRESULT {.stdcall.}
-    GetTypeFlags*: proc(self: ptr IPropertyDescription, mask: PROPDESC_TYPE_FLAGS, ppdtFlags: ptr PROPDESC_TYPE_FLAGS): HRESULT {.stdcall.}
-    GetViewFlags*: proc(self: ptr IPropertyDescription, ppdvFlags: ptr PROPDESC_VIEW_FLAGS): HRESULT {.stdcall.}
-    GetDefaultColumnWidth*: proc(self: ptr IPropertyDescription, pcxChars: ptr UINT): HRESULT {.stdcall.}
-    GetDisplayType*: proc(self: ptr IPropertyDescription, pdisplaytype: ptr PROPDESC_DISPLAYTYPE): HRESULT {.stdcall.}
-    GetColumnState*: proc(self: ptr IPropertyDescription, pcsFlags: ptr SHCOLSTATEF): HRESULT {.stdcall.}
-    GetGroupingRange*: proc(self: ptr IPropertyDescription, pgr: ptr PROPDESC_GROUPING_RANGE): HRESULT {.stdcall.}
-    GetRelativeDescriptionType*: proc(self: ptr IPropertyDescription, prdt: ptr PROPDESC_RELATIVEDESCRIPTION_TYPE): HRESULT {.stdcall.}
-    GetRelativeDescription*: proc(self: ptr IPropertyDescription, propvar1: REFPROPVARIANT, propvar2: REFPROPVARIANT, ppszDesc1: ptr LPWSTR, ppszDesc2: ptr LPWSTR): HRESULT {.stdcall.}
-    GetSortDescription*: proc(self: ptr IPropertyDescription, psd: ptr PROPDESC_SORTDESCRIPTION): HRESULT {.stdcall.}
-    GetSortDescriptionLabel*: proc(self: ptr IPropertyDescription, fDescending: WINBOOL, ppszDescription: ptr LPWSTR): HRESULT {.stdcall.}
-    GetAggregationType*: proc(self: ptr IPropertyDescription, paggtype: ptr PROPDESC_AGGREGATION_TYPE): HRESULT {.stdcall.}
-    GetConditionType*: proc(self: ptr IPropertyDescription, pcontype: ptr PROPDESC_CONDITION_TYPE, popDefault: ptr CONDITION_OPERATION): HRESULT {.stdcall.}
-    GetEnumTypeList*: proc(self: ptr IPropertyDescription, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    CoerceToCanonicalValue*: proc(self: ptr IPropertyDescription, ppropvar: ptr PROPVARIANT): HRESULT {.stdcall.}
-    FormatForDisplay*: proc(self: ptr IPropertyDescription, propvar: REFPROPVARIANT, pdfFlags: PROPDESC_FORMAT_FLAGS, ppszDisplay: ptr LPWSTR): HRESULT {.stdcall.}
-    IsValueCanonical*: proc(self: ptr IPropertyDescription, propvar: REFPROPVARIANT): HRESULT {.stdcall.}
+    GetPropertyKey*:
+      proc(self: ptr IPropertyDescription, pkey: ptr PROPERTYKEY): HRESULT {.stdcall.}
+    GetCanonicalName*:
+      proc(self: ptr IPropertyDescription, ppszName: ptr LPWSTR): HRESULT {.stdcall.}
+    GetPropertyType*:
+      proc(self: ptr IPropertyDescription, pvartype: ptr VARTYPE): HRESULT {.stdcall.}
+    GetDisplayName*:
+      proc(self: ptr IPropertyDescription, ppszName: ptr LPWSTR): HRESULT {.stdcall.}
+    GetEditInvitation*:
+      proc(self: ptr IPropertyDescription, ppszInvite: ptr LPWSTR): HRESULT {.stdcall.}
+    GetTypeFlags*: proc(
+      self: ptr IPropertyDescription,
+      mask: PROPDESC_TYPE_FLAGS,
+      ppdtFlags: ptr PROPDESC_TYPE_FLAGS,
+    ): HRESULT {.stdcall.}
+    GetViewFlags*: proc(
+      self: ptr IPropertyDescription, ppdvFlags: ptr PROPDESC_VIEW_FLAGS
+    ): HRESULT {.stdcall.}
+    GetDefaultColumnWidth*:
+      proc(self: ptr IPropertyDescription, pcxChars: ptr UINT): HRESULT {.stdcall.}
+    GetDisplayType*: proc(
+      self: ptr IPropertyDescription, pdisplaytype: ptr PROPDESC_DISPLAYTYPE
+    ): HRESULT {.stdcall.}
+    GetColumnState*: proc(
+      self: ptr IPropertyDescription, pcsFlags: ptr SHCOLSTATEF
+    ): HRESULT {.stdcall.}
+    GetGroupingRange*: proc(
+      self: ptr IPropertyDescription, pgr: ptr PROPDESC_GROUPING_RANGE
+    ): HRESULT {.stdcall.}
+    GetRelativeDescriptionType*: proc(
+      self: ptr IPropertyDescription, prdt: ptr PROPDESC_RELATIVEDESCRIPTION_TYPE
+    ): HRESULT {.stdcall.}
+    GetRelativeDescription*: proc(
+      self: ptr IPropertyDescription,
+      propvar1: REFPROPVARIANT,
+      propvar2: REFPROPVARIANT,
+      ppszDesc1: ptr LPWSTR,
+      ppszDesc2: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+    GetSortDescription*: proc(
+      self: ptr IPropertyDescription, psd: ptr PROPDESC_SORTDESCRIPTION
+    ): HRESULT {.stdcall.}
+    GetSortDescriptionLabel*: proc(
+      self: ptr IPropertyDescription, fDescending: WINBOOL, ppszDescription: ptr LPWSTR
+    ): HRESULT {.stdcall.}
+    GetAggregationType*: proc(
+      self: ptr IPropertyDescription, paggtype: ptr PROPDESC_AGGREGATION_TYPE
+    ): HRESULT {.stdcall.}
+    GetConditionType*: proc(
+      self: ptr IPropertyDescription,
+      pcontype: ptr PROPDESC_CONDITION_TYPE,
+      popDefault: ptr CONDITION_OPERATION,
+    ): HRESULT {.stdcall.}
+    GetEnumTypeList*: proc(
+      self: ptr IPropertyDescription, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    CoerceToCanonicalValue*: proc(
+      self: ptr IPropertyDescription, ppropvar: ptr PROPVARIANT
+    ): HRESULT {.stdcall.}
+    FormatForDisplay*: proc(
+      self: ptr IPropertyDescription,
+      propvar: REFPROPVARIANT,
+      pdfFlags: PROPDESC_FORMAT_FLAGS,
+      ppszDisplay: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+    IsValueCanonical*:
+      proc(self: ptr IPropertyDescription, propvar: REFPROPVARIANT): HRESULT {.stdcall.}
+
   IPropertyDescription2* {.pure.} = object
     lpVtbl*: ptr IPropertyDescription2Vtbl
+
   IPropertyDescription2Vtbl* {.pure, inheritable.} = object of IPropertyDescriptionVtbl
-    GetImageReferenceForValue*: proc(self: ptr IPropertyDescription2, propvar: REFPROPVARIANT, ppszImageRes: ptr LPWSTR): HRESULT {.stdcall.}
+    GetImageReferenceForValue*: proc(
+      self: ptr IPropertyDescription2, propvar: REFPROPVARIANT, ppszImageRes: ptr LPWSTR
+    ): HRESULT {.stdcall.}
+
   IPropertyDescriptionAliasInfo* {.pure.} = object
     lpVtbl*: ptr IPropertyDescriptionAliasInfoVtbl
+
   IPropertyDescriptionAliasInfoVtbl* {.pure, inheritable.} = object of IPropertyDescriptionVtbl
-    GetSortByAlias*: proc(self: ptr IPropertyDescriptionAliasInfo, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetAdditionalSortByAliases*: proc(self: ptr IPropertyDescriptionAliasInfo, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetSortByAlias*: proc(
+      self: ptr IPropertyDescriptionAliasInfo, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    GetAdditionalSortByAliases*: proc(
+      self: ptr IPropertyDescriptionAliasInfo, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+
   IPropertyDescriptionSearchInfo* {.pure.} = object
     lpVtbl*: ptr IPropertyDescriptionSearchInfoVtbl
+
   IPropertyDescriptionSearchInfoVtbl* {.pure, inheritable.} = object of IPropertyDescriptionVtbl
-    GetSearchInfoFlags*: proc(self: ptr IPropertyDescriptionSearchInfo, ppdsiFlags: ptr PROPDESC_SEARCHINFO_FLAGS): HRESULT {.stdcall.}
-    GetColumnIndexType*: proc(self: ptr IPropertyDescriptionSearchInfo, ppdciType: ptr PROPDESC_COLUMNINDEX_TYPE): HRESULT {.stdcall.}
-    GetProjectionString*: proc(self: ptr IPropertyDescriptionSearchInfo, ppszProjection: ptr LPWSTR): HRESULT {.stdcall.}
-    GetMaxSize*: proc(self: ptr IPropertyDescriptionSearchInfo, pcbMaxSize: ptr UINT): HRESULT {.stdcall.}
+    GetSearchInfoFlags*: proc(
+      self: ptr IPropertyDescriptionSearchInfo,
+      ppdsiFlags: ptr PROPDESC_SEARCHINFO_FLAGS,
+    ): HRESULT {.stdcall.}
+    GetColumnIndexType*: proc(
+      self: ptr IPropertyDescriptionSearchInfo, ppdciType: ptr PROPDESC_COLUMNINDEX_TYPE
+    ): HRESULT {.stdcall.}
+    GetProjectionString*: proc(
+      self: ptr IPropertyDescriptionSearchInfo, ppszProjection: ptr LPWSTR
+    ): HRESULT {.stdcall.}
+    GetMaxSize*: proc(
+      self: ptr IPropertyDescriptionSearchInfo, pcbMaxSize: ptr UINT
+    ): HRESULT {.stdcall.}
+
   IPropertyDescriptionRelatedPropertyInfo* {.pure.} = object
     lpVtbl*: ptr IPropertyDescriptionRelatedPropertyInfoVtbl
+
   IPropertyDescriptionRelatedPropertyInfoVtbl* {.pure, inheritable.} = object of IPropertyDescriptionVtbl
-    GetRelatedProperty*: proc(self: ptr IPropertyDescriptionRelatedPropertyInfo, pszRelationshipName: LPCWSTR, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetRelatedProperty*: proc(
+      self: ptr IPropertyDescriptionRelatedPropertyInfo,
+      pszRelationshipName: LPCWSTR,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+
   IPropertySystem* {.pure.} = object
     lpVtbl*: ptr IPropertySystemVtbl
+
   IPropertySystemVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetPropertyDescription*: proc(self: ptr IPropertySystem, propkey: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetPropertyDescriptionByName*: proc(self: ptr IPropertySystem, pszCanonicalName: LPCWSTR, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetPropertyDescriptionListFromString*: proc(self: ptr IPropertySystem, pszPropList: LPCWSTR, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    EnumeratePropertyDescriptions*: proc(self: ptr IPropertySystem, filterOn: PROPDESC_ENUMFILTER, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    FormatForDisplay*: proc(self: ptr IPropertySystem, key: REFPROPERTYKEY, propvar: REFPROPVARIANT, pdff: PROPDESC_FORMAT_FLAGS, pszText: LPWSTR, cchText: DWORD): HRESULT {.stdcall.}
-    FormatForDisplayAlloc*: proc(self: ptr IPropertySystem, key: REFPROPERTYKEY, propvar: REFPROPVARIANT, pdff: PROPDESC_FORMAT_FLAGS, ppszDisplay: ptr LPWSTR): HRESULT {.stdcall.}
-    RegisterPropertySchema*: proc(self: ptr IPropertySystem, pszPath: LPCWSTR): HRESULT {.stdcall.}
-    UnregisterPropertySchema*: proc(self: ptr IPropertySystem, pszPath: LPCWSTR): HRESULT {.stdcall.}
+    GetPropertyDescription*: proc(
+      self: ptr IPropertySystem, propkey: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    GetPropertyDescriptionByName*: proc(
+      self: ptr IPropertySystem,
+      pszCanonicalName: LPCWSTR,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetPropertyDescriptionListFromString*: proc(
+      self: ptr IPropertySystem, pszPropList: LPCWSTR, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    EnumeratePropertyDescriptions*: proc(
+      self: ptr IPropertySystem,
+      filterOn: PROPDESC_ENUMFILTER,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    FormatForDisplay*: proc(
+      self: ptr IPropertySystem,
+      key: REFPROPERTYKEY,
+      propvar: REFPROPVARIANT,
+      pdff: PROPDESC_FORMAT_FLAGS,
+      pszText: LPWSTR,
+      cchText: DWORD,
+    ): HRESULT {.stdcall.}
+    FormatForDisplayAlloc*: proc(
+      self: ptr IPropertySystem,
+      key: REFPROPERTYKEY,
+      propvar: REFPROPVARIANT,
+      pdff: PROPDESC_FORMAT_FLAGS,
+      ppszDisplay: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+    RegisterPropertySchema*:
+      proc(self: ptr IPropertySystem, pszPath: LPCWSTR): HRESULT {.stdcall.}
+    UnregisterPropertySchema*:
+      proc(self: ptr IPropertySystem, pszPath: LPCWSTR): HRESULT {.stdcall.}
     RefreshPropertySchema*: proc(self: ptr IPropertySystem): HRESULT {.stdcall.}
+
   IPropertyDescriptionList* {.pure.} = object
     lpVtbl*: ptr IPropertyDescriptionListVtbl
+
   IPropertyDescriptionListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCount*: proc(self: ptr IPropertyDescriptionList, pcElem: ptr UINT): HRESULT {.stdcall.}
-    GetAt*: proc(self: ptr IPropertyDescriptionList, iElem: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetCount*:
+      proc(self: ptr IPropertyDescriptionList, pcElem: ptr UINT): HRESULT {.stdcall.}
+    GetAt*: proc(
+      self: ptr IPropertyDescriptionList, iElem: UINT, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+
   IPropertyStoreFactory* {.pure.} = object
     lpVtbl*: ptr IPropertyStoreFactoryVtbl
+
   IPropertyStoreFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetPropertyStore*: proc(self: ptr IPropertyStoreFactory, flags: GETPROPERTYSTOREFLAGS, pUnkFactory: ptr IUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetPropertyStoreForKeys*: proc(self: ptr IPropertyStoreFactory, rgKeys: ptr PROPERTYKEY, cKeys: UINT, flags: GETPROPERTYSTOREFLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetPropertyStore*: proc(
+      self: ptr IPropertyStoreFactory,
+      flags: GETPROPERTYSTOREFLAGS,
+      pUnkFactory: ptr IUnknown,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetPropertyStoreForKeys*: proc(
+      self: ptr IPropertyStoreFactory,
+      rgKeys: ptr PROPERTYKEY,
+      cKeys: UINT,
+      flags: GETPROPERTYSTOREFLAGS,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+
   IDelayedPropertyStoreFactory* {.pure.} = object
     lpVtbl*: ptr IDelayedPropertyStoreFactoryVtbl
+
   IDelayedPropertyStoreFactoryVtbl* {.pure, inheritable.} = object of IPropertyStoreFactoryVtbl
-    GetDelayedPropertyStore*: proc(self: ptr IDelayedPropertyStoreFactory, flags: GETPROPERTYSTOREFLAGS, dwStoreId: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetDelayedPropertyStore*: proc(
+      self: ptr IDelayedPropertyStoreFactory,
+      flags: GETPROPERTYSTOREFLAGS,
+      dwStoreId: DWORD,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+
   IPersistSerializedPropStorage* {.pure.} = object
     lpVtbl*: ptr IPersistSerializedPropStorageVtbl
+
   IPersistSerializedPropStorageVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetFlags*: proc(self: ptr IPersistSerializedPropStorage, flags: PERSIST_SPROPSTORE_FLAGS): HRESULT {.stdcall.}
-    SetPropertyStorage*: proc(self: ptr IPersistSerializedPropStorage, psps: PCUSERIALIZEDPROPSTORAGE, cb: DWORD): HRESULT {.stdcall.}
-    GetPropertyStorage*: proc(self: ptr IPersistSerializedPropStorage, ppsps: ptr ptr SERIALIZEDPROPSTORAGE, pcb: ptr DWORD): HRESULT {.stdcall.}
+    SetFlags*: proc(
+      self: ptr IPersistSerializedPropStorage, flags: PERSIST_SPROPSTORE_FLAGS
+    ): HRESULT {.stdcall.}
+    SetPropertyStorage*: proc(
+      self: ptr IPersistSerializedPropStorage, psps: PCUSERIALIZEDPROPSTORAGE, cb: DWORD
+    ): HRESULT {.stdcall.}
+    GetPropertyStorage*: proc(
+      self: ptr IPersistSerializedPropStorage,
+      ppsps: ptr ptr SERIALIZEDPROPSTORAGE,
+      pcb: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   IPersistSerializedPropStorage2* {.pure.} = object
     lpVtbl*: ptr IPersistSerializedPropStorage2Vtbl
+
   IPersistSerializedPropStorage2Vtbl* {.pure, inheritable.} = object of IPersistSerializedPropStorageVtbl
-    GetPropertyStorageSize*: proc(self: ptr IPersistSerializedPropStorage2, pcb: ptr DWORD): HRESULT {.stdcall.}
-    GetPropertyStorageBuffer*: proc(self: ptr IPersistSerializedPropStorage2, psps: ptr SERIALIZEDPROPSTORAGE, cb: DWORD, pcbWritten: ptr DWORD): HRESULT {.stdcall.}
+    GetPropertyStorageSize*: proc(
+      self: ptr IPersistSerializedPropStorage2, pcb: ptr DWORD
+    ): HRESULT {.stdcall.}
+    GetPropertyStorageBuffer*: proc(
+      self: ptr IPersistSerializedPropStorage2,
+      psps: ptr SERIALIZEDPROPSTORAGE,
+      cb: DWORD,
+      pcbWritten: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   IPropertySystemChangeNotify* {.pure.} = object
     lpVtbl*: ptr IPropertySystemChangeNotifyVtbl
+
   IPropertySystemChangeNotifyVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SchemaRefreshed*: proc(self: ptr IPropertySystemChangeNotify): HRESULT {.stdcall.}
+
   ICreateObject* {.pure.} = object
     lpVtbl*: ptr ICreateObjectVtbl
+
   ICreateObjectVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateObject*: proc(self: ptr ICreateObject, clsid: REFCLSID, pUnkOuter: ptr IUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-proc SysAllocString*(P1: ptr OLECHAR): BSTR {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SysReAllocString*(P1: ptr BSTR, P2: ptr OLECHAR): INT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SysAllocStringLen*(P1: ptr OLECHAR, P2: UINT): BSTR {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SysReAllocStringLen*(P1: ptr BSTR, P2: ptr OLECHAR, P3: UINT): INT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+    CreateObject*: proc(
+      self: ptr ICreateObject,
+      clsid: REFCLSID,
+      pUnkOuter: ptr IUnknown,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+
+proc SysAllocString*(
+  P1: ptr OLECHAR
+): BSTR {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SysReAllocString*(
+  P1: ptr BSTR, P2: ptr OLECHAR
+): INT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SysAllocStringLen*(
+  P1: ptr OLECHAR, P2: UINT
+): BSTR {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SysReAllocStringLen*(
+  P1: ptr BSTR, P2: ptr OLECHAR, P3: UINT
+): INT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
 proc SysFreeString*(P1: BSTR): void {.winapi, stdcall, dynlib: "oleaut32", importc.}
 proc SysStringLen*(P1: BSTR): UINT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SysStringByteLen*(bstr: BSTR): UINT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SysAllocStringByteLen*(psz: LPCSTR, len: UINT): BSTR {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc DosDateTimeToVariantTime*(wDosDate: USHORT, wDosTime: USHORT, pvtime: ptr DOUBLE): INT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VariantTimeToDosDateTime*(vtime: DOUBLE, pwDosDate: ptr USHORT, pwDosTime: ptr USHORT): INT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SystemTimeToVariantTime*(lpSystemTime: LPSYSTEMTIME, pvtime: ptr DOUBLE): INT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VariantTimeToSystemTime*(vtime: DOUBLE, lpSystemTime: LPSYSTEMTIME): INT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayAllocDescriptor*(cDims: UINT, ppsaOut: ptr ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayAllocDescriptorEx*(vt: VARTYPE, cDims: UINT, ppsaOut: ptr ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayAllocData*(psa: ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayCreate*(vt: VARTYPE, cDims: UINT, rgsabound: ptr SAFEARRAYBOUND): ptr SAFEARRAY {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayCreateEx*(vt: VARTYPE, cDims: UINT, rgsabound: ptr SAFEARRAYBOUND, pvExtra: PVOID): ptr SAFEARRAY {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayCopyData*(psaSource: ptr SAFEARRAY, psaTarget: ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayDestroyDescriptor*(psa: ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayDestroyData*(psa: ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayDestroy*(psa: ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayRedim*(psa: ptr SAFEARRAY, psaboundNew: ptr SAFEARRAYBOUND): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayGetDim*(psa: ptr SAFEARRAY): UINT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayGetElemsize*(psa: ptr SAFEARRAY): UINT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayGetUBound*(psa: ptr SAFEARRAY, nDim: UINT, plUbound: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayGetLBound*(psa: ptr SAFEARRAY, nDim: UINT, plLbound: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayLock*(psa: ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayUnlock*(psa: ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayAccessData*(psa: ptr SAFEARRAY, ppvData: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayUnaccessData*(psa: ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayGetElement*(psa: ptr SAFEARRAY, rgIndices: ptr LONG, pv: pointer): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayPutElement*(psa: ptr SAFEARRAY, rgIndices: ptr LONG, pv: pointer): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayCopy*(psa: ptr SAFEARRAY, ppsaOut: ptr ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayPtrOfIndex*(psa: ptr SAFEARRAY, rgIndices: ptr LONG, ppvData: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArraySetRecordInfo*(psa: ptr SAFEARRAY, prinfo: ptr IRecordInfo): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayGetRecordInfo*(psa: ptr SAFEARRAY, prinfo: ptr ptr IRecordInfo): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArraySetIID*(psa: ptr SAFEARRAY, guid: REFGUID): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayGetIID*(psa: ptr SAFEARRAY, pguid: ptr GUID): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayGetVartype*(psa: ptr SAFEARRAY, pvt: ptr VARTYPE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayCreateVector*(vt: VARTYPE, lLbound: LONG, cElements: ULONG): ptr SAFEARRAY {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SafeArrayCreateVectorEx*(vt: VARTYPE, lLbound: LONG, cElements: ULONG, pvExtra: PVOID): ptr SAFEARRAY {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VariantInit*(pvarg: ptr VARIANTARG): void {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VariantClear*(pvarg: ptr VARIANTARG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VariantCopy*(pvargDest: ptr VARIANTARG, pvargSrc: ptr VARIANTARG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VariantCopyInd*(pvarDest: ptr VARIANT, pvargSrc: ptr VARIANTARG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VariantChangeType*(pvargDest: ptr VARIANTARG, pvarSrc: ptr VARIANTARG, wFlags: USHORT, vt: VARTYPE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VariantChangeTypeEx*(pvargDest: ptr VARIANTARG, pvarSrc: ptr VARIANTARG, lcid: LCID, wFlags: USHORT, vt: VARTYPE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VectorFromBstr*(bstr: BSTR, ppsa: ptr ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc BstrFromVector*(psa: ptr SAFEARRAY, pbstr: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromI2*(sIn: SHORT, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromI4*(lIn: LONG, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromI8*(i64In: LONG64, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromR4*(fltIn: FLOAT, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromR8*(dblIn: DOUBLE, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromCy*(cyIn: CY, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromDate*(dateIn: DATE, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromDisp*(pdispIn: ptr IDispatch, lcid: LCID, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromBool*(boolIn: VARIANT_BOOL, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromI1*(cIn: CHAR, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromUI2*(uiIn: USHORT, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromUI4*(ulIn: ULONG, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromUI8*(ui64In: ULONG64, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromDec*(pdecIn: ptr DECIMAL, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromUI1*(bIn: BYTE, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromI4*(lIn: LONG, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromI8*(i64In: LONG64, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromR4*(fltIn: FLOAT, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromR8*(dblIn: DOUBLE, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromCy*(cyIn: CY, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromDate*(dateIn: DATE, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromDisp*(pdispIn: ptr IDispatch, lcid: LCID, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromBool*(boolIn: VARIANT_BOOL, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromI1*(cIn: CHAR, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromUI2*(uiIn: USHORT, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromUI4*(ulIn: ULONG, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromUI8*(ui64In: ULONG64, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI2FromDec*(pdecIn: ptr DECIMAL, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromUI1*(bIn: BYTE, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromI2*(sIn: SHORT, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromI8*(i64In: LONG64, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromR4*(fltIn: FLOAT, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromR8*(dblIn: DOUBLE, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromCy*(cyIn: CY, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromDate*(dateIn: DATE, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromDisp*(pdispIn: ptr IDispatch, lcid: LCID, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromBool*(boolIn: VARIANT_BOOL, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromI1*(cIn: CHAR, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromUI2*(uiIn: USHORT, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromUI4*(ulIn: ULONG, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromUI8*(ui64In: ULONG64, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI4FromDec*(pdecIn: ptr DECIMAL, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI8FromUI1*(bIn: BYTE, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI8FromI2*(sIn: SHORT, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI8FromR4*(fltIn: FLOAT, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI8FromR8*(dblIn: DOUBLE, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI8FromCy*(cyIn: CY, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI8FromDate*(dateIn: DATE, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI8FromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: int32, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI8FromDisp*(pdispIn: ptr IDispatch, lcid: LCID, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI8FromBool*(boolIn: VARIANT_BOOL, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI8FromI1*(cIn: CHAR, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI8FromUI2*(uiIn: USHORT, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI8FromUI4*(ulIn: ULONG, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI8FromUI8*(ui64In: ULONG64, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI8FromDec*(pdecIn: ptr DECIMAL, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromUI1*(bIn: BYTE, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromI2*(sIn: SHORT, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromI4*(lIn: LONG, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromI8*(i64In: LONG64, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromR8*(dblIn: DOUBLE, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromCy*(cyIn: CY, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromDate*(dateIn: DATE, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromDisp*(pdispIn: ptr IDispatch, lcid: LCID, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromBool*(boolIn: VARIANT_BOOL, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromI1*(cIn: CHAR, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromUI2*(uiIn: USHORT, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromUI4*(ulIn: ULONG, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromUI8*(ui64In: ULONG64, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4FromDec*(pdecIn: ptr DECIMAL, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromUI1*(bIn: BYTE, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromI2*(sIn: SHORT, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromI4*(lIn: LONG, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromI8*(i64In: LONG64, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromR4*(fltIn: FLOAT, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromCy*(cyIn: CY, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromDate*(dateIn: DATE, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromDisp*(pdispIn: ptr IDispatch, lcid: LCID, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromBool*(boolIn: VARIANT_BOOL, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromI1*(cIn: CHAR, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromUI2*(uiIn: USHORT, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromUI4*(ulIn: ULONG, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromUI8*(ui64In: ULONG64, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8FromDec*(pdecIn: ptr DECIMAL, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromUI1*(bIn: BYTE, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromI2*(sIn: SHORT, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromI4*(lIn: LONG, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromI8*(i64In: LONG64, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromR4*(fltIn: FLOAT, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromR8*(dblIn: DOUBLE, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromCy*(cyIn: CY, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromDisp*(pdispIn: ptr IDispatch, lcid: LCID, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromBool*(boolIn: VARIANT_BOOL, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromI1*(cIn: CHAR, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromUI2*(uiIn: USHORT, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromUI4*(ulIn: ULONG, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromUI8*(ui64In: ULONG64, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromDec*(pdecIn: ptr DECIMAL, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromUI1*(bIn: BYTE, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromI2*(sIn: SHORT, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromI4*(lIn: LONG, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromI8*(i64In: LONG64, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromR4*(fltIn: FLOAT, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromR8*(dblIn: DOUBLE, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromDate*(dateIn: DATE, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromDisp*(pdispIn: ptr IDispatch, lcid: LCID, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromBool*(boolIn: VARIANT_BOOL, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromI1*(cIn: CHAR, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromUI2*(uiIn: USHORT, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromUI4*(ulIn: ULONG, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromUI8*(ui64In: ULONG64, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFromDec*(pdecIn: ptr DECIMAL, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromUI1*(bVal: BYTE, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromI2*(iVal: SHORT, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromI4*(lIn: LONG, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromI8*(i64In: LONG64, lcid: LCID, dwFlags: int32, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromR4*(fltIn: FLOAT, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromR8*(dblIn: DOUBLE, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromCy*(cyIn: CY, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromDate*(dateIn: DATE, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromDisp*(pdispIn: ptr IDispatch, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromBool*(boolIn: VARIANT_BOOL, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromI1*(cIn: CHAR, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromUI2*(uiIn: USHORT, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromUI4*(ulIn: ULONG, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromUI8*(ui64In: ULONG64, lcid: LCID, dwFlags: int32, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrFromDec*(pdecIn: ptr DECIMAL, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromUI1*(bIn: BYTE, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromI2*(sIn: SHORT, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromI4*(lIn: LONG, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromI8*(i64In: LONG64, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromR4*(fltIn: FLOAT, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromR8*(dblIn: DOUBLE, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromDate*(dateIn: DATE, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromCy*(cyIn: CY, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromDisp*(pdispIn: ptr IDispatch, lcid: LCID, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromI1*(cIn: CHAR, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromUI2*(uiIn: USHORT, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromUI4*(ulIn: ULONG, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromUI8*(i64In: ULONG64, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBoolFromDec*(pdecIn: ptr DECIMAL, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromUI1*(bIn: BYTE, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromI2*(uiIn: SHORT, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromI4*(lIn: LONG, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromI8*(i64In: LONG64, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromR4*(fltIn: FLOAT, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromR8*(dblIn: DOUBLE, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromDate*(dateIn: DATE, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromCy*(cyIn: CY, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromDisp*(pdispIn: ptr IDispatch, lcid: LCID, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromBool*(boolIn: VARIANT_BOOL, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromUI2*(uiIn: USHORT, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromUI4*(ulIn: ULONG, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromUI8*(i64In: ULONG64, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarI1FromDec*(pdecIn: ptr DECIMAL, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromUI1*(bIn: BYTE, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromI2*(uiIn: SHORT, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromI4*(lIn: LONG, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromI8*(i64In: LONG64, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromR4*(fltIn: FLOAT, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromR8*(dblIn: DOUBLE, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromDate*(dateIn: DATE, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromCy*(cyIn: CY, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromDisp*(pdispIn: ptr IDispatch, lcid: LCID, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromBool*(boolIn: VARIANT_BOOL, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromI1*(cIn: CHAR, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromUI4*(ulIn: ULONG, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromUI8*(i64In: ULONG64, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI2FromDec*(pdecIn: ptr DECIMAL, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromUI1*(bIn: BYTE, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromI2*(uiIn: SHORT, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromI4*(lIn: LONG, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromI8*(i64In: LONG64, plOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromR4*(fltIn: FLOAT, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromR8*(dblIn: DOUBLE, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromDate*(dateIn: DATE, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromCy*(cyIn: CY, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromDisp*(pdispIn: ptr IDispatch, lcid: LCID, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromBool*(boolIn: VARIANT_BOOL, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromI1*(cIn: CHAR, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromUI2*(uiIn: USHORT, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromUI8*(ui64In: ULONG64, plOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI4FromDec*(pdecIn: ptr DECIMAL, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI8FromUI1*(bIn: BYTE, pi64Out: ptr ULONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI8FromI2*(sIn: SHORT, pi64Out: ptr ULONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI8FromI8*(ui64In: LONG64, pi64Out: ptr ULONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI8FromR4*(fltIn: FLOAT, pi64Out: ptr ULONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI8FromR8*(dblIn: DOUBLE, pi64Out: ptr ULONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI8FromCy*(cyIn: CY, pi64Out: ptr ULONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI8FromDate*(dateIn: DATE, pi64Out: ptr ULONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI8FromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: int32, pi64Out: ptr ULONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI8FromDisp*(pdispIn: ptr IDispatch, lcid: LCID, pi64Out: ptr ULONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI8FromBool*(boolIn: VARIANT_BOOL, pi64Out: ptr ULONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI8FromI1*(cIn: CHAR, pi64Out: ptr ULONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI8FromUI2*(uiIn: USHORT, pi64Out: ptr ULONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI8FromUI4*(ulIn: ULONG, pi64Out: ptr ULONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI8FromDec*(pdecIn: ptr DECIMAL, pi64Out: ptr ULONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromUI1*(bIn: BYTE, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromI2*(uiIn: SHORT, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromI4*(lIn: LONG, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromI8*(i64In: LONG64, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromR4*(fltIn: FLOAT, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromR8*(dblIn: DOUBLE, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromDate*(dateIn: DATE, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromCy*(cyIn: CY, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromDisp*(pdispIn: ptr IDispatch, lcid: LCID, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromBool*(boolIn: VARIANT_BOOL, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromI1*(cIn: CHAR, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromUI2*(uiIn: USHORT, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromUI4*(ulIn: ULONG, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFromUI8*(ui64In: ULONG64, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUI1FromInt*(lIn: LONG, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI1FromI4".}
-proc VarUI1FromUint*(ulIn: ULONG, pbOut: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI1FromUI4".}
-proc VarI2FromInt*(lIn: LONG, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI2FromI4".}
-proc VarI2FromUint*(ulIn: ULONG, psOut: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI2FromUI4".}
-proc VarI4FromUint*(ulIn: ULONG, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromUI4".}
-proc VarI8FromUint*(ulIn: ULONG, pi64Out: ptr LONG64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI8FromUI4".}
-proc VarR4FromInt*(lIn: LONG, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarR4FromI4".}
-proc VarR4FromUint*(ulIn: ULONG, pfltOut: ptr FLOAT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarR4FromUI4".}
-proc VarR8FromInt*(lIn: LONG, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarR8FromI4".}
-proc VarR8FromUint*(ulIn: ULONG, pdblOut: ptr DOUBLE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarR8FromUI4".}
-proc VarDateFromInt*(lIn: LONG, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarDateFromI4".}
-proc VarDateFromUint*(ulIn: ULONG, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarDateFromUI4".}
-proc VarCyFromInt*(lIn: LONG, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarCyFromI4".}
-proc VarCyFromUint*(ulIn: ULONG, pcyOut: ptr CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarCyFromUI4".}
-proc VarBstrFromInt*(lIn: LONG, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarBstrFromI4".}
-proc VarBstrFromUint*(ulIn: ULONG, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarBstrFromUI4".}
-proc VarBoolFromInt*(lIn: LONG, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarBoolFromI4".}
-proc VarBoolFromUint*(ulIn: ULONG, pboolOut: ptr VARIANT_BOOL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarBoolFromUI4".}
-proc VarI1FromInt*(lIn: LONG, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI1FromI4".}
-proc VarI1FromUint*(ulIn: ULONG, pcOut: ptr CHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI1FromUI4".}
-proc VarUI2FromInt*(lIn: LONG, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI2FromI4".}
-proc VarUI2FromUint*(ulIn: ULONG, puiOut: ptr USHORT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI2FromUI4".}
-proc VarUI4FromInt*(lIn: LONG, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromI4".}
-proc VarDecFromInt*(lIn: LONG, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarDecFromI4".}
-proc VarDecFromUint*(ulIn: ULONG, pdecOut: ptr DECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarDecFromUI4".}
-proc VarIntFromUI1*(bIn: BYTE, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromUI1".}
-proc VarIntFromI2*(sIn: SHORT, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromI2".}
-proc VarIntFromI8*(i64In: LONG64, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromI8".}
-proc VarIntFromR4*(fltIn: FLOAT, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromR4".}
-proc VarIntFromR8*(dblIn: DOUBLE, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromR8".}
-proc VarIntFromDate*(dateIn: DATE, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromDate".}
-proc VarIntFromCy*(cyIn: CY, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromCy".}
-proc VarIntFromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromStr".}
-proc VarIntFromDisp*(pdispIn: ptr IDispatch, lcid: LCID, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromDisp".}
-proc VarIntFromBool*(boolIn: VARIANT_BOOL, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromBool".}
-proc VarIntFromI1*(cIn: CHAR, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromI1".}
-proc VarIntFromUI2*(uiIn: USHORT, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromUI2".}
-proc VarIntFromUI4*(ulIn: ULONG, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromUI4".}
-proc VarIntFromUI8*(ui64In: ULONG64, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromUI8".}
-proc VarIntFromDec*(pdecIn: ptr DECIMAL, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromDec".}
-proc VarIntFromUint*(ulIn: ULONG, plOut: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromUI4".}
-proc VarUintFromUI1*(bIn: BYTE, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromUI1".}
-proc VarUintFromI2*(uiIn: SHORT, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromI2".}
-proc VarUintFromI4*(lIn: LONG, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromI4".}
-proc VarUintFromI8*(i64In: LONG64, plOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromI8".}
-proc VarUintFromR4*(fltIn: FLOAT, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromR4".}
-proc VarUintFromR8*(dblIn: DOUBLE, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromR8".}
-proc VarUintFromDate*(dateIn: DATE, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromDate".}
-proc VarUintFromCy*(cyIn: CY, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromCy".}
-proc VarUintFromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromStr".}
-proc VarUintFromDisp*(pdispIn: ptr IDispatch, lcid: LCID, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromDisp".}
-proc VarUintFromBool*(boolIn: VARIANT_BOOL, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromBool".}
-proc VarUintFromI1*(cIn: CHAR, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromI1".}
-proc VarUintFromUI2*(uiIn: USHORT, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromUI2".}
-proc VarUintFromUI8*(ui64In: ULONG64, plOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromUI8".}
-proc VarUintFromDec*(pdecIn: ptr DECIMAL, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromDec".}
-proc VarUintFromInt*(lIn: LONG, pulOut: ptr ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromI4".}
-proc VarParseNumFromStr*(strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pnumprs: ptr NUMPARSE, rgbDig: ptr BYTE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarNumFromParseNum*(pnumprs: ptr NUMPARSE, rgbDig: ptr BYTE, dwVtBits: ULONG, pvar: ptr VARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarAdd*(pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarAnd*(pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCat*(pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDiv*(pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarEqv*(pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarIdiv*(pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarImp*(pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarMod*(pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarMul*(pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarOr*(pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarPow*(pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarSub*(pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarXor*(pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarAbs*(pvarIn: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarFix*(pvarIn: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarInt*(pvarIn: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarNeg*(pvarIn: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarNot*(pvarIn: LPVARIANT, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarRound*(pvarIn: LPVARIANT, cDecimals: int32, pvarResult: LPVARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCmp*(pvarLeft: LPVARIANT, pvarRight: LPVARIANT, lcid: LCID, dwFlags: ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecAdd*(pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecDiv*(pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecMul*(pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecSub*(pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecAbs*(pdecIn: LPDECIMAL, pdecResult: LPDECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecFix*(pdecIn: LPDECIMAL, pdecResult: LPDECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecInt*(pdecIn: LPDECIMAL, pdecResult: LPDECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecNeg*(pdecIn: LPDECIMAL, pdecResult: LPDECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecRound*(pdecIn: LPDECIMAL, cDecimals: int32, pdecResult: LPDECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecCmp*(pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDecCmpR8*(pdecLeft: LPDECIMAL, dblRight: float64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyAdd*(cyLeft: CY, cyRight: CY, pcyResult: LPCY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyMul*(cyLeft: CY, cyRight: CY, pcyResult: LPCY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyMulI4*(cyLeft: CY, lRight: int32, pcyResult: LPCY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyMulI8*(cyLeft: CY, lRight: LONG64, pcyResult: LPCY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCySub*(cyLeft: CY, cyRight: CY, pcyResult: LPCY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyAbs*(cyIn: CY, pcyResult: LPCY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyFix*(cyIn: CY, pcyResult: LPCY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyInt*(cyIn: CY, pcyResult: LPCY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyNeg*(cyIn: CY, pcyResult: LPCY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyRound*(cyIn: CY, cDecimals: int32, pcyResult: LPCY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyCmp*(cyLeft: CY, cyRight: CY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarCyCmpR8*(cyLeft: CY, dblRight: float64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrCat*(bstrLeft: BSTR, bstrRight: BSTR, pbstrResult: LPBSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarBstrCmp*(bstrLeft: BSTR, bstrRight: BSTR, lcid: LCID, dwFlags: ULONG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8Pow*(dblLeft: float64, dblRight: float64, pdblResult: ptr float64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR4CmpR8*(fltLeft: float32, dblRight: float64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarR8Round*(dblIn: float64, cDecimals: int32, pdblResult: ptr float64): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromUdate*(pudateIn: ptr UDATE, dwFlags: ULONG, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarDateFromUdateEx*(pudateIn: ptr UDATE, lcid: LCID, dwFlags: ULONG, pdateOut: ptr DATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarUdateFromDate*(dateIn: DATE, dwFlags: ULONG, pudateOut: ptr UDATE): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc GetAltMonthNames*(lcid: LCID, prgp: ptr ptr LPOLESTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarFormat*(pvarIn: LPVARIANT, pstrFormat: LPOLESTR, iFirstDay: int32, iFirstWeek: int32, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarFormatDateTime*(pvarIn: LPVARIANT, iNamedFormat: int32, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarFormatNumber*(pvarIn: LPVARIANT, iNumDig: int32, iIncLead: int32, iUseParens: int32, iGroup: int32, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarFormatPercent*(pvarIn: LPVARIANT, iNumDig: int32, iIncLead: int32, iUseParens: int32, iGroup: int32, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarFormatCurrency*(pvarIn: LPVARIANT, iNumDig: int32, iIncLead: int32, iUseParens: int32, iGroup: int32, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarWeekdayName*(iWeekday: int32, fAbbrev: int32, iFirstDay: int32, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarMonthName*(iMonth: int32, fAbbrev: int32, dwFlags: ULONG, pbstrOut: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarFormatFromTokens*(pvarIn: LPVARIANT, pstrFormat: LPOLESTR, pbTokCur: LPBYTE, dwFlags: ULONG, pbstrOut: ptr BSTR, lcid: LCID): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc VarTokenizeFormatString*(pstrFormat: LPOLESTR, rgbTok: LPBYTE, cbTok: int32, iFirstDay: int32, iFirstWeek: int32, lcid: LCID, pcbActual: ptr int32): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc LHashValOfNameSysA*(syskind: SYSKIND, lcid: LCID, szName: LPCSTR): ULONG {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc LHashValOfNameSys*(syskind: SYSKIND, lcid: LCID, szName: ptr OLECHAR): ULONG {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc LoadTypeLib*(szFile: ptr OLECHAR, pptlib: ptr ptr ITypeLib): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc LoadTypeLibEx*(szFile: LPCOLESTR, regkind: REGKIND, pptlib: ptr ptr ITypeLib): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc LoadRegTypeLib*(rguid: REFGUID, wVerMajor: WORD, wVerMinor: WORD, lcid: LCID, pptlib: ptr ptr ITypeLib): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc QueryPathOfRegTypeLib*(guid: REFGUID, wMaj: USHORT, wMin: USHORT, lcid: LCID, lpbstrPathName: LPBSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc RegisterTypeLib*(ptlib: ptr ITypeLib, szFullPath: ptr OLECHAR, szHelpDir: ptr OLECHAR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc UnRegisterTypeLib*(libID: REFGUID, wVerMajor: WORD, wVerMinor: WORD, lcid: LCID, syskind: SYSKIND): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc CreateTypeLib*(syskind: SYSKIND, szFile: ptr OLECHAR, ppctlib: ptr ptr ICreateTypeLib): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc CreateTypeLib2*(syskind: SYSKIND, szFile: LPCOLESTR, ppctlib: ptr ptr ICreateTypeLib2): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc DispGetParam*(pdispparams: ptr DISPPARAMS, position: UINT, vtTarg: VARTYPE, pvarResult: ptr VARIANT, puArgErr: ptr UINT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc DispGetIDsOfNames*(ptinfo: ptr ITypeInfo, rgszNames: ptr ptr OLECHAR, cNames: UINT, rgdispid: ptr DISPID): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc DispInvoke*(this: pointer, ptinfo: ptr ITypeInfo, dispidMember: DISPID, wFlags: WORD, pparams: ptr DISPPARAMS, pvarResult: ptr VARIANT, pexcepinfo: ptr EXCEPINFO, puArgErr: ptr UINT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc CreateDispTypeInfo*(pidata: ptr INTERFACEDATA, lcid: LCID, pptinfo: ptr ptr ITypeInfo): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc CreateStdDispatch*(punkOuter: ptr IUnknown, pvThis: pointer, ptinfo: ptr ITypeInfo, ppunkStdDisp: ptr ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc DispCallFunc*(pvInstance: pointer, oVft: ULONG_PTR, cc: CALLCONV, vtReturn: VARTYPE, cActuals: UINT, prgvt: ptr VARTYPE, prgpvarg: ptr ptr VARIANTARG, pvargResult: ptr VARIANT): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc RegisterActiveObject*(punk: ptr IUnknown, rclsid: REFCLSID, dwFlags: DWORD, pdwRegister: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc RevokeActiveObject*(dwRegister: DWORD, pvReserved: pointer): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc GetActiveObject*(rclsid: REFCLSID, pvReserved: pointer, ppunk: ptr ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc SetErrorInfo*(dwReserved: ULONG, perrinfo: ptr IErrorInfo): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc GetErrorInfo*(dwReserved: ULONG, pperrinfo: ptr ptr IErrorInfo): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc CreateErrorInfo*(pperrinfo: ptr ptr ICreateErrorInfo): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc GetRecordInfoFromTypeInfo*(pTypeInfo: ptr ITypeInfo, ppRecInfo: ptr ptr IRecordInfo): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc GetRecordInfoFromGuids*(rGuidTypeLib: REFGUID, uVerMajor: ULONG, uVerMinor: ULONG, lcid: LCID, rGuidTypeInfo: REFGUID, ppRecInfo: ptr ptr IRecordInfo): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+proc SysStringByteLen*(
+  bstr: BSTR
+): UINT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SysAllocStringByteLen*(
+  psz: LPCSTR, len: UINT
+): BSTR {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc DosDateTimeToVariantTime*(
+  wDosDate: USHORT, wDosTime: USHORT, pvtime: ptr DOUBLE
+): INT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VariantTimeToDosDateTime*(
+  vtime: DOUBLE, pwDosDate: ptr USHORT, pwDosTime: ptr USHORT
+): INT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SystemTimeToVariantTime*(
+  lpSystemTime: LPSYSTEMTIME, pvtime: ptr DOUBLE
+): INT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VariantTimeToSystemTime*(
+  vtime: DOUBLE, lpSystemTime: LPSYSTEMTIME
+): INT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayAllocDescriptor*(
+  cDims: UINT, ppsaOut: ptr ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayAllocDescriptorEx*(
+  vt: VARTYPE, cDims: UINT, ppsaOut: ptr ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayAllocData*(
+  psa: ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayCreate*(
+  vt: VARTYPE, cDims: UINT, rgsabound: ptr SAFEARRAYBOUND
+): ptr SAFEARRAY {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayCreateEx*(
+  vt: VARTYPE, cDims: UINT, rgsabound: ptr SAFEARRAYBOUND, pvExtra: PVOID
+): ptr SAFEARRAY {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayCopyData*(
+  psaSource: ptr SAFEARRAY, psaTarget: ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayDestroyDescriptor*(
+  psa: ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayDestroyData*(
+  psa: ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayDestroy*(
+  psa: ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayRedim*(
+  psa: ptr SAFEARRAY, psaboundNew: ptr SAFEARRAYBOUND
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayGetDim*(
+  psa: ptr SAFEARRAY
+): UINT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayGetElemsize*(
+  psa: ptr SAFEARRAY
+): UINT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayGetUBound*(
+  psa: ptr SAFEARRAY, nDim: UINT, plUbound: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayGetLBound*(
+  psa: ptr SAFEARRAY, nDim: UINT, plLbound: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayLock*(
+  psa: ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayUnlock*(
+  psa: ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayAccessData*(
+  psa: ptr SAFEARRAY, ppvData: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayUnaccessData*(
+  psa: ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayGetElement*(
+  psa: ptr SAFEARRAY, rgIndices: ptr LONG, pv: pointer
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayPutElement*(
+  psa: ptr SAFEARRAY, rgIndices: ptr LONG, pv: pointer
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayCopy*(
+  psa: ptr SAFEARRAY, ppsaOut: ptr ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayPtrOfIndex*(
+  psa: ptr SAFEARRAY, rgIndices: ptr LONG, ppvData: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArraySetRecordInfo*(
+  psa: ptr SAFEARRAY, prinfo: ptr IRecordInfo
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayGetRecordInfo*(
+  psa: ptr SAFEARRAY, prinfo: ptr ptr IRecordInfo
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArraySetIID*(
+  psa: ptr SAFEARRAY, guid: REFGUID
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayGetIID*(
+  psa: ptr SAFEARRAY, pguid: ptr GUID
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayGetVartype*(
+  psa: ptr SAFEARRAY, pvt: ptr VARTYPE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayCreateVector*(
+  vt: VARTYPE, lLbound: LONG, cElements: ULONG
+): ptr SAFEARRAY {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SafeArrayCreateVectorEx*(
+  vt: VARTYPE, lLbound: LONG, cElements: ULONG, pvExtra: PVOID
+): ptr SAFEARRAY {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VariantInit*(
+  pvarg: ptr VARIANTARG
+): void {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VariantClear*(
+  pvarg: ptr VARIANTARG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VariantCopy*(
+  pvargDest: ptr VARIANTARG, pvargSrc: ptr VARIANTARG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VariantCopyInd*(
+  pvarDest: ptr VARIANT, pvargSrc: ptr VARIANTARG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VariantChangeType*(
+  pvargDest: ptr VARIANTARG, pvarSrc: ptr VARIANTARG, wFlags: USHORT, vt: VARTYPE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VariantChangeTypeEx*(
+  pvargDest: ptr VARIANTARG,
+  pvarSrc: ptr VARIANTARG,
+  lcid: LCID,
+  wFlags: USHORT,
+  vt: VARTYPE,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VectorFromBstr*(
+  bstr: BSTR, ppsa: ptr ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc BstrFromVector*(
+  psa: ptr SAFEARRAY, pbstr: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromI2*(
+  sIn: SHORT, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromI4*(
+  lIn: LONG, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromI8*(
+  i64In: LONG64, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromR4*(
+  fltIn: FLOAT, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromR8*(
+  dblIn: DOUBLE, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromCy*(
+  cyIn: CY, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromDate*(
+  dateIn: DATE, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromBool*(
+  boolIn: VARIANT_BOOL, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromI1*(
+  cIn: CHAR, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromUI2*(
+  uiIn: USHORT, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromUI4*(
+  ulIn: ULONG, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromUI8*(
+  ui64In: ULONG64, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromDec*(
+  pdecIn: ptr DECIMAL, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromUI1*(
+  bIn: BYTE, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromI4*(
+  lIn: LONG, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromI8*(
+  i64In: LONG64, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromR4*(
+  fltIn: FLOAT, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromR8*(
+  dblIn: DOUBLE, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromCy*(
+  cyIn: CY, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromDate*(
+  dateIn: DATE, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromBool*(
+  boolIn: VARIANT_BOOL, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromI1*(
+  cIn: CHAR, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromUI2*(
+  uiIn: USHORT, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromUI4*(
+  ulIn: ULONG, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromUI8*(
+  ui64In: ULONG64, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI2FromDec*(
+  pdecIn: ptr DECIMAL, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromUI1*(
+  bIn: BYTE, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromI2*(
+  sIn: SHORT, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromI8*(
+  i64In: LONG64, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromR4*(
+  fltIn: FLOAT, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromR8*(
+  dblIn: DOUBLE, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromCy*(
+  cyIn: CY, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromDate*(
+  dateIn: DATE, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromBool*(
+  boolIn: VARIANT_BOOL, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromI1*(
+  cIn: CHAR, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromUI2*(
+  uiIn: USHORT, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromUI4*(
+  ulIn: ULONG, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromUI8*(
+  ui64In: ULONG64, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI4FromDec*(
+  pdecIn: ptr DECIMAL, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI8FromUI1*(
+  bIn: BYTE, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI8FromI2*(
+  sIn: SHORT, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI8FromR4*(
+  fltIn: FLOAT, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI8FromR8*(
+  dblIn: DOUBLE, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI8FromCy*(
+  cyIn: CY, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI8FromDate*(
+  dateIn: DATE, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI8FromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: int32, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI8FromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI8FromBool*(
+  boolIn: VARIANT_BOOL, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI8FromI1*(
+  cIn: CHAR, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI8FromUI2*(
+  uiIn: USHORT, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI8FromUI4*(
+  ulIn: ULONG, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI8FromUI8*(
+  ui64In: ULONG64, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI8FromDec*(
+  pdecIn: ptr DECIMAL, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromUI1*(
+  bIn: BYTE, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromI2*(
+  sIn: SHORT, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromI4*(
+  lIn: LONG, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromI8*(
+  i64In: LONG64, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromR8*(
+  dblIn: DOUBLE, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromCy*(
+  cyIn: CY, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromDate*(
+  dateIn: DATE, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromBool*(
+  boolIn: VARIANT_BOOL, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromI1*(
+  cIn: CHAR, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromUI2*(
+  uiIn: USHORT, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromUI4*(
+  ulIn: ULONG, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromUI8*(
+  ui64In: ULONG64, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4FromDec*(
+  pdecIn: ptr DECIMAL, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromUI1*(
+  bIn: BYTE, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromI2*(
+  sIn: SHORT, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromI4*(
+  lIn: LONG, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromI8*(
+  i64In: LONG64, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromR4*(
+  fltIn: FLOAT, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromCy*(
+  cyIn: CY, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromDate*(
+  dateIn: DATE, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromBool*(
+  boolIn: VARIANT_BOOL, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromI1*(
+  cIn: CHAR, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromUI2*(
+  uiIn: USHORT, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromUI4*(
+  ulIn: ULONG, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromUI8*(
+  ui64In: ULONG64, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8FromDec*(
+  pdecIn: ptr DECIMAL, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromUI1*(
+  bIn: BYTE, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromI2*(
+  sIn: SHORT, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromI4*(
+  lIn: LONG, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromI8*(
+  i64In: LONG64, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromR4*(
+  fltIn: FLOAT, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromR8*(
+  dblIn: DOUBLE, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromCy*(
+  cyIn: CY, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromBool*(
+  boolIn: VARIANT_BOOL, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromI1*(
+  cIn: CHAR, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromUI2*(
+  uiIn: USHORT, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromUI4*(
+  ulIn: ULONG, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromUI8*(
+  ui64In: ULONG64, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromDec*(
+  pdecIn: ptr DECIMAL, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromUI1*(
+  bIn: BYTE, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromI2*(
+  sIn: SHORT, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromI4*(
+  lIn: LONG, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromI8*(
+  i64In: LONG64, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromR4*(
+  fltIn: FLOAT, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromR8*(
+  dblIn: DOUBLE, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromDate*(
+  dateIn: DATE, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromBool*(
+  boolIn: VARIANT_BOOL, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromI1*(
+  cIn: CHAR, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromUI2*(
+  uiIn: USHORT, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromUI4*(
+  ulIn: ULONG, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromUI8*(
+  ui64In: ULONG64, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFromDec*(
+  pdecIn: ptr DECIMAL, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromUI1*(
+  bVal: BYTE, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromI2*(
+  iVal: SHORT, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromI4*(
+  lIn: LONG, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromI8*(
+  i64In: LONG64, lcid: LCID, dwFlags: int32, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromR4*(
+  fltIn: FLOAT, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromR8*(
+  dblIn: DOUBLE, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromCy*(
+  cyIn: CY, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromDate*(
+  dateIn: DATE, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromBool*(
+  boolIn: VARIANT_BOOL, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromI1*(
+  cIn: CHAR, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromUI2*(
+  uiIn: USHORT, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromUI4*(
+  ulIn: ULONG, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromUI8*(
+  ui64In: ULONG64, lcid: LCID, dwFlags: int32, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrFromDec*(
+  pdecIn: ptr DECIMAL, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromUI1*(
+  bIn: BYTE, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromI2*(
+  sIn: SHORT, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromI4*(
+  lIn: LONG, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromI8*(
+  i64In: LONG64, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromR4*(
+  fltIn: FLOAT, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromR8*(
+  dblIn: DOUBLE, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromDate*(
+  dateIn: DATE, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromCy*(
+  cyIn: CY, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromI1*(
+  cIn: CHAR, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromUI2*(
+  uiIn: USHORT, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromUI4*(
+  ulIn: ULONG, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromUI8*(
+  i64In: ULONG64, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBoolFromDec*(
+  pdecIn: ptr DECIMAL, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromUI1*(
+  bIn: BYTE, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromI2*(
+  uiIn: SHORT, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromI4*(
+  lIn: LONG, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromI8*(
+  i64In: LONG64, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromR4*(
+  fltIn: FLOAT, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromR8*(
+  dblIn: DOUBLE, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromDate*(
+  dateIn: DATE, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromCy*(
+  cyIn: CY, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromBool*(
+  boolIn: VARIANT_BOOL, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromUI2*(
+  uiIn: USHORT, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromUI4*(
+  ulIn: ULONG, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromUI8*(
+  i64In: ULONG64, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarI1FromDec*(
+  pdecIn: ptr DECIMAL, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromUI1*(
+  bIn: BYTE, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromI2*(
+  uiIn: SHORT, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromI4*(
+  lIn: LONG, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromI8*(
+  i64In: LONG64, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromR4*(
+  fltIn: FLOAT, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromR8*(
+  dblIn: DOUBLE, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromDate*(
+  dateIn: DATE, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromCy*(
+  cyIn: CY, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromBool*(
+  boolIn: VARIANT_BOOL, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromI1*(
+  cIn: CHAR, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromUI4*(
+  ulIn: ULONG, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromUI8*(
+  i64In: ULONG64, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI2FromDec*(
+  pdecIn: ptr DECIMAL, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromUI1*(
+  bIn: BYTE, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromI2*(
+  uiIn: SHORT, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromI4*(
+  lIn: LONG, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromI8*(
+  i64In: LONG64, plOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromR4*(
+  fltIn: FLOAT, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromR8*(
+  dblIn: DOUBLE, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromDate*(
+  dateIn: DATE, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromCy*(
+  cyIn: CY, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromBool*(
+  boolIn: VARIANT_BOOL, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromI1*(
+  cIn: CHAR, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromUI2*(
+  uiIn: USHORT, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromUI8*(
+  ui64In: ULONG64, plOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI4FromDec*(
+  pdecIn: ptr DECIMAL, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI8FromUI1*(
+  bIn: BYTE, pi64Out: ptr ULONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI8FromI2*(
+  sIn: SHORT, pi64Out: ptr ULONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI8FromI8*(
+  ui64In: LONG64, pi64Out: ptr ULONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI8FromR4*(
+  fltIn: FLOAT, pi64Out: ptr ULONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI8FromR8*(
+  dblIn: DOUBLE, pi64Out: ptr ULONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI8FromCy*(
+  cyIn: CY, pi64Out: ptr ULONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI8FromDate*(
+  dateIn: DATE, pi64Out: ptr ULONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI8FromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: int32, pi64Out: ptr ULONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI8FromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, pi64Out: ptr ULONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI8FromBool*(
+  boolIn: VARIANT_BOOL, pi64Out: ptr ULONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI8FromI1*(
+  cIn: CHAR, pi64Out: ptr ULONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI8FromUI2*(
+  uiIn: USHORT, pi64Out: ptr ULONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI8FromUI4*(
+  ulIn: ULONG, pi64Out: ptr ULONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI8FromDec*(
+  pdecIn: ptr DECIMAL, pi64Out: ptr ULONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromUI1*(
+  bIn: BYTE, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromI2*(
+  uiIn: SHORT, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromI4*(
+  lIn: LONG, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromI8*(
+  i64In: LONG64, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromR4*(
+  fltIn: FLOAT, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromR8*(
+  dblIn: DOUBLE, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromDate*(
+  dateIn: DATE, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromCy*(
+  cyIn: CY, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromBool*(
+  boolIn: VARIANT_BOOL, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromI1*(
+  cIn: CHAR, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromUI2*(
+  uiIn: USHORT, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromUI4*(
+  ulIn: ULONG, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFromUI8*(
+  ui64In: ULONG64, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUI1FromInt*(
+  lIn: LONG, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI1FromI4".}
+
+proc VarUI1FromUint*(
+  ulIn: ULONG, pbOut: ptr BYTE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI1FromUI4".}
+
+proc VarI2FromInt*(
+  lIn: LONG, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI2FromI4".}
+
+proc VarI2FromUint*(
+  ulIn: ULONG, psOut: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI2FromUI4".}
+
+proc VarI4FromUint*(
+  ulIn: ULONG, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromUI4".}
+
+proc VarI8FromUint*(
+  ulIn: ULONG, pi64Out: ptr LONG64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI8FromUI4".}
+
+proc VarR4FromInt*(
+  lIn: LONG, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarR4FromI4".}
+
+proc VarR4FromUint*(
+  ulIn: ULONG, pfltOut: ptr FLOAT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarR4FromUI4".}
+
+proc VarR8FromInt*(
+  lIn: LONG, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarR8FromI4".}
+
+proc VarR8FromUint*(
+  ulIn: ULONG, pdblOut: ptr DOUBLE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarR8FromUI4".}
+
+proc VarDateFromInt*(
+  lIn: LONG, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarDateFromI4".}
+
+proc VarDateFromUint*(
+  ulIn: ULONG, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarDateFromUI4".}
+
+proc VarCyFromInt*(
+  lIn: LONG, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarCyFromI4".}
+
+proc VarCyFromUint*(
+  ulIn: ULONG, pcyOut: ptr CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarCyFromUI4".}
+
+proc VarBstrFromInt*(
+  lIn: LONG, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarBstrFromI4".}
+
+proc VarBstrFromUint*(
+  ulIn: ULONG, lcid: LCID, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarBstrFromUI4".}
+
+proc VarBoolFromInt*(
+  lIn: LONG, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarBoolFromI4".}
+
+proc VarBoolFromUint*(
+  ulIn: ULONG, pboolOut: ptr VARIANT_BOOL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarBoolFromUI4".}
+
+proc VarI1FromInt*(
+  lIn: LONG, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI1FromI4".}
+
+proc VarI1FromUint*(
+  ulIn: ULONG, pcOut: ptr CHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI1FromUI4".}
+
+proc VarUI2FromInt*(
+  lIn: LONG, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI2FromI4".}
+
+proc VarUI2FromUint*(
+  ulIn: ULONG, puiOut: ptr USHORT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI2FromUI4".}
+
+proc VarUI4FromInt*(
+  lIn: LONG, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromI4".}
+
+proc VarDecFromInt*(
+  lIn: LONG, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarDecFromI4".}
+
+proc VarDecFromUint*(
+  ulIn: ULONG, pdecOut: ptr DECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarDecFromUI4".}
+
+proc VarIntFromUI1*(
+  bIn: BYTE, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromUI1".}
+
+proc VarIntFromI2*(
+  sIn: SHORT, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromI2".}
+
+proc VarIntFromI8*(
+  i64In: LONG64, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromI8".}
+
+proc VarIntFromR4*(
+  fltIn: FLOAT, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromR4".}
+
+proc VarIntFromR8*(
+  dblIn: DOUBLE, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromR8".}
+
+proc VarIntFromDate*(
+  dateIn: DATE, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromDate".}
+
+proc VarIntFromCy*(
+  cyIn: CY, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromCy".}
+
+proc VarIntFromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromStr".}
+
+proc VarIntFromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromDisp".}
+
+proc VarIntFromBool*(
+  boolIn: VARIANT_BOOL, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromBool".}
+
+proc VarIntFromI1*(
+  cIn: CHAR, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromI1".}
+
+proc VarIntFromUI2*(
+  uiIn: USHORT, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromUI2".}
+
+proc VarIntFromUI4*(
+  ulIn: ULONG, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromUI4".}
+
+proc VarIntFromUI8*(
+  ui64In: ULONG64, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromUI8".}
+
+proc VarIntFromDec*(
+  pdecIn: ptr DECIMAL, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromDec".}
+
+proc VarIntFromUint*(
+  ulIn: ULONG, plOut: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarI4FromUI4".}
+
+proc VarUintFromUI1*(
+  bIn: BYTE, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromUI1".}
+
+proc VarUintFromI2*(
+  uiIn: SHORT, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromI2".}
+
+proc VarUintFromI4*(
+  lIn: LONG, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromI4".}
+
+proc VarUintFromI8*(
+  i64In: LONG64, plOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromI8".}
+
+proc VarUintFromR4*(
+  fltIn: FLOAT, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromR4".}
+
+proc VarUintFromR8*(
+  dblIn: DOUBLE, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromR8".}
+
+proc VarUintFromDate*(
+  dateIn: DATE, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromDate".}
+
+proc VarUintFromCy*(
+  cyIn: CY, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromCy".}
+
+proc VarUintFromStr*(
+  strIn: ptr OLECHAR, lcid: LCID, dwFlags: ULONG, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromStr".}
+
+proc VarUintFromDisp*(
+  pdispIn: ptr IDispatch, lcid: LCID, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromDisp".}
+
+proc VarUintFromBool*(
+  boolIn: VARIANT_BOOL, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromBool".}
+
+proc VarUintFromI1*(
+  cIn: CHAR, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromI1".}
+
+proc VarUintFromUI2*(
+  uiIn: USHORT, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromUI2".}
+
+proc VarUintFromUI8*(
+  ui64In: ULONG64, plOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromUI8".}
+
+proc VarUintFromDec*(
+  pdecIn: ptr DECIMAL, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromDec".}
+
+proc VarUintFromInt*(
+  lIn: LONG, pulOut: ptr ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc: "VarUI4FromI4".}
+
+proc VarParseNumFromStr*(
+  strIn: ptr OLECHAR,
+  lcid: LCID,
+  dwFlags: ULONG,
+  pnumprs: ptr NUMPARSE,
+  rgbDig: ptr BYTE,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarNumFromParseNum*(
+  pnumprs: ptr NUMPARSE, rgbDig: ptr BYTE, dwVtBits: ULONG, pvar: ptr VARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarAdd*(
+  pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarAnd*(
+  pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCat*(
+  pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDiv*(
+  pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarEqv*(
+  pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarIdiv*(
+  pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarImp*(
+  pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarMod*(
+  pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarMul*(
+  pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarOr*(
+  pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarPow*(
+  pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarSub*(
+  pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarXor*(
+  pvarLeft: LPVARIANT, pvarRight: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarAbs*(
+  pvarIn: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarFix*(
+  pvarIn: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarInt*(
+  pvarIn: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarNeg*(
+  pvarIn: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarNot*(
+  pvarIn: LPVARIANT, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarRound*(
+  pvarIn: LPVARIANT, cDecimals: int32, pvarResult: LPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCmp*(
+  pvarLeft: LPVARIANT, pvarRight: LPVARIANT, lcid: LCID, dwFlags: ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecAdd*(
+  pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecDiv*(
+  pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecMul*(
+  pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecSub*(
+  pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecAbs*(
+  pdecIn: LPDECIMAL, pdecResult: LPDECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecFix*(
+  pdecIn: LPDECIMAL, pdecResult: LPDECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecInt*(
+  pdecIn: LPDECIMAL, pdecResult: LPDECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecNeg*(
+  pdecIn: LPDECIMAL, pdecResult: LPDECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecRound*(
+  pdecIn: LPDECIMAL, cDecimals: int32, pdecResult: LPDECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecCmp*(
+  pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDecCmpR8*(
+  pdecLeft: LPDECIMAL, dblRight: float64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyAdd*(
+  cyLeft: CY, cyRight: CY, pcyResult: LPCY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyMul*(
+  cyLeft: CY, cyRight: CY, pcyResult: LPCY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyMulI4*(
+  cyLeft: CY, lRight: int32, pcyResult: LPCY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyMulI8*(
+  cyLeft: CY, lRight: LONG64, pcyResult: LPCY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCySub*(
+  cyLeft: CY, cyRight: CY, pcyResult: LPCY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyAbs*(
+  cyIn: CY, pcyResult: LPCY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyFix*(
+  cyIn: CY, pcyResult: LPCY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyInt*(
+  cyIn: CY, pcyResult: LPCY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyNeg*(
+  cyIn: CY, pcyResult: LPCY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyRound*(
+  cyIn: CY, cDecimals: int32, pcyResult: LPCY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyCmp*(
+  cyLeft: CY, cyRight: CY
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarCyCmpR8*(
+  cyLeft: CY, dblRight: float64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrCat*(
+  bstrLeft: BSTR, bstrRight: BSTR, pbstrResult: LPBSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarBstrCmp*(
+  bstrLeft: BSTR, bstrRight: BSTR, lcid: LCID, dwFlags: ULONG
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8Pow*(
+  dblLeft: float64, dblRight: float64, pdblResult: ptr float64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR4CmpR8*(
+  fltLeft: float32, dblRight: float64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarR8Round*(
+  dblIn: float64, cDecimals: int32, pdblResult: ptr float64
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromUdate*(
+  pudateIn: ptr UDATE, dwFlags: ULONG, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarDateFromUdateEx*(
+  pudateIn: ptr UDATE, lcid: LCID, dwFlags: ULONG, pdateOut: ptr DATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarUdateFromDate*(
+  dateIn: DATE, dwFlags: ULONG, pudateOut: ptr UDATE
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc GetAltMonthNames*(
+  lcid: LCID, prgp: ptr ptr LPOLESTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarFormat*(
+  pvarIn: LPVARIANT,
+  pstrFormat: LPOLESTR,
+  iFirstDay: int32,
+  iFirstWeek: int32,
+  dwFlags: ULONG,
+  pbstrOut: ptr BSTR,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarFormatDateTime*(
+  pvarIn: LPVARIANT, iNamedFormat: int32, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarFormatNumber*(
+  pvarIn: LPVARIANT,
+  iNumDig: int32,
+  iIncLead: int32,
+  iUseParens: int32,
+  iGroup: int32,
+  dwFlags: ULONG,
+  pbstrOut: ptr BSTR,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarFormatPercent*(
+  pvarIn: LPVARIANT,
+  iNumDig: int32,
+  iIncLead: int32,
+  iUseParens: int32,
+  iGroup: int32,
+  dwFlags: ULONG,
+  pbstrOut: ptr BSTR,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarFormatCurrency*(
+  pvarIn: LPVARIANT,
+  iNumDig: int32,
+  iIncLead: int32,
+  iUseParens: int32,
+  iGroup: int32,
+  dwFlags: ULONG,
+  pbstrOut: ptr BSTR,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarWeekdayName*(
+  iWeekday: int32, fAbbrev: int32, iFirstDay: int32, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarMonthName*(
+  iMonth: int32, fAbbrev: int32, dwFlags: ULONG, pbstrOut: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarFormatFromTokens*(
+  pvarIn: LPVARIANT,
+  pstrFormat: LPOLESTR,
+  pbTokCur: LPBYTE,
+  dwFlags: ULONG,
+  pbstrOut: ptr BSTR,
+  lcid: LCID,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc VarTokenizeFormatString*(
+  pstrFormat: LPOLESTR,
+  rgbTok: LPBYTE,
+  cbTok: int32,
+  iFirstDay: int32,
+  iFirstWeek: int32,
+  lcid: LCID,
+  pcbActual: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc LHashValOfNameSysA*(
+  syskind: SYSKIND, lcid: LCID, szName: LPCSTR
+): ULONG {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc LHashValOfNameSys*(
+  syskind: SYSKIND, lcid: LCID, szName: ptr OLECHAR
+): ULONG {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc LoadTypeLib*(
+  szFile: ptr OLECHAR, pptlib: ptr ptr ITypeLib
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc LoadTypeLibEx*(
+  szFile: LPCOLESTR, regkind: REGKIND, pptlib: ptr ptr ITypeLib
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc LoadRegTypeLib*(
+  rguid: REFGUID, wVerMajor: WORD, wVerMinor: WORD, lcid: LCID, pptlib: ptr ptr ITypeLib
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc QueryPathOfRegTypeLib*(
+  guid: REFGUID, wMaj: USHORT, wMin: USHORT, lcid: LCID, lpbstrPathName: LPBSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc RegisterTypeLib*(
+  ptlib: ptr ITypeLib, szFullPath: ptr OLECHAR, szHelpDir: ptr OLECHAR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc UnRegisterTypeLib*(
+  libID: REFGUID, wVerMajor: WORD, wVerMinor: WORD, lcid: LCID, syskind: SYSKIND
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc CreateTypeLib*(
+  syskind: SYSKIND, szFile: ptr OLECHAR, ppctlib: ptr ptr ICreateTypeLib
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc CreateTypeLib2*(
+  syskind: SYSKIND, szFile: LPCOLESTR, ppctlib: ptr ptr ICreateTypeLib2
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc DispGetParam*(
+  pdispparams: ptr DISPPARAMS,
+  position: UINT,
+  vtTarg: VARTYPE,
+  pvarResult: ptr VARIANT,
+  puArgErr: ptr UINT,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc DispGetIDsOfNames*(
+  ptinfo: ptr ITypeInfo, rgszNames: ptr ptr OLECHAR, cNames: UINT, rgdispid: ptr DISPID
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc DispInvoke*(
+  this: pointer,
+  ptinfo: ptr ITypeInfo,
+  dispidMember: DISPID,
+  wFlags: WORD,
+  pparams: ptr DISPPARAMS,
+  pvarResult: ptr VARIANT,
+  pexcepinfo: ptr EXCEPINFO,
+  puArgErr: ptr UINT,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc CreateDispTypeInfo*(
+  pidata: ptr INTERFACEDATA, lcid: LCID, pptinfo: ptr ptr ITypeInfo
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc CreateStdDispatch*(
+  punkOuter: ptr IUnknown,
+  pvThis: pointer,
+  ptinfo: ptr ITypeInfo,
+  ppunkStdDisp: ptr ptr IUnknown,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc DispCallFunc*(
+  pvInstance: pointer,
+  oVft: ULONG_PTR,
+  cc: CALLCONV,
+  vtReturn: VARTYPE,
+  cActuals: UINT,
+  prgvt: ptr VARTYPE,
+  prgpvarg: ptr ptr VARIANTARG,
+  pvargResult: ptr VARIANT,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc RegisterActiveObject*(
+  punk: ptr IUnknown, rclsid: REFCLSID, dwFlags: DWORD, pdwRegister: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc RevokeActiveObject*(
+  dwRegister: DWORD, pvReserved: pointer
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc GetActiveObject*(
+  rclsid: REFCLSID, pvReserved: pointer, ppunk: ptr ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc SetErrorInfo*(
+  dwReserved: ULONG, perrinfo: ptr IErrorInfo
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc GetErrorInfo*(
+  dwReserved: ULONG, pperrinfo: ptr ptr IErrorInfo
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc CreateErrorInfo*(
+  pperrinfo: ptr ptr ICreateErrorInfo
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc GetRecordInfoFromTypeInfo*(
+  pTypeInfo: ptr ITypeInfo, ppRecInfo: ptr ptr IRecordInfo
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc GetRecordInfoFromGuids*(
+  rGuidTypeLib: REFGUID,
+  uVerMajor: ULONG,
+  uVerMinor: ULONG,
+  lcid: LCID,
+  rGuidTypeInfo: REFGUID,
+  ppRecInfo: ptr ptr IRecordInfo,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
 proc OaBuildVersion*(): ULONG {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc ClearCustData*(pCustData: LPCUSTDATA): void {.winapi, stdcall, dynlib: "oleaut32", importc.}
+proc ClearCustData*(
+  pCustData: LPCUSTDATA
+): void {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
 proc OleBuildVersion*(): DWORD {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreateDataAdviseHolder*(ppDAHolder: ptr LPDATAADVISEHOLDER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc ReadClassStg*(pStg: LPSTORAGE, pclsid: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc WriteClassStg*(pStg: LPSTORAGE, rclsid: REFCLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc ReadClassStm*(pStm: LPSTREAM, pclsid: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc WriteClassStm*(pStm: LPSTREAM, rclsid: REFCLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc WriteFmtUserTypeStg*(pstg: LPSTORAGE, cf: CLIPFORMAT, lpszUserType: LPOLESTR): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc ReadFmtUserTypeStg*(pstg: LPSTORAGE, pcf: ptr CLIPFORMAT, lplpszUserType: ptr LPOLESTR): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleInitialize*(pvReserved: LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+proc CreateDataAdviseHolder*(
+  ppDAHolder: ptr LPDATAADVISEHOLDER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc ReadClassStg*(
+  pStg: LPSTORAGE, pclsid: ptr CLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc WriteClassStg*(
+  pStg: LPSTORAGE, rclsid: REFCLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc ReadClassStm*(
+  pStm: LPSTREAM, pclsid: ptr CLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc WriteClassStm*(
+  pStm: LPSTREAM, rclsid: REFCLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc WriteFmtUserTypeStg*(
+  pstg: LPSTORAGE, cf: CLIPFORMAT, lpszUserType: LPOLESTR
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc ReadFmtUserTypeStg*(
+  pstg: LPSTORAGE, pcf: ptr CLIPFORMAT, lplpszUserType: ptr LPOLESTR
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleInitialize*(
+  pvReserved: LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
 proc OleUninitialize*(): void {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleQueryLinkFromData*(pSrcDataObject: LPDATAOBJECT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleQueryCreateFromData*(pSrcDataObject: LPDATAOBJECT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreate*(rclsid: REFCLSID, riid: REFIID, renderopt: DWORD, pFormatEtc: LPFORMATETC, pClientSite: LPOLECLIENTSITE, pStg: LPSTORAGE, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateEx*(rclsid: REFCLSID, riid: REFIID, dwFlags: DWORD, renderopt: DWORD, cFormats: ULONG, rgAdvf: ptr DWORD, rgFormatEtc: LPFORMATETC, lpAdviseSink: ptr IAdviseSink, rgdwConnection: ptr DWORD, pClientSite: LPOLECLIENTSITE, pStg: LPSTORAGE, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateFromData*(pSrcDataObj: LPDATAOBJECT, riid: REFIID, renderopt: DWORD, pFormatEtc: LPFORMATETC, pClientSite: LPOLECLIENTSITE, pStg: LPSTORAGE, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateFromDataEx*(pSrcDataObj: LPDATAOBJECT, riid: REFIID, dwFlags: DWORD, renderopt: DWORD, cFormats: ULONG, rgAdvf: ptr DWORD, rgFormatEtc: LPFORMATETC, lpAdviseSink: ptr IAdviseSink, rgdwConnection: ptr DWORD, pClientSite: LPOLECLIENTSITE, pStg: LPSTORAGE, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateLinkFromData*(pSrcDataObj: LPDATAOBJECT, riid: REFIID, renderopt: DWORD, pFormatEtc: LPFORMATETC, pClientSite: LPOLECLIENTSITE, pStg: LPSTORAGE, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateLinkFromDataEx*(pSrcDataObj: LPDATAOBJECT, riid: REFIID, dwFlags: DWORD, renderopt: DWORD, cFormats: ULONG, rgAdvf: ptr DWORD, rgFormatEtc: LPFORMATETC, lpAdviseSink: ptr IAdviseSink, rgdwConnection: ptr DWORD, pClientSite: LPOLECLIENTSITE, pStg: LPSTORAGE, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateStaticFromData*(pSrcDataObj: LPDATAOBJECT, iid: REFIID, renderopt: DWORD, pFormatEtc: LPFORMATETC, pClientSite: LPOLECLIENTSITE, pStg: LPSTORAGE, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateLink*(pmkLinkSrc: LPMONIKER, riid: REFIID, renderopt: DWORD, lpFormatEtc: LPFORMATETC, pClientSite: LPOLECLIENTSITE, pStg: LPSTORAGE, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateLinkEx*(pmkLinkSrc: LPMONIKER, riid: REFIID, dwFlags: DWORD, renderopt: DWORD, cFormats: ULONG, rgAdvf: ptr DWORD, rgFormatEtc: LPFORMATETC, lpAdviseSink: ptr IAdviseSink, rgdwConnection: ptr DWORD, pClientSite: LPOLECLIENTSITE, pStg: LPSTORAGE, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateLinkToFile*(lpszFileName: LPCOLESTR, riid: REFIID, renderopt: DWORD, lpFormatEtc: LPFORMATETC, pClientSite: LPOLECLIENTSITE, pStg: LPSTORAGE, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateLinkToFileEx*(lpszFileName: LPCOLESTR, riid: REFIID, dwFlags: DWORD, renderopt: DWORD, cFormats: ULONG, rgAdvf: ptr DWORD, rgFormatEtc: LPFORMATETC, lpAdviseSink: ptr IAdviseSink, rgdwConnection: ptr DWORD, pClientSite: LPOLECLIENTSITE, pStg: LPSTORAGE, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateFromFile*(rclsid: REFCLSID, lpszFileName: LPCOLESTR, riid: REFIID, renderopt: DWORD, lpFormatEtc: LPFORMATETC, pClientSite: LPOLECLIENTSITE, pStg: LPSTORAGE, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateFromFileEx*(rclsid: REFCLSID, lpszFileName: LPCOLESTR, riid: REFIID, dwFlags: DWORD, renderopt: DWORD, cFormats: ULONG, rgAdvf: ptr DWORD, rgFormatEtc: LPFORMATETC, lpAdviseSink: ptr IAdviseSink, rgdwConnection: ptr DWORD, pClientSite: LPOLECLIENTSITE, pStg: LPSTORAGE, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleLoad*(pStg: LPSTORAGE, riid: REFIID, pClientSite: LPOLECLIENTSITE, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleSave*(pPS: LPPERSISTSTORAGE, pStg: LPSTORAGE, fSameAsLoad: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleLoadFromStream*(pStm: LPSTREAM, iidInterface: REFIID, ppvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleSaveToStream*(pPStm: LPPERSISTSTREAM, pStm: LPSTREAM): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleSetContainedObject*(pUnknown: LPUNKNOWN, fContained: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleNoteObjectVisible*(pUnknown: LPUNKNOWN, fVisible: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc RegisterDragDrop*(hwnd: HWND, pDropTarget: LPDROPTARGET): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+proc OleQueryLinkFromData*(
+  pSrcDataObject: LPDATAOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleQueryCreateFromData*(
+  pSrcDataObject: LPDATAOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreate*(
+  rclsid: REFCLSID,
+  riid: REFIID,
+  renderopt: DWORD,
+  pFormatEtc: LPFORMATETC,
+  pClientSite: LPOLECLIENTSITE,
+  pStg: LPSTORAGE,
+  ppvObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateEx*(
+  rclsid: REFCLSID,
+  riid: REFIID,
+  dwFlags: DWORD,
+  renderopt: DWORD,
+  cFormats: ULONG,
+  rgAdvf: ptr DWORD,
+  rgFormatEtc: LPFORMATETC,
+  lpAdviseSink: ptr IAdviseSink,
+  rgdwConnection: ptr DWORD,
+  pClientSite: LPOLECLIENTSITE,
+  pStg: LPSTORAGE,
+  ppvObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateFromData*(
+  pSrcDataObj: LPDATAOBJECT,
+  riid: REFIID,
+  renderopt: DWORD,
+  pFormatEtc: LPFORMATETC,
+  pClientSite: LPOLECLIENTSITE,
+  pStg: LPSTORAGE,
+  ppvObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateFromDataEx*(
+  pSrcDataObj: LPDATAOBJECT,
+  riid: REFIID,
+  dwFlags: DWORD,
+  renderopt: DWORD,
+  cFormats: ULONG,
+  rgAdvf: ptr DWORD,
+  rgFormatEtc: LPFORMATETC,
+  lpAdviseSink: ptr IAdviseSink,
+  rgdwConnection: ptr DWORD,
+  pClientSite: LPOLECLIENTSITE,
+  pStg: LPSTORAGE,
+  ppvObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateLinkFromData*(
+  pSrcDataObj: LPDATAOBJECT,
+  riid: REFIID,
+  renderopt: DWORD,
+  pFormatEtc: LPFORMATETC,
+  pClientSite: LPOLECLIENTSITE,
+  pStg: LPSTORAGE,
+  ppvObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateLinkFromDataEx*(
+  pSrcDataObj: LPDATAOBJECT,
+  riid: REFIID,
+  dwFlags: DWORD,
+  renderopt: DWORD,
+  cFormats: ULONG,
+  rgAdvf: ptr DWORD,
+  rgFormatEtc: LPFORMATETC,
+  lpAdviseSink: ptr IAdviseSink,
+  rgdwConnection: ptr DWORD,
+  pClientSite: LPOLECLIENTSITE,
+  pStg: LPSTORAGE,
+  ppvObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateStaticFromData*(
+  pSrcDataObj: LPDATAOBJECT,
+  iid: REFIID,
+  renderopt: DWORD,
+  pFormatEtc: LPFORMATETC,
+  pClientSite: LPOLECLIENTSITE,
+  pStg: LPSTORAGE,
+  ppvObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateLink*(
+  pmkLinkSrc: LPMONIKER,
+  riid: REFIID,
+  renderopt: DWORD,
+  lpFormatEtc: LPFORMATETC,
+  pClientSite: LPOLECLIENTSITE,
+  pStg: LPSTORAGE,
+  ppvObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateLinkEx*(
+  pmkLinkSrc: LPMONIKER,
+  riid: REFIID,
+  dwFlags: DWORD,
+  renderopt: DWORD,
+  cFormats: ULONG,
+  rgAdvf: ptr DWORD,
+  rgFormatEtc: LPFORMATETC,
+  lpAdviseSink: ptr IAdviseSink,
+  rgdwConnection: ptr DWORD,
+  pClientSite: LPOLECLIENTSITE,
+  pStg: LPSTORAGE,
+  ppvObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateLinkToFile*(
+  lpszFileName: LPCOLESTR,
+  riid: REFIID,
+  renderopt: DWORD,
+  lpFormatEtc: LPFORMATETC,
+  pClientSite: LPOLECLIENTSITE,
+  pStg: LPSTORAGE,
+  ppvObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateLinkToFileEx*(
+  lpszFileName: LPCOLESTR,
+  riid: REFIID,
+  dwFlags: DWORD,
+  renderopt: DWORD,
+  cFormats: ULONG,
+  rgAdvf: ptr DWORD,
+  rgFormatEtc: LPFORMATETC,
+  lpAdviseSink: ptr IAdviseSink,
+  rgdwConnection: ptr DWORD,
+  pClientSite: LPOLECLIENTSITE,
+  pStg: LPSTORAGE,
+  ppvObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateFromFile*(
+  rclsid: REFCLSID,
+  lpszFileName: LPCOLESTR,
+  riid: REFIID,
+  renderopt: DWORD,
+  lpFormatEtc: LPFORMATETC,
+  pClientSite: LPOLECLIENTSITE,
+  pStg: LPSTORAGE,
+  ppvObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateFromFileEx*(
+  rclsid: REFCLSID,
+  lpszFileName: LPCOLESTR,
+  riid: REFIID,
+  dwFlags: DWORD,
+  renderopt: DWORD,
+  cFormats: ULONG,
+  rgAdvf: ptr DWORD,
+  rgFormatEtc: LPFORMATETC,
+  lpAdviseSink: ptr IAdviseSink,
+  rgdwConnection: ptr DWORD,
+  pClientSite: LPOLECLIENTSITE,
+  pStg: LPSTORAGE,
+  ppvObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleLoad*(
+  pStg: LPSTORAGE, riid: REFIID, pClientSite: LPOLECLIENTSITE, ppvObj: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleSave*(
+  pPS: LPPERSISTSTORAGE, pStg: LPSTORAGE, fSameAsLoad: WINBOOL
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleLoadFromStream*(
+  pStm: LPSTREAM, iidInterface: REFIID, ppvObj: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleSaveToStream*(
+  pPStm: LPPERSISTSTREAM, pStm: LPSTREAM
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleSetContainedObject*(
+  pUnknown: LPUNKNOWN, fContained: WINBOOL
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleNoteObjectVisible*(
+  pUnknown: LPUNKNOWN, fVisible: WINBOOL
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc RegisterDragDrop*(
+  hwnd: HWND, pDropTarget: LPDROPTARGET
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
 proc RevokeDragDrop*(hwnd: HWND): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc DoDragDrop*(pDataObj: LPDATAOBJECT, pDropSource: LPDROPSOURCE, dwOKEffects: DWORD, pdwEffect: LPDWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleSetClipboard*(pDataObj: LPDATAOBJECT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleGetClipboard*(ppDataObj: ptr LPDATAOBJECT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+proc DoDragDrop*(
+  pDataObj: LPDATAOBJECT,
+  pDropSource: LPDROPSOURCE,
+  dwOKEffects: DWORD,
+  pdwEffect: LPDWORD,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleSetClipboard*(
+  pDataObj: LPDATAOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleGetClipboard*(
+  ppDataObj: ptr LPDATAOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
 proc OleFlushClipboard*(): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleIsCurrentClipboard*(pDataObj: LPDATAOBJECT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateMenuDescriptor*(hmenuCombined: HMENU, lpMenuWidths: LPOLEMENUGROUPWIDTHS): HOLEMENU {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleSetMenuDescriptor*(holemenu: HOLEMENU, hwndFrame: HWND, hwndActiveObject: HWND, lpFrame: LPOLEINPLACEFRAME, lpActiveObj: LPOLEINPLACEACTIVEOBJECT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleDestroyMenuDescriptor*(holemenu: HOLEMENU): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleTranslateAccelerator*(lpFrame: LPOLEINPLACEFRAME, lpFrameInfo: LPOLEINPLACEFRAMEINFO, lpmsg: LPMSG): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleDuplicateData*(hSrc: HANDLE, cfFormat: CLIPFORMAT, uiFlags: UINT): HANDLE {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleDraw*(pUnknown: LPUNKNOWN, dwAspect: DWORD, hdcDraw: HDC, lprcBounds: LPCRECT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+proc OleIsCurrentClipboard*(
+  pDataObj: LPDATAOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateMenuDescriptor*(
+  hmenuCombined: HMENU, lpMenuWidths: LPOLEMENUGROUPWIDTHS
+): HOLEMENU {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleSetMenuDescriptor*(
+  holemenu: HOLEMENU,
+  hwndFrame: HWND,
+  hwndActiveObject: HWND,
+  lpFrame: LPOLEINPLACEFRAME,
+  lpActiveObj: LPOLEINPLACEACTIVEOBJECT,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleDestroyMenuDescriptor*(
+  holemenu: HOLEMENU
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleTranslateAccelerator*(
+  lpFrame: LPOLEINPLACEFRAME, lpFrameInfo: LPOLEINPLACEFRAMEINFO, lpmsg: LPMSG
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleDuplicateData*(
+  hSrc: HANDLE, cfFormat: CLIPFORMAT, uiFlags: UINT
+): HANDLE {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleDraw*(
+  pUnknown: LPUNKNOWN, dwAspect: DWORD, hdcDraw: HDC, lprcBounds: LPCRECT
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
 proc OleRun*(pUnknown: LPUNKNOWN): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleIsRunning*(pObject: LPOLEOBJECT): WINBOOL {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleLockRunning*(pUnknown: LPUNKNOWN, fLock: WINBOOL, fLastUnlockCloses: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc ReleaseStgMedium*(P1: LPSTGMEDIUM): void {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreateOleAdviseHolder*(ppOAHolder: ptr LPOLEADVISEHOLDER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateDefaultHandler*(clsid: REFCLSID, pUnkOuter: LPUNKNOWN, riid: REFIID, lplpObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleCreateEmbeddingHelper*(clsid: REFCLSID, pUnkOuter: LPUNKNOWN, flags: DWORD, pCF: LPCLASSFACTORY, riid: REFIID, lplpObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc IsAccelerator*(hAccel: HACCEL, cAccelEntries: int32, lpMsg: LPMSG, lpwCmd: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleGetIconOfFile*(lpszPath: LPOLESTR, fUseFileAsLabel: WINBOOL): HGLOBAL {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleGetIconOfClass*(rclsid: REFCLSID, lpszLabel: LPOLESTR, fUseTypeAsLabel: WINBOOL): HGLOBAL {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleMetafilePictFromIconAndLabel*(hIcon: HICON, lpszLabel: LPOLESTR, lpszSourceFile: LPOLESTR, iIconIndex: UINT): HGLOBAL {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleRegGetUserType*(clsid: REFCLSID, dwFormOfType: DWORD, pszUserType: ptr LPOLESTR): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleRegGetMiscStatus*(clsid: REFCLSID, dwAspect: DWORD, pdwStatus: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleRegEnumFormatEtc*(clsid: REFCLSID, dwDirection: DWORD, ppenum: ptr LPENUMFORMATETC): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleRegEnumVerbs*(clsid: REFCLSID, ppenum: ptr LPENUMOLEVERB): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleConvertOLESTREAMToIStorage*(lpolestream: LPOLESTREAM, pstg: LPSTORAGE, ptd: ptr DVTARGETDEVICE): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleConvertIStorageToOLESTREAM*(pstg: LPSTORAGE, lpolestream: LPOLESTREAM): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc GetHGlobalFromILockBytes*(plkbyt: LPLOCKBYTES, phglobal: ptr HGLOBAL): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreateILockBytesOnHGlobal*(hGlobal: HGLOBAL, fDeleteOnRelease: WINBOOL, pplkbyt: ptr LPLOCKBYTES): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleDoAutoConvert*(pStg: LPSTORAGE, pClsidNew: LPCLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleGetAutoConvert*(clsidOld: REFCLSID, pClsidNew: LPCLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleSetAutoConvert*(clsidOld: REFCLSID, clsidNew: REFCLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc GetConvertStg*(pStg: LPSTORAGE): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc SetConvertStg*(pStg: LPSTORAGE, fConvert: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleConvertIStorageToOLESTREAMEx*(pstg: LPSTORAGE, cfFormat: CLIPFORMAT, lWidth: LONG, lHeight: LONG, dwSize: DWORD, pmedium: LPSTGMEDIUM, polestm: LPOLESTREAM): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc OleConvertOLESTREAMToIStorageEx*(polestm: LPOLESTREAM, pstg: LPSTORAGE, pcfFormat: ptr CLIPFORMAT, plwWidth: ptr LONG, plHeight: ptr LONG, pdwSize: ptr DWORD, pmedium: LPSTGMEDIUM): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreateStreamOnHGlobal*(hGlobal: HGLOBAL, fDeleteOnRelease: WINBOOL, ppstm: ptr LPSTREAM): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc GetHGlobalFromStream*(pstm: LPSTREAM, phglobal: ptr HGLOBAL): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+proc OleIsRunning*(
+  pObject: LPOLEOBJECT
+): WINBOOL {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleLockRunning*(
+  pUnknown: LPUNKNOWN, fLock: WINBOOL, fLastUnlockCloses: WINBOOL
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc ReleaseStgMedium*(
+  P1: LPSTGMEDIUM
+): void {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CreateOleAdviseHolder*(
+  ppOAHolder: ptr LPOLEADVISEHOLDER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateDefaultHandler*(
+  clsid: REFCLSID, pUnkOuter: LPUNKNOWN, riid: REFIID, lplpObj: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleCreateEmbeddingHelper*(
+  clsid: REFCLSID,
+  pUnkOuter: LPUNKNOWN,
+  flags: DWORD,
+  pCF: LPCLASSFACTORY,
+  riid: REFIID,
+  lplpObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc IsAccelerator*(
+  hAccel: HACCEL, cAccelEntries: int32, lpMsg: LPMSG, lpwCmd: ptr WORD
+): WINBOOL {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleGetIconOfFile*(
+  lpszPath: LPOLESTR, fUseFileAsLabel: WINBOOL
+): HGLOBAL {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleGetIconOfClass*(
+  rclsid: REFCLSID, lpszLabel: LPOLESTR, fUseTypeAsLabel: WINBOOL
+): HGLOBAL {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleMetafilePictFromIconAndLabel*(
+  hIcon: HICON, lpszLabel: LPOLESTR, lpszSourceFile: LPOLESTR, iIconIndex: UINT
+): HGLOBAL {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleRegGetUserType*(
+  clsid: REFCLSID, dwFormOfType: DWORD, pszUserType: ptr LPOLESTR
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleRegGetMiscStatus*(
+  clsid: REFCLSID, dwAspect: DWORD, pdwStatus: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleRegEnumFormatEtc*(
+  clsid: REFCLSID, dwDirection: DWORD, ppenum: ptr LPENUMFORMATETC
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleRegEnumVerbs*(
+  clsid: REFCLSID, ppenum: ptr LPENUMOLEVERB
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleConvertOLESTREAMToIStorage*(
+  lpolestream: LPOLESTREAM, pstg: LPSTORAGE, ptd: ptr DVTARGETDEVICE
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleConvertIStorageToOLESTREAM*(
+  pstg: LPSTORAGE, lpolestream: LPOLESTREAM
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc GetHGlobalFromILockBytes*(
+  plkbyt: LPLOCKBYTES, phglobal: ptr HGLOBAL
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CreateILockBytesOnHGlobal*(
+  hGlobal: HGLOBAL, fDeleteOnRelease: WINBOOL, pplkbyt: ptr LPLOCKBYTES
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleDoAutoConvert*(
+  pStg: LPSTORAGE, pClsidNew: LPCLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleGetAutoConvert*(
+  clsidOld: REFCLSID, pClsidNew: LPCLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleSetAutoConvert*(
+  clsidOld: REFCLSID, clsidNew: REFCLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc GetConvertStg*(
+  pStg: LPSTORAGE
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc SetConvertStg*(
+  pStg: LPSTORAGE, fConvert: WINBOOL
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleConvertIStorageToOLESTREAMEx*(
+  pstg: LPSTORAGE,
+  cfFormat: CLIPFORMAT,
+  lWidth: LONG,
+  lHeight: LONG,
+  dwSize: DWORD,
+  pmedium: LPSTGMEDIUM,
+  polestm: LPOLESTREAM,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc OleConvertOLESTREAMToIStorageEx*(
+  polestm: LPOLESTREAM,
+  pstg: LPSTORAGE,
+  pcfFormat: ptr CLIPFORMAT,
+  plwWidth: ptr LONG,
+  plHeight: ptr LONG,
+  pdwSize: ptr DWORD,
+  pmedium: LPSTGMEDIUM,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CreateStreamOnHGlobal*(
+  hGlobal: HGLOBAL, fDeleteOnRelease: WINBOOL, ppstm: ptr LPSTREAM
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc GetHGlobalFromStream*(
+  pstm: LPSTREAM, phglobal: ptr HGLOBAL
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
 proc CoUninitialize*(): void {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoInitializeEx*(pvReserved: LPVOID, dwCoInit: DWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetCurrentLogicalThreadId*(pguid: ptr GUID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetContextToken*(pToken: ptr ULONG_PTR): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetApartmentType*(pAptType: ptr APTTYPE, pAptQualifier: ptr APTTYPEQUALIFIER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetObjectContext*(riid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoRegisterClassObject*(rclsid: REFCLSID, pUnk: LPUNKNOWN, dwClsContext: DWORD, flags: DWORD, lpdwRegister: LPDWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoRevokeClassObject*(dwRegister: DWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+proc CoInitializeEx*(
+  pvReserved: LPVOID, dwCoInit: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetCurrentLogicalThreadId*(
+  pguid: ptr GUID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetContextToken*(
+  pToken: ptr ULONG_PTR
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetApartmentType*(
+  pAptType: ptr APTTYPE, pAptQualifier: ptr APTTYPEQUALIFIER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetObjectContext*(
+  riid: REFIID, ppv: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoRegisterClassObject*(
+  rclsid: REFCLSID,
+  pUnk: LPUNKNOWN,
+  dwClsContext: DWORD,
+  flags: DWORD,
+  lpdwRegister: LPDWORD,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoRevokeClassObject*(
+  dwRegister: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
 proc CoResumeClassObjects*(): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
 proc CoSuspendClassObjects*(): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetMalloc*(dwMemContext: DWORD, ppMalloc: ptr LPMALLOC): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+proc CoGetMalloc*(
+  dwMemContext: DWORD, ppMalloc: ptr LPMALLOC
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
 proc CoGetCurrentProcess*(): DWORD {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetCallerTID*(lpdwTID: LPDWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetDefaultContext*(aptType: APTTYPE, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoDecodeProxy*(dwClientPid: DWORD, ui64ProxyAddress: UINT64, pServerInformation: PServerInformation): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoIncrementMTAUsage*(pCookie: ptr CO_MTA_USAGE_COOKIE): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoDecrementMTAUsage*(Cookie: CO_MTA_USAGE_COOKIE): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoWaitForMultipleObjects*(dwFlags: DWORD, dwTimeout: DWORD, cHandles: ULONG, pHandles: ptr HANDLE, lpdwindex: LPDWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoAllowUnmarshalerCLSID*(clsid: REFCLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetClassObject*(rclsid: REFCLSID, dwClsContext: DWORD, pvReserved: LPVOID, riid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+proc CoGetCallerTID*(
+  lpdwTID: LPDWORD
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetDefaultContext*(
+  aptType: APTTYPE, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoDecodeProxy*(
+  dwClientPid: DWORD, ui64ProxyAddress: UINT64, pServerInformation: PServerInformation
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoIncrementMTAUsage*(
+  pCookie: ptr CO_MTA_USAGE_COOKIE
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoDecrementMTAUsage*(
+  Cookie: CO_MTA_USAGE_COOKIE
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoWaitForMultipleObjects*(
+  dwFlags: DWORD,
+  dwTimeout: DWORD,
+  cHandles: ULONG,
+  pHandles: ptr HANDLE,
+  lpdwindex: LPDWORD,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoAllowUnmarshalerCLSID*(
+  clsid: REFCLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetClassObject*(
+  rclsid: REFCLSID,
+  dwClsContext: DWORD,
+  pvReserved: LPVOID,
+  riid: REFIID,
+  ppv: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
 proc CoAddRefServerProcess*(): ULONG {.winapi, stdcall, dynlib: "ole32", importc.}
 proc CoReleaseServerProcess*(): ULONG {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetPSClsid*(riid: REFIID, pClsid: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoRegisterPSClsid*(riid: REFIID, rclsid: REFCLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoRegisterSurrogate*(pSurrogate: LPSURROGATE): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoMarshalHresult*(pstm: LPSTREAM, hresult: HRESULT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoUnmarshalHresult*(pstm: LPSTREAM, phresult: ptr HRESULT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoLockObjectExternal*(pUnk: LPUNKNOWN, fLock: WINBOOL, fLastUnlockReleases: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetStdMarshalEx*(pUnkOuter: LPUNKNOWN, smexflags: DWORD, ppUnkInner: ptr LPUNKNOWN): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetMarshalSizeMax*(pulSize: ptr ULONG, riid: REFIID, pUnk: LPUNKNOWN, dwDestContext: DWORD, pvDestContext: LPVOID, mshlflags: DWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoMarshalInterface*(pStm: LPSTREAM, riid: REFIID, pUnk: LPUNKNOWN, dwDestContext: DWORD, pvDestContext: LPVOID, mshlflags: DWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoUnmarshalInterface*(pStm: LPSTREAM, riid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoReleaseMarshalData*(pStm: LPSTREAM): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoDisconnectObject*(pUnk: LPUNKNOWN, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetStandardMarshal*(riid: REFIID, pUnk: LPUNKNOWN, dwDestContext: DWORD, pvDestContext: LPVOID, mshlflags: DWORD, ppMarshal: ptr LPMARSHAL): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoMarshalInterThreadInterfaceInStream*(riid: REFIID, pUnk: LPUNKNOWN, ppStm: ptr LPSTREAM): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetInterfaceAndReleaseStream*(pStm: LPSTREAM, iid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoCreateFreeThreadedMarshaler*(punkOuter: LPUNKNOWN, ppunkMarshal: ptr LPUNKNOWN): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+proc CoGetPSClsid*(
+  riid: REFIID, pClsid: ptr CLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoRegisterPSClsid*(
+  riid: REFIID, rclsid: REFCLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoRegisterSurrogate*(
+  pSurrogate: LPSURROGATE
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoMarshalHresult*(
+  pstm: LPSTREAM, hresult: HRESULT
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoUnmarshalHresult*(
+  pstm: LPSTREAM, phresult: ptr HRESULT
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoLockObjectExternal*(
+  pUnk: LPUNKNOWN, fLock: WINBOOL, fLastUnlockReleases: WINBOOL
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetStdMarshalEx*(
+  pUnkOuter: LPUNKNOWN, smexflags: DWORD, ppUnkInner: ptr LPUNKNOWN
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetMarshalSizeMax*(
+  pulSize: ptr ULONG,
+  riid: REFIID,
+  pUnk: LPUNKNOWN,
+  dwDestContext: DWORD,
+  pvDestContext: LPVOID,
+  mshlflags: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoMarshalInterface*(
+  pStm: LPSTREAM,
+  riid: REFIID,
+  pUnk: LPUNKNOWN,
+  dwDestContext: DWORD,
+  pvDestContext: LPVOID,
+  mshlflags: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoUnmarshalInterface*(
+  pStm: LPSTREAM, riid: REFIID, ppv: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoReleaseMarshalData*(
+  pStm: LPSTREAM
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoDisconnectObject*(
+  pUnk: LPUNKNOWN, dwReserved: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetStandardMarshal*(
+  riid: REFIID,
+  pUnk: LPUNKNOWN,
+  dwDestContext: DWORD,
+  pvDestContext: LPVOID,
+  mshlflags: DWORD,
+  ppMarshal: ptr LPMARSHAL,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoMarshalInterThreadInterfaceInStream*(
+  riid: REFIID, pUnk: LPUNKNOWN, ppStm: ptr LPSTREAM
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetInterfaceAndReleaseStream*(
+  pStm: LPSTREAM, iid: REFIID, ppv: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoCreateFreeThreadedMarshaler*(
+  punkOuter: LPUNKNOWN, ppunkMarshal: ptr LPUNKNOWN
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
 proc CoFreeUnusedLibraries*(): void {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoFreeUnusedLibrariesEx*(dwUnloadDelay: DWORD, dwReserved: DWORD): void {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoInitializeSecurity*(pSecDesc: PSECURITY_DESCRIPTOR, cAuthSvc: LONG, asAuthSvc: ptr SOLE_AUTHENTICATION_SERVICE, pReserved1: pointer, dwAuthnLevel: DWORD, dwImpLevel: DWORD, pAuthList: pointer, dwCapabilities: DWORD, pReserved3: pointer): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoSwitchCallContext*(pNewObject: ptr IUnknown, ppOldObject: ptr ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoCreateInstanceFromApp*(Clsid: REFCLSID, punkOuter: ptr IUnknown, dwClsCtx: DWORD, reserved: PVOID, dwCount: DWORD, pResults: ptr MULTI_QI): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoIsHandlerConnected*(pUnk: LPUNKNOWN): WINBOOL {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoDisconnectContext*(dwTimeout: DWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetCallContext*(riid: REFIID, ppInterface: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoQueryProxyBlanket*(pProxy: ptr IUnknown, pwAuthnSvc: ptr DWORD, pAuthzSvc: ptr DWORD, pServerPrincName: ptr LPOLESTR, pAuthnLevel: ptr DWORD, pImpLevel: ptr DWORD, pAuthInfo: ptr RPC_AUTH_IDENTITY_HANDLE, pCapabilites: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoSetProxyBlanket*(pProxy: ptr IUnknown, dwAuthnSvc: DWORD, dwAuthzSvc: DWORD, pServerPrincName: ptr OLECHAR, dwAuthnLevel: DWORD, dwImpLevel: DWORD, pAuthInfo: RPC_AUTH_IDENTITY_HANDLE, dwCapabilities: DWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoCopyProxy*(pProxy: ptr IUnknown, ppCopy: ptr ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoQueryClientBlanket*(pAuthnSvc: ptr DWORD, pAuthzSvc: ptr DWORD, pServerPrincName: ptr LPOLESTR, pAuthnLevel: ptr DWORD, pImpLevel: ptr DWORD, pPrivs: ptr RPC_AUTHZ_HANDLE, pCapabilities: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+proc CoFreeUnusedLibrariesEx*(
+  dwUnloadDelay: DWORD, dwReserved: DWORD
+): void {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoInitializeSecurity*(
+  pSecDesc: PSECURITY_DESCRIPTOR,
+  cAuthSvc: LONG,
+  asAuthSvc: ptr SOLE_AUTHENTICATION_SERVICE,
+  pReserved1: pointer,
+  dwAuthnLevel: DWORD,
+  dwImpLevel: DWORD,
+  pAuthList: pointer,
+  dwCapabilities: DWORD,
+  pReserved3: pointer,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoSwitchCallContext*(
+  pNewObject: ptr IUnknown, ppOldObject: ptr ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoCreateInstanceFromApp*(
+  Clsid: REFCLSID,
+  punkOuter: ptr IUnknown,
+  dwClsCtx: DWORD,
+  reserved: PVOID,
+  dwCount: DWORD,
+  pResults: ptr MULTI_QI,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoIsHandlerConnected*(
+  pUnk: LPUNKNOWN
+): WINBOOL {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoDisconnectContext*(
+  dwTimeout: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetCallContext*(
+  riid: REFIID, ppInterface: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoQueryProxyBlanket*(
+  pProxy: ptr IUnknown,
+  pwAuthnSvc: ptr DWORD,
+  pAuthzSvc: ptr DWORD,
+  pServerPrincName: ptr LPOLESTR,
+  pAuthnLevel: ptr DWORD,
+  pImpLevel: ptr DWORD,
+  pAuthInfo: ptr RPC_AUTH_IDENTITY_HANDLE,
+  pCapabilites: ptr DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoSetProxyBlanket*(
+  pProxy: ptr IUnknown,
+  dwAuthnSvc: DWORD,
+  dwAuthzSvc: DWORD,
+  pServerPrincName: ptr OLECHAR,
+  dwAuthnLevel: DWORD,
+  dwImpLevel: DWORD,
+  pAuthInfo: RPC_AUTH_IDENTITY_HANDLE,
+  dwCapabilities: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoCopyProxy*(
+  pProxy: ptr IUnknown, ppCopy: ptr ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoQueryClientBlanket*(
+  pAuthnSvc: ptr DWORD,
+  pAuthzSvc: ptr DWORD,
+  pServerPrincName: ptr LPOLESTR,
+  pAuthnLevel: ptr DWORD,
+  pImpLevel: ptr DWORD,
+  pPrivs: ptr RPC_AUTHZ_HANDLE,
+  pCapabilities: ptr DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
 proc CoImpersonateClient*(): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
 proc CoRevertToSelf*(): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoQueryAuthenticationServices*(pcAuthSvc: ptr DWORD, asAuthSvc: ptr ptr SOLE_AUTHENTICATION_SERVICE): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoCreateInstance*(rclsid: REFCLSID, pUnkOuter: LPUNKNOWN, dwClsContext: DWORD, riid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoCreateInstanceEx*(Clsid: REFCLSID, punkOuter: ptr IUnknown, dwClsCtx: DWORD, pServerInfo: ptr COSERVERINFO, dwCount: DWORD, pResults: ptr MULTI_QI): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetCancelObject*(dwThreadId: DWORD, iid: REFIID, ppUnk: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoSetCancelObject*(pUnk: ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoCancelCall*(dwThreadId: DWORD, ulTimeout: ULONG): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+proc CoQueryAuthenticationServices*(
+  pcAuthSvc: ptr DWORD, asAuthSvc: ptr ptr SOLE_AUTHENTICATION_SERVICE
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoCreateInstance*(
+  rclsid: REFCLSID,
+  pUnkOuter: LPUNKNOWN,
+  dwClsContext: DWORD,
+  riid: REFIID,
+  ppv: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoCreateInstanceEx*(
+  Clsid: REFCLSID,
+  punkOuter: ptr IUnknown,
+  dwClsCtx: DWORD,
+  pServerInfo: ptr COSERVERINFO,
+  dwCount: DWORD,
+  pResults: ptr MULTI_QI,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetCancelObject*(
+  dwThreadId: DWORD, iid: REFIID, ppUnk: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoSetCancelObject*(
+  pUnk: ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoCancelCall*(
+  dwThreadId: DWORD, ulTimeout: ULONG
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
 proc CoTestCancel*(): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoEnableCallCancellation*(pReserved: LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoDisableCallCancellation*(pReserved: LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StringFromCLSID*(rclsid: REFCLSID, lplpsz: ptr LPOLESTR): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CLSIDFromString*(lpsz: LPCOLESTR, pclsid: LPCLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StringFromIID*(rclsid: REFIID, lplpsz: ptr LPOLESTR): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc IIDFromString*(lpsz: LPCOLESTR, lpiid: LPIID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc ProgIDFromCLSID*(clsid: REFCLSID, lplpszProgID: ptr LPOLESTR): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CLSIDFromProgID*(lpszProgID: LPCOLESTR, lpclsid: LPCLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StringFromGUID2*(rguid: REFGUID, lpsz: LPOLESTR, cchMax: int32): int32 {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoCreateGuid*(pguid: ptr GUID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc PropVariantCopy*(pvarDest: ptr PROPVARIANT, pvarSrc: ptr PROPVARIANT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc PropVariantClear*(pvar: ptr PROPVARIANT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc FreePropVariantArray*(cVariants: ULONG, rgvars: ptr PROPVARIANT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoWaitForMultipleHandles*(dwFlags: DWORD, dwTimeout: DWORD, cHandles: ULONG, pHandles: LPHANDLE, lpdwindex: LPDWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetTreatAsClass*(clsidOld: REFCLSID, pClsidNew: LPCLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoInvalidateRemoteMachineBindings*(pszMachineName: LPOLESTR): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc DllGetClassObject*(rclsid: REFCLSID, riid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+proc CoEnableCallCancellation*(
+  pReserved: LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoDisableCallCancellation*(
+  pReserved: LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StringFromCLSID*(
+  rclsid: REFCLSID, lplpsz: ptr LPOLESTR
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CLSIDFromString*(
+  lpsz: LPCOLESTR, pclsid: LPCLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StringFromIID*(
+  rclsid: REFIID, lplpsz: ptr LPOLESTR
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc IIDFromString*(
+  lpsz: LPCOLESTR, lpiid: LPIID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc ProgIDFromCLSID*(
+  clsid: REFCLSID, lplpszProgID: ptr LPOLESTR
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CLSIDFromProgID*(
+  lpszProgID: LPCOLESTR, lpclsid: LPCLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StringFromGUID2*(
+  rguid: REFGUID, lpsz: LPOLESTR, cchMax: int32
+): int32 {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoCreateGuid*(
+  pguid: ptr GUID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc PropVariantCopy*(
+  pvarDest: ptr PROPVARIANT, pvarSrc: ptr PROPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc PropVariantClear*(
+  pvar: ptr PROPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc FreePropVariantArray*(
+  cVariants: ULONG, rgvars: ptr PROPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoWaitForMultipleHandles*(
+  dwFlags: DWORD,
+  dwTimeout: DWORD,
+  cHandles: ULONG,
+  pHandles: LPHANDLE,
+  lpdwindex: LPDWORD,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetTreatAsClass*(
+  clsidOld: REFCLSID, pClsidNew: LPCLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoInvalidateRemoteMachineBindings*(
+  pszMachineName: LPOLESTR
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc DllGetClassObject*(
+  rclsid: REFCLSID, riid: REFIID, ppv: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
 proc DllCanUnloadNow*(): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
 proc CoTaskMemAlloc*(cb: SIZE_T): LPVOID {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoTaskMemRealloc*(pv: LPVOID, cb: SIZE_T): LPVOID {.winapi, stdcall, dynlib: "ole32", importc.}
+proc CoTaskMemRealloc*(
+  pv: LPVOID, cb: SIZE_T
+): LPVOID {.winapi, stdcall, dynlib: "ole32", importc.}
+
 proc CoTaskMemFree*(pv: LPVOID): void {.winapi, stdcall, dynlib: "ole32", importc.}
 proc CoBuildVersion*(): DWORD {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoInitialize*(pvReserved: LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoRegisterMallocSpy*(pMallocSpy: LPMALLOCSPY): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+proc CoInitialize*(
+  pvReserved: LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoRegisterMallocSpy*(
+  pMallocSpy: LPMALLOCSPY
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
 proc CoRevokeMallocSpy*(): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoRegisterInitializeSpy*(pSpy: LPINITIALIZESPY, puliCookie: ptr ULARGE_INTEGER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoRevokeInitializeSpy*(uliCookie: ULARGE_INTEGER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetSystemSecurityPermissions*(comSDType: COMSD, ppSD: ptr PSECURITY_DESCRIPTOR): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoLoadLibrary*(lpszLibName: LPOLESTR, bAutoFree: WINBOOL): HINSTANCE {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoFreeLibrary*(hInst: HINSTANCE): void {.winapi, stdcall, dynlib: "ole32", importc.}
+proc CoRegisterInitializeSpy*(
+  pSpy: LPINITIALIZESPY, puliCookie: ptr ULARGE_INTEGER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoRevokeInitializeSpy*(
+  uliCookie: ULARGE_INTEGER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetSystemSecurityPermissions*(
+  comSDType: COMSD, ppSD: ptr PSECURITY_DESCRIPTOR
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoLoadLibrary*(
+  lpszLibName: LPOLESTR, bAutoFree: WINBOOL
+): HINSTANCE {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoFreeLibrary*(
+  hInst: HINSTANCE
+): void {.winapi, stdcall, dynlib: "ole32", importc.}
+
 proc CoFreeAllLibraries*(): void {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetInstanceFromFile*(pServerInfo: ptr COSERVERINFO, pClsid: ptr CLSID, punkOuter: ptr IUnknown, dwClsCtx: DWORD, grfMode: DWORD, pwszName: ptr OLECHAR, dwCount: DWORD, pResults: ptr MULTI_QI): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetInstanceFromIStorage*(pServerInfo: ptr COSERVERINFO, pClsid: ptr CLSID, punkOuter: ptr IUnknown, dwClsCtx: DWORD, pstg: ptr IStorage, dwCount: DWORD, pResults: ptr MULTI_QI): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoAllowSetForegroundWindow*(pUnk: ptr IUnknown, lpvReserved: LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc DcomChannelSetHResult*(pvReserved: LPVOID, pulReserved: ptr ULONG, appsHR: HRESULT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoIsOle1Class*(rclsid: REFCLSID): WINBOOL {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CLSIDFromProgIDEx*(lpszProgID: LPCOLESTR, lpclsid: LPCLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoFileTimeToDosDateTime*(lpFileTime: ptr FILETIME, lpDosDate: LPWORD, lpDosTime: LPWORD): WINBOOL {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoDosDateTimeToFileTime*(nDosDate: WORD, nDosTime: WORD, lpFileTime: ptr FILETIME): WINBOOL {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoFileTimeNow*(lpFileTime: ptr FILETIME): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoRegisterMessageFilter*(lpMessageFilter: LPMESSAGEFILTER, lplpMessageFilter: ptr LPMESSAGEFILTER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoRegisterChannelHook*(ExtensionUuid: REFGUID, pChannelHook: ptr IChannelHook): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoTreatAsClass*(clsidOld: REFCLSID, clsidNew: REFCLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreateDataCache*(pUnkOuter: LPUNKNOWN, rclsid: REFCLSID, iid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StgCreateDocfile*(pwcsName: ptr WCHAR, grfMode: DWORD, reserved: DWORD, ppstgOpen: ptr ptr IStorage): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StgCreateDocfileOnILockBytes*(plkbyt: ptr ILockBytes, grfMode: DWORD, reserved: DWORD, ppstgOpen: ptr ptr IStorage): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StgOpenStorage*(pwcsName: ptr WCHAR, pstgPriority: ptr IStorage, grfMode: DWORD, snbExclude: SNB, reserved: DWORD, ppstgOpen: ptr ptr IStorage): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StgOpenStorageOnILockBytes*(plkbyt: ptr ILockBytes, pstgPriority: ptr IStorage, grfMode: DWORD, snbExclude: SNB, reserved: DWORD, ppstgOpen: ptr ptr IStorage): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StgIsStorageFile*(pwcsName: ptr WCHAR): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StgIsStorageILockBytes*(plkbyt: ptr ILockBytes): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StgSetTimes*(lpszName: ptr WCHAR, pctime: ptr FILETIME, patime: ptr FILETIME, pmtime: ptr FILETIME): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StgOpenAsyncDocfileOnIFillLockBytes*(pflb: ptr IFillLockBytes, grfMode: DWORD, asyncFlags: DWORD, ppstgOpen: ptr ptr IStorage): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StgGetIFillLockBytesOnILockBytes*(pilb: ptr ILockBytes, ppflb: ptr ptr IFillLockBytes): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StgGetIFillLockBytesOnFile*(pwcsName: ptr OLECHAR, ppflb: ptr ptr IFillLockBytes): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StgCreateStorageEx*(pwcsName: ptr WCHAR, grfMode: DWORD, stgfmt: DWORD, grfAttrs: DWORD, pStgOptions: ptr STGOPTIONS, pSecurityDescriptor: PSECURITY_DESCRIPTOR, riid: REFIID, ppObjectOpen: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StgOpenStorageEx*(pwcsName: ptr WCHAR, grfMode: DWORD, stgfmt: DWORD, grfAttrs: DWORD, pStgOptions: ptr STGOPTIONS, pSecurityDescriptor: PSECURITY_DESCRIPTOR, riid: REFIID, ppObjectOpen: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc BindMoniker*(pmk: LPMONIKER, grfOpt: DWORD, iidResult: REFIID, ppvResult: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoGetObject*(pszName: LPCWSTR, pBindOptions: ptr BIND_OPTS, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc MkParseDisplayName*(pbc: LPBC, szUserName: LPCOLESTR, pchEaten: ptr ULONG, ppmk: ptr LPMONIKER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc MonikerRelativePathTo*(pmkSrc: LPMONIKER, pmkDest: LPMONIKER, ppmkRelPath: ptr LPMONIKER, dwReserved: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc MonikerCommonPrefixWith*(pmkThis: LPMONIKER, pmkOther: LPMONIKER, ppmkCommon: ptr LPMONIKER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreateBindCtx*(reserved: DWORD, ppbc: ptr LPBC): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreateGenericComposite*(pmkFirst: LPMONIKER, pmkRest: LPMONIKER, ppmkComposite: ptr LPMONIKER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc GetClassFile*(szFilename: LPCOLESTR, pclsid: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreateClassMoniker*(rclsid: REFCLSID, ppmk: ptr LPMONIKER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreateFileMoniker*(lpszPathName: LPCOLESTR, ppmk: ptr LPMONIKER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreateItemMoniker*(lpszDelim: LPCOLESTR, lpszItem: LPCOLESTR, ppmk: ptr LPMONIKER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreateAntiMoniker*(ppmk: ptr LPMONIKER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreatePointerMoniker*(punk: LPUNKNOWN, ppmk: ptr LPMONIKER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreateObjrefMoniker*(punk: LPUNKNOWN, ppmk: ptr LPMONIKER): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CoInstall*(pbc: ptr IBindCtx, dwFlags: DWORD, pClassSpec: ptr uCLSSPEC, pQuery: ptr QUERYCONTEXT, pszCodeBase: LPWSTR): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc GetRunningObjectTable*(reserved: DWORD, pprot: ptr LPRUNNINGOBJECTTABLE): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreateURLMoniker*(pMkCtx: LPMONIKER, szURL: LPCWSTR, ppmk: ptr LPMONIKER): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CreateURLMonikerEx*(pMkCtx: LPMONIKER, szURL: LPCWSTR, ppmk: ptr LPMONIKER, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc GetClassURL*(szURL: LPCWSTR, pClsID: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CreateAsyncBindCtx*(reserved: DWORD, pBSCb: ptr IBindStatusCallback, pEFetc: ptr IEnumFORMATETC, ppBC: ptr ptr IBindCtx): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CreateURLMonikerEx2*(pMkCtx: LPMONIKER, pUri: ptr IUri, ppmk: ptr LPMONIKER, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CreateAsyncBindCtxEx*(pbc: ptr IBindCtx, dwOptions: DWORD, pBSCb: ptr IBindStatusCallback, pEnum: ptr IEnumFORMATETC, ppBC: ptr ptr IBindCtx, reserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc MkParseDisplayNameEx*(pbc: ptr IBindCtx, szDisplayName: LPCWSTR, pchEaten: ptr ULONG, ppmk: ptr LPMONIKER): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc RegisterBindStatusCallback*(pBC: LPBC, pBSCb: ptr IBindStatusCallback, ppBSCBPrev: ptr ptr IBindStatusCallback, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc RevokeBindStatusCallback*(pBC: LPBC, pBSCb: ptr IBindStatusCallback): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc GetClassFileOrMime*(pBC: LPBC, szFilename: LPCWSTR, pBuffer: LPVOID, cbSize: DWORD, szMime: LPCWSTR, dwReserved: DWORD, pclsid: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc IsValidURL*(pBC: LPBC, szURL: LPCWSTR, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoGetClassObjectFromURL*(rCLASSID: REFCLSID, szCODE: LPCWSTR, dwFileVersionMS: DWORD, dwFileVersionLS: DWORD, szTYPE: LPCWSTR, pBindCtx: LPBINDCTX, dwClsContext: DWORD, pvReserved: LPVOID, riid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc IEInstallScope*(pdwScope: LPDWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc FaultInIEFeature*(hWnd: HWND, pClassSpec: ptr uCLSSPEC, pQuery: ptr QUERYCONTEXT, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc GetComponentIDFromCLSSPEC*(pClassspec: ptr uCLSSPEC, ppszComponentID: ptr LPSTR): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc IsAsyncMoniker*(pmk: ptr IMoniker): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc RegisterMediaTypes*(ctypes: UINT, rgszTypes: ptr LPCSTR, rgcfTypes: ptr CLIPFORMAT): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc FindMediaType*(rgszTypes: LPCSTR, rgcfTypes: ptr CLIPFORMAT): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CreateFormatEnumerator*(cfmtetc: UINT, rgfmtetc: ptr FORMATETC, ppenumfmtetc: ptr ptr IEnumFORMATETC): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc RegisterFormatEnumerator*(pBC: LPBC, pEFetc: ptr IEnumFORMATETC, reserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc RevokeFormatEnumerator*(pBC: LPBC, pEFetc: ptr IEnumFORMATETC): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc RegisterMediaTypeClass*(pBC: LPBC, ctypes: UINT, rgszTypes: ptr LPCSTR, rgclsID: ptr CLSID, reserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc FindMediaTypeClass*(pBC: LPBC, szType: LPCSTR, pclsID: ptr CLSID, reserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc UrlMkSetSessionOption*(dwOption: DWORD, pBuffer: LPVOID, dwBufferLength: DWORD, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc UrlMkGetSessionOption*(dwOption: DWORD, pBuffer: LPVOID, dwBufferLength: DWORD, pdwBufferLengthOut: ptr DWORD, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc FindMimeFromData*(pBC: LPBC, pwzUrl: LPCWSTR, pBuffer: LPVOID, cbSize: DWORD, pwzMimeProposed: LPCWSTR, dwMimeFlags: DWORD, ppwzMimeOut: ptr LPWSTR, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc ObtainUserAgentString*(dwOption: DWORD, pszUAOut: LPSTR, cbSize: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CompareSecurityIds*(pbSecurityId1: ptr BYTE, dwLen1: DWORD, pbSecurityId2: ptr BYTE, dwLen2: DWORD, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CompatFlagsFromClsid*(pclsid: ptr CLSID, pdwCompatFlags: LPDWORD, pdwMiscStatusFlags: LPDWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CreateUri*(pwzURI: LPCWSTR, dwFlags: DWORD, dwReserved: DWORD_PTR, ppURI: ptr ptr IUri): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CreateUriWithFragment*(pwzURI: LPCWSTR, pwzFragment: LPCWSTR, dwFlags: DWORD, dwReserved: DWORD_PTR, ppURI: ptr ptr IUri): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CreateUriFromMultiByteString*(pszANSIInputUri: LPCSTR, dwEncodingFlags: DWORD, dwCodePage: DWORD, dwCreateFlags: DWORD, dwReserved: DWORD_PTR, ppUri: ptr ptr IUri): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CreateIUriBuilder*(pIUri: ptr IUri, dwFlags: DWORD, dwReserved: DWORD_PTR, ppIUriBuilder: ptr ptr IUriBuilder): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc HlinkSimpleNavigateToString*(szTarget: LPCWSTR, szLocation: LPCWSTR, szTargetFrameName: LPCWSTR, pUnk: ptr IUnknown, pbc: ptr IBindCtx, P6: ptr IBindStatusCallback, grfHLNF: DWORD, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc HlinkSimpleNavigateToMoniker*(pmkTarget: ptr IMoniker, szLocation: LPCWSTR, szTargetFrameName: LPCWSTR, pUnk: ptr IUnknown, pbc: ptr IBindCtx, P6: ptr IBindStatusCallback, grfHLNF: DWORD, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc URLOpenStreamA*(P1: LPUNKNOWN, P2: LPCSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc URLOpenStreamW*(P1: LPUNKNOWN, P2: LPCWSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc URLOpenPullStreamA*(P1: LPUNKNOWN, P2: LPCSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc URLOpenPullStreamW*(P1: LPUNKNOWN, P2: LPCWSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc URLDownloadToFileA*(P1: LPUNKNOWN, P2: LPCSTR, P3: LPCSTR, P4: DWORD, P5: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc URLDownloadToFileW*(P1: LPUNKNOWN, P2: LPCWSTR, P3: LPCWSTR, P4: DWORD, P5: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc URLDownloadToCacheFileA*(P1: LPUNKNOWN, P2: LPCSTR, P3: LPSTR, P4: DWORD, P5: DWORD, P6: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc URLDownloadToCacheFileW*(P1: LPUNKNOWN, P2: LPCWSTR, P3: LPWSTR, P4: DWORD, P5: DWORD, P6: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc URLOpenBlockingStreamA*(P1: LPUNKNOWN, P2: LPCSTR, P3: ptr LPSTREAM, P4: DWORD, P5: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc URLOpenBlockingStreamW*(P1: LPUNKNOWN, P2: LPCWSTR, P3: ptr LPSTREAM, P4: DWORD, P5: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc HlinkGoBack*(pUnk: ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc HlinkGoForward*(pUnk: ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc HlinkNavigateString*(pUnk: ptr IUnknown, szTarget: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc HlinkNavigateMoniker*(pUnk: ptr IUnknown, pmkTarget: ptr IMoniker): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetParseUrl*(pwzUrl: LPCWSTR, ParseAction: PARSEACTION, dwFlags: DWORD, pszResult: LPWSTR, cchResult: DWORD, pcchResult: ptr DWORD, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetParseIUri*(pIUri: ptr IUri, ParseAction: PARSEACTION, dwFlags: DWORD, pwzResult: LPWSTR, cchResult: DWORD, pcchResult: ptr DWORD, dwReserved: DWORD_PTR): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetCombineUrl*(pwzBaseUrl: LPCWSTR, pwzRelativeUrl: LPCWSTR, dwCombineFlags: DWORD, pszResult: LPWSTR, cchResult: DWORD, pcchResult: ptr DWORD, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetCombineUrlEx*(pBaseUri: ptr IUri, pwzRelativeUrl: LPCWSTR, dwCombineFlags: DWORD, ppCombinedUri: ptr ptr IUri, dwReserved: DWORD_PTR): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetCombineIUri*(pBaseUri: ptr IUri, pRelativeUri: ptr IUri, dwCombineFlags: DWORD, ppCombinedUri: ptr ptr IUri, dwReserved: DWORD_PTR): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetCompareUrl*(pwzUrl1: LPCWSTR, pwzUrl2: LPCWSTR, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetGetProtocolFlags*(pwzUrl: LPCWSTR, pdwFlags: ptr DWORD, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetQueryInfo*(pwzUrl: LPCWSTR, QueryOptions: QUERYOPTION, dwQueryFlags: DWORD, pvBuffer: LPVOID, cbBuffer: DWORD, pcbBuffer: ptr DWORD, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetGetSession*(dwSessionMode: DWORD, ppIInternetSession: ptr ptr IInternetSession, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetGetSecurityUrl*(pwszUrl: LPCWSTR, ppwszSecUrl: ptr LPWSTR, psuAction: PSUACTION, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc AsyncInstallDistributionUnit*(szDistUnit: LPCWSTR, szTYPE: LPCWSTR, szExt: LPCWSTR, dwFileVersionMS: DWORD, dwFileVersionLS: DWORD, szURL: LPCWSTR, pbc: ptr IBindCtx, pvReserved: LPVOID, flags: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetGetSecurityUrlEx*(pUri: ptr IUri, ppSecUri: ptr ptr IUri, psuAction: PSUACTION, dwReserved: DWORD_PTR): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetSetFeatureEnabled*(FeatureEntry: INTERNETFEATURELIST, dwFlags: DWORD, fEnable: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetIsFeatureEnabled*(FeatureEntry: INTERNETFEATURELIST, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetIsFeatureEnabledForUrl*(FeatureEntry: INTERNETFEATURELIST, dwFlags: DWORD, szURL: LPCWSTR, pSecMgr: ptr IInternetSecurityManager): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetIsFeatureEnabledForIUri*(FeatureEntry: INTERNETFEATURELIST, dwFlags: DWORD, pIUri: ptr IUri, pSecMgr: ptr IInternetSecurityManagerEx2): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetIsFeatureZoneElevationEnabled*(szFromURL: LPCWSTR, szToURL: LPCWSTR, pSecMgr: ptr IInternetSecurityManager, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CopyStgMedium*(pcstgmedSrc: ptr STGMEDIUM, pstgmedDest: ptr STGMEDIUM): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CopyBindInfo*(pcbiSrc: ptr BINDINFO, pbiDest: ptr BINDINFO): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc ReleaseBindInfo*(pbindinfo: ptr BINDINFO): void {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc OInetParseUrl*(pwzUrl: LPCWSTR, ParseAction: PARSEACTION, dwFlags: DWORD, pszResult: LPWSTR, cchResult: DWORD, pcchResult: ptr DWORD, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "CoInternetParseUrl".}
-proc OInetCombineUrl*(pwzBaseUrl: LPCWSTR, pwzRelativeUrl: LPCWSTR, dwCombineFlags: DWORD, pszResult: LPWSTR, cchResult: DWORD, pcchResult: ptr DWORD, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "CoInternetCombineUrl".}
-proc OInetCombineUrlEx*(pBaseUri: ptr IUri, pwzRelativeUrl: LPCWSTR, dwCombineFlags: DWORD, ppCombinedUri: ptr ptr IUri, dwReserved: DWORD_PTR): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "CoInternetCombineUrlEx".}
-proc OInetCombineIUri*(pBaseUri: ptr IUri, pRelativeUri: ptr IUri, dwCombineFlags: DWORD, ppCombinedUri: ptr ptr IUri, dwReserved: DWORD_PTR): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "CoInternetCombineIUri".}
-proc OInetCompareUrl*(pwzUrl1: LPCWSTR, pwzUrl2: LPCWSTR, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "CoInternetCompareUrl".}
-proc OInetQueryInfo*(pwzUrl: LPCWSTR, QueryOptions: QUERYOPTION, dwQueryFlags: DWORD, pvBuffer: LPVOID, cbBuffer: DWORD, pcbBuffer: ptr DWORD, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "CoInternetQueryInfo".}
-proc OInetGetSession*(dwSessionMode: DWORD, ppIInternetSession: ptr ptr IInternetSession, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "CoInternetGetSession".}
-proc CoInternetCreateSecurityManager*(pSP: ptr IServiceProvider, ppSM: ptr ptr IInternetSecurityManager, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc CoInternetCreateZoneManager*(pSP: ptr IServiceProvider, ppZM: ptr ptr IInternetZoneManager, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc GetSoftwareUpdateInfo*(szDistUnit: LPCWSTR, psdi: LPSOFTDISTINFO): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc SetSoftwareUpdateAdvertisementState*(szDistUnit: LPCWSTR, dwAdState: DWORD, dwAdvertisedVersionMS: DWORD, dwAdvertisedVersionLS: DWORD): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc IsLoggingEnabledA*(pszUrl: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc IsLoggingEnabledW*(pwszUrl: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc WriteHitLogging*(lpLogginginfo: LPHIT_LOGGING_INFO): WINBOOL {.winapi, stdcall, dynlib: "urlmon", importc.}
-proc StgCreatePropStg*(pUnk: ptr IUnknown, fmtid: REFFMTID, pclsid: ptr CLSID, grfFlags: DWORD, dwReserved: DWORD, ppPropStg: ptr ptr IPropertyStorage): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StgOpenPropStg*(pUnk: ptr IUnknown, fmtid: REFFMTID, grfFlags: DWORD, dwReserved: DWORD, ppPropStg: ptr ptr IPropertyStorage): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc StgCreatePropSetStg*(pStorage: ptr IStorage, dwReserved: DWORD, ppPropSetStg: ptr ptr IPropertySetStorage): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc FmtIdToPropStgName*(pfmtid: ptr FMTID, oszName: LPOLESTR): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc PropStgNameToFmtId*(oszName: LPOLESTR, pfmtid: ptr FMTID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc CreateStdProgressIndicator*(hwndParent: HWND, pszTitle: LPCOLESTR, pIbscCaller: ptr IBindStatusCallback, ppIbsc: ptr ptr IBindStatusCallback): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
-proc PSCoerceToCanonicalValue*(key: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSCreateAdapterFromPropertyStore*(pps: ptr IPropertyStore, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSCreateDelayedMultiplexPropertyStore*(flags: GETPROPERTYSTOREFLAGS, pdpsf: ptr IDelayedPropertyStoreFactory, rgStoreIds: ptr DWORD, cStores: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSCreateMemoryPropertyStore*(riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSCreateMultiplexPropertyStore*(prgpunkStores: ptr ptr IUnknown, cStores: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSCreatePropertyChangeArray*(rgpropkey: ptr PROPERTYKEY, rgflags: ptr PKA_FLAGS, rgpropvar: ptr PROPVARIANT, cChanges: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSCreatePropertyStoreFromObject*(punk: ptr IUnknown, grfMode: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSCreatePropertyStoreFromPropertySetStorage*(ppss: ptr IPropertySetStorage, grfMode: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSCreateSimplePropertyChange*(flags: PKA_FLAGS, key: REFPROPERTYKEY, propvar: REFPROPVARIANT, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSEnumeratePropertyDescriptions*(filterOn: PROPDESC_ENUMFILTER, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSFormatForDisplay*(propkey: REFPROPERTYKEY, propvar: REFPROPVARIANT, pdfFlags: PROPDESC_FORMAT_FLAGS, pwszText: LPWSTR, cchText: DWORD): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSFormatForDisplayAlloc*(key: REFPROPERTYKEY, propvar: REFPROPVARIANT, pdff: PROPDESC_FORMAT_FLAGS, ppszDisplay: ptr PWSTR): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSFormatPropertyValue*(pps: ptr IPropertyStore, ppd: ptr IPropertyDescription, pdff: PROPDESC_FORMAT_FLAGS, ppszDisplay: ptr LPWSTR): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSGetImageReferenceForValue*(propkey: REFPROPERTYKEY, propvar: REFPROPVARIANT, ppszImageRes: ptr PWSTR): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSGetItemPropertyHandler*(punkItem: ptr IUnknown, fReadWrite: BOOL, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSGetItemPropertyHandlerWithCreateObject*(punkItem: ptr IUnknown, fReadWrite: BOOL, punkCreateObject: ptr IUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSGetNamedPropertyFromPropertyStorage*(psps: PCUSERIALIZEDPROPSTORAGE, cb: DWORD, pszName: LPCWSTR, ppropvar: ptr PROPVARIANT): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSGetNameFromPropertyKey*(propkey: REFPROPERTYKEY, ppszCanonicalName: ptr PWSTR): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSGetPropertyDescription*(propkey: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSGetPropertyDescriptionByName*(pszCanonicalName: LPCWSTR, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSGetPropertyDescriptionListFromString*(pszPropList: LPCWSTR, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSGetPropertyFromPropertyStorage*(psps: PCUSERIALIZEDPROPSTORAGE, cb: DWORD, rpkey: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSGetPropertyKeyFromName*(pszName: PCWSTR, ppropkey: ptr PROPERTYKEY): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSGetPropertySystem*(riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSGetPropertyValue*(pps: ptr IPropertyStore, ppd: ptr IPropertyDescription, ppropvar: ptr PROPVARIANT): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSLookupPropertyHandlerCLSID*(pszFilePath: PCWSTR, pclsid: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_Delete*(propBag: ptr IPropertyBag, propName: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadBOOL*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr BOOL): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadBSTR*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadDWORD*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadGUID*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr GUID): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadInt*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr INT): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadLONG*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadPOINTL*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr POINTL): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadPOINTS*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr POINTS): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadPropertyKey*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr PROPERTYKEY): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadRECTL*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr RECTL): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadSHORT*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr SHORT): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadStr*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: LPWSTR, characterCount: int32): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadStrAlloc*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr PWSTR): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadStream*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr ptr IStream): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadType*(propBag: ptr IPropertyBag, propName: LPCWSTR, `var`: ptr VARIANT, `type`: VARTYPE): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadULONGLONG*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr ULONGLONG): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_ReadUnknown*(propBag: ptr IPropertyBag, propName: LPCWSTR, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WriteBOOL*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: BOOL): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WriteBSTR*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: BSTR): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WriteDWORD*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: DWORD): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WriteGUID*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr GUID): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WriteInt*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: INT): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WriteLONG*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: LONG): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WritePOINTL*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr POINTL): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WritePOINTS*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr POINTS): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WritePropertyKey*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: REFPROPERTYKEY): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WriteRECTL*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr RECTL): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WriteSHORT*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: SHORT): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WriteStr*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WriteStream*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr IStream): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WriteULONGLONG*(propBag: ptr IPropertyBag, propName: LPCWSTR, value: ULONGLONG): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyBag_WriteUnknown*(propBag: ptr IPropertyBag, propName: LPCWSTR, punk: ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSPropertyKeyFromString*(pszString: LPCWSTR, pkey: ptr PROPERTYKEY): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+proc CoGetInstanceFromFile*(
+  pServerInfo: ptr COSERVERINFO,
+  pClsid: ptr CLSID,
+  punkOuter: ptr IUnknown,
+  dwClsCtx: DWORD,
+  grfMode: DWORD,
+  pwszName: ptr OLECHAR,
+  dwCount: DWORD,
+  pResults: ptr MULTI_QI,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetInstanceFromIStorage*(
+  pServerInfo: ptr COSERVERINFO,
+  pClsid: ptr CLSID,
+  punkOuter: ptr IUnknown,
+  dwClsCtx: DWORD,
+  pstg: ptr IStorage,
+  dwCount: DWORD,
+  pResults: ptr MULTI_QI,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoAllowSetForegroundWindow*(
+  pUnk: ptr IUnknown, lpvReserved: LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc DcomChannelSetHResult*(
+  pvReserved: LPVOID, pulReserved: ptr ULONG, appsHR: HRESULT
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoIsOle1Class*(
+  rclsid: REFCLSID
+): WINBOOL {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CLSIDFromProgIDEx*(
+  lpszProgID: LPCOLESTR, lpclsid: LPCLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoFileTimeToDosDateTime*(
+  lpFileTime: ptr FILETIME, lpDosDate: LPWORD, lpDosTime: LPWORD
+): WINBOOL {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoDosDateTimeToFileTime*(
+  nDosDate: WORD, nDosTime: WORD, lpFileTime: ptr FILETIME
+): WINBOOL {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoFileTimeNow*(
+  lpFileTime: ptr FILETIME
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoRegisterMessageFilter*(
+  lpMessageFilter: LPMESSAGEFILTER, lplpMessageFilter: ptr LPMESSAGEFILTER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoRegisterChannelHook*(
+  ExtensionUuid: REFGUID, pChannelHook: ptr IChannelHook
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoTreatAsClass*(
+  clsidOld: REFCLSID, clsidNew: REFCLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CreateDataCache*(
+  pUnkOuter: LPUNKNOWN, rclsid: REFCLSID, iid: REFIID, ppv: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StgCreateDocfile*(
+  pwcsName: ptr WCHAR, grfMode: DWORD, reserved: DWORD, ppstgOpen: ptr ptr IStorage
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StgCreateDocfileOnILockBytes*(
+  plkbyt: ptr ILockBytes, grfMode: DWORD, reserved: DWORD, ppstgOpen: ptr ptr IStorage
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StgOpenStorage*(
+  pwcsName: ptr WCHAR,
+  pstgPriority: ptr IStorage,
+  grfMode: DWORD,
+  snbExclude: SNB,
+  reserved: DWORD,
+  ppstgOpen: ptr ptr IStorage,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StgOpenStorageOnILockBytes*(
+  plkbyt: ptr ILockBytes,
+  pstgPriority: ptr IStorage,
+  grfMode: DWORD,
+  snbExclude: SNB,
+  reserved: DWORD,
+  ppstgOpen: ptr ptr IStorage,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StgIsStorageFile*(
+  pwcsName: ptr WCHAR
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StgIsStorageILockBytes*(
+  plkbyt: ptr ILockBytes
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StgSetTimes*(
+  lpszName: ptr WCHAR, pctime: ptr FILETIME, patime: ptr FILETIME, pmtime: ptr FILETIME
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StgOpenAsyncDocfileOnIFillLockBytes*(
+  pflb: ptr IFillLockBytes,
+  grfMode: DWORD,
+  asyncFlags: DWORD,
+  ppstgOpen: ptr ptr IStorage,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StgGetIFillLockBytesOnILockBytes*(
+  pilb: ptr ILockBytes, ppflb: ptr ptr IFillLockBytes
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StgGetIFillLockBytesOnFile*(
+  pwcsName: ptr OLECHAR, ppflb: ptr ptr IFillLockBytes
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StgCreateStorageEx*(
+  pwcsName: ptr WCHAR,
+  grfMode: DWORD,
+  stgfmt: DWORD,
+  grfAttrs: DWORD,
+  pStgOptions: ptr STGOPTIONS,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  riid: REFIID,
+  ppObjectOpen: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StgOpenStorageEx*(
+  pwcsName: ptr WCHAR,
+  grfMode: DWORD,
+  stgfmt: DWORD,
+  grfAttrs: DWORD,
+  pStgOptions: ptr STGOPTIONS,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  riid: REFIID,
+  ppObjectOpen: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc BindMoniker*(
+  pmk: LPMONIKER, grfOpt: DWORD, iidResult: REFIID, ppvResult: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoGetObject*(
+  pszName: LPCWSTR, pBindOptions: ptr BIND_OPTS, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc MkParseDisplayName*(
+  pbc: LPBC, szUserName: LPCOLESTR, pchEaten: ptr ULONG, ppmk: ptr LPMONIKER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc MonikerRelativePathTo*(
+  pmkSrc: LPMONIKER, pmkDest: LPMONIKER, ppmkRelPath: ptr LPMONIKER, dwReserved: WINBOOL
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc MonikerCommonPrefixWith*(
+  pmkThis: LPMONIKER, pmkOther: LPMONIKER, ppmkCommon: ptr LPMONIKER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CreateBindCtx*(
+  reserved: DWORD, ppbc: ptr LPBC
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CreateGenericComposite*(
+  pmkFirst: LPMONIKER, pmkRest: LPMONIKER, ppmkComposite: ptr LPMONIKER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc GetClassFile*(
+  szFilename: LPCOLESTR, pclsid: ptr CLSID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CreateClassMoniker*(
+  rclsid: REFCLSID, ppmk: ptr LPMONIKER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CreateFileMoniker*(
+  lpszPathName: LPCOLESTR, ppmk: ptr LPMONIKER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CreateItemMoniker*(
+  lpszDelim: LPCOLESTR, lpszItem: LPCOLESTR, ppmk: ptr LPMONIKER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CreateAntiMoniker*(
+  ppmk: ptr LPMONIKER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CreatePointerMoniker*(
+  punk: LPUNKNOWN, ppmk: ptr LPMONIKER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CreateObjrefMoniker*(
+  punk: LPUNKNOWN, ppmk: ptr LPMONIKER
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CoInstall*(
+  pbc: ptr IBindCtx,
+  dwFlags: DWORD,
+  pClassSpec: ptr uCLSSPEC,
+  pQuery: ptr QUERYCONTEXT,
+  pszCodeBase: LPWSTR,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc GetRunningObjectTable*(
+  reserved: DWORD, pprot: ptr LPRUNNINGOBJECTTABLE
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CreateURLMoniker*(
+  pMkCtx: LPMONIKER, szURL: LPCWSTR, ppmk: ptr LPMONIKER
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CreateURLMonikerEx*(
+  pMkCtx: LPMONIKER, szURL: LPCWSTR, ppmk: ptr LPMONIKER, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc GetClassURL*(
+  szURL: LPCWSTR, pClsID: ptr CLSID
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CreateAsyncBindCtx*(
+  reserved: DWORD,
+  pBSCb: ptr IBindStatusCallback,
+  pEFetc: ptr IEnumFORMATETC,
+  ppBC: ptr ptr IBindCtx,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CreateURLMonikerEx2*(
+  pMkCtx: LPMONIKER, pUri: ptr IUri, ppmk: ptr LPMONIKER, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CreateAsyncBindCtxEx*(
+  pbc: ptr IBindCtx,
+  dwOptions: DWORD,
+  pBSCb: ptr IBindStatusCallback,
+  pEnum: ptr IEnumFORMATETC,
+  ppBC: ptr ptr IBindCtx,
+  reserved: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc MkParseDisplayNameEx*(
+  pbc: ptr IBindCtx, szDisplayName: LPCWSTR, pchEaten: ptr ULONG, ppmk: ptr LPMONIKER
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc RegisterBindStatusCallback*(
+  pBC: LPBC,
+  pBSCb: ptr IBindStatusCallback,
+  ppBSCBPrev: ptr ptr IBindStatusCallback,
+  dwReserved: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc RevokeBindStatusCallback*(
+  pBC: LPBC, pBSCb: ptr IBindStatusCallback
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc GetClassFileOrMime*(
+  pBC: LPBC,
+  szFilename: LPCWSTR,
+  pBuffer: LPVOID,
+  cbSize: DWORD,
+  szMime: LPCWSTR,
+  dwReserved: DWORD,
+  pclsid: ptr CLSID,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc IsValidURL*(
+  pBC: LPBC, szURL: LPCWSTR, dwReserved: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoGetClassObjectFromURL*(
+  rCLASSID: REFCLSID,
+  szCODE: LPCWSTR,
+  dwFileVersionMS: DWORD,
+  dwFileVersionLS: DWORD,
+  szTYPE: LPCWSTR,
+  pBindCtx: LPBINDCTX,
+  dwClsContext: DWORD,
+  pvReserved: LPVOID,
+  riid: REFIID,
+  ppv: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc IEInstallScope*(
+  pdwScope: LPDWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc FaultInIEFeature*(
+  hWnd: HWND, pClassSpec: ptr uCLSSPEC, pQuery: ptr QUERYCONTEXT, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc GetComponentIDFromCLSSPEC*(
+  pClassspec: ptr uCLSSPEC, ppszComponentID: ptr LPSTR
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc IsAsyncMoniker*(
+  pmk: ptr IMoniker
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc RegisterMediaTypes*(
+  ctypes: UINT, rgszTypes: ptr LPCSTR, rgcfTypes: ptr CLIPFORMAT
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc FindMediaType*(
+  rgszTypes: LPCSTR, rgcfTypes: ptr CLIPFORMAT
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CreateFormatEnumerator*(
+  cfmtetc: UINT, rgfmtetc: ptr FORMATETC, ppenumfmtetc: ptr ptr IEnumFORMATETC
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc RegisterFormatEnumerator*(
+  pBC: LPBC, pEFetc: ptr IEnumFORMATETC, reserved: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc RevokeFormatEnumerator*(
+  pBC: LPBC, pEFetc: ptr IEnumFORMATETC
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc RegisterMediaTypeClass*(
+  pBC: LPBC, ctypes: UINT, rgszTypes: ptr LPCSTR, rgclsID: ptr CLSID, reserved: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc FindMediaTypeClass*(
+  pBC: LPBC, szType: LPCSTR, pclsID: ptr CLSID, reserved: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc UrlMkSetSessionOption*(
+  dwOption: DWORD, pBuffer: LPVOID, dwBufferLength: DWORD, dwReserved: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc UrlMkGetSessionOption*(
+  dwOption: DWORD,
+  pBuffer: LPVOID,
+  dwBufferLength: DWORD,
+  pdwBufferLengthOut: ptr DWORD,
+  dwReserved: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc FindMimeFromData*(
+  pBC: LPBC,
+  pwzUrl: LPCWSTR,
+  pBuffer: LPVOID,
+  cbSize: DWORD,
+  pwzMimeProposed: LPCWSTR,
+  dwMimeFlags: DWORD,
+  ppwzMimeOut: ptr LPWSTR,
+  dwReserved: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc ObtainUserAgentString*(
+  dwOption: DWORD, pszUAOut: LPSTR, cbSize: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CompareSecurityIds*(
+  pbSecurityId1: ptr BYTE,
+  dwLen1: DWORD,
+  pbSecurityId2: ptr BYTE,
+  dwLen2: DWORD,
+  dwReserved: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CompatFlagsFromClsid*(
+  pclsid: ptr CLSID, pdwCompatFlags: LPDWORD, pdwMiscStatusFlags: LPDWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CreateUri*(
+  pwzURI: LPCWSTR, dwFlags: DWORD, dwReserved: DWORD_PTR, ppURI: ptr ptr IUri
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CreateUriWithFragment*(
+  pwzURI: LPCWSTR,
+  pwzFragment: LPCWSTR,
+  dwFlags: DWORD,
+  dwReserved: DWORD_PTR,
+  ppURI: ptr ptr IUri,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CreateUriFromMultiByteString*(
+  pszANSIInputUri: LPCSTR,
+  dwEncodingFlags: DWORD,
+  dwCodePage: DWORD,
+  dwCreateFlags: DWORD,
+  dwReserved: DWORD_PTR,
+  ppUri: ptr ptr IUri,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CreateIUriBuilder*(
+  pIUri: ptr IUri,
+  dwFlags: DWORD,
+  dwReserved: DWORD_PTR,
+  ppIUriBuilder: ptr ptr IUriBuilder,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc HlinkSimpleNavigateToString*(
+  szTarget: LPCWSTR,
+  szLocation: LPCWSTR,
+  szTargetFrameName: LPCWSTR,
+  pUnk: ptr IUnknown,
+  pbc: ptr IBindCtx,
+  P6: ptr IBindStatusCallback,
+  grfHLNF: DWORD,
+  dwReserved: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc HlinkSimpleNavigateToMoniker*(
+  pmkTarget: ptr IMoniker,
+  szLocation: LPCWSTR,
+  szTargetFrameName: LPCWSTR,
+  pUnk: ptr IUnknown,
+  pbc: ptr IBindCtx,
+  P6: ptr IBindStatusCallback,
+  grfHLNF: DWORD,
+  dwReserved: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc URLOpenStreamA*(
+  P1: LPUNKNOWN, P2: LPCSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc URLOpenStreamW*(
+  P1: LPUNKNOWN, P2: LPCWSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc URLOpenPullStreamA*(
+  P1: LPUNKNOWN, P2: LPCSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc URLOpenPullStreamW*(
+  P1: LPUNKNOWN, P2: LPCWSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc URLDownloadToFileA*(
+  P1: LPUNKNOWN, P2: LPCSTR, P3: LPCSTR, P4: DWORD, P5: LPBINDSTATUSCALLBACK
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc URLDownloadToFileW*(
+  P1: LPUNKNOWN, P2: LPCWSTR, P3: LPCWSTR, P4: DWORD, P5: LPBINDSTATUSCALLBACK
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc URLDownloadToCacheFileA*(
+  P1: LPUNKNOWN, P2: LPCSTR, P3: LPSTR, P4: DWORD, P5: DWORD, P6: LPBINDSTATUSCALLBACK
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc URLDownloadToCacheFileW*(
+  P1: LPUNKNOWN, P2: LPCWSTR, P3: LPWSTR, P4: DWORD, P5: DWORD, P6: LPBINDSTATUSCALLBACK
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc URLOpenBlockingStreamA*(
+  P1: LPUNKNOWN, P2: LPCSTR, P3: ptr LPSTREAM, P4: DWORD, P5: LPBINDSTATUSCALLBACK
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc URLOpenBlockingStreamW*(
+  P1: LPUNKNOWN, P2: LPCWSTR, P3: ptr LPSTREAM, P4: DWORD, P5: LPBINDSTATUSCALLBACK
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc HlinkGoBack*(
+  pUnk: ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc HlinkGoForward*(
+  pUnk: ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc HlinkNavigateString*(
+  pUnk: ptr IUnknown, szTarget: LPCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc HlinkNavigateMoniker*(
+  pUnk: ptr IUnknown, pmkTarget: ptr IMoniker
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetParseUrl*(
+  pwzUrl: LPCWSTR,
+  ParseAction: PARSEACTION,
+  dwFlags: DWORD,
+  pszResult: LPWSTR,
+  cchResult: DWORD,
+  pcchResult: ptr DWORD,
+  dwReserved: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetParseIUri*(
+  pIUri: ptr IUri,
+  ParseAction: PARSEACTION,
+  dwFlags: DWORD,
+  pwzResult: LPWSTR,
+  cchResult: DWORD,
+  pcchResult: ptr DWORD,
+  dwReserved: DWORD_PTR,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetCombineUrl*(
+  pwzBaseUrl: LPCWSTR,
+  pwzRelativeUrl: LPCWSTR,
+  dwCombineFlags: DWORD,
+  pszResult: LPWSTR,
+  cchResult: DWORD,
+  pcchResult: ptr DWORD,
+  dwReserved: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetCombineUrlEx*(
+  pBaseUri: ptr IUri,
+  pwzRelativeUrl: LPCWSTR,
+  dwCombineFlags: DWORD,
+  ppCombinedUri: ptr ptr IUri,
+  dwReserved: DWORD_PTR,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetCombineIUri*(
+  pBaseUri: ptr IUri,
+  pRelativeUri: ptr IUri,
+  dwCombineFlags: DWORD,
+  ppCombinedUri: ptr ptr IUri,
+  dwReserved: DWORD_PTR,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetCompareUrl*(
+  pwzUrl1: LPCWSTR, pwzUrl2: LPCWSTR, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetGetProtocolFlags*(
+  pwzUrl: LPCWSTR, pdwFlags: ptr DWORD, dwReserved: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetQueryInfo*(
+  pwzUrl: LPCWSTR,
+  QueryOptions: QUERYOPTION,
+  dwQueryFlags: DWORD,
+  pvBuffer: LPVOID,
+  cbBuffer: DWORD,
+  pcbBuffer: ptr DWORD,
+  dwReserved: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetGetSession*(
+  dwSessionMode: DWORD, ppIInternetSession: ptr ptr IInternetSession, dwReserved: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetGetSecurityUrl*(
+  pwszUrl: LPCWSTR, ppwszSecUrl: ptr LPWSTR, psuAction: PSUACTION, dwReserved: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc AsyncInstallDistributionUnit*(
+  szDistUnit: LPCWSTR,
+  szTYPE: LPCWSTR,
+  szExt: LPCWSTR,
+  dwFileVersionMS: DWORD,
+  dwFileVersionLS: DWORD,
+  szURL: LPCWSTR,
+  pbc: ptr IBindCtx,
+  pvReserved: LPVOID,
+  flags: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetGetSecurityUrlEx*(
+  pUri: ptr IUri, ppSecUri: ptr ptr IUri, psuAction: PSUACTION, dwReserved: DWORD_PTR
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetSetFeatureEnabled*(
+  FeatureEntry: INTERNETFEATURELIST, dwFlags: DWORD, fEnable: WINBOOL
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetIsFeatureEnabled*(
+  FeatureEntry: INTERNETFEATURELIST, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetIsFeatureEnabledForUrl*(
+  FeatureEntry: INTERNETFEATURELIST,
+  dwFlags: DWORD,
+  szURL: LPCWSTR,
+  pSecMgr: ptr IInternetSecurityManager,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetIsFeatureEnabledForIUri*(
+  FeatureEntry: INTERNETFEATURELIST,
+  dwFlags: DWORD,
+  pIUri: ptr IUri,
+  pSecMgr: ptr IInternetSecurityManagerEx2,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetIsFeatureZoneElevationEnabled*(
+  szFromURL: LPCWSTR,
+  szToURL: LPCWSTR,
+  pSecMgr: ptr IInternetSecurityManager,
+  dwFlags: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CopyStgMedium*(
+  pcstgmedSrc: ptr STGMEDIUM, pstgmedDest: ptr STGMEDIUM
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CopyBindInfo*(
+  pcbiSrc: ptr BINDINFO, pbiDest: ptr BINDINFO
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc ReleaseBindInfo*(
+  pbindinfo: ptr BINDINFO
+): void {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc OInetParseUrl*(
+  pwzUrl: LPCWSTR,
+  ParseAction: PARSEACTION,
+  dwFlags: DWORD,
+  pszResult: LPWSTR,
+  cchResult: DWORD,
+  pcchResult: ptr DWORD,
+  dwReserved: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "CoInternetParseUrl".}
+
+proc OInetCombineUrl*(
+  pwzBaseUrl: LPCWSTR,
+  pwzRelativeUrl: LPCWSTR,
+  dwCombineFlags: DWORD,
+  pszResult: LPWSTR,
+  cchResult: DWORD,
+  pcchResult: ptr DWORD,
+  dwReserved: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "CoInternetCombineUrl".}
+
+proc OInetCombineUrlEx*(
+  pBaseUri: ptr IUri,
+  pwzRelativeUrl: LPCWSTR,
+  dwCombineFlags: DWORD,
+  ppCombinedUri: ptr ptr IUri,
+  dwReserved: DWORD_PTR,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "CoInternetCombineUrlEx".}
+
+proc OInetCombineIUri*(
+  pBaseUri: ptr IUri,
+  pRelativeUri: ptr IUri,
+  dwCombineFlags: DWORD,
+  ppCombinedUri: ptr ptr IUri,
+  dwReserved: DWORD_PTR,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "CoInternetCombineIUri".}
+
+proc OInetCompareUrl*(
+  pwzUrl1: LPCWSTR, pwzUrl2: LPCWSTR, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "CoInternetCompareUrl".}
+
+proc OInetQueryInfo*(
+  pwzUrl: LPCWSTR,
+  QueryOptions: QUERYOPTION,
+  dwQueryFlags: DWORD,
+  pvBuffer: LPVOID,
+  cbBuffer: DWORD,
+  pcbBuffer: ptr DWORD,
+  dwReserved: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "CoInternetQueryInfo".}
+
+proc OInetGetSession*(
+  dwSessionMode: DWORD, ppIInternetSession: ptr ptr IInternetSession, dwReserved: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "CoInternetGetSession".}
+
+proc CoInternetCreateSecurityManager*(
+  pSP: ptr IServiceProvider, ppSM: ptr ptr IInternetSecurityManager, dwReserved: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc CoInternetCreateZoneManager*(
+  pSP: ptr IServiceProvider, ppZM: ptr ptr IInternetZoneManager, dwReserved: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc GetSoftwareUpdateInfo*(
+  szDistUnit: LPCWSTR, psdi: LPSOFTDISTINFO
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc SetSoftwareUpdateAdvertisementState*(
+  szDistUnit: LPCWSTR,
+  dwAdState: DWORD,
+  dwAdvertisedVersionMS: DWORD,
+  dwAdvertisedVersionLS: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc IsLoggingEnabledA*(
+  pszUrl: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc IsLoggingEnabledW*(
+  pwszUrl: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc WriteHitLogging*(
+  lpLogginginfo: LPHIT_LOGGING_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "urlmon", importc.}
+
+proc StgCreatePropStg*(
+  pUnk: ptr IUnknown,
+  fmtid: REFFMTID,
+  pclsid: ptr CLSID,
+  grfFlags: DWORD,
+  dwReserved: DWORD,
+  ppPropStg: ptr ptr IPropertyStorage,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StgOpenPropStg*(
+  pUnk: ptr IUnknown,
+  fmtid: REFFMTID,
+  grfFlags: DWORD,
+  dwReserved: DWORD,
+  ppPropStg: ptr ptr IPropertyStorage,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc StgCreatePropSetStg*(
+  pStorage: ptr IStorage, dwReserved: DWORD, ppPropSetStg: ptr ptr IPropertySetStorage
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc FmtIdToPropStgName*(
+  pfmtid: ptr FMTID, oszName: LPOLESTR
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc PropStgNameToFmtId*(
+  oszName: LPOLESTR, pfmtid: ptr FMTID
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc CreateStdProgressIndicator*(
+  hwndParent: HWND,
+  pszTitle: LPCOLESTR,
+  pIbscCaller: ptr IBindStatusCallback,
+  ppIbsc: ptr ptr IBindStatusCallback,
+): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc PSCoerceToCanonicalValue*(
+  key: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSCreateAdapterFromPropertyStore*(
+  pps: ptr IPropertyStore, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSCreateDelayedMultiplexPropertyStore*(
+  flags: GETPROPERTYSTOREFLAGS,
+  pdpsf: ptr IDelayedPropertyStoreFactory,
+  rgStoreIds: ptr DWORD,
+  cStores: DWORD,
+  riid: REFIID,
+  ppv: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSCreateMemoryPropertyStore*(
+  riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSCreateMultiplexPropertyStore*(
+  prgpunkStores: ptr ptr IUnknown, cStores: DWORD, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSCreatePropertyChangeArray*(
+  rgpropkey: ptr PROPERTYKEY,
+  rgflags: ptr PKA_FLAGS,
+  rgpropvar: ptr PROPVARIANT,
+  cChanges: UINT,
+  riid: REFIID,
+  ppv: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSCreatePropertyStoreFromObject*(
+  punk: ptr IUnknown, grfMode: DWORD, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSCreatePropertyStoreFromPropertySetStorage*(
+  ppss: ptr IPropertySetStorage, grfMode: DWORD, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSCreateSimplePropertyChange*(
+  flags: PKA_FLAGS,
+  key: REFPROPERTYKEY,
+  propvar: REFPROPVARIANT,
+  riid: REFIID,
+  ppv: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSEnumeratePropertyDescriptions*(
+  filterOn: PROPDESC_ENUMFILTER, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSFormatForDisplay*(
+  propkey: REFPROPERTYKEY,
+  propvar: REFPROPVARIANT,
+  pdfFlags: PROPDESC_FORMAT_FLAGS,
+  pwszText: LPWSTR,
+  cchText: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSFormatForDisplayAlloc*(
+  key: REFPROPERTYKEY,
+  propvar: REFPROPVARIANT,
+  pdff: PROPDESC_FORMAT_FLAGS,
+  ppszDisplay: ptr PWSTR,
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSFormatPropertyValue*(
+  pps: ptr IPropertyStore,
+  ppd: ptr IPropertyDescription,
+  pdff: PROPDESC_FORMAT_FLAGS,
+  ppszDisplay: ptr LPWSTR,
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSGetImageReferenceForValue*(
+  propkey: REFPROPERTYKEY, propvar: REFPROPVARIANT, ppszImageRes: ptr PWSTR
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSGetItemPropertyHandler*(
+  punkItem: ptr IUnknown, fReadWrite: BOOL, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSGetItemPropertyHandlerWithCreateObject*(
+  punkItem: ptr IUnknown,
+  fReadWrite: BOOL,
+  punkCreateObject: ptr IUnknown,
+  riid: REFIID,
+  ppv: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSGetNamedPropertyFromPropertyStorage*(
+  psps: PCUSERIALIZEDPROPSTORAGE, cb: DWORD, pszName: LPCWSTR, ppropvar: ptr PROPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSGetNameFromPropertyKey*(
+  propkey: REFPROPERTYKEY, ppszCanonicalName: ptr PWSTR
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSGetPropertyDescription*(
+  propkey: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSGetPropertyDescriptionByName*(
+  pszCanonicalName: LPCWSTR, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSGetPropertyDescriptionListFromString*(
+  pszPropList: LPCWSTR, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSGetPropertyFromPropertyStorage*(
+  psps: PCUSERIALIZEDPROPSTORAGE,
+  cb: DWORD,
+  rpkey: REFPROPERTYKEY,
+  ppropvar: ptr PROPVARIANT,
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSGetPropertyKeyFromName*(
+  pszName: PCWSTR, ppropkey: ptr PROPERTYKEY
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSGetPropertySystem*(
+  riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSGetPropertyValue*(
+  pps: ptr IPropertyStore, ppd: ptr IPropertyDescription, ppropvar: ptr PROPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSLookupPropertyHandlerCLSID*(
+  pszFilePath: PCWSTR, pclsid: ptr CLSID
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_Delete*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadBOOL*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr BOOL
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadBSTR*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadDWORD*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadGUID*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr GUID
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadInt*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr INT
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadLONG*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadPOINTL*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr POINTL
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadPOINTS*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr POINTS
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadPropertyKey*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr PROPERTYKEY
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadRECTL*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr RECTL
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadSHORT*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr SHORT
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadStr*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: LPWSTR, characterCount: int32
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadStrAlloc*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr PWSTR
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadStream*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr ptr IStream
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadType*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, `var`: ptr VARIANT, `type`: VARTYPE
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadULONGLONG*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr ULONGLONG
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_ReadUnknown*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WriteBOOL*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: BOOL
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WriteBSTR*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: BSTR
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WriteDWORD*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WriteGUID*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr GUID
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WriteInt*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: INT
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WriteLONG*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: LONG
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WritePOINTL*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr POINTL
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WritePOINTS*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr POINTS
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WritePropertyKey*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: REFPROPERTYKEY
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WriteRECTL*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr RECTL
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WriteSHORT*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: SHORT
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WriteStr*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: LPCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WriteStream*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ptr IStream
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WriteULONGLONG*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, value: ULONGLONG
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyBag_WriteUnknown*(
+  propBag: ptr IPropertyBag, propName: LPCWSTR, punk: ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSPropertyKeyFromString*(
+  pszString: LPCWSTR, pkey: ptr PROPERTYKEY
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
 proc PSRefreshPropertySchema*(): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSRegisterPropertySchema*(pszPath: PCWSTR): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSSetPropertyValue*(pps: ptr IPropertyStore, ppd: ptr IPropertyDescription, propvar: REFPROPVARIANT): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSStringFromPropertyKey*(pkey: REFPROPERTYKEY, psz: LPWSTR, cch: UINT): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc PSUnregisterPropertySchema*(pszPath: PCWSTR): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
-proc VarUI4FromUI4*(ulIn: ULONG, pulOut: ptr ULONG): HRESULT {.winapi, inline.} = pulOut[] = ulIn
-proc VarI4FromI4*(lIn: LONG, plOut: ptr LONG): HRESULT {.winapi, inline.} = plOut[] = lIn
-proc VarUI8FromUI8*(ui64In: ULONG64, pi64Out: ptr ULONG64): HRESULT {.winapi, inline.} = pi64Out[] = ui64In
-proc VarI8FromI8*(i64In: LONG64, pi64Out: ptr LONG64): HRESULT {.winapi, inline.} = pi64Out[] = i64In
-proc `Lo=`*(self: var CY, x: int32) {.inline.} = self.struct1.Lo = x
-proc Lo*(self: CY): int32 {.inline.} = self.struct1.Lo
-proc Lo*(self: var CY): var int32 {.inline.} = self.struct1.Lo
-proc `Hi=`*(self: var CY, x: int32) {.inline.} = self.struct1.Hi = x
-proc Hi*(self: CY): int32 {.inline.} = self.struct1.Hi
-proc Hi*(self: var CY): var int32 {.inline.} = self.struct1.Hi
-proc `scale=`*(self: var DECIMAL, x: BYTE) {.inline.} = self.union1.struct1.scale = x
-proc scale*(self: DECIMAL): BYTE {.inline.} = self.union1.struct1.scale
-proc scale*(self: var DECIMAL): var BYTE {.inline.} = self.union1.struct1.scale
-proc `sign=`*(self: var DECIMAL, x: BYTE) {.inline.} = self.union1.struct1.sign = x
-proc sign*(self: DECIMAL): BYTE {.inline.} = self.union1.struct1.sign
-proc sign*(self: var DECIMAL): var BYTE {.inline.} = self.union1.struct1.sign
-proc `signscale=`*(self: var DECIMAL, x: USHORT) {.inline.} = self.union1.signscale = x
-proc signscale*(self: DECIMAL): USHORT {.inline.} = self.union1.signscale
-proc signscale*(self: var DECIMAL): var USHORT {.inline.} = self.union1.signscale
-proc `Lo32=`*(self: var DECIMAL, x: ULONG) {.inline.} = self.union2.struct1.Lo32 = x
-proc Lo32*(self: DECIMAL): ULONG {.inline.} = self.union2.struct1.Lo32
-proc Lo32*(self: var DECIMAL): var ULONG {.inline.} = self.union2.struct1.Lo32
-proc `Mid32=`*(self: var DECIMAL, x: ULONG) {.inline.} = self.union2.struct1.Mid32 = x
-proc Mid32*(self: DECIMAL): ULONG {.inline.} = self.union2.struct1.Mid32
-proc Mid32*(self: var DECIMAL): var ULONG {.inline.} = self.union2.struct1.Mid32
-proc `Lo64=`*(self: var DECIMAL, x: ULONGLONG) {.inline.} = self.union2.Lo64 = x
-proc Lo64*(self: DECIMAL): ULONGLONG {.inline.} = self.union2.Lo64
-proc Lo64*(self: var DECIMAL): var ULONGLONG {.inline.} = self.union2.Lo64
-proc `tymed=`*(self: var userSTGMEDIUM, x: DWORD) {.inline.} = self.struct1.tymed = x
-proc tymed*(self: userSTGMEDIUM): DWORD {.inline.} = self.struct1.tymed
-proc tymed*(self: var userSTGMEDIUM): var DWORD {.inline.} = self.struct1.tymed
-proc `u=`*(self: var userSTGMEDIUM, x: userSTGMEDIUM_STRUCT1_u) {.inline.} = self.struct1.u = x
-proc u*(self: userSTGMEDIUM): userSTGMEDIUM_STRUCT1_u {.inline.} = self.struct1.u
-proc u*(self: var userSTGMEDIUM): var userSTGMEDIUM_STRUCT1_u {.inline.} = self.struct1.u
-proc `vt=`*(self: var VARIANT, x: VARTYPE) {.inline.} = self.union1.struct1.vt = x
-proc vt*(self: VARIANT): VARTYPE {.inline.} = self.union1.struct1.vt
-proc vt*(self: var VARIANT): var VARTYPE {.inline.} = self.union1.struct1.vt
-proc `wReserved1=`*(self: var VARIANT, x: WORD) {.inline.} = self.union1.struct1.wReserved1 = x
-proc wReserved1*(self: VARIANT): WORD {.inline.} = self.union1.struct1.wReserved1
-proc wReserved1*(self: var VARIANT): var WORD {.inline.} = self.union1.struct1.wReserved1
-proc `wReserved2=`*(self: var VARIANT, x: WORD) {.inline.} = self.union1.struct1.wReserved2 = x
-proc wReserved2*(self: VARIANT): WORD {.inline.} = self.union1.struct1.wReserved2
-proc wReserved2*(self: var VARIANT): var WORD {.inline.} = self.union1.struct1.wReserved2
-proc `wReserved3=`*(self: var VARIANT, x: WORD) {.inline.} = self.union1.struct1.wReserved3 = x
-proc wReserved3*(self: VARIANT): WORD {.inline.} = self.union1.struct1.wReserved3
-proc wReserved3*(self: var VARIANT): var WORD {.inline.} = self.union1.struct1.wReserved3
-proc `llVal=`*(self: var VARIANT, x: LONGLONG) {.inline.} = self.union1.struct1.union1.llVal = x
-proc llVal*(self: VARIANT): LONGLONG {.inline.} = self.union1.struct1.union1.llVal
-proc llVal*(self: var VARIANT): var LONGLONG {.inline.} = self.union1.struct1.union1.llVal
-proc `lVal=`*(self: var VARIANT, x: LONG) {.inline.} = self.union1.struct1.union1.lVal = x
-proc lVal*(self: VARIANT): LONG {.inline.} = self.union1.struct1.union1.lVal
-proc lVal*(self: var VARIANT): var LONG {.inline.} = self.union1.struct1.union1.lVal
-proc `bVal=`*(self: var VARIANT, x: BYTE) {.inline.} = self.union1.struct1.union1.bVal = x
-proc bVal*(self: VARIANT): BYTE {.inline.} = self.union1.struct1.union1.bVal
-proc bVal*(self: var VARIANT): var BYTE {.inline.} = self.union1.struct1.union1.bVal
-proc `iVal=`*(self: var VARIANT, x: SHORT) {.inline.} = self.union1.struct1.union1.iVal = x
-proc iVal*(self: VARIANT): SHORT {.inline.} = self.union1.struct1.union1.iVal
-proc iVal*(self: var VARIANT): var SHORT {.inline.} = self.union1.struct1.union1.iVal
-proc `fltVal=`*(self: var VARIANT, x: FLOAT) {.inline.} = self.union1.struct1.union1.fltVal = x
-proc fltVal*(self: VARIANT): FLOAT {.inline.} = self.union1.struct1.union1.fltVal
-proc fltVal*(self: var VARIANT): var FLOAT {.inline.} = self.union1.struct1.union1.fltVal
-proc `dblVal=`*(self: var VARIANT, x: DOUBLE) {.inline.} = self.union1.struct1.union1.dblVal = x
-proc dblVal*(self: VARIANT): DOUBLE {.inline.} = self.union1.struct1.union1.dblVal
-proc dblVal*(self: var VARIANT): var DOUBLE {.inline.} = self.union1.struct1.union1.dblVal
-proc `boolVal=`*(self: var VARIANT, x: VARIANT_BOOL) {.inline.} = self.union1.struct1.union1.boolVal = x
-proc boolVal*(self: VARIANT): VARIANT_BOOL {.inline.} = self.union1.struct1.union1.boolVal
-proc boolVal*(self: var VARIANT): var VARIANT_BOOL {.inline.} = self.union1.struct1.union1.boolVal
-proc `scode=`*(self: var VARIANT, x: SCODE) {.inline.} = self.union1.struct1.union1.scode = x
-proc scode*(self: VARIANT): SCODE {.inline.} = self.union1.struct1.union1.scode
-proc scode*(self: var VARIANT): var SCODE {.inline.} = self.union1.struct1.union1.scode
-proc `cyVal=`*(self: var VARIANT, x: CY) {.inline.} = self.union1.struct1.union1.cyVal = x
-proc cyVal*(self: VARIANT): CY {.inline.} = self.union1.struct1.union1.cyVal
-proc cyVal*(self: var VARIANT): var CY {.inline.} = self.union1.struct1.union1.cyVal
-proc `date=`*(self: var VARIANT, x: DATE) {.inline.} = self.union1.struct1.union1.date = x
-proc date*(self: VARIANT): DATE {.inline.} = self.union1.struct1.union1.date
-proc date*(self: var VARIANT): var DATE {.inline.} = self.union1.struct1.union1.date
-proc `bstrVal=`*(self: var VARIANT, x: BSTR) {.inline.} = self.union1.struct1.union1.bstrVal = x
-proc bstrVal*(self: VARIANT): BSTR {.inline.} = self.union1.struct1.union1.bstrVal
-proc bstrVal*(self: var VARIANT): var BSTR {.inline.} = self.union1.struct1.union1.bstrVal
-proc `punkVal=`*(self: var VARIANT, x: ptr IUnknown) {.inline.} = self.union1.struct1.union1.punkVal = x
-proc punkVal*(self: VARIANT): ptr IUnknown {.inline.} = self.union1.struct1.union1.punkVal
-proc punkVal*(self: var VARIANT): var ptr IUnknown {.inline.} = self.union1.struct1.union1.punkVal
-proc `pdispVal=`*(self: var VARIANT, x: ptr IDispatch) {.inline.} = self.union1.struct1.union1.pdispVal = x
-proc pdispVal*(self: VARIANT): ptr IDispatch {.inline.} = self.union1.struct1.union1.pdispVal
-proc pdispVal*(self: var VARIANT): var ptr IDispatch {.inline.} = self.union1.struct1.union1.pdispVal
-proc `parray=`*(self: var VARIANT, x: ptr SAFEARRAY) {.inline.} = self.union1.struct1.union1.parray = x
-proc parray*(self: VARIANT): ptr SAFEARRAY {.inline.} = self.union1.struct1.union1.parray
-proc parray*(self: var VARIANT): var ptr SAFEARRAY {.inline.} = self.union1.struct1.union1.parray
-proc `pbVal=`*(self: var VARIANT, x: ptr BYTE) {.inline.} = self.union1.struct1.union1.pbVal = x
-proc pbVal*(self: VARIANT): ptr BYTE {.inline.} = self.union1.struct1.union1.pbVal
-proc pbVal*(self: var VARIANT): var ptr BYTE {.inline.} = self.union1.struct1.union1.pbVal
-proc `piVal=`*(self: var VARIANT, x: ptr SHORT) {.inline.} = self.union1.struct1.union1.piVal = x
-proc piVal*(self: VARIANT): ptr SHORT {.inline.} = self.union1.struct1.union1.piVal
-proc piVal*(self: var VARIANT): var ptr SHORT {.inline.} = self.union1.struct1.union1.piVal
-proc `plVal=`*(self: var VARIANT, x: ptr LONG) {.inline.} = self.union1.struct1.union1.plVal = x
-proc plVal*(self: VARIANT): ptr LONG {.inline.} = self.union1.struct1.union1.plVal
-proc plVal*(self: var VARIANT): var ptr LONG {.inline.} = self.union1.struct1.union1.plVal
-proc `pllVal=`*(self: var VARIANT, x: ptr LONGLONG) {.inline.} = self.union1.struct1.union1.pllVal = x
-proc pllVal*(self: VARIANT): ptr LONGLONG {.inline.} = self.union1.struct1.union1.pllVal
-proc pllVal*(self: var VARIANT): var ptr LONGLONG {.inline.} = self.union1.struct1.union1.pllVal
-proc `pfltVal=`*(self: var VARIANT, x: ptr FLOAT) {.inline.} = self.union1.struct1.union1.pfltVal = x
-proc pfltVal*(self: VARIANT): ptr FLOAT {.inline.} = self.union1.struct1.union1.pfltVal
-proc pfltVal*(self: var VARIANT): var ptr FLOAT {.inline.} = self.union1.struct1.union1.pfltVal
-proc `pdblVal=`*(self: var VARIANT, x: ptr DOUBLE) {.inline.} = self.union1.struct1.union1.pdblVal = x
-proc pdblVal*(self: VARIANT): ptr DOUBLE {.inline.} = self.union1.struct1.union1.pdblVal
-proc pdblVal*(self: var VARIANT): var ptr DOUBLE {.inline.} = self.union1.struct1.union1.pdblVal
-proc `pboolVal=`*(self: var VARIANT, x: ptr VARIANT_BOOL) {.inline.} = self.union1.struct1.union1.pboolVal = x
-proc pboolVal*(self: VARIANT): ptr VARIANT_BOOL {.inline.} = self.union1.struct1.union1.pboolVal
-proc pboolVal*(self: var VARIANT): var ptr VARIANT_BOOL {.inline.} = self.union1.struct1.union1.pboolVal
-proc `pscode=`*(self: var VARIANT, x: ptr SCODE) {.inline.} = self.union1.struct1.union1.pscode = x
-proc pscode*(self: VARIANT): ptr SCODE {.inline.} = self.union1.struct1.union1.pscode
-proc pscode*(self: var VARIANT): var ptr SCODE {.inline.} = self.union1.struct1.union1.pscode
-proc `pcyVal=`*(self: var VARIANT, x: ptr CY) {.inline.} = self.union1.struct1.union1.pcyVal = x
-proc pcyVal*(self: VARIANT): ptr CY {.inline.} = self.union1.struct1.union1.pcyVal
-proc pcyVal*(self: var VARIANT): var ptr CY {.inline.} = self.union1.struct1.union1.pcyVal
-proc `pdate=`*(self: var VARIANT, x: ptr DATE) {.inline.} = self.union1.struct1.union1.pdate = x
-proc pdate*(self: VARIANT): ptr DATE {.inline.} = self.union1.struct1.union1.pdate
-proc pdate*(self: var VARIANT): var ptr DATE {.inline.} = self.union1.struct1.union1.pdate
-proc `pbstrVal=`*(self: var VARIANT, x: ptr BSTR) {.inline.} = self.union1.struct1.union1.pbstrVal = x
-proc pbstrVal*(self: VARIANT): ptr BSTR {.inline.} = self.union1.struct1.union1.pbstrVal
-proc pbstrVal*(self: var VARIANT): var ptr BSTR {.inline.} = self.union1.struct1.union1.pbstrVal
-proc `ppunkVal=`*(self: var VARIANT, x: ptr ptr IUnknown) {.inline.} = self.union1.struct1.union1.ppunkVal = x
-proc ppunkVal*(self: VARIANT): ptr ptr IUnknown {.inline.} = self.union1.struct1.union1.ppunkVal
-proc ppunkVal*(self: var VARIANT): var ptr ptr IUnknown {.inline.} = self.union1.struct1.union1.ppunkVal
-proc `ppdispVal=`*(self: var VARIANT, x: ptr ptr IDispatch) {.inline.} = self.union1.struct1.union1.ppdispVal = x
-proc ppdispVal*(self: VARIANT): ptr ptr IDispatch {.inline.} = self.union1.struct1.union1.ppdispVal
-proc ppdispVal*(self: var VARIANT): var ptr ptr IDispatch {.inline.} = self.union1.struct1.union1.ppdispVal
-proc `pparray=`*(self: var VARIANT, x: ptr ptr SAFEARRAY) {.inline.} = self.union1.struct1.union1.pparray = x
-proc pparray*(self: VARIANT): ptr ptr SAFEARRAY {.inline.} = self.union1.struct1.union1.pparray
-proc pparray*(self: var VARIANT): var ptr ptr SAFEARRAY {.inline.} = self.union1.struct1.union1.pparray
-proc `pvarVal=`*(self: var VARIANT, x: ptr VARIANT) {.inline.} = self.union1.struct1.union1.pvarVal = x
-proc pvarVal*(self: VARIANT): ptr VARIANT {.inline.} = self.union1.struct1.union1.pvarVal
-proc pvarVal*(self: var VARIANT): var ptr VARIANT {.inline.} = self.union1.struct1.union1.pvarVal
-proc `byref=`*(self: var VARIANT, x: PVOID) {.inline.} = self.union1.struct1.union1.byref = x
-proc byref*(self: VARIANT): PVOID {.inline.} = self.union1.struct1.union1.byref
-proc byref*(self: var VARIANT): var PVOID {.inline.} = self.union1.struct1.union1.byref
-proc `cVal=`*(self: var VARIANT, x: CHAR) {.inline.} = self.union1.struct1.union1.cVal = x
-proc cVal*(self: VARIANT): CHAR {.inline.} = self.union1.struct1.union1.cVal
-proc cVal*(self: var VARIANT): var CHAR {.inline.} = self.union1.struct1.union1.cVal
-proc `uiVal=`*(self: var VARIANT, x: USHORT) {.inline.} = self.union1.struct1.union1.uiVal = x
-proc uiVal*(self: VARIANT): USHORT {.inline.} = self.union1.struct1.union1.uiVal
-proc uiVal*(self: var VARIANT): var USHORT {.inline.} = self.union1.struct1.union1.uiVal
-proc `ulVal=`*(self: var VARIANT, x: ULONG) {.inline.} = self.union1.struct1.union1.ulVal = x
-proc ulVal*(self: VARIANT): ULONG {.inline.} = self.union1.struct1.union1.ulVal
-proc ulVal*(self: var VARIANT): var ULONG {.inline.} = self.union1.struct1.union1.ulVal
-proc `ullVal=`*(self: var VARIANT, x: ULONGLONG) {.inline.} = self.union1.struct1.union1.ullVal = x
-proc ullVal*(self: VARIANT): ULONGLONG {.inline.} = self.union1.struct1.union1.ullVal
-proc ullVal*(self: var VARIANT): var ULONGLONG {.inline.} = self.union1.struct1.union1.ullVal
-proc `intVal=`*(self: var VARIANT, x: INT) {.inline.} = self.union1.struct1.union1.intVal = x
-proc intVal*(self: VARIANT): INT {.inline.} = self.union1.struct1.union1.intVal
-proc intVal*(self: var VARIANT): var INT {.inline.} = self.union1.struct1.union1.intVal
-proc `uintVal=`*(self: var VARIANT, x: UINT) {.inline.} = self.union1.struct1.union1.uintVal = x
-proc uintVal*(self: VARIANT): UINT {.inline.} = self.union1.struct1.union1.uintVal
-proc uintVal*(self: var VARIANT): var UINT {.inline.} = self.union1.struct1.union1.uintVal
-proc `pdecVal=`*(self: var VARIANT, x: ptr DECIMAL) {.inline.} = self.union1.struct1.union1.pdecVal = x
-proc pdecVal*(self: VARIANT): ptr DECIMAL {.inline.} = self.union1.struct1.union1.pdecVal
-proc pdecVal*(self: var VARIANT): var ptr DECIMAL {.inline.} = self.union1.struct1.union1.pdecVal
-proc `pcVal=`*(self: var VARIANT, x: ptr CHAR) {.inline.} = self.union1.struct1.union1.pcVal = x
-proc pcVal*(self: VARIANT): ptr CHAR {.inline.} = self.union1.struct1.union1.pcVal
-proc pcVal*(self: var VARIANT): var ptr CHAR {.inline.} = self.union1.struct1.union1.pcVal
-proc `puiVal=`*(self: var VARIANT, x: ptr USHORT) {.inline.} = self.union1.struct1.union1.puiVal = x
-proc puiVal*(self: VARIANT): ptr USHORT {.inline.} = self.union1.struct1.union1.puiVal
-proc puiVal*(self: var VARIANT): var ptr USHORT {.inline.} = self.union1.struct1.union1.puiVal
-proc `pulVal=`*(self: var VARIANT, x: ptr ULONG) {.inline.} = self.union1.struct1.union1.pulVal = x
-proc pulVal*(self: VARIANT): ptr ULONG {.inline.} = self.union1.struct1.union1.pulVal
-proc pulVal*(self: var VARIANT): var ptr ULONG {.inline.} = self.union1.struct1.union1.pulVal
-proc `pullVal=`*(self: var VARIANT, x: ptr ULONGLONG) {.inline.} = self.union1.struct1.union1.pullVal = x
-proc pullVal*(self: VARIANT): ptr ULONGLONG {.inline.} = self.union1.struct1.union1.pullVal
-proc pullVal*(self: var VARIANT): var ptr ULONGLONG {.inline.} = self.union1.struct1.union1.pullVal
-proc `pintVal=`*(self: var VARIANT, x: ptr INT) {.inline.} = self.union1.struct1.union1.pintVal = x
-proc pintVal*(self: VARIANT): ptr INT {.inline.} = self.union1.struct1.union1.pintVal
-proc pintVal*(self: var VARIANT): var ptr INT {.inline.} = self.union1.struct1.union1.pintVal
-proc `puintVal=`*(self: var VARIANT, x: ptr UINT) {.inline.} = self.union1.struct1.union1.puintVal = x
-proc puintVal*(self: VARIANT): ptr UINT {.inline.} = self.union1.struct1.union1.puintVal
-proc puintVal*(self: var VARIANT): var ptr UINT {.inline.} = self.union1.struct1.union1.puintVal
-proc `pvRecord=`*(self: var VARIANT, x: PVOID) {.inline.} = self.union1.struct1.union1.struct1.pvRecord = x
-proc pvRecord*(self: VARIANT): PVOID {.inline.} = self.union1.struct1.union1.struct1.pvRecord
-proc pvRecord*(self: var VARIANT): var PVOID {.inline.} = self.union1.struct1.union1.struct1.pvRecord
-proc `pRecInfo=`*(self: var VARIANT, x: ptr IRecordInfo) {.inline.} = self.union1.struct1.union1.struct1.pRecInfo = x
-proc pRecInfo*(self: VARIANT): ptr IRecordInfo {.inline.} = self.union1.struct1.union1.struct1.pRecInfo
-proc pRecInfo*(self: var VARIANT): var ptr IRecordInfo {.inline.} = self.union1.struct1.union1.struct1.pRecInfo
-proc `decVal=`*(self: var VARIANT, x: DECIMAL) {.inline.} = self.union1.decVal = x
-proc decVal*(self: VARIANT): DECIMAL {.inline.} = self.union1.decVal
-proc decVal*(self: var VARIANT): var DECIMAL {.inline.} = self.union1.decVal
-proc `llVal=`*(self: var wireVARIANT, x: LONGLONG) {.inline.} = self.union1.llVal = x
-proc llVal*(self: wireVARIANT): LONGLONG {.inline.} = self.union1.llVal
-proc llVal*(self: var wireVARIANT): var LONGLONG {.inline.} = self.union1.llVal
-proc `lVal=`*(self: var wireVARIANT, x: LONG) {.inline.} = self.union1.lVal = x
-proc lVal*(self: wireVARIANT): LONG {.inline.} = self.union1.lVal
-proc lVal*(self: var wireVARIANT): var LONG {.inline.} = self.union1.lVal
-proc `bVal=`*(self: var wireVARIANT, x: BYTE) {.inline.} = self.union1.bVal = x
-proc bVal*(self: wireVARIANT): BYTE {.inline.} = self.union1.bVal
-proc bVal*(self: var wireVARIANT): var BYTE {.inline.} = self.union1.bVal
-proc `iVal=`*(self: var wireVARIANT, x: SHORT) {.inline.} = self.union1.iVal = x
-proc iVal*(self: wireVARIANT): SHORT {.inline.} = self.union1.iVal
-proc iVal*(self: var wireVARIANT): var SHORT {.inline.} = self.union1.iVal
-proc `fltVal=`*(self: var wireVARIANT, x: FLOAT) {.inline.} = self.union1.fltVal = x
-proc fltVal*(self: wireVARIANT): FLOAT {.inline.} = self.union1.fltVal
-proc fltVal*(self: var wireVARIANT): var FLOAT {.inline.} = self.union1.fltVal
-proc `dblVal=`*(self: var wireVARIANT, x: DOUBLE) {.inline.} = self.union1.dblVal = x
-proc dblVal*(self: wireVARIANT): DOUBLE {.inline.} = self.union1.dblVal
-proc dblVal*(self: var wireVARIANT): var DOUBLE {.inline.} = self.union1.dblVal
-proc `boolVal=`*(self: var wireVARIANT, x: VARIANT_BOOL) {.inline.} = self.union1.boolVal = x
-proc boolVal*(self: wireVARIANT): VARIANT_BOOL {.inline.} = self.union1.boolVal
-proc boolVal*(self: var wireVARIANT): var VARIANT_BOOL {.inline.} = self.union1.boolVal
-proc `scode=`*(self: var wireVARIANT, x: SCODE) {.inline.} = self.union1.scode = x
-proc scode*(self: wireVARIANT): SCODE {.inline.} = self.union1.scode
-proc scode*(self: var wireVARIANT): var SCODE {.inline.} = self.union1.scode
-proc `cyVal=`*(self: var wireVARIANT, x: CY) {.inline.} = self.union1.cyVal = x
-proc cyVal*(self: wireVARIANT): CY {.inline.} = self.union1.cyVal
-proc cyVal*(self: var wireVARIANT): var CY {.inline.} = self.union1.cyVal
-proc `date=`*(self: var wireVARIANT, x: DATE) {.inline.} = self.union1.date = x
-proc date*(self: wireVARIANT): DATE {.inline.} = self.union1.date
-proc date*(self: var wireVARIANT): var DATE {.inline.} = self.union1.date
-proc `bstrVal=`*(self: var wireVARIANT, x: wireBSTR) {.inline.} = self.union1.bstrVal = x
-proc bstrVal*(self: wireVARIANT): wireBSTR {.inline.} = self.union1.bstrVal
-proc bstrVal*(self: var wireVARIANT): var wireBSTR {.inline.} = self.union1.bstrVal
-proc `punkVal=`*(self: var wireVARIANT, x: ptr IUnknown) {.inline.} = self.union1.punkVal = x
-proc punkVal*(self: wireVARIANT): ptr IUnknown {.inline.} = self.union1.punkVal
-proc punkVal*(self: var wireVARIANT): var ptr IUnknown {.inline.} = self.union1.punkVal
-proc `pdispVal=`*(self: var wireVARIANT, x: ptr IDispatch) {.inline.} = self.union1.pdispVal = x
-proc pdispVal*(self: wireVARIANT): ptr IDispatch {.inline.} = self.union1.pdispVal
-proc pdispVal*(self: var wireVARIANT): var ptr IDispatch {.inline.} = self.union1.pdispVal
-proc `parray=`*(self: var wireVARIANT, x: wirePSAFEARRAY) {.inline.} = self.union1.parray = x
-proc parray*(self: wireVARIANT): wirePSAFEARRAY {.inline.} = self.union1.parray
-proc parray*(self: var wireVARIANT): var wirePSAFEARRAY {.inline.} = self.union1.parray
-proc `brecVal=`*(self: var wireVARIANT, x: wireBRECORD) {.inline.} = self.union1.brecVal = x
-proc brecVal*(self: wireVARIANT): wireBRECORD {.inline.} = self.union1.brecVal
-proc brecVal*(self: var wireVARIANT): var wireBRECORD {.inline.} = self.union1.brecVal
-proc `pbVal=`*(self: var wireVARIANT, x: ptr BYTE) {.inline.} = self.union1.pbVal = x
-proc pbVal*(self: wireVARIANT): ptr BYTE {.inline.} = self.union1.pbVal
-proc pbVal*(self: var wireVARIANT): var ptr BYTE {.inline.} = self.union1.pbVal
-proc `piVal=`*(self: var wireVARIANT, x: ptr SHORT) {.inline.} = self.union1.piVal = x
-proc piVal*(self: wireVARIANT): ptr SHORT {.inline.} = self.union1.piVal
-proc piVal*(self: var wireVARIANT): var ptr SHORT {.inline.} = self.union1.piVal
-proc `plVal=`*(self: var wireVARIANT, x: ptr LONG) {.inline.} = self.union1.plVal = x
-proc plVal*(self: wireVARIANT): ptr LONG {.inline.} = self.union1.plVal
-proc plVal*(self: var wireVARIANT): var ptr LONG {.inline.} = self.union1.plVal
-proc `pllVal=`*(self: var wireVARIANT, x: ptr LONGLONG) {.inline.} = self.union1.pllVal = x
-proc pllVal*(self: wireVARIANT): ptr LONGLONG {.inline.} = self.union1.pllVal
-proc pllVal*(self: var wireVARIANT): var ptr LONGLONG {.inline.} = self.union1.pllVal
-proc `pfltVal=`*(self: var wireVARIANT, x: ptr FLOAT) {.inline.} = self.union1.pfltVal = x
-proc pfltVal*(self: wireVARIANT): ptr FLOAT {.inline.} = self.union1.pfltVal
-proc pfltVal*(self: var wireVARIANT): var ptr FLOAT {.inline.} = self.union1.pfltVal
-proc `pdblVal=`*(self: var wireVARIANT, x: ptr DOUBLE) {.inline.} = self.union1.pdblVal = x
-proc pdblVal*(self: wireVARIANT): ptr DOUBLE {.inline.} = self.union1.pdblVal
-proc pdblVal*(self: var wireVARIANT): var ptr DOUBLE {.inline.} = self.union1.pdblVal
-proc `pboolVal=`*(self: var wireVARIANT, x: ptr VARIANT_BOOL) {.inline.} = self.union1.pboolVal = x
-proc pboolVal*(self: wireVARIANT): ptr VARIANT_BOOL {.inline.} = self.union1.pboolVal
-proc pboolVal*(self: var wireVARIANT): var ptr VARIANT_BOOL {.inline.} = self.union1.pboolVal
-proc `pscode=`*(self: var wireVARIANT, x: ptr SCODE) {.inline.} = self.union1.pscode = x
-proc pscode*(self: wireVARIANT): ptr SCODE {.inline.} = self.union1.pscode
-proc pscode*(self: var wireVARIANT): var ptr SCODE {.inline.} = self.union1.pscode
-proc `pcyVal=`*(self: var wireVARIANT, x: ptr CY) {.inline.} = self.union1.pcyVal = x
-proc pcyVal*(self: wireVARIANT): ptr CY {.inline.} = self.union1.pcyVal
-proc pcyVal*(self: var wireVARIANT): var ptr CY {.inline.} = self.union1.pcyVal
-proc `pdate=`*(self: var wireVARIANT, x: ptr DATE) {.inline.} = self.union1.pdate = x
-proc pdate*(self: wireVARIANT): ptr DATE {.inline.} = self.union1.pdate
-proc pdate*(self: var wireVARIANT): var ptr DATE {.inline.} = self.union1.pdate
-proc `pbstrVal=`*(self: var wireVARIANT, x: ptr wireBSTR) {.inline.} = self.union1.pbstrVal = x
-proc pbstrVal*(self: wireVARIANT): ptr wireBSTR {.inline.} = self.union1.pbstrVal
-proc pbstrVal*(self: var wireVARIANT): var ptr wireBSTR {.inline.} = self.union1.pbstrVal
-proc `ppunkVal=`*(self: var wireVARIANT, x: ptr ptr IUnknown) {.inline.} = self.union1.ppunkVal = x
-proc ppunkVal*(self: wireVARIANT): ptr ptr IUnknown {.inline.} = self.union1.ppunkVal
-proc ppunkVal*(self: var wireVARIANT): var ptr ptr IUnknown {.inline.} = self.union1.ppunkVal
-proc `ppdispVal=`*(self: var wireVARIANT, x: ptr ptr IDispatch) {.inline.} = self.union1.ppdispVal = x
-proc ppdispVal*(self: wireVARIANT): ptr ptr IDispatch {.inline.} = self.union1.ppdispVal
-proc ppdispVal*(self: var wireVARIANT): var ptr ptr IDispatch {.inline.} = self.union1.ppdispVal
-proc `pparray=`*(self: var wireVARIANT, x: ptr wirePSAFEARRAY) {.inline.} = self.union1.pparray = x
-proc pparray*(self: wireVARIANT): ptr wirePSAFEARRAY {.inline.} = self.union1.pparray
-proc pparray*(self: var wireVARIANT): var ptr wirePSAFEARRAY {.inline.} = self.union1.pparray
-proc `pvarVal=`*(self: var wireVARIANT, x: ptr wireVARIANT) {.inline.} = self.union1.pvarVal = x
-proc pvarVal*(self: wireVARIANT): ptr wireVARIANT {.inline.} = self.union1.pvarVal
-proc pvarVal*(self: var wireVARIANT): var ptr wireVARIANT {.inline.} = self.union1.pvarVal
-proc `cVal=`*(self: var wireVARIANT, x: CHAR) {.inline.} = self.union1.cVal = x
-proc cVal*(self: wireVARIANT): CHAR {.inline.} = self.union1.cVal
-proc cVal*(self: var wireVARIANT): var CHAR {.inline.} = self.union1.cVal
-proc `uiVal=`*(self: var wireVARIANT, x: USHORT) {.inline.} = self.union1.uiVal = x
-proc uiVal*(self: wireVARIANT): USHORT {.inline.} = self.union1.uiVal
-proc uiVal*(self: var wireVARIANT): var USHORT {.inline.} = self.union1.uiVal
-proc `ulVal=`*(self: var wireVARIANT, x: ULONG) {.inline.} = self.union1.ulVal = x
-proc ulVal*(self: wireVARIANT): ULONG {.inline.} = self.union1.ulVal
-proc ulVal*(self: var wireVARIANT): var ULONG {.inline.} = self.union1.ulVal
-proc `ullVal=`*(self: var wireVARIANT, x: ULONGLONG) {.inline.} = self.union1.ullVal = x
-proc ullVal*(self: wireVARIANT): ULONGLONG {.inline.} = self.union1.ullVal
-proc ullVal*(self: var wireVARIANT): var ULONGLONG {.inline.} = self.union1.ullVal
-proc `intVal=`*(self: var wireVARIANT, x: INT) {.inline.} = self.union1.intVal = x
-proc intVal*(self: wireVARIANT): INT {.inline.} = self.union1.intVal
-proc intVal*(self: var wireVARIANT): var INT {.inline.} = self.union1.intVal
-proc `uintVal=`*(self: var wireVARIANT, x: UINT) {.inline.} = self.union1.uintVal = x
-proc uintVal*(self: wireVARIANT): UINT {.inline.} = self.union1.uintVal
-proc uintVal*(self: var wireVARIANT): var UINT {.inline.} = self.union1.uintVal
-proc `decVal=`*(self: var wireVARIANT, x: DECIMAL) {.inline.} = self.union1.decVal = x
-proc decVal*(self: wireVARIANT): DECIMAL {.inline.} = self.union1.decVal
-proc decVal*(self: var wireVARIANT): var DECIMAL {.inline.} = self.union1.decVal
-proc `pdecVal=`*(self: var wireVARIANT, x: ptr DECIMAL) {.inline.} = self.union1.pdecVal = x
-proc pdecVal*(self: wireVARIANT): ptr DECIMAL {.inline.} = self.union1.pdecVal
-proc pdecVal*(self: var wireVARIANT): var ptr DECIMAL {.inline.} = self.union1.pdecVal
-proc `pcVal=`*(self: var wireVARIANT, x: ptr CHAR) {.inline.} = self.union1.pcVal = x
-proc pcVal*(self: wireVARIANT): ptr CHAR {.inline.} = self.union1.pcVal
-proc pcVal*(self: var wireVARIANT): var ptr CHAR {.inline.} = self.union1.pcVal
-proc `puiVal=`*(self: var wireVARIANT, x: ptr USHORT) {.inline.} = self.union1.puiVal = x
-proc puiVal*(self: wireVARIANT): ptr USHORT {.inline.} = self.union1.puiVal
-proc puiVal*(self: var wireVARIANT): var ptr USHORT {.inline.} = self.union1.puiVal
-proc `pulVal=`*(self: var wireVARIANT, x: ptr ULONG) {.inline.} = self.union1.pulVal = x
-proc pulVal*(self: wireVARIANT): ptr ULONG {.inline.} = self.union1.pulVal
-proc pulVal*(self: var wireVARIANT): var ptr ULONG {.inline.} = self.union1.pulVal
-proc `pullVal=`*(self: var wireVARIANT, x: ptr ULONGLONG) {.inline.} = self.union1.pullVal = x
-proc pullVal*(self: wireVARIANT): ptr ULONGLONG {.inline.} = self.union1.pullVal
-proc pullVal*(self: var wireVARIANT): var ptr ULONGLONG {.inline.} = self.union1.pullVal
-proc `pintVal=`*(self: var wireVARIANT, x: ptr INT) {.inline.} = self.union1.pintVal = x
-proc pintVal*(self: wireVARIANT): ptr INT {.inline.} = self.union1.pintVal
-proc pintVal*(self: var wireVARIANT): var ptr INT {.inline.} = self.union1.pintVal
-proc `puintVal=`*(self: var wireVARIANT, x: ptr UINT) {.inline.} = self.union1.puintVal = x
-proc puintVal*(self: wireVARIANT): ptr UINT {.inline.} = self.union1.puintVal
-proc puintVal*(self: var wireVARIANT): var ptr UINT {.inline.} = self.union1.puintVal
-proc `lptdesc=`*(self: var TYPEDESC, x: ptr TYPEDESC) {.inline.} = self.union1.lptdesc = x
-proc lptdesc*(self: TYPEDESC): ptr TYPEDESC {.inline.} = self.union1.lptdesc
-proc lptdesc*(self: var TYPEDESC): var ptr TYPEDESC {.inline.} = self.union1.lptdesc
-proc `lpadesc=`*(self: var TYPEDESC, x: ptr ARRAYDESC) {.inline.} = self.union1.lpadesc = x
-proc lpadesc*(self: TYPEDESC): ptr ARRAYDESC {.inline.} = self.union1.lpadesc
-proc lpadesc*(self: var TYPEDESC): var ptr ARRAYDESC {.inline.} = self.union1.lpadesc
-proc `hreftype=`*(self: var TYPEDESC, x: HREFTYPE) {.inline.} = self.union1.hreftype = x
-proc hreftype*(self: TYPEDESC): HREFTYPE {.inline.} = self.union1.hreftype
-proc hreftype*(self: var TYPEDESC): var HREFTYPE {.inline.} = self.union1.hreftype
-proc `idldesc=`*(self: var ELEMDESC, x: IDLDESC) {.inline.} = self.union1.idldesc = x
-proc idldesc*(self: ELEMDESC): IDLDESC {.inline.} = self.union1.idldesc
-proc idldesc*(self: var ELEMDESC): var IDLDESC {.inline.} = self.union1.idldesc
-proc `paramdesc=`*(self: var ELEMDESC, x: PARAMDESC) {.inline.} = self.union1.paramdesc = x
-proc paramdesc*(self: ELEMDESC): PARAMDESC {.inline.} = self.union1.paramdesc
-proc paramdesc*(self: var ELEMDESC): var PARAMDESC {.inline.} = self.union1.paramdesc
-proc `oInst=`*(self: var VARDESC, x: ULONG) {.inline.} = self.union1.oInst = x
-proc oInst*(self: VARDESC): ULONG {.inline.} = self.union1.oInst
-proc oInst*(self: var VARDESC): var ULONG {.inline.} = self.union1.oInst
-proc `lpvarValue=`*(self: var VARDESC, x: ptr VARIANT) {.inline.} = self.union1.lpvarValue = x
-proc lpvarValue*(self: VARDESC): ptr VARIANT {.inline.} = self.union1.lpvarValue
-proc lpvarValue*(self: var VARDESC): var ptr VARIANT {.inline.} = self.union1.lpvarValue
-proc `vt=`*(self: var PROPVARIANT, x: VARTYPE) {.inline.} = self.union1.struct1.vt = x
-proc vt*(self: PROPVARIANT): VARTYPE {.inline.} = self.union1.struct1.vt
-proc vt*(self: var PROPVARIANT): var VARTYPE {.inline.} = self.union1.struct1.vt
-proc `wReserved1=`*(self: var PROPVARIANT, x: PROPVAR_PAD1) {.inline.} = self.union1.struct1.wReserved1 = x
-proc wReserved1*(self: PROPVARIANT): PROPVAR_PAD1 {.inline.} = self.union1.struct1.wReserved1
-proc wReserved1*(self: var PROPVARIANT): var PROPVAR_PAD1 {.inline.} = self.union1.struct1.wReserved1
-proc `wReserved2=`*(self: var PROPVARIANT, x: PROPVAR_PAD2) {.inline.} = self.union1.struct1.wReserved2 = x
-proc wReserved2*(self: PROPVARIANT): PROPVAR_PAD2 {.inline.} = self.union1.struct1.wReserved2
-proc wReserved2*(self: var PROPVARIANT): var PROPVAR_PAD2 {.inline.} = self.union1.struct1.wReserved2
-proc `wReserved3=`*(self: var PROPVARIANT, x: PROPVAR_PAD3) {.inline.} = self.union1.struct1.wReserved3 = x
-proc wReserved3*(self: PROPVARIANT): PROPVAR_PAD3 {.inline.} = self.union1.struct1.wReserved3
-proc wReserved3*(self: var PROPVARIANT): var PROPVAR_PAD3 {.inline.} = self.union1.struct1.wReserved3
-proc `cVal=`*(self: var PROPVARIANT, x: CHAR) {.inline.} = self.union1.struct1.union1.cVal = x
-proc cVal*(self: PROPVARIANT): CHAR {.inline.} = self.union1.struct1.union1.cVal
-proc cVal*(self: var PROPVARIANT): var CHAR {.inline.} = self.union1.struct1.union1.cVal
-proc `bVal=`*(self: var PROPVARIANT, x: UCHAR) {.inline.} = self.union1.struct1.union1.bVal = x
-proc bVal*(self: PROPVARIANT): UCHAR {.inline.} = self.union1.struct1.union1.bVal
-proc bVal*(self: var PROPVARIANT): var UCHAR {.inline.} = self.union1.struct1.union1.bVal
-proc `iVal=`*(self: var PROPVARIANT, x: SHORT) {.inline.} = self.union1.struct1.union1.iVal = x
-proc iVal*(self: PROPVARIANT): SHORT {.inline.} = self.union1.struct1.union1.iVal
-proc iVal*(self: var PROPVARIANT): var SHORT {.inline.} = self.union1.struct1.union1.iVal
-proc `uiVal=`*(self: var PROPVARIANT, x: USHORT) {.inline.} = self.union1.struct1.union1.uiVal = x
-proc uiVal*(self: PROPVARIANT): USHORT {.inline.} = self.union1.struct1.union1.uiVal
-proc uiVal*(self: var PROPVARIANT): var USHORT {.inline.} = self.union1.struct1.union1.uiVal
-proc `lVal=`*(self: var PROPVARIANT, x: LONG) {.inline.} = self.union1.struct1.union1.lVal = x
-proc lVal*(self: PROPVARIANT): LONG {.inline.} = self.union1.struct1.union1.lVal
-proc lVal*(self: var PROPVARIANT): var LONG {.inline.} = self.union1.struct1.union1.lVal
-proc `ulVal=`*(self: var PROPVARIANT, x: ULONG) {.inline.} = self.union1.struct1.union1.ulVal = x
-proc ulVal*(self: PROPVARIANT): ULONG {.inline.} = self.union1.struct1.union1.ulVal
-proc ulVal*(self: var PROPVARIANT): var ULONG {.inline.} = self.union1.struct1.union1.ulVal
-proc `intVal=`*(self: var PROPVARIANT, x: INT) {.inline.} = self.union1.struct1.union1.intVal = x
-proc intVal*(self: PROPVARIANT): INT {.inline.} = self.union1.struct1.union1.intVal
-proc intVal*(self: var PROPVARIANT): var INT {.inline.} = self.union1.struct1.union1.intVal
-proc `uintVal=`*(self: var PROPVARIANT, x: UINT) {.inline.} = self.union1.struct1.union1.uintVal = x
-proc uintVal*(self: PROPVARIANT): UINT {.inline.} = self.union1.struct1.union1.uintVal
-proc uintVal*(self: var PROPVARIANT): var UINT {.inline.} = self.union1.struct1.union1.uintVal
-proc `hVal=`*(self: var PROPVARIANT, x: LARGE_INTEGER) {.inline.} = self.union1.struct1.union1.hVal = x
-proc hVal*(self: PROPVARIANT): LARGE_INTEGER {.inline.} = self.union1.struct1.union1.hVal
-proc hVal*(self: var PROPVARIANT): var LARGE_INTEGER {.inline.} = self.union1.struct1.union1.hVal
-proc `uhVal=`*(self: var PROPVARIANT, x: ULARGE_INTEGER) {.inline.} = self.union1.struct1.union1.uhVal = x
-proc uhVal*(self: PROPVARIANT): ULARGE_INTEGER {.inline.} = self.union1.struct1.union1.uhVal
-proc uhVal*(self: var PROPVARIANT): var ULARGE_INTEGER {.inline.} = self.union1.struct1.union1.uhVal
-proc `fltVal=`*(self: var PROPVARIANT, x: FLOAT) {.inline.} = self.union1.struct1.union1.fltVal = x
-proc fltVal*(self: PROPVARIANT): FLOAT {.inline.} = self.union1.struct1.union1.fltVal
-proc fltVal*(self: var PROPVARIANT): var FLOAT {.inline.} = self.union1.struct1.union1.fltVal
-proc `dblVal=`*(self: var PROPVARIANT, x: DOUBLE) {.inline.} = self.union1.struct1.union1.dblVal = x
-proc dblVal*(self: PROPVARIANT): DOUBLE {.inline.} = self.union1.struct1.union1.dblVal
-proc dblVal*(self: var PROPVARIANT): var DOUBLE {.inline.} = self.union1.struct1.union1.dblVal
-proc `boolVal=`*(self: var PROPVARIANT, x: VARIANT_BOOL) {.inline.} = self.union1.struct1.union1.boolVal = x
-proc boolVal*(self: PROPVARIANT): VARIANT_BOOL {.inline.} = self.union1.struct1.union1.boolVal
-proc boolVal*(self: var PROPVARIANT): var VARIANT_BOOL {.inline.} = self.union1.struct1.union1.boolVal
-proc `scode=`*(self: var PROPVARIANT, x: SCODE) {.inline.} = self.union1.struct1.union1.scode = x
-proc scode*(self: PROPVARIANT): SCODE {.inline.} = self.union1.struct1.union1.scode
-proc scode*(self: var PROPVARIANT): var SCODE {.inline.} = self.union1.struct1.union1.scode
-proc `cyVal=`*(self: var PROPVARIANT, x: CY) {.inline.} = self.union1.struct1.union1.cyVal = x
-proc cyVal*(self: PROPVARIANT): CY {.inline.} = self.union1.struct1.union1.cyVal
-proc cyVal*(self: var PROPVARIANT): var CY {.inline.} = self.union1.struct1.union1.cyVal
-proc `date=`*(self: var PROPVARIANT, x: DATE) {.inline.} = self.union1.struct1.union1.date = x
-proc date*(self: PROPVARIANT): DATE {.inline.} = self.union1.struct1.union1.date
-proc date*(self: var PROPVARIANT): var DATE {.inline.} = self.union1.struct1.union1.date
-proc `filetime=`*(self: var PROPVARIANT, x: FILETIME) {.inline.} = self.union1.struct1.union1.filetime = x
-proc filetime*(self: PROPVARIANT): FILETIME {.inline.} = self.union1.struct1.union1.filetime
-proc filetime*(self: var PROPVARIANT): var FILETIME {.inline.} = self.union1.struct1.union1.filetime
-proc `puuid=`*(self: var PROPVARIANT, x: ptr CLSID) {.inline.} = self.union1.struct1.union1.puuid = x
-proc puuid*(self: PROPVARIANT): ptr CLSID {.inline.} = self.union1.struct1.union1.puuid
-proc puuid*(self: var PROPVARIANT): var ptr CLSID {.inline.} = self.union1.struct1.union1.puuid
-proc `pclipdata=`*(self: var PROPVARIANT, x: ptr CLIPDATA) {.inline.} = self.union1.struct1.union1.pclipdata = x
-proc pclipdata*(self: PROPVARIANT): ptr CLIPDATA {.inline.} = self.union1.struct1.union1.pclipdata
-proc pclipdata*(self: var PROPVARIANT): var ptr CLIPDATA {.inline.} = self.union1.struct1.union1.pclipdata
-proc `bstrVal=`*(self: var PROPVARIANT, x: BSTR) {.inline.} = self.union1.struct1.union1.bstrVal = x
-proc bstrVal*(self: PROPVARIANT): BSTR {.inline.} = self.union1.struct1.union1.bstrVal
-proc bstrVal*(self: var PROPVARIANT): var BSTR {.inline.} = self.union1.struct1.union1.bstrVal
-proc `bstrblobVal=`*(self: var PROPVARIANT, x: BSTRBLOB) {.inline.} = self.union1.struct1.union1.bstrblobVal = x
-proc bstrblobVal*(self: PROPVARIANT): BSTRBLOB {.inline.} = self.union1.struct1.union1.bstrblobVal
-proc bstrblobVal*(self: var PROPVARIANT): var BSTRBLOB {.inline.} = self.union1.struct1.union1.bstrblobVal
-proc `blob=`*(self: var PROPVARIANT, x: BLOB) {.inline.} = self.union1.struct1.union1.blob = x
-proc blob*(self: PROPVARIANT): BLOB {.inline.} = self.union1.struct1.union1.blob
-proc blob*(self: var PROPVARIANT): var BLOB {.inline.} = self.union1.struct1.union1.blob
-proc `pszVal=`*(self: var PROPVARIANT, x: LPSTR) {.inline.} = self.union1.struct1.union1.pszVal = x
-proc pszVal*(self: PROPVARIANT): LPSTR {.inline.} = self.union1.struct1.union1.pszVal
-proc pszVal*(self: var PROPVARIANT): var LPSTR {.inline.} = self.union1.struct1.union1.pszVal
-proc `pwszVal=`*(self: var PROPVARIANT, x: LPWSTR) {.inline.} = self.union1.struct1.union1.pwszVal = x
-proc pwszVal*(self: PROPVARIANT): LPWSTR {.inline.} = self.union1.struct1.union1.pwszVal
-proc pwszVal*(self: var PROPVARIANT): var LPWSTR {.inline.} = self.union1.struct1.union1.pwszVal
-proc `punkVal=`*(self: var PROPVARIANT, x: ptr IUnknown) {.inline.} = self.union1.struct1.union1.punkVal = x
-proc punkVal*(self: PROPVARIANT): ptr IUnknown {.inline.} = self.union1.struct1.union1.punkVal
-proc punkVal*(self: var PROPVARIANT): var ptr IUnknown {.inline.} = self.union1.struct1.union1.punkVal
-proc `pdispVal=`*(self: var PROPVARIANT, x: ptr IDispatch) {.inline.} = self.union1.struct1.union1.pdispVal = x
-proc pdispVal*(self: PROPVARIANT): ptr IDispatch {.inline.} = self.union1.struct1.union1.pdispVal
-proc pdispVal*(self: var PROPVARIANT): var ptr IDispatch {.inline.} = self.union1.struct1.union1.pdispVal
-proc `pStream=`*(self: var PROPVARIANT, x: ptr IStream) {.inline.} = self.union1.struct1.union1.pStream = x
-proc pStream*(self: PROPVARIANT): ptr IStream {.inline.} = self.union1.struct1.union1.pStream
-proc pStream*(self: var PROPVARIANT): var ptr IStream {.inline.} = self.union1.struct1.union1.pStream
-proc `pStorage=`*(self: var PROPVARIANT, x: ptr IStorage) {.inline.} = self.union1.struct1.union1.pStorage = x
-proc pStorage*(self: PROPVARIANT): ptr IStorage {.inline.} = self.union1.struct1.union1.pStorage
-proc pStorage*(self: var PROPVARIANT): var ptr IStorage {.inline.} = self.union1.struct1.union1.pStorage
-proc `pVersionedStream=`*(self: var PROPVARIANT, x: LPVERSIONEDSTREAM) {.inline.} = self.union1.struct1.union1.pVersionedStream = x
-proc pVersionedStream*(self: PROPVARIANT): LPVERSIONEDSTREAM {.inline.} = self.union1.struct1.union1.pVersionedStream
-proc pVersionedStream*(self: var PROPVARIANT): var LPVERSIONEDSTREAM {.inline.} = self.union1.struct1.union1.pVersionedStream
-proc `parray=`*(self: var PROPVARIANT, x: LPSAFEARRAY) {.inline.} = self.union1.struct1.union1.parray = x
-proc parray*(self: PROPVARIANT): LPSAFEARRAY {.inline.} = self.union1.struct1.union1.parray
-proc parray*(self: var PROPVARIANT): var LPSAFEARRAY {.inline.} = self.union1.struct1.union1.parray
-proc `cac=`*(self: var PROPVARIANT, x: CAC) {.inline.} = self.union1.struct1.union1.cac = x
-proc cac*(self: PROPVARIANT): CAC {.inline.} = self.union1.struct1.union1.cac
-proc cac*(self: var PROPVARIANT): var CAC {.inline.} = self.union1.struct1.union1.cac
-proc `caub=`*(self: var PROPVARIANT, x: CAUB) {.inline.} = self.union1.struct1.union1.caub = x
-proc caub*(self: PROPVARIANT): CAUB {.inline.} = self.union1.struct1.union1.caub
-proc caub*(self: var PROPVARIANT): var CAUB {.inline.} = self.union1.struct1.union1.caub
-proc `cai=`*(self: var PROPVARIANT, x: CAI) {.inline.} = self.union1.struct1.union1.cai = x
-proc cai*(self: PROPVARIANT): CAI {.inline.} = self.union1.struct1.union1.cai
-proc cai*(self: var PROPVARIANT): var CAI {.inline.} = self.union1.struct1.union1.cai
-proc `caui=`*(self: var PROPVARIANT, x: CAUI) {.inline.} = self.union1.struct1.union1.caui = x
-proc caui*(self: PROPVARIANT): CAUI {.inline.} = self.union1.struct1.union1.caui
-proc caui*(self: var PROPVARIANT): var CAUI {.inline.} = self.union1.struct1.union1.caui
-proc `cal=`*(self: var PROPVARIANT, x: CAL) {.inline.} = self.union1.struct1.union1.cal = x
-proc cal*(self: PROPVARIANT): CAL {.inline.} = self.union1.struct1.union1.cal
-proc cal*(self: var PROPVARIANT): var CAL {.inline.} = self.union1.struct1.union1.cal
-proc `caul=`*(self: var PROPVARIANT, x: CAUL) {.inline.} = self.union1.struct1.union1.caul = x
-proc caul*(self: PROPVARIANT): CAUL {.inline.} = self.union1.struct1.union1.caul
-proc caul*(self: var PROPVARIANT): var CAUL {.inline.} = self.union1.struct1.union1.caul
-proc `cah=`*(self: var PROPVARIANT, x: CAH) {.inline.} = self.union1.struct1.union1.cah = x
-proc cah*(self: PROPVARIANT): CAH {.inline.} = self.union1.struct1.union1.cah
-proc cah*(self: var PROPVARIANT): var CAH {.inline.} = self.union1.struct1.union1.cah
-proc `cauh=`*(self: var PROPVARIANT, x: CAUH) {.inline.} = self.union1.struct1.union1.cauh = x
-proc cauh*(self: PROPVARIANT): CAUH {.inline.} = self.union1.struct1.union1.cauh
-proc cauh*(self: var PROPVARIANT): var CAUH {.inline.} = self.union1.struct1.union1.cauh
-proc `caflt=`*(self: var PROPVARIANT, x: CAFLT) {.inline.} = self.union1.struct1.union1.caflt = x
-proc caflt*(self: PROPVARIANT): CAFLT {.inline.} = self.union1.struct1.union1.caflt
-proc caflt*(self: var PROPVARIANT): var CAFLT {.inline.} = self.union1.struct1.union1.caflt
-proc `cadbl=`*(self: var PROPVARIANT, x: CADBL) {.inline.} = self.union1.struct1.union1.cadbl = x
-proc cadbl*(self: PROPVARIANT): CADBL {.inline.} = self.union1.struct1.union1.cadbl
-proc cadbl*(self: var PROPVARIANT): var CADBL {.inline.} = self.union1.struct1.union1.cadbl
-proc `cabool=`*(self: var PROPVARIANT, x: CABOOL) {.inline.} = self.union1.struct1.union1.cabool = x
-proc cabool*(self: PROPVARIANT): CABOOL {.inline.} = self.union1.struct1.union1.cabool
-proc cabool*(self: var PROPVARIANT): var CABOOL {.inline.} = self.union1.struct1.union1.cabool
-proc `cascode=`*(self: var PROPVARIANT, x: CASCODE) {.inline.} = self.union1.struct1.union1.cascode = x
-proc cascode*(self: PROPVARIANT): CASCODE {.inline.} = self.union1.struct1.union1.cascode
-proc cascode*(self: var PROPVARIANT): var CASCODE {.inline.} = self.union1.struct1.union1.cascode
-proc `cacy=`*(self: var PROPVARIANT, x: CACY) {.inline.} = self.union1.struct1.union1.cacy = x
-proc cacy*(self: PROPVARIANT): CACY {.inline.} = self.union1.struct1.union1.cacy
-proc cacy*(self: var PROPVARIANT): var CACY {.inline.} = self.union1.struct1.union1.cacy
-proc `cadate=`*(self: var PROPVARIANT, x: CADATE) {.inline.} = self.union1.struct1.union1.cadate = x
-proc cadate*(self: PROPVARIANT): CADATE {.inline.} = self.union1.struct1.union1.cadate
-proc cadate*(self: var PROPVARIANT): var CADATE {.inline.} = self.union1.struct1.union1.cadate
-proc `cafiletime=`*(self: var PROPVARIANT, x: CAFILETIME) {.inline.} = self.union1.struct1.union1.cafiletime = x
-proc cafiletime*(self: PROPVARIANT): CAFILETIME {.inline.} = self.union1.struct1.union1.cafiletime
-proc cafiletime*(self: var PROPVARIANT): var CAFILETIME {.inline.} = self.union1.struct1.union1.cafiletime
-proc `cauuid=`*(self: var PROPVARIANT, x: CACLSID) {.inline.} = self.union1.struct1.union1.cauuid = x
-proc cauuid*(self: PROPVARIANT): CACLSID {.inline.} = self.union1.struct1.union1.cauuid
-proc cauuid*(self: var PROPVARIANT): var CACLSID {.inline.} = self.union1.struct1.union1.cauuid
-proc `caclipdata=`*(self: var PROPVARIANT, x: CACLIPDATA) {.inline.} = self.union1.struct1.union1.caclipdata = x
-proc caclipdata*(self: PROPVARIANT): CACLIPDATA {.inline.} = self.union1.struct1.union1.caclipdata
-proc caclipdata*(self: var PROPVARIANT): var CACLIPDATA {.inline.} = self.union1.struct1.union1.caclipdata
-proc `cabstr=`*(self: var PROPVARIANT, x: CABSTR) {.inline.} = self.union1.struct1.union1.cabstr = x
-proc cabstr*(self: PROPVARIANT): CABSTR {.inline.} = self.union1.struct1.union1.cabstr
-proc cabstr*(self: var PROPVARIANT): var CABSTR {.inline.} = self.union1.struct1.union1.cabstr
-proc `cabstrblob=`*(self: var PROPVARIANT, x: CABSTRBLOB) {.inline.} = self.union1.struct1.union1.cabstrblob = x
-proc cabstrblob*(self: PROPVARIANT): CABSTRBLOB {.inline.} = self.union1.struct1.union1.cabstrblob
-proc cabstrblob*(self: var PROPVARIANT): var CABSTRBLOB {.inline.} = self.union1.struct1.union1.cabstrblob
-proc `calpstr=`*(self: var PROPVARIANT, x: CALPSTR) {.inline.} = self.union1.struct1.union1.calpstr = x
-proc calpstr*(self: PROPVARIANT): CALPSTR {.inline.} = self.union1.struct1.union1.calpstr
-proc calpstr*(self: var PROPVARIANT): var CALPSTR {.inline.} = self.union1.struct1.union1.calpstr
-proc `calpwstr=`*(self: var PROPVARIANT, x: CALPWSTR) {.inline.} = self.union1.struct1.union1.calpwstr = x
-proc calpwstr*(self: PROPVARIANT): CALPWSTR {.inline.} = self.union1.struct1.union1.calpwstr
-proc calpwstr*(self: var PROPVARIANT): var CALPWSTR {.inline.} = self.union1.struct1.union1.calpwstr
-proc `capropvar=`*(self: var PROPVARIANT, x: CAPROPVARIANT) {.inline.} = self.union1.struct1.union1.capropvar = x
-proc capropvar*(self: PROPVARIANT): CAPROPVARIANT {.inline.} = self.union1.struct1.union1.capropvar
-proc capropvar*(self: var PROPVARIANT): var CAPROPVARIANT {.inline.} = self.union1.struct1.union1.capropvar
-proc `pcVal=`*(self: var PROPVARIANT, x: ptr CHAR) {.inline.} = self.union1.struct1.union1.pcVal = x
-proc pcVal*(self: PROPVARIANT): ptr CHAR {.inline.} = self.union1.struct1.union1.pcVal
-proc pcVal*(self: var PROPVARIANT): var ptr CHAR {.inline.} = self.union1.struct1.union1.pcVal
-proc `pbVal=`*(self: var PROPVARIANT, x: ptr UCHAR) {.inline.} = self.union1.struct1.union1.pbVal = x
-proc pbVal*(self: PROPVARIANT): ptr UCHAR {.inline.} = self.union1.struct1.union1.pbVal
-proc pbVal*(self: var PROPVARIANT): var ptr UCHAR {.inline.} = self.union1.struct1.union1.pbVal
-proc `piVal=`*(self: var PROPVARIANT, x: ptr SHORT) {.inline.} = self.union1.struct1.union1.piVal = x
-proc piVal*(self: PROPVARIANT): ptr SHORT {.inline.} = self.union1.struct1.union1.piVal
-proc piVal*(self: var PROPVARIANT): var ptr SHORT {.inline.} = self.union1.struct1.union1.piVal
-proc `puiVal=`*(self: var PROPVARIANT, x: ptr USHORT) {.inline.} = self.union1.struct1.union1.puiVal = x
-proc puiVal*(self: PROPVARIANT): ptr USHORT {.inline.} = self.union1.struct1.union1.puiVal
-proc puiVal*(self: var PROPVARIANT): var ptr USHORT {.inline.} = self.union1.struct1.union1.puiVal
-proc `plVal=`*(self: var PROPVARIANT, x: ptr LONG) {.inline.} = self.union1.struct1.union1.plVal = x
-proc plVal*(self: PROPVARIANT): ptr LONG {.inline.} = self.union1.struct1.union1.plVal
-proc plVal*(self: var PROPVARIANT): var ptr LONG {.inline.} = self.union1.struct1.union1.plVal
-proc `pulVal=`*(self: var PROPVARIANT, x: ptr ULONG) {.inline.} = self.union1.struct1.union1.pulVal = x
-proc pulVal*(self: PROPVARIANT): ptr ULONG {.inline.} = self.union1.struct1.union1.pulVal
-proc pulVal*(self: var PROPVARIANT): var ptr ULONG {.inline.} = self.union1.struct1.union1.pulVal
-proc `pintVal=`*(self: var PROPVARIANT, x: ptr INT) {.inline.} = self.union1.struct1.union1.pintVal = x
-proc pintVal*(self: PROPVARIANT): ptr INT {.inline.} = self.union1.struct1.union1.pintVal
-proc pintVal*(self: var PROPVARIANT): var ptr INT {.inline.} = self.union1.struct1.union1.pintVal
-proc `puintVal=`*(self: var PROPVARIANT, x: ptr UINT) {.inline.} = self.union1.struct1.union1.puintVal = x
-proc puintVal*(self: PROPVARIANT): ptr UINT {.inline.} = self.union1.struct1.union1.puintVal
-proc puintVal*(self: var PROPVARIANT): var ptr UINT {.inline.} = self.union1.struct1.union1.puintVal
-proc `pfltVal=`*(self: var PROPVARIANT, x: ptr FLOAT) {.inline.} = self.union1.struct1.union1.pfltVal = x
-proc pfltVal*(self: PROPVARIANT): ptr FLOAT {.inline.} = self.union1.struct1.union1.pfltVal
-proc pfltVal*(self: var PROPVARIANT): var ptr FLOAT {.inline.} = self.union1.struct1.union1.pfltVal
-proc `pdblVal=`*(self: var PROPVARIANT, x: ptr DOUBLE) {.inline.} = self.union1.struct1.union1.pdblVal = x
-proc pdblVal*(self: PROPVARIANT): ptr DOUBLE {.inline.} = self.union1.struct1.union1.pdblVal
-proc pdblVal*(self: var PROPVARIANT): var ptr DOUBLE {.inline.} = self.union1.struct1.union1.pdblVal
-proc `pboolVal=`*(self: var PROPVARIANT, x: ptr VARIANT_BOOL) {.inline.} = self.union1.struct1.union1.pboolVal = x
-proc pboolVal*(self: PROPVARIANT): ptr VARIANT_BOOL {.inline.} = self.union1.struct1.union1.pboolVal
-proc pboolVal*(self: var PROPVARIANT): var ptr VARIANT_BOOL {.inline.} = self.union1.struct1.union1.pboolVal
-proc `pdecVal=`*(self: var PROPVARIANT, x: ptr DECIMAL) {.inline.} = self.union1.struct1.union1.pdecVal = x
-proc pdecVal*(self: PROPVARIANT): ptr DECIMAL {.inline.} = self.union1.struct1.union1.pdecVal
-proc pdecVal*(self: var PROPVARIANT): var ptr DECIMAL {.inline.} = self.union1.struct1.union1.pdecVal
-proc `pscode=`*(self: var PROPVARIANT, x: ptr SCODE) {.inline.} = self.union1.struct1.union1.pscode = x
-proc pscode*(self: PROPVARIANT): ptr SCODE {.inline.} = self.union1.struct1.union1.pscode
-proc pscode*(self: var PROPVARIANT): var ptr SCODE {.inline.} = self.union1.struct1.union1.pscode
-proc `pcyVal=`*(self: var PROPVARIANT, x: ptr CY) {.inline.} = self.union1.struct1.union1.pcyVal = x
-proc pcyVal*(self: PROPVARIANT): ptr CY {.inline.} = self.union1.struct1.union1.pcyVal
-proc pcyVal*(self: var PROPVARIANT): var ptr CY {.inline.} = self.union1.struct1.union1.pcyVal
-proc `pdate=`*(self: var PROPVARIANT, x: ptr DATE) {.inline.} = self.union1.struct1.union1.pdate = x
-proc pdate*(self: PROPVARIANT): ptr DATE {.inline.} = self.union1.struct1.union1.pdate
-proc pdate*(self: var PROPVARIANT): var ptr DATE {.inline.} = self.union1.struct1.union1.pdate
-proc `pbstrVal=`*(self: var PROPVARIANT, x: ptr BSTR) {.inline.} = self.union1.struct1.union1.pbstrVal = x
-proc pbstrVal*(self: PROPVARIANT): ptr BSTR {.inline.} = self.union1.struct1.union1.pbstrVal
-proc pbstrVal*(self: var PROPVARIANT): var ptr BSTR {.inline.} = self.union1.struct1.union1.pbstrVal
-proc `ppunkVal=`*(self: var PROPVARIANT, x: ptr ptr IUnknown) {.inline.} = self.union1.struct1.union1.ppunkVal = x
-proc ppunkVal*(self: PROPVARIANT): ptr ptr IUnknown {.inline.} = self.union1.struct1.union1.ppunkVal
-proc ppunkVal*(self: var PROPVARIANT): var ptr ptr IUnknown {.inline.} = self.union1.struct1.union1.ppunkVal
-proc `ppdispVal=`*(self: var PROPVARIANT, x: ptr ptr IDispatch) {.inline.} = self.union1.struct1.union1.ppdispVal = x
-proc ppdispVal*(self: PROPVARIANT): ptr ptr IDispatch {.inline.} = self.union1.struct1.union1.ppdispVal
-proc ppdispVal*(self: var PROPVARIANT): var ptr ptr IDispatch {.inline.} = self.union1.struct1.union1.ppdispVal
-proc `pparray=`*(self: var PROPVARIANT, x: ptr LPSAFEARRAY) {.inline.} = self.union1.struct1.union1.pparray = x
-proc pparray*(self: PROPVARIANT): ptr LPSAFEARRAY {.inline.} = self.union1.struct1.union1.pparray
-proc pparray*(self: var PROPVARIANT): var ptr LPSAFEARRAY {.inline.} = self.union1.struct1.union1.pparray
-proc `pvarVal=`*(self: var PROPVARIANT, x: ptr PROPVARIANT) {.inline.} = self.union1.struct1.union1.pvarVal = x
-proc pvarVal*(self: PROPVARIANT): ptr PROPVARIANT {.inline.} = self.union1.struct1.union1.pvarVal
-proc pvarVal*(self: var PROPVARIANT): var ptr PROPVARIANT {.inline.} = self.union1.struct1.union1.pvarVal
-proc `decVal=`*(self: var PROPVARIANT, x: DECIMAL) {.inline.} = self.union1.decVal = x
-proc decVal*(self: PROPVARIANT): DECIMAL {.inline.} = self.union1.decVal
-proc decVal*(self: var PROPVARIANT): var DECIMAL {.inline.} = self.union1.decVal
-proc `propid=`*(self: var PROPSPEC, x: PROPID) {.inline.} = self.union1.propid = x
-proc propid*(self: PROPSPEC): PROPID {.inline.} = self.union1.propid
-proc propid*(self: var PROPSPEC): var PROPID {.inline.} = self.union1.propid
-proc `lpwstr=`*(self: var PROPSPEC, x: LPOLESTR) {.inline.} = self.union1.lpwstr = x
-proc lpwstr*(self: PROPSPEC): LPOLESTR {.inline.} = self.union1.lpwstr
-proc lpwstr*(self: var PROPSPEC): var LPOLESTR {.inline.} = self.union1.lpwstr
-proc `pOleStr=`*(self: var STRRET, x: LPWSTR) {.inline.} = self.union1.pOleStr = x
-proc pOleStr*(self: STRRET): LPWSTR {.inline.} = self.union1.pOleStr
-proc pOleStr*(self: var STRRET): var LPWSTR {.inline.} = self.union1.pOleStr
-proc `uOffset=`*(self: var STRRET, x: UINT) {.inline.} = self.union1.uOffset = x
-proc uOffset*(self: STRRET): UINT {.inline.} = self.union1.uOffset
-proc uOffset*(self: var STRRET): var UINT {.inline.} = self.union1.uOffset
-proc `cStr=`*(self: var STRRET, x: array[260, char]) {.inline.} = self.union1.cStr = x
-proc cStr*(self: STRRET): array[260, char] {.inline.} = self.union1.cStr
-proc cStr*(self: var STRRET): var array[260, char] {.inline.} = self.union1.cStr
-proc QueryInterface*(self: ptr IUnknown, riid: REFIID, ppvObject: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryInterface(self, riid, ppvObject)
-proc AddRef*(self: ptr IUnknown): ULONG {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddRef(self)
-proc Release*(self: ptr IUnknown): ULONG {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Release(self)
-proc Begin_QueryInterface*(self: ptr AsyncIUnknown, riid: REFIID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Begin_QueryInterface(self, riid)
-proc Finish_QueryInterface*(self: ptr AsyncIUnknown, ppvObject: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Finish_QueryInterface(self, ppvObject)
-proc Begin_AddRef*(self: ptr AsyncIUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Begin_AddRef(self)
-proc Finish_AddRef*(self: ptr AsyncIUnknown): ULONG {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Finish_AddRef(self)
-proc Begin_Release*(self: ptr AsyncIUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Begin_Release(self)
-proc Finish_Release*(self: ptr AsyncIUnknown): ULONG {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Finish_Release(self)
-proc CreateInstance*(self: ptr IClassFactory, pUnkOuter: ptr IUnknown, riid: REFIID, ppvObject: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstance(self, pUnkOuter, riid, ppvObject)
-proc LockServer*(self: ptr IClassFactory, fLock: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LockServer(self, fLock)
-proc GetUnmarshalClass*(self: ptr IMarshal, riid: REFIID, pv: pointer, dwDestContext: DWORD, pvDestContext: pointer, mshlflags: DWORD, pCid: ptr CLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUnmarshalClass(self, riid, pv, dwDestContext, pvDestContext, mshlflags, pCid)
-proc GetMarshalSizeMax*(self: ptr IMarshal, riid: REFIID, pv: pointer, dwDestContext: DWORD, pvDestContext: pointer, mshlflags: DWORD, pSize: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMarshalSizeMax(self, riid, pv, dwDestContext, pvDestContext, mshlflags, pSize)
-proc MarshalInterface*(self: ptr IMarshal, pStm: ptr IStream, riid: REFIID, pv: pointer, dwDestContext: DWORD, pvDestContext: pointer, mshlflags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MarshalInterface(self, pStm, riid, pv, dwDestContext, pvDestContext, mshlflags)
-proc UnmarshalInterface*(self: ptr IMarshal, pStm: ptr IStream, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnmarshalInterface(self, pStm, riid, ppv)
-proc ReleaseMarshalData*(self: ptr IMarshal, pStm: ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseMarshalData(self, pStm)
-proc DisconnectObject*(self: ptr IMarshal, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DisconnectObject(self, dwReserved)
-proc Alloc*(self: ptr IMalloc, cb: SIZE_T): pointer {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Alloc(self, cb)
-proc Realloc*(self: ptr IMalloc, pv: pointer, cb: SIZE_T): pointer {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Realloc(self, pv, cb)
-proc Free*(self: ptr IMalloc, pv: pointer): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Free(self, pv)
-proc GetSize*(self: ptr IMalloc, pv: pointer): SIZE_T {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSize(self, pv)
-proc DidAlloc*(self: ptr IMalloc, pv: pointer): int32 {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DidAlloc(self, pv)
-proc HeapMinimize*(self: ptr IMalloc): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HeapMinimize(self)
-proc GetClassForHandler*(self: ptr IStdMarshalInfo, dwDestContext: DWORD, pvDestContext: pointer, pClsid: ptr CLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClassForHandler(self, dwDestContext, pvDestContext, pClsid)
-proc AddConnection*(self: ptr IExternalConnection, extconn: DWORD, reserved: DWORD): DWORD {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddConnection(self, extconn, reserved)
-proc ReleaseConnection*(self: ptr IExternalConnection, extconn: DWORD, reserved: DWORD, fLastReleaseCloses: WINBOOL): DWORD {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseConnection(self, extconn, reserved, fLastReleaseCloses)
-proc QueryMultipleInterfaces*(self: ptr IMultiQI, cMQIs: ULONG, pMQIs: ptr MULTI_QI): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryMultipleInterfaces(self, cMQIs, pMQIs)
-proc Begin_QueryMultipleInterfaces*(self: ptr AsyncIMultiQI, cMQIs: ULONG, pMQIs: ptr MULTI_QI): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Begin_QueryMultipleInterfaces(self, cMQIs, pMQIs)
-proc Finish_QueryMultipleInterfaces*(self: ptr AsyncIMultiQI, pMQIs: ptr MULTI_QI): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Finish_QueryMultipleInterfaces(self, pMQIs)
-proc QueryInternalInterface*(self: ptr IInternalUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryInternalInterface(self, riid, ppv)
-proc Next*(self: ptr IEnumUnknown, celt: ULONG, rgelt: ptr ptr IUnknown, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumUnknown, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumUnknown, ppenum: ptr ptr IEnumUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc Next*(self: ptr IEnumString, celt: ULONG, rgelt: ptr LPOLESTR, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumString, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumString): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumString, ppenum: ptr ptr IEnumString): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc Read*(self: ptr ISequentialStream, pv: pointer, cb: ULONG, pcbRead: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Read(self, pv, cb, pcbRead)
-proc Write*(self: ptr ISequentialStream, pv: pointer, cb: ULONG, pcbWritten: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Write(self, pv, cb, pcbWritten)
-proc Seek*(self: ptr IStream, dlibMove: LARGE_INTEGER, dwOrigin: DWORD, plibNewPosition: ptr ULARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Seek(self, dlibMove, dwOrigin, plibNewPosition)
-proc SetSize*(self: ptr IStream, libNewSize: ULARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSize(self, libNewSize)
-proc CopyTo*(self: ptr IStream, pstm: ptr IStream, cb: ULARGE_INTEGER, pcbRead: ptr ULARGE_INTEGER, pcbWritten: ptr ULARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyTo(self, pstm, cb, pcbRead, pcbWritten)
-proc Commit*(self: ptr IStream, grfCommitFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Commit(self, grfCommitFlags)
-proc Revert*(self: ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Revert(self)
-proc LockRegion*(self: ptr IStream, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LockRegion(self, libOffset, cb, dwLockType)
-proc UnlockRegion*(self: ptr IStream, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnlockRegion(self, libOffset, cb, dwLockType)
-proc Stat*(self: ptr IStream, pstatstg: ptr STATSTG, grfStatFlag: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Stat(self, pstatstg, grfStatFlag)
-proc Clone*(self: ptr IStream, ppstm: ptr ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppstm)
-proc GetBuffer*(self: ptr IRpcChannelBuffer, pMessage: ptr RPCOLEMESSAGE, riid: REFIID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBuffer(self, pMessage, riid)
-proc SendReceive*(self: ptr IRpcChannelBuffer, pMessage: ptr RPCOLEMESSAGE, pStatus: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SendReceive(self, pMessage, pStatus)
-proc FreeBuffer*(self: ptr IRpcChannelBuffer, pMessage: ptr RPCOLEMESSAGE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FreeBuffer(self, pMessage)
-proc GetDestCtx*(self: ptr IRpcChannelBuffer, pdwDestContext: ptr DWORD, ppvDestContext: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDestCtx(self, pdwDestContext, ppvDestContext)
-proc IsConnected*(self: ptr IRpcChannelBuffer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsConnected(self)
-proc GetProtocolVersion*(self: ptr IRpcChannelBuffer2, pdwVersion: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProtocolVersion(self, pdwVersion)
-proc Send*(self: ptr IAsyncRpcChannelBuffer, pMsg: ptr RPCOLEMESSAGE, pSync: ptr ISynchronize, pulStatus: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Send(self, pMsg, pSync, pulStatus)
-proc Receive*(self: ptr IAsyncRpcChannelBuffer, pMsg: ptr RPCOLEMESSAGE, pulStatus: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Receive(self, pMsg, pulStatus)
-proc GetDestCtxEx*(self: ptr IAsyncRpcChannelBuffer, pMsg: ptr RPCOLEMESSAGE, pdwDestContext: ptr DWORD, ppvDestContext: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDestCtxEx(self, pMsg, pdwDestContext, ppvDestContext)
-proc Send*(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, pulStatus: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Send(self, pMsg, pulStatus)
-proc Receive*(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, ulSize: ULONG, pulStatus: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Receive(self, pMsg, ulSize, pulStatus)
-proc Cancel*(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Cancel(self, pMsg)
-proc GetCallContext*(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, riid: REFIID, pInterface: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCallContext(self, pMsg, riid, pInterface)
-proc GetDestCtxEx*(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, pdwDestContext: ptr DWORD, ppvDestContext: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDestCtxEx(self, pMsg, pdwDestContext, ppvDestContext)
-proc GetState*(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, pState: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetState(self, pMsg, pState)
-proc RegisterAsync*(self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, pAsyncMgr: ptr IAsyncManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterAsync(self, pMsg, pAsyncMgr)
-proc NegotiateSyntax*(self: ptr IRpcSyntaxNegotiate, pMsg: ptr RPCOLEMESSAGE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NegotiateSyntax(self, pMsg)
-proc Connect*(self: ptr IRpcProxyBuffer, pRpcChannelBuffer: ptr IRpcChannelBuffer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Connect(self, pRpcChannelBuffer)
-proc Disconnect*(self: ptr IRpcProxyBuffer): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Disconnect(self)
-proc Connect*(self: ptr IRpcStubBuffer, pUnkServer: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Connect(self, pUnkServer)
-proc Disconnect*(self: ptr IRpcStubBuffer): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Disconnect(self)
-proc Invoke*(self: ptr IRpcStubBuffer, prpcmsg: ptr RPCOLEMESSAGE, pRpcChannelBuffer: ptr IRpcChannelBuffer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invoke(self, prpcmsg, pRpcChannelBuffer)
-proc IsIIDSupported*(self: ptr IRpcStubBuffer, riid: REFIID): ptr IRpcStubBuffer {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsIIDSupported(self, riid)
-proc CountRefs*(self: ptr IRpcStubBuffer): ULONG {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CountRefs(self)
-proc DebugServerQueryInterface*(self: ptr IRpcStubBuffer, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DebugServerQueryInterface(self, ppv)
-proc DebugServerRelease*(self: ptr IRpcStubBuffer, pv: pointer): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DebugServerRelease(self, pv)
-proc CreateProxy*(self: ptr IPSFactoryBuffer, pUnkOuter: ptr IUnknown, riid: REFIID, ppProxy: ptr ptr IRpcProxyBuffer, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateProxy(self, pUnkOuter, riid, ppProxy, ppv)
-proc CreateStub*(self: ptr IPSFactoryBuffer, riid: REFIID, pUnkServer: ptr IUnknown, ppStub: ptr ptr IRpcStubBuffer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateStub(self, riid, pUnkServer, ppStub)
-proc ClientGetSize*(self: ptr IChannelHook, uExtent: REFGUID, riid: REFIID, pDataSize: ptr ULONG): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClientGetSize(self, uExtent, riid, pDataSize)
-proc ClientFillBuffer*(self: ptr IChannelHook, uExtent: REFGUID, riid: REFIID, pDataSize: ptr ULONG, pDataBuffer: pointer): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClientFillBuffer(self, uExtent, riid, pDataSize, pDataBuffer)
-proc ClientNotify*(self: ptr IChannelHook, uExtent: REFGUID, riid: REFIID, cbDataSize: ULONG, pDataBuffer: pointer, lDataRep: DWORD, hrFault: HRESULT): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClientNotify(self, uExtent, riid, cbDataSize, pDataBuffer, lDataRep, hrFault)
-proc ServerNotify*(self: ptr IChannelHook, uExtent: REFGUID, riid: REFIID, cbDataSize: ULONG, pDataBuffer: pointer, lDataRep: DWORD): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ServerNotify(self, uExtent, riid, cbDataSize, pDataBuffer, lDataRep)
-proc ServerGetSize*(self: ptr IChannelHook, uExtent: REFGUID, riid: REFIID, hrFault: HRESULT, pDataSize: ptr ULONG): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ServerGetSize(self, uExtent, riid, hrFault, pDataSize)
-proc ServerFillBuffer*(self: ptr IChannelHook, uExtent: REFGUID, riid: REFIID, pDataSize: ptr ULONG, pDataBuffer: pointer, hrFault: HRESULT): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ServerFillBuffer(self, uExtent, riid, pDataSize, pDataBuffer, hrFault)
-proc QueryBlanket*(self: ptr IClientSecurity, pProxy: ptr IUnknown, pAuthnSvc: ptr DWORD, pAuthzSvc: ptr DWORD, pServerPrincName: ptr ptr OLECHAR, pAuthnLevel: ptr DWORD, pImpLevel: ptr DWORD, pAuthInfo: ptr pointer, pCapabilites: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryBlanket(self, pProxy, pAuthnSvc, pAuthzSvc, pServerPrincName, pAuthnLevel, pImpLevel, pAuthInfo, pCapabilites)
-proc SetBlanket*(self: ptr IClientSecurity, pProxy: ptr IUnknown, dwAuthnSvc: DWORD, dwAuthzSvc: DWORD, pServerPrincName: ptr OLECHAR, dwAuthnLevel: DWORD, dwImpLevel: DWORD, pAuthInfo: pointer, dwCapabilities: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBlanket(self, pProxy, dwAuthnSvc, dwAuthzSvc, pServerPrincName, dwAuthnLevel, dwImpLevel, pAuthInfo, dwCapabilities)
-proc CopyProxy*(self: ptr IClientSecurity, pProxy: ptr IUnknown, ppCopy: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyProxy(self, pProxy, ppCopy)
-proc QueryBlanket*(self: ptr IServerSecurity, pAuthnSvc: ptr DWORD, pAuthzSvc: ptr DWORD, pServerPrincName: ptr ptr OLECHAR, pAuthnLevel: ptr DWORD, pImpLevel: ptr DWORD, pPrivs: ptr pointer, pCapabilities: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryBlanket(self, pAuthnSvc, pAuthzSvc, pServerPrincName, pAuthnLevel, pImpLevel, pPrivs, pCapabilities)
-proc ImpersonateClient*(self: ptr IServerSecurity): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ImpersonateClient(self)
-proc RevertToSelf*(self: ptr IServerSecurity): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RevertToSelf(self)
-proc IsImpersonating*(self: ptr IServerSecurity): WINBOOL {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsImpersonating(self)
-proc Set*(self: ptr IRpcOptions, pPrx: ptr IUnknown, dwProperty: RPCOPT_PROPERTIES, dwValue: ULONG_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Set(self, pPrx, dwProperty, dwValue)
-proc Query*(self: ptr IRpcOptions, pPrx: ptr IUnknown, dwProperty: RPCOPT_PROPERTIES, pdwValue: ptr ULONG_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Query(self, pPrx, dwProperty, pdwValue)
-proc Set*(self: ptr IGlobalOptions, dwProperty: GLOBALOPT_PROPERTIES, dwValue: ULONG_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Set(self, dwProperty, dwValue)
-proc Query*(self: ptr IGlobalOptions, dwProperty: GLOBALOPT_PROPERTIES, pdwValue: ptr ULONG_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Query(self, dwProperty, pdwValue)
-proc LoadDllServer*(self: ptr ISurrogate, Clsid: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LoadDllServer(self, Clsid)
-proc FreeSurrogate*(self: ptr ISurrogate): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FreeSurrogate(self)
-proc RegisterInterfaceInGlobal*(self: ptr IGlobalInterfaceTable, pUnk: ptr IUnknown, riid: REFIID, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterInterfaceInGlobal(self, pUnk, riid, pdwCookie)
-proc RevokeInterfaceFromGlobal*(self: ptr IGlobalInterfaceTable, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RevokeInterfaceFromGlobal(self, dwCookie)
-proc GetInterfaceFromGlobal*(self: ptr IGlobalInterfaceTable, dwCookie: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInterfaceFromGlobal(self, dwCookie, riid, ppv)
-proc Wait*(self: ptr ISynchronize, dwFlags: DWORD, dwMilliseconds: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Wait(self, dwFlags, dwMilliseconds)
-proc Signal*(self: ptr ISynchronize): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Signal(self)
-proc Reset*(self: ptr ISynchronize): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc GetHandle*(self: ptr ISynchronizeHandle, ph: ptr HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHandle(self, ph)
-proc SetEventHandle*(self: ptr ISynchronizeEvent, ph: ptr HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetEventHandle(self, ph)
-proc AddSynchronize*(self: ptr ISynchronizeContainer, pSync: ptr ISynchronize): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddSynchronize(self, pSync)
-proc WaitMultiple*(self: ptr ISynchronizeContainer, dwFlags: DWORD, dwTimeOut: DWORD, ppSync: ptr ptr ISynchronize): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WaitMultiple(self, dwFlags, dwTimeOut, ppSync)
-proc ReleaseMutex*(self: ptr ISynchronizeMutex): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseMutex(self)
-proc Cancel*(self: ptr ICancelMethodCalls, ulSeconds: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Cancel(self, ulSeconds)
-proc TestCancel*(self: ptr ICancelMethodCalls): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TestCancel(self)
-proc CompleteCall*(self: ptr IAsyncManager, Result: HRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CompleteCall(self, Result)
-proc GetCallContext*(self: ptr IAsyncManager, riid: REFIID, pInterface: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCallContext(self, riid, pInterface)
-proc GetState*(self: ptr IAsyncManager, pulStateFlags: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetState(self, pulStateFlags)
-proc CreateCall*(self: ptr ICallFactory, riid: REFIID, pCtrlUnk: ptr IUnknown, riid2: REFIID, ppv: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateCall(self, riid, pCtrlUnk, riid2, ppv)
-proc GetDCOMProtocolVersion*(self: ptr IRpcHelper, pComVersion: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDCOMProtocolVersion(self, pComVersion)
-proc GetIIDFromOBJREF*(self: ptr IRpcHelper, pObjRef: pointer, piid: ptr ptr IID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIIDFromOBJREF(self, pObjRef, piid)
-proc ReleaseMarshalBuffer*(self: ptr IReleaseMarshalBuffers, pMsg: ptr RPCOLEMESSAGE, dwFlags: DWORD, pChnl: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseMarshalBuffer(self, pMsg, dwFlags, pChnl)
-proc WaitMultiple*(self: ptr IWaitMultiple, timeout: DWORD, pSync: ptr ptr ISynchronize): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WaitMultiple(self, timeout, pSync)
-proc AddSynchronize*(self: ptr IWaitMultiple, pSync: ptr ISynchronize): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddSynchronize(self, pSync)
-proc EnableCOMDynamicAddrTracking*(self: ptr IAddrTrackingControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnableCOMDynamicAddrTracking(self)
-proc DisableCOMDynamicAddrTracking*(self: ptr IAddrTrackingControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DisableCOMDynamicAddrTracking(self)
-proc GetCurrentAddrExclusionList*(self: ptr IAddrExclusionControl, riid: REFIID, ppEnumerator: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentAddrExclusionList(self, riid, ppEnumerator)
-proc UpdateAddrExclusionList*(self: ptr IAddrExclusionControl, pEnumerator: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateAddrExclusionList(self, pEnumerator)
-proc Pull*(self: ptr IPipeByte, buf: ptr BYTE, cRequest: ULONG, pcReturned: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Pull(self, buf, cRequest, pcReturned)
-proc Push*(self: ptr IPipeByte, buf: ptr BYTE, cSent: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Push(self, buf, cSent)
-proc Pull*(self: ptr IPipeLong, buf: ptr LONG, cRequest: ULONG, pcReturned: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Pull(self, buf, cRequest, pcReturned)
-proc Push*(self: ptr IPipeLong, buf: ptr LONG, cSent: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Push(self, buf, cSent)
-proc Pull*(self: ptr IPipeDouble, buf: ptr DOUBLE, cRequest: ULONG, pcReturned: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Pull(self, buf, cRequest, pcReturned)
-proc Push*(self: ptr IPipeDouble, buf: ptr DOUBLE, cSent: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Push(self, buf, cSent)
-proc Next*(self: ptr IEnumContextProps, celt: ULONG, pContextProperties: ptr ContextProperty, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, pContextProperties, pceltFetched)
-proc Skip*(self: ptr IEnumContextProps, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumContextProps): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumContextProps, ppEnumContextProps: ptr ptr IEnumContextProps): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppEnumContextProps)
-proc Count*(self: ptr IEnumContextProps, pcelt: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Count(self, pcelt)
-proc SetProperty*(self: ptr IContext, rpolicyId: REFGUID, flags: CPFLAGS, pUnk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProperty(self, rpolicyId, flags, pUnk)
-proc RemoveProperty*(self: ptr IContext, rPolicyId: REFGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveProperty(self, rPolicyId)
-proc GetProperty*(self: ptr IContext, rGuid: REFGUID, pFlags: ptr CPFLAGS, ppUnk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty(self, rGuid, pFlags, ppUnk)
-proc EnumContextProps*(self: ptr IContext, ppEnumContextProps: ptr ptr IEnumContextProps): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumContextProps(self, ppEnumContextProps)
-proc GetCurrentApartmentType*(self: ptr IComThreadingInfo, pAptType: ptr APTTYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentApartmentType(self, pAptType)
-proc GetCurrentThreadType*(self: ptr IComThreadingInfo, pThreadType: ptr THDTYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentThreadType(self, pThreadType)
-proc GetCurrentLogicalThreadId*(self: ptr IComThreadingInfo, pguidLogicalThreadId: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentLogicalThreadId(self, pguidLogicalThreadId)
-proc SetCurrentLogicalThreadId*(self: ptr IComThreadingInfo, rguid: REFGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCurrentLogicalThreadId(self, rguid)
-proc ResetInitializerTimeout*(self: ptr IProcessInitControl, dwSecondsRemaining: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResetInitializerTimeout(self, dwSecondsRemaining)
-proc GetMarshalingContextAttribute*(self: ptr IMarshalingStream, attribute: CO_MARSHALING_CONTEXT_ATTRIBUTES, pAttributeValue: ptr ULONG_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMarshalingContextAttribute(self, attribute, pAttributeValue)
-proc PreAlloc*(self: ptr IMallocSpy, cbRequest: SIZE_T): SIZE_T {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreAlloc(self, cbRequest)
-proc PostAlloc*(self: ptr IMallocSpy, pActual: pointer): pointer {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostAlloc(self, pActual)
-proc PreFree*(self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL): pointer {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreFree(self, pRequest, fSpyed)
-proc PostFree*(self: ptr IMallocSpy, fSpyed: WINBOOL): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostFree(self, fSpyed)
-proc PreRealloc*(self: ptr IMallocSpy, pRequest: pointer, cbRequest: SIZE_T, ppNewRequest: ptr pointer, fSpyed: WINBOOL): SIZE_T {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreRealloc(self, pRequest, cbRequest, ppNewRequest, fSpyed)
-proc PostRealloc*(self: ptr IMallocSpy, pActual: pointer, fSpyed: WINBOOL): pointer {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostRealloc(self, pActual, fSpyed)
-proc PreGetSize*(self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL): pointer {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreGetSize(self, pRequest, fSpyed)
-proc PostGetSize*(self: ptr IMallocSpy, cbActual: SIZE_T, fSpyed: WINBOOL): SIZE_T {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostGetSize(self, cbActual, fSpyed)
-proc PreDidAlloc*(self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL): pointer {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreDidAlloc(self, pRequest, fSpyed)
-proc PostDidAlloc*(self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL, fActual: int32): int32 {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostDidAlloc(self, pRequest, fSpyed, fActual)
-proc PreHeapMinimize*(self: ptr IMallocSpy): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreHeapMinimize(self)
-proc PostHeapMinimize*(self: ptr IMallocSpy): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostHeapMinimize(self)
-proc RegisterObjectBound*(self: ptr IBindCtx, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterObjectBound(self, punk)
-proc RevokeObjectBound*(self: ptr IBindCtx, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RevokeObjectBound(self, punk)
-proc ReleaseBoundObjects*(self: ptr IBindCtx): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseBoundObjects(self)
-proc SetBindOptions*(self: ptr IBindCtx, pbindopts: ptr BIND_OPTS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBindOptions(self, pbindopts)
-proc GetBindOptions*(self: ptr IBindCtx, pbindopts: ptr BIND_OPTS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBindOptions(self, pbindopts)
-proc GetRunningObjectTable*(self: ptr IBindCtx, pprot: ptr ptr IRunningObjectTable): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRunningObjectTable(self, pprot)
-proc RegisterObjectParam*(self: ptr IBindCtx, pszKey: LPOLESTR, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterObjectParam(self, pszKey, punk)
-proc GetObjectParam*(self: ptr IBindCtx, pszKey: LPOLESTR, ppunk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObjectParam(self, pszKey, ppunk)
-proc EnumObjectParam*(self: ptr IBindCtx, ppenum: ptr ptr IEnumString): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumObjectParam(self, ppenum)
-proc RevokeObjectParam*(self: ptr IBindCtx, pszKey: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RevokeObjectParam(self, pszKey)
-proc Next*(self: ptr IEnumMoniker, celt: ULONG, rgelt: ptr ptr IMoniker, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumMoniker, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumMoniker, ppenum: ptr ptr IEnumMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc GetRunningClass*(self: ptr IRunnableObject, lpClsid: LPCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRunningClass(self, lpClsid)
-proc Run*(self: ptr IRunnableObject, pbc: LPBINDCTX): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Run(self, pbc)
-proc IsRunning*(self: ptr IRunnableObject): WINBOOL {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsRunning(self)
-proc LockRunning*(self: ptr IRunnableObject, fLock: WINBOOL, fLastUnlockCloses: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LockRunning(self, fLock, fLastUnlockCloses)
-proc SetContainedObject*(self: ptr IRunnableObject, fContained: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetContainedObject(self, fContained)
-proc Register*(self: ptr IRunningObjectTable, grfFlags: DWORD, punkObject: ptr IUnknown, pmkObjectName: ptr IMoniker, pdwRegister: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Register(self, grfFlags, punkObject, pmkObjectName, pdwRegister)
-proc Revoke*(self: ptr IRunningObjectTable, dwRegister: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Revoke(self, dwRegister)
-proc IsRunning*(self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsRunning(self, pmkObjectName)
-proc GetObject*(self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker, ppunkObject: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObject(self, pmkObjectName, ppunkObject)
-proc NoteChangeTime*(self: ptr IRunningObjectTable, dwRegister: DWORD, pfiletime: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NoteChangeTime(self, dwRegister, pfiletime)
-proc GetTimeOfLastChange*(self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker, pfiletime: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTimeOfLastChange(self, pmkObjectName, pfiletime)
-proc EnumRunning*(self: ptr IRunningObjectTable, ppenumMoniker: ptr ptr IEnumMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumRunning(self, ppenumMoniker)
-proc GetClassID*(self: ptr IPersist, pClassID: ptr CLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClassID(self, pClassID)
-proc IsDirty*(self: ptr IPersistStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDirty(self)
-proc Load*(self: ptr IPersistStream, pStm: ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load(self, pStm)
-proc Save*(self: ptr IPersistStream, pStm: ptr IStream, fClearDirty: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Save(self, pStm, fClearDirty)
-proc GetSizeMax*(self: ptr IPersistStream, pcbSize: ptr ULARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSizeMax(self, pcbSize)
-proc BindToObject*(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, riidResult: REFIID, ppvResult: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindToObject(self, pbc, pmkToLeft, riidResult, ppvResult)
-proc BindToStorage*(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, riid: REFIID, ppvObj: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindToStorage(self, pbc, pmkToLeft, riid, ppvObj)
-proc Reduce*(self: ptr IMoniker, pbc: ptr IBindCtx, dwReduceHowFar: DWORD, ppmkToLeft: ptr ptr IMoniker, ppmkReduced: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reduce(self, pbc, dwReduceHowFar, ppmkToLeft, ppmkReduced)
-proc ComposeWith*(self: ptr IMoniker, pmkRight: ptr IMoniker, fOnlyIfNotGeneric: WINBOOL, ppmkComposite: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ComposeWith(self, pmkRight, fOnlyIfNotGeneric, ppmkComposite)
-proc Enum*(self: ptr IMoniker, fForward: WINBOOL, ppenumMoniker: ptr ptr IEnumMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Enum(self, fForward, ppenumMoniker)
-proc IsEqual*(self: ptr IMoniker, pmkOtherMoniker: ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsEqual(self, pmkOtherMoniker)
-proc Hash*(self: ptr IMoniker, pdwHash: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Hash(self, pdwHash)
-proc IsRunning*(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, pmkNewlyRunning: ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsRunning(self, pbc, pmkToLeft, pmkNewlyRunning)
-proc GetTimeOfLastChange*(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, pFileTime: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTimeOfLastChange(self, pbc, pmkToLeft, pFileTime)
-proc Inverse*(self: ptr IMoniker, ppmk: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Inverse(self, ppmk)
-proc CommonPrefixWith*(self: ptr IMoniker, pmkOther: ptr IMoniker, ppmkPrefix: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CommonPrefixWith(self, pmkOther, ppmkPrefix)
-proc RelativePathTo*(self: ptr IMoniker, pmkOther: ptr IMoniker, ppmkRelPath: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RelativePathTo(self, pmkOther, ppmkRelPath)
-proc GetDisplayName*(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, ppszDisplayName: ptr LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDisplayName(self, pbc, pmkToLeft, ppszDisplayName)
-proc ParseDisplayName*(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, pszDisplayName: LPOLESTR, pchEaten: ptr ULONG, ppmkOut: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseDisplayName(self, pbc, pmkToLeft, pszDisplayName, pchEaten, ppmkOut)
-proc IsSystemMoniker*(self: ptr IMoniker, pdwMksys: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsSystemMoniker(self, pdwMksys)
-proc GetComparisonData*(self: ptr IROTData, pbData: ptr uint8, cbMax: ULONG, pcbData: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetComparisonData(self, pbData, cbMax, pcbData)
-proc Next*(self: ptr IEnumSTATSTG, celt: ULONG, rgelt: ptr STATSTG, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumSTATSTG, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumSTATSTG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumSTATSTG, ppenum: ptr ptr IEnumSTATSTG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc CreateStream*(self: ptr IStorage, pwcsName: ptr OLECHAR, grfMode: DWORD, reserved1: DWORD, reserved2: DWORD, ppstm: ptr ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateStream(self, pwcsName, grfMode, reserved1, reserved2, ppstm)
-proc OpenStream*(self: ptr IStorage, pwcsName: ptr OLECHAR, reserved1: pointer, grfMode: DWORD, reserved2: DWORD, ppstm: ptr ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OpenStream(self, pwcsName, reserved1, grfMode, reserved2, ppstm)
-proc CreateStorage*(self: ptr IStorage, pwcsName: ptr OLECHAR, grfMode: DWORD, reserved1: DWORD, reserved2: DWORD, ppstg: ptr ptr IStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateStorage(self, pwcsName, grfMode, reserved1, reserved2, ppstg)
-proc OpenStorage*(self: ptr IStorage, pwcsName: ptr OLECHAR, pstgPriority: ptr IStorage, grfMode: DWORD, snbExclude: SNB, reserved: DWORD, ppstg: ptr ptr IStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OpenStorage(self, pwcsName, pstgPriority, grfMode, snbExclude, reserved, ppstg)
-proc CopyTo*(self: ptr IStorage, ciidExclude: DWORD, rgiidExclude: ptr IID, snbExclude: SNB, pstgDest: ptr IStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyTo(self, ciidExclude, rgiidExclude, snbExclude, pstgDest)
-proc MoveElementTo*(self: ptr IStorage, pwcsName: ptr OLECHAR, pstgDest: ptr IStorage, pwcsNewName: ptr OLECHAR, grfFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveElementTo(self, pwcsName, pstgDest, pwcsNewName, grfFlags)
-proc Commit*(self: ptr IStorage, grfCommitFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Commit(self, grfCommitFlags)
-proc Revert*(self: ptr IStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Revert(self)
-proc EnumElements*(self: ptr IStorage, reserved1: DWORD, reserved2: pointer, reserved3: DWORD, ppenum: ptr ptr IEnumSTATSTG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumElements(self, reserved1, reserved2, reserved3, ppenum)
-proc DestroyElement*(self: ptr IStorage, pwcsName: ptr OLECHAR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DestroyElement(self, pwcsName)
-proc RenameElement*(self: ptr IStorage, pwcsOldName: ptr OLECHAR, pwcsNewName: ptr OLECHAR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RenameElement(self, pwcsOldName, pwcsNewName)
-proc SetElementTimes*(self: ptr IStorage, pwcsName: ptr OLECHAR, pctime: ptr FILETIME, patime: ptr FILETIME, pmtime: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetElementTimes(self, pwcsName, pctime, patime, pmtime)
-proc SetClass*(self: ptr IStorage, clsid: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetClass(self, clsid)
-proc SetStateBits*(self: ptr IStorage, grfStateBits: DWORD, grfMask: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetStateBits(self, grfStateBits, grfMask)
-proc Stat*(self: ptr IStorage, pstatstg: ptr STATSTG, grfStatFlag: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Stat(self, pstatstg, grfStatFlag)
-proc IsDirty*(self: ptr IPersistFile): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDirty(self)
-proc Load*(self: ptr IPersistFile, pszFileName: LPCOLESTR, dwMode: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load(self, pszFileName, dwMode)
-proc Save*(self: ptr IPersistFile, pszFileName: LPCOLESTR, fRemember: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Save(self, pszFileName, fRemember)
-proc SaveCompleted*(self: ptr IPersistFile, pszFileName: LPCOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SaveCompleted(self, pszFileName)
-proc GetCurFile*(self: ptr IPersistFile, ppszFileName: ptr LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurFile(self, ppszFileName)
-proc IsDirty*(self: ptr IPersistStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDirty(self)
-proc InitNew*(self: ptr IPersistStorage, pStg: ptr IStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitNew(self, pStg)
-proc Load*(self: ptr IPersistStorage, pStg: ptr IStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load(self, pStg)
-proc Save*(self: ptr IPersistStorage, pStgSave: ptr IStorage, fSameAsLoad: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Save(self, pStgSave, fSameAsLoad)
-proc SaveCompleted*(self: ptr IPersistStorage, pStgNew: ptr IStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SaveCompleted(self, pStgNew)
-proc HandsOffStorage*(self: ptr IPersistStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandsOffStorage(self)
-proc ReadAt*(self: ptr ILockBytes, ulOffset: ULARGE_INTEGER, pv: pointer, cb: ULONG, pcbRead: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReadAt(self, ulOffset, pv, cb, pcbRead)
-proc WriteAt*(self: ptr ILockBytes, ulOffset: ULARGE_INTEGER, pv: pointer, cb: ULONG, pcbWritten: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WriteAt(self, ulOffset, pv, cb, pcbWritten)
-proc Flush*(self: ptr ILockBytes): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Flush(self)
-proc SetSize*(self: ptr ILockBytes, cb: ULARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSize(self, cb)
-proc LockRegion*(self: ptr ILockBytes, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LockRegion(self, libOffset, cb, dwLockType)
-proc UnlockRegion*(self: ptr ILockBytes, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnlockRegion(self, libOffset, cb, dwLockType)
-proc Stat*(self: ptr ILockBytes, pstatstg: ptr STATSTG, grfStatFlag: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Stat(self, pstatstg, grfStatFlag)
-proc Next*(self: ptr IEnumFORMATETC, celt: ULONG, rgelt: ptr FORMATETC, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumFORMATETC, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumFORMATETC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumFORMATETC, ppenum: ptr ptr IEnumFORMATETC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc Next*(self: ptr IEnumSTATDATA, celt: ULONG, rgelt: ptr STATDATA, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumSTATDATA, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumSTATDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumSTATDATA, ppenum: ptr ptr IEnumSTATDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc SwitchToFile*(self: ptr IRootStorage, pszFile: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SwitchToFile(self, pszFile)
-proc OnDataChange*(self: ptr IAdviseSink, pFormatetc: ptr FORMATETC, pStgmed: ptr STGMEDIUM): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDataChange(self, pFormatetc, pStgmed)
-proc OnViewChange*(self: ptr IAdviseSink, dwAspect: DWORD, lindex: LONG): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnViewChange(self, dwAspect, lindex)
-proc OnRename*(self: ptr IAdviseSink, pmk: ptr IMoniker): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnRename(self, pmk)
-proc OnSave*(self: ptr IAdviseSink): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnSave(self)
-proc OnClose*(self: ptr IAdviseSink): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnClose(self)
-proc Begin_OnDataChange*(self: ptr AsyncIAdviseSink, pFormatetc: ptr FORMATETC, pStgmed: ptr STGMEDIUM): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Begin_OnDataChange(self, pFormatetc, pStgmed)
-proc Finish_OnDataChange*(self: ptr AsyncIAdviseSink): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Finish_OnDataChange(self)
-proc Begin_OnViewChange*(self: ptr AsyncIAdviseSink, dwAspect: DWORD, lindex: LONG): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Begin_OnViewChange(self, dwAspect, lindex)
-proc Finish_OnViewChange*(self: ptr AsyncIAdviseSink): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Finish_OnViewChange(self)
-proc Begin_OnRename*(self: ptr AsyncIAdviseSink, pmk: ptr IMoniker): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Begin_OnRename(self, pmk)
-proc Finish_OnRename*(self: ptr AsyncIAdviseSink): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Finish_OnRename(self)
-proc Begin_OnSave*(self: ptr AsyncIAdviseSink): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Begin_OnSave(self)
-proc Finish_OnSave*(self: ptr AsyncIAdviseSink): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Finish_OnSave(self)
-proc Begin_OnClose*(self: ptr AsyncIAdviseSink): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Begin_OnClose(self)
-proc Finish_OnClose*(self: ptr AsyncIAdviseSink): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Finish_OnClose(self)
-proc OnLinkSrcChange*(self: ptr IAdviseSink2, pmk: ptr IMoniker): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnLinkSrcChange(self, pmk)
-proc Begin_OnLinkSrcChange*(self: ptr AsyncIAdviseSink2, pmk: ptr IMoniker): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Begin_OnLinkSrcChange(self, pmk)
-proc Finish_OnLinkSrcChange*(self: ptr AsyncIAdviseSink2): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Finish_OnLinkSrcChange(self)
-proc GetData*(self: ptr IDataObject, pformatetcIn: ptr FORMATETC, pmedium: ptr STGMEDIUM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetData(self, pformatetcIn, pmedium)
-proc GetDataHere*(self: ptr IDataObject, pformatetc: ptr FORMATETC, pmedium: ptr STGMEDIUM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDataHere(self, pformatetc, pmedium)
-proc QueryGetData*(self: ptr IDataObject, pformatetc: ptr FORMATETC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryGetData(self, pformatetc)
-proc GetCanonicalFormatEtc*(self: ptr IDataObject, pformatectIn: ptr FORMATETC, pformatetcOut: ptr FORMATETC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCanonicalFormatEtc(self, pformatectIn, pformatetcOut)
-proc SetData*(self: ptr IDataObject, pformatetc: ptr FORMATETC, pmedium: ptr STGMEDIUM, fRelease: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetData(self, pformatetc, pmedium, fRelease)
-proc EnumFormatEtc*(self: ptr IDataObject, dwDirection: DWORD, ppenumFormatEtc: ptr ptr IEnumFORMATETC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumFormatEtc(self, dwDirection, ppenumFormatEtc)
-proc DAdvise*(self: ptr IDataObject, pformatetc: ptr FORMATETC, advf: DWORD, pAdvSink: ptr IAdviseSink, pdwConnection: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DAdvise(self, pformatetc, advf, pAdvSink, pdwConnection)
-proc DUnadvise*(self: ptr IDataObject, dwConnection: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DUnadvise(self, dwConnection)
-proc EnumDAdvise*(self: ptr IDataObject, ppenumAdvise: ptr ptr IEnumSTATDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumDAdvise(self, ppenumAdvise)
-proc Advise*(self: ptr IDataAdviseHolder, pDataObject: ptr IDataObject, pFetc: ptr FORMATETC, advf: DWORD, pAdvise: ptr IAdviseSink, pdwConnection: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, pDataObject, pFetc, advf, pAdvise, pdwConnection)
-proc Unadvise*(self: ptr IDataAdviseHolder, dwConnection: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwConnection)
-proc EnumAdvise*(self: ptr IDataAdviseHolder, ppenumAdvise: ptr ptr IEnumSTATDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumAdvise(self, ppenumAdvise)
-proc SendOnDataChange*(self: ptr IDataAdviseHolder, pDataObject: ptr IDataObject, dwReserved: DWORD, advf: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SendOnDataChange(self, pDataObject, dwReserved, advf)
-proc HandleInComingCall*(self: ptr IMessageFilter, dwCallType: DWORD, htaskCaller: HTASK, dwTickCount: DWORD, lpInterfaceInfo: LPINTERFACEINFO): DWORD {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleInComingCall(self, dwCallType, htaskCaller, dwTickCount, lpInterfaceInfo)
-proc RetryRejectedCall*(self: ptr IMessageFilter, htaskCallee: HTASK, dwTickCount: DWORD, dwRejectType: DWORD): DWORD {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RetryRejectedCall(self, htaskCallee, dwTickCount, dwRejectType)
-proc MessagePending*(self: ptr IMessageFilter, htaskCallee: HTASK, dwTickCount: DWORD, dwPendingType: DWORD): DWORD {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MessagePending(self, htaskCallee, dwTickCount, dwPendingType)
-proc GetClassObject*(self: ptr IClassActivator, rclsid: REFCLSID, dwClassContext: DWORD, locale: LCID, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClassObject(self, rclsid, dwClassContext, locale, riid, ppv)
-proc FillAppend*(self: ptr IFillLockBytes, pv: pointer, cb: ULONG, pcbWritten: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FillAppend(self, pv, cb, pcbWritten)
-proc FillAt*(self: ptr IFillLockBytes, ulOffset: ULARGE_INTEGER, pv: pointer, cb: ULONG, pcbWritten: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FillAt(self, ulOffset, pv, cb, pcbWritten)
-proc SetFillSize*(self: ptr IFillLockBytes, ulSize: ULARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFillSize(self, ulSize)
-proc Terminate*(self: ptr IFillLockBytes, bCanceled: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Terminate(self, bCanceled)
-proc OnProgress*(self: ptr IProgressNotify, dwProgressCurrent: DWORD, dwProgressMaximum: DWORD, fAccurate: WINBOOL, fOwner: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnProgress(self, dwProgressCurrent, dwProgressMaximum, fAccurate, fOwner)
-proc LayoutScript*(self: ptr ILayoutStorage, pStorageLayout: ptr StorageLayout, nEntries: DWORD, glfInterleavedFlag: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LayoutScript(self, pStorageLayout, nEntries, glfInterleavedFlag)
-proc BeginMonitor*(self: ptr ILayoutStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeginMonitor(self)
-proc EndMonitor*(self: ptr ILayoutStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EndMonitor(self)
-proc ReLayoutDocfile*(self: ptr ILayoutStorage, pwcsNewDfName: ptr OLECHAR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReLayoutDocfile(self, pwcsNewDfName)
-proc ReLayoutDocfileOnILockBytes*(self: ptr ILayoutStorage, pILockBytes: ptr ILockBytes): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReLayoutDocfileOnILockBytes(self, pILockBytes)
-proc Lock*(self: ptr IBlockingLock, dwTimeout: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Lock(self, dwTimeout)
-proc Unlock*(self: ptr IBlockingLock): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unlock(self)
-proc SuppressChanges*(self: ptr ITimeAndNoticeControl, res1: DWORD, res2: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SuppressChanges(self, res1, res2)
-proc CreateStorageEx*(self: ptr IOplockStorage, pwcsName: LPCWSTR, grfMode: DWORD, stgfmt: DWORD, grfAttrs: DWORD, riid: REFIID, ppstgOpen: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateStorageEx(self, pwcsName, grfMode, stgfmt, grfAttrs, riid, ppstgOpen)
-proc OpenStorageEx*(self: ptr IOplockStorage, pwcsName: LPCWSTR, grfMode: DWORD, stgfmt: DWORD, grfAttrs: DWORD, riid: REFIID, ppstgOpen: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OpenStorageEx(self, pwcsName, grfMode, stgfmt, grfAttrs, riid, ppstgOpen)
-proc WaitForWriteAccess*(self: ptr IDirectWriterLock, dwTimeout: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WaitForWriteAccess(self, dwTimeout)
-proc ReleaseWriteAccess*(self: ptr IDirectWriterLock): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseWriteAccess(self)
-proc HaveWriteAccess*(self: ptr IDirectWriterLock): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HaveWriteAccess(self)
-proc AsyncGetClassBits*(self: ptr IUrlMon, rclsid: REFCLSID, pszTYPE: LPCWSTR, pszExt: LPCWSTR, dwFileVersionMS: DWORD, dwFileVersionLS: DWORD, pszCodeBase: LPCWSTR, pbc: ptr IBindCtx, dwClassContext: DWORD, riid: REFIID, flags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AsyncGetClassBits(self, rclsid, pszTYPE, pszExt, dwFileVersionMS, dwFileVersionLS, pszCodeBase, pbc, dwClassContext, riid, flags)
-proc AllowForegroundTransfer*(self: ptr IForegroundTransfer, lpvReserved: pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AllowForegroundTransfer(self, lpvReserved)
-proc ExtractThumbnail*(self: ptr IThumbnailExtractor, pStg: ptr IStorage, ulLength: ULONG, ulHeight: ULONG, pulOutputLength: ptr ULONG, pulOutputHeight: ptr ULONG, phOutputBitmap: ptr HBITMAP): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExtractThumbnail(self, pStg, ulLength, ulHeight, pulOutputLength, pulOutputHeight, phOutputBitmap)
-proc OnFileUpdated*(self: ptr IThumbnailExtractor, pStg: ptr IStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnFileUpdated(self, pStg)
-proc Dummy*(self: ptr IDummyHICONIncluder, h1: HICON, h2: HDC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Dummy(self, h1, h2)
-proc AddRefOnProcess*(self: ptr IProcessLock): ULONG {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddRefOnProcess(self)
-proc ReleaseRefOnProcess*(self: ptr IProcessLock): ULONG {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseRefOnProcess(self)
-proc Init*(self: ptr ISurrogateService, rguidProcessID: REFGUID, pProcessLock: ptr IProcessLock, pfApplicationAware: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Init(self, rguidProcessID, pProcessLock, pfApplicationAware)
-proc ApplicationLaunch*(self: ptr ISurrogateService, rguidApplID: REFGUID, appType: ApplicationType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ApplicationLaunch(self, rguidApplID, appType)
-proc ApplicationFree*(self: ptr ISurrogateService, rguidApplID: REFGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ApplicationFree(self, rguidApplID)
-proc CatalogRefresh*(self: ptr ISurrogateService, ulReserved: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CatalogRefresh(self, ulReserved)
-proc ProcessShutdown*(self: ptr ISurrogateService, shutdownType: ShutdownType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ProcessShutdown(self, shutdownType)
-proc PreInitialize*(self: ptr IInitializeSpy, dwCoInit: DWORD, dwCurThreadAptRefs: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreInitialize(self, dwCoInit, dwCurThreadAptRefs)
-proc PostInitialize*(self: ptr IInitializeSpy, hrCoInit: HRESULT, dwCoInit: DWORD, dwNewThreadAptRefs: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostInitialize(self, hrCoInit, dwCoInit, dwNewThreadAptRefs)
-proc PreUninitialize*(self: ptr IInitializeSpy, dwCurThreadAptRefs: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreUninitialize(self, dwCurThreadAptRefs)
-proc PostUninitialize*(self: ptr IInitializeSpy, dwNewThreadAptRefs: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostUninitialize(self, dwNewThreadAptRefs)
-proc OnUninitialize*(self: ptr IApartmentShutdown, ui64ApartmentIdentifier: UINT64): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnUninitialize(self, ui64ApartmentIdentifier)
-proc SetGuid*(self: ptr ICreateTypeInfo, guid: REFGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetGuid(self, guid)
-proc SetTypeFlags*(self: ptr ICreateTypeInfo, uTypeFlags: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTypeFlags(self, uTypeFlags)
-proc SetDocString*(self: ptr ICreateTypeInfo, pStrDoc: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDocString(self, pStrDoc)
-proc SetHelpContext*(self: ptr ICreateTypeInfo, dwHelpContext: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHelpContext(self, dwHelpContext)
-proc SetVersion*(self: ptr ICreateTypeInfo, wMajorVerNum: WORD, wMinorVerNum: WORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetVersion(self, wMajorVerNum, wMinorVerNum)
-proc AddRefTypeInfo*(self: ptr ICreateTypeInfo, pTInfo: ptr ITypeInfo, phRefType: ptr HREFTYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddRefTypeInfo(self, pTInfo, phRefType)
-proc AddFuncDesc*(self: ptr ICreateTypeInfo, index: UINT, pFuncDesc: ptr FUNCDESC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddFuncDesc(self, index, pFuncDesc)
-proc AddImplType*(self: ptr ICreateTypeInfo, index: UINT, hRefType: HREFTYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddImplType(self, index, hRefType)
-proc SetImplTypeFlags*(self: ptr ICreateTypeInfo, index: UINT, implTypeFlags: INT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetImplTypeFlags(self, index, implTypeFlags)
-proc SetAlignment*(self: ptr ICreateTypeInfo, cbAlignment: WORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAlignment(self, cbAlignment)
-proc SetSchema*(self: ptr ICreateTypeInfo, pStrSchema: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSchema(self, pStrSchema)
-proc AddVarDesc*(self: ptr ICreateTypeInfo, index: UINT, pVarDesc: ptr VARDESC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddVarDesc(self, index, pVarDesc)
-proc SetFuncAndParamNames*(self: ptr ICreateTypeInfo, index: UINT, rgszNames: ptr LPOLESTR, cNames: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFuncAndParamNames(self, index, rgszNames, cNames)
-proc SetVarName*(self: ptr ICreateTypeInfo, index: UINT, szName: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetVarName(self, index, szName)
-proc SetTypeDescAlias*(self: ptr ICreateTypeInfo, pTDescAlias: ptr TYPEDESC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTypeDescAlias(self, pTDescAlias)
-proc DefineFuncAsDllEntry*(self: ptr ICreateTypeInfo, index: UINT, szDllName: LPOLESTR, szProcName: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DefineFuncAsDllEntry(self, index, szDllName, szProcName)
-proc SetFuncDocString*(self: ptr ICreateTypeInfo, index: UINT, szDocString: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFuncDocString(self, index, szDocString)
-proc SetVarDocString*(self: ptr ICreateTypeInfo, index: UINT, szDocString: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetVarDocString(self, index, szDocString)
-proc SetFuncHelpContext*(self: ptr ICreateTypeInfo, index: UINT, dwHelpContext: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFuncHelpContext(self, index, dwHelpContext)
-proc SetVarHelpContext*(self: ptr ICreateTypeInfo, index: UINT, dwHelpContext: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetVarHelpContext(self, index, dwHelpContext)
-proc SetMops*(self: ptr ICreateTypeInfo, index: UINT, bstrMops: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMops(self, index, bstrMops)
-proc SetTypeIdldesc*(self: ptr ICreateTypeInfo, pIdlDesc: ptr IDLDESC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTypeIdldesc(self, pIdlDesc)
-proc LayOut*(self: ptr ICreateTypeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LayOut(self)
-proc DeleteFuncDesc*(self: ptr ICreateTypeInfo2, index: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteFuncDesc(self, index)
-proc DeleteFuncDescByMemId*(self: ptr ICreateTypeInfo2, memid: MEMBERID, invKind: INVOKEKIND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteFuncDescByMemId(self, memid, invKind)
-proc DeleteVarDesc*(self: ptr ICreateTypeInfo2, index: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteVarDesc(self, index)
-proc DeleteVarDescByMemId*(self: ptr ICreateTypeInfo2, memid: MEMBERID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteVarDescByMemId(self, memid)
-proc DeleteImplType*(self: ptr ICreateTypeInfo2, index: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteImplType(self, index)
-proc SetCustData*(self: ptr ICreateTypeInfo2, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCustData(self, guid, pVarVal)
-proc SetFuncCustData*(self: ptr ICreateTypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFuncCustData(self, index, guid, pVarVal)
-proc SetParamCustData*(self: ptr ICreateTypeInfo2, indexFunc: UINT, indexParam: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetParamCustData(self, indexFunc, indexParam, guid, pVarVal)
-proc SetVarCustData*(self: ptr ICreateTypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetVarCustData(self, index, guid, pVarVal)
-proc SetImplTypeCustData*(self: ptr ICreateTypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetImplTypeCustData(self, index, guid, pVarVal)
-proc SetHelpStringContext*(self: ptr ICreateTypeInfo2, dwHelpStringContext: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHelpStringContext(self, dwHelpStringContext)
-proc SetFuncHelpStringContext*(self: ptr ICreateTypeInfo2, index: UINT, dwHelpStringContext: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFuncHelpStringContext(self, index, dwHelpStringContext)
-proc SetVarHelpStringContext*(self: ptr ICreateTypeInfo2, index: UINT, dwHelpStringContext: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetVarHelpStringContext(self, index, dwHelpStringContext)
-proc Invalidate*(self: ptr ICreateTypeInfo2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invalidate(self)
-proc SetName*(self: ptr ICreateTypeInfo2, szName: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetName(self, szName)
-proc CreateTypeInfo*(self: ptr ICreateTypeLib, szName: LPOLESTR, tkind: TYPEKIND, ppCTInfo: ptr ptr ICreateTypeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateTypeInfo(self, szName, tkind, ppCTInfo)
-proc SetName*(self: ptr ICreateTypeLib, szName: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetName(self, szName)
-proc SetVersion*(self: ptr ICreateTypeLib, wMajorVerNum: WORD, wMinorVerNum: WORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetVersion(self, wMajorVerNum, wMinorVerNum)
-proc SetGuid*(self: ptr ICreateTypeLib, guid: REFGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetGuid(self, guid)
-proc SetDocString*(self: ptr ICreateTypeLib, szDoc: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDocString(self, szDoc)
-proc SetHelpFileName*(self: ptr ICreateTypeLib, szHelpFileName: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHelpFileName(self, szHelpFileName)
-proc SetHelpContext*(self: ptr ICreateTypeLib, dwHelpContext: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHelpContext(self, dwHelpContext)
-proc SetLcid*(self: ptr ICreateTypeLib, lcid: LCID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetLcid(self, lcid)
-proc SetLibFlags*(self: ptr ICreateTypeLib, uLibFlags: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetLibFlags(self, uLibFlags)
-proc SaveAllChanges*(self: ptr ICreateTypeLib): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SaveAllChanges(self)
-proc DeleteTypeInfo*(self: ptr ICreateTypeLib2, szName: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteTypeInfo(self, szName)
-proc SetCustData*(self: ptr ICreateTypeLib2, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCustData(self, guid, pVarVal)
-proc SetHelpStringContext*(self: ptr ICreateTypeLib2, dwHelpStringContext: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHelpStringContext(self, dwHelpStringContext)
-proc SetHelpStringDll*(self: ptr ICreateTypeLib2, szFileName: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHelpStringDll(self, szFileName)
-proc GetTypeInfoCount*(self: ptr IDispatch, pctinfo: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfoCount(self, pctinfo)
-proc GetTypeInfo*(self: ptr IDispatch, iTInfo: UINT, lcid: LCID, ppTInfo: ptr ptr ITypeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfo(self, iTInfo, lcid, ppTInfo)
-proc GetIDsOfNames*(self: ptr IDispatch, riid: REFIID, rgszNames: ptr LPOLESTR, cNames: UINT, lcid: LCID, rgDispId: ptr DISPID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIDsOfNames(self, riid, rgszNames, cNames, lcid, rgDispId)
-proc Invoke*(self: ptr IDispatch, dispIdMember: DISPID, riid: REFIID, lcid: LCID, wFlags: WORD, pDispParams: ptr DISPPARAMS, pVarResult: ptr VARIANT, pExcepInfo: ptr EXCEPINFO, puArgErr: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invoke(self, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)
-proc Next*(self: ptr IEnumVARIANT, celt: ULONG, rgVar: ptr VARIANT, pCeltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgVar, pCeltFetched)
-proc Skip*(self: ptr IEnumVARIANT, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumVARIANT, ppEnum: ptr ptr IEnumVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppEnum)
-proc Bind*(self: ptr ITypeComp, szName: LPOLESTR, lHashVal: ULONG, wFlags: WORD, ppTInfo: ptr ptr ITypeInfo, pDescKind: ptr DESCKIND, pBindPtr: ptr BINDPTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Bind(self, szName, lHashVal, wFlags, ppTInfo, pDescKind, pBindPtr)
-proc BindType*(self: ptr ITypeComp, szName: LPOLESTR, lHashVal: ULONG, ppTInfo: ptr ptr ITypeInfo, ppTComp: ptr ptr ITypeComp): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindType(self, szName, lHashVal, ppTInfo, ppTComp)
-proc GetTypeAttr*(self: ptr ITypeInfo, ppTypeAttr: ptr ptr TYPEATTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeAttr(self, ppTypeAttr)
-proc GetTypeComp*(self: ptr ITypeInfo, ppTComp: ptr ptr ITypeComp): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeComp(self, ppTComp)
-proc GetFuncDesc*(self: ptr ITypeInfo, index: UINT, ppFuncDesc: ptr ptr FUNCDESC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFuncDesc(self, index, ppFuncDesc)
-proc GetVarDesc*(self: ptr ITypeInfo, index: UINT, ppVarDesc: ptr ptr VARDESC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetVarDesc(self, index, ppVarDesc)
-proc GetNames*(self: ptr ITypeInfo, memid: MEMBERID, rgBstrNames: ptr BSTR, cMaxNames: UINT, pcNames: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNames(self, memid, rgBstrNames, cMaxNames, pcNames)
-proc GetRefTypeOfImplType*(self: ptr ITypeInfo, index: UINT, pRefType: ptr HREFTYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRefTypeOfImplType(self, index, pRefType)
-proc GetImplTypeFlags*(self: ptr ITypeInfo, index: UINT, pImplTypeFlags: ptr INT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetImplTypeFlags(self, index, pImplTypeFlags)
-proc GetIDsOfNames*(self: ptr ITypeInfo, rgszNames: ptr LPOLESTR, cNames: UINT, pMemId: ptr MEMBERID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIDsOfNames(self, rgszNames, cNames, pMemId)
-proc Invoke*(self: ptr ITypeInfo, pvInstance: PVOID, memid: MEMBERID, wFlags: WORD, pDispParams: ptr DISPPARAMS, pVarResult: ptr VARIANT, pExcepInfo: ptr EXCEPINFO, puArgErr: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invoke(self, pvInstance, memid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)
-proc GetDocumentation*(self: ptr ITypeInfo, memid: MEMBERID, pBstrName: ptr BSTR, pBstrDocString: ptr BSTR, pdwHelpContext: ptr DWORD, pBstrHelpFile: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDocumentation(self, memid, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile)
-proc GetDllEntry*(self: ptr ITypeInfo, memid: MEMBERID, invKind: INVOKEKIND, pBstrDllName: ptr BSTR, pBstrName: ptr BSTR, pwOrdinal: ptr WORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDllEntry(self, memid, invKind, pBstrDllName, pBstrName, pwOrdinal)
-proc GetRefTypeInfo*(self: ptr ITypeInfo, hRefType: HREFTYPE, ppTInfo: ptr ptr ITypeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRefTypeInfo(self, hRefType, ppTInfo)
-proc AddressOfMember*(self: ptr ITypeInfo, memid: MEMBERID, invKind: INVOKEKIND, ppv: ptr PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddressOfMember(self, memid, invKind, ppv)
-proc CreateInstance*(self: ptr ITypeInfo, pUnkOuter: ptr IUnknown, riid: REFIID, ppvObj: ptr PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstance(self, pUnkOuter, riid, ppvObj)
-proc GetMops*(self: ptr ITypeInfo, memid: MEMBERID, pBstrMops: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMops(self, memid, pBstrMops)
-proc GetContainingTypeLib*(self: ptr ITypeInfo, ppTLib: ptr ptr ITypeLib, pIndex: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetContainingTypeLib(self, ppTLib, pIndex)
-proc ReleaseTypeAttr*(self: ptr ITypeInfo, pTypeAttr: ptr TYPEATTR): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseTypeAttr(self, pTypeAttr)
-proc ReleaseFuncDesc*(self: ptr ITypeInfo, pFuncDesc: ptr FUNCDESC): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseFuncDesc(self, pFuncDesc)
-proc ReleaseVarDesc*(self: ptr ITypeInfo, pVarDesc: ptr VARDESC): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseVarDesc(self, pVarDesc)
-proc GetTypeKind*(self: ptr ITypeInfo2, pTypeKind: ptr TYPEKIND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeKind(self, pTypeKind)
-proc GetTypeFlags*(self: ptr ITypeInfo2, pTypeFlags: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeFlags(self, pTypeFlags)
-proc GetFuncIndexOfMemId*(self: ptr ITypeInfo2, memid: MEMBERID, invKind: INVOKEKIND, pFuncIndex: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFuncIndexOfMemId(self, memid, invKind, pFuncIndex)
-proc GetVarIndexOfMemId*(self: ptr ITypeInfo2, memid: MEMBERID, pVarIndex: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetVarIndexOfMemId(self, memid, pVarIndex)
-proc GetCustData*(self: ptr ITypeInfo2, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCustData(self, guid, pVarVal)
-proc GetFuncCustData*(self: ptr ITypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFuncCustData(self, index, guid, pVarVal)
-proc GetParamCustData*(self: ptr ITypeInfo2, indexFunc: UINT, indexParam: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetParamCustData(self, indexFunc, indexParam, guid, pVarVal)
-proc GetVarCustData*(self: ptr ITypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetVarCustData(self, index, guid, pVarVal)
-proc GetImplTypeCustData*(self: ptr ITypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetImplTypeCustData(self, index, guid, pVarVal)
-proc GetDocumentation2*(self: ptr ITypeInfo2, memid: MEMBERID, lcid: LCID, pbstrHelpString: ptr BSTR, pdwHelpStringContext: ptr DWORD, pbstrHelpStringDll: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDocumentation2(self, memid, lcid, pbstrHelpString, pdwHelpStringContext, pbstrHelpStringDll)
-proc GetAllCustData*(self: ptr ITypeInfo2, pCustData: ptr CUSTDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAllCustData(self, pCustData)
-proc GetAllFuncCustData*(self: ptr ITypeInfo2, index: UINT, pCustData: ptr CUSTDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAllFuncCustData(self, index, pCustData)
-proc GetAllParamCustData*(self: ptr ITypeInfo2, indexFunc: UINT, indexParam: UINT, pCustData: ptr CUSTDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAllParamCustData(self, indexFunc, indexParam, pCustData)
-proc GetAllVarCustData*(self: ptr ITypeInfo2, index: UINT, pCustData: ptr CUSTDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAllVarCustData(self, index, pCustData)
-proc GetAllImplTypeCustData*(self: ptr ITypeInfo2, index: UINT, pCustData: ptr CUSTDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAllImplTypeCustData(self, index, pCustData)
-proc GetTypeInfoCount*(self: ptr ITypeLib): UINT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfoCount(self)
-proc GetTypeInfo*(self: ptr ITypeLib, index: UINT, ppTInfo: ptr ptr ITypeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfo(self, index, ppTInfo)
-proc GetTypeInfoType*(self: ptr ITypeLib, index: UINT, pTKind: ptr TYPEKIND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfoType(self, index, pTKind)
-proc GetTypeInfoOfGuid*(self: ptr ITypeLib, guid: REFGUID, ppTinfo: ptr ptr ITypeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfoOfGuid(self, guid, ppTinfo)
-proc GetLibAttr*(self: ptr ITypeLib, ppTLibAttr: ptr ptr TLIBATTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLibAttr(self, ppTLibAttr)
-proc GetTypeComp*(self: ptr ITypeLib, ppTComp: ptr ptr ITypeComp): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeComp(self, ppTComp)
-proc GetDocumentation*(self: ptr ITypeLib, index: INT, pBstrName: ptr BSTR, pBstrDocString: ptr BSTR, pdwHelpContext: ptr DWORD, pBstrHelpFile: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDocumentation(self, index, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile)
-proc IsName*(self: ptr ITypeLib, szNameBuf: LPOLESTR, lHashVal: ULONG, pfName: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsName(self, szNameBuf, lHashVal, pfName)
-proc FindName*(self: ptr ITypeLib, szNameBuf: LPOLESTR, lHashVal: ULONG, ppTInfo: ptr ptr ITypeInfo, rgMemId: ptr MEMBERID, pcFound: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindName(self, szNameBuf, lHashVal, ppTInfo, rgMemId, pcFound)
-proc ReleaseTLibAttr*(self: ptr ITypeLib, pTLibAttr: ptr TLIBATTR): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseTLibAttr(self, pTLibAttr)
-proc GetCustData*(self: ptr ITypeLib2, guid: REFGUID, pVarVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCustData(self, guid, pVarVal)
-proc GetLibStatistics*(self: ptr ITypeLib2, pcUniqueNames: ptr ULONG, pcchUniqueNames: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLibStatistics(self, pcUniqueNames, pcchUniqueNames)
-proc GetDocumentation2*(self: ptr ITypeLib2, index: INT, lcid: LCID, pbstrHelpString: ptr BSTR, pdwHelpStringContext: ptr DWORD, pbstrHelpStringDll: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDocumentation2(self, index, lcid, pbstrHelpString, pdwHelpStringContext, pbstrHelpStringDll)
-proc GetAllCustData*(self: ptr ITypeLib2, pCustData: ptr CUSTDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAllCustData(self, pCustData)
-proc RequestTypeChange*(self: ptr ITypeChangeEvents, changeKind: CHANGEKIND, pTInfoBefore: ptr ITypeInfo, pStrName: LPOLESTR, pfCancel: ptr INT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestTypeChange(self, changeKind, pTInfoBefore, pStrName, pfCancel)
-proc AfterTypeChange*(self: ptr ITypeChangeEvents, changeKind: CHANGEKIND, pTInfoAfter: ptr ITypeInfo, pStrName: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AfterTypeChange(self, changeKind, pTInfoAfter, pStrName)
-proc GetGUID*(self: ptr IErrorInfo, pGUID: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetGUID(self, pGUID)
-proc GetSource*(self: ptr IErrorInfo, pBstrSource: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSource(self, pBstrSource)
-proc GetDescription*(self: ptr IErrorInfo, pBstrDescription: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDescription(self, pBstrDescription)
-proc GetHelpFile*(self: ptr IErrorInfo, pBstrHelpFile: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHelpFile(self, pBstrHelpFile)
-proc GetHelpContext*(self: ptr IErrorInfo, pdwHelpContext: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHelpContext(self, pdwHelpContext)
-proc SetGUID*(self: ptr ICreateErrorInfo, rguid: REFGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetGUID(self, rguid)
-proc SetSource*(self: ptr ICreateErrorInfo, szSource: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSource(self, szSource)
-proc SetDescription*(self: ptr ICreateErrorInfo, szDescription: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDescription(self, szDescription)
-proc SetHelpFile*(self: ptr ICreateErrorInfo, szHelpFile: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHelpFile(self, szHelpFile)
-proc SetHelpContext*(self: ptr ICreateErrorInfo, dwHelpContext: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHelpContext(self, dwHelpContext)
-proc InterfaceSupportsErrorInfo*(self: ptr ISupportErrorInfo, riid: REFIID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InterfaceSupportsErrorInfo(self, riid)
-proc CreateFromTypeInfo*(self: ptr ITypeFactory, pTypeInfo: ptr ITypeInfo, riid: REFIID, ppv: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateFromTypeInfo(self, pTypeInfo, riid, ppv)
-proc mSize*(self: ptr ITypeMarshal, pvType: PVOID, dwDestContext: DWORD, pvDestContext: PVOID, pSize: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Size(self, pvType, dwDestContext, pvDestContext, pSize)
-proc Marshal*(self: ptr ITypeMarshal, pvType: PVOID, dwDestContext: DWORD, pvDestContext: PVOID, cbBufferLength: ULONG, pBuffer: ptr BYTE, pcbWritten: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Marshal(self, pvType, dwDestContext, pvDestContext, cbBufferLength, pBuffer, pcbWritten)
-proc Unmarshal*(self: ptr ITypeMarshal, pvType: PVOID, dwFlags: DWORD, cbBufferLength: ULONG, pBuffer: ptr BYTE, pcbRead: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unmarshal(self, pvType, dwFlags, cbBufferLength, pBuffer, pcbRead)
-proc Free*(self: ptr ITypeMarshal, pvType: PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Free(self, pvType)
-proc RecordInit*(self: ptr IRecordInfo, pvNew: PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RecordInit(self, pvNew)
-proc RecordClear*(self: ptr IRecordInfo, pvExisting: PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RecordClear(self, pvExisting)
-proc RecordCopy*(self: ptr IRecordInfo, pvExisting: PVOID, pvNew: PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RecordCopy(self, pvExisting, pvNew)
-proc GetGuid*(self: ptr IRecordInfo, pguid: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetGuid(self, pguid)
-proc GetName*(self: ptr IRecordInfo, pbstrName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetName(self, pbstrName)
-proc GetSize*(self: ptr IRecordInfo, pcbSize: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSize(self, pcbSize)
-proc GetTypeInfo*(self: ptr IRecordInfo, ppTypeInfo: ptr ptr ITypeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfo(self, ppTypeInfo)
-proc GetField*(self: ptr IRecordInfo, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetField(self, pvData, szFieldName, pvarField)
-proc GetFieldNoCopy*(self: ptr IRecordInfo, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT, ppvDataCArray: ptr PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFieldNoCopy(self, pvData, szFieldName, pvarField, ppvDataCArray)
-proc PutField*(self: ptr IRecordInfo, wFlags: ULONG, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PutField(self, wFlags, pvData, szFieldName, pvarField)
-proc PutFieldNoCopy*(self: ptr IRecordInfo, wFlags: ULONG, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PutFieldNoCopy(self, wFlags, pvData, szFieldName, pvarField)
-proc GetFieldNames*(self: ptr IRecordInfo, pcNames: ptr ULONG, rgBstrNames: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFieldNames(self, pcNames, rgBstrNames)
-proc IsMatchingType*(self: ptr IRecordInfo, pRecordInfo: ptr IRecordInfo): WINBOOL {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsMatchingType(self, pRecordInfo)
-proc RecordCreate*(self: ptr IRecordInfo): PVOID {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RecordCreate(self)
-proc RecordCreateCopy*(self: ptr IRecordInfo, pvSource: PVOID, ppvDest: ptr PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RecordCreateCopy(self, pvSource, ppvDest)
-proc RecordDestroy*(self: ptr IRecordInfo, pvRecord: PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RecordDestroy(self, pvRecord)
-proc AddError*(self: ptr IErrorLog, pszPropName: LPCOLESTR, pExcepInfo: ptr EXCEPINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddError(self, pszPropName, pExcepInfo)
-proc Read*(self: ptr IPropertyBag, pszPropName: LPCOLESTR, pVar: ptr VARIANT, pErrorLog: ptr IErrorLog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Read(self, pszPropName, pVar, pErrorLog)
-proc Write*(self: ptr IPropertyBag, pszPropName: LPCOLESTR, pVar: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Write(self, pszPropName, pVar)
-proc Advise*(self: ptr IOleAdviseHolder, pAdvise: ptr IAdviseSink, pdwConnection: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, pAdvise, pdwConnection)
-proc Unadvise*(self: ptr IOleAdviseHolder, dwConnection: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwConnection)
-proc EnumAdvise*(self: ptr IOleAdviseHolder, ppenumAdvise: ptr ptr IEnumSTATDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumAdvise(self, ppenumAdvise)
-proc SendOnRename*(self: ptr IOleAdviseHolder, pmk: ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SendOnRename(self, pmk)
-proc SendOnSave*(self: ptr IOleAdviseHolder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SendOnSave(self)
-proc SendOnClose*(self: ptr IOleAdviseHolder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SendOnClose(self)
-proc Cache*(self: ptr IOleCache, pformatetc: ptr FORMATETC, advf: DWORD, pdwConnection: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Cache(self, pformatetc, advf, pdwConnection)
-proc Uncache*(self: ptr IOleCache, dwConnection: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Uncache(self, dwConnection)
-proc EnumCache*(self: ptr IOleCache, ppenumSTATDATA: ptr ptr IEnumSTATDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumCache(self, ppenumSTATDATA)
-proc InitCache*(self: ptr IOleCache, pDataObject: ptr IDataObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitCache(self, pDataObject)
-proc SetData*(self: ptr IOleCache, pformatetc: ptr FORMATETC, pmedium: ptr STGMEDIUM, fRelease: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetData(self, pformatetc, pmedium, fRelease)
-proc UpdateCache*(self: ptr IOleCache2, pDataObject: LPDATAOBJECT, grfUpdf: DWORD, pReserved: LPVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateCache(self, pDataObject, grfUpdf, pReserved)
-proc DiscardCache*(self: ptr IOleCache2, dwDiscardOptions: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DiscardCache(self, dwDiscardOptions)
-proc OnRun*(self: ptr IOleCacheControl, pDataObject: LPDATAOBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnRun(self, pDataObject)
-proc OnStop*(self: ptr IOleCacheControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnStop(self)
-proc ParseDisplayName*(self: ptr IParseDisplayName, pbc: ptr IBindCtx, pszDisplayName: LPOLESTR, pchEaten: ptr ULONG, ppmkOut: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseDisplayName(self, pbc, pszDisplayName, pchEaten, ppmkOut)
-proc EnumObjects*(self: ptr IOleContainer, grfFlags: DWORD, ppenum: ptr ptr IEnumUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumObjects(self, grfFlags, ppenum)
-proc LockContainer*(self: ptr IOleContainer, fLock: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LockContainer(self, fLock)
-proc SaveObject*(self: ptr IOleClientSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SaveObject(self)
-proc GetMoniker*(self: ptr IOleClientSite, dwAssign: DWORD, dwWhichMoniker: DWORD, ppmk: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMoniker(self, dwAssign, dwWhichMoniker, ppmk)
-proc GetContainer*(self: ptr IOleClientSite, ppContainer: ptr ptr IOleContainer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetContainer(self, ppContainer)
-proc ShowObject*(self: ptr IOleClientSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowObject(self)
-proc OnShowWindow*(self: ptr IOleClientSite, fShow: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnShowWindow(self, fShow)
-proc RequestNewObjectLayout*(self: ptr IOleClientSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestNewObjectLayout(self)
-proc SetClientSite*(self: ptr IOleObject, pClientSite: ptr IOleClientSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetClientSite(self, pClientSite)
-proc GetClientSite*(self: ptr IOleObject, ppClientSite: ptr ptr IOleClientSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClientSite(self, ppClientSite)
-proc SetHostNames*(self: ptr IOleObject, szContainerApp: LPCOLESTR, szContainerObj: LPCOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHostNames(self, szContainerApp, szContainerObj)
-proc Close*(self: ptr IOleObject, dwSaveOption: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Close(self, dwSaveOption)
-proc SetMoniker*(self: ptr IOleObject, dwWhichMoniker: DWORD, pmk: ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMoniker(self, dwWhichMoniker, pmk)
-proc GetMoniker*(self: ptr IOleObject, dwAssign: DWORD, dwWhichMoniker: DWORD, ppmk: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMoniker(self, dwAssign, dwWhichMoniker, ppmk)
-proc InitFromData*(self: ptr IOleObject, pDataObject: ptr IDataObject, fCreation: WINBOOL, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitFromData(self, pDataObject, fCreation, dwReserved)
-proc GetClipboardData*(self: ptr IOleObject, dwReserved: DWORD, ppDataObject: ptr ptr IDataObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClipboardData(self, dwReserved, ppDataObject)
-proc DoVerb*(self: ptr IOleObject, iVerb: LONG, lpmsg: LPMSG, pActiveSite: ptr IOleClientSite, lindex: LONG, hwndParent: HWND, lprcPosRect: LPCRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoVerb(self, iVerb, lpmsg, pActiveSite, lindex, hwndParent, lprcPosRect)
-proc EnumVerbs*(self: ptr IOleObject, ppEnumOleVerb: ptr ptr IEnumOLEVERB): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumVerbs(self, ppEnumOleVerb)
-proc Update*(self: ptr IOleObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Update(self)
-proc IsUpToDate*(self: ptr IOleObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsUpToDate(self)
-proc GetUserClassID*(self: ptr IOleObject, pClsid: ptr CLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUserClassID(self, pClsid)
-proc GetUserType*(self: ptr IOleObject, dwFormOfType: DWORD, pszUserType: ptr LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUserType(self, dwFormOfType, pszUserType)
-proc SetExtent*(self: ptr IOleObject, dwDrawAspect: DWORD, psizel: ptr SIZEL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetExtent(self, dwDrawAspect, psizel)
-proc GetExtent*(self: ptr IOleObject, dwDrawAspect: DWORD, psizel: ptr SIZEL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetExtent(self, dwDrawAspect, psizel)
-proc Advise*(self: ptr IOleObject, pAdvSink: ptr IAdviseSink, pdwConnection: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, pAdvSink, pdwConnection)
-proc Unadvise*(self: ptr IOleObject, dwConnection: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwConnection)
-proc EnumAdvise*(self: ptr IOleObject, ppenumAdvise: ptr ptr IEnumSTATDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumAdvise(self, ppenumAdvise)
-proc GetMiscStatus*(self: ptr IOleObject, dwAspect: DWORD, pdwStatus: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMiscStatus(self, dwAspect, pdwStatus)
-proc SetColorScheme*(self: ptr IOleObject, pLogpal: ptr LOGPALETTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetColorScheme(self, pLogpal)
-proc GetWindow*(self: ptr IOleWindow, phwnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWindow(self, phwnd)
-proc ContextSensitiveHelp*(self: ptr IOleWindow, fEnterMode: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ContextSensitiveHelp(self, fEnterMode)
-proc SetUpdateOptions*(self: ptr IOleLink, dwUpdateOpt: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetUpdateOptions(self, dwUpdateOpt)
-proc GetUpdateOptions*(self: ptr IOleLink, pdwUpdateOpt: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUpdateOptions(self, pdwUpdateOpt)
-proc SetSourceMoniker*(self: ptr IOleLink, pmk: ptr IMoniker, rclsid: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSourceMoniker(self, pmk, rclsid)
-proc GetSourceMoniker*(self: ptr IOleLink, ppmk: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSourceMoniker(self, ppmk)
-proc SetSourceDisplayName*(self: ptr IOleLink, pszStatusText: LPCOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSourceDisplayName(self, pszStatusText)
-proc GetSourceDisplayName*(self: ptr IOleLink, ppszDisplayName: ptr LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSourceDisplayName(self, ppszDisplayName)
-proc BindToSource*(self: ptr IOleLink, bindflags: DWORD, pbc: ptr IBindCtx): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindToSource(self, bindflags, pbc)
-proc BindIfRunning*(self: ptr IOleLink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindIfRunning(self)
-proc GetBoundSource*(self: ptr IOleLink, ppunk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBoundSource(self, ppunk)
-proc UnbindSource*(self: ptr IOleLink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnbindSource(self)
-proc Update*(self: ptr IOleLink, pbc: ptr IBindCtx): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Update(self, pbc)
-proc GetObject*(self: ptr IOleItemContainer, pszItem: LPOLESTR, dwSpeedNeeded: DWORD, pbc: ptr IBindCtx, riid: REFIID, ppvObject: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObject(self, pszItem, dwSpeedNeeded, pbc, riid, ppvObject)
-proc GetObjectStorage*(self: ptr IOleItemContainer, pszItem: LPOLESTR, pbc: ptr IBindCtx, riid: REFIID, ppvStorage: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObjectStorage(self, pszItem, pbc, riid, ppvStorage)
-proc IsRunning*(self: ptr IOleItemContainer, pszItem: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsRunning(self, pszItem)
-proc GetBorder*(self: ptr IOleInPlaceUIWindow, lprectBorder: LPRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBorder(self, lprectBorder)
-proc RequestBorderSpace*(self: ptr IOleInPlaceUIWindow, pborderwidths: LPCBORDERWIDTHS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestBorderSpace(self, pborderwidths)
-proc SetBorderSpace*(self: ptr IOleInPlaceUIWindow, pborderwidths: LPCBORDERWIDTHS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBorderSpace(self, pborderwidths)
-proc SetActiveObject*(self: ptr IOleInPlaceUIWindow, pActiveObject: ptr IOleInPlaceActiveObject, pszObjName: LPCOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetActiveObject(self, pActiveObject, pszObjName)
-proc TranslateAccelerator*(self: ptr IOleInPlaceActiveObject, lpmsg: LPMSG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAccelerator(self, lpmsg)
-proc OnFrameWindowActivate*(self: ptr IOleInPlaceActiveObject, fActivate: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnFrameWindowActivate(self, fActivate)
-proc OnDocWindowActivate*(self: ptr IOleInPlaceActiveObject, fActivate: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDocWindowActivate(self, fActivate)
-proc ResizeBorder*(self: ptr IOleInPlaceActiveObject, prcBorder: LPCRECT, pUIWindow: ptr IOleInPlaceUIWindow, fFrameWindow: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResizeBorder(self, prcBorder, pUIWindow, fFrameWindow)
-proc EnableModeless*(self: ptr IOleInPlaceActiveObject, fEnable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnableModeless(self, fEnable)
-proc InsertMenus*(self: ptr IOleInPlaceFrame, hmenuShared: HMENU, lpMenuWidths: LPOLEMENUGROUPWIDTHS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InsertMenus(self, hmenuShared, lpMenuWidths)
-proc SetMenu*(self: ptr IOleInPlaceFrame, hmenuShared: HMENU, holemenu: HOLEMENU, hwndActiveObject: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMenu(self, hmenuShared, holemenu, hwndActiveObject)
-proc RemoveMenus*(self: ptr IOleInPlaceFrame, hmenuShared: HMENU): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveMenus(self, hmenuShared)
-proc SetStatusText*(self: ptr IOleInPlaceFrame, pszStatusText: LPCOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetStatusText(self, pszStatusText)
-proc EnableModeless*(self: ptr IOleInPlaceFrame, fEnable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnableModeless(self, fEnable)
-proc TranslateAccelerator*(self: ptr IOleInPlaceFrame, lpmsg: LPMSG, wID: WORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAccelerator(self, lpmsg, wID)
-proc InPlaceDeactivate*(self: ptr IOleInPlaceObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InPlaceDeactivate(self)
-proc UIDeactivate*(self: ptr IOleInPlaceObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UIDeactivate(self)
-proc SetObjectRects*(self: ptr IOleInPlaceObject, lprcPosRect: LPCRECT, lprcClipRect: LPCRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetObjectRects(self, lprcPosRect, lprcClipRect)
-proc ReactivateAndUndo*(self: ptr IOleInPlaceObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReactivateAndUndo(self)
-proc CanInPlaceActivate*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CanInPlaceActivate(self)
-proc OnInPlaceActivate*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnInPlaceActivate(self)
-proc OnUIActivate*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnUIActivate(self)
-proc GetWindowContext*(self: ptr IOleInPlaceSite, ppFrame: ptr ptr IOleInPlaceFrame, ppDoc: ptr ptr IOleInPlaceUIWindow, lprcPosRect: LPRECT, lprcClipRect: LPRECT, lpFrameInfo: LPOLEINPLACEFRAMEINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWindowContext(self, ppFrame, ppDoc, lprcPosRect, lprcClipRect, lpFrameInfo)
-proc Scroll*(self: ptr IOleInPlaceSite, scrollExtant: SIZE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Scroll(self, scrollExtant)
-proc OnUIDeactivate*(self: ptr IOleInPlaceSite, fUndoable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnUIDeactivate(self, fUndoable)
-proc OnInPlaceDeactivate*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnInPlaceDeactivate(self)
-proc DiscardUndoState*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DiscardUndoState(self)
-proc DeactivateAndUndo*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeactivateAndUndo(self)
-proc OnPosRectChange*(self: ptr IOleInPlaceSite, lprcPosRect: LPCRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnPosRectChange(self, lprcPosRect)
-proc FContinue*(self: ptr IContinue): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FContinue(self)
-proc Draw*(self: ptr IViewObject, dwDrawAspect: DWORD, lindex: LONG, pvAspect: pointer, ptd: ptr DVTARGETDEVICE, hdcTargetDev: HDC, hdcDraw: HDC, lprcBounds: LPCRECTL, lprcWBounds: LPCRECTL, pfnContinue: proc (dwContinue: ULONG_PTR): WINBOOL {.stdcall.}, dwContinue: ULONG_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Draw(self, dwDrawAspect, lindex, pvAspect, ptd, hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue, dwContinue)
-proc GetColorSet*(self: ptr IViewObject, dwDrawAspect: DWORD, lindex: LONG, pvAspect: pointer, ptd: ptr DVTARGETDEVICE, hicTargetDev: HDC, ppColorSet: ptr ptr LOGPALETTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColorSet(self, dwDrawAspect, lindex, pvAspect, ptd, hicTargetDev, ppColorSet)
-proc Freeze*(self: ptr IViewObject, dwDrawAspect: DWORD, lindex: LONG, pvAspect: pointer, pdwFreeze: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Freeze(self, dwDrawAspect, lindex, pvAspect, pdwFreeze)
-proc Unfreeze*(self: ptr IViewObject, dwFreeze: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unfreeze(self, dwFreeze)
-proc SetAdvise*(self: ptr IViewObject, aspects: DWORD, advf: DWORD, pAdvSink: ptr IAdviseSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAdvise(self, aspects, advf, pAdvSink)
-proc GetAdvise*(self: ptr IViewObject, pAspects: ptr DWORD, pAdvf: ptr DWORD, ppAdvSink: ptr ptr IAdviseSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAdvise(self, pAspects, pAdvf, ppAdvSink)
-proc GetExtent*(self: ptr IViewObject2, dwDrawAspect: DWORD, lindex: LONG, ptd: ptr DVTARGETDEVICE, lpsizel: LPSIZEL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetExtent(self, dwDrawAspect, lindex, ptd, lpsizel)
-proc QueryContinueDrag*(self: ptr IDropSource, fEscapePressed: WINBOOL, grfKeyState: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryContinueDrag(self, fEscapePressed, grfKeyState)
-proc GiveFeedback*(self: ptr IDropSource, dwEffect: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GiveFeedback(self, dwEffect)
-proc DragEnter*(self: ptr IDropTarget, pDataObj: ptr IDataObject, grfKeyState: DWORD, pt: POINTL, pdwEffect: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragEnter(self, pDataObj, grfKeyState, pt, pdwEffect)
-proc DragOver*(self: ptr IDropTarget, grfKeyState: DWORD, pt: POINTL, pdwEffect: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragOver(self, grfKeyState, pt, pdwEffect)
-proc DragLeave*(self: ptr IDropTarget): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragLeave(self)
-proc Drop*(self: ptr IDropTarget, pDataObj: ptr IDataObject, grfKeyState: DWORD, pt: POINTL, pdwEffect: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Drop(self, pDataObj, grfKeyState, pt, pdwEffect)
-proc DragEnterTarget*(self: ptr IDropSourceNotify, hwndTarget: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragEnterTarget(self, hwndTarget)
-proc DragLeaveTarget*(self: ptr IDropSourceNotify): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragLeaveTarget(self)
-proc Next*(self: ptr IEnumOLEVERB, celt: ULONG, rgelt: LPOLEVERB, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumOLEVERB, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumOLEVERB): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumOLEVERB, ppenum: ptr ptr IEnumOLEVERB): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc QueryService*(self: ptr IServiceProvider, guidService: REFGUID, riid: REFIID, ppvObject: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryService(self, guidService, riid, ppvObject)
-proc hasFeature*(self: ptr IXMLDOMImplementation, feature: BSTR, version: BSTR, hasFeature: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasFeature(self, feature, version, hasFeature)
-proc get_nodeName*(self: ptr IXMLDOMNode, name: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeName(self, name)
-proc get_nodeValue*(self: ptr IXMLDOMNode, value: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeValue(self, value)
-proc put_nodeValue*(self: ptr IXMLDOMNode, value: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_nodeValue(self, value)
-proc get_nodeType*(self: ptr IXMLDOMNode, `type`: ptr DOMNodeType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeType(self, `type`)
-proc get_parentNode*(self: ptr IXMLDOMNode, parent: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentNode(self, parent)
-proc get_childNodes*(self: ptr IXMLDOMNode, childList: ptr ptr IXMLDOMNodeList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_childNodes(self, childList)
-proc get_firstChild*(self: ptr IXMLDOMNode, firstChild: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_firstChild(self, firstChild)
-proc get_lastChild*(self: ptr IXMLDOMNode, lastChild: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lastChild(self, lastChild)
-proc get_previousSibling*(self: ptr IXMLDOMNode, previousSibling: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_previousSibling(self, previousSibling)
-proc get_nextSibling*(self: ptr IXMLDOMNode, nextSibling: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nextSibling(self, nextSibling)
-proc get_attributes*(self: ptr IXMLDOMNode, attributeMap: ptr ptr IXMLDOMNamedNodeMap): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_attributes(self, attributeMap)
-proc insertBefore*(self: ptr IXMLDOMNode, newChild: ptr IXMLDOMNode, refChild: VARIANT, outNewChild: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertBefore(self, newChild, refChild, outNewChild)
-proc replaceChild*(self: ptr IXMLDOMNode, newChild: ptr IXMLDOMNode, oldChild: ptr IXMLDOMNode, outOldChild: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceChild(self, newChild, oldChild, outOldChild)
-proc removeChild*(self: ptr IXMLDOMNode, childNode: ptr IXMLDOMNode, oldChild: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeChild(self, childNode, oldChild)
-proc appendChild*(self: ptr IXMLDOMNode, newChild: ptr IXMLDOMNode, outNewChild: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendChild(self, newChild, outNewChild)
-proc hasChildNodes*(self: ptr IXMLDOMNode, hasChild: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.hasChildNodes(self, hasChild)
-proc get_ownerDocument*(self: ptr IXMLDOMNode, DOMDocument: ptr ptr IXMLDOMDocument): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ownerDocument(self, DOMDocument)
-proc cloneNode*(self: ptr IXMLDOMNode, deep: VARIANT_BOOL, cloneRoot: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.cloneNode(self, deep, cloneRoot)
-proc get_nodeTypeString*(self: ptr IXMLDOMNode, nodeType: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeTypeString(self, nodeType)
-proc get_text*(self: ptr IXMLDOMNode, text: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_text(self, text)
-proc put_text*(self: ptr IXMLDOMNode, text: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_text(self, text)
-proc get_specified*(self: ptr IXMLDOMNode, isSpecified: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_specified(self, isSpecified)
-proc get_definition*(self: ptr IXMLDOMNode, definitionNode: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_definition(self, definitionNode)
-proc get_nodeTypedValue*(self: ptr IXMLDOMNode, typedValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nodeTypedValue(self, typedValue)
-proc put_nodeTypedValue*(self: ptr IXMLDOMNode, typedValue: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_nodeTypedValue(self, typedValue)
-proc get_dataType*(self: ptr IXMLDOMNode, dataTypeName: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dataType(self, dataTypeName)
-proc put_dataType*(self: ptr IXMLDOMNode, dataTypeName: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dataType(self, dataTypeName)
-proc get_xml*(self: ptr IXMLDOMNode, xmlString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_xml(self, xmlString)
-proc transformNode*(self: ptr IXMLDOMNode, stylesheet: ptr IXMLDOMNode, xmlString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.transformNode(self, stylesheet, xmlString)
-proc selectNodes*(self: ptr IXMLDOMNode, queryString: BSTR, resultList: ptr ptr IXMLDOMNodeList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.selectNodes(self, queryString, resultList)
-proc selectSingleNode*(self: ptr IXMLDOMNode, queryString: BSTR, resultNode: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.selectSingleNode(self, queryString, resultNode)
-proc get_parsed*(self: ptr IXMLDOMNode, isParsed: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parsed(self, isParsed)
-proc get_namespaceURI*(self: ptr IXMLDOMNode, namespaceURI: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_namespaceURI(self, namespaceURI)
-proc get_prefix*(self: ptr IXMLDOMNode, prefixString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_prefix(self, prefixString)
-proc get_baseName*(self: ptr IXMLDOMNode, nameString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_baseName(self, nameString)
-proc transformNodeToObject*(self: ptr IXMLDOMNode, stylesheet: ptr IXMLDOMNode, outputObject: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.transformNodeToObject(self, stylesheet, outputObject)
-proc get_doctype*(self: ptr IXMLDOMDocument, documentType: ptr ptr IXMLDOMDocumentType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_doctype(self, documentType)
-proc get_implementation*(self: ptr IXMLDOMDocument, impl: ptr ptr IXMLDOMImplementation): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_implementation(self, impl)
-proc get_documentElement*(self: ptr IXMLDOMDocument, DOMElement: ptr ptr IXMLDOMElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_documentElement(self, DOMElement)
-proc putref_documentElement*(self: ptr IXMLDOMDocument, DOMElement: ptr IXMLDOMElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.putref_documentElement(self, DOMElement)
-proc createElement*(self: ptr IXMLDOMDocument, tagName: BSTR, element: ptr ptr IXMLDOMElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createElement(self, tagName, element)
-proc createDocumentFragment*(self: ptr IXMLDOMDocument, docFrag: ptr ptr IXMLDOMDocumentFragment): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createDocumentFragment(self, docFrag)
-proc createTextNode*(self: ptr IXMLDOMDocument, data: BSTR, text: ptr ptr IXMLDOMText): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createTextNode(self, data, text)
-proc createComment*(self: ptr IXMLDOMDocument, data: BSTR, comment: ptr ptr IXMLDOMComment): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createComment(self, data, comment)
-proc createCDATASection*(self: ptr IXMLDOMDocument, data: BSTR, cdata: ptr ptr IXMLDOMCDATASection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createCDATASection(self, data, cdata)
-proc createProcessingInstruction*(self: ptr IXMLDOMDocument, target: BSTR, data: BSTR, pi: ptr ptr IXMLDOMProcessingInstruction): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createProcessingInstruction(self, target, data, pi)
-proc createAttribute*(self: ptr IXMLDOMDocument, name: BSTR, attribute: ptr ptr IXMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createAttribute(self, name, attribute)
-proc createEntityReference*(self: ptr IXMLDOMDocument, name: BSTR, entityRef: ptr ptr IXMLDOMEntityReference): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createEntityReference(self, name, entityRef)
-proc getElementsByTagName*(self: ptr IXMLDOMDocument, tagName: BSTR, resultList: ptr ptr IXMLDOMNodeList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getElementsByTagName(self, tagName, resultList)
-proc createNode*(self: ptr IXMLDOMDocument, Type: VARIANT, name: BSTR, namespaceURI: BSTR, node: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createNode(self, Type, name, namespaceURI, node)
-proc nodeFromID*(self: ptr IXMLDOMDocument, idString: BSTR, node: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.nodeFromID(self, idString, node)
-proc load*(self: ptr IXMLDOMDocument, xmlSource: VARIANT, isSuccessful: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.load(self, xmlSource, isSuccessful)
-proc get_readyState*(self: ptr IXMLDOMDocument, value: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, value)
-proc get_parseError*(self: ptr IXMLDOMDocument, errorObj: ptr ptr IXMLDOMParseError): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parseError(self, errorObj)
-proc get_url*(self: ptr IXMLDOMDocument, urlString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_url(self, urlString)
-proc get_async*(self: ptr IXMLDOMDocument, isAsync: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_async(self, isAsync)
-proc put_async*(self: ptr IXMLDOMDocument, isAsync: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_async(self, isAsync)
-proc abort*(self: ptr IXMLDOMDocument): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.abort(self)
-proc loadXML*(self: ptr IXMLDOMDocument, bstrXML: BSTR, isSuccessful: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.loadXML(self, bstrXML, isSuccessful)
-proc save*(self: ptr IXMLDOMDocument, destination: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.save(self, destination)
-proc get_validateOnParse*(self: ptr IXMLDOMDocument, isValidating: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_validateOnParse(self, isValidating)
-proc put_validateOnParse*(self: ptr IXMLDOMDocument, isValidating: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_validateOnParse(self, isValidating)
-proc get_resolveExternals*(self: ptr IXMLDOMDocument, isResolving: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_resolveExternals(self, isResolving)
-proc put_resolveExternals*(self: ptr IXMLDOMDocument, isResolving: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_resolveExternals(self, isResolving)
-proc get_preserveWhiteSpace*(self: ptr IXMLDOMDocument, isPreserving: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_preserveWhiteSpace(self, isPreserving)
-proc put_preserveWhiteSpace*(self: ptr IXMLDOMDocument, isPreserving: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_preserveWhiteSpace(self, isPreserving)
-proc put_onreadystatechange*(self: ptr IXMLDOMDocument, readystatechangeSink: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreadystatechange(self, readystatechangeSink)
-proc put_ondataavailable*(self: ptr IXMLDOMDocument, ondataavailableSink: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondataavailable(self, ondataavailableSink)
-proc put_ontransformnode*(self: ptr IXMLDOMDocument, ontransformnodeSink: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ontransformnode(self, ontransformnodeSink)
-proc get_item*(self: ptr IXMLDOMNodeList, index: LONG, listItem: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_item(self, index, listItem)
-proc get_length*(self: ptr IXMLDOMNodeList, listLength: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, listLength)
-proc nextNode*(self: ptr IXMLDOMNodeList, nextItem: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.nextNode(self, nextItem)
-proc reset*(self: ptr IXMLDOMNodeList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.reset(self)
-proc get_newEnum*(self: ptr IXMLDOMNodeList, ppUnk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, ppUnk)
-proc getNamedItem*(self: ptr IXMLDOMNamedNodeMap, name: BSTR, namedItem: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getNamedItem(self, name, namedItem)
-proc setNamedItem*(self: ptr IXMLDOMNamedNodeMap, newItem: ptr IXMLDOMNode, nameItem: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setNamedItem(self, newItem, nameItem)
-proc removeNamedItem*(self: ptr IXMLDOMNamedNodeMap, name: BSTR, namedItem: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeNamedItem(self, name, namedItem)
-proc get_item*(self: ptr IXMLDOMNamedNodeMap, index: LONG, listItem: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_item(self, index, listItem)
-proc get_length*(self: ptr IXMLDOMNamedNodeMap, listLength: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, listLength)
-proc getQualifiedItem*(self: ptr IXMLDOMNamedNodeMap, baseName: BSTR, namespaceURI: BSTR, qualifiedItem: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getQualifiedItem(self, baseName, namespaceURI, qualifiedItem)
-proc removeQualifiedItem*(self: ptr IXMLDOMNamedNodeMap, baseName: BSTR, namespaceURI: BSTR, qualifiedItem: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeQualifiedItem(self, baseName, namespaceURI, qualifiedItem)
-proc nextNode*(self: ptr IXMLDOMNamedNodeMap, nextItem: ptr ptr IXMLDOMNode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.nextNode(self, nextItem)
-proc reset*(self: ptr IXMLDOMNamedNodeMap): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.reset(self)
-proc get_newEnum*(self: ptr IXMLDOMNamedNodeMap, ppUnk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, ppUnk)
-proc get_data*(self: ptr IXMLDOMCharacterData, data: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_data(self, data)
-proc put_data*(self: ptr IXMLDOMCharacterData, data: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_data(self, data)
-proc get_length*(self: ptr IXMLDOMCharacterData, dataLength: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, dataLength)
-proc substringData*(self: ptr IXMLDOMCharacterData, offset: LONG, count: LONG, data: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.substringData(self, offset, count, data)
-proc appendData*(self: ptr IXMLDOMCharacterData, data: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.appendData(self, data)
-proc insertData*(self: ptr IXMLDOMCharacterData, offset: LONG, data: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertData(self, offset, data)
-proc deleteData*(self: ptr IXMLDOMCharacterData, offset: LONG, count: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.deleteData(self, offset, count)
-proc replaceData*(self: ptr IXMLDOMCharacterData, offset: LONG, count: LONG, data: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replaceData(self, offset, count, data)
-proc get_name*(self: ptr IXMLDOMAttribute, attributeName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, attributeName)
-proc get_value*(self: ptr IXMLDOMAttribute, attributeValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, attributeValue)
-proc put_value*(self: ptr IXMLDOMAttribute, attributeValue: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, attributeValue)
-proc get_tagName*(self: ptr IXMLDOMElement, tagName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tagName(self, tagName)
-proc getAttribute*(self: ptr IXMLDOMElement, name: BSTR, value: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, name, value)
-proc setAttribute*(self: ptr IXMLDOMElement, name: BSTR, value: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttribute(self, name, value)
-proc removeAttribute*(self: ptr IXMLDOMElement, name: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttribute(self, name)
-proc getAttributeNode*(self: ptr IXMLDOMElement, name: BSTR, attributeNode: ptr ptr IXMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttributeNode(self, name, attributeNode)
-proc setAttributeNode*(self: ptr IXMLDOMElement, DOMAttribute: ptr IXMLDOMAttribute, attributeNode: ptr ptr IXMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttributeNode(self, DOMAttribute, attributeNode)
-proc removeAttributeNode*(self: ptr IXMLDOMElement, DOMAttribute: ptr IXMLDOMAttribute, attributeNode: ptr ptr IXMLDOMAttribute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttributeNode(self, DOMAttribute, attributeNode)
-proc getElementsByTagName*(self: ptr IXMLDOMElement, tagName: BSTR, resultList: ptr ptr IXMLDOMNodeList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getElementsByTagName(self, tagName, resultList)
-proc normalize*(self: ptr IXMLDOMElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.normalize(self)
-proc splitText*(self: ptr IXMLDOMText, offset: LONG, rightHandTextNode: ptr ptr IXMLDOMText): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.splitText(self, offset, rightHandTextNode)
-proc get_target*(self: ptr IXMLDOMProcessingInstruction, name: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_target(self, name)
-proc get_data*(self: ptr IXMLDOMProcessingInstruction, value: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_data(self, value)
-proc put_data*(self: ptr IXMLDOMProcessingInstruction, value: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_data(self, value)
-proc get_name*(self: ptr IXMLDOMDocumentType, rootName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, rootName)
-proc get_entities*(self: ptr IXMLDOMDocumentType, entityMap: ptr ptr IXMLDOMNamedNodeMap): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_entities(self, entityMap)
-proc get_notations*(self: ptr IXMLDOMDocumentType, notationMap: ptr ptr IXMLDOMNamedNodeMap): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_notations(self, notationMap)
-proc get_publicId*(self: ptr IXMLDOMNotation, publicID: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_publicId(self, publicID)
-proc get_systemId*(self: ptr IXMLDOMNotation, systemID: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_systemId(self, systemID)
-proc get_publicId*(self: ptr IXMLDOMEntity, publicID: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_publicId(self, publicID)
-proc get_systemId*(self: ptr IXMLDOMEntity, systemID: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_systemId(self, systemID)
-proc get_notationName*(self: ptr IXMLDOMEntity, name: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_notationName(self, name)
-proc get_errorCode*(self: ptr IXMLDOMParseError, errorCode: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_errorCode(self, errorCode)
-proc get_url*(self: ptr IXMLDOMParseError, urlString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_url(self, urlString)
-proc get_reason*(self: ptr IXMLDOMParseError, reasonString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_reason(self, reasonString)
-proc get_srcText*(self: ptr IXMLDOMParseError, sourceString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_srcText(self, sourceString)
-proc get_line*(self: ptr IXMLDOMParseError, lineNumber: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_line(self, lineNumber)
-proc get_linepos*(self: ptr IXMLDOMParseError, linePosition: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_linepos(self, linePosition)
-proc get_filepos*(self: ptr IXMLDOMParseError, filePosition: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_filepos(self, filePosition)
-proc uniqueID*(self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pID: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.uniqueID(self, pNode, pID)
-proc depth*(self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pDepth: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.depth(self, pNode, pDepth)
-proc childNumber*(self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pNumber: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.childNumber(self, pNode, pNumber)
-proc ancestorChildNumber*(self: ptr IXTLRuntime, bstrNodeName: BSTR, pNode: ptr IXMLDOMNode, pNumber: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ancestorChildNumber(self, bstrNodeName, pNode, pNumber)
-proc absoluteChildNumber*(self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pNumber: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.absoluteChildNumber(self, pNode, pNumber)
-proc formatIndex*(self: ptr IXTLRuntime, lIndex: LONG, bstrFormat: BSTR, pbstrFormattedString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.formatIndex(self, lIndex, bstrFormat, pbstrFormattedString)
-proc formatNumber*(self: ptr IXTLRuntime, dblNumber: float64, bstrFormat: BSTR, pbstrFormattedString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.formatNumber(self, dblNumber, bstrFormat, pbstrFormattedString)
-proc formatDate*(self: ptr IXTLRuntime, varDate: VARIANT, bstrFormat: BSTR, varDestLocale: VARIANT, pbstrFormattedString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.formatDate(self, varDate, bstrFormat, varDestLocale, pbstrFormattedString)
-proc formatTime*(self: ptr IXTLRuntime, varTime: VARIANT, bstrFormat: BSTR, varDestLocale: VARIANT, pbstrFormattedString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.formatTime(self, varTime, bstrFormat, varDestLocale, pbstrFormattedString)
-proc open*(self: ptr IXMLHttpRequest, bstrMethod: BSTR, bstrUrl: BSTR, varAsync: VARIANT, bstrUser: VARIANT, bstrPassword: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.open(self, bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword)
-proc setRequestHeader*(self: ptr IXMLHttpRequest, bstrHeader: BSTR, bstrValue: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setRequestHeader(self, bstrHeader, bstrValue)
-proc getResponseHeader*(self: ptr IXMLHttpRequest, bstrHeader: BSTR, pbstrValue: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getResponseHeader(self, bstrHeader, pbstrValue)
-proc getAllResponseHeaders*(self: ptr IXMLHttpRequest, pbstrHeaders: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAllResponseHeaders(self, pbstrHeaders)
-proc send*(self: ptr IXMLHttpRequest, varBody: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.send(self, varBody)
-proc abort*(self: ptr IXMLHttpRequest): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.abort(self)
-proc get_status*(self: ptr IXMLHttpRequest, plStatus: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_status(self, plStatus)
-proc get_statusText*(self: ptr IXMLHttpRequest, pbstrStatus: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_statusText(self, pbstrStatus)
-proc get_responseXML*(self: ptr IXMLHttpRequest, ppBody: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_responseXML(self, ppBody)
-proc get_responseText*(self: ptr IXMLHttpRequest, pbstrBody: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_responseText(self, pbstrBody)
-proc get_responseBody*(self: ptr IXMLHttpRequest, pvarBody: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_responseBody(self, pvarBody)
-proc get_responseStream*(self: ptr IXMLHttpRequest, pvarBody: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_responseStream(self, pvarBody)
-proc get_readyState*(self: ptr IXMLHttpRequest, plState: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, plState)
-proc put_onreadystatechange*(self: ptr IXMLHttpRequest, pReadyStateSink: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreadystatechange(self, pReadyStateSink)
-proc get_XMLDocument*(self: ptr IXMLDSOControl, ppDoc: ptr ptr IXMLDOMDocument): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_XMLDocument(self, ppDoc)
-proc put_XMLDocument*(self: ptr IXMLDSOControl, ppDoc: ptr IXMLDOMDocument): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_XMLDocument(self, ppDoc)
-proc get_JavaDSOCompatible*(self: ptr IXMLDSOControl, fJavaDSOCompatible: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_JavaDSOCompatible(self, fJavaDSOCompatible)
-proc put_JavaDSOCompatible*(self: ptr IXMLDSOControl, fJavaDSOCompatible: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_JavaDSOCompatible(self, fJavaDSOCompatible)
-proc get_readyState*(self: ptr IXMLDSOControl, state: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, state)
-proc put_length*(self: ptr IXMLElementCollection, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_length(self, v)
-proc get_length*(self: ptr IXMLElementCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
-proc get_newEnum*(self: ptr IXMLElementCollection, ppUnk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, ppUnk)
-proc item*(self: ptr IXMLElementCollection, var1: VARIANT, var2: VARIANT, ppDisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, var1, var2, ppDisp)
-proc get_root*(self: ptr IXMLDocument, p: ptr ptr IXMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_root(self, p)
-proc get_fileSize*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileSize(self, p)
-proc get_fileModifiedDate*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileModifiedDate(self, p)
-proc get_fileUpdatedDate*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileUpdatedDate(self, p)
-proc get_URL*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_URL(self, p)
-proc put_URL*(self: ptr IXMLDocument, p: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_URL(self, p)
-proc get_mimeType*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_mimeType(self, p)
-proc get_readyState*(self: ptr IXMLDocument, pl: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, pl)
-proc get_charset*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_charset(self, p)
-proc put_charset*(self: ptr IXMLDocument, p: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_charset(self, p)
-proc get_version*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_version(self, p)
-proc get_doctype*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_doctype(self, p)
-proc get_dtdURL*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dtdURL(self, p)
-proc createElement*(self: ptr IXMLDocument, vType: VARIANT, var1: VARIANT, ppElem: ptr ptr IXMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createElement(self, vType, var1, ppElem)
-proc get_root*(self: ptr IXMLDocument2, p: ptr ptr IXMLElement2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_root(self, p)
-proc get_fileSize*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileSize(self, p)
-proc get_fileModifiedDate*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileModifiedDate(self, p)
-proc get_fileUpdatedDate*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileUpdatedDate(self, p)
-proc get_URL*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_URL(self, p)
-proc put_URL*(self: ptr IXMLDocument2, p: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_URL(self, p)
-proc get_mimeType*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_mimeType(self, p)
-proc get_readyState*(self: ptr IXMLDocument2, pl: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, pl)
-proc get_charset*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_charset(self, p)
-proc put_charset*(self: ptr IXMLDocument2, p: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_charset(self, p)
-proc get_version*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_version(self, p)
-proc get_doctype*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_doctype(self, p)
-proc get_dtdURL*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dtdURL(self, p)
-proc createElement*(self: ptr IXMLDocument2, vType: VARIANT, var1: VARIANT, ppElem: ptr ptr IXMLElement2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createElement(self, vType, var1, ppElem)
-proc get_async*(self: ptr IXMLDocument2, pf: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_async(self, pf)
-proc put_async*(self: ptr IXMLDocument2, f: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_async(self, f)
-proc get_tagName*(self: ptr IXMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tagName(self, p)
-proc put_tagName*(self: ptr IXMLElement, p: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_tagName(self, p)
-proc get_parent*(self: ptr IXMLElement, ppParent: ptr ptr IXMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parent(self, ppParent)
-proc setAttribute*(self: ptr IXMLElement, strPropertyName: BSTR, PropertyValue: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttribute(self, strPropertyName, PropertyValue)
-proc getAttribute*(self: ptr IXMLElement, strPropertyName: BSTR, PropertyValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, strPropertyName, PropertyValue)
-proc removeAttribute*(self: ptr IXMLElement, strPropertyName: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttribute(self, strPropertyName)
-proc get_children*(self: ptr IXMLElement, pp: ptr ptr IXMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_children(self, pp)
-proc get_type*(self: ptr IXMLElement, plType: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, plType)
-proc get_text*(self: ptr IXMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_text(self, p)
-proc put_text*(self: ptr IXMLElement, p: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_text(self, p)
-proc addChild*(self: ptr IXMLElement, pChildElem: ptr IXMLElement, lIndex: LONG, lReserved: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addChild(self, pChildElem, lIndex, lReserved)
-proc removeChild*(self: ptr IXMLElement, pChildElem: ptr IXMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeChild(self, pChildElem)
-proc get_tagName*(self: ptr IXMLElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tagName(self, p)
-proc put_tagName*(self: ptr IXMLElement2, p: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_tagName(self, p)
-proc get_parent*(self: ptr IXMLElement2, ppParent: ptr ptr IXMLElement2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parent(self, ppParent)
-proc setAttribute*(self: ptr IXMLElement2, strPropertyName: BSTR, PropertyValue: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttribute(self, strPropertyName, PropertyValue)
-proc getAttribute*(self: ptr IXMLElement2, strPropertyName: BSTR, PropertyValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, strPropertyName, PropertyValue)
-proc removeAttribute*(self: ptr IXMLElement2, strPropertyName: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttribute(self, strPropertyName)
-proc get_children*(self: ptr IXMLElement2, pp: ptr ptr IXMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_children(self, pp)
-proc get_type*(self: ptr IXMLElement2, plType: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, plType)
-proc get_text*(self: ptr IXMLElement2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_text(self, p)
-proc put_text*(self: ptr IXMLElement2, p: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_text(self, p)
-proc addChild*(self: ptr IXMLElement2, pChildElem: ptr IXMLElement2, lIndex: LONG, lReserved: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addChild(self, pChildElem, lIndex, lReserved)
-proc removeChild*(self: ptr IXMLElement2, pChildElem: ptr IXMLElement2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeChild(self, pChildElem)
-proc get_attributes*(self: ptr IXMLElement2, pp: ptr ptr IXMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_attributes(self, pp)
-proc get_name*(self: ptr IXMLAttribute, n: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, n)
-proc get_value*(self: ptr IXMLAttribute, v: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, v)
-proc GetErrorInfo*(self: ptr IXMLError, pErrorReturn: ptr XML_ERROR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetErrorInfo(self, pErrorReturn)
-proc GetClassID*(self: ptr IPersistMoniker, pClassID: ptr CLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClassID(self, pClassID)
-proc IsDirty*(self: ptr IPersistMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDirty(self)
-proc Load*(self: ptr IPersistMoniker, fFullyAvailable: WINBOOL, pimkName: ptr IMoniker, pibc: LPBC, grfMode: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load(self, fFullyAvailable, pimkName, pibc, grfMode)
-proc Save*(self: ptr IPersistMoniker, pimkName: ptr IMoniker, pbc: LPBC, fRemember: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Save(self, pimkName, pbc, fRemember)
-proc SaveCompleted*(self: ptr IPersistMoniker, pimkName: ptr IMoniker, pibc: LPBC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SaveCompleted(self, pimkName, pibc)
-proc GetCurMoniker*(self: ptr IPersistMoniker, ppimkName: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurMoniker(self, ppimkName)
-proc PutProperty*(self: ptr IMonikerProp, mkp: MONIKERPROPERTY, val: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PutProperty(self, mkp, val)
-proc CreateBinding*(self: ptr IBindProtocol, szUrl: LPCWSTR, pbc: ptr IBindCtx, ppb: ptr ptr IBinding): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateBinding(self, szUrl, pbc, ppb)
-proc Abort*(self: ptr IBinding): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Abort(self)
-proc Suspend*(self: ptr IBinding): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Suspend(self)
-proc Resume*(self: ptr IBinding): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Resume(self)
-proc SetPriority*(self: ptr IBinding, nPriority: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPriority(self, nPriority)
-proc GetPriority*(self: ptr IBinding, pnPriority: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPriority(self, pnPriority)
-proc GetBindResult*(self: ptr IBinding, pclsidProtocol: ptr CLSID, pdwResult: ptr DWORD, pszResult: ptr LPOLESTR, pdwReserved: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBindResult(self, pclsidProtocol, pdwResult, pszResult, pdwReserved)
-proc OnStartBinding*(self: ptr IBindStatusCallback, dwReserved: DWORD, pib: ptr IBinding): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnStartBinding(self, dwReserved, pib)
-proc GetPriority*(self: ptr IBindStatusCallback, pnPriority: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPriority(self, pnPriority)
-proc OnLowResource*(self: ptr IBindStatusCallback, reserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnLowResource(self, reserved)
-proc OnProgress*(self: ptr IBindStatusCallback, ulProgress: ULONG, ulProgressMax: ULONG, ulStatusCode: ULONG, szStatusText: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnProgress(self, ulProgress, ulProgressMax, ulStatusCode, szStatusText)
-proc OnStopBinding*(self: ptr IBindStatusCallback, hresult: HRESULT, szError: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnStopBinding(self, hresult, szError)
-proc GetBindInfo*(self: ptr IBindStatusCallback, grfBINDF: ptr DWORD, pbindinfo: ptr BINDINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBindInfo(self, grfBINDF, pbindinfo)
-proc OnDataAvailable*(self: ptr IBindStatusCallback, grfBSCF: DWORD, dwSize: DWORD, pformatetc: ptr FORMATETC, pstgmed: ptr STGMEDIUM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDataAvailable(self, grfBSCF, dwSize, pformatetc, pstgmed)
-proc OnObjectAvailable*(self: ptr IBindStatusCallback, riid: REFIID, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnObjectAvailable(self, riid, punk)
-proc GetBindInfoEx*(self: ptr IBindStatusCallbackEx, grfBINDF: ptr DWORD, pbindinfo: ptr BINDINFO, grfBINDF2: ptr DWORD, pdwReserved: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBindInfoEx(self, grfBINDF, pbindinfo, grfBINDF2, pdwReserved)
-proc Authenticate*(self: ptr IAuthenticate, phwnd: ptr HWND, pszUsername: ptr LPWSTR, pszPassword: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Authenticate(self, phwnd, pszUsername, pszPassword)
-proc AuthenticateEx*(self: ptr IAuthenticateEx, phwnd: ptr HWND, pszUsername: ptr LPWSTR, pszPassword: ptr LPWSTR, pauthinfo: ptr AUTHENTICATEINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AuthenticateEx(self, phwnd, pszUsername, pszPassword, pauthinfo)
-proc BeginningTransaction*(self: ptr IHttpNegotiate, szURL: LPCWSTR, szHeaders: LPCWSTR, dwReserved: DWORD, pszAdditionalHeaders: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeginningTransaction(self, szURL, szHeaders, dwReserved, pszAdditionalHeaders)
-proc OnResponse*(self: ptr IHttpNegotiate, dwResponseCode: DWORD, szResponseHeaders: LPCWSTR, szRequestHeaders: LPCWSTR, pszAdditionalRequestHeaders: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnResponse(self, dwResponseCode, szResponseHeaders, szRequestHeaders, pszAdditionalRequestHeaders)
-proc GetRootSecurityId*(self: ptr IHttpNegotiate2, pbSecurityId: ptr BYTE, pcbSecurityId: ptr DWORD, dwReserved: DWORD_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRootSecurityId(self, pbSecurityId, pcbSecurityId, dwReserved)
-proc GetSerializedClientCertContext*(self: ptr IHttpNegotiate3, ppbCert: ptr ptr BYTE, pcbCert: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSerializedClientCertContext(self, ppbCert, pcbCert)
-proc SetHandleForUnlock*(self: ptr IWinInetFileStream, hWinInetLockHandle: DWORD_PTR, dwReserved: DWORD_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHandleForUnlock(self, hWinInetLockHandle, dwReserved)
-proc SetDeleteFile*(self: ptr IWinInetFileStream, dwReserved: DWORD_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDeleteFile(self, dwReserved)
-proc GetWindow*(self: ptr IWindowForBindingUI, rguidReason: REFGUID, phwnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWindow(self, rguidReason, phwnd)
-proc OnCodeInstallProblem*(self: ptr ICodeInstall, ulStatusCode: ULONG, szDestination: LPCWSTR, szSource: LPCWSTR, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnCodeInstallProblem(self, ulStatusCode, szDestination, szSource, dwReserved)
-proc GetPropertyBSTR*(self: ptr IUri, uriProp: Uri_PROPERTY, pbstrProperty: ptr BSTR, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyBSTR(self, uriProp, pbstrProperty, dwFlags)
-proc GetPropertyLength*(self: ptr IUri, uriProp: Uri_PROPERTY, pcchProperty: ptr DWORD, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyLength(self, uriProp, pcchProperty, dwFlags)
-proc GetPropertyDWORD*(self: ptr IUri, uriProp: Uri_PROPERTY, pdwProperty: ptr DWORD, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyDWORD(self, uriProp, pdwProperty, dwFlags)
-proc HasProperty*(self: ptr IUri, uriProp: Uri_PROPERTY, pfHasProperty: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HasProperty(self, uriProp, pfHasProperty)
-proc GetAbsoluteUri*(self: ptr IUri, pbstrAbsoluteUri: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAbsoluteUri(self, pbstrAbsoluteUri)
-proc GetAuthority*(self: ptr IUri, pbstrAuthority: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAuthority(self, pbstrAuthority)
-proc GetDisplayUri*(self: ptr IUri, pbstrDisplayString: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDisplayUri(self, pbstrDisplayString)
-proc GetDomain*(self: ptr IUri, pbstrDomain: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDomain(self, pbstrDomain)
-proc GetExtension*(self: ptr IUri, pbstrExtension: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetExtension(self, pbstrExtension)
-proc GetFragment*(self: ptr IUri, pbstrFragment: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFragment(self, pbstrFragment)
-proc GetHost*(self: ptr IUri, pbstrHost: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHost(self, pbstrHost)
-proc GetPassword*(self: ptr IUri, pbstrPassword: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPassword(self, pbstrPassword)
-proc GetPath*(self: ptr IUri, pbstrPath: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPath(self, pbstrPath)
-proc GetPathAndQuery*(self: ptr IUri, pbstrPathAndQuery: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPathAndQuery(self, pbstrPathAndQuery)
-proc GetQuery*(self: ptr IUri, pbstrQuery: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetQuery(self, pbstrQuery)
-proc GetRawUri*(self: ptr IUri, pbstrRawUri: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRawUri(self, pbstrRawUri)
-proc GetSchemeName*(self: ptr IUri, pbstrSchemeName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSchemeName(self, pbstrSchemeName)
-proc GetUserInfo*(self: ptr IUri, pbstrUserInfo: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUserInfo(self, pbstrUserInfo)
-proc GetUserName*(self: ptr IUri, pbstrUserName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUserName(self, pbstrUserName)
-proc GetHostType*(self: ptr IUri, pdwHostType: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHostType(self, pdwHostType)
-proc GetPort*(self: ptr IUri, pdwPort: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPort(self, pdwPort)
-proc GetScheme*(self: ptr IUri, pdwScheme: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetScheme(self, pdwScheme)
-proc GetZone*(self: ptr IUri, pdwZone: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetZone(self, pdwZone)
-proc GetProperties*(self: ptr IUri, pdwFlags: LPDWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperties(self, pdwFlags)
-proc IsEqual*(self: ptr IUri, pUri: ptr IUri, pfEqual: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsEqual(self, pUri, pfEqual)
-proc GetIUri*(self: ptr IUriContainer, ppIUri: ptr ptr IUri): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIUri(self, ppIUri)
-proc CreateUriSimple*(self: ptr IUriBuilder, dwAllowEncodingPropertyMask: DWORD, dwReserved: DWORD_PTR, ppIUri: ptr ptr IUri): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateUriSimple(self, dwAllowEncodingPropertyMask, dwReserved, ppIUri)
-proc CreateUri*(self: ptr IUriBuilder, dwCreateFlags: DWORD, dwAllowEncodingPropertyMask: DWORD, dwReserved: DWORD_PTR, ppIUri: ptr ptr IUri): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateUri(self, dwCreateFlags, dwAllowEncodingPropertyMask, dwReserved, ppIUri)
-proc CreateUriWithFlags*(self: ptr IUriBuilder, dwCreateFlags: DWORD, dwUriBuilderFlags: DWORD, dwAllowEncodingPropertyMask: DWORD, dwReserved: DWORD_PTR, ppIUri: ptr ptr IUri): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateUriWithFlags(self, dwCreateFlags, dwUriBuilderFlags, dwAllowEncodingPropertyMask, dwReserved, ppIUri)
-proc GetIUri*(self: ptr IUriBuilder, ppIUri: ptr ptr IUri): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIUri(self, ppIUri)
-proc SetIUri*(self: ptr IUriBuilder, pIUri: ptr IUri): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetIUri(self, pIUri)
-proc GetFragment*(self: ptr IUriBuilder, pcchFragment: ptr DWORD, ppwzFragment: ptr LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFragment(self, pcchFragment, ppwzFragment)
-proc GetHost*(self: ptr IUriBuilder, pcchHost: ptr DWORD, ppwzHost: ptr LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHost(self, pcchHost, ppwzHost)
-proc GetPassword*(self: ptr IUriBuilder, pcchPassword: ptr DWORD, ppwzPassword: ptr LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPassword(self, pcchPassword, ppwzPassword)
-proc GetPath*(self: ptr IUriBuilder, pcchPath: ptr DWORD, ppwzPath: ptr LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPath(self, pcchPath, ppwzPath)
-proc GetPort*(self: ptr IUriBuilder, pfHasPort: ptr WINBOOL, pdwPort: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPort(self, pfHasPort, pdwPort)
-proc GetQuery*(self: ptr IUriBuilder, pcchQuery: ptr DWORD, ppwzQuery: ptr LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetQuery(self, pcchQuery, ppwzQuery)
-proc GetSchemeName*(self: ptr IUriBuilder, pcchSchemeName: ptr DWORD, ppwzSchemeName: ptr LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSchemeName(self, pcchSchemeName, ppwzSchemeName)
-proc GetUserName*(self: ptr IUriBuilder, pcchUserName: ptr DWORD, ppwzUserName: ptr LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUserName(self, pcchUserName, ppwzUserName)
-proc SetFragment*(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFragment(self, pwzNewValue)
-proc SetHost*(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHost(self, pwzNewValue)
-proc SetPassword*(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPassword(self, pwzNewValue)
-proc SetPath*(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPath(self, pwzNewValue)
-proc SetPort*(self: ptr IUriBuilder, fHasPort: WINBOOL, dwNewValue: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPort(self, fHasPort, dwNewValue)
-proc SetQuery*(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetQuery(self, pwzNewValue)
-proc SetSchemeName*(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSchemeName(self, pwzNewValue)
-proc SetUserName*(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetUserName(self, pwzNewValue)
-proc RemoveProperties*(self: ptr IUriBuilder, dwPropertyMask: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveProperties(self, dwPropertyMask)
-proc HasBeenModified*(self: ptr IUriBuilder, pfModified: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HasBeenModified(self, pfModified)
-proc CreateIUriBuilder*(self: ptr IUriBuilderFactory, dwFlags: DWORD, dwReserved: DWORD_PTR, ppIUriBuilder: ptr ptr IUriBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateIUriBuilder(self, dwFlags, dwReserved, ppIUriBuilder)
-proc CreateInitializedIUriBuilder*(self: ptr IUriBuilderFactory, dwFlags: DWORD, dwReserved: DWORD_PTR, ppIUriBuilder: ptr ptr IUriBuilder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInitializedIUriBuilder(self, dwFlags, dwReserved, ppIUriBuilder)
-proc mQueryOption*(self: ptr IWinInetInfo, dwOption: DWORD, pBuffer: LPVOID, pcbBuf: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryOption(self, dwOption, pBuffer, pcbBuf)
-proc OnSecurityProblem*(self: ptr IHttpSecurity, dwProblem: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnSecurityProblem(self, dwProblem)
-proc QueryInfo*(self: ptr IWinInetHttpInfo, dwOption: DWORD, pBuffer: LPVOID, pcbBuf: ptr DWORD, pdwFlags: ptr DWORD, pdwReserved: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryInfo(self, dwOption, pBuffer, pcbBuf, pdwFlags, pdwReserved)
-proc GetRequestTimeouts*(self: ptr IWinInetHttpTimeouts, pdwConnectTimeout: ptr DWORD, pdwSendTimeout: ptr DWORD, pdwReceiveTimeout: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRequestTimeouts(self, pdwConnectTimeout, pdwSendTimeout, pdwReceiveTimeout)
-proc SetCacheExtension*(self: ptr IWinInetCacheHints, pwzExt: LPCWSTR, pszCacheFile: LPVOID, pcbCacheFile: ptr DWORD, pdwWinInetError: ptr DWORD, pdwReserved: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCacheExtension(self, pwzExt, pszCacheFile, pcbCacheFile, pdwWinInetError, pdwReserved)
-proc SetCacheExtension2*(self: ptr IWinInetCacheHints2, pwzExt: LPCWSTR, pwzCacheFile: ptr WCHAR, pcchCacheFile: ptr DWORD, pdwWinInetError: ptr DWORD, pdwReserved: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCacheExtension2(self, pwzExt, pwzCacheFile, pcchCacheFile, pdwWinInetError, pdwReserved)
-proc CreateMoniker*(self: ptr IBindHost, szName: LPOLESTR, pBC: ptr IBindCtx, ppmk: ptr ptr IMoniker, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateMoniker(self, szName, pBC, ppmk, dwReserved)
-proc MonikerBindToStorage*(self: ptr IBindHost, pMk: ptr IMoniker, pBC: ptr IBindCtx, pBSC: ptr IBindStatusCallback, riid: REFIID, ppvObj: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MonikerBindToStorage(self, pMk, pBC, pBSC, riid, ppvObj)
-proc MonikerBindToObject*(self: ptr IBindHost, pMk: ptr IMoniker, pBC: ptr IBindCtx, pBSC: ptr IBindStatusCallback, riid: REFIID, ppvObj: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MonikerBindToObject(self, pMk, pBC, pBSC, riid, ppvObj)
-proc GetBindInfo*(self: ptr IInternetBindInfo, grfBINDF: ptr DWORD, pbindinfo: ptr BINDINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBindInfo(self, grfBINDF, pbindinfo)
-proc GetBindString*(self: ptr IInternetBindInfo, ulStringType: ULONG, ppwzStr: ptr LPOLESTR, cEl: ULONG, pcElFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBindString(self, ulStringType, ppwzStr, cEl, pcElFetched)
-proc GetBindInfoEx*(self: ptr IInternetBindInfoEx, grfBINDF: ptr DWORD, pbindinfo: ptr BINDINFO, grfBINDF2: ptr DWORD, pdwReserved: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBindInfoEx(self, grfBINDF, pbindinfo, grfBINDF2, pdwReserved)
-proc Start*(self: ptr IInternetProtocolRoot, szUrl: LPCWSTR, pOIProtSink: ptr IInternetProtocolSink, pOIBindInfo: ptr IInternetBindInfo, grfPI: DWORD, dwReserved: HANDLE_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Start(self, szUrl, pOIProtSink, pOIBindInfo, grfPI, dwReserved)
-proc Continue*(self: ptr IInternetProtocolRoot, pProtocolData: ptr PROTOCOLDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Continue(self, pProtocolData)
-proc Abort*(self: ptr IInternetProtocolRoot, hrReason: HRESULT, dwOptions: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Abort(self, hrReason, dwOptions)
-proc Terminate*(self: ptr IInternetProtocolRoot, dwOptions: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Terminate(self, dwOptions)
-proc Suspend*(self: ptr IInternetProtocolRoot): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Suspend(self)
-proc Resume*(self: ptr IInternetProtocolRoot): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Resume(self)
-proc Read*(self: ptr IInternetProtocol, pv: pointer, cb: ULONG, pcbRead: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Read(self, pv, cb, pcbRead)
-proc Seek*(self: ptr IInternetProtocol, dlibMove: LARGE_INTEGER, dwOrigin: DWORD, plibNewPosition: ptr ULARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Seek(self, dlibMove, dwOrigin, plibNewPosition)
-proc LockRequest*(self: ptr IInternetProtocol, dwOptions: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LockRequest(self, dwOptions)
-proc UnlockRequest*(self: ptr IInternetProtocol): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnlockRequest(self)
-proc StartEx*(self: ptr IInternetProtocolEx, pUri: ptr IUri, pOIProtSink: ptr IInternetProtocolSink, pOIBindInfo: ptr IInternetBindInfo, grfPI: DWORD, dwReserved: HANDLE_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StartEx(self, pUri, pOIProtSink, pOIBindInfo, grfPI, dwReserved)
-proc Switch*(self: ptr IInternetProtocolSink, pProtocolData: ptr PROTOCOLDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Switch(self, pProtocolData)
-proc ReportProgress*(self: ptr IInternetProtocolSink, ulStatusCode: ULONG, szStatusText: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReportProgress(self, ulStatusCode, szStatusText)
-proc ReportData*(self: ptr IInternetProtocolSink, grfBSCF: DWORD, ulProgress: ULONG, ulProgressMax: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReportData(self, grfBSCF, ulProgress, ulProgressMax)
-proc ReportResult*(self: ptr IInternetProtocolSink, hrResult: HRESULT, dwError: DWORD, szResult: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReportResult(self, hrResult, dwError, szResult)
-proc SwitchSink*(self: ptr IInternetProtocolSinkStackable, pOIProtSink: ptr IInternetProtocolSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SwitchSink(self, pOIProtSink)
-proc CommitSwitch*(self: ptr IInternetProtocolSinkStackable): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CommitSwitch(self)
-proc RollbackSwitch*(self: ptr IInternetProtocolSinkStackable): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RollbackSwitch(self)
-proc RegisterNameSpace*(self: ptr IInternetSession, pCF: ptr IClassFactory, rclsid: REFCLSID, pwzProtocol: LPCWSTR, cPatterns: ULONG, ppwzPatterns: ptr LPCWSTR, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterNameSpace(self, pCF, rclsid, pwzProtocol, cPatterns, ppwzPatterns, dwReserved)
-proc UnregisterNameSpace*(self: ptr IInternetSession, pCF: ptr IClassFactory, pszProtocol: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterNameSpace(self, pCF, pszProtocol)
-proc RegisterMimeFilter*(self: ptr IInternetSession, pCF: ptr IClassFactory, rclsid: REFCLSID, pwzType: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterMimeFilter(self, pCF, rclsid, pwzType)
-proc UnregisterMimeFilter*(self: ptr IInternetSession, pCF: ptr IClassFactory, pwzType: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterMimeFilter(self, pCF, pwzType)
-proc CreateBinding*(self: ptr IInternetSession, pBC: LPBC, szUrl: LPCWSTR, pUnkOuter: ptr IUnknown, ppUnk: ptr ptr IUnknown, ppOInetProt: ptr ptr IInternetProtocol, dwOption: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateBinding(self, pBC, szUrl, pUnkOuter, ppUnk, ppOInetProt, dwOption)
-proc SetSessionOption*(self: ptr IInternetSession, dwOption: DWORD, pBuffer: LPVOID, dwBufferLength: DWORD, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSessionOption(self, dwOption, pBuffer, dwBufferLength, dwReserved)
-proc GetSessionOption*(self: ptr IInternetSession, dwOption: DWORD, pBuffer: LPVOID, pdwBufferLength: ptr DWORD, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSessionOption(self, dwOption, pBuffer, pdwBufferLength, dwReserved)
-proc Prepare*(self: ptr IInternetThreadSwitch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Prepare(self)
-proc Continue*(self: ptr IInternetThreadSwitch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Continue(self)
-proc SetPriority*(self: ptr IInternetPriority, nPriority: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPriority(self, nPriority)
-proc GetPriority*(self: ptr IInternetPriority, pnPriority: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPriority(self, pnPriority)
-proc ParseUrl*(self: ptr IInternetProtocolInfo, pwzUrl: LPCWSTR, ParseAction: PARSEACTION, dwParseFlags: DWORD, pwzResult: LPWSTR, cchResult: DWORD, pcchResult: ptr DWORD, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseUrl(self, pwzUrl, ParseAction, dwParseFlags, pwzResult, cchResult, pcchResult, dwReserved)
-proc CombineUrl*(self: ptr IInternetProtocolInfo, pwzBaseUrl: LPCWSTR, pwzRelativeUrl: LPCWSTR, dwCombineFlags: DWORD, pwzResult: LPWSTR, cchResult: DWORD, pcchResult: ptr DWORD, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CombineUrl(self, pwzBaseUrl, pwzRelativeUrl, dwCombineFlags, pwzResult, cchResult, pcchResult, dwReserved)
-proc CompareUrl*(self: ptr IInternetProtocolInfo, pwzUrl1: LPCWSTR, pwzUrl2: LPCWSTR, dwCompareFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CompareUrl(self, pwzUrl1, pwzUrl2, dwCompareFlags)
-proc QueryInfo*(self: ptr IInternetProtocolInfo, pwzUrl: LPCWSTR, OueryOption: QUERYOPTION, dwQueryFlags: DWORD, pBuffer: LPVOID, cbBuffer: DWORD, pcbBuf: ptr DWORD, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryInfo(self, pwzUrl, OueryOption, dwQueryFlags, pBuffer, cbBuffer, pcbBuf, dwReserved)
-proc GetWindow*(self: ptr IInternetSecurityMgrSite, phwnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWindow(self, phwnd)
-proc EnableModeless*(self: ptr IInternetSecurityMgrSite, fEnable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnableModeless(self, fEnable)
-proc SetSecuritySite*(self: ptr IInternetSecurityManager, pSite: ptr IInternetSecurityMgrSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSecuritySite(self, pSite)
-proc GetSecuritySite*(self: ptr IInternetSecurityManager, ppSite: ptr ptr IInternetSecurityMgrSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSecuritySite(self, ppSite)
-proc MapUrlToZone*(self: ptr IInternetSecurityManager, pwszUrl: LPCWSTR, pdwZone: ptr DWORD, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MapUrlToZone(self, pwszUrl, pdwZone, dwFlags)
-proc GetSecurityId*(self: ptr IInternetSecurityManager, pwszUrl: LPCWSTR, pbSecurityId: ptr BYTE, pcbSecurityId: ptr DWORD, dwReserved: DWORD_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSecurityId(self, pwszUrl, pbSecurityId, pcbSecurityId, dwReserved)
-proc ProcessUrlAction*(self: ptr IInternetSecurityManager, pwszUrl: LPCWSTR, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, pContext: ptr BYTE, cbContext: DWORD, dwFlags: DWORD, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ProcessUrlAction(self, pwszUrl, dwAction, pPolicy, cbPolicy, pContext, cbContext, dwFlags, dwReserved)
-proc QueryCustomPolicy*(self: ptr IInternetSecurityManager, pwszUrl: LPCWSTR, guidKey: REFGUID, ppPolicy: ptr ptr BYTE, pcbPolicy: ptr DWORD, pContext: ptr BYTE, cbContext: DWORD, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryCustomPolicy(self, pwszUrl, guidKey, ppPolicy, pcbPolicy, pContext, cbContext, dwReserved)
-proc SetZoneMapping*(self: ptr IInternetSecurityManager, dwZone: DWORD, lpszPattern: LPCWSTR, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetZoneMapping(self, dwZone, lpszPattern, dwFlags)
-proc GetZoneMappings*(self: ptr IInternetSecurityManager, dwZone: DWORD, ppenumString: ptr ptr IEnumString, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetZoneMappings(self, dwZone, ppenumString, dwFlags)
-proc ProcessUrlActionEx*(self: ptr IInternetSecurityManagerEx, pwszUrl: LPCWSTR, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, pContext: ptr BYTE, cbContext: DWORD, dwFlags: DWORD, dwReserved: DWORD, pdwOutFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ProcessUrlActionEx(self, pwszUrl, dwAction, pPolicy, cbPolicy, pContext, cbContext, dwFlags, dwReserved, pdwOutFlags)
-proc MapUrlToZoneEx2*(self: ptr IInternetSecurityManagerEx2, pUri: ptr IUri, pdwZone: ptr DWORD, dwFlags: DWORD, ppwszMappedUrl: ptr LPWSTR, pdwOutFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MapUrlToZoneEx2(self, pUri, pdwZone, dwFlags, ppwszMappedUrl, pdwOutFlags)
-proc ProcessUrlActionEx2*(self: ptr IInternetSecurityManagerEx2, pUri: ptr IUri, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, pContext: ptr BYTE, cbContext: DWORD, dwFlags: DWORD, dwReserved: DWORD_PTR, pdwOutFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ProcessUrlActionEx2(self, pUri, dwAction, pPolicy, cbPolicy, pContext, cbContext, dwFlags, dwReserved, pdwOutFlags)
-proc GetSecurityIdEx2*(self: ptr IInternetSecurityManagerEx2, pUri: ptr IUri, pbSecurityId: ptr BYTE, pcbSecurityId: ptr DWORD, dwReserved: DWORD_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSecurityIdEx2(self, pUri, pbSecurityId, pcbSecurityId, dwReserved)
-proc QueryCustomPolicyEx2*(self: ptr IInternetSecurityManagerEx2, pUri: ptr IUri, guidKey: REFGUID, ppPolicy: ptr ptr BYTE, pcbPolicy: ptr DWORD, pContext: ptr BYTE, cbContext: DWORD, dwReserved: DWORD_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryCustomPolicyEx2(self, pUri, guidKey, ppPolicy, pcbPolicy, pContext, cbContext, dwReserved)
-proc GetId*(self: ptr IZoneIdentifier, pdwZone: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetId(self, pdwZone)
-proc SetId*(self: ptr IZoneIdentifier, dwZone: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetId(self, dwZone)
-proc Remove*(self: ptr IZoneIdentifier): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Remove(self)
-proc GetSecurityId*(self: ptr IInternetHostSecurityManager, pbSecurityId: ptr BYTE, pcbSecurityId: ptr DWORD, dwReserved: DWORD_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSecurityId(self, pbSecurityId, pcbSecurityId, dwReserved)
-proc ProcessUrlAction*(self: ptr IInternetHostSecurityManager, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, pContext: ptr BYTE, cbContext: DWORD, dwFlags: DWORD, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ProcessUrlAction(self, dwAction, pPolicy, cbPolicy, pContext, cbContext, dwFlags, dwReserved)
-proc QueryCustomPolicy*(self: ptr IInternetHostSecurityManager, guidKey: REFGUID, ppPolicy: ptr ptr BYTE, pcbPolicy: ptr DWORD, pContext: ptr BYTE, cbContext: DWORD, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryCustomPolicy(self, guidKey, ppPolicy, pcbPolicy, pContext, cbContext, dwReserved)
-proc GetZoneAttributes*(self: ptr IInternetZoneManager, dwZone: DWORD, pZoneAttributes: ptr ZONEATTRIBUTES): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetZoneAttributes(self, dwZone, pZoneAttributes)
-proc SetZoneAttributes*(self: ptr IInternetZoneManager, dwZone: DWORD, pZoneAttributes: ptr ZONEATTRIBUTES): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetZoneAttributes(self, dwZone, pZoneAttributes)
-proc GetZoneCustomPolicy*(self: ptr IInternetZoneManager, dwZone: DWORD, guidKey: REFGUID, ppPolicy: ptr ptr BYTE, pcbPolicy: ptr DWORD, urlZoneReg: URLZONEREG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetZoneCustomPolicy(self, dwZone, guidKey, ppPolicy, pcbPolicy, urlZoneReg)
-proc SetZoneCustomPolicy*(self: ptr IInternetZoneManager, dwZone: DWORD, guidKey: REFGUID, pPolicy: ptr BYTE, cbPolicy: DWORD, urlZoneReg: URLZONEREG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetZoneCustomPolicy(self, dwZone, guidKey, pPolicy, cbPolicy, urlZoneReg)
-proc GetZoneActionPolicy*(self: ptr IInternetZoneManager, dwZone: DWORD, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, urlZoneReg: URLZONEREG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetZoneActionPolicy(self, dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg)
-proc SetZoneActionPolicy*(self: ptr IInternetZoneManager, dwZone: DWORD, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, urlZoneReg: URLZONEREG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetZoneActionPolicy(self, dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg)
-proc PromptAction*(self: ptr IInternetZoneManager, dwAction: DWORD, hwndParent: HWND, pwszUrl: LPCWSTR, pwszText: LPCWSTR, dwPromptFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PromptAction(self, dwAction, hwndParent, pwszUrl, pwszText, dwPromptFlags)
-proc LogAction*(self: ptr IInternetZoneManager, dwAction: DWORD, pwszUrl: LPCWSTR, pwszText: LPCWSTR, dwLogFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LogAction(self, dwAction, pwszUrl, pwszText, dwLogFlags)
-proc CreateZoneEnumerator*(self: ptr IInternetZoneManager, pdwEnum: ptr DWORD, pdwCount: ptr DWORD, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateZoneEnumerator(self, pdwEnum, pdwCount, dwFlags)
-proc GetZoneAt*(self: ptr IInternetZoneManager, dwEnum: DWORD, dwIndex: DWORD, pdwZone: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetZoneAt(self, dwEnum, dwIndex, pdwZone)
-proc DestroyZoneEnumerator*(self: ptr IInternetZoneManager, dwEnum: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DestroyZoneEnumerator(self, dwEnum)
-proc CopyTemplatePoliciesToZone*(self: ptr IInternetZoneManager, dwTemplate: DWORD, dwZone: DWORD, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyTemplatePoliciesToZone(self, dwTemplate, dwZone, dwReserved)
-proc GetZoneActionPolicyEx*(self: ptr IInternetZoneManagerEx, dwZone: DWORD, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, urlZoneReg: URLZONEREG, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetZoneActionPolicyEx(self, dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg, dwFlags)
-proc SetZoneActionPolicyEx*(self: ptr IInternetZoneManagerEx, dwZone: DWORD, dwAction: DWORD, pPolicy: ptr BYTE, cbPolicy: DWORD, urlZoneReg: URLZONEREG, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetZoneActionPolicyEx(self, dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg, dwFlags)
-proc GetZoneAttributesEx*(self: ptr IInternetZoneManagerEx2, dwZone: DWORD, pZoneAttributes: ptr ZONEATTRIBUTES, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetZoneAttributesEx(self, dwZone, pZoneAttributes, dwFlags)
-proc GetZoneSecurityState*(self: ptr IInternetZoneManagerEx2, dwZoneIndex: DWORD, fRespectPolicy: WINBOOL, pdwState: LPDWORD, pfPolicyEncountered: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetZoneSecurityState(self, dwZoneIndex, fRespectPolicy, pdwState, pfPolicyEncountered)
-proc GetIESecurityState*(self: ptr IInternetZoneManagerEx2, fRespectPolicy: WINBOOL, pdwState: LPDWORD, pfPolicyEncountered: ptr WINBOOL, fNoCache: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIESecurityState(self, fRespectPolicy, pdwState, pfPolicyEncountered, fNoCache)
-proc FixUnsecureSettings*(self: ptr IInternetZoneManagerEx2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FixUnsecureSettings(self)
-proc ProcessSoftDist*(self: ptr ISoftDistExt, szCDFURL: LPCWSTR, pSoftDistElement: ptr IXMLElement, lpsdi: LPSOFTDISTINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ProcessSoftDist(self, szCDFURL, pSoftDistElement, lpsdi)
-proc GetFirstCodeBase*(self: ptr ISoftDistExt, szCodeBase: ptr LPWSTR, dwMaxSize: LPDWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFirstCodeBase(self, szCodeBase, dwMaxSize)
-proc GetNextCodeBase*(self: ptr ISoftDistExt, szCodeBase: ptr LPWSTR, dwMaxSize: LPDWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNextCodeBase(self, szCodeBase, dwMaxSize)
-proc AsyncInstallDistributionUnit*(self: ptr ISoftDistExt, pbc: ptr IBindCtx, pvReserved: LPVOID, flags: DWORD, lpcbh: LPCODEBASEHOLD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AsyncInstallDistributionUnit(self, pbc, pvReserved, flags, lpcbh)
-proc GetCatalogFile*(self: ptr ICatalogFileInfo, ppszCatalogFile: ptr LPSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCatalogFile(self, ppszCatalogFile)
-proc GetJavaTrust*(self: ptr ICatalogFileInfo, ppJavaTrust: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetJavaTrust(self, ppJavaTrust)
-proc DoEncode*(self: ptr IDataFilter, dwFlags: DWORD, lInBufferSize: LONG, pbInBuffer: ptr BYTE, lOutBufferSize: LONG, pbOutBuffer: ptr BYTE, lInBytesAvailable: LONG, plInBytesRead: ptr LONG, plOutBytesWritten: ptr LONG, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoEncode(self, dwFlags, lInBufferSize, pbInBuffer, lOutBufferSize, pbOutBuffer, lInBytesAvailable, plInBytesRead, plOutBytesWritten, dwReserved)
-proc DoDecode*(self: ptr IDataFilter, dwFlags: DWORD, lInBufferSize: LONG, pbInBuffer: ptr BYTE, lOutBufferSize: LONG, pbOutBuffer: ptr BYTE, lInBytesAvailable: LONG, plInBytesRead: ptr LONG, plOutBytesWritten: ptr LONG, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoDecode(self, dwFlags, lInBufferSize, pbInBuffer, lOutBufferSize, pbOutBuffer, lInBytesAvailable, plInBytesRead, plOutBytesWritten, dwReserved)
-proc SetEncodingLevel*(self: ptr IDataFilter, dwEncLevel: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetEncodingLevel(self, dwEncLevel)
-proc FindBestFilter*(self: ptr IEncodingFilterFactory, pwzCodeIn: LPCWSTR, pwzCodeOut: LPCWSTR, info: DATAINFO, ppDF: ptr ptr IDataFilter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindBestFilter(self, pwzCodeIn, pwzCodeOut, info, ppDF)
-proc GetDefaultFilter*(self: ptr IEncodingFilterFactory, pwzCodeIn: LPCWSTR, pwzCodeOut: LPCWSTR, ppDF: ptr ptr IDataFilter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultFilter(self, pwzCodeIn, pwzCodeOut, ppDF)
-proc GetWrapperCode*(self: ptr IWrappedProtocol, pnCode: ptr LONG, dwReserved: DWORD_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWrapperCode(self, pnCode, dwReserved)
-proc GetBindHandle*(self: ptr IGetBindHandle, enumRequestedHandle: BINDHANDLETYPES, pRetHandle: ptr HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBindHandle(self, enumRequestedHandle, pRetHandle)
-proc Redirect*(self: ptr IBindCallbackRedirect, lpcUrl: LPCWSTR, vbCancel: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Redirect(self, lpcUrl, vbCancel)
-proc ReadMultiple*(self: ptr IPropertyStorage, cpspec: ULONG, rgpspec: ptr PROPSPEC, rgpropvar: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReadMultiple(self, cpspec, rgpspec, rgpropvar)
-proc WriteMultiple*(self: ptr IPropertyStorage, cpspec: ULONG, rgpspec: ptr PROPSPEC, rgpropvar: ptr PROPVARIANT, propidNameFirst: PROPID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WriteMultiple(self, cpspec, rgpspec, rgpropvar, propidNameFirst)
-proc DeleteMultiple*(self: ptr IPropertyStorage, cpspec: ULONG, rgpspec: ptr PROPSPEC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteMultiple(self, cpspec, rgpspec)
-proc ReadPropertyNames*(self: ptr IPropertyStorage, cpropid: ULONG, rgpropid: ptr PROPID, rglpwstrName: ptr LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReadPropertyNames(self, cpropid, rgpropid, rglpwstrName)
-proc WritePropertyNames*(self: ptr IPropertyStorage, cpropid: ULONG, rgpropid: ptr PROPID, rglpwstrName: ptr LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WritePropertyNames(self, cpropid, rgpropid, rglpwstrName)
-proc DeletePropertyNames*(self: ptr IPropertyStorage, cpropid: ULONG, rgpropid: ptr PROPID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeletePropertyNames(self, cpropid, rgpropid)
-proc Commit*(self: ptr IPropertyStorage, grfCommitFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Commit(self, grfCommitFlags)
-proc Revert*(self: ptr IPropertyStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Revert(self)
-proc Enum*(self: ptr IPropertyStorage, ppenum: ptr ptr IEnumSTATPROPSTG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Enum(self, ppenum)
-proc SetTimes*(self: ptr IPropertyStorage, pctime: ptr FILETIME, patime: ptr FILETIME, pmtime: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTimes(self, pctime, patime, pmtime)
-proc SetClass*(self: ptr IPropertyStorage, clsid: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetClass(self, clsid)
-proc Stat*(self: ptr IPropertyStorage, pstatpsstg: ptr STATPROPSETSTG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Stat(self, pstatpsstg)
-proc Create*(self: ptr IPropertySetStorage, rfmtid: REFFMTID, pclsid: ptr CLSID, grfFlags: DWORD, grfMode: DWORD, ppprstg: ptr ptr IPropertyStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Create(self, rfmtid, pclsid, grfFlags, grfMode, ppprstg)
-proc Open*(self: ptr IPropertySetStorage, rfmtid: REFFMTID, grfMode: DWORD, ppprstg: ptr ptr IPropertyStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Open(self, rfmtid, grfMode, ppprstg)
-proc mDelete*(self: ptr IPropertySetStorage, rfmtid: REFFMTID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Delete(self, rfmtid)
-proc Enum*(self: ptr IPropertySetStorage, ppenum: ptr ptr IEnumSTATPROPSETSTG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Enum(self, ppenum)
-proc Next*(self: ptr IEnumSTATPROPSTG, celt: ULONG, rgelt: ptr STATPROPSTG, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumSTATPROPSTG, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumSTATPROPSTG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumSTATPROPSTG, ppenum: ptr ptr IEnumSTATPROPSTG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc Next*(self: ptr IEnumSTATPROPSETSTG, celt: ULONG, rgelt: ptr STATPROPSETSTG, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumSTATPROPSETSTG, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumSTATPROPSETSTG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumSTATPROPSETSTG, ppenum: ptr ptr IEnumSTATPROPSETSTG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc Next*(self: ptr IEnumConnections, cConnections: ULONG, rgcd: LPCONNECTDATA, pcFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, cConnections, rgcd, pcFetched)
-proc Skip*(self: ptr IEnumConnections, cConnections: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, cConnections)
-proc Reset*(self: ptr IEnumConnections): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumConnections, ppEnum: ptr ptr IEnumConnections): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppEnum)
-proc GetConnectionInterface*(self: ptr IConnectionPoint, pIID: ptr IID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConnectionInterface(self, pIID)
-proc GetConnectionPointContainer*(self: ptr IConnectionPoint, ppCPC: ptr ptr IConnectionPointContainer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConnectionPointContainer(self, ppCPC)
-proc Advise*(self: ptr IConnectionPoint, pUnkSink: ptr IUnknown, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, pUnkSink, pdwCookie)
-proc Unadvise*(self: ptr IConnectionPoint, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwCookie)
-proc EnumConnections*(self: ptr IConnectionPoint, ppEnum: ptr ptr IEnumConnections): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumConnections(self, ppEnum)
-proc Next*(self: ptr IEnumConnectionPoints, cConnections: ULONG, ppCP: ptr LPCONNECTIONPOINT, pcFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, cConnections, ppCP, pcFetched)
-proc Skip*(self: ptr IEnumConnectionPoints, cConnections: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, cConnections)
-proc Reset*(self: ptr IEnumConnectionPoints): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumConnectionPoints, ppEnum: ptr ptr IEnumConnectionPoints): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppEnum)
-proc EnumConnectionPoints*(self: ptr IConnectionPointContainer, ppEnum: ptr ptr IEnumConnectionPoints): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumConnectionPoints(self, ppEnum)
-proc FindConnectionPoint*(self: ptr IConnectionPointContainer, riid: REFIID, ppCP: ptr ptr IConnectionPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindConnectionPoint(self, riid, ppCP)
-proc GetLicInfo*(self: ptr IClassFactory2, pLicInfo: ptr LICINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLicInfo(self, pLicInfo)
-proc RequestLicKey*(self: ptr IClassFactory2, dwReserved: DWORD, pBstrKey: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestLicKey(self, dwReserved, pBstrKey)
-proc CreateInstanceLic*(self: ptr IClassFactory2, pUnkOuter: ptr IUnknown, pUnkReserved: ptr IUnknown, riid: REFIID, bstrKey: BSTR, ppvObj: ptr PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstanceLic(self, pUnkOuter, pUnkReserved, riid, bstrKey, ppvObj)
-proc GetClassInfo*(self: ptr IProvideClassInfo, ppTI: ptr ptr ITypeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClassInfo(self, ppTI)
-proc GetGUID*(self: ptr IProvideClassInfo2, dwGuidKind: DWORD, pGUID: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetGUID(self, dwGuidKind, pGUID)
-proc GetMultiTypeInfoCount*(self: ptr IProvideMultipleClassInfo, pcti: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMultiTypeInfoCount(self, pcti)
-proc GetInfoOfIndex*(self: ptr IProvideMultipleClassInfo, iti: ULONG, dwFlags: DWORD, pptiCoClass: ptr ptr ITypeInfo, pdwTIFlags: ptr DWORD, pcdispidReserved: ptr ULONG, piidPrimary: ptr IID, piidSource: ptr IID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInfoOfIndex(self, iti, dwFlags, pptiCoClass, pdwTIFlags, pcdispidReserved, piidPrimary, piidSource)
-proc GetControlInfo*(self: ptr IOleControl, pCI: ptr CONTROLINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetControlInfo(self, pCI)
-proc OnMnemonic*(self: ptr IOleControl, pMsg: ptr MSG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnMnemonic(self, pMsg)
-proc OnAmbientPropertyChange*(self: ptr IOleControl, dispID: DISPID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnAmbientPropertyChange(self, dispID)
-proc FreezeEvents*(self: ptr IOleControl, bFreeze: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FreezeEvents(self, bFreeze)
-proc OnControlInfoChanged*(self: ptr IOleControlSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnControlInfoChanged(self)
-proc LockInPlaceActive*(self: ptr IOleControlSite, fLock: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LockInPlaceActive(self, fLock)
-proc GetExtendedControl*(self: ptr IOleControlSite, ppDisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetExtendedControl(self, ppDisp)
-proc TransformCoords*(self: ptr IOleControlSite, pPtlHimetric: ptr POINTL, pPtfContainer: ptr POINTF, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TransformCoords(self, pPtlHimetric, pPtfContainer, dwFlags)
-proc TranslateAccelerator*(self: ptr IOleControlSite, pMsg: ptr MSG, grfModifiers: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAccelerator(self, pMsg, grfModifiers)
-proc OnFocus*(self: ptr IOleControlSite, fGotFocus: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnFocus(self, fGotFocus)
-proc ShowPropertyFrame*(self: ptr IOleControlSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowPropertyFrame(self)
-proc SetPageSite*(self: ptr IPropertyPage, pPageSite: ptr IPropertyPageSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPageSite(self, pPageSite)
-proc Activate*(self: ptr IPropertyPage, hWndParent: HWND, pRect: LPCRECT, bModal: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Activate(self, hWndParent, pRect, bModal)
-proc Deactivate*(self: ptr IPropertyPage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Deactivate(self)
-proc GetPageInfo*(self: ptr IPropertyPage, pPageInfo: ptr PROPPAGEINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPageInfo(self, pPageInfo)
-proc SetObjects*(self: ptr IPropertyPage, cObjects: ULONG, ppUnk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetObjects(self, cObjects, ppUnk)
-proc Show*(self: ptr IPropertyPage, nCmdShow: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Show(self, nCmdShow)
-proc Move*(self: ptr IPropertyPage, pRect: LPCRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Move(self, pRect)
-proc IsPageDirty*(self: ptr IPropertyPage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsPageDirty(self)
-proc Apply*(self: ptr IPropertyPage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Apply(self)
-proc Help*(self: ptr IPropertyPage, pszHelpDir: LPCOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Help(self, pszHelpDir)
-proc TranslateAccelerator*(self: ptr IPropertyPage, pMsg: ptr MSG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAccelerator(self, pMsg)
-proc EditProperty*(self: ptr IPropertyPage2, dispID: DISPID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EditProperty(self, dispID)
-proc OnStatusChange*(self: ptr IPropertyPageSite, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnStatusChange(self, dwFlags)
-proc GetLocaleID*(self: ptr IPropertyPageSite, pLocaleID: ptr LCID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLocaleID(self, pLocaleID)
-proc GetPageContainer*(self: ptr IPropertyPageSite, ppUnk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPageContainer(self, ppUnk)
-proc TranslateAccelerator*(self: ptr IPropertyPageSite, pMsg: ptr MSG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAccelerator(self, pMsg)
-proc OnChanged*(self: ptr IPropertyNotifySink, dispID: DISPID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnChanged(self, dispID)
-proc OnRequestEdit*(self: ptr IPropertyNotifySink, dispID: DISPID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnRequestEdit(self, dispID)
-proc GetPages*(self: ptr ISpecifyPropertyPages, pPages: ptr CAUUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPages(self, pPages)
-proc IsDirty*(self: ptr IPersistMemory): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDirty(self)
-proc Load*(self: ptr IPersistMemory, pMem: LPVOID, cbSize: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load(self, pMem, cbSize)
-proc Save*(self: ptr IPersistMemory, pMem: LPVOID, fClearDirty: WINBOOL, cbSize: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Save(self, pMem, fClearDirty, cbSize)
-proc GetSizeMax*(self: ptr IPersistMemory, pCbSize: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSizeMax(self, pCbSize)
-proc InitNew*(self: ptr IPersistMemory): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitNew(self)
-proc IsDirty*(self: ptr IPersistStreamInit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDirty(self)
-proc Load*(self: ptr IPersistStreamInit, pStm: LPSTREAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load(self, pStm)
-proc Save*(self: ptr IPersistStreamInit, pStm: LPSTREAM, fClearDirty: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Save(self, pStm, fClearDirty)
-proc GetSizeMax*(self: ptr IPersistStreamInit, pCbSize: ptr ULARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSizeMax(self, pCbSize)
-proc InitNew*(self: ptr IPersistStreamInit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitNew(self)
-proc InitNew*(self: ptr IPersistPropertyBag): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitNew(self)
-proc Load*(self: ptr IPersistPropertyBag, pPropBag: ptr IPropertyBag, pErrorLog: ptr IErrorLog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load(self, pPropBag, pErrorLog)
-proc Save*(self: ptr IPersistPropertyBag, pPropBag: ptr IPropertyBag, fClearDirty: WINBOOL, fSaveAllProperties: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Save(self, pPropBag, fClearDirty, fSaveAllProperties)
-proc PreMessageFilter*(self: ptr ISimpleFrameSite, hWnd: HWND, msg: UINT, wp: WPARAM, lp: LPARAM, plResult: ptr LRESULT, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreMessageFilter(self, hWnd, msg, wp, lp, plResult, pdwCookie)
-proc PostMessageFilter*(self: ptr ISimpleFrameSite, hWnd: HWND, msg: UINT, wp: WPARAM, lp: LPARAM, plResult: ptr LRESULT, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostMessageFilter(self, hWnd, msg, wp, lp, plResult, dwCookie)
-proc get_Name*(self: ptr IFont, pName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Name(self, pName)
-proc put_Name*(self: ptr IFont, name: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Name(self, name)
-proc get_Size*(self: ptr IFont, pSize: ptr CY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Size(self, pSize)
-proc put_Size*(self: ptr IFont, size: CY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Size(self, size)
-proc get_Bold*(self: ptr IFont, pBold: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Bold(self, pBold)
-proc put_Bold*(self: ptr IFont, bold: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Bold(self, bold)
-proc get_Italic*(self: ptr IFont, pItalic: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Italic(self, pItalic)
-proc put_Italic*(self: ptr IFont, italic: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Italic(self, italic)
-proc get_Underline*(self: ptr IFont, pUnderline: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Underline(self, pUnderline)
-proc put_Underline*(self: ptr IFont, underline: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Underline(self, underline)
-proc get_Strikethrough*(self: ptr IFont, pStrikethrough: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Strikethrough(self, pStrikethrough)
-proc put_Strikethrough*(self: ptr IFont, strikethrough: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Strikethrough(self, strikethrough)
-proc get_Weight*(self: ptr IFont, pWeight: ptr SHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Weight(self, pWeight)
-proc put_Weight*(self: ptr IFont, weight: SHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Weight(self, weight)
-proc get_Charset*(self: ptr IFont, pCharset: ptr SHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Charset(self, pCharset)
-proc put_Charset*(self: ptr IFont, charset: SHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Charset(self, charset)
-proc get_hFont*(self: ptr IFont, phFont: ptr HFONT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hFont(self, phFont)
-proc Clone*(self: ptr IFont, ppFont: ptr ptr IFont): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppFont)
-proc IsEqual*(self: ptr IFont, pFontOther: ptr IFont): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsEqual(self, pFontOther)
-proc SetRatio*(self: ptr IFont, cyLogical: LONG, cyHimetric: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetRatio(self, cyLogical, cyHimetric)
-proc QueryTextMetrics*(self: ptr IFont, pTM: ptr TEXTMETRICOLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryTextMetrics(self, pTM)
-proc AddRefHfont*(self: ptr IFont, hFont: HFONT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddRefHfont(self, hFont)
-proc ReleaseHfont*(self: ptr IFont, hFont: HFONT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseHfont(self, hFont)
-proc SetHdc*(self: ptr IFont, hDC: HDC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHdc(self, hDC)
-proc get_Handle*(self: ptr IPicture, pHandle: ptr OLE_HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Handle(self, pHandle)
-proc get_hPal*(self: ptr IPicture, phPal: ptr OLE_HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hPal(self, phPal)
-proc get_Type*(self: ptr IPicture, pType: ptr SHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Type(self, pType)
-proc get_Width*(self: ptr IPicture, pWidth: ptr OLE_XSIZE_HIMETRIC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Width(self, pWidth)
-proc get_Height*(self: ptr IPicture, pHeight: ptr OLE_YSIZE_HIMETRIC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Height(self, pHeight)
-proc Render*(self: ptr IPicture, hDC: HDC, x: LONG, y: LONG, cx: LONG, cy: LONG, xSrc: OLE_XPOS_HIMETRIC, ySrc: OLE_YPOS_HIMETRIC, cxSrc: OLE_XSIZE_HIMETRIC, cySrc: OLE_YSIZE_HIMETRIC, pRcWBounds: LPCRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Render(self, hDC, x, y, cx, cy, xSrc, ySrc, cxSrc, cySrc, pRcWBounds)
-proc set_hPal*(self: ptr IPicture, hPal: OLE_HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.set_hPal(self, hPal)
-proc get_CurDC*(self: ptr IPicture, phDC: ptr HDC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurDC(self, phDC)
-proc SelectPicture*(self: ptr IPicture, hDCIn: HDC, phDCOut: ptr HDC, phBmpOut: ptr OLE_HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SelectPicture(self, hDCIn, phDCOut, phBmpOut)
-proc get_KeepOriginalFormat*(self: ptr IPicture, pKeep: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_KeepOriginalFormat(self, pKeep)
-proc put_KeepOriginalFormat*(self: ptr IPicture, keep: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_KeepOriginalFormat(self, keep)
-proc PictureChanged*(self: ptr IPicture): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PictureChanged(self)
-proc SaveAsFile*(self: ptr IPicture, pStream: LPSTREAM, fSaveMemCopy: WINBOOL, pCbSize: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SaveAsFile(self, pStream, fSaveMemCopy, pCbSize)
-proc get_Attributes*(self: ptr IPicture, pDwAttr: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Attributes(self, pDwAttr)
-proc get_Handle*(self: ptr IPicture2, pHandle: ptr HHANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Handle(self, pHandle)
-proc get_hPal*(self: ptr IPicture2, phPal: ptr HHANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hPal(self, phPal)
-proc get_Type*(self: ptr IPicture2, pType: ptr SHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Type(self, pType)
-proc get_Width*(self: ptr IPicture2, pWidth: ptr OLE_XSIZE_HIMETRIC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Width(self, pWidth)
-proc get_Height*(self: ptr IPicture2, pHeight: ptr OLE_YSIZE_HIMETRIC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Height(self, pHeight)
-proc Render*(self: ptr IPicture2, hDC: HDC, x: LONG, y: LONG, cx: LONG, cy: LONG, xSrc: OLE_XPOS_HIMETRIC, ySrc: OLE_YPOS_HIMETRIC, cxSrc: OLE_XSIZE_HIMETRIC, cySrc: OLE_YSIZE_HIMETRIC, pRcWBounds: LPCRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Render(self, hDC, x, y, cx, cy, xSrc, ySrc, cxSrc, cySrc, pRcWBounds)
-proc set_hPal*(self: ptr IPicture2, hPal: HHANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.set_hPal(self, hPal)
-proc get_CurDC*(self: ptr IPicture2, phDC: ptr HDC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurDC(self, phDC)
-proc SelectPicture*(self: ptr IPicture2, hDCIn: HDC, phDCOut: ptr HDC, phBmpOut: ptr HHANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SelectPicture(self, hDCIn, phDCOut, phBmpOut)
-proc get_KeepOriginalFormat*(self: ptr IPicture2, pKeep: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_KeepOriginalFormat(self, pKeep)
-proc put_KeepOriginalFormat*(self: ptr IPicture2, keep: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_KeepOriginalFormat(self, keep)
-proc PictureChanged*(self: ptr IPicture2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PictureChanged(self)
-proc SaveAsFile*(self: ptr IPicture2, pStream: LPSTREAM, fSaveMemCopy: WINBOOL, pCbSize: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SaveAsFile(self, pStream, fSaveMemCopy, pCbSize)
-proc get_Attributes*(self: ptr IPicture2, pDwAttr: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Attributes(self, pDwAttr)
-proc OnWindowMessage*(self: ptr IOleInPlaceObjectWindowless, msg: UINT, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnWindowMessage(self, msg, wParam, lParam, plResult)
-proc GetDropTarget*(self: ptr IOleInPlaceObjectWindowless, ppDropTarget: ptr ptr IDropTarget): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDropTarget(self, ppDropTarget)
-proc OnInPlaceActivateEx*(self: ptr IOleInPlaceSiteEx, pfNoRedraw: ptr WINBOOL, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnInPlaceActivateEx(self, pfNoRedraw, dwFlags)
-proc OnInPlaceDeactivateEx*(self: ptr IOleInPlaceSiteEx, fNoRedraw: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnInPlaceDeactivateEx(self, fNoRedraw)
-proc RequestUIActivate*(self: ptr IOleInPlaceSiteEx): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestUIActivate(self)
-proc CanWindowlessActivate*(self: ptr IOleInPlaceSiteWindowless): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CanWindowlessActivate(self)
-proc GetCapture*(self: ptr IOleInPlaceSiteWindowless): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCapture(self)
-proc SetCapture*(self: ptr IOleInPlaceSiteWindowless, fCapture: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCapture(self, fCapture)
-proc GetFocus*(self: ptr IOleInPlaceSiteWindowless): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFocus(self)
-proc SetFocus*(self: ptr IOleInPlaceSiteWindowless, fFocus: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFocus(self, fFocus)
-proc GetDC*(self: ptr IOleInPlaceSiteWindowless, pRect: LPCRECT, grfFlags: DWORD, phDC: ptr HDC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDC(self, pRect, grfFlags, phDC)
-proc ReleaseDC*(self: ptr IOleInPlaceSiteWindowless, hDC: HDC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseDC(self, hDC)
-proc InvalidateRect*(self: ptr IOleInPlaceSiteWindowless, pRect: LPCRECT, fErase: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvalidateRect(self, pRect, fErase)
-proc InvalidateRgn*(self: ptr IOleInPlaceSiteWindowless, hRGN: HRGN, fErase: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvalidateRgn(self, hRGN, fErase)
-proc ScrollRect*(self: ptr IOleInPlaceSiteWindowless, dx: INT, dy: INT, pRectScroll: LPCRECT, pRectClip: LPCRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ScrollRect(self, dx, dy, pRectScroll, pRectClip)
-proc AdjustRect*(self: ptr IOleInPlaceSiteWindowless, prc: LPRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AdjustRect(self, prc)
-proc OnDefWindowMessage*(self: ptr IOleInPlaceSiteWindowless, msg: UINT, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDefWindowMessage(self, msg, wParam, lParam, plResult)
-proc GetRect*(self: ptr IViewObjectEx, dwAspect: DWORD, pRect: LPRECTL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRect(self, dwAspect, pRect)
-proc GetViewStatus*(self: ptr IViewObjectEx, pdwStatus: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetViewStatus(self, pdwStatus)
-proc QueryHitPoint*(self: ptr IViewObjectEx, dwAspect: DWORD, pRectBounds: LPCRECT, ptlLoc: POINT, lCloseHint: LONG, pHitResult: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryHitPoint(self, dwAspect, pRectBounds, ptlLoc, lCloseHint, pHitResult)
-proc QueryHitRect*(self: ptr IViewObjectEx, dwAspect: DWORD, pRectBounds: LPCRECT, pRectLoc: LPCRECT, lCloseHint: LONG, pHitResult: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryHitRect(self, dwAspect, pRectBounds, pRectLoc, lCloseHint, pHitResult)
-proc GetNaturalExtent*(self: ptr IViewObjectEx, dwAspect: DWORD, lindex: LONG, ptd: ptr DVTARGETDEVICE, hicTargetDev: HDC, pExtentInfo: ptr DVEXTENTINFO, pSizel: LPSIZEL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNaturalExtent(self, dwAspect, lindex, ptd, hicTargetDev, pExtentInfo, pSizel)
-proc Do*(self: ptr IOleUndoUnit, pUndoManager: ptr IOleUndoManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Do(self, pUndoManager)
-proc GetDescription*(self: ptr IOleUndoUnit, pBstr: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDescription(self, pBstr)
-proc GetUnitType*(self: ptr IOleUndoUnit, pClsid: ptr CLSID, plID: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUnitType(self, pClsid, plID)
-proc OnNextAdd*(self: ptr IOleUndoUnit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnNextAdd(self)
-proc Open*(self: ptr IOleParentUndoUnit, pPUU: ptr IOleParentUndoUnit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Open(self, pPUU)
-proc Close*(self: ptr IOleParentUndoUnit, pPUU: ptr IOleParentUndoUnit, fCommit: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Close(self, pPUU, fCommit)
-proc Add*(self: ptr IOleParentUndoUnit, pUU: ptr IOleUndoUnit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Add(self, pUU)
-proc FindUnit*(self: ptr IOleParentUndoUnit, pUU: ptr IOleUndoUnit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindUnit(self, pUU)
-proc GetParentState*(self: ptr IOleParentUndoUnit, pdwState: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetParentState(self, pdwState)
-proc Next*(self: ptr IEnumOleUndoUnits, cElt: ULONG, rgElt: ptr ptr IOleUndoUnit, pcEltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, cElt, rgElt, pcEltFetched)
-proc Skip*(self: ptr IEnumOleUndoUnits, cElt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, cElt)
-proc Reset*(self: ptr IEnumOleUndoUnits): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumOleUndoUnits, ppEnum: ptr ptr IEnumOleUndoUnits): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppEnum)
-proc Open*(self: ptr IOleUndoManager, pPUU: ptr IOleParentUndoUnit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Open(self, pPUU)
-proc Close*(self: ptr IOleUndoManager, pPUU: ptr IOleParentUndoUnit, fCommit: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Close(self, pPUU, fCommit)
-proc Add*(self: ptr IOleUndoManager, pUU: ptr IOleUndoUnit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Add(self, pUU)
-proc GetOpenParentState*(self: ptr IOleUndoManager, pdwState: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOpenParentState(self, pdwState)
-proc DiscardFrom*(self: ptr IOleUndoManager, pUU: ptr IOleUndoUnit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DiscardFrom(self, pUU)
-proc UndoTo*(self: ptr IOleUndoManager, pUU: ptr IOleUndoUnit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UndoTo(self, pUU)
-proc RedoTo*(self: ptr IOleUndoManager, pUU: ptr IOleUndoUnit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RedoTo(self, pUU)
-proc EnumUndoable*(self: ptr IOleUndoManager, ppEnum: ptr ptr IEnumOleUndoUnits): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumUndoable(self, ppEnum)
-proc EnumRedoable*(self: ptr IOleUndoManager, ppEnum: ptr ptr IEnumOleUndoUnits): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumRedoable(self, ppEnum)
-proc GetLastUndoDescription*(self: ptr IOleUndoManager, pBstr: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLastUndoDescription(self, pBstr)
-proc GetLastRedoDescription*(self: ptr IOleUndoManager, pBstr: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLastRedoDescription(self, pBstr)
-proc Enable*(self: ptr IOleUndoManager, fEnable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Enable(self, fEnable)
-proc GetActivationPolicy*(self: ptr IPointerInactive, pdwPolicy: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetActivationPolicy(self, pdwPolicy)
-proc OnInactiveMouseMove*(self: ptr IPointerInactive, pRectBounds: LPCRECT, x: LONG, y: LONG, grfKeyState: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnInactiveMouseMove(self, pRectBounds, x, y, grfKeyState)
-proc OnInactiveSetCursor*(self: ptr IPointerInactive, pRectBounds: LPCRECT, x: LONG, y: LONG, dwMouseMsg: DWORD, fSetAlways: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnInactiveSetCursor(self, pRectBounds, x, y, dwMouseMsg, fSetAlways)
-proc SetSite*(self: ptr IObjectWithSite, pUnkSite: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSite(self, pUnkSite)
-proc GetSite*(self: ptr IObjectWithSite, riid: REFIID, ppvSite: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSite(self, riid, ppvSite)
-proc GetDisplayString*(self: ptr IPerPropertyBrowsing, dispID: DISPID, pBstr: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDisplayString(self, dispID, pBstr)
-proc MapPropertyToPage*(self: ptr IPerPropertyBrowsing, dispID: DISPID, pClsid: ptr CLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MapPropertyToPage(self, dispID, pClsid)
-proc GetPredefinedStrings*(self: ptr IPerPropertyBrowsing, dispID: DISPID, pCaStringsOut: ptr CALPOLESTR, pCaCookiesOut: ptr CADWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPredefinedStrings(self, dispID, pCaStringsOut, pCaCookiesOut)
-proc GetPredefinedValue*(self: ptr IPerPropertyBrowsing, dispID: DISPID, dwCookie: DWORD, pVarOut: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPredefinedValue(self, dispID, dwCookie, pVarOut)
-proc Read*(self: ptr IPropertyBag2, cProperties: ULONG, pPropBag: ptr PROPBAG2, pErrLog: ptr IErrorLog, pvarValue: ptr VARIANT, phrError: ptr HRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Read(self, cProperties, pPropBag, pErrLog, pvarValue, phrError)
-proc Write*(self: ptr IPropertyBag2, cProperties: ULONG, pPropBag: ptr PROPBAG2, pvarValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Write(self, cProperties, pPropBag, pvarValue)
-proc CountProperties*(self: ptr IPropertyBag2, pcProperties: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CountProperties(self, pcProperties)
-proc GetPropertyInfo*(self: ptr IPropertyBag2, iProperty: ULONG, cProperties: ULONG, pPropBag: ptr PROPBAG2, pcProperties: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyInfo(self, iProperty, cProperties, pPropBag, pcProperties)
-proc LoadObject*(self: ptr IPropertyBag2, pstrName: LPCOLESTR, dwHint: DWORD, pUnkObject: ptr IUnknown, pErrLog: ptr IErrorLog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LoadObject(self, pstrName, dwHint, pUnkObject, pErrLog)
-proc InitNew*(self: ptr IPersistPropertyBag2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitNew(self)
-proc Load*(self: ptr IPersistPropertyBag2, pPropBag: ptr IPropertyBag2, pErrLog: ptr IErrorLog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load(self, pPropBag, pErrLog)
-proc Save*(self: ptr IPersistPropertyBag2, pPropBag: ptr IPropertyBag2, fClearDirty: WINBOOL, fSaveAllProperties: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Save(self, pPropBag, fClearDirty, fSaveAllProperties)
-proc IsDirty*(self: ptr IPersistPropertyBag2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDirty(self)
-proc OnViewStatusChange*(self: ptr IAdviseSinkEx, dwViewStatus: DWORD): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnViewStatusChange(self, dwViewStatus)
-proc QuickActivate*(self: ptr IQuickActivate, pQaContainer: ptr QACONTAINER, pQaControl: ptr QACONTROL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QuickActivate(self, pQaContainer, pQaControl)
-proc SetContentExtent*(self: ptr IQuickActivate, pSizel: LPSIZEL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetContentExtent(self, pSizel)
-proc GetContentExtent*(self: ptr IQuickActivate, pSizel: LPSIZEL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetContentExtent(self, pSizel)
-proc Next*(self: ptr IEnumGUID, celt: ULONG, rgelt: ptr GUID, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumGUID, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumGUID, ppenum: ptr ptr IEnumGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc Next*(self: ptr IEnumCATEGORYINFO, celt: ULONG, rgelt: ptr CATEGORYINFO, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumCATEGORYINFO, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumCATEGORYINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumCATEGORYINFO, ppenum: ptr ptr IEnumCATEGORYINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc RegisterCategories*(self: ptr ICatRegister, cCategories: ULONG, rgCategoryInfo: ptr CATEGORYINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterCategories(self, cCategories, rgCategoryInfo)
-proc UnRegisterCategories*(self: ptr ICatRegister, cCategories: ULONG, rgcatid: ptr CATID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnRegisterCategories(self, cCategories, rgcatid)
-proc RegisterClassImplCategories*(self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterClassImplCategories(self, rclsid, cCategories, rgcatid)
-proc UnRegisterClassImplCategories*(self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnRegisterClassImplCategories(self, rclsid, cCategories, rgcatid)
-proc RegisterClassReqCategories*(self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterClassReqCategories(self, rclsid, cCategories, rgcatid)
-proc UnRegisterClassReqCategories*(self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnRegisterClassReqCategories(self, rclsid, cCategories, rgcatid)
-proc EnumCategories*(self: ptr ICatInformation, lcid: LCID, ppenumCategoryInfo: ptr ptr IEnumCATEGORYINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumCategories(self, lcid, ppenumCategoryInfo)
-proc GetCategoryDesc*(self: ptr ICatInformation, rcatid: REFCATID, lcid: LCID, pszDesc: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCategoryDesc(self, rcatid, lcid, pszDesc)
-proc EnumClassesOfCategories*(self: ptr ICatInformation, cImplemented: ULONG, rgcatidImpl: ptr CATID, cRequired: ULONG, rgcatidReq: ptr CATID, ppenumClsid: ptr ptr IEnumGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumClassesOfCategories(self, cImplemented, rgcatidImpl, cRequired, rgcatidReq, ppenumClsid)
-proc IsClassOfCategories*(self: ptr ICatInformation, rclsid: REFCLSID, cImplemented: ULONG, rgcatidImpl: ptr CATID, cRequired: ULONG, rgcatidReq: ptr CATID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsClassOfCategories(self, rclsid, cImplemented, rgcatidImpl, cRequired, rgcatidReq)
-proc EnumImplCategoriesOfClass*(self: ptr ICatInformation, rclsid: REFCLSID, ppenumCatid: ptr ptr IEnumGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumImplCategoriesOfClass(self, rclsid, ppenumCatid)
-proc EnumReqCategoriesOfClass*(self: ptr ICatInformation, rclsid: REFCLSID, ppenumCatid: ptr ptr IEnumGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumReqCategoriesOfClass(self, rclsid, ppenumCatid)
-proc CreateView*(self: ptr IOleDocument, pIPSite: ptr IOleInPlaceSite, pstm: ptr IStream, dwReserved: DWORD, ppView: ptr ptr IOleDocumentView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateView(self, pIPSite, pstm, dwReserved, ppView)
-proc GetDocMiscStatus*(self: ptr IOleDocument, pdwStatus: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDocMiscStatus(self, pdwStatus)
-proc EnumViews*(self: ptr IOleDocument, ppEnum: ptr ptr IEnumOleDocumentViews, ppView: ptr ptr IOleDocumentView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumViews(self, ppEnum, ppView)
-proc ActivateMe*(self: ptr IOleDocumentSite, pViewToActivate: ptr IOleDocumentView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ActivateMe(self, pViewToActivate)
-proc SetInPlaceSite*(self: ptr IOleDocumentView, pIPSite: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetInPlaceSite(self, pIPSite)
-proc GetInPlaceSite*(self: ptr IOleDocumentView, ppIPSite: ptr ptr IOleInPlaceSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInPlaceSite(self, ppIPSite)
-proc GetDocument*(self: ptr IOleDocumentView, ppunk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDocument(self, ppunk)
-proc SetRect*(self: ptr IOleDocumentView, prcView: LPRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetRect(self, prcView)
-proc GetRect*(self: ptr IOleDocumentView, prcView: LPRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRect(self, prcView)
-proc SetRectComplex*(self: ptr IOleDocumentView, prcView: LPRECT, prcHScroll: LPRECT, prcVScroll: LPRECT, prcSizeBox: LPRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetRectComplex(self, prcView, prcHScroll, prcVScroll, prcSizeBox)
-proc Show*(self: ptr IOleDocumentView, fShow: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Show(self, fShow)
-proc UIActivate*(self: ptr IOleDocumentView, fUIActivate: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UIActivate(self, fUIActivate)
-proc Open*(self: ptr IOleDocumentView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Open(self)
-proc CloseView*(self: ptr IOleDocumentView, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CloseView(self, dwReserved)
-proc SaveViewState*(self: ptr IOleDocumentView, pstm: LPSTREAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SaveViewState(self, pstm)
-proc ApplyViewState*(self: ptr IOleDocumentView, pstm: LPSTREAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ApplyViewState(self, pstm)
-proc Clone*(self: ptr IOleDocumentView, pIPSiteNew: ptr IOleInPlaceSite, ppViewNew: ptr ptr IOleDocumentView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, pIPSiteNew, ppViewNew)
-proc Next*(self: ptr IEnumOleDocumentViews, cViews: ULONG, rgpView: ptr ptr IOleDocumentView, pcFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, cViews, rgpView, pcFetched)
-proc Skip*(self: ptr IEnumOleDocumentViews, cViews: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, cViews)
-proc Reset*(self: ptr IEnumOleDocumentViews): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumOleDocumentViews, ppEnum: ptr ptr IEnumOleDocumentViews): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppEnum)
-proc FContinue*(self: ptr IContinueCallback): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FContinue(self)
-proc FContinuePrinting*(self: ptr IContinueCallback, nCntPrinted: LONG, nCurPage: LONG, pwszPrintStatus: ptr uint16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FContinuePrinting(self, nCntPrinted, nCurPage, pwszPrintStatus)
-proc SetInitialPageNum*(self: ptr IPrint, nFirstPage: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetInitialPageNum(self, nFirstPage)
-proc GetPageInfo*(self: ptr IPrint, pnFirstPage: ptr LONG, pcPages: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPageInfo(self, pnFirstPage, pcPages)
-proc Print*(self: ptr IPrint, grfFlags: DWORD, pptd: ptr ptr DVTARGETDEVICE, ppPageSet: ptr ptr PAGESET, pstgmOptions: ptr STGMEDIUM, pcallback: ptr IContinueCallback, nFirstPage: LONG, pcPagesPrinted: ptr LONG, pnLastPage: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Print(self, grfFlags, pptd, ppPageSet, pstgmOptions, pcallback, nFirstPage, pcPagesPrinted, pnLastPage)
-proc QueryStatus*(self: ptr IOleCommandTarget, pguidCmdGroup: ptr GUID, cCmds: ULONG, prgCmds: ptr OLECMD, pCmdText: ptr OLECMDTEXT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryStatus(self, pguidCmdGroup, cCmds, prgCmds, pCmdText)
-proc Exec*(self: ptr IOleCommandTarget, pguidCmdGroup: ptr GUID, nCmdID: DWORD, nCmdexecopt: DWORD, pvaIn: ptr VARIANT, pvaOut: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Exec(self, pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut)
-proc OnZoomPercentChanged*(self: ptr IZoomEvents, ulZoomPercent: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnZoomPercentChanged(self, ulZoomPercent)
-proc AllowFocusChange*(self: ptr IProtectFocus, pfAllow: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AllowFocusChange(self, pfAllow)
-proc CreateMenu*(self: ptr IProtectedModeMenuServices, phMenu: ptr HMENU): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateMenu(self, phMenu)
-proc LoadMenu*(self: ptr IProtectedModeMenuServices, pszModuleName: LPCWSTR, pszMenuName: LPCWSTR, phMenu: ptr HMENU): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LoadMenu(self, pszModuleName, pszMenuName, phMenu)
-proc LoadMenuID*(self: ptr IProtectedModeMenuServices, pszModuleName: LPCWSTR, wResourceID: WORD, phMenu: ptr HMENU): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LoadMenuID(self, pszModuleName, wResourceID, phMenu)
-proc GoBack*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GoBack(self)
-proc GoForward*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GoForward(self)
-proc GoHome*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GoHome(self)
-proc GoSearch*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GoSearch(self)
-proc Navigate*(self: ptr IWebBrowser, URL: BSTR, Flags: ptr VARIANT, TargetFrameName: ptr VARIANT, PostData: ptr VARIANT, Headers: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Navigate(self, URL, Flags, TargetFrameName, PostData, Headers)
-proc Refresh*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Refresh(self)
-proc Refresh2*(self: ptr IWebBrowser, Level: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Refresh2(self, Level)
-proc Stop*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Stop(self)
-proc get_Application*(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Application(self, ppDisp)
-proc get_Parent*(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Parent(self, ppDisp)
-proc get_Container*(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Container(self, ppDisp)
-proc get_Document*(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Document(self, ppDisp)
-proc get_TopLevelContainer*(self: ptr IWebBrowser, pBool: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TopLevelContainer(self, pBool)
-proc get_Type*(self: ptr IWebBrowser, Type: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Type(self, Type)
-proc get_Left*(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Left(self, pl)
-proc put_Left*(self: ptr IWebBrowser, Left: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Left(self, Left)
-proc get_Top*(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Top(self, pl)
-proc put_Top*(self: ptr IWebBrowser, Top: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Top(self, Top)
-proc get_Width*(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Width(self, pl)
-proc put_Width*(self: ptr IWebBrowser, Width: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Width(self, Width)
-proc get_Height*(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Height(self, pl)
-proc put_Height*(self: ptr IWebBrowser, Height: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Height(self, Height)
-proc get_LocationName*(self: ptr IWebBrowser, LocationName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_LocationName(self, LocationName)
-proc get_LocationURL*(self: ptr IWebBrowser, LocationURL: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_LocationURL(self, LocationURL)
-proc get_Busy*(self: ptr IWebBrowser, pBool: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Busy(self, pBool)
-proc Quit*(self: ptr IWebBrowserApp): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Quit(self)
-proc ClientToWindow*(self: ptr IWebBrowserApp, pcx: ptr int32, pcy: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClientToWindow(self, pcx, pcy)
-proc PutProperty*(self: ptr IWebBrowserApp, Property: BSTR, vtValue: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PutProperty(self, Property, vtValue)
-proc GetProperty*(self: ptr IWebBrowserApp, Property: BSTR, pvtValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty(self, Property, pvtValue)
-proc get_Name*(self: ptr IWebBrowserApp, Name: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Name(self, Name)
-proc get_HWND*(self: ptr IWebBrowserApp, pHWND: ptr SHANDLE_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HWND(self, pHWND)
-proc get_FullName*(self: ptr IWebBrowserApp, FullName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_FullName(self, FullName)
-proc get_Path*(self: ptr IWebBrowserApp, Path: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Path(self, Path)
-proc get_Visible*(self: ptr IWebBrowserApp, pBool: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Visible(self, pBool)
-proc put_Visible*(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Visible(self, Value)
-proc get_StatusBar*(self: ptr IWebBrowserApp, pBool: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_StatusBar(self, pBool)
-proc put_StatusBar*(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_StatusBar(self, Value)
-proc get_StatusText*(self: ptr IWebBrowserApp, StatusText: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_StatusText(self, StatusText)
-proc put_StatusText*(self: ptr IWebBrowserApp, StatusText: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_StatusText(self, StatusText)
-proc get_ToolBar*(self: ptr IWebBrowserApp, Value: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ToolBar(self, Value)
-proc put_ToolBar*(self: ptr IWebBrowserApp, Value: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ToolBar(self, Value)
-proc get_MenuBar*(self: ptr IWebBrowserApp, Value: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_MenuBar(self, Value)
-proc put_MenuBar*(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_MenuBar(self, Value)
-proc get_FullScreen*(self: ptr IWebBrowserApp, pbFullScreen: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_FullScreen(self, pbFullScreen)
-proc put_FullScreen*(self: ptr IWebBrowserApp, bFullScreen: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_FullScreen(self, bFullScreen)
-proc Navigate2*(self: ptr IWebBrowser2, URL: ptr VARIANT, Flags: ptr VARIANT, TargetFrameName: ptr VARIANT, PostData: ptr VARIANT, Headers: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Navigate2(self, URL, Flags, TargetFrameName, PostData, Headers)
-proc QueryStatusWB*(self: ptr IWebBrowser2, cmdID: OLECMDID, pcmdf: ptr OLECMDF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryStatusWB(self, cmdID, pcmdf)
-proc ExecWB*(self: ptr IWebBrowser2, cmdID: OLECMDID, cmdexecopt: OLECMDEXECOPT, pvaIn: ptr VARIANT, pvaOut: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExecWB(self, cmdID, cmdexecopt, pvaIn, pvaOut)
-proc ShowBrowserBar*(self: ptr IWebBrowser2, pvaClsid: ptr VARIANT, pvarShow: ptr VARIANT, pvarSize: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowBrowserBar(self, pvaClsid, pvarShow, pvarSize)
-proc get_ReadyState*(self: ptr IWebBrowser2, plReadyState: ptr READYSTATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ReadyState(self, plReadyState)
-proc get_Offline*(self: ptr IWebBrowser2, pbOffline: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Offline(self, pbOffline)
-proc put_Offline*(self: ptr IWebBrowser2, bOffline: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Offline(self, bOffline)
-proc get_Silent*(self: ptr IWebBrowser2, pbSilent: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Silent(self, pbSilent)
-proc put_Silent*(self: ptr IWebBrowser2, bSilent: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Silent(self, bSilent)
-proc get_RegisterAsBrowser*(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_RegisterAsBrowser(self, pbRegister)
-proc put_RegisterAsBrowser*(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_RegisterAsBrowser(self, bRegister)
-proc get_RegisterAsDropTarget*(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_RegisterAsDropTarget(self, pbRegister)
-proc put_RegisterAsDropTarget*(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_RegisterAsDropTarget(self, bRegister)
-proc get_TheaterMode*(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TheaterMode(self, pbRegister)
-proc put_TheaterMode*(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_TheaterMode(self, bRegister)
-proc get_AddressBar*(self: ptr IWebBrowser2, Value: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_AddressBar(self, Value)
-proc put_AddressBar*(self: ptr IWebBrowser2, Value: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_AddressBar(self, Value)
-proc get_Resizable*(self: ptr IWebBrowser2, Value: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Resizable(self, Value)
-proc put_Resizable*(self: ptr IWebBrowser2, Value: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Resizable(self, Value)
-proc get_Count*(self: ptr IShellWindows, Count: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Count(self, Count)
-proc Item*(self: ptr IShellWindows, index: VARIANT, Folder: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Item(self, index, Folder)
-proc NewEnum*(self: ptr IShellWindows, ppunk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NewEnum(self, ppunk)
-proc Register*(self: ptr IShellWindows, pid: ptr IDispatch, hWnd: LONG, swClass: int32, plCookie: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Register(self, pid, hWnd, swClass, plCookie)
-proc RegisterPending*(self: ptr IShellWindows, lThreadId: LONG, pvarloc: ptr VARIANT, pvarlocRoot: ptr VARIANT, swClass: int32, plCookie: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterPending(self, lThreadId, pvarloc, pvarlocRoot, swClass, plCookie)
-proc Revoke*(self: ptr IShellWindows, lCookie: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Revoke(self, lCookie)
-proc OnNavigate*(self: ptr IShellWindows, lCookie: LONG, pvarLoc: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnNavigate(self, lCookie, pvarLoc)
-proc OnActivated*(self: ptr IShellWindows, lCookie: LONG, fActive: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnActivated(self, lCookie, fActive)
-proc FindWindowSW*(self: ptr IShellWindows, pvarLoc: ptr VARIANT, pvarLocRoot: ptr VARIANT, swClass: int32, phwnd: ptr LONG, swfwOptions: int32, ppdispOut: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindWindowSW(self, pvarLoc, pvarLocRoot, swClass, phwnd, swfwOptions, ppdispOut)
-proc OnCreated*(self: ptr IShellWindows, lCookie: LONG, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnCreated(self, lCookie, punk)
-proc ProcessAttachDetach*(self: ptr IShellWindows, fAttach: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ProcessAttachDetach(self, fAttach)
-proc ResetFirstBootMode*(self: ptr IShellUIHelper): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResetFirstBootMode(self)
-proc ResetSafeMode*(self: ptr IShellUIHelper): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResetSafeMode(self)
-proc RefreshOfflineDesktop*(self: ptr IShellUIHelper): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RefreshOfflineDesktop(self)
-proc AddFavorite*(self: ptr IShellUIHelper, URL: BSTR, Title: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddFavorite(self, URL, Title)
-proc AddChannel*(self: ptr IShellUIHelper, URL: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddChannel(self, URL)
-proc AddDesktopComponent*(self: ptr IShellUIHelper, URL: BSTR, Type: BSTR, Left: ptr VARIANT, Top: ptr VARIANT, Width: ptr VARIANT, Height: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddDesktopComponent(self, URL, Type, Left, Top, Width, Height)
-proc IsSubscribed*(self: ptr IShellUIHelper, URL: BSTR, pBool: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsSubscribed(self, URL, pBool)
-proc NavigateAndFind*(self: ptr IShellUIHelper, URL: BSTR, strQuery: BSTR, varTargetFrame: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NavigateAndFind(self, URL, strQuery, varTargetFrame)
-proc ImportExportFavorites*(self: ptr IShellUIHelper, fImport: VARIANT_BOOL, strImpExpPath: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ImportExportFavorites(self, fImport, strImpExpPath)
-proc AutoCompleteSaveForm*(self: ptr IShellUIHelper, Form: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AutoCompleteSaveForm(self, Form)
-proc AutoScan*(self: ptr IShellUIHelper, strSearch: BSTR, strFailureUrl: BSTR, pvarTargetFrame: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AutoScan(self, strSearch, strFailureUrl, pvarTargetFrame)
-proc AutoCompleteAttach*(self: ptr IShellUIHelper, Reserved: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AutoCompleteAttach(self, Reserved)
-proc ShowBrowserUI*(self: ptr IShellUIHelper, bstrName: BSTR, pvarIn: ptr VARIANT, pvarOut: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowBrowserUI(self, bstrName, pvarIn, pvarOut)
-proc AddSearchProvider*(self: ptr IShellUIHelper2, URL: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddSearchProvider(self, URL)
-proc RunOnceShown*(self: ptr IShellUIHelper2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RunOnceShown(self)
-proc SkipRunOnce*(self: ptr IShellUIHelper2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SkipRunOnce(self)
-proc CustomizeSettings*(self: ptr IShellUIHelper2, fSQM: VARIANT_BOOL, fPhishing: VARIANT_BOOL, bstrLocale: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CustomizeSettings(self, fSQM, fPhishing, bstrLocale)
-proc SqmEnabled*(self: ptr IShellUIHelper2, pfEnabled: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SqmEnabled(self, pfEnabled)
-proc PhishingEnabled*(self: ptr IShellUIHelper2, pfEnabled: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PhishingEnabled(self, pfEnabled)
-proc BrandImageUri*(self: ptr IShellUIHelper2, pbstrUri: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BrandImageUri(self, pbstrUri)
-proc SkipTabsWelcome*(self: ptr IShellUIHelper2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SkipTabsWelcome(self)
-proc DiagnoseConnection*(self: ptr IShellUIHelper2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DiagnoseConnection(self)
-proc CustomizeClearType*(self: ptr IShellUIHelper2, fSet: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CustomizeClearType(self, fSet)
-proc IsSearchProviderInstalled*(self: ptr IShellUIHelper2, URL: BSTR, pdwResult: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsSearchProviderInstalled(self, URL, pdwResult)
-proc IsSearchMigrated*(self: ptr IShellUIHelper2, pfMigrated: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsSearchMigrated(self, pfMigrated)
-proc DefaultSearchProvider*(self: ptr IShellUIHelper2, pbstrName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DefaultSearchProvider(self, pbstrName)
-proc RunOnceRequiredSettingsComplete*(self: ptr IShellUIHelper2, fComplete: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RunOnceRequiredSettingsComplete(self, fComplete)
-proc RunOnceHasShown*(self: ptr IShellUIHelper2, pfShown: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RunOnceHasShown(self, pfShown)
-proc SearchGuideUrl*(self: ptr IShellUIHelper2, pbstrUrl: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SearchGuideUrl(self, pbstrUrl)
-proc MoveSelectionUp*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveSelectionUp(self)
-proc MoveSelectionDown*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveSelectionDown(self)
-proc ResetSort*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResetSort(self)
-proc NewFolder*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NewFolder(self)
-proc mSynchronize*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Synchronize(self)
-proc Import*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Import(self)
-proc Export*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Export(self)
-proc InvokeContextMenuCommand*(self: ptr IShellFavoritesNameSpace, strCommand: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvokeContextMenuCommand(self, strCommand)
-proc MoveSelectionTo*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveSelectionTo(self)
-proc get_SubscriptionsEnabled*(self: ptr IShellFavoritesNameSpace, pBool: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_SubscriptionsEnabled(self, pBool)
-proc CreateSubscriptionForSelection*(self: ptr IShellFavoritesNameSpace, pBool: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateSubscriptionForSelection(self, pBool)
-proc DeleteSubscriptionForSelection*(self: ptr IShellFavoritesNameSpace, pBool: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteSubscriptionForSelection(self, pBool)
-proc SetRoot*(self: ptr IShellFavoritesNameSpace, bstrFullPath: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetRoot(self, bstrFullPath)
-proc get_EnumOptions*(self: ptr IShellNameSpace, pgrfEnumFlags: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_EnumOptions(self, pgrfEnumFlags)
-proc put_EnumOptions*(self: ptr IShellNameSpace, pgrfEnumFlags: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_EnumOptions(self, pgrfEnumFlags)
-proc get_SelectedItem*(self: ptr IShellNameSpace, pItem: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_SelectedItem(self, pItem)
-proc put_SelectedItem*(self: ptr IShellNameSpace, pItem: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_SelectedItem(self, pItem)
-proc get_Root*(self: ptr IShellNameSpace, pvar: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Root(self, pvar)
-proc put_Root*(self: ptr IShellNameSpace, pvar: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Root(self, pvar)
-proc get_Depth*(self: ptr IShellNameSpace, piDepth: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Depth(self, piDepth)
-proc put_Depth*(self: ptr IShellNameSpace, piDepth: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Depth(self, piDepth)
-proc get_Mode*(self: ptr IShellNameSpace, puMode: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Mode(self, puMode)
-proc put_Mode*(self: ptr IShellNameSpace, puMode: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Mode(self, puMode)
-proc get_Flags*(self: ptr IShellNameSpace, pdwFlags: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Flags(self, pdwFlags)
-proc put_Flags*(self: ptr IShellNameSpace, pdwFlags: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Flags(self, pdwFlags)
-proc put_TVFlags*(self: ptr IShellNameSpace, dwFlags: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_TVFlags(self, dwFlags)
-proc get_TVFlags*(self: ptr IShellNameSpace, dwFlags: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TVFlags(self, dwFlags)
-proc get_Columns*(self: ptr IShellNameSpace, bstrColumns: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Columns(self, bstrColumns)
-proc put_Columns*(self: ptr IShellNameSpace, bstrColumns: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Columns(self, bstrColumns)
-proc get_CountViewTypes*(self: ptr IShellNameSpace, piTypes: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CountViewTypes(self, piTypes)
-proc SetViewType*(self: ptr IShellNameSpace, iType: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetViewType(self, iType)
-proc SelectedItems*(self: ptr IShellNameSpace, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SelectedItems(self, ppid)
-proc Expand*(self: ptr IShellNameSpace, `var`: VARIANT, iDepth: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Expand(self, `var`, iDepth)
-proc UnselectAll*(self: ptr IShellNameSpace): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnselectAll(self)
-proc advanceError*(self: ptr IScriptErrorList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.advanceError(self)
-proc retreatError*(self: ptr IScriptErrorList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.retreatError(self)
-proc canAdvanceError*(self: ptr IScriptErrorList, pfCanAdvance: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.canAdvanceError(self, pfCanAdvance)
-proc canRetreatError*(self: ptr IScriptErrorList, pfCanRetreat: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.canRetreatError(self, pfCanRetreat)
-proc getErrorLine*(self: ptr IScriptErrorList, plLine: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getErrorLine(self, plLine)
-proc getErrorChar*(self: ptr IScriptErrorList, plChar: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getErrorChar(self, plChar)
-proc getErrorCode*(self: ptr IScriptErrorList, plCode: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getErrorCode(self, plCode)
-proc getErrorMsg*(self: ptr IScriptErrorList, pstr: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getErrorMsg(self, pstr)
-proc getErrorUrl*(self: ptr IScriptErrorList, pstr: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getErrorUrl(self, pstr)
-proc getAlwaysShowLockState*(self: ptr IScriptErrorList, pfAlwaysShowLocked: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAlwaysShowLockState(self, pfAlwaysShowLocked)
-proc getDetailsPaneOpen*(self: ptr IScriptErrorList, pfDetailsPaneOpen: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getDetailsPaneOpen(self, pfDetailsPaneOpen)
-proc setDetailsPaneOpen*(self: ptr IScriptErrorList, fDetailsPaneOpen: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setDetailsPaneOpen(self, fDetailsPaneOpen)
-proc getPerErrorDisplay*(self: ptr IScriptErrorList, pfPerErrorDisplay: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getPerErrorDisplay(self, pfPerErrorDisplay)
-proc setPerErrorDisplay*(self: ptr IScriptErrorList, fPerErrorDisplay: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setPerErrorDisplay(self, fPerErrorDisplay)
-proc get_Title*(self: ptr ISearch, pbstrTitle: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Title(self, pbstrTitle)
-proc get_Id*(self: ptr ISearch, pbstrId: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Id(self, pbstrId)
-proc get_URL*(self: ptr ISearch, pbstrUrl: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_URL(self, pbstrUrl)
-proc get_Count*(self: ptr ISearches, plCount: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Count(self, plCount)
-proc get_Default*(self: ptr ISearches, pbstrDefault: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Default(self, pbstrDefault)
-proc Item*(self: ptr ISearches, index: VARIANT, ppid: ptr ptr ISearch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Item(self, index, ppid)
-proc NewEnum*(self: ptr ISearches, ppunk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NewEnum(self, ppunk)
-proc AddNextMenuItem*(self: ptr ISearchAssistantOC, bstrText: BSTR, idItem: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddNextMenuItem(self, bstrText, idItem)
-proc SetDefaultSearchUrl*(self: ptr ISearchAssistantOC, bstrUrl: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDefaultSearchUrl(self, bstrUrl)
-proc NavigateToDefaultSearch*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NavigateToDefaultSearch(self)
-proc IsRestricted*(self: ptr ISearchAssistantOC, bstrGuid: BSTR, pVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsRestricted(self, bstrGuid, pVal)
-proc get_ShellFeaturesEnabled*(self: ptr ISearchAssistantOC, pVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ShellFeaturesEnabled(self, pVal)
-proc get_SearchAssistantDefault*(self: ptr ISearchAssistantOC, pVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_SearchAssistantDefault(self, pVal)
-proc get_Searches*(self: ptr ISearchAssistantOC, ppid: ptr ptr ISearches): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Searches(self, ppid)
-proc get_InWebFolder*(self: ptr ISearchAssistantOC, pVal: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_InWebFolder(self, pVal)
-proc PutProperty*(self: ptr ISearchAssistantOC, bPerLocale: VARIANT_BOOL, bstrName: BSTR, bstrValue: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PutProperty(self, bPerLocale, bstrName, bstrValue)
-proc GetProperty*(self: ptr ISearchAssistantOC, bPerLocale: VARIANT_BOOL, bstrName: BSTR, pbstrValue: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty(self, bPerLocale, bstrName, pbstrValue)
-proc put_EventHandled*(self: ptr ISearchAssistantOC, rhs: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_EventHandled(self, rhs)
-proc ResetNextMenu*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResetNextMenu(self)
-proc FindOnWeb*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindOnWeb(self)
-proc FindFilesOrFolders*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindFilesOrFolders(self)
-proc FindComputer*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindComputer(self)
-proc FindPrinter*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindPrinter(self)
-proc FindPeople*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindPeople(self)
-proc GetSearchAssistantURL*(self: ptr ISearchAssistantOC, bSubstitute: VARIANT_BOOL, bCustomize: VARIANT_BOOL, pbstrValue: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSearchAssistantURL(self, bSubstitute, bCustomize, pbstrValue)
-proc NotifySearchSettingsChanged*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NotifySearchSettingsChanged(self)
-proc put_ASProvider*(self: ptr ISearchAssistantOC, pProvider: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ASProvider(self, pProvider)
-proc get_ASProvider*(self: ptr ISearchAssistantOC, pProvider: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ASProvider(self, pProvider)
-proc put_ASSetting*(self: ptr ISearchAssistantOC, pSetting: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ASSetting(self, pSetting)
-proc get_ASSetting*(self: ptr ISearchAssistantOC, pSetting: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ASSetting(self, pSetting)
-proc NETDetectNextNavigate*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NETDetectNextNavigate(self)
-proc PutFindText*(self: ptr ISearchAssistantOC, FindText: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PutFindText(self, FindText)
-proc get_Version*(self: ptr ISearchAssistantOC, pVersion: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Version(self, pVersion)
-proc EncodeString*(self: ptr ISearchAssistantOC, bstrValue: BSTR, bstrCharSet: BSTR, bUseUTF8: VARIANT_BOOL, pbstrResult: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EncodeString(self, bstrValue, bstrCharSet, bUseUTF8, pbstrResult)
-proc get_ShowFindPrinter*(self: ptr ISearchAssistantOC2, pbShowFindPrinter: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ShowFindPrinter(self, pbShowFindPrinter)
-proc get_SearchCompanionAvailable*(self: ptr ISearchAssistantOC3, pbAvailable: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_SearchCompanionAvailable(self, pbAvailable)
-proc put_UseSearchCompanion*(self: ptr ISearchAssistantOC3, pbUseSC: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_UseSearchCompanion(self, pbUseSC)
-proc get_UseSearchCompanion*(self: ptr ISearchAssistantOC3, pbUseSC: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_UseSearchCompanion(self, pbUseSC)
-proc GetData*(self: ptr IRichChunk, pFirstPos: ptr ULONG, pLength: ptr ULONG, ppsz: ptr LPWSTR, pValue: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetData(self, pFirstPos, pLength, ppsz, pValue)
-proc GetConditionType*(self: ptr ICondition, pNodeType: ptr CONDITION_TYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConditionType(self, pNodeType)
-proc GetSubConditions*(self: ptr ICondition, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSubConditions(self, riid, ppv)
-proc GetComparisonInfo*(self: ptr ICondition, ppszPropertyName: ptr LPWSTR, pcop: ptr CONDITION_OPERATION, ppropvar: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetComparisonInfo(self, ppszPropertyName, pcop, ppropvar)
-proc GetValueType*(self: ptr ICondition, ppszValueTypeName: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetValueType(self, ppszValueTypeName)
-proc GetValueNormalization*(self: ptr ICondition, ppszNormalization: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetValueNormalization(self, ppszNormalization)
-proc GetInputTerms*(self: ptr ICondition, ppPropertyTerm: ptr ptr IRichChunk, ppOperationTerm: ptr ptr IRichChunk, ppValueTerm: ptr ptr IRichChunk): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInputTerms(self, ppPropertyTerm, ppOperationTerm, ppValueTerm)
-proc Clone*(self: ptr ICondition, ppc: ptr ptr ICondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppc)
-proc GetLocale*(self: ptr ICondition2, ppszLocaleName: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLocale(self, ppszLocaleName)
-proc GetLeafConditionInfo*(self: ptr ICondition2, ppropkey: ptr PROPERTYKEY, pcop: ptr CONDITION_OPERATION, ppropvar: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLeafConditionInfo(self, ppropkey, pcop, ppropvar)
-proc Initialize*(self: ptr IInitializeWithFile, pszFilePath: LPCWSTR, grfMode: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pszFilePath, grfMode)
-proc Initialize*(self: ptr IInitializeWithStream, pstream: ptr IStream, grfMode: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pstream, grfMode)
-proc GetCount*(self: ptr IPropertyStore, cProps: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCount(self, cProps)
-proc GetAt*(self: ptr IPropertyStore, iProp: DWORD, pkey: ptr PROPERTYKEY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAt(self, iProp, pkey)
-proc GetValue*(self: ptr IPropertyStore, key: REFPROPERTYKEY, pv: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetValue(self, key, pv)
-proc SetValue*(self: ptr IPropertyStore, key: REFPROPERTYKEY, propvar: REFPROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetValue(self, key, propvar)
-proc Commit*(self: ptr IPropertyStore): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Commit(self)
-proc GetNamedValue*(self: ptr INamedPropertyStore, pszName: LPCWSTR, ppropvar: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNamedValue(self, pszName, ppropvar)
-proc SetNamedValue*(self: ptr INamedPropertyStore, pszName: LPCWSTR, propvar: REFPROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetNamedValue(self, pszName, propvar)
-proc GetNameCount*(self: ptr INamedPropertyStore, pdwCount: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNameCount(self, pdwCount)
-proc GetNameAt*(self: ptr INamedPropertyStore, iProp: DWORD, pbstrName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNameAt(self, iProp, pbstrName)
-proc SetPropertyKey*(self: ptr IObjectWithPropertyKey, key: REFPROPERTYKEY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPropertyKey(self, key)
-proc GetPropertyKey*(self: ptr IObjectWithPropertyKey, pkey: ptr PROPERTYKEY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyKey(self, pkey)
-proc ApplyToPropVariant*(self: ptr IPropertyChange, propvarIn: REFPROPVARIANT, ppropvarOut: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ApplyToPropVariant(self, propvarIn, ppropvarOut)
-proc GetCount*(self: ptr IPropertyChangeArray, pcOperations: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCount(self, pcOperations)
-proc GetAt*(self: ptr IPropertyChangeArray, iIndex: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAt(self, iIndex, riid, ppv)
-proc InsertAt*(self: ptr IPropertyChangeArray, iIndex: UINT, ppropChange: ptr IPropertyChange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InsertAt(self, iIndex, ppropChange)
-proc Append*(self: ptr IPropertyChangeArray, ppropChange: ptr IPropertyChange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Append(self, ppropChange)
-proc AppendOrReplace*(self: ptr IPropertyChangeArray, ppropChange: ptr IPropertyChange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AppendOrReplace(self, ppropChange)
-proc RemoveAt*(self: ptr IPropertyChangeArray, iIndex: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveAt(self, iIndex)
-proc IsKeyInArray*(self: ptr IPropertyChangeArray, key: REFPROPERTYKEY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsKeyInArray(self, key)
-proc IsPropertyWritable*(self: ptr IPropertyStoreCapabilities, key: REFPROPERTYKEY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsPropertyWritable(self, key)
-proc GetState*(self: ptr IPropertyStoreCache, key: REFPROPERTYKEY, pstate: ptr PSC_STATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetState(self, key, pstate)
-proc GetValueAndState*(self: ptr IPropertyStoreCache, key: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT, pstate: ptr PSC_STATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetValueAndState(self, key, ppropvar, pstate)
-proc SetState*(self: ptr IPropertyStoreCache, key: REFPROPERTYKEY, state: PSC_STATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetState(self, key, state)
-proc SetValueAndState*(self: ptr IPropertyStoreCache, key: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT, state: PSC_STATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetValueAndState(self, key, ppropvar, state)
-proc GetEnumType*(self: ptr IPropertyEnumType, penumtype: ptr PROPENUMTYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEnumType(self, penumtype)
-proc GetValue*(self: ptr IPropertyEnumType, ppropvar: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetValue(self, ppropvar)
-proc GetRangeMinValue*(self: ptr IPropertyEnumType, ppropvarMin: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRangeMinValue(self, ppropvarMin)
-proc GetRangeSetValue*(self: ptr IPropertyEnumType, ppropvarSet: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRangeSetValue(self, ppropvarSet)
-proc GetDisplayText*(self: ptr IPropertyEnumType, ppszDisplay: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDisplayText(self, ppszDisplay)
-proc GetImageReference*(self: ptr IPropertyEnumType2, ppszImageRes: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetImageReference(self, ppszImageRes)
-proc GetCount*(self: ptr IPropertyEnumTypeList, pctypes: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCount(self, pctypes)
-proc GetAt*(self: ptr IPropertyEnumTypeList, itype: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAt(self, itype, riid, ppv)
-proc GetConditionAt*(self: ptr IPropertyEnumTypeList, nIndex: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConditionAt(self, nIndex, riid, ppv)
-proc FindMatchingIndex*(self: ptr IPropertyEnumTypeList, propvarCmp: REFPROPVARIANT, pnIndex: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindMatchingIndex(self, propvarCmp, pnIndex)
-proc GetPropertyKey*(self: ptr IPropertyDescription, pkey: ptr PROPERTYKEY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyKey(self, pkey)
-proc GetCanonicalName*(self: ptr IPropertyDescription, ppszName: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCanonicalName(self, ppszName)
-proc GetPropertyType*(self: ptr IPropertyDescription, pvartype: ptr VARTYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyType(self, pvartype)
-proc GetDisplayName*(self: ptr IPropertyDescription, ppszName: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDisplayName(self, ppszName)
-proc GetEditInvitation*(self: ptr IPropertyDescription, ppszInvite: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEditInvitation(self, ppszInvite)
-proc GetTypeFlags*(self: ptr IPropertyDescription, mask: PROPDESC_TYPE_FLAGS, ppdtFlags: ptr PROPDESC_TYPE_FLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeFlags(self, mask, ppdtFlags)
-proc GetViewFlags*(self: ptr IPropertyDescription, ppdvFlags: ptr PROPDESC_VIEW_FLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetViewFlags(self, ppdvFlags)
-proc GetDefaultColumnWidth*(self: ptr IPropertyDescription, pcxChars: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultColumnWidth(self, pcxChars)
-proc GetDisplayType*(self: ptr IPropertyDescription, pdisplaytype: ptr PROPDESC_DISPLAYTYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDisplayType(self, pdisplaytype)
-proc GetColumnState*(self: ptr IPropertyDescription, pcsFlags: ptr SHCOLSTATEF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColumnState(self, pcsFlags)
-proc GetGroupingRange*(self: ptr IPropertyDescription, pgr: ptr PROPDESC_GROUPING_RANGE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetGroupingRange(self, pgr)
-proc GetRelativeDescriptionType*(self: ptr IPropertyDescription, prdt: ptr PROPDESC_RELATIVEDESCRIPTION_TYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRelativeDescriptionType(self, prdt)
-proc GetRelativeDescription*(self: ptr IPropertyDescription, propvar1: REFPROPVARIANT, propvar2: REFPROPVARIANT, ppszDesc1: ptr LPWSTR, ppszDesc2: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRelativeDescription(self, propvar1, propvar2, ppszDesc1, ppszDesc2)
-proc GetSortDescription*(self: ptr IPropertyDescription, psd: ptr PROPDESC_SORTDESCRIPTION): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSortDescription(self, psd)
-proc GetSortDescriptionLabel*(self: ptr IPropertyDescription, fDescending: WINBOOL, ppszDescription: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSortDescriptionLabel(self, fDescending, ppszDescription)
-proc GetAggregationType*(self: ptr IPropertyDescription, paggtype: ptr PROPDESC_AGGREGATION_TYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAggregationType(self, paggtype)
-proc GetConditionType*(self: ptr IPropertyDescription, pcontype: ptr PROPDESC_CONDITION_TYPE, popDefault: ptr CONDITION_OPERATION): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConditionType(self, pcontype, popDefault)
-proc GetEnumTypeList*(self: ptr IPropertyDescription, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEnumTypeList(self, riid, ppv)
-proc CoerceToCanonicalValue*(self: ptr IPropertyDescription, ppropvar: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CoerceToCanonicalValue(self, ppropvar)
-proc FormatForDisplay*(self: ptr IPropertyDescription, propvar: REFPROPVARIANT, pdfFlags: PROPDESC_FORMAT_FLAGS, ppszDisplay: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FormatForDisplay(self, propvar, pdfFlags, ppszDisplay)
-proc IsValueCanonical*(self: ptr IPropertyDescription, propvar: REFPROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsValueCanonical(self, propvar)
-proc GetImageReferenceForValue*(self: ptr IPropertyDescription2, propvar: REFPROPVARIANT, ppszImageRes: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetImageReferenceForValue(self, propvar, ppszImageRes)
-proc GetSortByAlias*(self: ptr IPropertyDescriptionAliasInfo, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSortByAlias(self, riid, ppv)
-proc GetAdditionalSortByAliases*(self: ptr IPropertyDescriptionAliasInfo, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAdditionalSortByAliases(self, riid, ppv)
-proc GetSearchInfoFlags*(self: ptr IPropertyDescriptionSearchInfo, ppdsiFlags: ptr PROPDESC_SEARCHINFO_FLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSearchInfoFlags(self, ppdsiFlags)
-proc GetColumnIndexType*(self: ptr IPropertyDescriptionSearchInfo, ppdciType: ptr PROPDESC_COLUMNINDEX_TYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColumnIndexType(self, ppdciType)
-proc GetProjectionString*(self: ptr IPropertyDescriptionSearchInfo, ppszProjection: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProjectionString(self, ppszProjection)
-proc GetMaxSize*(self: ptr IPropertyDescriptionSearchInfo, pcbMaxSize: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMaxSize(self, pcbMaxSize)
-proc GetRelatedProperty*(self: ptr IPropertyDescriptionRelatedPropertyInfo, pszRelationshipName: LPCWSTR, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRelatedProperty(self, pszRelationshipName, riid, ppv)
-proc GetPropertyDescription*(self: ptr IPropertySystem, propkey: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyDescription(self, propkey, riid, ppv)
-proc GetPropertyDescriptionByName*(self: ptr IPropertySystem, pszCanonicalName: LPCWSTR, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyDescriptionByName(self, pszCanonicalName, riid, ppv)
-proc GetPropertyDescriptionListFromString*(self: ptr IPropertySystem, pszPropList: LPCWSTR, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyDescriptionListFromString(self, pszPropList, riid, ppv)
-proc EnumeratePropertyDescriptions*(self: ptr IPropertySystem, filterOn: PROPDESC_ENUMFILTER, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumeratePropertyDescriptions(self, filterOn, riid, ppv)
-proc FormatForDisplay*(self: ptr IPropertySystem, key: REFPROPERTYKEY, propvar: REFPROPVARIANT, pdff: PROPDESC_FORMAT_FLAGS, pszText: LPWSTR, cchText: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FormatForDisplay(self, key, propvar, pdff, pszText, cchText)
-proc FormatForDisplayAlloc*(self: ptr IPropertySystem, key: REFPROPERTYKEY, propvar: REFPROPVARIANT, pdff: PROPDESC_FORMAT_FLAGS, ppszDisplay: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FormatForDisplayAlloc(self, key, propvar, pdff, ppszDisplay)
-proc RegisterPropertySchema*(self: ptr IPropertySystem, pszPath: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterPropertySchema(self, pszPath)
-proc UnregisterPropertySchema*(self: ptr IPropertySystem, pszPath: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterPropertySchema(self, pszPath)
-proc RefreshPropertySchema*(self: ptr IPropertySystem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RefreshPropertySchema(self)
-proc GetCount*(self: ptr IPropertyDescriptionList, pcElem: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCount(self, pcElem)
-proc GetAt*(self: ptr IPropertyDescriptionList, iElem: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAt(self, iElem, riid, ppv)
-proc GetPropertyStore*(self: ptr IPropertyStoreFactory, flags: GETPROPERTYSTOREFLAGS, pUnkFactory: ptr IUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyStore(self, flags, pUnkFactory, riid, ppv)
-proc GetPropertyStoreForKeys*(self: ptr IPropertyStoreFactory, rgKeys: ptr PROPERTYKEY, cKeys: UINT, flags: GETPROPERTYSTOREFLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyStoreForKeys(self, rgKeys, cKeys, flags, riid, ppv)
-proc GetDelayedPropertyStore*(self: ptr IDelayedPropertyStoreFactory, flags: GETPROPERTYSTOREFLAGS, dwStoreId: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDelayedPropertyStore(self, flags, dwStoreId, riid, ppv)
-proc SetFlags*(self: ptr IPersistSerializedPropStorage, flags: PERSIST_SPROPSTORE_FLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFlags(self, flags)
-proc SetPropertyStorage*(self: ptr IPersistSerializedPropStorage, psps: PCUSERIALIZEDPROPSTORAGE, cb: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPropertyStorage(self, psps, cb)
-proc GetPropertyStorage*(self: ptr IPersistSerializedPropStorage, ppsps: ptr ptr SERIALIZEDPROPSTORAGE, pcb: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyStorage(self, ppsps, pcb)
-proc GetPropertyStorageSize*(self: ptr IPersistSerializedPropStorage2, pcb: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyStorageSize(self, pcb)
-proc GetPropertyStorageBuffer*(self: ptr IPersistSerializedPropStorage2, psps: ptr SERIALIZEDPROPSTORAGE, cb: DWORD, pcbWritten: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyStorageBuffer(self, psps, cb, pcbWritten)
-proc SchemaRefreshed*(self: ptr IPropertySystemChangeNotify): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SchemaRefreshed(self)
-proc CreateObject*(self: ptr ICreateObject, clsid: REFCLSID, pUnkOuter: ptr IUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateObject(self, clsid, pUnkOuter, riid, ppv)
-converter winimConverterAsyncIUnknownToIUnknown*(x: ptr AsyncIUnknown): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIClassFactoryToIUnknown*(x: ptr IClassFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMarshalToIUnknown*(x: ptr IMarshal): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINoMarshalToIUnknown*(x: ptr INoMarshal): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAgileObjectToIUnknown*(x: ptr IAgileObject): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMarshal2ToIMarshal*(x: ptr IMarshal2): ptr IMarshal = cast[ptr IMarshal](x)
-converter winimConverterIMarshal2ToIUnknown*(x: ptr IMarshal2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMallocToIUnknown*(x: ptr IMalloc): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIStdMarshalInfoToIUnknown*(x: ptr IStdMarshalInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExternalConnectionToIUnknown*(x: ptr IExternalConnection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMultiQIToIUnknown*(x: ptr IMultiQI): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterAsyncIMultiQIToIUnknown*(x: ptr AsyncIMultiQI): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternalUnknownToIUnknown*(x: ptr IInternalUnknown): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumUnknownToIUnknown*(x: ptr IEnumUnknown): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumStringToIUnknown*(x: ptr IEnumString): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISequentialStreamToIUnknown*(x: ptr ISequentialStream): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIStreamToISequentialStream*(x: ptr IStream): ptr ISequentialStream = cast[ptr ISequentialStream](x)
-converter winimConverterIStreamToIUnknown*(x: ptr IStream): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRpcChannelBufferToIUnknown*(x: ptr IRpcChannelBuffer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRpcChannelBuffer2ToIRpcChannelBuffer*(x: ptr IRpcChannelBuffer2): ptr IRpcChannelBuffer = cast[ptr IRpcChannelBuffer](x)
-converter winimConverterIRpcChannelBuffer2ToIUnknown*(x: ptr IRpcChannelBuffer2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAsyncRpcChannelBufferToIRpcChannelBuffer2*(x: ptr IAsyncRpcChannelBuffer): ptr IRpcChannelBuffer2 = cast[ptr IRpcChannelBuffer2](x)
-converter winimConverterIAsyncRpcChannelBufferToIRpcChannelBuffer*(x: ptr IAsyncRpcChannelBuffer): ptr IRpcChannelBuffer = cast[ptr IRpcChannelBuffer](x)
-converter winimConverterIAsyncRpcChannelBufferToIUnknown*(x: ptr IAsyncRpcChannelBuffer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRpcChannelBuffer3ToIRpcChannelBuffer2*(x: ptr IRpcChannelBuffer3): ptr IRpcChannelBuffer2 = cast[ptr IRpcChannelBuffer2](x)
-converter winimConverterIRpcChannelBuffer3ToIRpcChannelBuffer*(x: ptr IRpcChannelBuffer3): ptr IRpcChannelBuffer = cast[ptr IRpcChannelBuffer](x)
-converter winimConverterIRpcChannelBuffer3ToIUnknown*(x: ptr IRpcChannelBuffer3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRpcSyntaxNegotiateToIUnknown*(x: ptr IRpcSyntaxNegotiate): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRpcProxyBufferToIUnknown*(x: ptr IRpcProxyBuffer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRpcStubBufferToIUnknown*(x: ptr IRpcStubBuffer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPSFactoryBufferToIUnknown*(x: ptr IPSFactoryBuffer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIChannelHookToIUnknown*(x: ptr IChannelHook): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIClientSecurityToIUnknown*(x: ptr IClientSecurity): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIServerSecurityToIUnknown*(x: ptr IServerSecurity): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRpcOptionsToIUnknown*(x: ptr IRpcOptions): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIGlobalOptionsToIUnknown*(x: ptr IGlobalOptions): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISurrogateToIUnknown*(x: ptr ISurrogate): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIGlobalInterfaceTableToIUnknown*(x: ptr IGlobalInterfaceTable): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISynchronizeToIUnknown*(x: ptr ISynchronize): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISynchronizeHandleToIUnknown*(x: ptr ISynchronizeHandle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISynchronizeEventToISynchronizeHandle*(x: ptr ISynchronizeEvent): ptr ISynchronizeHandle = cast[ptr ISynchronizeHandle](x)
-converter winimConverterISynchronizeEventToIUnknown*(x: ptr ISynchronizeEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISynchronizeContainerToIUnknown*(x: ptr ISynchronizeContainer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISynchronizeMutexToISynchronize*(x: ptr ISynchronizeMutex): ptr ISynchronize = cast[ptr ISynchronize](x)
-converter winimConverterISynchronizeMutexToIUnknown*(x: ptr ISynchronizeMutex): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICancelMethodCallsToIUnknown*(x: ptr ICancelMethodCalls): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAsyncManagerToIUnknown*(x: ptr IAsyncManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICallFactoryToIUnknown*(x: ptr ICallFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRpcHelperToIUnknown*(x: ptr IRpcHelper): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIReleaseMarshalBuffersToIUnknown*(x: ptr IReleaseMarshalBuffers): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWaitMultipleToIUnknown*(x: ptr IWaitMultiple): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAddrTrackingControlToIUnknown*(x: ptr IAddrTrackingControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAddrExclusionControlToIUnknown*(x: ptr IAddrExclusionControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPipeByteToIUnknown*(x: ptr IPipeByte): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPipeLongToIUnknown*(x: ptr IPipeLong): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPipeDoubleToIUnknown*(x: ptr IPipeDouble): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumContextPropsToIUnknown*(x: ptr IEnumContextProps): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIContextToIUnknown*(x: ptr IContext): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIComThreadingInfoToIUnknown*(x: ptr IComThreadingInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIProcessInitControlToIUnknown*(x: ptr IProcessInitControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFastRundownToIUnknown*(x: ptr IFastRundown): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMarshalingStreamToIStream*(x: ptr IMarshalingStream): ptr IStream = cast[ptr IStream](x)
-converter winimConverterIMarshalingStreamToISequentialStream*(x: ptr IMarshalingStream): ptr ISequentialStream = cast[ptr ISequentialStream](x)
-converter winimConverterIMarshalingStreamToIUnknown*(x: ptr IMarshalingStream): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMallocSpyToIUnknown*(x: ptr IMallocSpy): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIBindCtxToIUnknown*(x: ptr IBindCtx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumMonikerToIUnknown*(x: ptr IEnumMoniker): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRunnableObjectToIUnknown*(x: ptr IRunnableObject): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRunningObjectTableToIUnknown*(x: ptr IRunningObjectTable): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistToIUnknown*(x: ptr IPersist): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistStreamToIPersist*(x: ptr IPersistStream): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterIPersistStreamToIUnknown*(x: ptr IPersistStream): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMonikerToIPersistStream*(x: ptr IMoniker): ptr IPersistStream = cast[ptr IPersistStream](x)
-converter winimConverterIMonikerToIPersist*(x: ptr IMoniker): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterIMonikerToIUnknown*(x: ptr IMoniker): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIROTDataToIUnknown*(x: ptr IROTData): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumSTATSTGToIUnknown*(x: ptr IEnumSTATSTG): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIStorageToIUnknown*(x: ptr IStorage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistFileToIPersist*(x: ptr IPersistFile): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterIPersistFileToIUnknown*(x: ptr IPersistFile): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistStorageToIPersist*(x: ptr IPersistStorage): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterIPersistStorageToIUnknown*(x: ptr IPersistStorage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterILockBytesToIUnknown*(x: ptr ILockBytes): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumFORMATETCToIUnknown*(x: ptr IEnumFORMATETC): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumSTATDATAToIUnknown*(x: ptr IEnumSTATDATA): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRootStorageToIUnknown*(x: ptr IRootStorage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAdviseSinkToIUnknown*(x: ptr IAdviseSink): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterAsyncIAdviseSinkToIUnknown*(x: ptr AsyncIAdviseSink): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAdviseSink2ToIAdviseSink*(x: ptr IAdviseSink2): ptr IAdviseSink = cast[ptr IAdviseSink](x)
-converter winimConverterIAdviseSink2ToIUnknown*(x: ptr IAdviseSink2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterAsyncIAdviseSink2ToIAdviseSink*(x: ptr AsyncIAdviseSink2): ptr IAdviseSink = cast[ptr IAdviseSink](x)
-converter winimConverterAsyncIAdviseSink2ToIUnknown*(x: ptr AsyncIAdviseSink2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDataObjectToIUnknown*(x: ptr IDataObject): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDataAdviseHolderToIUnknown*(x: ptr IDataAdviseHolder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMessageFilterToIUnknown*(x: ptr IMessageFilter): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIClassActivatorToIUnknown*(x: ptr IClassActivator): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFillLockBytesToIUnknown*(x: ptr IFillLockBytes): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIProgressNotifyToIUnknown*(x: ptr IProgressNotify): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterILayoutStorageToIUnknown*(x: ptr ILayoutStorage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIBlockingLockToIUnknown*(x: ptr IBlockingLock): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITimeAndNoticeControlToIUnknown*(x: ptr ITimeAndNoticeControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOplockStorageToIUnknown*(x: ptr IOplockStorage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDirectWriterLockToIUnknown*(x: ptr IDirectWriterLock): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUrlMonToIUnknown*(x: ptr IUrlMon): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIForegroundTransferToIUnknown*(x: ptr IForegroundTransfer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIThumbnailExtractorToIUnknown*(x: ptr IThumbnailExtractor): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDummyHICONIncluderToIUnknown*(x: ptr IDummyHICONIncluder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIProcessLockToIUnknown*(x: ptr IProcessLock): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISurrogateServiceToIUnknown*(x: ptr ISurrogateService): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInitializeSpyToIUnknown*(x: ptr IInitializeSpy): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIApartmentShutdownToIUnknown*(x: ptr IApartmentShutdown): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICreateTypeInfoToIUnknown*(x: ptr ICreateTypeInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICreateTypeInfo2ToICreateTypeInfo*(x: ptr ICreateTypeInfo2): ptr ICreateTypeInfo = cast[ptr ICreateTypeInfo](x)
-converter winimConverterICreateTypeInfo2ToIUnknown*(x: ptr ICreateTypeInfo2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICreateTypeLibToIUnknown*(x: ptr ICreateTypeLib): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICreateTypeLib2ToICreateTypeLib*(x: ptr ICreateTypeLib2): ptr ICreateTypeLib = cast[ptr ICreateTypeLib](x)
-converter winimConverterICreateTypeLib2ToIUnknown*(x: ptr ICreateTypeLib2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDispatchToIUnknown*(x: ptr IDispatch): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumVARIANTToIUnknown*(x: ptr IEnumVARIANT): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITypeCompToIUnknown*(x: ptr ITypeComp): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITypeInfoToIUnknown*(x: ptr ITypeInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITypeInfo2ToITypeInfo*(x: ptr ITypeInfo2): ptr ITypeInfo = cast[ptr ITypeInfo](x)
-converter winimConverterITypeInfo2ToIUnknown*(x: ptr ITypeInfo2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITypeLibToIUnknown*(x: ptr ITypeLib): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITypeLib2ToITypeLib*(x: ptr ITypeLib2): ptr ITypeLib = cast[ptr ITypeLib](x)
-converter winimConverterITypeLib2ToIUnknown*(x: ptr ITypeLib2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITypeChangeEventsToIUnknown*(x: ptr ITypeChangeEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIErrorInfoToIUnknown*(x: ptr IErrorInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICreateErrorInfoToIUnknown*(x: ptr ICreateErrorInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISupportErrorInfoToIUnknown*(x: ptr ISupportErrorInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITypeFactoryToIUnknown*(x: ptr ITypeFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITypeMarshalToIUnknown*(x: ptr ITypeMarshal): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRecordInfoToIUnknown*(x: ptr IRecordInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIErrorLogToIUnknown*(x: ptr IErrorLog): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyBagToIUnknown*(x: ptr IPropertyBag): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleAdviseHolderToIUnknown*(x: ptr IOleAdviseHolder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleCacheToIUnknown*(x: ptr IOleCache): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleCache2ToIOleCache*(x: ptr IOleCache2): ptr IOleCache = cast[ptr IOleCache](x)
-converter winimConverterIOleCache2ToIUnknown*(x: ptr IOleCache2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleCacheControlToIUnknown*(x: ptr IOleCacheControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIParseDisplayNameToIUnknown*(x: ptr IParseDisplayName): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleContainerToIParseDisplayName*(x: ptr IOleContainer): ptr IParseDisplayName = cast[ptr IParseDisplayName](x)
-converter winimConverterIOleContainerToIUnknown*(x: ptr IOleContainer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleClientSiteToIUnknown*(x: ptr IOleClientSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleObjectToIUnknown*(x: ptr IOleObject): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleWindowToIUnknown*(x: ptr IOleWindow): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleLinkToIUnknown*(x: ptr IOleLink): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleItemContainerToIOleContainer*(x: ptr IOleItemContainer): ptr IOleContainer = cast[ptr IOleContainer](x)
-converter winimConverterIOleItemContainerToIParseDisplayName*(x: ptr IOleItemContainer): ptr IParseDisplayName = cast[ptr IParseDisplayName](x)
-converter winimConverterIOleItemContainerToIUnknown*(x: ptr IOleItemContainer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleInPlaceUIWindowToIOleWindow*(x: ptr IOleInPlaceUIWindow): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIOleInPlaceUIWindowToIUnknown*(x: ptr IOleInPlaceUIWindow): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleInPlaceActiveObjectToIOleWindow*(x: ptr IOleInPlaceActiveObject): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIOleInPlaceActiveObjectToIUnknown*(x: ptr IOleInPlaceActiveObject): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleInPlaceFrameToIOleInPlaceUIWindow*(x: ptr IOleInPlaceFrame): ptr IOleInPlaceUIWindow = cast[ptr IOleInPlaceUIWindow](x)
-converter winimConverterIOleInPlaceFrameToIOleWindow*(x: ptr IOleInPlaceFrame): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIOleInPlaceFrameToIUnknown*(x: ptr IOleInPlaceFrame): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleInPlaceObjectToIOleWindow*(x: ptr IOleInPlaceObject): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIOleInPlaceObjectToIUnknown*(x: ptr IOleInPlaceObject): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleInPlaceSiteToIOleWindow*(x: ptr IOleInPlaceSite): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIOleInPlaceSiteToIUnknown*(x: ptr IOleInPlaceSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIContinueToIUnknown*(x: ptr IContinue): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIViewObjectToIUnknown*(x: ptr IViewObject): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIViewObject2ToIViewObject*(x: ptr IViewObject2): ptr IViewObject = cast[ptr IViewObject](x)
-converter winimConverterIViewObject2ToIUnknown*(x: ptr IViewObject2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDropSourceToIUnknown*(x: ptr IDropSource): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDropTargetToIUnknown*(x: ptr IDropTarget): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDropSourceNotifyToIUnknown*(x: ptr IDropSourceNotify): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumOLEVERBToIUnknown*(x: ptr IEnumOLEVERB): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIServiceProviderToIUnknown*(x: ptr IServiceProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMImplementationToIDispatch*(x: ptr IXMLDOMImplementation): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMImplementationToIUnknown*(x: ptr IXMLDOMImplementation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMNodeToIDispatch*(x: ptr IXMLDOMNode): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMNodeToIUnknown*(x: ptr IXMLDOMNode): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMDocumentFragmentToIXMLDOMNode*(x: ptr IXMLDOMDocumentFragment): ptr IXMLDOMNode = cast[ptr IXMLDOMNode](x)
-converter winimConverterIXMLDOMDocumentFragmentToIDispatch*(x: ptr IXMLDOMDocumentFragment): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMDocumentFragmentToIUnknown*(x: ptr IXMLDOMDocumentFragment): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMDocumentToIXMLDOMNode*(x: ptr IXMLDOMDocument): ptr IXMLDOMNode = cast[ptr IXMLDOMNode](x)
-converter winimConverterIXMLDOMDocumentToIDispatch*(x: ptr IXMLDOMDocument): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMDocumentToIUnknown*(x: ptr IXMLDOMDocument): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMNodeListToIDispatch*(x: ptr IXMLDOMNodeList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMNodeListToIUnknown*(x: ptr IXMLDOMNodeList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMNamedNodeMapToIDispatch*(x: ptr IXMLDOMNamedNodeMap): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMNamedNodeMapToIUnknown*(x: ptr IXMLDOMNamedNodeMap): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMCharacterDataToIXMLDOMNode*(x: ptr IXMLDOMCharacterData): ptr IXMLDOMNode = cast[ptr IXMLDOMNode](x)
-converter winimConverterIXMLDOMCharacterDataToIDispatch*(x: ptr IXMLDOMCharacterData): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMCharacterDataToIUnknown*(x: ptr IXMLDOMCharacterData): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMAttributeToIXMLDOMNode*(x: ptr IXMLDOMAttribute): ptr IXMLDOMNode = cast[ptr IXMLDOMNode](x)
-converter winimConverterIXMLDOMAttributeToIDispatch*(x: ptr IXMLDOMAttribute): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMAttributeToIUnknown*(x: ptr IXMLDOMAttribute): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMElementToIXMLDOMNode*(x: ptr IXMLDOMElement): ptr IXMLDOMNode = cast[ptr IXMLDOMNode](x)
-converter winimConverterIXMLDOMElementToIDispatch*(x: ptr IXMLDOMElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMElementToIUnknown*(x: ptr IXMLDOMElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMTextToIXMLDOMCharacterData*(x: ptr IXMLDOMText): ptr IXMLDOMCharacterData = cast[ptr IXMLDOMCharacterData](x)
-converter winimConverterIXMLDOMTextToIXMLDOMNode*(x: ptr IXMLDOMText): ptr IXMLDOMNode = cast[ptr IXMLDOMNode](x)
-converter winimConverterIXMLDOMTextToIDispatch*(x: ptr IXMLDOMText): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMTextToIUnknown*(x: ptr IXMLDOMText): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMCommentToIXMLDOMCharacterData*(x: ptr IXMLDOMComment): ptr IXMLDOMCharacterData = cast[ptr IXMLDOMCharacterData](x)
-converter winimConverterIXMLDOMCommentToIXMLDOMNode*(x: ptr IXMLDOMComment): ptr IXMLDOMNode = cast[ptr IXMLDOMNode](x)
-converter winimConverterIXMLDOMCommentToIDispatch*(x: ptr IXMLDOMComment): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMCommentToIUnknown*(x: ptr IXMLDOMComment): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMProcessingInstructionToIXMLDOMNode*(x: ptr IXMLDOMProcessingInstruction): ptr IXMLDOMNode = cast[ptr IXMLDOMNode](x)
-converter winimConverterIXMLDOMProcessingInstructionToIDispatch*(x: ptr IXMLDOMProcessingInstruction): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMProcessingInstructionToIUnknown*(x: ptr IXMLDOMProcessingInstruction): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMCDATASectionToIXMLDOMText*(x: ptr IXMLDOMCDATASection): ptr IXMLDOMText = cast[ptr IXMLDOMText](x)
-converter winimConverterIXMLDOMCDATASectionToIXMLDOMCharacterData*(x: ptr IXMLDOMCDATASection): ptr IXMLDOMCharacterData = cast[ptr IXMLDOMCharacterData](x)
-converter winimConverterIXMLDOMCDATASectionToIXMLDOMNode*(x: ptr IXMLDOMCDATASection): ptr IXMLDOMNode = cast[ptr IXMLDOMNode](x)
-converter winimConverterIXMLDOMCDATASectionToIDispatch*(x: ptr IXMLDOMCDATASection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMCDATASectionToIUnknown*(x: ptr IXMLDOMCDATASection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMDocumentTypeToIXMLDOMNode*(x: ptr IXMLDOMDocumentType): ptr IXMLDOMNode = cast[ptr IXMLDOMNode](x)
-converter winimConverterIXMLDOMDocumentTypeToIDispatch*(x: ptr IXMLDOMDocumentType): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMDocumentTypeToIUnknown*(x: ptr IXMLDOMDocumentType): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMNotationToIXMLDOMNode*(x: ptr IXMLDOMNotation): ptr IXMLDOMNode = cast[ptr IXMLDOMNode](x)
-converter winimConverterIXMLDOMNotationToIDispatch*(x: ptr IXMLDOMNotation): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMNotationToIUnknown*(x: ptr IXMLDOMNotation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMEntityToIXMLDOMNode*(x: ptr IXMLDOMEntity): ptr IXMLDOMNode = cast[ptr IXMLDOMNode](x)
-converter winimConverterIXMLDOMEntityToIDispatch*(x: ptr IXMLDOMEntity): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMEntityToIUnknown*(x: ptr IXMLDOMEntity): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMEntityReferenceToIXMLDOMNode*(x: ptr IXMLDOMEntityReference): ptr IXMLDOMNode = cast[ptr IXMLDOMNode](x)
-converter winimConverterIXMLDOMEntityReferenceToIDispatch*(x: ptr IXMLDOMEntityReference): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMEntityReferenceToIUnknown*(x: ptr IXMLDOMEntityReference): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDOMParseErrorToIDispatch*(x: ptr IXMLDOMParseError): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDOMParseErrorToIUnknown*(x: ptr IXMLDOMParseError): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXTLRuntimeToIXMLDOMNode*(x: ptr IXTLRuntime): ptr IXMLDOMNode = cast[ptr IXMLDOMNode](x)
-converter winimConverterIXTLRuntimeToIDispatch*(x: ptr IXTLRuntime): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXTLRuntimeToIUnknown*(x: ptr IXTLRuntime): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterXMLDOMDocumentEventsToIDispatch*(x: ptr XMLDOMDocumentEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterXMLDOMDocumentEventsToIUnknown*(x: ptr XMLDOMDocumentEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLHttpRequestToIDispatch*(x: ptr IXMLHttpRequest): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLHttpRequestToIUnknown*(x: ptr IXMLHttpRequest): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDSOControlToIDispatch*(x: ptr IXMLDSOControl): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDSOControlToIUnknown*(x: ptr IXMLDSOControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLElementCollectionToIDispatch*(x: ptr IXMLElementCollection): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLElementCollectionToIUnknown*(x: ptr IXMLElementCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDocumentToIDispatch*(x: ptr IXMLDocument): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDocumentToIUnknown*(x: ptr IXMLDocument): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLDocument2ToIDispatch*(x: ptr IXMLDocument2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLDocument2ToIUnknown*(x: ptr IXMLDocument2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLElementToIDispatch*(x: ptr IXMLElement): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLElementToIUnknown*(x: ptr IXMLElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLElement2ToIDispatch*(x: ptr IXMLElement2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLElement2ToIUnknown*(x: ptr IXMLElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLAttributeToIDispatch*(x: ptr IXMLAttribute): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIXMLAttributeToIUnknown*(x: ptr IXMLAttribute): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIXMLErrorToIUnknown*(x: ptr IXMLError): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistMonikerToIUnknown*(x: ptr IPersistMoniker): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMonikerPropToIUnknown*(x: ptr IMonikerProp): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIBindProtocolToIUnknown*(x: ptr IBindProtocol): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIBindingToIUnknown*(x: ptr IBinding): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIBindStatusCallbackToIUnknown*(x: ptr IBindStatusCallback): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIBindStatusCallbackExToIBindStatusCallback*(x: ptr IBindStatusCallbackEx): ptr IBindStatusCallback = cast[ptr IBindStatusCallback](x)
-converter winimConverterIBindStatusCallbackExToIUnknown*(x: ptr IBindStatusCallbackEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAuthenticateToIUnknown*(x: ptr IAuthenticate): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAuthenticateExToIAuthenticate*(x: ptr IAuthenticateEx): ptr IAuthenticate = cast[ptr IAuthenticate](x)
-converter winimConverterIAuthenticateExToIUnknown*(x: ptr IAuthenticateEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHttpNegotiateToIUnknown*(x: ptr IHttpNegotiate): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHttpNegotiate2ToIHttpNegotiate*(x: ptr IHttpNegotiate2): ptr IHttpNegotiate = cast[ptr IHttpNegotiate](x)
-converter winimConverterIHttpNegotiate2ToIUnknown*(x: ptr IHttpNegotiate2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHttpNegotiate3ToIHttpNegotiate2*(x: ptr IHttpNegotiate3): ptr IHttpNegotiate2 = cast[ptr IHttpNegotiate2](x)
-converter winimConverterIHttpNegotiate3ToIHttpNegotiate*(x: ptr IHttpNegotiate3): ptr IHttpNegotiate = cast[ptr IHttpNegotiate](x)
-converter winimConverterIHttpNegotiate3ToIUnknown*(x: ptr IHttpNegotiate3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWinInetFileStreamToIUnknown*(x: ptr IWinInetFileStream): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWindowForBindingUIToIUnknown*(x: ptr IWindowForBindingUI): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICodeInstallToIWindowForBindingUI*(x: ptr ICodeInstall): ptr IWindowForBindingUI = cast[ptr IWindowForBindingUI](x)
-converter winimConverterICodeInstallToIUnknown*(x: ptr ICodeInstall): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUriToIUnknown*(x: ptr IUri): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUriContainerToIUnknown*(x: ptr IUriContainer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUriBuilderToIUnknown*(x: ptr IUriBuilder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUriBuilderFactoryToIUnknown*(x: ptr IUriBuilderFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWinInetInfoToIUnknown*(x: ptr IWinInetInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHttpSecurityToIWindowForBindingUI*(x: ptr IHttpSecurity): ptr IWindowForBindingUI = cast[ptr IWindowForBindingUI](x)
-converter winimConverterIHttpSecurityToIUnknown*(x: ptr IHttpSecurity): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWinInetHttpInfoToIWinInetInfo*(x: ptr IWinInetHttpInfo): ptr IWinInetInfo = cast[ptr IWinInetInfo](x)
-converter winimConverterIWinInetHttpInfoToIUnknown*(x: ptr IWinInetHttpInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWinInetHttpTimeoutsToIUnknown*(x: ptr IWinInetHttpTimeouts): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWinInetCacheHintsToIUnknown*(x: ptr IWinInetCacheHints): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWinInetCacheHints2ToIWinInetCacheHints*(x: ptr IWinInetCacheHints2): ptr IWinInetCacheHints = cast[ptr IWinInetCacheHints](x)
-converter winimConverterIWinInetCacheHints2ToIUnknown*(x: ptr IWinInetCacheHints2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIBindHostToIUnknown*(x: ptr IBindHost): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetToIUnknown*(x: ptr IInternet): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetBindInfoToIUnknown*(x: ptr IInternetBindInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetBindInfoExToIInternetBindInfo*(x: ptr IInternetBindInfoEx): ptr IInternetBindInfo = cast[ptr IInternetBindInfo](x)
-converter winimConverterIInternetBindInfoExToIUnknown*(x: ptr IInternetBindInfoEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetProtocolRootToIUnknown*(x: ptr IInternetProtocolRoot): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetProtocolToIInternetProtocolRoot*(x: ptr IInternetProtocol): ptr IInternetProtocolRoot = cast[ptr IInternetProtocolRoot](x)
-converter winimConverterIInternetProtocolToIUnknown*(x: ptr IInternetProtocol): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetProtocolExToIInternetProtocol*(x: ptr IInternetProtocolEx): ptr IInternetProtocol = cast[ptr IInternetProtocol](x)
-converter winimConverterIInternetProtocolExToIInternetProtocolRoot*(x: ptr IInternetProtocolEx): ptr IInternetProtocolRoot = cast[ptr IInternetProtocolRoot](x)
-converter winimConverterIInternetProtocolExToIUnknown*(x: ptr IInternetProtocolEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetProtocolSinkToIUnknown*(x: ptr IInternetProtocolSink): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetProtocolSinkStackableToIUnknown*(x: ptr IInternetProtocolSinkStackable): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetSessionToIUnknown*(x: ptr IInternetSession): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetThreadSwitchToIUnknown*(x: ptr IInternetThreadSwitch): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetPriorityToIUnknown*(x: ptr IInternetPriority): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetProtocolInfoToIUnknown*(x: ptr IInternetProtocolInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetSecurityMgrSiteToIUnknown*(x: ptr IInternetSecurityMgrSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetSecurityManagerToIUnknown*(x: ptr IInternetSecurityManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetSecurityManagerExToIInternetSecurityManager*(x: ptr IInternetSecurityManagerEx): ptr IInternetSecurityManager = cast[ptr IInternetSecurityManager](x)
-converter winimConverterIInternetSecurityManagerExToIUnknown*(x: ptr IInternetSecurityManagerEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetSecurityManagerEx2ToIInternetSecurityManagerEx*(x: ptr IInternetSecurityManagerEx2): ptr IInternetSecurityManagerEx = cast[ptr IInternetSecurityManagerEx](x)
-converter winimConverterIInternetSecurityManagerEx2ToIInternetSecurityManager*(x: ptr IInternetSecurityManagerEx2): ptr IInternetSecurityManager = cast[ptr IInternetSecurityManager](x)
-converter winimConverterIInternetSecurityManagerEx2ToIUnknown*(x: ptr IInternetSecurityManagerEx2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIZoneIdentifierToIUnknown*(x: ptr IZoneIdentifier): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetHostSecurityManagerToIUnknown*(x: ptr IInternetHostSecurityManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetZoneManagerToIUnknown*(x: ptr IInternetZoneManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetZoneManagerExToIInternetZoneManager*(x: ptr IInternetZoneManagerEx): ptr IInternetZoneManager = cast[ptr IInternetZoneManager](x)
-converter winimConverterIInternetZoneManagerExToIUnknown*(x: ptr IInternetZoneManagerEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInternetZoneManagerEx2ToIInternetZoneManagerEx*(x: ptr IInternetZoneManagerEx2): ptr IInternetZoneManagerEx = cast[ptr IInternetZoneManagerEx](x)
-converter winimConverterIInternetZoneManagerEx2ToIInternetZoneManager*(x: ptr IInternetZoneManagerEx2): ptr IInternetZoneManager = cast[ptr IInternetZoneManager](x)
-converter winimConverterIInternetZoneManagerEx2ToIUnknown*(x: ptr IInternetZoneManagerEx2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISoftDistExtToIUnknown*(x: ptr ISoftDistExt): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICatalogFileInfoToIUnknown*(x: ptr ICatalogFileInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDataFilterToIUnknown*(x: ptr IDataFilter): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEncodingFilterFactoryToIUnknown*(x: ptr IEncodingFilterFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWrappedProtocolToIUnknown*(x: ptr IWrappedProtocol): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIGetBindHandleToIUnknown*(x: ptr IGetBindHandle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIBindCallbackRedirectToIUnknown*(x: ptr IBindCallbackRedirect): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyStorageToIUnknown*(x: ptr IPropertyStorage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertySetStorageToIUnknown*(x: ptr IPropertySetStorage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumSTATPROPSTGToIUnknown*(x: ptr IEnumSTATPROPSTG): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumSTATPROPSETSTGToIUnknown*(x: ptr IEnumSTATPROPSETSTG): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumConnectionsToIUnknown*(x: ptr IEnumConnections): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIConnectionPointToIUnknown*(x: ptr IConnectionPoint): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumConnectionPointsToIUnknown*(x: ptr IEnumConnectionPoints): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIConnectionPointContainerToIUnknown*(x: ptr IConnectionPointContainer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIClassFactory2ToIClassFactory*(x: ptr IClassFactory2): ptr IClassFactory = cast[ptr IClassFactory](x)
-converter winimConverterIClassFactory2ToIUnknown*(x: ptr IClassFactory2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIProvideClassInfoToIUnknown*(x: ptr IProvideClassInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIProvideClassInfo2ToIProvideClassInfo*(x: ptr IProvideClassInfo2): ptr IProvideClassInfo = cast[ptr IProvideClassInfo](x)
-converter winimConverterIProvideClassInfo2ToIUnknown*(x: ptr IProvideClassInfo2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIProvideMultipleClassInfoToIProvideClassInfo2*(x: ptr IProvideMultipleClassInfo): ptr IProvideClassInfo2 = cast[ptr IProvideClassInfo2](x)
-converter winimConverterIProvideMultipleClassInfoToIProvideClassInfo*(x: ptr IProvideMultipleClassInfo): ptr IProvideClassInfo = cast[ptr IProvideClassInfo](x)
-converter winimConverterIProvideMultipleClassInfoToIUnknown*(x: ptr IProvideMultipleClassInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleControlToIUnknown*(x: ptr IOleControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleControlSiteToIUnknown*(x: ptr IOleControlSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyPageToIUnknown*(x: ptr IPropertyPage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyPage2ToIPropertyPage*(x: ptr IPropertyPage2): ptr IPropertyPage = cast[ptr IPropertyPage](x)
-converter winimConverterIPropertyPage2ToIUnknown*(x: ptr IPropertyPage2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyPageSiteToIUnknown*(x: ptr IPropertyPageSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyNotifySinkToIUnknown*(x: ptr IPropertyNotifySink): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISpecifyPropertyPagesToIUnknown*(x: ptr ISpecifyPropertyPages): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistMemoryToIPersist*(x: ptr IPersistMemory): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterIPersistMemoryToIUnknown*(x: ptr IPersistMemory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistStreamInitToIPersist*(x: ptr IPersistStreamInit): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterIPersistStreamInitToIUnknown*(x: ptr IPersistStreamInit): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistPropertyBagToIPersist*(x: ptr IPersistPropertyBag): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterIPersistPropertyBagToIUnknown*(x: ptr IPersistPropertyBag): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISimpleFrameSiteToIUnknown*(x: ptr ISimpleFrameSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFontToIUnknown*(x: ptr IFont): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPictureToIUnknown*(x: ptr IPicture): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPicture2ToIUnknown*(x: ptr IPicture2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFontEventsDispToIDispatch*(x: ptr IFontEventsDisp): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIFontEventsDispToIUnknown*(x: ptr IFontEventsDisp): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFontDispToIDispatch*(x: ptr IFontDisp): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIFontDispToIUnknown*(x: ptr IFontDisp): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPictureDispToIDispatch*(x: ptr IPictureDisp): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIPictureDispToIUnknown*(x: ptr IPictureDisp): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleInPlaceObjectWindowlessToIOleInPlaceObject*(x: ptr IOleInPlaceObjectWindowless): ptr IOleInPlaceObject = cast[ptr IOleInPlaceObject](x)
-converter winimConverterIOleInPlaceObjectWindowlessToIOleWindow*(x: ptr IOleInPlaceObjectWindowless): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIOleInPlaceObjectWindowlessToIUnknown*(x: ptr IOleInPlaceObjectWindowless): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleInPlaceSiteExToIOleInPlaceSite*(x: ptr IOleInPlaceSiteEx): ptr IOleInPlaceSite = cast[ptr IOleInPlaceSite](x)
-converter winimConverterIOleInPlaceSiteExToIOleWindow*(x: ptr IOleInPlaceSiteEx): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIOleInPlaceSiteExToIUnknown*(x: ptr IOleInPlaceSiteEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleInPlaceSiteWindowlessToIOleInPlaceSiteEx*(x: ptr IOleInPlaceSiteWindowless): ptr IOleInPlaceSiteEx = cast[ptr IOleInPlaceSiteEx](x)
-converter winimConverterIOleInPlaceSiteWindowlessToIOleInPlaceSite*(x: ptr IOleInPlaceSiteWindowless): ptr IOleInPlaceSite = cast[ptr IOleInPlaceSite](x)
-converter winimConverterIOleInPlaceSiteWindowlessToIOleWindow*(x: ptr IOleInPlaceSiteWindowless): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIOleInPlaceSiteWindowlessToIUnknown*(x: ptr IOleInPlaceSiteWindowless): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIViewObjectExToIViewObject2*(x: ptr IViewObjectEx): ptr IViewObject2 = cast[ptr IViewObject2](x)
-converter winimConverterIViewObjectExToIViewObject*(x: ptr IViewObjectEx): ptr IViewObject = cast[ptr IViewObject](x)
-converter winimConverterIViewObjectExToIUnknown*(x: ptr IViewObjectEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleUndoUnitToIUnknown*(x: ptr IOleUndoUnit): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleParentUndoUnitToIOleUndoUnit*(x: ptr IOleParentUndoUnit): ptr IOleUndoUnit = cast[ptr IOleUndoUnit](x)
-converter winimConverterIOleParentUndoUnitToIUnknown*(x: ptr IOleParentUndoUnit): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumOleUndoUnitsToIUnknown*(x: ptr IEnumOleUndoUnits): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleUndoManagerToIUnknown*(x: ptr IOleUndoManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPointerInactiveToIUnknown*(x: ptr IPointerInactive): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectWithSiteToIUnknown*(x: ptr IObjectWithSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPerPropertyBrowsingToIUnknown*(x: ptr IPerPropertyBrowsing): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyBag2ToIUnknown*(x: ptr IPropertyBag2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistPropertyBag2ToIPersist*(x: ptr IPersistPropertyBag2): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterIPersistPropertyBag2ToIUnknown*(x: ptr IPersistPropertyBag2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAdviseSinkExToIAdviseSink*(x: ptr IAdviseSinkEx): ptr IAdviseSink = cast[ptr IAdviseSink](x)
-converter winimConverterIAdviseSinkExToIUnknown*(x: ptr IAdviseSinkEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIQuickActivateToIUnknown*(x: ptr IQuickActivate): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumGUIDToIUnknown*(x: ptr IEnumGUID): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumCATEGORYINFOToIUnknown*(x: ptr IEnumCATEGORYINFO): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICatRegisterToIUnknown*(x: ptr ICatRegister): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICatInformationToIUnknown*(x: ptr ICatInformation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleDocumentToIUnknown*(x: ptr IOleDocument): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleDocumentSiteToIUnknown*(x: ptr IOleDocumentSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleDocumentViewToIUnknown*(x: ptr IOleDocumentView): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumOleDocumentViewsToIUnknown*(x: ptr IEnumOleDocumentViews): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIContinueCallbackToIUnknown*(x: ptr IContinueCallback): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPrintToIUnknown*(x: ptr IPrint): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleCommandTargetToIUnknown*(x: ptr IOleCommandTarget): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIZoomEventsToIUnknown*(x: ptr IZoomEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIProtectFocusToIUnknown*(x: ptr IProtectFocus): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIProtectedModeMenuServicesToIUnknown*(x: ptr IProtectedModeMenuServices): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWebBrowserToIDispatch*(x: ptr IWebBrowser): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIWebBrowserToIUnknown*(x: ptr IWebBrowser): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDWebBrowserEventsToIDispatch*(x: ptr DWebBrowserEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDWebBrowserEventsToIUnknown*(x: ptr DWebBrowserEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWebBrowserAppToIWebBrowser*(x: ptr IWebBrowserApp): ptr IWebBrowser = cast[ptr IWebBrowser](x)
-converter winimConverterIWebBrowserAppToIDispatch*(x: ptr IWebBrowserApp): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIWebBrowserAppToIUnknown*(x: ptr IWebBrowserApp): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWebBrowser2ToIWebBrowserApp*(x: ptr IWebBrowser2): ptr IWebBrowserApp = cast[ptr IWebBrowserApp](x)
-converter winimConverterIWebBrowser2ToIWebBrowser*(x: ptr IWebBrowser2): ptr IWebBrowser = cast[ptr IWebBrowser](x)
-converter winimConverterIWebBrowser2ToIDispatch*(x: ptr IWebBrowser2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIWebBrowser2ToIUnknown*(x: ptr IWebBrowser2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDWebBrowserEvents2ToIDispatch*(x: ptr DWebBrowserEvents2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDWebBrowserEvents2ToIUnknown*(x: ptr DWebBrowserEvents2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDShellWindowsEventsToIDispatch*(x: ptr DShellWindowsEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDShellWindowsEventsToIUnknown*(x: ptr DShellWindowsEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellWindowsToIDispatch*(x: ptr IShellWindows): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellWindowsToIUnknown*(x: ptr IShellWindows): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellUIHelperToIDispatch*(x: ptr IShellUIHelper): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellUIHelperToIUnknown*(x: ptr IShellUIHelper): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellUIHelper2ToIShellUIHelper*(x: ptr IShellUIHelper2): ptr IShellUIHelper = cast[ptr IShellUIHelper](x)
-converter winimConverterIShellUIHelper2ToIDispatch*(x: ptr IShellUIHelper2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellUIHelper2ToIUnknown*(x: ptr IShellUIHelper2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDShellNameSpaceEventsToIDispatch*(x: ptr DShellNameSpaceEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDShellNameSpaceEventsToIUnknown*(x: ptr DShellNameSpaceEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellFavoritesNameSpaceToIDispatch*(x: ptr IShellFavoritesNameSpace): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellFavoritesNameSpaceToIUnknown*(x: ptr IShellFavoritesNameSpace): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellNameSpaceToIShellFavoritesNameSpace*(x: ptr IShellNameSpace): ptr IShellFavoritesNameSpace = cast[ptr IShellFavoritesNameSpace](x)
-converter winimConverterIShellNameSpaceToIDispatch*(x: ptr IShellNameSpace): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellNameSpaceToIUnknown*(x: ptr IShellNameSpace): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIScriptErrorListToIDispatch*(x: ptr IScriptErrorList): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIScriptErrorListToIUnknown*(x: ptr IScriptErrorList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISearchToIDispatch*(x: ptr ISearch): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISearchToIUnknown*(x: ptr ISearch): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISearchesToIDispatch*(x: ptr ISearches): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISearchesToIUnknown*(x: ptr ISearches): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISearchAssistantOCToIDispatch*(x: ptr ISearchAssistantOC): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISearchAssistantOCToIUnknown*(x: ptr ISearchAssistantOC): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISearchAssistantOC2ToISearchAssistantOC*(x: ptr ISearchAssistantOC2): ptr ISearchAssistantOC = cast[ptr ISearchAssistantOC](x)
-converter winimConverterISearchAssistantOC2ToIDispatch*(x: ptr ISearchAssistantOC2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISearchAssistantOC2ToIUnknown*(x: ptr ISearchAssistantOC2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISearchAssistantOC3ToISearchAssistantOC2*(x: ptr ISearchAssistantOC3): ptr ISearchAssistantOC2 = cast[ptr ISearchAssistantOC2](x)
-converter winimConverterISearchAssistantOC3ToISearchAssistantOC*(x: ptr ISearchAssistantOC3): ptr ISearchAssistantOC = cast[ptr ISearchAssistantOC](x)
-converter winimConverterISearchAssistantOC3ToIDispatch*(x: ptr ISearchAssistantOC3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterISearchAssistantOC3ToIUnknown*(x: ptr ISearchAssistantOC3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterSearchAssistantEventsToIDispatch*(x: ptr SearchAssistantEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterSearchAssistantEventsToIUnknown*(x: ptr SearchAssistantEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRichChunkToIUnknown*(x: ptr IRichChunk): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIConditionToIPersistStream*(x: ptr ICondition): ptr IPersistStream = cast[ptr IPersistStream](x)
-converter winimConverterIConditionToIPersist*(x: ptr ICondition): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterIConditionToIUnknown*(x: ptr ICondition): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICondition2ToICondition*(x: ptr ICondition2): ptr ICondition = cast[ptr ICondition](x)
-converter winimConverterICondition2ToIPersistStream*(x: ptr ICondition2): ptr IPersistStream = cast[ptr IPersistStream](x)
-converter winimConverterICondition2ToIPersist*(x: ptr ICondition2): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterICondition2ToIUnknown*(x: ptr ICondition2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInitializeWithFileToIUnknown*(x: ptr IInitializeWithFile): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInitializeWithStreamToIUnknown*(x: ptr IInitializeWithStream): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyStoreToIUnknown*(x: ptr IPropertyStore): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINamedPropertyStoreToIUnknown*(x: ptr INamedPropertyStore): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectWithPropertyKeyToIUnknown*(x: ptr IObjectWithPropertyKey): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyChangeToIObjectWithPropertyKey*(x: ptr IPropertyChange): ptr IObjectWithPropertyKey = cast[ptr IObjectWithPropertyKey](x)
-converter winimConverterIPropertyChangeToIUnknown*(x: ptr IPropertyChange): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyChangeArrayToIUnknown*(x: ptr IPropertyChangeArray): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyStoreCapabilitiesToIUnknown*(x: ptr IPropertyStoreCapabilities): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyStoreCacheToIPropertyStore*(x: ptr IPropertyStoreCache): ptr IPropertyStore = cast[ptr IPropertyStore](x)
-converter winimConverterIPropertyStoreCacheToIUnknown*(x: ptr IPropertyStoreCache): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyEnumTypeToIUnknown*(x: ptr IPropertyEnumType): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyEnumType2ToIPropertyEnumType*(x: ptr IPropertyEnumType2): ptr IPropertyEnumType = cast[ptr IPropertyEnumType](x)
-converter winimConverterIPropertyEnumType2ToIUnknown*(x: ptr IPropertyEnumType2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyEnumTypeListToIUnknown*(x: ptr IPropertyEnumTypeList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyDescriptionToIUnknown*(x: ptr IPropertyDescription): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyDescription2ToIPropertyDescription*(x: ptr IPropertyDescription2): ptr IPropertyDescription = cast[ptr IPropertyDescription](x)
-converter winimConverterIPropertyDescription2ToIUnknown*(x: ptr IPropertyDescription2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyDescriptionAliasInfoToIPropertyDescription*(x: ptr IPropertyDescriptionAliasInfo): ptr IPropertyDescription = cast[ptr IPropertyDescription](x)
-converter winimConverterIPropertyDescriptionAliasInfoToIUnknown*(x: ptr IPropertyDescriptionAliasInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyDescriptionSearchInfoToIPropertyDescription*(x: ptr IPropertyDescriptionSearchInfo): ptr IPropertyDescription = cast[ptr IPropertyDescription](x)
-converter winimConverterIPropertyDescriptionSearchInfoToIUnknown*(x: ptr IPropertyDescriptionSearchInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyDescriptionRelatedPropertyInfoToIPropertyDescription*(x: ptr IPropertyDescriptionRelatedPropertyInfo): ptr IPropertyDescription = cast[ptr IPropertyDescription](x)
-converter winimConverterIPropertyDescriptionRelatedPropertyInfoToIUnknown*(x: ptr IPropertyDescriptionRelatedPropertyInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertySystemToIUnknown*(x: ptr IPropertySystem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyDescriptionListToIUnknown*(x: ptr IPropertyDescriptionList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyStoreFactoryToIUnknown*(x: ptr IPropertyStoreFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDelayedPropertyStoreFactoryToIPropertyStoreFactory*(x: ptr IDelayedPropertyStoreFactory): ptr IPropertyStoreFactory = cast[ptr IPropertyStoreFactory](x)
-converter winimConverterIDelayedPropertyStoreFactoryToIUnknown*(x: ptr IDelayedPropertyStoreFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistSerializedPropStorageToIUnknown*(x: ptr IPersistSerializedPropStorage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistSerializedPropStorage2ToIPersistSerializedPropStorage*(x: ptr IPersistSerializedPropStorage2): ptr IPersistSerializedPropStorage = cast[ptr IPersistSerializedPropStorage](x)
-converter winimConverterIPersistSerializedPropStorage2ToIUnknown*(x: ptr IPersistSerializedPropStorage2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertySystemChangeNotifyToIUnknown*(x: ptr IPropertySystemChangeNotify): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICreateObjectToIUnknown*(x: ptr ICreateObject): ptr IUnknown = cast[ptr IUnknown](x)
+proc PSRegisterPropertySchema*(
+  pszPath: PCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSSetPropertyValue*(
+  pps: ptr IPropertyStore, ppd: ptr IPropertyDescription, propvar: REFPROPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSStringFromPropertyKey*(
+  pkey: REFPROPERTYKEY, psz: LPWSTR, cch: UINT
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc PSUnregisterPropertySchema*(
+  pszPath: PCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "propsys", importc.}
+
+proc VarUI4FromUI4*(ulIn: ULONG, pulOut: ptr ULONG): HRESULT {.winapi, inline.} =
+  pulOut[] = ulIn
+
+proc VarI4FromI4*(lIn: LONG, plOut: ptr LONG): HRESULT {.winapi, inline.} =
+  plOut[] = lIn
+
+proc VarUI8FromUI8*(ui64In: ULONG64, pi64Out: ptr ULONG64): HRESULT {.winapi, inline.} =
+  pi64Out[] = ui64In
+
+proc VarI8FromI8*(i64In: LONG64, pi64Out: ptr LONG64): HRESULT {.winapi, inline.} =
+  pi64Out[] = i64In
+
+proc `Lo=`*(self: var CY, x: int32) {.inline.} =
+  self.struct1.Lo = x
+
+proc Lo*(self: CY): int32 {.inline.} =
+  self.struct1.Lo
+
+proc Lo*(self: var CY): var int32 {.inline.} =
+  self.struct1.Lo
+
+proc `Hi=`*(self: var CY, x: int32) {.inline.} =
+  self.struct1.Hi = x
+
+proc Hi*(self: CY): int32 {.inline.} =
+  self.struct1.Hi
+
+proc Hi*(self: var CY): var int32 {.inline.} =
+  self.struct1.Hi
+
+proc `scale=`*(self: var DECIMAL, x: BYTE) {.inline.} =
+  self.union1.struct1.scale = x
+
+proc scale*(self: DECIMAL): BYTE {.inline.} =
+  self.union1.struct1.scale
+
+proc scale*(self: var DECIMAL): var BYTE {.inline.} =
+  self.union1.struct1.scale
+
+proc `sign=`*(self: var DECIMAL, x: BYTE) {.inline.} =
+  self.union1.struct1.sign = x
+
+proc sign*(self: DECIMAL): BYTE {.inline.} =
+  self.union1.struct1.sign
+
+proc sign*(self: var DECIMAL): var BYTE {.inline.} =
+  self.union1.struct1.sign
+
+proc `signscale=`*(self: var DECIMAL, x: USHORT) {.inline.} =
+  self.union1.signscale = x
+
+proc signscale*(self: DECIMAL): USHORT {.inline.} =
+  self.union1.signscale
+
+proc signscale*(self: var DECIMAL): var USHORT {.inline.} =
+  self.union1.signscale
+
+proc `Lo32=`*(self: var DECIMAL, x: ULONG) {.inline.} =
+  self.union2.struct1.Lo32 = x
+
+proc Lo32*(self: DECIMAL): ULONG {.inline.} =
+  self.union2.struct1.Lo32
+
+proc Lo32*(self: var DECIMAL): var ULONG {.inline.} =
+  self.union2.struct1.Lo32
+
+proc `Mid32=`*(self: var DECIMAL, x: ULONG) {.inline.} =
+  self.union2.struct1.Mid32 = x
+
+proc Mid32*(self: DECIMAL): ULONG {.inline.} =
+  self.union2.struct1.Mid32
+
+proc Mid32*(self: var DECIMAL): var ULONG {.inline.} =
+  self.union2.struct1.Mid32
+
+proc `Lo64=`*(self: var DECIMAL, x: ULONGLONG) {.inline.} =
+  self.union2.Lo64 = x
+
+proc Lo64*(self: DECIMAL): ULONGLONG {.inline.} =
+  self.union2.Lo64
+
+proc Lo64*(self: var DECIMAL): var ULONGLONG {.inline.} =
+  self.union2.Lo64
+
+proc `tymed=`*(self: var userSTGMEDIUM, x: DWORD) {.inline.} =
+  self.struct1.tymed = x
+
+proc tymed*(self: userSTGMEDIUM): DWORD {.inline.} =
+  self.struct1.tymed
+
+proc tymed*(self: var userSTGMEDIUM): var DWORD {.inline.} =
+  self.struct1.tymed
+
+proc `u=`*(self: var userSTGMEDIUM, x: userSTGMEDIUM_STRUCT1_u) {.inline.} =
+  self.struct1.u = x
+
+proc u*(self: userSTGMEDIUM): userSTGMEDIUM_STRUCT1_u {.inline.} =
+  self.struct1.u
+
+proc u*(self: var userSTGMEDIUM): var userSTGMEDIUM_STRUCT1_u {.inline.} =
+  self.struct1.u
+
+proc `vt=`*(self: var VARIANT, x: VARTYPE) {.inline.} =
+  self.union1.struct1.vt = x
+
+proc vt*(self: VARIANT): VARTYPE {.inline.} =
+  self.union1.struct1.vt
+
+proc vt*(self: var VARIANT): var VARTYPE {.inline.} =
+  self.union1.struct1.vt
+
+proc `wReserved1=`*(self: var VARIANT, x: WORD) {.inline.} =
+  self.union1.struct1.wReserved1 = x
+
+proc wReserved1*(self: VARIANT): WORD {.inline.} =
+  self.union1.struct1.wReserved1
+
+proc wReserved1*(self: var VARIANT): var WORD {.inline.} =
+  self.union1.struct1.wReserved1
+
+proc `wReserved2=`*(self: var VARIANT, x: WORD) {.inline.} =
+  self.union1.struct1.wReserved2 = x
+
+proc wReserved2*(self: VARIANT): WORD {.inline.} =
+  self.union1.struct1.wReserved2
+
+proc wReserved2*(self: var VARIANT): var WORD {.inline.} =
+  self.union1.struct1.wReserved2
+
+proc `wReserved3=`*(self: var VARIANT, x: WORD) {.inline.} =
+  self.union1.struct1.wReserved3 = x
+
+proc wReserved3*(self: VARIANT): WORD {.inline.} =
+  self.union1.struct1.wReserved3
+
+proc wReserved3*(self: var VARIANT): var WORD {.inline.} =
+  self.union1.struct1.wReserved3
+
+proc `llVal=`*(self: var VARIANT, x: LONGLONG) {.inline.} =
+  self.union1.struct1.union1.llVal = x
+
+proc llVal*(self: VARIANT): LONGLONG {.inline.} =
+  self.union1.struct1.union1.llVal
+
+proc llVal*(self: var VARIANT): var LONGLONG {.inline.} =
+  self.union1.struct1.union1.llVal
+
+proc `lVal=`*(self: var VARIANT, x: LONG) {.inline.} =
+  self.union1.struct1.union1.lVal = x
+
+proc lVal*(self: VARIANT): LONG {.inline.} =
+  self.union1.struct1.union1.lVal
+
+proc lVal*(self: var VARIANT): var LONG {.inline.} =
+  self.union1.struct1.union1.lVal
+
+proc `bVal=`*(self: var VARIANT, x: BYTE) {.inline.} =
+  self.union1.struct1.union1.bVal = x
+
+proc bVal*(self: VARIANT): BYTE {.inline.} =
+  self.union1.struct1.union1.bVal
+
+proc bVal*(self: var VARIANT): var BYTE {.inline.} =
+  self.union1.struct1.union1.bVal
+
+proc `iVal=`*(self: var VARIANT, x: SHORT) {.inline.} =
+  self.union1.struct1.union1.iVal = x
+
+proc iVal*(self: VARIANT): SHORT {.inline.} =
+  self.union1.struct1.union1.iVal
+
+proc iVal*(self: var VARIANT): var SHORT {.inline.} =
+  self.union1.struct1.union1.iVal
+
+proc `fltVal=`*(self: var VARIANT, x: FLOAT) {.inline.} =
+  self.union1.struct1.union1.fltVal = x
+
+proc fltVal*(self: VARIANT): FLOAT {.inline.} =
+  self.union1.struct1.union1.fltVal
+
+proc fltVal*(self: var VARIANT): var FLOAT {.inline.} =
+  self.union1.struct1.union1.fltVal
+
+proc `dblVal=`*(self: var VARIANT, x: DOUBLE) {.inline.} =
+  self.union1.struct1.union1.dblVal = x
+
+proc dblVal*(self: VARIANT): DOUBLE {.inline.} =
+  self.union1.struct1.union1.dblVal
+
+proc dblVal*(self: var VARIANT): var DOUBLE {.inline.} =
+  self.union1.struct1.union1.dblVal
+
+proc `boolVal=`*(self: var VARIANT, x: VARIANT_BOOL) {.inline.} =
+  self.union1.struct1.union1.boolVal = x
+
+proc boolVal*(self: VARIANT): VARIANT_BOOL {.inline.} =
+  self.union1.struct1.union1.boolVal
+
+proc boolVal*(self: var VARIANT): var VARIANT_BOOL {.inline.} =
+  self.union1.struct1.union1.boolVal
+
+proc `scode=`*(self: var VARIANT, x: SCODE) {.inline.} =
+  self.union1.struct1.union1.scode = x
+
+proc scode*(self: VARIANT): SCODE {.inline.} =
+  self.union1.struct1.union1.scode
+
+proc scode*(self: var VARIANT): var SCODE {.inline.} =
+  self.union1.struct1.union1.scode
+
+proc `cyVal=`*(self: var VARIANT, x: CY) {.inline.} =
+  self.union1.struct1.union1.cyVal = x
+
+proc cyVal*(self: VARIANT): CY {.inline.} =
+  self.union1.struct1.union1.cyVal
+
+proc cyVal*(self: var VARIANT): var CY {.inline.} =
+  self.union1.struct1.union1.cyVal
+
+proc `date=`*(self: var VARIANT, x: DATE) {.inline.} =
+  self.union1.struct1.union1.date = x
+
+proc date*(self: VARIANT): DATE {.inline.} =
+  self.union1.struct1.union1.date
+
+proc date*(self: var VARIANT): var DATE {.inline.} =
+  self.union1.struct1.union1.date
+
+proc `bstrVal=`*(self: var VARIANT, x: BSTR) {.inline.} =
+  self.union1.struct1.union1.bstrVal = x
+
+proc bstrVal*(self: VARIANT): BSTR {.inline.} =
+  self.union1.struct1.union1.bstrVal
+
+proc bstrVal*(self: var VARIANT): var BSTR {.inline.} =
+  self.union1.struct1.union1.bstrVal
+
+proc `punkVal=`*(self: var VARIANT, x: ptr IUnknown) {.inline.} =
+  self.union1.struct1.union1.punkVal = x
+
+proc punkVal*(self: VARIANT): ptr IUnknown {.inline.} =
+  self.union1.struct1.union1.punkVal
+
+proc punkVal*(self: var VARIANT): var ptr IUnknown {.inline.} =
+  self.union1.struct1.union1.punkVal
+
+proc `pdispVal=`*(self: var VARIANT, x: ptr IDispatch) {.inline.} =
+  self.union1.struct1.union1.pdispVal = x
+
+proc pdispVal*(self: VARIANT): ptr IDispatch {.inline.} =
+  self.union1.struct1.union1.pdispVal
+
+proc pdispVal*(self: var VARIANT): var ptr IDispatch {.inline.} =
+  self.union1.struct1.union1.pdispVal
+
+proc `parray=`*(self: var VARIANT, x: ptr SAFEARRAY) {.inline.} =
+  self.union1.struct1.union1.parray = x
+
+proc parray*(self: VARIANT): ptr SAFEARRAY {.inline.} =
+  self.union1.struct1.union1.parray
+
+proc parray*(self: var VARIANT): var ptr SAFEARRAY {.inline.} =
+  self.union1.struct1.union1.parray
+
+proc `pbVal=`*(self: var VARIANT, x: ptr BYTE) {.inline.} =
+  self.union1.struct1.union1.pbVal = x
+
+proc pbVal*(self: VARIANT): ptr BYTE {.inline.} =
+  self.union1.struct1.union1.pbVal
+
+proc pbVal*(self: var VARIANT): var ptr BYTE {.inline.} =
+  self.union1.struct1.union1.pbVal
+
+proc `piVal=`*(self: var VARIANT, x: ptr SHORT) {.inline.} =
+  self.union1.struct1.union1.piVal = x
+
+proc piVal*(self: VARIANT): ptr SHORT {.inline.} =
+  self.union1.struct1.union1.piVal
+
+proc piVal*(self: var VARIANT): var ptr SHORT {.inline.} =
+  self.union1.struct1.union1.piVal
+
+proc `plVal=`*(self: var VARIANT, x: ptr LONG) {.inline.} =
+  self.union1.struct1.union1.plVal = x
+
+proc plVal*(self: VARIANT): ptr LONG {.inline.} =
+  self.union1.struct1.union1.plVal
+
+proc plVal*(self: var VARIANT): var ptr LONG {.inline.} =
+  self.union1.struct1.union1.plVal
+
+proc `pllVal=`*(self: var VARIANT, x: ptr LONGLONG) {.inline.} =
+  self.union1.struct1.union1.pllVal = x
+
+proc pllVal*(self: VARIANT): ptr LONGLONG {.inline.} =
+  self.union1.struct1.union1.pllVal
+
+proc pllVal*(self: var VARIANT): var ptr LONGLONG {.inline.} =
+  self.union1.struct1.union1.pllVal
+
+proc `pfltVal=`*(self: var VARIANT, x: ptr FLOAT) {.inline.} =
+  self.union1.struct1.union1.pfltVal = x
+
+proc pfltVal*(self: VARIANT): ptr FLOAT {.inline.} =
+  self.union1.struct1.union1.pfltVal
+
+proc pfltVal*(self: var VARIANT): var ptr FLOAT {.inline.} =
+  self.union1.struct1.union1.pfltVal
+
+proc `pdblVal=`*(self: var VARIANT, x: ptr DOUBLE) {.inline.} =
+  self.union1.struct1.union1.pdblVal = x
+
+proc pdblVal*(self: VARIANT): ptr DOUBLE {.inline.} =
+  self.union1.struct1.union1.pdblVal
+
+proc pdblVal*(self: var VARIANT): var ptr DOUBLE {.inline.} =
+  self.union1.struct1.union1.pdblVal
+
+proc `pboolVal=`*(self: var VARIANT, x: ptr VARIANT_BOOL) {.inline.} =
+  self.union1.struct1.union1.pboolVal = x
+
+proc pboolVal*(self: VARIANT): ptr VARIANT_BOOL {.inline.} =
+  self.union1.struct1.union1.pboolVal
+
+proc pboolVal*(self: var VARIANT): var ptr VARIANT_BOOL {.inline.} =
+  self.union1.struct1.union1.pboolVal
+
+proc `pscode=`*(self: var VARIANT, x: ptr SCODE) {.inline.} =
+  self.union1.struct1.union1.pscode = x
+
+proc pscode*(self: VARIANT): ptr SCODE {.inline.} =
+  self.union1.struct1.union1.pscode
+
+proc pscode*(self: var VARIANT): var ptr SCODE {.inline.} =
+  self.union1.struct1.union1.pscode
+
+proc `pcyVal=`*(self: var VARIANT, x: ptr CY) {.inline.} =
+  self.union1.struct1.union1.pcyVal = x
+
+proc pcyVal*(self: VARIANT): ptr CY {.inline.} =
+  self.union1.struct1.union1.pcyVal
+
+proc pcyVal*(self: var VARIANT): var ptr CY {.inline.} =
+  self.union1.struct1.union1.pcyVal
+
+proc `pdate=`*(self: var VARIANT, x: ptr DATE) {.inline.} =
+  self.union1.struct1.union1.pdate = x
+
+proc pdate*(self: VARIANT): ptr DATE {.inline.} =
+  self.union1.struct1.union1.pdate
+
+proc pdate*(self: var VARIANT): var ptr DATE {.inline.} =
+  self.union1.struct1.union1.pdate
+
+proc `pbstrVal=`*(self: var VARIANT, x: ptr BSTR) {.inline.} =
+  self.union1.struct1.union1.pbstrVal = x
+
+proc pbstrVal*(self: VARIANT): ptr BSTR {.inline.} =
+  self.union1.struct1.union1.pbstrVal
+
+proc pbstrVal*(self: var VARIANT): var ptr BSTR {.inline.} =
+  self.union1.struct1.union1.pbstrVal
+
+proc `ppunkVal=`*(self: var VARIANT, x: ptr ptr IUnknown) {.inline.} =
+  self.union1.struct1.union1.ppunkVal = x
+
+proc ppunkVal*(self: VARIANT): ptr ptr IUnknown {.inline.} =
+  self.union1.struct1.union1.ppunkVal
+
+proc ppunkVal*(self: var VARIANT): var ptr ptr IUnknown {.inline.} =
+  self.union1.struct1.union1.ppunkVal
+
+proc `ppdispVal=`*(self: var VARIANT, x: ptr ptr IDispatch) {.inline.} =
+  self.union1.struct1.union1.ppdispVal = x
+
+proc ppdispVal*(self: VARIANT): ptr ptr IDispatch {.inline.} =
+  self.union1.struct1.union1.ppdispVal
+
+proc ppdispVal*(self: var VARIANT): var ptr ptr IDispatch {.inline.} =
+  self.union1.struct1.union1.ppdispVal
+
+proc `pparray=`*(self: var VARIANT, x: ptr ptr SAFEARRAY) {.inline.} =
+  self.union1.struct1.union1.pparray = x
+
+proc pparray*(self: VARIANT): ptr ptr SAFEARRAY {.inline.} =
+  self.union1.struct1.union1.pparray
+
+proc pparray*(self: var VARIANT): var ptr ptr SAFEARRAY {.inline.} =
+  self.union1.struct1.union1.pparray
+
+proc `pvarVal=`*(self: var VARIANT, x: ptr VARIANT) {.inline.} =
+  self.union1.struct1.union1.pvarVal = x
+
+proc pvarVal*(self: VARIANT): ptr VARIANT {.inline.} =
+  self.union1.struct1.union1.pvarVal
+
+proc pvarVal*(self: var VARIANT): var ptr VARIANT {.inline.} =
+  self.union1.struct1.union1.pvarVal
+
+proc `byref=`*(self: var VARIANT, x: PVOID) {.inline.} =
+  self.union1.struct1.union1.byref = x
+
+proc byref*(self: VARIANT): PVOID {.inline.} =
+  self.union1.struct1.union1.byref
+
+proc byref*(self: var VARIANT): var PVOID {.inline.} =
+  self.union1.struct1.union1.byref
+
+proc `cVal=`*(self: var VARIANT, x: CHAR) {.inline.} =
+  self.union1.struct1.union1.cVal = x
+
+proc cVal*(self: VARIANT): CHAR {.inline.} =
+  self.union1.struct1.union1.cVal
+
+proc cVal*(self: var VARIANT): var CHAR {.inline.} =
+  self.union1.struct1.union1.cVal
+
+proc `uiVal=`*(self: var VARIANT, x: USHORT) {.inline.} =
+  self.union1.struct1.union1.uiVal = x
+
+proc uiVal*(self: VARIANT): USHORT {.inline.} =
+  self.union1.struct1.union1.uiVal
+
+proc uiVal*(self: var VARIANT): var USHORT {.inline.} =
+  self.union1.struct1.union1.uiVal
+
+proc `ulVal=`*(self: var VARIANT, x: ULONG) {.inline.} =
+  self.union1.struct1.union1.ulVal = x
+
+proc ulVal*(self: VARIANT): ULONG {.inline.} =
+  self.union1.struct1.union1.ulVal
+
+proc ulVal*(self: var VARIANT): var ULONG {.inline.} =
+  self.union1.struct1.union1.ulVal
+
+proc `ullVal=`*(self: var VARIANT, x: ULONGLONG) {.inline.} =
+  self.union1.struct1.union1.ullVal = x
+
+proc ullVal*(self: VARIANT): ULONGLONG {.inline.} =
+  self.union1.struct1.union1.ullVal
+
+proc ullVal*(self: var VARIANT): var ULONGLONG {.inline.} =
+  self.union1.struct1.union1.ullVal
+
+proc `intVal=`*(self: var VARIANT, x: INT) {.inline.} =
+  self.union1.struct1.union1.intVal = x
+
+proc intVal*(self: VARIANT): INT {.inline.} =
+  self.union1.struct1.union1.intVal
+
+proc intVal*(self: var VARIANT): var INT {.inline.} =
+  self.union1.struct1.union1.intVal
+
+proc `uintVal=`*(self: var VARIANT, x: UINT) {.inline.} =
+  self.union1.struct1.union1.uintVal = x
+
+proc uintVal*(self: VARIANT): UINT {.inline.} =
+  self.union1.struct1.union1.uintVal
+
+proc uintVal*(self: var VARIANT): var UINT {.inline.} =
+  self.union1.struct1.union1.uintVal
+
+proc `pdecVal=`*(self: var VARIANT, x: ptr DECIMAL) {.inline.} =
+  self.union1.struct1.union1.pdecVal = x
+
+proc pdecVal*(self: VARIANT): ptr DECIMAL {.inline.} =
+  self.union1.struct1.union1.pdecVal
+
+proc pdecVal*(self: var VARIANT): var ptr DECIMAL {.inline.} =
+  self.union1.struct1.union1.pdecVal
+
+proc `pcVal=`*(self: var VARIANT, x: ptr CHAR) {.inline.} =
+  self.union1.struct1.union1.pcVal = x
+
+proc pcVal*(self: VARIANT): ptr CHAR {.inline.} =
+  self.union1.struct1.union1.pcVal
+
+proc pcVal*(self: var VARIANT): var ptr CHAR {.inline.} =
+  self.union1.struct1.union1.pcVal
+
+proc `puiVal=`*(self: var VARIANT, x: ptr USHORT) {.inline.} =
+  self.union1.struct1.union1.puiVal = x
+
+proc puiVal*(self: VARIANT): ptr USHORT {.inline.} =
+  self.union1.struct1.union1.puiVal
+
+proc puiVal*(self: var VARIANT): var ptr USHORT {.inline.} =
+  self.union1.struct1.union1.puiVal
+
+proc `pulVal=`*(self: var VARIANT, x: ptr ULONG) {.inline.} =
+  self.union1.struct1.union1.pulVal = x
+
+proc pulVal*(self: VARIANT): ptr ULONG {.inline.} =
+  self.union1.struct1.union1.pulVal
+
+proc pulVal*(self: var VARIANT): var ptr ULONG {.inline.} =
+  self.union1.struct1.union1.pulVal
+
+proc `pullVal=`*(self: var VARIANT, x: ptr ULONGLONG) {.inline.} =
+  self.union1.struct1.union1.pullVal = x
+
+proc pullVal*(self: VARIANT): ptr ULONGLONG {.inline.} =
+  self.union1.struct1.union1.pullVal
+
+proc pullVal*(self: var VARIANT): var ptr ULONGLONG {.inline.} =
+  self.union1.struct1.union1.pullVal
+
+proc `pintVal=`*(self: var VARIANT, x: ptr INT) {.inline.} =
+  self.union1.struct1.union1.pintVal = x
+
+proc pintVal*(self: VARIANT): ptr INT {.inline.} =
+  self.union1.struct1.union1.pintVal
+
+proc pintVal*(self: var VARIANT): var ptr INT {.inline.} =
+  self.union1.struct1.union1.pintVal
+
+proc `puintVal=`*(self: var VARIANT, x: ptr UINT) {.inline.} =
+  self.union1.struct1.union1.puintVal = x
+
+proc puintVal*(self: VARIANT): ptr UINT {.inline.} =
+  self.union1.struct1.union1.puintVal
+
+proc puintVal*(self: var VARIANT): var ptr UINT {.inline.} =
+  self.union1.struct1.union1.puintVal
+
+proc `pvRecord=`*(self: var VARIANT, x: PVOID) {.inline.} =
+  self.union1.struct1.union1.struct1.pvRecord = x
+
+proc pvRecord*(self: VARIANT): PVOID {.inline.} =
+  self.union1.struct1.union1.struct1.pvRecord
+
+proc pvRecord*(self: var VARIANT): var PVOID {.inline.} =
+  self.union1.struct1.union1.struct1.pvRecord
+
+proc `pRecInfo=`*(self: var VARIANT, x: ptr IRecordInfo) {.inline.} =
+  self.union1.struct1.union1.struct1.pRecInfo = x
+
+proc pRecInfo*(self: VARIANT): ptr IRecordInfo {.inline.} =
+  self.union1.struct1.union1.struct1.pRecInfo
+
+proc pRecInfo*(self: var VARIANT): var ptr IRecordInfo {.inline.} =
+  self.union1.struct1.union1.struct1.pRecInfo
+
+proc `decVal=`*(self: var VARIANT, x: DECIMAL) {.inline.} =
+  self.union1.decVal = x
+
+proc decVal*(self: VARIANT): DECIMAL {.inline.} =
+  self.union1.decVal
+
+proc decVal*(self: var VARIANT): var DECIMAL {.inline.} =
+  self.union1.decVal
+
+proc `llVal=`*(self: var wireVARIANT, x: LONGLONG) {.inline.} =
+  self.union1.llVal = x
+
+proc llVal*(self: wireVARIANT): LONGLONG {.inline.} =
+  self.union1.llVal
+
+proc llVal*(self: var wireVARIANT): var LONGLONG {.inline.} =
+  self.union1.llVal
+
+proc `lVal=`*(self: var wireVARIANT, x: LONG) {.inline.} =
+  self.union1.lVal = x
+
+proc lVal*(self: wireVARIANT): LONG {.inline.} =
+  self.union1.lVal
+
+proc lVal*(self: var wireVARIANT): var LONG {.inline.} =
+  self.union1.lVal
+
+proc `bVal=`*(self: var wireVARIANT, x: BYTE) {.inline.} =
+  self.union1.bVal = x
+
+proc bVal*(self: wireVARIANT): BYTE {.inline.} =
+  self.union1.bVal
+
+proc bVal*(self: var wireVARIANT): var BYTE {.inline.} =
+  self.union1.bVal
+
+proc `iVal=`*(self: var wireVARIANT, x: SHORT) {.inline.} =
+  self.union1.iVal = x
+
+proc iVal*(self: wireVARIANT): SHORT {.inline.} =
+  self.union1.iVal
+
+proc iVal*(self: var wireVARIANT): var SHORT {.inline.} =
+  self.union1.iVal
+
+proc `fltVal=`*(self: var wireVARIANT, x: FLOAT) {.inline.} =
+  self.union1.fltVal = x
+
+proc fltVal*(self: wireVARIANT): FLOAT {.inline.} =
+  self.union1.fltVal
+
+proc fltVal*(self: var wireVARIANT): var FLOAT {.inline.} =
+  self.union1.fltVal
+
+proc `dblVal=`*(self: var wireVARIANT, x: DOUBLE) {.inline.} =
+  self.union1.dblVal = x
+
+proc dblVal*(self: wireVARIANT): DOUBLE {.inline.} =
+  self.union1.dblVal
+
+proc dblVal*(self: var wireVARIANT): var DOUBLE {.inline.} =
+  self.union1.dblVal
+
+proc `boolVal=`*(self: var wireVARIANT, x: VARIANT_BOOL) {.inline.} =
+  self.union1.boolVal = x
+
+proc boolVal*(self: wireVARIANT): VARIANT_BOOL {.inline.} =
+  self.union1.boolVal
+
+proc boolVal*(self: var wireVARIANT): var VARIANT_BOOL {.inline.} =
+  self.union1.boolVal
+
+proc `scode=`*(self: var wireVARIANT, x: SCODE) {.inline.} =
+  self.union1.scode = x
+
+proc scode*(self: wireVARIANT): SCODE {.inline.} =
+  self.union1.scode
+
+proc scode*(self: var wireVARIANT): var SCODE {.inline.} =
+  self.union1.scode
+
+proc `cyVal=`*(self: var wireVARIANT, x: CY) {.inline.} =
+  self.union1.cyVal = x
+
+proc cyVal*(self: wireVARIANT): CY {.inline.} =
+  self.union1.cyVal
+
+proc cyVal*(self: var wireVARIANT): var CY {.inline.} =
+  self.union1.cyVal
+
+proc `date=`*(self: var wireVARIANT, x: DATE) {.inline.} =
+  self.union1.date = x
+
+proc date*(self: wireVARIANT): DATE {.inline.} =
+  self.union1.date
+
+proc date*(self: var wireVARIANT): var DATE {.inline.} =
+  self.union1.date
+
+proc `bstrVal=`*(self: var wireVARIANT, x: wireBSTR) {.inline.} =
+  self.union1.bstrVal = x
+
+proc bstrVal*(self: wireVARIANT): wireBSTR {.inline.} =
+  self.union1.bstrVal
+
+proc bstrVal*(self: var wireVARIANT): var wireBSTR {.inline.} =
+  self.union1.bstrVal
+
+proc `punkVal=`*(self: var wireVARIANT, x: ptr IUnknown) {.inline.} =
+  self.union1.punkVal = x
+
+proc punkVal*(self: wireVARIANT): ptr IUnknown {.inline.} =
+  self.union1.punkVal
+
+proc punkVal*(self: var wireVARIANT): var ptr IUnknown {.inline.} =
+  self.union1.punkVal
+
+proc `pdispVal=`*(self: var wireVARIANT, x: ptr IDispatch) {.inline.} =
+  self.union1.pdispVal = x
+
+proc pdispVal*(self: wireVARIANT): ptr IDispatch {.inline.} =
+  self.union1.pdispVal
+
+proc pdispVal*(self: var wireVARIANT): var ptr IDispatch {.inline.} =
+  self.union1.pdispVal
+
+proc `parray=`*(self: var wireVARIANT, x: wirePSAFEARRAY) {.inline.} =
+  self.union1.parray = x
+
+proc parray*(self: wireVARIANT): wirePSAFEARRAY {.inline.} =
+  self.union1.parray
+
+proc parray*(self: var wireVARIANT): var wirePSAFEARRAY {.inline.} =
+  self.union1.parray
+
+proc `brecVal=`*(self: var wireVARIANT, x: wireBRECORD) {.inline.} =
+  self.union1.brecVal = x
+
+proc brecVal*(self: wireVARIANT): wireBRECORD {.inline.} =
+  self.union1.brecVal
+
+proc brecVal*(self: var wireVARIANT): var wireBRECORD {.inline.} =
+  self.union1.brecVal
+
+proc `pbVal=`*(self: var wireVARIANT, x: ptr BYTE) {.inline.} =
+  self.union1.pbVal = x
+
+proc pbVal*(self: wireVARIANT): ptr BYTE {.inline.} =
+  self.union1.pbVal
+
+proc pbVal*(self: var wireVARIANT): var ptr BYTE {.inline.} =
+  self.union1.pbVal
+
+proc `piVal=`*(self: var wireVARIANT, x: ptr SHORT) {.inline.} =
+  self.union1.piVal = x
+
+proc piVal*(self: wireVARIANT): ptr SHORT {.inline.} =
+  self.union1.piVal
+
+proc piVal*(self: var wireVARIANT): var ptr SHORT {.inline.} =
+  self.union1.piVal
+
+proc `plVal=`*(self: var wireVARIANT, x: ptr LONG) {.inline.} =
+  self.union1.plVal = x
+
+proc plVal*(self: wireVARIANT): ptr LONG {.inline.} =
+  self.union1.plVal
+
+proc plVal*(self: var wireVARIANT): var ptr LONG {.inline.} =
+  self.union1.plVal
+
+proc `pllVal=`*(self: var wireVARIANT, x: ptr LONGLONG) {.inline.} =
+  self.union1.pllVal = x
+
+proc pllVal*(self: wireVARIANT): ptr LONGLONG {.inline.} =
+  self.union1.pllVal
+
+proc pllVal*(self: var wireVARIANT): var ptr LONGLONG {.inline.} =
+  self.union1.pllVal
+
+proc `pfltVal=`*(self: var wireVARIANT, x: ptr FLOAT) {.inline.} =
+  self.union1.pfltVal = x
+
+proc pfltVal*(self: wireVARIANT): ptr FLOAT {.inline.} =
+  self.union1.pfltVal
+
+proc pfltVal*(self: var wireVARIANT): var ptr FLOAT {.inline.} =
+  self.union1.pfltVal
+
+proc `pdblVal=`*(self: var wireVARIANT, x: ptr DOUBLE) {.inline.} =
+  self.union1.pdblVal = x
+
+proc pdblVal*(self: wireVARIANT): ptr DOUBLE {.inline.} =
+  self.union1.pdblVal
+
+proc pdblVal*(self: var wireVARIANT): var ptr DOUBLE {.inline.} =
+  self.union1.pdblVal
+
+proc `pboolVal=`*(self: var wireVARIANT, x: ptr VARIANT_BOOL) {.inline.} =
+  self.union1.pboolVal = x
+
+proc pboolVal*(self: wireVARIANT): ptr VARIANT_BOOL {.inline.} =
+  self.union1.pboolVal
+
+proc pboolVal*(self: var wireVARIANT): var ptr VARIANT_BOOL {.inline.} =
+  self.union1.pboolVal
+
+proc `pscode=`*(self: var wireVARIANT, x: ptr SCODE) {.inline.} =
+  self.union1.pscode = x
+
+proc pscode*(self: wireVARIANT): ptr SCODE {.inline.} =
+  self.union1.pscode
+
+proc pscode*(self: var wireVARIANT): var ptr SCODE {.inline.} =
+  self.union1.pscode
+
+proc `pcyVal=`*(self: var wireVARIANT, x: ptr CY) {.inline.} =
+  self.union1.pcyVal = x
+
+proc pcyVal*(self: wireVARIANT): ptr CY {.inline.} =
+  self.union1.pcyVal
+
+proc pcyVal*(self: var wireVARIANT): var ptr CY {.inline.} =
+  self.union1.pcyVal
+
+proc `pdate=`*(self: var wireVARIANT, x: ptr DATE) {.inline.} =
+  self.union1.pdate = x
+
+proc pdate*(self: wireVARIANT): ptr DATE {.inline.} =
+  self.union1.pdate
+
+proc pdate*(self: var wireVARIANT): var ptr DATE {.inline.} =
+  self.union1.pdate
+
+proc `pbstrVal=`*(self: var wireVARIANT, x: ptr wireBSTR) {.inline.} =
+  self.union1.pbstrVal = x
+
+proc pbstrVal*(self: wireVARIANT): ptr wireBSTR {.inline.} =
+  self.union1.pbstrVal
+
+proc pbstrVal*(self: var wireVARIANT): var ptr wireBSTR {.inline.} =
+  self.union1.pbstrVal
+
+proc `ppunkVal=`*(self: var wireVARIANT, x: ptr ptr IUnknown) {.inline.} =
+  self.union1.ppunkVal = x
+
+proc ppunkVal*(self: wireVARIANT): ptr ptr IUnknown {.inline.} =
+  self.union1.ppunkVal
+
+proc ppunkVal*(self: var wireVARIANT): var ptr ptr IUnknown {.inline.} =
+  self.union1.ppunkVal
+
+proc `ppdispVal=`*(self: var wireVARIANT, x: ptr ptr IDispatch) {.inline.} =
+  self.union1.ppdispVal = x
+
+proc ppdispVal*(self: wireVARIANT): ptr ptr IDispatch {.inline.} =
+  self.union1.ppdispVal
+
+proc ppdispVal*(self: var wireVARIANT): var ptr ptr IDispatch {.inline.} =
+  self.union1.ppdispVal
+
+proc `pparray=`*(self: var wireVARIANT, x: ptr wirePSAFEARRAY) {.inline.} =
+  self.union1.pparray = x
+
+proc pparray*(self: wireVARIANT): ptr wirePSAFEARRAY {.inline.} =
+  self.union1.pparray
+
+proc pparray*(self: var wireVARIANT): var ptr wirePSAFEARRAY {.inline.} =
+  self.union1.pparray
+
+proc `pvarVal=`*(self: var wireVARIANT, x: ptr wireVARIANT) {.inline.} =
+  self.union1.pvarVal = x
+
+proc pvarVal*(self: wireVARIANT): ptr wireVARIANT {.inline.} =
+  self.union1.pvarVal
+
+proc pvarVal*(self: var wireVARIANT): var ptr wireVARIANT {.inline.} =
+  self.union1.pvarVal
+
+proc `cVal=`*(self: var wireVARIANT, x: CHAR) {.inline.} =
+  self.union1.cVal = x
+
+proc cVal*(self: wireVARIANT): CHAR {.inline.} =
+  self.union1.cVal
+
+proc cVal*(self: var wireVARIANT): var CHAR {.inline.} =
+  self.union1.cVal
+
+proc `uiVal=`*(self: var wireVARIANT, x: USHORT) {.inline.} =
+  self.union1.uiVal = x
+
+proc uiVal*(self: wireVARIANT): USHORT {.inline.} =
+  self.union1.uiVal
+
+proc uiVal*(self: var wireVARIANT): var USHORT {.inline.} =
+  self.union1.uiVal
+
+proc `ulVal=`*(self: var wireVARIANT, x: ULONG) {.inline.} =
+  self.union1.ulVal = x
+
+proc ulVal*(self: wireVARIANT): ULONG {.inline.} =
+  self.union1.ulVal
+
+proc ulVal*(self: var wireVARIANT): var ULONG {.inline.} =
+  self.union1.ulVal
+
+proc `ullVal=`*(self: var wireVARIANT, x: ULONGLONG) {.inline.} =
+  self.union1.ullVal = x
+
+proc ullVal*(self: wireVARIANT): ULONGLONG {.inline.} =
+  self.union1.ullVal
+
+proc ullVal*(self: var wireVARIANT): var ULONGLONG {.inline.} =
+  self.union1.ullVal
+
+proc `intVal=`*(self: var wireVARIANT, x: INT) {.inline.} =
+  self.union1.intVal = x
+
+proc intVal*(self: wireVARIANT): INT {.inline.} =
+  self.union1.intVal
+
+proc intVal*(self: var wireVARIANT): var INT {.inline.} =
+  self.union1.intVal
+
+proc `uintVal=`*(self: var wireVARIANT, x: UINT) {.inline.} =
+  self.union1.uintVal = x
+
+proc uintVal*(self: wireVARIANT): UINT {.inline.} =
+  self.union1.uintVal
+
+proc uintVal*(self: var wireVARIANT): var UINT {.inline.} =
+  self.union1.uintVal
+
+proc `decVal=`*(self: var wireVARIANT, x: DECIMAL) {.inline.} =
+  self.union1.decVal = x
+
+proc decVal*(self: wireVARIANT): DECIMAL {.inline.} =
+  self.union1.decVal
+
+proc decVal*(self: var wireVARIANT): var DECIMAL {.inline.} =
+  self.union1.decVal
+
+proc `pdecVal=`*(self: var wireVARIANT, x: ptr DECIMAL) {.inline.} =
+  self.union1.pdecVal = x
+
+proc pdecVal*(self: wireVARIANT): ptr DECIMAL {.inline.} =
+  self.union1.pdecVal
+
+proc pdecVal*(self: var wireVARIANT): var ptr DECIMAL {.inline.} =
+  self.union1.pdecVal
+
+proc `pcVal=`*(self: var wireVARIANT, x: ptr CHAR) {.inline.} =
+  self.union1.pcVal = x
+
+proc pcVal*(self: wireVARIANT): ptr CHAR {.inline.} =
+  self.union1.pcVal
+
+proc pcVal*(self: var wireVARIANT): var ptr CHAR {.inline.} =
+  self.union1.pcVal
+
+proc `puiVal=`*(self: var wireVARIANT, x: ptr USHORT) {.inline.} =
+  self.union1.puiVal = x
+
+proc puiVal*(self: wireVARIANT): ptr USHORT {.inline.} =
+  self.union1.puiVal
+
+proc puiVal*(self: var wireVARIANT): var ptr USHORT {.inline.} =
+  self.union1.puiVal
+
+proc `pulVal=`*(self: var wireVARIANT, x: ptr ULONG) {.inline.} =
+  self.union1.pulVal = x
+
+proc pulVal*(self: wireVARIANT): ptr ULONG {.inline.} =
+  self.union1.pulVal
+
+proc pulVal*(self: var wireVARIANT): var ptr ULONG {.inline.} =
+  self.union1.pulVal
+
+proc `pullVal=`*(self: var wireVARIANT, x: ptr ULONGLONG) {.inline.} =
+  self.union1.pullVal = x
+
+proc pullVal*(self: wireVARIANT): ptr ULONGLONG {.inline.} =
+  self.union1.pullVal
+
+proc pullVal*(self: var wireVARIANT): var ptr ULONGLONG {.inline.} =
+  self.union1.pullVal
+
+proc `pintVal=`*(self: var wireVARIANT, x: ptr INT) {.inline.} =
+  self.union1.pintVal = x
+
+proc pintVal*(self: wireVARIANT): ptr INT {.inline.} =
+  self.union1.pintVal
+
+proc pintVal*(self: var wireVARIANT): var ptr INT {.inline.} =
+  self.union1.pintVal
+
+proc `puintVal=`*(self: var wireVARIANT, x: ptr UINT) {.inline.} =
+  self.union1.puintVal = x
+
+proc puintVal*(self: wireVARIANT): ptr UINT {.inline.} =
+  self.union1.puintVal
+
+proc puintVal*(self: var wireVARIANT): var ptr UINT {.inline.} =
+  self.union1.puintVal
+
+proc `lptdesc=`*(self: var TYPEDESC, x: ptr TYPEDESC) {.inline.} =
+  self.union1.lptdesc = x
+
+proc lptdesc*(self: TYPEDESC): ptr TYPEDESC {.inline.} =
+  self.union1.lptdesc
+
+proc lptdesc*(self: var TYPEDESC): var ptr TYPEDESC {.inline.} =
+  self.union1.lptdesc
+
+proc `lpadesc=`*(self: var TYPEDESC, x: ptr ARRAYDESC) {.inline.} =
+  self.union1.lpadesc = x
+
+proc lpadesc*(self: TYPEDESC): ptr ARRAYDESC {.inline.} =
+  self.union1.lpadesc
+
+proc lpadesc*(self: var TYPEDESC): var ptr ARRAYDESC {.inline.} =
+  self.union1.lpadesc
+
+proc `hreftype=`*(self: var TYPEDESC, x: HREFTYPE) {.inline.} =
+  self.union1.hreftype = x
+
+proc hreftype*(self: TYPEDESC): HREFTYPE {.inline.} =
+  self.union1.hreftype
+
+proc hreftype*(self: var TYPEDESC): var HREFTYPE {.inline.} =
+  self.union1.hreftype
+
+proc `idldesc=`*(self: var ELEMDESC, x: IDLDESC) {.inline.} =
+  self.union1.idldesc = x
+
+proc idldesc*(self: ELEMDESC): IDLDESC {.inline.} =
+  self.union1.idldesc
+
+proc idldesc*(self: var ELEMDESC): var IDLDESC {.inline.} =
+  self.union1.idldesc
+
+proc `paramdesc=`*(self: var ELEMDESC, x: PARAMDESC) {.inline.} =
+  self.union1.paramdesc = x
+
+proc paramdesc*(self: ELEMDESC): PARAMDESC {.inline.} =
+  self.union1.paramdesc
+
+proc paramdesc*(self: var ELEMDESC): var PARAMDESC {.inline.} =
+  self.union1.paramdesc
+
+proc `oInst=`*(self: var VARDESC, x: ULONG) {.inline.} =
+  self.union1.oInst = x
+
+proc oInst*(self: VARDESC): ULONG {.inline.} =
+  self.union1.oInst
+
+proc oInst*(self: var VARDESC): var ULONG {.inline.} =
+  self.union1.oInst
+
+proc `lpvarValue=`*(self: var VARDESC, x: ptr VARIANT) {.inline.} =
+  self.union1.lpvarValue = x
+
+proc lpvarValue*(self: VARDESC): ptr VARIANT {.inline.} =
+  self.union1.lpvarValue
+
+proc lpvarValue*(self: var VARDESC): var ptr VARIANT {.inline.} =
+  self.union1.lpvarValue
+
+proc `vt=`*(self: var PROPVARIANT, x: VARTYPE) {.inline.} =
+  self.union1.struct1.vt = x
+
+proc vt*(self: PROPVARIANT): VARTYPE {.inline.} =
+  self.union1.struct1.vt
+
+proc vt*(self: var PROPVARIANT): var VARTYPE {.inline.} =
+  self.union1.struct1.vt
+
+proc `wReserved1=`*(self: var PROPVARIANT, x: PROPVAR_PAD1) {.inline.} =
+  self.union1.struct1.wReserved1 = x
+
+proc wReserved1*(self: PROPVARIANT): PROPVAR_PAD1 {.inline.} =
+  self.union1.struct1.wReserved1
+
+proc wReserved1*(self: var PROPVARIANT): var PROPVAR_PAD1 {.inline.} =
+  self.union1.struct1.wReserved1
+
+proc `wReserved2=`*(self: var PROPVARIANT, x: PROPVAR_PAD2) {.inline.} =
+  self.union1.struct1.wReserved2 = x
+
+proc wReserved2*(self: PROPVARIANT): PROPVAR_PAD2 {.inline.} =
+  self.union1.struct1.wReserved2
+
+proc wReserved2*(self: var PROPVARIANT): var PROPVAR_PAD2 {.inline.} =
+  self.union1.struct1.wReserved2
+
+proc `wReserved3=`*(self: var PROPVARIANT, x: PROPVAR_PAD3) {.inline.} =
+  self.union1.struct1.wReserved3 = x
+
+proc wReserved3*(self: PROPVARIANT): PROPVAR_PAD3 {.inline.} =
+  self.union1.struct1.wReserved3
+
+proc wReserved3*(self: var PROPVARIANT): var PROPVAR_PAD3 {.inline.} =
+  self.union1.struct1.wReserved3
+
+proc `cVal=`*(self: var PROPVARIANT, x: CHAR) {.inline.} =
+  self.union1.struct1.union1.cVal = x
+
+proc cVal*(self: PROPVARIANT): CHAR {.inline.} =
+  self.union1.struct1.union1.cVal
+
+proc cVal*(self: var PROPVARIANT): var CHAR {.inline.} =
+  self.union1.struct1.union1.cVal
+
+proc `bVal=`*(self: var PROPVARIANT, x: UCHAR) {.inline.} =
+  self.union1.struct1.union1.bVal = x
+
+proc bVal*(self: PROPVARIANT): UCHAR {.inline.} =
+  self.union1.struct1.union1.bVal
+
+proc bVal*(self: var PROPVARIANT): var UCHAR {.inline.} =
+  self.union1.struct1.union1.bVal
+
+proc `iVal=`*(self: var PROPVARIANT, x: SHORT) {.inline.} =
+  self.union1.struct1.union1.iVal = x
+
+proc iVal*(self: PROPVARIANT): SHORT {.inline.} =
+  self.union1.struct1.union1.iVal
+
+proc iVal*(self: var PROPVARIANT): var SHORT {.inline.} =
+  self.union1.struct1.union1.iVal
+
+proc `uiVal=`*(self: var PROPVARIANT, x: USHORT) {.inline.} =
+  self.union1.struct1.union1.uiVal = x
+
+proc uiVal*(self: PROPVARIANT): USHORT {.inline.} =
+  self.union1.struct1.union1.uiVal
+
+proc uiVal*(self: var PROPVARIANT): var USHORT {.inline.} =
+  self.union1.struct1.union1.uiVal
+
+proc `lVal=`*(self: var PROPVARIANT, x: LONG) {.inline.} =
+  self.union1.struct1.union1.lVal = x
+
+proc lVal*(self: PROPVARIANT): LONG {.inline.} =
+  self.union1.struct1.union1.lVal
+
+proc lVal*(self: var PROPVARIANT): var LONG {.inline.} =
+  self.union1.struct1.union1.lVal
+
+proc `ulVal=`*(self: var PROPVARIANT, x: ULONG) {.inline.} =
+  self.union1.struct1.union1.ulVal = x
+
+proc ulVal*(self: PROPVARIANT): ULONG {.inline.} =
+  self.union1.struct1.union1.ulVal
+
+proc ulVal*(self: var PROPVARIANT): var ULONG {.inline.} =
+  self.union1.struct1.union1.ulVal
+
+proc `intVal=`*(self: var PROPVARIANT, x: INT) {.inline.} =
+  self.union1.struct1.union1.intVal = x
+
+proc intVal*(self: PROPVARIANT): INT {.inline.} =
+  self.union1.struct1.union1.intVal
+
+proc intVal*(self: var PROPVARIANT): var INT {.inline.} =
+  self.union1.struct1.union1.intVal
+
+proc `uintVal=`*(self: var PROPVARIANT, x: UINT) {.inline.} =
+  self.union1.struct1.union1.uintVal = x
+
+proc uintVal*(self: PROPVARIANT): UINT {.inline.} =
+  self.union1.struct1.union1.uintVal
+
+proc uintVal*(self: var PROPVARIANT): var UINT {.inline.} =
+  self.union1.struct1.union1.uintVal
+
+proc `hVal=`*(self: var PROPVARIANT, x: LARGE_INTEGER) {.inline.} =
+  self.union1.struct1.union1.hVal = x
+
+proc hVal*(self: PROPVARIANT): LARGE_INTEGER {.inline.} =
+  self.union1.struct1.union1.hVal
+
+proc hVal*(self: var PROPVARIANT): var LARGE_INTEGER {.inline.} =
+  self.union1.struct1.union1.hVal
+
+proc `uhVal=`*(self: var PROPVARIANT, x: ULARGE_INTEGER) {.inline.} =
+  self.union1.struct1.union1.uhVal = x
+
+proc uhVal*(self: PROPVARIANT): ULARGE_INTEGER {.inline.} =
+  self.union1.struct1.union1.uhVal
+
+proc uhVal*(self: var PROPVARIANT): var ULARGE_INTEGER {.inline.} =
+  self.union1.struct1.union1.uhVal
+
+proc `fltVal=`*(self: var PROPVARIANT, x: FLOAT) {.inline.} =
+  self.union1.struct1.union1.fltVal = x
+
+proc fltVal*(self: PROPVARIANT): FLOAT {.inline.} =
+  self.union1.struct1.union1.fltVal
+
+proc fltVal*(self: var PROPVARIANT): var FLOAT {.inline.} =
+  self.union1.struct1.union1.fltVal
+
+proc `dblVal=`*(self: var PROPVARIANT, x: DOUBLE) {.inline.} =
+  self.union1.struct1.union1.dblVal = x
+
+proc dblVal*(self: PROPVARIANT): DOUBLE {.inline.} =
+  self.union1.struct1.union1.dblVal
+
+proc dblVal*(self: var PROPVARIANT): var DOUBLE {.inline.} =
+  self.union1.struct1.union1.dblVal
+
+proc `boolVal=`*(self: var PROPVARIANT, x: VARIANT_BOOL) {.inline.} =
+  self.union1.struct1.union1.boolVal = x
+
+proc boolVal*(self: PROPVARIANT): VARIANT_BOOL {.inline.} =
+  self.union1.struct1.union1.boolVal
+
+proc boolVal*(self: var PROPVARIANT): var VARIANT_BOOL {.inline.} =
+  self.union1.struct1.union1.boolVal
+
+proc `scode=`*(self: var PROPVARIANT, x: SCODE) {.inline.} =
+  self.union1.struct1.union1.scode = x
+
+proc scode*(self: PROPVARIANT): SCODE {.inline.} =
+  self.union1.struct1.union1.scode
+
+proc scode*(self: var PROPVARIANT): var SCODE {.inline.} =
+  self.union1.struct1.union1.scode
+
+proc `cyVal=`*(self: var PROPVARIANT, x: CY) {.inline.} =
+  self.union1.struct1.union1.cyVal = x
+
+proc cyVal*(self: PROPVARIANT): CY {.inline.} =
+  self.union1.struct1.union1.cyVal
+
+proc cyVal*(self: var PROPVARIANT): var CY {.inline.} =
+  self.union1.struct1.union1.cyVal
+
+proc `date=`*(self: var PROPVARIANT, x: DATE) {.inline.} =
+  self.union1.struct1.union1.date = x
+
+proc date*(self: PROPVARIANT): DATE {.inline.} =
+  self.union1.struct1.union1.date
+
+proc date*(self: var PROPVARIANT): var DATE {.inline.} =
+  self.union1.struct1.union1.date
+
+proc `filetime=`*(self: var PROPVARIANT, x: FILETIME) {.inline.} =
+  self.union1.struct1.union1.filetime = x
+
+proc filetime*(self: PROPVARIANT): FILETIME {.inline.} =
+  self.union1.struct1.union1.filetime
+
+proc filetime*(self: var PROPVARIANT): var FILETIME {.inline.} =
+  self.union1.struct1.union1.filetime
+
+proc `puuid=`*(self: var PROPVARIANT, x: ptr CLSID) {.inline.} =
+  self.union1.struct1.union1.puuid = x
+
+proc puuid*(self: PROPVARIANT): ptr CLSID {.inline.} =
+  self.union1.struct1.union1.puuid
+
+proc puuid*(self: var PROPVARIANT): var ptr CLSID {.inline.} =
+  self.union1.struct1.union1.puuid
+
+proc `pclipdata=`*(self: var PROPVARIANT, x: ptr CLIPDATA) {.inline.} =
+  self.union1.struct1.union1.pclipdata = x
+
+proc pclipdata*(self: PROPVARIANT): ptr CLIPDATA {.inline.} =
+  self.union1.struct1.union1.pclipdata
+
+proc pclipdata*(self: var PROPVARIANT): var ptr CLIPDATA {.inline.} =
+  self.union1.struct1.union1.pclipdata
+
+proc `bstrVal=`*(self: var PROPVARIANT, x: BSTR) {.inline.} =
+  self.union1.struct1.union1.bstrVal = x
+
+proc bstrVal*(self: PROPVARIANT): BSTR {.inline.} =
+  self.union1.struct1.union1.bstrVal
+
+proc bstrVal*(self: var PROPVARIANT): var BSTR {.inline.} =
+  self.union1.struct1.union1.bstrVal
+
+proc `bstrblobVal=`*(self: var PROPVARIANT, x: BSTRBLOB) {.inline.} =
+  self.union1.struct1.union1.bstrblobVal = x
+
+proc bstrblobVal*(self: PROPVARIANT): BSTRBLOB {.inline.} =
+  self.union1.struct1.union1.bstrblobVal
+
+proc bstrblobVal*(self: var PROPVARIANT): var BSTRBLOB {.inline.} =
+  self.union1.struct1.union1.bstrblobVal
+
+proc `blob=`*(self: var PROPVARIANT, x: BLOB) {.inline.} =
+  self.union1.struct1.union1.blob = x
+
+proc blob*(self: PROPVARIANT): BLOB {.inline.} =
+  self.union1.struct1.union1.blob
+
+proc blob*(self: var PROPVARIANT): var BLOB {.inline.} =
+  self.union1.struct1.union1.blob
+
+proc `pszVal=`*(self: var PROPVARIANT, x: LPSTR) {.inline.} =
+  self.union1.struct1.union1.pszVal = x
+
+proc pszVal*(self: PROPVARIANT): LPSTR {.inline.} =
+  self.union1.struct1.union1.pszVal
+
+proc pszVal*(self: var PROPVARIANT): var LPSTR {.inline.} =
+  self.union1.struct1.union1.pszVal
+
+proc `pwszVal=`*(self: var PROPVARIANT, x: LPWSTR) {.inline.} =
+  self.union1.struct1.union1.pwszVal = x
+
+proc pwszVal*(self: PROPVARIANT): LPWSTR {.inline.} =
+  self.union1.struct1.union1.pwszVal
+
+proc pwszVal*(self: var PROPVARIANT): var LPWSTR {.inline.} =
+  self.union1.struct1.union1.pwszVal
+
+proc `punkVal=`*(self: var PROPVARIANT, x: ptr IUnknown) {.inline.} =
+  self.union1.struct1.union1.punkVal = x
+
+proc punkVal*(self: PROPVARIANT): ptr IUnknown {.inline.} =
+  self.union1.struct1.union1.punkVal
+
+proc punkVal*(self: var PROPVARIANT): var ptr IUnknown {.inline.} =
+  self.union1.struct1.union1.punkVal
+
+proc `pdispVal=`*(self: var PROPVARIANT, x: ptr IDispatch) {.inline.} =
+  self.union1.struct1.union1.pdispVal = x
+
+proc pdispVal*(self: PROPVARIANT): ptr IDispatch {.inline.} =
+  self.union1.struct1.union1.pdispVal
+
+proc pdispVal*(self: var PROPVARIANT): var ptr IDispatch {.inline.} =
+  self.union1.struct1.union1.pdispVal
+
+proc `pStream=`*(self: var PROPVARIANT, x: ptr IStream) {.inline.} =
+  self.union1.struct1.union1.pStream = x
+
+proc pStream*(self: PROPVARIANT): ptr IStream {.inline.} =
+  self.union1.struct1.union1.pStream
+
+proc pStream*(self: var PROPVARIANT): var ptr IStream {.inline.} =
+  self.union1.struct1.union1.pStream
+
+proc `pStorage=`*(self: var PROPVARIANT, x: ptr IStorage) {.inline.} =
+  self.union1.struct1.union1.pStorage = x
+
+proc pStorage*(self: PROPVARIANT): ptr IStorage {.inline.} =
+  self.union1.struct1.union1.pStorage
+
+proc pStorage*(self: var PROPVARIANT): var ptr IStorage {.inline.} =
+  self.union1.struct1.union1.pStorage
+
+proc `pVersionedStream=`*(self: var PROPVARIANT, x: LPVERSIONEDSTREAM) {.inline.} =
+  self.union1.struct1.union1.pVersionedStream = x
+
+proc pVersionedStream*(self: PROPVARIANT): LPVERSIONEDSTREAM {.inline.} =
+  self.union1.struct1.union1.pVersionedStream
+
+proc pVersionedStream*(self: var PROPVARIANT): var LPVERSIONEDSTREAM {.inline.} =
+  self.union1.struct1.union1.pVersionedStream
+
+proc `parray=`*(self: var PROPVARIANT, x: LPSAFEARRAY) {.inline.} =
+  self.union1.struct1.union1.parray = x
+
+proc parray*(self: PROPVARIANT): LPSAFEARRAY {.inline.} =
+  self.union1.struct1.union1.parray
+
+proc parray*(self: var PROPVARIANT): var LPSAFEARRAY {.inline.} =
+  self.union1.struct1.union1.parray
+
+proc `cac=`*(self: var PROPVARIANT, x: CAC) {.inline.} =
+  self.union1.struct1.union1.cac = x
+
+proc cac*(self: PROPVARIANT): CAC {.inline.} =
+  self.union1.struct1.union1.cac
+
+proc cac*(self: var PROPVARIANT): var CAC {.inline.} =
+  self.union1.struct1.union1.cac
+
+proc `caub=`*(self: var PROPVARIANT, x: CAUB) {.inline.} =
+  self.union1.struct1.union1.caub = x
+
+proc caub*(self: PROPVARIANT): CAUB {.inline.} =
+  self.union1.struct1.union1.caub
+
+proc caub*(self: var PROPVARIANT): var CAUB {.inline.} =
+  self.union1.struct1.union1.caub
+
+proc `cai=`*(self: var PROPVARIANT, x: CAI) {.inline.} =
+  self.union1.struct1.union1.cai = x
+
+proc cai*(self: PROPVARIANT): CAI {.inline.} =
+  self.union1.struct1.union1.cai
+
+proc cai*(self: var PROPVARIANT): var CAI {.inline.} =
+  self.union1.struct1.union1.cai
+
+proc `caui=`*(self: var PROPVARIANT, x: CAUI) {.inline.} =
+  self.union1.struct1.union1.caui = x
+
+proc caui*(self: PROPVARIANT): CAUI {.inline.} =
+  self.union1.struct1.union1.caui
+
+proc caui*(self: var PROPVARIANT): var CAUI {.inline.} =
+  self.union1.struct1.union1.caui
+
+proc `cal=`*(self: var PROPVARIANT, x: CAL) {.inline.} =
+  self.union1.struct1.union1.cal = x
+
+proc cal*(self: PROPVARIANT): CAL {.inline.} =
+  self.union1.struct1.union1.cal
+
+proc cal*(self: var PROPVARIANT): var CAL {.inline.} =
+  self.union1.struct1.union1.cal
+
+proc `caul=`*(self: var PROPVARIANT, x: CAUL) {.inline.} =
+  self.union1.struct1.union1.caul = x
+
+proc caul*(self: PROPVARIANT): CAUL {.inline.} =
+  self.union1.struct1.union1.caul
+
+proc caul*(self: var PROPVARIANT): var CAUL {.inline.} =
+  self.union1.struct1.union1.caul
+
+proc `cah=`*(self: var PROPVARIANT, x: CAH) {.inline.} =
+  self.union1.struct1.union1.cah = x
+
+proc cah*(self: PROPVARIANT): CAH {.inline.} =
+  self.union1.struct1.union1.cah
+
+proc cah*(self: var PROPVARIANT): var CAH {.inline.} =
+  self.union1.struct1.union1.cah
+
+proc `cauh=`*(self: var PROPVARIANT, x: CAUH) {.inline.} =
+  self.union1.struct1.union1.cauh = x
+
+proc cauh*(self: PROPVARIANT): CAUH {.inline.} =
+  self.union1.struct1.union1.cauh
+
+proc cauh*(self: var PROPVARIANT): var CAUH {.inline.} =
+  self.union1.struct1.union1.cauh
+
+proc `caflt=`*(self: var PROPVARIANT, x: CAFLT) {.inline.} =
+  self.union1.struct1.union1.caflt = x
+
+proc caflt*(self: PROPVARIANT): CAFLT {.inline.} =
+  self.union1.struct1.union1.caflt
+
+proc caflt*(self: var PROPVARIANT): var CAFLT {.inline.} =
+  self.union1.struct1.union1.caflt
+
+proc `cadbl=`*(self: var PROPVARIANT, x: CADBL) {.inline.} =
+  self.union1.struct1.union1.cadbl = x
+
+proc cadbl*(self: PROPVARIANT): CADBL {.inline.} =
+  self.union1.struct1.union1.cadbl
+
+proc cadbl*(self: var PROPVARIANT): var CADBL {.inline.} =
+  self.union1.struct1.union1.cadbl
+
+proc `cabool=`*(self: var PROPVARIANT, x: CABOOL) {.inline.} =
+  self.union1.struct1.union1.cabool = x
+
+proc cabool*(self: PROPVARIANT): CABOOL {.inline.} =
+  self.union1.struct1.union1.cabool
+
+proc cabool*(self: var PROPVARIANT): var CABOOL {.inline.} =
+  self.union1.struct1.union1.cabool
+
+proc `cascode=`*(self: var PROPVARIANT, x: CASCODE) {.inline.} =
+  self.union1.struct1.union1.cascode = x
+
+proc cascode*(self: PROPVARIANT): CASCODE {.inline.} =
+  self.union1.struct1.union1.cascode
+
+proc cascode*(self: var PROPVARIANT): var CASCODE {.inline.} =
+  self.union1.struct1.union1.cascode
+
+proc `cacy=`*(self: var PROPVARIANT, x: CACY) {.inline.} =
+  self.union1.struct1.union1.cacy = x
+
+proc cacy*(self: PROPVARIANT): CACY {.inline.} =
+  self.union1.struct1.union1.cacy
+
+proc cacy*(self: var PROPVARIANT): var CACY {.inline.} =
+  self.union1.struct1.union1.cacy
+
+proc `cadate=`*(self: var PROPVARIANT, x: CADATE) {.inline.} =
+  self.union1.struct1.union1.cadate = x
+
+proc cadate*(self: PROPVARIANT): CADATE {.inline.} =
+  self.union1.struct1.union1.cadate
+
+proc cadate*(self: var PROPVARIANT): var CADATE {.inline.} =
+  self.union1.struct1.union1.cadate
+
+proc `cafiletime=`*(self: var PROPVARIANT, x: CAFILETIME) {.inline.} =
+  self.union1.struct1.union1.cafiletime = x
+
+proc cafiletime*(self: PROPVARIANT): CAFILETIME {.inline.} =
+  self.union1.struct1.union1.cafiletime
+
+proc cafiletime*(self: var PROPVARIANT): var CAFILETIME {.inline.} =
+  self.union1.struct1.union1.cafiletime
+
+proc `cauuid=`*(self: var PROPVARIANT, x: CACLSID) {.inline.} =
+  self.union1.struct1.union1.cauuid = x
+
+proc cauuid*(self: PROPVARIANT): CACLSID {.inline.} =
+  self.union1.struct1.union1.cauuid
+
+proc cauuid*(self: var PROPVARIANT): var CACLSID {.inline.} =
+  self.union1.struct1.union1.cauuid
+
+proc `caclipdata=`*(self: var PROPVARIANT, x: CACLIPDATA) {.inline.} =
+  self.union1.struct1.union1.caclipdata = x
+
+proc caclipdata*(self: PROPVARIANT): CACLIPDATA {.inline.} =
+  self.union1.struct1.union1.caclipdata
+
+proc caclipdata*(self: var PROPVARIANT): var CACLIPDATA {.inline.} =
+  self.union1.struct1.union1.caclipdata
+
+proc `cabstr=`*(self: var PROPVARIANT, x: CABSTR) {.inline.} =
+  self.union1.struct1.union1.cabstr = x
+
+proc cabstr*(self: PROPVARIANT): CABSTR {.inline.} =
+  self.union1.struct1.union1.cabstr
+
+proc cabstr*(self: var PROPVARIANT): var CABSTR {.inline.} =
+  self.union1.struct1.union1.cabstr
+
+proc `cabstrblob=`*(self: var PROPVARIANT, x: CABSTRBLOB) {.inline.} =
+  self.union1.struct1.union1.cabstrblob = x
+
+proc cabstrblob*(self: PROPVARIANT): CABSTRBLOB {.inline.} =
+  self.union1.struct1.union1.cabstrblob
+
+proc cabstrblob*(self: var PROPVARIANT): var CABSTRBLOB {.inline.} =
+  self.union1.struct1.union1.cabstrblob
+
+proc `calpstr=`*(self: var PROPVARIANT, x: CALPSTR) {.inline.} =
+  self.union1.struct1.union1.calpstr = x
+
+proc calpstr*(self: PROPVARIANT): CALPSTR {.inline.} =
+  self.union1.struct1.union1.calpstr
+
+proc calpstr*(self: var PROPVARIANT): var CALPSTR {.inline.} =
+  self.union1.struct1.union1.calpstr
+
+proc `calpwstr=`*(self: var PROPVARIANT, x: CALPWSTR) {.inline.} =
+  self.union1.struct1.union1.calpwstr = x
+
+proc calpwstr*(self: PROPVARIANT): CALPWSTR {.inline.} =
+  self.union1.struct1.union1.calpwstr
+
+proc calpwstr*(self: var PROPVARIANT): var CALPWSTR {.inline.} =
+  self.union1.struct1.union1.calpwstr
+
+proc `capropvar=`*(self: var PROPVARIANT, x: CAPROPVARIANT) {.inline.} =
+  self.union1.struct1.union1.capropvar = x
+
+proc capropvar*(self: PROPVARIANT): CAPROPVARIANT {.inline.} =
+  self.union1.struct1.union1.capropvar
+
+proc capropvar*(self: var PROPVARIANT): var CAPROPVARIANT {.inline.} =
+  self.union1.struct1.union1.capropvar
+
+proc `pcVal=`*(self: var PROPVARIANT, x: ptr CHAR) {.inline.} =
+  self.union1.struct1.union1.pcVal = x
+
+proc pcVal*(self: PROPVARIANT): ptr CHAR {.inline.} =
+  self.union1.struct1.union1.pcVal
+
+proc pcVal*(self: var PROPVARIANT): var ptr CHAR {.inline.} =
+  self.union1.struct1.union1.pcVal
+
+proc `pbVal=`*(self: var PROPVARIANT, x: ptr UCHAR) {.inline.} =
+  self.union1.struct1.union1.pbVal = x
+
+proc pbVal*(self: PROPVARIANT): ptr UCHAR {.inline.} =
+  self.union1.struct1.union1.pbVal
+
+proc pbVal*(self: var PROPVARIANT): var ptr UCHAR {.inline.} =
+  self.union1.struct1.union1.pbVal
+
+proc `piVal=`*(self: var PROPVARIANT, x: ptr SHORT) {.inline.} =
+  self.union1.struct1.union1.piVal = x
+
+proc piVal*(self: PROPVARIANT): ptr SHORT {.inline.} =
+  self.union1.struct1.union1.piVal
+
+proc piVal*(self: var PROPVARIANT): var ptr SHORT {.inline.} =
+  self.union1.struct1.union1.piVal
+
+proc `puiVal=`*(self: var PROPVARIANT, x: ptr USHORT) {.inline.} =
+  self.union1.struct1.union1.puiVal = x
+
+proc puiVal*(self: PROPVARIANT): ptr USHORT {.inline.} =
+  self.union1.struct1.union1.puiVal
+
+proc puiVal*(self: var PROPVARIANT): var ptr USHORT {.inline.} =
+  self.union1.struct1.union1.puiVal
+
+proc `plVal=`*(self: var PROPVARIANT, x: ptr LONG) {.inline.} =
+  self.union1.struct1.union1.plVal = x
+
+proc plVal*(self: PROPVARIANT): ptr LONG {.inline.} =
+  self.union1.struct1.union1.plVal
+
+proc plVal*(self: var PROPVARIANT): var ptr LONG {.inline.} =
+  self.union1.struct1.union1.plVal
+
+proc `pulVal=`*(self: var PROPVARIANT, x: ptr ULONG) {.inline.} =
+  self.union1.struct1.union1.pulVal = x
+
+proc pulVal*(self: PROPVARIANT): ptr ULONG {.inline.} =
+  self.union1.struct1.union1.pulVal
+
+proc pulVal*(self: var PROPVARIANT): var ptr ULONG {.inline.} =
+  self.union1.struct1.union1.pulVal
+
+proc `pintVal=`*(self: var PROPVARIANT, x: ptr INT) {.inline.} =
+  self.union1.struct1.union1.pintVal = x
+
+proc pintVal*(self: PROPVARIANT): ptr INT {.inline.} =
+  self.union1.struct1.union1.pintVal
+
+proc pintVal*(self: var PROPVARIANT): var ptr INT {.inline.} =
+  self.union1.struct1.union1.pintVal
+
+proc `puintVal=`*(self: var PROPVARIANT, x: ptr UINT) {.inline.} =
+  self.union1.struct1.union1.puintVal = x
+
+proc puintVal*(self: PROPVARIANT): ptr UINT {.inline.} =
+  self.union1.struct1.union1.puintVal
+
+proc puintVal*(self: var PROPVARIANT): var ptr UINT {.inline.} =
+  self.union1.struct1.union1.puintVal
+
+proc `pfltVal=`*(self: var PROPVARIANT, x: ptr FLOAT) {.inline.} =
+  self.union1.struct1.union1.pfltVal = x
+
+proc pfltVal*(self: PROPVARIANT): ptr FLOAT {.inline.} =
+  self.union1.struct1.union1.pfltVal
+
+proc pfltVal*(self: var PROPVARIANT): var ptr FLOAT {.inline.} =
+  self.union1.struct1.union1.pfltVal
+
+proc `pdblVal=`*(self: var PROPVARIANT, x: ptr DOUBLE) {.inline.} =
+  self.union1.struct1.union1.pdblVal = x
+
+proc pdblVal*(self: PROPVARIANT): ptr DOUBLE {.inline.} =
+  self.union1.struct1.union1.pdblVal
+
+proc pdblVal*(self: var PROPVARIANT): var ptr DOUBLE {.inline.} =
+  self.union1.struct1.union1.pdblVal
+
+proc `pboolVal=`*(self: var PROPVARIANT, x: ptr VARIANT_BOOL) {.inline.} =
+  self.union1.struct1.union1.pboolVal = x
+
+proc pboolVal*(self: PROPVARIANT): ptr VARIANT_BOOL {.inline.} =
+  self.union1.struct1.union1.pboolVal
+
+proc pboolVal*(self: var PROPVARIANT): var ptr VARIANT_BOOL {.inline.} =
+  self.union1.struct1.union1.pboolVal
+
+proc `pdecVal=`*(self: var PROPVARIANT, x: ptr DECIMAL) {.inline.} =
+  self.union1.struct1.union1.pdecVal = x
+
+proc pdecVal*(self: PROPVARIANT): ptr DECIMAL {.inline.} =
+  self.union1.struct1.union1.pdecVal
+
+proc pdecVal*(self: var PROPVARIANT): var ptr DECIMAL {.inline.} =
+  self.union1.struct1.union1.pdecVal
+
+proc `pscode=`*(self: var PROPVARIANT, x: ptr SCODE) {.inline.} =
+  self.union1.struct1.union1.pscode = x
+
+proc pscode*(self: PROPVARIANT): ptr SCODE {.inline.} =
+  self.union1.struct1.union1.pscode
+
+proc pscode*(self: var PROPVARIANT): var ptr SCODE {.inline.} =
+  self.union1.struct1.union1.pscode
+
+proc `pcyVal=`*(self: var PROPVARIANT, x: ptr CY) {.inline.} =
+  self.union1.struct1.union1.pcyVal = x
+
+proc pcyVal*(self: PROPVARIANT): ptr CY {.inline.} =
+  self.union1.struct1.union1.pcyVal
+
+proc pcyVal*(self: var PROPVARIANT): var ptr CY {.inline.} =
+  self.union1.struct1.union1.pcyVal
+
+proc `pdate=`*(self: var PROPVARIANT, x: ptr DATE) {.inline.} =
+  self.union1.struct1.union1.pdate = x
+
+proc pdate*(self: PROPVARIANT): ptr DATE {.inline.} =
+  self.union1.struct1.union1.pdate
+
+proc pdate*(self: var PROPVARIANT): var ptr DATE {.inline.} =
+  self.union1.struct1.union1.pdate
+
+proc `pbstrVal=`*(self: var PROPVARIANT, x: ptr BSTR) {.inline.} =
+  self.union1.struct1.union1.pbstrVal = x
+
+proc pbstrVal*(self: PROPVARIANT): ptr BSTR {.inline.} =
+  self.union1.struct1.union1.pbstrVal
+
+proc pbstrVal*(self: var PROPVARIANT): var ptr BSTR {.inline.} =
+  self.union1.struct1.union1.pbstrVal
+
+proc `ppunkVal=`*(self: var PROPVARIANT, x: ptr ptr IUnknown) {.inline.} =
+  self.union1.struct1.union1.ppunkVal = x
+
+proc ppunkVal*(self: PROPVARIANT): ptr ptr IUnknown {.inline.} =
+  self.union1.struct1.union1.ppunkVal
+
+proc ppunkVal*(self: var PROPVARIANT): var ptr ptr IUnknown {.inline.} =
+  self.union1.struct1.union1.ppunkVal
+
+proc `ppdispVal=`*(self: var PROPVARIANT, x: ptr ptr IDispatch) {.inline.} =
+  self.union1.struct1.union1.ppdispVal = x
+
+proc ppdispVal*(self: PROPVARIANT): ptr ptr IDispatch {.inline.} =
+  self.union1.struct1.union1.ppdispVal
+
+proc ppdispVal*(self: var PROPVARIANT): var ptr ptr IDispatch {.inline.} =
+  self.union1.struct1.union1.ppdispVal
+
+proc `pparray=`*(self: var PROPVARIANT, x: ptr LPSAFEARRAY) {.inline.} =
+  self.union1.struct1.union1.pparray = x
+
+proc pparray*(self: PROPVARIANT): ptr LPSAFEARRAY {.inline.} =
+  self.union1.struct1.union1.pparray
+
+proc pparray*(self: var PROPVARIANT): var ptr LPSAFEARRAY {.inline.} =
+  self.union1.struct1.union1.pparray
+
+proc `pvarVal=`*(self: var PROPVARIANT, x: ptr PROPVARIANT) {.inline.} =
+  self.union1.struct1.union1.pvarVal = x
+
+proc pvarVal*(self: PROPVARIANT): ptr PROPVARIANT {.inline.} =
+  self.union1.struct1.union1.pvarVal
+
+proc pvarVal*(self: var PROPVARIANT): var ptr PROPVARIANT {.inline.} =
+  self.union1.struct1.union1.pvarVal
+
+proc `decVal=`*(self: var PROPVARIANT, x: DECIMAL) {.inline.} =
+  self.union1.decVal = x
+
+proc decVal*(self: PROPVARIANT): DECIMAL {.inline.} =
+  self.union1.decVal
+
+proc decVal*(self: var PROPVARIANT): var DECIMAL {.inline.} =
+  self.union1.decVal
+
+proc `propid=`*(self: var PROPSPEC, x: PROPID) {.inline.} =
+  self.union1.propid = x
+
+proc propid*(self: PROPSPEC): PROPID {.inline.} =
+  self.union1.propid
+
+proc propid*(self: var PROPSPEC): var PROPID {.inline.} =
+  self.union1.propid
+
+proc `lpwstr=`*(self: var PROPSPEC, x: LPOLESTR) {.inline.} =
+  self.union1.lpwstr = x
+
+proc lpwstr*(self: PROPSPEC): LPOLESTR {.inline.} =
+  self.union1.lpwstr
+
+proc lpwstr*(self: var PROPSPEC): var LPOLESTR {.inline.} =
+  self.union1.lpwstr
+
+proc `pOleStr=`*(self: var STRRET, x: LPWSTR) {.inline.} =
+  self.union1.pOleStr = x
+
+proc pOleStr*(self: STRRET): LPWSTR {.inline.} =
+  self.union1.pOleStr
+
+proc pOleStr*(self: var STRRET): var LPWSTR {.inline.} =
+  self.union1.pOleStr
+
+proc `uOffset=`*(self: var STRRET, x: UINT) {.inline.} =
+  self.union1.uOffset = x
+
+proc uOffset*(self: STRRET): UINT {.inline.} =
+  self.union1.uOffset
+
+proc uOffset*(self: var STRRET): var UINT {.inline.} =
+  self.union1.uOffset
+
+proc `cStr=`*(self: var STRRET, x: array[260, char]) {.inline.} =
+  self.union1.cStr = x
+
+proc cStr*(self: STRRET): array[260, char] {.inline.} =
+  self.union1.cStr
+
+proc cStr*(self: var STRRET): var array[260, char] {.inline.} =
+  self.union1.cStr
+
+proc QueryInterface*(
+    self: ptr IUnknown, riid: REFIID, ppvObject: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryInterface(self, riid, ppvObject)
+
+proc AddRef*(self: ptr IUnknown): ULONG {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddRef(self)
+
+proc Release*(self: ptr IUnknown): ULONG {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Release(self)
+
+proc Begin_QueryInterface*(
+    self: ptr AsyncIUnknown, riid: REFIID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Begin_QueryInterface(self, riid)
+
+proc Finish_QueryInterface*(
+    self: ptr AsyncIUnknown, ppvObject: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Finish_QueryInterface(self, ppvObject)
+
+proc Begin_AddRef*(self: ptr AsyncIUnknown): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Begin_AddRef(self)
+
+proc Finish_AddRef*(self: ptr AsyncIUnknown): ULONG {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Finish_AddRef(self)
+
+proc Begin_Release*(self: ptr AsyncIUnknown): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Begin_Release(self)
+
+proc Finish_Release*(self: ptr AsyncIUnknown): ULONG {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Finish_Release(self)
+
+proc CreateInstance*(
+    self: ptr IClassFactory,
+    pUnkOuter: ptr IUnknown,
+    riid: REFIID,
+    ppvObject: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstance(self, pUnkOuter, riid, ppvObject)
+
+proc LockServer*(self: ptr IClassFactory, fLock: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LockServer(self, fLock)
+
+proc GetUnmarshalClass*(
+    self: ptr IMarshal,
+    riid: REFIID,
+    pv: pointer,
+    dwDestContext: DWORD,
+    pvDestContext: pointer,
+    mshlflags: DWORD,
+    pCid: ptr CLSID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUnmarshalClass(
+      self, riid, pv, dwDestContext, pvDestContext, mshlflags, pCid
+    )
+
+proc GetMarshalSizeMax*(
+    self: ptr IMarshal,
+    riid: REFIID,
+    pv: pointer,
+    dwDestContext: DWORD,
+    pvDestContext: pointer,
+    mshlflags: DWORD,
+    pSize: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMarshalSizeMax(
+      self, riid, pv, dwDestContext, pvDestContext, mshlflags, pSize
+    )
+
+proc MarshalInterface*(
+    self: ptr IMarshal,
+    pStm: ptr IStream,
+    riid: REFIID,
+    pv: pointer,
+    dwDestContext: DWORD,
+    pvDestContext: pointer,
+    mshlflags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MarshalInterface(
+      self, pStm, riid, pv, dwDestContext, pvDestContext, mshlflags
+    )
+
+proc UnmarshalInterface*(
+    self: ptr IMarshal, pStm: ptr IStream, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnmarshalInterface(self, pStm, riid, ppv)
+
+proc ReleaseMarshalData*(
+    self: ptr IMarshal, pStm: ptr IStream
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseMarshalData(self, pStm)
+
+proc DisconnectObject*(
+    self: ptr IMarshal, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DisconnectObject(self, dwReserved)
+
+proc Alloc*(self: ptr IMalloc, cb: SIZE_T): pointer {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Alloc(self, cb)
+
+proc Realloc*(self: ptr IMalloc, pv: pointer, cb: SIZE_T): pointer {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Realloc(self, pv, cb)
+
+proc Free*(self: ptr IMalloc, pv: pointer): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Free(self, pv)
+
+proc GetSize*(self: ptr IMalloc, pv: pointer): SIZE_T {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSize(self, pv)
+
+proc DidAlloc*(self: ptr IMalloc, pv: pointer): int32 {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DidAlloc(self, pv)
+
+proc HeapMinimize*(self: ptr IMalloc): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HeapMinimize(self)
+
+proc GetClassForHandler*(
+    self: ptr IStdMarshalInfo,
+    dwDestContext: DWORD,
+    pvDestContext: pointer,
+    pClsid: ptr CLSID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetClassForHandler(self, dwDestContext, pvDestContext, pClsid)
+
+proc AddConnection*(
+    self: ptr IExternalConnection, extconn: DWORD, reserved: DWORD
+): DWORD {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddConnection(self, extconn, reserved)
+
+proc ReleaseConnection*(
+    self: ptr IExternalConnection,
+    extconn: DWORD,
+    reserved: DWORD,
+    fLastReleaseCloses: WINBOOL,
+): DWORD {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseConnection(self, extconn, reserved, fLastReleaseCloses)
+
+proc QueryMultipleInterfaces*(
+    self: ptr IMultiQI, cMQIs: ULONG, pMQIs: ptr MULTI_QI
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryMultipleInterfaces(self, cMQIs, pMQIs)
+
+proc Begin_QueryMultipleInterfaces*(
+    self: ptr AsyncIMultiQI, cMQIs: ULONG, pMQIs: ptr MULTI_QI
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Begin_QueryMultipleInterfaces(self, cMQIs, pMQIs)
+
+proc Finish_QueryMultipleInterfaces*(
+    self: ptr AsyncIMultiQI, pMQIs: ptr MULTI_QI
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Finish_QueryMultipleInterfaces(self, pMQIs)
+
+proc QueryInternalInterface*(
+    self: ptr IInternalUnknown, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryInternalInterface(self, riid, ppv)
+
+proc Next*(
+    self: ptr IEnumUnknown,
+    celt: ULONG,
+    rgelt: ptr ptr IUnknown,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumUnknown, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumUnknown): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumUnknown, ppenum: ptr ptr IEnumUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc Next*(
+    self: ptr IEnumString, celt: ULONG, rgelt: ptr LPOLESTR, pceltFetched: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumString, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumString): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumString, ppenum: ptr ptr IEnumString
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc Read*(
+    self: ptr ISequentialStream, pv: pointer, cb: ULONG, pcbRead: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Read(self, pv, cb, pcbRead)
+
+proc Write*(
+    self: ptr ISequentialStream, pv: pointer, cb: ULONG, pcbWritten: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Write(self, pv, cb, pcbWritten)
+
+proc Seek*(
+    self: ptr IStream,
+    dlibMove: LARGE_INTEGER,
+    dwOrigin: DWORD,
+    plibNewPosition: ptr ULARGE_INTEGER,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Seek(self, dlibMove, dwOrigin, plibNewPosition)
+
+proc SetSize*(
+    self: ptr IStream, libNewSize: ULARGE_INTEGER
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSize(self, libNewSize)
+
+proc CopyTo*(
+    self: ptr IStream,
+    pstm: ptr IStream,
+    cb: ULARGE_INTEGER,
+    pcbRead: ptr ULARGE_INTEGER,
+    pcbWritten: ptr ULARGE_INTEGER,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CopyTo(self, pstm, cb, pcbRead, pcbWritten)
+
+proc Commit*(self: ptr IStream, grfCommitFlags: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Commit(self, grfCommitFlags)
+
+proc Revert*(self: ptr IStream): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Revert(self)
+
+proc LockRegion*(
+    self: ptr IStream, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LockRegion(self, libOffset, cb, dwLockType)
+
+proc UnlockRegion*(
+    self: ptr IStream, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnlockRegion(self, libOffset, cb, dwLockType)
+
+proc Stat*(
+    self: ptr IStream, pstatstg: ptr STATSTG, grfStatFlag: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Stat(self, pstatstg, grfStatFlag)
+
+proc Clone*(self: ptr IStream, ppstm: ptr ptr IStream): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppstm)
+
+proc GetBuffer*(
+    self: ptr IRpcChannelBuffer, pMessage: ptr RPCOLEMESSAGE, riid: REFIID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBuffer(self, pMessage, riid)
+
+proc SendReceive*(
+    self: ptr IRpcChannelBuffer, pMessage: ptr RPCOLEMESSAGE, pStatus: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SendReceive(self, pMessage, pStatus)
+
+proc FreeBuffer*(
+    self: ptr IRpcChannelBuffer, pMessage: ptr RPCOLEMESSAGE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FreeBuffer(self, pMessage)
+
+proc GetDestCtx*(
+    self: ptr IRpcChannelBuffer, pdwDestContext: ptr DWORD, ppvDestContext: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDestCtx(self, pdwDestContext, ppvDestContext)
+
+proc IsConnected*(self: ptr IRpcChannelBuffer): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsConnected(self)
+
+proc GetProtocolVersion*(
+    self: ptr IRpcChannelBuffer2, pdwVersion: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProtocolVersion(self, pdwVersion)
+
+proc Send*(
+    self: ptr IAsyncRpcChannelBuffer,
+    pMsg: ptr RPCOLEMESSAGE,
+    pSync: ptr ISynchronize,
+    pulStatus: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Send(self, pMsg, pSync, pulStatus)
+
+proc Receive*(
+    self: ptr IAsyncRpcChannelBuffer, pMsg: ptr RPCOLEMESSAGE, pulStatus: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Receive(self, pMsg, pulStatus)
+
+proc GetDestCtxEx*(
+    self: ptr IAsyncRpcChannelBuffer,
+    pMsg: ptr RPCOLEMESSAGE,
+    pdwDestContext: ptr DWORD,
+    ppvDestContext: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDestCtxEx(self, pMsg, pdwDestContext, ppvDestContext)
+
+proc Send*(
+    self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, pulStatus: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Send(self, pMsg, pulStatus)
+
+proc Receive*(
+    self: ptr IRpcChannelBuffer3,
+    pMsg: ptr RPCOLEMESSAGE,
+    ulSize: ULONG,
+    pulStatus: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Receive(self, pMsg, ulSize, pulStatus)
+
+proc Cancel*(
+    self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Cancel(self, pMsg)
+
+proc GetCallContext*(
+    self: ptr IRpcChannelBuffer3,
+    pMsg: ptr RPCOLEMESSAGE,
+    riid: REFIID,
+    pInterface: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCallContext(self, pMsg, riid, pInterface)
+
+proc GetDestCtxEx*(
+    self: ptr IRpcChannelBuffer3,
+    pMsg: ptr RPCOLEMESSAGE,
+    pdwDestContext: ptr DWORD,
+    ppvDestContext: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDestCtxEx(self, pMsg, pdwDestContext, ppvDestContext)
+
+proc GetState*(
+    self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, pState: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetState(self, pMsg, pState)
+
+proc RegisterAsync*(
+    self: ptr IRpcChannelBuffer3, pMsg: ptr RPCOLEMESSAGE, pAsyncMgr: ptr IAsyncManager
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterAsync(self, pMsg, pAsyncMgr)
+
+proc NegotiateSyntax*(
+    self: ptr IRpcSyntaxNegotiate, pMsg: ptr RPCOLEMESSAGE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NegotiateSyntax(self, pMsg)
+
+proc Connect*(
+    self: ptr IRpcProxyBuffer, pRpcChannelBuffer: ptr IRpcChannelBuffer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Connect(self, pRpcChannelBuffer)
+
+proc Disconnect*(self: ptr IRpcProxyBuffer): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Disconnect(self)
+
+proc Connect*(
+    self: ptr IRpcStubBuffer, pUnkServer: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Connect(self, pUnkServer)
+
+proc Disconnect*(self: ptr IRpcStubBuffer): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Disconnect(self)
+
+proc Invoke*(
+    self: ptr IRpcStubBuffer,
+    prpcmsg: ptr RPCOLEMESSAGE,
+    pRpcChannelBuffer: ptr IRpcChannelBuffer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Invoke(self, prpcmsg, pRpcChannelBuffer)
+
+proc IsIIDSupported*(
+    self: ptr IRpcStubBuffer, riid: REFIID
+): ptr IRpcStubBuffer {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsIIDSupported(self, riid)
+
+proc CountRefs*(self: ptr IRpcStubBuffer): ULONG {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CountRefs(self)
+
+proc DebugServerQueryInterface*(
+    self: ptr IRpcStubBuffer, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DebugServerQueryInterface(self, ppv)
+
+proc DebugServerRelease*(
+    self: ptr IRpcStubBuffer, pv: pointer
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DebugServerRelease(self, pv)
+
+proc CreateProxy*(
+    self: ptr IPSFactoryBuffer,
+    pUnkOuter: ptr IUnknown,
+    riid: REFIID,
+    ppProxy: ptr ptr IRpcProxyBuffer,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateProxy(self, pUnkOuter, riid, ppProxy, ppv)
+
+proc CreateStub*(
+    self: ptr IPSFactoryBuffer,
+    riid: REFIID,
+    pUnkServer: ptr IUnknown,
+    ppStub: ptr ptr IRpcStubBuffer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateStub(self, riid, pUnkServer, ppStub)
+
+proc ClientGetSize*(
+    self: ptr IChannelHook, uExtent: REFGUID, riid: REFIID, pDataSize: ptr ULONG
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ClientGetSize(self, uExtent, riid, pDataSize)
+
+proc ClientFillBuffer*(
+    self: ptr IChannelHook,
+    uExtent: REFGUID,
+    riid: REFIID,
+    pDataSize: ptr ULONG,
+    pDataBuffer: pointer,
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ClientFillBuffer(self, uExtent, riid, pDataSize, pDataBuffer)
+
+proc ClientNotify*(
+    self: ptr IChannelHook,
+    uExtent: REFGUID,
+    riid: REFIID,
+    cbDataSize: ULONG,
+    pDataBuffer: pointer,
+    lDataRep: DWORD,
+    hrFault: HRESULT,
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ClientNotify(
+      self, uExtent, riid, cbDataSize, pDataBuffer, lDataRep, hrFault
+    )
+
+proc ServerNotify*(
+    self: ptr IChannelHook,
+    uExtent: REFGUID,
+    riid: REFIID,
+    cbDataSize: ULONG,
+    pDataBuffer: pointer,
+    lDataRep: DWORD,
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ServerNotify(self, uExtent, riid, cbDataSize, pDataBuffer, lDataRep)
+
+proc ServerGetSize*(
+    self: ptr IChannelHook,
+    uExtent: REFGUID,
+    riid: REFIID,
+    hrFault: HRESULT,
+    pDataSize: ptr ULONG,
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ServerGetSize(self, uExtent, riid, hrFault, pDataSize)
+
+proc ServerFillBuffer*(
+    self: ptr IChannelHook,
+    uExtent: REFGUID,
+    riid: REFIID,
+    pDataSize: ptr ULONG,
+    pDataBuffer: pointer,
+    hrFault: HRESULT,
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ServerFillBuffer(self, uExtent, riid, pDataSize, pDataBuffer, hrFault)
+
+proc QueryBlanket*(
+    self: ptr IClientSecurity,
+    pProxy: ptr IUnknown,
+    pAuthnSvc: ptr DWORD,
+    pAuthzSvc: ptr DWORD,
+    pServerPrincName: ptr ptr OLECHAR,
+    pAuthnLevel: ptr DWORD,
+    pImpLevel: ptr DWORD,
+    pAuthInfo: ptr pointer,
+    pCapabilites: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryBlanket(
+      self, pProxy, pAuthnSvc, pAuthzSvc, pServerPrincName, pAuthnLevel, pImpLevel,
+      pAuthInfo, pCapabilites,
+    )
+
+proc SetBlanket*(
+    self: ptr IClientSecurity,
+    pProxy: ptr IUnknown,
+    dwAuthnSvc: DWORD,
+    dwAuthzSvc: DWORD,
+    pServerPrincName: ptr OLECHAR,
+    dwAuthnLevel: DWORD,
+    dwImpLevel: DWORD,
+    pAuthInfo: pointer,
+    dwCapabilities: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBlanket(
+      self, pProxy, dwAuthnSvc, dwAuthzSvc, pServerPrincName, dwAuthnLevel, dwImpLevel,
+      pAuthInfo, dwCapabilities,
+    )
+
+proc CopyProxy*(
+    self: ptr IClientSecurity, pProxy: ptr IUnknown, ppCopy: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CopyProxy(self, pProxy, ppCopy)
+
+proc QueryBlanket*(
+    self: ptr IServerSecurity,
+    pAuthnSvc: ptr DWORD,
+    pAuthzSvc: ptr DWORD,
+    pServerPrincName: ptr ptr OLECHAR,
+    pAuthnLevel: ptr DWORD,
+    pImpLevel: ptr DWORD,
+    pPrivs: ptr pointer,
+    pCapabilities: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryBlanket(
+      self, pAuthnSvc, pAuthzSvc, pServerPrincName, pAuthnLevel, pImpLevel, pPrivs,
+      pCapabilities,
+    )
+
+proc ImpersonateClient*(self: ptr IServerSecurity): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ImpersonateClient(self)
+
+proc RevertToSelf*(self: ptr IServerSecurity): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RevertToSelf(self)
+
+proc IsImpersonating*(self: ptr IServerSecurity): WINBOOL {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsImpersonating(self)
+
+proc Set*(
+    self: ptr IRpcOptions,
+    pPrx: ptr IUnknown,
+    dwProperty: RPCOPT_PROPERTIES,
+    dwValue: ULONG_PTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Set(self, pPrx, dwProperty, dwValue)
+
+proc Query*(
+    self: ptr IRpcOptions,
+    pPrx: ptr IUnknown,
+    dwProperty: RPCOPT_PROPERTIES,
+    pdwValue: ptr ULONG_PTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Query(self, pPrx, dwProperty, pdwValue)
+
+proc Set*(
+    self: ptr IGlobalOptions, dwProperty: GLOBALOPT_PROPERTIES, dwValue: ULONG_PTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Set(self, dwProperty, dwValue)
+
+proc Query*(
+    self: ptr IGlobalOptions, dwProperty: GLOBALOPT_PROPERTIES, pdwValue: ptr ULONG_PTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Query(self, dwProperty, pdwValue)
+
+proc LoadDllServer*(self: ptr ISurrogate, Clsid: REFCLSID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LoadDllServer(self, Clsid)
+
+proc FreeSurrogate*(self: ptr ISurrogate): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FreeSurrogate(self)
+
+proc RegisterInterfaceInGlobal*(
+    self: ptr IGlobalInterfaceTable,
+    pUnk: ptr IUnknown,
+    riid: REFIID,
+    pdwCookie: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterInterfaceInGlobal(self, pUnk, riid, pdwCookie)
+
+proc RevokeInterfaceFromGlobal*(
+    self: ptr IGlobalInterfaceTable, dwCookie: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RevokeInterfaceFromGlobal(self, dwCookie)
+
+proc GetInterfaceFromGlobal*(
+    self: ptr IGlobalInterfaceTable, dwCookie: DWORD, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInterfaceFromGlobal(self, dwCookie, riid, ppv)
+
+proc Wait*(
+    self: ptr ISynchronize, dwFlags: DWORD, dwMilliseconds: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Wait(self, dwFlags, dwMilliseconds)
+
+proc Signal*(self: ptr ISynchronize): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Signal(self)
+
+proc Reset*(self: ptr ISynchronize): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc GetHandle*(
+    self: ptr ISynchronizeHandle, ph: ptr HANDLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHandle(self, ph)
+
+proc SetEventHandle*(
+    self: ptr ISynchronizeEvent, ph: ptr HANDLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetEventHandle(self, ph)
+
+proc AddSynchronize*(
+    self: ptr ISynchronizeContainer, pSync: ptr ISynchronize
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddSynchronize(self, pSync)
+
+proc WaitMultiple*(
+    self: ptr ISynchronizeContainer,
+    dwFlags: DWORD,
+    dwTimeOut: DWORD,
+    ppSync: ptr ptr ISynchronize,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WaitMultiple(self, dwFlags, dwTimeOut, ppSync)
+
+proc ReleaseMutex*(self: ptr ISynchronizeMutex): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseMutex(self)
+
+proc Cancel*(
+    self: ptr ICancelMethodCalls, ulSeconds: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Cancel(self, ulSeconds)
+
+proc TestCancel*(self: ptr ICancelMethodCalls): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TestCancel(self)
+
+proc CompleteCall*(
+    self: ptr IAsyncManager, Result: HRESULT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CompleteCall(self, Result)
+
+proc GetCallContext*(
+    self: ptr IAsyncManager, riid: REFIID, pInterface: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCallContext(self, riid, pInterface)
+
+proc GetState*(
+    self: ptr IAsyncManager, pulStateFlags: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetState(self, pulStateFlags)
+
+proc CreateCall*(
+    self: ptr ICallFactory,
+    riid: REFIID,
+    pCtrlUnk: ptr IUnknown,
+    riid2: REFIID,
+    ppv: ptr ptr IUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateCall(self, riid, pCtrlUnk, riid2, ppv)
+
+proc GetDCOMProtocolVersion*(
+    self: ptr IRpcHelper, pComVersion: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDCOMProtocolVersion(self, pComVersion)
+
+proc GetIIDFromOBJREF*(
+    self: ptr IRpcHelper, pObjRef: pointer, piid: ptr ptr IID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIIDFromOBJREF(self, pObjRef, piid)
+
+proc ReleaseMarshalBuffer*(
+    self: ptr IReleaseMarshalBuffers,
+    pMsg: ptr RPCOLEMESSAGE,
+    dwFlags: DWORD,
+    pChnl: ptr IUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseMarshalBuffer(self, pMsg, dwFlags, pChnl)
+
+proc WaitMultiple*(
+    self: ptr IWaitMultiple, timeout: DWORD, pSync: ptr ptr ISynchronize
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WaitMultiple(self, timeout, pSync)
+
+proc AddSynchronize*(
+    self: ptr IWaitMultiple, pSync: ptr ISynchronize
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddSynchronize(self, pSync)
+
+proc EnableCOMDynamicAddrTracking*(
+    self: ptr IAddrTrackingControl
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnableCOMDynamicAddrTracking(self)
+
+proc DisableCOMDynamicAddrTracking*(
+    self: ptr IAddrTrackingControl
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DisableCOMDynamicAddrTracking(self)
+
+proc GetCurrentAddrExclusionList*(
+    self: ptr IAddrExclusionControl, riid: REFIID, ppEnumerator: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentAddrExclusionList(self, riid, ppEnumerator)
+
+proc UpdateAddrExclusionList*(
+    self: ptr IAddrExclusionControl, pEnumerator: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UpdateAddrExclusionList(self, pEnumerator)
+
+proc Pull*(
+    self: ptr IPipeByte, buf: ptr BYTE, cRequest: ULONG, pcReturned: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Pull(self, buf, cRequest, pcReturned)
+
+proc Push*(
+    self: ptr IPipeByte, buf: ptr BYTE, cSent: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Push(self, buf, cSent)
+
+proc Pull*(
+    self: ptr IPipeLong, buf: ptr LONG, cRequest: ULONG, pcReturned: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Pull(self, buf, cRequest, pcReturned)
+
+proc Push*(
+    self: ptr IPipeLong, buf: ptr LONG, cSent: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Push(self, buf, cSent)
+
+proc Pull*(
+    self: ptr IPipeDouble, buf: ptr DOUBLE, cRequest: ULONG, pcReturned: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Pull(self, buf, cRequest, pcReturned)
+
+proc Push*(
+    self: ptr IPipeDouble, buf: ptr DOUBLE, cSent: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Push(self, buf, cSent)
+
+proc Next*(
+    self: ptr IEnumContextProps,
+    celt: ULONG,
+    pContextProperties: ptr ContextProperty,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, pContextProperties, pceltFetched)
+
+proc Skip*(self: ptr IEnumContextProps, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumContextProps): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumContextProps, ppEnumContextProps: ptr ptr IEnumContextProps
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppEnumContextProps)
+
+proc Count*(self: ptr IEnumContextProps, pcelt: ptr ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Count(self, pcelt)
+
+proc SetProperty*(
+    self: ptr IContext, rpolicyId: REFGUID, flags: CPFLAGS, pUnk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetProperty(self, rpolicyId, flags, pUnk)
+
+proc RemoveProperty*(
+    self: ptr IContext, rPolicyId: REFGUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveProperty(self, rPolicyId)
+
+proc GetProperty*(
+    self: ptr IContext, rGuid: REFGUID, pFlags: ptr CPFLAGS, ppUnk: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty(self, rGuid, pFlags, ppUnk)
+
+proc EnumContextProps*(
+    self: ptr IContext, ppEnumContextProps: ptr ptr IEnumContextProps
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumContextProps(self, ppEnumContextProps)
+
+proc GetCurrentApartmentType*(
+    self: ptr IComThreadingInfo, pAptType: ptr APTTYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentApartmentType(self, pAptType)
+
+proc GetCurrentThreadType*(
+    self: ptr IComThreadingInfo, pThreadType: ptr THDTYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentThreadType(self, pThreadType)
+
+proc GetCurrentLogicalThreadId*(
+    self: ptr IComThreadingInfo, pguidLogicalThreadId: ptr GUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentLogicalThreadId(self, pguidLogicalThreadId)
+
+proc SetCurrentLogicalThreadId*(
+    self: ptr IComThreadingInfo, rguid: REFGUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCurrentLogicalThreadId(self, rguid)
+
+proc ResetInitializerTimeout*(
+    self: ptr IProcessInitControl, dwSecondsRemaining: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResetInitializerTimeout(self, dwSecondsRemaining)
+
+proc GetMarshalingContextAttribute*(
+    self: ptr IMarshalingStream,
+    attribute: CO_MARSHALING_CONTEXT_ATTRIBUTES,
+    pAttributeValue: ptr ULONG_PTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMarshalingContextAttribute(self, attribute, pAttributeValue)
+
+proc PreAlloc*(self: ptr IMallocSpy, cbRequest: SIZE_T): SIZE_T {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreAlloc(self, cbRequest)
+
+proc PostAlloc*(self: ptr IMallocSpy, pActual: pointer): pointer {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostAlloc(self, pActual)
+
+proc PreFree*(
+    self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL
+): pointer {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreFree(self, pRequest, fSpyed)
+
+proc PostFree*(self: ptr IMallocSpy, fSpyed: WINBOOL): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostFree(self, fSpyed)
+
+proc PreRealloc*(
+    self: ptr IMallocSpy,
+    pRequest: pointer,
+    cbRequest: SIZE_T,
+    ppNewRequest: ptr pointer,
+    fSpyed: WINBOOL,
+): SIZE_T {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreRealloc(self, pRequest, cbRequest, ppNewRequest, fSpyed)
+
+proc PostRealloc*(
+    self: ptr IMallocSpy, pActual: pointer, fSpyed: WINBOOL
+): pointer {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostRealloc(self, pActual, fSpyed)
+
+proc PreGetSize*(
+    self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL
+): pointer {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreGetSize(self, pRequest, fSpyed)
+
+proc PostGetSize*(
+    self: ptr IMallocSpy, cbActual: SIZE_T, fSpyed: WINBOOL
+): SIZE_T {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostGetSize(self, cbActual, fSpyed)
+
+proc PreDidAlloc*(
+    self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL
+): pointer {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreDidAlloc(self, pRequest, fSpyed)
+
+proc PostDidAlloc*(
+    self: ptr IMallocSpy, pRequest: pointer, fSpyed: WINBOOL, fActual: int32
+): int32 {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostDidAlloc(self, pRequest, fSpyed, fActual)
+
+proc PreHeapMinimize*(self: ptr IMallocSpy): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreHeapMinimize(self)
+
+proc PostHeapMinimize*(self: ptr IMallocSpy): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostHeapMinimize(self)
+
+proc RegisterObjectBound*(
+    self: ptr IBindCtx, punk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterObjectBound(self, punk)
+
+proc RevokeObjectBound*(
+    self: ptr IBindCtx, punk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RevokeObjectBound(self, punk)
+
+proc ReleaseBoundObjects*(self: ptr IBindCtx): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseBoundObjects(self)
+
+proc SetBindOptions*(
+    self: ptr IBindCtx, pbindopts: ptr BIND_OPTS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBindOptions(self, pbindopts)
+
+proc GetBindOptions*(
+    self: ptr IBindCtx, pbindopts: ptr BIND_OPTS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBindOptions(self, pbindopts)
+
+proc GetRunningObjectTable*(
+    self: ptr IBindCtx, pprot: ptr ptr IRunningObjectTable
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRunningObjectTable(self, pprot)
+
+proc RegisterObjectParam*(
+    self: ptr IBindCtx, pszKey: LPOLESTR, punk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterObjectParam(self, pszKey, punk)
+
+proc GetObjectParam*(
+    self: ptr IBindCtx, pszKey: LPOLESTR, ppunk: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObjectParam(self, pszKey, ppunk)
+
+proc EnumObjectParam*(
+    self: ptr IBindCtx, ppenum: ptr ptr IEnumString
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumObjectParam(self, ppenum)
+
+proc RevokeObjectParam*(
+    self: ptr IBindCtx, pszKey: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RevokeObjectParam(self, pszKey)
+
+proc Next*(
+    self: ptr IEnumMoniker,
+    celt: ULONG,
+    rgelt: ptr ptr IMoniker,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumMoniker, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumMoniker): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumMoniker, ppenum: ptr ptr IEnumMoniker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc GetRunningClass*(
+    self: ptr IRunnableObject, lpClsid: LPCLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRunningClass(self, lpClsid)
+
+proc Run*(self: ptr IRunnableObject, pbc: LPBINDCTX): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Run(self, pbc)
+
+proc IsRunning*(self: ptr IRunnableObject): WINBOOL {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsRunning(self)
+
+proc LockRunning*(
+    self: ptr IRunnableObject, fLock: WINBOOL, fLastUnlockCloses: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LockRunning(self, fLock, fLastUnlockCloses)
+
+proc SetContainedObject*(
+    self: ptr IRunnableObject, fContained: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetContainedObject(self, fContained)
+
+proc Register*(
+    self: ptr IRunningObjectTable,
+    grfFlags: DWORD,
+    punkObject: ptr IUnknown,
+    pmkObjectName: ptr IMoniker,
+    pdwRegister: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Register(self, grfFlags, punkObject, pmkObjectName, pdwRegister)
+
+proc Revoke*(
+    self: ptr IRunningObjectTable, dwRegister: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Revoke(self, dwRegister)
+
+proc IsRunning*(
+    self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsRunning(self, pmkObjectName)
+
+proc GetObject*(
+    self: ptr IRunningObjectTable,
+    pmkObjectName: ptr IMoniker,
+    ppunkObject: ptr ptr IUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObject(self, pmkObjectName, ppunkObject)
+
+proc NoteChangeTime*(
+    self: ptr IRunningObjectTable, dwRegister: DWORD, pfiletime: ptr FILETIME
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NoteChangeTime(self, dwRegister, pfiletime)
+
+proc GetTimeOfLastChange*(
+    self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker, pfiletime: ptr FILETIME
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTimeOfLastChange(self, pmkObjectName, pfiletime)
+
+proc EnumRunning*(
+    self: ptr IRunningObjectTable, ppenumMoniker: ptr ptr IEnumMoniker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumRunning(self, ppenumMoniker)
+
+proc GetClassID*(self: ptr IPersist, pClassID: ptr CLSID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetClassID(self, pClassID)
+
+proc IsDirty*(self: ptr IPersistStream): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDirty(self)
+
+proc Load*(self: ptr IPersistStream, pStm: ptr IStream): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load(self, pStm)
+
+proc Save*(
+    self: ptr IPersistStream, pStm: ptr IStream, fClearDirty: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Save(self, pStm, fClearDirty)
+
+proc GetSizeMax*(
+    self: ptr IPersistStream, pcbSize: ptr ULARGE_INTEGER
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSizeMax(self, pcbSize)
+
+proc BindToObject*(
+    self: ptr IMoniker,
+    pbc: ptr IBindCtx,
+    pmkToLeft: ptr IMoniker,
+    riidResult: REFIID,
+    ppvResult: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BindToObject(self, pbc, pmkToLeft, riidResult, ppvResult)
+
+proc BindToStorage*(
+    self: ptr IMoniker,
+    pbc: ptr IBindCtx,
+    pmkToLeft: ptr IMoniker,
+    riid: REFIID,
+    ppvObj: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BindToStorage(self, pbc, pmkToLeft, riid, ppvObj)
+
+proc Reduce*(
+    self: ptr IMoniker,
+    pbc: ptr IBindCtx,
+    dwReduceHowFar: DWORD,
+    ppmkToLeft: ptr ptr IMoniker,
+    ppmkReduced: ptr ptr IMoniker,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reduce(self, pbc, dwReduceHowFar, ppmkToLeft, ppmkReduced)
+
+proc ComposeWith*(
+    self: ptr IMoniker,
+    pmkRight: ptr IMoniker,
+    fOnlyIfNotGeneric: WINBOOL,
+    ppmkComposite: ptr ptr IMoniker,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ComposeWith(self, pmkRight, fOnlyIfNotGeneric, ppmkComposite)
+
+proc Enum*(
+    self: ptr IMoniker, fForward: WINBOOL, ppenumMoniker: ptr ptr IEnumMoniker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Enum(self, fForward, ppenumMoniker)
+
+proc IsEqual*(
+    self: ptr IMoniker, pmkOtherMoniker: ptr IMoniker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsEqual(self, pmkOtherMoniker)
+
+proc Hash*(self: ptr IMoniker, pdwHash: ptr DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Hash(self, pdwHash)
+
+proc IsRunning*(
+    self: ptr IMoniker,
+    pbc: ptr IBindCtx,
+    pmkToLeft: ptr IMoniker,
+    pmkNewlyRunning: ptr IMoniker,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsRunning(self, pbc, pmkToLeft, pmkNewlyRunning)
+
+proc GetTimeOfLastChange*(
+    self: ptr IMoniker,
+    pbc: ptr IBindCtx,
+    pmkToLeft: ptr IMoniker,
+    pFileTime: ptr FILETIME,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTimeOfLastChange(self, pbc, pmkToLeft, pFileTime)
+
+proc Inverse*(self: ptr IMoniker, ppmk: ptr ptr IMoniker): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Inverse(self, ppmk)
+
+proc CommonPrefixWith*(
+    self: ptr IMoniker, pmkOther: ptr IMoniker, ppmkPrefix: ptr ptr IMoniker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CommonPrefixWith(self, pmkOther, ppmkPrefix)
+
+proc RelativePathTo*(
+    self: ptr IMoniker, pmkOther: ptr IMoniker, ppmkRelPath: ptr ptr IMoniker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RelativePathTo(self, pmkOther, ppmkRelPath)
+
+proc GetDisplayName*(
+    self: ptr IMoniker,
+    pbc: ptr IBindCtx,
+    pmkToLeft: ptr IMoniker,
+    ppszDisplayName: ptr LPOLESTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDisplayName(self, pbc, pmkToLeft, ppszDisplayName)
+
+proc ParseDisplayName*(
+    self: ptr IMoniker,
+    pbc: ptr IBindCtx,
+    pmkToLeft: ptr IMoniker,
+    pszDisplayName: LPOLESTR,
+    pchEaten: ptr ULONG,
+    ppmkOut: ptr ptr IMoniker,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseDisplayName(
+      self, pbc, pmkToLeft, pszDisplayName, pchEaten, ppmkOut
+    )
+
+proc IsSystemMoniker*(
+    self: ptr IMoniker, pdwMksys: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsSystemMoniker(self, pdwMksys)
+
+proc GetComparisonData*(
+    self: ptr IROTData, pbData: ptr uint8, cbMax: ULONG, pcbData: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetComparisonData(self, pbData, cbMax, pcbData)
+
+proc Next*(
+    self: ptr IEnumSTATSTG, celt: ULONG, rgelt: ptr STATSTG, pceltFetched: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumSTATSTG, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumSTATSTG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumSTATSTG, ppenum: ptr ptr IEnumSTATSTG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc CreateStream*(
+    self: ptr IStorage,
+    pwcsName: ptr OLECHAR,
+    grfMode: DWORD,
+    reserved1: DWORD,
+    reserved2: DWORD,
+    ppstm: ptr ptr IStream,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateStream(self, pwcsName, grfMode, reserved1, reserved2, ppstm)
+
+proc OpenStream*(
+    self: ptr IStorage,
+    pwcsName: ptr OLECHAR,
+    reserved1: pointer,
+    grfMode: DWORD,
+    reserved2: DWORD,
+    ppstm: ptr ptr IStream,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OpenStream(self, pwcsName, reserved1, grfMode, reserved2, ppstm)
+
+proc CreateStorage*(
+    self: ptr IStorage,
+    pwcsName: ptr OLECHAR,
+    grfMode: DWORD,
+    reserved1: DWORD,
+    reserved2: DWORD,
+    ppstg: ptr ptr IStorage,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateStorage(self, pwcsName, grfMode, reserved1, reserved2, ppstg)
+
+proc OpenStorage*(
+    self: ptr IStorage,
+    pwcsName: ptr OLECHAR,
+    pstgPriority: ptr IStorage,
+    grfMode: DWORD,
+    snbExclude: SNB,
+    reserved: DWORD,
+    ppstg: ptr ptr IStorage,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OpenStorage(
+      self, pwcsName, pstgPriority, grfMode, snbExclude, reserved, ppstg
+    )
+
+proc CopyTo*(
+    self: ptr IStorage,
+    ciidExclude: DWORD,
+    rgiidExclude: ptr IID,
+    snbExclude: SNB,
+    pstgDest: ptr IStorage,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CopyTo(self, ciidExclude, rgiidExclude, snbExclude, pstgDest)
+
+proc MoveElementTo*(
+    self: ptr IStorage,
+    pwcsName: ptr OLECHAR,
+    pstgDest: ptr IStorage,
+    pwcsNewName: ptr OLECHAR,
+    grfFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveElementTo(self, pwcsName, pstgDest, pwcsNewName, grfFlags)
+
+proc Commit*(self: ptr IStorage, grfCommitFlags: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Commit(self, grfCommitFlags)
+
+proc Revert*(self: ptr IStorage): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Revert(self)
+
+proc EnumElements*(
+    self: ptr IStorage,
+    reserved1: DWORD,
+    reserved2: pointer,
+    reserved3: DWORD,
+    ppenum: ptr ptr IEnumSTATSTG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumElements(self, reserved1, reserved2, reserved3, ppenum)
+
+proc DestroyElement*(
+    self: ptr IStorage, pwcsName: ptr OLECHAR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DestroyElement(self, pwcsName)
+
+proc RenameElement*(
+    self: ptr IStorage, pwcsOldName: ptr OLECHAR, pwcsNewName: ptr OLECHAR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RenameElement(self, pwcsOldName, pwcsNewName)
+
+proc SetElementTimes*(
+    self: ptr IStorage,
+    pwcsName: ptr OLECHAR,
+    pctime: ptr FILETIME,
+    patime: ptr FILETIME,
+    pmtime: ptr FILETIME,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetElementTimes(self, pwcsName, pctime, patime, pmtime)
+
+proc SetClass*(self: ptr IStorage, clsid: REFCLSID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetClass(self, clsid)
+
+proc SetStateBits*(
+    self: ptr IStorage, grfStateBits: DWORD, grfMask: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetStateBits(self, grfStateBits, grfMask)
+
+proc Stat*(
+    self: ptr IStorage, pstatstg: ptr STATSTG, grfStatFlag: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Stat(self, pstatstg, grfStatFlag)
+
+proc IsDirty*(self: ptr IPersistFile): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDirty(self)
+
+proc Load*(
+    self: ptr IPersistFile, pszFileName: LPCOLESTR, dwMode: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load(self, pszFileName, dwMode)
+
+proc Save*(
+    self: ptr IPersistFile, pszFileName: LPCOLESTR, fRemember: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Save(self, pszFileName, fRemember)
+
+proc SaveCompleted*(
+    self: ptr IPersistFile, pszFileName: LPCOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SaveCompleted(self, pszFileName)
+
+proc GetCurFile*(
+    self: ptr IPersistFile, ppszFileName: ptr LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurFile(self, ppszFileName)
+
+proc IsDirty*(self: ptr IPersistStorage): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDirty(self)
+
+proc InitNew*(
+    self: ptr IPersistStorage, pStg: ptr IStorage
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitNew(self, pStg)
+
+proc Load*(self: ptr IPersistStorage, pStg: ptr IStorage): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load(self, pStg)
+
+proc Save*(
+    self: ptr IPersistStorage, pStgSave: ptr IStorage, fSameAsLoad: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Save(self, pStgSave, fSameAsLoad)
+
+proc SaveCompleted*(
+    self: ptr IPersistStorage, pStgNew: ptr IStorage
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SaveCompleted(self, pStgNew)
+
+proc HandsOffStorage*(self: ptr IPersistStorage): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandsOffStorage(self)
+
+proc ReadAt*(
+    self: ptr ILockBytes,
+    ulOffset: ULARGE_INTEGER,
+    pv: pointer,
+    cb: ULONG,
+    pcbRead: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReadAt(self, ulOffset, pv, cb, pcbRead)
+
+proc WriteAt*(
+    self: ptr ILockBytes,
+    ulOffset: ULARGE_INTEGER,
+    pv: pointer,
+    cb: ULONG,
+    pcbWritten: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WriteAt(self, ulOffset, pv, cb, pcbWritten)
+
+proc Flush*(self: ptr ILockBytes): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Flush(self)
+
+proc SetSize*(self: ptr ILockBytes, cb: ULARGE_INTEGER): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSize(self, cb)
+
+proc LockRegion*(
+    self: ptr ILockBytes,
+    libOffset: ULARGE_INTEGER,
+    cb: ULARGE_INTEGER,
+    dwLockType: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LockRegion(self, libOffset, cb, dwLockType)
+
+proc UnlockRegion*(
+    self: ptr ILockBytes,
+    libOffset: ULARGE_INTEGER,
+    cb: ULARGE_INTEGER,
+    dwLockType: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnlockRegion(self, libOffset, cb, dwLockType)
+
+proc Stat*(
+    self: ptr ILockBytes, pstatstg: ptr STATSTG, grfStatFlag: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Stat(self, pstatstg, grfStatFlag)
+
+proc Next*(
+    self: ptr IEnumFORMATETC, celt: ULONG, rgelt: ptr FORMATETC, pceltFetched: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumFORMATETC, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumFORMATETC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumFORMATETC, ppenum: ptr ptr IEnumFORMATETC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc Next*(
+    self: ptr IEnumSTATDATA, celt: ULONG, rgelt: ptr STATDATA, pceltFetched: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumSTATDATA, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumSTATDATA): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumSTATDATA, ppenum: ptr ptr IEnumSTATDATA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc SwitchToFile*(
+    self: ptr IRootStorage, pszFile: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SwitchToFile(self, pszFile)
+
+proc OnDataChange*(
+    self: ptr IAdviseSink, pFormatetc: ptr FORMATETC, pStgmed: ptr STGMEDIUM
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDataChange(self, pFormatetc, pStgmed)
+
+proc OnViewChange*(
+    self: ptr IAdviseSink, dwAspect: DWORD, lindex: LONG
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnViewChange(self, dwAspect, lindex)
+
+proc OnRename*(self: ptr IAdviseSink, pmk: ptr IMoniker): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnRename(self, pmk)
+
+proc OnSave*(self: ptr IAdviseSink): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnSave(self)
+
+proc OnClose*(self: ptr IAdviseSink): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnClose(self)
+
+proc Begin_OnDataChange*(
+    self: ptr AsyncIAdviseSink, pFormatetc: ptr FORMATETC, pStgmed: ptr STGMEDIUM
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Begin_OnDataChange(self, pFormatetc, pStgmed)
+
+proc Finish_OnDataChange*(self: ptr AsyncIAdviseSink): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Finish_OnDataChange(self)
+
+proc Begin_OnViewChange*(
+    self: ptr AsyncIAdviseSink, dwAspect: DWORD, lindex: LONG
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Begin_OnViewChange(self, dwAspect, lindex)
+
+proc Finish_OnViewChange*(self: ptr AsyncIAdviseSink): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Finish_OnViewChange(self)
+
+proc Begin_OnRename*(
+    self: ptr AsyncIAdviseSink, pmk: ptr IMoniker
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Begin_OnRename(self, pmk)
+
+proc Finish_OnRename*(self: ptr AsyncIAdviseSink): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Finish_OnRename(self)
+
+proc Begin_OnSave*(self: ptr AsyncIAdviseSink): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Begin_OnSave(self)
+
+proc Finish_OnSave*(self: ptr AsyncIAdviseSink): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Finish_OnSave(self)
+
+proc Begin_OnClose*(self: ptr AsyncIAdviseSink): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Begin_OnClose(self)
+
+proc Finish_OnClose*(self: ptr AsyncIAdviseSink): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Finish_OnClose(self)
+
+proc OnLinkSrcChange*(
+    self: ptr IAdviseSink2, pmk: ptr IMoniker
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnLinkSrcChange(self, pmk)
+
+proc Begin_OnLinkSrcChange*(
+    self: ptr AsyncIAdviseSink2, pmk: ptr IMoniker
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Begin_OnLinkSrcChange(self, pmk)
+
+proc Finish_OnLinkSrcChange*(self: ptr AsyncIAdviseSink2): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Finish_OnLinkSrcChange(self)
+
+proc GetData*(
+    self: ptr IDataObject, pformatetcIn: ptr FORMATETC, pmedium: ptr STGMEDIUM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetData(self, pformatetcIn, pmedium)
+
+proc GetDataHere*(
+    self: ptr IDataObject, pformatetc: ptr FORMATETC, pmedium: ptr STGMEDIUM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDataHere(self, pformatetc, pmedium)
+
+proc QueryGetData*(
+    self: ptr IDataObject, pformatetc: ptr FORMATETC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryGetData(self, pformatetc)
+
+proc GetCanonicalFormatEtc*(
+    self: ptr IDataObject, pformatectIn: ptr FORMATETC, pformatetcOut: ptr FORMATETC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCanonicalFormatEtc(self, pformatectIn, pformatetcOut)
+
+proc SetData*(
+    self: ptr IDataObject,
+    pformatetc: ptr FORMATETC,
+    pmedium: ptr STGMEDIUM,
+    fRelease: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetData(self, pformatetc, pmedium, fRelease)
+
+proc EnumFormatEtc*(
+    self: ptr IDataObject, dwDirection: DWORD, ppenumFormatEtc: ptr ptr IEnumFORMATETC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumFormatEtc(self, dwDirection, ppenumFormatEtc)
+
+proc DAdvise*(
+    self: ptr IDataObject,
+    pformatetc: ptr FORMATETC,
+    advf: DWORD,
+    pAdvSink: ptr IAdviseSink,
+    pdwConnection: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DAdvise(self, pformatetc, advf, pAdvSink, pdwConnection)
+
+proc DUnadvise*(
+    self: ptr IDataObject, dwConnection: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DUnadvise(self, dwConnection)
+
+proc EnumDAdvise*(
+    self: ptr IDataObject, ppenumAdvise: ptr ptr IEnumSTATDATA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumDAdvise(self, ppenumAdvise)
+
+proc Advise*(
+    self: ptr IDataAdviseHolder,
+    pDataObject: ptr IDataObject,
+    pFetc: ptr FORMATETC,
+    advf: DWORD,
+    pAdvise: ptr IAdviseSink,
+    pdwConnection: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Advise(self, pDataObject, pFetc, advf, pAdvise, pdwConnection)
+
+proc Unadvise*(
+    self: ptr IDataAdviseHolder, dwConnection: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unadvise(self, dwConnection)
+
+proc EnumAdvise*(
+    self: ptr IDataAdviseHolder, ppenumAdvise: ptr ptr IEnumSTATDATA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumAdvise(self, ppenumAdvise)
+
+proc SendOnDataChange*(
+    self: ptr IDataAdviseHolder,
+    pDataObject: ptr IDataObject,
+    dwReserved: DWORD,
+    advf: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SendOnDataChange(self, pDataObject, dwReserved, advf)
+
+proc HandleInComingCall*(
+    self: ptr IMessageFilter,
+    dwCallType: DWORD,
+    htaskCaller: HTASK,
+    dwTickCount: DWORD,
+    lpInterfaceInfo: LPINTERFACEINFO,
+): DWORD {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleInComingCall(
+      self, dwCallType, htaskCaller, dwTickCount, lpInterfaceInfo
+    )
+
+proc RetryRejectedCall*(
+    self: ptr IMessageFilter,
+    htaskCallee: HTASK,
+    dwTickCount: DWORD,
+    dwRejectType: DWORD,
+): DWORD {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RetryRejectedCall(self, htaskCallee, dwTickCount, dwRejectType)
+
+proc MessagePending*(
+    self: ptr IMessageFilter,
+    htaskCallee: HTASK,
+    dwTickCount: DWORD,
+    dwPendingType: DWORD,
+): DWORD {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MessagePending(self, htaskCallee, dwTickCount, dwPendingType)
+
+proc GetClassObject*(
+    self: ptr IClassActivator,
+    rclsid: REFCLSID,
+    dwClassContext: DWORD,
+    locale: LCID,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetClassObject(self, rclsid, dwClassContext, locale, riid, ppv)
+
+proc FillAppend*(
+    self: ptr IFillLockBytes, pv: pointer, cb: ULONG, pcbWritten: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FillAppend(self, pv, cb, pcbWritten)
+
+proc FillAt*(
+    self: ptr IFillLockBytes,
+    ulOffset: ULARGE_INTEGER,
+    pv: pointer,
+    cb: ULONG,
+    pcbWritten: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FillAt(self, ulOffset, pv, cb, pcbWritten)
+
+proc SetFillSize*(
+    self: ptr IFillLockBytes, ulSize: ULARGE_INTEGER
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFillSize(self, ulSize)
+
+proc Terminate*(
+    self: ptr IFillLockBytes, bCanceled: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Terminate(self, bCanceled)
+
+proc OnProgress*(
+    self: ptr IProgressNotify,
+    dwProgressCurrent: DWORD,
+    dwProgressMaximum: DWORD,
+    fAccurate: WINBOOL,
+    fOwner: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnProgress(
+      self, dwProgressCurrent, dwProgressMaximum, fAccurate, fOwner
+    )
+
+proc LayoutScript*(
+    self: ptr ILayoutStorage,
+    pStorageLayout: ptr StorageLayout,
+    nEntries: DWORD,
+    glfInterleavedFlag: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LayoutScript(self, pStorageLayout, nEntries, glfInterleavedFlag)
+
+proc BeginMonitor*(self: ptr ILayoutStorage): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeginMonitor(self)
+
+proc EndMonitor*(self: ptr ILayoutStorage): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EndMonitor(self)
+
+proc ReLayoutDocfile*(
+    self: ptr ILayoutStorage, pwcsNewDfName: ptr OLECHAR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReLayoutDocfile(self, pwcsNewDfName)
+
+proc ReLayoutDocfileOnILockBytes*(
+    self: ptr ILayoutStorage, pILockBytes: ptr ILockBytes
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReLayoutDocfileOnILockBytes(self, pILockBytes)
+
+proc Lock*(self: ptr IBlockingLock, dwTimeout: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Lock(self, dwTimeout)
+
+proc Unlock*(self: ptr IBlockingLock): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unlock(self)
+
+proc SuppressChanges*(
+    self: ptr ITimeAndNoticeControl, res1: DWORD, res2: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SuppressChanges(self, res1, res2)
+
+proc CreateStorageEx*(
+    self: ptr IOplockStorage,
+    pwcsName: LPCWSTR,
+    grfMode: DWORD,
+    stgfmt: DWORD,
+    grfAttrs: DWORD,
+    riid: REFIID,
+    ppstgOpen: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateStorageEx(
+      self, pwcsName, grfMode, stgfmt, grfAttrs, riid, ppstgOpen
+    )
+
+proc OpenStorageEx*(
+    self: ptr IOplockStorage,
+    pwcsName: LPCWSTR,
+    grfMode: DWORD,
+    stgfmt: DWORD,
+    grfAttrs: DWORD,
+    riid: REFIID,
+    ppstgOpen: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OpenStorageEx(
+      self, pwcsName, grfMode, stgfmt, grfAttrs, riid, ppstgOpen
+    )
+
+proc WaitForWriteAccess*(
+    self: ptr IDirectWriterLock, dwTimeout: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WaitForWriteAccess(self, dwTimeout)
+
+proc ReleaseWriteAccess*(self: ptr IDirectWriterLock): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseWriteAccess(self)
+
+proc HaveWriteAccess*(self: ptr IDirectWriterLock): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HaveWriteAccess(self)
+
+proc AsyncGetClassBits*(
+    self: ptr IUrlMon,
+    rclsid: REFCLSID,
+    pszTYPE: LPCWSTR,
+    pszExt: LPCWSTR,
+    dwFileVersionMS: DWORD,
+    dwFileVersionLS: DWORD,
+    pszCodeBase: LPCWSTR,
+    pbc: ptr IBindCtx,
+    dwClassContext: DWORD,
+    riid: REFIID,
+    flags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AsyncGetClassBits(
+      self, rclsid, pszTYPE, pszExt, dwFileVersionMS, dwFileVersionLS, pszCodeBase, pbc,
+      dwClassContext, riid, flags,
+    )
+
+proc AllowForegroundTransfer*(
+    self: ptr IForegroundTransfer, lpvReserved: pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AllowForegroundTransfer(self, lpvReserved)
+
+proc ExtractThumbnail*(
+    self: ptr IThumbnailExtractor,
+    pStg: ptr IStorage,
+    ulLength: ULONG,
+    ulHeight: ULONG,
+    pulOutputLength: ptr ULONG,
+    pulOutputHeight: ptr ULONG,
+    phOutputBitmap: ptr HBITMAP,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExtractThumbnail(
+      self, pStg, ulLength, ulHeight, pulOutputLength, pulOutputHeight, phOutputBitmap
+    )
+
+proc OnFileUpdated*(
+    self: ptr IThumbnailExtractor, pStg: ptr IStorage
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnFileUpdated(self, pStg)
+
+proc Dummy*(
+    self: ptr IDummyHICONIncluder, h1: HICON, h2: HDC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Dummy(self, h1, h2)
+
+proc AddRefOnProcess*(self: ptr IProcessLock): ULONG {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddRefOnProcess(self)
+
+proc ReleaseRefOnProcess*(self: ptr IProcessLock): ULONG {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseRefOnProcess(self)
+
+proc Init*(
+    self: ptr ISurrogateService,
+    rguidProcessID: REFGUID,
+    pProcessLock: ptr IProcessLock,
+    pfApplicationAware: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Init(self, rguidProcessID, pProcessLock, pfApplicationAware)
+
+proc ApplicationLaunch*(
+    self: ptr ISurrogateService, rguidApplID: REFGUID, appType: ApplicationType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ApplicationLaunch(self, rguidApplID, appType)
+
+proc ApplicationFree*(
+    self: ptr ISurrogateService, rguidApplID: REFGUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ApplicationFree(self, rguidApplID)
+
+proc CatalogRefresh*(
+    self: ptr ISurrogateService, ulReserved: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CatalogRefresh(self, ulReserved)
+
+proc ProcessShutdown*(
+    self: ptr ISurrogateService, shutdownType: ShutdownType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ProcessShutdown(self, shutdownType)
+
+proc PreInitialize*(
+    self: ptr IInitializeSpy, dwCoInit: DWORD, dwCurThreadAptRefs: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreInitialize(self, dwCoInit, dwCurThreadAptRefs)
+
+proc PostInitialize*(
+    self: ptr IInitializeSpy,
+    hrCoInit: HRESULT,
+    dwCoInit: DWORD,
+    dwNewThreadAptRefs: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostInitialize(self, hrCoInit, dwCoInit, dwNewThreadAptRefs)
+
+proc PreUninitialize*(
+    self: ptr IInitializeSpy, dwCurThreadAptRefs: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreUninitialize(self, dwCurThreadAptRefs)
+
+proc PostUninitialize*(
+    self: ptr IInitializeSpy, dwNewThreadAptRefs: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostUninitialize(self, dwNewThreadAptRefs)
+
+proc OnUninitialize*(
+    self: ptr IApartmentShutdown, ui64ApartmentIdentifier: UINT64
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnUninitialize(self, ui64ApartmentIdentifier)
+
+proc SetGuid*(self: ptr ICreateTypeInfo, guid: REFGUID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetGuid(self, guid)
+
+proc SetTypeFlags*(
+    self: ptr ICreateTypeInfo, uTypeFlags: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTypeFlags(self, uTypeFlags)
+
+proc SetDocString*(
+    self: ptr ICreateTypeInfo, pStrDoc: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDocString(self, pStrDoc)
+
+proc SetHelpContext*(
+    self: ptr ICreateTypeInfo, dwHelpContext: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHelpContext(self, dwHelpContext)
+
+proc SetVersion*(
+    self: ptr ICreateTypeInfo, wMajorVerNum: WORD, wMinorVerNum: WORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetVersion(self, wMajorVerNum, wMinorVerNum)
+
+proc AddRefTypeInfo*(
+    self: ptr ICreateTypeInfo, pTInfo: ptr ITypeInfo, phRefType: ptr HREFTYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddRefTypeInfo(self, pTInfo, phRefType)
+
+proc AddFuncDesc*(
+    self: ptr ICreateTypeInfo, index: UINT, pFuncDesc: ptr FUNCDESC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddFuncDesc(self, index, pFuncDesc)
+
+proc AddImplType*(
+    self: ptr ICreateTypeInfo, index: UINT, hRefType: HREFTYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddImplType(self, index, hRefType)
+
+proc SetImplTypeFlags*(
+    self: ptr ICreateTypeInfo, index: UINT, implTypeFlags: INT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetImplTypeFlags(self, index, implTypeFlags)
+
+proc SetAlignment*(
+    self: ptr ICreateTypeInfo, cbAlignment: WORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAlignment(self, cbAlignment)
+
+proc SetSchema*(
+    self: ptr ICreateTypeInfo, pStrSchema: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSchema(self, pStrSchema)
+
+proc AddVarDesc*(
+    self: ptr ICreateTypeInfo, index: UINT, pVarDesc: ptr VARDESC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddVarDesc(self, index, pVarDesc)
+
+proc SetFuncAndParamNames*(
+    self: ptr ICreateTypeInfo, index: UINT, rgszNames: ptr LPOLESTR, cNames: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFuncAndParamNames(self, index, rgszNames, cNames)
+
+proc SetVarName*(
+    self: ptr ICreateTypeInfo, index: UINT, szName: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetVarName(self, index, szName)
+
+proc SetTypeDescAlias*(
+    self: ptr ICreateTypeInfo, pTDescAlias: ptr TYPEDESC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTypeDescAlias(self, pTDescAlias)
+
+proc DefineFuncAsDllEntry*(
+    self: ptr ICreateTypeInfo, index: UINT, szDllName: LPOLESTR, szProcName: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DefineFuncAsDllEntry(self, index, szDllName, szProcName)
+
+proc SetFuncDocString*(
+    self: ptr ICreateTypeInfo, index: UINT, szDocString: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFuncDocString(self, index, szDocString)
+
+proc SetVarDocString*(
+    self: ptr ICreateTypeInfo, index: UINT, szDocString: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetVarDocString(self, index, szDocString)
+
+proc SetFuncHelpContext*(
+    self: ptr ICreateTypeInfo, index: UINT, dwHelpContext: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFuncHelpContext(self, index, dwHelpContext)
+
+proc SetVarHelpContext*(
+    self: ptr ICreateTypeInfo, index: UINT, dwHelpContext: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetVarHelpContext(self, index, dwHelpContext)
+
+proc SetMops*(
+    self: ptr ICreateTypeInfo, index: UINT, bstrMops: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetMops(self, index, bstrMops)
+
+proc SetTypeIdldesc*(
+    self: ptr ICreateTypeInfo, pIdlDesc: ptr IDLDESC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTypeIdldesc(self, pIdlDesc)
+
+proc LayOut*(self: ptr ICreateTypeInfo): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LayOut(self)
+
+proc DeleteFuncDesc*(
+    self: ptr ICreateTypeInfo2, index: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteFuncDesc(self, index)
+
+proc DeleteFuncDescByMemId*(
+    self: ptr ICreateTypeInfo2, memid: MEMBERID, invKind: INVOKEKIND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteFuncDescByMemId(self, memid, invKind)
+
+proc DeleteVarDesc*(
+    self: ptr ICreateTypeInfo2, index: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteVarDesc(self, index)
+
+proc DeleteVarDescByMemId*(
+    self: ptr ICreateTypeInfo2, memid: MEMBERID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteVarDescByMemId(self, memid)
+
+proc DeleteImplType*(
+    self: ptr ICreateTypeInfo2, index: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteImplType(self, index)
+
+proc SetCustData*(
+    self: ptr ICreateTypeInfo2, guid: REFGUID, pVarVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCustData(self, guid, pVarVal)
+
+proc SetFuncCustData*(
+    self: ptr ICreateTypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFuncCustData(self, index, guid, pVarVal)
+
+proc SetParamCustData*(
+    self: ptr ICreateTypeInfo2,
+    indexFunc: UINT,
+    indexParam: UINT,
+    guid: REFGUID,
+    pVarVal: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetParamCustData(self, indexFunc, indexParam, guid, pVarVal)
+
+proc SetVarCustData*(
+    self: ptr ICreateTypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetVarCustData(self, index, guid, pVarVal)
+
+proc SetImplTypeCustData*(
+    self: ptr ICreateTypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetImplTypeCustData(self, index, guid, pVarVal)
+
+proc SetHelpStringContext*(
+    self: ptr ICreateTypeInfo2, dwHelpStringContext: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHelpStringContext(self, dwHelpStringContext)
+
+proc SetFuncHelpStringContext*(
+    self: ptr ICreateTypeInfo2, index: UINT, dwHelpStringContext: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFuncHelpStringContext(self, index, dwHelpStringContext)
+
+proc SetVarHelpStringContext*(
+    self: ptr ICreateTypeInfo2, index: UINT, dwHelpStringContext: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetVarHelpStringContext(self, index, dwHelpStringContext)
+
+proc Invalidate*(self: ptr ICreateTypeInfo2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Invalidate(self)
+
+proc SetName*(
+    self: ptr ICreateTypeInfo2, szName: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetName(self, szName)
+
+proc CreateTypeInfo*(
+    self: ptr ICreateTypeLib,
+    szName: LPOLESTR,
+    tkind: TYPEKIND,
+    ppCTInfo: ptr ptr ICreateTypeInfo,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateTypeInfo(self, szName, tkind, ppCTInfo)
+
+proc SetName*(self: ptr ICreateTypeLib, szName: LPOLESTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetName(self, szName)
+
+proc SetVersion*(
+    self: ptr ICreateTypeLib, wMajorVerNum: WORD, wMinorVerNum: WORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetVersion(self, wMajorVerNum, wMinorVerNum)
+
+proc SetGuid*(self: ptr ICreateTypeLib, guid: REFGUID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetGuid(self, guid)
+
+proc SetDocString*(
+    self: ptr ICreateTypeLib, szDoc: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDocString(self, szDoc)
+
+proc SetHelpFileName*(
+    self: ptr ICreateTypeLib, szHelpFileName: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHelpFileName(self, szHelpFileName)
+
+proc SetHelpContext*(
+    self: ptr ICreateTypeLib, dwHelpContext: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHelpContext(self, dwHelpContext)
+
+proc SetLcid*(self: ptr ICreateTypeLib, lcid: LCID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetLcid(self, lcid)
+
+proc SetLibFlags*(
+    self: ptr ICreateTypeLib, uLibFlags: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetLibFlags(self, uLibFlags)
+
+proc SaveAllChanges*(self: ptr ICreateTypeLib): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SaveAllChanges(self)
+
+proc DeleteTypeInfo*(
+    self: ptr ICreateTypeLib2, szName: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteTypeInfo(self, szName)
+
+proc SetCustData*(
+    self: ptr ICreateTypeLib2, guid: REFGUID, pVarVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCustData(self, guid, pVarVal)
+
+proc SetHelpStringContext*(
+    self: ptr ICreateTypeLib2, dwHelpStringContext: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHelpStringContext(self, dwHelpStringContext)
+
+proc SetHelpStringDll*(
+    self: ptr ICreateTypeLib2, szFileName: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHelpStringDll(self, szFileName)
+
+proc GetTypeInfoCount*(
+    self: ptr IDispatch, pctinfo: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeInfoCount(self, pctinfo)
+
+proc GetTypeInfo*(
+    self: ptr IDispatch, iTInfo: UINT, lcid: LCID, ppTInfo: ptr ptr ITypeInfo
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeInfo(self, iTInfo, lcid, ppTInfo)
+
+proc GetIDsOfNames*(
+    self: ptr IDispatch,
+    riid: REFIID,
+    rgszNames: ptr LPOLESTR,
+    cNames: UINT,
+    lcid: LCID,
+    rgDispId: ptr DISPID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIDsOfNames(self, riid, rgszNames, cNames, lcid, rgDispId)
+
+proc Invoke*(
+    self: ptr IDispatch,
+    dispIdMember: DISPID,
+    riid: REFIID,
+    lcid: LCID,
+    wFlags: WORD,
+    pDispParams: ptr DISPPARAMS,
+    pVarResult: ptr VARIANT,
+    pExcepInfo: ptr EXCEPINFO,
+    puArgErr: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Invoke(
+      self, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo,
+      puArgErr,
+    )
+
+proc Next*(
+    self: ptr IEnumVARIANT, celt: ULONG, rgVar: ptr VARIANT, pCeltFetched: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgVar, pCeltFetched)
+
+proc Skip*(self: ptr IEnumVARIANT, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumVARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumVARIANT, ppEnum: ptr ptr IEnumVARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppEnum)
+
+proc Bind*(
+    self: ptr ITypeComp,
+    szName: LPOLESTR,
+    lHashVal: ULONG,
+    wFlags: WORD,
+    ppTInfo: ptr ptr ITypeInfo,
+    pDescKind: ptr DESCKIND,
+    pBindPtr: ptr BINDPTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Bind(self, szName, lHashVal, wFlags, ppTInfo, pDescKind, pBindPtr)
+
+proc BindType*(
+    self: ptr ITypeComp,
+    szName: LPOLESTR,
+    lHashVal: ULONG,
+    ppTInfo: ptr ptr ITypeInfo,
+    ppTComp: ptr ptr ITypeComp,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BindType(self, szName, lHashVal, ppTInfo, ppTComp)
+
+proc GetTypeAttr*(
+    self: ptr ITypeInfo, ppTypeAttr: ptr ptr TYPEATTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeAttr(self, ppTypeAttr)
+
+proc GetTypeComp*(
+    self: ptr ITypeInfo, ppTComp: ptr ptr ITypeComp
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeComp(self, ppTComp)
+
+proc GetFuncDesc*(
+    self: ptr ITypeInfo, index: UINT, ppFuncDesc: ptr ptr FUNCDESC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFuncDesc(self, index, ppFuncDesc)
+
+proc GetVarDesc*(
+    self: ptr ITypeInfo, index: UINT, ppVarDesc: ptr ptr VARDESC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetVarDesc(self, index, ppVarDesc)
+
+proc GetNames*(
+    self: ptr ITypeInfo,
+    memid: MEMBERID,
+    rgBstrNames: ptr BSTR,
+    cMaxNames: UINT,
+    pcNames: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNames(self, memid, rgBstrNames, cMaxNames, pcNames)
+
+proc GetRefTypeOfImplType*(
+    self: ptr ITypeInfo, index: UINT, pRefType: ptr HREFTYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRefTypeOfImplType(self, index, pRefType)
+
+proc GetImplTypeFlags*(
+    self: ptr ITypeInfo, index: UINT, pImplTypeFlags: ptr INT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetImplTypeFlags(self, index, pImplTypeFlags)
+
+proc GetIDsOfNames*(
+    self: ptr ITypeInfo, rgszNames: ptr LPOLESTR, cNames: UINT, pMemId: ptr MEMBERID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIDsOfNames(self, rgszNames, cNames, pMemId)
+
+proc Invoke*(
+    self: ptr ITypeInfo,
+    pvInstance: PVOID,
+    memid: MEMBERID,
+    wFlags: WORD,
+    pDispParams: ptr DISPPARAMS,
+    pVarResult: ptr VARIANT,
+    pExcepInfo: ptr EXCEPINFO,
+    puArgErr: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Invoke(
+      self, pvInstance, memid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr
+    )
+
+proc GetDocumentation*(
+    self: ptr ITypeInfo,
+    memid: MEMBERID,
+    pBstrName: ptr BSTR,
+    pBstrDocString: ptr BSTR,
+    pdwHelpContext: ptr DWORD,
+    pBstrHelpFile: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDocumentation(
+      self, memid, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile
+    )
+
+proc GetDllEntry*(
+    self: ptr ITypeInfo,
+    memid: MEMBERID,
+    invKind: INVOKEKIND,
+    pBstrDllName: ptr BSTR,
+    pBstrName: ptr BSTR,
+    pwOrdinal: ptr WORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDllEntry(self, memid, invKind, pBstrDllName, pBstrName, pwOrdinal)
+
+proc GetRefTypeInfo*(
+    self: ptr ITypeInfo, hRefType: HREFTYPE, ppTInfo: ptr ptr ITypeInfo
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRefTypeInfo(self, hRefType, ppTInfo)
+
+proc AddressOfMember*(
+    self: ptr ITypeInfo, memid: MEMBERID, invKind: INVOKEKIND, ppv: ptr PVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddressOfMember(self, memid, invKind, ppv)
+
+proc CreateInstance*(
+    self: ptr ITypeInfo, pUnkOuter: ptr IUnknown, riid: REFIID, ppvObj: ptr PVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstance(self, pUnkOuter, riid, ppvObj)
+
+proc GetMops*(
+    self: ptr ITypeInfo, memid: MEMBERID, pBstrMops: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMops(self, memid, pBstrMops)
+
+proc GetContainingTypeLib*(
+    self: ptr ITypeInfo, ppTLib: ptr ptr ITypeLib, pIndex: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetContainingTypeLib(self, ppTLib, pIndex)
+
+proc ReleaseTypeAttr*(
+    self: ptr ITypeInfo, pTypeAttr: ptr TYPEATTR
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseTypeAttr(self, pTypeAttr)
+
+proc ReleaseFuncDesc*(
+    self: ptr ITypeInfo, pFuncDesc: ptr FUNCDESC
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseFuncDesc(self, pFuncDesc)
+
+proc ReleaseVarDesc*(
+    self: ptr ITypeInfo, pVarDesc: ptr VARDESC
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseVarDesc(self, pVarDesc)
+
+proc GetTypeKind*(
+    self: ptr ITypeInfo2, pTypeKind: ptr TYPEKIND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeKind(self, pTypeKind)
+
+proc GetTypeFlags*(
+    self: ptr ITypeInfo2, pTypeFlags: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeFlags(self, pTypeFlags)
+
+proc GetFuncIndexOfMemId*(
+    self: ptr ITypeInfo2, memid: MEMBERID, invKind: INVOKEKIND, pFuncIndex: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFuncIndexOfMemId(self, memid, invKind, pFuncIndex)
+
+proc GetVarIndexOfMemId*(
+    self: ptr ITypeInfo2, memid: MEMBERID, pVarIndex: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetVarIndexOfMemId(self, memid, pVarIndex)
+
+proc GetCustData*(
+    self: ptr ITypeInfo2, guid: REFGUID, pVarVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCustData(self, guid, pVarVal)
+
+proc GetFuncCustData*(
+    self: ptr ITypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFuncCustData(self, index, guid, pVarVal)
+
+proc GetParamCustData*(
+    self: ptr ITypeInfo2,
+    indexFunc: UINT,
+    indexParam: UINT,
+    guid: REFGUID,
+    pVarVal: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetParamCustData(self, indexFunc, indexParam, guid, pVarVal)
+
+proc GetVarCustData*(
+    self: ptr ITypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetVarCustData(self, index, guid, pVarVal)
+
+proc GetImplTypeCustData*(
+    self: ptr ITypeInfo2, index: UINT, guid: REFGUID, pVarVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetImplTypeCustData(self, index, guid, pVarVal)
+
+proc GetDocumentation2*(
+    self: ptr ITypeInfo2,
+    memid: MEMBERID,
+    lcid: LCID,
+    pbstrHelpString: ptr BSTR,
+    pdwHelpStringContext: ptr DWORD,
+    pbstrHelpStringDll: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDocumentation2(
+      self, memid, lcid, pbstrHelpString, pdwHelpStringContext, pbstrHelpStringDll
+    )
+
+proc GetAllCustData*(
+    self: ptr ITypeInfo2, pCustData: ptr CUSTDATA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAllCustData(self, pCustData)
+
+proc GetAllFuncCustData*(
+    self: ptr ITypeInfo2, index: UINT, pCustData: ptr CUSTDATA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAllFuncCustData(self, index, pCustData)
+
+proc GetAllParamCustData*(
+    self: ptr ITypeInfo2, indexFunc: UINT, indexParam: UINT, pCustData: ptr CUSTDATA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAllParamCustData(self, indexFunc, indexParam, pCustData)
+
+proc GetAllVarCustData*(
+    self: ptr ITypeInfo2, index: UINT, pCustData: ptr CUSTDATA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAllVarCustData(self, index, pCustData)
+
+proc GetAllImplTypeCustData*(
+    self: ptr ITypeInfo2, index: UINT, pCustData: ptr CUSTDATA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAllImplTypeCustData(self, index, pCustData)
+
+proc GetTypeInfoCount*(self: ptr ITypeLib): UINT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeInfoCount(self)
+
+proc GetTypeInfo*(
+    self: ptr ITypeLib, index: UINT, ppTInfo: ptr ptr ITypeInfo
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeInfo(self, index, ppTInfo)
+
+proc GetTypeInfoType*(
+    self: ptr ITypeLib, index: UINT, pTKind: ptr TYPEKIND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeInfoType(self, index, pTKind)
+
+proc GetTypeInfoOfGuid*(
+    self: ptr ITypeLib, guid: REFGUID, ppTinfo: ptr ptr ITypeInfo
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeInfoOfGuid(self, guid, ppTinfo)
+
+proc GetLibAttr*(
+    self: ptr ITypeLib, ppTLibAttr: ptr ptr TLIBATTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLibAttr(self, ppTLibAttr)
+
+proc GetTypeComp*(
+    self: ptr ITypeLib, ppTComp: ptr ptr ITypeComp
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeComp(self, ppTComp)
+
+proc GetDocumentation*(
+    self: ptr ITypeLib,
+    index: INT,
+    pBstrName: ptr BSTR,
+    pBstrDocString: ptr BSTR,
+    pdwHelpContext: ptr DWORD,
+    pBstrHelpFile: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDocumentation(
+      self, index, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile
+    )
+
+proc IsName*(
+    self: ptr ITypeLib, szNameBuf: LPOLESTR, lHashVal: ULONG, pfName: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsName(self, szNameBuf, lHashVal, pfName)
+
+proc FindName*(
+    self: ptr ITypeLib,
+    szNameBuf: LPOLESTR,
+    lHashVal: ULONG,
+    ppTInfo: ptr ptr ITypeInfo,
+    rgMemId: ptr MEMBERID,
+    pcFound: ptr USHORT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindName(self, szNameBuf, lHashVal, ppTInfo, rgMemId, pcFound)
+
+proc ReleaseTLibAttr*(
+    self: ptr ITypeLib, pTLibAttr: ptr TLIBATTR
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseTLibAttr(self, pTLibAttr)
+
+proc GetCustData*(
+    self: ptr ITypeLib2, guid: REFGUID, pVarVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCustData(self, guid, pVarVal)
+
+proc GetLibStatistics*(
+    self: ptr ITypeLib2, pcUniqueNames: ptr ULONG, pcchUniqueNames: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLibStatistics(self, pcUniqueNames, pcchUniqueNames)
+
+proc GetDocumentation2*(
+    self: ptr ITypeLib2,
+    index: INT,
+    lcid: LCID,
+    pbstrHelpString: ptr BSTR,
+    pdwHelpStringContext: ptr DWORD,
+    pbstrHelpStringDll: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDocumentation2(
+      self, index, lcid, pbstrHelpString, pdwHelpStringContext, pbstrHelpStringDll
+    )
+
+proc GetAllCustData*(
+    self: ptr ITypeLib2, pCustData: ptr CUSTDATA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAllCustData(self, pCustData)
+
+proc RequestTypeChange*(
+    self: ptr ITypeChangeEvents,
+    changeKind: CHANGEKIND,
+    pTInfoBefore: ptr ITypeInfo,
+    pStrName: LPOLESTR,
+    pfCancel: ptr INT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RequestTypeChange(self, changeKind, pTInfoBefore, pStrName, pfCancel)
+
+proc AfterTypeChange*(
+    self: ptr ITypeChangeEvents,
+    changeKind: CHANGEKIND,
+    pTInfoAfter: ptr ITypeInfo,
+    pStrName: LPOLESTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AfterTypeChange(self, changeKind, pTInfoAfter, pStrName)
+
+proc GetGUID*(self: ptr IErrorInfo, pGUID: ptr GUID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetGUID(self, pGUID)
+
+proc GetSource*(
+    self: ptr IErrorInfo, pBstrSource: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSource(self, pBstrSource)
+
+proc GetDescription*(
+    self: ptr IErrorInfo, pBstrDescription: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDescription(self, pBstrDescription)
+
+proc GetHelpFile*(
+    self: ptr IErrorInfo, pBstrHelpFile: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHelpFile(self, pBstrHelpFile)
+
+proc GetHelpContext*(
+    self: ptr IErrorInfo, pdwHelpContext: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHelpContext(self, pdwHelpContext)
+
+proc SetGUID*(self: ptr ICreateErrorInfo, rguid: REFGUID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetGUID(self, rguid)
+
+proc SetSource*(
+    self: ptr ICreateErrorInfo, szSource: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSource(self, szSource)
+
+proc SetDescription*(
+    self: ptr ICreateErrorInfo, szDescription: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDescription(self, szDescription)
+
+proc SetHelpFile*(
+    self: ptr ICreateErrorInfo, szHelpFile: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHelpFile(self, szHelpFile)
+
+proc SetHelpContext*(
+    self: ptr ICreateErrorInfo, dwHelpContext: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHelpContext(self, dwHelpContext)
+
+proc InterfaceSupportsErrorInfo*(
+    self: ptr ISupportErrorInfo, riid: REFIID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InterfaceSupportsErrorInfo(self, riid)
+
+proc CreateFromTypeInfo*(
+    self: ptr ITypeFactory,
+    pTypeInfo: ptr ITypeInfo,
+    riid: REFIID,
+    ppv: ptr ptr IUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateFromTypeInfo(self, pTypeInfo, riid, ppv)
+
+proc mSize*(
+    self: ptr ITypeMarshal,
+    pvType: PVOID,
+    dwDestContext: DWORD,
+    pvDestContext: PVOID,
+    pSize: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Size(self, pvType, dwDestContext, pvDestContext, pSize)
+
+proc Marshal*(
+    self: ptr ITypeMarshal,
+    pvType: PVOID,
+    dwDestContext: DWORD,
+    pvDestContext: PVOID,
+    cbBufferLength: ULONG,
+    pBuffer: ptr BYTE,
+    pcbWritten: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Marshal(
+      self, pvType, dwDestContext, pvDestContext, cbBufferLength, pBuffer, pcbWritten
+    )
+
+proc Unmarshal*(
+    self: ptr ITypeMarshal,
+    pvType: PVOID,
+    dwFlags: DWORD,
+    cbBufferLength: ULONG,
+    pBuffer: ptr BYTE,
+    pcbRead: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unmarshal(self, pvType, dwFlags, cbBufferLength, pBuffer, pcbRead)
+
+proc Free*(self: ptr ITypeMarshal, pvType: PVOID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Free(self, pvType)
+
+proc RecordInit*(self: ptr IRecordInfo, pvNew: PVOID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RecordInit(self, pvNew)
+
+proc RecordClear*(
+    self: ptr IRecordInfo, pvExisting: PVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RecordClear(self, pvExisting)
+
+proc RecordCopy*(
+    self: ptr IRecordInfo, pvExisting: PVOID, pvNew: PVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RecordCopy(self, pvExisting, pvNew)
+
+proc GetGuid*(self: ptr IRecordInfo, pguid: ptr GUID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetGuid(self, pguid)
+
+proc GetName*(self: ptr IRecordInfo, pbstrName: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetName(self, pbstrName)
+
+proc GetSize*(self: ptr IRecordInfo, pcbSize: ptr ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSize(self, pcbSize)
+
+proc GetTypeInfo*(
+    self: ptr IRecordInfo, ppTypeInfo: ptr ptr ITypeInfo
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeInfo(self, ppTypeInfo)
+
+proc GetField*(
+    self: ptr IRecordInfo, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetField(self, pvData, szFieldName, pvarField)
+
+proc GetFieldNoCopy*(
+    self: ptr IRecordInfo,
+    pvData: PVOID,
+    szFieldName: LPCOLESTR,
+    pvarField: ptr VARIANT,
+    ppvDataCArray: ptr PVOID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFieldNoCopy(self, pvData, szFieldName, pvarField, ppvDataCArray)
+
+proc PutField*(
+    self: ptr IRecordInfo,
+    wFlags: ULONG,
+    pvData: PVOID,
+    szFieldName: LPCOLESTR,
+    pvarField: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PutField(self, wFlags, pvData, szFieldName, pvarField)
+
+proc PutFieldNoCopy*(
+    self: ptr IRecordInfo,
+    wFlags: ULONG,
+    pvData: PVOID,
+    szFieldName: LPCOLESTR,
+    pvarField: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PutFieldNoCopy(self, wFlags, pvData, szFieldName, pvarField)
+
+proc GetFieldNames*(
+    self: ptr IRecordInfo, pcNames: ptr ULONG, rgBstrNames: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFieldNames(self, pcNames, rgBstrNames)
+
+proc IsMatchingType*(
+    self: ptr IRecordInfo, pRecordInfo: ptr IRecordInfo
+): WINBOOL {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsMatchingType(self, pRecordInfo)
+
+proc RecordCreate*(self: ptr IRecordInfo): PVOID {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RecordCreate(self)
+
+proc RecordCreateCopy*(
+    self: ptr IRecordInfo, pvSource: PVOID, ppvDest: ptr PVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RecordCreateCopy(self, pvSource, ppvDest)
+
+proc RecordDestroy*(
+    self: ptr IRecordInfo, pvRecord: PVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RecordDestroy(self, pvRecord)
+
+proc AddError*(
+    self: ptr IErrorLog, pszPropName: LPCOLESTR, pExcepInfo: ptr EXCEPINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddError(self, pszPropName, pExcepInfo)
+
+proc Read*(
+    self: ptr IPropertyBag,
+    pszPropName: LPCOLESTR,
+    pVar: ptr VARIANT,
+    pErrorLog: ptr IErrorLog,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Read(self, pszPropName, pVar, pErrorLog)
+
+proc Write*(
+    self: ptr IPropertyBag, pszPropName: LPCOLESTR, pVar: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Write(self, pszPropName, pVar)
+
+proc Advise*(
+    self: ptr IOleAdviseHolder, pAdvise: ptr IAdviseSink, pdwConnection: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Advise(self, pAdvise, pdwConnection)
+
+proc Unadvise*(
+    self: ptr IOleAdviseHolder, dwConnection: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unadvise(self, dwConnection)
+
+proc EnumAdvise*(
+    self: ptr IOleAdviseHolder, ppenumAdvise: ptr ptr IEnumSTATDATA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumAdvise(self, ppenumAdvise)
+
+proc SendOnRename*(
+    self: ptr IOleAdviseHolder, pmk: ptr IMoniker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SendOnRename(self, pmk)
+
+proc SendOnSave*(self: ptr IOleAdviseHolder): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SendOnSave(self)
+
+proc SendOnClose*(self: ptr IOleAdviseHolder): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SendOnClose(self)
+
+proc Cache*(
+    self: ptr IOleCache,
+    pformatetc: ptr FORMATETC,
+    advf: DWORD,
+    pdwConnection: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Cache(self, pformatetc, advf, pdwConnection)
+
+proc Uncache*(self: ptr IOleCache, dwConnection: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Uncache(self, dwConnection)
+
+proc EnumCache*(
+    self: ptr IOleCache, ppenumSTATDATA: ptr ptr IEnumSTATDATA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumCache(self, ppenumSTATDATA)
+
+proc InitCache*(
+    self: ptr IOleCache, pDataObject: ptr IDataObject
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitCache(self, pDataObject)
+
+proc SetData*(
+    self: ptr IOleCache,
+    pformatetc: ptr FORMATETC,
+    pmedium: ptr STGMEDIUM,
+    fRelease: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetData(self, pformatetc, pmedium, fRelease)
+
+proc UpdateCache*(
+    self: ptr IOleCache2, pDataObject: LPDATAOBJECT, grfUpdf: DWORD, pReserved: LPVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UpdateCache(self, pDataObject, grfUpdf, pReserved)
+
+proc DiscardCache*(
+    self: ptr IOleCache2, dwDiscardOptions: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DiscardCache(self, dwDiscardOptions)
+
+proc OnRun*(
+    self: ptr IOleCacheControl, pDataObject: LPDATAOBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnRun(self, pDataObject)
+
+proc OnStop*(self: ptr IOleCacheControl): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnStop(self)
+
+proc ParseDisplayName*(
+    self: ptr IParseDisplayName,
+    pbc: ptr IBindCtx,
+    pszDisplayName: LPOLESTR,
+    pchEaten: ptr ULONG,
+    ppmkOut: ptr ptr IMoniker,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseDisplayName(self, pbc, pszDisplayName, pchEaten, ppmkOut)
+
+proc EnumObjects*(
+    self: ptr IOleContainer, grfFlags: DWORD, ppenum: ptr ptr IEnumUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumObjects(self, grfFlags, ppenum)
+
+proc LockContainer*(
+    self: ptr IOleContainer, fLock: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LockContainer(self, fLock)
+
+proc SaveObject*(self: ptr IOleClientSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SaveObject(self)
+
+proc GetMoniker*(
+    self: ptr IOleClientSite,
+    dwAssign: DWORD,
+    dwWhichMoniker: DWORD,
+    ppmk: ptr ptr IMoniker,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMoniker(self, dwAssign, dwWhichMoniker, ppmk)
+
+proc GetContainer*(
+    self: ptr IOleClientSite, ppContainer: ptr ptr IOleContainer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetContainer(self, ppContainer)
+
+proc ShowObject*(self: ptr IOleClientSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowObject(self)
+
+proc OnShowWindow*(
+    self: ptr IOleClientSite, fShow: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnShowWindow(self, fShow)
+
+proc RequestNewObjectLayout*(self: ptr IOleClientSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RequestNewObjectLayout(self)
+
+proc SetClientSite*(
+    self: ptr IOleObject, pClientSite: ptr IOleClientSite
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetClientSite(self, pClientSite)
+
+proc GetClientSite*(
+    self: ptr IOleObject, ppClientSite: ptr ptr IOleClientSite
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetClientSite(self, ppClientSite)
+
+proc SetHostNames*(
+    self: ptr IOleObject, szContainerApp: LPCOLESTR, szContainerObj: LPCOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHostNames(self, szContainerApp, szContainerObj)
+
+proc Close*(self: ptr IOleObject, dwSaveOption: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Close(self, dwSaveOption)
+
+proc SetMoniker*(
+    self: ptr IOleObject, dwWhichMoniker: DWORD, pmk: ptr IMoniker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetMoniker(self, dwWhichMoniker, pmk)
+
+proc GetMoniker*(
+    self: ptr IOleObject, dwAssign: DWORD, dwWhichMoniker: DWORD, ppmk: ptr ptr IMoniker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMoniker(self, dwAssign, dwWhichMoniker, ppmk)
+
+proc InitFromData*(
+    self: ptr IOleObject,
+    pDataObject: ptr IDataObject,
+    fCreation: WINBOOL,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitFromData(self, pDataObject, fCreation, dwReserved)
+
+proc GetClipboardData*(
+    self: ptr IOleObject, dwReserved: DWORD, ppDataObject: ptr ptr IDataObject
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetClipboardData(self, dwReserved, ppDataObject)
+
+proc DoVerb*(
+    self: ptr IOleObject,
+    iVerb: LONG,
+    lpmsg: LPMSG,
+    pActiveSite: ptr IOleClientSite,
+    lindex: LONG,
+    hwndParent: HWND,
+    lprcPosRect: LPCRECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoVerb(self, iVerb, lpmsg, pActiveSite, lindex, hwndParent, lprcPosRect)
+
+proc EnumVerbs*(
+    self: ptr IOleObject, ppEnumOleVerb: ptr ptr IEnumOLEVERB
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumVerbs(self, ppEnumOleVerb)
+
+proc Update*(self: ptr IOleObject): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Update(self)
+
+proc IsUpToDate*(self: ptr IOleObject): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsUpToDate(self)
+
+proc GetUserClassID*(
+    self: ptr IOleObject, pClsid: ptr CLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUserClassID(self, pClsid)
+
+proc GetUserType*(
+    self: ptr IOleObject, dwFormOfType: DWORD, pszUserType: ptr LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUserType(self, dwFormOfType, pszUserType)
+
+proc SetExtent*(
+    self: ptr IOleObject, dwDrawAspect: DWORD, psizel: ptr SIZEL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetExtent(self, dwDrawAspect, psizel)
+
+proc GetExtent*(
+    self: ptr IOleObject, dwDrawAspect: DWORD, psizel: ptr SIZEL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetExtent(self, dwDrawAspect, psizel)
+
+proc Advise*(
+    self: ptr IOleObject, pAdvSink: ptr IAdviseSink, pdwConnection: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Advise(self, pAdvSink, pdwConnection)
+
+proc Unadvise*(self: ptr IOleObject, dwConnection: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unadvise(self, dwConnection)
+
+proc EnumAdvise*(
+    self: ptr IOleObject, ppenumAdvise: ptr ptr IEnumSTATDATA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumAdvise(self, ppenumAdvise)
+
+proc GetMiscStatus*(
+    self: ptr IOleObject, dwAspect: DWORD, pdwStatus: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMiscStatus(self, dwAspect, pdwStatus)
+
+proc SetColorScheme*(
+    self: ptr IOleObject, pLogpal: ptr LOGPALETTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetColorScheme(self, pLogpal)
+
+proc GetWindow*(self: ptr IOleWindow, phwnd: ptr HWND): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetWindow(self, phwnd)
+
+proc ContextSensitiveHelp*(
+    self: ptr IOleWindow, fEnterMode: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ContextSensitiveHelp(self, fEnterMode)
+
+proc SetUpdateOptions*(
+    self: ptr IOleLink, dwUpdateOpt: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetUpdateOptions(self, dwUpdateOpt)
+
+proc GetUpdateOptions*(
+    self: ptr IOleLink, pdwUpdateOpt: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUpdateOptions(self, pdwUpdateOpt)
+
+proc SetSourceMoniker*(
+    self: ptr IOleLink, pmk: ptr IMoniker, rclsid: REFCLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSourceMoniker(self, pmk, rclsid)
+
+proc GetSourceMoniker*(
+    self: ptr IOleLink, ppmk: ptr ptr IMoniker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSourceMoniker(self, ppmk)
+
+proc SetSourceDisplayName*(
+    self: ptr IOleLink, pszStatusText: LPCOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSourceDisplayName(self, pszStatusText)
+
+proc GetSourceDisplayName*(
+    self: ptr IOleLink, ppszDisplayName: ptr LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSourceDisplayName(self, ppszDisplayName)
+
+proc BindToSource*(
+    self: ptr IOleLink, bindflags: DWORD, pbc: ptr IBindCtx
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BindToSource(self, bindflags, pbc)
+
+proc BindIfRunning*(self: ptr IOleLink): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BindIfRunning(self)
+
+proc GetBoundSource*(
+    self: ptr IOleLink, ppunk: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBoundSource(self, ppunk)
+
+proc UnbindSource*(self: ptr IOleLink): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnbindSource(self)
+
+proc Update*(self: ptr IOleLink, pbc: ptr IBindCtx): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Update(self, pbc)
+
+proc GetObject*(
+    self: ptr IOleItemContainer,
+    pszItem: LPOLESTR,
+    dwSpeedNeeded: DWORD,
+    pbc: ptr IBindCtx,
+    riid: REFIID,
+    ppvObject: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObject(self, pszItem, dwSpeedNeeded, pbc, riid, ppvObject)
+
+proc GetObjectStorage*(
+    self: ptr IOleItemContainer,
+    pszItem: LPOLESTR,
+    pbc: ptr IBindCtx,
+    riid: REFIID,
+    ppvStorage: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObjectStorage(self, pszItem, pbc, riid, ppvStorage)
+
+proc IsRunning*(
+    self: ptr IOleItemContainer, pszItem: LPOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsRunning(self, pszItem)
+
+proc GetBorder*(
+    self: ptr IOleInPlaceUIWindow, lprectBorder: LPRECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBorder(self, lprectBorder)
+
+proc RequestBorderSpace*(
+    self: ptr IOleInPlaceUIWindow, pborderwidths: LPCBORDERWIDTHS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RequestBorderSpace(self, pborderwidths)
+
+proc SetBorderSpace*(
+    self: ptr IOleInPlaceUIWindow, pborderwidths: LPCBORDERWIDTHS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBorderSpace(self, pborderwidths)
+
+proc SetActiveObject*(
+    self: ptr IOleInPlaceUIWindow,
+    pActiveObject: ptr IOleInPlaceActiveObject,
+    pszObjName: LPCOLESTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetActiveObject(self, pActiveObject, pszObjName)
+
+proc TranslateAccelerator*(
+    self: ptr IOleInPlaceActiveObject, lpmsg: LPMSG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateAccelerator(self, lpmsg)
+
+proc OnFrameWindowActivate*(
+    self: ptr IOleInPlaceActiveObject, fActivate: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnFrameWindowActivate(self, fActivate)
+
+proc OnDocWindowActivate*(
+    self: ptr IOleInPlaceActiveObject, fActivate: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDocWindowActivate(self, fActivate)
+
+proc ResizeBorder*(
+    self: ptr IOleInPlaceActiveObject,
+    prcBorder: LPCRECT,
+    pUIWindow: ptr IOleInPlaceUIWindow,
+    fFrameWindow: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResizeBorder(self, prcBorder, pUIWindow, fFrameWindow)
+
+proc EnableModeless*(
+    self: ptr IOleInPlaceActiveObject, fEnable: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnableModeless(self, fEnable)
+
+proc InsertMenus*(
+    self: ptr IOleInPlaceFrame, hmenuShared: HMENU, lpMenuWidths: LPOLEMENUGROUPWIDTHS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InsertMenus(self, hmenuShared, lpMenuWidths)
+
+proc SetMenu*(
+    self: ptr IOleInPlaceFrame,
+    hmenuShared: HMENU,
+    holemenu: HOLEMENU,
+    hwndActiveObject: HWND,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetMenu(self, hmenuShared, holemenu, hwndActiveObject)
+
+proc RemoveMenus*(
+    self: ptr IOleInPlaceFrame, hmenuShared: HMENU
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveMenus(self, hmenuShared)
+
+proc SetStatusText*(
+    self: ptr IOleInPlaceFrame, pszStatusText: LPCOLESTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetStatusText(self, pszStatusText)
+
+proc EnableModeless*(
+    self: ptr IOleInPlaceFrame, fEnable: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnableModeless(self, fEnable)
+
+proc TranslateAccelerator*(
+    self: ptr IOleInPlaceFrame, lpmsg: LPMSG, wID: WORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateAccelerator(self, lpmsg, wID)
+
+proc InPlaceDeactivate*(self: ptr IOleInPlaceObject): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InPlaceDeactivate(self)
+
+proc UIDeactivate*(self: ptr IOleInPlaceObject): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UIDeactivate(self)
+
+proc SetObjectRects*(
+    self: ptr IOleInPlaceObject, lprcPosRect: LPCRECT, lprcClipRect: LPCRECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetObjectRects(self, lprcPosRect, lprcClipRect)
+
+proc ReactivateAndUndo*(self: ptr IOleInPlaceObject): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReactivateAndUndo(self)
+
+proc CanInPlaceActivate*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CanInPlaceActivate(self)
+
+proc OnInPlaceActivate*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnInPlaceActivate(self)
+
+proc OnUIActivate*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnUIActivate(self)
+
+proc GetWindowContext*(
+    self: ptr IOleInPlaceSite,
+    ppFrame: ptr ptr IOleInPlaceFrame,
+    ppDoc: ptr ptr IOleInPlaceUIWindow,
+    lprcPosRect: LPRECT,
+    lprcClipRect: LPRECT,
+    lpFrameInfo: LPOLEINPLACEFRAMEINFO,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetWindowContext(
+      self, ppFrame, ppDoc, lprcPosRect, lprcClipRect, lpFrameInfo
+    )
+
+proc Scroll*(
+    self: ptr IOleInPlaceSite, scrollExtant: SIZE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Scroll(self, scrollExtant)
+
+proc OnUIDeactivate*(
+    self: ptr IOleInPlaceSite, fUndoable: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnUIDeactivate(self, fUndoable)
+
+proc OnInPlaceDeactivate*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnInPlaceDeactivate(self)
+
+proc DiscardUndoState*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DiscardUndoState(self)
+
+proc DeactivateAndUndo*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeactivateAndUndo(self)
+
+proc OnPosRectChange*(
+    self: ptr IOleInPlaceSite, lprcPosRect: LPCRECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnPosRectChange(self, lprcPosRect)
+
+proc FContinue*(self: ptr IContinue): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FContinue(self)
+
+proc Draw*(
+    self: ptr IViewObject,
+    dwDrawAspect: DWORD,
+    lindex: LONG,
+    pvAspect: pointer,
+    ptd: ptr DVTARGETDEVICE,
+    hdcTargetDev: HDC,
+    hdcDraw: HDC,
+    lprcBounds: LPCRECTL,
+    lprcWBounds: LPCRECTL,
+    pfnContinue: proc(dwContinue: ULONG_PTR): WINBOOL {.stdcall.},
+    dwContinue: ULONG_PTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Draw(
+      self, dwDrawAspect, lindex, pvAspect, ptd, hdcTargetDev, hdcDraw, lprcBounds,
+      lprcWBounds, pfnContinue, dwContinue,
+    )
+
+proc GetColorSet*(
+    self: ptr IViewObject,
+    dwDrawAspect: DWORD,
+    lindex: LONG,
+    pvAspect: pointer,
+    ptd: ptr DVTARGETDEVICE,
+    hicTargetDev: HDC,
+    ppColorSet: ptr ptr LOGPALETTE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColorSet(
+      self, dwDrawAspect, lindex, pvAspect, ptd, hicTargetDev, ppColorSet
+    )
+
+proc Freeze*(
+    self: ptr IViewObject,
+    dwDrawAspect: DWORD,
+    lindex: LONG,
+    pvAspect: pointer,
+    pdwFreeze: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Freeze(self, dwDrawAspect, lindex, pvAspect, pdwFreeze)
+
+proc Unfreeze*(self: ptr IViewObject, dwFreeze: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unfreeze(self, dwFreeze)
+
+proc SetAdvise*(
+    self: ptr IViewObject, aspects: DWORD, advf: DWORD, pAdvSink: ptr IAdviseSink
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAdvise(self, aspects, advf, pAdvSink)
+
+proc GetAdvise*(
+    self: ptr IViewObject,
+    pAspects: ptr DWORD,
+    pAdvf: ptr DWORD,
+    ppAdvSink: ptr ptr IAdviseSink,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAdvise(self, pAspects, pAdvf, ppAdvSink)
+
+proc GetExtent*(
+    self: ptr IViewObject2,
+    dwDrawAspect: DWORD,
+    lindex: LONG,
+    ptd: ptr DVTARGETDEVICE,
+    lpsizel: LPSIZEL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetExtent(self, dwDrawAspect, lindex, ptd, lpsizel)
+
+proc QueryContinueDrag*(
+    self: ptr IDropSource, fEscapePressed: WINBOOL, grfKeyState: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryContinueDrag(self, fEscapePressed, grfKeyState)
+
+proc GiveFeedback*(self: ptr IDropSource, dwEffect: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GiveFeedback(self, dwEffect)
+
+proc DragEnter*(
+    self: ptr IDropTarget,
+    pDataObj: ptr IDataObject,
+    grfKeyState: DWORD,
+    pt: POINTL,
+    pdwEffect: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DragEnter(self, pDataObj, grfKeyState, pt, pdwEffect)
+
+proc DragOver*(
+    self: ptr IDropTarget, grfKeyState: DWORD, pt: POINTL, pdwEffect: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DragOver(self, grfKeyState, pt, pdwEffect)
+
+proc DragLeave*(self: ptr IDropTarget): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DragLeave(self)
+
+proc Drop*(
+    self: ptr IDropTarget,
+    pDataObj: ptr IDataObject,
+    grfKeyState: DWORD,
+    pt: POINTL,
+    pdwEffect: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Drop(self, pDataObj, grfKeyState, pt, pdwEffect)
+
+proc DragEnterTarget*(
+    self: ptr IDropSourceNotify, hwndTarget: HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DragEnterTarget(self, hwndTarget)
+
+proc DragLeaveTarget*(self: ptr IDropSourceNotify): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DragLeaveTarget(self)
+
+proc Next*(
+    self: ptr IEnumOLEVERB, celt: ULONG, rgelt: LPOLEVERB, pceltFetched: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumOLEVERB, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumOLEVERB): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumOLEVERB, ppenum: ptr ptr IEnumOLEVERB
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc QueryService*(
+    self: ptr IServiceProvider,
+    guidService: REFGUID,
+    riid: REFIID,
+    ppvObject: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryService(self, guidService, riid, ppvObject)
+
+proc hasFeature*(
+    self: ptr IXMLDOMImplementation,
+    feature: BSTR,
+    version: BSTR,
+    hasFeature: ptr VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasFeature(self, feature, version, hasFeature)
+
+proc get_nodeName*(self: ptr IXMLDOMNode, name: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeName(self, name)
+
+proc get_nodeValue*(
+    self: ptr IXMLDOMNode, value: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeValue(self, value)
+
+proc put_nodeValue*(self: ptr IXMLDOMNode, value: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_nodeValue(self, value)
+
+proc get_nodeType*(
+    self: ptr IXMLDOMNode, `type`: ptr DOMNodeType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeType(self, `type`)
+
+proc get_parentNode*(
+    self: ptr IXMLDOMNode, parent: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parentNode(self, parent)
+
+proc get_childNodes*(
+    self: ptr IXMLDOMNode, childList: ptr ptr IXMLDOMNodeList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_childNodes(self, childList)
+
+proc get_firstChild*(
+    self: ptr IXMLDOMNode, firstChild: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_firstChild(self, firstChild)
+
+proc get_lastChild*(
+    self: ptr IXMLDOMNode, lastChild: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_lastChild(self, lastChild)
+
+proc get_previousSibling*(
+    self: ptr IXMLDOMNode, previousSibling: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_previousSibling(self, previousSibling)
+
+proc get_nextSibling*(
+    self: ptr IXMLDOMNode, nextSibling: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nextSibling(self, nextSibling)
+
+proc get_attributes*(
+    self: ptr IXMLDOMNode, attributeMap: ptr ptr IXMLDOMNamedNodeMap
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_attributes(self, attributeMap)
+
+proc insertBefore*(
+    self: ptr IXMLDOMNode,
+    newChild: ptr IXMLDOMNode,
+    refChild: VARIANT,
+    outNewChild: ptr ptr IXMLDOMNode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertBefore(self, newChild, refChild, outNewChild)
+
+proc replaceChild*(
+    self: ptr IXMLDOMNode,
+    newChild: ptr IXMLDOMNode,
+    oldChild: ptr IXMLDOMNode,
+    outOldChild: ptr ptr IXMLDOMNode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceChild(self, newChild, oldChild, outOldChild)
+
+proc removeChild*(
+    self: ptr IXMLDOMNode, childNode: ptr IXMLDOMNode, oldChild: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeChild(self, childNode, oldChild)
+
+proc appendChild*(
+    self: ptr IXMLDOMNode, newChild: ptr IXMLDOMNode, outNewChild: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendChild(self, newChild, outNewChild)
+
+proc hasChildNodes*(
+    self: ptr IXMLDOMNode, hasChild: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.hasChildNodes(self, hasChild)
+
+proc get_ownerDocument*(
+    self: ptr IXMLDOMNode, DOMDocument: ptr ptr IXMLDOMDocument
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ownerDocument(self, DOMDocument)
+
+proc cloneNode*(
+    self: ptr IXMLDOMNode, deep: VARIANT_BOOL, cloneRoot: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.cloneNode(self, deep, cloneRoot)
+
+proc get_nodeTypeString*(
+    self: ptr IXMLDOMNode, nodeType: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeTypeString(self, nodeType)
+
+proc get_text*(self: ptr IXMLDOMNode, text: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_text(self, text)
+
+proc put_text*(self: ptr IXMLDOMNode, text: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_text(self, text)
+
+proc get_specified*(
+    self: ptr IXMLDOMNode, isSpecified: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_specified(self, isSpecified)
+
+proc get_definition*(
+    self: ptr IXMLDOMNode, definitionNode: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_definition(self, definitionNode)
+
+proc get_nodeTypedValue*(
+    self: ptr IXMLDOMNode, typedValue: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_nodeTypedValue(self, typedValue)
+
+proc put_nodeTypedValue*(
+    self: ptr IXMLDOMNode, typedValue: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_nodeTypedValue(self, typedValue)
+
+proc get_dataType*(
+    self: ptr IXMLDOMNode, dataTypeName: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dataType(self, dataTypeName)
+
+proc put_dataType*(
+    self: ptr IXMLDOMNode, dataTypeName: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_dataType(self, dataTypeName)
+
+proc get_xml*(self: ptr IXMLDOMNode, xmlString: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_xml(self, xmlString)
+
+proc transformNode*(
+    self: ptr IXMLDOMNode, stylesheet: ptr IXMLDOMNode, xmlString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.transformNode(self, stylesheet, xmlString)
+
+proc selectNodes*(
+    self: ptr IXMLDOMNode, queryString: BSTR, resultList: ptr ptr IXMLDOMNodeList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.selectNodes(self, queryString, resultList)
+
+proc selectSingleNode*(
+    self: ptr IXMLDOMNode, queryString: BSTR, resultNode: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.selectSingleNode(self, queryString, resultNode)
+
+proc get_parsed*(
+    self: ptr IXMLDOMNode, isParsed: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parsed(self, isParsed)
+
+proc get_namespaceURI*(
+    self: ptr IXMLDOMNode, namespaceURI: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_namespaceURI(self, namespaceURI)
+
+proc get_prefix*(
+    self: ptr IXMLDOMNode, prefixString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_prefix(self, prefixString)
+
+proc get_baseName*(
+    self: ptr IXMLDOMNode, nameString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_baseName(self, nameString)
+
+proc transformNodeToObject*(
+    self: ptr IXMLDOMNode, stylesheet: ptr IXMLDOMNode, outputObject: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.transformNodeToObject(self, stylesheet, outputObject)
+
+proc get_doctype*(
+    self: ptr IXMLDOMDocument, documentType: ptr ptr IXMLDOMDocumentType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_doctype(self, documentType)
+
+proc get_implementation*(
+    self: ptr IXMLDOMDocument, impl: ptr ptr IXMLDOMImplementation
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_implementation(self, impl)
+
+proc get_documentElement*(
+    self: ptr IXMLDOMDocument, DOMElement: ptr ptr IXMLDOMElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_documentElement(self, DOMElement)
+
+proc putref_documentElement*(
+    self: ptr IXMLDOMDocument, DOMElement: ptr IXMLDOMElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.putref_documentElement(self, DOMElement)
+
+proc createElement*(
+    self: ptr IXMLDOMDocument, tagName: BSTR, element: ptr ptr IXMLDOMElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createElement(self, tagName, element)
+
+proc createDocumentFragment*(
+    self: ptr IXMLDOMDocument, docFrag: ptr ptr IXMLDOMDocumentFragment
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createDocumentFragment(self, docFrag)
+
+proc createTextNode*(
+    self: ptr IXMLDOMDocument, data: BSTR, text: ptr ptr IXMLDOMText
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createTextNode(self, data, text)
+
+proc createComment*(
+    self: ptr IXMLDOMDocument, data: BSTR, comment: ptr ptr IXMLDOMComment
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createComment(self, data, comment)
+
+proc createCDATASection*(
+    self: ptr IXMLDOMDocument, data: BSTR, cdata: ptr ptr IXMLDOMCDATASection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createCDATASection(self, data, cdata)
+
+proc createProcessingInstruction*(
+    self: ptr IXMLDOMDocument,
+    target: BSTR,
+    data: BSTR,
+    pi: ptr ptr IXMLDOMProcessingInstruction,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createProcessingInstruction(self, target, data, pi)
+
+proc createAttribute*(
+    self: ptr IXMLDOMDocument, name: BSTR, attribute: ptr ptr IXMLDOMAttribute
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createAttribute(self, name, attribute)
+
+proc createEntityReference*(
+    self: ptr IXMLDOMDocument, name: BSTR, entityRef: ptr ptr IXMLDOMEntityReference
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createEntityReference(self, name, entityRef)
+
+proc getElementsByTagName*(
+    self: ptr IXMLDOMDocument, tagName: BSTR, resultList: ptr ptr IXMLDOMNodeList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getElementsByTagName(self, tagName, resultList)
+
+proc createNode*(
+    self: ptr IXMLDOMDocument,
+    Type: VARIANT,
+    name: BSTR,
+    namespaceURI: BSTR,
+    node: ptr ptr IXMLDOMNode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createNode(self, Type, name, namespaceURI, node)
+
+proc nodeFromID*(
+    self: ptr IXMLDOMDocument, idString: BSTR, node: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.nodeFromID(self, idString, node)
+
+proc load*(
+    self: ptr IXMLDOMDocument, xmlSource: VARIANT, isSuccessful: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.load(self, xmlSource, isSuccessful)
+
+proc get_readyState*(
+    self: ptr IXMLDOMDocument, value: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, value)
+
+proc get_parseError*(
+    self: ptr IXMLDOMDocument, errorObj: ptr ptr IXMLDOMParseError
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parseError(self, errorObj)
+
+proc get_url*(
+    self: ptr IXMLDOMDocument, urlString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_url(self, urlString)
+
+proc get_async*(
+    self: ptr IXMLDOMDocument, isAsync: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_async(self, isAsync)
+
+proc put_async*(
+    self: ptr IXMLDOMDocument, isAsync: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_async(self, isAsync)
+
+proc abort*(self: ptr IXMLDOMDocument): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.abort(self)
+
+proc loadXML*(
+    self: ptr IXMLDOMDocument, bstrXML: BSTR, isSuccessful: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.loadXML(self, bstrXML, isSuccessful)
+
+proc save*(
+    self: ptr IXMLDOMDocument, destination: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.save(self, destination)
+
+proc get_validateOnParse*(
+    self: ptr IXMLDOMDocument, isValidating: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_validateOnParse(self, isValidating)
+
+proc put_validateOnParse*(
+    self: ptr IXMLDOMDocument, isValidating: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_validateOnParse(self, isValidating)
+
+proc get_resolveExternals*(
+    self: ptr IXMLDOMDocument, isResolving: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_resolveExternals(self, isResolving)
+
+proc put_resolveExternals*(
+    self: ptr IXMLDOMDocument, isResolving: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_resolveExternals(self, isResolving)
+
+proc get_preserveWhiteSpace*(
+    self: ptr IXMLDOMDocument, isPreserving: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_preserveWhiteSpace(self, isPreserving)
+
+proc put_preserveWhiteSpace*(
+    self: ptr IXMLDOMDocument, isPreserving: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_preserveWhiteSpace(self, isPreserving)
+
+proc put_onreadystatechange*(
+    self: ptr IXMLDOMDocument, readystatechangeSink: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreadystatechange(self, readystatechangeSink)
+
+proc put_ondataavailable*(
+    self: ptr IXMLDOMDocument, ondataavailableSink: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ondataavailable(self, ondataavailableSink)
+
+proc put_ontransformnode*(
+    self: ptr IXMLDOMDocument, ontransformnodeSink: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ontransformnode(self, ontransformnodeSink)
+
+proc get_item*(
+    self: ptr IXMLDOMNodeList, index: LONG, listItem: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_item(self, index, listItem)
+
+proc get_length*(
+    self: ptr IXMLDOMNodeList, listLength: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, listLength)
+
+proc nextNode*(
+    self: ptr IXMLDOMNodeList, nextItem: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.nextNode(self, nextItem)
+
+proc reset*(self: ptr IXMLDOMNodeList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.reset(self)
+
+proc get_newEnum*(
+    self: ptr IXMLDOMNodeList, ppUnk: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, ppUnk)
+
+proc getNamedItem*(
+    self: ptr IXMLDOMNamedNodeMap, name: BSTR, namedItem: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getNamedItem(self, name, namedItem)
+
+proc setNamedItem*(
+    self: ptr IXMLDOMNamedNodeMap,
+    newItem: ptr IXMLDOMNode,
+    nameItem: ptr ptr IXMLDOMNode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setNamedItem(self, newItem, nameItem)
+
+proc removeNamedItem*(
+    self: ptr IXMLDOMNamedNodeMap, name: BSTR, namedItem: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeNamedItem(self, name, namedItem)
+
+proc get_item*(
+    self: ptr IXMLDOMNamedNodeMap, index: LONG, listItem: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_item(self, index, listItem)
+
+proc get_length*(
+    self: ptr IXMLDOMNamedNodeMap, listLength: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, listLength)
+
+proc getQualifiedItem*(
+    self: ptr IXMLDOMNamedNodeMap,
+    baseName: BSTR,
+    namespaceURI: BSTR,
+    qualifiedItem: ptr ptr IXMLDOMNode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getQualifiedItem(self, baseName, namespaceURI, qualifiedItem)
+
+proc removeQualifiedItem*(
+    self: ptr IXMLDOMNamedNodeMap,
+    baseName: BSTR,
+    namespaceURI: BSTR,
+    qualifiedItem: ptr ptr IXMLDOMNode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeQualifiedItem(self, baseName, namespaceURI, qualifiedItem)
+
+proc nextNode*(
+    self: ptr IXMLDOMNamedNodeMap, nextItem: ptr ptr IXMLDOMNode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.nextNode(self, nextItem)
+
+proc reset*(self: ptr IXMLDOMNamedNodeMap): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.reset(self)
+
+proc get_newEnum*(
+    self: ptr IXMLDOMNamedNodeMap, ppUnk: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, ppUnk)
+
+proc get_data*(
+    self: ptr IXMLDOMCharacterData, data: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_data(self, data)
+
+proc put_data*(self: ptr IXMLDOMCharacterData, data: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_data(self, data)
+
+proc get_length*(
+    self: ptr IXMLDOMCharacterData, dataLength: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, dataLength)
+
+proc substringData*(
+    self: ptr IXMLDOMCharacterData, offset: LONG, count: LONG, data: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.substringData(self, offset, count, data)
+
+proc appendData*(
+    self: ptr IXMLDOMCharacterData, data: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.appendData(self, data)
+
+proc insertData*(
+    self: ptr IXMLDOMCharacterData, offset: LONG, data: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.insertData(self, offset, data)
+
+proc deleteData*(
+    self: ptr IXMLDOMCharacterData, offset: LONG, count: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.deleteData(self, offset, count)
+
+proc replaceData*(
+    self: ptr IXMLDOMCharacterData, offset: LONG, count: LONG, data: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.replaceData(self, offset, count, data)
+
+proc get_name*(
+    self: ptr IXMLDOMAttribute, attributeName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, attributeName)
+
+proc get_value*(
+    self: ptr IXMLDOMAttribute, attributeValue: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, attributeValue)
+
+proc put_value*(
+    self: ptr IXMLDOMAttribute, attributeValue: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_value(self, attributeValue)
+
+proc get_tagName*(
+    self: ptr IXMLDOMElement, tagName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tagName(self, tagName)
+
+proc getAttribute*(
+    self: ptr IXMLDOMElement, name: BSTR, value: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttribute(self, name, value)
+
+proc setAttribute*(
+    self: ptr IXMLDOMElement, name: BSTR, value: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttribute(self, name, value)
+
+proc removeAttribute*(
+    self: ptr IXMLDOMElement, name: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAttribute(self, name)
+
+proc getAttributeNode*(
+    self: ptr IXMLDOMElement, name: BSTR, attributeNode: ptr ptr IXMLDOMAttribute
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttributeNode(self, name, attributeNode)
+
+proc setAttributeNode*(
+    self: ptr IXMLDOMElement,
+    DOMAttribute: ptr IXMLDOMAttribute,
+    attributeNode: ptr ptr IXMLDOMAttribute,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttributeNode(self, DOMAttribute, attributeNode)
+
+proc removeAttributeNode*(
+    self: ptr IXMLDOMElement,
+    DOMAttribute: ptr IXMLDOMAttribute,
+    attributeNode: ptr ptr IXMLDOMAttribute,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAttributeNode(self, DOMAttribute, attributeNode)
+
+proc getElementsByTagName*(
+    self: ptr IXMLDOMElement, tagName: BSTR, resultList: ptr ptr IXMLDOMNodeList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getElementsByTagName(self, tagName, resultList)
+
+proc normalize*(self: ptr IXMLDOMElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.normalize(self)
+
+proc splitText*(
+    self: ptr IXMLDOMText, offset: LONG, rightHandTextNode: ptr ptr IXMLDOMText
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.splitText(self, offset, rightHandTextNode)
+
+proc get_target*(
+    self: ptr IXMLDOMProcessingInstruction, name: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_target(self, name)
+
+proc get_data*(
+    self: ptr IXMLDOMProcessingInstruction, value: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_data(self, value)
+
+proc put_data*(
+    self: ptr IXMLDOMProcessingInstruction, value: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_data(self, value)
+
+proc get_name*(
+    self: ptr IXMLDOMDocumentType, rootName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, rootName)
+
+proc get_entities*(
+    self: ptr IXMLDOMDocumentType, entityMap: ptr ptr IXMLDOMNamedNodeMap
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_entities(self, entityMap)
+
+proc get_notations*(
+    self: ptr IXMLDOMDocumentType, notationMap: ptr ptr IXMLDOMNamedNodeMap
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_notations(self, notationMap)
+
+proc get_publicId*(
+    self: ptr IXMLDOMNotation, publicID: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_publicId(self, publicID)
+
+proc get_systemId*(
+    self: ptr IXMLDOMNotation, systemID: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_systemId(self, systemID)
+
+proc get_publicId*(
+    self: ptr IXMLDOMEntity, publicID: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_publicId(self, publicID)
+
+proc get_systemId*(
+    self: ptr IXMLDOMEntity, systemID: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_systemId(self, systemID)
+
+proc get_notationName*(
+    self: ptr IXMLDOMEntity, name: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_notationName(self, name)
+
+proc get_errorCode*(
+    self: ptr IXMLDOMParseError, errorCode: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_errorCode(self, errorCode)
+
+proc get_url*(
+    self: ptr IXMLDOMParseError, urlString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_url(self, urlString)
+
+proc get_reason*(
+    self: ptr IXMLDOMParseError, reasonString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_reason(self, reasonString)
+
+proc get_srcText*(
+    self: ptr IXMLDOMParseError, sourceString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_srcText(self, sourceString)
+
+proc get_line*(
+    self: ptr IXMLDOMParseError, lineNumber: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_line(self, lineNumber)
+
+proc get_linepos*(
+    self: ptr IXMLDOMParseError, linePosition: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_linepos(self, linePosition)
+
+proc get_filepos*(
+    self: ptr IXMLDOMParseError, filePosition: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_filepos(self, filePosition)
+
+proc uniqueID*(
+    self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pID: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.uniqueID(self, pNode, pID)
+
+proc depth*(
+    self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pDepth: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.depth(self, pNode, pDepth)
+
+proc childNumber*(
+    self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pNumber: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.childNumber(self, pNode, pNumber)
+
+proc ancestorChildNumber*(
+    self: ptr IXTLRuntime, bstrNodeName: BSTR, pNode: ptr IXMLDOMNode, pNumber: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ancestorChildNumber(self, bstrNodeName, pNode, pNumber)
+
+proc absoluteChildNumber*(
+    self: ptr IXTLRuntime, pNode: ptr IXMLDOMNode, pNumber: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.absoluteChildNumber(self, pNode, pNumber)
+
+proc formatIndex*(
+    self: ptr IXTLRuntime,
+    lIndex: LONG,
+    bstrFormat: BSTR,
+    pbstrFormattedString: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.formatIndex(self, lIndex, bstrFormat, pbstrFormattedString)
+
+proc formatNumber*(
+    self: ptr IXTLRuntime,
+    dblNumber: float64,
+    bstrFormat: BSTR,
+    pbstrFormattedString: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.formatNumber(self, dblNumber, bstrFormat, pbstrFormattedString)
+
+proc formatDate*(
+    self: ptr IXTLRuntime,
+    varDate: VARIANT,
+    bstrFormat: BSTR,
+    varDestLocale: VARIANT,
+    pbstrFormattedString: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.formatDate(
+      self, varDate, bstrFormat, varDestLocale, pbstrFormattedString
+    )
+
+proc formatTime*(
+    self: ptr IXTLRuntime,
+    varTime: VARIANT,
+    bstrFormat: BSTR,
+    varDestLocale: VARIANT,
+    pbstrFormattedString: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.formatTime(
+      self, varTime, bstrFormat, varDestLocale, pbstrFormattedString
+    )
+
+proc open*(
+    self: ptr IXMLHttpRequest,
+    bstrMethod: BSTR,
+    bstrUrl: BSTR,
+    varAsync: VARIANT,
+    bstrUser: VARIANT,
+    bstrPassword: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.open(self, bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword)
+
+proc setRequestHeader*(
+    self: ptr IXMLHttpRequest, bstrHeader: BSTR, bstrValue: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setRequestHeader(self, bstrHeader, bstrValue)
+
+proc getResponseHeader*(
+    self: ptr IXMLHttpRequest, bstrHeader: BSTR, pbstrValue: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getResponseHeader(self, bstrHeader, pbstrValue)
+
+proc getAllResponseHeaders*(
+    self: ptr IXMLHttpRequest, pbstrHeaders: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAllResponseHeaders(self, pbstrHeaders)
+
+proc send*(self: ptr IXMLHttpRequest, varBody: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.send(self, varBody)
+
+proc abort*(self: ptr IXMLHttpRequest): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.abort(self)
+
+proc get_status*(
+    self: ptr IXMLHttpRequest, plStatus: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_status(self, plStatus)
+
+proc get_statusText*(
+    self: ptr IXMLHttpRequest, pbstrStatus: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_statusText(self, pbstrStatus)
+
+proc get_responseXML*(
+    self: ptr IXMLHttpRequest, ppBody: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_responseXML(self, ppBody)
+
+proc get_responseText*(
+    self: ptr IXMLHttpRequest, pbstrBody: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_responseText(self, pbstrBody)
+
+proc get_responseBody*(
+    self: ptr IXMLHttpRequest, pvarBody: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_responseBody(self, pvarBody)
+
+proc get_responseStream*(
+    self: ptr IXMLHttpRequest, pvarBody: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_responseStream(self, pvarBody)
+
+proc get_readyState*(
+    self: ptr IXMLHttpRequest, plState: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, plState)
+
+proc put_onreadystatechange*(
+    self: ptr IXMLHttpRequest, pReadyStateSink: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_onreadystatechange(self, pReadyStateSink)
+
+proc get_XMLDocument*(
+    self: ptr IXMLDSOControl, ppDoc: ptr ptr IXMLDOMDocument
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_XMLDocument(self, ppDoc)
+
+proc put_XMLDocument*(
+    self: ptr IXMLDSOControl, ppDoc: ptr IXMLDOMDocument
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_XMLDocument(self, ppDoc)
+
+proc get_JavaDSOCompatible*(
+    self: ptr IXMLDSOControl, fJavaDSOCompatible: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_JavaDSOCompatible(self, fJavaDSOCompatible)
+
+proc put_JavaDSOCompatible*(
+    self: ptr IXMLDSOControl, fJavaDSOCompatible: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_JavaDSOCompatible(self, fJavaDSOCompatible)
+
+proc get_readyState*(
+    self: ptr IXMLDSOControl, state: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, state)
+
+proc put_length*(self: ptr IXMLElementCollection, v: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_length(self, v)
+
+proc get_length*(
+    self: ptr IXMLElementCollection, p: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_length(self, p)
+
+proc get_newEnum*(
+    self: ptr IXMLElementCollection, ppUnk: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_newEnum(self, ppUnk)
+
+proc item*(
+    self: ptr IXMLElementCollection,
+    var1: VARIANT,
+    var2: VARIANT,
+    ppDisp: ptr ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.item(self, var1, var2, ppDisp)
+
+proc get_root*(
+    self: ptr IXMLDocument, p: ptr ptr IXMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_root(self, p)
+
+proc get_fileSize*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fileSize(self, p)
+
+proc get_fileModifiedDate*(
+    self: ptr IXMLDocument, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fileModifiedDate(self, p)
+
+proc get_fileUpdatedDate*(
+    self: ptr IXMLDocument, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fileUpdatedDate(self, p)
+
+proc get_URL*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_URL(self, p)
+
+proc put_URL*(self: ptr IXMLDocument, p: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_URL(self, p)
+
+proc get_mimeType*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_mimeType(self, p)
+
+proc get_readyState*(self: ptr IXMLDocument, pl: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, pl)
+
+proc get_charset*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_charset(self, p)
+
+proc put_charset*(self: ptr IXMLDocument, p: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_charset(self, p)
+
+proc get_version*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_version(self, p)
+
+proc get_doctype*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_doctype(self, p)
+
+proc get_dtdURL*(self: ptr IXMLDocument, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dtdURL(self, p)
+
+proc createElement*(
+    self: ptr IXMLDocument, vType: VARIANT, var1: VARIANT, ppElem: ptr ptr IXMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createElement(self, vType, var1, ppElem)
+
+proc get_root*(
+    self: ptr IXMLDocument2, p: ptr ptr IXMLElement2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_root(self, p)
+
+proc get_fileSize*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fileSize(self, p)
+
+proc get_fileModifiedDate*(
+    self: ptr IXMLDocument2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fileModifiedDate(self, p)
+
+proc get_fileUpdatedDate*(
+    self: ptr IXMLDocument2, p: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_fileUpdatedDate(self, p)
+
+proc get_URL*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_URL(self, p)
+
+proc put_URL*(self: ptr IXMLDocument2, p: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_URL(self, p)
+
+proc get_mimeType*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_mimeType(self, p)
+
+proc get_readyState*(
+    self: ptr IXMLDocument2, pl: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_readyState(self, pl)
+
+proc get_charset*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_charset(self, p)
+
+proc put_charset*(self: ptr IXMLDocument2, p: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_charset(self, p)
+
+proc get_version*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_version(self, p)
+
+proc get_doctype*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_doctype(self, p)
+
+proc get_dtdURL*(self: ptr IXMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_dtdURL(self, p)
+
+proc createElement*(
+    self: ptr IXMLDocument2, vType: VARIANT, var1: VARIANT, ppElem: ptr ptr IXMLElement2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.createElement(self, vType, var1, ppElem)
+
+proc get_async*(
+    self: ptr IXMLDocument2, pf: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_async(self, pf)
+
+proc put_async*(self: ptr IXMLDocument2, f: VARIANT_BOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_async(self, f)
+
+proc get_tagName*(self: ptr IXMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tagName(self, p)
+
+proc put_tagName*(self: ptr IXMLElement, p: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_tagName(self, p)
+
+proc get_parent*(
+    self: ptr IXMLElement, ppParent: ptr ptr IXMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parent(self, ppParent)
+
+proc setAttribute*(
+    self: ptr IXMLElement, strPropertyName: BSTR, PropertyValue: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttribute(self, strPropertyName, PropertyValue)
+
+proc getAttribute*(
+    self: ptr IXMLElement, strPropertyName: BSTR, PropertyValue: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttribute(self, strPropertyName, PropertyValue)
+
+proc removeAttribute*(
+    self: ptr IXMLElement, strPropertyName: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAttribute(self, strPropertyName)
+
+proc get_children*(
+    self: ptr IXMLElement, pp: ptr ptr IXMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_children(self, pp)
+
+proc get_type*(self: ptr IXMLElement, plType: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, plType)
+
+proc get_text*(self: ptr IXMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_text(self, p)
+
+proc put_text*(self: ptr IXMLElement, p: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_text(self, p)
+
+proc addChild*(
+    self: ptr IXMLElement, pChildElem: ptr IXMLElement, lIndex: LONG, lReserved: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addChild(self, pChildElem, lIndex, lReserved)
+
+proc removeChild*(
+    self: ptr IXMLElement, pChildElem: ptr IXMLElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeChild(self, pChildElem)
+
+proc get_tagName*(self: ptr IXMLElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_tagName(self, p)
+
+proc put_tagName*(self: ptr IXMLElement2, p: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_tagName(self, p)
+
+proc get_parent*(
+    self: ptr IXMLElement2, ppParent: ptr ptr IXMLElement2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_parent(self, ppParent)
+
+proc setAttribute*(
+    self: ptr IXMLElement2, strPropertyName: BSTR, PropertyValue: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setAttribute(self, strPropertyName, PropertyValue)
+
+proc getAttribute*(
+    self: ptr IXMLElement2, strPropertyName: BSTR, PropertyValue: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAttribute(self, strPropertyName, PropertyValue)
+
+proc removeAttribute*(
+    self: ptr IXMLElement2, strPropertyName: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeAttribute(self, strPropertyName)
+
+proc get_children*(
+    self: ptr IXMLElement2, pp: ptr ptr IXMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_children(self, pp)
+
+proc get_type*(self: ptr IXMLElement2, plType: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_type(self, plType)
+
+proc get_text*(self: ptr IXMLElement2, p: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_text(self, p)
+
+proc put_text*(self: ptr IXMLElement2, p: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_text(self, p)
+
+proc addChild*(
+    self: ptr IXMLElement2, pChildElem: ptr IXMLElement2, lIndex: LONG, lReserved: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.addChild(self, pChildElem, lIndex, lReserved)
+
+proc removeChild*(
+    self: ptr IXMLElement2, pChildElem: ptr IXMLElement2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.removeChild(self, pChildElem)
+
+proc get_attributes*(
+    self: ptr IXMLElement2, pp: ptr ptr IXMLElementCollection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_attributes(self, pp)
+
+proc get_name*(self: ptr IXMLAttribute, n: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_name(self, n)
+
+proc get_value*(self: ptr IXMLAttribute, v: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_value(self, v)
+
+proc GetErrorInfo*(
+    self: ptr IXMLError, pErrorReturn: ptr XML_ERROR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetErrorInfo(self, pErrorReturn)
+
+proc GetClassID*(
+    self: ptr IPersistMoniker, pClassID: ptr CLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetClassID(self, pClassID)
+
+proc IsDirty*(self: ptr IPersistMoniker): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDirty(self)
+
+proc Load*(
+    self: ptr IPersistMoniker,
+    fFullyAvailable: WINBOOL,
+    pimkName: ptr IMoniker,
+    pibc: LPBC,
+    grfMode: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load(self, fFullyAvailable, pimkName, pibc, grfMode)
+
+proc Save*(
+    self: ptr IPersistMoniker, pimkName: ptr IMoniker, pbc: LPBC, fRemember: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Save(self, pimkName, pbc, fRemember)
+
+proc SaveCompleted*(
+    self: ptr IPersistMoniker, pimkName: ptr IMoniker, pibc: LPBC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SaveCompleted(self, pimkName, pibc)
+
+proc GetCurMoniker*(
+    self: ptr IPersistMoniker, ppimkName: ptr ptr IMoniker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurMoniker(self, ppimkName)
+
+proc PutProperty*(
+    self: ptr IMonikerProp, mkp: MONIKERPROPERTY, val: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PutProperty(self, mkp, val)
+
+proc CreateBinding*(
+    self: ptr IBindProtocol, szUrl: LPCWSTR, pbc: ptr IBindCtx, ppb: ptr ptr IBinding
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateBinding(self, szUrl, pbc, ppb)
+
+proc Abort*(self: ptr IBinding): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Abort(self)
+
+proc Suspend*(self: ptr IBinding): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Suspend(self)
+
+proc Resume*(self: ptr IBinding): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Resume(self)
+
+proc SetPriority*(self: ptr IBinding, nPriority: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPriority(self, nPriority)
+
+proc GetPriority*(
+    self: ptr IBinding, pnPriority: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPriority(self, pnPriority)
+
+proc GetBindResult*(
+    self: ptr IBinding,
+    pclsidProtocol: ptr CLSID,
+    pdwResult: ptr DWORD,
+    pszResult: ptr LPOLESTR,
+    pdwReserved: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBindResult(self, pclsidProtocol, pdwResult, pszResult, pdwReserved)
+
+proc OnStartBinding*(
+    self: ptr IBindStatusCallback, dwReserved: DWORD, pib: ptr IBinding
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnStartBinding(self, dwReserved, pib)
+
+proc GetPriority*(
+    self: ptr IBindStatusCallback, pnPriority: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPriority(self, pnPriority)
+
+proc OnLowResource*(
+    self: ptr IBindStatusCallback, reserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnLowResource(self, reserved)
+
+proc OnProgress*(
+    self: ptr IBindStatusCallback,
+    ulProgress: ULONG,
+    ulProgressMax: ULONG,
+    ulStatusCode: ULONG,
+    szStatusText: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnProgress(self, ulProgress, ulProgressMax, ulStatusCode, szStatusText)
+
+proc OnStopBinding*(
+    self: ptr IBindStatusCallback, hresult: HRESULT, szError: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnStopBinding(self, hresult, szError)
+
+proc GetBindInfo*(
+    self: ptr IBindStatusCallback, grfBINDF: ptr DWORD, pbindinfo: ptr BINDINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBindInfo(self, grfBINDF, pbindinfo)
+
+proc OnDataAvailable*(
+    self: ptr IBindStatusCallback,
+    grfBSCF: DWORD,
+    dwSize: DWORD,
+    pformatetc: ptr FORMATETC,
+    pstgmed: ptr STGMEDIUM,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDataAvailable(self, grfBSCF, dwSize, pformatetc, pstgmed)
+
+proc OnObjectAvailable*(
+    self: ptr IBindStatusCallback, riid: REFIID, punk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnObjectAvailable(self, riid, punk)
+
+proc GetBindInfoEx*(
+    self: ptr IBindStatusCallbackEx,
+    grfBINDF: ptr DWORD,
+    pbindinfo: ptr BINDINFO,
+    grfBINDF2: ptr DWORD,
+    pdwReserved: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBindInfoEx(self, grfBINDF, pbindinfo, grfBINDF2, pdwReserved)
+
+proc Authenticate*(
+    self: ptr IAuthenticate,
+    phwnd: ptr HWND,
+    pszUsername: ptr LPWSTR,
+    pszPassword: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Authenticate(self, phwnd, pszUsername, pszPassword)
+
+proc AuthenticateEx*(
+    self: ptr IAuthenticateEx,
+    phwnd: ptr HWND,
+    pszUsername: ptr LPWSTR,
+    pszPassword: ptr LPWSTR,
+    pauthinfo: ptr AUTHENTICATEINFO,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AuthenticateEx(self, phwnd, pszUsername, pszPassword, pauthinfo)
+
+proc BeginningTransaction*(
+    self: ptr IHttpNegotiate,
+    szURL: LPCWSTR,
+    szHeaders: LPCWSTR,
+    dwReserved: DWORD,
+    pszAdditionalHeaders: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeginningTransaction(
+      self, szURL, szHeaders, dwReserved, pszAdditionalHeaders
+    )
+
+proc OnResponse*(
+    self: ptr IHttpNegotiate,
+    dwResponseCode: DWORD,
+    szResponseHeaders: LPCWSTR,
+    szRequestHeaders: LPCWSTR,
+    pszAdditionalRequestHeaders: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnResponse(
+      self, dwResponseCode, szResponseHeaders, szRequestHeaders,
+      pszAdditionalRequestHeaders,
+    )
+
+proc GetRootSecurityId*(
+    self: ptr IHttpNegotiate2,
+    pbSecurityId: ptr BYTE,
+    pcbSecurityId: ptr DWORD,
+    dwReserved: DWORD_PTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRootSecurityId(self, pbSecurityId, pcbSecurityId, dwReserved)
+
+proc GetSerializedClientCertContext*(
+    self: ptr IHttpNegotiate3, ppbCert: ptr ptr BYTE, pcbCert: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSerializedClientCertContext(self, ppbCert, pcbCert)
+
+proc SetHandleForUnlock*(
+    self: ptr IWinInetFileStream, hWinInetLockHandle: DWORD_PTR, dwReserved: DWORD_PTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHandleForUnlock(self, hWinInetLockHandle, dwReserved)
+
+proc SetDeleteFile*(
+    self: ptr IWinInetFileStream, dwReserved: DWORD_PTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDeleteFile(self, dwReserved)
+
+proc GetWindow*(
+    self: ptr IWindowForBindingUI, rguidReason: REFGUID, phwnd: ptr HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetWindow(self, rguidReason, phwnd)
+
+proc OnCodeInstallProblem*(
+    self: ptr ICodeInstall,
+    ulStatusCode: ULONG,
+    szDestination: LPCWSTR,
+    szSource: LPCWSTR,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnCodeInstallProblem(
+      self, ulStatusCode, szDestination, szSource, dwReserved
+    )
+
+proc GetPropertyBSTR*(
+    self: ptr IUri, uriProp: Uri_PROPERTY, pbstrProperty: ptr BSTR, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyBSTR(self, uriProp, pbstrProperty, dwFlags)
+
+proc GetPropertyLength*(
+    self: ptr IUri, uriProp: Uri_PROPERTY, pcchProperty: ptr DWORD, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyLength(self, uriProp, pcchProperty, dwFlags)
+
+proc GetPropertyDWORD*(
+    self: ptr IUri, uriProp: Uri_PROPERTY, pdwProperty: ptr DWORD, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyDWORD(self, uriProp, pdwProperty, dwFlags)
+
+proc HasProperty*(
+    self: ptr IUri, uriProp: Uri_PROPERTY, pfHasProperty: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HasProperty(self, uriProp, pfHasProperty)
+
+proc GetAbsoluteUri*(
+    self: ptr IUri, pbstrAbsoluteUri: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAbsoluteUri(self, pbstrAbsoluteUri)
+
+proc GetAuthority*(
+    self: ptr IUri, pbstrAuthority: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAuthority(self, pbstrAuthority)
+
+proc GetDisplayUri*(
+    self: ptr IUri, pbstrDisplayString: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDisplayUri(self, pbstrDisplayString)
+
+proc GetDomain*(self: ptr IUri, pbstrDomain: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDomain(self, pbstrDomain)
+
+proc GetExtension*(
+    self: ptr IUri, pbstrExtension: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetExtension(self, pbstrExtension)
+
+proc GetFragment*(self: ptr IUri, pbstrFragment: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFragment(self, pbstrFragment)
+
+proc GetHost*(self: ptr IUri, pbstrHost: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHost(self, pbstrHost)
+
+proc GetPassword*(self: ptr IUri, pbstrPassword: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPassword(self, pbstrPassword)
+
+proc GetPath*(self: ptr IUri, pbstrPath: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPath(self, pbstrPath)
+
+proc GetPathAndQuery*(
+    self: ptr IUri, pbstrPathAndQuery: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPathAndQuery(self, pbstrPathAndQuery)
+
+proc GetQuery*(self: ptr IUri, pbstrQuery: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetQuery(self, pbstrQuery)
+
+proc GetRawUri*(self: ptr IUri, pbstrRawUri: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRawUri(self, pbstrRawUri)
+
+proc GetSchemeName*(
+    self: ptr IUri, pbstrSchemeName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSchemeName(self, pbstrSchemeName)
+
+proc GetUserInfo*(self: ptr IUri, pbstrUserInfo: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUserInfo(self, pbstrUserInfo)
+
+proc GetUserName*(self: ptr IUri, pbstrUserName: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUserName(self, pbstrUserName)
+
+proc GetHostType*(self: ptr IUri, pdwHostType: ptr DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHostType(self, pdwHostType)
+
+proc GetPort*(self: ptr IUri, pdwPort: ptr DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPort(self, pdwPort)
+
+proc GetScheme*(self: ptr IUri, pdwScheme: ptr DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetScheme(self, pdwScheme)
+
+proc GetZone*(self: ptr IUri, pdwZone: ptr DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetZone(self, pdwZone)
+
+proc GetProperties*(self: ptr IUri, pdwFlags: LPDWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperties(self, pdwFlags)
+
+proc IsEqual*(
+    self: ptr IUri, pUri: ptr IUri, pfEqual: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsEqual(self, pUri, pfEqual)
+
+proc GetIUri*(
+    self: ptr IUriContainer, ppIUri: ptr ptr IUri
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIUri(self, ppIUri)
+
+proc CreateUriSimple*(
+    self: ptr IUriBuilder,
+    dwAllowEncodingPropertyMask: DWORD,
+    dwReserved: DWORD_PTR,
+    ppIUri: ptr ptr IUri,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateUriSimple(self, dwAllowEncodingPropertyMask, dwReserved, ppIUri)
+
+proc CreateUri*(
+    self: ptr IUriBuilder,
+    dwCreateFlags: DWORD,
+    dwAllowEncodingPropertyMask: DWORD,
+    dwReserved: DWORD_PTR,
+    ppIUri: ptr ptr IUri,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateUri(
+      self, dwCreateFlags, dwAllowEncodingPropertyMask, dwReserved, ppIUri
+    )
+
+proc CreateUriWithFlags*(
+    self: ptr IUriBuilder,
+    dwCreateFlags: DWORD,
+    dwUriBuilderFlags: DWORD,
+    dwAllowEncodingPropertyMask: DWORD,
+    dwReserved: DWORD_PTR,
+    ppIUri: ptr ptr IUri,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateUriWithFlags(
+      self, dwCreateFlags, dwUriBuilderFlags, dwAllowEncodingPropertyMask, dwReserved,
+      ppIUri,
+    )
+
+proc GetIUri*(self: ptr IUriBuilder, ppIUri: ptr ptr IUri): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIUri(self, ppIUri)
+
+proc SetIUri*(self: ptr IUriBuilder, pIUri: ptr IUri): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetIUri(self, pIUri)
+
+proc GetFragment*(
+    self: ptr IUriBuilder, pcchFragment: ptr DWORD, ppwzFragment: ptr LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFragment(self, pcchFragment, ppwzFragment)
+
+proc GetHost*(
+    self: ptr IUriBuilder, pcchHost: ptr DWORD, ppwzHost: ptr LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHost(self, pcchHost, ppwzHost)
+
+proc GetPassword*(
+    self: ptr IUriBuilder, pcchPassword: ptr DWORD, ppwzPassword: ptr LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPassword(self, pcchPassword, ppwzPassword)
+
+proc GetPath*(
+    self: ptr IUriBuilder, pcchPath: ptr DWORD, ppwzPath: ptr LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPath(self, pcchPath, ppwzPath)
+
+proc GetPort*(
+    self: ptr IUriBuilder, pfHasPort: ptr WINBOOL, pdwPort: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPort(self, pfHasPort, pdwPort)
+
+proc GetQuery*(
+    self: ptr IUriBuilder, pcchQuery: ptr DWORD, ppwzQuery: ptr LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetQuery(self, pcchQuery, ppwzQuery)
+
+proc GetSchemeName*(
+    self: ptr IUriBuilder, pcchSchemeName: ptr DWORD, ppwzSchemeName: ptr LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSchemeName(self, pcchSchemeName, ppwzSchemeName)
+
+proc GetUserName*(
+    self: ptr IUriBuilder, pcchUserName: ptr DWORD, ppwzUserName: ptr LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUserName(self, pcchUserName, ppwzUserName)
+
+proc SetFragment*(
+    self: ptr IUriBuilder, pwzNewValue: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFragment(self, pwzNewValue)
+
+proc SetHost*(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHost(self, pwzNewValue)
+
+proc SetPassword*(
+    self: ptr IUriBuilder, pwzNewValue: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPassword(self, pwzNewValue)
+
+proc SetPath*(self: ptr IUriBuilder, pwzNewValue: LPCWSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPath(self, pwzNewValue)
+
+proc SetPort*(
+    self: ptr IUriBuilder, fHasPort: WINBOOL, dwNewValue: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPort(self, fHasPort, dwNewValue)
+
+proc SetQuery*(
+    self: ptr IUriBuilder, pwzNewValue: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetQuery(self, pwzNewValue)
+
+proc SetSchemeName*(
+    self: ptr IUriBuilder, pwzNewValue: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSchemeName(self, pwzNewValue)
+
+proc SetUserName*(
+    self: ptr IUriBuilder, pwzNewValue: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetUserName(self, pwzNewValue)
+
+proc RemoveProperties*(
+    self: ptr IUriBuilder, dwPropertyMask: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveProperties(self, dwPropertyMask)
+
+proc HasBeenModified*(
+    self: ptr IUriBuilder, pfModified: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HasBeenModified(self, pfModified)
+
+proc CreateIUriBuilder*(
+    self: ptr IUriBuilderFactory,
+    dwFlags: DWORD,
+    dwReserved: DWORD_PTR,
+    ppIUriBuilder: ptr ptr IUriBuilder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateIUriBuilder(self, dwFlags, dwReserved, ppIUriBuilder)
+
+proc CreateInitializedIUriBuilder*(
+    self: ptr IUriBuilderFactory,
+    dwFlags: DWORD,
+    dwReserved: DWORD_PTR,
+    ppIUriBuilder: ptr ptr IUriBuilder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInitializedIUriBuilder(self, dwFlags, dwReserved, ppIUriBuilder)
+
+proc mQueryOption*(
+    self: ptr IWinInetInfo, dwOption: DWORD, pBuffer: LPVOID, pcbBuf: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryOption(self, dwOption, pBuffer, pcbBuf)
+
+proc OnSecurityProblem*(
+    self: ptr IHttpSecurity, dwProblem: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnSecurityProblem(self, dwProblem)
+
+proc QueryInfo*(
+    self: ptr IWinInetHttpInfo,
+    dwOption: DWORD,
+    pBuffer: LPVOID,
+    pcbBuf: ptr DWORD,
+    pdwFlags: ptr DWORD,
+    pdwReserved: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryInfo(self, dwOption, pBuffer, pcbBuf, pdwFlags, pdwReserved)
+
+proc GetRequestTimeouts*(
+    self: ptr IWinInetHttpTimeouts,
+    pdwConnectTimeout: ptr DWORD,
+    pdwSendTimeout: ptr DWORD,
+    pdwReceiveTimeout: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRequestTimeouts(
+      self, pdwConnectTimeout, pdwSendTimeout, pdwReceiveTimeout
+    )
+
+proc SetCacheExtension*(
+    self: ptr IWinInetCacheHints,
+    pwzExt: LPCWSTR,
+    pszCacheFile: LPVOID,
+    pcbCacheFile: ptr DWORD,
+    pdwWinInetError: ptr DWORD,
+    pdwReserved: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCacheExtension(
+      self, pwzExt, pszCacheFile, pcbCacheFile, pdwWinInetError, pdwReserved
+    )
+
+proc SetCacheExtension2*(
+    self: ptr IWinInetCacheHints2,
+    pwzExt: LPCWSTR,
+    pwzCacheFile: ptr WCHAR,
+    pcchCacheFile: ptr DWORD,
+    pdwWinInetError: ptr DWORD,
+    pdwReserved: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCacheExtension2(
+      self, pwzExt, pwzCacheFile, pcchCacheFile, pdwWinInetError, pdwReserved
+    )
+
+proc CreateMoniker*(
+    self: ptr IBindHost,
+    szName: LPOLESTR,
+    pBC: ptr IBindCtx,
+    ppmk: ptr ptr IMoniker,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateMoniker(self, szName, pBC, ppmk, dwReserved)
+
+proc MonikerBindToStorage*(
+    self: ptr IBindHost,
+    pMk: ptr IMoniker,
+    pBC: ptr IBindCtx,
+    pBSC: ptr IBindStatusCallback,
+    riid: REFIID,
+    ppvObj: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MonikerBindToStorage(self, pMk, pBC, pBSC, riid, ppvObj)
+
+proc MonikerBindToObject*(
+    self: ptr IBindHost,
+    pMk: ptr IMoniker,
+    pBC: ptr IBindCtx,
+    pBSC: ptr IBindStatusCallback,
+    riid: REFIID,
+    ppvObj: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MonikerBindToObject(self, pMk, pBC, pBSC, riid, ppvObj)
+
+proc GetBindInfo*(
+    self: ptr IInternetBindInfo, grfBINDF: ptr DWORD, pbindinfo: ptr BINDINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBindInfo(self, grfBINDF, pbindinfo)
+
+proc GetBindString*(
+    self: ptr IInternetBindInfo,
+    ulStringType: ULONG,
+    ppwzStr: ptr LPOLESTR,
+    cEl: ULONG,
+    pcElFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBindString(self, ulStringType, ppwzStr, cEl, pcElFetched)
+
+proc GetBindInfoEx*(
+    self: ptr IInternetBindInfoEx,
+    grfBINDF: ptr DWORD,
+    pbindinfo: ptr BINDINFO,
+    grfBINDF2: ptr DWORD,
+    pdwReserved: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBindInfoEx(self, grfBINDF, pbindinfo, grfBINDF2, pdwReserved)
+
+proc Start*(
+    self: ptr IInternetProtocolRoot,
+    szUrl: LPCWSTR,
+    pOIProtSink: ptr IInternetProtocolSink,
+    pOIBindInfo: ptr IInternetBindInfo,
+    grfPI: DWORD,
+    dwReserved: HANDLE_PTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Start(self, szUrl, pOIProtSink, pOIBindInfo, grfPI, dwReserved)
+
+proc Continue*(
+    self: ptr IInternetProtocolRoot, pProtocolData: ptr PROTOCOLDATA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Continue(self, pProtocolData)
+
+proc Abort*(
+    self: ptr IInternetProtocolRoot, hrReason: HRESULT, dwOptions: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Abort(self, hrReason, dwOptions)
+
+proc Terminate*(
+    self: ptr IInternetProtocolRoot, dwOptions: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Terminate(self, dwOptions)
+
+proc Suspend*(self: ptr IInternetProtocolRoot): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Suspend(self)
+
+proc Resume*(self: ptr IInternetProtocolRoot): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Resume(self)
+
+proc Read*(
+    self: ptr IInternetProtocol, pv: pointer, cb: ULONG, pcbRead: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Read(self, pv, cb, pcbRead)
+
+proc Seek*(
+    self: ptr IInternetProtocol,
+    dlibMove: LARGE_INTEGER,
+    dwOrigin: DWORD,
+    plibNewPosition: ptr ULARGE_INTEGER,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Seek(self, dlibMove, dwOrigin, plibNewPosition)
+
+proc LockRequest*(
+    self: ptr IInternetProtocol, dwOptions: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LockRequest(self, dwOptions)
+
+proc UnlockRequest*(self: ptr IInternetProtocol): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnlockRequest(self)
+
+proc StartEx*(
+    self: ptr IInternetProtocolEx,
+    pUri: ptr IUri,
+    pOIProtSink: ptr IInternetProtocolSink,
+    pOIBindInfo: ptr IInternetBindInfo,
+    grfPI: DWORD,
+    dwReserved: HANDLE_PTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StartEx(self, pUri, pOIProtSink, pOIBindInfo, grfPI, dwReserved)
+
+proc Switch*(
+    self: ptr IInternetProtocolSink, pProtocolData: ptr PROTOCOLDATA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Switch(self, pProtocolData)
+
+proc ReportProgress*(
+    self: ptr IInternetProtocolSink, ulStatusCode: ULONG, szStatusText: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReportProgress(self, ulStatusCode, szStatusText)
+
+proc ReportData*(
+    self: ptr IInternetProtocolSink,
+    grfBSCF: DWORD,
+    ulProgress: ULONG,
+    ulProgressMax: ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReportData(self, grfBSCF, ulProgress, ulProgressMax)
+
+proc ReportResult*(
+    self: ptr IInternetProtocolSink,
+    hrResult: HRESULT,
+    dwError: DWORD,
+    szResult: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReportResult(self, hrResult, dwError, szResult)
+
+proc SwitchSink*(
+    self: ptr IInternetProtocolSinkStackable, pOIProtSink: ptr IInternetProtocolSink
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SwitchSink(self, pOIProtSink)
+
+proc CommitSwitch*(
+    self: ptr IInternetProtocolSinkStackable
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CommitSwitch(self)
+
+proc RollbackSwitch*(
+    self: ptr IInternetProtocolSinkStackable
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RollbackSwitch(self)
+
+proc RegisterNameSpace*(
+    self: ptr IInternetSession,
+    pCF: ptr IClassFactory,
+    rclsid: REFCLSID,
+    pwzProtocol: LPCWSTR,
+    cPatterns: ULONG,
+    ppwzPatterns: ptr LPCWSTR,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterNameSpace(
+      self, pCF, rclsid, pwzProtocol, cPatterns, ppwzPatterns, dwReserved
+    )
+
+proc UnregisterNameSpace*(
+    self: ptr IInternetSession, pCF: ptr IClassFactory, pszProtocol: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnregisterNameSpace(self, pCF, pszProtocol)
+
+proc RegisterMimeFilter*(
+    self: ptr IInternetSession,
+    pCF: ptr IClassFactory,
+    rclsid: REFCLSID,
+    pwzType: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterMimeFilter(self, pCF, rclsid, pwzType)
+
+proc UnregisterMimeFilter*(
+    self: ptr IInternetSession, pCF: ptr IClassFactory, pwzType: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnregisterMimeFilter(self, pCF, pwzType)
+
+proc CreateBinding*(
+    self: ptr IInternetSession,
+    pBC: LPBC,
+    szUrl: LPCWSTR,
+    pUnkOuter: ptr IUnknown,
+    ppUnk: ptr ptr IUnknown,
+    ppOInetProt: ptr ptr IInternetProtocol,
+    dwOption: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateBinding(self, pBC, szUrl, pUnkOuter, ppUnk, ppOInetProt, dwOption)
+
+proc SetSessionOption*(
+    self: ptr IInternetSession,
+    dwOption: DWORD,
+    pBuffer: LPVOID,
+    dwBufferLength: DWORD,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSessionOption(self, dwOption, pBuffer, dwBufferLength, dwReserved)
+
+proc GetSessionOption*(
+    self: ptr IInternetSession,
+    dwOption: DWORD,
+    pBuffer: LPVOID,
+    pdwBufferLength: ptr DWORD,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSessionOption(self, dwOption, pBuffer, pdwBufferLength, dwReserved)
+
+proc Prepare*(self: ptr IInternetThreadSwitch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Prepare(self)
+
+proc Continue*(self: ptr IInternetThreadSwitch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Continue(self)
+
+proc SetPriority*(
+    self: ptr IInternetPriority, nPriority: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPriority(self, nPriority)
+
+proc GetPriority*(
+    self: ptr IInternetPriority, pnPriority: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPriority(self, pnPriority)
+
+proc ParseUrl*(
+    self: ptr IInternetProtocolInfo,
+    pwzUrl: LPCWSTR,
+    ParseAction: PARSEACTION,
+    dwParseFlags: DWORD,
+    pwzResult: LPWSTR,
+    cchResult: DWORD,
+    pcchResult: ptr DWORD,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseUrl(
+      self, pwzUrl, ParseAction, dwParseFlags, pwzResult, cchResult, pcchResult,
+      dwReserved,
+    )
+
+proc CombineUrl*(
+    self: ptr IInternetProtocolInfo,
+    pwzBaseUrl: LPCWSTR,
+    pwzRelativeUrl: LPCWSTR,
+    dwCombineFlags: DWORD,
+    pwzResult: LPWSTR,
+    cchResult: DWORD,
+    pcchResult: ptr DWORD,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CombineUrl(
+      self, pwzBaseUrl, pwzRelativeUrl, dwCombineFlags, pwzResult, cchResult,
+      pcchResult, dwReserved,
+    )
+
+proc CompareUrl*(
+    self: ptr IInternetProtocolInfo,
+    pwzUrl1: LPCWSTR,
+    pwzUrl2: LPCWSTR,
+    dwCompareFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CompareUrl(self, pwzUrl1, pwzUrl2, dwCompareFlags)
+
+proc QueryInfo*(
+    self: ptr IInternetProtocolInfo,
+    pwzUrl: LPCWSTR,
+    OueryOption: QUERYOPTION,
+    dwQueryFlags: DWORD,
+    pBuffer: LPVOID,
+    cbBuffer: DWORD,
+    pcbBuf: ptr DWORD,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryInfo(
+      self, pwzUrl, OueryOption, dwQueryFlags, pBuffer, cbBuffer, pcbBuf, dwReserved
+    )
+
+proc GetWindow*(
+    self: ptr IInternetSecurityMgrSite, phwnd: ptr HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetWindow(self, phwnd)
+
+proc EnableModeless*(
+    self: ptr IInternetSecurityMgrSite, fEnable: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnableModeless(self, fEnable)
+
+proc SetSecuritySite*(
+    self: ptr IInternetSecurityManager, pSite: ptr IInternetSecurityMgrSite
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSecuritySite(self, pSite)
+
+proc GetSecuritySite*(
+    self: ptr IInternetSecurityManager, ppSite: ptr ptr IInternetSecurityMgrSite
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSecuritySite(self, ppSite)
+
+proc MapUrlToZone*(
+    self: ptr IInternetSecurityManager,
+    pwszUrl: LPCWSTR,
+    pdwZone: ptr DWORD,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MapUrlToZone(self, pwszUrl, pdwZone, dwFlags)
+
+proc GetSecurityId*(
+    self: ptr IInternetSecurityManager,
+    pwszUrl: LPCWSTR,
+    pbSecurityId: ptr BYTE,
+    pcbSecurityId: ptr DWORD,
+    dwReserved: DWORD_PTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSecurityId(self, pwszUrl, pbSecurityId, pcbSecurityId, dwReserved)
+
+proc ProcessUrlAction*(
+    self: ptr IInternetSecurityManager,
+    pwszUrl: LPCWSTR,
+    dwAction: DWORD,
+    pPolicy: ptr BYTE,
+    cbPolicy: DWORD,
+    pContext: ptr BYTE,
+    cbContext: DWORD,
+    dwFlags: DWORD,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ProcessUrlAction(
+      self, pwszUrl, dwAction, pPolicy, cbPolicy, pContext, cbContext, dwFlags,
+      dwReserved,
+    )
+
+proc QueryCustomPolicy*(
+    self: ptr IInternetSecurityManager,
+    pwszUrl: LPCWSTR,
+    guidKey: REFGUID,
+    ppPolicy: ptr ptr BYTE,
+    pcbPolicy: ptr DWORD,
+    pContext: ptr BYTE,
+    cbContext: DWORD,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryCustomPolicy(
+      self, pwszUrl, guidKey, ppPolicy, pcbPolicy, pContext, cbContext, dwReserved
+    )
+
+proc SetZoneMapping*(
+    self: ptr IInternetSecurityManager,
+    dwZone: DWORD,
+    lpszPattern: LPCWSTR,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetZoneMapping(self, dwZone, lpszPattern, dwFlags)
+
+proc GetZoneMappings*(
+    self: ptr IInternetSecurityManager,
+    dwZone: DWORD,
+    ppenumString: ptr ptr IEnumString,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetZoneMappings(self, dwZone, ppenumString, dwFlags)
+
+proc ProcessUrlActionEx*(
+    self: ptr IInternetSecurityManagerEx,
+    pwszUrl: LPCWSTR,
+    dwAction: DWORD,
+    pPolicy: ptr BYTE,
+    cbPolicy: DWORD,
+    pContext: ptr BYTE,
+    cbContext: DWORD,
+    dwFlags: DWORD,
+    dwReserved: DWORD,
+    pdwOutFlags: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ProcessUrlActionEx(
+      self, pwszUrl, dwAction, pPolicy, cbPolicy, pContext, cbContext, dwFlags,
+      dwReserved, pdwOutFlags,
+    )
+
+proc MapUrlToZoneEx2*(
+    self: ptr IInternetSecurityManagerEx2,
+    pUri: ptr IUri,
+    pdwZone: ptr DWORD,
+    dwFlags: DWORD,
+    ppwszMappedUrl: ptr LPWSTR,
+    pdwOutFlags: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MapUrlToZoneEx2(
+      self, pUri, pdwZone, dwFlags, ppwszMappedUrl, pdwOutFlags
+    )
+
+proc ProcessUrlActionEx2*(
+    self: ptr IInternetSecurityManagerEx2,
+    pUri: ptr IUri,
+    dwAction: DWORD,
+    pPolicy: ptr BYTE,
+    cbPolicy: DWORD,
+    pContext: ptr BYTE,
+    cbContext: DWORD,
+    dwFlags: DWORD,
+    dwReserved: DWORD_PTR,
+    pdwOutFlags: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ProcessUrlActionEx2(
+      self, pUri, dwAction, pPolicy, cbPolicy, pContext, cbContext, dwFlags, dwReserved,
+      pdwOutFlags,
+    )
+
+proc GetSecurityIdEx2*(
+    self: ptr IInternetSecurityManagerEx2,
+    pUri: ptr IUri,
+    pbSecurityId: ptr BYTE,
+    pcbSecurityId: ptr DWORD,
+    dwReserved: DWORD_PTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSecurityIdEx2(self, pUri, pbSecurityId, pcbSecurityId, dwReserved)
+
+proc QueryCustomPolicyEx2*(
+    self: ptr IInternetSecurityManagerEx2,
+    pUri: ptr IUri,
+    guidKey: REFGUID,
+    ppPolicy: ptr ptr BYTE,
+    pcbPolicy: ptr DWORD,
+    pContext: ptr BYTE,
+    cbContext: DWORD,
+    dwReserved: DWORD_PTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryCustomPolicyEx2(
+      self, pUri, guidKey, ppPolicy, pcbPolicy, pContext, cbContext, dwReserved
+    )
+
+proc GetId*(self: ptr IZoneIdentifier, pdwZone: ptr DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetId(self, pdwZone)
+
+proc SetId*(self: ptr IZoneIdentifier, dwZone: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetId(self, dwZone)
+
+proc Remove*(self: ptr IZoneIdentifier): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Remove(self)
+
+proc GetSecurityId*(
+    self: ptr IInternetHostSecurityManager,
+    pbSecurityId: ptr BYTE,
+    pcbSecurityId: ptr DWORD,
+    dwReserved: DWORD_PTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSecurityId(self, pbSecurityId, pcbSecurityId, dwReserved)
+
+proc ProcessUrlAction*(
+    self: ptr IInternetHostSecurityManager,
+    dwAction: DWORD,
+    pPolicy: ptr BYTE,
+    cbPolicy: DWORD,
+    pContext: ptr BYTE,
+    cbContext: DWORD,
+    dwFlags: DWORD,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ProcessUrlAction(
+      self, dwAction, pPolicy, cbPolicy, pContext, cbContext, dwFlags, dwReserved
+    )
+
+proc QueryCustomPolicy*(
+    self: ptr IInternetHostSecurityManager,
+    guidKey: REFGUID,
+    ppPolicy: ptr ptr BYTE,
+    pcbPolicy: ptr DWORD,
+    pContext: ptr BYTE,
+    cbContext: DWORD,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryCustomPolicy(
+      self, guidKey, ppPolicy, pcbPolicy, pContext, cbContext, dwReserved
+    )
+
+proc GetZoneAttributes*(
+    self: ptr IInternetZoneManager, dwZone: DWORD, pZoneAttributes: ptr ZONEATTRIBUTES
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetZoneAttributes(self, dwZone, pZoneAttributes)
+
+proc SetZoneAttributes*(
+    self: ptr IInternetZoneManager, dwZone: DWORD, pZoneAttributes: ptr ZONEATTRIBUTES
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetZoneAttributes(self, dwZone, pZoneAttributes)
+
+proc GetZoneCustomPolicy*(
+    self: ptr IInternetZoneManager,
+    dwZone: DWORD,
+    guidKey: REFGUID,
+    ppPolicy: ptr ptr BYTE,
+    pcbPolicy: ptr DWORD,
+    urlZoneReg: URLZONEREG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetZoneCustomPolicy(
+      self, dwZone, guidKey, ppPolicy, pcbPolicy, urlZoneReg
+    )
+
+proc SetZoneCustomPolicy*(
+    self: ptr IInternetZoneManager,
+    dwZone: DWORD,
+    guidKey: REFGUID,
+    pPolicy: ptr BYTE,
+    cbPolicy: DWORD,
+    urlZoneReg: URLZONEREG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetZoneCustomPolicy(
+      self, dwZone, guidKey, pPolicy, cbPolicy, urlZoneReg
+    )
+
+proc GetZoneActionPolicy*(
+    self: ptr IInternetZoneManager,
+    dwZone: DWORD,
+    dwAction: DWORD,
+    pPolicy: ptr BYTE,
+    cbPolicy: DWORD,
+    urlZoneReg: URLZONEREG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetZoneActionPolicy(
+      self, dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg
+    )
+
+proc SetZoneActionPolicy*(
+    self: ptr IInternetZoneManager,
+    dwZone: DWORD,
+    dwAction: DWORD,
+    pPolicy: ptr BYTE,
+    cbPolicy: DWORD,
+    urlZoneReg: URLZONEREG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetZoneActionPolicy(
+      self, dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg
+    )
+
+proc PromptAction*(
+    self: ptr IInternetZoneManager,
+    dwAction: DWORD,
+    hwndParent: HWND,
+    pwszUrl: LPCWSTR,
+    pwszText: LPCWSTR,
+    dwPromptFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PromptAction(
+      self, dwAction, hwndParent, pwszUrl, pwszText, dwPromptFlags
+    )
+
+proc LogAction*(
+    self: ptr IInternetZoneManager,
+    dwAction: DWORD,
+    pwszUrl: LPCWSTR,
+    pwszText: LPCWSTR,
+    dwLogFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LogAction(self, dwAction, pwszUrl, pwszText, dwLogFlags)
+
+proc CreateZoneEnumerator*(
+    self: ptr IInternetZoneManager,
+    pdwEnum: ptr DWORD,
+    pdwCount: ptr DWORD,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateZoneEnumerator(self, pdwEnum, pdwCount, dwFlags)
+
+proc GetZoneAt*(
+    self: ptr IInternetZoneManager, dwEnum: DWORD, dwIndex: DWORD, pdwZone: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetZoneAt(self, dwEnum, dwIndex, pdwZone)
+
+proc DestroyZoneEnumerator*(
+    self: ptr IInternetZoneManager, dwEnum: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DestroyZoneEnumerator(self, dwEnum)
+
+proc CopyTemplatePoliciesToZone*(
+    self: ptr IInternetZoneManager, dwTemplate: DWORD, dwZone: DWORD, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CopyTemplatePoliciesToZone(self, dwTemplate, dwZone, dwReserved)
+
+proc GetZoneActionPolicyEx*(
+    self: ptr IInternetZoneManagerEx,
+    dwZone: DWORD,
+    dwAction: DWORD,
+    pPolicy: ptr BYTE,
+    cbPolicy: DWORD,
+    urlZoneReg: URLZONEREG,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetZoneActionPolicyEx(
+      self, dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg, dwFlags
+    )
+
+proc SetZoneActionPolicyEx*(
+    self: ptr IInternetZoneManagerEx,
+    dwZone: DWORD,
+    dwAction: DWORD,
+    pPolicy: ptr BYTE,
+    cbPolicy: DWORD,
+    urlZoneReg: URLZONEREG,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetZoneActionPolicyEx(
+      self, dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg, dwFlags
+    )
+
+proc GetZoneAttributesEx*(
+    self: ptr IInternetZoneManagerEx2,
+    dwZone: DWORD,
+    pZoneAttributes: ptr ZONEATTRIBUTES,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetZoneAttributesEx(self, dwZone, pZoneAttributes, dwFlags)
+
+proc GetZoneSecurityState*(
+    self: ptr IInternetZoneManagerEx2,
+    dwZoneIndex: DWORD,
+    fRespectPolicy: WINBOOL,
+    pdwState: LPDWORD,
+    pfPolicyEncountered: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetZoneSecurityState(
+      self, dwZoneIndex, fRespectPolicy, pdwState, pfPolicyEncountered
+    )
+
+proc GetIESecurityState*(
+    self: ptr IInternetZoneManagerEx2,
+    fRespectPolicy: WINBOOL,
+    pdwState: LPDWORD,
+    pfPolicyEncountered: ptr WINBOOL,
+    fNoCache: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIESecurityState(
+      self, fRespectPolicy, pdwState, pfPolicyEncountered, fNoCache
+    )
+
+proc FixUnsecureSettings*(
+    self: ptr IInternetZoneManagerEx2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FixUnsecureSettings(self)
+
+proc ProcessSoftDist*(
+    self: ptr ISoftDistExt,
+    szCDFURL: LPCWSTR,
+    pSoftDistElement: ptr IXMLElement,
+    lpsdi: LPSOFTDISTINFO,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ProcessSoftDist(self, szCDFURL, pSoftDistElement, lpsdi)
+
+proc GetFirstCodeBase*(
+    self: ptr ISoftDistExt, szCodeBase: ptr LPWSTR, dwMaxSize: LPDWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFirstCodeBase(self, szCodeBase, dwMaxSize)
+
+proc GetNextCodeBase*(
+    self: ptr ISoftDistExt, szCodeBase: ptr LPWSTR, dwMaxSize: LPDWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNextCodeBase(self, szCodeBase, dwMaxSize)
+
+proc AsyncInstallDistributionUnit*(
+    self: ptr ISoftDistExt,
+    pbc: ptr IBindCtx,
+    pvReserved: LPVOID,
+    flags: DWORD,
+    lpcbh: LPCODEBASEHOLD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AsyncInstallDistributionUnit(self, pbc, pvReserved, flags, lpcbh)
+
+proc GetCatalogFile*(
+    self: ptr ICatalogFileInfo, ppszCatalogFile: ptr LPSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCatalogFile(self, ppszCatalogFile)
+
+proc GetJavaTrust*(
+    self: ptr ICatalogFileInfo, ppJavaTrust: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetJavaTrust(self, ppJavaTrust)
+
+proc DoEncode*(
+    self: ptr IDataFilter,
+    dwFlags: DWORD,
+    lInBufferSize: LONG,
+    pbInBuffer: ptr BYTE,
+    lOutBufferSize: LONG,
+    pbOutBuffer: ptr BYTE,
+    lInBytesAvailable: LONG,
+    plInBytesRead: ptr LONG,
+    plOutBytesWritten: ptr LONG,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoEncode(
+      self, dwFlags, lInBufferSize, pbInBuffer, lOutBufferSize, pbOutBuffer,
+      lInBytesAvailable, plInBytesRead, plOutBytesWritten, dwReserved,
+    )
+
+proc DoDecode*(
+    self: ptr IDataFilter,
+    dwFlags: DWORD,
+    lInBufferSize: LONG,
+    pbInBuffer: ptr BYTE,
+    lOutBufferSize: LONG,
+    pbOutBuffer: ptr BYTE,
+    lInBytesAvailable: LONG,
+    plInBytesRead: ptr LONG,
+    plOutBytesWritten: ptr LONG,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoDecode(
+      self, dwFlags, lInBufferSize, pbInBuffer, lOutBufferSize, pbOutBuffer,
+      lInBytesAvailable, plInBytesRead, plOutBytesWritten, dwReserved,
+    )
+
+proc SetEncodingLevel*(
+    self: ptr IDataFilter, dwEncLevel: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetEncodingLevel(self, dwEncLevel)
+
+proc FindBestFilter*(
+    self: ptr IEncodingFilterFactory,
+    pwzCodeIn: LPCWSTR,
+    pwzCodeOut: LPCWSTR,
+    info: DATAINFO,
+    ppDF: ptr ptr IDataFilter,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindBestFilter(self, pwzCodeIn, pwzCodeOut, info, ppDF)
+
+proc GetDefaultFilter*(
+    self: ptr IEncodingFilterFactory,
+    pwzCodeIn: LPCWSTR,
+    pwzCodeOut: LPCWSTR,
+    ppDF: ptr ptr IDataFilter,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultFilter(self, pwzCodeIn, pwzCodeOut, ppDF)
+
+proc GetWrapperCode*(
+    self: ptr IWrappedProtocol, pnCode: ptr LONG, dwReserved: DWORD_PTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetWrapperCode(self, pnCode, dwReserved)
+
+proc GetBindHandle*(
+    self: ptr IGetBindHandle,
+    enumRequestedHandle: BINDHANDLETYPES,
+    pRetHandle: ptr HANDLE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBindHandle(self, enumRequestedHandle, pRetHandle)
+
+proc Redirect*(
+    self: ptr IBindCallbackRedirect, lpcUrl: LPCWSTR, vbCancel: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Redirect(self, lpcUrl, vbCancel)
+
+proc ReadMultiple*(
+    self: ptr IPropertyStorage,
+    cpspec: ULONG,
+    rgpspec: ptr PROPSPEC,
+    rgpropvar: ptr PROPVARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReadMultiple(self, cpspec, rgpspec, rgpropvar)
+
+proc WriteMultiple*(
+    self: ptr IPropertyStorage,
+    cpspec: ULONG,
+    rgpspec: ptr PROPSPEC,
+    rgpropvar: ptr PROPVARIANT,
+    propidNameFirst: PROPID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WriteMultiple(self, cpspec, rgpspec, rgpropvar, propidNameFirst)
+
+proc DeleteMultiple*(
+    self: ptr IPropertyStorage, cpspec: ULONG, rgpspec: ptr PROPSPEC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteMultiple(self, cpspec, rgpspec)
+
+proc ReadPropertyNames*(
+    self: ptr IPropertyStorage,
+    cpropid: ULONG,
+    rgpropid: ptr PROPID,
+    rglpwstrName: ptr LPOLESTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReadPropertyNames(self, cpropid, rgpropid, rglpwstrName)
+
+proc WritePropertyNames*(
+    self: ptr IPropertyStorage,
+    cpropid: ULONG,
+    rgpropid: ptr PROPID,
+    rglpwstrName: ptr LPOLESTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WritePropertyNames(self, cpropid, rgpropid, rglpwstrName)
+
+proc DeletePropertyNames*(
+    self: ptr IPropertyStorage, cpropid: ULONG, rgpropid: ptr PROPID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeletePropertyNames(self, cpropid, rgpropid)
+
+proc Commit*(
+    self: ptr IPropertyStorage, grfCommitFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Commit(self, grfCommitFlags)
+
+proc Revert*(self: ptr IPropertyStorage): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Revert(self)
+
+proc Enum*(
+    self: ptr IPropertyStorage, ppenum: ptr ptr IEnumSTATPROPSTG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Enum(self, ppenum)
+
+proc SetTimes*(
+    self: ptr IPropertyStorage,
+    pctime: ptr FILETIME,
+    patime: ptr FILETIME,
+    pmtime: ptr FILETIME,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTimes(self, pctime, patime, pmtime)
+
+proc SetClass*(
+    self: ptr IPropertyStorage, clsid: REFCLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetClass(self, clsid)
+
+proc Stat*(
+    self: ptr IPropertyStorage, pstatpsstg: ptr STATPROPSETSTG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Stat(self, pstatpsstg)
+
+proc Create*(
+    self: ptr IPropertySetStorage,
+    rfmtid: REFFMTID,
+    pclsid: ptr CLSID,
+    grfFlags: DWORD,
+    grfMode: DWORD,
+    ppprstg: ptr ptr IPropertyStorage,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Create(self, rfmtid, pclsid, grfFlags, grfMode, ppprstg)
+
+proc Open*(
+    self: ptr IPropertySetStorage,
+    rfmtid: REFFMTID,
+    grfMode: DWORD,
+    ppprstg: ptr ptr IPropertyStorage,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Open(self, rfmtid, grfMode, ppprstg)
+
+proc mDelete*(
+    self: ptr IPropertySetStorage, rfmtid: REFFMTID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Delete(self, rfmtid)
+
+proc Enum*(
+    self: ptr IPropertySetStorage, ppenum: ptr ptr IEnumSTATPROPSETSTG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Enum(self, ppenum)
+
+proc Next*(
+    self: ptr IEnumSTATPROPSTG,
+    celt: ULONG,
+    rgelt: ptr STATPROPSTG,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumSTATPROPSTG, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumSTATPROPSTG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumSTATPROPSTG, ppenum: ptr ptr IEnumSTATPROPSTG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc Next*(
+    self: ptr IEnumSTATPROPSETSTG,
+    celt: ULONG,
+    rgelt: ptr STATPROPSETSTG,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumSTATPROPSETSTG, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumSTATPROPSETSTG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumSTATPROPSETSTG, ppenum: ptr ptr IEnumSTATPROPSETSTG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc Next*(
+    self: ptr IEnumConnections,
+    cConnections: ULONG,
+    rgcd: LPCONNECTDATA,
+    pcFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, cConnections, rgcd, pcFetched)
+
+proc Skip*(
+    self: ptr IEnumConnections, cConnections: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, cConnections)
+
+proc Reset*(self: ptr IEnumConnections): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumConnections, ppEnum: ptr ptr IEnumConnections
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppEnum)
+
+proc GetConnectionInterface*(
+    self: ptr IConnectionPoint, pIID: ptr IID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConnectionInterface(self, pIID)
+
+proc GetConnectionPointContainer*(
+    self: ptr IConnectionPoint, ppCPC: ptr ptr IConnectionPointContainer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConnectionPointContainer(self, ppCPC)
+
+proc Advise*(
+    self: ptr IConnectionPoint, pUnkSink: ptr IUnknown, pdwCookie: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Advise(self, pUnkSink, pdwCookie)
+
+proc Unadvise*(
+    self: ptr IConnectionPoint, dwCookie: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unadvise(self, dwCookie)
+
+proc EnumConnections*(
+    self: ptr IConnectionPoint, ppEnum: ptr ptr IEnumConnections
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumConnections(self, ppEnum)
+
+proc Next*(
+    self: ptr IEnumConnectionPoints,
+    cConnections: ULONG,
+    ppCP: ptr LPCONNECTIONPOINT,
+    pcFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, cConnections, ppCP, pcFetched)
+
+proc Skip*(
+    self: ptr IEnumConnectionPoints, cConnections: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, cConnections)
+
+proc Reset*(self: ptr IEnumConnectionPoints): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumConnectionPoints, ppEnum: ptr ptr IEnumConnectionPoints
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppEnum)
+
+proc EnumConnectionPoints*(
+    self: ptr IConnectionPointContainer, ppEnum: ptr ptr IEnumConnectionPoints
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumConnectionPoints(self, ppEnum)
+
+proc FindConnectionPoint*(
+    self: ptr IConnectionPointContainer, riid: REFIID, ppCP: ptr ptr IConnectionPoint
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindConnectionPoint(self, riid, ppCP)
+
+proc GetLicInfo*(
+    self: ptr IClassFactory2, pLicInfo: ptr LICINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLicInfo(self, pLicInfo)
+
+proc RequestLicKey*(
+    self: ptr IClassFactory2, dwReserved: DWORD, pBstrKey: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RequestLicKey(self, dwReserved, pBstrKey)
+
+proc CreateInstanceLic*(
+    self: ptr IClassFactory2,
+    pUnkOuter: ptr IUnknown,
+    pUnkReserved: ptr IUnknown,
+    riid: REFIID,
+    bstrKey: BSTR,
+    ppvObj: ptr PVOID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstanceLic(self, pUnkOuter, pUnkReserved, riid, bstrKey, ppvObj)
+
+proc GetClassInfo*(
+    self: ptr IProvideClassInfo, ppTI: ptr ptr ITypeInfo
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetClassInfo(self, ppTI)
+
+proc GetGUID*(
+    self: ptr IProvideClassInfo2, dwGuidKind: DWORD, pGUID: ptr GUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetGUID(self, dwGuidKind, pGUID)
+
+proc GetMultiTypeInfoCount*(
+    self: ptr IProvideMultipleClassInfo, pcti: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMultiTypeInfoCount(self, pcti)
+
+proc GetInfoOfIndex*(
+    self: ptr IProvideMultipleClassInfo,
+    iti: ULONG,
+    dwFlags: DWORD,
+    pptiCoClass: ptr ptr ITypeInfo,
+    pdwTIFlags: ptr DWORD,
+    pcdispidReserved: ptr ULONG,
+    piidPrimary: ptr IID,
+    piidSource: ptr IID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInfoOfIndex(
+      self, iti, dwFlags, pptiCoClass, pdwTIFlags, pcdispidReserved, piidPrimary,
+      piidSource,
+    )
+
+proc GetControlInfo*(
+    self: ptr IOleControl, pCI: ptr CONTROLINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetControlInfo(self, pCI)
+
+proc OnMnemonic*(self: ptr IOleControl, pMsg: ptr MSG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnMnemonic(self, pMsg)
+
+proc OnAmbientPropertyChange*(
+    self: ptr IOleControl, dispID: DISPID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnAmbientPropertyChange(self, dispID)
+
+proc FreezeEvents*(
+    self: ptr IOleControl, bFreeze: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FreezeEvents(self, bFreeze)
+
+proc OnControlInfoChanged*(self: ptr IOleControlSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnControlInfoChanged(self)
+
+proc LockInPlaceActive*(
+    self: ptr IOleControlSite, fLock: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LockInPlaceActive(self, fLock)
+
+proc GetExtendedControl*(
+    self: ptr IOleControlSite, ppDisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetExtendedControl(self, ppDisp)
+
+proc TransformCoords*(
+    self: ptr IOleControlSite,
+    pPtlHimetric: ptr POINTL,
+    pPtfContainer: ptr POINTF,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TransformCoords(self, pPtlHimetric, pPtfContainer, dwFlags)
+
+proc TranslateAccelerator*(
+    self: ptr IOleControlSite, pMsg: ptr MSG, grfModifiers: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateAccelerator(self, pMsg, grfModifiers)
+
+proc OnFocus*(
+    self: ptr IOleControlSite, fGotFocus: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnFocus(self, fGotFocus)
+
+proc ShowPropertyFrame*(self: ptr IOleControlSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowPropertyFrame(self)
+
+proc SetPageSite*(
+    self: ptr IPropertyPage, pPageSite: ptr IPropertyPageSite
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPageSite(self, pPageSite)
+
+proc Activate*(
+    self: ptr IPropertyPage, hWndParent: HWND, pRect: LPCRECT, bModal: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Activate(self, hWndParent, pRect, bModal)
+
+proc Deactivate*(self: ptr IPropertyPage): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Deactivate(self)
+
+proc GetPageInfo*(
+    self: ptr IPropertyPage, pPageInfo: ptr PROPPAGEINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPageInfo(self, pPageInfo)
+
+proc SetObjects*(
+    self: ptr IPropertyPage, cObjects: ULONG, ppUnk: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetObjects(self, cObjects, ppUnk)
+
+proc Show*(self: ptr IPropertyPage, nCmdShow: UINT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Show(self, nCmdShow)
+
+proc Move*(self: ptr IPropertyPage, pRect: LPCRECT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Move(self, pRect)
+
+proc IsPageDirty*(self: ptr IPropertyPage): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsPageDirty(self)
+
+proc Apply*(self: ptr IPropertyPage): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Apply(self)
+
+proc Help*(self: ptr IPropertyPage, pszHelpDir: LPCOLESTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Help(self, pszHelpDir)
+
+proc TranslateAccelerator*(
+    self: ptr IPropertyPage, pMsg: ptr MSG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateAccelerator(self, pMsg)
+
+proc EditProperty*(
+    self: ptr IPropertyPage2, dispID: DISPID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EditProperty(self, dispID)
+
+proc OnStatusChange*(
+    self: ptr IPropertyPageSite, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnStatusChange(self, dwFlags)
+
+proc GetLocaleID*(
+    self: ptr IPropertyPageSite, pLocaleID: ptr LCID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLocaleID(self, pLocaleID)
+
+proc GetPageContainer*(
+    self: ptr IPropertyPageSite, ppUnk: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPageContainer(self, ppUnk)
+
+proc TranslateAccelerator*(
+    self: ptr IPropertyPageSite, pMsg: ptr MSG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateAccelerator(self, pMsg)
+
+proc OnChanged*(
+    self: ptr IPropertyNotifySink, dispID: DISPID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnChanged(self, dispID)
+
+proc OnRequestEdit*(
+    self: ptr IPropertyNotifySink, dispID: DISPID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnRequestEdit(self, dispID)
+
+proc GetPages*(
+    self: ptr ISpecifyPropertyPages, pPages: ptr CAUUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPages(self, pPages)
+
+proc IsDirty*(self: ptr IPersistMemory): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDirty(self)
+
+proc Load*(
+    self: ptr IPersistMemory, pMem: LPVOID, cbSize: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load(self, pMem, cbSize)
+
+proc Save*(
+    self: ptr IPersistMemory, pMem: LPVOID, fClearDirty: WINBOOL, cbSize: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Save(self, pMem, fClearDirty, cbSize)
+
+proc GetSizeMax*(
+    self: ptr IPersistMemory, pCbSize: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSizeMax(self, pCbSize)
+
+proc InitNew*(self: ptr IPersistMemory): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitNew(self)
+
+proc IsDirty*(self: ptr IPersistStreamInit): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDirty(self)
+
+proc Load*(self: ptr IPersistStreamInit, pStm: LPSTREAM): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load(self, pStm)
+
+proc Save*(
+    self: ptr IPersistStreamInit, pStm: LPSTREAM, fClearDirty: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Save(self, pStm, fClearDirty)
+
+proc GetSizeMax*(
+    self: ptr IPersistStreamInit, pCbSize: ptr ULARGE_INTEGER
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSizeMax(self, pCbSize)
+
+proc InitNew*(self: ptr IPersistStreamInit): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitNew(self)
+
+proc InitNew*(self: ptr IPersistPropertyBag): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitNew(self)
+
+proc Load*(
+    self: ptr IPersistPropertyBag, pPropBag: ptr IPropertyBag, pErrorLog: ptr IErrorLog
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load(self, pPropBag, pErrorLog)
+
+proc Save*(
+    self: ptr IPersistPropertyBag,
+    pPropBag: ptr IPropertyBag,
+    fClearDirty: WINBOOL,
+    fSaveAllProperties: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Save(self, pPropBag, fClearDirty, fSaveAllProperties)
+
+proc PreMessageFilter*(
+    self: ptr ISimpleFrameSite,
+    hWnd: HWND,
+    msg: UINT,
+    wp: WPARAM,
+    lp: LPARAM,
+    plResult: ptr LRESULT,
+    pdwCookie: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreMessageFilter(self, hWnd, msg, wp, lp, plResult, pdwCookie)
+
+proc PostMessageFilter*(
+    self: ptr ISimpleFrameSite,
+    hWnd: HWND,
+    msg: UINT,
+    wp: WPARAM,
+    lp: LPARAM,
+    plResult: ptr LRESULT,
+    dwCookie: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostMessageFilter(self, hWnd, msg, wp, lp, plResult, dwCookie)
+
+proc get_Name*(self: ptr IFont, pName: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Name(self, pName)
+
+proc put_Name*(self: ptr IFont, name: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Name(self, name)
+
+proc get_Size*(self: ptr IFont, pSize: ptr CY): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Size(self, pSize)
+
+proc put_Size*(self: ptr IFont, size: CY): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Size(self, size)
+
+proc get_Bold*(self: ptr IFont, pBold: ptr WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Bold(self, pBold)
+
+proc put_Bold*(self: ptr IFont, bold: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Bold(self, bold)
+
+proc get_Italic*(self: ptr IFont, pItalic: ptr WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Italic(self, pItalic)
+
+proc put_Italic*(self: ptr IFont, italic: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Italic(self, italic)
+
+proc get_Underline*(
+    self: ptr IFont, pUnderline: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Underline(self, pUnderline)
+
+proc put_Underline*(self: ptr IFont, underline: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Underline(self, underline)
+
+proc get_Strikethrough*(
+    self: ptr IFont, pStrikethrough: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Strikethrough(self, pStrikethrough)
+
+proc put_Strikethrough*(
+    self: ptr IFont, strikethrough: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Strikethrough(self, strikethrough)
+
+proc get_Weight*(self: ptr IFont, pWeight: ptr SHORT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Weight(self, pWeight)
+
+proc put_Weight*(self: ptr IFont, weight: SHORT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Weight(self, weight)
+
+proc get_Charset*(self: ptr IFont, pCharset: ptr SHORT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Charset(self, pCharset)
+
+proc put_Charset*(self: ptr IFont, charset: SHORT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Charset(self, charset)
+
+proc get_hFont*(self: ptr IFont, phFont: ptr HFONT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hFont(self, phFont)
+
+proc Clone*(self: ptr IFont, ppFont: ptr ptr IFont): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppFont)
+
+proc IsEqual*(self: ptr IFont, pFontOther: ptr IFont): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsEqual(self, pFontOther)
+
+proc SetRatio*(
+    self: ptr IFont, cyLogical: LONG, cyHimetric: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetRatio(self, cyLogical, cyHimetric)
+
+proc QueryTextMetrics*(
+    self: ptr IFont, pTM: ptr TEXTMETRICOLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryTextMetrics(self, pTM)
+
+proc AddRefHfont*(self: ptr IFont, hFont: HFONT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddRefHfont(self, hFont)
+
+proc ReleaseHfont*(self: ptr IFont, hFont: HFONT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseHfont(self, hFont)
+
+proc SetHdc*(self: ptr IFont, hDC: HDC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHdc(self, hDC)
+
+proc get_Handle*(
+    self: ptr IPicture, pHandle: ptr OLE_HANDLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Handle(self, pHandle)
+
+proc get_hPal*(self: ptr IPicture, phPal: ptr OLE_HANDLE): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hPal(self, phPal)
+
+proc get_Type*(self: ptr IPicture, pType: ptr SHORT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Type(self, pType)
+
+proc get_Width*(
+    self: ptr IPicture, pWidth: ptr OLE_XSIZE_HIMETRIC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Width(self, pWidth)
+
+proc get_Height*(
+    self: ptr IPicture, pHeight: ptr OLE_YSIZE_HIMETRIC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Height(self, pHeight)
+
+proc Render*(
+    self: ptr IPicture,
+    hDC: HDC,
+    x: LONG,
+    y: LONG,
+    cx: LONG,
+    cy: LONG,
+    xSrc: OLE_XPOS_HIMETRIC,
+    ySrc: OLE_YPOS_HIMETRIC,
+    cxSrc: OLE_XSIZE_HIMETRIC,
+    cySrc: OLE_YSIZE_HIMETRIC,
+    pRcWBounds: LPCRECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Render(self, hDC, x, y, cx, cy, xSrc, ySrc, cxSrc, cySrc, pRcWBounds)
+
+proc set_hPal*(self: ptr IPicture, hPal: OLE_HANDLE): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.set_hPal(self, hPal)
+
+proc get_CurDC*(self: ptr IPicture, phDC: ptr HDC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurDC(self, phDC)
+
+proc SelectPicture*(
+    self: ptr IPicture, hDCIn: HDC, phDCOut: ptr HDC, phBmpOut: ptr OLE_HANDLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SelectPicture(self, hDCIn, phDCOut, phBmpOut)
+
+proc get_KeepOriginalFormat*(
+    self: ptr IPicture, pKeep: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_KeepOriginalFormat(self, pKeep)
+
+proc put_KeepOriginalFormat*(
+    self: ptr IPicture, keep: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_KeepOriginalFormat(self, keep)
+
+proc PictureChanged*(self: ptr IPicture): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PictureChanged(self)
+
+proc SaveAsFile*(
+    self: ptr IPicture, pStream: LPSTREAM, fSaveMemCopy: WINBOOL, pCbSize: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SaveAsFile(self, pStream, fSaveMemCopy, pCbSize)
+
+proc get_Attributes*(
+    self: ptr IPicture, pDwAttr: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Attributes(self, pDwAttr)
+
+proc get_Handle*(
+    self: ptr IPicture2, pHandle: ptr HHANDLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Handle(self, pHandle)
+
+proc get_hPal*(self: ptr IPicture2, phPal: ptr HHANDLE): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_hPal(self, phPal)
+
+proc get_Type*(self: ptr IPicture2, pType: ptr SHORT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Type(self, pType)
+
+proc get_Width*(
+    self: ptr IPicture2, pWidth: ptr OLE_XSIZE_HIMETRIC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Width(self, pWidth)
+
+proc get_Height*(
+    self: ptr IPicture2, pHeight: ptr OLE_YSIZE_HIMETRIC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Height(self, pHeight)
+
+proc Render*(
+    self: ptr IPicture2,
+    hDC: HDC,
+    x: LONG,
+    y: LONG,
+    cx: LONG,
+    cy: LONG,
+    xSrc: OLE_XPOS_HIMETRIC,
+    ySrc: OLE_YPOS_HIMETRIC,
+    cxSrc: OLE_XSIZE_HIMETRIC,
+    cySrc: OLE_YSIZE_HIMETRIC,
+    pRcWBounds: LPCRECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Render(self, hDC, x, y, cx, cy, xSrc, ySrc, cxSrc, cySrc, pRcWBounds)
+
+proc set_hPal*(self: ptr IPicture2, hPal: HHANDLE): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.set_hPal(self, hPal)
+
+proc get_CurDC*(self: ptr IPicture2, phDC: ptr HDC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurDC(self, phDC)
+
+proc SelectPicture*(
+    self: ptr IPicture2, hDCIn: HDC, phDCOut: ptr HDC, phBmpOut: ptr HHANDLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SelectPicture(self, hDCIn, phDCOut, phBmpOut)
+
+proc get_KeepOriginalFormat*(
+    self: ptr IPicture2, pKeep: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_KeepOriginalFormat(self, pKeep)
+
+proc put_KeepOriginalFormat*(
+    self: ptr IPicture2, keep: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_KeepOriginalFormat(self, keep)
+
+proc PictureChanged*(self: ptr IPicture2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PictureChanged(self)
+
+proc SaveAsFile*(
+    self: ptr IPicture2, pStream: LPSTREAM, fSaveMemCopy: WINBOOL, pCbSize: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SaveAsFile(self, pStream, fSaveMemCopy, pCbSize)
+
+proc get_Attributes*(
+    self: ptr IPicture2, pDwAttr: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Attributes(self, pDwAttr)
+
+proc OnWindowMessage*(
+    self: ptr IOleInPlaceObjectWindowless,
+    msg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    plResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnWindowMessage(self, msg, wParam, lParam, plResult)
+
+proc GetDropTarget*(
+    self: ptr IOleInPlaceObjectWindowless, ppDropTarget: ptr ptr IDropTarget
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDropTarget(self, ppDropTarget)
+
+proc OnInPlaceActivateEx*(
+    self: ptr IOleInPlaceSiteEx, pfNoRedraw: ptr WINBOOL, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnInPlaceActivateEx(self, pfNoRedraw, dwFlags)
+
+proc OnInPlaceDeactivateEx*(
+    self: ptr IOleInPlaceSiteEx, fNoRedraw: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnInPlaceDeactivateEx(self, fNoRedraw)
+
+proc RequestUIActivate*(self: ptr IOleInPlaceSiteEx): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RequestUIActivate(self)
+
+proc CanWindowlessActivate*(
+    self: ptr IOleInPlaceSiteWindowless
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CanWindowlessActivate(self)
+
+proc GetCapture*(self: ptr IOleInPlaceSiteWindowless): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCapture(self)
+
+proc SetCapture*(
+    self: ptr IOleInPlaceSiteWindowless, fCapture: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCapture(self, fCapture)
+
+proc GetFocus*(self: ptr IOleInPlaceSiteWindowless): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFocus(self)
+
+proc SetFocus*(
+    self: ptr IOleInPlaceSiteWindowless, fFocus: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFocus(self, fFocus)
+
+proc GetDC*(
+    self: ptr IOleInPlaceSiteWindowless, pRect: LPCRECT, grfFlags: DWORD, phDC: ptr HDC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDC(self, pRect, grfFlags, phDC)
+
+proc ReleaseDC*(
+    self: ptr IOleInPlaceSiteWindowless, hDC: HDC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseDC(self, hDC)
+
+proc InvalidateRect*(
+    self: ptr IOleInPlaceSiteWindowless, pRect: LPCRECT, fErase: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvalidateRect(self, pRect, fErase)
+
+proc InvalidateRgn*(
+    self: ptr IOleInPlaceSiteWindowless, hRGN: HRGN, fErase: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvalidateRgn(self, hRGN, fErase)
+
+proc ScrollRect*(
+    self: ptr IOleInPlaceSiteWindowless,
+    dx: INT,
+    dy: INT,
+    pRectScroll: LPCRECT,
+    pRectClip: LPCRECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ScrollRect(self, dx, dy, pRectScroll, pRectClip)
+
+proc AdjustRect*(
+    self: ptr IOleInPlaceSiteWindowless, prc: LPRECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AdjustRect(self, prc)
+
+proc OnDefWindowMessage*(
+    self: ptr IOleInPlaceSiteWindowless,
+    msg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    plResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDefWindowMessage(self, msg, wParam, lParam, plResult)
+
+proc GetRect*(
+    self: ptr IViewObjectEx, dwAspect: DWORD, pRect: LPRECTL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRect(self, dwAspect, pRect)
+
+proc GetViewStatus*(
+    self: ptr IViewObjectEx, pdwStatus: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetViewStatus(self, pdwStatus)
+
+proc QueryHitPoint*(
+    self: ptr IViewObjectEx,
+    dwAspect: DWORD,
+    pRectBounds: LPCRECT,
+    ptlLoc: POINT,
+    lCloseHint: LONG,
+    pHitResult: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryHitPoint(
+      self, dwAspect, pRectBounds, ptlLoc, lCloseHint, pHitResult
+    )
+
+proc QueryHitRect*(
+    self: ptr IViewObjectEx,
+    dwAspect: DWORD,
+    pRectBounds: LPCRECT,
+    pRectLoc: LPCRECT,
+    lCloseHint: LONG,
+    pHitResult: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryHitRect(
+      self, dwAspect, pRectBounds, pRectLoc, lCloseHint, pHitResult
+    )
+
+proc GetNaturalExtent*(
+    self: ptr IViewObjectEx,
+    dwAspect: DWORD,
+    lindex: LONG,
+    ptd: ptr DVTARGETDEVICE,
+    hicTargetDev: HDC,
+    pExtentInfo: ptr DVEXTENTINFO,
+    pSizel: LPSIZEL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNaturalExtent(
+      self, dwAspect, lindex, ptd, hicTargetDev, pExtentInfo, pSizel
+    )
+
+proc Do*(
+    self: ptr IOleUndoUnit, pUndoManager: ptr IOleUndoManager
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Do(self, pUndoManager)
+
+proc GetDescription*(
+    self: ptr IOleUndoUnit, pBstr: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDescription(self, pBstr)
+
+proc GetUnitType*(
+    self: ptr IOleUndoUnit, pClsid: ptr CLSID, plID: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUnitType(self, pClsid, plID)
+
+proc OnNextAdd*(self: ptr IOleUndoUnit): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnNextAdd(self)
+
+proc Open*(
+    self: ptr IOleParentUndoUnit, pPUU: ptr IOleParentUndoUnit
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Open(self, pPUU)
+
+proc Close*(
+    self: ptr IOleParentUndoUnit, pPUU: ptr IOleParentUndoUnit, fCommit: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Close(self, pPUU, fCommit)
+
+proc Add*(
+    self: ptr IOleParentUndoUnit, pUU: ptr IOleUndoUnit
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Add(self, pUU)
+
+proc FindUnit*(
+    self: ptr IOleParentUndoUnit, pUU: ptr IOleUndoUnit
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindUnit(self, pUU)
+
+proc GetParentState*(
+    self: ptr IOleParentUndoUnit, pdwState: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetParentState(self, pdwState)
+
+proc Next*(
+    self: ptr IEnumOleUndoUnits,
+    cElt: ULONG,
+    rgElt: ptr ptr IOleUndoUnit,
+    pcEltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, cElt, rgElt, pcEltFetched)
+
+proc Skip*(self: ptr IEnumOleUndoUnits, cElt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, cElt)
+
+proc Reset*(self: ptr IEnumOleUndoUnits): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumOleUndoUnits, ppEnum: ptr ptr IEnumOleUndoUnits
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppEnum)
+
+proc Open*(
+    self: ptr IOleUndoManager, pPUU: ptr IOleParentUndoUnit
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Open(self, pPUU)
+
+proc Close*(
+    self: ptr IOleUndoManager, pPUU: ptr IOleParentUndoUnit, fCommit: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Close(self, pPUU, fCommit)
+
+proc Add*(
+    self: ptr IOleUndoManager, pUU: ptr IOleUndoUnit
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Add(self, pUU)
+
+proc GetOpenParentState*(
+    self: ptr IOleUndoManager, pdwState: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOpenParentState(self, pdwState)
+
+proc DiscardFrom*(
+    self: ptr IOleUndoManager, pUU: ptr IOleUndoUnit
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DiscardFrom(self, pUU)
+
+proc UndoTo*(
+    self: ptr IOleUndoManager, pUU: ptr IOleUndoUnit
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UndoTo(self, pUU)
+
+proc RedoTo*(
+    self: ptr IOleUndoManager, pUU: ptr IOleUndoUnit
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RedoTo(self, pUU)
+
+proc EnumUndoable*(
+    self: ptr IOleUndoManager, ppEnum: ptr ptr IEnumOleUndoUnits
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumUndoable(self, ppEnum)
+
+proc EnumRedoable*(
+    self: ptr IOleUndoManager, ppEnum: ptr ptr IEnumOleUndoUnits
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumRedoable(self, ppEnum)
+
+proc GetLastUndoDescription*(
+    self: ptr IOleUndoManager, pBstr: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLastUndoDescription(self, pBstr)
+
+proc GetLastRedoDescription*(
+    self: ptr IOleUndoManager, pBstr: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLastRedoDescription(self, pBstr)
+
+proc Enable*(self: ptr IOleUndoManager, fEnable: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Enable(self, fEnable)
+
+proc GetActivationPolicy*(
+    self: ptr IPointerInactive, pdwPolicy: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetActivationPolicy(self, pdwPolicy)
+
+proc OnInactiveMouseMove*(
+    self: ptr IPointerInactive,
+    pRectBounds: LPCRECT,
+    x: LONG,
+    y: LONG,
+    grfKeyState: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnInactiveMouseMove(self, pRectBounds, x, y, grfKeyState)
+
+proc OnInactiveSetCursor*(
+    self: ptr IPointerInactive,
+    pRectBounds: LPCRECT,
+    x: LONG,
+    y: LONG,
+    dwMouseMsg: DWORD,
+    fSetAlways: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnInactiveSetCursor(self, pRectBounds, x, y, dwMouseMsg, fSetAlways)
+
+proc SetSite*(
+    self: ptr IObjectWithSite, pUnkSite: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSite(self, pUnkSite)
+
+proc GetSite*(
+    self: ptr IObjectWithSite, riid: REFIID, ppvSite: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSite(self, riid, ppvSite)
+
+proc GetDisplayString*(
+    self: ptr IPerPropertyBrowsing, dispID: DISPID, pBstr: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDisplayString(self, dispID, pBstr)
+
+proc MapPropertyToPage*(
+    self: ptr IPerPropertyBrowsing, dispID: DISPID, pClsid: ptr CLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MapPropertyToPage(self, dispID, pClsid)
+
+proc GetPredefinedStrings*(
+    self: ptr IPerPropertyBrowsing,
+    dispID: DISPID,
+    pCaStringsOut: ptr CALPOLESTR,
+    pCaCookiesOut: ptr CADWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPredefinedStrings(self, dispID, pCaStringsOut, pCaCookiesOut)
+
+proc GetPredefinedValue*(
+    self: ptr IPerPropertyBrowsing,
+    dispID: DISPID,
+    dwCookie: DWORD,
+    pVarOut: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPredefinedValue(self, dispID, dwCookie, pVarOut)
+
+proc Read*(
+    self: ptr IPropertyBag2,
+    cProperties: ULONG,
+    pPropBag: ptr PROPBAG2,
+    pErrLog: ptr IErrorLog,
+    pvarValue: ptr VARIANT,
+    phrError: ptr HRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Read(self, cProperties, pPropBag, pErrLog, pvarValue, phrError)
+
+proc Write*(
+    self: ptr IPropertyBag2,
+    cProperties: ULONG,
+    pPropBag: ptr PROPBAG2,
+    pvarValue: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Write(self, cProperties, pPropBag, pvarValue)
+
+proc CountProperties*(
+    self: ptr IPropertyBag2, pcProperties: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CountProperties(self, pcProperties)
+
+proc GetPropertyInfo*(
+    self: ptr IPropertyBag2,
+    iProperty: ULONG,
+    cProperties: ULONG,
+    pPropBag: ptr PROPBAG2,
+    pcProperties: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyInfo(self, iProperty, cProperties, pPropBag, pcProperties)
+
+proc LoadObject*(
+    self: ptr IPropertyBag2,
+    pstrName: LPCOLESTR,
+    dwHint: DWORD,
+    pUnkObject: ptr IUnknown,
+    pErrLog: ptr IErrorLog,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LoadObject(self, pstrName, dwHint, pUnkObject, pErrLog)
+
+proc InitNew*(self: ptr IPersistPropertyBag2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitNew(self)
+
+proc Load*(
+    self: ptr IPersistPropertyBag2, pPropBag: ptr IPropertyBag2, pErrLog: ptr IErrorLog
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Load(self, pPropBag, pErrLog)
+
+proc Save*(
+    self: ptr IPersistPropertyBag2,
+    pPropBag: ptr IPropertyBag2,
+    fClearDirty: WINBOOL,
+    fSaveAllProperties: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Save(self, pPropBag, fClearDirty, fSaveAllProperties)
+
+proc IsDirty*(self: ptr IPersistPropertyBag2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDirty(self)
+
+proc OnViewStatusChange*(
+    self: ptr IAdviseSinkEx, dwViewStatus: DWORD
+): void {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnViewStatusChange(self, dwViewStatus)
+
+proc QuickActivate*(
+    self: ptr IQuickActivate, pQaContainer: ptr QACONTAINER, pQaControl: ptr QACONTROL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QuickActivate(self, pQaContainer, pQaControl)
+
+proc SetContentExtent*(
+    self: ptr IQuickActivate, pSizel: LPSIZEL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetContentExtent(self, pSizel)
+
+proc GetContentExtent*(
+    self: ptr IQuickActivate, pSizel: LPSIZEL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetContentExtent(self, pSizel)
+
+proc Next*(
+    self: ptr IEnumGUID, celt: ULONG, rgelt: ptr GUID, pceltFetched: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumGUID, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumGUID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumGUID, ppenum: ptr ptr IEnumGUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc Next*(
+    self: ptr IEnumCATEGORYINFO,
+    celt: ULONG,
+    rgelt: ptr CATEGORYINFO,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumCATEGORYINFO, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumCATEGORYINFO): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumCATEGORYINFO, ppenum: ptr ptr IEnumCATEGORYINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc RegisterCategories*(
+    self: ptr ICatRegister, cCategories: ULONG, rgCategoryInfo: ptr CATEGORYINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterCategories(self, cCategories, rgCategoryInfo)
+
+proc UnRegisterCategories*(
+    self: ptr ICatRegister, cCategories: ULONG, rgcatid: ptr CATID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnRegisterCategories(self, cCategories, rgcatid)
+
+proc RegisterClassImplCategories*(
+    self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterClassImplCategories(self, rclsid, cCategories, rgcatid)
+
+proc UnRegisterClassImplCategories*(
+    self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnRegisterClassImplCategories(self, rclsid, cCategories, rgcatid)
+
+proc RegisterClassReqCategories*(
+    self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterClassReqCategories(self, rclsid, cCategories, rgcatid)
+
+proc UnRegisterClassReqCategories*(
+    self: ptr ICatRegister, rclsid: REFCLSID, cCategories: ULONG, rgcatid: ptr CATID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnRegisterClassReqCategories(self, rclsid, cCategories, rgcatid)
+
+proc EnumCategories*(
+    self: ptr ICatInformation, lcid: LCID, ppenumCategoryInfo: ptr ptr IEnumCATEGORYINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumCategories(self, lcid, ppenumCategoryInfo)
+
+proc GetCategoryDesc*(
+    self: ptr ICatInformation, rcatid: REFCATID, lcid: LCID, pszDesc: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCategoryDesc(self, rcatid, lcid, pszDesc)
+
+proc EnumClassesOfCategories*(
+    self: ptr ICatInformation,
+    cImplemented: ULONG,
+    rgcatidImpl: ptr CATID,
+    cRequired: ULONG,
+    rgcatidReq: ptr CATID,
+    ppenumClsid: ptr ptr IEnumGUID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumClassesOfCategories(
+      self, cImplemented, rgcatidImpl, cRequired, rgcatidReq, ppenumClsid
+    )
+
+proc IsClassOfCategories*(
+    self: ptr ICatInformation,
+    rclsid: REFCLSID,
+    cImplemented: ULONG,
+    rgcatidImpl: ptr CATID,
+    cRequired: ULONG,
+    rgcatidReq: ptr CATID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsClassOfCategories(
+      self, rclsid, cImplemented, rgcatidImpl, cRequired, rgcatidReq
+    )
+
+proc EnumImplCategoriesOfClass*(
+    self: ptr ICatInformation, rclsid: REFCLSID, ppenumCatid: ptr ptr IEnumGUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumImplCategoriesOfClass(self, rclsid, ppenumCatid)
+
+proc EnumReqCategoriesOfClass*(
+    self: ptr ICatInformation, rclsid: REFCLSID, ppenumCatid: ptr ptr IEnumGUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumReqCategoriesOfClass(self, rclsid, ppenumCatid)
+
+proc CreateView*(
+    self: ptr IOleDocument,
+    pIPSite: ptr IOleInPlaceSite,
+    pstm: ptr IStream,
+    dwReserved: DWORD,
+    ppView: ptr ptr IOleDocumentView,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateView(self, pIPSite, pstm, dwReserved, ppView)
+
+proc GetDocMiscStatus*(
+    self: ptr IOleDocument, pdwStatus: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDocMiscStatus(self, pdwStatus)
+
+proc EnumViews*(
+    self: ptr IOleDocument,
+    ppEnum: ptr ptr IEnumOleDocumentViews,
+    ppView: ptr ptr IOleDocumentView,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumViews(self, ppEnum, ppView)
+
+proc ActivateMe*(
+    self: ptr IOleDocumentSite, pViewToActivate: ptr IOleDocumentView
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ActivateMe(self, pViewToActivate)
+
+proc SetInPlaceSite*(
+    self: ptr IOleDocumentView, pIPSite: ptr IOleInPlaceSite
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetInPlaceSite(self, pIPSite)
+
+proc GetInPlaceSite*(
+    self: ptr IOleDocumentView, ppIPSite: ptr ptr IOleInPlaceSite
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInPlaceSite(self, ppIPSite)
+
+proc GetDocument*(
+    self: ptr IOleDocumentView, ppunk: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDocument(self, ppunk)
+
+proc SetRect*(self: ptr IOleDocumentView, prcView: LPRECT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetRect(self, prcView)
+
+proc GetRect*(self: ptr IOleDocumentView, prcView: LPRECT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRect(self, prcView)
+
+proc SetRectComplex*(
+    self: ptr IOleDocumentView,
+    prcView: LPRECT,
+    prcHScroll: LPRECT,
+    prcVScroll: LPRECT,
+    prcSizeBox: LPRECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetRectComplex(self, prcView, prcHScroll, prcVScroll, prcSizeBox)
+
+proc Show*(self: ptr IOleDocumentView, fShow: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Show(self, fShow)
+
+proc UIActivate*(
+    self: ptr IOleDocumentView, fUIActivate: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UIActivate(self, fUIActivate)
+
+proc Open*(self: ptr IOleDocumentView): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Open(self)
+
+proc CloseView*(
+    self: ptr IOleDocumentView, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CloseView(self, dwReserved)
+
+proc SaveViewState*(
+    self: ptr IOleDocumentView, pstm: LPSTREAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SaveViewState(self, pstm)
+
+proc ApplyViewState*(
+    self: ptr IOleDocumentView, pstm: LPSTREAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ApplyViewState(self, pstm)
+
+proc Clone*(
+    self: ptr IOleDocumentView,
+    pIPSiteNew: ptr IOleInPlaceSite,
+    ppViewNew: ptr ptr IOleDocumentView,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, pIPSiteNew, ppViewNew)
+
+proc Next*(
+    self: ptr IEnumOleDocumentViews,
+    cViews: ULONG,
+    rgpView: ptr ptr IOleDocumentView,
+    pcFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, cViews, rgpView, pcFetched)
+
+proc Skip*(self: ptr IEnumOleDocumentViews, cViews: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, cViews)
+
+proc Reset*(self: ptr IEnumOleDocumentViews): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumOleDocumentViews, ppEnum: ptr ptr IEnumOleDocumentViews
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppEnum)
+
+proc FContinue*(self: ptr IContinueCallback): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FContinue(self)
+
+proc FContinuePrinting*(
+    self: ptr IContinueCallback,
+    nCntPrinted: LONG,
+    nCurPage: LONG,
+    pwszPrintStatus: ptr uint16,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FContinuePrinting(self, nCntPrinted, nCurPage, pwszPrintStatus)
+
+proc SetInitialPageNum*(
+    self: ptr IPrint, nFirstPage: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetInitialPageNum(self, nFirstPage)
+
+proc GetPageInfo*(
+    self: ptr IPrint, pnFirstPage: ptr LONG, pcPages: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPageInfo(self, pnFirstPage, pcPages)
+
+proc Print*(
+    self: ptr IPrint,
+    grfFlags: DWORD,
+    pptd: ptr ptr DVTARGETDEVICE,
+    ppPageSet: ptr ptr PAGESET,
+    pstgmOptions: ptr STGMEDIUM,
+    pcallback: ptr IContinueCallback,
+    nFirstPage: LONG,
+    pcPagesPrinted: ptr LONG,
+    pnLastPage: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Print(
+      self, grfFlags, pptd, ppPageSet, pstgmOptions, pcallback, nFirstPage,
+      pcPagesPrinted, pnLastPage,
+    )
+
+proc QueryStatus*(
+    self: ptr IOleCommandTarget,
+    pguidCmdGroup: ptr GUID,
+    cCmds: ULONG,
+    prgCmds: ptr OLECMD,
+    pCmdText: ptr OLECMDTEXT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryStatus(self, pguidCmdGroup, cCmds, prgCmds, pCmdText)
+
+proc Exec*(
+    self: ptr IOleCommandTarget,
+    pguidCmdGroup: ptr GUID,
+    nCmdID: DWORD,
+    nCmdexecopt: DWORD,
+    pvaIn: ptr VARIANT,
+    pvaOut: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Exec(self, pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut)
+
+proc OnZoomPercentChanged*(
+    self: ptr IZoomEvents, ulZoomPercent: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnZoomPercentChanged(self, ulZoomPercent)
+
+proc AllowFocusChange*(
+    self: ptr IProtectFocus, pfAllow: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AllowFocusChange(self, pfAllow)
+
+proc CreateMenu*(
+    self: ptr IProtectedModeMenuServices, phMenu: ptr HMENU
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateMenu(self, phMenu)
+
+proc LoadMenu*(
+    self: ptr IProtectedModeMenuServices,
+    pszModuleName: LPCWSTR,
+    pszMenuName: LPCWSTR,
+    phMenu: ptr HMENU,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LoadMenu(self, pszModuleName, pszMenuName, phMenu)
+
+proc LoadMenuID*(
+    self: ptr IProtectedModeMenuServices,
+    pszModuleName: LPCWSTR,
+    wResourceID: WORD,
+    phMenu: ptr HMENU,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LoadMenuID(self, pszModuleName, wResourceID, phMenu)
+
+proc GoBack*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GoBack(self)
+
+proc GoForward*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GoForward(self)
+
+proc GoHome*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GoHome(self)
+
+proc GoSearch*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GoSearch(self)
+
+proc Navigate*(
+    self: ptr IWebBrowser,
+    URL: BSTR,
+    Flags: ptr VARIANT,
+    TargetFrameName: ptr VARIANT,
+    PostData: ptr VARIANT,
+    Headers: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Navigate(self, URL, Flags, TargetFrameName, PostData, Headers)
+
+proc Refresh*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Refresh(self)
+
+proc Refresh2*(self: ptr IWebBrowser, Level: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Refresh2(self, Level)
+
+proc Stop*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Stop(self)
+
+proc get_Application*(
+    self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Application(self, ppDisp)
+
+proc get_Parent*(
+    self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Parent(self, ppDisp)
+
+proc get_Container*(
+    self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Container(self, ppDisp)
+
+proc get_Document*(
+    self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Document(self, ppDisp)
+
+proc get_TopLevelContainer*(
+    self: ptr IWebBrowser, pBool: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TopLevelContainer(self, pBool)
+
+proc get_Type*(self: ptr IWebBrowser, Type: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Type(self, Type)
+
+proc get_Left*(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Left(self, pl)
+
+proc put_Left*(self: ptr IWebBrowser, Left: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Left(self, Left)
+
+proc get_Top*(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Top(self, pl)
+
+proc put_Top*(self: ptr IWebBrowser, Top: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Top(self, Top)
+
+proc get_Width*(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Width(self, pl)
+
+proc put_Width*(self: ptr IWebBrowser, Width: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Width(self, Width)
+
+proc get_Height*(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Height(self, pl)
+
+proc put_Height*(self: ptr IWebBrowser, Height: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Height(self, Height)
+
+proc get_LocationName*(
+    self: ptr IWebBrowser, LocationName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_LocationName(self, LocationName)
+
+proc get_LocationURL*(
+    self: ptr IWebBrowser, LocationURL: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_LocationURL(self, LocationURL)
+
+proc get_Busy*(
+    self: ptr IWebBrowser, pBool: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Busy(self, pBool)
+
+proc Quit*(self: ptr IWebBrowserApp): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Quit(self)
+
+proc ClientToWindow*(
+    self: ptr IWebBrowserApp, pcx: ptr int32, pcy: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ClientToWindow(self, pcx, pcy)
+
+proc PutProperty*(
+    self: ptr IWebBrowserApp, Property: BSTR, vtValue: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PutProperty(self, Property, vtValue)
+
+proc GetProperty*(
+    self: ptr IWebBrowserApp, Property: BSTR, pvtValue: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty(self, Property, pvtValue)
+
+proc get_Name*(self: ptr IWebBrowserApp, Name: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Name(self, Name)
+
+proc get_HWND*(
+    self: ptr IWebBrowserApp, pHWND: ptr SHANDLE_PTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HWND(self, pHWND)
+
+proc get_FullName*(
+    self: ptr IWebBrowserApp, FullName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_FullName(self, FullName)
+
+proc get_Path*(self: ptr IWebBrowserApp, Path: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Path(self, Path)
+
+proc get_Visible*(
+    self: ptr IWebBrowserApp, pBool: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Visible(self, pBool)
+
+proc put_Visible*(
+    self: ptr IWebBrowserApp, Value: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Visible(self, Value)
+
+proc get_StatusBar*(
+    self: ptr IWebBrowserApp, pBool: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_StatusBar(self, pBool)
+
+proc put_StatusBar*(
+    self: ptr IWebBrowserApp, Value: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_StatusBar(self, Value)
+
+proc get_StatusText*(
+    self: ptr IWebBrowserApp, StatusText: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_StatusText(self, StatusText)
+
+proc put_StatusText*(
+    self: ptr IWebBrowserApp, StatusText: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_StatusText(self, StatusText)
+
+proc get_ToolBar*(
+    self: ptr IWebBrowserApp, Value: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ToolBar(self, Value)
+
+proc put_ToolBar*(self: ptr IWebBrowserApp, Value: int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ToolBar(self, Value)
+
+proc get_MenuBar*(
+    self: ptr IWebBrowserApp, Value: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_MenuBar(self, Value)
+
+proc put_MenuBar*(
+    self: ptr IWebBrowserApp, Value: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_MenuBar(self, Value)
+
+proc get_FullScreen*(
+    self: ptr IWebBrowserApp, pbFullScreen: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_FullScreen(self, pbFullScreen)
+
+proc put_FullScreen*(
+    self: ptr IWebBrowserApp, bFullScreen: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_FullScreen(self, bFullScreen)
+
+proc Navigate2*(
+    self: ptr IWebBrowser2,
+    URL: ptr VARIANT,
+    Flags: ptr VARIANT,
+    TargetFrameName: ptr VARIANT,
+    PostData: ptr VARIANT,
+    Headers: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Navigate2(self, URL, Flags, TargetFrameName, PostData, Headers)
+
+proc QueryStatusWB*(
+    self: ptr IWebBrowser2, cmdID: OLECMDID, pcmdf: ptr OLECMDF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryStatusWB(self, cmdID, pcmdf)
+
+proc ExecWB*(
+    self: ptr IWebBrowser2,
+    cmdID: OLECMDID,
+    cmdexecopt: OLECMDEXECOPT,
+    pvaIn: ptr VARIANT,
+    pvaOut: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExecWB(self, cmdID, cmdexecopt, pvaIn, pvaOut)
+
+proc ShowBrowserBar*(
+    self: ptr IWebBrowser2,
+    pvaClsid: ptr VARIANT,
+    pvarShow: ptr VARIANT,
+    pvarSize: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowBrowserBar(self, pvaClsid, pvarShow, pvarSize)
+
+proc get_ReadyState*(
+    self: ptr IWebBrowser2, plReadyState: ptr READYSTATE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ReadyState(self, plReadyState)
+
+proc get_Offline*(
+    self: ptr IWebBrowser2, pbOffline: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Offline(self, pbOffline)
+
+proc put_Offline*(
+    self: ptr IWebBrowser2, bOffline: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Offline(self, bOffline)
+
+proc get_Silent*(
+    self: ptr IWebBrowser2, pbSilent: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Silent(self, pbSilent)
+
+proc put_Silent*(
+    self: ptr IWebBrowser2, bSilent: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Silent(self, bSilent)
+
+proc get_RegisterAsBrowser*(
+    self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_RegisterAsBrowser(self, pbRegister)
+
+proc put_RegisterAsBrowser*(
+    self: ptr IWebBrowser2, bRegister: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_RegisterAsBrowser(self, bRegister)
+
+proc get_RegisterAsDropTarget*(
+    self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_RegisterAsDropTarget(self, pbRegister)
+
+proc put_RegisterAsDropTarget*(
+    self: ptr IWebBrowser2, bRegister: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_RegisterAsDropTarget(self, bRegister)
+
+proc get_TheaterMode*(
+    self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TheaterMode(self, pbRegister)
+
+proc put_TheaterMode*(
+    self: ptr IWebBrowser2, bRegister: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_TheaterMode(self, bRegister)
+
+proc get_AddressBar*(
+    self: ptr IWebBrowser2, Value: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_AddressBar(self, Value)
+
+proc put_AddressBar*(
+    self: ptr IWebBrowser2, Value: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_AddressBar(self, Value)
+
+proc get_Resizable*(
+    self: ptr IWebBrowser2, Value: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Resizable(self, Value)
+
+proc put_Resizable*(
+    self: ptr IWebBrowser2, Value: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Resizable(self, Value)
+
+proc get_Count*(self: ptr IShellWindows, Count: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Count(self, Count)
+
+proc Item*(
+    self: ptr IShellWindows, index: VARIANT, Folder: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Item(self, index, Folder)
+
+proc NewEnum*(
+    self: ptr IShellWindows, ppunk: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NewEnum(self, ppunk)
+
+proc Register*(
+    self: ptr IShellWindows,
+    pid: ptr IDispatch,
+    hWnd: LONG,
+    swClass: int32,
+    plCookie: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Register(self, pid, hWnd, swClass, plCookie)
+
+proc RegisterPending*(
+    self: ptr IShellWindows,
+    lThreadId: LONG,
+    pvarloc: ptr VARIANT,
+    pvarlocRoot: ptr VARIANT,
+    swClass: int32,
+    plCookie: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterPending(
+      self, lThreadId, pvarloc, pvarlocRoot, swClass, plCookie
+    )
+
+proc Revoke*(self: ptr IShellWindows, lCookie: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Revoke(self, lCookie)
+
+proc OnNavigate*(
+    self: ptr IShellWindows, lCookie: LONG, pvarLoc: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnNavigate(self, lCookie, pvarLoc)
+
+proc OnActivated*(
+    self: ptr IShellWindows, lCookie: LONG, fActive: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnActivated(self, lCookie, fActive)
+
+proc FindWindowSW*(
+    self: ptr IShellWindows,
+    pvarLoc: ptr VARIANT,
+    pvarLocRoot: ptr VARIANT,
+    swClass: int32,
+    phwnd: ptr LONG,
+    swfwOptions: int32,
+    ppdispOut: ptr ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindWindowSW(
+      self, pvarLoc, pvarLocRoot, swClass, phwnd, swfwOptions, ppdispOut
+    )
+
+proc OnCreated*(
+    self: ptr IShellWindows, lCookie: LONG, punk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnCreated(self, lCookie, punk)
+
+proc ProcessAttachDetach*(
+    self: ptr IShellWindows, fAttach: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ProcessAttachDetach(self, fAttach)
+
+proc ResetFirstBootMode*(self: ptr IShellUIHelper): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResetFirstBootMode(self)
+
+proc ResetSafeMode*(self: ptr IShellUIHelper): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResetSafeMode(self)
+
+proc RefreshOfflineDesktop*(self: ptr IShellUIHelper): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RefreshOfflineDesktop(self)
+
+proc AddFavorite*(
+    self: ptr IShellUIHelper, URL: BSTR, Title: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddFavorite(self, URL, Title)
+
+proc AddChannel*(self: ptr IShellUIHelper, URL: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddChannel(self, URL)
+
+proc AddDesktopComponent*(
+    self: ptr IShellUIHelper,
+    URL: BSTR,
+    Type: BSTR,
+    Left: ptr VARIANT,
+    Top: ptr VARIANT,
+    Width: ptr VARIANT,
+    Height: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddDesktopComponent(self, URL, Type, Left, Top, Width, Height)
+
+proc IsSubscribed*(
+    self: ptr IShellUIHelper, URL: BSTR, pBool: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsSubscribed(self, URL, pBool)
+
+proc NavigateAndFind*(
+    self: ptr IShellUIHelper, URL: BSTR, strQuery: BSTR, varTargetFrame: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NavigateAndFind(self, URL, strQuery, varTargetFrame)
+
+proc ImportExportFavorites*(
+    self: ptr IShellUIHelper, fImport: VARIANT_BOOL, strImpExpPath: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ImportExportFavorites(self, fImport, strImpExpPath)
+
+proc AutoCompleteSaveForm*(
+    self: ptr IShellUIHelper, Form: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AutoCompleteSaveForm(self, Form)
+
+proc AutoScan*(
+    self: ptr IShellUIHelper,
+    strSearch: BSTR,
+    strFailureUrl: BSTR,
+    pvarTargetFrame: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AutoScan(self, strSearch, strFailureUrl, pvarTargetFrame)
+
+proc AutoCompleteAttach*(
+    self: ptr IShellUIHelper, Reserved: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AutoCompleteAttach(self, Reserved)
+
+proc ShowBrowserUI*(
+    self: ptr IShellUIHelper, bstrName: BSTR, pvarIn: ptr VARIANT, pvarOut: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowBrowserUI(self, bstrName, pvarIn, pvarOut)
+
+proc AddSearchProvider*(
+    self: ptr IShellUIHelper2, URL: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddSearchProvider(self, URL)
+
+proc RunOnceShown*(self: ptr IShellUIHelper2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RunOnceShown(self)
+
+proc SkipRunOnce*(self: ptr IShellUIHelper2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SkipRunOnce(self)
+
+proc CustomizeSettings*(
+    self: ptr IShellUIHelper2,
+    fSQM: VARIANT_BOOL,
+    fPhishing: VARIANT_BOOL,
+    bstrLocale: BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CustomizeSettings(self, fSQM, fPhishing, bstrLocale)
+
+proc SqmEnabled*(
+    self: ptr IShellUIHelper2, pfEnabled: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SqmEnabled(self, pfEnabled)
+
+proc PhishingEnabled*(
+    self: ptr IShellUIHelper2, pfEnabled: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PhishingEnabled(self, pfEnabled)
+
+proc BrandImageUri*(
+    self: ptr IShellUIHelper2, pbstrUri: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BrandImageUri(self, pbstrUri)
+
+proc SkipTabsWelcome*(self: ptr IShellUIHelper2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SkipTabsWelcome(self)
+
+proc DiagnoseConnection*(self: ptr IShellUIHelper2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DiagnoseConnection(self)
+
+proc CustomizeClearType*(
+    self: ptr IShellUIHelper2, fSet: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CustomizeClearType(self, fSet)
+
+proc IsSearchProviderInstalled*(
+    self: ptr IShellUIHelper2, URL: BSTR, pdwResult: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsSearchProviderInstalled(self, URL, pdwResult)
+
+proc IsSearchMigrated*(
+    self: ptr IShellUIHelper2, pfMigrated: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsSearchMigrated(self, pfMigrated)
+
+proc DefaultSearchProvider*(
+    self: ptr IShellUIHelper2, pbstrName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DefaultSearchProvider(self, pbstrName)
+
+proc RunOnceRequiredSettingsComplete*(
+    self: ptr IShellUIHelper2, fComplete: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RunOnceRequiredSettingsComplete(self, fComplete)
+
+proc RunOnceHasShown*(
+    self: ptr IShellUIHelper2, pfShown: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RunOnceHasShown(self, pfShown)
+
+proc SearchGuideUrl*(
+    self: ptr IShellUIHelper2, pbstrUrl: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SearchGuideUrl(self, pbstrUrl)
+
+proc MoveSelectionUp*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveSelectionUp(self)
+
+proc MoveSelectionDown*(
+    self: ptr IShellFavoritesNameSpace
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveSelectionDown(self)
+
+proc ResetSort*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResetSort(self)
+
+proc NewFolder*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NewFolder(self)
+
+proc mSynchronize*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Synchronize(self)
+
+proc Import*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Import(self)
+
+proc Export*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Export(self)
+
+proc InvokeContextMenuCommand*(
+    self: ptr IShellFavoritesNameSpace, strCommand: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvokeContextMenuCommand(self, strCommand)
+
+proc MoveSelectionTo*(self: ptr IShellFavoritesNameSpace): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveSelectionTo(self)
+
+proc get_SubscriptionsEnabled*(
+    self: ptr IShellFavoritesNameSpace, pBool: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_SubscriptionsEnabled(self, pBool)
+
+proc CreateSubscriptionForSelection*(
+    self: ptr IShellFavoritesNameSpace, pBool: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateSubscriptionForSelection(self, pBool)
+
+proc DeleteSubscriptionForSelection*(
+    self: ptr IShellFavoritesNameSpace, pBool: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteSubscriptionForSelection(self, pBool)
+
+proc SetRoot*(
+    self: ptr IShellFavoritesNameSpace, bstrFullPath: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetRoot(self, bstrFullPath)
+
+proc get_EnumOptions*(
+    self: ptr IShellNameSpace, pgrfEnumFlags: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_EnumOptions(self, pgrfEnumFlags)
+
+proc put_EnumOptions*(
+    self: ptr IShellNameSpace, pgrfEnumFlags: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_EnumOptions(self, pgrfEnumFlags)
+
+proc get_SelectedItem*(
+    self: ptr IShellNameSpace, pItem: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_SelectedItem(self, pItem)
+
+proc put_SelectedItem*(
+    self: ptr IShellNameSpace, pItem: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_SelectedItem(self, pItem)
+
+proc get_Root*(
+    self: ptr IShellNameSpace, pvar: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Root(self, pvar)
+
+proc put_Root*(self: ptr IShellNameSpace, pvar: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Root(self, pvar)
+
+proc get_Depth*(
+    self: ptr IShellNameSpace, piDepth: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Depth(self, piDepth)
+
+proc put_Depth*(self: ptr IShellNameSpace, piDepth: int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Depth(self, piDepth)
+
+proc get_Mode*(
+    self: ptr IShellNameSpace, puMode: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Mode(self, puMode)
+
+proc put_Mode*(self: ptr IShellNameSpace, puMode: int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Mode(self, puMode)
+
+proc get_Flags*(
+    self: ptr IShellNameSpace, pdwFlags: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Flags(self, pdwFlags)
+
+proc put_Flags*(
+    self: ptr IShellNameSpace, pdwFlags: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Flags(self, pdwFlags)
+
+proc put_TVFlags*(
+    self: ptr IShellNameSpace, dwFlags: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_TVFlags(self, dwFlags)
+
+proc get_TVFlags*(
+    self: ptr IShellNameSpace, dwFlags: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TVFlags(self, dwFlags)
+
+proc get_Columns*(
+    self: ptr IShellNameSpace, bstrColumns: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Columns(self, bstrColumns)
+
+proc put_Columns*(
+    self: ptr IShellNameSpace, bstrColumns: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Columns(self, bstrColumns)
+
+proc get_CountViewTypes*(
+    self: ptr IShellNameSpace, piTypes: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CountViewTypes(self, piTypes)
+
+proc SetViewType*(self: ptr IShellNameSpace, iType: int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetViewType(self, iType)
+
+proc SelectedItems*(
+    self: ptr IShellNameSpace, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SelectedItems(self, ppid)
+
+proc Expand*(
+    self: ptr IShellNameSpace, `var`: VARIANT, iDepth: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Expand(self, `var`, iDepth)
+
+proc UnselectAll*(self: ptr IShellNameSpace): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnselectAll(self)
+
+proc advanceError*(self: ptr IScriptErrorList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.advanceError(self)
+
+proc retreatError*(self: ptr IScriptErrorList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.retreatError(self)
+
+proc canAdvanceError*(
+    self: ptr IScriptErrorList, pfCanAdvance: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.canAdvanceError(self, pfCanAdvance)
+
+proc canRetreatError*(
+    self: ptr IScriptErrorList, pfCanRetreat: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.canRetreatError(self, pfCanRetreat)
+
+proc getErrorLine*(
+    self: ptr IScriptErrorList, plLine: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getErrorLine(self, plLine)
+
+proc getErrorChar*(
+    self: ptr IScriptErrorList, plChar: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getErrorChar(self, plChar)
+
+proc getErrorCode*(
+    self: ptr IScriptErrorList, plCode: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getErrorCode(self, plCode)
+
+proc getErrorMsg*(
+    self: ptr IScriptErrorList, pstr: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getErrorMsg(self, pstr)
+
+proc getErrorUrl*(
+    self: ptr IScriptErrorList, pstr: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getErrorUrl(self, pstr)
+
+proc getAlwaysShowLockState*(
+    self: ptr IScriptErrorList, pfAlwaysShowLocked: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getAlwaysShowLockState(self, pfAlwaysShowLocked)
+
+proc getDetailsPaneOpen*(
+    self: ptr IScriptErrorList, pfDetailsPaneOpen: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getDetailsPaneOpen(self, pfDetailsPaneOpen)
+
+proc setDetailsPaneOpen*(
+    self: ptr IScriptErrorList, fDetailsPaneOpen: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setDetailsPaneOpen(self, fDetailsPaneOpen)
+
+proc getPerErrorDisplay*(
+    self: ptr IScriptErrorList, pfPerErrorDisplay: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.getPerErrorDisplay(self, pfPerErrorDisplay)
+
+proc setPerErrorDisplay*(
+    self: ptr IScriptErrorList, fPerErrorDisplay: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.setPerErrorDisplay(self, fPerErrorDisplay)
+
+proc get_Title*(self: ptr ISearch, pbstrTitle: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Title(self, pbstrTitle)
+
+proc get_Id*(self: ptr ISearch, pbstrId: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Id(self, pbstrId)
+
+proc get_URL*(self: ptr ISearch, pbstrUrl: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_URL(self, pbstrUrl)
+
+proc get_Count*(self: ptr ISearches, plCount: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Count(self, plCount)
+
+proc get_Default*(
+    self: ptr ISearches, pbstrDefault: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Default(self, pbstrDefault)
+
+proc Item*(
+    self: ptr ISearches, index: VARIANT, ppid: ptr ptr ISearch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Item(self, index, ppid)
+
+proc NewEnum*(
+    self: ptr ISearches, ppunk: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NewEnum(self, ppunk)
+
+proc AddNextMenuItem*(
+    self: ptr ISearchAssistantOC, bstrText: BSTR, idItem: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddNextMenuItem(self, bstrText, idItem)
+
+proc SetDefaultSearchUrl*(
+    self: ptr ISearchAssistantOC, bstrUrl: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDefaultSearchUrl(self, bstrUrl)
+
+proc NavigateToDefaultSearch*(
+    self: ptr ISearchAssistantOC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NavigateToDefaultSearch(self)
+
+proc IsRestricted*(
+    self: ptr ISearchAssistantOC, bstrGuid: BSTR, pVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsRestricted(self, bstrGuid, pVal)
+
+proc get_ShellFeaturesEnabled*(
+    self: ptr ISearchAssistantOC, pVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ShellFeaturesEnabled(self, pVal)
+
+proc get_SearchAssistantDefault*(
+    self: ptr ISearchAssistantOC, pVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_SearchAssistantDefault(self, pVal)
+
+proc get_Searches*(
+    self: ptr ISearchAssistantOC, ppid: ptr ptr ISearches
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Searches(self, ppid)
+
+proc get_InWebFolder*(
+    self: ptr ISearchAssistantOC, pVal: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_InWebFolder(self, pVal)
+
+proc PutProperty*(
+    self: ptr ISearchAssistantOC,
+    bPerLocale: VARIANT_BOOL,
+    bstrName: BSTR,
+    bstrValue: BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PutProperty(self, bPerLocale, bstrName, bstrValue)
+
+proc GetProperty*(
+    self: ptr ISearchAssistantOC,
+    bPerLocale: VARIANT_BOOL,
+    bstrName: BSTR,
+    pbstrValue: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty(self, bPerLocale, bstrName, pbstrValue)
+
+proc put_EventHandled*(
+    self: ptr ISearchAssistantOC, rhs: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_EventHandled(self, rhs)
+
+proc ResetNextMenu*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResetNextMenu(self)
+
+proc FindOnWeb*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindOnWeb(self)
+
+proc FindFilesOrFolders*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindFilesOrFolders(self)
+
+proc FindComputer*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindComputer(self)
+
+proc FindPrinter*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindPrinter(self)
+
+proc FindPeople*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindPeople(self)
+
+proc GetSearchAssistantURL*(
+    self: ptr ISearchAssistantOC,
+    bSubstitute: VARIANT_BOOL,
+    bCustomize: VARIANT_BOOL,
+    pbstrValue: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSearchAssistantURL(self, bSubstitute, bCustomize, pbstrValue)
+
+proc NotifySearchSettingsChanged*(
+    self: ptr ISearchAssistantOC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NotifySearchSettingsChanged(self)
+
+proc put_ASProvider*(
+    self: ptr ISearchAssistantOC, pProvider: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ASProvider(self, pProvider)
+
+proc get_ASProvider*(
+    self: ptr ISearchAssistantOC, pProvider: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ASProvider(self, pProvider)
+
+proc put_ASSetting*(
+    self: ptr ISearchAssistantOC, pSetting: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ASSetting(self, pSetting)
+
+proc get_ASSetting*(
+    self: ptr ISearchAssistantOC, pSetting: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ASSetting(self, pSetting)
+
+proc NETDetectNextNavigate*(self: ptr ISearchAssistantOC): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NETDetectNextNavigate(self)
+
+proc PutFindText*(
+    self: ptr ISearchAssistantOC, FindText: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PutFindText(self, FindText)
+
+proc get_Version*(
+    self: ptr ISearchAssistantOC, pVersion: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Version(self, pVersion)
+
+proc EncodeString*(
+    self: ptr ISearchAssistantOC,
+    bstrValue: BSTR,
+    bstrCharSet: BSTR,
+    bUseUTF8: VARIANT_BOOL,
+    pbstrResult: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EncodeString(self, bstrValue, bstrCharSet, bUseUTF8, pbstrResult)
+
+proc get_ShowFindPrinter*(
+    self: ptr ISearchAssistantOC2, pbShowFindPrinter: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ShowFindPrinter(self, pbShowFindPrinter)
+
+proc get_SearchCompanionAvailable*(
+    self: ptr ISearchAssistantOC3, pbAvailable: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_SearchCompanionAvailable(self, pbAvailable)
+
+proc put_UseSearchCompanion*(
+    self: ptr ISearchAssistantOC3, pbUseSC: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_UseSearchCompanion(self, pbUseSC)
+
+proc get_UseSearchCompanion*(
+    self: ptr ISearchAssistantOC3, pbUseSC: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_UseSearchCompanion(self, pbUseSC)
+
+proc GetData*(
+    self: ptr IRichChunk,
+    pFirstPos: ptr ULONG,
+    pLength: ptr ULONG,
+    ppsz: ptr LPWSTR,
+    pValue: ptr PROPVARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetData(self, pFirstPos, pLength, ppsz, pValue)
+
+proc GetConditionType*(
+    self: ptr ICondition, pNodeType: ptr CONDITION_TYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConditionType(self, pNodeType)
+
+proc GetSubConditions*(
+    self: ptr ICondition, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSubConditions(self, riid, ppv)
+
+proc GetComparisonInfo*(
+    self: ptr ICondition,
+    ppszPropertyName: ptr LPWSTR,
+    pcop: ptr CONDITION_OPERATION,
+    ppropvar: ptr PROPVARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetComparisonInfo(self, ppszPropertyName, pcop, ppropvar)
+
+proc GetValueType*(
+    self: ptr ICondition, ppszValueTypeName: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetValueType(self, ppszValueTypeName)
+
+proc GetValueNormalization*(
+    self: ptr ICondition, ppszNormalization: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetValueNormalization(self, ppszNormalization)
+
+proc GetInputTerms*(
+    self: ptr ICondition,
+    ppPropertyTerm: ptr ptr IRichChunk,
+    ppOperationTerm: ptr ptr IRichChunk,
+    ppValueTerm: ptr ptr IRichChunk,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInputTerms(self, ppPropertyTerm, ppOperationTerm, ppValueTerm)
+
+proc Clone*(self: ptr ICondition, ppc: ptr ptr ICondition): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppc)
+
+proc GetLocale*(
+    self: ptr ICondition2, ppszLocaleName: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLocale(self, ppszLocaleName)
+
+proc GetLeafConditionInfo*(
+    self: ptr ICondition2,
+    ppropkey: ptr PROPERTYKEY,
+    pcop: ptr CONDITION_OPERATION,
+    ppropvar: ptr PROPVARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLeafConditionInfo(self, ppropkey, pcop, ppropvar)
+
+proc Initialize*(
+    self: ptr IInitializeWithFile, pszFilePath: LPCWSTR, grfMode: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pszFilePath, grfMode)
+
+proc Initialize*(
+    self: ptr IInitializeWithStream, pstream: ptr IStream, grfMode: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pstream, grfMode)
+
+proc GetCount*(
+    self: ptr IPropertyStore, cProps: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCount(self, cProps)
+
+proc GetAt*(
+    self: ptr IPropertyStore, iProp: DWORD, pkey: ptr PROPERTYKEY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAt(self, iProp, pkey)
+
+proc GetValue*(
+    self: ptr IPropertyStore, key: REFPROPERTYKEY, pv: ptr PROPVARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetValue(self, key, pv)
+
+proc SetValue*(
+    self: ptr IPropertyStore, key: REFPROPERTYKEY, propvar: REFPROPVARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetValue(self, key, propvar)
+
+proc Commit*(self: ptr IPropertyStore): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Commit(self)
+
+proc GetNamedValue*(
+    self: ptr INamedPropertyStore, pszName: LPCWSTR, ppropvar: ptr PROPVARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNamedValue(self, pszName, ppropvar)
+
+proc SetNamedValue*(
+    self: ptr INamedPropertyStore, pszName: LPCWSTR, propvar: REFPROPVARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetNamedValue(self, pszName, propvar)
+
+proc GetNameCount*(
+    self: ptr INamedPropertyStore, pdwCount: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNameCount(self, pdwCount)
+
+proc GetNameAt*(
+    self: ptr INamedPropertyStore, iProp: DWORD, pbstrName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNameAt(self, iProp, pbstrName)
+
+proc SetPropertyKey*(
+    self: ptr IObjectWithPropertyKey, key: REFPROPERTYKEY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPropertyKey(self, key)
+
+proc GetPropertyKey*(
+    self: ptr IObjectWithPropertyKey, pkey: ptr PROPERTYKEY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyKey(self, pkey)
+
+proc ApplyToPropVariant*(
+    self: ptr IPropertyChange, propvarIn: REFPROPVARIANT, ppropvarOut: ptr PROPVARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ApplyToPropVariant(self, propvarIn, ppropvarOut)
+
+proc GetCount*(
+    self: ptr IPropertyChangeArray, pcOperations: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCount(self, pcOperations)
+
+proc GetAt*(
+    self: ptr IPropertyChangeArray, iIndex: UINT, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAt(self, iIndex, riid, ppv)
+
+proc InsertAt*(
+    self: ptr IPropertyChangeArray, iIndex: UINT, ppropChange: ptr IPropertyChange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InsertAt(self, iIndex, ppropChange)
+
+proc Append*(
+    self: ptr IPropertyChangeArray, ppropChange: ptr IPropertyChange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Append(self, ppropChange)
+
+proc AppendOrReplace*(
+    self: ptr IPropertyChangeArray, ppropChange: ptr IPropertyChange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AppendOrReplace(self, ppropChange)
+
+proc RemoveAt*(
+    self: ptr IPropertyChangeArray, iIndex: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveAt(self, iIndex)
+
+proc IsKeyInArray*(
+    self: ptr IPropertyChangeArray, key: REFPROPERTYKEY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsKeyInArray(self, key)
+
+proc IsPropertyWritable*(
+    self: ptr IPropertyStoreCapabilities, key: REFPROPERTYKEY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsPropertyWritable(self, key)
+
+proc GetState*(
+    self: ptr IPropertyStoreCache, key: REFPROPERTYKEY, pstate: ptr PSC_STATE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetState(self, key, pstate)
+
+proc GetValueAndState*(
+    self: ptr IPropertyStoreCache,
+    key: REFPROPERTYKEY,
+    ppropvar: ptr PROPVARIANT,
+    pstate: ptr PSC_STATE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetValueAndState(self, key, ppropvar, pstate)
+
+proc SetState*(
+    self: ptr IPropertyStoreCache, key: REFPROPERTYKEY, state: PSC_STATE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetState(self, key, state)
+
+proc SetValueAndState*(
+    self: ptr IPropertyStoreCache,
+    key: REFPROPERTYKEY,
+    ppropvar: ptr PROPVARIANT,
+    state: PSC_STATE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetValueAndState(self, key, ppropvar, state)
+
+proc GetEnumType*(
+    self: ptr IPropertyEnumType, penumtype: ptr PROPENUMTYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEnumType(self, penumtype)
+
+proc GetValue*(
+    self: ptr IPropertyEnumType, ppropvar: ptr PROPVARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetValue(self, ppropvar)
+
+proc GetRangeMinValue*(
+    self: ptr IPropertyEnumType, ppropvarMin: ptr PROPVARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRangeMinValue(self, ppropvarMin)
+
+proc GetRangeSetValue*(
+    self: ptr IPropertyEnumType, ppropvarSet: ptr PROPVARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRangeSetValue(self, ppropvarSet)
+
+proc GetDisplayText*(
+    self: ptr IPropertyEnumType, ppszDisplay: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDisplayText(self, ppszDisplay)
+
+proc GetImageReference*(
+    self: ptr IPropertyEnumType2, ppszImageRes: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetImageReference(self, ppszImageRes)
+
+proc GetCount*(
+    self: ptr IPropertyEnumTypeList, pctypes: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCount(self, pctypes)
+
+proc GetAt*(
+    self: ptr IPropertyEnumTypeList, itype: UINT, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAt(self, itype, riid, ppv)
+
+proc GetConditionAt*(
+    self: ptr IPropertyEnumTypeList, nIndex: UINT, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConditionAt(self, nIndex, riid, ppv)
+
+proc FindMatchingIndex*(
+    self: ptr IPropertyEnumTypeList, propvarCmp: REFPROPVARIANT, pnIndex: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindMatchingIndex(self, propvarCmp, pnIndex)
+
+proc GetPropertyKey*(
+    self: ptr IPropertyDescription, pkey: ptr PROPERTYKEY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyKey(self, pkey)
+
+proc GetCanonicalName*(
+    self: ptr IPropertyDescription, ppszName: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCanonicalName(self, ppszName)
+
+proc GetPropertyType*(
+    self: ptr IPropertyDescription, pvartype: ptr VARTYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyType(self, pvartype)
+
+proc GetDisplayName*(
+    self: ptr IPropertyDescription, ppszName: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDisplayName(self, ppszName)
+
+proc GetEditInvitation*(
+    self: ptr IPropertyDescription, ppszInvite: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEditInvitation(self, ppszInvite)
+
+proc GetTypeFlags*(
+    self: ptr IPropertyDescription,
+    mask: PROPDESC_TYPE_FLAGS,
+    ppdtFlags: ptr PROPDESC_TYPE_FLAGS,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTypeFlags(self, mask, ppdtFlags)
+
+proc GetViewFlags*(
+    self: ptr IPropertyDescription, ppdvFlags: ptr PROPDESC_VIEW_FLAGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetViewFlags(self, ppdvFlags)
+
+proc GetDefaultColumnWidth*(
+    self: ptr IPropertyDescription, pcxChars: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultColumnWidth(self, pcxChars)
+
+proc GetDisplayType*(
+    self: ptr IPropertyDescription, pdisplaytype: ptr PROPDESC_DISPLAYTYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDisplayType(self, pdisplaytype)
+
+proc GetColumnState*(
+    self: ptr IPropertyDescription, pcsFlags: ptr SHCOLSTATEF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColumnState(self, pcsFlags)
+
+proc GetGroupingRange*(
+    self: ptr IPropertyDescription, pgr: ptr PROPDESC_GROUPING_RANGE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetGroupingRange(self, pgr)
+
+proc GetRelativeDescriptionType*(
+    self: ptr IPropertyDescription, prdt: ptr PROPDESC_RELATIVEDESCRIPTION_TYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRelativeDescriptionType(self, prdt)
+
+proc GetRelativeDescription*(
+    self: ptr IPropertyDescription,
+    propvar1: REFPROPVARIANT,
+    propvar2: REFPROPVARIANT,
+    ppszDesc1: ptr LPWSTR,
+    ppszDesc2: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRelativeDescription(self, propvar1, propvar2, ppszDesc1, ppszDesc2)
+
+proc GetSortDescription*(
+    self: ptr IPropertyDescription, psd: ptr PROPDESC_SORTDESCRIPTION
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSortDescription(self, psd)
+
+proc GetSortDescriptionLabel*(
+    self: ptr IPropertyDescription, fDescending: WINBOOL, ppszDescription: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSortDescriptionLabel(self, fDescending, ppszDescription)
+
+proc GetAggregationType*(
+    self: ptr IPropertyDescription, paggtype: ptr PROPDESC_AGGREGATION_TYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAggregationType(self, paggtype)
+
+proc GetConditionType*(
+    self: ptr IPropertyDescription,
+    pcontype: ptr PROPDESC_CONDITION_TYPE,
+    popDefault: ptr CONDITION_OPERATION,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConditionType(self, pcontype, popDefault)
+
+proc GetEnumTypeList*(
+    self: ptr IPropertyDescription, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEnumTypeList(self, riid, ppv)
+
+proc CoerceToCanonicalValue*(
+    self: ptr IPropertyDescription, ppropvar: ptr PROPVARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CoerceToCanonicalValue(self, ppropvar)
+
+proc FormatForDisplay*(
+    self: ptr IPropertyDescription,
+    propvar: REFPROPVARIANT,
+    pdfFlags: PROPDESC_FORMAT_FLAGS,
+    ppszDisplay: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FormatForDisplay(self, propvar, pdfFlags, ppszDisplay)
+
+proc IsValueCanonical*(
+    self: ptr IPropertyDescription, propvar: REFPROPVARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsValueCanonical(self, propvar)
+
+proc GetImageReferenceForValue*(
+    self: ptr IPropertyDescription2, propvar: REFPROPVARIANT, ppszImageRes: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetImageReferenceForValue(self, propvar, ppszImageRes)
+
+proc GetSortByAlias*(
+    self: ptr IPropertyDescriptionAliasInfo, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSortByAlias(self, riid, ppv)
+
+proc GetAdditionalSortByAliases*(
+    self: ptr IPropertyDescriptionAliasInfo, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAdditionalSortByAliases(self, riid, ppv)
+
+proc GetSearchInfoFlags*(
+    self: ptr IPropertyDescriptionSearchInfo, ppdsiFlags: ptr PROPDESC_SEARCHINFO_FLAGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSearchInfoFlags(self, ppdsiFlags)
+
+proc GetColumnIndexType*(
+    self: ptr IPropertyDescriptionSearchInfo, ppdciType: ptr PROPDESC_COLUMNINDEX_TYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColumnIndexType(self, ppdciType)
+
+proc GetProjectionString*(
+    self: ptr IPropertyDescriptionSearchInfo, ppszProjection: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProjectionString(self, ppszProjection)
+
+proc GetMaxSize*(
+    self: ptr IPropertyDescriptionSearchInfo, pcbMaxSize: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMaxSize(self, pcbMaxSize)
+
+proc GetRelatedProperty*(
+    self: ptr IPropertyDescriptionRelatedPropertyInfo,
+    pszRelationshipName: LPCWSTR,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRelatedProperty(self, pszRelationshipName, riid, ppv)
+
+proc GetPropertyDescription*(
+    self: ptr IPropertySystem, propkey: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyDescription(self, propkey, riid, ppv)
+
+proc GetPropertyDescriptionByName*(
+    self: ptr IPropertySystem, pszCanonicalName: LPCWSTR, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyDescriptionByName(self, pszCanonicalName, riid, ppv)
+
+proc GetPropertyDescriptionListFromString*(
+    self: ptr IPropertySystem, pszPropList: LPCWSTR, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyDescriptionListFromString(self, pszPropList, riid, ppv)
+
+proc EnumeratePropertyDescriptions*(
+    self: ptr IPropertySystem,
+    filterOn: PROPDESC_ENUMFILTER,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumeratePropertyDescriptions(self, filterOn, riid, ppv)
+
+proc FormatForDisplay*(
+    self: ptr IPropertySystem,
+    key: REFPROPERTYKEY,
+    propvar: REFPROPVARIANT,
+    pdff: PROPDESC_FORMAT_FLAGS,
+    pszText: LPWSTR,
+    cchText: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FormatForDisplay(self, key, propvar, pdff, pszText, cchText)
+
+proc FormatForDisplayAlloc*(
+    self: ptr IPropertySystem,
+    key: REFPROPERTYKEY,
+    propvar: REFPROPVARIANT,
+    pdff: PROPDESC_FORMAT_FLAGS,
+    ppszDisplay: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FormatForDisplayAlloc(self, key, propvar, pdff, ppszDisplay)
+
+proc RegisterPropertySchema*(
+    self: ptr IPropertySystem, pszPath: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterPropertySchema(self, pszPath)
+
+proc UnregisterPropertySchema*(
+    self: ptr IPropertySystem, pszPath: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnregisterPropertySchema(self, pszPath)
+
+proc RefreshPropertySchema*(self: ptr IPropertySystem): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RefreshPropertySchema(self)
+
+proc GetCount*(
+    self: ptr IPropertyDescriptionList, pcElem: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCount(self, pcElem)
+
+proc GetAt*(
+    self: ptr IPropertyDescriptionList, iElem: UINT, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAt(self, iElem, riid, ppv)
+
+proc GetPropertyStore*(
+    self: ptr IPropertyStoreFactory,
+    flags: GETPROPERTYSTOREFLAGS,
+    pUnkFactory: ptr IUnknown,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyStore(self, flags, pUnkFactory, riid, ppv)
+
+proc GetPropertyStoreForKeys*(
+    self: ptr IPropertyStoreFactory,
+    rgKeys: ptr PROPERTYKEY,
+    cKeys: UINT,
+    flags: GETPROPERTYSTOREFLAGS,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyStoreForKeys(self, rgKeys, cKeys, flags, riid, ppv)
+
+proc GetDelayedPropertyStore*(
+    self: ptr IDelayedPropertyStoreFactory,
+    flags: GETPROPERTYSTOREFLAGS,
+    dwStoreId: DWORD,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDelayedPropertyStore(self, flags, dwStoreId, riid, ppv)
+
+proc SetFlags*(
+    self: ptr IPersistSerializedPropStorage, flags: PERSIST_SPROPSTORE_FLAGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFlags(self, flags)
+
+proc SetPropertyStorage*(
+    self: ptr IPersistSerializedPropStorage, psps: PCUSERIALIZEDPROPSTORAGE, cb: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPropertyStorage(self, psps, cb)
+
+proc GetPropertyStorage*(
+    self: ptr IPersistSerializedPropStorage,
+    ppsps: ptr ptr SERIALIZEDPROPSTORAGE,
+    pcb: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyStorage(self, ppsps, pcb)
+
+proc GetPropertyStorageSize*(
+    self: ptr IPersistSerializedPropStorage2, pcb: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyStorageSize(self, pcb)
+
+proc GetPropertyStorageBuffer*(
+    self: ptr IPersistSerializedPropStorage2,
+    psps: ptr SERIALIZEDPROPSTORAGE,
+    cb: DWORD,
+    pcbWritten: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyStorageBuffer(self, psps, cb, pcbWritten)
+
+proc SchemaRefreshed*(
+    self: ptr IPropertySystemChangeNotify
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SchemaRefreshed(self)
+
+proc CreateObject*(
+    self: ptr ICreateObject,
+    clsid: REFCLSID,
+    pUnkOuter: ptr IUnknown,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateObject(self, clsid, pUnkOuter, riid, ppv)
+
+converter winimConverterAsyncIUnknownToIUnknown*(x: ptr AsyncIUnknown): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIClassFactoryToIUnknown*(x: ptr IClassFactory): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMarshalToIUnknown*(x: ptr IMarshal): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINoMarshalToIUnknown*(x: ptr INoMarshal): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAgileObjectToIUnknown*(x: ptr IAgileObject): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMarshal2ToIMarshal*(x: ptr IMarshal2): ptr IMarshal =
+  cast[ptr IMarshal](x)
+
+converter winimConverterIMarshal2ToIUnknown*(x: ptr IMarshal2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMallocToIUnknown*(x: ptr IMalloc): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIStdMarshalInfoToIUnknown*(
+    x: ptr IStdMarshalInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExternalConnectionToIUnknown*(
+    x: ptr IExternalConnection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMultiQIToIUnknown*(x: ptr IMultiQI): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterAsyncIMultiQIToIUnknown*(x: ptr AsyncIMultiQI): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternalUnknownToIUnknown*(
+    x: ptr IInternalUnknown
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumUnknownToIUnknown*(x: ptr IEnumUnknown): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumStringToIUnknown*(x: ptr IEnumString): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISequentialStreamToIUnknown*(
+    x: ptr ISequentialStream
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIStreamToISequentialStream*(
+    x: ptr IStream
+): ptr ISequentialStream =
+  cast[ptr ISequentialStream](x)
+
+converter winimConverterIStreamToIUnknown*(x: ptr IStream): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRpcChannelBufferToIUnknown*(
+    x: ptr IRpcChannelBuffer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRpcChannelBuffer2ToIRpcChannelBuffer*(
+    x: ptr IRpcChannelBuffer2
+): ptr IRpcChannelBuffer =
+  cast[ptr IRpcChannelBuffer](x)
+
+converter winimConverterIRpcChannelBuffer2ToIUnknown*(
+    x: ptr IRpcChannelBuffer2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAsyncRpcChannelBufferToIRpcChannelBuffer2*(
+    x: ptr IAsyncRpcChannelBuffer
+): ptr IRpcChannelBuffer2 =
+  cast[ptr IRpcChannelBuffer2](x)
+
+converter winimConverterIAsyncRpcChannelBufferToIRpcChannelBuffer*(
+    x: ptr IAsyncRpcChannelBuffer
+): ptr IRpcChannelBuffer =
+  cast[ptr IRpcChannelBuffer](x)
+
+converter winimConverterIAsyncRpcChannelBufferToIUnknown*(
+    x: ptr IAsyncRpcChannelBuffer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRpcChannelBuffer3ToIRpcChannelBuffer2*(
+    x: ptr IRpcChannelBuffer3
+): ptr IRpcChannelBuffer2 =
+  cast[ptr IRpcChannelBuffer2](x)
+
+converter winimConverterIRpcChannelBuffer3ToIRpcChannelBuffer*(
+    x: ptr IRpcChannelBuffer3
+): ptr IRpcChannelBuffer =
+  cast[ptr IRpcChannelBuffer](x)
+
+converter winimConverterIRpcChannelBuffer3ToIUnknown*(
+    x: ptr IRpcChannelBuffer3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRpcSyntaxNegotiateToIUnknown*(
+    x: ptr IRpcSyntaxNegotiate
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRpcProxyBufferToIUnknown*(
+    x: ptr IRpcProxyBuffer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRpcStubBufferToIUnknown*(x: ptr IRpcStubBuffer): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPSFactoryBufferToIUnknown*(
+    x: ptr IPSFactoryBuffer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIChannelHookToIUnknown*(x: ptr IChannelHook): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIClientSecurityToIUnknown*(
+    x: ptr IClientSecurity
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIServerSecurityToIUnknown*(
+    x: ptr IServerSecurity
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRpcOptionsToIUnknown*(x: ptr IRpcOptions): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIGlobalOptionsToIUnknown*(x: ptr IGlobalOptions): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISurrogateToIUnknown*(x: ptr ISurrogate): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIGlobalInterfaceTableToIUnknown*(
+    x: ptr IGlobalInterfaceTable
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISynchronizeToIUnknown*(x: ptr ISynchronize): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISynchronizeHandleToIUnknown*(
+    x: ptr ISynchronizeHandle
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISynchronizeEventToISynchronizeHandle*(
+    x: ptr ISynchronizeEvent
+): ptr ISynchronizeHandle =
+  cast[ptr ISynchronizeHandle](x)
+
+converter winimConverterISynchronizeEventToIUnknown*(
+    x: ptr ISynchronizeEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISynchronizeContainerToIUnknown*(
+    x: ptr ISynchronizeContainer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISynchronizeMutexToISynchronize*(
+    x: ptr ISynchronizeMutex
+): ptr ISynchronize =
+  cast[ptr ISynchronize](x)
+
+converter winimConverterISynchronizeMutexToIUnknown*(
+    x: ptr ISynchronizeMutex
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICancelMethodCallsToIUnknown*(
+    x: ptr ICancelMethodCalls
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAsyncManagerToIUnknown*(x: ptr IAsyncManager): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICallFactoryToIUnknown*(x: ptr ICallFactory): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRpcHelperToIUnknown*(x: ptr IRpcHelper): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIReleaseMarshalBuffersToIUnknown*(
+    x: ptr IReleaseMarshalBuffers
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWaitMultipleToIUnknown*(x: ptr IWaitMultiple): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAddrTrackingControlToIUnknown*(
+    x: ptr IAddrTrackingControl
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAddrExclusionControlToIUnknown*(
+    x: ptr IAddrExclusionControl
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPipeByteToIUnknown*(x: ptr IPipeByte): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPipeLongToIUnknown*(x: ptr IPipeLong): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPipeDoubleToIUnknown*(x: ptr IPipeDouble): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumContextPropsToIUnknown*(
+    x: ptr IEnumContextProps
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIContextToIUnknown*(x: ptr IContext): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIComThreadingInfoToIUnknown*(
+    x: ptr IComThreadingInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIProcessInitControlToIUnknown*(
+    x: ptr IProcessInitControl
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFastRundownToIUnknown*(x: ptr IFastRundown): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMarshalingStreamToIStream*(
+    x: ptr IMarshalingStream
+): ptr IStream =
+  cast[ptr IStream](x)
+
+converter winimConverterIMarshalingStreamToISequentialStream*(
+    x: ptr IMarshalingStream
+): ptr ISequentialStream =
+  cast[ptr ISequentialStream](x)
+
+converter winimConverterIMarshalingStreamToIUnknown*(
+    x: ptr IMarshalingStream
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMallocSpyToIUnknown*(x: ptr IMallocSpy): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIBindCtxToIUnknown*(x: ptr IBindCtx): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumMonikerToIUnknown*(x: ptr IEnumMoniker): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRunnableObjectToIUnknown*(
+    x: ptr IRunnableObject
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRunningObjectTableToIUnknown*(
+    x: ptr IRunningObjectTable
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistToIUnknown*(x: ptr IPersist): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistStreamToIPersist*(x: ptr IPersistStream): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterIPersistStreamToIUnknown*(x: ptr IPersistStream): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMonikerToIPersistStream*(x: ptr IMoniker): ptr IPersistStream =
+  cast[ptr IPersistStream](x)
+
+converter winimConverterIMonikerToIPersist*(x: ptr IMoniker): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterIMonikerToIUnknown*(x: ptr IMoniker): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIROTDataToIUnknown*(x: ptr IROTData): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumSTATSTGToIUnknown*(x: ptr IEnumSTATSTG): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIStorageToIUnknown*(x: ptr IStorage): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistFileToIPersist*(x: ptr IPersistFile): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterIPersistFileToIUnknown*(x: ptr IPersistFile): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistStorageToIPersist*(
+    x: ptr IPersistStorage
+): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterIPersistStorageToIUnknown*(
+    x: ptr IPersistStorage
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterILockBytesToIUnknown*(x: ptr ILockBytes): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumFORMATETCToIUnknown*(x: ptr IEnumFORMATETC): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumSTATDATAToIUnknown*(x: ptr IEnumSTATDATA): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRootStorageToIUnknown*(x: ptr IRootStorage): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAdviseSinkToIUnknown*(x: ptr IAdviseSink): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterAsyncIAdviseSinkToIUnknown*(
+    x: ptr AsyncIAdviseSink
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAdviseSink2ToIAdviseSink*(
+    x: ptr IAdviseSink2
+): ptr IAdviseSink =
+  cast[ptr IAdviseSink](x)
+
+converter winimConverterIAdviseSink2ToIUnknown*(x: ptr IAdviseSink2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterAsyncIAdviseSink2ToIAdviseSink*(
+    x: ptr AsyncIAdviseSink2
+): ptr IAdviseSink =
+  cast[ptr IAdviseSink](x)
+
+converter winimConverterAsyncIAdviseSink2ToIUnknown*(
+    x: ptr AsyncIAdviseSink2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDataObjectToIUnknown*(x: ptr IDataObject): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDataAdviseHolderToIUnknown*(
+    x: ptr IDataAdviseHolder
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMessageFilterToIUnknown*(x: ptr IMessageFilter): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIClassActivatorToIUnknown*(
+    x: ptr IClassActivator
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFillLockBytesToIUnknown*(x: ptr IFillLockBytes): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIProgressNotifyToIUnknown*(
+    x: ptr IProgressNotify
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterILayoutStorageToIUnknown*(x: ptr ILayoutStorage): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIBlockingLockToIUnknown*(x: ptr IBlockingLock): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITimeAndNoticeControlToIUnknown*(
+    x: ptr ITimeAndNoticeControl
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOplockStorageToIUnknown*(x: ptr IOplockStorage): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDirectWriterLockToIUnknown*(
+    x: ptr IDirectWriterLock
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUrlMonToIUnknown*(x: ptr IUrlMon): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIForegroundTransferToIUnknown*(
+    x: ptr IForegroundTransfer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIThumbnailExtractorToIUnknown*(
+    x: ptr IThumbnailExtractor
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDummyHICONIncluderToIUnknown*(
+    x: ptr IDummyHICONIncluder
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIProcessLockToIUnknown*(x: ptr IProcessLock): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISurrogateServiceToIUnknown*(
+    x: ptr ISurrogateService
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInitializeSpyToIUnknown*(x: ptr IInitializeSpy): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIApartmentShutdownToIUnknown*(
+    x: ptr IApartmentShutdown
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICreateTypeInfoToIUnknown*(
+    x: ptr ICreateTypeInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICreateTypeInfo2ToICreateTypeInfo*(
+    x: ptr ICreateTypeInfo2
+): ptr ICreateTypeInfo =
+  cast[ptr ICreateTypeInfo](x)
+
+converter winimConverterICreateTypeInfo2ToIUnknown*(
+    x: ptr ICreateTypeInfo2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICreateTypeLibToIUnknown*(x: ptr ICreateTypeLib): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICreateTypeLib2ToICreateTypeLib*(
+    x: ptr ICreateTypeLib2
+): ptr ICreateTypeLib =
+  cast[ptr ICreateTypeLib](x)
+
+converter winimConverterICreateTypeLib2ToIUnknown*(
+    x: ptr ICreateTypeLib2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDispatchToIUnknown*(x: ptr IDispatch): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumVARIANTToIUnknown*(x: ptr IEnumVARIANT): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITypeCompToIUnknown*(x: ptr ITypeComp): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITypeInfoToIUnknown*(x: ptr ITypeInfo): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITypeInfo2ToITypeInfo*(x: ptr ITypeInfo2): ptr ITypeInfo =
+  cast[ptr ITypeInfo](x)
+
+converter winimConverterITypeInfo2ToIUnknown*(x: ptr ITypeInfo2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITypeLibToIUnknown*(x: ptr ITypeLib): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITypeLib2ToITypeLib*(x: ptr ITypeLib2): ptr ITypeLib =
+  cast[ptr ITypeLib](x)
+
+converter winimConverterITypeLib2ToIUnknown*(x: ptr ITypeLib2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITypeChangeEventsToIUnknown*(
+    x: ptr ITypeChangeEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIErrorInfoToIUnknown*(x: ptr IErrorInfo): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICreateErrorInfoToIUnknown*(
+    x: ptr ICreateErrorInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISupportErrorInfoToIUnknown*(
+    x: ptr ISupportErrorInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITypeFactoryToIUnknown*(x: ptr ITypeFactory): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITypeMarshalToIUnknown*(x: ptr ITypeMarshal): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRecordInfoToIUnknown*(x: ptr IRecordInfo): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIErrorLogToIUnknown*(x: ptr IErrorLog): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyBagToIUnknown*(x: ptr IPropertyBag): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleAdviseHolderToIUnknown*(
+    x: ptr IOleAdviseHolder
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleCacheToIUnknown*(x: ptr IOleCache): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleCache2ToIOleCache*(x: ptr IOleCache2): ptr IOleCache =
+  cast[ptr IOleCache](x)
+
+converter winimConverterIOleCache2ToIUnknown*(x: ptr IOleCache2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleCacheControlToIUnknown*(
+    x: ptr IOleCacheControl
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIParseDisplayNameToIUnknown*(
+    x: ptr IParseDisplayName
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleContainerToIParseDisplayName*(
+    x: ptr IOleContainer
+): ptr IParseDisplayName =
+  cast[ptr IParseDisplayName](x)
+
+converter winimConverterIOleContainerToIUnknown*(x: ptr IOleContainer): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleClientSiteToIUnknown*(x: ptr IOleClientSite): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleObjectToIUnknown*(x: ptr IOleObject): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleWindowToIUnknown*(x: ptr IOleWindow): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleLinkToIUnknown*(x: ptr IOleLink): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleItemContainerToIOleContainer*(
+    x: ptr IOleItemContainer
+): ptr IOleContainer =
+  cast[ptr IOleContainer](x)
+
+converter winimConverterIOleItemContainerToIParseDisplayName*(
+    x: ptr IOleItemContainer
+): ptr IParseDisplayName =
+  cast[ptr IParseDisplayName](x)
+
+converter winimConverterIOleItemContainerToIUnknown*(
+    x: ptr IOleItemContainer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleInPlaceUIWindowToIOleWindow*(
+    x: ptr IOleInPlaceUIWindow
+): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIOleInPlaceUIWindowToIUnknown*(
+    x: ptr IOleInPlaceUIWindow
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleInPlaceActiveObjectToIOleWindow*(
+    x: ptr IOleInPlaceActiveObject
+): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIOleInPlaceActiveObjectToIUnknown*(
+    x: ptr IOleInPlaceActiveObject
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleInPlaceFrameToIOleInPlaceUIWindow*(
+    x: ptr IOleInPlaceFrame
+): ptr IOleInPlaceUIWindow =
+  cast[ptr IOleInPlaceUIWindow](x)
+
+converter winimConverterIOleInPlaceFrameToIOleWindow*(
+    x: ptr IOleInPlaceFrame
+): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIOleInPlaceFrameToIUnknown*(
+    x: ptr IOleInPlaceFrame
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleInPlaceObjectToIOleWindow*(
+    x: ptr IOleInPlaceObject
+): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIOleInPlaceObjectToIUnknown*(
+    x: ptr IOleInPlaceObject
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleInPlaceSiteToIOleWindow*(
+    x: ptr IOleInPlaceSite
+): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIOleInPlaceSiteToIUnknown*(
+    x: ptr IOleInPlaceSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIContinueToIUnknown*(x: ptr IContinue): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIViewObjectToIUnknown*(x: ptr IViewObject): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIViewObject2ToIViewObject*(
+    x: ptr IViewObject2
+): ptr IViewObject =
+  cast[ptr IViewObject](x)
+
+converter winimConverterIViewObject2ToIUnknown*(x: ptr IViewObject2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDropSourceToIUnknown*(x: ptr IDropSource): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDropTargetToIUnknown*(x: ptr IDropTarget): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDropSourceNotifyToIUnknown*(
+    x: ptr IDropSourceNotify
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumOLEVERBToIUnknown*(x: ptr IEnumOLEVERB): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIServiceProviderToIUnknown*(
+    x: ptr IServiceProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMImplementationToIDispatch*(
+    x: ptr IXMLDOMImplementation
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMImplementationToIUnknown*(
+    x: ptr IXMLDOMImplementation
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMNodeToIDispatch*(x: ptr IXMLDOMNode): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMNodeToIUnknown*(x: ptr IXMLDOMNode): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMDocumentFragmentToIXMLDOMNode*(
+    x: ptr IXMLDOMDocumentFragment
+): ptr IXMLDOMNode =
+  cast[ptr IXMLDOMNode](x)
+
+converter winimConverterIXMLDOMDocumentFragmentToIDispatch*(
+    x: ptr IXMLDOMDocumentFragment
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMDocumentFragmentToIUnknown*(
+    x: ptr IXMLDOMDocumentFragment
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMDocumentToIXMLDOMNode*(
+    x: ptr IXMLDOMDocument
+): ptr IXMLDOMNode =
+  cast[ptr IXMLDOMNode](x)
+
+converter winimConverterIXMLDOMDocumentToIDispatch*(
+    x: ptr IXMLDOMDocument
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMDocumentToIUnknown*(
+    x: ptr IXMLDOMDocument
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMNodeListToIDispatch*(
+    x: ptr IXMLDOMNodeList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMNodeListToIUnknown*(
+    x: ptr IXMLDOMNodeList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMNamedNodeMapToIDispatch*(
+    x: ptr IXMLDOMNamedNodeMap
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMNamedNodeMapToIUnknown*(
+    x: ptr IXMLDOMNamedNodeMap
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMCharacterDataToIXMLDOMNode*(
+    x: ptr IXMLDOMCharacterData
+): ptr IXMLDOMNode =
+  cast[ptr IXMLDOMNode](x)
+
+converter winimConverterIXMLDOMCharacterDataToIDispatch*(
+    x: ptr IXMLDOMCharacterData
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMCharacterDataToIUnknown*(
+    x: ptr IXMLDOMCharacterData
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMAttributeToIXMLDOMNode*(
+    x: ptr IXMLDOMAttribute
+): ptr IXMLDOMNode =
+  cast[ptr IXMLDOMNode](x)
+
+converter winimConverterIXMLDOMAttributeToIDispatch*(
+    x: ptr IXMLDOMAttribute
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMAttributeToIUnknown*(
+    x: ptr IXMLDOMAttribute
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMElementToIXMLDOMNode*(
+    x: ptr IXMLDOMElement
+): ptr IXMLDOMNode =
+  cast[ptr IXMLDOMNode](x)
+
+converter winimConverterIXMLDOMElementToIDispatch*(
+    x: ptr IXMLDOMElement
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMElementToIUnknown*(x: ptr IXMLDOMElement): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMTextToIXMLDOMCharacterData*(
+    x: ptr IXMLDOMText
+): ptr IXMLDOMCharacterData =
+  cast[ptr IXMLDOMCharacterData](x)
+
+converter winimConverterIXMLDOMTextToIXMLDOMNode*(x: ptr IXMLDOMText): ptr IXMLDOMNode =
+  cast[ptr IXMLDOMNode](x)
+
+converter winimConverterIXMLDOMTextToIDispatch*(x: ptr IXMLDOMText): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMTextToIUnknown*(x: ptr IXMLDOMText): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMCommentToIXMLDOMCharacterData*(
+    x: ptr IXMLDOMComment
+): ptr IXMLDOMCharacterData =
+  cast[ptr IXMLDOMCharacterData](x)
+
+converter winimConverterIXMLDOMCommentToIXMLDOMNode*(
+    x: ptr IXMLDOMComment
+): ptr IXMLDOMNode =
+  cast[ptr IXMLDOMNode](x)
+
+converter winimConverterIXMLDOMCommentToIDispatch*(
+    x: ptr IXMLDOMComment
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMCommentToIUnknown*(x: ptr IXMLDOMComment): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMProcessingInstructionToIXMLDOMNode*(
+    x: ptr IXMLDOMProcessingInstruction
+): ptr IXMLDOMNode =
+  cast[ptr IXMLDOMNode](x)
+
+converter winimConverterIXMLDOMProcessingInstructionToIDispatch*(
+    x: ptr IXMLDOMProcessingInstruction
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMProcessingInstructionToIUnknown*(
+    x: ptr IXMLDOMProcessingInstruction
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMCDATASectionToIXMLDOMText*(
+    x: ptr IXMLDOMCDATASection
+): ptr IXMLDOMText =
+  cast[ptr IXMLDOMText](x)
+
+converter winimConverterIXMLDOMCDATASectionToIXMLDOMCharacterData*(
+    x: ptr IXMLDOMCDATASection
+): ptr IXMLDOMCharacterData =
+  cast[ptr IXMLDOMCharacterData](x)
+
+converter winimConverterIXMLDOMCDATASectionToIXMLDOMNode*(
+    x: ptr IXMLDOMCDATASection
+): ptr IXMLDOMNode =
+  cast[ptr IXMLDOMNode](x)
+
+converter winimConverterIXMLDOMCDATASectionToIDispatch*(
+    x: ptr IXMLDOMCDATASection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMCDATASectionToIUnknown*(
+    x: ptr IXMLDOMCDATASection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMDocumentTypeToIXMLDOMNode*(
+    x: ptr IXMLDOMDocumentType
+): ptr IXMLDOMNode =
+  cast[ptr IXMLDOMNode](x)
+
+converter winimConverterIXMLDOMDocumentTypeToIDispatch*(
+    x: ptr IXMLDOMDocumentType
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMDocumentTypeToIUnknown*(
+    x: ptr IXMLDOMDocumentType
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMNotationToIXMLDOMNode*(
+    x: ptr IXMLDOMNotation
+): ptr IXMLDOMNode =
+  cast[ptr IXMLDOMNode](x)
+
+converter winimConverterIXMLDOMNotationToIDispatch*(
+    x: ptr IXMLDOMNotation
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMNotationToIUnknown*(
+    x: ptr IXMLDOMNotation
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMEntityToIXMLDOMNode*(
+    x: ptr IXMLDOMEntity
+): ptr IXMLDOMNode =
+  cast[ptr IXMLDOMNode](x)
+
+converter winimConverterIXMLDOMEntityToIDispatch*(x: ptr IXMLDOMEntity): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMEntityToIUnknown*(x: ptr IXMLDOMEntity): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMEntityReferenceToIXMLDOMNode*(
+    x: ptr IXMLDOMEntityReference
+): ptr IXMLDOMNode =
+  cast[ptr IXMLDOMNode](x)
+
+converter winimConverterIXMLDOMEntityReferenceToIDispatch*(
+    x: ptr IXMLDOMEntityReference
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMEntityReferenceToIUnknown*(
+    x: ptr IXMLDOMEntityReference
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDOMParseErrorToIDispatch*(
+    x: ptr IXMLDOMParseError
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDOMParseErrorToIUnknown*(
+    x: ptr IXMLDOMParseError
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXTLRuntimeToIXMLDOMNode*(x: ptr IXTLRuntime): ptr IXMLDOMNode =
+  cast[ptr IXMLDOMNode](x)
+
+converter winimConverterIXTLRuntimeToIDispatch*(x: ptr IXTLRuntime): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXTLRuntimeToIUnknown*(x: ptr IXTLRuntime): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterXMLDOMDocumentEventsToIDispatch*(
+    x: ptr XMLDOMDocumentEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterXMLDOMDocumentEventsToIUnknown*(
+    x: ptr XMLDOMDocumentEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLHttpRequestToIDispatch*(
+    x: ptr IXMLHttpRequest
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLHttpRequestToIUnknown*(
+    x: ptr IXMLHttpRequest
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDSOControlToIDispatch*(
+    x: ptr IXMLDSOControl
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDSOControlToIUnknown*(x: ptr IXMLDSOControl): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLElementCollectionToIDispatch*(
+    x: ptr IXMLElementCollection
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLElementCollectionToIUnknown*(
+    x: ptr IXMLElementCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDocumentToIDispatch*(x: ptr IXMLDocument): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDocumentToIUnknown*(x: ptr IXMLDocument): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLDocument2ToIDispatch*(x: ptr IXMLDocument2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLDocument2ToIUnknown*(x: ptr IXMLDocument2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLElementToIDispatch*(x: ptr IXMLElement): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLElementToIUnknown*(x: ptr IXMLElement): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLElement2ToIDispatch*(x: ptr IXMLElement2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLElement2ToIUnknown*(x: ptr IXMLElement2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLAttributeToIDispatch*(x: ptr IXMLAttribute): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIXMLAttributeToIUnknown*(x: ptr IXMLAttribute): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIXMLErrorToIUnknown*(x: ptr IXMLError): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistMonikerToIUnknown*(
+    x: ptr IPersistMoniker
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMonikerPropToIUnknown*(x: ptr IMonikerProp): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIBindProtocolToIUnknown*(x: ptr IBindProtocol): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIBindingToIUnknown*(x: ptr IBinding): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIBindStatusCallbackToIUnknown*(
+    x: ptr IBindStatusCallback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIBindStatusCallbackExToIBindStatusCallback*(
+    x: ptr IBindStatusCallbackEx
+): ptr IBindStatusCallback =
+  cast[ptr IBindStatusCallback](x)
+
+converter winimConverterIBindStatusCallbackExToIUnknown*(
+    x: ptr IBindStatusCallbackEx
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAuthenticateToIUnknown*(x: ptr IAuthenticate): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAuthenticateExToIAuthenticate*(
+    x: ptr IAuthenticateEx
+): ptr IAuthenticate =
+  cast[ptr IAuthenticate](x)
+
+converter winimConverterIAuthenticateExToIUnknown*(
+    x: ptr IAuthenticateEx
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHttpNegotiateToIUnknown*(x: ptr IHttpNegotiate): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHttpNegotiate2ToIHttpNegotiate*(
+    x: ptr IHttpNegotiate2
+): ptr IHttpNegotiate =
+  cast[ptr IHttpNegotiate](x)
+
+converter winimConverterIHttpNegotiate2ToIUnknown*(
+    x: ptr IHttpNegotiate2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHttpNegotiate3ToIHttpNegotiate2*(
+    x: ptr IHttpNegotiate3
+): ptr IHttpNegotiate2 =
+  cast[ptr IHttpNegotiate2](x)
+
+converter winimConverterIHttpNegotiate3ToIHttpNegotiate*(
+    x: ptr IHttpNegotiate3
+): ptr IHttpNegotiate =
+  cast[ptr IHttpNegotiate](x)
+
+converter winimConverterIHttpNegotiate3ToIUnknown*(
+    x: ptr IHttpNegotiate3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWinInetFileStreamToIUnknown*(
+    x: ptr IWinInetFileStream
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWindowForBindingUIToIUnknown*(
+    x: ptr IWindowForBindingUI
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICodeInstallToIWindowForBindingUI*(
+    x: ptr ICodeInstall
+): ptr IWindowForBindingUI =
+  cast[ptr IWindowForBindingUI](x)
+
+converter winimConverterICodeInstallToIUnknown*(x: ptr ICodeInstall): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUriToIUnknown*(x: ptr IUri): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUriContainerToIUnknown*(x: ptr IUriContainer): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUriBuilderToIUnknown*(x: ptr IUriBuilder): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUriBuilderFactoryToIUnknown*(
+    x: ptr IUriBuilderFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWinInetInfoToIUnknown*(x: ptr IWinInetInfo): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHttpSecurityToIWindowForBindingUI*(
+    x: ptr IHttpSecurity
+): ptr IWindowForBindingUI =
+  cast[ptr IWindowForBindingUI](x)
+
+converter winimConverterIHttpSecurityToIUnknown*(x: ptr IHttpSecurity): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWinInetHttpInfoToIWinInetInfo*(
+    x: ptr IWinInetHttpInfo
+): ptr IWinInetInfo =
+  cast[ptr IWinInetInfo](x)
+
+converter winimConverterIWinInetHttpInfoToIUnknown*(
+    x: ptr IWinInetHttpInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWinInetHttpTimeoutsToIUnknown*(
+    x: ptr IWinInetHttpTimeouts
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWinInetCacheHintsToIUnknown*(
+    x: ptr IWinInetCacheHints
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWinInetCacheHints2ToIWinInetCacheHints*(
+    x: ptr IWinInetCacheHints2
+): ptr IWinInetCacheHints =
+  cast[ptr IWinInetCacheHints](x)
+
+converter winimConverterIWinInetCacheHints2ToIUnknown*(
+    x: ptr IWinInetCacheHints2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIBindHostToIUnknown*(x: ptr IBindHost): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetToIUnknown*(x: ptr IInternet): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetBindInfoToIUnknown*(
+    x: ptr IInternetBindInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetBindInfoExToIInternetBindInfo*(
+    x: ptr IInternetBindInfoEx
+): ptr IInternetBindInfo =
+  cast[ptr IInternetBindInfo](x)
+
+converter winimConverterIInternetBindInfoExToIUnknown*(
+    x: ptr IInternetBindInfoEx
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetProtocolRootToIUnknown*(
+    x: ptr IInternetProtocolRoot
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetProtocolToIInternetProtocolRoot*(
+    x: ptr IInternetProtocol
+): ptr IInternetProtocolRoot =
+  cast[ptr IInternetProtocolRoot](x)
+
+converter winimConverterIInternetProtocolToIUnknown*(
+    x: ptr IInternetProtocol
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetProtocolExToIInternetProtocol*(
+    x: ptr IInternetProtocolEx
+): ptr IInternetProtocol =
+  cast[ptr IInternetProtocol](x)
+
+converter winimConverterIInternetProtocolExToIInternetProtocolRoot*(
+    x: ptr IInternetProtocolEx
+): ptr IInternetProtocolRoot =
+  cast[ptr IInternetProtocolRoot](x)
+
+converter winimConverterIInternetProtocolExToIUnknown*(
+    x: ptr IInternetProtocolEx
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetProtocolSinkToIUnknown*(
+    x: ptr IInternetProtocolSink
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetProtocolSinkStackableToIUnknown*(
+    x: ptr IInternetProtocolSinkStackable
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetSessionToIUnknown*(
+    x: ptr IInternetSession
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetThreadSwitchToIUnknown*(
+    x: ptr IInternetThreadSwitch
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetPriorityToIUnknown*(
+    x: ptr IInternetPriority
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetProtocolInfoToIUnknown*(
+    x: ptr IInternetProtocolInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetSecurityMgrSiteToIUnknown*(
+    x: ptr IInternetSecurityMgrSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetSecurityManagerToIUnknown*(
+    x: ptr IInternetSecurityManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetSecurityManagerExToIInternetSecurityManager*(
+    x: ptr IInternetSecurityManagerEx
+): ptr IInternetSecurityManager =
+  cast[ptr IInternetSecurityManager](x)
+
+converter winimConverterIInternetSecurityManagerExToIUnknown*(
+    x: ptr IInternetSecurityManagerEx
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetSecurityManagerEx2ToIInternetSecurityManagerEx*(
+    x: ptr IInternetSecurityManagerEx2
+): ptr IInternetSecurityManagerEx =
+  cast[ptr IInternetSecurityManagerEx](x)
+
+converter winimConverterIInternetSecurityManagerEx2ToIInternetSecurityManager*(
+    x: ptr IInternetSecurityManagerEx2
+): ptr IInternetSecurityManager =
+  cast[ptr IInternetSecurityManager](x)
+
+converter winimConverterIInternetSecurityManagerEx2ToIUnknown*(
+    x: ptr IInternetSecurityManagerEx2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIZoneIdentifierToIUnknown*(
+    x: ptr IZoneIdentifier
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetHostSecurityManagerToIUnknown*(
+    x: ptr IInternetHostSecurityManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetZoneManagerToIUnknown*(
+    x: ptr IInternetZoneManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetZoneManagerExToIInternetZoneManager*(
+    x: ptr IInternetZoneManagerEx
+): ptr IInternetZoneManager =
+  cast[ptr IInternetZoneManager](x)
+
+converter winimConverterIInternetZoneManagerExToIUnknown*(
+    x: ptr IInternetZoneManagerEx
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInternetZoneManagerEx2ToIInternetZoneManagerEx*(
+    x: ptr IInternetZoneManagerEx2
+): ptr IInternetZoneManagerEx =
+  cast[ptr IInternetZoneManagerEx](x)
+
+converter winimConverterIInternetZoneManagerEx2ToIInternetZoneManager*(
+    x: ptr IInternetZoneManagerEx2
+): ptr IInternetZoneManager =
+  cast[ptr IInternetZoneManager](x)
+
+converter winimConverterIInternetZoneManagerEx2ToIUnknown*(
+    x: ptr IInternetZoneManagerEx2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISoftDistExtToIUnknown*(x: ptr ISoftDistExt): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICatalogFileInfoToIUnknown*(
+    x: ptr ICatalogFileInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDataFilterToIUnknown*(x: ptr IDataFilter): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEncodingFilterFactoryToIUnknown*(
+    x: ptr IEncodingFilterFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWrappedProtocolToIUnknown*(
+    x: ptr IWrappedProtocol
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIGetBindHandleToIUnknown*(x: ptr IGetBindHandle): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIBindCallbackRedirectToIUnknown*(
+    x: ptr IBindCallbackRedirect
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyStorageToIUnknown*(
+    x: ptr IPropertyStorage
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertySetStorageToIUnknown*(
+    x: ptr IPropertySetStorage
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumSTATPROPSTGToIUnknown*(
+    x: ptr IEnumSTATPROPSTG
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumSTATPROPSETSTGToIUnknown*(
+    x: ptr IEnumSTATPROPSETSTG
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumConnectionsToIUnknown*(
+    x: ptr IEnumConnections
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIConnectionPointToIUnknown*(
+    x: ptr IConnectionPoint
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumConnectionPointsToIUnknown*(
+    x: ptr IEnumConnectionPoints
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIConnectionPointContainerToIUnknown*(
+    x: ptr IConnectionPointContainer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIClassFactory2ToIClassFactory*(
+    x: ptr IClassFactory2
+): ptr IClassFactory =
+  cast[ptr IClassFactory](x)
+
+converter winimConverterIClassFactory2ToIUnknown*(x: ptr IClassFactory2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIProvideClassInfoToIUnknown*(
+    x: ptr IProvideClassInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIProvideClassInfo2ToIProvideClassInfo*(
+    x: ptr IProvideClassInfo2
+): ptr IProvideClassInfo =
+  cast[ptr IProvideClassInfo](x)
+
+converter winimConverterIProvideClassInfo2ToIUnknown*(
+    x: ptr IProvideClassInfo2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIProvideMultipleClassInfoToIProvideClassInfo2*(
+    x: ptr IProvideMultipleClassInfo
+): ptr IProvideClassInfo2 =
+  cast[ptr IProvideClassInfo2](x)
+
+converter winimConverterIProvideMultipleClassInfoToIProvideClassInfo*(
+    x: ptr IProvideMultipleClassInfo
+): ptr IProvideClassInfo =
+  cast[ptr IProvideClassInfo](x)
+
+converter winimConverterIProvideMultipleClassInfoToIUnknown*(
+    x: ptr IProvideMultipleClassInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleControlToIUnknown*(x: ptr IOleControl): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleControlSiteToIUnknown*(
+    x: ptr IOleControlSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyPageToIUnknown*(x: ptr IPropertyPage): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyPage2ToIPropertyPage*(
+    x: ptr IPropertyPage2
+): ptr IPropertyPage =
+  cast[ptr IPropertyPage](x)
+
+converter winimConverterIPropertyPage2ToIUnknown*(x: ptr IPropertyPage2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyPageSiteToIUnknown*(
+    x: ptr IPropertyPageSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyNotifySinkToIUnknown*(
+    x: ptr IPropertyNotifySink
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISpecifyPropertyPagesToIUnknown*(
+    x: ptr ISpecifyPropertyPages
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistMemoryToIPersist*(x: ptr IPersistMemory): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterIPersistMemoryToIUnknown*(x: ptr IPersistMemory): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistStreamInitToIPersist*(
+    x: ptr IPersistStreamInit
+): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterIPersistStreamInitToIUnknown*(
+    x: ptr IPersistStreamInit
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistPropertyBagToIPersist*(
+    x: ptr IPersistPropertyBag
+): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterIPersistPropertyBagToIUnknown*(
+    x: ptr IPersistPropertyBag
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISimpleFrameSiteToIUnknown*(
+    x: ptr ISimpleFrameSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFontToIUnknown*(x: ptr IFont): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPictureToIUnknown*(x: ptr IPicture): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPicture2ToIUnknown*(x: ptr IPicture2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFontEventsDispToIDispatch*(
+    x: ptr IFontEventsDisp
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIFontEventsDispToIUnknown*(
+    x: ptr IFontEventsDisp
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFontDispToIDispatch*(x: ptr IFontDisp): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIFontDispToIUnknown*(x: ptr IFontDisp): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPictureDispToIDispatch*(x: ptr IPictureDisp): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIPictureDispToIUnknown*(x: ptr IPictureDisp): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleInPlaceObjectWindowlessToIOleInPlaceObject*(
+    x: ptr IOleInPlaceObjectWindowless
+): ptr IOleInPlaceObject =
+  cast[ptr IOleInPlaceObject](x)
+
+converter winimConverterIOleInPlaceObjectWindowlessToIOleWindow*(
+    x: ptr IOleInPlaceObjectWindowless
+): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIOleInPlaceObjectWindowlessToIUnknown*(
+    x: ptr IOleInPlaceObjectWindowless
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleInPlaceSiteExToIOleInPlaceSite*(
+    x: ptr IOleInPlaceSiteEx
+): ptr IOleInPlaceSite =
+  cast[ptr IOleInPlaceSite](x)
+
+converter winimConverterIOleInPlaceSiteExToIOleWindow*(
+    x: ptr IOleInPlaceSiteEx
+): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIOleInPlaceSiteExToIUnknown*(
+    x: ptr IOleInPlaceSiteEx
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleInPlaceSiteWindowlessToIOleInPlaceSiteEx*(
+    x: ptr IOleInPlaceSiteWindowless
+): ptr IOleInPlaceSiteEx =
+  cast[ptr IOleInPlaceSiteEx](x)
+
+converter winimConverterIOleInPlaceSiteWindowlessToIOleInPlaceSite*(
+    x: ptr IOleInPlaceSiteWindowless
+): ptr IOleInPlaceSite =
+  cast[ptr IOleInPlaceSite](x)
+
+converter winimConverterIOleInPlaceSiteWindowlessToIOleWindow*(
+    x: ptr IOleInPlaceSiteWindowless
+): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIOleInPlaceSiteWindowlessToIUnknown*(
+    x: ptr IOleInPlaceSiteWindowless
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIViewObjectExToIViewObject2*(
+    x: ptr IViewObjectEx
+): ptr IViewObject2 =
+  cast[ptr IViewObject2](x)
+
+converter winimConverterIViewObjectExToIViewObject*(
+    x: ptr IViewObjectEx
+): ptr IViewObject =
+  cast[ptr IViewObject](x)
+
+converter winimConverterIViewObjectExToIUnknown*(x: ptr IViewObjectEx): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleUndoUnitToIUnknown*(x: ptr IOleUndoUnit): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleParentUndoUnitToIOleUndoUnit*(
+    x: ptr IOleParentUndoUnit
+): ptr IOleUndoUnit =
+  cast[ptr IOleUndoUnit](x)
+
+converter winimConverterIOleParentUndoUnitToIUnknown*(
+    x: ptr IOleParentUndoUnit
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumOleUndoUnitsToIUnknown*(
+    x: ptr IEnumOleUndoUnits
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleUndoManagerToIUnknown*(
+    x: ptr IOleUndoManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPointerInactiveToIUnknown*(
+    x: ptr IPointerInactive
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectWithSiteToIUnknown*(
+    x: ptr IObjectWithSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPerPropertyBrowsingToIUnknown*(
+    x: ptr IPerPropertyBrowsing
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyBag2ToIUnknown*(x: ptr IPropertyBag2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistPropertyBag2ToIPersist*(
+    x: ptr IPersistPropertyBag2
+): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterIPersistPropertyBag2ToIUnknown*(
+    x: ptr IPersistPropertyBag2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAdviseSinkExToIAdviseSink*(
+    x: ptr IAdviseSinkEx
+): ptr IAdviseSink =
+  cast[ptr IAdviseSink](x)
+
+converter winimConverterIAdviseSinkExToIUnknown*(x: ptr IAdviseSinkEx): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIQuickActivateToIUnknown*(x: ptr IQuickActivate): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumGUIDToIUnknown*(x: ptr IEnumGUID): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumCATEGORYINFOToIUnknown*(
+    x: ptr IEnumCATEGORYINFO
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICatRegisterToIUnknown*(x: ptr ICatRegister): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICatInformationToIUnknown*(
+    x: ptr ICatInformation
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleDocumentToIUnknown*(x: ptr IOleDocument): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleDocumentSiteToIUnknown*(
+    x: ptr IOleDocumentSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleDocumentViewToIUnknown*(
+    x: ptr IOleDocumentView
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumOleDocumentViewsToIUnknown*(
+    x: ptr IEnumOleDocumentViews
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIContinueCallbackToIUnknown*(
+    x: ptr IContinueCallback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPrintToIUnknown*(x: ptr IPrint): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleCommandTargetToIUnknown*(
+    x: ptr IOleCommandTarget
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIZoomEventsToIUnknown*(x: ptr IZoomEvents): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIProtectFocusToIUnknown*(x: ptr IProtectFocus): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIProtectedModeMenuServicesToIUnknown*(
+    x: ptr IProtectedModeMenuServices
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWebBrowserToIDispatch*(x: ptr IWebBrowser): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIWebBrowserToIUnknown*(x: ptr IWebBrowser): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDWebBrowserEventsToIDispatch*(
+    x: ptr DWebBrowserEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDWebBrowserEventsToIUnknown*(
+    x: ptr DWebBrowserEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWebBrowserAppToIWebBrowser*(
+    x: ptr IWebBrowserApp
+): ptr IWebBrowser =
+  cast[ptr IWebBrowser](x)
+
+converter winimConverterIWebBrowserAppToIDispatch*(
+    x: ptr IWebBrowserApp
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIWebBrowserAppToIUnknown*(x: ptr IWebBrowserApp): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWebBrowser2ToIWebBrowserApp*(
+    x: ptr IWebBrowser2
+): ptr IWebBrowserApp =
+  cast[ptr IWebBrowserApp](x)
+
+converter winimConverterIWebBrowser2ToIWebBrowser*(
+    x: ptr IWebBrowser2
+): ptr IWebBrowser =
+  cast[ptr IWebBrowser](x)
+
+converter winimConverterIWebBrowser2ToIDispatch*(x: ptr IWebBrowser2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIWebBrowser2ToIUnknown*(x: ptr IWebBrowser2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDWebBrowserEvents2ToIDispatch*(
+    x: ptr DWebBrowserEvents2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDWebBrowserEvents2ToIUnknown*(
+    x: ptr DWebBrowserEvents2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDShellWindowsEventsToIDispatch*(
+    x: ptr DShellWindowsEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDShellWindowsEventsToIUnknown*(
+    x: ptr DShellWindowsEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellWindowsToIDispatch*(x: ptr IShellWindows): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellWindowsToIUnknown*(x: ptr IShellWindows): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellUIHelperToIDispatch*(
+    x: ptr IShellUIHelper
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellUIHelperToIUnknown*(x: ptr IShellUIHelper): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellUIHelper2ToIShellUIHelper*(
+    x: ptr IShellUIHelper2
+): ptr IShellUIHelper =
+  cast[ptr IShellUIHelper](x)
+
+converter winimConverterIShellUIHelper2ToIDispatch*(
+    x: ptr IShellUIHelper2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellUIHelper2ToIUnknown*(
+    x: ptr IShellUIHelper2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDShellNameSpaceEventsToIDispatch*(
+    x: ptr DShellNameSpaceEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDShellNameSpaceEventsToIUnknown*(
+    x: ptr DShellNameSpaceEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellFavoritesNameSpaceToIDispatch*(
+    x: ptr IShellFavoritesNameSpace
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellFavoritesNameSpaceToIUnknown*(
+    x: ptr IShellFavoritesNameSpace
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellNameSpaceToIShellFavoritesNameSpace*(
+    x: ptr IShellNameSpace
+): ptr IShellFavoritesNameSpace =
+  cast[ptr IShellFavoritesNameSpace](x)
+
+converter winimConverterIShellNameSpaceToIDispatch*(
+    x: ptr IShellNameSpace
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellNameSpaceToIUnknown*(
+    x: ptr IShellNameSpace
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIScriptErrorListToIDispatch*(
+    x: ptr IScriptErrorList
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIScriptErrorListToIUnknown*(
+    x: ptr IScriptErrorList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISearchToIDispatch*(x: ptr ISearch): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISearchToIUnknown*(x: ptr ISearch): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISearchesToIDispatch*(x: ptr ISearches): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISearchesToIUnknown*(x: ptr ISearches): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISearchAssistantOCToIDispatch*(
+    x: ptr ISearchAssistantOC
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISearchAssistantOCToIUnknown*(
+    x: ptr ISearchAssistantOC
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISearchAssistantOC2ToISearchAssistantOC*(
+    x: ptr ISearchAssistantOC2
+): ptr ISearchAssistantOC =
+  cast[ptr ISearchAssistantOC](x)
+
+converter winimConverterISearchAssistantOC2ToIDispatch*(
+    x: ptr ISearchAssistantOC2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISearchAssistantOC2ToIUnknown*(
+    x: ptr ISearchAssistantOC2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISearchAssistantOC3ToISearchAssistantOC2*(
+    x: ptr ISearchAssistantOC3
+): ptr ISearchAssistantOC2 =
+  cast[ptr ISearchAssistantOC2](x)
+
+converter winimConverterISearchAssistantOC3ToISearchAssistantOC*(
+    x: ptr ISearchAssistantOC3
+): ptr ISearchAssistantOC =
+  cast[ptr ISearchAssistantOC](x)
+
+converter winimConverterISearchAssistantOC3ToIDispatch*(
+    x: ptr ISearchAssistantOC3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterISearchAssistantOC3ToIUnknown*(
+    x: ptr ISearchAssistantOC3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterSearchAssistantEventsToIDispatch*(
+    x: ptr SearchAssistantEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterSearchAssistantEventsToIUnknown*(
+    x: ptr SearchAssistantEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRichChunkToIUnknown*(x: ptr IRichChunk): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIConditionToIPersistStream*(
+    x: ptr ICondition
+): ptr IPersistStream =
+  cast[ptr IPersistStream](x)
+
+converter winimConverterIConditionToIPersist*(x: ptr ICondition): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterIConditionToIUnknown*(x: ptr ICondition): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICondition2ToICondition*(x: ptr ICondition2): ptr ICondition =
+  cast[ptr ICondition](x)
+
+converter winimConverterICondition2ToIPersistStream*(
+    x: ptr ICondition2
+): ptr IPersistStream =
+  cast[ptr IPersistStream](x)
+
+converter winimConverterICondition2ToIPersist*(x: ptr ICondition2): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterICondition2ToIUnknown*(x: ptr ICondition2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInitializeWithFileToIUnknown*(
+    x: ptr IInitializeWithFile
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInitializeWithStreamToIUnknown*(
+    x: ptr IInitializeWithStream
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyStoreToIUnknown*(x: ptr IPropertyStore): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINamedPropertyStoreToIUnknown*(
+    x: ptr INamedPropertyStore
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectWithPropertyKeyToIUnknown*(
+    x: ptr IObjectWithPropertyKey
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyChangeToIObjectWithPropertyKey*(
+    x: ptr IPropertyChange
+): ptr IObjectWithPropertyKey =
+  cast[ptr IObjectWithPropertyKey](x)
+
+converter winimConverterIPropertyChangeToIUnknown*(
+    x: ptr IPropertyChange
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyChangeArrayToIUnknown*(
+    x: ptr IPropertyChangeArray
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyStoreCapabilitiesToIUnknown*(
+    x: ptr IPropertyStoreCapabilities
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyStoreCacheToIPropertyStore*(
+    x: ptr IPropertyStoreCache
+): ptr IPropertyStore =
+  cast[ptr IPropertyStore](x)
+
+converter winimConverterIPropertyStoreCacheToIUnknown*(
+    x: ptr IPropertyStoreCache
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyEnumTypeToIUnknown*(
+    x: ptr IPropertyEnumType
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyEnumType2ToIPropertyEnumType*(
+    x: ptr IPropertyEnumType2
+): ptr IPropertyEnumType =
+  cast[ptr IPropertyEnumType](x)
+
+converter winimConverterIPropertyEnumType2ToIUnknown*(
+    x: ptr IPropertyEnumType2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyEnumTypeListToIUnknown*(
+    x: ptr IPropertyEnumTypeList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyDescriptionToIUnknown*(
+    x: ptr IPropertyDescription
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyDescription2ToIPropertyDescription*(
+    x: ptr IPropertyDescription2
+): ptr IPropertyDescription =
+  cast[ptr IPropertyDescription](x)
+
+converter winimConverterIPropertyDescription2ToIUnknown*(
+    x: ptr IPropertyDescription2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyDescriptionAliasInfoToIPropertyDescription*(
+    x: ptr IPropertyDescriptionAliasInfo
+): ptr IPropertyDescription =
+  cast[ptr IPropertyDescription](x)
+
+converter winimConverterIPropertyDescriptionAliasInfoToIUnknown*(
+    x: ptr IPropertyDescriptionAliasInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyDescriptionSearchInfoToIPropertyDescription*(
+    x: ptr IPropertyDescriptionSearchInfo
+): ptr IPropertyDescription =
+  cast[ptr IPropertyDescription](x)
+
+converter winimConverterIPropertyDescriptionSearchInfoToIUnknown*(
+    x: ptr IPropertyDescriptionSearchInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyDescriptionRelatedPropertyInfoToIPropertyDescription*(
+    x: ptr IPropertyDescriptionRelatedPropertyInfo
+): ptr IPropertyDescription =
+  cast[ptr IPropertyDescription](x)
+
+converter winimConverterIPropertyDescriptionRelatedPropertyInfoToIUnknown*(
+    x: ptr IPropertyDescriptionRelatedPropertyInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertySystemToIUnknown*(
+    x: ptr IPropertySystem
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyDescriptionListToIUnknown*(
+    x: ptr IPropertyDescriptionList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyStoreFactoryToIUnknown*(
+    x: ptr IPropertyStoreFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDelayedPropertyStoreFactoryToIPropertyStoreFactory*(
+    x: ptr IDelayedPropertyStoreFactory
+): ptr IPropertyStoreFactory =
+  cast[ptr IPropertyStoreFactory](x)
+
+converter winimConverterIDelayedPropertyStoreFactoryToIUnknown*(
+    x: ptr IDelayedPropertyStoreFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistSerializedPropStorageToIUnknown*(
+    x: ptr IPersistSerializedPropStorage
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistSerializedPropStorage2ToIPersistSerializedPropStorage*(
+    x: ptr IPersistSerializedPropStorage2
+): ptr IPersistSerializedPropStorage =
+  cast[ptr IPersistSerializedPropStorage](x)
+
+converter winimConverterIPersistSerializedPropStorage2ToIUnknown*(
+    x: ptr IPersistSerializedPropStorage2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertySystemChangeNotifyToIUnknown*(
+    x: ptr IPropertySystemChangeNotify
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICreateObjectToIUnknown*(x: ptr ICreateObject): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
 when winimUnicode:
-  proc URLOpenStream*(P1: LPUNKNOWN, P2: LPCWSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLOpenStreamW".}
-  proc URLOpenPullStream*(P1: LPUNKNOWN, P2: LPCWSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLOpenPullStreamW".}
-  proc URLDownloadToFile*(P1: LPUNKNOWN, P2: LPCWSTR, P3: LPCWSTR, P4: DWORD, P5: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLDownloadToFileW".}
-  proc URLDownloadToCacheFile*(P1: LPUNKNOWN, P2: LPCWSTR, P3: LPWSTR, P4: DWORD, P5: DWORD, P6: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLDownloadToCacheFileW".}
-  proc URLOpenBlockingStream*(P1: LPUNKNOWN, P2: LPCWSTR, P3: ptr LPSTREAM, P4: DWORD, P5: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLOpenBlockingStreamW".}
-  proc IsLoggingEnabled*(pwszUrl: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "urlmon", importc: "IsLoggingEnabledW".}
+  proc URLOpenStream*(
+    P1: LPUNKNOWN, P2: LPCWSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK
+  ): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLOpenStreamW".}
+
+  proc URLOpenPullStream*(
+    P1: LPUNKNOWN, P2: LPCWSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK
+  ): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLOpenPullStreamW".}
+
+  proc URLDownloadToFile*(
+    P1: LPUNKNOWN, P2: LPCWSTR, P3: LPCWSTR, P4: DWORD, P5: LPBINDSTATUSCALLBACK
+  ): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLDownloadToFileW".}
+
+  proc URLDownloadToCacheFile*(
+    P1: LPUNKNOWN,
+    P2: LPCWSTR,
+    P3: LPWSTR,
+    P4: DWORD,
+    P5: DWORD,
+    P6: LPBINDSTATUSCALLBACK,
+  ): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLDownloadToCacheFileW".}
+
+  proc URLOpenBlockingStream*(
+    P1: LPUNKNOWN, P2: LPCWSTR, P3: ptr LPSTREAM, P4: DWORD, P5: LPBINDSTATUSCALLBACK
+  ): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLOpenBlockingStreamW".}
+
+  proc IsLoggingEnabled*(
+    pwszUrl: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "urlmon", importc: "IsLoggingEnabledW".}
+
 when winimAnsi:
-  proc URLOpenStream*(P1: LPUNKNOWN, P2: LPCSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLOpenStreamA".}
-  proc URLOpenPullStream*(P1: LPUNKNOWN, P2: LPCSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLOpenPullStreamA".}
-  proc URLDownloadToFile*(P1: LPUNKNOWN, P2: LPCSTR, P3: LPCSTR, P4: DWORD, P5: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLDownloadToFileA".}
-  proc URLDownloadToCacheFile*(P1: LPUNKNOWN, P2: LPCSTR, P3: LPSTR, P4: DWORD, P5: DWORD, P6: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLDownloadToCacheFileA".}
-  proc URLOpenBlockingStream*(P1: LPUNKNOWN, P2: LPCSTR, P3: ptr LPSTREAM, P4: DWORD, P5: LPBINDSTATUSCALLBACK): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLOpenBlockingStreamA".}
-  proc IsLoggingEnabled*(pszUrl: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "urlmon", importc: "IsLoggingEnabledA".}
+  proc URLOpenStream*(
+    P1: LPUNKNOWN, P2: LPCSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK
+  ): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLOpenStreamA".}
+
+  proc URLOpenPullStream*(
+    P1: LPUNKNOWN, P2: LPCSTR, P3: DWORD, P4: LPBINDSTATUSCALLBACK
+  ): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLOpenPullStreamA".}
+
+  proc URLDownloadToFile*(
+    P1: LPUNKNOWN, P2: LPCSTR, P3: LPCSTR, P4: DWORD, P5: LPBINDSTATUSCALLBACK
+  ): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLDownloadToFileA".}
+
+  proc URLDownloadToCacheFile*(
+    P1: LPUNKNOWN, P2: LPCSTR, P3: LPSTR, P4: DWORD, P5: DWORD, P6: LPBINDSTATUSCALLBACK
+  ): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLDownloadToCacheFileA".}
+
+  proc URLOpenBlockingStream*(
+    P1: LPUNKNOWN, P2: LPCSTR, P3: ptr LPSTREAM, P4: DWORD, P5: LPBINDSTATUSCALLBACK
+  ): HRESULT {.winapi, stdcall, dynlib: "urlmon", importc: "URLOpenBlockingStreamA".}
+
+  proc IsLoggingEnabled*(
+    pszUrl: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "urlmon", importc: "IsLoggingEnabledA".}
--- a/semicongine/thirdparty/winim/winim/inc/objext.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/objext.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -36,43 +36,104 @@
     dwMSAASignature*: DWORD
     cchWText*: DWORD
     pszWText*: LPWSTR
+
   LPMSAAMENUINFO* = ptr MSAAMENUINFO
   IAccessible* {.pure.} = object
     lpVtbl*: ptr IAccessibleVtbl
+
   IAccessibleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_accParent*: proc(self: ptr IAccessible, ppdispParent: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_accChildCount*: proc(self: ptr IAccessible, pcountChildren: ptr LONG): HRESULT {.stdcall.}
-    get_accChild*: proc(self: ptr IAccessible, varChildID: VARIANT, ppdispChild: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_accName*: proc(self: ptr IAccessible, varID: VARIANT, pszName: ptr BSTR): HRESULT {.stdcall.}
-    get_accValue*: proc(self: ptr IAccessible, varID: VARIANT, pszValue: ptr BSTR): HRESULT {.stdcall.}
-    get_accDescription*: proc(self: ptr IAccessible, varID: VARIANT, pszDescription: ptr BSTR): HRESULT {.stdcall.}
-    get_accRole*: proc(self: ptr IAccessible, varID: VARIANT, pvarRole: ptr VARIANT): HRESULT {.stdcall.}
-    get_accState*: proc(self: ptr IAccessible, varID: VARIANT, pvarState: ptr VARIANT): HRESULT {.stdcall.}
-    get_accHelp*: proc(self: ptr IAccessible, varID: VARIANT, pszHelp: ptr BSTR): HRESULT {.stdcall.}
-    get_accHelpTopic*: proc(self: ptr IAccessible, pszHelpFile: ptr BSTR, varID: VARIANT, pidTopic: ptr LONG): HRESULT {.stdcall.}
-    get_accKeyboardShortcut*: proc(self: ptr IAccessible, varID: VARIANT, pszKeyboardShortcut: ptr BSTR): HRESULT {.stdcall.}
+    get_accParent*:
+      proc(self: ptr IAccessible, ppdispParent: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_accChildCount*:
+      proc(self: ptr IAccessible, pcountChildren: ptr LONG): HRESULT {.stdcall.}
+    get_accChild*: proc(
+      self: ptr IAccessible, varChildID: VARIANT, ppdispChild: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_accName*: proc(
+      self: ptr IAccessible, varID: VARIANT, pszName: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_accValue*: proc(
+      self: ptr IAccessible, varID: VARIANT, pszValue: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_accDescription*: proc(
+      self: ptr IAccessible, varID: VARIANT, pszDescription: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_accRole*: proc(
+      self: ptr IAccessible, varID: VARIANT, pvarRole: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    get_accState*: proc(
+      self: ptr IAccessible, varID: VARIANT, pvarState: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    get_accHelp*: proc(
+      self: ptr IAccessible, varID: VARIANT, pszHelp: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_accHelpTopic*: proc(
+      self: ptr IAccessible, pszHelpFile: ptr BSTR, varID: VARIANT, pidTopic: ptr LONG
+    ): HRESULT {.stdcall.}
+    get_accKeyboardShortcut*: proc(
+      self: ptr IAccessible, varID: VARIANT, pszKeyboardShortcut: ptr BSTR
+    ): HRESULT {.stdcall.}
     get_accFocus*: proc(self: ptr IAccessible, pvarID: ptr VARIANT): HRESULT {.stdcall.}
-    get_accSelection*: proc(self: ptr IAccessible, pvarID: ptr VARIANT): HRESULT {.stdcall.}
-    get_accDefaultAction*: proc(self: ptr IAccessible, varID: VARIANT, pszDefaultAction: ptr BSTR): HRESULT {.stdcall.}
-    accSelect*: proc(self: ptr IAccessible, flagsSelect: LONG, varID: VARIANT): HRESULT {.stdcall.}
-    accLocation*: proc(self: ptr IAccessible, pxLeft: ptr LONG, pyTop: ptr LONG, pcxWidth: ptr LONG, pcyHeight: ptr LONG, varID: VARIANT): HRESULT {.stdcall.}
-    accNavigate*: proc(self: ptr IAccessible, navDir: LONG, varStart: VARIANT, pvarEnd: ptr VARIANT): HRESULT {.stdcall.}
-    accHitTest*: proc(self: ptr IAccessible, xLeft: LONG, yTop: LONG, pvarID: ptr VARIANT): HRESULT {.stdcall.}
-    accDoDefaultAction*: proc(self: ptr IAccessible, varID: VARIANT): HRESULT {.stdcall.}
-    put_accName*: proc(self: ptr IAccessible, varID: VARIANT, pszName: BSTR): HRESULT {.stdcall.}
-    put_accValue*: proc(self: ptr IAccessible, varID: VARIANT, pszValue: BSTR): HRESULT {.stdcall.}
+    get_accSelection*:
+      proc(self: ptr IAccessible, pvarID: ptr VARIANT): HRESULT {.stdcall.}
+    get_accDefaultAction*: proc(
+      self: ptr IAccessible, varID: VARIANT, pszDefaultAction: ptr BSTR
+    ): HRESULT {.stdcall.}
+    accSelect*: proc(self: ptr IAccessible, flagsSelect: LONG, varID: VARIANT): HRESULT {.
+      stdcall
+    .}
+    accLocation*: proc(
+      self: ptr IAccessible,
+      pxLeft: ptr LONG,
+      pyTop: ptr LONG,
+      pcxWidth: ptr LONG,
+      pcyHeight: ptr LONG,
+      varID: VARIANT,
+    ): HRESULT {.stdcall.}
+    accNavigate*: proc(
+      self: ptr IAccessible, navDir: LONG, varStart: VARIANT, pvarEnd: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    accHitTest*: proc(
+      self: ptr IAccessible, xLeft: LONG, yTop: LONG, pvarID: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    accDoDefaultAction*:
+      proc(self: ptr IAccessible, varID: VARIANT): HRESULT {.stdcall.}
+    put_accName*:
+      proc(self: ptr IAccessible, varID: VARIANT, pszName: BSTR): HRESULT {.stdcall.}
+    put_accValue*:
+      proc(self: ptr IAccessible, varID: VARIANT, pszValue: BSTR): HRESULT {.stdcall.}
+
   LPACCESSIBLE* = ptr IAccessible
   IAccessibleHandler* {.pure.} = object
     lpVtbl*: ptr IAccessibleHandlerVtbl
+
   IAccessibleHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AccessibleObjectFromID*: proc(self: ptr IAccessibleHandler, hwnd: LONG, lObjectID: LONG, pIAccessible: ptr LPACCESSIBLE): HRESULT {.stdcall.}
+    AccessibleObjectFromID*: proc(
+      self: ptr IAccessibleHandler,
+      hwnd: LONG,
+      lObjectID: LONG,
+      pIAccessible: ptr LPACCESSIBLE,
+    ): HRESULT {.stdcall.}
+
   LPACCESSIBLEHANDLER* = ptr IAccessibleHandler
   MSAAPROPID* = GUID
   IObjectSafety* {.pure.} = object
     lpVtbl*: ptr IObjectSafetyVtbl
+
   IObjectSafetyVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetInterfaceSafetyOptions*: proc(self: ptr IObjectSafety, riid: REFIID, pdwSupportedOptions: ptr DWORD, pdwEnabledOptions: ptr DWORD): HRESULT {.stdcall.}
-    SetInterfaceSafetyOptions*: proc(self: ptr IObjectSafety, riid: REFIID, dwOptionSetMask: DWORD, dwEnabledOptions: DWORD): HRESULT {.stdcall.}
+    GetInterfaceSafetyOptions*: proc(
+      self: ptr IObjectSafety,
+      riid: REFIID,
+      pdwSupportedOptions: ptr DWORD,
+      pdwEnabledOptions: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    SetInterfaceSafetyOptions*: proc(
+      self: ptr IObjectSafety,
+      riid: REFIID,
+      dwOptionSetMask: DWORD,
+      dwEnabledOptions: DWORD,
+    ): HRESULT {.stdcall.}
+
   LPOBJECTSAFETY* = ptr IObjectSafety
   OCPFIPARAMS* {.pure.} = object
     cbStructSize*: ULONG
@@ -86,6 +147,7 @@
     lpPages*: ptr CLSID
     lcid*: LCID
     dispidInitialProperty*: DISPID
+
   LPOCPFIPARAMS* = ptr OCPFIPARAMS
   FONTDESC* {.pure.} = object
     cbSizeofstruct*: UINT
@@ -96,27 +158,34 @@
     fItalic*: WINBOOL
     fUnderline*: WINBOOL
     fStrikethrough*: WINBOOL
+
   LPFONTDESC* = ptr FONTDESC
   PICTDESC_UNION1_bmp* {.pure.} = object
     hbitmap*: HBITMAP
     hpal*: HPALETTE
+
   PICTDESC_UNION1_wmf* {.pure.} = object
     hmeta*: HMETAFILE
     xExt*: int32
     yExt*: int32
+
   PICTDESC_UNION1_icon* {.pure.} = object
     hicon*: HICON
+
   PICTDESC_UNION1_emf* {.pure.} = object
     hemf*: HENHMETAFILE
+
   PICTDESC_UNION1* {.pure, union.} = object
     bmp*: PICTDESC_UNION1_bmp
     wmf*: PICTDESC_UNION1_wmf
     icon*: PICTDESC_UNION1_icon
     emf*: PICTDESC_UNION1_emf
+
   PICTDESC* {.pure.} = object
     cbSizeofstruct*: UINT
     picType*: UINT
     union1*: PICTDESC_UNION1
+
   LPPICTDESC* = ptr PICTDESC
   OLE_XPOS_CONTAINER* = float32
   OLE_YPOS_CONTAINER* = float32
@@ -127,75 +196,177 @@
   OLE_ENABLEDEFAULTBOOL* = VARIANT_BOOL
   IActiveScriptParse64* {.pure.} = object
     lpVtbl*: ptr IActiveScriptParse64Vtbl
+
   IActiveScriptParse64Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
     InitNew*: proc(self: ptr IActiveScriptParse64): HRESULT {.stdcall.}
-    AddScriptlet*: proc(self: ptr IActiveScriptParse64, pstrDefaultName: LPCOLESTR, pstrCode: LPCOLESTR, pstrItemName: LPCOLESTR, pstrSubItemName: LPCOLESTR, pstrEventName: LPCOLESTR, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORDLONG, ulStartingLineNumber: ULONG, dwFlags: DWORD, pbstrName: ptr BSTR, pexcepinfo: ptr EXCEPINFO): HRESULT {.stdcall.}
-    ParseScriptText*: proc(self: ptr IActiveScriptParse64, pstrCode: LPCOLESTR, pstrItemName: LPCOLESTR, punkContext: ptr IUnknown, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORDLONG, ulStartingLineNumber: ULONG, dwFlags: DWORD, pvarResult: ptr VARIANT, pexcepinfo: ptr EXCEPINFO): HRESULT {.stdcall.}
+    AddScriptlet*: proc(
+      self: ptr IActiveScriptParse64,
+      pstrDefaultName: LPCOLESTR,
+      pstrCode: LPCOLESTR,
+      pstrItemName: LPCOLESTR,
+      pstrSubItemName: LPCOLESTR,
+      pstrEventName: LPCOLESTR,
+      pstrDelimiter: LPCOLESTR,
+      dwSourceContextCookie: DWORDLONG,
+      ulStartingLineNumber: ULONG,
+      dwFlags: DWORD,
+      pbstrName: ptr BSTR,
+      pexcepinfo: ptr EXCEPINFO,
+    ): HRESULT {.stdcall.}
+    ParseScriptText*: proc(
+      self: ptr IActiveScriptParse64,
+      pstrCode: LPCOLESTR,
+      pstrItemName: LPCOLESTR,
+      punkContext: ptr IUnknown,
+      pstrDelimiter: LPCOLESTR,
+      dwSourceContextCookie: DWORDLONG,
+      ulStartingLineNumber: ULONG,
+      dwFlags: DWORD,
+      pvarResult: ptr VARIANT,
+      pexcepinfo: ptr EXCEPINFO,
+    ): HRESULT {.stdcall.}
+
 when winimCpu64:
-  type
-    IActiveScriptParse* = IActiveScriptParse64
+  type IActiveScriptParse* = IActiveScriptParse64
 type
   IActiveScriptParse32* {.pure.} = object
     lpVtbl*: ptr IActiveScriptParse32Vtbl
+
   IActiveScriptParse32Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
     InitNew*: proc(self: ptr IActiveScriptParse32): HRESULT {.stdcall.}
-    AddScriptlet*: proc(self: ptr IActiveScriptParse32, pstrDefaultName: LPCOLESTR, pstrCode: LPCOLESTR, pstrItemName: LPCOLESTR, pstrSubItemName: LPCOLESTR, pstrEventName: LPCOLESTR, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORD, ulStartingLineNumber: ULONG, dwFlags: DWORD, pbstrName: ptr BSTR, pexcepinfo: ptr EXCEPINFO): HRESULT {.stdcall.}
-    ParseScriptText*: proc(self: ptr IActiveScriptParse32, pstrCode: LPCOLESTR, pstrItemName: LPCOLESTR, punkContext: ptr IUnknown, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORD, ulStartingLineNumber: ULONG, dwFlags: DWORD, pvarResult: ptr VARIANT, pexcepinfo: ptr EXCEPINFO): HRESULT {.stdcall.}
+    AddScriptlet*: proc(
+      self: ptr IActiveScriptParse32,
+      pstrDefaultName: LPCOLESTR,
+      pstrCode: LPCOLESTR,
+      pstrItemName: LPCOLESTR,
+      pstrSubItemName: LPCOLESTR,
+      pstrEventName: LPCOLESTR,
+      pstrDelimiter: LPCOLESTR,
+      dwSourceContextCookie: DWORD,
+      ulStartingLineNumber: ULONG,
+      dwFlags: DWORD,
+      pbstrName: ptr BSTR,
+      pexcepinfo: ptr EXCEPINFO,
+    ): HRESULT {.stdcall.}
+    ParseScriptText*: proc(
+      self: ptr IActiveScriptParse32,
+      pstrCode: LPCOLESTR,
+      pstrItemName: LPCOLESTR,
+      punkContext: ptr IUnknown,
+      pstrDelimiter: LPCOLESTR,
+      dwSourceContextCookie: DWORD,
+      ulStartingLineNumber: ULONG,
+      dwFlags: DWORD,
+      pvarResult: ptr VARIANT,
+      pexcepinfo: ptr EXCEPINFO,
+    ): HRESULT {.stdcall.}
+
 when winimCpu32:
-  type
-    IActiveScriptParse* = IActiveScriptParse32
+  type IActiveScriptParse* = IActiveScriptParse32
 type
   PIActiveScriptParse* = ptr IActiveScriptParse
   IActiveScriptParseProcedureOld64* {.pure.} = object
     lpVtbl*: ptr IActiveScriptParseProcedureOld64Vtbl
+
   IActiveScriptParseProcedureOld64Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ParseProcedureText*: proc(self: ptr IActiveScriptParseProcedureOld64, pstrCode: LPCOLESTR, pstrFormalParams: LPCOLESTR, pstrItemName: LPCOLESTR, punkContext: ptr IUnknown, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORDLONG, ulStartingLineNumber: ULONG, dwFlags: DWORD, ppdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    ParseProcedureText*: proc(
+      self: ptr IActiveScriptParseProcedureOld64,
+      pstrCode: LPCOLESTR,
+      pstrFormalParams: LPCOLESTR,
+      pstrItemName: LPCOLESTR,
+      punkContext: ptr IUnknown,
+      pstrDelimiter: LPCOLESTR,
+      dwSourceContextCookie: DWORDLONG,
+      ulStartingLineNumber: ULONG,
+      dwFlags: DWORD,
+      ppdisp: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
+
 when winimCpu64:
-  type
-    IActiveScriptParseProcedureOld* = IActiveScriptParseProcedureOld64
+  type IActiveScriptParseProcedureOld* = IActiveScriptParseProcedureOld64
 type
   IActiveScriptParseProcedureOld32* {.pure.} = object
     lpVtbl*: ptr IActiveScriptParseProcedureOld32Vtbl
+
   IActiveScriptParseProcedureOld32Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ParseProcedureText*: proc(self: ptr IActiveScriptParseProcedureOld32, pstrCode: LPCOLESTR, pstrFormalParams: LPCOLESTR, pstrItemName: LPCOLESTR, punkContext: ptr IUnknown, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORD, ulStartingLineNumber: ULONG, dwFlags: DWORD, ppdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    ParseProcedureText*: proc(
+      self: ptr IActiveScriptParseProcedureOld32,
+      pstrCode: LPCOLESTR,
+      pstrFormalParams: LPCOLESTR,
+      pstrItemName: LPCOLESTR,
+      punkContext: ptr IUnknown,
+      pstrDelimiter: LPCOLESTR,
+      dwSourceContextCookie: DWORD,
+      ulStartingLineNumber: ULONG,
+      dwFlags: DWORD,
+      ppdisp: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
+
 when winimCpu32:
-  type
-    IActiveScriptParseProcedureOld* = IActiveScriptParseProcedureOld32
+  type IActiveScriptParseProcedureOld* = IActiveScriptParseProcedureOld32
 type
   PIActiveScriptParseProcedureOld* = ptr IActiveScriptParseProcedureOld
   IActiveScriptParseProcedure64* {.pure.} = object
     lpVtbl*: ptr IActiveScriptParseProcedure64Vtbl
+
   IActiveScriptParseProcedure64Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ParseProcedureText*: proc(self: ptr IActiveScriptParseProcedure64, pstrCode: LPCOLESTR, pstrFormalParams: LPCOLESTR, pstrProcedureName: LPCOLESTR, pstrItemName: LPCOLESTR, punkContext: ptr IUnknown, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORDLONG, ulStartingLineNumber: ULONG, dwFlags: DWORD, ppdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    ParseProcedureText*: proc(
+      self: ptr IActiveScriptParseProcedure64,
+      pstrCode: LPCOLESTR,
+      pstrFormalParams: LPCOLESTR,
+      pstrProcedureName: LPCOLESTR,
+      pstrItemName: LPCOLESTR,
+      punkContext: ptr IUnknown,
+      pstrDelimiter: LPCOLESTR,
+      dwSourceContextCookie: DWORDLONG,
+      ulStartingLineNumber: ULONG,
+      dwFlags: DWORD,
+      ppdisp: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
+
 when winimCpu64:
-  type
-    IActiveScriptParseProcedure* = IActiveScriptParseProcedure64
+  type IActiveScriptParseProcedure* = IActiveScriptParseProcedure64
 type
   IActiveScriptParseProcedure32* {.pure.} = object
     lpVtbl*: ptr IActiveScriptParseProcedure32Vtbl
+
   IActiveScriptParseProcedure32Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ParseProcedureText*: proc(self: ptr IActiveScriptParseProcedure32, pstrCode: LPCOLESTR, pstrFormalParams: LPCOLESTR, pstrProcedureName: LPCOLESTR, pstrItemName: LPCOLESTR, punkContext: ptr IUnknown, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORD, ulStartingLineNumber: ULONG, dwFlags: DWORD, ppdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
+    ParseProcedureText*: proc(
+      self: ptr IActiveScriptParseProcedure32,
+      pstrCode: LPCOLESTR,
+      pstrFormalParams: LPCOLESTR,
+      pstrProcedureName: LPCOLESTR,
+      pstrItemName: LPCOLESTR,
+      punkContext: ptr IUnknown,
+      pstrDelimiter: LPCOLESTR,
+      dwSourceContextCookie: DWORD,
+      ulStartingLineNumber: ULONG,
+      dwFlags: DWORD,
+      ppdisp: ptr ptr IDispatch,
+    ): HRESULT {.stdcall.}
+
 when winimCpu32:
-  type
-    IActiveScriptParseProcedure* = IActiveScriptParseProcedure32
+  type IActiveScriptParseProcedure* = IActiveScriptParseProcedure32
 type
   PIActiveScriptParseProcedure* = ptr IActiveScriptParseProcedure
   IActiveScriptParseProcedure2_64* {.pure.} = object
     lpVtbl*: ptr IActiveScriptParseProcedure2_64Vtbl
+
   IActiveScriptParseProcedure2_64Vtbl* {.pure, inheritable.} = object of IActiveScriptParseProcedure64Vtbl
+
 when winimCpu64:
-  type
-    IActiveScriptParseProcedure2* = IActiveScriptParseProcedure2_64
+  type IActiveScriptParseProcedure2* = IActiveScriptParseProcedure2_64
 type
   IActiveScriptParseProcedure2_32* {.pure.} = object
     lpVtbl*: ptr IActiveScriptParseProcedure2_32Vtbl
+
   IActiveScriptParseProcedure2_32Vtbl* {.pure, inheritable.} = object of IActiveScriptParseProcedure32Vtbl
+
 when winimCpu32:
-  type
-    IActiveScriptParseProcedure2* = IActiveScriptParseProcedure2_32
+  type IActiveScriptParseProcedure2* = IActiveScriptParseProcedure2_32
 type
   PIActiveScriptParseProcedure2* = ptr IActiveScriptParseProcedure2
-  LPFNOLEUIHOOK* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT {.stdcall.}
+  LPFNOLEUIHOOK* = proc(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT {.stdcall.}
   TOLEUIINSERTOBJECTW* {.pure.} = object
     cbStruct*: DWORD
     dwFlags*: DWORD
@@ -219,6 +390,7 @@
     ppvObj*: ptr LPVOID
     sc*: SCODE
     hMetaPict*: HGLOBAL
+
   POLEUIINSERTOBJECTW* = ptr TOLEUIINSERTOBJECTW
   LPOLEUIINSERTOBJECTW* = ptr TOLEUIINSERTOBJECTW
   TOLEUIINSERTOBJECTA* {.pure.} = object
@@ -244,6 +416,7 @@
     ppvObj*: ptr LPVOID
     sc*: SCODE
     hMetaPict*: HGLOBAL
+
   POLEUIINSERTOBJECTA* = ptr TOLEUIINSERTOBJECTA
   LPOLEUIINSERTOBJECTA* = ptr TOLEUIINSERTOBJECTA
   OLEUIPASTEENTRYW* {.pure.} = object
@@ -252,6 +425,7 @@
     lpstrResultText*: LPCWSTR
     dwFlags*: DWORD
     dwScratchSpace*: DWORD
+
   POLEUIPASTEENTRYW* = ptr OLEUIPASTEENTRYW
   LPOLEUIPASTEENTRYW* = ptr OLEUIPASTEENTRYW
   OLEUIPASTEENTRYA* {.pure.} = object
@@ -260,6 +434,7 @@
     lpstrResultText*: LPCSTR
     dwFlags*: DWORD
     dwScratchSpace*: DWORD
+
   POLEUIPASTEENTRYA* = ptr OLEUIPASTEENTRYA
   LPOLEUIPASTEENTRYA* = ptr OLEUIPASTEENTRYA
   TOLEUIPASTESPECIALW* {.pure.} = object
@@ -283,6 +458,7 @@
     fLink*: WINBOOL
     hMetaPict*: HGLOBAL
     sizel*: SIZEL
+
   POLEUIPASTESPECIALW* = ptr TOLEUIPASTESPECIALW
   LPOLEUIPASTESPECIALW* = ptr TOLEUIPASTESPECIALW
   TOLEUIPASTESPECIALA* {.pure.} = object
@@ -306,31 +482,90 @@
     fLink*: WINBOOL
     hMetaPict*: HGLOBAL
     sizel*: SIZEL
+
   POLEUIPASTESPECIALA* = ptr TOLEUIPASTESPECIALA
   LPOLEUIPASTESPECIALA* = ptr TOLEUIPASTESPECIALA
   IOleUILinkContainerW* {.pure.} = object
     lpVtbl*: ptr IOleUILinkContainerWVtbl
+
   IOleUILinkContainerWVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetNextLink*: proc(self: ptr IOleUILinkContainerW, dwLink: DWORD): DWORD {.stdcall.}
-    SetLinkUpdateOptions*: proc(self: ptr IOleUILinkContainerW, dwLink: DWORD, dwUpdateOpt: DWORD): HRESULT {.stdcall.}
-    GetLinkUpdateOptions*: proc(self: ptr IOleUILinkContainerW, dwLink: DWORD, lpdwUpdateOpt: ptr DWORD): HRESULT {.stdcall.}
-    SetLinkSource*: proc(self: ptr IOleUILinkContainerW, dwLink: DWORD, lpszDisplayName: LPWSTR, lenFileName: ULONG, pchEaten: ptr ULONG, fValidateSource: WINBOOL): HRESULT {.stdcall.}
-    GetLinkSource*: proc(self: ptr IOleUILinkContainerW, dwLink: DWORD, lplpszDisplayName: ptr LPWSTR, lplenFileName: ptr ULONG, lplpszFullLinkType: ptr LPWSTR, lplpszShortLinkType: ptr LPWSTR, lpfSourceAvailable: ptr WINBOOL, lpfIsSelected: ptr WINBOOL): HRESULT {.stdcall.}
-    OpenLinkSource*: proc(self: ptr IOleUILinkContainerW, dwLink: DWORD): HRESULT {.stdcall.}
-    UpdateLink*: proc(self: ptr IOleUILinkContainerW, dwLink: DWORD, fErrorMessage: WINBOOL, fReserved: WINBOOL): HRESULT {.stdcall.}
-    CancelLink*: proc(self: ptr IOleUILinkContainerW, dwLink: DWORD): HRESULT {.stdcall.}
+    SetLinkUpdateOptions*: proc(
+      self: ptr IOleUILinkContainerW, dwLink: DWORD, dwUpdateOpt: DWORD
+    ): HRESULT {.stdcall.}
+    GetLinkUpdateOptions*: proc(
+      self: ptr IOleUILinkContainerW, dwLink: DWORD, lpdwUpdateOpt: ptr DWORD
+    ): HRESULT {.stdcall.}
+    SetLinkSource*: proc(
+      self: ptr IOleUILinkContainerW,
+      dwLink: DWORD,
+      lpszDisplayName: LPWSTR,
+      lenFileName: ULONG,
+      pchEaten: ptr ULONG,
+      fValidateSource: WINBOOL,
+    ): HRESULT {.stdcall.}
+    GetLinkSource*: proc(
+      self: ptr IOleUILinkContainerW,
+      dwLink: DWORD,
+      lplpszDisplayName: ptr LPWSTR,
+      lplenFileName: ptr ULONG,
+      lplpszFullLinkType: ptr LPWSTR,
+      lplpszShortLinkType: ptr LPWSTR,
+      lpfSourceAvailable: ptr WINBOOL,
+      lpfIsSelected: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+    OpenLinkSource*:
+      proc(self: ptr IOleUILinkContainerW, dwLink: DWORD): HRESULT {.stdcall.}
+    UpdateLink*: proc(
+      self: ptr IOleUILinkContainerW,
+      dwLink: DWORD,
+      fErrorMessage: WINBOOL,
+      fReserved: WINBOOL,
+    ): HRESULT {.stdcall.}
+    CancelLink*:
+      proc(self: ptr IOleUILinkContainerW, dwLink: DWORD): HRESULT {.stdcall.}
+
   LPOLEUILINKCONTAINERW* = ptr IOleUILinkContainerW
   IOleUILinkContainerA* {.pure.} = object
     lpVtbl*: ptr IOleUILinkContainerAVtbl
+
   IOleUILinkContainerAVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetNextLink*: proc(self: ptr IOleUILinkContainerA, dwLink: DWORD): DWORD {.stdcall.}
-    SetLinkUpdateOptions*: proc(self: ptr IOleUILinkContainerA, dwLink: DWORD, dwUpdateOpt: DWORD): HRESULT {.stdcall.}
-    GetLinkUpdateOptions*: proc(self: ptr IOleUILinkContainerA, dwLink: DWORD, lpdwUpdateOpt: ptr DWORD): HRESULT {.stdcall.}
-    SetLinkSource*: proc(self: ptr IOleUILinkContainerA, dwLink: DWORD, lpszDisplayName: LPSTR, lenFileName: ULONG, pchEaten: ptr ULONG, fValidateSource: WINBOOL): HRESULT {.stdcall.}
-    GetLinkSource*: proc(self: ptr IOleUILinkContainerA, dwLink: DWORD, lplpszDisplayName: ptr LPSTR, lplenFileName: ptr ULONG, lplpszFullLinkType: ptr LPSTR, lplpszShortLinkType: ptr LPSTR, lpfSourceAvailable: ptr WINBOOL, lpfIsSelected: ptr WINBOOL): HRESULT {.stdcall.}
-    OpenLinkSource*: proc(self: ptr IOleUILinkContainerA, dwLink: DWORD): HRESULT {.stdcall.}
-    UpdateLink*: proc(self: ptr IOleUILinkContainerA, dwLink: DWORD, fErrorMessage: WINBOOL, fReserved: WINBOOL): HRESULT {.stdcall.}
-    CancelLink*: proc(self: ptr IOleUILinkContainerA, dwLink: DWORD): HRESULT {.stdcall.}
+    SetLinkUpdateOptions*: proc(
+      self: ptr IOleUILinkContainerA, dwLink: DWORD, dwUpdateOpt: DWORD
+    ): HRESULT {.stdcall.}
+    GetLinkUpdateOptions*: proc(
+      self: ptr IOleUILinkContainerA, dwLink: DWORD, lpdwUpdateOpt: ptr DWORD
+    ): HRESULT {.stdcall.}
+    SetLinkSource*: proc(
+      self: ptr IOleUILinkContainerA,
+      dwLink: DWORD,
+      lpszDisplayName: LPSTR,
+      lenFileName: ULONG,
+      pchEaten: ptr ULONG,
+      fValidateSource: WINBOOL,
+    ): HRESULT {.stdcall.}
+    GetLinkSource*: proc(
+      self: ptr IOleUILinkContainerA,
+      dwLink: DWORD,
+      lplpszDisplayName: ptr LPSTR,
+      lplenFileName: ptr ULONG,
+      lplpszFullLinkType: ptr LPSTR,
+      lplpszShortLinkType: ptr LPSTR,
+      lpfSourceAvailable: ptr WINBOOL,
+      lpfIsSelected: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+    OpenLinkSource*:
+      proc(self: ptr IOleUILinkContainerA, dwLink: DWORD): HRESULT {.stdcall.}
+    UpdateLink*: proc(
+      self: ptr IOleUILinkContainerA,
+      dwLink: DWORD,
+      fErrorMessage: WINBOOL,
+      fReserved: WINBOOL,
+    ): HRESULT {.stdcall.}
+    CancelLink*:
+      proc(self: ptr IOleUILinkContainerA, dwLink: DWORD): HRESULT {.stdcall.}
+
   LPOLEUILINKCONTAINERA* = ptr IOleUILinkContainerA
   TOLEUIEDITLINKSW* {.pure.} = object
     cbStruct*: DWORD
@@ -343,6 +578,7 @@
     lpszTemplate*: LPCWSTR
     hResource*: HRSRC
     lpOleUILinkContainer*: LPOLEUILINKCONTAINERW
+
   POLEUIEDITLINKSW* = ptr TOLEUIEDITLINKSW
   LPOLEUIEDITLINKSW* = ptr TOLEUIEDITLINKSW
   TOLEUIEDITLINKSA* {.pure.} = object
@@ -356,6 +592,7 @@
     lpszTemplate*: LPCSTR
     hResource*: HRSRC
     lpOleUILinkContainer*: LPOLEUILINKCONTAINERA
+
   POLEUIEDITLINKSA* = ptr TOLEUIEDITLINKSA
   LPOLEUIEDITLINKSA* = ptr TOLEUIEDITLINKSA
   TOLEUICHANGEICONW* {.pure.} = object
@@ -372,6 +609,7 @@
     clsid*: CLSID
     szIconExe*: array[MAX_PATH, WCHAR]
     cchIconExe*: int32
+
   POLEUICHANGEICONW* = ptr TOLEUICHANGEICONW
   LPOLEUICHANGEICONW* = ptr TOLEUICHANGEICONW
   TOLEUICHANGEICONA* {.pure.} = object
@@ -388,6 +626,7 @@
     clsid*: CLSID
     szIconExe*: array[MAX_PATH, CHAR]
     cchIconExe*: int32
+
   POLEUICHANGEICONA* = ptr TOLEUICHANGEICONA
   LPOLEUICHANGEICONA* = ptr TOLEUICHANGEICONA
   TOLEUICONVERTW* {.pure.} = object
@@ -413,6 +652,7 @@
     lpszDefLabel*: LPWSTR
     cClsidExclude*: UINT
     lpClsidExclude*: LPCLSID
+
   POLEUICONVERTW* = ptr TOLEUICONVERTW
   LPOLEUICONVERTW* = ptr TOLEUICONVERTW
   TOLEUICONVERTA* {.pure.} = object
@@ -438,6 +678,7 @@
     lpszDefLabel*: LPSTR
     cClsidExclude*: UINT
     lpClsidExclude*: LPCLSID
+
   POLEUICONVERTA* = ptr TOLEUICONVERTA
   LPOLEUICONVERTA* = ptr TOLEUICONVERTA
   TOLEUIBUSYW* {.pure.} = object
@@ -452,6 +693,7 @@
     hResource*: HRSRC
     hTask*: HTASK
     lphWndDialog*: ptr HWND
+
   POLEUIBUSYW* = ptr TOLEUIBUSYW
   LPOLEUIBUSYW* = ptr TOLEUIBUSYW
   TOLEUIBUSYA* {.pure.} = object
@@ -466,6 +708,7 @@
     hResource*: HRSRC
     hTask*: HTASK
     lphWndDialog*: ptr HWND
+
   POLEUIBUSYA* = ptr TOLEUIBUSYA
   LPOLEUIBUSYA* = ptr TOLEUIBUSYA
   TOLEUICHANGESOURCEW* {.pure.} = object
@@ -486,6 +729,7 @@
     nFileLength*: ULONG
     lpszFrom*: LPWSTR
     lpszTo*: LPWSTR
+
   POLEUICHANGESOURCEW* = ptr TOLEUICHANGESOURCEW
   LPOLEUICHANGESOURCEW* = ptr TOLEUICHANGESOURCEW
   TOLEUICHANGESOURCEA* {.pure.} = object
@@ -506,35 +750,110 @@
     nFileLength*: ULONG
     lpszFrom*: LPSTR
     lpszTo*: LPSTR
+
   POLEUICHANGESOURCEA* = ptr TOLEUICHANGESOURCEA
   LPOLEUICHANGESOURCEA* = ptr TOLEUICHANGESOURCEA
   IOleUIObjInfoW* {.pure.} = object
     lpVtbl*: ptr IOleUIObjInfoWVtbl
+
   IOleUIObjInfoWVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetObjectInfo*: proc(self: ptr IOleUIObjInfoW, dwObject: DWORD, lpdwObjSize: ptr DWORD, lplpszLabel: ptr LPWSTR, lplpszType: ptr LPWSTR, lplpszShortType: ptr LPWSTR, lplpszLocation: ptr LPWSTR): HRESULT {.stdcall.}
-    GetConvertInfo*: proc(self: ptr IOleUIObjInfoW, dwObject: DWORD, lpClassID: ptr CLSID, lpwFormat: ptr WORD, lpConvertDefaultClassID: ptr CLSID, lplpClsidExclude: ptr LPCLSID, lpcClsidExclude: ptr UINT): HRESULT {.stdcall.}
-    ConvertObject*: proc(self: ptr IOleUIObjInfoW, dwObject: DWORD, clsidNew: REFCLSID): HRESULT {.stdcall.}
-    GetViewInfo*: proc(self: ptr IOleUIObjInfoW, dwObject: DWORD, phMetaPict: ptr HGLOBAL, pdvAspect: ptr DWORD, pnCurrentScale: ptr int32): HRESULT {.stdcall.}
-    SetViewInfo*: proc(self: ptr IOleUIObjInfoW, dwObject: DWORD, hMetaPict: HGLOBAL, dvAspect: DWORD, nCurrentScale: int32, bRelativeToOrig: WINBOOL): HRESULT {.stdcall.}
+    GetObjectInfo*: proc(
+      self: ptr IOleUIObjInfoW,
+      dwObject: DWORD,
+      lpdwObjSize: ptr DWORD,
+      lplpszLabel: ptr LPWSTR,
+      lplpszType: ptr LPWSTR,
+      lplpszShortType: ptr LPWSTR,
+      lplpszLocation: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+    GetConvertInfo*: proc(
+      self: ptr IOleUIObjInfoW,
+      dwObject: DWORD,
+      lpClassID: ptr CLSID,
+      lpwFormat: ptr WORD,
+      lpConvertDefaultClassID: ptr CLSID,
+      lplpClsidExclude: ptr LPCLSID,
+      lpcClsidExclude: ptr UINT,
+    ): HRESULT {.stdcall.}
+    ConvertObject*: proc(
+      self: ptr IOleUIObjInfoW, dwObject: DWORD, clsidNew: REFCLSID
+    ): HRESULT {.stdcall.}
+    GetViewInfo*: proc(
+      self: ptr IOleUIObjInfoW,
+      dwObject: DWORD,
+      phMetaPict: ptr HGLOBAL,
+      pdvAspect: ptr DWORD,
+      pnCurrentScale: ptr int32,
+    ): HRESULT {.stdcall.}
+    SetViewInfo*: proc(
+      self: ptr IOleUIObjInfoW,
+      dwObject: DWORD,
+      hMetaPict: HGLOBAL,
+      dvAspect: DWORD,
+      nCurrentScale: int32,
+      bRelativeToOrig: WINBOOL,
+    ): HRESULT {.stdcall.}
+
   LPOLEUIOBJINFOW* = ptr IOleUIObjInfoW
   IOleUIObjInfoA* {.pure.} = object
     lpVtbl*: ptr IOleUIObjInfoAVtbl
+
   IOleUIObjInfoAVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetObjectInfo*: proc(self: ptr IOleUIObjInfoA, dwObject: DWORD, lpdwObjSize: ptr DWORD, lplpszLabel: ptr LPSTR, lplpszType: ptr LPSTR, lplpszShortType: ptr LPSTR, lplpszLocation: ptr LPSTR): HRESULT {.stdcall.}
-    GetConvertInfo*: proc(self: ptr IOleUIObjInfoA, dwObject: DWORD, lpClassID: ptr CLSID, lpwFormat: ptr WORD, lpConvertDefaultClassID: ptr CLSID, lplpClsidExclude: ptr LPCLSID, lpcClsidExclude: ptr UINT): HRESULT {.stdcall.}
-    ConvertObject*: proc(self: ptr IOleUIObjInfoA, dwObject: DWORD, clsidNew: REFCLSID): HRESULT {.stdcall.}
-    GetViewInfo*: proc(self: ptr IOleUIObjInfoA, dwObject: DWORD, phMetaPict: ptr HGLOBAL, pdvAspect: ptr DWORD, pnCurrentScale: ptr int32): HRESULT {.stdcall.}
-    SetViewInfo*: proc(self: ptr IOleUIObjInfoA, dwObject: DWORD, hMetaPict: HGLOBAL, dvAspect: DWORD, nCurrentScale: int32, bRelativeToOrig: WINBOOL): HRESULT {.stdcall.}
+    GetObjectInfo*: proc(
+      self: ptr IOleUIObjInfoA,
+      dwObject: DWORD,
+      lpdwObjSize: ptr DWORD,
+      lplpszLabel: ptr LPSTR,
+      lplpszType: ptr LPSTR,
+      lplpszShortType: ptr LPSTR,
+      lplpszLocation: ptr LPSTR,
+    ): HRESULT {.stdcall.}
+    GetConvertInfo*: proc(
+      self: ptr IOleUIObjInfoA,
+      dwObject: DWORD,
+      lpClassID: ptr CLSID,
+      lpwFormat: ptr WORD,
+      lpConvertDefaultClassID: ptr CLSID,
+      lplpClsidExclude: ptr LPCLSID,
+      lpcClsidExclude: ptr UINT,
+    ): HRESULT {.stdcall.}
+    ConvertObject*: proc(
+      self: ptr IOleUIObjInfoA, dwObject: DWORD, clsidNew: REFCLSID
+    ): HRESULT {.stdcall.}
+    GetViewInfo*: proc(
+      self: ptr IOleUIObjInfoA,
+      dwObject: DWORD,
+      phMetaPict: ptr HGLOBAL,
+      pdvAspect: ptr DWORD,
+      pnCurrentScale: ptr int32,
+    ): HRESULT {.stdcall.}
+    SetViewInfo*: proc(
+      self: ptr IOleUIObjInfoA,
+      dwObject: DWORD,
+      hMetaPict: HGLOBAL,
+      dvAspect: DWORD,
+      nCurrentScale: int32,
+      bRelativeToOrig: WINBOOL,
+    ): HRESULT {.stdcall.}
+
   LPOLEUIOBJINFOA* = ptr IOleUIObjInfoA
   IOleUILinkInfoW* {.pure.} = object
     lpVtbl*: ptr IOleUILinkInfoWVtbl
+
   IOleUILinkInfoWVtbl* {.pure, inheritable.} = object of IOleUILinkContainerWVtbl
-    GetLastUpdate*: proc(self: ptr IOleUILinkInfoW, dwLink: DWORD, lpLastUpdate: ptr FILETIME): HRESULT {.stdcall.}
+    GetLastUpdate*: proc(
+      self: ptr IOleUILinkInfoW, dwLink: DWORD, lpLastUpdate: ptr FILETIME
+    ): HRESULT {.stdcall.}
+
   LPOLEUILINKINFOW* = ptr IOleUILinkInfoW
   IOleUILinkInfoA* {.pure.} = object
     lpVtbl*: ptr IOleUILinkInfoAVtbl
+
   IOleUILinkInfoAVtbl* {.pure, inheritable.} = object of IOleUILinkContainerAVtbl
-    GetLastUpdate*: proc(self: ptr IOleUILinkInfoA, dwLink: DWORD, lpLastUpdate: ptr FILETIME): HRESULT {.stdcall.}
+    GetLastUpdate*: proc(
+      self: ptr IOleUILinkInfoA, dwLink: DWORD, lpLastUpdate: ptr FILETIME
+    ): HRESULT {.stdcall.}
+
   LPOLEUILINKINFOA* = ptr IOleUILinkInfoA
   LPOLEUIGNRLPROPSW* = ptr OLEUIGNRLPROPSW
   OLEUIVIEWPROPSW* {.pure.} = object
@@ -547,6 +866,7 @@
     lpOP*: ptr OLEUIOBJECTPROPSW
     nScaleMin*: int32
     nScaleMax*: int32
+
   LPOLEUIVIEWPROPSW* = ptr OLEUIVIEWPROPSW
   OLEUILINKPROPSW* {.pure.} = object
     cbStruct*: DWORD
@@ -556,6 +876,7 @@
     lCustData*: LPARAM
     dwReserved2*: array[3, DWORD]
     lpOP*: ptr OLEUIOBJECTPROPSW
+
   LPOLEUILINKPROPSW* = ptr OLEUILINKPROPSW
   OLEUIOBJECTPROPSW* {.pure.} = object
     cbStruct*: DWORD
@@ -568,6 +889,7 @@
     lpGP*: LPOLEUIGNRLPROPSW
     lpVP*: LPOLEUIVIEWPROPSW
     lpLP*: LPOLEUILINKPROPSW
+
   OLEUIGNRLPROPSW* {.pure.} = object
     cbStruct*: DWORD
     dwFlags*: DWORD
@@ -576,6 +898,7 @@
     lCustData*: LPARAM
     dwReserved2*: array[3, DWORD]
     lpOP*: ptr OLEUIOBJECTPROPSW
+
   POLEUIGNRLPROPSW* = ptr OLEUIGNRLPROPSW
   LPOLEUIGNRLPROPSA* = ptr OLEUIGNRLPROPSA
   OLEUIVIEWPROPSA* {.pure.} = object
@@ -588,6 +911,7 @@
     lpOP*: ptr OLEUIOBJECTPROPSA
     nScaleMin*: int32
     nScaleMax*: int32
+
   LPOLEUIVIEWPROPSA* = ptr OLEUIVIEWPROPSA
   OLEUILINKPROPSA* {.pure.} = object
     cbStruct*: DWORD
@@ -597,6 +921,7 @@
     lCustData*: LPARAM
     dwReserved2*: array[3, DWORD]
     lpOP*: ptr OLEUIOBJECTPROPSA
+
   LPOLEUILINKPROPSA* = ptr OLEUILINKPROPSA
   OLEUIOBJECTPROPSA* {.pure.} = object
     cbStruct*: DWORD
@@ -609,6 +934,7 @@
     lpGP*: LPOLEUIGNRLPROPSA
     lpVP*: LPOLEUIVIEWPROPSA
     lpLP*: LPOLEUILINKPROPSA
+
   OLEUIGNRLPROPSA* {.pure.} = object
     cbStruct*: DWORD
     dwFlags*: DWORD
@@ -617,6 +943,7 @@
     lCustData*: LPARAM
     dwReserved2*: array[3, DWORD]
     lpOP*: ptr OLEUIOBJECTPROPSA
+
   POLEUIGNRLPROPSA* = ptr OLEUIGNRLPROPSA
   POLEUIVIEWPROPSW* = ptr OLEUIVIEWPROPSW
   POLEUIVIEWPROPSA* = ptr OLEUIVIEWPROPSA
@@ -626,6 +953,7 @@
   LPOLEUIOBJECTPROPSW* = ptr OLEUIOBJECTPROPSW
   POLEUIOBJECTPROPSA* = ptr OLEUIOBJECTPROPSA
   LPOLEUIOBJECTPROPSA* = ptr OLEUIOBJECTPROPSA
+
 const
   LIBID_Accessibility* = DEFINE_GUID("1ea4dbf0-3c3b-11cf-810c-00aa00389b71")
   IID_IAccessibleHandler* = DEFINE_GUID("03022430-abc4-11d0-bde2-00aa001a1953")
@@ -807,7 +1135,9 @@
   triUnchecked* = 0
   triChecked* = 1
   triGray* = 2
-template STD_CTL_SCODE*(n: untyped): HRESULT = MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, n)
+template STD_CTL_SCODE*(n: untyped): HRESULT =
+  MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, n)
+
 const
   CTL_E_ILLEGALFUNCTIONCALL* = STD_CTL_SCODE(5)
   CTL_E_OVERFLOW* = STD_CTL_SCODE(6)
@@ -849,28 +1179,30 @@
   CTL_E_CANTSAVEFILETOTEMP* = STD_CTL_SCODE(735)
   CTL_E_SEARCHTEXTNOTFOUND* = STD_CTL_SCODE(744)
   CTL_E_REPLACEMENTSTOOLONG* = STD_CTL_SCODE(746)
-template CUSTOM_CTL_SCODE*(n: untyped): HRESULT = MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, n)
+template CUSTOM_CTL_SCODE*(n: untyped): HRESULT =
+  MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, n)
+
 const
   CTL_E_CUSTOM_FIRST* = CUSTOM_CTL_SCODE(600)
-  CONNECT_E_FIRST* = MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x0200)
-  CONNECT_E_LAST* = MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x020F)
-  CONNECT_S_FIRST* = MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x0200)
-  CONNECT_S_LAST* = MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x020F)
-  CONNECT_E_NOCONNECTION* = CONNECT_E_FIRST+0
-  CONNECT_E_ADVISELIMIT* = CONNECT_E_FIRST+1
-  CONNECT_E_CANNOTCONNECT* = CONNECT_E_FIRST+2
-  CONNECT_E_OVERRIDDEN* = CONNECT_E_FIRST+3
-  SELFREG_E_FIRST* = MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x0200)
-  SELFREG_E_LAST* = MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x020F)
-  SELFREG_S_FIRST* = MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x0200)
-  SELFREG_S_LAST* = MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x020F)
-  SELFREG_E_TYPELIB* = SELFREG_E_FIRST+0
-  SELFREG_E_CLASS* = SELFREG_E_FIRST+1
-  PERPROP_E_FIRST* = MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x0200)
-  PERPROP_E_LAST* = MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x020F)
-  PERPROP_S_FIRST* = MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x0200)
-  PERPROP_S_LAST* = MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x020F)
-  PERPROP_E_NOPAGEAVAILABLE* = PERPROP_E_FIRST+0
+  CONNECT_E_FIRST* = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0200)
+  CONNECT_E_LAST* = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x020F)
+  CONNECT_S_FIRST* = MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0200)
+  CONNECT_S_LAST* = MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x020F)
+  CONNECT_E_NOCONNECTION* = CONNECT_E_FIRST + 0
+  CONNECT_E_ADVISELIMIT* = CONNECT_E_FIRST + 1
+  CONNECT_E_CANNOTCONNECT* = CONNECT_E_FIRST + 2
+  CONNECT_E_OVERRIDDEN* = CONNECT_E_FIRST + 3
+  SELFREG_E_FIRST* = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0200)
+  SELFREG_E_LAST* = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x020F)
+  SELFREG_S_FIRST* = MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0200)
+  SELFREG_S_LAST* = MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x020F)
+  SELFREG_E_TYPELIB* = SELFREG_E_FIRST + 0
+  SELFREG_E_CLASS* = SELFREG_E_FIRST + 1
+  PERPROP_E_FIRST* = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0200)
+  PERPROP_E_LAST* = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x020F)
+  PERPROP_S_FIRST* = MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0200)
+  PERPROP_S_LAST* = MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x020F)
+  PERPROP_E_NOPAGEAVAILABLE* = PERPROP_E_FIRST + 0
   OLEIVERB_PROPERTIES* = -7
   VT_STREAMED_PROPSET* = 73
   VT_STORED_PROPSET* = 74
@@ -890,25 +1222,25 @@
   VT_FONT* = VT_DISPATCH
   VT_PICTURE* = VT_DISPATCH
   VT_HANDLE* = VT_I4
-  OCM_BASE* = WM_USER+0x1c00
-  OCM_COMMAND* = OCM_BASE+WM_COMMAND
-  OCM_CTLCOLORBTN* = OCM_BASE+WM_CTLCOLORBTN
-  OCM_CTLCOLOREDIT* = OCM_BASE+WM_CTLCOLOREDIT
-  OCM_CTLCOLORDLG* = OCM_BASE+WM_CTLCOLORDLG
-  OCM_CTLCOLORLISTBOX* = OCM_BASE+WM_CTLCOLORLISTBOX
-  OCM_CTLCOLORMSGBOX* = OCM_BASE+WM_CTLCOLORMSGBOX
-  OCM_CTLCOLORSCROLLBAR* = OCM_BASE+WM_CTLCOLORSCROLLBAR
-  OCM_CTLCOLORSTATIC* = OCM_BASE+WM_CTLCOLORSTATIC
-  OCM_DRAWITEM* = OCM_BASE+WM_DRAWITEM
-  OCM_MEASUREITEM* = OCM_BASE+WM_MEASUREITEM
-  OCM_DELETEITEM* = OCM_BASE+WM_DELETEITEM
-  OCM_VKEYTOITEM* = OCM_BASE+WM_VKEYTOITEM
-  OCM_CHARTOITEM* = OCM_BASE+WM_CHARTOITEM
-  OCM_COMPAREITEM* = OCM_BASE+WM_COMPAREITEM
-  OCM_HSCROLL* = OCM_BASE+WM_HSCROLL
-  OCM_VSCROLL* = OCM_BASE+WM_VSCROLL
-  OCM_PARENTNOTIFY* = OCM_BASE+WM_PARENTNOTIFY
-  OCM_NOTIFY* = OCM_BASE+WM_NOTIFY
+  OCM_BASE* = WM_USER + 0x1c00
+  OCM_COMMAND* = OCM_BASE + WM_COMMAND
+  OCM_CTLCOLORBTN* = OCM_BASE + WM_CTLCOLORBTN
+  OCM_CTLCOLOREDIT* = OCM_BASE + WM_CTLCOLOREDIT
+  OCM_CTLCOLORDLG* = OCM_BASE + WM_CTLCOLORDLG
+  OCM_CTLCOLORLISTBOX* = OCM_BASE + WM_CTLCOLORLISTBOX
+  OCM_CTLCOLORMSGBOX* = OCM_BASE + WM_CTLCOLORMSGBOX
+  OCM_CTLCOLORSCROLLBAR* = OCM_BASE + WM_CTLCOLORSCROLLBAR
+  OCM_CTLCOLORSTATIC* = OCM_BASE + WM_CTLCOLORSTATIC
+  OCM_DRAWITEM* = OCM_BASE + WM_DRAWITEM
+  OCM_MEASUREITEM* = OCM_BASE + WM_MEASUREITEM
+  OCM_DELETEITEM* = OCM_BASE + WM_DELETEITEM
+  OCM_VKEYTOITEM* = OCM_BASE + WM_VKEYTOITEM
+  OCM_CHARTOITEM* = OCM_BASE + WM_CHARTOITEM
+  OCM_COMPAREITEM* = OCM_BASE + WM_COMPAREITEM
+  OCM_HSCROLL* = OCM_BASE + WM_HSCROLL
+  OCM_VSCROLL* = OCM_BASE + WM_VSCROLL
+  OCM_PARENTNOTIFY* = OCM_BASE + WM_PARENTNOTIFY
+  OCM_NOTIFY* = OCM_BASE + WM_NOTIFY
   LP_DEFAULT* = 0x00
   LP_MONOCHROME* = 0x01
   LP_VGACOLOR* = 0x02
@@ -1033,7 +1365,9 @@
   SCRIPTITEM_ISPERSISTENT* = 0x00000040
   SCRIPTITEM_CODEONLY* = 0x00000200
   SCRIPTITEM_NOCODE* = 0x00000400
-  SCRIPTITEM_ALL_FLAGS* = SCRIPTITEM_ISSOURCE or SCRIPTITEM_ISVISIBLE or SCRIPTITEM_ISPERSISTENT or SCRIPTITEM_GLOBALMEMBERS or SCRIPTITEM_NOCODE or SCRIPTITEM_CODEONLY
+  SCRIPTITEM_ALL_FLAGS* =
+    SCRIPTITEM_ISSOURCE or SCRIPTITEM_ISVISIBLE or SCRIPTITEM_ISPERSISTENT or
+    SCRIPTITEM_GLOBALMEMBERS or SCRIPTITEM_NOCODE or SCRIPTITEM_CODEONLY
   SCRIPTTYPELIB_ISCONTROL* = 0x00000010
   SCRIPTTYPELIB_ISPERSISTENT* = 0x00000040
   SCRIPTTYPELIB_ALL_FLAGS* = SCRIPTTYPELIB_ISCONTROL or SCRIPTTYPELIB_ISPERSISTENT
@@ -1043,13 +1377,17 @@
   SCRIPTTEXT_ISPERSISTENT* = 0x00000040
   SCRIPTTEXT_HOSTMANAGESSOURCE* = 0x00000080
   SCRIPTTEXT_ISXDOMAIN* = 0x00000100
-  SCRIPTTEXT_ALL_FLAGS* = SCRIPTTEXT_DELAYEXECUTION or SCRIPTTEXT_ISVISIBLE or SCRIPTTEXT_ISEXPRESSION or SCRIPTTEXT_ISPERSISTENT or SCRIPTTEXT_HOSTMANAGESSOURCE or SCRIPTTEXT_ISXDOMAIN
+  SCRIPTTEXT_ALL_FLAGS* =
+    SCRIPTTEXT_DELAYEXECUTION or SCRIPTTEXT_ISVISIBLE or SCRIPTTEXT_ISEXPRESSION or
+    SCRIPTTEXT_ISPERSISTENT or SCRIPTTEXT_HOSTMANAGESSOURCE or SCRIPTTEXT_ISXDOMAIN
   SCRIPTPROC_ISEXPRESSION* = 0x00000020
   SCRIPTPROC_HOSTMANAGESSOURCE* = 0x00000080
   SCRIPTPROC_IMPLICIT_THIS* = 0x00000100
   SCRIPTPROC_IMPLICIT_PARENTS* = 0x00000200
   SCRIPTPROC_ISXDOMAIN* = 0x00000400
-  SCRIPTPROC_ALL_FLAGS* = SCRIPTPROC_HOSTMANAGESSOURCE or SCRIPTPROC_ISEXPRESSION or SCRIPTPROC_IMPLICIT_THIS or SCRIPTPROC_IMPLICIT_PARENTS or SCRIPTPROC_ISXDOMAIN
+  SCRIPTPROC_ALL_FLAGS* =
+    SCRIPTPROC_HOSTMANAGESSOURCE or SCRIPTPROC_ISEXPRESSION or SCRIPTPROC_IMPLICIT_THIS or
+    SCRIPTPROC_IMPLICIT_PARENTS or SCRIPTPROC_ISXDOMAIN
   SCRIPTINFO_IUNKNOWN* = 0x00000001
   SCRIPTINFO_ITYPEINFO* = 0x00000002
   SCRIPTINFO_ALL_FLAGS* = SCRIPTINFO_IUNKNOWN or SCRIPTINFO_ITYPEINFO
@@ -1119,23 +1457,31 @@
   IID_IActiveScriptError64* = DEFINE_GUID("b21fb2a1-5b8f-4963-8c21-21450f84ed7f")
   IID_IActiveScriptSiteWindow* = DEFINE_GUID("d10f6761-83e9-11cf-8f20-00805f2cd064")
   IID_IActiveScriptSiteUIControl* = DEFINE_GUID("aedae97e-d7ee-4796-b960-7f092ae844ab")
-  IID_IActiveScriptSiteInterruptPoll* = DEFINE_GUID("539698a0-cdca-11cf-a5eb-00aa0047a063")
+  IID_IActiveScriptSiteInterruptPoll* =
+    DEFINE_GUID("539698a0-cdca-11cf-a5eb-00aa0047a063")
   IID_IActiveScript* = DEFINE_GUID("bb1a2ae1-a4f9-11cf-8f20-00805f2cd064")
   IID_IActiveScriptParse32* = DEFINE_GUID("bb1a2ae2-a4f9-11cf-8f20-00805f2cd064")
   IID_IActiveScriptParse64* = DEFINE_GUID("c7ef7658-e1ee-480e-97ea-d52cb4d76d17")
-  IID_IActiveScriptParseProcedureOld32* = DEFINE_GUID("1cff0050-6fdd-11d0-9328-00a0c90dcaa9")
-  IID_IActiveScriptParseProcedureOld64* = DEFINE_GUID("21f57128-08c9-4638-ba12-22d15d88dc5c")
-  IID_IActiveScriptParseProcedure32* = DEFINE_GUID("aa5b6a80-b834-11d0-932f-00a0c90dcaa9")
-  IID_IActiveScriptParseProcedure64* = DEFINE_GUID("c64713b6-e029-4cc5-9200-438b72890b6a")
-  IID_IActiveScriptParseProcedure2_32* = DEFINE_GUID("71ee5b20-fb04-11d1-b3a8-00a0c911e8b2")
-  IID_IActiveScriptParseProcedure2_64* = DEFINE_GUID("fe7c4271-210c-448d-9f54-76dab7047b28")
+  IID_IActiveScriptParseProcedureOld32* =
+    DEFINE_GUID("1cff0050-6fdd-11d0-9328-00a0c90dcaa9")
+  IID_IActiveScriptParseProcedureOld64* =
+    DEFINE_GUID("21f57128-08c9-4638-ba12-22d15d88dc5c")
+  IID_IActiveScriptParseProcedure32* =
+    DEFINE_GUID("aa5b6a80-b834-11d0-932f-00a0c90dcaa9")
+  IID_IActiveScriptParseProcedure64* =
+    DEFINE_GUID("c64713b6-e029-4cc5-9200-438b72890b6a")
+  IID_IActiveScriptParseProcedure2_32* =
+    DEFINE_GUID("71ee5b20-fb04-11d1-b3a8-00a0c911e8b2")
+  IID_IActiveScriptParseProcedure2_64* =
+    DEFINE_GUID("fe7c4271-210c-448d-9f54-76dab7047b28")
   IID_IActiveScriptEncode* = DEFINE_GUID("bb1a2ae3-a4f9-11cf-8f20-00805f2cd064")
   IID_IActiveScriptHostEncode* = DEFINE_GUID("bee9b76e-cfe3-11d1-b747-00c04fc2b085")
   IID_IBindEventHandler* = DEFINE_GUID("63cdbcb0-c1b1-11d0-9336-00a0c90dcaa9")
   IID_IActiveScriptStats* = DEFINE_GUID("b8da6310-e19b-11d0-933c-00a0c90dcaa9")
   IID_IActiveScriptProperty* = DEFINE_GUID("4954e0d0-fbc7-11d1-8410-006008c3fbfc")
   IID_ITridentEventSink* = DEFINE_GUID("1dc9ca50-06ef-11d2-8415-006008c3fbfc")
-  IID_IActiveScriptGarbageCollector* = DEFINE_GUID("6aa2c4a0-2b53-11d4-a2a0-00104bd35090")
+  IID_IActiveScriptGarbageCollector* =
+    DEFINE_GUID("6aa2c4a0-2b53-11d4-a2a0-00104bd35090")
   IID_IActiveScriptSIPInfo* = DEFINE_GUID("764651d0-38de-11d4-a2a3-00104bd35090")
   IID_IActiveScriptSiteTraceInfo* = DEFINE_GUID("4b7272ae-1955-4bfe-98b0-780621888569")
   IID_IActiveScriptTraceInfo* = DEFINE_GUID("c35456e7-bebf-4a1b-86a9-24d56be8b369")
@@ -1317,16 +1663,16 @@
   IOF_HIDECHANGEICON* = 0x00000800
   IOF_SHOWINSERTCONTROL* = 0x00001000
   IOF_SELECTCREATECONTROL* = 0x00002000
-  OLEUI_IOERR_LPSZFILEINVALID* = OLEUI_ERR_STANDARDMAX+0
-  OLEUI_IOERR_LPSZLABELINVALID* = OLEUI_ERR_STANDARDMAX+1
-  OLEUI_IOERR_HICONINVALID* = OLEUI_ERR_STANDARDMAX+2
-  OLEUI_IOERR_LPFORMATETCINVALID* = OLEUI_ERR_STANDARDMAX+3
-  OLEUI_IOERR_PPVOBJINVALID* = OLEUI_ERR_STANDARDMAX+4
-  OLEUI_IOERR_LPIOLECLIENTSITEINVALID* = OLEUI_ERR_STANDARDMAX+5
-  OLEUI_IOERR_LPISTORAGEINVALID* = OLEUI_ERR_STANDARDMAX+6
-  OLEUI_IOERR_SCODEHASERROR* = OLEUI_ERR_STANDARDMAX+7
-  OLEUI_IOERR_LPCLSIDEXCLUDEINVALID* = OLEUI_ERR_STANDARDMAX+8
-  OLEUI_IOERR_CCHFILEINVALID* = OLEUI_ERR_STANDARDMAX+9
+  OLEUI_IOERR_LPSZFILEINVALID* = OLEUI_ERR_STANDARDMAX + 0
+  OLEUI_IOERR_LPSZLABELINVALID* = OLEUI_ERR_STANDARDMAX + 1
+  OLEUI_IOERR_HICONINVALID* = OLEUI_ERR_STANDARDMAX + 2
+  OLEUI_IOERR_LPFORMATETCINVALID* = OLEUI_ERR_STANDARDMAX + 3
+  OLEUI_IOERR_PPVOBJINVALID* = OLEUI_ERR_STANDARDMAX + 4
+  OLEUI_IOERR_LPIOLECLIENTSITEINVALID* = OLEUI_ERR_STANDARDMAX + 5
+  OLEUI_IOERR_LPISTORAGEINVALID* = OLEUI_ERR_STANDARDMAX + 6
+  OLEUI_IOERR_SCODEHASERROR* = OLEUI_ERR_STANDARDMAX + 7
+  OLEUI_IOERR_LPCLSIDEXCLUDEINVALID* = OLEUI_ERR_STANDARDMAX + 8
+  OLEUI_IOERR_CCHFILEINVALID* = OLEUI_ERR_STANDARDMAX + 9
   OLEUIPASTE_ENABLEICON* = 2048
   OLEUIPASTE_PASTEONLY* = 0
   OLEUIPASTE_PASTE* = 512
@@ -1348,13 +1694,13 @@
   PSF_HIDECHANGEICON* = 0x00000020
   PSF_STAYONCLIPBOARDCHANGE* = 0x00000040
   PSF_NOREFRESHDATAOBJECT* = 0x00000080
-  OLEUI_IOERR_SRCDATAOBJECTINVALID* = OLEUI_ERR_STANDARDMAX+0
-  OLEUI_IOERR_ARRPASTEENTRIESINVALID* = OLEUI_ERR_STANDARDMAX+1
-  OLEUI_IOERR_ARRLINKTYPESINVALID* = OLEUI_ERR_STANDARDMAX+2
-  OLEUI_PSERR_CLIPBOARDCHANGED* = OLEUI_ERR_STANDARDMAX+3
-  OLEUI_PSERR_GETCLIPBOARDFAILED* = OLEUI_ERR_STANDARDMAX+4
-  OLEUI_ELERR_LINKCNTRNULL* = OLEUI_ERR_STANDARDMAX+0
-  OLEUI_ELERR_LINKCNTRINVALID* = OLEUI_ERR_STANDARDMAX+1
+  OLEUI_IOERR_SRCDATAOBJECTINVALID* = OLEUI_ERR_STANDARDMAX + 0
+  OLEUI_IOERR_ARRPASTEENTRIESINVALID* = OLEUI_ERR_STANDARDMAX + 1
+  OLEUI_IOERR_ARRLINKTYPESINVALID* = OLEUI_ERR_STANDARDMAX + 2
+  OLEUI_PSERR_CLIPBOARDCHANGED* = OLEUI_ERR_STANDARDMAX + 3
+  OLEUI_PSERR_GETCLIPBOARDFAILED* = OLEUI_ERR_STANDARDMAX + 4
+  OLEUI_ELERR_LINKCNTRNULL* = OLEUI_ERR_STANDARDMAX + 0
+  OLEUI_ELERR_LINKCNTRINVALID* = OLEUI_ERR_STANDARDMAX + 1
   ELF_SHOWHELP* = 0x00000001
   ELF_DISABLEUPDATENOW* = 0x00000002
   ELF_DISABLEOPENSOURCE* = 0x00000004
@@ -1365,9 +1711,9 @@
   CIF_SELECTDEFAULT* = 0x00000004
   CIF_SELECTFROMFILE* = 0x00000008
   CIF_USEICONEXE* = 0x00000010
-  OLEUI_CIERR_MUSTHAVECLSID* = OLEUI_ERR_STANDARDMAX+0
-  OLEUI_CIERR_MUSTHAVECURRENTMETAFILE* = OLEUI_ERR_STANDARDMAX+1
-  OLEUI_CIERR_SZICONEXEINVALID* = OLEUI_ERR_STANDARDMAX+2
+  OLEUI_CIERR_MUSTHAVECLSID* = OLEUI_ERR_STANDARDMAX + 0
+  OLEUI_CIERR_MUSTHAVECURRENTMETAFILE* = OLEUI_ERR_STANDARDMAX + 1
+  OLEUI_CIERR_SZICONEXEINVALID* = OLEUI_ERR_STANDARDMAX + 2
   PROP_HWND_CHGICONDLG* = "HWND_CIDLG"
   CF_SHOWHELPBUTTON* = 0x00000001
   CF_SETCONVERTDEFAULT* = 0x00000002
@@ -1378,31 +1724,31 @@
   CF_DISABLEACTIVATEAS* = 0x00000040
   CF_HIDECHANGEICON* = 0x00000080
   CF_CONVERTONLY* = 0x00000100
-  OLEUI_CTERR_CLASSIDINVALID* = OLEUI_ERR_STANDARDMAX+1
-  OLEUI_CTERR_DVASPECTINVALID* = OLEUI_ERR_STANDARDMAX+2
-  OLEUI_CTERR_CBFORMATINVALID* = OLEUI_ERR_STANDARDMAX+3
-  OLEUI_CTERR_HMETAPICTINVALID* = OLEUI_ERR_STANDARDMAX+4
-  OLEUI_CTERR_STRINGINVALID* = OLEUI_ERR_STANDARDMAX+5
+  OLEUI_CTERR_CLASSIDINVALID* = OLEUI_ERR_STANDARDMAX + 1
+  OLEUI_CTERR_DVASPECTINVALID* = OLEUI_ERR_STANDARDMAX + 2
+  OLEUI_CTERR_CBFORMATINVALID* = OLEUI_ERR_STANDARDMAX + 3
+  OLEUI_CTERR_HMETAPICTINVALID* = OLEUI_ERR_STANDARDMAX + 4
+  OLEUI_CTERR_STRINGINVALID* = OLEUI_ERR_STANDARDMAX + 5
   BZ_DISABLECANCELBUTTON* = 0x00000001
   BZ_DISABLESWITCHTOBUTTON* = 0x00000002
   BZ_DISABLERETRYBUTTON* = 0x00000004
   BZ_NOTRESPONDINGDIALOG* = 0x00000008
-  OLEUI_BZERR_HTASKINVALID* = OLEUI_ERR_STANDARDMAX+0
-  OLEUI_BZ_SWITCHTOSELECTED* = OLEUI_ERR_STANDARDMAX+1
-  OLEUI_BZ_RETRYSELECTED* = OLEUI_ERR_STANDARDMAX+2
-  OLEUI_BZ_CALLUNBLOCKED* = OLEUI_ERR_STANDARDMAX+3
+  OLEUI_BZERR_HTASKINVALID* = OLEUI_ERR_STANDARDMAX + 0
+  OLEUI_BZ_SWITCHTOSELECTED* = OLEUI_ERR_STANDARDMAX + 1
+  OLEUI_BZ_RETRYSELECTED* = OLEUI_ERR_STANDARDMAX + 2
+  OLEUI_BZ_CALLUNBLOCKED* = OLEUI_ERR_STANDARDMAX + 3
   CSF_SHOWHELP* = 0x00000001
   CSF_VALIDSOURCE* = 0x00000002
   CSF_ONLYGETSOURCE* = 0x00000004
   CSF_EXPLORER* = 0x00000008
-  OLEUI_CSERR_LINKCNTRNULL* = OLEUI_ERR_STANDARDMAX+0
-  OLEUI_CSERR_LINKCNTRINVALID* = OLEUI_ERR_STANDARDMAX+1
-  OLEUI_CSERR_FROMNOTNULL* = OLEUI_ERR_STANDARDMAX+2
-  OLEUI_CSERR_TONOTNULL* = OLEUI_ERR_STANDARDMAX+3
-  OLEUI_CSERR_SOURCENULL* = OLEUI_ERR_STANDARDMAX+4
-  OLEUI_CSERR_SOURCEINVALID* = OLEUI_ERR_STANDARDMAX+5
-  OLEUI_CSERR_SOURCEPARSERROR* = OLEUI_ERR_STANDARDMAX+6
-  OLEUI_CSERR_SOURCEPARSEERROR* = OLEUI_ERR_STANDARDMAX+6
+  OLEUI_CSERR_LINKCNTRNULL* = OLEUI_ERR_STANDARDMAX + 0
+  OLEUI_CSERR_LINKCNTRINVALID* = OLEUI_ERR_STANDARDMAX + 1
+  OLEUI_CSERR_FROMNOTNULL* = OLEUI_ERR_STANDARDMAX + 2
+  OLEUI_CSERR_TONOTNULL* = OLEUI_ERR_STANDARDMAX + 3
+  OLEUI_CSERR_SOURCENULL* = OLEUI_ERR_STANDARDMAX + 4
+  OLEUI_CSERR_SOURCEINVALID* = OLEUI_ERR_STANDARDMAX + 5
+  OLEUI_CSERR_SOURCEPARSERROR* = OLEUI_ERR_STANDARDMAX + 6
+  OLEUI_CSERR_SOURCEPARSEERROR* = OLEUI_ERR_STANDARDMAX + 6
   VPF_SELECTRELATIVE* = 0x00000001
   VPF_DISABLERELATIVE* = 0x00000002
   VPF_DISABLESCALE* = 0x00000004
@@ -1410,394 +1756,2051 @@
   OPF_NOFILLDEFAULT* = 0x00000002
   OPF_SHOWHELP* = 0x00000004
   OPF_DISABLECONVERT* = 0x00000008
-  OLEUI_OPERR_SUBPROPNULL* = OLEUI_ERR_STANDARDMAX+0
-  OLEUI_OPERR_SUBPROPINVALID* = OLEUI_ERR_STANDARDMAX+1
-  OLEUI_OPERR_PROPSHEETNULL* = OLEUI_ERR_STANDARDMAX+2
-  OLEUI_OPERR_PROPSHEETINVALID* = OLEUI_ERR_STANDARDMAX+3
-  OLEUI_OPERR_SUPPROP* = OLEUI_ERR_STANDARDMAX+4
-  OLEUI_OPERR_PROPSINVALID* = OLEUI_ERR_STANDARDMAX+5
-  OLEUI_OPERR_PAGESINCORRECT* = OLEUI_ERR_STANDARDMAX+6
-  OLEUI_OPERR_INVALIDPAGES* = OLEUI_ERR_STANDARDMAX+7
-  OLEUI_OPERR_NOTSUPPORTED* = OLEUI_ERR_STANDARDMAX+8
-  OLEUI_OPERR_DLGPROCNOTNULL* = OLEUI_ERR_STANDARDMAX+9
-  OLEUI_OPERR_LPARAMNOTZERO* = OLEUI_ERR_STANDARDMAX+10
-  OLEUI_GPERR_STRINGINVALID* = OLEUI_ERR_STANDARDMAX+11
-  OLEUI_GPERR_CLASSIDINVALID* = OLEUI_ERR_STANDARDMAX+12
-  OLEUI_GPERR_LPCLSIDEXCLUDEINVALID* = OLEUI_ERR_STANDARDMAX+13
-  OLEUI_GPERR_CBFORMATINVALID* = OLEUI_ERR_STANDARDMAX+14
-  OLEUI_VPERR_METAPICTINVALID* = OLEUI_ERR_STANDARDMAX+15
-  OLEUI_VPERR_DVASPECTINVALID* = OLEUI_ERR_STANDARDMAX+16
-  OLEUI_LPERR_LINKCNTRNULL* = OLEUI_ERR_STANDARDMAX+17
-  OLEUI_LPERR_LINKCNTRINVALID* = OLEUI_ERR_STANDARDMAX+18
-  OLEUI_OPERR_PROPERTYSHEET* = OLEUI_ERR_STANDARDMAX+19
-  OLEUI_OPERR_OBJINFOINVALID* = OLEUI_ERR_STANDARDMAX+20
-  OLEUI_OPERR_LINKINFOINVALID* = OLEUI_ERR_STANDARDMAX+21
+  OLEUI_OPERR_SUBPROPNULL* = OLEUI_ERR_STANDARDMAX + 0
+  OLEUI_OPERR_SUBPROPINVALID* = OLEUI_ERR_STANDARDMAX + 1
+  OLEUI_OPERR_PROPSHEETNULL* = OLEUI_ERR_STANDARDMAX + 2
+  OLEUI_OPERR_PROPSHEETINVALID* = OLEUI_ERR_STANDARDMAX + 3
+  OLEUI_OPERR_SUPPROP* = OLEUI_ERR_STANDARDMAX + 4
+  OLEUI_OPERR_PROPSINVALID* = OLEUI_ERR_STANDARDMAX + 5
+  OLEUI_OPERR_PAGESINCORRECT* = OLEUI_ERR_STANDARDMAX + 6
+  OLEUI_OPERR_INVALIDPAGES* = OLEUI_ERR_STANDARDMAX + 7
+  OLEUI_OPERR_NOTSUPPORTED* = OLEUI_ERR_STANDARDMAX + 8
+  OLEUI_OPERR_DLGPROCNOTNULL* = OLEUI_ERR_STANDARDMAX + 9
+  OLEUI_OPERR_LPARAMNOTZERO* = OLEUI_ERR_STANDARDMAX + 10
+  OLEUI_GPERR_STRINGINVALID* = OLEUI_ERR_STANDARDMAX + 11
+  OLEUI_GPERR_CLASSIDINVALID* = OLEUI_ERR_STANDARDMAX + 12
+  OLEUI_GPERR_LPCLSIDEXCLUDEINVALID* = OLEUI_ERR_STANDARDMAX + 13
+  OLEUI_GPERR_CBFORMATINVALID* = OLEUI_ERR_STANDARDMAX + 14
+  OLEUI_VPERR_METAPICTINVALID* = OLEUI_ERR_STANDARDMAX + 15
+  OLEUI_VPERR_DVASPECTINVALID* = OLEUI_ERR_STANDARDMAX + 16
+  OLEUI_LPERR_LINKCNTRNULL* = OLEUI_ERR_STANDARDMAX + 17
+  OLEUI_LPERR_LINKCNTRINVALID* = OLEUI_ERR_STANDARDMAX + 18
+  OLEUI_OPERR_PROPERTYSHEET* = OLEUI_ERR_STANDARDMAX + 19
+  OLEUI_OPERR_OBJINFOINVALID* = OLEUI_ERR_STANDARDMAX + 20
+  OLEUI_OPERR_LINKINFOINVALID* = OLEUI_ERR_STANDARDMAX + 21
   OLEUI_QUERY_GETCLASSID* = 0xFF00
   OLEUI_QUERY_LINKBROKEN* = 0xFF01
 type
-  LPFNLRESULTFROMOBJECT* = proc (riid: REFIID, wParam: WPARAM, punk: LPUNKNOWN): LRESULT {.stdcall.}
-  LPFNOBJECTFROMLRESULT* = proc (lResult: LRESULT, riid: REFIID, wParam: WPARAM, ppvObject: ptr pointer): HRESULT {.stdcall.}
-  LPFNACCESSIBLEOBJECTFROMWINDOW* = proc (hwnd: HWND, dwId: DWORD, riid: REFIID, ppvObject: ptr pointer): HRESULT {.stdcall.}
-  LPFNACCESSIBLEOBJECTFROMPOINT* = proc (ptScreen: POINT, ppacc: ptr ptr IAccessible, pvarChild: ptr VARIANT): HRESULT {.stdcall.}
-  LPFNCREATESTDACCESSIBLEOBJECT* = proc (hwnd: HWND, idObject: LONG, riid: REFIID, ppvObject: ptr pointer): HRESULT {.stdcall.}
-  LPFNACCESSIBLECHILDREN* = proc (paccContainer: ptr IAccessible, iChildStart: LONG, cChildren: LONG, rgvarChildren: ptr VARIANT, pcObtained: ptr LONG): HRESULT {.stdcall.}
+  LPFNLRESULTFROMOBJECT* =
+    proc(riid: REFIID, wParam: WPARAM, punk: LPUNKNOWN): LRESULT {.stdcall.}
+  LPFNOBJECTFROMLRESULT* = proc(
+    lResult: LRESULT, riid: REFIID, wParam: WPARAM, ppvObject: ptr pointer
+  ): HRESULT {.stdcall.}
+  LPFNACCESSIBLEOBJECTFROMWINDOW* = proc(
+    hwnd: HWND, dwId: DWORD, riid: REFIID, ppvObject: ptr pointer
+  ): HRESULT {.stdcall.}
+  LPFNACCESSIBLEOBJECTFROMPOINT* = proc(
+    ptScreen: POINT, ppacc: ptr ptr IAccessible, pvarChild: ptr VARIANT
+  ): HRESULT {.stdcall.}
+  LPFNCREATESTDACCESSIBLEOBJECT* = proc(
+    hwnd: HWND, idObject: LONG, riid: REFIID, ppvObject: ptr pointer
+  ): HRESULT {.stdcall.}
+  LPFNACCESSIBLECHILDREN* = proc(
+    paccContainer: ptr IAccessible,
+    iChildStart: LONG,
+    cChildren: LONG,
+    rgvarChildren: ptr VARIANT,
+    pcObtained: ptr LONG,
+  ): HRESULT {.stdcall.}
   IAccIdentity* {.pure.} = object
     lpVtbl*: ptr IAccIdentityVtbl
+
   IAccIdentityVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetIdentityString*: proc(self: ptr IAccIdentity, dwIDChild: DWORD, ppIDString: ptr ptr BYTE, pdwIDStringLen: ptr DWORD): HRESULT {.stdcall.}
+    GetIdentityString*: proc(
+      self: ptr IAccIdentity,
+      dwIDChild: DWORD,
+      ppIDString: ptr ptr BYTE,
+      pdwIDStringLen: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   IAccPropServer* {.pure.} = object
     lpVtbl*: ptr IAccPropServerVtbl
+
   IAccPropServerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetPropValue*: proc(self: ptr IAccPropServer, pIDString: ptr BYTE, dwIDStringLen: DWORD, idProp: MSAAPROPID, pvarValue: ptr VARIANT, pfHasProp: ptr WINBOOL): HRESULT {.stdcall.}
+    GetPropValue*: proc(
+      self: ptr IAccPropServer,
+      pIDString: ptr BYTE,
+      dwIDStringLen: DWORD,
+      idProp: MSAAPROPID,
+      pvarValue: ptr VARIANT,
+      pfHasProp: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+
   IAccPropServices* {.pure.} = object
     lpVtbl*: ptr IAccPropServicesVtbl
+
   IAccPropServicesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetPropValue*: proc(self: ptr IAccPropServices, pIDString: ptr BYTE, dwIDStringLen: DWORD, idProp: MSAAPROPID, `var`: VARIANT): HRESULT {.stdcall.}
-    SetPropServer*: proc(self: ptr IAccPropServices, pIDString: ptr BYTE, dwIDStringLen: DWORD, paProps: ptr MSAAPROPID, cProps: int32, pServer: ptr IAccPropServer, annoScope: AnnoScope): HRESULT {.stdcall.}
-    ClearProps*: proc(self: ptr IAccPropServices, pIDString: ptr BYTE, dwIDStringLen: DWORD, paProps: ptr MSAAPROPID, cProps: int32): HRESULT {.stdcall.}
-    SetHwndProp*: proc(self: ptr IAccPropServices, hwnd: HWND, idObject: DWORD, idChild: DWORD, idProp: MSAAPROPID, `var`: VARIANT): HRESULT {.stdcall.}
-    SetHwndPropStr*: proc(self: ptr IAccPropServices, hwnd: HWND, idObject: DWORD, idChild: DWORD, idProp: MSAAPROPID, str: LPCWSTR): HRESULT {.stdcall.}
-    SetHwndPropServer*: proc(self: ptr IAccPropServices, hwnd: HWND, idObject: DWORD, idChild: DWORD, paProps: ptr MSAAPROPID, cProps: int32, pServer: ptr IAccPropServer, annoScope: AnnoScope): HRESULT {.stdcall.}
-    ClearHwndProps*: proc(self: ptr IAccPropServices, hwnd: HWND, idObject: DWORD, idChild: DWORD, paProps: ptr MSAAPROPID, cProps: int32): HRESULT {.stdcall.}
-    ComposeHwndIdentityString*: proc(self: ptr IAccPropServices, hwnd: HWND, idObject: DWORD, idChild: DWORD, ppIDString: ptr ptr BYTE, pdwIDStringLen: ptr DWORD): HRESULT {.stdcall.}
-    DecomposeHwndIdentityString*: proc(self: ptr IAccPropServices, pIDString: ptr BYTE, dwIDStringLen: DWORD, phwnd: ptr HWND, pidObject: ptr DWORD, pidChild: ptr DWORD): HRESULT {.stdcall.}
-    SetHmenuProp*: proc(self: ptr IAccPropServices, hmenu: HMENU, idChild: DWORD, idProp: MSAAPROPID, `var`: VARIANT): HRESULT {.stdcall.}
-    SetHmenuPropStr*: proc(self: ptr IAccPropServices, hmenu: HMENU, idChild: DWORD, idProp: MSAAPROPID, str: LPCWSTR): HRESULT {.stdcall.}
-    SetHmenuPropServer*: proc(self: ptr IAccPropServices, hmenu: HMENU, idChild: DWORD, paProps: ptr MSAAPROPID, cProps: int32, pServer: ptr IAccPropServer, annoScope: AnnoScope): HRESULT {.stdcall.}
-    ClearHmenuProps*: proc(self: ptr IAccPropServices, hmenu: HMENU, idChild: DWORD, paProps: ptr MSAAPROPID, cProps: int32): HRESULT {.stdcall.}
-    ComposeHmenuIdentityString*: proc(self: ptr IAccPropServices, hmenu: HMENU, idChild: DWORD, ppIDString: ptr ptr BYTE, pdwIDStringLen: ptr DWORD): HRESULT {.stdcall.}
-    DecomposeHmenuIdentityString*: proc(self: ptr IAccPropServices, pIDString: ptr BYTE, dwIDStringLen: DWORD, phmenu: ptr HMENU, pidChild: ptr DWORD): HRESULT {.stdcall.}
+    SetPropValue*: proc(
+      self: ptr IAccPropServices,
+      pIDString: ptr BYTE,
+      dwIDStringLen: DWORD,
+      idProp: MSAAPROPID,
+      `var`: VARIANT,
+    ): HRESULT {.stdcall.}
+    SetPropServer*: proc(
+      self: ptr IAccPropServices,
+      pIDString: ptr BYTE,
+      dwIDStringLen: DWORD,
+      paProps: ptr MSAAPROPID,
+      cProps: int32,
+      pServer: ptr IAccPropServer,
+      annoScope: AnnoScope,
+    ): HRESULT {.stdcall.}
+    ClearProps*: proc(
+      self: ptr IAccPropServices,
+      pIDString: ptr BYTE,
+      dwIDStringLen: DWORD,
+      paProps: ptr MSAAPROPID,
+      cProps: int32,
+    ): HRESULT {.stdcall.}
+    SetHwndProp*: proc(
+      self: ptr IAccPropServices,
+      hwnd: HWND,
+      idObject: DWORD,
+      idChild: DWORD,
+      idProp: MSAAPROPID,
+      `var`: VARIANT,
+    ): HRESULT {.stdcall.}
+    SetHwndPropStr*: proc(
+      self: ptr IAccPropServices,
+      hwnd: HWND,
+      idObject: DWORD,
+      idChild: DWORD,
+      idProp: MSAAPROPID,
+      str: LPCWSTR,
+    ): HRESULT {.stdcall.}
+    SetHwndPropServer*: proc(
+      self: ptr IAccPropServices,
+      hwnd: HWND,
+      idObject: DWORD,
+      idChild: DWORD,
+      paProps: ptr MSAAPROPID,
+      cProps: int32,
+      pServer: ptr IAccPropServer,
+      annoScope: AnnoScope,
+    ): HRESULT {.stdcall.}
+    ClearHwndProps*: proc(
+      self: ptr IAccPropServices,
+      hwnd: HWND,
+      idObject: DWORD,
+      idChild: DWORD,
+      paProps: ptr MSAAPROPID,
+      cProps: int32,
+    ): HRESULT {.stdcall.}
+    ComposeHwndIdentityString*: proc(
+      self: ptr IAccPropServices,
+      hwnd: HWND,
+      idObject: DWORD,
+      idChild: DWORD,
+      ppIDString: ptr ptr BYTE,
+      pdwIDStringLen: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    DecomposeHwndIdentityString*: proc(
+      self: ptr IAccPropServices,
+      pIDString: ptr BYTE,
+      dwIDStringLen: DWORD,
+      phwnd: ptr HWND,
+      pidObject: ptr DWORD,
+      pidChild: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    SetHmenuProp*: proc(
+      self: ptr IAccPropServices,
+      hmenu: HMENU,
+      idChild: DWORD,
+      idProp: MSAAPROPID,
+      `var`: VARIANT,
+    ): HRESULT {.stdcall.}
+    SetHmenuPropStr*: proc(
+      self: ptr IAccPropServices,
+      hmenu: HMENU,
+      idChild: DWORD,
+      idProp: MSAAPROPID,
+      str: LPCWSTR,
+    ): HRESULT {.stdcall.}
+    SetHmenuPropServer*: proc(
+      self: ptr IAccPropServices,
+      hmenu: HMENU,
+      idChild: DWORD,
+      paProps: ptr MSAAPROPID,
+      cProps: int32,
+      pServer: ptr IAccPropServer,
+      annoScope: AnnoScope,
+    ): HRESULT {.stdcall.}
+    ClearHmenuProps*: proc(
+      self: ptr IAccPropServices,
+      hmenu: HMENU,
+      idChild: DWORD,
+      paProps: ptr MSAAPROPID,
+      cProps: int32,
+    ): HRESULT {.stdcall.}
+    ComposeHmenuIdentityString*: proc(
+      self: ptr IAccPropServices,
+      hmenu: HMENU,
+      idChild: DWORD,
+      ppIDString: ptr ptr BYTE,
+      pdwIDStringLen: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    DecomposeHmenuIdentityString*: proc(
+      self: ptr IAccPropServices,
+      pIDString: ptr BYTE,
+      dwIDStringLen: DWORD,
+      phmenu: ptr HMENU,
+      pidChild: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   IActiveScriptError* {.pure.} = object
     lpVtbl*: ptr IActiveScriptErrorVtbl
+
   IActiveScriptErrorVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetExceptionInfo*: proc(self: ptr IActiveScriptError, pexcepinfo: ptr EXCEPINFO): HRESULT {.stdcall.}
-    GetSourcePosition*: proc(self: ptr IActiveScriptError, pdwSourceContext: ptr DWORD, pulLineNumber: ptr ULONG, plCharacterPosition: ptr LONG): HRESULT {.stdcall.}
-    GetSourceLineText*: proc(self: ptr IActiveScriptError, pbstrSourceLine: ptr BSTR): HRESULT {.stdcall.}
+    GetExceptionInfo*:
+      proc(self: ptr IActiveScriptError, pexcepinfo: ptr EXCEPINFO): HRESULT {.stdcall.}
+    GetSourcePosition*: proc(
+      self: ptr IActiveScriptError,
+      pdwSourceContext: ptr DWORD,
+      pulLineNumber: ptr ULONG,
+      plCharacterPosition: ptr LONG,
+    ): HRESULT {.stdcall.}
+    GetSourceLineText*:
+      proc(self: ptr IActiveScriptError, pbstrSourceLine: ptr BSTR): HRESULT {.stdcall.}
+
   IActiveScriptSite* {.pure.} = object
     lpVtbl*: ptr IActiveScriptSiteVtbl
+
   IActiveScriptSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetLCID*: proc(self: ptr IActiveScriptSite, plcid: ptr LCID): HRESULT {.stdcall.}
-    GetItemInfo*: proc(self: ptr IActiveScriptSite, pstrName: LPCOLESTR, dwReturnMask: DWORD, ppiunkItem: ptr ptr IUnknown, ppti: ptr ptr ITypeInfo): HRESULT {.stdcall.}
-    GetDocVersionString*: proc(self: ptr IActiveScriptSite, pbstrVersion: ptr BSTR): HRESULT {.stdcall.}
-    OnScriptTerminate*: proc(self: ptr IActiveScriptSite, pvarResult: ptr VARIANT, pexcepinfo: ptr EXCEPINFO): HRESULT {.stdcall.}
-    OnStateChange*: proc(self: ptr IActiveScriptSite, ssScriptState: TSCRIPTSTATE): HRESULT {.stdcall.}
-    OnScriptError*: proc(self: ptr IActiveScriptSite, pscripterror: ptr IActiveScriptError): HRESULT {.stdcall.}
+    GetItemInfo*: proc(
+      self: ptr IActiveScriptSite,
+      pstrName: LPCOLESTR,
+      dwReturnMask: DWORD,
+      ppiunkItem: ptr ptr IUnknown,
+      ppti: ptr ptr ITypeInfo,
+    ): HRESULT {.stdcall.}
+    GetDocVersionString*:
+      proc(self: ptr IActiveScriptSite, pbstrVersion: ptr BSTR): HRESULT {.stdcall.}
+    OnScriptTerminate*: proc(
+      self: ptr IActiveScriptSite, pvarResult: ptr VARIANT, pexcepinfo: ptr EXCEPINFO
+    ): HRESULT {.stdcall.}
+    OnStateChange*: proc(
+      self: ptr IActiveScriptSite, ssScriptState: TSCRIPTSTATE
+    ): HRESULT {.stdcall.}
+    OnScriptError*: proc(
+      self: ptr IActiveScriptSite, pscripterror: ptr IActiveScriptError
+    ): HRESULT {.stdcall.}
     OnEnterScript*: proc(self: ptr IActiveScriptSite): HRESULT {.stdcall.}
     OnLeaveScript*: proc(self: ptr IActiveScriptSite): HRESULT {.stdcall.}
+
   IActiveScriptError64* {.pure.} = object
     lpVtbl*: ptr IActiveScriptError64Vtbl
+
   IActiveScriptError64Vtbl* {.pure, inheritable.} = object of IActiveScriptErrorVtbl
-    GetSourcePosition64*: proc(self: ptr IActiveScriptError64, pdwSourceContext: ptr DWORDLONG, pulLineNumber: ptr ULONG, plCharacterPosition: ptr LONG): HRESULT {.stdcall.}
+    GetSourcePosition64*: proc(
+      self: ptr IActiveScriptError64,
+      pdwSourceContext: ptr DWORDLONG,
+      pulLineNumber: ptr ULONG,
+      plCharacterPosition: ptr LONG,
+    ): HRESULT {.stdcall.}
+
   IActiveScriptSiteWindow* {.pure.} = object
     lpVtbl*: ptr IActiveScriptSiteWindowVtbl
+
   IActiveScriptSiteWindowVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetWindow*: proc(self: ptr IActiveScriptSiteWindow, phwnd: ptr HWND): HRESULT {.stdcall.}
-    EnableModeless*: proc(self: ptr IActiveScriptSiteWindow, fEnable: WINBOOL): HRESULT {.stdcall.}
+    GetWindow*:
+      proc(self: ptr IActiveScriptSiteWindow, phwnd: ptr HWND): HRESULT {.stdcall.}
+    EnableModeless*:
+      proc(self: ptr IActiveScriptSiteWindow, fEnable: WINBOOL): HRESULT {.stdcall.}
+
   IActiveScriptSiteUIControl* {.pure.} = object
     lpVtbl*: ptr IActiveScriptSiteUIControlVtbl
+
   IActiveScriptSiteUIControlVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetUIBehavior*: proc(self: ptr IActiveScriptSiteUIControl, UicItem: SCRIPTUICITEM, pUicHandling: ptr SCRIPTUICHANDLING): HRESULT {.stdcall.}
+    GetUIBehavior*: proc(
+      self: ptr IActiveScriptSiteUIControl,
+      UicItem: SCRIPTUICITEM,
+      pUicHandling: ptr SCRIPTUICHANDLING,
+    ): HRESULT {.stdcall.}
+
   IActiveScriptSiteInterruptPoll* {.pure.} = object
     lpVtbl*: ptr IActiveScriptSiteInterruptPollVtbl
+
   IActiveScriptSiteInterruptPollVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     QueryContinue*: proc(self: ptr IActiveScriptSiteInterruptPoll): HRESULT {.stdcall.}
+
   IActiveScript* {.pure.} = object
     lpVtbl*: ptr IActiveScriptVtbl
+
   IActiveScriptVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetScriptSite*: proc(self: ptr IActiveScript, pass: ptr IActiveScriptSite): HRESULT {.stdcall.}
-    GetScriptSite*: proc(self: ptr IActiveScript, riid: REFIID, ppvObject: ptr pointer): HRESULT {.stdcall.}
-    SetScriptState*: proc(self: ptr IActiveScript, ss: TSCRIPTSTATE): HRESULT {.stdcall.}
-    GetScriptState*: proc(self: ptr IActiveScript, pssState: ptr TSCRIPTSTATE): HRESULT {.stdcall.}
+    SetScriptSite*:
+      proc(self: ptr IActiveScript, pass: ptr IActiveScriptSite): HRESULT {.stdcall.}
+    GetScriptSite*: proc(
+      self: ptr IActiveScript, riid: REFIID, ppvObject: ptr pointer
+    ): HRESULT {.stdcall.}
+    SetScriptState*:
+      proc(self: ptr IActiveScript, ss: TSCRIPTSTATE): HRESULT {.stdcall.}
+    GetScriptState*:
+      proc(self: ptr IActiveScript, pssState: ptr TSCRIPTSTATE): HRESULT {.stdcall.}
     Close*: proc(self: ptr IActiveScript): HRESULT {.stdcall.}
-    AddNamedItem*: proc(self: ptr IActiveScript, pstrName: LPCOLESTR, dwFlags: DWORD): HRESULT {.stdcall.}
-    AddTypeLib*: proc(self: ptr IActiveScript, rguidTypeLib: REFGUID, dwMajor: DWORD, dwMinor: DWORD, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetScriptDispatch*: proc(self: ptr IActiveScript, pstrItemName: LPCOLESTR, ppdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
-    GetCurrentScriptThreadID*: proc(self: ptr IActiveScript, pstidThread: ptr SCRIPTTHREADID): HRESULT {.stdcall.}
-    GetScriptThreadID*: proc(self: ptr IActiveScript, dwWin32ThreadId: DWORD, pstidThread: ptr SCRIPTTHREADID): HRESULT {.stdcall.}
-    GetScriptThreadState*: proc(self: ptr IActiveScript, stidThread: SCRIPTTHREADID, pstsState: ptr SCRIPTTHREADSTATE): HRESULT {.stdcall.}
-    InterruptScriptThread*: proc(self: ptr IActiveScript, stidThread: SCRIPTTHREADID, pexcepinfo: ptr EXCEPINFO, dwFlags: DWORD): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IActiveScript, ppscript: ptr ptr IActiveScript): HRESULT {.stdcall.}
+    AddNamedItem*: proc(
+      self: ptr IActiveScript, pstrName: LPCOLESTR, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
+    AddTypeLib*: proc(
+      self: ptr IActiveScript,
+      rguidTypeLib: REFGUID,
+      dwMajor: DWORD,
+      dwMinor: DWORD,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    GetScriptDispatch*: proc(
+      self: ptr IActiveScript, pstrItemName: LPCOLESTR, ppdisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    GetCurrentScriptThreadID*: proc(
+      self: ptr IActiveScript, pstidThread: ptr SCRIPTTHREADID
+    ): HRESULT {.stdcall.}
+    GetScriptThreadID*: proc(
+      self: ptr IActiveScript, dwWin32ThreadId: DWORD, pstidThread: ptr SCRIPTTHREADID
+    ): HRESULT {.stdcall.}
+    GetScriptThreadState*: proc(
+      self: ptr IActiveScript,
+      stidThread: SCRIPTTHREADID,
+      pstsState: ptr SCRIPTTHREADSTATE,
+    ): HRESULT {.stdcall.}
+    InterruptScriptThread*: proc(
+      self: ptr IActiveScript,
+      stidThread: SCRIPTTHREADID,
+      pexcepinfo: ptr EXCEPINFO,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    Clone*: proc(self: ptr IActiveScript, ppscript: ptr ptr IActiveScript): HRESULT {.
+      stdcall
+    .}
+
   IActiveScriptEncode* {.pure.} = object
     lpVtbl*: ptr IActiveScriptEncodeVtbl
+
   IActiveScriptEncodeVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    EncodeSection*: proc(self: ptr IActiveScriptEncode, pchIn: LPCOLESTR, cchIn: DWORD, pchOut: LPOLESTR, cchOut: DWORD, pcchRet: ptr DWORD): HRESULT {.stdcall.}
-    DecodeScript*: proc(self: ptr IActiveScriptEncode, pchIn: LPCOLESTR, cchIn: DWORD, pchOut: LPOLESTR, cchOut: DWORD, pcchRet: ptr DWORD): HRESULT {.stdcall.}
-    GetEncodeProgId*: proc(self: ptr IActiveScriptEncode, pbstrOut: ptr BSTR): HRESULT {.stdcall.}
+    EncodeSection*: proc(
+      self: ptr IActiveScriptEncode,
+      pchIn: LPCOLESTR,
+      cchIn: DWORD,
+      pchOut: LPOLESTR,
+      cchOut: DWORD,
+      pcchRet: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    DecodeScript*: proc(
+      self: ptr IActiveScriptEncode,
+      pchIn: LPCOLESTR,
+      cchIn: DWORD,
+      pchOut: LPOLESTR,
+      cchOut: DWORD,
+      pcchRet: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetEncodeProgId*:
+      proc(self: ptr IActiveScriptEncode, pbstrOut: ptr BSTR): HRESULT {.stdcall.}
+
   IActiveScriptHostEncode* {.pure.} = object
     lpVtbl*: ptr IActiveScriptHostEncodeVtbl
+
   IActiveScriptHostEncodeVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    EncodeScriptHostFile*: proc(self: ptr IActiveScriptHostEncode, bstrInFile: BSTR, pbstrOutFile: ptr BSTR, cFlags: ULONG, bstrDefaultLang: BSTR): HRESULT {.stdcall.}
+    EncodeScriptHostFile*: proc(
+      self: ptr IActiveScriptHostEncode,
+      bstrInFile: BSTR,
+      pbstrOutFile: ptr BSTR,
+      cFlags: ULONG,
+      bstrDefaultLang: BSTR,
+    ): HRESULT {.stdcall.}
+
   IBindEventHandler* {.pure.} = object
     lpVtbl*: ptr IBindEventHandlerVtbl
+
   IBindEventHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    BindHandler*: proc(self: ptr IBindEventHandler, pstrEvent: LPCOLESTR, pdisp: ptr IDispatch): HRESULT {.stdcall.}
+    BindHandler*: proc(
+      self: ptr IBindEventHandler, pstrEvent: LPCOLESTR, pdisp: ptr IDispatch
+    ): HRESULT {.stdcall.}
+
   IActiveScriptStats* {.pure.} = object
     lpVtbl*: ptr IActiveScriptStatsVtbl
+
   IActiveScriptStatsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetStat*: proc(self: ptr IActiveScriptStats, stid: DWORD, pluHi: ptr ULONG, pluLo: ptr ULONG): HRESULT {.stdcall.}
-    GetStatEx*: proc(self: ptr IActiveScriptStats, guid: REFGUID, pluHi: ptr ULONG, pluLo: ptr ULONG): HRESULT {.stdcall.}
+    GetStat*: proc(
+      self: ptr IActiveScriptStats, stid: DWORD, pluHi: ptr ULONG, pluLo: ptr ULONG
+    ): HRESULT {.stdcall.}
+    GetStatEx*: proc(
+      self: ptr IActiveScriptStats, guid: REFGUID, pluHi: ptr ULONG, pluLo: ptr ULONG
+    ): HRESULT {.stdcall.}
     ResetStats*: proc(self: ptr IActiveScriptStats): HRESULT {.stdcall.}
+
   IActiveScriptProperty* {.pure.} = object
     lpVtbl*: ptr IActiveScriptPropertyVtbl
+
   IActiveScriptPropertyVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetProperty*: proc(self: ptr IActiveScriptProperty, dwProperty: DWORD, pvarIndex: ptr VARIANT, pvarValue: ptr VARIANT): HRESULT {.stdcall.}
-    SetProperty*: proc(self: ptr IActiveScriptProperty, dwProperty: DWORD, pvarIndex: ptr VARIANT, pvarValue: ptr VARIANT): HRESULT {.stdcall.}
+    GetProperty*: proc(
+      self: ptr IActiveScriptProperty,
+      dwProperty: DWORD,
+      pvarIndex: ptr VARIANT,
+      pvarValue: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    SetProperty*: proc(
+      self: ptr IActiveScriptProperty,
+      dwProperty: DWORD,
+      pvarIndex: ptr VARIANT,
+      pvarValue: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+
   ITridentEventSink* {.pure.} = object
     lpVtbl*: ptr ITridentEventSinkVtbl
+
   ITridentEventSinkVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    FireEvent*: proc(self: ptr ITridentEventSink, pstrEvent: LPCOLESTR, pdp: ptr DISPPARAMS, pvarRes: ptr VARIANT, pei: ptr EXCEPINFO): HRESULT {.stdcall.}
+    FireEvent*: proc(
+      self: ptr ITridentEventSink,
+      pstrEvent: LPCOLESTR,
+      pdp: ptr DISPPARAMS,
+      pvarRes: ptr VARIANT,
+      pei: ptr EXCEPINFO,
+    ): HRESULT {.stdcall.}
+
   IActiveScriptGarbageCollector* {.pure.} = object
     lpVtbl*: ptr IActiveScriptGarbageCollectorVtbl
+
   IActiveScriptGarbageCollectorVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CollectGarbage*: proc(self: ptr IActiveScriptGarbageCollector, scriptgctype: SCRIPTGCTYPE): HRESULT {.stdcall.}
+    CollectGarbage*: proc(
+      self: ptr IActiveScriptGarbageCollector, scriptgctype: SCRIPTGCTYPE
+    ): HRESULT {.stdcall.}
+
   IActiveScriptSIPInfo* {.pure.} = object
     lpVtbl*: ptr IActiveScriptSIPInfoVtbl
+
   IActiveScriptSIPInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSIPOID*: proc(self: ptr IActiveScriptSIPInfo, poid_sip: ptr GUID): HRESULT {.stdcall.}
+    GetSIPOID*:
+      proc(self: ptr IActiveScriptSIPInfo, poid_sip: ptr GUID): HRESULT {.stdcall.}
+
   IActiveScriptSiteTraceInfo* {.pure.} = object
     lpVtbl*: ptr IActiveScriptSiteTraceInfoVtbl
+
   IActiveScriptSiteTraceInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SendScriptTraceInfo*: proc(self: ptr IActiveScriptSiteTraceInfo, stiEventType: SCRIPTTRACEINFO, guidContextID: GUID, dwScriptContextCookie: DWORD, lScriptStatementStart: LONG, lScriptStatementEnd: LONG, dwReserved: DWORD64): HRESULT {.stdcall.}
+    SendScriptTraceInfo*: proc(
+      self: ptr IActiveScriptSiteTraceInfo,
+      stiEventType: SCRIPTTRACEINFO,
+      guidContextID: GUID,
+      dwScriptContextCookie: DWORD,
+      lScriptStatementStart: LONG,
+      lScriptStatementEnd: LONG,
+      dwReserved: DWORD64,
+    ): HRESULT {.stdcall.}
+
   IActiveScriptTraceInfo* {.pure.} = object
     lpVtbl*: ptr IActiveScriptTraceInfoVtbl
+
   IActiveScriptTraceInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    StartScriptTracing*: proc(self: ptr IActiveScriptTraceInfo, pSiteTraceInfo: ptr IActiveScriptSiteTraceInfo, guidContextID: GUID): HRESULT {.stdcall.}
+    StartScriptTracing*: proc(
+      self: ptr IActiveScriptTraceInfo,
+      pSiteTraceInfo: ptr IActiveScriptSiteTraceInfo,
+      guidContextID: GUID,
+    ): HRESULT {.stdcall.}
     StopScriptTracing*: proc(self: ptr IActiveScriptTraceInfo): HRESULT {.stdcall.}
+
   IActiveScriptStringCompare* {.pure.} = object
     lpVtbl*: ptr IActiveScriptStringCompareVtbl
+
   IActiveScriptStringCompareVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    StrComp*: proc(self: ptr IActiveScriptStringCompare, bszStr1: BSTR, bszStr2: BSTR, iRet: ptr LONG): HRESULT {.stdcall.}
-proc LresultFromObject*(riid: REFIID, wParam: WPARAM, punk: LPUNKNOWN): LRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
-proc ObjectFromLresult*(lResult: LRESULT, riid: REFIID, wParam: WPARAM, ppvObject: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
-proc WindowFromAccessibleObject*(P1: ptr IAccessible, phwnd: ptr HWND): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
-proc AccessibleObjectFromWindow*(hwnd: HWND, dwId: DWORD, riid: REFIID, ppvObject: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
-proc AccessibleObjectFromEvent*(hwnd: HWND, dwId: DWORD, dwChildId: DWORD, ppacc: ptr ptr IAccessible, pvarChild: ptr VARIANT): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
-proc AccessibleObjectFromPoint*(ptScreen: POINT, ppacc: ptr ptr IAccessible, pvarChild: ptr VARIANT): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
-proc AccessibleChildren*(paccContainer: ptr IAccessible, iChildStart: LONG, cChildren: LONG, rgvarChildren: ptr VARIANT, pcObtained: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
-proc GetRoleTextA*(lRole: DWORD, lpszRole: LPSTR, cchRoleMax: UINT): UINT {.winapi, stdcall, dynlib: "oleacc", importc.}
-proc GetRoleTextW*(lRole: DWORD, lpszRole: LPWSTR, cchRoleMax: UINT): UINT {.winapi, stdcall, dynlib: "oleacc", importc.}
-proc GetStateTextA*(lStateBit: DWORD, lpszState: LPSTR, cchState: UINT): UINT {.winapi, stdcall, dynlib: "oleacc", importc.}
-proc GetStateTextW*(lStateBit: DWORD, lpszState: LPWSTR, cchState: UINT): UINT {.winapi, stdcall, dynlib: "oleacc", importc.}
-proc GetOleaccVersionInfo*(pVer: ptr DWORD, pBuild: ptr DWORD): VOID {.winapi, stdcall, dynlib: "oleacc", importc.}
-proc CreateStdAccessibleObject*(hwnd: HWND, idObject: LONG, riid: REFIID, ppvObject: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
-proc CreateStdAccessibleProxyA*(hwnd: HWND, pClassName: LPCSTR, idObject: LONG, riid: REFIID, ppvObject: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
-proc CreateStdAccessibleProxyW*(hwnd: HWND, pClassName: LPCWSTR, idObject: LONG, riid: REFIID, ppvObject: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
+    StrComp*: proc(
+      self: ptr IActiveScriptStringCompare, bszStr1: BSTR, bszStr2: BSTR, iRet: ptr LONG
+    ): HRESULT {.stdcall.}
+
+proc LresultFromObject*(
+  riid: REFIID, wParam: WPARAM, punk: LPUNKNOWN
+): LRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
+
+proc ObjectFromLresult*(
+  lResult: LRESULT, riid: REFIID, wParam: WPARAM, ppvObject: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
+
+proc WindowFromAccessibleObject*(
+  P1: ptr IAccessible, phwnd: ptr HWND
+): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
+
+proc AccessibleObjectFromWindow*(
+  hwnd: HWND, dwId: DWORD, riid: REFIID, ppvObject: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
+
+proc AccessibleObjectFromEvent*(
+  hwnd: HWND,
+  dwId: DWORD,
+  dwChildId: DWORD,
+  ppacc: ptr ptr IAccessible,
+  pvarChild: ptr VARIANT,
+): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
+
+proc AccessibleObjectFromPoint*(
+  ptScreen: POINT, ppacc: ptr ptr IAccessible, pvarChild: ptr VARIANT
+): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
+
+proc AccessibleChildren*(
+  paccContainer: ptr IAccessible,
+  iChildStart: LONG,
+  cChildren: LONG,
+  rgvarChildren: ptr VARIANT,
+  pcObtained: ptr LONG,
+): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
+
+proc GetRoleTextA*(
+  lRole: DWORD, lpszRole: LPSTR, cchRoleMax: UINT
+): UINT {.winapi, stdcall, dynlib: "oleacc", importc.}
+
+proc GetRoleTextW*(
+  lRole: DWORD, lpszRole: LPWSTR, cchRoleMax: UINT
+): UINT {.winapi, stdcall, dynlib: "oleacc", importc.}
+
+proc GetStateTextA*(
+  lStateBit: DWORD, lpszState: LPSTR, cchState: UINT
+): UINT {.winapi, stdcall, dynlib: "oleacc", importc.}
+
+proc GetStateTextW*(
+  lStateBit: DWORD, lpszState: LPWSTR, cchState: UINT
+): UINT {.winapi, stdcall, dynlib: "oleacc", importc.}
+
+proc GetOleaccVersionInfo*(
+  pVer: ptr DWORD, pBuild: ptr DWORD
+): VOID {.winapi, stdcall, dynlib: "oleacc", importc.}
+
+proc CreateStdAccessibleObject*(
+  hwnd: HWND, idObject: LONG, riid: REFIID, ppvObject: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
+
+proc CreateStdAccessibleProxyA*(
+  hwnd: HWND, pClassName: LPCSTR, idObject: LONG, riid: REFIID, ppvObject: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
+
+proc CreateStdAccessibleProxyW*(
+  hwnd: HWND, pClassName: LPCWSTR, idObject: LONG, riid: REFIID, ppvObject: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc.}
+
 proc DllRegisterServer*(): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
 proc DllUnregisterServer*(): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc OleCreatePropertyFrame*(hwndOwner: HWND, x: UINT, y: UINT, lpszCaption: LPCOLESTR, cObjects: ULONG, ppUnk: ptr LPUNKNOWN, cPages: ULONG, pPageClsID: LPCLSID, lcid: LCID, dwReserved: DWORD, pvReserved: LPVOID): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc OleCreatePropertyFrameIndirect*(lpParams: LPOCPFIPARAMS): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc OleTranslateColor*(clr: OLE_COLOR, hpal: HPALETTE, lpcolorref: ptr COLORREF): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc OleCreateFontIndirect*(lpFontDesc: LPFONTDESC, riid: REFIID, lplpvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc OleCreatePictureIndirect*(lpPictDesc: LPPICTDESC, riid: REFIID, fOwn: WINBOOL, lplpvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc OleLoadPicture*(lpstream: LPSTREAM, lSize: LONG, fRunmode: WINBOOL, riid: REFIID, lplpvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc OleLoadPictureEx*(lpstream: LPSTREAM, lSize: LONG, fRunmode: WINBOOL, riid: REFIID, xSizeDesired: DWORD, ySizeDesired: DWORD, dwFlags: DWORD, lplpvObj: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc OleLoadPicturePath*(szURLorPath: LPOLESTR, punkCaller: LPUNKNOWN, dwReserved: DWORD, clrReserved: OLE_COLOR, riid: REFIID, ppvRet: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc OleLoadPictureFile*(varFileName: VARIANT, lplpdispPicture: ptr LPDISPATCH): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc OleLoadPictureFileEx*(varFileName: VARIANT, xSizeDesired: DWORD, ySizeDesired: DWORD, dwFlags: DWORD, lplpdispPicture: ptr LPDISPATCH): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc OleSavePictureFile*(lpdispPicture: LPDISPATCH, bstrFileName: BSTR): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc OleIconToCursor*(hinstExe: HINSTANCE, hIcon: HICON): HCURSOR {.winapi, stdcall, dynlib: "oleaut32", importc.}
-proc OleUIAddVerbMenuW*(lpOleObj: LPOLEOBJECT, lpszShortType: LPCWSTR, hMenu: HMENU, uPos: UINT, uIDVerbMin: UINT, uIDVerbMax: UINT, bAddConvert: WINBOOL, idConvert: UINT, lphMenu: ptr HMENU): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIAddVerbMenuA*(lpOleObj: LPOLEOBJECT, lpszShortType: LPCSTR, hMenu: HMENU, uPos: UINT, uIDVerbMin: UINT, uIDVerbMax: UINT, bAddConvert: WINBOOL, idConvert: UINT, lphMenu: ptr HMENU): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIInsertObjectW*(P1: LPOLEUIINSERTOBJECTW): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIInsertObjectA*(P1: LPOLEUIINSERTOBJECTA): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIPasteSpecialW*(P1: LPOLEUIPASTESPECIALW): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIPasteSpecialA*(P1: LPOLEUIPASTESPECIALA): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIEditLinksW*(P1: LPOLEUIEDITLINKSW): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIEditLinksA*(P1: LPOLEUIEDITLINKSA): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIChangeIconW*(P1: LPOLEUICHANGEICONW): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIChangeIconA*(P1: LPOLEUICHANGEICONA): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIConvertW*(P1: LPOLEUICONVERTW): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIConvertA*(P1: LPOLEUICONVERTA): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUICanConvertOrActivateAs*(rClsid: REFCLSID, fIsLinkedObject: WINBOOL, wFormat: WORD): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc.}
+proc OleCreatePropertyFrame*(
+  hwndOwner: HWND,
+  x: UINT,
+  y: UINT,
+  lpszCaption: LPCOLESTR,
+  cObjects: ULONG,
+  ppUnk: ptr LPUNKNOWN,
+  cPages: ULONG,
+  pPageClsID: LPCLSID,
+  lcid: LCID,
+  dwReserved: DWORD,
+  pvReserved: LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc OleCreatePropertyFrameIndirect*(
+  lpParams: LPOCPFIPARAMS
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc OleTranslateColor*(
+  clr: OLE_COLOR, hpal: HPALETTE, lpcolorref: ptr COLORREF
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc OleCreateFontIndirect*(
+  lpFontDesc: LPFONTDESC, riid: REFIID, lplpvObj: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc OleCreatePictureIndirect*(
+  lpPictDesc: LPPICTDESC, riid: REFIID, fOwn: WINBOOL, lplpvObj: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc OleLoadPicture*(
+  lpstream: LPSTREAM, lSize: LONG, fRunmode: WINBOOL, riid: REFIID, lplpvObj: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc OleLoadPictureEx*(
+  lpstream: LPSTREAM,
+  lSize: LONG,
+  fRunmode: WINBOOL,
+  riid: REFIID,
+  xSizeDesired: DWORD,
+  ySizeDesired: DWORD,
+  dwFlags: DWORD,
+  lplpvObj: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc OleLoadPicturePath*(
+  szURLorPath: LPOLESTR,
+  punkCaller: LPUNKNOWN,
+  dwReserved: DWORD,
+  clrReserved: OLE_COLOR,
+  riid: REFIID,
+  ppvRet: ptr LPVOID,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc OleLoadPictureFile*(
+  varFileName: VARIANT, lplpdispPicture: ptr LPDISPATCH
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc OleLoadPictureFileEx*(
+  varFileName: VARIANT,
+  xSizeDesired: DWORD,
+  ySizeDesired: DWORD,
+  dwFlags: DWORD,
+  lplpdispPicture: ptr LPDISPATCH,
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc OleSavePictureFile*(
+  lpdispPicture: LPDISPATCH, bstrFileName: BSTR
+): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc OleIconToCursor*(
+  hinstExe: HINSTANCE, hIcon: HICON
+): HCURSOR {.winapi, stdcall, dynlib: "oleaut32", importc.}
+
+proc OleUIAddVerbMenuW*(
+  lpOleObj: LPOLEOBJECT,
+  lpszShortType: LPCWSTR,
+  hMenu: HMENU,
+  uPos: UINT,
+  uIDVerbMin: UINT,
+  uIDVerbMax: UINT,
+  bAddConvert: WINBOOL,
+  idConvert: UINT,
+  lphMenu: ptr HMENU,
+): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIAddVerbMenuA*(
+  lpOleObj: LPOLEOBJECT,
+  lpszShortType: LPCSTR,
+  hMenu: HMENU,
+  uPos: UINT,
+  uIDVerbMin: UINT,
+  uIDVerbMax: UINT,
+  bAddConvert: WINBOOL,
+  idConvert: UINT,
+  lphMenu: ptr HMENU,
+): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIInsertObjectW*(
+  P1: LPOLEUIINSERTOBJECTW
+): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIInsertObjectA*(
+  P1: LPOLEUIINSERTOBJECTA
+): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIPasteSpecialW*(
+  P1: LPOLEUIPASTESPECIALW
+): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIPasteSpecialA*(
+  P1: LPOLEUIPASTESPECIALA
+): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIEditLinksW*(
+  P1: LPOLEUIEDITLINKSW
+): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIEditLinksA*(
+  P1: LPOLEUIEDITLINKSA
+): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIChangeIconW*(
+  P1: LPOLEUICHANGEICONW
+): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIChangeIconA*(
+  P1: LPOLEUICHANGEICONA
+): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIConvertW*(
+  P1: LPOLEUICONVERTW
+): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIConvertA*(
+  P1: LPOLEUICONVERTA
+): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUICanConvertOrActivateAs*(
+  rClsid: REFCLSID, fIsLinkedObject: WINBOOL, wFormat: WORD
+): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc.}
+
 proc OleUIBusyW*(P1: LPOLEUIBUSYW): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
 proc OleUIBusyA*(P1: LPOLEUIBUSYA): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIChangeSourceW*(P1: LPOLEUICHANGESOURCEW): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIChangeSourceA*(P1: LPOLEUICHANGESOURCEA): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIObjectPropertiesW*(P1: LPOLEUIOBJECTPROPSW): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIObjectPropertiesA*(P1: LPOLEUIOBJECTPROPSA): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIUpdateLinksW*(lpOleUILinkCntr: LPOLEUILINKCONTAINERW, hwndParent: HWND, lpszTitle: LPWSTR, cLinks: int32): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc OleUIUpdateLinksA*(lpOleUILinkCntr: LPOLEUILINKCONTAINERA, hwndParent: HWND, lpszTitle: LPSTR, cLinks: int32): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc.}
-proc `bmp=`*(self: var PICTDESC, x: PICTDESC_UNION1_bmp) {.inline.} = self.union1.bmp = x
-proc bmp*(self: PICTDESC): PICTDESC_UNION1_bmp {.inline.} = self.union1.bmp
-proc bmp*(self: var PICTDESC): var PICTDESC_UNION1_bmp {.inline.} = self.union1.bmp
-proc `wmf=`*(self: var PICTDESC, x: PICTDESC_UNION1_wmf) {.inline.} = self.union1.wmf = x
-proc wmf*(self: PICTDESC): PICTDESC_UNION1_wmf {.inline.} = self.union1.wmf
-proc wmf*(self: var PICTDESC): var PICTDESC_UNION1_wmf {.inline.} = self.union1.wmf
-proc `icon=`*(self: var PICTDESC, x: PICTDESC_UNION1_icon) {.inline.} = self.union1.icon = x
-proc icon*(self: PICTDESC): PICTDESC_UNION1_icon {.inline.} = self.union1.icon
-proc icon*(self: var PICTDESC): var PICTDESC_UNION1_icon {.inline.} = self.union1.icon
-proc `emf=`*(self: var PICTDESC, x: PICTDESC_UNION1_emf) {.inline.} = self.union1.emf = x
-proc emf*(self: PICTDESC): PICTDESC_UNION1_emf {.inline.} = self.union1.emf
-proc emf*(self: var PICTDESC): var PICTDESC_UNION1_emf {.inline.} = self.union1.emf
-proc get_accParent*(self: ptr IAccessible, ppdispParent: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accParent(self, ppdispParent)
-proc get_accChildCount*(self: ptr IAccessible, pcountChildren: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accChildCount(self, pcountChildren)
-proc get_accChild*(self: ptr IAccessible, varChildID: VARIANT, ppdispChild: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accChild(self, varChildID, ppdispChild)
-proc get_accName*(self: ptr IAccessible, varID: VARIANT, pszName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accName(self, varID, pszName)
-proc get_accValue*(self: ptr IAccessible, varID: VARIANT, pszValue: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accValue(self, varID, pszValue)
-proc get_accDescription*(self: ptr IAccessible, varID: VARIANT, pszDescription: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accDescription(self, varID, pszDescription)
-proc get_accRole*(self: ptr IAccessible, varID: VARIANT, pvarRole: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accRole(self, varID, pvarRole)
-proc get_accState*(self: ptr IAccessible, varID: VARIANT, pvarState: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accState(self, varID, pvarState)
-proc get_accHelp*(self: ptr IAccessible, varID: VARIANT, pszHelp: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accHelp(self, varID, pszHelp)
-proc get_accHelpTopic*(self: ptr IAccessible, pszHelpFile: ptr BSTR, varID: VARIANT, pidTopic: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accHelpTopic(self, pszHelpFile, varID, pidTopic)
-proc get_accKeyboardShortcut*(self: ptr IAccessible, varID: VARIANT, pszKeyboardShortcut: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accKeyboardShortcut(self, varID, pszKeyboardShortcut)
-proc get_accFocus*(self: ptr IAccessible, pvarID: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accFocus(self, pvarID)
-proc get_accSelection*(self: ptr IAccessible, pvarID: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accSelection(self, pvarID)
-proc get_accDefaultAction*(self: ptr IAccessible, varID: VARIANT, pszDefaultAction: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_accDefaultAction(self, varID, pszDefaultAction)
-proc accSelect*(self: ptr IAccessible, flagsSelect: LONG, varID: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.accSelect(self, flagsSelect, varID)
-proc accLocation*(self: ptr IAccessible, pxLeft: ptr LONG, pyTop: ptr LONG, pcxWidth: ptr LONG, pcyHeight: ptr LONG, varID: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.accLocation(self, pxLeft, pyTop, pcxWidth, pcyHeight, varID)
-proc accNavigate*(self: ptr IAccessible, navDir: LONG, varStart: VARIANT, pvarEnd: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.accNavigate(self, navDir, varStart, pvarEnd)
-proc accHitTest*(self: ptr IAccessible, xLeft: LONG, yTop: LONG, pvarID: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.accHitTest(self, xLeft, yTop, pvarID)
-proc accDoDefaultAction*(self: ptr IAccessible, varID: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.accDoDefaultAction(self, varID)
-proc put_accName*(self: ptr IAccessible, varID: VARIANT, pszName: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_accName(self, varID, pszName)
-proc put_accValue*(self: ptr IAccessible, varID: VARIANT, pszValue: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_accValue(self, varID, pszValue)
-proc AccessibleObjectFromID*(self: ptr IAccessibleHandler, hwnd: LONG, lObjectID: LONG, pIAccessible: ptr LPACCESSIBLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AccessibleObjectFromID(self, hwnd, lObjectID, pIAccessible)
-proc GetIdentityString*(self: ptr IAccIdentity, dwIDChild: DWORD, ppIDString: ptr ptr BYTE, pdwIDStringLen: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIdentityString(self, dwIDChild, ppIDString, pdwIDStringLen)
-proc GetPropValue*(self: ptr IAccPropServer, pIDString: ptr BYTE, dwIDStringLen: DWORD, idProp: MSAAPROPID, pvarValue: ptr VARIANT, pfHasProp: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropValue(self, pIDString, dwIDStringLen, idProp, pvarValue, pfHasProp)
-proc SetPropValue*(self: ptr IAccPropServices, pIDString: ptr BYTE, dwIDStringLen: DWORD, idProp: MSAAPROPID, `var`: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPropValue(self, pIDString, dwIDStringLen, idProp, `var`)
-proc SetPropServer*(self: ptr IAccPropServices, pIDString: ptr BYTE, dwIDStringLen: DWORD, paProps: ptr MSAAPROPID, cProps: int32, pServer: ptr IAccPropServer, annoScope: AnnoScope): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPropServer(self, pIDString, dwIDStringLen, paProps, cProps, pServer, annoScope)
-proc ClearProps*(self: ptr IAccPropServices, pIDString: ptr BYTE, dwIDStringLen: DWORD, paProps: ptr MSAAPROPID, cProps: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClearProps(self, pIDString, dwIDStringLen, paProps, cProps)
-proc SetHwndProp*(self: ptr IAccPropServices, hwnd: HWND, idObject: DWORD, idChild: DWORD, idProp: MSAAPROPID, `var`: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHwndProp(self, hwnd, idObject, idChild, idProp, `var`)
-proc SetHwndPropStr*(self: ptr IAccPropServices, hwnd: HWND, idObject: DWORD, idChild: DWORD, idProp: MSAAPROPID, str: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHwndPropStr(self, hwnd, idObject, idChild, idProp, str)
-proc SetHwndPropServer*(self: ptr IAccPropServices, hwnd: HWND, idObject: DWORD, idChild: DWORD, paProps: ptr MSAAPROPID, cProps: int32, pServer: ptr IAccPropServer, annoScope: AnnoScope): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHwndPropServer(self, hwnd, idObject, idChild, paProps, cProps, pServer, annoScope)
-proc ClearHwndProps*(self: ptr IAccPropServices, hwnd: HWND, idObject: DWORD, idChild: DWORD, paProps: ptr MSAAPROPID, cProps: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClearHwndProps(self, hwnd, idObject, idChild, paProps, cProps)
-proc ComposeHwndIdentityString*(self: ptr IAccPropServices, hwnd: HWND, idObject: DWORD, idChild: DWORD, ppIDString: ptr ptr BYTE, pdwIDStringLen: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ComposeHwndIdentityString(self, hwnd, idObject, idChild, ppIDString, pdwIDStringLen)
-proc DecomposeHwndIdentityString*(self: ptr IAccPropServices, pIDString: ptr BYTE, dwIDStringLen: DWORD, phwnd: ptr HWND, pidObject: ptr DWORD, pidChild: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DecomposeHwndIdentityString(self, pIDString, dwIDStringLen, phwnd, pidObject, pidChild)
-proc SetHmenuProp*(self: ptr IAccPropServices, hmenu: HMENU, idChild: DWORD, idProp: MSAAPROPID, `var`: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHmenuProp(self, hmenu, idChild, idProp, `var`)
-proc SetHmenuPropStr*(self: ptr IAccPropServices, hmenu: HMENU, idChild: DWORD, idProp: MSAAPROPID, str: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHmenuPropStr(self, hmenu, idChild, idProp, str)
-proc SetHmenuPropServer*(self: ptr IAccPropServices, hmenu: HMENU, idChild: DWORD, paProps: ptr MSAAPROPID, cProps: int32, pServer: ptr IAccPropServer, annoScope: AnnoScope): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHmenuPropServer(self, hmenu, idChild, paProps, cProps, pServer, annoScope)
-proc ClearHmenuProps*(self: ptr IAccPropServices, hmenu: HMENU, idChild: DWORD, paProps: ptr MSAAPROPID, cProps: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClearHmenuProps(self, hmenu, idChild, paProps, cProps)
-proc ComposeHmenuIdentityString*(self: ptr IAccPropServices, hmenu: HMENU, idChild: DWORD, ppIDString: ptr ptr BYTE, pdwIDStringLen: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ComposeHmenuIdentityString(self, hmenu, idChild, ppIDString, pdwIDStringLen)
-proc DecomposeHmenuIdentityString*(self: ptr IAccPropServices, pIDString: ptr BYTE, dwIDStringLen: DWORD, phmenu: ptr HMENU, pidChild: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DecomposeHmenuIdentityString(self, pIDString, dwIDStringLen, phmenu, pidChild)
-proc GetInterfaceSafetyOptions*(self: ptr IObjectSafety, riid: REFIID, pdwSupportedOptions: ptr DWORD, pdwEnabledOptions: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInterfaceSafetyOptions(self, riid, pdwSupportedOptions, pdwEnabledOptions)
-proc SetInterfaceSafetyOptions*(self: ptr IObjectSafety, riid: REFIID, dwOptionSetMask: DWORD, dwEnabledOptions: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetInterfaceSafetyOptions(self, riid, dwOptionSetMask, dwEnabledOptions)
-proc GetLCID*(self: ptr IActiveScriptSite, plcid: ptr LCID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLCID(self, plcid)
-proc GetItemInfo*(self: ptr IActiveScriptSite, pstrName: LPCOLESTR, dwReturnMask: DWORD, ppiunkItem: ptr ptr IUnknown, ppti: ptr ptr ITypeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemInfo(self, pstrName, dwReturnMask, ppiunkItem, ppti)
-proc GetDocVersionString*(self: ptr IActiveScriptSite, pbstrVersion: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDocVersionString(self, pbstrVersion)
-proc OnScriptTerminate*(self: ptr IActiveScriptSite, pvarResult: ptr VARIANT, pexcepinfo: ptr EXCEPINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnScriptTerminate(self, pvarResult, pexcepinfo)
-proc OnStateChange*(self: ptr IActiveScriptSite, ssScriptState: TSCRIPTSTATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnStateChange(self, ssScriptState)
-proc OnScriptError*(self: ptr IActiveScriptSite, pscripterror: ptr IActiveScriptError): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnScriptError(self, pscripterror)
-proc OnEnterScript*(self: ptr IActiveScriptSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnEnterScript(self)
-proc OnLeaveScript*(self: ptr IActiveScriptSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnLeaveScript(self)
-proc GetExceptionInfo*(self: ptr IActiveScriptError, pexcepinfo: ptr EXCEPINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetExceptionInfo(self, pexcepinfo)
-proc GetSourcePosition*(self: ptr IActiveScriptError, pdwSourceContext: ptr DWORD, pulLineNumber: ptr ULONG, plCharacterPosition: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSourcePosition(self, pdwSourceContext, pulLineNumber, plCharacterPosition)
-proc GetSourceLineText*(self: ptr IActiveScriptError, pbstrSourceLine: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSourceLineText(self, pbstrSourceLine)
-proc GetSourcePosition64*(self: ptr IActiveScriptError64, pdwSourceContext: ptr DWORDLONG, pulLineNumber: ptr ULONG, plCharacterPosition: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSourcePosition64(self, pdwSourceContext, pulLineNumber, plCharacterPosition)
-proc GetWindow*(self: ptr IActiveScriptSiteWindow, phwnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWindow(self, phwnd)
-proc EnableModeless*(self: ptr IActiveScriptSiteWindow, fEnable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnableModeless(self, fEnable)
-proc GetUIBehavior*(self: ptr IActiveScriptSiteUIControl, UicItem: SCRIPTUICITEM, pUicHandling: ptr SCRIPTUICHANDLING): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUIBehavior(self, UicItem, pUicHandling)
-proc QueryContinue*(self: ptr IActiveScriptSiteInterruptPoll): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryContinue(self)
-proc SetScriptSite*(self: ptr IActiveScript, pass: ptr IActiveScriptSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetScriptSite(self, pass)
-proc GetScriptSite*(self: ptr IActiveScript, riid: REFIID, ppvObject: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetScriptSite(self, riid, ppvObject)
-proc SetScriptState*(self: ptr IActiveScript, ss: TSCRIPTSTATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetScriptState(self, ss)
-proc GetScriptState*(self: ptr IActiveScript, pssState: ptr TSCRIPTSTATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetScriptState(self, pssState)
-proc Close*(self: ptr IActiveScript): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Close(self)
-proc AddNamedItem*(self: ptr IActiveScript, pstrName: LPCOLESTR, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddNamedItem(self, pstrName, dwFlags)
-proc AddTypeLib*(self: ptr IActiveScript, rguidTypeLib: REFGUID, dwMajor: DWORD, dwMinor: DWORD, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddTypeLib(self, rguidTypeLib, dwMajor, dwMinor, dwFlags)
-proc GetScriptDispatch*(self: ptr IActiveScript, pstrItemName: LPCOLESTR, ppdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetScriptDispatch(self, pstrItemName, ppdisp)
-proc GetCurrentScriptThreadID*(self: ptr IActiveScript, pstidThread: ptr SCRIPTTHREADID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentScriptThreadID(self, pstidThread)
-proc GetScriptThreadID*(self: ptr IActiveScript, dwWin32ThreadId: DWORD, pstidThread: ptr SCRIPTTHREADID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetScriptThreadID(self, dwWin32ThreadId, pstidThread)
-proc GetScriptThreadState*(self: ptr IActiveScript, stidThread: SCRIPTTHREADID, pstsState: ptr SCRIPTTHREADSTATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetScriptThreadState(self, stidThread, pstsState)
-proc InterruptScriptThread*(self: ptr IActiveScript, stidThread: SCRIPTTHREADID, pexcepinfo: ptr EXCEPINFO, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InterruptScriptThread(self, stidThread, pexcepinfo, dwFlags)
-proc Clone*(self: ptr IActiveScript, ppscript: ptr ptr IActiveScript): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppscript)
-proc InitNew*(self: ptr IActiveScriptParse32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitNew(self)
-proc AddScriptlet*(self: ptr IActiveScriptParse32, pstrDefaultName: LPCOLESTR, pstrCode: LPCOLESTR, pstrItemName: LPCOLESTR, pstrSubItemName: LPCOLESTR, pstrEventName: LPCOLESTR, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORD, ulStartingLineNumber: ULONG, dwFlags: DWORD, pbstrName: ptr BSTR, pexcepinfo: ptr EXCEPINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddScriptlet(self, pstrDefaultName, pstrCode, pstrItemName, pstrSubItemName, pstrEventName, pstrDelimiter, dwSourceContextCookie, ulStartingLineNumber, dwFlags, pbstrName, pexcepinfo)
-proc ParseScriptText*(self: ptr IActiveScriptParse32, pstrCode: LPCOLESTR, pstrItemName: LPCOLESTR, punkContext: ptr IUnknown, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORD, ulStartingLineNumber: ULONG, dwFlags: DWORD, pvarResult: ptr VARIANT, pexcepinfo: ptr EXCEPINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseScriptText(self, pstrCode, pstrItemName, punkContext, pstrDelimiter, dwSourceContextCookie, ulStartingLineNumber, dwFlags, pvarResult, pexcepinfo)
-proc InitNew*(self: ptr IActiveScriptParse64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitNew(self)
-proc AddScriptlet*(self: ptr IActiveScriptParse64, pstrDefaultName: LPCOLESTR, pstrCode: LPCOLESTR, pstrItemName: LPCOLESTR, pstrSubItemName: LPCOLESTR, pstrEventName: LPCOLESTR, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORDLONG, ulStartingLineNumber: ULONG, dwFlags: DWORD, pbstrName: ptr BSTR, pexcepinfo: ptr EXCEPINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddScriptlet(self, pstrDefaultName, pstrCode, pstrItemName, pstrSubItemName, pstrEventName, pstrDelimiter, dwSourceContextCookie, ulStartingLineNumber, dwFlags, pbstrName, pexcepinfo)
-proc ParseScriptText*(self: ptr IActiveScriptParse64, pstrCode: LPCOLESTR, pstrItemName: LPCOLESTR, punkContext: ptr IUnknown, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORDLONG, ulStartingLineNumber: ULONG, dwFlags: DWORD, pvarResult: ptr VARIANT, pexcepinfo: ptr EXCEPINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseScriptText(self, pstrCode, pstrItemName, punkContext, pstrDelimiter, dwSourceContextCookie, ulStartingLineNumber, dwFlags, pvarResult, pexcepinfo)
-proc ParseProcedureText*(self: ptr IActiveScriptParseProcedureOld32, pstrCode: LPCOLESTR, pstrFormalParams: LPCOLESTR, pstrItemName: LPCOLESTR, punkContext: ptr IUnknown, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORD, ulStartingLineNumber: ULONG, dwFlags: DWORD, ppdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseProcedureText(self, pstrCode, pstrFormalParams, pstrItemName, punkContext, pstrDelimiter, dwSourceContextCookie, ulStartingLineNumber, dwFlags, ppdisp)
-proc ParseProcedureText*(self: ptr IActiveScriptParseProcedureOld64, pstrCode: LPCOLESTR, pstrFormalParams: LPCOLESTR, pstrItemName: LPCOLESTR, punkContext: ptr IUnknown, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORDLONG, ulStartingLineNumber: ULONG, dwFlags: DWORD, ppdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseProcedureText(self, pstrCode, pstrFormalParams, pstrItemName, punkContext, pstrDelimiter, dwSourceContextCookie, ulStartingLineNumber, dwFlags, ppdisp)
-proc ParseProcedureText*(self: ptr IActiveScriptParseProcedure32, pstrCode: LPCOLESTR, pstrFormalParams: LPCOLESTR, pstrProcedureName: LPCOLESTR, pstrItemName: LPCOLESTR, punkContext: ptr IUnknown, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORD, ulStartingLineNumber: ULONG, dwFlags: DWORD, ppdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseProcedureText(self, pstrCode, pstrFormalParams, pstrProcedureName, pstrItemName, punkContext, pstrDelimiter, dwSourceContextCookie, ulStartingLineNumber, dwFlags, ppdisp)
-proc ParseProcedureText*(self: ptr IActiveScriptParseProcedure64, pstrCode: LPCOLESTR, pstrFormalParams: LPCOLESTR, pstrProcedureName: LPCOLESTR, pstrItemName: LPCOLESTR, punkContext: ptr IUnknown, pstrDelimiter: LPCOLESTR, dwSourceContextCookie: DWORDLONG, ulStartingLineNumber: ULONG, dwFlags: DWORD, ppdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseProcedureText(self, pstrCode, pstrFormalParams, pstrProcedureName, pstrItemName, punkContext, pstrDelimiter, dwSourceContextCookie, ulStartingLineNumber, dwFlags, ppdisp)
-proc EncodeSection*(self: ptr IActiveScriptEncode, pchIn: LPCOLESTR, cchIn: DWORD, pchOut: LPOLESTR, cchOut: DWORD, pcchRet: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EncodeSection(self, pchIn, cchIn, pchOut, cchOut, pcchRet)
-proc DecodeScript*(self: ptr IActiveScriptEncode, pchIn: LPCOLESTR, cchIn: DWORD, pchOut: LPOLESTR, cchOut: DWORD, pcchRet: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DecodeScript(self, pchIn, cchIn, pchOut, cchOut, pcchRet)
-proc GetEncodeProgId*(self: ptr IActiveScriptEncode, pbstrOut: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEncodeProgId(self, pbstrOut)
-proc EncodeScriptHostFile*(self: ptr IActiveScriptHostEncode, bstrInFile: BSTR, pbstrOutFile: ptr BSTR, cFlags: ULONG, bstrDefaultLang: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EncodeScriptHostFile(self, bstrInFile, pbstrOutFile, cFlags, bstrDefaultLang)
-proc BindHandler*(self: ptr IBindEventHandler, pstrEvent: LPCOLESTR, pdisp: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindHandler(self, pstrEvent, pdisp)
-proc GetStat*(self: ptr IActiveScriptStats, stid: DWORD, pluHi: ptr ULONG, pluLo: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetStat(self, stid, pluHi, pluLo)
-proc GetStatEx*(self: ptr IActiveScriptStats, guid: REFGUID, pluHi: ptr ULONG, pluLo: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetStatEx(self, guid, pluHi, pluLo)
-proc ResetStats*(self: ptr IActiveScriptStats): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResetStats(self)
-proc GetProperty*(self: ptr IActiveScriptProperty, dwProperty: DWORD, pvarIndex: ptr VARIANT, pvarValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty(self, dwProperty, pvarIndex, pvarValue)
-proc SetProperty*(self: ptr IActiveScriptProperty, dwProperty: DWORD, pvarIndex: ptr VARIANT, pvarValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProperty(self, dwProperty, pvarIndex, pvarValue)
-proc FireEvent*(self: ptr ITridentEventSink, pstrEvent: LPCOLESTR, pdp: ptr DISPPARAMS, pvarRes: ptr VARIANT, pei: ptr EXCEPINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FireEvent(self, pstrEvent, pdp, pvarRes, pei)
-proc CollectGarbage*(self: ptr IActiveScriptGarbageCollector, scriptgctype: SCRIPTGCTYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CollectGarbage(self, scriptgctype)
-proc GetSIPOID*(self: ptr IActiveScriptSIPInfo, poid_sip: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSIPOID(self, poid_sip)
-proc SendScriptTraceInfo*(self: ptr IActiveScriptSiteTraceInfo, stiEventType: SCRIPTTRACEINFO, guidContextID: GUID, dwScriptContextCookie: DWORD, lScriptStatementStart: LONG, lScriptStatementEnd: LONG, dwReserved: DWORD64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SendScriptTraceInfo(self, stiEventType, guidContextID, dwScriptContextCookie, lScriptStatementStart, lScriptStatementEnd, dwReserved)
-proc StartScriptTracing*(self: ptr IActiveScriptTraceInfo, pSiteTraceInfo: ptr IActiveScriptSiteTraceInfo, guidContextID: GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StartScriptTracing(self, pSiteTraceInfo, guidContextID)
-proc StopScriptTracing*(self: ptr IActiveScriptTraceInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StopScriptTracing(self)
-proc StrComp*(self: ptr IActiveScriptStringCompare, bszStr1: BSTR, bszStr2: BSTR, iRet: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StrComp(self, bszStr1, bszStr2, iRet)
-proc GetNextLink*(self: ptr IOleUILinkContainerW, dwLink: DWORD): DWORD {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNextLink(self, dwLink)
-proc SetLinkUpdateOptions*(self: ptr IOleUILinkContainerW, dwLink: DWORD, dwUpdateOpt: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetLinkUpdateOptions(self, dwLink, dwUpdateOpt)
-proc GetLinkUpdateOptions*(self: ptr IOleUILinkContainerW, dwLink: DWORD, lpdwUpdateOpt: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLinkUpdateOptions(self, dwLink, lpdwUpdateOpt)
-proc SetLinkSource*(self: ptr IOleUILinkContainerW, dwLink: DWORD, lpszDisplayName: LPWSTR, lenFileName: ULONG, pchEaten: ptr ULONG, fValidateSource: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetLinkSource(self, dwLink, lpszDisplayName, lenFileName, pchEaten, fValidateSource)
-proc GetLinkSource*(self: ptr IOleUILinkContainerW, dwLink: DWORD, lplpszDisplayName: ptr LPWSTR, lplenFileName: ptr ULONG, lplpszFullLinkType: ptr LPWSTR, lplpszShortLinkType: ptr LPWSTR, lpfSourceAvailable: ptr WINBOOL, lpfIsSelected: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLinkSource(self, dwLink, lplpszDisplayName, lplenFileName, lplpszFullLinkType, lplpszShortLinkType, lpfSourceAvailable, lpfIsSelected)
-proc OpenLinkSource*(self: ptr IOleUILinkContainerW, dwLink: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OpenLinkSource(self, dwLink)
-proc UpdateLink*(self: ptr IOleUILinkContainerW, dwLink: DWORD, fErrorMessage: WINBOOL, fReserved: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateLink(self, dwLink, fErrorMessage, fReserved)
-proc CancelLink*(self: ptr IOleUILinkContainerW, dwLink: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CancelLink(self, dwLink)
-proc GetNextLink*(self: ptr IOleUILinkContainerA, dwLink: DWORD): DWORD {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNextLink(self, dwLink)
-proc SetLinkUpdateOptions*(self: ptr IOleUILinkContainerA, dwLink: DWORD, dwUpdateOpt: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetLinkUpdateOptions(self, dwLink, dwUpdateOpt)
-proc GetLinkUpdateOptions*(self: ptr IOleUILinkContainerA, dwLink: DWORD, lpdwUpdateOpt: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLinkUpdateOptions(self, dwLink, lpdwUpdateOpt)
-proc SetLinkSource*(self: ptr IOleUILinkContainerA, dwLink: DWORD, lpszDisplayName: LPSTR, lenFileName: ULONG, pchEaten: ptr ULONG, fValidateSource: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetLinkSource(self, dwLink, lpszDisplayName, lenFileName, pchEaten, fValidateSource)
-proc GetLinkSource*(self: ptr IOleUILinkContainerA, dwLink: DWORD, lplpszDisplayName: ptr LPSTR, lplenFileName: ptr ULONG, lplpszFullLinkType: ptr LPSTR, lplpszShortLinkType: ptr LPSTR, lpfSourceAvailable: ptr WINBOOL, lpfIsSelected: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLinkSource(self, dwLink, lplpszDisplayName, lplenFileName, lplpszFullLinkType, lplpszShortLinkType, lpfSourceAvailable, lpfIsSelected)
-proc OpenLinkSource*(self: ptr IOleUILinkContainerA, dwLink: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OpenLinkSource(self, dwLink)
-proc UpdateLink*(self: ptr IOleUILinkContainerA, dwLink: DWORD, fErrorMessage: WINBOOL, fReserved: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateLink(self, dwLink, fErrorMessage, fReserved)
-proc CancelLink*(self: ptr IOleUILinkContainerA, dwLink: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CancelLink(self, dwLink)
-proc GetObjectInfo*(self: ptr IOleUIObjInfoW, dwObject: DWORD, lpdwObjSize: ptr DWORD, lplpszLabel: ptr LPWSTR, lplpszType: ptr LPWSTR, lplpszShortType: ptr LPWSTR, lplpszLocation: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObjectInfo(self, dwObject, lpdwObjSize, lplpszLabel, lplpszType, lplpszShortType, lplpszLocation)
-proc GetConvertInfo*(self: ptr IOleUIObjInfoW, dwObject: DWORD, lpClassID: ptr CLSID, lpwFormat: ptr WORD, lpConvertDefaultClassID: ptr CLSID, lplpClsidExclude: ptr LPCLSID, lpcClsidExclude: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConvertInfo(self, dwObject, lpClassID, lpwFormat, lpConvertDefaultClassID, lplpClsidExclude, lpcClsidExclude)
-proc ConvertObject*(self: ptr IOleUIObjInfoW, dwObject: DWORD, clsidNew: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ConvertObject(self, dwObject, clsidNew)
-proc GetViewInfo*(self: ptr IOleUIObjInfoW, dwObject: DWORD, phMetaPict: ptr HGLOBAL, pdvAspect: ptr DWORD, pnCurrentScale: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetViewInfo(self, dwObject, phMetaPict, pdvAspect, pnCurrentScale)
-proc SetViewInfo*(self: ptr IOleUIObjInfoW, dwObject: DWORD, hMetaPict: HGLOBAL, dvAspect: DWORD, nCurrentScale: int32, bRelativeToOrig: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetViewInfo(self, dwObject, hMetaPict, dvAspect, nCurrentScale, bRelativeToOrig)
-proc GetObjectInfo*(self: ptr IOleUIObjInfoA, dwObject: DWORD, lpdwObjSize: ptr DWORD, lplpszLabel: ptr LPSTR, lplpszType: ptr LPSTR, lplpszShortType: ptr LPSTR, lplpszLocation: ptr LPSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObjectInfo(self, dwObject, lpdwObjSize, lplpszLabel, lplpszType, lplpszShortType, lplpszLocation)
-proc GetConvertInfo*(self: ptr IOleUIObjInfoA, dwObject: DWORD, lpClassID: ptr CLSID, lpwFormat: ptr WORD, lpConvertDefaultClassID: ptr CLSID, lplpClsidExclude: ptr LPCLSID, lpcClsidExclude: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConvertInfo(self, dwObject, lpClassID, lpwFormat, lpConvertDefaultClassID, lplpClsidExclude, lpcClsidExclude)
-proc ConvertObject*(self: ptr IOleUIObjInfoA, dwObject: DWORD, clsidNew: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ConvertObject(self, dwObject, clsidNew)
-proc GetViewInfo*(self: ptr IOleUIObjInfoA, dwObject: DWORD, phMetaPict: ptr HGLOBAL, pdvAspect: ptr DWORD, pnCurrentScale: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetViewInfo(self, dwObject, phMetaPict, pdvAspect, pnCurrentScale)
-proc SetViewInfo*(self: ptr IOleUIObjInfoA, dwObject: DWORD, hMetaPict: HGLOBAL, dvAspect: DWORD, nCurrentScale: int32, bRelativeToOrig: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetViewInfo(self, dwObject, hMetaPict, dvAspect, nCurrentScale, bRelativeToOrig)
-proc GetLastUpdate*(self: ptr IOleUILinkInfoW, dwLink: DWORD, lpLastUpdate: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLastUpdate(self, dwLink, lpLastUpdate)
-proc GetLastUpdate*(self: ptr IOleUILinkInfoA, dwLink: DWORD, lpLastUpdate: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLastUpdate(self, dwLink, lpLastUpdate)
-converter winimConverterIAccessibleToIDispatch*(x: ptr IAccessible): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIAccessibleToIUnknown*(x: ptr IAccessible): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAccessibleHandlerToIUnknown*(x: ptr IAccessibleHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAccIdentityToIUnknown*(x: ptr IAccIdentity): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAccPropServerToIUnknown*(x: ptr IAccPropServer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAccPropServicesToIUnknown*(x: ptr IAccPropServices): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectSafetyToIUnknown*(x: ptr IObjectSafety): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptSiteToIUnknown*(x: ptr IActiveScriptSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptErrorToIUnknown*(x: ptr IActiveScriptError): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptError64ToIActiveScriptError*(x: ptr IActiveScriptError64): ptr IActiveScriptError = cast[ptr IActiveScriptError](x)
-converter winimConverterIActiveScriptError64ToIUnknown*(x: ptr IActiveScriptError64): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptSiteWindowToIUnknown*(x: ptr IActiveScriptSiteWindow): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptSiteUIControlToIUnknown*(x: ptr IActiveScriptSiteUIControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptSiteInterruptPollToIUnknown*(x: ptr IActiveScriptSiteInterruptPoll): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptToIUnknown*(x: ptr IActiveScript): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptParse32ToIUnknown*(x: ptr IActiveScriptParse32): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptParse64ToIUnknown*(x: ptr IActiveScriptParse64): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptParseProcedureOld32ToIUnknown*(x: ptr IActiveScriptParseProcedureOld32): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptParseProcedureOld64ToIUnknown*(x: ptr IActiveScriptParseProcedureOld64): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptParseProcedure32ToIUnknown*(x: ptr IActiveScriptParseProcedure32): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptParseProcedure64ToIUnknown*(x: ptr IActiveScriptParseProcedure64): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptParseProcedure2_32ToIActiveScriptParseProcedure32*(x: ptr IActiveScriptParseProcedure2_32): ptr IActiveScriptParseProcedure32 = cast[ptr IActiveScriptParseProcedure32](x)
-converter winimConverterIActiveScriptParseProcedure2_32ToIUnknown*(x: ptr IActiveScriptParseProcedure2_32): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptParseProcedure2_64ToIActiveScriptParseProcedure64*(x: ptr IActiveScriptParseProcedure2_64): ptr IActiveScriptParseProcedure64 = cast[ptr IActiveScriptParseProcedure64](x)
-converter winimConverterIActiveScriptParseProcedure2_64ToIUnknown*(x: ptr IActiveScriptParseProcedure2_64): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptEncodeToIUnknown*(x: ptr IActiveScriptEncode): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptHostEncodeToIUnknown*(x: ptr IActiveScriptHostEncode): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIBindEventHandlerToIUnknown*(x: ptr IBindEventHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptStatsToIUnknown*(x: ptr IActiveScriptStats): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptPropertyToIUnknown*(x: ptr IActiveScriptProperty): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITridentEventSinkToIUnknown*(x: ptr ITridentEventSink): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptGarbageCollectorToIUnknown*(x: ptr IActiveScriptGarbageCollector): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptSIPInfoToIUnknown*(x: ptr IActiveScriptSIPInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptSiteTraceInfoToIUnknown*(x: ptr IActiveScriptSiteTraceInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptTraceInfoToIUnknown*(x: ptr IActiveScriptTraceInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveScriptStringCompareToIUnknown*(x: ptr IActiveScriptStringCompare): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleUILinkContainerWToIUnknown*(x: ptr IOleUILinkContainerW): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleUILinkContainerAToIUnknown*(x: ptr IOleUILinkContainerA): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleUIObjInfoWToIUnknown*(x: ptr IOleUIObjInfoW): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleUIObjInfoAToIUnknown*(x: ptr IOleUIObjInfoA): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleUILinkInfoWToIOleUILinkContainerW*(x: ptr IOleUILinkInfoW): ptr IOleUILinkContainerW = cast[ptr IOleUILinkContainerW](x)
-converter winimConverterIOleUILinkInfoWToIUnknown*(x: ptr IOleUILinkInfoW): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOleUILinkInfoAToIOleUILinkContainerA*(x: ptr IOleUILinkInfoA): ptr IOleUILinkContainerA = cast[ptr IOleUILinkContainerA](x)
-converter winimConverterIOleUILinkInfoAToIUnknown*(x: ptr IOleUILinkInfoA): ptr IUnknown = cast[ptr IUnknown](x)
+proc OleUIChangeSourceW*(
+  P1: LPOLEUICHANGESOURCEW
+): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIChangeSourceA*(
+  P1: LPOLEUICHANGESOURCEA
+): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIObjectPropertiesW*(
+  P1: LPOLEUIOBJECTPROPSW
+): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIObjectPropertiesA*(
+  P1: LPOLEUIOBJECTPROPSA
+): UINT {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIUpdateLinksW*(
+  lpOleUILinkCntr: LPOLEUILINKCONTAINERW,
+  hwndParent: HWND,
+  lpszTitle: LPWSTR,
+  cLinks: int32,
+): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc OleUIUpdateLinksA*(
+  lpOleUILinkCntr: LPOLEUILINKCONTAINERA,
+  hwndParent: HWND,
+  lpszTitle: LPSTR,
+  cLinks: int32,
+): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc.}
+
+proc `bmp=`*(self: var PICTDESC, x: PICTDESC_UNION1_bmp) {.inline.} =
+  self.union1.bmp = x
+
+proc bmp*(self: PICTDESC): PICTDESC_UNION1_bmp {.inline.} =
+  self.union1.bmp
+
+proc bmp*(self: var PICTDESC): var PICTDESC_UNION1_bmp {.inline.} =
+  self.union1.bmp
+
+proc `wmf=`*(self: var PICTDESC, x: PICTDESC_UNION1_wmf) {.inline.} =
+  self.union1.wmf = x
+
+proc wmf*(self: PICTDESC): PICTDESC_UNION1_wmf {.inline.} =
+  self.union1.wmf
+
+proc wmf*(self: var PICTDESC): var PICTDESC_UNION1_wmf {.inline.} =
+  self.union1.wmf
+
+proc `icon=`*(self: var PICTDESC, x: PICTDESC_UNION1_icon) {.inline.} =
+  self.union1.icon = x
+
+proc icon*(self: PICTDESC): PICTDESC_UNION1_icon {.inline.} =
+  self.union1.icon
+
+proc icon*(self: var PICTDESC): var PICTDESC_UNION1_icon {.inline.} =
+  self.union1.icon
+
+proc `emf=`*(self: var PICTDESC, x: PICTDESC_UNION1_emf) {.inline.} =
+  self.union1.emf = x
+
+proc emf*(self: PICTDESC): PICTDESC_UNION1_emf {.inline.} =
+  self.union1.emf
+
+proc emf*(self: var PICTDESC): var PICTDESC_UNION1_emf {.inline.} =
+  self.union1.emf
+
+proc get_accParent*(
+    self: ptr IAccessible, ppdispParent: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accParent(self, ppdispParent)
+
+proc get_accChildCount*(
+    self: ptr IAccessible, pcountChildren: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accChildCount(self, pcountChildren)
+
+proc get_accChild*(
+    self: ptr IAccessible, varChildID: VARIANT, ppdispChild: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accChild(self, varChildID, ppdispChild)
+
+proc get_accName*(
+    self: ptr IAccessible, varID: VARIANT, pszName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accName(self, varID, pszName)
+
+proc get_accValue*(
+    self: ptr IAccessible, varID: VARIANT, pszValue: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accValue(self, varID, pszValue)
+
+proc get_accDescription*(
+    self: ptr IAccessible, varID: VARIANT, pszDescription: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accDescription(self, varID, pszDescription)
+
+proc get_accRole*(
+    self: ptr IAccessible, varID: VARIANT, pvarRole: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accRole(self, varID, pvarRole)
+
+proc get_accState*(
+    self: ptr IAccessible, varID: VARIANT, pvarState: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accState(self, varID, pvarState)
+
+proc get_accHelp*(
+    self: ptr IAccessible, varID: VARIANT, pszHelp: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accHelp(self, varID, pszHelp)
+
+proc get_accHelpTopic*(
+    self: ptr IAccessible, pszHelpFile: ptr BSTR, varID: VARIANT, pidTopic: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accHelpTopic(self, pszHelpFile, varID, pidTopic)
+
+proc get_accKeyboardShortcut*(
+    self: ptr IAccessible, varID: VARIANT, pszKeyboardShortcut: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accKeyboardShortcut(self, varID, pszKeyboardShortcut)
+
+proc get_accFocus*(
+    self: ptr IAccessible, pvarID: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accFocus(self, pvarID)
+
+proc get_accSelection*(
+    self: ptr IAccessible, pvarID: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accSelection(self, pvarID)
+
+proc get_accDefaultAction*(
+    self: ptr IAccessible, varID: VARIANT, pszDefaultAction: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_accDefaultAction(self, varID, pszDefaultAction)
+
+proc accSelect*(
+    self: ptr IAccessible, flagsSelect: LONG, varID: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.accSelect(self, flagsSelect, varID)
+
+proc accLocation*(
+    self: ptr IAccessible,
+    pxLeft: ptr LONG,
+    pyTop: ptr LONG,
+    pcxWidth: ptr LONG,
+    pcyHeight: ptr LONG,
+    varID: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.accLocation(self, pxLeft, pyTop, pcxWidth, pcyHeight, varID)
+
+proc accNavigate*(
+    self: ptr IAccessible, navDir: LONG, varStart: VARIANT, pvarEnd: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.accNavigate(self, navDir, varStart, pvarEnd)
+
+proc accHitTest*(
+    self: ptr IAccessible, xLeft: LONG, yTop: LONG, pvarID: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.accHitTest(self, xLeft, yTop, pvarID)
+
+proc accDoDefaultAction*(
+    self: ptr IAccessible, varID: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.accDoDefaultAction(self, varID)
+
+proc put_accName*(
+    self: ptr IAccessible, varID: VARIANT, pszName: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_accName(self, varID, pszName)
+
+proc put_accValue*(
+    self: ptr IAccessible, varID: VARIANT, pszValue: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_accValue(self, varID, pszValue)
+
+proc AccessibleObjectFromID*(
+    self: ptr IAccessibleHandler,
+    hwnd: LONG,
+    lObjectID: LONG,
+    pIAccessible: ptr LPACCESSIBLE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AccessibleObjectFromID(self, hwnd, lObjectID, pIAccessible)
+
+proc GetIdentityString*(
+    self: ptr IAccIdentity,
+    dwIDChild: DWORD,
+    ppIDString: ptr ptr BYTE,
+    pdwIDStringLen: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIdentityString(self, dwIDChild, ppIDString, pdwIDStringLen)
+
+proc GetPropValue*(
+    self: ptr IAccPropServer,
+    pIDString: ptr BYTE,
+    dwIDStringLen: DWORD,
+    idProp: MSAAPROPID,
+    pvarValue: ptr VARIANT,
+    pfHasProp: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropValue(
+      self, pIDString, dwIDStringLen, idProp, pvarValue, pfHasProp
+    )
+
+proc SetPropValue*(
+    self: ptr IAccPropServices,
+    pIDString: ptr BYTE,
+    dwIDStringLen: DWORD,
+    idProp: MSAAPROPID,
+    `var`: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPropValue(self, pIDString, dwIDStringLen, idProp, `var`)
+
+proc SetPropServer*(
+    self: ptr IAccPropServices,
+    pIDString: ptr BYTE,
+    dwIDStringLen: DWORD,
+    paProps: ptr MSAAPROPID,
+    cProps: int32,
+    pServer: ptr IAccPropServer,
+    annoScope: AnnoScope,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPropServer(
+      self, pIDString, dwIDStringLen, paProps, cProps, pServer, annoScope
+    )
+
+proc ClearProps*(
+    self: ptr IAccPropServices,
+    pIDString: ptr BYTE,
+    dwIDStringLen: DWORD,
+    paProps: ptr MSAAPROPID,
+    cProps: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ClearProps(self, pIDString, dwIDStringLen, paProps, cProps)
+
+proc SetHwndProp*(
+    self: ptr IAccPropServices,
+    hwnd: HWND,
+    idObject: DWORD,
+    idChild: DWORD,
+    idProp: MSAAPROPID,
+    `var`: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHwndProp(self, hwnd, idObject, idChild, idProp, `var`)
+
+proc SetHwndPropStr*(
+    self: ptr IAccPropServices,
+    hwnd: HWND,
+    idObject: DWORD,
+    idChild: DWORD,
+    idProp: MSAAPROPID,
+    str: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHwndPropStr(self, hwnd, idObject, idChild, idProp, str)
+
+proc SetHwndPropServer*(
+    self: ptr IAccPropServices,
+    hwnd: HWND,
+    idObject: DWORD,
+    idChild: DWORD,
+    paProps: ptr MSAAPROPID,
+    cProps: int32,
+    pServer: ptr IAccPropServer,
+    annoScope: AnnoScope,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHwndPropServer(
+      self, hwnd, idObject, idChild, paProps, cProps, pServer, annoScope
+    )
+
+proc ClearHwndProps*(
+    self: ptr IAccPropServices,
+    hwnd: HWND,
+    idObject: DWORD,
+    idChild: DWORD,
+    paProps: ptr MSAAPROPID,
+    cProps: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ClearHwndProps(self, hwnd, idObject, idChild, paProps, cProps)
+
+proc ComposeHwndIdentityString*(
+    self: ptr IAccPropServices,
+    hwnd: HWND,
+    idObject: DWORD,
+    idChild: DWORD,
+    ppIDString: ptr ptr BYTE,
+    pdwIDStringLen: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ComposeHwndIdentityString(
+      self, hwnd, idObject, idChild, ppIDString, pdwIDStringLen
+    )
+
+proc DecomposeHwndIdentityString*(
+    self: ptr IAccPropServices,
+    pIDString: ptr BYTE,
+    dwIDStringLen: DWORD,
+    phwnd: ptr HWND,
+    pidObject: ptr DWORD,
+    pidChild: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DecomposeHwndIdentityString(
+      self, pIDString, dwIDStringLen, phwnd, pidObject, pidChild
+    )
+
+proc SetHmenuProp*(
+    self: ptr IAccPropServices,
+    hmenu: HMENU,
+    idChild: DWORD,
+    idProp: MSAAPROPID,
+    `var`: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHmenuProp(self, hmenu, idChild, idProp, `var`)
+
+proc SetHmenuPropStr*(
+    self: ptr IAccPropServices,
+    hmenu: HMENU,
+    idChild: DWORD,
+    idProp: MSAAPROPID,
+    str: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHmenuPropStr(self, hmenu, idChild, idProp, str)
+
+proc SetHmenuPropServer*(
+    self: ptr IAccPropServices,
+    hmenu: HMENU,
+    idChild: DWORD,
+    paProps: ptr MSAAPROPID,
+    cProps: int32,
+    pServer: ptr IAccPropServer,
+    annoScope: AnnoScope,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHmenuPropServer(
+      self, hmenu, idChild, paProps, cProps, pServer, annoScope
+    )
+
+proc ClearHmenuProps*(
+    self: ptr IAccPropServices,
+    hmenu: HMENU,
+    idChild: DWORD,
+    paProps: ptr MSAAPROPID,
+    cProps: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ClearHmenuProps(self, hmenu, idChild, paProps, cProps)
+
+proc ComposeHmenuIdentityString*(
+    self: ptr IAccPropServices,
+    hmenu: HMENU,
+    idChild: DWORD,
+    ppIDString: ptr ptr BYTE,
+    pdwIDStringLen: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ComposeHmenuIdentityString(
+      self, hmenu, idChild, ppIDString, pdwIDStringLen
+    )
+
+proc DecomposeHmenuIdentityString*(
+    self: ptr IAccPropServices,
+    pIDString: ptr BYTE,
+    dwIDStringLen: DWORD,
+    phmenu: ptr HMENU,
+    pidChild: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DecomposeHmenuIdentityString(
+      self, pIDString, dwIDStringLen, phmenu, pidChild
+    )
+
+proc GetInterfaceSafetyOptions*(
+    self: ptr IObjectSafety,
+    riid: REFIID,
+    pdwSupportedOptions: ptr DWORD,
+    pdwEnabledOptions: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInterfaceSafetyOptions(
+      self, riid, pdwSupportedOptions, pdwEnabledOptions
+    )
+
+proc SetInterfaceSafetyOptions*(
+    self: ptr IObjectSafety,
+    riid: REFIID,
+    dwOptionSetMask: DWORD,
+    dwEnabledOptions: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetInterfaceSafetyOptions(self, riid, dwOptionSetMask, dwEnabledOptions)
+
+proc GetLCID*(
+    self: ptr IActiveScriptSite, plcid: ptr LCID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLCID(self, plcid)
+
+proc GetItemInfo*(
+    self: ptr IActiveScriptSite,
+    pstrName: LPCOLESTR,
+    dwReturnMask: DWORD,
+    ppiunkItem: ptr ptr IUnknown,
+    ppti: ptr ptr ITypeInfo,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItemInfo(self, pstrName, dwReturnMask, ppiunkItem, ppti)
+
+proc GetDocVersionString*(
+    self: ptr IActiveScriptSite, pbstrVersion: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDocVersionString(self, pbstrVersion)
+
+proc OnScriptTerminate*(
+    self: ptr IActiveScriptSite, pvarResult: ptr VARIANT, pexcepinfo: ptr EXCEPINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnScriptTerminate(self, pvarResult, pexcepinfo)
+
+proc OnStateChange*(
+    self: ptr IActiveScriptSite, ssScriptState: TSCRIPTSTATE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnStateChange(self, ssScriptState)
+
+proc OnScriptError*(
+    self: ptr IActiveScriptSite, pscripterror: ptr IActiveScriptError
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnScriptError(self, pscripterror)
+
+proc OnEnterScript*(self: ptr IActiveScriptSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnEnterScript(self)
+
+proc OnLeaveScript*(self: ptr IActiveScriptSite): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnLeaveScript(self)
+
+proc GetExceptionInfo*(
+    self: ptr IActiveScriptError, pexcepinfo: ptr EXCEPINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetExceptionInfo(self, pexcepinfo)
+
+proc GetSourcePosition*(
+    self: ptr IActiveScriptError,
+    pdwSourceContext: ptr DWORD,
+    pulLineNumber: ptr ULONG,
+    plCharacterPosition: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSourcePosition(
+      self, pdwSourceContext, pulLineNumber, plCharacterPosition
+    )
+
+proc GetSourceLineText*(
+    self: ptr IActiveScriptError, pbstrSourceLine: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSourceLineText(self, pbstrSourceLine)
+
+proc GetSourcePosition64*(
+    self: ptr IActiveScriptError64,
+    pdwSourceContext: ptr DWORDLONG,
+    pulLineNumber: ptr ULONG,
+    plCharacterPosition: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSourcePosition64(
+      self, pdwSourceContext, pulLineNumber, plCharacterPosition
+    )
+
+proc GetWindow*(
+    self: ptr IActiveScriptSiteWindow, phwnd: ptr HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetWindow(self, phwnd)
+
+proc EnableModeless*(
+    self: ptr IActiveScriptSiteWindow, fEnable: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnableModeless(self, fEnable)
+
+proc GetUIBehavior*(
+    self: ptr IActiveScriptSiteUIControl,
+    UicItem: SCRIPTUICITEM,
+    pUicHandling: ptr SCRIPTUICHANDLING,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUIBehavior(self, UicItem, pUicHandling)
+
+proc QueryContinue*(
+    self: ptr IActiveScriptSiteInterruptPoll
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryContinue(self)
+
+proc SetScriptSite*(
+    self: ptr IActiveScript, pass: ptr IActiveScriptSite
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetScriptSite(self, pass)
+
+proc GetScriptSite*(
+    self: ptr IActiveScript, riid: REFIID, ppvObject: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetScriptSite(self, riid, ppvObject)
+
+proc SetScriptState*(
+    self: ptr IActiveScript, ss: TSCRIPTSTATE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetScriptState(self, ss)
+
+proc GetScriptState*(
+    self: ptr IActiveScript, pssState: ptr TSCRIPTSTATE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetScriptState(self, pssState)
+
+proc Close*(self: ptr IActiveScript): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Close(self)
+
+proc AddNamedItem*(
+    self: ptr IActiveScript, pstrName: LPCOLESTR, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddNamedItem(self, pstrName, dwFlags)
+
+proc AddTypeLib*(
+    self: ptr IActiveScript,
+    rguidTypeLib: REFGUID,
+    dwMajor: DWORD,
+    dwMinor: DWORD,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddTypeLib(self, rguidTypeLib, dwMajor, dwMinor, dwFlags)
+
+proc GetScriptDispatch*(
+    self: ptr IActiveScript, pstrItemName: LPCOLESTR, ppdisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetScriptDispatch(self, pstrItemName, ppdisp)
+
+proc GetCurrentScriptThreadID*(
+    self: ptr IActiveScript, pstidThread: ptr SCRIPTTHREADID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentScriptThreadID(self, pstidThread)
+
+proc GetScriptThreadID*(
+    self: ptr IActiveScript, dwWin32ThreadId: DWORD, pstidThread: ptr SCRIPTTHREADID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetScriptThreadID(self, dwWin32ThreadId, pstidThread)
+
+proc GetScriptThreadState*(
+    self: ptr IActiveScript,
+    stidThread: SCRIPTTHREADID,
+    pstsState: ptr SCRIPTTHREADSTATE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetScriptThreadState(self, stidThread, pstsState)
+
+proc InterruptScriptThread*(
+    self: ptr IActiveScript,
+    stidThread: SCRIPTTHREADID,
+    pexcepinfo: ptr EXCEPINFO,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InterruptScriptThread(self, stidThread, pexcepinfo, dwFlags)
+
+proc Clone*(
+    self: ptr IActiveScript, ppscript: ptr ptr IActiveScript
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppscript)
+
+proc InitNew*(self: ptr IActiveScriptParse32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitNew(self)
+
+proc AddScriptlet*(
+    self: ptr IActiveScriptParse32,
+    pstrDefaultName: LPCOLESTR,
+    pstrCode: LPCOLESTR,
+    pstrItemName: LPCOLESTR,
+    pstrSubItemName: LPCOLESTR,
+    pstrEventName: LPCOLESTR,
+    pstrDelimiter: LPCOLESTR,
+    dwSourceContextCookie: DWORD,
+    ulStartingLineNumber: ULONG,
+    dwFlags: DWORD,
+    pbstrName: ptr BSTR,
+    pexcepinfo: ptr EXCEPINFO,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddScriptlet(
+      self, pstrDefaultName, pstrCode, pstrItemName, pstrSubItemName, pstrEventName,
+      pstrDelimiter, dwSourceContextCookie, ulStartingLineNumber, dwFlags, pbstrName,
+      pexcepinfo,
+    )
+
+proc ParseScriptText*(
+    self: ptr IActiveScriptParse32,
+    pstrCode: LPCOLESTR,
+    pstrItemName: LPCOLESTR,
+    punkContext: ptr IUnknown,
+    pstrDelimiter: LPCOLESTR,
+    dwSourceContextCookie: DWORD,
+    ulStartingLineNumber: ULONG,
+    dwFlags: DWORD,
+    pvarResult: ptr VARIANT,
+    pexcepinfo: ptr EXCEPINFO,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseScriptText(
+      self, pstrCode, pstrItemName, punkContext, pstrDelimiter, dwSourceContextCookie,
+      ulStartingLineNumber, dwFlags, pvarResult, pexcepinfo,
+    )
+
+proc InitNew*(self: ptr IActiveScriptParse64): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitNew(self)
+
+proc AddScriptlet*(
+    self: ptr IActiveScriptParse64,
+    pstrDefaultName: LPCOLESTR,
+    pstrCode: LPCOLESTR,
+    pstrItemName: LPCOLESTR,
+    pstrSubItemName: LPCOLESTR,
+    pstrEventName: LPCOLESTR,
+    pstrDelimiter: LPCOLESTR,
+    dwSourceContextCookie: DWORDLONG,
+    ulStartingLineNumber: ULONG,
+    dwFlags: DWORD,
+    pbstrName: ptr BSTR,
+    pexcepinfo: ptr EXCEPINFO,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddScriptlet(
+      self, pstrDefaultName, pstrCode, pstrItemName, pstrSubItemName, pstrEventName,
+      pstrDelimiter, dwSourceContextCookie, ulStartingLineNumber, dwFlags, pbstrName,
+      pexcepinfo,
+    )
+
+proc ParseScriptText*(
+    self: ptr IActiveScriptParse64,
+    pstrCode: LPCOLESTR,
+    pstrItemName: LPCOLESTR,
+    punkContext: ptr IUnknown,
+    pstrDelimiter: LPCOLESTR,
+    dwSourceContextCookie: DWORDLONG,
+    ulStartingLineNumber: ULONG,
+    dwFlags: DWORD,
+    pvarResult: ptr VARIANT,
+    pexcepinfo: ptr EXCEPINFO,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseScriptText(
+      self, pstrCode, pstrItemName, punkContext, pstrDelimiter, dwSourceContextCookie,
+      ulStartingLineNumber, dwFlags, pvarResult, pexcepinfo,
+    )
+
+proc ParseProcedureText*(
+    self: ptr IActiveScriptParseProcedureOld32,
+    pstrCode: LPCOLESTR,
+    pstrFormalParams: LPCOLESTR,
+    pstrItemName: LPCOLESTR,
+    punkContext: ptr IUnknown,
+    pstrDelimiter: LPCOLESTR,
+    dwSourceContextCookie: DWORD,
+    ulStartingLineNumber: ULONG,
+    dwFlags: DWORD,
+    ppdisp: ptr ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseProcedureText(
+      self, pstrCode, pstrFormalParams, pstrItemName, punkContext, pstrDelimiter,
+      dwSourceContextCookie, ulStartingLineNumber, dwFlags, ppdisp,
+    )
+
+proc ParseProcedureText*(
+    self: ptr IActiveScriptParseProcedureOld64,
+    pstrCode: LPCOLESTR,
+    pstrFormalParams: LPCOLESTR,
+    pstrItemName: LPCOLESTR,
+    punkContext: ptr IUnknown,
+    pstrDelimiter: LPCOLESTR,
+    dwSourceContextCookie: DWORDLONG,
+    ulStartingLineNumber: ULONG,
+    dwFlags: DWORD,
+    ppdisp: ptr ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseProcedureText(
+      self, pstrCode, pstrFormalParams, pstrItemName, punkContext, pstrDelimiter,
+      dwSourceContextCookie, ulStartingLineNumber, dwFlags, ppdisp,
+    )
+
+proc ParseProcedureText*(
+    self: ptr IActiveScriptParseProcedure32,
+    pstrCode: LPCOLESTR,
+    pstrFormalParams: LPCOLESTR,
+    pstrProcedureName: LPCOLESTR,
+    pstrItemName: LPCOLESTR,
+    punkContext: ptr IUnknown,
+    pstrDelimiter: LPCOLESTR,
+    dwSourceContextCookie: DWORD,
+    ulStartingLineNumber: ULONG,
+    dwFlags: DWORD,
+    ppdisp: ptr ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseProcedureText(
+      self, pstrCode, pstrFormalParams, pstrProcedureName, pstrItemName, punkContext,
+      pstrDelimiter, dwSourceContextCookie, ulStartingLineNumber, dwFlags, ppdisp,
+    )
+
+proc ParseProcedureText*(
+    self: ptr IActiveScriptParseProcedure64,
+    pstrCode: LPCOLESTR,
+    pstrFormalParams: LPCOLESTR,
+    pstrProcedureName: LPCOLESTR,
+    pstrItemName: LPCOLESTR,
+    punkContext: ptr IUnknown,
+    pstrDelimiter: LPCOLESTR,
+    dwSourceContextCookie: DWORDLONG,
+    ulStartingLineNumber: ULONG,
+    dwFlags: DWORD,
+    ppdisp: ptr ptr IDispatch,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseProcedureText(
+      self, pstrCode, pstrFormalParams, pstrProcedureName, pstrItemName, punkContext,
+      pstrDelimiter, dwSourceContextCookie, ulStartingLineNumber, dwFlags, ppdisp,
+    )
+
+proc EncodeSection*(
+    self: ptr IActiveScriptEncode,
+    pchIn: LPCOLESTR,
+    cchIn: DWORD,
+    pchOut: LPOLESTR,
+    cchOut: DWORD,
+    pcchRet: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EncodeSection(self, pchIn, cchIn, pchOut, cchOut, pcchRet)
+
+proc DecodeScript*(
+    self: ptr IActiveScriptEncode,
+    pchIn: LPCOLESTR,
+    cchIn: DWORD,
+    pchOut: LPOLESTR,
+    cchOut: DWORD,
+    pcchRet: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DecodeScript(self, pchIn, cchIn, pchOut, cchOut, pcchRet)
+
+proc GetEncodeProgId*(
+    self: ptr IActiveScriptEncode, pbstrOut: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEncodeProgId(self, pbstrOut)
+
+proc EncodeScriptHostFile*(
+    self: ptr IActiveScriptHostEncode,
+    bstrInFile: BSTR,
+    pbstrOutFile: ptr BSTR,
+    cFlags: ULONG,
+    bstrDefaultLang: BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EncodeScriptHostFile(
+      self, bstrInFile, pbstrOutFile, cFlags, bstrDefaultLang
+    )
+
+proc BindHandler*(
+    self: ptr IBindEventHandler, pstrEvent: LPCOLESTR, pdisp: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BindHandler(self, pstrEvent, pdisp)
+
+proc GetStat*(
+    self: ptr IActiveScriptStats, stid: DWORD, pluHi: ptr ULONG, pluLo: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetStat(self, stid, pluHi, pluLo)
+
+proc GetStatEx*(
+    self: ptr IActiveScriptStats, guid: REFGUID, pluHi: ptr ULONG, pluLo: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetStatEx(self, guid, pluHi, pluLo)
+
+proc ResetStats*(self: ptr IActiveScriptStats): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResetStats(self)
+
+proc GetProperty*(
+    self: ptr IActiveScriptProperty,
+    dwProperty: DWORD,
+    pvarIndex: ptr VARIANT,
+    pvarValue: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty(self, dwProperty, pvarIndex, pvarValue)
+
+proc SetProperty*(
+    self: ptr IActiveScriptProperty,
+    dwProperty: DWORD,
+    pvarIndex: ptr VARIANT,
+    pvarValue: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetProperty(self, dwProperty, pvarIndex, pvarValue)
+
+proc FireEvent*(
+    self: ptr ITridentEventSink,
+    pstrEvent: LPCOLESTR,
+    pdp: ptr DISPPARAMS,
+    pvarRes: ptr VARIANT,
+    pei: ptr EXCEPINFO,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FireEvent(self, pstrEvent, pdp, pvarRes, pei)
+
+proc CollectGarbage*(
+    self: ptr IActiveScriptGarbageCollector, scriptgctype: SCRIPTGCTYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CollectGarbage(self, scriptgctype)
+
+proc GetSIPOID*(
+    self: ptr IActiveScriptSIPInfo, poid_sip: ptr GUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSIPOID(self, poid_sip)
+
+proc SendScriptTraceInfo*(
+    self: ptr IActiveScriptSiteTraceInfo,
+    stiEventType: SCRIPTTRACEINFO,
+    guidContextID: GUID,
+    dwScriptContextCookie: DWORD,
+    lScriptStatementStart: LONG,
+    lScriptStatementEnd: LONG,
+    dwReserved: DWORD64,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SendScriptTraceInfo(
+      self, stiEventType, guidContextID, dwScriptContextCookie, lScriptStatementStart,
+      lScriptStatementEnd, dwReserved,
+    )
+
+proc StartScriptTracing*(
+    self: ptr IActiveScriptTraceInfo,
+    pSiteTraceInfo: ptr IActiveScriptSiteTraceInfo,
+    guidContextID: GUID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StartScriptTracing(self, pSiteTraceInfo, guidContextID)
+
+proc StopScriptTracing*(self: ptr IActiveScriptTraceInfo): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StopScriptTracing(self)
+
+proc StrComp*(
+    self: ptr IActiveScriptStringCompare, bszStr1: BSTR, bszStr2: BSTR, iRet: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StrComp(self, bszStr1, bszStr2, iRet)
+
+proc GetNextLink*(
+    self: ptr IOleUILinkContainerW, dwLink: DWORD
+): DWORD {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNextLink(self, dwLink)
+
+proc SetLinkUpdateOptions*(
+    self: ptr IOleUILinkContainerW, dwLink: DWORD, dwUpdateOpt: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetLinkUpdateOptions(self, dwLink, dwUpdateOpt)
+
+proc GetLinkUpdateOptions*(
+    self: ptr IOleUILinkContainerW, dwLink: DWORD, lpdwUpdateOpt: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLinkUpdateOptions(self, dwLink, lpdwUpdateOpt)
+
+proc SetLinkSource*(
+    self: ptr IOleUILinkContainerW,
+    dwLink: DWORD,
+    lpszDisplayName: LPWSTR,
+    lenFileName: ULONG,
+    pchEaten: ptr ULONG,
+    fValidateSource: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetLinkSource(
+      self, dwLink, lpszDisplayName, lenFileName, pchEaten, fValidateSource
+    )
+
+proc GetLinkSource*(
+    self: ptr IOleUILinkContainerW,
+    dwLink: DWORD,
+    lplpszDisplayName: ptr LPWSTR,
+    lplenFileName: ptr ULONG,
+    lplpszFullLinkType: ptr LPWSTR,
+    lplpszShortLinkType: ptr LPWSTR,
+    lpfSourceAvailable: ptr WINBOOL,
+    lpfIsSelected: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLinkSource(
+      self, dwLink, lplpszDisplayName, lplenFileName, lplpszFullLinkType,
+      lplpszShortLinkType, lpfSourceAvailable, lpfIsSelected,
+    )
+
+proc OpenLinkSource*(
+    self: ptr IOleUILinkContainerW, dwLink: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OpenLinkSource(self, dwLink)
+
+proc UpdateLink*(
+    self: ptr IOleUILinkContainerW,
+    dwLink: DWORD,
+    fErrorMessage: WINBOOL,
+    fReserved: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UpdateLink(self, dwLink, fErrorMessage, fReserved)
+
+proc CancelLink*(
+    self: ptr IOleUILinkContainerW, dwLink: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CancelLink(self, dwLink)
+
+proc GetNextLink*(
+    self: ptr IOleUILinkContainerA, dwLink: DWORD
+): DWORD {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNextLink(self, dwLink)
+
+proc SetLinkUpdateOptions*(
+    self: ptr IOleUILinkContainerA, dwLink: DWORD, dwUpdateOpt: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetLinkUpdateOptions(self, dwLink, dwUpdateOpt)
+
+proc GetLinkUpdateOptions*(
+    self: ptr IOleUILinkContainerA, dwLink: DWORD, lpdwUpdateOpt: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLinkUpdateOptions(self, dwLink, lpdwUpdateOpt)
+
+proc SetLinkSource*(
+    self: ptr IOleUILinkContainerA,
+    dwLink: DWORD,
+    lpszDisplayName: LPSTR,
+    lenFileName: ULONG,
+    pchEaten: ptr ULONG,
+    fValidateSource: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetLinkSource(
+      self, dwLink, lpszDisplayName, lenFileName, pchEaten, fValidateSource
+    )
+
+proc GetLinkSource*(
+    self: ptr IOleUILinkContainerA,
+    dwLink: DWORD,
+    lplpszDisplayName: ptr LPSTR,
+    lplenFileName: ptr ULONG,
+    lplpszFullLinkType: ptr LPSTR,
+    lplpszShortLinkType: ptr LPSTR,
+    lpfSourceAvailable: ptr WINBOOL,
+    lpfIsSelected: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLinkSource(
+      self, dwLink, lplpszDisplayName, lplenFileName, lplpszFullLinkType,
+      lplpszShortLinkType, lpfSourceAvailable, lpfIsSelected,
+    )
+
+proc OpenLinkSource*(
+    self: ptr IOleUILinkContainerA, dwLink: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OpenLinkSource(self, dwLink)
+
+proc UpdateLink*(
+    self: ptr IOleUILinkContainerA,
+    dwLink: DWORD,
+    fErrorMessage: WINBOOL,
+    fReserved: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UpdateLink(self, dwLink, fErrorMessage, fReserved)
+
+proc CancelLink*(
+    self: ptr IOleUILinkContainerA, dwLink: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CancelLink(self, dwLink)
+
+proc GetObjectInfo*(
+    self: ptr IOleUIObjInfoW,
+    dwObject: DWORD,
+    lpdwObjSize: ptr DWORD,
+    lplpszLabel: ptr LPWSTR,
+    lplpszType: ptr LPWSTR,
+    lplpszShortType: ptr LPWSTR,
+    lplpszLocation: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObjectInfo(
+      self, dwObject, lpdwObjSize, lplpszLabel, lplpszType, lplpszShortType,
+      lplpszLocation,
+    )
+
+proc GetConvertInfo*(
+    self: ptr IOleUIObjInfoW,
+    dwObject: DWORD,
+    lpClassID: ptr CLSID,
+    lpwFormat: ptr WORD,
+    lpConvertDefaultClassID: ptr CLSID,
+    lplpClsidExclude: ptr LPCLSID,
+    lpcClsidExclude: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConvertInfo(
+      self, dwObject, lpClassID, lpwFormat, lpConvertDefaultClassID, lplpClsidExclude,
+      lpcClsidExclude,
+    )
+
+proc ConvertObject*(
+    self: ptr IOleUIObjInfoW, dwObject: DWORD, clsidNew: REFCLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ConvertObject(self, dwObject, clsidNew)
+
+proc GetViewInfo*(
+    self: ptr IOleUIObjInfoW,
+    dwObject: DWORD,
+    phMetaPict: ptr HGLOBAL,
+    pdvAspect: ptr DWORD,
+    pnCurrentScale: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetViewInfo(self, dwObject, phMetaPict, pdvAspect, pnCurrentScale)
+
+proc SetViewInfo*(
+    self: ptr IOleUIObjInfoW,
+    dwObject: DWORD,
+    hMetaPict: HGLOBAL,
+    dvAspect: DWORD,
+    nCurrentScale: int32,
+    bRelativeToOrig: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetViewInfo(
+      self, dwObject, hMetaPict, dvAspect, nCurrentScale, bRelativeToOrig
+    )
+
+proc GetObjectInfo*(
+    self: ptr IOleUIObjInfoA,
+    dwObject: DWORD,
+    lpdwObjSize: ptr DWORD,
+    lplpszLabel: ptr LPSTR,
+    lplpszType: ptr LPSTR,
+    lplpszShortType: ptr LPSTR,
+    lplpszLocation: ptr LPSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObjectInfo(
+      self, dwObject, lpdwObjSize, lplpszLabel, lplpszType, lplpszShortType,
+      lplpszLocation,
+    )
+
+proc GetConvertInfo*(
+    self: ptr IOleUIObjInfoA,
+    dwObject: DWORD,
+    lpClassID: ptr CLSID,
+    lpwFormat: ptr WORD,
+    lpConvertDefaultClassID: ptr CLSID,
+    lplpClsidExclude: ptr LPCLSID,
+    lpcClsidExclude: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConvertInfo(
+      self, dwObject, lpClassID, lpwFormat, lpConvertDefaultClassID, lplpClsidExclude,
+      lpcClsidExclude,
+    )
+
+proc ConvertObject*(
+    self: ptr IOleUIObjInfoA, dwObject: DWORD, clsidNew: REFCLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ConvertObject(self, dwObject, clsidNew)
+
+proc GetViewInfo*(
+    self: ptr IOleUIObjInfoA,
+    dwObject: DWORD,
+    phMetaPict: ptr HGLOBAL,
+    pdvAspect: ptr DWORD,
+    pnCurrentScale: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetViewInfo(self, dwObject, phMetaPict, pdvAspect, pnCurrentScale)
+
+proc SetViewInfo*(
+    self: ptr IOleUIObjInfoA,
+    dwObject: DWORD,
+    hMetaPict: HGLOBAL,
+    dvAspect: DWORD,
+    nCurrentScale: int32,
+    bRelativeToOrig: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetViewInfo(
+      self, dwObject, hMetaPict, dvAspect, nCurrentScale, bRelativeToOrig
+    )
+
+proc GetLastUpdate*(
+    self: ptr IOleUILinkInfoW, dwLink: DWORD, lpLastUpdate: ptr FILETIME
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLastUpdate(self, dwLink, lpLastUpdate)
+
+proc GetLastUpdate*(
+    self: ptr IOleUILinkInfoA, dwLink: DWORD, lpLastUpdate: ptr FILETIME
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLastUpdate(self, dwLink, lpLastUpdate)
+
+converter winimConverterIAccessibleToIDispatch*(x: ptr IAccessible): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIAccessibleToIUnknown*(x: ptr IAccessible): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAccessibleHandlerToIUnknown*(
+    x: ptr IAccessibleHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAccIdentityToIUnknown*(x: ptr IAccIdentity): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAccPropServerToIUnknown*(x: ptr IAccPropServer): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAccPropServicesToIUnknown*(
+    x: ptr IAccPropServices
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectSafetyToIUnknown*(x: ptr IObjectSafety): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptSiteToIUnknown*(
+    x: ptr IActiveScriptSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptErrorToIUnknown*(
+    x: ptr IActiveScriptError
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptError64ToIActiveScriptError*(
+    x: ptr IActiveScriptError64
+): ptr IActiveScriptError =
+  cast[ptr IActiveScriptError](x)
+
+converter winimConverterIActiveScriptError64ToIUnknown*(
+    x: ptr IActiveScriptError64
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptSiteWindowToIUnknown*(
+    x: ptr IActiveScriptSiteWindow
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptSiteUIControlToIUnknown*(
+    x: ptr IActiveScriptSiteUIControl
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptSiteInterruptPollToIUnknown*(
+    x: ptr IActiveScriptSiteInterruptPoll
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptToIUnknown*(x: ptr IActiveScript): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptParse32ToIUnknown*(
+    x: ptr IActiveScriptParse32
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptParse64ToIUnknown*(
+    x: ptr IActiveScriptParse64
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptParseProcedureOld32ToIUnknown*(
+    x: ptr IActiveScriptParseProcedureOld32
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptParseProcedureOld64ToIUnknown*(
+    x: ptr IActiveScriptParseProcedureOld64
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptParseProcedure32ToIUnknown*(
+    x: ptr IActiveScriptParseProcedure32
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptParseProcedure64ToIUnknown*(
+    x: ptr IActiveScriptParseProcedure64
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptParseProcedure2_32ToIActiveScriptParseProcedure32*(
+    x: ptr IActiveScriptParseProcedure2_32
+): ptr IActiveScriptParseProcedure32 =
+  cast[ptr IActiveScriptParseProcedure32](x)
+
+converter winimConverterIActiveScriptParseProcedure2_32ToIUnknown*(
+    x: ptr IActiveScriptParseProcedure2_32
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptParseProcedure2_64ToIActiveScriptParseProcedure64*(
+    x: ptr IActiveScriptParseProcedure2_64
+): ptr IActiveScriptParseProcedure64 =
+  cast[ptr IActiveScriptParseProcedure64](x)
+
+converter winimConverterIActiveScriptParseProcedure2_64ToIUnknown*(
+    x: ptr IActiveScriptParseProcedure2_64
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptEncodeToIUnknown*(
+    x: ptr IActiveScriptEncode
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptHostEncodeToIUnknown*(
+    x: ptr IActiveScriptHostEncode
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIBindEventHandlerToIUnknown*(
+    x: ptr IBindEventHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptStatsToIUnknown*(
+    x: ptr IActiveScriptStats
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptPropertyToIUnknown*(
+    x: ptr IActiveScriptProperty
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITridentEventSinkToIUnknown*(
+    x: ptr ITridentEventSink
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptGarbageCollectorToIUnknown*(
+    x: ptr IActiveScriptGarbageCollector
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptSIPInfoToIUnknown*(
+    x: ptr IActiveScriptSIPInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptSiteTraceInfoToIUnknown*(
+    x: ptr IActiveScriptSiteTraceInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptTraceInfoToIUnknown*(
+    x: ptr IActiveScriptTraceInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveScriptStringCompareToIUnknown*(
+    x: ptr IActiveScriptStringCompare
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleUILinkContainerWToIUnknown*(
+    x: ptr IOleUILinkContainerW
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleUILinkContainerAToIUnknown*(
+    x: ptr IOleUILinkContainerA
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleUIObjInfoWToIUnknown*(x: ptr IOleUIObjInfoW): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleUIObjInfoAToIUnknown*(x: ptr IOleUIObjInfoA): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleUILinkInfoWToIOleUILinkContainerW*(
+    x: ptr IOleUILinkInfoW
+): ptr IOleUILinkContainerW =
+  cast[ptr IOleUILinkContainerW](x)
+
+converter winimConverterIOleUILinkInfoWToIUnknown*(
+    x: ptr IOleUILinkInfoW
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOleUILinkInfoAToIOleUILinkContainerA*(
+    x: ptr IOleUILinkInfoA
+): ptr IOleUILinkContainerA =
+  cast[ptr IOleUILinkContainerA](x)
+
+converter winimConverterIOleUILinkInfoAToIUnknown*(
+    x: ptr IOleUILinkInfoA
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
 when winimUnicode:
   type
     TOLEUIINSERTOBJECT* = TOLEUIINSERTOBJECTW
@@ -1842,22 +3845,77 @@
     OLEUIOBJECTPROPS* = OLEUIOBJECTPROPSW
     POLEUIOBJECTPROPS* = POLEUIOBJECTPROPSW
     LPOLEUIOBJECTPROPS* = LPOLEUIOBJECTPROPSW
+
   const
     IDD_SERVERNOTREG* = IDD_SERVERNOTREGW
     IDD_LINKTYPECHANGED* = IDD_LINKTYPECHANGEDW
-  proc GetRoleText*(lRole: DWORD, lpszRole: LPWSTR, cchRoleMax: UINT): UINT {.winapi, stdcall, dynlib: "oleacc", importc: "GetRoleTextW".}
-  proc GetStateText*(lStateBit: DWORD, lpszState: LPWSTR, cchState: UINT): UINT {.winapi, stdcall, dynlib: "oleacc", importc: "GetStateTextW".}
-  proc CreateStdAccessibleProxy*(hwnd: HWND, pClassName: LPCWSTR, idObject: LONG, riid: REFIID, ppvObject: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc: "CreateStdAccessibleProxyW".}
-  proc OleUIAddVerbMenu*(lpOleObj: LPOLEOBJECT, lpszShortType: LPCWSTR, hMenu: HMENU, uPos: UINT, uIDVerbMin: UINT, uIDVerbMax: UINT, bAddConvert: WINBOOL, idConvert: UINT, lphMenu: ptr HMENU): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIAddVerbMenuW".}
-  proc OleUIInsertObject*(P1: LPOLEUIINSERTOBJECTW): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIInsertObjectW".}
-  proc OleUIPasteSpecial*(P1: LPOLEUIPASTESPECIALW): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIPasteSpecialW".}
-  proc OleUIEditLinks*(P1: LPOLEUIEDITLINKSW): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIEditLinksW".}
-  proc OleUIChangeIcon*(P1: LPOLEUICHANGEICONW): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIChangeIconW".}
-  proc OleUIConvert*(P1: LPOLEUICONVERTW): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIConvertW".}
-  proc OleUIBusy*(P1: LPOLEUIBUSYW): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIBusyW".}
-  proc OleUIChangeSource*(P1: LPOLEUICHANGESOURCEW): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIChangeSourceW".}
-  proc OleUIObjectProperties*(P1: LPOLEUIOBJECTPROPSW): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIObjectPropertiesW".}
-  proc OleUIUpdateLinks*(lpOleUILinkCntr: LPOLEUILINKCONTAINERW, hwndParent: HWND, lpszTitle: LPWSTR, cLinks: int32): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIUpdateLinksW".}
+  proc GetRoleText*(
+    lRole: DWORD, lpszRole: LPWSTR, cchRoleMax: UINT
+  ): UINT {.winapi, stdcall, dynlib: "oleacc", importc: "GetRoleTextW".}
+
+  proc GetStateText*(
+    lStateBit: DWORD, lpszState: LPWSTR, cchState: UINT
+  ): UINT {.winapi, stdcall, dynlib: "oleacc", importc: "GetStateTextW".}
+
+  proc CreateStdAccessibleProxy*(
+    hwnd: HWND,
+    pClassName: LPCWSTR,
+    idObject: LONG,
+    riid: REFIID,
+    ppvObject: ptr pointer,
+  ): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc: "CreateStdAccessibleProxyW".}
+
+  proc OleUIAddVerbMenu*(
+    lpOleObj: LPOLEOBJECT,
+    lpszShortType: LPCWSTR,
+    hMenu: HMENU,
+    uPos: UINT,
+    uIDVerbMin: UINT,
+    uIDVerbMax: UINT,
+    bAddConvert: WINBOOL,
+    idConvert: UINT,
+    lphMenu: ptr HMENU,
+  ): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIAddVerbMenuW".}
+
+  proc OleUIInsertObject*(
+    P1: LPOLEUIINSERTOBJECTW
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIInsertObjectW".}
+
+  proc OleUIPasteSpecial*(
+    P1: LPOLEUIPASTESPECIALW
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIPasteSpecialW".}
+
+  proc OleUIEditLinks*(
+    P1: LPOLEUIEDITLINKSW
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIEditLinksW".}
+
+  proc OleUIChangeIcon*(
+    P1: LPOLEUICHANGEICONW
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIChangeIconW".}
+
+  proc OleUIConvert*(
+    P1: LPOLEUICONVERTW
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIConvertW".}
+
+  proc OleUIBusy*(
+    P1: LPOLEUIBUSYW
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIBusyW".}
+
+  proc OleUIChangeSource*(
+    P1: LPOLEUICHANGESOURCEW
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIChangeSourceW".}
+
+  proc OleUIObjectProperties*(
+    P1: LPOLEUIOBJECTPROPSW
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIObjectPropertiesW".}
+
+  proc OleUIUpdateLinks*(
+    lpOleUILinkCntr: LPOLEUILINKCONTAINERW,
+    hwndParent: HWND,
+    lpszTitle: LPWSTR,
+    cLinks: int32,
+  ): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIUpdateLinksW".}
+
 when winimAnsi:
   type
     TOLEUIINSERTOBJECT* = TOLEUIINSERTOBJECTA
@@ -1902,22 +3960,73 @@
     OLEUIOBJECTPROPS* = OLEUIOBJECTPROPSA
     POLEUIOBJECTPROPS* = POLEUIOBJECTPROPSA
     LPOLEUIOBJECTPROPS* = LPOLEUIOBJECTPROPSA
+
   const
     IDD_SERVERNOTREG* = IDD_SERVERNOTREGA
     IDD_LINKTYPECHANGED* = IDD_LINKTYPECHANGEDA
-  proc GetRoleText*(lRole: DWORD, lpszRole: LPSTR, cchRoleMax: UINT): UINT {.winapi, stdcall, dynlib: "oleacc", importc: "GetRoleTextA".}
-  proc GetStateText*(lStateBit: DWORD, lpszState: LPSTR, cchState: UINT): UINT {.winapi, stdcall, dynlib: "oleacc", importc: "GetStateTextA".}
-  proc CreateStdAccessibleProxy*(hwnd: HWND, pClassName: LPCSTR, idObject: LONG, riid: REFIID, ppvObject: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc: "CreateStdAccessibleProxyA".}
-  proc OleUIAddVerbMenu*(lpOleObj: LPOLEOBJECT, lpszShortType: LPCSTR, hMenu: HMENU, uPos: UINT, uIDVerbMin: UINT, uIDVerbMax: UINT, bAddConvert: WINBOOL, idConvert: UINT, lphMenu: ptr HMENU): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIAddVerbMenuA".}
-  proc OleUIInsertObject*(P1: LPOLEUIINSERTOBJECTA): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIInsertObjectA".}
-  proc OleUIPasteSpecial*(P1: LPOLEUIPASTESPECIALA): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIPasteSpecialA".}
-  proc OleUIEditLinks*(P1: LPOLEUIEDITLINKSA): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIEditLinksA".}
-  proc OleUIChangeIcon*(P1: LPOLEUICHANGEICONA): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIChangeIconA".}
-  proc OleUIConvert*(P1: LPOLEUICONVERTA): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIConvertA".}
-  proc OleUIBusy*(P1: LPOLEUIBUSYA): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIBusyA".}
-  proc OleUIChangeSource*(P1: LPOLEUICHANGESOURCEA): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIChangeSourceA".}
-  proc OleUIObjectProperties*(P1: LPOLEUIOBJECTPROPSA): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIObjectPropertiesA".}
-  proc OleUIUpdateLinks*(lpOleUILinkCntr: LPOLEUILINKCONTAINERA, hwndParent: HWND, lpszTitle: LPSTR, cLinks: int32): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIUpdateLinksA".}
+  proc GetRoleText*(
+    lRole: DWORD, lpszRole: LPSTR, cchRoleMax: UINT
+  ): UINT {.winapi, stdcall, dynlib: "oleacc", importc: "GetRoleTextA".}
+
+  proc GetStateText*(
+    lStateBit: DWORD, lpszState: LPSTR, cchState: UINT
+  ): UINT {.winapi, stdcall, dynlib: "oleacc", importc: "GetStateTextA".}
+
+  proc CreateStdAccessibleProxy*(
+    hwnd: HWND, pClassName: LPCSTR, idObject: LONG, riid: REFIID, ppvObject: ptr pointer
+  ): HRESULT {.winapi, stdcall, dynlib: "oleacc", importc: "CreateStdAccessibleProxyA".}
+
+  proc OleUIAddVerbMenu*(
+    lpOleObj: LPOLEOBJECT,
+    lpszShortType: LPCSTR,
+    hMenu: HMENU,
+    uPos: UINT,
+    uIDVerbMin: UINT,
+    uIDVerbMax: UINT,
+    bAddConvert: WINBOOL,
+    idConvert: UINT,
+    lphMenu: ptr HMENU,
+  ): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIAddVerbMenuA".}
+
+  proc OleUIInsertObject*(
+    P1: LPOLEUIINSERTOBJECTA
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIInsertObjectA".}
+
+  proc OleUIPasteSpecial*(
+    P1: LPOLEUIPASTESPECIALA
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIPasteSpecialA".}
+
+  proc OleUIEditLinks*(
+    P1: LPOLEUIEDITLINKSA
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIEditLinksA".}
+
+  proc OleUIChangeIcon*(
+    P1: LPOLEUICHANGEICONA
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIChangeIconA".}
+
+  proc OleUIConvert*(
+    P1: LPOLEUICONVERTA
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIConvertA".}
+
+  proc OleUIBusy*(
+    P1: LPOLEUIBUSYA
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIBusyA".}
+
+  proc OleUIChangeSource*(
+    P1: LPOLEUICHANGESOURCEA
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIChangeSourceA".}
+
+  proc OleUIObjectProperties*(
+    P1: LPOLEUIOBJECTPROPSA
+  ): UINT {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIObjectPropertiesA".}
+
+  proc OleUIUpdateLinks*(
+    lpOleUILinkCntr: LPOLEUILINKCONTAINERA,
+    hwndParent: HWND,
+    lpszTitle: LPSTR,
+    cLinks: int32,
+  ): WINBOOL {.winapi, stdcall, dynlib: "oledlg", importc: "OleUIUpdateLinksA".}
+
 when winimCpu64:
   const
     IID_IActiveScriptParse* = IID_IActiveScriptParse64
--- a/semicongine/thirdparty/winim/winim/inc/odbc.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/odbc.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -42,22 +42,20 @@
   HSTMT* = HANDLE
   TSQLDOUBLE* = float64
   TSQLFLOAT* = float64
+
 when winimCpu64:
-  type
-    TSQLULEN* = UINT64
+  type TSQLULEN* = UINT64
 when winimCpu32:
-  type
-    TSQLULEN* = TSQLUINTEGER
+  type TSQLULEN* = TSQLUINTEGER
 type
   TSQLROWCOUNT* = TSQLULEN
   TSQLROWSETSIZE* = TSQLULEN
   TSQLTRANSID* = TSQLULEN
+
 when winimCpu64:
-  type
-    TSQLLEN* = INT64
+  type TSQLLEN* = INT64
 when winimCpu32:
-  type
-    TSQLLEN* = TSQLINTEGER
+  type TSQLLEN* = TSQLINTEGER
 type
   TSQLROWOFFSET* = TSQLLEN
   TSQLREAL* = float32
@@ -75,11 +73,13 @@
     year*: TSQLSMALLINT
     month*: TSQLUSMALLINT
     day*: TSQLUSMALLINT
+
   TSQL_DATE_STRUCT* = DATE_STRUCT
   TIME_STRUCT* {.pure.} = object
     hour*: TSQLUSMALLINT
     minute*: TSQLUSMALLINT
     second*: TSQLUSMALLINT
+
   TSQL_TIME_STRUCT* = TIME_STRUCT
   TIMESTAMP_STRUCT* {.pure.} = object
     year*: TSQLSMALLINT
@@ -89,6 +89,7 @@
     minute*: TSQLUSMALLINT
     second*: TSQLUSMALLINT
     fraction*: TSQLUINTEGER
+
   TSQL_TIMESTAMP_STRUCT* = TIMESTAMP_STRUCT
   TSQLBIGINT* = ODBCINT64
   TSQLGUID* = GUID
@@ -96,16 +97,20 @@
   ODBC_VS_ARGS_UNION1* {.pure, union.} = object
     wszArg*: ptr WCHAR
     szArg*: ptr CHAR
+
   ODBC_VS_ARGS_UNION2* {.pure, union.} = object
     wszCorrelation*: ptr WCHAR
     szCorrelation*: ptr CHAR
+
   ODBC_VS_ARGS* {.pure.} = object
     pguidEvent*: ptr GUID
     dwFlags*: DWORD
     union1*: ODBC_VS_ARGS_UNION1
     union2*: ODBC_VS_ARGS_UNION2
     RetCode*: RETCODE
+
   PODBC_VS_ARGS* = ptr ODBC_VS_ARGS
+
 const
   ODBCVER* = 0x0351
   SQL_IS_YEAR* = 1
@@ -668,19 +673,19 @@
   SQL_CODE_HOUR_TO_MINUTE* = 11
   SQL_CODE_HOUR_TO_SECOND* = 12
   SQL_CODE_MINUTE_TO_SECOND* = 13
-  SQL_INTERVAL_YEAR* = 100+SQL_CODE_YEAR
-  SQL_INTERVAL_MONTH* = 100+SQL_CODE_MONTH
-  SQL_INTERVAL_DAY* = 100+SQL_CODE_DAY
-  SQL_INTERVAL_HOUR* = 100+SQL_CODE_HOUR
-  SQL_INTERVAL_MINUTE* = 100+SQL_CODE_MINUTE
-  SQL_INTERVAL_SECOND* = 100+SQL_CODE_SECOND
-  SQL_INTERVAL_YEAR_TO_MONTH* = 100+SQL_CODE_YEAR_TO_MONTH
-  SQL_INTERVAL_DAY_TO_HOUR* = 100+SQL_CODE_DAY_TO_HOUR
-  SQL_INTERVAL_DAY_TO_MINUTE* = 100+SQL_CODE_DAY_TO_MINUTE
-  SQL_INTERVAL_DAY_TO_SECOND* = 100+SQL_CODE_DAY_TO_SECOND
-  SQL_INTERVAL_HOUR_TO_MINUTE* = 100+SQL_CODE_HOUR_TO_MINUTE
-  SQL_INTERVAL_HOUR_TO_SECOND* = 100+SQL_CODE_HOUR_TO_SECOND
-  SQL_INTERVAL_MINUTE_TO_SECOND* = 100+SQL_CODE_MINUTE_TO_SECOND
+  SQL_INTERVAL_YEAR* = 100 + SQL_CODE_YEAR
+  SQL_INTERVAL_MONTH* = 100 + SQL_CODE_MONTH
+  SQL_INTERVAL_DAY* = 100 + SQL_CODE_DAY
+  SQL_INTERVAL_HOUR* = 100 + SQL_CODE_HOUR
+  SQL_INTERVAL_MINUTE* = 100 + SQL_CODE_MINUTE
+  SQL_INTERVAL_SECOND* = 100 + SQL_CODE_SECOND
+  SQL_INTERVAL_YEAR_TO_MONTH* = 100 + SQL_CODE_YEAR_TO_MONTH
+  SQL_INTERVAL_DAY_TO_HOUR* = 100 + SQL_CODE_DAY_TO_HOUR
+  SQL_INTERVAL_DAY_TO_MINUTE* = 100 + SQL_CODE_DAY_TO_MINUTE
+  SQL_INTERVAL_DAY_TO_SECOND* = 100 + SQL_CODE_DAY_TO_SECOND
+  SQL_INTERVAL_HOUR_TO_MINUTE* = 100 + SQL_CODE_HOUR_TO_MINUTE
+  SQL_INTERVAL_HOUR_TO_SECOND* = 100 + SQL_CODE_HOUR_TO_SECOND
+  SQL_INTERVAL_MINUTE_TO_SECOND* = 100 + SQL_CODE_MINUTE_TO_SECOND
   SQL_WCHAR* = -8
   SQL_UNICODE* = SQL_WCHAR
   SQL_WVARCHAR* = -9
@@ -718,15 +723,15 @@
   SQL_C_INTERVAL_MINUTE_TO_SECOND* = SQL_INTERVAL_MINUTE_TO_SECOND
   SQL_C_BINARY* = SQL_BINARY
   SQL_C_BIT* = SQL_BIT
-  SQL_C_SBIGINT* = SQL_BIGINT+SQL_SIGNED_OFFSET
-  SQL_C_UBIGINT* = SQL_BIGINT+SQL_UNSIGNED_OFFSET
+  SQL_C_SBIGINT* = SQL_BIGINT + SQL_SIGNED_OFFSET
+  SQL_C_UBIGINT* = SQL_BIGINT + SQL_UNSIGNED_OFFSET
   SQL_C_TINYINT* = SQL_TINYINT
-  SQL_C_SLONG* = SQL_C_LONG+SQL_SIGNED_OFFSET
-  SQL_C_SSHORT* = SQL_C_SHORT+SQL_SIGNED_OFFSET
-  SQL_C_STINYINT* = SQL_TINYINT+SQL_SIGNED_OFFSET
-  SQL_C_ULONG* = SQL_C_LONG+SQL_UNSIGNED_OFFSET
-  SQL_C_USHORT* = SQL_C_SHORT+SQL_UNSIGNED_OFFSET
-  SQL_C_UTINYINT* = SQL_TINYINT+SQL_UNSIGNED_OFFSET
+  SQL_C_SLONG* = SQL_C_LONG + SQL_SIGNED_OFFSET
+  SQL_C_SSHORT* = SQL_C_SHORT + SQL_SIGNED_OFFSET
+  SQL_C_STINYINT* = SQL_TINYINT + SQL_SIGNED_OFFSET
+  SQL_C_ULONG* = SQL_C_LONG + SQL_UNSIGNED_OFFSET
+  SQL_C_USHORT* = SQL_C_SHORT + SQL_UNSIGNED_OFFSET
+  SQL_C_UTINYINT* = SQL_TINYINT + SQL_UNSIGNED_OFFSET
   SQL_C_GUID* = SQL_GUID
   SQL_TYPE_NULL* = 0
   SQL_C_VARBOOKMARK* = SQL_C_BINARY
@@ -1100,7 +1105,9 @@
   SQL_CA2_MAX_ROWS_DELETE* = 0x00000200
   SQL_CA2_MAX_ROWS_UPDATE* = 0x00000400
   SQL_CA2_MAX_ROWS_CATALOG* = 0x00000800
-  SQL_CA2_MAX_ROWS_AFFECTS_ALL* = SQL_CA2_MAX_ROWS_SELECT or SQL_CA2_MAX_ROWS_INSERT or SQL_CA2_MAX_ROWS_DELETE or SQL_CA2_MAX_ROWS_UPDATE or SQL_CA2_MAX_ROWS_CATALOG
+  SQL_CA2_MAX_ROWS_AFFECTS_ALL* =
+    SQL_CA2_MAX_ROWS_SELECT or SQL_CA2_MAX_ROWS_INSERT or SQL_CA2_MAX_ROWS_DELETE or
+    SQL_CA2_MAX_ROWS_UPDATE or SQL_CA2_MAX_ROWS_CATALOG
   SQL_CA2_CRC_EXACT* = 0x00001000
   SQL_CA2_CRC_APPROXIMATE* = 0x00002000
   SQL_CA2_SIMULATE_NON_UNIQUE* = 0x00004000
@@ -1542,329 +1549,2151 @@
   ODBC_ERROR_REMOVE_DSN_FAILED* = 20
   ODBC_ERROR_OUT_OF_MEM* = 21
   ODBC_ERROR_OUTPUT_STRING_TRUNCATED* = 22
-  SQL_ODBC_KEYWORDS* = "ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,ASC,ASSERTION,AT,AUTHORIZATION,AVG,BEGIN,BETWEEN,BIT,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,CATALOG,CHAR,CHAR_LENGTH,CHARACTER,CHARACTER_LENGTH,CHECK,CLOSE,COALESCE,COLLATE,COLLATION,COLUMN,COMMIT,CONNECT,CONNECTION,CONSTRAINT,CONSTRAINTS,CONTINUE,CONVERT,CORRESPONDING,COUNT,CREATE,CROSS,CURRENT,CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,CURSOR,DATE,DAY,DEALLOCATE,DEC,DECIMAL,DECLARE,DEFAULT,DEFERRABLE,DEFERRED,DELETE,DESC,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,DISCONNECT,DISTINCT,DOMAIN,DOUBLE,DROP,ELSE,END,END-EXEC,ESCAPE,EXCEPT,EXCEPTION,EXEC,EXECUTE,EXISTS,EXTERNAL,EXTRACT,FALSE,FETCH,FIRST,FLOAT,FOR,FOREIGN,FORTRAN,FOUND,FROM,FULL,GET,GLOBAL,GO,GOTO,GRANT,GROUP,HAVING,HOUR,IDENTITY,IMMEDIATE,IN,INCLUDE,INDEX,INDICATOR,INITIALLY,INNER,INPUT,INSENSITIVE,INSERT,INT,INTEGER,INTERSECT,INTERVAL,INTO,IS,ISOLATION,JOIN,KEY,LANGUAGE,LAST,LEADING,LEFT,LEVEL,LIKE,LOCAL,LOWER,MATCH,MAX,MIN,MINUTE,MODULE,MONTH,NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NONE,NOT,NULL,NULLIF,NUMERIC,OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR,ORDER,OUTER,OUTPUT,OVERLAPS,PAD,PARTIAL,PASCAL,PLI,POSITION,PRECISION,PREPARE,PRESERVE,PRIMARY,PRIOR,PRIVILEGES,PROCEDURE,PUBLIC,READ,REAL,REFERENCES,RELATIVE,RESTRICT,REVOKE,RIGHT,ROLLBACK,ROWSSCHEMA,SCROLL,SECOND,SECTION,SELECT,SESSION,SESSION_USER,SET,SIZE,SMALLINT,SOME,SPACE,SQL,SQLCA,SQLCODE,SQLERROR,SQLSTATE,SQLWARNING,SUBSTRING,SUM,SYSTEM_USER,TABLE,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,TO,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,TRUE,UNION,UNIQUE,UNKNOWN,UPDATE,UPPER,USAGE,USER,USING,VALUE,VALUES,VARCHAR,VARYING,VIEW,WHEN,WHENEVER,WHERE,WITH,WORK,WRITE,YEAR,ZONE"
+  SQL_ODBC_KEYWORDS* =
+    "ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,ASC,ASSERTION,AT,AUTHORIZATION,AVG,BEGIN,BETWEEN,BIT,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,CATALOG,CHAR,CHAR_LENGTH,CHARACTER,CHARACTER_LENGTH,CHECK,CLOSE,COALESCE,COLLATE,COLLATION,COLUMN,COMMIT,CONNECT,CONNECTION,CONSTRAINT,CONSTRAINTS,CONTINUE,CONVERT,CORRESPONDING,COUNT,CREATE,CROSS,CURRENT,CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,CURSOR,DATE,DAY,DEALLOCATE,DEC,DECIMAL,DECLARE,DEFAULT,DEFERRABLE,DEFERRED,DELETE,DESC,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,DISCONNECT,DISTINCT,DOMAIN,DOUBLE,DROP,ELSE,END,END-EXEC,ESCAPE,EXCEPT,EXCEPTION,EXEC,EXECUTE,EXISTS,EXTERNAL,EXTRACT,FALSE,FETCH,FIRST,FLOAT,FOR,FOREIGN,FORTRAN,FOUND,FROM,FULL,GET,GLOBAL,GO,GOTO,GRANT,GROUP,HAVING,HOUR,IDENTITY,IMMEDIATE,IN,INCLUDE,INDEX,INDICATOR,INITIALLY,INNER,INPUT,INSENSITIVE,INSERT,INT,INTEGER,INTERSECT,INTERVAL,INTO,IS,ISOLATION,JOIN,KEY,LANGUAGE,LAST,LEADING,LEFT,LEVEL,LIKE,LOCAL,LOWER,MATCH,MAX,MIN,MINUTE,MODULE,MONTH,NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NONE,NOT,NULL,NULLIF,NUMERIC,OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR,ORDER,OUTER,OUTPUT,OVERLAPS,PAD,PARTIAL,PASCAL,PLI,POSITION,PRECISION,PREPARE,PRESERVE,PRIMARY,PRIOR,PRIVILEGES,PROCEDURE,PUBLIC,READ,REAL,REFERENCES,RELATIVE,RESTRICT,REVOKE,RIGHT,ROLLBACK,ROWSSCHEMA,SCROLL,SECOND,SECTION,SELECT,SESSION,SESSION_USER,SET,SIZE,SMALLINT,SOME,SPACE,SQL,SQLCA,SQLCODE,SQLERROR,SQLSTATE,SQLWARNING,SUBSTRING,SUM,SYSTEM_USER,TABLE,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,TO,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,TRUE,UNION,UNIQUE,UNKNOWN,UPDATE,UPPER,USAGE,USER,USING,VALUE,VALUES,VARCHAR,VARYING,VIEW,WHEN,WHENEVER,WHERE,WITH,WORK,WRITE,YEAR,ZONE"
 type
   TSQL_YEAR_MONTH_STRUCT* {.pure.} = object
     year*: TSQLUINTEGER
     month*: TSQLUINTEGER
+
   TSQL_DAY_SECOND_STRUCT* {.pure.} = object
     day*: TSQLUINTEGER
     hour*: TSQLUINTEGER
     minute*: TSQLUINTEGER
     second*: TSQLUINTEGER
     fraction*: TSQLUINTEGER
+
   SQL_INTERVAL_STRUCT_intval* {.pure, union.} = object
     year_month*: TSQL_YEAR_MONTH_STRUCT
     day_second*: TSQL_DAY_SECOND_STRUCT
+
   TSQL_INTERVAL_STRUCT* {.pure.} = object
     interval_type*: TSQLINTERVAL
     interval_sign*: TSQLSMALLINT
     intval*: SQL_INTERVAL_STRUCT_intval
+
   TSQL_NUMERIC_STRUCT* {.pure.} = object
     precision*: TSQLCHAR
     scale*: TSQLSCHAR
     sign*: TSQLCHAR
     val*: array[SQL_MAX_NUMERIC_LEN, TSQLCHAR]
-proc SQLAllocConnect*(EnvironmentHandle: TSQLHENV, ConnectionHandle: ptr TSQLHDBC): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLAllocEnv*(EnvironmentHandle: ptr TSQLHENV): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLAllocHandle*(HandleType: TSQLSMALLINT, InputHandle: TSQLHANDLE, OutputHandle: ptr TSQLHANDLE): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLAllocStmt*(ConnectionHandle: TSQLHDBC, StatementHandle: ptr TSQLHSTMT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLBindCol*(StatementHandle: TSQLHSTMT, ColumnNumber: TSQLUSMALLINT, TargetType: TSQLSMALLINT, TargetValue: TSQLPOINTER, BufferLength: TSQLLEN, StrLen_or_Ind: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLBindParam*(StatementHandle: TSQLHSTMT, ParameterNumber: TSQLUSMALLINT, ValueType: TSQLSMALLINT, ParameterType: TSQLSMALLINT, LengthPrecision: TSQLULEN, ParameterScale: TSQLSMALLINT, ParameterValue: TSQLPOINTER, StrLen_or_Ind: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLCancel*(StatementHandle: TSQLHSTMT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLCloseCursor*(StatementHandle: TSQLHSTMT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLCopyDesc*(SourceDescHandle: TSQLHDESC, TargetDescHandle: TSQLHDESC): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLDisconnect*(ConnectionHandle: TSQLHDBC): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLEndTran*(HandleType: TSQLSMALLINT, Handle: TSQLHANDLE, CompletionType: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLExecute*(StatementHandle: TSQLHSTMT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLFetch*(StatementHandle: TSQLHSTMT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLFetchScroll*(StatementHandle: TSQLHSTMT, FetchOrientation: TSQLSMALLINT, FetchOffset: TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLFreeConnect*(ConnectionHandle: TSQLHDBC): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLFreeEnv*(EnvironmentHandle: TSQLHENV): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLFreeHandle*(HandleType: TSQLSMALLINT, Handle: TSQLHANDLE): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLFreeStmt*(StatementHandle: TSQLHSTMT, Option: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetData*(StatementHandle: TSQLHSTMT, ColumnNumber: TSQLUSMALLINT, TargetType: TSQLSMALLINT, TargetValue: TSQLPOINTER, BufferLength: TSQLLEN, StrLen_or_Ind: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetEnvAttr*(EnvironmentHandle: TSQLHENV, Attribute: TSQLINTEGER, Value: TSQLPOINTER, BufferLength: TSQLINTEGER, StringLength: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetFunctions*(ConnectionHandle: TSQLHDBC, FunctionId: TSQLUSMALLINT, Supported: ptr TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetStmtOption*(StatementHandle: TSQLHSTMT, Option: TSQLUSMALLINT, Value: TSQLPOINTER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLNumResultCols*(StatementHandle: TSQLHSTMT, ColumnCount: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLParamData*(StatementHandle: TSQLHSTMT, Value: ptr TSQLPOINTER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLPutData*(StatementHandle: TSQLHSTMT, Data: TSQLPOINTER, StrLen_or_Ind: TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLRowCount*(StatementHandle: TSQLHSTMT, RowCount: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSetDescRec*(DescriptorHandle: TSQLHDESC, RecNumber: TSQLSMALLINT, Type: TSQLSMALLINT, SubType: TSQLSMALLINT, Length: TSQLLEN, Precision: TSQLSMALLINT, Scale: TSQLSMALLINT, Data: TSQLPOINTER, StringLength: ptr TSQLLEN, Indicator: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSetEnvAttr*(EnvironmentHandle: TSQLHENV, Attribute: TSQLINTEGER, Value: TSQLPOINTER, StringLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSetParam*(StatementHandle: TSQLHSTMT, ParameterNumber: TSQLUSMALLINT, ValueType: TSQLSMALLINT, ParameterType: TSQLSMALLINT, LengthPrecision: TSQLULEN, ParameterScale: TSQLSMALLINT, ParameterValue: TSQLPOINTER, StrLen_or_Ind: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSetStmtOption*(StatementHandle: TSQLHSTMT, Option: TSQLUSMALLINT, Value: TSQLULEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLTransact*(EnvironmentHandle: TSQLHENV, ConnectionHandle: TSQLHDBC, CompletionType: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLBulkOperations*(StatementHandle: TSQLHSTMT, Operation: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLDescribeParam*(StatementHandle: TSQLHSTMT, ParameterNumber: TSQLUSMALLINT, DataTypePtr: ptr TSQLSMALLINT, ParameterSizePtr: ptr TSQLULEN, DecimalDigitsPtr: ptr TSQLSMALLINT, NullablePtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLExtendedFetch*(StatementHandle: TSQLHSTMT, FetchOrientation: TSQLUSMALLINT, FetchOffset: TSQLLEN, RowCountPtr: ptr TSQLULEN, RowStatusArray: ptr TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLMoreResults*(StatementHandle: TSQLHSTMT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLNumParams*(StatementHandle: TSQLHSTMT, ParameterCountPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLParamOptions*(hstmt: TSQLHSTMT, crow: TSQLULEN, pirow: ptr TSQLULEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLAllocConnect*(
+  EnvironmentHandle: TSQLHENV, ConnectionHandle: ptr TSQLHDBC
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLAllocEnv*(
+  EnvironmentHandle: ptr TSQLHENV
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLAllocHandle*(
+  HandleType: TSQLSMALLINT, InputHandle: TSQLHANDLE, OutputHandle: ptr TSQLHANDLE
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLAllocStmt*(
+  ConnectionHandle: TSQLHDBC, StatementHandle: ptr TSQLHSTMT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLBindCol*(
+  StatementHandle: TSQLHSTMT,
+  ColumnNumber: TSQLUSMALLINT,
+  TargetType: TSQLSMALLINT,
+  TargetValue: TSQLPOINTER,
+  BufferLength: TSQLLEN,
+  StrLen_or_Ind: ptr TSQLLEN,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLBindParam*(
+  StatementHandle: TSQLHSTMT,
+  ParameterNumber: TSQLUSMALLINT,
+  ValueType: TSQLSMALLINT,
+  ParameterType: TSQLSMALLINT,
+  LengthPrecision: TSQLULEN,
+  ParameterScale: TSQLSMALLINT,
+  ParameterValue: TSQLPOINTER,
+  StrLen_or_Ind: ptr TSQLLEN,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLCancel*(
+  StatementHandle: TSQLHSTMT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLCloseCursor*(
+  StatementHandle: TSQLHSTMT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLCopyDesc*(
+  SourceDescHandle: TSQLHDESC, TargetDescHandle: TSQLHDESC
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLDisconnect*(
+  ConnectionHandle: TSQLHDBC
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLEndTran*(
+  HandleType: TSQLSMALLINT, Handle: TSQLHANDLE, CompletionType: TSQLSMALLINT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLExecute*(
+  StatementHandle: TSQLHSTMT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLFetch*(
+  StatementHandle: TSQLHSTMT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLFetchScroll*(
+  StatementHandle: TSQLHSTMT, FetchOrientation: TSQLSMALLINT, FetchOffset: TSQLLEN
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLFreeConnect*(
+  ConnectionHandle: TSQLHDBC
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLFreeEnv*(
+  EnvironmentHandle: TSQLHENV
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLFreeHandle*(
+  HandleType: TSQLSMALLINT, Handle: TSQLHANDLE
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLFreeStmt*(
+  StatementHandle: TSQLHSTMT, Option: TSQLUSMALLINT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetData*(
+  StatementHandle: TSQLHSTMT,
+  ColumnNumber: TSQLUSMALLINT,
+  TargetType: TSQLSMALLINT,
+  TargetValue: TSQLPOINTER,
+  BufferLength: TSQLLEN,
+  StrLen_or_Ind: ptr TSQLLEN,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetEnvAttr*(
+  EnvironmentHandle: TSQLHENV,
+  Attribute: TSQLINTEGER,
+  Value: TSQLPOINTER,
+  BufferLength: TSQLINTEGER,
+  StringLength: ptr TSQLINTEGER,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetFunctions*(
+  ConnectionHandle: TSQLHDBC, FunctionId: TSQLUSMALLINT, Supported: ptr TSQLUSMALLINT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetStmtOption*(
+  StatementHandle: TSQLHSTMT, Option: TSQLUSMALLINT, Value: TSQLPOINTER
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLNumResultCols*(
+  StatementHandle: TSQLHSTMT, ColumnCount: ptr TSQLSMALLINT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLParamData*(
+  StatementHandle: TSQLHSTMT, Value: ptr TSQLPOINTER
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLPutData*(
+  StatementHandle: TSQLHSTMT, Data: TSQLPOINTER, StrLen_or_Ind: TSQLLEN
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLRowCount*(
+  StatementHandle: TSQLHSTMT, RowCount: ptr TSQLLEN
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSetDescRec*(
+  DescriptorHandle: TSQLHDESC,
+  RecNumber: TSQLSMALLINT,
+  Type: TSQLSMALLINT,
+  SubType: TSQLSMALLINT,
+  Length: TSQLLEN,
+  Precision: TSQLSMALLINT,
+  Scale: TSQLSMALLINT,
+  Data: TSQLPOINTER,
+  StringLength: ptr TSQLLEN,
+  Indicator: ptr TSQLLEN,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSetEnvAttr*(
+  EnvironmentHandle: TSQLHENV,
+  Attribute: TSQLINTEGER,
+  Value: TSQLPOINTER,
+  StringLength: TSQLINTEGER,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSetParam*(
+  StatementHandle: TSQLHSTMT,
+  ParameterNumber: TSQLUSMALLINT,
+  ValueType: TSQLSMALLINT,
+  ParameterType: TSQLSMALLINT,
+  LengthPrecision: TSQLULEN,
+  ParameterScale: TSQLSMALLINT,
+  ParameterValue: TSQLPOINTER,
+  StrLen_or_Ind: ptr TSQLLEN,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSetStmtOption*(
+  StatementHandle: TSQLHSTMT, Option: TSQLUSMALLINT, Value: TSQLULEN
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLTransact*(
+  EnvironmentHandle: TSQLHENV, ConnectionHandle: TSQLHDBC, CompletionType: TSQLUSMALLINT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLBulkOperations*(
+  StatementHandle: TSQLHSTMT, Operation: TSQLSMALLINT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLDescribeParam*(
+  StatementHandle: TSQLHSTMT,
+  ParameterNumber: TSQLUSMALLINT,
+  DataTypePtr: ptr TSQLSMALLINT,
+  ParameterSizePtr: ptr TSQLULEN,
+  DecimalDigitsPtr: ptr TSQLSMALLINT,
+  NullablePtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLExtendedFetch*(
+  StatementHandle: TSQLHSTMT,
+  FetchOrientation: TSQLUSMALLINT,
+  FetchOffset: TSQLLEN,
+  RowCountPtr: ptr TSQLULEN,
+  RowStatusArray: ptr TSQLUSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLMoreResults*(
+  StatementHandle: TSQLHSTMT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLNumParams*(
+  StatementHandle: TSQLHSTMT, ParameterCountPtr: ptr TSQLSMALLINT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLParamOptions*(
+  hstmt: TSQLHSTMT, crow: TSQLULEN, pirow: ptr TSQLULEN
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
 when winimCpu64:
-  type
-    TSQLSETPOSIROW* = UINT64
+  type TSQLSETPOSIROW* = UINT64
 when winimCpu32:
-  type
-    TSQLSETPOSIROW* = TSQLUSMALLINT
-proc SQLSetPos*(StatementHandle: TSQLHSTMT, RowNumber: TSQLSETPOSIROW, Operation: TSQLUSMALLINT, LockType: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLBindParameter*(StatementHandle: TSQLHSTMT, ParameterNumber: TSQLUSMALLINT, InputOutputType: TSQLSMALLINT, ValueType: TSQLSMALLINT, ParameterType: TSQLSMALLINT, ColumnSize: TSQLULEN, DecimalDigits: TSQLSMALLINT, ParameterValuePtr: TSQLPOINTER, BufferLength: TSQLLEN, StrLen_or_IndPtr: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLAllocHandleStd*(fHandleType: TSQLSMALLINT, hInput: TSQLHANDLE, phOutput: ptr TSQLHANDLE): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSetScrollOptions*(hstmt: TSQLHSTMT, fConcurrency: TSQLUSMALLINT, crowKeyset: TSQLLEN, crowRowset: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc TraceOpenLogFile*(P1: LPWSTR, P2: LPWSTR, P3: DWORD): RETCODE {.winapi, stdcall, dynlib: "odbctrac", importc.}
+  type TSQLSETPOSIROW* = TSQLUSMALLINT
+proc SQLSetPos*(
+  StatementHandle: TSQLHSTMT,
+  RowNumber: TSQLSETPOSIROW,
+  Operation: TSQLUSMALLINT,
+  LockType: TSQLUSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLBindParameter*(
+  StatementHandle: TSQLHSTMT,
+  ParameterNumber: TSQLUSMALLINT,
+  InputOutputType: TSQLSMALLINT,
+  ValueType: TSQLSMALLINT,
+  ParameterType: TSQLSMALLINT,
+  ColumnSize: TSQLULEN,
+  DecimalDigits: TSQLSMALLINT,
+  ParameterValuePtr: TSQLPOINTER,
+  BufferLength: TSQLLEN,
+  StrLen_or_IndPtr: ptr TSQLLEN,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLAllocHandleStd*(
+  fHandleType: TSQLSMALLINT, hInput: TSQLHANDLE, phOutput: ptr TSQLHANDLE
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSetScrollOptions*(
+  hstmt: TSQLHSTMT,
+  fConcurrency: TSQLUSMALLINT,
+  crowKeyset: TSQLLEN,
+  crowRowset: TSQLUSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc TraceOpenLogFile*(
+  P1: LPWSTR, P2: LPWSTR, P3: DWORD
+): RETCODE {.winapi, stdcall, dynlib: "odbctrac", importc.}
+
 proc TraceCloseLogFile*(): RETCODE {.winapi, stdcall, dynlib: "odbctrac", importc.}
-proc TraceReturn*(P1: RETCODE, P2: RETCODE): VOID {.winapi, stdcall, dynlib: "odbctrac", importc.}
+proc TraceReturn*(
+  P1: RETCODE, P2: RETCODE
+): VOID {.winapi, stdcall, dynlib: "odbctrac", importc.}
+
 proc TraceVersion*(): DWORD {.winapi, stdcall, dynlib: "odbctrac", importc.}
-proc TraceVSControl*(P1: DWORD): RETCODE {.winapi, stdcall, dynlib: "odbctrac", importc.}
-proc ODBCSetTryWaitValue*(dwValue: DWORD): WINBOOL {.winapi, stdcall, dynlib: "odbc32", importc.}
+proc TraceVSControl*(
+  P1: DWORD
+): RETCODE {.winapi, stdcall, dynlib: "odbctrac", importc.}
+
+proc ODBCSetTryWaitValue*(
+  dwValue: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "odbc32", importc.}
+
 proc ODBCGetTryWaitValue*(): DWORD {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLColAttributeW*(StatementHandle: TSQLHSTMT, ColumnNumber: TSQLUSMALLINT, FieldIdentifier: TSQLUSMALLINT, CharacterAttributePtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT, NumericAttributePtr: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLColAttributesW*(StatementHandle: TSQLHSTMT, ColumnNumber: TSQLUSMALLINT, FieldIdentifier: TSQLUSMALLINT, CharacterAttributePtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT, NumericAttributePtr: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLConnectW*(ConnectionHandle: TSQLHDBC, ServerName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, UserName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, Authentication: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLDescribeColW*(StatementHandle: TSQLHSTMT, ColumnNumber: TSQLUSMALLINT, ColumnName: ptr TSQLWCHAR, BufferLength: TSQLSMALLINT, NameLengthPtr: ptr TSQLSMALLINT, DataTypePtr: ptr TSQLSMALLINT, ColumnSizePtr: ptr TSQLULEN, DecimalDigitsPtr: ptr TSQLSMALLINT, NullablePtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLErrorW*(EnvironmentHandle: TSQLHENV, ConnectionHandle: TSQLHDBC, StatementHandle: TSQLHSTMT, Sqlstate: ptr TSQLWCHAR, NativeError: ptr TSQLINTEGER, MessageText: ptr TSQLWCHAR, BufferLength: TSQLSMALLINT, TextLength: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLExecDirectW*(StatementHandle: TSQLHSTMT, StatementText: ptr TSQLWCHAR, TextLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetConnectAttrW*(ConnectionHandle: TSQLHDBC, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, BufferLength: TSQLINTEGER, StringLengthPtr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetCursorNameW*(StatementHandle: TSQLHSTMT, CursorName: ptr TSQLWCHAR, BufferLength: TSQLSMALLINT, NameLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSetDescFieldW*(DescriptorHandle: TSQLHDESC, RecNumber: TSQLSMALLINT, FieldIdentifier: TSQLSMALLINT, Value: TSQLPOINTER, BufferLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetDescFieldW*(DescriptorHandle: TSQLHDESC, RecNumber: TSQLSMALLINT, FieldIdentifier: TSQLSMALLINT, ValuePtr: TSQLPOINTER, BufferLength: TSQLINTEGER, StringLengthPtr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetDescRecW*(DescriptorHandle: TSQLHDESC, RecNumber: TSQLSMALLINT, Name: ptr TSQLWCHAR, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT, TypePtr: ptr TSQLSMALLINT, SubTypePtr: ptr TSQLSMALLINT, LengthPtr: ptr TSQLLEN, PrecisionPtr: ptr TSQLSMALLINT, ScalePtr: ptr TSQLSMALLINT, NullablePtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetDiagFieldW*(HandleType: TSQLSMALLINT, Handle: TSQLHANDLE, RecNumber: TSQLSMALLINT, DiagIdentifier: TSQLSMALLINT, DiagInfoPtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetDiagRecW*(HandleType: TSQLSMALLINT, Handle: TSQLHANDLE, RecNumber: TSQLSMALLINT, SQLState: ptr TSQLWCHAR, NativeErrorPtr: ptr TSQLINTEGER, MessageText: ptr TSQLWCHAR, BufferLength: TSQLSMALLINT, TextLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLPrepareW*(StatementHandle: TSQLHSTMT, StatementText: ptr TSQLWCHAR, TextLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSetConnectAttrW*(ConnectionHandle: TSQLHDBC, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, StringLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSetCursorNameW*(StatementHandle: TSQLHSTMT, CursorName: ptr TSQLWCHAR, NameLength: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLColumnsW*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT, ColumnName: ptr TSQLWCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetConnectOptionW*(ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLPOINTER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetInfoW*(ConnectionHandle: TSQLHDBC, InfoType: TSQLUSMALLINT, InfoValuePtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetTypeInfoW*(StatementHandle: TSQLHSTMT, DataType: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSetConnectOptionW*(ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLULEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSpecialColumnsW*(StatementHandle: TSQLHSTMT, IdentifierType: TSQLUSMALLINT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT, Scope: TSQLUSMALLINT, Nullable: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLStatisticsW*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT, Unique: TSQLUSMALLINT, Reserved: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLTablesW*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT, TableType: ptr TSQLWCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLDataSourcesW*(EnvironmentHandle: TSQLHENV, Direction: TSQLUSMALLINT, ServerName: ptr TSQLWCHAR, BufferLength1: TSQLSMALLINT, NameLength1Ptr: ptr TSQLSMALLINT, Description: ptr TSQLWCHAR, BufferLength2: TSQLSMALLINT, NameLength2Ptr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLDriverConnectW*(ConnectionHandle: TSQLHDBC, WindowHandle: TSQLHWND, InConnectionString: ptr TSQLWCHAR, StringLength1: TSQLSMALLINT, OutConnectionString: ptr TSQLWCHAR, BufferLength: TSQLSMALLINT, StringLength2Ptr: ptr TSQLSMALLINT, DriverCompletion: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLBrowseConnectW*(ConnectionHandle: TSQLHDBC, InConnectionString: ptr TSQLWCHAR, StringLength1: TSQLSMALLINT, OutConnectionString: ptr TSQLWCHAR, BufferLength: TSQLSMALLINT, StringLength2Ptr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLColumnPrivilegesW*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT, ColumnName: ptr TSQLWCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetStmtAttrW*(StatementHandle: TSQLHSTMT, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, BufferLength: TSQLINTEGER, StringLengthPtr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSetStmtAttrW*(StatementHandle: TSQLHSTMT, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, StringLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLForeignKeysW*(StatementHandle: TSQLHSTMT, PKCatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, PKSchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, PKTableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT, FKCatalogName: ptr TSQLWCHAR, NameLength4: TSQLSMALLINT, FKSchemaName: ptr TSQLWCHAR, NameLength5: TSQLSMALLINT, FKTableName: ptr TSQLWCHAR, NameLength6: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLNativeSqlW*(ConnectionHandle: TSQLHDBC, InStatementText: ptr TSQLWCHAR, TextLength1: TSQLINTEGER, OutStatementText: ptr TSQLWCHAR, BufferLength: TSQLINTEGER, TextLength2Ptr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLPrimaryKeysW*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLProcedureColumnsW*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, ProcName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT, ColumnName: ptr TSQLWCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLProceduresW*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, ProcName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLTablePrivilegesW*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLDriversW*(EnvironmentHandle: TSQLHENV, Direction: TSQLUSMALLINT, DriverDescription: ptr TSQLWCHAR, BufferLength1: TSQLSMALLINT, DescriptionLengthPtr: ptr TSQLSMALLINT, DriverAttributes: ptr TSQLWCHAR, BufferLength2: TSQLSMALLINT, AttributesLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLColAttributeA*(StatementHandle: TSQLHSTMT, ColumnNumber: TSQLSMALLINT, FieldIdentifier: TSQLSMALLINT, CharacterAttributePtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT, NumericAttributePtr: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLColAttributesA*(StatementHandle: TSQLHSTMT, ColumnNumber: TSQLUSMALLINT, FieldIdentifier: TSQLUSMALLINT, CharacterAttributePtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT, NumericAttributePtr: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLConnectA*(ConnectionHandle: TSQLHDBC, ServerName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, UserName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, Authentication: ptr TSQLCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLDescribeColA*(StatementHandle: TSQLHSTMT, ColumnNumber: TSQLUSMALLINT, ColumnName: ptr TSQLCHAR, BufferLength: TSQLSMALLINT, NameLengthPtr: ptr TSQLSMALLINT, DataTypePtr: ptr TSQLSMALLINT, ColumnSizePtr: ptr TSQLUINTEGER, DecimalDigitsPtr: ptr TSQLSMALLINT, NullablePtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLErrorA*(EnvironmentHandle: TSQLHENV, ConnectionHandle: TSQLHDBC, StatementHandle: TSQLHSTMT, Sqlstate: ptr TSQLCHAR, NativeError: ptr TSQLINTEGER, MessageText: ptr TSQLCHAR, BufferLength: TSQLSMALLINT, TextLength: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLExecDirectA*(StatementHandle: TSQLHSTMT, StatementText: ptr TSQLCHAR, TextLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetConnectAttrA*(ConnectionHandle: TSQLHDBC, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, BufferLength: TSQLINTEGER, StringLengthPtr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetCursorNameA*(StatementHandle: TSQLHSTMT, CursorName: ptr TSQLCHAR, BufferLength: TSQLSMALLINT, NameLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetDescFieldA*(DescriptorHandle: TSQLHDESC, RecNumber: TSQLSMALLINT, FieldIdentifier: TSQLSMALLINT, ValuePtr: TSQLPOINTER, BufferLength: TSQLINTEGER, StringLengthPtr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetDescRecA*(DescriptorHandle: TSQLHDESC, RecNumber: TSQLSMALLINT, Name: ptr TSQLCHAR, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT, TypePtr: ptr TSQLSMALLINT, SubTypePtr: ptr TSQLSMALLINT, LengthPtr: ptr TSQLINTEGER, PrecisionPtr: ptr TSQLSMALLINT, ScalePtr: ptr TSQLSMALLINT, NullablePtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetDiagFieldA*(HandleType: TSQLSMALLINT, Handle: TSQLHANDLE, RecNumber: TSQLSMALLINT, DiagIdentifier: TSQLSMALLINT, DiagInfoPtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetDiagRecA*(HandleType: TSQLSMALLINT, Handle: TSQLHANDLE, RecNumber: TSQLSMALLINT, SQLState: ptr TSQLCHAR, NativeErrorPtr: ptr TSQLINTEGER, MessageText: ptr TSQLCHAR, BufferLength: TSQLSMALLINT, TextLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetStmtAttrA*(StatementHandle: TSQLHSTMT, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, BufferLength: TSQLINTEGER, StringLengthPtr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetTypeInfoA*(StatementHandle: TSQLHSTMT, DataTyoe: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLPrepareA*(StatementHandle: TSQLHSTMT, StatementText: ptr TSQLCHAR, TextLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSetConnectAttrA*(ConnectionHandle: TSQLHDBC, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, StringLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSetCursorNameA*(StatementHandle: TSQLHSTMT, CursorName: ptr TSQLCHAR, NameLength: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLColumnsA*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT, ColumnName: ptr TSQLCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetConnectOptionA*(ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLPOINTER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLGetInfoA*(ConnectionHandle: TSQLHDBC, InfoType: TSQLUSMALLINT, InfoValuePtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSetConnectOptionA*(ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLULEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLSpecialColumnsA*(StatementHandle: TSQLHSTMT, IdentifierType: TSQLUSMALLINT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT, Scope: TSQLUSMALLINT, Nullable: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLStatisticsA*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT, Unique: TSQLUSMALLINT, Reserved: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLTablesA*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT, TableType: ptr TSQLCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLDataSourcesA*(EnvironmentHandle: TSQLHENV, Direction: TSQLUSMALLINT, ServerName: ptr TSQLCHAR, BufferLength1: TSQLSMALLINT, NameLength1Ptr: ptr TSQLSMALLINT, Description: ptr TSQLCHAR, BufferLength2: TSQLSMALLINT, NameLength2Ptr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLDriverConnectA*(ConnectionHandle: TSQLHDBC, WindowHandle: TSQLHWND, InConnectionString: ptr TSQLCHAR, StringLength1: TSQLSMALLINT, OutConnectionString: ptr TSQLCHAR, BufferLength: TSQLSMALLINT, StringLength2Ptr: ptr TSQLSMALLINT, DriverCompletion: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLBrowseConnectA*(ConnectionHandle: TSQLHDBC, InConnectionString: ptr TSQLCHAR, StringLength1: TSQLSMALLINT, OutConnectionString: ptr TSQLCHAR, BufferLength: TSQLSMALLINT, StringLength2Ptr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLColumnPrivilegesA*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT, ColumnName: ptr TSQLCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLForeignKeysA*(StatementHandle: TSQLHSTMT, PKCatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, PKSchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, PKTableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT, FKCatalogName: ptr TSQLCHAR, NameLength4: TSQLSMALLINT, FKSchemaName: ptr TSQLCHAR, NameLength5: TSQLSMALLINT, FKTableName: ptr TSQLCHAR, NameLength6: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLNativeSqlA*(ConnectionHandle: TSQLHDBC, InStatementText: ptr TSQLCHAR, TextLength1: TSQLINTEGER, OutStatementText: ptr TSQLCHAR, BufferLength: TSQLINTEGER, TextLength2Ptr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLPrimaryKeysA*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLProcedureColumnsA*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, ProcName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT, ColumnName: ptr TSQLCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLProceduresA*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, ProcName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLTablePrivilegesA*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLDriversA*(EnvironmentHandle: TSQLHENV, Direction: TSQLUSMALLINT, DriverDescription: ptr TSQLCHAR, BufferLength1: TSQLSMALLINT, DescriptionLengthPtr: ptr TSQLSMALLINT, DriverAttributes: ptr TSQLCHAR, BufferLength2: TSQLSMALLINT, AttributesLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
-proc SQLInstallODBC*(hwndParent: HWND, lpszInfFile: LPCSTR, lpszSrcPath: LPCSTR, lpszDrivers: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLManageDataSources*(hwndParent: HWND): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLCreateDataSource*(hwndParent: HWND, lpszDSN: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLGetTranslator*(hwnd: HWND, lpszName: LPSTR, cbNameMax: WORD, pcbNameOut: ptr WORD, lpszPath: LPSTR, cbPathMax: WORD, pcbPathOut: ptr WORD, pvOption: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLInstallDriver*(lpszInfFile: LPCSTR, lpszDriver: LPCSTR, lpszPath: LPSTR, cbPathMax: WORD, pcbPathOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLInstallDriverManager*(lpszPath: LPSTR, cbPathMax: WORD, pcbPathOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLGetInstalledDrivers*(lpszBuf: LPSTR, cbBufMax: WORD, pcbBufOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLGetAvailableDrivers*(lpszInfFile: LPCSTR, lpszBuf: LPSTR, cbBufMax: WORD, pcbBufOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLConfigDataSource*(hwndParent: HWND, fRequest: WORD, lpszDriver: LPCSTR, lpszAttributes: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLRemoveDefaultDataSource*(): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLWriteDSNToIni*(lpszDSN: LPCSTR, lpszDriver: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLRemoveDSNFromIni*(lpszDSN: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLValidDSN*(lpszDSN: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLWritePrivateProfileString*(lpszSection: LPCSTR, lpszEntry: LPCSTR, lpszString: LPCSTR, lpszFilename: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLGetPrivateProfileString*(lpszSection: LPCSTR, lpszEntry: LPCSTR, lpszDefault: LPCSTR, lpszRetBuffer: LPSTR, cbRetBuffer: int32, lpszFilename: LPCSTR): int32 {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLRemoveDriverManager*(lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLInstallTranslator*(lpszInfFile: LPCSTR, lpszTranslator: LPCSTR, lpszPathIn: LPCSTR, lpszPathOut: LPSTR, cbPathOutMax: WORD, pcbPathOut: ptr WORD, fRequest: WORD, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLRemoveTranslator*(lpszTranslator: LPCSTR, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLRemoveDriver*(lpszDriver: LPCSTR, fRemoveDSN: WINBOOL, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLConfigDriver*(hwndParent: HWND, fRequest: WORD, lpszDriver: LPCSTR, lpszArgs: LPCSTR, lpszMsg: LPSTR, cbMsgMax: WORD, pcbMsgOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLInstallerError*(iError: WORD, pfErrorCode: ptr DWORD, lpszErrorMsg: LPSTR, cbErrorMsgMax: WORD, pcbErrorMsg: ptr WORD): TSQLRETURN {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLPostInstallerError*(dwErrorCode: DWORD, lpszErrMsg: LPCSTR): TSQLRETURN {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLWriteFileDSN*(lpszFileName: LPCSTR, lpszAppName: LPCSTR, lpszKeyName: LPCSTR, lpszString: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLReadFileDSN*(lpszFileName: LPCSTR, lpszAppName: LPCSTR, lpszKeyName: LPCSTR, lpszString: LPSTR, cbString: WORD, pcbString: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLInstallDriverEx*(lpszDriver: LPCSTR, lpszPathIn: LPCSTR, lpszPathOut: LPSTR, cbPathOutMax: WORD, pcbPathOut: ptr WORD, fRequest: WORD, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLInstallTranslatorEx*(lpszTranslator: LPCSTR, lpszPathIn: LPCSTR, lpszPathOut: LPSTR, cbPathOutMax: WORD, pcbPathOut: ptr WORD, fRequest: WORD, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLGetConfigMode*(pwConfigMode: ptr UWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLSetConfigMode*(wConfigMode: UWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLInstallODBCW*(hwndParent: HWND, lpszInfFile: LPCWSTR, lpszSrcPath: LPCWSTR, lpszDrivers: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLCreateDataSourceW*(hwndParent: HWND, lpszDSN: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLGetTranslatorW*(hwnd: HWND, lpszName: LPWSTR, cbNameMax: WORD, pcbNameOut: ptr WORD, lpszPath: LPWSTR, cbPathMax: WORD, pcbPathOut: ptr WORD, pvOption: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLInstallDriverW*(lpszInfFile: LPCWSTR, lpszDriver: LPCWSTR, lpszPath: LPWSTR, cbPathMax: WORD, pcbPathOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLInstallDriverManagerW*(lpszPath: LPWSTR, cbPathMax: WORD, pcbPathOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLGetInstalledDriversW*(lpszBuf: LPWSTR, cbBufMax: WORD, pcbBufOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLGetAvailableDriversW*(lpszInfFile: LPCWSTR, lpszBuf: LPWSTR, cbBufMax: WORD, pcbBufOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLConfigDataSourceW*(hwndParent: HWND, fRequest: WORD, lpszDriver: LPCWSTR, lpszAttributes: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLWriteDSNToIniW*(lpszDSN: LPCWSTR, lpszDriver: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLRemoveDSNFromIniW*(lpszDSN: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLValidDSNW*(lpszDSN: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLWritePrivateProfileStringW*(lpszSection: LPCWSTR, lpszEntry: LPCWSTR, lpszString: LPCWSTR, lpszFilename: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLGetPrivateProfileStringW*(lpszSection: LPCWSTR, lpszEntry: LPCWSTR, lpszDefault: LPCWSTR, lpszRetBuffer: LPWSTR, cbRetBuffer: int32, lpszFilename: LPCWSTR): int32 {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLInstallTranslatorW*(lpszInfFile: LPCWSTR, lpszTranslator: LPCWSTR, lpszPathIn: LPCWSTR, lpszPathOut: LPWSTR, cbPathOutMax: WORD, pcbPathOut: ptr WORD, fRequest: WORD, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLRemoveTranslatorW*(lpszTranslator: LPCWSTR, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLRemoveDriverW*(lpszDriver: LPCWSTR, fRemoveDSN: WINBOOL, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLConfigDriverW*(hwndParent: HWND, fRequest: WORD, lpszDriver: LPCWSTR, lpszArgs: LPCWSTR, lpszMsg: LPWSTR, cbMsgMax: WORD, pcbMsgOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLInstallerErrorW*(iError: WORD, pfErrorCode: ptr DWORD, lpszErrorMsg: LPWSTR, cbErrorMsgMax: WORD, pcbErrorMsg: ptr WORD): TSQLRETURN {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLPostInstallerErrorW*(dwErrorCode: DWORD, lpszErrorMsg: LPCWSTR): TSQLRETURN {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLWriteFileDSNW*(lpszFileName: LPCWSTR, lpszAppName: LPCWSTR, lpszKeyName: LPCWSTR, lpszString: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLReadFileDSNW*(lpszFileName: LPCWSTR, lpszAppName: LPCWSTR, lpszKeyName: LPCWSTR, lpszString: LPWSTR, cbString: WORD, pcbString: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLInstallDriverExW*(lpszDriver: LPCWSTR, lpszPathIn: LPCWSTR, lpszPathOut: LPWSTR, cbPathOutMax: WORD, pcbPathOut: ptr WORD, fRequest: WORD, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLInstallTranslatorExW*(lpszTranslator: LPCWSTR, lpszPathIn: LPCWSTR, lpszPathOut: LPWSTR, cbPathOutMax: WORD, pcbPathOut: ptr WORD, fRequest: WORD, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
-proc SQLAllocHandle*(fHandleType: TSQLSMALLINT, hInput: TSQLHANDLE, phOutput: ptr TSQLHANDLE): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLAllocHandleStd".}
-proc `wszArg=`*(self: var ODBC_VS_ARGS, x: ptr WCHAR) {.inline.} = self.union1.wszArg = x
-proc wszArg*(self: ODBC_VS_ARGS): ptr WCHAR {.inline.} = self.union1.wszArg
-proc wszArg*(self: var ODBC_VS_ARGS): var ptr WCHAR {.inline.} = self.union1.wszArg
-proc `szArg=`*(self: var ODBC_VS_ARGS, x: ptr CHAR) {.inline.} = self.union1.szArg = x
-proc szArg*(self: ODBC_VS_ARGS): ptr CHAR {.inline.} = self.union1.szArg
-proc szArg*(self: var ODBC_VS_ARGS): var ptr CHAR {.inline.} = self.union1.szArg
-proc `wszCorrelation=`*(self: var ODBC_VS_ARGS, x: ptr WCHAR) {.inline.} = self.union2.wszCorrelation = x
-proc wszCorrelation*(self: ODBC_VS_ARGS): ptr WCHAR {.inline.} = self.union2.wszCorrelation
-proc wszCorrelation*(self: var ODBC_VS_ARGS): var ptr WCHAR {.inline.} = self.union2.wszCorrelation
-proc `szCorrelation=`*(self: var ODBC_VS_ARGS, x: ptr CHAR) {.inline.} = self.union2.szCorrelation = x
-proc szCorrelation*(self: ODBC_VS_ARGS): ptr CHAR {.inline.} = self.union2.szCorrelation
-proc szCorrelation*(self: var ODBC_VS_ARGS): var ptr CHAR {.inline.} = self.union2.szCorrelation
+proc SQLColAttributeW*(
+  StatementHandle: TSQLHSTMT,
+  ColumnNumber: TSQLUSMALLINT,
+  FieldIdentifier: TSQLUSMALLINT,
+  CharacterAttributePtr: TSQLPOINTER,
+  BufferLength: TSQLSMALLINT,
+  StringLengthPtr: ptr TSQLSMALLINT,
+  NumericAttributePtr: ptr TSQLLEN,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLColAttributesW*(
+  StatementHandle: TSQLHSTMT,
+  ColumnNumber: TSQLUSMALLINT,
+  FieldIdentifier: TSQLUSMALLINT,
+  CharacterAttributePtr: TSQLPOINTER,
+  BufferLength: TSQLSMALLINT,
+  StringLengthPtr: ptr TSQLSMALLINT,
+  NumericAttributePtr: ptr TSQLLEN,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLConnectW*(
+  ConnectionHandle: TSQLHDBC,
+  ServerName: ptr TSQLWCHAR,
+  NameLength1: TSQLSMALLINT,
+  UserName: ptr TSQLWCHAR,
+  NameLength2: TSQLSMALLINT,
+  Authentication: ptr TSQLWCHAR,
+  NameLength3: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLDescribeColW*(
+  StatementHandle: TSQLHSTMT,
+  ColumnNumber: TSQLUSMALLINT,
+  ColumnName: ptr TSQLWCHAR,
+  BufferLength: TSQLSMALLINT,
+  NameLengthPtr: ptr TSQLSMALLINT,
+  DataTypePtr: ptr TSQLSMALLINT,
+  ColumnSizePtr: ptr TSQLULEN,
+  DecimalDigitsPtr: ptr TSQLSMALLINT,
+  NullablePtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLErrorW*(
+  EnvironmentHandle: TSQLHENV,
+  ConnectionHandle: TSQLHDBC,
+  StatementHandle: TSQLHSTMT,
+  Sqlstate: ptr TSQLWCHAR,
+  NativeError: ptr TSQLINTEGER,
+  MessageText: ptr TSQLWCHAR,
+  BufferLength: TSQLSMALLINT,
+  TextLength: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLExecDirectW*(
+  StatementHandle: TSQLHSTMT, StatementText: ptr TSQLWCHAR, TextLength: TSQLINTEGER
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetConnectAttrW*(
+  ConnectionHandle: TSQLHDBC,
+  Attribute: TSQLINTEGER,
+  ValuePtr: TSQLPOINTER,
+  BufferLength: TSQLINTEGER,
+  StringLengthPtr: ptr TSQLINTEGER,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetCursorNameW*(
+  StatementHandle: TSQLHSTMT,
+  CursorName: ptr TSQLWCHAR,
+  BufferLength: TSQLSMALLINT,
+  NameLengthPtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSetDescFieldW*(
+  DescriptorHandle: TSQLHDESC,
+  RecNumber: TSQLSMALLINT,
+  FieldIdentifier: TSQLSMALLINT,
+  Value: TSQLPOINTER,
+  BufferLength: TSQLINTEGER,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetDescFieldW*(
+  DescriptorHandle: TSQLHDESC,
+  RecNumber: TSQLSMALLINT,
+  FieldIdentifier: TSQLSMALLINT,
+  ValuePtr: TSQLPOINTER,
+  BufferLength: TSQLINTEGER,
+  StringLengthPtr: ptr TSQLINTEGER,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetDescRecW*(
+  DescriptorHandle: TSQLHDESC,
+  RecNumber: TSQLSMALLINT,
+  Name: ptr TSQLWCHAR,
+  BufferLength: TSQLSMALLINT,
+  StringLengthPtr: ptr TSQLSMALLINT,
+  TypePtr: ptr TSQLSMALLINT,
+  SubTypePtr: ptr TSQLSMALLINT,
+  LengthPtr: ptr TSQLLEN,
+  PrecisionPtr: ptr TSQLSMALLINT,
+  ScalePtr: ptr TSQLSMALLINT,
+  NullablePtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetDiagFieldW*(
+  HandleType: TSQLSMALLINT,
+  Handle: TSQLHANDLE,
+  RecNumber: TSQLSMALLINT,
+  DiagIdentifier: TSQLSMALLINT,
+  DiagInfoPtr: TSQLPOINTER,
+  BufferLength: TSQLSMALLINT,
+  StringLengthPtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetDiagRecW*(
+  HandleType: TSQLSMALLINT,
+  Handle: TSQLHANDLE,
+  RecNumber: TSQLSMALLINT,
+  SQLState: ptr TSQLWCHAR,
+  NativeErrorPtr: ptr TSQLINTEGER,
+  MessageText: ptr TSQLWCHAR,
+  BufferLength: TSQLSMALLINT,
+  TextLengthPtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLPrepareW*(
+  StatementHandle: TSQLHSTMT, StatementText: ptr TSQLWCHAR, TextLength: TSQLINTEGER
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSetConnectAttrW*(
+  ConnectionHandle: TSQLHDBC,
+  Attribute: TSQLINTEGER,
+  ValuePtr: TSQLPOINTER,
+  StringLength: TSQLINTEGER,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSetCursorNameW*(
+  StatementHandle: TSQLHSTMT, CursorName: ptr TSQLWCHAR, NameLength: TSQLSMALLINT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLColumnsW*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLWCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLWCHAR,
+  NameLength2: TSQLSMALLINT,
+  TableName: ptr TSQLWCHAR,
+  NameLength3: TSQLSMALLINT,
+  ColumnName: ptr TSQLWCHAR,
+  NameLength4: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetConnectOptionW*(
+  ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLPOINTER
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetInfoW*(
+  ConnectionHandle: TSQLHDBC,
+  InfoType: TSQLUSMALLINT,
+  InfoValuePtr: TSQLPOINTER,
+  BufferLength: TSQLSMALLINT,
+  StringLengthPtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetTypeInfoW*(
+  StatementHandle: TSQLHSTMT, DataType: TSQLSMALLINT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSetConnectOptionW*(
+  ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLULEN
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSpecialColumnsW*(
+  StatementHandle: TSQLHSTMT,
+  IdentifierType: TSQLUSMALLINT,
+  CatalogName: ptr TSQLWCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLWCHAR,
+  NameLength2: TSQLSMALLINT,
+  TableName: ptr TSQLWCHAR,
+  NameLength3: TSQLSMALLINT,
+  Scope: TSQLUSMALLINT,
+  Nullable: TSQLUSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLStatisticsW*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLWCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLWCHAR,
+  NameLength2: TSQLSMALLINT,
+  TableName: ptr TSQLWCHAR,
+  NameLength3: TSQLSMALLINT,
+  Unique: TSQLUSMALLINT,
+  Reserved: TSQLUSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLTablesW*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLWCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLWCHAR,
+  NameLength2: TSQLSMALLINT,
+  TableName: ptr TSQLWCHAR,
+  NameLength3: TSQLSMALLINT,
+  TableType: ptr TSQLWCHAR,
+  NameLength4: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLDataSourcesW*(
+  EnvironmentHandle: TSQLHENV,
+  Direction: TSQLUSMALLINT,
+  ServerName: ptr TSQLWCHAR,
+  BufferLength1: TSQLSMALLINT,
+  NameLength1Ptr: ptr TSQLSMALLINT,
+  Description: ptr TSQLWCHAR,
+  BufferLength2: TSQLSMALLINT,
+  NameLength2Ptr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLDriverConnectW*(
+  ConnectionHandle: TSQLHDBC,
+  WindowHandle: TSQLHWND,
+  InConnectionString: ptr TSQLWCHAR,
+  StringLength1: TSQLSMALLINT,
+  OutConnectionString: ptr TSQLWCHAR,
+  BufferLength: TSQLSMALLINT,
+  StringLength2Ptr: ptr TSQLSMALLINT,
+  DriverCompletion: TSQLUSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLBrowseConnectW*(
+  ConnectionHandle: TSQLHDBC,
+  InConnectionString: ptr TSQLWCHAR,
+  StringLength1: TSQLSMALLINT,
+  OutConnectionString: ptr TSQLWCHAR,
+  BufferLength: TSQLSMALLINT,
+  StringLength2Ptr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLColumnPrivilegesW*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLWCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLWCHAR,
+  NameLength2: TSQLSMALLINT,
+  TableName: ptr TSQLWCHAR,
+  NameLength3: TSQLSMALLINT,
+  ColumnName: ptr TSQLWCHAR,
+  NameLength4: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetStmtAttrW*(
+  StatementHandle: TSQLHSTMT,
+  Attribute: TSQLINTEGER,
+  ValuePtr: TSQLPOINTER,
+  BufferLength: TSQLINTEGER,
+  StringLengthPtr: ptr TSQLINTEGER,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSetStmtAttrW*(
+  StatementHandle: TSQLHSTMT,
+  Attribute: TSQLINTEGER,
+  ValuePtr: TSQLPOINTER,
+  StringLength: TSQLINTEGER,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLForeignKeysW*(
+  StatementHandle: TSQLHSTMT,
+  PKCatalogName: ptr TSQLWCHAR,
+  NameLength1: TSQLSMALLINT,
+  PKSchemaName: ptr TSQLWCHAR,
+  NameLength2: TSQLSMALLINT,
+  PKTableName: ptr TSQLWCHAR,
+  NameLength3: TSQLSMALLINT,
+  FKCatalogName: ptr TSQLWCHAR,
+  NameLength4: TSQLSMALLINT,
+  FKSchemaName: ptr TSQLWCHAR,
+  NameLength5: TSQLSMALLINT,
+  FKTableName: ptr TSQLWCHAR,
+  NameLength6: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLNativeSqlW*(
+  ConnectionHandle: TSQLHDBC,
+  InStatementText: ptr TSQLWCHAR,
+  TextLength1: TSQLINTEGER,
+  OutStatementText: ptr TSQLWCHAR,
+  BufferLength: TSQLINTEGER,
+  TextLength2Ptr: ptr TSQLINTEGER,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLPrimaryKeysW*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLWCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLWCHAR,
+  NameLength2: TSQLSMALLINT,
+  TableName: ptr TSQLWCHAR,
+  NameLength3: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLProcedureColumnsW*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLWCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLWCHAR,
+  NameLength2: TSQLSMALLINT,
+  ProcName: ptr TSQLWCHAR,
+  NameLength3: TSQLSMALLINT,
+  ColumnName: ptr TSQLWCHAR,
+  NameLength4: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLProceduresW*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLWCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLWCHAR,
+  NameLength2: TSQLSMALLINT,
+  ProcName: ptr TSQLWCHAR,
+  NameLength3: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLTablePrivilegesW*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLWCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLWCHAR,
+  NameLength2: TSQLSMALLINT,
+  TableName: ptr TSQLWCHAR,
+  NameLength3: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLDriversW*(
+  EnvironmentHandle: TSQLHENV,
+  Direction: TSQLUSMALLINT,
+  DriverDescription: ptr TSQLWCHAR,
+  BufferLength1: TSQLSMALLINT,
+  DescriptionLengthPtr: ptr TSQLSMALLINT,
+  DriverAttributes: ptr TSQLWCHAR,
+  BufferLength2: TSQLSMALLINT,
+  AttributesLengthPtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLColAttributeA*(
+  StatementHandle: TSQLHSTMT,
+  ColumnNumber: TSQLSMALLINT,
+  FieldIdentifier: TSQLSMALLINT,
+  CharacterAttributePtr: TSQLPOINTER,
+  BufferLength: TSQLSMALLINT,
+  StringLengthPtr: ptr TSQLSMALLINT,
+  NumericAttributePtr: ptr TSQLLEN,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLColAttributesA*(
+  StatementHandle: TSQLHSTMT,
+  ColumnNumber: TSQLUSMALLINT,
+  FieldIdentifier: TSQLUSMALLINT,
+  CharacterAttributePtr: TSQLPOINTER,
+  BufferLength: TSQLSMALLINT,
+  StringLengthPtr: ptr TSQLSMALLINT,
+  NumericAttributePtr: ptr TSQLLEN,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLConnectA*(
+  ConnectionHandle: TSQLHDBC,
+  ServerName: ptr TSQLCHAR,
+  NameLength1: TSQLSMALLINT,
+  UserName: ptr TSQLCHAR,
+  NameLength2: TSQLSMALLINT,
+  Authentication: ptr TSQLCHAR,
+  NameLength3: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLDescribeColA*(
+  StatementHandle: TSQLHSTMT,
+  ColumnNumber: TSQLUSMALLINT,
+  ColumnName: ptr TSQLCHAR,
+  BufferLength: TSQLSMALLINT,
+  NameLengthPtr: ptr TSQLSMALLINT,
+  DataTypePtr: ptr TSQLSMALLINT,
+  ColumnSizePtr: ptr TSQLUINTEGER,
+  DecimalDigitsPtr: ptr TSQLSMALLINT,
+  NullablePtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLErrorA*(
+  EnvironmentHandle: TSQLHENV,
+  ConnectionHandle: TSQLHDBC,
+  StatementHandle: TSQLHSTMT,
+  Sqlstate: ptr TSQLCHAR,
+  NativeError: ptr TSQLINTEGER,
+  MessageText: ptr TSQLCHAR,
+  BufferLength: TSQLSMALLINT,
+  TextLength: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLExecDirectA*(
+  StatementHandle: TSQLHSTMT, StatementText: ptr TSQLCHAR, TextLength: TSQLINTEGER
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetConnectAttrA*(
+  ConnectionHandle: TSQLHDBC,
+  Attribute: TSQLINTEGER,
+  ValuePtr: TSQLPOINTER,
+  BufferLength: TSQLINTEGER,
+  StringLengthPtr: ptr TSQLINTEGER,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetCursorNameA*(
+  StatementHandle: TSQLHSTMT,
+  CursorName: ptr TSQLCHAR,
+  BufferLength: TSQLSMALLINT,
+  NameLengthPtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetDescFieldA*(
+  DescriptorHandle: TSQLHDESC,
+  RecNumber: TSQLSMALLINT,
+  FieldIdentifier: TSQLSMALLINT,
+  ValuePtr: TSQLPOINTER,
+  BufferLength: TSQLINTEGER,
+  StringLengthPtr: ptr TSQLINTEGER,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetDescRecA*(
+  DescriptorHandle: TSQLHDESC,
+  RecNumber: TSQLSMALLINT,
+  Name: ptr TSQLCHAR,
+  BufferLength: TSQLSMALLINT,
+  StringLengthPtr: ptr TSQLSMALLINT,
+  TypePtr: ptr TSQLSMALLINT,
+  SubTypePtr: ptr TSQLSMALLINT,
+  LengthPtr: ptr TSQLINTEGER,
+  PrecisionPtr: ptr TSQLSMALLINT,
+  ScalePtr: ptr TSQLSMALLINT,
+  NullablePtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetDiagFieldA*(
+  HandleType: TSQLSMALLINT,
+  Handle: TSQLHANDLE,
+  RecNumber: TSQLSMALLINT,
+  DiagIdentifier: TSQLSMALLINT,
+  DiagInfoPtr: TSQLPOINTER,
+  BufferLength: TSQLSMALLINT,
+  StringLengthPtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetDiagRecA*(
+  HandleType: TSQLSMALLINT,
+  Handle: TSQLHANDLE,
+  RecNumber: TSQLSMALLINT,
+  SQLState: ptr TSQLCHAR,
+  NativeErrorPtr: ptr TSQLINTEGER,
+  MessageText: ptr TSQLCHAR,
+  BufferLength: TSQLSMALLINT,
+  TextLengthPtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetStmtAttrA*(
+  StatementHandle: TSQLHSTMT,
+  Attribute: TSQLINTEGER,
+  ValuePtr: TSQLPOINTER,
+  BufferLength: TSQLINTEGER,
+  StringLengthPtr: ptr TSQLINTEGER,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetTypeInfoA*(
+  StatementHandle: TSQLHSTMT, DataTyoe: TSQLSMALLINT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLPrepareA*(
+  StatementHandle: TSQLHSTMT, StatementText: ptr TSQLCHAR, TextLength: TSQLINTEGER
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSetConnectAttrA*(
+  ConnectionHandle: TSQLHDBC,
+  Attribute: TSQLINTEGER,
+  ValuePtr: TSQLPOINTER,
+  StringLength: TSQLINTEGER,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSetCursorNameA*(
+  StatementHandle: TSQLHSTMT, CursorName: ptr TSQLCHAR, NameLength: TSQLSMALLINT
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLColumnsA*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLCHAR,
+  NameLength2: TSQLSMALLINT,
+  TableName: ptr TSQLCHAR,
+  NameLength3: TSQLSMALLINT,
+  ColumnName: ptr TSQLCHAR,
+  NameLength4: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetConnectOptionA*(
+  ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLPOINTER
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLGetInfoA*(
+  ConnectionHandle: TSQLHDBC,
+  InfoType: TSQLUSMALLINT,
+  InfoValuePtr: TSQLPOINTER,
+  BufferLength: TSQLSMALLINT,
+  StringLengthPtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSetConnectOptionA*(
+  ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLULEN
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLSpecialColumnsA*(
+  StatementHandle: TSQLHSTMT,
+  IdentifierType: TSQLUSMALLINT,
+  CatalogName: ptr TSQLCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLCHAR,
+  NameLength2: TSQLSMALLINT,
+  TableName: ptr TSQLCHAR,
+  NameLength3: TSQLSMALLINT,
+  Scope: TSQLUSMALLINT,
+  Nullable: TSQLUSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLStatisticsA*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLCHAR,
+  NameLength2: TSQLSMALLINT,
+  TableName: ptr TSQLCHAR,
+  NameLength3: TSQLSMALLINT,
+  Unique: TSQLUSMALLINT,
+  Reserved: TSQLUSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLTablesA*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLCHAR,
+  NameLength2: TSQLSMALLINT,
+  TableName: ptr TSQLCHAR,
+  NameLength3: TSQLSMALLINT,
+  TableType: ptr TSQLCHAR,
+  NameLength4: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLDataSourcesA*(
+  EnvironmentHandle: TSQLHENV,
+  Direction: TSQLUSMALLINT,
+  ServerName: ptr TSQLCHAR,
+  BufferLength1: TSQLSMALLINT,
+  NameLength1Ptr: ptr TSQLSMALLINT,
+  Description: ptr TSQLCHAR,
+  BufferLength2: TSQLSMALLINT,
+  NameLength2Ptr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLDriverConnectA*(
+  ConnectionHandle: TSQLHDBC,
+  WindowHandle: TSQLHWND,
+  InConnectionString: ptr TSQLCHAR,
+  StringLength1: TSQLSMALLINT,
+  OutConnectionString: ptr TSQLCHAR,
+  BufferLength: TSQLSMALLINT,
+  StringLength2Ptr: ptr TSQLSMALLINT,
+  DriverCompletion: TSQLUSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLBrowseConnectA*(
+  ConnectionHandle: TSQLHDBC,
+  InConnectionString: ptr TSQLCHAR,
+  StringLength1: TSQLSMALLINT,
+  OutConnectionString: ptr TSQLCHAR,
+  BufferLength: TSQLSMALLINT,
+  StringLength2Ptr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLColumnPrivilegesA*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLCHAR,
+  NameLength2: TSQLSMALLINT,
+  TableName: ptr TSQLCHAR,
+  NameLength3: TSQLSMALLINT,
+  ColumnName: ptr TSQLCHAR,
+  NameLength4: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLForeignKeysA*(
+  StatementHandle: TSQLHSTMT,
+  PKCatalogName: ptr TSQLCHAR,
+  NameLength1: TSQLSMALLINT,
+  PKSchemaName: ptr TSQLCHAR,
+  NameLength2: TSQLSMALLINT,
+  PKTableName: ptr TSQLCHAR,
+  NameLength3: TSQLSMALLINT,
+  FKCatalogName: ptr TSQLCHAR,
+  NameLength4: TSQLSMALLINT,
+  FKSchemaName: ptr TSQLCHAR,
+  NameLength5: TSQLSMALLINT,
+  FKTableName: ptr TSQLCHAR,
+  NameLength6: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLNativeSqlA*(
+  ConnectionHandle: TSQLHDBC,
+  InStatementText: ptr TSQLCHAR,
+  TextLength1: TSQLINTEGER,
+  OutStatementText: ptr TSQLCHAR,
+  BufferLength: TSQLINTEGER,
+  TextLength2Ptr: ptr TSQLINTEGER,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLPrimaryKeysA*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLCHAR,
+  NameLength2: TSQLSMALLINT,
+  TableName: ptr TSQLCHAR,
+  NameLength3: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLProcedureColumnsA*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLCHAR,
+  NameLength2: TSQLSMALLINT,
+  ProcName: ptr TSQLCHAR,
+  NameLength3: TSQLSMALLINT,
+  ColumnName: ptr TSQLCHAR,
+  NameLength4: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLProceduresA*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLCHAR,
+  NameLength2: TSQLSMALLINT,
+  ProcName: ptr TSQLCHAR,
+  NameLength3: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLTablePrivilegesA*(
+  StatementHandle: TSQLHSTMT,
+  CatalogName: ptr TSQLCHAR,
+  NameLength1: TSQLSMALLINT,
+  SchemaName: ptr TSQLCHAR,
+  NameLength2: TSQLSMALLINT,
+  TableName: ptr TSQLCHAR,
+  NameLength3: TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLDriversA*(
+  EnvironmentHandle: TSQLHENV,
+  Direction: TSQLUSMALLINT,
+  DriverDescription: ptr TSQLCHAR,
+  BufferLength1: TSQLSMALLINT,
+  DescriptionLengthPtr: ptr TSQLSMALLINT,
+  DriverAttributes: ptr TSQLCHAR,
+  BufferLength2: TSQLSMALLINT,
+  AttributesLengthPtr: ptr TSQLSMALLINT,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc.}
+
+proc SQLInstallODBC*(
+  hwndParent: HWND, lpszInfFile: LPCSTR, lpszSrcPath: LPCSTR, lpszDrivers: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLManageDataSources*(
+  hwndParent: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLCreateDataSource*(
+  hwndParent: HWND, lpszDSN: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLGetTranslator*(
+  hwnd: HWND,
+  lpszName: LPSTR,
+  cbNameMax: WORD,
+  pcbNameOut: ptr WORD,
+  lpszPath: LPSTR,
+  cbPathMax: WORD,
+  pcbPathOut: ptr WORD,
+  pvOption: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLInstallDriver*(
+  lpszInfFile: LPCSTR,
+  lpszDriver: LPCSTR,
+  lpszPath: LPSTR,
+  cbPathMax: WORD,
+  pcbPathOut: ptr WORD,
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLInstallDriverManager*(
+  lpszPath: LPSTR, cbPathMax: WORD, pcbPathOut: ptr WORD
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLGetInstalledDrivers*(
+  lpszBuf: LPSTR, cbBufMax: WORD, pcbBufOut: ptr WORD
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLGetAvailableDrivers*(
+  lpszInfFile: LPCSTR, lpszBuf: LPSTR, cbBufMax: WORD, pcbBufOut: ptr WORD
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLConfigDataSource*(
+  hwndParent: HWND, fRequest: WORD, lpszDriver: LPCSTR, lpszAttributes: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLRemoveDefaultDataSource*(): WINBOOL {.
+  winapi, stdcall, dynlib: "odbccp32", importc
+.}
+
+proc SQLWriteDSNToIni*(
+  lpszDSN: LPCSTR, lpszDriver: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLRemoveDSNFromIni*(
+  lpszDSN: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLValidDSN*(
+  lpszDSN: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLWritePrivateProfileString*(
+  lpszSection: LPCSTR, lpszEntry: LPCSTR, lpszString: LPCSTR, lpszFilename: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLGetPrivateProfileString*(
+  lpszSection: LPCSTR,
+  lpszEntry: LPCSTR,
+  lpszDefault: LPCSTR,
+  lpszRetBuffer: LPSTR,
+  cbRetBuffer: int32,
+  lpszFilename: LPCSTR,
+): int32 {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLRemoveDriverManager*(
+  lpdwUsageCount: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLInstallTranslator*(
+  lpszInfFile: LPCSTR,
+  lpszTranslator: LPCSTR,
+  lpszPathIn: LPCSTR,
+  lpszPathOut: LPSTR,
+  cbPathOutMax: WORD,
+  pcbPathOut: ptr WORD,
+  fRequest: WORD,
+  lpdwUsageCount: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLRemoveTranslator*(
+  lpszTranslator: LPCSTR, lpdwUsageCount: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLRemoveDriver*(
+  lpszDriver: LPCSTR, fRemoveDSN: WINBOOL, lpdwUsageCount: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLConfigDriver*(
+  hwndParent: HWND,
+  fRequest: WORD,
+  lpszDriver: LPCSTR,
+  lpszArgs: LPCSTR,
+  lpszMsg: LPSTR,
+  cbMsgMax: WORD,
+  pcbMsgOut: ptr WORD,
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLInstallerError*(
+  iError: WORD,
+  pfErrorCode: ptr DWORD,
+  lpszErrorMsg: LPSTR,
+  cbErrorMsgMax: WORD,
+  pcbErrorMsg: ptr WORD,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLPostInstallerError*(
+  dwErrorCode: DWORD, lpszErrMsg: LPCSTR
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLWriteFileDSN*(
+  lpszFileName: LPCSTR, lpszAppName: LPCSTR, lpszKeyName: LPCSTR, lpszString: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLReadFileDSN*(
+  lpszFileName: LPCSTR,
+  lpszAppName: LPCSTR,
+  lpszKeyName: LPCSTR,
+  lpszString: LPSTR,
+  cbString: WORD,
+  pcbString: ptr WORD,
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLInstallDriverEx*(
+  lpszDriver: LPCSTR,
+  lpszPathIn: LPCSTR,
+  lpszPathOut: LPSTR,
+  cbPathOutMax: WORD,
+  pcbPathOut: ptr WORD,
+  fRequest: WORD,
+  lpdwUsageCount: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLInstallTranslatorEx*(
+  lpszTranslator: LPCSTR,
+  lpszPathIn: LPCSTR,
+  lpszPathOut: LPSTR,
+  cbPathOutMax: WORD,
+  pcbPathOut: ptr WORD,
+  fRequest: WORD,
+  lpdwUsageCount: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLGetConfigMode*(
+  pwConfigMode: ptr UWORD
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLSetConfigMode*(
+  wConfigMode: UWORD
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLInstallODBCW*(
+  hwndParent: HWND, lpszInfFile: LPCWSTR, lpszSrcPath: LPCWSTR, lpszDrivers: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLCreateDataSourceW*(
+  hwndParent: HWND, lpszDSN: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLGetTranslatorW*(
+  hwnd: HWND,
+  lpszName: LPWSTR,
+  cbNameMax: WORD,
+  pcbNameOut: ptr WORD,
+  lpszPath: LPWSTR,
+  cbPathMax: WORD,
+  pcbPathOut: ptr WORD,
+  pvOption: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLInstallDriverW*(
+  lpszInfFile: LPCWSTR,
+  lpszDriver: LPCWSTR,
+  lpszPath: LPWSTR,
+  cbPathMax: WORD,
+  pcbPathOut: ptr WORD,
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLInstallDriverManagerW*(
+  lpszPath: LPWSTR, cbPathMax: WORD, pcbPathOut: ptr WORD
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLGetInstalledDriversW*(
+  lpszBuf: LPWSTR, cbBufMax: WORD, pcbBufOut: ptr WORD
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLGetAvailableDriversW*(
+  lpszInfFile: LPCWSTR, lpszBuf: LPWSTR, cbBufMax: WORD, pcbBufOut: ptr WORD
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLConfigDataSourceW*(
+  hwndParent: HWND, fRequest: WORD, lpszDriver: LPCWSTR, lpszAttributes: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLWriteDSNToIniW*(
+  lpszDSN: LPCWSTR, lpszDriver: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLRemoveDSNFromIniW*(
+  lpszDSN: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLValidDSNW*(
+  lpszDSN: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLWritePrivateProfileStringW*(
+  lpszSection: LPCWSTR, lpszEntry: LPCWSTR, lpszString: LPCWSTR, lpszFilename: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLGetPrivateProfileStringW*(
+  lpszSection: LPCWSTR,
+  lpszEntry: LPCWSTR,
+  lpszDefault: LPCWSTR,
+  lpszRetBuffer: LPWSTR,
+  cbRetBuffer: int32,
+  lpszFilename: LPCWSTR,
+): int32 {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLInstallTranslatorW*(
+  lpszInfFile: LPCWSTR,
+  lpszTranslator: LPCWSTR,
+  lpszPathIn: LPCWSTR,
+  lpszPathOut: LPWSTR,
+  cbPathOutMax: WORD,
+  pcbPathOut: ptr WORD,
+  fRequest: WORD,
+  lpdwUsageCount: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLRemoveTranslatorW*(
+  lpszTranslator: LPCWSTR, lpdwUsageCount: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLRemoveDriverW*(
+  lpszDriver: LPCWSTR, fRemoveDSN: WINBOOL, lpdwUsageCount: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLConfigDriverW*(
+  hwndParent: HWND,
+  fRequest: WORD,
+  lpszDriver: LPCWSTR,
+  lpszArgs: LPCWSTR,
+  lpszMsg: LPWSTR,
+  cbMsgMax: WORD,
+  pcbMsgOut: ptr WORD,
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLInstallerErrorW*(
+  iError: WORD,
+  pfErrorCode: ptr DWORD,
+  lpszErrorMsg: LPWSTR,
+  cbErrorMsgMax: WORD,
+  pcbErrorMsg: ptr WORD,
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLPostInstallerErrorW*(
+  dwErrorCode: DWORD, lpszErrorMsg: LPCWSTR
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLWriteFileDSNW*(
+  lpszFileName: LPCWSTR, lpszAppName: LPCWSTR, lpszKeyName: LPCWSTR, lpszString: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLReadFileDSNW*(
+  lpszFileName: LPCWSTR,
+  lpszAppName: LPCWSTR,
+  lpszKeyName: LPCWSTR,
+  lpszString: LPWSTR,
+  cbString: WORD,
+  pcbString: ptr WORD,
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLInstallDriverExW*(
+  lpszDriver: LPCWSTR,
+  lpszPathIn: LPCWSTR,
+  lpszPathOut: LPWSTR,
+  cbPathOutMax: WORD,
+  pcbPathOut: ptr WORD,
+  fRequest: WORD,
+  lpdwUsageCount: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLInstallTranslatorExW*(
+  lpszTranslator: LPCWSTR,
+  lpszPathIn: LPCWSTR,
+  lpszPathOut: LPWSTR,
+  cbPathOutMax: WORD,
+  pcbPathOut: ptr WORD,
+  fRequest: WORD,
+  lpdwUsageCount: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc.}
+
+proc SQLAllocHandle*(
+  fHandleType: TSQLSMALLINT, hInput: TSQLHANDLE, phOutput: ptr TSQLHANDLE
+): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLAllocHandleStd".}
+
+proc `wszArg=`*(self: var ODBC_VS_ARGS, x: ptr WCHAR) {.inline.} =
+  self.union1.wszArg = x
+
+proc wszArg*(self: ODBC_VS_ARGS): ptr WCHAR {.inline.} =
+  self.union1.wszArg
+
+proc wszArg*(self: var ODBC_VS_ARGS): var ptr WCHAR {.inline.} =
+  self.union1.wszArg
+
+proc `szArg=`*(self: var ODBC_VS_ARGS, x: ptr CHAR) {.inline.} =
+  self.union1.szArg = x
+
+proc szArg*(self: ODBC_VS_ARGS): ptr CHAR {.inline.} =
+  self.union1.szArg
+
+proc szArg*(self: var ODBC_VS_ARGS): var ptr CHAR {.inline.} =
+  self.union1.szArg
+
+proc `wszCorrelation=`*(self: var ODBC_VS_ARGS, x: ptr WCHAR) {.inline.} =
+  self.union2.wszCorrelation = x
+
+proc wszCorrelation*(self: ODBC_VS_ARGS): ptr WCHAR {.inline.} =
+  self.union2.wszCorrelation
+
+proc wszCorrelation*(self: var ODBC_VS_ARGS): var ptr WCHAR {.inline.} =
+  self.union2.wszCorrelation
+
+proc `szCorrelation=`*(self: var ODBC_VS_ARGS, x: ptr CHAR) {.inline.} =
+  self.union2.szCorrelation = x
+
+proc szCorrelation*(self: ODBC_VS_ARGS): ptr CHAR {.inline.} =
+  self.union2.szCorrelation
+
+proc szCorrelation*(self: var ODBC_VS_ARGS): var ptr CHAR {.inline.} =
+  self.union2.szCorrelation
+
 when winimUnicode:
-  type
-    TSQLTCHAR* = TSQLWCHAR
-  const
-    SQL_C_TCHAR* = SQL_C_WCHAR
-  proc SQLColAttribute*(StatementHandle: TSQLHSTMT, ColumnNumber: TSQLUSMALLINT, FieldIdentifier: TSQLUSMALLINT, CharacterAttributePtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT, NumericAttributePtr: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColAttributeW".}
-  proc SQLColAttributes*(StatementHandle: TSQLHSTMT, ColumnNumber: TSQLUSMALLINT, FieldIdentifier: TSQLUSMALLINT, CharacterAttributePtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT, NumericAttributePtr: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColAttributesW".}
-  proc SQLConnect*(ConnectionHandle: TSQLHDBC, ServerName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, UserName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, Authentication: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLConnectW".}
-  proc SQLDescribeCol*(StatementHandle: TSQLHSTMT, ColumnNumber: TSQLUSMALLINT, ColumnName: ptr TSQLWCHAR, BufferLength: TSQLSMALLINT, NameLengthPtr: ptr TSQLSMALLINT, DataTypePtr: ptr TSQLSMALLINT, ColumnSizePtr: ptr TSQLULEN, DecimalDigitsPtr: ptr TSQLSMALLINT, NullablePtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDescribeColW".}
-  proc SQLError*(EnvironmentHandle: TSQLHENV, ConnectionHandle: TSQLHDBC, StatementHandle: TSQLHSTMT, Sqlstate: ptr TSQLWCHAR, NativeError: ptr TSQLINTEGER, MessageText: ptr TSQLWCHAR, BufferLength: TSQLSMALLINT, TextLength: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLErrorW".}
-  proc SQLExecDirect*(StatementHandle: TSQLHSTMT, StatementText: ptr TSQLWCHAR, TextLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLExecDirectW".}
-  proc SQLGetConnectAttr*(ConnectionHandle: TSQLHDBC, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, BufferLength: TSQLINTEGER, StringLengthPtr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetConnectAttrW".}
-  proc SQLGetCursorName*(StatementHandle: TSQLHSTMT, CursorName: ptr TSQLWCHAR, BufferLength: TSQLSMALLINT, NameLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetCursorNameW".}
-  proc SQLGetDescField*(DescriptorHandle: TSQLHDESC, RecNumber: TSQLSMALLINT, FieldIdentifier: TSQLSMALLINT, ValuePtr: TSQLPOINTER, BufferLength: TSQLINTEGER, StringLengthPtr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDescFieldW".}
-  proc SQLGetDescRec*(DescriptorHandle: TSQLHDESC, RecNumber: TSQLSMALLINT, Name: ptr TSQLWCHAR, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT, TypePtr: ptr TSQLSMALLINT, SubTypePtr: ptr TSQLSMALLINT, LengthPtr: ptr TSQLLEN, PrecisionPtr: ptr TSQLSMALLINT, ScalePtr: ptr TSQLSMALLINT, NullablePtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDescRecW".}
-  proc SQLGetDiagField*(HandleType: TSQLSMALLINT, Handle: TSQLHANDLE, RecNumber: TSQLSMALLINT, DiagIdentifier: TSQLSMALLINT, DiagInfoPtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDiagFieldW".}
-  proc SQLGetDiagRec*(HandleType: TSQLSMALLINT, Handle: TSQLHANDLE, RecNumber: TSQLSMALLINT, SQLState: ptr TSQLWCHAR, NativeErrorPtr: ptr TSQLINTEGER, MessageText: ptr TSQLWCHAR, BufferLength: TSQLSMALLINT, TextLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDiagRecW".}
-  proc SQLPrepare*(StatementHandle: TSQLHSTMT, StatementText: ptr TSQLWCHAR, TextLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLPrepareW".}
-  proc SQLSetConnectAttr*(ConnectionHandle: TSQLHDBC, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, StringLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetConnectAttrW".}
-  proc SQLSetCursorName*(StatementHandle: TSQLHSTMT, CursorName: ptr TSQLWCHAR, NameLength: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetCursorNameW".}
-  proc SQLSetDescField*(DescriptorHandle: TSQLHDESC, RecNumber: TSQLSMALLINT, FieldIdentifier: TSQLSMALLINT, Value: TSQLPOINTER, BufferLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetDescFieldW".}
-  proc SQLSetStmtAttr*(StatementHandle: TSQLHSTMT, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, StringLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetStmtAttrW".}
-  proc SQLGetStmtAttr*(StatementHandle: TSQLHSTMT, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, BufferLength: TSQLINTEGER, StringLengthPtr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetStmtAttrW".}
-  proc SQLColumns*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT, ColumnName: ptr TSQLWCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColumnsW".}
-  proc SQLGetConnectOption*(ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLPOINTER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetConnectOptionW".}
-  proc SQLGetInfo*(ConnectionHandle: TSQLHDBC, InfoType: TSQLUSMALLINT, InfoValuePtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetInfoW".}
-  proc SQLGetTypeInfo*(StatementHandle: TSQLHSTMT, DataType: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetTypeInfoW".}
-  proc SQLSetConnectOption*(ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLULEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetConnectOptionW".}
-  proc SQLSpecialColumns*(StatementHandle: TSQLHSTMT, IdentifierType: TSQLUSMALLINT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT, Scope: TSQLUSMALLINT, Nullable: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSpecialColumnsW".}
-  proc SQLStatistics*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT, Unique: TSQLUSMALLINT, Reserved: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLStatisticsW".}
-  proc SQLTables*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT, TableType: ptr TSQLWCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLTablesW".}
-  proc SQLDataSources*(EnvironmentHandle: TSQLHENV, Direction: TSQLUSMALLINT, ServerName: ptr TSQLWCHAR, BufferLength1: TSQLSMALLINT, NameLength1Ptr: ptr TSQLSMALLINT, Description: ptr TSQLWCHAR, BufferLength2: TSQLSMALLINT, NameLength2Ptr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDataSourcesW".}
-  proc SQLDriverConnect*(ConnectionHandle: TSQLHDBC, WindowHandle: TSQLHWND, InConnectionString: ptr TSQLWCHAR, StringLength1: TSQLSMALLINT, OutConnectionString: ptr TSQLWCHAR, BufferLength: TSQLSMALLINT, StringLength2Ptr: ptr TSQLSMALLINT, DriverCompletion: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDriverConnectW".}
-  proc SQLBrowseConnect*(ConnectionHandle: TSQLHDBC, InConnectionString: ptr TSQLWCHAR, StringLength1: TSQLSMALLINT, OutConnectionString: ptr TSQLWCHAR, BufferLength: TSQLSMALLINT, StringLength2Ptr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLBrowseConnectW".}
-  proc SQLColumnPrivileges*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT, ColumnName: ptr TSQLWCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColumnPrivilegesW".}
-  proc SQLForeignKeys*(StatementHandle: TSQLHSTMT, PKCatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, PKSchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, PKTableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT, FKCatalogName: ptr TSQLWCHAR, NameLength4: TSQLSMALLINT, FKSchemaName: ptr TSQLWCHAR, NameLength5: TSQLSMALLINT, FKTableName: ptr TSQLWCHAR, NameLength6: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLForeignKeysW".}
-  proc SQLNativeSql*(ConnectionHandle: TSQLHDBC, InStatementText: ptr TSQLWCHAR, TextLength1: TSQLINTEGER, OutStatementText: ptr TSQLWCHAR, BufferLength: TSQLINTEGER, TextLength2Ptr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLNativeSqlW".}
-  proc SQLPrimaryKeys*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLPrimaryKeysW".}
-  proc SQLProcedureColumns*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, ProcName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT, ColumnName: ptr TSQLWCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLProcedureColumnsW".}
-  proc SQLProcedures*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, ProcName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLProceduresW".}
-  proc SQLTablePrivileges*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLWCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLWCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLWCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLTablePrivilegesW".}
-  proc SQLDrivers*(EnvironmentHandle: TSQLHENV, Direction: TSQLUSMALLINT, DriverDescription: ptr TSQLWCHAR, BufferLength1: TSQLSMALLINT, DescriptionLengthPtr: ptr TSQLSMALLINT, DriverAttributes: ptr TSQLWCHAR, BufferLength2: TSQLSMALLINT, AttributesLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDriversW".}
-  proc SQLInstallODBC*(hwndParent: HWND, lpszInfFile: LPCWSTR, lpszSrcPath: LPCWSTR, lpszDrivers: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLInstallODBCW".}
-  proc SQLCreateDataSource*(hwndParent: HWND, lpszDSN: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLCreateDataSourceW".}
-  proc SQLGetTranslator*(hwnd: HWND, lpszName: LPWSTR, cbNameMax: WORD, pcbNameOut: ptr WORD, lpszPath: LPWSTR, cbPathMax: WORD, pcbPathOut: ptr WORD, pvOption: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLGetTranslatorW".}
-  proc SQLInstallDriver*(lpszInfFile: LPCWSTR, lpszDriver: LPCWSTR, lpszPath: LPWSTR, cbPathMax: WORD, pcbPathOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLInstallDriverW".}
-  proc SQLInstallDriverManager*(lpszPath: LPWSTR, cbPathMax: WORD, pcbPathOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLInstallDriverManagerW".}
-  proc SQLGetInstalledDrivers*(lpszBuf: LPWSTR, cbBufMax: WORD, pcbBufOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLGetInstalledDriversW".}
-  proc SQLGetAvailableDrivers*(lpszInfFile: LPCWSTR, lpszBuf: LPWSTR, cbBufMax: WORD, pcbBufOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLGetAvailableDriversW".}
-  proc SQLConfigDataSource*(hwndParent: HWND, fRequest: WORD, lpszDriver: LPCWSTR, lpszAttributes: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLConfigDataSourceW".}
-  proc SQLWriteDSNToIni*(lpszDSN: LPCWSTR, lpszDriver: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLWriteDSNToIniW".}
-  proc SQLRemoveDSNFromIni*(lpszDSN: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLRemoveDSNFromIniW".}
-  proc SQLValidDSN*(lpszDSN: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLValidDSNW".}
-  proc SQLWritePrivateProfileString*(lpszSection: LPCWSTR, lpszEntry: LPCWSTR, lpszString: LPCWSTR, lpszFilename: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLWritePrivateProfileStringW".}
-  proc SQLGetPrivateProfileString*(lpszSection: LPCWSTR, lpszEntry: LPCWSTR, lpszDefault: LPCWSTR, lpszRetBuffer: LPWSTR, cbRetBuffer: int32, lpszFilename: LPCWSTR): int32 {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLGetPrivateProfileStringW".}
-  proc SQLInstallTranslator*(lpszInfFile: LPCWSTR, lpszTranslator: LPCWSTR, lpszPathIn: LPCWSTR, lpszPathOut: LPWSTR, cbPathOutMax: WORD, pcbPathOut: ptr WORD, fRequest: WORD, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLInstallTranslatorW".}
-  proc SQLRemoveTranslator*(lpszTranslator: LPCWSTR, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLRemoveTranslatorW".}
-  proc SQLRemoveDriver*(lpszDriver: LPCWSTR, fRemoveDSN: WINBOOL, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLRemoveDriverW".}
-  proc SQLConfigDriver*(hwndParent: HWND, fRequest: WORD, lpszDriver: LPCWSTR, lpszArgs: LPCWSTR, lpszMsg: LPWSTR, cbMsgMax: WORD, pcbMsgOut: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLConfigDriverW".}
-  proc SQLInstallerError*(iError: WORD, pfErrorCode: ptr DWORD, lpszErrorMsg: LPWSTR, cbErrorMsgMax: WORD, pcbErrorMsg: ptr WORD): TSQLRETURN {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLInstallerErrorW".}
-  proc SQLPostInstallerError*(dwErrorCode: DWORD, lpszErrorMsg: LPCWSTR): TSQLRETURN {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLPostInstallerErrorW".}
-  proc SQLReadFileDSN*(lpszFileName: LPCWSTR, lpszAppName: LPCWSTR, lpszKeyName: LPCWSTR, lpszString: LPWSTR, cbString: WORD, pcbString: ptr WORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLReadFileDSNW".}
-  proc SQLWriteFileDSN*(lpszFileName: LPCWSTR, lpszAppName: LPCWSTR, lpszKeyName: LPCWSTR, lpszString: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLWriteFileDSNW".}
-  proc SQLInstallDriverEx*(lpszDriver: LPCWSTR, lpszPathIn: LPCWSTR, lpszPathOut: LPWSTR, cbPathOutMax: WORD, pcbPathOut: ptr WORD, fRequest: WORD, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLInstallDriverExW".}
-  proc SQLInstallTranslatorEx*(lpszTranslator: LPCWSTR, lpszPathIn: LPCWSTR, lpszPathOut: LPWSTR, cbPathOutMax: WORD, pcbPathOut: ptr WORD, fRequest: WORD, lpdwUsageCount: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLInstallTranslatorExW".}
+  type TSQLTCHAR* = TSQLWCHAR
+  const SQL_C_TCHAR* = SQL_C_WCHAR
+  proc SQLColAttribute*(
+    StatementHandle: TSQLHSTMT,
+    ColumnNumber: TSQLUSMALLINT,
+    FieldIdentifier: TSQLUSMALLINT,
+    CharacterAttributePtr: TSQLPOINTER,
+    BufferLength: TSQLSMALLINT,
+    StringLengthPtr: ptr TSQLSMALLINT,
+    NumericAttributePtr: ptr TSQLLEN,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColAttributeW".}
+
+  proc SQLColAttributes*(
+    StatementHandle: TSQLHSTMT,
+    ColumnNumber: TSQLUSMALLINT,
+    FieldIdentifier: TSQLUSMALLINT,
+    CharacterAttributePtr: TSQLPOINTER,
+    BufferLength: TSQLSMALLINT,
+    StringLengthPtr: ptr TSQLSMALLINT,
+    NumericAttributePtr: ptr TSQLLEN,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColAttributesW".}
+
+  proc SQLConnect*(
+    ConnectionHandle: TSQLHDBC,
+    ServerName: ptr TSQLWCHAR,
+    NameLength1: TSQLSMALLINT,
+    UserName: ptr TSQLWCHAR,
+    NameLength2: TSQLSMALLINT,
+    Authentication: ptr TSQLWCHAR,
+    NameLength3: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLConnectW".}
+
+  proc SQLDescribeCol*(
+    StatementHandle: TSQLHSTMT,
+    ColumnNumber: TSQLUSMALLINT,
+    ColumnName: ptr TSQLWCHAR,
+    BufferLength: TSQLSMALLINT,
+    NameLengthPtr: ptr TSQLSMALLINT,
+    DataTypePtr: ptr TSQLSMALLINT,
+    ColumnSizePtr: ptr TSQLULEN,
+    DecimalDigitsPtr: ptr TSQLSMALLINT,
+    NullablePtr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDescribeColW".}
+
+  proc SQLError*(
+    EnvironmentHandle: TSQLHENV,
+    ConnectionHandle: TSQLHDBC,
+    StatementHandle: TSQLHSTMT,
+    Sqlstate: ptr TSQLWCHAR,
+    NativeError: ptr TSQLINTEGER,
+    MessageText: ptr TSQLWCHAR,
+    BufferLength: TSQLSMALLINT,
+    TextLength: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLErrorW".}
+
+  proc SQLExecDirect*(
+    StatementHandle: TSQLHSTMT, StatementText: ptr TSQLWCHAR, TextLength: TSQLINTEGER
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLExecDirectW".}
+
+  proc SQLGetConnectAttr*(
+    ConnectionHandle: TSQLHDBC,
+    Attribute: TSQLINTEGER,
+    ValuePtr: TSQLPOINTER,
+    BufferLength: TSQLINTEGER,
+    StringLengthPtr: ptr TSQLINTEGER,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetConnectAttrW".}
+
+  proc SQLGetCursorName*(
+    StatementHandle: TSQLHSTMT,
+    CursorName: ptr TSQLWCHAR,
+    BufferLength: TSQLSMALLINT,
+    NameLengthPtr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetCursorNameW".}
+
+  proc SQLGetDescField*(
+    DescriptorHandle: TSQLHDESC,
+    RecNumber: TSQLSMALLINT,
+    FieldIdentifier: TSQLSMALLINT,
+    ValuePtr: TSQLPOINTER,
+    BufferLength: TSQLINTEGER,
+    StringLengthPtr: ptr TSQLINTEGER,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDescFieldW".}
+
+  proc SQLGetDescRec*(
+    DescriptorHandle: TSQLHDESC,
+    RecNumber: TSQLSMALLINT,
+    Name: ptr TSQLWCHAR,
+    BufferLength: TSQLSMALLINT,
+    StringLengthPtr: ptr TSQLSMALLINT,
+    TypePtr: ptr TSQLSMALLINT,
+    SubTypePtr: ptr TSQLSMALLINT,
+    LengthPtr: ptr TSQLLEN,
+    PrecisionPtr: ptr TSQLSMALLINT,
+    ScalePtr: ptr TSQLSMALLINT,
+    NullablePtr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDescRecW".}
+
+  proc SQLGetDiagField*(
+    HandleType: TSQLSMALLINT,
+    Handle: TSQLHANDLE,
+    RecNumber: TSQLSMALLINT,
+    DiagIdentifier: TSQLSMALLINT,
+    DiagInfoPtr: TSQLPOINTER,
+    BufferLength: TSQLSMALLINT,
+    StringLengthPtr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDiagFieldW".}
+
+  proc SQLGetDiagRec*(
+    HandleType: TSQLSMALLINT,
+    Handle: TSQLHANDLE,
+    RecNumber: TSQLSMALLINT,
+    SQLState: ptr TSQLWCHAR,
+    NativeErrorPtr: ptr TSQLINTEGER,
+    MessageText: ptr TSQLWCHAR,
+    BufferLength: TSQLSMALLINT,
+    TextLengthPtr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDiagRecW".}
+
+  proc SQLPrepare*(
+    StatementHandle: TSQLHSTMT, StatementText: ptr TSQLWCHAR, TextLength: TSQLINTEGER
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLPrepareW".}
+
+  proc SQLSetConnectAttr*(
+    ConnectionHandle: TSQLHDBC,
+    Attribute: TSQLINTEGER,
+    ValuePtr: TSQLPOINTER,
+    StringLength: TSQLINTEGER,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetConnectAttrW".}
+
+  proc SQLSetCursorName*(
+    StatementHandle: TSQLHSTMT, CursorName: ptr TSQLWCHAR, NameLength: TSQLSMALLINT
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetCursorNameW".}
+
+  proc SQLSetDescField*(
+    DescriptorHandle: TSQLHDESC,
+    RecNumber: TSQLSMALLINT,
+    FieldIdentifier: TSQLSMALLINT,
+    Value: TSQLPOINTER,
+    BufferLength: TSQLINTEGER,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetDescFieldW".}
+
+  proc SQLSetStmtAttr*(
+    StatementHandle: TSQLHSTMT,
+    Attribute: TSQLINTEGER,
+    ValuePtr: TSQLPOINTER,
+    StringLength: TSQLINTEGER,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetStmtAttrW".}
+
+  proc SQLGetStmtAttr*(
+    StatementHandle: TSQLHSTMT,
+    Attribute: TSQLINTEGER,
+    ValuePtr: TSQLPOINTER,
+    BufferLength: TSQLINTEGER,
+    StringLengthPtr: ptr TSQLINTEGER,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetStmtAttrW".}
+
+  proc SQLColumns*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLWCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLWCHAR,
+    NameLength2: TSQLSMALLINT,
+    TableName: ptr TSQLWCHAR,
+    NameLength3: TSQLSMALLINT,
+    ColumnName: ptr TSQLWCHAR,
+    NameLength4: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColumnsW".}
+
+  proc SQLGetConnectOption*(
+    ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLPOINTER
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetConnectOptionW".}
+
+  proc SQLGetInfo*(
+    ConnectionHandle: TSQLHDBC,
+    InfoType: TSQLUSMALLINT,
+    InfoValuePtr: TSQLPOINTER,
+    BufferLength: TSQLSMALLINT,
+    StringLengthPtr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetInfoW".}
+
+  proc SQLGetTypeInfo*(
+    StatementHandle: TSQLHSTMT, DataType: TSQLSMALLINT
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetTypeInfoW".}
+
+  proc SQLSetConnectOption*(
+    ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLULEN
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetConnectOptionW".}
+
+  proc SQLSpecialColumns*(
+    StatementHandle: TSQLHSTMT,
+    IdentifierType: TSQLUSMALLINT,
+    CatalogName: ptr TSQLWCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLWCHAR,
+    NameLength2: TSQLSMALLINT,
+    TableName: ptr TSQLWCHAR,
+    NameLength3: TSQLSMALLINT,
+    Scope: TSQLUSMALLINT,
+    Nullable: TSQLUSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSpecialColumnsW".}
+
+  proc SQLStatistics*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLWCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLWCHAR,
+    NameLength2: TSQLSMALLINT,
+    TableName: ptr TSQLWCHAR,
+    NameLength3: TSQLSMALLINT,
+    Unique: TSQLUSMALLINT,
+    Reserved: TSQLUSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLStatisticsW".}
+
+  proc SQLTables*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLWCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLWCHAR,
+    NameLength2: TSQLSMALLINT,
+    TableName: ptr TSQLWCHAR,
+    NameLength3: TSQLSMALLINT,
+    TableType: ptr TSQLWCHAR,
+    NameLength4: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLTablesW".}
+
+  proc SQLDataSources*(
+    EnvironmentHandle: TSQLHENV,
+    Direction: TSQLUSMALLINT,
+    ServerName: ptr TSQLWCHAR,
+    BufferLength1: TSQLSMALLINT,
+    NameLength1Ptr: ptr TSQLSMALLINT,
+    Description: ptr TSQLWCHAR,
+    BufferLength2: TSQLSMALLINT,
+    NameLength2Ptr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDataSourcesW".}
+
+  proc SQLDriverConnect*(
+    ConnectionHandle: TSQLHDBC,
+    WindowHandle: TSQLHWND,
+    InConnectionString: ptr TSQLWCHAR,
+    StringLength1: TSQLSMALLINT,
+    OutConnectionString: ptr TSQLWCHAR,
+    BufferLength: TSQLSMALLINT,
+    StringLength2Ptr: ptr TSQLSMALLINT,
+    DriverCompletion: TSQLUSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDriverConnectW".}
+
+  proc SQLBrowseConnect*(
+    ConnectionHandle: TSQLHDBC,
+    InConnectionString: ptr TSQLWCHAR,
+    StringLength1: TSQLSMALLINT,
+    OutConnectionString: ptr TSQLWCHAR,
+    BufferLength: TSQLSMALLINT,
+    StringLength2Ptr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLBrowseConnectW".}
+
+  proc SQLColumnPrivileges*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLWCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLWCHAR,
+    NameLength2: TSQLSMALLINT,
+    TableName: ptr TSQLWCHAR,
+    NameLength3: TSQLSMALLINT,
+    ColumnName: ptr TSQLWCHAR,
+    NameLength4: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColumnPrivilegesW".}
+
+  proc SQLForeignKeys*(
+    StatementHandle: TSQLHSTMT,
+    PKCatalogName: ptr TSQLWCHAR,
+    NameLength1: TSQLSMALLINT,
+    PKSchemaName: ptr TSQLWCHAR,
+    NameLength2: TSQLSMALLINT,
+    PKTableName: ptr TSQLWCHAR,
+    NameLength3: TSQLSMALLINT,
+    FKCatalogName: ptr TSQLWCHAR,
+    NameLength4: TSQLSMALLINT,
+    FKSchemaName: ptr TSQLWCHAR,
+    NameLength5: TSQLSMALLINT,
+    FKTableName: ptr TSQLWCHAR,
+    NameLength6: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLForeignKeysW".}
+
+  proc SQLNativeSql*(
+    ConnectionHandle: TSQLHDBC,
+    InStatementText: ptr TSQLWCHAR,
+    TextLength1: TSQLINTEGER,
+    OutStatementText: ptr TSQLWCHAR,
+    BufferLength: TSQLINTEGER,
+    TextLength2Ptr: ptr TSQLINTEGER,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLNativeSqlW".}
+
+  proc SQLPrimaryKeys*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLWCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLWCHAR,
+    NameLength2: TSQLSMALLINT,
+    TableName: ptr TSQLWCHAR,
+    NameLength3: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLPrimaryKeysW".}
+
+  proc SQLProcedureColumns*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLWCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLWCHAR,
+    NameLength2: TSQLSMALLINT,
+    ProcName: ptr TSQLWCHAR,
+    NameLength3: TSQLSMALLINT,
+    ColumnName: ptr TSQLWCHAR,
+    NameLength4: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLProcedureColumnsW".}
+
+  proc SQLProcedures*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLWCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLWCHAR,
+    NameLength2: TSQLSMALLINT,
+    ProcName: ptr TSQLWCHAR,
+    NameLength3: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLProceduresW".}
+
+  proc SQLTablePrivileges*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLWCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLWCHAR,
+    NameLength2: TSQLSMALLINT,
+    TableName: ptr TSQLWCHAR,
+    NameLength3: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLTablePrivilegesW".}
+
+  proc SQLDrivers*(
+    EnvironmentHandle: TSQLHENV,
+    Direction: TSQLUSMALLINT,
+    DriverDescription: ptr TSQLWCHAR,
+    BufferLength1: TSQLSMALLINT,
+    DescriptionLengthPtr: ptr TSQLSMALLINT,
+    DriverAttributes: ptr TSQLWCHAR,
+    BufferLength2: TSQLSMALLINT,
+    AttributesLengthPtr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDriversW".}
+
+  proc SQLInstallODBC*(
+    hwndParent: HWND, lpszInfFile: LPCWSTR, lpszSrcPath: LPCWSTR, lpszDrivers: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLInstallODBCW".}
+
+  proc SQLCreateDataSource*(
+    hwndParent: HWND, lpszDSN: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLCreateDataSourceW".}
+
+  proc SQLGetTranslator*(
+    hwnd: HWND,
+    lpszName: LPWSTR,
+    cbNameMax: WORD,
+    pcbNameOut: ptr WORD,
+    lpszPath: LPWSTR,
+    cbPathMax: WORD,
+    pcbPathOut: ptr WORD,
+    pvOption: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLGetTranslatorW".}
+
+  proc SQLInstallDriver*(
+    lpszInfFile: LPCWSTR,
+    lpszDriver: LPCWSTR,
+    lpszPath: LPWSTR,
+    cbPathMax: WORD,
+    pcbPathOut: ptr WORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLInstallDriverW".}
+
+  proc SQLInstallDriverManager*(
+    lpszPath: LPWSTR, cbPathMax: WORD, pcbPathOut: ptr WORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "odbccp32", importc: "SQLInstallDriverManagerW"
+  .}
+
+  proc SQLGetInstalledDrivers*(
+    lpszBuf: LPWSTR, cbBufMax: WORD, pcbBufOut: ptr WORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLGetInstalledDriversW".}
+
+  proc SQLGetAvailableDrivers*(
+    lpszInfFile: LPCWSTR, lpszBuf: LPWSTR, cbBufMax: WORD, pcbBufOut: ptr WORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLGetAvailableDriversW".}
+
+  proc SQLConfigDataSource*(
+    hwndParent: HWND, fRequest: WORD, lpszDriver: LPCWSTR, lpszAttributes: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLConfigDataSourceW".}
+
+  proc SQLWriteDSNToIni*(
+    lpszDSN: LPCWSTR, lpszDriver: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLWriteDSNToIniW".}
+
+  proc SQLRemoveDSNFromIni*(
+    lpszDSN: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLRemoveDSNFromIniW".}
+
+  proc SQLValidDSN*(
+    lpszDSN: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLValidDSNW".}
+
+  proc SQLWritePrivateProfileString*(
+    lpszSection: LPCWSTR, lpszEntry: LPCWSTR, lpszString: LPCWSTR, lpszFilename: LPCWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "odbccp32", importc: "SQLWritePrivateProfileStringW"
+  .}
+
+  proc SQLGetPrivateProfileString*(
+    lpszSection: LPCWSTR,
+    lpszEntry: LPCWSTR,
+    lpszDefault: LPCWSTR,
+    lpszRetBuffer: LPWSTR,
+    cbRetBuffer: int32,
+    lpszFilename: LPCWSTR,
+  ): int32 {.
+    winapi, stdcall, dynlib: "odbccp32", importc: "SQLGetPrivateProfileStringW"
+  .}
+
+  proc SQLInstallTranslator*(
+    lpszInfFile: LPCWSTR,
+    lpszTranslator: LPCWSTR,
+    lpszPathIn: LPCWSTR,
+    lpszPathOut: LPWSTR,
+    cbPathOutMax: WORD,
+    pcbPathOut: ptr WORD,
+    fRequest: WORD,
+    lpdwUsageCount: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLInstallTranslatorW".}
+
+  proc SQLRemoveTranslator*(
+    lpszTranslator: LPCWSTR, lpdwUsageCount: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLRemoveTranslatorW".}
+
+  proc SQLRemoveDriver*(
+    lpszDriver: LPCWSTR, fRemoveDSN: WINBOOL, lpdwUsageCount: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLRemoveDriverW".}
+
+  proc SQLConfigDriver*(
+    hwndParent: HWND,
+    fRequest: WORD,
+    lpszDriver: LPCWSTR,
+    lpszArgs: LPCWSTR,
+    lpszMsg: LPWSTR,
+    cbMsgMax: WORD,
+    pcbMsgOut: ptr WORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLConfigDriverW".}
+
+  proc SQLInstallerError*(
+    iError: WORD,
+    pfErrorCode: ptr DWORD,
+    lpszErrorMsg: LPWSTR,
+    cbErrorMsgMax: WORD,
+    pcbErrorMsg: ptr WORD,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLInstallerErrorW".}
+
+  proc SQLPostInstallerError*(
+    dwErrorCode: DWORD, lpszErrorMsg: LPCWSTR
+  ): TSQLRETURN {.
+    winapi, stdcall, dynlib: "odbccp32", importc: "SQLPostInstallerErrorW"
+  .}
+
+  proc SQLReadFileDSN*(
+    lpszFileName: LPCWSTR,
+    lpszAppName: LPCWSTR,
+    lpszKeyName: LPCWSTR,
+    lpszString: LPWSTR,
+    cbString: WORD,
+    pcbString: ptr WORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLReadFileDSNW".}
+
+  proc SQLWriteFileDSN*(
+    lpszFileName: LPCWSTR,
+    lpszAppName: LPCWSTR,
+    lpszKeyName: LPCWSTR,
+    lpszString: LPCWSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLWriteFileDSNW".}
+
+  proc SQLInstallDriverEx*(
+    lpszDriver: LPCWSTR,
+    lpszPathIn: LPCWSTR,
+    lpszPathOut: LPWSTR,
+    cbPathOutMax: WORD,
+    pcbPathOut: ptr WORD,
+    fRequest: WORD,
+    lpdwUsageCount: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLInstallDriverExW".}
+
+  proc SQLInstallTranslatorEx*(
+    lpszTranslator: LPCWSTR,
+    lpszPathIn: LPCWSTR,
+    lpszPathOut: LPWSTR,
+    cbPathOutMax: WORD,
+    pcbPathOut: ptr WORD,
+    fRequest: WORD,
+    lpdwUsageCount: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "odbccp32", importc: "SQLInstallTranslatorExW".}
+
 when winimAnsi:
-  type
-    TSQLTCHAR* = TSQLCHAR
-  const
-    SQL_C_TCHAR* = SQL_C_CHAR
-  proc SQLColAttribute*(StatementHandle: TSQLHSTMT, ColumnNumber: TSQLUSMALLINT, FieldIdentifier: TSQLUSMALLINT, CharacterAttributePtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT, NumericAttributePtr: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColAttributeA".}
-  proc SQLColumns*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT, ColumnName: ptr TSQLCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColumnsA".}
-  proc SQLConnect*(ConnectionHandle: TSQLHDBC, ServerName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, UserName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, Authentication: ptr TSQLCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLConnectA".}
-  proc SQLDataSources*(EnvironmentHandle: TSQLHENV, Direction: TSQLUSMALLINT, ServerName: ptr TSQLCHAR, BufferLength1: TSQLSMALLINT, NameLength1Ptr: ptr TSQLSMALLINT, Description: ptr TSQLCHAR, BufferLength2: TSQLSMALLINT, NameLength2Ptr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDataSourcesA".}
-  proc SQLDescribeCol*(StatementHandle: TSQLHSTMT, ColumnNumber: TSQLUSMALLINT, ColumnName: ptr TSQLCHAR, BufferLength: TSQLSMALLINT, NameLengthPtr: ptr TSQLSMALLINT, DataTypePtr: ptr TSQLSMALLINT, ColumnSizePtr: ptr TSQLULEN, DecimalDigitsPtr: ptr TSQLSMALLINT, NullablePtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDescribeColA".}
-  proc SQLError*(EnvironmentHandle: TSQLHENV, ConnectionHandle: TSQLHDBC, StatementHandle: TSQLHSTMT, Sqlstate: ptr TSQLCHAR, NativeError: ptr TSQLINTEGER, MessageText: ptr TSQLCHAR, BufferLength: TSQLSMALLINT, TextLength: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLErrorA".}
-  proc SQLExecDirect*(StatementHandle: TSQLHSTMT, StatementText: ptr TSQLCHAR, TextLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLExecDirectA".}
-  proc SQLGetConnectAttr*(ConnectionHandle: TSQLHDBC, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, BufferLength: TSQLINTEGER, StringLengthPtr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetConnectAttrA".}
-  proc SQLGetConnectOption*(ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLPOINTER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetConnectOptionA".}
-  proc SQLGetCursorName*(StatementHandle: TSQLHSTMT, CursorName: ptr TSQLCHAR, BufferLength: TSQLSMALLINT, NameLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetCursorNameA".}
-  proc SQLGetDescField*(DescriptorHandle: TSQLHDESC, RecNumber: TSQLSMALLINT, FieldIdentifier: TSQLSMALLINT, ValuePtr: TSQLPOINTER, BufferLength: TSQLINTEGER, StringLengthPtr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDescFieldA".}
-  proc SQLGetDescRec*(DescriptorHandle: TSQLHDESC, RecNumber: TSQLSMALLINT, Name: ptr TSQLCHAR, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT, TypePtr: ptr TSQLSMALLINT, SubTypePtr: ptr TSQLSMALLINT, LengthPtr: ptr TSQLLEN, PrecisionPtr: ptr TSQLSMALLINT, ScalePtr: ptr TSQLSMALLINT, NullablePtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDescRecA".}
-  proc SQLGetDiagField*(HandleType: TSQLSMALLINT, Handle: TSQLHANDLE, RecNumber: TSQLSMALLINT, DiagIdentifier: TSQLSMALLINT, DiagInfoPtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDiagFieldA".}
-  proc SQLGetDiagRec*(HandleType: TSQLSMALLINT, Handle: TSQLHANDLE, RecNumber: TSQLSMALLINT, SQLState: ptr TSQLCHAR, NativeErrorPtr: ptr TSQLINTEGER, MessageText: ptr TSQLCHAR, BufferLength: TSQLSMALLINT, TextLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDiagRecA".}
-  proc SQLGetInfo*(ConnectionHandle: TSQLHDBC, InfoType: TSQLUSMALLINT, InfoValuePtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetInfoA".}
-  proc SQLGetStmtAttr*(StatementHandle: TSQLHSTMT, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, BufferLength: TSQLINTEGER, StringLengthPtr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetStmtAttrA".}
-  proc SQLGetTypeInfo*(StatementHandle: TSQLHSTMT, DataType: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetTypeInfoA".}
-  proc SQLPrepare*(StatementHandle: TSQLHSTMT, StatementText: ptr TSQLCHAR, TextLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLPrepareA".}
-  proc SQLSetConnectAttr*(ConnectionHandle: TSQLHDBC, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, StringLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetConnectAttrA".}
-  proc SQLSetConnectOption*(ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLULEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetConnectOptionA".}
-  proc SQLSetCursorName*(StatementHandle: TSQLHSTMT, CursorName: ptr TSQLCHAR, NameLength: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetCursorNameA".}
-  proc SQLSetDescField*(DescriptorHandle: TSQLHDESC, RecNumber: TSQLSMALLINT, FieldIdentifier: TSQLSMALLINT, Value: TSQLPOINTER, BufferLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetDescFieldA".}
-  proc SQLSetStmtAttr*(StatementHandle: TSQLHSTMT, Attribute: TSQLINTEGER, ValuePtr: TSQLPOINTER, StringLength: TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetStmtAttrA".}
-  proc SQLSpecialColumns*(StatementHandle: TSQLHSTMT, IdentifierType: TSQLUSMALLINT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT, Scope: TSQLUSMALLINT, Nullable: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSpecialColumnsA".}
-  proc SQLStatistics*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT, Unique: TSQLUSMALLINT, Reserved: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLStatisticsA".}
-  proc SQLTables*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT, TableType: ptr TSQLCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLTablesA".}
-  proc SQLDriverConnect*(ConnectionHandle: TSQLHDBC, WindowHandle: TSQLHWND, InConnectionString: ptr TSQLCHAR, StringLength1: TSQLSMALLINT, OutConnectionString: ptr TSQLCHAR, BufferLength: TSQLSMALLINT, StringLength2Ptr: ptr TSQLSMALLINT, DriverCompletion: TSQLUSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDriverConnectA".}
-  proc SQLBrowseConnect*(ConnectionHandle: TSQLHDBC, InConnectionString: ptr TSQLCHAR, StringLength1: TSQLSMALLINT, OutConnectionString: ptr TSQLCHAR, BufferLength: TSQLSMALLINT, StringLength2Ptr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLBrowseConnectA".}
-  proc SQLColAttributes*(StatementHandle: TSQLHSTMT, ColumnNumber: TSQLUSMALLINT, FieldIdentifier: TSQLUSMALLINT, CharacterAttributePtr: TSQLPOINTER, BufferLength: TSQLSMALLINT, StringLengthPtr: ptr TSQLSMALLINT, NumericAttributePtr: ptr TSQLLEN): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColAttributesA".}
-  proc SQLColumnPrivileges*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT, ColumnName: ptr TSQLCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColumnPrivilegesA".}
-  proc SQLForeignKeys*(StatementHandle: TSQLHSTMT, PKCatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, PKSchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, PKTableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT, FKCatalogName: ptr TSQLCHAR, NameLength4: TSQLSMALLINT, FKSchemaName: ptr TSQLCHAR, NameLength5: TSQLSMALLINT, FKTableName: ptr TSQLCHAR, NameLength6: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLForeignKeysA".}
-  proc SQLNativeSql*(ConnectionHandle: TSQLHDBC, InStatementText: ptr TSQLCHAR, TextLength1: TSQLINTEGER, OutStatementText: ptr TSQLCHAR, BufferLength: TSQLINTEGER, TextLength2Ptr: ptr TSQLINTEGER): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLNativeSqlA".}
-  proc SQLPrimaryKeys*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLPrimaryKeysA".}
-  proc SQLProcedureColumns*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, ProcName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT, ColumnName: ptr TSQLCHAR, NameLength4: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLProcedureColumnsA".}
-  proc SQLProcedures*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, ProcName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLProceduresA".}
-  proc SQLTablePrivileges*(StatementHandle: TSQLHSTMT, CatalogName: ptr TSQLCHAR, NameLength1: TSQLSMALLINT, SchemaName: ptr TSQLCHAR, NameLength2: TSQLSMALLINT, TableName: ptr TSQLCHAR, NameLength3: TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLTablePrivilegesA".}
-  proc SQLDrivers*(EnvironmentHandle: TSQLHENV, Direction: TSQLUSMALLINT, DriverDescription: ptr TSQLCHAR, BufferLength1: TSQLSMALLINT, DescriptionLengthPtr: ptr TSQLSMALLINT, DriverAttributes: ptr TSQLCHAR, BufferLength2: TSQLSMALLINT, AttributesLengthPtr: ptr TSQLSMALLINT): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDriversA".}
+  type TSQLTCHAR* = TSQLCHAR
+  const SQL_C_TCHAR* = SQL_C_CHAR
+  proc SQLColAttribute*(
+    StatementHandle: TSQLHSTMT,
+    ColumnNumber: TSQLUSMALLINT,
+    FieldIdentifier: TSQLUSMALLINT,
+    CharacterAttributePtr: TSQLPOINTER,
+    BufferLength: TSQLSMALLINT,
+    StringLengthPtr: ptr TSQLSMALLINT,
+    NumericAttributePtr: ptr TSQLLEN,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColAttributeA".}
+
+  proc SQLColumns*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLCHAR,
+    NameLength2: TSQLSMALLINT,
+    TableName: ptr TSQLCHAR,
+    NameLength3: TSQLSMALLINT,
+    ColumnName: ptr TSQLCHAR,
+    NameLength4: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColumnsA".}
+
+  proc SQLConnect*(
+    ConnectionHandle: TSQLHDBC,
+    ServerName: ptr TSQLCHAR,
+    NameLength1: TSQLSMALLINT,
+    UserName: ptr TSQLCHAR,
+    NameLength2: TSQLSMALLINT,
+    Authentication: ptr TSQLCHAR,
+    NameLength3: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLConnectA".}
+
+  proc SQLDataSources*(
+    EnvironmentHandle: TSQLHENV,
+    Direction: TSQLUSMALLINT,
+    ServerName: ptr TSQLCHAR,
+    BufferLength1: TSQLSMALLINT,
+    NameLength1Ptr: ptr TSQLSMALLINT,
+    Description: ptr TSQLCHAR,
+    BufferLength2: TSQLSMALLINT,
+    NameLength2Ptr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDataSourcesA".}
+
+  proc SQLDescribeCol*(
+    StatementHandle: TSQLHSTMT,
+    ColumnNumber: TSQLUSMALLINT,
+    ColumnName: ptr TSQLCHAR,
+    BufferLength: TSQLSMALLINT,
+    NameLengthPtr: ptr TSQLSMALLINT,
+    DataTypePtr: ptr TSQLSMALLINT,
+    ColumnSizePtr: ptr TSQLULEN,
+    DecimalDigitsPtr: ptr TSQLSMALLINT,
+    NullablePtr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDescribeColA".}
+
+  proc SQLError*(
+    EnvironmentHandle: TSQLHENV,
+    ConnectionHandle: TSQLHDBC,
+    StatementHandle: TSQLHSTMT,
+    Sqlstate: ptr TSQLCHAR,
+    NativeError: ptr TSQLINTEGER,
+    MessageText: ptr TSQLCHAR,
+    BufferLength: TSQLSMALLINT,
+    TextLength: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLErrorA".}
+
+  proc SQLExecDirect*(
+    StatementHandle: TSQLHSTMT, StatementText: ptr TSQLCHAR, TextLength: TSQLINTEGER
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLExecDirectA".}
+
+  proc SQLGetConnectAttr*(
+    ConnectionHandle: TSQLHDBC,
+    Attribute: TSQLINTEGER,
+    ValuePtr: TSQLPOINTER,
+    BufferLength: TSQLINTEGER,
+    StringLengthPtr: ptr TSQLINTEGER,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetConnectAttrA".}
+
+  proc SQLGetConnectOption*(
+    ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLPOINTER
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetConnectOptionA".}
+
+  proc SQLGetCursorName*(
+    StatementHandle: TSQLHSTMT,
+    CursorName: ptr TSQLCHAR,
+    BufferLength: TSQLSMALLINT,
+    NameLengthPtr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetCursorNameA".}
+
+  proc SQLGetDescField*(
+    DescriptorHandle: TSQLHDESC,
+    RecNumber: TSQLSMALLINT,
+    FieldIdentifier: TSQLSMALLINT,
+    ValuePtr: TSQLPOINTER,
+    BufferLength: TSQLINTEGER,
+    StringLengthPtr: ptr TSQLINTEGER,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDescFieldA".}
+
+  proc SQLGetDescRec*(
+    DescriptorHandle: TSQLHDESC,
+    RecNumber: TSQLSMALLINT,
+    Name: ptr TSQLCHAR,
+    BufferLength: TSQLSMALLINT,
+    StringLengthPtr: ptr TSQLSMALLINT,
+    TypePtr: ptr TSQLSMALLINT,
+    SubTypePtr: ptr TSQLSMALLINT,
+    LengthPtr: ptr TSQLLEN,
+    PrecisionPtr: ptr TSQLSMALLINT,
+    ScalePtr: ptr TSQLSMALLINT,
+    NullablePtr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDescRecA".}
+
+  proc SQLGetDiagField*(
+    HandleType: TSQLSMALLINT,
+    Handle: TSQLHANDLE,
+    RecNumber: TSQLSMALLINT,
+    DiagIdentifier: TSQLSMALLINT,
+    DiagInfoPtr: TSQLPOINTER,
+    BufferLength: TSQLSMALLINT,
+    StringLengthPtr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDiagFieldA".}
+
+  proc SQLGetDiagRec*(
+    HandleType: TSQLSMALLINT,
+    Handle: TSQLHANDLE,
+    RecNumber: TSQLSMALLINT,
+    SQLState: ptr TSQLCHAR,
+    NativeErrorPtr: ptr TSQLINTEGER,
+    MessageText: ptr TSQLCHAR,
+    BufferLength: TSQLSMALLINT,
+    TextLengthPtr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetDiagRecA".}
+
+  proc SQLGetInfo*(
+    ConnectionHandle: TSQLHDBC,
+    InfoType: TSQLUSMALLINT,
+    InfoValuePtr: TSQLPOINTER,
+    BufferLength: TSQLSMALLINT,
+    StringLengthPtr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetInfoA".}
+
+  proc SQLGetStmtAttr*(
+    StatementHandle: TSQLHSTMT,
+    Attribute: TSQLINTEGER,
+    ValuePtr: TSQLPOINTER,
+    BufferLength: TSQLINTEGER,
+    StringLengthPtr: ptr TSQLINTEGER,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetStmtAttrA".}
+
+  proc SQLGetTypeInfo*(
+    StatementHandle: TSQLHSTMT, DataType: TSQLSMALLINT
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLGetTypeInfoA".}
+
+  proc SQLPrepare*(
+    StatementHandle: TSQLHSTMT, StatementText: ptr TSQLCHAR, TextLength: TSQLINTEGER
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLPrepareA".}
+
+  proc SQLSetConnectAttr*(
+    ConnectionHandle: TSQLHDBC,
+    Attribute: TSQLINTEGER,
+    ValuePtr: TSQLPOINTER,
+    StringLength: TSQLINTEGER,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetConnectAttrA".}
+
+  proc SQLSetConnectOption*(
+    ConnectionHandle: TSQLHDBC, Option: TSQLUSMALLINT, Value: TSQLULEN
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetConnectOptionA".}
+
+  proc SQLSetCursorName*(
+    StatementHandle: TSQLHSTMT, CursorName: ptr TSQLCHAR, NameLength: TSQLSMALLINT
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetCursorNameA".}
+
+  proc SQLSetDescField*(
+    DescriptorHandle: TSQLHDESC,
+    RecNumber: TSQLSMALLINT,
+    FieldIdentifier: TSQLSMALLINT,
+    Value: TSQLPOINTER,
+    BufferLength: TSQLINTEGER,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetDescFieldA".}
+
+  proc SQLSetStmtAttr*(
+    StatementHandle: TSQLHSTMT,
+    Attribute: TSQLINTEGER,
+    ValuePtr: TSQLPOINTER,
+    StringLength: TSQLINTEGER,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSetStmtAttrA".}
+
+  proc SQLSpecialColumns*(
+    StatementHandle: TSQLHSTMT,
+    IdentifierType: TSQLUSMALLINT,
+    CatalogName: ptr TSQLCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLCHAR,
+    NameLength2: TSQLSMALLINT,
+    TableName: ptr TSQLCHAR,
+    NameLength3: TSQLSMALLINT,
+    Scope: TSQLUSMALLINT,
+    Nullable: TSQLUSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLSpecialColumnsA".}
+
+  proc SQLStatistics*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLCHAR,
+    NameLength2: TSQLSMALLINT,
+    TableName: ptr TSQLCHAR,
+    NameLength3: TSQLSMALLINT,
+    Unique: TSQLUSMALLINT,
+    Reserved: TSQLUSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLStatisticsA".}
+
+  proc SQLTables*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLCHAR,
+    NameLength2: TSQLSMALLINT,
+    TableName: ptr TSQLCHAR,
+    NameLength3: TSQLSMALLINT,
+    TableType: ptr TSQLCHAR,
+    NameLength4: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLTablesA".}
+
+  proc SQLDriverConnect*(
+    ConnectionHandle: TSQLHDBC,
+    WindowHandle: TSQLHWND,
+    InConnectionString: ptr TSQLCHAR,
+    StringLength1: TSQLSMALLINT,
+    OutConnectionString: ptr TSQLCHAR,
+    BufferLength: TSQLSMALLINT,
+    StringLength2Ptr: ptr TSQLSMALLINT,
+    DriverCompletion: TSQLUSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDriverConnectA".}
+
+  proc SQLBrowseConnect*(
+    ConnectionHandle: TSQLHDBC,
+    InConnectionString: ptr TSQLCHAR,
+    StringLength1: TSQLSMALLINT,
+    OutConnectionString: ptr TSQLCHAR,
+    BufferLength: TSQLSMALLINT,
+    StringLength2Ptr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLBrowseConnectA".}
+
+  proc SQLColAttributes*(
+    StatementHandle: TSQLHSTMT,
+    ColumnNumber: TSQLUSMALLINT,
+    FieldIdentifier: TSQLUSMALLINT,
+    CharacterAttributePtr: TSQLPOINTER,
+    BufferLength: TSQLSMALLINT,
+    StringLengthPtr: ptr TSQLSMALLINT,
+    NumericAttributePtr: ptr TSQLLEN,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColAttributesA".}
+
+  proc SQLColumnPrivileges*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLCHAR,
+    NameLength2: TSQLSMALLINT,
+    TableName: ptr TSQLCHAR,
+    NameLength3: TSQLSMALLINT,
+    ColumnName: ptr TSQLCHAR,
+    NameLength4: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLColumnPrivilegesA".}
+
+  proc SQLForeignKeys*(
+    StatementHandle: TSQLHSTMT,
+    PKCatalogName: ptr TSQLCHAR,
+    NameLength1: TSQLSMALLINT,
+    PKSchemaName: ptr TSQLCHAR,
+    NameLength2: TSQLSMALLINT,
+    PKTableName: ptr TSQLCHAR,
+    NameLength3: TSQLSMALLINT,
+    FKCatalogName: ptr TSQLCHAR,
+    NameLength4: TSQLSMALLINT,
+    FKSchemaName: ptr TSQLCHAR,
+    NameLength5: TSQLSMALLINT,
+    FKTableName: ptr TSQLCHAR,
+    NameLength6: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLForeignKeysA".}
+
+  proc SQLNativeSql*(
+    ConnectionHandle: TSQLHDBC,
+    InStatementText: ptr TSQLCHAR,
+    TextLength1: TSQLINTEGER,
+    OutStatementText: ptr TSQLCHAR,
+    BufferLength: TSQLINTEGER,
+    TextLength2Ptr: ptr TSQLINTEGER,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLNativeSqlA".}
+
+  proc SQLPrimaryKeys*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLCHAR,
+    NameLength2: TSQLSMALLINT,
+    TableName: ptr TSQLCHAR,
+    NameLength3: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLPrimaryKeysA".}
+
+  proc SQLProcedureColumns*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLCHAR,
+    NameLength2: TSQLSMALLINT,
+    ProcName: ptr TSQLCHAR,
+    NameLength3: TSQLSMALLINT,
+    ColumnName: ptr TSQLCHAR,
+    NameLength4: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLProcedureColumnsA".}
+
+  proc SQLProcedures*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLCHAR,
+    NameLength2: TSQLSMALLINT,
+    ProcName: ptr TSQLCHAR,
+    NameLength3: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLProceduresA".}
+
+  proc SQLTablePrivileges*(
+    StatementHandle: TSQLHSTMT,
+    CatalogName: ptr TSQLCHAR,
+    NameLength1: TSQLSMALLINT,
+    SchemaName: ptr TSQLCHAR,
+    NameLength2: TSQLSMALLINT,
+    TableName: ptr TSQLCHAR,
+    NameLength3: TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLTablePrivilegesA".}
+
+  proc SQLDrivers*(
+    EnvironmentHandle: TSQLHENV,
+    Direction: TSQLUSMALLINT,
+    DriverDescription: ptr TSQLCHAR,
+    BufferLength1: TSQLSMALLINT,
+    DescriptionLengthPtr: ptr TSQLSMALLINT,
+    DriverAttributes: ptr TSQLCHAR,
+    BufferLength2: TSQLSMALLINT,
+    AttributesLengthPtr: ptr TSQLSMALLINT,
+  ): TSQLRETURN {.winapi, stdcall, dynlib: "odbc32", importc: "SQLDriversA".}
+
 when winimCpu64:
-  const
-    SQL_C_BOOKMARK* = SQL_C_UBIGINT
+  const SQL_C_BOOKMARK* = SQL_C_UBIGINT
 when winimCpu32:
-  const
-    SQL_C_BOOKMARK* = SQL_C_ULONG
+  const SQL_C_BOOKMARK* = SQL_C_ULONG
--- a/semicongine/thirdparty/winim/winim/inc/powrprof.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/powrprof.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -15,6 +15,7 @@
     LidOpenWakeAc*: SYSTEM_POWER_STATE
     LidOpenWakeDc*: SYSTEM_POWER_STATE
     BroadcastCapacityResolution*: ULONG
+
   PGLOBAL_MACHINE_POWER_POLICY* = ptr GLOBAL_MACHINE_POWER_POLICY
   GLOBAL_USER_POWER_POLICY* {.pure.} = object
     Revision*: ULONG
@@ -26,10 +27,12 @@
     LidCloseDc*: POWER_ACTION_POLICY
     DischargePolicy*: array[NUM_DISCHARGE_POLICIES, SYSTEM_POWER_LEVEL]
     GlobalFlags*: ULONG
+
   PGLOBAL_USER_POWER_POLICY* = ptr GLOBAL_USER_POWER_POLICY
   GLOBAL_POWER_POLICY* {.pure.} = object
     user*: GLOBAL_USER_POWER_POLICY
     mach*: GLOBAL_MACHINE_POWER_POLICY
+
   PGLOBAL_POWER_POLICY* = ptr GLOBAL_POWER_POLICY
   MACHINE_POWER_POLICY* {.pure.} = object
     Revision*: ULONG
@@ -46,11 +49,13 @@
     pad1*: array[2, UCHAR]
     OverThrottledAc*: POWER_ACTION_POLICY
     OverThrottledDc*: POWER_ACTION_POLICY
+
   PMACHINE_POWER_POLICY* = ptr MACHINE_POWER_POLICY
   MACHINE_PROCESSOR_POWER_POLICY* {.pure.} = object
     Revision*: ULONG
     ProcessorPolicyAc*: PROCESSOR_POWER_POLICY
     ProcessorPolicyDc*: PROCESSOR_POWER_POLICY
+
   PMACHINE_PROCESSOR_POWER_POLICY* = ptr MACHINE_PROCESSOR_POWER_POLICY
   USER_POWER_POLICY* {.pure.} = object
     Revision*: ULONG
@@ -75,11 +80,14 @@
     FanThrottleToleranceDc*: UCHAR
     ForcedThrottleAc*: UCHAR
     ForcedThrottleDc*: UCHAR
+
   PUSER_POWER_POLICY* = ptr USER_POWER_POLICY
   POWER_POLICY* {.pure.} = object
     user*: USER_POWER_POLICY
     mach*: MACHINE_POWER_POLICY
+
   PPOWER_POLICY* = ptr POWER_POLICY
+
 const
   enableSysTrayBatteryMeter* = 0x01
   enableMultiBatteryDisplay* = 0x02
@@ -113,77 +121,435 @@
   ACCESS_CREATE_SCHEME* = 20
   POWER_ATTRIBUTE_HIDE* = 1
 type
-  PWRSCHEMESENUMPROC* = proc (P1: UINT, P2: DWORD, P3: LPTSTR, P4: DWORD, P5: LPTSTR, P6: PPOWER_POLICY, P7: LPARAM): BOOLEAN {.stdcall.}
-  PFNNTINITIATEPWRACTION* = proc (P1: POWER_ACTION, P2: SYSTEM_POWER_STATE, P3: ULONG, P4: BOOLEAN): BOOLEAN {.stdcall.}
-proc GetPwrDiskSpindownRange*(P1: PUINT, P2: PUINT): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc EnumPwrSchemes*(P1: PWRSCHEMESENUMPROC, P2: LPARAM): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc ReadGlobalPwrPolicy*(P1: PGLOBAL_POWER_POLICY): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc ReadPwrScheme*(P1: UINT, P2: PPOWER_POLICY): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc WritePwrScheme*(P1: PUINT, P2: LPTSTR, P3: LPTSTR, P4: PPOWER_POLICY): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc WriteGlobalPwrPolicy*(P1: PGLOBAL_POWER_POLICY): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc DeletePwrScheme*(P1: UINT): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc GetActivePwrScheme*(P1: PUINT): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc SetActivePwrScheme*(P1: UINT, P2: PGLOBAL_POWER_POLICY, P3: PPOWER_POLICY): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc GetPwrCapabilities*(P1: PSYSTEM_POWER_CAPABILITIES): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+  PWRSCHEMESENUMPROC* = proc(
+    P1: UINT,
+    P2: DWORD,
+    P3: LPTSTR,
+    P4: DWORD,
+    P5: LPTSTR,
+    P6: PPOWER_POLICY,
+    P7: LPARAM,
+  ): BOOLEAN {.stdcall.}
+  PFNNTINITIATEPWRACTION* = proc(
+    P1: POWER_ACTION, P2: SYSTEM_POWER_STATE, P3: ULONG, P4: BOOLEAN
+  ): BOOLEAN {.stdcall.}
+
+proc GetPwrDiskSpindownRange*(
+  P1: PUINT, P2: PUINT
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc EnumPwrSchemes*(
+  P1: PWRSCHEMESENUMPROC, P2: LPARAM
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc ReadGlobalPwrPolicy*(
+  P1: PGLOBAL_POWER_POLICY
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc ReadPwrScheme*(
+  P1: UINT, P2: PPOWER_POLICY
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc WritePwrScheme*(
+  P1: PUINT, P2: LPTSTR, P3: LPTSTR, P4: PPOWER_POLICY
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc WriteGlobalPwrPolicy*(
+  P1: PGLOBAL_POWER_POLICY
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc DeletePwrScheme*(
+  P1: UINT
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc GetActivePwrScheme*(
+  P1: PUINT
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc SetActivePwrScheme*(
+  P1: UINT, P2: PGLOBAL_POWER_POLICY, P3: PPOWER_POLICY
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc GetPwrCapabilities*(
+  P1: PSYSTEM_POWER_CAPABILITIES
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
 proc IsPwrSuspendAllowed*(): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
 proc IsPwrHibernateAllowed*(): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
 proc IsPwrShutdownAllowed*(): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc IsAdminOverrideActive*(P1: PADMINISTRATOR_POWER_POLICY): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc SetSuspendState*(P1: BOOLEAN, P2: BOOLEAN, P3: BOOLEAN): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc GetCurrentPowerPolicies*(P1: PGLOBAL_POWER_POLICY, P2: PPOWER_POLICY): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+proc IsAdminOverrideActive*(
+  P1: PADMINISTRATOR_POWER_POLICY
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc SetSuspendState*(
+  P1: BOOLEAN, P2: BOOLEAN, P3: BOOLEAN
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc GetCurrentPowerPolicies*(
+  P1: PGLOBAL_POWER_POLICY, P2: PPOWER_POLICY
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
 proc CanUserWritePwrScheme*(): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc ReadProcessorPwrScheme*(P1: UINT, P2: PMACHINE_PROCESSOR_POWER_POLICY): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc WriteProcessorPwrScheme*(P1: UINT, P2: PMACHINE_PROCESSOR_POWER_POLICY): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc ValidatePowerPolicies*(P1: PGLOBAL_POWER_POLICY, P2: PPOWER_POLICY): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+proc ReadProcessorPwrScheme*(
+  P1: UINT, P2: PMACHINE_PROCESSOR_POWER_POLICY
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc WriteProcessorPwrScheme*(
+  P1: UINT, P2: PMACHINE_PROCESSOR_POWER_POLICY
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc ValidatePowerPolicies*(
+  P1: PGLOBAL_POWER_POLICY, P2: PPOWER_POLICY
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
 proc DevicePowerClose*(): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc DevicePowerEnumDevices*(QueryIndex: ULONG, QueryInterpretationFlags: ULONG, QueryFlags: ULONG, pReturnBuffer: PBYTE, pBufferSize: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc DevicePowerOpen*(Flags: ULONG): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc DevicePowerSetDeviceState*(DeviceDescription: LPCWSTR, SetFlags: ULONG, SetData: LPCVOID): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerCanRestoreIndividualDefaultPowerScheme*(SchemeGuid: ptr GUID): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerCreatePossibleSetting*(RootSystemPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, PossibleSettingIndex: ULONG): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerCreateSetting*(RootSystemPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerDeleteScheme*(RootPowerKey: HKEY, SchemeGuid: ptr GUID): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerDeterminePlatformRole*(): POWER_PLATFORM_ROLE {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerDuplicateScheme*(RootPowerKey: HKEY, SourceSchemeGuid: ptr GUID, DestinationSchemeGuid: ptr ptr GUID): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerEnumerate*(RootPowerKey: HKEY, SchemeGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, AccessFlags: POWER_DATA_ACCESSOR, Index: ULONG, Buffer: ptr UCHAR, BufferSize: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerGetActiveScheme*(UserRootPowerKey: HKEY, ActivePolicyGuid: ptr ptr GUID): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerImportPowerScheme*(RootPowerKey: HKEY, ImportFileNamePath: LPCWSTR, DestinationSchemeGuid: ptr ptr GUID): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadACDefaultIndex*(RootPowerKey: HKEY, SchemePersonalityGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, AcDefaultIndex: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadACValue*(RootPowerKey: HKEY, SchemeGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, Type: PULONG, Buffer: LPBYTE, BufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadACValueIndex*(RootPowerKey: HKEY, SchemeGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, AcValueIndex: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadDCDefaultIndex*(RootPowerKey: HKEY, SchemePersonalityGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, DcDefaultIndex: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadDCValue*(RootPowerKey: HKEY, SchemeGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, Type: PULONG, Buffer: PUCHAR, BufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadDCValueIndex*(RootPowerKey: HKEY, SchemeGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, DcValueIndex: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadDescription*(RootPowerKey: HKEY, SchemeGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, Buffer: PUCHAR, BufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadFriendlyName*(RootPowerKey: HKEY, SchemeGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, Buffer: PUCHAR, BufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadIconResourceSpecifier*(RootPowerKey: HKEY, SchemeGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, Buffer: PUCHAR, BufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadPossibleDescription*(RootPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, PossibleSettingIndex: ULONG, Buffer: PUCHAR, BufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadPossibleFriendlyName*(RootPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, PossibleSettingIndex: ULONG, Buffer: PUCHAR, BufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadPossibleValue*(RootPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, Type: PULONG, PossibleSettingIndex: ULONG, Buffer: PUCHAR, BufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadSettingAttributes*(SubGroupGuid: ptr GUID, PowerSettingGuid: ptr GUID): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadValueIncrement*(RootPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, ValueIncrement: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadValueMax*(RootPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, ValueMaximum: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadValueMin*(RootPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, ValueMinimum: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReadValueUnitsSpecifier*(RootPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, Buffer: ptr UCHAR, BufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerRemovePowerSetting*(PowerSettingSubKeyGuid: ptr GUID, PowerSettingGuid: ptr GUID): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerReplaceDefaultPowerSchemes*(): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerRestoreDefaultPowerSchemes*(): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerRestoreIndividualDefaultPowerScheme*(SchemeGuid: ptr GUID): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerSetActiveScheme*(UserRootPowerKey: HKEY, SchemeGuid: ptr GUID): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerSettingAccessCheck*(AccessFlags: POWER_DATA_ACCESSOR, PowerGuid: ptr GUID): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWriteACDefaultIndex*(RootSystemPowerKey: HKEY, SchemePersonalityGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, DefaultAcIndex: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWriteACValueIndex*(RootPowerKey: HKEY, SchemeGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, AcValueIndex: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWriteDCDefaultIndex*(RootSystemPowerKey: HKEY, SchemePersonalityGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, DefaultDcIndex: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWriteDCValueIndex*(RootPowerKey: HKEY, SchemeGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, DcValueIndex: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWriteDescription*(RootPowerKey: HKEY, SchemeGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, Buffer: ptr UCHAR, BufferSize: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWriteFriendlyName*(RootPowerKey: HKEY, SchemeGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, Buffer: ptr UCHAR, BufferSize: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWriteIconResourceSpecifier*(RootPowerKey: HKEY, SchemeGuid: ptr GUID, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, Buffer: ptr UCHAR, BufferSize: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWritePossibleDescription*(RootPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, PossibleSettingIndex: ULONG, Buffer: ptr UCHAR, BufferSize: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWritePossibleFriendlyName*(RootPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, PossibleSettingIndex: ULONG, Buffer: ptr UCHAR, BufferSize: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWritePossibleValue*(RootPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, Type: ULONG, PossibleSettingIndex: ULONG, Buffer: ptr UCHAR, BufferSize: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWriteSettingAttributes*(SubGroupGuid: ptr GUID, PowerSettingGuid: ptr GUID, Attributes: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWriteValueIncrement*(RootPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, ValueIncrement: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWriteValueMax*(RootPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, ValueMaximum: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWriteValueMin*(RootPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, ValueMinimum: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc PowerWriteValueUnitsSpecifier*(RootPowerKey: HKEY, SubGroupOfPowerSettingsGuid: ptr GUID, PowerSettingGuid: ptr GUID, Buffer: ptr UCHAR, BufferSize: DWORD): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
-proc CallNtPowerInformation*(P1: POWER_INFORMATION_LEVEL, P2: PVOID, P3: ULONG, P4: PVOID, P5: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "powrprof", importc.}
+proc DevicePowerEnumDevices*(
+  QueryIndex: ULONG,
+  QueryInterpretationFlags: ULONG,
+  QueryFlags: ULONG,
+  pReturnBuffer: PBYTE,
+  pBufferSize: PULONG,
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc DevicePowerOpen*(
+  Flags: ULONG
+): BOOLEAN {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc DevicePowerSetDeviceState*(
+  DeviceDescription: LPCWSTR, SetFlags: ULONG, SetData: LPCVOID
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerCanRestoreIndividualDefaultPowerScheme*(
+  SchemeGuid: ptr GUID
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerCreatePossibleSetting*(
+  RootSystemPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  PossibleSettingIndex: ULONG,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerCreateSetting*(
+  RootSystemPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerDeleteScheme*(
+  RootPowerKey: HKEY, SchemeGuid: ptr GUID
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerDeterminePlatformRole*(): POWER_PLATFORM_ROLE {.
+  winapi, stdcall, dynlib: "powrprof", importc
+.}
+
+proc PowerDuplicateScheme*(
+  RootPowerKey: HKEY, SourceSchemeGuid: ptr GUID, DestinationSchemeGuid: ptr ptr GUID
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerEnumerate*(
+  RootPowerKey: HKEY,
+  SchemeGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  AccessFlags: POWER_DATA_ACCESSOR,
+  Index: ULONG,
+  Buffer: ptr UCHAR,
+  BufferSize: ptr DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerGetActiveScheme*(
+  UserRootPowerKey: HKEY, ActivePolicyGuid: ptr ptr GUID
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerImportPowerScheme*(
+  RootPowerKey: HKEY, ImportFileNamePath: LPCWSTR, DestinationSchemeGuid: ptr ptr GUID
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadACDefaultIndex*(
+  RootPowerKey: HKEY,
+  SchemePersonalityGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  AcDefaultIndex: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadACValue*(
+  RootPowerKey: HKEY,
+  SchemeGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  Type: PULONG,
+  Buffer: LPBYTE,
+  BufferSize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadACValueIndex*(
+  RootPowerKey: HKEY,
+  SchemeGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  AcValueIndex: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadDCDefaultIndex*(
+  RootPowerKey: HKEY,
+  SchemePersonalityGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  DcDefaultIndex: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadDCValue*(
+  RootPowerKey: HKEY,
+  SchemeGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  Type: PULONG,
+  Buffer: PUCHAR,
+  BufferSize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadDCValueIndex*(
+  RootPowerKey: HKEY,
+  SchemeGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  DcValueIndex: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadDescription*(
+  RootPowerKey: HKEY,
+  SchemeGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  Buffer: PUCHAR,
+  BufferSize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadFriendlyName*(
+  RootPowerKey: HKEY,
+  SchemeGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  Buffer: PUCHAR,
+  BufferSize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadIconResourceSpecifier*(
+  RootPowerKey: HKEY,
+  SchemeGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  Buffer: PUCHAR,
+  BufferSize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadPossibleDescription*(
+  RootPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  PossibleSettingIndex: ULONG,
+  Buffer: PUCHAR,
+  BufferSize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadPossibleFriendlyName*(
+  RootPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  PossibleSettingIndex: ULONG,
+  Buffer: PUCHAR,
+  BufferSize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadPossibleValue*(
+  RootPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  Type: PULONG,
+  PossibleSettingIndex: ULONG,
+  Buffer: PUCHAR,
+  BufferSize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadSettingAttributes*(
+  SubGroupGuid: ptr GUID, PowerSettingGuid: ptr GUID
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadValueIncrement*(
+  RootPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  ValueIncrement: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadValueMax*(
+  RootPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  ValueMaximum: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadValueMin*(
+  RootPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  ValueMinimum: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReadValueUnitsSpecifier*(
+  RootPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  Buffer: ptr UCHAR,
+  BufferSize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerRemovePowerSetting*(
+  PowerSettingSubKeyGuid: ptr GUID, PowerSettingGuid: ptr GUID
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerReplaceDefaultPowerSchemes*(): DWORD {.
+  winapi, stdcall, dynlib: "powrprof", importc
+.}
+
+proc PowerRestoreDefaultPowerSchemes*(): DWORD {.
+  winapi, stdcall, dynlib: "powrprof", importc
+.}
+
+proc PowerRestoreIndividualDefaultPowerScheme*(
+  SchemeGuid: ptr GUID
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerSetActiveScheme*(
+  UserRootPowerKey: HKEY, SchemeGuid: ptr GUID
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerSettingAccessCheck*(
+  AccessFlags: POWER_DATA_ACCESSOR, PowerGuid: ptr GUID
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWriteACDefaultIndex*(
+  RootSystemPowerKey: HKEY,
+  SchemePersonalityGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  DefaultAcIndex: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWriteACValueIndex*(
+  RootPowerKey: HKEY,
+  SchemeGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  AcValueIndex: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWriteDCDefaultIndex*(
+  RootSystemPowerKey: HKEY,
+  SchemePersonalityGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  DefaultDcIndex: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWriteDCValueIndex*(
+  RootPowerKey: HKEY,
+  SchemeGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  DcValueIndex: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWriteDescription*(
+  RootPowerKey: HKEY,
+  SchemeGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  Buffer: ptr UCHAR,
+  BufferSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWriteFriendlyName*(
+  RootPowerKey: HKEY,
+  SchemeGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  Buffer: ptr UCHAR,
+  BufferSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWriteIconResourceSpecifier*(
+  RootPowerKey: HKEY,
+  SchemeGuid: ptr GUID,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  Buffer: ptr UCHAR,
+  BufferSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWritePossibleDescription*(
+  RootPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  PossibleSettingIndex: ULONG,
+  Buffer: ptr UCHAR,
+  BufferSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWritePossibleFriendlyName*(
+  RootPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  PossibleSettingIndex: ULONG,
+  Buffer: ptr UCHAR,
+  BufferSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWritePossibleValue*(
+  RootPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  Type: ULONG,
+  PossibleSettingIndex: ULONG,
+  Buffer: ptr UCHAR,
+  BufferSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWriteSettingAttributes*(
+  SubGroupGuid: ptr GUID, PowerSettingGuid: ptr GUID, Attributes: DWORD
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWriteValueIncrement*(
+  RootPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  ValueIncrement: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWriteValueMax*(
+  RootPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  ValueMaximum: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWriteValueMin*(
+  RootPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  ValueMinimum: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc PowerWriteValueUnitsSpecifier*(
+  RootPowerKey: HKEY,
+  SubGroupOfPowerSettingsGuid: ptr GUID,
+  PowerSettingGuid: ptr GUID,
+  Buffer: ptr UCHAR,
+  BufferSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "powrprof", importc.}
+
+proc CallNtPowerInformation*(
+  P1: POWER_INFORMATION_LEVEL, P2: PVOID, P3: ULONG, P4: PVOID, P5: ULONG
+): NTSTATUS {.winapi, stdcall, dynlib: "powrprof", importc.}
--- a/semicongine/thirdparty/winim/winim/inc/psapi.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/psapi.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -12,10 +12,12 @@
     lpBaseOfDll*: LPVOID
     SizeOfImage*: DWORD
     EntryPoint*: LPVOID
+
   LPMODULEINFO* = ptr MODULEINFO
   PSAPI_WS_WATCH_INFORMATION* {.pure.} = object
     FaultingPc*: LPVOID
     FaultingVa*: LPVOID
+
   PPSAPI_WS_WATCH_INFORMATION* = ptr PSAPI_WS_WATCH_INFORMATION
   PROCESS_MEMORY_COUNTERS* {.pure.} = object
     cb*: DWORD
@@ -28,6 +30,7 @@
     QuotaNonPagedPoolUsage*: SIZE_T
     PagefileUsage*: SIZE_T
     PeakPagefileUsage*: SIZE_T
+
   PPROCESS_MEMORY_COUNTERS* = ptr PROCESS_MEMORY_COUNTERS
   PROCESS_MEMORY_COUNTERS_EX* {.pure.} = object
     cb*: DWORD
@@ -41,6 +44,7 @@
     PagefileUsage*: SIZE_T
     PeakPagefileUsage*: SIZE_T
     PrivateUsage*: SIZE_T
+
   PPROCESS_MEMORY_COUNTERS_EX* = ptr PROCESS_MEMORY_COUNTERS_EX
   PERFORMANCE_INFORMATION* {.pure.} = object
     cb*: DWORD
@@ -57,6 +61,7 @@
     HandleCount*: DWORD
     ProcessCount*: DWORD
     ThreadCount*: DWORD
+
   PPERFORMANCE_INFORMATION* = ptr PERFORMANCE_INFORMATION
   PERFORMACE_INFORMATION* = PERFORMANCE_INFORMATION
   PPERFORMACE_INFORMATION* = ptr PERFORMANCE_INFORMATION
@@ -66,151 +71,356 @@
     TotalSize*: SIZE_T
     TotalInUse*: SIZE_T
     PeakUsage*: SIZE_T
+
   PENUM_PAGE_FILE_INFORMATION* = ptr ENUM_PAGE_FILE_INFORMATION
   PSAPI_WS_WATCH_INFORMATION_EX* {.pure.} = object
     BasicInfo*: PSAPI_WS_WATCH_INFORMATION
     FaultingThreadId*: ULONG_PTR
     Flags*: ULONG_PTR
+
   PPSAPI_WS_WATCH_INFORMATION_EX* = ptr PSAPI_WS_WATCH_INFORMATION_EX
+
 when winimCpu64:
-  type
-    PSAPI_WORKING_SET_BLOCK_STRUCT1* {.pure.} = object
-      Protection* {.bitsize:5.}: ULONG_PTR
-      ShareCount* {.bitsize:3.}: ULONG_PTR
-      Shared* {.bitsize:1.}: ULONG_PTR
-      Reserved* {.bitsize:3.}: ULONG_PTR
-      VirtualPage* {.bitsize:52.}: ULONG_PTR
+  type PSAPI_WORKING_SET_BLOCK_STRUCT1* {.pure.} = object
+    Protection* {.bitsize: 5.}: ULONG_PTR
+    ShareCount* {.bitsize: 3.}: ULONG_PTR
+    Shared* {.bitsize: 1.}: ULONG_PTR
+    Reserved* {.bitsize: 3.}: ULONG_PTR
+    VirtualPage* {.bitsize: 52.}: ULONG_PTR
+
 when winimCpu32:
-  type
-    PSAPI_WORKING_SET_BLOCK_STRUCT1* {.pure.} = object
-      Protection* {.bitsize:5.}: ULONG_PTR
-      ShareCount* {.bitsize:3.}: ULONG_PTR
-      Shared* {.bitsize:1.}: ULONG_PTR
-      Reserved* {.bitsize:3.}: ULONG_PTR
-      VirtualPage* {.bitsize:20.}: ULONG_PTR
+  type PSAPI_WORKING_SET_BLOCK_STRUCT1* {.pure.} = object
+    Protection* {.bitsize: 5.}: ULONG_PTR
+    ShareCount* {.bitsize: 3.}: ULONG_PTR
+    Shared* {.bitsize: 1.}: ULONG_PTR
+    Reserved* {.bitsize: 3.}: ULONG_PTR
+    VirtualPage* {.bitsize: 20.}: ULONG_PTR
+
 when winimCpu64:
-  type
-    PSAPI_WORKING_SET_BLOCK* {.pure, union.} = object
-      Flags*: ULONG_PTR
-      struct1*: PSAPI_WORKING_SET_BLOCK_STRUCT1
+  type PSAPI_WORKING_SET_BLOCK* {.pure, union.} = object
+    Flags*: ULONG_PTR
+    struct1*: PSAPI_WORKING_SET_BLOCK_STRUCT1
+
 when winimCpu32:
-  type
-    PSAPI_WORKING_SET_BLOCK* {.pure, union.} = object
-      Flags*: ULONG_PTR
-      struct1*: PSAPI_WORKING_SET_BLOCK_STRUCT1
+  type PSAPI_WORKING_SET_BLOCK* {.pure, union.} = object
+    Flags*: ULONG_PTR
+    struct1*: PSAPI_WORKING_SET_BLOCK_STRUCT1
+
 type
   PSAPI_WORKING_SET_INFORMATION* {.pure.} = object
     NumberOfEntries*: ULONG_PTR
     WorkingSetInfo*: array[1, PSAPI_WORKING_SET_BLOCK]
+
   PPSAPI_WORKING_SET_INFORMATION* = ptr PSAPI_WORKING_SET_INFORMATION
   PSAPI_WORKING_SET_EX_BLOCK_STRUCT1* {.pure.} = object
-    Valid* {.bitsize:1.}: ULONG_PTR
-    ShareCount* {.bitsize:3.}: ULONG_PTR
-    Win32Protection* {.bitsize:11.}: ULONG_PTR
-    Shared* {.bitsize:1.}: ULONG_PTR
-    Node* {.bitsize:6.}: ULONG_PTR
-    Locked* {.bitsize:1.}: ULONG_PTR
-    LargePage* {.bitsize:1.}: ULONG_PTR
+    Valid* {.bitsize: 1.}: ULONG_PTR
+    ShareCount* {.bitsize: 3.}: ULONG_PTR
+    Win32Protection* {.bitsize: 11.}: ULONG_PTR
+    Shared* {.bitsize: 1.}: ULONG_PTR
+    Node* {.bitsize: 6.}: ULONG_PTR
+    Locked* {.bitsize: 1.}: ULONG_PTR
+    LargePage* {.bitsize: 1.}: ULONG_PTR
+
   PSAPI_WORKING_SET_EX_BLOCK* {.pure, union.} = object
     Flags*: ULONG_PTR
     struct1*: PSAPI_WORKING_SET_EX_BLOCK_STRUCT1
+
   PPSAPI_WORKING_SET_EX_BLOCK* = ptr PSAPI_WORKING_SET_EX_BLOCK
   PSAPI_WORKING_SET_EX_INFORMATION* {.pure.} = object
     VirtualAddress*: PVOID
     VirtualAttributes*: PSAPI_WORKING_SET_EX_BLOCK
+
   PPSAPI_WORKING_SET_EX_INFORMATION* = ptr PSAPI_WORKING_SET_EX_INFORMATION
+
 const
   LIST_MODULES_DEFAULT* = 0x0
   LIST_MODULES_32BIT* = 0x01
   LIST_MODULES_64BIT* = 0x02
   LIST_MODULES_ALL* = LIST_MODULES_32BIT or LIST_MODULES_64BIT
 type
-  PENUM_PAGE_FILE_CALLBACKW* = proc (pContext: LPVOID, pPageFileInfo: PENUM_PAGE_FILE_INFORMATION, lpFilename: LPCWSTR): WINBOOL {.stdcall.}
-  PENUM_PAGE_FILE_CALLBACKA* = proc (pContext: LPVOID, pPageFileInfo: PENUM_PAGE_FILE_INFORMATION, lpFilename: LPCSTR): WINBOOL {.stdcall.}
-proc EnumProcesses*(lpidProcess: ptr DWORD, cb: DWORD, cbNeeded: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc EnumProcessModules*(hProcess: HANDLE, lphModule: ptr HMODULE, cb: DWORD, lpcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetModuleBaseNameA*(hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetModuleBaseNameW*(hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetModuleFileNameExA*(hProcess: HANDLE, hModule: HMODULE, lpFilename: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetModuleFileNameExW*(hProcess: HANDLE, hModule: HMODULE, lpFilename: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetModuleInformation*(hProcess: HANDLE, hModule: HMODULE, lpmodinfo: LPMODULEINFO, cb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc EmptyWorkingSet*(hProcess: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc QueryWorkingSet*(hProcess: HANDLE, pv: PVOID, cb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc QueryWorkingSetEx*(hProcess: HANDLE, pv: PVOID, cb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc InitializeProcessForWsWatch*(hProcess: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetWsChanges*(hProcess: HANDLE, lpWatchInfo: PPSAPI_WS_WATCH_INFORMATION, cb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetMappedFileNameW*(hProcess: HANDLE, lpv: LPVOID, lpFilename: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetMappedFileNameA*(hProcess: HANDLE, lpv: LPVOID, lpFilename: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
-proc EnumDeviceDrivers*(lpImageBase: ptr LPVOID, cb: DWORD, lpcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetDeviceDriverBaseNameA*(ImageBase: LPVOID, lpBaseName: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetDeviceDriverBaseNameW*(ImageBase: LPVOID, lpBaseName: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetDeviceDriverFileNameA*(ImageBase: LPVOID, lpFilename: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetDeviceDriverFileNameW*(ImageBase: LPVOID, lpFilename: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetProcessMemoryInfo*(Process: HANDLE, ppsmemCounters: PPROCESS_MEMORY_COUNTERS, cb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetPerformanceInfo*(pPerformanceInformation: PPERFORMACE_INFORMATION, cb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc EnumPageFilesW*(pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKW, pContext: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc EnumPageFilesA*(pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKA, pContext: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetProcessImageFileNameA*(hProcess: HANDLE, lpImageFileName: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetProcessImageFileNameW*(hProcess: HANDLE, lpImageFileName: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
-proc GetWsChangesEx*(hProcess: HANDLE, lpWatchInfoEx: PPSAPI_WS_WATCH_INFORMATION_EX, cb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc EnumProcessModulesEx*(hProcess: HANDLE, lphModule: ptr HMODULE, cb: DWORD, lpcbNeeded: LPDWORD, dwFilterFlag: DWORD): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
-proc `Valid=`*(self: var PSAPI_WORKING_SET_EX_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.Valid = x
-proc Valid*(self: PSAPI_WORKING_SET_EX_BLOCK): ULONG_PTR {.inline.} = self.struct1.Valid
-proc `ShareCount=`*(self: var PSAPI_WORKING_SET_EX_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.ShareCount = x
-proc ShareCount*(self: PSAPI_WORKING_SET_EX_BLOCK): ULONG_PTR {.inline.} = self.struct1.ShareCount
-proc `Win32Protection=`*(self: var PSAPI_WORKING_SET_EX_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.Win32Protection = x
-proc Win32Protection*(self: PSAPI_WORKING_SET_EX_BLOCK): ULONG_PTR {.inline.} = self.struct1.Win32Protection
-proc `Shared=`*(self: var PSAPI_WORKING_SET_EX_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.Shared = x
-proc Shared*(self: PSAPI_WORKING_SET_EX_BLOCK): ULONG_PTR {.inline.} = self.struct1.Shared
-proc `Node=`*(self: var PSAPI_WORKING_SET_EX_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.Node = x
-proc Node*(self: PSAPI_WORKING_SET_EX_BLOCK): ULONG_PTR {.inline.} = self.struct1.Node
-proc `Locked=`*(self: var PSAPI_WORKING_SET_EX_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.Locked = x
-proc Locked*(self: PSAPI_WORKING_SET_EX_BLOCK): ULONG_PTR {.inline.} = self.struct1.Locked
-proc `LargePage=`*(self: var PSAPI_WORKING_SET_EX_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.LargePage = x
-proc LargePage*(self: PSAPI_WORKING_SET_EX_BLOCK): ULONG_PTR {.inline.} = self.struct1.LargePage
+  PENUM_PAGE_FILE_CALLBACKW* = proc(
+    pContext: LPVOID, pPageFileInfo: PENUM_PAGE_FILE_INFORMATION, lpFilename: LPCWSTR
+  ): WINBOOL {.stdcall.}
+  PENUM_PAGE_FILE_CALLBACKA* = proc(
+    pContext: LPVOID, pPageFileInfo: PENUM_PAGE_FILE_INFORMATION, lpFilename: LPCSTR
+  ): WINBOOL {.stdcall.}
+
+proc EnumProcesses*(
+  lpidProcess: ptr DWORD, cb: DWORD, cbNeeded: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc EnumProcessModules*(
+  hProcess: HANDLE, lphModule: ptr HMODULE, cb: DWORD, lpcbNeeded: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetModuleBaseNameA*(
+  hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetModuleBaseNameW*(
+  hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPWSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetModuleFileNameExA*(
+  hProcess: HANDLE, hModule: HMODULE, lpFilename: LPSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetModuleFileNameExW*(
+  hProcess: HANDLE, hModule: HMODULE, lpFilename: LPWSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetModuleInformation*(
+  hProcess: HANDLE, hModule: HMODULE, lpmodinfo: LPMODULEINFO, cb: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc EmptyWorkingSet*(
+  hProcess: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc QueryWorkingSet*(
+  hProcess: HANDLE, pv: PVOID, cb: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc QueryWorkingSetEx*(
+  hProcess: HANDLE, pv: PVOID, cb: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc InitializeProcessForWsWatch*(
+  hProcess: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetWsChanges*(
+  hProcess: HANDLE, lpWatchInfo: PPSAPI_WS_WATCH_INFORMATION, cb: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetMappedFileNameW*(
+  hProcess: HANDLE, lpv: LPVOID, lpFilename: LPWSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetMappedFileNameA*(
+  hProcess: HANDLE, lpv: LPVOID, lpFilename: LPSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc EnumDeviceDrivers*(
+  lpImageBase: ptr LPVOID, cb: DWORD, lpcbNeeded: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetDeviceDriverBaseNameA*(
+  ImageBase: LPVOID, lpBaseName: LPSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetDeviceDriverBaseNameW*(
+  ImageBase: LPVOID, lpBaseName: LPWSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetDeviceDriverFileNameA*(
+  ImageBase: LPVOID, lpFilename: LPSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetDeviceDriverFileNameW*(
+  ImageBase: LPVOID, lpFilename: LPWSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetProcessMemoryInfo*(
+  Process: HANDLE, ppsmemCounters: PPROCESS_MEMORY_COUNTERS, cb: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetPerformanceInfo*(
+  pPerformanceInformation: PPERFORMACE_INFORMATION, cb: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc EnumPageFilesW*(
+  pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKW, pContext: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc EnumPageFilesA*(
+  pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKA, pContext: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetProcessImageFileNameA*(
+  hProcess: HANDLE, lpImageFileName: LPSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetProcessImageFileNameW*(
+  hProcess: HANDLE, lpImageFileName: LPWSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc GetWsChangesEx*(
+  hProcess: HANDLE, lpWatchInfoEx: PPSAPI_WS_WATCH_INFORMATION_EX, cb: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc EnumProcessModulesEx*(
+  hProcess: HANDLE,
+  lphModule: ptr HMODULE,
+  cb: DWORD,
+  lpcbNeeded: LPDWORD,
+  dwFilterFlag: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc.}
+
+proc `Valid=`*(self: var PSAPI_WORKING_SET_EX_BLOCK, x: ULONG_PTR) {.inline.} =
+  self.struct1.Valid = x
+
+proc Valid*(self: PSAPI_WORKING_SET_EX_BLOCK): ULONG_PTR {.inline.} =
+  self.struct1.Valid
+
+proc `ShareCount=`*(self: var PSAPI_WORKING_SET_EX_BLOCK, x: ULONG_PTR) {.inline.} =
+  self.struct1.ShareCount = x
+
+proc ShareCount*(self: PSAPI_WORKING_SET_EX_BLOCK): ULONG_PTR {.inline.} =
+  self.struct1.ShareCount
+
+proc `Win32Protection=`*(
+    self: var PSAPI_WORKING_SET_EX_BLOCK, x: ULONG_PTR
+) {.inline.} =
+  self.struct1.Win32Protection = x
+
+proc Win32Protection*(self: PSAPI_WORKING_SET_EX_BLOCK): ULONG_PTR {.inline.} =
+  self.struct1.Win32Protection
+
+proc `Shared=`*(self: var PSAPI_WORKING_SET_EX_BLOCK, x: ULONG_PTR) {.inline.} =
+  self.struct1.Shared = x
+
+proc Shared*(self: PSAPI_WORKING_SET_EX_BLOCK): ULONG_PTR {.inline.} =
+  self.struct1.Shared
+
+proc `Node=`*(self: var PSAPI_WORKING_SET_EX_BLOCK, x: ULONG_PTR) {.inline.} =
+  self.struct1.Node = x
+
+proc Node*(self: PSAPI_WORKING_SET_EX_BLOCK): ULONG_PTR {.inline.} =
+  self.struct1.Node
+
+proc `Locked=`*(self: var PSAPI_WORKING_SET_EX_BLOCK, x: ULONG_PTR) {.inline.} =
+  self.struct1.Locked = x
+
+proc Locked*(self: PSAPI_WORKING_SET_EX_BLOCK): ULONG_PTR {.inline.} =
+  self.struct1.Locked
+
+proc `LargePage=`*(self: var PSAPI_WORKING_SET_EX_BLOCK, x: ULONG_PTR) {.inline.} =
+  self.struct1.LargePage = x
+
+proc LargePage*(self: PSAPI_WORKING_SET_EX_BLOCK): ULONG_PTR {.inline.} =
+  self.struct1.LargePage
+
 when winimUnicode:
-  type
-    PENUM_PAGE_FILE_CALLBACK* = PENUM_PAGE_FILE_CALLBACKW
-  proc GetModuleBaseName*(hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetModuleBaseNameW".}
-  proc GetModuleFileNameEx*(hProcess: HANDLE, hModule: HMODULE, lpFilename: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetModuleFileNameExW".}
-  proc GetMappedFileName*(hProcess: HANDLE, lpv: LPVOID, lpFilename: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetMappedFileNameW".}
-  proc GetDeviceDriverBaseName*(ImageBase: LPVOID, lpBaseName: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetDeviceDriverBaseNameW".}
-  proc GetDeviceDriverFileName*(ImageBase: LPVOID, lpFilename: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetDeviceDriverFileNameW".}
-  proc EnumPageFiles*(pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKW, pContext: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc: "EnumPageFilesW".}
-  proc GetProcessImageFileName*(hProcess: HANDLE, lpImageFileName: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetProcessImageFileNameW".}
+  type PENUM_PAGE_FILE_CALLBACK* = PENUM_PAGE_FILE_CALLBACKW
+  proc GetModuleBaseName*(
+    hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPWSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetModuleBaseNameW".}
+
+  proc GetModuleFileNameEx*(
+    hProcess: HANDLE, hModule: HMODULE, lpFilename: LPWSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetModuleFileNameExW".}
+
+  proc GetMappedFileName*(
+    hProcess: HANDLE, lpv: LPVOID, lpFilename: LPWSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetMappedFileNameW".}
+
+  proc GetDeviceDriverBaseName*(
+    ImageBase: LPVOID, lpBaseName: LPWSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetDeviceDriverBaseNameW".}
+
+  proc GetDeviceDriverFileName*(
+    ImageBase: LPVOID, lpFilename: LPWSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetDeviceDriverFileNameW".}
+
+  proc EnumPageFiles*(
+    pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKW, pContext: LPVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc: "EnumPageFilesW".}
+
+  proc GetProcessImageFileName*(
+    hProcess: HANDLE, lpImageFileName: LPWSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetProcessImageFileNameW".}
+
 when winimAnsi:
-  type
-    PENUM_PAGE_FILE_CALLBACK* = PENUM_PAGE_FILE_CALLBACKA
-  proc GetModuleBaseName*(hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetModuleBaseNameA".}
-  proc GetModuleFileNameEx*(hProcess: HANDLE, hModule: HMODULE, lpFilename: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetModuleFileNameExA".}
-  proc GetMappedFileName*(hProcess: HANDLE, lpv: LPVOID, lpFilename: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetMappedFileNameA".}
-  proc GetDeviceDriverBaseName*(ImageBase: LPVOID, lpBaseName: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetDeviceDriverBaseNameA".}
-  proc GetDeviceDriverFileName*(ImageBase: LPVOID, lpFilename: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetDeviceDriverFileNameA".}
-  proc EnumPageFiles*(pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKA, pContext: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc: "EnumPageFilesA".}
-  proc GetProcessImageFileName*(hProcess: HANDLE, lpImageFileName: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetProcessImageFileNameA".}
+  type PENUM_PAGE_FILE_CALLBACK* = PENUM_PAGE_FILE_CALLBACKA
+  proc GetModuleBaseName*(
+    hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetModuleBaseNameA".}
+
+  proc GetModuleFileNameEx*(
+    hProcess: HANDLE, hModule: HMODULE, lpFilename: LPSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetModuleFileNameExA".}
+
+  proc GetMappedFileName*(
+    hProcess: HANDLE, lpv: LPVOID, lpFilename: LPSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetMappedFileNameA".}
+
+  proc GetDeviceDriverBaseName*(
+    ImageBase: LPVOID, lpBaseName: LPSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetDeviceDriverBaseNameA".}
+
+  proc GetDeviceDriverFileName*(
+    ImageBase: LPVOID, lpFilename: LPSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetDeviceDriverFileNameA".}
+
+  proc EnumPageFiles*(
+    pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKA, pContext: LPVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "psapi", importc: "EnumPageFilesA".}
+
+  proc GetProcessImageFileName*(
+    hProcess: HANDLE, lpImageFileName: LPSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "psapi", importc: "GetProcessImageFileNameA".}
+
 when winimCpu64:
-  type
-    PPSAPI_WORKING_SET_BLOCK* = ptr PSAPI_WORKING_SET_BLOCK
-  proc `Protection=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.Protection = x
-  proc Protection*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} = self.struct1.Protection
-  proc `ShareCount=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.ShareCount = x
-  proc ShareCount*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} = self.struct1.ShareCount
-  proc `Shared=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.Shared = x
-  proc Shared*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} = self.struct1.Shared
-  proc `Reserved=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.Reserved = x
-  proc Reserved*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} = self.struct1.Reserved
-  proc `VirtualPage=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.VirtualPage = x
-  proc VirtualPage*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} = self.struct1.VirtualPage
+  type PPSAPI_WORKING_SET_BLOCK* = ptr PSAPI_WORKING_SET_BLOCK
+  proc `Protection=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} =
+    self.struct1.Protection = x
+
+  proc Protection*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} =
+    self.struct1.Protection
+
+  proc `ShareCount=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} =
+    self.struct1.ShareCount = x
+
+  proc ShareCount*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} =
+    self.struct1.ShareCount
+
+  proc `Shared=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} =
+    self.struct1.Shared = x
+
+  proc Shared*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} =
+    self.struct1.Shared
+
+  proc `Reserved=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} =
+    self.struct1.Reserved = x
+
+  proc Reserved*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} =
+    self.struct1.Reserved
+
+  proc `VirtualPage=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} =
+    self.struct1.VirtualPage = x
+
+  proc VirtualPage*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} =
+    self.struct1.VirtualPage
+
 when winimCpu32:
-  type
-    PPSAPI_WORKING_SET_BLOCK* = ptr PSAPI_WORKING_SET_BLOCK
-  proc `Protection=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.Protection = x
-  proc Protection*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} = self.struct1.Protection
-  proc `ShareCount=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.ShareCount = x
-  proc ShareCount*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} = self.struct1.ShareCount
-  proc `Shared=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.Shared = x
-  proc Shared*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} = self.struct1.Shared
-  proc `Reserved=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.Reserved = x
-  proc Reserved*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} = self.struct1.Reserved
-  proc `VirtualPage=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} = self.struct1.VirtualPage = x
-  proc VirtualPage*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} = self.struct1.VirtualPage
+  type PPSAPI_WORKING_SET_BLOCK* = ptr PSAPI_WORKING_SET_BLOCK
+  proc `Protection=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} =
+    self.struct1.Protection = x
+
+  proc Protection*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} =
+    self.struct1.Protection
+
+  proc `ShareCount=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} =
+    self.struct1.ShareCount = x
+
+  proc ShareCount*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} =
+    self.struct1.ShareCount
+
+  proc `Shared=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} =
+    self.struct1.Shared = x
+
+  proc Shared*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} =
+    self.struct1.Shared
+
+  proc `Reserved=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} =
+    self.struct1.Reserved = x
+
+  proc Reserved*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} =
+    self.struct1.Reserved
+
+  proc `VirtualPage=`*(self: var PSAPI_WORKING_SET_BLOCK, x: ULONG_PTR) {.inline.} =
+    self.struct1.VirtualPage = x
+
+  proc VirtualPage*(self: PSAPI_WORKING_SET_BLOCK): ULONG_PTR {.inline.} =
+    self.struct1.VirtualPage
--- a/semicongine/thirdparty/winim/winim/inc/ras.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/ras.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -50,6 +50,7 @@
   CountedString* {.pure.} = object
     length*: UINT16
     string*: ptr WCHAR
+
   StringCorrelationId* = CountedString
   SystemHealthEntityCount* = UINT16
   EnforcementEntityCount* = UINT16
@@ -58,17 +59,21 @@
     `type`*: UINT16
     size*: UINT16
     value*: ptr BYTE
+
   SoH* {.pure.} = object
     count*: UINT16
     attributes*: ptr SoHAttribute
+
   SoHRequest* = SoH
   SoHResponse* = SoH
   NetworkSoH* {.pure.} = object
     size*: UINT16
     data*: ptr BYTE
+
   NetworkSoHRequest* = NetworkSoH
   NetworkSoHResponse* = NetworkSoH
   LPHRASCONN* = ptr HRASCONN
+
 const
   RAS_MaxEntryName* = 256
   RAS_MaxDeviceType* = 16
@@ -77,105 +82,107 @@
   RASCONNW* {.pure, packed.} = object
     dwSize*: DWORD
     hrasconn*: HRASCONN
-    szEntryName*: array[RAS_MaxEntryName + 1 , WCHAR]
-    szDeviceType*: array[RAS_MaxDeviceType + 1 , WCHAR]
-    szDeviceName*: array[RAS_MaxDeviceName + 1 , WCHAR]
-    szPhonebook*: array[MAX_PATH , WCHAR]
+    szEntryName*: array[RAS_MaxEntryName + 1, WCHAR]
+    szDeviceType*: array[RAS_MaxDeviceType + 1, WCHAR]
+    szDeviceName*: array[RAS_MaxDeviceName + 1, WCHAR]
+    szPhonebook*: array[MAX_PATH, WCHAR]
     padding*: array[2, byte]
     dwSubEntry*: DWORD
     guidEntry*: GUID
     dwFlags*: DWORD
     luid*: LUID
+
   LPRASCONNW* = ptr RASCONNW
   RASCONNA* {.pure, packed.} = object
     dwSize*: DWORD
     hrasconn*: HRASCONN
-    szEntryName*: array[RAS_MaxEntryName + 1 , CHAR]
-    szDeviceType*: array[RAS_MaxDeviceType + 1 , CHAR]
-    szDeviceName*: array[RAS_MaxDeviceName + 1 , CHAR]
-    szPhonebook*: array[MAX_PATH , CHAR]
+    szEntryName*: array[RAS_MaxEntryName + 1, CHAR]
+    szDeviceType*: array[RAS_MaxDeviceType + 1, CHAR]
+    szDeviceName*: array[RAS_MaxDeviceName + 1, CHAR]
+    szPhonebook*: array[MAX_PATH, CHAR]
     padding*: array[1, byte]
     dwSubEntry*: DWORD
     guidEntry*: GUID
     dwFlags*: DWORD
     luid*: LUID
+
   LPRASCONNA* = ptr RASCONNA
+
 when winimUnicode:
-  type
-    RASCONN* = RASCONNW
+  type RASCONN* = RASCONNW
 when winimAnsi:
-  type
-    RASCONN* = RASCONNA
+  type RASCONN* = RASCONNA
 type
   LPRASCONN* = ptr RASCONN
   LPRASCONNSTATE* = ptr RASCONNSTATE
-const
-  RAS_MaxPhoneNumber* = 128
+
+const RAS_MaxPhoneNumber* = 128
 type
   RASCONNSTATUSW* {.pure.} = object
     dwSize*: DWORD
     rasconnstate*: RASCONNSTATE
     dwError*: DWORD
-    szDeviceType*: array[RAS_MaxDeviceType + 1 , WCHAR]
-    szDeviceName*: array[RAS_MaxDeviceName + 1 , WCHAR]
-    szPhoneNumber*: array[RAS_MaxPhoneNumber + 1 , WCHAR]
+    szDeviceType*: array[RAS_MaxDeviceType + 1, WCHAR]
+    szDeviceName*: array[RAS_MaxDeviceName + 1, WCHAR]
+    szPhoneNumber*: array[RAS_MaxPhoneNumber + 1, WCHAR]
+
   LPRASCONNSTATUSW* = ptr RASCONNSTATUSW
   RASCONNSTATUSA* {.pure.} = object
     dwSize*: DWORD
     rasconnstate*: RASCONNSTATE
     dwError*: DWORD
-    szDeviceType*: array[RAS_MaxDeviceType + 1 , CHAR]
-    szDeviceName*: array[RAS_MaxDeviceName + 1 , CHAR]
-    szPhoneNumber*: array[RAS_MaxPhoneNumber + 1 , CHAR]
+    szDeviceType*: array[RAS_MaxDeviceType + 1, CHAR]
+    szDeviceName*: array[RAS_MaxDeviceName + 1, CHAR]
+    szPhoneNumber*: array[RAS_MaxPhoneNumber + 1, CHAR]
+
   LPRASCONNSTATUSA* = ptr RASCONNSTATUSA
+
 when winimUnicode:
-  type
-    RASCONNSTATUS* = RASCONNSTATUSW
+  type RASCONNSTATUS* = RASCONNSTATUSW
 when winimAnsi:
-  type
-    RASCONNSTATUS* = RASCONNSTATUSA
-type
-  LPRASCONNSTATUS* = ptr RASCONNSTATUS
-const
-  RAS_MaxCallbackNumber* = RAS_MaxPhoneNumber
+  type RASCONNSTATUS* = RASCONNSTATUSA
+type LPRASCONNSTATUS* = ptr RASCONNSTATUS
+const RAS_MaxCallbackNumber* = RAS_MaxPhoneNumber
 type
   RASDIALPARAMSW* {.pure, packed.} = object
     dwSize*: DWORD
-    szEntryName*: array[RAS_MaxEntryName + 1 , WCHAR]
-    szPhoneNumber*: array[RAS_MaxPhoneNumber + 1 , WCHAR]
-    szCallbackNumber*: array[RAS_MaxCallbackNumber + 1 , WCHAR]
-    szUserName*: array[UNLEN + 1 , WCHAR]
-    szPassword*: array[PWLEN + 1 , WCHAR]
-    szDomain*: array[DNLEN + 1 , WCHAR]
+    szEntryName*: array[RAS_MaxEntryName + 1, WCHAR]
+    szPhoneNumber*: array[RAS_MaxPhoneNumber + 1, WCHAR]
+    szCallbackNumber*: array[RAS_MaxCallbackNumber + 1, WCHAR]
+    szUserName*: array[UNLEN + 1, WCHAR]
+    szPassword*: array[PWLEN + 1, WCHAR]
+    szDomain*: array[DNLEN + 1, WCHAR]
     padding*: array[2, byte]
     dwSubEntry*: DWORD
     dwCallbackId*: ULONG_PTR
     dwIfIndex*: DWORD
+
   LPRASDIALPARAMSW* = ptr RASDIALPARAMSW
   RASDIALPARAMSA* {.pure, packed.} = object
     dwSize*: DWORD
-    szEntryName*: array[RAS_MaxEntryName + 1 , CHAR]
-    szPhoneNumber*: array[RAS_MaxPhoneNumber + 1 , CHAR]
-    szCallbackNumber*: array[RAS_MaxCallbackNumber + 1 , CHAR]
-    szUserName*: array[UNLEN + 1 , CHAR]
-    szPassword*: array[PWLEN + 1 , CHAR]
-    szDomain*: array[DNLEN + 1 , CHAR]
+    szEntryName*: array[RAS_MaxEntryName + 1, CHAR]
+    szPhoneNumber*: array[RAS_MaxPhoneNumber + 1, CHAR]
+    szCallbackNumber*: array[RAS_MaxCallbackNumber + 1, CHAR]
+    szUserName*: array[UNLEN + 1, CHAR]
+    szPassword*: array[PWLEN + 1, CHAR]
+    szDomain*: array[DNLEN + 1, CHAR]
     padding*: array[3, byte]
     dwSubEntry*: DWORD
     dwCallbackId*: ULONG_PTR
     dwIfIndex*: DWORD
+
   LPRASDIALPARAMSA* = ptr RASDIALPARAMSA
+
 when winimUnicode:
-  type
-    RASDIALPARAMS* = RASDIALPARAMSW
+  type RASDIALPARAMS* = RASDIALPARAMSW
 when winimAnsi:
-  type
-    RASDIALPARAMS* = RASDIALPARAMSA
+  type RASDIALPARAMS* = RASDIALPARAMSA
 type
   LPRASDIALPARAMS* = ptr RASDIALPARAMS
   RASEAPINFO* {.pure, packed.} = object
     dwSizeofEapInfo*: DWORD
     pbEapInfo*: ptr BYTE
+
   RASDIALEXTENSIONS* {.pure, packed.} = object
     dwSize*: DWORD
     dwfOptions*: DWORD
@@ -183,122 +190,122 @@
     reserved*: ULONG_PTR
     reserved1*: ULONG_PTR
     RasEapInfo*: RASEAPINFO
+
   LPRASDIALEXTENSIONS* = ptr RASDIALEXTENSIONS
   RASENTRYNAMEW* {.pure.} = object
     dwSize*: DWORD
-    szEntryName*: array[RAS_MaxEntryName + 1 , WCHAR]
+    szEntryName*: array[RAS_MaxEntryName + 1, WCHAR]
     dwFlags*: DWORD
     szPhonebookPath*: array[MAX_PATH + 1, WCHAR]
+
   LPRASENTRYNAMEW* = ptr RASENTRYNAMEW
   RASENTRYNAMEA* {.pure.} = object
     dwSize*: DWORD
-    szEntryName*: array[RAS_MaxEntryName + 1 , CHAR]
+    szEntryName*: array[RAS_MaxEntryName + 1, CHAR]
     dwFlags*: DWORD
     szPhonebookPath*: array[MAX_PATH + 1, CHAR]
+
   LPRASENTRYNAMEA* = ptr RASENTRYNAMEA
+
 when winimUnicode:
-  type
-    RASENTRYNAME* = RASENTRYNAMEW
+  type RASENTRYNAME* = RASENTRYNAMEW
 when winimAnsi:
-  type
-    RASENTRYNAME* = RASENTRYNAMEA
+  type RASENTRYNAME* = RASENTRYNAMEA
 type
   LPRASENTRYNAME* = ptr RASENTRYNAME
   LPRASPROJECTION* = ptr RASPROJECTION
   RASAMBW* {.pure.} = object
     dwSize*: DWORD
     dwError*: DWORD
-    szNetBiosError*: array[NETBIOS_NAME_LEN + 1 , WCHAR]
+    szNetBiosError*: array[NETBIOS_NAME_LEN + 1, WCHAR]
     bLana*: BYTE
+
   LPRASAMBW* = ptr RASAMBW
   RASAMBA* {.pure.} = object
     dwSize*: DWORD
     dwError*: DWORD
-    szNetBiosError*: array[NETBIOS_NAME_LEN + 1 , CHAR]
+    szNetBiosError*: array[NETBIOS_NAME_LEN + 1, CHAR]
     bLana*: BYTE
+
   LPRASAMBA* = ptr RASAMBA
+
 when winimUnicode:
-  type
-    RASAMB* = RASAMBW
+  type RASAMB* = RASAMBW
 when winimAnsi:
-  type
-    RASAMB* = RASAMBA
+  type RASAMB* = RASAMBA
 type
   LPRASAMB* = ptr RASAMB
   RASPPPNBFW* {.pure.} = object
     dwSize*: DWORD
     dwError*: DWORD
     dwNetBiosError*: DWORD
-    szNetBiosError*: array[NETBIOS_NAME_LEN + 1 , WCHAR]
-    szWorkstationName*: array[NETBIOS_NAME_LEN + 1 , WCHAR]
+    szNetBiosError*: array[NETBIOS_NAME_LEN + 1, WCHAR]
+    szWorkstationName*: array[NETBIOS_NAME_LEN + 1, WCHAR]
     bLana*: BYTE
+
   LPRASPPPNBFW* = ptr RASPPPNBFW
   RASPPPNBFA* {.pure.} = object
     dwSize*: DWORD
     dwError*: DWORD
     dwNetBiosError*: DWORD
-    szNetBiosError*: array[NETBIOS_NAME_LEN + 1 , CHAR]
-    szWorkstationName*: array[NETBIOS_NAME_LEN + 1 , CHAR]
+    szNetBiosError*: array[NETBIOS_NAME_LEN + 1, CHAR]
+    szWorkstationName*: array[NETBIOS_NAME_LEN + 1, CHAR]
     bLana*: BYTE
+
   LPRASPPPNBFA* = ptr RASPPPNBFA
+
 when winimUnicode:
-  type
-    RASPPPNBF* = RASPPPNBFW
+  type RASPPPNBF* = RASPPPNBFW
 when winimAnsi:
-  type
-    RASPPPNBF* = RASPPPNBFA
-type
-  LPRASPPPNBF* = ptr RASPPPNBF
-const
-  RAS_MaxIpxAddress* = 21
+  type RASPPPNBF* = RASPPPNBFA
+type LPRASPPPNBF* = ptr RASPPPNBF
+const RAS_MaxIpxAddress* = 21
 type
   RASPPPIPXW* {.pure.} = object
     dwSize*: DWORD
     dwError*: DWORD
-    szIpxAddress*: array[RAS_MaxIpxAddress + 1 , WCHAR]
+    szIpxAddress*: array[RAS_MaxIpxAddress + 1, WCHAR]
+
   LPRASPPPIPXW* = ptr RASPPPIPXW
   RASPPPIPXA* {.pure.} = object
     dwSize*: DWORD
     dwError*: DWORD
-    szIpxAddress*: array[RAS_MaxIpxAddress + 1 , CHAR]
+    szIpxAddress*: array[RAS_MaxIpxAddress + 1, CHAR]
+
   LPRASPPPIPXA* = ptr RASPPPIPXA
+
 when winimUnicode:
-  type
-    RASPPPIPX* = RASPPPIPXW
+  type RASPPPIPX* = RASPPPIPXW
 when winimAnsi:
-  type
-    RASPPPIPX* = RASPPPIPXA
-type
-  LPRASPPPIPX* = ptr RASPPPIPX
-const
-  RAS_MaxIpAddress* = 15
+  type RASPPPIPX* = RASPPPIPXA
+type LPRASPPPIPX* = ptr RASPPPIPX
+const RAS_MaxIpAddress* = 15
 type
   RASPPPIPW* {.pure.} = object
     dwSize*: DWORD
     dwError*: DWORD
-    szIpAddress*: array[RAS_MaxIpAddress + 1 , WCHAR]
-    szServerIpAddress*: array[RAS_MaxIpAddress + 1 , WCHAR]
+    szIpAddress*: array[RAS_MaxIpAddress + 1, WCHAR]
+    szServerIpAddress*: array[RAS_MaxIpAddress + 1, WCHAR]
     dwOptions*: DWORD
     dwServerOptions*: DWORD
+
   LPRASPPPIPW* = ptr RASPPPIPW
   RASPPPIPA* {.pure.} = object
     dwSize*: DWORD
     dwError*: DWORD
-    szIpAddress*: array[RAS_MaxIpAddress + 1 , CHAR]
-    szServerIpAddress*: array[RAS_MaxIpAddress + 1 , CHAR]
+    szIpAddress*: array[RAS_MaxIpAddress + 1, CHAR]
+    szServerIpAddress*: array[RAS_MaxIpAddress + 1, CHAR]
     dwOptions*: DWORD
     dwServerOptions*: DWORD
+
   LPRASPPPIPA* = ptr RASPPPIPA
+
 when winimUnicode:
-  type
-    RASPPPIP* = RASPPPIPW
+  type RASPPPIP* = RASPPPIPW
 when winimAnsi:
-  type
-    RASPPPIP* = RASPPPIPA
-type
-  LPRASPPPIP* = ptr RASPPPIP
-const
-  RAS_MaxReplyMessage* = 1024
+  type RASPPPIP* = RASPPPIPA
+type LPRASPPPIP* = ptr RASPPPIP
+const RAS_MaxReplyMessage* = 1024
 type
   RASPPPLCPW* {.pure.} = object
     dwSize*: DWORD
@@ -316,6 +323,7 @@
     szReplyMessage*: array[RAS_MaxReplyMessage, WCHAR]
     dwOptions*: DWORD
     dwServerOptions*: DWORD
+
   LPRASPPPLCPW* = ptr RASPPPLCPW
   RASPPPLCPA* {.pure.} = object
     dwSize*: DWORD
@@ -333,31 +341,32 @@
     szReplyMessage*: array[RAS_MaxReplyMessage, CHAR]
     dwOptions*: DWORD
     dwServerOptions*: DWORD
+
   LPRASPPPLCPA* = ptr RASPPPLCPA
+
 when winimUnicode:
-  type
-    RASPPPLCP* = RASPPPLCPW
+  type RASPPPLCP* = RASPPPLCPW
 when winimAnsi:
-  type
-    RASPPPLCP* = RASPPPLCPA
+  type RASPPPLCP* = RASPPPLCPA
 type
   LPRASPPPLCP* = ptr RASPPPLCP
   RASSLIPW* {.pure.} = object
     dwSize*: DWORD
     dwError*: DWORD
-    szIpAddress*: array[RAS_MaxIpAddress + 1 , WCHAR]
+    szIpAddress*: array[RAS_MaxIpAddress + 1, WCHAR]
+
   LPRASSLIPW* = ptr RASSLIPW
   RASSLIPA* {.pure.} = object
     dwSize*: DWORD
     dwError*: DWORD
-    szIpAddress*: array[RAS_MaxIpAddress + 1 , CHAR]
+    szIpAddress*: array[RAS_MaxIpAddress + 1, CHAR]
+
   LPRASSLIPA* = ptr RASSLIPA
+
 when winimUnicode:
-  type
-    RASSLIP* = RASSLIPW
+  type RASSLIP* = RASSLIPW
 when winimAnsi:
-  type
-    RASSLIP* = RASSLIPA
+  type RASSLIP* = RASSLIPA
 type
   LPRASSLIP* = ptr RASSLIP
   RASPPPCCP* {.pure.} = object
@@ -367,23 +376,25 @@
     dwOptions*: DWORD
     dwServerCompressionAlgorithm*: DWORD
     dwServerOptions*: DWORD
+
   LPRASPPPCCP* = ptr RASPPPCCP
   RASDEVINFOW* {.pure.} = object
     dwSize*: DWORD
-    szDeviceType*: array[RAS_MaxDeviceType + 1 , WCHAR]
-    szDeviceName*: array[RAS_MaxDeviceName + 1 , WCHAR]
+    szDeviceType*: array[RAS_MaxDeviceType + 1, WCHAR]
+    szDeviceName*: array[RAS_MaxDeviceName + 1, WCHAR]
+
   LPRASDEVINFOW* = ptr RASDEVINFOW
   RASDEVINFOA* {.pure.} = object
     dwSize*: DWORD
-    szDeviceType*: array[RAS_MaxDeviceType + 1 , CHAR]
-    szDeviceName*: array[RAS_MaxDeviceName + 1 , CHAR]
+    szDeviceType*: array[RAS_MaxDeviceType + 1, CHAR]
+    szDeviceName*: array[RAS_MaxDeviceName + 1, CHAR]
+
   LPRASDEVINFOA* = ptr RASDEVINFOA
+
 when winimUnicode:
-  type
-    RASDEVINFO* = RASDEVINFOW
+  type RASDEVINFO* = RASDEVINFOW
 when winimAnsi:
-  type
-    RASDEVINFO* = RASDEVINFOA
+  type RASDEVINFO* = RASDEVINFOA
 type
   LPRASDEVINFO* = ptr RASDEVINFO
   RASCTRYINFO* {.pure.} = object
@@ -392,19 +403,20 @@
     dwNextCountryID*: DWORD
     dwCountryCode*: DWORD
     dwCountryNameOffset*: DWORD
+
   RASCTRYINFOW* = RASCTRYINFO
   RASCTRYINFOA* = RASCTRYINFO
   LPRASCTRYINFOW* = ptr RASCTRYINFOW
   LPRASCTRYINFOA* = ptr RASCTRYINFOW
   LPRASCTRYINFO* = ptr RASCTRYINFO
-const
-  RAS_MaxAreaCode* = 10
-type
-  RASIPADDR* {.pure.} = object
-    a*: BYTE
-    b*: BYTE
-    c*: BYTE
-    d*: BYTE
+
+const RAS_MaxAreaCode* = 10
+type RASIPADDR* {.pure.} = object
+  a*: BYTE
+  b*: BYTE
+  c*: BYTE
+  d*: BYTE
+
 const
   RAS_MaxPadType* = 32
   RAS_MaxX25Address* = 200
@@ -417,8 +429,8 @@
     dwfOptions*: DWORD
     dwCountryID*: DWORD
     dwCountryCode*: DWORD
-    szAreaCode*: array[RAS_MaxAreaCode + 1 , WCHAR]
-    szLocalPhoneNumber*: array[RAS_MaxPhoneNumber + 1 , WCHAR]
+    szAreaCode*: array[RAS_MaxAreaCode + 1, WCHAR]
+    szLocalPhoneNumber*: array[RAS_MaxPhoneNumber + 1, WCHAR]
     dwAlternateOffset*: DWORD
     ipaddr*: RASIPADDR
     ipaddrDns*: RASIPADDR
@@ -428,15 +440,15 @@
     dwFrameSize*: DWORD
     dwfNetProtocols*: DWORD
     dwFramingProtocol*: DWORD
-    szScript*: array[MAX_PATH , WCHAR]
-    szAutodialDll*: array[MAX_PATH , WCHAR]
-    szAutodialFunc*: array[MAX_PATH , WCHAR]
-    szDeviceType*: array[RAS_MaxDeviceType + 1 , WCHAR]
-    szDeviceName*: array[RAS_MaxDeviceName + 1 , WCHAR]
-    szX25PadType*: array[RAS_MaxPadType + 1 , WCHAR]
-    szX25Address*: array[RAS_MaxX25Address + 1 , WCHAR]
-    szX25Facilities*: array[RAS_MaxFacilities + 1 , WCHAR]
-    szX25UserData*: array[RAS_MaxUserData + 1 , WCHAR]
+    szScript*: array[MAX_PATH, WCHAR]
+    szAutodialDll*: array[MAX_PATH, WCHAR]
+    szAutodialFunc*: array[MAX_PATH, WCHAR]
+    szDeviceType*: array[RAS_MaxDeviceType + 1, WCHAR]
+    szDeviceName*: array[RAS_MaxDeviceName + 1, WCHAR]
+    szX25PadType*: array[RAS_MaxPadType + 1, WCHAR]
+    szX25Address*: array[RAS_MaxX25Address + 1, WCHAR]
+    szX25Facilities*: array[RAS_MaxFacilities + 1, WCHAR]
+    szX25UserData*: array[RAS_MaxUserData + 1, WCHAR]
     dwChannels*: DWORD
     dwReserved1*: DWORD
     dwReserved2*: DWORD
@@ -461,14 +473,15 @@
     szPrerequisiteEntry*: array[RAS_MaxEntryName + 1, WCHAR]
     dwRedialCount*: DWORD
     dwRedialPause*: DWORD
+
   LPRASENTRYW* = ptr RASENTRYW
   RASENTRYA* {.pure.} = object
     dwSize*: DWORD
     dwfOptions*: DWORD
     dwCountryID*: DWORD
     dwCountryCode*: DWORD
-    szAreaCode*: array[RAS_MaxAreaCode + 1 , CHAR]
-    szLocalPhoneNumber*: array[RAS_MaxPhoneNumber + 1 , CHAR]
+    szAreaCode*: array[RAS_MaxAreaCode + 1, CHAR]
+    szLocalPhoneNumber*: array[RAS_MaxPhoneNumber + 1, CHAR]
     dwAlternateOffset*: DWORD
     ipaddr*: RASIPADDR
     ipaddrDns*: RASIPADDR
@@ -478,15 +491,15 @@
     dwFrameSize*: DWORD
     dwfNetProtocols*: DWORD
     dwFramingProtocol*: DWORD
-    szScript*: array[MAX_PATH , CHAR]
-    szAutodialDll*: array[MAX_PATH , CHAR]
-    szAutodialFunc*: array[MAX_PATH , CHAR]
-    szDeviceType*: array[RAS_MaxDeviceType + 1 , CHAR]
-    szDeviceName*: array[RAS_MaxDeviceName + 1 , CHAR]
-    szX25PadType*: array[RAS_MaxPadType + 1 , CHAR]
-    szX25Address*: array[RAS_MaxX25Address + 1 , CHAR]
-    szX25Facilities*: array[RAS_MaxFacilities + 1 , CHAR]
-    szX25UserData*: array[RAS_MaxUserData + 1 , CHAR]
+    szScript*: array[MAX_PATH, CHAR]
+    szAutodialDll*: array[MAX_PATH, CHAR]
+    szAutodialFunc*: array[MAX_PATH, CHAR]
+    szDeviceType*: array[RAS_MaxDeviceType + 1, CHAR]
+    szDeviceName*: array[RAS_MaxDeviceName + 1, CHAR]
+    szX25PadType*: array[RAS_MaxPadType + 1, CHAR]
+    szX25Address*: array[RAS_MaxX25Address + 1, CHAR]
+    szX25Facilities*: array[RAS_MaxFacilities + 1, CHAR]
+    szX25UserData*: array[RAS_MaxUserData + 1, CHAR]
     dwChannels*: DWORD
     dwReserved1*: DWORD
     dwReserved2*: DWORD
@@ -511,13 +524,13 @@
     szPrerequisiteEntry*: array[RAS_MaxEntryName + 1, CHAR]
     dwRedialCount*: DWORD
     dwRedialPause*: DWORD
+
   LPRASENTRYA* = ptr RASENTRYA
+
 when winimUnicode:
-  type
-    RASENTRY* = RASENTRYW
+  type RASENTRY* = RASENTRYW
 when winimAnsi:
-  type
-    RASENTRY* = RASENTRYA
+  type RASENTRY* = RASENTRYA
 type
   LPRASENTRY* = ptr RASENTRY
   RASADPARAMS* {.pure, packed.} = object
@@ -526,51 +539,54 @@
     dwFlags*: DWORD
     xDlg*: LONG
     yDlg*: LONG
+
   LPRASADPARAMS* = ptr RASADPARAMS
   RASSUBENTRYW* {.pure.} = object
     dwSize*: DWORD
     dwfFlags*: DWORD
-    szDeviceType*: array[RAS_MaxDeviceType + 1 , WCHAR]
-    szDeviceName*: array[RAS_MaxDeviceName + 1 , WCHAR]
-    szLocalPhoneNumber*: array[RAS_MaxPhoneNumber + 1 , WCHAR]
+    szDeviceType*: array[RAS_MaxDeviceType + 1, WCHAR]
+    szDeviceName*: array[RAS_MaxDeviceName + 1, WCHAR]
+    szLocalPhoneNumber*: array[RAS_MaxPhoneNumber + 1, WCHAR]
     dwAlternateOffset*: DWORD
+
   LPRASSUBENTRYW* = ptr RASSUBENTRYW
   RASSUBENTRYA* {.pure.} = object
     dwSize*: DWORD
     dwfFlags*: DWORD
-    szDeviceType*: array[RAS_MaxDeviceType + 1 , CHAR]
-    szDeviceName*: array[RAS_MaxDeviceName + 1 , CHAR]
-    szLocalPhoneNumber*: array[RAS_MaxPhoneNumber + 1 , CHAR]
+    szDeviceType*: array[RAS_MaxDeviceType + 1, CHAR]
+    szDeviceName*: array[RAS_MaxDeviceName + 1, CHAR]
+    szLocalPhoneNumber*: array[RAS_MaxPhoneNumber + 1, CHAR]
     dwAlternateOffset*: DWORD
+
   LPRASSUBENTRYA* = ptr RASSUBENTRYA
+
 when winimUnicode:
-  type
-    RASSUBENTRY* = RASSUBENTRYW
+  type RASSUBENTRY* = RASSUBENTRYW
 when winimAnsi:
-  type
-    RASSUBENTRY* = RASSUBENTRYA
+  type RASSUBENTRY* = RASSUBENTRYA
 type
   LPRASSUBENTRY* = ptr RASSUBENTRY
   RASCREDENTIALSW* {.pure.} = object
     dwSize*: DWORD
     dwMask*: DWORD
-    szUserName*: array[UNLEN + 1 , WCHAR]
-    szPassword*: array[PWLEN + 1 , WCHAR]
-    szDomain*: array[DNLEN + 1 , WCHAR]
+    szUserName*: array[UNLEN + 1, WCHAR]
+    szPassword*: array[PWLEN + 1, WCHAR]
+    szDomain*: array[DNLEN + 1, WCHAR]
+
   LPRASCREDENTIALSW* = ptr RASCREDENTIALSW
   RASCREDENTIALSA* {.pure.} = object
     dwSize*: DWORD
     dwMask*: DWORD
-    szUserName*: array[UNLEN + 1 , CHAR]
-    szPassword*: array[PWLEN + 1 , CHAR]
-    szDomain*: array[DNLEN + 1 , CHAR]
+    szUserName*: array[UNLEN + 1, CHAR]
+    szPassword*: array[PWLEN + 1, CHAR]
+    szDomain*: array[DNLEN + 1, CHAR]
+
   LPRASCREDENTIALSA* = ptr RASCREDENTIALSA
+
 when winimUnicode:
-  type
-    RASCREDENTIALS* = RASCREDENTIALSW
+  type RASCREDENTIALS* = RASCREDENTIALSW
 when winimAnsi:
-  type
-    RASCREDENTIALS* = RASCREDENTIALSA
+  type RASCREDENTIALS* = RASCREDENTIALSA
 type
   LPRASCREDENTIALS* = ptr RASCREDENTIALS
   RASAUTODIALENTRYW* {.pure.} = object
@@ -578,30 +594,33 @@
     dwFlags*: DWORD
     dwDialingLocation*: DWORD
     szEntry*: array[RAS_MaxEntryName + 1, WCHAR]
+
   LPRASAUTODIALENTRYW* = ptr RASAUTODIALENTRYW
   RASAUTODIALENTRYA* {.pure.} = object
     dwSize*: DWORD
     dwFlags*: DWORD
     dwDialingLocation*: DWORD
     szEntry*: array[RAS_MaxEntryName + 1, CHAR]
+
   LPRASAUTODIALENTRYA* = ptr RASAUTODIALENTRYA
+
 when winimUnicode:
-  type
-    RASAUTODIALENTRY* = RASAUTODIALENTRYW
+  type RASAUTODIALENTRY* = RASAUTODIALENTRYW
 when winimAnsi:
-  type
-    RASAUTODIALENTRY* = RASAUTODIALENTRYA
+  type RASAUTODIALENTRY* = RASAUTODIALENTRYA
 type
   LPRASAUTODIALENTRY* = ptr RASAUTODIALENTRY
   RASEAPUSERIDENTITYW* {.pure.} = object
-    szUserName*: array[UNLEN + 1 , WCHAR]
+    szUserName*: array[UNLEN + 1, WCHAR]
     dwSizeofEapInfo*: DWORD
-    pbEapInfo*: array[1 , BYTE]
+    pbEapInfo*: array[1, BYTE]
+
   LPRASEAPUSERIDENTITYW* = ptr RASEAPUSERIDENTITYW
   RASEAPUSERIDENTITYA* {.pure.} = object
-    szUserName*: array[UNLEN + 1 , CHAR]
+    szUserName*: array[UNLEN + 1, CHAR]
     dwSizeofEapInfo*: DWORD
-    pbEapInfo*: array[1 , BYTE]
+    pbEapInfo*: array[1, BYTE]
+
   LPRASEAPUSERIDENTITYA* = ptr RASEAPUSERIDENTITYA
   RAS_STATS* {.pure.} = object
     dwSize*: DWORD
@@ -619,12 +638,14 @@
     dwCompressionRatioOut*: DWORD
     dwBps*: DWORD
     dwConnectDuration*: DWORD
+
   PRAS_STATS* = ptr RAS_STATS
   RASNAPSTATE* {.pure.} = object
     dwSize*: DWORD
     dwFlags*: DWORD
     isolationState*: IsolationState
     probationTime*: ProbationTime
+
   LPRASNAPSTATE* = ptr RASNAPSTATE
   RASPPPIPV6* {.pure.} = object
     dwSize*: DWORD
@@ -633,15 +654,18 @@
     bPeerInterfaceIdentifier*: array[8, BYTE]
     bLocalCompressionProtocol*: array[2, BYTE]
     bPeerCompressionProtocol*: array[2, BYTE]
+
   LPRASPPPIPV6* = ptr RASPPPIPV6
   RASIPV4ADDR* = IN_ADDR
   RASIPV6ADDR* = IN6_ADDR
   RASTUNNELENDPOINT_UNION1* {.pure, union.} = object
     ipv4*: RASIPV4ADDR
     ipv6*: RASIPV6ADDR
+
   RASTUNNELENDPOINT* {.pure.} = object
     dwType*: DWORD
     union1*: RASTUNNELENDPOINT_UNION1
+
   PRASTUNNELENDPOINT* = ptr RASTUNNELENDPOINT
   RASUPDATECONN* {.pure.} = object
     version*: RASAPIVERSION
@@ -650,6 +674,7 @@
     dwIfIndex*: DWORD
     localEndPoint*: RASTUNNELENDPOINT
     remoteEndPoint*: RASTUNNELENDPOINT
+
   LPRASUPDATECONN* = ptr RASUPDATECONN
   RASNOUSERW* {.pure.} = object
     dwSize*: DWORD
@@ -658,6 +683,7 @@
     szUserName*: array[UNLEN + 1, WCHAR]
     szPassword*: array[PWLEN + 1, WCHAR]
     szDomain*: array[DNLEN + 1, WCHAR]
+
   LPRASNOUSERW* = ptr RASNOUSERW
   RASNOUSERA* {.pure.} = object
     dwSize*: DWORD
@@ -666,16 +692,17 @@
     szUserName*: array[UNLEN + 1, CHAR]
     szPassword*: array[PWLEN + 1, CHAR]
     szDomain*: array[DNLEN + 1, CHAR]
+
   LPRASNOUSERA* = ptr RASNOUSERA
+
 when winimUnicode:
-  type
-    RASNOUSER* = RASNOUSERW
+  type RASNOUSER* = RASNOUSERW
 when winimAnsi:
-  type
-    RASNOUSER* = RASNOUSERA
+  type RASNOUSER* = RASNOUSERA
 type
   LPRASNOUSER* = ptr RASNOUSER
-  RASPBDLGFUNCW* = proc (P1: ULONG_PTR, P2: DWORD, P3: LPWSTR, P4: LPVOID): VOID {.stdcall.}
+  RASPBDLGFUNCW* =
+    proc(P1: ULONG_PTR, P2: DWORD, P3: LPWSTR, P4: LPVOID): VOID {.stdcall.}
   RASPBDLGW* {.pure, packed.} = object
     dwSize*: DWORD
     hwndOwner*: HWND
@@ -687,8 +714,10 @@
     dwError*: DWORD
     reserved*: ULONG_PTR
     reserved2*: ULONG_PTR
+
   LPRASPBDLGW* = ptr RASPBDLGW
-  RASPBDLGFUNCA* = proc (P1: ULONG_PTR, P2: DWORD, P3: LPSTR, P4: LPVOID): VOID {.stdcall.}
+  RASPBDLGFUNCA* =
+    proc(P1: ULONG_PTR, P2: DWORD, P3: LPSTR, P4: LPVOID): VOID {.stdcall.}
   RASPBDLGA* {.pure, packed.} = object
     dwSize*: DWORD
     hwndOwner*: HWND
@@ -700,13 +729,13 @@
     dwError*: DWORD
     reserved*: ULONG_PTR
     reserved2*: ULONG_PTR
+
   LPRASPBDLGA* = ptr RASPBDLGA
+
 when winimUnicode:
-  type
-    RASPBDLG* = RASPBDLGW
+  type RASPBDLG* = RASPBDLGW
 when winimAnsi:
-  type
-    RASPBDLG* = RASPBDLGA
+  type RASPBDLG* = RASPBDLGA
 type
   LPRASPBDLG* = ptr RASPBDLG
   TRASENTRYDLGW* {.pure, packed.} = object
@@ -720,6 +749,7 @@
     dwError*: DWORD
     reserved*: ULONG_PTR
     reserved2*: ULONG_PTR
+
   LPRASENTRYDLGW* = ptr TRASENTRYDLGW
   TRASENTRYDLGA* {.pure, packed.} = object
     dwSize*: DWORD
@@ -732,13 +762,13 @@
     dwError*: DWORD
     reserved*: ULONG_PTR
     reserved2*: ULONG_PTR
+
   LPRASENTRYDLGA* = ptr TRASENTRYDLGA
+
 when winimUnicode:
-  type
-    TRASENTRYDLG* = TRASENTRYDLGW
+  type TRASENTRYDLG* = TRASENTRYDLGW
 when winimAnsi:
-  type
-    TRASENTRYDLG* = TRASENTRYDLGA
+  type TRASENTRYDLG* = TRASENTRYDLGA
 type
   LPRASENTRYDLG* = ptr TRASENTRYDLG
   TRASDIALDLG* {.pure, packed.} = object
@@ -751,17 +781,20 @@
     dwError*: DWORD
     reserved*: ULONG_PTR
     reserved2*: ULONG_PTR
+
   LPRASDIALDLG* = ptr TRASDIALDLG
   RAS_AUTH_ATTRIBUTE* {.pure.} = object
     raaType*: RAS_AUTH_ATTRIBUTE_TYPE
     dwLength*: DWORD
     Value*: PVOID
+
   PRAS_AUTH_ATTRIBUTE* = ptr RAS_AUTH_ATTRIBUTE
   PPP_EAP_PACKET* {.pure.} = object
     Code*: BYTE
     Id*: BYTE
     Length*: array[2, BYTE]
     Data*: array[1, BYTE]
+
   PPPP_EAP_PACKET* = ptr PPP_EAP_PACKET
   PPP_EAP_INPUT* {.pure.} = object
     dwSizeInBytes*: DWORD
@@ -783,6 +816,7 @@
     pUserData*: PBYTE
     dwSizeOfUserData*: DWORD
     hReserved*: HANDLE
+
   PPPP_EAP_INPUT* = ptr PPP_EAP_INPUT
   PPP_EAP_OUTPUT* {.pure.} = object
     dwSizeInBytes*: DWORD
@@ -798,22 +832,35 @@
     fSaveUserData*: WINBOOL
     pUserData*: PBYTE
     dwSizeOfUserData*: DWORD
+
   PPPP_EAP_OUTPUT* = ptr PPP_EAP_OUTPUT
   PPP_EAP_INFO* {.pure.} = object
     dwSizeInBytes*: DWORD
     dwEapTypeId*: DWORD
     RasEapInitialize*: proc(fInitialize: WINBOOL): DWORD {.stdcall.}
-    RasEapBegin*: proc(ppWorkBuffer: ptr pointer, pPppEapInput: ptr PPP_EAP_INPUT): DWORD {.stdcall.}
+    RasEapBegin*: proc(
+      ppWorkBuffer: ptr pointer, pPppEapInput: ptr PPP_EAP_INPUT
+    ): DWORD {.stdcall.}
     RasEapEnd*: proc(pWorkBuffer: pointer): DWORD {.stdcall.}
-    RasEapMakeMessage*: proc(pWorkBuf: pointer, pReceivePacket: ptr PPP_EAP_PACKET, pSendPacket: ptr PPP_EAP_PACKET, cbSendPacket: DWORD, pEapOutput: ptr PPP_EAP_OUTPUT, pEapInput: ptr PPP_EAP_INPUT): DWORD {.stdcall.}
+    RasEapMakeMessage*: proc(
+      pWorkBuf: pointer,
+      pReceivePacket: ptr PPP_EAP_PACKET,
+      pSendPacket: ptr PPP_EAP_PACKET,
+      cbSendPacket: DWORD,
+      pEapOutput: ptr PPP_EAP_OUTPUT,
+      pEapInput: ptr PPP_EAP_INPUT,
+    ): DWORD {.stdcall.}
+
   PPPP_EAP_INFO* = ptr PPP_EAP_INFO
-const
-  MAX_PHONE_NUMBER_LEN* = 128
+
+const MAX_PHONE_NUMBER_LEN* = 128
 type
   RAS_USER_0* {.pure.} = object
     bfPrivilege*: BYTE
     wszPhoneNumber*: array[MAX_PHONE_NUMBER_LEN + 1, WCHAR]
+
   PRAS_USER_0* = ptr RAS_USER_0
+
 const
   MAX_PORT_NAME* = 16
   MAX_MEDIA_NAME* = 16
@@ -826,10 +873,11 @@
     dwPortCondition*: RAS_PORT_CONDITION
     dwTotalNumberOfCalls*: DWORD
     dwConnectDuration*: DWORD
-    wszPortName*: array[MAX_PORT_NAME + 1 , WCHAR]
-    wszMediaName*: array[MAX_MEDIA_NAME + 1 , WCHAR]
-    wszDeviceName*: array[MAX_DEVICE_NAME + 1 , WCHAR]
-    wszDeviceType*: array[MAX_DEVICETYPE_NAME + 1 , WCHAR]
+    wszPortName*: array[MAX_PORT_NAME + 1, WCHAR]
+    wszMediaName*: array[MAX_MEDIA_NAME + 1, WCHAR]
+    wszDeviceName*: array[MAX_DEVICE_NAME + 1, WCHAR]
+    wszDeviceType*: array[MAX_DEVICETYPE_NAME + 1, WCHAR]
+
   PRAS_PORT_0* = ptr RAS_PORT_0
   RAS_PORT_1* {.pure.} = object
     hPort*: HANDLE
@@ -848,6 +896,7 @@
     dwBufferOverrunErr*: DWORD
     dwCompressionRatioIn*: DWORD
     dwCompressionRatioOut*: DWORD
+
   PRAS_PORT_1* = ptr RAS_PORT_1
   RAS_PORT_STATISTICS* {.pure.} = object
     dwBytesXmited*: DWORD
@@ -878,30 +927,34 @@
     dwPortBytesRcvedUncompressed*: DWORD
     dwPortBytesXmitedCompressed*: DWORD
     dwPortBytesRcvedCompressed*: DWORD
+
   PRAS_PORT_STATISTICS* = ptr RAS_PORT_STATISTICS
   RAS_SERVER_0* {.pure.} = object
     TotalPorts*: WORD
     PortsInUse*: WORD
     RasVersion*: DWORD
+
   PRAS_SERVER_0* = ptr RAS_SERVER_0
-const
-  MAX_INTERFACE_NAME_LEN* = 256
+
+const MAX_INTERFACE_NAME_LEN* = 256
 type
   MPR_INTERFACE_0* {.pure.} = object
-    wszInterfaceName*: array[MAX_INTERFACE_NAME_LEN+1, WCHAR]
+    wszInterfaceName*: array[MAX_INTERFACE_NAME_LEN + 1, WCHAR]
     hInterface*: HANDLE
     fEnabled*: WINBOOL
     dwIfType*: ROUTER_INTERFACE_TYPE
     dwConnectionState*: ROUTER_CONNECTION_STATE
     fUnReachabilityReasons*: DWORD
     dwLastError*: DWORD
+
   PMPR_INTERFACE_0* = ptr MPR_INTERFACE_0
   MPR_IPINIP_INTERFACE_0* {.pure.} = object
-    wszFriendlyName*: array[MAX_INTERFACE_NAME_LEN+1, WCHAR]
+    wszFriendlyName*: array[MAX_INTERFACE_NAME_LEN + 1, WCHAR]
     Guid*: GUID
+
   PMPR_IPINIP_INTERFACE_0* = ptr MPR_IPINIP_INTERFACE_0
   MPR_INTERFACE_1* {.pure.} = object
-    wszInterfaceName*: array[MAX_INTERFACE_NAME_LEN+1, WCHAR]
+    wszInterfaceName*: array[MAX_INTERFACE_NAME_LEN + 1, WCHAR]
     hInterface*: HANDLE
     fEnabled*: WINBOOL
     dwIfType*: ROUTER_INTERFACE_TYPE
@@ -909,7 +962,9 @@
     fUnReachabilityReasons*: DWORD
     dwLastError*: DWORD
     lpwsDialoutHoursRestriction*: LPWSTR
+
   PMPR_INTERFACE_1* = ptr MPR_INTERFACE_1
+
 const
   MPR_MaxDeviceType* = RAS_MaxDeviceType
   MPR_MaxDeviceName* = RAS_MaxDeviceName
@@ -919,7 +974,7 @@
   MPR_MaxUserData* = RAS_MaxUserData
 type
   MPR_INTERFACE_2* {.pure.} = object
-    wszInterfaceName*: array[MAX_INTERFACE_NAME_LEN+1, WCHAR]
+    wszInterfaceName*: array[MAX_INTERFACE_NAME_LEN + 1, WCHAR]
     hInterface*: HANDLE
     fEnabled*: WINBOOL
     dwIfType*: ROUTER_INTERFACE_TYPE
@@ -927,7 +982,7 @@
     fUnReachabilityReasons*: DWORD
     dwLastError*: DWORD
     dwfOptions*: DWORD
-    szLocalPhoneNumber*: array[RAS_MaxPhoneNumber + 1 , WCHAR]
+    szLocalPhoneNumber*: array[RAS_MaxPhoneNumber + 1, WCHAR]
     szAlternates*: PWCHAR
     ipaddr*: DWORD
     ipaddrDns*: DWORD
@@ -935,12 +990,12 @@
     ipaddrWins*: DWORD
     ipaddrWinsAlt*: DWORD
     dwfNetProtocols*: DWORD
-    szDeviceType*: array[MPR_MaxDeviceType + 1 , WCHAR]
-    szDeviceName*: array[MPR_MaxDeviceName + 1 , WCHAR]
-    szX25PadType*: array[MPR_MaxPadType + 1 , WCHAR]
-    szX25Address*: array[MPR_MaxX25Address + 1 , WCHAR]
-    szX25Facilities*: array[MPR_MaxFacilities + 1 , WCHAR]
-    szX25UserData*: array[MPR_MaxUserData + 1 , WCHAR]
+    szDeviceType*: array[MPR_MaxDeviceType + 1, WCHAR]
+    szDeviceName*: array[MPR_MaxDeviceName + 1, WCHAR]
+    szX25PadType*: array[MPR_MaxPadType + 1, WCHAR]
+    szX25Address*: array[MPR_MaxX25Address + 1, WCHAR]
+    szX25Facilities*: array[MPR_MaxFacilities + 1, WCHAR]
+    szX25UserData*: array[MPR_MaxUserData + 1, WCHAR]
     dwChannels*: DWORD
     dwSubEntries*: DWORD
     dwDialMode*: DWORD
@@ -956,9 +1011,10 @@
     lpbCustomAuthData*: LPBYTE
     guidId*: GUID
     dwVpnStrategy*: DWORD
+
   PMPR_INTERFACE_2* = ptr MPR_INTERFACE_2
   MPR_INTERFACE_3* {.pure.} = object
-    wszInterfaceName*: array[MAX_INTERFACE_NAME_LEN+1, WCHAR]
+    wszInterfaceName*: array[MAX_INTERFACE_NAME_LEN + 1, WCHAR]
     hInterface*: HANDLE
     fEnabled*: WINBOOL
     dwIfType*: ROUTER_INTERFACE_TYPE
@@ -999,52 +1055,61 @@
     ipv6addrDns*: IN6_ADDR
     ipv6addrDnsAlt*: IN6_ADDR
     ipv6addr*: ptr IN6_ADDR
+
   PMPR_INTERFACE_3* = ptr MPR_INTERFACE_3
   MPR_DEVICE_0* {.pure.} = object
-    szDeviceType*: array[MPR_MaxDeviceType + 1 , WCHAR]
-    szDeviceName*: array[MPR_MaxDeviceName + 1 , WCHAR]
+    szDeviceType*: array[MPR_MaxDeviceType + 1, WCHAR]
+    szDeviceName*: array[MPR_MaxDeviceName + 1, WCHAR]
+
   PMPR_DEVICE_0* = ptr MPR_DEVICE_0
-const
-  MPR_MaxPhoneNumber* = RAS_MaxPhoneNumber
+
+const MPR_MaxPhoneNumber* = RAS_MaxPhoneNumber
 type
   MPR_DEVICE_1* {.pure.} = object
-    szDeviceType*: array[MPR_MaxDeviceType + 1 , WCHAR]
-    szDeviceName*: array[MPR_MaxDeviceName + 1 , WCHAR]
-    szLocalPhoneNumber*: array[MPR_MaxPhoneNumber + 1 , WCHAR]
+    szDeviceType*: array[MPR_MaxDeviceType + 1, WCHAR]
+    szDeviceName*: array[MPR_MaxDeviceName + 1, WCHAR]
+    szLocalPhoneNumber*: array[MPR_MaxPhoneNumber + 1, WCHAR]
     szAlternates*: PWCHAR
+
   PMPR_DEVICE_1* = ptr MPR_DEVICE_1
   MPR_CREDENTIALSEX_0* {.pure.} = object
     dwSize*: DWORD
     lpbCredentialsInfo*: LPBYTE
+
   PMPR_CREDENTIALSEX_0* = ptr MPR_CREDENTIALSEX_0
   MPR_CREDENTIALSEX_1* {.pure.} = object
     dwSize*: DWORD
     lpbCredentialsInfo*: LPBYTE
+
   PMPR_CREDENTIALSEX_1* = ptr MPR_CREDENTIALSEX_1
-const
-  MAX_TRANSPORT_NAME_LEN* = 40
+
+const MAX_TRANSPORT_NAME_LEN* = 40
 type
   MPR_TRANSPORT_0* {.pure.} = object
     dwTransportId*: DWORD
     hTransport*: HANDLE
-    wszTransportName*: array[MAX_TRANSPORT_NAME_LEN+1, WCHAR]
+    wszTransportName*: array[MAX_TRANSPORT_NAME_LEN + 1, WCHAR]
+
   PMPR_TRANSPORT_0* = ptr MPR_TRANSPORT_0
   MPR_IFTRANSPORT_0* {.pure.} = object
     dwTransportId*: DWORD
     hIfTransport*: HANDLE
-    wszIfTransportName*: array[MAX_TRANSPORT_NAME_LEN+1, WCHAR]
+    wszIfTransportName*: array[MAX_TRANSPORT_NAME_LEN + 1, WCHAR]
+
   PMPR_IFTRANSPORT_0* = ptr MPR_IFTRANSPORT_0
   MPR_SERVER_0* {.pure.} = object
     fLanOnlyMode*: WINBOOL
     dwUpTime*: DWORD
     dwTotalPorts*: DWORD
     dwPortsInUse*: DWORD
+
   PMPR_SERVER_0* = ptr MPR_SERVER_0
   MPR_SERVER_1* {.pure.} = object
     dwNumPptpPorts*: DWORD
     dwPptpPortFlags*: DWORD
     dwNumL2tpPorts*: DWORD
     dwL2tpPortFlags*: DWORD
+
   PMPR_SERVER_1* = ptr MPR_SERVER_1
   RAS_CONNECTION_0* {.pure.} = object
     hConnection*: HANDLE
@@ -1052,38 +1117,39 @@
     dwConnectDuration*: DWORD
     dwInterfaceType*: ROUTER_INTERFACE_TYPE
     dwConnectionFlags*: DWORD
-    wszInterfaceName*: array[MAX_INTERFACE_NAME_LEN + 1 , WCHAR]
-    wszUserName*: array[UNLEN + 1 , WCHAR]
-    wszLogonDomain*: array[DNLEN + 1 , WCHAR]
-    wszRemoteComputer*: array[NETBIOS_NAME_LEN + 1 , WCHAR]
+    wszInterfaceName*: array[MAX_INTERFACE_NAME_LEN + 1, WCHAR]
+    wszUserName*: array[UNLEN + 1, WCHAR]
+    wszLogonDomain*: array[DNLEN + 1, WCHAR]
+    wszRemoteComputer*: array[NETBIOS_NAME_LEN + 1, WCHAR]
+
   PRAS_CONNECTION_0* = ptr RAS_CONNECTION_0
   PPP_NBFCP_INFO* {.pure.} = object
     dwError*: DWORD
-    wszWksta*: array[NETBIOS_NAME_LEN + 1 , WCHAR]
-const
-  IPADDRESSLEN* = 15
-type
-  PPP_IPCP_INFO* {.pure.} = object
-    dwError*: DWORD
-    wszAddress*: array[IPADDRESSLEN + 1 , WCHAR]
-    wszRemoteAddress*: array[IPADDRESSLEN + 1 , WCHAR]
-const
-  IPXADDRESSLEN* = 22
-type
-  PPP_IPXCP_INFO* {.pure.} = object
-    dwError*: DWORD
-    wszAddress*: array[IPXADDRESSLEN + 1 , WCHAR]
-const
-  ATADDRESSLEN* = 32
+    wszWksta*: array[NETBIOS_NAME_LEN + 1, WCHAR]
+
+const IPADDRESSLEN* = 15
+type PPP_IPCP_INFO* {.pure.} = object
+  dwError*: DWORD
+  wszAddress*: array[IPADDRESSLEN + 1, WCHAR]
+  wszRemoteAddress*: array[IPADDRESSLEN + 1, WCHAR]
+
+const IPXADDRESSLEN* = 22
+type PPP_IPXCP_INFO* {.pure.} = object
+  dwError*: DWORD
+  wszAddress*: array[IPXADDRESSLEN + 1, WCHAR]
+
+const ATADDRESSLEN* = 32
 type
   PPP_ATCP_INFO* {.pure.} = object
     dwError*: DWORD
-    wszAddress*: array[ATADDRESSLEN + 1 , WCHAR]
+    wszAddress*: array[ATADDRESSLEN + 1, WCHAR]
+
   PPP_INFO* {.pure.} = object
     nbf*: PPP_NBFCP_INFO
     ip*: PPP_IPCP_INFO
     ipx*: PPP_IPXCP_INFO
     at*: PPP_ATCP_INFO
+
   RAS_CONNECTION_1* {.pure.} = object
     hConnection*: HANDLE
     hInterface*: HANDLE
@@ -1100,19 +1166,22 @@
     dwBufferOverrunErr*: DWORD
     dwCompressionRatioIn*: DWORD
     dwCompressionRatioOut*: DWORD
+
   PRAS_CONNECTION_1* = ptr RAS_CONNECTION_1
   PPP_IPCP_INFO2* {.pure.} = object
     dwError*: DWORD
-    wszAddress*: array[IPADDRESSLEN + 1 , WCHAR]
-    wszRemoteAddress*: array[IPADDRESSLEN + 1 , WCHAR]
+    wszAddress*: array[IPADDRESSLEN + 1, WCHAR]
+    wszRemoteAddress*: array[IPADDRESSLEN + 1, WCHAR]
     dwOptions*: DWORD
     dwRemoteOptions*: DWORD
+
   PPP_CCP_INFO* {.pure.} = object
     dwError*: DWORD
     dwCompressionAlgorithm*: DWORD
     dwOptions*: DWORD
     dwRemoteCompressionAlgorithm*: DWORD
     dwRemoteOptions*: DWORD
+
   PPP_LCP_INFO* {.pure.} = object
     dwError*: DWORD
     dwAuthenticationProtocol*: DWORD
@@ -1125,6 +1194,7 @@
     dwRemoteOptions*: DWORD
     dwEapTypeId*: DWORD
     dwRemoteEapTypeId*: DWORD
+
   PPP_INFO_2* {.pure.} = object
     nbf*: PPP_NBFCP_INFO
     ip*: PPP_IPCP_INFO2
@@ -1132,20 +1202,24 @@
     at*: PPP_ATCP_INFO
     ccp*: PPP_CCP_INFO
     lcp*: PPP_LCP_INFO
+
   RAS_CONNECTION_2* {.pure.} = object
     hConnection*: HANDLE
-    wszUserName*: array[UNLEN + 1 , WCHAR]
+    wszUserName*: array[UNLEN + 1, WCHAR]
     dwInterfaceType*: ROUTER_INTERFACE_TYPE
     guid*: GUID
     PppInfo2*: PPP_INFO_2
+
   PRAS_CONNECTION_2* = ptr RAS_CONNECTION_2
   RAS_USER_1* {.pure.} = object
     bfPrivilege*: BYTE
     wszPhoneNumber*: array[MAX_PHONE_NUMBER_LEN + 1, WCHAR]
     bfPrivilege2*: BYTE
+
   PRAS_USER_1* = ptr RAS_USER_1
   MPR_FILTER_0* {.pure.} = object
     fEnabled*: WINBOOL
+
   PMPR_FILTER_0* = ptr MPR_FILTER_0
   MPR_SERVER_2* {.pure.} = object
     dwNumPptpPorts*: DWORD
@@ -1154,6 +1228,7 @@
     dwL2tpPortFlags*: DWORD
     dwNumSstpPorts*: DWORD
     dwSstpPortFlags*: DWORD
+
   PMPR_SERVER_2* = ptr MPR_SERVER_2
   PPP_IPV6_CP_INFO* {.pure.} = object
     dwVersion*: DWORD
@@ -1165,6 +1240,7 @@
     dwRemoteOptions*: DWORD
     bPrefix*: array[8, BYTE]
     dwPrefixLength*: DWORD
+
   PPPP_IPV6_CP_INFO* = ptr PPP_IPV6_CP_INFO
   PPP_INFO_3* {.pure.} = object
     nbf*: PPP_NBFCP_INFO
@@ -1172,6 +1248,7 @@
     ipv6*: PPP_IPV6_CP_INFO
     ccp*: PPP_CCP_INFO
     lcp*: PPP_LCP_INFO
+
   RAS_CONNECTION_3* {.pure.} = object
     dwVersion*: DWORD
     dwSize*: DWORD
@@ -1182,19 +1259,22 @@
     PppInfo3*: PPP_INFO_3
     rasQuarState*: RAS_QUARANTINE_STATE
     timer*: FILETIME
+
   PRAS_CONNECTION_3* = ptr RAS_CONNECTION_3
   MPRAPI_OBJECT_HEADER* {.pure.} = object
     revision*: UCHAR
     `type`*: UCHAR
     size*: USHORT
+
   PMPRAPI_OBJECT_HEADER* = ptr MPRAPI_OBJECT_HEADER
   AUTH_VALIDATION_EX* {.pure.} = object
     Header*: MPRAPI_OBJECT_HEADER
     hRasConnection*: HANDLE
-    wszUserName*: array[UNLEN + 1 , WCHAR]
-    wszLogonDomain*: array[DNLEN + 1 , WCHAR]
+    wszUserName*: array[UNLEN + 1, WCHAR]
+    wszLogonDomain*: array[DNLEN + 1, WCHAR]
     AuthInfoSize*: DWORD
     AuthInfo*: array[1, BYTE]
+
   PAUTH_VALIDATION_EX* = ptr AUTH_VALIDATION_EX
   PPP_PROJECTION_INFO* {.pure.} = object
     dwIPv4NegotiationError*: DWORD
@@ -1225,6 +1305,7 @@
     dwCcpOptions*: DWORD
     dwRemoteCompressionAlgorithm*: DWORD
     dwCcpRemoteOptions*: DWORD
+
   PPPP_PROJECTION_INFO* = ptr PPP_PROJECTION_INFO
   IKEV2_PROJECTION_INFO* {.pure.} = object
     dwIPv4NegotiationError*: DWORD
@@ -1242,16 +1323,19 @@
     dwEapTypeId*: DWORD
     dwCompressionAlgorithm*: DWORD
     dwEncryptionMethod*: DWORD
+
   PIKEV2_PROJECTION_INFO* = ptr IKEV2_PROJECTION_INFO
   PROJECTION_INFO_UNION1* {.pure, union.} = object
     Ikev2ProjectionInfo*: IKEV2_PROJECTION_INFO
     PppProjectionInfo*: PPP_PROJECTION_INFO
+
   PROJECTION_INFO* {.pure.} = object
     projectionInfoType*: UCHAR
     union1*: PROJECTION_INFO_UNION1
+
   PPROJECTION_INFO* = ptr PROJECTION_INFO
-const
-  MAXIPADRESSLEN* = 64
+
+const MAXIPADRESSLEN* = 64
 type
   RAS_CONNECTION_EX* {.pure.} = object
     Header*: MPRAPI_OBJECT_HEADER
@@ -1278,17 +1362,19 @@
     dwCompressionRatioIn*: DWORD
     dwCompressionRatioOut*: DWORD
     dwNumSwitchOvers*: DWORD
-    wszRemoteEndpointAddress*: array[MAXIPADRESSLEN+1, WCHAR]
-    wszLocalEndpointAddress*: array[MAXIPADRESSLEN+1, WCHAR]
+    wszRemoteEndpointAddress*: array[MAXIPADRESSLEN + 1, WCHAR]
+    wszLocalEndpointAddress*: array[MAXIPADRESSLEN + 1, WCHAR]
     ProjectionInfo*: PROJECTION_INFO
     hConnection*: HANDLE
     hInterface*: HANDLE
+
   PRAS_CONNECTION_EX* = ptr RAS_CONNECTION_EX
   RAS_UPDATE_CONNECTION* {.pure.} = object
     Header*: MPRAPI_OBJECT_HEADER
     dwIfIndex*: DWORD
-    wszLocalEndpointAddress*: array[MAXIPADRESSLEN+1, WCHAR]
-    wszRemoteEndpointAddress*: array[MAXIPADRESSLEN+1, WCHAR]
+    wszLocalEndpointAddress*: array[MAXIPADRESSLEN + 1, WCHAR]
+    wszRemoteEndpointAddress*: array[MAXIPADRESSLEN + 1, WCHAR]
+
   PRAS_UPDATE_CONNECTION* = ptr RAS_UPDATE_CONNECTION
   IKEV2_TUNNEL_CONFIG_PARAMS* {.pure.} = object
     dwIdleTimeout*: DWORD
@@ -1298,24 +1384,29 @@
     dwConfigOptions*: DWORD
     dwTotalCertificates*: DWORD
     certificateNames*: ptr CERT_NAME_BLOB
+
   PIKEV2_TUNNEL_CONFIG_PARAMS* = ptr IKEV2_TUNNEL_CONFIG_PARAMS
   IKEV2_CONFIG_PARAMS* {.pure.} = object
     dwNumPorts*: DWORD
     dwPortFlags*: DWORD
     dwTunnelConfigParamFlags*: DWORD
     TunnelConfigParams*: IKEV2_TUNNEL_CONFIG_PARAMS
+
   PIKEV2_CONFIG_PARAMS* = ptr IKEV2_CONFIG_PARAMS
   PPTP_CONFIG_PARAMS* {.pure.} = object
     dwNumPorts*: DWORD
     dwPortFlags*: DWORD
+
   PPPTP_CONFIG_PARAMS* = ptr PPTP_CONFIG_PARAMS
   L2TP_CONFIG_PARAMS* {.pure.} = object
     dwNumPorts*: DWORD
     dwPortFlags*: DWORD
+
   PL2TP_CONFIG_PARAMS* = ptr L2TP_CONFIG_PARAMS
   SSTP_CERT_INFO* {.pure.} = object
     isDefault*: BOOL
     certBlob*: CRYPT_HASH_BLOB
+
   PSSTP_CERT_INFO* = ptr SSTP_CERT_INFO
   SSTP_CONFIG_PARAMS* {.pure.} = object
     dwNumPorts*: DWORD
@@ -1323,17 +1414,20 @@
     isUseHttps*: BOOL
     certAlgorithm*: DWORD
     sstpCertDetails*: SSTP_CERT_INFO
+
   PSSTP_CONFIG_PARAMS* = ptr SSTP_CONFIG_PARAMS
   MPRAPI_TUNNEL_CONFIG_PARAMS* {.pure.} = object
     IkeConfigParams*: IKEV2_CONFIG_PARAMS
     PptpConfigParams*: PPTP_CONFIG_PARAMS
     L2tpConfigParams*: L2TP_CONFIG_PARAMS
     SstpConfigParams*: SSTP_CONFIG_PARAMS
+
   PMPRAPI_TUNNEL_CONFIG_PARAMS* = ptr MPRAPI_TUNNEL_CONFIG_PARAMS
   MPR_SERVER_SET_CONFIG_EX* {.pure.} = object
     Header*: MPRAPI_OBJECT_HEADER
     setConfigForProtocols*: DWORD
     ConfigParams*: MPRAPI_TUNNEL_CONFIG_PARAMS
+
   PMPR_SERVER_SET_CONFIG_EX* = ptr MPR_SERVER_SET_CONFIG_EX
   MPR_SERVER_EX* {.pure.} = object
     Header*: MPRAPI_OBJECT_HEADER
@@ -1343,17 +1437,27 @@
     dwPortsInUse*: DWORD
     Reserved*: DWORD
     ConfigParams*: MPRAPI_TUNNEL_CONFIG_PARAMS
+
   PMPR_SERVER_EX* = ptr MPR_SERVER_EX
-  PMPRADMINGETIPADDRESSFORUSER* = proc (P1: ptr WCHAR, P2: ptr WCHAR, P3: ptr DWORD, P4: ptr WINBOOL): DWORD {.stdcall.}
-  PMPRADMINRELEASEIPADRESS* = proc (P1: ptr WCHAR, P2: ptr WCHAR, P3: ptr DWORD): VOID {.stdcall.}
-  PMPRADMINGETIPV6ADDRESSFORUSER* = proc (P1: ptr WCHAR, P2: ptr WCHAR, P3: ptr IN6_ADDR, P4: ptr WINBOOL): DWORD {.stdcall.}
-  PMPRADMINRELEASEIPV6ADDRESSFORUSER* = proc (P1: ptr WCHAR, P2: ptr WCHAR, P3: ptr IN6_ADDR): VOID {.stdcall.}
-  PMPRADMINACCEPTNEWLINK* = proc (P1: ptr RAS_PORT_0, P2: ptr RAS_PORT_1): WINBOOL {.stdcall.}
-  PMPRADMINLINKHANGUPNOTIFICATION* = proc (P1: ptr RAS_PORT_0, P2: ptr RAS_PORT_1): VOID {.stdcall.}
-  PMPRADMINTERMINATEDLL* = proc (): DWORD {.stdcall.}
-  PMPRADMINACCEPTNEWCONNECTIONEX* = proc (P1: ptr RAS_CONNECTION_EX): BOOL {.stdcall.}
-  PMPRADMINACCEPTREAUTHENTICATIONEX* = proc (P1: ptr RAS_CONNECTION_EX): BOOL {.stdcall.}
-  PMPRADMINCONNECTIONHANGUPNOTIFICATIONEX* = proc (P1: ptr RAS_CONNECTION_EX): VOID {.stdcall.}
+  PMPRADMINGETIPADDRESSFORUSER* = proc(
+    P1: ptr WCHAR, P2: ptr WCHAR, P3: ptr DWORD, P4: ptr WINBOOL
+  ): DWORD {.stdcall.}
+  PMPRADMINRELEASEIPADRESS* =
+    proc(P1: ptr WCHAR, P2: ptr WCHAR, P3: ptr DWORD): VOID {.stdcall.}
+  PMPRADMINGETIPV6ADDRESSFORUSER* = proc(
+    P1: ptr WCHAR, P2: ptr WCHAR, P3: ptr IN6_ADDR, P4: ptr WINBOOL
+  ): DWORD {.stdcall.}
+  PMPRADMINRELEASEIPV6ADDRESSFORUSER* =
+    proc(P1: ptr WCHAR, P2: ptr WCHAR, P3: ptr IN6_ADDR): VOID {.stdcall.}
+  PMPRADMINACCEPTNEWLINK* =
+    proc(P1: ptr RAS_PORT_0, P2: ptr RAS_PORT_1): WINBOOL {.stdcall.}
+  PMPRADMINLINKHANGUPNOTIFICATION* =
+    proc(P1: ptr RAS_PORT_0, P2: ptr RAS_PORT_1): VOID {.stdcall.}
+  PMPRADMINTERMINATEDLL* = proc(): DWORD {.stdcall.}
+  PMPRADMINACCEPTNEWCONNECTIONEX* = proc(P1: ptr RAS_CONNECTION_EX): BOOL {.stdcall.}
+  PMPRADMINACCEPTREAUTHENTICATIONEX* = proc(P1: ptr RAS_CONNECTION_EX): BOOL {.stdcall.}
+  PMPRADMINCONNECTIONHANGUPNOTIFICATIONEX* =
+    proc(P1: ptr RAS_CONNECTION_EX): VOID {.stdcall.}
   MPRAPI_ADMIN_DLL_CALLBACKS* {.pure.} = object
     revision*: UCHAR
     lpfnMprAdminGetIpAddressForUser*: PMPRADMINGETIPADDRESSFORUSER
@@ -1366,19 +1470,23 @@
     lpfnRasAdminAcceptNewConnectionEx*: PMPRADMINACCEPTNEWCONNECTIONEX
     lpfnRasAdminAcceptReauthenticationEx*: PMPRADMINACCEPTREAUTHENTICATIONEX
     lpfnRasAdminConnectionHangupNotificationEx*: PMPRADMINCONNECTIONHANGUPNOTIFICATIONEX
+
   PMPRAPI_ADMIN_DLL_CALLBACKS* = ptr MPRAPI_ADMIN_DLL_CALLBACKS
   SECURITY_MESSAGE* {.pure.} = object
     dwMsgId*: DWORD
     hPort*: HPORT
     dwError*: DWORD
-    UserName*: array[UNLEN+1, CHAR]
-    Domain*: array[DNLEN+1, CHAR]
+    UserName*: array[UNLEN + 1, CHAR]
+    Domain*: array[DNLEN + 1, CHAR]
+
   PSECURITY_MESSAGE* = ptr SECURITY_MESSAGE
   RAS_SECURITY_INFO* {.pure.} = object
     LastError*: DWORD
     BytesReceived*: DWORD
-    DeviceName*: array[MAX_DEVICE_NAME+1, CHAR]
+    DeviceName*: array[MAX_DEVICE_NAME + 1, CHAR]
+
   PRAS_SECURITY_INFO* = ptr RAS_SECURITY_INFO
+
 const
   freshSoHRequest* = 0x1
   shaFixup* = 0x1
@@ -1387,16 +1495,17 @@
   maxSoHAttributeSize* = 4000
   minNetworkSoHSize* = 12
   maxNetworkSoHSize* = 4000
-  maxDwordCountPerSoHAttribute* = maxSoHAttributeSize/sizeof(DWORD)
-  maxIpv4CountPerSoHAttribute* = maxSoHAttributeSize/4
-  maxIpv6CountPerSoHAttribute* = maxSoHAttributeSize/16
+  maxDwordCountPerSoHAttribute* = maxSoHAttributeSize / sizeof(DWORD)
+  maxIpv4CountPerSoHAttribute* = maxSoHAttributeSize / 4
+  maxIpv6CountPerSoHAttribute* = maxSoHAttributeSize / 16
   maxStringLength* = 1024
-  maxStringLengthInBytes* = (maxStringLength+1)*sizeof(WCHAR)
+  maxStringLengthInBytes* = (maxStringLength + 1) * sizeof(WCHAR)
   maxSystemHealthEntityCount* = 20
   maxEnforcerCount* = 20
   maxPrivateDataSize* = 200
   maxConnectionCountPerEnforcer* = 20
-  maxCachedSoHCount* = (maxSystemHealthEntityCount*maxEnforcerCount)*maxConnectionCountPerEnforcer
+  maxCachedSoHCount* =
+    (maxSystemHealthEntityCount * maxEnforcerCount) * maxConnectionCountPerEnforcer
   failureCategoryCount* = 5
   componentTypeEnforcementClientSoH* = 0x1
   componentTypeEnforcementClientRp* = 0x2
@@ -1454,12 +1563,12 @@
   RASCS_SubEntryConnected* = 22
   RASCS_SubEntryDisconnected* = 23
   RASCS_Interactive* = RASCS_PAUSED
-  RASCS_RetryAuthentication* = RASCS_PAUSED+1
-  RASCS_CallbackSetByCaller* = RASCS_PAUSED+2
-  RASCS_PasswordExpired* = RASCS_PAUSED+3
-  RASCS_InvokeEapUI* = RASCS_PAUSED+4
+  RASCS_RetryAuthentication* = RASCS_PAUSED + 1
+  RASCS_CallbackSetByCaller* = RASCS_PAUSED + 2
+  RASCS_PasswordExpired* = RASCS_PAUSED + 3
+  RASCS_InvokeEapUI* = RASCS_PAUSED + 4
   RASCS_Connected* = RASCS_DONE
-  RASCS_Disconnected* = RASCS_DONE+1
+  RASCS_Disconnected* = RASCS_DONE + 1
   RDEOPT_UsePrefixSuffix* = 0x00000001
   RDEOPT_PausedStates* = 0x00000002
   RDEOPT_IgnoreModemSpeaker* = 0x00000004
@@ -1793,278 +1902,278 @@
   EAPACTION_IndicateIdentity* = 8
   RASBASE* = 600
   SUCCESS* = 0
-  PENDING* = RASBASE+0
-  ERROR_INVALID_PORT_HANDLE* = RASBASE+1
-  ERROR_PORT_ALREADY_OPEN* = RASBASE+2
-  ERROR_BUFFER_TOO_SMALL* = RASBASE+3
-  ERROR_WRONG_INFO_SPECIFIED* = RASBASE+4
-  ERROR_PORT_NOT_CONNECTED* = RASBASE+6
-  ERROR_DEVICE_DOES_NOT_EXIST* = RASBASE+8
-  ERROR_DEVICETYPE_DOES_NOT_EXIST* = RASBASE+9
-  ERROR_BUFFER_INVALID* = RASBASE+10
-  ERROR_ROUTE_NOT_ALLOCATED* = RASBASE+12
-  ERROR_PORT_NOT_FOUND* = RASBASE+15
-  ERROR_ASYNC_REQUEST_PENDING* = RASBASE+16
-  ERROR_ALREADY_DISCONNECTING* = RASBASE+17
-  ERROR_PORT_NOT_OPEN* = RASBASE+18
-  ERROR_PORT_DISCONNECTED* = RASBASE+19
-  ERROR_CANNOT_OPEN_PHONEBOOK* = RASBASE+21
-  ERROR_CANNOT_LOAD_PHONEBOOK* = RASBASE+22
-  ERROR_CANNOT_FIND_PHONEBOOK_ENTRY* = RASBASE+23
-  ERROR_CANNOT_WRITE_PHONEBOOK* = RASBASE+24
-  ERROR_CORRUPT_PHONEBOOK* = RASBASE+25
-  ERROR_KEY_NOT_FOUND* = RASBASE+27
-  ERROR_DISCONNECTION* = RASBASE+28
-  ERROR_REMOTE_DISCONNECTION* = RASBASE+29
-  ERROR_HARDWARE_FAILURE* = RASBASE+30
-  ERROR_USER_DISCONNECTION* = RASBASE+31
-  ERROR_INVALID_SIZE* = RASBASE+32
-  ERROR_PORT_NOT_AVAILABLE* = RASBASE+33
-  ERROR_UNKNOWN* = RASBASE+35
-  ERROR_WRONG_DEVICE_ATTACHED* = RASBASE+36
-  ERROR_REQUEST_TIMEOUT* = RASBASE+38
-  ERROR_AUTH_INTERNAL* = RASBASE+45
-  ERROR_RESTRICTED_LOGON_HOURS* = RASBASE+46
-  ERROR_ACCT_DISABLED* = RASBASE+47
-  ERROR_PASSWD_EXPIRED* = RASBASE+48
-  ERROR_NO_DIALIN_PERMISSION* = RASBASE+49
-  ERROR_FROM_DEVICE* = RASBASE+51
-  ERROR_UNRECOGNIZED_RESPONSE* = RASBASE+52
-  ERROR_MACRO_NOT_FOUND* = RASBASE+53
-  ERROR_MACRO_NOT_DEFINED* = RASBASE+54
-  ERROR_MESSAGE_MACRO_NOT_FOUND* = RASBASE+55
-  ERROR_DEFAULTOFF_MACRO_NOT_FOUND* = RASBASE+56
-  ERROR_FILE_COULD_NOT_BE_OPENED* = RASBASE+57
-  ERROR_DEVICENAME_TOO_LONG* = RASBASE+58
-  ERROR_DEVICENAME_NOT_FOUND* = RASBASE+59
-  ERROR_NO_RESPONSES* = RASBASE+60
-  ERROR_NO_COMMAND_FOUND* = RASBASE+61
-  ERROR_WRONG_KEY_SPECIFIED* = RASBASE+62
-  ERROR_UNKNOWN_DEVICE_TYPE* = RASBASE+63
-  ERROR_ALLOCATING_MEMORY* = RASBASE+64
-  ERROR_PORT_NOT_CONFIGURED* = RASBASE+65
-  ERROR_DEVICE_NOT_READY* = RASBASE+66
-  ERROR_READING_INI_FILE* = RASBASE+67
-  ERROR_NO_CONNECTION* = RASBASE+68
-  ERROR_BAD_USAGE_IN_INI_FILE* = RASBASE+69
-  ERROR_READING_SECTIONNAME* = RASBASE+70
-  ERROR_READING_DEVICETYPE* = RASBASE+71
-  ERROR_READING_DEVICENAME* = RASBASE+72
-  ERROR_READING_USAGE* = RASBASE+73
-  ERROR_LINE_BUSY* = RASBASE+76
-  ERROR_VOICE_ANSWER* = RASBASE+77
-  ERROR_NO_ANSWER* = RASBASE+78
-  ERROR_NO_CARRIER* = RASBASE+79
-  ERROR_NO_DIALTONE* = RASBASE+80
-  ERROR_AUTHENTICATION_FAILURE* = RASBASE+91
-  ERROR_PORT_OR_DEVICE* = RASBASE+92
-  ERROR_NOT_BINARY_MACRO* = RASBASE+93
-  ERROR_DCB_NOT_FOUND* = RASBASE+94
-  ERROR_STATE_MACHINES_NOT_STARTED* = RASBASE+95
-  ERROR_STATE_MACHINES_ALREADY_STARTED* = RASBASE+96
-  ERROR_PARTIAL_RESPONSE_LOOPING* = RASBASE+97
-  ERROR_UNKNOWN_RESPONSE_KEY* = RASBASE+98
-  ERROR_RECV_BUF_FULL* = RASBASE+99
-  ERROR_CMD_TOO_LONG* = RASBASE+100
-  ERROR_UNSUPPORTED_BPS* = RASBASE+101
-  ERROR_UNEXPECTED_RESPONSE* = RASBASE+102
-  ERROR_INTERACTIVE_MODE* = RASBASE+103
-  ERROR_BAD_CALLBACK_NUMBER* = RASBASE+104
-  ERROR_INVALID_AUTH_STATE* = RASBASE+105
-  ERROR_X25_DIAGNOSTIC* = RASBASE+107
-  ERROR_ACCT_EXPIRED* = RASBASE+108
-  ERROR_CHANGING_PASSWORD* = RASBASE+109
-  ERROR_OVERRUN* = RASBASE+110
-  ERROR_RASMAN_CANNOT_INITIALIZE* = RASBASE+111
-  ERROR_NO_ACTIVE_ISDN_LINES* = RASBASE+113
-  ERROR_IP_CONFIGURATION* = RASBASE+116
-  ERROR_NO_IP_ADDRESSES* = RASBASE+117
-  ERROR_PPP_TIMEOUT* = RASBASE+118
-  ERROR_PPP_NO_PROTOCOLS_CONFIGURED* = RASBASE+120
-  ERROR_PPP_NO_RESPONSE* = RASBASE+121
-  ERROR_PPP_INVALID_PACKET* = RASBASE+122
-  ERROR_PHONE_NUMBER_TOO_LONG* = RASBASE+123
-  ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE* = RASBASE+126
-  ERROR_NO_IP_RAS_ADAPTER* = RASBASE+128
-  ERROR_SLIP_REQUIRES_IP* = RASBASE+129
-  ERROR_PROTOCOL_NOT_CONFIGURED* = RASBASE+131
-  ERROR_PPP_NOT_CONVERGING* = RASBASE+132
-  ERROR_PPP_CP_REJECTED* = RASBASE+133
-  ERROR_PPP_LCP_TERMINATED* = RASBASE+134
-  ERROR_PPP_REQUIRED_ADDRESS_REJECTED* = RASBASE+135
-  ERROR_PPP_NCP_TERMINATED* = RASBASE+136
-  ERROR_PPP_LOOPBACK_DETECTED* = RASBASE+137
-  ERROR_PPP_NO_ADDRESS_ASSIGNED* = RASBASE+138
-  ERROR_CANNOT_USE_LOGON_CREDENTIALS* = RASBASE+139
-  ERROR_TAPI_CONFIGURATION* = RASBASE+140
-  ERROR_NO_LOCAL_ENCRYPTION* = RASBASE+141
-  ERROR_NO_REMOTE_ENCRYPTION* = RASBASE+142
-  ERROR_BAD_PHONE_NUMBER* = RASBASE+149
-  ERROR_SCRIPT_SYNTAX* = RASBASE+152
-  ERROR_HANGUP_FAILED* = RASBASE+153
-  ERROR_BUNDLE_NOT_FOUND* = RASBASE+154
-  ERROR_CANNOT_DO_CUSTOMDIAL* = RASBASE+155
-  ERROR_DIAL_ALREADY_IN_PROGRESS* = RASBASE+156
-  ERROR_RASAUTO_CANNOT_INITIALIZE* = RASBASE+157
-  ERROR_NO_SMART_CARD_READER* = RASBASE+164
-  ERROR_SHARING_ADDRESS_EXISTS* = RASBASE+165
-  ERROR_NO_CERTIFICATE* = RASBASE+166
-  ERROR_SHARING_MULTIPLE_ADDRESSES* = RASBASE+167
-  ERROR_FAILED_TO_ENCRYPT* = RASBASE+168
-  ERROR_BAD_ADDRESS_SPECIFIED* = RASBASE+169
-  ERROR_CONNECTION_REJECT* = RASBASE+170
-  ERROR_CONGESTION* = RASBASE+171
-  ERROR_INCOMPATIBLE* = RASBASE+172
-  ERROR_NUMBERCHANGED* = RASBASE+173
-  ERROR_TEMPFAILURE* = RASBASE+174
-  ERROR_BLOCKED* = RASBASE+175
-  ERROR_DONOTDISTURB* = RASBASE+176
-  ERROR_OUTOFORDER* = RASBASE+177
-  ERROR_UNABLE_TO_AUTHENTICATE_SERVER* = RASBASE+178
-  ERROR_INVALID_FUNCTION_FOR_ENTRY* = RASBASE+180
-  ERROR_SHARING_RRAS_CONFLICT* = RASBASE+182
-  ERROR_SHARING_NO_PRIVATE_LAN* = RASBASE+183
-  ERROR_NO_DIFF_USER_AT_LOGON* = RASBASE+184
-  ERROR_NO_REG_CERT_AT_LOGON* = RASBASE+185
-  ERROR_OAKLEY_NO_CERT* = RASBASE+186
-  ERROR_OAKLEY_AUTH_FAIL* = RASBASE+187
-  ERROR_OAKLEY_ATTRIB_FAIL* = RASBASE+188
-  ERROR_OAKLEY_GENERAL_PROCESSING* = RASBASE+189
-  ERROR_OAKLEY_NO_PEER_CERT* = RASBASE+190
-  ERROR_OAKLEY_NO_POLICY* = RASBASE+191
-  ERROR_OAKLEY_TIMED_OUT* = RASBASE+192
-  ERROR_OAKLEY_ERROR* = RASBASE+193
-  ERROR_UNKNOWN_FRAMED_PROTOCOL* = RASBASE+194
-  ERROR_WRONG_TUNNEL_TYPE* = RASBASE+195
-  ERROR_UNKNOWN_SERVICE_TYPE* = RASBASE+196
-  ERROR_CONNECTING_DEVICE_NOT_FOUND* = RASBASE+197
-  ERROR_NO_EAPTLS_CERTIFICATE* = RASBASE+198
-  ERROR_SHARING_HOST_ADDRESS_CONFLICT* = RASBASE+199
-  ERROR_AUTOMATIC_VPN_FAILED* = RASBASE+200
-  ERROR_VALIDATING_SERVER_CERT* = RASBASE+201
-  ERROR_READING_SCARD* = RASBASE+202
-  ERROR_INVALID_PEAP_COOKIE_CONFIG* = RASBASE+203
-  ERROR_INVALID_PEAP_COOKIE_USER* = RASBASE+204
-  ERROR_INVALID_MSCHAPV2_CONFIG* = RASBASE+205
-  ERROR_VPN_GRE_BLOCKED* = RASBASE+206
-  ERROR_VPN_DISCONNECT* = RASBASE+207
-  ERROR_VPN_REFUSED* = RASBASE+208
-  ERROR_VPN_TIMEOUT* = RASBASE+209
-  ERROR_VPN_BAD_CERT* = RASBASE+210
-  ERROR_VPN_BAD_PSK* = RASBASE+211
-  ERROR_SERVER_POLICY* = RASBASE+212
-  ERROR_BROADBAND_ACTIVE* = RASBASE+213
-  ERROR_BROADBAND_NO_NIC* = RASBASE+214
-  ERROR_BROADBAND_TIMEOUT* = RASBASE+215
-  ERROR_FEATURE_DEPRECATED* = RASBASE+216
-  ERROR_CANNOT_DELETE* = RASBASE+217
-  ERROR_PEAP_CRYPTOBINDING_INVALID* = RASBASE+223
-  ERROR_PEAP_CRYPTOBINDING_NOTRECEIVED* = RASBASE+224
-  ERROR_EAPTLS_CACHE_CREDENTIALS_INVALID* = RASBASE+226
-  ERROR_IPSEC_SERVICE_STOPPED* = RASBASE+227
-  ERROR_CANNOT_SET_PORT_INFO* = RASBASE+5
-  ERROR_EVENT_INVALID* = RASBASE+7
-  ERROR_ROUTE_NOT_AVAILABLE* = RASBASE+11
-  ERROR_INVALID_COMPRESSION_SPECIFIED* = RASBASE+13
-  ERROR_OUT_OF_BUFFERS* = RASBASE+14
-  ERROR_NO_ENDPOINTS* = RASBASE+20
-  ERROR_CANNOT_LOAD_STRING* = RASBASE+26
-  ERROR_CANNOT_PROJECT_CLIENT* = RASBASE+34
-  ERROR_BAD_STRING* = RASBASE+37
-  ERROR_CANNOT_GET_LANA* = RASBASE+39
-  ERROR_NETBIOS_ERROR* = RASBASE+40
-  ERROR_SERVER_OUT_OF_RESOURCES* = RASBASE+41
-  ERROR_NAME_EXISTS_ON_NET* = RASBASE+42
-  ERROR_SERVER_GENERAL_NET_FAILURE* = RASBASE+43
-  WARNING_MSG_ALIAS_NOT_ADDED* = RASBASE+44
-  ERROR_SERVER_NOT_RESPONDING* = RASBASE+50
-  ERROR_READING_MAXCONNECTBPS* = RASBASE+74
-  ERROR_READING_MAXCARRIERBPS* = RASBASE+75
-  ERROR_IN_COMMAND* = RASBASE+81
-  ERROR_WRITING_SECTIONNAME* = RASBASE+82
-  ERROR_WRITING_DEVICETYPE* = RASBASE+83
-  ERROR_WRITING_DEVICENAME* = RASBASE+84
-  ERROR_WRITING_MAXCONNECTBPS* = RASBASE+85
-  ERROR_WRITING_MAXCARRIERBPS* = RASBASE+86
-  ERROR_WRITING_USAGE* = RASBASE+87
-  ERROR_WRITING_DEFAULTOFF* = RASBASE+88
-  ERROR_READING_DEFAULTOFF* = RASBASE+89
-  ERROR_EMPTY_INI_FILE* = RASBASE+90
-  ERROR_WRITING_INITBPS* = RASBASE+106
-  ERROR_BIPLEX_PORT_NOT_AVAILABLE* = RASBASE+112
-  ERROR_NO_ISDN_CHANNELS_AVAILABLE* = RASBASE+114
-  ERROR_TOO_MANY_LINE_ERRORS* = RASBASE+115
-  ERROR_PPP_REMOTE_TERMINATED* = RASBASE+119
-  ERROR_IPXCP_NO_DIALOUT_CONFIGURED* = RASBASE+124
-  ERROR_IPXCP_NO_DIALIN_CONFIGURED* = RASBASE+125
-  ERROR_ACCESSING_TCPCFGDLL* = RASBASE+127
-  ERROR_PROJECTION_NOT_COMPLETE* = RASBASE+130
-  ERROR_REMOTE_REQUIRES_ENCRYPTION* = RASBASE+143
-  ERROR_IPXCP_NET_NUMBER_CONFLICT* = RASBASE+144
-  ERROR_INVALID_SMM* = RASBASE+145
-  ERROR_SMM_UNINITIALIZED* = RASBASE+146
-  ERROR_NO_MAC_FOR_PORT* = RASBASE+147
-  ERROR_SMM_TIMEOUT* = RASBASE+148
-  ERROR_WRONG_MODULE* = RASBASE+150
-  ERROR_INVALID_CALLBACK_NUMBER* = RASBASE+151
-  ERROR_CONNECTION_ALREADY_SHARED* = RASBASE+158
-  ERROR_SHARING_CHANGE_FAILED* = RASBASE+159
-  ERROR_SHARING_ROUTER_INSTALL* = RASBASE+160
-  ERROR_SHARE_CONNECTION_FAILED* = RASBASE+161
-  ERROR_SHARING_PRIVATE_INSTALL* = RASBASE+162
-  ERROR_CANNOT_SHARE_CONNECTION* = RASBASE+163
-  ERROR_SMART_CARD_REQUIRED* = RASBASE+179
-  ERROR_CERT_FOR_ENCRYPTION_NOT_FOUND* = RASBASE+181
-  ERROR_RASQEC_RESOURCE_CREATION_FAILED* = RASBASE+218
-  ERROR_RASQEC_NAPAGENT_NOT_ENABLED* = RASBASE+219
-  ERROR_RASQEC_NAPAGENT_NOT_CONNECTED* = RASBASE+220
-  ERROR_RASQEC_CONN_DOESNOTEXIST* = RASBASE+221
-  ERROR_RASQEC_TIMEOUT* = RASBASE+222
-  ERROR_INVALID_VPNSTRATEGY* = RASBASE+225
-  ERROR_IDLE_TIMEOUT* = RASBASE+228
-  ERROR_LINK_FAILURE* = RASBASE+229
-  ERROR_USER_LOGOFF* = RASBASE+230
-  ERROR_FAST_USER_SWITCH* = RASBASE+231
-  ERROR_HIBERNATION* = RASBASE+232
-  ERROR_SYSTEM_SUSPENDED* = RASBASE+233
-  ERROR_RASMAN_SERVICE_STOPPED* = RASBASE+234
-  ERROR_INVALID_SERVER_CERT* = RASBASE+235
-  ERROR_NOT_NAP_CAPABLE* = RASBASE+236
-  ERROR_INVALID_TUNNELID* = RASBASE+237
-  ERROR_UPDATECONNECTION_REQUEST_IN_PROCESS* = RASBASE+238
-  ERROR_PROTOCOL_ENGINE_DISABLED* = RASBASE+239
-  ERROR_INTERNAL_ADDRESS_FAILURE* = RASBASE+240
-  ERROR_FAILED_CP_REQUIRED* = RASBASE+241
-  ERROR_TS_UNACCEPTABLE* = RASBASE+242
-  ERROR_MOBIKE_DISABLED* = RASBASE+243
-  ERROR_CANNOT_INITIATE_MOBIKE_UPDATE* = RASBASE+244
-  ERROR_PEAP_SERVER_REJECTED_CLIENT_TLV* = RASBASE+245
-  ERROR_INVALID_PREFERENCES* = RASBASE+246
-  ERROR_EAPTLS_SCARD_CACHE_CREDENTIALS_INVALID* = RASBASE+247
-  ERROR_SSTP_COOKIE_SET_FAILURE* = RASBASE+248
-  ERROR_INVALID_PEAP_COOKIE_ATTRIBUTES* = RASBASE+249
-  ERROR_EAP_METHOD_NOT_INSTALLED* = RASBASE+250
-  ERROR_EAP_METHOD_DOES_NOT_SUPPORT_SSO* = RASBASE+251
-  ERROR_EAP_METHOD_OPERATION_NOT_SUPPORTED* = RASBASE+252
-  ERROR_EAP_USER_CERT_INVALID* = RASBASE+253
-  ERROR_EAP_USER_CERT_EXPIRED* = RASBASE+254
-  ERROR_EAP_USER_CERT_REVOKED* = RASBASE+255
-  ERROR_EAP_USER_CERT_OTHER_ERROR* = RASBASE+256
-  ERROR_EAP_SERVER_CERT_INVALID* = RASBASE+257
-  ERROR_EAP_SERVER_CERT_EXPIRED* = RASBASE+258
-  ERROR_EAP_SERVER_CERT_REVOKED* = RASBASE+259
-  ERROR_EAP_SERVER_CERT_OTHER_ERROR* = RASBASE+260
-  ERROR_EAP_USER_ROOT_CERT_NOT_FOUND* = RASBASE+261
-  ERROR_EAP_USER_ROOT_CERT_INVALID* = RASBASE+262
-  ERROR_EAP_USER_ROOT_CERT_EXPIRED* = RASBASE+263
-  ERROR_EAP_SERVER_ROOT_CERT_NOT_FOUND* = RASBASE+264
-  ERROR_EAP_SERVER_ROOT_CERT_INVALID* = RASBASE+265
-  ERROR_EAP_SERVER_ROOT_CERT_NAME_REQUIRED* = RASBASE+266
-  ERROR_PEAP_IDENTITY_MISMATCH* = RASBASE+267
-  ERROR_DNSNAME_NOT_RESOLVABLE* = RASBASE+268
-  ERROR_EAPTLS_PASSWD_INVALID* = RASBASE+269
-  ERROR_IKEV2_PSK_INTERFACE_ALREADY_EXISTS* = RASBASE+270
-  RASBASEEND* = RASBASE+270
+  PENDING* = RASBASE + 0
+  ERROR_INVALID_PORT_HANDLE* = RASBASE + 1
+  ERROR_PORT_ALREADY_OPEN* = RASBASE + 2
+  ERROR_BUFFER_TOO_SMALL* = RASBASE + 3
+  ERROR_WRONG_INFO_SPECIFIED* = RASBASE + 4
+  ERROR_PORT_NOT_CONNECTED* = RASBASE + 6
+  ERROR_DEVICE_DOES_NOT_EXIST* = RASBASE + 8
+  ERROR_DEVICETYPE_DOES_NOT_EXIST* = RASBASE + 9
+  ERROR_BUFFER_INVALID* = RASBASE + 10
+  ERROR_ROUTE_NOT_ALLOCATED* = RASBASE + 12
+  ERROR_PORT_NOT_FOUND* = RASBASE + 15
+  ERROR_ASYNC_REQUEST_PENDING* = RASBASE + 16
+  ERROR_ALREADY_DISCONNECTING* = RASBASE + 17
+  ERROR_PORT_NOT_OPEN* = RASBASE + 18
+  ERROR_PORT_DISCONNECTED* = RASBASE + 19
+  ERROR_CANNOT_OPEN_PHONEBOOK* = RASBASE + 21
+  ERROR_CANNOT_LOAD_PHONEBOOK* = RASBASE + 22
+  ERROR_CANNOT_FIND_PHONEBOOK_ENTRY* = RASBASE + 23
+  ERROR_CANNOT_WRITE_PHONEBOOK* = RASBASE + 24
+  ERROR_CORRUPT_PHONEBOOK* = RASBASE + 25
+  ERROR_KEY_NOT_FOUND* = RASBASE + 27
+  ERROR_DISCONNECTION* = RASBASE + 28
+  ERROR_REMOTE_DISCONNECTION* = RASBASE + 29
+  ERROR_HARDWARE_FAILURE* = RASBASE + 30
+  ERROR_USER_DISCONNECTION* = RASBASE + 31
+  ERROR_INVALID_SIZE* = RASBASE + 32
+  ERROR_PORT_NOT_AVAILABLE* = RASBASE + 33
+  ERROR_UNKNOWN* = RASBASE + 35
+  ERROR_WRONG_DEVICE_ATTACHED* = RASBASE + 36
+  ERROR_REQUEST_TIMEOUT* = RASBASE + 38
+  ERROR_AUTH_INTERNAL* = RASBASE + 45
+  ERROR_RESTRICTED_LOGON_HOURS* = RASBASE + 46
+  ERROR_ACCT_DISABLED* = RASBASE + 47
+  ERROR_PASSWD_EXPIRED* = RASBASE + 48
+  ERROR_NO_DIALIN_PERMISSION* = RASBASE + 49
+  ERROR_FROM_DEVICE* = RASBASE + 51
+  ERROR_UNRECOGNIZED_RESPONSE* = RASBASE + 52
+  ERROR_MACRO_NOT_FOUND* = RASBASE + 53
+  ERROR_MACRO_NOT_DEFINED* = RASBASE + 54
+  ERROR_MESSAGE_MACRO_NOT_FOUND* = RASBASE + 55
+  ERROR_DEFAULTOFF_MACRO_NOT_FOUND* = RASBASE + 56
+  ERROR_FILE_COULD_NOT_BE_OPENED* = RASBASE + 57
+  ERROR_DEVICENAME_TOO_LONG* = RASBASE + 58
+  ERROR_DEVICENAME_NOT_FOUND* = RASBASE + 59
+  ERROR_NO_RESPONSES* = RASBASE + 60
+  ERROR_NO_COMMAND_FOUND* = RASBASE + 61
+  ERROR_WRONG_KEY_SPECIFIED* = RASBASE + 62
+  ERROR_UNKNOWN_DEVICE_TYPE* = RASBASE + 63
+  ERROR_ALLOCATING_MEMORY* = RASBASE + 64
+  ERROR_PORT_NOT_CONFIGURED* = RASBASE + 65
+  ERROR_DEVICE_NOT_READY* = RASBASE + 66
+  ERROR_READING_INI_FILE* = RASBASE + 67
+  ERROR_NO_CONNECTION* = RASBASE + 68
+  ERROR_BAD_USAGE_IN_INI_FILE* = RASBASE + 69
+  ERROR_READING_SECTIONNAME* = RASBASE + 70
+  ERROR_READING_DEVICETYPE* = RASBASE + 71
+  ERROR_READING_DEVICENAME* = RASBASE + 72
+  ERROR_READING_USAGE* = RASBASE + 73
+  ERROR_LINE_BUSY* = RASBASE + 76
+  ERROR_VOICE_ANSWER* = RASBASE + 77
+  ERROR_NO_ANSWER* = RASBASE + 78
+  ERROR_NO_CARRIER* = RASBASE + 79
+  ERROR_NO_DIALTONE* = RASBASE + 80
+  ERROR_AUTHENTICATION_FAILURE* = RASBASE + 91
+  ERROR_PORT_OR_DEVICE* = RASBASE + 92
+  ERROR_NOT_BINARY_MACRO* = RASBASE + 93
+  ERROR_DCB_NOT_FOUND* = RASBASE + 94
+  ERROR_STATE_MACHINES_NOT_STARTED* = RASBASE + 95
+  ERROR_STATE_MACHINES_ALREADY_STARTED* = RASBASE + 96
+  ERROR_PARTIAL_RESPONSE_LOOPING* = RASBASE + 97
+  ERROR_UNKNOWN_RESPONSE_KEY* = RASBASE + 98
+  ERROR_RECV_BUF_FULL* = RASBASE + 99
+  ERROR_CMD_TOO_LONG* = RASBASE + 100
+  ERROR_UNSUPPORTED_BPS* = RASBASE + 101
+  ERROR_UNEXPECTED_RESPONSE* = RASBASE + 102
+  ERROR_INTERACTIVE_MODE* = RASBASE + 103
+  ERROR_BAD_CALLBACK_NUMBER* = RASBASE + 104
+  ERROR_INVALID_AUTH_STATE* = RASBASE + 105
+  ERROR_X25_DIAGNOSTIC* = RASBASE + 107
+  ERROR_ACCT_EXPIRED* = RASBASE + 108
+  ERROR_CHANGING_PASSWORD* = RASBASE + 109
+  ERROR_OVERRUN* = RASBASE + 110
+  ERROR_RASMAN_CANNOT_INITIALIZE* = RASBASE + 111
+  ERROR_NO_ACTIVE_ISDN_LINES* = RASBASE + 113
+  ERROR_IP_CONFIGURATION* = RASBASE + 116
+  ERROR_NO_IP_ADDRESSES* = RASBASE + 117
+  ERROR_PPP_TIMEOUT* = RASBASE + 118
+  ERROR_PPP_NO_PROTOCOLS_CONFIGURED* = RASBASE + 120
+  ERROR_PPP_NO_RESPONSE* = RASBASE + 121
+  ERROR_PPP_INVALID_PACKET* = RASBASE + 122
+  ERROR_PHONE_NUMBER_TOO_LONG* = RASBASE + 123
+  ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE* = RASBASE + 126
+  ERROR_NO_IP_RAS_ADAPTER* = RASBASE + 128
+  ERROR_SLIP_REQUIRES_IP* = RASBASE + 129
+  ERROR_PROTOCOL_NOT_CONFIGURED* = RASBASE + 131
+  ERROR_PPP_NOT_CONVERGING* = RASBASE + 132
+  ERROR_PPP_CP_REJECTED* = RASBASE + 133
+  ERROR_PPP_LCP_TERMINATED* = RASBASE + 134
+  ERROR_PPP_REQUIRED_ADDRESS_REJECTED* = RASBASE + 135
+  ERROR_PPP_NCP_TERMINATED* = RASBASE + 136
+  ERROR_PPP_LOOPBACK_DETECTED* = RASBASE + 137
+  ERROR_PPP_NO_ADDRESS_ASSIGNED* = RASBASE + 138
+  ERROR_CANNOT_USE_LOGON_CREDENTIALS* = RASBASE + 139
+  ERROR_TAPI_CONFIGURATION* = RASBASE + 140
+  ERROR_NO_LOCAL_ENCRYPTION* = RASBASE + 141
+  ERROR_NO_REMOTE_ENCRYPTION* = RASBASE + 142
+  ERROR_BAD_PHONE_NUMBER* = RASBASE + 149
+  ERROR_SCRIPT_SYNTAX* = RASBASE + 152
+  ERROR_HANGUP_FAILED* = RASBASE + 153
+  ERROR_BUNDLE_NOT_FOUND* = RASBASE + 154
+  ERROR_CANNOT_DO_CUSTOMDIAL* = RASBASE + 155
+  ERROR_DIAL_ALREADY_IN_PROGRESS* = RASBASE + 156
+  ERROR_RASAUTO_CANNOT_INITIALIZE* = RASBASE + 157
+  ERROR_NO_SMART_CARD_READER* = RASBASE + 164
+  ERROR_SHARING_ADDRESS_EXISTS* = RASBASE + 165
+  ERROR_NO_CERTIFICATE* = RASBASE + 166
+  ERROR_SHARING_MULTIPLE_ADDRESSES* = RASBASE + 167
+  ERROR_FAILED_TO_ENCRYPT* = RASBASE + 168
+  ERROR_BAD_ADDRESS_SPECIFIED* = RASBASE + 169
+  ERROR_CONNECTION_REJECT* = RASBASE + 170
+  ERROR_CONGESTION* = RASBASE + 171
+  ERROR_INCOMPATIBLE* = RASBASE + 172
+  ERROR_NUMBERCHANGED* = RASBASE + 173
+  ERROR_TEMPFAILURE* = RASBASE + 174
+  ERROR_BLOCKED* = RASBASE + 175
+  ERROR_DONOTDISTURB* = RASBASE + 176
+  ERROR_OUTOFORDER* = RASBASE + 177
+  ERROR_UNABLE_TO_AUTHENTICATE_SERVER* = RASBASE + 178
+  ERROR_INVALID_FUNCTION_FOR_ENTRY* = RASBASE + 180
+  ERROR_SHARING_RRAS_CONFLICT* = RASBASE + 182
+  ERROR_SHARING_NO_PRIVATE_LAN* = RASBASE + 183
+  ERROR_NO_DIFF_USER_AT_LOGON* = RASBASE + 184
+  ERROR_NO_REG_CERT_AT_LOGON* = RASBASE + 185
+  ERROR_OAKLEY_NO_CERT* = RASBASE + 186
+  ERROR_OAKLEY_AUTH_FAIL* = RASBASE + 187
+  ERROR_OAKLEY_ATTRIB_FAIL* = RASBASE + 188
+  ERROR_OAKLEY_GENERAL_PROCESSING* = RASBASE + 189
+  ERROR_OAKLEY_NO_PEER_CERT* = RASBASE + 190
+  ERROR_OAKLEY_NO_POLICY* = RASBASE + 191
+  ERROR_OAKLEY_TIMED_OUT* = RASBASE + 192
+  ERROR_OAKLEY_ERROR* = RASBASE + 193
+  ERROR_UNKNOWN_FRAMED_PROTOCOL* = RASBASE + 194
+  ERROR_WRONG_TUNNEL_TYPE* = RASBASE + 195
+  ERROR_UNKNOWN_SERVICE_TYPE* = RASBASE + 196
+  ERROR_CONNECTING_DEVICE_NOT_FOUND* = RASBASE + 197
+  ERROR_NO_EAPTLS_CERTIFICATE* = RASBASE + 198
+  ERROR_SHARING_HOST_ADDRESS_CONFLICT* = RASBASE + 199
+  ERROR_AUTOMATIC_VPN_FAILED* = RASBASE + 200
+  ERROR_VALIDATING_SERVER_CERT* = RASBASE + 201
+  ERROR_READING_SCARD* = RASBASE + 202
+  ERROR_INVALID_PEAP_COOKIE_CONFIG* = RASBASE + 203
+  ERROR_INVALID_PEAP_COOKIE_USER* = RASBASE + 204
+  ERROR_INVALID_MSCHAPV2_CONFIG* = RASBASE + 205
+  ERROR_VPN_GRE_BLOCKED* = RASBASE + 206
+  ERROR_VPN_DISCONNECT* = RASBASE + 207
+  ERROR_VPN_REFUSED* = RASBASE + 208
+  ERROR_VPN_TIMEOUT* = RASBASE + 209
+  ERROR_VPN_BAD_CERT* = RASBASE + 210
+  ERROR_VPN_BAD_PSK* = RASBASE + 211
+  ERROR_SERVER_POLICY* = RASBASE + 212
+  ERROR_BROADBAND_ACTIVE* = RASBASE + 213
+  ERROR_BROADBAND_NO_NIC* = RASBASE + 214
+  ERROR_BROADBAND_TIMEOUT* = RASBASE + 215
+  ERROR_FEATURE_DEPRECATED* = RASBASE + 216
+  ERROR_CANNOT_DELETE* = RASBASE + 217
+  ERROR_PEAP_CRYPTOBINDING_INVALID* = RASBASE + 223
+  ERROR_PEAP_CRYPTOBINDING_NOTRECEIVED* = RASBASE + 224
+  ERROR_EAPTLS_CACHE_CREDENTIALS_INVALID* = RASBASE + 226
+  ERROR_IPSEC_SERVICE_STOPPED* = RASBASE + 227
+  ERROR_CANNOT_SET_PORT_INFO* = RASBASE + 5
+  ERROR_EVENT_INVALID* = RASBASE + 7
+  ERROR_ROUTE_NOT_AVAILABLE* = RASBASE + 11
+  ERROR_INVALID_COMPRESSION_SPECIFIED* = RASBASE + 13
+  ERROR_OUT_OF_BUFFERS* = RASBASE + 14
+  ERROR_NO_ENDPOINTS* = RASBASE + 20
+  ERROR_CANNOT_LOAD_STRING* = RASBASE + 26
+  ERROR_CANNOT_PROJECT_CLIENT* = RASBASE + 34
+  ERROR_BAD_STRING* = RASBASE + 37
+  ERROR_CANNOT_GET_LANA* = RASBASE + 39
+  ERROR_NETBIOS_ERROR* = RASBASE + 40
+  ERROR_SERVER_OUT_OF_RESOURCES* = RASBASE + 41
+  ERROR_NAME_EXISTS_ON_NET* = RASBASE + 42
+  ERROR_SERVER_GENERAL_NET_FAILURE* = RASBASE + 43
+  WARNING_MSG_ALIAS_NOT_ADDED* = RASBASE + 44
+  ERROR_SERVER_NOT_RESPONDING* = RASBASE + 50
+  ERROR_READING_MAXCONNECTBPS* = RASBASE + 74
+  ERROR_READING_MAXCARRIERBPS* = RASBASE + 75
+  ERROR_IN_COMMAND* = RASBASE + 81
+  ERROR_WRITING_SECTIONNAME* = RASBASE + 82
+  ERROR_WRITING_DEVICETYPE* = RASBASE + 83
+  ERROR_WRITING_DEVICENAME* = RASBASE + 84
+  ERROR_WRITING_MAXCONNECTBPS* = RASBASE + 85
+  ERROR_WRITING_MAXCARRIERBPS* = RASBASE + 86
+  ERROR_WRITING_USAGE* = RASBASE + 87
+  ERROR_WRITING_DEFAULTOFF* = RASBASE + 88
+  ERROR_READING_DEFAULTOFF* = RASBASE + 89
+  ERROR_EMPTY_INI_FILE* = RASBASE + 90
+  ERROR_WRITING_INITBPS* = RASBASE + 106
+  ERROR_BIPLEX_PORT_NOT_AVAILABLE* = RASBASE + 112
+  ERROR_NO_ISDN_CHANNELS_AVAILABLE* = RASBASE + 114
+  ERROR_TOO_MANY_LINE_ERRORS* = RASBASE + 115
+  ERROR_PPP_REMOTE_TERMINATED* = RASBASE + 119
+  ERROR_IPXCP_NO_DIALOUT_CONFIGURED* = RASBASE + 124
+  ERROR_IPXCP_NO_DIALIN_CONFIGURED* = RASBASE + 125
+  ERROR_ACCESSING_TCPCFGDLL* = RASBASE + 127
+  ERROR_PROJECTION_NOT_COMPLETE* = RASBASE + 130
+  ERROR_REMOTE_REQUIRES_ENCRYPTION* = RASBASE + 143
+  ERROR_IPXCP_NET_NUMBER_CONFLICT* = RASBASE + 144
+  ERROR_INVALID_SMM* = RASBASE + 145
+  ERROR_SMM_UNINITIALIZED* = RASBASE + 146
+  ERROR_NO_MAC_FOR_PORT* = RASBASE + 147
+  ERROR_SMM_TIMEOUT* = RASBASE + 148
+  ERROR_WRONG_MODULE* = RASBASE + 150
+  ERROR_INVALID_CALLBACK_NUMBER* = RASBASE + 151
+  ERROR_CONNECTION_ALREADY_SHARED* = RASBASE + 158
+  ERROR_SHARING_CHANGE_FAILED* = RASBASE + 159
+  ERROR_SHARING_ROUTER_INSTALL* = RASBASE + 160
+  ERROR_SHARE_CONNECTION_FAILED* = RASBASE + 161
+  ERROR_SHARING_PRIVATE_INSTALL* = RASBASE + 162
+  ERROR_CANNOT_SHARE_CONNECTION* = RASBASE + 163
+  ERROR_SMART_CARD_REQUIRED* = RASBASE + 179
+  ERROR_CERT_FOR_ENCRYPTION_NOT_FOUND* = RASBASE + 181
+  ERROR_RASQEC_RESOURCE_CREATION_FAILED* = RASBASE + 218
+  ERROR_RASQEC_NAPAGENT_NOT_ENABLED* = RASBASE + 219
+  ERROR_RASQEC_NAPAGENT_NOT_CONNECTED* = RASBASE + 220
+  ERROR_RASQEC_CONN_DOESNOTEXIST* = RASBASE + 221
+  ERROR_RASQEC_TIMEOUT* = RASBASE + 222
+  ERROR_INVALID_VPNSTRATEGY* = RASBASE + 225
+  ERROR_IDLE_TIMEOUT* = RASBASE + 228
+  ERROR_LINK_FAILURE* = RASBASE + 229
+  ERROR_USER_LOGOFF* = RASBASE + 230
+  ERROR_FAST_USER_SWITCH* = RASBASE + 231
+  ERROR_HIBERNATION* = RASBASE + 232
+  ERROR_SYSTEM_SUSPENDED* = RASBASE + 233
+  ERROR_RASMAN_SERVICE_STOPPED* = RASBASE + 234
+  ERROR_INVALID_SERVER_CERT* = RASBASE + 235
+  ERROR_NOT_NAP_CAPABLE* = RASBASE + 236
+  ERROR_INVALID_TUNNELID* = RASBASE + 237
+  ERROR_UPDATECONNECTION_REQUEST_IN_PROCESS* = RASBASE + 238
+  ERROR_PROTOCOL_ENGINE_DISABLED* = RASBASE + 239
+  ERROR_INTERNAL_ADDRESS_FAILURE* = RASBASE + 240
+  ERROR_FAILED_CP_REQUIRED* = RASBASE + 241
+  ERROR_TS_UNACCEPTABLE* = RASBASE + 242
+  ERROR_MOBIKE_DISABLED* = RASBASE + 243
+  ERROR_CANNOT_INITIATE_MOBIKE_UPDATE* = RASBASE + 244
+  ERROR_PEAP_SERVER_REJECTED_CLIENT_TLV* = RASBASE + 245
+  ERROR_INVALID_PREFERENCES* = RASBASE + 246
+  ERROR_EAPTLS_SCARD_CACHE_CREDENTIALS_INVALID* = RASBASE + 247
+  ERROR_SSTP_COOKIE_SET_FAILURE* = RASBASE + 248
+  ERROR_INVALID_PEAP_COOKIE_ATTRIBUTES* = RASBASE + 249
+  ERROR_EAP_METHOD_NOT_INSTALLED* = RASBASE + 250
+  ERROR_EAP_METHOD_DOES_NOT_SUPPORT_SSO* = RASBASE + 251
+  ERROR_EAP_METHOD_OPERATION_NOT_SUPPORTED* = RASBASE + 252
+  ERROR_EAP_USER_CERT_INVALID* = RASBASE + 253
+  ERROR_EAP_USER_CERT_EXPIRED* = RASBASE + 254
+  ERROR_EAP_USER_CERT_REVOKED* = RASBASE + 255
+  ERROR_EAP_USER_CERT_OTHER_ERROR* = RASBASE + 256
+  ERROR_EAP_SERVER_CERT_INVALID* = RASBASE + 257
+  ERROR_EAP_SERVER_CERT_EXPIRED* = RASBASE + 258
+  ERROR_EAP_SERVER_CERT_REVOKED* = RASBASE + 259
+  ERROR_EAP_SERVER_CERT_OTHER_ERROR* = RASBASE + 260
+  ERROR_EAP_USER_ROOT_CERT_NOT_FOUND* = RASBASE + 261
+  ERROR_EAP_USER_ROOT_CERT_INVALID* = RASBASE + 262
+  ERROR_EAP_USER_ROOT_CERT_EXPIRED* = RASBASE + 263
+  ERROR_EAP_SERVER_ROOT_CERT_NOT_FOUND* = RASBASE + 264
+  ERROR_EAP_SERVER_ROOT_CERT_INVALID* = RASBASE + 265
+  ERROR_EAP_SERVER_ROOT_CERT_NAME_REQUIRED* = RASBASE + 266
+  ERROR_PEAP_IDENTITY_MISMATCH* = RASBASE + 267
+  ERROR_DNSNAME_NOT_RESOLVABLE* = RASBASE + 268
+  ERROR_EAPTLS_PASSWD_INVALID* = RASBASE + 269
+  ERROR_IKEV2_PSK_INTERFACE_ALREADY_EXISTS* = RASBASE + 270
+  RASBASEEND* = RASBASE + 270
   RASSAPI_MAX_PHONENUMBER_SIZE* = 128
   RASSAPI_MAX_MEDIA_NAME* = 16
   RASSAPI_MAX_PORT_NAME* = 16
@@ -2075,7 +2184,8 @@
   RASPRIV_AdminSetCallback* = 0x02
   RASPRIV_CallerSetCallback* = 0x04
   RASPRIV_DialinPrivilege* = 0x08
-  RASPRIV_CallbackType* = RASPRIV_AdminSetCallback or RASPRIV_CallerSetCallback or RASPRIV_NoCallback
+  RASPRIV_CallbackType* =
+    RASPRIV_AdminSetCallback or RASPRIV_CallerSetCallback or RASPRIV_NoCallback
   RAS_MODEM_OPERATIONAL* = 1
   RAS_MODEM_NOT_RESPONDING* = 2
   RAS_MODEM_HARDWARE_FAILURE* = 3
@@ -2237,65 +2347,130 @@
   SECURITYMSG_ERROR* = 3
   PPP_EAP_PACKET_HDR_LEN* = 4
 type
-  RASDIALFUNC* = proc (P1: UINT, P2: RASCONNSTATE, P3: DWORD): VOID {.stdcall.}
-  RASDIALFUNC1* = proc (P1: HRASCONN, P2: UINT, P3: RASCONNSTATE, P4: DWORD, P5: DWORD): VOID {.stdcall.}
-  RASDIALFUNC2* = proc (P1: ULONG_PTR, P2: DWORD, P3: HRASCONN, P4: UINT, P5: RASCONNSTATE, P6: DWORD, P7: DWORD): DWORD {.stdcall.}
-  ORASADFUNC* = proc (P1: HWND, P2: LPSTR, P3: DWORD, P4: LPDWORD): WINBOOL {.stdcall.}
-  RASADFUNCA* = proc (P1: LPSTR, P2: LPSTR, P3: LPRASADPARAMS, P4: LPDWORD): WINBOOL {.stdcall.}
-  RASADFUNCW* = proc (P1: LPWSTR, P2: LPWSTR, P3: LPRASADPARAMS, P4: LPDWORD): WINBOOL {.stdcall.}
-  PFNRASGETBUFFER* = proc (ppBuffer: ptr PBYTE, pdwSize: PDWORD): DWORD {.stdcall.}
-  PFNRASFREEBUFFER* = proc (pBufer: PBYTE): DWORD {.stdcall.}
-  PFNRASSENDBUFFER* = proc (hPort: HANDLE, pBuffer: PBYTE, dwSize: DWORD): DWORD {.stdcall.}
-  PFNRASRECEIVEBUFFER* = proc (hPort: HANDLE, pBuffer: PBYTE, pdwSize: PDWORD, dwTimeOut: DWORD, hEvent: HANDLE): DWORD {.stdcall.}
-  PFNRASRETRIEVEBUFFER* = proc (hPort: HANDLE, pBuffer: PBYTE, pdwSize: PDWORD): DWORD {.stdcall.}
-  RasCustomScriptExecuteFn* = proc (hPort: HANDLE, lpszPhonebook: LPCWSTR, lpszEntryName: LPCWSTR, pfnRasGetBuffer: PFNRASGETBUFFER, pfnRasFreeBuffer: PFNRASFREEBUFFER, pfnRasSendBuffer: PFNRASSENDBUFFER, pfnRasReceiveBuffer: PFNRASRECEIVEBUFFER, pfnRasRetrieveBuffer: PFNRASRETRIEVEBUFFER, hWnd: HWND, pRasDialParams: ptr RASDIALPARAMS, pvReserved: PVOID): DWORD {.stdcall.}
+  RASDIALFUNC* = proc(P1: UINT, P2: RASCONNSTATE, P3: DWORD): VOID {.stdcall.}
+  RASDIALFUNC1* = proc(
+    P1: HRASCONN, P2: UINT, P3: RASCONNSTATE, P4: DWORD, P5: DWORD
+  ): VOID {.stdcall.}
+  RASDIALFUNC2* = proc(
+    P1: ULONG_PTR,
+    P2: DWORD,
+    P3: HRASCONN,
+    P4: UINT,
+    P5: RASCONNSTATE,
+    P6: DWORD,
+    P7: DWORD,
+  ): DWORD {.stdcall.}
+  ORASADFUNC* = proc(P1: HWND, P2: LPSTR, P3: DWORD, P4: LPDWORD): WINBOOL {.stdcall.}
+  RASADFUNCA* =
+    proc(P1: LPSTR, P2: LPSTR, P3: LPRASADPARAMS, P4: LPDWORD): WINBOOL {.stdcall.}
+  RASADFUNCW* =
+    proc(P1: LPWSTR, P2: LPWSTR, P3: LPRASADPARAMS, P4: LPDWORD): WINBOOL {.stdcall.}
+  PFNRASGETBUFFER* = proc(ppBuffer: ptr PBYTE, pdwSize: PDWORD): DWORD {.stdcall.}
+  PFNRASFREEBUFFER* = proc(pBufer: PBYTE): DWORD {.stdcall.}
+  PFNRASSENDBUFFER* =
+    proc(hPort: HANDLE, pBuffer: PBYTE, dwSize: DWORD): DWORD {.stdcall.}
+  PFNRASRECEIVEBUFFER* = proc(
+    hPort: HANDLE, pBuffer: PBYTE, pdwSize: PDWORD, dwTimeOut: DWORD, hEvent: HANDLE
+  ): DWORD {.stdcall.}
+  PFNRASRETRIEVEBUFFER* =
+    proc(hPort: HANDLE, pBuffer: PBYTE, pdwSize: PDWORD): DWORD {.stdcall.}
+  RasCustomScriptExecuteFn* = proc(
+    hPort: HANDLE,
+    lpszPhonebook: LPCWSTR,
+    lpszEntryName: LPCWSTR,
+    pfnRasGetBuffer: PFNRASGETBUFFER,
+    pfnRasFreeBuffer: PFNRASFREEBUFFER,
+    pfnRasSendBuffer: PFNRASSENDBUFFER,
+    pfnRasReceiveBuffer: PFNRASRECEIVEBUFFER,
+    pfnRasRetrieveBuffer: PFNRASRETRIEVEBUFFER,
+    hWnd: HWND,
+    pRasDialParams: ptr RASDIALPARAMS,
+    pvReserved: PVOID,
+  ): DWORD {.stdcall.}
   RASCOMMSETTINGS* {.pure.} = object
     dwSize*: DWORD
     bParity*: BYTE
     bStop*: BYTE
     bByteSize*: BYTE
     bAlign*: BYTE
-  PFNRASSETCOMMSETTINGS* = proc (hPort: HANDLE, pRasCommSettings: ptr RASCOMMSETTINGS, pvReserved: PVOID): DWORD {.stdcall.}
-  RasCustomHangUpFn* = proc (hRasConn: HRASCONN): DWORD {.stdcall.}
-  RasCustomDialFn* = proc (hInstDll: HINSTANCE, lpRasDialExtensions: LPRASDIALEXTENSIONS, lpszPhonebook: LPCWSTR, lpRasDialParams: LPRASDIALPARAMS, dwNotifierType: DWORD, lpvNotifier: LPVOID, lphRasConn: LPHRASCONN, dwFlags: DWORD): DWORD {.stdcall.}
-  RasCustomDeleteEntryNotifyFn* = proc (lpszPhonebook: LPCWSTR, lpszEntry: LPCWSTR, dwFlags: DWORD): DWORD {.stdcall.}
-  RasCustomDialDlgFn* = proc (hInstDll: HINSTANCE, dwFlags: DWORD, lpszPhonebook: LPWSTR, lpszEntry: LPWSTR, lpszPhoneNumber: LPWSTR, lpInfo: LPRASDIALDLG, pvInfo: PVOID): WINBOOL {.stdcall.}
-  RasCustomEntryDlgFn* = proc (hInstDll: HINSTANCE, lpszPhonebook: LPWSTR, lpszEntry: LPWSTR, lpInfo: LPRASENTRYDLG, dwFlags: DWORD): WINBOOL {.stdcall.}
-  RASSECURITYPROC* = proc (): DWORD {.stdcall.}
+
+  PFNRASSETCOMMSETTINGS* = proc(
+    hPort: HANDLE, pRasCommSettings: ptr RASCOMMSETTINGS, pvReserved: PVOID
+  ): DWORD {.stdcall.}
+  RasCustomHangUpFn* = proc(hRasConn: HRASCONN): DWORD {.stdcall.}
+  RasCustomDialFn* = proc(
+    hInstDll: HINSTANCE,
+    lpRasDialExtensions: LPRASDIALEXTENSIONS,
+    lpszPhonebook: LPCWSTR,
+    lpRasDialParams: LPRASDIALPARAMS,
+    dwNotifierType: DWORD,
+    lpvNotifier: LPVOID,
+    lphRasConn: LPHRASCONN,
+    dwFlags: DWORD,
+  ): DWORD {.stdcall.}
+  RasCustomDeleteEntryNotifyFn* =
+    proc(lpszPhonebook: LPCWSTR, lpszEntry: LPCWSTR, dwFlags: DWORD): DWORD {.stdcall.}
+  RasCustomDialDlgFn* = proc(
+    hInstDll: HINSTANCE,
+    dwFlags: DWORD,
+    lpszPhonebook: LPWSTR,
+    lpszEntry: LPWSTR,
+    lpszPhoneNumber: LPWSTR,
+    lpInfo: LPRASDIALDLG,
+    pvInfo: PVOID,
+  ): WINBOOL {.stdcall.}
+  RasCustomEntryDlgFn* = proc(
+    hInstDll: HINSTANCE,
+    lpszPhonebook: LPWSTR,
+    lpszEntry: LPWSTR,
+    lpInfo: LPRASENTRYDLG,
+    dwFlags: DWORD,
+  ): WINBOOL {.stdcall.}
+  RASSECURITYPROC* = proc(): DWORD {.stdcall.}
   IsolationInfo* {.pure.} = object
     isolationState*: IsolationState
     probEndTime*: ProbationTime
     failureUrl*: CountedString
+
   IsolationInfoEx* {.pure.} = object
     isolationState*: IsolationState
     extendedIsolationState*: ExtendedIsolationState
     probEndTime*: ProbationTime
     failureUrl*: CountedString
+
   FailureCategoryMapping* {.pure.} = object
     mappingCompliance*: array[5, WINBOOL]
+
   CorrelationId* {.pure.} = object
     connId*: GUID
     timeStamp*: FILETIME
+
   ResultCodes* {.pure.} = object
     count*: UINT16
     results*: ptr HRESULT
+
   Ipv4Address* {.pure.} = object
     `addr`*: array[4, BYTE]
+
   Ipv6Address* {.pure.} = object
     `addr`*: array[16, BYTE]
+
   FixupInfo* {.pure.} = object
     state*: FixupState
     percentage*: Percentage
     resultCodes*: ResultCodes
     fixupMsgId*: MessageId
+
   SystemHealthAgentState* {.pure.} = object
     id*: SystemHealthEntityId
     shaResultCodes*: ResultCodes
     failureCategory*: FailureCategory
     fixupInfo*: FixupInfo
+
   PrivateData* {.pure.} = object
     size*: UINT16
     data*: ptr BYTE
+
   NapComponentRegistrationInfo* {.pure.} = object
     id*: NapComponentId
     friendlyName*: CountedString
@@ -2306,9 +2481,11 @@
     configClsid*: CLSID
     registrationDate*: FILETIME
     componentType*: UINT32
+
   RASCUSTOMSCRIPTEXTENSIONS* {.pure, packed.} = object
     dwSize*: DWORD
     pfnRasSetCommSettings*: PFNRASSETCOMMSETTINGS
+
   LEGACY_IDENTITY_UI_PARAMS* {.pure.} = object
     eapType*: DWORD
     dwFlags*: DWORD
@@ -2320,6 +2497,7 @@
     pUserDataOut*: ptr BYTE
     pwszIdentity*: LPWSTR
     dwError*: DWORD
+
   LEGACY_INTERACTIVE_UI_PARAMS* {.pure.} = object
     eapType*: DWORD
     dwSizeofContextData*: DWORD
@@ -2327,327 +2505,1519 @@
     dwSizeofInteractiveUIData*: DWORD
     pInteractiveUIData*: ptr BYTE
     dwError*: DWORD
+
   RAS_PARAMS_VALUE_String* {.pure.} = object
     Length*: DWORD
     Data*: PCHAR
+
   RAS_PARAMS_VALUE* {.pure, union.} = object
     Number*: DWORD
     String*: RAS_PARAMS_VALUE_String
+
   RAS_PARAMETERS* {.pure.} = object
     P_Key*: array[RASSAPI_MAX_PARAM_KEY_SIZE, CHAR]
     P_Type*: RAS_PARAMS_FORMAT
     P_Attributes*: BYTE
     P_Value*: RAS_PARAMS_VALUE
+
   RAS_PPP_NBFCP_RESULT* {.pure.} = object
     dwError*: DWORD
     dwNetBiosError*: DWORD
     szName*: array[NETBIOS_NAME_LEN + 1, CHAR]
     wszWksta*: array[NETBIOS_NAME_LEN + 1, WCHAR]
+
   RAS_PPP_IPCP_RESULT* {.pure.} = object
     dwError*: DWORD
     wszAddress*: array[RAS_IPADDRESSLEN + 1, WCHAR]
+
   RAS_PPP_IPXCP_RESULT* {.pure.} = object
     dwError*: DWORD
     wszAddress*: array[RAS_IPXADDRESSLEN + 1, WCHAR]
+
   RAS_PPP_ATCP_RESULT* {.pure.} = object
     dwError*: DWORD
     wszAddress*: array[RAS_ATADDRESSLEN + 1, WCHAR]
+
   RAS_PPP_PROJECTION_RESULT* {.pure.} = object
     nbf*: RAS_PPP_NBFCP_RESULT
     ip*: RAS_PPP_IPCP_RESULT
     ipx*: RAS_PPP_IPXCP_RESULT
     at*: RAS_PPP_ATCP_RESULT
-proc RasDialA*(P1: LPRASDIALEXTENSIONS, P2: LPCSTR, P3: LPRASDIALPARAMSA, P4: DWORD, P5: LPVOID, P6: LPHRASCONN): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasDialW*(P1: LPRASDIALEXTENSIONS, P2: LPCWSTR, P3: LPRASDIALPARAMSW, P4: DWORD, P5: LPVOID, P6: LPHRASCONN): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasEnumConnectionsA*(P1: LPRASCONNA, P2: LPDWORD, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasEnumConnectionsW*(P1: LPRASCONNW, P2: LPDWORD, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasEnumEntriesA*(P1: LPCSTR, P2: LPCSTR, P3: LPRASENTRYNAMEA, P4: LPDWORD, P5: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasEnumEntriesW*(P1: LPCWSTR, P2: LPCWSTR, P3: LPRASENTRYNAMEW, P4: LPDWORD, P5: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetConnectStatusA*(P1: HRASCONN, P2: LPRASCONNSTATUSA): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetConnectStatusW*(P1: HRASCONN, P2: LPRASCONNSTATUSW): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetErrorStringA*(P1: UINT, P2: LPSTR, P3: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetErrorStringW*(P1: UINT, P2: LPWSTR, P3: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasDialA*(
+  P1: LPRASDIALEXTENSIONS,
+  P2: LPCSTR,
+  P3: LPRASDIALPARAMSA,
+  P4: DWORD,
+  P5: LPVOID,
+  P6: LPHRASCONN,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasDialW*(
+  P1: LPRASDIALEXTENSIONS,
+  P2: LPCWSTR,
+  P3: LPRASDIALPARAMSW,
+  P4: DWORD,
+  P5: LPVOID,
+  P6: LPHRASCONN,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasEnumConnectionsA*(
+  P1: LPRASCONNA, P2: LPDWORD, P3: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasEnumConnectionsW*(
+  P1: LPRASCONNW, P2: LPDWORD, P3: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasEnumEntriesA*(
+  P1: LPCSTR, P2: LPCSTR, P3: LPRASENTRYNAMEA, P4: LPDWORD, P5: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasEnumEntriesW*(
+  P1: LPCWSTR, P2: LPCWSTR, P3: LPRASENTRYNAMEW, P4: LPDWORD, P5: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetConnectStatusA*(
+  P1: HRASCONN, P2: LPRASCONNSTATUSA
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetConnectStatusW*(
+  P1: HRASCONN, P2: LPRASCONNSTATUSW
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetErrorStringA*(
+  P1: UINT, P2: LPSTR, P3: DWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetErrorStringW*(
+  P1: UINT, P2: LPWSTR, P3: DWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
 proc RasHangUpA*(P1: HRASCONN): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
 proc RasHangUpW*(P1: HRASCONN): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetProjectionInfoA*(P1: HRASCONN, P2: RASPROJECTION, P3: LPVOID, P4: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetProjectionInfoW*(P1: HRASCONN, P2: RASPROJECTION, P3: LPVOID, P4: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasCreatePhonebookEntryA*(P1: HWND, P2: LPCSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasCreatePhonebookEntryW*(P1: HWND, P2: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasEditPhonebookEntryA*(P1: HWND, P2: LPCSTR, P3: LPCSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasEditPhonebookEntryW*(P1: HWND, P2: LPCWSTR, P3: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetEntryDialParamsA*(P1: LPCSTR, P2: LPRASDIALPARAMSA, P3: WINBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetEntryDialParamsW*(P1: LPCWSTR, P2: LPRASDIALPARAMSW, P3: WINBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetEntryDialParamsA*(P1: LPCSTR, P2: LPRASDIALPARAMSA, P3: LPBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetEntryDialParamsW*(P1: LPCWSTR, P2: LPRASDIALPARAMSW, P3: LPBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasEnumDevicesA*(P1: LPRASDEVINFOA, P2: LPDWORD, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasEnumDevicesW*(P1: LPRASDEVINFOW, P2: LPDWORD, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetCountryInfoA*(P1: LPRASCTRYINFOA, P2: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetCountryInfoW*(P1: LPRASCTRYINFOW, P2: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetEntryPropertiesA*(P1: LPCSTR, P2: LPCSTR, P3: LPRASENTRYA, P4: LPDWORD, P5: LPBYTE, P6: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetEntryPropertiesW*(P1: LPCWSTR, P2: LPCWSTR, P3: LPRASENTRYW, P4: LPDWORD, P5: LPBYTE, P6: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetEntryPropertiesA*(P1: LPCSTR, P2: LPCSTR, P3: LPRASENTRYA, P4: DWORD, P5: LPBYTE, P6: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetEntryPropertiesW*(P1: LPCWSTR, P2: LPCWSTR, P3: LPRASENTRYW, P4: DWORD, P5: LPBYTE, P6: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasRenameEntryA*(P1: LPCSTR, P2: LPCSTR, P3: LPCSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasRenameEntryW*(P1: LPCWSTR, P2: LPCWSTR, P3: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasDeleteEntryA*(P1: LPCSTR, P2: LPCSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasDeleteEntryW*(P1: LPCWSTR, P2: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasValidateEntryNameA*(P1: LPCSTR, P2: LPCSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasValidateEntryNameW*(P1: LPCWSTR, P2: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasConnectionNotificationA*(P1: HRASCONN, P2: HANDLE, P3: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasConnectionNotificationW*(P1: HRASCONN, P2: HANDLE, P3: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetSubEntryHandleA*(P1: HRASCONN, P2: DWORD, P3: LPHRASCONN): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetSubEntryHandleW*(P1: HRASCONN, P2: DWORD, P3: LPHRASCONN): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetCredentialsA*(P1: LPCSTR, P2: LPCSTR, P3: LPRASCREDENTIALSA): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetCredentialsW*(P1: LPCWSTR, P2: LPCWSTR, P3: LPRASCREDENTIALSW): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetCredentialsA*(P1: LPCSTR, P2: LPCSTR, P3: LPRASCREDENTIALSA, P4: WINBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetCredentialsW*(P1: LPCWSTR, P2: LPCWSTR, P3: LPRASCREDENTIALSW, P4: WINBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetSubEntryPropertiesA*(P1: LPCSTR, P2: LPCSTR, P3: DWORD, P4: LPRASSUBENTRYA, P5: LPDWORD, P6: LPBYTE, P7: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetSubEntryPropertiesW*(P1: LPCWSTR, P2: LPCWSTR, P3: DWORD, P4: LPRASSUBENTRYW, P5: LPDWORD, P6: LPBYTE, P7: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetSubEntryPropertiesA*(P1: LPCSTR, P2: LPCSTR, P3: DWORD, P4: LPRASSUBENTRYA, P5: DWORD, P6: LPBYTE, P7: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetSubEntryPropertiesW*(P1: LPCWSTR, P2: LPCWSTR, P3: DWORD, P4: LPRASSUBENTRYW, P5: DWORD, P6: LPBYTE, P7: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetAutodialAddressA*(P1: LPCSTR, P2: LPDWORD, P3: LPRASAUTODIALENTRYA, P4: LPDWORD, P5: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetAutodialAddressW*(P1: LPCWSTR, P2: LPDWORD, P3: LPRASAUTODIALENTRYW, P4: LPDWORD, P5: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetAutodialAddressA*(P1: LPCSTR, P2: DWORD, P3: LPRASAUTODIALENTRYA, P4: DWORD, P5: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetAutodialAddressW*(P1: LPCWSTR, P2: DWORD, P3: LPRASAUTODIALENTRYW, P4: DWORD, P5: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasEnumAutodialAddressesA*(P1: ptr LPSTR, P2: LPDWORD, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasEnumAutodialAddressesW*(P1: ptr LPWSTR, P2: LPDWORD, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetAutodialEnableA*(P1: DWORD, P2: LPBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetAutodialEnableW*(P1: DWORD, P2: LPBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetAutodialEnableA*(P1: DWORD, P2: WINBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetAutodialEnableW*(P1: DWORD, P2: WINBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetAutodialParamA*(P1: DWORD, P2: LPVOID, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetAutodialParamW*(P1: DWORD, P2: LPVOID, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetAutodialParamA*(P1: DWORD, P2: LPVOID, P3: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetAutodialParamW*(P1: DWORD, P2: LPVOID, P3: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasInvokeEapUI*(P1: HRASCONN, P2: DWORD, P3: LPRASDIALEXTENSIONS, P4: HWND): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetLinkStatistics*(hRasConn: HRASCONN, dwSubEntry: DWORD, lpStatistics: ptr RAS_STATS): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetConnectionStatistics*(hRasConn: HRASCONN, lpStatistics: ptr RAS_STATS): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasClearLinkStatistics*(hRasConn: HRASCONN, dwSubEntry: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasClearConnectionStatistics*(hRasConn: HRASCONN): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetEapUserDataA*(hToken: HANDLE, pszPhonebook: LPCSTR, pszEntry: LPCSTR, pbEapData: ptr BYTE, pdwSizeofEapData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetEapUserDataW*(hToken: HANDLE, pszPhonebook: LPCWSTR, pszEntry: LPCWSTR, pbEapData: ptr BYTE, pdwSizeofEapData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetEapUserDataA*(hToken: HANDLE, pszPhonebook: LPCSTR, pszEntry: LPCSTR, pbEapData: ptr BYTE, dwSizeofEapData: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetEapUserDataW*(hToken: HANDLE, pszPhonebook: LPCWSTR, pszEntry: LPCWSTR, pbEapData: ptr BYTE, dwSizeofEapData: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetCustomAuthDataA*(pszPhonebook: LPCSTR, pszEntry: LPCSTR, pbCustomAuthData: ptr BYTE, pdwSizeofCustomAuthData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetCustomAuthDataW*(pszPhonebook: LPCWSTR, pszEntry: LPCWSTR, pbCustomAuthData: ptr BYTE, pdwSizeofCustomAuthData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetCustomAuthDataA*(pszPhonebook: LPCSTR, pszEntry: LPCSTR, pbCustomAuthData: ptr BYTE, dwSizeofCustomAuthData: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasSetCustomAuthDataW*(pszPhonebook: LPCWSTR, pszEntry: LPCWSTR, pbCustomAuthData: ptr BYTE, dwSizeofCustomAuthData: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetEapUserIdentityW*(pszPhonebook: LPCWSTR, pszEntry: LPCWSTR, dwFlags: DWORD, hwnd: HWND, ppRasEapUserIdentity: ptr LPRASEAPUSERIDENTITYW): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasGetEapUserIdentityA*(pszPhonebook: LPCSTR, pszEntry: LPCSTR, dwFlags: DWORD, hwnd: HWND, ppRasEapUserIdentity: ptr LPRASEAPUSERIDENTITYA): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasFreeEapUserIdentityW*(pRasEapUserIdentity: LPRASEAPUSERIDENTITYW): VOID {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasFreeEapUserIdentityA*(pRasEapUserIdentity: LPRASEAPUSERIDENTITYA): VOID {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasDeleteSubEntryA*(pszPhonebook: LPCSTR, pszEntry: LPCSTR, dwSubentryId: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasDeleteSubEntryW*(pszPhonebook: LPCWSTR, pszEntry: LPCWSTR, dwSubEntryId: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
-proc RasPhonebookDlgA*(lpszPhonebook: LPSTR, lpszEntry: LPSTR, lpInfo: LPRASPBDLGA): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc.}
-proc RasPhonebookDlgW*(lpszPhonebook: LPWSTR, lpszEntry: LPWSTR, lpInfo: LPRASPBDLGW): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc.}
-proc RasEntryDlgA*(lpszPhonebook: LPSTR, lpszEntry: LPSTR, lpInfo: LPRASENTRYDLGA): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc.}
-proc RasEntryDlgW*(lpszPhonebook: LPWSTR, lpszEntry: LPWSTR, lpInfo: LPRASENTRYDLGW): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc.}
-proc RasDialDlgA*(lpszPhonebook: LPSTR, lpszEntry: LPSTR, lpszPhoneNumber: LPSTR, lpInfo: LPRASDIALDLG): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc.}
-proc RasDialDlgW*(lpszPhonebook: LPWSTR, lpszEntry: LPWSTR, lpszPhoneNumber: LPWSTR, lpInfo: LPRASDIALDLG): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc.}
-proc MprAdminConnectionEnum*(hRasServer: RAS_SERVER_HANDLE, dwLevel: DWORD, lplpbBuffer: ptr LPBYTE, dwPrefMaxLen: DWORD, lpdwEntriesRead: LPDWORD, lpdwTotalEntries: LPDWORD, lpdwResumeHandle: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminPortEnum*(hRasServer: RAS_SERVER_HANDLE, dwLevel: DWORD, hConnection: HANDLE, lplpbBuffer: ptr LPBYTE, dwPrefMaxLen: DWORD, lpdwEntriesRead: LPDWORD, lpdwTotalEntries: LPDWORD, lpdwResumeHandle: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminConnectionGetInfo*(hRasServer: RAS_SERVER_HANDLE, dwLevel: DWORD, hConnection: HANDLE, lplpbBuffer: ptr LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminPortGetInfo*(hRasServer: RAS_SERVER_HANDLE, dwLevel: DWORD, hPort: HANDLE, lplpbBuffer: ptr LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminConnectionClearStats*(hRasServer: RAS_SERVER_HANDLE, hConnection: HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminPortClearStats*(hRasServer: RAS_SERVER_HANDLE, hPort: HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminPortReset*(hRasServer: RAS_SERVER_HANDLE, hPort: HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminPortDisconnect*(hRasServer: RAS_SERVER_HANDLE, hPort: HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminConnectionRemoveQuarantine*(hRasServer: HANDLE, hRasConnection: HANDLE, fIsIpAddress: WINBOOL): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminUserGetInfo*(lpszServer: ptr WCHAR, lpszUser: ptr WCHAR, dwLevel: DWORD, lpbBuffer: LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminUserSetInfo*(lpszServer: ptr WCHAR, lpszUser: ptr WCHAR, dwLevel: DWORD, lpbBuffer: LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminSendUserMessage*(hMprServer: MPR_SERVER_HANDLE, hConnection: HANDLE, lpwszMessage: LPWSTR): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminGetPDCServer*(lpszDomain: ptr WCHAR, lpszServer: ptr WCHAR, lpszPDCServer: LPWSTR): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminIsServiceRunning*(lpwsServerName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminServerConnect*(lpwsServerName: LPWSTR, phMprServer: ptr MPR_SERVER_HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminServerDisconnect*(hMprServer: MPR_SERVER_HANDLE): VOID {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminServerGetCredentials*(hMprServer: MPR_SERVER_HANDLE, dwLevel: DWORD, lplpbBuffer: ptr LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminServerSetCredentials*(hMprServer: MPR_SERVER_HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminBufferFree*(pBuffer: LPVOID): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminGetErrorString*(dwError: DWORD, lpwsErrorString: ptr LPWSTR): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminServerGetInfo*(hMprServer: MPR_SERVER_HANDLE, dwLevel: DWORD, lplpbBuffer: ptr LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminServerSetInfo*(hMprServer: MPR_SERVER_HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminEstablishDomainRasServer*(pszDomain: PWCHAR, pszMachine: PWCHAR, bEnable: WINBOOL): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminIsDomainRasServer*(pszDomain: PWCHAR, pszMachine: PWCHAR, pbIsRasServer: PBOOL): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminTransportCreate*(hMprServer: MPR_SERVER_HANDLE, dwTransportId: DWORD, lpwsTransportName: LPWSTR, pGlobalInfo: LPBYTE, dwGlobalInfoSize: DWORD, pClientInterfaceInfo: LPBYTE, dwClientInterfaceInfoSize: DWORD, lpwsDLLPath: LPWSTR): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminTransportSetInfo*(hMprServer: MPR_SERVER_HANDLE, dwTransportId: DWORD, pGlobalInfo: LPBYTE, dwGlobalInfoSize: DWORD, pClientInterfaceInfo: LPBYTE, dwClientInterfaceInfoSize: DWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminTransportGetInfo*(hMprServer: MPR_SERVER_HANDLE, dwTransportId: DWORD, ppGlobalInfo: ptr LPBYTE, lpdwGlobalInfoSize: LPDWORD, ppClientInterfaceInfo: ptr LPBYTE, lpdwClientInterfaceInfoSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminDeviceEnum*(hMprServer: MPR_SERVER_HANDLE, dwLevel: DWORD, lplpbBuffer: ptr LPBYTE, lpdwTotalEntries: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceGetHandle*(hMprServer: MPR_SERVER_HANDLE, lpwsInterfaceName: LPWSTR, phInterface: ptr HANDLE, fIncludeClientInterfaces: WINBOOL): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceCreate*(hMprServer: MPR_SERVER_HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE, phInterface: ptr HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceGetInfo*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwLevel: DWORD, lplpbBuffer: ptr LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceSetInfo*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceDelete*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceDeviceGetInfo*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwIndex: DWORD, dwLevel: DWORD, lplpBuffer: ptr LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceDeviceSetInfo*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwIndex: DWORD, dwLevel: DWORD, lplpBuffer: LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceTransportRemove*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwTransportId: DWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceTransportAdd*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwTransportId: DWORD, pInterfaceInfo: LPBYTE, dwInterfaceInfoSize: DWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceTransportGetInfo*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwTransportId: DWORD, ppInterfaceInfo: ptr LPBYTE, lpdwpInterfaceInfoSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceTransportSetInfo*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwTransportId: DWORD, pInterfaceInfo: LPBYTE, dwInterfaceInfoSize: DWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceEnum*(hMprServer: MPR_SERVER_HANDLE, dwLevel: DWORD, lplpbBuffer: ptr LPBYTE, dwPrefMaxLen: DWORD, lpdwEntriesRead: LPDWORD, lpdwTotalEntries: LPDWORD, lpdwResumeHandle: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceSetCredentials*(lpwsServer: LPWSTR, lpwsInterfaceName: LPWSTR, lpwsUserName: LPWSTR, lpwsDomainName: LPWSTR, lpwsPassword: LPWSTR): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceGetCredentials*(lpwsServer: LPWSTR, lpwsInterfaceName: LPWSTR, lpwsUserName: LPWSTR, lpwsPassword: LPWSTR, lpwsDomainName: LPWSTR): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceSetCredentialsEx*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceGetCredentialsEx*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwLevel: DWORD, lplpbBuffer: ptr LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceConnect*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, hEvent: HANDLE, fSynchronous: WINBOOL): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceDisconnect*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceUpdateRoutes*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwProtocolId: DWORD, hEvent: HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceQueryUpdateResult*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwProtocolId: DWORD, lpdwUpdateResult: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminInterfaceUpdatePhonebookInfo*(hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminRegisterConnectionNotification*(hMprServer: MPR_SERVER_HANDLE, hEventNotification: HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminDeregisterConnectionNotification*(hMprServer: MPR_SERVER_HANDLE, hEventNotification: HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminMIBServerConnect*(lpwsServerName: LPWSTR, phMibServer: ptr MIB_SERVER_HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminMIBServerDisconnect*(hMibServer: MIB_SERVER_HANDLE): VOID {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminMIBEntryCreate*(hMibServer: MIB_SERVER_HANDLE, dwPid: DWORD, dwRoutingPid: DWORD, lpEntry: LPVOID, dwEntrySize: DWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminMIBEntryDelete*(hMibServer: MIB_SERVER_HANDLE, dwProtocolId: DWORD, dwRoutingPid: DWORD, lpEntry: LPVOID, dwEntrySize: DWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminMIBEntrySet*(hMibServer: MIB_SERVER_HANDLE, dwProtocolId: DWORD, dwRoutingPid: DWORD, lpEntry: LPVOID, dwEntrySize: DWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminMIBEntryGet*(hMibServer: MIB_SERVER_HANDLE, dwProtocolId: DWORD, dwRoutingPid: DWORD, lpInEntry: LPVOID, dwInEntrySize: DWORD, lplpOutEntry: ptr LPVOID, lpOutEntrySize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminMIBEntryGetFirst*(hMibServer: MIB_SERVER_HANDLE, dwProtocolId: DWORD, dwRoutingPid: DWORD, lpInEntry: LPVOID, dwInEntrySize: DWORD, lplpOutEntry: ptr LPVOID, lpOutEntrySize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminMIBEntryGetNext*(hMibServer: MIB_SERVER_HANDLE, dwProtocolId: DWORD, dwRoutingPid: DWORD, lpInEntry: LPVOID, dwInEntrySize: DWORD, lplpOutEntry: ptr LPVOID, lpOutEntrySize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprAdminMIBBufferFree*(pBuffer: LPVOID): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigServerInstall*(dwLevel: DWORD, pBuffer: PVOID): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigServerConnect*(lpwsServerName: LPWSTR, phMprConfig: ptr HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigServerDisconnect*(hMprConfig: HANDLE): VOID {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigServerRefresh*(hMprConfig: HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigBufferFree*(pBuffer: LPVOID): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigServerGetInfo*(hMprConfig: HANDLE, dwLevel: DWORD, lplpbBuffer: ptr LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigServerSetInfo*(hMprServer: MPR_SERVER_HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigServerBackup*(hMprConfig: HANDLE, lpwsPath: LPWSTR): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigServerRestore*(hMprConfig: HANDLE, lpwsPath: LPWSTR): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigTransportCreate*(hMprConfig: HANDLE, dwTransportId: DWORD, lpwsTransportName: LPWSTR, pGlobalInfo: LPBYTE, dwGlobalInfoSize: DWORD, pClientInterfaceInfo: LPBYTE, dwClientInterfaceInfoSize: DWORD, lpwsDLLPath: LPWSTR, phRouterTransport: ptr HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigTransportDelete*(hMprConfig: HANDLE, hRouterTransport: HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigTransportGetHandle*(hMprConfig: HANDLE, dwTransportId: DWORD, phRouterTransport: ptr HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigTransportSetInfo*(hMprConfig: HANDLE, hRouterTransport: HANDLE, pGlobalInfo: LPBYTE, dwGlobalInfoSize: DWORD, pClientInterfaceInfo: LPBYTE, dwClientInterfaceInfoSize: DWORD, lpwsDLLPath: LPWSTR): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigTransportGetInfo*(hMprConfig: HANDLE, hRouterTransport: HANDLE, ppGlobalInfo: ptr LPBYTE, lpdwGlobalInfoSize: LPDWORD, ppClientInterfaceInfo: ptr LPBYTE, lpdwClientInterfaceInfoSize: LPDWORD, lplpwsDLLPath: ptr LPWSTR): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigTransportEnum*(hMprConfig: HANDLE, dwLevel: DWORD, lplpBuffer: ptr LPBYTE, dwPrefMaxLen: DWORD, lpdwEntriesRead: LPDWORD, lpdwTotalEntries: LPDWORD, lpdwResumeHandle: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigInterfaceCreate*(hMprConfig: HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE, phRouterInterface: ptr HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigInterfaceDelete*(hMprConfig: HANDLE, hRouterInterface: HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigInterfaceGetHandle*(hMprConfig: HANDLE, lpwsInterfaceName: LPWSTR, phRouterInterface: ptr HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigInterfaceGetInfo*(hMprConfig: HANDLE, hRouterInterface: HANDLE, dwLevel: DWORD, lplpBuffer: ptr LPBYTE, lpdwBufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigInterfaceSetInfo*(hMprConfig: HANDLE, hRouterInterface: HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigInterfaceEnum*(hMprConfig: HANDLE, dwLevel: DWORD, lplpBuffer: ptr LPBYTE, dwPrefMaxLen: DWORD, lpdwEntriesRead: LPDWORD, lpdwTotalEntries: LPDWORD, lpdwResumeHandle: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigInterfaceTransportAdd*(hMprConfig: HANDLE, hRouterInterface: HANDLE, dwTransportId: DWORD, lpwsTransportName: LPWSTR, pInterfaceInfo: LPBYTE, dwInterfaceInfoSize: DWORD, phRouterIfTransport: ptr HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigInterfaceTransportRemove*(hMprConfig: HANDLE, hRouterInterface: HANDLE, hRouterIfTransport: HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigInterfaceTransportGetHandle*(hMprConfig: HANDLE, hRouterInterface: HANDLE, dwTransportId: DWORD, phRouterIfTransport: ptr HANDLE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigInterfaceTransportGetInfo*(hMprConfig: HANDLE, hRouterInterface: HANDLE, hRouterIfTransport: HANDLE, ppInterfaceInfo: ptr LPBYTE, lpdwInterfaceInfoSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigInterfaceTransportSetInfo*(hMprConfig: HANDLE, hRouterInterface: HANDLE, hRouterIfTransport: HANDLE, pInterfaceInfo: LPBYTE, dwInterfaceInfoSize: DWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigInterfaceTransportEnum*(hMprConfig: HANDLE, hRouterInterface: HANDLE, dwLevel: DWORD, lplpBuffer: ptr LPBYTE, dwPrefMaxLen: DWORD, lpdwEntriesRead: LPDWORD, lpdwTotalEntries: LPDWORD, lpdwResumeHandle: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigGetFriendlyName*(hMprConfig: HANDLE, pszGuidName: PWCHAR, pszBuffer: PWCHAR, dwBufferSize: DWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigGetGuidName*(hMprConfig: HANDLE, pszFriendlyName: PWCHAR, pszBuffer: PWCHAR, dwBufferSize: DWORD): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprInfoCreate*(dwVersion: DWORD, lplpNewHeader: ptr LPVOID): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprInfoDelete*(lpHeader: LPVOID): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprInfoRemoveAll*(lpHeader: LPVOID, lplpNewHeader: ptr LPVOID): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprInfoDuplicate*(lpHeader: LPVOID, lplpNewHeader: ptr LPVOID): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprInfoBlockAdd*(lpHeader: LPVOID, dwInfoType: DWORD, dwItemSize: DWORD, dwItemCount: DWORD, lpItemData: LPBYTE, lplpNewHeader: ptr LPVOID): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprInfoBlockRemove*(lpHeader: LPVOID, dwInfoType: DWORD, lplpNewHeader: ptr LPVOID): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprInfoBlockSet*(lpHeader: LPVOID, dwInfoType: DWORD, dwItemSize: DWORD, dwItemCount: DWORD, lpItemData: LPBYTE, lplpNewHeader: ptr LPVOID): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprInfoBlockFind*(lpHeader: LPVOID, dwInfoType: DWORD, lpdwItemSize: LPDWORD, lpdwItemCount: LPDWORD, lplpItemData: ptr LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprInfoBlockQuerySize*(lpHeader: LPVOID): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigFilterGetInfo*(hMprConfig: HANDLE, dwLevel: DWORD, dwTransportId: DWORD, lpBuffer: LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc MprConfigFilterSetInfo*(hMprConfig: HANDLE, dwLevel: DWORD, dwTransportId: DWORD, lpBuffer: LPBYTE): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
-proc RasSecurityDialogSend*(hPort: HPORT, pBuffer: PBYTE, BufferLength: WORD): DWORD {.winapi, stdcall, dynlib: "rasman", importc.}
-proc RasSecurityDialogReceive*(hPort: HPORT, pBuffer: PBYTE, pBufferLength: PWORD, Timeout: DWORD, hEvent: HANDLE): DWORD {.winapi, stdcall, dynlib: "rasman", importc.}
-proc RasSecurityDialogGetInfo*(hPort: HPORT, pBuffer: ptr RAS_SECURITY_INFO): DWORD {.winapi, stdcall, dynlib: "rasman", importc.}
-proc `ipv4=`*(self: var RASTUNNELENDPOINT, x: RASIPV4ADDR) {.inline.} = self.union1.ipv4 = x
-proc ipv4*(self: RASTUNNELENDPOINT): RASIPV4ADDR {.inline.} = self.union1.ipv4
-proc ipv4*(self: var RASTUNNELENDPOINT): var RASIPV4ADDR {.inline.} = self.union1.ipv4
-proc `ipv6=`*(self: var RASTUNNELENDPOINT, x: RASIPV6ADDR) {.inline.} = self.union1.ipv6 = x
-proc ipv6*(self: RASTUNNELENDPOINT): RASIPV6ADDR {.inline.} = self.union1.ipv6
-proc ipv6*(self: var RASTUNNELENDPOINT): var RASIPV6ADDR {.inline.} = self.union1.ipv6
-proc `Ikev2ProjectionInfo=`*(self: var PROJECTION_INFO, x: IKEV2_PROJECTION_INFO) {.inline.} = self.union1.Ikev2ProjectionInfo = x
-proc ikev2ProjectionInfo*(self: PROJECTION_INFO): IKEV2_PROJECTION_INFO {.inline.} = self.union1.Ikev2ProjectionInfo
-proc ikev2ProjectionInfo*(self: var PROJECTION_INFO): var IKEV2_PROJECTION_INFO {.inline.} = self.union1.Ikev2ProjectionInfo
-proc `PppProjectionInfo=`*(self: var PROJECTION_INFO, x: PPP_PROJECTION_INFO) {.inline.} = self.union1.PppProjectionInfo = x
-proc pppProjectionInfo*(self: PROJECTION_INFO): PPP_PROJECTION_INFO {.inline.} = self.union1.PppProjectionInfo
-proc pppProjectionInfo*(self: var PROJECTION_INFO): var PPP_PROJECTION_INFO {.inline.} = self.union1.PppProjectionInfo
+proc RasGetProjectionInfoA*(
+  P1: HRASCONN, P2: RASPROJECTION, P3: LPVOID, P4: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetProjectionInfoW*(
+  P1: HRASCONN, P2: RASPROJECTION, P3: LPVOID, P4: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasCreatePhonebookEntryA*(
+  P1: HWND, P2: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasCreatePhonebookEntryW*(
+  P1: HWND, P2: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasEditPhonebookEntryA*(
+  P1: HWND, P2: LPCSTR, P3: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasEditPhonebookEntryW*(
+  P1: HWND, P2: LPCWSTR, P3: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetEntryDialParamsA*(
+  P1: LPCSTR, P2: LPRASDIALPARAMSA, P3: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetEntryDialParamsW*(
+  P1: LPCWSTR, P2: LPRASDIALPARAMSW, P3: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetEntryDialParamsA*(
+  P1: LPCSTR, P2: LPRASDIALPARAMSA, P3: LPBOOL
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetEntryDialParamsW*(
+  P1: LPCWSTR, P2: LPRASDIALPARAMSW, P3: LPBOOL
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasEnumDevicesA*(
+  P1: LPRASDEVINFOA, P2: LPDWORD, P3: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasEnumDevicesW*(
+  P1: LPRASDEVINFOW, P2: LPDWORD, P3: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetCountryInfoA*(
+  P1: LPRASCTRYINFOA, P2: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetCountryInfoW*(
+  P1: LPRASCTRYINFOW, P2: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetEntryPropertiesA*(
+  P1: LPCSTR, P2: LPCSTR, P3: LPRASENTRYA, P4: LPDWORD, P5: LPBYTE, P6: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetEntryPropertiesW*(
+  P1: LPCWSTR, P2: LPCWSTR, P3: LPRASENTRYW, P4: LPDWORD, P5: LPBYTE, P6: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetEntryPropertiesA*(
+  P1: LPCSTR, P2: LPCSTR, P3: LPRASENTRYA, P4: DWORD, P5: LPBYTE, P6: DWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetEntryPropertiesW*(
+  P1: LPCWSTR, P2: LPCWSTR, P3: LPRASENTRYW, P4: DWORD, P5: LPBYTE, P6: DWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasRenameEntryA*(
+  P1: LPCSTR, P2: LPCSTR, P3: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasRenameEntryW*(
+  P1: LPCWSTR, P2: LPCWSTR, P3: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasDeleteEntryA*(
+  P1: LPCSTR, P2: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasDeleteEntryW*(
+  P1: LPCWSTR, P2: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasValidateEntryNameA*(
+  P1: LPCSTR, P2: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasValidateEntryNameW*(
+  P1: LPCWSTR, P2: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasConnectionNotificationA*(
+  P1: HRASCONN, P2: HANDLE, P3: DWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasConnectionNotificationW*(
+  P1: HRASCONN, P2: HANDLE, P3: DWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetSubEntryHandleA*(
+  P1: HRASCONN, P2: DWORD, P3: LPHRASCONN
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetSubEntryHandleW*(
+  P1: HRASCONN, P2: DWORD, P3: LPHRASCONN
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetCredentialsA*(
+  P1: LPCSTR, P2: LPCSTR, P3: LPRASCREDENTIALSA
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetCredentialsW*(
+  P1: LPCWSTR, P2: LPCWSTR, P3: LPRASCREDENTIALSW
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetCredentialsA*(
+  P1: LPCSTR, P2: LPCSTR, P3: LPRASCREDENTIALSA, P4: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetCredentialsW*(
+  P1: LPCWSTR, P2: LPCWSTR, P3: LPRASCREDENTIALSW, P4: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetSubEntryPropertiesA*(
+  P1: LPCSTR,
+  P2: LPCSTR,
+  P3: DWORD,
+  P4: LPRASSUBENTRYA,
+  P5: LPDWORD,
+  P6: LPBYTE,
+  P7: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetSubEntryPropertiesW*(
+  P1: LPCWSTR,
+  P2: LPCWSTR,
+  P3: DWORD,
+  P4: LPRASSUBENTRYW,
+  P5: LPDWORD,
+  P6: LPBYTE,
+  P7: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetSubEntryPropertiesA*(
+  P1: LPCSTR,
+  P2: LPCSTR,
+  P3: DWORD,
+  P4: LPRASSUBENTRYA,
+  P5: DWORD,
+  P6: LPBYTE,
+  P7: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetSubEntryPropertiesW*(
+  P1: LPCWSTR,
+  P2: LPCWSTR,
+  P3: DWORD,
+  P4: LPRASSUBENTRYW,
+  P5: DWORD,
+  P6: LPBYTE,
+  P7: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetAutodialAddressA*(
+  P1: LPCSTR, P2: LPDWORD, P3: LPRASAUTODIALENTRYA, P4: LPDWORD, P5: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetAutodialAddressW*(
+  P1: LPCWSTR, P2: LPDWORD, P3: LPRASAUTODIALENTRYW, P4: LPDWORD, P5: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetAutodialAddressA*(
+  P1: LPCSTR, P2: DWORD, P3: LPRASAUTODIALENTRYA, P4: DWORD, P5: DWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetAutodialAddressW*(
+  P1: LPCWSTR, P2: DWORD, P3: LPRASAUTODIALENTRYW, P4: DWORD, P5: DWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasEnumAutodialAddressesA*(
+  P1: ptr LPSTR, P2: LPDWORD, P3: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasEnumAutodialAddressesW*(
+  P1: ptr LPWSTR, P2: LPDWORD, P3: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetAutodialEnableA*(
+  P1: DWORD, P2: LPBOOL
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetAutodialEnableW*(
+  P1: DWORD, P2: LPBOOL
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetAutodialEnableA*(
+  P1: DWORD, P2: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetAutodialEnableW*(
+  P1: DWORD, P2: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetAutodialParamA*(
+  P1: DWORD, P2: LPVOID, P3: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetAutodialParamW*(
+  P1: DWORD, P2: LPVOID, P3: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetAutodialParamA*(
+  P1: DWORD, P2: LPVOID, P3: DWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetAutodialParamW*(
+  P1: DWORD, P2: LPVOID, P3: DWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasInvokeEapUI*(
+  P1: HRASCONN, P2: DWORD, P3: LPRASDIALEXTENSIONS, P4: HWND
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetLinkStatistics*(
+  hRasConn: HRASCONN, dwSubEntry: DWORD, lpStatistics: ptr RAS_STATS
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetConnectionStatistics*(
+  hRasConn: HRASCONN, lpStatistics: ptr RAS_STATS
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasClearLinkStatistics*(
+  hRasConn: HRASCONN, dwSubEntry: DWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasClearConnectionStatistics*(
+  hRasConn: HRASCONN
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetEapUserDataA*(
+  hToken: HANDLE,
+  pszPhonebook: LPCSTR,
+  pszEntry: LPCSTR,
+  pbEapData: ptr BYTE,
+  pdwSizeofEapData: ptr DWORD,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetEapUserDataW*(
+  hToken: HANDLE,
+  pszPhonebook: LPCWSTR,
+  pszEntry: LPCWSTR,
+  pbEapData: ptr BYTE,
+  pdwSizeofEapData: ptr DWORD,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetEapUserDataA*(
+  hToken: HANDLE,
+  pszPhonebook: LPCSTR,
+  pszEntry: LPCSTR,
+  pbEapData: ptr BYTE,
+  dwSizeofEapData: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetEapUserDataW*(
+  hToken: HANDLE,
+  pszPhonebook: LPCWSTR,
+  pszEntry: LPCWSTR,
+  pbEapData: ptr BYTE,
+  dwSizeofEapData: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetCustomAuthDataA*(
+  pszPhonebook: LPCSTR,
+  pszEntry: LPCSTR,
+  pbCustomAuthData: ptr BYTE,
+  pdwSizeofCustomAuthData: ptr DWORD,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetCustomAuthDataW*(
+  pszPhonebook: LPCWSTR,
+  pszEntry: LPCWSTR,
+  pbCustomAuthData: ptr BYTE,
+  pdwSizeofCustomAuthData: ptr DWORD,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetCustomAuthDataA*(
+  pszPhonebook: LPCSTR,
+  pszEntry: LPCSTR,
+  pbCustomAuthData: ptr BYTE,
+  dwSizeofCustomAuthData: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasSetCustomAuthDataW*(
+  pszPhonebook: LPCWSTR,
+  pszEntry: LPCWSTR,
+  pbCustomAuthData: ptr BYTE,
+  dwSizeofCustomAuthData: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetEapUserIdentityW*(
+  pszPhonebook: LPCWSTR,
+  pszEntry: LPCWSTR,
+  dwFlags: DWORD,
+  hwnd: HWND,
+  ppRasEapUserIdentity: ptr LPRASEAPUSERIDENTITYW,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasGetEapUserIdentityA*(
+  pszPhonebook: LPCSTR,
+  pszEntry: LPCSTR,
+  dwFlags: DWORD,
+  hwnd: HWND,
+  ppRasEapUserIdentity: ptr LPRASEAPUSERIDENTITYA,
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasFreeEapUserIdentityW*(
+  pRasEapUserIdentity: LPRASEAPUSERIDENTITYW
+): VOID {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasFreeEapUserIdentityA*(
+  pRasEapUserIdentity: LPRASEAPUSERIDENTITYA
+): VOID {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasDeleteSubEntryA*(
+  pszPhonebook: LPCSTR, pszEntry: LPCSTR, dwSubentryId: DWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasDeleteSubEntryW*(
+  pszPhonebook: LPCWSTR, pszEntry: LPCWSTR, dwSubEntryId: DWORD
+): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc.}
+
+proc RasPhonebookDlgA*(
+  lpszPhonebook: LPSTR, lpszEntry: LPSTR, lpInfo: LPRASPBDLGA
+): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc.}
+
+proc RasPhonebookDlgW*(
+  lpszPhonebook: LPWSTR, lpszEntry: LPWSTR, lpInfo: LPRASPBDLGW
+): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc.}
+
+proc RasEntryDlgA*(
+  lpszPhonebook: LPSTR, lpszEntry: LPSTR, lpInfo: LPRASENTRYDLGA
+): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc.}
+
+proc RasEntryDlgW*(
+  lpszPhonebook: LPWSTR, lpszEntry: LPWSTR, lpInfo: LPRASENTRYDLGW
+): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc.}
+
+proc RasDialDlgA*(
+  lpszPhonebook: LPSTR, lpszEntry: LPSTR, lpszPhoneNumber: LPSTR, lpInfo: LPRASDIALDLG
+): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc.}
+
+proc RasDialDlgW*(
+  lpszPhonebook: LPWSTR,
+  lpszEntry: LPWSTR,
+  lpszPhoneNumber: LPWSTR,
+  lpInfo: LPRASDIALDLG,
+): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc.}
+
+proc MprAdminConnectionEnum*(
+  hRasServer: RAS_SERVER_HANDLE,
+  dwLevel: DWORD,
+  lplpbBuffer: ptr LPBYTE,
+  dwPrefMaxLen: DWORD,
+  lpdwEntriesRead: LPDWORD,
+  lpdwTotalEntries: LPDWORD,
+  lpdwResumeHandle: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminPortEnum*(
+  hRasServer: RAS_SERVER_HANDLE,
+  dwLevel: DWORD,
+  hConnection: HANDLE,
+  lplpbBuffer: ptr LPBYTE,
+  dwPrefMaxLen: DWORD,
+  lpdwEntriesRead: LPDWORD,
+  lpdwTotalEntries: LPDWORD,
+  lpdwResumeHandle: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminConnectionGetInfo*(
+  hRasServer: RAS_SERVER_HANDLE,
+  dwLevel: DWORD,
+  hConnection: HANDLE,
+  lplpbBuffer: ptr LPBYTE,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminPortGetInfo*(
+  hRasServer: RAS_SERVER_HANDLE, dwLevel: DWORD, hPort: HANDLE, lplpbBuffer: ptr LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminConnectionClearStats*(
+  hRasServer: RAS_SERVER_HANDLE, hConnection: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminPortClearStats*(
+  hRasServer: RAS_SERVER_HANDLE, hPort: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminPortReset*(
+  hRasServer: RAS_SERVER_HANDLE, hPort: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminPortDisconnect*(
+  hRasServer: RAS_SERVER_HANDLE, hPort: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminConnectionRemoveQuarantine*(
+  hRasServer: HANDLE, hRasConnection: HANDLE, fIsIpAddress: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminUserGetInfo*(
+  lpszServer: ptr WCHAR, lpszUser: ptr WCHAR, dwLevel: DWORD, lpbBuffer: LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminUserSetInfo*(
+  lpszServer: ptr WCHAR, lpszUser: ptr WCHAR, dwLevel: DWORD, lpbBuffer: LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminSendUserMessage*(
+  hMprServer: MPR_SERVER_HANDLE, hConnection: HANDLE, lpwszMessage: LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminGetPDCServer*(
+  lpszDomain: ptr WCHAR, lpszServer: ptr WCHAR, lpszPDCServer: LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminIsServiceRunning*(
+  lpwsServerName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminServerConnect*(
+  lpwsServerName: LPWSTR, phMprServer: ptr MPR_SERVER_HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminServerDisconnect*(
+  hMprServer: MPR_SERVER_HANDLE
+): VOID {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminServerGetCredentials*(
+  hMprServer: MPR_SERVER_HANDLE, dwLevel: DWORD, lplpbBuffer: ptr LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminServerSetCredentials*(
+  hMprServer: MPR_SERVER_HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminBufferFree*(
+  pBuffer: LPVOID
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminGetErrorString*(
+  dwError: DWORD, lpwsErrorString: ptr LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminServerGetInfo*(
+  hMprServer: MPR_SERVER_HANDLE, dwLevel: DWORD, lplpbBuffer: ptr LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminServerSetInfo*(
+  hMprServer: MPR_SERVER_HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminEstablishDomainRasServer*(
+  pszDomain: PWCHAR, pszMachine: PWCHAR, bEnable: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminIsDomainRasServer*(
+  pszDomain: PWCHAR, pszMachine: PWCHAR, pbIsRasServer: PBOOL
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminTransportCreate*(
+  hMprServer: MPR_SERVER_HANDLE,
+  dwTransportId: DWORD,
+  lpwsTransportName: LPWSTR,
+  pGlobalInfo: LPBYTE,
+  dwGlobalInfoSize: DWORD,
+  pClientInterfaceInfo: LPBYTE,
+  dwClientInterfaceInfoSize: DWORD,
+  lpwsDLLPath: LPWSTR,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminTransportSetInfo*(
+  hMprServer: MPR_SERVER_HANDLE,
+  dwTransportId: DWORD,
+  pGlobalInfo: LPBYTE,
+  dwGlobalInfoSize: DWORD,
+  pClientInterfaceInfo: LPBYTE,
+  dwClientInterfaceInfoSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminTransportGetInfo*(
+  hMprServer: MPR_SERVER_HANDLE,
+  dwTransportId: DWORD,
+  ppGlobalInfo: ptr LPBYTE,
+  lpdwGlobalInfoSize: LPDWORD,
+  ppClientInterfaceInfo: ptr LPBYTE,
+  lpdwClientInterfaceInfoSize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminDeviceEnum*(
+  hMprServer: MPR_SERVER_HANDLE,
+  dwLevel: DWORD,
+  lplpbBuffer: ptr LPBYTE,
+  lpdwTotalEntries: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceGetHandle*(
+  hMprServer: MPR_SERVER_HANDLE,
+  lpwsInterfaceName: LPWSTR,
+  phInterface: ptr HANDLE,
+  fIncludeClientInterfaces: WINBOOL,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceCreate*(
+  hMprServer: MPR_SERVER_HANDLE,
+  dwLevel: DWORD,
+  lpbBuffer: LPBYTE,
+  phInterface: ptr HANDLE,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceGetInfo*(
+  hMprServer: MPR_SERVER_HANDLE,
+  hInterface: HANDLE,
+  dwLevel: DWORD,
+  lplpbBuffer: ptr LPBYTE,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceSetInfo*(
+  hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceDelete*(
+  hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceDeviceGetInfo*(
+  hMprServer: MPR_SERVER_HANDLE,
+  hInterface: HANDLE,
+  dwIndex: DWORD,
+  dwLevel: DWORD,
+  lplpBuffer: ptr LPBYTE,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceDeviceSetInfo*(
+  hMprServer: MPR_SERVER_HANDLE,
+  hInterface: HANDLE,
+  dwIndex: DWORD,
+  dwLevel: DWORD,
+  lplpBuffer: LPBYTE,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceTransportRemove*(
+  hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwTransportId: DWORD
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceTransportAdd*(
+  hMprServer: MPR_SERVER_HANDLE,
+  hInterface: HANDLE,
+  dwTransportId: DWORD,
+  pInterfaceInfo: LPBYTE,
+  dwInterfaceInfoSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceTransportGetInfo*(
+  hMprServer: MPR_SERVER_HANDLE,
+  hInterface: HANDLE,
+  dwTransportId: DWORD,
+  ppInterfaceInfo: ptr LPBYTE,
+  lpdwpInterfaceInfoSize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceTransportSetInfo*(
+  hMprServer: MPR_SERVER_HANDLE,
+  hInterface: HANDLE,
+  dwTransportId: DWORD,
+  pInterfaceInfo: LPBYTE,
+  dwInterfaceInfoSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceEnum*(
+  hMprServer: MPR_SERVER_HANDLE,
+  dwLevel: DWORD,
+  lplpbBuffer: ptr LPBYTE,
+  dwPrefMaxLen: DWORD,
+  lpdwEntriesRead: LPDWORD,
+  lpdwTotalEntries: LPDWORD,
+  lpdwResumeHandle: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceSetCredentials*(
+  lpwsServer: LPWSTR,
+  lpwsInterfaceName: LPWSTR,
+  lpwsUserName: LPWSTR,
+  lpwsDomainName: LPWSTR,
+  lpwsPassword: LPWSTR,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceGetCredentials*(
+  lpwsServer: LPWSTR,
+  lpwsInterfaceName: LPWSTR,
+  lpwsUserName: LPWSTR,
+  lpwsPassword: LPWSTR,
+  lpwsDomainName: LPWSTR,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceSetCredentialsEx*(
+  hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceGetCredentialsEx*(
+  hMprServer: MPR_SERVER_HANDLE,
+  hInterface: HANDLE,
+  dwLevel: DWORD,
+  lplpbBuffer: ptr LPBYTE,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceConnect*(
+  hMprServer: MPR_SERVER_HANDLE,
+  hInterface: HANDLE,
+  hEvent: HANDLE,
+  fSynchronous: WINBOOL,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceDisconnect*(
+  hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceUpdateRoutes*(
+  hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE, dwProtocolId: DWORD, hEvent: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceQueryUpdateResult*(
+  hMprServer: MPR_SERVER_HANDLE,
+  hInterface: HANDLE,
+  dwProtocolId: DWORD,
+  lpdwUpdateResult: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminInterfaceUpdatePhonebookInfo*(
+  hMprServer: MPR_SERVER_HANDLE, hInterface: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminRegisterConnectionNotification*(
+  hMprServer: MPR_SERVER_HANDLE, hEventNotification: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminDeregisterConnectionNotification*(
+  hMprServer: MPR_SERVER_HANDLE, hEventNotification: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminMIBServerConnect*(
+  lpwsServerName: LPWSTR, phMibServer: ptr MIB_SERVER_HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminMIBServerDisconnect*(
+  hMibServer: MIB_SERVER_HANDLE
+): VOID {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminMIBEntryCreate*(
+  hMibServer: MIB_SERVER_HANDLE,
+  dwPid: DWORD,
+  dwRoutingPid: DWORD,
+  lpEntry: LPVOID,
+  dwEntrySize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminMIBEntryDelete*(
+  hMibServer: MIB_SERVER_HANDLE,
+  dwProtocolId: DWORD,
+  dwRoutingPid: DWORD,
+  lpEntry: LPVOID,
+  dwEntrySize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminMIBEntrySet*(
+  hMibServer: MIB_SERVER_HANDLE,
+  dwProtocolId: DWORD,
+  dwRoutingPid: DWORD,
+  lpEntry: LPVOID,
+  dwEntrySize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminMIBEntryGet*(
+  hMibServer: MIB_SERVER_HANDLE,
+  dwProtocolId: DWORD,
+  dwRoutingPid: DWORD,
+  lpInEntry: LPVOID,
+  dwInEntrySize: DWORD,
+  lplpOutEntry: ptr LPVOID,
+  lpOutEntrySize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminMIBEntryGetFirst*(
+  hMibServer: MIB_SERVER_HANDLE,
+  dwProtocolId: DWORD,
+  dwRoutingPid: DWORD,
+  lpInEntry: LPVOID,
+  dwInEntrySize: DWORD,
+  lplpOutEntry: ptr LPVOID,
+  lpOutEntrySize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminMIBEntryGetNext*(
+  hMibServer: MIB_SERVER_HANDLE,
+  dwProtocolId: DWORD,
+  dwRoutingPid: DWORD,
+  lpInEntry: LPVOID,
+  dwInEntrySize: DWORD,
+  lplpOutEntry: ptr LPVOID,
+  lpOutEntrySize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprAdminMIBBufferFree*(
+  pBuffer: LPVOID
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigServerInstall*(
+  dwLevel: DWORD, pBuffer: PVOID
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigServerConnect*(
+  lpwsServerName: LPWSTR, phMprConfig: ptr HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigServerDisconnect*(
+  hMprConfig: HANDLE
+): VOID {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigServerRefresh*(
+  hMprConfig: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigBufferFree*(
+  pBuffer: LPVOID
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigServerGetInfo*(
+  hMprConfig: HANDLE, dwLevel: DWORD, lplpbBuffer: ptr LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigServerSetInfo*(
+  hMprServer: MPR_SERVER_HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigServerBackup*(
+  hMprConfig: HANDLE, lpwsPath: LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigServerRestore*(
+  hMprConfig: HANDLE, lpwsPath: LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigTransportCreate*(
+  hMprConfig: HANDLE,
+  dwTransportId: DWORD,
+  lpwsTransportName: LPWSTR,
+  pGlobalInfo: LPBYTE,
+  dwGlobalInfoSize: DWORD,
+  pClientInterfaceInfo: LPBYTE,
+  dwClientInterfaceInfoSize: DWORD,
+  lpwsDLLPath: LPWSTR,
+  phRouterTransport: ptr HANDLE,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigTransportDelete*(
+  hMprConfig: HANDLE, hRouterTransport: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigTransportGetHandle*(
+  hMprConfig: HANDLE, dwTransportId: DWORD, phRouterTransport: ptr HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigTransportSetInfo*(
+  hMprConfig: HANDLE,
+  hRouterTransport: HANDLE,
+  pGlobalInfo: LPBYTE,
+  dwGlobalInfoSize: DWORD,
+  pClientInterfaceInfo: LPBYTE,
+  dwClientInterfaceInfoSize: DWORD,
+  lpwsDLLPath: LPWSTR,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigTransportGetInfo*(
+  hMprConfig: HANDLE,
+  hRouterTransport: HANDLE,
+  ppGlobalInfo: ptr LPBYTE,
+  lpdwGlobalInfoSize: LPDWORD,
+  ppClientInterfaceInfo: ptr LPBYTE,
+  lpdwClientInterfaceInfoSize: LPDWORD,
+  lplpwsDLLPath: ptr LPWSTR,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigTransportEnum*(
+  hMprConfig: HANDLE,
+  dwLevel: DWORD,
+  lplpBuffer: ptr LPBYTE,
+  dwPrefMaxLen: DWORD,
+  lpdwEntriesRead: LPDWORD,
+  lpdwTotalEntries: LPDWORD,
+  lpdwResumeHandle: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigInterfaceCreate*(
+  hMprConfig: HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE, phRouterInterface: ptr HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigInterfaceDelete*(
+  hMprConfig: HANDLE, hRouterInterface: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigInterfaceGetHandle*(
+  hMprConfig: HANDLE, lpwsInterfaceName: LPWSTR, phRouterInterface: ptr HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigInterfaceGetInfo*(
+  hMprConfig: HANDLE,
+  hRouterInterface: HANDLE,
+  dwLevel: DWORD,
+  lplpBuffer: ptr LPBYTE,
+  lpdwBufferSize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigInterfaceSetInfo*(
+  hMprConfig: HANDLE, hRouterInterface: HANDLE, dwLevel: DWORD, lpbBuffer: LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigInterfaceEnum*(
+  hMprConfig: HANDLE,
+  dwLevel: DWORD,
+  lplpBuffer: ptr LPBYTE,
+  dwPrefMaxLen: DWORD,
+  lpdwEntriesRead: LPDWORD,
+  lpdwTotalEntries: LPDWORD,
+  lpdwResumeHandle: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigInterfaceTransportAdd*(
+  hMprConfig: HANDLE,
+  hRouterInterface: HANDLE,
+  dwTransportId: DWORD,
+  lpwsTransportName: LPWSTR,
+  pInterfaceInfo: LPBYTE,
+  dwInterfaceInfoSize: DWORD,
+  phRouterIfTransport: ptr HANDLE,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigInterfaceTransportRemove*(
+  hMprConfig: HANDLE, hRouterInterface: HANDLE, hRouterIfTransport: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigInterfaceTransportGetHandle*(
+  hMprConfig: HANDLE,
+  hRouterInterface: HANDLE,
+  dwTransportId: DWORD,
+  phRouterIfTransport: ptr HANDLE,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigInterfaceTransportGetInfo*(
+  hMprConfig: HANDLE,
+  hRouterInterface: HANDLE,
+  hRouterIfTransport: HANDLE,
+  ppInterfaceInfo: ptr LPBYTE,
+  lpdwInterfaceInfoSize: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigInterfaceTransportSetInfo*(
+  hMprConfig: HANDLE,
+  hRouterInterface: HANDLE,
+  hRouterIfTransport: HANDLE,
+  pInterfaceInfo: LPBYTE,
+  dwInterfaceInfoSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigInterfaceTransportEnum*(
+  hMprConfig: HANDLE,
+  hRouterInterface: HANDLE,
+  dwLevel: DWORD,
+  lplpBuffer: ptr LPBYTE,
+  dwPrefMaxLen: DWORD,
+  lpdwEntriesRead: LPDWORD,
+  lpdwTotalEntries: LPDWORD,
+  lpdwResumeHandle: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigGetFriendlyName*(
+  hMprConfig: HANDLE, pszGuidName: PWCHAR, pszBuffer: PWCHAR, dwBufferSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigGetGuidName*(
+  hMprConfig: HANDLE, pszFriendlyName: PWCHAR, pszBuffer: PWCHAR, dwBufferSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprInfoCreate*(
+  dwVersion: DWORD, lplpNewHeader: ptr LPVOID
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprInfoDelete*(
+  lpHeader: LPVOID
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprInfoRemoveAll*(
+  lpHeader: LPVOID, lplpNewHeader: ptr LPVOID
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprInfoDuplicate*(
+  lpHeader: LPVOID, lplpNewHeader: ptr LPVOID
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprInfoBlockAdd*(
+  lpHeader: LPVOID,
+  dwInfoType: DWORD,
+  dwItemSize: DWORD,
+  dwItemCount: DWORD,
+  lpItemData: LPBYTE,
+  lplpNewHeader: ptr LPVOID,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprInfoBlockRemove*(
+  lpHeader: LPVOID, dwInfoType: DWORD, lplpNewHeader: ptr LPVOID
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprInfoBlockSet*(
+  lpHeader: LPVOID,
+  dwInfoType: DWORD,
+  dwItemSize: DWORD,
+  dwItemCount: DWORD,
+  lpItemData: LPBYTE,
+  lplpNewHeader: ptr LPVOID,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprInfoBlockFind*(
+  lpHeader: LPVOID,
+  dwInfoType: DWORD,
+  lpdwItemSize: LPDWORD,
+  lpdwItemCount: LPDWORD,
+  lplpItemData: ptr LPBYTE,
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprInfoBlockQuerySize*(
+  lpHeader: LPVOID
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigFilterGetInfo*(
+  hMprConfig: HANDLE, dwLevel: DWORD, dwTransportId: DWORD, lpBuffer: LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc MprConfigFilterSetInfo*(
+  hMprConfig: HANDLE, dwLevel: DWORD, dwTransportId: DWORD, lpBuffer: LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "mprapi", importc.}
+
+proc RasSecurityDialogSend*(
+  hPort: HPORT, pBuffer: PBYTE, BufferLength: WORD
+): DWORD {.winapi, stdcall, dynlib: "rasman", importc.}
+
+proc RasSecurityDialogReceive*(
+  hPort: HPORT, pBuffer: PBYTE, pBufferLength: PWORD, Timeout: DWORD, hEvent: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "rasman", importc.}
+
+proc RasSecurityDialogGetInfo*(
+  hPort: HPORT, pBuffer: ptr RAS_SECURITY_INFO
+): DWORD {.winapi, stdcall, dynlib: "rasman", importc.}
+
+proc `ipv4=`*(self: var RASTUNNELENDPOINT, x: RASIPV4ADDR) {.inline.} =
+  self.union1.ipv4 = x
+
+proc ipv4*(self: RASTUNNELENDPOINT): RASIPV4ADDR {.inline.} =
+  self.union1.ipv4
+
+proc ipv4*(self: var RASTUNNELENDPOINT): var RASIPV4ADDR {.inline.} =
+  self.union1.ipv4
+
+proc `ipv6=`*(self: var RASTUNNELENDPOINT, x: RASIPV6ADDR) {.inline.} =
+  self.union1.ipv6 = x
+
+proc ipv6*(self: RASTUNNELENDPOINT): RASIPV6ADDR {.inline.} =
+  self.union1.ipv6
+
+proc ipv6*(self: var RASTUNNELENDPOINT): var RASIPV6ADDR {.inline.} =
+  self.union1.ipv6
+
+proc `Ikev2ProjectionInfo=`*(
+    self: var PROJECTION_INFO, x: IKEV2_PROJECTION_INFO
+) {.inline.} =
+  self.union1.Ikev2ProjectionInfo = x
+
+proc ikev2ProjectionInfo*(self: PROJECTION_INFO): IKEV2_PROJECTION_INFO {.inline.} =
+  self.union1.Ikev2ProjectionInfo
+
+proc ikev2ProjectionInfo*(
+    self: var PROJECTION_INFO
+): var IKEV2_PROJECTION_INFO {.inline.} =
+  self.union1.Ikev2ProjectionInfo
+
+proc `PppProjectionInfo=`*(
+    self: var PROJECTION_INFO, x: PPP_PROJECTION_INFO
+) {.inline.} =
+  self.union1.PppProjectionInfo = x
+
+proc pppProjectionInfo*(self: PROJECTION_INFO): PPP_PROJECTION_INFO {.inline.} =
+  self.union1.PppProjectionInfo
+
+proc pppProjectionInfo*(self: var PROJECTION_INFO): var PPP_PROJECTION_INFO {.inline.} =
+  self.union1.PppProjectionInfo
+
 when winimUnicode:
   type
     RASADFUNC* = RASADFUNCW
     RASEAPUSERIDENTITY* = RASEAPUSERIDENTITYW
     RASPBDLGFUNC* = RASPBDLGFUNCW
-  proc RasDial*(P1: LPRASDIALEXTENSIONS, P2: LPCWSTR, P3: LPRASDIALPARAMSW, P4: DWORD, P5: LPVOID, P6: LPHRASCONN): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasDialW".}
-  proc RasEnumConnections*(P1: LPRASCONNW, P2: LPDWORD, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumConnectionsW".}
-  proc RasEnumEntries*(P1: LPCWSTR, P2: LPCWSTR, P3: LPRASENTRYNAMEW, P4: LPDWORD, P5: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumEntriesW".}
-  proc RasGetConnectStatus*(P1: HRASCONN, P2: LPRASCONNSTATUSW): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetConnectStatusW".}
-  proc RasGetErrorString*(P1: UINT, P2: LPWSTR, P3: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetErrorStringW".}
-  proc RasHangUp*(P1: HRASCONN): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasHangUpW".}
-  proc RasGetProjectionInfo*(P1: HRASCONN, P2: RASPROJECTION, P3: LPVOID, P4: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetProjectionInfoW".}
-  proc RasCreatePhonebookEntry*(P1: HWND, P2: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasCreatePhonebookEntryW".}
-  proc RasEditPhonebookEntry*(P1: HWND, P2: LPCWSTR, P3: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEditPhonebookEntryW".}
-  proc RasSetEntryDialParams*(P1: LPCWSTR, P2: LPRASDIALPARAMSW, P3: WINBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetEntryDialParamsW".}
-  proc RasGetEntryDialParams*(P1: LPCWSTR, P2: LPRASDIALPARAMSW, P3: LPBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEntryDialParamsW".}
-  proc RasEnumDevices*(P1: LPRASDEVINFOW, P2: LPDWORD, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumDevicesW".}
-  proc RasGetCountryInfo*(P1: LPRASCTRYINFOW, P2: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetCountryInfoW".}
-  proc RasGetEntryProperties*(P1: LPCWSTR, P2: LPCWSTR, P3: LPRASENTRYW, P4: LPDWORD, P5: LPBYTE, P6: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEntryPropertiesW".}
-  proc RasSetEntryProperties*(P1: LPCWSTR, P2: LPCWSTR, P3: LPRASENTRYW, P4: DWORD, P5: LPBYTE, P6: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetEntryPropertiesW".}
-  proc RasRenameEntry*(P1: LPCWSTR, P2: LPCWSTR, P3: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasRenameEntryW".}
-  proc RasDeleteEntry*(P1: LPCWSTR, P2: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasDeleteEntryW".}
-  proc RasValidateEntryName*(P1: LPCWSTR, P2: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasValidateEntryNameW".}
-  proc RasGetSubEntryHandle*(P1: HRASCONN, P2: DWORD, P3: LPHRASCONN): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetSubEntryHandleW".}
-  proc RasConnectionNotification*(P1: HRASCONN, P2: HANDLE, P3: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasConnectionNotificationW".}
-  proc RasGetSubEntryProperties*(P1: LPCWSTR, P2: LPCWSTR, P3: DWORD, P4: LPRASSUBENTRYW, P5: LPDWORD, P6: LPBYTE, P7: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetSubEntryPropertiesW".}
-  proc RasSetSubEntryProperties*(P1: LPCWSTR, P2: LPCWSTR, P3: DWORD, P4: LPRASSUBENTRYW, P5: DWORD, P6: LPBYTE, P7: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetSubEntryPropertiesW".}
-  proc RasGetCredentials*(P1: LPCWSTR, P2: LPCWSTR, P3: LPRASCREDENTIALSW): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetCredentialsW".}
-  proc RasSetCredentials*(P1: LPCWSTR, P2: LPCWSTR, P3: LPRASCREDENTIALSW, P4: WINBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetCredentialsW".}
-  proc RasGetAutodialAddress*(P1: LPCWSTR, P2: LPDWORD, P3: LPRASAUTODIALENTRYW, P4: LPDWORD, P5: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetAutodialAddressW".}
-  proc RasSetAutodialAddress*(P1: LPCWSTR, P2: DWORD, P3: LPRASAUTODIALENTRYW, P4: DWORD, P5: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetAutodialAddressW".}
-  proc RasEnumAutodialAddresses*(P1: ptr LPWSTR, P2: LPDWORD, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumAutodialAddressesW".}
-  proc RasGetAutodialEnable*(P1: DWORD, P2: LPBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetAutodialEnableW".}
-  proc RasSetAutodialEnable*(P1: DWORD, P2: WINBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetAutodialEnableW".}
-  proc RasGetAutodialParam*(P1: DWORD, P2: LPVOID, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetAutodialParamW".}
-  proc RasSetAutodialParam*(P1: DWORD, P2: LPVOID, P3: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetAutodialParamW".}
-  proc RasGetEapUserData*(hToken: HANDLE, pszPhonebook: LPCWSTR, pszEntry: LPCWSTR, pbEapData: ptr BYTE, pdwSizeofEapData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEapUserDataW".}
-  proc RasSetEapUserData*(hToken: HANDLE, pszPhonebook: LPCWSTR, pszEntry: LPCWSTR, pbEapData: ptr BYTE, dwSizeofEapData: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetEapUserDataW".}
-  proc RasGetCustomAuthData*(pszPhonebook: LPCWSTR, pszEntry: LPCWSTR, pbCustomAuthData: ptr BYTE, pdwSizeofCustomAuthData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetCustomAuthDataW".}
-  proc RasSetCustomAuthData*(pszPhonebook: LPCWSTR, pszEntry: LPCWSTR, pbCustomAuthData: ptr BYTE, dwSizeofCustomAuthData: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetCustomAuthDataW".}
-  proc RasGetEapUserIdentity*(pszPhonebook: LPCWSTR, pszEntry: LPCWSTR, dwFlags: DWORD, hwnd: HWND, ppRasEapUserIdentity: ptr LPRASEAPUSERIDENTITYW): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEapUserIdentityW".}
-  proc RasFreeEapUserIdentity*(pRasEapUserIdentity: LPRASEAPUSERIDENTITYW): VOID {.winapi, stdcall, dynlib: "rasapi32", importc: "RasFreeEapUserIdentityW".}
-  proc RasDeleteSubEntry*(pszPhonebook: LPCWSTR, pszEntry: LPCWSTR, dwSubEntryId: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasDeleteSubEntryW".}
-  proc RasPhonebookDlg*(lpszPhonebook: LPWSTR, lpszEntry: LPWSTR, lpInfo: LPRASPBDLGW): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc: "RasPhonebookDlgW".}
-  proc RasEntryDlg*(lpszPhonebook: LPWSTR, lpszEntry: LPWSTR, lpInfo: LPRASENTRYDLGW): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc: "RasEntryDlgW".}
-  proc RasDialDlg*(lpszPhonebook: LPWSTR, lpszEntry: LPWSTR, lpszPhoneNumber: LPWSTR, lpInfo: LPRASDIALDLG): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc: "RasDialDlgW".}
+
+  proc RasDial*(
+    P1: LPRASDIALEXTENSIONS,
+    P2: LPCWSTR,
+    P3: LPRASDIALPARAMSW,
+    P4: DWORD,
+    P5: LPVOID,
+    P6: LPHRASCONN,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasDialW".}
+
+  proc RasEnumConnections*(
+    P1: LPRASCONNW, P2: LPDWORD, P3: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumConnectionsW".}
+
+  proc RasEnumEntries*(
+    P1: LPCWSTR, P2: LPCWSTR, P3: LPRASENTRYNAMEW, P4: LPDWORD, P5: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumEntriesW".}
+
+  proc RasGetConnectStatus*(
+    P1: HRASCONN, P2: LPRASCONNSTATUSW
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetConnectStatusW".}
+
+  proc RasGetErrorString*(
+    P1: UINT, P2: LPWSTR, P3: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetErrorStringW".}
+
+  proc RasHangUp*(
+    P1: HRASCONN
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasHangUpW".}
+
+  proc RasGetProjectionInfo*(
+    P1: HRASCONN, P2: RASPROJECTION, P3: LPVOID, P4: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetProjectionInfoW".}
+
+  proc RasCreatePhonebookEntry*(
+    P1: HWND, P2: LPCWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasCreatePhonebookEntryW".}
+
+  proc RasEditPhonebookEntry*(
+    P1: HWND, P2: LPCWSTR, P3: LPCWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEditPhonebookEntryW".}
+
+  proc RasSetEntryDialParams*(
+    P1: LPCWSTR, P2: LPRASDIALPARAMSW, P3: WINBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetEntryDialParamsW".}
+
+  proc RasGetEntryDialParams*(
+    P1: LPCWSTR, P2: LPRASDIALPARAMSW, P3: LPBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEntryDialParamsW".}
+
+  proc RasEnumDevices*(
+    P1: LPRASDEVINFOW, P2: LPDWORD, P3: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumDevicesW".}
+
+  proc RasGetCountryInfo*(
+    P1: LPRASCTRYINFOW, P2: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetCountryInfoW".}
+
+  proc RasGetEntryProperties*(
+    P1: LPCWSTR, P2: LPCWSTR, P3: LPRASENTRYW, P4: LPDWORD, P5: LPBYTE, P6: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEntryPropertiesW".}
+
+  proc RasSetEntryProperties*(
+    P1: LPCWSTR, P2: LPCWSTR, P3: LPRASENTRYW, P4: DWORD, P5: LPBYTE, P6: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetEntryPropertiesW".}
+
+  proc RasRenameEntry*(
+    P1: LPCWSTR, P2: LPCWSTR, P3: LPCWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasRenameEntryW".}
+
+  proc RasDeleteEntry*(
+    P1: LPCWSTR, P2: LPCWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasDeleteEntryW".}
+
+  proc RasValidateEntryName*(
+    P1: LPCWSTR, P2: LPCWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasValidateEntryNameW".}
+
+  proc RasGetSubEntryHandle*(
+    P1: HRASCONN, P2: DWORD, P3: LPHRASCONN
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetSubEntryHandleW".}
+
+  proc RasConnectionNotification*(
+    P1: HRASCONN, P2: HANDLE, P3: DWORD
+  ): DWORD {.
+    winapi, stdcall, dynlib: "rasapi32", importc: "RasConnectionNotificationW"
+  .}
+
+  proc RasGetSubEntryProperties*(
+    P1: LPCWSTR,
+    P2: LPCWSTR,
+    P3: DWORD,
+    P4: LPRASSUBENTRYW,
+    P5: LPDWORD,
+    P6: LPBYTE,
+    P7: LPDWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetSubEntryPropertiesW".}
+
+  proc RasSetSubEntryProperties*(
+    P1: LPCWSTR,
+    P2: LPCWSTR,
+    P3: DWORD,
+    P4: LPRASSUBENTRYW,
+    P5: DWORD,
+    P6: LPBYTE,
+    P7: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetSubEntryPropertiesW".}
+
+  proc RasGetCredentials*(
+    P1: LPCWSTR, P2: LPCWSTR, P3: LPRASCREDENTIALSW
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetCredentialsW".}
+
+  proc RasSetCredentials*(
+    P1: LPCWSTR, P2: LPCWSTR, P3: LPRASCREDENTIALSW, P4: WINBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetCredentialsW".}
+
+  proc RasGetAutodialAddress*(
+    P1: LPCWSTR, P2: LPDWORD, P3: LPRASAUTODIALENTRYW, P4: LPDWORD, P5: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetAutodialAddressW".}
+
+  proc RasSetAutodialAddress*(
+    P1: LPCWSTR, P2: DWORD, P3: LPRASAUTODIALENTRYW, P4: DWORD, P5: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetAutodialAddressW".}
+
+  proc RasEnumAutodialAddresses*(
+    P1: ptr LPWSTR, P2: LPDWORD, P3: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumAutodialAddressesW".}
+
+  proc RasGetAutodialEnable*(
+    P1: DWORD, P2: LPBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetAutodialEnableW".}
+
+  proc RasSetAutodialEnable*(
+    P1: DWORD, P2: WINBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetAutodialEnableW".}
+
+  proc RasGetAutodialParam*(
+    P1: DWORD, P2: LPVOID, P3: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetAutodialParamW".}
+
+  proc RasSetAutodialParam*(
+    P1: DWORD, P2: LPVOID, P3: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetAutodialParamW".}
+
+  proc RasGetEapUserData*(
+    hToken: HANDLE,
+    pszPhonebook: LPCWSTR,
+    pszEntry: LPCWSTR,
+    pbEapData: ptr BYTE,
+    pdwSizeofEapData: ptr DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEapUserDataW".}
+
+  proc RasSetEapUserData*(
+    hToken: HANDLE,
+    pszPhonebook: LPCWSTR,
+    pszEntry: LPCWSTR,
+    pbEapData: ptr BYTE,
+    dwSizeofEapData: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetEapUserDataW".}
+
+  proc RasGetCustomAuthData*(
+    pszPhonebook: LPCWSTR,
+    pszEntry: LPCWSTR,
+    pbCustomAuthData: ptr BYTE,
+    pdwSizeofCustomAuthData: ptr DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetCustomAuthDataW".}
+
+  proc RasSetCustomAuthData*(
+    pszPhonebook: LPCWSTR,
+    pszEntry: LPCWSTR,
+    pbCustomAuthData: ptr BYTE,
+    dwSizeofCustomAuthData: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetCustomAuthDataW".}
+
+  proc RasGetEapUserIdentity*(
+    pszPhonebook: LPCWSTR,
+    pszEntry: LPCWSTR,
+    dwFlags: DWORD,
+    hwnd: HWND,
+    ppRasEapUserIdentity: ptr LPRASEAPUSERIDENTITYW,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEapUserIdentityW".}
+
+  proc RasFreeEapUserIdentity*(
+    pRasEapUserIdentity: LPRASEAPUSERIDENTITYW
+  ): VOID {.winapi, stdcall, dynlib: "rasapi32", importc: "RasFreeEapUserIdentityW".}
+
+  proc RasDeleteSubEntry*(
+    pszPhonebook: LPCWSTR, pszEntry: LPCWSTR, dwSubEntryId: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasDeleteSubEntryW".}
+
+  proc RasPhonebookDlg*(
+    lpszPhonebook: LPWSTR, lpszEntry: LPWSTR, lpInfo: LPRASPBDLGW
+  ): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc: "RasPhonebookDlgW".}
+
+  proc RasEntryDlg*(
+    lpszPhonebook: LPWSTR, lpszEntry: LPWSTR, lpInfo: LPRASENTRYDLGW
+  ): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc: "RasEntryDlgW".}
+
+  proc RasDialDlg*(
+    lpszPhonebook: LPWSTR,
+    lpszEntry: LPWSTR,
+    lpszPhoneNumber: LPWSTR,
+    lpInfo: LPRASDIALDLG,
+  ): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc: "RasDialDlgW".}
+
 when winimAnsi:
   type
     RASADFUNC* = RASADFUNCA
     RASEAPUSERIDENTITY* = RASEAPUSERIDENTITYA
     RASPBDLGFUNC* = RASPBDLGFUNCA
-  proc RasDial*(P1: LPRASDIALEXTENSIONS, P2: LPCSTR, P3: LPRASDIALPARAMSA, P4: DWORD, P5: LPVOID, P6: LPHRASCONN): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasDialA".}
-  proc RasEnumConnections*(P1: LPRASCONNA, P2: LPDWORD, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumConnectionsA".}
-  proc RasEnumEntries*(P1: LPCSTR, P2: LPCSTR, P3: LPRASENTRYNAMEA, P4: LPDWORD, P5: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumEntriesA".}
-  proc RasGetConnectStatus*(P1: HRASCONN, P2: LPRASCONNSTATUSA): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetConnectStatusA".}
-  proc RasGetErrorString*(P1: UINT, P2: LPSTR, P3: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetErrorStringA".}
-  proc RasHangUp*(P1: HRASCONN): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasHangUpA".}
-  proc RasGetProjectionInfo*(P1: HRASCONN, P2: RASPROJECTION, P3: LPVOID, P4: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetProjectionInfoA".}
-  proc RasCreatePhonebookEntry*(P1: HWND, P2: LPCSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasCreatePhonebookEntryA".}
-  proc RasEditPhonebookEntry*(P1: HWND, P2: LPCSTR, P3: LPCSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEditPhonebookEntryA".}
-  proc RasSetEntryDialParams*(P1: LPCSTR, P2: LPRASDIALPARAMSA, P3: WINBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetEntryDialParamsA".}
-  proc RasGetEntryDialParams*(P1: LPCSTR, P2: LPRASDIALPARAMSA, P3: LPBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEntryDialParamsA".}
-  proc RasEnumDevices*(P1: LPRASDEVINFOA, P2: LPDWORD, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumDevicesA".}
-  proc RasGetCountryInfo*(P1: LPRASCTRYINFOA, P2: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetCountryInfoA".}
-  proc RasGetEntryProperties*(P1: LPCSTR, P2: LPCSTR, P3: LPRASENTRYA, P4: LPDWORD, P5: LPBYTE, P6: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEntryPropertiesA".}
-  proc RasSetEntryProperties*(P1: LPCSTR, P2: LPCSTR, P3: LPRASENTRYA, P4: DWORD, P5: LPBYTE, P6: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetEntryPropertiesA".}
-  proc RasRenameEntry*(P1: LPCSTR, P2: LPCSTR, P3: LPCSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasRenameEntryA".}
-  proc RasDeleteEntry*(P1: LPCSTR, P2: LPCSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasDeleteEntryA".}
-  proc RasValidateEntryName*(P1: LPCSTR, P2: LPCSTR): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasValidateEntryNameA".}
-  proc RasGetSubEntryHandle*(P1: HRASCONN, P2: DWORD, P3: LPHRASCONN): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetSubEntryHandleA".}
-  proc RasConnectionNotification*(P1: HRASCONN, P2: HANDLE, P3: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasConnectionNotificationA".}
-  proc RasGetSubEntryProperties*(P1: LPCSTR, P2: LPCSTR, P3: DWORD, P4: LPRASSUBENTRYA, P5: LPDWORD, P6: LPBYTE, P7: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetSubEntryPropertiesA".}
-  proc RasSetSubEntryProperties*(P1: LPCSTR, P2: LPCSTR, P3: DWORD, P4: LPRASSUBENTRYA, P5: DWORD, P6: LPBYTE, P7: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetSubEntryPropertiesA".}
-  proc RasGetCredentials*(P1: LPCSTR, P2: LPCSTR, P3: LPRASCREDENTIALSA): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetCredentialsA".}
-  proc RasSetCredentials*(P1: LPCSTR, P2: LPCSTR, P3: LPRASCREDENTIALSA, P4: WINBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetCredentialsA".}
-  proc RasGetAutodialAddress*(P1: LPCSTR, P2: LPDWORD, P3: LPRASAUTODIALENTRYA, P4: LPDWORD, P5: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetAutodialAddressA".}
-  proc RasSetAutodialAddress*(P1: LPCSTR, P2: DWORD, P3: LPRASAUTODIALENTRYA, P4: DWORD, P5: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetAutodialAddressA".}
-  proc RasEnumAutodialAddresses*(P1: ptr LPSTR, P2: LPDWORD, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumAutodialAddressesA".}
-  proc RasGetAutodialEnable*(P1: DWORD, P2: LPBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetAutodialEnableA".}
-  proc RasSetAutodialEnable*(P1: DWORD, P2: WINBOOL): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetAutodialEnableA".}
-  proc RasGetAutodialParam*(P1: DWORD, P2: LPVOID, P3: LPDWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetAutodialParamA".}
-  proc RasSetAutodialParam*(P1: DWORD, P2: LPVOID, P3: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetAutodialParamA".}
-  proc RasGetEapUserData*(hToken: HANDLE, pszPhonebook: LPCSTR, pszEntry: LPCSTR, pbEapData: ptr BYTE, pdwSizeofEapData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEapUserDataA".}
-  proc RasSetEapUserData*(hToken: HANDLE, pszPhonebook: LPCSTR, pszEntry: LPCSTR, pbEapData: ptr BYTE, dwSizeofEapData: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetEapUserDataA".}
-  proc RasGetCustomAuthData*(pszPhonebook: LPCSTR, pszEntry: LPCSTR, pbCustomAuthData: ptr BYTE, pdwSizeofCustomAuthData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetCustomAuthDataA".}
-  proc RasSetCustomAuthData*(pszPhonebook: LPCSTR, pszEntry: LPCSTR, pbCustomAuthData: ptr BYTE, dwSizeofCustomAuthData: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetCustomAuthDataA".}
-  proc RasGetEapUserIdentity*(pszPhonebook: LPCSTR, pszEntry: LPCSTR, dwFlags: DWORD, hwnd: HWND, ppRasEapUserIdentity: ptr LPRASEAPUSERIDENTITYA): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEapUserIdentityA".}
-  proc RasFreeEapUserIdentity*(pRasEapUserIdentity: LPRASEAPUSERIDENTITYA): VOID {.winapi, stdcall, dynlib: "rasapi32", importc: "RasFreeEapUserIdentityA".}
-  proc RasDeleteSubEntry*(pszPhonebook: LPCSTR, pszEntry: LPCSTR, dwSubentryId: DWORD): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasDeleteSubEntryA".}
-  proc RasPhonebookDlg*(lpszPhonebook: LPSTR, lpszEntry: LPSTR, lpInfo: LPRASPBDLGA): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc: "RasPhonebookDlgA".}
-  proc RasEntryDlg*(lpszPhonebook: LPSTR, lpszEntry: LPSTR, lpInfo: LPRASENTRYDLGA): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc: "RasEntryDlgA".}
-  proc RasDialDlg*(lpszPhonebook: LPSTR, lpszEntry: LPSTR, lpszPhoneNumber: LPSTR, lpInfo: LPRASDIALDLG): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc: "RasDialDlgA".}
+
+  proc RasDial*(
+    P1: LPRASDIALEXTENSIONS,
+    P2: LPCSTR,
+    P3: LPRASDIALPARAMSA,
+    P4: DWORD,
+    P5: LPVOID,
+    P6: LPHRASCONN,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasDialA".}
+
+  proc RasEnumConnections*(
+    P1: LPRASCONNA, P2: LPDWORD, P3: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumConnectionsA".}
+
+  proc RasEnumEntries*(
+    P1: LPCSTR, P2: LPCSTR, P3: LPRASENTRYNAMEA, P4: LPDWORD, P5: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumEntriesA".}
+
+  proc RasGetConnectStatus*(
+    P1: HRASCONN, P2: LPRASCONNSTATUSA
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetConnectStatusA".}
+
+  proc RasGetErrorString*(
+    P1: UINT, P2: LPSTR, P3: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetErrorStringA".}
+
+  proc RasHangUp*(
+    P1: HRASCONN
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasHangUpA".}
+
+  proc RasGetProjectionInfo*(
+    P1: HRASCONN, P2: RASPROJECTION, P3: LPVOID, P4: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetProjectionInfoA".}
+
+  proc RasCreatePhonebookEntry*(
+    P1: HWND, P2: LPCSTR
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasCreatePhonebookEntryA".}
+
+  proc RasEditPhonebookEntry*(
+    P1: HWND, P2: LPCSTR, P3: LPCSTR
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEditPhonebookEntryA".}
+
+  proc RasSetEntryDialParams*(
+    P1: LPCSTR, P2: LPRASDIALPARAMSA, P3: WINBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetEntryDialParamsA".}
+
+  proc RasGetEntryDialParams*(
+    P1: LPCSTR, P2: LPRASDIALPARAMSA, P3: LPBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEntryDialParamsA".}
+
+  proc RasEnumDevices*(
+    P1: LPRASDEVINFOA, P2: LPDWORD, P3: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumDevicesA".}
+
+  proc RasGetCountryInfo*(
+    P1: LPRASCTRYINFOA, P2: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetCountryInfoA".}
+
+  proc RasGetEntryProperties*(
+    P1: LPCSTR, P2: LPCSTR, P3: LPRASENTRYA, P4: LPDWORD, P5: LPBYTE, P6: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEntryPropertiesA".}
+
+  proc RasSetEntryProperties*(
+    P1: LPCSTR, P2: LPCSTR, P3: LPRASENTRYA, P4: DWORD, P5: LPBYTE, P6: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetEntryPropertiesA".}
+
+  proc RasRenameEntry*(
+    P1: LPCSTR, P2: LPCSTR, P3: LPCSTR
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasRenameEntryA".}
+
+  proc RasDeleteEntry*(
+    P1: LPCSTR, P2: LPCSTR
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasDeleteEntryA".}
+
+  proc RasValidateEntryName*(
+    P1: LPCSTR, P2: LPCSTR
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasValidateEntryNameA".}
+
+  proc RasGetSubEntryHandle*(
+    P1: HRASCONN, P2: DWORD, P3: LPHRASCONN
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetSubEntryHandleA".}
+
+  proc RasConnectionNotification*(
+    P1: HRASCONN, P2: HANDLE, P3: DWORD
+  ): DWORD {.
+    winapi, stdcall, dynlib: "rasapi32", importc: "RasConnectionNotificationA"
+  .}
+
+  proc RasGetSubEntryProperties*(
+    P1: LPCSTR,
+    P2: LPCSTR,
+    P3: DWORD,
+    P4: LPRASSUBENTRYA,
+    P5: LPDWORD,
+    P6: LPBYTE,
+    P7: LPDWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetSubEntryPropertiesA".}
+
+  proc RasSetSubEntryProperties*(
+    P1: LPCSTR,
+    P2: LPCSTR,
+    P3: DWORD,
+    P4: LPRASSUBENTRYA,
+    P5: DWORD,
+    P6: LPBYTE,
+    P7: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetSubEntryPropertiesA".}
+
+  proc RasGetCredentials*(
+    P1: LPCSTR, P2: LPCSTR, P3: LPRASCREDENTIALSA
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetCredentialsA".}
+
+  proc RasSetCredentials*(
+    P1: LPCSTR, P2: LPCSTR, P3: LPRASCREDENTIALSA, P4: WINBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetCredentialsA".}
+
+  proc RasGetAutodialAddress*(
+    P1: LPCSTR, P2: LPDWORD, P3: LPRASAUTODIALENTRYA, P4: LPDWORD, P5: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetAutodialAddressA".}
+
+  proc RasSetAutodialAddress*(
+    P1: LPCSTR, P2: DWORD, P3: LPRASAUTODIALENTRYA, P4: DWORD, P5: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetAutodialAddressA".}
+
+  proc RasEnumAutodialAddresses*(
+    P1: ptr LPSTR, P2: LPDWORD, P3: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasEnumAutodialAddressesA".}
+
+  proc RasGetAutodialEnable*(
+    P1: DWORD, P2: LPBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetAutodialEnableA".}
+
+  proc RasSetAutodialEnable*(
+    P1: DWORD, P2: WINBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetAutodialEnableA".}
+
+  proc RasGetAutodialParam*(
+    P1: DWORD, P2: LPVOID, P3: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetAutodialParamA".}
+
+  proc RasSetAutodialParam*(
+    P1: DWORD, P2: LPVOID, P3: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetAutodialParamA".}
+
+  proc RasGetEapUserData*(
+    hToken: HANDLE,
+    pszPhonebook: LPCSTR,
+    pszEntry: LPCSTR,
+    pbEapData: ptr BYTE,
+    pdwSizeofEapData: ptr DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEapUserDataA".}
+
+  proc RasSetEapUserData*(
+    hToken: HANDLE,
+    pszPhonebook: LPCSTR,
+    pszEntry: LPCSTR,
+    pbEapData: ptr BYTE,
+    dwSizeofEapData: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetEapUserDataA".}
+
+  proc RasGetCustomAuthData*(
+    pszPhonebook: LPCSTR,
+    pszEntry: LPCSTR,
+    pbCustomAuthData: ptr BYTE,
+    pdwSizeofCustomAuthData: ptr DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetCustomAuthDataA".}
+
+  proc RasSetCustomAuthData*(
+    pszPhonebook: LPCSTR,
+    pszEntry: LPCSTR,
+    pbCustomAuthData: ptr BYTE,
+    dwSizeofCustomAuthData: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasSetCustomAuthDataA".}
+
+  proc RasGetEapUserIdentity*(
+    pszPhonebook: LPCSTR,
+    pszEntry: LPCSTR,
+    dwFlags: DWORD,
+    hwnd: HWND,
+    ppRasEapUserIdentity: ptr LPRASEAPUSERIDENTITYA,
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasGetEapUserIdentityA".}
+
+  proc RasFreeEapUserIdentity*(
+    pRasEapUserIdentity: LPRASEAPUSERIDENTITYA
+  ): VOID {.winapi, stdcall, dynlib: "rasapi32", importc: "RasFreeEapUserIdentityA".}
+
+  proc RasDeleteSubEntry*(
+    pszPhonebook: LPCSTR, pszEntry: LPCSTR, dwSubentryId: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "rasapi32", importc: "RasDeleteSubEntryA".}
+
+  proc RasPhonebookDlg*(
+    lpszPhonebook: LPSTR, lpszEntry: LPSTR, lpInfo: LPRASPBDLGA
+  ): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc: "RasPhonebookDlgA".}
+
+  proc RasEntryDlg*(
+    lpszPhonebook: LPSTR, lpszEntry: LPSTR, lpInfo: LPRASENTRYDLGA
+  ): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc: "RasEntryDlgA".}
+
+  proc RasDialDlg*(
+    lpszPhonebook: LPSTR, lpszEntry: LPSTR, lpszPhoneNumber: LPSTR, lpInfo: LPRASDIALDLG
+  ): WINBOOL {.winapi, stdcall, dynlib: "rasdlg", importc: "RasDialDlgA".}
--- a/semicongine/thirdparty/winim/winim/inc/regstr.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/regstr.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -17,8 +17,10 @@
     wSecond*: WORD
     wMilliseconds*: WORD
     wResult*: WORD
+
   PDSKTLSYSTEMTIME* = ptr DSKTLSYSTEMTIME
   LPDSKTLSYSTEMTIME* = ptr DSKTLSYSTEMTIME
+
 const
   REGSTR_KEY_CLASS* = "Class"
   REGSTR_KEY_CONFIG* = "Config"
@@ -45,37 +47,47 @@
   REGSTR_PATH_SETUP* = "Software\\Microsoft\\Windows\\CurrentVersion"
   REGSTR_PATH_DRIVERSIGN* = "Software\\Microsoft\\Driver Signing"
   REGSTR_PATH_NONDRIVERSIGN* = "Software\\Microsoft\\Non-Driver Signing"
-  REGSTR_PATH_DRIVERSIGN_POLICY* = "Software\\Policies\\Microsoft\\Windows NT\\Driver Signing"
-  REGSTR_PATH_NONDRIVERSIGN_POLICY* = "Software\\Policies\\Microsoft\\Windows NT\\Non-Driver Signing"
+  REGSTR_PATH_DRIVERSIGN_POLICY* =
+    "Software\\Policies\\Microsoft\\Windows NT\\Driver Signing"
+  REGSTR_PATH_NONDRIVERSIGN_POLICY* =
+    "Software\\Policies\\Microsoft\\Windows NT\\Non-Driver Signing"
   REGSTR_PATH_PIFCONVERT* = "Software\\Microsoft\\Windows\\CurrentVersion\\PIFConvert"
   REGSTR_PATH_MSDOSOPTS* = "Software\\Microsoft\\Windows\\CurrentVersion\\MS-DOSOptions"
   REGSTR_PATH_NOSUGGMSDOS* = "Software\\Microsoft\\Windows\\CurrentVersion\\NoMSDOSWarn"
-  REGSTR_PATH_NEWDOSBOX* = "Software\\Microsoft\\Windows\\CurrentVersion\\MS-DOSSpecialConfig"
+  REGSTR_PATH_NEWDOSBOX* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\MS-DOSSpecialConfig"
   REGSTR_PATH_RUNONCE* = "Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce"
   REGSTR_PATH_RUNONCEEX* = "Software\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx"
   REGSTR_PATH_RUN* = "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
-  REGSTR_PATH_RUNSERVICESONCE* = "Software\\Microsoft\\Windows\\CurrentVersion\\RunServicesOnce"
+  REGSTR_PATH_RUNSERVICESONCE* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\RunServicesOnce"
   REGSTR_PATH_RUNSERVICES* = "Software\\Microsoft\\Windows\\CurrentVersion\\RunServices"
   REGSTR_PATH_EXPLORER* = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"
-  REGSTR_PATH_PROPERTYSYSTEM* = "Software\\Microsoft\\Windows\\CurrentVersion\\PropertySystem"
+  REGSTR_PATH_PROPERTYSYSTEM* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\PropertySystem"
   REGSTR_PATH_DETECT* = "Software\\Microsoft\\Windows\\CurrentVersion\\Detect"
   REGSTR_PATH_APPPATHS* = "Software\\Microsoft\\Windows\\CurrentVersion\\App Paths"
   REGSTR_PATH_UNINSTALL* = "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
-  REGSTR_PATH_REALMODENET* = "Software\\Microsoft\\Windows\\CurrentVersion\\Network\\Real Mode Net"
-  REGSTR_PATH_NETEQUIV* = "Software\\Microsoft\\Windows\\CurrentVersion\\Network\\Equivalent"
+  REGSTR_PATH_REALMODENET* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\Network\\Real Mode Net"
+  REGSTR_PATH_NETEQUIV* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\Network\\Equivalent"
   REGSTR_PATH_CVNETWORK* = "Software\\Microsoft\\Windows\\CurrentVersion\\Network"
   REGSTR_PATH_WMI_SECURITY* = "System\\CurrentControlSet\\Control\\Wmi\\Security"
   REGSTR_PATH_RELIABILITY* = "Software\\Microsoft\\Windows\\CurrentVersion\\Reliability"
-  REGSTR_PATH_RELIABILITY_POLICY* = "Software\\Policies\\Microsoft\\Windows NT\\Reliability"
+  REGSTR_PATH_RELIABILITY_POLICY* =
+    "Software\\Policies\\Microsoft\\Windows NT\\Reliability"
   REGSTR_PATH_RELIABILITY_POLICY_SHUTDOWNREASONUI* = "ShutdownReasonUI"
   REGSTR_PATH_RELIABILITY_POLICY_SNAPSHOT* = "Snapshot"
   REGSTR_PATH_RELIABILITY_POLICY_REPORTSNAPSHOT* = "ReportSnapshot"
   REGSTR_PATH_REINSTALL* = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Reinstall"
   REGSTR_PATH_NT_CURRENTVERSION* = "Software\\Microsoft\\Windows NT\\CurrentVersion"
-  REGSTR_PATH_VOLUMECACHE* = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\VolumeCaches"
+  REGSTR_PATH_VOLUMECACHE* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\VolumeCaches"
   REGSTR_VAL_DISPLAY* = "display"
   REGSTR_PATH_IDCONFIGDB* = "System\\CurrentControlSet\\Control\\IDConfigDB"
-  REGSTR_PATH_CRITICALDEVICEDATABASE* = "System\\CurrentControlSet\\Control\\CriticalDeviceDatabase"
+  REGSTR_PATH_CRITICALDEVICEDATABASE* =
+    "System\\CurrentControlSet\\Control\\CriticalDeviceDatabase"
   REGSTR_PATH_CLASS* = "System\\CurrentControlSet\\Services\\Class"
   REGSTR_PATH_DISPLAYSETTINGS* = "Display\\Settings"
   REGSTR_PATH_FONTS* = "Display\\Fonts"
@@ -84,12 +96,16 @@
   REGSTR_PATH_CURRENTCONTROLSET* = "System\\CurrentControlSet"
   REGSTR_PATH_SYSTEMENUM* = "System\\CurrentControlSet\\Enum"
   REGSTR_PATH_HWPROFILES* = "System\\CurrentControlSet\\Hardware Profiles"
-  REGSTR_PATH_HWPROFILESCURRENT* = "System\\CurrentControlSet\\Hardware Profiles\\Current"
+  REGSTR_PATH_HWPROFILESCURRENT* =
+    "System\\CurrentControlSet\\Hardware Profiles\\Current"
   REGSTR_PATH_CLASS_NT* = "System\\CurrentControlSet\\Control\\Class"
-  REGSTR_PATH_PER_HW_ID_STORAGE* = "Software\\Microsoft\\Windows NT\\CurrentVersion\\PerHwIdStorage"
+  REGSTR_PATH_PER_HW_ID_STORAGE* =
+    "Software\\Microsoft\\Windows NT\\CurrentVersion\\PerHwIdStorage"
   REGSTR_PATH_DEVICE_CLASSES* = "System\\CurrentControlSet\\Control\\DeviceClasses"
-  REGSTR_PATH_CODEVICEINSTALLERS* = "System\\CurrentControlSet\\Control\\CoDeviceInstallers"
-  REGSTR_PATH_BUSINFORMATION* = "System\\CurrentControlSet\\Control\\PnP\\BusInformation"
+  REGSTR_PATH_CODEVICEINSTALLERS* =
+    "System\\CurrentControlSet\\Control\\CoDeviceInstallers"
+  REGSTR_PATH_BUSINFORMATION* =
+    "System\\CurrentControlSet\\Control\\PnP\\BusInformation"
   REGSTR_PATH_SERVICES* = "System\\CurrentControlSet\\Services"
   REGSTR_PATH_VXD* = "System\\CurrentControlSet\\Services\\VxD"
   REGSTR_PATH_IOS* = "System\\CurrentControlSet\\Services\\VxD\\IOS"
@@ -105,7 +121,8 @@
   REGSTR_PATH_IRQARB* = "System\\CurrentControlSet\\Services\\Arbitrators\\IRQArb"
   REGSTR_PATH_CODEPAGE* = "System\\CurrentControlSet\\Control\\Nls\\Codepage"
   REGSTR_PATH_FILESYSTEM* = "System\\CurrentControlSet\\Control\\FileSystem"
-  REGSTR_PATH_FILESYSTEM_NOVOLTRACK* = "System\\CurrentControlSet\\Control\\FileSystem\\NoVolTrack"
+  REGSTR_PATH_FILESYSTEM_NOVOLTRACK* =
+    "System\\CurrentControlSet\\Control\\FileSystem\\NoVolTrack"
   REGSTR_PATH_CDFS* = "System\\CurrentControlSet\\Control\\FileSystem\\CDFS"
   REGSTR_PATH_WINBOOT* = "System\\CurrentControlSet\\Control\\WinBoot"
   REGSTR_PATH_INSTALLEDFILES* = "System\\CurrentControlSet\\Control\\InstalledFiles"
@@ -167,7 +184,8 @@
   REGSTR_VAL_REFRESHRATE* = "RefreshRate"
   REGSTR_VAL_DISPLAYFLAGS* = "DisplayFlags"
   REGSTR_PATH_CONTROLPANEL* = "Control Panel"
-  REGSTR_PATH_CONTROLSFOLDER* = "Software\\Microsoft\\Windows\\CurrentVersion\\Controls Folder"
+  REGSTR_PATH_CONTROLSFOLDER* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\Controls Folder"
   REGSTR_VAL_DOSCP* = "OEMCP"
   REGSTR_VAL_WINCP* = "ACP"
   REGSTR_PATH_DYNA_ENUM* = "Config Manager\\Enum"
@@ -448,7 +466,8 @@
   REGDF_NOTDETMEM* = 0x00000002
   REGDF_NOTDETIRQ* = 0x00000004
   REGDF_NOTDETDMA* = 0x00000008
-  REGDF_NOTDETALL* = REGDF_NOTDETIO or REGDF_NOTDETMEM or REGDF_NOTDETIRQ or REGDF_NOTDETDMA
+  REGDF_NOTDETALL* =
+    REGDF_NOTDETIO or REGDF_NOTDETMEM or REGDF_NOTDETIRQ or REGDF_NOTDETDMA
   REGDF_NEEDFULLCONFIG* = 0x00000010
   REGDF_GENFORCEDCONFIG* = 0x00000020
   REGDF_NODETCONFIG* = 0x00008000
@@ -456,7 +475,8 @@
   REGDF_CONFLICTMEM* = 0x00020000
   REGDF_CONFLICTIRQ* = 0x00040000
   REGDF_CONFLICTDMA* = 0x00080000
-  REGDF_CONFLICTALL* = REGDF_CONFLICTIO or REGDF_CONFLICTMEM or REGDF_CONFLICTIRQ or REGDF_CONFLICTDMA
+  REGDF_CONFLICTALL* =
+    REGDF_CONFLICTIO or REGDF_CONFLICTMEM or REGDF_CONFLICTIRQ or REGDF_CONFLICTDMA
   REGDF_MAPIRQ2TO9* = 0x00100000
   REGDF_NOTVERIFIED* = 0x80000000'i32
   REGSTR_VAL_APMBIOSVER* = "APMBiosVer"
@@ -668,7 +688,8 @@
   REGSTR_VALUE_LOWPOWERACTIVE* = "ScreenSaveLowPowerActive"
   REGSTR_VALUE_POWEROFFACTIVE* = "ScreenSavePowerOffActive"
   REGSTR_PATH_WINDOWSAPPLETS* = "Software\\Microsoft\\Windows\\CurrentVersion\\Applets"
-  REGSTR_PATH_SYSTRAY* = "Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\SysTray"
+  REGSTR_PATH_SYSTRAY* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\SysTray"
   REGSTR_VAL_SYSTRAYSVCS* = "Services"
   REGSTR_VAL_SYSTRAYBATFLAGS* = "PowerFlags"
   REGSTR_VAL_SYSTRAYPCCARDFLAGS* = "PCMCIAFlags"
@@ -780,25 +801,39 @@
   REGSTR_VAL_TZNOCHANGESTART* = "NoChangeStart"
   REGSTR_VAL_TZNOCHANGEEND* = "NoChangeEnd"
   REGSTR_VAL_TZNOAUTOTIME* = "DisableAutoDaylightTimeSet"
-  REGSTR_PATH_FLOATINGPOINTPROCESSOR* = "HARDWARE\\DESCRIPTION\\System\\FloatingPointProcessor"
-  REGSTR_PATH_FLOATINGPOINTPROCESSOR0* = "HARDWARE\\DESCRIPTION\\System\\FloatingPointProcessor\\0"
-  REGSTR_PATH_COMPUTRNAME* = "System\\CurrentControlSet\\Control\\ComputerName\\ComputerName"
+  REGSTR_PATH_FLOATINGPOINTPROCESSOR* =
+    "HARDWARE\\DESCRIPTION\\System\\FloatingPointProcessor"
+  REGSTR_PATH_FLOATINGPOINTPROCESSOR0* =
+    "HARDWARE\\DESCRIPTION\\System\\FloatingPointProcessor\\0"
+  REGSTR_PATH_COMPUTRNAME* =
+    "System\\CurrentControlSet\\Control\\ComputerName\\ComputerName"
   REGSTR_VAL_COMPUTRNAME* = "ComputerName"
   REGSTR_PATH_SHUTDOWN* = "System\\CurrentControlSet\\Control\\Shutdown"
   REGSTR_VAL_FORCEREBOOT* = "ForceReboot"
   REGSTR_VAL_SETUPPROGRAMRAN* = "SetupProgramRan"
   REGSTR_VAL_DOES_POLLING* = "PollingSupportNeeded"
-  REGSTR_PATH_KNOWNDLLS* = "System\\CurrentControlSet\\Control\\SessionManager\\KnownDLLs"
-  REGSTR_PATH_KNOWN16DLLS* = "System\\CurrentControlSet\\Control\\SessionManager\\Known16DLLs"
-  REGSTR_PATH_CHECKVERDLLS* = "System\\CurrentControlSet\\Control\\SessionManager\\CheckVerDLLs"
-  REGSTR_PATH_WARNVERDLLS* = "System\\CurrentControlSet\\Control\\SessionManager\\WarnVerDLLs"
-  REGSTR_PATH_HACKINIFILE* = "System\\CurrentControlSet\\Control\\SessionManager\\HackIniFiles"
-  REGSTR_PATH_CHECKBADAPPS* = "System\\CurrentControlSet\\Control\\SessionManager\\CheckBadApps"
-  REGSTR_PATH_APPPATCH* = "System\\CurrentControlSet\\Control\\SessionManager\\AppPatches"
-  REGSTR_PATH_CHECKBADAPPS400* = "System\\CurrentControlSet\\Control\\SessionManager\\CheckBadApps400"
-  REGSTR_PATH_SHELLSERVICEOBJECT* = "Software\\Microsoft\\Windows\\CurrentVersion\\ShellServiceObject"
-  REGSTR_PATH_SHELLSERVICEOBJECTDELAYED* = "Software\\Microsoft\\Windows\\CurrentVersion\\ShellServiceObjectDelayLoad"
-  REGSTR_PATH_KNOWNVXDS* = "System\\CurrentControlSet\\Control\\SessionManager\\KnownVxDs"
+  REGSTR_PATH_KNOWNDLLS* =
+    "System\\CurrentControlSet\\Control\\SessionManager\\KnownDLLs"
+  REGSTR_PATH_KNOWN16DLLS* =
+    "System\\CurrentControlSet\\Control\\SessionManager\\Known16DLLs"
+  REGSTR_PATH_CHECKVERDLLS* =
+    "System\\CurrentControlSet\\Control\\SessionManager\\CheckVerDLLs"
+  REGSTR_PATH_WARNVERDLLS* =
+    "System\\CurrentControlSet\\Control\\SessionManager\\WarnVerDLLs"
+  REGSTR_PATH_HACKINIFILE* =
+    "System\\CurrentControlSet\\Control\\SessionManager\\HackIniFiles"
+  REGSTR_PATH_CHECKBADAPPS* =
+    "System\\CurrentControlSet\\Control\\SessionManager\\CheckBadApps"
+  REGSTR_PATH_APPPATCH* =
+    "System\\CurrentControlSet\\Control\\SessionManager\\AppPatches"
+  REGSTR_PATH_CHECKBADAPPS400* =
+    "System\\CurrentControlSet\\Control\\SessionManager\\CheckBadApps400"
+  REGSTR_PATH_SHELLSERVICEOBJECT* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\ShellServiceObject"
+  REGSTR_PATH_SHELLSERVICEOBJECTDELAYED* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\ShellServiceObjectDelayLoad"
+  REGSTR_PATH_KNOWNVXDS* =
+    "System\\CurrentControlSet\\Control\\SessionManager\\KnownVxDs"
   REGSTR_VAL_UNINSTALLER_DISPLAYNAME* = "DisplayName"
   REGSTR_VAL_UNINSTALLER_COMMANDLINE* = "UninstallString"
   REGSTR_VAL_REINSTALL_DISPLAYNAME* = "DisplayName"
@@ -812,7 +847,8 @@
   REGSTR_PATH_METRICS* = "Control Panel\\Desktop\\WindowMetrics"
   REGSTR_PATH_ICONS* = "Control Panel\\Icons"
   REGSTR_PATH_CURSORS* = "Control Panel\\Cursors"
-  REGSTR_PATH_CHECKDISK* = "Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive"
+  REGSTR_PATH_CHECKDISK* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive"
   REGSTR_PATH_CHECKDISKSET* = "Settings"
   REGSTR_PATH_CHECKDISKUDRVS* = "NoUnknownDDErrDrvs"
   REGSTR_PATH_FAULT* = "Software\\Microsoft\\Windows\\CurrentVersion\\Fault"
@@ -822,11 +858,16 @@
   REGSTR_VAL_AEDEBUG_AUTO* = "Auto"
   REGSTR_PATH_GRPCONV* = "Software\\Microsoft\\Windows\\CurrentVersion\\GrpConv"
   REGSTR_VAL_REGITEMDELETEMESSAGE* = "Removal Message"
-  REGSTR_PATH_LASTCHECK* = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastCheck"
-  REGSTR_PATH_LASTOPTIMIZE* = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastOptimize"
-  REGSTR_PATH_LASTBACKUP* = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastBackup"
-  REGSTR_PATH_CHKLASTCHECK* = "Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive\\LastCheck"
-  REGSTR_PATH_CHKLASTSURFAN* = "Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive\\LastSurfaceAnalysis"
+  REGSTR_PATH_LASTCHECK* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastCheck"
+  REGSTR_PATH_LASTOPTIMIZE* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastOptimize"
+  REGSTR_PATH_LASTBACKUP* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastBackup"
+  REGSTR_PATH_CHKLASTCHECK* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive\\LastCheck"
+  REGSTR_PATH_CHKLASTSURFAN* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive\\LastSurfaceAnalysis"
   DTRESULTOK* = 0
   DTRESULTFIX* = 1
   DTRESULTPROB* = 2
@@ -900,7 +941,8 @@
   REGSTR_VAL_JOYOEMCAL12* = "OEMCal12"
   REGSTR_VAL_AUDIO_BITMAP* = "bitmap"
   REGSTR_VAL_AUDIO_ICON* = "icon"
-  REGSTR_PATH_DEVICEINSTALLER* = "Software\\Microsoft\\Windows\\CurrentVersion\\Device Installer"
+  REGSTR_PATH_DEVICEINSTALLER* =
+    "Software\\Microsoft\\Windows\\CurrentVersion\\Device Installer"
   REGSTR_PATH_DIFX* = "Software\\Microsoft\\Windows\\CurrentVersion\\DIFX"
   REGSTR_VAL_SEARCHOPTIONS* = "SearchOptions"
   REGSTR_PATH_BIOSINFO* = "System\\CurrentControlSet\\Control\\BiosInfo"
--- a/semicongine/thirdparty/winim/winim/inc/richedit.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/richedit.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -26,43 +26,109 @@
     dvaspect*: DWORD
     dwFlags*: DWORD
     dwUser*: DWORD
+
   CHARRANGE* {.pure.} = object
     cpMin*: LONG
     cpMax*: LONG
+
   IRichEditOle* {.pure.} = object
     lpVtbl*: ptr IRichEditOleVtbl
+
   IRichEditOleVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetClientSite*: proc(self: ptr IRichEditOle, lplpolesite: ptr LPOLECLIENTSITE): HRESULT {.stdcall.}
+    GetClientSite*: proc(
+      self: ptr IRichEditOle, lplpolesite: ptr LPOLECLIENTSITE
+    ): HRESULT {.stdcall.}
     GetObjectCount*: proc(self: ptr IRichEditOle): LONG {.stdcall.}
     GetLinkCount*: proc(self: ptr IRichEditOle): LONG {.stdcall.}
-    GetObject*: proc(self: ptr IRichEditOle, iob: LONG, lpreobject: ptr REOBJECT, dwFlags: DWORD): HRESULT {.stdcall.}
-    InsertObject*: proc(self: ptr IRichEditOle, lpreobject: ptr REOBJECT): HRESULT {.stdcall.}
-    ConvertObject*: proc(self: ptr IRichEditOle, iob: LONG, rclsidNew: REFCLSID, lpstrUserTypeNew: LPCSTR): HRESULT {.stdcall.}
-    ActivateAs*: proc(self: ptr IRichEditOle, rclsid: REFCLSID, rclsidAs: REFCLSID): HRESULT {.stdcall.}
-    SetHostNames*: proc(self: ptr IRichEditOle, lpstrContainerApp: LPCSTR, lpstrContainerObj: LPCSTR): HRESULT {.stdcall.}
-    SetLinkAvailable*: proc(self: ptr IRichEditOle, iob: LONG, fAvailable: WINBOOL): HRESULT {.stdcall.}
-    SetDvaspect*: proc(self: ptr IRichEditOle, iob: LONG, dvaspect: DWORD): HRESULT {.stdcall.}
+    GetObject*: proc(
+      self: ptr IRichEditOle, iob: LONG, lpreobject: ptr REOBJECT, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
+    InsertObject*:
+      proc(self: ptr IRichEditOle, lpreobject: ptr REOBJECT): HRESULT {.stdcall.}
+    ConvertObject*: proc(
+      self: ptr IRichEditOle, iob: LONG, rclsidNew: REFCLSID, lpstrUserTypeNew: LPCSTR
+    ): HRESULT {.stdcall.}
+    ActivateAs*: proc(
+      self: ptr IRichEditOle, rclsid: REFCLSID, rclsidAs: REFCLSID
+    ): HRESULT {.stdcall.}
+    SetHostNames*: proc(
+      self: ptr IRichEditOle, lpstrContainerApp: LPCSTR, lpstrContainerObj: LPCSTR
+    ): HRESULT {.stdcall.}
+    SetLinkAvailable*:
+      proc(self: ptr IRichEditOle, iob: LONG, fAvailable: WINBOOL): HRESULT {.stdcall.}
+    SetDvaspect*:
+      proc(self: ptr IRichEditOle, iob: LONG, dvaspect: DWORD): HRESULT {.stdcall.}
     HandsOffStorage*: proc(self: ptr IRichEditOle, iob: LONG): HRESULT {.stdcall.}
-    SaveCompleted*: proc(self: ptr IRichEditOle, iob: LONG, lpstg: LPSTORAGE): HRESULT {.stdcall.}
+    SaveCompleted*:
+      proc(self: ptr IRichEditOle, iob: LONG, lpstg: LPSTORAGE): HRESULT {.stdcall.}
     InPlaceDeactivate*: proc(self: ptr IRichEditOle): HRESULT {.stdcall.}
-    ContextSensitiveHelp*: proc(self: ptr IRichEditOle, fEnterMode: WINBOOL): HRESULT {.stdcall.}
-    GetClipboardData*: proc(self: ptr IRichEditOle, lpchrg: ptr CHARRANGE, reco: DWORD, lplpdataobj: ptr LPDATAOBJECT): HRESULT {.stdcall.}
-    ImportDataObject*: proc(self: ptr IRichEditOle, lpdataobj: LPDATAOBJECT, cf: CLIPFORMAT, hMetaPict: HGLOBAL): HRESULT {.stdcall.}
+    ContextSensitiveHelp*:
+      proc(self: ptr IRichEditOle, fEnterMode: WINBOOL): HRESULT {.stdcall.}
+    GetClipboardData*: proc(
+      self: ptr IRichEditOle,
+      lpchrg: ptr CHARRANGE,
+      reco: DWORD,
+      lplpdataobj: ptr LPDATAOBJECT,
+    ): HRESULT {.stdcall.}
+    ImportDataObject*: proc(
+      self: ptr IRichEditOle,
+      lpdataobj: LPDATAOBJECT,
+      cf: CLIPFORMAT,
+      hMetaPict: HGLOBAL,
+    ): HRESULT {.stdcall.}
+
   LPRICHEDITOLE* = ptr IRichEditOle
   IRichEditOleCallback* {.pure.} = object
     lpVtbl*: ptr IRichEditOleCallbackVtbl
+
   IRichEditOleCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetNewStorage*: proc(self: ptr IRichEditOleCallback, lplpstg: ptr LPSTORAGE): HRESULT {.stdcall.}
-    GetInPlaceContext*: proc(self: ptr IRichEditOleCallback, lplpFrame: ptr LPOLEINPLACEFRAME, lplpDoc: ptr LPOLEINPLACEUIWINDOW, lpFrameInfo: LPOLEINPLACEFRAMEINFO): HRESULT {.stdcall.}
-    ShowContainerUI*: proc(self: ptr IRichEditOleCallback, fShow: WINBOOL): HRESULT {.stdcall.}
-    QueryInsertObject*: proc(self: ptr IRichEditOleCallback, lpclsid: LPCLSID, lpstg: LPSTORAGE, cp: LONG): HRESULT {.stdcall.}
-    DeleteObject*: proc(self: ptr IRichEditOleCallback, lpoleobj: LPOLEOBJECT): HRESULT {.stdcall.}
-    QueryAcceptData*: proc(self: ptr IRichEditOleCallback, lpdataobj: LPDATAOBJECT, lpcfFormat: ptr CLIPFORMAT, reco: DWORD, fReally: WINBOOL, hMetaPict: HGLOBAL): HRESULT {.stdcall.}
-    ContextSensitiveHelp*: proc(self: ptr IRichEditOleCallback, fEnterMode: WINBOOL): HRESULT {.stdcall.}
-    GetClipboardData*: proc(self: ptr IRichEditOleCallback, lpchrg: ptr CHARRANGE, reco: DWORD, lplpdataobj: ptr LPDATAOBJECT): HRESULT {.stdcall.}
-    GetDragDropEffect*: proc(self: ptr IRichEditOleCallback, fDrag: WINBOOL, grfKeyState: DWORD, pdwEffect: LPDWORD): HRESULT {.stdcall.}
-    GetContextMenu*: proc(self: ptr IRichEditOleCallback, seltype: WORD, lpoleobj: LPOLEOBJECT, lpchrg: ptr CHARRANGE, lphmenu: ptr HMENU): HRESULT {.stdcall.}
+    GetNewStorage*:
+      proc(self: ptr IRichEditOleCallback, lplpstg: ptr LPSTORAGE): HRESULT {.stdcall.}
+    GetInPlaceContext*: proc(
+      self: ptr IRichEditOleCallback,
+      lplpFrame: ptr LPOLEINPLACEFRAME,
+      lplpDoc: ptr LPOLEINPLACEUIWINDOW,
+      lpFrameInfo: LPOLEINPLACEFRAMEINFO,
+    ): HRESULT {.stdcall.}
+    ShowContainerUI*:
+      proc(self: ptr IRichEditOleCallback, fShow: WINBOOL): HRESULT {.stdcall.}
+    QueryInsertObject*: proc(
+      self: ptr IRichEditOleCallback, lpclsid: LPCLSID, lpstg: LPSTORAGE, cp: LONG
+    ): HRESULT {.stdcall.}
+    DeleteObject*:
+      proc(self: ptr IRichEditOleCallback, lpoleobj: LPOLEOBJECT): HRESULT {.stdcall.}
+    QueryAcceptData*: proc(
+      self: ptr IRichEditOleCallback,
+      lpdataobj: LPDATAOBJECT,
+      lpcfFormat: ptr CLIPFORMAT,
+      reco: DWORD,
+      fReally: WINBOOL,
+      hMetaPict: HGLOBAL,
+    ): HRESULT {.stdcall.}
+    ContextSensitiveHelp*:
+      proc(self: ptr IRichEditOleCallback, fEnterMode: WINBOOL): HRESULT {.stdcall.}
+    GetClipboardData*: proc(
+      self: ptr IRichEditOleCallback,
+      lpchrg: ptr CHARRANGE,
+      reco: DWORD,
+      lplpdataobj: ptr LPDATAOBJECT,
+    ): HRESULT {.stdcall.}
+    GetDragDropEffect*: proc(
+      self: ptr IRichEditOleCallback,
+      fDrag: WINBOOL,
+      grfKeyState: DWORD,
+      pdwEffect: LPDWORD,
+    ): HRESULT {.stdcall.}
+    GetContextMenu*: proc(
+      self: ptr IRichEditOleCallback,
+      seltype: WORD,
+      lpoleobj: LPOLEOBJECT,
+      lpchrg: ptr CHARRANGE,
+      lphmenu: ptr HMENU,
+    ): HRESULT {.stdcall.}
+
   LPRICHEDITOLECALLBACK* = ptr IRichEditOleCallback
+
 const
   RICHEDIT_VER* = 0x0800
   cchTextLimitDefault* = 32767
@@ -72,88 +138,88 @@
   RICHEDIT_CLASSA* = "RichEdit20A"
   RICHEDIT_CLASS10A* = "RICHEDIT"
   RICHEDIT_CLASSW* = "RichEdit20W"
-  EM_CANPASTE* = WM_USER+50
-  EM_DISPLAYBAND* = WM_USER+51
-  EM_EXGETSEL* = WM_USER+52
-  EM_EXLIMITTEXT* = WM_USER+53
-  EM_EXLINEFROMCHAR* = WM_USER+54
-  EM_EXSETSEL* = WM_USER+55
-  EM_FINDTEXT* = WM_USER+56
-  EM_FORMATRANGE* = WM_USER+57
-  EM_GETCHARFORMAT* = WM_USER+58
-  EM_GETEVENTMASK* = WM_USER+59
-  EM_GETOLEINTERFACE* = WM_USER+60
-  EM_GETPARAFORMAT* = WM_USER+61
-  EM_GETSELTEXT* = WM_USER+62
-  EM_HIDESELECTION* = WM_USER+63
-  EM_PASTESPECIAL* = WM_USER+64
-  EM_REQUESTRESIZE* = WM_USER+65
-  EM_SELECTIONTYPE* = WM_USER+66
-  EM_SETBKGNDCOLOR* = WM_USER+67
-  EM_SETCHARFORMAT* = WM_USER+68
-  EM_SETEVENTMASK* = WM_USER+69
-  EM_SETOLECALLBACK* = WM_USER+70
-  EM_SETPARAFORMAT* = WM_USER+71
-  EM_SETTARGETDEVICE* = WM_USER+72
-  EM_STREAMIN* = WM_USER+73
-  EM_STREAMOUT* = WM_USER+74
-  EM_GETTEXTRANGE* = WM_USER+75
-  EM_FINDWORDBREAK* = WM_USER+76
-  EM_SETOPTIONS* = WM_USER+77
-  EM_GETOPTIONS* = WM_USER+78
-  EM_FINDTEXTEX* = WM_USER+79
-  EM_GETWORDBREAKPROCEX* = WM_USER+80
-  EM_SETWORDBREAKPROCEX* = WM_USER+81
-  EM_SETUNDOLIMIT* = WM_USER+82
-  EM_REDO* = WM_USER+84
-  EM_CANREDO* = WM_USER+85
-  EM_GETUNDONAME* = WM_USER+86
-  EM_GETREDONAME* = WM_USER+87
-  EM_STOPGROUPTYPING* = WM_USER+88
-  EM_SETTEXTMODE* = WM_USER+89
-  EM_GETTEXTMODE* = WM_USER+90
+  EM_CANPASTE* = WM_USER + 50
+  EM_DISPLAYBAND* = WM_USER + 51
+  EM_EXGETSEL* = WM_USER + 52
+  EM_EXLIMITTEXT* = WM_USER + 53
+  EM_EXLINEFROMCHAR* = WM_USER + 54
+  EM_EXSETSEL* = WM_USER + 55
+  EM_FINDTEXT* = WM_USER + 56
+  EM_FORMATRANGE* = WM_USER + 57
+  EM_GETCHARFORMAT* = WM_USER + 58
+  EM_GETEVENTMASK* = WM_USER + 59
+  EM_GETOLEINTERFACE* = WM_USER + 60
+  EM_GETPARAFORMAT* = WM_USER + 61
+  EM_GETSELTEXT* = WM_USER + 62
+  EM_HIDESELECTION* = WM_USER + 63
+  EM_PASTESPECIAL* = WM_USER + 64
+  EM_REQUESTRESIZE* = WM_USER + 65
+  EM_SELECTIONTYPE* = WM_USER + 66
+  EM_SETBKGNDCOLOR* = WM_USER + 67
+  EM_SETCHARFORMAT* = WM_USER + 68
+  EM_SETEVENTMASK* = WM_USER + 69
+  EM_SETOLECALLBACK* = WM_USER + 70
+  EM_SETPARAFORMAT* = WM_USER + 71
+  EM_SETTARGETDEVICE* = WM_USER + 72
+  EM_STREAMIN* = WM_USER + 73
+  EM_STREAMOUT* = WM_USER + 74
+  EM_GETTEXTRANGE* = WM_USER + 75
+  EM_FINDWORDBREAK* = WM_USER + 76
+  EM_SETOPTIONS* = WM_USER + 77
+  EM_GETOPTIONS* = WM_USER + 78
+  EM_FINDTEXTEX* = WM_USER + 79
+  EM_GETWORDBREAKPROCEX* = WM_USER + 80
+  EM_SETWORDBREAKPROCEX* = WM_USER + 81
+  EM_SETUNDOLIMIT* = WM_USER + 82
+  EM_REDO* = WM_USER + 84
+  EM_CANREDO* = WM_USER + 85
+  EM_GETUNDONAME* = WM_USER + 86
+  EM_GETREDONAME* = WM_USER + 87
+  EM_STOPGROUPTYPING* = WM_USER + 88
+  EM_SETTEXTMODE* = WM_USER + 89
+  EM_GETTEXTMODE* = WM_USER + 90
   TM_PLAINTEXT* = 1
   TM_RICHTEXT* = 2
   TM_SINGLELEVELUNDO* = 4
   TM_MULTILEVELUNDO* = 8
   TM_SINGLECODEPAGE* = 16
   TM_MULTICODEPAGE* = 32
-  EM_AUTOURLDETECT* = WM_USER+91
+  EM_AUTOURLDETECT* = WM_USER + 91
   AURL_ENABLEURL* = 1
   AURL_ENABLEEMAILADDR* = 2
   AURL_ENABLETELNO* = 4
   AURL_ENABLEEAURLS* = 8
   AURL_ENABLEDRIVELETTERS* = 16
   AURL_DISABLEMIXEDLGC* = 32
-  EM_GETAUTOURLDETECT* = WM_USER+92
-  EM_SETPALETTE* = WM_USER+93
-  EM_GETTEXTEX* = WM_USER+94
-  EM_GETTEXTLENGTHEX* = WM_USER+95
-  EM_SHOWSCROLLBAR* = WM_USER+96
-  EM_SETTEXTEX* = WM_USER+97
-  EM_SETPUNCTUATION* = WM_USER+100
-  EM_GETPUNCTUATION* = WM_USER+101
-  EM_SETWORDWRAPMODE* = WM_USER+102
-  EM_GETWORDWRAPMODE* = WM_USER+103
-  EM_SETIMECOLOR* = WM_USER+104
-  EM_GETIMECOLOR* = WM_USER+105
-  EM_SETIMEOPTIONS* = WM_USER+106
-  EM_GETIMEOPTIONS* = WM_USER+107
-  EM_CONVPOSITION* = WM_USER+108
-  EM_SETLANGOPTIONS* = WM_USER+120
-  EM_GETLANGOPTIONS* = WM_USER+121
-  EM_GETIMECOMPMODE* = WM_USER+122
-  EM_FINDTEXTW* = WM_USER+123
-  EM_FINDTEXTEXW* = WM_USER+124
-  EM_RECONVERSION* = WM_USER+125
-  EM_SETIMEMODEBIAS* = WM_USER+126
-  EM_GETIMEMODEBIAS* = WM_USER+127
-  EM_SETBIDIOPTIONS* = WM_USER+200
-  EM_GETBIDIOPTIONS* = WM_USER+201
-  EM_SETTYPOGRAPHYOPTIONS* = WM_USER+202
-  EM_GETTYPOGRAPHYOPTIONS* = WM_USER+203
-  EM_SETEDITSTYLE* = WM_USER+204
-  EM_GETEDITSTYLE* = WM_USER+205
+  EM_GETAUTOURLDETECT* = WM_USER + 92
+  EM_SETPALETTE* = WM_USER + 93
+  EM_GETTEXTEX* = WM_USER + 94
+  EM_GETTEXTLENGTHEX* = WM_USER + 95
+  EM_SHOWSCROLLBAR* = WM_USER + 96
+  EM_SETTEXTEX* = WM_USER + 97
+  EM_SETPUNCTUATION* = WM_USER + 100
+  EM_GETPUNCTUATION* = WM_USER + 101
+  EM_SETWORDWRAPMODE* = WM_USER + 102
+  EM_GETWORDWRAPMODE* = WM_USER + 103
+  EM_SETIMECOLOR* = WM_USER + 104
+  EM_GETIMECOLOR* = WM_USER + 105
+  EM_SETIMEOPTIONS* = WM_USER + 106
+  EM_GETIMEOPTIONS* = WM_USER + 107
+  EM_CONVPOSITION* = WM_USER + 108
+  EM_SETLANGOPTIONS* = WM_USER + 120
+  EM_GETLANGOPTIONS* = WM_USER + 121
+  EM_GETIMECOMPMODE* = WM_USER + 122
+  EM_FINDTEXTW* = WM_USER + 123
+  EM_FINDTEXTEXW* = WM_USER + 124
+  EM_RECONVERSION* = WM_USER + 125
+  EM_SETIMEMODEBIAS* = WM_USER + 126
+  EM_GETIMEMODEBIAS* = WM_USER + 127
+  EM_SETBIDIOPTIONS* = WM_USER + 200
+  EM_GETBIDIOPTIONS* = WM_USER + 201
+  EM_SETTYPOGRAPHYOPTIONS* = WM_USER + 202
+  EM_GETTYPOGRAPHYOPTIONS* = WM_USER + 203
+  EM_SETEDITSTYLE* = WM_USER + 204
+  EM_GETEDITSTYLE* = WM_USER + 205
   SES_EMULATESYSEDIT* = 1
   SES_BEEPONMAXTEXT* = 2
   SES_EXTENDBACKCOLOR* = 4
@@ -209,29 +275,29 @@
   TO_SIMPLELINEBREAK* = 0x0002
   TO_DISABLECUSTOMTEXTOUT* = 0x0004
   TO_ADVANCEDLAYOUT* = 0x0008
-  EM_OUTLINE* = WM_USER+220
-  EM_GETSCROLLPOS* = WM_USER+221
-  EM_SETSCROLLPOS* = WM_USER+222
-  EM_SETFONTSIZE* = WM_USER+223
-  EM_GETZOOM* = WM_USER+224
-  EM_SETZOOM* = WM_USER+225
-  EM_GETVIEWKIND* = WM_USER+226
-  EM_SETVIEWKIND* = WM_USER+227
-  EM_GETPAGE* = WM_USER+228
-  EM_SETPAGE* = WM_USER+229
-  EM_GETHYPHENATEINFO* = WM_USER+230
-  EM_SETHYPHENATEINFO* = WM_USER+231
-  EM_GETPAGEROTATE* = WM_USER+235
-  EM_SETPAGEROTATE* = WM_USER+236
-  EM_GETCTFMODEBIAS* = WM_USER+237
-  EM_SETCTFMODEBIAS* = WM_USER+238
-  EM_GETCTFOPENSTATUS* = WM_USER+240
-  EM_SETCTFOPENSTATUS* = WM_USER+241
-  EM_GETIMECOMPTEXT* = WM_USER+242
-  EM_ISIME* = WM_USER+243
-  EM_GETIMEPROPERTY* = WM_USER+244
-  EM_GETQUERYRTFOBJ* = WM_USER+269
-  EM_SETQUERYRTFOBJ* = WM_USER+270
+  EM_OUTLINE* = WM_USER + 220
+  EM_GETSCROLLPOS* = WM_USER + 221
+  EM_SETSCROLLPOS* = WM_USER + 222
+  EM_SETFONTSIZE* = WM_USER + 223
+  EM_GETZOOM* = WM_USER + 224
+  EM_SETZOOM* = WM_USER + 225
+  EM_GETVIEWKIND* = WM_USER + 226
+  EM_SETVIEWKIND* = WM_USER + 227
+  EM_GETPAGE* = WM_USER + 228
+  EM_SETPAGE* = WM_USER + 229
+  EM_GETHYPHENATEINFO* = WM_USER + 230
+  EM_SETHYPHENATEINFO* = WM_USER + 231
+  EM_GETPAGEROTATE* = WM_USER + 235
+  EM_SETPAGEROTATE* = WM_USER + 236
+  EM_GETCTFMODEBIAS* = WM_USER + 237
+  EM_SETCTFMODEBIAS* = WM_USER + 238
+  EM_GETCTFOPENSTATUS* = WM_USER + 240
+  EM_SETCTFOPENSTATUS* = WM_USER + 241
+  EM_GETIMECOMPTEXT* = WM_USER + 242
+  EM_ISIME* = WM_USER + 243
+  EM_GETIMEPROPERTY* = WM_USER + 244
+  EM_GETQUERYRTFOBJ* = WM_USER + 269
+  EM_SETQUERYRTFOBJ* = WM_USER + 270
   EPR_0* = 0
   EPR_270* = 1
   EPR_180* = 2
@@ -264,17 +330,17 @@
   VM_NORMAL* = 4
   VM_OUTLINE* = 2
   VM_PAGE* = 9
-  EM_INSERTTABLE* = WM_USER+232
-  EM_GETAUTOCORRECTPROC* = WM_USER+233
-  EM_SETAUTOCORRECTPROC* = WM_USER+234
-  EM_CALLAUTOCORRECTPROC* = WM_USER+255
+  EM_INSERTTABLE* = WM_USER + 232
+  EM_GETAUTOCORRECTPROC* = WM_USER + 233
+  EM_SETAUTOCORRECTPROC* = WM_USER + 234
+  EM_CALLAUTOCORRECTPROC* = WM_USER + 255
   ATP_NOCHANGE* = 0
   ATP_CHANGE* = 1
   ATP_NODELIMITER* = 2
   ATP_REPLACEALLTEXT* = 4
-  EM_GETTABLEPARMS* = WM_USER+265
-  EM_SETEDITSTYLEEX* = WM_USER+275
-  EM_GETEDITSTYLEEX* = WM_USER+276
+  EM_GETTABLEPARMS* = WM_USER + 265
+  EM_SETEDITSTYLEEX* = WM_USER + 275
+  EM_GETEDITSTYLEEX* = WM_USER + 276
   SES_EX_NOTABLE* = 0x00000004
   SES_EX_HANDLEFRIENDLYURL* = 0x00000100
   SES_EX_NOTHEMING* = 0x00080000
@@ -283,20 +349,20 @@
   SES_EX_MULTITOUCH* = 0x08000000
   SES_EX_HIDETEMPFORMAT* = 0x10000000
   SES_EX_USEMOUSEWPARAM* = 0x20000000
-  EM_GETSTORYTYPE* = WM_USER+290
-  EM_SETSTORYTYPE* = WM_USER+291
-  EM_GETELLIPSISMODE* = WM_USER+305
-  EM_SETELLIPSISMODE* = WM_USER+306
+  EM_GETSTORYTYPE* = WM_USER + 290
+  EM_SETSTORYTYPE* = WM_USER + 291
+  EM_GETELLIPSISMODE* = WM_USER + 305
+  EM_SETELLIPSISMODE* = WM_USER + 306
   ELLIPSIS_MASK* = 0x00000003
   ELLIPSIS_NONE* = 0x00000000
   ELLIPSIS_END* = 0x00000001
   ELLIPSIS_WORD* = 0x00000003
-  EM_SETTABLEPARMS* = WM_USER+307
-  EM_GETTOUCHOPTIONS* = WM_USER+310
-  EM_SETTOUCHOPTIONS* = WM_USER+311
-  EM_INSERTIMAGE* = WM_USER+314
-  EM_SETUIANAME* = WM_USER+320
-  EM_GETELLIPSISSTATE* = WM_USER+322
+  EM_SETTABLEPARMS* = WM_USER + 307
+  EM_GETTOUCHOPTIONS* = WM_USER + 310
+  EM_SETTOUCHOPTIONS* = WM_USER + 311
+  EM_INSERTIMAGE* = WM_USER + 314
+  EM_SETUIANAME* = WM_USER + 320
+  EM_GETELLIPSISSTATE* = WM_USER + 322
   RTO_SHOWHANDLES* = 1
   RTO_DISABLEHANDLES* = 2
   RTO_READINGMODE* = 3
@@ -443,10 +509,18 @@
   CFM_BACKCOLOR* = 0x04000000
   CFM_SUBSCRIPT* = CFE_SUBSCRIPT or CFE_SUPERSCRIPT
   CFM_SUPERSCRIPT* = CFM_SUBSCRIPT
-  CFM_EFFECTS* = CFM_BOLD or CFM_ITALIC or CFM_UNDERLINE or CFM_COLOR or CFM_STRIKEOUT or CFE_PROTECTED or CFM_LINK
+  CFM_EFFECTS* =
+    CFM_BOLD or CFM_ITALIC or CFM_UNDERLINE or CFM_COLOR or CFM_STRIKEOUT or
+    CFE_PROTECTED or CFM_LINK
   CFM_ALL* = CFM_EFFECTS or CFM_SIZE or CFM_FACE or CFM_OFFSET or CFM_CHARSET
-  CFM_EFFECTS2* = CFM_EFFECTS or CFM_DISABLED or CFM_SMALLCAPS or CFM_ALLCAPS or CFM_HIDDEN or CFM_OUTLINE or CFM_SHADOW or CFM_EMBOSS or CFM_IMPRINT or CFM_REVISED or CFM_SUBSCRIPT or CFM_SUPERSCRIPT or CFM_BACKCOLOR
-  CFM_ALL2* = CFM_ALL or CFM_EFFECTS2 or CFM_BACKCOLOR or CFM_LCID or CFM_UNDERLINETYPE or CFM_WEIGHT or CFM_REVAUTHOR or CFM_SPACING or CFM_KERNING or CFM_STYLE or CFM_ANIMATION or CFM_COOKIE
+  CFM_EFFECTS2* =
+    CFM_EFFECTS or CFM_DISABLED or CFM_SMALLCAPS or CFM_ALLCAPS or CFM_HIDDEN or
+    CFM_OUTLINE or CFM_SHADOW or CFM_EMBOSS or CFM_IMPRINT or CFM_REVISED or
+    CFM_SUBSCRIPT or CFM_SUPERSCRIPT or CFM_BACKCOLOR
+  CFM_ALL2* =
+    CFM_ALL or CFM_EFFECTS2 or CFM_BACKCOLOR or CFM_LCID or CFM_UNDERLINETYPE or
+    CFM_WEIGHT or CFM_REVAUTHOR or CFM_SPACING or CFM_KERNING or CFM_STYLE or
+    CFM_ANIMATION or CFM_COOKIE
   CFE_SMALLCAPS* = CFM_SMALLCAPS
   CFE_ALLCAPS* = CFM_ALLCAPS
   CFE_HIDDEN* = CFM_HIDDEN
@@ -463,7 +537,9 @@
   CFM_MATHNOBUILDUP* = 0x08000000
   CFM_MATH* = 0x10000000
   CFM_MATHORDINARY* = 0x20000000
-  CFM_ALLEFFECTS* = CFM_EFFECTS2 or CFM_FONTBOUND or CFM_EXTENDED or CFM_MATHNOBUILDUP or CFM_MATH or CFM_MATHORDINARY
+  CFM_ALLEFFECTS* =
+    CFM_EFFECTS2 or CFM_FONTBOUND or CFM_EXTENDED or CFM_MATHNOBUILDUP or CFM_MATH or
+    CFM_MATHORDINARY
   CFE_FONTBOUND* = 0x00100000
   CFE_LINKPROTECTED* = 0x00800000
   CFE_EXTENDED* = 0x02000000
@@ -552,9 +628,17 @@
   PFM_TABLEROWDELIMITER* = 0x10000000
   PFM_TEXTWRAPPINGBREAK* = 0x20000000
   PFM_TABLE* = 0x40000000
-  PFM_ALL* = PFM_STARTINDENT or PFM_RIGHTINDENT or PFM_OFFSET or PFM_ALIGNMENT or PFM_TABSTOPS or PFM_NUMBERING or PFM_OFFSETINDENT or PFM_RTLPARA
-  PFM_EFFECTS* = PFM_RTLPARA or PFM_KEEP or PFM_KEEPNEXT or PFM_TABLE or PFM_PAGEBREAKBEFORE or PFM_NOLINENUMBER or PFM_NOWIDOWCONTROL or PFM_DONOTHYPHEN or PFM_SIDEBYSIDE or PFM_TABLE or PFM_TABLEROWDELIMITER
-  PFM_ALL2* = PFM_ALL or PFM_EFFECTS or PFM_SPACEBEFORE or PFM_SPACEAFTER or PFM_LINESPACING or PFM_STYLE or PFM_SHADING or PFM_BORDER or PFM_NUMBERINGTAB or PFM_NUMBERINGSTART or PFM_NUMBERINGSTYLE
+  PFM_ALL* =
+    PFM_STARTINDENT or PFM_RIGHTINDENT or PFM_OFFSET or PFM_ALIGNMENT or PFM_TABSTOPS or
+    PFM_NUMBERING or PFM_OFFSETINDENT or PFM_RTLPARA
+  PFM_EFFECTS* =
+    PFM_RTLPARA or PFM_KEEP or PFM_KEEPNEXT or PFM_TABLE or PFM_PAGEBREAKBEFORE or
+    PFM_NOLINENUMBER or PFM_NOWIDOWCONTROL or PFM_DONOTHYPHEN or PFM_SIDEBYSIDE or
+    PFM_TABLE or PFM_TABLEROWDELIMITER
+  PFM_ALL2* =
+    PFM_ALL or PFM_EFFECTS or PFM_SPACEBEFORE or PFM_SPACEAFTER or PFM_LINESPACING or
+    PFM_STYLE or PFM_SHADING or PFM_BORDER or PFM_NUMBERINGTAB or PFM_NUMBERINGSTART or
+    PFM_NUMBERINGSTYLE
   PFE_RTLPARA* = PFM_RTLPARA shr 16
   PFE_KEEP* = PFM_KEEP shr 16
   PFE_KEEPNEXT* = PFM_KEEPNEXT shr 16
@@ -690,12 +774,23 @@
   IID_IRichEditOle* = DEFINE_GUID("00020d00-0000-0000-c000-000000000046")
   IID_IRichEditOleCallback* = DEFINE_GUID("00020d03-0000-0000-c000-000000000046")
 type
-  AutoCorrectProc* = proc (langid: LANGID, pszBefore: ptr WCHAR, pszAfter: ptr WCHAR, cchAfter: LONG, pcchReplaced: ptr LONG): int32 {.stdcall.}
-  EDITWORDBREAKPROCEX* = proc (pchText: ptr char, cchText: LONG, bCharSet: BYTE, action: INT): LONG {.stdcall.}
-  EDITSTREAMCALLBACK* = proc (dwCookie: DWORD_PTR, pbBuff: LPBYTE, cb: LONG, pcb: ptr LONG): DWORD {.stdcall.}
+  AutoCorrectProc* = proc(
+    langid: LANGID,
+    pszBefore: ptr WCHAR,
+    pszAfter: ptr WCHAR,
+    cchAfter: LONG,
+    pcchReplaced: ptr LONG,
+  ): int32 {.stdcall.}
+  EDITWORDBREAKPROCEX* = proc(
+    pchText: ptr char, cchText: LONG, bCharSet: BYTE, action: INT
+  ): LONG {.stdcall.}
+  EDITSTREAMCALLBACK* = proc(
+    dwCookie: DWORD_PTR, pbBuff: LPBYTE, cb: LONG, pcb: ptr LONG
+  ): DWORD {.stdcall.}
   IMECOMPTEXT* {.pure.} = object
     cb*: LONG
     flags*: DWORD
+
   TABLEROWPARMS* {.pure.} = object
     cbRow*: BYTE
     cbCell*: BYTE
@@ -704,23 +799,24 @@
     dxCellMargin*: LONG
     dxIndent*: LONG
     dyHeight*: LONG
-    nAlignment* {.bitsize:3.}: DWORD
-    fRTL* {.bitsize:1.}: DWORD
-    fKeep* {.bitsize:1.}: DWORD
-    fKeepFollow* {.bitsize:1.}: DWORD
-    fWrap* {.bitsize:1.}: DWORD
-    fIdentCells* {.bitsize:1.}: DWORD
+    nAlignment* {.bitsize: 3.}: DWORD
+    fRTL* {.bitsize: 1.}: DWORD
+    fKeep* {.bitsize: 1.}: DWORD
+    fKeepFollow* {.bitsize: 1.}: DWORD
+    fWrap* {.bitsize: 1.}: DWORD
+    fIdentCells* {.bitsize: 1.}: DWORD
     cpStartRow*: LONG
     bTableLevel*: BYTE
     iCell*: BYTE
+
   TABLECELLPARMS* {.pure.} = object
     dxWidth*: LONG
-    nVertAlign* {.bitsize:2.}: WORD
-    fMergeTop* {.bitsize:1.}: WORD
-    fMergePrev* {.bitsize:1.}: WORD
-    fVertical* {.bitsize:1.}: WORD
-    fMergeStart* {.bitsize:1.}: WORD
-    fMergeCont* {.bitsize:1.}: WORD
+    nVertAlign* {.bitsize: 2.}: WORD
+    fMergeTop* {.bitsize: 1.}: WORD
+    fMergePrev* {.bitsize: 1.}: WORD
+    fVertical* {.bitsize: 1.}: WORD
+    fMergeStart* {.bitsize: 1.}: WORD
+    fMergeCont* {.bitsize: 1.}: WORD
     wShading*: WORD
     dxBrdrLeft*: SHORT
     dyBrdrTop*: SHORT
@@ -732,6 +828,7 @@
     crBrdrBottom*: COLORREF
     crBackPat*: COLORREF
     crForePat*: COLORREF
+
   RICHEDIT_IMAGE_PARAMETERS* {.pure.} = object
     xWidth*: LONG
     yHeight*: LONG
@@ -739,9 +836,11 @@
     Type*: LONG
     pwszAlternateText*: LPCWSTR
     pIStream*: ptr IStream
+
   ENDCOMPOSITIONNOTIFY* {.pure, packed.} = object
     nmhdr*: NMHDR
     dwCode*: DWORD
+
   CHARFORMATA* {.pure.} = object
     cbSize*: UINT
     dwMask*: DWORD
@@ -752,6 +851,7 @@
     bCharSet*: BYTE
     bPitchAndFamily*: BYTE
     szFaceName*: array[LF_FACESIZE, char]
+
   CHARFORMATW* {.pure.} = object
     cbSize*: UINT
     dwMask*: DWORD
@@ -762,9 +862,11 @@
     bCharSet*: BYTE
     bPitchAndFamily*: BYTE
     szFaceName*: array[LF_FACESIZE, WCHAR]
+
   CHARFORMAT2W_UNION1* {.pure, union.} = object
     dwReserved*: DWORD
     dwCookie*: DWORD
+
   CHARFORMAT2W* {.pure.} = object
     cbSize*: UINT
     dwMask*: DWORD
@@ -786,9 +888,11 @@
     bAnimation*: BYTE
     bRevAuthor*: BYTE
     bUnderlineColor*: BYTE
+
   CHARFORMAT2A_UNION1* {.pure, union.} = object
     dwReserved*: DWORD
     dwCookie*: DWORD
+
   CHARFORMAT2A* {.pure.} = object
     cbSize*: UINT
     dwMask*: DWORD
@@ -810,39 +914,49 @@
     bAnimation*: BYTE
     bRevAuthor*: BYTE
     bUnderlineColor*: BYTE
+
   TEXTRANGEA* {.pure.} = object
     chrg*: CHARRANGE
     lpstrText*: LPSTR
+
   TEXTRANGEW* {.pure.} = object
     chrg*: CHARRANGE
     lpstrText*: LPWSTR
+
   EDITSTREAM* {.pure, packed.} = object
     dwCookie*: DWORD_PTR
     dwError*: DWORD
     pfnCallback*: EDITSTREAMCALLBACK
+
   TFINDTEXTA* {.pure.} = object
     chrg*: CHARRANGE
     lpstrText*: LPCSTR
+
   TFINDTEXTW* {.pure.} = object
     chrg*: CHARRANGE
     lpstrText*: LPCWSTR
+
   FINDTEXTEXA* {.pure.} = object
     chrg*: CHARRANGE
     lpstrText*: LPCSTR
     chrgText*: CHARRANGE
+
   FINDTEXTEXW* {.pure.} = object
     chrg*: CHARRANGE
     lpstrText*: LPCWSTR
     chrgText*: CHARRANGE
+
   FORMATRANGE* {.pure.} = object
     hdc*: HDC
     hdcTarget*: HDC
     rc*: RECT
     rcPage*: RECT
     chrg*: CHARRANGE
+
   PARAFORMAT_UNION1* {.pure, union.} = object
     wReserved*: WORD
     wEffects*: WORD
+
   PARAFORMAT* {.pure.} = object
     cbSize*: UINT
     dwMask*: DWORD
@@ -854,9 +968,11 @@
     wAlignment*: WORD
     cTabCount*: SHORT
     rgxTabs*: array[MAX_TAB_STOPS, LONG]
+
   PARAFORMAT2_UNION1* {.pure, union.} = object
     wReserved*: WORD
     wEffects*: WORD
+
   PARAFORMAT2* {.pure.} = object
     cbSize*: UINT
     dwMask*: DWORD
@@ -882,155 +998,377 @@
     wBorderSpace*: WORD
     wBorderWidth*: WORD
     wBorders*: WORD
+
   MSGFILTER* {.pure, packed.} = object
     nmhdr*: NMHDR
     msg*: UINT
     wParam*: WPARAM
     lParam*: LPARAM
+
   REQRESIZE* {.pure.} = object
     nmhdr*: NMHDR
     rc*: RECT
+
   SELCHANGE* {.pure, packed.} = object
     nmhdr*: NMHDR
     chrg*: CHARRANGE
     seltyp*: WORD
     padding*: array[2, byte]
+
   GROUPTYPINGCHANGE* {.pure, packed.} = object
     nmhdr*: NMHDR
     fGroupTyping*: WINBOOL
+
   CLIPBOARDFORMAT* {.pure, packed.} = object
     nmhdr*: NMHDR
     cf*: CLIPFORMAT
     padding*: array[2, byte]
+
   GETCONTEXTMENUEX* {.pure, packed.} = object
     chrg*: CHARRANGE
     dwFlags*: DWORD
     pt*: POINT
     pvReserved*: pointer
+
   TENDROPFILES* {.pure.} = object
     nmhdr*: NMHDR
     hDrop*: HANDLE
     cp*: LONG
     fProtected*: WINBOOL
+
   TENPROTECTED* {.pure, packed.} = object
     nmhdr*: NMHDR
     msg*: UINT
     wParam*: WPARAM
     lParam*: LPARAM
     chrg*: CHARRANGE
+
   TENSAVECLIPBOARD* {.pure.} = object
     nmhdr*: NMHDR
     cObjectCount*: LONG
     cch*: LONG
+
   TENOLEOPFAILED* {.pure, packed.} = object
     nmhdr*: NMHDR
     iob*: LONG
     lOper*: LONG
     hr*: HRESULT
+
   OBJECTPOSITIONS* {.pure, packed.} = object
     nmhdr*: NMHDR
     cObjectCount*: LONG
     pcpPositions*: ptr LONG
+
   TENLINK* {.pure, packed.} = object
     nmhdr*: NMHDR
     msg*: UINT
     wParam*: WPARAM
     lParam*: LPARAM
     chrg*: CHARRANGE
+
   TENLOWFIRTF* {.pure.} = object
     nmhdr*: NMHDR
     szControl*: ptr char
+
   TENCORRECTTEXT* {.pure, packed.} = object
     nmhdr*: NMHDR
     chrg*: CHARRANGE
     seltyp*: WORD
     padding*: array[2, byte]
+
   PUNCTUATION* {.pure, packed.} = object
     iSize*: UINT
     szPunctuation*: LPSTR
+
   COMPCOLOR* {.pure.} = object
     crText*: COLORREF
     crBackground*: COLORREF
     dwEffects*: DWORD
+
   REPASTESPECIAL* {.pure, packed.} = object
     dwAspect*: DWORD
     dwParam*: DWORD_PTR
+
   SETTEXTEX* {.pure.} = object
     flags*: DWORD
     codepage*: UINT
+
   GETTEXTEX* {.pure, packed.} = object
     cb*: DWORD
     flags*: DWORD
     codepage*: UINT
     lpDefaultChar*: LPCSTR
     lpUsedDefChar*: LPBOOL
+
   GETTEXTLENGTHEX* {.pure.} = object
     flags*: DWORD
     codepage*: UINT
+
   BIDIOPTIONS* {.pure.} = object
     cbSize*: UINT
     wMask*: WORD
     wEffects*: WORD
+
   HYPHRESULT* {.pure.} = object
     khyph*: KHYPH
     ichHyph*: int32
     chHyph*: WCHAR
+
   HYPHENATEINFO* {.pure, packed.} = object
     cbSize*: SHORT
     dxHyphenateZone*: SHORT
-    pfnHyphenate*: proc(P1: ptr WCHAR, P2: LANGID, P3: int32, P4: ptr HYPHRESULT): void {.stdcall.}
-proc `dwReserved=`*(self: var CHARFORMAT2W, x: DWORD) {.inline.} = self.union1.dwReserved = x
-proc dwReserved*(self: CHARFORMAT2W): DWORD {.inline.} = self.union1.dwReserved
-proc dwReserved*(self: var CHARFORMAT2W): var DWORD {.inline.} = self.union1.dwReserved
-proc `dwCookie=`*(self: var CHARFORMAT2W, x: DWORD) {.inline.} = self.union1.dwCookie = x
-proc dwCookie*(self: CHARFORMAT2W): DWORD {.inline.} = self.union1.dwCookie
-proc dwCookie*(self: var CHARFORMAT2W): var DWORD {.inline.} = self.union1.dwCookie
-proc `dwReserved=`*(self: var CHARFORMAT2A, x: DWORD) {.inline.} = self.union1.dwReserved = x
-proc dwReserved*(self: CHARFORMAT2A): DWORD {.inline.} = self.union1.dwReserved
-proc dwReserved*(self: var CHARFORMAT2A): var DWORD {.inline.} = self.union1.dwReserved
-proc `dwCookie=`*(self: var CHARFORMAT2A, x: DWORD) {.inline.} = self.union1.dwCookie = x
-proc dwCookie*(self: CHARFORMAT2A): DWORD {.inline.} = self.union1.dwCookie
-proc dwCookie*(self: var CHARFORMAT2A): var DWORD {.inline.} = self.union1.dwCookie
-proc `wReserved=`*(self: var PARAFORMAT, x: WORD) {.inline.} = self.union1.wReserved = x
-proc wReserved*(self: PARAFORMAT): WORD {.inline.} = self.union1.wReserved
-proc wReserved*(self: var PARAFORMAT): var WORD {.inline.} = self.union1.wReserved
-proc `wEffects=`*(self: var PARAFORMAT, x: WORD) {.inline.} = self.union1.wEffects = x
-proc wEffects*(self: PARAFORMAT): WORD {.inline.} = self.union1.wEffects
-proc wEffects*(self: var PARAFORMAT): var WORD {.inline.} = self.union1.wEffects
-proc `wReserved=`*(self: var PARAFORMAT2, x: WORD) {.inline.} = self.union1.wReserved = x
-proc wReserved*(self: PARAFORMAT2): WORD {.inline.} = self.union1.wReserved
-proc wReserved*(self: var PARAFORMAT2): var WORD {.inline.} = self.union1.wReserved
-proc `wEffects=`*(self: var PARAFORMAT2, x: WORD) {.inline.} = self.union1.wEffects = x
-proc wEffects*(self: PARAFORMAT2): WORD {.inline.} = self.union1.wEffects
-proc wEffects*(self: var PARAFORMAT2): var WORD {.inline.} = self.union1.wEffects
-proc GetClientSite*(self: ptr IRichEditOle, lplpolesite: ptr LPOLECLIENTSITE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClientSite(self, lplpolesite)
-proc GetObjectCount*(self: ptr IRichEditOle): LONG {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObjectCount(self)
-proc GetLinkCount*(self: ptr IRichEditOle): LONG {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLinkCount(self)
-proc GetObject*(self: ptr IRichEditOle, iob: LONG, lpreobject: ptr REOBJECT, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObject(self, iob, lpreobject, dwFlags)
-proc InsertObject*(self: ptr IRichEditOle, lpreobject: ptr REOBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InsertObject(self, lpreobject)
-proc ConvertObject*(self: ptr IRichEditOle, iob: LONG, rclsidNew: REFCLSID, lpstrUserTypeNew: LPCSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ConvertObject(self, iob, rclsidNew, lpstrUserTypeNew)
-proc ActivateAs*(self: ptr IRichEditOle, rclsid: REFCLSID, rclsidAs: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ActivateAs(self, rclsid, rclsidAs)
-proc SetHostNames*(self: ptr IRichEditOle, lpstrContainerApp: LPCSTR, lpstrContainerObj: LPCSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHostNames(self, lpstrContainerApp, lpstrContainerObj)
-proc SetLinkAvailable*(self: ptr IRichEditOle, iob: LONG, fAvailable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetLinkAvailable(self, iob, fAvailable)
-proc SetDvaspect*(self: ptr IRichEditOle, iob: LONG, dvaspect: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDvaspect(self, iob, dvaspect)
-proc HandsOffStorage*(self: ptr IRichEditOle, iob: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandsOffStorage(self, iob)
-proc SaveCompleted*(self: ptr IRichEditOle, iob: LONG, lpstg: LPSTORAGE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SaveCompleted(self, iob, lpstg)
-proc InPlaceDeactivate*(self: ptr IRichEditOle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InPlaceDeactivate(self)
-proc ContextSensitiveHelp*(self: ptr IRichEditOle, fEnterMode: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ContextSensitiveHelp(self, fEnterMode)
-proc GetClipboardData*(self: ptr IRichEditOle, lpchrg: ptr CHARRANGE, reco: DWORD, lplpdataobj: ptr LPDATAOBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClipboardData(self, lpchrg, reco, lplpdataobj)
-proc ImportDataObject*(self: ptr IRichEditOle, lpdataobj: LPDATAOBJECT, cf: CLIPFORMAT, hMetaPict: HGLOBAL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ImportDataObject(self, lpdataobj, cf, hMetaPict)
-proc GetNewStorage*(self: ptr IRichEditOleCallback, lplpstg: ptr LPSTORAGE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNewStorage(self, lplpstg)
-proc GetInPlaceContext*(self: ptr IRichEditOleCallback, lplpFrame: ptr LPOLEINPLACEFRAME, lplpDoc: ptr LPOLEINPLACEUIWINDOW, lpFrameInfo: LPOLEINPLACEFRAMEINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInPlaceContext(self, lplpFrame, lplpDoc, lpFrameInfo)
-proc ShowContainerUI*(self: ptr IRichEditOleCallback, fShow: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowContainerUI(self, fShow)
-proc QueryInsertObject*(self: ptr IRichEditOleCallback, lpclsid: LPCLSID, lpstg: LPSTORAGE, cp: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryInsertObject(self, lpclsid, lpstg, cp)
-proc DeleteObject*(self: ptr IRichEditOleCallback, lpoleobj: LPOLEOBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteObject(self, lpoleobj)
-proc QueryAcceptData*(self: ptr IRichEditOleCallback, lpdataobj: LPDATAOBJECT, lpcfFormat: ptr CLIPFORMAT, reco: DWORD, fReally: WINBOOL, hMetaPict: HGLOBAL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryAcceptData(self, lpdataobj, lpcfFormat, reco, fReally, hMetaPict)
-proc ContextSensitiveHelp*(self: ptr IRichEditOleCallback, fEnterMode: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ContextSensitiveHelp(self, fEnterMode)
-proc GetClipboardData*(self: ptr IRichEditOleCallback, lpchrg: ptr CHARRANGE, reco: DWORD, lplpdataobj: ptr LPDATAOBJECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClipboardData(self, lpchrg, reco, lplpdataobj)
-proc GetDragDropEffect*(self: ptr IRichEditOleCallback, fDrag: WINBOOL, grfKeyState: DWORD, pdwEffect: LPDWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDragDropEffect(self, fDrag, grfKeyState, pdwEffect)
-proc GetContextMenu*(self: ptr IRichEditOleCallback, seltype: WORD, lpoleobj: LPOLEOBJECT, lpchrg: ptr CHARRANGE, lphmenu: ptr HMENU): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetContextMenu(self, seltype, lpoleobj, lpchrg, lphmenu)
-converter winimConverterIRichEditOleToIUnknown*(x: ptr IRichEditOle): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRichEditOleCallbackToIUnknown*(x: ptr IRichEditOleCallback): ptr IUnknown = cast[ptr IUnknown](x)
+    pfnHyphenate*:
+      proc(P1: ptr WCHAR, P2: LANGID, P3: int32, P4: ptr HYPHRESULT): void {.stdcall.}
+
+proc `dwReserved=`*(self: var CHARFORMAT2W, x: DWORD) {.inline.} =
+  self.union1.dwReserved = x
+
+proc dwReserved*(self: CHARFORMAT2W): DWORD {.inline.} =
+  self.union1.dwReserved
+
+proc dwReserved*(self: var CHARFORMAT2W): var DWORD {.inline.} =
+  self.union1.dwReserved
+
+proc `dwCookie=`*(self: var CHARFORMAT2W, x: DWORD) {.inline.} =
+  self.union1.dwCookie = x
+
+proc dwCookie*(self: CHARFORMAT2W): DWORD {.inline.} =
+  self.union1.dwCookie
+
+proc dwCookie*(self: var CHARFORMAT2W): var DWORD {.inline.} =
+  self.union1.dwCookie
+
+proc `dwReserved=`*(self: var CHARFORMAT2A, x: DWORD) {.inline.} =
+  self.union1.dwReserved = x
+
+proc dwReserved*(self: CHARFORMAT2A): DWORD {.inline.} =
+  self.union1.dwReserved
+
+proc dwReserved*(self: var CHARFORMAT2A): var DWORD {.inline.} =
+  self.union1.dwReserved
+
+proc `dwCookie=`*(self: var CHARFORMAT2A, x: DWORD) {.inline.} =
+  self.union1.dwCookie = x
+
+proc dwCookie*(self: CHARFORMAT2A): DWORD {.inline.} =
+  self.union1.dwCookie
+
+proc dwCookie*(self: var CHARFORMAT2A): var DWORD {.inline.} =
+  self.union1.dwCookie
+
+proc `wReserved=`*(self: var PARAFORMAT, x: WORD) {.inline.} =
+  self.union1.wReserved = x
+
+proc wReserved*(self: PARAFORMAT): WORD {.inline.} =
+  self.union1.wReserved
+
+proc wReserved*(self: var PARAFORMAT): var WORD {.inline.} =
+  self.union1.wReserved
+
+proc `wEffects=`*(self: var PARAFORMAT, x: WORD) {.inline.} =
+  self.union1.wEffects = x
+
+proc wEffects*(self: PARAFORMAT): WORD {.inline.} =
+  self.union1.wEffects
+
+proc wEffects*(self: var PARAFORMAT): var WORD {.inline.} =
+  self.union1.wEffects
+
+proc `wReserved=`*(self: var PARAFORMAT2, x: WORD) {.inline.} =
+  self.union1.wReserved = x
+
+proc wReserved*(self: PARAFORMAT2): WORD {.inline.} =
+  self.union1.wReserved
+
+proc wReserved*(self: var PARAFORMAT2): var WORD {.inline.} =
+  self.union1.wReserved
+
+proc `wEffects=`*(self: var PARAFORMAT2, x: WORD) {.inline.} =
+  self.union1.wEffects = x
+
+proc wEffects*(self: PARAFORMAT2): WORD {.inline.} =
+  self.union1.wEffects
+
+proc wEffects*(self: var PARAFORMAT2): var WORD {.inline.} =
+  self.union1.wEffects
+
+proc GetClientSite*(
+    self: ptr IRichEditOle, lplpolesite: ptr LPOLECLIENTSITE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetClientSite(self, lplpolesite)
+
+proc GetObjectCount*(self: ptr IRichEditOle): LONG {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObjectCount(self)
+
+proc GetLinkCount*(self: ptr IRichEditOle): LONG {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLinkCount(self)
+
+proc GetObject*(
+    self: ptr IRichEditOle, iob: LONG, lpreobject: ptr REOBJECT, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObject(self, iob, lpreobject, dwFlags)
+
+proc InsertObject*(
+    self: ptr IRichEditOle, lpreobject: ptr REOBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InsertObject(self, lpreobject)
+
+proc ConvertObject*(
+    self: ptr IRichEditOle, iob: LONG, rclsidNew: REFCLSID, lpstrUserTypeNew: LPCSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ConvertObject(self, iob, rclsidNew, lpstrUserTypeNew)
+
+proc ActivateAs*(
+    self: ptr IRichEditOle, rclsid: REFCLSID, rclsidAs: REFCLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ActivateAs(self, rclsid, rclsidAs)
+
+proc SetHostNames*(
+    self: ptr IRichEditOle, lpstrContainerApp: LPCSTR, lpstrContainerObj: LPCSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHostNames(self, lpstrContainerApp, lpstrContainerObj)
+
+proc SetLinkAvailable*(
+    self: ptr IRichEditOle, iob: LONG, fAvailable: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetLinkAvailable(self, iob, fAvailable)
+
+proc SetDvaspect*(
+    self: ptr IRichEditOle, iob: LONG, dvaspect: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDvaspect(self, iob, dvaspect)
+
+proc HandsOffStorage*(self: ptr IRichEditOle, iob: LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandsOffStorage(self, iob)
+
+proc SaveCompleted*(
+    self: ptr IRichEditOle, iob: LONG, lpstg: LPSTORAGE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SaveCompleted(self, iob, lpstg)
+
+proc InPlaceDeactivate*(self: ptr IRichEditOle): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InPlaceDeactivate(self)
+
+proc ContextSensitiveHelp*(
+    self: ptr IRichEditOle, fEnterMode: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ContextSensitiveHelp(self, fEnterMode)
+
+proc GetClipboardData*(
+    self: ptr IRichEditOle,
+    lpchrg: ptr CHARRANGE,
+    reco: DWORD,
+    lplpdataobj: ptr LPDATAOBJECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetClipboardData(self, lpchrg, reco, lplpdataobj)
+
+proc ImportDataObject*(
+    self: ptr IRichEditOle, lpdataobj: LPDATAOBJECT, cf: CLIPFORMAT, hMetaPict: HGLOBAL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ImportDataObject(self, lpdataobj, cf, hMetaPict)
+
+proc GetNewStorage*(
+    self: ptr IRichEditOleCallback, lplpstg: ptr LPSTORAGE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNewStorage(self, lplpstg)
+
+proc GetInPlaceContext*(
+    self: ptr IRichEditOleCallback,
+    lplpFrame: ptr LPOLEINPLACEFRAME,
+    lplpDoc: ptr LPOLEINPLACEUIWINDOW,
+    lpFrameInfo: LPOLEINPLACEFRAMEINFO,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInPlaceContext(self, lplpFrame, lplpDoc, lpFrameInfo)
+
+proc ShowContainerUI*(
+    self: ptr IRichEditOleCallback, fShow: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowContainerUI(self, fShow)
+
+proc QueryInsertObject*(
+    self: ptr IRichEditOleCallback, lpclsid: LPCLSID, lpstg: LPSTORAGE, cp: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryInsertObject(self, lpclsid, lpstg, cp)
+
+proc DeleteObject*(
+    self: ptr IRichEditOleCallback, lpoleobj: LPOLEOBJECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteObject(self, lpoleobj)
+
+proc QueryAcceptData*(
+    self: ptr IRichEditOleCallback,
+    lpdataobj: LPDATAOBJECT,
+    lpcfFormat: ptr CLIPFORMAT,
+    reco: DWORD,
+    fReally: WINBOOL,
+    hMetaPict: HGLOBAL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryAcceptData(self, lpdataobj, lpcfFormat, reco, fReally, hMetaPict)
+
+proc ContextSensitiveHelp*(
+    self: ptr IRichEditOleCallback, fEnterMode: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ContextSensitiveHelp(self, fEnterMode)
+
+proc GetClipboardData*(
+    self: ptr IRichEditOleCallback,
+    lpchrg: ptr CHARRANGE,
+    reco: DWORD,
+    lplpdataobj: ptr LPDATAOBJECT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetClipboardData(self, lpchrg, reco, lplpdataobj)
+
+proc GetDragDropEffect*(
+    self: ptr IRichEditOleCallback,
+    fDrag: WINBOOL,
+    grfKeyState: DWORD,
+    pdwEffect: LPDWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDragDropEffect(self, fDrag, grfKeyState, pdwEffect)
+
+proc GetContextMenu*(
+    self: ptr IRichEditOleCallback,
+    seltype: WORD,
+    lpoleobj: LPOLEOBJECT,
+    lpchrg: ptr CHARRANGE,
+    lphmenu: ptr HMENU,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetContextMenu(self, seltype, lpoleobj, lpchrg, lphmenu)
+
+converter winimConverterIRichEditOleToIUnknown*(x: ptr IRichEditOle): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRichEditOleCallbackToIUnknown*(
+    x: ptr IRichEditOleCallback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
 when winimUnicode:
   type
     CHARFORMAT* = CHARFORMATW
@@ -1038,8 +1376,8 @@
     TEXTRANGE* = TEXTRANGEW
     TFINDTEXT* = TFINDTEXTW
     FINDTEXTEX* = FINDTEXTEXW
-  const
-    RICHEDIT_CLASS* = RICHEDIT_CLASSW
+
+  const RICHEDIT_CLASS* = RICHEDIT_CLASSW
 when winimAnsi:
   type
     CHARFORMAT* = CHARFORMATA
@@ -1047,5 +1385,5 @@
     TEXTRANGE* = TEXTRANGEA
     TFINDTEXT* = TFINDTEXTA
     FINDTEXTEX* = FINDTEXTEXA
-  const
-    RICHEDIT_CLASS* = RICHEDIT_CLASSA
+
+  const RICHEDIT_CLASS* = RICHEDIT_CLASSA
--- a/semicongine/thirdparty/winim/winim/inc/rpc.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/rpc.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -55,14 +55,17 @@
   PCInterfaceName* = ptr char
   RPC_STATUS* = int32
   MIDL_uhyper* = int64
+
 when winimCpu64:
   type
     size_t* = int64
     ssize_t* = int64
+
 when winimCpu32:
   type
     size_t* = int32
     ssize_t* = int32
+
 type
   I_RPC_HANDLE* = HANDLE
   RPC_IF_HANDLE* = HANDLE
@@ -70,17 +73,21 @@
   RPC_BINDING_VECTOR* {.pure.} = object
     Count*: int32
     BindingH*: array[1, RPC_BINDING_HANDLE]
+
   RPC_IMPORT_CONTEXT_P* {.pure.} = object
     LookupContext*: RPC_NS_HANDLE
     ProposedHandle*: RPC_BINDING_HANDLE
     Bindings*: ptr RPC_BINDING_VECTOR
+
   PRPC_IMPORT_CONTEXT_P* = ptr RPC_IMPORT_CONTEXT_P
   NDR_SCONTEXT* {.pure.} = ref object
     pad*: array[2, pointer]
     userContext*: pointer
+
   SCONTEXT_QUEUE* {.pure.} = object
     NumberOfObjects*: int32
     ArrayOfObjects*: ptr NDR_SCONTEXT
+
   PSCONTEXT_QUEUE* = ptr SCONTEXT_QUEUE
   ARRAY_INFO* {.pure.} = object
     Dimension*: int32
@@ -89,6 +96,7 @@
     MaxCountArray*: ptr int32
     OffsetArray*: ptr int32
     ActualCountArray*: ptr int32
+
   PARRAY_INFO* = ptr ARRAY_INFO
   NDR_ASYNC_MESSAGE* {.pure.} = object
   PNDR_ASYNC_MESSAGE* = ptr NDR_ASYNC_MESSAGE
@@ -97,9 +105,11 @@
   RPC_VERSION* {.pure.} = object
     MajorVersion*: uint16
     MinorVersion*: uint16
+
   RPC_SYNTAX_IDENTIFIER* {.pure.} = object
     SyntaxGUID*: GUID
     SyntaxVersion*: RPC_VERSION
+
   PRPC_SYNTAX_IDENTIFIER* = ptr RPC_SYNTAX_IDENTIFIER
   RPC_MGR_EPV* {.pure.} = object
   RPC_MESSAGE* {.pure.} = object
@@ -114,12 +124,14 @@
     ManagerEpv*: ptr RPC_MGR_EPV
     ImportContext*: pointer
     RpcFlags*: int32
+
   PRPC_MESSAGE* = ptr RPC_MESSAGE
-  RPC_DISPATCH_FUNCTION* = proc (Message: PRPC_MESSAGE): void {.stdcall.}
+  RPC_DISPATCH_FUNCTION* = proc(Message: PRPC_MESSAGE): void {.stdcall.}
   RPC_DISPATCH_TABLE* {.pure.} = object
     DispatchTableCount*: int32
     DispatchTable*: ptr RPC_DISPATCH_FUNCTION
     Reserved*: LONG_PTR
+
   MIDL_SYNTAX_INFO* {.pure.} = object
     TransferSyntax*: RPC_SYNTAX_IDENTIFIER
     DispatchTable*: ptr RPC_DISPATCH_TABLE
@@ -129,62 +141,113 @@
     aUserMarshalQuadruple*: pointer
     pReserved1*: ULONG_PTR
     pReserved2*: ULONG_PTR
+
   PMIDL_SYNTAX_INFO* = ptr MIDL_SYNTAX_INFO
   NDR_ALLOC_ALL_NODES_CONTEXT* {.pure.} = object
   NDR_POINTER_QUEUE_STATE* {.pure.} = object
   handle_t* = RPC_BINDING_HANDLE
-  GENERIC_BINDING_ROUTINE* = proc (P1: pointer): pointer {.stdcall.}
-  GENERIC_UNBIND_ROUTINE* = proc (P1: pointer, P2: ptr uint8): void {.stdcall.}
+  GENERIC_BINDING_ROUTINE* = proc(P1: pointer): pointer {.stdcall.}
+  GENERIC_UNBIND_ROUTINE* = proc(P1: pointer, P2: ptr uint8): void {.stdcall.}
   GENERIC_BINDING_INFO* {.pure.} = object
     pObj*: pointer
     Size*: int32
     pfnBind*: GENERIC_BINDING_ROUTINE
     pfnUnbind*: GENERIC_UNBIND_ROUTINE
+
   PGENERIC_BINDING_INFO* = ptr GENERIC_BINDING_INFO
   MIDL_STUB_DESC_IMPLICIT_HANDLE_INFO* {.pure, union.} = object
     pAutoHandle*: ptr handle_t
     pPrimitiveHandle*: ptr handle_t
     pGenericBindingInfo*: PGENERIC_BINDING_INFO
-  NDR_RUNDOWN* = proc (context: pointer): void {.stdcall.}
+
+  NDR_RUNDOWN* = proc(context: pointer): void {.stdcall.}
   GENERIC_BINDING_ROUTINE_PAIR* {.pure.} = object
     pfnBind*: GENERIC_BINDING_ROUTINE
     pfnUnbind*: GENERIC_UNBIND_ROUTINE
-  EXPR_EVAL* = proc (P1: ptr MIDL_STUB_MESSAGE): void {.stdcall.}
-  XMIT_HELPER_ROUTINE* = proc (P1: PMIDL_STUB_MESSAGE): void {.stdcall.}
+
+  EXPR_EVAL* = proc(P1: ptr MIDL_STUB_MESSAGE): void {.stdcall.}
+  XMIT_HELPER_ROUTINE* = proc(P1: PMIDL_STUB_MESSAGE): void {.stdcall.}
   XMIT_ROUTINE_QUINTUPLE* {.pure.} = object
     pfnTranslateToXmit*: XMIT_HELPER_ROUTINE
     pfnTranslateFromXmit*: XMIT_HELPER_ROUTINE
     pfnFreeXmit*: XMIT_HELPER_ROUTINE
     pfnFreeInst*: XMIT_HELPER_ROUTINE
+
   MALLOC_FREE_STRUCT* {.pure.} = object
     pfnAllocate*: proc(P1: int): pointer {.stdcall.}
     pfnFree*: proc(P1: pointer): void {.stdcall.}
+
   COMM_FAULT_OFFSETS* {.pure.} = object
     CommOffset*: int16
     FaultOffset*: int16
-  USER_MARSHAL_SIZING_ROUTINE* = proc (P1: ptr ULONG, P2: ULONG, P3: pointer): ULONG {.stdcall.}
-  USER_MARSHAL_MARSHALLING_ROUTINE* = proc (P1: ptr ULONG, P2: ptr uint8, P3: pointer): ptr uint8 {.stdcall.}
-  USER_MARSHAL_UNMARSHALLING_ROUTINE* = proc (P1: ptr ULONG, P2: ptr uint8, P3: pointer): ptr uint8 {.stdcall.}
-  USER_MARSHAL_FREEING_ROUTINE* = proc (P1: ptr ULONG, P2: pointer): void {.stdcall.}
+
+  USER_MARSHAL_SIZING_ROUTINE* =
+    proc(P1: ptr ULONG, P2: ULONG, P3: pointer): ULONG {.stdcall.}
+  USER_MARSHAL_MARSHALLING_ROUTINE* =
+    proc(P1: ptr ULONG, P2: ptr uint8, P3: pointer): ptr uint8 {.stdcall.}
+  USER_MARSHAL_UNMARSHALLING_ROUTINE* =
+    proc(P1: ptr ULONG, P2: ptr uint8, P3: pointer): ptr uint8 {.stdcall.}
+  USER_MARSHAL_FREEING_ROUTINE* = proc(P1: ptr ULONG, P2: pointer): void {.stdcall.}
   USER_MARSHAL_ROUTINE_QUADRUPLE* {.pure.} = object
     pfnBufferSize*: USER_MARSHAL_SIZING_ROUTINE
     pfnMarshall*: USER_MARSHAL_MARSHALLING_ROUTINE
     pfnUnmarshall*: USER_MARSHAL_UNMARSHALLING_ROUTINE
     pfnFree*: USER_MARSHAL_FREEING_ROUTINE
-  NDR_NOTIFY_ROUTINE* = proc (): void {.stdcall.}
-  CS_TYPE_NET_SIZE_ROUTINE* = proc (hBinding: RPC_BINDING_HANDLE, ulNetworkCodeSet: int32, ulLocalBufferSize: int32, conversionType: ptr IDL_CS_CONVERT, pulNetworkBufferSize: ptr int32, pStatus: ptr error_status_t): void {.stdcall.}
-  CS_TYPE_TO_NETCS_ROUTINE* = proc (hBinding: RPC_BINDING_HANDLE, ulNetworkCodeSet: int32, pLocalData: pointer, ulLocalDataLength: int32, pNetworkData: ptr uint8, pulNetworkDataLength: ptr int32, pStatus: ptr error_status_t): void {.stdcall.}
-  CS_TYPE_LOCAL_SIZE_ROUTINE* = proc (hBinding: RPC_BINDING_HANDLE, ulNetworkCodeSet: int32, ulNetworkBufferSize: int32, conversionType: ptr IDL_CS_CONVERT, pulLocalBufferSize: ptr int32, pStatus: ptr error_status_t): void {.stdcall.}
-  CS_TYPE_FROM_NETCS_ROUTINE* = proc (hBinding: RPC_BINDING_HANDLE, ulNetworkCodeSet: int32, pNetworkData: ptr uint8, ulNetworkDataLength: int32, ulLocalBufferSize: int32, pLocalData: pointer, pulLocalDataLength: ptr int32, pStatus: ptr error_status_t): void {.stdcall.}
+
+  NDR_NOTIFY_ROUTINE* = proc(): void {.stdcall.}
+  CS_TYPE_NET_SIZE_ROUTINE* = proc(
+    hBinding: RPC_BINDING_HANDLE,
+    ulNetworkCodeSet: int32,
+    ulLocalBufferSize: int32,
+    conversionType: ptr IDL_CS_CONVERT,
+    pulNetworkBufferSize: ptr int32,
+    pStatus: ptr error_status_t,
+  ): void {.stdcall.}
+  CS_TYPE_TO_NETCS_ROUTINE* = proc(
+    hBinding: RPC_BINDING_HANDLE,
+    ulNetworkCodeSet: int32,
+    pLocalData: pointer,
+    ulLocalDataLength: int32,
+    pNetworkData: ptr uint8,
+    pulNetworkDataLength: ptr int32,
+    pStatus: ptr error_status_t,
+  ): void {.stdcall.}
+  CS_TYPE_LOCAL_SIZE_ROUTINE* = proc(
+    hBinding: RPC_BINDING_HANDLE,
+    ulNetworkCodeSet: int32,
+    ulNetworkBufferSize: int32,
+    conversionType: ptr IDL_CS_CONVERT,
+    pulLocalBufferSize: ptr int32,
+    pStatus: ptr error_status_t,
+  ): void {.stdcall.}
+  CS_TYPE_FROM_NETCS_ROUTINE* = proc(
+    hBinding: RPC_BINDING_HANDLE,
+    ulNetworkCodeSet: int32,
+    pNetworkData: ptr uint8,
+    ulNetworkDataLength: int32,
+    ulLocalBufferSize: int32,
+    pLocalData: pointer,
+    pulLocalDataLength: ptr int32,
+    pStatus: ptr error_status_t,
+  ): void {.stdcall.}
   NDR_CS_SIZE_CONVERT_ROUTINES* {.pure.} = object
     pfnNetSize*: CS_TYPE_NET_SIZE_ROUTINE
     pfnToNetCs*: CS_TYPE_TO_NETCS_ROUTINE
     pfnLocalSize*: CS_TYPE_LOCAL_SIZE_ROUTINE
     pfnFromNetCs*: CS_TYPE_FROM_NETCS_ROUTINE
-  CS_TAG_GETTING_ROUTINE* = proc (hBinding: RPC_BINDING_HANDLE, fServerSide: int32, pulSendingTag: ptr int32, pulDesiredReceivingTag: ptr int32, pulReceivingTag: ptr int32, pStatus: ptr error_status_t): void {.stdcall.}
+
+  CS_TAG_GETTING_ROUTINE* = proc(
+    hBinding: RPC_BINDING_HANDLE,
+    fServerSide: int32,
+    pulSendingTag: ptr int32,
+    pulDesiredReceivingTag: ptr int32,
+    pulReceivingTag: ptr int32,
+    pStatus: ptr error_status_t,
+  ): void {.stdcall.}
   NDR_CS_ROUTINES* {.pure.} = object
     pSizeConvertRoutines*: ptr NDR_CS_SIZE_CONVERT_ROUTINES
     pTagGettingRoutines*: ptr CS_TAG_GETTING_ROUTINE
+
   MIDL_STUB_DESC* {.pure.} = object
     RpcInterfaceInformation*: pointer
     pfnAllocate*: proc(P1: int): pointer {.stdcall.}
@@ -206,29 +269,35 @@
     CsRoutineTables*: ptr NDR_CS_ROUTINES
     Reserved4*: pointer
     Reserved5*: ULONG_PTR
+
   FULL_PTR_XLAT_TABLES_RefIdToPointer* {.pure.} = object
     XlatTable*: ptr pointer
     StateTable*: ptr uint8
     NumberOfEntries*: int32
+
   FULL_PTR_TO_REFID_ELEMENT* {.pure.} = object
     Next*: ptr FULL_PTR_TO_REFID_ELEMENT
     Pointer*: pointer
     RefId*: int32
     State*: uint8
+
   PFULL_PTR_TO_REFID_ELEMENT* = ptr FULL_PTR_TO_REFID_ELEMENT
   FULL_PTR_XLAT_TABLES_PointerToRefId* {.pure.} = object
     XlatTable*: ptr PFULL_PTR_TO_REFID_ELEMENT
     NumberOfBuckets*: int32
     HashMask*: int32
+
   FULL_PTR_XLAT_TABLES* {.pure.} = object
     RefIdToPointer*: FULL_PTR_XLAT_TABLES_RefIdToPointer
     PointerToRefId*: FULL_PTR_XLAT_TABLES_PointerToRefId
     NextRefId*: int32
     XlatSide*: XLAT_SIDE
+
   CS_STUB_INFO* {.pure.} = object
     WireCodeset*: int32
     DesiredReceivingCodeset*: int32
     CSArrayInfo*: pointer
+
   NDR_PROC_CONTEXT* {.pure.} = object
   MIDL_STUB_MESSAGE* {.pure.} = object
     RpcMsg*: PRPC_MESSAGE
@@ -263,16 +332,16 @@
     FullPtrXlatTables*: ptr FULL_PTR_XLAT_TABLES
     FullPtrRefId*: int32
     PointerLength*: int32
-    fInDontFree* {.bitsize:1.}: int32
-    fDontCallFreeInst* {.bitsize:1.}: int32
-    fInOnlyParam* {.bitsize:1.}: int32
-    fHasReturn* {.bitsize:1.}: int32
-    fHasExtensions* {.bitsize:1.}: int32
-    fHasNewCorrDesc* {.bitsize:1.}: int32
-    fIsOicfServer* {.bitsize:1.}: int32
-    fHasMemoryValidateCallback* {.bitsize:1.}: int32
-    fUnused* {.bitsize:8.}: int32
-    fUnused2* {.bitsize:16.}: int32
+    fInDontFree* {.bitsize: 1.}: int32
+    fDontCallFreeInst* {.bitsize: 1.}: int32
+    fInOnlyParam* {.bitsize: 1.}: int32
+    fHasReturn* {.bitsize: 1.}: int32
+    fHasExtensions* {.bitsize: 1.}: int32
+    fHasNewCorrDesc* {.bitsize: 1.}: int32
+    fIsOicfServer* {.bitsize: 1.}: int32
+    fHasMemoryValidateCallback* {.bitsize: 1.}: int32
+    fUnused* {.bitsize: 8.}: int32
+    fUnused2* {.bitsize: 16.}: int32
     dwDestContext*: int32
     pvDestContext*: pointer
     SavedContextHandles*: ptr NDR_SCONTEXT
@@ -299,12 +368,13 @@
     Reserved51_3*: INT_PTR
     Reserved51_4*: INT_PTR
     Reserved51_5*: INT_PTR
+
   PMIDL_STUB_MESSAGE* = ptr MIDL_STUB_MESSAGE
   PGENERIC_BINDING_ROUTINE_PAIR* = ptr GENERIC_BINDING_ROUTINE_PAIR
   PXMIT_ROUTINE_QUINTUPLE* = ptr XMIT_ROUTINE_QUINTUPLE
   PMIDL_STUB_DESC* = ptr MIDL_STUB_DESC
-  SERVER_ROUTINE* = proc (): int32 {.stdcall.}
-  STUB_THUNK* = proc (P1: PMIDL_STUB_MESSAGE): void {.stdcall.}
+  SERVER_ROUTINE* = proc(): int32 {.stdcall.}
+  STUB_THUNK* = proc(P1: PMIDL_STUB_MESSAGE): void {.stdcall.}
   MIDL_SERVER_INFO* {.pure.} = object
     pStubDesc*: PMIDL_STUB_DESC
     DispatchTable*: ptr SERVER_ROUTINE
@@ -314,6 +384,7 @@
     pTransferSyntax*: PRPC_SYNTAX_IDENTIFIER
     nCount*: ULONG_PTR
     pSyntaxInfo*: PMIDL_SYNTAX_INFO
+
   PMIDL_SERVER_INFO* = ptr MIDL_SERVER_INFO
   MIDL_STUBLESS_PROXY_INFO* {.pure.} = object
     pStubDesc*: PMIDL_STUB_DESC
@@ -322,6 +393,7 @@
     pTransferSyntax*: PRPC_SYNTAX_IDENTIFIER
     nCount*: ULONG_PTR
     pSyntaxInfo*: PMIDL_SYNTAX_INFO
+
   PMIDL_STUBLESS_PROXY_INFO* = ptr MIDL_STUBLESS_PROXY_INFO
   PFULL_PTR_XLAT_TABLES* = ptr FULL_PTR_XLAT_TABLES
   rpc_binding_handle_t* = RPC_BINDING_HANDLE
@@ -331,17 +403,20 @@
   UUID_VECTOR* {.pure.} = object
     Count*: int32
     Uuid*: array[1, ptr UUID]
+
   uuid_vector_t* = UUID_VECTOR
   RPC_POLICY* {.pure.} = object
     Length*: int32
     EndpointFlags*: int32
     NICFlags*: int32
+
   PRPC_POLICY* = ptr RPC_POLICY
   RPC_SECURITY_QOS* {.pure.} = object
     Version*: int32
     Capabilities*: int32
     IdentityTracking*: int32
     ImpersonationType*: int32
+
   PRPC_SECURITY_QOS* = ptr RPC_SECURITY_QOS
   RPC_HTTP_TRANSPORT_CREDENTIALS_W* {.pure.} = object
     TransportCredentials*: ptr SEC_WINNT_AUTH_IDENTITY_W
@@ -350,6 +425,7 @@
     NumberOfAuthnSchemes*: int32
     AuthnSchemes*: ptr int32
     ServerCertificateSubject*: ptr uint16
+
   PRPC_HTTP_TRANSPORT_CREDENTIALS_W* = ptr RPC_HTTP_TRANSPORT_CREDENTIALS_W
   RPC_HTTP_TRANSPORT_CREDENTIALS_A* {.pure.} = object
     TransportCredentials*: ptr SEC_WINNT_AUTH_IDENTITY_A
@@ -358,9 +434,11 @@
     NumberOfAuthnSchemes*: int32
     AuthnSchemes*: ptr int32
     ServerCertificateSubject*: ptr uint8
+
   PRPC_HTTP_TRANSPORT_CREDENTIALS_A* = ptr RPC_HTTP_TRANSPORT_CREDENTIALS_A
   RPC_SECURITY_QOS_V2_W_u* {.pure, union.} = object
     HttpCredentials*: ptr RPC_HTTP_TRANSPORT_CREDENTIALS_W
+
   RPC_SECURITY_QOS_V2_W* {.pure.} = object
     Version*: int32
     Capabilities*: int32
@@ -368,9 +446,11 @@
     ImpersonationType*: int32
     AdditionalSecurityInfoType*: int32
     u*: RPC_SECURITY_QOS_V2_W_u
+
   PRPC_SECURITY_QOS_V2_W* = ptr RPC_SECURITY_QOS_V2_W
   RPC_SECURITY_QOS_V2_A_u* {.pure, union.} = object
     HttpCredentials*: ptr RPC_HTTP_TRANSPORT_CREDENTIALS_A
+
   RPC_SECURITY_QOS_V2_A* {.pure.} = object
     Version*: int32
     Capabilities*: int32
@@ -378,9 +458,11 @@
     ImpersonationType*: int32
     AdditionalSecurityInfoType*: int32
     u*: RPC_SECURITY_QOS_V2_A_u
+
   PRPC_SECURITY_QOS_V2_A* = ptr RPC_SECURITY_QOS_V2_A
   RPC_SECURITY_QOS_V3_W_u* {.pure, union.} = object
     HttpCredentials*: ptr RPC_HTTP_TRANSPORT_CREDENTIALS_W
+
   RPC_SECURITY_QOS_V3_W* {.pure.} = object
     Version*: int32
     Capabilities*: int32
@@ -389,9 +471,11 @@
     AdditionalSecurityInfoType*: int32
     u*: RPC_SECURITY_QOS_V3_W_u
     Sid*: pointer
+
   PRPC_SECURITY_QOS_V3_W* = ptr RPC_SECURITY_QOS_V3_W
   RPC_SECURITY_QOS_V3_A_u* {.pure, union.} = object
     HttpCredentials*: ptr RPC_HTTP_TRANSPORT_CREDENTIALS_A
+
   RPC_SECURITY_QOS_V3_A* {.pure.} = object
     Version*: int32
     Capabilities*: int32
@@ -400,12 +484,14 @@
     AdditionalSecurityInfoType*: int32
     u*: RPC_SECURITY_QOS_V3_A_u
     Sid*: pointer
+
   PRPC_SECURITY_QOS_V3_A* = ptr RPC_SECURITY_QOS_V3_A
   RPC_CLIENT_INFORMATION1* {.pure.} = object
     UserName*: ptr uint8
     ComputerName*: ptr uint8
     Privilege*: uint16
     AuthFlags*: int32
+
   PRPC_CLIENT_INFORMATION1* = ptr RPC_CLIENT_INFORMATION1
   RPC_EP_INQ_HANDLE* = ptr I_RPC_HANDLE
   RPC_BINDING_HANDLE_OPTIONS_V1* {.pure.} = object
@@ -413,6 +499,7 @@
     Flags*: int32
     ComTimeout*: int32
     CallTimeout*: int32
+
   RPC_BINDING_HANDLE_OPTIONS* = RPC_BINDING_HANDLE_OPTIONS_V1
   RPC_BINDING_HANDLE_SECURITY_V1* {.pure.} = object
     Version*: int32
@@ -421,9 +508,11 @@
     AuthnSvc*: int32
     AuthIdentity*: ptr SEC_WINNT_AUTH_IDENTITY
     SecurityQos*: ptr RPC_SECURITY_QOS
+
   RPC_BINDING_HANDLE_SECURITY* = RPC_BINDING_HANDLE_SECURITY_V1
   RPC_BINDING_HANDLE_TEMPLATE_V1_u1* {.pure, union.} = object
     Reserved*: ptr uint16
+
   RPC_BINDING_HANDLE_TEMPLATE_V1* {.pure.} = object
     Version*: int32
     Flags*: int32
@@ -432,11 +521,13 @@
     StringEndpoint*: ptr uint16
     u1*: RPC_BINDING_HANDLE_TEMPLATE_V1_u1
     ObjectUuid*: UUID
+
   RPC_BINDING_HANDLE_TEMPLATE* = RPC_BINDING_HANDLE_TEMPLATE_V1
   PRPC_DISPATCH_TABLE* = ptr RPC_DISPATCH_TABLE
   RPC_PROTSEQ_ENDPOINT* {.pure.} = object
     RpcProtocolSequence*: ptr uint8
     Endpoint*: ptr uint8
+
   PRPC_PROTSEQ_ENDPOINT* = ptr RPC_PROTSEQ_ENDPOINT
   RPC_SERVER_INTERFACE* {.pure.} = object
     Length*: int32
@@ -448,6 +539,7 @@
     DefaultManagerEpv*: ptr RPC_MGR_EPV
     InterpreterInfo*: pointer
     Flags*: int32
+
   PRPC_SERVER_INTERFACE* = ptr RPC_SERVER_INTERFACE
   RPC_CLIENT_INTERFACE* {.pure.} = object
     Length*: int32
@@ -459,25 +551,32 @@
     Reserved*: ULONG_PTR
     InterpreterInfo*: pointer
     Flags*: int32
+
   PRPC_CLIENT_INTERFACE* = ptr RPC_CLIENT_INTERFACE
-  PFN_RPCNOTIFICATION_ROUTINE* = proc (pAsync: ptr RPC_ASYNC_STATE, Context: pointer, Event: RPC_ASYNC_EVENT): void {.stdcall.}
+  PFN_RPCNOTIFICATION_ROUTINE* = proc(
+    pAsync: ptr RPC_ASYNC_STATE, Context: pointer, Event: RPC_ASYNC_EVENT
+  ): void {.stdcall.}
   RPC_ASYNC_STATE_u_APC* {.pure.} = object
     NotificationRoutine*: PFN_RPCNOTIFICATION_ROUTINE
     hThread*: HANDLE
+
   RPC_ASYNC_STATE_u_IOC* {.pure.} = object
     hIOPort*: HANDLE
     dwNumberOfBytesTransferred*: DWORD
     dwCompletionKey*: DWORD_PTR
     lpOverlapped*: LPOVERLAPPED
+
   RPC_ASYNC_STATE_u_HWND* {.pure.} = object
     hWnd*: HWND
     Msg*: UINT
+
   RPC_ASYNC_STATE_u* {.pure, union.} = object
     APC*: RPC_ASYNC_STATE_u_APC
     IOC*: RPC_ASYNC_STATE_u_IOC
     HWND*: RPC_ASYNC_STATE_u_HWND
     hEvent*: HANDLE
     NotificationRoutine*: PFN_RPCNOTIFICATION_ROUTINE
+
   RPC_ASYNC_STATE* {.pure.} = object
     Size*: int32
     Signature*: int32
@@ -490,6 +589,7 @@
     NotificationType*: RPC_NOTIFICATION_TYPES
     u*: RPC_ASYNC_STATE_u
     Reserved*: array[4, LONG_PTR]
+
   PRPC_ASYNC_STATE* = ptr RPC_ASYNC_STATE
   RPC_CALL_ATTRIBUTES_V1_W* {.pure.} = object
     Version*: int32
@@ -501,54 +601,59 @@
     AuthenticationLevel*: int32
     AuthenticationService*: int32
     NullSession*: WINBOOL
+
 when winimUnicode:
-  type
-    RPC_CALL_ATTRIBUTES_V1* = RPC_CALL_ATTRIBUTES_V1_W
-type
-  RPC_CALL_ATTRIBUTES_V1_A* {.pure.} = object
-    Version*: int32
-    Flags*: int32
-    ServerPrincipalNameBufferLength*: int32
-    ServerPrincipalName*: ptr uint8
-    ClientPrincipalNameBufferLength*: int32
-    ClientPrincipalName*: ptr uint8
-    AuthenticationLevel*: int32
-    AuthenticationService*: int32
-    NullSession*: WINBOOL
+  type RPC_CALL_ATTRIBUTES_V1* = RPC_CALL_ATTRIBUTES_V1_W
+type RPC_CALL_ATTRIBUTES_V1_A* {.pure.} = object
+  Version*: int32
+  Flags*: int32
+  ServerPrincipalNameBufferLength*: int32
+  ServerPrincipalName*: ptr uint8
+  ClientPrincipalNameBufferLength*: int32
+  ClientPrincipalName*: ptr uint8
+  AuthenticationLevel*: int32
+  AuthenticationService*: int32
+  NullSession*: WINBOOL
+
 when winimAnsi:
-  type
-    RPC_CALL_ATTRIBUTES_V1* = RPC_CALL_ATTRIBUTES_V1_A
+  type RPC_CALL_ATTRIBUTES_V1* = RPC_CALL_ATTRIBUTES_V1_A
 type
   RPC_CALL_ATTRIBUTES* = RPC_CALL_ATTRIBUTES_V1
   RPC_ASYNC_NOTIFICATION_INFO_APC* {.pure.} = object
     NotificationRoutine*: PFN_RPCNOTIFICATION_ROUTINE
     hThread*: HANDLE
+
   RPC_ASYNC_NOTIFICATION_INFO_IOC* {.pure.} = object
     hIOPort*: HANDLE
     dwNumberOfBytesTransferred*: DWORD
     dwCompletionKey*: DWORD_PTR
     lpOverlapped*: LPOVERLAPPED
+
   RPC_ASYNC_NOTIFICATION_INFO_HWND* {.pure.} = object
     hWnd*: HWND
     Msg*: UINT
+
   RPC_ASYNC_NOTIFICATION_INFO* {.pure, union.} = object
     APC*: RPC_ASYNC_NOTIFICATION_INFO_APC
     IOC*: RPC_ASYNC_NOTIFICATION_INFO_IOC
     HWND*: RPC_ASYNC_NOTIFICATION_INFO_HWND
     hEvent*: HANDLE
     NotificationRoutine*: PFN_RPCNOTIFICATION_ROUTINE
+
   PRPC_ASYNC_NOTIFICATION_INFO* = ptr RPC_ASYNC_NOTIFICATION_INFO
   RPC_CALL_LOCAL_ADDRESS_V1_A* {.pure.} = object
     Version*: int32
     Buffer*: pointer
     BufferSize*: int32
     AddressFormat*: RpcLocalAddressFormat
+
   RPC_CALL_LOCAL_ADDRESS_A* = RPC_CALL_LOCAL_ADDRESS_V1_A
   RPC_CALL_LOCAL_ADDRESS_V1_W* {.pure.} = object
     Version*: int32
     Buffer*: pointer
     BufferSize*: int32
     AddressFormat*: RpcLocalAddressFormat
+
   RPC_CALL_LOCAL_ADDRESS_W* = RPC_CALL_LOCAL_ADDRESS_V1_W
   RPC_CALL_ATTRIBUTES_V2_A* {.pure.} = object
     Version*: int32
@@ -569,6 +674,7 @@
     CallLocalAddress*: ptr RPC_CALL_LOCAL_ADDRESS_A
     OpNum*: uint16
     InterfaceUuid*: UUID
+
   RPC_CALL_ATTRIBUTES_A* = RPC_CALL_ATTRIBUTES_V2_A
   RPC_CALL_ATTRIBUTES_V2_W* {.pure.} = object
     Version*: int32
@@ -589,25 +695,35 @@
     CallLocalAddress*: ptr RPC_CALL_LOCAL_ADDRESS_W
     OpNum*: uint16
     InterfaceUuid*: UUID
+
   RPC_CALL_ATTRIBUTES_W* = RPC_CALL_ATTRIBUTES_V2_W
-  PRPC_STUB_FUNCTION* = proc (This: ptr IRpcStubBuffer, pRpcChannelBuffer: ptr IRpcChannelBuffer, pRpcMessage: PRPC_MESSAGE, pdwStubPhase: ptr DWORD): void {.stdcall.}
+  PRPC_STUB_FUNCTION* = proc(
+    This: ptr IRpcStubBuffer,
+    pRpcChannelBuffer: ptr IRpcChannelBuffer,
+    pRpcMessage: PRPC_MESSAGE,
+    pdwStubPhase: ptr DWORD,
+  ): void {.stdcall.}
   CInterfaceStubHeader* {.pure.} = object
     piid*: ptr IID
     pServerInfo*: ptr MIDL_SERVER_INFO
     DispatchTableCount*: int32
     pDispatchTable*: ptr PRPC_STUB_FUNCTION
+
   CInterfaceStubVtbl* {.pure.} = object
     header*: CInterfaceStubHeader
     Vtbl*: IRpcStubBufferVtbl
+
   PCInterfaceStubVtblList* = ptr CInterfaceStubVtbl
   CInterfaceProxyHeader* {.pure.} = object
     pStublessProxyInfo*: pointer
     piid*: ptr IID
+
   CInterfaceProxyVtbl* {.pure.} = object
     header*: CInterfaceProxyHeader
     Vtbl*: UncheckedArray[pointer]
+
   PCInterfaceProxyVtblList* = ptr CInterfaceProxyVtbl
-  IIDLookupRtn* = proc (pIID: ptr IID, pIndex: ptr int32): int32 {.stdcall.}
+  IIDLookupRtn* = proc(pIID: ptr IID, pIndex: ptr int32): int32 {.stdcall.}
   PIIDLookup* = IIDLookupRtn
   ProxyFileInfo* {.pure.} = object
     pProxyVtblList*: ptr PCInterfaceProxyVtblList
@@ -621,7 +737,9 @@
     Filler2*: LONG_PTR
     Filler3*: LONG_PTR
     Filler4*: LONG_PTR
+
   ExtendedProxyFileInfo* = ProxyFileInfo
+
 const
   RPCNDR_H_VERSION* = 475
   NDR_CHAR_REP_MASK* = 0X0000000F
@@ -914,28 +1032,69 @@
   RPC_C_NO_CREDENTIALS* = RPC_AUTH_IDENTITY_HANDLE(-1)
   RPC_CONTEXT_HANDLE_DEFAULT_GUARD* = HANDLE(-4083)
 type
-  NDR_NOTIFY2_ROUTINE* = proc (flag: boolean): void {.stdcall.}
-  RPC_CLIENT_ALLOC* = proc (Size: int): pointer {.stdcall.}
-  RPC_CLIENT_FREE* = proc (Ptr: pointer): void {.stdcall.}
-  RPC_OBJECT_INQ_FN* = proc (ObjectUuid: ptr UUID, TypeUuid: ptr UUID, Status: ptr RPC_STATUS): void {.stdcall.}
-  RPC_IF_CALLBACK_FN* = proc (InterfaceUuid: RPC_IF_HANDLE, Context: pointer): RPC_STATUS {.stdcall.}
-  RPC_SECURITY_CALLBACK_FN* = proc (Context: pointer): void {.stdcall.}
-  RPC_NEW_HTTP_PROXY_CHANNEL* = proc (RedirectorStage: RPC_HTTP_REDIRECTOR_STAGE, ServerName: ptr uint16, ServerPort: ptr uint16, RemoteUser: ptr uint16, AuthType: ptr uint16, ResourceUuid: pointer, Metadata: pointer, SessionId: pointer, Interface: pointer, Reserved: pointer, Flags: int32, NewServerName: ptr ptr uint16, NewServerPort: ptr ptr uint16): RPC_STATUS {.stdcall.}
-  RPC_HTTP_PROXY_FREE_STRING* = proc (String: ptr uint16): void {.stdcall.}
-  RPC_AUTH_KEY_RETRIEVAL_FN* = proc (Arg: pointer, ServerPrincName: ptr uint16, KeyVer: int32, Key: ptr pointer, Status: ptr RPC_STATUS): void {.stdcall.}
-  RPC_MGMT_AUTHORIZATION_FN* = proc (ClientBinding: RPC_BINDING_HANDLE, RequestedMgmtOperation: int32, Status: ptr RPC_STATUS): int32 {.stdcall.}
-  RPC_FORWARD_FUNCTION* = proc (InterfaceId: ptr UUID, InterfaceVersion: ptr RPC_VERSION, ObjectId: ptr UUID, Rpcpro: ptr uint8, ppDestEndpoint: ptr pointer): RPC_STATUS {.stdcall.}
-  RPC_ADDRESS_CHANGE_FN* = proc (arg: pointer): void {.stdcall.}
-  PRPC_RUNDOWN* = proc (AssociationContext: pointer): void {.stdcall.}
-  RPCLT_PDU_FILTER_FUNC* = proc (Buffer: pointer, BufferLength: int32, fDatagram: int32): void {.stdcall.}
-  RPC_SETFILTER_FUNC* = proc (pfnFilter: RPCLT_PDU_FILTER_FUNC): void {.stdcall.}
-  RPC_BLOCKING_FN* = proc (hWnd: pointer, Context: pointer, hSyncEvent: pointer): RPC_STATUS {.stdcall.}
-  I_RpcProxyIsValidMachineFn* = proc (pszMachine: ptr char, pszDotMachine: ptr char, dwPortNumber: int32): RPC_STATUS {.stdcall.}
-  I_RpcProxyGetClientAddressFn* = proc (Context: pointer, Buffer: ptr char, BufferLength: ptr int32): RPC_STATUS {.stdcall.}
-  I_RpcProxyGetConnectionTimeoutFn* = proc (ConnectionTimeout: ptr int32): RPC_STATUS {.stdcall.}
+  NDR_NOTIFY2_ROUTINE* = proc(flag: boolean): void {.stdcall.}
+  RPC_CLIENT_ALLOC* = proc(Size: int): pointer {.stdcall.}
+  RPC_CLIENT_FREE* = proc(Ptr: pointer): void {.stdcall.}
+  RPC_OBJECT_INQ_FN* = proc(
+    ObjectUuid: ptr UUID, TypeUuid: ptr UUID, Status: ptr RPC_STATUS
+  ): void {.stdcall.}
+  RPC_IF_CALLBACK_FN* =
+    proc(InterfaceUuid: RPC_IF_HANDLE, Context: pointer): RPC_STATUS {.stdcall.}
+  RPC_SECURITY_CALLBACK_FN* = proc(Context: pointer): void {.stdcall.}
+  RPC_NEW_HTTP_PROXY_CHANNEL* = proc(
+    RedirectorStage: RPC_HTTP_REDIRECTOR_STAGE,
+    ServerName: ptr uint16,
+    ServerPort: ptr uint16,
+    RemoteUser: ptr uint16,
+    AuthType: ptr uint16,
+    ResourceUuid: pointer,
+    Metadata: pointer,
+    SessionId: pointer,
+    Interface: pointer,
+    Reserved: pointer,
+    Flags: int32,
+    NewServerName: ptr ptr uint16,
+    NewServerPort: ptr ptr uint16,
+  ): RPC_STATUS {.stdcall.}
+  RPC_HTTP_PROXY_FREE_STRING* = proc(String: ptr uint16): void {.stdcall.}
+  RPC_AUTH_KEY_RETRIEVAL_FN* = proc(
+    Arg: pointer,
+    ServerPrincName: ptr uint16,
+    KeyVer: int32,
+    Key: ptr pointer,
+    Status: ptr RPC_STATUS,
+  ): void {.stdcall.}
+  RPC_MGMT_AUTHORIZATION_FN* = proc(
+    ClientBinding: RPC_BINDING_HANDLE,
+    RequestedMgmtOperation: int32,
+    Status: ptr RPC_STATUS,
+  ): int32 {.stdcall.}
+  RPC_FORWARD_FUNCTION* = proc(
+    InterfaceId: ptr UUID,
+    InterfaceVersion: ptr RPC_VERSION,
+    ObjectId: ptr UUID,
+    Rpcpro: ptr uint8,
+    ppDestEndpoint: ptr pointer,
+  ): RPC_STATUS {.stdcall.}
+  RPC_ADDRESS_CHANGE_FN* = proc(arg: pointer): void {.stdcall.}
+  PRPC_RUNDOWN* = proc(AssociationContext: pointer): void {.stdcall.}
+  RPCLT_PDU_FILTER_FUNC* =
+    proc(Buffer: pointer, BufferLength: int32, fDatagram: int32): void {.stdcall.}
+  RPC_SETFILTER_FUNC* = proc(pfnFilter: RPCLT_PDU_FILTER_FUNC): void {.stdcall.}
+  RPC_BLOCKING_FN* =
+    proc(hWnd: pointer, Context: pointer, hSyncEvent: pointer): RPC_STATUS {.stdcall.}
+  I_RpcProxyIsValidMachineFn* = proc(
+    pszMachine: ptr char, pszDotMachine: ptr char, dwPortNumber: int32
+  ): RPC_STATUS {.stdcall.}
+  I_RpcProxyGetClientAddressFn* = proc(
+    Context: pointer, Buffer: ptr char, BufferLength: ptr int32
+  ): RPC_STATUS {.stdcall.}
+  I_RpcProxyGetConnectionTimeoutFn* =
+    proc(ConnectionTimeout: ptr int32): RPC_STATUS {.stdcall.}
   RPC_C_OPT_METADATA_DESCRIPTOR* {.pure.} = object
     BufferSize*: int32
     Buffer*: ptr char
+
   RDR_CALLOUT_STATE* {.pure.} = object
     LastError*: RPC_STATUS
     LastEEInfo*: pointer
@@ -953,9 +1112,16 @@
     SessionId*: UUID
     Interface*: RPC_SYNTAX_IDENTIFIER
     CertContext*: pointer
-  I_RpcPerformCalloutFn* = proc (Context: pointer, CallOutState: ptr RDR_CALLOUT_STATE, Stage: RPC_HTTP_REDIRECTOR_STAGE): RPC_STATUS {.stdcall.}
-  I_RpcFreeCalloutStateFn* = proc (CallOutState: ptr RDR_CALLOUT_STATE): void {.stdcall.}
-  RPCNOTIFICATION_ROUTINE* = proc (pAsync: ptr RPC_ASYNC_STATE, Context: pointer, Event: RPC_ASYNC_EVENT): void {.stdcall.}
+
+  I_RpcPerformCalloutFn* = proc(
+    Context: pointer,
+    CallOutState: ptr RDR_CALLOUT_STATE,
+    Stage: RPC_HTTP_REDIRECTOR_STAGE,
+  ): RPC_STATUS {.stdcall.}
+  I_RpcFreeCalloutStateFn* = proc(CallOutState: ptr RDR_CALLOUT_STATE): void {.stdcall.}
+  RPCNOTIFICATION_ROUTINE* = proc(
+    pAsync: ptr RPC_ASYNC_STATE, Context: pointer, Event: RPC_ASYNC_EVENT
+  ): void {.stdcall.}
   USER_MARSHAL_CB* {.pure.} = object
     Flags*: int32
     pStubMsg*: PMIDL_STUB_MESSAGE
@@ -964,12 +1130,15 @@
     CBType*: USER_MARSHAL_CB_TYPE
     pFormat*: PFORMAT_STRING
     pTypeFormat*: PFORMAT_STRING
+
   MIDL_FORMAT_STRING* {.pure.} = object
     Pad*: int16
     Format*: UncheckedArray[uint8]
+
   CLIENT_CALL_RETURN* {.pure, union.} = object
     Pointer*: pointer
     Simple*: LONG_PTR
+
   NDR_USER_MARSHAL_INFO_LEVEL1* {.pure.} = object
     Buffer*: pointer
     BufferSize*: int32
@@ -977,40 +1146,51 @@
     pfnFree*: proc(P1: pointer): void {.stdcall.}
     pRpcChannelBuffer*: ptr IRpcChannelBuffer
     Reserved*: array[5, ULONG_PTR]
+
   NDR_USER_MARSHAL_INFO_UNION1* {.pure, union.} = object
     Level1*: NDR_USER_MARSHAL_INFO_LEVEL1
+
   NDR_USER_MARSHAL_INFO* {.pure.} = object
     InformationLevel*: int32
     union1*: NDR_USER_MARSHAL_INFO_UNION1
+
   RPC_IF_ID* {.pure.} = object
     Uuid*: UUID
     VersMajor*: uint16
     VersMinor*: uint16
+
   RPC_PROTSEQ_VECTORA* {.pure.} = object
     Count*: int32
     Protseq*: array[1, ptr uint8]
+
   RPC_PROTSEQ_VECTORW* {.pure.} = object
     Count*: int32
     Protseq*: array[1, ptr uint16]
+
   RPC_STATS_VECTOR* {.pure.} = object
     Count*: int32
     Stats*: array[1, int32]
+
   RPC_IF_ID_VECTOR* {.pure.} = object
     Count*: int32
     IfId*: array[1, ptr RPC_IF_ID]
+
   RPC_TRANSFER_SYNTAX* {.pure.} = object
     Uuid*: UUID
     VersMajor*: uint16
     VersMinor*: uint16
+
   I_RpcProxyCallbackInterface* {.pure.} = object
     IsValidMachineFn*: I_RpcProxyIsValidMachineFn
     GetClientAddressFn*: I_RpcProxyGetClientAddressFn
     GetConnectionTimeoutFn*: I_RpcProxyGetConnectionTimeoutFn
     PerformCalloutFn*: I_RpcPerformCalloutFn
     FreeCalloutStateFn*: I_RpcFreeCalloutStateFn
+
   BinaryParam* {.pure.} = object
     Buffer*: pointer
     Size*: int16
+
   RPC_EE_INFO_PARAM_u* {.pure, union.} = object
     AnsiString*: LPSTR
     UnicodeString*: LPWSTR
@@ -1018,13 +1198,16 @@
     SVal*: int16
     PVal*: ULONGLONG
     BVal*: BinaryParam
+
   RPC_EE_INFO_PARAM* {.pure.} = object
     ParameterType*: ExtendedErrorParamTypes
     padding*: array[4, byte]
     u*: RPC_EE_INFO_PARAM_u
+
   RPC_EXTENDED_ERROR_INFO_u* {.pure, union.} = object
     SystemTime*: SYSTEMTIME
     FileTime*: FILETIME
+
   RPC_EXTENDED_ERROR_INFO* {.pure.} = object
     Version*: ULONG
     ComputerName*: LPWSTR
@@ -1037,10 +1220,12 @@
     NumberOfParameters*: int32
     padding*: array[4, byte]
     Parameters*: array[maxNumberOfEEInfoParams, RPC_EE_INFO_PARAM]
+
   RPC_ERROR_ENUM_HANDLE* {.pure.} = object
     Signature*: ULONG
     CurrentPos*: pointer
     Head*: pointer
+
   CStdStubBuffer* {.pure.} = object
     lpVtbl*: ptr IRpcStubBufferVtbl
     RefCount*: int32
@@ -1049,471 +1234,2250 @@
     pAsyncIID*: ptr IID
     pPSFactory*: ptr IPSFactoryBuffer
     pRMBVtbl*: ptr IReleaseMarshalBuffersVtbl
+
   CStdPSFactoryBuffer* {.pure.} = object
     lpVtbl*: ptr IPSFactoryBufferVtbl
     RefCount*: int32
     pProxyFileList*: ptr ptr ProxyFileInfo
     Filler1*: int32
-proc I_RpcNsGetBuffer*(Message: PRPC_MESSAGE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc I_RpcNsSendReceive*(Message: PRPC_MESSAGE, Handle: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc I_RpcNsRaiseException*(Message: PRPC_MESSAGE, Status: RPC_STATUS): void {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc I_RpcReBindBuffer*(Message: PRPC_MESSAGE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc NDRCContextBinding*(CContext: NDR_CCONTEXT): RPC_BINDING_HANDLE {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NDRCContextMarshall*(CContext: NDR_CCONTEXT, pBuff: pointer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NDRCContextUnmarshall*(pCContext: ptr NDR_CCONTEXT, hBinding: RPC_BINDING_HANDLE, pBuff: pointer, DataRepresentation: int32): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NDRSContextMarshall*(CContext: NDR_SCONTEXT, pBuff: pointer, userRunDownIn: NDR_RUNDOWN): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NDRSContextUnmarshall*(pBuff: pointer, DataRepresentation: int32): NDR_SCONTEXT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NDRSContextMarshallEx*(BindingHandle: RPC_BINDING_HANDLE, CContext: NDR_SCONTEXT, pBuff: pointer, userRunDownIn: NDR_RUNDOWN): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NDRSContextMarshall2*(BindingHandle: RPC_BINDING_HANDLE, CContext: NDR_SCONTEXT, pBuff: pointer, userRunDownIn: NDR_RUNDOWN, CtxGuard: pointer, Flags: int32): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NDRSContextUnmarshallEx*(BindingHandle: RPC_BINDING_HANDLE, pBuff: pointer, DataRepresentation: int32): NDR_SCONTEXT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NDRSContextUnmarshall2*(BindingHandle: RPC_BINDING_HANDLE, pBuff: pointer, DataRepresentation: int32, CtxGuard: pointer, Flags: int32): NDR_SCONTEXT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSsDestroyClientContext*(ContextHandle: ptr pointer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrSimpleTypeMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, FormatChar: uint8): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrPointerMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrSimpleStructMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantStructMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantVaryingStructMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrComplexStructMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrFixedArrayMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantArrayMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantVaryingArrayMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrVaryingArrayMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrComplexArrayMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrNonConformantStringMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantStringMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrEncapsulatedUnionMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrNonEncapsulatedUnionMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrByteCountPointerMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrXmitOrRepAsMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrUserMarshalMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrInterfacePointerMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrClientContextMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ContextHandle: NDR_CCONTEXT, fCheck: int32): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrServerContextMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ContextHandle: NDR_SCONTEXT, RundownRoutine: NDR_RUNDOWN): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrServerContextNewMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ContextHandle: NDR_SCONTEXT, RundownRoutine: NDR_RUNDOWN, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrSimpleTypeUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, FormatChar: uint8): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrRangeUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrCorrelationInitialize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: pointer, CacheSize: int32, flags: int32): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrCorrelationPass*(pStubMsg: PMIDL_STUB_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrCorrelationFree*(pStubMsg: PMIDL_STUB_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrPointerUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrSimpleStructUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantStructUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantVaryingStructUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrComplexStructUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrFixedArrayUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantArrayUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantVaryingArrayUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrVaryingArrayUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrComplexArrayUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrNonConformantStringUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantStringUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrEncapsulatedUnionUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrNonEncapsulatedUnionUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrByteCountPointerUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrXmitOrRepAsUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrUserMarshalUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrInterfacePointerUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr ptr uint8, pFormat: PFORMAT_STRING, fMustAlloc: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrClientContextUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pContextHandle: ptr NDR_CCONTEXT, BindHandle: RPC_BINDING_HANDLE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrServerContextUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE): NDR_SCONTEXT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrContextHandleInitialize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): NDR_SCONTEXT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrServerContextNewUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): NDR_SCONTEXT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrPointerBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrSimpleStructBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantStructBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantVaryingStructBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrComplexStructBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrFixedArrayBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantArrayBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantVaryingArrayBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrVaryingArrayBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrComplexArrayBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantStringBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrNonConformantStringBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrEncapsulatedUnionBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrNonEncapsulatedUnionBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrByteCountPointerBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrXmitOrRepAsBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrUserMarshalBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrInterfacePointerBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrContextHandleSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrPointerMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrSimpleStructMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantStructMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantVaryingStructMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrComplexStructMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrFixedArrayMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantArrayMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantVaryingArrayMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrVaryingArrayMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrComplexArrayMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantStringMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrNonConformantStringMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrEncapsulatedUnionMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrNonEncapsulatedUnionMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrXmitOrRepAsMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrUserMarshalMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrInterfacePointerMemorySize*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrPointerFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrSimpleStructFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantStructFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantVaryingStructFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrComplexStructFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrFixedArrayFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantArrayFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConformantVaryingArrayFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrVaryingArrayFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrComplexArrayFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrEncapsulatedUnionFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrNonEncapsulatedUnionFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrByteCountPointerFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrXmitOrRepAsFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrUserMarshalFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrInterfacePointerFree*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConvert2*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING, NumberParams: int32): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrConvert*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrUserMarshalSimpleTypeConvert*(pFlags: ptr int32, pBuffer: ptr uint8, FormatChar: uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrClientInitializeNew*(pRpcMsg: PRPC_MESSAGE, pStubMsg: PMIDL_STUB_MESSAGE, pStubDescriptor: PMIDL_STUB_DESC, ProcNum: int32): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrServerInitializeNew*(pRpcMsg: PRPC_MESSAGE, pStubMsg: PMIDL_STUB_MESSAGE, pStubDescriptor: PMIDL_STUB_DESC): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrServerInitializePartial*(pRpcMsg: PRPC_MESSAGE, pStubMsg: PMIDL_STUB_MESSAGE, pStubDescriptor: PMIDL_STUB_DESC, RequestedBufferSize: int32): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrClientInitialize*(pRpcMsg: PRPC_MESSAGE, pStubMsg: PMIDL_STUB_MESSAGE, pStubDescriptor: PMIDL_STUB_DESC, ProcNum: int32): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrServerInitialize*(pRpcMsg: PRPC_MESSAGE, pStubMsg: PMIDL_STUB_MESSAGE, pStubDescriptor: PMIDL_STUB_DESC): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrServerInitializeUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pStubDescriptor: PMIDL_STUB_DESC, pRpcMsg: PRPC_MESSAGE): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrServerInitializeMarshall*(pRpcMsg: PRPC_MESSAGE, pStubMsg: PMIDL_STUB_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrGetBuffer*(pStubMsg: PMIDL_STUB_MESSAGE, BufferLength: int32, Handle: RPC_BINDING_HANDLE): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrNsGetBuffer*(pStubMsg: PMIDL_STUB_MESSAGE, BufferLength: int32, Handle: RPC_BINDING_HANDLE): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrSendReceive*(pStubMsg: PMIDL_STUB_MESSAGE, pBufferEnd: ptr uint8): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrNsSendReceive*(pStubMsg: PMIDL_STUB_MESSAGE, pBufferEnd: ptr uint8, pAutoHandle: ptr RPC_BINDING_HANDLE): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrFreeBuffer*(pStubMsg: PMIDL_STUB_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrGetDcomProtocolVersion*(pStubMsg: PMIDL_STUB_MESSAGE, pVersion: ptr RPC_VERSION): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrAsyncServerCall*(pRpcMsg: PRPC_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrDcomAsyncStubCall*(pThis: ptr IRpcStubBuffer, pChannel: ptr IRpcChannelBuffer, pRpcMsg: PRPC_MESSAGE, pdwStubPhase: ptr int32): LONG32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrStubCall2*(pThis: ptr IRpcStubBuffer, pChannel: ptr IRpcChannelBuffer, pRpcMsg: PRPC_MESSAGE, pdwStubPhase: ptr int32): LONG32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrServerCall2*(pRpcMsg: PRPC_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrMapCommAndFaultStatus*(pStubMsg: PMIDL_STUB_MESSAGE, pCommStatus: ptr int32, pFaultStatus: ptr int32, Status: RPC_STATUS): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcNsGetBuffer*(
+  Message: PRPC_MESSAGE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc I_RpcNsSendReceive*(
+  Message: PRPC_MESSAGE, Handle: ptr RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc I_RpcNsRaiseException*(
+  Message: PRPC_MESSAGE, Status: RPC_STATUS
+): void {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc I_RpcReBindBuffer*(
+  Message: PRPC_MESSAGE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc NDRCContextBinding*(
+  CContext: NDR_CCONTEXT
+): RPC_BINDING_HANDLE {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NDRCContextMarshall*(
+  CContext: NDR_CCONTEXT, pBuff: pointer
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NDRCContextUnmarshall*(
+  pCContext: ptr NDR_CCONTEXT,
+  hBinding: RPC_BINDING_HANDLE,
+  pBuff: pointer,
+  DataRepresentation: int32,
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NDRSContextMarshall*(
+  CContext: NDR_SCONTEXT, pBuff: pointer, userRunDownIn: NDR_RUNDOWN
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NDRSContextUnmarshall*(
+  pBuff: pointer, DataRepresentation: int32
+): NDR_SCONTEXT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NDRSContextMarshallEx*(
+  BindingHandle: RPC_BINDING_HANDLE,
+  CContext: NDR_SCONTEXT,
+  pBuff: pointer,
+  userRunDownIn: NDR_RUNDOWN,
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NDRSContextMarshall2*(
+  BindingHandle: RPC_BINDING_HANDLE,
+  CContext: NDR_SCONTEXT,
+  pBuff: pointer,
+  userRunDownIn: NDR_RUNDOWN,
+  CtxGuard: pointer,
+  Flags: int32,
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NDRSContextUnmarshallEx*(
+  BindingHandle: RPC_BINDING_HANDLE, pBuff: pointer, DataRepresentation: int32
+): NDR_SCONTEXT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NDRSContextUnmarshall2*(
+  BindingHandle: RPC_BINDING_HANDLE,
+  pBuff: pointer,
+  DataRepresentation: int32,
+  CtxGuard: pointer,
+  Flags: int32,
+): NDR_SCONTEXT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcSsDestroyClientContext*(
+  ContextHandle: ptr pointer
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrSimpleTypeMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, FormatChar: uint8
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrPointerMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrSimpleStructMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantStructMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantVaryingStructMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrComplexStructMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrFixedArrayMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantArrayMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantVaryingArrayMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrVaryingArrayMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrComplexArrayMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrNonConformantStringMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantStringMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrEncapsulatedUnionMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrNonEncapsulatedUnionMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrByteCountPointerMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrXmitOrRepAsMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrUserMarshalMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrInterfacePointerMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrClientContextMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, ContextHandle: NDR_CCONTEXT, fCheck: int32
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrServerContextMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, ContextHandle: NDR_SCONTEXT, RundownRoutine: NDR_RUNDOWN
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrServerContextNewMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ContextHandle: NDR_SCONTEXT,
+  RundownRoutine: NDR_RUNDOWN,
+  pFormat: PFORMAT_STRING,
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrSimpleTypeUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, FormatChar: uint8
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrRangeUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrCorrelationInitialize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: pointer, CacheSize: int32, flags: int32
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrCorrelationPass*(
+  pStubMsg: PMIDL_STUB_MESSAGE
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrCorrelationFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrPointerUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrSimpleStructUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantStructUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantVaryingStructUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrComplexStructUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrFixedArrayUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantArrayUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantVaryingArrayUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrVaryingArrayUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrComplexArrayUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrNonConformantStringUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantStringUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrEncapsulatedUnionUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrNonEncapsulatedUnionUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrByteCountPointerUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrXmitOrRepAsUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrUserMarshalUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrInterfacePointerUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  ppMemory: ptr ptr uint8,
+  pFormat: PFORMAT_STRING,
+  fMustAlloc: uint8,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrClientContextUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  pContextHandle: ptr NDR_CCONTEXT,
+  BindHandle: RPC_BINDING_HANDLE,
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrServerContextUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE
+): NDR_SCONTEXT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrContextHandleInitialize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): NDR_SCONTEXT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrServerContextNewUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): NDR_SCONTEXT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrPointerBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrSimpleStructBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantStructBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantVaryingStructBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrComplexStructBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrFixedArrayBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantArrayBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantVaryingArrayBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrVaryingArrayBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrComplexArrayBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantStringBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrNonConformantStringBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrEncapsulatedUnionBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrNonEncapsulatedUnionBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrByteCountPointerBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrXmitOrRepAsBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrUserMarshalBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrInterfacePointerBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrContextHandleSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrPointerMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrSimpleStructMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantStructMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantVaryingStructMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrComplexStructMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrFixedArrayMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantArrayMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantVaryingArrayMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrVaryingArrayMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrComplexArrayMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantStringMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrNonConformantStringMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrEncapsulatedUnionMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrNonEncapsulatedUnionMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrXmitOrRepAsMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrUserMarshalMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrInterfacePointerMemorySize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrPointerFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrSimpleStructFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantStructFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantVaryingStructFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrComplexStructFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrFixedArrayFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantArrayFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConformantVaryingArrayFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrVaryingArrayFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrComplexArrayFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrEncapsulatedUnionFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrNonEncapsulatedUnionFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrByteCountPointerFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrXmitOrRepAsFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrUserMarshalFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrInterfacePointerFree*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: ptr uint8, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConvert2*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING, NumberParams: int32
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrConvert*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrUserMarshalSimpleTypeConvert*(
+  pFlags: ptr int32, pBuffer: ptr uint8, FormatChar: uint8
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrClientInitializeNew*(
+  pRpcMsg: PRPC_MESSAGE,
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  pStubDescriptor: PMIDL_STUB_DESC,
+  ProcNum: int32,
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrServerInitializeNew*(
+  pRpcMsg: PRPC_MESSAGE, pStubMsg: PMIDL_STUB_MESSAGE, pStubDescriptor: PMIDL_STUB_DESC
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrServerInitializePartial*(
+  pRpcMsg: PRPC_MESSAGE,
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  pStubDescriptor: PMIDL_STUB_DESC,
+  RequestedBufferSize: int32,
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrClientInitialize*(
+  pRpcMsg: PRPC_MESSAGE,
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  pStubDescriptor: PMIDL_STUB_DESC,
+  ProcNum: int32,
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrServerInitialize*(
+  pRpcMsg: PRPC_MESSAGE, pStubMsg: PMIDL_STUB_MESSAGE, pStubDescriptor: PMIDL_STUB_DESC
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrServerInitializeUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pStubDescriptor: PMIDL_STUB_DESC, pRpcMsg: PRPC_MESSAGE
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrServerInitializeMarshall*(
+  pRpcMsg: PRPC_MESSAGE, pStubMsg: PMIDL_STUB_MESSAGE
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrGetBuffer*(
+  pStubMsg: PMIDL_STUB_MESSAGE, BufferLength: int32, Handle: RPC_BINDING_HANDLE
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrNsGetBuffer*(
+  pStubMsg: PMIDL_STUB_MESSAGE, BufferLength: int32, Handle: RPC_BINDING_HANDLE
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrSendReceive*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pBufferEnd: ptr uint8
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrNsSendReceive*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  pBufferEnd: ptr uint8,
+  pAutoHandle: ptr RPC_BINDING_HANDLE,
+): ptr uint8 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrFreeBuffer*(
+  pStubMsg: PMIDL_STUB_MESSAGE
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrGetDcomProtocolVersion*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pVersion: ptr RPC_VERSION
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrAsyncServerCall*(
+  pRpcMsg: PRPC_MESSAGE
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrDcomAsyncStubCall*(
+  pThis: ptr IRpcStubBuffer,
+  pChannel: ptr IRpcChannelBuffer,
+  pRpcMsg: PRPC_MESSAGE,
+  pdwStubPhase: ptr int32,
+): LONG32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrStubCall2*(
+  pThis: ptr IRpcStubBuffer,
+  pChannel: ptr IRpcChannelBuffer,
+  pRpcMsg: PRPC_MESSAGE,
+  pdwStubPhase: ptr int32,
+): LONG32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrServerCall2*(
+  pRpcMsg: PRPC_MESSAGE
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrMapCommAndFaultStatus*(
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  pCommStatus: ptr int32,
+  pFaultStatus: ptr int32,
+  Status: RPC_STATUS,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
 proc RpcSsAllocate*(Size: int): pointer {.winapi, stdcall, dynlib: "rpcrt4", importc.}
 proc RpcSsDisableAllocate*(): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
 proc RpcSsEnableAllocate*(): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSsFree*(NodeToFree: pointer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSsGetThreadHandle*(): RPC_SS_THREAD_HANDLE {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSsSetClientAllocFree*(ClientAlloc: RPC_CLIENT_ALLOC, ClientFree: RPC_CLIENT_FREE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSsSetThreadHandle*(Id: RPC_SS_THREAD_HANDLE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSsSwapClientAllocFree*(ClientAlloc: RPC_CLIENT_ALLOC, ClientFree: RPC_CLIENT_FREE, OldClientAlloc: RPC_CLIENT_ALLOC, OldClientFree: RPC_CLIENT_FREE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSmAllocate*(Size: int, pStatus: ptr RPC_STATUS): pointer {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSmClientFree*(pNodeToFree: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSmDestroyClientContext*(ContextHandle: ptr pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+proc RpcSsFree*(
+  NodeToFree: pointer
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcSsGetThreadHandle*(): RPC_SS_THREAD_HANDLE {.
+  winapi, stdcall, dynlib: "rpcrt4", importc
+.}
+
+proc RpcSsSetClientAllocFree*(
+  ClientAlloc: RPC_CLIENT_ALLOC, ClientFree: RPC_CLIENT_FREE
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcSsSetThreadHandle*(
+  Id: RPC_SS_THREAD_HANDLE
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcSsSwapClientAllocFree*(
+  ClientAlloc: RPC_CLIENT_ALLOC,
+  ClientFree: RPC_CLIENT_FREE,
+  OldClientAlloc: RPC_CLIENT_ALLOC,
+  OldClientFree: RPC_CLIENT_FREE,
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcSmAllocate*(
+  Size: int, pStatus: ptr RPC_STATUS
+): pointer {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcSmClientFree*(
+  pNodeToFree: pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcSmDestroyClientContext*(
+  ContextHandle: ptr pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
 proc RpcSmDisableAllocate*(): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
 proc RpcSmEnableAllocate*(): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSmFree*(NodeToFree: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSmGetThreadHandle*(pStatus: ptr RPC_STATUS): RPC_SS_THREAD_HANDLE {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSmSetClientAllocFree*(ClientAlloc: RPC_CLIENT_ALLOC, ClientFree: RPC_CLIENT_FREE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSmSetThreadHandle*(Id: RPC_SS_THREAD_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSmSwapClientAllocFree*(ClientAlloc: RPC_CLIENT_ALLOC, ClientFree: RPC_CLIENT_FREE, OldClientAlloc: RPC_CLIENT_ALLOC, OldClientFree: RPC_CLIENT_FREE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrRpcSsEnableAllocate*(pMessage: PMIDL_STUB_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrRpcSsDisableAllocate*(pMessage: PMIDL_STUB_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrRpcSmSetClientToOsf*(pMessage: PMIDL_STUB_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrRpcSmClientAllocate*(Size: int): pointer {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrRpcSmClientFree*(NodeToFree: pointer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrRpcSsDefaultAllocate*(Size: int): pointer {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrRpcSsDefaultFree*(NodeToFree: pointer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrFullPointerXlatInit*(NumberOfPointers: int32, XlatSide: XLAT_SIDE): PFULL_PTR_XLAT_TABLES {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrFullPointerXlatFree*(pXlatTables: PFULL_PTR_XLAT_TABLES): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrFullPointerQueryPointer*(pXlatTables: PFULL_PTR_XLAT_TABLES, pPointer: pointer, QueryType: uint8, pRefId: ptr int32): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrFullPointerQueryRefId*(pXlatTables: PFULL_PTR_XLAT_TABLES, RefId: int32, QueryType: uint8, ppPointer: ptr pointer): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrFullPointerInsertRefId*(pXlatTables: PFULL_PTR_XLAT_TABLES, RefId: int32, pPointer: pointer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrFullPointerFree*(pXlatTables: PFULL_PTR_XLAT_TABLES, Pointer: pointer): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrAllocate*(pStubMsg: PMIDL_STUB_MESSAGE, Len: int): pointer {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrClearOutParameters*(pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING, ArgAddr: pointer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+proc RpcSmFree*(
+  NodeToFree: pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcSmGetThreadHandle*(
+  pStatus: ptr RPC_STATUS
+): RPC_SS_THREAD_HANDLE {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcSmSetClientAllocFree*(
+  ClientAlloc: RPC_CLIENT_ALLOC, ClientFree: RPC_CLIENT_FREE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcSmSetThreadHandle*(
+  Id: RPC_SS_THREAD_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcSmSwapClientAllocFree*(
+  ClientAlloc: RPC_CLIENT_ALLOC,
+  ClientFree: RPC_CLIENT_FREE,
+  OldClientAlloc: RPC_CLIENT_ALLOC,
+  OldClientFree: RPC_CLIENT_FREE,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrRpcSsEnableAllocate*(
+  pMessage: PMIDL_STUB_MESSAGE
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrRpcSsDisableAllocate*(
+  pMessage: PMIDL_STUB_MESSAGE
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrRpcSmSetClientToOsf*(
+  pMessage: PMIDL_STUB_MESSAGE
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrRpcSmClientAllocate*(
+  Size: int
+): pointer {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrRpcSmClientFree*(
+  NodeToFree: pointer
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrRpcSsDefaultAllocate*(
+  Size: int
+): pointer {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrRpcSsDefaultFree*(
+  NodeToFree: pointer
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrFullPointerXlatInit*(
+  NumberOfPointers: int32, XlatSide: XLAT_SIDE
+): PFULL_PTR_XLAT_TABLES {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrFullPointerXlatFree*(
+  pXlatTables: PFULL_PTR_XLAT_TABLES
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrFullPointerQueryPointer*(
+  pXlatTables: PFULL_PTR_XLAT_TABLES,
+  pPointer: pointer,
+  QueryType: uint8,
+  pRefId: ptr int32,
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrFullPointerQueryRefId*(
+  pXlatTables: PFULL_PTR_XLAT_TABLES,
+  RefId: int32,
+  QueryType: uint8,
+  ppPointer: ptr pointer,
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrFullPointerInsertRefId*(
+  pXlatTables: PFULL_PTR_XLAT_TABLES, RefId: int32, pPointer: pointer
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrFullPointerFree*(
+  pXlatTables: PFULL_PTR_XLAT_TABLES, Pointer: pointer
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrAllocate*(
+  pStubMsg: PMIDL_STUB_MESSAGE, Len: int
+): pointer {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrClearOutParameters*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pFormat: PFORMAT_STRING, ArgAddr: pointer
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
 proc NdrOleAllocate*(Size: int): pointer {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrOleFree*(NodeToFree: pointer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrGetUserMarshalInfo*(pFlags: ptr int32, InformationLevel: int32, pMarshalInfo: ptr NDR_USER_MARSHAL_INFO): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrCreateServerInterfaceFromStub*(pStub: ptr IRpcStubBuffer, pServerIf: ptr RPC_SERVER_INTERFACE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrPartialIgnoreClientMarshall*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: pointer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrPartialIgnoreServerUnmarshall*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr pointer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrPartialIgnoreClientBufferSize*(pStubMsg: PMIDL_STUB_MESSAGE, pMemory: pointer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrPartialIgnoreServerInitialize*(pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr pointer, pFormat: PFORMAT_STRING): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcUserFree*(AsyncHandle: handle_t, pBuffer: pointer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingCopy*(SourceBinding: RPC_BINDING_HANDLE, DestinationBinding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingFree*(Binding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingSetOption*(hBinding: RPC_BINDING_HANDLE, option: int32, optionValue: ULONG_PTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingInqOption*(hBinding: RPC_BINDING_HANDLE, option: int32, pOptionValue: ptr ULONG_PTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingFromStringBindingA*(StringBinding: RPC_CSTR, Binding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingFromStringBindingW*(StringBinding: RPC_WSTR, Binding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSsGetContextBinding*(ContextHandle: pointer, Binding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingInqObject*(Binding: RPC_BINDING_HANDLE, ObjectUuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingReset*(Binding: RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingSetObject*(Binding: RPC_BINDING_HANDLE, ObjectUuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtInqDefaultProtectLevel*(AuthnSvc: int32, AuthnLevel: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingToStringBindingA*(Binding: RPC_BINDING_HANDLE, StringBinding: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingToStringBindingW*(Binding: RPC_BINDING_HANDLE, StringBinding: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingVectorFree*(BindingVector: ptr ptr RPC_BINDING_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcStringBindingComposeA*(ObjUuid: RPC_CSTR, Protseq: RPC_CSTR, NetworkAddr: RPC_CSTR, Endpoint: RPC_CSTR, Options: RPC_CSTR, StringBinding: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcStringBindingComposeW*(ObjUuid: RPC_WSTR, Protseq: RPC_WSTR, NetworkAddr: RPC_WSTR, Endpoint: RPC_WSTR, Options: RPC_WSTR, StringBinding: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcStringBindingParseA*(StringBinding: RPC_CSTR, ObjUuid: ptr RPC_CSTR, Protseq: ptr RPC_CSTR, NetworkAddr: ptr RPC_CSTR, Endpoint: ptr RPC_CSTR, NetworkOptions: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcStringBindingParseW*(StringBinding: RPC_WSTR, ObjUuid: ptr RPC_WSTR, Protseq: ptr RPC_WSTR, NetworkAddr: ptr RPC_WSTR, Endpoint: ptr RPC_WSTR, NetworkOptions: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcStringFreeA*(String: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcStringFreeW*(String: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcIfInqId*(RpcIfHandle: RPC_IF_HANDLE, RpcIfId: ptr RPC_IF_ID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcNetworkIsProtseqValidA*(Protseq: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcNetworkIsProtseqValidW*(Protseq: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtInqComTimeout*(Binding: RPC_BINDING_HANDLE, Timeout: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtSetComTimeout*(Binding: RPC_BINDING_HANDLE, Timeout: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtSetCancelTimeout*(Timeout: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcNetworkInqProtseqsA*(ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORA): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcNetworkInqProtseqsW*(ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORW): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcObjectInqType*(ObjUuid: ptr UUID, TypeUuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcObjectSetInqFn*(InquiryFn: RPC_OBJECT_INQ_FN): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcObjectSetType*(ObjUuid: ptr UUID, TypeUuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcProtseqVectorFreeA*(ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORA): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcProtseqVectorFreeW*(ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORW): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerInqBindings*(BindingVector: ptr ptr RPC_BINDING_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerInqIf*(IfSpec: RPC_IF_HANDLE, MgrTypeUuid: ptr UUID, MgrEpv: ptr ptr RPC_MGR_EPV): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerListen*(MinimumCallThreads: int32, MaxCalls: int32, DontWait: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerRegisterIf*(IfSpec: RPC_IF_HANDLE, MgrTypeUuid: ptr UUID, MgrEpv: ptr RPC_MGR_EPV): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerRegisterIfEx*(IfSpec: RPC_IF_HANDLE, MgrTypeUuid: ptr UUID, MgrEpv: ptr RPC_MGR_EPV, Flags: int32, MaxCalls: int32, IfCallback: RPC_IF_CALLBACK_FN): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerRegisterIf2*(IfSpec: RPC_IF_HANDLE, MgrTypeUuid: ptr UUID, MgrEpv: ptr RPC_MGR_EPV, Flags: int32, MaxCalls: int32, MaxRpcSize: int32, IfCallbackFn: RPC_IF_CALLBACK_FN): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUnregisterIf*(IfSpec: RPC_IF_HANDLE, MgrTypeUuid: ptr UUID, WaitForCallsToComplete: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUnregisterIfEx*(IfSpec: RPC_IF_HANDLE, MgrTypeUuid: ptr UUID, RundownContextHandles: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseAllProtseqs*(MaxCalls: int32, SecurityDescriptor: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseAllProtseqsEx*(MaxCalls: int32, SecurityDescriptor: pointer, Policy: PRPC_POLICY): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseAllProtseqsIf*(MaxCalls: int32, IfSpec: RPC_IF_HANDLE, SecurityDescriptor: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseAllProtseqsIfEx*(MaxCalls: int32, IfSpec: RPC_IF_HANDLE, SecurityDescriptor: pointer, Policy: PRPC_POLICY): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseProtseqA*(Protseq: RPC_CSTR, MaxCalls: int32, SecurityDescriptor: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseProtseqExA*(Protseq: RPC_CSTR, MaxCalls: int32, SecurityDescriptor: pointer, Policy: PRPC_POLICY): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseProtseqW*(Protseq: RPC_WSTR, MaxCalls: int32, SecurityDescriptor: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseProtseqExW*(Protseq: RPC_WSTR, MaxCalls: int32, SecurityDescriptor: pointer, Policy: PRPC_POLICY): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseProtseqEpA*(Protseq: RPC_CSTR, MaxCalls: int32, Endpoint: RPC_CSTR, SecurityDescriptor: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseProtseqEpExA*(Protseq: RPC_CSTR, MaxCalls: int32, Endpoint: RPC_CSTR, SecurityDescriptor: pointer, Policy: PRPC_POLICY): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseProtseqEpW*(Protseq: RPC_WSTR, MaxCalls: int32, Endpoint: RPC_WSTR, SecurityDescriptor: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseProtseqEpExW*(Protseq: RPC_WSTR, MaxCalls: int32, Endpoint: RPC_WSTR, SecurityDescriptor: pointer, Policy: PRPC_POLICY): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseProtseqIfA*(Protseq: RPC_CSTR, MaxCalls: int32, IfSpec: RPC_IF_HANDLE, SecurityDescriptor: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseProtseqIfExA*(Protseq: RPC_CSTR, MaxCalls: int32, IfSpec: RPC_IF_HANDLE, SecurityDescriptor: pointer, Policy: PRPC_POLICY): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseProtseqIfW*(Protseq: RPC_WSTR, MaxCalls: int32, IfSpec: RPC_IF_HANDLE, SecurityDescriptor: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUseProtseqIfExW*(Protseq: RPC_WSTR, MaxCalls: int32, IfSpec: RPC_IF_HANDLE, SecurityDescriptor: pointer, Policy: PRPC_POLICY): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+proc NdrOleFree*(
+  NodeToFree: pointer
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrGetUserMarshalInfo*(
+  pFlags: ptr int32, InformationLevel: int32, pMarshalInfo: ptr NDR_USER_MARSHAL_INFO
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrCreateServerInterfaceFromStub*(
+  pStub: ptr IRpcStubBuffer, pServerIf: ptr RPC_SERVER_INTERFACE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrPartialIgnoreClientMarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: pointer
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrPartialIgnoreServerUnmarshall*(
+  pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr pointer
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrPartialIgnoreClientBufferSize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, pMemory: pointer
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrPartialIgnoreServerInitialize*(
+  pStubMsg: PMIDL_STUB_MESSAGE, ppMemory: ptr pointer, pFormat: PFORMAT_STRING
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcUserFree*(
+  AsyncHandle: handle_t, pBuffer: pointer
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingCopy*(
+  SourceBinding: RPC_BINDING_HANDLE, DestinationBinding: ptr RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingFree*(
+  Binding: ptr RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingSetOption*(
+  hBinding: RPC_BINDING_HANDLE, option: int32, optionValue: ULONG_PTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingInqOption*(
+  hBinding: RPC_BINDING_HANDLE, option: int32, pOptionValue: ptr ULONG_PTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingFromStringBindingA*(
+  StringBinding: RPC_CSTR, Binding: ptr RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingFromStringBindingW*(
+  StringBinding: RPC_WSTR, Binding: ptr RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcSsGetContextBinding*(
+  ContextHandle: pointer, Binding: ptr RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingInqObject*(
+  Binding: RPC_BINDING_HANDLE, ObjectUuid: ptr UUID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingReset*(
+  Binding: RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingSetObject*(
+  Binding: RPC_BINDING_HANDLE, ObjectUuid: ptr UUID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtInqDefaultProtectLevel*(
+  AuthnSvc: int32, AuthnLevel: ptr int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingToStringBindingA*(
+  Binding: RPC_BINDING_HANDLE, StringBinding: ptr RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingToStringBindingW*(
+  Binding: RPC_BINDING_HANDLE, StringBinding: ptr RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingVectorFree*(
+  BindingVector: ptr ptr RPC_BINDING_VECTOR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcStringBindingComposeA*(
+  ObjUuid: RPC_CSTR,
+  Protseq: RPC_CSTR,
+  NetworkAddr: RPC_CSTR,
+  Endpoint: RPC_CSTR,
+  Options: RPC_CSTR,
+  StringBinding: ptr RPC_CSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcStringBindingComposeW*(
+  ObjUuid: RPC_WSTR,
+  Protseq: RPC_WSTR,
+  NetworkAddr: RPC_WSTR,
+  Endpoint: RPC_WSTR,
+  Options: RPC_WSTR,
+  StringBinding: ptr RPC_WSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcStringBindingParseA*(
+  StringBinding: RPC_CSTR,
+  ObjUuid: ptr RPC_CSTR,
+  Protseq: ptr RPC_CSTR,
+  NetworkAddr: ptr RPC_CSTR,
+  Endpoint: ptr RPC_CSTR,
+  NetworkOptions: ptr RPC_CSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcStringBindingParseW*(
+  StringBinding: RPC_WSTR,
+  ObjUuid: ptr RPC_WSTR,
+  Protseq: ptr RPC_WSTR,
+  NetworkAddr: ptr RPC_WSTR,
+  Endpoint: ptr RPC_WSTR,
+  NetworkOptions: ptr RPC_WSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcStringFreeA*(
+  String: ptr RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcStringFreeW*(
+  String: ptr RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcIfInqId*(
+  RpcIfHandle: RPC_IF_HANDLE, RpcIfId: ptr RPC_IF_ID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcNetworkIsProtseqValidA*(
+  Protseq: RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcNetworkIsProtseqValidW*(
+  Protseq: RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtInqComTimeout*(
+  Binding: RPC_BINDING_HANDLE, Timeout: ptr int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtSetComTimeout*(
+  Binding: RPC_BINDING_HANDLE, Timeout: int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtSetCancelTimeout*(
+  Timeout: int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcNetworkInqProtseqsA*(
+  ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORA
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcNetworkInqProtseqsW*(
+  ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORW
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcObjectInqType*(
+  ObjUuid: ptr UUID, TypeUuid: ptr UUID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcObjectSetInqFn*(
+  InquiryFn: RPC_OBJECT_INQ_FN
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcObjectSetType*(
+  ObjUuid: ptr UUID, TypeUuid: ptr UUID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcProtseqVectorFreeA*(
+  ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORA
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcProtseqVectorFreeW*(
+  ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORW
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerInqBindings*(
+  BindingVector: ptr ptr RPC_BINDING_VECTOR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerInqIf*(
+  IfSpec: RPC_IF_HANDLE, MgrTypeUuid: ptr UUID, MgrEpv: ptr ptr RPC_MGR_EPV
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerListen*(
+  MinimumCallThreads: int32, MaxCalls: int32, DontWait: int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerRegisterIf*(
+  IfSpec: RPC_IF_HANDLE, MgrTypeUuid: ptr UUID, MgrEpv: ptr RPC_MGR_EPV
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerRegisterIfEx*(
+  IfSpec: RPC_IF_HANDLE,
+  MgrTypeUuid: ptr UUID,
+  MgrEpv: ptr RPC_MGR_EPV,
+  Flags: int32,
+  MaxCalls: int32,
+  IfCallback: RPC_IF_CALLBACK_FN,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerRegisterIf2*(
+  IfSpec: RPC_IF_HANDLE,
+  MgrTypeUuid: ptr UUID,
+  MgrEpv: ptr RPC_MGR_EPV,
+  Flags: int32,
+  MaxCalls: int32,
+  MaxRpcSize: int32,
+  IfCallbackFn: RPC_IF_CALLBACK_FN,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUnregisterIf*(
+  IfSpec: RPC_IF_HANDLE, MgrTypeUuid: ptr UUID, WaitForCallsToComplete: int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUnregisterIfEx*(
+  IfSpec: RPC_IF_HANDLE, MgrTypeUuid: ptr UUID, RundownContextHandles: int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseAllProtseqs*(
+  MaxCalls: int32, SecurityDescriptor: pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseAllProtseqsEx*(
+  MaxCalls: int32, SecurityDescriptor: pointer, Policy: PRPC_POLICY
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseAllProtseqsIf*(
+  MaxCalls: int32, IfSpec: RPC_IF_HANDLE, SecurityDescriptor: pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseAllProtseqsIfEx*(
+  MaxCalls: int32,
+  IfSpec: RPC_IF_HANDLE,
+  SecurityDescriptor: pointer,
+  Policy: PRPC_POLICY,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseProtseqA*(
+  Protseq: RPC_CSTR, MaxCalls: int32, SecurityDescriptor: pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseProtseqExA*(
+  Protseq: RPC_CSTR, MaxCalls: int32, SecurityDescriptor: pointer, Policy: PRPC_POLICY
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseProtseqW*(
+  Protseq: RPC_WSTR, MaxCalls: int32, SecurityDescriptor: pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseProtseqExW*(
+  Protseq: RPC_WSTR, MaxCalls: int32, SecurityDescriptor: pointer, Policy: PRPC_POLICY
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseProtseqEpA*(
+  Protseq: RPC_CSTR, MaxCalls: int32, Endpoint: RPC_CSTR, SecurityDescriptor: pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseProtseqEpExA*(
+  Protseq: RPC_CSTR,
+  MaxCalls: int32,
+  Endpoint: RPC_CSTR,
+  SecurityDescriptor: pointer,
+  Policy: PRPC_POLICY,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseProtseqEpW*(
+  Protseq: RPC_WSTR, MaxCalls: int32, Endpoint: RPC_WSTR, SecurityDescriptor: pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseProtseqEpExW*(
+  Protseq: RPC_WSTR,
+  MaxCalls: int32,
+  Endpoint: RPC_WSTR,
+  SecurityDescriptor: pointer,
+  Policy: PRPC_POLICY,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseProtseqIfA*(
+  Protseq: RPC_CSTR, MaxCalls: int32, IfSpec: RPC_IF_HANDLE, SecurityDescriptor: pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseProtseqIfExA*(
+  Protseq: RPC_CSTR,
+  MaxCalls: int32,
+  IfSpec: RPC_IF_HANDLE,
+  SecurityDescriptor: pointer,
+  Policy: PRPC_POLICY,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseProtseqIfW*(
+  Protseq: RPC_WSTR, MaxCalls: int32, IfSpec: RPC_IF_HANDLE, SecurityDescriptor: pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUseProtseqIfExW*(
+  Protseq: RPC_WSTR,
+  MaxCalls: int32,
+  IfSpec: RPC_IF_HANDLE,
+  SecurityDescriptor: pointer,
+  Policy: PRPC_POLICY,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
 proc RpcServerYield*(): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtStatsVectorFree*(StatsVector: ptr ptr RPC_STATS_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtInqStats*(Binding: RPC_BINDING_HANDLE, Statistics: ptr ptr RPC_STATS_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtIsServerListening*(Binding: RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtStopServerListening*(Binding: RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtWaitServerListen*(): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtSetServerStackSize*(ThreadStackSize: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+proc RpcMgmtStatsVectorFree*(
+  StatsVector: ptr ptr RPC_STATS_VECTOR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtInqStats*(
+  Binding: RPC_BINDING_HANDLE, Statistics: ptr ptr RPC_STATS_VECTOR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtIsServerListening*(
+  Binding: RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtStopServerListening*(
+  Binding: RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtWaitServerListen*(): RPC_STATUS {.
+  winapi, stdcall, dynlib: "rpcrt4", importc
+.}
+
+proc RpcMgmtSetServerStackSize*(
+  ThreadStackSize: int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
 proc RpcSsDontSerializeContext*(): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtEnableIdleCleanup*(): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtInqIfIds*(Binding: RPC_BINDING_HANDLE, IfIdVector: ptr ptr RPC_IF_ID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcIfIdVectorFree*(IfIdVector: ptr ptr RPC_IF_ID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtInqServerPrincNameA*(Binding: RPC_BINDING_HANDLE, AuthnSvc: int32, ServerPrincName: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtInqServerPrincNameW*(Binding: RPC_BINDING_HANDLE, AuthnSvc: int32, ServerPrincName: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerInqDefaultPrincNameA*(AuthnSvc: int32, PrincName: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerInqDefaultPrincNameW*(AuthnSvc: int32, PrincName: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcEpResolveBinding*(Binding: RPC_BINDING_HANDLE, IfSpec: RPC_IF_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcNsBindingInqEntryNameA*(Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcNsBindingInqEntryNameW*(Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcImpersonateClient*(BindingHandle: RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcRevertToSelfEx*(BindingHandle: RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+proc RpcMgmtEnableIdleCleanup*(): RPC_STATUS {.
+  winapi, stdcall, dynlib: "rpcrt4", importc
+.}
+
+proc RpcMgmtInqIfIds*(
+  Binding: RPC_BINDING_HANDLE, IfIdVector: ptr ptr RPC_IF_ID_VECTOR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcIfIdVectorFree*(
+  IfIdVector: ptr ptr RPC_IF_ID_VECTOR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtInqServerPrincNameA*(
+  Binding: RPC_BINDING_HANDLE, AuthnSvc: int32, ServerPrincName: ptr RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtInqServerPrincNameW*(
+  Binding: RPC_BINDING_HANDLE, AuthnSvc: int32, ServerPrincName: ptr RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerInqDefaultPrincNameA*(
+  AuthnSvc: int32, PrincName: ptr RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerInqDefaultPrincNameW*(
+  AuthnSvc: int32, PrincName: ptr RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcEpResolveBinding*(
+  Binding: RPC_BINDING_HANDLE, IfSpec: RPC_IF_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcNsBindingInqEntryNameA*(
+  Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: ptr RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcNsBindingInqEntryNameW*(
+  Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: ptr RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcImpersonateClient*(
+  BindingHandle: RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcRevertToSelfEx*(
+  BindingHandle: RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
 proc RpcRevertToSelf*(): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingInqAuthClientA*(ClientBinding: RPC_BINDING_HANDLE, Privs: ptr RPC_AUTHZ_HANDLE, ServerPrincName: ptr RPC_CSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthzSvc: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingInqAuthClientW*(ClientBinding: RPC_BINDING_HANDLE, Privs: ptr RPC_AUTHZ_HANDLE, ServerPrincName: ptr RPC_WSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthzSvc: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingInqAuthClientExA*(ClientBinding: RPC_BINDING_HANDLE, Privs: ptr RPC_AUTHZ_HANDLE, ServerPrincName: ptr RPC_CSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthzSvc: ptr int32, Flags: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingInqAuthClientExW*(ClientBinding: RPC_BINDING_HANDLE, Privs: ptr RPC_AUTHZ_HANDLE, ServerPrincName: ptr RPC_WSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthzSvc: ptr int32, Flags: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingInqAuthInfoA*(Binding: RPC_BINDING_HANDLE, ServerPrincName: ptr RPC_CSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingInqAuthInfoW*(Binding: RPC_BINDING_HANDLE, ServerPrincName: ptr RPC_WSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingSetAuthInfoA*(Binding: RPC_BINDING_HANDLE, ServerPrincName: RPC_CSTR, AuthnLevel: int32, AuthnSvc: int32, AuthIdentity: RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingSetAuthInfoExA*(Binding: RPC_BINDING_HANDLE, ServerPrincName: RPC_CSTR, AuthnLevel: int32, AuthnSvc: int32, AuthIdentity: RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: int32, SecurityQos: ptr RPC_SECURITY_QOS): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingSetAuthInfoW*(Binding: RPC_BINDING_HANDLE, ServerPrincName: RPC_WSTR, AuthnLevel: int32, AuthnSvc: int32, AuthIdentity: RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingSetAuthInfoExW*(Binding: RPC_BINDING_HANDLE, ServerPrincName: RPC_WSTR, AuthnLevel: int32, AuthnSvc: int32, AuthIdentity: RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: int32, SecurityQOS: ptr RPC_SECURITY_QOS): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingInqAuthInfoExA*(Binding: RPC_BINDING_HANDLE, ServerPrincName: ptr RPC_CSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: ptr int32, RpcQosVersion: int32, SecurityQOS: ptr RPC_SECURITY_QOS): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingInqAuthInfoExW*(Binding: RPC_BINDING_HANDLE, ServerPrincName: ptr RPC_WSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: ptr int32, RpcQosVersion: int32, SecurityQOS: ptr RPC_SECURITY_QOS): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerRegisterAuthInfoA*(ServerPrincName: RPC_CSTR, AuthnSvc: int32, GetKeyFn: RPC_AUTH_KEY_RETRIEVAL_FN, Arg: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerRegisterAuthInfoW*(ServerPrincName: RPC_WSTR, AuthnSvc: int32, GetKeyFn: RPC_AUTH_KEY_RETRIEVAL_FN, Arg: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingServerFromClient*(ClientBinding: RPC_BINDING_HANDLE, ServerBinding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+proc RpcBindingInqAuthClientA*(
+  ClientBinding: RPC_BINDING_HANDLE,
+  Privs: ptr RPC_AUTHZ_HANDLE,
+  ServerPrincName: ptr RPC_CSTR,
+  AuthnLevel: ptr int32,
+  AuthnSvc: ptr int32,
+  AuthzSvc: ptr int32,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingInqAuthClientW*(
+  ClientBinding: RPC_BINDING_HANDLE,
+  Privs: ptr RPC_AUTHZ_HANDLE,
+  ServerPrincName: ptr RPC_WSTR,
+  AuthnLevel: ptr int32,
+  AuthnSvc: ptr int32,
+  AuthzSvc: ptr int32,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingInqAuthClientExA*(
+  ClientBinding: RPC_BINDING_HANDLE,
+  Privs: ptr RPC_AUTHZ_HANDLE,
+  ServerPrincName: ptr RPC_CSTR,
+  AuthnLevel: ptr int32,
+  AuthnSvc: ptr int32,
+  AuthzSvc: ptr int32,
+  Flags: int32,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingInqAuthClientExW*(
+  ClientBinding: RPC_BINDING_HANDLE,
+  Privs: ptr RPC_AUTHZ_HANDLE,
+  ServerPrincName: ptr RPC_WSTR,
+  AuthnLevel: ptr int32,
+  AuthnSvc: ptr int32,
+  AuthzSvc: ptr int32,
+  Flags: int32,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingInqAuthInfoA*(
+  Binding: RPC_BINDING_HANDLE,
+  ServerPrincName: ptr RPC_CSTR,
+  AuthnLevel: ptr int32,
+  AuthnSvc: ptr int32,
+  AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE,
+  AuthzSvc: ptr int32,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingInqAuthInfoW*(
+  Binding: RPC_BINDING_HANDLE,
+  ServerPrincName: ptr RPC_WSTR,
+  AuthnLevel: ptr int32,
+  AuthnSvc: ptr int32,
+  AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE,
+  AuthzSvc: ptr int32,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingSetAuthInfoA*(
+  Binding: RPC_BINDING_HANDLE,
+  ServerPrincName: RPC_CSTR,
+  AuthnLevel: int32,
+  AuthnSvc: int32,
+  AuthIdentity: RPC_AUTH_IDENTITY_HANDLE,
+  AuthzSvc: int32,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingSetAuthInfoExA*(
+  Binding: RPC_BINDING_HANDLE,
+  ServerPrincName: RPC_CSTR,
+  AuthnLevel: int32,
+  AuthnSvc: int32,
+  AuthIdentity: RPC_AUTH_IDENTITY_HANDLE,
+  AuthzSvc: int32,
+  SecurityQos: ptr RPC_SECURITY_QOS,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingSetAuthInfoW*(
+  Binding: RPC_BINDING_HANDLE,
+  ServerPrincName: RPC_WSTR,
+  AuthnLevel: int32,
+  AuthnSvc: int32,
+  AuthIdentity: RPC_AUTH_IDENTITY_HANDLE,
+  AuthzSvc: int32,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingSetAuthInfoExW*(
+  Binding: RPC_BINDING_HANDLE,
+  ServerPrincName: RPC_WSTR,
+  AuthnLevel: int32,
+  AuthnSvc: int32,
+  AuthIdentity: RPC_AUTH_IDENTITY_HANDLE,
+  AuthzSvc: int32,
+  SecurityQOS: ptr RPC_SECURITY_QOS,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingInqAuthInfoExA*(
+  Binding: RPC_BINDING_HANDLE,
+  ServerPrincName: ptr RPC_CSTR,
+  AuthnLevel: ptr int32,
+  AuthnSvc: ptr int32,
+  AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE,
+  AuthzSvc: ptr int32,
+  RpcQosVersion: int32,
+  SecurityQOS: ptr RPC_SECURITY_QOS,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingInqAuthInfoExW*(
+  Binding: RPC_BINDING_HANDLE,
+  ServerPrincName: ptr RPC_WSTR,
+  AuthnLevel: ptr int32,
+  AuthnSvc: ptr int32,
+  AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE,
+  AuthzSvc: ptr int32,
+  RpcQosVersion: int32,
+  SecurityQOS: ptr RPC_SECURITY_QOS,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerRegisterAuthInfoA*(
+  ServerPrincName: RPC_CSTR,
+  AuthnSvc: int32,
+  GetKeyFn: RPC_AUTH_KEY_RETRIEVAL_FN,
+  Arg: pointer,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerRegisterAuthInfoW*(
+  ServerPrincName: RPC_WSTR,
+  AuthnSvc: int32,
+  GetKeyFn: RPC_AUTH_KEY_RETRIEVAL_FN,
+  Arg: pointer,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingServerFromClient*(
+  ClientBinding: RPC_BINDING_HANDLE, ServerBinding: ptr RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
 proc RpcTestCancel*(): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerTestCancel*(BindingHandle: RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcCancelThread*(Thread: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcCancelThreadEx*(Thread: pointer, Timeout: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc UuidCreate*(Uuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc UuidCreateSequential*(Uuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc UuidToStringA*(Uuid: ptr UUID, StringUuid: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc UuidFromStringA*(StringUuid: RPC_CSTR, Uuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc UuidToStringW*(Uuid: ptr UUID, StringUuid: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc UuidFromStringW*(StringUuid: RPC_WSTR, Uuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc UuidCreateNil*(NilUuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc UuidEqual*(Uuid1: ptr UUID, Uuid2: ptr UUID, Status: ptr RPC_STATUS): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc UuidHash*(Uuid: ptr UUID, Status: ptr RPC_STATUS): uint16 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc UuidIsNil*(Uuid: ptr UUID, Status: ptr RPC_STATUS): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcEpRegisterNoReplaceA*(IfSpec: RPC_IF_HANDLE, BindingVector: ptr RPC_BINDING_VECTOR, UuidVector: ptr UUID_VECTOR, Annotation: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcEpRegisterNoReplaceW*(IfSpec: RPC_IF_HANDLE, BindingVector: ptr RPC_BINDING_VECTOR, UuidVector: ptr UUID_VECTOR, Annotation: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcEpRegisterA*(IfSpec: RPC_IF_HANDLE, BindingVector: ptr RPC_BINDING_VECTOR, UuidVector: ptr UUID_VECTOR, Annotation: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcEpRegisterW*(IfSpec: RPC_IF_HANDLE, BindingVector: ptr RPC_BINDING_VECTOR, UuidVector: ptr UUID_VECTOR, Annotation: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcEpUnregister*(IfSpec: RPC_IF_HANDLE, BindingVector: ptr RPC_BINDING_VECTOR, UuidVector: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc DceErrorInqTextA*(RpcStatus: RPC_STATUS, ErrorText: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc DceErrorInqTextW*(RpcStatus: RPC_STATUS, ErrorText: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtEpEltInqBegin*(EpBinding: RPC_BINDING_HANDLE, InquiryType: int32, IfId: ptr RPC_IF_ID, VersOption: int32, ObjectUuid: ptr UUID, InquiryContext: ptr RPC_EP_INQ_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtEpEltInqDone*(InquiryContext: ptr RPC_EP_INQ_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtEpEltInqNextA*(InquiryContext: RPC_EP_INQ_HANDLE, IfId: ptr RPC_IF_ID, Binding: ptr RPC_BINDING_HANDLE, ObjectUuid: ptr UUID, Annotation: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtEpEltInqNextW*(InquiryContext: RPC_EP_INQ_HANDLE, IfId: ptr RPC_IF_ID, Binding: ptr RPC_BINDING_HANDLE, ObjectUuid: ptr UUID, Annotation: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtEpUnregister*(EpBinding: RPC_BINDING_HANDLE, IfId: ptr RPC_IF_ID, Binding: RPC_BINDING_HANDLE, ObjectUuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcMgmtSetAuthorizationFn*(AuthorizationFn: RPC_MGMT_AUTHORIZATION_FN): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingCreateA*(Template: ptr RPC_BINDING_HANDLE_TEMPLATE, Security: ptr RPC_BINDING_HANDLE_SECURITY, Options: ptr RPC_BINDING_HANDLE_OPTIONS, Binding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingCreateW*(Template: ptr RPC_BINDING_HANDLE_TEMPLATE, Security: ptr RPC_BINDING_HANDLE_SECURITY, Options: ptr RPC_BINDING_HANDLE_OPTIONS, Binding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerInqBindingHandle*(Binding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcNegotiateTransferSyntax*(Message: ptr RPC_MESSAGE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcGetBuffer*(Message: ptr RPC_MESSAGE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcGetBufferWithObject*(Message: ptr RPC_MESSAGE, ObjectUuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcSendReceive*(Message: ptr RPC_MESSAGE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcFreeBuffer*(Message: ptr RPC_MESSAGE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcSend*(Message: PRPC_MESSAGE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcReceive*(Message: PRPC_MESSAGE, Size: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcFreePipeBuffer*(Message: ptr RPC_MESSAGE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcReallocPipeBuffer*(Message: PRPC_MESSAGE, NewSize: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcRequestMutex*(Mutex: ptr I_RPC_MUTEX): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcClearMutex*(Mutex: I_RPC_MUTEX): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcDeleteMutex*(Mutex: I_RPC_MUTEX): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+proc RpcServerTestCancel*(
+  BindingHandle: RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcCancelThread*(
+  Thread: pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcCancelThreadEx*(
+  Thread: pointer, Timeout: int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc UuidCreate*(
+  Uuid: ptr UUID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc UuidCreateSequential*(
+  Uuid: ptr UUID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc UuidToStringA*(
+  Uuid: ptr UUID, StringUuid: ptr RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc UuidFromStringA*(
+  StringUuid: RPC_CSTR, Uuid: ptr UUID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc UuidToStringW*(
+  Uuid: ptr UUID, StringUuid: ptr RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc UuidFromStringW*(
+  StringUuid: RPC_WSTR, Uuid: ptr UUID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc UuidCreateNil*(
+  NilUuid: ptr UUID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc UuidEqual*(
+  Uuid1: ptr UUID, Uuid2: ptr UUID, Status: ptr RPC_STATUS
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc UuidHash*(
+  Uuid: ptr UUID, Status: ptr RPC_STATUS
+): uint16 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc UuidIsNil*(
+  Uuid: ptr UUID, Status: ptr RPC_STATUS
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcEpRegisterNoReplaceA*(
+  IfSpec: RPC_IF_HANDLE,
+  BindingVector: ptr RPC_BINDING_VECTOR,
+  UuidVector: ptr UUID_VECTOR,
+  Annotation: RPC_CSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcEpRegisterNoReplaceW*(
+  IfSpec: RPC_IF_HANDLE,
+  BindingVector: ptr RPC_BINDING_VECTOR,
+  UuidVector: ptr UUID_VECTOR,
+  Annotation: RPC_WSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcEpRegisterA*(
+  IfSpec: RPC_IF_HANDLE,
+  BindingVector: ptr RPC_BINDING_VECTOR,
+  UuidVector: ptr UUID_VECTOR,
+  Annotation: RPC_CSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcEpRegisterW*(
+  IfSpec: RPC_IF_HANDLE,
+  BindingVector: ptr RPC_BINDING_VECTOR,
+  UuidVector: ptr UUID_VECTOR,
+  Annotation: RPC_WSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcEpUnregister*(
+  IfSpec: RPC_IF_HANDLE,
+  BindingVector: ptr RPC_BINDING_VECTOR,
+  UuidVector: ptr UUID_VECTOR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc DceErrorInqTextA*(
+  RpcStatus: RPC_STATUS, ErrorText: RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc DceErrorInqTextW*(
+  RpcStatus: RPC_STATUS, ErrorText: RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtEpEltInqBegin*(
+  EpBinding: RPC_BINDING_HANDLE,
+  InquiryType: int32,
+  IfId: ptr RPC_IF_ID,
+  VersOption: int32,
+  ObjectUuid: ptr UUID,
+  InquiryContext: ptr RPC_EP_INQ_HANDLE,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtEpEltInqDone*(
+  InquiryContext: ptr RPC_EP_INQ_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtEpEltInqNextA*(
+  InquiryContext: RPC_EP_INQ_HANDLE,
+  IfId: ptr RPC_IF_ID,
+  Binding: ptr RPC_BINDING_HANDLE,
+  ObjectUuid: ptr UUID,
+  Annotation: ptr RPC_CSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtEpEltInqNextW*(
+  InquiryContext: RPC_EP_INQ_HANDLE,
+  IfId: ptr RPC_IF_ID,
+  Binding: ptr RPC_BINDING_HANDLE,
+  ObjectUuid: ptr UUID,
+  Annotation: ptr RPC_WSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtEpUnregister*(
+  EpBinding: RPC_BINDING_HANDLE,
+  IfId: ptr RPC_IF_ID,
+  Binding: RPC_BINDING_HANDLE,
+  ObjectUuid: ptr UUID,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcMgmtSetAuthorizationFn*(
+  AuthorizationFn: RPC_MGMT_AUTHORIZATION_FN
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingCreateA*(
+  Template: ptr RPC_BINDING_HANDLE_TEMPLATE,
+  Security: ptr RPC_BINDING_HANDLE_SECURITY,
+  Options: ptr RPC_BINDING_HANDLE_OPTIONS,
+  Binding: ptr RPC_BINDING_HANDLE,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingCreateW*(
+  Template: ptr RPC_BINDING_HANDLE_TEMPLATE,
+  Security: ptr RPC_BINDING_HANDLE_SECURITY,
+  Options: ptr RPC_BINDING_HANDLE_OPTIONS,
+  Binding: ptr RPC_BINDING_HANDLE,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerInqBindingHandle*(
+  Binding: ptr RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcNegotiateTransferSyntax*(
+  Message: ptr RPC_MESSAGE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcGetBuffer*(
+  Message: ptr RPC_MESSAGE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcGetBufferWithObject*(
+  Message: ptr RPC_MESSAGE, ObjectUuid: ptr UUID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcSendReceive*(
+  Message: ptr RPC_MESSAGE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcFreeBuffer*(
+  Message: ptr RPC_MESSAGE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcSend*(
+  Message: PRPC_MESSAGE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcReceive*(
+  Message: PRPC_MESSAGE, Size: int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcFreePipeBuffer*(
+  Message: ptr RPC_MESSAGE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcReallocPipeBuffer*(
+  Message: PRPC_MESSAGE, NewSize: int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcRequestMutex*(
+  Mutex: ptr I_RPC_MUTEX
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcClearMutex*(
+  Mutex: I_RPC_MUTEX
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcDeleteMutex*(
+  Mutex: I_RPC_MUTEX
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
 proc I_RpcAllocate*(Size: int32): pointer {.winapi, stdcall, dynlib: "rpcrt4", importc.}
 proc I_RpcFree*(Object: pointer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcPauseExecution*(Milliseconds: int32): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+proc I_RpcPauseExecution*(
+  Milliseconds: int32
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
 proc I_RpcGetExtendedError*(): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcGetCurrentCallHandle*(): RPC_BINDING_HANDLE {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcNsInterfaceExported*(EntryNameSyntax: int32, EntryName: ptr uint16, RpcInterfaceInformation: ptr RPC_SERVER_INTERFACE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcNsInterfaceUnexported*(EntryNameSyntax: int32, EntryName: ptr uint16, RpcInterfaceInformation: ptr RPC_SERVER_INTERFACE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcBindingToStaticStringBindingW*(Binding: RPC_BINDING_HANDLE, StringBinding: ptr ptr uint16): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcBindingInqSecurityContext*(Binding: RPC_BINDING_HANDLE, SecurityContextHandle: ptr pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcBindingInqWireIdForSnego*(Binding: RPC_BINDING_HANDLE, WireId: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcBindingInqMarshalledTargetInfo*(Binding: RPC_BINDING_HANDLE, MarshalledTargetInfoLength: ptr int32, MarshalledTargetInfo: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcBindingInqLocalClientPID*(Binding: RPC_BINDING_HANDLE, Pid: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcBindingHandleToAsyncHandle*(Binding: RPC_BINDING_HANDLE, AsyncHandle: ptr pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcNsBindingSetEntryNameW*(Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcNsBindingSetEntryNameA*(Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcServerUseProtseqEp2A*(NetworkAddress: RPC_CSTR, Protseq: RPC_CSTR, MaxCalls: int32, Endpoint: RPC_CSTR, SecurityDescriptor: pointer, Policy: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcServerUseProtseqEp2W*(NetworkAddress: RPC_WSTR, Protseq: RPC_WSTR, MaxCalls: int32, Endpoint: RPC_WSTR, SecurityDescriptor: pointer, Policy: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcServerUseProtseq2W*(NetworkAddress: RPC_WSTR, Protseq: RPC_WSTR, MaxCalls: int32, SecurityDescriptor: pointer, Policy: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcServerUseProtseq2A*(NetworkAddress: RPC_CSTR, Protseq: RPC_CSTR, MaxCalls: int32, SecurityDescriptor: pointer, Policy: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcBindingInqDynamicEndpointW*(Binding: RPC_BINDING_HANDLE, DynamicEndpoint: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcBindingInqDynamicEndpointA*(Binding: RPC_BINDING_HANDLE, DynamicEndpoint: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcServerCheckClientRestriction*(Context: RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcBindingInqTransportType*(Binding: RPC_BINDING_HANDLE, Type: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcIfInqTransferSyntaxes*(RpcIfHandle: RPC_IF_HANDLE, TransferSyntaxes: ptr RPC_TRANSFER_SYNTAX, TransferSyntaxSize: int32, TransferSyntaxCount: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_UuidCreate*(Uuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcBindingCopy*(SourceBinding: RPC_BINDING_HANDLE, DestinationBinding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcBindingIsClientLocal*(BindingHandle: RPC_BINDING_HANDLE, ClientLocalFlag: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+proc I_RpcGetCurrentCallHandle*(): RPC_BINDING_HANDLE {.
+  winapi, stdcall, dynlib: "rpcrt4", importc
+.}
+
+proc I_RpcNsInterfaceExported*(
+  EntryNameSyntax: int32,
+  EntryName: ptr uint16,
+  RpcInterfaceInformation: ptr RPC_SERVER_INTERFACE,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcNsInterfaceUnexported*(
+  EntryNameSyntax: int32,
+  EntryName: ptr uint16,
+  RpcInterfaceInformation: ptr RPC_SERVER_INTERFACE,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcBindingToStaticStringBindingW*(
+  Binding: RPC_BINDING_HANDLE, StringBinding: ptr ptr uint16
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcBindingInqSecurityContext*(
+  Binding: RPC_BINDING_HANDLE, SecurityContextHandle: ptr pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcBindingInqWireIdForSnego*(
+  Binding: RPC_BINDING_HANDLE, WireId: RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcBindingInqMarshalledTargetInfo*(
+  Binding: RPC_BINDING_HANDLE,
+  MarshalledTargetInfoLength: ptr int32,
+  MarshalledTargetInfo: ptr RPC_CSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcBindingInqLocalClientPID*(
+  Binding: RPC_BINDING_HANDLE, Pid: ptr int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcBindingHandleToAsyncHandle*(
+  Binding: RPC_BINDING_HANDLE, AsyncHandle: ptr pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcNsBindingSetEntryNameW*(
+  Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcNsBindingSetEntryNameA*(
+  Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcServerUseProtseqEp2A*(
+  NetworkAddress: RPC_CSTR,
+  Protseq: RPC_CSTR,
+  MaxCalls: int32,
+  Endpoint: RPC_CSTR,
+  SecurityDescriptor: pointer,
+  Policy: pointer,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcServerUseProtseqEp2W*(
+  NetworkAddress: RPC_WSTR,
+  Protseq: RPC_WSTR,
+  MaxCalls: int32,
+  Endpoint: RPC_WSTR,
+  SecurityDescriptor: pointer,
+  Policy: pointer,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcServerUseProtseq2W*(
+  NetworkAddress: RPC_WSTR,
+  Protseq: RPC_WSTR,
+  MaxCalls: int32,
+  SecurityDescriptor: pointer,
+  Policy: pointer,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcServerUseProtseq2A*(
+  NetworkAddress: RPC_CSTR,
+  Protseq: RPC_CSTR,
+  MaxCalls: int32,
+  SecurityDescriptor: pointer,
+  Policy: pointer,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcBindingInqDynamicEndpointW*(
+  Binding: RPC_BINDING_HANDLE, DynamicEndpoint: ptr RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcBindingInqDynamicEndpointA*(
+  Binding: RPC_BINDING_HANDLE, DynamicEndpoint: ptr RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcServerCheckClientRestriction*(
+  Context: RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcBindingInqTransportType*(
+  Binding: RPC_BINDING_HANDLE, Type: ptr int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcIfInqTransferSyntaxes*(
+  RpcIfHandle: RPC_IF_HANDLE,
+  TransferSyntaxes: ptr RPC_TRANSFER_SYNTAX,
+  TransferSyntaxSize: int32,
+  TransferSyntaxCount: ptr int32,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_UuidCreate*(
+  Uuid: ptr UUID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcBindingCopy*(
+  SourceBinding: RPC_BINDING_HANDLE, DestinationBinding: ptr RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcBindingIsClientLocal*(
+  BindingHandle: RPC_BINDING_HANDLE, ClientLocalFlag: ptr int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
 proc I_RpcSsDontSerializeContext*(): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcServerRegisterForwardFunction*(pForwardFunction: RPC_FORWARD_FUNCTION): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcServerInqAddressChangeFn*(): RPC_ADDRESS_CHANGE_FN {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcServerSetAddressChangeFn*(pAddressChangeFn: RPC_ADDRESS_CHANGE_FN): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcServerInqLocalConnAddress*(Binding: RPC_BINDING_HANDLE, Buffer: pointer, BufferSize: ptr int32, AddressFormat: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcSessionStrictContextHandle*(): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcTurnOnEEInfoPropagation*(): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcServerInqTransportType*(Type: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcMapWin32Status*(Status: RPC_STATUS): LONG32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcRecordCalloutFailure*(RpcStatus: RPC_STATUS, CallOutState: ptr RDR_CALLOUT_STATE, DllName: ptr uint16): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcNsBindingExportA*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfSpec: RPC_IF_HANDLE, BindingVec: ptr RPC_BINDING_VECTOR, ObjectUuidVec: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingUnexportA*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfSpec: RPC_IF_HANDLE, ObjectUuidVec: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingExportW*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfSpec: RPC_IF_HANDLE, BindingVec: ptr RPC_BINDING_VECTOR, ObjectUuidVec: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingUnexportW*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfSpec: RPC_IF_HANDLE, ObjectUuidVec: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingExportPnPA*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfSpec: RPC_IF_HANDLE, ObjectVector: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingUnexportPnPA*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfSpec: RPC_IF_HANDLE, ObjectVector: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingExportPnPW*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfSpec: RPC_IF_HANDLE, ObjectVector: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingUnexportPnPW*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfSpec: RPC_IF_HANDLE, ObjectVector: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingLookupBeginA*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfSpec: RPC_IF_HANDLE, ObjUuid: ptr UUID, BindingMaxCount: int32, LookupContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingLookupBeginW*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfSpec: RPC_IF_HANDLE, ObjUuid: ptr UUID, BindingMaxCount: int32, LookupContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingLookupNext*(LookupContext: RPC_NS_HANDLE, BindingVec: ptr ptr RPC_BINDING_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingLookupDone*(LookupContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsGroupDeleteA*(GroupNameSyntax: int32, GroupName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsGroupMbrAddA*(GroupNameSyntax: int32, GroupName: RPC_CSTR, MemberNameSyntax: int32, MemberName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsGroupMbrRemoveA*(GroupNameSyntax: int32, GroupName: RPC_CSTR, MemberNameSyntax: int32, MemberName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsGroupMbrInqBeginA*(GroupNameSyntax: int32, GroupName: RPC_CSTR, MemberNameSyntax: int32, InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsGroupMbrInqNextA*(InquiryContext: RPC_NS_HANDLE, MemberName: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsGroupDeleteW*(GroupNameSyntax: int32, GroupName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsGroupMbrAddW*(GroupNameSyntax: int32, GroupName: RPC_WSTR, MemberNameSyntax: int32, MemberName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsGroupMbrRemoveW*(GroupNameSyntax: int32, GroupName: RPC_WSTR, MemberNameSyntax: int32, MemberName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsGroupMbrInqBeginW*(GroupNameSyntax: int32, GroupName: RPC_WSTR, MemberNameSyntax: int32, InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsGroupMbrInqNextW*(InquiryContext: RPC_NS_HANDLE, MemberName: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsGroupMbrInqDone*(InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsProfileDeleteA*(ProfileNameSyntax: int32, ProfileName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsProfileEltAddA*(ProfileNameSyntax: int32, ProfileName: RPC_CSTR, IfId: ptr RPC_IF_ID, MemberNameSyntax: int32, MemberName: RPC_CSTR, Priority: int32, Annotation: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsProfileEltRemoveA*(ProfileNameSyntax: int32, ProfileName: RPC_CSTR, IfId: ptr RPC_IF_ID, MemberNameSyntax: int32, MemberName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsProfileEltInqBeginA*(ProfileNameSyntax: int32, ProfileName: RPC_CSTR, InquiryType: int32, IfId: ptr RPC_IF_ID, VersOption: int32, MemberNameSyntax: int32, MemberName: RPC_CSTR, InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsProfileEltInqNextA*(InquiryContext: RPC_NS_HANDLE, IfId: ptr RPC_IF_ID, MemberName: ptr RPC_CSTR, Priority: ptr int32, Annotation: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsProfileDeleteW*(ProfileNameSyntax: int32, ProfileName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsProfileEltAddW*(ProfileNameSyntax: int32, ProfileName: RPC_WSTR, IfId: ptr RPC_IF_ID, MemberNameSyntax: int32, MemberName: RPC_WSTR, Priority: int32, Annotation: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsProfileEltRemoveW*(ProfileNameSyntax: int32, ProfileName: RPC_WSTR, IfId: ptr RPC_IF_ID, MemberNameSyntax: int32, MemberName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsProfileEltInqBeginW*(ProfileNameSyntax: int32, ProfileName: RPC_WSTR, InquiryType: int32, IfId: ptr RPC_IF_ID, VersOption: int32, MemberNameSyntax: int32, MemberName: RPC_WSTR, InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsProfileEltInqNextW*(InquiryContext: RPC_NS_HANDLE, IfId: ptr RPC_IF_ID, MemberName: ptr RPC_WSTR, Priority: ptr int32, Annotation: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsProfileEltInqDone*(InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsEntryObjectInqBeginA*(EntryNameSyntax: int32, EntryName: RPC_CSTR, InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsEntryObjectInqBeginW*(EntryNameSyntax: int32, EntryName: RPC_WSTR, InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsEntryObjectInqNext*(InquiryContext: RPC_NS_HANDLE, ObjUuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsEntryObjectInqDone*(InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsEntryExpandNameA*(EntryNameSyntax: int32, EntryName: RPC_CSTR, ExpandedName: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsMgmtBindingUnexportA*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfId: ptr RPC_IF_ID, VersOption: int32, ObjectUuidVec: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsMgmtEntryCreateA*(EntryNameSyntax: int32, EntryName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsMgmtEntryDeleteA*(EntryNameSyntax: int32, EntryName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsMgmtEntryInqIfIdsA*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfIdVec: ptr ptr RPC_IF_ID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsMgmtHandleSetExpAge*(NsHandle: RPC_NS_HANDLE, ExpirationAge: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsMgmtInqExpAge*(ExpirationAge: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsMgmtSetExpAge*(ExpirationAge: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsEntryExpandNameW*(EntryNameSyntax: int32, EntryName: RPC_WSTR, ExpandedName: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsMgmtBindingUnexportW*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfId: ptr RPC_IF_ID, VersOption: int32, ObjectUuidVec: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsMgmtEntryCreateW*(EntryNameSyntax: int32, EntryName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsMgmtEntryDeleteW*(EntryNameSyntax: int32, EntryName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsMgmtEntryInqIfIdsW*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfIdVec: ptr ptr RPC_IF_ID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingImportBeginA*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfSpec: RPC_IF_HANDLE, ObjUuid: ptr UUID, ImportContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingImportBeginW*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfSpec: RPC_IF_HANDLE, ObjUuid: ptr UUID, ImportContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingImportNext*(ImportContext: RPC_NS_HANDLE, Binding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingImportDone*(ImportContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcNsBindingSelect*(BindingVec: ptr RPC_BINDING_VECTOR, Binding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
-proc RpcAsyncInitializeHandle*(pAsync: PRPC_ASYNC_STATE, Size: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcAsyncRegisterInfo*(pAsync: PRPC_ASYNC_STATE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcAsyncGetCallStatus*(pAsync: PRPC_ASYNC_STATE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcAsyncCompleteCall*(pAsync: PRPC_ASYNC_STATE, Reply: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcAsyncAbortCall*(pAsync: PRPC_ASYNC_STATE, ExceptionCode: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcAsyncCancelCall*(pAsync: PRPC_ASYNC_STATE, fAbort: WINBOOL): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcErrorStartEnumeration*(EnumHandle: ptr RPC_ERROR_ENUM_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcErrorGetNextRecord*(EnumHandle: ptr RPC_ERROR_ENUM_HANDLE, CopyStrings: WINBOOL, ErrorInfo: ptr RPC_EXTENDED_ERROR_INFO): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcErrorEndEnumeration*(EnumHandle: ptr RPC_ERROR_ENUM_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcErrorResetEnumeration*(EnumHandle: ptr RPC_ERROR_ENUM_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcErrorGetNumberOfRecords*(EnumHandle: ptr RPC_ERROR_ENUM_HANDLE, Records: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcErrorSaveErrorInfo*(EnumHandle: ptr RPC_ERROR_ENUM_HANDLE, ErrorBlob: ptr PVOID, BlobSize: ptr int): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcErrorLoadErrorInfo*(ErrorBlob: PVOID, BlobSize: int, EnumHandle: ptr RPC_ERROR_ENUM_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcErrorAddRecord*(ErrorInfo: ptr RPC_EXTENDED_ERROR_INFO): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+proc I_RpcServerRegisterForwardFunction*(
+  pForwardFunction: RPC_FORWARD_FUNCTION
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcServerInqAddressChangeFn*(): RPC_ADDRESS_CHANGE_FN {.
+  winapi, stdcall, dynlib: "rpcrt4", importc
+.}
+
+proc I_RpcServerSetAddressChangeFn*(
+  pAddressChangeFn: RPC_ADDRESS_CHANGE_FN
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcServerInqLocalConnAddress*(
+  Binding: RPC_BINDING_HANDLE,
+  Buffer: pointer,
+  BufferSize: ptr int32,
+  AddressFormat: ptr int32,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcSessionStrictContextHandle*(): void {.
+  winapi, stdcall, dynlib: "rpcrt4", importc
+.}
+
+proc I_RpcTurnOnEEInfoPropagation*(): RPC_STATUS {.
+  winapi, stdcall, dynlib: "rpcrt4", importc
+.}
+
+proc I_RpcServerInqTransportType*(
+  Type: ptr int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcMapWin32Status*(
+  Status: RPC_STATUS
+): LONG32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcRecordCalloutFailure*(
+  RpcStatus: RPC_STATUS, CallOutState: ptr RDR_CALLOUT_STATE, DllName: ptr uint16
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcNsBindingExportA*(
+  EntryNameSyntax: int32,
+  EntryName: RPC_CSTR,
+  IfSpec: RPC_IF_HANDLE,
+  BindingVec: ptr RPC_BINDING_VECTOR,
+  ObjectUuidVec: ptr UUID_VECTOR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingUnexportA*(
+  EntryNameSyntax: int32,
+  EntryName: RPC_CSTR,
+  IfSpec: RPC_IF_HANDLE,
+  ObjectUuidVec: ptr UUID_VECTOR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingExportW*(
+  EntryNameSyntax: int32,
+  EntryName: RPC_WSTR,
+  IfSpec: RPC_IF_HANDLE,
+  BindingVec: ptr RPC_BINDING_VECTOR,
+  ObjectUuidVec: ptr UUID_VECTOR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingUnexportW*(
+  EntryNameSyntax: int32,
+  EntryName: RPC_WSTR,
+  IfSpec: RPC_IF_HANDLE,
+  ObjectUuidVec: ptr UUID_VECTOR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingExportPnPA*(
+  EntryNameSyntax: int32,
+  EntryName: RPC_CSTR,
+  IfSpec: RPC_IF_HANDLE,
+  ObjectVector: ptr UUID_VECTOR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingUnexportPnPA*(
+  EntryNameSyntax: int32,
+  EntryName: RPC_CSTR,
+  IfSpec: RPC_IF_HANDLE,
+  ObjectVector: ptr UUID_VECTOR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingExportPnPW*(
+  EntryNameSyntax: int32,
+  EntryName: RPC_WSTR,
+  IfSpec: RPC_IF_HANDLE,
+  ObjectVector: ptr UUID_VECTOR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingUnexportPnPW*(
+  EntryNameSyntax: int32,
+  EntryName: RPC_WSTR,
+  IfSpec: RPC_IF_HANDLE,
+  ObjectVector: ptr UUID_VECTOR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingLookupBeginA*(
+  EntryNameSyntax: int32,
+  EntryName: RPC_CSTR,
+  IfSpec: RPC_IF_HANDLE,
+  ObjUuid: ptr UUID,
+  BindingMaxCount: int32,
+  LookupContext: ptr RPC_NS_HANDLE,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingLookupBeginW*(
+  EntryNameSyntax: int32,
+  EntryName: RPC_WSTR,
+  IfSpec: RPC_IF_HANDLE,
+  ObjUuid: ptr UUID,
+  BindingMaxCount: int32,
+  LookupContext: ptr RPC_NS_HANDLE,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingLookupNext*(
+  LookupContext: RPC_NS_HANDLE, BindingVec: ptr ptr RPC_BINDING_VECTOR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingLookupDone*(
+  LookupContext: ptr RPC_NS_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsGroupDeleteA*(
+  GroupNameSyntax: int32, GroupName: RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsGroupMbrAddA*(
+  GroupNameSyntax: int32,
+  GroupName: RPC_CSTR,
+  MemberNameSyntax: int32,
+  MemberName: RPC_CSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsGroupMbrRemoveA*(
+  GroupNameSyntax: int32,
+  GroupName: RPC_CSTR,
+  MemberNameSyntax: int32,
+  MemberName: RPC_CSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsGroupMbrInqBeginA*(
+  GroupNameSyntax: int32,
+  GroupName: RPC_CSTR,
+  MemberNameSyntax: int32,
+  InquiryContext: ptr RPC_NS_HANDLE,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsGroupMbrInqNextA*(
+  InquiryContext: RPC_NS_HANDLE, MemberName: ptr RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsGroupDeleteW*(
+  GroupNameSyntax: int32, GroupName: RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsGroupMbrAddW*(
+  GroupNameSyntax: int32,
+  GroupName: RPC_WSTR,
+  MemberNameSyntax: int32,
+  MemberName: RPC_WSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsGroupMbrRemoveW*(
+  GroupNameSyntax: int32,
+  GroupName: RPC_WSTR,
+  MemberNameSyntax: int32,
+  MemberName: RPC_WSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsGroupMbrInqBeginW*(
+  GroupNameSyntax: int32,
+  GroupName: RPC_WSTR,
+  MemberNameSyntax: int32,
+  InquiryContext: ptr RPC_NS_HANDLE,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsGroupMbrInqNextW*(
+  InquiryContext: RPC_NS_HANDLE, MemberName: ptr RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsGroupMbrInqDone*(
+  InquiryContext: ptr RPC_NS_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsProfileDeleteA*(
+  ProfileNameSyntax: int32, ProfileName: RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsProfileEltAddA*(
+  ProfileNameSyntax: int32,
+  ProfileName: RPC_CSTR,
+  IfId: ptr RPC_IF_ID,
+  MemberNameSyntax: int32,
+  MemberName: RPC_CSTR,
+  Priority: int32,
+  Annotation: RPC_CSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsProfileEltRemoveA*(
+  ProfileNameSyntax: int32,
+  ProfileName: RPC_CSTR,
+  IfId: ptr RPC_IF_ID,
+  MemberNameSyntax: int32,
+  MemberName: RPC_CSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsProfileEltInqBeginA*(
+  ProfileNameSyntax: int32,
+  ProfileName: RPC_CSTR,
+  InquiryType: int32,
+  IfId: ptr RPC_IF_ID,
+  VersOption: int32,
+  MemberNameSyntax: int32,
+  MemberName: RPC_CSTR,
+  InquiryContext: ptr RPC_NS_HANDLE,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsProfileEltInqNextA*(
+  InquiryContext: RPC_NS_HANDLE,
+  IfId: ptr RPC_IF_ID,
+  MemberName: ptr RPC_CSTR,
+  Priority: ptr int32,
+  Annotation: ptr RPC_CSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsProfileDeleteW*(
+  ProfileNameSyntax: int32, ProfileName: RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsProfileEltAddW*(
+  ProfileNameSyntax: int32,
+  ProfileName: RPC_WSTR,
+  IfId: ptr RPC_IF_ID,
+  MemberNameSyntax: int32,
+  MemberName: RPC_WSTR,
+  Priority: int32,
+  Annotation: RPC_WSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsProfileEltRemoveW*(
+  ProfileNameSyntax: int32,
+  ProfileName: RPC_WSTR,
+  IfId: ptr RPC_IF_ID,
+  MemberNameSyntax: int32,
+  MemberName: RPC_WSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsProfileEltInqBeginW*(
+  ProfileNameSyntax: int32,
+  ProfileName: RPC_WSTR,
+  InquiryType: int32,
+  IfId: ptr RPC_IF_ID,
+  VersOption: int32,
+  MemberNameSyntax: int32,
+  MemberName: RPC_WSTR,
+  InquiryContext: ptr RPC_NS_HANDLE,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsProfileEltInqNextW*(
+  InquiryContext: RPC_NS_HANDLE,
+  IfId: ptr RPC_IF_ID,
+  MemberName: ptr RPC_WSTR,
+  Priority: ptr int32,
+  Annotation: ptr RPC_WSTR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsProfileEltInqDone*(
+  InquiryContext: ptr RPC_NS_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsEntryObjectInqBeginA*(
+  EntryNameSyntax: int32, EntryName: RPC_CSTR, InquiryContext: ptr RPC_NS_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsEntryObjectInqBeginW*(
+  EntryNameSyntax: int32, EntryName: RPC_WSTR, InquiryContext: ptr RPC_NS_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsEntryObjectInqNext*(
+  InquiryContext: RPC_NS_HANDLE, ObjUuid: ptr UUID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsEntryObjectInqDone*(
+  InquiryContext: ptr RPC_NS_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsEntryExpandNameA*(
+  EntryNameSyntax: int32, EntryName: RPC_CSTR, ExpandedName: ptr RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsMgmtBindingUnexportA*(
+  EntryNameSyntax: int32,
+  EntryName: RPC_CSTR,
+  IfId: ptr RPC_IF_ID,
+  VersOption: int32,
+  ObjectUuidVec: ptr UUID_VECTOR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsMgmtEntryCreateA*(
+  EntryNameSyntax: int32, EntryName: RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsMgmtEntryDeleteA*(
+  EntryNameSyntax: int32, EntryName: RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsMgmtEntryInqIfIdsA*(
+  EntryNameSyntax: int32, EntryName: RPC_CSTR, IfIdVec: ptr ptr RPC_IF_ID_VECTOR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsMgmtHandleSetExpAge*(
+  NsHandle: RPC_NS_HANDLE, ExpirationAge: int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsMgmtInqExpAge*(
+  ExpirationAge: ptr int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsMgmtSetExpAge*(
+  ExpirationAge: int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsEntryExpandNameW*(
+  EntryNameSyntax: int32, EntryName: RPC_WSTR, ExpandedName: ptr RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsMgmtBindingUnexportW*(
+  EntryNameSyntax: int32,
+  EntryName: RPC_WSTR,
+  IfId: ptr RPC_IF_ID,
+  VersOption: int32,
+  ObjectUuidVec: ptr UUID_VECTOR,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsMgmtEntryCreateW*(
+  EntryNameSyntax: int32, EntryName: RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsMgmtEntryDeleteW*(
+  EntryNameSyntax: int32, EntryName: RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsMgmtEntryInqIfIdsW*(
+  EntryNameSyntax: int32, EntryName: RPC_WSTR, IfIdVec: ptr ptr RPC_IF_ID_VECTOR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingImportBeginA*(
+  EntryNameSyntax: int32,
+  EntryName: RPC_CSTR,
+  IfSpec: RPC_IF_HANDLE,
+  ObjUuid: ptr UUID,
+  ImportContext: ptr RPC_NS_HANDLE,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingImportBeginW*(
+  EntryNameSyntax: int32,
+  EntryName: RPC_WSTR,
+  IfSpec: RPC_IF_HANDLE,
+  ObjUuid: ptr UUID,
+  ImportContext: ptr RPC_NS_HANDLE,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingImportNext*(
+  ImportContext: RPC_NS_HANDLE, Binding: ptr RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingImportDone*(
+  ImportContext: ptr RPC_NS_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcNsBindingSelect*(
+  BindingVec: ptr RPC_BINDING_VECTOR, Binding: ptr RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc.}
+
+proc RpcAsyncInitializeHandle*(
+  pAsync: PRPC_ASYNC_STATE, Size: int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcAsyncRegisterInfo*(
+  pAsync: PRPC_ASYNC_STATE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcAsyncGetCallStatus*(
+  pAsync: PRPC_ASYNC_STATE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcAsyncCompleteCall*(
+  pAsync: PRPC_ASYNC_STATE, Reply: pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcAsyncAbortCall*(
+  pAsync: PRPC_ASYNC_STATE, ExceptionCode: int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcAsyncCancelCall*(
+  pAsync: PRPC_ASYNC_STATE, fAbort: WINBOOL
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcErrorStartEnumeration*(
+  EnumHandle: ptr RPC_ERROR_ENUM_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcErrorGetNextRecord*(
+  EnumHandle: ptr RPC_ERROR_ENUM_HANDLE,
+  CopyStrings: WINBOOL,
+  ErrorInfo: ptr RPC_EXTENDED_ERROR_INFO,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcErrorEndEnumeration*(
+  EnumHandle: ptr RPC_ERROR_ENUM_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcErrorResetEnumeration*(
+  EnumHandle: ptr RPC_ERROR_ENUM_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcErrorGetNumberOfRecords*(
+  EnumHandle: ptr RPC_ERROR_ENUM_HANDLE, Records: ptr int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcErrorSaveErrorInfo*(
+  EnumHandle: ptr RPC_ERROR_ENUM_HANDLE, ErrorBlob: ptr PVOID, BlobSize: ptr int
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcErrorLoadErrorInfo*(
+  ErrorBlob: PVOID, BlobSize: int, EnumHandle: ptr RPC_ERROR_ENUM_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcErrorAddRecord*(
+  ErrorInfo: ptr RPC_EXTENDED_ERROR_INFO
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
 proc RpcErrorClearInformation*(): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcGetAuthorizationContextForClient*(ClientBinding: RPC_BINDING_HANDLE, ImpersonateOnReturn: WINBOOL, Reserved1: PVOID, pExpirationTime: PLARGE_INTEGER, Reserved2: LUID, Reserved3: DWORD, Reserved4: PVOID, pAuthzClientContext: ptr PVOID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcFreeAuthorizationContext*(pAuthzClientContext: ptr PVOID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSsContextLockExclusive*(ServerBindingHandle: RPC_BINDING_HANDLE, UserContext: PVOID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcSsContextLockShared*(ServerBindingHandle: RPC_BINDING_HANDLE, UserContext: PVOID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerInqCallAttributesW*(ClientBinding: RPC_BINDING_HANDLE, RpcCallAttributes: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerInqCallAttributesA*(ClientBinding: RPC_BINDING_HANDLE, RpcCallAttributes: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcAsyncSetHandle*(Message: PRPC_MESSAGE, pAsync: PRPC_ASYNC_STATE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcAsyncAbortCall*(pAsync: PRPC_ASYNC_STATE, ExceptionCode: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc I_RpcExceptionFilter*(ExceptionCode: int32): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingBind*(pAsync: PRPC_ASYNC_STATE, Binding: RPC_BINDING_HANDLE, IfSpec: RPC_IF_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcBindingUnbind*(Binding: RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerSubscribeForNotification*(Binding: RPC_BINDING_HANDLE, Notification: DWORD, NotificationType: RPC_NOTIFICATION_TYPES, NotificationInfo: ptr RPC_ASYNC_NOTIFICATION_INFO): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcServerUnsubscribeForNotification*(Binding: RPC_BINDING_HANDLE, Notification: RPC_NOTIFICATIONS, NotificationsQueued: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrProxyInitialize*(This: pointer, pRpcMsg: PRPC_MESSAGE, pStubMsg: PMIDL_STUB_MESSAGE, pStubDescriptor: PMIDL_STUB_DESC, ProcNum: int32): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrProxyGetBuffer*(This: pointer, pStubMsg: PMIDL_STUB_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrProxySendReceive*(This: pointer, pStubMsg: ptr MIDL_STUB_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrProxyFreeBuffer*(This: pointer, pStubMsg: ptr MIDL_STUB_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrProxyErrorHandler*(dwExceptionCode: DWORD): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrStubInitialize*(pRpcMsg: PRPC_MESSAGE, pStubMsg: PMIDL_STUB_MESSAGE, pStubDescriptor: PMIDL_STUB_DESC, pRpcChannelBuffer: ptr IRpcChannelBuffer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrStubGetBuffer*(This: ptr IRpcStubBuffer, pRpcChannelBuffer: ptr IRpcChannelBuffer, pStubMsg: PMIDL_STUB_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc CStdStubBuffer_QueryInterface*(This: ptr IRpcStubBuffer, riid: REFIID, ppvObject: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc CStdStubBuffer_AddRef*(This: ptr IRpcStubBuffer): ULONG {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrCStdStubBuffer_Release*(This: ptr IRpcStubBuffer, pPSF: ptr IPSFactoryBuffer): ULONG {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc CStdStubBuffer_Connect*(This: ptr IRpcStubBuffer, pUnkServer: ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc CStdStubBuffer_Disconnect*(This: ptr IRpcStubBuffer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc CStdStubBuffer_Invoke*(This: ptr IRpcStubBuffer, pRpcMsg: ptr RPCOLEMESSAGE, pRpcChannelBuffer: ptr IRpcChannelBuffer): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc CStdStubBuffer_CountRefs*(This: ptr IRpcStubBuffer): ULONG {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc CStdStubBuffer_DebugServerQueryInterface*(This: ptr IRpcStubBuffer, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc CStdStubBuffer_DebugServerRelease*(This: ptr IRpcStubBuffer, pv: pointer): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrDllGetClassObject*(rclsid: REFCLSID, riid: REFIID, ppv: ptr pointer, pProxyFileList: ptr ptr ProxyFileInfo, pclsid: ptr CLSID, pPSFactoryBuffer: ptr CStdPSFactoryBuffer): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrDllCanUnloadNow*(pPSFactoryBuffer: ptr CStdPSFactoryBuffer): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrDllRegisterProxy*(hDll: HMODULE, pProxyFileList: ptr ptr ProxyFileInfo, pclsid: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrDllUnregisterProxy*(hDll: HMODULE, pProxyFileList: ptr ptr ProxyFileInfo, pclsid: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc NdrCStdStubBuffer2_Release*(This: ptr IRpcStubBuffer, pPSF: ptr IPSFactoryBuffer): ULONG {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcCertGeneratePrincipalNameW*(Context: PCCERT_CONTEXT, Flags: DWORD, pBuffer: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc RpcCertGeneratePrincipalNameA*(Context: PCCERT_CONTEXT, Flags: DWORD, pBuffer: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-proc `Level1=`*(self: var NDR_USER_MARSHAL_INFO, x: NDR_USER_MARSHAL_INFO_LEVEL1) {.inline.} = self.union1.Level1 = x
-proc Level1*(self: NDR_USER_MARSHAL_INFO): NDR_USER_MARSHAL_INFO_LEVEL1 {.inline.} = self.union1.Level1
-proc Level1*(self: var NDR_USER_MARSHAL_INFO): var NDR_USER_MARSHAL_INFO_LEVEL1 {.inline.} = self.union1.Level1
+proc RpcGetAuthorizationContextForClient*(
+  ClientBinding: RPC_BINDING_HANDLE,
+  ImpersonateOnReturn: WINBOOL,
+  Reserved1: PVOID,
+  pExpirationTime: PLARGE_INTEGER,
+  Reserved2: LUID,
+  Reserved3: DWORD,
+  Reserved4: PVOID,
+  pAuthzClientContext: ptr PVOID,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcFreeAuthorizationContext*(
+  pAuthzClientContext: ptr PVOID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcSsContextLockExclusive*(
+  ServerBindingHandle: RPC_BINDING_HANDLE, UserContext: PVOID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcSsContextLockShared*(
+  ServerBindingHandle: RPC_BINDING_HANDLE, UserContext: PVOID
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerInqCallAttributesW*(
+  ClientBinding: RPC_BINDING_HANDLE, RpcCallAttributes: pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerInqCallAttributesA*(
+  ClientBinding: RPC_BINDING_HANDLE, RpcCallAttributes: pointer
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcAsyncSetHandle*(
+  Message: PRPC_MESSAGE, pAsync: PRPC_ASYNC_STATE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcAsyncAbortCall*(
+  pAsync: PRPC_ASYNC_STATE, ExceptionCode: int32
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc I_RpcExceptionFilter*(
+  ExceptionCode: int32
+): int32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingBind*(
+  pAsync: PRPC_ASYNC_STATE, Binding: RPC_BINDING_HANDLE, IfSpec: RPC_IF_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcBindingUnbind*(
+  Binding: RPC_BINDING_HANDLE
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerSubscribeForNotification*(
+  Binding: RPC_BINDING_HANDLE,
+  Notification: DWORD,
+  NotificationType: RPC_NOTIFICATION_TYPES,
+  NotificationInfo: ptr RPC_ASYNC_NOTIFICATION_INFO,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcServerUnsubscribeForNotification*(
+  Binding: RPC_BINDING_HANDLE,
+  Notification: RPC_NOTIFICATIONS,
+  NotificationsQueued: ptr int32,
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrProxyInitialize*(
+  This: pointer,
+  pRpcMsg: PRPC_MESSAGE,
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  pStubDescriptor: PMIDL_STUB_DESC,
+  ProcNum: int32,
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrProxyGetBuffer*(
+  This: pointer, pStubMsg: PMIDL_STUB_MESSAGE
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrProxySendReceive*(
+  This: pointer, pStubMsg: ptr MIDL_STUB_MESSAGE
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrProxyFreeBuffer*(
+  This: pointer, pStubMsg: ptr MIDL_STUB_MESSAGE
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrProxyErrorHandler*(
+  dwExceptionCode: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrStubInitialize*(
+  pRpcMsg: PRPC_MESSAGE,
+  pStubMsg: PMIDL_STUB_MESSAGE,
+  pStubDescriptor: PMIDL_STUB_DESC,
+  pRpcChannelBuffer: ptr IRpcChannelBuffer,
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrStubGetBuffer*(
+  This: ptr IRpcStubBuffer,
+  pRpcChannelBuffer: ptr IRpcChannelBuffer,
+  pStubMsg: PMIDL_STUB_MESSAGE,
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc CStdStubBuffer_QueryInterface*(
+  This: ptr IRpcStubBuffer, riid: REFIID, ppvObject: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc CStdStubBuffer_AddRef*(
+  This: ptr IRpcStubBuffer
+): ULONG {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrCStdStubBuffer_Release*(
+  This: ptr IRpcStubBuffer, pPSF: ptr IPSFactoryBuffer
+): ULONG {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc CStdStubBuffer_Connect*(
+  This: ptr IRpcStubBuffer, pUnkServer: ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc CStdStubBuffer_Disconnect*(
+  This: ptr IRpcStubBuffer
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc CStdStubBuffer_Invoke*(
+  This: ptr IRpcStubBuffer,
+  pRpcMsg: ptr RPCOLEMESSAGE,
+  pRpcChannelBuffer: ptr IRpcChannelBuffer,
+): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc CStdStubBuffer_CountRefs*(
+  This: ptr IRpcStubBuffer
+): ULONG {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc CStdStubBuffer_DebugServerQueryInterface*(
+  This: ptr IRpcStubBuffer, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc CStdStubBuffer_DebugServerRelease*(
+  This: ptr IRpcStubBuffer, pv: pointer
+): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrDllGetClassObject*(
+  rclsid: REFCLSID,
+  riid: REFIID,
+  ppv: ptr pointer,
+  pProxyFileList: ptr ptr ProxyFileInfo,
+  pclsid: ptr CLSID,
+  pPSFactoryBuffer: ptr CStdPSFactoryBuffer,
+): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrDllCanUnloadNow*(
+  pPSFactoryBuffer: ptr CStdPSFactoryBuffer
+): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrDllRegisterProxy*(
+  hDll: HMODULE, pProxyFileList: ptr ptr ProxyFileInfo, pclsid: ptr CLSID
+): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrDllUnregisterProxy*(
+  hDll: HMODULE, pProxyFileList: ptr ptr ProxyFileInfo, pclsid: ptr CLSID
+): HRESULT {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc NdrCStdStubBuffer2_Release*(
+  This: ptr IRpcStubBuffer, pPSF: ptr IPSFactoryBuffer
+): ULONG {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcCertGeneratePrincipalNameW*(
+  Context: PCCERT_CONTEXT, Flags: DWORD, pBuffer: ptr RPC_WSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc RpcCertGeneratePrincipalNameA*(
+  Context: PCCERT_CONTEXT, Flags: DWORD, pBuffer: ptr RPC_CSTR
+): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+proc `Level1=`*(
+    self: var NDR_USER_MARSHAL_INFO, x: NDR_USER_MARSHAL_INFO_LEVEL1
+) {.inline.} =
+  self.union1.Level1 = x
+
+proc Level1*(self: NDR_USER_MARSHAL_INFO): NDR_USER_MARSHAL_INFO_LEVEL1 {.inline.} =
+  self.union1.Level1
+
+proc Level1*(
+    self: var NDR_USER_MARSHAL_INFO
+): var NDR_USER_MARSHAL_INFO_LEVEL1 {.inline.} =
+  self.union1.Level1
+
 when winimUnicode:
   type
     RPC_PROTSEQ_VECTOR* = RPC_PROTSEQ_VECTORW
@@ -1526,65 +3490,437 @@
     RPC_CALL_LOCAL_ADDRESS_V1* = RPC_CALL_LOCAL_ADDRESS_V1_W
     RPC_CALL_LOCAL_ADDRESS* = RPC_CALL_LOCAL_ADDRESS_W
     RPC_CALL_ATTRIBUTES_V2* = RPC_CALL_ATTRIBUTES_V2_W
-  proc RpcBindingFromStringBinding*(StringBinding: RPC_WSTR, Binding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingFromStringBindingW".}
-  proc RpcBindingToStringBinding*(Binding: RPC_BINDING_HANDLE, StringBinding: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingToStringBindingW".}
-  proc RpcStringBindingCompose*(ObjUuid: RPC_WSTR, Protseq: RPC_WSTR, NetworkAddr: RPC_WSTR, Endpoint: RPC_WSTR, Options: RPC_WSTR, StringBinding: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcStringBindingComposeW".}
-  proc RpcStringBindingParse*(StringBinding: RPC_WSTR, ObjUuid: ptr RPC_WSTR, Protseq: ptr RPC_WSTR, NetworkAddr: ptr RPC_WSTR, Endpoint: ptr RPC_WSTR, NetworkOptions: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcStringBindingParseW".}
-  proc RpcStringFree*(String: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcStringFreeW".}
-  proc RpcNetworkIsProtseqValid*(Protseq: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcNetworkIsProtseqValidW".}
-  proc RpcNetworkInqProtseqs*(ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORW): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcNetworkInqProtseqsW".}
-  proc RpcProtseqVectorFree*(ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORW): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcProtseqVectorFreeW".}
-  proc RpcServerUseProtseq*(Protseq: RPC_WSTR, MaxCalls: int32, SecurityDescriptor: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqW".}
-  proc RpcServerUseProtseqEx*(Protseq: RPC_WSTR, MaxCalls: int32, SecurityDescriptor: pointer, Policy: PRPC_POLICY): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqExW".}
-  proc RpcServerUseProtseqEp*(Protseq: RPC_WSTR, MaxCalls: int32, Endpoint: RPC_WSTR, SecurityDescriptor: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqEpW".}
-  proc RpcServerUseProtseqEpEx*(Protseq: RPC_WSTR, MaxCalls: int32, Endpoint: RPC_WSTR, SecurityDescriptor: pointer, Policy: PRPC_POLICY): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqEpExW".}
-  proc RpcServerUseProtseqIf*(Protseq: RPC_WSTR, MaxCalls: int32, IfSpec: RPC_IF_HANDLE, SecurityDescriptor: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqIfW".}
-  proc RpcServerUseProtseqIfEx*(Protseq: RPC_WSTR, MaxCalls: int32, IfSpec: RPC_IF_HANDLE, SecurityDescriptor: pointer, Policy: PRPC_POLICY): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqIfExW".}
-  proc RpcMgmtInqServerPrincName*(Binding: RPC_BINDING_HANDLE, AuthnSvc: int32, ServerPrincName: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcMgmtInqServerPrincNameW".}
-  proc RpcServerInqDefaultPrincName*(AuthnSvc: int32, PrincName: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerInqDefaultPrincNameW".}
-  proc RpcNsBindingInqEntryName*(Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcNsBindingInqEntryNameW".}
-  proc RpcBindingInqAuthClient*(ClientBinding: RPC_BINDING_HANDLE, Privs: ptr RPC_AUTHZ_HANDLE, ServerPrincName: ptr RPC_WSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthzSvc: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthClientW".}
-  proc RpcBindingInqAuthClientEx*(ClientBinding: RPC_BINDING_HANDLE, Privs: ptr RPC_AUTHZ_HANDLE, ServerPrincName: ptr RPC_WSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthzSvc: ptr int32, Flags: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthClientExW".}
-  proc RpcBindingInqAuthInfo*(Binding: RPC_BINDING_HANDLE, ServerPrincName: ptr RPC_WSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthInfoW".}
-  proc RpcBindingSetAuthInfo*(Binding: RPC_BINDING_HANDLE, ServerPrincName: RPC_WSTR, AuthnLevel: int32, AuthnSvc: int32, AuthIdentity: RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingSetAuthInfoW".}
-  proc RpcServerRegisterAuthInfo*(ServerPrincName: RPC_WSTR, AuthnSvc: int32, GetKeyFn: RPC_AUTH_KEY_RETRIEVAL_FN, Arg: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerRegisterAuthInfoW".}
-  proc RpcBindingInqAuthInfoEx*(Binding: RPC_BINDING_HANDLE, ServerPrincName: ptr RPC_WSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: ptr int32, RpcQosVersion: int32, SecurityQOS: ptr RPC_SECURITY_QOS): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthInfoExW".}
-  proc RpcBindingSetAuthInfoEx*(Binding: RPC_BINDING_HANDLE, ServerPrincName: RPC_WSTR, AuthnLevel: int32, AuthnSvc: int32, AuthIdentity: RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: int32, SecurityQOS: ptr RPC_SECURITY_QOS): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingSetAuthInfoExW".}
-  proc UuidFromString*(StringUuid: RPC_WSTR, Uuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "UuidFromStringW".}
-  proc UuidToString*(Uuid: ptr UUID, StringUuid: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "UuidToStringW".}
-  proc RpcEpRegisterNoReplace*(IfSpec: RPC_IF_HANDLE, BindingVector: ptr RPC_BINDING_VECTOR, UuidVector: ptr UUID_VECTOR, Annotation: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcEpRegisterNoReplaceW".}
-  proc RpcEpRegister*(IfSpec: RPC_IF_HANDLE, BindingVector: ptr RPC_BINDING_VECTOR, UuidVector: ptr UUID_VECTOR, Annotation: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcEpRegisterW".}
-  proc DceErrorInqText*(RpcStatus: RPC_STATUS, ErrorText: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "DceErrorInqTextW".}
-  proc RpcMgmtEpEltInqNext*(InquiryContext: RPC_EP_INQ_HANDLE, IfId: ptr RPC_IF_ID, Binding: ptr RPC_BINDING_HANDLE, ObjectUuid: ptr UUID, Annotation: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcMgmtEpEltInqNextW".}
-  proc RpcBindingCreate*(Template: ptr RPC_BINDING_HANDLE_TEMPLATE, Security: ptr RPC_BINDING_HANDLE_SECURITY, Options: ptr RPC_BINDING_HANDLE_OPTIONS, Binding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingCreateW".}
-  proc I_RpcNsBindingSetEntryName*(Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcNsBindingSetEntryNameW".}
-  proc I_RpcServerUseProtseqEp2*(NetworkAddress: RPC_WSTR, Protseq: RPC_WSTR, MaxCalls: int32, Endpoint: RPC_WSTR, SecurityDescriptor: pointer, Policy: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcServerUseProtseqEp2W".}
-  proc I_RpcServerUseProtseq2*(NetworkAddress: RPC_WSTR, Protseq: RPC_WSTR, MaxCalls: int32, SecurityDescriptor: pointer, Policy: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcServerUseProtseq2W".}
-  proc I_RpcBindingInqDynamicEndpoint*(Binding: RPC_BINDING_HANDLE, DynamicEndpoint: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcBindingInqDynamicEndpointW".}
-  proc RpcNsBindingLookupBegin*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfSpec: RPC_IF_HANDLE, ObjUuid: ptr UUID, BindingMaxCount: int32, LookupContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingLookupBeginW".}
-  proc RpcNsBindingImportBegin*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfSpec: RPC_IF_HANDLE, ObjUuid: ptr UUID, ImportContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingImportBeginW".}
-  proc RpcNsBindingExport*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfSpec: RPC_IF_HANDLE, BindingVec: ptr RPC_BINDING_VECTOR, ObjectUuidVec: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingExportW".}
-  proc RpcNsBindingUnexport*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfSpec: RPC_IF_HANDLE, ObjectUuidVec: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingUnexportW".}
-  proc RpcNsGroupDelete*(GroupNameSyntax: int32, GroupName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupDeleteW".}
-  proc RpcNsGroupMbrAdd*(GroupNameSyntax: int32, GroupName: RPC_WSTR, MemberNameSyntax: int32, MemberName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrAddW".}
-  proc RpcNsGroupMbrRemove*(GroupNameSyntax: int32, GroupName: RPC_WSTR, MemberNameSyntax: int32, MemberName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrRemoveW".}
-  proc RpcNsGroupMbrInqBegin*(GroupNameSyntax: int32, GroupName: RPC_WSTR, MemberNameSyntax: int32, InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrInqBeginW".}
-  proc RpcNsGroupMbrInqNext*(InquiryContext: RPC_NS_HANDLE, MemberName: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrInqNextW".}
-  proc RpcNsEntryExpandName*(EntryNameSyntax: int32, EntryName: RPC_WSTR, ExpandedName: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsEntryExpandNameW".}
-  proc RpcNsEntryObjectInqBegin*(EntryNameSyntax: int32, EntryName: RPC_WSTR, InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsEntryObjectInqBeginW".}
-  proc RpcNsMgmtBindingUnexport*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfId: ptr RPC_IF_ID, VersOption: int32, ObjectUuidVec: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtBindingUnexportW".}
-  proc RpcNsMgmtEntryCreate*(EntryNameSyntax: int32, EntryName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtEntryCreateW".}
-  proc RpcNsMgmtEntryDelete*(EntryNameSyntax: int32, EntryName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtEntryDeleteW".}
-  proc RpcNsMgmtEntryInqIfIds*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfIdVec: ptr ptr RPC_IF_ID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtEntryInqIfIdsW".}
-  proc RpcNsProfileDelete*(ProfileNameSyntax: int32, ProfileName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileDeleteW".}
-  proc RpcNsProfileEltAdd*(ProfileNameSyntax: int32, ProfileName: RPC_WSTR, IfId: ptr RPC_IF_ID, MemberNameSyntax: int32, MemberName: RPC_WSTR, Priority: int32, Annotation: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltAddW".}
-  proc RpcNsProfileEltRemove*(ProfileNameSyntax: int32, ProfileName: RPC_WSTR, IfId: ptr RPC_IF_ID, MemberNameSyntax: int32, MemberName: RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltRemoveW".}
-  proc RpcNsProfileEltInqBegin*(ProfileNameSyntax: int32, ProfileName: RPC_WSTR, InquiryType: int32, IfId: ptr RPC_IF_ID, VersOption: int32, MemberNameSyntax: int32, MemberName: RPC_WSTR, InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltInqBeginW".}
-  proc RpcNsProfileEltInqNext*(InquiryContext: RPC_NS_HANDLE, IfId: ptr RPC_IF_ID, MemberName: ptr RPC_WSTR, Priority: ptr int32, Annotation: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltInqNextW".}
-  proc RpcNsBindingExportPnP*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfSpec: RPC_IF_HANDLE, ObjectVector: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingExportPnPW".}
-  proc RpcNsBindingUnexportPnP*(EntryNameSyntax: int32, EntryName: RPC_WSTR, IfSpec: RPC_IF_HANDLE, ObjectVector: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingUnexportPnPW".}
-  proc RpcServerInqCallAttributes*(ClientBinding: RPC_BINDING_HANDLE, RpcCallAttributes: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerInqCallAttributesW".}
-  proc RpcCertGeneratePrincipalName*(Context: PCCERT_CONTEXT, Flags: DWORD, pBuffer: ptr RPC_WSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcCertGeneratePrincipalNameW".}
+
+  proc RpcBindingFromStringBinding*(
+    StringBinding: RPC_WSTR, Binding: ptr RPC_BINDING_HANDLE
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingFromStringBindingW"
+  .}
+
+  proc RpcBindingToStringBinding*(
+    Binding: RPC_BINDING_HANDLE, StringBinding: ptr RPC_WSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingToStringBindingW"
+  .}
+
+  proc RpcStringBindingCompose*(
+    ObjUuid: RPC_WSTR,
+    Protseq: RPC_WSTR,
+    NetworkAddr: RPC_WSTR,
+    Endpoint: RPC_WSTR,
+    Options: RPC_WSTR,
+    StringBinding: ptr RPC_WSTR,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcStringBindingComposeW"
+  .}
+
+  proc RpcStringBindingParse*(
+    StringBinding: RPC_WSTR,
+    ObjUuid: ptr RPC_WSTR,
+    Protseq: ptr RPC_WSTR,
+    NetworkAddr: ptr RPC_WSTR,
+    Endpoint: ptr RPC_WSTR,
+    NetworkOptions: ptr RPC_WSTR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcStringBindingParseW".}
+
+  proc RpcStringFree*(
+    String: ptr RPC_WSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcStringFreeW".}
+
+  proc RpcNetworkIsProtseqValid*(
+    Protseq: RPC_WSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcNetworkIsProtseqValidW"
+  .}
+
+  proc RpcNetworkInqProtseqs*(
+    ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORW
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcNetworkInqProtseqsW".}
+
+  proc RpcProtseqVectorFree*(
+    ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORW
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcProtseqVectorFreeW".}
+
+  proc RpcServerUseProtseq*(
+    Protseq: RPC_WSTR, MaxCalls: int32, SecurityDescriptor: pointer
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqW".}
+
+  proc RpcServerUseProtseqEx*(
+    Protseq: RPC_WSTR, MaxCalls: int32, SecurityDescriptor: pointer, Policy: PRPC_POLICY
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqExW".}
+
+  proc RpcServerUseProtseqEp*(
+    Protseq: RPC_WSTR, MaxCalls: int32, Endpoint: RPC_WSTR, SecurityDescriptor: pointer
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqEpW".}
+
+  proc RpcServerUseProtseqEpEx*(
+    Protseq: RPC_WSTR,
+    MaxCalls: int32,
+    Endpoint: RPC_WSTR,
+    SecurityDescriptor: pointer,
+    Policy: PRPC_POLICY,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqEpExW"
+  .}
+
+  proc RpcServerUseProtseqIf*(
+    Protseq: RPC_WSTR,
+    MaxCalls: int32,
+    IfSpec: RPC_IF_HANDLE,
+    SecurityDescriptor: pointer,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqIfW".}
+
+  proc RpcServerUseProtseqIfEx*(
+    Protseq: RPC_WSTR,
+    MaxCalls: int32,
+    IfSpec: RPC_IF_HANDLE,
+    SecurityDescriptor: pointer,
+    Policy: PRPC_POLICY,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqIfExW"
+  .}
+
+  proc RpcMgmtInqServerPrincName*(
+    Binding: RPC_BINDING_HANDLE, AuthnSvc: int32, ServerPrincName: ptr RPC_WSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcMgmtInqServerPrincNameW"
+  .}
+
+  proc RpcServerInqDefaultPrincName*(
+    AuthnSvc: int32, PrincName: ptr RPC_WSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerInqDefaultPrincNameW"
+  .}
+
+  proc RpcNsBindingInqEntryName*(
+    Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: ptr RPC_WSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcNsBindingInqEntryNameW"
+  .}
+
+  proc RpcBindingInqAuthClient*(
+    ClientBinding: RPC_BINDING_HANDLE,
+    Privs: ptr RPC_AUTHZ_HANDLE,
+    ServerPrincName: ptr RPC_WSTR,
+    AuthnLevel: ptr int32,
+    AuthnSvc: ptr int32,
+    AuthzSvc: ptr int32,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthClientW"
+  .}
+
+  proc RpcBindingInqAuthClientEx*(
+    ClientBinding: RPC_BINDING_HANDLE,
+    Privs: ptr RPC_AUTHZ_HANDLE,
+    ServerPrincName: ptr RPC_WSTR,
+    AuthnLevel: ptr int32,
+    AuthnSvc: ptr int32,
+    AuthzSvc: ptr int32,
+    Flags: int32,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthClientExW"
+  .}
+
+  proc RpcBindingInqAuthInfo*(
+    Binding: RPC_BINDING_HANDLE,
+    ServerPrincName: ptr RPC_WSTR,
+    AuthnLevel: ptr int32,
+    AuthnSvc: ptr int32,
+    AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE,
+    AuthzSvc: ptr int32,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthInfoW".}
+
+  proc RpcBindingSetAuthInfo*(
+    Binding: RPC_BINDING_HANDLE,
+    ServerPrincName: RPC_WSTR,
+    AuthnLevel: int32,
+    AuthnSvc: int32,
+    AuthIdentity: RPC_AUTH_IDENTITY_HANDLE,
+    AuthzSvc: int32,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingSetAuthInfoW".}
+
+  proc RpcServerRegisterAuthInfo*(
+    ServerPrincName: RPC_WSTR,
+    AuthnSvc: int32,
+    GetKeyFn: RPC_AUTH_KEY_RETRIEVAL_FN,
+    Arg: pointer,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerRegisterAuthInfoW"
+  .}
+
+  proc RpcBindingInqAuthInfoEx*(
+    Binding: RPC_BINDING_HANDLE,
+    ServerPrincName: ptr RPC_WSTR,
+    AuthnLevel: ptr int32,
+    AuthnSvc: ptr int32,
+    AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE,
+    AuthzSvc: ptr int32,
+    RpcQosVersion: int32,
+    SecurityQOS: ptr RPC_SECURITY_QOS,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthInfoExW"
+  .}
+
+  proc RpcBindingSetAuthInfoEx*(
+    Binding: RPC_BINDING_HANDLE,
+    ServerPrincName: RPC_WSTR,
+    AuthnLevel: int32,
+    AuthnSvc: int32,
+    AuthIdentity: RPC_AUTH_IDENTITY_HANDLE,
+    AuthzSvc: int32,
+    SecurityQOS: ptr RPC_SECURITY_QOS,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingSetAuthInfoExW"
+  .}
+
+  proc UuidFromString*(
+    StringUuid: RPC_WSTR, Uuid: ptr UUID
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "UuidFromStringW".}
+
+  proc UuidToString*(
+    Uuid: ptr UUID, StringUuid: ptr RPC_WSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "UuidToStringW".}
+
+  proc RpcEpRegisterNoReplace*(
+    IfSpec: RPC_IF_HANDLE,
+    BindingVector: ptr RPC_BINDING_VECTOR,
+    UuidVector: ptr UUID_VECTOR,
+    Annotation: RPC_WSTR,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcEpRegisterNoReplaceW"
+  .}
+
+  proc RpcEpRegister*(
+    IfSpec: RPC_IF_HANDLE,
+    BindingVector: ptr RPC_BINDING_VECTOR,
+    UuidVector: ptr UUID_VECTOR,
+    Annotation: RPC_WSTR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcEpRegisterW".}
+
+  proc DceErrorInqText*(
+    RpcStatus: RPC_STATUS, ErrorText: RPC_WSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "DceErrorInqTextW".}
+
+  proc RpcMgmtEpEltInqNext*(
+    InquiryContext: RPC_EP_INQ_HANDLE,
+    IfId: ptr RPC_IF_ID,
+    Binding: ptr RPC_BINDING_HANDLE,
+    ObjectUuid: ptr UUID,
+    Annotation: ptr RPC_WSTR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcMgmtEpEltInqNextW".}
+
+  proc RpcBindingCreate*(
+    Template: ptr RPC_BINDING_HANDLE_TEMPLATE,
+    Security: ptr RPC_BINDING_HANDLE_SECURITY,
+    Options: ptr RPC_BINDING_HANDLE_OPTIONS,
+    Binding: ptr RPC_BINDING_HANDLE,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingCreateW".}
+
+  proc I_RpcNsBindingSetEntryName*(
+    Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: RPC_WSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcNsBindingSetEntryNameW"
+  .}
+
+  proc I_RpcServerUseProtseqEp2*(
+    NetworkAddress: RPC_WSTR,
+    Protseq: RPC_WSTR,
+    MaxCalls: int32,
+    Endpoint: RPC_WSTR,
+    SecurityDescriptor: pointer,
+    Policy: pointer,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcServerUseProtseqEp2W"
+  .}
+
+  proc I_RpcServerUseProtseq2*(
+    NetworkAddress: RPC_WSTR,
+    Protseq: RPC_WSTR,
+    MaxCalls: int32,
+    SecurityDescriptor: pointer,
+    Policy: pointer,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcServerUseProtseq2W"
+  .}
+
+  proc I_RpcBindingInqDynamicEndpoint*(
+    Binding: RPC_BINDING_HANDLE, DynamicEndpoint: ptr RPC_WSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcBindingInqDynamicEndpointW"
+  .}
+
+  proc RpcNsBindingLookupBegin*(
+    EntryNameSyntax: int32,
+    EntryName: RPC_WSTR,
+    IfSpec: RPC_IF_HANDLE,
+    ObjUuid: ptr UUID,
+    BindingMaxCount: int32,
+    LookupContext: ptr RPC_NS_HANDLE,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingLookupBeginW"
+  .}
+
+  proc RpcNsBindingImportBegin*(
+    EntryNameSyntax: int32,
+    EntryName: RPC_WSTR,
+    IfSpec: RPC_IF_HANDLE,
+    ObjUuid: ptr UUID,
+    ImportContext: ptr RPC_NS_HANDLE,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingImportBeginW"
+  .}
+
+  proc RpcNsBindingExport*(
+    EntryNameSyntax: int32,
+    EntryName: RPC_WSTR,
+    IfSpec: RPC_IF_HANDLE,
+    BindingVec: ptr RPC_BINDING_VECTOR,
+    ObjectUuidVec: ptr UUID_VECTOR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingExportW".}
+
+  proc RpcNsBindingUnexport*(
+    EntryNameSyntax: int32,
+    EntryName: RPC_WSTR,
+    IfSpec: RPC_IF_HANDLE,
+    ObjectUuidVec: ptr UUID_VECTOR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingUnexportW".}
+
+  proc RpcNsGroupDelete*(
+    GroupNameSyntax: int32, GroupName: RPC_WSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupDeleteW".}
+
+  proc RpcNsGroupMbrAdd*(
+    GroupNameSyntax: int32,
+    GroupName: RPC_WSTR,
+    MemberNameSyntax: int32,
+    MemberName: RPC_WSTR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrAddW".}
+
+  proc RpcNsGroupMbrRemove*(
+    GroupNameSyntax: int32,
+    GroupName: RPC_WSTR,
+    MemberNameSyntax: int32,
+    MemberName: RPC_WSTR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrRemoveW".}
+
+  proc RpcNsGroupMbrInqBegin*(
+    GroupNameSyntax: int32,
+    GroupName: RPC_WSTR,
+    MemberNameSyntax: int32,
+    InquiryContext: ptr RPC_NS_HANDLE,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrInqBeginW".}
+
+  proc RpcNsGroupMbrInqNext*(
+    InquiryContext: RPC_NS_HANDLE, MemberName: ptr RPC_WSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrInqNextW".}
+
+  proc RpcNsEntryExpandName*(
+    EntryNameSyntax: int32, EntryName: RPC_WSTR, ExpandedName: ptr RPC_WSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsEntryExpandNameW".}
+
+  proc RpcNsEntryObjectInqBegin*(
+    EntryNameSyntax: int32, EntryName: RPC_WSTR, InquiryContext: ptr RPC_NS_HANDLE
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsEntryObjectInqBeginW"
+  .}
+
+  proc RpcNsMgmtBindingUnexport*(
+    EntryNameSyntax: int32,
+    EntryName: RPC_WSTR,
+    IfId: ptr RPC_IF_ID,
+    VersOption: int32,
+    ObjectUuidVec: ptr UUID_VECTOR,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtBindingUnexportW"
+  .}
+
+  proc RpcNsMgmtEntryCreate*(
+    EntryNameSyntax: int32, EntryName: RPC_WSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtEntryCreateW".}
+
+  proc RpcNsMgmtEntryDelete*(
+    EntryNameSyntax: int32, EntryName: RPC_WSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtEntryDeleteW".}
+
+  proc RpcNsMgmtEntryInqIfIds*(
+    EntryNameSyntax: int32, EntryName: RPC_WSTR, IfIdVec: ptr ptr RPC_IF_ID_VECTOR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtEntryInqIfIdsW"
+  .}
+
+  proc RpcNsProfileDelete*(
+    ProfileNameSyntax: int32, ProfileName: RPC_WSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileDeleteW".}
+
+  proc RpcNsProfileEltAdd*(
+    ProfileNameSyntax: int32,
+    ProfileName: RPC_WSTR,
+    IfId: ptr RPC_IF_ID,
+    MemberNameSyntax: int32,
+    MemberName: RPC_WSTR,
+    Priority: int32,
+    Annotation: RPC_WSTR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltAddW".}
+
+  proc RpcNsProfileEltRemove*(
+    ProfileNameSyntax: int32,
+    ProfileName: RPC_WSTR,
+    IfId: ptr RPC_IF_ID,
+    MemberNameSyntax: int32,
+    MemberName: RPC_WSTR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltRemoveW".}
+
+  proc RpcNsProfileEltInqBegin*(
+    ProfileNameSyntax: int32,
+    ProfileName: RPC_WSTR,
+    InquiryType: int32,
+    IfId: ptr RPC_IF_ID,
+    VersOption: int32,
+    MemberNameSyntax: int32,
+    MemberName: RPC_WSTR,
+    InquiryContext: ptr RPC_NS_HANDLE,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltInqBeginW"
+  .}
+
+  proc RpcNsProfileEltInqNext*(
+    InquiryContext: RPC_NS_HANDLE,
+    IfId: ptr RPC_IF_ID,
+    MemberName: ptr RPC_WSTR,
+    Priority: ptr int32,
+    Annotation: ptr RPC_WSTR,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltInqNextW"
+  .}
+
+  proc RpcNsBindingExportPnP*(
+    EntryNameSyntax: int32,
+    EntryName: RPC_WSTR,
+    IfSpec: RPC_IF_HANDLE,
+    ObjectVector: ptr UUID_VECTOR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingExportPnPW".}
+
+  proc RpcNsBindingUnexportPnP*(
+    EntryNameSyntax: int32,
+    EntryName: RPC_WSTR,
+    IfSpec: RPC_IF_HANDLE,
+    ObjectVector: ptr UUID_VECTOR,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingUnexportPnPW"
+  .}
+
+  proc RpcServerInqCallAttributes*(
+    ClientBinding: RPC_BINDING_HANDLE, RpcCallAttributes: pointer
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerInqCallAttributesW"
+  .}
+
+  proc RpcCertGeneratePrincipalName*(
+    Context: PCCERT_CONTEXT, Flags: DWORD, pBuffer: ptr RPC_WSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcCertGeneratePrincipalNameW"
+  .}
+
 when winimAnsi:
   type
     RPC_PROTSEQ_VECTOR* = RPC_PROTSEQ_VECTORA
@@ -1597,69 +3933,464 @@
     RPC_CALL_LOCAL_ADDRESS_V1* = RPC_CALL_LOCAL_ADDRESS_V1_A
     RPC_CALL_LOCAL_ADDRESS* = RPC_CALL_LOCAL_ADDRESS_A
     RPC_CALL_ATTRIBUTES_V2* = RPC_CALL_ATTRIBUTES_V2_A
-  proc RpcBindingFromStringBinding*(StringBinding: RPC_CSTR, Binding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingFromStringBindingA".}
-  proc RpcBindingToStringBinding*(Binding: RPC_BINDING_HANDLE, StringBinding: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingToStringBindingA".}
-  proc RpcStringBindingCompose*(ObjUuid: RPC_CSTR, Protseq: RPC_CSTR, NetworkAddr: RPC_CSTR, Endpoint: RPC_CSTR, Options: RPC_CSTR, StringBinding: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcStringBindingComposeA".}
-  proc RpcStringBindingParse*(StringBinding: RPC_CSTR, ObjUuid: ptr RPC_CSTR, Protseq: ptr RPC_CSTR, NetworkAddr: ptr RPC_CSTR, Endpoint: ptr RPC_CSTR, NetworkOptions: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcStringBindingParseA".}
-  proc RpcStringFree*(String: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcStringFreeA".}
-  proc RpcNetworkIsProtseqValid*(Protseq: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcNetworkIsProtseqValidA".}
-  proc RpcNetworkInqProtseqs*(ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORA): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcNetworkInqProtseqsA".}
-  proc RpcProtseqVectorFree*(ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORA): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcProtseqVectorFreeA".}
-  proc RpcServerUseProtseq*(Protseq: RPC_CSTR, MaxCalls: int32, SecurityDescriptor: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqA".}
-  proc RpcServerUseProtseqEx*(Protseq: RPC_CSTR, MaxCalls: int32, SecurityDescriptor: pointer, Policy: PRPC_POLICY): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqExA".}
-  proc RpcServerUseProtseqEp*(Protseq: RPC_CSTR, MaxCalls: int32, Endpoint: RPC_CSTR, SecurityDescriptor: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqEpA".}
-  proc RpcServerUseProtseqEpEx*(Protseq: RPC_CSTR, MaxCalls: int32, Endpoint: RPC_CSTR, SecurityDescriptor: pointer, Policy: PRPC_POLICY): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqEpExA".}
-  proc RpcServerUseProtseqIf*(Protseq: RPC_CSTR, MaxCalls: int32, IfSpec: RPC_IF_HANDLE, SecurityDescriptor: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqIfA".}
-  proc RpcServerUseProtseqIfEx*(Protseq: RPC_CSTR, MaxCalls: int32, IfSpec: RPC_IF_HANDLE, SecurityDescriptor: pointer, Policy: PRPC_POLICY): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqIfExA".}
-  proc RpcMgmtInqServerPrincName*(Binding: RPC_BINDING_HANDLE, AuthnSvc: int32, ServerPrincName: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcMgmtInqServerPrincNameA".}
-  proc RpcServerInqDefaultPrincName*(AuthnSvc: int32, PrincName: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerInqDefaultPrincNameA".}
-  proc RpcNsBindingInqEntryName*(Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcNsBindingInqEntryNameA".}
-  proc RpcBindingInqAuthClient*(ClientBinding: RPC_BINDING_HANDLE, Privs: ptr RPC_AUTHZ_HANDLE, ServerPrincName: ptr RPC_CSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthzSvc: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthClientA".}
-  proc RpcBindingInqAuthClientEx*(ClientBinding: RPC_BINDING_HANDLE, Privs: ptr RPC_AUTHZ_HANDLE, ServerPrincName: ptr RPC_CSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthzSvc: ptr int32, Flags: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthClientExA".}
-  proc RpcBindingInqAuthInfo*(Binding: RPC_BINDING_HANDLE, ServerPrincName: ptr RPC_CSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: ptr int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthInfoA".}
-  proc RpcBindingSetAuthInfo*(Binding: RPC_BINDING_HANDLE, ServerPrincName: RPC_CSTR, AuthnLevel: int32, AuthnSvc: int32, AuthIdentity: RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: int32): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingSetAuthInfoA".}
-  proc RpcServerRegisterAuthInfo*(ServerPrincName: RPC_CSTR, AuthnSvc: int32, GetKeyFn: RPC_AUTH_KEY_RETRIEVAL_FN, Arg: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerRegisterAuthInfoA".}
-  proc RpcBindingInqAuthInfoEx*(Binding: RPC_BINDING_HANDLE, ServerPrincName: ptr RPC_CSTR, AuthnLevel: ptr int32, AuthnSvc: ptr int32, AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: ptr int32, RpcQosVersion: int32, SecurityQOS: ptr RPC_SECURITY_QOS): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthInfoExA".}
-  proc RpcBindingSetAuthInfoEx*(Binding: RPC_BINDING_HANDLE, ServerPrincName: RPC_CSTR, AuthnLevel: int32, AuthnSvc: int32, AuthIdentity: RPC_AUTH_IDENTITY_HANDLE, AuthzSvc: int32, SecurityQos: ptr RPC_SECURITY_QOS): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingSetAuthInfoExA".}
-  proc UuidFromString*(StringUuid: RPC_CSTR, Uuid: ptr UUID): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "UuidFromStringA".}
-  proc UuidToString*(Uuid: ptr UUID, StringUuid: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "UuidToStringA".}
-  proc RpcEpRegisterNoReplace*(IfSpec: RPC_IF_HANDLE, BindingVector: ptr RPC_BINDING_VECTOR, UuidVector: ptr UUID_VECTOR, Annotation: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcEpRegisterNoReplaceA".}
-  proc RpcEpRegister*(IfSpec: RPC_IF_HANDLE, BindingVector: ptr RPC_BINDING_VECTOR, UuidVector: ptr UUID_VECTOR, Annotation: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcEpRegisterA".}
-  proc DceErrorInqText*(RpcStatus: RPC_STATUS, ErrorText: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "DceErrorInqTextA".}
-  proc RpcMgmtEpEltInqNext*(InquiryContext: RPC_EP_INQ_HANDLE, IfId: ptr RPC_IF_ID, Binding: ptr RPC_BINDING_HANDLE, ObjectUuid: ptr UUID, Annotation: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcMgmtEpEltInqNextA".}
-  proc RpcBindingCreate*(Template: ptr RPC_BINDING_HANDLE_TEMPLATE, Security: ptr RPC_BINDING_HANDLE_SECURITY, Options: ptr RPC_BINDING_HANDLE_OPTIONS, Binding: ptr RPC_BINDING_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingCreateA".}
-  proc I_RpcNsBindingSetEntryName*(Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcNsBindingSetEntryNameA".}
-  proc I_RpcServerUseProtseqEp2*(NetworkAddress: RPC_CSTR, Protseq: RPC_CSTR, MaxCalls: int32, Endpoint: RPC_CSTR, SecurityDescriptor: pointer, Policy: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcServerUseProtseqEp2A".}
-  proc I_RpcServerUseProtseq2*(NetworkAddress: RPC_CSTR, Protseq: RPC_CSTR, MaxCalls: int32, SecurityDescriptor: pointer, Policy: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcServerUseProtseq2A".}
-  proc I_RpcBindingInqDynamicEndpoint*(Binding: RPC_BINDING_HANDLE, DynamicEndpoint: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcBindingInqDynamicEndpointA".}
-  proc RpcNsBindingLookupBegin*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfSpec: RPC_IF_HANDLE, ObjUuid: ptr UUID, BindingMaxCount: int32, LookupContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingLookupBeginA".}
-  proc RpcNsBindingImportBegin*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfSpec: RPC_IF_HANDLE, ObjUuid: ptr UUID, ImportContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingImportBeginA".}
-  proc RpcNsBindingExport*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfSpec: RPC_IF_HANDLE, BindingVec: ptr RPC_BINDING_VECTOR, ObjectUuidVec: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingExportA".}
-  proc RpcNsBindingUnexport*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfSpec: RPC_IF_HANDLE, ObjectUuidVec: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingUnexportA".}
-  proc RpcNsGroupDelete*(GroupNameSyntax: int32, GroupName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupDeleteA".}
-  proc RpcNsGroupMbrAdd*(GroupNameSyntax: int32, GroupName: RPC_CSTR, MemberNameSyntax: int32, MemberName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrAddA".}
-  proc RpcNsGroupMbrRemove*(GroupNameSyntax: int32, GroupName: RPC_CSTR, MemberNameSyntax: int32, MemberName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrRemoveA".}
-  proc RpcNsGroupMbrInqBegin*(GroupNameSyntax: int32, GroupName: RPC_CSTR, MemberNameSyntax: int32, InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrInqBeginA".}
-  proc RpcNsGroupMbrInqNext*(InquiryContext: RPC_NS_HANDLE, MemberName: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrInqNextA".}
-  proc RpcNsEntryExpandName*(EntryNameSyntax: int32, EntryName: RPC_CSTR, ExpandedName: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsEntryExpandNameA".}
-  proc RpcNsEntryObjectInqBegin*(EntryNameSyntax: int32, EntryName: RPC_CSTR, InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsEntryObjectInqBeginA".}
-  proc RpcNsMgmtBindingUnexport*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfId: ptr RPC_IF_ID, VersOption: int32, ObjectUuidVec: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtBindingUnexportA".}
-  proc RpcNsMgmtEntryCreate*(EntryNameSyntax: int32, EntryName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtEntryCreateA".}
-  proc RpcNsMgmtEntryDelete*(EntryNameSyntax: int32, EntryName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtEntryDeleteA".}
-  proc RpcNsMgmtEntryInqIfIds*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfIdVec: ptr ptr RPC_IF_ID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtEntryInqIfIdsA".}
-  proc RpcNsProfileDelete*(ProfileNameSyntax: int32, ProfileName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileDeleteA".}
-  proc RpcNsProfileEltAdd*(ProfileNameSyntax: int32, ProfileName: RPC_CSTR, IfId: ptr RPC_IF_ID, MemberNameSyntax: int32, MemberName: RPC_CSTR, Priority: int32, Annotation: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltAddA".}
-  proc RpcNsProfileEltRemove*(ProfileNameSyntax: int32, ProfileName: RPC_CSTR, IfId: ptr RPC_IF_ID, MemberNameSyntax: int32, MemberName: RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltRemoveA".}
-  proc RpcNsProfileEltInqBegin*(ProfileNameSyntax: int32, ProfileName: RPC_CSTR, InquiryType: int32, IfId: ptr RPC_IF_ID, VersOption: int32, MemberNameSyntax: int32, MemberName: RPC_CSTR, InquiryContext: ptr RPC_NS_HANDLE): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltInqBeginA".}
-  proc RpcNsProfileEltInqNext*(InquiryContext: RPC_NS_HANDLE, IfId: ptr RPC_IF_ID, MemberName: ptr RPC_CSTR, Priority: ptr int32, Annotation: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltInqNextA".}
-  proc RpcNsBindingExportPnP*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfSpec: RPC_IF_HANDLE, ObjectVector: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingExportPnPA".}
-  proc RpcNsBindingUnexportPnP*(EntryNameSyntax: int32, EntryName: RPC_CSTR, IfSpec: RPC_IF_HANDLE, ObjectVector: ptr UUID_VECTOR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingUnexportPnPA".}
-  proc RpcServerInqCallAttributes*(ClientBinding: RPC_BINDING_HANDLE, RpcCallAttributes: pointer): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerInqCallAttributesA".}
-  proc RpcCertGeneratePrincipalName*(Context: PCCERT_CONTEXT, Flags: DWORD, pBuffer: ptr RPC_CSTR): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcCertGeneratePrincipalNameA".}
+
+  proc RpcBindingFromStringBinding*(
+    StringBinding: RPC_CSTR, Binding: ptr RPC_BINDING_HANDLE
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingFromStringBindingA"
+  .}
+
+  proc RpcBindingToStringBinding*(
+    Binding: RPC_BINDING_HANDLE, StringBinding: ptr RPC_CSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingToStringBindingA"
+  .}
+
+  proc RpcStringBindingCompose*(
+    ObjUuid: RPC_CSTR,
+    Protseq: RPC_CSTR,
+    NetworkAddr: RPC_CSTR,
+    Endpoint: RPC_CSTR,
+    Options: RPC_CSTR,
+    StringBinding: ptr RPC_CSTR,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcStringBindingComposeA"
+  .}
+
+  proc RpcStringBindingParse*(
+    StringBinding: RPC_CSTR,
+    ObjUuid: ptr RPC_CSTR,
+    Protseq: ptr RPC_CSTR,
+    NetworkAddr: ptr RPC_CSTR,
+    Endpoint: ptr RPC_CSTR,
+    NetworkOptions: ptr RPC_CSTR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcStringBindingParseA".}
+
+  proc RpcStringFree*(
+    String: ptr RPC_CSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcStringFreeA".}
+
+  proc RpcNetworkIsProtseqValid*(
+    Protseq: RPC_CSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcNetworkIsProtseqValidA"
+  .}
+
+  proc RpcNetworkInqProtseqs*(
+    ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORA
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcNetworkInqProtseqsA".}
+
+  proc RpcProtseqVectorFree*(
+    ProtseqVector: ptr ptr RPC_PROTSEQ_VECTORA
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcProtseqVectorFreeA".}
+
+  proc RpcServerUseProtseq*(
+    Protseq: RPC_CSTR, MaxCalls: int32, SecurityDescriptor: pointer
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqA".}
+
+  proc RpcServerUseProtseqEx*(
+    Protseq: RPC_CSTR, MaxCalls: int32, SecurityDescriptor: pointer, Policy: PRPC_POLICY
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqExA".}
+
+  proc RpcServerUseProtseqEp*(
+    Protseq: RPC_CSTR, MaxCalls: int32, Endpoint: RPC_CSTR, SecurityDescriptor: pointer
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqEpA".}
+
+  proc RpcServerUseProtseqEpEx*(
+    Protseq: RPC_CSTR,
+    MaxCalls: int32,
+    Endpoint: RPC_CSTR,
+    SecurityDescriptor: pointer,
+    Policy: PRPC_POLICY,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqEpExA"
+  .}
+
+  proc RpcServerUseProtseqIf*(
+    Protseq: RPC_CSTR,
+    MaxCalls: int32,
+    IfSpec: RPC_IF_HANDLE,
+    SecurityDescriptor: pointer,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqIfA".}
+
+  proc RpcServerUseProtseqIfEx*(
+    Protseq: RPC_CSTR,
+    MaxCalls: int32,
+    IfSpec: RPC_IF_HANDLE,
+    SecurityDescriptor: pointer,
+    Policy: PRPC_POLICY,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerUseProtseqIfExA"
+  .}
+
+  proc RpcMgmtInqServerPrincName*(
+    Binding: RPC_BINDING_HANDLE, AuthnSvc: int32, ServerPrincName: ptr RPC_CSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcMgmtInqServerPrincNameA"
+  .}
+
+  proc RpcServerInqDefaultPrincName*(
+    AuthnSvc: int32, PrincName: ptr RPC_CSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerInqDefaultPrincNameA"
+  .}
+
+  proc RpcNsBindingInqEntryName*(
+    Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: ptr RPC_CSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcNsBindingInqEntryNameA"
+  .}
+
+  proc RpcBindingInqAuthClient*(
+    ClientBinding: RPC_BINDING_HANDLE,
+    Privs: ptr RPC_AUTHZ_HANDLE,
+    ServerPrincName: ptr RPC_CSTR,
+    AuthnLevel: ptr int32,
+    AuthnSvc: ptr int32,
+    AuthzSvc: ptr int32,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthClientA"
+  .}
+
+  proc RpcBindingInqAuthClientEx*(
+    ClientBinding: RPC_BINDING_HANDLE,
+    Privs: ptr RPC_AUTHZ_HANDLE,
+    ServerPrincName: ptr RPC_CSTR,
+    AuthnLevel: ptr int32,
+    AuthnSvc: ptr int32,
+    AuthzSvc: ptr int32,
+    Flags: int32,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthClientExA"
+  .}
+
+  proc RpcBindingInqAuthInfo*(
+    Binding: RPC_BINDING_HANDLE,
+    ServerPrincName: ptr RPC_CSTR,
+    AuthnLevel: ptr int32,
+    AuthnSvc: ptr int32,
+    AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE,
+    AuthzSvc: ptr int32,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthInfoA".}
+
+  proc RpcBindingSetAuthInfo*(
+    Binding: RPC_BINDING_HANDLE,
+    ServerPrincName: RPC_CSTR,
+    AuthnLevel: int32,
+    AuthnSvc: int32,
+    AuthIdentity: RPC_AUTH_IDENTITY_HANDLE,
+    AuthzSvc: int32,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingSetAuthInfoA".}
+
+  proc RpcServerRegisterAuthInfo*(
+    ServerPrincName: RPC_CSTR,
+    AuthnSvc: int32,
+    GetKeyFn: RPC_AUTH_KEY_RETRIEVAL_FN,
+    Arg: pointer,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerRegisterAuthInfoA"
+  .}
+
+  proc RpcBindingInqAuthInfoEx*(
+    Binding: RPC_BINDING_HANDLE,
+    ServerPrincName: ptr RPC_CSTR,
+    AuthnLevel: ptr int32,
+    AuthnSvc: ptr int32,
+    AuthIdentity: ptr RPC_AUTH_IDENTITY_HANDLE,
+    AuthzSvc: ptr int32,
+    RpcQosVersion: int32,
+    SecurityQOS: ptr RPC_SECURITY_QOS,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingInqAuthInfoExA"
+  .}
+
+  proc RpcBindingSetAuthInfoEx*(
+    Binding: RPC_BINDING_HANDLE,
+    ServerPrincName: RPC_CSTR,
+    AuthnLevel: int32,
+    AuthnSvc: int32,
+    AuthIdentity: RPC_AUTH_IDENTITY_HANDLE,
+    AuthzSvc: int32,
+    SecurityQos: ptr RPC_SECURITY_QOS,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingSetAuthInfoExA"
+  .}
+
+  proc UuidFromString*(
+    StringUuid: RPC_CSTR, Uuid: ptr UUID
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "UuidFromStringA".}
+
+  proc UuidToString*(
+    Uuid: ptr UUID, StringUuid: ptr RPC_CSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "UuidToStringA".}
+
+  proc RpcEpRegisterNoReplace*(
+    IfSpec: RPC_IF_HANDLE,
+    BindingVector: ptr RPC_BINDING_VECTOR,
+    UuidVector: ptr UUID_VECTOR,
+    Annotation: RPC_CSTR,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcEpRegisterNoReplaceA"
+  .}
+
+  proc RpcEpRegister*(
+    IfSpec: RPC_IF_HANDLE,
+    BindingVector: ptr RPC_BINDING_VECTOR,
+    UuidVector: ptr UUID_VECTOR,
+    Annotation: RPC_CSTR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcEpRegisterA".}
+
+  proc DceErrorInqText*(
+    RpcStatus: RPC_STATUS, ErrorText: RPC_CSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "DceErrorInqTextA".}
+
+  proc RpcMgmtEpEltInqNext*(
+    InquiryContext: RPC_EP_INQ_HANDLE,
+    IfId: ptr RPC_IF_ID,
+    Binding: ptr RPC_BINDING_HANDLE,
+    ObjectUuid: ptr UUID,
+    Annotation: ptr RPC_CSTR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcMgmtEpEltInqNextA".}
+
+  proc RpcBindingCreate*(
+    Template: ptr RPC_BINDING_HANDLE_TEMPLATE,
+    Security: ptr RPC_BINDING_HANDLE_SECURITY,
+    Options: ptr RPC_BINDING_HANDLE_OPTIONS,
+    Binding: ptr RPC_BINDING_HANDLE,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcrt4", importc: "RpcBindingCreateA".}
+
+  proc I_RpcNsBindingSetEntryName*(
+    Binding: RPC_BINDING_HANDLE, EntryNameSyntax: int32, EntryName: RPC_CSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcNsBindingSetEntryNameA"
+  .}
+
+  proc I_RpcServerUseProtseqEp2*(
+    NetworkAddress: RPC_CSTR,
+    Protseq: RPC_CSTR,
+    MaxCalls: int32,
+    Endpoint: RPC_CSTR,
+    SecurityDescriptor: pointer,
+    Policy: pointer,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcServerUseProtseqEp2A"
+  .}
+
+  proc I_RpcServerUseProtseq2*(
+    NetworkAddress: RPC_CSTR,
+    Protseq: RPC_CSTR,
+    MaxCalls: int32,
+    SecurityDescriptor: pointer,
+    Policy: pointer,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcServerUseProtseq2A"
+  .}
+
+  proc I_RpcBindingInqDynamicEndpoint*(
+    Binding: RPC_BINDING_HANDLE, DynamicEndpoint: ptr RPC_CSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "I_RpcBindingInqDynamicEndpointA"
+  .}
+
+  proc RpcNsBindingLookupBegin*(
+    EntryNameSyntax: int32,
+    EntryName: RPC_CSTR,
+    IfSpec: RPC_IF_HANDLE,
+    ObjUuid: ptr UUID,
+    BindingMaxCount: int32,
+    LookupContext: ptr RPC_NS_HANDLE,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingLookupBeginA"
+  .}
+
+  proc RpcNsBindingImportBegin*(
+    EntryNameSyntax: int32,
+    EntryName: RPC_CSTR,
+    IfSpec: RPC_IF_HANDLE,
+    ObjUuid: ptr UUID,
+    ImportContext: ptr RPC_NS_HANDLE,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingImportBeginA"
+  .}
+
+  proc RpcNsBindingExport*(
+    EntryNameSyntax: int32,
+    EntryName: RPC_CSTR,
+    IfSpec: RPC_IF_HANDLE,
+    BindingVec: ptr RPC_BINDING_VECTOR,
+    ObjectUuidVec: ptr UUID_VECTOR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingExportA".}
+
+  proc RpcNsBindingUnexport*(
+    EntryNameSyntax: int32,
+    EntryName: RPC_CSTR,
+    IfSpec: RPC_IF_HANDLE,
+    ObjectUuidVec: ptr UUID_VECTOR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingUnexportA".}
+
+  proc RpcNsGroupDelete*(
+    GroupNameSyntax: int32, GroupName: RPC_CSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupDeleteA".}
+
+  proc RpcNsGroupMbrAdd*(
+    GroupNameSyntax: int32,
+    GroupName: RPC_CSTR,
+    MemberNameSyntax: int32,
+    MemberName: RPC_CSTR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrAddA".}
+
+  proc RpcNsGroupMbrRemove*(
+    GroupNameSyntax: int32,
+    GroupName: RPC_CSTR,
+    MemberNameSyntax: int32,
+    MemberName: RPC_CSTR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrRemoveA".}
+
+  proc RpcNsGroupMbrInqBegin*(
+    GroupNameSyntax: int32,
+    GroupName: RPC_CSTR,
+    MemberNameSyntax: int32,
+    InquiryContext: ptr RPC_NS_HANDLE,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrInqBeginA".}
+
+  proc RpcNsGroupMbrInqNext*(
+    InquiryContext: RPC_NS_HANDLE, MemberName: ptr RPC_CSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsGroupMbrInqNextA".}
+
+  proc RpcNsEntryExpandName*(
+    EntryNameSyntax: int32, EntryName: RPC_CSTR, ExpandedName: ptr RPC_CSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsEntryExpandNameA".}
+
+  proc RpcNsEntryObjectInqBegin*(
+    EntryNameSyntax: int32, EntryName: RPC_CSTR, InquiryContext: ptr RPC_NS_HANDLE
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsEntryObjectInqBeginA"
+  .}
+
+  proc RpcNsMgmtBindingUnexport*(
+    EntryNameSyntax: int32,
+    EntryName: RPC_CSTR,
+    IfId: ptr RPC_IF_ID,
+    VersOption: int32,
+    ObjectUuidVec: ptr UUID_VECTOR,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtBindingUnexportA"
+  .}
+
+  proc RpcNsMgmtEntryCreate*(
+    EntryNameSyntax: int32, EntryName: RPC_CSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtEntryCreateA".}
+
+  proc RpcNsMgmtEntryDelete*(
+    EntryNameSyntax: int32, EntryName: RPC_CSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtEntryDeleteA".}
+
+  proc RpcNsMgmtEntryInqIfIds*(
+    EntryNameSyntax: int32, EntryName: RPC_CSTR, IfIdVec: ptr ptr RPC_IF_ID_VECTOR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsMgmtEntryInqIfIdsA"
+  .}
+
+  proc RpcNsProfileDelete*(
+    ProfileNameSyntax: int32, ProfileName: RPC_CSTR
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileDeleteA".}
+
+  proc RpcNsProfileEltAdd*(
+    ProfileNameSyntax: int32,
+    ProfileName: RPC_CSTR,
+    IfId: ptr RPC_IF_ID,
+    MemberNameSyntax: int32,
+    MemberName: RPC_CSTR,
+    Priority: int32,
+    Annotation: RPC_CSTR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltAddA".}
+
+  proc RpcNsProfileEltRemove*(
+    ProfileNameSyntax: int32,
+    ProfileName: RPC_CSTR,
+    IfId: ptr RPC_IF_ID,
+    MemberNameSyntax: int32,
+    MemberName: RPC_CSTR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltRemoveA".}
+
+  proc RpcNsProfileEltInqBegin*(
+    ProfileNameSyntax: int32,
+    ProfileName: RPC_CSTR,
+    InquiryType: int32,
+    IfId: ptr RPC_IF_ID,
+    VersOption: int32,
+    MemberNameSyntax: int32,
+    MemberName: RPC_CSTR,
+    InquiryContext: ptr RPC_NS_HANDLE,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltInqBeginA"
+  .}
+
+  proc RpcNsProfileEltInqNext*(
+    InquiryContext: RPC_NS_HANDLE,
+    IfId: ptr RPC_IF_ID,
+    MemberName: ptr RPC_CSTR,
+    Priority: ptr int32,
+    Annotation: ptr RPC_CSTR,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsProfileEltInqNextA"
+  .}
+
+  proc RpcNsBindingExportPnP*(
+    EntryNameSyntax: int32,
+    EntryName: RPC_CSTR,
+    IfSpec: RPC_IF_HANDLE,
+    ObjectVector: ptr UUID_VECTOR,
+  ): RPC_STATUS {.winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingExportPnPA".}
+
+  proc RpcNsBindingUnexportPnP*(
+    EntryNameSyntax: int32,
+    EntryName: RPC_CSTR,
+    IfSpec: RPC_IF_HANDLE,
+    ObjectVector: ptr UUID_VECTOR,
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcns4", importc: "RpcNsBindingUnexportPnPA"
+  .}
+
+  proc RpcServerInqCallAttributes*(
+    ClientBinding: RPC_BINDING_HANDLE, RpcCallAttributes: pointer
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcServerInqCallAttributesA"
+  .}
+
+  proc RpcCertGeneratePrincipalName*(
+    Context: PCCERT_CONTEXT, Flags: DWORD, pBuffer: ptr RPC_CSTR
+  ): RPC_STATUS {.
+    winapi, stdcall, dynlib: "rpcrt4", importc: "RpcCertGeneratePrincipalNameA"
+  .}
+
 when winimCpu64:
-  proc Ndr64AsyncServerCall64*(pRpcMsg: PRPC_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-  proc Ndr64AsyncServerCallAll*(pRpcMsg: PRPC_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-  proc Ndr64DcomAsyncStubCall*(pThis: ptr IRpcStubBuffer, pChannel: ptr IRpcChannelBuffer, pRpcMsg: PRPC_MESSAGE, pdwStubPhase: ptr int32): LONG32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-  proc NdrStubCall3*(pThis: ptr IRpcStubBuffer, pChannel: ptr IRpcChannelBuffer, pRpcMsg: PRPC_MESSAGE, pdwStubPhase: ptr int32): LONG32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-  proc NdrServerCallAll*(pRpcMsg: PRPC_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
-  proc NdrServerCallNdr64*(pRpcMsg: PRPC_MESSAGE): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+  proc Ndr64AsyncServerCall64*(
+    pRpcMsg: PRPC_MESSAGE
+  ): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+  proc Ndr64AsyncServerCallAll*(
+    pRpcMsg: PRPC_MESSAGE
+  ): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+  proc Ndr64DcomAsyncStubCall*(
+    pThis: ptr IRpcStubBuffer,
+    pChannel: ptr IRpcChannelBuffer,
+    pRpcMsg: PRPC_MESSAGE,
+    pdwStubPhase: ptr int32,
+  ): LONG32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+  proc NdrStubCall3*(
+    pThis: ptr IRpcStubBuffer,
+    pChannel: ptr IRpcChannelBuffer,
+    pRpcMsg: PRPC_MESSAGE,
+    pdwStubPhase: ptr int32,
+  ): LONG32 {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+  proc NdrServerCallAll*(
+    pRpcMsg: PRPC_MESSAGE
+  ): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
+
+  proc NdrServerCallNdr64*(
+    pRpcMsg: PRPC_MESSAGE
+  ): void {.winapi, stdcall, dynlib: "rpcrt4", importc.}
--- a/semicongine/thirdparty/winim/winim/inc/security.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/security.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -64,15 +64,17 @@
     Flags*: USHORT
     Level*: USHORT
     AccessMask*: ACCESS_MASK
+
   PSE_ADT_OBJECT_TYPE* = ptr SE_ADT_OBJECT_TYPE
   SE_ADT_PARAMETER_ARRAY_ENTRY* {.pure.} = object
     Type*: SE_ADT_PARAMETER_TYPE
     Length*: ULONG
     Data*: array[2, ULONG_PTR]
     Address*: PVOID
+
   PSE_ADT_PARAMETER_ARRAY_ENTRY* = ptr SE_ADT_PARAMETER_ARRAY_ENTRY
-const
-  SE_MAX_AUDIT_PARAMETERS* = 32
+
+const SE_MAX_AUDIT_PARAMETERS* = 32
 type
   SE_ADT_PARAMETER_ARRAY* {.pure.} = object
     CategoryId*: ULONG
@@ -81,7 +83,8 @@
     Length*: ULONG
     Type*: USHORT
     Flags*: ULONG
-    Parameters*: array[SE_MAX_AUDIT_PARAMETERS , SE_ADT_PARAMETER_ARRAY_ENTRY]
+    Parameters*: array[SE_MAX_AUDIT_PARAMETERS, SE_ADT_PARAMETER_ARRAY_ENTRY]
+
   PSE_ADT_PARAMETER_ARRAY* = ptr SE_ADT_PARAMETER_ARRAY
   LSA_UNICODE_STRING* = UNICODE_STRING
   PLSA_UNICODE_STRING* = ptr UNICODE_STRING
@@ -92,26 +95,31 @@
   LSA_TRUST_INFORMATION* {.pure.} = object
     Name*: LSA_UNICODE_STRING
     Sid*: PSID
+
   PLSA_TRUST_INFORMATION* = ptr LSA_TRUST_INFORMATION
   LSA_REFERENCED_DOMAIN_LIST* {.pure.} = object
     Entries*: ULONG
     Domains*: PLSA_TRUST_INFORMATION
+
   PLSA_REFERENCED_DOMAIN_LIST* = ptr LSA_REFERENCED_DOMAIN_LIST
   LSA_TRANSLATED_SID* {.pure.} = object
     Use*: SID_NAME_USE
     RelativeId*: ULONG
     DomainIndex*: LONG
+
   PLSA_TRANSLATED_SID* = ptr LSA_TRANSLATED_SID
   LSA_TRANSLATED_SID2* {.pure.} = object
     Use*: SID_NAME_USE
     Sid*: PSID
     DomainIndex*: LONG
     Flags*: ULONG
+
   PLSA_TRANSLATED_SID2* = ptr LSA_TRANSLATED_SID2
   LSA_TRANSLATED_NAME* {.pure.} = object
     Use*: SID_NAME_USE
     Name*: LSA_UNICODE_STRING
     DomainIndex*: LONG
+
   PLSA_TRANSLATED_NAME* = ptr LSA_TRANSLATED_NAME
   POLICY_AUDIT_LOG_INFO* {.pure.} = object
     AuditLogPercentFull*: ULONG
@@ -120,19 +128,23 @@
     AuditLogFullShutdownInProgress*: BOOLEAN
     TimeToShutdown*: LARGE_INTEGER
     NextAuditRecordId*: ULONG
+
   PPOLICY_AUDIT_LOG_INFO* = ptr POLICY_AUDIT_LOG_INFO
   POLICY_AUDIT_EVENTS_INFO* {.pure.} = object
     AuditingMode*: BOOLEAN
     EventAuditingOptions*: PPOLICY_AUDIT_EVENT_OPTIONS
     MaximumAuditEventCount*: ULONG
+
   PPOLICY_AUDIT_EVENTS_INFO* = ptr POLICY_AUDIT_EVENTS_INFO
   POLICY_ACCOUNT_DOMAIN_INFO* {.pure.} = object
     DomainName*: LSA_UNICODE_STRING
     DomainSid*: PSID
+
   PPOLICY_ACCOUNT_DOMAIN_INFO* = ptr POLICY_ACCOUNT_DOMAIN_INFO
   POLICY_PRIMARY_DOMAIN_INFO* {.pure.} = object
     Name*: LSA_UNICODE_STRING
     Sid*: PSID
+
   PPOLICY_PRIMARY_DOMAIN_INFO* = ptr POLICY_PRIMARY_DOMAIN_INFO
   POLICY_DNS_DOMAIN_INFO* {.pure.} = object
     Name*: LSA_UNICODE_STRING
@@ -140,34 +152,43 @@
     DnsForestName*: LSA_UNICODE_STRING
     DomainGuid*: GUID
     Sid*: PSID
+
   PPOLICY_DNS_DOMAIN_INFO* = ptr POLICY_DNS_DOMAIN_INFO
   POLICY_PD_ACCOUNT_INFO* {.pure.} = object
     Name*: LSA_UNICODE_STRING
+
   PPOLICY_PD_ACCOUNT_INFO* = ptr POLICY_PD_ACCOUNT_INFO
   POLICY_LSA_SERVER_ROLE_INFO* {.pure.} = object
     LsaServerRole*: POLICY_LSA_SERVER_ROLE
+
   PPOLICY_LSA_SERVER_ROLE_INFO* = ptr POLICY_LSA_SERVER_ROLE_INFO
   POLICY_REPLICA_SOURCE_INFO* {.pure.} = object
     ReplicaSource*: LSA_UNICODE_STRING
     ReplicaAccountName*: LSA_UNICODE_STRING
+
   PPOLICY_REPLICA_SOURCE_INFO* = ptr POLICY_REPLICA_SOURCE_INFO
   POLICY_DEFAULT_QUOTA_INFO* {.pure.} = object
     QuotaLimits*: QUOTA_LIMITS
+
   PPOLICY_DEFAULT_QUOTA_INFO* = ptr POLICY_DEFAULT_QUOTA_INFO
   POLICY_MODIFICATION_INFO* {.pure.} = object
     ModifiedId*: LARGE_INTEGER
     DatabaseCreationTime*: LARGE_INTEGER
+
   PPOLICY_MODIFICATION_INFO* = ptr POLICY_MODIFICATION_INFO
   POLICY_AUDIT_FULL_SET_INFO* {.pure.} = object
     ShutDownOnFull*: BOOLEAN
+
   PPOLICY_AUDIT_FULL_SET_INFO* = ptr POLICY_AUDIT_FULL_SET_INFO
   POLICY_AUDIT_FULL_QUERY_INFO* {.pure.} = object
     ShutDownOnFull*: BOOLEAN
     LogIsFull*: BOOLEAN
+
   PPOLICY_AUDIT_FULL_QUERY_INFO* = ptr POLICY_AUDIT_FULL_QUERY_INFO
   POLICY_DOMAIN_EFS_INFO* {.pure.} = object
     InfoLength*: ULONG
     EfsBlob*: PUCHAR
+
   PPOLICY_DOMAIN_EFS_INFO* = ptr POLICY_DOMAIN_EFS_INFO
   POLICY_DOMAIN_KERBEROS_TICKET_INFO* {.pure.} = object
     AuthenticationOptions*: ULONG
@@ -176,20 +197,25 @@
     MaxRenewAge*: LARGE_INTEGER
     MaxClockSkew*: LARGE_INTEGER
     Reserved*: LARGE_INTEGER
+
   PPOLICY_DOMAIN_KERBEROS_TICKET_INFO* = ptr POLICY_DOMAIN_KERBEROS_TICKET_INFO
   TRUSTED_DOMAIN_NAME_INFO* {.pure.} = object
     Name*: LSA_UNICODE_STRING
+
   PTRUSTED_DOMAIN_NAME_INFO* = ptr TRUSTED_DOMAIN_NAME_INFO
   TRUSTED_CONTROLLERS_INFO* {.pure.} = object
     Entries*: ULONG
     Names*: PLSA_UNICODE_STRING
+
   PTRUSTED_CONTROLLERS_INFO* = ptr TRUSTED_CONTROLLERS_INFO
   TRUSTED_POSIX_OFFSET_INFO* {.pure.} = object
     Offset*: ULONG
+
   PTRUSTED_POSIX_OFFSET_INFO* = ptr TRUSTED_POSIX_OFFSET_INFO
   TRUSTED_PASSWORD_INFO* {.pure.} = object
     Password*: LSA_UNICODE_STRING
     OldPassword*: LSA_UNICODE_STRING
+
   PTRUSTED_PASSWORD_INFO* = ptr TRUSTED_PASSWORD_INFO
   TRUSTED_DOMAIN_INFORMATION_BASIC* = LSA_TRUST_INFORMATION
   PTRUSTED_DOMAIN_INFORMATION_BASIC* = PLSA_TRUST_INFORMATION
@@ -200,6 +226,7 @@
     TrustDirection*: ULONG
     TrustType*: ULONG
     TrustAttributes*: ULONG
+
   PTRUSTED_DOMAIN_INFORMATION_EX* = ptr TRUSTED_DOMAIN_INFORMATION_EX
   TRUSTED_DOMAIN_INFORMATION_EX2* {.pure.} = object
     Name*: LSA_UNICODE_STRING
@@ -210,12 +237,14 @@
     TrustAttributes*: ULONG
     ForestTrustLength*: ULONG
     ForestTrustInfo*: PUCHAR
+
   PTRUSTED_DOMAIN_INFORMATION_EX2* = ptr TRUSTED_DOMAIN_INFORMATION_EX2
   LSA_AUTH_INFORMATION* {.pure.} = object
     LastUpdateTime*: LARGE_INTEGER
     AuthType*: ULONG
     AuthInfoLength*: ULONG
     AuthInfo*: PUCHAR
+
   PLSA_AUTH_INFORMATION* = ptr LSA_AUTH_INFORMATION
   TRUSTED_DOMAIN_AUTH_INFORMATION* {.pure.} = object
     IncomingAuthInfos*: ULONG
@@ -224,57 +253,69 @@
     OutgoingAuthInfos*: ULONG
     OutgoingAuthenticationInformation*: PLSA_AUTH_INFORMATION
     OutgoingPreviousAuthenticationInformation*: PLSA_AUTH_INFORMATION
+
   PTRUSTED_DOMAIN_AUTH_INFORMATION* = ptr TRUSTED_DOMAIN_AUTH_INFORMATION
   TRUSTED_DOMAIN_FULL_INFORMATION* {.pure.} = object
     Information*: TRUSTED_DOMAIN_INFORMATION_EX
     PosixOffset*: TRUSTED_POSIX_OFFSET_INFO
     AuthInformation*: TRUSTED_DOMAIN_AUTH_INFORMATION
+
   PTRUSTED_DOMAIN_FULL_INFORMATION* = ptr TRUSTED_DOMAIN_FULL_INFORMATION
   TRUSTED_DOMAIN_FULL_INFORMATION2* {.pure.} = object
     Information*: TRUSTED_DOMAIN_INFORMATION_EX2
     PosixOffset*: TRUSTED_POSIX_OFFSET_INFO
     AuthInformation*: TRUSTED_DOMAIN_AUTH_INFORMATION
+
   PTRUSTED_DOMAIN_FULL_INFORMATION2* = ptr TRUSTED_DOMAIN_FULL_INFORMATION2
   LSA_FOREST_TRUST_DOMAIN_INFO* {.pure.} = object
     Sid*: PSID
     DnsName*: LSA_UNICODE_STRING
     NetbiosName*: LSA_UNICODE_STRING
+
   PLSA_FOREST_TRUST_DOMAIN_INFO* = ptr LSA_FOREST_TRUST_DOMAIN_INFO
   LSA_FOREST_TRUST_BINARY_DATA* {.pure.} = object
     Length*: ULONG
     Buffer*: PUCHAR
+
   PLSA_FOREST_TRUST_BINARY_DATA* = ptr LSA_FOREST_TRUST_BINARY_DATA
   LSA_FOREST_TRUST_RECORD_ForestTrustData* {.pure, union.} = object
     TopLevelName*: LSA_UNICODE_STRING
     DomainInfo*: LSA_FOREST_TRUST_DOMAIN_INFO
     Data*: LSA_FOREST_TRUST_BINARY_DATA
+
   LSA_FOREST_TRUST_RECORD* {.pure.} = object
     Flags*: ULONG
     ForestTrustType*: LSA_FOREST_TRUST_RECORD_TYPE
     Time*: LARGE_INTEGER
     ForestTrustData*: LSA_FOREST_TRUST_RECORD_ForestTrustData
+
   PLSA_FOREST_TRUST_RECORD* = ptr LSA_FOREST_TRUST_RECORD
   LSA_FOREST_TRUST_INFORMATION* {.pure.} = object
     RecordCount*: ULONG
     Entries*: ptr PLSA_FOREST_TRUST_RECORD
+
   PLSA_FOREST_TRUST_INFORMATION* = ptr LSA_FOREST_TRUST_INFORMATION
   LSA_FOREST_TRUST_COLLISION_RECORD* {.pure.} = object
     Index*: ULONG
     Type*: LSA_FOREST_TRUST_COLLISION_RECORD_TYPE
     Flags*: ULONG
     Name*: LSA_UNICODE_STRING
+
   PLSA_FOREST_TRUST_COLLISION_RECORD* = ptr LSA_FOREST_TRUST_COLLISION_RECORD
   LSA_FOREST_TRUST_COLLISION_INFORMATION* {.pure.} = object
     RecordCount*: ULONG
     Entries*: ptr PLSA_FOREST_TRUST_COLLISION_RECORD
+
   PLSA_FOREST_TRUST_COLLISION_INFORMATION* = ptr LSA_FOREST_TRUST_COLLISION_INFORMATION
   LSA_ENUMERATION_INFORMATION* {.pure.} = object
     Sid*: PSID
+
   PLSA_ENUMERATION_INFORMATION* = ptr LSA_ENUMERATION_INFORMATION
   LSA_LAST_INTER_LOGON_INFO* {.pure.} = object
     LastSuccessfulLogon*: LARGE_INTEGER
     LastFailedLogon*: LARGE_INTEGER
     FailedAttemptCountSinceLastSuccessfulLogon*: ULONG
+
   PLSA_LAST_INTER_LOGON_INFO* = ptr LSA_LAST_INTER_LOGON_INFO
   SECURITY_LOGON_SESSION_DATA* {.pure.} = object
     Size*: ULONG
@@ -300,30 +341,35 @@
     PasswordLastSet*: LARGE_INTEGER
     PasswordCanChange*: LARGE_INTEGER
     PasswordMustChange*: LARGE_INTEGER
+
   PSECURITY_LOGON_SESSION_DATA* = ptr SECURITY_LOGON_SESSION_DATA
-const
-  NEGOTIATE_MAX_PREFIX* = 32
+
+const NEGOTIATE_MAX_PREFIX* = 32
 type
   NEGOTIATE_PACKAGE_PREFIX* {.pure.} = object
     PackageId*: ULONG_PTR
     PackageDataA*: PVOID
     PackageDataW*: PVOID
     PrefixLen*: ULONG_PTR
-    Prefix*: array[NEGOTIATE_MAX_PREFIX , UCHAR]
+    Prefix*: array[NEGOTIATE_MAX_PREFIX, UCHAR]
+
   PNEGOTIATE_PACKAGE_PREFIX* = ptr NEGOTIATE_PACKAGE_PREFIX
   NEGOTIATE_PACKAGE_PREFIXES* {.pure.} = object
     MessageType*: ULONG
     PrefixCount*: ULONG
     Offset*: ULONG
     Pad*: ULONG
+
   PNEGOTIATE_PACKAGE_PREFIXES* = ptr NEGOTIATE_PACKAGE_PREFIXES
   NEGOTIATE_CALLER_NAME_REQUEST* {.pure.} = object
     MessageType*: ULONG
     LogonId*: LUID
+
   PNEGOTIATE_CALLER_NAME_REQUEST* = ptr NEGOTIATE_CALLER_NAME_REQUEST
   NEGOTIATE_CALLER_NAME_RESPONSE* {.pure.} = object
     MessageType*: ULONG
     CallerName*: PWSTR
+
   PNEGOTIATE_CALLER_NAME_RESPONSE* = ptr NEGOTIATE_CALLER_NAME_RESPONSE
   DOMAIN_PASSWORD_INFORMATION* {.pure.} = object
     MinPasswordLength*: USHORT
@@ -331,12 +377,14 @@
     PasswordProperties*: ULONG
     MaxPasswordAge*: LARGE_INTEGER
     MinPasswordAge*: LARGE_INTEGER
+
   PDOMAIN_PASSWORD_INFORMATION* = ptr DOMAIN_PASSWORD_INFORMATION
   TMSV1_0_INTERACTIVE_LOGON* {.pure.} = object
     MessageType*: MSV1_0_LOGON_SUBMIT_TYPE
     LogonDomainName*: UNICODE_STRING
     UserName*: UNICODE_STRING
     Password*: UNICODE_STRING
+
   PMSV1_0_INTERACTIVE_LOGON* = ptr TMSV1_0_INTERACTIVE_LOGON
   TMSV1_0_INTERACTIVE_PROFILE* {.pure.} = object
     MessageType*: MSV1_0_PROFILE_BUFFER_TYPE
@@ -355,9 +403,10 @@
     HomeDirectoryDrive*: UNICODE_STRING
     LogonServer*: UNICODE_STRING
     UserFlags*: ULONG
+
   PMSV1_0_INTERACTIVE_PROFILE* = ptr TMSV1_0_INTERACTIVE_PROFILE
-const
-  MSV1_0_CHALLENGE_LENGTH* = 8
+
+const MSV1_0_CHALLENGE_LENGTH* = 8
 type
   TMSV1_0_LM20_LOGON* {.pure.} = object
     MessageType*: MSV1_0_LOGON_SUBMIT_TYPE
@@ -368,6 +417,7 @@
     CaseSensitiveChallengeResponse*: STRING
     CaseInsensitiveChallengeResponse*: STRING
     ParameterControl*: ULONG
+
   PMSV1_0_LM20_LOGON* = ptr TMSV1_0_LM20_LOGON
   TMSV1_0_SUBAUTH_LOGON* {.pure.} = object
     MessageType*: MSV1_0_LOGON_SUBMIT_TYPE
@@ -379,7 +429,9 @@
     AuthenticationInfo2*: STRING
     ParameterControl*: ULONG
     SubAuthPackageId*: ULONG
+
   PMSV1_0_SUBAUTH_LOGON* = ptr TMSV1_0_SUBAUTH_LOGON
+
 const
   MSV1_0_USER_SESSION_KEY_LENGTH* = 16
   MSV1_0_LANMAN_SESSION_KEY_LENGTH* = 8
@@ -394,18 +446,20 @@
     LanmanSessionKey*: array[MSV1_0_LANMAN_SESSION_KEY_LENGTH, UCHAR]
     LogonServer*: UNICODE_STRING
     UserParameters*: UNICODE_STRING
+
   PMSV1_0_LM20_LOGON_PROFILE* = ptr TMSV1_0_LM20_LOGON_PROFILE
-const
-  MSV1_0_OWF_PASSWORD_LENGTH* = 16
+
+const MSV1_0_OWF_PASSWORD_LENGTH* = 16
 type
   MSV1_0_SUPPLEMENTAL_CREDENTIAL* {.pure.} = object
     Version*: ULONG
     Flags*: ULONG
     LmPassword*: array[MSV1_0_OWF_PASSWORD_LENGTH, UCHAR]
     NtPassword*: array[MSV1_0_OWF_PASSWORD_LENGTH, UCHAR]
+
   PMSV1_0_SUPPLEMENTAL_CREDENTIAL* = ptr MSV1_0_SUPPLEMENTAL_CREDENTIAL
-const
-  MSV1_0_NTLM3_RESPONSE_LENGTH* = 16
+
+const MSV1_0_NTLM3_RESPONSE_LENGTH* = 16
 type
   MSV1_0_NTLM3_RESPONSE* {.pure.} = object
     Response*: array[MSV1_0_NTLM3_RESPONSE_LENGTH, UCHAR]
@@ -417,10 +471,12 @@
     ChallengeFromClient*: array[MSV1_0_CHALLENGE_LENGTH, UCHAR]
     AvPairsOff*: ULONG
     Buffer*: array[1, UCHAR]
+
   PMSV1_0_NTLM3_RESPONSE* = ptr MSV1_0_NTLM3_RESPONSE
   MSV1_0_AV_PAIR* {.pure.} = object
     AvId*: USHORT
     AvLen*: USHORT
+
   PMSV1_0_AV_PAIR* = ptr MSV1_0_AV_PAIR
   MSV1_0_CHANGEPASSWORD_REQUEST* {.pure.} = object
     MessageType*: MSV1_0_PROTOCOL_MESSAGE_TYPE
@@ -429,11 +485,13 @@
     OldPassword*: UNICODE_STRING
     NewPassword*: UNICODE_STRING
     Impersonating*: BOOLEAN
+
   PMSV1_0_CHANGEPASSWORD_REQUEST* = ptr MSV1_0_CHANGEPASSWORD_REQUEST
   MSV1_0_CHANGEPASSWORD_RESPONSE* {.pure.} = object
     MessageType*: MSV1_0_PROTOCOL_MESSAGE_TYPE
     PasswordInfoValid*: BOOLEAN
     DomainPasswordInfo*: DOMAIN_PASSWORD_INFORMATION
+
   PMSV1_0_CHANGEPASSWORD_RESPONSE* = ptr MSV1_0_CHANGEPASSWORD_RESPONSE
   MSV1_0_PASSTHROUGH_REQUEST* {.pure.} = object
     MessageType*: MSV1_0_PROTOCOL_MESSAGE_TYPE
@@ -442,43 +500,51 @@
     DataLength*: ULONG
     LogonData*: PUCHAR
     Pad*: ULONG
+
   PMSV1_0_PASSTHROUGH_REQUEST* = ptr MSV1_0_PASSTHROUGH_REQUEST
   MSV1_0_PASSTHROUGH_RESPONSE* {.pure.} = object
     MessageType*: MSV1_0_PROTOCOL_MESSAGE_TYPE
     Pad*: ULONG
     DataLength*: ULONG
     ValidationData*: PUCHAR
+
   PMSV1_0_PASSTHROUGH_RESPONSE* = ptr MSV1_0_PASSTHROUGH_RESPONSE
   MSV1_0_SUBAUTH_REQUEST* {.pure.} = object
     MessageType*: MSV1_0_PROTOCOL_MESSAGE_TYPE
     SubAuthPackageId*: ULONG
     SubAuthInfoLength*: ULONG
     SubAuthSubmitBuffer*: PUCHAR
+
   PMSV1_0_SUBAUTH_REQUEST* = ptr MSV1_0_SUBAUTH_REQUEST
   MSV1_0_SUBAUTH_RESPONSE* {.pure.} = object
     MessageType*: MSV1_0_PROTOCOL_MESSAGE_TYPE
     SubAuthInfoLength*: ULONG
     SubAuthReturnBuffer*: PUCHAR
+
   PMSV1_0_SUBAUTH_RESPONSE* = ptr MSV1_0_SUBAUTH_RESPONSE
   KERB_INTERACTIVE_LOGON* {.pure.} = object
     MessageType*: KERB_LOGON_SUBMIT_TYPE
     LogonDomainName*: UNICODE_STRING
     UserName*: UNICODE_STRING
     Password*: UNICODE_STRING
+
   PKERB_INTERACTIVE_LOGON* = ptr KERB_INTERACTIVE_LOGON
   KERB_INTERACTIVE_UNLOCK_LOGON* {.pure.} = object
     Logon*: KERB_INTERACTIVE_LOGON
     LogonId*: LUID
+
   PKERB_INTERACTIVE_UNLOCK_LOGON* = ptr KERB_INTERACTIVE_UNLOCK_LOGON
   KERB_SMART_CARD_LOGON* {.pure.} = object
     MessageType*: KERB_LOGON_SUBMIT_TYPE
     Pin*: UNICODE_STRING
     CspDataLength*: ULONG
     CspData*: PUCHAR
+
   PKERB_SMART_CARD_LOGON* = ptr KERB_SMART_CARD_LOGON
   KERB_SMART_CARD_UNLOCK_LOGON* {.pure.} = object
     Logon*: KERB_SMART_CARD_LOGON
     LogonId*: LUID
+
   PKERB_SMART_CARD_UNLOCK_LOGON* = ptr KERB_SMART_CARD_UNLOCK_LOGON
   KERB_TICKET_LOGON* {.pure.} = object
     MessageType*: KERB_LOGON_SUBMIT_TYPE
@@ -487,16 +553,19 @@
     TicketGrantingTicketLength*: ULONG
     ServiceTicket*: PUCHAR
     TicketGrantingTicket*: PUCHAR
+
   PKERB_TICKET_LOGON* = ptr KERB_TICKET_LOGON
   KERB_TICKET_UNLOCK_LOGON* {.pure.} = object
     Logon*: KERB_TICKET_LOGON
     LogonId*: LUID
+
   PKERB_TICKET_UNLOCK_LOGON* = ptr KERB_TICKET_UNLOCK_LOGON
   KERB_S4U_LOGON* {.pure.} = object
     MessageType*: KERB_LOGON_SUBMIT_TYPE
     Flags*: ULONG
     ClientUpn*: UNICODE_STRING
     ClientRealm*: UNICODE_STRING
+
   PKERB_S4U_LOGON* = ptr KERB_S4U_LOGON
   KERB_INTERACTIVE_PROFILE* {.pure.} = object
     MessageType*: KERB_PROFILE_BUFFER_TYPE
@@ -515,24 +584,29 @@
     HomeDirectoryDrive*: UNICODE_STRING
     LogonServer*: UNICODE_STRING
     UserFlags*: ULONG
+
   PKERB_INTERACTIVE_PROFILE* = ptr KERB_INTERACTIVE_PROFILE
   KERB_SMART_CARD_PROFILE* {.pure.} = object
     Profile*: KERB_INTERACTIVE_PROFILE
     CertificateSize*: ULONG
     CertificateData*: PUCHAR
+
   PKERB_SMART_CARD_PROFILE* = ptr KERB_SMART_CARD_PROFILE
   KERB_CRYPTO_KEY* {.pure.} = object
     KeyType*: LONG
     Length*: ULONG
     Value*: PUCHAR
+
   PKERB_CRYPTO_KEY* = ptr KERB_CRYPTO_KEY
   KERB_TICKET_PROFILE* {.pure.} = object
     Profile*: KERB_INTERACTIVE_PROFILE
     SessionKey*: KERB_CRYPTO_KEY
+
   PKERB_TICKET_PROFILE* = ptr KERB_TICKET_PROFILE
   KERB_QUERY_TKT_CACHE_REQUEST* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
     LogonId*: LUID
+
   PKERB_QUERY_TKT_CACHE_REQUEST* = ptr KERB_QUERY_TKT_CACHE_REQUEST
   KERB_TICKET_CACHE_INFO* {.pure.} = object
     ServerName*: UNICODE_STRING
@@ -542,6 +616,7 @@
     RenewTime*: LARGE_INTEGER
     EncryptionType*: LONG
     TicketFlags*: ULONG
+
   PKERB_TICKET_CACHE_INFO* = ptr KERB_TICKET_CACHE_INFO
   KERB_TICKET_CACHE_INFO_EX* {.pure.} = object
     ClientName*: UNICODE_STRING
@@ -553,6 +628,7 @@
     RenewTime*: LARGE_INTEGER
     EncryptionType*: LONG
     TicketFlags*: ULONG
+
   PKERB_TICKET_CACHE_INFO_EX* = ptr KERB_TICKET_CACHE_INFO_EX
   KERB_TICKET_CACHE_INFO_EX2* {.pure.} = object
     ClientName*: UNICODE_STRING
@@ -565,44 +641,53 @@
     EncryptionType*: LONG
     TicketFlags*: ULONG
     SessionKeyType*: ULONG
+
   PKERB_TICKET_CACHE_INFO_EX2* = ptr KERB_TICKET_CACHE_INFO_EX2
   KERB_QUERY_TKT_CACHE_RESPONSE* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
     CountOfTickets*: ULONG
     Tickets*: array[ANYSIZE_ARRAY, KERB_TICKET_CACHE_INFO]
+
   PKERB_QUERY_TKT_CACHE_RESPONSE* = ptr KERB_QUERY_TKT_CACHE_RESPONSE
   KERB_QUERY_TKT_CACHE_EX_RESPONSE* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
     CountOfTickets*: ULONG
     Tickets*: array[ANYSIZE_ARRAY, KERB_TICKET_CACHE_INFO_EX]
+
   PKERB_QUERY_TKT_CACHE_EX_RESPONSE* = ptr KERB_QUERY_TKT_CACHE_EX_RESPONSE
   KERB_QUERY_TKT_CACHE_EX2_RESPONSE* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
     CountOfTickets*: ULONG
     Tickets*: array[ANYSIZE_ARRAY, KERB_TICKET_CACHE_INFO_EX2]
+
   PKERB_QUERY_TKT_CACHE_EX2_RESPONSE* = ptr KERB_QUERY_TKT_CACHE_EX2_RESPONSE
   SecHandle* {.pure.} = object
     dwLower*: ULONG_PTR
     dwUpper*: ULONG_PTR
+
   PSecHandle* = ptr SecHandle
   KERB_AUTH_DATA* {.pure.} = object
     Type*: ULONG
     Length*: ULONG
     Data*: PUCHAR
+
   PKERB_AUTH_DATA* = ptr KERB_AUTH_DATA
   KERB_NET_ADDRESS* {.pure.} = object
     Family*: ULONG
     Length*: ULONG
     Address*: PCHAR
+
   PKERB_NET_ADDRESS* = ptr KERB_NET_ADDRESS
   KERB_NET_ADDRESSES* {.pure.} = object
     Number*: ULONG
     Addresses*: array[ANYSIZE_ARRAY, KERB_NET_ADDRESS]
+
   PKERB_NET_ADDRESSES* = ptr KERB_NET_ADDRESSES
   KERB_EXTERNAL_NAME* {.pure.} = object
     NameType*: SHORT
     NameCount*: USHORT
     Names*: array[ANYSIZE_ARRAY, UNICODE_STRING]
+
   PKERB_EXTERNAL_NAME* = ptr KERB_EXTERNAL_NAME
   KERB_EXTERNAL_TICKET* {.pure.} = object
     ServiceName*: PKERB_EXTERNAL_NAME
@@ -621,6 +706,7 @@
     TimeSkew*: LARGE_INTEGER
     EncodedTicketSize*: ULONG
     EncodedTicket*: PUCHAR
+
   PKERB_EXTERNAL_TICKET* = ptr KERB_EXTERNAL_TICKET
   KERB_RETRIEVE_TKT_REQUEST* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
@@ -630,21 +716,25 @@
     CacheOptions*: ULONG
     EncryptionType*: LONG
     CredentialsHandle*: SecHandle
+
   PKERB_RETRIEVE_TKT_REQUEST* = ptr KERB_RETRIEVE_TKT_REQUEST
   KERB_RETRIEVE_TKT_RESPONSE* {.pure.} = object
     Ticket*: KERB_EXTERNAL_TICKET
+
   PKERB_RETRIEVE_TKT_RESPONSE* = ptr KERB_RETRIEVE_TKT_RESPONSE
   KERB_PURGE_TKT_CACHE_REQUEST* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
     LogonId*: LUID
     ServerName*: UNICODE_STRING
     RealmName*: UNICODE_STRING
+
   PKERB_PURGE_TKT_CACHE_REQUEST* = ptr KERB_PURGE_TKT_CACHE_REQUEST
   KERB_PURGE_TKT_CACHE_EX_REQUEST* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
     LogonId*: LUID
     Flags*: ULONG
     TicketTemplate*: KERB_TICKET_CACHE_INFO_EX
+
   PKERB_PURGE_TKT_CACHE_EX_REQUEST* = ptr KERB_PURGE_TKT_CACHE_EX_REQUEST
   KERB_CHANGEPASSWORD_REQUEST* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
@@ -653,6 +743,7 @@
     OldPassword*: UNICODE_STRING
     NewPassword*: UNICODE_STRING
     Impersonating*: BOOLEAN
+
   PKERB_CHANGEPASSWORD_REQUEST* = ptr KERB_CHANGEPASSWORD_REQUEST
   KERB_SETPASSWORD_REQUEST* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
@@ -662,6 +753,7 @@
     DomainName*: UNICODE_STRING
     AccountName*: UNICODE_STRING
     Password*: UNICODE_STRING
+
   PKERB_SETPASSWORD_REQUEST* = ptr KERB_SETPASSWORD_REQUEST
   KERB_SETPASSWORD_EX_REQUEST* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
@@ -676,6 +768,7 @@
     Impersonating*: BOOLEAN
     KdcAddress*: UNICODE_STRING
     KdcAddressType*: ULONG
+
   PKERB_SETPASSWORD_EX_REQUEST* = ptr KERB_SETPASSWORD_EX_REQUEST
   KERB_DECRYPT_REQUEST* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
@@ -688,21 +781,25 @@
     InitialVectorSize*: ULONG
     InitialVector*: PUCHAR
     EncryptedData*: PUCHAR
+
   PKERB_DECRYPT_REQUEST* = ptr KERB_DECRYPT_REQUEST
   KERB_DECRYPT_RESPONSE* {.pure.} = object
     DecryptedData*: array[ANYSIZE_ARRAY, UCHAR]
+
   PKERB_DECRYPT_RESPONSE* = ptr KERB_DECRYPT_RESPONSE
   KERB_ADD_BINDING_CACHE_ENTRY_REQUEST* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
     RealmName*: UNICODE_STRING
     KdcAddress*: UNICODE_STRING
     AddressType*: ULONG
+
   PKERB_ADD_BINDING_CACHE_ENTRY_REQUEST* = ptr KERB_ADD_BINDING_CACHE_ENTRY_REQUEST
   KERB_REFRESH_SCCRED_REQUEST* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
     CredentialBlob*: UNICODE_STRING
     LogonId*: LUID
     Flags*: ULONG
+
   PKERB_REFRESH_SCCRED_REQUEST* = ptr KERB_REFRESH_SCCRED_REQUEST
   KERB_ADD_CREDENTIALS_REQUEST* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
@@ -711,22 +808,26 @@
     Password*: UNICODE_STRING
     LogonId*: LUID
     Flags*: ULONG
+
   PKERB_ADD_CREDENTIALS_REQUEST* = ptr KERB_ADD_CREDENTIALS_REQUEST
   KERB_TRANSFER_CRED_REQUEST* {.pure.} = object
     MessageType*: KERB_PROTOCOL_MESSAGE_TYPE
     OriginLogonId*: LUID
     DestinationLogonId*: LUID
     Flags*: ULONG
+
   PKERB_TRANSFER_CRED_REQUEST* = ptr KERB_TRANSFER_CRED_REQUEST
   AUDIT_POLICY_INFORMATION* {.pure.} = object
     AuditSubCategoryGuid*: GUID
     AuditingInformation*: ULONG
     AuditCategoryGuid*: GUID
+
   PAUDIT_POLICY_INFORMATION* = ptr AUDIT_POLICY_INFORMATION
   PCAUDIT_POLICY_INFORMATION* = ptr AUDIT_POLICY_INFORMATION
   POLICY_AUDIT_SID_ARRAY* {.pure.} = object
     UsersCount*: ULONG
     UserSidArray*: ptr PSID
+
   PPOLICY_AUDIT_SID_ARRAY* = ptr POLICY_AUDIT_SID_ARRAY
   KERB_CERTIFICATE_LOGON* {.pure.} = object
     MessageType*: KERB_LOGON_SUBMIT_TYPE
@@ -736,14 +837,17 @@
     Flags*: ULONG
     CspDataLength*: ULONG
     CspData*: PUCHAR
+
   PKERB_CERTIFICATE_LOGON* = ptr KERB_CERTIFICATE_LOGON
   KERB_CERTIFICATE_UNLOCK_LOGON* {.pure.} = object
     Logon*: KERB_CERTIFICATE_LOGON
     LogonId*: LUID
+
   PKERB_CERTIFICATE_UNLOCK_LOGON* = ptr KERB_CERTIFICATE_UNLOCK_LOGON
   KERB_SMARTCARD_CSP_INFO_UNION1* {.pure, union.} = object
     ContextInformation*: PVOID
     SpaceHolderForWow64*: ULONG64
+
   KERB_SMARTCARD_CSP_INFO* {.pure.} = object
     dwCspInfoLen*: DWORD
     MessageType*: DWORD
@@ -755,6 +859,7 @@
     nContainerNameOffset*: ULONG
     nCSPNameOffset*: ULONG
     bBuffer*: TCHAR
+
   PKERB_SMARTCARD_CSP_INFO* = ptr KERB_SMARTCARD_CSP_INFO
   CredHandle* = SecHandle
   PCredHandle* = PSecHandle
@@ -772,6 +877,7 @@
     cbMaxToken*: int32
     Name*: ptr SEC_WCHAR
     Comment*: ptr SEC_WCHAR
+
   PSecPkgInfoW* = ptr SecPkgInfoW
   SecPkgInfoA* {.pure.} = object
     fCapabilities*: int32
@@ -780,22 +886,26 @@
     cbMaxToken*: int32
     Name*: ptr SEC_CHAR
     Comment*: ptr SEC_CHAR
+
   PSecPkgInfoA* = ptr SecPkgInfoA
   SecBuffer* {.pure.} = object
     cbBuffer*: int32
     BufferType*: int32
     pvBuffer*: pointer
+
   PSecBuffer* = ptr SecBuffer
   SecBufferDesc* {.pure.} = object
     ulVersion*: int32
     cBuffers*: int32
     pBuffers*: PSecBuffer
+
   PSecBufferDesc* = ptr SecBufferDesc
   SEC_NEGOTIATION_INFO* {.pure.} = object
     Size*: int32
     NameLength*: int32
     Name*: ptr SEC_WCHAR
     Reserved*: pointer
+
   PSEC_NEGOTIATION_INFO* = ptr SEC_NEGOTIATION_INFO
   SEC_CHANNEL_BINDINGS* {.pure.} = object
     dwInitiatorAddrType*: int32
@@ -806,28 +916,34 @@
     dwAcceptorOffset*: int32
     cbApplicationDataLength*: int32
     dwApplicationDataOffset*: int32
+
   PSEC_CHANNEL_BINDINGS* = ptr SEC_CHANNEL_BINDINGS
   SecPkgCredentials_NamesW* {.pure.} = object
     sUserName*: ptr SEC_WCHAR
+
   PSecPkgCredentials_NamesW* = ptr SecPkgCredentials_NamesW
   SecPkgCredentials_NamesA* {.pure.} = object
     sUserName*: ptr SEC_CHAR
+
   PSecPkgCredentials_NamesA* = ptr SecPkgCredentials_NamesA
   SecPkgCredentials_SSIProviderW* {.pure.} = object
     sProviderName*: ptr SEC_WCHAR
     ProviderInfoLength*: int32
     ProviderInfo*: ptr char
+
   PSecPkgCredentials_SSIProviderW* = ptr SecPkgCredentials_SSIProviderW
   SecPkgCredentials_SSIProviderA* {.pure.} = object
     sProviderName*: ptr SEC_CHAR
     ProviderInfoLength*: int32
     ProviderInfo*: ptr char
+
   PSecPkgCredentials_SSIProviderA* = ptr SecPkgCredentials_SSIProviderA
   SecPkgContext_Sizes* {.pure.} = object
     cbMaxToken*: int32
     cbMaxSignature*: int32
     cbBlockSize*: int32
     cbSecurityTrailer*: int32
+
   PSecPkgContext_Sizes* = ptr SecPkgContext_Sizes
   SecPkgContext_StreamSizes* {.pure.} = object
     cbHeader*: int32
@@ -835,20 +951,25 @@
     cbMaximumMessage*: int32
     cBuffers*: int32
     cbBlockSize*: int32
+
   PSecPkgContext_StreamSizes* = ptr SecPkgContext_StreamSizes
   SecPkgContext_NamesW* {.pure.} = object
     sUserName*: ptr SEC_WCHAR
+
   PSecPkgContext_NamesW* = ptr SecPkgContext_NamesW
   SecPkgContext_NamesA* {.pure.} = object
     sUserName*: ptr SEC_CHAR
+
   PSecPkgContext_NamesA* = ptr SecPkgContext_NamesA
   SecPkgContext_Lifespan* {.pure.} = object
     tsStart*: TimeStamp
     tsExpiry*: TimeStamp
+
   PSecPkgContext_Lifespan* = ptr SecPkgContext_Lifespan
   SecPkgContext_DceInfo* {.pure.} = object
     AuthzSvc*: int32
     pPac*: pointer
+
   PSecPkgContext_DceInfo* = ptr SecPkgContext_DceInfo
   SecPkgContext_KeyInfoA* {.pure.} = object
     sSignatureAlgorithmName*: ptr SEC_CHAR
@@ -856,6 +977,7 @@
     KeySize*: int32
     SignatureAlgorithm*: int32
     EncryptAlgorithm*: int32
+
   PSecPkgContext_KeyInfoA* = ptr SecPkgContext_KeyInfoA
   SecPkgContext_KeyInfoW* {.pure.} = object
     sSignatureAlgorithmName*: ptr SEC_WCHAR
@@ -863,109 +985,202 @@
     KeySize*: int32
     SignatureAlgorithm*: int32
     EncryptAlgorithm*: int32
+
   PSecPkgContext_KeyInfoW* = ptr SecPkgContext_KeyInfoW
   SecPkgContext_AuthorityA* {.pure.} = object
     sAuthorityName*: ptr SEC_CHAR
+
   PSecPkgContext_AuthorityA* = ptr SecPkgContext_AuthorityA
   SecPkgContext_AuthorityW* {.pure.} = object
     sAuthorityName*: ptr SEC_WCHAR
+
   PSecPkgContext_AuthorityW* = ptr SecPkgContext_AuthorityW
   SecPkgContext_ProtoInfoA* {.pure.} = object
     sProtocolName*: ptr SEC_CHAR
     majorVersion*: int32
     minorVersion*: int32
+
   PSecPkgContext_ProtoInfoA* = ptr SecPkgContext_ProtoInfoA
   SecPkgContext_ProtoInfoW* {.pure.} = object
     sProtocolName*: ptr SEC_WCHAR
     majorVersion*: int32
     minorVersion*: int32
+
   PSecPkgContext_ProtoInfoW* = ptr SecPkgContext_ProtoInfoW
   SecPkgContext_PasswordExpiry* {.pure.} = object
     tsPasswordExpires*: TimeStamp
+
   PSecPkgContext_PasswordExpiry* = ptr SecPkgContext_PasswordExpiry
   SecPkgContext_LogoffTime* {.pure.} = object
     tsLogoffTime*: TimeStamp
+
   PSecPkgContext_LogoffTime* = ptr SecPkgContext_LogoffTime
   SecPkgContext_SessionKey* {.pure.} = object
     SessionKeyLength*: int32
     SessionKey*: ptr uint8
+
   PSecPkgContext_SessionKey* = ptr SecPkgContext_SessionKey
   SecPkgContext_PackageInfoW* {.pure.} = object
     PackageInfo*: PSecPkgInfoW
+
   PSecPkgContext_PackageInfoW* = ptr SecPkgContext_PackageInfoW
   SecPkgContext_PackageInfoA* {.pure.} = object
     PackageInfo*: PSecPkgInfoA
+
   PSecPkgContext_PackageInfoA* = ptr SecPkgContext_PackageInfoA
   SecPkgContext_UserFlags* {.pure.} = object
     UserFlags*: int32
+
   PSecPkgContext_UserFlags* = ptr SecPkgContext_UserFlags
   SecPkgContext_Flags* {.pure.} = object
     Flags*: int32
+
   PSecPkgContext_Flags* = ptr SecPkgContext_Flags
   SecPkgContext_NegotiationInfoA* {.pure.} = object
     PackageInfo*: PSecPkgInfoA
     NegotiationState*: int32
+
   PSecPkgContext_NegotiationInfoA* = ptr SecPkgContext_NegotiationInfoA
   SecPkgContext_NegotiationInfoW* {.pure.} = object
     PackageInfo*: PSecPkgInfoW
     NegotiationState*: int32
+
   PSecPkgContext_NegotiationInfoW* = ptr SecPkgContext_NegotiationInfoW
   SecPkgContext_NativeNamesW* {.pure.} = object
     sClientName*: ptr SEC_WCHAR
     sServerName*: ptr SEC_WCHAR
+
   PSecPkgContext_NativeNamesW* = ptr SecPkgContext_NativeNamesW
   SecPkgContext_NativeNamesA* {.pure.} = object
     sClientName*: ptr SEC_CHAR
     sServerName*: ptr SEC_CHAR
+
   PSecPkgContext_NativeNamesA* = ptr SecPkgContext_NativeNamesA
   SecPkgContext_CredentialNameW* {.pure.} = object
     CredentialType*: int32
     sCredentialName*: ptr SEC_WCHAR
+
   PSecPkgContext_CredentialNameW* = ptr SecPkgContext_CredentialNameW
   SecPkgContext_CredentialNameA* {.pure.} = object
     CredentialType*: int32
     sCredentialName*: ptr SEC_CHAR
+
   PSecPkgContext_CredentialNameA* = ptr SecPkgContext_CredentialNameA
   SecPkgContext_AccessToken* {.pure.} = object
     AccessToken*: pointer
+
   PSecPkgContext_AccessToken* = ptr SecPkgContext_AccessToken
   SecPkgContext_TargetInformation* {.pure.} = object
     MarshalledTargetInfoLength*: int32
     MarshalledTargetInfo*: ptr uint8
+
   PSecPkgContext_TargetInformation* = ptr SecPkgContext_TargetInformation
   SecPkgContext_AuthzID* {.pure.} = object
     AuthzIDLength*: int32
     AuthzID*: ptr char
+
   PSecPkgContext_AuthzID* = ptr SecPkgContext_AuthzID
   SecPkgContext_Target* {.pure.} = object
     TargetLength*: int32
     Target*: ptr char
+
   PSecPkgContext_Target* = ptr SecPkgContext_Target
-  ENUMERATE_SECURITY_PACKAGES_FN_W* = proc (P1: ptr int32, P2: ptr PSecPkgInfoW): SECURITY_STATUS {.stdcall.}
-  QUERY_CREDENTIALS_ATTRIBUTES_FN_W* = proc (P1: PCredHandle, P2: int32, P3: pointer): SECURITY_STATUS {.stdcall.}
-  SEC_GET_KEY_FN* = proc (Arg: pointer, Principal: pointer, KeyVer: int32, Key: ptr pointer, Status: ptr SECURITY_STATUS): void {.stdcall.}
-  ACQUIRE_CREDENTIALS_HANDLE_FN_W* = proc (P1: ptr SEC_WCHAR, P2: ptr SEC_WCHAR, P3: int32, P4: pointer, P5: pointer, P6: SEC_GET_KEY_FN, P7: pointer, P8: PCredHandle, P9: PTimeStamp): SECURITY_STATUS {.stdcall.}
-  FREE_CREDENTIALS_HANDLE_FN* = proc (P1: PCredHandle): SECURITY_STATUS {.stdcall.}
-  INITIALIZE_SECURITY_CONTEXT_FN_W* = proc (P1: PCredHandle, P2: PCtxtHandle, P3: ptr SEC_WCHAR, P4: int32, P5: int32, P6: int32, P7: PSecBufferDesc, P8: int32, P9: PCtxtHandle, P10: PSecBufferDesc, P11: ptr int32, P12: PTimeStamp): SECURITY_STATUS {.stdcall.}
-  ACCEPT_SECURITY_CONTEXT_FN* = proc (P1: PCredHandle, P2: PCtxtHandle, P3: PSecBufferDesc, P4: int32, P5: int32, P6: PCtxtHandle, P7: PSecBufferDesc, P8: ptr int32, P9: PTimeStamp): SECURITY_STATUS {.stdcall.}
-  COMPLETE_AUTH_TOKEN_FN* = proc (P1: PCtxtHandle, P2: PSecBufferDesc): SECURITY_STATUS {.stdcall.}
-  DELETE_SECURITY_CONTEXT_FN* = proc (P1: PCtxtHandle): SECURITY_STATUS {.stdcall.}
-  APPLY_CONTROL_TOKEN_FN* = proc (P1: PCtxtHandle, P2: PSecBufferDesc): SECURITY_STATUS {.stdcall.}
-  QUERY_CONTEXT_ATTRIBUTES_FN_W* = proc (P1: PCtxtHandle, P2: int32, P3: pointer): SECURITY_STATUS {.stdcall.}
-  IMPERSONATE_SECURITY_CONTEXT_FN* = proc (P1: PCtxtHandle): SECURITY_STATUS {.stdcall.}
-  REVERT_SECURITY_CONTEXT_FN* = proc (P1: PCtxtHandle): SECURITY_STATUS {.stdcall.}
-  MAKE_SIGNATURE_FN* = proc (P1: PCtxtHandle, P2: int32, P3: PSecBufferDesc, P4: int32): SECURITY_STATUS {.stdcall.}
-  VERIFY_SIGNATURE_FN* = proc (P1: PCtxtHandle, P2: PSecBufferDesc, P3: int32, P4: ptr int32): SECURITY_STATUS {.stdcall.}
-  FREE_CONTEXT_BUFFER_FN* = proc (P1: pointer): SECURITY_STATUS {.stdcall.}
-  QUERY_SECURITY_PACKAGE_INFO_FN_W* = proc (P1: ptr SEC_WCHAR, P2: ptr PSecPkgInfoW): SECURITY_STATUS {.stdcall.}
-  EXPORT_SECURITY_CONTEXT_FN* = proc (P1: PCtxtHandle, P2: ULONG, P3: PSecBuffer, P4: ptr pointer): SECURITY_STATUS {.stdcall.}
-  IMPORT_SECURITY_CONTEXT_FN_W* = proc (P1: ptr SEC_WCHAR, P2: PSecBuffer, P3: pointer, P4: PCtxtHandle): SECURITY_STATUS {.stdcall.}
-  ADD_CREDENTIALS_FN_W* = proc (P1: PCredHandle, P2: ptr SEC_WCHAR, P3: ptr SEC_WCHAR, P4: int32, P5: pointer, P6: SEC_GET_KEY_FN, P7: pointer, P8: PTimeStamp): SECURITY_STATUS {.stdcall.}
-  QUERY_SECURITY_CONTEXT_TOKEN_FN* = proc (P1: PCtxtHandle, P2: ptr HANDLE): SECURITY_STATUS {.stdcall.}
-  ENCRYPT_MESSAGE_FN* = proc (P1: PCtxtHandle, P2: int32, P3: PSecBufferDesc, P4: int32): SECURITY_STATUS {.stdcall.}
-  DECRYPT_MESSAGE_FN* = proc (P1: PCtxtHandle, P2: PSecBufferDesc, P3: int32, P4: ptr int32): SECURITY_STATUS {.stdcall.}
-  SET_CONTEXT_ATTRIBUTES_FN_W* = proc (P1: PCtxtHandle, P2: int32, P3: pointer, P4: int32): SECURITY_STATUS {.stdcall.}
-  SET_CREDENTIALS_ATTRIBUTES_FN_W* = proc (P1: PCredHandle, P2: int32, P3: pointer, P4: int32): SECURITY_STATUS {.stdcall.}
+  ENUMERATE_SECURITY_PACKAGES_FN_W* =
+    proc(P1: ptr int32, P2: ptr PSecPkgInfoW): SECURITY_STATUS {.stdcall.}
+  QUERY_CREDENTIALS_ATTRIBUTES_FN_W* =
+    proc(P1: PCredHandle, P2: int32, P3: pointer): SECURITY_STATUS {.stdcall.}
+  SEC_GET_KEY_FN* = proc(
+    Arg: pointer,
+    Principal: pointer,
+    KeyVer: int32,
+    Key: ptr pointer,
+    Status: ptr SECURITY_STATUS,
+  ): void {.stdcall.}
+  ACQUIRE_CREDENTIALS_HANDLE_FN_W* = proc(
+    P1: ptr SEC_WCHAR,
+    P2: ptr SEC_WCHAR,
+    P3: int32,
+    P4: pointer,
+    P5: pointer,
+    P6: SEC_GET_KEY_FN,
+    P7: pointer,
+    P8: PCredHandle,
+    P9: PTimeStamp,
+  ): SECURITY_STATUS {.stdcall.}
+  FREE_CREDENTIALS_HANDLE_FN* = proc(P1: PCredHandle): SECURITY_STATUS {.stdcall.}
+  INITIALIZE_SECURITY_CONTEXT_FN_W* = proc(
+    P1: PCredHandle,
+    P2: PCtxtHandle,
+    P3: ptr SEC_WCHAR,
+    P4: int32,
+    P5: int32,
+    P6: int32,
+    P7: PSecBufferDesc,
+    P8: int32,
+    P9: PCtxtHandle,
+    P10: PSecBufferDesc,
+    P11: ptr int32,
+    P12: PTimeStamp,
+  ): SECURITY_STATUS {.stdcall.}
+  ACCEPT_SECURITY_CONTEXT_FN* = proc(
+    P1: PCredHandle,
+    P2: PCtxtHandle,
+    P3: PSecBufferDesc,
+    P4: int32,
+    P5: int32,
+    P6: PCtxtHandle,
+    P7: PSecBufferDesc,
+    P8: ptr int32,
+    P9: PTimeStamp,
+  ): SECURITY_STATUS {.stdcall.}
+  COMPLETE_AUTH_TOKEN_FN* =
+    proc(P1: PCtxtHandle, P2: PSecBufferDesc): SECURITY_STATUS {.stdcall.}
+  DELETE_SECURITY_CONTEXT_FN* = proc(P1: PCtxtHandle): SECURITY_STATUS {.stdcall.}
+  APPLY_CONTROL_TOKEN_FN* =
+    proc(P1: PCtxtHandle, P2: PSecBufferDesc): SECURITY_STATUS {.stdcall.}
+  QUERY_CONTEXT_ATTRIBUTES_FN_W* =
+    proc(P1: PCtxtHandle, P2: int32, P3: pointer): SECURITY_STATUS {.stdcall.}
+  IMPERSONATE_SECURITY_CONTEXT_FN* = proc(P1: PCtxtHandle): SECURITY_STATUS {.stdcall.}
+  REVERT_SECURITY_CONTEXT_FN* = proc(P1: PCtxtHandle): SECURITY_STATUS {.stdcall.}
+  MAKE_SIGNATURE_FN* = proc(
+    P1: PCtxtHandle, P2: int32, P3: PSecBufferDesc, P4: int32
+  ): SECURITY_STATUS {.stdcall.}
+  VERIFY_SIGNATURE_FN* = proc(
+    P1: PCtxtHandle, P2: PSecBufferDesc, P3: int32, P4: ptr int32
+  ): SECURITY_STATUS {.stdcall.}
+  FREE_CONTEXT_BUFFER_FN* = proc(P1: pointer): SECURITY_STATUS {.stdcall.}
+  QUERY_SECURITY_PACKAGE_INFO_FN_W* =
+    proc(P1: ptr SEC_WCHAR, P2: ptr PSecPkgInfoW): SECURITY_STATUS {.stdcall.}
+  EXPORT_SECURITY_CONTEXT_FN* = proc(
+    P1: PCtxtHandle, P2: ULONG, P3: PSecBuffer, P4: ptr pointer
+  ): SECURITY_STATUS {.stdcall.}
+  IMPORT_SECURITY_CONTEXT_FN_W* = proc(
+    P1: ptr SEC_WCHAR, P2: PSecBuffer, P3: pointer, P4: PCtxtHandle
+  ): SECURITY_STATUS {.stdcall.}
+  ADD_CREDENTIALS_FN_W* = proc(
+    P1: PCredHandle,
+    P2: ptr SEC_WCHAR,
+    P3: ptr SEC_WCHAR,
+    P4: int32,
+    P5: pointer,
+    P6: SEC_GET_KEY_FN,
+    P7: pointer,
+    P8: PTimeStamp,
+  ): SECURITY_STATUS {.stdcall.}
+  QUERY_SECURITY_CONTEXT_TOKEN_FN* =
+    proc(P1: PCtxtHandle, P2: ptr HANDLE): SECURITY_STATUS {.stdcall.}
+  ENCRYPT_MESSAGE_FN* = proc(
+    P1: PCtxtHandle, P2: int32, P3: PSecBufferDesc, P4: int32
+  ): SECURITY_STATUS {.stdcall.}
+  DECRYPT_MESSAGE_FN* = proc(
+    P1: PCtxtHandle, P2: PSecBufferDesc, P3: int32, P4: ptr int32
+  ): SECURITY_STATUS {.stdcall.}
+  SET_CONTEXT_ATTRIBUTES_FN_W* = proc(
+    P1: PCtxtHandle, P2: int32, P3: pointer, P4: int32
+  ): SECURITY_STATUS {.stdcall.}
+  SET_CREDENTIALS_ATTRIBUTES_FN_W* = proc(
+    P1: PCredHandle, P2: int32, P3: pointer, P4: int32
+  ): SECURITY_STATUS {.stdcall.}
   SecurityFunctionTableW* {.pure.} = object
     dwVersion*: int32
     EnumerateSecurityPackagesW*: ENUMERATE_SECURITY_PACKAGES_FN_W
@@ -996,17 +1211,60 @@
     DecryptMessage*: DECRYPT_MESSAGE_FN
     SetContextAttributesW*: SET_CONTEXT_ATTRIBUTES_FN_W
     SetCredentialsAttributesW*: SET_CREDENTIALS_ATTRIBUTES_FN_W
+
   PSecurityFunctionTableW* = ptr SecurityFunctionTableW
-  ENUMERATE_SECURITY_PACKAGES_FN_A* = proc (P1: ptr int32, P2: ptr PSecPkgInfoA): SECURITY_STATUS {.stdcall.}
-  QUERY_CREDENTIALS_ATTRIBUTES_FN_A* = proc (P1: PCredHandle, P2: int32, P3: pointer): SECURITY_STATUS {.stdcall.}
-  ACQUIRE_CREDENTIALS_HANDLE_FN_A* = proc (P1: ptr SEC_CHAR, P2: ptr SEC_CHAR, P3: int32, P4: pointer, P5: pointer, P6: SEC_GET_KEY_FN, P7: pointer, P8: PCredHandle, P9: PTimeStamp): SECURITY_STATUS {.stdcall.}
-  INITIALIZE_SECURITY_CONTEXT_FN_A* = proc (P1: PCredHandle, P2: PCtxtHandle, P3: ptr SEC_CHAR, P4: int32, P5: int32, P6: int32, P7: PSecBufferDesc, P8: int32, P9: PCtxtHandle, P10: PSecBufferDesc, P11: ptr int32, P12: PTimeStamp): SECURITY_STATUS {.stdcall.}
-  QUERY_CONTEXT_ATTRIBUTES_FN_A* = proc (P1: PCtxtHandle, P2: int32, P3: pointer): SECURITY_STATUS {.stdcall.}
-  QUERY_SECURITY_PACKAGE_INFO_FN_A* = proc (P1: ptr SEC_CHAR, P2: ptr PSecPkgInfoA): SECURITY_STATUS {.stdcall.}
-  IMPORT_SECURITY_CONTEXT_FN_A* = proc (P1: ptr SEC_CHAR, P2: PSecBuffer, P3: pointer, P4: PCtxtHandle): SECURITY_STATUS {.stdcall.}
-  ADD_CREDENTIALS_FN_A* = proc (P1: PCredHandle, P2: ptr SEC_CHAR, P3: ptr SEC_CHAR, P4: int32, P5: pointer, P6: SEC_GET_KEY_FN, P7: pointer, P8: PTimeStamp): SECURITY_STATUS {.stdcall.}
-  SET_CONTEXT_ATTRIBUTES_FN_A* = proc (P1: PCtxtHandle, P2: int32, P3: pointer, P4: int32): SECURITY_STATUS {.stdcall.}
-  SET_CREDENTIALS_ATTRIBUTES_FN_A* = proc (P1: PCredHandle, P2: int32, P3: pointer, P4: int32): SECURITY_STATUS {.stdcall.}
+  ENUMERATE_SECURITY_PACKAGES_FN_A* =
+    proc(P1: ptr int32, P2: ptr PSecPkgInfoA): SECURITY_STATUS {.stdcall.}
+  QUERY_CREDENTIALS_ATTRIBUTES_FN_A* =
+    proc(P1: PCredHandle, P2: int32, P3: pointer): SECURITY_STATUS {.stdcall.}
+  ACQUIRE_CREDENTIALS_HANDLE_FN_A* = proc(
+    P1: ptr SEC_CHAR,
+    P2: ptr SEC_CHAR,
+    P3: int32,
+    P4: pointer,
+    P5: pointer,
+    P6: SEC_GET_KEY_FN,
+    P7: pointer,
+    P8: PCredHandle,
+    P9: PTimeStamp,
+  ): SECURITY_STATUS {.stdcall.}
+  INITIALIZE_SECURITY_CONTEXT_FN_A* = proc(
+    P1: PCredHandle,
+    P2: PCtxtHandle,
+    P3: ptr SEC_CHAR,
+    P4: int32,
+    P5: int32,
+    P6: int32,
+    P7: PSecBufferDesc,
+    P8: int32,
+    P9: PCtxtHandle,
+    P10: PSecBufferDesc,
+    P11: ptr int32,
+    P12: PTimeStamp,
+  ): SECURITY_STATUS {.stdcall.}
+  QUERY_CONTEXT_ATTRIBUTES_FN_A* =
+    proc(P1: PCtxtHandle, P2: int32, P3: pointer): SECURITY_STATUS {.stdcall.}
+  QUERY_SECURITY_PACKAGE_INFO_FN_A* =
+    proc(P1: ptr SEC_CHAR, P2: ptr PSecPkgInfoA): SECURITY_STATUS {.stdcall.}
+  IMPORT_SECURITY_CONTEXT_FN_A* = proc(
+    P1: ptr SEC_CHAR, P2: PSecBuffer, P3: pointer, P4: PCtxtHandle
+  ): SECURITY_STATUS {.stdcall.}
+  ADD_CREDENTIALS_FN_A* = proc(
+    P1: PCredHandle,
+    P2: ptr SEC_CHAR,
+    P3: ptr SEC_CHAR,
+    P4: int32,
+    P5: pointer,
+    P6: SEC_GET_KEY_FN,
+    P7: pointer,
+    P8: PTimeStamp,
+  ): SECURITY_STATUS {.stdcall.}
+  SET_CONTEXT_ATTRIBUTES_FN_A* = proc(
+    P1: PCtxtHandle, P2: int32, P3: pointer, P4: int32
+  ): SECURITY_STATUS {.stdcall.}
+  SET_CREDENTIALS_ATTRIBUTES_FN_A* = proc(
+    P1: PCredHandle, P2: int32, P3: pointer, P4: int32
+  ): SECURITY_STATUS {.stdcall.}
   SecurityFunctionTableA* {.pure.} = object
     dwVersion*: int32
     EnumerateSecurityPackagesA*: ENUMERATE_SECURITY_PACKAGES_FN_A
@@ -1037,6 +1295,7 @@
     DecryptMessage*: DECRYPT_MESSAGE_FN
     SetContextAttributesA*: SET_CONTEXT_ATTRIBUTES_FN_A
     SetCredentialsAttributesA*: SET_CREDENTIALS_ATTRIBUTES_FN_A
+
   PSecurityFunctionTableA* = ptr SecurityFunctionTableA
   SEC_WINNT_AUTH_IDENTITY_W* {.pure.} = object
     User*: ptr uint16
@@ -1046,6 +1305,7 @@
     Password*: ptr uint16
     PasswordLength*: int32
     Flags*: int32
+
   PSEC_WINNT_AUTH_IDENTITY_W* = ptr SEC_WINNT_AUTH_IDENTITY_W
   SEC_WINNT_AUTH_IDENTITY_A* {.pure.} = object
     User*: ptr uint8
@@ -1055,6 +1315,7 @@
     Password*: ptr uint8
     PasswordLength*: int32
     Flags*: int32
+
   PSEC_WINNT_AUTH_IDENTITY_A* = ptr SEC_WINNT_AUTH_IDENTITY_A
   SEC_WINNT_AUTH_IDENTITY_EXW* {.pure.} = object
     Version*: int32
@@ -1068,6 +1329,7 @@
     Flags*: int32
     PackageList*: ptr uint16
     PackageListLength*: int32
+
   PSEC_WINNT_AUTH_IDENTITY_EXW* = ptr SEC_WINNT_AUTH_IDENTITY_EXW
   SEC_WINNT_AUTH_IDENTITY_EXA* {.pure.} = object
     Version*: int32
@@ -1081,6 +1343,7 @@
     Flags*: int32
     PackageList*: ptr uint8
     PackageListLength*: int32
+
   PSEC_WINNT_AUTH_IDENTITY_EXA* = ptr SEC_WINNT_AUTH_IDENTITY_EXA
   SECURITY_PACKAGE_OPTIONS* {.pure.} = object
     Size*: int32
@@ -1088,6 +1351,7 @@
     Flags*: int32
     SignatureSize*: int32
     Signature*: pointer
+
   PSECURITY_PACKAGE_OPTIONS* = ptr SECURITY_PACKAGE_OPTIONS
   CREDUIWIN_MARSHALED_CONTEXT* {.pure.} = object
     StructureType*: GUID
@@ -1096,8 +1360,10 @@
     MarshaledDataType*: GUID
     MarshaledDataOffset*: ULONG
     MarshaledDataLength*: USHORT
+
   PCREDUIWIN_MARSHALED_CONTEXT* = ptr CREDUIWIN_MARSHALED_CONTEXT
   PSECURITY_INTEGER* = ptr LARGE_INTEGER
+
 const
   NTLMSP_NAME_A* = "NTLM"
   NTLMSP_NAME* = "NTLM"
@@ -1161,7 +1427,9 @@
   POLICY_AUDIT_EVENT_SUCCESS* = 0x00000001
   POLICY_AUDIT_EVENT_FAILURE* = 0x00000002
   POLICY_AUDIT_EVENT_NONE* = 0x00000004
-  POLICY_AUDIT_EVENT_MASK* = POLICY_AUDIT_EVENT_SUCCESS or POLICY_AUDIT_EVENT_FAILURE or POLICY_AUDIT_EVENT_UNCHANGED or POLICY_AUDIT_EVENT_NONE
+  POLICY_AUDIT_EVENT_MASK* =
+    POLICY_AUDIT_EVENT_SUCCESS or POLICY_AUDIT_EVENT_FAILURE or
+    POLICY_AUDIT_EVENT_UNCHANGED or POLICY_AUDIT_EVENT_NONE
   POLICY_VIEW_LOCAL_INFORMATION* = 0x00000001
   POLICY_VIEW_AUDIT_INFORMATION* = 0x00000002
   POLICY_GET_PRIVATE_INFORMATION* = 0x00000004
@@ -1175,10 +1443,21 @@
   POLICY_SERVER_ADMIN* = 0x00000400
   POLICY_LOOKUP_NAMES* = 0x00000800
   POLICY_NOTIFICATION* = 0x00001000
-  POLICY_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or POLICY_VIEW_LOCAL_INFORMATION or POLICY_VIEW_AUDIT_INFORMATION or POLICY_GET_PRIVATE_INFORMATION or POLICY_TRUST_ADMIN or POLICY_CREATE_ACCOUNT or POLICY_CREATE_SECRET or POLICY_CREATE_PRIVILEGE or POLICY_SET_DEFAULT_QUOTA_LIMITS or POLICY_SET_AUDIT_REQUIREMENTS or POLICY_AUDIT_LOG_ADMIN or POLICY_SERVER_ADMIN or POLICY_LOOKUP_NAMES
-  POLICY_READ* = STANDARD_RIGHTS_READ or POLICY_VIEW_AUDIT_INFORMATION or POLICY_GET_PRIVATE_INFORMATION
-  POLICY_WRITE* = STANDARD_RIGHTS_WRITE or POLICY_TRUST_ADMIN or POLICY_CREATE_ACCOUNT or POLICY_CREATE_SECRET or POLICY_CREATE_PRIVILEGE or POLICY_SET_DEFAULT_QUOTA_LIMITS or POLICY_SET_AUDIT_REQUIREMENTS or POLICY_AUDIT_LOG_ADMIN or POLICY_SERVER_ADMIN
-  POLICY_EXECUTE* = STANDARD_RIGHTS_EXECUTE or POLICY_VIEW_LOCAL_INFORMATION or POLICY_LOOKUP_NAMES
+  POLICY_ALL_ACCESS* =
+    STANDARD_RIGHTS_REQUIRED or POLICY_VIEW_LOCAL_INFORMATION or
+    POLICY_VIEW_AUDIT_INFORMATION or POLICY_GET_PRIVATE_INFORMATION or POLICY_TRUST_ADMIN or
+    POLICY_CREATE_ACCOUNT or POLICY_CREATE_SECRET or POLICY_CREATE_PRIVILEGE or
+    POLICY_SET_DEFAULT_QUOTA_LIMITS or POLICY_SET_AUDIT_REQUIREMENTS or
+    POLICY_AUDIT_LOG_ADMIN or POLICY_SERVER_ADMIN or POLICY_LOOKUP_NAMES
+  POLICY_READ* =
+    STANDARD_RIGHTS_READ or POLICY_VIEW_AUDIT_INFORMATION or
+    POLICY_GET_PRIVATE_INFORMATION
+  POLICY_WRITE* =
+    STANDARD_RIGHTS_WRITE or POLICY_TRUST_ADMIN or POLICY_CREATE_ACCOUNT or
+    POLICY_CREATE_SECRET or POLICY_CREATE_PRIVILEGE or POLICY_SET_DEFAULT_QUOTA_LIMITS or
+    POLICY_SET_AUDIT_REQUIREMENTS or POLICY_AUDIT_LOG_ADMIN or POLICY_SERVER_ADMIN
+  POLICY_EXECUTE* =
+    STANDARD_RIGHTS_EXECUTE or POLICY_VIEW_LOCAL_INFORMATION or POLICY_LOOKUP_NAMES
   policyServerRoleBackup* = 2
   policyServerRolePrimary* = 3
   policyAuditLogInformation* = 1
@@ -1249,7 +1528,7 @@
   LSA_SID_DISABLED_CONFLICT* = 0x00000002
   LSA_NB_DISABLED_ADMIN* = 0x00000004
   LSA_NB_DISABLED_CONFLICT* = 0x00000008
-  MAX_FOREST_TRUST_BINARY_DATA_SIZE* = 128*1024
+  MAX_FOREST_TRUST_BINARY_DATA_SIZE* = 128 * 1024
   MAX_RECORDS_IN_FOREST_TRUST_INFO* = 4000
   collisionTdo* = 0
   collisionXref* = 1
@@ -1416,7 +1695,9 @@
   AUTH_REQ_PREAUTH_REQUIRED* = 0x00000200
   AUTH_REQ_TRANSITIVE_TRUST* = 0x00000400
   AUTH_REQ_ALLOW_S4U_DELEGATE* = 0x00000800
-  AUTH_REQ_PER_USER_FLAGS* = AUTH_REQ_ALLOW_FORWARDABLE or AUTH_REQ_ALLOW_PROXIABLE or AUTH_REQ_ALLOW_POSTDATE or AUTH_REQ_ALLOW_RENEWABLE or AUTH_REQ_ALLOW_VALIDATE
+  AUTH_REQ_PER_USER_FLAGS* =
+    AUTH_REQ_ALLOW_FORWARDABLE or AUTH_REQ_ALLOW_PROXIABLE or AUTH_REQ_ALLOW_POSTDATE or
+    AUTH_REQ_ALLOW_RENEWABLE or AUTH_REQ_ALLOW_VALIDATE
   KERB_TICKET_FLAGS_reserved* = 0x80000000'i32
   KERB_TICKET_FLAGS_forwardable* = 0x40000000
   KERB_TICKET_FLAGS_forwarded* = 0x20000000
@@ -1718,138 +1999,738 @@
   MSV1_0_NTLM3_INPUT_LENGTH* = 0x00000020
   MSV1_0_NTLM3_MIN_NT_RESPONSE_LENGTH* = 0x0000002C
   MICROSOFT_KERBEROS_NAME* = "Kerberos"
-  MSV1_0_PACKAGE_NAMEW_LENGTH* = (len(MSV1_0_PACKAGE_NAMEW)+1)-sizeof(WCHAR)
+  MSV1_0_PACKAGE_NAMEW_LENGTH* = (len(MSV1_0_PACKAGE_NAMEW) + 1) - sizeof(WCHAR)
 type
-  PSAM_PASSWORD_NOTIFICATION_ROUTINE* = proc (UserName: PUNICODE_STRING, RelativeId: ULONG, NewPassword: PUNICODE_STRING): NTSTATUS {.stdcall.}
-  PSAM_INIT_NOTIFICATION_ROUTINE* = proc (): BOOLEAN {.stdcall.}
-  PSAM_PASSWORD_FILTER_ROUTINE* = proc (AccountName: PUNICODE_STRING, FullName: PUNICODE_STRING, Password: PUNICODE_STRING, SetOperation: BOOLEAN): BOOLEAN {.stdcall.}
-proc LsaRegisterLogonProcess*(LogonProcessName: PLSA_STRING, LsaHandle: PHANDLE, SecurityMode: PLSA_OPERATIONAL_MODE): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc LsaLogonUser*(LsaHandle: HANDLE, OriginName: PLSA_STRING, LogonType: SECURITY_LOGON_TYPE, AuthenticationPackage: ULONG, AuthenticationInformation: PVOID, AuthenticationInformationLength: ULONG, LocalGroups: PTOKEN_GROUPS, SourceContext: PTOKEN_SOURCE, ProfileBuffer: ptr PVOID, ProfileBufferLength: PULONG, LogonId: PLUID, Token: PHANDLE, Quotas: PQUOTA_LIMITS, SubStatus: PNTSTATUS): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc LsaLookupAuthenticationPackage*(LsaHandle: HANDLE, PackageName: PLSA_STRING, AuthenticationPackage: PULONG): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc LsaFreeReturnBuffer*(Buffer: PVOID): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc LsaCallAuthenticationPackage*(LsaHandle: HANDLE, AuthenticationPackage: ULONG, ProtocolSubmitBuffer: PVOID, SubmitBufferLength: ULONG, ProtocolReturnBuffer: ptr PVOID, ReturnBufferLength: PULONG, ProtocolStatus: PNTSTATUS): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc LsaDeregisterLogonProcess*(LsaHandle: HANDLE): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc LsaConnectUntrusted*(LsaHandle: PHANDLE): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc LsaFreeMemory*(Buffer: PVOID): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaClose*(ObjectHandle: LSA_HANDLE): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaEnumerateLogonSessions*(LogonSessionCount: PULONG, LogonSessionList: ptr PLUID): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc LsaGetLogonSessionData*(LogonId: PLUID, ppLogonSessionData: ptr PSECURITY_LOGON_SESSION_DATA): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc LsaOpenPolicy*(SystemName: PLSA_UNICODE_STRING, ObjectAttributes: PLSA_OBJECT_ATTRIBUTES, DesiredAccess: ACCESS_MASK, PolicyHandle: PLSA_HANDLE): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaQueryInformationPolicy*(PolicyHandle: LSA_HANDLE, InformationClass: POLICY_INFORMATION_CLASS, Buffer: ptr PVOID): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaSetInformationPolicy*(PolicyHandle: LSA_HANDLE, InformationClass: POLICY_INFORMATION_CLASS, Buffer: PVOID): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaQueryDomainInformationPolicy*(PolicyHandle: LSA_HANDLE, InformationClass: POLICY_DOMAIN_INFORMATION_CLASS, Buffer: ptr PVOID): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaSetDomainInformationPolicy*(PolicyHandle: LSA_HANDLE, InformationClass: POLICY_DOMAIN_INFORMATION_CLASS, Buffer: PVOID): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaRegisterPolicyChangeNotification*(InformationClass: POLICY_NOTIFICATION_INFORMATION_CLASS, NotificationEventHandle: HANDLE): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc LsaUnregisterPolicyChangeNotification*(InformationClass: POLICY_NOTIFICATION_INFORMATION_CLASS, NotificationEventHandle: HANDLE): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc LsaEnumerateTrustedDomains*(PolicyHandle: LSA_HANDLE, EnumerationContext: PLSA_ENUMERATION_HANDLE, Buffer: ptr PVOID, PreferedMaximumLength: ULONG, CountReturned: PULONG): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaLookupNames*(PolicyHandle: LSA_HANDLE, Count: ULONG, Names: PLSA_UNICODE_STRING, ReferencedDomains: ptr PLSA_REFERENCED_DOMAIN_LIST, Sids: ptr PLSA_TRANSLATED_SID): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaLookupNames2*(PolicyHandle: LSA_HANDLE, Flags: ULONG, Count: ULONG, Names: PLSA_UNICODE_STRING, ReferencedDomains: ptr PLSA_REFERENCED_DOMAIN_LIST, Sids: ptr PLSA_TRANSLATED_SID2): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaLookupSids*(PolicyHandle: LSA_HANDLE, Count: ULONG, Sids: ptr PSID, ReferencedDomains: ptr PLSA_REFERENCED_DOMAIN_LIST, Names: ptr PLSA_TRANSLATED_NAME): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaEnumerateAccountsWithUserRight*(PolicyHandle: LSA_HANDLE, UserRight: PLSA_UNICODE_STRING, Buffer: ptr PVOID, CountReturned: PULONG): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaEnumerateAccountRights*(PolicyHandle: LSA_HANDLE, AccountSid: PSID, UserRights: ptr PLSA_UNICODE_STRING, CountOfRights: PULONG): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaAddAccountRights*(PolicyHandle: LSA_HANDLE, AccountSid: PSID, UserRights: PLSA_UNICODE_STRING, CountOfRights: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaRemoveAccountRights*(PolicyHandle: LSA_HANDLE, AccountSid: PSID, AllRights: BOOLEAN, UserRights: PLSA_UNICODE_STRING, CountOfRights: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaOpenTrustedDomainByName*(PolicyHandle: LSA_HANDLE, TrustedDomainName: PLSA_UNICODE_STRING, DesiredAccess: ACCESS_MASK, TrustedDomainHandle: PLSA_HANDLE): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaQueryTrustedDomainInfo*(PolicyHandle: LSA_HANDLE, TrustedDomainSid: PSID, InformationClass: TRUSTED_INFORMATION_CLASS, Buffer: ptr PVOID): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaSetTrustedDomainInformation*(PolicyHandle: LSA_HANDLE, TrustedDomainSid: PSID, InformationClass: TRUSTED_INFORMATION_CLASS, Buffer: PVOID): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaDeleteTrustedDomain*(PolicyHandle: LSA_HANDLE, TrustedDomainSid: PSID): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaQueryTrustedDomainInfoByName*(PolicyHandle: LSA_HANDLE, TrustedDomainName: PLSA_UNICODE_STRING, InformationClass: TRUSTED_INFORMATION_CLASS, Buffer: ptr PVOID): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaSetTrustedDomainInfoByName*(PolicyHandle: LSA_HANDLE, TrustedDomainName: PLSA_UNICODE_STRING, InformationClass: TRUSTED_INFORMATION_CLASS, Buffer: PVOID): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaEnumerateTrustedDomainsEx*(PolicyHandle: LSA_HANDLE, EnumerationContext: PLSA_ENUMERATION_HANDLE, Buffer: ptr PVOID, PreferedMaximumLength: ULONG, CountReturned: PULONG): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaCreateTrustedDomainEx*(PolicyHandle: LSA_HANDLE, TrustedDomainInformation: PTRUSTED_DOMAIN_INFORMATION_EX, AuthenticationInformation: PTRUSTED_DOMAIN_AUTH_INFORMATION, DesiredAccess: ACCESS_MASK, TrustedDomainHandle: PLSA_HANDLE): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaQueryForestTrustInformation*(PolicyHandle: LSA_HANDLE, TrustedDomainName: PLSA_UNICODE_STRING, ForestTrustInfo: ptr PLSA_FOREST_TRUST_INFORMATION): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaSetForestTrustInformation*(PolicyHandle: LSA_HANDLE, TrustedDomainName: PLSA_UNICODE_STRING, ForestTrustInfo: PLSA_FOREST_TRUST_INFORMATION, CheckOnly: BOOLEAN, CollisionInfo: ptr PLSA_FOREST_TRUST_COLLISION_INFORMATION): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaStorePrivateData*(PolicyHandle: LSA_HANDLE, KeyName: PLSA_UNICODE_STRING, PrivateData: PLSA_UNICODE_STRING): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaRetrievePrivateData*(PolicyHandle: LSA_HANDLE, KeyName: PLSA_UNICODE_STRING, PrivateData: ptr PLSA_UNICODE_STRING): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LsaNtStatusToWinError*(Status: NTSTATUS): ULONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SystemFunction036*(RandomBuffer: PVOID, RandomBufferLength: ULONG): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SystemFunction040*(Memory: PVOID, MemorySize: ULONG, OptionFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SystemFunction041*(Memory: PVOID, MemorySize: ULONG, OptionFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditComputeEffectivePolicyBySid*(pSid: PSID, pSubCategoryGuids: ptr GUID, PolicyCount: ULONG, ppAuditPolicy: ptr PAUDIT_POLICY_INFORMATION): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+  PSAM_PASSWORD_NOTIFICATION_ROUTINE* = proc(
+    UserName: PUNICODE_STRING, RelativeId: ULONG, NewPassword: PUNICODE_STRING
+  ): NTSTATUS {.stdcall.}
+  PSAM_INIT_NOTIFICATION_ROUTINE* = proc(): BOOLEAN {.stdcall.}
+  PSAM_PASSWORD_FILTER_ROUTINE* = proc(
+    AccountName: PUNICODE_STRING,
+    FullName: PUNICODE_STRING,
+    Password: PUNICODE_STRING,
+    SetOperation: BOOLEAN,
+  ): BOOLEAN {.stdcall.}
+
+proc LsaRegisterLogonProcess*(
+  LogonProcessName: PLSA_STRING, LsaHandle: PHANDLE, SecurityMode: PLSA_OPERATIONAL_MODE
+): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc LsaLogonUser*(
+  LsaHandle: HANDLE,
+  OriginName: PLSA_STRING,
+  LogonType: SECURITY_LOGON_TYPE,
+  AuthenticationPackage: ULONG,
+  AuthenticationInformation: PVOID,
+  AuthenticationInformationLength: ULONG,
+  LocalGroups: PTOKEN_GROUPS,
+  SourceContext: PTOKEN_SOURCE,
+  ProfileBuffer: ptr PVOID,
+  ProfileBufferLength: PULONG,
+  LogonId: PLUID,
+  Token: PHANDLE,
+  Quotas: PQUOTA_LIMITS,
+  SubStatus: PNTSTATUS,
+): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc LsaLookupAuthenticationPackage*(
+  LsaHandle: HANDLE, PackageName: PLSA_STRING, AuthenticationPackage: PULONG
+): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc LsaFreeReturnBuffer*(
+  Buffer: PVOID
+): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc LsaCallAuthenticationPackage*(
+  LsaHandle: HANDLE,
+  AuthenticationPackage: ULONG,
+  ProtocolSubmitBuffer: PVOID,
+  SubmitBufferLength: ULONG,
+  ProtocolReturnBuffer: ptr PVOID,
+  ReturnBufferLength: PULONG,
+  ProtocolStatus: PNTSTATUS,
+): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc LsaDeregisterLogonProcess*(
+  LsaHandle: HANDLE
+): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc LsaConnectUntrusted*(
+  LsaHandle: PHANDLE
+): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc LsaFreeMemory*(
+  Buffer: PVOID
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaClose*(
+  ObjectHandle: LSA_HANDLE
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaEnumerateLogonSessions*(
+  LogonSessionCount: PULONG, LogonSessionList: ptr PLUID
+): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc LsaGetLogonSessionData*(
+  LogonId: PLUID, ppLogonSessionData: ptr PSECURITY_LOGON_SESSION_DATA
+): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc LsaOpenPolicy*(
+  SystemName: PLSA_UNICODE_STRING,
+  ObjectAttributes: PLSA_OBJECT_ATTRIBUTES,
+  DesiredAccess: ACCESS_MASK,
+  PolicyHandle: PLSA_HANDLE,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaQueryInformationPolicy*(
+  PolicyHandle: LSA_HANDLE,
+  InformationClass: POLICY_INFORMATION_CLASS,
+  Buffer: ptr PVOID,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaSetInformationPolicy*(
+  PolicyHandle: LSA_HANDLE, InformationClass: POLICY_INFORMATION_CLASS, Buffer: PVOID
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaQueryDomainInformationPolicy*(
+  PolicyHandle: LSA_HANDLE,
+  InformationClass: POLICY_DOMAIN_INFORMATION_CLASS,
+  Buffer: ptr PVOID,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaSetDomainInformationPolicy*(
+  PolicyHandle: LSA_HANDLE,
+  InformationClass: POLICY_DOMAIN_INFORMATION_CLASS,
+  Buffer: PVOID,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaRegisterPolicyChangeNotification*(
+  InformationClass: POLICY_NOTIFICATION_INFORMATION_CLASS,
+  NotificationEventHandle: HANDLE,
+): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc LsaUnregisterPolicyChangeNotification*(
+  InformationClass: POLICY_NOTIFICATION_INFORMATION_CLASS,
+  NotificationEventHandle: HANDLE,
+): NTSTATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc LsaEnumerateTrustedDomains*(
+  PolicyHandle: LSA_HANDLE,
+  EnumerationContext: PLSA_ENUMERATION_HANDLE,
+  Buffer: ptr PVOID,
+  PreferedMaximumLength: ULONG,
+  CountReturned: PULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaLookupNames*(
+  PolicyHandle: LSA_HANDLE,
+  Count: ULONG,
+  Names: PLSA_UNICODE_STRING,
+  ReferencedDomains: ptr PLSA_REFERENCED_DOMAIN_LIST,
+  Sids: ptr PLSA_TRANSLATED_SID,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaLookupNames2*(
+  PolicyHandle: LSA_HANDLE,
+  Flags: ULONG,
+  Count: ULONG,
+  Names: PLSA_UNICODE_STRING,
+  ReferencedDomains: ptr PLSA_REFERENCED_DOMAIN_LIST,
+  Sids: ptr PLSA_TRANSLATED_SID2,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaLookupSids*(
+  PolicyHandle: LSA_HANDLE,
+  Count: ULONG,
+  Sids: ptr PSID,
+  ReferencedDomains: ptr PLSA_REFERENCED_DOMAIN_LIST,
+  Names: ptr PLSA_TRANSLATED_NAME,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaEnumerateAccountsWithUserRight*(
+  PolicyHandle: LSA_HANDLE,
+  UserRight: PLSA_UNICODE_STRING,
+  Buffer: ptr PVOID,
+  CountReturned: PULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaEnumerateAccountRights*(
+  PolicyHandle: LSA_HANDLE,
+  AccountSid: PSID,
+  UserRights: ptr PLSA_UNICODE_STRING,
+  CountOfRights: PULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaAddAccountRights*(
+  PolicyHandle: LSA_HANDLE,
+  AccountSid: PSID,
+  UserRights: PLSA_UNICODE_STRING,
+  CountOfRights: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaRemoveAccountRights*(
+  PolicyHandle: LSA_HANDLE,
+  AccountSid: PSID,
+  AllRights: BOOLEAN,
+  UserRights: PLSA_UNICODE_STRING,
+  CountOfRights: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaOpenTrustedDomainByName*(
+  PolicyHandle: LSA_HANDLE,
+  TrustedDomainName: PLSA_UNICODE_STRING,
+  DesiredAccess: ACCESS_MASK,
+  TrustedDomainHandle: PLSA_HANDLE,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaQueryTrustedDomainInfo*(
+  PolicyHandle: LSA_HANDLE,
+  TrustedDomainSid: PSID,
+  InformationClass: TRUSTED_INFORMATION_CLASS,
+  Buffer: ptr PVOID,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaSetTrustedDomainInformation*(
+  PolicyHandle: LSA_HANDLE,
+  TrustedDomainSid: PSID,
+  InformationClass: TRUSTED_INFORMATION_CLASS,
+  Buffer: PVOID,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaDeleteTrustedDomain*(
+  PolicyHandle: LSA_HANDLE, TrustedDomainSid: PSID
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaQueryTrustedDomainInfoByName*(
+  PolicyHandle: LSA_HANDLE,
+  TrustedDomainName: PLSA_UNICODE_STRING,
+  InformationClass: TRUSTED_INFORMATION_CLASS,
+  Buffer: ptr PVOID,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaSetTrustedDomainInfoByName*(
+  PolicyHandle: LSA_HANDLE,
+  TrustedDomainName: PLSA_UNICODE_STRING,
+  InformationClass: TRUSTED_INFORMATION_CLASS,
+  Buffer: PVOID,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaEnumerateTrustedDomainsEx*(
+  PolicyHandle: LSA_HANDLE,
+  EnumerationContext: PLSA_ENUMERATION_HANDLE,
+  Buffer: ptr PVOID,
+  PreferedMaximumLength: ULONG,
+  CountReturned: PULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaCreateTrustedDomainEx*(
+  PolicyHandle: LSA_HANDLE,
+  TrustedDomainInformation: PTRUSTED_DOMAIN_INFORMATION_EX,
+  AuthenticationInformation: PTRUSTED_DOMAIN_AUTH_INFORMATION,
+  DesiredAccess: ACCESS_MASK,
+  TrustedDomainHandle: PLSA_HANDLE,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaQueryForestTrustInformation*(
+  PolicyHandle: LSA_HANDLE,
+  TrustedDomainName: PLSA_UNICODE_STRING,
+  ForestTrustInfo: ptr PLSA_FOREST_TRUST_INFORMATION,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaSetForestTrustInformation*(
+  PolicyHandle: LSA_HANDLE,
+  TrustedDomainName: PLSA_UNICODE_STRING,
+  ForestTrustInfo: PLSA_FOREST_TRUST_INFORMATION,
+  CheckOnly: BOOLEAN,
+  CollisionInfo: ptr PLSA_FOREST_TRUST_COLLISION_INFORMATION,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaStorePrivateData*(
+  PolicyHandle: LSA_HANDLE,
+  KeyName: PLSA_UNICODE_STRING,
+  PrivateData: PLSA_UNICODE_STRING,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaRetrievePrivateData*(
+  PolicyHandle: LSA_HANDLE,
+  KeyName: PLSA_UNICODE_STRING,
+  PrivateData: ptr PLSA_UNICODE_STRING,
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LsaNtStatusToWinError*(
+  Status: NTSTATUS
+): ULONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SystemFunction036*(
+  RandomBuffer: PVOID, RandomBufferLength: ULONG
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SystemFunction040*(
+  Memory: PVOID, MemorySize: ULONG, OptionFlags: ULONG
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SystemFunction041*(
+  Memory: PVOID, MemorySize: ULONG, OptionFlags: ULONG
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditComputeEffectivePolicyBySid*(
+  pSid: PSID,
+  pSubCategoryGuids: ptr GUID,
+  PolicyCount: ULONG,
+  ppAuditPolicy: ptr PAUDIT_POLICY_INFORMATION,
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
 proc AuditFree*(Buffer: PVOID): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditSetSystemPolicy*(pAuditPolicy: PCAUDIT_POLICY_INFORMATION, PolicyCount: ULONG): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditQuerySystemPolicy*(pSubCategoryGuids: ptr GUID, PolicyCount: ULONG, ppAuditPolicy: ptr PAUDIT_POLICY_INFORMATION): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditSetPerUserPolicy*(pSid: PSID, pAuditPolicy: PCAUDIT_POLICY_INFORMATION, PolicyCount: ULONG): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditQueryPerUserPolicy*(pSid: PSID, pSubCategoryGuids: ptr GUID, PolicyCount: ULONG, ppAuditPolicy: ptr PAUDIT_POLICY_INFORMATION): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditComputeEffectivePolicyByToken*(hTokenHandle: HANDLE, pSubCategoryGuids: ptr GUID, PolicyCount: ULONG, ppAuditPolicy: ptr PAUDIT_POLICY_INFORMATION): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditEnumerateCategories*(ppAuditCategoriesArray: ptr ptr GUID, pCountReturned: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditEnumeratePerUserPolicy*(ppAuditSidArray: ptr PPOLICY_AUDIT_SID_ARRAY): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditEnumerateSubCategories*(pAuditCategoryGuid: ptr GUID, bRetrieveAllSubCategories: BOOLEAN, ppAuditSubCategoriesArray: ptr ptr GUID, pCountReturned: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditLookupCategoryGuidFromCategoryId*(AuditCategoryId: POLICY_AUDIT_EVENT_TYPE, pAuditCategoryGuid: ptr GUID): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditQuerySecurity*(SecurityInformation: SECURITY_INFORMATION, ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditLookupSubCategoryNameA*(pAuditSubCategoryGuid: ptr GUID, ppszSubCategoryName: ptr LPSTR): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditLookupSubCategoryNameW*(pAuditSubCategoryGuid: ptr GUID, ppszSubCategoryName: ptr LPWSTR): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditLookupCategoryNameA*(pAuditCategoryGuid: ptr GUID, ppszCategoryName: ptr LPSTR): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditLookupCategoryNameW*(pAuditCategoryGuid: ptr GUID, ppszCategoryName: ptr LPWSTR): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditLookupCategoryIdFromCategoryGuid*(pAuditCategoryGuid: ptr GUID, pAuditCategoryId: PPOLICY_AUDIT_EVENT_TYPE): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AuditSetSecurity*(SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AcquireCredentialsHandleW*(pszPrincipal: ptr SEC_WCHAR, pszPackage: ptr SEC_WCHAR, fCredentialUse: int32, pvLogonId: pointer, pAuthData: pointer, pGetKeyFn: SEC_GET_KEY_FN, pvGetKeyArgument: pointer, phCredential: PCredHandle, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc AcquireCredentialsHandleA*(pszPrincipal: ptr SEC_CHAR, pszPackage: ptr SEC_CHAR, fCredentialUse: int32, pvLogonId: pointer, pAuthData: pointer, pGetKeyFn: SEC_GET_KEY_FN, pvGetKeyArgument: pointer, phCredential: PCredHandle, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc FreeCredentialsHandle*(phCredential: PCredHandle): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc AddCredentialsW*(hCredentials: PCredHandle, pszPrincipal: ptr SEC_WCHAR, pszPackage: ptr SEC_WCHAR, fCredentialUse: int32, pAuthData: pointer, pGetKeyFn: SEC_GET_KEY_FN, pvGetKeyArgument: pointer, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc AddCredentialsA*(hCredentials: PCredHandle, pszPrincipal: ptr SEC_CHAR, pszPackage: ptr SEC_CHAR, fCredentialUse: int32, pAuthData: pointer, pGetKeyFn: SEC_GET_KEY_FN, pvGetKeyArgument: pointer, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc InitializeSecurityContextW*(phCredential: PCredHandle, phContext: PCtxtHandle, pszTargetName: ptr SEC_WCHAR, fContextReq: int32, Reserved1: int32, TargetDataRep: int32, pInput: PSecBufferDesc, Reserved2: int32, phNewContext: PCtxtHandle, pOutput: PSecBufferDesc, pfContextAttr: ptr int32, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc InitializeSecurityContextA*(phCredential: PCredHandle, phContext: PCtxtHandle, pszTargetName: ptr SEC_CHAR, fContextReq: int32, Reserved1: int32, TargetDataRep: int32, pInput: PSecBufferDesc, Reserved2: int32, phNewContext: PCtxtHandle, pOutput: PSecBufferDesc, pfContextAttr: ptr int32, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc AcceptSecurityContext*(phCredential: PCredHandle, phContext: PCtxtHandle, pInput: PSecBufferDesc, fContextReq: int32, TargetDataRep: int32, phNewContext: PCtxtHandle, pOutput: PSecBufferDesc, pfContextAttr: ptr int32, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc CompleteAuthToken*(phContext: PCtxtHandle, pToken: PSecBufferDesc): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc ImpersonateSecurityContext*(phContext: PCtxtHandle): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc RevertSecurityContext*(phContext: PCtxtHandle): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc QuerySecurityContextToken*(phContext: PCtxtHandle, Token: ptr HANDLE): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc DeleteSecurityContext*(phContext: PCtxtHandle): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc ApplyControlToken*(phContext: PCtxtHandle, pInput: PSecBufferDesc): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc QueryContextAttributesW*(phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc QueryContextAttributesA*(phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SetContextAttributesW*(phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SetContextAttributesA*(phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc QueryCredentialsAttributesW*(phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc QueryCredentialsAttributesA*(phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SetCredentialsAttributesW*(phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SetCredentialsAttributesA*(phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc FreeContextBuffer*(pvContextBuffer: pointer): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc MakeSignature*(phContext: PCtxtHandle, fQOP: int32, pMessage: PSecBufferDesc, MessageSeqNo: int32): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc VerifySignature*(phContext: PCtxtHandle, pMessage: PSecBufferDesc, MessageSeqNo: int32, pfQOP: ptr int32): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc EncryptMessage*(phContext: PCtxtHandle, fQOP: int32, pMessage: PSecBufferDesc, MessageSeqNo: int32): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc DecryptMessage*(phContext: PCtxtHandle, pMessage: PSecBufferDesc, MessageSeqNo: int32, pfQOP: ptr int32): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc EnumerateSecurityPackagesW*(pcPackages: ptr int32, ppPackageInfo: ptr PSecPkgInfoW): SECURITY_STATUS {.winapi, stdcall, dynlib: "sspicli", importc.}
-proc EnumerateSecurityPackagesA*(pcPackages: ptr int32, ppPackageInfo: ptr PSecPkgInfoA): SECURITY_STATUS {.winapi, stdcall, dynlib: "sspicli", importc.}
-proc QuerySecurityPackageInfoW*(pszPackageName: ptr SEC_WCHAR, ppPackageInfo: ptr PSecPkgInfoW): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc QuerySecurityPackageInfoA*(pszPackageName: ptr SEC_CHAR, ppPackageInfo: ptr PSecPkgInfoA): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc ExportSecurityContext*(phContext: PCtxtHandle, fFlags: ULONG, pPackedContext: PSecBuffer, pToken: ptr pointer): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc ImportSecurityContextW*(pszPackage: ptr SEC_WCHAR, pPackedContext: PSecBuffer, Token: pointer, phContext: PCtxtHandle): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc ImportSecurityContextA*(pszPackage: ptr SEC_CHAR, pPackedContext: PSecBuffer, Token: pointer, phContext: PCtxtHandle): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc FreeCredentialHandle*(phCredential: PCredHandle): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "FreeCredentialsHandle".}
-proc InitSecurityInterfaceA*(): PSecurityFunctionTableA {.winapi, stdcall, dynlib: "secur32", importc.}
-proc InitSecurityInterfaceW*(): PSecurityFunctionTableW {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SaslEnumerateProfilesA*(ProfileList: ptr LPSTR, ProfileCount: ptr ULONG): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SaslEnumerateProfilesW*(ProfileList: ptr LPWSTR, ProfileCount: ptr ULONG): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SaslGetProfilePackageA*(ProfileName: LPSTR, PackageInfo: ptr PSecPkgInfoA): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SaslGetProfilePackageW*(ProfileName: LPWSTR, PackageInfo: ptr PSecPkgInfoW): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SaslIdentifyPackageA*(pInput: PSecBufferDesc, PackageInfo: ptr PSecPkgInfoA): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SaslIdentifyPackageW*(pInput: PSecBufferDesc, PackageInfo: ptr PSecPkgInfoW): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SaslInitializeSecurityContextW*(phCredential: PCredHandle, phContext: PCtxtHandle, pszTargetName: LPWSTR, fContextReq: int32, Reserved1: int32, TargetDataRep: int32, pInput: PSecBufferDesc, Reserved2: int32, phNewContext: PCtxtHandle, pOutput: PSecBufferDesc, pfContextAttr: ptr int32, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SaslInitializeSecurityContextA*(phCredential: PCredHandle, phContext: PCtxtHandle, pszTargetName: LPSTR, fContextReq: int32, Reserved1: int32, TargetDataRep: int32, pInput: PSecBufferDesc, Reserved2: int32, phNewContext: PCtxtHandle, pOutput: PSecBufferDesc, pfContextAttr: ptr int32, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SaslAcceptSecurityContext*(phCredential: PCredHandle, phContext: PCtxtHandle, pInput: PSecBufferDesc, fContextReq: int32, TargetDataRep: int32, phNewContext: PCtxtHandle, pOutput: PSecBufferDesc, pfContextAttr: ptr int32, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SaslSetContextOption*(ContextHandle: PCtxtHandle, Option: ULONG, Value: PVOID, Size: ULONG): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc SaslGetContextOption*(ContextHandle: PCtxtHandle, Option: ULONG, Value: PVOID, Size: ULONG, Needed: PULONG): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc AddSecurityPackageA*(pszPackageName: LPSTR, pOptions: PSECURITY_PACKAGE_OPTIONS): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc AddSecurityPackageW*(pszPackageName: LPWSTR, pOptions: PSECURITY_PACKAGE_OPTIONS): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc DeleteSecurityPackageA*(pszPackageName: ptr SEC_CHAR): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc DeleteSecurityPackageW*(pszPackageName: ptr SEC_WCHAR): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
-proc GetUserNameExA*(NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPSTR, nSize: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc.}
-proc GetUserNameExW*(NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPWSTR, nSize: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc.}
-proc GetComputerObjectNameA*(NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPSTR, nSize: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc.}
-proc GetComputerObjectNameW*(NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPWSTR, nSize: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc.}
-proc TranslateNameA*(lpAccountName: LPCSTR, AccountNameFormat: EXTENDED_NAME_FORMAT, DesiredNameFormat: EXTENDED_NAME_FORMAT, lpTranslatedName: LPSTR, nSize: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc.}
-proc TranslateNameW*(lpAccountName: LPCWSTR, AccountNameFormat: EXTENDED_NAME_FORMAT, DesiredNameFormat: EXTENDED_NAME_FORMAT, lpTranslatedName: LPWSTR, nSize: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc.}
-proc RtlGenRandom*(RandomBuffer: PVOID, RandomBufferLength: ULONG): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc: "SystemFunction036".}
-proc RtlEncryptMemory*(Memory: PVOID, MemorySize: ULONG, OptionFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc: "SystemFunction040".}
-proc RtlDecryptMemory*(Memory: PVOID, MemorySize: ULONG, OptionFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc: "SystemFunction041".}
-proc `ContextInformation=`*(self: var KERB_SMARTCARD_CSP_INFO, x: PVOID) {.inline.} = self.union1.ContextInformation = x
-proc ContextInformation*(self: KERB_SMARTCARD_CSP_INFO): PVOID {.inline.} = self.union1.ContextInformation
-proc ContextInformation*(self: var KERB_SMARTCARD_CSP_INFO): var PVOID {.inline.} = self.union1.ContextInformation
-proc `SpaceHolderForWow64=`*(self: var KERB_SMARTCARD_CSP_INFO, x: ULONG64) {.inline.} = self.union1.SpaceHolderForWow64 = x
-proc SpaceHolderForWow64*(self: KERB_SMARTCARD_CSP_INFO): ULONG64 {.inline.} = self.union1.SpaceHolderForWow64
-proc SpaceHolderForWow64*(self: var KERB_SMARTCARD_CSP_INFO): var ULONG64 {.inline.} = self.union1.SpaceHolderForWow64
+proc AuditSetSystemPolicy*(
+  pAuditPolicy: PCAUDIT_POLICY_INFORMATION, PolicyCount: ULONG
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditQuerySystemPolicy*(
+  pSubCategoryGuids: ptr GUID,
+  PolicyCount: ULONG,
+  ppAuditPolicy: ptr PAUDIT_POLICY_INFORMATION,
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditSetPerUserPolicy*(
+  pSid: PSID, pAuditPolicy: PCAUDIT_POLICY_INFORMATION, PolicyCount: ULONG
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditQueryPerUserPolicy*(
+  pSid: PSID,
+  pSubCategoryGuids: ptr GUID,
+  PolicyCount: ULONG,
+  ppAuditPolicy: ptr PAUDIT_POLICY_INFORMATION,
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditComputeEffectivePolicyByToken*(
+  hTokenHandle: HANDLE,
+  pSubCategoryGuids: ptr GUID,
+  PolicyCount: ULONG,
+  ppAuditPolicy: ptr PAUDIT_POLICY_INFORMATION,
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditEnumerateCategories*(
+  ppAuditCategoriesArray: ptr ptr GUID, pCountReturned: PULONG
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditEnumeratePerUserPolicy*(
+  ppAuditSidArray: ptr PPOLICY_AUDIT_SID_ARRAY
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditEnumerateSubCategories*(
+  pAuditCategoryGuid: ptr GUID,
+  bRetrieveAllSubCategories: BOOLEAN,
+  ppAuditSubCategoriesArray: ptr ptr GUID,
+  pCountReturned: PULONG,
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditLookupCategoryGuidFromCategoryId*(
+  AuditCategoryId: POLICY_AUDIT_EVENT_TYPE, pAuditCategoryGuid: ptr GUID
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditQuerySecurity*(
+  SecurityInformation: SECURITY_INFORMATION,
+  ppSecurityDescriptor: ptr PSECURITY_DESCRIPTOR,
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditLookupSubCategoryNameA*(
+  pAuditSubCategoryGuid: ptr GUID, ppszSubCategoryName: ptr LPSTR
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditLookupSubCategoryNameW*(
+  pAuditSubCategoryGuid: ptr GUID, ppszSubCategoryName: ptr LPWSTR
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditLookupCategoryNameA*(
+  pAuditCategoryGuid: ptr GUID, ppszCategoryName: ptr LPSTR
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditLookupCategoryNameW*(
+  pAuditCategoryGuid: ptr GUID, ppszCategoryName: ptr LPWSTR
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditLookupCategoryIdFromCategoryGuid*(
+  pAuditCategoryGuid: ptr GUID, pAuditCategoryId: PPOLICY_AUDIT_EVENT_TYPE
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AuditSetSecurity*(
+  SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AcquireCredentialsHandleW*(
+  pszPrincipal: ptr SEC_WCHAR,
+  pszPackage: ptr SEC_WCHAR,
+  fCredentialUse: int32,
+  pvLogonId: pointer,
+  pAuthData: pointer,
+  pGetKeyFn: SEC_GET_KEY_FN,
+  pvGetKeyArgument: pointer,
+  phCredential: PCredHandle,
+  ptsExpiry: PTimeStamp,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc AcquireCredentialsHandleA*(
+  pszPrincipal: ptr SEC_CHAR,
+  pszPackage: ptr SEC_CHAR,
+  fCredentialUse: int32,
+  pvLogonId: pointer,
+  pAuthData: pointer,
+  pGetKeyFn: SEC_GET_KEY_FN,
+  pvGetKeyArgument: pointer,
+  phCredential: PCredHandle,
+  ptsExpiry: PTimeStamp,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc FreeCredentialsHandle*(
+  phCredential: PCredHandle
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc AddCredentialsW*(
+  hCredentials: PCredHandle,
+  pszPrincipal: ptr SEC_WCHAR,
+  pszPackage: ptr SEC_WCHAR,
+  fCredentialUse: int32,
+  pAuthData: pointer,
+  pGetKeyFn: SEC_GET_KEY_FN,
+  pvGetKeyArgument: pointer,
+  ptsExpiry: PTimeStamp,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc AddCredentialsA*(
+  hCredentials: PCredHandle,
+  pszPrincipal: ptr SEC_CHAR,
+  pszPackage: ptr SEC_CHAR,
+  fCredentialUse: int32,
+  pAuthData: pointer,
+  pGetKeyFn: SEC_GET_KEY_FN,
+  pvGetKeyArgument: pointer,
+  ptsExpiry: PTimeStamp,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc InitializeSecurityContextW*(
+  phCredential: PCredHandle,
+  phContext: PCtxtHandle,
+  pszTargetName: ptr SEC_WCHAR,
+  fContextReq: int32,
+  Reserved1: int32,
+  TargetDataRep: int32,
+  pInput: PSecBufferDesc,
+  Reserved2: int32,
+  phNewContext: PCtxtHandle,
+  pOutput: PSecBufferDesc,
+  pfContextAttr: ptr int32,
+  ptsExpiry: PTimeStamp,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc InitializeSecurityContextA*(
+  phCredential: PCredHandle,
+  phContext: PCtxtHandle,
+  pszTargetName: ptr SEC_CHAR,
+  fContextReq: int32,
+  Reserved1: int32,
+  TargetDataRep: int32,
+  pInput: PSecBufferDesc,
+  Reserved2: int32,
+  phNewContext: PCtxtHandle,
+  pOutput: PSecBufferDesc,
+  pfContextAttr: ptr int32,
+  ptsExpiry: PTimeStamp,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc AcceptSecurityContext*(
+  phCredential: PCredHandle,
+  phContext: PCtxtHandle,
+  pInput: PSecBufferDesc,
+  fContextReq: int32,
+  TargetDataRep: int32,
+  phNewContext: PCtxtHandle,
+  pOutput: PSecBufferDesc,
+  pfContextAttr: ptr int32,
+  ptsExpiry: PTimeStamp,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc CompleteAuthToken*(
+  phContext: PCtxtHandle, pToken: PSecBufferDesc
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc ImpersonateSecurityContext*(
+  phContext: PCtxtHandle
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc RevertSecurityContext*(
+  phContext: PCtxtHandle
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc QuerySecurityContextToken*(
+  phContext: PCtxtHandle, Token: ptr HANDLE
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc DeleteSecurityContext*(
+  phContext: PCtxtHandle
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc ApplyControlToken*(
+  phContext: PCtxtHandle, pInput: PSecBufferDesc
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc QueryContextAttributesW*(
+  phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc QueryContextAttributesA*(
+  phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc SetContextAttributesW*(
+  phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc SetContextAttributesA*(
+  phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc QueryCredentialsAttributesW*(
+  phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc QueryCredentialsAttributesA*(
+  phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc SetCredentialsAttributesW*(
+  phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc SetCredentialsAttributesA*(
+  phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc FreeContextBuffer*(
+  pvContextBuffer: pointer
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc MakeSignature*(
+  phContext: PCtxtHandle, fQOP: int32, pMessage: PSecBufferDesc, MessageSeqNo: int32
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc VerifySignature*(
+  phContext: PCtxtHandle,
+  pMessage: PSecBufferDesc,
+  MessageSeqNo: int32,
+  pfQOP: ptr int32,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc EncryptMessage*(
+  phContext: PCtxtHandle, fQOP: int32, pMessage: PSecBufferDesc, MessageSeqNo: int32
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc DecryptMessage*(
+  phContext: PCtxtHandle,
+  pMessage: PSecBufferDesc,
+  MessageSeqNo: int32,
+  pfQOP: ptr int32,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc EnumerateSecurityPackagesW*(
+  pcPackages: ptr int32, ppPackageInfo: ptr PSecPkgInfoW
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "sspicli", importc.}
+
+proc EnumerateSecurityPackagesA*(
+  pcPackages: ptr int32, ppPackageInfo: ptr PSecPkgInfoA
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "sspicli", importc.}
+
+proc QuerySecurityPackageInfoW*(
+  pszPackageName: ptr SEC_WCHAR, ppPackageInfo: ptr PSecPkgInfoW
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc QuerySecurityPackageInfoA*(
+  pszPackageName: ptr SEC_CHAR, ppPackageInfo: ptr PSecPkgInfoA
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc ExportSecurityContext*(
+  phContext: PCtxtHandle, fFlags: ULONG, pPackedContext: PSecBuffer, pToken: ptr pointer
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc ImportSecurityContextW*(
+  pszPackage: ptr SEC_WCHAR,
+  pPackedContext: PSecBuffer,
+  Token: pointer,
+  phContext: PCtxtHandle,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc ImportSecurityContextA*(
+  pszPackage: ptr SEC_CHAR,
+  pPackedContext: PSecBuffer,
+  Token: pointer,
+  phContext: PCtxtHandle,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc FreeCredentialHandle*(
+  phCredential: PCredHandle
+): SECURITY_STATUS {.
+  winapi, stdcall, dynlib: "secur32", importc: "FreeCredentialsHandle"
+.}
+
+proc InitSecurityInterfaceA*(): PSecurityFunctionTableA {.
+  winapi, stdcall, dynlib: "secur32", importc
+.}
+
+proc InitSecurityInterfaceW*(): PSecurityFunctionTableW {.
+  winapi, stdcall, dynlib: "secur32", importc
+.}
+
+proc SaslEnumerateProfilesA*(
+  ProfileList: ptr LPSTR, ProfileCount: ptr ULONG
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc SaslEnumerateProfilesW*(
+  ProfileList: ptr LPWSTR, ProfileCount: ptr ULONG
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc SaslGetProfilePackageA*(
+  ProfileName: LPSTR, PackageInfo: ptr PSecPkgInfoA
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc SaslGetProfilePackageW*(
+  ProfileName: LPWSTR, PackageInfo: ptr PSecPkgInfoW
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc SaslIdentifyPackageA*(
+  pInput: PSecBufferDesc, PackageInfo: ptr PSecPkgInfoA
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc SaslIdentifyPackageW*(
+  pInput: PSecBufferDesc, PackageInfo: ptr PSecPkgInfoW
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc SaslInitializeSecurityContextW*(
+  phCredential: PCredHandle,
+  phContext: PCtxtHandle,
+  pszTargetName: LPWSTR,
+  fContextReq: int32,
+  Reserved1: int32,
+  TargetDataRep: int32,
+  pInput: PSecBufferDesc,
+  Reserved2: int32,
+  phNewContext: PCtxtHandle,
+  pOutput: PSecBufferDesc,
+  pfContextAttr: ptr int32,
+  ptsExpiry: PTimeStamp,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc SaslInitializeSecurityContextA*(
+  phCredential: PCredHandle,
+  phContext: PCtxtHandle,
+  pszTargetName: LPSTR,
+  fContextReq: int32,
+  Reserved1: int32,
+  TargetDataRep: int32,
+  pInput: PSecBufferDesc,
+  Reserved2: int32,
+  phNewContext: PCtxtHandle,
+  pOutput: PSecBufferDesc,
+  pfContextAttr: ptr int32,
+  ptsExpiry: PTimeStamp,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc SaslAcceptSecurityContext*(
+  phCredential: PCredHandle,
+  phContext: PCtxtHandle,
+  pInput: PSecBufferDesc,
+  fContextReq: int32,
+  TargetDataRep: int32,
+  phNewContext: PCtxtHandle,
+  pOutput: PSecBufferDesc,
+  pfContextAttr: ptr int32,
+  ptsExpiry: PTimeStamp,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc SaslSetContextOption*(
+  ContextHandle: PCtxtHandle, Option: ULONG, Value: PVOID, Size: ULONG
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc SaslGetContextOption*(
+  ContextHandle: PCtxtHandle, Option: ULONG, Value: PVOID, Size: ULONG, Needed: PULONG
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc AddSecurityPackageA*(
+  pszPackageName: LPSTR, pOptions: PSECURITY_PACKAGE_OPTIONS
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc AddSecurityPackageW*(
+  pszPackageName: LPWSTR, pOptions: PSECURITY_PACKAGE_OPTIONS
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc DeleteSecurityPackageA*(
+  pszPackageName: ptr SEC_CHAR
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc DeleteSecurityPackageW*(
+  pszPackageName: ptr SEC_WCHAR
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc GetUserNameExA*(
+  NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPSTR, nSize: PULONG
+): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc GetUserNameExW*(
+  NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPWSTR, nSize: PULONG
+): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc GetComputerObjectNameA*(
+  NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPSTR, nSize: PULONG
+): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc GetComputerObjectNameW*(
+  NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPWSTR, nSize: PULONG
+): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc TranslateNameA*(
+  lpAccountName: LPCSTR,
+  AccountNameFormat: EXTENDED_NAME_FORMAT,
+  DesiredNameFormat: EXTENDED_NAME_FORMAT,
+  lpTranslatedName: LPSTR,
+  nSize: PULONG,
+): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc TranslateNameW*(
+  lpAccountName: LPCWSTR,
+  AccountNameFormat: EXTENDED_NAME_FORMAT,
+  DesiredNameFormat: EXTENDED_NAME_FORMAT,
+  lpTranslatedName: LPWSTR,
+  nSize: PULONG,
+): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc.}
+
+proc RtlGenRandom*(
+  RandomBuffer: PVOID, RandomBufferLength: ULONG
+): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc: "SystemFunction036".}
+
+proc RtlEncryptMemory*(
+  Memory: PVOID, MemorySize: ULONG, OptionFlags: ULONG
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc: "SystemFunction040".}
+
+proc RtlDecryptMemory*(
+  Memory: PVOID, MemorySize: ULONG, OptionFlags: ULONG
+): NTSTATUS {.winapi, stdcall, dynlib: "advapi32", importc: "SystemFunction041".}
+
+proc `ContextInformation=`*(self: var KERB_SMARTCARD_CSP_INFO, x: PVOID) {.inline.} =
+  self.union1.ContextInformation = x
+
+proc ContextInformation*(self: KERB_SMARTCARD_CSP_INFO): PVOID {.inline.} =
+  self.union1.ContextInformation
+
+proc ContextInformation*(self: var KERB_SMARTCARD_CSP_INFO): var PVOID {.inline.} =
+  self.union1.ContextInformation
+
+proc `SpaceHolderForWow64=`*(self: var KERB_SMARTCARD_CSP_INFO, x: ULONG64) {.inline.} =
+  self.union1.SpaceHolderForWow64 = x
+
+proc SpaceHolderForWow64*(self: KERB_SMARTCARD_CSP_INFO): ULONG64 {.inline.} =
+  self.union1.SpaceHolderForWow64
+
+proc SpaceHolderForWow64*(self: var KERB_SMARTCARD_CSP_INFO): var ULONG64 {.inline.} =
+  self.union1.SpaceHolderForWow64
+
 when winimUnicode:
   type
     SECURITY_PSTR* = ptr SEC_WCHAR
@@ -1892,32 +2773,177 @@
     PSEC_WINNT_AUTH_IDENTITY* = PSEC_WINNT_AUTH_IDENTITY_W
     SEC_WINNT_AUTH_IDENTITY_EX* = SEC_WINNT_AUTH_IDENTITY_EXW
     PSEC_WINNT_AUTH_IDENTITY_EX* = PSEC_WINNT_AUTH_IDENTITY_EXW
+
   const
     NEGOSSP_NAME* = NEGOSSP_NAME_W
     SECURITY_ENTRYPOINT* = SECURITY_ENTRYPOINTW
     SECURITY_ENTRYPOINT_ANSI* = SECURITY_ENTRYPOINT_ANSIW
-  proc AuditLookupSubCategoryName*(pAuditSubCategoryGuid: ptr GUID, ppszSubCategoryName: ptr LPWSTR): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc: "AuditLookupSubCategoryNameW".}
-  proc AuditLookupCategoryName*(pAuditCategoryGuid: ptr GUID, ppszCategoryName: ptr LPWSTR): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc: "AuditLookupCategoryNameW".}
-  proc AcquireCredentialsHandle*(pszPrincipal: ptr SEC_WCHAR, pszPackage: ptr SEC_WCHAR, fCredentialUse: int32, pvLogonId: pointer, pAuthData: pointer, pGetKeyFn: SEC_GET_KEY_FN, pvGetKeyArgument: pointer, phCredential: PCredHandle, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "AcquireCredentialsHandleW".}
-  proc AddCredentials*(hCredentials: PCredHandle, pszPrincipal: ptr SEC_WCHAR, pszPackage: ptr SEC_WCHAR, fCredentialUse: int32, pAuthData: pointer, pGetKeyFn: SEC_GET_KEY_FN, pvGetKeyArgument: pointer, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "AddCredentialsW".}
-  proc InitializeSecurityContext*(phCredential: PCredHandle, phContext: PCtxtHandle, pszTargetName: ptr SEC_WCHAR, fContextReq: int32, Reserved1: int32, TargetDataRep: int32, pInput: PSecBufferDesc, Reserved2: int32, phNewContext: PCtxtHandle, pOutput: PSecBufferDesc, pfContextAttr: ptr int32, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "InitializeSecurityContextW".}
-  proc QueryContextAttributes*(phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "QueryContextAttributesW".}
-  proc SetContextAttributes*(phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "SetContextAttributesW".}
-  proc QueryCredentialsAttributes*(phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "QueryCredentialsAttributesW".}
-  proc SetCredentialsAttributes*(phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "SetCredentialsAttributesW".}
-  proc EnumerateSecurityPackages*(pcPackages: ptr int32, ppPackageInfo: ptr PSecPkgInfoW): SECURITY_STATUS {.winapi, stdcall, dynlib: "sspicli", importc: "EnumerateSecurityPackagesW".}
-  proc QuerySecurityPackageInfo*(pszPackageName: ptr SEC_WCHAR, ppPackageInfo: ptr PSecPkgInfoW): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "QuerySecurityPackageInfoW".}
-  proc ImportSecurityContext*(pszPackage: ptr SEC_WCHAR, pPackedContext: PSecBuffer, Token: pointer, phContext: PCtxtHandle): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "ImportSecurityContextW".}
-  proc InitSecurityInterface*(): PSecurityFunctionTableW {.winapi, stdcall, dynlib: "secur32", importc: "InitSecurityInterfaceW".}
-  proc SaslEnumerateProfiles*(ProfileList: ptr LPWSTR, ProfileCount: ptr ULONG): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "SaslEnumerateProfilesW".}
-  proc SaslGetProfilePackage*(ProfileName: LPWSTR, PackageInfo: ptr PSecPkgInfoW): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "SaslGetProfilePackageW".}
-  proc SaslIdentifyPackage*(pInput: PSecBufferDesc, PackageInfo: ptr PSecPkgInfoW): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "SaslIdentifyPackageW".}
-  proc SaslInitializeSecurityContext*(phCredential: PCredHandle, phContext: PCtxtHandle, pszTargetName: LPWSTR, fContextReq: int32, Reserved1: int32, TargetDataRep: int32, pInput: PSecBufferDesc, Reserved2: int32, phNewContext: PCtxtHandle, pOutput: PSecBufferDesc, pfContextAttr: ptr int32, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "SaslInitializeSecurityContextW".}
-  proc AddSecurityPackage*(pszPackageName: LPWSTR, pOptions: PSECURITY_PACKAGE_OPTIONS): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "AddSecurityPackageW".}
-  proc DeleteSecurityPackage*(pszPackageName: ptr SEC_WCHAR): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "DeleteSecurityPackageW".}
-  proc GetUserNameEx*(NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPWSTR, nSize: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc: "GetUserNameExW".}
-  proc GetComputerObjectName*(NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPWSTR, nSize: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc: "GetComputerObjectNameW".}
-  proc TranslateName*(lpAccountName: LPCWSTR, AccountNameFormat: EXTENDED_NAME_FORMAT, DesiredNameFormat: EXTENDED_NAME_FORMAT, lpTranslatedName: LPWSTR, nSize: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc: "TranslateNameW".}
+  proc AuditLookupSubCategoryName*(
+    pAuditSubCategoryGuid: ptr GUID, ppszSubCategoryName: ptr LPWSTR
+  ): BOOLEAN {.
+    winapi, stdcall, dynlib: "advapi32", importc: "AuditLookupSubCategoryNameW"
+  .}
+
+  proc AuditLookupCategoryName*(
+    pAuditCategoryGuid: ptr GUID, ppszCategoryName: ptr LPWSTR
+  ): BOOLEAN {.
+    winapi, stdcall, dynlib: "advapi32", importc: "AuditLookupCategoryNameW"
+  .}
+
+  proc AcquireCredentialsHandle*(
+    pszPrincipal: ptr SEC_WCHAR,
+    pszPackage: ptr SEC_WCHAR,
+    fCredentialUse: int32,
+    pvLogonId: pointer,
+    pAuthData: pointer,
+    pGetKeyFn: SEC_GET_KEY_FN,
+    pvGetKeyArgument: pointer,
+    phCredential: PCredHandle,
+    ptsExpiry: PTimeStamp,
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "AcquireCredentialsHandleW"
+  .}
+
+  proc AddCredentials*(
+    hCredentials: PCredHandle,
+    pszPrincipal: ptr SEC_WCHAR,
+    pszPackage: ptr SEC_WCHAR,
+    fCredentialUse: int32,
+    pAuthData: pointer,
+    pGetKeyFn: SEC_GET_KEY_FN,
+    pvGetKeyArgument: pointer,
+    ptsExpiry: PTimeStamp,
+  ): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "AddCredentialsW".}
+
+  proc InitializeSecurityContext*(
+    phCredential: PCredHandle,
+    phContext: PCtxtHandle,
+    pszTargetName: ptr SEC_WCHAR,
+    fContextReq: int32,
+    Reserved1: int32,
+    TargetDataRep: int32,
+    pInput: PSecBufferDesc,
+    Reserved2: int32,
+    phNewContext: PCtxtHandle,
+    pOutput: PSecBufferDesc,
+    pfContextAttr: ptr int32,
+    ptsExpiry: PTimeStamp,
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "InitializeSecurityContextW"
+  .}
+
+  proc QueryContextAttributes*(
+    phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "QueryContextAttributesW"
+  .}
+
+  proc SetContextAttributes*(
+    phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "SetContextAttributesW"
+  .}
+
+  proc QueryCredentialsAttributes*(
+    phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "QueryCredentialsAttributesW"
+  .}
+
+  proc SetCredentialsAttributes*(
+    phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "SetCredentialsAttributesW"
+  .}
+
+  proc EnumerateSecurityPackages*(
+    pcPackages: ptr int32, ppPackageInfo: ptr PSecPkgInfoW
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "sspicli", importc: "EnumerateSecurityPackagesW"
+  .}
+
+  proc QuerySecurityPackageInfo*(
+    pszPackageName: ptr SEC_WCHAR, ppPackageInfo: ptr PSecPkgInfoW
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "QuerySecurityPackageInfoW"
+  .}
+
+  proc ImportSecurityContext*(
+    pszPackage: ptr SEC_WCHAR,
+    pPackedContext: PSecBuffer,
+    Token: pointer,
+    phContext: PCtxtHandle,
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "ImportSecurityContextW"
+  .}
+
+  proc InitSecurityInterface*(): PSecurityFunctionTableW {.
+    winapi, stdcall, dynlib: "secur32", importc: "InitSecurityInterfaceW"
+  .}
+
+  proc SaslEnumerateProfiles*(
+    ProfileList: ptr LPWSTR, ProfileCount: ptr ULONG
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "SaslEnumerateProfilesW"
+  .}
+
+  proc SaslGetProfilePackage*(
+    ProfileName: LPWSTR, PackageInfo: ptr PSecPkgInfoW
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "SaslGetProfilePackageW"
+  .}
+
+  proc SaslIdentifyPackage*(
+    pInput: PSecBufferDesc, PackageInfo: ptr PSecPkgInfoW
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "SaslIdentifyPackageW"
+  .}
+
+  proc SaslInitializeSecurityContext*(
+    phCredential: PCredHandle,
+    phContext: PCtxtHandle,
+    pszTargetName: LPWSTR,
+    fContextReq: int32,
+    Reserved1: int32,
+    TargetDataRep: int32,
+    pInput: PSecBufferDesc,
+    Reserved2: int32,
+    phNewContext: PCtxtHandle,
+    pOutput: PSecBufferDesc,
+    pfContextAttr: ptr int32,
+    ptsExpiry: PTimeStamp,
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "SaslInitializeSecurityContextW"
+  .}
+
+  proc AddSecurityPackage*(
+    pszPackageName: LPWSTR, pOptions: PSECURITY_PACKAGE_OPTIONS
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "AddSecurityPackageW"
+  .}
+
+  proc DeleteSecurityPackage*(
+    pszPackageName: ptr SEC_WCHAR
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "DeleteSecurityPackageW"
+  .}
+
+  proc GetUserNameEx*(
+    NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPWSTR, nSize: PULONG
+  ): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc: "GetUserNameExW".}
+
+  proc GetComputerObjectName*(
+    NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPWSTR, nSize: PULONG
+  ): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc: "GetComputerObjectNameW".}
+
+  proc TranslateName*(
+    lpAccountName: LPCWSTR,
+    AccountNameFormat: EXTENDED_NAME_FORMAT,
+    DesiredNameFormat: EXTENDED_NAME_FORMAT,
+    lpTranslatedName: LPWSTR,
+    nSize: PULONG,
+  ): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc: "TranslateNameW".}
+
 when winimAnsi:
   type
     SECURITY_PSTR* = ptr SEC_CHAR
@@ -1960,29 +2986,173 @@
     PSEC_WINNT_AUTH_IDENTITY* = PSEC_WINNT_AUTH_IDENTITY_A
     SEC_WINNT_AUTH_IDENTITY_EX* = SEC_WINNT_AUTH_IDENTITY_EXA
     PSEC_WINNT_AUTH_IDENTITY_EX* = PSEC_WINNT_AUTH_IDENTITY_EXA
+
   const
     NEGOSSP_NAME* = NEGOSSP_NAME_A
     SECURITY_ENTRYPOINT* = SECURITY_ENTRYPOINTA
     SECURITY_ENTRYPOINT_ANSI* = SECURITY_ENTRYPOINT_ANSIA
-  proc AuditLookupSubCategoryName*(pAuditSubCategoryGuid: ptr GUID, ppszSubCategoryName: ptr LPSTR): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc: "AuditLookupSubCategoryNameA".}
-  proc AuditLookupCategoryName*(pAuditCategoryGuid: ptr GUID, ppszCategoryName: ptr LPSTR): BOOLEAN {.winapi, stdcall, dynlib: "advapi32", importc: "AuditLookupCategoryNameA".}
-  proc AcquireCredentialsHandle*(pszPrincipal: ptr SEC_CHAR, pszPackage: ptr SEC_CHAR, fCredentialUse: int32, pvLogonId: pointer, pAuthData: pointer, pGetKeyFn: SEC_GET_KEY_FN, pvGetKeyArgument: pointer, phCredential: PCredHandle, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "AcquireCredentialsHandleA".}
-  proc AddCredentials*(hCredentials: PCredHandle, pszPrincipal: ptr SEC_CHAR, pszPackage: ptr SEC_CHAR, fCredentialUse: int32, pAuthData: pointer, pGetKeyFn: SEC_GET_KEY_FN, pvGetKeyArgument: pointer, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "AddCredentialsA".}
-  proc InitializeSecurityContext*(phCredential: PCredHandle, phContext: PCtxtHandle, pszTargetName: ptr SEC_CHAR, fContextReq: int32, Reserved1: int32, TargetDataRep: int32, pInput: PSecBufferDesc, Reserved2: int32, phNewContext: PCtxtHandle, pOutput: PSecBufferDesc, pfContextAttr: ptr int32, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "InitializeSecurityContextA".}
-  proc QueryContextAttributes*(phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "QueryContextAttributesA".}
-  proc SetContextAttributes*(phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "SetContextAttributesA".}
-  proc QueryCredentialsAttributes*(phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "QueryCredentialsAttributesA".}
-  proc SetCredentialsAttributes*(phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "SetCredentialsAttributesA".}
-  proc EnumerateSecurityPackages*(pcPackages: ptr int32, ppPackageInfo: ptr PSecPkgInfoA): SECURITY_STATUS {.winapi, stdcall, dynlib: "sspicli", importc: "EnumerateSecurityPackagesA".}
-  proc QuerySecurityPackageInfo*(pszPackageName: ptr SEC_CHAR, ppPackageInfo: ptr PSecPkgInfoA): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "QuerySecurityPackageInfoA".}
-  proc ImportSecurityContext*(pszPackage: ptr SEC_CHAR, pPackedContext: PSecBuffer, Token: pointer, phContext: PCtxtHandle): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "ImportSecurityContextA".}
-  proc InitSecurityInterface*(): PSecurityFunctionTableA {.winapi, stdcall, dynlib: "secur32", importc: "InitSecurityInterfaceA".}
-  proc SaslEnumerateProfiles*(ProfileList: ptr LPSTR, ProfileCount: ptr ULONG): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "SaslEnumerateProfilesA".}
-  proc SaslGetProfilePackage*(ProfileName: LPSTR, PackageInfo: ptr PSecPkgInfoA): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "SaslGetProfilePackageA".}
-  proc SaslIdentifyPackage*(pInput: PSecBufferDesc, PackageInfo: ptr PSecPkgInfoA): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "SaslIdentifyPackageA".}
-  proc SaslInitializeSecurityContext*(phCredential: PCredHandle, phContext: PCtxtHandle, pszTargetName: LPSTR, fContextReq: int32, Reserved1: int32, TargetDataRep: int32, pInput: PSecBufferDesc, Reserved2: int32, phNewContext: PCtxtHandle, pOutput: PSecBufferDesc, pfContextAttr: ptr int32, ptsExpiry: PTimeStamp): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "SaslInitializeSecurityContextA".}
-  proc AddSecurityPackage*(pszPackageName: LPSTR, pOptions: PSECURITY_PACKAGE_OPTIONS): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "AddSecurityPackageA".}
-  proc DeleteSecurityPackage*(pszPackageName: ptr SEC_CHAR): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "DeleteSecurityPackageA".}
-  proc GetUserNameEx*(NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPSTR, nSize: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc: "GetUserNameExA".}
-  proc GetComputerObjectName*(NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPSTR, nSize: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc: "GetComputerObjectNameA".}
-  proc TranslateName*(lpAccountName: LPCSTR, AccountNameFormat: EXTENDED_NAME_FORMAT, DesiredNameFormat: EXTENDED_NAME_FORMAT, lpTranslatedName: LPSTR, nSize: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc: "TranslateNameA".}
+  proc AuditLookupSubCategoryName*(
+    pAuditSubCategoryGuid: ptr GUID, ppszSubCategoryName: ptr LPSTR
+  ): BOOLEAN {.
+    winapi, stdcall, dynlib: "advapi32", importc: "AuditLookupSubCategoryNameA"
+  .}
+
+  proc AuditLookupCategoryName*(
+    pAuditCategoryGuid: ptr GUID, ppszCategoryName: ptr LPSTR
+  ): BOOLEAN {.
+    winapi, stdcall, dynlib: "advapi32", importc: "AuditLookupCategoryNameA"
+  .}
+
+  proc AcquireCredentialsHandle*(
+    pszPrincipal: ptr SEC_CHAR,
+    pszPackage: ptr SEC_CHAR,
+    fCredentialUse: int32,
+    pvLogonId: pointer,
+    pAuthData: pointer,
+    pGetKeyFn: SEC_GET_KEY_FN,
+    pvGetKeyArgument: pointer,
+    phCredential: PCredHandle,
+    ptsExpiry: PTimeStamp,
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "AcquireCredentialsHandleA"
+  .}
+
+  proc AddCredentials*(
+    hCredentials: PCredHandle,
+    pszPrincipal: ptr SEC_CHAR,
+    pszPackage: ptr SEC_CHAR,
+    fCredentialUse: int32,
+    pAuthData: pointer,
+    pGetKeyFn: SEC_GET_KEY_FN,
+    pvGetKeyArgument: pointer,
+    ptsExpiry: PTimeStamp,
+  ): SECURITY_STATUS {.winapi, stdcall, dynlib: "secur32", importc: "AddCredentialsA".}
+
+  proc InitializeSecurityContext*(
+    phCredential: PCredHandle,
+    phContext: PCtxtHandle,
+    pszTargetName: ptr SEC_CHAR,
+    fContextReq: int32,
+    Reserved1: int32,
+    TargetDataRep: int32,
+    pInput: PSecBufferDesc,
+    Reserved2: int32,
+    phNewContext: PCtxtHandle,
+    pOutput: PSecBufferDesc,
+    pfContextAttr: ptr int32,
+    ptsExpiry: PTimeStamp,
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "InitializeSecurityContextA"
+  .}
+
+  proc QueryContextAttributes*(
+    phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "QueryContextAttributesA"
+  .}
+
+  proc SetContextAttributes*(
+    phContext: PCtxtHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "SetContextAttributesA"
+  .}
+
+  proc QueryCredentialsAttributes*(
+    phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "QueryCredentialsAttributesA"
+  .}
+
+  proc SetCredentialsAttributes*(
+    phCredential: PCredHandle, ulAttribute: int32, pBuffer: pointer, cbBuffer: int32
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "SetCredentialsAttributesA"
+  .}
+
+  proc EnumerateSecurityPackages*(
+    pcPackages: ptr int32, ppPackageInfo: ptr PSecPkgInfoA
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "sspicli", importc: "EnumerateSecurityPackagesA"
+  .}
+
+  proc QuerySecurityPackageInfo*(
+    pszPackageName: ptr SEC_CHAR, ppPackageInfo: ptr PSecPkgInfoA
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "QuerySecurityPackageInfoA"
+  .}
+
+  proc ImportSecurityContext*(
+    pszPackage: ptr SEC_CHAR,
+    pPackedContext: PSecBuffer,
+    Token: pointer,
+    phContext: PCtxtHandle,
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "ImportSecurityContextA"
+  .}
+
+  proc InitSecurityInterface*(): PSecurityFunctionTableA {.
+    winapi, stdcall, dynlib: "secur32", importc: "InitSecurityInterfaceA"
+  .}
+
+  proc SaslEnumerateProfiles*(
+    ProfileList: ptr LPSTR, ProfileCount: ptr ULONG
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "SaslEnumerateProfilesA"
+  .}
+
+  proc SaslGetProfilePackage*(
+    ProfileName: LPSTR, PackageInfo: ptr PSecPkgInfoA
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "SaslGetProfilePackageA"
+  .}
+
+  proc SaslIdentifyPackage*(
+    pInput: PSecBufferDesc, PackageInfo: ptr PSecPkgInfoA
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "SaslIdentifyPackageA"
+  .}
+
+  proc SaslInitializeSecurityContext*(
+    phCredential: PCredHandle,
+    phContext: PCtxtHandle,
+    pszTargetName: LPSTR,
+    fContextReq: int32,
+    Reserved1: int32,
+    TargetDataRep: int32,
+    pInput: PSecBufferDesc,
+    Reserved2: int32,
+    phNewContext: PCtxtHandle,
+    pOutput: PSecBufferDesc,
+    pfContextAttr: ptr int32,
+    ptsExpiry: PTimeStamp,
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "SaslInitializeSecurityContextA"
+  .}
+
+  proc AddSecurityPackage*(
+    pszPackageName: LPSTR, pOptions: PSECURITY_PACKAGE_OPTIONS
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "AddSecurityPackageA"
+  .}
+
+  proc DeleteSecurityPackage*(
+    pszPackageName: ptr SEC_CHAR
+  ): SECURITY_STATUS {.
+    winapi, stdcall, dynlib: "secur32", importc: "DeleteSecurityPackageA"
+  .}
+
+  proc GetUserNameEx*(
+    NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPSTR, nSize: PULONG
+  ): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc: "GetUserNameExA".}
+
+  proc GetComputerObjectName*(
+    NameFormat: EXTENDED_NAME_FORMAT, lpNameBuffer: LPSTR, nSize: PULONG
+  ): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc: "GetComputerObjectNameA".}
+
+  proc TranslateName*(
+    lpAccountName: LPCSTR,
+    AccountNameFormat: EXTENDED_NAME_FORMAT,
+    DesiredNameFormat: EXTENDED_NAME_FORMAT,
+    lpTranslatedName: LPSTR,
+    nSize: PULONG,
+  ): BOOLEAN {.winapi, stdcall, dynlib: "secur32", importc: "TranslateNameA".}
--- a/semicongine/thirdparty/winim/winim/inc/setupapi.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/setupapi.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -22,24 +22,27 @@
     CurrentInf*: PVOID
     Section*: UINT
     Line*: UINT
+
   PINFCONTEXT* = ptr INFCONTEXT
+
 when winimCpu64:
-  type
-    SP_INF_INFORMATION* {.pure.} = object
-      InfStyle*: DWORD
-      InfCount*: DWORD
-      VersionData*: array[ANYSIZE_ARRAY, BYTE]
+  type SP_INF_INFORMATION* {.pure.} = object
+    InfStyle*: DWORD
+    InfCount*: DWORD
+    VersionData*: array[ANYSIZE_ARRAY, BYTE]
+
 when winimCpu32:
-  type
-    SP_INF_INFORMATION* {.pure, packed.} = object
-      InfStyle*: DWORD
-      InfCount*: DWORD
-      VersionData*: array[ANYSIZE_ARRAY, BYTE]
+  type SP_INF_INFORMATION* {.pure, packed.} = object
+    InfStyle*: DWORD
+    InfCount*: DWORD
+    VersionData*: array[ANYSIZE_ARRAY, BYTE]
+
 type
   PSP_INF_INFORMATION* = ptr SP_INF_INFORMATION
   SP_ALTPLATFORM_INFO_V2_UNION1* {.pure, union.} = object
     Reserved*: WORD
     Flags*: WORD
+
   SP_ALTPLATFORM_INFO_V2* {.pure.} = object
     cbSize*: DWORD
     Platform*: DWORD
@@ -49,6 +52,7 @@
     union1*: SP_ALTPLATFORM_INFO_V2_UNION1
     FirstValidatedMajorVersion*: DWORD
     FirstValidatedMinorVersion*: DWORD
+
   PSP_ALTPLATFORM_INFO_V2* = ptr SP_ALTPLATFORM_INFO_V2
   SP_ALTPLATFORM_INFO_V1* {.pure.} = object
     cbSize*: DWORD
@@ -57,6 +61,7 @@
     MinorVersion*: DWORD
     ProcessorArchitecture*: WORD
     Reserved*: WORD
+
   PSP_ALTPLATFORM_INFO_V1* = ptr SP_ALTPLATFORM_INFO_V1
   SP_ALTPLATFORM_INFO* = SP_ALTPLATFORM_INFO_V2
   PSP_ALTPLATFORM_INFO* = PSP_ALTPLATFORM_INFO_V2
@@ -64,23 +69,27 @@
     cbSize*: DWORD
     OriginalInfName*: array[MAX_PATH, CHAR]
     OriginalCatalogName*: array[MAX_PATH, CHAR]
+
   PSP_ORIGINAL_FILE_INFO_A* = ptr SP_ORIGINAL_FILE_INFO_A
   SP_ORIGINAL_FILE_INFO_W* {.pure.} = object
     cbSize*: DWORD
     OriginalInfName*: array[MAX_PATH, WCHAR]
     OriginalCatalogName*: array[MAX_PATH, WCHAR]
+
   PSP_ORIGINAL_FILE_INFO_W* = ptr SP_ORIGINAL_FILE_INFO_W
   FILEPATHS_A* {.pure.} = object
     Target*: PCSTR
     Source*: PCSTR
     Win32Error*: UINT
     Flags*: DWORD
+
   PFILEPATHS_A* = ptr FILEPATHS_A
   FILEPATHS_W* {.pure.} = object
     Target*: PCWSTR
     Source*: PCWSTR
     Win32Error*: UINT
     Flags*: DWORD
+
   PFILEPATHS_W* = ptr FILEPATHS_W
   FILEPATHS_SIGNERINFO_A* {.pure.} = object
     Target*: PCSTR
@@ -90,6 +99,7 @@
     DigitalSigner*: PCSTR
     Version*: PCSTR
     CatalogFile*: PCSTR
+
   PFILEPATHS_SIGNERINFO_A* = ptr FILEPATHS_SIGNERINFO_A
   FILEPATHS_SIGNERINFO_W* {.pure.} = object
     Target*: PCWSTR
@@ -99,6 +109,7 @@
     DigitalSigner*: PCWSTR
     Version*: PCWSTR
     CatalogFile*: PCWSTR
+
   PFILEPATHS_SIGNERINFO_W* = ptr FILEPATHS_SIGNERINFO_W
   SOURCE_MEDIA_A* {.pure.} = object
     Reserved*: PCSTR
@@ -107,6 +118,7 @@
     SourcePath*: PCSTR
     SourceFile*: PCSTR
     Flags*: DWORD
+
   PSOURCE_MEDIA_A* = ptr SOURCE_MEDIA_A
   SOURCE_MEDIA_W* {.pure.} = object
     Reserved*: PCWSTR
@@ -115,6 +127,7 @@
     SourcePath*: PCWSTR
     SourceFile*: PCWSTR
     Flags*: DWORD
+
   PSOURCE_MEDIA_W* = ptr SOURCE_MEDIA_W
   CABINET_INFO_A* {.pure.} = object
     CabinetPath*: PCSTR
@@ -122,6 +135,7 @@
     DiskName*: PCSTR
     SetId*: USHORT
     CabinetNumber*: USHORT
+
   PCABINET_INFO_A* = ptr CABINET_INFO_A
   CABINET_INFO_W* {.pure.} = object
     CabinetPath*: PCWSTR
@@ -129,49 +143,50 @@
     DiskName*: PCWSTR
     SetId*: USHORT
     CabinetNumber*: USHORT
+
   PCABINET_INFO_W* = ptr CABINET_INFO_W
+
 when winimCpu64:
-  type
-    FILE_IN_CABINET_INFO_A* {.pure.} = object
-      NameInCabinet*: PCSTR
-      FileSize*: DWORD
-      Win32Error*: DWORD
-      DosDate*: WORD
-      DosTime*: WORD
-      DosAttribs*: WORD
-      FullTargetName*: array[MAX_PATH, CHAR]
+  type FILE_IN_CABINET_INFO_A* {.pure.} = object
+    NameInCabinet*: PCSTR
+    FileSize*: DWORD
+    Win32Error*: DWORD
+    DosDate*: WORD
+    DosTime*: WORD
+    DosAttribs*: WORD
+    FullTargetName*: array[MAX_PATH, CHAR]
+
 when winimCpu32:
-  type
-    FILE_IN_CABINET_INFO_A* {.pure, packed.} = object
-      NameInCabinet*: PCSTR
-      FileSize*: DWORD
-      Win32Error*: DWORD
-      DosDate*: WORD
-      DosTime*: WORD
-      DosAttribs*: WORD
-      FullTargetName*: array[MAX_PATH, CHAR]
-type
-  PFILE_IN_CABINET_INFO_A* = ptr FILE_IN_CABINET_INFO_A
+  type FILE_IN_CABINET_INFO_A* {.pure, packed.} = object
+    NameInCabinet*: PCSTR
+    FileSize*: DWORD
+    Win32Error*: DWORD
+    DosDate*: WORD
+    DosTime*: WORD
+    DosAttribs*: WORD
+    FullTargetName*: array[MAX_PATH, CHAR]
+
+type PFILE_IN_CABINET_INFO_A* = ptr FILE_IN_CABINET_INFO_A
 when winimCpu64:
-  type
-    FILE_IN_CABINET_INFO_W* {.pure.} = object
-      NameInCabinet*: PCWSTR
-      FileSize*: DWORD
-      Win32Error*: DWORD
-      DosDate*: WORD
-      DosTime*: WORD
-      DosAttribs*: WORD
-      FullTargetName*: array[MAX_PATH, WCHAR]
+  type FILE_IN_CABINET_INFO_W* {.pure.} = object
+    NameInCabinet*: PCWSTR
+    FileSize*: DWORD
+    Win32Error*: DWORD
+    DosDate*: WORD
+    DosTime*: WORD
+    DosAttribs*: WORD
+    FullTargetName*: array[MAX_PATH, WCHAR]
+
 when winimCpu32:
-  type
-    FILE_IN_CABINET_INFO_W* {.pure, packed.} = object
-      NameInCabinet*: PCWSTR
-      FileSize*: DWORD
-      Win32Error*: DWORD
-      DosDate*: WORD
-      DosTime*: WORD
-      DosAttribs*: WORD
-      FullTargetName*: array[MAX_PATH, WCHAR]
+  type FILE_IN_CABINET_INFO_W* {.pure, packed.} = object
+    NameInCabinet*: PCWSTR
+    FileSize*: DWORD
+    Win32Error*: DWORD
+    DosDate*: WORD
+    DosTime*: WORD
+    DosAttribs*: WORD
+    FullTargetName*: array[MAX_PATH, WCHAR]
+
 type
   PFILE_IN_CABINET_INFO_W* = ptr FILE_IN_CABINET_INFO_W
   SP_REGISTER_CONTROL_STATUSA* {.pure.} = object
@@ -179,12 +194,14 @@
     FileName*: PCSTR
     Win32Error*: DWORD
     FailureCode*: DWORD
+
   PSP_REGISTER_CONTROL_STATUSA* = ptr SP_REGISTER_CONTROL_STATUSA
   SP_REGISTER_CONTROL_STATUSW* {.pure.} = object
     cbSize*: DWORD
     FileName*: PCWSTR
     Win32Error*: DWORD
     FailureCode*: DWORD
+
   PSP_REGISTER_CONTROL_STATUSW* = ptr SP_REGISTER_CONTROL_STATUSW
   SP_FILE_COPY_PARAMS_A* {.pure.} = object
     cbSize*: DWORD
@@ -199,6 +216,7 @@
     CopyStyle*: DWORD
     LayoutInf*: HINF
     SecurityDescriptor*: PCSTR
+
   PSP_FILE_COPY_PARAMS_A* = ptr SP_FILE_COPY_PARAMS_A
   SP_FILE_COPY_PARAMS_W* {.pure.} = object
     cbSize*: DWORD
@@ -213,93 +231,98 @@
     CopyStyle*: DWORD
     LayoutInf*: HINF
     SecurityDescriptor*: PCWSTR
+
   PSP_FILE_COPY_PARAMS_W* = ptr SP_FILE_COPY_PARAMS_W
   SP_DEVINFO_DATA* {.pure.} = object
     cbSize*: DWORD
     ClassGuid*: GUID
     DevInst*: DWORD
     Reserved*: ULONG_PTR
+
   PSP_DEVINFO_DATA* = ptr SP_DEVINFO_DATA
   SP_DEVICE_INTERFACE_DATA* {.pure.} = object
     cbSize*: DWORD
     InterfaceClassGuid*: GUID
     Flags*: DWORD
     Reserved*: ULONG_PTR
+
   PSP_DEVICE_INTERFACE_DATA* = ptr SP_DEVICE_INTERFACE_DATA
   SP_INTERFACE_DEVICE_DATA* = SP_DEVICE_INTERFACE_DATA
   PSP_INTERFACE_DEVICE_DATA* = PSP_DEVICE_INTERFACE_DATA
+
 when winimCpu64:
-  type
-    SP_DEVICE_INTERFACE_DETAIL_DATA_A* {.pure.} = object
-      cbSize*: DWORD
-      DevicePath*: array[ANYSIZE_ARRAY, CHAR]
+  type SP_DEVICE_INTERFACE_DETAIL_DATA_A* {.pure.} = object
+    cbSize*: DWORD
+    DevicePath*: array[ANYSIZE_ARRAY, CHAR]
+
 when winimCpu32:
-  type
-    SP_DEVICE_INTERFACE_DETAIL_DATA_A* {.pure, packed.} = object
-      cbSize*: DWORD
-      DevicePath*: array[ANYSIZE_ARRAY, CHAR]
-type
-  PSP_DEVICE_INTERFACE_DETAIL_DATA_A* = ptr SP_DEVICE_INTERFACE_DETAIL_DATA_A
+  type SP_DEVICE_INTERFACE_DETAIL_DATA_A* {.pure, packed.} = object
+    cbSize*: DWORD
+    DevicePath*: array[ANYSIZE_ARRAY, CHAR]
+
+type PSP_DEVICE_INTERFACE_DETAIL_DATA_A* = ptr SP_DEVICE_INTERFACE_DETAIL_DATA_A
 when winimCpu64:
-  type
-    SP_DEVICE_INTERFACE_DETAIL_DATA_W* {.pure.} = object
-      cbSize*: DWORD
-      DevicePath*: array[ANYSIZE_ARRAY, WCHAR]
+  type SP_DEVICE_INTERFACE_DETAIL_DATA_W* {.pure.} = object
+    cbSize*: DWORD
+    DevicePath*: array[ANYSIZE_ARRAY, WCHAR]
+
 when winimCpu32:
-  type
-    SP_DEVICE_INTERFACE_DETAIL_DATA_W* {.pure, packed.} = object
-      cbSize*: DWORD
-      DevicePath*: array[ANYSIZE_ARRAY, WCHAR]
+  type SP_DEVICE_INTERFACE_DETAIL_DATA_W* {.pure, packed.} = object
+    cbSize*: DWORD
+    DevicePath*: array[ANYSIZE_ARRAY, WCHAR]
+
 type
   PSP_DEVICE_INTERFACE_DETAIL_DATA_W* = ptr SP_DEVICE_INTERFACE_DETAIL_DATA_W
   SP_INTERFACE_DEVICE_DETAIL_DATA_W* = SP_DEVICE_INTERFACE_DETAIL_DATA_W
   PSP_INTERFACE_DEVICE_DETAIL_DATA_W* = PSP_DEVICE_INTERFACE_DETAIL_DATA_W
   SP_INTERFACE_DEVICE_DETAIL_DATA_A* = SP_DEVICE_INTERFACE_DETAIL_DATA_A
   PSP_INTERFACE_DEVICE_DETAIL_DATA_A* = PSP_DEVICE_INTERFACE_DETAIL_DATA_A
-const
-  SP_MAX_MACHINENAME_LENGTH* = MAX_PATH+3
+
+const SP_MAX_MACHINENAME_LENGTH* = MAX_PATH + 3
 when winimCpu64:
-  type
-    SP_DEVINFO_LIST_DETAIL_DATA_A* {.pure.} = object
-      cbSize*: DWORD
-      ClassGuid*: GUID
-      RemoteMachineHandle*: HANDLE
-      RemoteMachineName*: array[SP_MAX_MACHINENAME_LENGTH, CHAR]
+  type SP_DEVINFO_LIST_DETAIL_DATA_A* {.pure.} = object
+    cbSize*: DWORD
+    ClassGuid*: GUID
+    RemoteMachineHandle*: HANDLE
+    RemoteMachineName*: array[SP_MAX_MACHINENAME_LENGTH, CHAR]
+
 when winimCpu32:
-  type
-    SP_DEVINFO_LIST_DETAIL_DATA_A* {.pure, packed.} = object
-      cbSize*: DWORD
-      ClassGuid*: GUID
-      RemoteMachineHandle*: HANDLE
-      RemoteMachineName*: array[SP_MAX_MACHINENAME_LENGTH, CHAR]
-type
-  PSP_DEVINFO_LIST_DETAIL_DATA_A* = ptr SP_DEVINFO_LIST_DETAIL_DATA_A
+  type SP_DEVINFO_LIST_DETAIL_DATA_A* {.pure, packed.} = object
+    cbSize*: DWORD
+    ClassGuid*: GUID
+    RemoteMachineHandle*: HANDLE
+    RemoteMachineName*: array[SP_MAX_MACHINENAME_LENGTH, CHAR]
+
+type PSP_DEVINFO_LIST_DETAIL_DATA_A* = ptr SP_DEVINFO_LIST_DETAIL_DATA_A
 when winimCpu64:
-  type
-    SP_DEVINFO_LIST_DETAIL_DATA_W* {.pure.} = object
-      cbSize*: DWORD
-      ClassGuid*: GUID
-      RemoteMachineHandle*: HANDLE
-      RemoteMachineName*: array[SP_MAX_MACHINENAME_LENGTH, WCHAR]
+  type SP_DEVINFO_LIST_DETAIL_DATA_W* {.pure.} = object
+    cbSize*: DWORD
+    ClassGuid*: GUID
+    RemoteMachineHandle*: HANDLE
+    RemoteMachineName*: array[SP_MAX_MACHINENAME_LENGTH, WCHAR]
+
 when winimCpu32:
-  type
-    SP_DEVINFO_LIST_DETAIL_DATA_W* {.pure, packed.} = object
-      cbSize*: DWORD
-      ClassGuid*: GUID
-      RemoteMachineHandle*: HANDLE
-      RemoteMachineName*: array[SP_MAX_MACHINENAME_LENGTH, WCHAR]
+  type SP_DEVINFO_LIST_DETAIL_DATA_W* {.pure, packed.} = object
+    cbSize*: DWORD
+    ClassGuid*: GUID
+    RemoteMachineHandle*: HANDLE
+    RemoteMachineName*: array[SP_MAX_MACHINENAME_LENGTH, WCHAR]
+
 type
   PSP_DEVINFO_LIST_DETAIL_DATA_W* = ptr SP_DEVINFO_LIST_DETAIL_DATA_W
   DI_FUNCTION* = UINT
-  PSP_FILE_CALLBACK_W* = proc (Context: PVOID, Notification: UINT, Param1: UINT_PTR, Param2: UINT_PTR): UINT {.stdcall.}
+  PSP_FILE_CALLBACK_W* = proc(
+    Context: PVOID, Notification: UINT, Param1: UINT_PTR, Param2: UINT_PTR
+  ): UINT {.stdcall.}
+
 when winimUnicode:
-  type
-    PSP_FILE_CALLBACK* = PSP_FILE_CALLBACK_W
-type
-  PSP_FILE_CALLBACK_A* = proc (Context: PVOID, Notification: UINT, Param1: UINT_PTR, Param2: UINT_PTR): UINT {.stdcall.}
+  type PSP_FILE_CALLBACK* = PSP_FILE_CALLBACK_W
+type PSP_FILE_CALLBACK_A* = proc(
+  Context: PVOID, Notification: UINT, Param1: UINT_PTR, Param2: UINT_PTR
+): UINT {.stdcall.}
+
 when winimAnsi:
-  type
-    PSP_FILE_CALLBACK* = PSP_FILE_CALLBACK_A
+  type PSP_FILE_CALLBACK* = PSP_FILE_CALLBACK_A
 type
   SP_DEVINSTALL_PARAMS_A* {.pure.} = object
     cbSize*: DWORD
@@ -312,6 +335,7 @@
     ClassInstallReserved*: ULONG_PTR
     Reserved*: DWORD
     DriverPath*: array[MAX_PATH, CHAR]
+
   PSP_DEVINSTALL_PARAMS_A* = ptr SP_DEVINSTALL_PARAMS_A
   SP_DEVINSTALL_PARAMS_W* {.pure.} = object
     cbSize*: DWORD
@@ -324,32 +348,39 @@
     ClassInstallReserved*: ULONG_PTR
     Reserved*: DWORD
     DriverPath*: array[MAX_PATH, WCHAR]
+
   PSP_DEVINSTALL_PARAMS_W* = ptr SP_DEVINSTALL_PARAMS_W
   SP_CLASSINSTALL_HEADER* {.pure.} = object
     cbSize*: DWORD
     InstallFunction*: DI_FUNCTION
+
   PSP_CLASSINSTALL_HEADER* = ptr SP_CLASSINSTALL_HEADER
   SP_ENABLECLASS_PARAMS* {.pure.} = object
     ClassInstallHeader*: SP_CLASSINSTALL_HEADER
     ClassGuid*: GUID
     EnableMessage*: DWORD
+
   PSP_ENABLECLASS_PARAMS* = ptr SP_ENABLECLASS_PARAMS
   SP_PROPCHANGE_PARAMS* {.pure.} = object
     ClassInstallHeader*: SP_CLASSINSTALL_HEADER
     StateChange*: DWORD
     Scope*: DWORD
     HwProfile*: DWORD
+
   PSP_PROPCHANGE_PARAMS* = ptr SP_PROPCHANGE_PARAMS
   SP_REMOVEDEVICE_PARAMS* {.pure.} = object
     ClassInstallHeader*: SP_CLASSINSTALL_HEADER
     Scope*: DWORD
     HwProfile*: DWORD
+
   PSP_REMOVEDEVICE_PARAMS* = ptr SP_REMOVEDEVICE_PARAMS
   SP_UNREMOVEDEVICE_PARAMS* {.pure.} = object
     ClassInstallHeader*: SP_CLASSINSTALL_HEADER
     Scope*: DWORD
     HwProfile*: DWORD
+
   PSP_UNREMOVEDEVICE_PARAMS* = ptr SP_UNREMOVEDEVICE_PARAMS
+
 const
   MAX_TITLE_LEN* = 60
   MAX_INSTRUCTION_LEN* = 256
@@ -363,6 +394,7 @@
     ListLabel*: array[MAX_LABEL_LEN, CHAR]
     SubTitle*: array[MAX_SUBTITLE_LEN, CHAR]
     Reserved*: array[2, BYTE]
+
   PSP_SELECTDEVICE_PARAMS_A* = ptr SP_SELECTDEVICE_PARAMS_A
   SP_SELECTDEVICE_PARAMS_W* {.pure.} = object
     ClassInstallHeader*: SP_CLASSINSTALL_HEADER
@@ -370,15 +402,18 @@
     Instructions*: array[MAX_INSTRUCTION_LEN, WCHAR]
     ListLabel*: array[MAX_LABEL_LEN, WCHAR]
     SubTitle*: array[MAX_SUBTITLE_LEN, WCHAR]
+
   PSP_SELECTDEVICE_PARAMS_W* = ptr SP_SELECTDEVICE_PARAMS_W
-  PDETECT_PROGRESS_NOTIFY* = proc (ProgressNotifyParam: PVOID, DetectComplete: DWORD): WINBOOL {.stdcall.}
+  PDETECT_PROGRESS_NOTIFY* =
+    proc(ProgressNotifyParam: PVOID, DetectComplete: DWORD): WINBOOL {.stdcall.}
   SP_DETECTDEVICE_PARAMS* {.pure.} = object
     ClassInstallHeader*: SP_CLASSINSTALL_HEADER
     DetectProgressNotify*: PDETECT_PROGRESS_NOTIFY
     ProgressNotifyParam*: PVOID
+
   PSP_DETECTDEVICE_PARAMS* = ptr SP_DETECTDEVICE_PARAMS
-const
-  MAX_INSTALLWIZARD_DYNAPAGES* = 20
+
+const MAX_INSTALLWIZARD_DYNAPAGES* = 20
 type
   SP_INSTALLWIZARD_DATA* {.pure.} = object
     ClassInstallHeader*: SP_CLASSINSTALL_HEADER
@@ -389,6 +424,7 @@
     PrivateFlags*: DWORD
     PrivateData*: LPARAM
     hwndWizardDlg*: HWND
+
   PSP_INSTALLWIZARD_DATA* = ptr SP_INSTALLWIZARD_DATA
   SP_NEWDEVICEWIZARD_DATA* {.pure.} = object
     ClassInstallHeader*: SP_CLASSINSTALL_HEADER
@@ -396,6 +432,7 @@
     DynamicPages*: array[MAX_INSTALLWIZARD_DYNAPAGES, HPROPSHEETPAGE]
     NumDynamicPages*: DWORD
     hwndWizardDlg*: HWND
+
   PSP_NEWDEVICEWIZARD_DATA* = ptr SP_NEWDEVICEWIZARD_DATA
   SP_ADDPROPERTYPAGE_DATA* = SP_NEWDEVICEWIZARD_DATA
   PSP_ADDPROPERTYPAGE_DATA* = PSP_NEWDEVICEWIZARD_DATA
@@ -403,22 +440,26 @@
     ClassInstallHeader*: SP_CLASSINSTALL_HEADER
     ChmFile*: array[MAX_PATH, CHAR]
     HtmlTroubleShooter*: array[MAX_PATH, CHAR]
+
   PSP_TROUBLESHOOTER_PARAMS_A* = ptr SP_TROUBLESHOOTER_PARAMS_A
   SP_TROUBLESHOOTER_PARAMS_W* {.pure.} = object
     ClassInstallHeader*: SP_CLASSINSTALL_HEADER
     ChmFile*: array[MAX_PATH, WCHAR]
     HtmlTroubleShooter*: array[MAX_PATH, WCHAR]
+
   PSP_TROUBLESHOOTER_PARAMS_W* = ptr SP_TROUBLESHOOTER_PARAMS_W
-const
-  LINE_LEN* = 256
+
+const LINE_LEN* = 256
 type
   SP_POWERMESSAGEWAKE_PARAMS_A* {.pure.} = object
     ClassInstallHeader*: SP_CLASSINSTALL_HEADER
-    PowerMessageWake*: array[LINE_LEN*2, CHAR]
+    PowerMessageWake*: array[LINE_LEN * 2, CHAR]
+
   PSP_POWERMESSAGEWAKE_PARAMS_A* = ptr SP_POWERMESSAGEWAKE_PARAMS_A
   SP_POWERMESSAGEWAKE_PARAMS_W* {.pure.} = object
     ClassInstallHeader*: SP_CLASSINSTALL_HEADER
-    PowerMessageWake*: array[LINE_LEN*2, WCHAR]
+    PowerMessageWake*: array[LINE_LEN * 2, WCHAR]
+
   PSP_POWERMESSAGEWAKE_PARAMS_W* = ptr SP_POWERMESSAGEWAKE_PARAMS_W
   SP_DRVINFO_DATA_V2_A* {.pure, packed.} = object
     cbSize*: DWORD
@@ -429,6 +470,7 @@
     ProviderName*: array[LINE_LEN, CHAR]
     DriverDate*: FILETIME
     DriverVersion*: DWORDLONG
+
   PSP_DRVINFO_DATA_V2_A* = ptr SP_DRVINFO_DATA_V2_A
   SP_DRVINFO_DATA_V2_W* {.pure, packed.} = object
     cbSize*: DWORD
@@ -439,6 +481,7 @@
     ProviderName*: array[LINE_LEN, WCHAR]
     DriverDate*: FILETIME
     DriverVersion*: DWORDLONG
+
   PSP_DRVINFO_DATA_V2_W* = ptr SP_DRVINFO_DATA_V2_W
   SP_DRVINFO_DATA_V1_A* {.pure.} = object
     cbSize*: DWORD
@@ -447,6 +490,7 @@
     Description*: array[LINE_LEN, CHAR]
     MfgName*: array[LINE_LEN, CHAR]
     ProviderName*: array[LINE_LEN, CHAR]
+
   PSP_DRVINFO_DATA_V1_A* = ptr SP_DRVINFO_DATA_V1_A
   SP_DRVINFO_DATA_V1_W* {.pure.} = object
     cbSize*: DWORD
@@ -455,77 +499,72 @@
     Description*: array[LINE_LEN, WCHAR]
     MfgName*: array[LINE_LEN, WCHAR]
     ProviderName*: array[LINE_LEN, WCHAR]
+
   PSP_DRVINFO_DATA_V1_W* = ptr SP_DRVINFO_DATA_V1_W
   SP_DRVINFO_DATA_A* = SP_DRVINFO_DATA_V2_A
   PSP_DRVINFO_DATA_A* = PSP_DRVINFO_DATA_V2_A
   SP_DRVINFO_DATA_W* = SP_DRVINFO_DATA_V2_W
   PSP_DRVINFO_DATA_W* = PSP_DRVINFO_DATA_V2_W
+
 when winimUnicode:
-  type
-    SP_DRVINFO_DATA_V2* = SP_DRVINFO_DATA_V2_W
+  type SP_DRVINFO_DATA_V2* = SP_DRVINFO_DATA_V2_W
 when winimAnsi:
-  type
-    SP_DRVINFO_DATA_V2* = SP_DRVINFO_DATA_V2_A
-type
-  SP_DRVINFO_DATA* = SP_DRVINFO_DATA_V2
+  type SP_DRVINFO_DATA_V2* = SP_DRVINFO_DATA_V2_A
+type SP_DRVINFO_DATA* = SP_DRVINFO_DATA_V2
 when winimUnicode:
-  type
-    PSP_DRVINFO_DATA_V2* = PSP_DRVINFO_DATA_V2_W
+  type PSP_DRVINFO_DATA_V2* = PSP_DRVINFO_DATA_V2_W
 when winimAnsi:
-  type
-    PSP_DRVINFO_DATA_V2* = PSP_DRVINFO_DATA_V2_A
-type
-  PSP_DRVINFO_DATA* = PSP_DRVINFO_DATA_V2
+  type PSP_DRVINFO_DATA_V2* = PSP_DRVINFO_DATA_V2_A
+type PSP_DRVINFO_DATA* = PSP_DRVINFO_DATA_V2
 when winimCpu64:
-  type
-    SP_DRVINFO_DETAIL_DATA_A* {.pure.} = object
-      cbSize*: DWORD
-      InfDate*: FILETIME
-      CompatIDsOffset*: DWORD
-      CompatIDsLength*: DWORD
-      Reserved*: ULONG_PTR
-      SectionName*: array[LINE_LEN, CHAR]
-      InfFileName*: array[MAX_PATH, CHAR]
-      DrvDescription*: array[LINE_LEN, CHAR]
-      HardwareID*: array[ANYSIZE_ARRAY, CHAR]
+  type SP_DRVINFO_DETAIL_DATA_A* {.pure.} = object
+    cbSize*: DWORD
+    InfDate*: FILETIME
+    CompatIDsOffset*: DWORD
+    CompatIDsLength*: DWORD
+    Reserved*: ULONG_PTR
+    SectionName*: array[LINE_LEN, CHAR]
+    InfFileName*: array[MAX_PATH, CHAR]
+    DrvDescription*: array[LINE_LEN, CHAR]
+    HardwareID*: array[ANYSIZE_ARRAY, CHAR]
+
 when winimCpu32:
-  type
-    SP_DRVINFO_DETAIL_DATA_A* {.pure, packed.} = object
-      cbSize*: DWORD
-      InfDate*: FILETIME
-      CompatIDsOffset*: DWORD
-      CompatIDsLength*: DWORD
-      Reserved*: ULONG_PTR
-      SectionName*: array[LINE_LEN, CHAR]
-      InfFileName*: array[MAX_PATH, CHAR]
-      DrvDescription*: array[LINE_LEN, CHAR]
-      HardwareID*: array[ANYSIZE_ARRAY, CHAR]
-type
-  PSP_DRVINFO_DETAIL_DATA_A* = ptr SP_DRVINFO_DETAIL_DATA_A
+  type SP_DRVINFO_DETAIL_DATA_A* {.pure, packed.} = object
+    cbSize*: DWORD
+    InfDate*: FILETIME
+    CompatIDsOffset*: DWORD
+    CompatIDsLength*: DWORD
+    Reserved*: ULONG_PTR
+    SectionName*: array[LINE_LEN, CHAR]
+    InfFileName*: array[MAX_PATH, CHAR]
+    DrvDescription*: array[LINE_LEN, CHAR]
+    HardwareID*: array[ANYSIZE_ARRAY, CHAR]
+
+type PSP_DRVINFO_DETAIL_DATA_A* = ptr SP_DRVINFO_DETAIL_DATA_A
 when winimCpu64:
-  type
-    SP_DRVINFO_DETAIL_DATA_W* {.pure.} = object
-      cbSize*: DWORD
-      InfDate*: FILETIME
-      CompatIDsOffset*: DWORD
-      CompatIDsLength*: DWORD
-      Reserved*: ULONG_PTR
-      SectionName*: array[LINE_LEN, WCHAR]
-      InfFileName*: array[MAX_PATH, WCHAR]
-      DrvDescription*: array[LINE_LEN, WCHAR]
-      HardwareID*: array[ANYSIZE_ARRAY, WCHAR]
+  type SP_DRVINFO_DETAIL_DATA_W* {.pure.} = object
+    cbSize*: DWORD
+    InfDate*: FILETIME
+    CompatIDsOffset*: DWORD
+    CompatIDsLength*: DWORD
+    Reserved*: ULONG_PTR
+    SectionName*: array[LINE_LEN, WCHAR]
+    InfFileName*: array[MAX_PATH, WCHAR]
+    DrvDescription*: array[LINE_LEN, WCHAR]
+    HardwareID*: array[ANYSIZE_ARRAY, WCHAR]
+
 when winimCpu32:
-  type
-    SP_DRVINFO_DETAIL_DATA_W* {.pure, packed.} = object
-      cbSize*: DWORD
-      InfDate*: FILETIME
-      CompatIDsOffset*: DWORD
-      CompatIDsLength*: DWORD
-      Reserved*: ULONG_PTR
-      SectionName*: array[LINE_LEN, WCHAR]
-      InfFileName*: array[MAX_PATH, WCHAR]
-      DrvDescription*: array[LINE_LEN, WCHAR]
-      HardwareID*: array[ANYSIZE_ARRAY, WCHAR]
+  type SP_DRVINFO_DETAIL_DATA_W* {.pure, packed.} = object
+    cbSize*: DWORD
+    InfDate*: FILETIME
+    CompatIDsOffset*: DWORD
+    CompatIDsLength*: DWORD
+    Reserved*: ULONG_PTR
+    SectionName*: array[LINE_LEN, WCHAR]
+    InfFileName*: array[MAX_PATH, WCHAR]
+    DrvDescription*: array[LINE_LEN, WCHAR]
+    HardwareID*: array[ANYSIZE_ARRAY, WCHAR]
+
 type
   PSP_DRVINFO_DETAIL_DATA_W* = ptr SP_DRVINFO_DETAIL_DATA_W
   SP_DRVINSTALL_PARAMS* {.pure.} = object
@@ -534,63 +573,67 @@
     Flags*: DWORD
     PrivateData*: DWORD_PTR
     Reserved*: DWORD
+
   PSP_DRVINSTALL_PARAMS* = ptr SP_DRVINSTALL_PARAMS
   COINSTALLER_CONTEXT_DATA* {.pure.} = object
     PostProcessing*: WINBOOL
     InstallResult*: DWORD
     PrivateData*: PVOID
+
   PCOINSTALLER_CONTEXT_DATA* = ptr COINSTALLER_CONTEXT_DATA
   SP_CLASSIMAGELIST_DATA* {.pure.} = object
     cbSize*: DWORD
     ImageList*: HIMAGELIST
     Reserved*: ULONG_PTR
+
   PSP_CLASSIMAGELIST_DATA* = ptr SP_CLASSIMAGELIST_DATA
   SP_PROPSHEETPAGE_REQUEST* {.pure.} = object
     cbSize*: DWORD
     PageRequested*: DWORD
     DeviceInfoSet*: HDEVINFO
     DeviceInfoData*: PSP_DEVINFO_DATA
+
   PSP_PROPSHEETPAGE_REQUEST* = ptr SP_PROPSHEETPAGE_REQUEST
   SP_BACKUP_QUEUE_PARAMS_V2_A* {.pure.} = object
     cbSize*: DWORD
     FullInfPath*: array[MAX_PATH, CHAR]
     FilenameOffset*: INT
     ReinstallInstance*: array[MAX_PATH, CHAR]
+
   PSP_BACKUP_QUEUE_PARAMS_V2_A* = ptr SP_BACKUP_QUEUE_PARAMS_V2_A
   SP_BACKUP_QUEUE_PARAMS_V2_W* {.pure.} = object
     cbSize*: DWORD
     FullInfPath*: array[MAX_PATH, WCHAR]
     FilenameOffset*: INT
     ReinstallInstance*: array[MAX_PATH, WCHAR]
+
   PSP_BACKUP_QUEUE_PARAMS_V2_W* = ptr SP_BACKUP_QUEUE_PARAMS_V2_W
   SP_BACKUP_QUEUE_PARAMS_V1_A* {.pure.} = object
     cbSize*: DWORD
     FullInfPath*: array[MAX_PATH, CHAR]
     FilenameOffset*: INT
+
   PSP_BACKUP_QUEUE_PARAMS_V1_A* = ptr SP_BACKUP_QUEUE_PARAMS_V1_A
   SP_BACKUP_QUEUE_PARAMS_V1_W* {.pure.} = object
     cbSize*: DWORD
     FullInfPath*: array[MAX_PATH, WCHAR]
     FilenameOffset*: INT
+
   PSP_BACKUP_QUEUE_PARAMS_V1_W* = ptr SP_BACKUP_QUEUE_PARAMS_V1_W
   SP_BACKUP_QUEUE_PARAMS_A* = SP_BACKUP_QUEUE_PARAMS_V2_A
   PSP_BACKUP_QUEUE_PARAMS_A* = PSP_BACKUP_QUEUE_PARAMS_V2_A
   SP_BACKUP_QUEUE_PARAMS_W* = SP_BACKUP_QUEUE_PARAMS_V2_W
   PSP_BACKUP_QUEUE_PARAMS_W* = PSP_BACKUP_QUEUE_PARAMS_V2_W
+
 when winimUnicode:
-  type
-    SP_BACKUP_QUEUE_PARAMS_V2* = SP_BACKUP_QUEUE_PARAMS_V2_W
+  type SP_BACKUP_QUEUE_PARAMS_V2* = SP_BACKUP_QUEUE_PARAMS_V2_W
 when winimAnsi:
-  type
-    SP_BACKUP_QUEUE_PARAMS_V2* = SP_BACKUP_QUEUE_PARAMS_V2_A
-type
-  SP_BACKUP_QUEUE_PARAMS* = SP_BACKUP_QUEUE_PARAMS_V2
+  type SP_BACKUP_QUEUE_PARAMS_V2* = SP_BACKUP_QUEUE_PARAMS_V2_A
+type SP_BACKUP_QUEUE_PARAMS* = SP_BACKUP_QUEUE_PARAMS_V2
 when winimUnicode:
-  type
-    PSP_BACKUP_QUEUE_PARAMS_V2* = PSP_BACKUP_QUEUE_PARAMS_V2_W
+  type PSP_BACKUP_QUEUE_PARAMS_V2* = PSP_BACKUP_QUEUE_PARAMS_V2_W
 when winimAnsi:
-  type
-    PSP_BACKUP_QUEUE_PARAMS_V2* = PSP_BACKUP_QUEUE_PARAMS_V2_A
+  type PSP_BACKUP_QUEUE_PARAMS_V2* = PSP_BACKUP_QUEUE_PARAMS_V2_A
 type
   PSP_BACKUP_QUEUE_PARAMS* = PSP_BACKUP_QUEUE_PARAMS_V2
   SP_INF_SIGNER_INFO_A* {.pure.} = object
@@ -598,13 +641,16 @@
     CatalogFile*: array[MAX_PATH, CHAR]
     DigitalSigner*: array[MAX_PATH, CHAR]
     DigitalSignerVersion*: array[MAX_PATH, CHAR]
+
   PSP_INF_SIGNER_INFO_A* = ptr SP_INF_SIGNER_INFO_A
   SP_INF_SIGNER_INFO_W* {.pure.} = object
     cbSize*: DWORD
     CatalogFile*: array[MAX_PATH, WCHAR]
     DigitalSigner*: array[MAX_PATH, WCHAR]
     DigitalSignerVersion*: array[MAX_PATH, WCHAR]
+
   PSP_INF_SIGNER_INFO_W* = ptr SP_INF_SIGNER_INFO_W
+
 const
   SETUPAPI_VER* = 0x0502
   MAX_INF_STRING_LENGTH* = 4096
@@ -913,13 +959,16 @@
   ERROR_KEY_DOES_NOT_EXIST* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x204
   ERROR_INVALID_DEVINST_NAME* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x205
   ERROR_INVALID_CLASS* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x206
-  ERROR_DEVINST_ALREADY_EXISTS* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x207
-  ERROR_DEVINFO_NOT_REGISTERED* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x208
+  ERROR_DEVINST_ALREADY_EXISTS* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x207
+  ERROR_DEVINFO_NOT_REGISTERED* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x208
   ERROR_INVALID_REG_PROPERTY* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x209
   ERROR_NO_INF* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x20A
   ERROR_NO_SUCH_DEVINST* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x20B
   ERROR_CANT_LOAD_CLASS_ICON* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x20C
-  ERROR_INVALID_CLASS_INSTALLER* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x20D
+  ERROR_INVALID_CLASS_INSTALLER* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x20D
   ERROR_DI_DO_DEFAULT* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x20E
   ERROR_DI_NOFILECOPY* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x20F
   ERROR_INVALID_HWPROFILE* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x210
@@ -927,24 +976,35 @@
   ERROR_DEVINFO_LIST_LOCKED* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x212
   ERROR_DEVINFO_DATA_LOCKED* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x213
   ERROR_DI_BAD_PATH* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x214
-  ERROR_NO_CLASSINSTALL_PARAMS* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x215
+  ERROR_NO_CLASSINSTALL_PARAMS* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x215
   ERROR_FILEQUEUE_LOCKED* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x216
-  ERROR_BAD_SERVICE_INSTALLSECT* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x217
+  ERROR_BAD_SERVICE_INSTALLSECT* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x217
   ERROR_NO_CLASS_DRIVER_LIST* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x218
   ERROR_NO_ASSOCIATED_SERVICE* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x219
-  ERROR_NO_DEFAULT_DEVICE_INTERFACE* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x21A
-  ERROR_DEVICE_INTERFACE_ACTIVE* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x21B
-  ERROR_DEVICE_INTERFACE_REMOVED* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x21C
-  ERROR_BAD_INTERFACE_INSTALLSECT* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x21D
-  ERROR_NO_SUCH_INTERFACE_CLASS* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x21E
-  ERROR_INVALID_REFERENCE_STRING* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x21F
+  ERROR_NO_DEFAULT_DEVICE_INTERFACE* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x21A
+  ERROR_DEVICE_INTERFACE_ACTIVE* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x21B
+  ERROR_DEVICE_INTERFACE_REMOVED* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x21C
+  ERROR_BAD_INTERFACE_INSTALLSECT* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x21D
+  ERROR_NO_SUCH_INTERFACE_CLASS* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x21E
+  ERROR_INVALID_REFERENCE_STRING* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x21F
   ERROR_INVALID_MACHINENAME* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x220
   ERROR_REMOTE_COMM_FAILURE* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x221
   ERROR_MACHINE_UNAVAILABLE* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x222
   ERROR_NO_CONFIGMGR_SERVICES* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x223
-  ERROR_INVALID_PROPPAGE_PROVIDER* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x224
-  ERROR_NO_SUCH_DEVICE_INTERFACE* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x225
-  ERROR_DI_POSTPROCESSING_REQUIRED* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x226
+  ERROR_INVALID_PROPPAGE_PROVIDER* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x224
+  ERROR_NO_SUCH_DEVICE_INTERFACE* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x225
+  ERROR_DI_POSTPROCESSING_REQUIRED* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x226
   ERROR_INVALID_COINSTALLER* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x227
   ERROR_NO_COMPAT_DRIVERS* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x228
   ERROR_NO_DEVICE_ICON* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x229
@@ -953,30 +1013,44 @@
   ERROR_INVALID_FILTER_DRIVER* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x22C
   ERROR_NON_WINDOWS_NT_DRIVER* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x22D
   ERROR_NON_WINDOWS_DRIVER* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x22E
-  ERROR_NO_CATALOG_FOR_OEM_INF* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x22F
-  ERROR_DEVINSTALL_QUEUE_NONNATIVE* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x230
+  ERROR_NO_CATALOG_FOR_OEM_INF* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x22F
+  ERROR_DEVINSTALL_QUEUE_NONNATIVE* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x230
   ERROR_NOT_DISABLEABLE* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x231
   ERROR_CANT_REMOVE_DEVINST* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x232
   ERROR_INVALID_TARGET* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x233
   ERROR_DRIVER_NONNATIVE* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x234
   ERROR_IN_WOW64* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x235
-  ERROR_SET_SYSTEM_RESTORE_POINT* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x236
-  ERROR_INCORRECTLY_COPIED_INF* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x237
+  ERROR_SET_SYSTEM_RESTORE_POINT* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x236
+  ERROR_INCORRECTLY_COPIED_INF* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x237
   ERROR_SCE_DISABLED* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x238
   ERROR_UNKNOWN_EXCEPTION* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x239
   ERROR_PNP_REGISTRY_ERROR* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x23A
-  ERROR_REMOTE_REQUEST_UNSUPPORTED* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x23B
-  ERROR_NOT_AN_INSTALLED_OEM_INF* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x23C
+  ERROR_REMOTE_REQUEST_UNSUPPORTED* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x23B
+  ERROR_NOT_AN_INSTALLED_OEM_INF* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x23C
   ERROR_INF_IN_USE_BY_DEVICES* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x23D
   ERROR_DI_FUNCTION_OBSOLETE* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x23E
-  ERROR_NO_AUTHENTICODE_CATALOG* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x23F
-  ERROR_AUTHENTICODE_DISALLOWED* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x240
-  ERROR_AUTHENTICODE_TRUSTED_PUBLISHER* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x241
-  ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x242
-  ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x243
-  ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x244
-  ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x245
-  ERROR_UNRECOVERABLE_STACK_OVERFLOW* = APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x300
+  ERROR_NO_AUTHENTICODE_CATALOG* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x23F
+  ERROR_AUTHENTICODE_DISALLOWED* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x240
+  ERROR_AUTHENTICODE_TRUSTED_PUBLISHER* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x241
+  ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x242
+  ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x243
+  ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x244
+  ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x245
+  ERROR_UNRECOVERABLE_STACK_OVERFLOW* =
+    APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0x300
   EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW* = ERROR_UNRECOVERABLE_STACK_OVERFLOW
   ERROR_NO_DEFAULT_INTERFACE_DEVICE* = ERROR_NO_DEFAULT_DEVICE_INTERFACE
   ERROR_INTERFACE_DEVICE_ACTIVE* = ERROR_DEVICE_INTERFACE_ACTIVE
@@ -1102,7 +1176,8 @@
   FLG_DELREG_KEYONLY_COMMON* = FLG_ADDREG_KEYONLY_COMMON
   FLG_DELREG_32BITKEY* = FLG_ADDREG_32BITKEY
   FLG_DELREG_OPERATION_MASK* = 0x000000FE
-  FLG_DELREG_MULTI_SZ_DELSTRING* = FLG_DELREG_TYPE_MULTI_SZ or FLG_ADDREG_DELREG_BIT or 0x00000002
+  FLG_DELREG_MULTI_SZ_DELSTRING* =
+    FLG_DELREG_TYPE_MULTI_SZ or FLG_ADDREG_DELREG_BIT or 0x00000002
   FLG_BITREG_CLEARBITS* = 0x00000000
   FLG_BITREG_SETBITS* = 0x00000001
   FLG_BITREG_64BITKEY* = 0x00001000
@@ -1243,341 +1318,2260 @@
   SPWP_USE_DEVINFO_DATA* = 0x00000001
   DICUSTOMDEVPROP_MERGE_MULTISZ* = 0x00000001
   SCWMI_CLOBBER_SECURITY* = 0x00000001
-type
-  PSP_DETSIG_CMPPROC* = proc (DeviceInfoSet: HDEVINFO, NewDeviceData: PSP_DEVINFO_DATA, ExistingDeviceData: PSP_DEVINFO_DATA, CompareContext: PVOID): DWORD {.stdcall.}
-proc SetupGetInfInformationA*(InfSpec: LPCVOID, SearchControl: DWORD, ReturnBuffer: PSP_INF_INFORMATION, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetInfInformationW*(InfSpec: LPCVOID, SearchControl: DWORD, ReturnBuffer: PSP_INF_INFORMATION, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueryInfFileInformationA*(InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueryInfFileInformationW*(InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueryInfOriginalFileInformationA*(InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, OriginalFileInfo: PSP_ORIGINAL_FILE_INFO_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueryInfOriginalFileInformationW*(InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, OriginalFileInfo: PSP_ORIGINAL_FILE_INFO_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueryInfVersionInformationA*(InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, Key: PCSTR, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueryInfVersionInformationW*(InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, Key: PCWSTR, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetInfFileListA*(DirectoryPath: PCSTR, InfStyle: DWORD, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetInfFileListW*(DirectoryPath: PCWSTR, InfStyle: DWORD, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupOpenInfFileW*(FileName: PCWSTR, InfClass: PCWSTR, InfStyle: DWORD, ErrorLine: PUINT): HINF {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupOpenInfFileA*(FileName: PCSTR, InfClass: PCSTR, InfStyle: DWORD, ErrorLine: PUINT): HINF {.winapi, stdcall, dynlib: "setupapi", importc.}
+type PSP_DETSIG_CMPPROC* = proc(
+  DeviceInfoSet: HDEVINFO,
+  NewDeviceData: PSP_DEVINFO_DATA,
+  ExistingDeviceData: PSP_DEVINFO_DATA,
+  CompareContext: PVOID,
+): DWORD {.stdcall.}
+
+proc SetupGetInfInformationA*(
+  InfSpec: LPCVOID,
+  SearchControl: DWORD,
+  ReturnBuffer: PSP_INF_INFORMATION,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetInfInformationW*(
+  InfSpec: LPCVOID,
+  SearchControl: DWORD,
+  ReturnBuffer: PSP_INF_INFORMATION,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueryInfFileInformationA*(
+  InfInformation: PSP_INF_INFORMATION,
+  InfIndex: UINT,
+  ReturnBuffer: PSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueryInfFileInformationW*(
+  InfInformation: PSP_INF_INFORMATION,
+  InfIndex: UINT,
+  ReturnBuffer: PWSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueryInfOriginalFileInformationA*(
+  InfInformation: PSP_INF_INFORMATION,
+  InfIndex: UINT,
+  AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+  OriginalFileInfo: PSP_ORIGINAL_FILE_INFO_A,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueryInfOriginalFileInformationW*(
+  InfInformation: PSP_INF_INFORMATION,
+  InfIndex: UINT,
+  AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+  OriginalFileInfo: PSP_ORIGINAL_FILE_INFO_W,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueryInfVersionInformationA*(
+  InfInformation: PSP_INF_INFORMATION,
+  InfIndex: UINT,
+  Key: PCSTR,
+  ReturnBuffer: PSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueryInfVersionInformationW*(
+  InfInformation: PSP_INF_INFORMATION,
+  InfIndex: UINT,
+  Key: PCWSTR,
+  ReturnBuffer: PWSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetInfFileListA*(
+  DirectoryPath: PCSTR,
+  InfStyle: DWORD,
+  ReturnBuffer: PSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetInfFileListW*(
+  DirectoryPath: PCWSTR,
+  InfStyle: DWORD,
+  ReturnBuffer: PWSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupOpenInfFileW*(
+  FileName: PCWSTR, InfClass: PCWSTR, InfStyle: DWORD, ErrorLine: PUINT
+): HINF {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupOpenInfFileA*(
+  FileName: PCSTR, InfClass: PCSTR, InfStyle: DWORD, ErrorLine: PUINT
+): HINF {.winapi, stdcall, dynlib: "setupapi", importc.}
+
 proc SetupOpenMasterInf*(): HINF {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupOpenAppendInfFileW*(FileName: PCWSTR, InfHandle: HINF, ErrorLine: PUINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupOpenAppendInfFileA*(FileName: PCSTR, InfHandle: HINF, ErrorLine: PUINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupCloseInfFile*(InfHandle: HINF): VOID {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupFindFirstLineA*(InfHandle: HINF, Section: PCSTR, Key: PCSTR, Context: PINFCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupFindFirstLineW*(InfHandle: HINF, Section: PCWSTR, Key: PCWSTR, Context: PINFCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupFindNextLine*(ContextIn: PINFCONTEXT, ContextOut: PINFCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupFindNextMatchLineA*(ContextIn: PINFCONTEXT, Key: PCSTR, ContextOut: PINFCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupFindNextMatchLineW*(ContextIn: PINFCONTEXT, Key: PCWSTR, ContextOut: PINFCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetLineByIndexA*(InfHandle: HINF, Section: PCSTR, Index: DWORD, Context: PINFCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetLineByIndexW*(InfHandle: HINF, Section: PCWSTR, Index: DWORD, Context: PINFCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetLineCountA*(InfHandle: HINF, Section: PCSTR): LONG {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetLineCountW*(InfHandle: HINF, Section: PCWSTR): LONG {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetLineTextA*(Context: PINFCONTEXT, InfHandle: HINF, Section: PCSTR, Key: PCSTR, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetLineTextW*(Context: PINFCONTEXT, InfHandle: HINF, Section: PCWSTR, Key: PCWSTR, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetFieldCount*(Context: PINFCONTEXT): DWORD {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetStringFieldA*(Context: PINFCONTEXT, FieldIndex: DWORD, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetStringFieldW*(Context: PINFCONTEXT, FieldIndex: DWORD, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetIntField*(Context: PINFCONTEXT, FieldIndex: DWORD, IntegerValue: PINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetMultiSzFieldA*(Context: PINFCONTEXT, FieldIndex: DWORD, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetMultiSzFieldW*(Context: PINFCONTEXT, FieldIndex: DWORD, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetBinaryField*(Context: PINFCONTEXT, FieldIndex: DWORD, ReturnBuffer: PBYTE, ReturnBufferSize: DWORD, RequiredSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetFileCompressionInfoA*(SourceFileName: PCSTR, ActualSourceFileName: ptr PSTR, SourceFileSize: PDWORD, TargetFileSize: PDWORD, CompressionType: PUINT): DWORD {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetFileCompressionInfoW*(SourceFileName: PCWSTR, ActualSourceFileName: ptr PWSTR, SourceFileSize: PDWORD, TargetFileSize: PDWORD, CompressionType: PUINT): DWORD {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetFileCompressionInfoExA*(SourceFileName: PCSTR, ActualSourceFileNameBuffer: PSTR, ActualSourceFileNameBufferLen: DWORD, RequiredBufferLen: PDWORD, SourceFileSize: PDWORD, TargetFileSize: PDWORD, CompressionType: PUINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetFileCompressionInfoExW*(SourceFileName: PCWSTR, ActualSourceFileNameBuffer: PWSTR, ActualSourceFileNameBufferLen: DWORD, RequiredBufferLen: PDWORD, SourceFileSize: PDWORD, TargetFileSize: PDWORD, CompressionType: PUINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDecompressOrCopyFileA*(SourceFileName: PCSTR, TargetFileName: PCSTR, CompressionType: PUINT): DWORD {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDecompressOrCopyFileW*(SourceFileName: PCWSTR, TargetFileName: PCWSTR, CompressionType: PUINT): DWORD {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetSourceFileLocationA*(InfHandle: HINF, InfContext: PINFCONTEXT, FileName: PCSTR, SourceId: PUINT, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetSourceFileLocationW*(InfHandle: HINF, InfContext: PINFCONTEXT, FileName: PCWSTR, SourceId: PUINT, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetSourceFileSizeA*(InfHandle: HINF, InfContext: PINFCONTEXT, FileName: PCSTR, Section: PCSTR, FileSize: PDWORD, RoundingFactor: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetSourceFileSizeW*(InfHandle: HINF, InfContext: PINFCONTEXT, FileName: PCWSTR, Section: PCWSTR, FileSize: PDWORD, RoundingFactor: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetTargetPathA*(InfHandle: HINF, InfContext: PINFCONTEXT, Section: PCSTR, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetTargetPathW*(InfHandle: HINF, InfContext: PINFCONTEXT, Section: PCWSTR, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupSetSourceListA*(Flags: DWORD, SourceList: ptr PCSTR, SourceCount: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupSetSourceListW*(Flags: DWORD, SourceList: ptr PCWSTR, SourceCount: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupCancelTemporarySourceList*(): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupAddToSourceListA*(Flags: DWORD, Source: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupAddToSourceListW*(Flags: DWORD, Source: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupRemoveFromSourceListA*(Flags: DWORD, Source: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupRemoveFromSourceListW*(Flags: DWORD, Source: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQuerySourceListA*(Flags: DWORD, List: ptr ptr PCSTR, Count: PUINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQuerySourceListW*(Flags: DWORD, List: ptr ptr PCWSTR, Count: PUINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupFreeSourceListA*(List: ptr ptr PCSTR, Count: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupFreeSourceListW*(List: ptr ptr PCWSTR, Count: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupPromptForDiskA*(hwndParent: HWND, DialogTitle: PCSTR, DiskName: PCSTR, PathToSource: PCSTR, FileSought: PCSTR, TagFile: PCSTR, DiskPromptStyle: DWORD, PathBuffer: PSTR, PathBufferSize: DWORD, PathRequiredSize: PDWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupPromptForDiskW*(hwndParent: HWND, DialogTitle: PCWSTR, DiskName: PCWSTR, PathToSource: PCWSTR, FileSought: PCWSTR, TagFile: PCWSTR, DiskPromptStyle: DWORD, PathBuffer: PWSTR, PathBufferSize: DWORD, PathRequiredSize: PDWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupCopyErrorA*(hwndParent: HWND, DialogTitle: PCSTR, DiskName: PCSTR, PathToSource: PCSTR, SourceFile: PCSTR, TargetPathFile: PCSTR, Win32ErrorCode: UINT, Style: DWORD, PathBuffer: PSTR, PathBufferSize: DWORD, PathRequiredSize: PDWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupCopyErrorW*(hwndParent: HWND, DialogTitle: PCWSTR, DiskName: PCWSTR, PathToSource: PCWSTR, SourceFile: PCWSTR, TargetPathFile: PCWSTR, Win32ErrorCode: UINT, Style: DWORD, PathBuffer: PWSTR, PathBufferSize: DWORD, PathRequiredSize: PDWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupRenameErrorA*(hwndParent: HWND, DialogTitle: PCSTR, SourceFile: PCSTR, TargetFile: PCSTR, Win32ErrorCode: UINT, Style: DWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupRenameErrorW*(hwndParent: HWND, DialogTitle: PCWSTR, SourceFile: PCWSTR, TargetFile: PCWSTR, Win32ErrorCode: UINT, Style: DWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDeleteErrorA*(hwndParent: HWND, DialogTitle: PCSTR, File: PCSTR, Win32ErrorCode: UINT, Style: DWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDeleteErrorW*(hwndParent: HWND, DialogTitle: PCWSTR, File: PCWSTR, Win32ErrorCode: UINT, Style: DWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupBackupErrorA*(hwndParent: HWND, DialogTitle: PCSTR, SourceFile: PCSTR, TargetFile: PCSTR, Win32ErrorCode: UINT, Style: DWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupBackupErrorW*(hwndParent: HWND, DialogTitle: PCWSTR, SourceFile: PCWSTR, TargetFile: PCWSTR, Win32ErrorCode: UINT, Style: DWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupSetDirectoryIdA*(InfHandle: HINF, Id: DWORD, Directory: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupSetDirectoryIdW*(InfHandle: HINF, Id: DWORD, Directory: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupSetDirectoryIdExA*(InfHandle: HINF, Id: DWORD, Directory: PCSTR, Flags: DWORD, Reserved1: DWORD, Reserved2: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupSetDirectoryIdExW*(InfHandle: HINF, Id: DWORD, Directory: PCWSTR, Flags: DWORD, Reserved1: DWORD, Reserved2: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetSourceInfoA*(InfHandle: HINF, SourceId: UINT, InfoDesired: UINT, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetSourceInfoW*(InfHandle: HINF, SourceId: UINT, InfoDesired: UINT, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInstallFileA*(InfHandle: HINF, InfContext: PINFCONTEXT, SourceFile: PCSTR, SourcePathRoot: PCSTR, DestinationName: PCSTR, CopyStyle: DWORD, CopyMsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInstallFileW*(InfHandle: HINF, InfContext: PINFCONTEXT, SourceFile: PCWSTR, SourcePathRoot: PCWSTR, DestinationName: PCWSTR, CopyStyle: DWORD, CopyMsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInstallFileExA*(InfHandle: HINF, InfContext: PINFCONTEXT, SourceFile: PCSTR, SourcePathRoot: PCSTR, DestinationName: PCSTR, CopyStyle: DWORD, CopyMsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID, FileWasInUse: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInstallFileExW*(InfHandle: HINF, InfContext: PINFCONTEXT, SourceFile: PCWSTR, SourcePathRoot: PCWSTR, DestinationName: PCWSTR, CopyStyle: DWORD, CopyMsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID, FileWasInUse: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+proc SetupOpenAppendInfFileW*(
+  FileName: PCWSTR, InfHandle: HINF, ErrorLine: PUINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupOpenAppendInfFileA*(
+  FileName: PCSTR, InfHandle: HINF, ErrorLine: PUINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupCloseInfFile*(
+  InfHandle: HINF
+): VOID {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupFindFirstLineA*(
+  InfHandle: HINF, Section: PCSTR, Key: PCSTR, Context: PINFCONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupFindFirstLineW*(
+  InfHandle: HINF, Section: PCWSTR, Key: PCWSTR, Context: PINFCONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupFindNextLine*(
+  ContextIn: PINFCONTEXT, ContextOut: PINFCONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupFindNextMatchLineA*(
+  ContextIn: PINFCONTEXT, Key: PCSTR, ContextOut: PINFCONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupFindNextMatchLineW*(
+  ContextIn: PINFCONTEXT, Key: PCWSTR, ContextOut: PINFCONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetLineByIndexA*(
+  InfHandle: HINF, Section: PCSTR, Index: DWORD, Context: PINFCONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetLineByIndexW*(
+  InfHandle: HINF, Section: PCWSTR, Index: DWORD, Context: PINFCONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetLineCountA*(
+  InfHandle: HINF, Section: PCSTR
+): LONG {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetLineCountW*(
+  InfHandle: HINF, Section: PCWSTR
+): LONG {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetLineTextA*(
+  Context: PINFCONTEXT,
+  InfHandle: HINF,
+  Section: PCSTR,
+  Key: PCSTR,
+  ReturnBuffer: PSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetLineTextW*(
+  Context: PINFCONTEXT,
+  InfHandle: HINF,
+  Section: PCWSTR,
+  Key: PCWSTR,
+  ReturnBuffer: PWSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetFieldCount*(
+  Context: PINFCONTEXT
+): DWORD {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetStringFieldA*(
+  Context: PINFCONTEXT,
+  FieldIndex: DWORD,
+  ReturnBuffer: PSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetStringFieldW*(
+  Context: PINFCONTEXT,
+  FieldIndex: DWORD,
+  ReturnBuffer: PWSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetIntField*(
+  Context: PINFCONTEXT, FieldIndex: DWORD, IntegerValue: PINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetMultiSzFieldA*(
+  Context: PINFCONTEXT,
+  FieldIndex: DWORD,
+  ReturnBuffer: PSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetMultiSzFieldW*(
+  Context: PINFCONTEXT,
+  FieldIndex: DWORD,
+  ReturnBuffer: PWSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetBinaryField*(
+  Context: PINFCONTEXT,
+  FieldIndex: DWORD,
+  ReturnBuffer: PBYTE,
+  ReturnBufferSize: DWORD,
+  RequiredSize: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetFileCompressionInfoA*(
+  SourceFileName: PCSTR,
+  ActualSourceFileName: ptr PSTR,
+  SourceFileSize: PDWORD,
+  TargetFileSize: PDWORD,
+  CompressionType: PUINT,
+): DWORD {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetFileCompressionInfoW*(
+  SourceFileName: PCWSTR,
+  ActualSourceFileName: ptr PWSTR,
+  SourceFileSize: PDWORD,
+  TargetFileSize: PDWORD,
+  CompressionType: PUINT,
+): DWORD {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetFileCompressionInfoExA*(
+  SourceFileName: PCSTR,
+  ActualSourceFileNameBuffer: PSTR,
+  ActualSourceFileNameBufferLen: DWORD,
+  RequiredBufferLen: PDWORD,
+  SourceFileSize: PDWORD,
+  TargetFileSize: PDWORD,
+  CompressionType: PUINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetFileCompressionInfoExW*(
+  SourceFileName: PCWSTR,
+  ActualSourceFileNameBuffer: PWSTR,
+  ActualSourceFileNameBufferLen: DWORD,
+  RequiredBufferLen: PDWORD,
+  SourceFileSize: PDWORD,
+  TargetFileSize: PDWORD,
+  CompressionType: PUINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDecompressOrCopyFileA*(
+  SourceFileName: PCSTR, TargetFileName: PCSTR, CompressionType: PUINT
+): DWORD {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDecompressOrCopyFileW*(
+  SourceFileName: PCWSTR, TargetFileName: PCWSTR, CompressionType: PUINT
+): DWORD {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetSourceFileLocationA*(
+  InfHandle: HINF,
+  InfContext: PINFCONTEXT,
+  FileName: PCSTR,
+  SourceId: PUINT,
+  ReturnBuffer: PSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetSourceFileLocationW*(
+  InfHandle: HINF,
+  InfContext: PINFCONTEXT,
+  FileName: PCWSTR,
+  SourceId: PUINT,
+  ReturnBuffer: PWSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetSourceFileSizeA*(
+  InfHandle: HINF,
+  InfContext: PINFCONTEXT,
+  FileName: PCSTR,
+  Section: PCSTR,
+  FileSize: PDWORD,
+  RoundingFactor: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetSourceFileSizeW*(
+  InfHandle: HINF,
+  InfContext: PINFCONTEXT,
+  FileName: PCWSTR,
+  Section: PCWSTR,
+  FileSize: PDWORD,
+  RoundingFactor: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetTargetPathA*(
+  InfHandle: HINF,
+  InfContext: PINFCONTEXT,
+  Section: PCSTR,
+  ReturnBuffer: PSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetTargetPathW*(
+  InfHandle: HINF,
+  InfContext: PINFCONTEXT,
+  Section: PCWSTR,
+  ReturnBuffer: PWSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupSetSourceListA*(
+  Flags: DWORD, SourceList: ptr PCSTR, SourceCount: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupSetSourceListW*(
+  Flags: DWORD, SourceList: ptr PCWSTR, SourceCount: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupCancelTemporarySourceList*(): WINBOOL {.
+  winapi, stdcall, dynlib: "setupapi", importc
+.}
+
+proc SetupAddToSourceListA*(
+  Flags: DWORD, Source: PCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupAddToSourceListW*(
+  Flags: DWORD, Source: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupRemoveFromSourceListA*(
+  Flags: DWORD, Source: PCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupRemoveFromSourceListW*(
+  Flags: DWORD, Source: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQuerySourceListA*(
+  Flags: DWORD, List: ptr ptr PCSTR, Count: PUINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQuerySourceListW*(
+  Flags: DWORD, List: ptr ptr PCWSTR, Count: PUINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupFreeSourceListA*(
+  List: ptr ptr PCSTR, Count: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupFreeSourceListW*(
+  List: ptr ptr PCWSTR, Count: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupPromptForDiskA*(
+  hwndParent: HWND,
+  DialogTitle: PCSTR,
+  DiskName: PCSTR,
+  PathToSource: PCSTR,
+  FileSought: PCSTR,
+  TagFile: PCSTR,
+  DiskPromptStyle: DWORD,
+  PathBuffer: PSTR,
+  PathBufferSize: DWORD,
+  PathRequiredSize: PDWORD,
+): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupPromptForDiskW*(
+  hwndParent: HWND,
+  DialogTitle: PCWSTR,
+  DiskName: PCWSTR,
+  PathToSource: PCWSTR,
+  FileSought: PCWSTR,
+  TagFile: PCWSTR,
+  DiskPromptStyle: DWORD,
+  PathBuffer: PWSTR,
+  PathBufferSize: DWORD,
+  PathRequiredSize: PDWORD,
+): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupCopyErrorA*(
+  hwndParent: HWND,
+  DialogTitle: PCSTR,
+  DiskName: PCSTR,
+  PathToSource: PCSTR,
+  SourceFile: PCSTR,
+  TargetPathFile: PCSTR,
+  Win32ErrorCode: UINT,
+  Style: DWORD,
+  PathBuffer: PSTR,
+  PathBufferSize: DWORD,
+  PathRequiredSize: PDWORD,
+): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupCopyErrorW*(
+  hwndParent: HWND,
+  DialogTitle: PCWSTR,
+  DiskName: PCWSTR,
+  PathToSource: PCWSTR,
+  SourceFile: PCWSTR,
+  TargetPathFile: PCWSTR,
+  Win32ErrorCode: UINT,
+  Style: DWORD,
+  PathBuffer: PWSTR,
+  PathBufferSize: DWORD,
+  PathRequiredSize: PDWORD,
+): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupRenameErrorA*(
+  hwndParent: HWND,
+  DialogTitle: PCSTR,
+  SourceFile: PCSTR,
+  TargetFile: PCSTR,
+  Win32ErrorCode: UINT,
+  Style: DWORD,
+): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupRenameErrorW*(
+  hwndParent: HWND,
+  DialogTitle: PCWSTR,
+  SourceFile: PCWSTR,
+  TargetFile: PCWSTR,
+  Win32ErrorCode: UINT,
+  Style: DWORD,
+): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDeleteErrorA*(
+  hwndParent: HWND, DialogTitle: PCSTR, File: PCSTR, Win32ErrorCode: UINT, Style: DWORD
+): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDeleteErrorW*(
+  hwndParent: HWND,
+  DialogTitle: PCWSTR,
+  File: PCWSTR,
+  Win32ErrorCode: UINT,
+  Style: DWORD,
+): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupBackupErrorA*(
+  hwndParent: HWND,
+  DialogTitle: PCSTR,
+  SourceFile: PCSTR,
+  TargetFile: PCSTR,
+  Win32ErrorCode: UINT,
+  Style: DWORD,
+): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupBackupErrorW*(
+  hwndParent: HWND,
+  DialogTitle: PCWSTR,
+  SourceFile: PCWSTR,
+  TargetFile: PCWSTR,
+  Win32ErrorCode: UINT,
+  Style: DWORD,
+): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupSetDirectoryIdA*(
+  InfHandle: HINF, Id: DWORD, Directory: PCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupSetDirectoryIdW*(
+  InfHandle: HINF, Id: DWORD, Directory: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupSetDirectoryIdExA*(
+  InfHandle: HINF,
+  Id: DWORD,
+  Directory: PCSTR,
+  Flags: DWORD,
+  Reserved1: DWORD,
+  Reserved2: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupSetDirectoryIdExW*(
+  InfHandle: HINF,
+  Id: DWORD,
+  Directory: PCWSTR,
+  Flags: DWORD,
+  Reserved1: DWORD,
+  Reserved2: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetSourceInfoA*(
+  InfHandle: HINF,
+  SourceId: UINT,
+  InfoDesired: UINT,
+  ReturnBuffer: PSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetSourceInfoW*(
+  InfHandle: HINF,
+  SourceId: UINT,
+  InfoDesired: UINT,
+  ReturnBuffer: PWSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInstallFileA*(
+  InfHandle: HINF,
+  InfContext: PINFCONTEXT,
+  SourceFile: PCSTR,
+  SourcePathRoot: PCSTR,
+  DestinationName: PCSTR,
+  CopyStyle: DWORD,
+  CopyMsgHandler: PSP_FILE_CALLBACK_A,
+  Context: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInstallFileW*(
+  InfHandle: HINF,
+  InfContext: PINFCONTEXT,
+  SourceFile: PCWSTR,
+  SourcePathRoot: PCWSTR,
+  DestinationName: PCWSTR,
+  CopyStyle: DWORD,
+  CopyMsgHandler: PSP_FILE_CALLBACK_W,
+  Context: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInstallFileExA*(
+  InfHandle: HINF,
+  InfContext: PINFCONTEXT,
+  SourceFile: PCSTR,
+  SourcePathRoot: PCSTR,
+  DestinationName: PCSTR,
+  CopyStyle: DWORD,
+  CopyMsgHandler: PSP_FILE_CALLBACK_A,
+  Context: PVOID,
+  FileWasInUse: PBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInstallFileExW*(
+  InfHandle: HINF,
+  InfContext: PINFCONTEXT,
+  SourceFile: PCWSTR,
+  SourcePathRoot: PCWSTR,
+  DestinationName: PCWSTR,
+  CopyStyle: DWORD,
+  CopyMsgHandler: PSP_FILE_CALLBACK_W,
+  Context: PVOID,
+  FileWasInUse: PBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
 proc SetupOpenFileQueue*(): HSPFILEQ {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupCloseFileQueue*(QueueHandle: HSPFILEQ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupSetFileQueueAlternatePlatformA*(QueueHandle: HSPFILEQ, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, AlternateDefaultCatalogFile: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupSetFileQueueAlternatePlatformW*(QueueHandle: HSPFILEQ, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, AlternateDefaultCatalogFile: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupSetPlatformPathOverrideA*(Override: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupSetPlatformPathOverrideW*(Override: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueCopyA*(QueueHandle: HSPFILEQ, SourceRootPath: PCSTR, SourcePath: PCSTR, SourceFilename: PCSTR, SourceDescription: PCSTR, SourceTagfile: PCSTR, TargetDirectory: PCSTR, TargetFilename: PCSTR, CopyStyle: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueCopyW*(QueueHandle: HSPFILEQ, SourceRootPath: PCWSTR, SourcePath: PCWSTR, SourceFilename: PCWSTR, SourceDescription: PCWSTR, SourceTagfile: PCWSTR, TargetDirectory: PCWSTR, TargetFilename: PCWSTR, CopyStyle: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueCopyIndirectA*(CopyParams: PSP_FILE_COPY_PARAMS_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueCopyIndirectW*(CopyParams: PSP_FILE_COPY_PARAMS_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueDefaultCopyA*(QueueHandle: HSPFILEQ, InfHandle: HINF, SourceRootPath: PCSTR, SourceFilename: PCSTR, TargetFilename: PCSTR, CopyStyle: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueDefaultCopyW*(QueueHandle: HSPFILEQ, InfHandle: HINF, SourceRootPath: PCWSTR, SourceFilename: PCWSTR, TargetFilename: PCWSTR, CopyStyle: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueCopySectionA*(QueueHandle: HSPFILEQ, SourceRootPath: PCSTR, InfHandle: HINF, ListInfHandle: HINF, Section: PCSTR, CopyStyle: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueCopySectionW*(QueueHandle: HSPFILEQ, SourceRootPath: PCWSTR, InfHandle: HINF, ListInfHandle: HINF, Section: PCWSTR, CopyStyle: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueDeleteA*(QueueHandle: HSPFILEQ, PathPart1: PCSTR, PathPart2: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueDeleteW*(QueueHandle: HSPFILEQ, PathPart1: PCWSTR, PathPart2: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueDeleteSectionA*(QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueDeleteSectionW*(QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueRenameA*(QueueHandle: HSPFILEQ, SourcePath: PCSTR, SourceFilename: PCSTR, TargetPath: PCSTR, TargetFilename: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueRenameW*(QueueHandle: HSPFILEQ, SourcePath: PCWSTR, SourceFilename: PCWSTR, TargetPath: PCWSTR, TargetFilename: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueRenameSectionA*(QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueueRenameSectionW*(QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupCommitFileQueueA*(Owner: HWND, QueueHandle: HSPFILEQ, MsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupCommitFileQueueW*(Owner: HWND, QueueHandle: HSPFILEQ, MsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupScanFileQueueA*(FileQueue: HSPFILEQ, Flags: DWORD, Window: HWND, CallbackRoutine: PSP_FILE_CALLBACK_A, CallbackContext: PVOID, Result: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupScanFileQueueW*(FileQueue: HSPFILEQ, Flags: DWORD, Window: HWND, CallbackRoutine: PSP_FILE_CALLBACK_W, CallbackContext: PVOID, Result: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetFileQueueCount*(FileQueue: HSPFILEQ, SubQueueFileOp: UINT, NumOperations: PUINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetFileQueueFlags*(FileQueue: HSPFILEQ, Flags: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupSetFileQueueFlags*(FileQueue: HSPFILEQ, FlagMask: DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupCopyOEMInfA*(SourceInfFileName: PCSTR, OEMSourceMediaLocation: PCSTR, OEMSourceMediaType: DWORD, CopyStyle: DWORD, DestinationInfFileName: PSTR, DestinationInfFileNameSize: DWORD, RequiredSize: PDWORD, DestinationInfFileNameComponent: ptr PSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupCopyOEMInfW*(SourceInfFileName: PCWSTR, OEMSourceMediaLocation: PCWSTR, OEMSourceMediaType: DWORD, CopyStyle: DWORD, DestinationInfFileName: PWSTR, DestinationInfFileNameSize: DWORD, RequiredSize: PDWORD, DestinationInfFileNameComponent: ptr PWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupUninstallOEMInfA*(InfFileName: PCSTR, Flags: DWORD, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupUninstallOEMInfW*(InfFileName: PCWSTR, Flags: DWORD, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupUninstallNewlyCopiedInfs*(FileQueue: HSPFILEQ, Flags: DWORD, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupCreateDiskSpaceListA*(Reserved1: PVOID, Reserved2: DWORD, Flags: UINT): HDSKSPC {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupCreateDiskSpaceListW*(Reserved1: PVOID, Reserved2: DWORD, Flags: UINT): HDSKSPC {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDuplicateDiskSpaceListA*(DiskSpace: HDSKSPC, Reserved1: PVOID, Reserved2: DWORD, Flags: UINT): HDSKSPC {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDuplicateDiskSpaceListW*(DiskSpace: HDSKSPC, Reserved1: PVOID, Reserved2: DWORD, Flags: UINT): HDSKSPC {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDestroyDiskSpaceList*(DiskSpace: HDSKSPC): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueryDrivesInDiskSpaceListA*(DiskSpace: HDSKSPC, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueryDrivesInDiskSpaceListW*(DiskSpace: HDSKSPC, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQuerySpaceRequiredOnDriveA*(DiskSpace: HDSKSPC, DriveSpec: PCSTR, SpaceRequired: ptr LONGLONG, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQuerySpaceRequiredOnDriveW*(DiskSpace: HDSKSPC, DriveSpec: PCWSTR, SpaceRequired: ptr LONGLONG, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupAdjustDiskSpaceListA*(DiskSpace: HDSKSPC, DriveRoot: LPCSTR, Amount: LONGLONG, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupAdjustDiskSpaceListW*(DiskSpace: HDSKSPC, DriveRoot: LPCWSTR, Amount: LONGLONG, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupAddToDiskSpaceListA*(DiskSpace: HDSKSPC, TargetFilespec: PCSTR, FileSize: LONGLONG, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupAddToDiskSpaceListW*(DiskSpace: HDSKSPC, TargetFilespec: PCWSTR, FileSize: LONGLONG, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupAddSectionToDiskSpaceListA*(DiskSpace: HDSKSPC, InfHandle: HINF, ListInfHandle: HINF, SectionName: PCSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupAddSectionToDiskSpaceListW*(DiskSpace: HDSKSPC, InfHandle: HINF, ListInfHandle: HINF, SectionName: PCWSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupAddInstallSectionToDiskSpaceListA*(DiskSpace: HDSKSPC, InfHandle: HINF, LayoutInfHandle: HINF, SectionName: PCSTR, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupAddInstallSectionToDiskSpaceListW*(DiskSpace: HDSKSPC, InfHandle: HINF, LayoutInfHandle: HINF, SectionName: PCWSTR, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupRemoveFromDiskSpaceListA*(DiskSpace: HDSKSPC, TargetFilespec: PCSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupRemoveFromDiskSpaceListW*(DiskSpace: HDSKSPC, TargetFilespec: PCWSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupRemoveSectionFromDiskSpaceListA*(DiskSpace: HDSKSPC, InfHandle: HINF, ListInfHandle: HINF, SectionName: PCSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupRemoveSectionFromDiskSpaceListW*(DiskSpace: HDSKSPC, InfHandle: HINF, ListInfHandle: HINF, SectionName: PCWSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupRemoveInstallSectionFromDiskSpaceListA*(DiskSpace: HDSKSPC, InfHandle: HINF, LayoutInfHandle: HINF, SectionName: PCSTR, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupRemoveInstallSectionFromDiskSpaceListW*(DiskSpace: HDSKSPC, InfHandle: HINF, LayoutInfHandle: HINF, SectionName: PCWSTR, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupIterateCabinetA*(CabinetFile: PCSTR, Reserved: DWORD, MsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupIterateCabinetW*(CabinetFile: PCWSTR, Reserved: DWORD, MsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupPromptReboot*(FileQueue: HSPFILEQ, Owner: HWND, ScanOnly: WINBOOL): INT {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInitDefaultQueueCallback*(OwnerWindow: HWND): PVOID {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInitDefaultQueueCallbackEx*(OwnerWindow: HWND, AlternateProgressWindow: HWND, ProgressMessage: UINT, Reserved1: DWORD, Reserved2: PVOID): PVOID {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupTermDefaultQueueCallback*(Context: PVOID): VOID {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDefaultQueueCallbackA*(Context: PVOID, Notification: UINT, Param1: UINT_PTR, Param2: UINT_PTR): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDefaultQueueCallbackW*(Context: PVOID, Notification: UINT, Param1: UINT_PTR, Param2: UINT_PTR): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInstallFromInfSectionA*(Owner: HWND, InfHandle: HINF, SectionName: PCSTR, Flags: UINT, RelativeKeyRoot: HKEY, SourceRootPath: PCSTR, CopyFlags: UINT, MsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID, DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInstallFromInfSectionW*(Owner: HWND, InfHandle: HINF, SectionName: PCWSTR, Flags: UINT, RelativeKeyRoot: HKEY, SourceRootPath: PCWSTR, CopyFlags: UINT, MsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID, DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInstallFilesFromInfSectionA*(InfHandle: HINF, LayoutInfHandle: HINF, FileQueue: HSPFILEQ, SectionName: PCSTR, SourceRootPath: PCSTR, CopyFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInstallFilesFromInfSectionW*(InfHandle: HINF, LayoutInfHandle: HINF, FileQueue: HSPFILEQ, SectionName: PCWSTR, SourceRootPath: PCWSTR, CopyFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInstallServicesFromInfSectionA*(InfHandle: HINF, SectionName: PCSTR, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInstallServicesFromInfSectionW*(InfHandle: HINF, SectionName: PCWSTR, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInstallServicesFromInfSectionExA*(InfHandle: HINF, SectionName: PCSTR, Flags: DWORD, DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Reserved1: PVOID, Reserved2: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInstallServicesFromInfSectionExW*(InfHandle: HINF, SectionName: PCWSTR, Flags: DWORD, DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Reserved1: PVOID, Reserved2: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc InstallHinfSectionA*(Window: HWND, ModuleHandle: HINSTANCE, CommandLine: PCSTR, ShowCommand: INT): VOID {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc InstallHinfSectionW*(Window: HWND, ModuleHandle: HINSTANCE, CommandLine: PCWSTR, ShowCommand: INT): VOID {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInitializeFileLogA*(LogFileName: PCSTR, Flags: DWORD): HSPFILELOG {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupInitializeFileLogW*(LogFileName: PCWSTR, Flags: DWORD): HSPFILELOG {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupTerminateFileLog*(FileLogHandle: HSPFILELOG): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupLogFileA*(FileLogHandle: HSPFILELOG, LogSectionName: PCSTR, SourceFilename: PCSTR, TargetFilename: PCSTR, Checksum: DWORD, DiskTagfile: PCSTR, DiskDescription: PCSTR, OtherInfo: PCSTR, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupLogFileW*(FileLogHandle: HSPFILELOG, LogSectionName: PCWSTR, SourceFilename: PCWSTR, TargetFilename: PCWSTR, Checksum: DWORD, DiskTagfile: PCWSTR, DiskDescription: PCWSTR, OtherInfo: PCWSTR, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupRemoveFileLogEntryA*(FileLogHandle: HSPFILELOG, LogSectionName: PCSTR, TargetFilename: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupRemoveFileLogEntryW*(FileLogHandle: HSPFILELOG, LogSectionName: PCWSTR, TargetFilename: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueryFileLogA*(FileLogHandle: HSPFILELOG, LogSectionName: PCSTR, TargetFilename: PCSTR, DesiredInfo: SetupFileLogInfo, DataOut: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupQueryFileLogW*(FileLogHandle: HSPFILELOG, LogSectionName: PCWSTR, TargetFilename: PCWSTR, DesiredInfo: SetupFileLogInfo, DataOut: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupOpenLog*(Erase: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupLogErrorA*(MessageString: LPCSTR, Severity: LogSeverity): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupLogErrorW*(MessageString: LPCWSTR, Severity: LogSeverity): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+proc SetupCloseFileQueue*(
+  QueueHandle: HSPFILEQ
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupSetFileQueueAlternatePlatformA*(
+  QueueHandle: HSPFILEQ,
+  AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+  AlternateDefaultCatalogFile: PCSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupSetFileQueueAlternatePlatformW*(
+  QueueHandle: HSPFILEQ,
+  AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+  AlternateDefaultCatalogFile: PCWSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupSetPlatformPathOverrideA*(
+  Override: PCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupSetPlatformPathOverrideW*(
+  Override: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueCopyA*(
+  QueueHandle: HSPFILEQ,
+  SourceRootPath: PCSTR,
+  SourcePath: PCSTR,
+  SourceFilename: PCSTR,
+  SourceDescription: PCSTR,
+  SourceTagfile: PCSTR,
+  TargetDirectory: PCSTR,
+  TargetFilename: PCSTR,
+  CopyStyle: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueCopyW*(
+  QueueHandle: HSPFILEQ,
+  SourceRootPath: PCWSTR,
+  SourcePath: PCWSTR,
+  SourceFilename: PCWSTR,
+  SourceDescription: PCWSTR,
+  SourceTagfile: PCWSTR,
+  TargetDirectory: PCWSTR,
+  TargetFilename: PCWSTR,
+  CopyStyle: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueCopyIndirectA*(
+  CopyParams: PSP_FILE_COPY_PARAMS_A
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueCopyIndirectW*(
+  CopyParams: PSP_FILE_COPY_PARAMS_W
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueDefaultCopyA*(
+  QueueHandle: HSPFILEQ,
+  InfHandle: HINF,
+  SourceRootPath: PCSTR,
+  SourceFilename: PCSTR,
+  TargetFilename: PCSTR,
+  CopyStyle: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueDefaultCopyW*(
+  QueueHandle: HSPFILEQ,
+  InfHandle: HINF,
+  SourceRootPath: PCWSTR,
+  SourceFilename: PCWSTR,
+  TargetFilename: PCWSTR,
+  CopyStyle: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueCopySectionA*(
+  QueueHandle: HSPFILEQ,
+  SourceRootPath: PCSTR,
+  InfHandle: HINF,
+  ListInfHandle: HINF,
+  Section: PCSTR,
+  CopyStyle: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueCopySectionW*(
+  QueueHandle: HSPFILEQ,
+  SourceRootPath: PCWSTR,
+  InfHandle: HINF,
+  ListInfHandle: HINF,
+  Section: PCWSTR,
+  CopyStyle: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueDeleteA*(
+  QueueHandle: HSPFILEQ, PathPart1: PCSTR, PathPart2: PCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueDeleteW*(
+  QueueHandle: HSPFILEQ, PathPart1: PCWSTR, PathPart2: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueDeleteSectionA*(
+  QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueDeleteSectionW*(
+  QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueRenameA*(
+  QueueHandle: HSPFILEQ,
+  SourcePath: PCSTR,
+  SourceFilename: PCSTR,
+  TargetPath: PCSTR,
+  TargetFilename: PCSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueRenameW*(
+  QueueHandle: HSPFILEQ,
+  SourcePath: PCWSTR,
+  SourceFilename: PCWSTR,
+  TargetPath: PCWSTR,
+  TargetFilename: PCWSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueRenameSectionA*(
+  QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueueRenameSectionW*(
+  QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupCommitFileQueueA*(
+  Owner: HWND, QueueHandle: HSPFILEQ, MsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupCommitFileQueueW*(
+  Owner: HWND, QueueHandle: HSPFILEQ, MsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupScanFileQueueA*(
+  FileQueue: HSPFILEQ,
+  Flags: DWORD,
+  Window: HWND,
+  CallbackRoutine: PSP_FILE_CALLBACK_A,
+  CallbackContext: PVOID,
+  Result: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupScanFileQueueW*(
+  FileQueue: HSPFILEQ,
+  Flags: DWORD,
+  Window: HWND,
+  CallbackRoutine: PSP_FILE_CALLBACK_W,
+  CallbackContext: PVOID,
+  Result: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetFileQueueCount*(
+  FileQueue: HSPFILEQ, SubQueueFileOp: UINT, NumOperations: PUINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetFileQueueFlags*(
+  FileQueue: HSPFILEQ, Flags: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupSetFileQueueFlags*(
+  FileQueue: HSPFILEQ, FlagMask: DWORD, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupCopyOEMInfA*(
+  SourceInfFileName: PCSTR,
+  OEMSourceMediaLocation: PCSTR,
+  OEMSourceMediaType: DWORD,
+  CopyStyle: DWORD,
+  DestinationInfFileName: PSTR,
+  DestinationInfFileNameSize: DWORD,
+  RequiredSize: PDWORD,
+  DestinationInfFileNameComponent: ptr PSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupCopyOEMInfW*(
+  SourceInfFileName: PCWSTR,
+  OEMSourceMediaLocation: PCWSTR,
+  OEMSourceMediaType: DWORD,
+  CopyStyle: DWORD,
+  DestinationInfFileName: PWSTR,
+  DestinationInfFileNameSize: DWORD,
+  RequiredSize: PDWORD,
+  DestinationInfFileNameComponent: ptr PWSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupUninstallOEMInfA*(
+  InfFileName: PCSTR, Flags: DWORD, Reserved: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupUninstallOEMInfW*(
+  InfFileName: PCWSTR, Flags: DWORD, Reserved: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupUninstallNewlyCopiedInfs*(
+  FileQueue: HSPFILEQ, Flags: DWORD, Reserved: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupCreateDiskSpaceListA*(
+  Reserved1: PVOID, Reserved2: DWORD, Flags: UINT
+): HDSKSPC {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupCreateDiskSpaceListW*(
+  Reserved1: PVOID, Reserved2: DWORD, Flags: UINT
+): HDSKSPC {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDuplicateDiskSpaceListA*(
+  DiskSpace: HDSKSPC, Reserved1: PVOID, Reserved2: DWORD, Flags: UINT
+): HDSKSPC {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDuplicateDiskSpaceListW*(
+  DiskSpace: HDSKSPC, Reserved1: PVOID, Reserved2: DWORD, Flags: UINT
+): HDSKSPC {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDestroyDiskSpaceList*(
+  DiskSpace: HDSKSPC
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueryDrivesInDiskSpaceListA*(
+  DiskSpace: HDSKSPC, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueryDrivesInDiskSpaceListW*(
+  DiskSpace: HDSKSPC, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQuerySpaceRequiredOnDriveA*(
+  DiskSpace: HDSKSPC,
+  DriveSpec: PCSTR,
+  SpaceRequired: ptr LONGLONG,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQuerySpaceRequiredOnDriveW*(
+  DiskSpace: HDSKSPC,
+  DriveSpec: PCWSTR,
+  SpaceRequired: ptr LONGLONG,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupAdjustDiskSpaceListA*(
+  DiskSpace: HDSKSPC,
+  DriveRoot: LPCSTR,
+  Amount: LONGLONG,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupAdjustDiskSpaceListW*(
+  DiskSpace: HDSKSPC,
+  DriveRoot: LPCWSTR,
+  Amount: LONGLONG,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupAddToDiskSpaceListA*(
+  DiskSpace: HDSKSPC,
+  TargetFilespec: PCSTR,
+  FileSize: LONGLONG,
+  Operation: UINT,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupAddToDiskSpaceListW*(
+  DiskSpace: HDSKSPC,
+  TargetFilespec: PCWSTR,
+  FileSize: LONGLONG,
+  Operation: UINT,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupAddSectionToDiskSpaceListA*(
+  DiskSpace: HDSKSPC,
+  InfHandle: HINF,
+  ListInfHandle: HINF,
+  SectionName: PCSTR,
+  Operation: UINT,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupAddSectionToDiskSpaceListW*(
+  DiskSpace: HDSKSPC,
+  InfHandle: HINF,
+  ListInfHandle: HINF,
+  SectionName: PCWSTR,
+  Operation: UINT,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupAddInstallSectionToDiskSpaceListA*(
+  DiskSpace: HDSKSPC,
+  InfHandle: HINF,
+  LayoutInfHandle: HINF,
+  SectionName: PCSTR,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupAddInstallSectionToDiskSpaceListW*(
+  DiskSpace: HDSKSPC,
+  InfHandle: HINF,
+  LayoutInfHandle: HINF,
+  SectionName: PCWSTR,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupRemoveFromDiskSpaceListA*(
+  DiskSpace: HDSKSPC,
+  TargetFilespec: PCSTR,
+  Operation: UINT,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupRemoveFromDiskSpaceListW*(
+  DiskSpace: HDSKSPC,
+  TargetFilespec: PCWSTR,
+  Operation: UINT,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupRemoveSectionFromDiskSpaceListA*(
+  DiskSpace: HDSKSPC,
+  InfHandle: HINF,
+  ListInfHandle: HINF,
+  SectionName: PCSTR,
+  Operation: UINT,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupRemoveSectionFromDiskSpaceListW*(
+  DiskSpace: HDSKSPC,
+  InfHandle: HINF,
+  ListInfHandle: HINF,
+  SectionName: PCWSTR,
+  Operation: UINT,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupRemoveInstallSectionFromDiskSpaceListA*(
+  DiskSpace: HDSKSPC,
+  InfHandle: HINF,
+  LayoutInfHandle: HINF,
+  SectionName: PCSTR,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupRemoveInstallSectionFromDiskSpaceListW*(
+  DiskSpace: HDSKSPC,
+  InfHandle: HINF,
+  LayoutInfHandle: HINF,
+  SectionName: PCWSTR,
+  Reserved1: PVOID,
+  Reserved2: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupIterateCabinetA*(
+  CabinetFile: PCSTR, Reserved: DWORD, MsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupIterateCabinetW*(
+  CabinetFile: PCWSTR, Reserved: DWORD, MsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupPromptReboot*(
+  FileQueue: HSPFILEQ, Owner: HWND, ScanOnly: WINBOOL
+): INT {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInitDefaultQueueCallback*(
+  OwnerWindow: HWND
+): PVOID {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInitDefaultQueueCallbackEx*(
+  OwnerWindow: HWND,
+  AlternateProgressWindow: HWND,
+  ProgressMessage: UINT,
+  Reserved1: DWORD,
+  Reserved2: PVOID,
+): PVOID {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupTermDefaultQueueCallback*(
+  Context: PVOID
+): VOID {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDefaultQueueCallbackA*(
+  Context: PVOID, Notification: UINT, Param1: UINT_PTR, Param2: UINT_PTR
+): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDefaultQueueCallbackW*(
+  Context: PVOID, Notification: UINT, Param1: UINT_PTR, Param2: UINT_PTR
+): UINT {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInstallFromInfSectionA*(
+  Owner: HWND,
+  InfHandle: HINF,
+  SectionName: PCSTR,
+  Flags: UINT,
+  RelativeKeyRoot: HKEY,
+  SourceRootPath: PCSTR,
+  CopyFlags: UINT,
+  MsgHandler: PSP_FILE_CALLBACK_A,
+  Context: PVOID,
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInstallFromInfSectionW*(
+  Owner: HWND,
+  InfHandle: HINF,
+  SectionName: PCWSTR,
+  Flags: UINT,
+  RelativeKeyRoot: HKEY,
+  SourceRootPath: PCWSTR,
+  CopyFlags: UINT,
+  MsgHandler: PSP_FILE_CALLBACK_W,
+  Context: PVOID,
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInstallFilesFromInfSectionA*(
+  InfHandle: HINF,
+  LayoutInfHandle: HINF,
+  FileQueue: HSPFILEQ,
+  SectionName: PCSTR,
+  SourceRootPath: PCSTR,
+  CopyFlags: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInstallFilesFromInfSectionW*(
+  InfHandle: HINF,
+  LayoutInfHandle: HINF,
+  FileQueue: HSPFILEQ,
+  SectionName: PCWSTR,
+  SourceRootPath: PCWSTR,
+  CopyFlags: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInstallServicesFromInfSectionA*(
+  InfHandle: HINF, SectionName: PCSTR, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInstallServicesFromInfSectionW*(
+  InfHandle: HINF, SectionName: PCWSTR, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInstallServicesFromInfSectionExA*(
+  InfHandle: HINF,
+  SectionName: PCSTR,
+  Flags: DWORD,
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  Reserved1: PVOID,
+  Reserved2: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInstallServicesFromInfSectionExW*(
+  InfHandle: HINF,
+  SectionName: PCWSTR,
+  Flags: DWORD,
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  Reserved1: PVOID,
+  Reserved2: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc InstallHinfSectionA*(
+  Window: HWND, ModuleHandle: HINSTANCE, CommandLine: PCSTR, ShowCommand: INT
+): VOID {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc InstallHinfSectionW*(
+  Window: HWND, ModuleHandle: HINSTANCE, CommandLine: PCWSTR, ShowCommand: INT
+): VOID {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInitializeFileLogA*(
+  LogFileName: PCSTR, Flags: DWORD
+): HSPFILELOG {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupInitializeFileLogW*(
+  LogFileName: PCWSTR, Flags: DWORD
+): HSPFILELOG {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupTerminateFileLog*(
+  FileLogHandle: HSPFILELOG
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupLogFileA*(
+  FileLogHandle: HSPFILELOG,
+  LogSectionName: PCSTR,
+  SourceFilename: PCSTR,
+  TargetFilename: PCSTR,
+  Checksum: DWORD,
+  DiskTagfile: PCSTR,
+  DiskDescription: PCSTR,
+  OtherInfo: PCSTR,
+  Flags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupLogFileW*(
+  FileLogHandle: HSPFILELOG,
+  LogSectionName: PCWSTR,
+  SourceFilename: PCWSTR,
+  TargetFilename: PCWSTR,
+  Checksum: DWORD,
+  DiskTagfile: PCWSTR,
+  DiskDescription: PCWSTR,
+  OtherInfo: PCWSTR,
+  Flags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupRemoveFileLogEntryA*(
+  FileLogHandle: HSPFILELOG, LogSectionName: PCSTR, TargetFilename: PCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupRemoveFileLogEntryW*(
+  FileLogHandle: HSPFILELOG, LogSectionName: PCWSTR, TargetFilename: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueryFileLogA*(
+  FileLogHandle: HSPFILELOG,
+  LogSectionName: PCSTR,
+  TargetFilename: PCSTR,
+  DesiredInfo: SetupFileLogInfo,
+  DataOut: PSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupQueryFileLogW*(
+  FileLogHandle: HSPFILELOG,
+  LogSectionName: PCWSTR,
+  TargetFilename: PCWSTR,
+  DesiredInfo: SetupFileLogInfo,
+  DataOut: PWSTR,
+  ReturnBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupOpenLog*(
+  Erase: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupLogErrorA*(
+  MessageString: LPCSTR, Severity: LogSeverity
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupLogErrorW*(
+  MessageString: LPCWSTR, Severity: LogSeverity
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
 proc SetupCloseLog*(): VOID {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetBackupInformationA*(QueueHandle: HSPFILEQ, BackupParams: PSP_BACKUP_QUEUE_PARAMS_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetBackupInformationW*(QueueHandle: HSPFILEQ, BackupParams: PSP_BACKUP_QUEUE_PARAMS_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupPrepareQueueForRestoreA*(QueueHandle: HSPFILEQ, BackupPath: PCSTR, RestoreFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupPrepareQueueForRestoreW*(QueueHandle: HSPFILEQ, BackupPath: PCWSTR, RestoreFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupSetNonInteractiveMode*(NonInteractiveFlag: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupGetNonInteractiveMode*(): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiCreateDeviceInfoList*(ClassGuid: ptr GUID, hwndParent: HWND): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiCreateDeviceInfoListExA*(ClassGuid: ptr GUID, hwndParent: HWND, MachineName: PCSTR, Reserved: PVOID): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiCreateDeviceInfoListExW*(ClassGuid: ptr GUID, hwndParent: HWND, MachineName: PCWSTR, Reserved: PVOID): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetDeviceInfoListClass*(DeviceInfoSet: HDEVINFO, ClassGuid: LPGUID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetDeviceInfoListDetailA*(DeviceInfoSet: HDEVINFO, DeviceInfoSetDetailData: PSP_DEVINFO_LIST_DETAIL_DATA_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetDeviceInfoListDetailW*(DeviceInfoSet: HDEVINFO, DeviceInfoSetDetailData: PSP_DEVINFO_LIST_DETAIL_DATA_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiCreateDeviceInfoA*(DeviceInfoSet: HDEVINFO, DeviceName: PCSTR, ClassGuid: ptr GUID, DeviceDescription: PCSTR, hwndParent: HWND, CreationFlags: DWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiCreateDeviceInfoW*(DeviceInfoSet: HDEVINFO, DeviceName: PCWSTR, ClassGuid: ptr GUID, DeviceDescription: PCWSTR, hwndParent: HWND, CreationFlags: DWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiOpenDeviceInfoA*(DeviceInfoSet: HDEVINFO, DeviceInstanceId: PCSTR, hwndParent: HWND, OpenFlags: DWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiOpenDeviceInfoW*(DeviceInfoSet: HDEVINFO, DeviceInstanceId: PCWSTR, hwndParent: HWND, OpenFlags: DWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetDeviceInstanceIdA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstanceId: PSTR, DeviceInstanceIdSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetDeviceInstanceIdW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstanceId: PWSTR, DeviceInstanceIdSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiDeleteDeviceInfo*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiEnumDeviceInfo*(DeviceInfoSet: HDEVINFO, MemberIndex: DWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiDestroyDeviceInfoList*(DeviceInfoSet: HDEVINFO): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiEnumDeviceInterfaces*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, InterfaceClassGuid: ptr GUID, MemberIndex: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiEnumInterfaceDevice*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, InterfaceClassGuid: ptr GUID, MemberIndex: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiEnumDeviceInterfaces".}
-proc SetupDiCreateDeviceInterfaceA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, InterfaceClassGuid: ptr GUID, ReferenceString: PCSTR, CreationFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiCreateDeviceInterfaceW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, InterfaceClassGuid: ptr GUID, ReferenceString: PCWSTR, CreationFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiCreateInterfaceDeviceW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, InterfaceClassGuid: ptr GUID, ReferenceString: PCWSTR, CreationFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceW".}
-proc SetupDiCreateInterfaceDeviceA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, InterfaceClassGuid: ptr GUID, ReferenceString: PCSTR, CreationFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceA".}
-proc SetupDiOpenDeviceInterfaceA*(DeviceInfoSet: HDEVINFO, DevicePath: PCSTR, OpenFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiOpenDeviceInterfaceW*(DeviceInfoSet: HDEVINFO, DevicePath: PCWSTR, OpenFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiOpenInterfaceDeviceW*(DeviceInfoSet: HDEVINFO, DevicePath: PCWSTR, OpenFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInterfaceW".}
-proc SetupDiOpenInterfaceDeviceA*(DeviceInfoSet: HDEVINFO, DevicePath: PCSTR, OpenFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInterfaceA".}
-proc SetupDiGetDeviceInterfaceAlias*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, AliasInterfaceClassGuid: ptr GUID, AliasDeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetInterfaceDeviceAlias*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, AliasInterfaceClassGuid: ptr GUID, AliasDeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInterfaceAlias".}
-proc SetupDiDeleteDeviceInterfaceData*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiDeleteInterfaceDeviceData*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiDeleteDeviceInterfaceData".}
-proc SetupDiRemoveDeviceInterface*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiRemoveInterfaceDevice*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiRemoveDeviceInterface".}
-proc SetupDiGetDeviceInterfaceDetailA*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_A, DeviceInterfaceDetailDataSize: DWORD, RequiredSize: PDWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetDeviceInterfaceDetailW*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_W, DeviceInterfaceDetailDataSize: DWORD, RequiredSize: PDWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetInterfaceDeviceDetailW*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_W, DeviceInterfaceDetailDataSize: DWORD, RequiredSize: PDWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInterfaceDetailW".}
-proc SetupDiGetInterfaceDeviceDetailA*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_A, DeviceInterfaceDetailDataSize: DWORD, RequiredSize: PDWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInterfaceDetailA".}
-proc SetupDiInstallDeviceInterfaces*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiInstallInterfaceDevices*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiInstallDeviceInterfaces".}
-proc SetupDiSetDeviceInterfaceDefault*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Flags: DWORD, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiRegisterDeviceInfo*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Flags: DWORD, CompareProc: PSP_DETSIG_CMPPROC, CompareContext: PVOID, DupDeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiBuildDriverInfoList*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverType: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiCancelDriverInfoSearch*(DeviceInfoSet: HDEVINFO): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiEnumDriverInfoA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverType: DWORD, MemberIndex: DWORD, DriverInfoData: PSP_DRVINFO_DATA_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiEnumDriverInfoW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverType: DWORD, MemberIndex: DWORD, DriverInfoData: PSP_DRVINFO_DATA_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetSelectedDriverA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetSelectedDriverW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSetSelectedDriverA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSetSelectedDriverW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetDriverInfoDetailA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_A, DriverInfoDetailData: PSP_DRVINFO_DETAIL_DATA_A, DriverInfoDetailDataSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetDriverInfoDetailW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_W, DriverInfoDetailData: PSP_DRVINFO_DETAIL_DATA_W, DriverInfoDetailDataSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiDestroyDriverInfoList*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverType: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassDevsA*(ClassGuid: ptr GUID, Enumerator: PCSTR, hwndParent: HWND, Flags: DWORD): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassDevsW*(ClassGuid: ptr GUID, Enumerator: PCWSTR, hwndParent: HWND, Flags: DWORD): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassDevsExA*(ClassGuid: ptr GUID, Enumerator: PCSTR, hwndParent: HWND, Flags: DWORD, DeviceInfoSet: HDEVINFO, MachineName: PCSTR, Reserved: PVOID): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassDevsExW*(ClassGuid: ptr GUID, Enumerator: PCWSTR, hwndParent: HWND, Flags: DWORD, DeviceInfoSet: HDEVINFO, MachineName: PCWSTR, Reserved: PVOID): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetINFClassA*(InfName: PCSTR, ClassGuid: LPGUID, ClassName: PSTR, ClassNameSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetINFClassW*(InfName: PCWSTR, ClassGuid: LPGUID, ClassName: PWSTR, ClassNameSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiBuildClassInfoList*(Flags: DWORD, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiBuildClassInfoListExA*(Flags: DWORD, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiBuildClassInfoListExW*(Flags: DWORD, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassDescriptionA*(ClassGuid: ptr GUID, ClassDescription: PSTR, ClassDescriptionSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassDescriptionW*(ClassGuid: ptr GUID, ClassDescription: PWSTR, ClassDescriptionSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassDescriptionExA*(ClassGuid: ptr GUID, ClassDescription: PSTR, ClassDescriptionSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassDescriptionExW*(ClassGuid: ptr GUID, ClassDescription: PWSTR, ClassDescriptionSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiCallClassInstaller*(InstallFunction: DI_FUNCTION, DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSelectDevice*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSelectBestCompatDrv*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiInstallDevice*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiInstallDriverFiles*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiRegisterCoDeviceInstallers*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiRemoveDevice*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiUnremoveDevice*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiRestartDevices*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiChangeState*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiInstallClassA*(hwndParent: HWND, InfFileName: PCSTR, Flags: DWORD, FileQueue: HSPFILEQ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiInstallClassW*(hwndParent: HWND, InfFileName: PCWSTR, Flags: DWORD, FileQueue: HSPFILEQ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiInstallClassExA*(hwndParent: HWND, InfFileName: PCSTR, Flags: DWORD, FileQueue: HSPFILEQ, InterfaceClassGuid: ptr GUID, Reserved1: PVOID, Reserved2: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiInstallClassExW*(hwndParent: HWND, InfFileName: PCWSTR, Flags: DWORD, FileQueue: HSPFILEQ, InterfaceClassGuid: ptr GUID, Reserved1: PVOID, Reserved2: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiOpenClassRegKey*(ClassGuid: ptr GUID, samDesired: REGSAM): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiOpenClassRegKeyExA*(ClassGuid: ptr GUID, samDesired: REGSAM, Flags: DWORD, MachineName: PCSTR, Reserved: PVOID): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiOpenClassRegKeyExW*(ClassGuid: ptr GUID, samDesired: REGSAM, Flags: DWORD, MachineName: PCWSTR, Reserved: PVOID): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiCreateDeviceInterfaceRegKeyA*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD, samDesired: REGSAM, InfHandle: HINF, InfSectionName: PCSTR): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiCreateDeviceInterfaceRegKeyW*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD, samDesired: REGSAM, InfHandle: HINF, InfSectionName: PCWSTR): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiCreateInterfaceDeviceRegKeyW*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD, samDesired: REGSAM, InfHandle: HINF, InfSectionName: PCWSTR): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceRegKeyW".}
-proc SetupDiCreateInterfaceDeviceRegKeyA*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD, samDesired: REGSAM, InfHandle: HINF, InfSectionName: PCSTR): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceRegKeyA".}
-proc SetupDiOpenDeviceInterfaceRegKey*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD, samDesired: REGSAM): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiOpenInterfaceDeviceRegKey*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD, samDesired: REGSAM): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInterfaceRegKey".}
-proc SetupDiDeleteDeviceInterfaceRegKey*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiDeleteInterfaceDeviceRegKey*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiDeleteDeviceInterfaceRegKey".}
-proc SetupDiCreateDevRegKeyA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Scope: DWORD, HwProfile: DWORD, KeyType: DWORD, InfHandle: HINF, InfSectionName: PCSTR): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiCreateDevRegKeyW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Scope: DWORD, HwProfile: DWORD, KeyType: DWORD, InfHandle: HINF, InfSectionName: PCWSTR): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiOpenDevRegKey*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Scope: DWORD, HwProfile: DWORD, KeyType: DWORD, samDesired: REGSAM): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiDeleteDevRegKey*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Scope: DWORD, HwProfile: DWORD, KeyType: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetHwProfileList*(HwProfileList: PDWORD, HwProfileListSize: DWORD, RequiredSize: PDWORD, CurrentlyActiveIndex: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetHwProfileListExA*(HwProfileList: PDWORD, HwProfileListSize: DWORD, RequiredSize: PDWORD, CurrentlyActiveIndex: PDWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetHwProfileListExW*(HwProfileList: PDWORD, HwProfileListSize: DWORD, RequiredSize: PDWORD, CurrentlyActiveIndex: PDWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetDeviceRegistryPropertyA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Property: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetDeviceRegistryPropertyW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Property: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassRegistryPropertyA*(ClassGuid: ptr GUID, Property: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassRegistryPropertyW*(ClassGuid: ptr GUID, Property: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSetDeviceRegistryPropertyA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Property: DWORD, PropertyBuffer: ptr BYTE, PropertyBufferSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSetDeviceRegistryPropertyW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Property: DWORD, PropertyBuffer: ptr BYTE, PropertyBufferSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSetClassRegistryPropertyA*(ClassGuid: ptr GUID, Property: DWORD, PropertyBuffer: ptr BYTE, PropertyBufferSize: DWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSetClassRegistryPropertyW*(ClassGuid: ptr GUID, Property: DWORD, PropertyBuffer: ptr BYTE, PropertyBufferSize: DWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetDeviceInstallParamsA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstallParams: PSP_DEVINSTALL_PARAMS_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetDeviceInstallParamsW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstallParams: PSP_DEVINSTALL_PARAMS_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassInstallParamsA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ClassInstallParams: PSP_CLASSINSTALL_HEADER, ClassInstallParamsSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassInstallParamsW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ClassInstallParams: PSP_CLASSINSTALL_HEADER, ClassInstallParamsSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSetDeviceInstallParamsA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstallParams: PSP_DEVINSTALL_PARAMS_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSetDeviceInstallParamsW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstallParams: PSP_DEVINSTALL_PARAMS_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSetClassInstallParamsA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ClassInstallParams: PSP_CLASSINSTALL_HEADER, ClassInstallParamsSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSetClassInstallParamsW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ClassInstallParams: PSP_CLASSINSTALL_HEADER, ClassInstallParamsSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetDriverInstallParamsA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_A, DriverInstallParams: PSP_DRVINSTALL_PARAMS): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetDriverInstallParamsW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_W, DriverInstallParams: PSP_DRVINSTALL_PARAMS): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSetDriverInstallParamsA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_A, DriverInstallParams: PSP_DRVINSTALL_PARAMS): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSetDriverInstallParamsW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_W, DriverInstallParams: PSP_DRVINSTALL_PARAMS): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiLoadClassIcon*(ClassGuid: ptr GUID, LargeIcon: ptr HICON, MiniIconIndex: PINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiDrawMiniIcon*(hdc: HDC, rc: RECT, MiniIconIndex: INT, Flags: DWORD): INT {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassBitmapIndex*(ClassGuid: ptr GUID, MiniIconIndex: PINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassImageList*(ClassImageListData: PSP_CLASSIMAGELIST_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassImageListExA*(ClassImageListData: PSP_CLASSIMAGELIST_DATA, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassImageListExW*(ClassImageListData: PSP_CLASSIMAGELIST_DATA, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassImageIndex*(ClassImageListData: PSP_CLASSIMAGELIST_DATA, ClassGuid: ptr GUID, ImageIndex: PINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiDestroyClassImageList*(ClassImageListData: PSP_CLASSIMAGELIST_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassDevPropertySheetsA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, PropertySheetHeader: LPPROPSHEETHEADERA, PropertySheetHeaderPageListSize: DWORD, RequiredSize: PDWORD, PropertySheetType: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetClassDevPropertySheetsW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, PropertySheetHeader: LPPROPSHEETHEADERW, PropertySheetHeaderPageListSize: DWORD, RequiredSize: PDWORD, PropertySheetType: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiAskForOEMDisk*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSelectOEMDrv*(hwndParent: HWND, DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiClassNameFromGuidA*(ClassGuid: ptr GUID, ClassName: PSTR, ClassNameSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiClassNameFromGuidW*(ClassGuid: ptr GUID, ClassName: PWSTR, ClassNameSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiClassNameFromGuidExA*(ClassGuid: ptr GUID, ClassName: PSTR, ClassNameSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiClassNameFromGuidExW*(ClassGuid: ptr GUID, ClassName: PWSTR, ClassNameSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiClassGuidsFromNameA*(ClassName: PCSTR, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiClassGuidsFromNameW*(ClassName: PCWSTR, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiClassGuidsFromNameExA*(ClassName: PCSTR, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiClassGuidsFromNameExW*(ClassName: PCWSTR, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetHwProfileFriendlyNameA*(HwProfile: DWORD, FriendlyName: PSTR, FriendlyNameSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetHwProfileFriendlyNameW*(HwProfile: DWORD, FriendlyName: PWSTR, FriendlyNameSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetHwProfileFriendlyNameExA*(HwProfile: DWORD, FriendlyName: PSTR, FriendlyNameSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetHwProfileFriendlyNameExW*(HwProfile: DWORD, FriendlyName: PWSTR, FriendlyNameSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetWizardPage*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, InstallWizardData: PSP_INSTALLWIZARD_DATA, PageType: DWORD, Flags: DWORD): HPROPSHEETPAGE {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetSelectedDevice*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiSetSelectedDevice*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetActualModelsSectionA*(Context: PINFCONTEXT, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, InfSectionWithExt: PSTR, InfSectionWithExtSize: DWORD, RequiredSize: PDWORD, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetActualModelsSectionW*(Context: PINFCONTEXT, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, InfSectionWithExt: PWSTR, InfSectionWithExtSize: DWORD, RequiredSize: PDWORD, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetActualSectionToInstallA*(InfHandle: HINF, InfSectionName: PCSTR, InfSectionWithExt: PSTR, InfSectionWithExtSize: DWORD, RequiredSize: PDWORD, Extension: ptr PSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetActualSectionToInstallW*(InfHandle: HINF, InfSectionName: PCWSTR, InfSectionWithExt: PWSTR, InfSectionWithExtSize: DWORD, RequiredSize: PDWORD, Extension: ptr PWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetActualSectionToInstallExA*(InfHandle: HINF, InfSectionName: PCSTR, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, InfSectionWithExt: PSTR, InfSectionWithExtSize: DWORD, RequiredSize: PDWORD, Extension: ptr PSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetActualSectionToInstallExW*(InfHandle: HINF, InfSectionName: PCWSTR, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, InfSectionWithExt: PWSTR, InfSectionWithExtSize: DWORD, RequiredSize: PDWORD, Extension: ptr PWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupEnumInfSectionsA*(InfHandle: HINF, Index: UINT, Buffer: PSTR, Size: UINT, SizeNeeded: ptr UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupEnumInfSectionsW*(InfHandle: HINF, Index: UINT, Buffer: PWSTR, Size: UINT, SizeNeeded: ptr UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupVerifyInfFileA*(InfName: PCSTR, AltPlatformInfo: PSP_ALTPLATFORM_INFO, InfSignerInfo: PSP_INF_SIGNER_INFO_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupVerifyInfFileW*(InfName: PCWSTR, AltPlatformInfo: PSP_ALTPLATFORM_INFO, InfSignerInfo: PSP_INF_SIGNER_INFO_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetCustomDevicePropertyA*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, CustomPropertyName: PCSTR, Flags: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupDiGetCustomDevicePropertyW*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, CustomPropertyName: PCWSTR, Flags: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupConfigureWmiFromInfSectionA*(InfHandle: HINF, SectionName: PCSTR, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc SetupConfigureWmiFromInfSectionW*(InfHandle: HINF, SectionName: PCWSTR, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
-proc `Reserved=`*(self: var SP_ALTPLATFORM_INFO_V2, x: WORD) {.inline.} = self.union1.Reserved = x
-proc Reserved*(self: SP_ALTPLATFORM_INFO_V2): WORD {.inline.} = self.union1.Reserved
-proc Reserved*(self: var SP_ALTPLATFORM_INFO_V2): var WORD {.inline.} = self.union1.Reserved
-proc `Flags=`*(self: var SP_ALTPLATFORM_INFO_V2, x: WORD) {.inline.} = self.union1.Flags = x
-proc Flags*(self: SP_ALTPLATFORM_INFO_V2): WORD {.inline.} = self.union1.Flags
-proc Flags*(self: var SP_ALTPLATFORM_INFO_V2): var WORD {.inline.} = self.union1.Flags
+proc SetupGetBackupInformationA*(
+  QueueHandle: HSPFILEQ, BackupParams: PSP_BACKUP_QUEUE_PARAMS_A
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetBackupInformationW*(
+  QueueHandle: HSPFILEQ, BackupParams: PSP_BACKUP_QUEUE_PARAMS_W
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupPrepareQueueForRestoreA*(
+  QueueHandle: HSPFILEQ, BackupPath: PCSTR, RestoreFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupPrepareQueueForRestoreW*(
+  QueueHandle: HSPFILEQ, BackupPath: PCWSTR, RestoreFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupSetNonInteractiveMode*(
+  NonInteractiveFlag: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupGetNonInteractiveMode*(): WINBOOL {.
+  winapi, stdcall, dynlib: "setupapi", importc
+.}
+
+proc SetupDiCreateDeviceInfoList*(
+  ClassGuid: ptr GUID, hwndParent: HWND
+): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiCreateDeviceInfoListExA*(
+  ClassGuid: ptr GUID, hwndParent: HWND, MachineName: PCSTR, Reserved: PVOID
+): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiCreateDeviceInfoListExW*(
+  ClassGuid: ptr GUID, hwndParent: HWND, MachineName: PCWSTR, Reserved: PVOID
+): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetDeviceInfoListClass*(
+  DeviceInfoSet: HDEVINFO, ClassGuid: LPGUID
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetDeviceInfoListDetailA*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoSetDetailData: PSP_DEVINFO_LIST_DETAIL_DATA_A
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetDeviceInfoListDetailW*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoSetDetailData: PSP_DEVINFO_LIST_DETAIL_DATA_W
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiCreateDeviceInfoA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceName: PCSTR,
+  ClassGuid: ptr GUID,
+  DeviceDescription: PCSTR,
+  hwndParent: HWND,
+  CreationFlags: DWORD,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiCreateDeviceInfoW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceName: PCWSTR,
+  ClassGuid: ptr GUID,
+  DeviceDescription: PCWSTR,
+  hwndParent: HWND,
+  CreationFlags: DWORD,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiOpenDeviceInfoA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInstanceId: PCSTR,
+  hwndParent: HWND,
+  OpenFlags: DWORD,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiOpenDeviceInfoW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInstanceId: PCWSTR,
+  hwndParent: HWND,
+  OpenFlags: DWORD,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetDeviceInstanceIdA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DeviceInstanceId: PSTR,
+  DeviceInstanceIdSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetDeviceInstanceIdW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DeviceInstanceId: PWSTR,
+  DeviceInstanceIdSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiDeleteDeviceInfo*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiEnumDeviceInfo*(
+  DeviceInfoSet: HDEVINFO, MemberIndex: DWORD, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiDestroyDeviceInfoList*(
+  DeviceInfoSet: HDEVINFO
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiEnumDeviceInterfaces*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  InterfaceClassGuid: ptr GUID,
+  MemberIndex: DWORD,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiEnumInterfaceDevice*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  InterfaceClassGuid: ptr GUID,
+  MemberIndex: DWORD,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+): WINBOOL {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiEnumDeviceInterfaces"
+.}
+
+proc SetupDiCreateDeviceInterfaceA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  InterfaceClassGuid: ptr GUID,
+  ReferenceString: PCSTR,
+  CreationFlags: DWORD,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiCreateDeviceInterfaceW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  InterfaceClassGuid: ptr GUID,
+  ReferenceString: PCWSTR,
+  CreationFlags: DWORD,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiCreateInterfaceDeviceW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  InterfaceClassGuid: ptr GUID,
+  ReferenceString: PCWSTR,
+  CreationFlags: DWORD,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+): WINBOOL {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceW"
+.}
+
+proc SetupDiCreateInterfaceDeviceA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  InterfaceClassGuid: ptr GUID,
+  ReferenceString: PCSTR,
+  CreationFlags: DWORD,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+): WINBOOL {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceA"
+.}
+
+proc SetupDiOpenDeviceInterfaceA*(
+  DeviceInfoSet: HDEVINFO,
+  DevicePath: PCSTR,
+  OpenFlags: DWORD,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiOpenDeviceInterfaceW*(
+  DeviceInfoSet: HDEVINFO,
+  DevicePath: PCWSTR,
+  OpenFlags: DWORD,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiOpenInterfaceDeviceW*(
+  DeviceInfoSet: HDEVINFO,
+  DevicePath: PCWSTR,
+  OpenFlags: DWORD,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+): WINBOOL {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInterfaceW"
+.}
+
+proc SetupDiOpenInterfaceDeviceA*(
+  DeviceInfoSet: HDEVINFO,
+  DevicePath: PCSTR,
+  OpenFlags: DWORD,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+): WINBOOL {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInterfaceA"
+.}
+
+proc SetupDiGetDeviceInterfaceAlias*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  AliasInterfaceClassGuid: ptr GUID,
+  AliasDeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetInterfaceDeviceAlias*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  AliasInterfaceClassGuid: ptr GUID,
+  AliasDeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+): WINBOOL {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInterfaceAlias"
+.}
+
+proc SetupDiDeleteDeviceInterfaceData*(
+  DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiDeleteInterfaceDeviceData*(
+  DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA
+): WINBOOL {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiDeleteDeviceInterfaceData"
+.}
+
+proc SetupDiRemoveDeviceInterface*(
+  DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiRemoveInterfaceDevice*(
+  DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA
+): WINBOOL {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiRemoveDeviceInterface"
+.}
+
+proc SetupDiGetDeviceInterfaceDetailA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_A,
+  DeviceInterfaceDetailDataSize: DWORD,
+  RequiredSize: PDWORD,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetDeviceInterfaceDetailW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_W,
+  DeviceInterfaceDetailDataSize: DWORD,
+  RequiredSize: PDWORD,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetInterfaceDeviceDetailW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_W,
+  DeviceInterfaceDetailDataSize: DWORD,
+  RequiredSize: PDWORD,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+): WINBOOL {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInterfaceDetailW"
+.}
+
+proc SetupDiGetInterfaceDeviceDetailA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_A,
+  DeviceInterfaceDetailDataSize: DWORD,
+  RequiredSize: PDWORD,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+): WINBOOL {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInterfaceDetailA"
+.}
+
+proc SetupDiInstallDeviceInterfaces*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiInstallInterfaceDevices*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiInstallDeviceInterfaces"
+.}
+
+proc SetupDiSetDeviceInterfaceDefault*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  Flags: DWORD,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiRegisterDeviceInfo*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  Flags: DWORD,
+  CompareProc: PSP_DETSIG_CMPPROC,
+  CompareContext: PVOID,
+  DupDeviceInfoData: PSP_DEVINFO_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiBuildDriverInfoList*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverType: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiCancelDriverInfoSearch*(
+  DeviceInfoSet: HDEVINFO
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiEnumDriverInfoA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DriverType: DWORD,
+  MemberIndex: DWORD,
+  DriverInfoData: PSP_DRVINFO_DATA_A,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiEnumDriverInfoW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DriverType: DWORD,
+  MemberIndex: DWORD,
+  DriverInfoData: PSP_DRVINFO_DATA_W,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetSelectedDriverA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DriverInfoData: PSP_DRVINFO_DATA_A,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetSelectedDriverW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DriverInfoData: PSP_DRVINFO_DATA_W,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSetSelectedDriverA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DriverInfoData: PSP_DRVINFO_DATA_A,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSetSelectedDriverW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DriverInfoData: PSP_DRVINFO_DATA_W,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetDriverInfoDetailA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DriverInfoData: PSP_DRVINFO_DATA_A,
+  DriverInfoDetailData: PSP_DRVINFO_DETAIL_DATA_A,
+  DriverInfoDetailDataSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetDriverInfoDetailW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DriverInfoData: PSP_DRVINFO_DATA_W,
+  DriverInfoDetailData: PSP_DRVINFO_DETAIL_DATA_W,
+  DriverInfoDetailDataSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiDestroyDriverInfoList*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverType: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassDevsA*(
+  ClassGuid: ptr GUID, Enumerator: PCSTR, hwndParent: HWND, Flags: DWORD
+): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassDevsW*(
+  ClassGuid: ptr GUID, Enumerator: PCWSTR, hwndParent: HWND, Flags: DWORD
+): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassDevsExA*(
+  ClassGuid: ptr GUID,
+  Enumerator: PCSTR,
+  hwndParent: HWND,
+  Flags: DWORD,
+  DeviceInfoSet: HDEVINFO,
+  MachineName: PCSTR,
+  Reserved: PVOID,
+): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassDevsExW*(
+  ClassGuid: ptr GUID,
+  Enumerator: PCWSTR,
+  hwndParent: HWND,
+  Flags: DWORD,
+  DeviceInfoSet: HDEVINFO,
+  MachineName: PCWSTR,
+  Reserved: PVOID,
+): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetINFClassA*(
+  InfName: PCSTR,
+  ClassGuid: LPGUID,
+  ClassName: PSTR,
+  ClassNameSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetINFClassW*(
+  InfName: PCWSTR,
+  ClassGuid: LPGUID,
+  ClassName: PWSTR,
+  ClassNameSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiBuildClassInfoList*(
+  Flags: DWORD, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiBuildClassInfoListExA*(
+  Flags: DWORD,
+  ClassGuidList: LPGUID,
+  ClassGuidListSize: DWORD,
+  RequiredSize: PDWORD,
+  MachineName: PCSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiBuildClassInfoListExW*(
+  Flags: DWORD,
+  ClassGuidList: LPGUID,
+  ClassGuidListSize: DWORD,
+  RequiredSize: PDWORD,
+  MachineName: PCWSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassDescriptionA*(
+  ClassGuid: ptr GUID,
+  ClassDescription: PSTR,
+  ClassDescriptionSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassDescriptionW*(
+  ClassGuid: ptr GUID,
+  ClassDescription: PWSTR,
+  ClassDescriptionSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassDescriptionExA*(
+  ClassGuid: ptr GUID,
+  ClassDescription: PSTR,
+  ClassDescriptionSize: DWORD,
+  RequiredSize: PDWORD,
+  MachineName: PCSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassDescriptionExW*(
+  ClassGuid: ptr GUID,
+  ClassDescription: PWSTR,
+  ClassDescriptionSize: DWORD,
+  RequiredSize: PDWORD,
+  MachineName: PCWSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiCallClassInstaller*(
+  InstallFunction: DI_FUNCTION,
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSelectDevice*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSelectBestCompatDrv*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiInstallDevice*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiInstallDriverFiles*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiRegisterCoDeviceInstallers*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiRemoveDevice*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiUnremoveDevice*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiRestartDevices*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiChangeState*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiInstallClassA*(
+  hwndParent: HWND, InfFileName: PCSTR, Flags: DWORD, FileQueue: HSPFILEQ
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiInstallClassW*(
+  hwndParent: HWND, InfFileName: PCWSTR, Flags: DWORD, FileQueue: HSPFILEQ
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiInstallClassExA*(
+  hwndParent: HWND,
+  InfFileName: PCSTR,
+  Flags: DWORD,
+  FileQueue: HSPFILEQ,
+  InterfaceClassGuid: ptr GUID,
+  Reserved1: PVOID,
+  Reserved2: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiInstallClassExW*(
+  hwndParent: HWND,
+  InfFileName: PCWSTR,
+  Flags: DWORD,
+  FileQueue: HSPFILEQ,
+  InterfaceClassGuid: ptr GUID,
+  Reserved1: PVOID,
+  Reserved2: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiOpenClassRegKey*(
+  ClassGuid: ptr GUID, samDesired: REGSAM
+): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiOpenClassRegKeyExA*(
+  ClassGuid: ptr GUID,
+  samDesired: REGSAM,
+  Flags: DWORD,
+  MachineName: PCSTR,
+  Reserved: PVOID,
+): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiOpenClassRegKeyExW*(
+  ClassGuid: ptr GUID,
+  samDesired: REGSAM,
+  Flags: DWORD,
+  MachineName: PCWSTR,
+  Reserved: PVOID,
+): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiCreateDeviceInterfaceRegKeyA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  Reserved: DWORD,
+  samDesired: REGSAM,
+  InfHandle: HINF,
+  InfSectionName: PCSTR,
+): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiCreateDeviceInterfaceRegKeyW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  Reserved: DWORD,
+  samDesired: REGSAM,
+  InfHandle: HINF,
+  InfSectionName: PCWSTR,
+): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiCreateInterfaceDeviceRegKeyW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  Reserved: DWORD,
+  samDesired: REGSAM,
+  InfHandle: HINF,
+  InfSectionName: PCWSTR,
+): HKEY {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceRegKeyW"
+.}
+
+proc SetupDiCreateInterfaceDeviceRegKeyA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  Reserved: DWORD,
+  samDesired: REGSAM,
+  InfHandle: HINF,
+  InfSectionName: PCSTR,
+): HKEY {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceRegKeyA"
+.}
+
+proc SetupDiOpenDeviceInterfaceRegKey*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  Reserved: DWORD,
+  samDesired: REGSAM,
+): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiOpenInterfaceDeviceRegKey*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  Reserved: DWORD,
+  samDesired: REGSAM,
+): HKEY {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInterfaceRegKey"
+.}
+
+proc SetupDiDeleteDeviceInterfaceRegKey*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  Reserved: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiDeleteInterfaceDeviceRegKey*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  Reserved: DWORD,
+): WINBOOL {.
+  winapi, stdcall, dynlib: "setupapi", importc: "SetupDiDeleteDeviceInterfaceRegKey"
+.}
+
+proc SetupDiCreateDevRegKeyA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  Scope: DWORD,
+  HwProfile: DWORD,
+  KeyType: DWORD,
+  InfHandle: HINF,
+  InfSectionName: PCSTR,
+): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiCreateDevRegKeyW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  Scope: DWORD,
+  HwProfile: DWORD,
+  KeyType: DWORD,
+  InfHandle: HINF,
+  InfSectionName: PCWSTR,
+): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiOpenDevRegKey*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  Scope: DWORD,
+  HwProfile: DWORD,
+  KeyType: DWORD,
+  samDesired: REGSAM,
+): HKEY {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiDeleteDevRegKey*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  Scope: DWORD,
+  HwProfile: DWORD,
+  KeyType: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetHwProfileList*(
+  HwProfileList: PDWORD,
+  HwProfileListSize: DWORD,
+  RequiredSize: PDWORD,
+  CurrentlyActiveIndex: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetHwProfileListExA*(
+  HwProfileList: PDWORD,
+  HwProfileListSize: DWORD,
+  RequiredSize: PDWORD,
+  CurrentlyActiveIndex: PDWORD,
+  MachineName: PCSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetHwProfileListExW*(
+  HwProfileList: PDWORD,
+  HwProfileListSize: DWORD,
+  RequiredSize: PDWORD,
+  CurrentlyActiveIndex: PDWORD,
+  MachineName: PCWSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetDeviceRegistryPropertyA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  Property: DWORD,
+  PropertyRegDataType: PDWORD,
+  PropertyBuffer: PBYTE,
+  PropertyBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetDeviceRegistryPropertyW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  Property: DWORD,
+  PropertyRegDataType: PDWORD,
+  PropertyBuffer: PBYTE,
+  PropertyBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassRegistryPropertyA*(
+  ClassGuid: ptr GUID,
+  Property: DWORD,
+  PropertyRegDataType: PDWORD,
+  PropertyBuffer: PBYTE,
+  PropertyBufferSize: DWORD,
+  RequiredSize: PDWORD,
+  MachineName: PCSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassRegistryPropertyW*(
+  ClassGuid: ptr GUID,
+  Property: DWORD,
+  PropertyRegDataType: PDWORD,
+  PropertyBuffer: PBYTE,
+  PropertyBufferSize: DWORD,
+  RequiredSize: PDWORD,
+  MachineName: PCWSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSetDeviceRegistryPropertyA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  Property: DWORD,
+  PropertyBuffer: ptr BYTE,
+  PropertyBufferSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSetDeviceRegistryPropertyW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  Property: DWORD,
+  PropertyBuffer: ptr BYTE,
+  PropertyBufferSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSetClassRegistryPropertyA*(
+  ClassGuid: ptr GUID,
+  Property: DWORD,
+  PropertyBuffer: ptr BYTE,
+  PropertyBufferSize: DWORD,
+  MachineName: PCSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSetClassRegistryPropertyW*(
+  ClassGuid: ptr GUID,
+  Property: DWORD,
+  PropertyBuffer: ptr BYTE,
+  PropertyBufferSize: DWORD,
+  MachineName: PCWSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetDeviceInstallParamsA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DeviceInstallParams: PSP_DEVINSTALL_PARAMS_A,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetDeviceInstallParamsW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DeviceInstallParams: PSP_DEVINSTALL_PARAMS_W,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassInstallParamsA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  ClassInstallParams: PSP_CLASSINSTALL_HEADER,
+  ClassInstallParamsSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassInstallParamsW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  ClassInstallParams: PSP_CLASSINSTALL_HEADER,
+  ClassInstallParamsSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSetDeviceInstallParamsA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DeviceInstallParams: PSP_DEVINSTALL_PARAMS_A,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSetDeviceInstallParamsW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DeviceInstallParams: PSP_DEVINSTALL_PARAMS_W,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSetClassInstallParamsA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  ClassInstallParams: PSP_CLASSINSTALL_HEADER,
+  ClassInstallParamsSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSetClassInstallParamsW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  ClassInstallParams: PSP_CLASSINSTALL_HEADER,
+  ClassInstallParamsSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetDriverInstallParamsA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DriverInfoData: PSP_DRVINFO_DATA_A,
+  DriverInstallParams: PSP_DRVINSTALL_PARAMS,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetDriverInstallParamsW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DriverInfoData: PSP_DRVINFO_DATA_W,
+  DriverInstallParams: PSP_DRVINSTALL_PARAMS,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSetDriverInstallParamsA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DriverInfoData: PSP_DRVINFO_DATA_A,
+  DriverInstallParams: PSP_DRVINSTALL_PARAMS,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSetDriverInstallParamsW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  DriverInfoData: PSP_DRVINFO_DATA_W,
+  DriverInstallParams: PSP_DRVINSTALL_PARAMS,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiLoadClassIcon*(
+  ClassGuid: ptr GUID, LargeIcon: ptr HICON, MiniIconIndex: PINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiDrawMiniIcon*(
+  hdc: HDC, rc: RECT, MiniIconIndex: INT, Flags: DWORD
+): INT {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassBitmapIndex*(
+  ClassGuid: ptr GUID, MiniIconIndex: PINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassImageList*(
+  ClassImageListData: PSP_CLASSIMAGELIST_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassImageListExA*(
+  ClassImageListData: PSP_CLASSIMAGELIST_DATA, MachineName: PCSTR, Reserved: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassImageListExW*(
+  ClassImageListData: PSP_CLASSIMAGELIST_DATA, MachineName: PCWSTR, Reserved: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassImageIndex*(
+  ClassImageListData: PSP_CLASSIMAGELIST_DATA, ClassGuid: ptr GUID, ImageIndex: PINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiDestroyClassImageList*(
+  ClassImageListData: PSP_CLASSIMAGELIST_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassDevPropertySheetsA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  PropertySheetHeader: LPPROPSHEETHEADERA,
+  PropertySheetHeaderPageListSize: DWORD,
+  RequiredSize: PDWORD,
+  PropertySheetType: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetClassDevPropertySheetsW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  PropertySheetHeader: LPPROPSHEETHEADERW,
+  PropertySheetHeaderPageListSize: DWORD,
+  RequiredSize: PDWORD,
+  PropertySheetType: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiAskForOEMDisk*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSelectOEMDrv*(
+  hwndParent: HWND, DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiClassNameFromGuidA*(
+  ClassGuid: ptr GUID, ClassName: PSTR, ClassNameSize: DWORD, RequiredSize: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiClassNameFromGuidW*(
+  ClassGuid: ptr GUID, ClassName: PWSTR, ClassNameSize: DWORD, RequiredSize: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiClassNameFromGuidExA*(
+  ClassGuid: ptr GUID,
+  ClassName: PSTR,
+  ClassNameSize: DWORD,
+  RequiredSize: PDWORD,
+  MachineName: PCSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiClassNameFromGuidExW*(
+  ClassGuid: ptr GUID,
+  ClassName: PWSTR,
+  ClassNameSize: DWORD,
+  RequiredSize: PDWORD,
+  MachineName: PCWSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiClassGuidsFromNameA*(
+  ClassName: PCSTR,
+  ClassGuidList: LPGUID,
+  ClassGuidListSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiClassGuidsFromNameW*(
+  ClassName: PCWSTR,
+  ClassGuidList: LPGUID,
+  ClassGuidListSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiClassGuidsFromNameExA*(
+  ClassName: PCSTR,
+  ClassGuidList: LPGUID,
+  ClassGuidListSize: DWORD,
+  RequiredSize: PDWORD,
+  MachineName: PCSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiClassGuidsFromNameExW*(
+  ClassName: PCWSTR,
+  ClassGuidList: LPGUID,
+  ClassGuidListSize: DWORD,
+  RequiredSize: PDWORD,
+  MachineName: PCWSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetHwProfileFriendlyNameA*(
+  HwProfile: DWORD, FriendlyName: PSTR, FriendlyNameSize: DWORD, RequiredSize: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetHwProfileFriendlyNameW*(
+  HwProfile: DWORD, FriendlyName: PWSTR, FriendlyNameSize: DWORD, RequiredSize: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetHwProfileFriendlyNameExA*(
+  HwProfile: DWORD,
+  FriendlyName: PSTR,
+  FriendlyNameSize: DWORD,
+  RequiredSize: PDWORD,
+  MachineName: PCSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetHwProfileFriendlyNameExW*(
+  HwProfile: DWORD,
+  FriendlyName: PWSTR,
+  FriendlyNameSize: DWORD,
+  RequiredSize: PDWORD,
+  MachineName: PCWSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetWizardPage*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  InstallWizardData: PSP_INSTALLWIZARD_DATA,
+  PageType: DWORD,
+  Flags: DWORD,
+): HPROPSHEETPAGE {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetSelectedDevice*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiSetSelectedDevice*(
+  DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetActualModelsSectionA*(
+  Context: PINFCONTEXT,
+  AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+  InfSectionWithExt: PSTR,
+  InfSectionWithExtSize: DWORD,
+  RequiredSize: PDWORD,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetActualModelsSectionW*(
+  Context: PINFCONTEXT,
+  AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+  InfSectionWithExt: PWSTR,
+  InfSectionWithExtSize: DWORD,
+  RequiredSize: PDWORD,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetActualSectionToInstallA*(
+  InfHandle: HINF,
+  InfSectionName: PCSTR,
+  InfSectionWithExt: PSTR,
+  InfSectionWithExtSize: DWORD,
+  RequiredSize: PDWORD,
+  Extension: ptr PSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetActualSectionToInstallW*(
+  InfHandle: HINF,
+  InfSectionName: PCWSTR,
+  InfSectionWithExt: PWSTR,
+  InfSectionWithExtSize: DWORD,
+  RequiredSize: PDWORD,
+  Extension: ptr PWSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetActualSectionToInstallExA*(
+  InfHandle: HINF,
+  InfSectionName: PCSTR,
+  AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+  InfSectionWithExt: PSTR,
+  InfSectionWithExtSize: DWORD,
+  RequiredSize: PDWORD,
+  Extension: ptr PSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetActualSectionToInstallExW*(
+  InfHandle: HINF,
+  InfSectionName: PCWSTR,
+  AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+  InfSectionWithExt: PWSTR,
+  InfSectionWithExtSize: DWORD,
+  RequiredSize: PDWORD,
+  Extension: ptr PWSTR,
+  Reserved: PVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupEnumInfSectionsA*(
+  InfHandle: HINF, Index: UINT, Buffer: PSTR, Size: UINT, SizeNeeded: ptr UINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupEnumInfSectionsW*(
+  InfHandle: HINF, Index: UINT, Buffer: PWSTR, Size: UINT, SizeNeeded: ptr UINT
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupVerifyInfFileA*(
+  InfName: PCSTR,
+  AltPlatformInfo: PSP_ALTPLATFORM_INFO,
+  InfSignerInfo: PSP_INF_SIGNER_INFO_A,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupVerifyInfFileW*(
+  InfName: PCWSTR,
+  AltPlatformInfo: PSP_ALTPLATFORM_INFO,
+  InfSignerInfo: PSP_INF_SIGNER_INFO_W,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetCustomDevicePropertyA*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  CustomPropertyName: PCSTR,
+  Flags: DWORD,
+  PropertyRegDataType: PDWORD,
+  PropertyBuffer: PBYTE,
+  PropertyBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupDiGetCustomDevicePropertyW*(
+  DeviceInfoSet: HDEVINFO,
+  DeviceInfoData: PSP_DEVINFO_DATA,
+  CustomPropertyName: PCWSTR,
+  Flags: DWORD,
+  PropertyRegDataType: PDWORD,
+  PropertyBuffer: PBYTE,
+  PropertyBufferSize: DWORD,
+  RequiredSize: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupConfigureWmiFromInfSectionA*(
+  InfHandle: HINF, SectionName: PCSTR, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc SetupConfigureWmiFromInfSectionW*(
+  InfHandle: HINF, SectionName: PCWSTR, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc.}
+
+proc `Reserved=`*(self: var SP_ALTPLATFORM_INFO_V2, x: WORD) {.inline.} =
+  self.union1.Reserved = x
+
+proc Reserved*(self: SP_ALTPLATFORM_INFO_V2): WORD {.inline.} =
+  self.union1.Reserved
+
+proc Reserved*(self: var SP_ALTPLATFORM_INFO_V2): var WORD {.inline.} =
+  self.union1.Reserved
+
+proc `Flags=`*(self: var SP_ALTPLATFORM_INFO_V2, x: WORD) {.inline.} =
+  self.union1.Flags = x
+
+proc Flags*(self: SP_ALTPLATFORM_INFO_V2): WORD {.inline.} =
+  self.union1.Flags
+
+proc Flags*(self: var SP_ALTPLATFORM_INFO_V2): var WORD {.inline.} =
+  self.union1.Flags
+
 when winimUnicode:
   type
     SP_ORIGINAL_FILE_INFO* = SP_ORIGINAL_FILE_INFO_W
@@ -1618,133 +3612,1102 @@
     PSP_BACKUP_QUEUE_PARAMS_V1* = PSP_BACKUP_QUEUE_PARAMS_V1_W
     SP_INF_SIGNER_INFO* = SP_INF_SIGNER_INFO_W
     PSP_INF_SIGNER_INFO* = PSP_INF_SIGNER_INFO_W
-  proc SetupGetInfInformation*(InfSpec: LPCVOID, SearchControl: DWORD, ReturnBuffer: PSP_INF_INFORMATION, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetInfInformationW".}
-  proc SetupQueryInfFileInformation*(InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryInfFileInformationW".}
-  proc SetupQueryInfOriginalFileInformation*(InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, OriginalFileInfo: PSP_ORIGINAL_FILE_INFO_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryInfOriginalFileInformationW".}
-  proc SetupQueryInfVersionInformation*(InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, Key: PCWSTR, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryInfVersionInformationW".}
-  proc SetupGetInfFileList*(DirectoryPath: PCWSTR, InfStyle: DWORD, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetInfFileListW".}
-  proc SetupOpenInfFile*(FileName: PCWSTR, InfClass: PCWSTR, InfStyle: DWORD, ErrorLine: PUINT): HINF {.winapi, stdcall, dynlib: "setupapi", importc: "SetupOpenInfFileW".}
-  proc SetupOpenAppendInfFile*(FileName: PCWSTR, InfHandle: HINF, ErrorLine: PUINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupOpenAppendInfFileW".}
-  proc SetupFindFirstLine*(InfHandle: HINF, Section: PCWSTR, Key: PCWSTR, Context: PINFCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupFindFirstLineW".}
-  proc SetupFindNextMatchLine*(ContextIn: PINFCONTEXT, Key: PCWSTR, ContextOut: PINFCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupFindNextMatchLineW".}
-  proc SetupGetLineByIndex*(InfHandle: HINF, Section: PCWSTR, Index: DWORD, Context: PINFCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetLineByIndexW".}
-  proc SetupGetLineCount*(InfHandle: HINF, Section: PCWSTR): LONG {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetLineCountW".}
-  proc SetupGetLineText*(Context: PINFCONTEXT, InfHandle: HINF, Section: PCWSTR, Key: PCWSTR, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetLineTextW".}
-  proc SetupGetStringField*(Context: PINFCONTEXT, FieldIndex: DWORD, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetStringFieldW".}
-  proc SetupGetMultiSzField*(Context: PINFCONTEXT, FieldIndex: DWORD, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetMultiSzFieldW".}
-  proc SetupGetFileCompressionInfo*(SourceFileName: PCWSTR, ActualSourceFileName: ptr PWSTR, SourceFileSize: PDWORD, TargetFileSize: PDWORD, CompressionType: PUINT): DWORD {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetFileCompressionInfoW".}
-  proc SetupGetFileCompressionInfoEx*(SourceFileName: PCWSTR, ActualSourceFileNameBuffer: PWSTR, ActualSourceFileNameBufferLen: DWORD, RequiredBufferLen: PDWORD, SourceFileSize: PDWORD, TargetFileSize: PDWORD, CompressionType: PUINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetFileCompressionInfoExW".}
-  proc SetupDecompressOrCopyFile*(SourceFileName: PCWSTR, TargetFileName: PCWSTR, CompressionType: PUINT): DWORD {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDecompressOrCopyFileW".}
-  proc SetupGetSourceFileLocation*(InfHandle: HINF, InfContext: PINFCONTEXT, FileName: PCWSTR, SourceId: PUINT, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetSourceFileLocationW".}
-  proc SetupGetSourceFileSize*(InfHandle: HINF, InfContext: PINFCONTEXT, FileName: PCWSTR, Section: PCWSTR, FileSize: PDWORD, RoundingFactor: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetSourceFileSizeW".}
-  proc SetupGetTargetPath*(InfHandle: HINF, InfContext: PINFCONTEXT, Section: PCWSTR, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetTargetPathW".}
-  proc SetupSetSourceList*(Flags: DWORD, SourceList: ptr PCWSTR, SourceCount: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetSourceListW".}
-  proc SetupAddToSourceList*(Flags: DWORD, Source: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupAddToSourceListW".}
-  proc SetupRemoveFromSourceList*(Flags: DWORD, Source: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveFromSourceListW".}
-  proc SetupQuerySourceList*(Flags: DWORD, List: ptr ptr PCWSTR, Count: PUINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQuerySourceListW".}
-  proc SetupFreeSourceList*(List: ptr ptr PCWSTR, Count: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupFreeSourceListW".}
-  proc SetupPromptForDisk*(hwndParent: HWND, DialogTitle: PCWSTR, DiskName: PCWSTR, PathToSource: PCWSTR, FileSought: PCWSTR, TagFile: PCWSTR, DiskPromptStyle: DWORD, PathBuffer: PWSTR, PathBufferSize: DWORD, PathRequiredSize: PDWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupPromptForDiskW".}
-  proc SetupCopyError*(hwndParent: HWND, DialogTitle: PCWSTR, DiskName: PCWSTR, PathToSource: PCWSTR, SourceFile: PCWSTR, TargetPathFile: PCWSTR, Win32ErrorCode: UINT, Style: DWORD, PathBuffer: PWSTR, PathBufferSize: DWORD, PathRequiredSize: PDWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupCopyErrorW".}
-  proc SetupRenameError*(hwndParent: HWND, DialogTitle: PCWSTR, SourceFile: PCWSTR, TargetFile: PCWSTR, Win32ErrorCode: UINT, Style: DWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupRenameErrorW".}
-  proc SetupDeleteError*(hwndParent: HWND, DialogTitle: PCWSTR, File: PCWSTR, Win32ErrorCode: UINT, Style: DWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDeleteErrorW".}
-  proc SetupBackupError*(hwndParent: HWND, DialogTitle: PCWSTR, SourceFile: PCWSTR, TargetFile: PCWSTR, Win32ErrorCode: UINT, Style: DWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupBackupErrorW".}
-  proc SetupSetDirectoryId*(InfHandle: HINF, Id: DWORD, Directory: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetDirectoryIdW".}
-  proc SetupSetDirectoryIdEx*(InfHandle: HINF, Id: DWORD, Directory: PCWSTR, Flags: DWORD, Reserved1: DWORD, Reserved2: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetDirectoryIdExW".}
-  proc SetupGetSourceInfo*(InfHandle: HINF, SourceId: UINT, InfoDesired: UINT, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetSourceInfoW".}
-  proc SetupInstallFile*(InfHandle: HINF, InfContext: PINFCONTEXT, SourceFile: PCWSTR, SourcePathRoot: PCWSTR, DestinationName: PCWSTR, CopyStyle: DWORD, CopyMsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFileW".}
-  proc SetupInstallFileEx*(InfHandle: HINF, InfContext: PINFCONTEXT, SourceFile: PCWSTR, SourcePathRoot: PCWSTR, DestinationName: PCWSTR, CopyStyle: DWORD, CopyMsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID, FileWasInUse: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFileExW".}
-  proc SetupSetFileQueueAlternatePlatform*(QueueHandle: HSPFILEQ, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, AlternateDefaultCatalogFile: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetFileQueueAlternatePlatformW".}
-  proc SetupQueueDeleteSection*(QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueDeleteSectionW".}
-  proc SetupQueueRename*(QueueHandle: HSPFILEQ, SourcePath: PCWSTR, SourceFilename: PCWSTR, TargetPath: PCWSTR, TargetFilename: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueRenameW".}
-  proc SetupQueueRenameSection*(QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueRenameSectionW".}
-  proc SetupCommitFileQueue*(Owner: HWND, QueueHandle: HSPFILEQ, MsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupCommitFileQueueW".}
-  proc SetupScanFileQueue*(FileQueue: HSPFILEQ, Flags: DWORD, Window: HWND, CallbackRoutine: PSP_FILE_CALLBACK_W, CallbackContext: PVOID, Result: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupScanFileQueueW".}
-  proc SetupSetPlatformPathOverride*(Override: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetPlatformPathOverrideW".}
-  proc SetupQueueCopy*(QueueHandle: HSPFILEQ, SourceRootPath: PCWSTR, SourcePath: PCWSTR, SourceFilename: PCWSTR, SourceDescription: PCWSTR, SourceTagfile: PCWSTR, TargetDirectory: PCWSTR, TargetFilename: PCWSTR, CopyStyle: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueCopyW".}
-  proc SetupQueueCopyIndirect*(CopyParams: PSP_FILE_COPY_PARAMS_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueCopyIndirectW".}
-  proc SetupQueueDefaultCopy*(QueueHandle: HSPFILEQ, InfHandle: HINF, SourceRootPath: PCWSTR, SourceFilename: PCWSTR, TargetFilename: PCWSTR, CopyStyle: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueDefaultCopyW".}
-  proc SetupQueueCopySection*(QueueHandle: HSPFILEQ, SourceRootPath: PCWSTR, InfHandle: HINF, ListInfHandle: HINF, Section: PCWSTR, CopyStyle: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueCopySectionW".}
-  proc SetupQueueDelete*(QueueHandle: HSPFILEQ, PathPart1: PCWSTR, PathPart2: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueDeleteW".}
-  proc SetupCopyOEMInf*(SourceInfFileName: PCWSTR, OEMSourceMediaLocation: PCWSTR, OEMSourceMediaType: DWORD, CopyStyle: DWORD, DestinationInfFileName: PWSTR, DestinationInfFileNameSize: DWORD, RequiredSize: PDWORD, DestinationInfFileNameComponent: ptr PWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupCopyOEMInfW".}
-  proc SetupUninstallOEMInf*(InfFileName: PCWSTR, Flags: DWORD, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupUninstallOEMInfW".}
-  proc SetupCreateDiskSpaceList*(Reserved1: PVOID, Reserved2: DWORD, Flags: UINT): HDSKSPC {.winapi, stdcall, dynlib: "setupapi", importc: "SetupCreateDiskSpaceListW".}
-  proc SetupDuplicateDiskSpaceList*(DiskSpace: HDSKSPC, Reserved1: PVOID, Reserved2: DWORD, Flags: UINT): HDSKSPC {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDuplicateDiskSpaceListW".}
-  proc SetupQueryDrivesInDiskSpaceList*(DiskSpace: HDSKSPC, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryDrivesInDiskSpaceListW".}
-  proc SetupQuerySpaceRequiredOnDrive*(DiskSpace: HDSKSPC, DriveSpec: PCWSTR, SpaceRequired: ptr LONGLONG, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQuerySpaceRequiredOnDriveW".}
-  proc SetupAdjustDiskSpaceList*(DiskSpace: HDSKSPC, DriveRoot: LPCWSTR, Amount: LONGLONG, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupAdjustDiskSpaceListW".}
-  proc SetupAddToDiskSpaceList*(DiskSpace: HDSKSPC, TargetFilespec: PCWSTR, FileSize: LONGLONG, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupAddToDiskSpaceListW".}
-  proc SetupAddSectionToDiskSpaceList*(DiskSpace: HDSKSPC, InfHandle: HINF, ListInfHandle: HINF, SectionName: PCWSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupAddSectionToDiskSpaceListW".}
-  proc SetupAddInstallSectionToDiskSpaceList*(DiskSpace: HDSKSPC, InfHandle: HINF, LayoutInfHandle: HINF, SectionName: PCWSTR, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupAddInstallSectionToDiskSpaceListW".}
-  proc SetupRemoveFromDiskSpaceList*(DiskSpace: HDSKSPC, TargetFilespec: PCWSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveFromDiskSpaceListW".}
-  proc SetupRemoveSectionFromDiskSpaceList*(DiskSpace: HDSKSPC, InfHandle: HINF, ListInfHandle: HINF, SectionName: PCWSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveSectionFromDiskSpaceListW".}
-  proc SetupRemoveInstallSectionFromDiskSpaceList*(DiskSpace: HDSKSPC, InfHandle: HINF, LayoutInfHandle: HINF, SectionName: PCWSTR, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveInstallSectionFromDiskSpaceListW".}
-  proc SetupIterateCabinet*(CabinetFile: PCWSTR, Reserved: DWORD, MsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupIterateCabinetW".}
-  proc SetupDefaultQueueCallback*(Context: PVOID, Notification: UINT, Param1: UINT_PTR, Param2: UINT_PTR): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDefaultQueueCallbackW".}
-  proc SetupInstallFromInfSection*(Owner: HWND, InfHandle: HINF, SectionName: PCWSTR, Flags: UINT, RelativeKeyRoot: HKEY, SourceRootPath: PCWSTR, CopyFlags: UINT, MsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID, DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFromInfSectionW".}
-  proc SetupInstallFilesFromInfSection*(InfHandle: HINF, LayoutInfHandle: HINF, FileQueue: HSPFILEQ, SectionName: PCWSTR, SourceRootPath: PCWSTR, CopyFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFilesFromInfSectionW".}
-  proc SetupInstallServicesFromInfSection*(InfHandle: HINF, SectionName: PCWSTR, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallServicesFromInfSectionW".}
-  proc SetupInstallServicesFromInfSectionEx*(InfHandle: HINF, SectionName: PCWSTR, Flags: DWORD, DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Reserved1: PVOID, Reserved2: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallServicesFromInfSectionExW".}
-  proc InstallHinfSection*(Window: HWND, ModuleHandle: HINSTANCE, CommandLine: PCWSTR, ShowCommand: INT): VOID {.winapi, stdcall, dynlib: "setupapi", importc: "InstallHinfSectionW".}
-  proc SetupInitializeFileLog*(LogFileName: PCWSTR, Flags: DWORD): HSPFILELOG {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInitializeFileLogW".}
-  proc SetupLogFile*(FileLogHandle: HSPFILELOG, LogSectionName: PCWSTR, SourceFilename: PCWSTR, TargetFilename: PCWSTR, Checksum: DWORD, DiskTagfile: PCWSTR, DiskDescription: PCWSTR, OtherInfo: PCWSTR, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupLogFileW".}
-  proc SetupRemoveFileLogEntry*(FileLogHandle: HSPFILELOG, LogSectionName: PCWSTR, TargetFilename: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveFileLogEntryW".}
-  proc SetupQueryFileLog*(FileLogHandle: HSPFILELOG, LogSectionName: PCWSTR, TargetFilename: PCWSTR, DesiredInfo: SetupFileLogInfo, DataOut: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryFileLogW".}
-  proc SetupLogError*(MessageString: LPCWSTR, Severity: LogSeverity): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupLogErrorW".}
-  proc SetupGetBackupInformation*(QueueHandle: HSPFILEQ, BackupParams: PSP_BACKUP_QUEUE_PARAMS_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetBackupInformationW".}
-  proc SetupPrepareQueueForRestore*(QueueHandle: HSPFILEQ, BackupPath: PCWSTR, RestoreFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupPrepareQueueForRestoreW".}
-  proc SetupDiCreateDeviceInfoListEx*(ClassGuid: ptr GUID, hwndParent: HWND, MachineName: PCWSTR, Reserved: PVOID): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInfoListExW".}
-  proc SetupDiGetDeviceInfoListDetail*(DeviceInfoSet: HDEVINFO, DeviceInfoSetDetailData: PSP_DEVINFO_LIST_DETAIL_DATA_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInfoListDetailW".}
-  proc SetupDiCreateDeviceInfo*(DeviceInfoSet: HDEVINFO, DeviceName: PCWSTR, ClassGuid: ptr GUID, DeviceDescription: PCWSTR, hwndParent: HWND, CreationFlags: DWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInfoW".}
-  proc SetupDiOpenDeviceInfo*(DeviceInfoSet: HDEVINFO, DeviceInstanceId: PCWSTR, hwndParent: HWND, OpenFlags: DWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInfoW".}
-  proc SetupDiGetDeviceInstanceId*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstanceId: PWSTR, DeviceInstanceIdSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInstanceIdW".}
-  proc SetupDiCreateDeviceInterface*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, InterfaceClassGuid: ptr GUID, ReferenceString: PCWSTR, CreationFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceW".}
-  proc SetupDiCreateInterfaceDevice*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, InterfaceClassGuid: ptr GUID, ReferenceString: PCWSTR, CreationFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceW".}
-  proc SetupDiOpenDeviceInterface*(DeviceInfoSet: HDEVINFO, DevicePath: PCWSTR, OpenFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInterfaceW".}
-  proc SetupDiOpenInterfaceDevice*(DeviceInfoSet: HDEVINFO, DevicePath: PCWSTR, OpenFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInterfaceW".}
-  proc SetupDiGetDeviceInterfaceDetail*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_W, DeviceInterfaceDetailDataSize: DWORD, RequiredSize: PDWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInterfaceDetailW".}
-  proc SetupDiGetInterfaceDeviceDetail*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_W, DeviceInterfaceDetailDataSize: DWORD, RequiredSize: PDWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInterfaceDetailW".}
-  proc SetupDiEnumDriverInfo*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverType: DWORD, MemberIndex: DWORD, DriverInfoData: PSP_DRVINFO_DATA_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiEnumDriverInfoW".}
-  proc SetupDiGetSelectedDriver*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetSelectedDriverW".}
-  proc SetupDiSetSelectedDriver*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetSelectedDriverW".}
-  proc SetupDiGetDriverInfoDetail*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_W, DriverInfoDetailData: PSP_DRVINFO_DETAIL_DATA_W, DriverInfoDetailDataSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDriverInfoDetailW".}
-  proc SetupDiGetClassDevs*(ClassGuid: ptr GUID, Enumerator: PCWSTR, hwndParent: HWND, Flags: DWORD): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDevsW".}
-  proc SetupDiGetClassDevsEx*(ClassGuid: ptr GUID, Enumerator: PCWSTR, hwndParent: HWND, Flags: DWORD, DeviceInfoSet: HDEVINFO, MachineName: PCWSTR, Reserved: PVOID): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDevsExW".}
-  proc SetupDiGetINFClass*(InfName: PCWSTR, ClassGuid: LPGUID, ClassName: PWSTR, ClassNameSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetINFClassW".}
-  proc SetupDiBuildClassInfoListEx*(Flags: DWORD, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiBuildClassInfoListExW".}
-  proc SetupDiGetClassDescription*(ClassGuid: ptr GUID, ClassDescription: PWSTR, ClassDescriptionSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDescriptionW".}
-  proc SetupDiGetClassDescriptionEx*(ClassGuid: ptr GUID, ClassDescription: PWSTR, ClassDescriptionSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDescriptionExW".}
-  proc SetupDiInstallClass*(hwndParent: HWND, InfFileName: PCWSTR, Flags: DWORD, FileQueue: HSPFILEQ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiInstallClassW".}
-  proc SetupDiInstallClassEx*(hwndParent: HWND, InfFileName: PCWSTR, Flags: DWORD, FileQueue: HSPFILEQ, InterfaceClassGuid: ptr GUID, Reserved1: PVOID, Reserved2: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiInstallClassExW".}
-  proc SetupDiOpenClassRegKeyEx*(ClassGuid: ptr GUID, samDesired: REGSAM, Flags: DWORD, MachineName: PCWSTR, Reserved: PVOID): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenClassRegKeyExW".}
-  proc SetupDiCreateDeviceInterfaceRegKey*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD, samDesired: REGSAM, InfHandle: HINF, InfSectionName: PCWSTR): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceRegKeyW".}
-  proc SetupDiCreateInterfaceDeviceRegKey*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD, samDesired: REGSAM, InfHandle: HINF, InfSectionName: PCWSTR): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceRegKeyW".}
-  proc SetupDiCreateDevRegKey*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Scope: DWORD, HwProfile: DWORD, KeyType: DWORD, InfHandle: HINF, InfSectionName: PCWSTR): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDevRegKeyW".}
-  proc SetupDiGetHwProfileListEx*(HwProfileList: PDWORD, HwProfileListSize: DWORD, RequiredSize: PDWORD, CurrentlyActiveIndex: PDWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetHwProfileListExW".}
-  proc SetupDiGetDeviceRegistryProperty*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Property: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceRegistryPropertyW".}
-  proc SetupDiGetClassRegistryProperty*(ClassGuid: ptr GUID, Property: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassRegistryPropertyW".}
-  proc SetupDiSetDeviceRegistryProperty*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Property: DWORD, PropertyBuffer: ptr BYTE, PropertyBufferSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetDeviceRegistryPropertyW".}
-  proc SetupDiSetClassRegistryProperty*(ClassGuid: ptr GUID, Property: DWORD, PropertyBuffer: ptr BYTE, PropertyBufferSize: DWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetClassRegistryPropertyW".}
-  proc SetupDiGetDeviceInstallParams*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstallParams: PSP_DEVINSTALL_PARAMS_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInstallParamsW".}
-  proc SetupDiGetClassInstallParams*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ClassInstallParams: PSP_CLASSINSTALL_HEADER, ClassInstallParamsSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassInstallParamsW".}
-  proc SetupDiSetDeviceInstallParams*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstallParams: PSP_DEVINSTALL_PARAMS_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetDeviceInstallParamsW".}
-  proc SetupDiSetClassInstallParams*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ClassInstallParams: PSP_CLASSINSTALL_HEADER, ClassInstallParamsSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetClassInstallParamsW".}
-  proc SetupDiGetDriverInstallParams*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_W, DriverInstallParams: PSP_DRVINSTALL_PARAMS): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDriverInstallParamsW".}
-  proc SetupDiSetDriverInstallParams*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_W, DriverInstallParams: PSP_DRVINSTALL_PARAMS): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetDriverInstallParamsW".}
-  proc SetupDiGetClassImageListEx*(ClassImageListData: PSP_CLASSIMAGELIST_DATA, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassImageListExW".}
-  proc SetupDiGetClassDevPropertySheets*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, PropertySheetHeader: LPPROPSHEETHEADERW, PropertySheetHeaderPageListSize: DWORD, RequiredSize: PDWORD, PropertySheetType: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDevPropertySheetsW".}
-  proc SetupDiClassNameFromGuid*(ClassGuid: ptr GUID, ClassName: PWSTR, ClassNameSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassNameFromGuidW".}
-  proc SetupDiClassNameFromGuidEx*(ClassGuid: ptr GUID, ClassName: PWSTR, ClassNameSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassNameFromGuidExW".}
-  proc SetupDiClassGuidsFromName*(ClassName: PCWSTR, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassGuidsFromNameW".}
-  proc SetupDiClassGuidsFromNameEx*(ClassName: PCWSTR, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassGuidsFromNameExW".}
-  proc SetupDiGetHwProfileFriendlyName*(HwProfile: DWORD, FriendlyName: PWSTR, FriendlyNameSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetHwProfileFriendlyNameW".}
-  proc SetupDiGetHwProfileFriendlyNameEx*(HwProfile: DWORD, FriendlyName: PWSTR, FriendlyNameSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetHwProfileFriendlyNameExW".}
-  proc SetupDiGetActualModelsSection*(Context: PINFCONTEXT, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, InfSectionWithExt: PWSTR, InfSectionWithExtSize: DWORD, RequiredSize: PDWORD, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetActualModelsSectionW".}
-  proc SetupDiGetActualSectionToInstall*(InfHandle: HINF, InfSectionName: PCWSTR, InfSectionWithExt: PWSTR, InfSectionWithExtSize: DWORD, RequiredSize: PDWORD, Extension: ptr PWSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetActualSectionToInstallW".}
-  proc SetupDiGetActualSectionToInstallEx*(InfHandle: HINF, InfSectionName: PCWSTR, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, InfSectionWithExt: PWSTR, InfSectionWithExtSize: DWORD, RequiredSize: PDWORD, Extension: ptr PWSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetActualSectionToInstallExW".}
-  proc SetupEnumInfSections*(InfHandle: HINF, Index: UINT, Buffer: PWSTR, Size: UINT, SizeNeeded: ptr UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupEnumInfSectionsW".}
-  proc SetupVerifyInfFile*(InfName: PCWSTR, AltPlatformInfo: PSP_ALTPLATFORM_INFO, InfSignerInfo: PSP_INF_SIGNER_INFO_W): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupVerifyInfFileW".}
-  proc SetupDiGetCustomDeviceProperty*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, CustomPropertyName: PCWSTR, Flags: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetCustomDevicePropertyW".}
-  proc SetupConfigureWmiFromInfSection*(InfHandle: HINF, SectionName: PCWSTR, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupConfigureWmiFromInfSectionW".}
+
+  proc SetupGetInfInformation*(
+    InfSpec: LPCVOID,
+    SearchControl: DWORD,
+    ReturnBuffer: PSP_INF_INFORMATION,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetInfInformationW".}
+
+  proc SetupQueryInfFileInformation*(
+    InfInformation: PSP_INF_INFORMATION,
+    InfIndex: UINT,
+    ReturnBuffer: PWSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryInfFileInformationW"
+  .}
+
+  proc SetupQueryInfOriginalFileInformation*(
+    InfInformation: PSP_INF_INFORMATION,
+    InfIndex: UINT,
+    AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+    OriginalFileInfo: PSP_ORIGINAL_FILE_INFO_W,
+  ): WINBOOL {.
+    winapi,
+    stdcall,
+    dynlib: "setupapi",
+    importc: "SetupQueryInfOriginalFileInformationW"
+  .}
+
+  proc SetupQueryInfVersionInformation*(
+    InfInformation: PSP_INF_INFORMATION,
+    InfIndex: UINT,
+    Key: PCWSTR,
+    ReturnBuffer: PWSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryInfVersionInformationW"
+  .}
+
+  proc SetupGetInfFileList*(
+    DirectoryPath: PCWSTR,
+    InfStyle: DWORD,
+    ReturnBuffer: PWSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetInfFileListW".}
+
+  proc SetupOpenInfFile*(
+    FileName: PCWSTR, InfClass: PCWSTR, InfStyle: DWORD, ErrorLine: PUINT
+  ): HINF {.winapi, stdcall, dynlib: "setupapi", importc: "SetupOpenInfFileW".}
+
+  proc SetupOpenAppendInfFile*(
+    FileName: PCWSTR, InfHandle: HINF, ErrorLine: PUINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupOpenAppendInfFileW".}
+
+  proc SetupFindFirstLine*(
+    InfHandle: HINF, Section: PCWSTR, Key: PCWSTR, Context: PINFCONTEXT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupFindFirstLineW".}
+
+  proc SetupFindNextMatchLine*(
+    ContextIn: PINFCONTEXT, Key: PCWSTR, ContextOut: PINFCONTEXT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupFindNextMatchLineW".}
+
+  proc SetupGetLineByIndex*(
+    InfHandle: HINF, Section: PCWSTR, Index: DWORD, Context: PINFCONTEXT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetLineByIndexW".}
+
+  proc SetupGetLineCount*(
+    InfHandle: HINF, Section: PCWSTR
+  ): LONG {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetLineCountW".}
+
+  proc SetupGetLineText*(
+    Context: PINFCONTEXT,
+    InfHandle: HINF,
+    Section: PCWSTR,
+    Key: PCWSTR,
+    ReturnBuffer: PWSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetLineTextW".}
+
+  proc SetupGetStringField*(
+    Context: PINFCONTEXT,
+    FieldIndex: DWORD,
+    ReturnBuffer: PWSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetStringFieldW".}
+
+  proc SetupGetMultiSzField*(
+    Context: PINFCONTEXT,
+    FieldIndex: DWORD,
+    ReturnBuffer: PWSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetMultiSzFieldW".}
+
+  proc SetupGetFileCompressionInfo*(
+    SourceFileName: PCWSTR,
+    ActualSourceFileName: ptr PWSTR,
+    SourceFileSize: PDWORD,
+    TargetFileSize: PDWORD,
+    CompressionType: PUINT,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupGetFileCompressionInfoW"
+  .}
+
+  proc SetupGetFileCompressionInfoEx*(
+    SourceFileName: PCWSTR,
+    ActualSourceFileNameBuffer: PWSTR,
+    ActualSourceFileNameBufferLen: DWORD,
+    RequiredBufferLen: PDWORD,
+    SourceFileSize: PDWORD,
+    TargetFileSize: PDWORD,
+    CompressionType: PUINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupGetFileCompressionInfoExW"
+  .}
+
+  proc SetupDecompressOrCopyFile*(
+    SourceFileName: PCWSTR, TargetFileName: PCWSTR, CompressionType: PUINT
+  ): DWORD {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDecompressOrCopyFileW"
+  .}
+
+  proc SetupGetSourceFileLocation*(
+    InfHandle: HINF,
+    InfContext: PINFCONTEXT,
+    FileName: PCWSTR,
+    SourceId: PUINT,
+    ReturnBuffer: PWSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupGetSourceFileLocationW"
+  .}
+
+  proc SetupGetSourceFileSize*(
+    InfHandle: HINF,
+    InfContext: PINFCONTEXT,
+    FileName: PCWSTR,
+    Section: PCWSTR,
+    FileSize: PDWORD,
+    RoundingFactor: UINT,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetSourceFileSizeW".}
+
+  proc SetupGetTargetPath*(
+    InfHandle: HINF,
+    InfContext: PINFCONTEXT,
+    Section: PCWSTR,
+    ReturnBuffer: PWSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetTargetPathW".}
+
+  proc SetupSetSourceList*(
+    Flags: DWORD, SourceList: ptr PCWSTR, SourceCount: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetSourceListW".}
+
+  proc SetupAddToSourceList*(
+    Flags: DWORD, Source: PCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupAddToSourceListW".}
+
+  proc SetupRemoveFromSourceList*(
+    Flags: DWORD, Source: PCWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveFromSourceListW"
+  .}
+
+  proc SetupQuerySourceList*(
+    Flags: DWORD, List: ptr ptr PCWSTR, Count: PUINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQuerySourceListW".}
+
+  proc SetupFreeSourceList*(
+    List: ptr ptr PCWSTR, Count: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupFreeSourceListW".}
+
+  proc SetupPromptForDisk*(
+    hwndParent: HWND,
+    DialogTitle: PCWSTR,
+    DiskName: PCWSTR,
+    PathToSource: PCWSTR,
+    FileSought: PCWSTR,
+    TagFile: PCWSTR,
+    DiskPromptStyle: DWORD,
+    PathBuffer: PWSTR,
+    PathBufferSize: DWORD,
+    PathRequiredSize: PDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupPromptForDiskW".}
+
+  proc SetupCopyError*(
+    hwndParent: HWND,
+    DialogTitle: PCWSTR,
+    DiskName: PCWSTR,
+    PathToSource: PCWSTR,
+    SourceFile: PCWSTR,
+    TargetPathFile: PCWSTR,
+    Win32ErrorCode: UINT,
+    Style: DWORD,
+    PathBuffer: PWSTR,
+    PathBufferSize: DWORD,
+    PathRequiredSize: PDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupCopyErrorW".}
+
+  proc SetupRenameError*(
+    hwndParent: HWND,
+    DialogTitle: PCWSTR,
+    SourceFile: PCWSTR,
+    TargetFile: PCWSTR,
+    Win32ErrorCode: UINT,
+    Style: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupRenameErrorW".}
+
+  proc SetupDeleteError*(
+    hwndParent: HWND,
+    DialogTitle: PCWSTR,
+    File: PCWSTR,
+    Win32ErrorCode: UINT,
+    Style: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDeleteErrorW".}
+
+  proc SetupBackupError*(
+    hwndParent: HWND,
+    DialogTitle: PCWSTR,
+    SourceFile: PCWSTR,
+    TargetFile: PCWSTR,
+    Win32ErrorCode: UINT,
+    Style: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupBackupErrorW".}
+
+  proc SetupSetDirectoryId*(
+    InfHandle: HINF, Id: DWORD, Directory: PCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetDirectoryIdW".}
+
+  proc SetupSetDirectoryIdEx*(
+    InfHandle: HINF,
+    Id: DWORD,
+    Directory: PCWSTR,
+    Flags: DWORD,
+    Reserved1: DWORD,
+    Reserved2: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetDirectoryIdExW".}
+
+  proc SetupGetSourceInfo*(
+    InfHandle: HINF,
+    SourceId: UINT,
+    InfoDesired: UINT,
+    ReturnBuffer: PWSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetSourceInfoW".}
+
+  proc SetupInstallFile*(
+    InfHandle: HINF,
+    InfContext: PINFCONTEXT,
+    SourceFile: PCWSTR,
+    SourcePathRoot: PCWSTR,
+    DestinationName: PCWSTR,
+    CopyStyle: DWORD,
+    CopyMsgHandler: PSP_FILE_CALLBACK_W,
+    Context: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFileW".}
+
+  proc SetupInstallFileEx*(
+    InfHandle: HINF,
+    InfContext: PINFCONTEXT,
+    SourceFile: PCWSTR,
+    SourcePathRoot: PCWSTR,
+    DestinationName: PCWSTR,
+    CopyStyle: DWORD,
+    CopyMsgHandler: PSP_FILE_CALLBACK_W,
+    Context: PVOID,
+    FileWasInUse: PBOOL,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFileExW".}
+
+  proc SetupSetFileQueueAlternatePlatform*(
+    QueueHandle: HSPFILEQ,
+    AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+    AlternateDefaultCatalogFile: PCWSTR,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupSetFileQueueAlternatePlatformW"
+  .}
+
+  proc SetupQueueDeleteSection*(
+    QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueDeleteSectionW"
+  .}
+
+  proc SetupQueueRename*(
+    QueueHandle: HSPFILEQ,
+    SourcePath: PCWSTR,
+    SourceFilename: PCWSTR,
+    TargetPath: PCWSTR,
+    TargetFilename: PCWSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueRenameW".}
+
+  proc SetupQueueRenameSection*(
+    QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueRenameSectionW"
+  .}
+
+  proc SetupCommitFileQueue*(
+    Owner: HWND, QueueHandle: HSPFILEQ, MsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupCommitFileQueueW".}
+
+  proc SetupScanFileQueue*(
+    FileQueue: HSPFILEQ,
+    Flags: DWORD,
+    Window: HWND,
+    CallbackRoutine: PSP_FILE_CALLBACK_W,
+    CallbackContext: PVOID,
+    Result: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupScanFileQueueW".}
+
+  proc SetupSetPlatformPathOverride*(
+    Override: PCWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupSetPlatformPathOverrideW"
+  .}
+
+  proc SetupQueueCopy*(
+    QueueHandle: HSPFILEQ,
+    SourceRootPath: PCWSTR,
+    SourcePath: PCWSTR,
+    SourceFilename: PCWSTR,
+    SourceDescription: PCWSTR,
+    SourceTagfile: PCWSTR,
+    TargetDirectory: PCWSTR,
+    TargetFilename: PCWSTR,
+    CopyStyle: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueCopyW".}
+
+  proc SetupQueueCopyIndirect*(
+    CopyParams: PSP_FILE_COPY_PARAMS_W
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueCopyIndirectW".}
+
+  proc SetupQueueDefaultCopy*(
+    QueueHandle: HSPFILEQ,
+    InfHandle: HINF,
+    SourceRootPath: PCWSTR,
+    SourceFilename: PCWSTR,
+    TargetFilename: PCWSTR,
+    CopyStyle: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueDefaultCopyW".}
+
+  proc SetupQueueCopySection*(
+    QueueHandle: HSPFILEQ,
+    SourceRootPath: PCWSTR,
+    InfHandle: HINF,
+    ListInfHandle: HINF,
+    Section: PCWSTR,
+    CopyStyle: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueCopySectionW".}
+
+  proc SetupQueueDelete*(
+    QueueHandle: HSPFILEQ, PathPart1: PCWSTR, PathPart2: PCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueDeleteW".}
+
+  proc SetupCopyOEMInf*(
+    SourceInfFileName: PCWSTR,
+    OEMSourceMediaLocation: PCWSTR,
+    OEMSourceMediaType: DWORD,
+    CopyStyle: DWORD,
+    DestinationInfFileName: PWSTR,
+    DestinationInfFileNameSize: DWORD,
+    RequiredSize: PDWORD,
+    DestinationInfFileNameComponent: ptr PWSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupCopyOEMInfW".}
+
+  proc SetupUninstallOEMInf*(
+    InfFileName: PCWSTR, Flags: DWORD, Reserved: PVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupUninstallOEMInfW".}
+
+  proc SetupCreateDiskSpaceList*(
+    Reserved1: PVOID, Reserved2: DWORD, Flags: UINT
+  ): HDSKSPC {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupCreateDiskSpaceListW"
+  .}
+
+  proc SetupDuplicateDiskSpaceList*(
+    DiskSpace: HDSKSPC, Reserved1: PVOID, Reserved2: DWORD, Flags: UINT
+  ): HDSKSPC {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDuplicateDiskSpaceListW"
+  .}
+
+  proc SetupQueryDrivesInDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    ReturnBuffer: PWSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryDrivesInDiskSpaceListW"
+  .}
+
+  proc SetupQuerySpaceRequiredOnDrive*(
+    DiskSpace: HDSKSPC,
+    DriveSpec: PCWSTR,
+    SpaceRequired: ptr LONGLONG,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupQuerySpaceRequiredOnDriveW"
+  .}
+
+  proc SetupAdjustDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    DriveRoot: LPCWSTR,
+    Amount: LONGLONG,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupAdjustDiskSpaceListW"
+  .}
+
+  proc SetupAddToDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    TargetFilespec: PCWSTR,
+    FileSize: LONGLONG,
+    Operation: UINT,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupAddToDiskSpaceListW"
+  .}
+
+  proc SetupAddSectionToDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    InfHandle: HINF,
+    ListInfHandle: HINF,
+    SectionName: PCWSTR,
+    Operation: UINT,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupAddSectionToDiskSpaceListW"
+  .}
+
+  proc SetupAddInstallSectionToDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    InfHandle: HINF,
+    LayoutInfHandle: HINF,
+    SectionName: PCWSTR,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi,
+    stdcall,
+    dynlib: "setupapi",
+    importc: "SetupAddInstallSectionToDiskSpaceListW"
+  .}
+
+  proc SetupRemoveFromDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    TargetFilespec: PCWSTR,
+    Operation: UINT,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveFromDiskSpaceListW"
+  .}
+
+  proc SetupRemoveSectionFromDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    InfHandle: HINF,
+    ListInfHandle: HINF,
+    SectionName: PCWSTR,
+    Operation: UINT,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveSectionFromDiskSpaceListW"
+  .}
+
+  proc SetupRemoveInstallSectionFromDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    InfHandle: HINF,
+    LayoutInfHandle: HINF,
+    SectionName: PCWSTR,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi,
+    stdcall,
+    dynlib: "setupapi",
+    importc: "SetupRemoveInstallSectionFromDiskSpaceListW"
+  .}
+
+  proc SetupIterateCabinet*(
+    CabinetFile: PCWSTR,
+    Reserved: DWORD,
+    MsgHandler: PSP_FILE_CALLBACK_W,
+    Context: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupIterateCabinetW".}
+
+  proc SetupDefaultQueueCallback*(
+    Context: PVOID, Notification: UINT, Param1: UINT_PTR, Param2: UINT_PTR
+  ): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDefaultQueueCallbackW".}
+
+  proc SetupInstallFromInfSection*(
+    Owner: HWND,
+    InfHandle: HINF,
+    SectionName: PCWSTR,
+    Flags: UINT,
+    RelativeKeyRoot: HKEY,
+    SourceRootPath: PCWSTR,
+    CopyFlags: UINT,
+    MsgHandler: PSP_FILE_CALLBACK_W,
+    Context: PVOID,
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFromInfSectionW"
+  .}
+
+  proc SetupInstallFilesFromInfSection*(
+    InfHandle: HINF,
+    LayoutInfHandle: HINF,
+    FileQueue: HSPFILEQ,
+    SectionName: PCWSTR,
+    SourceRootPath: PCWSTR,
+    CopyFlags: UINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFilesFromInfSectionW"
+  .}
+
+  proc SetupInstallServicesFromInfSection*(
+    InfHandle: HINF, SectionName: PCWSTR, Flags: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallServicesFromInfSectionW"
+  .}
+
+  proc SetupInstallServicesFromInfSectionEx*(
+    InfHandle: HINF,
+    SectionName: PCWSTR,
+    Flags: DWORD,
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    Reserved1: PVOID,
+    Reserved2: PVOID,
+  ): WINBOOL {.
+    winapi,
+    stdcall,
+    dynlib: "setupapi",
+    importc: "SetupInstallServicesFromInfSectionExW"
+  .}
+
+  proc InstallHinfSection*(
+    Window: HWND, ModuleHandle: HINSTANCE, CommandLine: PCWSTR, ShowCommand: INT
+  ): VOID {.winapi, stdcall, dynlib: "setupapi", importc: "InstallHinfSectionW".}
+
+  proc SetupInitializeFileLog*(
+    LogFileName: PCWSTR, Flags: DWORD
+  ): HSPFILELOG {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupInitializeFileLogW"
+  .}
+
+  proc SetupLogFile*(
+    FileLogHandle: HSPFILELOG,
+    LogSectionName: PCWSTR,
+    SourceFilename: PCWSTR,
+    TargetFilename: PCWSTR,
+    Checksum: DWORD,
+    DiskTagfile: PCWSTR,
+    DiskDescription: PCWSTR,
+    OtherInfo: PCWSTR,
+    Flags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupLogFileW".}
+
+  proc SetupRemoveFileLogEntry*(
+    FileLogHandle: HSPFILELOG, LogSectionName: PCWSTR, TargetFilename: PCWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveFileLogEntryW"
+  .}
+
+  proc SetupQueryFileLog*(
+    FileLogHandle: HSPFILELOG,
+    LogSectionName: PCWSTR,
+    TargetFilename: PCWSTR,
+    DesiredInfo: SetupFileLogInfo,
+    DataOut: PWSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryFileLogW".}
+
+  proc SetupLogError*(
+    MessageString: LPCWSTR, Severity: LogSeverity
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupLogErrorW".}
+
+  proc SetupGetBackupInformation*(
+    QueueHandle: HSPFILEQ, BackupParams: PSP_BACKUP_QUEUE_PARAMS_W
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupGetBackupInformationW"
+  .}
+
+  proc SetupPrepareQueueForRestore*(
+    QueueHandle: HSPFILEQ, BackupPath: PCWSTR, RestoreFlags: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupPrepareQueueForRestoreW"
+  .}
+
+  proc SetupDiCreateDeviceInfoListEx*(
+    ClassGuid: ptr GUID, hwndParent: HWND, MachineName: PCWSTR, Reserved: PVOID
+  ): HDEVINFO {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInfoListExW"
+  .}
+
+  proc SetupDiGetDeviceInfoListDetail*(
+    DeviceInfoSet: HDEVINFO, DeviceInfoSetDetailData: PSP_DEVINFO_LIST_DETAIL_DATA_W
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInfoListDetailW"
+  .}
+
+  proc SetupDiCreateDeviceInfo*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceName: PCWSTR,
+    ClassGuid: ptr GUID,
+    DeviceDescription: PCWSTR,
+    hwndParent: HWND,
+    CreationFlags: DWORD,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInfoW"
+  .}
+
+  proc SetupDiOpenDeviceInfo*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInstanceId: PCWSTR,
+    hwndParent: HWND,
+    OpenFlags: DWORD,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInfoW".}
+
+  proc SetupDiGetDeviceInstanceId*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DeviceInstanceId: PWSTR,
+    DeviceInstanceIdSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInstanceIdW"
+  .}
+
+  proc SetupDiCreateDeviceInterface*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    InterfaceClassGuid: ptr GUID,
+    ReferenceString: PCWSTR,
+    CreationFlags: DWORD,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceW"
+  .}
+
+  proc SetupDiCreateInterfaceDevice*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    InterfaceClassGuid: ptr GUID,
+    ReferenceString: PCWSTR,
+    CreationFlags: DWORD,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceW"
+  .}
+
+  proc SetupDiOpenDeviceInterface*(
+    DeviceInfoSet: HDEVINFO,
+    DevicePath: PCWSTR,
+    OpenFlags: DWORD,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInterfaceW"
+  .}
+
+  proc SetupDiOpenInterfaceDevice*(
+    DeviceInfoSet: HDEVINFO,
+    DevicePath: PCWSTR,
+    OpenFlags: DWORD,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInterfaceW"
+  .}
+
+  proc SetupDiGetDeviceInterfaceDetail*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+    DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_W,
+    DeviceInterfaceDetailDataSize: DWORD,
+    RequiredSize: PDWORD,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInterfaceDetailW"
+  .}
+
+  proc SetupDiGetInterfaceDeviceDetail*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+    DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_W,
+    DeviceInterfaceDetailDataSize: DWORD,
+    RequiredSize: PDWORD,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInterfaceDetailW"
+  .}
+
+  proc SetupDiEnumDriverInfo*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DriverType: DWORD,
+    MemberIndex: DWORD,
+    DriverInfoData: PSP_DRVINFO_DATA_W,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiEnumDriverInfoW".}
+
+  proc SetupDiGetSelectedDriver*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DriverInfoData: PSP_DRVINFO_DATA_W,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetSelectedDriverW"
+  .}
+
+  proc SetupDiSetSelectedDriver*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DriverInfoData: PSP_DRVINFO_DATA_W,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetSelectedDriverW"
+  .}
+
+  proc SetupDiGetDriverInfoDetail*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DriverInfoData: PSP_DRVINFO_DATA_W,
+    DriverInfoDetailData: PSP_DRVINFO_DETAIL_DATA_W,
+    DriverInfoDetailDataSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDriverInfoDetailW"
+  .}
+
+  proc SetupDiGetClassDevs*(
+    ClassGuid: ptr GUID, Enumerator: PCWSTR, hwndParent: HWND, Flags: DWORD
+  ): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDevsW".}
+
+  proc SetupDiGetClassDevsEx*(
+    ClassGuid: ptr GUID,
+    Enumerator: PCWSTR,
+    hwndParent: HWND,
+    Flags: DWORD,
+    DeviceInfoSet: HDEVINFO,
+    MachineName: PCWSTR,
+    Reserved: PVOID,
+  ): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDevsExW".}
+
+  proc SetupDiGetINFClass*(
+    InfName: PCWSTR,
+    ClassGuid: LPGUID,
+    ClassName: PWSTR,
+    ClassNameSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetINFClassW".}
+
+  proc SetupDiBuildClassInfoListEx*(
+    Flags: DWORD,
+    ClassGuidList: LPGUID,
+    ClassGuidListSize: DWORD,
+    RequiredSize: PDWORD,
+    MachineName: PCWSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiBuildClassInfoListExW"
+  .}
+
+  proc SetupDiGetClassDescription*(
+    ClassGuid: ptr GUID,
+    ClassDescription: PWSTR,
+    ClassDescriptionSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDescriptionW"
+  .}
+
+  proc SetupDiGetClassDescriptionEx*(
+    ClassGuid: ptr GUID,
+    ClassDescription: PWSTR,
+    ClassDescriptionSize: DWORD,
+    RequiredSize: PDWORD,
+    MachineName: PCWSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDescriptionExW"
+  .}
+
+  proc SetupDiInstallClass*(
+    hwndParent: HWND, InfFileName: PCWSTR, Flags: DWORD, FileQueue: HSPFILEQ
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiInstallClassW".}
+
+  proc SetupDiInstallClassEx*(
+    hwndParent: HWND,
+    InfFileName: PCWSTR,
+    Flags: DWORD,
+    FileQueue: HSPFILEQ,
+    InterfaceClassGuid: ptr GUID,
+    Reserved1: PVOID,
+    Reserved2: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiInstallClassExW".}
+
+  proc SetupDiOpenClassRegKeyEx*(
+    ClassGuid: ptr GUID,
+    samDesired: REGSAM,
+    Flags: DWORD,
+    MachineName: PCWSTR,
+    Reserved: PVOID,
+  ): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenClassRegKeyExW".}
+
+  proc SetupDiCreateDeviceInterfaceRegKey*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+    Reserved: DWORD,
+    samDesired: REGSAM,
+    InfHandle: HINF,
+    InfSectionName: PCWSTR,
+  ): HKEY {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceRegKeyW"
+  .}
+
+  proc SetupDiCreateInterfaceDeviceRegKey*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+    Reserved: DWORD,
+    samDesired: REGSAM,
+    InfHandle: HINF,
+    InfSectionName: PCWSTR,
+  ): HKEY {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceRegKeyW"
+  .}
+
+  proc SetupDiCreateDevRegKey*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    Scope: DWORD,
+    HwProfile: DWORD,
+    KeyType: DWORD,
+    InfHandle: HINF,
+    InfSectionName: PCWSTR,
+  ): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDevRegKeyW".}
+
+  proc SetupDiGetHwProfileListEx*(
+    HwProfileList: PDWORD,
+    HwProfileListSize: DWORD,
+    RequiredSize: PDWORD,
+    CurrentlyActiveIndex: PDWORD,
+    MachineName: PCWSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetHwProfileListExW"
+  .}
+
+  proc SetupDiGetDeviceRegistryProperty*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    Property: DWORD,
+    PropertyRegDataType: PDWORD,
+    PropertyBuffer: PBYTE,
+    PropertyBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceRegistryPropertyW"
+  .}
+
+  proc SetupDiGetClassRegistryProperty*(
+    ClassGuid: ptr GUID,
+    Property: DWORD,
+    PropertyRegDataType: PDWORD,
+    PropertyBuffer: PBYTE,
+    PropertyBufferSize: DWORD,
+    RequiredSize: PDWORD,
+    MachineName: PCWSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassRegistryPropertyW"
+  .}
+
+  proc SetupDiSetDeviceRegistryProperty*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    Property: DWORD,
+    PropertyBuffer: ptr BYTE,
+    PropertyBufferSize: DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetDeviceRegistryPropertyW"
+  .}
+
+  proc SetupDiSetClassRegistryProperty*(
+    ClassGuid: ptr GUID,
+    Property: DWORD,
+    PropertyBuffer: ptr BYTE,
+    PropertyBufferSize: DWORD,
+    MachineName: PCWSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetClassRegistryPropertyW"
+  .}
+
+  proc SetupDiGetDeviceInstallParams*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DeviceInstallParams: PSP_DEVINSTALL_PARAMS_W,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInstallParamsW"
+  .}
+
+  proc SetupDiGetClassInstallParams*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    ClassInstallParams: PSP_CLASSINSTALL_HEADER,
+    ClassInstallParamsSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassInstallParamsW"
+  .}
+
+  proc SetupDiSetDeviceInstallParams*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DeviceInstallParams: PSP_DEVINSTALL_PARAMS_W,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetDeviceInstallParamsW"
+  .}
+
+  proc SetupDiSetClassInstallParams*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    ClassInstallParams: PSP_CLASSINSTALL_HEADER,
+    ClassInstallParamsSize: DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetClassInstallParamsW"
+  .}
+
+  proc SetupDiGetDriverInstallParams*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DriverInfoData: PSP_DRVINFO_DATA_W,
+    DriverInstallParams: PSP_DRVINSTALL_PARAMS,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDriverInstallParamsW"
+  .}
+
+  proc SetupDiSetDriverInstallParams*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DriverInfoData: PSP_DRVINFO_DATA_W,
+    DriverInstallParams: PSP_DRVINSTALL_PARAMS,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetDriverInstallParamsW"
+  .}
+
+  proc SetupDiGetClassImageListEx*(
+    ClassImageListData: PSP_CLASSIMAGELIST_DATA, MachineName: PCWSTR, Reserved: PVOID
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassImageListExW"
+  .}
+
+  proc SetupDiGetClassDevPropertySheets*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    PropertySheetHeader: LPPROPSHEETHEADERW,
+    PropertySheetHeaderPageListSize: DWORD,
+    RequiredSize: PDWORD,
+    PropertySheetType: DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDevPropertySheetsW"
+  .}
+
+  proc SetupDiClassNameFromGuid*(
+    ClassGuid: ptr GUID, ClassName: PWSTR, ClassNameSize: DWORD, RequiredSize: PDWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassNameFromGuidW"
+  .}
+
+  proc SetupDiClassNameFromGuidEx*(
+    ClassGuid: ptr GUID,
+    ClassName: PWSTR,
+    ClassNameSize: DWORD,
+    RequiredSize: PDWORD,
+    MachineName: PCWSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassNameFromGuidExW"
+  .}
+
+  proc SetupDiClassGuidsFromName*(
+    ClassName: PCWSTR,
+    ClassGuidList: LPGUID,
+    ClassGuidListSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassGuidsFromNameW"
+  .}
+
+  proc SetupDiClassGuidsFromNameEx*(
+    ClassName: PCWSTR,
+    ClassGuidList: LPGUID,
+    ClassGuidListSize: DWORD,
+    RequiredSize: PDWORD,
+    MachineName: PCWSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassGuidsFromNameExW"
+  .}
+
+  proc SetupDiGetHwProfileFriendlyName*(
+    HwProfile: DWORD, FriendlyName: PWSTR, FriendlyNameSize: DWORD, RequiredSize: PDWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetHwProfileFriendlyNameW"
+  .}
+
+  proc SetupDiGetHwProfileFriendlyNameEx*(
+    HwProfile: DWORD,
+    FriendlyName: PWSTR,
+    FriendlyNameSize: DWORD,
+    RequiredSize: PDWORD,
+    MachineName: PCWSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetHwProfileFriendlyNameExW"
+  .}
+
+  proc SetupDiGetActualModelsSection*(
+    Context: PINFCONTEXT,
+    AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+    InfSectionWithExt: PWSTR,
+    InfSectionWithExtSize: DWORD,
+    RequiredSize: PDWORD,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetActualModelsSectionW"
+  .}
+
+  proc SetupDiGetActualSectionToInstall*(
+    InfHandle: HINF,
+    InfSectionName: PCWSTR,
+    InfSectionWithExt: PWSTR,
+    InfSectionWithExtSize: DWORD,
+    RequiredSize: PDWORD,
+    Extension: ptr PWSTR,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetActualSectionToInstallW"
+  .}
+
+  proc SetupDiGetActualSectionToInstallEx*(
+    InfHandle: HINF,
+    InfSectionName: PCWSTR,
+    AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+    InfSectionWithExt: PWSTR,
+    InfSectionWithExtSize: DWORD,
+    RequiredSize: PDWORD,
+    Extension: ptr PWSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetActualSectionToInstallExW"
+  .}
+
+  proc SetupEnumInfSections*(
+    InfHandle: HINF, Index: UINT, Buffer: PWSTR, Size: UINT, SizeNeeded: ptr UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupEnumInfSectionsW".}
+
+  proc SetupVerifyInfFile*(
+    InfName: PCWSTR,
+    AltPlatformInfo: PSP_ALTPLATFORM_INFO,
+    InfSignerInfo: PSP_INF_SIGNER_INFO_W,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupVerifyInfFileW".}
+
+  proc SetupDiGetCustomDeviceProperty*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    CustomPropertyName: PCWSTR,
+    Flags: DWORD,
+    PropertyRegDataType: PDWORD,
+    PropertyBuffer: PBYTE,
+    PropertyBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetCustomDevicePropertyW"
+  .}
+
+  proc SetupConfigureWmiFromInfSection*(
+    InfHandle: HINF, SectionName: PCWSTR, Flags: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupConfigureWmiFromInfSectionW"
+  .}
+
 when winimAnsi:
   type
     SP_ORIGINAL_FILE_INFO* = SP_ORIGINAL_FILE_INFO_A
@@ -1785,130 +4748,1095 @@
     PSP_BACKUP_QUEUE_PARAMS_V1* = PSP_BACKUP_QUEUE_PARAMS_V1_A
     SP_INF_SIGNER_INFO* = SP_INF_SIGNER_INFO_A
     PSP_INF_SIGNER_INFO* = PSP_INF_SIGNER_INFO_A
-  proc SetupGetInfInformation*(InfSpec: LPCVOID, SearchControl: DWORD, ReturnBuffer: PSP_INF_INFORMATION, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetInfInformationA".}
-  proc SetupQueryInfFileInformation*(InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryInfFileInformationA".}
-  proc SetupQueryInfOriginalFileInformation*(InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, OriginalFileInfo: PSP_ORIGINAL_FILE_INFO_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryInfOriginalFileInformationA".}
-  proc SetupQueryInfVersionInformation*(InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, Key: PCSTR, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryInfVersionInformationA".}
-  proc SetupGetInfFileList*(DirectoryPath: PCSTR, InfStyle: DWORD, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetInfFileListA".}
-  proc SetupOpenInfFile*(FileName: PCSTR, InfClass: PCSTR, InfStyle: DWORD, ErrorLine: PUINT): HINF {.winapi, stdcall, dynlib: "setupapi", importc: "SetupOpenInfFileA".}
-  proc SetupOpenAppendInfFile*(FileName: PCSTR, InfHandle: HINF, ErrorLine: PUINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupOpenAppendInfFileA".}
-  proc SetupFindFirstLine*(InfHandle: HINF, Section: PCSTR, Key: PCSTR, Context: PINFCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupFindFirstLineA".}
-  proc SetupFindNextMatchLine*(ContextIn: PINFCONTEXT, Key: PCSTR, ContextOut: PINFCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupFindNextMatchLineA".}
-  proc SetupGetLineByIndex*(InfHandle: HINF, Section: PCSTR, Index: DWORD, Context: PINFCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetLineByIndexA".}
-  proc SetupGetLineCount*(InfHandle: HINF, Section: PCSTR): LONG {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetLineCountA".}
-  proc SetupGetLineText*(Context: PINFCONTEXT, InfHandle: HINF, Section: PCSTR, Key: PCSTR, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetLineTextA".}
-  proc SetupGetStringField*(Context: PINFCONTEXT, FieldIndex: DWORD, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetStringFieldA".}
-  proc SetupGetMultiSzField*(Context: PINFCONTEXT, FieldIndex: DWORD, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetMultiSzFieldA".}
-  proc SetupGetFileCompressionInfo*(SourceFileName: PCSTR, ActualSourceFileName: ptr PSTR, SourceFileSize: PDWORD, TargetFileSize: PDWORD, CompressionType: PUINT): DWORD {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetFileCompressionInfoA".}
-  proc SetupGetFileCompressionInfoEx*(SourceFileName: PCSTR, ActualSourceFileNameBuffer: PSTR, ActualSourceFileNameBufferLen: DWORD, RequiredBufferLen: PDWORD, SourceFileSize: PDWORD, TargetFileSize: PDWORD, CompressionType: PUINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetFileCompressionInfoExA".}
-  proc SetupDecompressOrCopyFile*(SourceFileName: PCSTR, TargetFileName: PCSTR, CompressionType: PUINT): DWORD {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDecompressOrCopyFileA".}
-  proc SetupGetSourceFileLocation*(InfHandle: HINF, InfContext: PINFCONTEXT, FileName: PCSTR, SourceId: PUINT, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetSourceFileLocationA".}
-  proc SetupGetSourceFileSize*(InfHandle: HINF, InfContext: PINFCONTEXT, FileName: PCSTR, Section: PCSTR, FileSize: PDWORD, RoundingFactor: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetSourceFileSizeA".}
-  proc SetupGetTargetPath*(InfHandle: HINF, InfContext: PINFCONTEXT, Section: PCSTR, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetTargetPathA".}
-  proc SetupSetSourceList*(Flags: DWORD, SourceList: ptr PCSTR, SourceCount: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetSourceListA".}
-  proc SetupAddToSourceList*(Flags: DWORD, Source: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupAddToSourceListA".}
-  proc SetupRemoveFromSourceList*(Flags: DWORD, Source: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveFromSourceListA".}
-  proc SetupQuerySourceList*(Flags: DWORD, List: ptr ptr PCSTR, Count: PUINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQuerySourceListA".}
-  proc SetupFreeSourceList*(List: ptr ptr PCSTR, Count: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupFreeSourceListA".}
-  proc SetupPromptForDisk*(hwndParent: HWND, DialogTitle: PCSTR, DiskName: PCSTR, PathToSource: PCSTR, FileSought: PCSTR, TagFile: PCSTR, DiskPromptStyle: DWORD, PathBuffer: PSTR, PathBufferSize: DWORD, PathRequiredSize: PDWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupPromptForDiskA".}
-  proc SetupCopyError*(hwndParent: HWND, DialogTitle: PCSTR, DiskName: PCSTR, PathToSource: PCSTR, SourceFile: PCSTR, TargetPathFile: PCSTR, Win32ErrorCode: UINT, Style: DWORD, PathBuffer: PSTR, PathBufferSize: DWORD, PathRequiredSize: PDWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupCopyErrorA".}
-  proc SetupRenameError*(hwndParent: HWND, DialogTitle: PCSTR, SourceFile: PCSTR, TargetFile: PCSTR, Win32ErrorCode: UINT, Style: DWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupRenameErrorA".}
-  proc SetupDeleteError*(hwndParent: HWND, DialogTitle: PCSTR, File: PCSTR, Win32ErrorCode: UINT, Style: DWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDeleteErrorA".}
-  proc SetupBackupError*(hwndParent: HWND, DialogTitle: PCSTR, SourceFile: PCSTR, TargetFile: PCSTR, Win32ErrorCode: UINT, Style: DWORD): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupBackupErrorA".}
-  proc SetupSetDirectoryId*(InfHandle: HINF, Id: DWORD, Directory: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetDirectoryIdA".}
-  proc SetupSetDirectoryIdEx*(InfHandle: HINF, Id: DWORD, Directory: PCSTR, Flags: DWORD, Reserved1: DWORD, Reserved2: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetDirectoryIdExA".}
-  proc SetupGetSourceInfo*(InfHandle: HINF, SourceId: UINT, InfoDesired: UINT, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetSourceInfoA".}
-  proc SetupInstallFile*(InfHandle: HINF, InfContext: PINFCONTEXT, SourceFile: PCSTR, SourcePathRoot: PCSTR, DestinationName: PCSTR, CopyStyle: DWORD, CopyMsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFileA".}
-  proc SetupInstallFileEx*(InfHandle: HINF, InfContext: PINFCONTEXT, SourceFile: PCSTR, SourcePathRoot: PCSTR, DestinationName: PCSTR, CopyStyle: DWORD, CopyMsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID, FileWasInUse: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFileExA".}
-  proc SetupSetFileQueueAlternatePlatform*(QueueHandle: HSPFILEQ, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, AlternateDefaultCatalogFile: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetFileQueueAlternatePlatformA".}
-  proc SetupQueueDeleteSection*(QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueDeleteSectionA".}
-  proc SetupQueueRename*(QueueHandle: HSPFILEQ, SourcePath: PCSTR, SourceFilename: PCSTR, TargetPath: PCSTR, TargetFilename: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueRenameA".}
-  proc SetupQueueRenameSection*(QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueRenameSectionA".}
-  proc SetupCommitFileQueue*(Owner: HWND, QueueHandle: HSPFILEQ, MsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupCommitFileQueueA".}
-  proc SetupScanFileQueue*(FileQueue: HSPFILEQ, Flags: DWORD, Window: HWND, CallbackRoutine: PSP_FILE_CALLBACK_A, CallbackContext: PVOID, Result: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupScanFileQueueA".}
-  proc SetupSetPlatformPathOverride*(Override: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetPlatformPathOverrideA".}
-  proc SetupQueueCopy*(QueueHandle: HSPFILEQ, SourceRootPath: PCSTR, SourcePath: PCSTR, SourceFilename: PCSTR, SourceDescription: PCSTR, SourceTagfile: PCSTR, TargetDirectory: PCSTR, TargetFilename: PCSTR, CopyStyle: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueCopyA".}
-  proc SetupQueueCopyIndirect*(CopyParams: PSP_FILE_COPY_PARAMS_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueCopyIndirectA".}
-  proc SetupQueueDefaultCopy*(QueueHandle: HSPFILEQ, InfHandle: HINF, SourceRootPath: PCSTR, SourceFilename: PCSTR, TargetFilename: PCSTR, CopyStyle: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueDefaultCopyA".}
-  proc SetupQueueCopySection*(QueueHandle: HSPFILEQ, SourceRootPath: PCSTR, InfHandle: HINF, ListInfHandle: HINF, Section: PCSTR, CopyStyle: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueCopySectionA".}
-  proc SetupQueueDelete*(QueueHandle: HSPFILEQ, PathPart1: PCSTR, PathPart2: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueDeleteA".}
-  proc SetupCopyOEMInf*(SourceInfFileName: PCSTR, OEMSourceMediaLocation: PCSTR, OEMSourceMediaType: DWORD, CopyStyle: DWORD, DestinationInfFileName: PSTR, DestinationInfFileNameSize: DWORD, RequiredSize: PDWORD, DestinationInfFileNameComponent: ptr PSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupCopyOEMInfA".}
-  proc SetupUninstallOEMInf*(InfFileName: PCSTR, Flags: DWORD, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupUninstallOEMInfA".}
-  proc SetupCreateDiskSpaceList*(Reserved1: PVOID, Reserved2: DWORD, Flags: UINT): HDSKSPC {.winapi, stdcall, dynlib: "setupapi", importc: "SetupCreateDiskSpaceListA".}
-  proc SetupDuplicateDiskSpaceList*(DiskSpace: HDSKSPC, Reserved1: PVOID, Reserved2: DWORD, Flags: UINT): HDSKSPC {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDuplicateDiskSpaceListA".}
-  proc SetupQueryDrivesInDiskSpaceList*(DiskSpace: HDSKSPC, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryDrivesInDiskSpaceListA".}
-  proc SetupQuerySpaceRequiredOnDrive*(DiskSpace: HDSKSPC, DriveSpec: PCSTR, SpaceRequired: ptr LONGLONG, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQuerySpaceRequiredOnDriveA".}
-  proc SetupAdjustDiskSpaceList*(DiskSpace: HDSKSPC, DriveRoot: LPCSTR, Amount: LONGLONG, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupAdjustDiskSpaceListA".}
-  proc SetupAddToDiskSpaceList*(DiskSpace: HDSKSPC, TargetFilespec: PCSTR, FileSize: LONGLONG, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupAddToDiskSpaceListA".}
-  proc SetupAddSectionToDiskSpaceList*(DiskSpace: HDSKSPC, InfHandle: HINF, ListInfHandle: HINF, SectionName: PCSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupAddSectionToDiskSpaceListA".}
-  proc SetupAddInstallSectionToDiskSpaceList*(DiskSpace: HDSKSPC, InfHandle: HINF, LayoutInfHandle: HINF, SectionName: PCSTR, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupAddInstallSectionToDiskSpaceListA".}
-  proc SetupRemoveFromDiskSpaceList*(DiskSpace: HDSKSPC, TargetFilespec: PCSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveFromDiskSpaceListA".}
-  proc SetupRemoveSectionFromDiskSpaceList*(DiskSpace: HDSKSPC, InfHandle: HINF, ListInfHandle: HINF, SectionName: PCSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveSectionFromDiskSpaceListA".}
-  proc SetupRemoveInstallSectionFromDiskSpaceList*(DiskSpace: HDSKSPC, InfHandle: HINF, LayoutInfHandle: HINF, SectionName: PCSTR, Reserved1: PVOID, Reserved2: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveInstallSectionFromDiskSpaceListA".}
-  proc SetupIterateCabinet*(CabinetFile: PCSTR, Reserved: DWORD, MsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupIterateCabinetA".}
-  proc SetupDefaultQueueCallback*(Context: PVOID, Notification: UINT, Param1: UINT_PTR, Param2: UINT_PTR): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDefaultQueueCallbackA".}
-  proc SetupInstallFromInfSection*(Owner: HWND, InfHandle: HINF, SectionName: PCSTR, Flags: UINT, RelativeKeyRoot: HKEY, SourceRootPath: PCSTR, CopyFlags: UINT, MsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID, DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFromInfSectionA".}
-  proc SetupInstallFilesFromInfSection*(InfHandle: HINF, LayoutInfHandle: HINF, FileQueue: HSPFILEQ, SectionName: PCSTR, SourceRootPath: PCSTR, CopyFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFilesFromInfSectionA".}
-  proc SetupInstallServicesFromInfSection*(InfHandle: HINF, SectionName: PCSTR, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallServicesFromInfSectionA".}
-  proc SetupInstallServicesFromInfSectionEx*(InfHandle: HINF, SectionName: PCSTR, Flags: DWORD, DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Reserved1: PVOID, Reserved2: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallServicesFromInfSectionExA".}
-  proc InstallHinfSection*(Window: HWND, ModuleHandle: HINSTANCE, CommandLine: PCSTR, ShowCommand: INT): VOID {.winapi, stdcall, dynlib: "setupapi", importc: "InstallHinfSectionA".}
-  proc SetupInitializeFileLog*(LogFileName: PCSTR, Flags: DWORD): HSPFILELOG {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInitializeFileLogA".}
-  proc SetupLogFile*(FileLogHandle: HSPFILELOG, LogSectionName: PCSTR, SourceFilename: PCSTR, TargetFilename: PCSTR, Checksum: DWORD, DiskTagfile: PCSTR, DiskDescription: PCSTR, OtherInfo: PCSTR, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupLogFileA".}
-  proc SetupRemoveFileLogEntry*(FileLogHandle: HSPFILELOG, LogSectionName: PCSTR, TargetFilename: PCSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveFileLogEntryA".}
-  proc SetupQueryFileLog*(FileLogHandle: HSPFILELOG, LogSectionName: PCSTR, TargetFilename: PCSTR, DesiredInfo: SetupFileLogInfo, DataOut: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryFileLogA".}
-  proc SetupLogError*(MessageString: LPCSTR, Severity: LogSeverity): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupLogErrorA".}
-  proc SetupGetBackupInformation*(QueueHandle: HSPFILEQ, BackupParams: PSP_BACKUP_QUEUE_PARAMS_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetBackupInformationA".}
-  proc SetupPrepareQueueForRestore*(QueueHandle: HSPFILEQ, BackupPath: PCSTR, RestoreFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupPrepareQueueForRestoreA".}
-  proc SetupDiCreateDeviceInfoListEx*(ClassGuid: ptr GUID, hwndParent: HWND, MachineName: PCSTR, Reserved: PVOID): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInfoListExA".}
-  proc SetupDiGetDeviceInfoListDetail*(DeviceInfoSet: HDEVINFO, DeviceInfoSetDetailData: PSP_DEVINFO_LIST_DETAIL_DATA_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInfoListDetailA".}
-  proc SetupDiCreateDeviceInfo*(DeviceInfoSet: HDEVINFO, DeviceName: PCSTR, ClassGuid: ptr GUID, DeviceDescription: PCSTR, hwndParent: HWND, CreationFlags: DWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInfoA".}
-  proc SetupDiOpenDeviceInfo*(DeviceInfoSet: HDEVINFO, DeviceInstanceId: PCSTR, hwndParent: HWND, OpenFlags: DWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInfoA".}
-  proc SetupDiGetDeviceInstanceId*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstanceId: PSTR, DeviceInstanceIdSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInstanceIdA".}
-  proc SetupDiCreateDeviceInterface*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, InterfaceClassGuid: ptr GUID, ReferenceString: PCSTR, CreationFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceA".}
-  proc SetupDiCreateInterfaceDevice*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, InterfaceClassGuid: ptr GUID, ReferenceString: PCSTR, CreationFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceA".}
-  proc SetupDiOpenDeviceInterface*(DeviceInfoSet: HDEVINFO, DevicePath: PCSTR, OpenFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInterfaceA".}
-  proc SetupDiOpenInterfaceDevice*(DeviceInfoSet: HDEVINFO, DevicePath: PCSTR, OpenFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInterfaceA".}
-  proc SetupDiGetDeviceInterfaceDetail*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_A, DeviceInterfaceDetailDataSize: DWORD, RequiredSize: PDWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInterfaceDetailA".}
-  proc SetupDiGetInterfaceDeviceDetail*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_A, DeviceInterfaceDetailDataSize: DWORD, RequiredSize: PDWORD, DeviceInfoData: PSP_DEVINFO_DATA): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInterfaceDetailA".}
-  proc SetupDiEnumDriverInfo*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverType: DWORD, MemberIndex: DWORD, DriverInfoData: PSP_DRVINFO_DATA_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiEnumDriverInfoA".}
-  proc SetupDiGetSelectedDriver*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetSelectedDriverA".}
-  proc SetupDiSetSelectedDriver*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetSelectedDriverA".}
-  proc SetupDiGetDriverInfoDetail*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_A, DriverInfoDetailData: PSP_DRVINFO_DETAIL_DATA_A, DriverInfoDetailDataSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDriverInfoDetailA".}
-  proc SetupDiGetClassDevs*(ClassGuid: ptr GUID, Enumerator: PCSTR, hwndParent: HWND, Flags: DWORD): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDevsA".}
-  proc SetupDiGetClassDevsEx*(ClassGuid: ptr GUID, Enumerator: PCSTR, hwndParent: HWND, Flags: DWORD, DeviceInfoSet: HDEVINFO, MachineName: PCSTR, Reserved: PVOID): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDevsExA".}
-  proc SetupDiGetINFClass*(InfName: PCSTR, ClassGuid: LPGUID, ClassName: PSTR, ClassNameSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetINFClassA".}
-  proc SetupDiBuildClassInfoListEx*(Flags: DWORD, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiBuildClassInfoListExA".}
-  proc SetupDiGetClassDescription*(ClassGuid: ptr GUID, ClassDescription: PSTR, ClassDescriptionSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDescriptionA".}
-  proc SetupDiGetClassDescriptionEx*(ClassGuid: ptr GUID, ClassDescription: PSTR, ClassDescriptionSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDescriptionExA".}
-  proc SetupDiInstallClass*(hwndParent: HWND, InfFileName: PCSTR, Flags: DWORD, FileQueue: HSPFILEQ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiInstallClassA".}
-  proc SetupDiInstallClassEx*(hwndParent: HWND, InfFileName: PCSTR, Flags: DWORD, FileQueue: HSPFILEQ, InterfaceClassGuid: ptr GUID, Reserved1: PVOID, Reserved2: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiInstallClassExA".}
-  proc SetupDiOpenClassRegKeyEx*(ClassGuid: ptr GUID, samDesired: REGSAM, Flags: DWORD, MachineName: PCSTR, Reserved: PVOID): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenClassRegKeyExA".}
-  proc SetupDiCreateDeviceInterfaceRegKey*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD, samDesired: REGSAM, InfHandle: HINF, InfSectionName: PCSTR): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceRegKeyA".}
-  proc SetupDiCreateInterfaceDeviceRegKey*(DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD, samDesired: REGSAM, InfHandle: HINF, InfSectionName: PCSTR): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceRegKeyA".}
-  proc SetupDiCreateDevRegKey*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Scope: DWORD, HwProfile: DWORD, KeyType: DWORD, InfHandle: HINF, InfSectionName: PCSTR): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDevRegKeyA".}
-  proc SetupDiGetHwProfileListEx*(HwProfileList: PDWORD, HwProfileListSize: DWORD, RequiredSize: PDWORD, CurrentlyActiveIndex: PDWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetHwProfileListExA".}
-  proc SetupDiGetDeviceRegistryProperty*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Property: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceRegistryPropertyA".}
-  proc SetupDiGetClassRegistryProperty*(ClassGuid: ptr GUID, Property: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassRegistryPropertyA".}
-  proc SetupDiSetDeviceRegistryProperty*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Property: DWORD, PropertyBuffer: ptr BYTE, PropertyBufferSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetDeviceRegistryPropertyA".}
-  proc SetupDiSetClassRegistryProperty*(ClassGuid: ptr GUID, Property: DWORD, PropertyBuffer: ptr BYTE, PropertyBufferSize: DWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetClassRegistryPropertyA".}
-  proc SetupDiGetDeviceInstallParams*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstallParams: PSP_DEVINSTALL_PARAMS_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInstallParamsA".}
-  proc SetupDiGetClassInstallParams*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ClassInstallParams: PSP_CLASSINSTALL_HEADER, ClassInstallParamsSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassInstallParamsA".}
-  proc SetupDiSetDeviceInstallParams*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstallParams: PSP_DEVINSTALL_PARAMS_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetDeviceInstallParamsA".}
-  proc SetupDiSetClassInstallParams*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ClassInstallParams: PSP_CLASSINSTALL_HEADER, ClassInstallParamsSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetClassInstallParamsA".}
-  proc SetupDiGetDriverInstallParams*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_A, DriverInstallParams: PSP_DRVINSTALL_PARAMS): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDriverInstallParamsA".}
-  proc SetupDiSetDriverInstallParams*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_A, DriverInstallParams: PSP_DRVINSTALL_PARAMS): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetDriverInstallParamsA".}
-  proc SetupDiGetClassImageListEx*(ClassImageListData: PSP_CLASSIMAGELIST_DATA, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassImageListExA".}
-  proc SetupDiGetClassDevPropertySheets*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, PropertySheetHeader: LPPROPSHEETHEADERA, PropertySheetHeaderPageListSize: DWORD, RequiredSize: PDWORD, PropertySheetType: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDevPropertySheetsA".}
-  proc SetupDiClassNameFromGuid*(ClassGuid: ptr GUID, ClassName: PSTR, ClassNameSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassNameFromGuidA".}
-  proc SetupDiClassNameFromGuidEx*(ClassGuid: ptr GUID, ClassName: PSTR, ClassNameSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassNameFromGuidExA".}
-  proc SetupDiClassGuidsFromName*(ClassName: PCSTR, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassGuidsFromNameA".}
-  proc SetupDiClassGuidsFromNameEx*(ClassName: PCSTR, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassGuidsFromNameExA".}
-  proc SetupDiGetHwProfileFriendlyName*(HwProfile: DWORD, FriendlyName: PSTR, FriendlyNameSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetHwProfileFriendlyNameA".}
-  proc SetupDiGetHwProfileFriendlyNameEx*(HwProfile: DWORD, FriendlyName: PSTR, FriendlyNameSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetHwProfileFriendlyNameExA".}
-  proc SetupDiGetActualModelsSection*(Context: PINFCONTEXT, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, InfSectionWithExt: PSTR, InfSectionWithExtSize: DWORD, RequiredSize: PDWORD, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetActualModelsSectionA".}
-  proc SetupDiGetActualSectionToInstall*(InfHandle: HINF, InfSectionName: PCSTR, InfSectionWithExt: PSTR, InfSectionWithExtSize: DWORD, RequiredSize: PDWORD, Extension: ptr PSTR): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetActualSectionToInstallA".}
-  proc SetupDiGetActualSectionToInstallEx*(InfHandle: HINF, InfSectionName: PCSTR, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, InfSectionWithExt: PSTR, InfSectionWithExtSize: DWORD, RequiredSize: PDWORD, Extension: ptr PSTR, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetActualSectionToInstallExA".}
-  proc SetupEnumInfSections*(InfHandle: HINF, Index: UINT, Buffer: PSTR, Size: UINT, SizeNeeded: ptr UINT): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupEnumInfSectionsA".}
-  proc SetupVerifyInfFile*(InfName: PCSTR, AltPlatformInfo: PSP_ALTPLATFORM_INFO, InfSignerInfo: PSP_INF_SIGNER_INFO_A): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupVerifyInfFileA".}
-  proc SetupDiGetCustomDeviceProperty*(DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, CustomPropertyName: PCSTR, Flags: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetCustomDevicePropertyA".}
-  proc SetupConfigureWmiFromInfSection*(InfHandle: HINF, SectionName: PCSTR, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupConfigureWmiFromInfSectionA".}
+
+  proc SetupGetInfInformation*(
+    InfSpec: LPCVOID,
+    SearchControl: DWORD,
+    ReturnBuffer: PSP_INF_INFORMATION,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetInfInformationA".}
+
+  proc SetupQueryInfFileInformation*(
+    InfInformation: PSP_INF_INFORMATION,
+    InfIndex: UINT,
+    ReturnBuffer: PSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryInfFileInformationA"
+  .}
+
+  proc SetupQueryInfOriginalFileInformation*(
+    InfInformation: PSP_INF_INFORMATION,
+    InfIndex: UINT,
+    AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+    OriginalFileInfo: PSP_ORIGINAL_FILE_INFO_A,
+  ): WINBOOL {.
+    winapi,
+    stdcall,
+    dynlib: "setupapi",
+    importc: "SetupQueryInfOriginalFileInformationA"
+  .}
+
+  proc SetupQueryInfVersionInformation*(
+    InfInformation: PSP_INF_INFORMATION,
+    InfIndex: UINT,
+    Key: PCSTR,
+    ReturnBuffer: PSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryInfVersionInformationA"
+  .}
+
+  proc SetupGetInfFileList*(
+    DirectoryPath: PCSTR,
+    InfStyle: DWORD,
+    ReturnBuffer: PSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetInfFileListA".}
+
+  proc SetupOpenInfFile*(
+    FileName: PCSTR, InfClass: PCSTR, InfStyle: DWORD, ErrorLine: PUINT
+  ): HINF {.winapi, stdcall, dynlib: "setupapi", importc: "SetupOpenInfFileA".}
+
+  proc SetupOpenAppendInfFile*(
+    FileName: PCSTR, InfHandle: HINF, ErrorLine: PUINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupOpenAppendInfFileA".}
+
+  proc SetupFindFirstLine*(
+    InfHandle: HINF, Section: PCSTR, Key: PCSTR, Context: PINFCONTEXT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupFindFirstLineA".}
+
+  proc SetupFindNextMatchLine*(
+    ContextIn: PINFCONTEXT, Key: PCSTR, ContextOut: PINFCONTEXT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupFindNextMatchLineA".}
+
+  proc SetupGetLineByIndex*(
+    InfHandle: HINF, Section: PCSTR, Index: DWORD, Context: PINFCONTEXT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetLineByIndexA".}
+
+  proc SetupGetLineCount*(
+    InfHandle: HINF, Section: PCSTR
+  ): LONG {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetLineCountA".}
+
+  proc SetupGetLineText*(
+    Context: PINFCONTEXT,
+    InfHandle: HINF,
+    Section: PCSTR,
+    Key: PCSTR,
+    ReturnBuffer: PSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetLineTextA".}
+
+  proc SetupGetStringField*(
+    Context: PINFCONTEXT,
+    FieldIndex: DWORD,
+    ReturnBuffer: PSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetStringFieldA".}
+
+  proc SetupGetMultiSzField*(
+    Context: PINFCONTEXT,
+    FieldIndex: DWORD,
+    ReturnBuffer: PSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetMultiSzFieldA".}
+
+  proc SetupGetFileCompressionInfo*(
+    SourceFileName: PCSTR,
+    ActualSourceFileName: ptr PSTR,
+    SourceFileSize: PDWORD,
+    TargetFileSize: PDWORD,
+    CompressionType: PUINT,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupGetFileCompressionInfoA"
+  .}
+
+  proc SetupGetFileCompressionInfoEx*(
+    SourceFileName: PCSTR,
+    ActualSourceFileNameBuffer: PSTR,
+    ActualSourceFileNameBufferLen: DWORD,
+    RequiredBufferLen: PDWORD,
+    SourceFileSize: PDWORD,
+    TargetFileSize: PDWORD,
+    CompressionType: PUINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupGetFileCompressionInfoExA"
+  .}
+
+  proc SetupDecompressOrCopyFile*(
+    SourceFileName: PCSTR, TargetFileName: PCSTR, CompressionType: PUINT
+  ): DWORD {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDecompressOrCopyFileA"
+  .}
+
+  proc SetupGetSourceFileLocation*(
+    InfHandle: HINF,
+    InfContext: PINFCONTEXT,
+    FileName: PCSTR,
+    SourceId: PUINT,
+    ReturnBuffer: PSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupGetSourceFileLocationA"
+  .}
+
+  proc SetupGetSourceFileSize*(
+    InfHandle: HINF,
+    InfContext: PINFCONTEXT,
+    FileName: PCSTR,
+    Section: PCSTR,
+    FileSize: PDWORD,
+    RoundingFactor: UINT,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetSourceFileSizeA".}
+
+  proc SetupGetTargetPath*(
+    InfHandle: HINF,
+    InfContext: PINFCONTEXT,
+    Section: PCSTR,
+    ReturnBuffer: PSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetTargetPathA".}
+
+  proc SetupSetSourceList*(
+    Flags: DWORD, SourceList: ptr PCSTR, SourceCount: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetSourceListA".}
+
+  proc SetupAddToSourceList*(
+    Flags: DWORD, Source: PCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupAddToSourceListA".}
+
+  proc SetupRemoveFromSourceList*(
+    Flags: DWORD, Source: PCSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveFromSourceListA"
+  .}
+
+  proc SetupQuerySourceList*(
+    Flags: DWORD, List: ptr ptr PCSTR, Count: PUINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQuerySourceListA".}
+
+  proc SetupFreeSourceList*(
+    List: ptr ptr PCSTR, Count: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupFreeSourceListA".}
+
+  proc SetupPromptForDisk*(
+    hwndParent: HWND,
+    DialogTitle: PCSTR,
+    DiskName: PCSTR,
+    PathToSource: PCSTR,
+    FileSought: PCSTR,
+    TagFile: PCSTR,
+    DiskPromptStyle: DWORD,
+    PathBuffer: PSTR,
+    PathBufferSize: DWORD,
+    PathRequiredSize: PDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupPromptForDiskA".}
+
+  proc SetupCopyError*(
+    hwndParent: HWND,
+    DialogTitle: PCSTR,
+    DiskName: PCSTR,
+    PathToSource: PCSTR,
+    SourceFile: PCSTR,
+    TargetPathFile: PCSTR,
+    Win32ErrorCode: UINT,
+    Style: DWORD,
+    PathBuffer: PSTR,
+    PathBufferSize: DWORD,
+    PathRequiredSize: PDWORD,
+  ): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupCopyErrorA".}
+
+  proc SetupRenameError*(
+    hwndParent: HWND,
+    DialogTitle: PCSTR,
+    SourceFile: PCSTR,
+    TargetFile: PCSTR,
+    Win32ErrorCode: UINT,
+    Style: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupRenameErrorA".}
+
+  proc SetupDeleteError*(
+    hwndParent: HWND,
+    DialogTitle: PCSTR,
+    File: PCSTR,
+    Win32ErrorCode: UINT,
+    Style: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDeleteErrorA".}
+
+  proc SetupBackupError*(
+    hwndParent: HWND,
+    DialogTitle: PCSTR,
+    SourceFile: PCSTR,
+    TargetFile: PCSTR,
+    Win32ErrorCode: UINT,
+    Style: DWORD,
+  ): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupBackupErrorA".}
+
+  proc SetupSetDirectoryId*(
+    InfHandle: HINF, Id: DWORD, Directory: PCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetDirectoryIdA".}
+
+  proc SetupSetDirectoryIdEx*(
+    InfHandle: HINF,
+    Id: DWORD,
+    Directory: PCSTR,
+    Flags: DWORD,
+    Reserved1: DWORD,
+    Reserved2: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupSetDirectoryIdExA".}
+
+  proc SetupGetSourceInfo*(
+    InfHandle: HINF,
+    SourceId: UINT,
+    InfoDesired: UINT,
+    ReturnBuffer: PSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupGetSourceInfoA".}
+
+  proc SetupInstallFile*(
+    InfHandle: HINF,
+    InfContext: PINFCONTEXT,
+    SourceFile: PCSTR,
+    SourcePathRoot: PCSTR,
+    DestinationName: PCSTR,
+    CopyStyle: DWORD,
+    CopyMsgHandler: PSP_FILE_CALLBACK_A,
+    Context: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFileA".}
+
+  proc SetupInstallFileEx*(
+    InfHandle: HINF,
+    InfContext: PINFCONTEXT,
+    SourceFile: PCSTR,
+    SourcePathRoot: PCSTR,
+    DestinationName: PCSTR,
+    CopyStyle: DWORD,
+    CopyMsgHandler: PSP_FILE_CALLBACK_A,
+    Context: PVOID,
+    FileWasInUse: PBOOL,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFileExA".}
+
+  proc SetupSetFileQueueAlternatePlatform*(
+    QueueHandle: HSPFILEQ,
+    AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+    AlternateDefaultCatalogFile: PCSTR,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupSetFileQueueAlternatePlatformA"
+  .}
+
+  proc SetupQueueDeleteSection*(
+    QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueDeleteSectionA"
+  .}
+
+  proc SetupQueueRename*(
+    QueueHandle: HSPFILEQ,
+    SourcePath: PCSTR,
+    SourceFilename: PCSTR,
+    TargetPath: PCSTR,
+    TargetFilename: PCSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueRenameA".}
+
+  proc SetupQueueRenameSection*(
+    QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueRenameSectionA"
+  .}
+
+  proc SetupCommitFileQueue*(
+    Owner: HWND, QueueHandle: HSPFILEQ, MsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupCommitFileQueueA".}
+
+  proc SetupScanFileQueue*(
+    FileQueue: HSPFILEQ,
+    Flags: DWORD,
+    Window: HWND,
+    CallbackRoutine: PSP_FILE_CALLBACK_A,
+    CallbackContext: PVOID,
+    Result: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupScanFileQueueA".}
+
+  proc SetupSetPlatformPathOverride*(
+    Override: PCSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupSetPlatformPathOverrideA"
+  .}
+
+  proc SetupQueueCopy*(
+    QueueHandle: HSPFILEQ,
+    SourceRootPath: PCSTR,
+    SourcePath: PCSTR,
+    SourceFilename: PCSTR,
+    SourceDescription: PCSTR,
+    SourceTagfile: PCSTR,
+    TargetDirectory: PCSTR,
+    TargetFilename: PCSTR,
+    CopyStyle: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueCopyA".}
+
+  proc SetupQueueCopyIndirect*(
+    CopyParams: PSP_FILE_COPY_PARAMS_A
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueCopyIndirectA".}
+
+  proc SetupQueueDefaultCopy*(
+    QueueHandle: HSPFILEQ,
+    InfHandle: HINF,
+    SourceRootPath: PCSTR,
+    SourceFilename: PCSTR,
+    TargetFilename: PCSTR,
+    CopyStyle: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueDefaultCopyA".}
+
+  proc SetupQueueCopySection*(
+    QueueHandle: HSPFILEQ,
+    SourceRootPath: PCSTR,
+    InfHandle: HINF,
+    ListInfHandle: HINF,
+    Section: PCSTR,
+    CopyStyle: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueCopySectionA".}
+
+  proc SetupQueueDelete*(
+    QueueHandle: HSPFILEQ, PathPart1: PCSTR, PathPart2: PCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueueDeleteA".}
+
+  proc SetupCopyOEMInf*(
+    SourceInfFileName: PCSTR,
+    OEMSourceMediaLocation: PCSTR,
+    OEMSourceMediaType: DWORD,
+    CopyStyle: DWORD,
+    DestinationInfFileName: PSTR,
+    DestinationInfFileNameSize: DWORD,
+    RequiredSize: PDWORD,
+    DestinationInfFileNameComponent: ptr PSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupCopyOEMInfA".}
+
+  proc SetupUninstallOEMInf*(
+    InfFileName: PCSTR, Flags: DWORD, Reserved: PVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupUninstallOEMInfA".}
+
+  proc SetupCreateDiskSpaceList*(
+    Reserved1: PVOID, Reserved2: DWORD, Flags: UINT
+  ): HDSKSPC {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupCreateDiskSpaceListA"
+  .}
+
+  proc SetupDuplicateDiskSpaceList*(
+    DiskSpace: HDSKSPC, Reserved1: PVOID, Reserved2: DWORD, Flags: UINT
+  ): HDSKSPC {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDuplicateDiskSpaceListA"
+  .}
+
+  proc SetupQueryDrivesInDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    ReturnBuffer: PSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryDrivesInDiskSpaceListA"
+  .}
+
+  proc SetupQuerySpaceRequiredOnDrive*(
+    DiskSpace: HDSKSPC,
+    DriveSpec: PCSTR,
+    SpaceRequired: ptr LONGLONG,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupQuerySpaceRequiredOnDriveA"
+  .}
+
+  proc SetupAdjustDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    DriveRoot: LPCSTR,
+    Amount: LONGLONG,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupAdjustDiskSpaceListA"
+  .}
+
+  proc SetupAddToDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    TargetFilespec: PCSTR,
+    FileSize: LONGLONG,
+    Operation: UINT,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupAddToDiskSpaceListA"
+  .}
+
+  proc SetupAddSectionToDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    InfHandle: HINF,
+    ListInfHandle: HINF,
+    SectionName: PCSTR,
+    Operation: UINT,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupAddSectionToDiskSpaceListA"
+  .}
+
+  proc SetupAddInstallSectionToDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    InfHandle: HINF,
+    LayoutInfHandle: HINF,
+    SectionName: PCSTR,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi,
+    stdcall,
+    dynlib: "setupapi",
+    importc: "SetupAddInstallSectionToDiskSpaceListA"
+  .}
+
+  proc SetupRemoveFromDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    TargetFilespec: PCSTR,
+    Operation: UINT,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveFromDiskSpaceListA"
+  .}
+
+  proc SetupRemoveSectionFromDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    InfHandle: HINF,
+    ListInfHandle: HINF,
+    SectionName: PCSTR,
+    Operation: UINT,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveSectionFromDiskSpaceListA"
+  .}
+
+  proc SetupRemoveInstallSectionFromDiskSpaceList*(
+    DiskSpace: HDSKSPC,
+    InfHandle: HINF,
+    LayoutInfHandle: HINF,
+    SectionName: PCSTR,
+    Reserved1: PVOID,
+    Reserved2: UINT,
+  ): WINBOOL {.
+    winapi,
+    stdcall,
+    dynlib: "setupapi",
+    importc: "SetupRemoveInstallSectionFromDiskSpaceListA"
+  .}
+
+  proc SetupIterateCabinet*(
+    CabinetFile: PCSTR, Reserved: DWORD, MsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupIterateCabinetA".}
+
+  proc SetupDefaultQueueCallback*(
+    Context: PVOID, Notification: UINT, Param1: UINT_PTR, Param2: UINT_PTR
+  ): UINT {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDefaultQueueCallbackA".}
+
+  proc SetupInstallFromInfSection*(
+    Owner: HWND,
+    InfHandle: HINF,
+    SectionName: PCSTR,
+    Flags: UINT,
+    RelativeKeyRoot: HKEY,
+    SourceRootPath: PCSTR,
+    CopyFlags: UINT,
+    MsgHandler: PSP_FILE_CALLBACK_A,
+    Context: PVOID,
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFromInfSectionA"
+  .}
+
+  proc SetupInstallFilesFromInfSection*(
+    InfHandle: HINF,
+    LayoutInfHandle: HINF,
+    FileQueue: HSPFILEQ,
+    SectionName: PCSTR,
+    SourceRootPath: PCSTR,
+    CopyFlags: UINT,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallFilesFromInfSectionA"
+  .}
+
+  proc SetupInstallServicesFromInfSection*(
+    InfHandle: HINF, SectionName: PCSTR, Flags: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupInstallServicesFromInfSectionA"
+  .}
+
+  proc SetupInstallServicesFromInfSectionEx*(
+    InfHandle: HINF,
+    SectionName: PCSTR,
+    Flags: DWORD,
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    Reserved1: PVOID,
+    Reserved2: PVOID,
+  ): WINBOOL {.
+    winapi,
+    stdcall,
+    dynlib: "setupapi",
+    importc: "SetupInstallServicesFromInfSectionExA"
+  .}
+
+  proc InstallHinfSection*(
+    Window: HWND, ModuleHandle: HINSTANCE, CommandLine: PCSTR, ShowCommand: INT
+  ): VOID {.winapi, stdcall, dynlib: "setupapi", importc: "InstallHinfSectionA".}
+
+  proc SetupInitializeFileLog*(
+    LogFileName: PCSTR, Flags: DWORD
+  ): HSPFILELOG {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupInitializeFileLogA"
+  .}
+
+  proc SetupLogFile*(
+    FileLogHandle: HSPFILELOG,
+    LogSectionName: PCSTR,
+    SourceFilename: PCSTR,
+    TargetFilename: PCSTR,
+    Checksum: DWORD,
+    DiskTagfile: PCSTR,
+    DiskDescription: PCSTR,
+    OtherInfo: PCSTR,
+    Flags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupLogFileA".}
+
+  proc SetupRemoveFileLogEntry*(
+    FileLogHandle: HSPFILELOG, LogSectionName: PCSTR, TargetFilename: PCSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupRemoveFileLogEntryA"
+  .}
+
+  proc SetupQueryFileLog*(
+    FileLogHandle: HSPFILELOG,
+    LogSectionName: PCSTR,
+    TargetFilename: PCSTR,
+    DesiredInfo: SetupFileLogInfo,
+    DataOut: PSTR,
+    ReturnBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupQueryFileLogA".}
+
+  proc SetupLogError*(
+    MessageString: LPCSTR, Severity: LogSeverity
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupLogErrorA".}
+
+  proc SetupGetBackupInformation*(
+    QueueHandle: HSPFILEQ, BackupParams: PSP_BACKUP_QUEUE_PARAMS_A
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupGetBackupInformationA"
+  .}
+
+  proc SetupPrepareQueueForRestore*(
+    QueueHandle: HSPFILEQ, BackupPath: PCSTR, RestoreFlags: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupPrepareQueueForRestoreA"
+  .}
+
+  proc SetupDiCreateDeviceInfoListEx*(
+    ClassGuid: ptr GUID, hwndParent: HWND, MachineName: PCSTR, Reserved: PVOID
+  ): HDEVINFO {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInfoListExA"
+  .}
+
+  proc SetupDiGetDeviceInfoListDetail*(
+    DeviceInfoSet: HDEVINFO, DeviceInfoSetDetailData: PSP_DEVINFO_LIST_DETAIL_DATA_A
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInfoListDetailA"
+  .}
+
+  proc SetupDiCreateDeviceInfo*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceName: PCSTR,
+    ClassGuid: ptr GUID,
+    DeviceDescription: PCSTR,
+    hwndParent: HWND,
+    CreationFlags: DWORD,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInfoA"
+  .}
+
+  proc SetupDiOpenDeviceInfo*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInstanceId: PCSTR,
+    hwndParent: HWND,
+    OpenFlags: DWORD,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInfoA".}
+
+  proc SetupDiGetDeviceInstanceId*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DeviceInstanceId: PSTR,
+    DeviceInstanceIdSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInstanceIdA"
+  .}
+
+  proc SetupDiCreateDeviceInterface*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    InterfaceClassGuid: ptr GUID,
+    ReferenceString: PCSTR,
+    CreationFlags: DWORD,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceA"
+  .}
+
+  proc SetupDiCreateInterfaceDevice*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    InterfaceClassGuid: ptr GUID,
+    ReferenceString: PCSTR,
+    CreationFlags: DWORD,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceA"
+  .}
+
+  proc SetupDiOpenDeviceInterface*(
+    DeviceInfoSet: HDEVINFO,
+    DevicePath: PCSTR,
+    OpenFlags: DWORD,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInterfaceA"
+  .}
+
+  proc SetupDiOpenInterfaceDevice*(
+    DeviceInfoSet: HDEVINFO,
+    DevicePath: PCSTR,
+    OpenFlags: DWORD,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenDeviceInterfaceA"
+  .}
+
+  proc SetupDiGetDeviceInterfaceDetail*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+    DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_A,
+    DeviceInterfaceDetailDataSize: DWORD,
+    RequiredSize: PDWORD,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInterfaceDetailA"
+  .}
+
+  proc SetupDiGetInterfaceDeviceDetail*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+    DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_A,
+    DeviceInterfaceDetailDataSize: DWORD,
+    RequiredSize: PDWORD,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInterfaceDetailA"
+  .}
+
+  proc SetupDiEnumDriverInfo*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DriverType: DWORD,
+    MemberIndex: DWORD,
+    DriverInfoData: PSP_DRVINFO_DATA_A,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiEnumDriverInfoA".}
+
+  proc SetupDiGetSelectedDriver*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DriverInfoData: PSP_DRVINFO_DATA_A,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetSelectedDriverA"
+  .}
+
+  proc SetupDiSetSelectedDriver*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DriverInfoData: PSP_DRVINFO_DATA_A,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetSelectedDriverA"
+  .}
+
+  proc SetupDiGetDriverInfoDetail*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DriverInfoData: PSP_DRVINFO_DATA_A,
+    DriverInfoDetailData: PSP_DRVINFO_DETAIL_DATA_A,
+    DriverInfoDetailDataSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDriverInfoDetailA"
+  .}
+
+  proc SetupDiGetClassDevs*(
+    ClassGuid: ptr GUID, Enumerator: PCSTR, hwndParent: HWND, Flags: DWORD
+  ): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDevsA".}
+
+  proc SetupDiGetClassDevsEx*(
+    ClassGuid: ptr GUID,
+    Enumerator: PCSTR,
+    hwndParent: HWND,
+    Flags: DWORD,
+    DeviceInfoSet: HDEVINFO,
+    MachineName: PCSTR,
+    Reserved: PVOID,
+  ): HDEVINFO {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDevsExA".}
+
+  proc SetupDiGetINFClass*(
+    InfName: PCSTR,
+    ClassGuid: LPGUID,
+    ClassName: PSTR,
+    ClassNameSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetINFClassA".}
+
+  proc SetupDiBuildClassInfoListEx*(
+    Flags: DWORD,
+    ClassGuidList: LPGUID,
+    ClassGuidListSize: DWORD,
+    RequiredSize: PDWORD,
+    MachineName: PCSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiBuildClassInfoListExA"
+  .}
+
+  proc SetupDiGetClassDescription*(
+    ClassGuid: ptr GUID,
+    ClassDescription: PSTR,
+    ClassDescriptionSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDescriptionA"
+  .}
+
+  proc SetupDiGetClassDescriptionEx*(
+    ClassGuid: ptr GUID,
+    ClassDescription: PSTR,
+    ClassDescriptionSize: DWORD,
+    RequiredSize: PDWORD,
+    MachineName: PCSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDescriptionExA"
+  .}
+
+  proc SetupDiInstallClass*(
+    hwndParent: HWND, InfFileName: PCSTR, Flags: DWORD, FileQueue: HSPFILEQ
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiInstallClassA".}
+
+  proc SetupDiInstallClassEx*(
+    hwndParent: HWND,
+    InfFileName: PCSTR,
+    Flags: DWORD,
+    FileQueue: HSPFILEQ,
+    InterfaceClassGuid: ptr GUID,
+    Reserved1: PVOID,
+    Reserved2: PVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiInstallClassExA".}
+
+  proc SetupDiOpenClassRegKeyEx*(
+    ClassGuid: ptr GUID,
+    samDesired: REGSAM,
+    Flags: DWORD,
+    MachineName: PCSTR,
+    Reserved: PVOID,
+  ): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiOpenClassRegKeyExA".}
+
+  proc SetupDiCreateDeviceInterfaceRegKey*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+    Reserved: DWORD,
+    samDesired: REGSAM,
+    InfHandle: HINF,
+    InfSectionName: PCSTR,
+  ): HKEY {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceRegKeyA"
+  .}
+
+  proc SetupDiCreateInterfaceDeviceRegKey*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA,
+    Reserved: DWORD,
+    samDesired: REGSAM,
+    InfHandle: HINF,
+    InfSectionName: PCSTR,
+  ): HKEY {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDeviceInterfaceRegKeyA"
+  .}
+
+  proc SetupDiCreateDevRegKey*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    Scope: DWORD,
+    HwProfile: DWORD,
+    KeyType: DWORD,
+    InfHandle: HINF,
+    InfSectionName: PCSTR,
+  ): HKEY {.winapi, stdcall, dynlib: "setupapi", importc: "SetupDiCreateDevRegKeyA".}
+
+  proc SetupDiGetHwProfileListEx*(
+    HwProfileList: PDWORD,
+    HwProfileListSize: DWORD,
+    RequiredSize: PDWORD,
+    CurrentlyActiveIndex: PDWORD,
+    MachineName: PCSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetHwProfileListExA"
+  .}
+
+  proc SetupDiGetDeviceRegistryProperty*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    Property: DWORD,
+    PropertyRegDataType: PDWORD,
+    PropertyBuffer: PBYTE,
+    PropertyBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceRegistryPropertyA"
+  .}
+
+  proc SetupDiGetClassRegistryProperty*(
+    ClassGuid: ptr GUID,
+    Property: DWORD,
+    PropertyRegDataType: PDWORD,
+    PropertyBuffer: PBYTE,
+    PropertyBufferSize: DWORD,
+    RequiredSize: PDWORD,
+    MachineName: PCSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassRegistryPropertyA"
+  .}
+
+  proc SetupDiSetDeviceRegistryProperty*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    Property: DWORD,
+    PropertyBuffer: ptr BYTE,
+    PropertyBufferSize: DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetDeviceRegistryPropertyA"
+  .}
+
+  proc SetupDiSetClassRegistryProperty*(
+    ClassGuid: ptr GUID,
+    Property: DWORD,
+    PropertyBuffer: ptr BYTE,
+    PropertyBufferSize: DWORD,
+    MachineName: PCSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetClassRegistryPropertyA"
+  .}
+
+  proc SetupDiGetDeviceInstallParams*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DeviceInstallParams: PSP_DEVINSTALL_PARAMS_A,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDeviceInstallParamsA"
+  .}
+
+  proc SetupDiGetClassInstallParams*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    ClassInstallParams: PSP_CLASSINSTALL_HEADER,
+    ClassInstallParamsSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassInstallParamsA"
+  .}
+
+  proc SetupDiSetDeviceInstallParams*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DeviceInstallParams: PSP_DEVINSTALL_PARAMS_A,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetDeviceInstallParamsA"
+  .}
+
+  proc SetupDiSetClassInstallParams*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    ClassInstallParams: PSP_CLASSINSTALL_HEADER,
+    ClassInstallParamsSize: DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetClassInstallParamsA"
+  .}
+
+  proc SetupDiGetDriverInstallParams*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DriverInfoData: PSP_DRVINFO_DATA_A,
+    DriverInstallParams: PSP_DRVINSTALL_PARAMS,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetDriverInstallParamsA"
+  .}
+
+  proc SetupDiSetDriverInstallParams*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    DriverInfoData: PSP_DRVINFO_DATA_A,
+    DriverInstallParams: PSP_DRVINSTALL_PARAMS,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiSetDriverInstallParamsA"
+  .}
+
+  proc SetupDiGetClassImageListEx*(
+    ClassImageListData: PSP_CLASSIMAGELIST_DATA, MachineName: PCSTR, Reserved: PVOID
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassImageListExA"
+  .}
+
+  proc SetupDiGetClassDevPropertySheets*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    PropertySheetHeader: LPPROPSHEETHEADERA,
+    PropertySheetHeaderPageListSize: DWORD,
+    RequiredSize: PDWORD,
+    PropertySheetType: DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetClassDevPropertySheetsA"
+  .}
+
+  proc SetupDiClassNameFromGuid*(
+    ClassGuid: ptr GUID, ClassName: PSTR, ClassNameSize: DWORD, RequiredSize: PDWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassNameFromGuidA"
+  .}
+
+  proc SetupDiClassNameFromGuidEx*(
+    ClassGuid: ptr GUID,
+    ClassName: PSTR,
+    ClassNameSize: DWORD,
+    RequiredSize: PDWORD,
+    MachineName: PCSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassNameFromGuidExA"
+  .}
+
+  proc SetupDiClassGuidsFromName*(
+    ClassName: PCSTR,
+    ClassGuidList: LPGUID,
+    ClassGuidListSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassGuidsFromNameA"
+  .}
+
+  proc SetupDiClassGuidsFromNameEx*(
+    ClassName: PCSTR,
+    ClassGuidList: LPGUID,
+    ClassGuidListSize: DWORD,
+    RequiredSize: PDWORD,
+    MachineName: PCSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiClassGuidsFromNameExA"
+  .}
+
+  proc SetupDiGetHwProfileFriendlyName*(
+    HwProfile: DWORD, FriendlyName: PSTR, FriendlyNameSize: DWORD, RequiredSize: PDWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetHwProfileFriendlyNameA"
+  .}
+
+  proc SetupDiGetHwProfileFriendlyNameEx*(
+    HwProfile: DWORD,
+    FriendlyName: PSTR,
+    FriendlyNameSize: DWORD,
+    RequiredSize: PDWORD,
+    MachineName: PCSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetHwProfileFriendlyNameExA"
+  .}
+
+  proc SetupDiGetActualModelsSection*(
+    Context: PINFCONTEXT,
+    AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+    InfSectionWithExt: PSTR,
+    InfSectionWithExtSize: DWORD,
+    RequiredSize: PDWORD,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetActualModelsSectionA"
+  .}
+
+  proc SetupDiGetActualSectionToInstall*(
+    InfHandle: HINF,
+    InfSectionName: PCSTR,
+    InfSectionWithExt: PSTR,
+    InfSectionWithExtSize: DWORD,
+    RequiredSize: PDWORD,
+    Extension: ptr PSTR,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetActualSectionToInstallA"
+  .}
+
+  proc SetupDiGetActualSectionToInstallEx*(
+    InfHandle: HINF,
+    InfSectionName: PCSTR,
+    AlternatePlatformInfo: PSP_ALTPLATFORM_INFO,
+    InfSectionWithExt: PSTR,
+    InfSectionWithExtSize: DWORD,
+    RequiredSize: PDWORD,
+    Extension: ptr PSTR,
+    Reserved: PVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetActualSectionToInstallExA"
+  .}
+
+  proc SetupEnumInfSections*(
+    InfHandle: HINF, Index: UINT, Buffer: PSTR, Size: UINT, SizeNeeded: ptr UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupEnumInfSectionsA".}
+
+  proc SetupVerifyInfFile*(
+    InfName: PCSTR,
+    AltPlatformInfo: PSP_ALTPLATFORM_INFO,
+    InfSignerInfo: PSP_INF_SIGNER_INFO_A,
+  ): WINBOOL {.winapi, stdcall, dynlib: "setupapi", importc: "SetupVerifyInfFileA".}
+
+  proc SetupDiGetCustomDeviceProperty*(
+    DeviceInfoSet: HDEVINFO,
+    DeviceInfoData: PSP_DEVINFO_DATA,
+    CustomPropertyName: PCSTR,
+    Flags: DWORD,
+    PropertyRegDataType: PDWORD,
+    PropertyBuffer: PBYTE,
+    PropertyBufferSize: DWORD,
+    RequiredSize: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupDiGetCustomDevicePropertyA"
+  .}
+
+  proc SetupConfigureWmiFromInfSection*(
+    InfHandle: HINF, SectionName: PCSTR, Flags: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "setupapi", importc: "SetupConfigureWmiFromInfSectionA"
+  .}
--- a/semicongine/thirdparty/winim/winim/inc/shellapi.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/shellapi.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -181,6 +181,7 @@
     fNC*: WINBOOL
     lpFileList*: LPSTR
     grfKeyState*: DWORD
+
   LPDRAGINFOA* = ptr DRAGINFOA
   DRAGINFOW* {.pure.} = object
     uSize*: UINT
@@ -188,6 +189,7 @@
     fNC*: WINBOOL
     lpFileList*: LPWSTR
     grfKeyState*: DWORD
+
   LPDRAGINFOW* = ptr DRAGINFOW
   APPBARDATA* {.pure.} = object
     cbSize*: DWORD
@@ -196,53 +198,54 @@
     uEdge*: UINT
     rc*: RECT
     lParam*: LPARAM
+
   PAPPBARDATA* = ptr APPBARDATA
+
 when winimCpu64:
-  type
-    SHFILEOPSTRUCTA* {.pure.} = object
-      hwnd*: HWND
-      wFunc*: UINT
-      pFrom*: LPCSTR
-      pTo*: LPCSTR
-      fFlags*: FILEOP_FLAGS
-      fAnyOperationsAborted*: WINBOOL
-      hNameMappings*: LPVOID
-      lpszProgressTitle*: PCSTR
+  type SHFILEOPSTRUCTA* {.pure.} = object
+    hwnd*: HWND
+    wFunc*: UINT
+    pFrom*: LPCSTR
+    pTo*: LPCSTR
+    fFlags*: FILEOP_FLAGS
+    fAnyOperationsAborted*: WINBOOL
+    hNameMappings*: LPVOID
+    lpszProgressTitle*: PCSTR
+
 when winimCpu32:
-  type
-    SHFILEOPSTRUCTA* {.pure, packed.} = object
-      hwnd*: HWND
-      wFunc*: UINT
-      pFrom*: LPCSTR
-      pTo*: LPCSTR
-      fFlags*: FILEOP_FLAGS
-      fAnyOperationsAborted*: WINBOOL
-      hNameMappings*: LPVOID
-      lpszProgressTitle*: PCSTR
-type
-  LPSHFILEOPSTRUCTA* = ptr SHFILEOPSTRUCTA
+  type SHFILEOPSTRUCTA* {.pure, packed.} = object
+    hwnd*: HWND
+    wFunc*: UINT
+    pFrom*: LPCSTR
+    pTo*: LPCSTR
+    fFlags*: FILEOP_FLAGS
+    fAnyOperationsAborted*: WINBOOL
+    hNameMappings*: LPVOID
+    lpszProgressTitle*: PCSTR
+
+type LPSHFILEOPSTRUCTA* = ptr SHFILEOPSTRUCTA
 when winimCpu64:
-  type
-    SHFILEOPSTRUCTW* {.pure.} = object
-      hwnd*: HWND
-      wFunc*: UINT
-      pFrom*: LPCWSTR
-      pTo*: LPCWSTR
-      fFlags*: FILEOP_FLAGS
-      fAnyOperationsAborted*: WINBOOL
-      hNameMappings*: LPVOID
-      lpszProgressTitle*: PCWSTR
+  type SHFILEOPSTRUCTW* {.pure.} = object
+    hwnd*: HWND
+    wFunc*: UINT
+    pFrom*: LPCWSTR
+    pTo*: LPCWSTR
+    fFlags*: FILEOP_FLAGS
+    fAnyOperationsAborted*: WINBOOL
+    hNameMappings*: LPVOID
+    lpszProgressTitle*: PCWSTR
+
 when winimCpu32:
-  type
-    SHFILEOPSTRUCTW* {.pure, packed.} = object
-      hwnd*: HWND
-      wFunc*: UINT
-      pFrom*: LPCWSTR
-      pTo*: LPCWSTR
-      fFlags*: FILEOP_FLAGS
-      fAnyOperationsAborted*: WINBOOL
-      hNameMappings*: LPVOID
-      lpszProgressTitle*: PCWSTR
+  type SHFILEOPSTRUCTW* {.pure, packed.} = object
+    hwnd*: HWND
+    wFunc*: UINT
+    pFrom*: LPCWSTR
+    pTo*: LPCWSTR
+    fFlags*: FILEOP_FLAGS
+    fAnyOperationsAborted*: WINBOOL
+    hNameMappings*: LPVOID
+    lpszProgressTitle*: PCWSTR
+
 type
   LPSHFILEOPSTRUCTW* = ptr SHFILEOPSTRUCTW
   SHNAMEMAPPINGA* {.pure.} = object
@@ -250,16 +253,19 @@
     pszNewPath*: LPSTR
     cchOldPath*: int32
     cchNewPath*: int32
+
   LPSHNAMEMAPPINGA* = ptr SHNAMEMAPPINGA
   SHNAMEMAPPINGW* {.pure.} = object
     pszOldPath*: LPWSTR
     pszNewPath*: LPWSTR
     cchOldPath*: int32
     cchNewPath*: int32
+
   LPSHNAMEMAPPINGW* = ptr SHNAMEMAPPINGW
   SHELLEXECUTEINFOA_UNION1* {.pure, union.} = object
     hIcon*: HANDLE
     hMonitor*: HANDLE
+
   SHELLEXECUTEINFOA* {.pure.} = object
     cbSize*: DWORD
     fMask*: ULONG
@@ -276,10 +282,12 @@
     dwHotKey*: DWORD
     union1*: SHELLEXECUTEINFOA_UNION1
     hProcess*: HANDLE
+
   LPSHELLEXECUTEINFOA* = ptr SHELLEXECUTEINFOA
   SHELLEXECUTEINFOW_UNION1* {.pure, union.} = object
     hIcon*: HANDLE
     hMonitor*: HANDLE
+
   SHELLEXECUTEINFOW* {.pure.} = object
     cbSize*: DWORD
     fMask*: ULONG
@@ -296,6 +304,7 @@
     dwHotKey*: DWORD
     union1*: SHELLEXECUTEINFOW_UNION1
     hProcess*: HANDLE
+
   LPSHELLEXECUTEINFOW* = ptr SHELLEXECUTEINFOW
   SHCREATEPROCESSINFOW* {.pure.} = object
     cbSize*: DWORD
@@ -311,24 +320,27 @@
     dwCreationFlags*: DWORD
     lpStartupInfo*: LPSTARTUPINFOW
     lpProcessInformation*: LPPROCESS_INFORMATION
+
   PSHCREATEPROCESSINFOW* = ptr SHCREATEPROCESSINFOW
+
 when winimCpu64:
-  type
-    SHQUERYRBINFO* {.pure.} = object
-      cbSize*: DWORD
-      i64Size*: int64
-      i64NumItems*: int64
+  type SHQUERYRBINFO* {.pure.} = object
+    cbSize*: DWORD
+    i64Size*: int64
+    i64NumItems*: int64
+
 when winimCpu32:
-  type
-    SHQUERYRBINFO* {.pure, packed.} = object
-      cbSize*: DWORD
-      i64Size*: int64
-      i64NumItems*: int64
+  type SHQUERYRBINFO* {.pure, packed.} = object
+    cbSize*: DWORD
+    i64Size*: int64
+    i64NumItems*: int64
+
 type
   LPSHQUERYRBINFO* = ptr SHQUERYRBINFO
   NOTIFYICONDATAA_UNION1* {.pure, union.} = object
     uTimeout*: UINT
     uVersion*: UINT
+
   NOTIFYICONDATAA* {.pure.} = object
     cbSize*: DWORD
     hWnd*: HWND
@@ -345,10 +357,12 @@
     dwInfoFlags*: DWORD
     guidItem*: GUID
     hBalloonIcon*: HICON
+
   PNOTIFYICONDATAA* = ptr NOTIFYICONDATAA
   NOTIFYICONDATAW_UNION1* {.pure, union.} = object
     uTimeout*: UINT
     uVersion*: UINT
+
   NOTIFYICONDATAW* {.pure.} = object
     cbSize*: DWORD
     hWnd*: HWND
@@ -365,12 +379,14 @@
     dwInfoFlags*: DWORD
     guidItem*: GUID
     hBalloonIcon*: HICON
+
   PNOTIFYICONDATAW* = ptr NOTIFYICONDATAW
   NOTIFYICONIDENTIFIER* {.pure.} = object
     cbSize*: DWORD
     hWnd*: HWND
     uID*: UINT
     guidItem*: GUID
+
   PNOTIFYICONIDENTIFIER* = ptr NOTIFYICONIDENTIFIER
   OPEN_PRINTER_PROPS_INFOA* {.pure.} = object
     dwSize*: DWORD
@@ -378,6 +394,7 @@
     uSheetIndex*: UINT
     dwFlags*: DWORD
     bModal*: WINBOOL
+
   POPEN_PRINTER_PROPS_INFOA* = ptr OPEN_PRINTER_PROPS_INFOA
   OPEN_PRINTER_PROPS_INFOW* {.pure.} = object
     dwSize*: DWORD
@@ -385,68 +402,106 @@
     uSheetIndex*: UINT
     dwFlags*: DWORD
     bModal*: WINBOOL
+
   POPEN_PRINTER_PROPS_INFOW* = ptr OPEN_PRINTER_PROPS_INFOW
   NC_ADDRESS* {.pure.} = object
     pAddrInfo*: ptr NET_ADDRESS_INFO
     PortNumber*: USHORT
     PrefixLength*: BYTE
+
   PNC_ADDRESS* = ptr NC_ADDRESS
   PHUSKEY* = ptr HUSKEY
   IDefViewID* = IUnknown
   FolderItemVerb* {.pure.} = object
     lpVtbl*: ptr FolderItemVerbVtbl
+
   FolderItemVerbVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_Application*: proc(self: ptr FolderItemVerb, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Parent*: proc(self: ptr FolderItemVerb, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Application*:
+      proc(self: ptr FolderItemVerb, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Parent*:
+      proc(self: ptr FolderItemVerb, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_Name*: proc(self: ptr FolderItemVerb, pbs: ptr BSTR): HRESULT {.stdcall.}
     DoIt*: proc(self: ptr FolderItemVerb): HRESULT {.stdcall.}
+
   FolderItemVerbs* {.pure.} = object
     lpVtbl*: ptr FolderItemVerbsVtbl
+
   FolderItemVerbsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_Count*: proc(self: ptr FolderItemVerbs, plCount: ptr LONG): HRESULT {.stdcall.}
-    get_Application*: proc(self: ptr FolderItemVerbs, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Parent*: proc(self: ptr FolderItemVerbs, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
-    Item*: proc(self: ptr FolderItemVerbs, index: VARIANT, ppid: ptr ptr FolderItemVerb): HRESULT {.stdcall.}
-    NewEnum*: proc(self: ptr FolderItemVerbs, ppunk: ptr ptr IUnknown): HRESULT {.stdcall.}
+    get_Application*:
+      proc(self: ptr FolderItemVerbs, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Parent*:
+      proc(self: ptr FolderItemVerbs, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    Item*: proc(
+      self: ptr FolderItemVerbs, index: VARIANT, ppid: ptr ptr FolderItemVerb
+    ): HRESULT {.stdcall.}
+    NewEnum*:
+      proc(self: ptr FolderItemVerbs, ppunk: ptr ptr IUnknown): HRESULT {.stdcall.}
+
   FolderItem* {.pure.} = object
     lpVtbl*: ptr FolderItemVtbl
+
   FolderItemVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_Application*: proc(self: ptr FolderItem, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Parent*: proc(self: ptr FolderItem, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Application*:
+      proc(self: ptr FolderItem, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Parent*:
+      proc(self: ptr FolderItem, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_Name*: proc(self: ptr FolderItem, pbs: ptr BSTR): HRESULT {.stdcall.}
     put_Name*: proc(self: ptr FolderItem, bs: BSTR): HRESULT {.stdcall.}
     get_Path*: proc(self: ptr FolderItem, pbs: ptr BSTR): HRESULT {.stdcall.}
-    get_GetLink*: proc(self: ptr FolderItem, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_GetFolder*: proc(self: ptr FolderItem, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_GetLink*:
+      proc(self: ptr FolderItem, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_GetFolder*:
+      proc(self: ptr FolderItem, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_IsLink*: proc(self: ptr FolderItem, pb: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_IsFolder*: proc(self: ptr FolderItem, pb: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsFileSystem*: proc(self: ptr FolderItem, pb: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    get_IsBrowsable*: proc(self: ptr FolderItem, pb: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsFileSystem*:
+      proc(self: ptr FolderItem, pb: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_IsBrowsable*:
+      proc(self: ptr FolderItem, pb: ptr VARIANT_BOOL): HRESULT {.stdcall.}
     get_ModifyDate*: proc(self: ptr FolderItem, pdt: ptr DATE): HRESULT {.stdcall.}
     put_ModifyDate*: proc(self: ptr FolderItem, dt: DATE): HRESULT {.stdcall.}
     get_Size*: proc(self: ptr FolderItem, pul: ptr LONG): HRESULT {.stdcall.}
     get_Type*: proc(self: ptr FolderItem, pbs: ptr BSTR): HRESULT {.stdcall.}
-    Verbs*: proc(self: ptr FolderItem, ppfic: ptr ptr FolderItemVerbs): HRESULT {.stdcall.}
+    Verbs*:
+      proc(self: ptr FolderItem, ppfic: ptr ptr FolderItemVerbs): HRESULT {.stdcall.}
     InvokeVerb*: proc(self: ptr FolderItem, vVerb: VARIANT): HRESULT {.stdcall.}
+
   LPFOLDERITEM* = ptr FolderItem
   IAutoComplete* {.pure.} = object
     lpVtbl*: ptr IAutoCompleteVtbl
+
   IAutoCompleteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Init*: proc(self: ptr IAutoComplete, hwndEdit: HWND, punkACL: ptr IUnknown, pwszRegKeyPath: LPCWSTR, pwszQuickComplete: LPCWSTR): HRESULT {.stdcall.}
+    Init*: proc(
+      self: ptr IAutoComplete,
+      hwndEdit: HWND,
+      punkACL: ptr IUnknown,
+      pwszRegKeyPath: LPCWSTR,
+      pwszQuickComplete: LPCWSTR,
+    ): HRESULT {.stdcall.}
     Enable*: proc(self: ptr IAutoComplete, fEnable: WINBOOL): HRESULT {.stdcall.}
+
   LPAUTOCOMPLETE* = ptr IAutoComplete
   IAutoComplete2* {.pure.} = object
     lpVtbl*: ptr IAutoComplete2Vtbl
+
   IAutoComplete2Vtbl* {.pure, inheritable.} = object of IAutoCompleteVtbl
     SetOptions*: proc(self: ptr IAutoComplete2, dwFlag: DWORD): HRESULT {.stdcall.}
     GetOptions*: proc(self: ptr IAutoComplete2, pdwFlag: ptr DWORD): HRESULT {.stdcall.}
+
   LPAUTOCOMPLETE2* = ptr IAutoComplete2
   IEnumACString* {.pure.} = object
     lpVtbl*: ptr IEnumACStringVtbl
+
   IEnumACStringVtbl* {.pure, inheritable.} = object of IEnumStringVtbl
-    NextItem*: proc(self: ptr IEnumACString, pszUrl: LPWSTR, cchMax: ULONG, pulSortIndex: ptr ULONG): HRESULT {.stdcall.}
-    SetEnumOptions*: proc(self: ptr IEnumACString, dwOptions: DWORD): HRESULT {.stdcall.}
-    GetEnumOptions*: proc(self: ptr IEnumACString, pdwOptions: ptr DWORD): HRESULT {.stdcall.}
+    NextItem*: proc(
+      self: ptr IEnumACString, pszUrl: LPWSTR, cchMax: ULONG, pulSortIndex: ptr ULONG
+    ): HRESULT {.stdcall.}
+    SetEnumOptions*:
+      proc(self: ptr IEnumACString, dwOptions: DWORD): HRESULT {.stdcall.}
+    GetEnumOptions*:
+      proc(self: ptr IEnumACString, pdwOptions: ptr DWORD): HRESULT {.stdcall.}
+
   PENUMACSTRING* = ptr IEnumACString
   LPENUMACSTRING* = ptr IEnumACString
   CMINVOKECOMMANDINFO* {.pure.} = object
@@ -459,6 +514,7 @@
     nShow*: int32
     dwHotKey*: DWORD
     hIcon*: HANDLE
+
   LPCMINVOKECOMMANDINFO* = ptr CMINVOKECOMMANDINFO
   PCCMINVOKECOMMANDINFO* = ptr CMINVOKECOMMANDINFO
   CMINVOKECOMMANDINFOEX* {.pure.} = object
@@ -477,68 +533,176 @@
     lpDirectoryW*: LPCWSTR
     lpTitleW*: LPCWSTR
     ptInvoke*: POINT
+
   LPCMINVOKECOMMANDINFOEX* = ptr CMINVOKECOMMANDINFOEX
   PCCMINVOKECOMMANDINFOEX* = ptr CMINVOKECOMMANDINFOEX
   IContextMenu* {.pure.} = object
     lpVtbl*: ptr IContextMenuVtbl
+
   IContextMenuVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QueryContextMenu*: proc(self: ptr IContextMenu, hmenu: HMENU, indexMenu: UINT, idCmdFirst: UINT, idCmdLast: UINT, uFlags: UINT): HRESULT {.stdcall.}
-    InvokeCommand*: proc(self: ptr IContextMenu, pici: ptr CMINVOKECOMMANDINFO): HRESULT {.stdcall.}
-    GetCommandString*: proc(self: ptr IContextMenu, idCmd: UINT_PTR, uType: UINT, pReserved: ptr UINT, pszName: ptr CHAR, cchMax: UINT): HRESULT {.stdcall.}
+    QueryContextMenu*: proc(
+      self: ptr IContextMenu,
+      hmenu: HMENU,
+      indexMenu: UINT,
+      idCmdFirst: UINT,
+      idCmdLast: UINT,
+      uFlags: UINT,
+    ): HRESULT {.stdcall.}
+    InvokeCommand*:
+      proc(self: ptr IContextMenu, pici: ptr CMINVOKECOMMANDINFO): HRESULT {.stdcall.}
+    GetCommandString*: proc(
+      self: ptr IContextMenu,
+      idCmd: UINT_PTR,
+      uType: UINT,
+      pReserved: ptr UINT,
+      pszName: ptr CHAR,
+      cchMax: UINT,
+    ): HRESULT {.stdcall.}
+
   LPCONTEXTMENU* = ptr IContextMenu
   IContextMenu2* {.pure.} = object
     lpVtbl*: ptr IContextMenu2Vtbl
+
   IContextMenu2Vtbl* {.pure, inheritable.} = object of IContextMenuVtbl
-    HandleMenuMsg*: proc(self: ptr IContextMenu2, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.stdcall.}
+    HandleMenuMsg*: proc(
+      self: ptr IContextMenu2, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+    ): HRESULT {.stdcall.}
+
   LPCONTEXTMENU2* = ptr IContextMenu2
   IContextMenu3* {.pure.} = object
     lpVtbl*: ptr IContextMenu3Vtbl
+
   IContextMenu3Vtbl* {.pure, inheritable.} = object of IContextMenu2Vtbl
-    HandleMenuMsg2*: proc(self: ptr IContextMenu3, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.stdcall.}
+    HandleMenuMsg2*: proc(
+      self: ptr IContextMenu3,
+      uMsg: UINT,
+      wParam: WPARAM,
+      lParam: LPARAM,
+      plResult: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+
   LPCONTEXTMENU3* = ptr IContextMenu3
   IPersistFolder* {.pure.} = object
     lpVtbl*: ptr IPersistFolderVtbl
+
   IPersistFolderVtbl* {.pure, inheritable.} = object of IPersistVtbl
-    Initialize*: proc(self: ptr IPersistFolder, pidl: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+    Initialize*:
+      proc(self: ptr IPersistFolder, pidl: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+
   LPPERSISTFOLDER* = ptr IPersistFolder
   IEnumIDList* {.pure.} = object
     lpVtbl*: ptr IEnumIDListVtbl
+
   IEnumIDListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumIDList, celt: ULONG, rgelt: ptr PITEMID_CHILD, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumIDList,
+      celt: ULONG,
+      rgelt: ptr PITEMID_CHILD,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumIDList, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumIDList): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumIDList, ppenum: ptr ptr IEnumIDList): HRESULT {.stdcall.}
+    Clone*:
+      proc(self: ptr IEnumIDList, ppenum: ptr ptr IEnumIDList): HRESULT {.stdcall.}
+
   LPENUMIDLIST* = ptr IEnumIDList
   IShellFolder* {.pure.} = object
     lpVtbl*: ptr IShellFolderVtbl
+
   IShellFolderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ParseDisplayName*: proc(self: ptr IShellFolder, hwnd: HWND, pbc: ptr IBindCtx, pszDisplayName: LPWSTR, pchEaten: ptr ULONG, ppidl: ptr PIDLIST_RELATIVE, pdwAttributes: ptr ULONG): HRESULT {.stdcall.}
-    EnumObjects*: proc(self: ptr IShellFolder, hwnd: HWND, grfFlags: SHCONTF, ppenumIDList: ptr ptr IEnumIDList): HRESULT {.stdcall.}
-    BindToObject*: proc(self: ptr IShellFolder, pidl: PCUIDLIST_RELATIVE, pbc: ptr IBindCtx, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    BindToStorage*: proc(self: ptr IShellFolder, pidl: PCUIDLIST_RELATIVE, pbc: ptr IBindCtx, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    CompareIDs*: proc(self: ptr IShellFolder, lParam: LPARAM, pidl1: PCUIDLIST_RELATIVE, pidl2: PCUIDLIST_RELATIVE): HRESULT {.stdcall.}
-    CreateViewObject*: proc(self: ptr IShellFolder, hwndOwner: HWND, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetAttributesOf*: proc(self: ptr IShellFolder, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, rgfInOut: ptr SFGAOF): HRESULT {.stdcall.}
-    GetUIObjectOf*: proc(self: ptr IShellFolder, hwndOwner: HWND, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, riid: REFIID, rgfReserved: ptr UINT, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetDisplayNameOf*: proc(self: ptr IShellFolder, pidl: PCUITEMID_CHILD, uFlags: SHGDNF, pName: ptr STRRET): HRESULT {.stdcall.}
-    SetNameOf*: proc(self: ptr IShellFolder, hwnd: HWND, pidl: PCUITEMID_CHILD, pszName: LPCWSTR, uFlags: SHGDNF, ppidlOut: ptr PITEMID_CHILD): HRESULT {.stdcall.}
+    ParseDisplayName*: proc(
+      self: ptr IShellFolder,
+      hwnd: HWND,
+      pbc: ptr IBindCtx,
+      pszDisplayName: LPWSTR,
+      pchEaten: ptr ULONG,
+      ppidl: ptr PIDLIST_RELATIVE,
+      pdwAttributes: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    EnumObjects*: proc(
+      self: ptr IShellFolder,
+      hwnd: HWND,
+      grfFlags: SHCONTF,
+      ppenumIDList: ptr ptr IEnumIDList,
+    ): HRESULT {.stdcall.}
+    BindToObject*: proc(
+      self: ptr IShellFolder,
+      pidl: PCUIDLIST_RELATIVE,
+      pbc: ptr IBindCtx,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    BindToStorage*: proc(
+      self: ptr IShellFolder,
+      pidl: PCUIDLIST_RELATIVE,
+      pbc: ptr IBindCtx,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    CompareIDs*: proc(
+      self: ptr IShellFolder,
+      lParam: LPARAM,
+      pidl1: PCUIDLIST_RELATIVE,
+      pidl2: PCUIDLIST_RELATIVE,
+    ): HRESULT {.stdcall.}
+    CreateViewObject*: proc(
+      self: ptr IShellFolder, hwndOwner: HWND, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    GetAttributesOf*: proc(
+      self: ptr IShellFolder,
+      cidl: UINT,
+      apidl: PCUITEMID_CHILD_ARRAY,
+      rgfInOut: ptr SFGAOF,
+    ): HRESULT {.stdcall.}
+    GetUIObjectOf*: proc(
+      self: ptr IShellFolder,
+      hwndOwner: HWND,
+      cidl: UINT,
+      apidl: PCUITEMID_CHILD_ARRAY,
+      riid: REFIID,
+      rgfReserved: ptr UINT,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetDisplayNameOf*: proc(
+      self: ptr IShellFolder, pidl: PCUITEMID_CHILD, uFlags: SHGDNF, pName: ptr STRRET
+    ): HRESULT {.stdcall.}
+    SetNameOf*: proc(
+      self: ptr IShellFolder,
+      hwnd: HWND,
+      pidl: PCUITEMID_CHILD,
+      pszName: LPCWSTR,
+      uFlags: SHGDNF,
+      ppidlOut: ptr PITEMID_CHILD,
+    ): HRESULT {.stdcall.}
+
   LPSHELLFOLDER* = ptr IShellFolder
   EXTRASEARCH* {.pure.} = object
     guidSearch*: GUID
     wszFriendlyName*: array[80, WCHAR]
     wszUrl*: array[2084, WCHAR]
+
   LPEXTRASEARCH* = ptr EXTRASEARCH
   IEnumExtraSearch* {.pure.} = object
     lpVtbl*: ptr IEnumExtraSearchVtbl
+
   IEnumExtraSearchVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumExtraSearch, celt: ULONG, rgelt: ptr EXTRASEARCH, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumExtraSearch,
+      celt: ULONG,
+      rgelt: ptr EXTRASEARCH,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumExtraSearch, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumExtraSearch): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumExtraSearch, ppenum: ptr ptr IEnumExtraSearch): HRESULT {.stdcall.}
+    Clone*: proc(self: ptr IEnumExtraSearch, ppenum: ptr ptr IEnumExtraSearch): HRESULT {.
+      stdcall
+    .}
+
   LPENUMEXTRASEARCH* = ptr IEnumExtraSearch
   FOLDERSETTINGS* {.pure.} = object
     ViewMode*: UINT
     fFlags*: UINT
+
   LPFOLDERSETTINGS* = ptr FOLDERSETTINGS
   LPCFOLDERSETTINGS* = ptr FOLDERSETTINGS
   PFOLDERSETTINGS* = ptr FOLDERSETTINGS
@@ -546,34 +710,83 @@
   LPTBBUTTONSB* = LPTBBUTTON
   IShellBrowser* {.pure.} = object
     lpVtbl*: ptr IShellBrowserVtbl
+
   IShellBrowserVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
-    InsertMenusSB*: proc(self: ptr IShellBrowser, hmenuShared: HMENU, lpMenuWidths: LPOLEMENUGROUPWIDTHS): HRESULT {.stdcall.}
-    SetMenuSB*: proc(self: ptr IShellBrowser, hmenuShared: HMENU, holemenuRes: HOLEMENU, hwndActiveObject: HWND): HRESULT {.stdcall.}
-    RemoveMenusSB*: proc(self: ptr IShellBrowser, hmenuShared: HMENU): HRESULT {.stdcall.}
-    SetStatusTextSB*: proc(self: ptr IShellBrowser, pszStatusText: LPCWSTR): HRESULT {.stdcall.}
-    EnableModelessSB*: proc(self: ptr IShellBrowser, fEnable: WINBOOL): HRESULT {.stdcall.}
-    TranslateAcceleratorSB*: proc(self: ptr IShellBrowser, pmsg: ptr MSG, wID: WORD): HRESULT {.stdcall.}
-    BrowseObject*: proc(self: ptr IShellBrowser, pidl: PCUIDLIST_RELATIVE, wFlags: UINT): HRESULT {.stdcall.}
-    GetViewStateStream*: proc(self: ptr IShellBrowser, grfMode: DWORD, ppStrm: ptr ptr IStream): HRESULT {.stdcall.}
-    GetControlWindow*: proc(self: ptr IShellBrowser, id: UINT, phwnd: ptr HWND): HRESULT {.stdcall.}
-    SendControlMsg*: proc(self: ptr IShellBrowser, id: UINT, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, pret: ptr LRESULT): HRESULT {.stdcall.}
-    QueryActiveShellView*: proc(self: ptr IShellBrowser, ppshv: ptr ptr IShellView): HRESULT {.stdcall.}
-    OnViewWindowActive*: proc(self: ptr IShellBrowser, pshv: ptr IShellView): HRESULT {.stdcall.}
-    SetToolbarItems*: proc(self: ptr IShellBrowser, lpButtons: LPTBBUTTONSB, nButtons: UINT, uFlags: UINT): HRESULT {.stdcall.}
+    InsertMenusSB*: proc(
+      self: ptr IShellBrowser, hmenuShared: HMENU, lpMenuWidths: LPOLEMENUGROUPWIDTHS
+    ): HRESULT {.stdcall.}
+    SetMenuSB*: proc(
+      self: ptr IShellBrowser,
+      hmenuShared: HMENU,
+      holemenuRes: HOLEMENU,
+      hwndActiveObject: HWND,
+    ): HRESULT {.stdcall.}
+    RemoveMenusSB*:
+      proc(self: ptr IShellBrowser, hmenuShared: HMENU): HRESULT {.stdcall.}
+    SetStatusTextSB*:
+      proc(self: ptr IShellBrowser, pszStatusText: LPCWSTR): HRESULT {.stdcall.}
+    EnableModelessSB*:
+      proc(self: ptr IShellBrowser, fEnable: WINBOOL): HRESULT {.stdcall.}
+    TranslateAcceleratorSB*:
+      proc(self: ptr IShellBrowser, pmsg: ptr MSG, wID: WORD): HRESULT {.stdcall.}
+    BrowseObject*: proc(
+      self: ptr IShellBrowser, pidl: PCUIDLIST_RELATIVE, wFlags: UINT
+    ): HRESULT {.stdcall.}
+    GetViewStateStream*: proc(
+      self: ptr IShellBrowser, grfMode: DWORD, ppStrm: ptr ptr IStream
+    ): HRESULT {.stdcall.}
+    GetControlWindow*:
+      proc(self: ptr IShellBrowser, id: UINT, phwnd: ptr HWND): HRESULT {.stdcall.}
+    SendControlMsg*: proc(
+      self: ptr IShellBrowser,
+      id: UINT,
+      uMsg: UINT,
+      wParam: WPARAM,
+      lParam: LPARAM,
+      pret: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+    QueryActiveShellView*:
+      proc(self: ptr IShellBrowser, ppshv: ptr ptr IShellView): HRESULT {.stdcall.}
+    OnViewWindowActive*:
+      proc(self: ptr IShellBrowser, pshv: ptr IShellView): HRESULT {.stdcall.}
+    SetToolbarItems*: proc(
+      self: ptr IShellBrowser, lpButtons: LPTBBUTTONSB, nButtons: UINT, uFlags: UINT
+    ): HRESULT {.stdcall.}
+
   IShellView* {.pure.} = object
     lpVtbl*: ptr IShellViewVtbl
+
   IShellViewVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
-    TranslateAccelerator*: proc(self: ptr IShellView, pmsg: ptr MSG): HRESULT {.stdcall.}
+    TranslateAccelerator*:
+      proc(self: ptr IShellView, pmsg: ptr MSG): HRESULT {.stdcall.}
     EnableModeless*: proc(self: ptr IShellView, fEnable: WINBOOL): HRESULT {.stdcall.}
     UIActivate*: proc(self: ptr IShellView, uState: UINT): HRESULT {.stdcall.}
     Refresh*: proc(self: ptr IShellView): HRESULT {.stdcall.}
-    CreateViewWindow*: proc(self: ptr IShellView, psvPrevious: ptr IShellView, pfs: LPCFOLDERSETTINGS, psb: ptr IShellBrowser, prcView: ptr RECT, phWnd: ptr HWND): HRESULT {.stdcall.}
+    CreateViewWindow*: proc(
+      self: ptr IShellView,
+      psvPrevious: ptr IShellView,
+      pfs: LPCFOLDERSETTINGS,
+      psb: ptr IShellBrowser,
+      prcView: ptr RECT,
+      phWnd: ptr HWND,
+    ): HRESULT {.stdcall.}
     DestroyViewWindow*: proc(self: ptr IShellView): HRESULT {.stdcall.}
-    GetCurrentInfo*: proc(self: ptr IShellView, pfs: LPFOLDERSETTINGS): HRESULT {.stdcall.}
-    AddPropertySheetPages*: proc(self: ptr IShellView, dwReserved: DWORD, pfn: LPFNSVADDPROPSHEETPAGE, lparam: LPARAM): HRESULT {.stdcall.}
+    GetCurrentInfo*:
+      proc(self: ptr IShellView, pfs: LPFOLDERSETTINGS): HRESULT {.stdcall.}
+    AddPropertySheetPages*: proc(
+      self: ptr IShellView,
+      dwReserved: DWORD,
+      pfn: LPFNSVADDPROPSHEETPAGE,
+      lparam: LPARAM,
+    ): HRESULT {.stdcall.}
     SaveViewState*: proc(self: ptr IShellView): HRESULT {.stdcall.}
-    SelectItem*: proc(self: ptr IShellView, pidlItem: PCUITEMID_CHILD, uFlags: SVSIF): HRESULT {.stdcall.}
-    GetItemObject*: proc(self: ptr IShellView, uItem: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    SelectItem*: proc(
+      self: ptr IShellView, pidlItem: PCUITEMID_CHILD, uFlags: SVSIF
+    ): HRESULT {.stdcall.}
+    GetItemObject*: proc(
+      self: ptr IShellView, uItem: UINT, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+
   LPSHELLVIEW* = ptr IShellView
   SHELLVIEWID* = GUID
   SV2CVW2_PARAMS* {.pure.} = object
@@ -584,21 +797,36 @@
     prcView*: ptr RECT
     pvid*: ptr SHELLVIEWID
     hwndView*: HWND
+
   LPSV2CVW2_PARAMS* = ptr SV2CVW2_PARAMS
   DEPRECATED_HRESULT* = HRESULT
   ICommDlgBrowser* {.pure.} = object
     lpVtbl*: ptr ICommDlgBrowserVtbl
+
   ICommDlgBrowserVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnDefaultCommand*: proc(self: ptr ICommDlgBrowser, ppshv: ptr IShellView): HRESULT {.stdcall.}
-    OnStateChange*: proc(self: ptr ICommDlgBrowser, ppshv: ptr IShellView, uChange: ULONG): HRESULT {.stdcall.}
-    IncludeObject*: proc(self: ptr ICommDlgBrowser, ppshv: ptr IShellView, pidl: PCUITEMID_CHILD): HRESULT {.stdcall.}
+    OnDefaultCommand*:
+      proc(self: ptr ICommDlgBrowser, ppshv: ptr IShellView): HRESULT {.stdcall.}
+    OnStateChange*: proc(
+      self: ptr ICommDlgBrowser, ppshv: ptr IShellView, uChange: ULONG
+    ): HRESULT {.stdcall.}
+    IncludeObject*: proc(
+      self: ptr ICommDlgBrowser, ppshv: ptr IShellView, pidl: PCUITEMID_CHILD
+    ): HRESULT {.stdcall.}
+
   LPCOMMDLGBROWSER* = ptr ICommDlgBrowser
   ICommDlgBrowser2* {.pure.} = object
     lpVtbl*: ptr ICommDlgBrowser2Vtbl
+
   ICommDlgBrowser2Vtbl* {.pure, inheritable.} = object of ICommDlgBrowserVtbl
-    Notify*: proc(self: ptr ICommDlgBrowser2, ppshv: ptr IShellView, dwNotifyType: DWORD): HRESULT {.stdcall.}
-    GetDefaultMenuText*: proc(self: ptr ICommDlgBrowser2, ppshv: ptr IShellView, pszText: LPWSTR, cchMax: int32): HRESULT {.stdcall.}
-    GetViewFlags*: proc(self: ptr ICommDlgBrowser2, pdwFlags: ptr DWORD): HRESULT {.stdcall.}
+    Notify*: proc(
+      self: ptr ICommDlgBrowser2, ppshv: ptr IShellView, dwNotifyType: DWORD
+    ): HRESULT {.stdcall.}
+    GetDefaultMenuText*: proc(
+      self: ptr ICommDlgBrowser2, ppshv: ptr IShellView, pszText: LPWSTR, cchMax: int32
+    ): HRESULT {.stdcall.}
+    GetViewFlags*:
+      proc(self: ptr ICommDlgBrowser2, pdwFlags: ptr DWORD): HRESULT {.stdcall.}
+
   LPCOMMDLGBROWSER2* = ptr ICommDlgBrowser2
   LPSHELLBROWSER* = ptr IShellBrowser
   STGTRANSCONFIRMATION* = GUID
@@ -608,29 +836,60 @@
     ptOffset*: POINT
     hbmpDragImage*: HBITMAP
     crColorKey*: COLORREF
+
   LPSHDRAGIMAGE* = ptr SHDRAGIMAGE
   IShellExtInit* {.pure.} = object
     lpVtbl*: ptr IShellExtInitVtbl
+
   IShellExtInitVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IShellExtInit, pidlFolder: PCIDLIST_ABSOLUTE, pdtobj: ptr IDataObject, hkeyProgID: HKEY): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IShellExtInit,
+      pidlFolder: PCIDLIST_ABSOLUTE,
+      pdtobj: ptr IDataObject,
+      hkeyProgID: HKEY,
+    ): HRESULT {.stdcall.}
+
   LPSHELLEXTINIT* = ptr IShellExtInit
   EXPPS* = UINT
   IShellPropSheetExt* {.pure.} = object
     lpVtbl*: ptr IShellPropSheetExtVtbl
+
   IShellPropSheetExtVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AddPages*: proc(self: ptr IShellPropSheetExt, pfnAddPage: LPFNSVADDPROPSHEETPAGE, lParam: LPARAM): HRESULT {.stdcall.}
-    ReplacePage*: proc(self: ptr IShellPropSheetExt, uPageID: EXPPS, pfnReplaceWith: LPFNSVADDPROPSHEETPAGE, lParam: LPARAM): HRESULT {.stdcall.}
+    AddPages*: proc(
+      self: ptr IShellPropSheetExt, pfnAddPage: LPFNSVADDPROPSHEETPAGE, lParam: LPARAM
+    ): HRESULT {.stdcall.}
+    ReplacePage*: proc(
+      self: ptr IShellPropSheetExt,
+      uPageID: EXPPS,
+      pfnReplaceWith: LPFNSVADDPROPSHEETPAGE,
+      lParam: LPARAM,
+    ): HRESULT {.stdcall.}
+
   LPSHELLPROPSHEETEXT* = ptr IShellPropSheetExt
   IExtractImage* {.pure.} = object
     lpVtbl*: ptr IExtractImageVtbl
+
   IExtractImageVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetLocation*: proc(self: ptr IExtractImage, pszPathBuffer: LPWSTR, cch: DWORD, pdwPriority: ptr DWORD, prgSize: ptr SIZE, dwRecClrDepth: DWORD, pdwFlags: ptr DWORD): HRESULT {.stdcall.}
-    Extract*: proc(self: ptr IExtractImage, phBmpThumbnail: ptr HBITMAP): HRESULT {.stdcall.}
+    GetLocation*: proc(
+      self: ptr IExtractImage,
+      pszPathBuffer: LPWSTR,
+      cch: DWORD,
+      pdwPriority: ptr DWORD,
+      prgSize: ptr SIZE,
+      dwRecClrDepth: DWORD,
+      pdwFlags: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    Extract*:
+      proc(self: ptr IExtractImage, phBmpThumbnail: ptr HBITMAP): HRESULT {.stdcall.}
+
   LPEXTRACTIMAGE* = ptr IExtractImage
   IExtractImage2* {.pure.} = object
     lpVtbl*: ptr IExtractImage2Vtbl
+
   IExtractImage2Vtbl* {.pure, inheritable.} = object of IExtractImageVtbl
-    GetDateStamp*: proc(self: ptr IExtractImage2, pDateStamp: ptr FILETIME): HRESULT {.stdcall.}
+    GetDateStamp*:
+      proc(self: ptr IExtractImage2, pDateStamp: ptr FILETIME): HRESULT {.stdcall.}
+
   LPEXTRACTIMAGE2* = ptr IExtractImage2
   THUMBBUTTON* {.pure.} = object
     dwMask*: THUMBBUTTONMASK
@@ -639,18 +898,26 @@
     hIcon*: HICON
     szTip*: array[260, WCHAR]
     dwFlags*: THUMBBUTTONFLAGS
+
   LPTHUMBBUTTON* = ptr THUMBBUTTON
   DELEGATEITEMID* {.pure, packed.} = object
     cbSize*: WORD
     wOuter*: WORD
     cbInner*: WORD
     rgb*: array[1, BYTE]
+
   PCDELEGATEITEMID* = ptr DELEGATEITEMID
   PDELEGATEITEMID* = ptr DELEGATEITEMID
   IBrowserFrameOptions* {.pure.} = object
     lpVtbl*: ptr IBrowserFrameOptionsVtbl
+
   IBrowserFrameOptionsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetFrameOptions*: proc(self: ptr IBrowserFrameOptions, dwMask: BROWSERFRAMEOPTIONS, pdwOptions: ptr BROWSERFRAMEOPTIONS): HRESULT {.stdcall.}
+    GetFrameOptions*: proc(
+      self: ptr IBrowserFrameOptions,
+      dwMask: BROWSERFRAMEOPTIONS,
+      pdwOptions: ptr BROWSERFRAMEOPTIONS,
+    ): HRESULT {.stdcall.}
+
   LPBROWSERFRAMEOPTIONS* = ptr IBrowserFrameOptions
   SMDATA* {.pure.} = object
     dwMask*: DWORD
@@ -665,30 +932,65 @@
     pidlItem*: PUITEMID_CHILD
     psf*: ptr IShellFolder
     pvUserData*: pointer
+
   LPSMDATA* = ptr SMDATA
   SMINFO* {.pure.} = object
     dwMask*: DWORD
     dwType*: DWORD
     dwFlags*: DWORD
     iIcon*: int32
+
   PSMINFO* = ptr SMINFO
   EXPLORERPANE* = GUID
   REFEXPLORERPANE* = ptr EXPLORERPANE
   IExtractIconA* {.pure.} = object
     lpVtbl*: ptr IExtractIconAVtbl
+
   IExtractIconAVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetIconLocation*: proc(self: ptr IExtractIconA, uFlags: UINT, pszIconFile: PSTR, cchMax: UINT, piIndex: ptr int32, pwFlags: ptr UINT): HRESULT {.stdcall.}
-    Extract*: proc(self: ptr IExtractIconA, pszFile: PCSTR, nIconIndex: UINT, phiconLarge: ptr HICON, phiconSmall: ptr HICON, nIconSize: UINT): HRESULT {.stdcall.}
+    GetIconLocation*: proc(
+      self: ptr IExtractIconA,
+      uFlags: UINT,
+      pszIconFile: PSTR,
+      cchMax: UINT,
+      piIndex: ptr int32,
+      pwFlags: ptr UINT,
+    ): HRESULT {.stdcall.}
+    Extract*: proc(
+      self: ptr IExtractIconA,
+      pszFile: PCSTR,
+      nIconIndex: UINT,
+      phiconLarge: ptr HICON,
+      phiconSmall: ptr HICON,
+      nIconSize: UINT,
+    ): HRESULT {.stdcall.}
+
   LPEXTRACTICONA* = ptr IExtractIconA
   IExtractIconW* {.pure.} = object
     lpVtbl*: ptr IExtractIconWVtbl
+
   IExtractIconWVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetIconLocation*: proc(self: ptr IExtractIconW, uFlags: UINT, pszIconFile: PWSTR, cchMax: UINT, piIndex: ptr int32, pwFlags: ptr UINT): HRESULT {.stdcall.}
-    Extract*: proc(self: ptr IExtractIconW, pszFile: PCWSTR, nIconIndex: UINT, phiconLarge: ptr HICON, phiconSmall: ptr HICON, nIconSize: UINT): HRESULT {.stdcall.}
+    GetIconLocation*: proc(
+      self: ptr IExtractIconW,
+      uFlags: UINT,
+      pszIconFile: PWSTR,
+      cchMax: UINT,
+      piIndex: ptr int32,
+      pwFlags: ptr UINT,
+    ): HRESULT {.stdcall.}
+    Extract*: proc(
+      self: ptr IExtractIconW,
+      pszFile: PCWSTR,
+      nIconIndex: UINT,
+      phiconLarge: ptr HICON,
+      phiconSmall: ptr HICON,
+      nIconSize: UINT,
+    ): HRESULT {.stdcall.}
+
   LPEXTRACTICONW* = ptr IExtractIconW
   DATABLOCK_HEADER* {.pure.} = object
     cbSize*: DWORD
     dwSignature*: DWORD
+
   LPDATABLOCK_HEADER* = ptr DATABLOCK_HEADER
   LPDBLIST* = ptr DATABLOCK_HEADER
   NT_CONSOLE_PROPS* {.pure.} = object
@@ -713,43 +1015,73 @@
     uNumberOfHistoryBuffers*: UINT
     bHistoryNoDup*: WINBOOL
     ColorTable*: array[16, COLORREF]
+
   LPNT_CONSOLE_PROPS* = ptr NT_CONSOLE_PROPS
   NT_FE_CONSOLE_PROPS* {.pure.} = object
     dbh*: DATABLOCK_HEADER
     uCodePage*: UINT
+
   LPNT_FE_CONSOLE_PROPS* = ptr NT_FE_CONSOLE_PROPS
   EXP_DARWIN_LINK* {.pure.} = object
     dbh*: DATABLOCK_HEADER
     szDarwinID*: array[MAX_PATH, CHAR]
     szwDarwinID*: array[MAX_PATH, WCHAR]
+
   LPEXP_DARWIN_LINK* = ptr EXP_DARWIN_LINK
   EXP_SPECIAL_FOLDER* {.pure.} = object
     cbSize*: DWORD
     dwSignature*: DWORD
     idSpecialFolder*: DWORD
     cbOffset*: DWORD
+
   LPEXP_SPECIAL_FOLDER* = ptr EXP_SPECIAL_FOLDER
   EXP_SZ_LINK* {.pure.} = object
     cbSize*: DWORD
     dwSignature*: DWORD
     szTarget*: array[MAX_PATH, CHAR]
     swzTarget*: array[MAX_PATH, WCHAR]
+
   LPEXP_SZ_LINK* = ptr EXP_SZ_LINK
   ICopyHookA* {.pure.} = object
     lpVtbl*: ptr ICopyHookAVtbl
+
   ICopyHookAVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CopyCallback*: proc(self: ptr ICopyHookA, hwnd: HWND, wFunc: UINT, wFlags: UINT, pszSrcFile: PCSTR, dwSrcAttribs: DWORD, pszDestFile: PCSTR, dwDestAttribs: DWORD): UINT {.stdcall.}
+    CopyCallback*: proc(
+      self: ptr ICopyHookA,
+      hwnd: HWND,
+      wFunc: UINT,
+      wFlags: UINT,
+      pszSrcFile: PCSTR,
+      dwSrcAttribs: DWORD,
+      pszDestFile: PCSTR,
+      dwDestAttribs: DWORD,
+    ): UINT {.stdcall.}
+
   LPCOPYHOOKA* = ptr ICopyHookA
   ICopyHookW* {.pure.} = object
     lpVtbl*: ptr ICopyHookWVtbl
+
   ICopyHookWVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CopyCallback*: proc(self: ptr ICopyHookW, hwnd: HWND, wFunc: UINT, wFlags: UINT, pszSrcFile: PCWSTR, dwSrcAttribs: DWORD, pszDestFile: PCWSTR, dwDestAttribs: DWORD): UINT {.stdcall.}
+    CopyCallback*: proc(
+      self: ptr ICopyHookW,
+      hwnd: HWND,
+      wFunc: UINT,
+      wFlags: UINT,
+      pszSrcFile: PCWSTR,
+      dwSrcAttribs: DWORD,
+      pszDestFile: PCWSTR,
+      dwDestAttribs: DWORD,
+    ): UINT {.stdcall.}
+
   LPCOPYHOOKW* = ptr ICopyHookW
   IFileViewerSite* {.pure.} = object
     lpVtbl*: ptr IFileViewerSiteVtbl
+
   IFileViewerSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SetPinnedWindow*: proc(self: ptr IFileViewerSite, hwnd: HWND): HRESULT {.stdcall.}
-    GetPinnedWindow*: proc(self: ptr IFileViewerSite, phwnd: ptr HWND): HRESULT {.stdcall.}
+    GetPinnedWindow*:
+      proc(self: ptr IFileViewerSite, phwnd: ptr HWND): HRESULT {.stdcall.}
+
   LPFILEVIEWERSITE* = ptr IFileViewerSite
   FVSHOWINFO* {.pure.} = object
     cbSize*: DWORD
@@ -759,20 +1091,31 @@
     rect*: RECT
     punkRel*: ptr IUnknown
     strNewFile*: array[MAX_PATH, OLECHAR]
+
   LPFVSHOWINFO* = ptr FVSHOWINFO
   IFileViewerA* {.pure.} = object
     lpVtbl*: ptr IFileViewerAVtbl
+
   IFileViewerAVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ShowInitialize*: proc(self: ptr IFileViewerA, lpfsi: LPFILEVIEWERSITE): HRESULT {.stdcall.}
+    ShowInitialize*:
+      proc(self: ptr IFileViewerA, lpfsi: LPFILEVIEWERSITE): HRESULT {.stdcall.}
     Show*: proc(self: ptr IFileViewerA, pvsi: LPFVSHOWINFO): HRESULT {.stdcall.}
-    PrintTo*: proc(self: ptr IFileViewerA, pszDriver: PSTR, fSuppressUI: WINBOOL): HRESULT {.stdcall.}
+    PrintTo*: proc(
+      self: ptr IFileViewerA, pszDriver: PSTR, fSuppressUI: WINBOOL
+    ): HRESULT {.stdcall.}
+
   LPFILEVIEWERA* = ptr IFileViewerA
   IFileViewerW* {.pure.} = object
     lpVtbl*: ptr IFileViewerWVtbl
+
   IFileViewerWVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ShowInitialize*: proc(self: ptr IFileViewerW, lpfsi: LPFILEVIEWERSITE): HRESULT {.stdcall.}
+    ShowInitialize*:
+      proc(self: ptr IFileViewerW, lpfsi: LPFILEVIEWERSITE): HRESULT {.stdcall.}
     Show*: proc(self: ptr IFileViewerW, pvsi: LPFVSHOWINFO): HRESULT {.stdcall.}
-    PrintTo*: proc(self: ptr IFileViewerW, pszDriver: PWSTR, fSuppressUI: WINBOOL): HRESULT {.stdcall.}
+    PrintTo*: proc(
+      self: ptr IFileViewerW, pszDriver: PWSTR, fSuppressUI: WINBOOL
+    ): HRESULT {.stdcall.}
+
   LPFILEVIEWERW* = ptr IFileViewerW
   SHFOLDERCUSTOMSETTINGS* {.pure.} = object
     dwSize*: DWORD
@@ -790,8 +1133,10 @@
     iIconIndex*: int32
     pszLogo*: LPWSTR
     cchLogo*: DWORD
+
   LPSHFOLDERCUSTOMSETTINGS* = ptr SHFOLDERCUSTOMSETTINGS
-  BFFCALLBACK* = proc (hwnd: HWND, uMsg: UINT, lParam: LPARAM, lpData: LPARAM): int32 {.stdcall.}
+  BFFCALLBACK* =
+    proc(hwnd: HWND, uMsg: UINT, lParam: LPARAM, lpData: LPARAM): int32 {.stdcall.}
   BROWSEINFOA* {.pure.} = object
     hwndOwner*: HWND
     pidlRoot*: PCIDLIST_ABSOLUTE
@@ -801,6 +1146,7 @@
     lpfn*: BFFCALLBACK
     lParam*: LPARAM
     iImage*: int32
+
   PBROWSEINFOA* = ptr BROWSEINFOA
   LPBROWSEINFOA* = ptr BROWSEINFOA
   BROWSEINFOW* {.pure.} = object
@@ -812,41 +1158,79 @@
     lpfn*: BFFCALLBACK
     lParam*: LPARAM
     iImage*: int32
+
   PBROWSEINFOW* = ptr BROWSEINFOW
   LPBROWSEINFOW* = ptr BROWSEINFOW
   IThumbnailCapture* {.pure.} = object
     lpVtbl*: ptr IThumbnailCaptureVtbl
+
   IThumbnailCaptureVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CaptureThumbnail*: proc(self: ptr IThumbnailCapture, pMaxSize: ptr SIZE, pHTMLDoc2: ptr IUnknown, phbmThumbnail: ptr HBITMAP): HRESULT {.stdcall.}
+    CaptureThumbnail*: proc(
+      self: ptr IThumbnailCapture,
+      pMaxSize: ptr SIZE,
+      pHTMLDoc2: ptr IUnknown,
+      phbmThumbnail: ptr HBITMAP,
+    ): HRESULT {.stdcall.}
+
   LPTHUMBNAILCAPTURE* = ptr IThumbnailCapture
   ENUMSHELLIMAGESTOREDATA* {.pure.} = object
     szPath*: array[MAX_PATH, WCHAR]
     ftTimeStamp*: FILETIME
+
   PENUMSHELLIMAGESTOREDATA* = ptr ENUMSHELLIMAGESTOREDATA
   IEnumShellImageStore* {.pure.} = object
     lpVtbl*: ptr IEnumShellImageStoreVtbl
+
   IEnumShellImageStoreVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Reset*: proc(self: ptr IEnumShellImageStore): HRESULT {.stdcall.}
-    Next*: proc(self: ptr IEnumShellImageStore, celt: ULONG, prgElt: ptr PENUMSHELLIMAGESTOREDATA, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumShellImageStore,
+      celt: ULONG,
+      prgElt: ptr PENUMSHELLIMAGESTOREDATA,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumShellImageStore, celt: ULONG): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumShellImageStore, ppEnum: ptr ptr IEnumShellImageStore): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr IEnumShellImageStore, ppEnum: ptr ptr IEnumShellImageStore
+    ): HRESULT {.stdcall.}
+
   LPENUMSHELLIMAGESTORE* = ptr IEnumShellImageStore
   IShellImageStore* {.pure.} = object
     lpVtbl*: ptr IShellImageStoreVtbl
+
   IShellImageStoreVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Open*: proc(self: ptr IShellImageStore, dwMode: DWORD, pdwLock: ptr DWORD): HRESULT {.stdcall.}
-    Create*: proc(self: ptr IShellImageStore, dwMode: DWORD, pdwLock: ptr DWORD): HRESULT {.stdcall.}
-    ReleaseLock*: proc(self: ptr IShellImageStore, pdwLock: ptr DWORD): HRESULT {.stdcall.}
+    Open*: proc(self: ptr IShellImageStore, dwMode: DWORD, pdwLock: ptr DWORD): HRESULT {.
+      stdcall
+    .}
+    Create*: proc(
+      self: ptr IShellImageStore, dwMode: DWORD, pdwLock: ptr DWORD
+    ): HRESULT {.stdcall.}
+    ReleaseLock*:
+      proc(self: ptr IShellImageStore, pdwLock: ptr DWORD): HRESULT {.stdcall.}
     Close*: proc(self: ptr IShellImageStore, pdwLock: ptr DWORD): HRESULT {.stdcall.}
     Commit*: proc(self: ptr IShellImageStore, pdwLock: ptr DWORD): HRESULT {.stdcall.}
     IsLocked*: proc(self: ptr IShellImageStore): HRESULT {.stdcall.}
     GetMode*: proc(self: ptr IShellImageStore, pdwMode: ptr DWORD): HRESULT {.stdcall.}
-    GetCapabilities*: proc(self: ptr IShellImageStore, pdwCapMask: ptr DWORD): HRESULT {.stdcall.}
-    AddEntry*: proc(self: ptr IShellImageStore, pszName: PCWSTR, pftTimeStamp: ptr FILETIME, dwMode: DWORD, hImage: HBITMAP): HRESULT {.stdcall.}
-    GetEntry*: proc(self: ptr IShellImageStore, pszName: PCWSTR, dwMode: DWORD, phImage: ptr HBITMAP): HRESULT {.stdcall.}
+    GetCapabilities*:
+      proc(self: ptr IShellImageStore, pdwCapMask: ptr DWORD): HRESULT {.stdcall.}
+    AddEntry*: proc(
+      self: ptr IShellImageStore,
+      pszName: PCWSTR,
+      pftTimeStamp: ptr FILETIME,
+      dwMode: DWORD,
+      hImage: HBITMAP,
+    ): HRESULT {.stdcall.}
+    GetEntry*: proc(
+      self: ptr IShellImageStore, pszName: PCWSTR, dwMode: DWORD, phImage: ptr HBITMAP
+    ): HRESULT {.stdcall.}
     DeleteEntry*: proc(self: ptr IShellImageStore, pszName: PCWSTR): HRESULT {.stdcall.}
-    IsEntryInStore*: proc(self: ptr IShellImageStore, pszName: PCWSTR, pftTimeStamp: ptr FILETIME): HRESULT {.stdcall.}
-    Enum*: proc(self: ptr IShellImageStore, ppEnum: ptr LPENUMSHELLIMAGESTORE): HRESULT {.stdcall.}
+    IsEntryInStore*: proc(
+      self: ptr IShellImageStore, pszName: PCWSTR, pftTimeStamp: ptr FILETIME
+    ): HRESULT {.stdcall.}
+    Enum*: proc(self: ptr IShellImageStore, ppEnum: ptr LPENUMSHELLIMAGESTORE): HRESULT {.
+      stdcall
+    .}
+
   LPSHELLIMAGESTORE* = ptr IShellImageStore
   BANDINFOSFB* {.pure.} = object
     dwMask*: DWORD
@@ -859,16 +1243,19 @@
     wAlign*: WORD
     psf*: ptr IShellFolder
     pidl*: PIDLIST_ABSOLUTE
+
   PBANDINFOSFB* = ptr BANDINFOSFB
   WALLPAPEROPT* {.pure.} = object
     dwSize*: DWORD
     dwStyle*: DWORD
+
   LPWALLPAPEROPT* = ptr WALLPAPEROPT
   LPCWALLPAPEROPT* = ptr WALLPAPEROPT
   COMPONENTSOPT* {.pure.} = object
     dwSize*: DWORD
     fEnableComponents*: WINBOOL
     fActiveDesktop*: WINBOOL
+
   LPCOMPONENTSOPT* = ptr COMPONENTSOPT
   LPCCOMPONENTSOPT* = ptr COMPONENTSOPT
   COMPPOS* {.pure.} = object
@@ -883,6 +1270,7 @@
     fCanResizeY*: WINBOOL
     iPreferredLeftPercent*: int32
     iPreferredTopPercent*: int32
+
   LPCOMPPOS* = ptr COMPPOS
   LPCCOMPPOS* = ptr COMPPOS
   COMPSTATEINFO* {.pure.} = object
@@ -892,6 +1280,7 @@
     dwWidth*: DWORD
     dwHeight*: DWORD
     dwItemState*: DWORD
+
   LPCOMPSTATEINFO* = ptr COMPSTATEINFO
   LPCCOMPSTATEINFO* = ptr COMPSTATEINFO
   IE4COMPONENT* {.pure.} = object
@@ -905,6 +1294,7 @@
     wszFriendlyName*: array[MAX_PATH, WCHAR]
     wszSource*: array[2084, WCHAR]
     wszSubscribedURL*: array[2084, WCHAR]
+
   LPIE4COMPONENT* = ptr IE4COMPONENT
   LPCIE4COMPONENT* = ptr IE4COMPONENT
   COMPONENT* {.pure.} = object
@@ -921,47 +1311,111 @@
     dwCurItemState*: DWORD
     csiOriginal*: COMPSTATEINFO
     csiRestored*: COMPSTATEINFO
+
   LPCOMPONENT* = ptr COMPONENT
   LPCCOMPONENT* = ptr COMPONENT
   IActiveDesktop* {.pure.} = object
     lpVtbl*: ptr IActiveDesktopVtbl
+
   IActiveDesktopVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     ApplyChanges*: proc(self: ptr IActiveDesktop, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetWallpaper*: proc(self: ptr IActiveDesktop, pwszWallpaper: PWSTR, cchWallpaper: UINT, dwFlags: DWORD): HRESULT {.stdcall.}
-    SetWallpaper*: proc(self: ptr IActiveDesktop, pwszWallpaper: PCWSTR, dwReserved: DWORD): HRESULT {.stdcall.}
-    GetWallpaperOptions*: proc(self: ptr IActiveDesktop, pwpo: LPWALLPAPEROPT, dwReserved: DWORD): HRESULT {.stdcall.}
-    SetWallpaperOptions*: proc(self: ptr IActiveDesktop, pwpo: LPCWALLPAPEROPT, dwReserved: DWORD): HRESULT {.stdcall.}
-    GetPattern*: proc(self: ptr IActiveDesktop, pwszPattern: PWSTR, cchPattern: UINT, dwReserved: DWORD): HRESULT {.stdcall.}
-    SetPattern*: proc(self: ptr IActiveDesktop, pwszPattern: PCWSTR, dwReserved: DWORD): HRESULT {.stdcall.}
-    GetDesktopItemOptions*: proc(self: ptr IActiveDesktop, pco: LPCOMPONENTSOPT, dwReserved: DWORD): HRESULT {.stdcall.}
-    SetDesktopItemOptions*: proc(self: ptr IActiveDesktop, pco: LPCCOMPONENTSOPT, dwReserved: DWORD): HRESULT {.stdcall.}
-    AddDesktopItem*: proc(self: ptr IActiveDesktop, pcomp: LPCCOMPONENT, dwReserved: DWORD): HRESULT {.stdcall.}
-    AddDesktopItemWithUI*: proc(self: ptr IActiveDesktop, hwnd: HWND, pcomp: LPCOMPONENT, dwReserved: DWORD): HRESULT {.stdcall.}
-    ModifyDesktopItem*: proc(self: ptr IActiveDesktop, pcomp: LPCCOMPONENT, dwFlags: DWORD): HRESULT {.stdcall.}
-    RemoveDesktopItem*: proc(self: ptr IActiveDesktop, pcomp: LPCCOMPONENT, dwReserved: DWORD): HRESULT {.stdcall.}
-    GetDesktopItemCount*: proc(self: ptr IActiveDesktop, pcItems: ptr int32, dwReserved: DWORD): HRESULT {.stdcall.}
-    GetDesktopItem*: proc(self: ptr IActiveDesktop, nComponent: int32, pcomp: LPCOMPONENT, dwReserved: DWORD): HRESULT {.stdcall.}
-    GetDesktopItemByID*: proc(self: ptr IActiveDesktop, dwID: ULONG_PTR, pcomp: LPCOMPONENT, dwReserved: DWORD): HRESULT {.stdcall.}
-    GenerateDesktopItemHtml*: proc(self: ptr IActiveDesktop, pwszFileName: PCWSTR, pcomp: LPCOMPONENT, dwReserved: DWORD): HRESULT {.stdcall.}
-    AddUrl*: proc(self: ptr IActiveDesktop, hwnd: HWND, pszSource: PCWSTR, pcomp: LPCOMPONENT, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetDesktopItemBySource*: proc(self: ptr IActiveDesktop, pwszSource: PCWSTR, pcomp: LPCOMPONENT, dwReserved: DWORD): HRESULT {.stdcall.}
+    GetWallpaper*: proc(
+      self: ptr IActiveDesktop, pwszWallpaper: PWSTR, cchWallpaper: UINT, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
+    SetWallpaper*: proc(
+      self: ptr IActiveDesktop, pwszWallpaper: PCWSTR, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    GetWallpaperOptions*: proc(
+      self: ptr IActiveDesktop, pwpo: LPWALLPAPEROPT, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    SetWallpaperOptions*: proc(
+      self: ptr IActiveDesktop, pwpo: LPCWALLPAPEROPT, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    GetPattern*: proc(
+      self: ptr IActiveDesktop, pwszPattern: PWSTR, cchPattern: UINT, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    SetPattern*: proc(
+      self: ptr IActiveDesktop, pwszPattern: PCWSTR, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    GetDesktopItemOptions*: proc(
+      self: ptr IActiveDesktop, pco: LPCOMPONENTSOPT, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    SetDesktopItemOptions*: proc(
+      self: ptr IActiveDesktop, pco: LPCCOMPONENTSOPT, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    AddDesktopItem*: proc(
+      self: ptr IActiveDesktop, pcomp: LPCCOMPONENT, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    AddDesktopItemWithUI*: proc(
+      self: ptr IActiveDesktop, hwnd: HWND, pcomp: LPCOMPONENT, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    ModifyDesktopItem*: proc(
+      self: ptr IActiveDesktop, pcomp: LPCCOMPONENT, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
+    RemoveDesktopItem*: proc(
+      self: ptr IActiveDesktop, pcomp: LPCCOMPONENT, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    GetDesktopItemCount*: proc(
+      self: ptr IActiveDesktop, pcItems: ptr int32, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    GetDesktopItem*: proc(
+      self: ptr IActiveDesktop, nComponent: int32, pcomp: LPCOMPONENT, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    GetDesktopItemByID*: proc(
+      self: ptr IActiveDesktop, dwID: ULONG_PTR, pcomp: LPCOMPONENT, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    GenerateDesktopItemHtml*: proc(
+      self: ptr IActiveDesktop,
+      pwszFileName: PCWSTR,
+      pcomp: LPCOMPONENT,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+    AddUrl*: proc(
+      self: ptr IActiveDesktop,
+      hwnd: HWND,
+      pszSource: PCWSTR,
+      pcomp: LPCOMPONENT,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    GetDesktopItemBySource*: proc(
+      self: ptr IActiveDesktop,
+      pwszSource: PCWSTR,
+      pcomp: LPCOMPONENT,
+      dwReserved: DWORD,
+    ): HRESULT {.stdcall.}
+
   LPACTIVEDESKTOP* = ptr IActiveDesktop
   IActiveDesktopP* {.pure.} = object
     lpVtbl*: ptr IActiveDesktopPVtbl
+
   IActiveDesktopPVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SetSafeMode*: proc(self: ptr IActiveDesktopP, dwFlags: DWORD): HRESULT {.stdcall.}
     EnsureUpdateHTML*: proc(self: ptr IActiveDesktopP): HRESULT {.stdcall.}
-    SetScheme*: proc(self: ptr IActiveDesktopP, pwszSchemeName: PCWSTR, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetScheme*: proc(self: ptr IActiveDesktopP, pwszSchemeName: PWSTR, pdwcchBuffer: ptr DWORD, dwFlags: DWORD): HRESULT {.stdcall.}
+    SetScheme*: proc(
+      self: ptr IActiveDesktopP, pwszSchemeName: PCWSTR, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
+    GetScheme*: proc(
+      self: ptr IActiveDesktopP,
+      pwszSchemeName: PWSTR,
+      pdwcchBuffer: ptr DWORD,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+
   LPACTIVEDESKTOPP* = ptr IActiveDesktopP
   IADesktopP2* {.pure.} = object
     lpVtbl*: ptr IADesktopP2Vtbl
+
   IADesktopP2Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
     ReReadWallpaper*: proc(self: ptr IADesktopP2): HRESULT {.stdcall.}
-    GetADObjectFlags*: proc(self: ptr IADesktopP2, pdwFlags: ptr DWORD, dwMask: DWORD): HRESULT {.stdcall.}
+    GetADObjectFlags*: proc(
+      self: ptr IADesktopP2, pdwFlags: ptr DWORD, dwMask: DWORD
+    ): HRESULT {.stdcall.}
     UpdateAllDesktopSubscriptions*: proc(self: ptr IADesktopP2): HRESULT {.stdcall.}
-    MakeDynamicChanges*: proc(self: ptr IADesktopP2, pOleObj: ptr IOleObject): HRESULT {.stdcall.}
+    MakeDynamicChanges*:
+      proc(self: ptr IADesktopP2, pOleObj: ptr IOleObject): HRESULT {.stdcall.}
+
   LPADESKTOPP2* = ptr IADesktopP2
+
 const
   MAX_COLUMN_NAME_LEN* = 80
   MAX_COLUMN_DESC_LEN* = 128
@@ -974,12 +1428,14 @@
     csFlags*: DWORD
     wszTitle*: array[MAX_COLUMN_NAME_LEN, WCHAR]
     wszDescription*: array[MAX_COLUMN_DESC_LEN, WCHAR]
+
   LPSHCOLUMNINFO* = ptr SHCOLUMNINFO
   LPCSHCOLUMNINFO* = ptr SHCOLUMNINFO
   SHCOLUMNINIT* {.pure.} = object
     dwFlags*: ULONG
     dwReserved*: ULONG
     wszFolder*: array[MAX_PATH, WCHAR]
+
   LPSHCOLUMNINIT* = ptr SHCOLUMNINIT
   LPCSHCOLUMNINIT* = ptr SHCOLUMNINIT
   SHCOLUMNDATA* {.pure.} = object
@@ -988,15 +1444,18 @@
     dwReserved*: ULONG
     pwszExt*: ptr WCHAR
     wszFile*: array[MAX_PATH, WCHAR]
+
   LPSHCOLUMNDATA* = ptr SHCOLUMNDATA
   LPCSHCOLUMNDATA* = ptr SHCOLUMNDATA
   NRESARRAY* {.pure.} = object
     cItems*: UINT
     nr*: array[1, NETRESOURCE]
+
   LPNRESARRAY* = ptr NRESARRAY
   CIDA* {.pure.} = object
     cidl*: UINT
     aoffset*: array[1, UINT]
+
   LPIDA* = ptr CIDA
   FILEDESCRIPTORA* {.pure.} = object
     dwFlags*: DWORD
@@ -1010,6 +1469,7 @@
     nFileSizeHigh*: DWORD
     nFileSizeLow*: DWORD
     cFileName*: array[MAX_PATH, CHAR]
+
   LPFILEDESCRIPTORA* = ptr FILEDESCRIPTORA
   FILEDESCRIPTORW* {.pure.} = object
     dwFlags*: DWORD
@@ -1023,26 +1483,31 @@
     nFileSizeHigh*: DWORD
     nFileSizeLow*: DWORD
     cFileName*: array[MAX_PATH, WCHAR]
+
   LPFILEDESCRIPTORW* = ptr FILEDESCRIPTORW
   FILEGROUPDESCRIPTORA* {.pure.} = object
     cItems*: UINT
     fgd*: array[1, FILEDESCRIPTORA]
+
   LPFILEGROUPDESCRIPTORA* = ptr FILEGROUPDESCRIPTORA
   FILEGROUPDESCRIPTORW* {.pure.} = object
     cItems*: UINT
     fgd*: array[1, FILEDESCRIPTORW]
+
   LPFILEGROUPDESCRIPTORW* = ptr FILEGROUPDESCRIPTORW
   DROPFILES* {.pure.} = object
     pFiles*: DWORD
     pt*: POINT
     fNC*: WINBOOL
     fWide*: WINBOOL
+
   LPDROPFILES* = ptr DROPFILES
   SHChangeDWORDAsIDList* {.pure, packed.} = object
     cb*: USHORT
     dwItem1*: DWORD
     dwItem2*: DWORD
     cbZero*: USHORT
+
   LPSHChangeDWORDAsIDList* = ptr SHChangeDWORDAsIDList
   SHChangeUpdateImageIDList* {.pure, packed.} = object
     cb*: USHORT
@@ -1052,36 +1517,42 @@
     dwProcessID*: DWORD
     szName*: array[MAX_PATH, WCHAR]
     cbZero*: USHORT
+
   LPSHChangeUpdateImageIDList* = ptr SHChangeUpdateImageIDList
   SHChangeProductKeyAsIDList* {.pure.} = object
     cb*: USHORT
     wszProductKey*: array[39, WCHAR]
     cbZero*: USHORT
+
   LPSHChangeProductKeyAsIDList* = ptr SHChangeProductKeyAsIDList
   SHDESCRIPTIONID* {.pure.} = object
     dwDescriptionId*: DWORD
     clsid*: CLSID
+
   LPSHDESCRIPTIONID* = ptr SHDESCRIPTIONID
   CABINETSTATE* {.pure.} = object
     cLength*: WORD
     nVersion*: WORD
-    fFullPathTitle* {.bitsize:1.}: WINBOOL
-    fSaveLocalView* {.bitsize:1.}: WINBOOL
-    fNotShell* {.bitsize:1.}: WINBOOL
-    fSimpleDefault* {.bitsize:1.}: WINBOOL
-    fDontShowDescBar* {.bitsize:1.}: WINBOOL
-    fNewWindowMode* {.bitsize:1.}: WINBOOL
-    fShowCompColor* {.bitsize:1.}: WINBOOL
-    fDontPrettyNames* {.bitsize:1.}: WINBOOL
-    fAdminsCreateCommonGroups* {.bitsize:1.}: WINBOOL
-    fUnusedFlags* {.bitsize:7.}: UINT
+    fFullPathTitle* {.bitsize: 1.}: WINBOOL
+    fSaveLocalView* {.bitsize: 1.}: WINBOOL
+    fNotShell* {.bitsize: 1.}: WINBOOL
+    fSimpleDefault* {.bitsize: 1.}: WINBOOL
+    fDontShowDescBar* {.bitsize: 1.}: WINBOOL
+    fNewWindowMode* {.bitsize: 1.}: WINBOOL
+    fShowCompColor* {.bitsize: 1.}: WINBOOL
+    fDontPrettyNames* {.bitsize: 1.}: WINBOOL
+    fAdminsCreateCommonGroups* {.bitsize: 1.}: WINBOOL
+    fUnusedFlags* {.bitsize: 7.}: UINT
     fMenuEnumFilter*: UINT
+
   LPCABINETSTATE* = ptr CABINETSTATE
   OPENASINFO* {.pure.} = object
     pcszFile*: LPCWSTR
     pcszClass*: LPCWSTR
     oaifInFlags*: OPEN_AS_INFO_FLAGS
+
   POPENASINFO* = ptr OPENASINFO
+
 const
   PIFNAMESIZE* = 30
   PIFSTARTLOCSIZE* = 63
@@ -1094,7 +1565,7 @@
     flPrg*: WORD
     flPrgInit*: WORD
     achTitle*: array[PIFNAMESIZE, CHAR]
-    achCmdLine*: array[PIFSTARTLOCSIZE+PIFPARAMSSIZE+1, CHAR]
+    achCmdLine*: array[PIFSTARTLOCSIZE + PIFPARAMSSIZE + 1, CHAR]
     achWorkDir*: array[PIFDEFPATHSIZE, CHAR]
     wHotKey*: WORD
     achIconFile*: array[PIFDEFFILESIZE, CHAR]
@@ -1103,25 +1574,30 @@
     dwRealModeFlags*: DWORD
     achOtherFile*: array[PIFDEFFILESIZE, CHAR]
     achPIFFile*: array[PIFMAXFILEPATH, CHAR]
+
   PPROPPRG* = ptr PROPPRG
   LPPROPPRG* = ptr PROPPRG
   LPCPROPPRG* = ptr PROPPRG
   QCMINFO_IDMAP_PLACEMENT* {.pure.} = object
     id*: UINT
     fFlags*: UINT
+
   QCMINFO_IDMAP* {.pure.} = object
     nMaxIds*: UINT
     pIdList*: array[1, QCMINFO_IDMAP_PLACEMENT]
+
   QCMINFO* {.pure.} = object
     hmenu*: HMENU
     indexMenu*: UINT
     idCmdFirst*: UINT
     idCmdLast*: UINT
     pIdMap*: ptr QCMINFO_IDMAP
+
   LPQCMINFO* = ptr QCMINFO
   TBINFO* {.pure.} = object
     cbuttons*: UINT
     uFlags*: UINT
+
   LPTBINFO* = ptr TBINFO
   DETAILSINFO* {.pure.} = object
     pidl*: PCUITEMID_CHILD
@@ -1129,6 +1605,7 @@
     cxChar*: int32
     str*: STRRET
     iImage*: int32
+
   PDETAILSINFO* = ptr DETAILSINFO
   DFMICS* {.pure.} = object
     cbSize*: DWORD
@@ -1138,8 +1615,16 @@
     idDefMax*: UINT
     pici*: LPCMINVOKECOMMANDINFO
     punkSite*: ptr IUnknown
+
   PDFMICS* = ptr DFMICS
-  LPFNVIEWCALLBACK* = proc (psvOuter: ptr IShellView, psf: ptr IShellFolder, hwndMain: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.stdcall.}
+  LPFNVIEWCALLBACK* = proc(
+    psvOuter: ptr IShellView,
+    psf: ptr IShellFolder,
+    hwndMain: HWND,
+    uMsg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+  ): HRESULT {.stdcall.}
   CSFV* {.pure.} = object
     cbSize*: UINT
     pshf*: ptr IShellFolder
@@ -1148,102 +1633,108 @@
     lEvents*: LONG
     pfnCallback*: LPFNVIEWCALLBACK
     fvm*: FOLDERVIEWMODE
+
   LPCSFV* = ptr CSFV
   SFV_SETITEMPOS* {.pure.} = object
     pidl*: PCUITEMID_CHILD
     pt*: POINT
+
   LPSFV_SETITEMPOS* = ptr SFV_SETITEMPOS
   PCSFV_SETITEMPOS* = ptr SFV_SETITEMPOS
   SHELLSTATEA* {.pure, packed.} = object
-    fShowAllObjects* {.bitsize:1.}: WINBOOL
-    fShowExtensions* {.bitsize:1.}: WINBOOL
-    fNoConfirmRecycle* {.bitsize:1.}: WINBOOL
-    fShowSysFiles* {.bitsize:1.}: WINBOOL
-    fShowCompColor* {.bitsize:1.}: WINBOOL
-    fDoubleClickInWebView* {.bitsize:1.}: WINBOOL
-    fDesktopHTML* {.bitsize:1.}: WINBOOL
-    fWin95Classic* {.bitsize:1.}: WINBOOL
-    fDontPrettyPath* {.bitsize:1.}: WINBOOL
-    fShowAttribCol* {.bitsize:1.}: WINBOOL
-    fMapNetDrvBtn* {.bitsize:1.}: WINBOOL
-    fShowInfoTip* {.bitsize:1.}: WINBOOL
-    fHideIcons* {.bitsize:1.}: WINBOOL
-    fWebView* {.bitsize:1.}: WINBOOL
-    fFilter* {.bitsize:1.}: WINBOOL
-    fShowSuperHidden* {.bitsize:1.}: WINBOOL
-    fNoNetCrawling* {.bitsize:1.}: WINBOOL
+    fShowAllObjects* {.bitsize: 1.}: WINBOOL
+    fShowExtensions* {.bitsize: 1.}: WINBOOL
+    fNoConfirmRecycle* {.bitsize: 1.}: WINBOOL
+    fShowSysFiles* {.bitsize: 1.}: WINBOOL
+    fShowCompColor* {.bitsize: 1.}: WINBOOL
+    fDoubleClickInWebView* {.bitsize: 1.}: WINBOOL
+    fDesktopHTML* {.bitsize: 1.}: WINBOOL
+    fWin95Classic* {.bitsize: 1.}: WINBOOL
+    fDontPrettyPath* {.bitsize: 1.}: WINBOOL
+    fShowAttribCol* {.bitsize: 1.}: WINBOOL
+    fMapNetDrvBtn* {.bitsize: 1.}: WINBOOL
+    fShowInfoTip* {.bitsize: 1.}: WINBOOL
+    fHideIcons* {.bitsize: 1.}: WINBOOL
+    fWebView* {.bitsize: 1.}: WINBOOL
+    fFilter* {.bitsize: 1.}: WINBOOL
+    fShowSuperHidden* {.bitsize: 1.}: WINBOOL
+    fNoNetCrawling* {.bitsize: 1.}: WINBOOL
     dwWin95Unused*: DWORD
     uWin95Unused*: UINT
     lParamSort*: LONG
     iSortDirection*: int32
     version*: UINT
     uNotUsed*: UINT
-    fSepProcess* {.bitsize:1.}: WINBOOL
-    fStartPanelOn* {.bitsize:1.}: WINBOOL
-    fShowStartPage* {.bitsize:1.}: WINBOOL
-    fAutoCheckSelect* {.bitsize:1.}: WINBOOL
-    fIconsOnly* {.bitsize:1.}: WINBOOL
-    fShowTypeOverlay* {.bitsize:1.}: WINBOOL
-    fShowStatusBar* {.bitsize:1.}: WINBOOL
-    fSpareFlags* {.bitsize:9.}: UINT
+    fSepProcess* {.bitsize: 1.}: WINBOOL
+    fStartPanelOn* {.bitsize: 1.}: WINBOOL
+    fShowStartPage* {.bitsize: 1.}: WINBOOL
+    fAutoCheckSelect* {.bitsize: 1.}: WINBOOL
+    fIconsOnly* {.bitsize: 1.}: WINBOOL
+    fShowTypeOverlay* {.bitsize: 1.}: WINBOOL
+    fShowStatusBar* {.bitsize: 1.}: WINBOOL
+    fSpareFlags* {.bitsize: 9.}: UINT
     padding*: array[2, byte]
+
   LPSHELLSTATEA* = ptr SHELLSTATEA
   SHELLSTATEW* {.pure, packed.} = object
-    fShowAllObjects* {.bitsize:1.}: WINBOOL
-    fShowExtensions* {.bitsize:1.}: WINBOOL
-    fNoConfirmRecycle* {.bitsize:1.}: WINBOOL
-    fShowSysFiles* {.bitsize:1.}: WINBOOL
-    fShowCompColor* {.bitsize:1.}: WINBOOL
-    fDoubleClickInWebView* {.bitsize:1.}: WINBOOL
-    fDesktopHTML* {.bitsize:1.}: WINBOOL
-    fWin95Classic* {.bitsize:1.}: WINBOOL
-    fDontPrettyPath* {.bitsize:1.}: WINBOOL
-    fShowAttribCol* {.bitsize:1.}: WINBOOL
-    fMapNetDrvBtn* {.bitsize:1.}: WINBOOL
-    fShowInfoTip* {.bitsize:1.}: WINBOOL
-    fHideIcons* {.bitsize:1.}: WINBOOL
-    fWebView* {.bitsize:1.}: WINBOOL
-    fFilter* {.bitsize:1.}: WINBOOL
-    fShowSuperHidden* {.bitsize:1.}: WINBOOL
-    fNoNetCrawling* {.bitsize:1.}: WINBOOL
+    fShowAllObjects* {.bitsize: 1.}: WINBOOL
+    fShowExtensions* {.bitsize: 1.}: WINBOOL
+    fNoConfirmRecycle* {.bitsize: 1.}: WINBOOL
+    fShowSysFiles* {.bitsize: 1.}: WINBOOL
+    fShowCompColor* {.bitsize: 1.}: WINBOOL
+    fDoubleClickInWebView* {.bitsize: 1.}: WINBOOL
+    fDesktopHTML* {.bitsize: 1.}: WINBOOL
+    fWin95Classic* {.bitsize: 1.}: WINBOOL
+    fDontPrettyPath* {.bitsize: 1.}: WINBOOL
+    fShowAttribCol* {.bitsize: 1.}: WINBOOL
+    fMapNetDrvBtn* {.bitsize: 1.}: WINBOOL
+    fShowInfoTip* {.bitsize: 1.}: WINBOOL
+    fHideIcons* {.bitsize: 1.}: WINBOOL
+    fWebView* {.bitsize: 1.}: WINBOOL
+    fFilter* {.bitsize: 1.}: WINBOOL
+    fShowSuperHidden* {.bitsize: 1.}: WINBOOL
+    fNoNetCrawling* {.bitsize: 1.}: WINBOOL
     dwWin95Unused*: DWORD
     uWin95Unused*: UINT
     lParamSort*: LONG
     iSortDirection*: int32
     version*: UINT
     uNotUsed*: UINT
-    fSepProcess* {.bitsize:1.}: WINBOOL
-    fStartPanelOn* {.bitsize:1.}: WINBOOL
-    fShowStartPage* {.bitsize:1.}: WINBOOL
-    fAutoCheckSelect* {.bitsize:1.}: WINBOOL
-    fIconsOnly* {.bitsize:1.}: WINBOOL
-    fShowTypeOverlay* {.bitsize:1.}: WINBOOL
-    fShowStatusBar* {.bitsize:1.}: WINBOOL
-    fSpareFlags* {.bitsize:9.}: UINT
+    fSepProcess* {.bitsize: 1.}: WINBOOL
+    fStartPanelOn* {.bitsize: 1.}: WINBOOL
+    fShowStartPage* {.bitsize: 1.}: WINBOOL
+    fAutoCheckSelect* {.bitsize: 1.}: WINBOOL
+    fIconsOnly* {.bitsize: 1.}: WINBOOL
+    fShowTypeOverlay* {.bitsize: 1.}: WINBOOL
+    fShowStatusBar* {.bitsize: 1.}: WINBOOL
+    fSpareFlags* {.bitsize: 9.}: UINT
     padding*: array[2, byte]
+
   LPSHELLSTATEW* = ptr SHELLSTATEW
   SHELLFLAGSTATE* {.pure.} = object
-    fShowAllObjects* {.bitsize:1.}: WINBOOL
-    fShowExtensions* {.bitsize:1.}: WINBOOL
-    fNoConfirmRecycle* {.bitsize:1.}: WINBOOL
-    fShowSysFiles* {.bitsize:1.}: WINBOOL
-    fShowCompColor* {.bitsize:1.}: WINBOOL
-    fDoubleClickInWebView* {.bitsize:1.}: WINBOOL
-    fDesktopHTML* {.bitsize:1.}: WINBOOL
-    fWin95Classic* {.bitsize:1.}: WINBOOL
-    fDontPrettyPath* {.bitsize:1.}: WINBOOL
-    fShowAttribCol* {.bitsize:1.}: WINBOOL
-    fMapNetDrvBtn* {.bitsize:1.}: WINBOOL
-    fShowInfoTip* {.bitsize:1.}: WINBOOL
-    fHideIcons* {.bitsize:1.}: WINBOOL
-    fAutoCheckSelect* {.bitsize:1.}: WINBOOL
-    fIconsOnly* {.bitsize:1.}: WINBOOL
-    fRestFlags* {.bitsize:1.}: UINT
+    fShowAllObjects* {.bitsize: 1.}: WINBOOL
+    fShowExtensions* {.bitsize: 1.}: WINBOOL
+    fNoConfirmRecycle* {.bitsize: 1.}: WINBOOL
+    fShowSysFiles* {.bitsize: 1.}: WINBOOL
+    fShowCompColor* {.bitsize: 1.}: WINBOOL
+    fDoubleClickInWebView* {.bitsize: 1.}: WINBOOL
+    fDesktopHTML* {.bitsize: 1.}: WINBOOL
+    fWin95Classic* {.bitsize: 1.}: WINBOOL
+    fDontPrettyPath* {.bitsize: 1.}: WINBOOL
+    fShowAttribCol* {.bitsize: 1.}: WINBOOL
+    fMapNetDrvBtn* {.bitsize: 1.}: WINBOOL
+    fShowInfoTip* {.bitsize: 1.}: WINBOOL
+    fHideIcons* {.bitsize: 1.}: WINBOOL
+    fAutoCheckSelect* {.bitsize: 1.}: WINBOOL
+    fIconsOnly* {.bitsize: 1.}: WINBOOL
+    fRestFlags* {.bitsize: 1.}: UINT
+
   LPSHELLFLAGSTATE* = ptr SHELLFLAGSTATE
   AASHELLMENUFILENAME* {.pure.} = object
     cbTotal*: SHORT
     rgbReserved*: array[12, BYTE]
     szFileName*: array[1, WCHAR]
+
   LPAASHELLMENUFILENAME* = ptr AASHELLMENUFILENAME
   AASHELLMENUITEM* {.pure.} = object
     lpReserved1*: pointer
@@ -1251,12 +1742,15 @@
     uiReserved*: UINT
     lpName*: LPAASHELLMENUFILENAME
     psz*: LPWSTR
+
   LPAASHELLMENUITEM* = ptr AASHELLMENUITEM
   SMCSHCHANGENOTIFYSTRUCT* {.pure.} = object
     lEvent*: LONG
     pidl1*: PCIDLIST_ABSOLUTE
     pidl2*: PCIDLIST_ABSOLUTE
+
   PSMCSHCHANGENOTIFYSTRUCT* = ptr SMCSHCHANGENOTIFYSTRUCT
+
 const
   ABM_NEW* = 0x00000000
   ABM_REMOVE* = 0x00000001
@@ -1361,15 +1855,15 @@
   QUNS_ACCEPTS_NOTIFICATIONS* = 5
   QUNS_QUIET_TIME* = 6
   QUNS_APP* = 7
-  NIN_SELECT* = WM_USER+0
+  NIN_SELECT* = WM_USER + 0
   NINF_KEY* = 0x1
   NIN_KEYSELECT* = NIN_SELECT or NINF_KEY
-  NIN_BALLOONSHOW* = WM_USER+2
-  NIN_BALLOONHIDE* = WM_USER+3
-  NIN_BALLOONTIMEOUT* = WM_USER+4
-  NIN_BALLOONUSERCLICK* = WM_USER+5
-  NIN_POPUPOPEN* = WM_USER+6
-  NIN_POPUPCLOSE* = WM_USER+7
+  NIN_BALLOONSHOW* = WM_USER + 2
+  NIN_BALLOONHIDE* = WM_USER + 3
+  NIN_BALLOONTIMEOUT* = WM_USER + 4
+  NIN_BALLOONUSERCLICK* = WM_USER + 5
+  NIN_POPUPOPEN* = WM_USER + 6
+  NIN_POPUPCLOSE* = WM_USER + 7
   NIM_ADD* = 0x00000000
   NIM_MODIFY* = 0x00000001
   NIM_DELETE* = 0x00000002
@@ -1542,10 +2036,10 @@
   SHIL_JUMBO* = 4
   SHIL_LAST* = SHIL_JUMBO
   WC_NETADDRESS* = "msctls_netaddress"
-  NCM_GETADDRESS* = WM_USER+1
-  NCM_SETALLOWTYPE* = WM_USER+2
-  NCM_GETALLOWTYPE* = WM_USER+3
-  NCM_DISPLAYERRORTIP* = WM_USER+4
+  NCM_GETADDRESS* = WM_USER + 1
+  NCM_SETALLOWTYPE* = WM_USER + 2
+  NCM_GETALLOWTYPE* = WM_USER + 3
+  NCM_DISPLAYERRORTIP* = WM_USER + 4
   SZ_CONTENTTYPE_HTMLA* = "text/html"
   SZ_CONTENTTYPE_HTMLW* = "text/html"
   SZ_CONTENTTYPE_CDFA* = "application/x-cdf"
@@ -1699,7 +2193,8 @@
   SHGVSPB_ROAM* = 0x00000020
   SHGVSPB_NOAUTODEFAULTS* = 0x80000000'i32
   SHGVSPB_FOLDER* = SHGVSPB_PERUSER or SHGVSPB_PERFOLDER
-  SHGVSPB_FOLDERNODEFAULTS* = SHGVSPB_PERUSER or SHGVSPB_PERFOLDER or SHGVSPB_NOAUTODEFAULTS
+  SHGVSPB_FOLDERNODEFAULTS* =
+    SHGVSPB_PERUSER or SHGVSPB_PERFOLDER or SHGVSPB_NOAUTODEFAULTS
   SHGVSPB_USERDEFAULTS* = SHGVSPB_PERUSER or SHGVSPB_ALLFOLDERS
   SHGVSPB_GLOBALDEAFAULTS* = SHGVSPB_ALLUSERS or SHGVSPB_ALLFOLDERS
   SHACF_DEFAULT* = 0x00000000
@@ -2035,8 +2530,10 @@
   PSGUID_LINK* = DEFINE_GUID("b9b4b3fc-2b51-4a42-b5d8-324146afcf25")
   PSGUID_QUERY_D* = DEFINE_GUID("49691c90-7e17-101a-a91c-08002b2ecda9")
   PSGUID_SUMMARYINFORMATION* = DEFINE_GUID("f29f85e0-4ff9-1068-ab91-08002b27b3d9")
-  PSGUID_DOCUMENTSUMMARYINFORMATION* = DEFINE_GUID("d5cdd502-2e9c-101b-9397-08002b2cf9ae")
-  PSGUID_MEDIAFILESUMMARYINFORMATION* = DEFINE_GUID("64440492-4c8b-11d1-8b70-080036b11a03")
+  PSGUID_DOCUMENTSUMMARYINFORMATION* =
+    DEFINE_GUID("d5cdd502-2e9c-101b-9397-08002b2cf9ae")
+  PSGUID_MEDIAFILESUMMARYINFORMATION* =
+    DEFINE_GUID("64440492-4c8b-11d1-8b70-080036b11a03")
   PSGUID_IMAGESUMMARYINFORMATION* = DEFINE_GUID("6444048f-4c8b-11d1-8b70-080036b11a03")
   PID_VOLUME_FREE* = 2
   PID_VOLUME_CAPACITY* = 3
@@ -2085,7 +2582,8 @@
   SID_SMenuBandBottomSelected* = DEFINE_GUID("165ebaf4-6d51-11d2-83ad-00c04fd918d0")
   SID_SMenuBandBottom* = DEFINE_GUID("743ca664-0deb-11d1-9825-00c04fd91972")
   SID_MenuShellFolder* = DEFINE_GUID("a6c17eb4-2d65-11d2-838f-00c04fd918d0")
-  SID_SMenuBandContextMenuModifier* = DEFINE_GUID("39545874-7162-465e-b783-2aa1874fef81")
+  SID_SMenuBandContextMenuModifier* =
+    DEFINE_GUID("39545874-7162-465e-b783-2aa1874fef81")
   SID_SMenuBandBKContextMenu* = DEFINE_GUID("164bbd86-1d0d-4de0-9a3b-d9729647c2b8")
   CGID_MENUDESKBAR* = DEFINE_GUID("5c9f0a12-959e-11d0-a3a4-00a0c9082636")
   SID_SMenuBandTop* = DEFINE_GUID("9493a810-ec38-11d0-bc46-00aa006ce2f5")
@@ -2211,7 +2709,8 @@
   FOLDERID_Windows* = DEFINE_GUID("f38bf404-1d43-42f2-9305-67de0b28fc23")
   FOLDERTYPEID_Invalid* = DEFINE_GUID("57807898-8c4f-4462-bb63-71042380b109")
   FOLDERTYPEID_Generic* = DEFINE_GUID("5c4f28b5-f869-4e84-8e60-f11db97c5cc7")
-  FOLDERTYPEID_GenericSearchResults* = DEFINE_GUID("7fde1a1e-8b31-49a5-93b8-6be14cfa4943")
+  FOLDERTYPEID_GenericSearchResults* =
+    DEFINE_GUID("7fde1a1e-8b31-49a5-93b8-6be14cfa4943")
   FOLDERTYPEID_GenericLibrary* = DEFINE_GUID("5f4eab9a-6833-4f61-899d-31cf46979d49")
   FOLDERTYPEID_Documents* = DEFINE_GUID("7d49d726-3c21-4f05-99aa-fdc2c9474656")
   FOLDERTYPEID_Pictures* = DEFINE_GUID("b3690e58-e961-423b-b687-386ebfd83239")
@@ -2230,8 +2729,10 @@
   FOLDERTYPEID_SearchConnector* = DEFINE_GUID("982725ee-6f47-479e-b447-812bfa7d2e8f")
   FOLDERTYPEID_AccountPictures* = DEFINE_GUID("db2a5d8f-06e6-4007-aba6-af877d526ea6")
   FOLDERTYPEID_Games* = DEFINE_GUID("b689b0d0-76d3-4cbb-87f7-585d0e0ce070")
-  FOLDERTYPEID_ControlPanelCategory* = DEFINE_GUID("de4f0660-fa10-4b8f-a494-068b20b22307")
-  FOLDERTYPEID_ControlPanelClassic* = DEFINE_GUID("0c3794f3-b545-43aa-a329-c37430c58d2a")
+  FOLDERTYPEID_ControlPanelCategory* =
+    DEFINE_GUID("de4f0660-fa10-4b8f-a494-068b20b22307")
+  FOLDERTYPEID_ControlPanelClassic* =
+    DEFINE_GUID("0c3794f3-b545-43aa-a329-c37430c58d2a")
   FOLDERTYPEID_Printers* = DEFINE_GUID("2c7bbec6-c844-4a0a-91fa-cef6f59cfda1")
   FOLDERTYPEID_RecycleBin* = DEFINE_GUID("d6d9e004-cd87-442b-9d57-5e0aeb4f6f72")
   FOLDERTYPEID_SoftwareExplorer* = DEFINE_GUID("d674391b-52d9-4e07-834e-67c98610f39d")
@@ -2244,11 +2745,16 @@
   SYNCMGR_OBJECTID_ConflictStore* = DEFINE_GUID("d78181f4-2389-47e4-a960-60bcc2ed930b")
   SYNCMGR_OBJECTID_BrowseContent* = DEFINE_GUID("57cbb584-e9b4-47ae-a120-c4df3335dee2")
   SYNCMGR_OBJECTID_ShowSchedule* = DEFINE_GUID("edc6f3e3-8441-4109-adf3-6c1ca0b7de47")
-  SYNCMGR_OBJECTID_QueryBeforeActivate* = DEFINE_GUID("d882d80b-e7aa-49ed-86b7-e6e1f714cdfe")
-  SYNCMGR_OBJECTID_QueryBeforeDeactivate* = DEFINE_GUID("a0efc282-60e0-460e-9374-ea88513cfc80")
-  SYNCMGR_OBJECTID_QueryBeforeEnable* = DEFINE_GUID("04cbf7f0-5beb-4de1-bc90-908345c480f6")
-  SYNCMGR_OBJECTID_QueryBeforeDisable* = DEFINE_GUID("bb5f64aa-f004-4eb5-8e4d-26751966344c")
-  SYNCMGR_OBJECTID_QueryBeforeDelete* = DEFINE_GUID("f76c3397-afb3-45d7-a59f-5a49e905437e")
+  SYNCMGR_OBJECTID_QueryBeforeActivate* =
+    DEFINE_GUID("d882d80b-e7aa-49ed-86b7-e6e1f714cdfe")
+  SYNCMGR_OBJECTID_QueryBeforeDeactivate* =
+    DEFINE_GUID("a0efc282-60e0-460e-9374-ea88513cfc80")
+  SYNCMGR_OBJECTID_QueryBeforeEnable* =
+    DEFINE_GUID("04cbf7f0-5beb-4de1-bc90-908345c480f6")
+  SYNCMGR_OBJECTID_QueryBeforeDisable* =
+    DEFINE_GUID("bb5f64aa-f004-4eb5-8e4d-26751966344c")
+  SYNCMGR_OBJECTID_QueryBeforeDelete* =
+    DEFINE_GUID("f76c3397-afb3-45d7-a59f-5a49e905437e")
   SYNCMGR_OBJECTID_EventLinkClick* = DEFINE_GUID("2203bdc1-1af1-4082-8c30-28399f41384c")
   EP_NavPane* = DEFINE_GUID("cb316b22-25f7-42b8-8a09-540d23a43c2f")
   EP_Commands* = DEFINE_GUID("d9745868-ca5f-4a76-91cd-f5a129fbb076")
@@ -2420,9 +2926,9 @@
   ITSSFLAG_COMPLETE_ON_DESTROY* = 0x0
   ITSSFLAG_KILL_ON_DESTROY* = 0x1
   ITSSFLAG_FLAGS_MASK* = 0x3
-  ITSS_THREAD_DESTROY_DEFAULT_TIMEOUT* = 10*1000
+  ITSS_THREAD_DESTROY_DEFAULT_TIMEOUT* = 10 * 1000
   ITSS_THREAD_TERMINATE_TIMEOUT* = INFINITE
-  ITSS_THREAD_TIMEOUT_NO_CHANGE* = INFINITE-1
+  ITSS_THREAD_TIMEOUT_NO_CHANGE* = INFINITE - 1
   IID_IShellTaskScheduler* = DEFINE_GUID("6ccb7be0-6807-11d0-b810-00c04fd706ec")
   SID_ShellTaskScheduler* = IID_IShellTaskScheduler
   IID_IQueryCodePage* = DEFINE_GUID("c7b236ce-ee80-11d0-985f-006008059382")
@@ -2503,7 +3009,8 @@
   STR_PARSE_PROPERTYSTORE* = "DelegateNamedProperties"
   STR_NO_VALIDATE_FILENAME_CHARS* = "NoValidateFilenameChars"
   STR_BIND_DELEGATE_CREATE_OBJECT* = "Delegate Object Creation"
-  STR_PARSE_ALLOW_INTERNET_SHELL_FOLDERS* = "Allow binding to Internet shell folder handlers and negate STR_PARSE_PREFER_WEB_BROWSING"
+  STR_PARSE_ALLOW_INTERNET_SHELL_FOLDERS* =
+    "Allow binding to Internet shell folder handlers and negate STR_PARSE_PREFER_WEB_BROWSING"
   STR_PARSE_PREFER_WEB_BROWSING* = "Do not bind to Internet shell folder handlers"
   STR_PARSE_SHOW_NET_DIAGNOSTICS_UI* = "Show network diagnostics UI"
   STR_PARSE_DONT_REQUIRE_VALIDATED_URLS* = "Do not require validated URLs"
@@ -3204,8 +3711,10 @@
   AT_URLPROTOCOL* = 1
   AT_STARTMENUCLIENT* = 2
   AT_MIMETYPE* = 3
-  IID_IApplicationAssociationRegistration* = DEFINE_GUID("4e530b0a-e611-4c77-a3ac-9031d022281b")
-  IID_IApplicationAssociationRegistrationUI* = DEFINE_GUID("1f76a169-f994-40ac-8fc8-0959e8874710")
+  IID_IApplicationAssociationRegistration* =
+    DEFINE_GUID("4e530b0a-e611-4c77-a3ac-9031d022281b")
+  IID_IApplicationAssociationRegistrationUI* =
+    DEFINE_GUID("1f76a169-f994-40ac-8fc8-0959e8874710")
   IID_IDelegateFolder* = DEFINE_GUID("add8ba80-002b-11d0-8f0f-00c04fd7d062")
   BFO_NONE* = 0x0
   BFO_BROWSER_PERSIST_SETTINGS* = 0x1
@@ -3360,7 +3869,8 @@
   SHARE_ROLE_MIXED* = 5
   DEFSHAREID_USERS* = 1
   DEFSHAREID_PUBLIC* = 2
-  IID_ISharingConfigurationManager* = DEFINE_GUID("b4cd448a-9c86-4466-9201-2e62105b87ae")
+  IID_ISharingConfigurationManager* =
+    DEFINE_GUID("b4cd448a-9c86-4466-9201-2e62105b87ae")
   IID_IPreviousVersionsInfo* = DEFINE_GUID("76e54780-ad74-48e3-a695-3ba9a0aff10d")
   IID_IRelatedItem* = DEFINE_GUID("a73ce67a-8ab1-44f1-8d43-d2fcbf6b1cd0")
   IID_IIdentityName* = DEFINE_GUID("7d903fca-d6f9-4810-8332-946c0177e247")
@@ -3438,7 +3948,8 @@
   NTSCS2_NOSINGLETONAUTOEXPAND* = 0x10
   NTSCS2_NEVERINSERTNONENUMERATED* = 0x20
   IID_INameSpaceTreeControl2* = DEFINE_GUID("7cc7aed8-290e-49bc-8945-c1401cc9306c")
-  NSTCS2_ALLMASK* = NSTCS2_INTERRUPTNOTIFICATIONS or NSTCS2_SHOWNULLSPACEMENU or NSTCS2_DISPLAYPADDING
+  NSTCS2_ALLMASK* =
+    NSTCS2_INTERRUPTNOTIFICATIONS or NSTCS2_SHOWNULLSPACEMENU or NSTCS2_DISPLAYPADDING
   SID_SNavigationPane* = IID_INameSpaceTreeControl
   NSTCEHT_NOWHERE* = 0x1
   NSTCEHT_ONITEMICON* = 0x2
@@ -3456,13 +3967,16 @@
   NSTCECT_DBLCLICK* = 0x4
   IID_INameSpaceTreeControlEvents* = DEFINE_GUID("93d77985-b3d8-4484-8318-672cdda002ce")
   NSTCDHPOS_ONTOP* = -1
-  IID_INameSpaceTreeControlDropHandler* = DEFINE_GUID("f9c665d6-c2f2-4c19-bf33-8322d7352f51")
+  IID_INameSpaceTreeControlDropHandler* =
+    DEFINE_GUID("f9c665d6-c2f2-4c19-bf33-8322d7352f51")
   IID_INameSpaceTreeAccessible* = DEFINE_GUID("71f312de-43ed-4190-8477-e9536b82350b")
-  IID_INameSpaceTreeControlCustomDraw* = DEFINE_GUID("2d3ba758-33ee-42d5-bb7b-5f3431d86c78")
+  IID_INameSpaceTreeControlCustomDraw* =
+    DEFINE_GUID("2d3ba758-33ee-42d5-bb7b-5f3431d86c78")
   NSTCFC_NONE* = 0x0
   NSTCFC_PINNEDITEMFILTERING* = 0x1
   NSTCFC_DELAY_REGISTER_NOTIFY* = 0x2
-  IID_INameSpaceTreeControlFolderCapabilities* = DEFINE_GUID("e9701183-e6b3-4ff2-8568-813615fec7be")
+  IID_INameSpaceTreeControlFolderCapabilities* =
+    DEFINE_GUID("e9701183-e6b3-4ff2-8568-813615fec7be")
   E_PREVIEWHANDLER_DRM_FAIL* = HRESULT 0x86420001'i32
   E_PREVIEWHANDLER_NOAUTH* = HRESULT 0x86420002'i32
   E_PREVIEWHANDLER_NOTFOUND* = HRESULT 0x86420003'i32
@@ -3547,7 +4061,8 @@
   HGSC_DOCUMENTSLIBRARY* = 0x8
   HGSC_PRINTERS* = 0x10
   IID_IHomeGroup* = DEFINE_GUID("7a3bd1d9-35a9-4fb3-a467-f48cac35e2d0")
-  IID_IInitializeWithPropertyStore* = DEFINE_GUID("c3e12eb5-7d8d-44f8-b6dd-0e77b34d6de4")
+  IID_IInitializeWithPropertyStore* =
+    DEFINE_GUID("c3e12eb5-7d8d-44f8-b6dd-0e77b34d6de4")
   IID_IOpenSearchSource* = DEFINE_GUID("f0ee7333-e6fc-479b-9f25-a860c234a38e")
   LFF_FORCEFILESYSTEM* = 1
   LFF_STORAGEITEMS* = 2
@@ -3582,12 +4097,14 @@
   DFMR_USE_SPECIFIED_HANDLERS* = 0x100
   DFMR_USE_SPECIFIED_VERBS* = 0x200
   DFMR_NO_ASYNC_VERBS* = 0x400
-  IID_IDefaultFolderMenuInitialize* = DEFINE_GUID("7690aa79-f8fc-4615-a327-36f7d18f5d91")
+  IID_IDefaultFolderMenuInitialize* =
+    DEFINE_GUID("7690aa79-f8fc-4615-a327-36f7d18f5d91")
   AO_NONE* = 0x0
   AO_DESIGNMODE* = 0x1
   AO_NOERRORUI* = 0x2
   AO_NOSPLASHSCREEN* = 0x4
-  IID_IApplicationActivationManager* = DEFINE_GUID("2e941141-7f97-4756-ba1d-9decde894a3d")
+  IID_IApplicationActivationManager* =
+    DEFINE_GUID("2e941141-7f97-4756-ba1d-9decde894a3d")
   LIBID_ShellObjects* = DEFINE_GUID("50a7e9b1-70ef-11d1-b75a-00a0c90564fe")
   CLSID_DesktopWallpaper* = DEFINE_GUID("c2cf3110-460e-4fc1-b9d0-8a1c0c9cc4bd")
   CLSID_ShellFSFolder* = DEFINE_GUID("f3364ba0-65b9-11ce-a9ba-00aa004ae837")
@@ -3626,14 +4143,17 @@
   CLSID_FileSaveDialog* = DEFINE_GUID("c0b4e2f3-ba21-4773-8dba-335ec946eb8b")
   CLSID_KnownFolderManager* = DEFINE_GUID("4df0c730-df9d-4ae3-9153-aa6b82e9795a")
   CLSID_FSCopyHandler* = DEFINE_GUID("d197380a-0a79-4dc8-a033-ed882c2fa14b")
-  CLSID_SharingConfigurationManager* = DEFINE_GUID("49f371e1-8c5c-4d9c-9a3b-54a6827f513c")
+  CLSID_SharingConfigurationManager* =
+    DEFINE_GUID("49f371e1-8c5c-4d9c-9a3b-54a6827f513c")
   CLSID_PreviousVersions* = DEFINE_GUID("596ab062-b4d2-4215-9f74-e9109b0a8153")
   CLSID_NetworkConnections* = DEFINE_GUID("7007acc7-3202-11d1-aad2-00805fc1270e")
   CLSID_NamespaceTreeControl* = DEFINE_GUID("ae054212-3535-4430-83ed-d501aa6680e6")
   CLSID_IENamespaceTreeControl* = DEFINE_GUID("ace52d03-e5cd-4b20-82ff-e71b11beae1d")
   CLSID_ScheduledTasks* = DEFINE_GUID("d6277990-4c6a-11cf-8d87-00aa0060f5bf")
-  CLSID_ApplicationAssociationRegistration* = DEFINE_GUID("591209c7-767b-42b2-9fba-44ee4615f2c7")
-  CLSID_ApplicationAssociationRegistrationUI* = DEFINE_GUID("1968106d-f3b5-44cf-890e-116fcb9ecef1")
+  CLSID_ApplicationAssociationRegistration* =
+    DEFINE_GUID("591209c7-767b-42b2-9fba-44ee4615f2c7")
+  CLSID_ApplicationAssociationRegistrationUI* =
+    DEFINE_GUID("1968106d-f3b5-44cf-890e-116fcb9ecef1")
   CLSID_SearchFolderItemFactory* = DEFINE_GUID("14010e02-bbbd-41f0-88e3-eda371216584")
   CLSID_OpenControlPanel* = DEFINE_GUID("06622d85-6856-4460-8de1-a81921b41c4b")
   CLSID_MailRecipient* = DEFINE_GUID("9e56be60-c50f-11cf-9a2c-00a0c90a90ce")
@@ -3644,18 +4164,22 @@
   CLSID_HomeGroup* = DEFINE_GUID("de77ba04-3c92-4d11-a1a5-42352a53e0e3")
   CLSID_ShellLibrary* = DEFINE_GUID("d9b3211d-e57f-4426-aaef-30a806add397")
   CLSID_AppStartupLink* = DEFINE_GUID("273eb5e7-88b0-4843-bfef-e2c81d43aae5")
-  CLSID_EnumerableObjectCollection* = DEFINE_GUID("2d3468c1-36a7-43b6-ac24-d3f02fd9607a")
+  CLSID_EnumerableObjectCollection* =
+    DEFINE_GUID("2d3468c1-36a7-43b6-ac24-d3f02fd9607a")
   CLSID_DesktopGadget* = DEFINE_GUID("924ccc1b-6562-4c85-8657-d177925222b6")
   CLSID_PlaybackManager* = DEFINE_GUID("29dfa654-a97f-47f0-bf26-9e41fb9488d9")
-  CLSID_AccessibilityDockingService* = DEFINE_GUID("29ce1d46-b481-4aa0-a08a-d3ebc8aca402")
+  CLSID_AccessibilityDockingService* =
+    DEFINE_GUID("29ce1d46-b481-4aa0-a08a-d3ebc8aca402")
   CLSID_FrameworkInputPane* = DEFINE_GUID("d5120aa3-46ba-44c5-822d-ca8092c1fc72")
   CLSID_DefFolderMenu* = DEFINE_GUID("c63382be-7933-48d0-9ac8-85fb46be2fdd")
   CLSID_AppVisibility* = DEFINE_GUID("7e5fe3d9-985f-4908-91f9-ee19f9fd1514")
   CLSID_AppShellVerbHandler* = DEFINE_GUID("4ed3a719-cea8-4bd9-910d-e252f997afc2")
   CLSID_ExecuteUnknown* = DEFINE_GUID("e44e9428-bdbc-4987-a099-40dc8fd255e7")
   CLSID_PackageDebugSettings* = DEFINE_GUID("b1aec16f-2383-4852-b0e9-8f0b1dc66b4d")
-  CLSID_ApplicationActivationManager* = DEFINE_GUID("45ba127d-10a8-46ea-8ab7-56ea9078943c")
-  CLSID_ApplicationDesignModeSettings* = DEFINE_GUID("958a6fb5-dcb2-4faf-aafd-7fb054ad1a3b")
+  CLSID_ApplicationActivationManager* =
+    DEFINE_GUID("45ba127d-10a8-46ea-8ab7-56ea9078943c")
+  CLSID_ApplicationDesignModeSettings* =
+    DEFINE_GUID("958a6fb5-dcb2-4faf-aafd-7fb054ad1a3b")
   CLSID_ExecuteFolder* = DEFINE_GUID("11dbb47c-a525-400b-9e80-a54615a090c0")
   LMD_DEFAULT* = 0x0
   LMD_ALLOWUNINDEXABLENETWORKLOCATIONS* = 0x1
@@ -3672,8 +4196,10 @@
   IID_ISearchableApplication* = DEFINE_GUID("08922f8d-243a-49e3-a495-bd4f9cf8ab9e")
   UR_RESOLUTION_CHANGE* = 0
   UR_MONITOR_DISCONNECT* = 1
-  IID_IAccessibilityDockingServiceCallback* = DEFINE_GUID("157733fd-a592-42e5-b594-248468c5a81b")
-  IID_IAccessibilityDockingService* = DEFINE_GUID("8849dc22-cedf-4c95-998d-051419dd3f76")
+  IID_IAccessibilityDockingServiceCallback* =
+    DEFINE_GUID("157733fd-a592-42e5-b594-248468c5a81b")
+  IID_IAccessibilityDockingService* =
+    DEFINE_GUID("8849dc22-cedf-4c95-998d-051419dd3f76")
   MAV_UNKNOWN* = 0
   MAV_NO_APP_VISIBLE* = 1
   MAV_APP_VISIBLE* = 2
@@ -3684,11 +4210,13 @@
   PES_SUSPENDING* = 2
   PES_SUSPENDED* = 3
   PES_TERMINATED* = 4
-  IID_IPackageExecutionStateChangeNotification* = DEFINE_GUID("1bb12a62-2ad8-432b-8ccf-0c2c52afcd5b")
+  IID_IPackageExecutionStateChangeNotification* =
+    DEFINE_GUID("1bb12a62-2ad8-432b-8ccf-0c2c52afcd5b")
   IID_IPackageDebugSettings* = DEFINE_GUID("f27c3930-8029-4ad1-94e3-3dba417810c1")
   AHE_DESKTOP* = 0
   AHE_IMMERSIVE* = 1
-  IID_IExecuteCommandApplicationHostEnvironment* = DEFINE_GUID("18b21aa9-e184-4ff0-9f5e-f882d03771b3")
+  IID_IExecuteCommandApplicationHostEnvironment* =
+    DEFINE_GUID("18b21aa9-e184-4ff0-9f5e-f882d03771b3")
   ECHUIM_DESKTOP* = 0
   ECHUIM_IMMERSIVE* = 1
   ECHUIM_SYSTEM_LAUNCHER* = 2
@@ -3701,12 +4229,14 @@
   EGK_TOUCH* = 0
   EGK_KEYBOARD* = 1
   EGK_MOUSE* = 2
-  IID_IApplicationDesignModeSettings* = DEFINE_GUID("2a3dee9a-e31d-46d6-8508-bcc597db3557")
+  IID_IApplicationDesignModeSettings* =
+    DEFINE_GUID("2a3dee9a-e31d-46d6-8508-bcc597db3557")
   IID_IInitializeWithWindow* = DEFINE_GUID("3e68d4bd-7135-4d10-8018-9fb6d9f33fa1")
   IID_IHandlerInfo* = DEFINE_GUID("997706ef-f880-453b-8118-39e1a2d2655a")
   IID_IHandlerActivationHost* = DEFINE_GUID("35094a87-8bb1-4237-96c6-c417eebdb078")
   SID_SHandlerActivationHost* = IID_IHandlerActivationHost
-  SID_ShellExecuteNamedPropertyStore* = DEFINE_GUID("eb84ada2-00ff-4992-8324-ed5ce061cb29")
+  SID_ShellExecuteNamedPropertyStore* =
+    DEFINE_GUID("eb84ada2-00ff-4992-8324-ed5ce061cb29")
   GIL_OPENICON* = 0x1
   GIL_FORSHELL* = 0x2
   GIL_ASYNC* = 0x20
@@ -3783,18 +4313,18 @@
   FCIDM_BROWSERLAST* = 0xbf00
   FCIDM_GLOBALFIRST* = 0x8000
   FCIDM_GLOBALLAST* = 0x9fff
-  FCIDM_MENU_FILE* = FCIDM_GLOBALFIRST+0x0000
-  FCIDM_MENU_EDIT* = FCIDM_GLOBALFIRST+0x0040
-  FCIDM_MENU_VIEW* = FCIDM_GLOBALFIRST+0x0080
-  FCIDM_MENU_VIEW_SEP_OPTIONS* = FCIDM_GLOBALFIRST+0x0081
-  FCIDM_MENU_TOOLS* = FCIDM_GLOBALFIRST+0x00c0
-  FCIDM_MENU_TOOLS_SEP_GOTO* = FCIDM_GLOBALFIRST+0x00c1
-  FCIDM_MENU_HELP* = FCIDM_GLOBALFIRST+0x0100
-  FCIDM_MENU_FIND* = FCIDM_GLOBALFIRST+0x0140
-  FCIDM_MENU_EXPLORE* = FCIDM_GLOBALFIRST+0x0150
-  FCIDM_MENU_FAVORITES* = FCIDM_GLOBALFIRST+0x0170
-  FCIDM_TOOLBAR* = FCIDM_BROWSERFIRST+0
-  FCIDM_STATUS* = FCIDM_BROWSERFIRST+1
+  FCIDM_MENU_FILE* = FCIDM_GLOBALFIRST + 0x0000
+  FCIDM_MENU_EDIT* = FCIDM_GLOBALFIRST + 0x0040
+  FCIDM_MENU_VIEW* = FCIDM_GLOBALFIRST + 0x0080
+  FCIDM_MENU_VIEW_SEP_OPTIONS* = FCIDM_GLOBALFIRST + 0x0081
+  FCIDM_MENU_TOOLS* = FCIDM_GLOBALFIRST + 0x00c0
+  FCIDM_MENU_TOOLS_SEP_GOTO* = FCIDM_GLOBALFIRST + 0x00c1
+  FCIDM_MENU_HELP* = FCIDM_GLOBALFIRST + 0x0100
+  FCIDM_MENU_FIND* = FCIDM_GLOBALFIRST + 0x0140
+  FCIDM_MENU_EXPLORE* = FCIDM_GLOBALFIRST + 0x0150
+  FCIDM_MENU_FAVORITES* = FCIDM_GLOBALFIRST + 0x0170
+  FCIDM_TOOLBAR* = FCIDM_BROWSERFIRST + 0
+  FCIDM_STATUS* = FCIDM_BROWSERFIRST + 1
   IDC_OFFLINE_HAND* = 103
   IDC_PANTOOL_HAND_OPEN* = 104
   IDC_PANTOOL_HAND_CLOSED* = 105
@@ -3912,13 +4442,13 @@
   BFFM_VALIDATEFAILEDA* = 3
   BFFM_VALIDATEFAILEDW* = 4
   BFFM_IUNKNOWN* = 5
-  BFFM_SETSTATUSTEXTA* = WM_USER+100
-  BFFM_ENABLEOK* = WM_USER+101
-  BFFM_SETSELECTIONA* = WM_USER+102
-  BFFM_SETSELECTIONW* = WM_USER+103
-  BFFM_SETSTATUSTEXTW* = WM_USER+104
-  BFFM_SETOKTEXT* = WM_USER+105
-  BFFM_SETEXPANDED* = WM_USER+106
+  BFFM_SETSTATUSTEXTA* = WM_USER + 100
+  BFFM_ENABLEOK* = WM_USER + 101
+  BFFM_SETSELECTIONA* = WM_USER + 102
+  BFFM_SETSELECTIONW* = WM_USER + 103
+  BFFM_SETSTATUSTEXTW* = WM_USER + 104
+  BFFM_SETOKTEXT* = WM_USER + 105
+  BFFM_SETEXPANDED* = WM_USER + 106
   ISHCUTCMDID_DOWNLOADICON* = 0
   ISHCUTCMDID_INTSHORTCUTCREATE* = 1
   ISHCUTCMDID_COMMITHISTORY* = 2
@@ -3995,7 +4525,8 @@
   IS_FULLSCREEN* = 0x00000002
   IS_SPLIT* = 0x00000004
   IS_VALIDSIZESTATEBITS* = IS_NORMAL or IS_SPLIT or IS_FULLSCREEN
-  IS_VALIDSTATEBITS* = IS_NORMAL or IS_SPLIT or IS_FULLSCREEN or 0x80000000'i32 or 0x40000000
+  IS_VALIDSTATEBITS* =
+    IS_NORMAL or IS_SPLIT or IS_FULLSCREEN or 0x80000000'i32 or 0x40000000
   AD_APPLY_SAVE* = 0x00000001
   AD_APPLY_HTMLGEN* = 0x00000002
   AD_APPLY_REFRESH* = 0x00000004
@@ -4028,7 +4559,12 @@
   COMP_ELEM_ORIGINAL_CSI* = 0x00001000
   COMP_ELEM_RESTORED_CSI* = 0x00002000
   COMP_ELEM_CURITEMSTATE* = 0x00004000
-  COMP_ELEM_ALL* = COMP_ELEM_TYPE or COMP_ELEM_CHECKED or COMP_ELEM_DIRTY or COMP_ELEM_NOSCROLL or COMP_ELEM_POS_LEFT or COMP_ELEM_SIZE_WIDTH or COMP_ELEM_SIZE_HEIGHT or COMP_ELEM_POS_ZINDEX or COMP_ELEM_SOURCE or COMP_ELEM_FRIENDLYNAME or COMP_ELEM_POS_TOP or COMP_ELEM_SUBSCRIBEDURL or COMP_ELEM_ORIGINAL_CSI or COMP_ELEM_RESTORED_CSI or COMP_ELEM_CURITEMSTATE
+  COMP_ELEM_ALL* =
+    COMP_ELEM_TYPE or COMP_ELEM_CHECKED or COMP_ELEM_DIRTY or COMP_ELEM_NOSCROLL or
+    COMP_ELEM_POS_LEFT or COMP_ELEM_SIZE_WIDTH or COMP_ELEM_SIZE_HEIGHT or
+    COMP_ELEM_POS_ZINDEX or COMP_ELEM_SOURCE or COMP_ELEM_FRIENDLYNAME or
+    COMP_ELEM_POS_TOP or COMP_ELEM_SUBSCRIBEDURL or COMP_ELEM_ORIGINAL_CSI or
+    COMP_ELEM_RESTORED_CSI or COMP_ELEM_CURITEMSTATE
   DTI_ADDUI_DEFAULT* = 0x0
   DTI_ADDUI_DISPSUBWIZARD* = 0x1
   DTI_ADDUI_POSITIONITEM* = 0x2
@@ -4531,11 +5067,9 @@
   SHELLSTATEVERSION_IE4* = 9
   SHELLSTATEVERSION_WIN2K* = 10
 when winimUnicode:
-  type
-    SHELLSTATE* = SHELLSTATEW
+  type SHELLSTATE* = SHELLSTATEW
 when winimAnsi:
-  type
-    SHELLSTATE* = SHELLSTATEA
+  type SHELLSTATE* = SHELLSTATEA
 const
   SSF_SHOWALLOBJECTS* = 0x00000001
   SSF_SHOWEXTENSIONS* = 0x00000002
@@ -4581,51 +5115,66 @@
   SHELLSTATE_SIZE_WIN2K* = 32
   ITSAT_DEFAULT_LPARAM* = not DWORD_PTR(0)
 type
-  PFNCANSHAREFOLDERW* = proc (pszPath: PCWSTR): HRESULT {.stdcall.}
-  PFNSHOWSHAREFOLDERUIW* = proc (hwndParent: HWND, pszPath: PCWSTR): HRESULT {.stdcall.}
+  PFNCANSHAREFOLDERW* = proc(pszPath: PCWSTR): HRESULT {.stdcall.}
+  PFNSHOWSHAREFOLDERUIW* = proc(hwndParent: HWND, pszPath: PCWSTR): HRESULT {.stdcall.}
   DLLVERSIONINFO* {.pure.} = object
     cbSize*: DWORD
     dwMajorVersion*: DWORD
     dwMinorVersion*: DWORD
     dwBuildNumber*: DWORD
     dwPlatformID*: DWORD
-  DLLGETVERSIONPROC* = proc (P1: ptr DLLVERSIONINFO): HRESULT {.stdcall.}
-  LPFNDFMCALLBACK* = proc (psf: ptr IShellFolder, hwnd: HWND, pdtobj: ptr IDataObject, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.stdcall.}
+
+  DLLGETVERSIONPROC* = proc(P1: ptr DLLVERSIONINFO): HRESULT {.stdcall.}
+  LPFNDFMCALLBACK* = proc(
+    psf: ptr IShellFolder,
+    hwnd: HWND,
+    pdtobj: ptr IDataObject,
+    uMsg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+  ): HRESULT {.stdcall.}
   ASSOCIATIONELEMENT* {.pure.} = object
     ac*: ASSOCCLASS
     hkClass*: HKEY
     pszClass*: PCWSTR
+
   SHFILEINFOA* {.pure.} = object
     hIcon*: HICON
     iIcon*: int32
     dwAttributes*: DWORD
     szDisplayName*: array[MAX_PATH, CHAR]
     szTypeName*: array[80, CHAR]
+
   SHFILEINFOW* {.pure.} = object
     hIcon*: HICON
     iIcon*: int32
     dwAttributes*: DWORD
     szDisplayName*: array[MAX_PATH, WCHAR]
     szTypeName*: array[80, WCHAR]
+
   SHSTOCKICONINFO* {.pure.} = object
     cbSize*: DWORD
     hIcon*: HICON
     iSysImageIndex*: int32
     iIcon*: int32
     szPath*: array[MAX_PATH, WCHAR]
+
   DLLVERSIONINFO2* {.pure.} = object
     info1*: DLLVERSIONINFO
     dwFlags*: DWORD
     ullVersion*: ULONGLONG
+
   PERSIST_FOLDER_TARGET_INFO* {.pure.} = object
     pidlTargetFolder*: PIDLIST_ABSOLUTE
     szTargetParsingName*: array[260, WCHAR]
     szNetworkProvider*: array[260, WCHAR]
     dwAttributes*: DWORD
     csidl*: int32
+
   SORTCOLUMN* {.pure.} = object
     propkey*: PROPERTYKEY
     direction*: SORTDIRECTION
+
   CM_COLUMNINFO* {.pure.} = object
     cbSize*: DWORD
     dwMask*: DWORD
@@ -4634,12 +5183,15 @@
     uDefaultWidth*: UINT
     uIdealWidth*: UINT
     wszName*: array[80, WCHAR]
+
   SHELL_ITEM_RESOURCE* {.pure.} = object
     guidType*: GUID
     szName*: array[260, WCHAR]
+
   TCATEGORY_INFO* {.pure.} = object
     cif*: CATEGORYINFO_FLAGS
     wszName*: array[260, WCHAR]
+
   DESKBANDINFO* {.pure.} = object
     dwMask*: DWORD
     ptMinSize*: POINTL
@@ -4649,10 +5201,12 @@
     wszTitle*: array[256, WCHAR]
     dwModeFlags*: DWORD
     crBkgnd*: COLORREF
+
   BANDSITEINFO* {.pure.} = object
     dwMask*: DWORD
     dwState*: DWORD
     dwStyle*: DWORD
+
   KNOWNFOLDER_DEFINITION* {.pure.} = object
     category*: KF_CATEGORY
     pszName*: LPWSTR
@@ -4667,14 +5221,30 @@
     dwAttributes*: DWORD
     kfdFlags*: KF_DEFINITION_FLAGS
     ftidType*: FOLDERTYPEID
+
   IShellItem* {.pure.} = object
     lpVtbl*: ptr IShellItemVtbl
+
   IShellItemVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    BindToHandler*: proc(self: ptr IShellItem, pbc: ptr IBindCtx, bhid: REFGUID, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetParent*: proc(self: ptr IShellItem, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
-    GetDisplayName*: proc(self: ptr IShellItem, sigdnName: SIGDN, ppszName: ptr LPWSTR): HRESULT {.stdcall.}
-    GetAttributes*: proc(self: ptr IShellItem, sfgaoMask: SFGAOF, psfgaoAttribs: ptr SFGAOF): HRESULT {.stdcall.}
-    Compare*: proc(self: ptr IShellItem, psi: ptr IShellItem, hint: SICHINTF, piOrder: ptr int32): HRESULT {.stdcall.}
+    BindToHandler*: proc(
+      self: ptr IShellItem,
+      pbc: ptr IBindCtx,
+      bhid: REFGUID,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetParent*:
+      proc(self: ptr IShellItem, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
+    GetDisplayName*: proc(
+      self: ptr IShellItem, sigdnName: SIGDN, ppszName: ptr LPWSTR
+    ): HRESULT {.stdcall.}
+    GetAttributes*: proc(
+      self: ptr IShellItem, sfgaoMask: SFGAOF, psfgaoAttribs: ptr SFGAOF
+    ): HRESULT {.stdcall.}
+    Compare*: proc(
+      self: ptr IShellItem, psi: ptr IShellItem, hint: SICHINTF, piOrder: ptr int32
+    ): HRESULT {.stdcall.}
+
   NSTCCUSTOMDRAW* {.pure.} = object
     psi*: ptr IShellItem
     uItemState*: UINT
@@ -4684,115 +5254,183 @@
     himl*: HIMAGELIST
     iLevel*: int32
     iIndent*: int32
+
   PREVIEWHANDLERFRAMEINFO* {.pure.} = object
     haccel*: HACCEL
     cAccelEntries*: UINT
+
   EXP_PROPERTYSTORAGE* {.pure, packed.} = object
     cbSize*: DWORD
     dwSignature*: DWORD
     abPropertyStorage*: array[1, BYTE]
+
   FILE_ATTRIBUTES_ARRAY* {.pure.} = object
     cItems*: UINT
     dwSumFileAttributes*: DWORD
     dwProductFileAttributes*: DWORD
     rgdwFileAttributes*: array[1, DWORD]
+
   DROPDESCRIPTION* {.pure.} = object
     `type`*: DROPIMAGETYPE
     szMessage*: array[MAX_PATH, WCHAR]
     szInsert*: array[MAX_PATH, WCHAR]
+
   SHChangeNotifyEntry* {.pure, packed.} = object
     pidl*: PCIDLIST_ABSOLUTE
     fRecursive*: WINBOOL
+
   TSHARDAPPIDINFO* {.pure.} = object
     psi*: ptr IShellItem
     pszAppID*: PCWSTR
+
   TSHARD_APPIDINFOIDLIST* {.pure.} = object
     pidl*: PCIDLIST_ABSOLUTE
     pszAppID*: PCWSTR
+
   IShellLinkW* {.pure.} = object
     lpVtbl*: ptr IShellLinkWVtbl
+
   IShellLinkWVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetPath*: proc(self: ptr IShellLinkW, pszFile: LPWSTR, cch: int32, pfd: ptr WIN32_FIND_DATAW, fFlags: DWORD): HRESULT {.stdcall.}
-    GetIDList*: proc(self: ptr IShellLinkW, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.stdcall.}
-    SetIDList*: proc(self: ptr IShellLinkW, pidl: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
-    GetDescription*: proc(self: ptr IShellLinkW, pszName: LPWSTR, cch: int32): HRESULT {.stdcall.}
+    GetPath*: proc(
+      self: ptr IShellLinkW,
+      pszFile: LPWSTR,
+      cch: int32,
+      pfd: ptr WIN32_FIND_DATAW,
+      fFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    GetIDList*:
+      proc(self: ptr IShellLinkW, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+    SetIDList*:
+      proc(self: ptr IShellLinkW, pidl: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+    GetDescription*:
+      proc(self: ptr IShellLinkW, pszName: LPWSTR, cch: int32): HRESULT {.stdcall.}
     SetDescription*: proc(self: ptr IShellLinkW, pszName: LPCWSTR): HRESULT {.stdcall.}
-    GetWorkingDirectory*: proc(self: ptr IShellLinkW, pszDir: LPWSTR, cch: int32): HRESULT {.stdcall.}
-    SetWorkingDirectory*: proc(self: ptr IShellLinkW, pszDir: LPCWSTR): HRESULT {.stdcall.}
-    GetArguments*: proc(self: ptr IShellLinkW, pszArgs: LPWSTR, cch: int32): HRESULT {.stdcall.}
+    GetWorkingDirectory*:
+      proc(self: ptr IShellLinkW, pszDir: LPWSTR, cch: int32): HRESULT {.stdcall.}
+    SetWorkingDirectory*:
+      proc(self: ptr IShellLinkW, pszDir: LPCWSTR): HRESULT {.stdcall.}
+    GetArguments*:
+      proc(self: ptr IShellLinkW, pszArgs: LPWSTR, cch: int32): HRESULT {.stdcall.}
     SetArguments*: proc(self: ptr IShellLinkW, pszArgs: LPCWSTR): HRESULT {.stdcall.}
     GetHotkey*: proc(self: ptr IShellLinkW, pwHotkey: ptr WORD): HRESULT {.stdcall.}
     SetHotkey*: proc(self: ptr IShellLinkW, wHotkey: WORD): HRESULT {.stdcall.}
     GetShowCmd*: proc(self: ptr IShellLinkW, piShowCmd: ptr int32): HRESULT {.stdcall.}
     SetShowCmd*: proc(self: ptr IShellLinkW, iShowCmd: int32): HRESULT {.stdcall.}
-    GetIconLocation*: proc(self: ptr IShellLinkW, pszIconPath: LPWSTR, cch: int32, piIcon: ptr int32): HRESULT {.stdcall.}
-    SetIconLocation*: proc(self: ptr IShellLinkW, pszIconPath: LPCWSTR, iIcon: int32): HRESULT {.stdcall.}
-    SetRelativePath*: proc(self: ptr IShellLinkW, pszPathRel: LPCWSTR, dwReserved: DWORD): HRESULT {.stdcall.}
-    Resolve*: proc(self: ptr IShellLinkW, hwnd: HWND, fFlags: DWORD): HRESULT {.stdcall.}
+    GetIconLocation*: proc(
+      self: ptr IShellLinkW, pszIconPath: LPWSTR, cch: int32, piIcon: ptr int32
+    ): HRESULT {.stdcall.}
+    SetIconLocation*: proc(
+      self: ptr IShellLinkW, pszIconPath: LPCWSTR, iIcon: int32
+    ): HRESULT {.stdcall.}
+    SetRelativePath*: proc(
+      self: ptr IShellLinkW, pszPathRel: LPCWSTR, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    Resolve*:
+      proc(self: ptr IShellLinkW, hwnd: HWND, fFlags: DWORD): HRESULT {.stdcall.}
     SetPath*: proc(self: ptr IShellLinkW, pszFile: LPCWSTR): HRESULT {.stdcall.}
+
 when winimUnicode:
-  type
-    IShellLink* = IShellLinkW
+  type IShellLink* = IShellLinkW
 type
   IShellLinkA* {.pure.} = object
     lpVtbl*: ptr IShellLinkAVtbl
+
   IShellLinkAVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetPath*: proc(self: ptr IShellLinkA, pszFile: LPSTR, cch: int32, pfd: ptr WIN32_FIND_DATAA, fFlags: DWORD): HRESULT {.stdcall.}
-    GetIDList*: proc(self: ptr IShellLinkA, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.stdcall.}
-    SetIDList*: proc(self: ptr IShellLinkA, pidl: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
-    GetDescription*: proc(self: ptr IShellLinkA, pszName: LPSTR, cch: int32): HRESULT {.stdcall.}
+    GetPath*: proc(
+      self: ptr IShellLinkA,
+      pszFile: LPSTR,
+      cch: int32,
+      pfd: ptr WIN32_FIND_DATAA,
+      fFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    GetIDList*:
+      proc(self: ptr IShellLinkA, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+    SetIDList*:
+      proc(self: ptr IShellLinkA, pidl: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+    GetDescription*:
+      proc(self: ptr IShellLinkA, pszName: LPSTR, cch: int32): HRESULT {.stdcall.}
     SetDescription*: proc(self: ptr IShellLinkA, pszName: LPCSTR): HRESULT {.stdcall.}
-    GetWorkingDirectory*: proc(self: ptr IShellLinkA, pszDir: LPSTR, cch: int32): HRESULT {.stdcall.}
-    SetWorkingDirectory*: proc(self: ptr IShellLinkA, pszDir: LPCSTR): HRESULT {.stdcall.}
-    GetArguments*: proc(self: ptr IShellLinkA, pszArgs: LPSTR, cch: int32): HRESULT {.stdcall.}
+    GetWorkingDirectory*:
+      proc(self: ptr IShellLinkA, pszDir: LPSTR, cch: int32): HRESULT {.stdcall.}
+    SetWorkingDirectory*:
+      proc(self: ptr IShellLinkA, pszDir: LPCSTR): HRESULT {.stdcall.}
+    GetArguments*:
+      proc(self: ptr IShellLinkA, pszArgs: LPSTR, cch: int32): HRESULT {.stdcall.}
     SetArguments*: proc(self: ptr IShellLinkA, pszArgs: LPCSTR): HRESULT {.stdcall.}
     GetHotkey*: proc(self: ptr IShellLinkA, pwHotkey: ptr WORD): HRESULT {.stdcall.}
     SetHotkey*: proc(self: ptr IShellLinkA, wHotkey: WORD): HRESULT {.stdcall.}
     GetShowCmd*: proc(self: ptr IShellLinkA, piShowCmd: ptr int32): HRESULT {.stdcall.}
     SetShowCmd*: proc(self: ptr IShellLinkA, iShowCmd: int32): HRESULT {.stdcall.}
-    GetIconLocation*: proc(self: ptr IShellLinkA, pszIconPath: LPSTR, cch: int32, piIcon: ptr int32): HRESULT {.stdcall.}
-    SetIconLocation*: proc(self: ptr IShellLinkA, pszIconPath: LPCSTR, iIcon: int32): HRESULT {.stdcall.}
-    SetRelativePath*: proc(self: ptr IShellLinkA, pszPathRel: LPCSTR, dwReserved: DWORD): HRESULT {.stdcall.}
-    Resolve*: proc(self: ptr IShellLinkA, hwnd: HWND, fFlags: DWORD): HRESULT {.stdcall.}
+    GetIconLocation*: proc(
+      self: ptr IShellLinkA, pszIconPath: LPSTR, cch: int32, piIcon: ptr int32
+    ): HRESULT {.stdcall.}
+    SetIconLocation*: proc(
+      self: ptr IShellLinkA, pszIconPath: LPCSTR, iIcon: int32
+    ): HRESULT {.stdcall.}
+    SetRelativePath*: proc(
+      self: ptr IShellLinkA, pszPathRel: LPCSTR, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    Resolve*:
+      proc(self: ptr IShellLinkA, hwnd: HWND, fFlags: DWORD): HRESULT {.stdcall.}
     SetPath*: proc(self: ptr IShellLinkA, pszFile: LPCSTR): HRESULT {.stdcall.}
+
 when winimAnsi:
-  type
-    IShellLink* = IShellLinkA
+  type IShellLink* = IShellLinkA
 type
   TSHARDAPPIDINFOLINK* {.pure.} = object
     psl*: ptr IShellLink
     pszAppID*: PCWSTR
+
   AUTO_SCROLL_DATA* {.pure.} = object
     iNextSample*: int32
     dwLastScroll*: DWORD
     bFull*: WINBOOL
     pts*: array[NUM_POINTS, POINT]
     dwTimes*: array[NUM_POINTS, DWORD]
+
   SFVM_PROPPAGE_DATA* {.pure.} = object
     dwReserved*: DWORD
     pfn*: LPFNADDPROPSHEETPAGE
     lParam*: LPARAM
+
   SFVM_HELPTOPIC_DATA* {.pure.} = object
     wszHelpFile*: array[MAX_PATH, WCHAR]
     wszHelpTopic*: array[MAX_PATH, WCHAR]
+
   ITEMSPACING* {.pure.} = object
     cxSmall*: int32
     cySmall*: int32
     cxLarge*: int32
     cyLarge*: int32
+
   IShellFolderViewCB* {.pure.} = object
     lpVtbl*: ptr IShellFolderViewCBVtbl
+
   IShellFolderViewCBVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    MessageSFVCB*: proc(self: ptr IShellFolderViewCB, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.stdcall.}
+    MessageSFVCB*: proc(
+      self: ptr IShellFolderViewCB, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+    ): HRESULT {.stdcall.}
+
   SFV_CREATE* {.pure.} = object
     cbSize*: UINT
     pshf*: ptr IShellFolder
     psvOuter*: ptr IShellView
     psfvcb*: ptr IShellFolderViewCB
+
   IContextMenuCB* {.pure.} = object
     lpVtbl*: ptr IContextMenuCBVtbl
+
   IContextMenuCBVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CallBack*: proc(self: ptr IContextMenuCB, psf: ptr IShellFolder, hwndOwner: HWND, pdtobj: ptr IDataObject, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.stdcall.}
+    CallBack*: proc(
+      self: ptr IContextMenuCB,
+      psf: ptr IShellFolder,
+      hwndOwner: HWND,
+      pdtobj: ptr IDataObject,
+      uMsg: UINT,
+      wParam: WPARAM,
+      lParam: LPARAM,
+    ): HRESULT {.stdcall.}
+
   DEFCONTEXTMENU* {.pure.} = object
     hwnd*: HWND
     pcmcb*: ptr IContextMenuCB
@@ -4803,135 +5441,275 @@
     punkAssociationInfo*: ptr IUnknown
     cKeys*: UINT
     aKeys*: ptr HKEY
+
   IQueryAssociations* {.pure.} = object
     lpVtbl*: ptr IQueryAssociationsVtbl
+
   IQueryAssociationsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Init*: proc(self: ptr IQueryAssociations, flags: ASSOCF, pszAssoc: LPCWSTR, hkProgid: HKEY, hwnd: HWND): HRESULT {.stdcall.}
-    GetString*: proc(self: ptr IQueryAssociations, flags: ASSOCF, str: ASSOCSTR, pszExtra: LPCWSTR, pszOut: LPWSTR, pcchOut: ptr DWORD): HRESULT {.stdcall.}
-    GetKey*: proc(self: ptr IQueryAssociations, flags: ASSOCF, key: ASSOCKEY, pszExtra: LPCWSTR, phkeyOut: ptr HKEY): HRESULT {.stdcall.}
-    GetData*: proc(self: ptr IQueryAssociations, flags: ASSOCF, data: ASSOCDATA, pszExtra: LPCWSTR, pvOut: LPVOID, pcbOut: ptr DWORD): HRESULT {.stdcall.}
-    GetEnum*: proc(self: ptr IQueryAssociations, flags: ASSOCF, assocenum: ASSOCENUM, pszExtra: LPCWSTR, riid: REFIID, ppvOut: ptr LPVOID): HRESULT {.stdcall.}
+    Init*: proc(
+      self: ptr IQueryAssociations,
+      flags: ASSOCF,
+      pszAssoc: LPCWSTR,
+      hkProgid: HKEY,
+      hwnd: HWND,
+    ): HRESULT {.stdcall.}
+    GetString*: proc(
+      self: ptr IQueryAssociations,
+      flags: ASSOCF,
+      str: ASSOCSTR,
+      pszExtra: LPCWSTR,
+      pszOut: LPWSTR,
+      pcchOut: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetKey*: proc(
+      self: ptr IQueryAssociations,
+      flags: ASSOCF,
+      key: ASSOCKEY,
+      pszExtra: LPCWSTR,
+      phkeyOut: ptr HKEY,
+    ): HRESULT {.stdcall.}
+    GetData*: proc(
+      self: ptr IQueryAssociations,
+      flags: ASSOCF,
+      data: ASSOCDATA,
+      pszExtra: LPCWSTR,
+      pvOut: LPVOID,
+      pcbOut: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetEnum*: proc(
+      self: ptr IQueryAssociations,
+      flags: ASSOCF,
+      assocenum: ASSOCENUM,
+      pszExtra: LPCWSTR,
+      riid: REFIID,
+      ppvOut: ptr LPVOID,
+    ): HRESULT {.stdcall.}
+
   IFolderViewOC* {.pure.} = object
     lpVtbl*: ptr IFolderViewOCVtbl
+
   IFolderViewOCVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    SetFolderView*: proc(self: ptr IFolderViewOC, pdisp: ptr IDispatch): HRESULT {.stdcall.}
+    SetFolderView*:
+      proc(self: ptr IFolderViewOC, pdisp: ptr IDispatch): HRESULT {.stdcall.}
+
   DShellFolderViewEvents* {.pure.} = object
     lpVtbl*: ptr DShellFolderViewEventsVtbl
+
   DShellFolderViewEventsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
   DFConstraint* {.pure.} = object
     lpVtbl*: ptr DFConstraintVtbl
+
   DFConstraintVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_Name*: proc(self: ptr DFConstraint, pbs: ptr BSTR): HRESULT {.stdcall.}
     get_Value*: proc(self: ptr DFConstraint, pv: ptr VARIANT): HRESULT {.stdcall.}
+
   FolderItems* {.pure.} = object
     lpVtbl*: ptr FolderItemsVtbl
+
   FolderItemsVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_Count*: proc(self: ptr FolderItems, plCount: ptr LONG): HRESULT {.stdcall.}
-    get_Application*: proc(self: ptr FolderItems, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Parent*: proc(self: ptr FolderItems, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
-    Item*: proc(self: ptr FolderItems, index: VARIANT, ppid: ptr ptr FolderItem): HRESULT {.stdcall.}
+    get_Application*:
+      proc(self: ptr FolderItems, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Parent*:
+      proc(self: ptr FolderItems, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    Item*: proc(
+      self: ptr FolderItems, index: VARIANT, ppid: ptr ptr FolderItem
+    ): HRESULT {.stdcall.}
     NewEnum*: proc(self: ptr FolderItems, ppunk: ptr ptr IUnknown): HRESULT {.stdcall.}
+
   Folder* {.pure.} = object
     lpVtbl*: ptr FolderVtbl
+
   FolderVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_Title*: proc(self: ptr Folder, pbs: ptr BSTR): HRESULT {.stdcall.}
-    get_Application*: proc(self: ptr Folder, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Application*:
+      proc(self: ptr Folder, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_Parent*: proc(self: ptr Folder, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
     get_ParentFolder*: proc(self: ptr Folder, ppsf: ptr ptr Folder): HRESULT {.stdcall.}
     Items*: proc(self: ptr Folder, ppid: ptr ptr FolderItems): HRESULT {.stdcall.}
-    ParseName*: proc(self: ptr Folder, bName: BSTR, ppid: ptr ptr FolderItem): HRESULT {.stdcall.}
-    NewFolder*: proc(self: ptr Folder, bName: BSTR, vOptions: VARIANT): HRESULT {.stdcall.}
-    MoveHere*: proc(self: ptr Folder, vItem: VARIANT, vOptions: VARIANT): HRESULT {.stdcall.}
-    CopyHere*: proc(self: ptr Folder, vItem: VARIANT, vOptions: VARIANT): HRESULT {.stdcall.}
-    GetDetailsOf*: proc(self: ptr Folder, vItem: VARIANT, iColumn: int32, pbs: ptr BSTR): HRESULT {.stdcall.}
+    ParseName*:
+      proc(self: ptr Folder, bName: BSTR, ppid: ptr ptr FolderItem): HRESULT {.stdcall.}
+    NewFolder*:
+      proc(self: ptr Folder, bName: BSTR, vOptions: VARIANT): HRESULT {.stdcall.}
+    MoveHere*:
+      proc(self: ptr Folder, vItem: VARIANT, vOptions: VARIANT): HRESULT {.stdcall.}
+    CopyHere*:
+      proc(self: ptr Folder, vItem: VARIANT, vOptions: VARIANT): HRESULT {.stdcall.}
+    GetDetailsOf*: proc(
+      self: ptr Folder, vItem: VARIANT, iColumn: int32, pbs: ptr BSTR
+    ): HRESULT {.stdcall.}
+
   Folder2* {.pure.} = object
     lpVtbl*: ptr Folder2Vtbl
+
   Folder2Vtbl* {.pure, inheritable.} = object of FolderVtbl
     get_Self*: proc(self: ptr Folder2, ppfi: ptr ptr FolderItem): HRESULT {.stdcall.}
     get_OfflineStatus*: proc(self: ptr Folder2, pul: ptr LONG): HRESULT {.stdcall.}
     Synchronize*: proc(self: ptr Folder2): HRESULT {.stdcall.}
-    get_HaveToShowWebViewBarricade*: proc(self: ptr Folder2, pbHaveToShowWebViewBarricade: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    get_HaveToShowWebViewBarricade*: proc(
+      self: ptr Folder2, pbHaveToShowWebViewBarricade: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
     DismissedWebViewBarricade*: proc(self: ptr Folder2): HRESULT {.stdcall.}
+
   Folder3* {.pure.} = object
     lpVtbl*: ptr Folder3Vtbl
+
   Folder3Vtbl* {.pure, inheritable.} = object of Folder2Vtbl
-    get_ShowWebViewBarricade*: proc(self: ptr Folder3, pbShowWebViewBarricade: ptr VARIANT_BOOL): HRESULT {.stdcall.}
-    put_ShowWebViewBarricade*: proc(self: ptr Folder3, bShowWebViewBarricade: VARIANT_BOOL): HRESULT {.stdcall.}
+    get_ShowWebViewBarricade*: proc(
+      self: ptr Folder3, pbShowWebViewBarricade: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+    put_ShowWebViewBarricade*:
+      proc(self: ptr Folder3, bShowWebViewBarricade: VARIANT_BOOL): HRESULT {.stdcall.}
+
   FolderItem2* {.pure.} = object
     lpVtbl*: ptr FolderItem2Vtbl
+
   FolderItem2Vtbl* {.pure, inheritable.} = object of FolderItemVtbl
-    InvokeVerbEx*: proc(self: ptr FolderItem2, vVerb: VARIANT, vArgs: VARIANT): HRESULT {.stdcall.}
-    ExtendedProperty*: proc(self: ptr FolderItem2, bstrPropName: BSTR, pvRet: ptr VARIANT): HRESULT {.stdcall.}
+    InvokeVerbEx*:
+      proc(self: ptr FolderItem2, vVerb: VARIANT, vArgs: VARIANT): HRESULT {.stdcall.}
+    ExtendedProperty*: proc(
+      self: ptr FolderItem2, bstrPropName: BSTR, pvRet: ptr VARIANT
+    ): HRESULT {.stdcall.}
+
   FolderItems2* {.pure.} = object
     lpVtbl*: ptr FolderItems2Vtbl
+
   FolderItems2Vtbl* {.pure, inheritable.} = object of FolderItemsVtbl
-    InvokeVerbEx*: proc(self: ptr FolderItems2, vVerb: VARIANT, vArgs: VARIANT): HRESULT {.stdcall.}
+    InvokeVerbEx*:
+      proc(self: ptr FolderItems2, vVerb: VARIANT, vArgs: VARIANT): HRESULT {.stdcall.}
+
   FolderItems3* {.pure.} = object
     lpVtbl*: ptr FolderItems3Vtbl
+
   FolderItems3Vtbl* {.pure, inheritable.} = object of FolderItems2Vtbl
-    Filter*: proc(self: ptr FolderItems3, grfFlags: LONG, bstrFileSpec: BSTR): HRESULT {.stdcall.}
-    get_Verbs*: proc(self: ptr FolderItems3, ppfic: ptr ptr FolderItemVerbs): HRESULT {.stdcall.}
+    Filter*: proc(self: ptr FolderItems3, grfFlags: LONG, bstrFileSpec: BSTR): HRESULT {.
+      stdcall
+    .}
+    get_Verbs*:
+      proc(self: ptr FolderItems3, ppfic: ptr ptr FolderItemVerbs): HRESULT {.stdcall.}
+
   IShellLinkDual* {.pure.} = object
     lpVtbl*: ptr IShellLinkDualVtbl
+
   IShellLinkDualVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     get_Path*: proc(self: ptr IShellLinkDual, pbs: ptr BSTR): HRESULT {.stdcall.}
     put_Path*: proc(self: ptr IShellLinkDual, bs: BSTR): HRESULT {.stdcall.}
     get_Description*: proc(self: ptr IShellLinkDual, pbs: ptr BSTR): HRESULT {.stdcall.}
     put_Description*: proc(self: ptr IShellLinkDual, bs: BSTR): HRESULT {.stdcall.}
-    get_WorkingDirectory*: proc(self: ptr IShellLinkDual, pbs: ptr BSTR): HRESULT {.stdcall.}
+    get_WorkingDirectory*:
+      proc(self: ptr IShellLinkDual, pbs: ptr BSTR): HRESULT {.stdcall.}
     put_WorkingDirectory*: proc(self: ptr IShellLinkDual, bs: BSTR): HRESULT {.stdcall.}
     get_Arguments*: proc(self: ptr IShellLinkDual, pbs: ptr BSTR): HRESULT {.stdcall.}
     put_Arguments*: proc(self: ptr IShellLinkDual, bs: BSTR): HRESULT {.stdcall.}
     get_Hotkey*: proc(self: ptr IShellLinkDual, piHK: ptr int32): HRESULT {.stdcall.}
     put_Hotkey*: proc(self: ptr IShellLinkDual, iHK: int32): HRESULT {.stdcall.}
-    get_ShowCommand*: proc(self: ptr IShellLinkDual, piShowCommand: ptr int32): HRESULT {.stdcall.}
-    put_ShowCommand*: proc(self: ptr IShellLinkDual, iShowCommand: int32): HRESULT {.stdcall.}
+    get_ShowCommand*:
+      proc(self: ptr IShellLinkDual, piShowCommand: ptr int32): HRESULT {.stdcall.}
+    put_ShowCommand*:
+      proc(self: ptr IShellLinkDual, iShowCommand: int32): HRESULT {.stdcall.}
     Resolve*: proc(self: ptr IShellLinkDual, fFlags: int32): HRESULT {.stdcall.}
-    GetIconLocation*: proc(self: ptr IShellLinkDual, pbs: ptr BSTR, piIcon: ptr int32): HRESULT {.stdcall.}
-    SetIconLocation*: proc(self: ptr IShellLinkDual, bs: BSTR, iIcon: int32): HRESULT {.stdcall.}
+    GetIconLocation*: proc(
+      self: ptr IShellLinkDual, pbs: ptr BSTR, piIcon: ptr int32
+    ): HRESULT {.stdcall.}
+    SetIconLocation*:
+      proc(self: ptr IShellLinkDual, bs: BSTR, iIcon: int32): HRESULT {.stdcall.}
     Save*: proc(self: ptr IShellLinkDual, vWhere: VARIANT): HRESULT {.stdcall.}
+
   IShellLinkDual2* {.pure.} = object
     lpVtbl*: ptr IShellLinkDual2Vtbl
+
   IShellLinkDual2Vtbl* {.pure, inheritable.} = object of IShellLinkDualVtbl
-    get_Target*: proc(self: ptr IShellLinkDual2, ppfi: ptr ptr FolderItem): HRESULT {.stdcall.}
+    get_Target*:
+      proc(self: ptr IShellLinkDual2, ppfi: ptr ptr FolderItem): HRESULT {.stdcall.}
+
   IShellFolderViewDual* {.pure.} = object
     lpVtbl*: ptr IShellFolderViewDualVtbl
+
   IShellFolderViewDualVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_Application*: proc(self: ptr IShellFolderViewDual, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Parent*: proc(self: ptr IShellFolderViewDual, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Folder*: proc(self: ptr IShellFolderViewDual, ppid: ptr ptr Folder): HRESULT {.stdcall.}
-    SelectedItems*: proc(self: ptr IShellFolderViewDual, ppid: ptr ptr FolderItems): HRESULT {.stdcall.}
-    get_FocusedItem*: proc(self: ptr IShellFolderViewDual, ppid: ptr ptr FolderItem): HRESULT {.stdcall.}
-    SelectItem*: proc(self: ptr IShellFolderViewDual, pvfi: ptr VARIANT, dwFlags: int32): HRESULT {.stdcall.}
-    PopupItemMenu*: proc(self: ptr IShellFolderViewDual, pfi: ptr FolderItem, vx: VARIANT, vy: VARIANT, pbs: ptr BSTR): HRESULT {.stdcall.}
-    get_Script*: proc(self: ptr IShellFolderViewDual, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_ViewOptions*: proc(self: ptr IShellFolderViewDual, plViewOptions: ptr LONG): HRESULT {.stdcall.}
+    get_Application*:
+      proc(self: ptr IShellFolderViewDual, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Parent*:
+      proc(self: ptr IShellFolderViewDual, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Folder*:
+      proc(self: ptr IShellFolderViewDual, ppid: ptr ptr Folder): HRESULT {.stdcall.}
+    SelectedItems*: proc(
+      self: ptr IShellFolderViewDual, ppid: ptr ptr FolderItems
+    ): HRESULT {.stdcall.}
+    get_FocusedItem*: proc(
+      self: ptr IShellFolderViewDual, ppid: ptr ptr FolderItem
+    ): HRESULT {.stdcall.}
+    SelectItem*: proc(
+      self: ptr IShellFolderViewDual, pvfi: ptr VARIANT, dwFlags: int32
+    ): HRESULT {.stdcall.}
+    PopupItemMenu*: proc(
+      self: ptr IShellFolderViewDual,
+      pfi: ptr FolderItem,
+      vx: VARIANT,
+      vy: VARIANT,
+      pbs: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    get_Script*: proc(
+      self: ptr IShellFolderViewDual, ppDisp: ptr ptr IDispatch
+    ): HRESULT {.stdcall.}
+    get_ViewOptions*:
+      proc(self: ptr IShellFolderViewDual, plViewOptions: ptr LONG): HRESULT {.stdcall.}
+
   IShellFolderViewDual2* {.pure.} = object
     lpVtbl*: ptr IShellFolderViewDual2Vtbl
+
   IShellFolderViewDual2Vtbl* {.pure, inheritable.} = object of IShellFolderViewDualVtbl
-    get_CurrentViewMode*: proc(self: ptr IShellFolderViewDual2, pViewMode: ptr UINT): HRESULT {.stdcall.}
-    put_CurrentViewMode*: proc(self: ptr IShellFolderViewDual2, ViewMode: UINT): HRESULT {.stdcall.}
-    SelectItemRelative*: proc(self: ptr IShellFolderViewDual2, iRelative: int32): HRESULT {.stdcall.}
+    get_CurrentViewMode*:
+      proc(self: ptr IShellFolderViewDual2, pViewMode: ptr UINT): HRESULT {.stdcall.}
+    put_CurrentViewMode*:
+      proc(self: ptr IShellFolderViewDual2, ViewMode: UINT): HRESULT {.stdcall.}
+    SelectItemRelative*:
+      proc(self: ptr IShellFolderViewDual2, iRelative: int32): HRESULT {.stdcall.}
+
   IShellFolderViewDual3* {.pure.} = object
     lpVtbl*: ptr IShellFolderViewDual3Vtbl
+
   IShellFolderViewDual3Vtbl* {.pure, inheritable.} = object of IShellFolderViewDual2Vtbl
-    get_GroupBy*: proc(self: ptr IShellFolderViewDual3, pbstrGroupBy: ptr BSTR): HRESULT {.stdcall.}
-    put_GroupBy*: proc(self: ptr IShellFolderViewDual3, bstrGroupBy: BSTR): HRESULT {.stdcall.}
-    get_FolderFlags*: proc(self: ptr IShellFolderViewDual3, pdwFlags: ptr DWORD): HRESULT {.stdcall.}
-    put_FolderFlags*: proc(self: ptr IShellFolderViewDual3, dwFlags: DWORD): HRESULT {.stdcall.}
-    get_SortColumns*: proc(self: ptr IShellFolderViewDual3, pbstrSortColumns: ptr BSTR): HRESULT {.stdcall.}
-    put_SortColumns*: proc(self: ptr IShellFolderViewDual3, bstrSortColumns: BSTR): HRESULT {.stdcall.}
-    put_IconSize*: proc(self: ptr IShellFolderViewDual3, iIconSize: int32): HRESULT {.stdcall.}
-    get_IconSize*: proc(self: ptr IShellFolderViewDual3, piIconSize: ptr int32): HRESULT {.stdcall.}
-    FilterView*: proc(self: ptr IShellFolderViewDual3, bstrFilterText: BSTR): HRESULT {.stdcall.}
+    get_GroupBy*:
+      proc(self: ptr IShellFolderViewDual3, pbstrGroupBy: ptr BSTR): HRESULT {.stdcall.}
+    put_GroupBy*:
+      proc(self: ptr IShellFolderViewDual3, bstrGroupBy: BSTR): HRESULT {.stdcall.}
+    get_FolderFlags*:
+      proc(self: ptr IShellFolderViewDual3, pdwFlags: ptr DWORD): HRESULT {.stdcall.}
+    put_FolderFlags*:
+      proc(self: ptr IShellFolderViewDual3, dwFlags: DWORD): HRESULT {.stdcall.}
+    get_SortColumns*: proc(
+      self: ptr IShellFolderViewDual3, pbstrSortColumns: ptr BSTR
+    ): HRESULT {.stdcall.}
+    put_SortColumns*:
+      proc(self: ptr IShellFolderViewDual3, bstrSortColumns: BSTR): HRESULT {.stdcall.}
+    put_IconSize*:
+      proc(self: ptr IShellFolderViewDual3, iIconSize: int32): HRESULT {.stdcall.}
+    get_IconSize*:
+      proc(self: ptr IShellFolderViewDual3, piIconSize: ptr int32): HRESULT {.stdcall.}
+    FilterView*:
+      proc(self: ptr IShellFolderViewDual3, bstrFilterText: BSTR): HRESULT {.stdcall.}
+
   IShellDispatch* {.pure.} = object
     lpVtbl*: ptr IShellDispatchVtbl
+
   IShellDispatchVtbl* {.pure, inheritable.} = object of IDispatchVtbl
-    get_Application*: proc(self: ptr IShellDispatch, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
-    get_Parent*: proc(self: ptr IShellDispatch, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
-    NameSpace*: proc(self: ptr IShellDispatch, vDir: VARIANT, ppsdf: ptr ptr Folder): HRESULT {.stdcall.}
-    BrowseForFolder*: proc(self: ptr IShellDispatch, Hwnd: LONG, Title: BSTR, Options: LONG, RootFolder: VARIANT, ppsdf: ptr ptr Folder): HRESULT {.stdcall.}
-    Windows*: proc(self: ptr IShellDispatch, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Application*:
+      proc(self: ptr IShellDispatch, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    get_Parent*:
+      proc(self: ptr IShellDispatch, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
+    NameSpace*: proc(
+      self: ptr IShellDispatch, vDir: VARIANT, ppsdf: ptr ptr Folder
+    ): HRESULT {.stdcall.}
+    BrowseForFolder*: proc(
+      self: ptr IShellDispatch,
+      Hwnd: LONG,
+      Title: BSTR,
+      Options: LONG,
+      RootFolder: VARIANT,
+      ppsdf: ptr ptr Folder,
+    ): HRESULT {.stdcall.}
+    Windows*:
+      proc(self: ptr IShellDispatch, ppid: ptr ptr IDispatch): HRESULT {.stdcall.}
     Open*: proc(self: ptr IShellDispatch, vDir: VARIANT): HRESULT {.stdcall.}
     Explore*: proc(self: ptr IShellDispatch, vDir: VARIANT): HRESULT {.stdcall.}
     MinimizeAll*: proc(self: ptr IShellDispatch): HRESULT {.stdcall.}
@@ -4949,3950 +5727,16888 @@
     FindFiles*: proc(self: ptr IShellDispatch): HRESULT {.stdcall.}
     FindComputer*: proc(self: ptr IShellDispatch): HRESULT {.stdcall.}
     RefreshMenu*: proc(self: ptr IShellDispatch): HRESULT {.stdcall.}
-    ControlPanelItem*: proc(self: ptr IShellDispatch, bstrDir: BSTR): HRESULT {.stdcall.}
+    ControlPanelItem*:
+      proc(self: ptr IShellDispatch, bstrDir: BSTR): HRESULT {.stdcall.}
+
   IShellDispatch2* {.pure.} = object
     lpVtbl*: ptr IShellDispatch2Vtbl
+
   IShellDispatch2Vtbl* {.pure, inheritable.} = object of IShellDispatchVtbl
-    IsRestricted*: proc(self: ptr IShellDispatch2, Group: BSTR, Restriction: BSTR, plRestrictValue: ptr LONG): HRESULT {.stdcall.}
-    ShellExecute*: proc(self: ptr IShellDispatch2, File: BSTR, vArgs: VARIANT, vDir: VARIANT, vOperation: VARIANT, vShow: VARIANT): HRESULT {.stdcall.}
-    FindPrinter*: proc(self: ptr IShellDispatch2, name: BSTR, location: BSTR, model: BSTR): HRESULT {.stdcall.}
-    GetSystemInformation*: proc(self: ptr IShellDispatch2, name: BSTR, pv: ptr VARIANT): HRESULT {.stdcall.}
-    ServiceStart*: proc(self: ptr IShellDispatch2, ServiceName: BSTR, Persistent: VARIANT, pSuccess: ptr VARIANT): HRESULT {.stdcall.}
-    ServiceStop*: proc(self: ptr IShellDispatch2, ServiceName: BSTR, Persistent: VARIANT, pSuccess: ptr VARIANT): HRESULT {.stdcall.}
-    IsServiceRunning*: proc(self: ptr IShellDispatch2, ServiceName: BSTR, pRunning: ptr VARIANT): HRESULT {.stdcall.}
-    CanStartStopService*: proc(self: ptr IShellDispatch2, ServiceName: BSTR, pCanStartStop: ptr VARIANT): HRESULT {.stdcall.}
-    ShowBrowserBar*: proc(self: ptr IShellDispatch2, bstrClsid: BSTR, bShow: VARIANT, pSuccess: ptr VARIANT): HRESULT {.stdcall.}
+    IsRestricted*: proc(
+      self: ptr IShellDispatch2,
+      Group: BSTR,
+      Restriction: BSTR,
+      plRestrictValue: ptr LONG,
+    ): HRESULT {.stdcall.}
+    ShellExecute*: proc(
+      self: ptr IShellDispatch2,
+      File: BSTR,
+      vArgs: VARIANT,
+      vDir: VARIANT,
+      vOperation: VARIANT,
+      vShow: VARIANT,
+    ): HRESULT {.stdcall.}
+    FindPrinter*: proc(
+      self: ptr IShellDispatch2, name: BSTR, location: BSTR, model: BSTR
+    ): HRESULT {.stdcall.}
+    GetSystemInformation*:
+      proc(self: ptr IShellDispatch2, name: BSTR, pv: ptr VARIANT): HRESULT {.stdcall.}
+    ServiceStart*: proc(
+      self: ptr IShellDispatch2,
+      ServiceName: BSTR,
+      Persistent: VARIANT,
+      pSuccess: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    ServiceStop*: proc(
+      self: ptr IShellDispatch2,
+      ServiceName: BSTR,
+      Persistent: VARIANT,
+      pSuccess: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    IsServiceRunning*: proc(
+      self: ptr IShellDispatch2, ServiceName: BSTR, pRunning: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    CanStartStopService*: proc(
+      self: ptr IShellDispatch2, ServiceName: BSTR, pCanStartStop: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    ShowBrowserBar*: proc(
+      self: ptr IShellDispatch2, bstrClsid: BSTR, bShow: VARIANT, pSuccess: ptr VARIANT
+    ): HRESULT {.stdcall.}
+
   IShellDispatch3* {.pure.} = object
     lpVtbl*: ptr IShellDispatch3Vtbl
+
   IShellDispatch3Vtbl* {.pure, inheritable.} = object of IShellDispatch2Vtbl
-    AddToRecent*: proc(self: ptr IShellDispatch3, varFile: VARIANT, bstrCategory: BSTR): HRESULT {.stdcall.}
+    AddToRecent*: proc(
+      self: ptr IShellDispatch3, varFile: VARIANT, bstrCategory: BSTR
+    ): HRESULT {.stdcall.}
+
   IShellDispatch4* {.pure.} = object
     lpVtbl*: ptr IShellDispatch4Vtbl
+
   IShellDispatch4Vtbl* {.pure, inheritable.} = object of IShellDispatch3Vtbl
     WindowsSecurity*: proc(self: ptr IShellDispatch4): HRESULT {.stdcall.}
     ToggleDesktop*: proc(self: ptr IShellDispatch4): HRESULT {.stdcall.}
-    ExplorerPolicy*: proc(self: ptr IShellDispatch4, bstrPolicyName: BSTR, pValue: ptr VARIANT): HRESULT {.stdcall.}
-    GetSetting*: proc(self: ptr IShellDispatch4, lSetting: LONG, pResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    ExplorerPolicy*: proc(
+      self: ptr IShellDispatch4, bstrPolicyName: BSTR, pValue: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    GetSetting*: proc(
+      self: ptr IShellDispatch4, lSetting: LONG, pResult: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+
   IShellDispatch5* {.pure.} = object
     lpVtbl*: ptr IShellDispatch5Vtbl
+
   IShellDispatch5Vtbl* {.pure, inheritable.} = object of IShellDispatch4Vtbl
     WindowSwitcher*: proc(self: ptr IShellDispatch5): HRESULT {.stdcall.}
+
   IShellDispatch6* {.pure.} = object
     lpVtbl*: ptr IShellDispatch6Vtbl
+
   IShellDispatch6Vtbl* {.pure, inheritable.} = object of IShellDispatch5Vtbl
     SearchCommand*: proc(self: ptr IShellDispatch6): HRESULT {.stdcall.}
+
   IFileSearchBand* {.pure.} = object
     lpVtbl*: ptr IFileSearchBandVtbl
+
   IFileSearchBandVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     SetFocus*: proc(self: ptr IFileSearchBand): HRESULT {.stdcall.}
-    SetSearchParameters*: proc(self: ptr IFileSearchBand, pbstrSearchID: ptr BSTR, bNavToResults: VARIANT_BOOL, pvarScope: ptr VARIANT, pvarQueryFile: ptr VARIANT): HRESULT {.stdcall.}
-    get_SearchID*: proc(self: ptr IFileSearchBand, pbstrSearchID: ptr BSTR): HRESULT {.stdcall.}
-    get_Scope*: proc(self: ptr IFileSearchBand, pvarScope: ptr VARIANT): HRESULT {.stdcall.}
-    get_QueryFile*: proc(self: ptr IFileSearchBand, pvarFile: ptr VARIANT): HRESULT {.stdcall.}
+    SetSearchParameters*: proc(
+      self: ptr IFileSearchBand,
+      pbstrSearchID: ptr BSTR,
+      bNavToResults: VARIANT_BOOL,
+      pvarScope: ptr VARIANT,
+      pvarQueryFile: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    get_SearchID*:
+      proc(self: ptr IFileSearchBand, pbstrSearchID: ptr BSTR): HRESULT {.stdcall.}
+    get_Scope*:
+      proc(self: ptr IFileSearchBand, pvarScope: ptr VARIANT): HRESULT {.stdcall.}
+    get_QueryFile*:
+      proc(self: ptr IFileSearchBand, pvarFile: ptr VARIANT): HRESULT {.stdcall.}
+
   IWebWizardHost* {.pure.} = object
     lpVtbl*: ptr IWebWizardHostVtbl
+
   IWebWizardHostVtbl* {.pure, inheritable.} = object of IDispatchVtbl
     FinalBack*: proc(self: ptr IWebWizardHost): HRESULT {.stdcall.}
     FinalNext*: proc(self: ptr IWebWizardHost): HRESULT {.stdcall.}
     Cancel*: proc(self: ptr IWebWizardHost): HRESULT {.stdcall.}
     put_Caption*: proc(self: ptr IWebWizardHost, bstrCaption: BSTR): HRESULT {.stdcall.}
-    get_Caption*: proc(self: ptr IWebWizardHost, pbstrCaption: ptr BSTR): HRESULT {.stdcall.}
-    put_Property*: proc(self: ptr IWebWizardHost, bstrPropertyName: BSTR, pvProperty: ptr VARIANT): HRESULT {.stdcall.}
-    get_Property*: proc(self: ptr IWebWizardHost, bstrPropertyName: BSTR, pvProperty: ptr VARIANT): HRESULT {.stdcall.}
-    SetWizardButtons*: proc(self: ptr IWebWizardHost, vfEnableBack: VARIANT_BOOL, vfEnableNext: VARIANT_BOOL, vfLastPage: VARIANT_BOOL): HRESULT {.stdcall.}
-    SetHeaderText*: proc(self: ptr IWebWizardHost, bstrHeaderTitle: BSTR, bstrHeaderSubtitle: BSTR): HRESULT {.stdcall.}
+    get_Caption*:
+      proc(self: ptr IWebWizardHost, pbstrCaption: ptr BSTR): HRESULT {.stdcall.}
+    put_Property*: proc(
+      self: ptr IWebWizardHost, bstrPropertyName: BSTR, pvProperty: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    get_Property*: proc(
+      self: ptr IWebWizardHost, bstrPropertyName: BSTR, pvProperty: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    SetWizardButtons*: proc(
+      self: ptr IWebWizardHost,
+      vfEnableBack: VARIANT_BOOL,
+      vfEnableNext: VARIANT_BOOL,
+      vfLastPage: VARIANT_BOOL,
+    ): HRESULT {.stdcall.}
+    SetHeaderText*: proc(
+      self: ptr IWebWizardHost, bstrHeaderTitle: BSTR, bstrHeaderSubtitle: BSTR
+    ): HRESULT {.stdcall.}
+
   INewWDEvents* {.pure.} = object
     lpVtbl*: ptr INewWDEventsVtbl
+
   INewWDEventsVtbl* {.pure, inheritable.} = object of IWebWizardHostVtbl
-    PassportAuthenticate*: proc(self: ptr INewWDEvents, bstrSignInUrl: BSTR, pvfAuthenitcated: ptr VARIANT_BOOL): HRESULT {.stdcall.}
+    PassportAuthenticate*: proc(
+      self: ptr INewWDEvents, bstrSignInUrl: BSTR, pvfAuthenitcated: ptr VARIANT_BOOL
+    ): HRESULT {.stdcall.}
+
   IDataObjectAsyncCapability* {.pure.} = object
     lpVtbl*: ptr IDataObjectAsyncCapabilityVtbl
+
   IDataObjectAsyncCapabilityVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetAsyncMode*: proc(self: ptr IDataObjectAsyncCapability, fDoOpAsync: WINBOOL): HRESULT {.stdcall.}
-    GetAsyncMode*: proc(self: ptr IDataObjectAsyncCapability, pfIsOpAsync: ptr WINBOOL): HRESULT {.stdcall.}
-    StartOperation*: proc(self: ptr IDataObjectAsyncCapability, pbcReserved: ptr IBindCtx): HRESULT {.stdcall.}
-    InOperation*: proc(self: ptr IDataObjectAsyncCapability, pfInAsyncOp: ptr WINBOOL): HRESULT {.stdcall.}
-    EndOperation*: proc(self: ptr IDataObjectAsyncCapability, hResult: HRESULT, pbcReserved: ptr IBindCtx, dwEffects: DWORD): HRESULT {.stdcall.}
+    SetAsyncMode*: proc(
+      self: ptr IDataObjectAsyncCapability, fDoOpAsync: WINBOOL
+    ): HRESULT {.stdcall.}
+    GetAsyncMode*: proc(
+      self: ptr IDataObjectAsyncCapability, pfIsOpAsync: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    StartOperation*: proc(
+      self: ptr IDataObjectAsyncCapability, pbcReserved: ptr IBindCtx
+    ): HRESULT {.stdcall.}
+    InOperation*: proc(
+      self: ptr IDataObjectAsyncCapability, pfInAsyncOp: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    EndOperation*: proc(
+      self: ptr IDataObjectAsyncCapability,
+      hResult: HRESULT,
+      pbcReserved: ptr IBindCtx,
+      dwEffects: DWORD,
+    ): HRESULT {.stdcall.}
+
   IObjectArray* {.pure.} = object
     lpVtbl*: ptr IObjectArrayVtbl
+
   IObjectArrayVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetCount*: proc(self: ptr IObjectArray, pcObjects: ptr UINT): HRESULT {.stdcall.}
-    GetAt*: proc(self: ptr IObjectArray, uiIndex: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetAt*: proc(
+      self: ptr IObjectArray, uiIndex: UINT, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+
   IObjectCollection* {.pure.} = object
     lpVtbl*: ptr IObjectCollectionVtbl
+
   IObjectCollectionVtbl* {.pure, inheritable.} = object of IObjectArrayVtbl
-    AddObject*: proc(self: ptr IObjectCollection, punk: ptr IUnknown): HRESULT {.stdcall.}
-    AddFromArray*: proc(self: ptr IObjectCollection, poaSource: ptr IObjectArray): HRESULT {.stdcall.}
-    RemoveObjectAt*: proc(self: ptr IObjectCollection, uiIndex: UINT): HRESULT {.stdcall.}
+    AddObject*:
+      proc(self: ptr IObjectCollection, punk: ptr IUnknown): HRESULT {.stdcall.}
+    AddFromArray*: proc(
+      self: ptr IObjectCollection, poaSource: ptr IObjectArray
+    ): HRESULT {.stdcall.}
+    RemoveObjectAt*:
+      proc(self: ptr IObjectCollection, uiIndex: UINT): HRESULT {.stdcall.}
     Clear*: proc(self: ptr IObjectCollection): HRESULT {.stdcall.}
+
   IExecuteCommand* {.pure.} = object
     lpVtbl*: ptr IExecuteCommandVtbl
+
   IExecuteCommandVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetKeyState*: proc(self: ptr IExecuteCommand, grfKeyState: DWORD): HRESULT {.stdcall.}
-    SetParameters*: proc(self: ptr IExecuteCommand, pszParameters: LPCWSTR): HRESULT {.stdcall.}
+    SetKeyState*:
+      proc(self: ptr IExecuteCommand, grfKeyState: DWORD): HRESULT {.stdcall.}
+    SetParameters*:
+      proc(self: ptr IExecuteCommand, pszParameters: LPCWSTR): HRESULT {.stdcall.}
     SetPosition*: proc(self: ptr IExecuteCommand, pt: POINT): HRESULT {.stdcall.}
     SetShowWindow*: proc(self: ptr IExecuteCommand, nShow: int32): HRESULT {.stdcall.}
-    SetNoShowUI*: proc(self: ptr IExecuteCommand, fNoShowUI: WINBOOL): HRESULT {.stdcall.}
-    SetDirectory*: proc(self: ptr IExecuteCommand, pszDirectory: LPCWSTR): HRESULT {.stdcall.}
+    SetNoShowUI*:
+      proc(self: ptr IExecuteCommand, fNoShowUI: WINBOOL): HRESULT {.stdcall.}
+    SetDirectory*:
+      proc(self: ptr IExecuteCommand, pszDirectory: LPCWSTR): HRESULT {.stdcall.}
     Execute*: proc(self: ptr IExecuteCommand): HRESULT {.stdcall.}
+
   IRunnableTask* {.pure.} = object
     lpVtbl*: ptr IRunnableTaskVtbl
+
   IRunnableTaskVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Run*: proc(self: ptr IRunnableTask): HRESULT {.stdcall.}
     Kill*: proc(self: ptr IRunnableTask, bWait: WINBOOL): HRESULT {.stdcall.}
     Suspend*: proc(self: ptr IRunnableTask): HRESULT {.stdcall.}
     Resume*: proc(self: ptr IRunnableTask): HRESULT {.stdcall.}
     IsRunning*: proc(self: ptr IRunnableTask): ULONG {.stdcall.}
+
   IShellTaskScheduler* {.pure.} = object
     lpVtbl*: ptr IShellTaskSchedulerVtbl
+
   IShellTaskSchedulerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AddTask*: proc(self: ptr IShellTaskScheduler, prt: ptr IRunnableTask, rtoid: REFTASKOWNERID, lParam: DWORD_PTR, dwPriority: DWORD): HRESULT {.stdcall.}
-    RemoveTasks*: proc(self: ptr IShellTaskScheduler, rtoid: REFTASKOWNERID, lParam: DWORD_PTR, bWaitIfRunning: WINBOOL): HRESULT {.stdcall.}
-    CountTasks*: proc(self: ptr IShellTaskScheduler, rtoid: REFTASKOWNERID): UINT {.stdcall.}
-    Status*: proc(self: ptr IShellTaskScheduler, dwReleaseStatus: DWORD, dwThreadTimeout: DWORD): HRESULT {.stdcall.}
+    AddTask*: proc(
+      self: ptr IShellTaskScheduler,
+      prt: ptr IRunnableTask,
+      rtoid: REFTASKOWNERID,
+      lParam: DWORD_PTR,
+      dwPriority: DWORD,
+    ): HRESULT {.stdcall.}
+    RemoveTasks*: proc(
+      self: ptr IShellTaskScheduler,
+      rtoid: REFTASKOWNERID,
+      lParam: DWORD_PTR,
+      bWaitIfRunning: WINBOOL,
+    ): HRESULT {.stdcall.}
+    CountTasks*:
+      proc(self: ptr IShellTaskScheduler, rtoid: REFTASKOWNERID): UINT {.stdcall.}
+    Status*: proc(
+      self: ptr IShellTaskScheduler, dwReleaseStatus: DWORD, dwThreadTimeout: DWORD
+    ): HRESULT {.stdcall.}
+
   IQueryCodePage* {.pure.} = object
     lpVtbl*: ptr IQueryCodePageVtbl
+
   IQueryCodePageVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCodePage*: proc(self: ptr IQueryCodePage, puiCodePage: ptr UINT): HRESULT {.stdcall.}
+    GetCodePage*:
+      proc(self: ptr IQueryCodePage, puiCodePage: ptr UINT): HRESULT {.stdcall.}
     SetCodePage*: proc(self: ptr IQueryCodePage, uiCodePage: UINT): HRESULT {.stdcall.}
+
   IPersistFolder2* {.pure.} = object
     lpVtbl*: ptr IPersistFolder2Vtbl
+
   IPersistFolder2Vtbl* {.pure, inheritable.} = object of IPersistFolderVtbl
-    GetCurFolder*: proc(self: ptr IPersistFolder2, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+    GetCurFolder*:
+      proc(self: ptr IPersistFolder2, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+
   IPersistFolder3* {.pure.} = object
     lpVtbl*: ptr IPersistFolder3Vtbl
+
   IPersistFolder3Vtbl* {.pure, inheritable.} = object of IPersistFolder2Vtbl
-    InitializeEx*: proc(self: ptr IPersistFolder3, pbc: ptr IBindCtx, pidlRoot: PCIDLIST_ABSOLUTE, ppfti: ptr PERSIST_FOLDER_TARGET_INFO): HRESULT {.stdcall.}
-    GetFolderTargetInfo*: proc(self: ptr IPersistFolder3, ppfti: ptr PERSIST_FOLDER_TARGET_INFO): HRESULT {.stdcall.}
+    InitializeEx*: proc(
+      self: ptr IPersistFolder3,
+      pbc: ptr IBindCtx,
+      pidlRoot: PCIDLIST_ABSOLUTE,
+      ppfti: ptr PERSIST_FOLDER_TARGET_INFO,
+    ): HRESULT {.stdcall.}
+    GetFolderTargetInfo*: proc(
+      self: ptr IPersistFolder3, ppfti: ptr PERSIST_FOLDER_TARGET_INFO
+    ): HRESULT {.stdcall.}
+
   IPersistIDList* {.pure.} = object
     lpVtbl*: ptr IPersistIDListVtbl
+
   IPersistIDListVtbl* {.pure, inheritable.} = object of IPersistVtbl
-    SetIDList*: proc(self: ptr IPersistIDList, pidl: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
-    GetIDList*: proc(self: ptr IPersistIDList, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+    SetIDList*:
+      proc(self: ptr IPersistIDList, pidl: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+    GetIDList*:
+      proc(self: ptr IPersistIDList, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+
   IEnumFullIDList* {.pure.} = object
     lpVtbl*: ptr IEnumFullIDListVtbl
+
   IEnumFullIDListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumFullIDList, celt: ULONG, rgelt: ptr PIDLIST_ABSOLUTE, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumFullIDList,
+      celt: ULONG,
+      rgelt: ptr PIDLIST_ABSOLUTE,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumFullIDList, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumFullIDList): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumFullIDList, ppenum: ptr ptr IEnumFullIDList): HRESULT {.stdcall.}
+    Clone*: proc(self: ptr IEnumFullIDList, ppenum: ptr ptr IEnumFullIDList): HRESULT {.
+      stdcall
+    .}
+
   IObjectWithFolderEnumMode* {.pure.} = object
     lpVtbl*: ptr IObjectWithFolderEnumModeVtbl
+
   IObjectWithFolderEnumModeVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetMode*: proc(self: ptr IObjectWithFolderEnumMode, feMode: FOLDER_ENUM_MODE): HRESULT {.stdcall.}
-    GetMode*: proc(self: ptr IObjectWithFolderEnumMode, pfeMode: ptr FOLDER_ENUM_MODE): HRESULT {.stdcall.}
+    SetMode*: proc(
+      self: ptr IObjectWithFolderEnumMode, feMode: FOLDER_ENUM_MODE
+    ): HRESULT {.stdcall.}
+    GetMode*: proc(
+      self: ptr IObjectWithFolderEnumMode, pfeMode: ptr FOLDER_ENUM_MODE
+    ): HRESULT {.stdcall.}
+
   IParseAndCreateItem* {.pure.} = object
     lpVtbl*: ptr IParseAndCreateItemVtbl
+
   IParseAndCreateItemVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetItem*: proc(self: ptr IParseAndCreateItem, psi: ptr IShellItem): HRESULT {.stdcall.}
-    GetItem*: proc(self: ptr IParseAndCreateItem, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    SetItem*:
+      proc(self: ptr IParseAndCreateItem, psi: ptr IShellItem): HRESULT {.stdcall.}
+    GetItem*: proc(
+      self: ptr IParseAndCreateItem, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+
   IShellFolder2* {.pure.} = object
     lpVtbl*: ptr IShellFolder2Vtbl
+
   IShellFolder2Vtbl* {.pure, inheritable.} = object of IShellFolderVtbl
-    GetDefaultSearchGUID*: proc(self: ptr IShellFolder2, pguid: ptr GUID): HRESULT {.stdcall.}
-    EnumSearches*: proc(self: ptr IShellFolder2, ppenum: ptr ptr IEnumExtraSearch): HRESULT {.stdcall.}
-    GetDefaultColumn*: proc(self: ptr IShellFolder2, dwRes: DWORD, pSort: ptr ULONG, pDisplay: ptr ULONG): HRESULT {.stdcall.}
-    GetDefaultColumnState*: proc(self: ptr IShellFolder2, iColumn: UINT, pcsFlags: ptr SHCOLSTATEF): HRESULT {.stdcall.}
-    GetDetailsEx*: proc(self: ptr IShellFolder2, pidl: PCUITEMID_CHILD, pscid: ptr SHCOLUMNID, pv: ptr VARIANT): HRESULT {.stdcall.}
-    GetDetailsOf*: proc(self: ptr IShellFolder2, pidl: PCUITEMID_CHILD, iColumn: UINT, psd: ptr SHELLDETAILS): HRESULT {.stdcall.}
-    MapColumnToSCID*: proc(self: ptr IShellFolder2, iColumn: UINT, pscid: ptr SHCOLUMNID): HRESULT {.stdcall.}
+    GetDefaultSearchGUID*:
+      proc(self: ptr IShellFolder2, pguid: ptr GUID): HRESULT {.stdcall.}
+    EnumSearches*: proc(
+      self: ptr IShellFolder2, ppenum: ptr ptr IEnumExtraSearch
+    ): HRESULT {.stdcall.}
+    GetDefaultColumn*: proc(
+      self: ptr IShellFolder2, dwRes: DWORD, pSort: ptr ULONG, pDisplay: ptr ULONG
+    ): HRESULT {.stdcall.}
+    GetDefaultColumnState*: proc(
+      self: ptr IShellFolder2, iColumn: UINT, pcsFlags: ptr SHCOLSTATEF
+    ): HRESULT {.stdcall.}
+    GetDetailsEx*: proc(
+      self: ptr IShellFolder2,
+      pidl: PCUITEMID_CHILD,
+      pscid: ptr SHCOLUMNID,
+      pv: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    GetDetailsOf*: proc(
+      self: ptr IShellFolder2,
+      pidl: PCUITEMID_CHILD,
+      iColumn: UINT,
+      psd: ptr SHELLDETAILS,
+    ): HRESULT {.stdcall.}
+    MapColumnToSCID*: proc(
+      self: ptr IShellFolder2, iColumn: UINT, pscid: ptr SHCOLUMNID
+    ): HRESULT {.stdcall.}
+
   IFolderViewOptions* {.pure.} = object
     lpVtbl*: ptr IFolderViewOptionsVtbl
+
   IFolderViewOptionsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetFolderViewOptions*: proc(self: ptr IFolderViewOptions, fvoMask: FOLDERVIEWOPTIONS, fvoFlags: FOLDERVIEWOPTIONS): HRESULT {.stdcall.}
-    GetFolderViewOptions*: proc(self: ptr IFolderViewOptions, pfvoFlags: ptr FOLDERVIEWOPTIONS): HRESULT {.stdcall.}
+    SetFolderViewOptions*: proc(
+      self: ptr IFolderViewOptions,
+      fvoMask: FOLDERVIEWOPTIONS,
+      fvoFlags: FOLDERVIEWOPTIONS,
+    ): HRESULT {.stdcall.}
+    GetFolderViewOptions*: proc(
+      self: ptr IFolderViewOptions, pfvoFlags: ptr FOLDERVIEWOPTIONS
+    ): HRESULT {.stdcall.}
+
   IShellView2* {.pure.} = object
     lpVtbl*: ptr IShellView2Vtbl
+
   IShellView2Vtbl* {.pure, inheritable.} = object of IShellViewVtbl
-    GetView*: proc(self: ptr IShellView2, pvid: ptr SHELLVIEWID, uView: ULONG): HRESULT {.stdcall.}
-    CreateViewWindow2*: proc(self: ptr IShellView2, lpParams: LPSV2CVW2_PARAMS): HRESULT {.stdcall.}
-    HandleRename*: proc(self: ptr IShellView2, pidlNew: PCUITEMID_CHILD): HRESULT {.stdcall.}
-    SelectAndPositionItem*: proc(self: ptr IShellView2, pidlItem: PCUITEMID_CHILD, uFlags: UINT, ppt: ptr POINT): HRESULT {.stdcall.}
+    GetView*: proc(self: ptr IShellView2, pvid: ptr SHELLVIEWID, uView: ULONG): HRESULT {.
+      stdcall
+    .}
+    CreateViewWindow2*:
+      proc(self: ptr IShellView2, lpParams: LPSV2CVW2_PARAMS): HRESULT {.stdcall.}
+    HandleRename*:
+      proc(self: ptr IShellView2, pidlNew: PCUITEMID_CHILD): HRESULT {.stdcall.}
+    SelectAndPositionItem*: proc(
+      self: ptr IShellView2, pidlItem: PCUITEMID_CHILD, uFlags: UINT, ppt: ptr POINT
+    ): HRESULT {.stdcall.}
+
   IShellView3* {.pure.} = object
     lpVtbl*: ptr IShellView3Vtbl
+
   IShellView3Vtbl* {.pure, inheritable.} = object of IShellView2Vtbl
-    CreateViewWindow3*: proc(self: ptr IShellView3, psbOwner: ptr IShellBrowser, psvPrev: ptr IShellView, dwViewFlags: SV3CVW3_FLAGS, dwMask: FOLDERFLAGS, dwFlags: FOLDERFLAGS, fvMode: FOLDERVIEWMODE, pvid: ptr SHELLVIEWID, prcView: ptr RECT, phwndView: ptr HWND): HRESULT {.stdcall.}
+    CreateViewWindow3*: proc(
+      self: ptr IShellView3,
+      psbOwner: ptr IShellBrowser,
+      psvPrev: ptr IShellView,
+      dwViewFlags: SV3CVW3_FLAGS,
+      dwMask: FOLDERFLAGS,
+      dwFlags: FOLDERFLAGS,
+      fvMode: FOLDERVIEWMODE,
+      pvid: ptr SHELLVIEWID,
+      prcView: ptr RECT,
+      phwndView: ptr HWND,
+    ): HRESULT {.stdcall.}
+
   IFolderView* {.pure.} = object
     lpVtbl*: ptr IFolderViewVtbl
+
   IFolderViewVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCurrentViewMode*: proc(self: ptr IFolderView, pViewMode: ptr UINT): HRESULT {.stdcall.}
-    SetCurrentViewMode*: proc(self: ptr IFolderView, ViewMode: UINT): HRESULT {.stdcall.}
-    GetFolder*: proc(self: ptr IFolderView, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    Item*: proc(self: ptr IFolderView, iItemIndex: int32, ppidl: ptr PITEMID_CHILD): HRESULT {.stdcall.}
-    ItemCount*: proc(self: ptr IFolderView, uFlags: UINT, pcItems: ptr int32): HRESULT {.stdcall.}
-    Items*: proc(self: ptr IFolderView, uFlags: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetSelectionMarkedItem*: proc(self: ptr IFolderView, piItem: ptr int32): HRESULT {.stdcall.}
+    GetCurrentViewMode*:
+      proc(self: ptr IFolderView, pViewMode: ptr UINT): HRESULT {.stdcall.}
+    SetCurrentViewMode*:
+      proc(self: ptr IFolderView, ViewMode: UINT): HRESULT {.stdcall.}
+    GetFolder*:
+      proc(self: ptr IFolderView, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    Item*: proc(
+      self: ptr IFolderView, iItemIndex: int32, ppidl: ptr PITEMID_CHILD
+    ): HRESULT {.stdcall.}
+    ItemCount*:
+      proc(self: ptr IFolderView, uFlags: UINT, pcItems: ptr int32): HRESULT {.stdcall.}
+    Items*: proc(
+      self: ptr IFolderView, uFlags: UINT, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    GetSelectionMarkedItem*:
+      proc(self: ptr IFolderView, piItem: ptr int32): HRESULT {.stdcall.}
     GetFocusedItem*: proc(self: ptr IFolderView, piItem: ptr int32): HRESULT {.stdcall.}
-    GetItemPosition*: proc(self: ptr IFolderView, pidl: PCUITEMID_CHILD, ppt: ptr POINT): HRESULT {.stdcall.}
+    GetItemPosition*: proc(
+      self: ptr IFolderView, pidl: PCUITEMID_CHILD, ppt: ptr POINT
+    ): HRESULT {.stdcall.}
     GetSpacing*: proc(self: ptr IFolderView, ppt: ptr POINT): HRESULT {.stdcall.}
     GetDefaultSpacing*: proc(self: ptr IFolderView, ppt: ptr POINT): HRESULT {.stdcall.}
     GetAutoArrange*: proc(self: ptr IFolderView): HRESULT {.stdcall.}
-    SelectItem*: proc(self: ptr IFolderView, iItem: int32, dwFlags: DWORD): HRESULT {.stdcall.}
-    SelectAndPositionItems*: proc(self: ptr IFolderView, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, apt: ptr POINT, dwFlags: DWORD): HRESULT {.stdcall.}
+    SelectItem*:
+      proc(self: ptr IFolderView, iItem: int32, dwFlags: DWORD): HRESULT {.stdcall.}
+    SelectAndPositionItems*: proc(
+      self: ptr IFolderView,
+      cidl: UINT,
+      apidl: PCUITEMID_CHILD_ARRAY,
+      apt: ptr POINT,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+
   ISearchBoxInfo* {.pure.} = object
     lpVtbl*: ptr ISearchBoxInfoVtbl
+
   ISearchBoxInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCondition*: proc(self: ptr ISearchBoxInfo, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetCondition*: proc(
+      self: ptr ISearchBoxInfo, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
     GetText*: proc(self: ptr ISearchBoxInfo, ppsz: ptr LPWSTR): HRESULT {.stdcall.}
+
   IEnumShellItems* {.pure.} = object
     lpVtbl*: ptr IEnumShellItemsVtbl
+
   IEnumShellItemsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumShellItems, celt: ULONG, rgelt: ptr ptr IShellItem, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumShellItems,
+      celt: ULONG,
+      rgelt: ptr ptr IShellItem,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumShellItems, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumShellItems): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumShellItems, ppenum: ptr ptr IEnumShellItems): HRESULT {.stdcall.}
+    Clone*: proc(self: ptr IEnumShellItems, ppenum: ptr ptr IEnumShellItems): HRESULT {.
+      stdcall
+    .}
+
   IShellItemArray* {.pure.} = object
     lpVtbl*: ptr IShellItemArrayVtbl
+
   IShellItemArrayVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    BindToHandler*: proc(self: ptr IShellItemArray, pbc: ptr IBindCtx, bhid: REFGUID, riid: REFIID, ppvOut: ptr pointer): HRESULT {.stdcall.}
-    GetPropertyStore*: proc(self: ptr IShellItemArray, flags: GETPROPERTYSTOREFLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetPropertyDescriptionList*: proc(self: ptr IShellItemArray, keyType: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetAttributes*: proc(self: ptr IShellItemArray, AttribFlags: SIATTRIBFLAGS, sfgaoMask: SFGAOF, psfgaoAttribs: ptr SFGAOF): HRESULT {.stdcall.}
-    GetCount*: proc(self: ptr IShellItemArray, pdwNumItems: ptr DWORD): HRESULT {.stdcall.}
-    GetItemAt*: proc(self: ptr IShellItemArray, dwIndex: DWORD, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
-    EnumItems*: proc(self: ptr IShellItemArray, ppenumShellItems: ptr ptr IEnumShellItems): HRESULT {.stdcall.}
+    BindToHandler*: proc(
+      self: ptr IShellItemArray,
+      pbc: ptr IBindCtx,
+      bhid: REFGUID,
+      riid: REFIID,
+      ppvOut: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetPropertyStore*: proc(
+      self: ptr IShellItemArray,
+      flags: GETPROPERTYSTOREFLAGS,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetPropertyDescriptionList*: proc(
+      self: ptr IShellItemArray, keyType: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    GetAttributes*: proc(
+      self: ptr IShellItemArray,
+      AttribFlags: SIATTRIBFLAGS,
+      sfgaoMask: SFGAOF,
+      psfgaoAttribs: ptr SFGAOF,
+    ): HRESULT {.stdcall.}
+    GetCount*:
+      proc(self: ptr IShellItemArray, pdwNumItems: ptr DWORD): HRESULT {.stdcall.}
+    GetItemAt*: proc(
+      self: ptr IShellItemArray, dwIndex: DWORD, ppsi: ptr ptr IShellItem
+    ): HRESULT {.stdcall.}
+    EnumItems*: proc(
+      self: ptr IShellItemArray, ppenumShellItems: ptr ptr IEnumShellItems
+    ): HRESULT {.stdcall.}
+
   IFolderView2* {.pure.} = object
     lpVtbl*: ptr IFolderView2Vtbl
+
   IFolderView2Vtbl* {.pure, inheritable.} = object of IFolderViewVtbl
-    SetGroupBy*: proc(self: ptr IFolderView2, key: REFPROPERTYKEY, fAscending: WINBOOL): HRESULT {.stdcall.}
-    GetGroupBy*: proc(self: ptr IFolderView2, pkey: ptr PROPERTYKEY, pfAscending: ptr WINBOOL): HRESULT {.stdcall.}
-    SetViewProperty*: proc(self: ptr IFolderView2, pidl: PCUITEMID_CHILD, propkey: REFPROPERTYKEY, propvar: REFPROPVARIANT): HRESULT {.stdcall.}
-    GetViewProperty*: proc(self: ptr IFolderView2, pidl: PCUITEMID_CHILD, propkey: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT): HRESULT {.stdcall.}
-    SetTileViewProperties*: proc(self: ptr IFolderView2, pidl: PCUITEMID_CHILD, pszPropList: LPCWSTR): HRESULT {.stdcall.}
-    SetExtendedTileViewProperties*: proc(self: ptr IFolderView2, pidl: PCUITEMID_CHILD, pszPropList: LPCWSTR): HRESULT {.stdcall.}
-    SetText*: proc(self: ptr IFolderView2, iType: FVTEXTTYPE, pwszText: LPCWSTR): HRESULT {.stdcall.}
-    SetCurrentFolderFlags*: proc(self: ptr IFolderView2, dwMask: DWORD, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetCurrentFolderFlags*: proc(self: ptr IFolderView2, pdwFlags: ptr DWORD): HRESULT {.stdcall.}
-    GetSortColumnCount*: proc(self: ptr IFolderView2, pcColumns: ptr int32): HRESULT {.stdcall.}
-    SetSortColumns*: proc(self: ptr IFolderView2, rgSortColumns: ptr SORTCOLUMN, cColumns: int32): HRESULT {.stdcall.}
-    GetSortColumns*: proc(self: ptr IFolderView2, rgSortColumns: ptr SORTCOLUMN, cColumns: int32): HRESULT {.stdcall.}
-    GetItem*: proc(self: ptr IFolderView2, iItem: int32, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetVisibleItem*: proc(self: ptr IFolderView2, iStart: int32, fPrevious: WINBOOL, piItem: ptr int32): HRESULT {.stdcall.}
-    GetSelectedItem*: proc(self: ptr IFolderView2, iStart: int32, piItem: ptr int32): HRESULT {.stdcall.}
-    GetSelection*: proc(self: ptr IFolderView2, fNoneImpliesFolder: WINBOOL, ppsia: ptr ptr IShellItemArray): HRESULT {.stdcall.}
-    GetSelectionState*: proc(self: ptr IFolderView2, pidl: PCUITEMID_CHILD, pdwFlags: ptr DWORD): HRESULT {.stdcall.}
-    InvokeVerbOnSelection*: proc(self: ptr IFolderView2, pszVerb: LPCSTR): HRESULT {.stdcall.}
-    SetViewModeAndIconSize*: proc(self: ptr IFolderView2, uViewMode: FOLDERVIEWMODE, iImageSize: int32): HRESULT {.stdcall.}
-    GetViewModeAndIconSize*: proc(self: ptr IFolderView2, puViewMode: ptr FOLDERVIEWMODE, piImageSize: ptr int32): HRESULT {.stdcall.}
-    SetGroupSubsetCount*: proc(self: ptr IFolderView2, cVisibleRows: UINT): HRESULT {.stdcall.}
-    GetGroupSubsetCount*: proc(self: ptr IFolderView2, pcVisibleRows: ptr UINT): HRESULT {.stdcall.}
+    SetGroupBy*: proc(
+      self: ptr IFolderView2, key: REFPROPERTYKEY, fAscending: WINBOOL
+    ): HRESULT {.stdcall.}
+    GetGroupBy*: proc(
+      self: ptr IFolderView2, pkey: ptr PROPERTYKEY, pfAscending: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    SetViewProperty*: proc(
+      self: ptr IFolderView2,
+      pidl: PCUITEMID_CHILD,
+      propkey: REFPROPERTYKEY,
+      propvar: REFPROPVARIANT,
+    ): HRESULT {.stdcall.}
+    GetViewProperty*: proc(
+      self: ptr IFolderView2,
+      pidl: PCUITEMID_CHILD,
+      propkey: REFPROPERTYKEY,
+      ppropvar: ptr PROPVARIANT,
+    ): HRESULT {.stdcall.}
+    SetTileViewProperties*: proc(
+      self: ptr IFolderView2, pidl: PCUITEMID_CHILD, pszPropList: LPCWSTR
+    ): HRESULT {.stdcall.}
+    SetExtendedTileViewProperties*: proc(
+      self: ptr IFolderView2, pidl: PCUITEMID_CHILD, pszPropList: LPCWSTR
+    ): HRESULT {.stdcall.}
+    SetText*: proc(
+      self: ptr IFolderView2, iType: FVTEXTTYPE, pwszText: LPCWSTR
+    ): HRESULT {.stdcall.}
+    SetCurrentFolderFlags*:
+      proc(self: ptr IFolderView2, dwMask: DWORD, dwFlags: DWORD): HRESULT {.stdcall.}
+    GetCurrentFolderFlags*:
+      proc(self: ptr IFolderView2, pdwFlags: ptr DWORD): HRESULT {.stdcall.}
+    GetSortColumnCount*:
+      proc(self: ptr IFolderView2, pcColumns: ptr int32): HRESULT {.stdcall.}
+    SetSortColumns*: proc(
+      self: ptr IFolderView2, rgSortColumns: ptr SORTCOLUMN, cColumns: int32
+    ): HRESULT {.stdcall.}
+    GetSortColumns*: proc(
+      self: ptr IFolderView2, rgSortColumns: ptr SORTCOLUMN, cColumns: int32
+    ): HRESULT {.stdcall.}
+    GetItem*: proc(
+      self: ptr IFolderView2, iItem: int32, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    GetVisibleItem*: proc(
+      self: ptr IFolderView2, iStart: int32, fPrevious: WINBOOL, piItem: ptr int32
+    ): HRESULT {.stdcall.}
+    GetSelectedItem*: proc(
+      self: ptr IFolderView2, iStart: int32, piItem: ptr int32
+    ): HRESULT {.stdcall.}
+    GetSelection*: proc(
+      self: ptr IFolderView2,
+      fNoneImpliesFolder: WINBOOL,
+      ppsia: ptr ptr IShellItemArray,
+    ): HRESULT {.stdcall.}
+    GetSelectionState*: proc(
+      self: ptr IFolderView2, pidl: PCUITEMID_CHILD, pdwFlags: ptr DWORD
+    ): HRESULT {.stdcall.}
+    InvokeVerbOnSelection*:
+      proc(self: ptr IFolderView2, pszVerb: LPCSTR): HRESULT {.stdcall.}
+    SetViewModeAndIconSize*: proc(
+      self: ptr IFolderView2, uViewMode: FOLDERVIEWMODE, iImageSize: int32
+    ): HRESULT {.stdcall.}
+    GetViewModeAndIconSize*: proc(
+      self: ptr IFolderView2, puViewMode: ptr FOLDERVIEWMODE, piImageSize: ptr int32
+    ): HRESULT {.stdcall.}
+    SetGroupSubsetCount*:
+      proc(self: ptr IFolderView2, cVisibleRows: UINT): HRESULT {.stdcall.}
+    GetGroupSubsetCount*:
+      proc(self: ptr IFolderView2, pcVisibleRows: ptr UINT): HRESULT {.stdcall.}
     SetRedraw*: proc(self: ptr IFolderView2, fRedrawOn: WINBOOL): HRESULT {.stdcall.}
     IsMoveInSameFolder*: proc(self: ptr IFolderView2): HRESULT {.stdcall.}
     DoRename*: proc(self: ptr IFolderView2): HRESULT {.stdcall.}
+
   IFolderViewSettings* {.pure.} = object
     lpVtbl*: ptr IFolderViewSettingsVtbl
+
   IFolderViewSettingsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetColumnPropertyList*: proc(self: ptr IFolderViewSettings, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetGroupByProperty*: proc(self: ptr IFolderViewSettings, pkey: ptr PROPERTYKEY, pfGroupAscending: ptr WINBOOL): HRESULT {.stdcall.}
-    GetViewMode*: proc(self: ptr IFolderViewSettings, plvm: ptr FOLDERLOGICALVIEWMODE): HRESULT {.stdcall.}
-    GetIconSize*: proc(self: ptr IFolderViewSettings, puIconSize: ptr UINT): HRESULT {.stdcall.}
-    GetFolderFlags*: proc(self: ptr IFolderViewSettings, pfolderMask: ptr FOLDERFLAGS, pfolderFlags: ptr FOLDERFLAGS): HRESULT {.stdcall.}
-    GetSortColumns*: proc(self: ptr IFolderViewSettings, rgSortColumns: ptr SORTCOLUMN, cColumnsIn: UINT, pcColumnsOut: ptr UINT): HRESULT {.stdcall.}
-    GetGroupSubsetCount*: proc(self: ptr IFolderViewSettings, pcVisibleRows: ptr UINT): HRESULT {.stdcall.}
+    GetColumnPropertyList*: proc(
+      self: ptr IFolderViewSettings, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    GetGroupByProperty*: proc(
+      self: ptr IFolderViewSettings,
+      pkey: ptr PROPERTYKEY,
+      pfGroupAscending: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+    GetViewMode*: proc(
+      self: ptr IFolderViewSettings, plvm: ptr FOLDERLOGICALVIEWMODE
+    ): HRESULT {.stdcall.}
+    GetIconSize*:
+      proc(self: ptr IFolderViewSettings, puIconSize: ptr UINT): HRESULT {.stdcall.}
+    GetFolderFlags*: proc(
+      self: ptr IFolderViewSettings,
+      pfolderMask: ptr FOLDERFLAGS,
+      pfolderFlags: ptr FOLDERFLAGS,
+    ): HRESULT {.stdcall.}
+    GetSortColumns*: proc(
+      self: ptr IFolderViewSettings,
+      rgSortColumns: ptr SORTCOLUMN,
+      cColumnsIn: UINT,
+      pcColumnsOut: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetGroupSubsetCount*:
+      proc(self: ptr IFolderViewSettings, pcVisibleRows: ptr UINT): HRESULT {.stdcall.}
+
   IPreviewHandlerVisuals* {.pure.} = object
     lpVtbl*: ptr IPreviewHandlerVisualsVtbl
+
   IPreviewHandlerVisualsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetBackgroundColor*: proc(self: ptr IPreviewHandlerVisuals, color: COLORREF): HRESULT {.stdcall.}
-    SetFont*: proc(self: ptr IPreviewHandlerVisuals, plf: ptr LOGFONTW): HRESULT {.stdcall.}
-    SetTextColor*: proc(self: ptr IPreviewHandlerVisuals, color: COLORREF): HRESULT {.stdcall.}
+    SetBackgroundColor*:
+      proc(self: ptr IPreviewHandlerVisuals, color: COLORREF): HRESULT {.stdcall.}
+    SetFont*:
+      proc(self: ptr IPreviewHandlerVisuals, plf: ptr LOGFONTW): HRESULT {.stdcall.}
+    SetTextColor*:
+      proc(self: ptr IPreviewHandlerVisuals, color: COLORREF): HRESULT {.stdcall.}
+
   IVisualProperties* {.pure.} = object
     lpVtbl*: ptr IVisualPropertiesVtbl
+
   IVisualPropertiesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetWatermark*: proc(self: ptr IVisualProperties, hbmp: HBITMAP, vpwf: VPWATERMARKFLAGS): HRESULT {.stdcall.}
-    SetColor*: proc(self: ptr IVisualProperties, vpcf: VPCOLORFLAGS, cr: COLORREF): HRESULT {.stdcall.}
-    GetColor*: proc(self: ptr IVisualProperties, vpcf: VPCOLORFLAGS, pcr: ptr COLORREF): HRESULT {.stdcall.}
-    SetItemHeight*: proc(self: ptr IVisualProperties, cyItemInPixels: int32): HRESULT {.stdcall.}
-    GetItemHeight*: proc(self: ptr IVisualProperties, cyItemInPixels: ptr int32): HRESULT {.stdcall.}
-    SetFont*: proc(self: ptr IVisualProperties, plf: ptr LOGFONTW, bRedraw: WINBOOL): HRESULT {.stdcall.}
+    SetWatermark*: proc(
+      self: ptr IVisualProperties, hbmp: HBITMAP, vpwf: VPWATERMARKFLAGS
+    ): HRESULT {.stdcall.}
+    SetColor*: proc(
+      self: ptr IVisualProperties, vpcf: VPCOLORFLAGS, cr: COLORREF
+    ): HRESULT {.stdcall.}
+    GetColor*: proc(
+      self: ptr IVisualProperties, vpcf: VPCOLORFLAGS, pcr: ptr COLORREF
+    ): HRESULT {.stdcall.}
+    SetItemHeight*:
+      proc(self: ptr IVisualProperties, cyItemInPixels: int32): HRESULT {.stdcall.}
+    GetItemHeight*:
+      proc(self: ptr IVisualProperties, cyItemInPixels: ptr int32): HRESULT {.stdcall.}
+    SetFont*: proc(
+      self: ptr IVisualProperties, plf: ptr LOGFONTW, bRedraw: WINBOOL
+    ): HRESULT {.stdcall.}
     GetFont*: proc(self: ptr IVisualProperties, plf: ptr LOGFONTW): HRESULT {.stdcall.}
-    SetTheme*: proc(self: ptr IVisualProperties, pszSubAppName: LPCWSTR, pszSubIdList: LPCWSTR): HRESULT {.stdcall.}
+    SetTheme*: proc(
+      self: ptr IVisualProperties, pszSubAppName: LPCWSTR, pszSubIdList: LPCWSTR
+    ): HRESULT {.stdcall.}
+
   ICommDlgBrowser3* {.pure.} = object
     lpVtbl*: ptr ICommDlgBrowser3Vtbl
+
   ICommDlgBrowser3Vtbl* {.pure, inheritable.} = object of ICommDlgBrowser2Vtbl
-    OnColumnClicked*: proc(self: ptr ICommDlgBrowser3, ppshv: ptr IShellView, iColumn: int32): HRESULT {.stdcall.}
-    GetCurrentFilter*: proc(self: ptr ICommDlgBrowser3, pszFileSpec: LPWSTR, cchFileSpec: int32): HRESULT {.stdcall.}
-    OnPreViewCreated*: proc(self: ptr ICommDlgBrowser3, ppshv: ptr IShellView): HRESULT {.stdcall.}
+    OnColumnClicked*: proc(
+      self: ptr ICommDlgBrowser3, ppshv: ptr IShellView, iColumn: int32
+    ): HRESULT {.stdcall.}
+    GetCurrentFilter*: proc(
+      self: ptr ICommDlgBrowser3, pszFileSpec: LPWSTR, cchFileSpec: int32
+    ): HRESULT {.stdcall.}
+    OnPreViewCreated*:
+      proc(self: ptr ICommDlgBrowser3, ppshv: ptr IShellView): HRESULT {.stdcall.}
+
   IColumnManager* {.pure.} = object
     lpVtbl*: ptr IColumnManagerVtbl
+
   IColumnManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetColumnInfo*: proc(self: ptr IColumnManager, propkey: REFPROPERTYKEY, pcmci: ptr CM_COLUMNINFO): HRESULT {.stdcall.}
-    GetColumnInfo*: proc(self: ptr IColumnManager, propkey: REFPROPERTYKEY, pcmci: ptr CM_COLUMNINFO): HRESULT {.stdcall.}
-    GetColumnCount*: proc(self: ptr IColumnManager, dwFlags: CM_ENUM_FLAGS, puCount: ptr UINT): HRESULT {.stdcall.}
-    GetColumns*: proc(self: ptr IColumnManager, dwFlags: CM_ENUM_FLAGS, rgkeyOrder: ptr PROPERTYKEY, cColumns: UINT): HRESULT {.stdcall.}
-    SetColumns*: proc(self: ptr IColumnManager, rgkeyOrder: ptr PROPERTYKEY, cVisible: UINT): HRESULT {.stdcall.}
+    SetColumnInfo*: proc(
+      self: ptr IColumnManager, propkey: REFPROPERTYKEY, pcmci: ptr CM_COLUMNINFO
+    ): HRESULT {.stdcall.}
+    GetColumnInfo*: proc(
+      self: ptr IColumnManager, propkey: REFPROPERTYKEY, pcmci: ptr CM_COLUMNINFO
+    ): HRESULT {.stdcall.}
+    GetColumnCount*: proc(
+      self: ptr IColumnManager, dwFlags: CM_ENUM_FLAGS, puCount: ptr UINT
+    ): HRESULT {.stdcall.}
+    GetColumns*: proc(
+      self: ptr IColumnManager,
+      dwFlags: CM_ENUM_FLAGS,
+      rgkeyOrder: ptr PROPERTYKEY,
+      cColumns: UINT,
+    ): HRESULT {.stdcall.}
+    SetColumns*: proc(
+      self: ptr IColumnManager, rgkeyOrder: ptr PROPERTYKEY, cVisible: UINT
+    ): HRESULT {.stdcall.}
+
   IFolderFilterSite* {.pure.} = object
     lpVtbl*: ptr IFolderFilterSiteVtbl
+
   IFolderFilterSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetFilter*: proc(self: ptr IFolderFilterSite, punk: ptr IUnknown): HRESULT {.stdcall.}
+    SetFilter*:
+      proc(self: ptr IFolderFilterSite, punk: ptr IUnknown): HRESULT {.stdcall.}
+
   IFolderFilter* {.pure.} = object
     lpVtbl*: ptr IFolderFilterVtbl
+
   IFolderFilterVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ShouldShow*: proc(self: ptr IFolderFilter, psf: ptr IShellFolder, pidlFolder: PCIDLIST_ABSOLUTE, pidlItem: PCUITEMID_CHILD): HRESULT {.stdcall.}
-    GetEnumFlags*: proc(self: ptr IFolderFilter, psf: ptr IShellFolder, pidlFolder: PCIDLIST_ABSOLUTE, phwnd: ptr HWND, pgrfFlags: ptr DWORD): HRESULT {.stdcall.}
+    ShouldShow*: proc(
+      self: ptr IFolderFilter,
+      psf: ptr IShellFolder,
+      pidlFolder: PCIDLIST_ABSOLUTE,
+      pidlItem: PCUITEMID_CHILD,
+    ): HRESULT {.stdcall.}
+    GetEnumFlags*: proc(
+      self: ptr IFolderFilter,
+      psf: ptr IShellFolder,
+      pidlFolder: PCIDLIST_ABSOLUTE,
+      phwnd: ptr HWND,
+      pgrfFlags: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   IInputObjectSite* {.pure.} = object
     lpVtbl*: ptr IInputObjectSiteVtbl
+
   IInputObjectSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnFocusChangeIS*: proc(self: ptr IInputObjectSite, punkObj: ptr IUnknown, fSetFocus: WINBOOL): HRESULT {.stdcall.}
+    OnFocusChangeIS*: proc(
+      self: ptr IInputObjectSite, punkObj: ptr IUnknown, fSetFocus: WINBOOL
+    ): HRESULT {.stdcall.}
+
   IInputObject* {.pure.} = object
     lpVtbl*: ptr IInputObjectVtbl
+
   IInputObjectVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    UIActivateIO*: proc(self: ptr IInputObject, fActivate: WINBOOL, pMsg: ptr MSG): HRESULT {.stdcall.}
+    UIActivateIO*: proc(
+      self: ptr IInputObject, fActivate: WINBOOL, pMsg: ptr MSG
+    ): HRESULT {.stdcall.}
     HasFocusIO*: proc(self: ptr IInputObject): HRESULT {.stdcall.}
-    TranslateAcceleratorIO*: proc(self: ptr IInputObject, pMsg: ptr MSG): HRESULT {.stdcall.}
+    TranslateAcceleratorIO*:
+      proc(self: ptr IInputObject, pMsg: ptr MSG): HRESULT {.stdcall.}
+
   IInputObject2* {.pure.} = object
     lpVtbl*: ptr IInputObject2Vtbl
+
   IInputObject2Vtbl* {.pure, inheritable.} = object of IInputObjectVtbl
-    TranslateAcceleratorGlobal*: proc(self: ptr IInputObject2, pMsg: ptr MSG): HRESULT {.stdcall.}
+    TranslateAcceleratorGlobal*:
+      proc(self: ptr IInputObject2, pMsg: ptr MSG): HRESULT {.stdcall.}
+
   IShellIcon* {.pure.} = object
     lpVtbl*: ptr IShellIconVtbl
+
   IShellIconVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetIconOf*: proc(self: ptr IShellIcon, pidl: PCUITEMID_CHILD, flags: UINT, pIconIndex: ptr int32): HRESULT {.stdcall.}
+    GetIconOf*: proc(
+      self: ptr IShellIcon, pidl: PCUITEMID_CHILD, flags: UINT, pIconIndex: ptr int32
+    ): HRESULT {.stdcall.}
+
   IProfferService* {.pure.} = object
     lpVtbl*: ptr IProfferServiceVtbl
+
   IProfferServiceVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ProfferService*: proc(self: ptr IProfferService, guidService: REFGUID, psp: ptr IServiceProvider, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
-    RevokeService*: proc(self: ptr IProfferService, dwCookie: DWORD): HRESULT {.stdcall.}
+    ProfferService*: proc(
+      self: ptr IProfferService,
+      guidService: REFGUID,
+      psp: ptr IServiceProvider,
+      pdwCookie: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    RevokeService*:
+      proc(self: ptr IProfferService, dwCookie: DWORD): HRESULT {.stdcall.}
+
   IShellItem2* {.pure.} = object
     lpVtbl*: ptr IShellItem2Vtbl
+
   IShellItem2Vtbl* {.pure, inheritable.} = object of IShellItemVtbl
-    GetPropertyStore*: proc(self: ptr IShellItem2, flags: GETPROPERTYSTOREFLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetPropertyStoreWithCreateObject*: proc(self: ptr IShellItem2, flags: GETPROPERTYSTOREFLAGS, punkCreateObject: ptr IUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetPropertyStoreForKeys*: proc(self: ptr IShellItem2, rgKeys: ptr PROPERTYKEY, cKeys: UINT, flags: GETPROPERTYSTOREFLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetPropertyDescriptionList*: proc(self: ptr IShellItem2, keyType: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetPropertyStore*: proc(
+      self: ptr IShellItem2,
+      flags: GETPROPERTYSTOREFLAGS,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetPropertyStoreWithCreateObject*: proc(
+      self: ptr IShellItem2,
+      flags: GETPROPERTYSTOREFLAGS,
+      punkCreateObject: ptr IUnknown,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetPropertyStoreForKeys*: proc(
+      self: ptr IShellItem2,
+      rgKeys: ptr PROPERTYKEY,
+      cKeys: UINT,
+      flags: GETPROPERTYSTOREFLAGS,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetPropertyDescriptionList*: proc(
+      self: ptr IShellItem2, keyType: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
     Update*: proc(self: ptr IShellItem2, pbc: ptr IBindCtx): HRESULT {.stdcall.}
-    GetProperty*: proc(self: ptr IShellItem2, key: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT): HRESULT {.stdcall.}
-    GetCLSID*: proc(self: ptr IShellItem2, key: REFPROPERTYKEY, pclsid: ptr CLSID): HRESULT {.stdcall.}
-    GetFileTime*: proc(self: ptr IShellItem2, key: REFPROPERTYKEY, pft: ptr FILETIME): HRESULT {.stdcall.}
-    GetInt32*: proc(self: ptr IShellItem2, key: REFPROPERTYKEY, pi: ptr int32): HRESULT {.stdcall.}
-    GetString*: proc(self: ptr IShellItem2, key: REFPROPERTYKEY, ppsz: ptr LPWSTR): HRESULT {.stdcall.}
-    GetUInt32*: proc(self: ptr IShellItem2, key: REFPROPERTYKEY, pui: ptr ULONG): HRESULT {.stdcall.}
-    GetUInt64*: proc(self: ptr IShellItem2, key: REFPROPERTYKEY, pull: ptr ULONGLONG): HRESULT {.stdcall.}
-    GetBool*: proc(self: ptr IShellItem2, key: REFPROPERTYKEY, pf: ptr WINBOOL): HRESULT {.stdcall.}
+    GetProperty*: proc(
+      self: ptr IShellItem2, key: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT
+    ): HRESULT {.stdcall.}
+    GetCLSID*: proc(
+      self: ptr IShellItem2, key: REFPROPERTYKEY, pclsid: ptr CLSID
+    ): HRESULT {.stdcall.}
+    GetFileTime*: proc(
+      self: ptr IShellItem2, key: REFPROPERTYKEY, pft: ptr FILETIME
+    ): HRESULT {.stdcall.}
+    GetInt32*: proc(self: ptr IShellItem2, key: REFPROPERTYKEY, pi: ptr int32): HRESULT {.
+      stdcall
+    .}
+    GetString*: proc(
+      self: ptr IShellItem2, key: REFPROPERTYKEY, ppsz: ptr LPWSTR
+    ): HRESULT {.stdcall.}
+    GetUInt32*: proc(
+      self: ptr IShellItem2, key: REFPROPERTYKEY, pui: ptr ULONG
+    ): HRESULT {.stdcall.}
+    GetUInt64*: proc(
+      self: ptr IShellItem2, key: REFPROPERTYKEY, pull: ptr ULONGLONG
+    ): HRESULT {.stdcall.}
+    GetBool*: proc(self: ptr IShellItem2, key: REFPROPERTYKEY, pf: ptr WINBOOL): HRESULT {.
+      stdcall
+    .}
+
   IShellItemImageFactory* {.pure.} = object
     lpVtbl*: ptr IShellItemImageFactoryVtbl
+
   IShellItemImageFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetImage*: proc(self: ptr IShellItemImageFactory, size: SIZE, flags: SIIGBF, phbm: ptr HBITMAP): HRESULT {.stdcall.}
+    GetImage*: proc(
+      self: ptr IShellItemImageFactory, size: SIZE, flags: SIIGBF, phbm: ptr HBITMAP
+    ): HRESULT {.stdcall.}
+
   IUserAccountChangeCallback* {.pure.} = object
     lpVtbl*: ptr IUserAccountChangeCallbackVtbl
+
   IUserAccountChangeCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnPictureChange*: proc(self: ptr IUserAccountChangeCallback, pszUserName: LPCWSTR): HRESULT {.stdcall.}
+    OnPictureChange*: proc(
+      self: ptr IUserAccountChangeCallback, pszUserName: LPCWSTR
+    ): HRESULT {.stdcall.}
+
   ITransferAdviseSink* {.pure.} = object
     lpVtbl*: ptr ITransferAdviseSinkVtbl
+
   ITransferAdviseSinkVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    UpdateProgress*: proc(self: ptr ITransferAdviseSink, ullSizeCurrent: ULONGLONG, ullSizeTotal: ULONGLONG, nFilesCurrent: int32, nFilesTotal: int32, nFoldersCurrent: int32, nFoldersTotal: int32): HRESULT {.stdcall.}
-    UpdateTransferState*: proc(self: ptr ITransferAdviseSink, ts: TRANSFER_ADVISE_STATE): HRESULT {.stdcall.}
-    ConfirmOverwrite*: proc(self: ptr ITransferAdviseSink, psiSource: ptr IShellItem, psiDestParent: ptr IShellItem, pszName: LPCWSTR): HRESULT {.stdcall.}
-    ConfirmEncryptionLoss*: proc(self: ptr ITransferAdviseSink, psiSource: ptr IShellItem): HRESULT {.stdcall.}
-    FileFailure*: proc(self: ptr ITransferAdviseSink, psi: ptr IShellItem, pszItem: LPCWSTR, hrError: HRESULT, pszRename: LPWSTR, cchRename: ULONG): HRESULT {.stdcall.}
-    SubStreamFailure*: proc(self: ptr ITransferAdviseSink, psi: ptr IShellItem, pszStreamName: LPCWSTR, hrError: HRESULT): HRESULT {.stdcall.}
-    PropertyFailure*: proc(self: ptr ITransferAdviseSink, psi: ptr IShellItem, pkey: ptr PROPERTYKEY, hrError: HRESULT): HRESULT {.stdcall.}
+    UpdateProgress*: proc(
+      self: ptr ITransferAdviseSink,
+      ullSizeCurrent: ULONGLONG,
+      ullSizeTotal: ULONGLONG,
+      nFilesCurrent: int32,
+      nFilesTotal: int32,
+      nFoldersCurrent: int32,
+      nFoldersTotal: int32,
+    ): HRESULT {.stdcall.}
+    UpdateTransferState*: proc(
+      self: ptr ITransferAdviseSink, ts: TRANSFER_ADVISE_STATE
+    ): HRESULT {.stdcall.}
+    ConfirmOverwrite*: proc(
+      self: ptr ITransferAdviseSink,
+      psiSource: ptr IShellItem,
+      psiDestParent: ptr IShellItem,
+      pszName: LPCWSTR,
+    ): HRESULT {.stdcall.}
+    ConfirmEncryptionLoss*: proc(
+      self: ptr ITransferAdviseSink, psiSource: ptr IShellItem
+    ): HRESULT {.stdcall.}
+    FileFailure*: proc(
+      self: ptr ITransferAdviseSink,
+      psi: ptr IShellItem,
+      pszItem: LPCWSTR,
+      hrError: HRESULT,
+      pszRename: LPWSTR,
+      cchRename: ULONG,
+    ): HRESULT {.stdcall.}
+    SubStreamFailure*: proc(
+      self: ptr ITransferAdviseSink,
+      psi: ptr IShellItem,
+      pszStreamName: LPCWSTR,
+      hrError: HRESULT,
+    ): HRESULT {.stdcall.}
+    PropertyFailure*: proc(
+      self: ptr ITransferAdviseSink,
+      psi: ptr IShellItem,
+      pkey: ptr PROPERTYKEY,
+      hrError: HRESULT,
+    ): HRESULT {.stdcall.}
+
   ITransferSource* {.pure.} = object
     lpVtbl*: ptr ITransferSourceVtbl
+
   ITransferSourceVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Advise*: proc(self: ptr ITransferSource, psink: ptr ITransferAdviseSink, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
+    Advise*: proc(
+      self: ptr ITransferSource, psink: ptr ITransferAdviseSink, pdwCookie: ptr DWORD
+    ): HRESULT {.stdcall.}
     Unadvise*: proc(self: ptr ITransferSource, dwCookie: DWORD): HRESULT {.stdcall.}
-    SetProperties*: proc(self: ptr ITransferSource, pproparray: ptr IPropertyChangeArray): HRESULT {.stdcall.}
-    OpenItem*: proc(self: ptr ITransferSource, psi: ptr IShellItem, flags: TRANSFER_SOURCE_FLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    MoveItem*: proc(self: ptr ITransferSource, psi: ptr IShellItem, psiParentDst: ptr IShellItem, pszNameDst: LPCWSTR, flags: TRANSFER_SOURCE_FLAGS, ppsiNew: ptr ptr IShellItem): HRESULT {.stdcall.}
-    RecycleItem*: proc(self: ptr ITransferSource, psiSource: ptr IShellItem, psiParentDest: ptr IShellItem, flags: TRANSFER_SOURCE_FLAGS, ppsiNewDest: ptr ptr IShellItem): HRESULT {.stdcall.}
-    RemoveItem*: proc(self: ptr ITransferSource, psiSource: ptr IShellItem, flags: TRANSFER_SOURCE_FLAGS): HRESULT {.stdcall.}
-    RenameItem*: proc(self: ptr ITransferSource, psiSource: ptr IShellItem, pszNewName: LPCWSTR, flags: TRANSFER_SOURCE_FLAGS, ppsiNewDest: ptr ptr IShellItem): HRESULT {.stdcall.}
-    LinkItem*: proc(self: ptr ITransferSource, psiSource: ptr IShellItem, psiParentDest: ptr IShellItem, pszNewName: LPCWSTR, flags: TRANSFER_SOURCE_FLAGS, ppsiNewDest: ptr ptr IShellItem): HRESULT {.stdcall.}
-    ApplyPropertiesToItem*: proc(self: ptr ITransferSource, psiSource: ptr IShellItem, ppsiNew: ptr ptr IShellItem): HRESULT {.stdcall.}
-    GetDefaultDestinationName*: proc(self: ptr ITransferSource, psiSource: ptr IShellItem, psiParentDest: ptr IShellItem, ppszDestinationName: ptr LPWSTR): HRESULT {.stdcall.}
-    EnterFolder*: proc(self: ptr ITransferSource, psiChildFolderDest: ptr IShellItem): HRESULT {.stdcall.}
-    LeaveFolder*: proc(self: ptr ITransferSource, psiChildFolderDest: ptr IShellItem): HRESULT {.stdcall.}
+    SetProperties*: proc(
+      self: ptr ITransferSource, pproparray: ptr IPropertyChangeArray
+    ): HRESULT {.stdcall.}
+    OpenItem*: proc(
+      self: ptr ITransferSource,
+      psi: ptr IShellItem,
+      flags: TRANSFER_SOURCE_FLAGS,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    MoveItem*: proc(
+      self: ptr ITransferSource,
+      psi: ptr IShellItem,
+      psiParentDst: ptr IShellItem,
+      pszNameDst: LPCWSTR,
+      flags: TRANSFER_SOURCE_FLAGS,
+      ppsiNew: ptr ptr IShellItem,
+    ): HRESULT {.stdcall.}
+    RecycleItem*: proc(
+      self: ptr ITransferSource,
+      psiSource: ptr IShellItem,
+      psiParentDest: ptr IShellItem,
+      flags: TRANSFER_SOURCE_FLAGS,
+      ppsiNewDest: ptr ptr IShellItem,
+    ): HRESULT {.stdcall.}
+    RemoveItem*: proc(
+      self: ptr ITransferSource, psiSource: ptr IShellItem, flags: TRANSFER_SOURCE_FLAGS
+    ): HRESULT {.stdcall.}
+    RenameItem*: proc(
+      self: ptr ITransferSource,
+      psiSource: ptr IShellItem,
+      pszNewName: LPCWSTR,
+      flags: TRANSFER_SOURCE_FLAGS,
+      ppsiNewDest: ptr ptr IShellItem,
+    ): HRESULT {.stdcall.}
+    LinkItem*: proc(
+      self: ptr ITransferSource,
+      psiSource: ptr IShellItem,
+      psiParentDest: ptr IShellItem,
+      pszNewName: LPCWSTR,
+      flags: TRANSFER_SOURCE_FLAGS,
+      ppsiNewDest: ptr ptr IShellItem,
+    ): HRESULT {.stdcall.}
+    ApplyPropertiesToItem*: proc(
+      self: ptr ITransferSource, psiSource: ptr IShellItem, ppsiNew: ptr ptr IShellItem
+    ): HRESULT {.stdcall.}
+    GetDefaultDestinationName*: proc(
+      self: ptr ITransferSource,
+      psiSource: ptr IShellItem,
+      psiParentDest: ptr IShellItem,
+      ppszDestinationName: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+    EnterFolder*: proc(
+      self: ptr ITransferSource, psiChildFolderDest: ptr IShellItem
+    ): HRESULT {.stdcall.}
+    LeaveFolder*: proc(
+      self: ptr ITransferSource, psiChildFolderDest: ptr IShellItem
+    ): HRESULT {.stdcall.}
+
   IEnumResources* {.pure.} = object
     lpVtbl*: ptr IEnumResourcesVtbl
+
   IEnumResourcesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumResources, celt: ULONG, psir: ptr SHELL_ITEM_RESOURCE, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumResources,
+      celt: ULONG,
+      psir: ptr SHELL_ITEM_RESOURCE,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumResources, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumResources): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumResources, ppenumr: ptr ptr IEnumResources): HRESULT {.stdcall.}
+    Clone*: proc(self: ptr IEnumResources, ppenumr: ptr ptr IEnumResources): HRESULT {.
+      stdcall
+    .}
+
   IShellItemResources* {.pure.} = object
     lpVtbl*: ptr IShellItemResourcesVtbl
+
   IShellItemResourcesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetAttributes*: proc(self: ptr IShellItemResources, pdwAttributes: ptr DWORD): HRESULT {.stdcall.}
-    GetSize*: proc(self: ptr IShellItemResources, pullSize: ptr ULONGLONG): HRESULT {.stdcall.}
-    GetTimes*: proc(self: ptr IShellItemResources, pftCreation: ptr FILETIME, pftWrite: ptr FILETIME, pftAccess: ptr FILETIME): HRESULT {.stdcall.}
-    SetTimes*: proc(self: ptr IShellItemResources, pftCreation: ptr FILETIME, pftWrite: ptr FILETIME, pftAccess: ptr FILETIME): HRESULT {.stdcall.}
-    GetResourceDescription*: proc(self: ptr IShellItemResources, pcsir: ptr SHELL_ITEM_RESOURCE, ppszDescription: ptr LPWSTR): HRESULT {.stdcall.}
-    EnumResources*: proc(self: ptr IShellItemResources, ppenumr: ptr ptr IEnumResources): HRESULT {.stdcall.}
-    SupportsResource*: proc(self: ptr IShellItemResources, pcsir: ptr SHELL_ITEM_RESOURCE): HRESULT {.stdcall.}
-    OpenResource*: proc(self: ptr IShellItemResources, pcsir: ptr SHELL_ITEM_RESOURCE, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    CreateResource*: proc(self: ptr IShellItemResources, pcsir: ptr SHELL_ITEM_RESOURCE, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetAttributes*:
+      proc(self: ptr IShellItemResources, pdwAttributes: ptr DWORD): HRESULT {.stdcall.}
+    GetSize*:
+      proc(self: ptr IShellItemResources, pullSize: ptr ULONGLONG): HRESULT {.stdcall.}
+    GetTimes*: proc(
+      self: ptr IShellItemResources,
+      pftCreation: ptr FILETIME,
+      pftWrite: ptr FILETIME,
+      pftAccess: ptr FILETIME,
+    ): HRESULT {.stdcall.}
+    SetTimes*: proc(
+      self: ptr IShellItemResources,
+      pftCreation: ptr FILETIME,
+      pftWrite: ptr FILETIME,
+      pftAccess: ptr FILETIME,
+    ): HRESULT {.stdcall.}
+    GetResourceDescription*: proc(
+      self: ptr IShellItemResources,
+      pcsir: ptr SHELL_ITEM_RESOURCE,
+      ppszDescription: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+    EnumResources*: proc(
+      self: ptr IShellItemResources, ppenumr: ptr ptr IEnumResources
+    ): HRESULT {.stdcall.}
+    SupportsResource*: proc(
+      self: ptr IShellItemResources, pcsir: ptr SHELL_ITEM_RESOURCE
+    ): HRESULT {.stdcall.}
+    OpenResource*: proc(
+      self: ptr IShellItemResources,
+      pcsir: ptr SHELL_ITEM_RESOURCE,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    CreateResource*: proc(
+      self: ptr IShellItemResources,
+      pcsir: ptr SHELL_ITEM_RESOURCE,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
     MarkForDelete*: proc(self: ptr IShellItemResources): HRESULT {.stdcall.}
+
   ITransferDestination* {.pure.} = object
     lpVtbl*: ptr ITransferDestinationVtbl
+
   ITransferDestinationVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Advise*: proc(self: ptr ITransferDestination, psink: ptr ITransferAdviseSink, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
-    Unadvise*: proc(self: ptr ITransferDestination, dwCookie: DWORD): HRESULT {.stdcall.}
-    CreateItem*: proc(self: ptr ITransferDestination, pszName: LPCWSTR, dwAttributes: DWORD, ullSize: ULONGLONG, flags: TRANSFER_SOURCE_FLAGS, riidItem: REFIID, ppvItem: ptr pointer, riidResources: REFIID, ppvResources: ptr pointer): HRESULT {.stdcall.}
+    Advise*: proc(
+      self: ptr ITransferDestination,
+      psink: ptr ITransferAdviseSink,
+      pdwCookie: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    Unadvise*:
+      proc(self: ptr ITransferDestination, dwCookie: DWORD): HRESULT {.stdcall.}
+    CreateItem*: proc(
+      self: ptr ITransferDestination,
+      pszName: LPCWSTR,
+      dwAttributes: DWORD,
+      ullSize: ULONGLONG,
+      flags: TRANSFER_SOURCE_FLAGS,
+      riidItem: REFIID,
+      ppvItem: ptr pointer,
+      riidResources: REFIID,
+      ppvResources: ptr pointer,
+    ): HRESULT {.stdcall.}
+
   IStreamAsync* {.pure.} = object
     lpVtbl*: ptr IStreamAsyncVtbl
+
   IStreamAsyncVtbl* {.pure, inheritable.} = object of IStreamVtbl
-    ReadAsync*: proc(self: ptr IStreamAsync, pv: pointer, cb: DWORD, pcbRead: LPDWORD, lpOverlapped: LPOVERLAPPED): HRESULT {.stdcall.}
-    WriteAsync*: proc(self: ptr IStreamAsync, lpBuffer: pointer, cb: DWORD, pcbWritten: LPDWORD, lpOverlapped: LPOVERLAPPED): HRESULT {.stdcall.}
-    OverlappedResult*: proc(self: ptr IStreamAsync, lpOverlapped: LPOVERLAPPED, lpNumberOfBytesTransferred: LPDWORD, bWait: WINBOOL): HRESULT {.stdcall.}
+    ReadAsync*: proc(
+      self: ptr IStreamAsync,
+      pv: pointer,
+      cb: DWORD,
+      pcbRead: LPDWORD,
+      lpOverlapped: LPOVERLAPPED,
+    ): HRESULT {.stdcall.}
+    WriteAsync*: proc(
+      self: ptr IStreamAsync,
+      lpBuffer: pointer,
+      cb: DWORD,
+      pcbWritten: LPDWORD,
+      lpOverlapped: LPOVERLAPPED,
+    ): HRESULT {.stdcall.}
+    OverlappedResult*: proc(
+      self: ptr IStreamAsync,
+      lpOverlapped: LPOVERLAPPED,
+      lpNumberOfBytesTransferred: LPDWORD,
+      bWait: WINBOOL,
+    ): HRESULT {.stdcall.}
     CancelIo*: proc(self: ptr IStreamAsync): HRESULT {.stdcall.}
+
   IStreamUnbufferedInfo* {.pure.} = object
     lpVtbl*: ptr IStreamUnbufferedInfoVtbl
+
   IStreamUnbufferedInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSectorSize*: proc(self: ptr IStreamUnbufferedInfo, pcbSectorSize: ptr ULONG): HRESULT {.stdcall.}
+    GetSectorSize*: proc(
+      self: ptr IStreamUnbufferedInfo, pcbSectorSize: ptr ULONG
+    ): HRESULT {.stdcall.}
+
   IFileOperationProgressSink* {.pure.} = object
     lpVtbl*: ptr IFileOperationProgressSinkVtbl
+
   IFileOperationProgressSinkVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     StartOperations*: proc(self: ptr IFileOperationProgressSink): HRESULT {.stdcall.}
-    FinishOperations*: proc(self: ptr IFileOperationProgressSink, hrResult: HRESULT): HRESULT {.stdcall.}
-    PreRenameItem*: proc(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem, pszNewName: LPCWSTR): HRESULT {.stdcall.}
-    PostRenameItem*: proc(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem, pszNewName: LPCWSTR, hrRename: HRESULT, psiNewlyCreated: ptr IShellItem): HRESULT {.stdcall.}
-    PreMoveItem*: proc(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem, psiDestinationFolder: ptr IShellItem, pszNewName: LPCWSTR): HRESULT {.stdcall.}
-    PostMoveItem*: proc(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem, psiDestinationFolder: ptr IShellItem, pszNewName: LPCWSTR, hrMove: HRESULT, psiNewlyCreated: ptr IShellItem): HRESULT {.stdcall.}
-    PreCopyItem*: proc(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem, psiDestinationFolder: ptr IShellItem, pszNewName: LPCWSTR): HRESULT {.stdcall.}
-    PostCopyItem*: proc(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem, psiDestinationFolder: ptr IShellItem, pszNewName: LPCWSTR, hrCopy: HRESULT, psiNewlyCreated: ptr IShellItem): HRESULT {.stdcall.}
-    PreDeleteItem*: proc(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem): HRESULT {.stdcall.}
-    PostDeleteItem*: proc(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem, hrDelete: HRESULT, psiNewlyCreated: ptr IShellItem): HRESULT {.stdcall.}
-    PreNewItem*: proc(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiDestinationFolder: ptr IShellItem, pszNewName: LPCWSTR): HRESULT {.stdcall.}
-    PostNewItem*: proc(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiDestinationFolder: ptr IShellItem, pszNewName: LPCWSTR, pszTemplateName: LPCWSTR, dwFileAttributes: DWORD, hrNew: HRESULT, psiNewItem: ptr IShellItem): HRESULT {.stdcall.}
-    UpdateProgress*: proc(self: ptr IFileOperationProgressSink, iWorkTotal: UINT, iWorkSoFar: UINT): HRESULT {.stdcall.}
+    FinishOperations*:
+      proc(self: ptr IFileOperationProgressSink, hrResult: HRESULT): HRESULT {.stdcall.}
+    PreRenameItem*: proc(
+      self: ptr IFileOperationProgressSink,
+      dwFlags: DWORD,
+      psiItem: ptr IShellItem,
+      pszNewName: LPCWSTR,
+    ): HRESULT {.stdcall.}
+    PostRenameItem*: proc(
+      self: ptr IFileOperationProgressSink,
+      dwFlags: DWORD,
+      psiItem: ptr IShellItem,
+      pszNewName: LPCWSTR,
+      hrRename: HRESULT,
+      psiNewlyCreated: ptr IShellItem,
+    ): HRESULT {.stdcall.}
+    PreMoveItem*: proc(
+      self: ptr IFileOperationProgressSink,
+      dwFlags: DWORD,
+      psiItem: ptr IShellItem,
+      psiDestinationFolder: ptr IShellItem,
+      pszNewName: LPCWSTR,
+    ): HRESULT {.stdcall.}
+    PostMoveItem*: proc(
+      self: ptr IFileOperationProgressSink,
+      dwFlags: DWORD,
+      psiItem: ptr IShellItem,
+      psiDestinationFolder: ptr IShellItem,
+      pszNewName: LPCWSTR,
+      hrMove: HRESULT,
+      psiNewlyCreated: ptr IShellItem,
+    ): HRESULT {.stdcall.}
+    PreCopyItem*: proc(
+      self: ptr IFileOperationProgressSink,
+      dwFlags: DWORD,
+      psiItem: ptr IShellItem,
+      psiDestinationFolder: ptr IShellItem,
+      pszNewName: LPCWSTR,
+    ): HRESULT {.stdcall.}
+    PostCopyItem*: proc(
+      self: ptr IFileOperationProgressSink,
+      dwFlags: DWORD,
+      psiItem: ptr IShellItem,
+      psiDestinationFolder: ptr IShellItem,
+      pszNewName: LPCWSTR,
+      hrCopy: HRESULT,
+      psiNewlyCreated: ptr IShellItem,
+    ): HRESULT {.stdcall.}
+    PreDeleteItem*: proc(
+      self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem
+    ): HRESULT {.stdcall.}
+    PostDeleteItem*: proc(
+      self: ptr IFileOperationProgressSink,
+      dwFlags: DWORD,
+      psiItem: ptr IShellItem,
+      hrDelete: HRESULT,
+      psiNewlyCreated: ptr IShellItem,
+    ): HRESULT {.stdcall.}
+    PreNewItem*: proc(
+      self: ptr IFileOperationProgressSink,
+      dwFlags: DWORD,
+      psiDestinationFolder: ptr IShellItem,
+      pszNewName: LPCWSTR,
+    ): HRESULT {.stdcall.}
+    PostNewItem*: proc(
+      self: ptr IFileOperationProgressSink,
+      dwFlags: DWORD,
+      psiDestinationFolder: ptr IShellItem,
+      pszNewName: LPCWSTR,
+      pszTemplateName: LPCWSTR,
+      dwFileAttributes: DWORD,
+      hrNew: HRESULT,
+      psiNewItem: ptr IShellItem,
+    ): HRESULT {.stdcall.}
+    UpdateProgress*: proc(
+      self: ptr IFileOperationProgressSink, iWorkTotal: UINT, iWorkSoFar: UINT
+    ): HRESULT {.stdcall.}
     ResetTimer*: proc(self: ptr IFileOperationProgressSink): HRESULT {.stdcall.}
     PauseTimer*: proc(self: ptr IFileOperationProgressSink): HRESULT {.stdcall.}
     ResumeTimer*: proc(self: ptr IFileOperationProgressSink): HRESULT {.stdcall.}
+
   IInitializeWithItem* {.pure.} = object
     lpVtbl*: ptr IInitializeWithItemVtbl
+
   IInitializeWithItemVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IInitializeWithItem, psi: ptr IShellItem, grfMode: DWORD): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IInitializeWithItem, psi: ptr IShellItem, grfMode: DWORD
+    ): HRESULT {.stdcall.}
+
   IObjectWithSelection* {.pure.} = object
     lpVtbl*: ptr IObjectWithSelectionVtbl
+
   IObjectWithSelectionVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetSelection*: proc(self: ptr IObjectWithSelection, psia: ptr IShellItemArray): HRESULT {.stdcall.}
-    GetSelection*: proc(self: ptr IObjectWithSelection, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    SetSelection*: proc(
+      self: ptr IObjectWithSelection, psia: ptr IShellItemArray
+    ): HRESULT {.stdcall.}
+    GetSelection*: proc(
+      self: ptr IObjectWithSelection, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+
   IObjectWithBackReferences* {.pure.} = object
     lpVtbl*: ptr IObjectWithBackReferencesVtbl
+
   IObjectWithBackReferencesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RemoveBackReferences*: proc(self: ptr IObjectWithBackReferences): HRESULT {.stdcall.}
+    RemoveBackReferences*:
+      proc(self: ptr IObjectWithBackReferences): HRESULT {.stdcall.}
+
   IPropertyUI* {.pure.} = object
     lpVtbl*: ptr IPropertyUIVtbl
+
   IPropertyUIVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ParsePropertyName*: proc(self: ptr IPropertyUI, pszName: LPCWSTR, pfmtid: ptr FMTID, ppid: ptr PROPID, pchEaten: ptr ULONG): HRESULT {.stdcall.}
-    GetCannonicalName*: proc(self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, pwszText: LPWSTR, cchText: DWORD): HRESULT {.stdcall.}
-    GetDisplayName*: proc(self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, flags: PROPERTYUI_NAME_FLAGS, pwszText: LPWSTR, cchText: DWORD): HRESULT {.stdcall.}
-    GetPropertyDescription*: proc(self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, pwszText: LPWSTR, cchText: DWORD): HRESULT {.stdcall.}
-    GetDefaultWidth*: proc(self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, pcxChars: ptr ULONG): HRESULT {.stdcall.}
-    GetFlags*: proc(self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, pflags: ptr PROPERTYUI_FLAGS): HRESULT {.stdcall.}
-    FormatForDisplay*: proc(self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, ppropvar: ptr PROPVARIANT, puiff: PROPERTYUI_FORMAT_FLAGS, pwszText: LPWSTR, cchText: DWORD): HRESULT {.stdcall.}
-    GetHelpInfo*: proc(self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, pwszHelpFile: LPWSTR, cch: DWORD, puHelpID: ptr UINT): HRESULT {.stdcall.}
+    ParsePropertyName*: proc(
+      self: ptr IPropertyUI,
+      pszName: LPCWSTR,
+      pfmtid: ptr FMTID,
+      ppid: ptr PROPID,
+      pchEaten: ptr ULONG,
+    ): HRESULT {.stdcall.}
+    GetCannonicalName*: proc(
+      self: ptr IPropertyUI,
+      fmtid: REFFMTID,
+      pid: PROPID,
+      pwszText: LPWSTR,
+      cchText: DWORD,
+    ): HRESULT {.stdcall.}
+    GetDisplayName*: proc(
+      self: ptr IPropertyUI,
+      fmtid: REFFMTID,
+      pid: PROPID,
+      flags: PROPERTYUI_NAME_FLAGS,
+      pwszText: LPWSTR,
+      cchText: DWORD,
+    ): HRESULT {.stdcall.}
+    GetPropertyDescription*: proc(
+      self: ptr IPropertyUI,
+      fmtid: REFFMTID,
+      pid: PROPID,
+      pwszText: LPWSTR,
+      cchText: DWORD,
+    ): HRESULT {.stdcall.}
+    GetDefaultWidth*: proc(
+      self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, pcxChars: ptr ULONG
+    ): HRESULT {.stdcall.}
+    GetFlags*: proc(
+      self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, pflags: ptr PROPERTYUI_FLAGS
+    ): HRESULT {.stdcall.}
+    FormatForDisplay*: proc(
+      self: ptr IPropertyUI,
+      fmtid: REFFMTID,
+      pid: PROPID,
+      ppropvar: ptr PROPVARIANT,
+      puiff: PROPERTYUI_FORMAT_FLAGS,
+      pwszText: LPWSTR,
+      cchText: DWORD,
+    ): HRESULT {.stdcall.}
+    GetHelpInfo*: proc(
+      self: ptr IPropertyUI,
+      fmtid: REFFMTID,
+      pid: PROPID,
+      pwszHelpFile: LPWSTR,
+      cch: DWORD,
+      puHelpID: ptr UINT,
+    ): HRESULT {.stdcall.}
+
   ICategoryProvider* {.pure.} = object
     lpVtbl*: ptr ICategoryProviderVtbl
+
   ICategoryProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CanCategorizeOnSCID*: proc(self: ptr ICategoryProvider, pscid: ptr SHCOLUMNID): HRESULT {.stdcall.}
-    GetDefaultCategory*: proc(self: ptr ICategoryProvider, pguid: ptr GUID, pscid: ptr SHCOLUMNID): HRESULT {.stdcall.}
-    GetCategoryForSCID*: proc(self: ptr ICategoryProvider, pscid: ptr SHCOLUMNID, pguid: ptr GUID): HRESULT {.stdcall.}
-    EnumCategories*: proc(self: ptr ICategoryProvider, penum: ptr ptr IEnumGUID): HRESULT {.stdcall.}
-    GetCategoryName*: proc(self: ptr ICategoryProvider, pguid: ptr GUID, pszName: LPWSTR, cch: UINT): HRESULT {.stdcall.}
-    CreateCategory*: proc(self: ptr ICategoryProvider, pguid: ptr GUID, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    CanCategorizeOnSCID*:
+      proc(self: ptr ICategoryProvider, pscid: ptr SHCOLUMNID): HRESULT {.stdcall.}
+    GetDefaultCategory*: proc(
+      self: ptr ICategoryProvider, pguid: ptr GUID, pscid: ptr SHCOLUMNID
+    ): HRESULT {.stdcall.}
+    GetCategoryForSCID*: proc(
+      self: ptr ICategoryProvider, pscid: ptr SHCOLUMNID, pguid: ptr GUID
+    ): HRESULT {.stdcall.}
+    EnumCategories*:
+      proc(self: ptr ICategoryProvider, penum: ptr ptr IEnumGUID): HRESULT {.stdcall.}
+    GetCategoryName*: proc(
+      self: ptr ICategoryProvider, pguid: ptr GUID, pszName: LPWSTR, cch: UINT
+    ): HRESULT {.stdcall.}
+    CreateCategory*: proc(
+      self: ptr ICategoryProvider, pguid: ptr GUID, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+
   ICategorizer* {.pure.} = object
     lpVtbl*: ptr ICategorizerVtbl
+
   ICategorizerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetDescription*: proc(self: ptr ICategorizer, pszDesc: LPWSTR, cch: UINT): HRESULT {.stdcall.}
-    GetCategory*: proc(self: ptr ICategorizer, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, rgCategoryIds: ptr DWORD): HRESULT {.stdcall.}
-    GetCategoryInfo*: proc(self: ptr ICategorizer, dwCategoryId: DWORD, pci: ptr TCATEGORY_INFO): HRESULT {.stdcall.}
-    CompareCategory*: proc(self: ptr ICategorizer, csfFlags: CATSORT_FLAGS, dwCategoryId1: DWORD, dwCategoryId2: DWORD): HRESULT {.stdcall.}
+    GetDescription*:
+      proc(self: ptr ICategorizer, pszDesc: LPWSTR, cch: UINT): HRESULT {.stdcall.}
+    GetCategory*: proc(
+      self: ptr ICategorizer,
+      cidl: UINT,
+      apidl: PCUITEMID_CHILD_ARRAY,
+      rgCategoryIds: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetCategoryInfo*: proc(
+      self: ptr ICategorizer, dwCategoryId: DWORD, pci: ptr TCATEGORY_INFO
+    ): HRESULT {.stdcall.}
+    CompareCategory*: proc(
+      self: ptr ICategorizer,
+      csfFlags: CATSORT_FLAGS,
+      dwCategoryId1: DWORD,
+      dwCategoryId2: DWORD,
+    ): HRESULT {.stdcall.}
+
   IDropTargetHelper* {.pure.} = object
     lpVtbl*: ptr IDropTargetHelperVtbl
+
   IDropTargetHelperVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    DragEnter*: proc(self: ptr IDropTargetHelper, hwndTarget: HWND, pDataObject: ptr IDataObject, ppt: ptr POINT, dwEffect: DWORD): HRESULT {.stdcall.}
+    DragEnter*: proc(
+      self: ptr IDropTargetHelper,
+      hwndTarget: HWND,
+      pDataObject: ptr IDataObject,
+      ppt: ptr POINT,
+      dwEffect: DWORD,
+    ): HRESULT {.stdcall.}
     DragLeave*: proc(self: ptr IDropTargetHelper): HRESULT {.stdcall.}
-    DragOver*: proc(self: ptr IDropTargetHelper, ppt: ptr POINT, dwEffect: DWORD): HRESULT {.stdcall.}
-    Drop*: proc(self: ptr IDropTargetHelper, pDataObject: ptr IDataObject, ppt: ptr POINT, dwEffect: DWORD): HRESULT {.stdcall.}
+    DragOver*: proc(
+      self: ptr IDropTargetHelper, ppt: ptr POINT, dwEffect: DWORD
+    ): HRESULT {.stdcall.}
+    Drop*: proc(
+      self: ptr IDropTargetHelper,
+      pDataObject: ptr IDataObject,
+      ppt: ptr POINT,
+      dwEffect: DWORD,
+    ): HRESULT {.stdcall.}
     Show*: proc(self: ptr IDropTargetHelper, fShow: WINBOOL): HRESULT {.stdcall.}
+
   IDragSourceHelper* {.pure.} = object
     lpVtbl*: ptr IDragSourceHelperVtbl
+
   IDragSourceHelperVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    InitializeFromBitmap*: proc(self: ptr IDragSourceHelper, pshdi: LPSHDRAGIMAGE, pDataObject: ptr IDataObject): HRESULT {.stdcall.}
-    InitializeFromWindow*: proc(self: ptr IDragSourceHelper, hwnd: HWND, ppt: ptr POINT, pDataObject: ptr IDataObject): HRESULT {.stdcall.}
+    InitializeFromBitmap*: proc(
+      self: ptr IDragSourceHelper, pshdi: LPSHDRAGIMAGE, pDataObject: ptr IDataObject
+    ): HRESULT {.stdcall.}
+    InitializeFromWindow*: proc(
+      self: ptr IDragSourceHelper,
+      hwnd: HWND,
+      ppt: ptr POINT,
+      pDataObject: ptr IDataObject,
+    ): HRESULT {.stdcall.}
+
   IDragSourceHelper2* {.pure.} = object
     lpVtbl*: ptr IDragSourceHelper2Vtbl
+
   IDragSourceHelper2Vtbl* {.pure, inheritable.} = object of IDragSourceHelperVtbl
     SetFlags*: proc(self: ptr IDragSourceHelper2, dwFlags: DWORD): HRESULT {.stdcall.}
+
   IShellLinkDataList* {.pure.} = object
     lpVtbl*: ptr IShellLinkDataListVtbl
+
   IShellLinkDataListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AddDataBlock*: proc(self: ptr IShellLinkDataList, pDataBlock: pointer): HRESULT {.stdcall.}
-    CopyDataBlock*: proc(self: ptr IShellLinkDataList, dwSig: DWORD, ppDataBlock: ptr pointer): HRESULT {.stdcall.}
-    RemoveDataBlock*: proc(self: ptr IShellLinkDataList, dwSig: DWORD): HRESULT {.stdcall.}
-    GetFlags*: proc(self: ptr IShellLinkDataList, pdwFlags: ptr DWORD): HRESULT {.stdcall.}
+    AddDataBlock*:
+      proc(self: ptr IShellLinkDataList, pDataBlock: pointer): HRESULT {.stdcall.}
+    CopyDataBlock*: proc(
+      self: ptr IShellLinkDataList, dwSig: DWORD, ppDataBlock: ptr pointer
+    ): HRESULT {.stdcall.}
+    RemoveDataBlock*:
+      proc(self: ptr IShellLinkDataList, dwSig: DWORD): HRESULT {.stdcall.}
+    GetFlags*:
+      proc(self: ptr IShellLinkDataList, pdwFlags: ptr DWORD): HRESULT {.stdcall.}
     SetFlags*: proc(self: ptr IShellLinkDataList, dwFlags: DWORD): HRESULT {.stdcall.}
+
   IResolveShellLink* {.pure.} = object
     lpVtbl*: ptr IResolveShellLinkVtbl
+
   IResolveShellLinkVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ResolveShellLink*: proc(self: ptr IResolveShellLink, punkLink: ptr IUnknown, hwnd: HWND, fFlags: DWORD): HRESULT {.stdcall.}
+    ResolveShellLink*: proc(
+      self: ptr IResolveShellLink, punkLink: ptr IUnknown, hwnd: HWND, fFlags: DWORD
+    ): HRESULT {.stdcall.}
+
   IActionProgressDialog* {.pure.} = object
     lpVtbl*: ptr IActionProgressDialogVtbl
+
   IActionProgressDialogVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IActionProgressDialog, flags: SPINITF, pszTitle: LPCWSTR, pszCancel: LPCWSTR): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IActionProgressDialog,
+      flags: SPINITF,
+      pszTitle: LPCWSTR,
+      pszCancel: LPCWSTR,
+    ): HRESULT {.stdcall.}
     Stop*: proc(self: ptr IActionProgressDialog): HRESULT {.stdcall.}
+
   IHWEventHandler* {.pure.} = object
     lpVtbl*: ptr IHWEventHandlerVtbl
+
   IHWEventHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IHWEventHandler, pszParams: LPCWSTR): HRESULT {.stdcall.}
-    HandleEvent*: proc(self: ptr IHWEventHandler, pszDeviceID: LPCWSTR, pszAltDeviceID: LPCWSTR, pszEventType: LPCWSTR): HRESULT {.stdcall.}
-    HandleEventWithContent*: proc(self: ptr IHWEventHandler, pszDeviceID: LPCWSTR, pszAltDeviceID: LPCWSTR, pszEventType: LPCWSTR, pszContentTypeHandler: LPCWSTR, pdataobject: ptr IDataObject): HRESULT {.stdcall.}
+    Initialize*:
+      proc(self: ptr IHWEventHandler, pszParams: LPCWSTR): HRESULT {.stdcall.}
+    HandleEvent*: proc(
+      self: ptr IHWEventHandler,
+      pszDeviceID: LPCWSTR,
+      pszAltDeviceID: LPCWSTR,
+      pszEventType: LPCWSTR,
+    ): HRESULT {.stdcall.}
+    HandleEventWithContent*: proc(
+      self: ptr IHWEventHandler,
+      pszDeviceID: LPCWSTR,
+      pszAltDeviceID: LPCWSTR,
+      pszEventType: LPCWSTR,
+      pszContentTypeHandler: LPCWSTR,
+      pdataobject: ptr IDataObject,
+    ): HRESULT {.stdcall.}
+
   IHWEventHandler2* {.pure.} = object
     lpVtbl*: ptr IHWEventHandler2Vtbl
+
   IHWEventHandler2Vtbl* {.pure, inheritable.} = object of IHWEventHandlerVtbl
-    HandleEventWithHWND*: proc(self: ptr IHWEventHandler2, pszDeviceID: LPCWSTR, pszAltDeviceID: LPCWSTR, pszEventType: LPCWSTR, hwndOwner: HWND): HRESULT {.stdcall.}
+    HandleEventWithHWND*: proc(
+      self: ptr IHWEventHandler2,
+      pszDeviceID: LPCWSTR,
+      pszAltDeviceID: LPCWSTR,
+      pszEventType: LPCWSTR,
+      hwndOwner: HWND,
+    ): HRESULT {.stdcall.}
+
   IQueryCancelAutoPlay* {.pure.} = object
     lpVtbl*: ptr IQueryCancelAutoPlayVtbl
+
   IQueryCancelAutoPlayVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AllowAutoPlay*: proc(self: ptr IQueryCancelAutoPlay, pszPath: LPCWSTR, dwContentType: DWORD, pszLabel: LPCWSTR, dwSerialNumber: DWORD): HRESULT {.stdcall.}
+    AllowAutoPlay*: proc(
+      self: ptr IQueryCancelAutoPlay,
+      pszPath: LPCWSTR,
+      dwContentType: DWORD,
+      pszLabel: LPCWSTR,
+      dwSerialNumber: DWORD,
+    ): HRESULT {.stdcall.}
+
   IDynamicHWHandler* {.pure.} = object
     lpVtbl*: ptr IDynamicHWHandlerVtbl
+
   IDynamicHWHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetDynamicInfo*: proc(self: ptr IDynamicHWHandler, pszDeviceID: LPCWSTR, dwContentType: DWORD, ppszAction: ptr LPWSTR): HRESULT {.stdcall.}
+    GetDynamicInfo*: proc(
+      self: ptr IDynamicHWHandler,
+      pszDeviceID: LPCWSTR,
+      dwContentType: DWORD,
+      ppszAction: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+
   IActionProgress* {.pure.} = object
     lpVtbl*: ptr IActionProgressVtbl
+
   IActionProgressVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Begin*: proc(self: ptr IActionProgress, action: SPACTION, flags: SPBEGINF): HRESULT {.stdcall.}
-    UpdateProgress*: proc(self: ptr IActionProgress, ulCompleted: ULONGLONG, ulTotal: ULONGLONG): HRESULT {.stdcall.}
-    UpdateText*: proc(self: ptr IActionProgress, sptext: SPTEXT, pszText: LPCWSTR, fMayCompact: WINBOOL): HRESULT {.stdcall.}
-    QueryCancel*: proc(self: ptr IActionProgress, pfCancelled: ptr WINBOOL): HRESULT {.stdcall.}
+    Begin*: proc(self: ptr IActionProgress, action: SPACTION, flags: SPBEGINF): HRESULT {.
+      stdcall
+    .}
+    UpdateProgress*: proc(
+      self: ptr IActionProgress, ulCompleted: ULONGLONG, ulTotal: ULONGLONG
+    ): HRESULT {.stdcall.}
+    UpdateText*: proc(
+      self: ptr IActionProgress, sptext: SPTEXT, pszText: LPCWSTR, fMayCompact: WINBOOL
+    ): HRESULT {.stdcall.}
+    QueryCancel*:
+      proc(self: ptr IActionProgress, pfCancelled: ptr WINBOOL): HRESULT {.stdcall.}
     ResetCancel*: proc(self: ptr IActionProgress): HRESULT {.stdcall.}
     End*: proc(self: ptr IActionProgress): HRESULT {.stdcall.}
+
   IRemoteComputer* {.pure.} = object
     lpVtbl*: ptr IRemoteComputerVtbl
+
   IRemoteComputerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IRemoteComputer, pszMachine: LPCWSTR, bEnumerating: WINBOOL): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IRemoteComputer, pszMachine: LPCWSTR, bEnumerating: WINBOOL
+    ): HRESULT {.stdcall.}
+
   IQueryContinue* {.pure.} = object
     lpVtbl*: ptr IQueryContinueVtbl
+
   IQueryContinueVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     QueryContinue*: proc(self: ptr IQueryContinue): HRESULT {.stdcall.}
+
   IObjectWithCancelEvent* {.pure.} = object
     lpVtbl*: ptr IObjectWithCancelEventVtbl
+
   IObjectWithCancelEventVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCancelEvent*: proc(self: ptr IObjectWithCancelEvent, phEvent: ptr HANDLE): HRESULT {.stdcall.}
+    GetCancelEvent*:
+      proc(self: ptr IObjectWithCancelEvent, phEvent: ptr HANDLE): HRESULT {.stdcall.}
+
   IUserNotification* {.pure.} = object
     lpVtbl*: ptr IUserNotificationVtbl
+
   IUserNotificationVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetBalloonInfo*: proc(self: ptr IUserNotification, pszTitle: LPCWSTR, pszText: LPCWSTR, dwInfoFlags: DWORD): HRESULT {.stdcall.}
-    SetBalloonRetry*: proc(self: ptr IUserNotification, dwShowTime: DWORD, dwInterval: DWORD, cRetryCount: UINT): HRESULT {.stdcall.}
-    SetIconInfo*: proc(self: ptr IUserNotification, hIcon: HICON, pszToolTip: LPCWSTR): HRESULT {.stdcall.}
-    Show*: proc(self: ptr IUserNotification, pqc: ptr IQueryContinue, dwContinuePollInterval: DWORD): HRESULT {.stdcall.}
-    PlaySound*: proc(self: ptr IUserNotification, pszSoundName: LPCWSTR): HRESULT {.stdcall.}
+    SetBalloonInfo*: proc(
+      self: ptr IUserNotification,
+      pszTitle: LPCWSTR,
+      pszText: LPCWSTR,
+      dwInfoFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    SetBalloonRetry*: proc(
+      self: ptr IUserNotification,
+      dwShowTime: DWORD,
+      dwInterval: DWORD,
+      cRetryCount: UINT,
+    ): HRESULT {.stdcall.}
+    SetIconInfo*: proc(
+      self: ptr IUserNotification, hIcon: HICON, pszToolTip: LPCWSTR
+    ): HRESULT {.stdcall.}
+    Show*: proc(
+      self: ptr IUserNotification,
+      pqc: ptr IQueryContinue,
+      dwContinuePollInterval: DWORD,
+    ): HRESULT {.stdcall.}
+    PlaySound*:
+      proc(self: ptr IUserNotification, pszSoundName: LPCWSTR): HRESULT {.stdcall.}
+
   IUserNotificationCallback* {.pure.} = object
     lpVtbl*: ptr IUserNotificationCallbackVtbl
+
   IUserNotificationCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnBalloonUserClick*: proc(self: ptr IUserNotificationCallback, pt: ptr POINT): HRESULT {.stdcall.}
-    OnLeftClick*: proc(self: ptr IUserNotificationCallback, pt: ptr POINT): HRESULT {.stdcall.}
-    OnContextMenu*: proc(self: ptr IUserNotificationCallback, pt: ptr POINT): HRESULT {.stdcall.}
+    OnBalloonUserClick*:
+      proc(self: ptr IUserNotificationCallback, pt: ptr POINT): HRESULT {.stdcall.}
+    OnLeftClick*:
+      proc(self: ptr IUserNotificationCallback, pt: ptr POINT): HRESULT {.stdcall.}
+    OnContextMenu*:
+      proc(self: ptr IUserNotificationCallback, pt: ptr POINT): HRESULT {.stdcall.}
+
   IUserNotification2* {.pure.} = object
     lpVtbl*: ptr IUserNotification2Vtbl
+
   IUserNotification2Vtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetBalloonInfo*: proc(self: ptr IUserNotification2, pszTitle: LPCWSTR, pszText: LPCWSTR, dwInfoFlags: DWORD): HRESULT {.stdcall.}
-    SetBalloonRetry*: proc(self: ptr IUserNotification2, dwShowTime: DWORD, dwInterval: DWORD, cRetryCount: UINT): HRESULT {.stdcall.}
-    SetIconInfo*: proc(self: ptr IUserNotification2, hIcon: HICON, pszToolTip: LPCWSTR): HRESULT {.stdcall.}
-    Show*: proc(self: ptr IUserNotification2, pqc: ptr IQueryContinue, dwContinuePollInterval: DWORD, pSink: ptr IUserNotificationCallback): HRESULT {.stdcall.}
-    PlaySound*: proc(self: ptr IUserNotification2, pszSoundName: LPCWSTR): HRESULT {.stdcall.}
+    SetBalloonInfo*: proc(
+      self: ptr IUserNotification2,
+      pszTitle: LPCWSTR,
+      pszText: LPCWSTR,
+      dwInfoFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    SetBalloonRetry*: proc(
+      self: ptr IUserNotification2,
+      dwShowTime: DWORD,
+      dwInterval: DWORD,
+      cRetryCount: UINT,
+    ): HRESULT {.stdcall.}
+    SetIconInfo*: proc(
+      self: ptr IUserNotification2, hIcon: HICON, pszToolTip: LPCWSTR
+    ): HRESULT {.stdcall.}
+    Show*: proc(
+      self: ptr IUserNotification2,
+      pqc: ptr IQueryContinue,
+      dwContinuePollInterval: DWORD,
+      pSink: ptr IUserNotificationCallback,
+    ): HRESULT {.stdcall.}
+    PlaySound*:
+      proc(self: ptr IUserNotification2, pszSoundName: LPCWSTR): HRESULT {.stdcall.}
+
   IItemNameLimits* {.pure.} = object
     lpVtbl*: ptr IItemNameLimitsVtbl
+
   IItemNameLimitsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetValidCharacters*: proc(self: ptr IItemNameLimits, ppwszValidChars: ptr LPWSTR, ppwszInvalidChars: ptr LPWSTR): HRESULT {.stdcall.}
-    GetMaxLength*: proc(self: ptr IItemNameLimits, pszName: LPCWSTR, piMaxNameLen: ptr int32): HRESULT {.stdcall.}
+    GetValidCharacters*: proc(
+      self: ptr IItemNameLimits,
+      ppwszValidChars: ptr LPWSTR,
+      ppwszInvalidChars: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+    GetMaxLength*: proc(
+      self: ptr IItemNameLimits, pszName: LPCWSTR, piMaxNameLen: ptr int32
+    ): HRESULT {.stdcall.}
+
   ISearchFolderItemFactory* {.pure.} = object
     lpVtbl*: ptr ISearchFolderItemFactoryVtbl
+
   ISearchFolderItemFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetDisplayName*: proc(self: ptr ISearchFolderItemFactory, pszDisplayName: LPCWSTR): HRESULT {.stdcall.}
-    SetFolderTypeID*: proc(self: ptr ISearchFolderItemFactory, ftid: FOLDERTYPEID): HRESULT {.stdcall.}
-    SetFolderLogicalViewMode*: proc(self: ptr ISearchFolderItemFactory, flvm: FOLDERLOGICALVIEWMODE): HRESULT {.stdcall.}
-    SetIconSize*: proc(self: ptr ISearchFolderItemFactory, iIconSize: int32): HRESULT {.stdcall.}
-    SetVisibleColumns*: proc(self: ptr ISearchFolderItemFactory, cVisibleColumns: UINT, rgKey: ptr PROPERTYKEY): HRESULT {.stdcall.}
-    SetSortColumns*: proc(self: ptr ISearchFolderItemFactory, cSortColumns: UINT, rgSortColumns: ptr SORTCOLUMN): HRESULT {.stdcall.}
-    SetGroupColumn*: proc(self: ptr ISearchFolderItemFactory, keyGroup: REFPROPERTYKEY): HRESULT {.stdcall.}
-    SetStacks*: proc(self: ptr ISearchFolderItemFactory, cStackKeys: UINT, rgStackKeys: ptr PROPERTYKEY): HRESULT {.stdcall.}
-    SetScope*: proc(self: ptr ISearchFolderItemFactory, psiaScope: ptr IShellItemArray): HRESULT {.stdcall.}
-    SetCondition*: proc(self: ptr ISearchFolderItemFactory, pCondition: ptr ICondition): HRESULT {.stdcall.}
-    GetShellItem*: proc(self: ptr ISearchFolderItemFactory, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetIDList*: proc(self: ptr ISearchFolderItemFactory, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+    SetDisplayName*: proc(
+      self: ptr ISearchFolderItemFactory, pszDisplayName: LPCWSTR
+    ): HRESULT {.stdcall.}
+    SetFolderTypeID*:
+      proc(self: ptr ISearchFolderItemFactory, ftid: FOLDERTYPEID): HRESULT {.stdcall.}
+    SetFolderLogicalViewMode*: proc(
+      self: ptr ISearchFolderItemFactory, flvm: FOLDERLOGICALVIEWMODE
+    ): HRESULT {.stdcall.}
+    SetIconSize*:
+      proc(self: ptr ISearchFolderItemFactory, iIconSize: int32): HRESULT {.stdcall.}
+    SetVisibleColumns*: proc(
+      self: ptr ISearchFolderItemFactory, cVisibleColumns: UINT, rgKey: ptr PROPERTYKEY
+    ): HRESULT {.stdcall.}
+    SetSortColumns*: proc(
+      self: ptr ISearchFolderItemFactory,
+      cSortColumns: UINT,
+      rgSortColumns: ptr SORTCOLUMN,
+    ): HRESULT {.stdcall.}
+    SetGroupColumn*: proc(
+      self: ptr ISearchFolderItemFactory, keyGroup: REFPROPERTYKEY
+    ): HRESULT {.stdcall.}
+    SetStacks*: proc(
+      self: ptr ISearchFolderItemFactory, cStackKeys: UINT, rgStackKeys: ptr PROPERTYKEY
+    ): HRESULT {.stdcall.}
+    SetScope*: proc(
+      self: ptr ISearchFolderItemFactory, psiaScope: ptr IShellItemArray
+    ): HRESULT {.stdcall.}
+    SetCondition*: proc(
+      self: ptr ISearchFolderItemFactory, pCondition: ptr ICondition
+    ): HRESULT {.stdcall.}
+    GetShellItem*: proc(
+      self: ptr ISearchFolderItemFactory, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    GetIDList*: proc(
+      self: ptr ISearchFolderItemFactory, ppidl: ptr PIDLIST_ABSOLUTE
+    ): HRESULT {.stdcall.}
+
   IThumbnailHandlerFactory* {.pure.} = object
     lpVtbl*: ptr IThumbnailHandlerFactoryVtbl
+
   IThumbnailHandlerFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetThumbnailHandler*: proc(self: ptr IThumbnailHandlerFactory, pidlChild: PCUITEMID_CHILD, pbc: ptr IBindCtx, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetThumbnailHandler*: proc(
+      self: ptr IThumbnailHandlerFactory,
+      pidlChild: PCUITEMID_CHILD,
+      pbc: ptr IBindCtx,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+
   IParentAndItem* {.pure.} = object
     lpVtbl*: ptr IParentAndItemVtbl
+
   IParentAndItemVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetParentAndItem*: proc(self: ptr IParentAndItem, pidlParent: PCIDLIST_ABSOLUTE, psf: ptr IShellFolder, pidlChild: PCUITEMID_CHILD): HRESULT {.stdcall.}
-    GetParentAndItem*: proc(self: ptr IParentAndItem, ppidlParent: ptr PIDLIST_ABSOLUTE, ppsf: ptr ptr IShellFolder, ppidlChild: ptr PITEMID_CHILD): HRESULT {.stdcall.}
+    SetParentAndItem*: proc(
+      self: ptr IParentAndItem,
+      pidlParent: PCIDLIST_ABSOLUTE,
+      psf: ptr IShellFolder,
+      pidlChild: PCUITEMID_CHILD,
+    ): HRESULT {.stdcall.}
+    GetParentAndItem*: proc(
+      self: ptr IParentAndItem,
+      ppidlParent: ptr PIDLIST_ABSOLUTE,
+      ppsf: ptr ptr IShellFolder,
+      ppidlChild: ptr PITEMID_CHILD,
+    ): HRESULT {.stdcall.}
+
   IDockingWindow* {.pure.} = object
     lpVtbl*: ptr IDockingWindowVtbl
+
   IDockingWindowVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
     ShowDW*: proc(self: ptr IDockingWindow, fShow: WINBOOL): HRESULT {.stdcall.}
     CloseDW*: proc(self: ptr IDockingWindow, dwReserved: DWORD): HRESULT {.stdcall.}
-    ResizeBorderDW*: proc(self: ptr IDockingWindow, prcBorder: LPCRECT, punkToolbarSite: ptr IUnknown, fReserved: WINBOOL): HRESULT {.stdcall.}
+    ResizeBorderDW*: proc(
+      self: ptr IDockingWindow,
+      prcBorder: LPCRECT,
+      punkToolbarSite: ptr IUnknown,
+      fReserved: WINBOOL,
+    ): HRESULT {.stdcall.}
+
   IDeskBand* {.pure.} = object
     lpVtbl*: ptr IDeskBandVtbl
+
   IDeskBandVtbl* {.pure, inheritable.} = object of IDockingWindowVtbl
-    GetBandInfo*: proc(self: ptr IDeskBand, dwBandID: DWORD, dwViewMode: DWORD, pdbi: ptr DESKBANDINFO): HRESULT {.stdcall.}
+    GetBandInfo*: proc(
+      self: ptr IDeskBand, dwBandID: DWORD, dwViewMode: DWORD, pdbi: ptr DESKBANDINFO
+    ): HRESULT {.stdcall.}
+
   IDeskBandInfo* {.pure.} = object
     lpVtbl*: ptr IDeskBandInfoVtbl
+
   IDeskBandInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetDefaultBandWidth*: proc(self: ptr IDeskBandInfo, dwBandID: DWORD, dwViewMode: DWORD, pnWidth: ptr int32): HRESULT {.stdcall.}
+    GetDefaultBandWidth*: proc(
+      self: ptr IDeskBandInfo, dwBandID: DWORD, dwViewMode: DWORD, pnWidth: ptr int32
+    ): HRESULT {.stdcall.}
+
   IDeskBand2* {.pure.} = object
     lpVtbl*: ptr IDeskBand2Vtbl
+
   IDeskBand2Vtbl* {.pure, inheritable.} = object of IDeskBandVtbl
-    CanRenderComposited*: proc(self: ptr IDeskBand2, pfCanRenderComposited: ptr WINBOOL): HRESULT {.stdcall.}
-    SetCompositionState*: proc(self: ptr IDeskBand2, fCompositionEnabled: WINBOOL): HRESULT {.stdcall.}
-    GetCompositionState*: proc(self: ptr IDeskBand2, pfCompositionEnabled: ptr WINBOOL): HRESULT {.stdcall.}
+    CanRenderComposited*: proc(
+      self: ptr IDeskBand2, pfCanRenderComposited: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    SetCompositionState*:
+      proc(self: ptr IDeskBand2, fCompositionEnabled: WINBOOL): HRESULT {.stdcall.}
+    GetCompositionState*:
+      proc(self: ptr IDeskBand2, pfCompositionEnabled: ptr WINBOOL): HRESULT {.stdcall.}
+
   ITaskbarList* {.pure.} = object
     lpVtbl*: ptr ITaskbarListVtbl
+
   ITaskbarListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     HrInit*: proc(self: ptr ITaskbarList): HRESULT {.stdcall.}
     AddTab*: proc(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.stdcall.}
     DeleteTab*: proc(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.stdcall.}
     ActivateTab*: proc(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.stdcall.}
     SetActiveAlt*: proc(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.stdcall.}
+
   ITaskbarList2* {.pure.} = object
     lpVtbl*: ptr ITaskbarList2Vtbl
+
   ITaskbarList2Vtbl* {.pure, inheritable.} = object of ITaskbarListVtbl
-    MarkFullscreenWindow*: proc(self: ptr ITaskbarList2, hwnd: HWND, fFullscreen: WINBOOL): HRESULT {.stdcall.}
+    MarkFullscreenWindow*: proc(
+      self: ptr ITaskbarList2, hwnd: HWND, fFullscreen: WINBOOL
+    ): HRESULT {.stdcall.}
+
   ITaskbarList3* {.pure.} = object
     lpVtbl*: ptr ITaskbarList3Vtbl
+
   ITaskbarList3Vtbl* {.pure, inheritable.} = object of ITaskbarList2Vtbl
-    SetProgressValue*: proc(self: ptr ITaskbarList3, hwnd: HWND, ullCompleted: ULONGLONG, ullTotal: ULONGLONG): HRESULT {.stdcall.}
-    SetProgressState*: proc(self: ptr ITaskbarList3, hwnd: HWND, tbpFlags: TBPFLAG): HRESULT {.stdcall.}
-    RegisterTab*: proc(self: ptr ITaskbarList3, hwndTab: HWND, hwndMDI: HWND): HRESULT {.stdcall.}
+    SetProgressValue*: proc(
+      self: ptr ITaskbarList3, hwnd: HWND, ullCompleted: ULONGLONG, ullTotal: ULONGLONG
+    ): HRESULT {.stdcall.}
+    SetProgressState*:
+      proc(self: ptr ITaskbarList3, hwnd: HWND, tbpFlags: TBPFLAG): HRESULT {.stdcall.}
+    RegisterTab*:
+      proc(self: ptr ITaskbarList3, hwndTab: HWND, hwndMDI: HWND): HRESULT {.stdcall.}
     UnregisterTab*: proc(self: ptr ITaskbarList3, hwndTab: HWND): HRESULT {.stdcall.}
-    SetTabOrder*: proc(self: ptr ITaskbarList3, hwndTab: HWND, hwndInsertBefore: HWND): HRESULT {.stdcall.}
-    SetTabActive*: proc(self: ptr ITaskbarList3, hwndTab: HWND, hwndMDI: HWND, dwReserved: DWORD): HRESULT {.stdcall.}
-    ThumbBarAddButtons*: proc(self: ptr ITaskbarList3, hwnd: HWND, cButtons: UINT, pButton: LPTHUMBBUTTON): HRESULT {.stdcall.}
-    ThumbBarUpdateButtons*: proc(self: ptr ITaskbarList3, hwnd: HWND, cButtons: UINT, pButton: LPTHUMBBUTTON): HRESULT {.stdcall.}
-    ThumbBarSetImageList*: proc(self: ptr ITaskbarList3, hwnd: HWND, himl: HIMAGELIST): HRESULT {.stdcall.}
-    SetOverlayIcon*: proc(self: ptr ITaskbarList3, hwnd: HWND, hIcon: HICON, pszDescription: LPCWSTR): HRESULT {.stdcall.}
-    SetThumbnailTooltip*: proc(self: ptr ITaskbarList3, hwnd: HWND, pszTip: LPCWSTR): HRESULT {.stdcall.}
-    SetThumbnailClip*: proc(self: ptr ITaskbarList3, hwnd: HWND, prcClip: ptr RECT): HRESULT {.stdcall.}
+    SetTabOrder*: proc(
+      self: ptr ITaskbarList3, hwndTab: HWND, hwndInsertBefore: HWND
+    ): HRESULT {.stdcall.}
+    SetTabActive*: proc(
+      self: ptr ITaskbarList3, hwndTab: HWND, hwndMDI: HWND, dwReserved: DWORD
+    ): HRESULT {.stdcall.}
+    ThumbBarAddButtons*: proc(
+      self: ptr ITaskbarList3, hwnd: HWND, cButtons: UINT, pButton: LPTHUMBBUTTON
+    ): HRESULT {.stdcall.}
+    ThumbBarUpdateButtons*: proc(
+      self: ptr ITaskbarList3, hwnd: HWND, cButtons: UINT, pButton: LPTHUMBBUTTON
+    ): HRESULT {.stdcall.}
+    ThumbBarSetImageList*:
+      proc(self: ptr ITaskbarList3, hwnd: HWND, himl: HIMAGELIST): HRESULT {.stdcall.}
+    SetOverlayIcon*: proc(
+      self: ptr ITaskbarList3, hwnd: HWND, hIcon: HICON, pszDescription: LPCWSTR
+    ): HRESULT {.stdcall.}
+    SetThumbnailTooltip*:
+      proc(self: ptr ITaskbarList3, hwnd: HWND, pszTip: LPCWSTR): HRESULT {.stdcall.}
+    SetThumbnailClip*:
+      proc(self: ptr ITaskbarList3, hwnd: HWND, prcClip: ptr RECT): HRESULT {.stdcall.}
+
   ITaskbarList4* {.pure.} = object
     lpVtbl*: ptr ITaskbarList4Vtbl
+
   ITaskbarList4Vtbl* {.pure, inheritable.} = object of ITaskbarList3Vtbl
-    SetTabProperties*: proc(self: ptr ITaskbarList4, hwndTab: HWND, stpFlags: STPFLAG): HRESULT {.stdcall.}
+    SetTabProperties*: proc(
+      self: ptr ITaskbarList4, hwndTab: HWND, stpFlags: STPFLAG
+    ): HRESULT {.stdcall.}
+
   IStartMenuPinnedList* {.pure.} = object
     lpVtbl*: ptr IStartMenuPinnedListVtbl
+
   IStartMenuPinnedListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RemoveFromList*: proc(self: ptr IStartMenuPinnedList, pitem: ptr IShellItem): HRESULT {.stdcall.}
+    RemoveFromList*:
+      proc(self: ptr IStartMenuPinnedList, pitem: ptr IShellItem): HRESULT {.stdcall.}
+
   ICDBurn* {.pure.} = object
     lpVtbl*: ptr ICDBurnVtbl
+
   ICDBurnVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetRecorderDriveLetter*: proc(self: ptr ICDBurn, pszDrive: LPWSTR, cch: UINT): HRESULT {.stdcall.}
+    GetRecorderDriveLetter*:
+      proc(self: ptr ICDBurn, pszDrive: LPWSTR, cch: UINT): HRESULT {.stdcall.}
     Burn*: proc(self: ptr ICDBurn, hwnd: HWND): HRESULT {.stdcall.}
-    HasRecordableDrive*: proc(self: ptr ICDBurn, pfHasRecorder: ptr WINBOOL): HRESULT {.stdcall.}
+    HasRecordableDrive*:
+      proc(self: ptr ICDBurn, pfHasRecorder: ptr WINBOOL): HRESULT {.stdcall.}
+
   IWizardSite* {.pure.} = object
     lpVtbl*: ptr IWizardSiteVtbl
+
   IWizardSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetPreviousPage*: proc(self: ptr IWizardSite, phpage: ptr HPROPSHEETPAGE): HRESULT {.stdcall.}
-    GetNextPage*: proc(self: ptr IWizardSite, phpage: ptr HPROPSHEETPAGE): HRESULT {.stdcall.}
-    GetCancelledPage*: proc(self: ptr IWizardSite, phpage: ptr HPROPSHEETPAGE): HRESULT {.stdcall.}
+    GetPreviousPage*:
+      proc(self: ptr IWizardSite, phpage: ptr HPROPSHEETPAGE): HRESULT {.stdcall.}
+    GetNextPage*:
+      proc(self: ptr IWizardSite, phpage: ptr HPROPSHEETPAGE): HRESULT {.stdcall.}
+    GetCancelledPage*:
+      proc(self: ptr IWizardSite, phpage: ptr HPROPSHEETPAGE): HRESULT {.stdcall.}
+
   IWizardExtension* {.pure.} = object
     lpVtbl*: ptr IWizardExtensionVtbl
+
   IWizardExtensionVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AddPages*: proc(self: ptr IWizardExtension, aPages: ptr HPROPSHEETPAGE, cPages: UINT, pnPagesAdded: ptr UINT): HRESULT {.stdcall.}
-    GetFirstPage*: proc(self: ptr IWizardExtension, phpage: ptr HPROPSHEETPAGE): HRESULT {.stdcall.}
-    GetLastPage*: proc(self: ptr IWizardExtension, phpage: ptr HPROPSHEETPAGE): HRESULT {.stdcall.}
+    AddPages*: proc(
+      self: ptr IWizardExtension,
+      aPages: ptr HPROPSHEETPAGE,
+      cPages: UINT,
+      pnPagesAdded: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetFirstPage*:
+      proc(self: ptr IWizardExtension, phpage: ptr HPROPSHEETPAGE): HRESULT {.stdcall.}
+    GetLastPage*:
+      proc(self: ptr IWizardExtension, phpage: ptr HPROPSHEETPAGE): HRESULT {.stdcall.}
+
   IWebWizardExtension* {.pure.} = object
     lpVtbl*: ptr IWebWizardExtensionVtbl
+
   IWebWizardExtensionVtbl* {.pure, inheritable.} = object of IWizardExtensionVtbl
-    SetInitialURL*: proc(self: ptr IWebWizardExtension, pszURL: LPCWSTR): HRESULT {.stdcall.}
-    SetErrorURL*: proc(self: ptr IWebWizardExtension, pszErrorURL: LPCWSTR): HRESULT {.stdcall.}
+    SetInitialURL*:
+      proc(self: ptr IWebWizardExtension, pszURL: LPCWSTR): HRESULT {.stdcall.}
+    SetErrorURL*:
+      proc(self: ptr IWebWizardExtension, pszErrorURL: LPCWSTR): HRESULT {.stdcall.}
+
   IPublishingWizard* {.pure.} = object
     lpVtbl*: ptr IPublishingWizardVtbl
+
   IPublishingWizardVtbl* {.pure, inheritable.} = object of IWizardExtensionVtbl
-    Initialize*: proc(self: ptr IPublishingWizard, pdo: ptr IDataObject, dwOptions: DWORD, pszServiceScope: LPCWSTR): HRESULT {.stdcall.}
-    GetTransferManifest*: proc(self: ptr IPublishingWizard, phrFromTransfer: ptr HRESULT, pdocManifest: ptr ptr IXMLDOMDocument): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IPublishingWizard,
+      pdo: ptr IDataObject,
+      dwOptions: DWORD,
+      pszServiceScope: LPCWSTR,
+    ): HRESULT {.stdcall.}
+    GetTransferManifest*: proc(
+      self: ptr IPublishingWizard,
+      phrFromTransfer: ptr HRESULT,
+      pdocManifest: ptr ptr IXMLDOMDocument,
+    ): HRESULT {.stdcall.}
+
   IFolderViewHost* {.pure.} = object
     lpVtbl*: ptr IFolderViewHostVtbl
+
   IFolderViewHostVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IFolderViewHost, hwndParent: HWND, pdo: ptr IDataObject, prc: ptr RECT): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IFolderViewHost, hwndParent: HWND, pdo: ptr IDataObject, prc: ptr RECT
+    ): HRESULT {.stdcall.}
+
   IExplorerBrowserEvents* {.pure.} = object
     lpVtbl*: ptr IExplorerBrowserEventsVtbl
+
   IExplorerBrowserEventsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnNavigationPending*: proc(self: ptr IExplorerBrowserEvents, pidlFolder: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
-    OnViewCreated*: proc(self: ptr IExplorerBrowserEvents, psv: ptr IShellView): HRESULT {.stdcall.}
-    OnNavigationComplete*: proc(self: ptr IExplorerBrowserEvents, pidlFolder: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
-    OnNavigationFailed*: proc(self: ptr IExplorerBrowserEvents, pidlFolder: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+    OnNavigationPending*: proc(
+      self: ptr IExplorerBrowserEvents, pidlFolder: PCIDLIST_ABSOLUTE
+    ): HRESULT {.stdcall.}
+    OnViewCreated*:
+      proc(self: ptr IExplorerBrowserEvents, psv: ptr IShellView): HRESULT {.stdcall.}
+    OnNavigationComplete*: proc(
+      self: ptr IExplorerBrowserEvents, pidlFolder: PCIDLIST_ABSOLUTE
+    ): HRESULT {.stdcall.}
+    OnNavigationFailed*: proc(
+      self: ptr IExplorerBrowserEvents, pidlFolder: PCIDLIST_ABSOLUTE
+    ): HRESULT {.stdcall.}
+
   IExplorerBrowser* {.pure.} = object
     lpVtbl*: ptr IExplorerBrowserVtbl
+
   IExplorerBrowserVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IExplorerBrowser, hwndParent: HWND, prc: ptr RECT, pfs: ptr FOLDERSETTINGS): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IExplorerBrowser,
+      hwndParent: HWND,
+      prc: ptr RECT,
+      pfs: ptr FOLDERSETTINGS,
+    ): HRESULT {.stdcall.}
     Destroy*: proc(self: ptr IExplorerBrowser): HRESULT {.stdcall.}
-    SetRect*: proc(self: ptr IExplorerBrowser, phdwp: ptr HDWP, rcBrowser: RECT): HRESULT {.stdcall.}
-    SetPropertyBag*: proc(self: ptr IExplorerBrowser, pszPropertyBag: LPCWSTR): HRESULT {.stdcall.}
-    SetEmptyText*: proc(self: ptr IExplorerBrowser, pszEmptyText: LPCWSTR): HRESULT {.stdcall.}
-    SetFolderSettings*: proc(self: ptr IExplorerBrowser, pfs: ptr FOLDERSETTINGS): HRESULT {.stdcall.}
-    Advise*: proc(self: ptr IExplorerBrowser, psbe: ptr IExplorerBrowserEvents, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
+    SetRect*: proc(
+      self: ptr IExplorerBrowser, phdwp: ptr HDWP, rcBrowser: RECT
+    ): HRESULT {.stdcall.}
+    SetPropertyBag*:
+      proc(self: ptr IExplorerBrowser, pszPropertyBag: LPCWSTR): HRESULT {.stdcall.}
+    SetEmptyText*:
+      proc(self: ptr IExplorerBrowser, pszEmptyText: LPCWSTR): HRESULT {.stdcall.}
+    SetFolderSettings*:
+      proc(self: ptr IExplorerBrowser, pfs: ptr FOLDERSETTINGS): HRESULT {.stdcall.}
+    Advise*: proc(
+      self: ptr IExplorerBrowser, psbe: ptr IExplorerBrowserEvents, pdwCookie: ptr DWORD
+    ): HRESULT {.stdcall.}
     Unadvise*: proc(self: ptr IExplorerBrowser, dwCookie: DWORD): HRESULT {.stdcall.}
-    SetOptions*: proc(self: ptr IExplorerBrowser, dwFlag: EXPLORER_BROWSER_OPTIONS): HRESULT {.stdcall.}
-    GetOptions*: proc(self: ptr IExplorerBrowser, pdwFlag: ptr EXPLORER_BROWSER_OPTIONS): HRESULT {.stdcall.}
-    BrowseToIDList*: proc(self: ptr IExplorerBrowser, pidl: PCUIDLIST_RELATIVE, uFlags: UINT): HRESULT {.stdcall.}
-    BrowseToObject*: proc(self: ptr IExplorerBrowser, punk: ptr IUnknown, uFlags: UINT): HRESULT {.stdcall.}
-    FillFromObject*: proc(self: ptr IExplorerBrowser, punk: ptr IUnknown, dwFlags: EXPLORER_BROWSER_FILL_FLAGS): HRESULT {.stdcall.}
+    SetOptions*: proc(
+      self: ptr IExplorerBrowser, dwFlag: EXPLORER_BROWSER_OPTIONS
+    ): HRESULT {.stdcall.}
+    GetOptions*: proc(
+      self: ptr IExplorerBrowser, pdwFlag: ptr EXPLORER_BROWSER_OPTIONS
+    ): HRESULT {.stdcall.}
+    BrowseToIDList*: proc(
+      self: ptr IExplorerBrowser, pidl: PCUIDLIST_RELATIVE, uFlags: UINT
+    ): HRESULT {.stdcall.}
+    BrowseToObject*: proc(
+      self: ptr IExplorerBrowser, punk: ptr IUnknown, uFlags: UINT
+    ): HRESULT {.stdcall.}
+    FillFromObject*: proc(
+      self: ptr IExplorerBrowser,
+      punk: ptr IUnknown,
+      dwFlags: EXPLORER_BROWSER_FILL_FLAGS,
+    ): HRESULT {.stdcall.}
     RemoveAll*: proc(self: ptr IExplorerBrowser): HRESULT {.stdcall.}
-    GetCurrentView*: proc(self: ptr IExplorerBrowser, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetCurrentView*: proc(
+      self: ptr IExplorerBrowser, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+
   IAccessibleObject* {.pure.} = object
     lpVtbl*: ptr IAccessibleObjectVtbl
+
   IAccessibleObjectVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetAccessibleName*: proc(self: ptr IAccessibleObject, pszName: LPCWSTR): HRESULT {.stdcall.}
+    SetAccessibleName*:
+      proc(self: ptr IAccessibleObject, pszName: LPCWSTR): HRESULT {.stdcall.}
+
   IResultsFolder* {.pure.} = object
     lpVtbl*: ptr IResultsFolderVtbl
+
   IResultsFolderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     AddItem*: proc(self: ptr IResultsFolder, psi: ptr IShellItem): HRESULT {.stdcall.}
-    AddIDList*: proc(self: ptr IResultsFolder, pidl: PCIDLIST_ABSOLUTE, ppidlAdded: ptr PITEMID_CHILD): HRESULT {.stdcall.}
-    RemoveItem*: proc(self: ptr IResultsFolder, psi: ptr IShellItem): HRESULT {.stdcall.}
-    RemoveIDList*: proc(self: ptr IResultsFolder, pidl: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+    AddIDList*: proc(
+      self: ptr IResultsFolder, pidl: PCIDLIST_ABSOLUTE, ppidlAdded: ptr PITEMID_CHILD
+    ): HRESULT {.stdcall.}
+    RemoveItem*:
+      proc(self: ptr IResultsFolder, psi: ptr IShellItem): HRESULT {.stdcall.}
+    RemoveIDList*:
+      proc(self: ptr IResultsFolder, pidl: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
     RemoveAll*: proc(self: ptr IResultsFolder): HRESULT {.stdcall.}
+
   IEnumObjects* {.pure.} = object
     lpVtbl*: ptr IEnumObjectsVtbl
+
   IEnumObjectsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumObjects, celt: ULONG, riid: REFIID, rgelt: ptr pointer, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumObjects,
+      celt: ULONG,
+      riid: REFIID,
+      rgelt: ptr pointer,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumObjects, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumObjects): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumObjects, ppenum: ptr ptr IEnumObjects): HRESULT {.stdcall.}
+    Clone*:
+      proc(self: ptr IEnumObjects, ppenum: ptr ptr IEnumObjects): HRESULT {.stdcall.}
+
   IOperationsProgressDialog* {.pure.} = object
     lpVtbl*: ptr IOperationsProgressDialogVtbl
+
   IOperationsProgressDialogVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    StartProgressDialog*: proc(self: ptr IOperationsProgressDialog, hwndOwner: HWND, flags: OPPROGDLGF): HRESULT {.stdcall.}
+    StartProgressDialog*: proc(
+      self: ptr IOperationsProgressDialog, hwndOwner: HWND, flags: OPPROGDLGF
+    ): HRESULT {.stdcall.}
     StopProgressDialog*: proc(self: ptr IOperationsProgressDialog): HRESULT {.stdcall.}
-    SetOperation*: proc(self: ptr IOperationsProgressDialog, action: SPACTION): HRESULT {.stdcall.}
-    SetMode*: proc(self: ptr IOperationsProgressDialog, mode: PDMODE): HRESULT {.stdcall.}
-    UpdateProgress*: proc(self: ptr IOperationsProgressDialog, ullPointsCurrent: ULONGLONG, ullPointsTotal: ULONGLONG, ullSizeCurrent: ULONGLONG, ullSizeTotal: ULONGLONG, ullItemsCurrent: ULONGLONG, ullItemsTotal: ULONGLONG): HRESULT {.stdcall.}
-    UpdateLocations*: proc(self: ptr IOperationsProgressDialog, psiSource: ptr IShellItem, psiTarget: ptr IShellItem, psiItem: ptr IShellItem): HRESULT {.stdcall.}
+    SetOperation*:
+      proc(self: ptr IOperationsProgressDialog, action: SPACTION): HRESULT {.stdcall.}
+    SetMode*:
+      proc(self: ptr IOperationsProgressDialog, mode: PDMODE): HRESULT {.stdcall.}
+    UpdateProgress*: proc(
+      self: ptr IOperationsProgressDialog,
+      ullPointsCurrent: ULONGLONG,
+      ullPointsTotal: ULONGLONG,
+      ullSizeCurrent: ULONGLONG,
+      ullSizeTotal: ULONGLONG,
+      ullItemsCurrent: ULONGLONG,
+      ullItemsTotal: ULONGLONG,
+    ): HRESULT {.stdcall.}
+    UpdateLocations*: proc(
+      self: ptr IOperationsProgressDialog,
+      psiSource: ptr IShellItem,
+      psiTarget: ptr IShellItem,
+      psiItem: ptr IShellItem,
+    ): HRESULT {.stdcall.}
     ResetTimer*: proc(self: ptr IOperationsProgressDialog): HRESULT {.stdcall.}
     PauseTimer*: proc(self: ptr IOperationsProgressDialog): HRESULT {.stdcall.}
     ResumeTimer*: proc(self: ptr IOperationsProgressDialog): HRESULT {.stdcall.}
-    GetMilliseconds*: proc(self: ptr IOperationsProgressDialog, pullElapsed: ptr ULONGLONG, pullRemaining: ptr ULONGLONG): HRESULT {.stdcall.}
-    GetOperationStatus*: proc(self: ptr IOperationsProgressDialog, popstatus: ptr PDOPSTATUS): HRESULT {.stdcall.}
+    GetMilliseconds*: proc(
+      self: ptr IOperationsProgressDialog,
+      pullElapsed: ptr ULONGLONG,
+      pullRemaining: ptr ULONGLONG,
+    ): HRESULT {.stdcall.}
+    GetOperationStatus*: proc(
+      self: ptr IOperationsProgressDialog, popstatus: ptr PDOPSTATUS
+    ): HRESULT {.stdcall.}
+
   IIOCancelInformation* {.pure.} = object
     lpVtbl*: ptr IIOCancelInformationVtbl
+
   IIOCancelInformationVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetCancelInformation*: proc(self: ptr IIOCancelInformation, dwThreadID: DWORD, uMsgCancel: UINT): HRESULT {.stdcall.}
-    GetCancelInformation*: proc(self: ptr IIOCancelInformation, pdwThreadID: ptr DWORD, puMsgCancel: ptr UINT): HRESULT {.stdcall.}
+    SetCancelInformation*: proc(
+      self: ptr IIOCancelInformation, dwThreadID: DWORD, uMsgCancel: UINT
+    ): HRESULT {.stdcall.}
+    GetCancelInformation*: proc(
+      self: ptr IIOCancelInformation, pdwThreadID: ptr DWORD, puMsgCancel: ptr UINT
+    ): HRESULT {.stdcall.}
+
   IFileOperation* {.pure.} = object
     lpVtbl*: ptr IFileOperationVtbl
+
   IFileOperationVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Advise*: proc(self: ptr IFileOperation, pfops: ptr IFileOperationProgressSink, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
+    Advise*: proc(
+      self: ptr IFileOperation,
+      pfops: ptr IFileOperationProgressSink,
+      pdwCookie: ptr DWORD,
+    ): HRESULT {.stdcall.}
     Unadvise*: proc(self: ptr IFileOperation, dwCookie: DWORD): HRESULT {.stdcall.}
-    SetOperationFlags*: proc(self: ptr IFileOperation, dwOperationFlags: DWORD): HRESULT {.stdcall.}
-    SetProgressMessage*: proc(self: ptr IFileOperation, pszMessage: LPCWSTR): HRESULT {.stdcall.}
-    SetProgressDialog*: proc(self: ptr IFileOperation, popd: ptr IOperationsProgressDialog): HRESULT {.stdcall.}
-    SetProperties*: proc(self: ptr IFileOperation, pproparray: ptr IPropertyChangeArray): HRESULT {.stdcall.}
-    SetOwnerWindow*: proc(self: ptr IFileOperation, hwndOwner: HWND): HRESULT {.stdcall.}
-    ApplyPropertiesToItem*: proc(self: ptr IFileOperation, psiItem: ptr IShellItem): HRESULT {.stdcall.}
-    ApplyPropertiesToItems*: proc(self: ptr IFileOperation, punkItems: ptr IUnknown): HRESULT {.stdcall.}
-    RenameItem*: proc(self: ptr IFileOperation, psiItem: ptr IShellItem, pszNewName: LPCWSTR, pfopsItem: ptr IFileOperationProgressSink): HRESULT {.stdcall.}
-    RenameItems*: proc(self: ptr IFileOperation, pUnkItems: ptr IUnknown, pszNewName: LPCWSTR): HRESULT {.stdcall.}
-    MoveItem*: proc(self: ptr IFileOperation, psiItem: ptr IShellItem, psiDestinationFolder: ptr IShellItem, pszNewName: LPCWSTR, pfopsItem: ptr IFileOperationProgressSink): HRESULT {.stdcall.}
-    MoveItems*: proc(self: ptr IFileOperation, punkItems: ptr IUnknown, psiDestinationFolder: ptr IShellItem): HRESULT {.stdcall.}
-    CopyItem*: proc(self: ptr IFileOperation, psiItem: ptr IShellItem, psiDestinationFolder: ptr IShellItem, pszCopyName: LPCWSTR, pfopsItem: ptr IFileOperationProgressSink): HRESULT {.stdcall.}
-    CopyItems*: proc(self: ptr IFileOperation, punkItems: ptr IUnknown, psiDestinationFolder: ptr IShellItem): HRESULT {.stdcall.}
-    DeleteItem*: proc(self: ptr IFileOperation, psiItem: ptr IShellItem, pfopsItem: ptr IFileOperationProgressSink): HRESULT {.stdcall.}
-    DeleteItems*: proc(self: ptr IFileOperation, punkItems: ptr IUnknown): HRESULT {.stdcall.}
-    NewItem*: proc(self: ptr IFileOperation, psiDestinationFolder: ptr IShellItem, dwFileAttributes: DWORD, pszName: LPCWSTR, pszTemplateName: LPCWSTR, pfopsItem: ptr IFileOperationProgressSink): HRESULT {.stdcall.}
+    SetOperationFlags*:
+      proc(self: ptr IFileOperation, dwOperationFlags: DWORD): HRESULT {.stdcall.}
+    SetProgressMessage*:
+      proc(self: ptr IFileOperation, pszMessage: LPCWSTR): HRESULT {.stdcall.}
+    SetProgressDialog*: proc(
+      self: ptr IFileOperation, popd: ptr IOperationsProgressDialog
+    ): HRESULT {.stdcall.}
+    SetProperties*: proc(
+      self: ptr IFileOperation, pproparray: ptr IPropertyChangeArray
+    ): HRESULT {.stdcall.}
+    SetOwnerWindow*:
+      proc(self: ptr IFileOperation, hwndOwner: HWND): HRESULT {.stdcall.}
+    ApplyPropertiesToItem*:
+      proc(self: ptr IFileOperation, psiItem: ptr IShellItem): HRESULT {.stdcall.}
+    ApplyPropertiesToItems*:
+      proc(self: ptr IFileOperation, punkItems: ptr IUnknown): HRESULT {.stdcall.}
+    RenameItem*: proc(
+      self: ptr IFileOperation,
+      psiItem: ptr IShellItem,
+      pszNewName: LPCWSTR,
+      pfopsItem: ptr IFileOperationProgressSink,
+    ): HRESULT {.stdcall.}
+    RenameItems*: proc(
+      self: ptr IFileOperation, pUnkItems: ptr IUnknown, pszNewName: LPCWSTR
+    ): HRESULT {.stdcall.}
+    MoveItem*: proc(
+      self: ptr IFileOperation,
+      psiItem: ptr IShellItem,
+      psiDestinationFolder: ptr IShellItem,
+      pszNewName: LPCWSTR,
+      pfopsItem: ptr IFileOperationProgressSink,
+    ): HRESULT {.stdcall.}
+    MoveItems*: proc(
+      self: ptr IFileOperation,
+      punkItems: ptr IUnknown,
+      psiDestinationFolder: ptr IShellItem,
+    ): HRESULT {.stdcall.}
+    CopyItem*: proc(
+      self: ptr IFileOperation,
+      psiItem: ptr IShellItem,
+      psiDestinationFolder: ptr IShellItem,
+      pszCopyName: LPCWSTR,
+      pfopsItem: ptr IFileOperationProgressSink,
+    ): HRESULT {.stdcall.}
+    CopyItems*: proc(
+      self: ptr IFileOperation,
+      punkItems: ptr IUnknown,
+      psiDestinationFolder: ptr IShellItem,
+    ): HRESULT {.stdcall.}
+    DeleteItem*: proc(
+      self: ptr IFileOperation,
+      psiItem: ptr IShellItem,
+      pfopsItem: ptr IFileOperationProgressSink,
+    ): HRESULT {.stdcall.}
+    DeleteItems*:
+      proc(self: ptr IFileOperation, punkItems: ptr IUnknown): HRESULT {.stdcall.}
+    NewItem*: proc(
+      self: ptr IFileOperation,
+      psiDestinationFolder: ptr IShellItem,
+      dwFileAttributes: DWORD,
+      pszName: LPCWSTR,
+      pszTemplateName: LPCWSTR,
+      pfopsItem: ptr IFileOperationProgressSink,
+    ): HRESULT {.stdcall.}
     PerformOperations*: proc(self: ptr IFileOperation): HRESULT {.stdcall.}
-    GetAnyOperationsAborted*: proc(self: ptr IFileOperation, pfAnyOperationsAborted: ptr WINBOOL): HRESULT {.stdcall.}
+    GetAnyOperationsAborted*: proc(
+      self: ptr IFileOperation, pfAnyOperationsAborted: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+
   IObjectProvider* {.pure.} = object
     lpVtbl*: ptr IObjectProviderVtbl
+
   IObjectProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QueryObject*: proc(self: ptr IObjectProvider, guidObject: REFGUID, riid: REFIID, ppvOut: ptr pointer): HRESULT {.stdcall.}
+    QueryObject*: proc(
+      self: ptr IObjectProvider, guidObject: REFGUID, riid: REFIID, ppvOut: ptr pointer
+    ): HRESULT {.stdcall.}
+
   INamespaceWalkCB* {.pure.} = object
     lpVtbl*: ptr INamespaceWalkCBVtbl
+
   INamespaceWalkCBVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    FoundItem*: proc(self: ptr INamespaceWalkCB, psf: ptr IShellFolder, pidl: PCUITEMID_CHILD): HRESULT {.stdcall.}
-    EnterFolder*: proc(self: ptr INamespaceWalkCB, psf: ptr IShellFolder, pidl: PCUITEMID_CHILD): HRESULT {.stdcall.}
-    LeaveFolder*: proc(self: ptr INamespaceWalkCB, psf: ptr IShellFolder, pidl: PCUITEMID_CHILD): HRESULT {.stdcall.}
-    InitializeProgressDialog*: proc(self: ptr INamespaceWalkCB, ppszTitle: ptr LPWSTR, ppszCancel: ptr LPWSTR): HRESULT {.stdcall.}
+    FoundItem*: proc(
+      self: ptr INamespaceWalkCB, psf: ptr IShellFolder, pidl: PCUITEMID_CHILD
+    ): HRESULT {.stdcall.}
+    EnterFolder*: proc(
+      self: ptr INamespaceWalkCB, psf: ptr IShellFolder, pidl: PCUITEMID_CHILD
+    ): HRESULT {.stdcall.}
+    LeaveFolder*: proc(
+      self: ptr INamespaceWalkCB, psf: ptr IShellFolder, pidl: PCUITEMID_CHILD
+    ): HRESULT {.stdcall.}
+    InitializeProgressDialog*: proc(
+      self: ptr INamespaceWalkCB, ppszTitle: ptr LPWSTR, ppszCancel: ptr LPWSTR
+    ): HRESULT {.stdcall.}
+
   INamespaceWalkCB2* {.pure.} = object
     lpVtbl*: ptr INamespaceWalkCB2Vtbl
+
   INamespaceWalkCB2Vtbl* {.pure, inheritable.} = object of INamespaceWalkCBVtbl
     WalkComplete*: proc(self: ptr INamespaceWalkCB2, hr: HRESULT): HRESULT {.stdcall.}
+
   INamespaceWalk* {.pure.} = object
     lpVtbl*: ptr INamespaceWalkVtbl
+
   INamespaceWalkVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Walk*: proc(self: ptr INamespaceWalk, punkToWalk: ptr IUnknown, dwFlags: DWORD, cDepth: int32, pnswcb: ptr INamespaceWalkCB): HRESULT {.stdcall.}
-    GetIDArrayResult*: proc(self: ptr INamespaceWalk, pcItems: ptr UINT, prgpidl: ptr ptr PIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+    Walk*: proc(
+      self: ptr INamespaceWalk,
+      punkToWalk: ptr IUnknown,
+      dwFlags: DWORD,
+      cDepth: int32,
+      pnswcb: ptr INamespaceWalkCB,
+    ): HRESULT {.stdcall.}
+    GetIDArrayResult*: proc(
+      self: ptr INamespaceWalk, pcItems: ptr UINT, prgpidl: ptr ptr PIDLIST_ABSOLUTE
+    ): HRESULT {.stdcall.}
+
   IAutoCompleteDropDown* {.pure.} = object
     lpVtbl*: ptr IAutoCompleteDropDownVtbl
+
   IAutoCompleteDropDownVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetDropDownStatus*: proc(self: ptr IAutoCompleteDropDown, pdwFlags: ptr DWORD, ppwszString: ptr LPWSTR): HRESULT {.stdcall.}
+    GetDropDownStatus*: proc(
+      self: ptr IAutoCompleteDropDown, pdwFlags: ptr DWORD, ppwszString: ptr LPWSTR
+    ): HRESULT {.stdcall.}
     ResetEnumerator*: proc(self: ptr IAutoCompleteDropDown): HRESULT {.stdcall.}
+
   IBandSite* {.pure.} = object
     lpVtbl*: ptr IBandSiteVtbl
+
   IBandSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     AddBand*: proc(self: ptr IBandSite, punk: ptr IUnknown): HRESULT {.stdcall.}
-    EnumBands*: proc(self: ptr IBandSite, uBand: UINT, pdwBandID: ptr DWORD): HRESULT {.stdcall.}
-    QueryBand*: proc(self: ptr IBandSite, dwBandID: DWORD, ppstb: ptr ptr IDeskBand, pdwState: ptr DWORD, pszName: LPWSTR, cchName: int32): HRESULT {.stdcall.}
-    SetBandState*: proc(self: ptr IBandSite, dwBandID: DWORD, dwMask: DWORD, dwState: DWORD): HRESULT {.stdcall.}
+    EnumBands*:
+      proc(self: ptr IBandSite, uBand: UINT, pdwBandID: ptr DWORD): HRESULT {.stdcall.}
+    QueryBand*: proc(
+      self: ptr IBandSite,
+      dwBandID: DWORD,
+      ppstb: ptr ptr IDeskBand,
+      pdwState: ptr DWORD,
+      pszName: LPWSTR,
+      cchName: int32,
+    ): HRESULT {.stdcall.}
+    SetBandState*: proc(
+      self: ptr IBandSite, dwBandID: DWORD, dwMask: DWORD, dwState: DWORD
+    ): HRESULT {.stdcall.}
     RemoveBand*: proc(self: ptr IBandSite, dwBandID: DWORD): HRESULT {.stdcall.}
-    GetBandObject*: proc(self: ptr IBandSite, dwBandID: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    SetBandSiteInfo*: proc(self: ptr IBandSite, pbsinfo: ptr BANDSITEINFO): HRESULT {.stdcall.}
-    GetBandSiteInfo*: proc(self: ptr IBandSite, pbsinfo: ptr BANDSITEINFO): HRESULT {.stdcall.}
+    GetBandObject*: proc(
+      self: ptr IBandSite, dwBandID: DWORD, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    SetBandSiteInfo*:
+      proc(self: ptr IBandSite, pbsinfo: ptr BANDSITEINFO): HRESULT {.stdcall.}
+    GetBandSiteInfo*:
+      proc(self: ptr IBandSite, pbsinfo: ptr BANDSITEINFO): HRESULT {.stdcall.}
+
   IModalWindow* {.pure.} = object
     lpVtbl*: ptr IModalWindowVtbl
+
   IModalWindowVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Show*: proc(self: ptr IModalWindow, hwndOwner: HWND): HRESULT {.stdcall.}
+
   ICDBurnExt* {.pure.} = object
     lpVtbl*: ptr ICDBurnExtVtbl
+
   ICDBurnExtVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSupportedActionTypes*: proc(self: ptr ICDBurnExt, pdwActions: ptr CDBE_ACTIONS): HRESULT {.stdcall.}
+    GetSupportedActionTypes*:
+      proc(self: ptr ICDBurnExt, pdwActions: ptr CDBE_ACTIONS): HRESULT {.stdcall.}
+
   IContextMenuSite* {.pure.} = object
     lpVtbl*: ptr IContextMenuSiteVtbl
+
   IContextMenuSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    DoContextMenuPopup*: proc(self: ptr IContextMenuSite, punkContextMenu: ptr IUnknown, fFlags: UINT, pt: POINT): HRESULT {.stdcall.}
+    DoContextMenuPopup*: proc(
+      self: ptr IContextMenuSite, punkContextMenu: ptr IUnknown, fFlags: UINT, pt: POINT
+    ): HRESULT {.stdcall.}
+
   IEnumReadyCallback* {.pure.} = object
     lpVtbl*: ptr IEnumReadyCallbackVtbl
+
   IEnumReadyCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     EnumReady*: proc(self: ptr IEnumReadyCallback): HRESULT {.stdcall.}
+
   IEnumerableView* {.pure.} = object
     lpVtbl*: ptr IEnumerableViewVtbl
+
   IEnumerableViewVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetEnumReadyCallback*: proc(self: ptr IEnumerableView, percb: ptr IEnumReadyCallback): HRESULT {.stdcall.}
-    CreateEnumIDListFromContents*: proc(self: ptr IEnumerableView, pidlFolder: PCIDLIST_ABSOLUTE, dwEnumFlags: DWORD, ppEnumIDList: ptr ptr IEnumIDList): HRESULT {.stdcall.}
+    SetEnumReadyCallback*: proc(
+      self: ptr IEnumerableView, percb: ptr IEnumReadyCallback
+    ): HRESULT {.stdcall.}
+    CreateEnumIDListFromContents*: proc(
+      self: ptr IEnumerableView,
+      pidlFolder: PCIDLIST_ABSOLUTE,
+      dwEnumFlags: DWORD,
+      ppEnumIDList: ptr ptr IEnumIDList,
+    ): HRESULT {.stdcall.}
+
   IInsertItem* {.pure.} = object
     lpVtbl*: ptr IInsertItemVtbl
+
   IInsertItemVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    InsertItem*: proc(self: ptr IInsertItem, pidl: PCUIDLIST_RELATIVE): HRESULT {.stdcall.}
+    InsertItem*:
+      proc(self: ptr IInsertItem, pidl: PCUIDLIST_RELATIVE): HRESULT {.stdcall.}
+
   IMenuBand* {.pure.} = object
     lpVtbl*: ptr IMenuBandVtbl
+
   IMenuBandVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     IsMenuMessage*: proc(self: ptr IMenuBand, pmsg: ptr MSG): HRESULT {.stdcall.}
-    TranslateMenuMessage*: proc(self: ptr IMenuBand, pmsg: ptr MSG, plRet: ptr LRESULT): HRESULT {.stdcall.}
+    TranslateMenuMessage*:
+      proc(self: ptr IMenuBand, pmsg: ptr MSG, plRet: ptr LRESULT): HRESULT {.stdcall.}
+
   IFolderBandPriv* {.pure.} = object
     lpVtbl*: ptr IFolderBandPrivVtbl
+
   IFolderBandPrivVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SetCascade*: proc(self: ptr IFolderBandPriv, fCascade: WINBOOL): HRESULT {.stdcall.}
-    SetAccelerators*: proc(self: ptr IFolderBandPriv, fAccelerators: WINBOOL): HRESULT {.stdcall.}
+    SetAccelerators*:
+      proc(self: ptr IFolderBandPriv, fAccelerators: WINBOOL): HRESULT {.stdcall.}
     SetNoIcons*: proc(self: ptr IFolderBandPriv, fNoIcons: WINBOOL): HRESULT {.stdcall.}
     SetNoText*: proc(self: ptr IFolderBandPriv, fNoText: WINBOOL): HRESULT {.stdcall.}
+
   IRegTreeItem* {.pure.} = object
     lpVtbl*: ptr IRegTreeItemVtbl
+
   IRegTreeItemVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCheckState*: proc(self: ptr IRegTreeItem, pbCheck: ptr WINBOOL): HRESULT {.stdcall.}
+    GetCheckState*:
+      proc(self: ptr IRegTreeItem, pbCheck: ptr WINBOOL): HRESULT {.stdcall.}
     SetCheckState*: proc(self: ptr IRegTreeItem, bCheck: WINBOOL): HRESULT {.stdcall.}
+
   IImageRecompress* {.pure.} = object
     lpVtbl*: ptr IImageRecompressVtbl
+
   IImageRecompressVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RecompressImage*: proc(self: ptr IImageRecompress, psi: ptr IShellItem, cx: int32, cy: int32, iQuality: int32, pstg: ptr IStorage, ppstrmOut: ptr ptr IStream): HRESULT {.stdcall.}
+    RecompressImage*: proc(
+      self: ptr IImageRecompress,
+      psi: ptr IShellItem,
+      cx: int32,
+      cy: int32,
+      iQuality: int32,
+      pstg: ptr IStorage,
+      ppstrmOut: ptr ptr IStream,
+    ): HRESULT {.stdcall.}
+
   IDeskBar* {.pure.} = object
     lpVtbl*: ptr IDeskBarVtbl
+
   IDeskBarVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
     SetClient*: proc(self: ptr IDeskBar, punkClient: ptr IUnknown): HRESULT {.stdcall.}
-    GetClient*: proc(self: ptr IDeskBar, ppunkClient: ptr ptr IUnknown): HRESULT {.stdcall.}
+    GetClient*:
+      proc(self: ptr IDeskBar, ppunkClient: ptr ptr IUnknown): HRESULT {.stdcall.}
     OnPosRectChangeDB*: proc(self: ptr IDeskBar, prc: ptr RECT): HRESULT {.stdcall.}
+
   IMenuPopup* {.pure.} = object
     lpVtbl*: ptr IMenuPopupVtbl
+
   IMenuPopupVtbl* {.pure, inheritable.} = object of IDeskBarVtbl
-    Popup*: proc(self: ptr IMenuPopup, ppt: ptr POINTL, prcExclude: ptr RECTL, dwFlags: MP_POPUPFLAGS): HRESULT {.stdcall.}
+    Popup*: proc(
+      self: ptr IMenuPopup,
+      ppt: ptr POINTL,
+      prcExclude: ptr RECTL,
+      dwFlags: MP_POPUPFLAGS,
+    ): HRESULT {.stdcall.}
     OnSelect*: proc(self: ptr IMenuPopup, dwSelectType: DWORD): HRESULT {.stdcall.}
-    SetSubMenu*: proc(self: ptr IMenuPopup, pmp: ptr IMenuPopup, fSet: WINBOOL): HRESULT {.stdcall.}
+    SetSubMenu*: proc(self: ptr IMenuPopup, pmp: ptr IMenuPopup, fSet: WINBOOL): HRESULT {.
+      stdcall
+    .}
+
   IFileIsInUse* {.pure.} = object
     lpVtbl*: ptr IFileIsInUseVtbl
+
   IFileIsInUseVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetAppName*: proc(self: ptr IFileIsInUse, ppszName: ptr LPWSTR): HRESULT {.stdcall.}
-    GetUsage*: proc(self: ptr IFileIsInUse, pfut: ptr FILE_USAGE_TYPE): HRESULT {.stdcall.}
-    GetCapabilities*: proc(self: ptr IFileIsInUse, pdwCapFlags: ptr DWORD): HRESULT {.stdcall.}
+    GetUsage*:
+      proc(self: ptr IFileIsInUse, pfut: ptr FILE_USAGE_TYPE): HRESULT {.stdcall.}
+    GetCapabilities*:
+      proc(self: ptr IFileIsInUse, pdwCapFlags: ptr DWORD): HRESULT {.stdcall.}
     GetSwitchToHWND*: proc(self: ptr IFileIsInUse, phwnd: ptr HWND): HRESULT {.stdcall.}
     CloseFile*: proc(self: ptr IFileIsInUse): HRESULT {.stdcall.}
+
   IShellItemFilter* {.pure.} = object
     lpVtbl*: ptr IShellItemFilterVtbl
+
   IShellItemFilterVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    IncludeItem*: proc(self: ptr IShellItemFilter, psi: ptr IShellItem): HRESULT {.stdcall.}
-    GetEnumFlagsForItem*: proc(self: ptr IShellItemFilter, psi: ptr IShellItem, pgrfFlags: ptr SHCONTF): HRESULT {.stdcall.}
+    IncludeItem*:
+      proc(self: ptr IShellItemFilter, psi: ptr IShellItem): HRESULT {.stdcall.}
+    GetEnumFlagsForItem*: proc(
+      self: ptr IShellItemFilter, psi: ptr IShellItem, pgrfFlags: ptr SHCONTF
+    ): HRESULT {.stdcall.}
+
   IFileDialog* {.pure.} = object
     lpVtbl*: ptr IFileDialogVtbl
+
   IFileDialogVtbl* {.pure, inheritable.} = object of IModalWindowVtbl
-    SetFileTypes*: proc(self: ptr IFileDialog, cFileTypes: UINT, rgFilterSpec: ptr COMDLG_FILTERSPEC): HRESULT {.stdcall.}
+    SetFileTypes*: proc(
+      self: ptr IFileDialog, cFileTypes: UINT, rgFilterSpec: ptr COMDLG_FILTERSPEC
+    ): HRESULT {.stdcall.}
     SetFileTypeIndex*: proc(self: ptr IFileDialog, iFileType: UINT): HRESULT {.stdcall.}
-    GetFileTypeIndex*: proc(self: ptr IFileDialog, piFileType: ptr UINT): HRESULT {.stdcall.}
-    Advise*: proc(self: ptr IFileDialog, pfde: ptr IFileDialogEvents, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
+    GetFileTypeIndex*:
+      proc(self: ptr IFileDialog, piFileType: ptr UINT): HRESULT {.stdcall.}
+    Advise*: proc(
+      self: ptr IFileDialog, pfde: ptr IFileDialogEvents, pdwCookie: ptr DWORD
+    ): HRESULT {.stdcall.}
     Unadvise*: proc(self: ptr IFileDialog, dwCookie: DWORD): HRESULT {.stdcall.}
-    SetOptions*: proc(self: ptr IFileDialog, fos: FILEOPENDIALOGOPTIONS): HRESULT {.stdcall.}
-    GetOptions*: proc(self: ptr IFileDialog, pfos: ptr FILEOPENDIALOGOPTIONS): HRESULT {.stdcall.}
-    SetDefaultFolder*: proc(self: ptr IFileDialog, psi: ptr IShellItem): HRESULT {.stdcall.}
+    SetOptions*:
+      proc(self: ptr IFileDialog, fos: FILEOPENDIALOGOPTIONS): HRESULT {.stdcall.}
+    GetOptions*:
+      proc(self: ptr IFileDialog, pfos: ptr FILEOPENDIALOGOPTIONS): HRESULT {.stdcall.}
+    SetDefaultFolder*:
+      proc(self: ptr IFileDialog, psi: ptr IShellItem): HRESULT {.stdcall.}
     SetFolder*: proc(self: ptr IFileDialog, psi: ptr IShellItem): HRESULT {.stdcall.}
-    GetFolder*: proc(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
-    GetCurrentSelection*: proc(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
+    GetFolder*:
+      proc(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
+    GetCurrentSelection*:
+      proc(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
     SetFileName*: proc(self: ptr IFileDialog, pszName: LPCWSTR): HRESULT {.stdcall.}
     GetFileName*: proc(self: ptr IFileDialog, pszName: ptr LPWSTR): HRESULT {.stdcall.}
     SetTitle*: proc(self: ptr IFileDialog, pszTitle: LPCWSTR): HRESULT {.stdcall.}
-    SetOkButtonLabel*: proc(self: ptr IFileDialog, pszText: LPCWSTR): HRESULT {.stdcall.}
-    SetFileNameLabel*: proc(self: ptr IFileDialog, pszLabel: LPCWSTR): HRESULT {.stdcall.}
-    GetResult*: proc(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
-    AddPlace*: proc(self: ptr IFileDialog, psi: ptr IShellItem, fdap: FDAP): HRESULT {.stdcall.}
-    SetDefaultExtension*: proc(self: ptr IFileDialog, pszDefaultExtension: LPCWSTR): HRESULT {.stdcall.}
+    SetOkButtonLabel*:
+      proc(self: ptr IFileDialog, pszText: LPCWSTR): HRESULT {.stdcall.}
+    SetFileNameLabel*:
+      proc(self: ptr IFileDialog, pszLabel: LPCWSTR): HRESULT {.stdcall.}
+    GetResult*:
+      proc(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
+    AddPlace*:
+      proc(self: ptr IFileDialog, psi: ptr IShellItem, fdap: FDAP): HRESULT {.stdcall.}
+    SetDefaultExtension*:
+      proc(self: ptr IFileDialog, pszDefaultExtension: LPCWSTR): HRESULT {.stdcall.}
     Close*: proc(self: ptr IFileDialog, hr: HRESULT): HRESULT {.stdcall.}
     SetClientGuid*: proc(self: ptr IFileDialog, guid: REFGUID): HRESULT {.stdcall.}
     ClearClientData*: proc(self: ptr IFileDialog): HRESULT {.stdcall.}
-    SetFilter*: proc(self: ptr IFileDialog, pFilter: ptr IShellItemFilter): HRESULT {.stdcall.}
+    SetFilter*:
+      proc(self: ptr IFileDialog, pFilter: ptr IShellItemFilter): HRESULT {.stdcall.}
+
   IFileDialogEvents* {.pure.} = object
     lpVtbl*: ptr IFileDialogEventsVtbl
+
   IFileDialogEventsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnFileOk*: proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.stdcall.}
-    OnFolderChanging*: proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog, psiFolder: ptr IShellItem): HRESULT {.stdcall.}
-    OnFolderChange*: proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.stdcall.}
-    OnSelectionChange*: proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.stdcall.}
-    OnShareViolation*: proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog, psi: ptr IShellItem, pResponse: ptr FDE_SHAREVIOLATION_RESPONSE): HRESULT {.stdcall.}
-    OnTypeChange*: proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.stdcall.}
-    OnOverwrite*: proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog, psi: ptr IShellItem, pResponse: ptr FDE_OVERWRITE_RESPONSE): HRESULT {.stdcall.}
+    OnFileOk*:
+      proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.stdcall.}
+    OnFolderChanging*: proc(
+      self: ptr IFileDialogEvents, pfd: ptr IFileDialog, psiFolder: ptr IShellItem
+    ): HRESULT {.stdcall.}
+    OnFolderChange*:
+      proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.stdcall.}
+    OnSelectionChange*:
+      proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.stdcall.}
+    OnShareViolation*: proc(
+      self: ptr IFileDialogEvents,
+      pfd: ptr IFileDialog,
+      psi: ptr IShellItem,
+      pResponse: ptr FDE_SHAREVIOLATION_RESPONSE,
+    ): HRESULT {.stdcall.}
+    OnTypeChange*:
+      proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.stdcall.}
+    OnOverwrite*: proc(
+      self: ptr IFileDialogEvents,
+      pfd: ptr IFileDialog,
+      psi: ptr IShellItem,
+      pResponse: ptr FDE_OVERWRITE_RESPONSE,
+    ): HRESULT {.stdcall.}
+
   IFileSaveDialog* {.pure.} = object
     lpVtbl*: ptr IFileSaveDialogVtbl
+
   IFileSaveDialogVtbl* {.pure, inheritable.} = object of IFileDialogVtbl
-    SetSaveAsItem*: proc(self: ptr IFileSaveDialog, psi: ptr IShellItem): HRESULT {.stdcall.}
-    SetProperties*: proc(self: ptr IFileSaveDialog, pStore: ptr IPropertyStore): HRESULT {.stdcall.}
-    SetCollectedProperties*: proc(self: ptr IFileSaveDialog, pList: ptr IPropertyDescriptionList, fAppendDefault: WINBOOL): HRESULT {.stdcall.}
-    GetProperties*: proc(self: ptr IFileSaveDialog, ppStore: ptr ptr IPropertyStore): HRESULT {.stdcall.}
-    ApplyProperties*: proc(self: ptr IFileSaveDialog, psi: ptr IShellItem, pStore: ptr IPropertyStore, hwnd: HWND, pSink: ptr IFileOperationProgressSink): HRESULT {.stdcall.}
+    SetSaveAsItem*:
+      proc(self: ptr IFileSaveDialog, psi: ptr IShellItem): HRESULT {.stdcall.}
+    SetProperties*:
+      proc(self: ptr IFileSaveDialog, pStore: ptr IPropertyStore): HRESULT {.stdcall.}
+    SetCollectedProperties*: proc(
+      self: ptr IFileSaveDialog,
+      pList: ptr IPropertyDescriptionList,
+      fAppendDefault: WINBOOL,
+    ): HRESULT {.stdcall.}
+    GetProperties*: proc(
+      self: ptr IFileSaveDialog, ppStore: ptr ptr IPropertyStore
+    ): HRESULT {.stdcall.}
+    ApplyProperties*: proc(
+      self: ptr IFileSaveDialog,
+      psi: ptr IShellItem,
+      pStore: ptr IPropertyStore,
+      hwnd: HWND,
+      pSink: ptr IFileOperationProgressSink,
+    ): HRESULT {.stdcall.}
+
   IFileOpenDialog* {.pure.} = object
     lpVtbl*: ptr IFileOpenDialogVtbl
+
   IFileOpenDialogVtbl* {.pure, inheritable.} = object of IFileDialogVtbl
-    GetResults*: proc(self: ptr IFileOpenDialog, ppenum: ptr ptr IShellItemArray): HRESULT {.stdcall.}
-    GetSelectedItems*: proc(self: ptr IFileOpenDialog, ppsai: ptr ptr IShellItemArray): HRESULT {.stdcall.}
+    GetResults*: proc(
+      self: ptr IFileOpenDialog, ppenum: ptr ptr IShellItemArray
+    ): HRESULT {.stdcall.}
+    GetSelectedItems*: proc(
+      self: ptr IFileOpenDialog, ppsai: ptr ptr IShellItemArray
+    ): HRESULT {.stdcall.}
+
   IFileDialogCustomize* {.pure.} = object
     lpVtbl*: ptr IFileDialogCustomizeVtbl
+
   IFileDialogCustomizeVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    EnableOpenDropDown*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.stdcall.}
-    AddMenu*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR): HRESULT {.stdcall.}
-    AddPushButton*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR): HRESULT {.stdcall.}
-    AddComboBox*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.stdcall.}
-    AddRadioButtonList*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.stdcall.}
-    AddCheckButton*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR, bChecked: WINBOOL): HRESULT {.stdcall.}
-    AddEditBox*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszText: LPCWSTR): HRESULT {.stdcall.}
-    AddSeparator*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.stdcall.}
-    AddText*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszText: LPCWSTR): HRESULT {.stdcall.}
-    SetControlLabel*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR): HRESULT {.stdcall.}
-    GetControlState*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pdwState: ptr CDCONTROLSTATEF): HRESULT {.stdcall.}
-    SetControlState*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwState: CDCONTROLSTATEF): HRESULT {.stdcall.}
-    GetEditBoxText*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, ppszText: ptr ptr WCHAR): HRESULT {.stdcall.}
-    SetEditBoxText*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszText: LPCWSTR): HRESULT {.stdcall.}
-    GetCheckButtonState*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pbChecked: ptr WINBOOL): HRESULT {.stdcall.}
-    SetCheckButtonState*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, bChecked: WINBOOL): HRESULT {.stdcall.}
-    AddControlItem*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD, pszLabel: LPCWSTR): HRESULT {.stdcall.}
-    RemoveControlItem*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD): HRESULT {.stdcall.}
-    RemoveAllControlItems*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.stdcall.}
-    GetControlItemState*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD, pdwState: ptr CDCONTROLSTATEF): HRESULT {.stdcall.}
-    SetControlItemState*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD, dwState: CDCONTROLSTATEF): HRESULT {.stdcall.}
-    GetSelectedControlItem*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pdwIDItem: ptr DWORD): HRESULT {.stdcall.}
-    SetSelectedControlItem*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD): HRESULT {.stdcall.}
-    StartVisualGroup*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR): HRESULT {.stdcall.}
+    EnableOpenDropDown*:
+      proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.stdcall.}
+    AddMenu*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR
+    ): HRESULT {.stdcall.}
+    AddPushButton*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR
+    ): HRESULT {.stdcall.}
+    AddComboBox*:
+      proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.stdcall.}
+    AddRadioButtonList*:
+      proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.stdcall.}
+    AddCheckButton*: proc(
+      self: ptr IFileDialogCustomize,
+      dwIDCtl: DWORD,
+      pszLabel: LPCWSTR,
+      bChecked: WINBOOL,
+    ): HRESULT {.stdcall.}
+    AddEditBox*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszText: LPCWSTR
+    ): HRESULT {.stdcall.}
+    AddSeparator*:
+      proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.stdcall.}
+    AddText*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszText: LPCWSTR
+    ): HRESULT {.stdcall.}
+    SetControlLabel*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR
+    ): HRESULT {.stdcall.}
+    GetControlState*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pdwState: ptr CDCONTROLSTATEF
+    ): HRESULT {.stdcall.}
+    SetControlState*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwState: CDCONTROLSTATEF
+    ): HRESULT {.stdcall.}
+    GetEditBoxText*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, ppszText: ptr ptr WCHAR
+    ): HRESULT {.stdcall.}
+    SetEditBoxText*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszText: LPCWSTR
+    ): HRESULT {.stdcall.}
+    GetCheckButtonState*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pbChecked: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    SetCheckButtonState*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, bChecked: WINBOOL
+    ): HRESULT {.stdcall.}
+    AddControlItem*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD, pszLabel: LPCWSTR
+    ): HRESULT {.stdcall.}
+    RemoveControlItem*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD
+    ): HRESULT {.stdcall.}
+    RemoveAllControlItems*:
+      proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.stdcall.}
+    GetControlItemState*: proc(
+      self: ptr IFileDialogCustomize,
+      dwIDCtl: DWORD,
+      dwIDItem: DWORD,
+      pdwState: ptr CDCONTROLSTATEF,
+    ): HRESULT {.stdcall.}
+    SetControlItemState*: proc(
+      self: ptr IFileDialogCustomize,
+      dwIDCtl: DWORD,
+      dwIDItem: DWORD,
+      dwState: CDCONTROLSTATEF,
+    ): HRESULT {.stdcall.}
+    GetSelectedControlItem*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pdwIDItem: ptr DWORD
+    ): HRESULT {.stdcall.}
+    SetSelectedControlItem*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD
+    ): HRESULT {.stdcall.}
+    StartVisualGroup*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR
+    ): HRESULT {.stdcall.}
     EndVisualGroup*: proc(self: ptr IFileDialogCustomize): HRESULT {.stdcall.}
-    MakeProminent*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.stdcall.}
-    SetControlItemText*: proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD, pszLabel: LPCWSTR): HRESULT {.stdcall.}
+    MakeProminent*:
+      proc(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.stdcall.}
+    SetControlItemText*: proc(
+      self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD, pszLabel: LPCWSTR
+    ): HRESULT {.stdcall.}
+
   IFileDialogControlEvents* {.pure.} = object
     lpVtbl*: ptr IFileDialogControlEventsVtbl
+
   IFileDialogControlEventsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnItemSelected*: proc(self: ptr IFileDialogControlEvents, pfdc: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD): HRESULT {.stdcall.}
-    OnButtonClicked*: proc(self: ptr IFileDialogControlEvents, pfdc: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.stdcall.}
-    OnCheckButtonToggled*: proc(self: ptr IFileDialogControlEvents, pfdc: ptr IFileDialogCustomize, dwIDCtl: DWORD, bChecked: WINBOOL): HRESULT {.stdcall.}
-    OnControlActivating*: proc(self: ptr IFileDialogControlEvents, pfdc: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.stdcall.}
+    OnItemSelected*: proc(
+      self: ptr IFileDialogControlEvents,
+      pfdc: ptr IFileDialogCustomize,
+      dwIDCtl: DWORD,
+      dwIDItem: DWORD,
+    ): HRESULT {.stdcall.}
+    OnButtonClicked*: proc(
+      self: ptr IFileDialogControlEvents, pfdc: ptr IFileDialogCustomize, dwIDCtl: DWORD
+    ): HRESULT {.stdcall.}
+    OnCheckButtonToggled*: proc(
+      self: ptr IFileDialogControlEvents,
+      pfdc: ptr IFileDialogCustomize,
+      dwIDCtl: DWORD,
+      bChecked: WINBOOL,
+    ): HRESULT {.stdcall.}
+    OnControlActivating*: proc(
+      self: ptr IFileDialogControlEvents, pfdc: ptr IFileDialogCustomize, dwIDCtl: DWORD
+    ): HRESULT {.stdcall.}
+
   IFileDialog2* {.pure.} = object
     lpVtbl*: ptr IFileDialog2Vtbl
+
   IFileDialog2Vtbl* {.pure, inheritable.} = object of IFileDialogVtbl
-    SetCancelButtonLabel*: proc(self: ptr IFileDialog2, pszLabel: LPCWSTR): HRESULT {.stdcall.}
-    SetNavigationRoot*: proc(self: ptr IFileDialog2, psi: ptr IShellItem): HRESULT {.stdcall.}
+    SetCancelButtonLabel*:
+      proc(self: ptr IFileDialog2, pszLabel: LPCWSTR): HRESULT {.stdcall.}
+    SetNavigationRoot*:
+      proc(self: ptr IFileDialog2, psi: ptr IShellItem): HRESULT {.stdcall.}
+
   IApplicationAssociationRegistration* {.pure.} = object
     lpVtbl*: ptr IApplicationAssociationRegistrationVtbl
+
   IApplicationAssociationRegistrationVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QueryCurrentDefault*: proc(self: ptr IApplicationAssociationRegistration, pszQuery: LPCWSTR, atQueryType: ASSOCIATIONTYPE, alQueryLevel: ASSOCIATIONLEVEL, ppszAssociation: ptr LPWSTR): HRESULT {.stdcall.}
-    QueryAppIsDefault*: proc(self: ptr IApplicationAssociationRegistration, pszQuery: LPCWSTR, atQueryType: ASSOCIATIONTYPE, alQueryLevel: ASSOCIATIONLEVEL, pszAppRegistryName: LPCWSTR, pfDefault: ptr WINBOOL): HRESULT {.stdcall.}
-    QueryAppIsDefaultAll*: proc(self: ptr IApplicationAssociationRegistration, alQueryLevel: ASSOCIATIONLEVEL, pszAppRegistryName: LPCWSTR, pfDefault: ptr WINBOOL): HRESULT {.stdcall.}
-    SetAppAsDefault*: proc(self: ptr IApplicationAssociationRegistration, pszAppRegistryName: LPCWSTR, pszSet: LPCWSTR, atSetType: ASSOCIATIONTYPE): HRESULT {.stdcall.}
-    SetAppAsDefaultAll*: proc(self: ptr IApplicationAssociationRegistration, pszAppRegistryName: LPCWSTR): HRESULT {.stdcall.}
-    ClearUserAssociations*: proc(self: ptr IApplicationAssociationRegistration): HRESULT {.stdcall.}
+    QueryCurrentDefault*: proc(
+      self: ptr IApplicationAssociationRegistration,
+      pszQuery: LPCWSTR,
+      atQueryType: ASSOCIATIONTYPE,
+      alQueryLevel: ASSOCIATIONLEVEL,
+      ppszAssociation: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+    QueryAppIsDefault*: proc(
+      self: ptr IApplicationAssociationRegistration,
+      pszQuery: LPCWSTR,
+      atQueryType: ASSOCIATIONTYPE,
+      alQueryLevel: ASSOCIATIONLEVEL,
+      pszAppRegistryName: LPCWSTR,
+      pfDefault: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+    QueryAppIsDefaultAll*: proc(
+      self: ptr IApplicationAssociationRegistration,
+      alQueryLevel: ASSOCIATIONLEVEL,
+      pszAppRegistryName: LPCWSTR,
+      pfDefault: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+    SetAppAsDefault*: proc(
+      self: ptr IApplicationAssociationRegistration,
+      pszAppRegistryName: LPCWSTR,
+      pszSet: LPCWSTR,
+      atSetType: ASSOCIATIONTYPE,
+    ): HRESULT {.stdcall.}
+    SetAppAsDefaultAll*: proc(
+      self: ptr IApplicationAssociationRegistration, pszAppRegistryName: LPCWSTR
+    ): HRESULT {.stdcall.}
+    ClearUserAssociations*:
+      proc(self: ptr IApplicationAssociationRegistration): HRESULT {.stdcall.}
+
   IApplicationAssociationRegistrationUI* {.pure.} = object
     lpVtbl*: ptr IApplicationAssociationRegistrationUIVtbl
+
   IApplicationAssociationRegistrationUIVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    LaunchAdvancedAssociationUI*: proc(self: ptr IApplicationAssociationRegistrationUI, pszAppRegistryName: LPCWSTR): HRESULT {.stdcall.}
+    LaunchAdvancedAssociationUI*: proc(
+      self: ptr IApplicationAssociationRegistrationUI, pszAppRegistryName: LPCWSTR
+    ): HRESULT {.stdcall.}
+
   IDelegateFolder* {.pure.} = object
     lpVtbl*: ptr IDelegateFolderVtbl
+
   IDelegateFolderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetItemAlloc*: proc(self: ptr IDelegateFolder, pmalloc: ptr IMalloc): HRESULT {.stdcall.}
+    SetItemAlloc*:
+      proc(self: ptr IDelegateFolder, pmalloc: ptr IMalloc): HRESULT {.stdcall.}
+
   INewWindowManager* {.pure.} = object
     lpVtbl*: ptr INewWindowManagerVtbl
+
   INewWindowManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    EvaluateNewWindow*: proc(self: ptr INewWindowManager, pszUrl: LPCWSTR, pszName: LPCWSTR, pszUrlContext: LPCWSTR, pszFeatures: LPCWSTR, fReplace: WINBOOL, dwFlags: DWORD, dwUserActionTime: DWORD): HRESULT {.stdcall.}
+    EvaluateNewWindow*: proc(
+      self: ptr INewWindowManager,
+      pszUrl: LPCWSTR,
+      pszName: LPCWSTR,
+      pszUrlContext: LPCWSTR,
+      pszFeatures: LPCWSTR,
+      fReplace: WINBOOL,
+      dwFlags: DWORD,
+      dwUserActionTime: DWORD,
+    ): HRESULT {.stdcall.}
+
   IAttachmentExecute* {.pure.} = object
     lpVtbl*: ptr IAttachmentExecuteVtbl
+
   IAttachmentExecuteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetClientTitle*: proc(self: ptr IAttachmentExecute, pszTitle: LPCWSTR): HRESULT {.stdcall.}
-    SetClientGuid*: proc(self: ptr IAttachmentExecute, guid: REFGUID): HRESULT {.stdcall.}
-    SetLocalPath*: proc(self: ptr IAttachmentExecute, pszLocalPath: LPCWSTR): HRESULT {.stdcall.}
-    SetFileName*: proc(self: ptr IAttachmentExecute, pszFileName: LPCWSTR): HRESULT {.stdcall.}
-    SetSource*: proc(self: ptr IAttachmentExecute, pszSource: LPCWSTR): HRESULT {.stdcall.}
-    SetReferrer*: proc(self: ptr IAttachmentExecute, pszReferrer: LPCWSTR): HRESULT {.stdcall.}
+    SetClientTitle*:
+      proc(self: ptr IAttachmentExecute, pszTitle: LPCWSTR): HRESULT {.stdcall.}
+    SetClientGuid*:
+      proc(self: ptr IAttachmentExecute, guid: REFGUID): HRESULT {.stdcall.}
+    SetLocalPath*:
+      proc(self: ptr IAttachmentExecute, pszLocalPath: LPCWSTR): HRESULT {.stdcall.}
+    SetFileName*:
+      proc(self: ptr IAttachmentExecute, pszFileName: LPCWSTR): HRESULT {.stdcall.}
+    SetSource*:
+      proc(self: ptr IAttachmentExecute, pszSource: LPCWSTR): HRESULT {.stdcall.}
+    SetReferrer*:
+      proc(self: ptr IAttachmentExecute, pszReferrer: LPCWSTR): HRESULT {.stdcall.}
     CheckPolicy*: proc(self: ptr IAttachmentExecute): HRESULT {.stdcall.}
-    Prompt*: proc(self: ptr IAttachmentExecute, hwnd: HWND, prompt: ATTACHMENT_PROMPT, paction: ptr ATTACHMENT_ACTION): HRESULT {.stdcall.}
+    Prompt*: proc(
+      self: ptr IAttachmentExecute,
+      hwnd: HWND,
+      prompt: ATTACHMENT_PROMPT,
+      paction: ptr ATTACHMENT_ACTION,
+    ): HRESULT {.stdcall.}
     Save*: proc(self: ptr IAttachmentExecute): HRESULT {.stdcall.}
-    Execute*: proc(self: ptr IAttachmentExecute, hwnd: HWND, pszVerb: LPCWSTR, phProcess: ptr HANDLE): HRESULT {.stdcall.}
+    Execute*: proc(
+      self: ptr IAttachmentExecute, hwnd: HWND, pszVerb: LPCWSTR, phProcess: ptr HANDLE
+    ): HRESULT {.stdcall.}
     SaveWithUI*: proc(self: ptr IAttachmentExecute, hwnd: HWND): HRESULT {.stdcall.}
     ClearClientState*: proc(self: ptr IAttachmentExecute): HRESULT {.stdcall.}
+
   IShellMenuCallback* {.pure.} = object
     lpVtbl*: ptr IShellMenuCallbackVtbl
+
   IShellMenuCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CallbackSM*: proc(self: ptr IShellMenuCallback, psmd: LPSMDATA, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.stdcall.}
+    CallbackSM*: proc(
+      self: ptr IShellMenuCallback,
+      psmd: LPSMDATA,
+      uMsg: UINT,
+      wParam: WPARAM,
+      lParam: LPARAM,
+    ): HRESULT {.stdcall.}
+
   IShellMenu* {.pure.} = object
     lpVtbl*: ptr IShellMenuVtbl
+
   IShellMenuVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IShellMenu, psmc: ptr IShellMenuCallback, uId: UINT, uIdAncestor: UINT, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetMenuInfo*: proc(self: ptr IShellMenu, ppsmc: ptr ptr IShellMenuCallback, puId: ptr UINT, puIdAncestor: ptr UINT, pdwFlags: ptr DWORD): HRESULT {.stdcall.}
-    SetShellFolder*: proc(self: ptr IShellMenu, psf: ptr IShellFolder, pidlFolder: PCIDLIST_ABSOLUTE, hKey: HKEY, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetShellFolder*: proc(self: ptr IShellMenu, pdwFlags: ptr DWORD, ppidl: ptr PIDLIST_ABSOLUTE, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    SetMenu*: proc(self: ptr IShellMenu, hmenu: HMENU, hwnd: HWND, dwFlags: DWORD): HRESULT {.stdcall.}
-    GetMenu*: proc(self: ptr IShellMenu, phmenu: ptr HMENU, phwnd: ptr HWND, pdwFlags: ptr DWORD): HRESULT {.stdcall.}
-    InvalidateItem*: proc(self: ptr IShellMenu, psmd: LPSMDATA, dwFlags: DWORD): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IShellMenu,
+      psmc: ptr IShellMenuCallback,
+      uId: UINT,
+      uIdAncestor: UINT,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    GetMenuInfo*: proc(
+      self: ptr IShellMenu,
+      ppsmc: ptr ptr IShellMenuCallback,
+      puId: ptr UINT,
+      puIdAncestor: ptr UINT,
+      pdwFlags: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    SetShellFolder*: proc(
+      self: ptr IShellMenu,
+      psf: ptr IShellFolder,
+      pidlFolder: PCIDLIST_ABSOLUTE,
+      hKey: HKEY,
+      dwFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    GetShellFolder*: proc(
+      self: ptr IShellMenu,
+      pdwFlags: ptr DWORD,
+      ppidl: ptr PIDLIST_ABSOLUTE,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    SetMenu*: proc(
+      self: ptr IShellMenu, hmenu: HMENU, hwnd: HWND, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
+    GetMenu*: proc(
+      self: ptr IShellMenu, phmenu: ptr HMENU, phwnd: ptr HWND, pdwFlags: ptr DWORD
+    ): HRESULT {.stdcall.}
+    InvalidateItem*:
+      proc(self: ptr IShellMenu, psmd: LPSMDATA, dwFlags: DWORD): HRESULT {.stdcall.}
     GetState*: proc(self: ptr IShellMenu, psmd: LPSMDATA): HRESULT {.stdcall.}
-    SetMenuToolbar*: proc(self: ptr IShellMenu, punk: ptr IUnknown, dwFlags: DWORD): HRESULT {.stdcall.}
+    SetMenuToolbar*: proc(
+      self: ptr IShellMenu, punk: ptr IUnknown, dwFlags: DWORD
+    ): HRESULT {.stdcall.}
+
   IShellRunDll* {.pure.} = object
     lpVtbl*: ptr IShellRunDllVtbl
+
   IShellRunDllVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Run*: proc(self: ptr IShellRunDll, pszArgs: LPCWSTR): HRESULT {.stdcall.}
+
   IKnownFolder* {.pure.} = object
     lpVtbl*: ptr IKnownFolderVtbl
+
   IKnownFolderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetId*: proc(self: ptr IKnownFolder, pkfid: ptr KNOWNFOLDERID): HRESULT {.stdcall.}
-    GetCategory*: proc(self: ptr IKnownFolder, pCategory: ptr KF_CATEGORY): HRESULT {.stdcall.}
-    GetShellItem*: proc(self: ptr IKnownFolder, dwFlags: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetPath*: proc(self: ptr IKnownFolder, dwFlags: DWORD, ppszPath: ptr LPWSTR): HRESULT {.stdcall.}
-    SetPath*: proc(self: ptr IKnownFolder, dwFlags: DWORD, pszPath: LPCWSTR): HRESULT {.stdcall.}
-    GetIDList*: proc(self: ptr IKnownFolder, dwFlags: DWORD, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.stdcall.}
-    GetFolderType*: proc(self: ptr IKnownFolder, pftid: ptr FOLDERTYPEID): HRESULT {.stdcall.}
-    GetRedirectionCapabilities*: proc(self: ptr IKnownFolder, pCapabilities: ptr KF_REDIRECTION_CAPABILITIES): HRESULT {.stdcall.}
-    GetFolderDefinition*: proc(self: ptr IKnownFolder, pKFD: ptr KNOWNFOLDER_DEFINITION): HRESULT {.stdcall.}
+    GetCategory*:
+      proc(self: ptr IKnownFolder, pCategory: ptr KF_CATEGORY): HRESULT {.stdcall.}
+    GetShellItem*: proc(
+      self: ptr IKnownFolder, dwFlags: DWORD, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    GetPath*: proc(
+      self: ptr IKnownFolder, dwFlags: DWORD, ppszPath: ptr LPWSTR
+    ): HRESULT {.stdcall.}
+    SetPath*: proc(self: ptr IKnownFolder, dwFlags: DWORD, pszPath: LPCWSTR): HRESULT {.
+      stdcall
+    .}
+    GetIDList*: proc(
+      self: ptr IKnownFolder, dwFlags: DWORD, ppidl: ptr PIDLIST_ABSOLUTE
+    ): HRESULT {.stdcall.}
+    GetFolderType*:
+      proc(self: ptr IKnownFolder, pftid: ptr FOLDERTYPEID): HRESULT {.stdcall.}
+    GetRedirectionCapabilities*: proc(
+      self: ptr IKnownFolder, pCapabilities: ptr KF_REDIRECTION_CAPABILITIES
+    ): HRESULT {.stdcall.}
+    GetFolderDefinition*: proc(
+      self: ptr IKnownFolder, pKFD: ptr KNOWNFOLDER_DEFINITION
+    ): HRESULT {.stdcall.}
+
   IKnownFolderManager* {.pure.} = object
     lpVtbl*: ptr IKnownFolderManagerVtbl
+
   IKnownFolderManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    FolderIdFromCsidl*: proc(self: ptr IKnownFolderManager, nCsidl: int32, pfid: ptr KNOWNFOLDERID): HRESULT {.stdcall.}
-    FolderIdToCsidl*: proc(self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID, pnCsidl: ptr int32): HRESULT {.stdcall.}
-    GetFolderIds*: proc(self: ptr IKnownFolderManager, ppKFId: ptr ptr KNOWNFOLDERID, pCount: ptr UINT): HRESULT {.stdcall.}
-    GetFolder*: proc(self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID, ppkf: ptr ptr IKnownFolder): HRESULT {.stdcall.}
-    GetFolderByName*: proc(self: ptr IKnownFolderManager, pszCanonicalName: LPCWSTR, ppkf: ptr ptr IKnownFolder): HRESULT {.stdcall.}
-    RegisterFolder*: proc(self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID, pKFD: ptr KNOWNFOLDER_DEFINITION): HRESULT {.stdcall.}
-    UnregisterFolder*: proc(self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID): HRESULT {.stdcall.}
-    FindFolderFromPath*: proc(self: ptr IKnownFolderManager, pszPath: LPCWSTR, mode: FFFP_MODE, ppkf: ptr ptr IKnownFolder): HRESULT {.stdcall.}
-    FindFolderFromIDList*: proc(self: ptr IKnownFolderManager, pidl: PCIDLIST_ABSOLUTE, ppkf: ptr ptr IKnownFolder): HRESULT {.stdcall.}
-    Redirect*: proc(self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID, hwnd: HWND, flags: KF_REDIRECT_FLAGS, pszTargetPath: LPCWSTR, cFolders: UINT, pExclusion: ptr KNOWNFOLDERID, ppszError: ptr LPWSTR): HRESULT {.stdcall.}
+    FolderIdFromCsidl*: proc(
+      self: ptr IKnownFolderManager, nCsidl: int32, pfid: ptr KNOWNFOLDERID
+    ): HRESULT {.stdcall.}
+    FolderIdToCsidl*: proc(
+      self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID, pnCsidl: ptr int32
+    ): HRESULT {.stdcall.}
+    GetFolderIds*: proc(
+      self: ptr IKnownFolderManager, ppKFId: ptr ptr KNOWNFOLDERID, pCount: ptr UINT
+    ): HRESULT {.stdcall.}
+    GetFolder*: proc(
+      self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID, ppkf: ptr ptr IKnownFolder
+    ): HRESULT {.stdcall.}
+    GetFolderByName*: proc(
+      self: ptr IKnownFolderManager,
+      pszCanonicalName: LPCWSTR,
+      ppkf: ptr ptr IKnownFolder,
+    ): HRESULT {.stdcall.}
+    RegisterFolder*: proc(
+      self: ptr IKnownFolderManager,
+      rfid: REFKNOWNFOLDERID,
+      pKFD: ptr KNOWNFOLDER_DEFINITION,
+    ): HRESULT {.stdcall.}
+    UnregisterFolder*:
+      proc(self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID): HRESULT {.stdcall.}
+    FindFolderFromPath*: proc(
+      self: ptr IKnownFolderManager,
+      pszPath: LPCWSTR,
+      mode: FFFP_MODE,
+      ppkf: ptr ptr IKnownFolder,
+    ): HRESULT {.stdcall.}
+    FindFolderFromIDList*: proc(
+      self: ptr IKnownFolderManager, pidl: PCIDLIST_ABSOLUTE, ppkf: ptr ptr IKnownFolder
+    ): HRESULT {.stdcall.}
+    Redirect*: proc(
+      self: ptr IKnownFolderManager,
+      rfid: REFKNOWNFOLDERID,
+      hwnd: HWND,
+      flags: KF_REDIRECT_FLAGS,
+      pszTargetPath: LPCWSTR,
+      cFolders: UINT,
+      pExclusion: ptr KNOWNFOLDERID,
+      ppszError: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+
   ISharingConfigurationManager* {.pure.} = object
     lpVtbl*: ptr ISharingConfigurationManagerVtbl
+
   ISharingConfigurationManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateShare*: proc(self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID, role: SHARE_ROLE): HRESULT {.stdcall.}
-    DeleteShare*: proc(self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID): HRESULT {.stdcall.}
-    ShareExists*: proc(self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID): HRESULT {.stdcall.}
-    GetSharePermissions*: proc(self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID, pRole: ptr SHARE_ROLE): HRESULT {.stdcall.}
+    CreateShare*: proc(
+      self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID, role: SHARE_ROLE
+    ): HRESULT {.stdcall.}
+    DeleteShare*: proc(
+      self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID
+    ): HRESULT {.stdcall.}
+    ShareExists*: proc(
+      self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID
+    ): HRESULT {.stdcall.}
+    GetSharePermissions*: proc(
+      self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID, pRole: ptr SHARE_ROLE
+    ): HRESULT {.stdcall.}
     SharePrinters*: proc(self: ptr ISharingConfigurationManager): HRESULT {.stdcall.}
-    StopSharingPrinters*: proc(self: ptr ISharingConfigurationManager): HRESULT {.stdcall.}
-    ArePrintersShared*: proc(self: ptr ISharingConfigurationManager): HRESULT {.stdcall.}
+    StopSharingPrinters*:
+      proc(self: ptr ISharingConfigurationManager): HRESULT {.stdcall.}
+    ArePrintersShared*:
+      proc(self: ptr ISharingConfigurationManager): HRESULT {.stdcall.}
+
   IPreviousVersionsInfo* {.pure.} = object
     lpVtbl*: ptr IPreviousVersionsInfoVtbl
+
   IPreviousVersionsInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AreSnapshotsAvailable*: proc(self: ptr IPreviousVersionsInfo, pszPath: LPCWSTR, fOkToBeSlow: WINBOOL, pfAvailable: ptr WINBOOL): HRESULT {.stdcall.}
+    AreSnapshotsAvailable*: proc(
+      self: ptr IPreviousVersionsInfo,
+      pszPath: LPCWSTR,
+      fOkToBeSlow: WINBOOL,
+      pfAvailable: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+
   IRelatedItem* {.pure.} = object
     lpVtbl*: ptr IRelatedItemVtbl
+
   IRelatedItemVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetItemIDList*: proc(self: ptr IRelatedItem, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.stdcall.}
-    GetItem*: proc(self: ptr IRelatedItem, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
+    GetItemIDList*:
+      proc(self: ptr IRelatedItem, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+    GetItem*:
+      proc(self: ptr IRelatedItem, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
+
   IIdentityName* {.pure.} = object
     lpVtbl*: ptr IIdentityNameVtbl
+
   IIdentityNameVtbl* {.pure, inheritable.} = object of IRelatedItemVtbl
   IDelegateItem* {.pure.} = object
     lpVtbl*: ptr IDelegateItemVtbl
+
   IDelegateItemVtbl* {.pure, inheritable.} = object of IRelatedItemVtbl
   ICurrentItem* {.pure.} = object
     lpVtbl*: ptr ICurrentItemVtbl
+
   ICurrentItemVtbl* {.pure, inheritable.} = object of IRelatedItemVtbl
   ITransferMediumItem* {.pure.} = object
     lpVtbl*: ptr ITransferMediumItemVtbl
+
   ITransferMediumItemVtbl* {.pure, inheritable.} = object of IRelatedItemVtbl
   IUseToBrowseItem* {.pure.} = object
     lpVtbl*: ptr IUseToBrowseItemVtbl
+
   IUseToBrowseItemVtbl* {.pure, inheritable.} = object of IRelatedItemVtbl
   IDisplayItem* {.pure.} = object
     lpVtbl*: ptr IDisplayItemVtbl
+
   IDisplayItemVtbl* {.pure, inheritable.} = object of IRelatedItemVtbl
   IViewStateIdentityItem* {.pure.} = object
     lpVtbl*: ptr IViewStateIdentityItemVtbl
+
   IViewStateIdentityItemVtbl* {.pure, inheritable.} = object of IRelatedItemVtbl
   IPreviewItem* {.pure.} = object
     lpVtbl*: ptr IPreviewItemVtbl
+
   IPreviewItemVtbl* {.pure, inheritable.} = object of IRelatedItemVtbl
   IDestinationStreamFactory* {.pure.} = object
     lpVtbl*: ptr IDestinationStreamFactoryVtbl
+
   IDestinationStreamFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetDestinationStream*: proc(self: ptr IDestinationStreamFactory, ppstm: ptr ptr IStream): HRESULT {.stdcall.}
+    GetDestinationStream*: proc(
+      self: ptr IDestinationStreamFactory, ppstm: ptr ptr IStream
+    ): HRESULT {.stdcall.}
+
   INewMenuClient* {.pure.} = object
     lpVtbl*: ptr INewMenuClientVtbl
+
   INewMenuClientVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    IncludeItems*: proc(self: ptr INewMenuClient, pflags: ptr NMCII_FLAGS): HRESULT {.stdcall.}
-    SelectAndEditItem*: proc(self: ptr INewMenuClient, pidlItem: PCIDLIST_ABSOLUTE, flags: NMCSAEI_FLAGS): HRESULT {.stdcall.}
+    IncludeItems*:
+      proc(self: ptr INewMenuClient, pflags: ptr NMCII_FLAGS): HRESULT {.stdcall.}
+    SelectAndEditItem*: proc(
+      self: ptr INewMenuClient, pidlItem: PCIDLIST_ABSOLUTE, flags: NMCSAEI_FLAGS
+    ): HRESULT {.stdcall.}
+
   IInitializeWithBindCtx* {.pure.} = object
     lpVtbl*: ptr IInitializeWithBindCtxVtbl
+
   IInitializeWithBindCtxVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IInitializeWithBindCtx, pbc: ptr IBindCtx): HRESULT {.stdcall.}
+    Initialize*:
+      proc(self: ptr IInitializeWithBindCtx, pbc: ptr IBindCtx): HRESULT {.stdcall.}
+
   INameSpaceTreeControl* {.pure.} = object
     lpVtbl*: ptr INameSpaceTreeControlVtbl
+
   INameSpaceTreeControlVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr INameSpaceTreeControl, hwndParent: HWND, prc: ptr RECT, nsctsFlags: NSTCSTYLE): HRESULT {.stdcall.}
-    TreeAdvise*: proc(self: ptr INameSpaceTreeControl, punk: ptr IUnknown, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
-    TreeUnadvise*: proc(self: ptr INameSpaceTreeControl, dwCookie: DWORD): HRESULT {.stdcall.}
-    AppendRoot*: proc(self: ptr INameSpaceTreeControl, psiRoot: ptr IShellItem, grfEnumFlags: SHCONTF, grfRootStyle: NSTCROOTSTYLE, pif: ptr IShellItemFilter): HRESULT {.stdcall.}
-    InsertRoot*: proc(self: ptr INameSpaceTreeControl, iIndex: int32, psiRoot: ptr IShellItem, grfEnumFlags: SHCONTF, grfRootStyle: NSTCROOTSTYLE, pif: ptr IShellItemFilter): HRESULT {.stdcall.}
-    RemoveRoot*: proc(self: ptr INameSpaceTreeControl, psiRoot: ptr IShellItem): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr INameSpaceTreeControl,
+      hwndParent: HWND,
+      prc: ptr RECT,
+      nsctsFlags: NSTCSTYLE,
+    ): HRESULT {.stdcall.}
+    TreeAdvise*: proc(
+      self: ptr INameSpaceTreeControl, punk: ptr IUnknown, pdwCookie: ptr DWORD
+    ): HRESULT {.stdcall.}
+    TreeUnadvise*:
+      proc(self: ptr INameSpaceTreeControl, dwCookie: DWORD): HRESULT {.stdcall.}
+    AppendRoot*: proc(
+      self: ptr INameSpaceTreeControl,
+      psiRoot: ptr IShellItem,
+      grfEnumFlags: SHCONTF,
+      grfRootStyle: NSTCROOTSTYLE,
+      pif: ptr IShellItemFilter,
+    ): HRESULT {.stdcall.}
+    InsertRoot*: proc(
+      self: ptr INameSpaceTreeControl,
+      iIndex: int32,
+      psiRoot: ptr IShellItem,
+      grfEnumFlags: SHCONTF,
+      grfRootStyle: NSTCROOTSTYLE,
+      pif: ptr IShellItemFilter,
+    ): HRESULT {.stdcall.}
+    RemoveRoot*: proc(self: ptr INameSpaceTreeControl, psiRoot: ptr IShellItem): HRESULT {.
+      stdcall
+    .}
     RemoveAllRoots*: proc(self: ptr INameSpaceTreeControl): HRESULT {.stdcall.}
-    GetRootItems*: proc(self: ptr INameSpaceTreeControl, ppsiaRootItems: ptr ptr IShellItemArray): HRESULT {.stdcall.}
-    SetItemState*: proc(self: ptr INameSpaceTreeControl, psi: ptr IShellItem, nstcisMask: NSTCITEMSTATE, nstcisFlags: NSTCITEMSTATE): HRESULT {.stdcall.}
-    GetItemState*: proc(self: ptr INameSpaceTreeControl, psi: ptr IShellItem, nstcisMask: NSTCITEMSTATE, pnstcisFlags: ptr NSTCITEMSTATE): HRESULT {.stdcall.}
-    GetSelectedItems*: proc(self: ptr INameSpaceTreeControl, psiaItems: ptr ptr IShellItemArray): HRESULT {.stdcall.}
-    GetItemCustomState*: proc(self: ptr INameSpaceTreeControl, psi: ptr IShellItem, piStateNumber: ptr int32): HRESULT {.stdcall.}
-    SetItemCustomState*: proc(self: ptr INameSpaceTreeControl, psi: ptr IShellItem, iStateNumber: int32): HRESULT {.stdcall.}
-    EnsureItemVisible*: proc(self: ptr INameSpaceTreeControl, psi: ptr IShellItem): HRESULT {.stdcall.}
-    SetTheme*: proc(self: ptr INameSpaceTreeControl, pszTheme: LPCWSTR): HRESULT {.stdcall.}
-    GetNextItem*: proc(self: ptr INameSpaceTreeControl, psi: ptr IShellItem, nstcgi: NSTCGNI, ppsiNext: ptr ptr IShellItem): HRESULT {.stdcall.}
-    HitTest*: proc(self: ptr INameSpaceTreeControl, ppt: ptr POINT, ppsiOut: ptr ptr IShellItem): HRESULT {.stdcall.}
-    GetItemRect*: proc(self: ptr INameSpaceTreeControl, psi: ptr IShellItem, prect: ptr RECT): HRESULT {.stdcall.}
+    GetRootItems*: proc(
+      self: ptr INameSpaceTreeControl, ppsiaRootItems: ptr ptr IShellItemArray
+    ): HRESULT {.stdcall.}
+    SetItemState*: proc(
+      self: ptr INameSpaceTreeControl,
+      psi: ptr IShellItem,
+      nstcisMask: NSTCITEMSTATE,
+      nstcisFlags: NSTCITEMSTATE,
+    ): HRESULT {.stdcall.}
+    GetItemState*: proc(
+      self: ptr INameSpaceTreeControl,
+      psi: ptr IShellItem,
+      nstcisMask: NSTCITEMSTATE,
+      pnstcisFlags: ptr NSTCITEMSTATE,
+    ): HRESULT {.stdcall.}
+    GetSelectedItems*: proc(
+      self: ptr INameSpaceTreeControl, psiaItems: ptr ptr IShellItemArray
+    ): HRESULT {.stdcall.}
+    GetItemCustomState*: proc(
+      self: ptr INameSpaceTreeControl, psi: ptr IShellItem, piStateNumber: ptr int32
+    ): HRESULT {.stdcall.}
+    SetItemCustomState*: proc(
+      self: ptr INameSpaceTreeControl, psi: ptr IShellItem, iStateNumber: int32
+    ): HRESULT {.stdcall.}
+    EnsureItemVisible*:
+      proc(self: ptr INameSpaceTreeControl, psi: ptr IShellItem): HRESULT {.stdcall.}
+    SetTheme*:
+      proc(self: ptr INameSpaceTreeControl, pszTheme: LPCWSTR): HRESULT {.stdcall.}
+    GetNextItem*: proc(
+      self: ptr INameSpaceTreeControl,
+      psi: ptr IShellItem,
+      nstcgi: NSTCGNI,
+      ppsiNext: ptr ptr IShellItem,
+    ): HRESULT {.stdcall.}
+    HitTest*: proc(
+      self: ptr INameSpaceTreeControl, ppt: ptr POINT, ppsiOut: ptr ptr IShellItem
+    ): HRESULT {.stdcall.}
+    GetItemRect*: proc(
+      self: ptr INameSpaceTreeControl, psi: ptr IShellItem, prect: ptr RECT
+    ): HRESULT {.stdcall.}
     CollapseAll*: proc(self: ptr INameSpaceTreeControl): HRESULT {.stdcall.}
+
   INameSpaceTreeControl2* {.pure.} = object
     lpVtbl*: ptr INameSpaceTreeControl2Vtbl
+
   INameSpaceTreeControl2Vtbl* {.pure, inheritable.} = object of INameSpaceTreeControlVtbl
-    SetControlStyle*: proc(self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE, nstcsStyle: NSTCSTYLE): HRESULT {.stdcall.}
-    GetControlStyle*: proc(self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE, pnstcsStyle: ptr NSTCSTYLE): HRESULT {.stdcall.}
-    SetControlStyle2*: proc(self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE2, nstcsStyle: NSTCSTYLE2): HRESULT {.stdcall.}
-    GetControlStyle2*: proc(self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE2, pnstcsStyle: ptr NSTCSTYLE2): HRESULT {.stdcall.}
+    SetControlStyle*: proc(
+      self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE, nstcsStyle: NSTCSTYLE
+    ): HRESULT {.stdcall.}
+    GetControlStyle*: proc(
+      self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE, pnstcsStyle: ptr NSTCSTYLE
+    ): HRESULT {.stdcall.}
+    SetControlStyle2*: proc(
+      self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE2, nstcsStyle: NSTCSTYLE2
+    ): HRESULT {.stdcall.}
+    GetControlStyle2*: proc(
+      self: ptr INameSpaceTreeControl2,
+      nstcsMask: NSTCSTYLE2,
+      pnstcsStyle: ptr NSTCSTYLE2,
+    ): HRESULT {.stdcall.}
+
   INameSpaceTreeControlEvents* {.pure.} = object
     lpVtbl*: ptr INameSpaceTreeControlEventsVtbl
+
   INameSpaceTreeControlEventsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnItemClick*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, nstceHitTest: NSTCEHITTEST, nstceClickType: NSTCECLICKTYPE): HRESULT {.stdcall.}
-    OnPropertyItemCommit*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem): HRESULT {.stdcall.}
-    OnItemStateChanging*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, nstcisMask: NSTCITEMSTATE, nstcisState: NSTCITEMSTATE): HRESULT {.stdcall.}
-    OnItemStateChanged*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, nstcisMask: NSTCITEMSTATE, nstcisState: NSTCITEMSTATE): HRESULT {.stdcall.}
-    OnSelectionChanged*: proc(self: ptr INameSpaceTreeControlEvents, psiaSelection: ptr IShellItemArray): HRESULT {.stdcall.}
-    OnKeyboardInput*: proc(self: ptr INameSpaceTreeControlEvents, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.stdcall.}
-    OnBeforeExpand*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem): HRESULT {.stdcall.}
-    OnAfterExpand*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem): HRESULT {.stdcall.}
-    OnBeginLabelEdit*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem): HRESULT {.stdcall.}
-    OnEndLabelEdit*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem): HRESULT {.stdcall.}
-    OnGetToolTip*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, pszTip: LPWSTR, cchTip: int32): HRESULT {.stdcall.}
-    OnBeforeItemDelete*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem): HRESULT {.stdcall.}
-    OnItemAdded*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, fIsRoot: WINBOOL): HRESULT {.stdcall.}
-    OnItemDeleted*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, fIsRoot: WINBOOL): HRESULT {.stdcall.}
-    OnBeforeContextMenu*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    OnAfterContextMenu*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, pcmIn: ptr IContextMenu, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    OnBeforeStateImageChange*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem): HRESULT {.stdcall.}
-    OnGetDefaultIconIndex*: proc(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, piDefaultIcon: ptr int32, piOpenIcon: ptr int32): HRESULT {.stdcall.}
+    OnItemClick*: proc(
+      self: ptr INameSpaceTreeControlEvents,
+      psi: ptr IShellItem,
+      nstceHitTest: NSTCEHITTEST,
+      nstceClickType: NSTCECLICKTYPE,
+    ): HRESULT {.stdcall.}
+    OnPropertyItemCommit*: proc(
+      self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem
+    ): HRESULT {.stdcall.}
+    OnItemStateChanging*: proc(
+      self: ptr INameSpaceTreeControlEvents,
+      psi: ptr IShellItem,
+      nstcisMask: NSTCITEMSTATE,
+      nstcisState: NSTCITEMSTATE,
+    ): HRESULT {.stdcall.}
+    OnItemStateChanged*: proc(
+      self: ptr INameSpaceTreeControlEvents,
+      psi: ptr IShellItem,
+      nstcisMask: NSTCITEMSTATE,
+      nstcisState: NSTCITEMSTATE,
+    ): HRESULT {.stdcall.}
+    OnSelectionChanged*: proc(
+      self: ptr INameSpaceTreeControlEvents, psiaSelection: ptr IShellItemArray
+    ): HRESULT {.stdcall.}
+    OnKeyboardInput*: proc(
+      self: ptr INameSpaceTreeControlEvents, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+    ): HRESULT {.stdcall.}
+    OnBeforeExpand*: proc(
+      self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem
+    ): HRESULT {.stdcall.}
+    OnAfterExpand*: proc(
+      self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem
+    ): HRESULT {.stdcall.}
+    OnBeginLabelEdit*: proc(
+      self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem
+    ): HRESULT {.stdcall.}
+    OnEndLabelEdit*: proc(
+      self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem
+    ): HRESULT {.stdcall.}
+    OnGetToolTip*: proc(
+      self: ptr INameSpaceTreeControlEvents,
+      psi: ptr IShellItem,
+      pszTip: LPWSTR,
+      cchTip: int32,
+    ): HRESULT {.stdcall.}
+    OnBeforeItemDelete*: proc(
+      self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem
+    ): HRESULT {.stdcall.}
+    OnItemAdded*: proc(
+      self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, fIsRoot: WINBOOL
+    ): HRESULT {.stdcall.}
+    OnItemDeleted*: proc(
+      self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, fIsRoot: WINBOOL
+    ): HRESULT {.stdcall.}
+    OnBeforeContextMenu*: proc(
+      self: ptr INameSpaceTreeControlEvents,
+      psi: ptr IShellItem,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    OnAfterContextMenu*: proc(
+      self: ptr INameSpaceTreeControlEvents,
+      psi: ptr IShellItem,
+      pcmIn: ptr IContextMenu,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    OnBeforeStateImageChange*: proc(
+      self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem
+    ): HRESULT {.stdcall.}
+    OnGetDefaultIconIndex*: proc(
+      self: ptr INameSpaceTreeControlEvents,
+      psi: ptr IShellItem,
+      piDefaultIcon: ptr int32,
+      piOpenIcon: ptr int32,
+    ): HRESULT {.stdcall.}
+
   INameSpaceTreeControlDropHandler* {.pure.} = object
     lpVtbl*: ptr INameSpaceTreeControlDropHandlerVtbl
+
   INameSpaceTreeControlDropHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnDragEnter*: proc(self: ptr INameSpaceTreeControlDropHandler, psiOver: ptr IShellItem, psiaData: ptr IShellItemArray, fOutsideSource: WINBOOL, grfKeyState: DWORD, pdwEffect: ptr DWORD): HRESULT {.stdcall.}
-    OnDragOver*: proc(self: ptr INameSpaceTreeControlDropHandler, psiOver: ptr IShellItem, psiaData: ptr IShellItemArray, grfKeyState: DWORD, pdwEffect: ptr DWORD): HRESULT {.stdcall.}
-    OnDragPosition*: proc(self: ptr INameSpaceTreeControlDropHandler, psiOver: ptr IShellItem, psiaData: ptr IShellItemArray, iNewPosition: int32, iOldPosition: int32): HRESULT {.stdcall.}
-    OnDrop*: proc(self: ptr INameSpaceTreeControlDropHandler, psiOver: ptr IShellItem, psiaData: ptr IShellItemArray, iPosition: int32, grfKeyState: DWORD, pdwEffect: ptr DWORD): HRESULT {.stdcall.}
-    OnDropPosition*: proc(self: ptr INameSpaceTreeControlDropHandler, psiOver: ptr IShellItem, psiaData: ptr IShellItemArray, iNewPosition: int32, iOldPosition: int32): HRESULT {.stdcall.}
-    OnDragLeave*: proc(self: ptr INameSpaceTreeControlDropHandler, psiOver: ptr IShellItem): HRESULT {.stdcall.}
+    OnDragEnter*: proc(
+      self: ptr INameSpaceTreeControlDropHandler,
+      psiOver: ptr IShellItem,
+      psiaData: ptr IShellItemArray,
+      fOutsideSource: WINBOOL,
+      grfKeyState: DWORD,
+      pdwEffect: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    OnDragOver*: proc(
+      self: ptr INameSpaceTreeControlDropHandler,
+      psiOver: ptr IShellItem,
+      psiaData: ptr IShellItemArray,
+      grfKeyState: DWORD,
+      pdwEffect: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    OnDragPosition*: proc(
+      self: ptr INameSpaceTreeControlDropHandler,
+      psiOver: ptr IShellItem,
+      psiaData: ptr IShellItemArray,
+      iNewPosition: int32,
+      iOldPosition: int32,
+    ): HRESULT {.stdcall.}
+    OnDrop*: proc(
+      self: ptr INameSpaceTreeControlDropHandler,
+      psiOver: ptr IShellItem,
+      psiaData: ptr IShellItemArray,
+      iPosition: int32,
+      grfKeyState: DWORD,
+      pdwEffect: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    OnDropPosition*: proc(
+      self: ptr INameSpaceTreeControlDropHandler,
+      psiOver: ptr IShellItem,
+      psiaData: ptr IShellItemArray,
+      iNewPosition: int32,
+      iOldPosition: int32,
+    ): HRESULT {.stdcall.}
+    OnDragLeave*: proc(
+      self: ptr INameSpaceTreeControlDropHandler, psiOver: ptr IShellItem
+    ): HRESULT {.stdcall.}
+
   INameSpaceTreeAccessible* {.pure.} = object
     lpVtbl*: ptr INameSpaceTreeAccessibleVtbl
+
   INameSpaceTreeAccessibleVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnGetDefaultAccessibilityAction*: proc(self: ptr INameSpaceTreeAccessible, psi: ptr IShellItem, pbstrDefaultAction: ptr BSTR): HRESULT {.stdcall.}
-    OnDoDefaultAccessibilityAction*: proc(self: ptr INameSpaceTreeAccessible, psi: ptr IShellItem): HRESULT {.stdcall.}
-    OnGetAccessibilityRole*: proc(self: ptr INameSpaceTreeAccessible, psi: ptr IShellItem, pvarRole: ptr VARIANT): HRESULT {.stdcall.}
+    OnGetDefaultAccessibilityAction*: proc(
+      self: ptr INameSpaceTreeAccessible,
+      psi: ptr IShellItem,
+      pbstrDefaultAction: ptr BSTR,
+    ): HRESULT {.stdcall.}
+    OnDoDefaultAccessibilityAction*:
+      proc(self: ptr INameSpaceTreeAccessible, psi: ptr IShellItem): HRESULT {.stdcall.}
+    OnGetAccessibilityRole*: proc(
+      self: ptr INameSpaceTreeAccessible, psi: ptr IShellItem, pvarRole: ptr VARIANT
+    ): HRESULT {.stdcall.}
+
   INameSpaceTreeControlCustomDraw* {.pure.} = object
     lpVtbl*: ptr INameSpaceTreeControlCustomDrawVtbl
+
   INameSpaceTreeControlCustomDrawVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    PrePaint*: proc(self: ptr INameSpaceTreeControlCustomDraw, hdc: HDC, prc: ptr RECT, plres: ptr LRESULT): HRESULT {.stdcall.}
-    PostPaint*: proc(self: ptr INameSpaceTreeControlCustomDraw, hdc: HDC, prc: ptr RECT): HRESULT {.stdcall.}
-    ItemPrePaint*: proc(self: ptr INameSpaceTreeControlCustomDraw, hdc: HDC, prc: ptr RECT, pnstccdItem: ptr NSTCCUSTOMDRAW, pclrText: ptr COLORREF, pclrTextBk: ptr COLORREF, plres: ptr LRESULT): HRESULT {.stdcall.}
-    ItemPostPaint*: proc(self: ptr INameSpaceTreeControlCustomDraw, hdc: HDC, prc: ptr RECT, pnstccdItem: ptr NSTCCUSTOMDRAW): HRESULT {.stdcall.}
+    PrePaint*: proc(
+      self: ptr INameSpaceTreeControlCustomDraw,
+      hdc: HDC,
+      prc: ptr RECT,
+      plres: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+    PostPaint*: proc(
+      self: ptr INameSpaceTreeControlCustomDraw, hdc: HDC, prc: ptr RECT
+    ): HRESULT {.stdcall.}
+    ItemPrePaint*: proc(
+      self: ptr INameSpaceTreeControlCustomDraw,
+      hdc: HDC,
+      prc: ptr RECT,
+      pnstccdItem: ptr NSTCCUSTOMDRAW,
+      pclrText: ptr COLORREF,
+      pclrTextBk: ptr COLORREF,
+      plres: ptr LRESULT,
+    ): HRESULT {.stdcall.}
+    ItemPostPaint*: proc(
+      self: ptr INameSpaceTreeControlCustomDraw,
+      hdc: HDC,
+      prc: ptr RECT,
+      pnstccdItem: ptr NSTCCUSTOMDRAW,
+    ): HRESULT {.stdcall.}
+
   INameSpaceTreeControlFolderCapabilities* {.pure.} = object
     lpVtbl*: ptr INameSpaceTreeControlFolderCapabilitiesVtbl
+
   INameSpaceTreeControlFolderCapabilitiesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetFolderCapabilities*: proc(self: ptr INameSpaceTreeControlFolderCapabilities, nfcMask: NSTCFOLDERCAPABILITIES, pnfcValue: ptr NSTCFOLDERCAPABILITIES): HRESULT {.stdcall.}
+    GetFolderCapabilities*: proc(
+      self: ptr INameSpaceTreeControlFolderCapabilities,
+      nfcMask: NSTCFOLDERCAPABILITIES,
+      pnfcValue: ptr NSTCFOLDERCAPABILITIES,
+    ): HRESULT {.stdcall.}
+
   IPreviewHandler* {.pure.} = object
     lpVtbl*: ptr IPreviewHandlerVtbl
+
   IPreviewHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetWindow*: proc(self: ptr IPreviewHandler, hwnd: HWND, prc: ptr RECT): HRESULT {.stdcall.}
+    SetWindow*:
+      proc(self: ptr IPreviewHandler, hwnd: HWND, prc: ptr RECT): HRESULT {.stdcall.}
     SetRect*: proc(self: ptr IPreviewHandler, prc: ptr RECT): HRESULT {.stdcall.}
     DoPreview*: proc(self: ptr IPreviewHandler): HRESULT {.stdcall.}
     Unload*: proc(self: ptr IPreviewHandler): HRESULT {.stdcall.}
     SetFocus*: proc(self: ptr IPreviewHandler): HRESULT {.stdcall.}
     QueryFocus*: proc(self: ptr IPreviewHandler, phwnd: ptr HWND): HRESULT {.stdcall.}
-    TranslateAccelerator*: proc(self: ptr IPreviewHandler, pmsg: ptr MSG): HRESULT {.stdcall.}
+    TranslateAccelerator*:
+      proc(self: ptr IPreviewHandler, pmsg: ptr MSG): HRESULT {.stdcall.}
+
   IPreviewHandlerFrame* {.pure.} = object
     lpVtbl*: ptr IPreviewHandlerFrameVtbl
+
   IPreviewHandlerFrameVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetWindowContext*: proc(self: ptr IPreviewHandlerFrame, pinfo: ptr PREVIEWHANDLERFRAMEINFO): HRESULT {.stdcall.}
-    TranslateAccelerator*: proc(self: ptr IPreviewHandlerFrame, pmsg: ptr MSG): HRESULT {.stdcall.}
+    GetWindowContext*: proc(
+      self: ptr IPreviewHandlerFrame, pinfo: ptr PREVIEWHANDLERFRAMEINFO
+    ): HRESULT {.stdcall.}
+    TranslateAccelerator*:
+      proc(self: ptr IPreviewHandlerFrame, pmsg: ptr MSG): HRESULT {.stdcall.}
+
   ITrayDeskBand* {.pure.} = object
     lpVtbl*: ptr ITrayDeskBandVtbl
+
   ITrayDeskBandVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     ShowDeskBand*: proc(self: ptr ITrayDeskBand, clsid: REFCLSID): HRESULT {.stdcall.}
     HideDeskBand*: proc(self: ptr ITrayDeskBand, clsid: REFCLSID): HRESULT {.stdcall.}
-    IsDeskBandShown*: proc(self: ptr ITrayDeskBand, clsid: REFCLSID): HRESULT {.stdcall.}
+    IsDeskBandShown*:
+      proc(self: ptr ITrayDeskBand, clsid: REFCLSID): HRESULT {.stdcall.}
     DeskBandRegistrationChanged*: proc(self: ptr ITrayDeskBand): HRESULT {.stdcall.}
+
   IBandHost* {.pure.} = object
     lpVtbl*: ptr IBandHostVtbl
+
   IBandHostVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateBand*: proc(self: ptr IBandHost, rclsidBand: REFCLSID, fAvailable: WINBOOL, fVisible: WINBOOL, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    SetBandAvailability*: proc(self: ptr IBandHost, rclsidBand: REFCLSID, fAvailable: WINBOOL): HRESULT {.stdcall.}
+    CreateBand*: proc(
+      self: ptr IBandHost,
+      rclsidBand: REFCLSID,
+      fAvailable: WINBOOL,
+      fVisible: WINBOOL,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    SetBandAvailability*: proc(
+      self: ptr IBandHost, rclsidBand: REFCLSID, fAvailable: WINBOOL
+    ): HRESULT {.stdcall.}
     DestroyBand*: proc(self: ptr IBandHost, rclsidBand: REFCLSID): HRESULT {.stdcall.}
+
   IExplorerPaneVisibility* {.pure.} = object
     lpVtbl*: ptr IExplorerPaneVisibilityVtbl
+
   IExplorerPaneVisibilityVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetPaneState*: proc(self: ptr IExplorerPaneVisibility, ep: REFEXPLORERPANE, peps: ptr EXPLORERPANESTATE): HRESULT {.stdcall.}
+    GetPaneState*: proc(
+      self: ptr IExplorerPaneVisibility,
+      ep: REFEXPLORERPANE,
+      peps: ptr EXPLORERPANESTATE,
+    ): HRESULT {.stdcall.}
+
   IDefaultExtractIconInit* {.pure.} = object
     lpVtbl*: ptr IDefaultExtractIconInitVtbl
+
   IDefaultExtractIconInitVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetFlags*: proc(self: ptr IDefaultExtractIconInit, uFlags: UINT): HRESULT {.stdcall.}
+    SetFlags*:
+      proc(self: ptr IDefaultExtractIconInit, uFlags: UINT): HRESULT {.stdcall.}
     SetKey*: proc(self: ptr IDefaultExtractIconInit, hkey: HKEY): HRESULT {.stdcall.}
-    SetNormalIcon*: proc(self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32): HRESULT {.stdcall.}
-    SetOpenIcon*: proc(self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32): HRESULT {.stdcall.}
-    SetShortcutIcon*: proc(self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32): HRESULT {.stdcall.}
-    SetDefaultIcon*: proc(self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32): HRESULT {.stdcall.}
+    SetNormalIcon*: proc(
+      self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32
+    ): HRESULT {.stdcall.}
+    SetOpenIcon*: proc(
+      self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32
+    ): HRESULT {.stdcall.}
+    SetShortcutIcon*: proc(
+      self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32
+    ): HRESULT {.stdcall.}
+    SetDefaultIcon*: proc(
+      self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32
+    ): HRESULT {.stdcall.}
+
   IEnumExplorerCommand* {.pure.} = object
     lpVtbl*: ptr IEnumExplorerCommandVtbl
+
   IEnumExplorerCommandVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumExplorerCommand, celt: ULONG, pUICommand: ptr ptr IExplorerCommand, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumExplorerCommand,
+      celt: ULONG,
+      pUICommand: ptr ptr IExplorerCommand,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IEnumExplorerCommand, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IEnumExplorerCommand): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IEnumExplorerCommand, ppenum: ptr ptr IEnumExplorerCommand): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr IEnumExplorerCommand, ppenum: ptr ptr IEnumExplorerCommand
+    ): HRESULT {.stdcall.}
+
   IExplorerCommand* {.pure.} = object
     lpVtbl*: ptr IExplorerCommandVtbl
+
   IExplorerCommandVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetTitle*: proc(self: ptr IExplorerCommand, psiItemArray: ptr IShellItemArray, ppszName: ptr LPWSTR): HRESULT {.stdcall.}
-    GetIcon*: proc(self: ptr IExplorerCommand, psiItemArray: ptr IShellItemArray, ppszIcon: ptr LPWSTR): HRESULT {.stdcall.}
-    GetToolTip*: proc(self: ptr IExplorerCommand, psiItemArray: ptr IShellItemArray, ppszInfotip: ptr LPWSTR): HRESULT {.stdcall.}
-    GetCanonicalName*: proc(self: ptr IExplorerCommand, pguidCommandName: ptr GUID): HRESULT {.stdcall.}
-    GetState*: proc(self: ptr IExplorerCommand, psiItemArray: ptr IShellItemArray, fOkToBeSlow: WINBOOL, pCmdState: ptr EXPCMDSTATE): HRESULT {.stdcall.}
-    Invoke*: proc(self: ptr IExplorerCommand, psiItemArray: ptr IShellItemArray, pbc: ptr IBindCtx): HRESULT {.stdcall.}
-    GetFlags*: proc(self: ptr IExplorerCommand, pFlags: ptr EXPCMDFLAGS): HRESULT {.stdcall.}
-    EnumSubCommands*: proc(self: ptr IExplorerCommand, ppEnum: ptr ptr IEnumExplorerCommand): HRESULT {.stdcall.}
+    GetTitle*: proc(
+      self: ptr IExplorerCommand,
+      psiItemArray: ptr IShellItemArray,
+      ppszName: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+    GetIcon*: proc(
+      self: ptr IExplorerCommand,
+      psiItemArray: ptr IShellItemArray,
+      ppszIcon: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+    GetToolTip*: proc(
+      self: ptr IExplorerCommand,
+      psiItemArray: ptr IShellItemArray,
+      ppszInfotip: ptr LPWSTR,
+    ): HRESULT {.stdcall.}
+    GetCanonicalName*:
+      proc(self: ptr IExplorerCommand, pguidCommandName: ptr GUID): HRESULT {.stdcall.}
+    GetState*: proc(
+      self: ptr IExplorerCommand,
+      psiItemArray: ptr IShellItemArray,
+      fOkToBeSlow: WINBOOL,
+      pCmdState: ptr EXPCMDSTATE,
+    ): HRESULT {.stdcall.}
+    Invoke*: proc(
+      self: ptr IExplorerCommand, psiItemArray: ptr IShellItemArray, pbc: ptr IBindCtx
+    ): HRESULT {.stdcall.}
+    GetFlags*:
+      proc(self: ptr IExplorerCommand, pFlags: ptr EXPCMDFLAGS): HRESULT {.stdcall.}
+    EnumSubCommands*: proc(
+      self: ptr IExplorerCommand, ppEnum: ptr ptr IEnumExplorerCommand
+    ): HRESULT {.stdcall.}
+
   IExplorerCommandState* {.pure.} = object
     lpVtbl*: ptr IExplorerCommandStateVtbl
+
   IExplorerCommandStateVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetState*: proc(self: ptr IExplorerCommandState, psiItemArray: ptr IShellItemArray, fOkToBeSlow: WINBOOL, pCmdState: ptr EXPCMDSTATE): HRESULT {.stdcall.}
+    GetState*: proc(
+      self: ptr IExplorerCommandState,
+      psiItemArray: ptr IShellItemArray,
+      fOkToBeSlow: WINBOOL,
+      pCmdState: ptr EXPCMDSTATE,
+    ): HRESULT {.stdcall.}
+
   IInitializeCommand* {.pure.} = object
     lpVtbl*: ptr IInitializeCommandVtbl
+
   IInitializeCommandVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IInitializeCommand, pszCommandName: LPCWSTR, ppb: ptr IPropertyBag): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IInitializeCommand, pszCommandName: LPCWSTR, ppb: ptr IPropertyBag
+    ): HRESULT {.stdcall.}
+
   IExplorerCommandProvider* {.pure.} = object
     lpVtbl*: ptr IExplorerCommandProviderVtbl
+
   IExplorerCommandProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCommands*: proc(self: ptr IExplorerCommandProvider, punkSite: ptr IUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetCommand*: proc(self: ptr IExplorerCommandProvider, rguidCommandId: REFGUID, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetCommands*: proc(
+      self: ptr IExplorerCommandProvider,
+      punkSite: ptr IUnknown,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetCommand*: proc(
+      self: ptr IExplorerCommandProvider,
+      rguidCommandId: REFGUID,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+
   IInitializeNetworkFolder* {.pure.} = object
     lpVtbl*: ptr IInitializeNetworkFolderVtbl
+
   IInitializeNetworkFolderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IInitializeNetworkFolder, pidl: PCIDLIST_ABSOLUTE, pidlTarget: PCIDLIST_ABSOLUTE, uDisplayType: UINT, pszResName: LPCWSTR, pszProvider: LPCWSTR): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IInitializeNetworkFolder,
+      pidl: PCIDLIST_ABSOLUTE,
+      pidlTarget: PCIDLIST_ABSOLUTE,
+      uDisplayType: UINT,
+      pszResName: LPCWSTR,
+      pszProvider: LPCWSTR,
+    ): HRESULT {.stdcall.}
+
   IOpenControlPanel* {.pure.} = object
     lpVtbl*: ptr IOpenControlPanelVtbl
+
   IOpenControlPanelVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Open*: proc(self: ptr IOpenControlPanel, pszName: LPCWSTR, pszPage: LPCWSTR, punkSite: ptr IUnknown): HRESULT {.stdcall.}
-    GetPath*: proc(self: ptr IOpenControlPanel, pszName: LPCWSTR, pszPath: LPWSTR, cchPath: UINT): HRESULT {.stdcall.}
-    GetCurrentView*: proc(self: ptr IOpenControlPanel, pView: ptr CPVIEW): HRESULT {.stdcall.}
+    Open*: proc(
+      self: ptr IOpenControlPanel,
+      pszName: LPCWSTR,
+      pszPage: LPCWSTR,
+      punkSite: ptr IUnknown,
+    ): HRESULT {.stdcall.}
+    GetPath*: proc(
+      self: ptr IOpenControlPanel, pszName: LPCWSTR, pszPath: LPWSTR, cchPath: UINT
+    ): HRESULT {.stdcall.}
+    GetCurrentView*:
+      proc(self: ptr IOpenControlPanel, pView: ptr CPVIEW): HRESULT {.stdcall.}
+
   IComputerInfoChangeNotify* {.pure.} = object
     lpVtbl*: ptr IComputerInfoChangeNotifyVtbl
+
   IComputerInfoChangeNotifyVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     ComputerInfoChanged*: proc(self: ptr IComputerInfoChangeNotify): HRESULT {.stdcall.}
+
   IFileSystemBindData* {.pure.} = object
     lpVtbl*: ptr IFileSystemBindDataVtbl
+
   IFileSystemBindDataVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetFindData*: proc(self: ptr IFileSystemBindData, pfd: ptr WIN32_FIND_DATAW): HRESULT {.stdcall.}
-    GetFindData*: proc(self: ptr IFileSystemBindData, pfd: ptr WIN32_FIND_DATAW): HRESULT {.stdcall.}
+    SetFindData*: proc(
+      self: ptr IFileSystemBindData, pfd: ptr WIN32_FIND_DATAW
+    ): HRESULT {.stdcall.}
+    GetFindData*: proc(
+      self: ptr IFileSystemBindData, pfd: ptr WIN32_FIND_DATAW
+    ): HRESULT {.stdcall.}
+
   IFileSystemBindData2* {.pure.} = object
     lpVtbl*: ptr IFileSystemBindData2Vtbl
+
   IFileSystemBindData2Vtbl* {.pure, inheritable.} = object of IFileSystemBindDataVtbl
-    SetFileID*: proc(self: ptr IFileSystemBindData2, liFileID: LARGE_INTEGER): HRESULT {.stdcall.}
-    GetFileID*: proc(self: ptr IFileSystemBindData2, pliFileID: ptr LARGE_INTEGER): HRESULT {.stdcall.}
-    SetJunctionCLSID*: proc(self: ptr IFileSystemBindData2, clsid: REFCLSID): HRESULT {.stdcall.}
-    GetJunctionCLSID*: proc(self: ptr IFileSystemBindData2, pclsid: ptr CLSID): HRESULT {.stdcall.}
+    SetFileID*:
+      proc(self: ptr IFileSystemBindData2, liFileID: LARGE_INTEGER): HRESULT {.stdcall.}
+    GetFileID*: proc(
+      self: ptr IFileSystemBindData2, pliFileID: ptr LARGE_INTEGER
+    ): HRESULT {.stdcall.}
+    SetJunctionCLSID*:
+      proc(self: ptr IFileSystemBindData2, clsid: REFCLSID): HRESULT {.stdcall.}
+    GetJunctionCLSID*:
+      proc(self: ptr IFileSystemBindData2, pclsid: ptr CLSID): HRESULT {.stdcall.}
+
   ICustomDestinationList* {.pure.} = object
     lpVtbl*: ptr ICustomDestinationListVtbl
+
   ICustomDestinationListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetAppID*: proc(self: ptr ICustomDestinationList, pszAppID: LPCWSTR): HRESULT {.stdcall.}
-    BeginList*: proc(self: ptr ICustomDestinationList, pcMinSlots: ptr UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    AppendCategory*: proc(self: ptr ICustomDestinationList, pszCategory: LPCWSTR, poa: ptr IObjectArray): HRESULT {.stdcall.}
-    AppendKnownCategory*: proc(self: ptr ICustomDestinationList, category: KNOWNDESTCATEGORY): HRESULT {.stdcall.}
-    AddUserTasks*: proc(self: ptr ICustomDestinationList, poa: ptr IObjectArray): HRESULT {.stdcall.}
+    SetAppID*:
+      proc(self: ptr ICustomDestinationList, pszAppID: LPCWSTR): HRESULT {.stdcall.}
+    BeginList*: proc(
+      self: ptr ICustomDestinationList,
+      pcMinSlots: ptr UINT,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    AppendCategory*: proc(
+      self: ptr ICustomDestinationList, pszCategory: LPCWSTR, poa: ptr IObjectArray
+    ): HRESULT {.stdcall.}
+    AppendKnownCategory*: proc(
+      self: ptr ICustomDestinationList, category: KNOWNDESTCATEGORY
+    ): HRESULT {.stdcall.}
+    AddUserTasks*:
+      proc(self: ptr ICustomDestinationList, poa: ptr IObjectArray): HRESULT {.stdcall.}
     CommitList*: proc(self: ptr ICustomDestinationList): HRESULT {.stdcall.}
-    GetRemovedDestinations*: proc(self: ptr ICustomDestinationList, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    DeleteList*: proc(self: ptr ICustomDestinationList, pszAppID: LPCWSTR): HRESULT {.stdcall.}
+    GetRemovedDestinations*: proc(
+      self: ptr ICustomDestinationList, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    DeleteList*:
+      proc(self: ptr ICustomDestinationList, pszAppID: LPCWSTR): HRESULT {.stdcall.}
     AbortList*: proc(self: ptr ICustomDestinationList): HRESULT {.stdcall.}
+
   IApplicationDestinations* {.pure.} = object
     lpVtbl*: ptr IApplicationDestinationsVtbl
+
   IApplicationDestinationsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetAppID*: proc(self: ptr IApplicationDestinations, pszAppID: LPCWSTR): HRESULT {.stdcall.}
-    RemoveDestination*: proc(self: ptr IApplicationDestinations, punk: ptr IUnknown): HRESULT {.stdcall.}
-    RemoveAllDestinations*: proc(self: ptr IApplicationDestinations): HRESULT {.stdcall.}
+    SetAppID*:
+      proc(self: ptr IApplicationDestinations, pszAppID: LPCWSTR): HRESULT {.stdcall.}
+    RemoveDestination*:
+      proc(self: ptr IApplicationDestinations, punk: ptr IUnknown): HRESULT {.stdcall.}
+    RemoveAllDestinations*:
+      proc(self: ptr IApplicationDestinations): HRESULT {.stdcall.}
+
   IApplicationDocumentLists* {.pure.} = object
     lpVtbl*: ptr IApplicationDocumentListsVtbl
+
   IApplicationDocumentListsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetAppID*: proc(self: ptr IApplicationDocumentLists, pszAppID: LPCWSTR): HRESULT {.stdcall.}
-    GetList*: proc(self: ptr IApplicationDocumentLists, listtype: APPDOCLISTTYPE, cItemsDesired: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    SetAppID*:
+      proc(self: ptr IApplicationDocumentLists, pszAppID: LPCWSTR): HRESULT {.stdcall.}
+    GetList*: proc(
+      self: ptr IApplicationDocumentLists,
+      listtype: APPDOCLISTTYPE,
+      cItemsDesired: UINT,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+
   IObjectWithAppUserModelID* {.pure.} = object
     lpVtbl*: ptr IObjectWithAppUserModelIDVtbl
+
   IObjectWithAppUserModelIDVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetAppID*: proc(self: ptr IObjectWithAppUserModelID, pszAppID: LPCWSTR): HRESULT {.stdcall.}
-    GetAppID*: proc(self: ptr IObjectWithAppUserModelID, ppszAppID: ptr LPWSTR): HRESULT {.stdcall.}
+    SetAppID*:
+      proc(self: ptr IObjectWithAppUserModelID, pszAppID: LPCWSTR): HRESULT {.stdcall.}
+    GetAppID*: proc(self: ptr IObjectWithAppUserModelID, ppszAppID: ptr LPWSTR): HRESULT {.
+      stdcall
+    .}
+
   IObjectWithProgID* {.pure.} = object
     lpVtbl*: ptr IObjectWithProgIDVtbl
+
   IObjectWithProgIDVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetProgID*: proc(self: ptr IObjectWithProgID, pszProgID: LPCWSTR): HRESULT {.stdcall.}
-    GetProgID*: proc(self: ptr IObjectWithProgID, ppszProgID: ptr LPWSTR): HRESULT {.stdcall.}
+    SetProgID*:
+      proc(self: ptr IObjectWithProgID, pszProgID: LPCWSTR): HRESULT {.stdcall.}
+    GetProgID*:
+      proc(self: ptr IObjectWithProgID, ppszProgID: ptr LPWSTR): HRESULT {.stdcall.}
+
   IUpdateIDList* {.pure.} = object
     lpVtbl*: ptr IUpdateIDListVtbl
+
   IUpdateIDListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Update*: proc(self: ptr IUpdateIDList, pbc: ptr IBindCtx, pidlIn: PCUITEMID_CHILD, ppidlOut: ptr PITEMID_CHILD): HRESULT {.stdcall.}
+    Update*: proc(
+      self: ptr IUpdateIDList,
+      pbc: ptr IBindCtx,
+      pidlIn: PCUITEMID_CHILD,
+      ppidlOut: ptr PITEMID_CHILD,
+    ): HRESULT {.stdcall.}
+
   IDesktopGadget* {.pure.} = object
     lpVtbl*: ptr IDesktopGadgetVtbl
+
   IDesktopGadgetVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     RunGadget*: proc(self: ptr IDesktopGadget, gadgetPath: LPCWSTR): HRESULT {.stdcall.}
+
   IDesktopWallpaper* {.pure.} = object
     lpVtbl*: ptr IDesktopWallpaperVtbl
+
   IDesktopWallpaperVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetWallpaper*: proc(self: ptr IDesktopWallpaper, monitorID: LPCWSTR, wallpaper: LPCWSTR): HRESULT {.stdcall.}
-    GetWallpaper*: proc(self: ptr IDesktopWallpaper, monitorID: LPCWSTR, wallpaper: ptr LPWSTR): HRESULT {.stdcall.}
-    GetMonitorDevicePathAt*: proc(self: ptr IDesktopWallpaper, monitorIndex: UINT, monitorID: ptr LPWSTR): HRESULT {.stdcall.}
-    GetMonitorDevicePathCount*: proc(self: ptr IDesktopWallpaper, count: ptr UINT): HRESULT {.stdcall.}
-    GetMonitorRECT*: proc(self: ptr IDesktopWallpaper, monitorID: LPCWSTR, displayRect: ptr RECT): HRESULT {.stdcall.}
-    SetBackgroundColor*: proc(self: ptr IDesktopWallpaper, color: COLORREF): HRESULT {.stdcall.}
-    GetBackgroundColor*: proc(self: ptr IDesktopWallpaper, color: ptr COLORREF): HRESULT {.stdcall.}
-    SetPosition*: proc(self: ptr IDesktopWallpaper, position: DESKTOP_WALLPAPER_POSITION): HRESULT {.stdcall.}
-    GetPosition*: proc(self: ptr IDesktopWallpaper, position: ptr DESKTOP_WALLPAPER_POSITION): HRESULT {.stdcall.}
-    SetSlideshow*: proc(self: ptr IDesktopWallpaper, items: ptr IShellItemArray): HRESULT {.stdcall.}
-    GetSlideshow*: proc(self: ptr IDesktopWallpaper, items: ptr ptr IShellItemArray): HRESULT {.stdcall.}
-    SetSlideshowOptions*: proc(self: ptr IDesktopWallpaper, options: DESKTOP_SLIDESHOW_OPTIONS, slideshowTick: UINT): HRESULT {.stdcall.}
-    GetSlideshowOptions*: proc(self: ptr IDesktopWallpaper, options: ptr DESKTOP_SLIDESHOW_OPTIONS, slideshowTick: ptr UINT): HRESULT {.stdcall.}
-    AdvanceSlideshow*: proc(self: ptr IDesktopWallpaper, monitorID: LPCWSTR, direction: DESKTOP_SLIDESHOW_DIRECTION): HRESULT {.stdcall.}
-    GetStatus*: proc(self: ptr IDesktopWallpaper, state: ptr DESKTOP_SLIDESHOW_STATE): HRESULT {.stdcall.}
+    SetWallpaper*: proc(
+      self: ptr IDesktopWallpaper, monitorID: LPCWSTR, wallpaper: LPCWSTR
+    ): HRESULT {.stdcall.}
+    GetWallpaper*: proc(
+      self: ptr IDesktopWallpaper, monitorID: LPCWSTR, wallpaper: ptr LPWSTR
+    ): HRESULT {.stdcall.}
+    GetMonitorDevicePathAt*: proc(
+      self: ptr IDesktopWallpaper, monitorIndex: UINT, monitorID: ptr LPWSTR
+    ): HRESULT {.stdcall.}
+    GetMonitorDevicePathCount*:
+      proc(self: ptr IDesktopWallpaper, count: ptr UINT): HRESULT {.stdcall.}
+    GetMonitorRECT*: proc(
+      self: ptr IDesktopWallpaper, monitorID: LPCWSTR, displayRect: ptr RECT
+    ): HRESULT {.stdcall.}
+    SetBackgroundColor*:
+      proc(self: ptr IDesktopWallpaper, color: COLORREF): HRESULT {.stdcall.}
+    GetBackgroundColor*:
+      proc(self: ptr IDesktopWallpaper, color: ptr COLORREF): HRESULT {.stdcall.}
+    SetPosition*: proc(
+      self: ptr IDesktopWallpaper, position: DESKTOP_WALLPAPER_POSITION
+    ): HRESULT {.stdcall.}
+    GetPosition*: proc(
+      self: ptr IDesktopWallpaper, position: ptr DESKTOP_WALLPAPER_POSITION
+    ): HRESULT {.stdcall.}
+    SetSlideshow*:
+      proc(self: ptr IDesktopWallpaper, items: ptr IShellItemArray): HRESULT {.stdcall.}
+    GetSlideshow*: proc(
+      self: ptr IDesktopWallpaper, items: ptr ptr IShellItemArray
+    ): HRESULT {.stdcall.}
+    SetSlideshowOptions*: proc(
+      self: ptr IDesktopWallpaper,
+      options: DESKTOP_SLIDESHOW_OPTIONS,
+      slideshowTick: UINT,
+    ): HRESULT {.stdcall.}
+    GetSlideshowOptions*: proc(
+      self: ptr IDesktopWallpaper,
+      options: ptr DESKTOP_SLIDESHOW_OPTIONS,
+      slideshowTick: ptr UINT,
+    ): HRESULT {.stdcall.}
+    AdvanceSlideshow*: proc(
+      self: ptr IDesktopWallpaper,
+      monitorID: LPCWSTR,
+      direction: DESKTOP_SLIDESHOW_DIRECTION,
+    ): HRESULT {.stdcall.}
+    GetStatus*: proc(
+      self: ptr IDesktopWallpaper, state: ptr DESKTOP_SLIDESHOW_STATE
+    ): HRESULT {.stdcall.}
     Enable*: proc(self: ptr IDesktopWallpaper, enable: WINBOOL): HRESULT {.stdcall.}
+
   IHomeGroup* {.pure.} = object
     lpVtbl*: ptr IHomeGroupVtbl
+
   IHomeGroupVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     IsMember*: proc(self: ptr IHomeGroup, member: ptr WINBOOL): HRESULT {.stdcall.}
-    ShowSharingWizard*: proc(self: ptr IHomeGroup, owner: HWND, sharingchoices: ptr HOMEGROUPSHARINGCHOICES): HRESULT {.stdcall.}
+    ShowSharingWizard*: proc(
+      self: ptr IHomeGroup, owner: HWND, sharingchoices: ptr HOMEGROUPSHARINGCHOICES
+    ): HRESULT {.stdcall.}
+
   IInitializeWithPropertyStore* {.pure.} = object
     lpVtbl*: ptr IInitializeWithPropertyStoreVtbl
+
   IInitializeWithPropertyStoreVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IInitializeWithPropertyStore, pps: ptr IPropertyStore): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IInitializeWithPropertyStore, pps: ptr IPropertyStore
+    ): HRESULT {.stdcall.}
+
   IOpenSearchSource* {.pure.} = object
     lpVtbl*: ptr IOpenSearchSourceVtbl
+
   IOpenSearchSourceVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetResults*: proc(self: ptr IOpenSearchSource, hwnd: HWND, pszQuery: LPCWSTR, dwStartIndex: DWORD, dwCount: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    GetResults*: proc(
+      self: ptr IOpenSearchSource,
+      hwnd: HWND,
+      pszQuery: LPCWSTR,
+      dwStartIndex: DWORD,
+      dwCount: DWORD,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+
   IShellLibrary* {.pure.} = object
     lpVtbl*: ptr IShellLibraryVtbl
+
   IShellLibraryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    LoadLibraryFromItem*: proc(self: ptr IShellLibrary, psiLibrary: ptr IShellItem, grfMode: DWORD): HRESULT {.stdcall.}
-    LoadLibraryFromKnownFolder*: proc(self: ptr IShellLibrary, kfidLibrary: REFKNOWNFOLDERID, grfMode: DWORD): HRESULT {.stdcall.}
-    AddFolder*: proc(self: ptr IShellLibrary, psiLocation: ptr IShellItem): HRESULT {.stdcall.}
-    RemoveFolder*: proc(self: ptr IShellLibrary, psiLocation: ptr IShellItem): HRESULT {.stdcall.}
-    GetFolders*: proc(self: ptr IShellLibrary, lff: LIBRARYFOLDERFILTER, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    ResolveFolder*: proc(self: ptr IShellLibrary, psiFolderToResolve: ptr IShellItem, dwTimeout: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    GetDefaultSaveFolder*: proc(self: ptr IShellLibrary, dsft: DEFAULTSAVEFOLDERTYPE, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
-    SetDefaultSaveFolder*: proc(self: ptr IShellLibrary, dsft: DEFAULTSAVEFOLDERTYPE, psi: ptr IShellItem): HRESULT {.stdcall.}
-    GetOptions*: proc(self: ptr IShellLibrary, plofOptions: ptr LIBRARYOPTIONFLAGS): HRESULT {.stdcall.}
-    SetOptions*: proc(self: ptr IShellLibrary, lofMask: LIBRARYOPTIONFLAGS, lofOptions: LIBRARYOPTIONFLAGS): HRESULT {.stdcall.}
-    GetFolderType*: proc(self: ptr IShellLibrary, pftid: ptr FOLDERTYPEID): HRESULT {.stdcall.}
-    SetFolderType*: proc(self: ptr IShellLibrary, ftid: REFFOLDERTYPEID): HRESULT {.stdcall.}
+    LoadLibraryFromItem*: proc(
+      self: ptr IShellLibrary, psiLibrary: ptr IShellItem, grfMode: DWORD
+    ): HRESULT {.stdcall.}
+    LoadLibraryFromKnownFolder*: proc(
+      self: ptr IShellLibrary, kfidLibrary: REFKNOWNFOLDERID, grfMode: DWORD
+    ): HRESULT {.stdcall.}
+    AddFolder*:
+      proc(self: ptr IShellLibrary, psiLocation: ptr IShellItem): HRESULT {.stdcall.}
+    RemoveFolder*:
+      proc(self: ptr IShellLibrary, psiLocation: ptr IShellItem): HRESULT {.stdcall.}
+    GetFolders*: proc(
+      self: ptr IShellLibrary, lff: LIBRARYFOLDERFILTER, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+    ResolveFolder*: proc(
+      self: ptr IShellLibrary,
+      psiFolderToResolve: ptr IShellItem,
+      dwTimeout: DWORD,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetDefaultSaveFolder*: proc(
+      self: ptr IShellLibrary,
+      dsft: DEFAULTSAVEFOLDERTYPE,
+      riid: REFIID,
+      ppv: ptr pointer,
+    ): HRESULT {.stdcall.}
+    SetDefaultSaveFolder*: proc(
+      self: ptr IShellLibrary, dsft: DEFAULTSAVEFOLDERTYPE, psi: ptr IShellItem
+    ): HRESULT {.stdcall.}
+    GetOptions*: proc(
+      self: ptr IShellLibrary, plofOptions: ptr LIBRARYOPTIONFLAGS
+    ): HRESULT {.stdcall.}
+    SetOptions*: proc(
+      self: ptr IShellLibrary,
+      lofMask: LIBRARYOPTIONFLAGS,
+      lofOptions: LIBRARYOPTIONFLAGS,
+    ): HRESULT {.stdcall.}
+    GetFolderType*:
+      proc(self: ptr IShellLibrary, pftid: ptr FOLDERTYPEID): HRESULT {.stdcall.}
+    SetFolderType*:
+      proc(self: ptr IShellLibrary, ftid: REFFOLDERTYPEID): HRESULT {.stdcall.}
     GetIcon*: proc(self: ptr IShellLibrary, ppszIcon: ptr LPWSTR): HRESULT {.stdcall.}
     SetIcon*: proc(self: ptr IShellLibrary, pszIcon: LPCWSTR): HRESULT {.stdcall.}
     Commit*: proc(self: ptr IShellLibrary): HRESULT {.stdcall.}
-    Save*: proc(self: ptr IShellLibrary, psiFolderToSaveIn: ptr IShellItem, pszLibraryName: LPCWSTR, lsf: LIBRARYSAVEFLAGS, ppsiSavedTo: ptr ptr IShellItem): HRESULT {.stdcall.}
-    SaveInKnownFolder*: proc(self: ptr IShellLibrary, kfidToSaveIn: REFKNOWNFOLDERID, pszLibraryName: LPCWSTR, lsf: LIBRARYSAVEFLAGS, ppsiSavedTo: ptr ptr IShellItem): HRESULT {.stdcall.}
+    Save*: proc(
+      self: ptr IShellLibrary,
+      psiFolderToSaveIn: ptr IShellItem,
+      pszLibraryName: LPCWSTR,
+      lsf: LIBRARYSAVEFLAGS,
+      ppsiSavedTo: ptr ptr IShellItem,
+    ): HRESULT {.stdcall.}
+    SaveInKnownFolder*: proc(
+      self: ptr IShellLibrary,
+      kfidToSaveIn: REFKNOWNFOLDERID,
+      pszLibraryName: LPCWSTR,
+      lsf: LIBRARYSAVEFLAGS,
+      ppsiSavedTo: ptr ptr IShellItem,
+    ): HRESULT {.stdcall.}
+
   IPlaybackManagerEvents* {.pure.} = object
     lpVtbl*: ptr IPlaybackManagerEventsVtbl
+
   IPlaybackManagerEventsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnPlaybackManagerEvent*: proc(self: ptr IPlaybackManagerEvents, dwSessionId: DWORD, mediaEvent: PBM_EVENT): HRESULT {.stdcall.}
+    OnPlaybackManagerEvent*: proc(
+      self: ptr IPlaybackManagerEvents, dwSessionId: DWORD, mediaEvent: PBM_EVENT
+    ): HRESULT {.stdcall.}
+
   IPlaybackManager* {.pure.} = object
     lpVtbl*: ptr IPlaybackManagerVtbl
+
   IPlaybackManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Advise*: proc(self: ptr IPlaybackManager, `type`: PBM_SESSION_TYPE, pEvents: ptr IPlaybackManagerEvents, pdwSessionId: ptr DWORD): HRESULT {.stdcall.}
+    Advise*: proc(
+      self: ptr IPlaybackManager,
+      `type`: PBM_SESSION_TYPE,
+      pEvents: ptr IPlaybackManagerEvents,
+      pdwSessionId: ptr DWORD,
+    ): HRESULT {.stdcall.}
     Unadvise*: proc(self: ptr IPlaybackManager, dwSessionId: DWORD): HRESULT {.stdcall.}
-    ChangeSessionState*: proc(self: ptr IPlaybackManager, dwSessionId: DWORD, state: PBM_PLAY_STATE, mute: PBM_MUTE_STATE): HRESULT {.stdcall.}
+    ChangeSessionState*: proc(
+      self: ptr IPlaybackManager,
+      dwSessionId: DWORD,
+      state: PBM_PLAY_STATE,
+      mute: PBM_MUTE_STATE,
+    ): HRESULT {.stdcall.}
+
   IDefaultFolderMenuInitialize* {.pure.} = object
     lpVtbl*: ptr IDefaultFolderMenuInitializeVtbl
+
   IDefaultFolderMenuInitializeVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IDefaultFolderMenuInitialize, hwnd: HWND, pcmcb: ptr IContextMenuCB, pidlFolder: PCIDLIST_ABSOLUTE, psf: ptr IShellFolder, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, punkAssociation: ptr IUnknown, cKeys: UINT, aKeys: ptr HKEY): HRESULT {.stdcall.}
-    SetMenuRestrictions*: proc(self: ptr IDefaultFolderMenuInitialize, dfmrValues: DEFAULT_FOLDER_MENU_RESTRICTIONS): HRESULT {.stdcall.}
-    GetMenuRestrictions*: proc(self: ptr IDefaultFolderMenuInitialize, dfmrMask: DEFAULT_FOLDER_MENU_RESTRICTIONS, pdfmrValues: ptr DEFAULT_FOLDER_MENU_RESTRICTIONS): HRESULT {.stdcall.}
-    SetHandlerClsid*: proc(self: ptr IDefaultFolderMenuInitialize, rclsid: REFCLSID): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IDefaultFolderMenuInitialize,
+      hwnd: HWND,
+      pcmcb: ptr IContextMenuCB,
+      pidlFolder: PCIDLIST_ABSOLUTE,
+      psf: ptr IShellFolder,
+      cidl: UINT,
+      apidl: PCUITEMID_CHILD_ARRAY,
+      punkAssociation: ptr IUnknown,
+      cKeys: UINT,
+      aKeys: ptr HKEY,
+    ): HRESULT {.stdcall.}
+    SetMenuRestrictions*: proc(
+      self: ptr IDefaultFolderMenuInitialize,
+      dfmrValues: DEFAULT_FOLDER_MENU_RESTRICTIONS,
+    ): HRESULT {.stdcall.}
+    GetMenuRestrictions*: proc(
+      self: ptr IDefaultFolderMenuInitialize,
+      dfmrMask: DEFAULT_FOLDER_MENU_RESTRICTIONS,
+      pdfmrValues: ptr DEFAULT_FOLDER_MENU_RESTRICTIONS,
+    ): HRESULT {.stdcall.}
+    SetHandlerClsid*: proc(
+      self: ptr IDefaultFolderMenuInitialize, rclsid: REFCLSID
+    ): HRESULT {.stdcall.}
+
   IApplicationActivationManager* {.pure.} = object
     lpVtbl*: ptr IApplicationActivationManagerVtbl
+
   IApplicationActivationManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ActivateApplication*: proc(self: ptr IApplicationActivationManager, appUserModelId: LPCWSTR, arguments: LPCWSTR, options: ACTIVATEOPTIONS, processId: ptr DWORD): HRESULT {.stdcall.}
-    ActivateForFile*: proc(self: ptr IApplicationActivationManager, appUserModelId: LPCWSTR, itemArray: ptr IShellItemArray, verb: LPCWSTR, processId: ptr DWORD): HRESULT {.stdcall.}
-    ActivateForProtocol*: proc(self: ptr IApplicationActivationManager, appUserModelId: LPCWSTR, itemArray: ptr IShellItemArray, processId: ptr DWORD): HRESULT {.stdcall.}
+    ActivateApplication*: proc(
+      self: ptr IApplicationActivationManager,
+      appUserModelId: LPCWSTR,
+      arguments: LPCWSTR,
+      options: ACTIVATEOPTIONS,
+      processId: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    ActivateForFile*: proc(
+      self: ptr IApplicationActivationManager,
+      appUserModelId: LPCWSTR,
+      itemArray: ptr IShellItemArray,
+      verb: LPCWSTR,
+      processId: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    ActivateForProtocol*: proc(
+      self: ptr IApplicationActivationManager,
+      appUserModelId: LPCWSTR,
+      itemArray: ptr IShellItemArray,
+      processId: ptr DWORD,
+    ): HRESULT {.stdcall.}
+
   IAssocHandlerInvoker* {.pure.} = object
     lpVtbl*: ptr IAssocHandlerInvokerVtbl
+
   IAssocHandlerInvokerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SupportsSelection*: proc(self: ptr IAssocHandlerInvoker): HRESULT {.stdcall.}
     Invoke*: proc(self: ptr IAssocHandlerInvoker): HRESULT {.stdcall.}
+
   IAssocHandler* {.pure.} = object
     lpVtbl*: ptr IAssocHandlerVtbl
+
   IAssocHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetName*: proc(self: ptr IAssocHandler, ppsz: ptr LPWSTR): HRESULT {.stdcall.}
     GetUIName*: proc(self: ptr IAssocHandler, ppsz: ptr LPWSTR): HRESULT {.stdcall.}
-    GetIconLocation*: proc(self: ptr IAssocHandler, ppszPath: ptr LPWSTR, pIndex: ptr int32): HRESULT {.stdcall.}
+    GetIconLocation*: proc(
+      self: ptr IAssocHandler, ppszPath: ptr LPWSTR, pIndex: ptr int32
+    ): HRESULT {.stdcall.}
     IsRecommended*: proc(self: ptr IAssocHandler): HRESULT {.stdcall.}
-    MakeDefault*: proc(self: ptr IAssocHandler, pszDescription: LPCWSTR): HRESULT {.stdcall.}
+    MakeDefault*:
+      proc(self: ptr IAssocHandler, pszDescription: LPCWSTR): HRESULT {.stdcall.}
     Invoke*: proc(self: ptr IAssocHandler, pdo: ptr IDataObject): HRESULT {.stdcall.}
-    CreateInvoker*: proc(self: ptr IAssocHandler, pdo: ptr IDataObject, ppInvoker: ptr ptr IAssocHandlerInvoker): HRESULT {.stdcall.}
+    CreateInvoker*: proc(
+      self: ptr IAssocHandler,
+      pdo: ptr IDataObject,
+      ppInvoker: ptr ptr IAssocHandlerInvoker,
+    ): HRESULT {.stdcall.}
+
   IEnumAssocHandlers* {.pure.} = object
     lpVtbl*: ptr IEnumAssocHandlersVtbl
+
   IEnumAssocHandlersVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IEnumAssocHandlers, celt: ULONG, rgelt: ptr ptr IAssocHandler, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IEnumAssocHandlers,
+      celt: ULONG,
+      rgelt: ptr ptr IAssocHandler,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
+
   IDataObjectProvider* {.pure.} = object
     lpVtbl*: ptr IDataObjectProviderVtbl
+
   IDataObjectProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetDataObject*: proc(self: ptr IDataObjectProvider, dataObject: ptr ptr IDataObject): HRESULT {.stdcall.}
-    SetDataObject*: proc(self: ptr IDataObjectProvider, dataObject: ptr IDataObject): HRESULT {.stdcall.}
+    GetDataObject*: proc(
+      self: ptr IDataObjectProvider, dataObject: ptr ptr IDataObject
+    ): HRESULT {.stdcall.}
+    SetDataObject*: proc(
+      self: ptr IDataObjectProvider, dataObject: ptr IDataObject
+    ): HRESULT {.stdcall.}
+
   IDataTransferManagerInterop* {.pure.} = object
     lpVtbl*: ptr IDataTransferManagerInteropVtbl
+
   IDataTransferManagerInteropVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetForWindow*: proc(self: ptr IDataTransferManagerInterop, appWindow: HWND, riid: REFIID, dataTransferManager: ptr pointer): HRESULT {.stdcall.}
-    ShowShareUIForWindow*: proc(self: ptr IDataTransferManagerInterop, appWindow: HWND): HRESULT {.stdcall.}
+    GetForWindow*: proc(
+      self: ptr IDataTransferManagerInterop,
+      appWindow: HWND,
+      riid: REFIID,
+      dataTransferManager: ptr pointer,
+    ): HRESULT {.stdcall.}
+    ShowShareUIForWindow*:
+      proc(self: ptr IDataTransferManagerInterop, appWindow: HWND): HRESULT {.stdcall.}
+
   IFrameworkInputPaneHandler* {.pure.} = object
     lpVtbl*: ptr IFrameworkInputPaneHandlerVtbl
+
   IFrameworkInputPaneHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Showing*: proc(self: ptr IFrameworkInputPaneHandler, prcInputPaneScreenLocation: ptr RECT, fEnsureFocusedElementInView: WINBOOL): HRESULT {.stdcall.}
-    Hiding*: proc(self: ptr IFrameworkInputPaneHandler, fEnsureFocusedElementInView: WINBOOL): HRESULT {.stdcall.}
+    Showing*: proc(
+      self: ptr IFrameworkInputPaneHandler,
+      prcInputPaneScreenLocation: ptr RECT,
+      fEnsureFocusedElementInView: WINBOOL,
+    ): HRESULT {.stdcall.}
+    Hiding*: proc(
+      self: ptr IFrameworkInputPaneHandler, fEnsureFocusedElementInView: WINBOOL
+    ): HRESULT {.stdcall.}
+
   IFrameworkInputPane* {.pure.} = object
     lpVtbl*: ptr IFrameworkInputPaneVtbl
+
   IFrameworkInputPaneVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Advise*: proc(self: ptr IFrameworkInputPane, pWindow: ptr IUnknown, pHandler: ptr IFrameworkInputPaneHandler, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
-    AdviseWithHWND*: proc(self: ptr IFrameworkInputPane, hwnd: HWND, pHandler: ptr IFrameworkInputPaneHandler, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
+    Advise*: proc(
+      self: ptr IFrameworkInputPane,
+      pWindow: ptr IUnknown,
+      pHandler: ptr IFrameworkInputPaneHandler,
+      pdwCookie: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    AdviseWithHWND*: proc(
+      self: ptr IFrameworkInputPane,
+      hwnd: HWND,
+      pHandler: ptr IFrameworkInputPaneHandler,
+      pdwCookie: ptr DWORD,
+    ): HRESULT {.stdcall.}
     Unadvise*: proc(self: ptr IFrameworkInputPane, dwCookie: DWORD): HRESULT {.stdcall.}
-    Location*: proc(self: ptr IFrameworkInputPane, prcInputPaneScreenLocation: ptr RECT): HRESULT {.stdcall.}
+    Location*: proc(
+      self: ptr IFrameworkInputPane, prcInputPaneScreenLocation: ptr RECT
+    ): HRESULT {.stdcall.}
+
   ISearchableApplication* {.pure.} = object
     lpVtbl*: ptr ISearchableApplicationVtbl
+
   ISearchableApplicationVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSearchWindow*: proc(self: ptr ISearchableApplication, hwnd: ptr HWND): HRESULT {.stdcall.}
+    GetSearchWindow*:
+      proc(self: ptr ISearchableApplication, hwnd: ptr HWND): HRESULT {.stdcall.}
+
   IAccessibilityDockingServiceCallback* {.pure.} = object
     lpVtbl*: ptr IAccessibilityDockingServiceCallbackVtbl
+
   IAccessibilityDockingServiceCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Undocked*: proc(self: ptr IAccessibilityDockingServiceCallback, undockReason: UNDOCK_REASON): HRESULT {.stdcall.}
+    Undocked*: proc(
+      self: ptr IAccessibilityDockingServiceCallback, undockReason: UNDOCK_REASON
+    ): HRESULT {.stdcall.}
+
   IAccessibilityDockingService* {.pure.} = object
     lpVtbl*: ptr IAccessibilityDockingServiceVtbl
+
   IAccessibilityDockingServiceVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetAvailableSize*: proc(self: ptr IAccessibilityDockingService, hMonitor: HMONITOR, pcxFixed: ptr UINT, pcyMax: ptr UINT): HRESULT {.stdcall.}
-    DockWindow*: proc(self: ptr IAccessibilityDockingService, hwnd: HWND, hMonitor: HMONITOR, cyRequested: UINT, pCallback: ptr IAccessibilityDockingServiceCallback): HRESULT {.stdcall.}
-    UndockWindow*: proc(self: ptr IAccessibilityDockingService, hwnd: HWND): HRESULT {.stdcall.}
+    GetAvailableSize*: proc(
+      self: ptr IAccessibilityDockingService,
+      hMonitor: HMONITOR,
+      pcxFixed: ptr UINT,
+      pcyMax: ptr UINT,
+    ): HRESULT {.stdcall.}
+    DockWindow*: proc(
+      self: ptr IAccessibilityDockingService,
+      hwnd: HWND,
+      hMonitor: HMONITOR,
+      cyRequested: UINT,
+      pCallback: ptr IAccessibilityDockingServiceCallback,
+    ): HRESULT {.stdcall.}
+    UndockWindow*:
+      proc(self: ptr IAccessibilityDockingService, hwnd: HWND): HRESULT {.stdcall.}
+
   IAppVisibilityEvents* {.pure.} = object
     lpVtbl*: ptr IAppVisibilityEventsVtbl
+
   IAppVisibilityEventsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AppVisibilityOnMonitorChanged*: proc(self: ptr IAppVisibilityEvents, hMonitor: HMONITOR, previousMode: MONITOR_APP_VISIBILITY, currentMode: MONITOR_APP_VISIBILITY): HRESULT {.stdcall.}
-    LauncherVisibilityChange*: proc(self: ptr IAppVisibilityEvents, currentVisibleState: WINBOOL): HRESULT {.stdcall.}
+    AppVisibilityOnMonitorChanged*: proc(
+      self: ptr IAppVisibilityEvents,
+      hMonitor: HMONITOR,
+      previousMode: MONITOR_APP_VISIBILITY,
+      currentMode: MONITOR_APP_VISIBILITY,
+    ): HRESULT {.stdcall.}
+    LauncherVisibilityChange*: proc(
+      self: ptr IAppVisibilityEvents, currentVisibleState: WINBOOL
+    ): HRESULT {.stdcall.}
+
   IAppVisibility* {.pure.} = object
     lpVtbl*: ptr IAppVisibilityVtbl
+
   IAppVisibilityVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetAppVisibilityOnMonitor*: proc(self: ptr IAppVisibility, hMonitor: HMONITOR, pMode: ptr MONITOR_APP_VISIBILITY): HRESULT {.stdcall.}
-    IsLauncherVisible*: proc(self: ptr IAppVisibility, pfVisible: ptr WINBOOL): HRESULT {.stdcall.}
-    Advise*: proc(self: ptr IAppVisibility, pCallback: ptr IAppVisibilityEvents, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
+    GetAppVisibilityOnMonitor*: proc(
+      self: ptr IAppVisibility, hMonitor: HMONITOR, pMode: ptr MONITOR_APP_VISIBILITY
+    ): HRESULT {.stdcall.}
+    IsLauncherVisible*:
+      proc(self: ptr IAppVisibility, pfVisible: ptr WINBOOL): HRESULT {.stdcall.}
+    Advise*: proc(
+      self: ptr IAppVisibility,
+      pCallback: ptr IAppVisibilityEvents,
+      pdwCookie: ptr DWORD,
+    ): HRESULT {.stdcall.}
     Unadvise*: proc(self: ptr IAppVisibility, dwCookie: DWORD): HRESULT {.stdcall.}
+
   IPackageExecutionStateChangeNotification* {.pure.} = object
     lpVtbl*: ptr IPackageExecutionStateChangeNotificationVtbl
+
   IPackageExecutionStateChangeNotificationVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnStateChanged*: proc(self: ptr IPackageExecutionStateChangeNotification, pszPackageFullName: LPCWSTR, pesNewState: PACKAGE_EXECUTION_STATE): HRESULT {.stdcall.}
+    OnStateChanged*: proc(
+      self: ptr IPackageExecutionStateChangeNotification,
+      pszPackageFullName: LPCWSTR,
+      pesNewState: PACKAGE_EXECUTION_STATE,
+    ): HRESULT {.stdcall.}
+
   IPackageDebugSettings* {.pure.} = object
     lpVtbl*: ptr IPackageDebugSettingsVtbl
+
   IPackageDebugSettingsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    EnableDebugging*: proc(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR, debuggerCommandLine: LPCWSTR, environment: PZZWSTR): HRESULT {.stdcall.}
-    DisableDebugging*: proc(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.stdcall.}
-    Suspend*: proc(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.stdcall.}
-    Resume*: proc(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.stdcall.}
-    TerminateAllProcesses*: proc(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.stdcall.}
-    SetTargetSessionId*: proc(self: ptr IPackageDebugSettings, sessionId: ULONG): HRESULT {.stdcall.}
-    EnumerateBackgroundTasks*: proc(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR, taskCount: ptr ULONG, taskIds: ptr LPCGUID, taskNames: ptr ptr LPCWSTR): HRESULT {.stdcall.}
-    ActivateBackgroundTask*: proc(self: ptr IPackageDebugSettings, taskId: LPCGUID): HRESULT {.stdcall.}
-    StartServicing*: proc(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.stdcall.}
-    StopServicing*: proc(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.stdcall.}
-    StartSessionRedirection*: proc(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR, sessionId: ULONG): HRESULT {.stdcall.}
-    StopSessionRedirection*: proc(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.stdcall.}
-    GetPackageExecutionState*: proc(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR, packageExecutionState: ptr PACKAGE_EXECUTION_STATE): HRESULT {.stdcall.}
-    RegisterForPackageStateChanges*: proc(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR, pPackageExecutionStateChangeNotification: ptr IPackageExecutionStateChangeNotification, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
-    UnregisterForPackageStateChanges*: proc(self: ptr IPackageDebugSettings, dwCookie: DWORD): HRESULT {.stdcall.}
+    EnableDebugging*: proc(
+      self: ptr IPackageDebugSettings,
+      packageFullName: LPCWSTR,
+      debuggerCommandLine: LPCWSTR,
+      environment: PZZWSTR,
+    ): HRESULT {.stdcall.}
+    DisableDebugging*: proc(
+      self: ptr IPackageDebugSettings, packageFullName: LPCWSTR
+    ): HRESULT {.stdcall.}
+    Suspend*: proc(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.
+      stdcall
+    .}
+    Resume*: proc(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.
+      stdcall
+    .}
+    TerminateAllProcesses*: proc(
+      self: ptr IPackageDebugSettings, packageFullName: LPCWSTR
+    ): HRESULT {.stdcall.}
+    SetTargetSessionId*:
+      proc(self: ptr IPackageDebugSettings, sessionId: ULONG): HRESULT {.stdcall.}
+    EnumerateBackgroundTasks*: proc(
+      self: ptr IPackageDebugSettings,
+      packageFullName: LPCWSTR,
+      taskCount: ptr ULONG,
+      taskIds: ptr LPCGUID,
+      taskNames: ptr ptr LPCWSTR,
+    ): HRESULT {.stdcall.}
+    ActivateBackgroundTask*:
+      proc(self: ptr IPackageDebugSettings, taskId: LPCGUID): HRESULT {.stdcall.}
+    StartServicing*: proc(
+      self: ptr IPackageDebugSettings, packageFullName: LPCWSTR
+    ): HRESULT {.stdcall.}
+    StopServicing*: proc(
+      self: ptr IPackageDebugSettings, packageFullName: LPCWSTR
+    ): HRESULT {.stdcall.}
+    StartSessionRedirection*: proc(
+      self: ptr IPackageDebugSettings, packageFullName: LPCWSTR, sessionId: ULONG
+    ): HRESULT {.stdcall.}
+    StopSessionRedirection*: proc(
+      self: ptr IPackageDebugSettings, packageFullName: LPCWSTR
+    ): HRESULT {.stdcall.}
+    GetPackageExecutionState*: proc(
+      self: ptr IPackageDebugSettings,
+      packageFullName: LPCWSTR,
+      packageExecutionState: ptr PACKAGE_EXECUTION_STATE,
+    ): HRESULT {.stdcall.}
+    RegisterForPackageStateChanges*: proc(
+      self: ptr IPackageDebugSettings,
+      packageFullName: LPCWSTR,
+      pPackageExecutionStateChangeNotification:
+        ptr IPackageExecutionStateChangeNotification,
+      pdwCookie: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    UnregisterForPackageStateChanges*:
+      proc(self: ptr IPackageDebugSettings, dwCookie: DWORD): HRESULT {.stdcall.}
+
   IExecuteCommandApplicationHostEnvironment* {.pure.} = object
     lpVtbl*: ptr IExecuteCommandApplicationHostEnvironmentVtbl
+
   IExecuteCommandApplicationHostEnvironmentVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetValue*: proc(self: ptr IExecuteCommandApplicationHostEnvironment, pahe: ptr AHE_TYPE): HRESULT {.stdcall.}
+    GetValue*: proc(
+      self: ptr IExecuteCommandApplicationHostEnvironment, pahe: ptr AHE_TYPE
+    ): HRESULT {.stdcall.}
+
   IExecuteCommandHost* {.pure.} = object
     lpVtbl*: ptr IExecuteCommandHostVtbl
+
   IExecuteCommandHostVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetUIMode*: proc(self: ptr IExecuteCommandHost, pUIMode: ptr EC_HOST_UI_MODE): HRESULT {.stdcall.}
+    GetUIMode*: proc(
+      self: ptr IExecuteCommandHost, pUIMode: ptr EC_HOST_UI_MODE
+    ): HRESULT {.stdcall.}
+
   IApplicationDesignModeSettings* {.pure.} = object
     lpVtbl*: ptr IApplicationDesignModeSettingsVtbl
+
   IApplicationDesignModeSettingsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetNativeDisplaySize*: proc(self: ptr IApplicationDesignModeSettings, sizeNativeDisplay: SIZE): HRESULT {.stdcall.}
-    SetScaleFactor*: proc(self: ptr IApplicationDesignModeSettings, scaleFactor: DEVICE_SCALE_FACTOR): HRESULT {.stdcall.}
-    SetApplicationViewState*: proc(self: ptr IApplicationDesignModeSettings, viewState: APPLICATION_VIEW_STATE): HRESULT {.stdcall.}
-    ComputeApplicationSize*: proc(self: ptr IApplicationDesignModeSettings, psizeApplication: ptr SIZE): HRESULT {.stdcall.}
-    IsApplicationViewStateSupported*: proc(self: ptr IApplicationDesignModeSettings, viewState: APPLICATION_VIEW_STATE, sizeNativeDisplay: SIZE, scaleFactor: DEVICE_SCALE_FACTOR, pfSupported: ptr WINBOOL): HRESULT {.stdcall.}
-    TriggerEdgeGesture*: proc(self: ptr IApplicationDesignModeSettings, edgeGestureKind: EDGE_GESTURE_KIND): HRESULT {.stdcall.}
+    SetNativeDisplaySize*: proc(
+      self: ptr IApplicationDesignModeSettings, sizeNativeDisplay: SIZE
+    ): HRESULT {.stdcall.}
+    SetScaleFactor*: proc(
+      self: ptr IApplicationDesignModeSettings, scaleFactor: DEVICE_SCALE_FACTOR
+    ): HRESULT {.stdcall.}
+    SetApplicationViewState*: proc(
+      self: ptr IApplicationDesignModeSettings, viewState: APPLICATION_VIEW_STATE
+    ): HRESULT {.stdcall.}
+    ComputeApplicationSize*: proc(
+      self: ptr IApplicationDesignModeSettings, psizeApplication: ptr SIZE
+    ): HRESULT {.stdcall.}
+    IsApplicationViewStateSupported*: proc(
+      self: ptr IApplicationDesignModeSettings,
+      viewState: APPLICATION_VIEW_STATE,
+      sizeNativeDisplay: SIZE,
+      scaleFactor: DEVICE_SCALE_FACTOR,
+      pfSupported: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+    TriggerEdgeGesture*: proc(
+      self: ptr IApplicationDesignModeSettings, edgeGestureKind: EDGE_GESTURE_KIND
+    ): HRESULT {.stdcall.}
+
   IInitializeWithWindow* {.pure.} = object
     lpVtbl*: ptr IInitializeWithWindowVtbl
+
   IInitializeWithWindowVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Initialize*: proc(self: ptr IInitializeWithWindow, hwnd: HWND): HRESULT {.stdcall.}
+
   IHandlerInfo* {.pure.} = object
     lpVtbl*: ptr IHandlerInfoVtbl
+
   IHandlerInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetApplicationDisplayName*: proc(self: ptr IHandlerInfo, value: ptr LPWSTR): HRESULT {.stdcall.}
-    GetApplicationPublisher*: proc(self: ptr IHandlerInfo, value: ptr LPWSTR): HRESULT {.stdcall.}
-    GetApplicationIconReference*: proc(self: ptr IHandlerInfo, value: ptr LPWSTR): HRESULT {.stdcall.}
+    GetApplicationDisplayName*:
+      proc(self: ptr IHandlerInfo, value: ptr LPWSTR): HRESULT {.stdcall.}
+    GetApplicationPublisher*:
+      proc(self: ptr IHandlerInfo, value: ptr LPWSTR): HRESULT {.stdcall.}
+    GetApplicationIconReference*:
+      proc(self: ptr IHandlerInfo, value: ptr LPWSTR): HRESULT {.stdcall.}
+
   IHandlerActivationHost* {.pure.} = object
     lpVtbl*: ptr IHandlerActivationHostVtbl
+
   IHandlerActivationHostVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    BeforeCoCreateInstance*: proc(self: ptr IHandlerActivationHost, clsidHandler: REFCLSID, itemsBeingActivated: ptr IShellItemArray, handlerInfo: ptr IHandlerInfo): HRESULT {.stdcall.}
-    BeforeCreateProcess*: proc(self: ptr IHandlerActivationHost, applicationPath: LPCWSTR, commandLine: LPCWSTR, handlerInfo: ptr IHandlerInfo): HRESULT {.stdcall.}
+    BeforeCoCreateInstance*: proc(
+      self: ptr IHandlerActivationHost,
+      clsidHandler: REFCLSID,
+      itemsBeingActivated: ptr IShellItemArray,
+      handlerInfo: ptr IHandlerInfo,
+    ): HRESULT {.stdcall.}
+    BeforeCreateProcess*: proc(
+      self: ptr IHandlerActivationHost,
+      applicationPath: LPCWSTR,
+      commandLine: LPCWSTR,
+      handlerInfo: ptr IHandlerInfo,
+    ): HRESULT {.stdcall.}
+
   IShellIconOverlayIdentifier* {.pure.} = object
     lpVtbl*: ptr IShellIconOverlayIdentifierVtbl
+
   IShellIconOverlayIdentifierVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    IsMemberOf*: proc(self: ptr IShellIconOverlayIdentifier, pwszPath: PCWSTR, dwAttrib: DWORD): HRESULT {.stdcall.}
-    GetOverlayInfo*: proc(self: ptr IShellIconOverlayIdentifier, pwszIconFile: PWSTR, cchMax: int32, pIndex: ptr int32, pdwFlags: ptr DWORD): HRESULT {.stdcall.}
-    GetPriority*: proc(self: ptr IShellIconOverlayIdentifier, pIPriority: ptr int32): HRESULT {.stdcall.}
+    IsMemberOf*: proc(
+      self: ptr IShellIconOverlayIdentifier, pwszPath: PCWSTR, dwAttrib: DWORD
+    ): HRESULT {.stdcall.}
+    GetOverlayInfo*: proc(
+      self: ptr IShellIconOverlayIdentifier,
+      pwszIconFile: PWSTR,
+      cchMax: int32,
+      pIndex: ptr int32,
+      pdwFlags: ptr DWORD,
+    ): HRESULT {.stdcall.}
+    GetPriority*: proc(
+      self: ptr IShellIconOverlayIdentifier, pIPriority: ptr int32
+    ): HRESULT {.stdcall.}
+
   IShellIconOverlayManager* {.pure.} = object
     lpVtbl*: ptr IShellIconOverlayManagerVtbl
+
   IShellIconOverlayManagerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetFileOverlayInfo*: proc(self: ptr IShellIconOverlayManager, pwszPath: PCWSTR, dwAttrib: DWORD, pIndex: ptr int32, dwflags: DWORD): HRESULT {.stdcall.}
-    GetReservedOverlayInfo*: proc(self: ptr IShellIconOverlayManager, pwszPath: PCWSTR, dwAttrib: DWORD, pIndex: ptr int32, dwflags: DWORD, iReservedID: int32): HRESULT {.stdcall.}
-    RefreshOverlayImages*: proc(self: ptr IShellIconOverlayManager, dwFlags: DWORD): HRESULT {.stdcall.}
-    LoadNonloadedOverlayIdentifiers*: proc(self: ptr IShellIconOverlayManager): HRESULT {.stdcall.}
-    OverlayIndexFromImageIndex*: proc(self: ptr IShellIconOverlayManager, iImage: int32, piIndex: ptr int32, fAdd: WINBOOL): HRESULT {.stdcall.}
+    GetFileOverlayInfo*: proc(
+      self: ptr IShellIconOverlayManager,
+      pwszPath: PCWSTR,
+      dwAttrib: DWORD,
+      pIndex: ptr int32,
+      dwflags: DWORD,
+    ): HRESULT {.stdcall.}
+    GetReservedOverlayInfo*: proc(
+      self: ptr IShellIconOverlayManager,
+      pwszPath: PCWSTR,
+      dwAttrib: DWORD,
+      pIndex: ptr int32,
+      dwflags: DWORD,
+      iReservedID: int32,
+    ): HRESULT {.stdcall.}
+    RefreshOverlayImages*:
+      proc(self: ptr IShellIconOverlayManager, dwFlags: DWORD): HRESULT {.stdcall.}
+    LoadNonloadedOverlayIdentifiers*:
+      proc(self: ptr IShellIconOverlayManager): HRESULT {.stdcall.}
+    OverlayIndexFromImageIndex*: proc(
+      self: ptr IShellIconOverlayManager,
+      iImage: int32,
+      piIndex: ptr int32,
+      fAdd: WINBOOL,
+    ): HRESULT {.stdcall.}
+
   IShellIconOverlay* {.pure.} = object
     lpVtbl*: ptr IShellIconOverlayVtbl
+
   IShellIconOverlayVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetOverlayIndex*: proc(self: ptr IShellIconOverlay, pidl: PCUITEMID_CHILD, pIndex: ptr int32): HRESULT {.stdcall.}
-    GetOverlayIconIndex*: proc(self: ptr IShellIconOverlay, pidl: PCUITEMID_CHILD, pIconIndex: ptr int32): HRESULT {.stdcall.}
+    GetOverlayIndex*: proc(
+      self: ptr IShellIconOverlay, pidl: PCUITEMID_CHILD, pIndex: ptr int32
+    ): HRESULT {.stdcall.}
+    GetOverlayIconIndex*: proc(
+      self: ptr IShellIconOverlay, pidl: PCUITEMID_CHILD, pIconIndex: ptr int32
+    ): HRESULT {.stdcall.}
+
   IShellExecuteHookA* {.pure.} = object
     lpVtbl*: ptr IShellExecuteHookAVtbl
+
   IShellExecuteHookAVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Execute*: proc(self: ptr IShellExecuteHookA, pei: LPSHELLEXECUTEINFOA): HRESULT {.stdcall.}
+    Execute*:
+      proc(self: ptr IShellExecuteHookA, pei: LPSHELLEXECUTEINFOA): HRESULT {.stdcall.}
+
   IShellExecuteHookW* {.pure.} = object
     lpVtbl*: ptr IShellExecuteHookWVtbl
+
   IShellExecuteHookWVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Execute*: proc(self: ptr IShellExecuteHookW, pei: LPSHELLEXECUTEINFOW): HRESULT {.stdcall.}
+    Execute*:
+      proc(self: ptr IShellExecuteHookW, pei: LPSHELLEXECUTEINFOW): HRESULT {.stdcall.}
+
   IURLSearchHook* {.pure.} = object
     lpVtbl*: ptr IURLSearchHookVtbl
+
   IURLSearchHookVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Translate*: proc(self: ptr IURLSearchHook, pwszSearchURL: PWSTR, cchBufferSize: DWORD): HRESULT {.stdcall.}
+    Translate*: proc(
+      self: ptr IURLSearchHook, pwszSearchURL: PWSTR, cchBufferSize: DWORD
+    ): HRESULT {.stdcall.}
+
   ISearchContext* {.pure.} = object
     lpVtbl*: ptr ISearchContextVtbl
+
   ISearchContextVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSearchUrl*: proc(self: ptr ISearchContext, pbstrSearchUrl: ptr BSTR): HRESULT {.stdcall.}
-    GetSearchText*: proc(self: ptr ISearchContext, pbstrSearchText: ptr BSTR): HRESULT {.stdcall.}
-    GetSearchStyle*: proc(self: ptr ISearchContext, pdwSearchStyle: ptr DWORD): HRESULT {.stdcall.}
+    GetSearchUrl*:
+      proc(self: ptr ISearchContext, pbstrSearchUrl: ptr BSTR): HRESULT {.stdcall.}
+    GetSearchText*:
+      proc(self: ptr ISearchContext, pbstrSearchText: ptr BSTR): HRESULT {.stdcall.}
+    GetSearchStyle*:
+      proc(self: ptr ISearchContext, pdwSearchStyle: ptr DWORD): HRESULT {.stdcall.}
+
   IURLSearchHook2* {.pure.} = object
     lpVtbl*: ptr IURLSearchHook2Vtbl
+
   IURLSearchHook2Vtbl* {.pure, inheritable.} = object of IURLSearchHookVtbl
-    TranslateWithSearchContext*: proc(self: ptr IURLSearchHook2, pwszSearchURL: PWSTR, cchBufferSize: DWORD, pSearchContext: ptr ISearchContext): HRESULT {.stdcall.}
+    TranslateWithSearchContext*: proc(
+      self: ptr IURLSearchHook2,
+      pwszSearchURL: PWSTR,
+      cchBufferSize: DWORD,
+      pSearchContext: ptr ISearchContext,
+    ): HRESULT {.stdcall.}
+
   INewShortcutHookA* {.pure.} = object
     lpVtbl*: ptr INewShortcutHookAVtbl
+
   INewShortcutHookAVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetReferent*: proc(self: ptr INewShortcutHookA, pcszReferent: PCSTR, hwnd: HWND): HRESULT {.stdcall.}
-    GetReferent*: proc(self: ptr INewShortcutHookA, pszReferent: PSTR, cchReferent: int32): HRESULT {.stdcall.}
-    SetFolder*: proc(self: ptr INewShortcutHookA, pcszFolder: PCSTR): HRESULT {.stdcall.}
-    GetFolder*: proc(self: ptr INewShortcutHookA, pszFolder: PSTR, cchFolder: int32): HRESULT {.stdcall.}
-    GetName*: proc(self: ptr INewShortcutHookA, pszName: PSTR, cchName: int32): HRESULT {.stdcall.}
-    GetExtension*: proc(self: ptr INewShortcutHookA, pszExtension: PSTR, cchExtension: int32): HRESULT {.stdcall.}
+    SetReferent*: proc(
+      self: ptr INewShortcutHookA, pcszReferent: PCSTR, hwnd: HWND
+    ): HRESULT {.stdcall.}
+    GetReferent*: proc(
+      self: ptr INewShortcutHookA, pszReferent: PSTR, cchReferent: int32
+    ): HRESULT {.stdcall.}
+    SetFolder*:
+      proc(self: ptr INewShortcutHookA, pcszFolder: PCSTR): HRESULT {.stdcall.}
+    GetFolder*: proc(
+      self: ptr INewShortcutHookA, pszFolder: PSTR, cchFolder: int32
+    ): HRESULT {.stdcall.}
+    GetName*: proc(self: ptr INewShortcutHookA, pszName: PSTR, cchName: int32): HRESULT {.
+      stdcall
+    .}
+    GetExtension*: proc(
+      self: ptr INewShortcutHookA, pszExtension: PSTR, cchExtension: int32
+    ): HRESULT {.stdcall.}
+
   INewShortcutHookW* {.pure.} = object
     lpVtbl*: ptr INewShortcutHookWVtbl
+
   INewShortcutHookWVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetReferent*: proc(self: ptr INewShortcutHookW, pcszReferent: PCWSTR, hwnd: HWND): HRESULT {.stdcall.}
-    GetReferent*: proc(self: ptr INewShortcutHookW, pszReferent: PWSTR, cchReferent: int32): HRESULT {.stdcall.}
-    SetFolder*: proc(self: ptr INewShortcutHookW, pcszFolder: PCWSTR): HRESULT {.stdcall.}
-    GetFolder*: proc(self: ptr INewShortcutHookW, pszFolder: PWSTR, cchFolder: int32): HRESULT {.stdcall.}
-    GetName*: proc(self: ptr INewShortcutHookW, pszName: PWSTR, cchName: int32): HRESULT {.stdcall.}
-    GetExtension*: proc(self: ptr INewShortcutHookW, pszExtension: PWSTR, cchExtension: int32): HRESULT {.stdcall.}
+    SetReferent*: proc(
+      self: ptr INewShortcutHookW, pcszReferent: PCWSTR, hwnd: HWND
+    ): HRESULT {.stdcall.}
+    GetReferent*: proc(
+      self: ptr INewShortcutHookW, pszReferent: PWSTR, cchReferent: int32
+    ): HRESULT {.stdcall.}
+    SetFolder*:
+      proc(self: ptr INewShortcutHookW, pcszFolder: PCWSTR): HRESULT {.stdcall.}
+    GetFolder*: proc(
+      self: ptr INewShortcutHookW, pszFolder: PWSTR, cchFolder: int32
+    ): HRESULT {.stdcall.}
+    GetName*: proc(self: ptr INewShortcutHookW, pszName: PWSTR, cchName: int32): HRESULT {.
+      stdcall
+    .}
+    GetExtension*: proc(
+      self: ptr INewShortcutHookW, pszExtension: PWSTR, cchExtension: int32
+    ): HRESULT {.stdcall.}
+
   IShellDetails* {.pure.} = object
     lpVtbl*: ptr IShellDetailsVtbl
+
   IShellDetailsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetDetailsOf*: proc(self: ptr IShellDetails, pidl: PCUITEMID_CHILD, iColumn: UINT, pDetails: ptr SHELLDETAILS): HRESULT {.stdcall.}
+    GetDetailsOf*: proc(
+      self: ptr IShellDetails,
+      pidl: PCUITEMID_CHILD,
+      iColumn: UINT,
+      pDetails: ptr SHELLDETAILS,
+    ): HRESULT {.stdcall.}
     ColumnClick*: proc(self: ptr IShellDetails, iColumn: UINT): HRESULT {.stdcall.}
+
   IObjMgr* {.pure.} = object
     lpVtbl*: ptr IObjMgrVtbl
+
   IObjMgrVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Append*: proc(self: ptr IObjMgr, punk: ptr IUnknown): HRESULT {.stdcall.}
     Remove*: proc(self: ptr IObjMgr, punk: ptr IUnknown): HRESULT {.stdcall.}
+
   ICurrentWorkingDirectory* {.pure.} = object
     lpVtbl*: ptr ICurrentWorkingDirectoryVtbl
+
   ICurrentWorkingDirectoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetDirectory*: proc(self: ptr ICurrentWorkingDirectory, pwzPath: PWSTR, cchSize: DWORD): HRESULT {.stdcall.}
-    SetDirectory*: proc(self: ptr ICurrentWorkingDirectory, pwzPath: PCWSTR): HRESULT {.stdcall.}
+    GetDirectory*: proc(
+      self: ptr ICurrentWorkingDirectory, pwzPath: PWSTR, cchSize: DWORD
+    ): HRESULT {.stdcall.}
+    SetDirectory*:
+      proc(self: ptr ICurrentWorkingDirectory, pwzPath: PCWSTR): HRESULT {.stdcall.}
+
   IACList* {.pure.} = object
     lpVtbl*: ptr IACListVtbl
+
   IACListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Expand*: proc(self: ptr IACList, pszExpand: PCWSTR): HRESULT {.stdcall.}
+
   IACList2* {.pure.} = object
     lpVtbl*: ptr IACList2Vtbl
+
   IACList2Vtbl* {.pure, inheritable.} = object of IACListVtbl
     SetOptions*: proc(self: ptr IACList2, dwFlag: DWORD): HRESULT {.stdcall.}
     GetOptions*: proc(self: ptr IACList2, pdwFlag: ptr DWORD): HRESULT {.stdcall.}
+
   IProgressDialog* {.pure.} = object
     lpVtbl*: ptr IProgressDialogVtbl
+
   IProgressDialogVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    StartProgressDialog*: proc(self: ptr IProgressDialog, hwndParent: HWND, punkEnableModless: ptr IUnknown, dwFlags: DWORD, pvResevered: LPCVOID): HRESULT {.stdcall.}
+    StartProgressDialog*: proc(
+      self: ptr IProgressDialog,
+      hwndParent: HWND,
+      punkEnableModless: ptr IUnknown,
+      dwFlags: DWORD,
+      pvResevered: LPCVOID,
+    ): HRESULT {.stdcall.}
     StopProgressDialog*: proc(self: ptr IProgressDialog): HRESULT {.stdcall.}
     SetTitle*: proc(self: ptr IProgressDialog, pwzTitle: PCWSTR): HRESULT {.stdcall.}
-    SetAnimation*: proc(self: ptr IProgressDialog, hInstAnimation: HINSTANCE, idAnimation: UINT): HRESULT {.stdcall.}
+    SetAnimation*: proc(
+      self: ptr IProgressDialog, hInstAnimation: HINSTANCE, idAnimation: UINT
+    ): HRESULT {.stdcall.}
     HasUserCancelled*: proc(self: ptr IProgressDialog): WINBOOL {.stdcall.}
-    SetProgress*: proc(self: ptr IProgressDialog, dwCompleted: DWORD, dwTotal: DWORD): HRESULT {.stdcall.}
-    SetProgress64*: proc(self: ptr IProgressDialog, ullCompleted: ULONGLONG, ullTotal: ULONGLONG): HRESULT {.stdcall.}
-    SetLine*: proc(self: ptr IProgressDialog, dwLineNum: DWORD, pwzString: PCWSTR, fCompactPath: WINBOOL, pvResevered: LPCVOID): HRESULT {.stdcall.}
-    SetCancelMsg*: proc(self: ptr IProgressDialog, pwzCancelMsg: PCWSTR, pvResevered: LPCVOID): HRESULT {.stdcall.}
-    Timer*: proc(self: ptr IProgressDialog, dwTimerAction: DWORD, pvResevered: LPCVOID): HRESULT {.stdcall.}
+    SetProgress*: proc(
+      self: ptr IProgressDialog, dwCompleted: DWORD, dwTotal: DWORD
+    ): HRESULT {.stdcall.}
+    SetProgress64*: proc(
+      self: ptr IProgressDialog, ullCompleted: ULONGLONG, ullTotal: ULONGLONG
+    ): HRESULT {.stdcall.}
+    SetLine*: proc(
+      self: ptr IProgressDialog,
+      dwLineNum: DWORD,
+      pwzString: PCWSTR,
+      fCompactPath: WINBOOL,
+      pvResevered: LPCVOID,
+    ): HRESULT {.stdcall.}
+    SetCancelMsg*: proc(
+      self: ptr IProgressDialog, pwzCancelMsg: PCWSTR, pvResevered: LPCVOID
+    ): HRESULT {.stdcall.}
+    Timer*: proc(
+      self: ptr IProgressDialog, dwTimerAction: DWORD, pvResevered: LPCVOID
+    ): HRESULT {.stdcall.}
+
   IDockingWindowSite* {.pure.} = object
     lpVtbl*: ptr IDockingWindowSiteVtbl
+
   IDockingWindowSiteVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
-    GetBorderDW*: proc(self: ptr IDockingWindowSite, punkObj: ptr IUnknown, prcBorder: ptr RECT): HRESULT {.stdcall.}
-    RequestBorderSpaceDW*: proc(self: ptr IDockingWindowSite, punkObj: ptr IUnknown, pbw: LPCBORDERWIDTHS): HRESULT {.stdcall.}
-    SetBorderSpaceDW*: proc(self: ptr IDockingWindowSite, punkObj: ptr IUnknown, pbw: LPCBORDERWIDTHS): HRESULT {.stdcall.}
+    GetBorderDW*: proc(
+      self: ptr IDockingWindowSite, punkObj: ptr IUnknown, prcBorder: ptr RECT
+    ): HRESULT {.stdcall.}
+    RequestBorderSpaceDW*: proc(
+      self: ptr IDockingWindowSite, punkObj: ptr IUnknown, pbw: LPCBORDERWIDTHS
+    ): HRESULT {.stdcall.}
+    SetBorderSpaceDW*: proc(
+      self: ptr IDockingWindowSite, punkObj: ptr IUnknown, pbw: LPCBORDERWIDTHS
+    ): HRESULT {.stdcall.}
+
   IDockingWindowFrame* {.pure.} = object
     lpVtbl*: ptr IDockingWindowFrameVtbl
+
   IDockingWindowFrameVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
-    AddToolbar*: proc(self: ptr IDockingWindowFrame, punkSrc: ptr IUnknown, pwszItem: PCWSTR, dwAddFlags: DWORD): HRESULT {.stdcall.}
-    RemoveToolbar*: proc(self: ptr IDockingWindowFrame, punkSrc: ptr IUnknown, dwRemoveFlags: DWORD): HRESULT {.stdcall.}
-    FindToolbar*: proc(self: ptr IDockingWindowFrame, pwszItem: PCWSTR, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
+    AddToolbar*: proc(
+      self: ptr IDockingWindowFrame,
+      punkSrc: ptr IUnknown,
+      pwszItem: PCWSTR,
+      dwAddFlags: DWORD,
+    ): HRESULT {.stdcall.}
+    RemoveToolbar*: proc(
+      self: ptr IDockingWindowFrame, punkSrc: ptr IUnknown, dwRemoveFlags: DWORD
+    ): HRESULT {.stdcall.}
+    FindToolbar*: proc(
+      self: ptr IDockingWindowFrame, pwszItem: PCWSTR, riid: REFIID, ppv: ptr pointer
+    ): HRESULT {.stdcall.}
+
   IShellFolderBand* {.pure.} = object
     lpVtbl*: ptr IShellFolderBandVtbl
+
   IShellFolderBandVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    InitializeSFB*: proc(self: ptr IShellFolderBand, psf: ptr IShellFolder, pidl: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
-    SetBandInfoSFB*: proc(self: ptr IShellFolderBand, pbi: PBANDINFOSFB): HRESULT {.stdcall.}
-    GetBandInfoSFB*: proc(self: ptr IShellFolderBand, pbi: PBANDINFOSFB): HRESULT {.stdcall.}
+    InitializeSFB*: proc(
+      self: ptr IShellFolderBand, psf: ptr IShellFolder, pidl: PCIDLIST_ABSOLUTE
+    ): HRESULT {.stdcall.}
+    SetBandInfoSFB*:
+      proc(self: ptr IShellFolderBand, pbi: PBANDINFOSFB): HRESULT {.stdcall.}
+    GetBandInfoSFB*:
+      proc(self: ptr IShellFolderBand, pbi: PBANDINFOSFB): HRESULT {.stdcall.}
+
   IDeskBarClient* {.pure.} = object
     lpVtbl*: ptr IDeskBarClientVtbl
+
   IDeskBarClientVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
-    SetDeskBarSite*: proc(self: ptr IDeskBarClient, punkSite: ptr IUnknown): HRESULT {.stdcall.}
+    SetDeskBarSite*:
+      proc(self: ptr IDeskBarClient, punkSite: ptr IUnknown): HRESULT {.stdcall.}
     SetModeDBC*: proc(self: ptr IDeskBarClient, dwMode: DWORD): HRESULT {.stdcall.}
     UIActivateDBC*: proc(self: ptr IDeskBarClient, dwState: DWORD): HRESULT {.stdcall.}
-    GetSize*: proc(self: ptr IDeskBarClient, dwWhich: DWORD, prc: LPRECT): HRESULT {.stdcall.}
+    GetSize*:
+      proc(self: ptr IDeskBarClient, dwWhich: DWORD, prc: LPRECT): HRESULT {.stdcall.}
+
   IColumnProvider* {.pure.} = object
     lpVtbl*: ptr IColumnProviderVtbl
+
   IColumnProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IColumnProvider, psci: LPCSHCOLUMNINIT): HRESULT {.stdcall.}
-    GetColumnInfo*: proc(self: ptr IColumnProvider, dwIndex: DWORD, psci: ptr SHCOLUMNINFO): HRESULT {.stdcall.}
-    GetItemData*: proc(self: ptr IColumnProvider, pscid: LPCSHCOLUMNID, pscd: LPCSHCOLUMNDATA, pvarData: ptr VARIANT): HRESULT {.stdcall.}
+    Initialize*:
+      proc(self: ptr IColumnProvider, psci: LPCSHCOLUMNINIT): HRESULT {.stdcall.}
+    GetColumnInfo*: proc(
+      self: ptr IColumnProvider, dwIndex: DWORD, psci: ptr SHCOLUMNINFO
+    ): HRESULT {.stdcall.}
+    GetItemData*: proc(
+      self: ptr IColumnProvider,
+      pscid: LPCSHCOLUMNID,
+      pscd: LPCSHCOLUMNDATA,
+      pvarData: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+
   IShellChangeNotify* {.pure.} = object
     lpVtbl*: ptr IShellChangeNotifyVtbl
+
   IShellChangeNotifyVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnChange*: proc(self: ptr IShellChangeNotify, lEvent: LONG, pidl1: PCIDLIST_ABSOLUTE, pidl2: PCIDLIST_ABSOLUTE): HRESULT {.stdcall.}
+    OnChange*: proc(
+      self: ptr IShellChangeNotify,
+      lEvent: LONG,
+      pidl1: PCIDLIST_ABSOLUTE,
+      pidl2: PCIDLIST_ABSOLUTE,
+    ): HRESULT {.stdcall.}
+
   IQueryInfo* {.pure.} = object
     lpVtbl*: ptr IQueryInfoVtbl
+
   IQueryInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetInfoTip*: proc(self: ptr IQueryInfo, dwFlags: DWORD, ppwszTip: ptr PWSTR): HRESULT {.stdcall.}
+    GetInfoTip*: proc(
+      self: ptr IQueryInfo, dwFlags: DWORD, ppwszTip: ptr PWSTR
+    ): HRESULT {.stdcall.}
     GetInfoFlags*: proc(self: ptr IQueryInfo, pdwFlags: ptr DWORD): HRESULT {.stdcall.}
+
   IDefViewFrame* {.pure.} = object
     lpVtbl*: ptr IDefViewFrameVtbl
+
   IDefViewFrameVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetWindowLV*: proc(self: ptr IDefViewFrame, phwnd: ptr HWND): HRESULT {.stdcall.}
     ReleaseWindowLV*: proc(self: ptr IDefViewFrame): HRESULT {.stdcall.}
-    GetShellFolder*: proc(self: ptr IDefViewFrame, ppsf: ptr ptr IShellFolder): HRESULT {.stdcall.}
+    GetShellFolder*:
+      proc(self: ptr IDefViewFrame, ppsf: ptr ptr IShellFolder): HRESULT {.stdcall.}
+
   IDocViewSite* {.pure.} = object
     lpVtbl*: ptr IDocViewSiteVtbl
+
   IDocViewSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    OnSetTitle*: proc(self: ptr IDocViewSite, pvTitle: ptr VARIANTARG): HRESULT {.stdcall.}
+    OnSetTitle*:
+      proc(self: ptr IDocViewSite, pvTitle: ptr VARIANTARG): HRESULT {.stdcall.}
+
   IInitializeObject* {.pure.} = object
     lpVtbl*: ptr IInitializeObjectVtbl
+
   IInitializeObjectVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Initialize*: proc(self: ptr IInitializeObject): HRESULT {.stdcall.}
+
   IBanneredBar* {.pure.} = object
     lpVtbl*: ptr IBanneredBarVtbl
+
   IBanneredBarVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SetIconSize*: proc(self: ptr IBanneredBar, iIcon: DWORD): HRESULT {.stdcall.}
     GetIconSize*: proc(self: ptr IBanneredBar, piIcon: ptr DWORD): HRESULT {.stdcall.}
     SetBitmap*: proc(self: ptr IBanneredBar, hBitmap: HBITMAP): HRESULT {.stdcall.}
     GetBitmap*: proc(self: ptr IBanneredBar, phBitmap: ptr HBITMAP): HRESULT {.stdcall.}
+
   IShellFolderView* {.pure.} = object
     lpVtbl*: ptr IShellFolderViewVtbl
+
   IShellFolderViewVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Rearrange*: proc(self: ptr IShellFolderView, lParamSort: LPARAM): HRESULT {.stdcall.}
-    GetArrangeParam*: proc(self: ptr IShellFolderView, plParamSort: ptr LPARAM): HRESULT {.stdcall.}
+    Rearrange*:
+      proc(self: ptr IShellFolderView, lParamSort: LPARAM): HRESULT {.stdcall.}
+    GetArrangeParam*:
+      proc(self: ptr IShellFolderView, plParamSort: ptr LPARAM): HRESULT {.stdcall.}
     ArrangeGrid*: proc(self: ptr IShellFolderView): HRESULT {.stdcall.}
     AutoArrange*: proc(self: ptr IShellFolderView): HRESULT {.stdcall.}
     GetAutoArrange*: proc(self: ptr IShellFolderView): HRESULT {.stdcall.}
-    AddObject*: proc(self: ptr IShellFolderView, pidl: PUITEMID_CHILD, puItem: ptr UINT): HRESULT {.stdcall.}
-    GetObject*: proc(self: ptr IShellFolderView, ppidl: ptr PITEMID_CHILD, uItem: UINT): HRESULT {.stdcall.}
-    RemoveObject*: proc(self: ptr IShellFolderView, pidl: PUITEMID_CHILD, puItem: ptr UINT): HRESULT {.stdcall.}
-    GetObjectCount*: proc(self: ptr IShellFolderView, puCount: ptr UINT): HRESULT {.stdcall.}
-    SetObjectCount*: proc(self: ptr IShellFolderView, uCount: UINT, dwFlags: UINT): HRESULT {.stdcall.}
-    UpdateObject*: proc(self: ptr IShellFolderView, pidlOld: PUITEMID_CHILD, pidlNew: PUITEMID_CHILD, puItem: ptr UINT): HRESULT {.stdcall.}
-    RefreshObject*: proc(self: ptr IShellFolderView, pidl: PUITEMID_CHILD, puItem: ptr UINT): HRESULT {.stdcall.}
+    AddObject*: proc(
+      self: ptr IShellFolderView, pidl: PUITEMID_CHILD, puItem: ptr UINT
+    ): HRESULT {.stdcall.}
+    GetObject*: proc(
+      self: ptr IShellFolderView, ppidl: ptr PITEMID_CHILD, uItem: UINT
+    ): HRESULT {.stdcall.}
+    RemoveObject*: proc(
+      self: ptr IShellFolderView, pidl: PUITEMID_CHILD, puItem: ptr UINT
+    ): HRESULT {.stdcall.}
+    GetObjectCount*:
+      proc(self: ptr IShellFolderView, puCount: ptr UINT): HRESULT {.stdcall.}
+    SetObjectCount*:
+      proc(self: ptr IShellFolderView, uCount: UINT, dwFlags: UINT): HRESULT {.stdcall.}
+    UpdateObject*: proc(
+      self: ptr IShellFolderView,
+      pidlOld: PUITEMID_CHILD,
+      pidlNew: PUITEMID_CHILD,
+      puItem: ptr UINT,
+    ): HRESULT {.stdcall.}
+    RefreshObject*: proc(
+      self: ptr IShellFolderView, pidl: PUITEMID_CHILD, puItem: ptr UINT
+    ): HRESULT {.stdcall.}
     SetRedraw*: proc(self: ptr IShellFolderView, bRedraw: WINBOOL): HRESULT {.stdcall.}
-    GetSelectedCount*: proc(self: ptr IShellFolderView, puSelected: ptr UINT): HRESULT {.stdcall.}
-    GetSelectedObjects*: proc(self: ptr IShellFolderView, pppidl: ptr ptr PCUITEMID_CHILD, puItems: ptr UINT): HRESULT {.stdcall.}
-    IsDropOnSource*: proc(self: ptr IShellFolderView, pDropTarget: ptr IDropTarget): HRESULT {.stdcall.}
+    GetSelectedCount*:
+      proc(self: ptr IShellFolderView, puSelected: ptr UINT): HRESULT {.stdcall.}
+    GetSelectedObjects*: proc(
+      self: ptr IShellFolderView, pppidl: ptr ptr PCUITEMID_CHILD, puItems: ptr UINT
+    ): HRESULT {.stdcall.}
+    IsDropOnSource*: proc(
+      self: ptr IShellFolderView, pDropTarget: ptr IDropTarget
+    ): HRESULT {.stdcall.}
     GetDragPoint*: proc(self: ptr IShellFolderView, ppt: ptr POINT): HRESULT {.stdcall.}
     GetDropPoint*: proc(self: ptr IShellFolderView, ppt: ptr POINT): HRESULT {.stdcall.}
-    MoveIcons*: proc(self: ptr IShellFolderView, pDataObject: ptr IDataObject): HRESULT {.stdcall.}
-    SetItemPos*: proc(self: ptr IShellFolderView, pidl: PCUITEMID_CHILD, ppt: ptr POINT): HRESULT {.stdcall.}
-    IsBkDropTarget*: proc(self: ptr IShellFolderView, pDropTarget: ptr IDropTarget): HRESULT {.stdcall.}
+    MoveIcons*: proc(self: ptr IShellFolderView, pDataObject: ptr IDataObject): HRESULT {.
+      stdcall
+    .}
+    SetItemPos*: proc(
+      self: ptr IShellFolderView, pidl: PCUITEMID_CHILD, ppt: ptr POINT
+    ): HRESULT {.stdcall.}
+    IsBkDropTarget*: proc(
+      self: ptr IShellFolderView, pDropTarget: ptr IDropTarget
+    ): HRESULT {.stdcall.}
     SetClipboard*: proc(self: ptr IShellFolderView, bMove: WINBOOL): HRESULT {.stdcall.}
-    SetPoints*: proc(self: ptr IShellFolderView, pDataObject: ptr IDataObject): HRESULT {.stdcall.}
-    GetItemSpacing*: proc(self: ptr IShellFolderView, pSpacing: ptr ITEMSPACING): HRESULT {.stdcall.}
-    SetCallback*: proc(self: ptr IShellFolderView, pNewCB: ptr IShellFolderViewCB, ppOldCB: ptr ptr IShellFolderViewCB): HRESULT {.stdcall.}
+    SetPoints*: proc(self: ptr IShellFolderView, pDataObject: ptr IDataObject): HRESULT {.
+      stdcall
+    .}
+    GetItemSpacing*:
+      proc(self: ptr IShellFolderView, pSpacing: ptr ITEMSPACING): HRESULT {.stdcall.}
+    SetCallback*: proc(
+      self: ptr IShellFolderView,
+      pNewCB: ptr IShellFolderViewCB,
+      ppOldCB: ptr ptr IShellFolderViewCB,
+    ): HRESULT {.stdcall.}
     Select*: proc(self: ptr IShellFolderView, dwFlags: UINT): HRESULT {.stdcall.}
-    QuerySupport*: proc(self: ptr IShellFolderView, pdwSupport: ptr UINT): HRESULT {.stdcall.}
-    SetAutomationObject*: proc(self: ptr IShellFolderView, pdisp: ptr IDispatch): HRESULT {.stdcall.}
+    QuerySupport*:
+      proc(self: ptr IShellFolderView, pdwSupport: ptr UINT): HRESULT {.stdcall.}
+    SetAutomationObject*:
+      proc(self: ptr IShellFolderView, pdisp: ptr IDispatch): HRESULT {.stdcall.}
+
   INamedPropertyBag* {.pure.} = object
     lpVtbl*: ptr INamedPropertyBagVtbl
+
   INamedPropertyBagVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ReadPropertyNPB*: proc(self: ptr INamedPropertyBag, pszBagname: PCWSTR, pszPropName: PCWSTR, pVar: ptr PROPVARIANT): HRESULT {.stdcall.}
-    WritePropertyNPB*: proc(self: ptr INamedPropertyBag, pszBagname: PCWSTR, pszPropName: PCWSTR, pVar: ptr PROPVARIANT): HRESULT {.stdcall.}
-    RemovePropertyNPB*: proc(self: ptr INamedPropertyBag, pszBagname: PCWSTR, pszPropName: PCWSTR): HRESULT {.stdcall.}
-proc DragQueryFileA*(hDrop: HDROP, iFile: UINT, lpszFile: LPSTR, cch: UINT): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc DragQueryFileW*(hDrop: HDROP, iFile: UINT, lpszFile: LPWSTR, cch: UINT): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc DragQueryPoint*(hDrop: HDROP, ppt: ptr POINT): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+    ReadPropertyNPB*: proc(
+      self: ptr INamedPropertyBag,
+      pszBagname: PCWSTR,
+      pszPropName: PCWSTR,
+      pVar: ptr PROPVARIANT,
+    ): HRESULT {.stdcall.}
+    WritePropertyNPB*: proc(
+      self: ptr INamedPropertyBag,
+      pszBagname: PCWSTR,
+      pszPropName: PCWSTR,
+      pVar: ptr PROPVARIANT,
+    ): HRESULT {.stdcall.}
+    RemovePropertyNPB*: proc(
+      self: ptr INamedPropertyBag, pszBagname: PCWSTR, pszPropName: PCWSTR
+    ): HRESULT {.stdcall.}
+
+proc DragQueryFileA*(
+  hDrop: HDROP, iFile: UINT, lpszFile: LPSTR, cch: UINT
+): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc DragQueryFileW*(
+  hDrop: HDROP, iFile: UINT, lpszFile: LPWSTR, cch: UINT
+): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc DragQueryPoint*(
+  hDrop: HDROP, ppt: ptr POINT
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
 proc DragFinish*(hDrop: HDROP): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc DragAcceptFiles*(hWnd: HWND, fAccept: WINBOOL): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ShellExecuteA*(hwnd: HWND, lpOperation: LPCSTR, lpFile: LPCSTR, lpParameters: LPCSTR, lpDirectory: LPCSTR, nShowCmd: INT): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ShellExecuteW*(hwnd: HWND, lpOperation: LPCWSTR, lpFile: LPCWSTR, lpParameters: LPCWSTR, lpDirectory: LPCWSTR, nShowCmd: INT): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc FindExecutableA*(lpFile: LPCSTR, lpDirectory: LPCSTR, lpResult: LPSTR): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc FindExecutableW*(lpFile: LPCWSTR, lpDirectory: LPCWSTR, lpResult: LPWSTR): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc CommandLineToArgvW*(lpCmdLine: LPCWSTR, pNumArgs: ptr int32): ptr LPWSTR {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ShellAboutA*(hWnd: HWND, szApp: LPCSTR, szOtherStuff: LPCSTR, hIcon: HICON): INT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ShellAboutW*(hWnd: HWND, szApp: LPCWSTR, szOtherStuff: LPCWSTR, hIcon: HICON): INT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc DuplicateIcon*(hInst: HINSTANCE, hIcon: HICON): HICON {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ExtractAssociatedIconA*(hInst: HINSTANCE, pszIconPath: LPSTR, piIcon: ptr WORD): HICON {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ExtractAssociatedIconW*(hInst: HINSTANCE, pszIconPath: LPWSTR, piIcon: ptr WORD): HICON {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ExtractAssociatedIconExA*(hInst: HINSTANCE, pszIconPath: LPSTR, piIconIndex: ptr WORD, piIconId: ptr WORD): HICON {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ExtractAssociatedIconExW*(hInst: HINSTANCE, pszIconPath: LPWSTR, piIconIndex: ptr WORD, piIconId: ptr WORD): HICON {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ExtractIconA*(hInst: HINSTANCE, pszExeFileName: LPCSTR, nIconIndex: UINT): HICON {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ExtractIconW*(hInst: HINSTANCE, pszExeFileName: LPCWSTR, nIconIndex: UINT): HICON {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHAppBarMessage*(dwMessage: DWORD, pData: PAPPBARDATA): UINT_PTR {.winapi, stdcall, dynlib: "shell32", importc.}
-proc DoEnvironmentSubstA*(pszSrc: LPSTR, cchSrc: UINT): DWORD {.winapi, stdcall, dynlib: "shell32", importc.}
-proc DoEnvironmentSubstW*(pszSrc: LPWSTR, cchSrc: UINT): DWORD {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ExtractIconExA*(lpszFile: LPCSTR, nIconIndex: int32, phiconLarge: ptr HICON, phiconSmall: ptr HICON, nIcons: UINT): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ExtractIconExW*(lpszFile: LPCWSTR, nIconIndex: int32, phiconLarge: ptr HICON, phiconSmall: ptr HICON, nIcons: UINT): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHFileOperationA*(lpFileOp: LPSHFILEOPSTRUCTA): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHFileOperationW*(lpFileOp: LPSHFILEOPSTRUCTW): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHFreeNameMappings*(hNameMappings: HANDLE): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ShellExecuteExA*(pExecInfo: ptr SHELLEXECUTEINFOA): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ShellExecuteExW*(pExecInfo: ptr SHELLEXECUTEINFOW): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateProcessAsUserW*(pscpi: PSHCREATEPROCESSINFOW): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHEvaluateSystemCommandTemplate*(pszCmdTemplate: PCWSTR, ppszApplication: ptr PWSTR, ppszCommandLine: ptr PWSTR, ppszParameters: ptr PWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc AssocCreateForClasses*(rgClasses: ptr ASSOCIATIONELEMENT, cClasses: ULONG, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHQueryRecycleBinA*(pszRootPath: LPCSTR, pSHQueryRBInfo: LPSHQUERYRBINFO): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHQueryRecycleBinW*(pszRootPath: LPCWSTR, pSHQueryRBInfo: LPSHQUERYRBINFO): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHEmptyRecycleBinA*(hwnd: HWND, pszRootPath: LPCSTR, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHEmptyRecycleBinW*(hwnd: HWND, pszRootPath: LPCWSTR, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHQueryUserNotificationState*(pquns: ptr QUERY_USER_NOTIFICATION_STATE): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetPropertyStoreForWindow*(hwnd: HWND, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc Shell_NotifyIconA*(dwMessage: DWORD, lpData: PNOTIFYICONDATAA): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc Shell_NotifyIconW*(dwMessage: DWORD, lpData: PNOTIFYICONDATAW): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc Shell_NotifyIconGetRect*(identifier: ptr NOTIFYICONIDENTIFIER, iconLocation: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetFileInfoA*(pszPath: LPCSTR, dwFileAttributes: DWORD, psfi: ptr SHFILEINFOA, cbFileInfo: UINT, uFlags: UINT): DWORD_PTR {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetFileInfoW*(pszPath: LPCWSTR, dwFileAttributes: DWORD, psfi: ptr SHFILEINFOW, cbFileInfo: UINT, uFlags: UINT): DWORD_PTR {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetStockIconInfo*(siid: SHSTOCKICONID, uFlags: UINT, psii: ptr SHSTOCKICONINFO): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetDiskFreeSpaceExA*(pszDirectoryName: LPCSTR, pulFreeBytesAvailableToCaller: ptr ULARGE_INTEGER, pulTotalNumberOfBytes: ptr ULARGE_INTEGER, pulTotalNumberOfFreeBytes: ptr ULARGE_INTEGER): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetDiskFreeSpaceExW*(pszDirectoryName: LPCWSTR, pulFreeBytesAvailableToCaller: ptr ULARGE_INTEGER, pulTotalNumberOfBytes: ptr ULARGE_INTEGER, pulTotalNumberOfFreeBytes: ptr ULARGE_INTEGER): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetNewLinkInfoA*(pszLinkTo: LPCSTR, pszDir: LPCSTR, pszName: LPSTR, pfMustCopy: ptr WINBOOL, uFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetNewLinkInfoW*(pszLinkTo: LPCWSTR, pszDir: LPCWSTR, pszName: LPWSTR, pfMustCopy: ptr WINBOOL, uFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHInvokePrinterCommandA*(hwnd: HWND, uAction: UINT, lpBuf1: LPCSTR, lpBuf2: LPCSTR, fModal: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHInvokePrinterCommandW*(hwnd: HWND, uAction: UINT, lpBuf1: LPCWSTR, lpBuf2: LPCWSTR, fModal: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHLoadNonloadedIconOverlayIdentifiers*(): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHIsFileAvailableOffline*(pwszPath: PCWSTR, pdwStatus: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHSetLocalizedName*(pszPath: PCWSTR, pszResModule: PCWSTR, idsRes: int32): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHRemoveLocalizedName*(pszPath: PCWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetLocalizedName*(pszPath: PCWSTR, pszResModule: PWSTR, cch: UINT, pidsRes: ptr int32): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ShellMessageBoxA*(hAppInst: HINSTANCE, hWnd: HWND, lpcText: LPCSTR, lpcTitle: LPCSTR, fuStyle: UINT): int32 {.winapi, cdecl, varargs, dynlib: "shlwapi", importc.}
-proc ShellMessageBoxW*(hAppInst: HINSTANCE, hWnd: HWND, lpcText: LPCWSTR, lpcTitle: LPCWSTR, fuStyle: UINT): int32 {.winapi, cdecl, varargs, dynlib: "shlwapi", importc.}
-proc IsLFNDriveA*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc IsLFNDriveW*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHEnumerateUnreadMailAccountsW*(hKeyUser: HKEY, dwIndex: DWORD, pszMailAddress: LPWSTR, cchMailAddress: int32): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetUnreadMailCountW*(hKeyUser: HKEY, pszMailAddress: LPCWSTR, pdwCount: ptr DWORD, pFileTime: ptr FILETIME, pszShellExecuteCommand: LPWSTR, cchShellExecuteCommand: int32): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHSetUnreadMailCountW*(pszMailAddress: LPCWSTR, dwCount: DWORD, pszShellExecuteCommand: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHTestTokenMembership*(hToken: HANDLE, ulRID: ULONG): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetImageList*(iImageList: int32, riid: REFIID, ppvObj: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc InitNetworkAddressControl*(): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetDriveMedia*(pszDrive: PCWSTR, pdwMediaContent: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc StrChrA*(lpStart: LPCSTR, wMatch: WORD): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrChrW*(lpStart: LPCWSTR, wMatch: WCHAR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrChrIA*(lpStart: LPCSTR, wMatch: WORD): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrChrIW*(lpStart: LPCWSTR, wMatch: WCHAR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCmpNA*(lpStr1: LPCSTR, lpStr2: LPCSTR, nChar: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCmpNW*(lpStr1: LPCWSTR, lpStr2: LPCWSTR, nChar: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCmpNIA*(lpStr1: LPCSTR, lpStr2: LPCSTR, nChar: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCmpNIW*(lpStr1: LPCWSTR, lpStr2: LPCWSTR, nChar: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCSpnA*(lpStr: LPCSTR, lpSet: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCSpnW*(lpStr: LPCWSTR, lpSet: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCSpnIA*(lpStr: LPCSTR, lpSet: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCSpnIW*(lpStr: LPCWSTR, lpSet: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+proc DragAcceptFiles*(
+  hWnd: HWND, fAccept: WINBOOL
+): void {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ShellExecuteA*(
+  hwnd: HWND,
+  lpOperation: LPCSTR,
+  lpFile: LPCSTR,
+  lpParameters: LPCSTR,
+  lpDirectory: LPCSTR,
+  nShowCmd: INT,
+): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ShellExecuteW*(
+  hwnd: HWND,
+  lpOperation: LPCWSTR,
+  lpFile: LPCWSTR,
+  lpParameters: LPCWSTR,
+  lpDirectory: LPCWSTR,
+  nShowCmd: INT,
+): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc FindExecutableA*(
+  lpFile: LPCSTR, lpDirectory: LPCSTR, lpResult: LPSTR
+): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc FindExecutableW*(
+  lpFile: LPCWSTR, lpDirectory: LPCWSTR, lpResult: LPWSTR
+): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc CommandLineToArgvW*(
+  lpCmdLine: LPCWSTR, pNumArgs: ptr int32
+): ptr LPWSTR {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ShellAboutA*(
+  hWnd: HWND, szApp: LPCSTR, szOtherStuff: LPCSTR, hIcon: HICON
+): INT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ShellAboutW*(
+  hWnd: HWND, szApp: LPCWSTR, szOtherStuff: LPCWSTR, hIcon: HICON
+): INT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc DuplicateIcon*(
+  hInst: HINSTANCE, hIcon: HICON
+): HICON {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ExtractAssociatedIconA*(
+  hInst: HINSTANCE, pszIconPath: LPSTR, piIcon: ptr WORD
+): HICON {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ExtractAssociatedIconW*(
+  hInst: HINSTANCE, pszIconPath: LPWSTR, piIcon: ptr WORD
+): HICON {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ExtractAssociatedIconExA*(
+  hInst: HINSTANCE, pszIconPath: LPSTR, piIconIndex: ptr WORD, piIconId: ptr WORD
+): HICON {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ExtractAssociatedIconExW*(
+  hInst: HINSTANCE, pszIconPath: LPWSTR, piIconIndex: ptr WORD, piIconId: ptr WORD
+): HICON {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ExtractIconA*(
+  hInst: HINSTANCE, pszExeFileName: LPCSTR, nIconIndex: UINT
+): HICON {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ExtractIconW*(
+  hInst: HINSTANCE, pszExeFileName: LPCWSTR, nIconIndex: UINT
+): HICON {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHAppBarMessage*(
+  dwMessage: DWORD, pData: PAPPBARDATA
+): UINT_PTR {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc DoEnvironmentSubstA*(
+  pszSrc: LPSTR, cchSrc: UINT
+): DWORD {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc DoEnvironmentSubstW*(
+  pszSrc: LPWSTR, cchSrc: UINT
+): DWORD {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ExtractIconExA*(
+  lpszFile: LPCSTR,
+  nIconIndex: int32,
+  phiconLarge: ptr HICON,
+  phiconSmall: ptr HICON,
+  nIcons: UINT,
+): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ExtractIconExW*(
+  lpszFile: LPCWSTR,
+  nIconIndex: int32,
+  phiconLarge: ptr HICON,
+  phiconSmall: ptr HICON,
+  nIcons: UINT,
+): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHFileOperationA*(
+  lpFileOp: LPSHFILEOPSTRUCTA
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHFileOperationW*(
+  lpFileOp: LPSHFILEOPSTRUCTW
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHFreeNameMappings*(
+  hNameMappings: HANDLE
+): void {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ShellExecuteExA*(
+  pExecInfo: ptr SHELLEXECUTEINFOA
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ShellExecuteExW*(
+  pExecInfo: ptr SHELLEXECUTEINFOW
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateProcessAsUserW*(
+  pscpi: PSHCREATEPROCESSINFOW
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHEvaluateSystemCommandTemplate*(
+  pszCmdTemplate: PCWSTR,
+  ppszApplication: ptr PWSTR,
+  ppszCommandLine: ptr PWSTR,
+  ppszParameters: ptr PWSTR,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc AssocCreateForClasses*(
+  rgClasses: ptr ASSOCIATIONELEMENT, cClasses: ULONG, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHQueryRecycleBinA*(
+  pszRootPath: LPCSTR, pSHQueryRBInfo: LPSHQUERYRBINFO
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHQueryRecycleBinW*(
+  pszRootPath: LPCWSTR, pSHQueryRBInfo: LPSHQUERYRBINFO
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHEmptyRecycleBinA*(
+  hwnd: HWND, pszRootPath: LPCSTR, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHEmptyRecycleBinW*(
+  hwnd: HWND, pszRootPath: LPCWSTR, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHQueryUserNotificationState*(
+  pquns: ptr QUERY_USER_NOTIFICATION_STATE
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetPropertyStoreForWindow*(
+  hwnd: HWND, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc Shell_NotifyIconA*(
+  dwMessage: DWORD, lpData: PNOTIFYICONDATAA
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc Shell_NotifyIconW*(
+  dwMessage: DWORD, lpData: PNOTIFYICONDATAW
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc Shell_NotifyIconGetRect*(
+  identifier: ptr NOTIFYICONIDENTIFIER, iconLocation: ptr RECT
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetFileInfoA*(
+  pszPath: LPCSTR,
+  dwFileAttributes: DWORD,
+  psfi: ptr SHFILEINFOA,
+  cbFileInfo: UINT,
+  uFlags: UINT,
+): DWORD_PTR {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetFileInfoW*(
+  pszPath: LPCWSTR,
+  dwFileAttributes: DWORD,
+  psfi: ptr SHFILEINFOW,
+  cbFileInfo: UINT,
+  uFlags: UINT,
+): DWORD_PTR {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetStockIconInfo*(
+  siid: SHSTOCKICONID, uFlags: UINT, psii: ptr SHSTOCKICONINFO
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetDiskFreeSpaceExA*(
+  pszDirectoryName: LPCSTR,
+  pulFreeBytesAvailableToCaller: ptr ULARGE_INTEGER,
+  pulTotalNumberOfBytes: ptr ULARGE_INTEGER,
+  pulTotalNumberOfFreeBytes: ptr ULARGE_INTEGER,
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetDiskFreeSpaceExW*(
+  pszDirectoryName: LPCWSTR,
+  pulFreeBytesAvailableToCaller: ptr ULARGE_INTEGER,
+  pulTotalNumberOfBytes: ptr ULARGE_INTEGER,
+  pulTotalNumberOfFreeBytes: ptr ULARGE_INTEGER,
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetNewLinkInfoA*(
+  pszLinkTo: LPCSTR,
+  pszDir: LPCSTR,
+  pszName: LPSTR,
+  pfMustCopy: ptr WINBOOL,
+  uFlags: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetNewLinkInfoW*(
+  pszLinkTo: LPCWSTR,
+  pszDir: LPCWSTR,
+  pszName: LPWSTR,
+  pfMustCopy: ptr WINBOOL,
+  uFlags: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHInvokePrinterCommandA*(
+  hwnd: HWND, uAction: UINT, lpBuf1: LPCSTR, lpBuf2: LPCSTR, fModal: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHInvokePrinterCommandW*(
+  hwnd: HWND, uAction: UINT, lpBuf1: LPCWSTR, lpBuf2: LPCWSTR, fModal: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHLoadNonloadedIconOverlayIdentifiers*(): HRESULT {.
+  winapi, stdcall, dynlib: "shell32", importc
+.}
+
+proc SHIsFileAvailableOffline*(
+  pwszPath: PCWSTR, pdwStatus: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHSetLocalizedName*(
+  pszPath: PCWSTR, pszResModule: PCWSTR, idsRes: int32
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHRemoveLocalizedName*(
+  pszPath: PCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetLocalizedName*(
+  pszPath: PCWSTR, pszResModule: PWSTR, cch: UINT, pidsRes: ptr int32
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ShellMessageBoxA*(
+  hAppInst: HINSTANCE, hWnd: HWND, lpcText: LPCSTR, lpcTitle: LPCSTR, fuStyle: UINT
+): int32 {.winapi, cdecl, varargs, dynlib: "shlwapi", importc.}
+
+proc ShellMessageBoxW*(
+  hAppInst: HINSTANCE, hWnd: HWND, lpcText: LPCWSTR, lpcTitle: LPCWSTR, fuStyle: UINT
+): int32 {.winapi, cdecl, varargs, dynlib: "shlwapi", importc.}
+
+proc IsLFNDriveA*(
+  pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc IsLFNDriveW*(
+  pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHEnumerateUnreadMailAccountsW*(
+  hKeyUser: HKEY, dwIndex: DWORD, pszMailAddress: LPWSTR, cchMailAddress: int32
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetUnreadMailCountW*(
+  hKeyUser: HKEY,
+  pszMailAddress: LPCWSTR,
+  pdwCount: ptr DWORD,
+  pFileTime: ptr FILETIME,
+  pszShellExecuteCommand: LPWSTR,
+  cchShellExecuteCommand: int32,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHSetUnreadMailCountW*(
+  pszMailAddress: LPCWSTR, dwCount: DWORD, pszShellExecuteCommand: LPCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHTestTokenMembership*(
+  hToken: HANDLE, ulRID: ULONG
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetImageList*(
+  iImageList: int32, riid: REFIID, ppvObj: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc InitNetworkAddressControl*(): WINBOOL {.
+  winapi, stdcall, dynlib: "shell32", importc
+.}
+
+proc SHGetDriveMedia*(
+  pszDrive: PCWSTR, pdwMediaContent: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc StrChrA*(
+  lpStart: LPCSTR, wMatch: WORD
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrChrW*(
+  lpStart: LPCWSTR, wMatch: WCHAR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrChrIA*(
+  lpStart: LPCSTR, wMatch: WORD
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrChrIW*(
+  lpStart: LPCWSTR, wMatch: WCHAR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCmpNA*(
+  lpStr1: LPCSTR, lpStr2: LPCSTR, nChar: int32
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCmpNW*(
+  lpStr1: LPCWSTR, lpStr2: LPCWSTR, nChar: int32
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCmpNIA*(
+  lpStr1: LPCSTR, lpStr2: LPCSTR, nChar: int32
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCmpNIW*(
+  lpStr1: LPCWSTR, lpStr2: LPCWSTR, nChar: int32
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCSpnA*(
+  lpStr: LPCSTR, lpSet: LPCSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCSpnW*(
+  lpStr: LPCWSTR, lpSet: LPCWSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCSpnIA*(
+  lpStr: LPCSTR, lpSet: LPCSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCSpnIW*(
+  lpStr: LPCWSTR, lpSet: LPCWSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
 proc StrDupA*(lpSrch: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
 proc StrDupW*(lpSrch: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrFormatByteSizeA*(dw: DWORD, szBuf: LPSTR, uiBufSize: UINT): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrFormatByteSize64A*(qdw: LONGLONG, szBuf: LPSTR, uiBufSize: UINT): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrFormatByteSizeW*(qdw: LONGLONG, szBuf: LPWSTR, uiBufSize: UINT): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrFormatKBSizeW*(qdw: LONGLONG, szBuf: LPWSTR, uiBufSize: UINT): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrFormatKBSizeA*(qdw: LONGLONG, szBuf: LPSTR, uiBufSize: UINT): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrFromTimeIntervalA*(pszOut: LPSTR, cchMax: UINT, dwTimeMS: DWORD, digits: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrFromTimeIntervalW*(pszOut: LPWSTR, cchMax: UINT, dwTimeMS: DWORD, digits: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrIsIntlEqualA*(fCaseSens: WINBOOL, lpString1: LPCSTR, lpString2: LPCSTR, nChar: int32): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrIsIntlEqualW*(fCaseSens: WINBOOL, lpString1: LPCWSTR, lpString2: LPCWSTR, nChar: int32): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrNCatA*(psz1: LPSTR, psz2: LPCSTR, cchMax: int32): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrNCatW*(psz1: LPWSTR, psz2: LPCWSTR, cchMax: int32): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrPBrkA*(psz: LPCSTR, pszSet: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrPBrkW*(psz: LPCWSTR, pszSet: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrRChrA*(lpStart: LPCSTR, lpEnd: LPCSTR, wMatch: WORD): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrRChrW*(lpStart: LPCWSTR, lpEnd: LPCWSTR, wMatch: WCHAR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrRChrIA*(lpStart: LPCSTR, lpEnd: LPCSTR, wMatch: WORD): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrRChrIW*(lpStart: LPCWSTR, lpEnd: LPCWSTR, wMatch: WCHAR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrRStrIA*(lpSource: LPCSTR, lpLast: LPCSTR, lpSrch: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrRStrIW*(lpSource: LPCWSTR, lpLast: LPCWSTR, lpSrch: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrSpnA*(psz: LPCSTR, pszSet: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrSpnW*(psz: LPCWSTR, pszSet: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrStrA*(lpFirst: LPCSTR, lpSrch: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrStrW*(lpFirst: LPCWSTR, lpSrch: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrStrIA*(lpFirst: LPCSTR, lpSrch: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrStrIW*(lpFirst: LPCWSTR, lpSrch: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+proc StrFormatByteSizeA*(
+  dw: DWORD, szBuf: LPSTR, uiBufSize: UINT
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrFormatByteSize64A*(
+  qdw: LONGLONG, szBuf: LPSTR, uiBufSize: UINT
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrFormatByteSizeW*(
+  qdw: LONGLONG, szBuf: LPWSTR, uiBufSize: UINT
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrFormatKBSizeW*(
+  qdw: LONGLONG, szBuf: LPWSTR, uiBufSize: UINT
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrFormatKBSizeA*(
+  qdw: LONGLONG, szBuf: LPSTR, uiBufSize: UINT
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrFromTimeIntervalA*(
+  pszOut: LPSTR, cchMax: UINT, dwTimeMS: DWORD, digits: int32
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrFromTimeIntervalW*(
+  pszOut: LPWSTR, cchMax: UINT, dwTimeMS: DWORD, digits: int32
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrIsIntlEqualA*(
+  fCaseSens: WINBOOL, lpString1: LPCSTR, lpString2: LPCSTR, nChar: int32
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrIsIntlEqualW*(
+  fCaseSens: WINBOOL, lpString1: LPCWSTR, lpString2: LPCWSTR, nChar: int32
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrNCatA*(
+  psz1: LPSTR, psz2: LPCSTR, cchMax: int32
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrNCatW*(
+  psz1: LPWSTR, psz2: LPCWSTR, cchMax: int32
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrPBrkA*(
+  psz: LPCSTR, pszSet: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrPBrkW*(
+  psz: LPCWSTR, pszSet: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrRChrA*(
+  lpStart: LPCSTR, lpEnd: LPCSTR, wMatch: WORD
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrRChrW*(
+  lpStart: LPCWSTR, lpEnd: LPCWSTR, wMatch: WCHAR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrRChrIA*(
+  lpStart: LPCSTR, lpEnd: LPCSTR, wMatch: WORD
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrRChrIW*(
+  lpStart: LPCWSTR, lpEnd: LPCWSTR, wMatch: WCHAR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrRStrIA*(
+  lpSource: LPCSTR, lpLast: LPCSTR, lpSrch: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrRStrIW*(
+  lpSource: LPCWSTR, lpLast: LPCWSTR, lpSrch: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrSpnA*(
+  psz: LPCSTR, pszSet: LPCSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrSpnW*(
+  psz: LPCWSTR, pszSet: LPCWSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrStrA*(
+  lpFirst: LPCSTR, lpSrch: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrStrW*(
+  lpFirst: LPCWSTR, lpSrch: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrStrIA*(
+  lpFirst: LPCSTR, lpSrch: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrStrIW*(
+  lpFirst: LPCWSTR, lpSrch: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
 proc StrToIntA*(lpSrc: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
 proc StrToIntW*(lpSrc: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrToIntExA*(pszString: LPCSTR, dwFlags: DWORD, piRet: ptr int32): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrToIntExW*(pszString: LPCWSTR, dwFlags: DWORD, piRet: ptr int32): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrToInt64ExA*(pszString: LPCSTR, dwFlags: DWORD, pllRet: ptr LONGLONG): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrToInt64ExW*(pszString: LPCWSTR, dwFlags: DWORD, pllRet: ptr LONGLONG): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrTrimA*(psz: LPSTR, pszTrimChars: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrTrimW*(psz: LPWSTR, pszTrimChars: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCatW*(psz1: LPWSTR, psz2: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCmpW*(psz1: LPCWSTR, psz2: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCmpIW*(psz1: LPCWSTR, psz2: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCpyW*(psz1: LPWSTR, psz2: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCpyNW*(psz1: LPWSTR, psz2: LPCWSTR, cchMax: int32): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCatBuffW*(pszDest: LPWSTR, pszSrc: LPCWSTR, cchDestBuffSize: int32): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCatBuffA*(pszDest: LPSTR, pszSrc: LPCSTR, cchDestBuffSize: int32): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc ChrCmpIA*(w1: WORD, w2: WORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc ChrCmpIW*(w1: WCHAR, w2: WCHAR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc wvnsprintfA*(lpOut: LPSTR, cchLimitIn: int32, lpFmt: LPCSTR, arglist: va_list): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc wvnsprintfW*(lpOut: LPWSTR, cchLimitIn: int32, lpFmt: LPCWSTR, arglist: va_list): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc wnsprintfA*(lpOut: LPSTR, cchLimitIn: int32, lpFmt: LPCSTR): int32 {.winapi, cdecl, varargs, dynlib: "shlwapi", importc.}
-proc wnsprintfW*(lpOut: LPWSTR, cchLimitIn: int32, lpFmt: LPCWSTR): int32 {.winapi, cdecl, varargs, dynlib: "shlwapi", importc.}
-proc StrRetToStrA*(pstr: ptr STRRET, pidl: LPCITEMIDLIST, ppsz: ptr LPSTR): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrRetToStrW*(pstr: ptr STRRET, pidl: LPCITEMIDLIST, ppsz: ptr LPWSTR): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrRetToBufA*(pstr: ptr STRRET, pidl: LPCITEMIDLIST, pszBuf: LPSTR, cchBuf: UINT): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrRetToBufW*(pstr: ptr STRRET, pidl: LPCITEMIDLIST, pszBuf: LPWSTR, cchBuf: UINT): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrRetToBSTR*(pstr: ptr STRRET, pidl: LPCITEMIDLIST, pbstr: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHStrDupA*(psz: LPCSTR, ppwsz: ptr ptr WCHAR): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHStrDupW*(psz: LPCWSTR, ppwsz: ptr ptr WCHAR): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCmpLogicalW*(psz1: LPCWSTR, psz2: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCatChainW*(pszDst: LPWSTR, cchDst: DWORD, ichAt: DWORD, pszSrc: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHLoadIndirectString*(pszSource: LPCWSTR, pszOutBuf: LPWSTR, cchOutBuf: UINT, ppvReserved: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+proc StrToIntExA*(
+  pszString: LPCSTR, dwFlags: DWORD, piRet: ptr int32
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrToIntExW*(
+  pszString: LPCWSTR, dwFlags: DWORD, piRet: ptr int32
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrToInt64ExA*(
+  pszString: LPCSTR, dwFlags: DWORD, pllRet: ptr LONGLONG
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrToInt64ExW*(
+  pszString: LPCWSTR, dwFlags: DWORD, pllRet: ptr LONGLONG
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrTrimA*(
+  psz: LPSTR, pszTrimChars: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrTrimW*(
+  psz: LPWSTR, pszTrimChars: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCatW*(
+  psz1: LPWSTR, psz2: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCmpW*(
+  psz1: LPCWSTR, psz2: LPCWSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCmpIW*(
+  psz1: LPCWSTR, psz2: LPCWSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCpyW*(
+  psz1: LPWSTR, psz2: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCpyNW*(
+  psz1: LPWSTR, psz2: LPCWSTR, cchMax: int32
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCatBuffW*(
+  pszDest: LPWSTR, pszSrc: LPCWSTR, cchDestBuffSize: int32
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCatBuffA*(
+  pszDest: LPSTR, pszSrc: LPCSTR, cchDestBuffSize: int32
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc ChrCmpIA*(
+  w1: WORD, w2: WORD
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc ChrCmpIW*(
+  w1: WCHAR, w2: WCHAR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc wvnsprintfA*(
+  lpOut: LPSTR, cchLimitIn: int32, lpFmt: LPCSTR, arglist: va_list
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc wvnsprintfW*(
+  lpOut: LPWSTR, cchLimitIn: int32, lpFmt: LPCWSTR, arglist: va_list
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc wnsprintfA*(
+  lpOut: LPSTR, cchLimitIn: int32, lpFmt: LPCSTR
+): int32 {.winapi, cdecl, varargs, dynlib: "shlwapi", importc.}
+
+proc wnsprintfW*(
+  lpOut: LPWSTR, cchLimitIn: int32, lpFmt: LPCWSTR
+): int32 {.winapi, cdecl, varargs, dynlib: "shlwapi", importc.}
+
+proc StrRetToStrA*(
+  pstr: ptr STRRET, pidl: LPCITEMIDLIST, ppsz: ptr LPSTR
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrRetToStrW*(
+  pstr: ptr STRRET, pidl: LPCITEMIDLIST, ppsz: ptr LPWSTR
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrRetToBufA*(
+  pstr: ptr STRRET, pidl: LPCITEMIDLIST, pszBuf: LPSTR, cchBuf: UINT
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrRetToBufW*(
+  pstr: ptr STRRET, pidl: LPCITEMIDLIST, pszBuf: LPWSTR, cchBuf: UINT
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrRetToBSTR*(
+  pstr: ptr STRRET, pidl: LPCITEMIDLIST, pbstr: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHStrDupA*(
+  psz: LPCSTR, ppwsz: ptr ptr WCHAR
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHStrDupW*(
+  psz: LPCWSTR, ppwsz: ptr ptr WCHAR
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCmpLogicalW*(
+  psz1: LPCWSTR, psz2: LPCWSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCatChainW*(
+  pszDst: LPWSTR, cchDst: DWORD, ichAt: DWORD, pszSrc: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHLoadIndirectString*(
+  pszSource: LPCWSTR, pszOutBuf: LPWSTR, cchOutBuf: UINT, ppvReserved: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
 proc IsCharSpaceA*(wch: CHAR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
 proc IsCharSpaceW*(wch: WCHAR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCmpCA*(pszStr1: LPCSTR, pszStr2: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCmpCW*(pszStr1: LPCWSTR, pszStr2: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCmpICA*(pszStr1: LPCSTR, pszStr2: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc StrCmpICW*(pszStr1: LPCWSTR, pszStr2: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc IntlStrEqWorkerA*(fCaseSens: WINBOOL, lpString1: LPCSTR, lpString2: LPCSTR, nChar: int32): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc IntlStrEqWorkerW*(fCaseSens: WINBOOL, lpString1: LPCWSTR, lpString2: LPCWSTR, nChar: int32): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathAddBackslashA*(pszPath: LPSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathAddBackslashW*(pszPath: LPWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathAddExtensionA*(pszPath: LPSTR, pszExt: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathAddExtensionW*(pszPath: LPWSTR, pszExt: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathAppendA*(pszPath: LPSTR, pMore: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathAppendW*(pszPath: LPWSTR, pMore: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathBuildRootA*(pszRoot: LPSTR, iDrive: int32): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathBuildRootW*(pszRoot: LPWSTR, iDrive: int32): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathCanonicalizeA*(pszBuf: LPSTR, pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathCanonicalizeW*(pszBuf: LPWSTR, pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathCombineA*(pszDest: LPSTR, pszDir: LPCSTR, pszFile: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathCombineW*(pszDest: LPWSTR, pszDir: LPCWSTR, pszFile: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathCompactPathA*(hDC: HDC, pszPath: LPSTR, dx: UINT): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathCompactPathW*(hDC: HDC, pszPath: LPWSTR, dx: UINT): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathCompactPathExA*(pszOut: LPSTR, pszSrc: LPCSTR, cchMax: UINT, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathCompactPathExW*(pszOut: LPWSTR, pszSrc: LPCWSTR, cchMax: UINT, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathCommonPrefixA*(pszFile1: LPCSTR, pszFile2: LPCSTR, achPath: LPSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathCommonPrefixW*(pszFile1: LPCWSTR, pszFile2: LPCWSTR, achPath: LPWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathFileExistsA*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathFileExistsW*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathFindExtensionA*(pszPath: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathFindExtensionW*(pszPath: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathFindFileNameA*(pszPath: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathFindFileNameW*(pszPath: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathFindNextComponentA*(pszPath: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathFindNextComponentW*(pszPath: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathFindOnPathA*(pszPath: LPSTR, ppszOtherDirs: ptr LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathFindOnPathW*(pszPath: LPWSTR, ppszOtherDirs: ptr LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathGetArgsA*(pszPath: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathGetArgsW*(pszPath: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathFindSuffixArrayA*(pszPath: LPCSTR, apszSuffix: ptr LPCSTR, iArraySize: int32): LPCSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathFindSuffixArrayW*(pszPath: LPCWSTR, apszSuffix: ptr LPCWSTR, iArraySize: int32): LPCWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsLFNFileSpecA*(lpName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsLFNFileSpecW*(lpName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+proc StrCmpCA*(
+  pszStr1: LPCSTR, pszStr2: LPCSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCmpCW*(
+  pszStr1: LPCWSTR, pszStr2: LPCWSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCmpICA*(
+  pszStr1: LPCSTR, pszStr2: LPCSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc StrCmpICW*(
+  pszStr1: LPCWSTR, pszStr2: LPCWSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc IntlStrEqWorkerA*(
+  fCaseSens: WINBOOL, lpString1: LPCSTR, lpString2: LPCSTR, nChar: int32
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc IntlStrEqWorkerW*(
+  fCaseSens: WINBOOL, lpString1: LPCWSTR, lpString2: LPCWSTR, nChar: int32
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathAddBackslashA*(
+  pszPath: LPSTR
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathAddBackslashW*(
+  pszPath: LPWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathAddExtensionA*(
+  pszPath: LPSTR, pszExt: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathAddExtensionW*(
+  pszPath: LPWSTR, pszExt: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathAppendA*(
+  pszPath: LPSTR, pMore: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathAppendW*(
+  pszPath: LPWSTR, pMore: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathBuildRootA*(
+  pszRoot: LPSTR, iDrive: int32
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathBuildRootW*(
+  pszRoot: LPWSTR, iDrive: int32
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathCanonicalizeA*(
+  pszBuf: LPSTR, pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathCanonicalizeW*(
+  pszBuf: LPWSTR, pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathCombineA*(
+  pszDest: LPSTR, pszDir: LPCSTR, pszFile: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathCombineW*(
+  pszDest: LPWSTR, pszDir: LPCWSTR, pszFile: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathCompactPathA*(
+  hDC: HDC, pszPath: LPSTR, dx: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathCompactPathW*(
+  hDC: HDC, pszPath: LPWSTR, dx: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathCompactPathExA*(
+  pszOut: LPSTR, pszSrc: LPCSTR, cchMax: UINT, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathCompactPathExW*(
+  pszOut: LPWSTR, pszSrc: LPCWSTR, cchMax: UINT, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathCommonPrefixA*(
+  pszFile1: LPCSTR, pszFile2: LPCSTR, achPath: LPSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathCommonPrefixW*(
+  pszFile1: LPCWSTR, pszFile2: LPCWSTR, achPath: LPWSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathFileExistsA*(
+  pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathFileExistsW*(
+  pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathFindExtensionA*(
+  pszPath: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathFindExtensionW*(
+  pszPath: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathFindFileNameA*(
+  pszPath: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathFindFileNameW*(
+  pszPath: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathFindNextComponentA*(
+  pszPath: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathFindNextComponentW*(
+  pszPath: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathFindOnPathA*(
+  pszPath: LPSTR, ppszOtherDirs: ptr LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathFindOnPathW*(
+  pszPath: LPWSTR, ppszOtherDirs: ptr LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathGetArgsA*(
+  pszPath: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathGetArgsW*(
+  pszPath: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathFindSuffixArrayA*(
+  pszPath: LPCSTR, apszSuffix: ptr LPCSTR, iArraySize: int32
+): LPCSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathFindSuffixArrayW*(
+  pszPath: LPCWSTR, apszSuffix: ptr LPCWSTR, iArraySize: int32
+): LPCWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsLFNFileSpecA*(
+  lpName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsLFNFileSpecW*(
+  lpName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
 proc PathGetCharTypeA*(ch: UCHAR): UINT {.winapi, stdcall, dynlib: "shlwapi", importc.}
 proc PathGetCharTypeW*(ch: WCHAR): UINT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathGetDriveNumberA*(pszPath: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathGetDriveNumberW*(pszPath: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsDirectoryA*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsDirectoryW*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsDirectoryEmptyA*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsDirectoryEmptyW*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsFileSpecA*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsFileSpecW*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsPrefixA*(pszPrefix: LPCSTR, pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsPrefixW*(pszPrefix: LPCWSTR, pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsRelativeA*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsRelativeW*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsRootA*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsRootW*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsSameRootA*(pszPath1: LPCSTR, pszPath2: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsSameRootW*(pszPath1: LPCWSTR, pszPath2: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsUNCA*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsUNCW*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsNetworkPathA*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsNetworkPathW*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsUNCServerA*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsUNCServerW*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsUNCServerShareA*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsUNCServerShareW*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsContentTypeA*(pszPath: LPCSTR, pszContentType: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsContentTypeW*(pszPath: LPCWSTR, pszContentType: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsURLA*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsURLW*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathMakePrettyA*(pszPath: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathMakePrettyW*(pszPath: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathMatchSpecA*(pszFile: LPCSTR, pszSpec: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathMatchSpecW*(pszFile: LPCWSTR, pszSpec: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathParseIconLocationA*(pszIconFile: LPSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathParseIconLocationW*(pszIconFile: LPWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathQuoteSpacesA*(lpsz: LPSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathQuoteSpacesW*(lpsz: LPWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathRelativePathToA*(pszPath: LPSTR, pszFrom: LPCSTR, dwAttrFrom: DWORD, pszTo: LPCSTR, dwAttrTo: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathRelativePathToW*(pszPath: LPWSTR, pszFrom: LPCWSTR, dwAttrFrom: DWORD, pszTo: LPCWSTR, dwAttrTo: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathRemoveArgsA*(pszPath: LPSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathRemoveArgsW*(pszPath: LPWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathRemoveBackslashA*(pszPath: LPSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathRemoveBackslashW*(pszPath: LPWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathRemoveBlanksA*(pszPath: LPSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathRemoveBlanksW*(pszPath: LPWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathRemoveExtensionA*(pszPath: LPSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathRemoveExtensionW*(pszPath: LPWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathRemoveFileSpecA*(pszPath: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathRemoveFileSpecW*(pszPath: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathRenameExtensionA*(pszPath: LPSTR, pszExt: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathRenameExtensionW*(pszPath: LPWSTR, pszExt: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathSearchAndQualifyA*(pszPath: LPCSTR, pszBuf: LPSTR, cchBuf: UINT): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathSearchAndQualifyW*(pszPath: LPCWSTR, pszBuf: LPWSTR, cchBuf: UINT): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathSetDlgItemPathA*(hDlg: HWND, id: int32, pszPath: LPCSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathSetDlgItemPathW*(hDlg: HWND, id: int32, pszPath: LPCWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathSkipRootA*(pszPath: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathSkipRootW*(pszPath: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathStripPathA*(pszPath: LPSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathStripPathW*(pszPath: LPWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathStripToRootA*(pszPath: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathStripToRootW*(pszPath: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathUnquoteSpacesA*(lpsz: LPSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathUnquoteSpacesW*(lpsz: LPWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathMakeSystemFolderA*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathMakeSystemFolderW*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathUnmakeSystemFolderA*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathUnmakeSystemFolderW*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsSystemFolderA*(pszPath: LPCSTR, dwAttrb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathIsSystemFolderW*(pszPath: LPCWSTR, dwAttrb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathUndecorateA*(pszPath: LPSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathUndecorateW*(pszPath: LPWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathUnExpandEnvStringsA*(pszPath: LPCSTR, pszBuf: LPSTR, cchBuf: UINT): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathUnExpandEnvStringsW*(pszPath: LPCWSTR, pszBuf: LPWSTR, cchBuf: UINT): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlCompareA*(psz1: LPCSTR, psz2: LPCSTR, fIgnoreSlash: WINBOOL): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlCompareW*(psz1: LPCWSTR, psz2: LPCWSTR, fIgnoreSlash: WINBOOL): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlCombineA*(pszBase: LPCSTR, pszRelative: LPCSTR, pszCombined: LPSTR, pcchCombined: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlCombineW*(pszBase: LPCWSTR, pszRelative: LPCWSTR, pszCombined: LPWSTR, pcchCombined: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlCanonicalizeA*(pszUrl: LPCSTR, pszCanonicalized: LPSTR, pcchCanonicalized: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlCanonicalizeW*(pszUrl: LPCWSTR, pszCanonicalized: LPWSTR, pcchCanonicalized: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlIsOpaqueA*(pszURL: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlIsOpaqueW*(pszURL: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlIsNoHistoryA*(pszURL: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlIsNoHistoryW*(pszURL: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlIsA*(pszUrl: LPCSTR, UrlIs: TURLIS): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlIsW*(pszUrl: LPCWSTR, UrlIs: TURLIS): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlGetLocationA*(psz1: LPCSTR): LPCSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlGetLocationW*(psz1: LPCWSTR): LPCWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlUnescapeA*(pszUrl: LPSTR, pszUnescaped: LPSTR, pcchUnescaped: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlUnescapeW*(pszUrl: LPWSTR, pszUnescaped: LPWSTR, pcchUnescaped: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlEscapeA*(pszUrl: LPCSTR, pszEscaped: LPSTR, pcchEscaped: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlEscapeW*(pszUrl: LPCWSTR, pszEscaped: LPWSTR, pcchEscaped: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlCreateFromPathA*(pszPath: LPCSTR, pszUrl: LPSTR, pcchUrl: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlCreateFromPathW*(pszPath: LPCWSTR, pszUrl: LPWSTR, pcchUrl: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathCreateFromUrlA*(pszUrl: LPCSTR, pszPath: LPSTR, pcchPath: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc PathCreateFromUrlW*(pszUrl: LPCWSTR, pszPath: LPWSTR, pcchPath: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlHashA*(pszUrl: LPCSTR, pbHash: LPBYTE, cbHash: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlHashW*(pszUrl: LPCWSTR, pbHash: LPBYTE, cbHash: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlGetPartW*(pszIn: LPCWSTR, pszOut: LPWSTR, pcchOut: LPDWORD, dwPart: DWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlGetPartA*(pszIn: LPCSTR, pszOut: LPSTR, pcchOut: LPDWORD, dwPart: DWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlApplySchemeA*(pszIn: LPCSTR, pszOut: LPSTR, pcchOut: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc UrlApplySchemeW*(pszIn: LPCWSTR, pszOut: LPWSTR, pcchOut: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc HashData*(pbData: LPBYTE, cbData: DWORD, pbHash: LPBYTE, cbHash: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHDeleteEmptyKeyA*(hkey: HKEY, pszSubKey: LPCSTR): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHDeleteEmptyKeyW*(hkey: HKEY, pszSubKey: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHDeleteKeyA*(hkey: HKEY, pszSubKey: LPCSTR): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHDeleteKeyW*(hkey: HKEY, pszSubKey: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegDuplicateHKey*(hkey: HKEY): HKEY {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHDeleteValueA*(hkey: HKEY, pszSubKey: LPCSTR, pszValue: LPCSTR): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHDeleteValueW*(hkey: HKEY, pszSubKey: LPCWSTR, pszValue: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHGetValueA*(hkey: HKEY, pszSubKey: LPCSTR, pszValue: LPCSTR, pdwType: ptr DWORD, pvData: pointer, pcbData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHGetValueW*(hkey: HKEY, pszSubKey: LPCWSTR, pszValue: LPCWSTR, pdwType: ptr DWORD, pvData: pointer, pcbData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHSetValueA*(hkey: HKEY, pszSubKey: LPCSTR, pszValue: LPCSTR, dwType: DWORD, pvData: LPCVOID, cbData: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHSetValueW*(hkey: HKEY, pszSubKey: LPCWSTR, pszValue: LPCWSTR, dwType: DWORD, pvData: LPCVOID, cbData: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegGetValueA*(hkey: HKEY, pszSubKey: LPCSTR, pszValue: LPCSTR, dwFlags: SRRF, pdwType: ptr DWORD, pvData: pointer, pcbData: ptr DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegGetValueW*(hkey: HKEY, pszSubKey: LPCWSTR, pszValue: LPCWSTR, dwFlags: SRRF, pdwType: ptr DWORD, pvData: pointer, pcbData: ptr DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHQueryValueExA*(hkey: HKEY, pszValue: LPCSTR, pdwReserved: ptr DWORD, pdwType: ptr DWORD, pvData: pointer, pcbData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHQueryValueExW*(hkey: HKEY, pszValue: LPCWSTR, pdwReserved: ptr DWORD, pdwType: ptr DWORD, pvData: pointer, pcbData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHEnumKeyExA*(hkey: HKEY, dwIndex: DWORD, pszName: LPSTR, pcchName: LPDWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHEnumKeyExW*(hkey: HKEY, dwIndex: DWORD, pszName: LPWSTR, pcchName: LPDWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHEnumValueA*(hkey: HKEY, dwIndex: DWORD, pszValueName: LPSTR, pcchValueName: LPDWORD, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHEnumValueW*(hkey: HKEY, dwIndex: DWORD, pszValueName: LPWSTR, pcchValueName: LPDWORD, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHQueryInfoKeyA*(hkey: HKEY, pcSubKeys: LPDWORD, pcchMaxSubKeyLen: LPDWORD, pcValues: LPDWORD, pcchMaxValueNameLen: LPDWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHQueryInfoKeyW*(hkey: HKEY, pcSubKeys: LPDWORD, pcchMaxSubKeyLen: LPDWORD, pcValues: LPDWORD, pcchMaxValueNameLen: LPDWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHCopyKeyA*(hkeySrc: HKEY, szSrcSubKey: LPCSTR, hkeyDest: HKEY, fReserved: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHCopyKeyW*(hkeySrc: HKEY, wszSrcSubKey: LPCWSTR, hkeyDest: HKEY, fReserved: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegGetPathA*(hKey: HKEY, pcszSubKey: LPCSTR, pcszValue: LPCSTR, pszPath: LPSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegGetPathW*(hKey: HKEY, pcszSubKey: LPCWSTR, pcszValue: LPCWSTR, pszPath: LPWSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegSetPathA*(hKey: HKEY, pcszSubKey: LPCSTR, pcszValue: LPCSTR, pcszPath: LPCSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegSetPathW*(hKey: HKEY, pcszSubKey: LPCWSTR, pcszValue: LPCWSTR, pcszPath: LPCWSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegCreateUSKeyA*(pszPath: LPCSTR, samDesired: REGSAM, hRelativeUSKey: HUSKEY, phNewUSKey: PHUSKEY, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegCreateUSKeyW*(pwzPath: LPCWSTR, samDesired: REGSAM, hRelativeUSKey: HUSKEY, phNewUSKey: PHUSKEY, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegOpenUSKeyA*(pszPath: LPCSTR, samDesired: REGSAM, hRelativeUSKey: HUSKEY, phNewUSKey: PHUSKEY, fIgnoreHKCU: WINBOOL): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegOpenUSKeyW*(pwzPath: LPCWSTR, samDesired: REGSAM, hRelativeUSKey: HUSKEY, phNewUSKey: PHUSKEY, fIgnoreHKCU: WINBOOL): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegQueryUSValueA*(hUSKey: HUSKEY, pszValue: LPCSTR, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD, fIgnoreHKCU: WINBOOL, pvDefaultData: pointer, dwDefaultDataSize: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegQueryUSValueW*(hUSKey: HUSKEY, pwzValue: LPCWSTR, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD, fIgnoreHKCU: WINBOOL, pvDefaultData: pointer, dwDefaultDataSize: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegWriteUSValueA*(hUSKey: HUSKEY, pszValue: LPCSTR, dwType: DWORD, pvData: pointer, cbData: DWORD, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegWriteUSValueW*(hUSKey: HUSKEY, pwzValue: LPCWSTR, dwType: DWORD, pvData: pointer, cbData: DWORD, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegDeleteUSValueA*(hUSKey: HUSKEY, pszValue: LPCSTR, delRegFlags: SHREGDEL_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegDeleteEmptyUSKeyW*(hUSKey: HUSKEY, pwzSubKey: LPCWSTR, delRegFlags: SHREGDEL_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegDeleteEmptyUSKeyA*(hUSKey: HUSKEY, pszSubKey: LPCSTR, delRegFlags: SHREGDEL_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegDeleteUSValueW*(hUSKey: HUSKEY, pwzValue: LPCWSTR, delRegFlags: SHREGDEL_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegEnumUSKeyA*(hUSKey: HUSKEY, dwIndex: DWORD, pszName: LPSTR, pcchName: LPDWORD, enumRegFlags: SHREGENUM_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegEnumUSKeyW*(hUSKey: HUSKEY, dwIndex: DWORD, pwzName: LPWSTR, pcchName: LPDWORD, enumRegFlags: SHREGENUM_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegEnumUSValueA*(hUSkey: HUSKEY, dwIndex: DWORD, pszValueName: LPSTR, pcchValueName: LPDWORD, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD, enumRegFlags: SHREGENUM_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegEnumUSValueW*(hUSkey: HUSKEY, dwIndex: DWORD, pszValueName: LPWSTR, pcchValueName: LPDWORD, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD, enumRegFlags: SHREGENUM_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegQueryInfoUSKeyA*(hUSKey: HUSKEY, pcSubKeys: LPDWORD, pcchMaxSubKeyLen: LPDWORD, pcValues: LPDWORD, pcchMaxValueNameLen: LPDWORD, enumRegFlags: SHREGENUM_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegQueryInfoUSKeyW*(hUSKey: HUSKEY, pcSubKeys: LPDWORD, pcchMaxSubKeyLen: LPDWORD, pcValues: LPDWORD, pcchMaxValueNameLen: LPDWORD, enumRegFlags: SHREGENUM_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegCloseUSKey*(hUSKey: HUSKEY): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegGetUSValueA*(pszSubKey: LPCSTR, pszValue: LPCSTR, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD, fIgnoreHKCU: WINBOOL, pvDefaultData: pointer, dwDefaultDataSize: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegGetUSValueW*(pwzSubKey: LPCWSTR, pwzValue: LPCWSTR, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD, fIgnoreHKCU: WINBOOL, pvDefaultData: pointer, dwDefaultDataSize: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegSetUSValueA*(pszSubKey: LPCSTR, pszValue: LPCSTR, dwType: DWORD, pvData: pointer, cbData: DWORD, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegSetUSValueW*(pwzSubKey: LPCWSTR, pwzValue: LPCWSTR, dwType: DWORD, pvData: pointer, cbData: DWORD, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegGetIntW*(hk: HKEY, pwzKey: LPCWSTR, iDefault: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegGetBoolUSValueA*(pszSubKey: LPCSTR, pszValue: LPCSTR, fIgnoreHKCU: WINBOOL, fDefault: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHRegGetBoolUSValueW*(pszSubKey: LPCWSTR, pszValue: LPCWSTR, fIgnoreHKCU: WINBOOL, fDefault: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc AssocCreate*(clsid: CLSID, riid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc AssocQueryStringA*(flags: ASSOCF, str: ASSOCSTR, pszAssoc: LPCSTR, pszExtra: LPCSTR, pszOut: LPSTR, pcchOut: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc AssocQueryStringW*(flags: ASSOCF, str: ASSOCSTR, pszAssoc: LPCWSTR, pszExtra: LPCWSTR, pszOut: LPWSTR, pcchOut: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc AssocQueryStringByKeyA*(flags: ASSOCF, str: ASSOCSTR, hkAssoc: HKEY, pszExtra: LPCSTR, pszOut: LPSTR, pcchOut: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc AssocQueryStringByKeyW*(flags: ASSOCF, str: ASSOCSTR, hkAssoc: HKEY, pszExtra: LPCWSTR, pszOut: LPWSTR, pcchOut: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc AssocQueryKeyA*(flags: ASSOCF, key: ASSOCKEY, pszAssoc: LPCSTR, pszExtra: LPCSTR, phkeyOut: ptr HKEY): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc AssocQueryKeyW*(flags: ASSOCF, key: ASSOCKEY, pszAssoc: LPCWSTR, pszExtra: LPCWSTR, phkeyOut: ptr HKEY): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc AssocIsDangerous*(pszAssoc: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc AssocGetPerceivedType*(pszExt: LPCWSTR, ptype: ptr PERCEIVED, pflag: ptr PERCEIVEDFLAG, ppszType: ptr LPWSTR): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHOpenRegStreamA*(hkey: HKEY, pszSubkey: LPCSTR, pszValue: LPCSTR, grfMode: DWORD): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHOpenRegStreamW*(hkey: HKEY, pszSubkey: LPCWSTR, pszValue: LPCWSTR, grfMode: DWORD): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHOpenRegStream2A*(hkey: HKEY, pszSubkey: LPCSTR, pszValue: LPCSTR, grfMode: DWORD): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHOpenRegStream2W*(hkey: HKEY, pszSubkey: LPCWSTR, pszValue: LPCWSTR, grfMode: DWORD): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHCreateStreamOnFileA*(pszFile: LPCSTR, grfMode: DWORD, ppstm: ptr ptr IStream): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHCreateStreamOnFileW*(pszFile: LPCWSTR, grfMode: DWORD, ppstm: ptr ptr IStream): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHCreateStreamOnFileEx*(pszFile: LPCWSTR, grfMode: DWORD, dwAttributes: DWORD, fCreate: WINBOOL, pstmTemplate: ptr IStream, ppstm: ptr ptr IStream): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc GetAcceptLanguagesA*(psz: LPSTR, pcch: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc GetAcceptLanguagesW*(psz: LPWSTR, pcch: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHGetViewStatePropertyBag*(pidl: LPCITEMIDLIST, pszBagName: LPCWSTR, dwFlags: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHAllocShared*(pvData: pointer, dwSize: DWORD, dwProcessId: DWORD): HANDLE {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHFreeShared*(hData: HANDLE, dwProcessId: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHLockShared*(hData: HANDLE, dwProcessId: DWORD): pointer {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHUnlockShared*(pvData: pointer): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHAutoComplete*(hwndEdit: HWND, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHSetThreadRef*(punk: ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHGetThreadRef*(ppunk: ptr ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHSkipJunction*(pbc: ptr IBindCtx, pclsid: ptr CLSID): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHCreateThreadRef*(pcRef: ptr LONG, ppunk: ptr ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHCreateThread*(pfnThreadProc: LPTHREAD_START_ROUTINE, pData: pointer, dwFlags: DWORD, pfnCallback: LPTHREAD_START_ROUTINE): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+proc PathGetDriveNumberA*(
+  pszPath: LPCSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathGetDriveNumberW*(
+  pszPath: LPCWSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsDirectoryA*(
+  pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsDirectoryW*(
+  pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsDirectoryEmptyA*(
+  pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsDirectoryEmptyW*(
+  pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsFileSpecA*(
+  pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsFileSpecW*(
+  pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsPrefixA*(
+  pszPrefix: LPCSTR, pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsPrefixW*(
+  pszPrefix: LPCWSTR, pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsRelativeA*(
+  pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsRelativeW*(
+  pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsRootA*(
+  pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsRootW*(
+  pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsSameRootA*(
+  pszPath1: LPCSTR, pszPath2: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsSameRootW*(
+  pszPath1: LPCWSTR, pszPath2: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsUNCA*(
+  pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsUNCW*(
+  pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsNetworkPathA*(
+  pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsNetworkPathW*(
+  pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsUNCServerA*(
+  pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsUNCServerW*(
+  pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsUNCServerShareA*(
+  pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsUNCServerShareW*(
+  pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsContentTypeA*(
+  pszPath: LPCSTR, pszContentType: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsContentTypeW*(
+  pszPath: LPCWSTR, pszContentType: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsURLA*(
+  pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsURLW*(
+  pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathMakePrettyA*(
+  pszPath: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathMakePrettyW*(
+  pszPath: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathMatchSpecA*(
+  pszFile: LPCSTR, pszSpec: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathMatchSpecW*(
+  pszFile: LPCWSTR, pszSpec: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathParseIconLocationA*(
+  pszIconFile: LPSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathParseIconLocationW*(
+  pszIconFile: LPWSTR
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathQuoteSpacesA*(
+  lpsz: LPSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathQuoteSpacesW*(
+  lpsz: LPWSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathRelativePathToA*(
+  pszPath: LPSTR, pszFrom: LPCSTR, dwAttrFrom: DWORD, pszTo: LPCSTR, dwAttrTo: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathRelativePathToW*(
+  pszPath: LPWSTR, pszFrom: LPCWSTR, dwAttrFrom: DWORD, pszTo: LPCWSTR, dwAttrTo: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathRemoveArgsA*(
+  pszPath: LPSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathRemoveArgsW*(
+  pszPath: LPWSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathRemoveBackslashA*(
+  pszPath: LPSTR
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathRemoveBackslashW*(
+  pszPath: LPWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathRemoveBlanksA*(
+  pszPath: LPSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathRemoveBlanksW*(
+  pszPath: LPWSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathRemoveExtensionA*(
+  pszPath: LPSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathRemoveExtensionW*(
+  pszPath: LPWSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathRemoveFileSpecA*(
+  pszPath: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathRemoveFileSpecW*(
+  pszPath: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathRenameExtensionA*(
+  pszPath: LPSTR, pszExt: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathRenameExtensionW*(
+  pszPath: LPWSTR, pszExt: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathSearchAndQualifyA*(
+  pszPath: LPCSTR, pszBuf: LPSTR, cchBuf: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathSearchAndQualifyW*(
+  pszPath: LPCWSTR, pszBuf: LPWSTR, cchBuf: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathSetDlgItemPathA*(
+  hDlg: HWND, id: int32, pszPath: LPCSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathSetDlgItemPathW*(
+  hDlg: HWND, id: int32, pszPath: LPCWSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathSkipRootA*(
+  pszPath: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathSkipRootW*(
+  pszPath: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathStripPathA*(
+  pszPath: LPSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathStripPathW*(
+  pszPath: LPWSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathStripToRootA*(
+  pszPath: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathStripToRootW*(
+  pszPath: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathUnquoteSpacesA*(
+  lpsz: LPSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathUnquoteSpacesW*(
+  lpsz: LPWSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathMakeSystemFolderA*(
+  pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathMakeSystemFolderW*(
+  pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathUnmakeSystemFolderA*(
+  pszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathUnmakeSystemFolderW*(
+  pszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsSystemFolderA*(
+  pszPath: LPCSTR, dwAttrb: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathIsSystemFolderW*(
+  pszPath: LPCWSTR, dwAttrb: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathUndecorateA*(
+  pszPath: LPSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathUndecorateW*(
+  pszPath: LPWSTR
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathUnExpandEnvStringsA*(
+  pszPath: LPCSTR, pszBuf: LPSTR, cchBuf: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathUnExpandEnvStringsW*(
+  pszPath: LPCWSTR, pszBuf: LPWSTR, cchBuf: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlCompareA*(
+  psz1: LPCSTR, psz2: LPCSTR, fIgnoreSlash: WINBOOL
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlCompareW*(
+  psz1: LPCWSTR, psz2: LPCWSTR, fIgnoreSlash: WINBOOL
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlCombineA*(
+  pszBase: LPCSTR,
+  pszRelative: LPCSTR,
+  pszCombined: LPSTR,
+  pcchCombined: LPDWORD,
+  dwFlags: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlCombineW*(
+  pszBase: LPCWSTR,
+  pszRelative: LPCWSTR,
+  pszCombined: LPWSTR,
+  pcchCombined: LPDWORD,
+  dwFlags: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlCanonicalizeA*(
+  pszUrl: LPCSTR, pszCanonicalized: LPSTR, pcchCanonicalized: LPDWORD, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlCanonicalizeW*(
+  pszUrl: LPCWSTR, pszCanonicalized: LPWSTR, pcchCanonicalized: LPDWORD, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlIsOpaqueA*(
+  pszURL: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlIsOpaqueW*(
+  pszURL: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlIsNoHistoryA*(
+  pszURL: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlIsNoHistoryW*(
+  pszURL: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlIsA*(
+  pszUrl: LPCSTR, UrlIs: TURLIS
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlIsW*(
+  pszUrl: LPCWSTR, UrlIs: TURLIS
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlGetLocationA*(
+  psz1: LPCSTR
+): LPCSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlGetLocationW*(
+  psz1: LPCWSTR
+): LPCWSTR {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlUnescapeA*(
+  pszUrl: LPSTR, pszUnescaped: LPSTR, pcchUnescaped: LPDWORD, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlUnescapeW*(
+  pszUrl: LPWSTR, pszUnescaped: LPWSTR, pcchUnescaped: LPDWORD, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlEscapeA*(
+  pszUrl: LPCSTR, pszEscaped: LPSTR, pcchEscaped: LPDWORD, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlEscapeW*(
+  pszUrl: LPCWSTR, pszEscaped: LPWSTR, pcchEscaped: LPDWORD, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlCreateFromPathA*(
+  pszPath: LPCSTR, pszUrl: LPSTR, pcchUrl: LPDWORD, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlCreateFromPathW*(
+  pszPath: LPCWSTR, pszUrl: LPWSTR, pcchUrl: LPDWORD, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathCreateFromUrlA*(
+  pszUrl: LPCSTR, pszPath: LPSTR, pcchPath: LPDWORD, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc PathCreateFromUrlW*(
+  pszUrl: LPCWSTR, pszPath: LPWSTR, pcchPath: LPDWORD, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlHashA*(
+  pszUrl: LPCSTR, pbHash: LPBYTE, cbHash: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlHashW*(
+  pszUrl: LPCWSTR, pbHash: LPBYTE, cbHash: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlGetPartW*(
+  pszIn: LPCWSTR, pszOut: LPWSTR, pcchOut: LPDWORD, dwPart: DWORD, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlGetPartA*(
+  pszIn: LPCSTR, pszOut: LPSTR, pcchOut: LPDWORD, dwPart: DWORD, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlApplySchemeA*(
+  pszIn: LPCSTR, pszOut: LPSTR, pcchOut: LPDWORD, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc UrlApplySchemeW*(
+  pszIn: LPCWSTR, pszOut: LPWSTR, pcchOut: LPDWORD, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc HashData*(
+  pbData: LPBYTE, cbData: DWORD, pbHash: LPBYTE, cbHash: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHDeleteEmptyKeyA*(
+  hkey: HKEY, pszSubKey: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHDeleteEmptyKeyW*(
+  hkey: HKEY, pszSubKey: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHDeleteKeyA*(
+  hkey: HKEY, pszSubKey: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHDeleteKeyW*(
+  hkey: HKEY, pszSubKey: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegDuplicateHKey*(
+  hkey: HKEY
+): HKEY {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHDeleteValueA*(
+  hkey: HKEY, pszSubKey: LPCSTR, pszValue: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHDeleteValueW*(
+  hkey: HKEY, pszSubKey: LPCWSTR, pszValue: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHGetValueA*(
+  hkey: HKEY,
+  pszSubKey: LPCSTR,
+  pszValue: LPCSTR,
+  pdwType: ptr DWORD,
+  pvData: pointer,
+  pcbData: ptr DWORD,
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHGetValueW*(
+  hkey: HKEY,
+  pszSubKey: LPCWSTR,
+  pszValue: LPCWSTR,
+  pdwType: ptr DWORD,
+  pvData: pointer,
+  pcbData: ptr DWORD,
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHSetValueA*(
+  hkey: HKEY,
+  pszSubKey: LPCSTR,
+  pszValue: LPCSTR,
+  dwType: DWORD,
+  pvData: LPCVOID,
+  cbData: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHSetValueW*(
+  hkey: HKEY,
+  pszSubKey: LPCWSTR,
+  pszValue: LPCWSTR,
+  dwType: DWORD,
+  pvData: LPCVOID,
+  cbData: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegGetValueA*(
+  hkey: HKEY,
+  pszSubKey: LPCSTR,
+  pszValue: LPCSTR,
+  dwFlags: SRRF,
+  pdwType: ptr DWORD,
+  pvData: pointer,
+  pcbData: ptr DWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegGetValueW*(
+  hkey: HKEY,
+  pszSubKey: LPCWSTR,
+  pszValue: LPCWSTR,
+  dwFlags: SRRF,
+  pdwType: ptr DWORD,
+  pvData: pointer,
+  pcbData: ptr DWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHQueryValueExA*(
+  hkey: HKEY,
+  pszValue: LPCSTR,
+  pdwReserved: ptr DWORD,
+  pdwType: ptr DWORD,
+  pvData: pointer,
+  pcbData: ptr DWORD,
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHQueryValueExW*(
+  hkey: HKEY,
+  pszValue: LPCWSTR,
+  pdwReserved: ptr DWORD,
+  pdwType: ptr DWORD,
+  pvData: pointer,
+  pcbData: ptr DWORD,
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHEnumKeyExA*(
+  hkey: HKEY, dwIndex: DWORD, pszName: LPSTR, pcchName: LPDWORD
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHEnumKeyExW*(
+  hkey: HKEY, dwIndex: DWORD, pszName: LPWSTR, pcchName: LPDWORD
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHEnumValueA*(
+  hkey: HKEY,
+  dwIndex: DWORD,
+  pszValueName: LPSTR,
+  pcchValueName: LPDWORD,
+  pdwType: LPDWORD,
+  pvData: pointer,
+  pcbData: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHEnumValueW*(
+  hkey: HKEY,
+  dwIndex: DWORD,
+  pszValueName: LPWSTR,
+  pcchValueName: LPDWORD,
+  pdwType: LPDWORD,
+  pvData: pointer,
+  pcbData: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHQueryInfoKeyA*(
+  hkey: HKEY,
+  pcSubKeys: LPDWORD,
+  pcchMaxSubKeyLen: LPDWORD,
+  pcValues: LPDWORD,
+  pcchMaxValueNameLen: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHQueryInfoKeyW*(
+  hkey: HKEY,
+  pcSubKeys: LPDWORD,
+  pcchMaxSubKeyLen: LPDWORD,
+  pcValues: LPDWORD,
+  pcchMaxValueNameLen: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHCopyKeyA*(
+  hkeySrc: HKEY, szSrcSubKey: LPCSTR, hkeyDest: HKEY, fReserved: DWORD
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHCopyKeyW*(
+  hkeySrc: HKEY, wszSrcSubKey: LPCWSTR, hkeyDest: HKEY, fReserved: DWORD
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegGetPathA*(
+  hKey: HKEY, pcszSubKey: LPCSTR, pcszValue: LPCSTR, pszPath: LPSTR, dwFlags: DWORD
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegGetPathW*(
+  hKey: HKEY, pcszSubKey: LPCWSTR, pcszValue: LPCWSTR, pszPath: LPWSTR, dwFlags: DWORD
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegSetPathA*(
+  hKey: HKEY, pcszSubKey: LPCSTR, pcszValue: LPCSTR, pcszPath: LPCSTR, dwFlags: DWORD
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegSetPathW*(
+  hKey: HKEY, pcszSubKey: LPCWSTR, pcszValue: LPCWSTR, pcszPath: LPCWSTR, dwFlags: DWORD
+): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegCreateUSKeyA*(
+  pszPath: LPCSTR,
+  samDesired: REGSAM,
+  hRelativeUSKey: HUSKEY,
+  phNewUSKey: PHUSKEY,
+  dwFlags: DWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegCreateUSKeyW*(
+  pwzPath: LPCWSTR,
+  samDesired: REGSAM,
+  hRelativeUSKey: HUSKEY,
+  phNewUSKey: PHUSKEY,
+  dwFlags: DWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegOpenUSKeyA*(
+  pszPath: LPCSTR,
+  samDesired: REGSAM,
+  hRelativeUSKey: HUSKEY,
+  phNewUSKey: PHUSKEY,
+  fIgnoreHKCU: WINBOOL,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegOpenUSKeyW*(
+  pwzPath: LPCWSTR,
+  samDesired: REGSAM,
+  hRelativeUSKey: HUSKEY,
+  phNewUSKey: PHUSKEY,
+  fIgnoreHKCU: WINBOOL,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegQueryUSValueA*(
+  hUSKey: HUSKEY,
+  pszValue: LPCSTR,
+  pdwType: LPDWORD,
+  pvData: pointer,
+  pcbData: LPDWORD,
+  fIgnoreHKCU: WINBOOL,
+  pvDefaultData: pointer,
+  dwDefaultDataSize: DWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegQueryUSValueW*(
+  hUSKey: HUSKEY,
+  pwzValue: LPCWSTR,
+  pdwType: LPDWORD,
+  pvData: pointer,
+  pcbData: LPDWORD,
+  fIgnoreHKCU: WINBOOL,
+  pvDefaultData: pointer,
+  dwDefaultDataSize: DWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegWriteUSValueA*(
+  hUSKey: HUSKEY,
+  pszValue: LPCSTR,
+  dwType: DWORD,
+  pvData: pointer,
+  cbData: DWORD,
+  dwFlags: DWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegWriteUSValueW*(
+  hUSKey: HUSKEY,
+  pwzValue: LPCWSTR,
+  dwType: DWORD,
+  pvData: pointer,
+  cbData: DWORD,
+  dwFlags: DWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegDeleteUSValueA*(
+  hUSKey: HUSKEY, pszValue: LPCSTR, delRegFlags: SHREGDEL_FLAGS
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegDeleteEmptyUSKeyW*(
+  hUSKey: HUSKEY, pwzSubKey: LPCWSTR, delRegFlags: SHREGDEL_FLAGS
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegDeleteEmptyUSKeyA*(
+  hUSKey: HUSKEY, pszSubKey: LPCSTR, delRegFlags: SHREGDEL_FLAGS
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegDeleteUSValueW*(
+  hUSKey: HUSKEY, pwzValue: LPCWSTR, delRegFlags: SHREGDEL_FLAGS
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegEnumUSKeyA*(
+  hUSKey: HUSKEY,
+  dwIndex: DWORD,
+  pszName: LPSTR,
+  pcchName: LPDWORD,
+  enumRegFlags: SHREGENUM_FLAGS,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegEnumUSKeyW*(
+  hUSKey: HUSKEY,
+  dwIndex: DWORD,
+  pwzName: LPWSTR,
+  pcchName: LPDWORD,
+  enumRegFlags: SHREGENUM_FLAGS,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegEnumUSValueA*(
+  hUSkey: HUSKEY,
+  dwIndex: DWORD,
+  pszValueName: LPSTR,
+  pcchValueName: LPDWORD,
+  pdwType: LPDWORD,
+  pvData: pointer,
+  pcbData: LPDWORD,
+  enumRegFlags: SHREGENUM_FLAGS,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegEnumUSValueW*(
+  hUSkey: HUSKEY,
+  dwIndex: DWORD,
+  pszValueName: LPWSTR,
+  pcchValueName: LPDWORD,
+  pdwType: LPDWORD,
+  pvData: pointer,
+  pcbData: LPDWORD,
+  enumRegFlags: SHREGENUM_FLAGS,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegQueryInfoUSKeyA*(
+  hUSKey: HUSKEY,
+  pcSubKeys: LPDWORD,
+  pcchMaxSubKeyLen: LPDWORD,
+  pcValues: LPDWORD,
+  pcchMaxValueNameLen: LPDWORD,
+  enumRegFlags: SHREGENUM_FLAGS,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegQueryInfoUSKeyW*(
+  hUSKey: HUSKEY,
+  pcSubKeys: LPDWORD,
+  pcchMaxSubKeyLen: LPDWORD,
+  pcValues: LPDWORD,
+  pcchMaxValueNameLen: LPDWORD,
+  enumRegFlags: SHREGENUM_FLAGS,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegCloseUSKey*(
+  hUSKey: HUSKEY
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegGetUSValueA*(
+  pszSubKey: LPCSTR,
+  pszValue: LPCSTR,
+  pdwType: LPDWORD,
+  pvData: pointer,
+  pcbData: LPDWORD,
+  fIgnoreHKCU: WINBOOL,
+  pvDefaultData: pointer,
+  dwDefaultDataSize: DWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegGetUSValueW*(
+  pwzSubKey: LPCWSTR,
+  pwzValue: LPCWSTR,
+  pdwType: LPDWORD,
+  pvData: pointer,
+  pcbData: LPDWORD,
+  fIgnoreHKCU: WINBOOL,
+  pvDefaultData: pointer,
+  dwDefaultDataSize: DWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegSetUSValueA*(
+  pszSubKey: LPCSTR,
+  pszValue: LPCSTR,
+  dwType: DWORD,
+  pvData: pointer,
+  cbData: DWORD,
+  dwFlags: DWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegSetUSValueW*(
+  pwzSubKey: LPCWSTR,
+  pwzValue: LPCWSTR,
+  dwType: DWORD,
+  pvData: pointer,
+  cbData: DWORD,
+  dwFlags: DWORD,
+): LONG {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegGetIntW*(
+  hk: HKEY, pwzKey: LPCWSTR, iDefault: int32
+): int32 {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegGetBoolUSValueA*(
+  pszSubKey: LPCSTR, pszValue: LPCSTR, fIgnoreHKCU: WINBOOL, fDefault: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHRegGetBoolUSValueW*(
+  pszSubKey: LPCWSTR, pszValue: LPCWSTR, fIgnoreHKCU: WINBOOL, fDefault: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc AssocCreate*(
+  clsid: CLSID, riid: REFIID, ppv: ptr LPVOID
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc AssocQueryStringA*(
+  flags: ASSOCF,
+  str: ASSOCSTR,
+  pszAssoc: LPCSTR,
+  pszExtra: LPCSTR,
+  pszOut: LPSTR,
+  pcchOut: ptr DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc AssocQueryStringW*(
+  flags: ASSOCF,
+  str: ASSOCSTR,
+  pszAssoc: LPCWSTR,
+  pszExtra: LPCWSTR,
+  pszOut: LPWSTR,
+  pcchOut: ptr DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc AssocQueryStringByKeyA*(
+  flags: ASSOCF,
+  str: ASSOCSTR,
+  hkAssoc: HKEY,
+  pszExtra: LPCSTR,
+  pszOut: LPSTR,
+  pcchOut: ptr DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc AssocQueryStringByKeyW*(
+  flags: ASSOCF,
+  str: ASSOCSTR,
+  hkAssoc: HKEY,
+  pszExtra: LPCWSTR,
+  pszOut: LPWSTR,
+  pcchOut: ptr DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc AssocQueryKeyA*(
+  flags: ASSOCF, key: ASSOCKEY, pszAssoc: LPCSTR, pszExtra: LPCSTR, phkeyOut: ptr HKEY
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc AssocQueryKeyW*(
+  flags: ASSOCF, key: ASSOCKEY, pszAssoc: LPCWSTR, pszExtra: LPCWSTR, phkeyOut: ptr HKEY
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc AssocIsDangerous*(
+  pszAssoc: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc AssocGetPerceivedType*(
+  pszExt: LPCWSTR, ptype: ptr PERCEIVED, pflag: ptr PERCEIVEDFLAG, ppszType: ptr LPWSTR
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHOpenRegStreamA*(
+  hkey: HKEY, pszSubkey: LPCSTR, pszValue: LPCSTR, grfMode: DWORD
+): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHOpenRegStreamW*(
+  hkey: HKEY, pszSubkey: LPCWSTR, pszValue: LPCWSTR, grfMode: DWORD
+): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHOpenRegStream2A*(
+  hkey: HKEY, pszSubkey: LPCSTR, pszValue: LPCSTR, grfMode: DWORD
+): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHOpenRegStream2W*(
+  hkey: HKEY, pszSubkey: LPCWSTR, pszValue: LPCWSTR, grfMode: DWORD
+): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHCreateStreamOnFileA*(
+  pszFile: LPCSTR, grfMode: DWORD, ppstm: ptr ptr IStream
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHCreateStreamOnFileW*(
+  pszFile: LPCWSTR, grfMode: DWORD, ppstm: ptr ptr IStream
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHCreateStreamOnFileEx*(
+  pszFile: LPCWSTR,
+  grfMode: DWORD,
+  dwAttributes: DWORD,
+  fCreate: WINBOOL,
+  pstmTemplate: ptr IStream,
+  ppstm: ptr ptr IStream,
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc GetAcceptLanguagesA*(
+  psz: LPSTR, pcch: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc GetAcceptLanguagesW*(
+  psz: LPWSTR, pcch: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHGetViewStatePropertyBag*(
+  pidl: LPCITEMIDLIST,
+  pszBagName: LPCWSTR,
+  dwFlags: DWORD,
+  riid: REFIID,
+  ppv: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHAllocShared*(
+  pvData: pointer, dwSize: DWORD, dwProcessId: DWORD
+): HANDLE {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHFreeShared*(
+  hData: HANDLE, dwProcessId: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHLockShared*(
+  hData: HANDLE, dwProcessId: DWORD
+): pointer {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHUnlockShared*(
+  pvData: pointer
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHAutoComplete*(
+  hwndEdit: HWND, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHSetThreadRef*(
+  punk: ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHGetThreadRef*(
+  ppunk: ptr ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHSkipJunction*(
+  pbc: ptr IBindCtx, pclsid: ptr CLSID
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHCreateThreadRef*(
+  pcRef: ptr LONG, ppunk: ptr ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc SHCreateThread*(
+  pfnThreadProc: LPTHREAD_START_ROUTINE,
+  pData: pointer,
+  dwFlags: DWORD,
+  pfnCallback: LPTHREAD_START_ROUTINE,
+): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
 proc SHReleaseThreadRef*(): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHCreateShellPalette*(hdc: HDC): HPALETTE {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc ColorRGBToHLS*(clrRGB: COLORREF, pwHue: ptr WORD, pwLuminance: ptr WORD, pwSaturation: ptr WORD): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc ColorHLSToRGB*(wHue: WORD, wLuminance: WORD, wSaturation: WORD): COLORREF {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc ColorAdjustLuma*(clrRGB: COLORREF, n: int32, fScale: WINBOOL): COLORREF {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc DllInstall*(bInstall: WINBOOL, pszCmdLine: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+proc SHCreateShellPalette*(
+  hdc: HDC
+): HPALETTE {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc ColorRGBToHLS*(
+  clrRGB: COLORREF, pwHue: ptr WORD, pwLuminance: ptr WORD, pwSaturation: ptr WORD
+): void {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc ColorHLSToRGB*(
+  wHue: WORD, wLuminance: WORD, wSaturation: WORD
+): COLORREF {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc ColorAdjustLuma*(
+  clrRGB: COLORREF, n: int32, fScale: WINBOOL
+): COLORREF {.winapi, stdcall, dynlib: "shlwapi", importc.}
+
+proc DllInstall*(
+  bInstall: WINBOOL, pszCmdLine: LPCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
 proc IsInternetESCEnabled*(): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc.}
-proc SHGetFolderPathW*(hwnd: HWND, csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHSimpleIDListFromPath*(pszPath: PCWSTR): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateItemFromIDList*(pidl: PCIDLIST_ABSOLUTE, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateItemFromParsingName*(pszPath: PCWSTR, pbc: ptr IBindCtx, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateItemWithParent*(pidlParent: PCIDLIST_ABSOLUTE, psfParent: ptr IShellFolder, pidl: PCUITEMID_CHILD, riid: REFIID, ppvItem: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateItemFromRelativeName*(psiParent: ptr IShellItem, pszName: PCWSTR, pbc: ptr IBindCtx, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateItemInKnownFolder*(kfid: REFKNOWNFOLDERID, dwKFFlags: DWORD, pszItem: PCWSTR, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetIDListFromObject*(punk: ptr IUnknown, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetItemFromObject*(punk: ptr IUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetPropertyStoreFromIDList*(pidl: PCIDLIST_ABSOLUTE, flags: GETPROPERTYSTOREFLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetPropertyStoreFromParsingName*(pszPath: PCWSTR, pbc: ptr IBindCtx, flags: GETPROPERTYSTOREFLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetNameFromIDList*(pidl: PCIDLIST_ABSOLUTE, sigdnName: SIGDN, ppszName: ptr PWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetItemFromDataObject*(pdtobj: ptr IDataObject, dwFlags: DATAOBJ_GET_ITEM_FLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateShellItemArray*(pidlParent: PCIDLIST_ABSOLUTE, psf: ptr IShellFolder, cidl: UINT, ppidl: PCUITEMID_CHILD_ARRAY, ppsiItemArray: ptr ptr IShellItemArray): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateShellItemArrayFromDataObject*(pdo: ptr IDataObject, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateShellItemArrayFromIDLists*(cidl: UINT, rgpidl: PCIDLIST_ABSOLUTE_ARRAY, ppsiItemArray: ptr ptr IShellItemArray): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateShellItemArrayFromShellItem*(psi: ptr IShellItem, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHAddDefaultPropertiesByExt*(pszExt: PCWSTR, pPropStore: ptr IPropertyStore): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateDefaultPropertiesOp*(psi: ptr IShellItem, ppFileOp: ptr ptr IFileOperation): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHSetDefaultProperties*(hwnd: HWND, psi: ptr IShellItem, dwFileOpFlags: DWORD, pfops: ptr IFileOperationProgressSink): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateAssociationRegistration*(riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateDefaultExtractIcon*(riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SetCurrentProcessExplicitAppUserModelID*(AppID: PCWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc GetCurrentProcessExplicitAppUserModelID*(AppID: ptr PWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetTemporaryPropertyForItem*(psi: ptr IShellItem, propkey: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHSetTemporaryPropertyForItem*(psi: ptr IShellItem, propkey: REFPROPERTYKEY, propvar: REFPROPVARIANT): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHShowManageLibraryUI*(psiLibrary: ptr IShellItem, hwndOwner: HWND, pszTitle: LPCWSTR, pszInstruction: LPCWSTR, lmdOptions: LIBRARYMANAGEDIALOGOPTIONS): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHResolveLibrary*(psiLibrary: ptr IShellItem): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHAssocEnumHandlers*(pszExtra: PCWSTR, afFilter: ASSOC_FILTER, ppEnumHandler: ptr ptr IEnumAssocHandlers): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHAssocEnumHandlersForProtocolByApplication*(protocol: PCWSTR, riid: REFIID, enumHandlers: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetMalloc*(ppMalloc: ptr ptr IMalloc): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+proc SHGetFolderPathW*(
+  hwnd: HWND, csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPWSTR
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHSimpleIDListFromPath*(
+  pszPath: PCWSTR
+): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateItemFromIDList*(
+  pidl: PCIDLIST_ABSOLUTE, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateItemFromParsingName*(
+  pszPath: PCWSTR, pbc: ptr IBindCtx, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateItemWithParent*(
+  pidlParent: PCIDLIST_ABSOLUTE,
+  psfParent: ptr IShellFolder,
+  pidl: PCUITEMID_CHILD,
+  riid: REFIID,
+  ppvItem: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateItemFromRelativeName*(
+  psiParent: ptr IShellItem,
+  pszName: PCWSTR,
+  pbc: ptr IBindCtx,
+  riid: REFIID,
+  ppv: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateItemInKnownFolder*(
+  kfid: REFKNOWNFOLDERID,
+  dwKFFlags: DWORD,
+  pszItem: PCWSTR,
+  riid: REFIID,
+  ppv: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetIDListFromObject*(
+  punk: ptr IUnknown, ppidl: ptr PIDLIST_ABSOLUTE
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetItemFromObject*(
+  punk: ptr IUnknown, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetPropertyStoreFromIDList*(
+  pidl: PCIDLIST_ABSOLUTE, flags: GETPROPERTYSTOREFLAGS, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetPropertyStoreFromParsingName*(
+  pszPath: PCWSTR,
+  pbc: ptr IBindCtx,
+  flags: GETPROPERTYSTOREFLAGS,
+  riid: REFIID,
+  ppv: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetNameFromIDList*(
+  pidl: PCIDLIST_ABSOLUTE, sigdnName: SIGDN, ppszName: ptr PWSTR
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetItemFromDataObject*(
+  pdtobj: ptr IDataObject,
+  dwFlags: DATAOBJ_GET_ITEM_FLAGS,
+  riid: REFIID,
+  ppv: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateShellItemArray*(
+  pidlParent: PCIDLIST_ABSOLUTE,
+  psf: ptr IShellFolder,
+  cidl: UINT,
+  ppidl: PCUITEMID_CHILD_ARRAY,
+  ppsiItemArray: ptr ptr IShellItemArray,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateShellItemArrayFromDataObject*(
+  pdo: ptr IDataObject, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateShellItemArrayFromIDLists*(
+  cidl: UINT, rgpidl: PCIDLIST_ABSOLUTE_ARRAY, ppsiItemArray: ptr ptr IShellItemArray
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateShellItemArrayFromShellItem*(
+  psi: ptr IShellItem, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHAddDefaultPropertiesByExt*(
+  pszExt: PCWSTR, pPropStore: ptr IPropertyStore
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateDefaultPropertiesOp*(
+  psi: ptr IShellItem, ppFileOp: ptr ptr IFileOperation
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHSetDefaultProperties*(
+  hwnd: HWND,
+  psi: ptr IShellItem,
+  dwFileOpFlags: DWORD,
+  pfops: ptr IFileOperationProgressSink,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateAssociationRegistration*(
+  riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateDefaultExtractIcon*(
+  riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SetCurrentProcessExplicitAppUserModelID*(
+  AppID: PCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc GetCurrentProcessExplicitAppUserModelID*(
+  AppID: ptr PWSTR
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetTemporaryPropertyForItem*(
+  psi: ptr IShellItem, propkey: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHSetTemporaryPropertyForItem*(
+  psi: ptr IShellItem, propkey: REFPROPERTYKEY, propvar: REFPROPVARIANT
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHShowManageLibraryUI*(
+  psiLibrary: ptr IShellItem,
+  hwndOwner: HWND,
+  pszTitle: LPCWSTR,
+  pszInstruction: LPCWSTR,
+  lmdOptions: LIBRARYMANAGEDIALOGOPTIONS,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHResolveLibrary*(
+  psiLibrary: ptr IShellItem
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHAssocEnumHandlers*(
+  pszExtra: PCWSTR, afFilter: ASSOC_FILTER, ppEnumHandler: ptr ptr IEnumAssocHandlers
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHAssocEnumHandlersForProtocolByApplication*(
+  protocol: PCWSTR, riid: REFIID, enumHandlers: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetMalloc*(
+  ppMalloc: ptr ptr IMalloc
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
 proc SHAlloc*(cb: SIZE_T): pointer {.winapi, stdcall, dynlib: "shell32", importc.}
 proc SHFree*(pv: pointer): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetIconOverlayIndexA*(pszIconPath: LPCSTR, iIconIndex: int32): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetIconOverlayIndexW*(pszIconPath: LPCWSTR, iIconIndex: int32): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILClone*(pidl: PCUIDLIST_RELATIVE): PIDLIST_RELATIVE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILCloneFirst*(pidl: PCUIDLIST_RELATIVE): PITEMID_CHILD {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILCombine*(pidl1: PCIDLIST_ABSOLUTE, pidl2: PCUIDLIST_RELATIVE): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILFree*(pidl: PIDLIST_RELATIVE): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILGetNext*(pidl: PCUIDLIST_RELATIVE): PUIDLIST_RELATIVE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILGetSize*(pidl: PCUIDLIST_RELATIVE): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILFindChild*(pidlParent: PIDLIST_ABSOLUTE, pidlChild: PCIDLIST_ABSOLUTE): PUIDLIST_RELATIVE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILFindLastID*(pidl: PCUIDLIST_RELATIVE): PUITEMID_CHILD {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILRemoveLastID*(pidl: PUIDLIST_RELATIVE): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILIsEqual*(pidl1: PCIDLIST_ABSOLUTE, pidl2: PCIDLIST_ABSOLUTE): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILIsParent*(pidl1: PCIDLIST_ABSOLUTE, pidl2: PCIDLIST_ABSOLUTE, fImmediate: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILSaveToStream*(pstm: ptr IStream, pidl: PCUIDLIST_RELATIVE): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILLoadFromStreamEx*(pstm: ptr IStream, pidl: ptr PIDLIST_RELATIVE): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILCreateFromPathA*(pszPath: PCSTR): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILCreateFromPathW*(pszPath: PCWSTR): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHILCreateFromPath*(pszPath: PCWSTR, ppidl: ptr PIDLIST_ABSOLUTE, rgfInOut: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ILAppendID*(pidl: PIDLIST_RELATIVE, pmkid: LPCSHITEMID, fAppend: WINBOOL): PIDLIST_RELATIVE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetPathFromIDListEx*(pidl: PCIDLIST_ABSOLUTE, pszPath: PWSTR, cchPath: DWORD, uOpts: GPFIDL_FLAGS): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetPathFromIDListA*(pidl: PCIDLIST_ABSOLUTE, pszPath: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetPathFromIDListW*(pidl: PCIDLIST_ABSOLUTE, pszPath: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateDirectory*(hwnd: HWND, pszPath: PCWSTR): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateDirectoryExA*(hwnd: HWND, pszPath: LPCSTR, psa: ptr SECURITY_ATTRIBUTES): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateDirectoryExW*(hwnd: HWND, pszPath: LPCWSTR, psa: ptr SECURITY_ATTRIBUTES): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHOpenFolderAndSelectItems*(pidlFolder: PCIDLIST_ABSOLUTE, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateShellItem*(pidlParent: PCIDLIST_ABSOLUTE, psfParent: ptr IShellFolder, pidl: PCUITEMID_CHILD, ppsi: ptr ptr IShellItem): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetSpecialFolderLocation*(hwnd: HWND, csidl: int32, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCloneSpecialIDList*(hwnd: HWND, csidl: int32, fCreate: WINBOOL): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetSpecialFolderPathA*(hwnd: HWND, pszPath: LPSTR, csidl: int32, fCreate: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetSpecialFolderPathW*(hwnd: HWND, pszPath: LPWSTR, csidl: int32, fCreate: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+proc SHGetIconOverlayIndexA*(
+  pszIconPath: LPCSTR, iIconIndex: int32
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetIconOverlayIndexW*(
+  pszIconPath: LPCWSTR, iIconIndex: int32
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILClone*(
+  pidl: PCUIDLIST_RELATIVE
+): PIDLIST_RELATIVE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILCloneFirst*(
+  pidl: PCUIDLIST_RELATIVE
+): PITEMID_CHILD {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILCombine*(
+  pidl1: PCIDLIST_ABSOLUTE, pidl2: PCUIDLIST_RELATIVE
+): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILFree*(
+  pidl: PIDLIST_RELATIVE
+): void {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILGetNext*(
+  pidl: PCUIDLIST_RELATIVE
+): PUIDLIST_RELATIVE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILGetSize*(
+  pidl: PCUIDLIST_RELATIVE
+): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILFindChild*(
+  pidlParent: PIDLIST_ABSOLUTE, pidlChild: PCIDLIST_ABSOLUTE
+): PUIDLIST_RELATIVE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILFindLastID*(
+  pidl: PCUIDLIST_RELATIVE
+): PUITEMID_CHILD {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILRemoveLastID*(
+  pidl: PUIDLIST_RELATIVE
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILIsEqual*(
+  pidl1: PCIDLIST_ABSOLUTE, pidl2: PCIDLIST_ABSOLUTE
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILIsParent*(
+  pidl1: PCIDLIST_ABSOLUTE, pidl2: PCIDLIST_ABSOLUTE, fImmediate: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILSaveToStream*(
+  pstm: ptr IStream, pidl: PCUIDLIST_RELATIVE
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILLoadFromStreamEx*(
+  pstm: ptr IStream, pidl: ptr PIDLIST_RELATIVE
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILCreateFromPathA*(
+  pszPath: PCSTR
+): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILCreateFromPathW*(
+  pszPath: PCWSTR
+): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHILCreateFromPath*(
+  pszPath: PCWSTR, ppidl: ptr PIDLIST_ABSOLUTE, rgfInOut: ptr DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ILAppendID*(
+  pidl: PIDLIST_RELATIVE, pmkid: LPCSHITEMID, fAppend: WINBOOL
+): PIDLIST_RELATIVE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetPathFromIDListEx*(
+  pidl: PCIDLIST_ABSOLUTE, pszPath: PWSTR, cchPath: DWORD, uOpts: GPFIDL_FLAGS
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetPathFromIDListA*(
+  pidl: PCIDLIST_ABSOLUTE, pszPath: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetPathFromIDListW*(
+  pidl: PCIDLIST_ABSOLUTE, pszPath: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateDirectory*(
+  hwnd: HWND, pszPath: PCWSTR
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateDirectoryExA*(
+  hwnd: HWND, pszPath: LPCSTR, psa: ptr SECURITY_ATTRIBUTES
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateDirectoryExW*(
+  hwnd: HWND, pszPath: LPCWSTR, psa: ptr SECURITY_ATTRIBUTES
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHOpenFolderAndSelectItems*(
+  pidlFolder: PCIDLIST_ABSOLUTE,
+  cidl: UINT,
+  apidl: PCUITEMID_CHILD_ARRAY,
+  dwFlags: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateShellItem*(
+  pidlParent: PCIDLIST_ABSOLUTE,
+  psfParent: ptr IShellFolder,
+  pidl: PCUITEMID_CHILD,
+  ppsi: ptr ptr IShellItem,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetSpecialFolderLocation*(
+  hwnd: HWND, csidl: int32, ppidl: ptr PIDLIST_ABSOLUTE
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCloneSpecialIDList*(
+  hwnd: HWND, csidl: int32, fCreate: WINBOOL
+): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetSpecialFolderPathA*(
+  hwnd: HWND, pszPath: LPSTR, csidl: int32, fCreate: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetSpecialFolderPathW*(
+  hwnd: HWND, pszPath: LPWSTR, csidl: int32, fCreate: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
 proc SHFlushSFCache*(): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetFolderPathA*(hwnd: HWND, csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetFolderLocation*(hwnd: HWND, csidl: int32, hToken: HANDLE, dwFlags: DWORD, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHSetFolderPathA*(csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPCSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHSetFolderPathW*(csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetFolderPathAndSubDirA*(hwnd: HWND, csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszSubDir: LPCSTR, pszPath: LPSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetFolderPathAndSubDirW*(hwnd: HWND, csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszSubDir: LPCWSTR, pszPath: LPWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetKnownFolderIDList*(rfid: REFKNOWNFOLDERID, dwFlags: DWORD, hToken: HANDLE, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHSetKnownFolderPath*(rfid: REFKNOWNFOLDERID, dwFlags: DWORD, hToken: HANDLE, pszPath: PCWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetKnownFolderPath*(rfid: REFKNOWNFOLDERID, dwFlags: DWORD, hToken: HANDLE, ppszPath: ptr PWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetKnownFolderItem*(rfid: REFKNOWNFOLDERID, flags: KNOWN_FOLDER_FLAG, hToken: HANDLE, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetSetFolderCustomSettings*(pfcs: LPSHFOLDERCUSTOMSETTINGS, pszPath: PCWSTR, dwReadWrite: DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHBrowseForFolderA*(lpbi: LPBROWSEINFOA): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHBrowseForFolderW*(lpbi: LPBROWSEINFOW): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHLoadInProc*(rclsid: REFCLSID): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetDesktopFolder*(ppshf: ptr ptr IShellFolder): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHChangeNotify*(wEventId: LONG, uFlags: UINT, dwItem1: LPCVOID, dwItem2: LPCVOID): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHAddToRecentDocs*(uFlags: UINT, pv: LPCVOID): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHHandleUpdateImage*(pidlExtra: PCIDLIST_ABSOLUTE): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHUpdateImageA*(pszHashItem: LPCSTR, iIndex: int32, uFlags: UINT, iImageIndex: int32): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHUpdateImageW*(pszHashItem: LPCWSTR, iIndex: int32, uFlags: UINT, iImageIndex: int32): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHChangeNotifyRegister*(hwnd: HWND, fSources: int32, fEvents: LONG, wMsg: UINT, cEntries: int32, pshcne: ptr SHChangeNotifyEntry): ULONG {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHChangeNotifyDeregister*(ulID: ULONG): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHChangeNotifyRegisterThread*(status: SCNRT_STATUS): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHChangeNotification_Lock*(hChange: HANDLE, dwProcId: DWORD, pppidl: ptr ptr PIDLIST_ABSOLUTE, plEvent: ptr LONG): HANDLE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHChangeNotification_Unlock*(hLock: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetRealIDL*(psf: ptr IShellFolder, pidlSimple: PCUITEMID_CHILD, ppidlReal: ptr PITEMID_CHILD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetInstanceExplorer*(ppunk: ptr ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetDataFromIDListA*(psf: ptr IShellFolder, pidl: PCUITEMID_CHILD, nFormat: int32, pv: pointer, cb: int32): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetDataFromIDListW*(psf: ptr IShellFolder, pidl: PCUITEMID_CHILD, nFormat: int32, pv: pointer, cb: int32): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc RestartDialog*(hwnd: HWND, pszPrompt: PCWSTR, dwReturn: DWORD): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc RestartDialogEx*(hwnd: HWND, pszPrompt: PCWSTR, dwReturn: DWORD, dwReasonCode: DWORD): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCoCreateInstance*(pszCLSID: PCWSTR, pclsid: ptr CLSID, pUnkOuter: ptr IUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateDataObject*(pidlFolder: PCIDLIST_ABSOLUTE, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, pdtInner: ptr IDataObject, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc CIDLData_CreateFromIDArray*(pidlFolder: PCIDLIST_ABSOLUTE, cidl: UINT, apidl: PCUIDLIST_RELATIVE_ARRAY, ppdtobj: ptr ptr IDataObject): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateStdEnumFmtEtc*(cfmt: UINT, afmt: ptr FORMATETC, ppenumFormatEtc: ptr ptr IEnumFORMATETC): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHDoDragDrop*(hwnd: HWND, pdata: ptr IDataObject, pdsrc: ptr IDropSource, dwEffect: DWORD, pdwEffect: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc DAD_SetDragImage*(him: HIMAGELIST, pptOffset: ptr POINT): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc DAD_DragEnterEx*(hwndTarget: HWND, ptStart: POINT): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc DAD_DragEnterEx2*(hwndTarget: HWND, ptStart: POINT, pdtObject: ptr IDataObject): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc DAD_ShowDragImage*(fShow: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+proc SHGetFolderPathA*(
+  hwnd: HWND, csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPSTR
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetFolderLocation*(
+  hwnd: HWND, csidl: int32, hToken: HANDLE, dwFlags: DWORD, ppidl: ptr PIDLIST_ABSOLUTE
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHSetFolderPathA*(
+  csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPCSTR
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHSetFolderPathW*(
+  csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetFolderPathAndSubDirA*(
+  hwnd: HWND,
+  csidl: int32,
+  hToken: HANDLE,
+  dwFlags: DWORD,
+  pszSubDir: LPCSTR,
+  pszPath: LPSTR,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetFolderPathAndSubDirW*(
+  hwnd: HWND,
+  csidl: int32,
+  hToken: HANDLE,
+  dwFlags: DWORD,
+  pszSubDir: LPCWSTR,
+  pszPath: LPWSTR,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetKnownFolderIDList*(
+  rfid: REFKNOWNFOLDERID, dwFlags: DWORD, hToken: HANDLE, ppidl: ptr PIDLIST_ABSOLUTE
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHSetKnownFolderPath*(
+  rfid: REFKNOWNFOLDERID, dwFlags: DWORD, hToken: HANDLE, pszPath: PCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetKnownFolderPath*(
+  rfid: REFKNOWNFOLDERID, dwFlags: DWORD, hToken: HANDLE, ppszPath: ptr PWSTR
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetKnownFolderItem*(
+  rfid: REFKNOWNFOLDERID,
+  flags: KNOWN_FOLDER_FLAG,
+  hToken: HANDLE,
+  riid: REFIID,
+  ppv: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetSetFolderCustomSettings*(
+  pfcs: LPSHFOLDERCUSTOMSETTINGS, pszPath: PCWSTR, dwReadWrite: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHBrowseForFolderA*(
+  lpbi: LPBROWSEINFOA
+): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHBrowseForFolderW*(
+  lpbi: LPBROWSEINFOW
+): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHLoadInProc*(
+  rclsid: REFCLSID
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetDesktopFolder*(
+  ppshf: ptr ptr IShellFolder
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHChangeNotify*(
+  wEventId: LONG, uFlags: UINT, dwItem1: LPCVOID, dwItem2: LPCVOID
+): void {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHAddToRecentDocs*(
+  uFlags: UINT, pv: LPCVOID
+): void {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHHandleUpdateImage*(
+  pidlExtra: PCIDLIST_ABSOLUTE
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHUpdateImageA*(
+  pszHashItem: LPCSTR, iIndex: int32, uFlags: UINT, iImageIndex: int32
+): void {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHUpdateImageW*(
+  pszHashItem: LPCWSTR, iIndex: int32, uFlags: UINT, iImageIndex: int32
+): void {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHChangeNotifyRegister*(
+  hwnd: HWND,
+  fSources: int32,
+  fEvents: LONG,
+  wMsg: UINT,
+  cEntries: int32,
+  pshcne: ptr SHChangeNotifyEntry,
+): ULONG {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHChangeNotifyDeregister*(
+  ulID: ULONG
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHChangeNotifyRegisterThread*(
+  status: SCNRT_STATUS
+): void {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHChangeNotification_Lock*(
+  hChange: HANDLE, dwProcId: DWORD, pppidl: ptr ptr PIDLIST_ABSOLUTE, plEvent: ptr LONG
+): HANDLE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHChangeNotification_Unlock*(
+  hLock: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetRealIDL*(
+  psf: ptr IShellFolder, pidlSimple: PCUITEMID_CHILD, ppidlReal: ptr PITEMID_CHILD
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetInstanceExplorer*(
+  ppunk: ptr ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetDataFromIDListA*(
+  psf: ptr IShellFolder, pidl: PCUITEMID_CHILD, nFormat: int32, pv: pointer, cb: int32
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetDataFromIDListW*(
+  psf: ptr IShellFolder, pidl: PCUITEMID_CHILD, nFormat: int32, pv: pointer, cb: int32
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc RestartDialog*(
+  hwnd: HWND, pszPrompt: PCWSTR, dwReturn: DWORD
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc RestartDialogEx*(
+  hwnd: HWND, pszPrompt: PCWSTR, dwReturn: DWORD, dwReasonCode: DWORD
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCoCreateInstance*(
+  pszCLSID: PCWSTR,
+  pclsid: ptr CLSID,
+  pUnkOuter: ptr IUnknown,
+  riid: REFIID,
+  ppv: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateDataObject*(
+  pidlFolder: PCIDLIST_ABSOLUTE,
+  cidl: UINT,
+  apidl: PCUITEMID_CHILD_ARRAY,
+  pdtInner: ptr IDataObject,
+  riid: REFIID,
+  ppv: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc CIDLData_CreateFromIDArray*(
+  pidlFolder: PCIDLIST_ABSOLUTE,
+  cidl: UINT,
+  apidl: PCUIDLIST_RELATIVE_ARRAY,
+  ppdtobj: ptr ptr IDataObject,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateStdEnumFmtEtc*(
+  cfmt: UINT, afmt: ptr FORMATETC, ppenumFormatEtc: ptr ptr IEnumFORMATETC
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHDoDragDrop*(
+  hwnd: HWND,
+  pdata: ptr IDataObject,
+  pdsrc: ptr IDropSource,
+  dwEffect: DWORD,
+  pdwEffect: ptr DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc DAD_SetDragImage*(
+  him: HIMAGELIST, pptOffset: ptr POINT
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc DAD_DragEnterEx*(
+  hwndTarget: HWND, ptStart: POINT
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc DAD_DragEnterEx2*(
+  hwndTarget: HWND, ptStart: POINT, pdtObject: ptr IDataObject
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc DAD_ShowDragImage*(
+  fShow: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
 proc DAD_DragMove*(pt: POINT): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
 proc DAD_DragLeave*(): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc DAD_AutoScroll*(hwnd: HWND, pad: ptr AUTO_SCROLL_DATA, pptNow: ptr POINT): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ReadCabinetState*(pcs: ptr CABINETSTATE, cLength: int32): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc WriteCabinetState*(pcs: ptr CABINETSTATE): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc PathMakeUniqueName*(pszUniqueName: PWSTR, cchMax: UINT, pszTemplate: PCWSTR, pszLongPlate: PCWSTR, pszDir: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+proc DAD_AutoScroll*(
+  hwnd: HWND, pad: ptr AUTO_SCROLL_DATA, pptNow: ptr POINT
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ReadCabinetState*(
+  pcs: ptr CABINETSTATE, cLength: int32
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc WriteCabinetState*(
+  pcs: ptr CABINETSTATE
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc PathMakeUniqueName*(
+  pszUniqueName: PWSTR,
+  cchMax: UINT,
+  pszTemplate: PCWSTR,
+  pszLongPlate: PCWSTR,
+  pszDir: PCWSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
 proc PathQualify*(psz: PWSTR): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc PathIsExe*(pszPath: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc PathIsSlowA*(pszFile: LPCSTR, dwAttr: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc PathIsSlowW*(pszFile: LPCWSTR, dwAttr: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc PathCleanupSpec*(pszDir: PCWSTR, pszSpec: PWSTR): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc PathResolve*(pszPath: PWSTR, dirs: PZPCWSTR, fFlags: UINT): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc GetFileNameFromBrowse*(hwnd: HWND, pszFilePath: PWSTR, cchFilePath: UINT, pszWorkingDir: PCWSTR, pszDefExt: PCWSTR, pszFilters: PCWSTR, pszTitle: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+proc PathIsExe*(
+  pszPath: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc PathIsSlowA*(
+  pszFile: LPCSTR, dwAttr: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc PathIsSlowW*(
+  pszFile: LPCWSTR, dwAttr: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc PathCleanupSpec*(
+  pszDir: PCWSTR, pszSpec: PWSTR
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc PathResolve*(
+  pszPath: PWSTR, dirs: PZPCWSTR, fFlags: UINT
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc GetFileNameFromBrowse*(
+  hwnd: HWND,
+  pszFilePath: PWSTR,
+  cchFilePath: UINT,
+  pszWorkingDir: PCWSTR,
+  pszDefExt: PCWSTR,
+  pszFilters: PCWSTR,
+  pszTitle: PCWSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
 proc DriveType*(iDrive: int32): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc RealDriveType*(iDrive: int32, fOKToHitNet: WINBOOL): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+proc RealDriveType*(
+  iDrive: int32, fOKToHitNet: WINBOOL
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
 proc IsNetDrive*(iDrive: int32): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc Shell_MergeMenus*(hmDst: HMENU, hmSrc: HMENU, uInsert: UINT, uIDAdjust: UINT, uIDAdjustMax: UINT, uFlags: ULONG): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHObjectProperties*(hwnd: HWND, shopObjectType: DWORD, pszObjectName: PCWSTR, pszPropertyPage: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHFormatDrive*(hwnd: HWND, drive: UINT, fmtID: UINT, options: UINT): DWORD {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreatePropSheetExtArray*(hKey: HKEY, pszSubKey: PCWSTR, max_iface: UINT): HPSXA {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHDestroyPropSheetExtArray*(hpsxa: HPSXA): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHAddFromPropSheetExtArray*(hpsxa: HPSXA, lpfnAddPage: LPFNADDPROPSHEETPAGE, lParam: LPARAM): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHReplaceFromPropSheetExtArray*(hpsxa: HPSXA, uPageID: UINT, lpfnReplaceWith: LPFNADDPROPSHEETPAGE, lParam: LPARAM): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc OpenRegStream*(hkey: HKEY, pszSubkey: PCWSTR, pszValue: PCWSTR, grfMode: DWORD): ptr IStream {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHFindFiles*(pidlFolder: PCIDLIST_ABSOLUTE, pidlSaveFile: PCIDLIST_ABSOLUTE): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc PathGetShortPath*(pszLongPath: PWSTR): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc PathYetAnotherMakeUniqueName*(pszUniqueName: PWSTR, pszPath: PCWSTR, pszShort: PCWSTR, pszFileSpec: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc Win32DeleteFile*(pszPath: PCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHRestricted*(rest: RESTRICTIONS): DWORD {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SignalFileOpen*(pidl: PCIDLIST_ABSOLUTE): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc AssocGetDetailsOfPropKey*(psf: ptr IShellFolder, pidl: PCUITEMID_CHILD, pkey: ptr PROPERTYKEY, pv: ptr VARIANT, pfFoundPropKey: ptr WINBOOL): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHStartNetConnectionDialogW*(hwnd: HWND, pszRemoteName: LPCWSTR, dwType: DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHDefExtractIconA*(pszIconFile: LPCSTR, iIndex: int32, uFlags: UINT, phiconLarge: ptr HICON, phiconSmall: ptr HICON, nIconSize: UINT): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHDefExtractIconW*(pszIconFile: LPCWSTR, iIndex: int32, uFlags: UINT, phiconLarge: ptr HICON, phiconSmall: ptr HICON, nIconSize: UINT): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHOpenWithDialog*(hwndParent: HWND, poainfo: ptr OPENASINFO): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc Shell_GetImageLists*(phiml: ptr HIMAGELIST, phimlSmall: ptr HIMAGELIST): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc Shell_GetCachedImageIndex*(pwszIconPath: PCWSTR, iIconIndex: int32, uIconFlags: UINT): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc Shell_GetCachedImageIndexA*(pszIconPath: LPCSTR, iIconIndex: int32, uIconFlags: UINT): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc Shell_GetCachedImageIndexW*(pszIconPath: LPCWSTR, iIconIndex: int32, uIconFlags: UINT): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHValidateUNC*(hwndOwner: HWND, pszFile: PWSTR, fConnect: UINT): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc PifMgr_OpenProperties*(pszApp: PCWSTR, pszPIF: PCWSTR, hInf: UINT, flOpt: UINT): HANDLE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc PifMgr_GetProperties*(hProps: HANDLE, pszGroup: PCSTR, lpProps: pointer, cbProps: int32, flOpt: UINT): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc PifMgr_SetProperties*(hProps: HANDLE, pszGroup: PCSTR, lpProps: pointer, cbProps: int32, flOpt: UINT): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc PifMgr_CloseProperties*(hProps: HANDLE, flOpt: UINT): HANDLE {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHSetInstanceExplorer*(punk: ptr IUnknown): void {.winapi, stdcall, dynlib: "shell32", importc.}
+proc Shell_MergeMenus*(
+  hmDst: HMENU,
+  hmSrc: HMENU,
+  uInsert: UINT,
+  uIDAdjust: UINT,
+  uIDAdjustMax: UINT,
+  uFlags: ULONG,
+): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHObjectProperties*(
+  hwnd: HWND, shopObjectType: DWORD, pszObjectName: PCWSTR, pszPropertyPage: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHFormatDrive*(
+  hwnd: HWND, drive: UINT, fmtID: UINT, options: UINT
+): DWORD {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreatePropSheetExtArray*(
+  hKey: HKEY, pszSubKey: PCWSTR, max_iface: UINT
+): HPSXA {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHDestroyPropSheetExtArray*(
+  hpsxa: HPSXA
+): void {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHAddFromPropSheetExtArray*(
+  hpsxa: HPSXA, lpfnAddPage: LPFNADDPROPSHEETPAGE, lParam: LPARAM
+): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHReplaceFromPropSheetExtArray*(
+  hpsxa: HPSXA, uPageID: UINT, lpfnReplaceWith: LPFNADDPROPSHEETPAGE, lParam: LPARAM
+): UINT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc OpenRegStream*(
+  hkey: HKEY, pszSubkey: PCWSTR, pszValue: PCWSTR, grfMode: DWORD
+): ptr IStream {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHFindFiles*(
+  pidlFolder: PCIDLIST_ABSOLUTE, pidlSaveFile: PCIDLIST_ABSOLUTE
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc PathGetShortPath*(
+  pszLongPath: PWSTR
+): void {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc PathYetAnotherMakeUniqueName*(
+  pszUniqueName: PWSTR, pszPath: PCWSTR, pszShort: PCWSTR, pszFileSpec: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc Win32DeleteFile*(
+  pszPath: PCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHRestricted*(
+  rest: RESTRICTIONS
+): DWORD {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SignalFileOpen*(
+  pidl: PCIDLIST_ABSOLUTE
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc AssocGetDetailsOfPropKey*(
+  psf: ptr IShellFolder,
+  pidl: PCUITEMID_CHILD,
+  pkey: ptr PROPERTYKEY,
+  pv: ptr VARIANT,
+  pfFoundPropKey: ptr WINBOOL,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHStartNetConnectionDialogW*(
+  hwnd: HWND, pszRemoteName: LPCWSTR, dwType: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHDefExtractIconA*(
+  pszIconFile: LPCSTR,
+  iIndex: int32,
+  uFlags: UINT,
+  phiconLarge: ptr HICON,
+  phiconSmall: ptr HICON,
+  nIconSize: UINT,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHDefExtractIconW*(
+  pszIconFile: LPCWSTR,
+  iIndex: int32,
+  uFlags: UINT,
+  phiconLarge: ptr HICON,
+  phiconSmall: ptr HICON,
+  nIconSize: UINT,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHOpenWithDialog*(
+  hwndParent: HWND, poainfo: ptr OPENASINFO
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc Shell_GetImageLists*(
+  phiml: ptr HIMAGELIST, phimlSmall: ptr HIMAGELIST
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc Shell_GetCachedImageIndex*(
+  pwszIconPath: PCWSTR, iIconIndex: int32, uIconFlags: UINT
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc Shell_GetCachedImageIndexA*(
+  pszIconPath: LPCSTR, iIconIndex: int32, uIconFlags: UINT
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc Shell_GetCachedImageIndexW*(
+  pszIconPath: LPCWSTR, iIconIndex: int32, uIconFlags: UINT
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHValidateUNC*(
+  hwndOwner: HWND, pszFile: PWSTR, fConnect: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc PifMgr_OpenProperties*(
+  pszApp: PCWSTR, pszPIF: PCWSTR, hInf: UINT, flOpt: UINT
+): HANDLE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc PifMgr_GetProperties*(
+  hProps: HANDLE, pszGroup: PCSTR, lpProps: pointer, cbProps: int32, flOpt: UINT
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc PifMgr_SetProperties*(
+  hProps: HANDLE, pszGroup: PCSTR, lpProps: pointer, cbProps: int32, flOpt: UINT
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc PifMgr_CloseProperties*(
+  hProps: HANDLE, flOpt: UINT
+): HANDLE {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHSetInstanceExplorer*(
+  punk: ptr IUnknown
+): void {.winapi, stdcall, dynlib: "shell32", importc.}
+
 proc IsUserAnAdmin*(): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHShellFolderView_Message*(hwndMain: HWND, uMsg: UINT, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateShellFolderView*(pcsfv: ptr SFV_CREATE, ppsv: ptr ptr IShellView): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc CDefFolderMenu_Create2*(pidlFolder: PCIDLIST_ABSOLUTE, hwnd: HWND, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, psf: ptr IShellFolder, pfn: LPFNDFMCALLBACK, nKeys: UINT, ahkeys: ptr HKEY, ppcm: ptr ptr IContextMenu): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateDefaultContextMenu*(pdcm: ptr DEFCONTEXTMENU, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHOpenPropSheetW*(pszCaption: LPCWSTR, ahkeys: ptr HKEY, ckeys: UINT, pclsidDefault: ptr CLSID, pdtobj: ptr IDataObject, psb: ptr IShellBrowser, pStartPage: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHFind_InitMenuPopup*(hmenu: HMENU, hwndOwner: HWND, idCmdFirst: UINT, idCmdLast: UINT): ptr IContextMenu {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateShellFolderViewEx*(pcsfv: ptr CSFV, ppsv: ptr ptr IShellView): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+proc SHShellFolderView_Message*(
+  hwndMain: HWND, uMsg: UINT, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateShellFolderView*(
+  pcsfv: ptr SFV_CREATE, ppsv: ptr ptr IShellView
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc CDefFolderMenu_Create2*(
+  pidlFolder: PCIDLIST_ABSOLUTE,
+  hwnd: HWND,
+  cidl: UINT,
+  apidl: PCUITEMID_CHILD_ARRAY,
+  psf: ptr IShellFolder,
+  pfn: LPFNDFMCALLBACK,
+  nKeys: UINT,
+  ahkeys: ptr HKEY,
+  ppcm: ptr ptr IContextMenu,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateDefaultContextMenu*(
+  pdcm: ptr DEFCONTEXTMENU, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHOpenPropSheetW*(
+  pszCaption: LPCWSTR,
+  ahkeys: ptr HKEY,
+  ckeys: UINT,
+  pclsidDefault: ptr CLSID,
+  pdtobj: ptr IDataObject,
+  psb: ptr IShellBrowser,
+  pStartPage: LPCWSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHFind_InitMenuPopup*(
+  hmenu: HMENU, hwndOwner: HWND, idCmdFirst: UINT, idCmdLast: UINT
+): ptr IContextMenu {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateShellFolderViewEx*(
+  pcsfv: ptr CSFV, ppsv: ptr ptr IShellView
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
 when winimUnicode:
-  type
-    LPSHELLSTATE* = LPSHELLSTATEW
+  type LPSHELLSTATE* = LPSHELLSTATEW
 when winimAnsi:
-  type
-    LPSHELLSTATE* = LPSHELLSTATEA
-proc SHGetSetSettings*(lpss: LPSHELLSTATE, dwMask: DWORD, bSet: WINBOOL): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetSettings*(psfs: ptr SHELLFLAGSTATE, dwMask: DWORD): void {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHBindToParent*(pidl: PCIDLIST_ABSOLUTE, riid: REFIID, ppv: ptr pointer, ppidlLast: ptr PCUITEMID_CHILD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHBindToFolderIDListParent*(psfRoot: ptr IShellFolder, pidl: PCUIDLIST_RELATIVE, riid: REFIID, ppv: ptr pointer, ppidlLast: ptr PCUITEMID_CHILD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHBindToFolderIDListParentEx*(psfRoot: ptr IShellFolder, pidl: PCUIDLIST_RELATIVE, ppbc: ptr IBindCtx, riid: REFIID, ppv: ptr pointer, ppidlLast: ptr PCUITEMID_CHILD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHBindToObject*(psf: ptr IShellFolder, pidl: PCUIDLIST_RELATIVE, pbc: ptr IBindCtx, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHParseDisplayName*(pszName: PCWSTR, pbc: ptr IBindCtx, ppidl: ptr PIDLIST_ABSOLUTE, sfgaoIn: SFGAOF, psfgaoOut: ptr SFGAOF): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHPathPrepareForWriteA*(hwnd: HWND, punkEnableModless: ptr IUnknown, pszPath: LPCSTR, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHPathPrepareForWriteW*(hwnd: HWND, punkEnableModless: ptr IUnknown, pszPath: LPCWSTR, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SoftwareUpdateMessageBox*(hWnd: HWND, pszDistUnit: PCWSTR, dwFlags: DWORD, psdi: LPSOFTDISTINFO): DWORD {.winapi, stdcall, dynlib: "shdocvw", importc.}
-proc SHPropStgCreate*(psstg: ptr IPropertySetStorage, fmtid: REFFMTID, pclsid: ptr CLSID, grfFlags: DWORD, grfMode: DWORD, dwDisposition: DWORD, ppstg: ptr ptr IPropertyStorage, puCodePage: ptr UINT): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHPropStgReadMultiple*(pps: ptr IPropertyStorage, uCodePage: UINT, cpspec: ULONG, rgpspec: ptr PROPSPEC, rgvar: ptr PROPVARIANT): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHPropStgWriteMultiple*(pps: ptr IPropertyStorage, puCodePage: ptr UINT, cpspec: ULONG, rgpspec: ptr PROPSPEC, rgvar: ptr PROPVARIANT, propidNameFirst: PROPID): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateFileExtractIconW*(pszFile: LPCWSTR, dwFileAttributes: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHLimitInputEdit*(hwndEdit: HWND, psf: ptr IShellFolder): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHGetAttributesFromDataObject*(pdo: ptr IDataObject, dwAttributeMask: DWORD, pdwAttributes: ptr DWORD, pcItems: ptr UINT): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHMultiFileProperties*(pdtobj: ptr IDataObject, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHMapPIDLToSystemImageListIndex*(pshf: ptr IShellFolder, pidl: PCUITEMID_CHILD, piIndexSel: ptr int32): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCLSIDFromString*(psz: PCWSTR, pclsid: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc SHCreateQueryCancelAutoPlayMoniker*(ppmoniker: ptr ptr IMoniker): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+  type LPSHELLSTATE* = LPSHELLSTATEA
+proc SHGetSetSettings*(
+  lpss: LPSHELLSTATE, dwMask: DWORD, bSet: WINBOOL
+): void {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetSettings*(
+  psfs: ptr SHELLFLAGSTATE, dwMask: DWORD
+): void {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHBindToParent*(
+  pidl: PCIDLIST_ABSOLUTE,
+  riid: REFIID,
+  ppv: ptr pointer,
+  ppidlLast: ptr PCUITEMID_CHILD,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHBindToFolderIDListParent*(
+  psfRoot: ptr IShellFolder,
+  pidl: PCUIDLIST_RELATIVE,
+  riid: REFIID,
+  ppv: ptr pointer,
+  ppidlLast: ptr PCUITEMID_CHILD,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHBindToFolderIDListParentEx*(
+  psfRoot: ptr IShellFolder,
+  pidl: PCUIDLIST_RELATIVE,
+  ppbc: ptr IBindCtx,
+  riid: REFIID,
+  ppv: ptr pointer,
+  ppidlLast: ptr PCUITEMID_CHILD,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHBindToObject*(
+  psf: ptr IShellFolder,
+  pidl: PCUIDLIST_RELATIVE,
+  pbc: ptr IBindCtx,
+  riid: REFIID,
+  ppv: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHParseDisplayName*(
+  pszName: PCWSTR,
+  pbc: ptr IBindCtx,
+  ppidl: ptr PIDLIST_ABSOLUTE,
+  sfgaoIn: SFGAOF,
+  psfgaoOut: ptr SFGAOF,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHPathPrepareForWriteA*(
+  hwnd: HWND, punkEnableModless: ptr IUnknown, pszPath: LPCSTR, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHPathPrepareForWriteW*(
+  hwnd: HWND, punkEnableModless: ptr IUnknown, pszPath: LPCWSTR, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SoftwareUpdateMessageBox*(
+  hWnd: HWND, pszDistUnit: PCWSTR, dwFlags: DWORD, psdi: LPSOFTDISTINFO
+): DWORD {.winapi, stdcall, dynlib: "shdocvw", importc.}
+
+proc SHPropStgCreate*(
+  psstg: ptr IPropertySetStorage,
+  fmtid: REFFMTID,
+  pclsid: ptr CLSID,
+  grfFlags: DWORD,
+  grfMode: DWORD,
+  dwDisposition: DWORD,
+  ppstg: ptr ptr IPropertyStorage,
+  puCodePage: ptr UINT,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHPropStgReadMultiple*(
+  pps: ptr IPropertyStorage,
+  uCodePage: UINT,
+  cpspec: ULONG,
+  rgpspec: ptr PROPSPEC,
+  rgvar: ptr PROPVARIANT,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHPropStgWriteMultiple*(
+  pps: ptr IPropertyStorage,
+  puCodePage: ptr UINT,
+  cpspec: ULONG,
+  rgpspec: ptr PROPSPEC,
+  rgvar: ptr PROPVARIANT,
+  propidNameFirst: PROPID,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateFileExtractIconW*(
+  pszFile: LPCWSTR, dwFileAttributes: DWORD, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHLimitInputEdit*(
+  hwndEdit: HWND, psf: ptr IShellFolder
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHGetAttributesFromDataObject*(
+  pdo: ptr IDataObject,
+  dwAttributeMask: DWORD,
+  pdwAttributes: ptr DWORD,
+  pcItems: ptr UINT,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHMultiFileProperties*(
+  pdtobj: ptr IDataObject, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHMapPIDLToSystemImageListIndex*(
+  pshf: ptr IShellFolder, pidl: PCUITEMID_CHILD, piIndexSel: ptr int32
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCLSIDFromString*(
+  psz: PCWSTR, pclsid: ptr CLSID
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc SHCreateQueryCancelAutoPlayMoniker*(
+  ppmoniker: ptr ptr IMoniker
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
 proc PerUserInit*(): void {.winapi, stdcall, dynlib: "mydocs", importc.}
-proc PickIconDlg*(hwnd: HWND, pszIconPath: PWSTR, cchIconPath: UINT, piIconIndex: ptr int32): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
-proc StgMakeUniqueName*(pstgParent: ptr IStorage, pszFileSpec: PCWSTR, grfMode: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
-proc ImportPrivacySettings*(pszFilename: PCWSTR, pfParsePrivacyPreferences: ptr WINBOOL, pfParsePerSiteRules: ptr WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shdocvw", importc.}
-proc `hIcon=`*(self: var SHELLEXECUTEINFOA, x: HANDLE) {.inline.} = self.union1.hIcon = x
-proc hIcon*(self: SHELLEXECUTEINFOA): HANDLE {.inline.} = self.union1.hIcon
-proc hIcon*(self: var SHELLEXECUTEINFOA): var HANDLE {.inline.} = self.union1.hIcon
-proc `hMonitor=`*(self: var SHELLEXECUTEINFOA, x: HANDLE) {.inline.} = self.union1.hMonitor = x
-proc hMonitor*(self: SHELLEXECUTEINFOA): HANDLE {.inline.} = self.union1.hMonitor
-proc hMonitor*(self: var SHELLEXECUTEINFOA): var HANDLE {.inline.} = self.union1.hMonitor
-proc `hIcon=`*(self: var SHELLEXECUTEINFOW, x: HANDLE) {.inline.} = self.union1.hIcon = x
-proc hIcon*(self: SHELLEXECUTEINFOW): HANDLE {.inline.} = self.union1.hIcon
-proc hIcon*(self: var SHELLEXECUTEINFOW): var HANDLE {.inline.} = self.union1.hIcon
-proc `hMonitor=`*(self: var SHELLEXECUTEINFOW, x: HANDLE) {.inline.} = self.union1.hMonitor = x
-proc hMonitor*(self: SHELLEXECUTEINFOW): HANDLE {.inline.} = self.union1.hMonitor
-proc hMonitor*(self: var SHELLEXECUTEINFOW): var HANDLE {.inline.} = self.union1.hMonitor
-proc `uTimeout=`*(self: var NOTIFYICONDATAA, x: UINT) {.inline.} = self.union1.uTimeout = x
-proc uTimeout*(self: NOTIFYICONDATAA): UINT {.inline.} = self.union1.uTimeout
-proc uTimeout*(self: var NOTIFYICONDATAA): var UINT {.inline.} = self.union1.uTimeout
-proc `uVersion=`*(self: var NOTIFYICONDATAA, x: UINT) {.inline.} = self.union1.uVersion = x
-proc uVersion*(self: NOTIFYICONDATAA): UINT {.inline.} = self.union1.uVersion
-proc uVersion*(self: var NOTIFYICONDATAA): var UINT {.inline.} = self.union1.uVersion
-proc `uTimeout=`*(self: var NOTIFYICONDATAW, x: UINT) {.inline.} = self.union1.uTimeout = x
-proc uTimeout*(self: NOTIFYICONDATAW): UINT {.inline.} = self.union1.uTimeout
-proc uTimeout*(self: var NOTIFYICONDATAW): var UINT {.inline.} = self.union1.uTimeout
-proc `uVersion=`*(self: var NOTIFYICONDATAW, x: UINT) {.inline.} = self.union1.uVersion = x
-proc uVersion*(self: NOTIFYICONDATAW): UINT {.inline.} = self.union1.uVersion
-proc uVersion*(self: var NOTIFYICONDATAW): var UINT {.inline.} = self.union1.uVersion
-proc Init*(self: ptr IQueryAssociations, flags: ASSOCF, pszAssoc: LPCWSTR, hkProgid: HKEY, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Init(self, flags, pszAssoc, hkProgid, hwnd)
-proc GetString*(self: ptr IQueryAssociations, flags: ASSOCF, str: ASSOCSTR, pszExtra: LPCWSTR, pszOut: LPWSTR, pcchOut: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetString(self, flags, str, pszExtra, pszOut, pcchOut)
-proc GetKey*(self: ptr IQueryAssociations, flags: ASSOCF, key: ASSOCKEY, pszExtra: LPCWSTR, phkeyOut: ptr HKEY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetKey(self, flags, key, pszExtra, phkeyOut)
-proc GetData*(self: ptr IQueryAssociations, flags: ASSOCF, data: ASSOCDATA, pszExtra: LPCWSTR, pvOut: LPVOID, pcbOut: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetData(self, flags, data, pszExtra, pvOut, pcbOut)
-proc GetEnum*(self: ptr IQueryAssociations, flags: ASSOCF, assocenum: ASSOCENUM, pszExtra: LPCWSTR, riid: REFIID, ppvOut: ptr LPVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEnum(self, flags, assocenum, pszExtra, riid, ppvOut)
-proc SetFolderView*(self: ptr IFolderViewOC, pdisp: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFolderView(self, pdisp)
-proc get_Name*(self: ptr DFConstraint, pbs: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Name(self, pbs)
-proc get_Value*(self: ptr DFConstraint, pv: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Value(self, pv)
-proc get_Title*(self: ptr Folder, pbs: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Title(self, pbs)
-proc get_Application*(self: ptr Folder, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Application(self, ppid)
-proc get_Parent*(self: ptr Folder, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Parent(self, ppid)
-proc get_ParentFolder*(self: ptr Folder, ppsf: ptr ptr Folder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ParentFolder(self, ppsf)
-proc Items*(self: ptr Folder, ppid: ptr ptr FolderItems): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Items(self, ppid)
-proc ParseName*(self: ptr Folder, bName: BSTR, ppid: ptr ptr FolderItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseName(self, bName, ppid)
-proc NewFolder*(self: ptr Folder, bName: BSTR, vOptions: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NewFolder(self, bName, vOptions)
-proc MoveHere*(self: ptr Folder, vItem: VARIANT, vOptions: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveHere(self, vItem, vOptions)
-proc CopyHere*(self: ptr Folder, vItem: VARIANT, vOptions: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyHere(self, vItem, vOptions)
-proc GetDetailsOf*(self: ptr Folder, vItem: VARIANT, iColumn: int32, pbs: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDetailsOf(self, vItem, iColumn, pbs)
-proc get_Self*(self: ptr Folder2, ppfi: ptr ptr FolderItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Self(self, ppfi)
-proc get_OfflineStatus*(self: ptr Folder2, pul: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_OfflineStatus(self, pul)
-proc mSynchronize*(self: ptr Folder2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Synchronize(self)
-proc get_HaveToShowWebViewBarricade*(self: ptr Folder2, pbHaveToShowWebViewBarricade: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HaveToShowWebViewBarricade(self, pbHaveToShowWebViewBarricade)
-proc DismissedWebViewBarricade*(self: ptr Folder2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DismissedWebViewBarricade(self)
-proc get_ShowWebViewBarricade*(self: ptr Folder3, pbShowWebViewBarricade: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ShowWebViewBarricade(self, pbShowWebViewBarricade)
-proc put_ShowWebViewBarricade*(self: ptr Folder3, bShowWebViewBarricade: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ShowWebViewBarricade(self, bShowWebViewBarricade)
-proc get_Application*(self: ptr FolderItem, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Application(self, ppid)
-proc get_Parent*(self: ptr FolderItem, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Parent(self, ppid)
-proc get_Name*(self: ptr FolderItem, pbs: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Name(self, pbs)
-proc put_Name*(self: ptr FolderItem, bs: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Name(self, bs)
-proc get_Path*(self: ptr FolderItem, pbs: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Path(self, pbs)
-proc get_GetLink*(self: ptr FolderItem, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_GetLink(self, ppid)
-proc get_GetFolder*(self: ptr FolderItem, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_GetFolder(self, ppid)
-proc get_IsLink*(self: ptr FolderItem, pb: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsLink(self, pb)
-proc get_IsFolder*(self: ptr FolderItem, pb: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsFolder(self, pb)
-proc get_IsFileSystem*(self: ptr FolderItem, pb: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsFileSystem(self, pb)
-proc get_IsBrowsable*(self: ptr FolderItem, pb: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsBrowsable(self, pb)
-proc get_ModifyDate*(self: ptr FolderItem, pdt: ptr DATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ModifyDate(self, pdt)
-proc put_ModifyDate*(self: ptr FolderItem, dt: DATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ModifyDate(self, dt)
-proc get_Size*(self: ptr FolderItem, pul: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Size(self, pul)
-proc get_Type*(self: ptr FolderItem, pbs: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Type(self, pbs)
-proc Verbs*(self: ptr FolderItem, ppfic: ptr ptr FolderItemVerbs): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Verbs(self, ppfic)
-proc InvokeVerb*(self: ptr FolderItem, vVerb: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvokeVerb(self, vVerb)
-proc InvokeVerbEx*(self: ptr FolderItem2, vVerb: VARIANT, vArgs: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvokeVerbEx(self, vVerb, vArgs)
-proc ExtendedProperty*(self: ptr FolderItem2, bstrPropName: BSTR, pvRet: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExtendedProperty(self, bstrPropName, pvRet)
-proc get_Count*(self: ptr FolderItems, plCount: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Count(self, plCount)
-proc get_Application*(self: ptr FolderItems, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Application(self, ppid)
-proc get_Parent*(self: ptr FolderItems, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Parent(self, ppid)
-proc Item*(self: ptr FolderItems, index: VARIANT, ppid: ptr ptr FolderItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Item(self, index, ppid)
-proc NewEnum*(self: ptr FolderItems, ppunk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NewEnum(self, ppunk)
-proc InvokeVerbEx*(self: ptr FolderItems2, vVerb: VARIANT, vArgs: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvokeVerbEx(self, vVerb, vArgs)
-proc Filter*(self: ptr FolderItems3, grfFlags: LONG, bstrFileSpec: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Filter(self, grfFlags, bstrFileSpec)
-proc get_Verbs*(self: ptr FolderItems3, ppfic: ptr ptr FolderItemVerbs): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Verbs(self, ppfic)
-proc get_Application*(self: ptr FolderItemVerb, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Application(self, ppid)
-proc get_Parent*(self: ptr FolderItemVerb, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Parent(self, ppid)
-proc get_Name*(self: ptr FolderItemVerb, pbs: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Name(self, pbs)
-proc DoIt*(self: ptr FolderItemVerb): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoIt(self)
-proc get_Count*(self: ptr FolderItemVerbs, plCount: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Count(self, plCount)
-proc get_Application*(self: ptr FolderItemVerbs, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Application(self, ppid)
-proc get_Parent*(self: ptr FolderItemVerbs, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Parent(self, ppid)
-proc Item*(self: ptr FolderItemVerbs, index: VARIANT, ppid: ptr ptr FolderItemVerb): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Item(self, index, ppid)
-proc NewEnum*(self: ptr FolderItemVerbs, ppunk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NewEnum(self, ppunk)
-proc get_Path*(self: ptr IShellLinkDual, pbs: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Path(self, pbs)
-proc put_Path*(self: ptr IShellLinkDual, bs: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Path(self, bs)
-proc get_Description*(self: ptr IShellLinkDual, pbs: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Description(self, pbs)
-proc put_Description*(self: ptr IShellLinkDual, bs: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Description(self, bs)
-proc get_WorkingDirectory*(self: ptr IShellLinkDual, pbs: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_WorkingDirectory(self, pbs)
-proc put_WorkingDirectory*(self: ptr IShellLinkDual, bs: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_WorkingDirectory(self, bs)
-proc get_Arguments*(self: ptr IShellLinkDual, pbs: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Arguments(self, pbs)
-proc put_Arguments*(self: ptr IShellLinkDual, bs: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Arguments(self, bs)
-proc get_Hotkey*(self: ptr IShellLinkDual, piHK: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Hotkey(self, piHK)
-proc put_Hotkey*(self: ptr IShellLinkDual, iHK: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Hotkey(self, iHK)
-proc get_ShowCommand*(self: ptr IShellLinkDual, piShowCommand: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ShowCommand(self, piShowCommand)
-proc put_ShowCommand*(self: ptr IShellLinkDual, iShowCommand: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ShowCommand(self, iShowCommand)
-proc Resolve*(self: ptr IShellLinkDual, fFlags: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Resolve(self, fFlags)
-proc GetIconLocation*(self: ptr IShellLinkDual, pbs: ptr BSTR, piIcon: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIconLocation(self, pbs, piIcon)
-proc SetIconLocation*(self: ptr IShellLinkDual, bs: BSTR, iIcon: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetIconLocation(self, bs, iIcon)
-proc Save*(self: ptr IShellLinkDual, vWhere: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Save(self, vWhere)
-proc get_Target*(self: ptr IShellLinkDual2, ppfi: ptr ptr FolderItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Target(self, ppfi)
-proc get_Application*(self: ptr IShellFolderViewDual, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Application(self, ppid)
-proc get_Parent*(self: ptr IShellFolderViewDual, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Parent(self, ppid)
-proc get_Folder*(self: ptr IShellFolderViewDual, ppid: ptr ptr Folder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Folder(self, ppid)
-proc SelectedItems*(self: ptr IShellFolderViewDual, ppid: ptr ptr FolderItems): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SelectedItems(self, ppid)
-proc get_FocusedItem*(self: ptr IShellFolderViewDual, ppid: ptr ptr FolderItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_FocusedItem(self, ppid)
-proc SelectItem*(self: ptr IShellFolderViewDual, pvfi: ptr VARIANT, dwFlags: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SelectItem(self, pvfi, dwFlags)
-proc PopupItemMenu*(self: ptr IShellFolderViewDual, pfi: ptr FolderItem, vx: VARIANT, vy: VARIANT, pbs: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PopupItemMenu(self, pfi, vx, vy, pbs)
-proc get_Script*(self: ptr IShellFolderViewDual, ppDisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Script(self, ppDisp)
-proc get_ViewOptions*(self: ptr IShellFolderViewDual, plViewOptions: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ViewOptions(self, plViewOptions)
-proc get_CurrentViewMode*(self: ptr IShellFolderViewDual2, pViewMode: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentViewMode(self, pViewMode)
-proc put_CurrentViewMode*(self: ptr IShellFolderViewDual2, ViewMode: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_CurrentViewMode(self, ViewMode)
-proc SelectItemRelative*(self: ptr IShellFolderViewDual2, iRelative: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SelectItemRelative(self, iRelative)
-proc get_GroupBy*(self: ptr IShellFolderViewDual3, pbstrGroupBy: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_GroupBy(self, pbstrGroupBy)
-proc put_GroupBy*(self: ptr IShellFolderViewDual3, bstrGroupBy: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_GroupBy(self, bstrGroupBy)
-proc get_FolderFlags*(self: ptr IShellFolderViewDual3, pdwFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_FolderFlags(self, pdwFlags)
-proc put_FolderFlags*(self: ptr IShellFolderViewDual3, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_FolderFlags(self, dwFlags)
-proc get_SortColumns*(self: ptr IShellFolderViewDual3, pbstrSortColumns: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_SortColumns(self, pbstrSortColumns)
-proc put_SortColumns*(self: ptr IShellFolderViewDual3, bstrSortColumns: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_SortColumns(self, bstrSortColumns)
-proc put_IconSize*(self: ptr IShellFolderViewDual3, iIconSize: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_IconSize(self, iIconSize)
-proc get_IconSize*(self: ptr IShellFolderViewDual3, piIconSize: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IconSize(self, piIconSize)
-proc FilterView*(self: ptr IShellFolderViewDual3, bstrFilterText: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FilterView(self, bstrFilterText)
-proc get_Application*(self: ptr IShellDispatch, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Application(self, ppid)
-proc get_Parent*(self: ptr IShellDispatch, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Parent(self, ppid)
-proc NameSpace*(self: ptr IShellDispatch, vDir: VARIANT, ppsdf: ptr ptr Folder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NameSpace(self, vDir, ppsdf)
-proc BrowseForFolder*(self: ptr IShellDispatch, Hwnd: LONG, Title: BSTR, Options: LONG, RootFolder: VARIANT, ppsdf: ptr ptr Folder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BrowseForFolder(self, Hwnd, Title, Options, RootFolder, ppsdf)
-proc Windows*(self: ptr IShellDispatch, ppid: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Windows(self, ppid)
-proc Open*(self: ptr IShellDispatch, vDir: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Open(self, vDir)
-proc Explore*(self: ptr IShellDispatch, vDir: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Explore(self, vDir)
-proc MinimizeAll*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MinimizeAll(self)
-proc UndoMinimizeALL*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UndoMinimizeALL(self)
-proc FileRun*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FileRun(self)
-proc CascadeWindows*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CascadeWindows(self)
-proc TileVertically*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TileVertically(self)
-proc TileHorizontally*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TileHorizontally(self)
-proc ShutdownWindows*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShutdownWindows(self)
-proc Suspend*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Suspend(self)
-proc EjectPC*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EjectPC(self)
-proc SetTime*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTime(self)
-proc TrayProperties*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TrayProperties(self)
-proc Help*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Help(self)
-proc FindFiles*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindFiles(self)
-proc FindComputer*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindComputer(self)
-proc RefreshMenu*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RefreshMenu(self)
-proc ControlPanelItem*(self: ptr IShellDispatch, bstrDir: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ControlPanelItem(self, bstrDir)
-proc IsRestricted*(self: ptr IShellDispatch2, Group: BSTR, Restriction: BSTR, plRestrictValue: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsRestricted(self, Group, Restriction, plRestrictValue)
-proc ShellExecute*(self: ptr IShellDispatch2, File: BSTR, vArgs: VARIANT, vDir: VARIANT, vOperation: VARIANT, vShow: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShellExecute(self, File, vArgs, vDir, vOperation, vShow)
-proc FindPrinter*(self: ptr IShellDispatch2, name: BSTR, location: BSTR, model: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindPrinter(self, name, location, model)
-proc GetSystemInformation*(self: ptr IShellDispatch2, name: BSTR, pv: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSystemInformation(self, name, pv)
-proc mServiceStart*(self: ptr IShellDispatch2, ServiceName: BSTR, Persistent: VARIANT, pSuccess: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ServiceStart(self, ServiceName, Persistent, pSuccess)
-proc mServiceStop*(self: ptr IShellDispatch2, ServiceName: BSTR, Persistent: VARIANT, pSuccess: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ServiceStop(self, ServiceName, Persistent, pSuccess)
-proc IsServiceRunning*(self: ptr IShellDispatch2, ServiceName: BSTR, pRunning: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsServiceRunning(self, ServiceName, pRunning)
-proc CanStartStopService*(self: ptr IShellDispatch2, ServiceName: BSTR, pCanStartStop: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CanStartStopService(self, ServiceName, pCanStartStop)
-proc ShowBrowserBar*(self: ptr IShellDispatch2, bstrClsid: BSTR, bShow: VARIANT, pSuccess: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowBrowserBar(self, bstrClsid, bShow, pSuccess)
-proc AddToRecent*(self: ptr IShellDispatch3, varFile: VARIANT, bstrCategory: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddToRecent(self, varFile, bstrCategory)
-proc WindowsSecurity*(self: ptr IShellDispatch4): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WindowsSecurity(self)
-proc ToggleDesktop*(self: ptr IShellDispatch4): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ToggleDesktop(self)
-proc ExplorerPolicy*(self: ptr IShellDispatch4, bstrPolicyName: BSTR, pValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExplorerPolicy(self, bstrPolicyName, pValue)
-proc GetSetting*(self: ptr IShellDispatch4, lSetting: LONG, pResult: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSetting(self, lSetting, pResult)
-proc WindowSwitcher*(self: ptr IShellDispatch5): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WindowSwitcher(self)
-proc SearchCommand*(self: ptr IShellDispatch6): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SearchCommand(self)
-proc SetFocus*(self: ptr IFileSearchBand): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFocus(self)
-proc SetSearchParameters*(self: ptr IFileSearchBand, pbstrSearchID: ptr BSTR, bNavToResults: VARIANT_BOOL, pvarScope: ptr VARIANT, pvarQueryFile: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSearchParameters(self, pbstrSearchID, bNavToResults, pvarScope, pvarQueryFile)
-proc get_SearchID*(self: ptr IFileSearchBand, pbstrSearchID: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_SearchID(self, pbstrSearchID)
-proc get_Scope*(self: ptr IFileSearchBand, pvarScope: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Scope(self, pvarScope)
-proc get_QueryFile*(self: ptr IFileSearchBand, pvarFile: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_QueryFile(self, pvarFile)
-proc FinalBack*(self: ptr IWebWizardHost): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FinalBack(self)
-proc FinalNext*(self: ptr IWebWizardHost): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FinalNext(self)
-proc Cancel*(self: ptr IWebWizardHost): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Cancel(self)
-proc put_Caption*(self: ptr IWebWizardHost, bstrCaption: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Caption(self, bstrCaption)
-proc get_Caption*(self: ptr IWebWizardHost, pbstrCaption: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Caption(self, pbstrCaption)
-proc put_Property*(self: ptr IWebWizardHost, bstrPropertyName: BSTR, pvProperty: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Property(self, bstrPropertyName, pvProperty)
-proc get_Property*(self: ptr IWebWizardHost, bstrPropertyName: BSTR, pvProperty: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Property(self, bstrPropertyName, pvProperty)
-proc SetWizardButtons*(self: ptr IWebWizardHost, vfEnableBack: VARIANT_BOOL, vfEnableNext: VARIANT_BOOL, vfLastPage: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetWizardButtons(self, vfEnableBack, vfEnableNext, vfLastPage)
-proc SetHeaderText*(self: ptr IWebWizardHost, bstrHeaderTitle: BSTR, bstrHeaderSubtitle: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHeaderText(self, bstrHeaderTitle, bstrHeaderSubtitle)
-proc PassportAuthenticate*(self: ptr INewWDEvents, bstrSignInUrl: BSTR, pvfAuthenitcated: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PassportAuthenticate(self, bstrSignInUrl, pvfAuthenitcated)
-proc Init*(self: ptr IAutoComplete, hwndEdit: HWND, punkACL: ptr IUnknown, pwszRegKeyPath: LPCWSTR, pwszQuickComplete: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Init(self, hwndEdit, punkACL, pwszRegKeyPath, pwszQuickComplete)
-proc Enable*(self: ptr IAutoComplete, fEnable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Enable(self, fEnable)
-proc SetOptions*(self: ptr IAutoComplete2, dwFlag: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOptions(self, dwFlag)
-proc GetOptions*(self: ptr IAutoComplete2, pdwFlag: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOptions(self, pdwFlag)
-proc NextItem*(self: ptr IEnumACString, pszUrl: LPWSTR, cchMax: ULONG, pulSortIndex: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NextItem(self, pszUrl, cchMax, pulSortIndex)
-proc SetEnumOptions*(self: ptr IEnumACString, dwOptions: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetEnumOptions(self, dwOptions)
-proc GetEnumOptions*(self: ptr IEnumACString, pdwOptions: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEnumOptions(self, pdwOptions)
-proc SetAsyncMode*(self: ptr IDataObjectAsyncCapability, fDoOpAsync: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAsyncMode(self, fDoOpAsync)
-proc GetAsyncMode*(self: ptr IDataObjectAsyncCapability, pfIsOpAsync: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAsyncMode(self, pfIsOpAsync)
-proc StartOperation*(self: ptr IDataObjectAsyncCapability, pbcReserved: ptr IBindCtx): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StartOperation(self, pbcReserved)
-proc InOperation*(self: ptr IDataObjectAsyncCapability, pfInAsyncOp: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InOperation(self, pfInAsyncOp)
-proc EndOperation*(self: ptr IDataObjectAsyncCapability, hResult: HRESULT, pbcReserved: ptr IBindCtx, dwEffects: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EndOperation(self, hResult, pbcReserved, dwEffects)
-proc GetCount*(self: ptr IObjectArray, pcObjects: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCount(self, pcObjects)
-proc GetAt*(self: ptr IObjectArray, uiIndex: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAt(self, uiIndex, riid, ppv)
-proc AddObject*(self: ptr IObjectCollection, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddObject(self, punk)
-proc AddFromArray*(self: ptr IObjectCollection, poaSource: ptr IObjectArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddFromArray(self, poaSource)
-proc RemoveObjectAt*(self: ptr IObjectCollection, uiIndex: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveObjectAt(self, uiIndex)
-proc Clear*(self: ptr IObjectCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clear(self)
-proc QueryContextMenu*(self: ptr IContextMenu, hmenu: HMENU, indexMenu: UINT, idCmdFirst: UINT, idCmdLast: UINT, uFlags: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryContextMenu(self, hmenu, indexMenu, idCmdFirst, idCmdLast, uFlags)
-proc InvokeCommand*(self: ptr IContextMenu, pici: ptr CMINVOKECOMMANDINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvokeCommand(self, pici)
-proc GetCommandString*(self: ptr IContextMenu, idCmd: UINT_PTR, uType: UINT, pReserved: ptr UINT, pszName: ptr CHAR, cchMax: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCommandString(self, idCmd, uType, pReserved, pszName, cchMax)
-proc HandleMenuMsg*(self: ptr IContextMenu2, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleMenuMsg(self, uMsg, wParam, lParam)
-proc HandleMenuMsg2*(self: ptr IContextMenu3, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, plResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleMenuMsg2(self, uMsg, wParam, lParam, plResult)
-proc SetKeyState*(self: ptr IExecuteCommand, grfKeyState: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetKeyState(self, grfKeyState)
-proc SetParameters*(self: ptr IExecuteCommand, pszParameters: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetParameters(self, pszParameters)
-proc SetPosition*(self: ptr IExecuteCommand, pt: POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPosition(self, pt)
-proc SetShowWindow*(self: ptr IExecuteCommand, nShow: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetShowWindow(self, nShow)
-proc SetNoShowUI*(self: ptr IExecuteCommand, fNoShowUI: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetNoShowUI(self, fNoShowUI)
-proc SetDirectory*(self: ptr IExecuteCommand, pszDirectory: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDirectory(self, pszDirectory)
-proc Execute*(self: ptr IExecuteCommand): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Execute(self)
-proc Initialize*(self: ptr IPersistFolder, pidl: PCIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pidl)
-proc Run*(self: ptr IRunnableTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Run(self)
-proc Kill*(self: ptr IRunnableTask, bWait: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Kill(self, bWait)
-proc Suspend*(self: ptr IRunnableTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Suspend(self)
-proc Resume*(self: ptr IRunnableTask): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Resume(self)
-proc IsRunning*(self: ptr IRunnableTask): ULONG {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsRunning(self)
-proc AddTask*(self: ptr IShellTaskScheduler, prt: ptr IRunnableTask, rtoid: REFTASKOWNERID, lParam: DWORD_PTR, dwPriority: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddTask(self, prt, rtoid, lParam, dwPriority)
-proc RemoveTasks*(self: ptr IShellTaskScheduler, rtoid: REFTASKOWNERID, lParam: DWORD_PTR, bWaitIfRunning: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveTasks(self, rtoid, lParam, bWaitIfRunning)
-proc CountTasks*(self: ptr IShellTaskScheduler, rtoid: REFTASKOWNERID): UINT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CountTasks(self, rtoid)
-proc Status*(self: ptr IShellTaskScheduler, dwReleaseStatus: DWORD, dwThreadTimeout: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Status(self, dwReleaseStatus, dwThreadTimeout)
-proc GetCodePage*(self: ptr IQueryCodePage, puiCodePage: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCodePage(self, puiCodePage)
-proc SetCodePage*(self: ptr IQueryCodePage, uiCodePage: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCodePage(self, uiCodePage)
-proc GetCurFolder*(self: ptr IPersistFolder2, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurFolder(self, ppidl)
-proc InitializeEx*(self: ptr IPersistFolder3, pbc: ptr IBindCtx, pidlRoot: PCIDLIST_ABSOLUTE, ppfti: ptr PERSIST_FOLDER_TARGET_INFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeEx(self, pbc, pidlRoot, ppfti)
-proc GetFolderTargetInfo*(self: ptr IPersistFolder3, ppfti: ptr PERSIST_FOLDER_TARGET_INFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolderTargetInfo(self, ppfti)
-proc SetIDList*(self: ptr IPersistIDList, pidl: PCIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetIDList(self, pidl)
-proc GetIDList*(self: ptr IPersistIDList, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIDList(self, ppidl)
-proc Next*(self: ptr IEnumIDList, celt: ULONG, rgelt: ptr PITEMID_CHILD, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumIDList, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumIDList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumIDList, ppenum: ptr ptr IEnumIDList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc Next*(self: ptr IEnumFullIDList, celt: ULONG, rgelt: ptr PIDLIST_ABSOLUTE, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumFullIDList, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumFullIDList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumFullIDList, ppenum: ptr ptr IEnumFullIDList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc SetMode*(self: ptr IObjectWithFolderEnumMode, feMode: FOLDER_ENUM_MODE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMode(self, feMode)
-proc GetMode*(self: ptr IObjectWithFolderEnumMode, pfeMode: ptr FOLDER_ENUM_MODE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMode(self, pfeMode)
-proc SetItem*(self: ptr IParseAndCreateItem, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetItem(self, psi)
-proc GetItem*(self: ptr IParseAndCreateItem, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItem(self, riid, ppv)
-proc ParseDisplayName*(self: ptr IShellFolder, hwnd: HWND, pbc: ptr IBindCtx, pszDisplayName: LPWSTR, pchEaten: ptr ULONG, ppidl: ptr PIDLIST_RELATIVE, pdwAttributes: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseDisplayName(self, hwnd, pbc, pszDisplayName, pchEaten, ppidl, pdwAttributes)
-proc EnumObjects*(self: ptr IShellFolder, hwnd: HWND, grfFlags: SHCONTF, ppenumIDList: ptr ptr IEnumIDList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumObjects(self, hwnd, grfFlags, ppenumIDList)
-proc BindToObject*(self: ptr IShellFolder, pidl: PCUIDLIST_RELATIVE, pbc: ptr IBindCtx, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindToObject(self, pidl, pbc, riid, ppv)
-proc BindToStorage*(self: ptr IShellFolder, pidl: PCUIDLIST_RELATIVE, pbc: ptr IBindCtx, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindToStorage(self, pidl, pbc, riid, ppv)
-proc CompareIDs*(self: ptr IShellFolder, lParam: LPARAM, pidl1: PCUIDLIST_RELATIVE, pidl2: PCUIDLIST_RELATIVE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CompareIDs(self, lParam, pidl1, pidl2)
-proc CreateViewObject*(self: ptr IShellFolder, hwndOwner: HWND, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateViewObject(self, hwndOwner, riid, ppv)
-proc GetAttributesOf*(self: ptr IShellFolder, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, rgfInOut: ptr SFGAOF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAttributesOf(self, cidl, apidl, rgfInOut)
-proc GetUIObjectOf*(self: ptr IShellFolder, hwndOwner: HWND, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, riid: REFIID, rgfReserved: ptr UINT, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUIObjectOf(self, hwndOwner, cidl, apidl, riid, rgfReserved, ppv)
-proc GetDisplayNameOf*(self: ptr IShellFolder, pidl: PCUITEMID_CHILD, uFlags: SHGDNF, pName: ptr STRRET): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDisplayNameOf(self, pidl, uFlags, pName)
-proc SetNameOf*(self: ptr IShellFolder, hwnd: HWND, pidl: PCUITEMID_CHILD, pszName: LPCWSTR, uFlags: SHGDNF, ppidlOut: ptr PITEMID_CHILD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetNameOf(self, hwnd, pidl, pszName, uFlags, ppidlOut)
-proc Next*(self: ptr IEnumExtraSearch, celt: ULONG, rgelt: ptr EXTRASEARCH, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumExtraSearch, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumExtraSearch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumExtraSearch, ppenum: ptr ptr IEnumExtraSearch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc GetDefaultSearchGUID*(self: ptr IShellFolder2, pguid: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultSearchGUID(self, pguid)
-proc EnumSearches*(self: ptr IShellFolder2, ppenum: ptr ptr IEnumExtraSearch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumSearches(self, ppenum)
-proc GetDefaultColumn*(self: ptr IShellFolder2, dwRes: DWORD, pSort: ptr ULONG, pDisplay: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultColumn(self, dwRes, pSort, pDisplay)
-proc GetDefaultColumnState*(self: ptr IShellFolder2, iColumn: UINT, pcsFlags: ptr SHCOLSTATEF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultColumnState(self, iColumn, pcsFlags)
-proc GetDetailsEx*(self: ptr IShellFolder2, pidl: PCUITEMID_CHILD, pscid: ptr SHCOLUMNID, pv: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDetailsEx(self, pidl, pscid, pv)
-proc GetDetailsOf*(self: ptr IShellFolder2, pidl: PCUITEMID_CHILD, iColumn: UINT, psd: ptr SHELLDETAILS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDetailsOf(self, pidl, iColumn, psd)
-proc MapColumnToSCID*(self: ptr IShellFolder2, iColumn: UINT, pscid: ptr SHCOLUMNID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MapColumnToSCID(self, iColumn, pscid)
-proc SetFolderViewOptions*(self: ptr IFolderViewOptions, fvoMask: FOLDERVIEWOPTIONS, fvoFlags: FOLDERVIEWOPTIONS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFolderViewOptions(self, fvoMask, fvoFlags)
-proc GetFolderViewOptions*(self: ptr IFolderViewOptions, pfvoFlags: ptr FOLDERVIEWOPTIONS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolderViewOptions(self, pfvoFlags)
-proc TranslateAccelerator*(self: ptr IShellView, pmsg: ptr MSG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAccelerator(self, pmsg)
-proc EnableModeless*(self: ptr IShellView, fEnable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnableModeless(self, fEnable)
-proc UIActivate*(self: ptr IShellView, uState: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UIActivate(self, uState)
-proc Refresh*(self: ptr IShellView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Refresh(self)
-proc CreateViewWindow*(self: ptr IShellView, psvPrevious: ptr IShellView, pfs: LPCFOLDERSETTINGS, psb: ptr IShellBrowser, prcView: ptr RECT, phWnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateViewWindow(self, psvPrevious, pfs, psb, prcView, phWnd)
-proc DestroyViewWindow*(self: ptr IShellView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DestroyViewWindow(self)
-proc GetCurrentInfo*(self: ptr IShellView, pfs: LPFOLDERSETTINGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentInfo(self, pfs)
-proc AddPropertySheetPages*(self: ptr IShellView, dwReserved: DWORD, pfn: LPFNSVADDPROPSHEETPAGE, lparam: LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddPropertySheetPages(self, dwReserved, pfn, lparam)
-proc SaveViewState*(self: ptr IShellView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SaveViewState(self)
-proc SelectItem*(self: ptr IShellView, pidlItem: PCUITEMID_CHILD, uFlags: SVSIF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SelectItem(self, pidlItem, uFlags)
-proc GetItemObject*(self: ptr IShellView, uItem: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemObject(self, uItem, riid, ppv)
-proc GetView*(self: ptr IShellView2, pvid: ptr SHELLVIEWID, uView: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetView(self, pvid, uView)
-proc CreateViewWindow2*(self: ptr IShellView2, lpParams: LPSV2CVW2_PARAMS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateViewWindow2(self, lpParams)
-proc HandleRename*(self: ptr IShellView2, pidlNew: PCUITEMID_CHILD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleRename(self, pidlNew)
-proc SelectAndPositionItem*(self: ptr IShellView2, pidlItem: PCUITEMID_CHILD, uFlags: UINT, ppt: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SelectAndPositionItem(self, pidlItem, uFlags, ppt)
-proc CreateViewWindow3*(self: ptr IShellView3, psbOwner: ptr IShellBrowser, psvPrev: ptr IShellView, dwViewFlags: SV3CVW3_FLAGS, dwMask: FOLDERFLAGS, dwFlags: FOLDERFLAGS, fvMode: FOLDERVIEWMODE, pvid: ptr SHELLVIEWID, prcView: ptr RECT, phwndView: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateViewWindow3(self, psbOwner, psvPrev, dwViewFlags, dwMask, dwFlags, fvMode, pvid, prcView, phwndView)
-proc GetCurrentViewMode*(self: ptr IFolderView, pViewMode: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentViewMode(self, pViewMode)
-proc SetCurrentViewMode*(self: ptr IFolderView, ViewMode: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCurrentViewMode(self, ViewMode)
-proc GetFolder*(self: ptr IFolderView, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolder(self, riid, ppv)
-proc Item*(self: ptr IFolderView, iItemIndex: int32, ppidl: ptr PITEMID_CHILD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Item(self, iItemIndex, ppidl)
-proc ItemCount*(self: ptr IFolderView, uFlags: UINT, pcItems: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ItemCount(self, uFlags, pcItems)
-proc Items*(self: ptr IFolderView, uFlags: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Items(self, uFlags, riid, ppv)
-proc GetSelectionMarkedItem*(self: ptr IFolderView, piItem: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelectionMarkedItem(self, piItem)
-proc GetFocusedItem*(self: ptr IFolderView, piItem: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFocusedItem(self, piItem)
-proc GetItemPosition*(self: ptr IFolderView, pidl: PCUITEMID_CHILD, ppt: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemPosition(self, pidl, ppt)
-proc GetSpacing*(self: ptr IFolderView, ppt: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSpacing(self, ppt)
-proc GetDefaultSpacing*(self: ptr IFolderView, ppt: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultSpacing(self, ppt)
-proc GetAutoArrange*(self: ptr IFolderView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAutoArrange(self)
-proc SelectItem*(self: ptr IFolderView, iItem: int32, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SelectItem(self, iItem, dwFlags)
-proc SelectAndPositionItems*(self: ptr IFolderView, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, apt: ptr POINT, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SelectAndPositionItems(self, cidl, apidl, apt, dwFlags)
-proc GetCondition*(self: ptr ISearchBoxInfo, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCondition(self, riid, ppv)
-proc GetText*(self: ptr ISearchBoxInfo, ppsz: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetText(self, ppsz)
-proc SetGroupBy*(self: ptr IFolderView2, key: REFPROPERTYKEY, fAscending: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetGroupBy(self, key, fAscending)
-proc GetGroupBy*(self: ptr IFolderView2, pkey: ptr PROPERTYKEY, pfAscending: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetGroupBy(self, pkey, pfAscending)
-proc SetViewProperty*(self: ptr IFolderView2, pidl: PCUITEMID_CHILD, propkey: REFPROPERTYKEY, propvar: REFPROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetViewProperty(self, pidl, propkey, propvar)
-proc GetViewProperty*(self: ptr IFolderView2, pidl: PCUITEMID_CHILD, propkey: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetViewProperty(self, pidl, propkey, ppropvar)
-proc SetTileViewProperties*(self: ptr IFolderView2, pidl: PCUITEMID_CHILD, pszPropList: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTileViewProperties(self, pidl, pszPropList)
-proc SetExtendedTileViewProperties*(self: ptr IFolderView2, pidl: PCUITEMID_CHILD, pszPropList: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetExtendedTileViewProperties(self, pidl, pszPropList)
-proc SetText*(self: ptr IFolderView2, iType: FVTEXTTYPE, pwszText: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetText(self, iType, pwszText)
-proc SetCurrentFolderFlags*(self: ptr IFolderView2, dwMask: DWORD, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCurrentFolderFlags(self, dwMask, dwFlags)
-proc GetCurrentFolderFlags*(self: ptr IFolderView2, pdwFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentFolderFlags(self, pdwFlags)
-proc GetSortColumnCount*(self: ptr IFolderView2, pcColumns: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSortColumnCount(self, pcColumns)
-proc SetSortColumns*(self: ptr IFolderView2, rgSortColumns: ptr SORTCOLUMN, cColumns: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSortColumns(self, rgSortColumns, cColumns)
-proc GetSortColumns*(self: ptr IFolderView2, rgSortColumns: ptr SORTCOLUMN, cColumns: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSortColumns(self, rgSortColumns, cColumns)
-proc GetItem*(self: ptr IFolderView2, iItem: int32, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItem(self, iItem, riid, ppv)
-proc GetVisibleItem*(self: ptr IFolderView2, iStart: int32, fPrevious: WINBOOL, piItem: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetVisibleItem(self, iStart, fPrevious, piItem)
-proc GetSelectedItem*(self: ptr IFolderView2, iStart: int32, piItem: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelectedItem(self, iStart, piItem)
-proc GetSelection*(self: ptr IFolderView2, fNoneImpliesFolder: WINBOOL, ppsia: ptr ptr IShellItemArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelection(self, fNoneImpliesFolder, ppsia)
-proc GetSelectionState*(self: ptr IFolderView2, pidl: PCUITEMID_CHILD, pdwFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelectionState(self, pidl, pdwFlags)
-proc InvokeVerbOnSelection*(self: ptr IFolderView2, pszVerb: LPCSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvokeVerbOnSelection(self, pszVerb)
-proc SetViewModeAndIconSize*(self: ptr IFolderView2, uViewMode: FOLDERVIEWMODE, iImageSize: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetViewModeAndIconSize(self, uViewMode, iImageSize)
-proc GetViewModeAndIconSize*(self: ptr IFolderView2, puViewMode: ptr FOLDERVIEWMODE, piImageSize: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetViewModeAndIconSize(self, puViewMode, piImageSize)
-proc SetGroupSubsetCount*(self: ptr IFolderView2, cVisibleRows: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetGroupSubsetCount(self, cVisibleRows)
-proc GetGroupSubsetCount*(self: ptr IFolderView2, pcVisibleRows: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetGroupSubsetCount(self, pcVisibleRows)
-proc SetRedraw*(self: ptr IFolderView2, fRedrawOn: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetRedraw(self, fRedrawOn)
-proc IsMoveInSameFolder*(self: ptr IFolderView2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsMoveInSameFolder(self)
-proc DoRename*(self: ptr IFolderView2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoRename(self)
-proc GetColumnPropertyList*(self: ptr IFolderViewSettings, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColumnPropertyList(self, riid, ppv)
-proc GetGroupByProperty*(self: ptr IFolderViewSettings, pkey: ptr PROPERTYKEY, pfGroupAscending: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetGroupByProperty(self, pkey, pfGroupAscending)
-proc GetViewMode*(self: ptr IFolderViewSettings, plvm: ptr FOLDERLOGICALVIEWMODE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetViewMode(self, plvm)
-proc GetIconSize*(self: ptr IFolderViewSettings, puIconSize: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIconSize(self, puIconSize)
-proc GetFolderFlags*(self: ptr IFolderViewSettings, pfolderMask: ptr FOLDERFLAGS, pfolderFlags: ptr FOLDERFLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolderFlags(self, pfolderMask, pfolderFlags)
-proc GetSortColumns*(self: ptr IFolderViewSettings, rgSortColumns: ptr SORTCOLUMN, cColumnsIn: UINT, pcColumnsOut: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSortColumns(self, rgSortColumns, cColumnsIn, pcColumnsOut)
-proc GetGroupSubsetCount*(self: ptr IFolderViewSettings, pcVisibleRows: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetGroupSubsetCount(self, pcVisibleRows)
-proc mSetBackgroundColor*(self: ptr IPreviewHandlerVisuals, color: COLORREF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBackgroundColor(self, color)
-proc SetFont*(self: ptr IPreviewHandlerVisuals, plf: ptr LOGFONTW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFont(self, plf)
-proc SetTextColor*(self: ptr IPreviewHandlerVisuals, color: COLORREF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTextColor(self, color)
-proc SetWatermark*(self: ptr IVisualProperties, hbmp: HBITMAP, vpwf: VPWATERMARKFLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetWatermark(self, hbmp, vpwf)
-proc SetColor*(self: ptr IVisualProperties, vpcf: VPCOLORFLAGS, cr: COLORREF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetColor(self, vpcf, cr)
-proc GetColor*(self: ptr IVisualProperties, vpcf: VPCOLORFLAGS, pcr: ptr COLORREF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColor(self, vpcf, pcr)
-proc SetItemHeight*(self: ptr IVisualProperties, cyItemInPixels: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetItemHeight(self, cyItemInPixels)
-proc GetItemHeight*(self: ptr IVisualProperties, cyItemInPixels: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemHeight(self, cyItemInPixels)
-proc SetFont*(self: ptr IVisualProperties, plf: ptr LOGFONTW, bRedraw: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFont(self, plf, bRedraw)
-proc GetFont*(self: ptr IVisualProperties, plf: ptr LOGFONTW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFont(self, plf)
-proc SetTheme*(self: ptr IVisualProperties, pszSubAppName: LPCWSTR, pszSubIdList: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTheme(self, pszSubAppName, pszSubIdList)
-proc OnDefaultCommand*(self: ptr ICommDlgBrowser, ppshv: ptr IShellView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDefaultCommand(self, ppshv)
-proc OnStateChange*(self: ptr ICommDlgBrowser, ppshv: ptr IShellView, uChange: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnStateChange(self, ppshv, uChange)
-proc IncludeObject*(self: ptr ICommDlgBrowser, ppshv: ptr IShellView, pidl: PCUITEMID_CHILD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IncludeObject(self, ppshv, pidl)
-proc Notify*(self: ptr ICommDlgBrowser2, ppshv: ptr IShellView, dwNotifyType: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Notify(self, ppshv, dwNotifyType)
-proc GetDefaultMenuText*(self: ptr ICommDlgBrowser2, ppshv: ptr IShellView, pszText: LPWSTR, cchMax: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultMenuText(self, ppshv, pszText, cchMax)
-proc GetViewFlags*(self: ptr ICommDlgBrowser2, pdwFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetViewFlags(self, pdwFlags)
-proc OnColumnClicked*(self: ptr ICommDlgBrowser3, ppshv: ptr IShellView, iColumn: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnColumnClicked(self, ppshv, iColumn)
-proc GetCurrentFilter*(self: ptr ICommDlgBrowser3, pszFileSpec: LPWSTR, cchFileSpec: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentFilter(self, pszFileSpec, cchFileSpec)
-proc OnPreViewCreated*(self: ptr ICommDlgBrowser3, ppshv: ptr IShellView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnPreViewCreated(self, ppshv)
-proc SetColumnInfo*(self: ptr IColumnManager, propkey: REFPROPERTYKEY, pcmci: ptr CM_COLUMNINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetColumnInfo(self, propkey, pcmci)
-proc GetColumnInfo*(self: ptr IColumnManager, propkey: REFPROPERTYKEY, pcmci: ptr CM_COLUMNINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColumnInfo(self, propkey, pcmci)
-proc GetColumnCount*(self: ptr IColumnManager, dwFlags: CM_ENUM_FLAGS, puCount: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColumnCount(self, dwFlags, puCount)
-proc GetColumns*(self: ptr IColumnManager, dwFlags: CM_ENUM_FLAGS, rgkeyOrder: ptr PROPERTYKEY, cColumns: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColumns(self, dwFlags, rgkeyOrder, cColumns)
-proc SetColumns*(self: ptr IColumnManager, rgkeyOrder: ptr PROPERTYKEY, cVisible: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetColumns(self, rgkeyOrder, cVisible)
-proc SetFilter*(self: ptr IFolderFilterSite, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFilter(self, punk)
-proc ShouldShow*(self: ptr IFolderFilter, psf: ptr IShellFolder, pidlFolder: PCIDLIST_ABSOLUTE, pidlItem: PCUITEMID_CHILD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShouldShow(self, psf, pidlFolder, pidlItem)
-proc GetEnumFlags*(self: ptr IFolderFilter, psf: ptr IShellFolder, pidlFolder: PCIDLIST_ABSOLUTE, phwnd: ptr HWND, pgrfFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEnumFlags(self, psf, pidlFolder, phwnd, pgrfFlags)
-proc OnFocusChangeIS*(self: ptr IInputObjectSite, punkObj: ptr IUnknown, fSetFocus: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnFocusChangeIS(self, punkObj, fSetFocus)
-proc UIActivateIO*(self: ptr IInputObject, fActivate: WINBOOL, pMsg: ptr MSG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UIActivateIO(self, fActivate, pMsg)
-proc HasFocusIO*(self: ptr IInputObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HasFocusIO(self)
-proc TranslateAcceleratorIO*(self: ptr IInputObject, pMsg: ptr MSG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAcceleratorIO(self, pMsg)
-proc TranslateAcceleratorGlobal*(self: ptr IInputObject2, pMsg: ptr MSG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAcceleratorGlobal(self, pMsg)
-proc GetIconOf*(self: ptr IShellIcon, pidl: PCUITEMID_CHILD, flags: UINT, pIconIndex: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIconOf(self, pidl, flags, pIconIndex)
-proc InsertMenusSB*(self: ptr IShellBrowser, hmenuShared: HMENU, lpMenuWidths: LPOLEMENUGROUPWIDTHS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InsertMenusSB(self, hmenuShared, lpMenuWidths)
-proc SetMenuSB*(self: ptr IShellBrowser, hmenuShared: HMENU, holemenuRes: HOLEMENU, hwndActiveObject: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMenuSB(self, hmenuShared, holemenuRes, hwndActiveObject)
-proc RemoveMenusSB*(self: ptr IShellBrowser, hmenuShared: HMENU): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveMenusSB(self, hmenuShared)
-proc SetStatusTextSB*(self: ptr IShellBrowser, pszStatusText: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetStatusTextSB(self, pszStatusText)
-proc EnableModelessSB*(self: ptr IShellBrowser, fEnable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnableModelessSB(self, fEnable)
-proc TranslateAcceleratorSB*(self: ptr IShellBrowser, pmsg: ptr MSG, wID: WORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAcceleratorSB(self, pmsg, wID)
-proc BrowseObject*(self: ptr IShellBrowser, pidl: PCUIDLIST_RELATIVE, wFlags: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BrowseObject(self, pidl, wFlags)
-proc GetViewStateStream*(self: ptr IShellBrowser, grfMode: DWORD, ppStrm: ptr ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetViewStateStream(self, grfMode, ppStrm)
-proc GetControlWindow*(self: ptr IShellBrowser, id: UINT, phwnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetControlWindow(self, id, phwnd)
-proc SendControlMsg*(self: ptr IShellBrowser, id: UINT, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, pret: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SendControlMsg(self, id, uMsg, wParam, lParam, pret)
-proc QueryActiveShellView*(self: ptr IShellBrowser, ppshv: ptr ptr IShellView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryActiveShellView(self, ppshv)
-proc OnViewWindowActive*(self: ptr IShellBrowser, pshv: ptr IShellView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnViewWindowActive(self, pshv)
-proc SetToolbarItems*(self: ptr IShellBrowser, lpButtons: LPTBBUTTONSB, nButtons: UINT, uFlags: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetToolbarItems(self, lpButtons, nButtons, uFlags)
-proc ProfferService*(self: ptr IProfferService, guidService: REFGUID, psp: ptr IServiceProvider, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ProfferService(self, guidService, psp, pdwCookie)
-proc RevokeService*(self: ptr IProfferService, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RevokeService(self, dwCookie)
-proc BindToHandler*(self: ptr IShellItem, pbc: ptr IBindCtx, bhid: REFGUID, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindToHandler(self, pbc, bhid, riid, ppv)
-proc GetParent*(self: ptr IShellItem, ppsi: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetParent(self, ppsi)
-proc GetDisplayName*(self: ptr IShellItem, sigdnName: SIGDN, ppszName: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDisplayName(self, sigdnName, ppszName)
-proc GetAttributes*(self: ptr IShellItem, sfgaoMask: SFGAOF, psfgaoAttribs: ptr SFGAOF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAttributes(self, sfgaoMask, psfgaoAttribs)
-proc Compare*(self: ptr IShellItem, psi: ptr IShellItem, hint: SICHINTF, piOrder: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Compare(self, psi, hint, piOrder)
-proc GetPropertyStore*(self: ptr IShellItem2, flags: GETPROPERTYSTOREFLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyStore(self, flags, riid, ppv)
-proc GetPropertyStoreWithCreateObject*(self: ptr IShellItem2, flags: GETPROPERTYSTOREFLAGS, punkCreateObject: ptr IUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyStoreWithCreateObject(self, flags, punkCreateObject, riid, ppv)
-proc GetPropertyStoreForKeys*(self: ptr IShellItem2, rgKeys: ptr PROPERTYKEY, cKeys: UINT, flags: GETPROPERTYSTOREFLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyStoreForKeys(self, rgKeys, cKeys, flags, riid, ppv)
-proc GetPropertyDescriptionList*(self: ptr IShellItem2, keyType: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyDescriptionList(self, keyType, riid, ppv)
-proc Update*(self: ptr IShellItem2, pbc: ptr IBindCtx): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Update(self, pbc)
-proc GetProperty*(self: ptr IShellItem2, key: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty(self, key, ppropvar)
-proc GetCLSID*(self: ptr IShellItem2, key: REFPROPERTYKEY, pclsid: ptr CLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCLSID(self, key, pclsid)
-proc GetFileTime*(self: ptr IShellItem2, key: REFPROPERTYKEY, pft: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFileTime(self, key, pft)
-proc GetInt32*(self: ptr IShellItem2, key: REFPROPERTYKEY, pi: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInt32(self, key, pi)
-proc GetString*(self: ptr IShellItem2, key: REFPROPERTYKEY, ppsz: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetString(self, key, ppsz)
-proc GetUInt32*(self: ptr IShellItem2, key: REFPROPERTYKEY, pui: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUInt32(self, key, pui)
-proc GetUInt64*(self: ptr IShellItem2, key: REFPROPERTYKEY, pull: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUInt64(self, key, pull)
-proc GetBool*(self: ptr IShellItem2, key: REFPROPERTYKEY, pf: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBool(self, key, pf)
-proc GetImage*(self: ptr IShellItemImageFactory, size: SIZE, flags: SIIGBF, phbm: ptr HBITMAP): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetImage(self, size, flags, phbm)
-proc OnPictureChange*(self: ptr IUserAccountChangeCallback, pszUserName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnPictureChange(self, pszUserName)
-proc Next*(self: ptr IEnumShellItems, celt: ULONG, rgelt: ptr ptr IShellItem, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumShellItems, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumShellItems): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumShellItems, ppenum: ptr ptr IEnumShellItems): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc UpdateProgress*(self: ptr ITransferAdviseSink, ullSizeCurrent: ULONGLONG, ullSizeTotal: ULONGLONG, nFilesCurrent: int32, nFilesTotal: int32, nFoldersCurrent: int32, nFoldersTotal: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateProgress(self, ullSizeCurrent, ullSizeTotal, nFilesCurrent, nFilesTotal, nFoldersCurrent, nFoldersTotal)
-proc UpdateTransferState*(self: ptr ITransferAdviseSink, ts: TRANSFER_ADVISE_STATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateTransferState(self, ts)
-proc ConfirmOverwrite*(self: ptr ITransferAdviseSink, psiSource: ptr IShellItem, psiDestParent: ptr IShellItem, pszName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ConfirmOverwrite(self, psiSource, psiDestParent, pszName)
-proc ConfirmEncryptionLoss*(self: ptr ITransferAdviseSink, psiSource: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ConfirmEncryptionLoss(self, psiSource)
-proc FileFailure*(self: ptr ITransferAdviseSink, psi: ptr IShellItem, pszItem: LPCWSTR, hrError: HRESULT, pszRename: LPWSTR, cchRename: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FileFailure(self, psi, pszItem, hrError, pszRename, cchRename)
-proc SubStreamFailure*(self: ptr ITransferAdviseSink, psi: ptr IShellItem, pszStreamName: LPCWSTR, hrError: HRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SubStreamFailure(self, psi, pszStreamName, hrError)
-proc PropertyFailure*(self: ptr ITransferAdviseSink, psi: ptr IShellItem, pkey: ptr PROPERTYKEY, hrError: HRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PropertyFailure(self, psi, pkey, hrError)
-proc Advise*(self: ptr ITransferSource, psink: ptr ITransferAdviseSink, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, psink, pdwCookie)
-proc Unadvise*(self: ptr ITransferSource, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwCookie)
-proc SetProperties*(self: ptr ITransferSource, pproparray: ptr IPropertyChangeArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProperties(self, pproparray)
-proc OpenItem*(self: ptr ITransferSource, psi: ptr IShellItem, flags: TRANSFER_SOURCE_FLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OpenItem(self, psi, flags, riid, ppv)
-proc MoveItem*(self: ptr ITransferSource, psi: ptr IShellItem, psiParentDst: ptr IShellItem, pszNameDst: LPCWSTR, flags: TRANSFER_SOURCE_FLAGS, ppsiNew: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveItem(self, psi, psiParentDst, pszNameDst, flags, ppsiNew)
-proc RecycleItem*(self: ptr ITransferSource, psiSource: ptr IShellItem, psiParentDest: ptr IShellItem, flags: TRANSFER_SOURCE_FLAGS, ppsiNewDest: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RecycleItem(self, psiSource, psiParentDest, flags, ppsiNewDest)
-proc RemoveItem*(self: ptr ITransferSource, psiSource: ptr IShellItem, flags: TRANSFER_SOURCE_FLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveItem(self, psiSource, flags)
-proc RenameItem*(self: ptr ITransferSource, psiSource: ptr IShellItem, pszNewName: LPCWSTR, flags: TRANSFER_SOURCE_FLAGS, ppsiNewDest: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RenameItem(self, psiSource, pszNewName, flags, ppsiNewDest)
-proc LinkItem*(self: ptr ITransferSource, psiSource: ptr IShellItem, psiParentDest: ptr IShellItem, pszNewName: LPCWSTR, flags: TRANSFER_SOURCE_FLAGS, ppsiNewDest: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LinkItem(self, psiSource, psiParentDest, pszNewName, flags, ppsiNewDest)
-proc ApplyPropertiesToItem*(self: ptr ITransferSource, psiSource: ptr IShellItem, ppsiNew: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ApplyPropertiesToItem(self, psiSource, ppsiNew)
-proc GetDefaultDestinationName*(self: ptr ITransferSource, psiSource: ptr IShellItem, psiParentDest: ptr IShellItem, ppszDestinationName: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultDestinationName(self, psiSource, psiParentDest, ppszDestinationName)
-proc EnterFolder*(self: ptr ITransferSource, psiChildFolderDest: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnterFolder(self, psiChildFolderDest)
-proc LeaveFolder*(self: ptr ITransferSource, psiChildFolderDest: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LeaveFolder(self, psiChildFolderDest)
-proc Next*(self: ptr IEnumResources, celt: ULONG, psir: ptr SHELL_ITEM_RESOURCE, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, psir, pceltFetched)
-proc Skip*(self: ptr IEnumResources, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumResources): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumResources, ppenumr: ptr ptr IEnumResources): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenumr)
-proc GetAttributes*(self: ptr IShellItemResources, pdwAttributes: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAttributes(self, pdwAttributes)
-proc GetSize*(self: ptr IShellItemResources, pullSize: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSize(self, pullSize)
-proc GetTimes*(self: ptr IShellItemResources, pftCreation: ptr FILETIME, pftWrite: ptr FILETIME, pftAccess: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTimes(self, pftCreation, pftWrite, pftAccess)
-proc SetTimes*(self: ptr IShellItemResources, pftCreation: ptr FILETIME, pftWrite: ptr FILETIME, pftAccess: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTimes(self, pftCreation, pftWrite, pftAccess)
-proc GetResourceDescription*(self: ptr IShellItemResources, pcsir: ptr SHELL_ITEM_RESOURCE, ppszDescription: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetResourceDescription(self, pcsir, ppszDescription)
-proc EnumResources*(self: ptr IShellItemResources, ppenumr: ptr ptr IEnumResources): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumResources(self, ppenumr)
-proc SupportsResource*(self: ptr IShellItemResources, pcsir: ptr SHELL_ITEM_RESOURCE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SupportsResource(self, pcsir)
-proc OpenResource*(self: ptr IShellItemResources, pcsir: ptr SHELL_ITEM_RESOURCE, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OpenResource(self, pcsir, riid, ppv)
-proc CreateResource*(self: ptr IShellItemResources, pcsir: ptr SHELL_ITEM_RESOURCE, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateResource(self, pcsir, riid, ppv)
-proc MarkForDelete*(self: ptr IShellItemResources): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MarkForDelete(self)
-proc Advise*(self: ptr ITransferDestination, psink: ptr ITransferAdviseSink, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, psink, pdwCookie)
-proc Unadvise*(self: ptr ITransferDestination, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwCookie)
-proc CreateItem*(self: ptr ITransferDestination, pszName: LPCWSTR, dwAttributes: DWORD, ullSize: ULONGLONG, flags: TRANSFER_SOURCE_FLAGS, riidItem: REFIID, ppvItem: ptr pointer, riidResources: REFIID, ppvResources: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateItem(self, pszName, dwAttributes, ullSize, flags, riidItem, ppvItem, riidResources, ppvResources)
-proc ReadAsync*(self: ptr IStreamAsync, pv: pointer, cb: DWORD, pcbRead: LPDWORD, lpOverlapped: LPOVERLAPPED): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReadAsync(self, pv, cb, pcbRead, lpOverlapped)
-proc WriteAsync*(self: ptr IStreamAsync, lpBuffer: pointer, cb: DWORD, pcbWritten: LPDWORD, lpOverlapped: LPOVERLAPPED): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WriteAsync(self, lpBuffer, cb, pcbWritten, lpOverlapped)
-proc OverlappedResult*(self: ptr IStreamAsync, lpOverlapped: LPOVERLAPPED, lpNumberOfBytesTransferred: LPDWORD, bWait: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OverlappedResult(self, lpOverlapped, lpNumberOfBytesTransferred, bWait)
-proc CancelIo*(self: ptr IStreamAsync): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CancelIo(self)
-proc GetSectorSize*(self: ptr IStreamUnbufferedInfo, pcbSectorSize: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSectorSize(self, pcbSectorSize)
-proc StartOperations*(self: ptr IFileOperationProgressSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StartOperations(self)
-proc FinishOperations*(self: ptr IFileOperationProgressSink, hrResult: HRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FinishOperations(self, hrResult)
-proc PreRenameItem*(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem, pszNewName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreRenameItem(self, dwFlags, psiItem, pszNewName)
-proc PostRenameItem*(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem, pszNewName: LPCWSTR, hrRename: HRESULT, psiNewlyCreated: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostRenameItem(self, dwFlags, psiItem, pszNewName, hrRename, psiNewlyCreated)
-proc PreMoveItem*(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem, psiDestinationFolder: ptr IShellItem, pszNewName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreMoveItem(self, dwFlags, psiItem, psiDestinationFolder, pszNewName)
-proc PostMoveItem*(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem, psiDestinationFolder: ptr IShellItem, pszNewName: LPCWSTR, hrMove: HRESULT, psiNewlyCreated: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostMoveItem(self, dwFlags, psiItem, psiDestinationFolder, pszNewName, hrMove, psiNewlyCreated)
-proc PreCopyItem*(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem, psiDestinationFolder: ptr IShellItem, pszNewName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreCopyItem(self, dwFlags, psiItem, psiDestinationFolder, pszNewName)
-proc PostCopyItem*(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem, psiDestinationFolder: ptr IShellItem, pszNewName: LPCWSTR, hrCopy: HRESULT, psiNewlyCreated: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostCopyItem(self, dwFlags, psiItem, psiDestinationFolder, pszNewName, hrCopy, psiNewlyCreated)
-proc PreDeleteItem*(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreDeleteItem(self, dwFlags, psiItem)
-proc PostDeleteItem*(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem, hrDelete: HRESULT, psiNewlyCreated: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostDeleteItem(self, dwFlags, psiItem, hrDelete, psiNewlyCreated)
-proc PreNewItem*(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiDestinationFolder: ptr IShellItem, pszNewName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PreNewItem(self, dwFlags, psiDestinationFolder, pszNewName)
-proc PostNewItem*(self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiDestinationFolder: ptr IShellItem, pszNewName: LPCWSTR, pszTemplateName: LPCWSTR, dwFileAttributes: DWORD, hrNew: HRESULT, psiNewItem: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostNewItem(self, dwFlags, psiDestinationFolder, pszNewName, pszTemplateName, dwFileAttributes, hrNew, psiNewItem)
-proc UpdateProgress*(self: ptr IFileOperationProgressSink, iWorkTotal: UINT, iWorkSoFar: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateProgress(self, iWorkTotal, iWorkSoFar)
-proc ResetTimer*(self: ptr IFileOperationProgressSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResetTimer(self)
-proc PauseTimer*(self: ptr IFileOperationProgressSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PauseTimer(self)
-proc ResumeTimer*(self: ptr IFileOperationProgressSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResumeTimer(self)
-proc BindToHandler*(self: ptr IShellItemArray, pbc: ptr IBindCtx, bhid: REFGUID, riid: REFIID, ppvOut: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindToHandler(self, pbc, bhid, riid, ppvOut)
-proc GetPropertyStore*(self: ptr IShellItemArray, flags: GETPROPERTYSTOREFLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyStore(self, flags, riid, ppv)
-proc GetPropertyDescriptionList*(self: ptr IShellItemArray, keyType: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyDescriptionList(self, keyType, riid, ppv)
-proc GetAttributes*(self: ptr IShellItemArray, AttribFlags: SIATTRIBFLAGS, sfgaoMask: SFGAOF, psfgaoAttribs: ptr SFGAOF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAttributes(self, AttribFlags, sfgaoMask, psfgaoAttribs)
-proc GetCount*(self: ptr IShellItemArray, pdwNumItems: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCount(self, pdwNumItems)
-proc GetItemAt*(self: ptr IShellItemArray, dwIndex: DWORD, ppsi: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemAt(self, dwIndex, ppsi)
-proc EnumItems*(self: ptr IShellItemArray, ppenumShellItems: ptr ptr IEnumShellItems): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumItems(self, ppenumShellItems)
-proc Initialize*(self: ptr IInitializeWithItem, psi: ptr IShellItem, grfMode: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, psi, grfMode)
-proc SetSelection*(self: ptr IObjectWithSelection, psia: ptr IShellItemArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSelection(self, psia)
-proc GetSelection*(self: ptr IObjectWithSelection, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelection(self, riid, ppv)
-proc RemoveBackReferences*(self: ptr IObjectWithBackReferences): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveBackReferences(self)
-proc ParsePropertyName*(self: ptr IPropertyUI, pszName: LPCWSTR, pfmtid: ptr FMTID, ppid: ptr PROPID, pchEaten: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParsePropertyName(self, pszName, pfmtid, ppid, pchEaten)
-proc GetCannonicalName*(self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, pwszText: LPWSTR, cchText: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCannonicalName(self, fmtid, pid, pwszText, cchText)
-proc GetDisplayName*(self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, flags: PROPERTYUI_NAME_FLAGS, pwszText: LPWSTR, cchText: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDisplayName(self, fmtid, pid, flags, pwszText, cchText)
-proc GetPropertyDescription*(self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, pwszText: LPWSTR, cchText: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyDescription(self, fmtid, pid, pwszText, cchText)
-proc GetDefaultWidth*(self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, pcxChars: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultWidth(self, fmtid, pid, pcxChars)
-proc GetFlags*(self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, pflags: ptr PROPERTYUI_FLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFlags(self, fmtid, pid, pflags)
-proc FormatForDisplay*(self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, ppropvar: ptr PROPVARIANT, puiff: PROPERTYUI_FORMAT_FLAGS, pwszText: LPWSTR, cchText: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FormatForDisplay(self, fmtid, pid, ppropvar, puiff, pwszText, cchText)
-proc GetHelpInfo*(self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, pwszHelpFile: LPWSTR, cch: DWORD, puHelpID: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHelpInfo(self, fmtid, pid, pwszHelpFile, cch, puHelpID)
-proc CanCategorizeOnSCID*(self: ptr ICategoryProvider, pscid: ptr SHCOLUMNID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CanCategorizeOnSCID(self, pscid)
-proc GetDefaultCategory*(self: ptr ICategoryProvider, pguid: ptr GUID, pscid: ptr SHCOLUMNID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultCategory(self, pguid, pscid)
-proc GetCategoryForSCID*(self: ptr ICategoryProvider, pscid: ptr SHCOLUMNID, pguid: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCategoryForSCID(self, pscid, pguid)
-proc EnumCategories*(self: ptr ICategoryProvider, penum: ptr ptr IEnumGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumCategories(self, penum)
-proc GetCategoryName*(self: ptr ICategoryProvider, pguid: ptr GUID, pszName: LPWSTR, cch: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCategoryName(self, pguid, pszName, cch)
-proc CreateCategory*(self: ptr ICategoryProvider, pguid: ptr GUID, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateCategory(self, pguid, riid, ppv)
-proc GetDescription*(self: ptr ICategorizer, pszDesc: LPWSTR, cch: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDescription(self, pszDesc, cch)
-proc GetCategory*(self: ptr ICategorizer, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, rgCategoryIds: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCategory(self, cidl, apidl, rgCategoryIds)
-proc GetCategoryInfo*(self: ptr ICategorizer, dwCategoryId: DWORD, pci: ptr TCATEGORY_INFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCategoryInfo(self, dwCategoryId, pci)
-proc CompareCategory*(self: ptr ICategorizer, csfFlags: CATSORT_FLAGS, dwCategoryId1: DWORD, dwCategoryId2: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CompareCategory(self, csfFlags, dwCategoryId1, dwCategoryId2)
-proc DragEnter*(self: ptr IDropTargetHelper, hwndTarget: HWND, pDataObject: ptr IDataObject, ppt: ptr POINT, dwEffect: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragEnter(self, hwndTarget, pDataObject, ppt, dwEffect)
-proc DragLeave*(self: ptr IDropTargetHelper): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragLeave(self)
-proc DragOver*(self: ptr IDropTargetHelper, ppt: ptr POINT, dwEffect: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragOver(self, ppt, dwEffect)
-proc Drop*(self: ptr IDropTargetHelper, pDataObject: ptr IDataObject, ppt: ptr POINT, dwEffect: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Drop(self, pDataObject, ppt, dwEffect)
-proc Show*(self: ptr IDropTargetHelper, fShow: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Show(self, fShow)
-proc InitializeFromBitmap*(self: ptr IDragSourceHelper, pshdi: LPSHDRAGIMAGE, pDataObject: ptr IDataObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeFromBitmap(self, pshdi, pDataObject)
-proc InitializeFromWindow*(self: ptr IDragSourceHelper, hwnd: HWND, ppt: ptr POINT, pDataObject: ptr IDataObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeFromWindow(self, hwnd, ppt, pDataObject)
-proc SetFlags*(self: ptr IDragSourceHelper2, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFlags(self, dwFlags)
-proc GetPath*(self: ptr IShellLinkA, pszFile: LPSTR, cch: int32, pfd: ptr WIN32_FIND_DATAA, fFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPath(self, pszFile, cch, pfd, fFlags)
-proc GetIDList*(self: ptr IShellLinkA, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIDList(self, ppidl)
-proc SetIDList*(self: ptr IShellLinkA, pidl: PCIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetIDList(self, pidl)
-proc GetDescription*(self: ptr IShellLinkA, pszName: LPSTR, cch: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDescription(self, pszName, cch)
-proc SetDescription*(self: ptr IShellLinkA, pszName: LPCSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDescription(self, pszName)
-proc GetWorkingDirectory*(self: ptr IShellLinkA, pszDir: LPSTR, cch: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWorkingDirectory(self, pszDir, cch)
-proc SetWorkingDirectory*(self: ptr IShellLinkA, pszDir: LPCSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetWorkingDirectory(self, pszDir)
-proc GetArguments*(self: ptr IShellLinkA, pszArgs: LPSTR, cch: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetArguments(self, pszArgs, cch)
-proc SetArguments*(self: ptr IShellLinkA, pszArgs: LPCSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetArguments(self, pszArgs)
-proc GetHotkey*(self: ptr IShellLinkA, pwHotkey: ptr WORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHotkey(self, pwHotkey)
-proc SetHotkey*(self: ptr IShellLinkA, wHotkey: WORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHotkey(self, wHotkey)
-proc GetShowCmd*(self: ptr IShellLinkA, piShowCmd: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetShowCmd(self, piShowCmd)
-proc SetShowCmd*(self: ptr IShellLinkA, iShowCmd: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetShowCmd(self, iShowCmd)
-proc GetIconLocation*(self: ptr IShellLinkA, pszIconPath: LPSTR, cch: int32, piIcon: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIconLocation(self, pszIconPath, cch, piIcon)
-proc SetIconLocation*(self: ptr IShellLinkA, pszIconPath: LPCSTR, iIcon: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetIconLocation(self, pszIconPath, iIcon)
-proc SetRelativePath*(self: ptr IShellLinkA, pszPathRel: LPCSTR, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetRelativePath(self, pszPathRel, dwReserved)
-proc Resolve*(self: ptr IShellLinkA, hwnd: HWND, fFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Resolve(self, hwnd, fFlags)
-proc SetPath*(self: ptr IShellLinkA, pszFile: LPCSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPath(self, pszFile)
-proc GetPath*(self: ptr IShellLinkW, pszFile: LPWSTR, cch: int32, pfd: ptr WIN32_FIND_DATAW, fFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPath(self, pszFile, cch, pfd, fFlags)
-proc GetIDList*(self: ptr IShellLinkW, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIDList(self, ppidl)
-proc SetIDList*(self: ptr IShellLinkW, pidl: PCIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetIDList(self, pidl)
-proc GetDescription*(self: ptr IShellLinkW, pszName: LPWSTR, cch: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDescription(self, pszName, cch)
-proc SetDescription*(self: ptr IShellLinkW, pszName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDescription(self, pszName)
-proc GetWorkingDirectory*(self: ptr IShellLinkW, pszDir: LPWSTR, cch: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWorkingDirectory(self, pszDir, cch)
-proc SetWorkingDirectory*(self: ptr IShellLinkW, pszDir: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetWorkingDirectory(self, pszDir)
-proc GetArguments*(self: ptr IShellLinkW, pszArgs: LPWSTR, cch: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetArguments(self, pszArgs, cch)
-proc SetArguments*(self: ptr IShellLinkW, pszArgs: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetArguments(self, pszArgs)
-proc GetHotkey*(self: ptr IShellLinkW, pwHotkey: ptr WORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHotkey(self, pwHotkey)
-proc SetHotkey*(self: ptr IShellLinkW, wHotkey: WORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHotkey(self, wHotkey)
-proc GetShowCmd*(self: ptr IShellLinkW, piShowCmd: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetShowCmd(self, piShowCmd)
-proc SetShowCmd*(self: ptr IShellLinkW, iShowCmd: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetShowCmd(self, iShowCmd)
-proc GetIconLocation*(self: ptr IShellLinkW, pszIconPath: LPWSTR, cch: int32, piIcon: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIconLocation(self, pszIconPath, cch, piIcon)
-proc SetIconLocation*(self: ptr IShellLinkW, pszIconPath: LPCWSTR, iIcon: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetIconLocation(self, pszIconPath, iIcon)
-proc SetRelativePath*(self: ptr IShellLinkW, pszPathRel: LPCWSTR, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetRelativePath(self, pszPathRel, dwReserved)
-proc Resolve*(self: ptr IShellLinkW, hwnd: HWND, fFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Resolve(self, hwnd, fFlags)
-proc SetPath*(self: ptr IShellLinkW, pszFile: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPath(self, pszFile)
-proc AddDataBlock*(self: ptr IShellLinkDataList, pDataBlock: pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddDataBlock(self, pDataBlock)
-proc CopyDataBlock*(self: ptr IShellLinkDataList, dwSig: DWORD, ppDataBlock: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyDataBlock(self, dwSig, ppDataBlock)
-proc RemoveDataBlock*(self: ptr IShellLinkDataList, dwSig: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveDataBlock(self, dwSig)
-proc GetFlags*(self: ptr IShellLinkDataList, pdwFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFlags(self, pdwFlags)
-proc SetFlags*(self: ptr IShellLinkDataList, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFlags(self, dwFlags)
-proc ResolveShellLink*(self: ptr IResolveShellLink, punkLink: ptr IUnknown, hwnd: HWND, fFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResolveShellLink(self, punkLink, hwnd, fFlags)
-proc Initialize*(self: ptr IActionProgressDialog, flags: SPINITF, pszTitle: LPCWSTR, pszCancel: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, flags, pszTitle, pszCancel)
-proc Stop*(self: ptr IActionProgressDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Stop(self)
-proc Initialize*(self: ptr IHWEventHandler, pszParams: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pszParams)
-proc HandleEvent*(self: ptr IHWEventHandler, pszDeviceID: LPCWSTR, pszAltDeviceID: LPCWSTR, pszEventType: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleEvent(self, pszDeviceID, pszAltDeviceID, pszEventType)
-proc HandleEventWithContent*(self: ptr IHWEventHandler, pszDeviceID: LPCWSTR, pszAltDeviceID: LPCWSTR, pszEventType: LPCWSTR, pszContentTypeHandler: LPCWSTR, pdataobject: ptr IDataObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleEventWithContent(self, pszDeviceID, pszAltDeviceID, pszEventType, pszContentTypeHandler, pdataobject)
-proc HandleEventWithHWND*(self: ptr IHWEventHandler2, pszDeviceID: LPCWSTR, pszAltDeviceID: LPCWSTR, pszEventType: LPCWSTR, hwndOwner: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleEventWithHWND(self, pszDeviceID, pszAltDeviceID, pszEventType, hwndOwner)
-proc AllowAutoPlay*(self: ptr IQueryCancelAutoPlay, pszPath: LPCWSTR, dwContentType: DWORD, pszLabel: LPCWSTR, dwSerialNumber: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AllowAutoPlay(self, pszPath, dwContentType, pszLabel, dwSerialNumber)
-proc GetDynamicInfo*(self: ptr IDynamicHWHandler, pszDeviceID: LPCWSTR, dwContentType: DWORD, ppszAction: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDynamicInfo(self, pszDeviceID, dwContentType, ppszAction)
-proc Begin*(self: ptr IActionProgress, action: SPACTION, flags: SPBEGINF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Begin(self, action, flags)
-proc UpdateProgress*(self: ptr IActionProgress, ulCompleted: ULONGLONG, ulTotal: ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateProgress(self, ulCompleted, ulTotal)
-proc UpdateText*(self: ptr IActionProgress, sptext: SPTEXT, pszText: LPCWSTR, fMayCompact: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateText(self, sptext, pszText, fMayCompact)
-proc QueryCancel*(self: ptr IActionProgress, pfCancelled: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryCancel(self, pfCancelled)
-proc ResetCancel*(self: ptr IActionProgress): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResetCancel(self)
-proc End*(self: ptr IActionProgress): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.End(self)
-proc Initialize*(self: ptr IShellExtInit, pidlFolder: PCIDLIST_ABSOLUTE, pdtobj: ptr IDataObject, hkeyProgID: HKEY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pidlFolder, pdtobj, hkeyProgID)
-proc AddPages*(self: ptr IShellPropSheetExt, pfnAddPage: LPFNSVADDPROPSHEETPAGE, lParam: LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddPages(self, pfnAddPage, lParam)
-proc ReplacePage*(self: ptr IShellPropSheetExt, uPageID: EXPPS, pfnReplaceWith: LPFNSVADDPROPSHEETPAGE, lParam: LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReplacePage(self, uPageID, pfnReplaceWith, lParam)
-proc Initialize*(self: ptr IRemoteComputer, pszMachine: LPCWSTR, bEnumerating: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pszMachine, bEnumerating)
-proc QueryContinue*(self: ptr IQueryContinue): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryContinue(self)
-proc GetCancelEvent*(self: ptr IObjectWithCancelEvent, phEvent: ptr HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCancelEvent(self, phEvent)
-proc SetBalloonInfo*(self: ptr IUserNotification, pszTitle: LPCWSTR, pszText: LPCWSTR, dwInfoFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBalloonInfo(self, pszTitle, pszText, dwInfoFlags)
-proc SetBalloonRetry*(self: ptr IUserNotification, dwShowTime: DWORD, dwInterval: DWORD, cRetryCount: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBalloonRetry(self, dwShowTime, dwInterval, cRetryCount)
-proc SetIconInfo*(self: ptr IUserNotification, hIcon: HICON, pszToolTip: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetIconInfo(self, hIcon, pszToolTip)
-proc Show*(self: ptr IUserNotification, pqc: ptr IQueryContinue, dwContinuePollInterval: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Show(self, pqc, dwContinuePollInterval)
-proc PlaySound*(self: ptr IUserNotification, pszSoundName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PlaySound(self, pszSoundName)
-proc OnBalloonUserClick*(self: ptr IUserNotificationCallback, pt: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnBalloonUserClick(self, pt)
-proc OnLeftClick*(self: ptr IUserNotificationCallback, pt: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnLeftClick(self, pt)
-proc OnContextMenu*(self: ptr IUserNotificationCallback, pt: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnContextMenu(self, pt)
-proc SetBalloonInfo*(self: ptr IUserNotification2, pszTitle: LPCWSTR, pszText: LPCWSTR, dwInfoFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBalloonInfo(self, pszTitle, pszText, dwInfoFlags)
-proc SetBalloonRetry*(self: ptr IUserNotification2, dwShowTime: DWORD, dwInterval: DWORD, cRetryCount: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBalloonRetry(self, dwShowTime, dwInterval, cRetryCount)
-proc SetIconInfo*(self: ptr IUserNotification2, hIcon: HICON, pszToolTip: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetIconInfo(self, hIcon, pszToolTip)
-proc Show*(self: ptr IUserNotification2, pqc: ptr IQueryContinue, dwContinuePollInterval: DWORD, pSink: ptr IUserNotificationCallback): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Show(self, pqc, dwContinuePollInterval, pSink)
-proc PlaySound*(self: ptr IUserNotification2, pszSoundName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PlaySound(self, pszSoundName)
-proc GetValidCharacters*(self: ptr IItemNameLimits, ppwszValidChars: ptr LPWSTR, ppwszInvalidChars: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetValidCharacters(self, ppwszValidChars, ppwszInvalidChars)
-proc GetMaxLength*(self: ptr IItemNameLimits, pszName: LPCWSTR, piMaxNameLen: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMaxLength(self, pszName, piMaxNameLen)
-proc SetDisplayName*(self: ptr ISearchFolderItemFactory, pszDisplayName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDisplayName(self, pszDisplayName)
-proc SetFolderTypeID*(self: ptr ISearchFolderItemFactory, ftid: FOLDERTYPEID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFolderTypeID(self, ftid)
-proc SetFolderLogicalViewMode*(self: ptr ISearchFolderItemFactory, flvm: FOLDERLOGICALVIEWMODE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFolderLogicalViewMode(self, flvm)
-proc SetIconSize*(self: ptr ISearchFolderItemFactory, iIconSize: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetIconSize(self, iIconSize)
-proc SetVisibleColumns*(self: ptr ISearchFolderItemFactory, cVisibleColumns: UINT, rgKey: ptr PROPERTYKEY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetVisibleColumns(self, cVisibleColumns, rgKey)
-proc SetSortColumns*(self: ptr ISearchFolderItemFactory, cSortColumns: UINT, rgSortColumns: ptr SORTCOLUMN): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSortColumns(self, cSortColumns, rgSortColumns)
-proc SetGroupColumn*(self: ptr ISearchFolderItemFactory, keyGroup: REFPROPERTYKEY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetGroupColumn(self, keyGroup)
-proc SetStacks*(self: ptr ISearchFolderItemFactory, cStackKeys: UINT, rgStackKeys: ptr PROPERTYKEY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetStacks(self, cStackKeys, rgStackKeys)
-proc SetScope*(self: ptr ISearchFolderItemFactory, psiaScope: ptr IShellItemArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetScope(self, psiaScope)
-proc SetCondition*(self: ptr ISearchFolderItemFactory, pCondition: ptr ICondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCondition(self, pCondition)
-proc GetShellItem*(self: ptr ISearchFolderItemFactory, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetShellItem(self, riid, ppv)
-proc GetIDList*(self: ptr ISearchFolderItemFactory, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIDList(self, ppidl)
-proc GetLocation*(self: ptr IExtractImage, pszPathBuffer: LPWSTR, cch: DWORD, pdwPriority: ptr DWORD, prgSize: ptr SIZE, dwRecClrDepth: DWORD, pdwFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLocation(self, pszPathBuffer, cch, pdwPriority, prgSize, dwRecClrDepth, pdwFlags)
-proc Extract*(self: ptr IExtractImage, phBmpThumbnail: ptr HBITMAP): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Extract(self, phBmpThumbnail)
-proc GetDateStamp*(self: ptr IExtractImage2, pDateStamp: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDateStamp(self, pDateStamp)
-proc GetThumbnailHandler*(self: ptr IThumbnailHandlerFactory, pidlChild: PCUITEMID_CHILD, pbc: ptr IBindCtx, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetThumbnailHandler(self, pidlChild, pbc, riid, ppv)
-proc SetParentAndItem*(self: ptr IParentAndItem, pidlParent: PCIDLIST_ABSOLUTE, psf: ptr IShellFolder, pidlChild: PCUITEMID_CHILD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetParentAndItem(self, pidlParent, psf, pidlChild)
-proc GetParentAndItem*(self: ptr IParentAndItem, ppidlParent: ptr PIDLIST_ABSOLUTE, ppsf: ptr ptr IShellFolder, ppidlChild: ptr PITEMID_CHILD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetParentAndItem(self, ppidlParent, ppsf, ppidlChild)
-proc ShowDW*(self: ptr IDockingWindow, fShow: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowDW(self, fShow)
-proc CloseDW*(self: ptr IDockingWindow, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CloseDW(self, dwReserved)
-proc ResizeBorderDW*(self: ptr IDockingWindow, prcBorder: LPCRECT, punkToolbarSite: ptr IUnknown, fReserved: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResizeBorderDW(self, prcBorder, punkToolbarSite, fReserved)
-proc GetBandInfo*(self: ptr IDeskBand, dwBandID: DWORD, dwViewMode: DWORD, pdbi: ptr DESKBANDINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBandInfo(self, dwBandID, dwViewMode, pdbi)
-proc GetDefaultBandWidth*(self: ptr IDeskBandInfo, dwBandID: DWORD, dwViewMode: DWORD, pnWidth: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultBandWidth(self, dwBandID, dwViewMode, pnWidth)
-proc CanRenderComposited*(self: ptr IDeskBand2, pfCanRenderComposited: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CanRenderComposited(self, pfCanRenderComposited)
-proc SetCompositionState*(self: ptr IDeskBand2, fCompositionEnabled: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCompositionState(self, fCompositionEnabled)
-proc GetCompositionState*(self: ptr IDeskBand2, pfCompositionEnabled: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCompositionState(self, pfCompositionEnabled)
-proc HrInit*(self: ptr ITaskbarList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HrInit(self)
-proc AddTab*(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddTab(self, hwnd)
-proc DeleteTab*(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteTab(self, hwnd)
-proc ActivateTab*(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ActivateTab(self, hwnd)
-proc SetActiveAlt*(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetActiveAlt(self, hwnd)
-proc MarkFullscreenWindow*(self: ptr ITaskbarList2, hwnd: HWND, fFullscreen: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MarkFullscreenWindow(self, hwnd, fFullscreen)
-proc SetProgressValue*(self: ptr ITaskbarList3, hwnd: HWND, ullCompleted: ULONGLONG, ullTotal: ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProgressValue(self, hwnd, ullCompleted, ullTotal)
-proc SetProgressState*(self: ptr ITaskbarList3, hwnd: HWND, tbpFlags: TBPFLAG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProgressState(self, hwnd, tbpFlags)
-proc RegisterTab*(self: ptr ITaskbarList3, hwndTab: HWND, hwndMDI: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterTab(self, hwndTab, hwndMDI)
-proc UnregisterTab*(self: ptr ITaskbarList3, hwndTab: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterTab(self, hwndTab)
-proc SetTabOrder*(self: ptr ITaskbarList3, hwndTab: HWND, hwndInsertBefore: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTabOrder(self, hwndTab, hwndInsertBefore)
-proc SetTabActive*(self: ptr ITaskbarList3, hwndTab: HWND, hwndMDI: HWND, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTabActive(self, hwndTab, hwndMDI, dwReserved)
-proc ThumbBarAddButtons*(self: ptr ITaskbarList3, hwnd: HWND, cButtons: UINT, pButton: LPTHUMBBUTTON): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ThumbBarAddButtons(self, hwnd, cButtons, pButton)
-proc ThumbBarUpdateButtons*(self: ptr ITaskbarList3, hwnd: HWND, cButtons: UINT, pButton: LPTHUMBBUTTON): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ThumbBarUpdateButtons(self, hwnd, cButtons, pButton)
-proc ThumbBarSetImageList*(self: ptr ITaskbarList3, hwnd: HWND, himl: HIMAGELIST): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ThumbBarSetImageList(self, hwnd, himl)
-proc SetOverlayIcon*(self: ptr ITaskbarList3, hwnd: HWND, hIcon: HICON, pszDescription: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOverlayIcon(self, hwnd, hIcon, pszDescription)
-proc SetThumbnailTooltip*(self: ptr ITaskbarList3, hwnd: HWND, pszTip: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetThumbnailTooltip(self, hwnd, pszTip)
-proc SetThumbnailClip*(self: ptr ITaskbarList3, hwnd: HWND, prcClip: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetThumbnailClip(self, hwnd, prcClip)
-proc SetTabProperties*(self: ptr ITaskbarList4, hwndTab: HWND, stpFlags: STPFLAG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTabProperties(self, hwndTab, stpFlags)
-proc RemoveFromList*(self: ptr IStartMenuPinnedList, pitem: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveFromList(self, pitem)
-proc GetRecorderDriveLetter*(self: ptr ICDBurn, pszDrive: LPWSTR, cch: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRecorderDriveLetter(self, pszDrive, cch)
-proc Burn*(self: ptr ICDBurn, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Burn(self, hwnd)
-proc HasRecordableDrive*(self: ptr ICDBurn, pfHasRecorder: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HasRecordableDrive(self, pfHasRecorder)
-proc GetPreviousPage*(self: ptr IWizardSite, phpage: ptr HPROPSHEETPAGE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPreviousPage(self, phpage)
-proc GetNextPage*(self: ptr IWizardSite, phpage: ptr HPROPSHEETPAGE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNextPage(self, phpage)
-proc GetCancelledPage*(self: ptr IWizardSite, phpage: ptr HPROPSHEETPAGE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCancelledPage(self, phpage)
-proc AddPages*(self: ptr IWizardExtension, aPages: ptr HPROPSHEETPAGE, cPages: UINT, pnPagesAdded: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddPages(self, aPages, cPages, pnPagesAdded)
-proc GetFirstPage*(self: ptr IWizardExtension, phpage: ptr HPROPSHEETPAGE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFirstPage(self, phpage)
-proc GetLastPage*(self: ptr IWizardExtension, phpage: ptr HPROPSHEETPAGE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLastPage(self, phpage)
-proc SetInitialURL*(self: ptr IWebWizardExtension, pszURL: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetInitialURL(self, pszURL)
-proc SetErrorURL*(self: ptr IWebWizardExtension, pszErrorURL: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetErrorURL(self, pszErrorURL)
-proc Initialize*(self: ptr IPublishingWizard, pdo: ptr IDataObject, dwOptions: DWORD, pszServiceScope: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pdo, dwOptions, pszServiceScope)
-proc GetTransferManifest*(self: ptr IPublishingWizard, phrFromTransfer: ptr HRESULT, pdocManifest: ptr ptr IXMLDOMDocument): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTransferManifest(self, phrFromTransfer, pdocManifest)
-proc Initialize*(self: ptr IFolderViewHost, hwndParent: HWND, pdo: ptr IDataObject, prc: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, hwndParent, pdo, prc)
-proc OnNavigationPending*(self: ptr IExplorerBrowserEvents, pidlFolder: PCIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnNavigationPending(self, pidlFolder)
-proc OnViewCreated*(self: ptr IExplorerBrowserEvents, psv: ptr IShellView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnViewCreated(self, psv)
-proc OnNavigationComplete*(self: ptr IExplorerBrowserEvents, pidlFolder: PCIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnNavigationComplete(self, pidlFolder)
-proc OnNavigationFailed*(self: ptr IExplorerBrowserEvents, pidlFolder: PCIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnNavigationFailed(self, pidlFolder)
-proc Initialize*(self: ptr IExplorerBrowser, hwndParent: HWND, prc: ptr RECT, pfs: ptr FOLDERSETTINGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, hwndParent, prc, pfs)
-proc Destroy*(self: ptr IExplorerBrowser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Destroy(self)
-proc SetRect*(self: ptr IExplorerBrowser, phdwp: ptr HDWP, rcBrowser: RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetRect(self, phdwp, rcBrowser)
-proc SetPropertyBag*(self: ptr IExplorerBrowser, pszPropertyBag: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPropertyBag(self, pszPropertyBag)
-proc SetEmptyText*(self: ptr IExplorerBrowser, pszEmptyText: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetEmptyText(self, pszEmptyText)
-proc SetFolderSettings*(self: ptr IExplorerBrowser, pfs: ptr FOLDERSETTINGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFolderSettings(self, pfs)
-proc Advise*(self: ptr IExplorerBrowser, psbe: ptr IExplorerBrowserEvents, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, psbe, pdwCookie)
-proc Unadvise*(self: ptr IExplorerBrowser, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwCookie)
-proc SetOptions*(self: ptr IExplorerBrowser, dwFlag: EXPLORER_BROWSER_OPTIONS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOptions(self, dwFlag)
-proc GetOptions*(self: ptr IExplorerBrowser, pdwFlag: ptr EXPLORER_BROWSER_OPTIONS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOptions(self, pdwFlag)
-proc BrowseToIDList*(self: ptr IExplorerBrowser, pidl: PCUIDLIST_RELATIVE, uFlags: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BrowseToIDList(self, pidl, uFlags)
-proc BrowseToObject*(self: ptr IExplorerBrowser, punk: ptr IUnknown, uFlags: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BrowseToObject(self, punk, uFlags)
-proc FillFromObject*(self: ptr IExplorerBrowser, punk: ptr IUnknown, dwFlags: EXPLORER_BROWSER_FILL_FLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FillFromObject(self, punk, dwFlags)
-proc RemoveAll*(self: ptr IExplorerBrowser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveAll(self)
-proc GetCurrentView*(self: ptr IExplorerBrowser, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentView(self, riid, ppv)
-proc SetAccessibleName*(self: ptr IAccessibleObject, pszName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAccessibleName(self, pszName)
-proc AddItem*(self: ptr IResultsFolder, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddItem(self, psi)
-proc AddIDList*(self: ptr IResultsFolder, pidl: PCIDLIST_ABSOLUTE, ppidlAdded: ptr PITEMID_CHILD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddIDList(self, pidl, ppidlAdded)
-proc RemoveItem*(self: ptr IResultsFolder, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveItem(self, psi)
-proc RemoveIDList*(self: ptr IResultsFolder, pidl: PCIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveIDList(self, pidl)
-proc RemoveAll*(self: ptr IResultsFolder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveAll(self)
-proc Next*(self: ptr IEnumObjects, celt: ULONG, riid: REFIID, rgelt: ptr pointer, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, riid, rgelt, pceltFetched)
-proc Skip*(self: ptr IEnumObjects, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumObjects): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumObjects, ppenum: ptr ptr IEnumObjects): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc StartProgressDialog*(self: ptr IOperationsProgressDialog, hwndOwner: HWND, flags: OPPROGDLGF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StartProgressDialog(self, hwndOwner, flags)
-proc StopProgressDialog*(self: ptr IOperationsProgressDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StopProgressDialog(self)
-proc SetOperation*(self: ptr IOperationsProgressDialog, action: SPACTION): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOperation(self, action)
-proc SetMode*(self: ptr IOperationsProgressDialog, mode: PDMODE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMode(self, mode)
-proc UpdateProgress*(self: ptr IOperationsProgressDialog, ullPointsCurrent: ULONGLONG, ullPointsTotal: ULONGLONG, ullSizeCurrent: ULONGLONG, ullSizeTotal: ULONGLONG, ullItemsCurrent: ULONGLONG, ullItemsTotal: ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateProgress(self, ullPointsCurrent, ullPointsTotal, ullSizeCurrent, ullSizeTotal, ullItemsCurrent, ullItemsTotal)
-proc UpdateLocations*(self: ptr IOperationsProgressDialog, psiSource: ptr IShellItem, psiTarget: ptr IShellItem, psiItem: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateLocations(self, psiSource, psiTarget, psiItem)
-proc ResetTimer*(self: ptr IOperationsProgressDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResetTimer(self)
-proc PauseTimer*(self: ptr IOperationsProgressDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PauseTimer(self)
-proc ResumeTimer*(self: ptr IOperationsProgressDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResumeTimer(self)
-proc GetMilliseconds*(self: ptr IOperationsProgressDialog, pullElapsed: ptr ULONGLONG, pullRemaining: ptr ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMilliseconds(self, pullElapsed, pullRemaining)
-proc GetOperationStatus*(self: ptr IOperationsProgressDialog, popstatus: ptr PDOPSTATUS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOperationStatus(self, popstatus)
-proc SetCancelInformation*(self: ptr IIOCancelInformation, dwThreadID: DWORD, uMsgCancel: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCancelInformation(self, dwThreadID, uMsgCancel)
-proc GetCancelInformation*(self: ptr IIOCancelInformation, pdwThreadID: ptr DWORD, puMsgCancel: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCancelInformation(self, pdwThreadID, puMsgCancel)
-proc Advise*(self: ptr IFileOperation, pfops: ptr IFileOperationProgressSink, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, pfops, pdwCookie)
-proc Unadvise*(self: ptr IFileOperation, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwCookie)
-proc SetOperationFlags*(self: ptr IFileOperation, dwOperationFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOperationFlags(self, dwOperationFlags)
-proc SetProgressMessage*(self: ptr IFileOperation, pszMessage: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProgressMessage(self, pszMessage)
-proc SetProgressDialog*(self: ptr IFileOperation, popd: ptr IOperationsProgressDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProgressDialog(self, popd)
-proc SetProperties*(self: ptr IFileOperation, pproparray: ptr IPropertyChangeArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProperties(self, pproparray)
-proc SetOwnerWindow*(self: ptr IFileOperation, hwndOwner: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOwnerWindow(self, hwndOwner)
-proc ApplyPropertiesToItem*(self: ptr IFileOperation, psiItem: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ApplyPropertiesToItem(self, psiItem)
-proc ApplyPropertiesToItems*(self: ptr IFileOperation, punkItems: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ApplyPropertiesToItems(self, punkItems)
-proc RenameItem*(self: ptr IFileOperation, psiItem: ptr IShellItem, pszNewName: LPCWSTR, pfopsItem: ptr IFileOperationProgressSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RenameItem(self, psiItem, pszNewName, pfopsItem)
-proc RenameItems*(self: ptr IFileOperation, pUnkItems: ptr IUnknown, pszNewName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RenameItems(self, pUnkItems, pszNewName)
-proc MoveItem*(self: ptr IFileOperation, psiItem: ptr IShellItem, psiDestinationFolder: ptr IShellItem, pszNewName: LPCWSTR, pfopsItem: ptr IFileOperationProgressSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveItem(self, psiItem, psiDestinationFolder, pszNewName, pfopsItem)
-proc MoveItems*(self: ptr IFileOperation, punkItems: ptr IUnknown, psiDestinationFolder: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveItems(self, punkItems, psiDestinationFolder)
-proc CopyItem*(self: ptr IFileOperation, psiItem: ptr IShellItem, psiDestinationFolder: ptr IShellItem, pszCopyName: LPCWSTR, pfopsItem: ptr IFileOperationProgressSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyItem(self, psiItem, psiDestinationFolder, pszCopyName, pfopsItem)
-proc CopyItems*(self: ptr IFileOperation, punkItems: ptr IUnknown, psiDestinationFolder: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyItems(self, punkItems, psiDestinationFolder)
-proc DeleteItem*(self: ptr IFileOperation, psiItem: ptr IShellItem, pfopsItem: ptr IFileOperationProgressSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteItem(self, psiItem, pfopsItem)
-proc DeleteItems*(self: ptr IFileOperation, punkItems: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteItems(self, punkItems)
-proc NewItem*(self: ptr IFileOperation, psiDestinationFolder: ptr IShellItem, dwFileAttributes: DWORD, pszName: LPCWSTR, pszTemplateName: LPCWSTR, pfopsItem: ptr IFileOperationProgressSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NewItem(self, psiDestinationFolder, dwFileAttributes, pszName, pszTemplateName, pfopsItem)
-proc PerformOperations*(self: ptr IFileOperation): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PerformOperations(self)
-proc GetAnyOperationsAborted*(self: ptr IFileOperation, pfAnyOperationsAborted: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAnyOperationsAborted(self, pfAnyOperationsAborted)
-proc QueryObject*(self: ptr IObjectProvider, guidObject: REFGUID, riid: REFIID, ppvOut: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryObject(self, guidObject, riid, ppvOut)
-proc FoundItem*(self: ptr INamespaceWalkCB, psf: ptr IShellFolder, pidl: PCUITEMID_CHILD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FoundItem(self, psf, pidl)
-proc EnterFolder*(self: ptr INamespaceWalkCB, psf: ptr IShellFolder, pidl: PCUITEMID_CHILD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnterFolder(self, psf, pidl)
-proc LeaveFolder*(self: ptr INamespaceWalkCB, psf: ptr IShellFolder, pidl: PCUITEMID_CHILD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LeaveFolder(self, psf, pidl)
-proc InitializeProgressDialog*(self: ptr INamespaceWalkCB, ppszTitle: ptr LPWSTR, ppszCancel: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeProgressDialog(self, ppszTitle, ppszCancel)
-proc WalkComplete*(self: ptr INamespaceWalkCB2, hr: HRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WalkComplete(self, hr)
-proc Walk*(self: ptr INamespaceWalk, punkToWalk: ptr IUnknown, dwFlags: DWORD, cDepth: int32, pnswcb: ptr INamespaceWalkCB): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Walk(self, punkToWalk, dwFlags, cDepth, pnswcb)
-proc GetIDArrayResult*(self: ptr INamespaceWalk, pcItems: ptr UINT, prgpidl: ptr ptr PIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIDArrayResult(self, pcItems, prgpidl)
-proc GetDropDownStatus*(self: ptr IAutoCompleteDropDown, pdwFlags: ptr DWORD, ppwszString: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDropDownStatus(self, pdwFlags, ppwszString)
-proc ResetEnumerator*(self: ptr IAutoCompleteDropDown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResetEnumerator(self)
-proc AddBand*(self: ptr IBandSite, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddBand(self, punk)
-proc EnumBands*(self: ptr IBandSite, uBand: UINT, pdwBandID: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumBands(self, uBand, pdwBandID)
-proc QueryBand*(self: ptr IBandSite, dwBandID: DWORD, ppstb: ptr ptr IDeskBand, pdwState: ptr DWORD, pszName: LPWSTR, cchName: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryBand(self, dwBandID, ppstb, pdwState, pszName, cchName)
-proc SetBandState*(self: ptr IBandSite, dwBandID: DWORD, dwMask: DWORD, dwState: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBandState(self, dwBandID, dwMask, dwState)
-proc RemoveBand*(self: ptr IBandSite, dwBandID: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveBand(self, dwBandID)
-proc GetBandObject*(self: ptr IBandSite, dwBandID: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBandObject(self, dwBandID, riid, ppv)
-proc SetBandSiteInfo*(self: ptr IBandSite, pbsinfo: ptr BANDSITEINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBandSiteInfo(self, pbsinfo)
-proc GetBandSiteInfo*(self: ptr IBandSite, pbsinfo: ptr BANDSITEINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBandSiteInfo(self, pbsinfo)
-proc Show*(self: ptr IModalWindow, hwndOwner: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Show(self, hwndOwner)
-proc GetSupportedActionTypes*(self: ptr ICDBurnExt, pdwActions: ptr CDBE_ACTIONS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSupportedActionTypes(self, pdwActions)
-proc DoContextMenuPopup*(self: ptr IContextMenuSite, punkContextMenu: ptr IUnknown, fFlags: UINT, pt: POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoContextMenuPopup(self, punkContextMenu, fFlags, pt)
-proc EnumReady*(self: ptr IEnumReadyCallback): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumReady(self)
-proc SetEnumReadyCallback*(self: ptr IEnumerableView, percb: ptr IEnumReadyCallback): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetEnumReadyCallback(self, percb)
-proc CreateEnumIDListFromContents*(self: ptr IEnumerableView, pidlFolder: PCIDLIST_ABSOLUTE, dwEnumFlags: DWORD, ppEnumIDList: ptr ptr IEnumIDList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateEnumIDListFromContents(self, pidlFolder, dwEnumFlags, ppEnumIDList)
-proc InsertItem*(self: ptr IInsertItem, pidl: PCUIDLIST_RELATIVE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InsertItem(self, pidl)
-proc IsMenuMessage*(self: ptr IMenuBand, pmsg: ptr MSG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsMenuMessage(self, pmsg)
-proc TranslateMenuMessage*(self: ptr IMenuBand, pmsg: ptr MSG, plRet: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateMenuMessage(self, pmsg, plRet)
-proc SetCascade*(self: ptr IFolderBandPriv, fCascade: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCascade(self, fCascade)
-proc SetAccelerators*(self: ptr IFolderBandPriv, fAccelerators: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAccelerators(self, fAccelerators)
-proc SetNoIcons*(self: ptr IFolderBandPriv, fNoIcons: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetNoIcons(self, fNoIcons)
-proc SetNoText*(self: ptr IFolderBandPriv, fNoText: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetNoText(self, fNoText)
-proc GetCheckState*(self: ptr IRegTreeItem, pbCheck: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCheckState(self, pbCheck)
-proc SetCheckState*(self: ptr IRegTreeItem, bCheck: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCheckState(self, bCheck)
-proc RecompressImage*(self: ptr IImageRecompress, psi: ptr IShellItem, cx: int32, cy: int32, iQuality: int32, pstg: ptr IStorage, ppstrmOut: ptr ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RecompressImage(self, psi, cx, cy, iQuality, pstg, ppstrmOut)
-proc SetClient*(self: ptr IDeskBar, punkClient: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetClient(self, punkClient)
-proc GetClient*(self: ptr IDeskBar, ppunkClient: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClient(self, ppunkClient)
-proc OnPosRectChangeDB*(self: ptr IDeskBar, prc: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnPosRectChangeDB(self, prc)
-proc Popup*(self: ptr IMenuPopup, ppt: ptr POINTL, prcExclude: ptr RECTL, dwFlags: MP_POPUPFLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Popup(self, ppt, prcExclude, dwFlags)
-proc OnSelect*(self: ptr IMenuPopup, dwSelectType: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnSelect(self, dwSelectType)
-proc SetSubMenu*(self: ptr IMenuPopup, pmp: ptr IMenuPopup, fSet: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSubMenu(self, pmp, fSet)
-proc GetAppName*(self: ptr IFileIsInUse, ppszName: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAppName(self, ppszName)
-proc GetUsage*(self: ptr IFileIsInUse, pfut: ptr FILE_USAGE_TYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUsage(self, pfut)
-proc GetCapabilities*(self: ptr IFileIsInUse, pdwCapFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCapabilities(self, pdwCapFlags)
-proc GetSwitchToHWND*(self: ptr IFileIsInUse, phwnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSwitchToHWND(self, phwnd)
-proc CloseFile*(self: ptr IFileIsInUse): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CloseFile(self)
-proc OnFileOk*(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnFileOk(self, pfd)
-proc OnFolderChanging*(self: ptr IFileDialogEvents, pfd: ptr IFileDialog, psiFolder: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnFolderChanging(self, pfd, psiFolder)
-proc OnFolderChange*(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnFolderChange(self, pfd)
-proc OnSelectionChange*(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnSelectionChange(self, pfd)
-proc OnShareViolation*(self: ptr IFileDialogEvents, pfd: ptr IFileDialog, psi: ptr IShellItem, pResponse: ptr FDE_SHAREVIOLATION_RESPONSE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnShareViolation(self, pfd, psi, pResponse)
-proc OnTypeChange*(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnTypeChange(self, pfd)
-proc OnOverwrite*(self: ptr IFileDialogEvents, pfd: ptr IFileDialog, psi: ptr IShellItem, pResponse: ptr FDE_OVERWRITE_RESPONSE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnOverwrite(self, pfd, psi, pResponse)
-proc SetFileTypes*(self: ptr IFileDialog, cFileTypes: UINT, rgFilterSpec: ptr COMDLG_FILTERSPEC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFileTypes(self, cFileTypes, rgFilterSpec)
-proc SetFileTypeIndex*(self: ptr IFileDialog, iFileType: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFileTypeIndex(self, iFileType)
-proc GetFileTypeIndex*(self: ptr IFileDialog, piFileType: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFileTypeIndex(self, piFileType)
-proc Advise*(self: ptr IFileDialog, pfde: ptr IFileDialogEvents, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, pfde, pdwCookie)
-proc Unadvise*(self: ptr IFileDialog, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwCookie)
-proc SetOptions*(self: ptr IFileDialog, fos: FILEOPENDIALOGOPTIONS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOptions(self, fos)
-proc GetOptions*(self: ptr IFileDialog, pfos: ptr FILEOPENDIALOGOPTIONS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOptions(self, pfos)
-proc SetDefaultFolder*(self: ptr IFileDialog, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDefaultFolder(self, psi)
-proc SetFolder*(self: ptr IFileDialog, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFolder(self, psi)
-proc GetFolder*(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolder(self, ppsi)
-proc GetCurrentSelection*(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentSelection(self, ppsi)
-proc SetFileName*(self: ptr IFileDialog, pszName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFileName(self, pszName)
-proc GetFileName*(self: ptr IFileDialog, pszName: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFileName(self, pszName)
-proc SetTitle*(self: ptr IFileDialog, pszTitle: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTitle(self, pszTitle)
-proc SetOkButtonLabel*(self: ptr IFileDialog, pszText: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOkButtonLabel(self, pszText)
-proc SetFileNameLabel*(self: ptr IFileDialog, pszLabel: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFileNameLabel(self, pszLabel)
-proc GetResult*(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetResult(self, ppsi)
-proc AddPlace*(self: ptr IFileDialog, psi: ptr IShellItem, fdap: FDAP): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddPlace(self, psi, fdap)
-proc SetDefaultExtension*(self: ptr IFileDialog, pszDefaultExtension: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDefaultExtension(self, pszDefaultExtension)
-proc Close*(self: ptr IFileDialog, hr: HRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Close(self, hr)
-proc SetClientGuid*(self: ptr IFileDialog, guid: REFGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetClientGuid(self, guid)
-proc ClearClientData*(self: ptr IFileDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClearClientData(self)
-proc SetFilter*(self: ptr IFileDialog, pFilter: ptr IShellItemFilter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFilter(self, pFilter)
-proc SetSaveAsItem*(self: ptr IFileSaveDialog, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSaveAsItem(self, psi)
-proc SetProperties*(self: ptr IFileSaveDialog, pStore: ptr IPropertyStore): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProperties(self, pStore)
-proc SetCollectedProperties*(self: ptr IFileSaveDialog, pList: ptr IPropertyDescriptionList, fAppendDefault: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCollectedProperties(self, pList, fAppendDefault)
-proc GetProperties*(self: ptr IFileSaveDialog, ppStore: ptr ptr IPropertyStore): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperties(self, ppStore)
-proc ApplyProperties*(self: ptr IFileSaveDialog, psi: ptr IShellItem, pStore: ptr IPropertyStore, hwnd: HWND, pSink: ptr IFileOperationProgressSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ApplyProperties(self, psi, pStore, hwnd, pSink)
-proc GetResults*(self: ptr IFileOpenDialog, ppenum: ptr ptr IShellItemArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetResults(self, ppenum)
-proc GetSelectedItems*(self: ptr IFileOpenDialog, ppsai: ptr ptr IShellItemArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelectedItems(self, ppsai)
-proc EnableOpenDropDown*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnableOpenDropDown(self, dwIDCtl)
-proc AddMenu*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddMenu(self, dwIDCtl, pszLabel)
-proc AddPushButton*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddPushButton(self, dwIDCtl, pszLabel)
-proc AddComboBox*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddComboBox(self, dwIDCtl)
-proc AddRadioButtonList*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddRadioButtonList(self, dwIDCtl)
-proc AddCheckButton*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR, bChecked: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddCheckButton(self, dwIDCtl, pszLabel, bChecked)
-proc AddEditBox*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszText: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddEditBox(self, dwIDCtl, pszText)
-proc AddSeparator*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddSeparator(self, dwIDCtl)
-proc AddText*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszText: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddText(self, dwIDCtl, pszText)
-proc SetControlLabel*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetControlLabel(self, dwIDCtl, pszLabel)
-proc GetControlState*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pdwState: ptr CDCONTROLSTATEF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetControlState(self, dwIDCtl, pdwState)
-proc SetControlState*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwState: CDCONTROLSTATEF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetControlState(self, dwIDCtl, dwState)
-proc GetEditBoxText*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, ppszText: ptr ptr WCHAR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEditBoxText(self, dwIDCtl, ppszText)
-proc SetEditBoxText*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszText: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetEditBoxText(self, dwIDCtl, pszText)
-proc GetCheckButtonState*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pbChecked: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCheckButtonState(self, dwIDCtl, pbChecked)
-proc SetCheckButtonState*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, bChecked: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCheckButtonState(self, dwIDCtl, bChecked)
-proc AddControlItem*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD, pszLabel: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddControlItem(self, dwIDCtl, dwIDItem, pszLabel)
-proc RemoveControlItem*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveControlItem(self, dwIDCtl, dwIDItem)
-proc RemoveAllControlItems*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveAllControlItems(self, dwIDCtl)
-proc GetControlItemState*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD, pdwState: ptr CDCONTROLSTATEF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetControlItemState(self, dwIDCtl, dwIDItem, pdwState)
-proc SetControlItemState*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD, dwState: CDCONTROLSTATEF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetControlItemState(self, dwIDCtl, dwIDItem, dwState)
-proc GetSelectedControlItem*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pdwIDItem: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelectedControlItem(self, dwIDCtl, pdwIDItem)
-proc SetSelectedControlItem*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSelectedControlItem(self, dwIDCtl, dwIDItem)
-proc StartVisualGroup*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StartVisualGroup(self, dwIDCtl, pszLabel)
-proc EndVisualGroup*(self: ptr IFileDialogCustomize): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EndVisualGroup(self)
-proc MakeProminent*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MakeProminent(self, dwIDCtl)
-proc SetControlItemText*(self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD, pszLabel: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetControlItemText(self, dwIDCtl, dwIDItem, pszLabel)
-proc OnItemSelected*(self: ptr IFileDialogControlEvents, pfdc: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnItemSelected(self, pfdc, dwIDCtl, dwIDItem)
-proc OnButtonClicked*(self: ptr IFileDialogControlEvents, pfdc: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnButtonClicked(self, pfdc, dwIDCtl)
-proc OnCheckButtonToggled*(self: ptr IFileDialogControlEvents, pfdc: ptr IFileDialogCustomize, dwIDCtl: DWORD, bChecked: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnCheckButtonToggled(self, pfdc, dwIDCtl, bChecked)
-proc OnControlActivating*(self: ptr IFileDialogControlEvents, pfdc: ptr IFileDialogCustomize, dwIDCtl: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnControlActivating(self, pfdc, dwIDCtl)
-proc SetCancelButtonLabel*(self: ptr IFileDialog2, pszLabel: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCancelButtonLabel(self, pszLabel)
-proc SetNavigationRoot*(self: ptr IFileDialog2, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetNavigationRoot(self, psi)
-proc QueryCurrentDefault*(self: ptr IApplicationAssociationRegistration, pszQuery: LPCWSTR, atQueryType: ASSOCIATIONTYPE, alQueryLevel: ASSOCIATIONLEVEL, ppszAssociation: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryCurrentDefault(self, pszQuery, atQueryType, alQueryLevel, ppszAssociation)
-proc QueryAppIsDefault*(self: ptr IApplicationAssociationRegistration, pszQuery: LPCWSTR, atQueryType: ASSOCIATIONTYPE, alQueryLevel: ASSOCIATIONLEVEL, pszAppRegistryName: LPCWSTR, pfDefault: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryAppIsDefault(self, pszQuery, atQueryType, alQueryLevel, pszAppRegistryName, pfDefault)
-proc QueryAppIsDefaultAll*(self: ptr IApplicationAssociationRegistration, alQueryLevel: ASSOCIATIONLEVEL, pszAppRegistryName: LPCWSTR, pfDefault: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryAppIsDefaultAll(self, alQueryLevel, pszAppRegistryName, pfDefault)
-proc SetAppAsDefault*(self: ptr IApplicationAssociationRegistration, pszAppRegistryName: LPCWSTR, pszSet: LPCWSTR, atSetType: ASSOCIATIONTYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAppAsDefault(self, pszAppRegistryName, pszSet, atSetType)
-proc SetAppAsDefaultAll*(self: ptr IApplicationAssociationRegistration, pszAppRegistryName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAppAsDefaultAll(self, pszAppRegistryName)
-proc ClearUserAssociations*(self: ptr IApplicationAssociationRegistration): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClearUserAssociations(self)
-proc LaunchAdvancedAssociationUI*(self: ptr IApplicationAssociationRegistrationUI, pszAppRegistryName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LaunchAdvancedAssociationUI(self, pszAppRegistryName)
-proc SetItemAlloc*(self: ptr IDelegateFolder, pmalloc: ptr IMalloc): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetItemAlloc(self, pmalloc)
-proc GetFrameOptions*(self: ptr IBrowserFrameOptions, dwMask: BROWSERFRAMEOPTIONS, pdwOptions: ptr BROWSERFRAMEOPTIONS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFrameOptions(self, dwMask, pdwOptions)
-proc EvaluateNewWindow*(self: ptr INewWindowManager, pszUrl: LPCWSTR, pszName: LPCWSTR, pszUrlContext: LPCWSTR, pszFeatures: LPCWSTR, fReplace: WINBOOL, dwFlags: DWORD, dwUserActionTime: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EvaluateNewWindow(self, pszUrl, pszName, pszUrlContext, pszFeatures, fReplace, dwFlags, dwUserActionTime)
-proc SetClientTitle*(self: ptr IAttachmentExecute, pszTitle: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetClientTitle(self, pszTitle)
-proc SetClientGuid*(self: ptr IAttachmentExecute, guid: REFGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetClientGuid(self, guid)
-proc SetLocalPath*(self: ptr IAttachmentExecute, pszLocalPath: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetLocalPath(self, pszLocalPath)
-proc SetFileName*(self: ptr IAttachmentExecute, pszFileName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFileName(self, pszFileName)
-proc SetSource*(self: ptr IAttachmentExecute, pszSource: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSource(self, pszSource)
-proc SetReferrer*(self: ptr IAttachmentExecute, pszReferrer: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetReferrer(self, pszReferrer)
-proc CheckPolicy*(self: ptr IAttachmentExecute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CheckPolicy(self)
-proc Prompt*(self: ptr IAttachmentExecute, hwnd: HWND, prompt: ATTACHMENT_PROMPT, paction: ptr ATTACHMENT_ACTION): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Prompt(self, hwnd, prompt, paction)
-proc Save*(self: ptr IAttachmentExecute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Save(self)
-proc Execute*(self: ptr IAttachmentExecute, hwnd: HWND, pszVerb: LPCWSTR, phProcess: ptr HANDLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Execute(self, hwnd, pszVerb, phProcess)
-proc SaveWithUI*(self: ptr IAttachmentExecute, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SaveWithUI(self, hwnd)
-proc ClearClientState*(self: ptr IAttachmentExecute): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClearClientState(self)
-proc CallbackSM*(self: ptr IShellMenuCallback, psmd: LPSMDATA, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CallbackSM(self, psmd, uMsg, wParam, lParam)
-proc Initialize*(self: ptr IShellMenu, psmc: ptr IShellMenuCallback, uId: UINT, uIdAncestor: UINT, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, psmc, uId, uIdAncestor, dwFlags)
-proc GetMenuInfo*(self: ptr IShellMenu, ppsmc: ptr ptr IShellMenuCallback, puId: ptr UINT, puIdAncestor: ptr UINT, pdwFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMenuInfo(self, ppsmc, puId, puIdAncestor, pdwFlags)
-proc SetShellFolder*(self: ptr IShellMenu, psf: ptr IShellFolder, pidlFolder: PCIDLIST_ABSOLUTE, hKey: HKEY, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetShellFolder(self, psf, pidlFolder, hKey, dwFlags)
-proc GetShellFolder*(self: ptr IShellMenu, pdwFlags: ptr DWORD, ppidl: ptr PIDLIST_ABSOLUTE, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetShellFolder(self, pdwFlags, ppidl, riid, ppv)
-proc SetMenu*(self: ptr IShellMenu, hmenu: HMENU, hwnd: HWND, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMenu(self, hmenu, hwnd, dwFlags)
-proc GetMenu*(self: ptr IShellMenu, phmenu: ptr HMENU, phwnd: ptr HWND, pdwFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMenu(self, phmenu, phwnd, pdwFlags)
-proc InvalidateItem*(self: ptr IShellMenu, psmd: LPSMDATA, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InvalidateItem(self, psmd, dwFlags)
-proc GetState*(self: ptr IShellMenu, psmd: LPSMDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetState(self, psmd)
-proc SetMenuToolbar*(self: ptr IShellMenu, punk: ptr IUnknown, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMenuToolbar(self, punk, dwFlags)
-proc Run*(self: ptr IShellRunDll, pszArgs: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Run(self, pszArgs)
-proc GetId*(self: ptr IKnownFolder, pkfid: ptr KNOWNFOLDERID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetId(self, pkfid)
-proc GetCategory*(self: ptr IKnownFolder, pCategory: ptr KF_CATEGORY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCategory(self, pCategory)
-proc GetShellItem*(self: ptr IKnownFolder, dwFlags: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetShellItem(self, dwFlags, riid, ppv)
-proc GetPath*(self: ptr IKnownFolder, dwFlags: DWORD, ppszPath: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPath(self, dwFlags, ppszPath)
-proc SetPath*(self: ptr IKnownFolder, dwFlags: DWORD, pszPath: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPath(self, dwFlags, pszPath)
-proc GetIDList*(self: ptr IKnownFolder, dwFlags: DWORD, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIDList(self, dwFlags, ppidl)
-proc GetFolderType*(self: ptr IKnownFolder, pftid: ptr FOLDERTYPEID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolderType(self, pftid)
-proc GetRedirectionCapabilities*(self: ptr IKnownFolder, pCapabilities: ptr KF_REDIRECTION_CAPABILITIES): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRedirectionCapabilities(self, pCapabilities)
-proc GetFolderDefinition*(self: ptr IKnownFolder, pKFD: ptr KNOWNFOLDER_DEFINITION): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolderDefinition(self, pKFD)
-proc FolderIdFromCsidl*(self: ptr IKnownFolderManager, nCsidl: int32, pfid: ptr KNOWNFOLDERID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FolderIdFromCsidl(self, nCsidl, pfid)
-proc FolderIdToCsidl*(self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID, pnCsidl: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FolderIdToCsidl(self, rfid, pnCsidl)
-proc GetFolderIds*(self: ptr IKnownFolderManager, ppKFId: ptr ptr KNOWNFOLDERID, pCount: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolderIds(self, ppKFId, pCount)
-proc GetFolder*(self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID, ppkf: ptr ptr IKnownFolder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolder(self, rfid, ppkf)
-proc GetFolderByName*(self: ptr IKnownFolderManager, pszCanonicalName: LPCWSTR, ppkf: ptr ptr IKnownFolder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolderByName(self, pszCanonicalName, ppkf)
-proc RegisterFolder*(self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID, pKFD: ptr KNOWNFOLDER_DEFINITION): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterFolder(self, rfid, pKFD)
-proc UnregisterFolder*(self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterFolder(self, rfid)
-proc FindFolderFromPath*(self: ptr IKnownFolderManager, pszPath: LPCWSTR, mode: FFFP_MODE, ppkf: ptr ptr IKnownFolder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindFolderFromPath(self, pszPath, mode, ppkf)
-proc FindFolderFromIDList*(self: ptr IKnownFolderManager, pidl: PCIDLIST_ABSOLUTE, ppkf: ptr ptr IKnownFolder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindFolderFromIDList(self, pidl, ppkf)
-proc Redirect*(self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID, hwnd: HWND, flags: KF_REDIRECT_FLAGS, pszTargetPath: LPCWSTR, cFolders: UINT, pExclusion: ptr KNOWNFOLDERID, ppszError: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Redirect(self, rfid, hwnd, flags, pszTargetPath, cFolders, pExclusion, ppszError)
-proc CreateShare*(self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID, role: SHARE_ROLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateShare(self, dsid, role)
-proc DeleteShare*(self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteShare(self, dsid)
-proc ShareExists*(self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShareExists(self, dsid)
-proc GetSharePermissions*(self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID, pRole: ptr SHARE_ROLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSharePermissions(self, dsid, pRole)
-proc SharePrinters*(self: ptr ISharingConfigurationManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SharePrinters(self)
-proc StopSharingPrinters*(self: ptr ISharingConfigurationManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StopSharingPrinters(self)
-proc ArePrintersShared*(self: ptr ISharingConfigurationManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ArePrintersShared(self)
-proc AreSnapshotsAvailable*(self: ptr IPreviousVersionsInfo, pszPath: LPCWSTR, fOkToBeSlow: WINBOOL, pfAvailable: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AreSnapshotsAvailable(self, pszPath, fOkToBeSlow, pfAvailable)
-proc GetItemIDList*(self: ptr IRelatedItem, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemIDList(self, ppidl)
-proc GetItem*(self: ptr IRelatedItem, ppsi: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItem(self, ppsi)
-proc GetDestinationStream*(self: ptr IDestinationStreamFactory, ppstm: ptr ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDestinationStream(self, ppstm)
-proc IncludeItems*(self: ptr INewMenuClient, pflags: ptr NMCII_FLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IncludeItems(self, pflags)
-proc SelectAndEditItem*(self: ptr INewMenuClient, pidlItem: PCIDLIST_ABSOLUTE, flags: NMCSAEI_FLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SelectAndEditItem(self, pidlItem, flags)
-proc Initialize*(self: ptr IInitializeWithBindCtx, pbc: ptr IBindCtx): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pbc)
-proc IncludeItem*(self: ptr IShellItemFilter, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IncludeItem(self, psi)
-proc GetEnumFlagsForItem*(self: ptr IShellItemFilter, psi: ptr IShellItem, pgrfFlags: ptr SHCONTF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEnumFlagsForItem(self, psi, pgrfFlags)
-proc Initialize*(self: ptr INameSpaceTreeControl, hwndParent: HWND, prc: ptr RECT, nsctsFlags: NSTCSTYLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, hwndParent, prc, nsctsFlags)
-proc TreeAdvise*(self: ptr INameSpaceTreeControl, punk: ptr IUnknown, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TreeAdvise(self, punk, pdwCookie)
-proc TreeUnadvise*(self: ptr INameSpaceTreeControl, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TreeUnadvise(self, dwCookie)
-proc AppendRoot*(self: ptr INameSpaceTreeControl, psiRoot: ptr IShellItem, grfEnumFlags: SHCONTF, grfRootStyle: NSTCROOTSTYLE, pif: ptr IShellItemFilter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AppendRoot(self, psiRoot, grfEnumFlags, grfRootStyle, pif)
-proc InsertRoot*(self: ptr INameSpaceTreeControl, iIndex: int32, psiRoot: ptr IShellItem, grfEnumFlags: SHCONTF, grfRootStyle: NSTCROOTSTYLE, pif: ptr IShellItemFilter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InsertRoot(self, iIndex, psiRoot, grfEnumFlags, grfRootStyle, pif)
-proc RemoveRoot*(self: ptr INameSpaceTreeControl, psiRoot: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveRoot(self, psiRoot)
-proc RemoveAllRoots*(self: ptr INameSpaceTreeControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveAllRoots(self)
-proc GetRootItems*(self: ptr INameSpaceTreeControl, ppsiaRootItems: ptr ptr IShellItemArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRootItems(self, ppsiaRootItems)
-proc SetItemState*(self: ptr INameSpaceTreeControl, psi: ptr IShellItem, nstcisMask: NSTCITEMSTATE, nstcisFlags: NSTCITEMSTATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetItemState(self, psi, nstcisMask, nstcisFlags)
-proc GetItemState*(self: ptr INameSpaceTreeControl, psi: ptr IShellItem, nstcisMask: NSTCITEMSTATE, pnstcisFlags: ptr NSTCITEMSTATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemState(self, psi, nstcisMask, pnstcisFlags)
-proc GetSelectedItems*(self: ptr INameSpaceTreeControl, psiaItems: ptr ptr IShellItemArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelectedItems(self, psiaItems)
-proc GetItemCustomState*(self: ptr INameSpaceTreeControl, psi: ptr IShellItem, piStateNumber: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemCustomState(self, psi, piStateNumber)
-proc SetItemCustomState*(self: ptr INameSpaceTreeControl, psi: ptr IShellItem, iStateNumber: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetItemCustomState(self, psi, iStateNumber)
-proc EnsureItemVisible*(self: ptr INameSpaceTreeControl, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnsureItemVisible(self, psi)
-proc SetTheme*(self: ptr INameSpaceTreeControl, pszTheme: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTheme(self, pszTheme)
-proc GetNextItem*(self: ptr INameSpaceTreeControl, psi: ptr IShellItem, nstcgi: NSTCGNI, ppsiNext: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNextItem(self, psi, nstcgi, ppsiNext)
-proc HitTest*(self: ptr INameSpaceTreeControl, ppt: ptr POINT, ppsiOut: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HitTest(self, ppt, ppsiOut)
-proc GetItemRect*(self: ptr INameSpaceTreeControl, psi: ptr IShellItem, prect: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemRect(self, psi, prect)
-proc CollapseAll*(self: ptr INameSpaceTreeControl): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CollapseAll(self)
-proc SetControlStyle*(self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE, nstcsStyle: NSTCSTYLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetControlStyle(self, nstcsMask, nstcsStyle)
-proc GetControlStyle*(self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE, pnstcsStyle: ptr NSTCSTYLE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetControlStyle(self, nstcsMask, pnstcsStyle)
-proc SetControlStyle2*(self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE2, nstcsStyle: NSTCSTYLE2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetControlStyle2(self, nstcsMask, nstcsStyle)
-proc GetControlStyle2*(self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE2, pnstcsStyle: ptr NSTCSTYLE2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetControlStyle2(self, nstcsMask, pnstcsStyle)
-proc OnItemClick*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, nstceHitTest: NSTCEHITTEST, nstceClickType: NSTCECLICKTYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnItemClick(self, psi, nstceHitTest, nstceClickType)
-proc OnPropertyItemCommit*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnPropertyItemCommit(self, psi)
-proc OnItemStateChanging*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, nstcisMask: NSTCITEMSTATE, nstcisState: NSTCITEMSTATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnItemStateChanging(self, psi, nstcisMask, nstcisState)
-proc OnItemStateChanged*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, nstcisMask: NSTCITEMSTATE, nstcisState: NSTCITEMSTATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnItemStateChanged(self, psi, nstcisMask, nstcisState)
-proc OnSelectionChanged*(self: ptr INameSpaceTreeControlEvents, psiaSelection: ptr IShellItemArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnSelectionChanged(self, psiaSelection)
-proc OnKeyboardInput*(self: ptr INameSpaceTreeControlEvents, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnKeyboardInput(self, uMsg, wParam, lParam)
-proc OnBeforeExpand*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnBeforeExpand(self, psi)
-proc OnAfterExpand*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnAfterExpand(self, psi)
-proc OnBeginLabelEdit*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnBeginLabelEdit(self, psi)
-proc OnEndLabelEdit*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnEndLabelEdit(self, psi)
-proc OnGetToolTip*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, pszTip: LPWSTR, cchTip: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnGetToolTip(self, psi, pszTip, cchTip)
-proc OnBeforeItemDelete*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnBeforeItemDelete(self, psi)
-proc OnItemAdded*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, fIsRoot: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnItemAdded(self, psi, fIsRoot)
-proc OnItemDeleted*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, fIsRoot: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnItemDeleted(self, psi, fIsRoot)
-proc OnBeforeContextMenu*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnBeforeContextMenu(self, psi, riid, ppv)
-proc OnAfterContextMenu*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, pcmIn: ptr IContextMenu, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnAfterContextMenu(self, psi, pcmIn, riid, ppv)
-proc OnBeforeStateImageChange*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnBeforeStateImageChange(self, psi)
-proc OnGetDefaultIconIndex*(self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, piDefaultIcon: ptr int32, piOpenIcon: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnGetDefaultIconIndex(self, psi, piDefaultIcon, piOpenIcon)
-proc OnDragEnter*(self: ptr INameSpaceTreeControlDropHandler, psiOver: ptr IShellItem, psiaData: ptr IShellItemArray, fOutsideSource: WINBOOL, grfKeyState: DWORD, pdwEffect: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDragEnter(self, psiOver, psiaData, fOutsideSource, grfKeyState, pdwEffect)
-proc OnDragOver*(self: ptr INameSpaceTreeControlDropHandler, psiOver: ptr IShellItem, psiaData: ptr IShellItemArray, grfKeyState: DWORD, pdwEffect: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDragOver(self, psiOver, psiaData, grfKeyState, pdwEffect)
-proc OnDragPosition*(self: ptr INameSpaceTreeControlDropHandler, psiOver: ptr IShellItem, psiaData: ptr IShellItemArray, iNewPosition: int32, iOldPosition: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDragPosition(self, psiOver, psiaData, iNewPosition, iOldPosition)
-proc OnDrop*(self: ptr INameSpaceTreeControlDropHandler, psiOver: ptr IShellItem, psiaData: ptr IShellItemArray, iPosition: int32, grfKeyState: DWORD, pdwEffect: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDrop(self, psiOver, psiaData, iPosition, grfKeyState, pdwEffect)
-proc OnDropPosition*(self: ptr INameSpaceTreeControlDropHandler, psiOver: ptr IShellItem, psiaData: ptr IShellItemArray, iNewPosition: int32, iOldPosition: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDropPosition(self, psiOver, psiaData, iNewPosition, iOldPosition)
-proc OnDragLeave*(self: ptr INameSpaceTreeControlDropHandler, psiOver: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDragLeave(self, psiOver)
-proc OnGetDefaultAccessibilityAction*(self: ptr INameSpaceTreeAccessible, psi: ptr IShellItem, pbstrDefaultAction: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnGetDefaultAccessibilityAction(self, psi, pbstrDefaultAction)
-proc OnDoDefaultAccessibilityAction*(self: ptr INameSpaceTreeAccessible, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDoDefaultAccessibilityAction(self, psi)
-proc OnGetAccessibilityRole*(self: ptr INameSpaceTreeAccessible, psi: ptr IShellItem, pvarRole: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnGetAccessibilityRole(self, psi, pvarRole)
-proc PrePaint*(self: ptr INameSpaceTreeControlCustomDraw, hdc: HDC, prc: ptr RECT, plres: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PrePaint(self, hdc, prc, plres)
-proc PostPaint*(self: ptr INameSpaceTreeControlCustomDraw, hdc: HDC, prc: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PostPaint(self, hdc, prc)
-proc ItemPrePaint*(self: ptr INameSpaceTreeControlCustomDraw, hdc: HDC, prc: ptr RECT, pnstccdItem: ptr NSTCCUSTOMDRAW, pclrText: ptr COLORREF, pclrTextBk: ptr COLORREF, plres: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ItemPrePaint(self, hdc, prc, pnstccdItem, pclrText, pclrTextBk, plres)
-proc ItemPostPaint*(self: ptr INameSpaceTreeControlCustomDraw, hdc: HDC, prc: ptr RECT, pnstccdItem: ptr NSTCCUSTOMDRAW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ItemPostPaint(self, hdc, prc, pnstccdItem)
-proc GetFolderCapabilities*(self: ptr INameSpaceTreeControlFolderCapabilities, nfcMask: NSTCFOLDERCAPABILITIES, pnfcValue: ptr NSTCFOLDERCAPABILITIES): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolderCapabilities(self, nfcMask, pnfcValue)
-proc SetWindow*(self: ptr IPreviewHandler, hwnd: HWND, prc: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetWindow(self, hwnd, prc)
-proc SetRect*(self: ptr IPreviewHandler, prc: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetRect(self, prc)
-proc DoPreview*(self: ptr IPreviewHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoPreview(self)
-proc Unload*(self: ptr IPreviewHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unload(self)
-proc SetFocus*(self: ptr IPreviewHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFocus(self)
-proc QueryFocus*(self: ptr IPreviewHandler, phwnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryFocus(self, phwnd)
-proc TranslateAccelerator*(self: ptr IPreviewHandler, pmsg: ptr MSG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAccelerator(self, pmsg)
-proc GetWindowContext*(self: ptr IPreviewHandlerFrame, pinfo: ptr PREVIEWHANDLERFRAMEINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWindowContext(self, pinfo)
-proc TranslateAccelerator*(self: ptr IPreviewHandlerFrame, pmsg: ptr MSG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAccelerator(self, pmsg)
-proc ShowDeskBand*(self: ptr ITrayDeskBand, clsid: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowDeskBand(self, clsid)
-proc HideDeskBand*(self: ptr ITrayDeskBand, clsid: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HideDeskBand(self, clsid)
-proc IsDeskBandShown*(self: ptr ITrayDeskBand, clsid: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDeskBandShown(self, clsid)
-proc DeskBandRegistrationChanged*(self: ptr ITrayDeskBand): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeskBandRegistrationChanged(self)
-proc CreateBand*(self: ptr IBandHost, rclsidBand: REFCLSID, fAvailable: WINBOOL, fVisible: WINBOOL, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateBand(self, rclsidBand, fAvailable, fVisible, riid, ppv)
-proc SetBandAvailability*(self: ptr IBandHost, rclsidBand: REFCLSID, fAvailable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBandAvailability(self, rclsidBand, fAvailable)
-proc DestroyBand*(self: ptr IBandHost, rclsidBand: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DestroyBand(self, rclsidBand)
-proc GetPaneState*(self: ptr IExplorerPaneVisibility, ep: REFEXPLORERPANE, peps: ptr EXPLORERPANESTATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPaneState(self, ep, peps)
-proc CallBack*(self: ptr IContextMenuCB, psf: ptr IShellFolder, hwndOwner: HWND, pdtobj: ptr IDataObject, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CallBack(self, psf, hwndOwner, pdtobj, uMsg, wParam, lParam)
-proc SetFlags*(self: ptr IDefaultExtractIconInit, uFlags: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFlags(self, uFlags)
-proc SetKey*(self: ptr IDefaultExtractIconInit, hkey: HKEY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetKey(self, hkey)
-proc SetNormalIcon*(self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetNormalIcon(self, pszFile, iIcon)
-proc SetOpenIcon*(self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOpenIcon(self, pszFile, iIcon)
-proc SetShortcutIcon*(self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetShortcutIcon(self, pszFile, iIcon)
-proc SetDefaultIcon*(self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDefaultIcon(self, pszFile, iIcon)
-proc GetTitle*(self: ptr IExplorerCommand, psiItemArray: ptr IShellItemArray, ppszName: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTitle(self, psiItemArray, ppszName)
-proc GetIcon*(self: ptr IExplorerCommand, psiItemArray: ptr IShellItemArray, ppszIcon: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIcon(self, psiItemArray, ppszIcon)
-proc GetToolTip*(self: ptr IExplorerCommand, psiItemArray: ptr IShellItemArray, ppszInfotip: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetToolTip(self, psiItemArray, ppszInfotip)
-proc GetCanonicalName*(self: ptr IExplorerCommand, pguidCommandName: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCanonicalName(self, pguidCommandName)
-proc GetState*(self: ptr IExplorerCommand, psiItemArray: ptr IShellItemArray, fOkToBeSlow: WINBOOL, pCmdState: ptr EXPCMDSTATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetState(self, psiItemArray, fOkToBeSlow, pCmdState)
-proc Invoke*(self: ptr IExplorerCommand, psiItemArray: ptr IShellItemArray, pbc: ptr IBindCtx): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invoke(self, psiItemArray, pbc)
-proc GetFlags*(self: ptr IExplorerCommand, pFlags: ptr EXPCMDFLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFlags(self, pFlags)
-proc EnumSubCommands*(self: ptr IExplorerCommand, ppEnum: ptr ptr IEnumExplorerCommand): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumSubCommands(self, ppEnum)
-proc GetState*(self: ptr IExplorerCommandState, psiItemArray: ptr IShellItemArray, fOkToBeSlow: WINBOOL, pCmdState: ptr EXPCMDSTATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetState(self, psiItemArray, fOkToBeSlow, pCmdState)
-proc Initialize*(self: ptr IInitializeCommand, pszCommandName: LPCWSTR, ppb: ptr IPropertyBag): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pszCommandName, ppb)
-proc Next*(self: ptr IEnumExplorerCommand, celt: ULONG, pUICommand: ptr ptr IExplorerCommand, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, pUICommand, pceltFetched)
-proc Skip*(self: ptr IEnumExplorerCommand, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IEnumExplorerCommand): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IEnumExplorerCommand, ppenum: ptr ptr IEnumExplorerCommand): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
-proc GetCommands*(self: ptr IExplorerCommandProvider, punkSite: ptr IUnknown, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCommands(self, punkSite, riid, ppv)
-proc GetCommand*(self: ptr IExplorerCommandProvider, rguidCommandId: REFGUID, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCommand(self, rguidCommandId, riid, ppv)
-proc Initialize*(self: ptr IInitializeNetworkFolder, pidl: PCIDLIST_ABSOLUTE, pidlTarget: PCIDLIST_ABSOLUTE, uDisplayType: UINT, pszResName: LPCWSTR, pszProvider: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pidl, pidlTarget, uDisplayType, pszResName, pszProvider)
-proc Open*(self: ptr IOpenControlPanel, pszName: LPCWSTR, pszPage: LPCWSTR, punkSite: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Open(self, pszName, pszPage, punkSite)
-proc GetPath*(self: ptr IOpenControlPanel, pszName: LPCWSTR, pszPath: LPWSTR, cchPath: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPath(self, pszName, pszPath, cchPath)
-proc GetCurrentView*(self: ptr IOpenControlPanel, pView: ptr CPVIEW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentView(self, pView)
-proc ComputerInfoChanged*(self: ptr IComputerInfoChangeNotify): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ComputerInfoChanged(self)
-proc SetFindData*(self: ptr IFileSystemBindData, pfd: ptr WIN32_FIND_DATAW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFindData(self, pfd)
-proc GetFindData*(self: ptr IFileSystemBindData, pfd: ptr WIN32_FIND_DATAW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFindData(self, pfd)
-proc SetFileID*(self: ptr IFileSystemBindData2, liFileID: LARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFileID(self, liFileID)
-proc GetFileID*(self: ptr IFileSystemBindData2, pliFileID: ptr LARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFileID(self, pliFileID)
-proc SetJunctionCLSID*(self: ptr IFileSystemBindData2, clsid: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetJunctionCLSID(self, clsid)
-proc GetJunctionCLSID*(self: ptr IFileSystemBindData2, pclsid: ptr CLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetJunctionCLSID(self, pclsid)
-proc SetAppID*(self: ptr ICustomDestinationList, pszAppID: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAppID(self, pszAppID)
-proc BeginList*(self: ptr ICustomDestinationList, pcMinSlots: ptr UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeginList(self, pcMinSlots, riid, ppv)
-proc AppendCategory*(self: ptr ICustomDestinationList, pszCategory: LPCWSTR, poa: ptr IObjectArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AppendCategory(self, pszCategory, poa)
-proc AppendKnownCategory*(self: ptr ICustomDestinationList, category: KNOWNDESTCATEGORY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AppendKnownCategory(self, category)
-proc AddUserTasks*(self: ptr ICustomDestinationList, poa: ptr IObjectArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddUserTasks(self, poa)
-proc CommitList*(self: ptr ICustomDestinationList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CommitList(self)
-proc GetRemovedDestinations*(self: ptr ICustomDestinationList, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRemovedDestinations(self, riid, ppv)
-proc DeleteList*(self: ptr ICustomDestinationList, pszAppID: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteList(self, pszAppID)
-proc AbortList*(self: ptr ICustomDestinationList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AbortList(self)
-proc SetAppID*(self: ptr IApplicationDestinations, pszAppID: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAppID(self, pszAppID)
-proc RemoveDestination*(self: ptr IApplicationDestinations, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveDestination(self, punk)
-proc RemoveAllDestinations*(self: ptr IApplicationDestinations): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveAllDestinations(self)
-proc SetAppID*(self: ptr IApplicationDocumentLists, pszAppID: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAppID(self, pszAppID)
-proc GetList*(self: ptr IApplicationDocumentLists, listtype: APPDOCLISTTYPE, cItemsDesired: UINT, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetList(self, listtype, cItemsDesired, riid, ppv)
-proc SetAppID*(self: ptr IObjectWithAppUserModelID, pszAppID: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAppID(self, pszAppID)
-proc GetAppID*(self: ptr IObjectWithAppUserModelID, ppszAppID: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAppID(self, ppszAppID)
-proc SetProgID*(self: ptr IObjectWithProgID, pszProgID: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProgID(self, pszProgID)
-proc GetProgID*(self: ptr IObjectWithProgID, ppszProgID: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProgID(self, ppszProgID)
-proc Update*(self: ptr IUpdateIDList, pbc: ptr IBindCtx, pidlIn: PCUITEMID_CHILD, ppidlOut: ptr PITEMID_CHILD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Update(self, pbc, pidlIn, ppidlOut)
-proc RunGadget*(self: ptr IDesktopGadget, gadgetPath: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RunGadget(self, gadgetPath)
-proc SetWallpaper*(self: ptr IDesktopWallpaper, monitorID: LPCWSTR, wallpaper: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetWallpaper(self, monitorID, wallpaper)
-proc GetWallpaper*(self: ptr IDesktopWallpaper, monitorID: LPCWSTR, wallpaper: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWallpaper(self, monitorID, wallpaper)
-proc GetMonitorDevicePathAt*(self: ptr IDesktopWallpaper, monitorIndex: UINT, monitorID: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMonitorDevicePathAt(self, monitorIndex, monitorID)
-proc GetMonitorDevicePathCount*(self: ptr IDesktopWallpaper, count: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMonitorDevicePathCount(self, count)
-proc GetMonitorRECT*(self: ptr IDesktopWallpaper, monitorID: LPCWSTR, displayRect: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMonitorRECT(self, monitorID, displayRect)
-proc mSetBackgroundColor*(self: ptr IDesktopWallpaper, color: COLORREF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBackgroundColor(self, color)
-proc GetBackgroundColor*(self: ptr IDesktopWallpaper, color: ptr COLORREF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBackgroundColor(self, color)
-proc SetPosition*(self: ptr IDesktopWallpaper, position: DESKTOP_WALLPAPER_POSITION): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPosition(self, position)
-proc GetPosition*(self: ptr IDesktopWallpaper, position: ptr DESKTOP_WALLPAPER_POSITION): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPosition(self, position)
-proc SetSlideshow*(self: ptr IDesktopWallpaper, items: ptr IShellItemArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSlideshow(self, items)
-proc GetSlideshow*(self: ptr IDesktopWallpaper, items: ptr ptr IShellItemArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSlideshow(self, items)
-proc SetSlideshowOptions*(self: ptr IDesktopWallpaper, options: DESKTOP_SLIDESHOW_OPTIONS, slideshowTick: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSlideshowOptions(self, options, slideshowTick)
-proc GetSlideshowOptions*(self: ptr IDesktopWallpaper, options: ptr DESKTOP_SLIDESHOW_OPTIONS, slideshowTick: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSlideshowOptions(self, options, slideshowTick)
-proc AdvanceSlideshow*(self: ptr IDesktopWallpaper, monitorID: LPCWSTR, direction: DESKTOP_SLIDESHOW_DIRECTION): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AdvanceSlideshow(self, monitorID, direction)
-proc GetStatus*(self: ptr IDesktopWallpaper, state: ptr DESKTOP_SLIDESHOW_STATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetStatus(self, state)
-proc Enable*(self: ptr IDesktopWallpaper, enable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Enable(self, enable)
-proc IsMember*(self: ptr IHomeGroup, member: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsMember(self, member)
-proc ShowSharingWizard*(self: ptr IHomeGroup, owner: HWND, sharingchoices: ptr HOMEGROUPSHARINGCHOICES): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowSharingWizard(self, owner, sharingchoices)
-proc Initialize*(self: ptr IInitializeWithPropertyStore, pps: ptr IPropertyStore): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pps)
-proc GetResults*(self: ptr IOpenSearchSource, hwnd: HWND, pszQuery: LPCWSTR, dwStartIndex: DWORD, dwCount: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetResults(self, hwnd, pszQuery, dwStartIndex, dwCount, riid, ppv)
-proc LoadLibraryFromItem*(self: ptr IShellLibrary, psiLibrary: ptr IShellItem, grfMode: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LoadLibraryFromItem(self, psiLibrary, grfMode)
-proc LoadLibraryFromKnownFolder*(self: ptr IShellLibrary, kfidLibrary: REFKNOWNFOLDERID, grfMode: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LoadLibraryFromKnownFolder(self, kfidLibrary, grfMode)
-proc AddFolder*(self: ptr IShellLibrary, psiLocation: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddFolder(self, psiLocation)
-proc RemoveFolder*(self: ptr IShellLibrary, psiLocation: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveFolder(self, psiLocation)
-proc GetFolders*(self: ptr IShellLibrary, lff: LIBRARYFOLDERFILTER, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolders(self, lff, riid, ppv)
-proc ResolveFolder*(self: ptr IShellLibrary, psiFolderToResolve: ptr IShellItem, dwTimeout: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResolveFolder(self, psiFolderToResolve, dwTimeout, riid, ppv)
-proc GetDefaultSaveFolder*(self: ptr IShellLibrary, dsft: DEFAULTSAVEFOLDERTYPE, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDefaultSaveFolder(self, dsft, riid, ppv)
-proc SetDefaultSaveFolder*(self: ptr IShellLibrary, dsft: DEFAULTSAVEFOLDERTYPE, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDefaultSaveFolder(self, dsft, psi)
-proc GetOptions*(self: ptr IShellLibrary, plofOptions: ptr LIBRARYOPTIONFLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOptions(self, plofOptions)
-proc SetOptions*(self: ptr IShellLibrary, lofMask: LIBRARYOPTIONFLAGS, lofOptions: LIBRARYOPTIONFLAGS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOptions(self, lofMask, lofOptions)
-proc GetFolderType*(self: ptr IShellLibrary, pftid: ptr FOLDERTYPEID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolderType(self, pftid)
-proc SetFolderType*(self: ptr IShellLibrary, ftid: REFFOLDERTYPEID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFolderType(self, ftid)
-proc GetIcon*(self: ptr IShellLibrary, ppszIcon: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIcon(self, ppszIcon)
-proc SetIcon*(self: ptr IShellLibrary, pszIcon: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetIcon(self, pszIcon)
-proc Commit*(self: ptr IShellLibrary): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Commit(self)
-proc Save*(self: ptr IShellLibrary, psiFolderToSaveIn: ptr IShellItem, pszLibraryName: LPCWSTR, lsf: LIBRARYSAVEFLAGS, ppsiSavedTo: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Save(self, psiFolderToSaveIn, pszLibraryName, lsf, ppsiSavedTo)
-proc SaveInKnownFolder*(self: ptr IShellLibrary, kfidToSaveIn: REFKNOWNFOLDERID, pszLibraryName: LPCWSTR, lsf: LIBRARYSAVEFLAGS, ppsiSavedTo: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SaveInKnownFolder(self, kfidToSaveIn, pszLibraryName, lsf, ppsiSavedTo)
-proc OnPlaybackManagerEvent*(self: ptr IPlaybackManagerEvents, dwSessionId: DWORD, mediaEvent: PBM_EVENT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnPlaybackManagerEvent(self, dwSessionId, mediaEvent)
-proc Advise*(self: ptr IPlaybackManager, `type`: PBM_SESSION_TYPE, pEvents: ptr IPlaybackManagerEvents, pdwSessionId: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, `type`, pEvents, pdwSessionId)
-proc Unadvise*(self: ptr IPlaybackManager, dwSessionId: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwSessionId)
-proc ChangeSessionState*(self: ptr IPlaybackManager, dwSessionId: DWORD, state: PBM_PLAY_STATE, mute: PBM_MUTE_STATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ChangeSessionState(self, dwSessionId, state, mute)
-proc Initialize*(self: ptr IDefaultFolderMenuInitialize, hwnd: HWND, pcmcb: ptr IContextMenuCB, pidlFolder: PCIDLIST_ABSOLUTE, psf: ptr IShellFolder, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, punkAssociation: ptr IUnknown, cKeys: UINT, aKeys: ptr HKEY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, hwnd, pcmcb, pidlFolder, psf, cidl, apidl, punkAssociation, cKeys, aKeys)
-proc SetMenuRestrictions*(self: ptr IDefaultFolderMenuInitialize, dfmrValues: DEFAULT_FOLDER_MENU_RESTRICTIONS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMenuRestrictions(self, dfmrValues)
-proc GetMenuRestrictions*(self: ptr IDefaultFolderMenuInitialize, dfmrMask: DEFAULT_FOLDER_MENU_RESTRICTIONS, pdfmrValues: ptr DEFAULT_FOLDER_MENU_RESTRICTIONS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMenuRestrictions(self, dfmrMask, pdfmrValues)
-proc SetHandlerClsid*(self: ptr IDefaultFolderMenuInitialize, rclsid: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHandlerClsid(self, rclsid)
-proc ActivateApplication*(self: ptr IApplicationActivationManager, appUserModelId: LPCWSTR, arguments: LPCWSTR, options: ACTIVATEOPTIONS, processId: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ActivateApplication(self, appUserModelId, arguments, options, processId)
-proc ActivateForFile*(self: ptr IApplicationActivationManager, appUserModelId: LPCWSTR, itemArray: ptr IShellItemArray, verb: LPCWSTR, processId: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ActivateForFile(self, appUserModelId, itemArray, verb, processId)
-proc ActivateForProtocol*(self: ptr IApplicationActivationManager, appUserModelId: LPCWSTR, itemArray: ptr IShellItemArray, processId: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ActivateForProtocol(self, appUserModelId, itemArray, processId)
-proc SupportsSelection*(self: ptr IAssocHandlerInvoker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SupportsSelection(self)
-proc Invoke*(self: ptr IAssocHandlerInvoker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invoke(self)
-proc GetName*(self: ptr IAssocHandler, ppsz: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetName(self, ppsz)
-proc GetUIName*(self: ptr IAssocHandler, ppsz: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUIName(self, ppsz)
-proc GetIconLocation*(self: ptr IAssocHandler, ppszPath: ptr LPWSTR, pIndex: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIconLocation(self, ppszPath, pIndex)
-proc IsRecommended*(self: ptr IAssocHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsRecommended(self)
-proc MakeDefault*(self: ptr IAssocHandler, pszDescription: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MakeDefault(self, pszDescription)
-proc Invoke*(self: ptr IAssocHandler, pdo: ptr IDataObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invoke(self, pdo)
-proc CreateInvoker*(self: ptr IAssocHandler, pdo: ptr IDataObject, ppInvoker: ptr ptr IAssocHandlerInvoker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInvoker(self, pdo, ppInvoker)
-proc Next*(self: ptr IEnumAssocHandlers, celt: ULONG, rgelt: ptr ptr IAssocHandler, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
-proc GetDataObject*(self: ptr IDataObjectProvider, dataObject: ptr ptr IDataObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDataObject(self, dataObject)
-proc SetDataObject*(self: ptr IDataObjectProvider, dataObject: ptr IDataObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDataObject(self, dataObject)
-proc GetForWindow*(self: ptr IDataTransferManagerInterop, appWindow: HWND, riid: REFIID, dataTransferManager: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetForWindow(self, appWindow, riid, dataTransferManager)
-proc ShowShareUIForWindow*(self: ptr IDataTransferManagerInterop, appWindow: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowShareUIForWindow(self, appWindow)
-proc Showing*(self: ptr IFrameworkInputPaneHandler, prcInputPaneScreenLocation: ptr RECT, fEnsureFocusedElementInView: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Showing(self, prcInputPaneScreenLocation, fEnsureFocusedElementInView)
-proc Hiding*(self: ptr IFrameworkInputPaneHandler, fEnsureFocusedElementInView: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Hiding(self, fEnsureFocusedElementInView)
-proc Advise*(self: ptr IFrameworkInputPane, pWindow: ptr IUnknown, pHandler: ptr IFrameworkInputPaneHandler, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, pWindow, pHandler, pdwCookie)
-proc AdviseWithHWND*(self: ptr IFrameworkInputPane, hwnd: HWND, pHandler: ptr IFrameworkInputPaneHandler, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AdviseWithHWND(self, hwnd, pHandler, pdwCookie)
-proc Unadvise*(self: ptr IFrameworkInputPane, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwCookie)
-proc Location*(self: ptr IFrameworkInputPane, prcInputPaneScreenLocation: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Location(self, prcInputPaneScreenLocation)
-proc GetSearchWindow*(self: ptr ISearchableApplication, hwnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSearchWindow(self, hwnd)
-proc Undocked*(self: ptr IAccessibilityDockingServiceCallback, undockReason: UNDOCK_REASON): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Undocked(self, undockReason)
-proc GetAvailableSize*(self: ptr IAccessibilityDockingService, hMonitor: HMONITOR, pcxFixed: ptr UINT, pcyMax: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAvailableSize(self, hMonitor, pcxFixed, pcyMax)
-proc DockWindow*(self: ptr IAccessibilityDockingService, hwnd: HWND, hMonitor: HMONITOR, cyRequested: UINT, pCallback: ptr IAccessibilityDockingServiceCallback): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DockWindow(self, hwnd, hMonitor, cyRequested, pCallback)
-proc UndockWindow*(self: ptr IAccessibilityDockingService, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UndockWindow(self, hwnd)
-proc AppVisibilityOnMonitorChanged*(self: ptr IAppVisibilityEvents, hMonitor: HMONITOR, previousMode: MONITOR_APP_VISIBILITY, currentMode: MONITOR_APP_VISIBILITY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AppVisibilityOnMonitorChanged(self, hMonitor, previousMode, currentMode)
-proc LauncherVisibilityChange*(self: ptr IAppVisibilityEvents, currentVisibleState: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LauncherVisibilityChange(self, currentVisibleState)
-proc GetAppVisibilityOnMonitor*(self: ptr IAppVisibility, hMonitor: HMONITOR, pMode: ptr MONITOR_APP_VISIBILITY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAppVisibilityOnMonitor(self, hMonitor, pMode)
-proc IsLauncherVisible*(self: ptr IAppVisibility, pfVisible: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsLauncherVisible(self, pfVisible)
-proc Advise*(self: ptr IAppVisibility, pCallback: ptr IAppVisibilityEvents, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, pCallback, pdwCookie)
-proc Unadvise*(self: ptr IAppVisibility, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwCookie)
-proc OnStateChanged*(self: ptr IPackageExecutionStateChangeNotification, pszPackageFullName: LPCWSTR, pesNewState: PACKAGE_EXECUTION_STATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnStateChanged(self, pszPackageFullName, pesNewState)
-proc EnableDebugging*(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR, debuggerCommandLine: LPCWSTR, environment: PZZWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnableDebugging(self, packageFullName, debuggerCommandLine, environment)
-proc DisableDebugging*(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DisableDebugging(self, packageFullName)
-proc Suspend*(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Suspend(self, packageFullName)
-proc Resume*(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Resume(self, packageFullName)
-proc TerminateAllProcesses*(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TerminateAllProcesses(self, packageFullName)
-proc SetTargetSessionId*(self: ptr IPackageDebugSettings, sessionId: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTargetSessionId(self, sessionId)
-proc EnumerateBackgroundTasks*(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR, taskCount: ptr ULONG, taskIds: ptr LPCGUID, taskNames: ptr ptr LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumerateBackgroundTasks(self, packageFullName, taskCount, taskIds, taskNames)
-proc ActivateBackgroundTask*(self: ptr IPackageDebugSettings, taskId: LPCGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ActivateBackgroundTask(self, taskId)
-proc StartServicing*(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StartServicing(self, packageFullName)
-proc StopServicing*(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StopServicing(self, packageFullName)
-proc StartSessionRedirection*(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR, sessionId: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StartSessionRedirection(self, packageFullName, sessionId)
-proc StopSessionRedirection*(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StopSessionRedirection(self, packageFullName)
-proc GetPackageExecutionState*(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR, packageExecutionState: ptr PACKAGE_EXECUTION_STATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPackageExecutionState(self, packageFullName, packageExecutionState)
-proc RegisterForPackageStateChanges*(self: ptr IPackageDebugSettings, packageFullName: LPCWSTR, pPackageExecutionStateChangeNotification: ptr IPackageExecutionStateChangeNotification, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterForPackageStateChanges(self, packageFullName, pPackageExecutionStateChangeNotification, pdwCookie)
-proc UnregisterForPackageStateChanges*(self: ptr IPackageDebugSettings, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterForPackageStateChanges(self, dwCookie)
-proc GetValue*(self: ptr IExecuteCommandApplicationHostEnvironment, pahe: ptr AHE_TYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetValue(self, pahe)
-proc GetUIMode*(self: ptr IExecuteCommandHost, pUIMode: ptr EC_HOST_UI_MODE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUIMode(self, pUIMode)
-proc SetNativeDisplaySize*(self: ptr IApplicationDesignModeSettings, sizeNativeDisplay: SIZE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetNativeDisplaySize(self, sizeNativeDisplay)
-proc SetScaleFactor*(self: ptr IApplicationDesignModeSettings, scaleFactor: DEVICE_SCALE_FACTOR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetScaleFactor(self, scaleFactor)
-proc SetApplicationViewState*(self: ptr IApplicationDesignModeSettings, viewState: APPLICATION_VIEW_STATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetApplicationViewState(self, viewState)
-proc ComputeApplicationSize*(self: ptr IApplicationDesignModeSettings, psizeApplication: ptr SIZE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ComputeApplicationSize(self, psizeApplication)
-proc IsApplicationViewStateSupported*(self: ptr IApplicationDesignModeSettings, viewState: APPLICATION_VIEW_STATE, sizeNativeDisplay: SIZE, scaleFactor: DEVICE_SCALE_FACTOR, pfSupported: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsApplicationViewStateSupported(self, viewState, sizeNativeDisplay, scaleFactor, pfSupported)
-proc TriggerEdgeGesture*(self: ptr IApplicationDesignModeSettings, edgeGestureKind: EDGE_GESTURE_KIND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TriggerEdgeGesture(self, edgeGestureKind)
-proc Initialize*(self: ptr IInitializeWithWindow, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, hwnd)
-proc GetApplicationDisplayName*(self: ptr IHandlerInfo, value: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetApplicationDisplayName(self, value)
-proc GetApplicationPublisher*(self: ptr IHandlerInfo, value: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetApplicationPublisher(self, value)
-proc GetApplicationIconReference*(self: ptr IHandlerInfo, value: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetApplicationIconReference(self, value)
-proc BeforeCoCreateInstance*(self: ptr IHandlerActivationHost, clsidHandler: REFCLSID, itemsBeingActivated: ptr IShellItemArray, handlerInfo: ptr IHandlerInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeforeCoCreateInstance(self, clsidHandler, itemsBeingActivated, handlerInfo)
-proc BeforeCreateProcess*(self: ptr IHandlerActivationHost, applicationPath: LPCWSTR, commandLine: LPCWSTR, handlerInfo: ptr IHandlerInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BeforeCreateProcess(self, applicationPath, commandLine, handlerInfo)
-proc GetIconLocation*(self: ptr IExtractIconA, uFlags: UINT, pszIconFile: PSTR, cchMax: UINT, piIndex: ptr int32, pwFlags: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIconLocation(self, uFlags, pszIconFile, cchMax, piIndex, pwFlags)
-proc Extract*(self: ptr IExtractIconA, pszFile: PCSTR, nIconIndex: UINT, phiconLarge: ptr HICON, phiconSmall: ptr HICON, nIconSize: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Extract(self, pszFile, nIconIndex, phiconLarge, phiconSmall, nIconSize)
-proc GetIconLocation*(self: ptr IExtractIconW, uFlags: UINT, pszIconFile: PWSTR, cchMax: UINT, piIndex: ptr int32, pwFlags: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIconLocation(self, uFlags, pszIconFile, cchMax, piIndex, pwFlags)
-proc Extract*(self: ptr IExtractIconW, pszFile: PCWSTR, nIconIndex: UINT, phiconLarge: ptr HICON, phiconSmall: ptr HICON, nIconSize: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Extract(self, pszFile, nIconIndex, phiconLarge, phiconSmall, nIconSize)
-proc IsMemberOf*(self: ptr IShellIconOverlayIdentifier, pwszPath: PCWSTR, dwAttrib: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsMemberOf(self, pwszPath, dwAttrib)
-proc GetOverlayInfo*(self: ptr IShellIconOverlayIdentifier, pwszIconFile: PWSTR, cchMax: int32, pIndex: ptr int32, pdwFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOverlayInfo(self, pwszIconFile, cchMax, pIndex, pdwFlags)
-proc GetPriority*(self: ptr IShellIconOverlayIdentifier, pIPriority: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPriority(self, pIPriority)
-proc GetFileOverlayInfo*(self: ptr IShellIconOverlayManager, pwszPath: PCWSTR, dwAttrib: DWORD, pIndex: ptr int32, dwflags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFileOverlayInfo(self, pwszPath, dwAttrib, pIndex, dwflags)
-proc GetReservedOverlayInfo*(self: ptr IShellIconOverlayManager, pwszPath: PCWSTR, dwAttrib: DWORD, pIndex: ptr int32, dwflags: DWORD, iReservedID: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetReservedOverlayInfo(self, pwszPath, dwAttrib, pIndex, dwflags, iReservedID)
-proc RefreshOverlayImages*(self: ptr IShellIconOverlayManager, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RefreshOverlayImages(self, dwFlags)
-proc LoadNonloadedOverlayIdentifiers*(self: ptr IShellIconOverlayManager): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LoadNonloadedOverlayIdentifiers(self)
-proc OverlayIndexFromImageIndex*(self: ptr IShellIconOverlayManager, iImage: int32, piIndex: ptr int32, fAdd: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OverlayIndexFromImageIndex(self, iImage, piIndex, fAdd)
-proc GetOverlayIndex*(self: ptr IShellIconOverlay, pidl: PCUITEMID_CHILD, pIndex: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOverlayIndex(self, pidl, pIndex)
-proc GetOverlayIconIndex*(self: ptr IShellIconOverlay, pidl: PCUITEMID_CHILD, pIconIndex: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOverlayIconIndex(self, pidl, pIconIndex)
-proc Execute*(self: ptr IShellExecuteHookA, pei: LPSHELLEXECUTEINFOA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Execute(self, pei)
-proc Execute*(self: ptr IShellExecuteHookW, pei: LPSHELLEXECUTEINFOW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Execute(self, pei)
-proc Translate*(self: ptr IURLSearchHook, pwszSearchURL: PWSTR, cchBufferSize: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Translate(self, pwszSearchURL, cchBufferSize)
-proc GetSearchUrl*(self: ptr ISearchContext, pbstrSearchUrl: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSearchUrl(self, pbstrSearchUrl)
-proc GetSearchText*(self: ptr ISearchContext, pbstrSearchText: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSearchText(self, pbstrSearchText)
-proc GetSearchStyle*(self: ptr ISearchContext, pdwSearchStyle: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSearchStyle(self, pdwSearchStyle)
-proc TranslateWithSearchContext*(self: ptr IURLSearchHook2, pwszSearchURL: PWSTR, cchBufferSize: DWORD, pSearchContext: ptr ISearchContext): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateWithSearchContext(self, pwszSearchURL, cchBufferSize, pSearchContext)
-proc SetReferent*(self: ptr INewShortcutHookA, pcszReferent: PCSTR, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetReferent(self, pcszReferent, hwnd)
-proc GetReferent*(self: ptr INewShortcutHookA, pszReferent: PSTR, cchReferent: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetReferent(self, pszReferent, cchReferent)
-proc SetFolder*(self: ptr INewShortcutHookA, pcszFolder: PCSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFolder(self, pcszFolder)
-proc GetFolder*(self: ptr INewShortcutHookA, pszFolder: PSTR, cchFolder: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolder(self, pszFolder, cchFolder)
-proc GetName*(self: ptr INewShortcutHookA, pszName: PSTR, cchName: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetName(self, pszName, cchName)
-proc GetExtension*(self: ptr INewShortcutHookA, pszExtension: PSTR, cchExtension: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetExtension(self, pszExtension, cchExtension)
-proc SetReferent*(self: ptr INewShortcutHookW, pcszReferent: PCWSTR, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetReferent(self, pcszReferent, hwnd)
-proc GetReferent*(self: ptr INewShortcutHookW, pszReferent: PWSTR, cchReferent: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetReferent(self, pszReferent, cchReferent)
-proc SetFolder*(self: ptr INewShortcutHookW, pcszFolder: PCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFolder(self, pcszFolder)
-proc GetFolder*(self: ptr INewShortcutHookW, pszFolder: PWSTR, cchFolder: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolder(self, pszFolder, cchFolder)
-proc GetName*(self: ptr INewShortcutHookW, pszName: PWSTR, cchName: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetName(self, pszName, cchName)
-proc GetExtension*(self: ptr INewShortcutHookW, pszExtension: PWSTR, cchExtension: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetExtension(self, pszExtension, cchExtension)
-proc CopyCallback*(self: ptr ICopyHookA, hwnd: HWND, wFunc: UINT, wFlags: UINT, pszSrcFile: PCSTR, dwSrcAttribs: DWORD, pszDestFile: PCSTR, dwDestAttribs: DWORD): UINT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyCallback(self, hwnd, wFunc, wFlags, pszSrcFile, dwSrcAttribs, pszDestFile, dwDestAttribs)
-proc CopyCallback*(self: ptr ICopyHookW, hwnd: HWND, wFunc: UINT, wFlags: UINT, pszSrcFile: PCWSTR, dwSrcAttribs: DWORD, pszDestFile: PCWSTR, dwDestAttribs: DWORD): UINT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyCallback(self, hwnd, wFunc, wFlags, pszSrcFile, dwSrcAttribs, pszDestFile, dwDestAttribs)
-proc SetPinnedWindow*(self: ptr IFileViewerSite, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPinnedWindow(self, hwnd)
-proc GetPinnedWindow*(self: ptr IFileViewerSite, phwnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPinnedWindow(self, phwnd)
-proc ShowInitialize*(self: ptr IFileViewerA, lpfsi: LPFILEVIEWERSITE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowInitialize(self, lpfsi)
-proc Show*(self: ptr IFileViewerA, pvsi: LPFVSHOWINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Show(self, pvsi)
-proc PrintTo*(self: ptr IFileViewerA, pszDriver: PSTR, fSuppressUI: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PrintTo(self, pszDriver, fSuppressUI)
-proc ShowInitialize*(self: ptr IFileViewerW, lpfsi: LPFILEVIEWERSITE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowInitialize(self, lpfsi)
-proc Show*(self: ptr IFileViewerW, pvsi: LPFVSHOWINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Show(self, pvsi)
-proc PrintTo*(self: ptr IFileViewerW, pszDriver: PWSTR, fSuppressUI: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PrintTo(self, pszDriver, fSuppressUI)
-proc GetDetailsOf*(self: ptr IShellDetails, pidl: PCUITEMID_CHILD, iColumn: UINT, pDetails: ptr SHELLDETAILS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDetailsOf(self, pidl, iColumn, pDetails)
-proc ColumnClick*(self: ptr IShellDetails, iColumn: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ColumnClick(self, iColumn)
-proc Append*(self: ptr IObjMgr, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Append(self, punk)
-proc Remove*(self: ptr IObjMgr, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Remove(self, punk)
-proc GetDirectory*(self: ptr ICurrentWorkingDirectory, pwzPath: PWSTR, cchSize: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDirectory(self, pwzPath, cchSize)
-proc SetDirectory*(self: ptr ICurrentWorkingDirectory, pwzPath: PCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDirectory(self, pwzPath)
-proc Expand*(self: ptr IACList, pszExpand: PCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Expand(self, pszExpand)
-proc SetOptions*(self: ptr IACList2, dwFlag: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOptions(self, dwFlag)
-proc GetOptions*(self: ptr IACList2, pdwFlag: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOptions(self, pdwFlag)
-proc StartProgressDialog*(self: ptr IProgressDialog, hwndParent: HWND, punkEnableModless: ptr IUnknown, dwFlags: DWORD, pvResevered: LPCVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StartProgressDialog(self, hwndParent, punkEnableModless, dwFlags, pvResevered)
-proc StopProgressDialog*(self: ptr IProgressDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StopProgressDialog(self)
-proc SetTitle*(self: ptr IProgressDialog, pwzTitle: PCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTitle(self, pwzTitle)
-proc SetAnimation*(self: ptr IProgressDialog, hInstAnimation: HINSTANCE, idAnimation: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAnimation(self, hInstAnimation, idAnimation)
-proc HasUserCancelled*(self: ptr IProgressDialog): WINBOOL {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HasUserCancelled(self)
-proc SetProgress*(self: ptr IProgressDialog, dwCompleted: DWORD, dwTotal: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProgress(self, dwCompleted, dwTotal)
-proc SetProgress64*(self: ptr IProgressDialog, ullCompleted: ULONGLONG, ullTotal: ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProgress64(self, ullCompleted, ullTotal)
-proc SetLine*(self: ptr IProgressDialog, dwLineNum: DWORD, pwzString: PCWSTR, fCompactPath: WINBOOL, pvResevered: LPCVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetLine(self, dwLineNum, pwzString, fCompactPath, pvResevered)
-proc SetCancelMsg*(self: ptr IProgressDialog, pwzCancelMsg: PCWSTR, pvResevered: LPCVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCancelMsg(self, pwzCancelMsg, pvResevered)
-proc Timer*(self: ptr IProgressDialog, dwTimerAction: DWORD, pvResevered: LPCVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Timer(self, dwTimerAction, pvResevered)
-proc GetBorderDW*(self: ptr IDockingWindowSite, punkObj: ptr IUnknown, prcBorder: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBorderDW(self, punkObj, prcBorder)
-proc RequestBorderSpaceDW*(self: ptr IDockingWindowSite, punkObj: ptr IUnknown, pbw: LPCBORDERWIDTHS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestBorderSpaceDW(self, punkObj, pbw)
-proc SetBorderSpaceDW*(self: ptr IDockingWindowSite, punkObj: ptr IUnknown, pbw: LPCBORDERWIDTHS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBorderSpaceDW(self, punkObj, pbw)
-proc AddToolbar*(self: ptr IDockingWindowFrame, punkSrc: ptr IUnknown, pwszItem: PCWSTR, dwAddFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddToolbar(self, punkSrc, pwszItem, dwAddFlags)
-proc RemoveToolbar*(self: ptr IDockingWindowFrame, punkSrc: ptr IUnknown, dwRemoveFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveToolbar(self, punkSrc, dwRemoveFlags)
-proc FindToolbar*(self: ptr IDockingWindowFrame, pwszItem: PCWSTR, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindToolbar(self, pwszItem, riid, ppv)
-proc CaptureThumbnail*(self: ptr IThumbnailCapture, pMaxSize: ptr SIZE, pHTMLDoc2: ptr IUnknown, phbmThumbnail: ptr HBITMAP): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CaptureThumbnail(self, pMaxSize, pHTMLDoc2, phbmThumbnail)
-proc Reset*(self: ptr IEnumShellImageStore): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Next*(self: ptr IEnumShellImageStore, celt: ULONG, prgElt: ptr PENUMSHELLIMAGESTOREDATA, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, prgElt, pceltFetched)
-proc Skip*(self: ptr IEnumShellImageStore, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Clone*(self: ptr IEnumShellImageStore, ppEnum: ptr ptr IEnumShellImageStore): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppEnum)
-proc Open*(self: ptr IShellImageStore, dwMode: DWORD, pdwLock: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Open(self, dwMode, pdwLock)
-proc Create*(self: ptr IShellImageStore, dwMode: DWORD, pdwLock: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Create(self, dwMode, pdwLock)
-proc ReleaseLock*(self: ptr IShellImageStore, pdwLock: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseLock(self, pdwLock)
-proc Close*(self: ptr IShellImageStore, pdwLock: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Close(self, pdwLock)
-proc Commit*(self: ptr IShellImageStore, pdwLock: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Commit(self, pdwLock)
-proc IsLocked*(self: ptr IShellImageStore): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsLocked(self)
-proc GetMode*(self: ptr IShellImageStore, pdwMode: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMode(self, pdwMode)
-proc GetCapabilities*(self: ptr IShellImageStore, pdwCapMask: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCapabilities(self, pdwCapMask)
-proc AddEntry*(self: ptr IShellImageStore, pszName: PCWSTR, pftTimeStamp: ptr FILETIME, dwMode: DWORD, hImage: HBITMAP): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddEntry(self, pszName, pftTimeStamp, dwMode, hImage)
-proc GetEntry*(self: ptr IShellImageStore, pszName: PCWSTR, dwMode: DWORD, phImage: ptr HBITMAP): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEntry(self, pszName, dwMode, phImage)
-proc DeleteEntry*(self: ptr IShellImageStore, pszName: PCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteEntry(self, pszName)
-proc IsEntryInStore*(self: ptr IShellImageStore, pszName: PCWSTR, pftTimeStamp: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsEntryInStore(self, pszName, pftTimeStamp)
-proc Enum*(self: ptr IShellImageStore, ppEnum: ptr LPENUMSHELLIMAGESTORE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Enum(self, ppEnum)
-proc InitializeSFB*(self: ptr IShellFolderBand, psf: ptr IShellFolder, pidl: PCIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeSFB(self, psf, pidl)
-proc SetBandInfoSFB*(self: ptr IShellFolderBand, pbi: PBANDINFOSFB): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBandInfoSFB(self, pbi)
-proc GetBandInfoSFB*(self: ptr IShellFolderBand, pbi: PBANDINFOSFB): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBandInfoSFB(self, pbi)
-proc SetDeskBarSite*(self: ptr IDeskBarClient, punkSite: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDeskBarSite(self, punkSite)
-proc SetModeDBC*(self: ptr IDeskBarClient, dwMode: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetModeDBC(self, dwMode)
-proc UIActivateDBC*(self: ptr IDeskBarClient, dwState: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UIActivateDBC(self, dwState)
-proc GetSize*(self: ptr IDeskBarClient, dwWhich: DWORD, prc: LPRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSize(self, dwWhich, prc)
-proc ApplyChanges*(self: ptr IActiveDesktop, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ApplyChanges(self, dwFlags)
-proc GetWallpaper*(self: ptr IActiveDesktop, pwszWallpaper: PWSTR, cchWallpaper: UINT, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWallpaper(self, pwszWallpaper, cchWallpaper, dwFlags)
-proc SetWallpaper*(self: ptr IActiveDesktop, pwszWallpaper: PCWSTR, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetWallpaper(self, pwszWallpaper, dwReserved)
-proc GetWallpaperOptions*(self: ptr IActiveDesktop, pwpo: LPWALLPAPEROPT, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWallpaperOptions(self, pwpo, dwReserved)
-proc SetWallpaperOptions*(self: ptr IActiveDesktop, pwpo: LPCWALLPAPEROPT, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetWallpaperOptions(self, pwpo, dwReserved)
-proc GetPattern*(self: ptr IActiveDesktop, pwszPattern: PWSTR, cchPattern: UINT, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPattern(self, pwszPattern, cchPattern, dwReserved)
-proc SetPattern*(self: ptr IActiveDesktop, pwszPattern: PCWSTR, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPattern(self, pwszPattern, dwReserved)
-proc GetDesktopItemOptions*(self: ptr IActiveDesktop, pco: LPCOMPONENTSOPT, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDesktopItemOptions(self, pco, dwReserved)
-proc SetDesktopItemOptions*(self: ptr IActiveDesktop, pco: LPCCOMPONENTSOPT, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDesktopItemOptions(self, pco, dwReserved)
-proc AddDesktopItem*(self: ptr IActiveDesktop, pcomp: LPCCOMPONENT, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddDesktopItem(self, pcomp, dwReserved)
-proc AddDesktopItemWithUI*(self: ptr IActiveDesktop, hwnd: HWND, pcomp: LPCOMPONENT, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddDesktopItemWithUI(self, hwnd, pcomp, dwReserved)
-proc ModifyDesktopItem*(self: ptr IActiveDesktop, pcomp: LPCCOMPONENT, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ModifyDesktopItem(self, pcomp, dwFlags)
-proc RemoveDesktopItem*(self: ptr IActiveDesktop, pcomp: LPCCOMPONENT, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveDesktopItem(self, pcomp, dwReserved)
-proc GetDesktopItemCount*(self: ptr IActiveDesktop, pcItems: ptr int32, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDesktopItemCount(self, pcItems, dwReserved)
-proc GetDesktopItem*(self: ptr IActiveDesktop, nComponent: int32, pcomp: LPCOMPONENT, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDesktopItem(self, nComponent, pcomp, dwReserved)
-proc GetDesktopItemByID*(self: ptr IActiveDesktop, dwID: ULONG_PTR, pcomp: LPCOMPONENT, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDesktopItemByID(self, dwID, pcomp, dwReserved)
-proc GenerateDesktopItemHtml*(self: ptr IActiveDesktop, pwszFileName: PCWSTR, pcomp: LPCOMPONENT, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GenerateDesktopItemHtml(self, pwszFileName, pcomp, dwReserved)
-proc AddUrl*(self: ptr IActiveDesktop, hwnd: HWND, pszSource: PCWSTR, pcomp: LPCOMPONENT, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddUrl(self, hwnd, pszSource, pcomp, dwFlags)
-proc GetDesktopItemBySource*(self: ptr IActiveDesktop, pwszSource: PCWSTR, pcomp: LPCOMPONENT, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDesktopItemBySource(self, pwszSource, pcomp, dwReserved)
-proc SetSafeMode*(self: ptr IActiveDesktopP, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSafeMode(self, dwFlags)
-proc EnsureUpdateHTML*(self: ptr IActiveDesktopP): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnsureUpdateHTML(self)
-proc SetScheme*(self: ptr IActiveDesktopP, pwszSchemeName: PCWSTR, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetScheme(self, pwszSchemeName, dwFlags)
-proc GetScheme*(self: ptr IActiveDesktopP, pwszSchemeName: PWSTR, pdwcchBuffer: ptr DWORD, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetScheme(self, pwszSchemeName, pdwcchBuffer, dwFlags)
-proc ReReadWallpaper*(self: ptr IADesktopP2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReReadWallpaper(self)
-proc GetADObjectFlags*(self: ptr IADesktopP2, pdwFlags: ptr DWORD, dwMask: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetADObjectFlags(self, pdwFlags, dwMask)
-proc UpdateAllDesktopSubscriptions*(self: ptr IADesktopP2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateAllDesktopSubscriptions(self)
-proc MakeDynamicChanges*(self: ptr IADesktopP2, pOleObj: ptr IOleObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MakeDynamicChanges(self, pOleObj)
-proc Initialize*(self: ptr IColumnProvider, psci: LPCSHCOLUMNINIT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, psci)
-proc GetColumnInfo*(self: ptr IColumnProvider, dwIndex: DWORD, psci: ptr SHCOLUMNINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColumnInfo(self, dwIndex, psci)
-proc GetItemData*(self: ptr IColumnProvider, pscid: LPCSHCOLUMNID, pscd: LPCSHCOLUMNDATA, pvarData: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemData(self, pscid, pscd, pvarData)
-proc OnChange*(self: ptr IShellChangeNotify, lEvent: LONG, pidl1: PCIDLIST_ABSOLUTE, pidl2: PCIDLIST_ABSOLUTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnChange(self, lEvent, pidl1, pidl2)
-proc GetInfoTip*(self: ptr IQueryInfo, dwFlags: DWORD, ppwszTip: ptr PWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInfoTip(self, dwFlags, ppwszTip)
-proc GetInfoFlags*(self: ptr IQueryInfo, pdwFlags: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetInfoFlags(self, pdwFlags)
-proc GetWindowLV*(self: ptr IDefViewFrame, phwnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWindowLV(self, phwnd)
-proc ReleaseWindowLV*(self: ptr IDefViewFrame): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseWindowLV(self)
-proc GetShellFolder*(self: ptr IDefViewFrame, ppsf: ptr ptr IShellFolder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetShellFolder(self, ppsf)
-proc OnSetTitle*(self: ptr IDocViewSite, pvTitle: ptr VARIANTARG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnSetTitle(self, pvTitle)
-proc Initialize*(self: ptr IInitializeObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self)
-proc SetIconSize*(self: ptr IBanneredBar, iIcon: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetIconSize(self, iIcon)
-proc GetIconSize*(self: ptr IBanneredBar, piIcon: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIconSize(self, piIcon)
-proc SetBitmap*(self: ptr IBanneredBar, hBitmap: HBITMAP): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBitmap(self, hBitmap)
-proc GetBitmap*(self: ptr IBanneredBar, phBitmap: ptr HBITMAP): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBitmap(self, phBitmap)
-proc MessageSFVCB*(self: ptr IShellFolderViewCB, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MessageSFVCB(self, uMsg, wParam, lParam)
-proc Rearrange*(self: ptr IShellFolderView, lParamSort: LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Rearrange(self, lParamSort)
-proc GetArrangeParam*(self: ptr IShellFolderView, plParamSort: ptr LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetArrangeParam(self, plParamSort)
-proc ArrangeGrid*(self: ptr IShellFolderView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ArrangeGrid(self)
-proc AutoArrange*(self: ptr IShellFolderView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AutoArrange(self)
-proc GetAutoArrange*(self: ptr IShellFolderView): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAutoArrange(self)
-proc AddObject*(self: ptr IShellFolderView, pidl: PUITEMID_CHILD, puItem: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddObject(self, pidl, puItem)
-proc GetObject*(self: ptr IShellFolderView, ppidl: ptr PITEMID_CHILD, uItem: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObject(self, ppidl, uItem)
-proc RemoveObject*(self: ptr IShellFolderView, pidl: PUITEMID_CHILD, puItem: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveObject(self, pidl, puItem)
-proc GetObjectCount*(self: ptr IShellFolderView, puCount: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObjectCount(self, puCount)
-proc SetObjectCount*(self: ptr IShellFolderView, uCount: UINT, dwFlags: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetObjectCount(self, uCount, dwFlags)
-proc UpdateObject*(self: ptr IShellFolderView, pidlOld: PUITEMID_CHILD, pidlNew: PUITEMID_CHILD, puItem: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateObject(self, pidlOld, pidlNew, puItem)
-proc RefreshObject*(self: ptr IShellFolderView, pidl: PUITEMID_CHILD, puItem: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RefreshObject(self, pidl, puItem)
-proc SetRedraw*(self: ptr IShellFolderView, bRedraw: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetRedraw(self, bRedraw)
-proc GetSelectedCount*(self: ptr IShellFolderView, puSelected: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelectedCount(self, puSelected)
-proc GetSelectedObjects*(self: ptr IShellFolderView, pppidl: ptr ptr PCUITEMID_CHILD, puItems: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelectedObjects(self, pppidl, puItems)
-proc IsDropOnSource*(self: ptr IShellFolderView, pDropTarget: ptr IDropTarget): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDropOnSource(self, pDropTarget)
-proc GetDragPoint*(self: ptr IShellFolderView, ppt: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDragPoint(self, ppt)
-proc GetDropPoint*(self: ptr IShellFolderView, ppt: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDropPoint(self, ppt)
-proc MoveIcons*(self: ptr IShellFolderView, pDataObject: ptr IDataObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveIcons(self, pDataObject)
-proc SetItemPos*(self: ptr IShellFolderView, pidl: PCUITEMID_CHILD, ppt: ptr POINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetItemPos(self, pidl, ppt)
-proc IsBkDropTarget*(self: ptr IShellFolderView, pDropTarget: ptr IDropTarget): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsBkDropTarget(self, pDropTarget)
-proc SetClipboard*(self: ptr IShellFolderView, bMove: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetClipboard(self, bMove)
-proc SetPoints*(self: ptr IShellFolderView, pDataObject: ptr IDataObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPoints(self, pDataObject)
-proc GetItemSpacing*(self: ptr IShellFolderView, pSpacing: ptr ITEMSPACING): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemSpacing(self, pSpacing)
-proc SetCallback*(self: ptr IShellFolderView, pNewCB: ptr IShellFolderViewCB, ppOldCB: ptr ptr IShellFolderViewCB): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCallback(self, pNewCB, ppOldCB)
-proc Select*(self: ptr IShellFolderView, dwFlags: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Select(self, dwFlags)
-proc QuerySupport*(self: ptr IShellFolderView, pdwSupport: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QuerySupport(self, pdwSupport)
-proc SetAutomationObject*(self: ptr IShellFolderView, pdisp: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetAutomationObject(self, pdisp)
-proc ReadPropertyNPB*(self: ptr INamedPropertyBag, pszBagname: PCWSTR, pszPropName: PCWSTR, pVar: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReadPropertyNPB(self, pszBagname, pszPropName, pVar)
-proc WritePropertyNPB*(self: ptr INamedPropertyBag, pszBagname: PCWSTR, pszPropName: PCWSTR, pVar: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WritePropertyNPB(self, pszBagname, pszPropName, pVar)
-proc RemovePropertyNPB*(self: ptr INamedPropertyBag, pszBagname: PCWSTR, pszPropName: PCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemovePropertyNPB(self, pszBagname, pszPropName)
-converter winimConverterIQueryAssociationsToIUnknown*(x: ptr IQueryAssociations): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFolderViewOCToIDispatch*(x: ptr IFolderViewOC): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIFolderViewOCToIUnknown*(x: ptr IFolderViewOC): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDShellFolderViewEventsToIDispatch*(x: ptr DShellFolderViewEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDShellFolderViewEventsToIUnknown*(x: ptr DShellFolderViewEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterDFConstraintToIDispatch*(x: ptr DFConstraint): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterDFConstraintToIUnknown*(x: ptr DFConstraint): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterFolderToIDispatch*(x: ptr Folder): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterFolderToIUnknown*(x: ptr Folder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterFolder2ToFolder*(x: ptr Folder2): ptr Folder = cast[ptr Folder](x)
-converter winimConverterFolder2ToIDispatch*(x: ptr Folder2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterFolder2ToIUnknown*(x: ptr Folder2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterFolder3ToFolder2*(x: ptr Folder3): ptr Folder2 = cast[ptr Folder2](x)
-converter winimConverterFolder3ToFolder*(x: ptr Folder3): ptr Folder = cast[ptr Folder](x)
-converter winimConverterFolder3ToIDispatch*(x: ptr Folder3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterFolder3ToIUnknown*(x: ptr Folder3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterFolderItemToIDispatch*(x: ptr FolderItem): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterFolderItemToIUnknown*(x: ptr FolderItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterFolderItem2ToFolderItem*(x: ptr FolderItem2): ptr FolderItem = cast[ptr FolderItem](x)
-converter winimConverterFolderItem2ToIDispatch*(x: ptr FolderItem2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterFolderItem2ToIUnknown*(x: ptr FolderItem2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterFolderItemsToIDispatch*(x: ptr FolderItems): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterFolderItemsToIUnknown*(x: ptr FolderItems): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterFolderItems2ToFolderItems*(x: ptr FolderItems2): ptr FolderItems = cast[ptr FolderItems](x)
-converter winimConverterFolderItems2ToIDispatch*(x: ptr FolderItems2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterFolderItems2ToIUnknown*(x: ptr FolderItems2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterFolderItems3ToFolderItems2*(x: ptr FolderItems3): ptr FolderItems2 = cast[ptr FolderItems2](x)
-converter winimConverterFolderItems3ToFolderItems*(x: ptr FolderItems3): ptr FolderItems = cast[ptr FolderItems](x)
-converter winimConverterFolderItems3ToIDispatch*(x: ptr FolderItems3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterFolderItems3ToIUnknown*(x: ptr FolderItems3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterFolderItemVerbToIDispatch*(x: ptr FolderItemVerb): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterFolderItemVerbToIUnknown*(x: ptr FolderItemVerb): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterFolderItemVerbsToIDispatch*(x: ptr FolderItemVerbs): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterFolderItemVerbsToIUnknown*(x: ptr FolderItemVerbs): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellLinkDualToIDispatch*(x: ptr IShellLinkDual): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellLinkDualToIUnknown*(x: ptr IShellLinkDual): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellLinkDual2ToIShellLinkDual*(x: ptr IShellLinkDual2): ptr IShellLinkDual = cast[ptr IShellLinkDual](x)
-converter winimConverterIShellLinkDual2ToIDispatch*(x: ptr IShellLinkDual2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellLinkDual2ToIUnknown*(x: ptr IShellLinkDual2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellFolderViewDualToIDispatch*(x: ptr IShellFolderViewDual): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellFolderViewDualToIUnknown*(x: ptr IShellFolderViewDual): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellFolderViewDual2ToIShellFolderViewDual*(x: ptr IShellFolderViewDual2): ptr IShellFolderViewDual = cast[ptr IShellFolderViewDual](x)
-converter winimConverterIShellFolderViewDual2ToIDispatch*(x: ptr IShellFolderViewDual2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellFolderViewDual2ToIUnknown*(x: ptr IShellFolderViewDual2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellFolderViewDual3ToIShellFolderViewDual2*(x: ptr IShellFolderViewDual3): ptr IShellFolderViewDual2 = cast[ptr IShellFolderViewDual2](x)
-converter winimConverterIShellFolderViewDual3ToIShellFolderViewDual*(x: ptr IShellFolderViewDual3): ptr IShellFolderViewDual = cast[ptr IShellFolderViewDual](x)
-converter winimConverterIShellFolderViewDual3ToIDispatch*(x: ptr IShellFolderViewDual3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellFolderViewDual3ToIUnknown*(x: ptr IShellFolderViewDual3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellDispatchToIDispatch*(x: ptr IShellDispatch): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellDispatchToIUnknown*(x: ptr IShellDispatch): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellDispatch2ToIShellDispatch*(x: ptr IShellDispatch2): ptr IShellDispatch = cast[ptr IShellDispatch](x)
-converter winimConverterIShellDispatch2ToIDispatch*(x: ptr IShellDispatch2): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellDispatch2ToIUnknown*(x: ptr IShellDispatch2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellDispatch3ToIShellDispatch2*(x: ptr IShellDispatch3): ptr IShellDispatch2 = cast[ptr IShellDispatch2](x)
-converter winimConverterIShellDispatch3ToIShellDispatch*(x: ptr IShellDispatch3): ptr IShellDispatch = cast[ptr IShellDispatch](x)
-converter winimConverterIShellDispatch3ToIDispatch*(x: ptr IShellDispatch3): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellDispatch3ToIUnknown*(x: ptr IShellDispatch3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellDispatch4ToIShellDispatch3*(x: ptr IShellDispatch4): ptr IShellDispatch3 = cast[ptr IShellDispatch3](x)
-converter winimConverterIShellDispatch4ToIShellDispatch2*(x: ptr IShellDispatch4): ptr IShellDispatch2 = cast[ptr IShellDispatch2](x)
-converter winimConverterIShellDispatch4ToIShellDispatch*(x: ptr IShellDispatch4): ptr IShellDispatch = cast[ptr IShellDispatch](x)
-converter winimConverterIShellDispatch4ToIDispatch*(x: ptr IShellDispatch4): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellDispatch4ToIUnknown*(x: ptr IShellDispatch4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellDispatch5ToIShellDispatch4*(x: ptr IShellDispatch5): ptr IShellDispatch4 = cast[ptr IShellDispatch4](x)
-converter winimConverterIShellDispatch5ToIShellDispatch3*(x: ptr IShellDispatch5): ptr IShellDispatch3 = cast[ptr IShellDispatch3](x)
-converter winimConverterIShellDispatch5ToIShellDispatch2*(x: ptr IShellDispatch5): ptr IShellDispatch2 = cast[ptr IShellDispatch2](x)
-converter winimConverterIShellDispatch5ToIShellDispatch*(x: ptr IShellDispatch5): ptr IShellDispatch = cast[ptr IShellDispatch](x)
-converter winimConverterIShellDispatch5ToIDispatch*(x: ptr IShellDispatch5): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellDispatch5ToIUnknown*(x: ptr IShellDispatch5): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellDispatch6ToIShellDispatch5*(x: ptr IShellDispatch6): ptr IShellDispatch5 = cast[ptr IShellDispatch5](x)
-converter winimConverterIShellDispatch6ToIShellDispatch4*(x: ptr IShellDispatch6): ptr IShellDispatch4 = cast[ptr IShellDispatch4](x)
-converter winimConverterIShellDispatch6ToIShellDispatch3*(x: ptr IShellDispatch6): ptr IShellDispatch3 = cast[ptr IShellDispatch3](x)
-converter winimConverterIShellDispatch6ToIShellDispatch2*(x: ptr IShellDispatch6): ptr IShellDispatch2 = cast[ptr IShellDispatch2](x)
-converter winimConverterIShellDispatch6ToIShellDispatch*(x: ptr IShellDispatch6): ptr IShellDispatch = cast[ptr IShellDispatch](x)
-converter winimConverterIShellDispatch6ToIDispatch*(x: ptr IShellDispatch6): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIShellDispatch6ToIUnknown*(x: ptr IShellDispatch6): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileSearchBandToIDispatch*(x: ptr IFileSearchBand): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIFileSearchBandToIUnknown*(x: ptr IFileSearchBand): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWebWizardHostToIDispatch*(x: ptr IWebWizardHost): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterIWebWizardHostToIUnknown*(x: ptr IWebWizardHost): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINewWDEventsToIWebWizardHost*(x: ptr INewWDEvents): ptr IWebWizardHost = cast[ptr IWebWizardHost](x)
-converter winimConverterINewWDEventsToIDispatch*(x: ptr INewWDEvents): ptr IDispatch = cast[ptr IDispatch](x)
-converter winimConverterINewWDEventsToIUnknown*(x: ptr INewWDEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAutoCompleteToIUnknown*(x: ptr IAutoComplete): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAutoComplete2ToIAutoComplete*(x: ptr IAutoComplete2): ptr IAutoComplete = cast[ptr IAutoComplete](x)
-converter winimConverterIAutoComplete2ToIUnknown*(x: ptr IAutoComplete2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumACStringToIEnumString*(x: ptr IEnumACString): ptr IEnumString = cast[ptr IEnumString](x)
-converter winimConverterIEnumACStringToIUnknown*(x: ptr IEnumACString): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDataObjectAsyncCapabilityToIUnknown*(x: ptr IDataObjectAsyncCapability): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectArrayToIUnknown*(x: ptr IObjectArray): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectCollectionToIObjectArray*(x: ptr IObjectCollection): ptr IObjectArray = cast[ptr IObjectArray](x)
-converter winimConverterIObjectCollectionToIUnknown*(x: ptr IObjectCollection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIContextMenuToIUnknown*(x: ptr IContextMenu): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIContextMenu2ToIContextMenu*(x: ptr IContextMenu2): ptr IContextMenu = cast[ptr IContextMenu](x)
-converter winimConverterIContextMenu2ToIUnknown*(x: ptr IContextMenu2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIContextMenu3ToIContextMenu2*(x: ptr IContextMenu3): ptr IContextMenu2 = cast[ptr IContextMenu2](x)
-converter winimConverterIContextMenu3ToIContextMenu*(x: ptr IContextMenu3): ptr IContextMenu = cast[ptr IContextMenu](x)
-converter winimConverterIContextMenu3ToIUnknown*(x: ptr IContextMenu3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExecuteCommandToIUnknown*(x: ptr IExecuteCommand): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistFolderToIPersist*(x: ptr IPersistFolder): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterIPersistFolderToIUnknown*(x: ptr IPersistFolder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRunnableTaskToIUnknown*(x: ptr IRunnableTask): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellTaskSchedulerToIUnknown*(x: ptr IShellTaskScheduler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIQueryCodePageToIUnknown*(x: ptr IQueryCodePage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistFolder2ToIPersistFolder*(x: ptr IPersistFolder2): ptr IPersistFolder = cast[ptr IPersistFolder](x)
-converter winimConverterIPersistFolder2ToIPersist*(x: ptr IPersistFolder2): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterIPersistFolder2ToIUnknown*(x: ptr IPersistFolder2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistFolder3ToIPersistFolder2*(x: ptr IPersistFolder3): ptr IPersistFolder2 = cast[ptr IPersistFolder2](x)
-converter winimConverterIPersistFolder3ToIPersistFolder*(x: ptr IPersistFolder3): ptr IPersistFolder = cast[ptr IPersistFolder](x)
-converter winimConverterIPersistFolder3ToIPersist*(x: ptr IPersistFolder3): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterIPersistFolder3ToIUnknown*(x: ptr IPersistFolder3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPersistIDListToIPersist*(x: ptr IPersistIDList): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterIPersistIDListToIUnknown*(x: ptr IPersistIDList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumIDListToIUnknown*(x: ptr IEnumIDList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumFullIDListToIUnknown*(x: ptr IEnumFullIDList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectWithFolderEnumModeToIUnknown*(x: ptr IObjectWithFolderEnumMode): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIParseAndCreateItemToIUnknown*(x: ptr IParseAndCreateItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellFolderToIUnknown*(x: ptr IShellFolder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumExtraSearchToIUnknown*(x: ptr IEnumExtraSearch): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellFolder2ToIShellFolder*(x: ptr IShellFolder2): ptr IShellFolder = cast[ptr IShellFolder](x)
-converter winimConverterIShellFolder2ToIUnknown*(x: ptr IShellFolder2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFolderViewOptionsToIUnknown*(x: ptr IFolderViewOptions): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellViewToIOleWindow*(x: ptr IShellView): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIShellViewToIUnknown*(x: ptr IShellView): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellView2ToIShellView*(x: ptr IShellView2): ptr IShellView = cast[ptr IShellView](x)
-converter winimConverterIShellView2ToIOleWindow*(x: ptr IShellView2): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIShellView2ToIUnknown*(x: ptr IShellView2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellView3ToIShellView2*(x: ptr IShellView3): ptr IShellView2 = cast[ptr IShellView2](x)
-converter winimConverterIShellView3ToIShellView*(x: ptr IShellView3): ptr IShellView = cast[ptr IShellView](x)
-converter winimConverterIShellView3ToIOleWindow*(x: ptr IShellView3): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIShellView3ToIUnknown*(x: ptr IShellView3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFolderViewToIUnknown*(x: ptr IFolderView): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISearchBoxInfoToIUnknown*(x: ptr ISearchBoxInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFolderView2ToIFolderView*(x: ptr IFolderView2): ptr IFolderView = cast[ptr IFolderView](x)
-converter winimConverterIFolderView2ToIUnknown*(x: ptr IFolderView2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFolderViewSettingsToIUnknown*(x: ptr IFolderViewSettings): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPreviewHandlerVisualsToIUnknown*(x: ptr IPreviewHandlerVisuals): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIVisualPropertiesToIUnknown*(x: ptr IVisualProperties): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICommDlgBrowserToIUnknown*(x: ptr ICommDlgBrowser): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICommDlgBrowser2ToICommDlgBrowser*(x: ptr ICommDlgBrowser2): ptr ICommDlgBrowser = cast[ptr ICommDlgBrowser](x)
-converter winimConverterICommDlgBrowser2ToIUnknown*(x: ptr ICommDlgBrowser2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICommDlgBrowser3ToICommDlgBrowser2*(x: ptr ICommDlgBrowser3): ptr ICommDlgBrowser2 = cast[ptr ICommDlgBrowser2](x)
-converter winimConverterICommDlgBrowser3ToICommDlgBrowser*(x: ptr ICommDlgBrowser3): ptr ICommDlgBrowser = cast[ptr ICommDlgBrowser](x)
-converter winimConverterICommDlgBrowser3ToIUnknown*(x: ptr ICommDlgBrowser3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIColumnManagerToIUnknown*(x: ptr IColumnManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFolderFilterSiteToIUnknown*(x: ptr IFolderFilterSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFolderFilterToIUnknown*(x: ptr IFolderFilter): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInputObjectSiteToIUnknown*(x: ptr IInputObjectSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInputObjectToIUnknown*(x: ptr IInputObject): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInputObject2ToIInputObject*(x: ptr IInputObject2): ptr IInputObject = cast[ptr IInputObject](x)
-converter winimConverterIInputObject2ToIUnknown*(x: ptr IInputObject2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellIconToIUnknown*(x: ptr IShellIcon): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellBrowserToIOleWindow*(x: ptr IShellBrowser): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIShellBrowserToIUnknown*(x: ptr IShellBrowser): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIProfferServiceToIUnknown*(x: ptr IProfferService): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellItemToIUnknown*(x: ptr IShellItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellItem2ToIShellItem*(x: ptr IShellItem2): ptr IShellItem = cast[ptr IShellItem](x)
-converter winimConverterIShellItem2ToIUnknown*(x: ptr IShellItem2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellItemImageFactoryToIUnknown*(x: ptr IShellItemImageFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUserAccountChangeCallbackToIUnknown*(x: ptr IUserAccountChangeCallback): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumShellItemsToIUnknown*(x: ptr IEnumShellItems): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITransferAdviseSinkToIUnknown*(x: ptr ITransferAdviseSink): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITransferSourceToIUnknown*(x: ptr ITransferSource): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumResourcesToIUnknown*(x: ptr IEnumResources): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellItemResourcesToIUnknown*(x: ptr IShellItemResources): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITransferDestinationToIUnknown*(x: ptr ITransferDestination): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIStreamAsyncToIStream*(x: ptr IStreamAsync): ptr IStream = cast[ptr IStream](x)
-converter winimConverterIStreamAsyncToISequentialStream*(x: ptr IStreamAsync): ptr ISequentialStream = cast[ptr ISequentialStream](x)
-converter winimConverterIStreamAsyncToIUnknown*(x: ptr IStreamAsync): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIStreamUnbufferedInfoToIUnknown*(x: ptr IStreamUnbufferedInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileOperationProgressSinkToIUnknown*(x: ptr IFileOperationProgressSink): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellItemArrayToIUnknown*(x: ptr IShellItemArray): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInitializeWithItemToIUnknown*(x: ptr IInitializeWithItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectWithSelectionToIUnknown*(x: ptr IObjectWithSelection): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectWithBackReferencesToIUnknown*(x: ptr IObjectWithBackReferences): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPropertyUIToIUnknown*(x: ptr IPropertyUI): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICategoryProviderToIUnknown*(x: ptr ICategoryProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICategorizerToIUnknown*(x: ptr ICategorizer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDropTargetHelperToIUnknown*(x: ptr IDropTargetHelper): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDragSourceHelperToIUnknown*(x: ptr IDragSourceHelper): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDragSourceHelper2ToIDragSourceHelper*(x: ptr IDragSourceHelper2): ptr IDragSourceHelper = cast[ptr IDragSourceHelper](x)
-converter winimConverterIDragSourceHelper2ToIUnknown*(x: ptr IDragSourceHelper2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellLinkAToIUnknown*(x: ptr IShellLinkA): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellLinkWToIUnknown*(x: ptr IShellLinkW): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellLinkDataListToIUnknown*(x: ptr IShellLinkDataList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIResolveShellLinkToIUnknown*(x: ptr IResolveShellLink): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActionProgressDialogToIUnknown*(x: ptr IActionProgressDialog): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHWEventHandlerToIUnknown*(x: ptr IHWEventHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHWEventHandler2ToIHWEventHandler*(x: ptr IHWEventHandler2): ptr IHWEventHandler = cast[ptr IHWEventHandler](x)
-converter winimConverterIHWEventHandler2ToIUnknown*(x: ptr IHWEventHandler2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIQueryCancelAutoPlayToIUnknown*(x: ptr IQueryCancelAutoPlay): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDynamicHWHandlerToIUnknown*(x: ptr IDynamicHWHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActionProgressToIUnknown*(x: ptr IActionProgress): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellExtInitToIUnknown*(x: ptr IShellExtInit): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellPropSheetExtToIUnknown*(x: ptr IShellPropSheetExt): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRemoteComputerToIUnknown*(x: ptr IRemoteComputer): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIQueryContinueToIUnknown*(x: ptr IQueryContinue): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectWithCancelEventToIUnknown*(x: ptr IObjectWithCancelEvent): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUserNotificationToIUnknown*(x: ptr IUserNotification): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUserNotificationCallbackToIUnknown*(x: ptr IUserNotificationCallback): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUserNotification2ToIUnknown*(x: ptr IUserNotification2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIItemNameLimitsToIUnknown*(x: ptr IItemNameLimits): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISearchFolderItemFactoryToIUnknown*(x: ptr ISearchFolderItemFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExtractImageToIUnknown*(x: ptr IExtractImage): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExtractImage2ToIExtractImage*(x: ptr IExtractImage2): ptr IExtractImage = cast[ptr IExtractImage](x)
-converter winimConverterIExtractImage2ToIUnknown*(x: ptr IExtractImage2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIThumbnailHandlerFactoryToIUnknown*(x: ptr IThumbnailHandlerFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIParentAndItemToIUnknown*(x: ptr IParentAndItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDockingWindowToIOleWindow*(x: ptr IDockingWindow): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIDockingWindowToIUnknown*(x: ptr IDockingWindow): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDeskBandToIDockingWindow*(x: ptr IDeskBand): ptr IDockingWindow = cast[ptr IDockingWindow](x)
-converter winimConverterIDeskBandToIOleWindow*(x: ptr IDeskBand): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIDeskBandToIUnknown*(x: ptr IDeskBand): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDeskBandInfoToIUnknown*(x: ptr IDeskBandInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDeskBand2ToIDeskBand*(x: ptr IDeskBand2): ptr IDeskBand = cast[ptr IDeskBand](x)
-converter winimConverterIDeskBand2ToIDockingWindow*(x: ptr IDeskBand2): ptr IDockingWindow = cast[ptr IDockingWindow](x)
-converter winimConverterIDeskBand2ToIOleWindow*(x: ptr IDeskBand2): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIDeskBand2ToIUnknown*(x: ptr IDeskBand2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITaskbarListToIUnknown*(x: ptr ITaskbarList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITaskbarList2ToITaskbarList*(x: ptr ITaskbarList2): ptr ITaskbarList = cast[ptr ITaskbarList](x)
-converter winimConverterITaskbarList2ToIUnknown*(x: ptr ITaskbarList2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITaskbarList3ToITaskbarList2*(x: ptr ITaskbarList3): ptr ITaskbarList2 = cast[ptr ITaskbarList2](x)
-converter winimConverterITaskbarList3ToITaskbarList*(x: ptr ITaskbarList3): ptr ITaskbarList = cast[ptr ITaskbarList](x)
-converter winimConverterITaskbarList3ToIUnknown*(x: ptr ITaskbarList3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITaskbarList4ToITaskbarList3*(x: ptr ITaskbarList4): ptr ITaskbarList3 = cast[ptr ITaskbarList3](x)
-converter winimConverterITaskbarList4ToITaskbarList2*(x: ptr ITaskbarList4): ptr ITaskbarList2 = cast[ptr ITaskbarList2](x)
-converter winimConverterITaskbarList4ToITaskbarList*(x: ptr ITaskbarList4): ptr ITaskbarList = cast[ptr ITaskbarList](x)
-converter winimConverterITaskbarList4ToIUnknown*(x: ptr ITaskbarList4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIStartMenuPinnedListToIUnknown*(x: ptr IStartMenuPinnedList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICDBurnToIUnknown*(x: ptr ICDBurn): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWizardSiteToIUnknown*(x: ptr IWizardSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWizardExtensionToIUnknown*(x: ptr IWizardExtension): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWebWizardExtensionToIWizardExtension*(x: ptr IWebWizardExtension): ptr IWizardExtension = cast[ptr IWizardExtension](x)
-converter winimConverterIWebWizardExtensionToIUnknown*(x: ptr IWebWizardExtension): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPublishingWizardToIWizardExtension*(x: ptr IPublishingWizard): ptr IWizardExtension = cast[ptr IWizardExtension](x)
-converter winimConverterIPublishingWizardToIUnknown*(x: ptr IPublishingWizard): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFolderViewHostToIUnknown*(x: ptr IFolderViewHost): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExplorerBrowserEventsToIUnknown*(x: ptr IExplorerBrowserEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExplorerBrowserToIUnknown*(x: ptr IExplorerBrowser): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAccessibleObjectToIUnknown*(x: ptr IAccessibleObject): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIResultsFolderToIUnknown*(x: ptr IResultsFolder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumObjectsToIUnknown*(x: ptr IEnumObjects): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOperationsProgressDialogToIUnknown*(x: ptr IOperationsProgressDialog): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIIOCancelInformationToIUnknown*(x: ptr IIOCancelInformation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileOperationToIUnknown*(x: ptr IFileOperation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectProviderToIUnknown*(x: ptr IObjectProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINamespaceWalkCBToIUnknown*(x: ptr INamespaceWalkCB): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINamespaceWalkCB2ToINamespaceWalkCB*(x: ptr INamespaceWalkCB2): ptr INamespaceWalkCB = cast[ptr INamespaceWalkCB](x)
-converter winimConverterINamespaceWalkCB2ToIUnknown*(x: ptr INamespaceWalkCB2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINamespaceWalkToIUnknown*(x: ptr INamespaceWalk): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAutoCompleteDropDownToIUnknown*(x: ptr IAutoCompleteDropDown): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIBandSiteToIUnknown*(x: ptr IBandSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIModalWindowToIUnknown*(x: ptr IModalWindow): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICDBurnExtToIUnknown*(x: ptr ICDBurnExt): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIContextMenuSiteToIUnknown*(x: ptr IContextMenuSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumReadyCallbackToIUnknown*(x: ptr IEnumReadyCallback): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumerableViewToIUnknown*(x: ptr IEnumerableView): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInsertItemToIUnknown*(x: ptr IInsertItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMenuBandToIUnknown*(x: ptr IMenuBand): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFolderBandPrivToIUnknown*(x: ptr IFolderBandPriv): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRegTreeItemToIUnknown*(x: ptr IRegTreeItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIImageRecompressToIUnknown*(x: ptr IImageRecompress): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDeskBarToIOleWindow*(x: ptr IDeskBar): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIDeskBarToIUnknown*(x: ptr IDeskBar): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMenuPopupToIDeskBar*(x: ptr IMenuPopup): ptr IDeskBar = cast[ptr IDeskBar](x)
-converter winimConverterIMenuPopupToIOleWindow*(x: ptr IMenuPopup): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIMenuPopupToIUnknown*(x: ptr IMenuPopup): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileIsInUseToIUnknown*(x: ptr IFileIsInUse): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileDialogEventsToIUnknown*(x: ptr IFileDialogEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileDialogToIModalWindow*(x: ptr IFileDialog): ptr IModalWindow = cast[ptr IModalWindow](x)
-converter winimConverterIFileDialogToIUnknown*(x: ptr IFileDialog): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileSaveDialogToIFileDialog*(x: ptr IFileSaveDialog): ptr IFileDialog = cast[ptr IFileDialog](x)
-converter winimConverterIFileSaveDialogToIModalWindow*(x: ptr IFileSaveDialog): ptr IModalWindow = cast[ptr IModalWindow](x)
-converter winimConverterIFileSaveDialogToIUnknown*(x: ptr IFileSaveDialog): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileOpenDialogToIFileDialog*(x: ptr IFileOpenDialog): ptr IFileDialog = cast[ptr IFileDialog](x)
-converter winimConverterIFileOpenDialogToIModalWindow*(x: ptr IFileOpenDialog): ptr IModalWindow = cast[ptr IModalWindow](x)
-converter winimConverterIFileOpenDialogToIUnknown*(x: ptr IFileOpenDialog): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileDialogCustomizeToIUnknown*(x: ptr IFileDialogCustomize): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileDialogControlEventsToIUnknown*(x: ptr IFileDialogControlEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileDialog2ToIFileDialog*(x: ptr IFileDialog2): ptr IFileDialog = cast[ptr IFileDialog](x)
-converter winimConverterIFileDialog2ToIModalWindow*(x: ptr IFileDialog2): ptr IModalWindow = cast[ptr IModalWindow](x)
-converter winimConverterIFileDialog2ToIUnknown*(x: ptr IFileDialog2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIApplicationAssociationRegistrationToIUnknown*(x: ptr IApplicationAssociationRegistration): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIApplicationAssociationRegistrationUIToIUnknown*(x: ptr IApplicationAssociationRegistrationUI): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDelegateFolderToIUnknown*(x: ptr IDelegateFolder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIBrowserFrameOptionsToIUnknown*(x: ptr IBrowserFrameOptions): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINewWindowManagerToIUnknown*(x: ptr INewWindowManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAttachmentExecuteToIUnknown*(x: ptr IAttachmentExecute): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellMenuCallbackToIUnknown*(x: ptr IShellMenuCallback): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellMenuToIUnknown*(x: ptr IShellMenu): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellRunDllToIUnknown*(x: ptr IShellRunDll): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIKnownFolderToIUnknown*(x: ptr IKnownFolder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIKnownFolderManagerToIUnknown*(x: ptr IKnownFolderManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISharingConfigurationManagerToIUnknown*(x: ptr ISharingConfigurationManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPreviousVersionsInfoToIUnknown*(x: ptr IPreviousVersionsInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRelatedItemToIUnknown*(x: ptr IRelatedItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIIdentityNameToIRelatedItem*(x: ptr IIdentityName): ptr IRelatedItem = cast[ptr IRelatedItem](x)
-converter winimConverterIIdentityNameToIUnknown*(x: ptr IIdentityName): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDelegateItemToIRelatedItem*(x: ptr IDelegateItem): ptr IRelatedItem = cast[ptr IRelatedItem](x)
-converter winimConverterIDelegateItemToIUnknown*(x: ptr IDelegateItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICurrentItemToIRelatedItem*(x: ptr ICurrentItem): ptr IRelatedItem = cast[ptr IRelatedItem](x)
-converter winimConverterICurrentItemToIUnknown*(x: ptr ICurrentItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITransferMediumItemToIRelatedItem*(x: ptr ITransferMediumItem): ptr IRelatedItem = cast[ptr IRelatedItem](x)
-converter winimConverterITransferMediumItemToIUnknown*(x: ptr ITransferMediumItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUseToBrowseItemToIRelatedItem*(x: ptr IUseToBrowseItem): ptr IRelatedItem = cast[ptr IRelatedItem](x)
-converter winimConverterIUseToBrowseItemToIUnknown*(x: ptr IUseToBrowseItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDisplayItemToIRelatedItem*(x: ptr IDisplayItem): ptr IRelatedItem = cast[ptr IRelatedItem](x)
-converter winimConverterIDisplayItemToIUnknown*(x: ptr IDisplayItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIViewStateIdentityItemToIRelatedItem*(x: ptr IViewStateIdentityItem): ptr IRelatedItem = cast[ptr IRelatedItem](x)
-converter winimConverterIViewStateIdentityItemToIUnknown*(x: ptr IViewStateIdentityItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPreviewItemToIRelatedItem*(x: ptr IPreviewItem): ptr IRelatedItem = cast[ptr IRelatedItem](x)
-converter winimConverterIPreviewItemToIUnknown*(x: ptr IPreviewItem): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDestinationStreamFactoryToIUnknown*(x: ptr IDestinationStreamFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINewMenuClientToIUnknown*(x: ptr INewMenuClient): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInitializeWithBindCtxToIUnknown*(x: ptr IInitializeWithBindCtx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellItemFilterToIUnknown*(x: ptr IShellItemFilter): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINameSpaceTreeControlToIUnknown*(x: ptr INameSpaceTreeControl): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINameSpaceTreeControl2ToINameSpaceTreeControl*(x: ptr INameSpaceTreeControl2): ptr INameSpaceTreeControl = cast[ptr INameSpaceTreeControl](x)
-converter winimConverterINameSpaceTreeControl2ToIUnknown*(x: ptr INameSpaceTreeControl2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINameSpaceTreeControlEventsToIUnknown*(x: ptr INameSpaceTreeControlEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINameSpaceTreeControlDropHandlerToIUnknown*(x: ptr INameSpaceTreeControlDropHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINameSpaceTreeAccessibleToIUnknown*(x: ptr INameSpaceTreeAccessible): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINameSpaceTreeControlCustomDrawToIUnknown*(x: ptr INameSpaceTreeControlCustomDraw): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINameSpaceTreeControlFolderCapabilitiesToIUnknown*(x: ptr INameSpaceTreeControlFolderCapabilities): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPreviewHandlerToIUnknown*(x: ptr IPreviewHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPreviewHandlerFrameToIUnknown*(x: ptr IPreviewHandlerFrame): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITrayDeskBandToIUnknown*(x: ptr ITrayDeskBand): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIBandHostToIUnknown*(x: ptr IBandHost): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExplorerPaneVisibilityToIUnknown*(x: ptr IExplorerPaneVisibility): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIContextMenuCBToIUnknown*(x: ptr IContextMenuCB): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDefaultExtractIconInitToIUnknown*(x: ptr IDefaultExtractIconInit): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExplorerCommandToIUnknown*(x: ptr IExplorerCommand): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExplorerCommandStateToIUnknown*(x: ptr IExplorerCommandState): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInitializeCommandToIUnknown*(x: ptr IInitializeCommand): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumExplorerCommandToIUnknown*(x: ptr IEnumExplorerCommand): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExplorerCommandProviderToIUnknown*(x: ptr IExplorerCommandProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInitializeNetworkFolderToIUnknown*(x: ptr IInitializeNetworkFolder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOpenControlPanelToIUnknown*(x: ptr IOpenControlPanel): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIComputerInfoChangeNotifyToIUnknown*(x: ptr IComputerInfoChangeNotify): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileSystemBindDataToIUnknown*(x: ptr IFileSystemBindData): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileSystemBindData2ToIFileSystemBindData*(x: ptr IFileSystemBindData2): ptr IFileSystemBindData = cast[ptr IFileSystemBindData](x)
-converter winimConverterIFileSystemBindData2ToIUnknown*(x: ptr IFileSystemBindData2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICustomDestinationListToIUnknown*(x: ptr ICustomDestinationList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIApplicationDestinationsToIUnknown*(x: ptr IApplicationDestinations): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIApplicationDocumentListsToIUnknown*(x: ptr IApplicationDocumentLists): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectWithAppUserModelIDToIUnknown*(x: ptr IObjectWithAppUserModelID): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectWithProgIDToIUnknown*(x: ptr IObjectWithProgID): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUpdateIDListToIUnknown*(x: ptr IUpdateIDList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDesktopGadgetToIUnknown*(x: ptr IDesktopGadget): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDesktopWallpaperToIUnknown*(x: ptr IDesktopWallpaper): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHomeGroupToIUnknown*(x: ptr IHomeGroup): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInitializeWithPropertyStoreToIUnknown*(x: ptr IInitializeWithPropertyStore): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIOpenSearchSourceToIUnknown*(x: ptr IOpenSearchSource): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellLibraryToIUnknown*(x: ptr IShellLibrary): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPlaybackManagerEventsToIUnknown*(x: ptr IPlaybackManagerEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPlaybackManagerToIUnknown*(x: ptr IPlaybackManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDefaultFolderMenuInitializeToIUnknown*(x: ptr IDefaultFolderMenuInitialize): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIApplicationActivationManagerToIUnknown*(x: ptr IApplicationActivationManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAssocHandlerInvokerToIUnknown*(x: ptr IAssocHandlerInvoker): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAssocHandlerToIUnknown*(x: ptr IAssocHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumAssocHandlersToIUnknown*(x: ptr IEnumAssocHandlers): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDataObjectProviderToIUnknown*(x: ptr IDataObjectProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDataTransferManagerInteropToIUnknown*(x: ptr IDataTransferManagerInterop): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFrameworkInputPaneHandlerToIUnknown*(x: ptr IFrameworkInputPaneHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFrameworkInputPaneToIUnknown*(x: ptr IFrameworkInputPane): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISearchableApplicationToIUnknown*(x: ptr ISearchableApplication): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAccessibilityDockingServiceCallbackToIUnknown*(x: ptr IAccessibilityDockingServiceCallback): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAccessibilityDockingServiceToIUnknown*(x: ptr IAccessibilityDockingService): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAppVisibilityEventsToIUnknown*(x: ptr IAppVisibilityEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAppVisibilityToIUnknown*(x: ptr IAppVisibility): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPackageExecutionStateChangeNotificationToIUnknown*(x: ptr IPackageExecutionStateChangeNotification): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIPackageDebugSettingsToIUnknown*(x: ptr IPackageDebugSettings): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExecuteCommandApplicationHostEnvironmentToIUnknown*(x: ptr IExecuteCommandApplicationHostEnvironment): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExecuteCommandHostToIUnknown*(x: ptr IExecuteCommandHost): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIApplicationDesignModeSettingsToIUnknown*(x: ptr IApplicationDesignModeSettings): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInitializeWithWindowToIUnknown*(x: ptr IInitializeWithWindow): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHandlerInfoToIUnknown*(x: ptr IHandlerInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIHandlerActivationHostToIUnknown*(x: ptr IHandlerActivationHost): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExtractIconAToIUnknown*(x: ptr IExtractIconA): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExtractIconWToIUnknown*(x: ptr IExtractIconW): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellIconOverlayIdentifierToIUnknown*(x: ptr IShellIconOverlayIdentifier): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellIconOverlayManagerToIUnknown*(x: ptr IShellIconOverlayManager): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellIconOverlayToIUnknown*(x: ptr IShellIconOverlay): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellExecuteHookAToIUnknown*(x: ptr IShellExecuteHookA): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellExecuteHookWToIUnknown*(x: ptr IShellExecuteHookW): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIURLSearchHookToIUnknown*(x: ptr IURLSearchHook): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISearchContextToIUnknown*(x: ptr ISearchContext): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIURLSearchHook2ToIURLSearchHook*(x: ptr IURLSearchHook2): ptr IURLSearchHook = cast[ptr IURLSearchHook](x)
-converter winimConverterIURLSearchHook2ToIUnknown*(x: ptr IURLSearchHook2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINewShortcutHookAToIUnknown*(x: ptr INewShortcutHookA): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINewShortcutHookWToIUnknown*(x: ptr INewShortcutHookW): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICopyHookAToIUnknown*(x: ptr ICopyHookA): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICopyHookWToIUnknown*(x: ptr ICopyHookW): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileViewerSiteToIUnknown*(x: ptr IFileViewerSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileViewerAToIUnknown*(x: ptr IFileViewerA): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIFileViewerWToIUnknown*(x: ptr IFileViewerW): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellDetailsToIUnknown*(x: ptr IShellDetails): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjMgrToIUnknown*(x: ptr IObjMgr): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICurrentWorkingDirectoryToIUnknown*(x: ptr ICurrentWorkingDirectory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIACListToIUnknown*(x: ptr IACList): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIACList2ToIACList*(x: ptr IACList2): ptr IACList = cast[ptr IACList](x)
-converter winimConverterIACList2ToIUnknown*(x: ptr IACList2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIProgressDialogToIUnknown*(x: ptr IProgressDialog): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDockingWindowSiteToIOleWindow*(x: ptr IDockingWindowSite): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIDockingWindowSiteToIUnknown*(x: ptr IDockingWindowSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDockingWindowFrameToIOleWindow*(x: ptr IDockingWindowFrame): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIDockingWindowFrameToIUnknown*(x: ptr IDockingWindowFrame): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIThumbnailCaptureToIUnknown*(x: ptr IThumbnailCapture): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIEnumShellImageStoreToIUnknown*(x: ptr IEnumShellImageStore): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellImageStoreToIUnknown*(x: ptr IShellImageStore): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellFolderBandToIUnknown*(x: ptr IShellFolderBand): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDeskBarClientToIOleWindow*(x: ptr IDeskBarClient): ptr IOleWindow = cast[ptr IOleWindow](x)
-converter winimConverterIDeskBarClientToIUnknown*(x: ptr IDeskBarClient): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveDesktopToIUnknown*(x: ptr IActiveDesktop): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIActiveDesktopPToIUnknown*(x: ptr IActiveDesktopP): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIADesktopP2ToIUnknown*(x: ptr IADesktopP2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIColumnProviderToIUnknown*(x: ptr IColumnProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellChangeNotifyToIUnknown*(x: ptr IShellChangeNotify): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIQueryInfoToIUnknown*(x: ptr IQueryInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDefViewFrameToIUnknown*(x: ptr IDefViewFrame): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDocViewSiteToIUnknown*(x: ptr IDocViewSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInitializeObjectToIUnknown*(x: ptr IInitializeObject): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIBanneredBarToIUnknown*(x: ptr IBanneredBar): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellFolderViewCBToIUnknown*(x: ptr IShellFolderViewCB): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIShellFolderViewToIUnknown*(x: ptr IShellFolderView): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterINamedPropertyBagToIUnknown*(x: ptr INamedPropertyBag): ptr IUnknown = cast[ptr IUnknown](x)
+proc PickIconDlg*(
+  hwnd: HWND, pszIconPath: PWSTR, cchIconPath: UINT, piIconIndex: ptr int32
+): int32 {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc StgMakeUniqueName*(
+  pstgParent: ptr IStorage,
+  pszFileSpec: PCWSTR,
+  grfMode: DWORD,
+  riid: REFIID,
+  ppv: ptr pointer,
+): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
+
+proc ImportPrivacySettings*(
+  pszFilename: PCWSTR,
+  pfParsePrivacyPreferences: ptr WINBOOL,
+  pfParsePerSiteRules: ptr WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "shdocvw", importc.}
+
+proc `hIcon=`*(self: var SHELLEXECUTEINFOA, x: HANDLE) {.inline.} =
+  self.union1.hIcon = x
+
+proc hIcon*(self: SHELLEXECUTEINFOA): HANDLE {.inline.} =
+  self.union1.hIcon
+
+proc hIcon*(self: var SHELLEXECUTEINFOA): var HANDLE {.inline.} =
+  self.union1.hIcon
+
+proc `hMonitor=`*(self: var SHELLEXECUTEINFOA, x: HANDLE) {.inline.} =
+  self.union1.hMonitor = x
+
+proc hMonitor*(self: SHELLEXECUTEINFOA): HANDLE {.inline.} =
+  self.union1.hMonitor
+
+proc hMonitor*(self: var SHELLEXECUTEINFOA): var HANDLE {.inline.} =
+  self.union1.hMonitor
+
+proc `hIcon=`*(self: var SHELLEXECUTEINFOW, x: HANDLE) {.inline.} =
+  self.union1.hIcon = x
+
+proc hIcon*(self: SHELLEXECUTEINFOW): HANDLE {.inline.} =
+  self.union1.hIcon
+
+proc hIcon*(self: var SHELLEXECUTEINFOW): var HANDLE {.inline.} =
+  self.union1.hIcon
+
+proc `hMonitor=`*(self: var SHELLEXECUTEINFOW, x: HANDLE) {.inline.} =
+  self.union1.hMonitor = x
+
+proc hMonitor*(self: SHELLEXECUTEINFOW): HANDLE {.inline.} =
+  self.union1.hMonitor
+
+proc hMonitor*(self: var SHELLEXECUTEINFOW): var HANDLE {.inline.} =
+  self.union1.hMonitor
+
+proc `uTimeout=`*(self: var NOTIFYICONDATAA, x: UINT) {.inline.} =
+  self.union1.uTimeout = x
+
+proc uTimeout*(self: NOTIFYICONDATAA): UINT {.inline.} =
+  self.union1.uTimeout
+
+proc uTimeout*(self: var NOTIFYICONDATAA): var UINT {.inline.} =
+  self.union1.uTimeout
+
+proc `uVersion=`*(self: var NOTIFYICONDATAA, x: UINT) {.inline.} =
+  self.union1.uVersion = x
+
+proc uVersion*(self: NOTIFYICONDATAA): UINT {.inline.} =
+  self.union1.uVersion
+
+proc uVersion*(self: var NOTIFYICONDATAA): var UINT {.inline.} =
+  self.union1.uVersion
+
+proc `uTimeout=`*(self: var NOTIFYICONDATAW, x: UINT) {.inline.} =
+  self.union1.uTimeout = x
+
+proc uTimeout*(self: NOTIFYICONDATAW): UINT {.inline.} =
+  self.union1.uTimeout
+
+proc uTimeout*(self: var NOTIFYICONDATAW): var UINT {.inline.} =
+  self.union1.uTimeout
+
+proc `uVersion=`*(self: var NOTIFYICONDATAW, x: UINT) {.inline.} =
+  self.union1.uVersion = x
+
+proc uVersion*(self: NOTIFYICONDATAW): UINT {.inline.} =
+  self.union1.uVersion
+
+proc uVersion*(self: var NOTIFYICONDATAW): var UINT {.inline.} =
+  self.union1.uVersion
+
+proc Init*(
+    self: ptr IQueryAssociations,
+    flags: ASSOCF,
+    pszAssoc: LPCWSTR,
+    hkProgid: HKEY,
+    hwnd: HWND,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Init(self, flags, pszAssoc, hkProgid, hwnd)
+
+proc GetString*(
+    self: ptr IQueryAssociations,
+    flags: ASSOCF,
+    str: ASSOCSTR,
+    pszExtra: LPCWSTR,
+    pszOut: LPWSTR,
+    pcchOut: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetString(self, flags, str, pszExtra, pszOut, pcchOut)
+
+proc GetKey*(
+    self: ptr IQueryAssociations,
+    flags: ASSOCF,
+    key: ASSOCKEY,
+    pszExtra: LPCWSTR,
+    phkeyOut: ptr HKEY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetKey(self, flags, key, pszExtra, phkeyOut)
+
+proc GetData*(
+    self: ptr IQueryAssociations,
+    flags: ASSOCF,
+    data: ASSOCDATA,
+    pszExtra: LPCWSTR,
+    pvOut: LPVOID,
+    pcbOut: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetData(self, flags, data, pszExtra, pvOut, pcbOut)
+
+proc GetEnum*(
+    self: ptr IQueryAssociations,
+    flags: ASSOCF,
+    assocenum: ASSOCENUM,
+    pszExtra: LPCWSTR,
+    riid: REFIID,
+    ppvOut: ptr LPVOID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEnum(self, flags, assocenum, pszExtra, riid, ppvOut)
+
+proc SetFolderView*(
+    self: ptr IFolderViewOC, pdisp: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFolderView(self, pdisp)
+
+proc get_Name*(self: ptr DFConstraint, pbs: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Name(self, pbs)
+
+proc get_Value*(self: ptr DFConstraint, pv: ptr VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Value(self, pv)
+
+proc get_Title*(self: ptr Folder, pbs: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Title(self, pbs)
+
+proc get_Application*(
+    self: ptr Folder, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Application(self, ppid)
+
+proc get_Parent*(
+    self: ptr Folder, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Parent(self, ppid)
+
+proc get_ParentFolder*(
+    self: ptr Folder, ppsf: ptr ptr Folder
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ParentFolder(self, ppsf)
+
+proc Items*(self: ptr Folder, ppid: ptr ptr FolderItems): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Items(self, ppid)
+
+proc ParseName*(
+    self: ptr Folder, bName: BSTR, ppid: ptr ptr FolderItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseName(self, bName, ppid)
+
+proc NewFolder*(
+    self: ptr Folder, bName: BSTR, vOptions: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NewFolder(self, bName, vOptions)
+
+proc MoveHere*(
+    self: ptr Folder, vItem: VARIANT, vOptions: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveHere(self, vItem, vOptions)
+
+proc CopyHere*(
+    self: ptr Folder, vItem: VARIANT, vOptions: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CopyHere(self, vItem, vOptions)
+
+proc GetDetailsOf*(
+    self: ptr Folder, vItem: VARIANT, iColumn: int32, pbs: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDetailsOf(self, vItem, iColumn, pbs)
+
+proc get_Self*(
+    self: ptr Folder2, ppfi: ptr ptr FolderItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Self(self, ppfi)
+
+proc get_OfflineStatus*(self: ptr Folder2, pul: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_OfflineStatus(self, pul)
+
+proc mSynchronize*(self: ptr Folder2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Synchronize(self)
+
+proc get_HaveToShowWebViewBarricade*(
+    self: ptr Folder2, pbHaveToShowWebViewBarricade: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HaveToShowWebViewBarricade(self, pbHaveToShowWebViewBarricade)
+
+proc DismissedWebViewBarricade*(self: ptr Folder2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DismissedWebViewBarricade(self)
+
+proc get_ShowWebViewBarricade*(
+    self: ptr Folder3, pbShowWebViewBarricade: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ShowWebViewBarricade(self, pbShowWebViewBarricade)
+
+proc put_ShowWebViewBarricade*(
+    self: ptr Folder3, bShowWebViewBarricade: VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ShowWebViewBarricade(self, bShowWebViewBarricade)
+
+proc get_Application*(
+    self: ptr FolderItem, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Application(self, ppid)
+
+proc get_Parent*(
+    self: ptr FolderItem, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Parent(self, ppid)
+
+proc get_Name*(self: ptr FolderItem, pbs: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Name(self, pbs)
+
+proc put_Name*(self: ptr FolderItem, bs: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Name(self, bs)
+
+proc get_Path*(self: ptr FolderItem, pbs: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Path(self, pbs)
+
+proc get_GetLink*(
+    self: ptr FolderItem, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_GetLink(self, ppid)
+
+proc get_GetFolder*(
+    self: ptr FolderItem, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_GetFolder(self, ppid)
+
+proc get_IsLink*(
+    self: ptr FolderItem, pb: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsLink(self, pb)
+
+proc get_IsFolder*(
+    self: ptr FolderItem, pb: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsFolder(self, pb)
+
+proc get_IsFileSystem*(
+    self: ptr FolderItem, pb: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsFileSystem(self, pb)
+
+proc get_IsBrowsable*(
+    self: ptr FolderItem, pb: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsBrowsable(self, pb)
+
+proc get_ModifyDate*(self: ptr FolderItem, pdt: ptr DATE): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ModifyDate(self, pdt)
+
+proc put_ModifyDate*(self: ptr FolderItem, dt: DATE): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ModifyDate(self, dt)
+
+proc get_Size*(self: ptr FolderItem, pul: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Size(self, pul)
+
+proc get_Type*(self: ptr FolderItem, pbs: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Type(self, pbs)
+
+proc Verbs*(
+    self: ptr FolderItem, ppfic: ptr ptr FolderItemVerbs
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Verbs(self, ppfic)
+
+proc InvokeVerb*(self: ptr FolderItem, vVerb: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvokeVerb(self, vVerb)
+
+proc InvokeVerbEx*(
+    self: ptr FolderItem2, vVerb: VARIANT, vArgs: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvokeVerbEx(self, vVerb, vArgs)
+
+proc ExtendedProperty*(
+    self: ptr FolderItem2, bstrPropName: BSTR, pvRet: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExtendedProperty(self, bstrPropName, pvRet)
+
+proc get_Count*(self: ptr FolderItems, plCount: ptr LONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Count(self, plCount)
+
+proc get_Application*(
+    self: ptr FolderItems, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Application(self, ppid)
+
+proc get_Parent*(
+    self: ptr FolderItems, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Parent(self, ppid)
+
+proc Item*(
+    self: ptr FolderItems, index: VARIANT, ppid: ptr ptr FolderItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Item(self, index, ppid)
+
+proc NewEnum*(
+    self: ptr FolderItems, ppunk: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NewEnum(self, ppunk)
+
+proc InvokeVerbEx*(
+    self: ptr FolderItems2, vVerb: VARIANT, vArgs: VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvokeVerbEx(self, vVerb, vArgs)
+
+proc Filter*(
+    self: ptr FolderItems3, grfFlags: LONG, bstrFileSpec: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Filter(self, grfFlags, bstrFileSpec)
+
+proc get_Verbs*(
+    self: ptr FolderItems3, ppfic: ptr ptr FolderItemVerbs
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Verbs(self, ppfic)
+
+proc get_Application*(
+    self: ptr FolderItemVerb, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Application(self, ppid)
+
+proc get_Parent*(
+    self: ptr FolderItemVerb, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Parent(self, ppid)
+
+proc get_Name*(self: ptr FolderItemVerb, pbs: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Name(self, pbs)
+
+proc DoIt*(self: ptr FolderItemVerb): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoIt(self)
+
+proc get_Count*(
+    self: ptr FolderItemVerbs, plCount: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Count(self, plCount)
+
+proc get_Application*(
+    self: ptr FolderItemVerbs, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Application(self, ppid)
+
+proc get_Parent*(
+    self: ptr FolderItemVerbs, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Parent(self, ppid)
+
+proc Item*(
+    self: ptr FolderItemVerbs, index: VARIANT, ppid: ptr ptr FolderItemVerb
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Item(self, index, ppid)
+
+proc NewEnum*(
+    self: ptr FolderItemVerbs, ppunk: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NewEnum(self, ppunk)
+
+proc get_Path*(self: ptr IShellLinkDual, pbs: ptr BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Path(self, pbs)
+
+proc put_Path*(self: ptr IShellLinkDual, bs: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Path(self, bs)
+
+proc get_Description*(
+    self: ptr IShellLinkDual, pbs: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Description(self, pbs)
+
+proc put_Description*(self: ptr IShellLinkDual, bs: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Description(self, bs)
+
+proc get_WorkingDirectory*(
+    self: ptr IShellLinkDual, pbs: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_WorkingDirectory(self, pbs)
+
+proc put_WorkingDirectory*(
+    self: ptr IShellLinkDual, bs: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_WorkingDirectory(self, bs)
+
+proc get_Arguments*(
+    self: ptr IShellLinkDual, pbs: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Arguments(self, pbs)
+
+proc put_Arguments*(self: ptr IShellLinkDual, bs: BSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Arguments(self, bs)
+
+proc get_Hotkey*(
+    self: ptr IShellLinkDual, piHK: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Hotkey(self, piHK)
+
+proc put_Hotkey*(self: ptr IShellLinkDual, iHK: int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Hotkey(self, iHK)
+
+proc get_ShowCommand*(
+    self: ptr IShellLinkDual, piShowCommand: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ShowCommand(self, piShowCommand)
+
+proc put_ShowCommand*(
+    self: ptr IShellLinkDual, iShowCommand: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ShowCommand(self, iShowCommand)
+
+proc Resolve*(self: ptr IShellLinkDual, fFlags: int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Resolve(self, fFlags)
+
+proc GetIconLocation*(
+    self: ptr IShellLinkDual, pbs: ptr BSTR, piIcon: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIconLocation(self, pbs, piIcon)
+
+proc SetIconLocation*(
+    self: ptr IShellLinkDual, bs: BSTR, iIcon: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetIconLocation(self, bs, iIcon)
+
+proc Save*(self: ptr IShellLinkDual, vWhere: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Save(self, vWhere)
+
+proc get_Target*(
+    self: ptr IShellLinkDual2, ppfi: ptr ptr FolderItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Target(self, ppfi)
+
+proc get_Application*(
+    self: ptr IShellFolderViewDual, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Application(self, ppid)
+
+proc get_Parent*(
+    self: ptr IShellFolderViewDual, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Parent(self, ppid)
+
+proc get_Folder*(
+    self: ptr IShellFolderViewDual, ppid: ptr ptr Folder
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Folder(self, ppid)
+
+proc SelectedItems*(
+    self: ptr IShellFolderViewDual, ppid: ptr ptr FolderItems
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SelectedItems(self, ppid)
+
+proc get_FocusedItem*(
+    self: ptr IShellFolderViewDual, ppid: ptr ptr FolderItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_FocusedItem(self, ppid)
+
+proc SelectItem*(
+    self: ptr IShellFolderViewDual, pvfi: ptr VARIANT, dwFlags: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SelectItem(self, pvfi, dwFlags)
+
+proc PopupItemMenu*(
+    self: ptr IShellFolderViewDual,
+    pfi: ptr FolderItem,
+    vx: VARIANT,
+    vy: VARIANT,
+    pbs: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PopupItemMenu(self, pfi, vx, vy, pbs)
+
+proc get_Script*(
+    self: ptr IShellFolderViewDual, ppDisp: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Script(self, ppDisp)
+
+proc get_ViewOptions*(
+    self: ptr IShellFolderViewDual, plViewOptions: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ViewOptions(self, plViewOptions)
+
+proc get_CurrentViewMode*(
+    self: ptr IShellFolderViewDual2, pViewMode: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentViewMode(self, pViewMode)
+
+proc put_CurrentViewMode*(
+    self: ptr IShellFolderViewDual2, ViewMode: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_CurrentViewMode(self, ViewMode)
+
+proc SelectItemRelative*(
+    self: ptr IShellFolderViewDual2, iRelative: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SelectItemRelative(self, iRelative)
+
+proc get_GroupBy*(
+    self: ptr IShellFolderViewDual3, pbstrGroupBy: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_GroupBy(self, pbstrGroupBy)
+
+proc put_GroupBy*(
+    self: ptr IShellFolderViewDual3, bstrGroupBy: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_GroupBy(self, bstrGroupBy)
+
+proc get_FolderFlags*(
+    self: ptr IShellFolderViewDual3, pdwFlags: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_FolderFlags(self, pdwFlags)
+
+proc put_FolderFlags*(
+    self: ptr IShellFolderViewDual3, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_FolderFlags(self, dwFlags)
+
+proc get_SortColumns*(
+    self: ptr IShellFolderViewDual3, pbstrSortColumns: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_SortColumns(self, pbstrSortColumns)
+
+proc put_SortColumns*(
+    self: ptr IShellFolderViewDual3, bstrSortColumns: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_SortColumns(self, bstrSortColumns)
+
+proc put_IconSize*(
+    self: ptr IShellFolderViewDual3, iIconSize: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_IconSize(self, iIconSize)
+
+proc get_IconSize*(
+    self: ptr IShellFolderViewDual3, piIconSize: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IconSize(self, piIconSize)
+
+proc FilterView*(
+    self: ptr IShellFolderViewDual3, bstrFilterText: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FilterView(self, bstrFilterText)
+
+proc get_Application*(
+    self: ptr IShellDispatch, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Application(self, ppid)
+
+proc get_Parent*(
+    self: ptr IShellDispatch, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Parent(self, ppid)
+
+proc NameSpace*(
+    self: ptr IShellDispatch, vDir: VARIANT, ppsdf: ptr ptr Folder
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NameSpace(self, vDir, ppsdf)
+
+proc BrowseForFolder*(
+    self: ptr IShellDispatch,
+    Hwnd: LONG,
+    Title: BSTR,
+    Options: LONG,
+    RootFolder: VARIANT,
+    ppsdf: ptr ptr Folder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BrowseForFolder(self, Hwnd, Title, Options, RootFolder, ppsdf)
+
+proc Windows*(
+    self: ptr IShellDispatch, ppid: ptr ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Windows(self, ppid)
+
+proc Open*(self: ptr IShellDispatch, vDir: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Open(self, vDir)
+
+proc Explore*(self: ptr IShellDispatch, vDir: VARIANT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Explore(self, vDir)
+
+proc MinimizeAll*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MinimizeAll(self)
+
+proc UndoMinimizeALL*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UndoMinimizeALL(self)
+
+proc FileRun*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FileRun(self)
+
+proc CascadeWindows*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CascadeWindows(self)
+
+proc TileVertically*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TileVertically(self)
+
+proc TileHorizontally*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TileHorizontally(self)
+
+proc ShutdownWindows*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShutdownWindows(self)
+
+proc Suspend*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Suspend(self)
+
+proc EjectPC*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EjectPC(self)
+
+proc SetTime*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTime(self)
+
+proc TrayProperties*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TrayProperties(self)
+
+proc Help*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Help(self)
+
+proc FindFiles*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindFiles(self)
+
+proc FindComputer*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindComputer(self)
+
+proc RefreshMenu*(self: ptr IShellDispatch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RefreshMenu(self)
+
+proc ControlPanelItem*(
+    self: ptr IShellDispatch, bstrDir: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ControlPanelItem(self, bstrDir)
+
+proc IsRestricted*(
+    self: ptr IShellDispatch2, Group: BSTR, Restriction: BSTR, plRestrictValue: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsRestricted(self, Group, Restriction, plRestrictValue)
+
+proc ShellExecute*(
+    self: ptr IShellDispatch2,
+    File: BSTR,
+    vArgs: VARIANT,
+    vDir: VARIANT,
+    vOperation: VARIANT,
+    vShow: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShellExecute(self, File, vArgs, vDir, vOperation, vShow)
+
+proc FindPrinter*(
+    self: ptr IShellDispatch2, name: BSTR, location: BSTR, model: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindPrinter(self, name, location, model)
+
+proc GetSystemInformation*(
+    self: ptr IShellDispatch2, name: BSTR, pv: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSystemInformation(self, name, pv)
+
+proc mServiceStart*(
+    self: ptr IShellDispatch2,
+    ServiceName: BSTR,
+    Persistent: VARIANT,
+    pSuccess: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ServiceStart(self, ServiceName, Persistent, pSuccess)
+
+proc mServiceStop*(
+    self: ptr IShellDispatch2,
+    ServiceName: BSTR,
+    Persistent: VARIANT,
+    pSuccess: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ServiceStop(self, ServiceName, Persistent, pSuccess)
+
+proc IsServiceRunning*(
+    self: ptr IShellDispatch2, ServiceName: BSTR, pRunning: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsServiceRunning(self, ServiceName, pRunning)
+
+proc CanStartStopService*(
+    self: ptr IShellDispatch2, ServiceName: BSTR, pCanStartStop: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CanStartStopService(self, ServiceName, pCanStartStop)
+
+proc ShowBrowserBar*(
+    self: ptr IShellDispatch2, bstrClsid: BSTR, bShow: VARIANT, pSuccess: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowBrowserBar(self, bstrClsid, bShow, pSuccess)
+
+proc AddToRecent*(
+    self: ptr IShellDispatch3, varFile: VARIANT, bstrCategory: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddToRecent(self, varFile, bstrCategory)
+
+proc WindowsSecurity*(self: ptr IShellDispatch4): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WindowsSecurity(self)
+
+proc ToggleDesktop*(self: ptr IShellDispatch4): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ToggleDesktop(self)
+
+proc ExplorerPolicy*(
+    self: ptr IShellDispatch4, bstrPolicyName: BSTR, pValue: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExplorerPolicy(self, bstrPolicyName, pValue)
+
+proc GetSetting*(
+    self: ptr IShellDispatch4, lSetting: LONG, pResult: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSetting(self, lSetting, pResult)
+
+proc WindowSwitcher*(self: ptr IShellDispatch5): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WindowSwitcher(self)
+
+proc SearchCommand*(self: ptr IShellDispatch6): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SearchCommand(self)
+
+proc SetFocus*(self: ptr IFileSearchBand): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFocus(self)
+
+proc SetSearchParameters*(
+    self: ptr IFileSearchBand,
+    pbstrSearchID: ptr BSTR,
+    bNavToResults: VARIANT_BOOL,
+    pvarScope: ptr VARIANT,
+    pvarQueryFile: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSearchParameters(
+      self, pbstrSearchID, bNavToResults, pvarScope, pvarQueryFile
+    )
+
+proc get_SearchID*(
+    self: ptr IFileSearchBand, pbstrSearchID: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_SearchID(self, pbstrSearchID)
+
+proc get_Scope*(
+    self: ptr IFileSearchBand, pvarScope: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Scope(self, pvarScope)
+
+proc get_QueryFile*(
+    self: ptr IFileSearchBand, pvarFile: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_QueryFile(self, pvarFile)
+
+proc FinalBack*(self: ptr IWebWizardHost): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FinalBack(self)
+
+proc FinalNext*(self: ptr IWebWizardHost): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FinalNext(self)
+
+proc Cancel*(self: ptr IWebWizardHost): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Cancel(self)
+
+proc put_Caption*(
+    self: ptr IWebWizardHost, bstrCaption: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Caption(self, bstrCaption)
+
+proc get_Caption*(
+    self: ptr IWebWizardHost, pbstrCaption: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Caption(self, pbstrCaption)
+
+proc put_Property*(
+    self: ptr IWebWizardHost, bstrPropertyName: BSTR, pvProperty: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_Property(self, bstrPropertyName, pvProperty)
+
+proc get_Property*(
+    self: ptr IWebWizardHost, bstrPropertyName: BSTR, pvProperty: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Property(self, bstrPropertyName, pvProperty)
+
+proc SetWizardButtons*(
+    self: ptr IWebWizardHost,
+    vfEnableBack: VARIANT_BOOL,
+    vfEnableNext: VARIANT_BOOL,
+    vfLastPage: VARIANT_BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetWizardButtons(self, vfEnableBack, vfEnableNext, vfLastPage)
+
+proc SetHeaderText*(
+    self: ptr IWebWizardHost, bstrHeaderTitle: BSTR, bstrHeaderSubtitle: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHeaderText(self, bstrHeaderTitle, bstrHeaderSubtitle)
+
+proc PassportAuthenticate*(
+    self: ptr INewWDEvents, bstrSignInUrl: BSTR, pvfAuthenitcated: ptr VARIANT_BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PassportAuthenticate(self, bstrSignInUrl, pvfAuthenitcated)
+
+proc Init*(
+    self: ptr IAutoComplete,
+    hwndEdit: HWND,
+    punkACL: ptr IUnknown,
+    pwszRegKeyPath: LPCWSTR,
+    pwszQuickComplete: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Init(self, hwndEdit, punkACL, pwszRegKeyPath, pwszQuickComplete)
+
+proc Enable*(self: ptr IAutoComplete, fEnable: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Enable(self, fEnable)
+
+proc SetOptions*(self: ptr IAutoComplete2, dwFlag: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOptions(self, dwFlag)
+
+proc GetOptions*(
+    self: ptr IAutoComplete2, pdwFlag: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOptions(self, pdwFlag)
+
+proc NextItem*(
+    self: ptr IEnumACString, pszUrl: LPWSTR, cchMax: ULONG, pulSortIndex: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NextItem(self, pszUrl, cchMax, pulSortIndex)
+
+proc SetEnumOptions*(
+    self: ptr IEnumACString, dwOptions: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetEnumOptions(self, dwOptions)
+
+proc GetEnumOptions*(
+    self: ptr IEnumACString, pdwOptions: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEnumOptions(self, pdwOptions)
+
+proc SetAsyncMode*(
+    self: ptr IDataObjectAsyncCapability, fDoOpAsync: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAsyncMode(self, fDoOpAsync)
+
+proc GetAsyncMode*(
+    self: ptr IDataObjectAsyncCapability, pfIsOpAsync: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAsyncMode(self, pfIsOpAsync)
+
+proc StartOperation*(
+    self: ptr IDataObjectAsyncCapability, pbcReserved: ptr IBindCtx
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StartOperation(self, pbcReserved)
+
+proc InOperation*(
+    self: ptr IDataObjectAsyncCapability, pfInAsyncOp: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InOperation(self, pfInAsyncOp)
+
+proc EndOperation*(
+    self: ptr IDataObjectAsyncCapability,
+    hResult: HRESULT,
+    pbcReserved: ptr IBindCtx,
+    dwEffects: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EndOperation(self, hResult, pbcReserved, dwEffects)
+
+proc GetCount*(
+    self: ptr IObjectArray, pcObjects: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCount(self, pcObjects)
+
+proc GetAt*(
+    self: ptr IObjectArray, uiIndex: UINT, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAt(self, uiIndex, riid, ppv)
+
+proc AddObject*(
+    self: ptr IObjectCollection, punk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddObject(self, punk)
+
+proc AddFromArray*(
+    self: ptr IObjectCollection, poaSource: ptr IObjectArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddFromArray(self, poaSource)
+
+proc RemoveObjectAt*(
+    self: ptr IObjectCollection, uiIndex: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveObjectAt(self, uiIndex)
+
+proc Clear*(self: ptr IObjectCollection): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clear(self)
+
+proc QueryContextMenu*(
+    self: ptr IContextMenu,
+    hmenu: HMENU,
+    indexMenu: UINT,
+    idCmdFirst: UINT,
+    idCmdLast: UINT,
+    uFlags: UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryContextMenu(self, hmenu, indexMenu, idCmdFirst, idCmdLast, uFlags)
+
+proc InvokeCommand*(
+    self: ptr IContextMenu, pici: ptr CMINVOKECOMMANDINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvokeCommand(self, pici)
+
+proc GetCommandString*(
+    self: ptr IContextMenu,
+    idCmd: UINT_PTR,
+    uType: UINT,
+    pReserved: ptr UINT,
+    pszName: ptr CHAR,
+    cchMax: UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCommandString(self, idCmd, uType, pReserved, pszName, cchMax)
+
+proc HandleMenuMsg*(
+    self: ptr IContextMenu2, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleMenuMsg(self, uMsg, wParam, lParam)
+
+proc HandleMenuMsg2*(
+    self: ptr IContextMenu3,
+    uMsg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    plResult: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleMenuMsg2(self, uMsg, wParam, lParam, plResult)
+
+proc SetKeyState*(
+    self: ptr IExecuteCommand, grfKeyState: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetKeyState(self, grfKeyState)
+
+proc SetParameters*(
+    self: ptr IExecuteCommand, pszParameters: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetParameters(self, pszParameters)
+
+proc SetPosition*(self: ptr IExecuteCommand, pt: POINT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPosition(self, pt)
+
+proc SetShowWindow*(
+    self: ptr IExecuteCommand, nShow: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetShowWindow(self, nShow)
+
+proc SetNoShowUI*(
+    self: ptr IExecuteCommand, fNoShowUI: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetNoShowUI(self, fNoShowUI)
+
+proc SetDirectory*(
+    self: ptr IExecuteCommand, pszDirectory: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDirectory(self, pszDirectory)
+
+proc Execute*(self: ptr IExecuteCommand): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Execute(self)
+
+proc Initialize*(
+    self: ptr IPersistFolder, pidl: PCIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pidl)
+
+proc Run*(self: ptr IRunnableTask): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Run(self)
+
+proc Kill*(self: ptr IRunnableTask, bWait: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Kill(self, bWait)
+
+proc Suspend*(self: ptr IRunnableTask): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Suspend(self)
+
+proc Resume*(self: ptr IRunnableTask): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Resume(self)
+
+proc IsRunning*(self: ptr IRunnableTask): ULONG {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsRunning(self)
+
+proc AddTask*(
+    self: ptr IShellTaskScheduler,
+    prt: ptr IRunnableTask,
+    rtoid: REFTASKOWNERID,
+    lParam: DWORD_PTR,
+    dwPriority: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddTask(self, prt, rtoid, lParam, dwPriority)
+
+proc RemoveTasks*(
+    self: ptr IShellTaskScheduler,
+    rtoid: REFTASKOWNERID,
+    lParam: DWORD_PTR,
+    bWaitIfRunning: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveTasks(self, rtoid, lParam, bWaitIfRunning)
+
+proc CountTasks*(
+    self: ptr IShellTaskScheduler, rtoid: REFTASKOWNERID
+): UINT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CountTasks(self, rtoid)
+
+proc Status*(
+    self: ptr IShellTaskScheduler, dwReleaseStatus: DWORD, dwThreadTimeout: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Status(self, dwReleaseStatus, dwThreadTimeout)
+
+proc GetCodePage*(
+    self: ptr IQueryCodePage, puiCodePage: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCodePage(self, puiCodePage)
+
+proc SetCodePage*(
+    self: ptr IQueryCodePage, uiCodePage: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCodePage(self, uiCodePage)
+
+proc GetCurFolder*(
+    self: ptr IPersistFolder2, ppidl: ptr PIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurFolder(self, ppidl)
+
+proc InitializeEx*(
+    self: ptr IPersistFolder3,
+    pbc: ptr IBindCtx,
+    pidlRoot: PCIDLIST_ABSOLUTE,
+    ppfti: ptr PERSIST_FOLDER_TARGET_INFO,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeEx(self, pbc, pidlRoot, ppfti)
+
+proc GetFolderTargetInfo*(
+    self: ptr IPersistFolder3, ppfti: ptr PERSIST_FOLDER_TARGET_INFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolderTargetInfo(self, ppfti)
+
+proc SetIDList*(
+    self: ptr IPersistIDList, pidl: PCIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetIDList(self, pidl)
+
+proc GetIDList*(
+    self: ptr IPersistIDList, ppidl: ptr PIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIDList(self, ppidl)
+
+proc Next*(
+    self: ptr IEnumIDList,
+    celt: ULONG,
+    rgelt: ptr PITEMID_CHILD,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumIDList, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumIDList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumIDList, ppenum: ptr ptr IEnumIDList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc Next*(
+    self: ptr IEnumFullIDList,
+    celt: ULONG,
+    rgelt: ptr PIDLIST_ABSOLUTE,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumFullIDList, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumFullIDList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumFullIDList, ppenum: ptr ptr IEnumFullIDList
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc SetMode*(
+    self: ptr IObjectWithFolderEnumMode, feMode: FOLDER_ENUM_MODE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetMode(self, feMode)
+
+proc GetMode*(
+    self: ptr IObjectWithFolderEnumMode, pfeMode: ptr FOLDER_ENUM_MODE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMode(self, pfeMode)
+
+proc SetItem*(
+    self: ptr IParseAndCreateItem, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetItem(self, psi)
+
+proc GetItem*(
+    self: ptr IParseAndCreateItem, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItem(self, riid, ppv)
+
+proc ParseDisplayName*(
+    self: ptr IShellFolder,
+    hwnd: HWND,
+    pbc: ptr IBindCtx,
+    pszDisplayName: LPWSTR,
+    pchEaten: ptr ULONG,
+    ppidl: ptr PIDLIST_RELATIVE,
+    pdwAttributes: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParseDisplayName(
+      self, hwnd, pbc, pszDisplayName, pchEaten, ppidl, pdwAttributes
+    )
+
+proc EnumObjects*(
+    self: ptr IShellFolder,
+    hwnd: HWND,
+    grfFlags: SHCONTF,
+    ppenumIDList: ptr ptr IEnumIDList,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumObjects(self, hwnd, grfFlags, ppenumIDList)
+
+proc BindToObject*(
+    self: ptr IShellFolder,
+    pidl: PCUIDLIST_RELATIVE,
+    pbc: ptr IBindCtx,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BindToObject(self, pidl, pbc, riid, ppv)
+
+proc BindToStorage*(
+    self: ptr IShellFolder,
+    pidl: PCUIDLIST_RELATIVE,
+    pbc: ptr IBindCtx,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BindToStorage(self, pidl, pbc, riid, ppv)
+
+proc CompareIDs*(
+    self: ptr IShellFolder,
+    lParam: LPARAM,
+    pidl1: PCUIDLIST_RELATIVE,
+    pidl2: PCUIDLIST_RELATIVE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CompareIDs(self, lParam, pidl1, pidl2)
+
+proc CreateViewObject*(
+    self: ptr IShellFolder, hwndOwner: HWND, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateViewObject(self, hwndOwner, riid, ppv)
+
+proc GetAttributesOf*(
+    self: ptr IShellFolder,
+    cidl: UINT,
+    apidl: PCUITEMID_CHILD_ARRAY,
+    rgfInOut: ptr SFGAOF,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAttributesOf(self, cidl, apidl, rgfInOut)
+
+proc GetUIObjectOf*(
+    self: ptr IShellFolder,
+    hwndOwner: HWND,
+    cidl: UINT,
+    apidl: PCUITEMID_CHILD_ARRAY,
+    riid: REFIID,
+    rgfReserved: ptr UINT,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUIObjectOf(self, hwndOwner, cidl, apidl, riid, rgfReserved, ppv)
+
+proc GetDisplayNameOf*(
+    self: ptr IShellFolder, pidl: PCUITEMID_CHILD, uFlags: SHGDNF, pName: ptr STRRET
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDisplayNameOf(self, pidl, uFlags, pName)
+
+proc SetNameOf*(
+    self: ptr IShellFolder,
+    hwnd: HWND,
+    pidl: PCUITEMID_CHILD,
+    pszName: LPCWSTR,
+    uFlags: SHGDNF,
+    ppidlOut: ptr PITEMID_CHILD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetNameOf(self, hwnd, pidl, pszName, uFlags, ppidlOut)
+
+proc Next*(
+    self: ptr IEnumExtraSearch,
+    celt: ULONG,
+    rgelt: ptr EXTRASEARCH,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumExtraSearch, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumExtraSearch): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumExtraSearch, ppenum: ptr ptr IEnumExtraSearch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc GetDefaultSearchGUID*(
+    self: ptr IShellFolder2, pguid: ptr GUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultSearchGUID(self, pguid)
+
+proc EnumSearches*(
+    self: ptr IShellFolder2, ppenum: ptr ptr IEnumExtraSearch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumSearches(self, ppenum)
+
+proc GetDefaultColumn*(
+    self: ptr IShellFolder2, dwRes: DWORD, pSort: ptr ULONG, pDisplay: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultColumn(self, dwRes, pSort, pDisplay)
+
+proc GetDefaultColumnState*(
+    self: ptr IShellFolder2, iColumn: UINT, pcsFlags: ptr SHCOLSTATEF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultColumnState(self, iColumn, pcsFlags)
+
+proc GetDetailsEx*(
+    self: ptr IShellFolder2,
+    pidl: PCUITEMID_CHILD,
+    pscid: ptr SHCOLUMNID,
+    pv: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDetailsEx(self, pidl, pscid, pv)
+
+proc GetDetailsOf*(
+    self: ptr IShellFolder2, pidl: PCUITEMID_CHILD, iColumn: UINT, psd: ptr SHELLDETAILS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDetailsOf(self, pidl, iColumn, psd)
+
+proc MapColumnToSCID*(
+    self: ptr IShellFolder2, iColumn: UINT, pscid: ptr SHCOLUMNID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MapColumnToSCID(self, iColumn, pscid)
+
+proc SetFolderViewOptions*(
+    self: ptr IFolderViewOptions,
+    fvoMask: FOLDERVIEWOPTIONS,
+    fvoFlags: FOLDERVIEWOPTIONS,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFolderViewOptions(self, fvoMask, fvoFlags)
+
+proc GetFolderViewOptions*(
+    self: ptr IFolderViewOptions, pfvoFlags: ptr FOLDERVIEWOPTIONS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolderViewOptions(self, pfvoFlags)
+
+proc TranslateAccelerator*(
+    self: ptr IShellView, pmsg: ptr MSG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateAccelerator(self, pmsg)
+
+proc EnableModeless*(
+    self: ptr IShellView, fEnable: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnableModeless(self, fEnable)
+
+proc UIActivate*(self: ptr IShellView, uState: UINT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UIActivate(self, uState)
+
+proc Refresh*(self: ptr IShellView): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Refresh(self)
+
+proc CreateViewWindow*(
+    self: ptr IShellView,
+    psvPrevious: ptr IShellView,
+    pfs: LPCFOLDERSETTINGS,
+    psb: ptr IShellBrowser,
+    prcView: ptr RECT,
+    phWnd: ptr HWND,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateViewWindow(self, psvPrevious, pfs, psb, prcView, phWnd)
+
+proc DestroyViewWindow*(self: ptr IShellView): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DestroyViewWindow(self)
+
+proc GetCurrentInfo*(
+    self: ptr IShellView, pfs: LPFOLDERSETTINGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentInfo(self, pfs)
+
+proc AddPropertySheetPages*(
+    self: ptr IShellView, dwReserved: DWORD, pfn: LPFNSVADDPROPSHEETPAGE, lparam: LPARAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddPropertySheetPages(self, dwReserved, pfn, lparam)
+
+proc SaveViewState*(self: ptr IShellView): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SaveViewState(self)
+
+proc SelectItem*(
+    self: ptr IShellView, pidlItem: PCUITEMID_CHILD, uFlags: SVSIF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SelectItem(self, pidlItem, uFlags)
+
+proc GetItemObject*(
+    self: ptr IShellView, uItem: UINT, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItemObject(self, uItem, riid, ppv)
+
+proc GetView*(
+    self: ptr IShellView2, pvid: ptr SHELLVIEWID, uView: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetView(self, pvid, uView)
+
+proc CreateViewWindow2*(
+    self: ptr IShellView2, lpParams: LPSV2CVW2_PARAMS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateViewWindow2(self, lpParams)
+
+proc HandleRename*(
+    self: ptr IShellView2, pidlNew: PCUITEMID_CHILD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleRename(self, pidlNew)
+
+proc SelectAndPositionItem*(
+    self: ptr IShellView2, pidlItem: PCUITEMID_CHILD, uFlags: UINT, ppt: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SelectAndPositionItem(self, pidlItem, uFlags, ppt)
+
+proc CreateViewWindow3*(
+    self: ptr IShellView3,
+    psbOwner: ptr IShellBrowser,
+    psvPrev: ptr IShellView,
+    dwViewFlags: SV3CVW3_FLAGS,
+    dwMask: FOLDERFLAGS,
+    dwFlags: FOLDERFLAGS,
+    fvMode: FOLDERVIEWMODE,
+    pvid: ptr SHELLVIEWID,
+    prcView: ptr RECT,
+    phwndView: ptr HWND,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateViewWindow3(
+      self, psbOwner, psvPrev, dwViewFlags, dwMask, dwFlags, fvMode, pvid, prcView,
+      phwndView,
+    )
+
+proc GetCurrentViewMode*(
+    self: ptr IFolderView, pViewMode: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentViewMode(self, pViewMode)
+
+proc SetCurrentViewMode*(
+    self: ptr IFolderView, ViewMode: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCurrentViewMode(self, ViewMode)
+
+proc GetFolder*(
+    self: ptr IFolderView, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolder(self, riid, ppv)
+
+proc Item*(
+    self: ptr IFolderView, iItemIndex: int32, ppidl: ptr PITEMID_CHILD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Item(self, iItemIndex, ppidl)
+
+proc ItemCount*(
+    self: ptr IFolderView, uFlags: UINT, pcItems: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ItemCount(self, uFlags, pcItems)
+
+proc Items*(
+    self: ptr IFolderView, uFlags: UINT, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Items(self, uFlags, riid, ppv)
+
+proc GetSelectionMarkedItem*(
+    self: ptr IFolderView, piItem: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelectionMarkedItem(self, piItem)
+
+proc GetFocusedItem*(
+    self: ptr IFolderView, piItem: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFocusedItem(self, piItem)
+
+proc GetItemPosition*(
+    self: ptr IFolderView, pidl: PCUITEMID_CHILD, ppt: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItemPosition(self, pidl, ppt)
+
+proc GetSpacing*(self: ptr IFolderView, ppt: ptr POINT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSpacing(self, ppt)
+
+proc GetDefaultSpacing*(
+    self: ptr IFolderView, ppt: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultSpacing(self, ppt)
+
+proc GetAutoArrange*(self: ptr IFolderView): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAutoArrange(self)
+
+proc SelectItem*(
+    self: ptr IFolderView, iItem: int32, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SelectItem(self, iItem, dwFlags)
+
+proc SelectAndPositionItems*(
+    self: ptr IFolderView,
+    cidl: UINT,
+    apidl: PCUITEMID_CHILD_ARRAY,
+    apt: ptr POINT,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SelectAndPositionItems(self, cidl, apidl, apt, dwFlags)
+
+proc GetCondition*(
+    self: ptr ISearchBoxInfo, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCondition(self, riid, ppv)
+
+proc GetText*(self: ptr ISearchBoxInfo, ppsz: ptr LPWSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetText(self, ppsz)
+
+proc SetGroupBy*(
+    self: ptr IFolderView2, key: REFPROPERTYKEY, fAscending: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetGroupBy(self, key, fAscending)
+
+proc GetGroupBy*(
+    self: ptr IFolderView2, pkey: ptr PROPERTYKEY, pfAscending: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetGroupBy(self, pkey, pfAscending)
+
+proc SetViewProperty*(
+    self: ptr IFolderView2,
+    pidl: PCUITEMID_CHILD,
+    propkey: REFPROPERTYKEY,
+    propvar: REFPROPVARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetViewProperty(self, pidl, propkey, propvar)
+
+proc GetViewProperty*(
+    self: ptr IFolderView2,
+    pidl: PCUITEMID_CHILD,
+    propkey: REFPROPERTYKEY,
+    ppropvar: ptr PROPVARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetViewProperty(self, pidl, propkey, ppropvar)
+
+proc SetTileViewProperties*(
+    self: ptr IFolderView2, pidl: PCUITEMID_CHILD, pszPropList: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTileViewProperties(self, pidl, pszPropList)
+
+proc SetExtendedTileViewProperties*(
+    self: ptr IFolderView2, pidl: PCUITEMID_CHILD, pszPropList: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetExtendedTileViewProperties(self, pidl, pszPropList)
+
+proc SetText*(
+    self: ptr IFolderView2, iType: FVTEXTTYPE, pwszText: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetText(self, iType, pwszText)
+
+proc SetCurrentFolderFlags*(
+    self: ptr IFolderView2, dwMask: DWORD, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCurrentFolderFlags(self, dwMask, dwFlags)
+
+proc GetCurrentFolderFlags*(
+    self: ptr IFolderView2, pdwFlags: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentFolderFlags(self, pdwFlags)
+
+proc GetSortColumnCount*(
+    self: ptr IFolderView2, pcColumns: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSortColumnCount(self, pcColumns)
+
+proc SetSortColumns*(
+    self: ptr IFolderView2, rgSortColumns: ptr SORTCOLUMN, cColumns: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSortColumns(self, rgSortColumns, cColumns)
+
+proc GetSortColumns*(
+    self: ptr IFolderView2, rgSortColumns: ptr SORTCOLUMN, cColumns: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSortColumns(self, rgSortColumns, cColumns)
+
+proc GetItem*(
+    self: ptr IFolderView2, iItem: int32, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItem(self, iItem, riid, ppv)
+
+proc GetVisibleItem*(
+    self: ptr IFolderView2, iStart: int32, fPrevious: WINBOOL, piItem: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetVisibleItem(self, iStart, fPrevious, piItem)
+
+proc GetSelectedItem*(
+    self: ptr IFolderView2, iStart: int32, piItem: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelectedItem(self, iStart, piItem)
+
+proc GetSelection*(
+    self: ptr IFolderView2, fNoneImpliesFolder: WINBOOL, ppsia: ptr ptr IShellItemArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelection(self, fNoneImpliesFolder, ppsia)
+
+proc GetSelectionState*(
+    self: ptr IFolderView2, pidl: PCUITEMID_CHILD, pdwFlags: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelectionState(self, pidl, pdwFlags)
+
+proc InvokeVerbOnSelection*(
+    self: ptr IFolderView2, pszVerb: LPCSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvokeVerbOnSelection(self, pszVerb)
+
+proc SetViewModeAndIconSize*(
+    self: ptr IFolderView2, uViewMode: FOLDERVIEWMODE, iImageSize: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetViewModeAndIconSize(self, uViewMode, iImageSize)
+
+proc GetViewModeAndIconSize*(
+    self: ptr IFolderView2, puViewMode: ptr FOLDERVIEWMODE, piImageSize: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetViewModeAndIconSize(self, puViewMode, piImageSize)
+
+proc SetGroupSubsetCount*(
+    self: ptr IFolderView2, cVisibleRows: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetGroupSubsetCount(self, cVisibleRows)
+
+proc GetGroupSubsetCount*(
+    self: ptr IFolderView2, pcVisibleRows: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetGroupSubsetCount(self, pcVisibleRows)
+
+proc SetRedraw*(
+    self: ptr IFolderView2, fRedrawOn: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetRedraw(self, fRedrawOn)
+
+proc IsMoveInSameFolder*(self: ptr IFolderView2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsMoveInSameFolder(self)
+
+proc DoRename*(self: ptr IFolderView2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoRename(self)
+
+proc GetColumnPropertyList*(
+    self: ptr IFolderViewSettings, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColumnPropertyList(self, riid, ppv)
+
+proc GetGroupByProperty*(
+    self: ptr IFolderViewSettings, pkey: ptr PROPERTYKEY, pfGroupAscending: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetGroupByProperty(self, pkey, pfGroupAscending)
+
+proc GetViewMode*(
+    self: ptr IFolderViewSettings, plvm: ptr FOLDERLOGICALVIEWMODE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetViewMode(self, plvm)
+
+proc GetIconSize*(
+    self: ptr IFolderViewSettings, puIconSize: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIconSize(self, puIconSize)
+
+proc GetFolderFlags*(
+    self: ptr IFolderViewSettings,
+    pfolderMask: ptr FOLDERFLAGS,
+    pfolderFlags: ptr FOLDERFLAGS,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolderFlags(self, pfolderMask, pfolderFlags)
+
+proc GetSortColumns*(
+    self: ptr IFolderViewSettings,
+    rgSortColumns: ptr SORTCOLUMN,
+    cColumnsIn: UINT,
+    pcColumnsOut: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSortColumns(self, rgSortColumns, cColumnsIn, pcColumnsOut)
+
+proc GetGroupSubsetCount*(
+    self: ptr IFolderViewSettings, pcVisibleRows: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetGroupSubsetCount(self, pcVisibleRows)
+
+proc mSetBackgroundColor*(
+    self: ptr IPreviewHandlerVisuals, color: COLORREF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBackgroundColor(self, color)
+
+proc SetFont*(
+    self: ptr IPreviewHandlerVisuals, plf: ptr LOGFONTW
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFont(self, plf)
+
+proc SetTextColor*(
+    self: ptr IPreviewHandlerVisuals, color: COLORREF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTextColor(self, color)
+
+proc SetWatermark*(
+    self: ptr IVisualProperties, hbmp: HBITMAP, vpwf: VPWATERMARKFLAGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetWatermark(self, hbmp, vpwf)
+
+proc SetColor*(
+    self: ptr IVisualProperties, vpcf: VPCOLORFLAGS, cr: COLORREF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetColor(self, vpcf, cr)
+
+proc GetColor*(
+    self: ptr IVisualProperties, vpcf: VPCOLORFLAGS, pcr: ptr COLORREF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColor(self, vpcf, pcr)
+
+proc SetItemHeight*(
+    self: ptr IVisualProperties, cyItemInPixels: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetItemHeight(self, cyItemInPixels)
+
+proc GetItemHeight*(
+    self: ptr IVisualProperties, cyItemInPixels: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItemHeight(self, cyItemInPixels)
+
+proc SetFont*(
+    self: ptr IVisualProperties, plf: ptr LOGFONTW, bRedraw: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFont(self, plf, bRedraw)
+
+proc GetFont*(
+    self: ptr IVisualProperties, plf: ptr LOGFONTW
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFont(self, plf)
+
+proc SetTheme*(
+    self: ptr IVisualProperties, pszSubAppName: LPCWSTR, pszSubIdList: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTheme(self, pszSubAppName, pszSubIdList)
+
+proc OnDefaultCommand*(
+    self: ptr ICommDlgBrowser, ppshv: ptr IShellView
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDefaultCommand(self, ppshv)
+
+proc OnStateChange*(
+    self: ptr ICommDlgBrowser, ppshv: ptr IShellView, uChange: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnStateChange(self, ppshv, uChange)
+
+proc IncludeObject*(
+    self: ptr ICommDlgBrowser, ppshv: ptr IShellView, pidl: PCUITEMID_CHILD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IncludeObject(self, ppshv, pidl)
+
+proc Notify*(
+    self: ptr ICommDlgBrowser2, ppshv: ptr IShellView, dwNotifyType: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Notify(self, ppshv, dwNotifyType)
+
+proc GetDefaultMenuText*(
+    self: ptr ICommDlgBrowser2, ppshv: ptr IShellView, pszText: LPWSTR, cchMax: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultMenuText(self, ppshv, pszText, cchMax)
+
+proc GetViewFlags*(
+    self: ptr ICommDlgBrowser2, pdwFlags: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetViewFlags(self, pdwFlags)
+
+proc OnColumnClicked*(
+    self: ptr ICommDlgBrowser3, ppshv: ptr IShellView, iColumn: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnColumnClicked(self, ppshv, iColumn)
+
+proc GetCurrentFilter*(
+    self: ptr ICommDlgBrowser3, pszFileSpec: LPWSTR, cchFileSpec: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentFilter(self, pszFileSpec, cchFileSpec)
+
+proc OnPreViewCreated*(
+    self: ptr ICommDlgBrowser3, ppshv: ptr IShellView
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnPreViewCreated(self, ppshv)
+
+proc SetColumnInfo*(
+    self: ptr IColumnManager, propkey: REFPROPERTYKEY, pcmci: ptr CM_COLUMNINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetColumnInfo(self, propkey, pcmci)
+
+proc GetColumnInfo*(
+    self: ptr IColumnManager, propkey: REFPROPERTYKEY, pcmci: ptr CM_COLUMNINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColumnInfo(self, propkey, pcmci)
+
+proc GetColumnCount*(
+    self: ptr IColumnManager, dwFlags: CM_ENUM_FLAGS, puCount: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColumnCount(self, dwFlags, puCount)
+
+proc GetColumns*(
+    self: ptr IColumnManager,
+    dwFlags: CM_ENUM_FLAGS,
+    rgkeyOrder: ptr PROPERTYKEY,
+    cColumns: UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColumns(self, dwFlags, rgkeyOrder, cColumns)
+
+proc SetColumns*(
+    self: ptr IColumnManager, rgkeyOrder: ptr PROPERTYKEY, cVisible: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetColumns(self, rgkeyOrder, cVisible)
+
+proc SetFilter*(
+    self: ptr IFolderFilterSite, punk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFilter(self, punk)
+
+proc ShouldShow*(
+    self: ptr IFolderFilter,
+    psf: ptr IShellFolder,
+    pidlFolder: PCIDLIST_ABSOLUTE,
+    pidlItem: PCUITEMID_CHILD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShouldShow(self, psf, pidlFolder, pidlItem)
+
+proc GetEnumFlags*(
+    self: ptr IFolderFilter,
+    psf: ptr IShellFolder,
+    pidlFolder: PCIDLIST_ABSOLUTE,
+    phwnd: ptr HWND,
+    pgrfFlags: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEnumFlags(self, psf, pidlFolder, phwnd, pgrfFlags)
+
+proc OnFocusChangeIS*(
+    self: ptr IInputObjectSite, punkObj: ptr IUnknown, fSetFocus: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnFocusChangeIS(self, punkObj, fSetFocus)
+
+proc UIActivateIO*(
+    self: ptr IInputObject, fActivate: WINBOOL, pMsg: ptr MSG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UIActivateIO(self, fActivate, pMsg)
+
+proc HasFocusIO*(self: ptr IInputObject): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HasFocusIO(self)
+
+proc TranslateAcceleratorIO*(
+    self: ptr IInputObject, pMsg: ptr MSG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateAcceleratorIO(self, pMsg)
+
+proc TranslateAcceleratorGlobal*(
+    self: ptr IInputObject2, pMsg: ptr MSG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateAcceleratorGlobal(self, pMsg)
+
+proc GetIconOf*(
+    self: ptr IShellIcon, pidl: PCUITEMID_CHILD, flags: UINT, pIconIndex: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIconOf(self, pidl, flags, pIconIndex)
+
+proc InsertMenusSB*(
+    self: ptr IShellBrowser, hmenuShared: HMENU, lpMenuWidths: LPOLEMENUGROUPWIDTHS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InsertMenusSB(self, hmenuShared, lpMenuWidths)
+
+proc SetMenuSB*(
+    self: ptr IShellBrowser,
+    hmenuShared: HMENU,
+    holemenuRes: HOLEMENU,
+    hwndActiveObject: HWND,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetMenuSB(self, hmenuShared, holemenuRes, hwndActiveObject)
+
+proc RemoveMenusSB*(
+    self: ptr IShellBrowser, hmenuShared: HMENU
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveMenusSB(self, hmenuShared)
+
+proc SetStatusTextSB*(
+    self: ptr IShellBrowser, pszStatusText: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetStatusTextSB(self, pszStatusText)
+
+proc EnableModelessSB*(
+    self: ptr IShellBrowser, fEnable: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnableModelessSB(self, fEnable)
+
+proc TranslateAcceleratorSB*(
+    self: ptr IShellBrowser, pmsg: ptr MSG, wID: WORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateAcceleratorSB(self, pmsg, wID)
+
+proc BrowseObject*(
+    self: ptr IShellBrowser, pidl: PCUIDLIST_RELATIVE, wFlags: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BrowseObject(self, pidl, wFlags)
+
+proc GetViewStateStream*(
+    self: ptr IShellBrowser, grfMode: DWORD, ppStrm: ptr ptr IStream
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetViewStateStream(self, grfMode, ppStrm)
+
+proc GetControlWindow*(
+    self: ptr IShellBrowser, id: UINT, phwnd: ptr HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetControlWindow(self, id, phwnd)
+
+proc SendControlMsg*(
+    self: ptr IShellBrowser,
+    id: UINT,
+    uMsg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    pret: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SendControlMsg(self, id, uMsg, wParam, lParam, pret)
+
+proc QueryActiveShellView*(
+    self: ptr IShellBrowser, ppshv: ptr ptr IShellView
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryActiveShellView(self, ppshv)
+
+proc OnViewWindowActive*(
+    self: ptr IShellBrowser, pshv: ptr IShellView
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnViewWindowActive(self, pshv)
+
+proc SetToolbarItems*(
+    self: ptr IShellBrowser, lpButtons: LPTBBUTTONSB, nButtons: UINT, uFlags: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetToolbarItems(self, lpButtons, nButtons, uFlags)
+
+proc ProfferService*(
+    self: ptr IProfferService,
+    guidService: REFGUID,
+    psp: ptr IServiceProvider,
+    pdwCookie: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ProfferService(self, guidService, psp, pdwCookie)
+
+proc RevokeService*(
+    self: ptr IProfferService, dwCookie: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RevokeService(self, dwCookie)
+
+proc BindToHandler*(
+    self: ptr IShellItem,
+    pbc: ptr IBindCtx,
+    bhid: REFGUID,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BindToHandler(self, pbc, bhid, riid, ppv)
+
+proc GetParent*(
+    self: ptr IShellItem, ppsi: ptr ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetParent(self, ppsi)
+
+proc GetDisplayName*(
+    self: ptr IShellItem, sigdnName: SIGDN, ppszName: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDisplayName(self, sigdnName, ppszName)
+
+proc GetAttributes*(
+    self: ptr IShellItem, sfgaoMask: SFGAOF, psfgaoAttribs: ptr SFGAOF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAttributes(self, sfgaoMask, psfgaoAttribs)
+
+proc Compare*(
+    self: ptr IShellItem, psi: ptr IShellItem, hint: SICHINTF, piOrder: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Compare(self, psi, hint, piOrder)
+
+proc GetPropertyStore*(
+    self: ptr IShellItem2, flags: GETPROPERTYSTOREFLAGS, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyStore(self, flags, riid, ppv)
+
+proc GetPropertyStoreWithCreateObject*(
+    self: ptr IShellItem2,
+    flags: GETPROPERTYSTOREFLAGS,
+    punkCreateObject: ptr IUnknown,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyStoreWithCreateObject(
+      self, flags, punkCreateObject, riid, ppv
+    )
+
+proc GetPropertyStoreForKeys*(
+    self: ptr IShellItem2,
+    rgKeys: ptr PROPERTYKEY,
+    cKeys: UINT,
+    flags: GETPROPERTYSTOREFLAGS,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyStoreForKeys(self, rgKeys, cKeys, flags, riid, ppv)
+
+proc GetPropertyDescriptionList*(
+    self: ptr IShellItem2, keyType: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyDescriptionList(self, keyType, riid, ppv)
+
+proc Update*(self: ptr IShellItem2, pbc: ptr IBindCtx): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Update(self, pbc)
+
+proc GetProperty*(
+    self: ptr IShellItem2, key: REFPROPERTYKEY, ppropvar: ptr PROPVARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty(self, key, ppropvar)
+
+proc GetCLSID*(
+    self: ptr IShellItem2, key: REFPROPERTYKEY, pclsid: ptr CLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCLSID(self, key, pclsid)
+
+proc GetFileTime*(
+    self: ptr IShellItem2, key: REFPROPERTYKEY, pft: ptr FILETIME
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFileTime(self, key, pft)
+
+proc GetInt32*(
+    self: ptr IShellItem2, key: REFPROPERTYKEY, pi: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInt32(self, key, pi)
+
+proc GetString*(
+    self: ptr IShellItem2, key: REFPROPERTYKEY, ppsz: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetString(self, key, ppsz)
+
+proc GetUInt32*(
+    self: ptr IShellItem2, key: REFPROPERTYKEY, pui: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUInt32(self, key, pui)
+
+proc GetUInt64*(
+    self: ptr IShellItem2, key: REFPROPERTYKEY, pull: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUInt64(self, key, pull)
+
+proc GetBool*(
+    self: ptr IShellItem2, key: REFPROPERTYKEY, pf: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBool(self, key, pf)
+
+proc GetImage*(
+    self: ptr IShellItemImageFactory, size: SIZE, flags: SIIGBF, phbm: ptr HBITMAP
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetImage(self, size, flags, phbm)
+
+proc OnPictureChange*(
+    self: ptr IUserAccountChangeCallback, pszUserName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnPictureChange(self, pszUserName)
+
+proc Next*(
+    self: ptr IEnumShellItems,
+    celt: ULONG,
+    rgelt: ptr ptr IShellItem,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumShellItems, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumShellItems): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumShellItems, ppenum: ptr ptr IEnumShellItems
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc UpdateProgress*(
+    self: ptr ITransferAdviseSink,
+    ullSizeCurrent: ULONGLONG,
+    ullSizeTotal: ULONGLONG,
+    nFilesCurrent: int32,
+    nFilesTotal: int32,
+    nFoldersCurrent: int32,
+    nFoldersTotal: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UpdateProgress(
+      self, ullSizeCurrent, ullSizeTotal, nFilesCurrent, nFilesTotal, nFoldersCurrent,
+      nFoldersTotal,
+    )
+
+proc UpdateTransferState*(
+    self: ptr ITransferAdviseSink, ts: TRANSFER_ADVISE_STATE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UpdateTransferState(self, ts)
+
+proc ConfirmOverwrite*(
+    self: ptr ITransferAdviseSink,
+    psiSource: ptr IShellItem,
+    psiDestParent: ptr IShellItem,
+    pszName: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ConfirmOverwrite(self, psiSource, psiDestParent, pszName)
+
+proc ConfirmEncryptionLoss*(
+    self: ptr ITransferAdviseSink, psiSource: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ConfirmEncryptionLoss(self, psiSource)
+
+proc FileFailure*(
+    self: ptr ITransferAdviseSink,
+    psi: ptr IShellItem,
+    pszItem: LPCWSTR,
+    hrError: HRESULT,
+    pszRename: LPWSTR,
+    cchRename: ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FileFailure(self, psi, pszItem, hrError, pszRename, cchRename)
+
+proc SubStreamFailure*(
+    self: ptr ITransferAdviseSink,
+    psi: ptr IShellItem,
+    pszStreamName: LPCWSTR,
+    hrError: HRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SubStreamFailure(self, psi, pszStreamName, hrError)
+
+proc PropertyFailure*(
+    self: ptr ITransferAdviseSink,
+    psi: ptr IShellItem,
+    pkey: ptr PROPERTYKEY,
+    hrError: HRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PropertyFailure(self, psi, pkey, hrError)
+
+proc Advise*(
+    self: ptr ITransferSource, psink: ptr ITransferAdviseSink, pdwCookie: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Advise(self, psink, pdwCookie)
+
+proc Unadvise*(self: ptr ITransferSource, dwCookie: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unadvise(self, dwCookie)
+
+proc SetProperties*(
+    self: ptr ITransferSource, pproparray: ptr IPropertyChangeArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetProperties(self, pproparray)
+
+proc OpenItem*(
+    self: ptr ITransferSource,
+    psi: ptr IShellItem,
+    flags: TRANSFER_SOURCE_FLAGS,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OpenItem(self, psi, flags, riid, ppv)
+
+proc MoveItem*(
+    self: ptr ITransferSource,
+    psi: ptr IShellItem,
+    psiParentDst: ptr IShellItem,
+    pszNameDst: LPCWSTR,
+    flags: TRANSFER_SOURCE_FLAGS,
+    ppsiNew: ptr ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveItem(self, psi, psiParentDst, pszNameDst, flags, ppsiNew)
+
+proc RecycleItem*(
+    self: ptr ITransferSource,
+    psiSource: ptr IShellItem,
+    psiParentDest: ptr IShellItem,
+    flags: TRANSFER_SOURCE_FLAGS,
+    ppsiNewDest: ptr ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RecycleItem(self, psiSource, psiParentDest, flags, ppsiNewDest)
+
+proc RemoveItem*(
+    self: ptr ITransferSource, psiSource: ptr IShellItem, flags: TRANSFER_SOURCE_FLAGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveItem(self, psiSource, flags)
+
+proc RenameItem*(
+    self: ptr ITransferSource,
+    psiSource: ptr IShellItem,
+    pszNewName: LPCWSTR,
+    flags: TRANSFER_SOURCE_FLAGS,
+    ppsiNewDest: ptr ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RenameItem(self, psiSource, pszNewName, flags, ppsiNewDest)
+
+proc LinkItem*(
+    self: ptr ITransferSource,
+    psiSource: ptr IShellItem,
+    psiParentDest: ptr IShellItem,
+    pszNewName: LPCWSTR,
+    flags: TRANSFER_SOURCE_FLAGS,
+    ppsiNewDest: ptr ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LinkItem(self, psiSource, psiParentDest, pszNewName, flags, ppsiNewDest)
+
+proc ApplyPropertiesToItem*(
+    self: ptr ITransferSource, psiSource: ptr IShellItem, ppsiNew: ptr ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ApplyPropertiesToItem(self, psiSource, ppsiNew)
+
+proc GetDefaultDestinationName*(
+    self: ptr ITransferSource,
+    psiSource: ptr IShellItem,
+    psiParentDest: ptr IShellItem,
+    ppszDestinationName: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultDestinationName(
+      self, psiSource, psiParentDest, ppszDestinationName
+    )
+
+proc EnterFolder*(
+    self: ptr ITransferSource, psiChildFolderDest: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnterFolder(self, psiChildFolderDest)
+
+proc LeaveFolder*(
+    self: ptr ITransferSource, psiChildFolderDest: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LeaveFolder(self, psiChildFolderDest)
+
+proc Next*(
+    self: ptr IEnumResources,
+    celt: ULONG,
+    psir: ptr SHELL_ITEM_RESOURCE,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, psir, pceltFetched)
+
+proc Skip*(self: ptr IEnumResources, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumResources): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumResources, ppenumr: ptr ptr IEnumResources
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenumr)
+
+proc GetAttributes*(
+    self: ptr IShellItemResources, pdwAttributes: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAttributes(self, pdwAttributes)
+
+proc GetSize*(
+    self: ptr IShellItemResources, pullSize: ptr ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSize(self, pullSize)
+
+proc GetTimes*(
+    self: ptr IShellItemResources,
+    pftCreation: ptr FILETIME,
+    pftWrite: ptr FILETIME,
+    pftAccess: ptr FILETIME,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTimes(self, pftCreation, pftWrite, pftAccess)
+
+proc SetTimes*(
+    self: ptr IShellItemResources,
+    pftCreation: ptr FILETIME,
+    pftWrite: ptr FILETIME,
+    pftAccess: ptr FILETIME,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTimes(self, pftCreation, pftWrite, pftAccess)
+
+proc GetResourceDescription*(
+    self: ptr IShellItemResources,
+    pcsir: ptr SHELL_ITEM_RESOURCE,
+    ppszDescription: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetResourceDescription(self, pcsir, ppszDescription)
+
+proc EnumResources*(
+    self: ptr IShellItemResources, ppenumr: ptr ptr IEnumResources
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumResources(self, ppenumr)
+
+proc SupportsResource*(
+    self: ptr IShellItemResources, pcsir: ptr SHELL_ITEM_RESOURCE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SupportsResource(self, pcsir)
+
+proc OpenResource*(
+    self: ptr IShellItemResources,
+    pcsir: ptr SHELL_ITEM_RESOURCE,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OpenResource(self, pcsir, riid, ppv)
+
+proc CreateResource*(
+    self: ptr IShellItemResources,
+    pcsir: ptr SHELL_ITEM_RESOURCE,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateResource(self, pcsir, riid, ppv)
+
+proc MarkForDelete*(self: ptr IShellItemResources): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MarkForDelete(self)
+
+proc Advise*(
+    self: ptr ITransferDestination, psink: ptr ITransferAdviseSink, pdwCookie: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Advise(self, psink, pdwCookie)
+
+proc Unadvise*(
+    self: ptr ITransferDestination, dwCookie: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unadvise(self, dwCookie)
+
+proc CreateItem*(
+    self: ptr ITransferDestination,
+    pszName: LPCWSTR,
+    dwAttributes: DWORD,
+    ullSize: ULONGLONG,
+    flags: TRANSFER_SOURCE_FLAGS,
+    riidItem: REFIID,
+    ppvItem: ptr pointer,
+    riidResources: REFIID,
+    ppvResources: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateItem(
+      self, pszName, dwAttributes, ullSize, flags, riidItem, ppvItem, riidResources,
+      ppvResources,
+    )
+
+proc ReadAsync*(
+    self: ptr IStreamAsync,
+    pv: pointer,
+    cb: DWORD,
+    pcbRead: LPDWORD,
+    lpOverlapped: LPOVERLAPPED,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReadAsync(self, pv, cb, pcbRead, lpOverlapped)
+
+proc WriteAsync*(
+    self: ptr IStreamAsync,
+    lpBuffer: pointer,
+    cb: DWORD,
+    pcbWritten: LPDWORD,
+    lpOverlapped: LPOVERLAPPED,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WriteAsync(self, lpBuffer, cb, pcbWritten, lpOverlapped)
+
+proc OverlappedResult*(
+    self: ptr IStreamAsync,
+    lpOverlapped: LPOVERLAPPED,
+    lpNumberOfBytesTransferred: LPDWORD,
+    bWait: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OverlappedResult(self, lpOverlapped, lpNumberOfBytesTransferred, bWait)
+
+proc CancelIo*(self: ptr IStreamAsync): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CancelIo(self)
+
+proc GetSectorSize*(
+    self: ptr IStreamUnbufferedInfo, pcbSectorSize: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSectorSize(self, pcbSectorSize)
+
+proc StartOperations*(
+    self: ptr IFileOperationProgressSink
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StartOperations(self)
+
+proc FinishOperations*(
+    self: ptr IFileOperationProgressSink, hrResult: HRESULT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FinishOperations(self, hrResult)
+
+proc PreRenameItem*(
+    self: ptr IFileOperationProgressSink,
+    dwFlags: DWORD,
+    psiItem: ptr IShellItem,
+    pszNewName: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreRenameItem(self, dwFlags, psiItem, pszNewName)
+
+proc PostRenameItem*(
+    self: ptr IFileOperationProgressSink,
+    dwFlags: DWORD,
+    psiItem: ptr IShellItem,
+    pszNewName: LPCWSTR,
+    hrRename: HRESULT,
+    psiNewlyCreated: ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostRenameItem(
+      self, dwFlags, psiItem, pszNewName, hrRename, psiNewlyCreated
+    )
+
+proc PreMoveItem*(
+    self: ptr IFileOperationProgressSink,
+    dwFlags: DWORD,
+    psiItem: ptr IShellItem,
+    psiDestinationFolder: ptr IShellItem,
+    pszNewName: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreMoveItem(self, dwFlags, psiItem, psiDestinationFolder, pszNewName)
+
+proc PostMoveItem*(
+    self: ptr IFileOperationProgressSink,
+    dwFlags: DWORD,
+    psiItem: ptr IShellItem,
+    psiDestinationFolder: ptr IShellItem,
+    pszNewName: LPCWSTR,
+    hrMove: HRESULT,
+    psiNewlyCreated: ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostMoveItem(
+      self, dwFlags, psiItem, psiDestinationFolder, pszNewName, hrMove, psiNewlyCreated
+    )
+
+proc PreCopyItem*(
+    self: ptr IFileOperationProgressSink,
+    dwFlags: DWORD,
+    psiItem: ptr IShellItem,
+    psiDestinationFolder: ptr IShellItem,
+    pszNewName: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreCopyItem(self, dwFlags, psiItem, psiDestinationFolder, pszNewName)
+
+proc PostCopyItem*(
+    self: ptr IFileOperationProgressSink,
+    dwFlags: DWORD,
+    psiItem: ptr IShellItem,
+    psiDestinationFolder: ptr IShellItem,
+    pszNewName: LPCWSTR,
+    hrCopy: HRESULT,
+    psiNewlyCreated: ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostCopyItem(
+      self, dwFlags, psiItem, psiDestinationFolder, pszNewName, hrCopy, psiNewlyCreated
+    )
+
+proc PreDeleteItem*(
+    self: ptr IFileOperationProgressSink, dwFlags: DWORD, psiItem: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreDeleteItem(self, dwFlags, psiItem)
+
+proc PostDeleteItem*(
+    self: ptr IFileOperationProgressSink,
+    dwFlags: DWORD,
+    psiItem: ptr IShellItem,
+    hrDelete: HRESULT,
+    psiNewlyCreated: ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostDeleteItem(self, dwFlags, psiItem, hrDelete, psiNewlyCreated)
+
+proc PreNewItem*(
+    self: ptr IFileOperationProgressSink,
+    dwFlags: DWORD,
+    psiDestinationFolder: ptr IShellItem,
+    pszNewName: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PreNewItem(self, dwFlags, psiDestinationFolder, pszNewName)
+
+proc PostNewItem*(
+    self: ptr IFileOperationProgressSink,
+    dwFlags: DWORD,
+    psiDestinationFolder: ptr IShellItem,
+    pszNewName: LPCWSTR,
+    pszTemplateName: LPCWSTR,
+    dwFileAttributes: DWORD,
+    hrNew: HRESULT,
+    psiNewItem: ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostNewItem(
+      self, dwFlags, psiDestinationFolder, pszNewName, pszTemplateName,
+      dwFileAttributes, hrNew, psiNewItem,
+    )
+
+proc UpdateProgress*(
+    self: ptr IFileOperationProgressSink, iWorkTotal: UINT, iWorkSoFar: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UpdateProgress(self, iWorkTotal, iWorkSoFar)
+
+proc ResetTimer*(self: ptr IFileOperationProgressSink): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResetTimer(self)
+
+proc PauseTimer*(self: ptr IFileOperationProgressSink): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PauseTimer(self)
+
+proc ResumeTimer*(self: ptr IFileOperationProgressSink): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResumeTimer(self)
+
+proc BindToHandler*(
+    self: ptr IShellItemArray,
+    pbc: ptr IBindCtx,
+    bhid: REFGUID,
+    riid: REFIID,
+    ppvOut: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BindToHandler(self, pbc, bhid, riid, ppvOut)
+
+proc GetPropertyStore*(
+    self: ptr IShellItemArray,
+    flags: GETPROPERTYSTOREFLAGS,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyStore(self, flags, riid, ppv)
+
+proc GetPropertyDescriptionList*(
+    self: ptr IShellItemArray, keyType: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyDescriptionList(self, keyType, riid, ppv)
+
+proc GetAttributes*(
+    self: ptr IShellItemArray,
+    AttribFlags: SIATTRIBFLAGS,
+    sfgaoMask: SFGAOF,
+    psfgaoAttribs: ptr SFGAOF,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAttributes(self, AttribFlags, sfgaoMask, psfgaoAttribs)
+
+proc GetCount*(
+    self: ptr IShellItemArray, pdwNumItems: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCount(self, pdwNumItems)
+
+proc GetItemAt*(
+    self: ptr IShellItemArray, dwIndex: DWORD, ppsi: ptr ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItemAt(self, dwIndex, ppsi)
+
+proc EnumItems*(
+    self: ptr IShellItemArray, ppenumShellItems: ptr ptr IEnumShellItems
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumItems(self, ppenumShellItems)
+
+proc Initialize*(
+    self: ptr IInitializeWithItem, psi: ptr IShellItem, grfMode: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, psi, grfMode)
+
+proc SetSelection*(
+    self: ptr IObjectWithSelection, psia: ptr IShellItemArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSelection(self, psia)
+
+proc GetSelection*(
+    self: ptr IObjectWithSelection, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelection(self, riid, ppv)
+
+proc RemoveBackReferences*(
+    self: ptr IObjectWithBackReferences
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveBackReferences(self)
+
+proc ParsePropertyName*(
+    self: ptr IPropertyUI,
+    pszName: LPCWSTR,
+    pfmtid: ptr FMTID,
+    ppid: ptr PROPID,
+    pchEaten: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ParsePropertyName(self, pszName, pfmtid, ppid, pchEaten)
+
+proc GetCannonicalName*(
+    self: ptr IPropertyUI,
+    fmtid: REFFMTID,
+    pid: PROPID,
+    pwszText: LPWSTR,
+    cchText: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCannonicalName(self, fmtid, pid, pwszText, cchText)
+
+proc GetDisplayName*(
+    self: ptr IPropertyUI,
+    fmtid: REFFMTID,
+    pid: PROPID,
+    flags: PROPERTYUI_NAME_FLAGS,
+    pwszText: LPWSTR,
+    cchText: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDisplayName(self, fmtid, pid, flags, pwszText, cchText)
+
+proc GetPropertyDescription*(
+    self: ptr IPropertyUI,
+    fmtid: REFFMTID,
+    pid: PROPID,
+    pwszText: LPWSTR,
+    cchText: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyDescription(self, fmtid, pid, pwszText, cchText)
+
+proc GetDefaultWidth*(
+    self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, pcxChars: ptr ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultWidth(self, fmtid, pid, pcxChars)
+
+proc GetFlags*(
+    self: ptr IPropertyUI, fmtid: REFFMTID, pid: PROPID, pflags: ptr PROPERTYUI_FLAGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFlags(self, fmtid, pid, pflags)
+
+proc FormatForDisplay*(
+    self: ptr IPropertyUI,
+    fmtid: REFFMTID,
+    pid: PROPID,
+    ppropvar: ptr PROPVARIANT,
+    puiff: PROPERTYUI_FORMAT_FLAGS,
+    pwszText: LPWSTR,
+    cchText: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FormatForDisplay(self, fmtid, pid, ppropvar, puiff, pwszText, cchText)
+
+proc GetHelpInfo*(
+    self: ptr IPropertyUI,
+    fmtid: REFFMTID,
+    pid: PROPID,
+    pwszHelpFile: LPWSTR,
+    cch: DWORD,
+    puHelpID: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHelpInfo(self, fmtid, pid, pwszHelpFile, cch, puHelpID)
+
+proc CanCategorizeOnSCID*(
+    self: ptr ICategoryProvider, pscid: ptr SHCOLUMNID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CanCategorizeOnSCID(self, pscid)
+
+proc GetDefaultCategory*(
+    self: ptr ICategoryProvider, pguid: ptr GUID, pscid: ptr SHCOLUMNID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultCategory(self, pguid, pscid)
+
+proc GetCategoryForSCID*(
+    self: ptr ICategoryProvider, pscid: ptr SHCOLUMNID, pguid: ptr GUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCategoryForSCID(self, pscid, pguid)
+
+proc EnumCategories*(
+    self: ptr ICategoryProvider, penum: ptr ptr IEnumGUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumCategories(self, penum)
+
+proc GetCategoryName*(
+    self: ptr ICategoryProvider, pguid: ptr GUID, pszName: LPWSTR, cch: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCategoryName(self, pguid, pszName, cch)
+
+proc CreateCategory*(
+    self: ptr ICategoryProvider, pguid: ptr GUID, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateCategory(self, pguid, riid, ppv)
+
+proc GetDescription*(
+    self: ptr ICategorizer, pszDesc: LPWSTR, cch: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDescription(self, pszDesc, cch)
+
+proc GetCategory*(
+    self: ptr ICategorizer,
+    cidl: UINT,
+    apidl: PCUITEMID_CHILD_ARRAY,
+    rgCategoryIds: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCategory(self, cidl, apidl, rgCategoryIds)
+
+proc GetCategoryInfo*(
+    self: ptr ICategorizer, dwCategoryId: DWORD, pci: ptr TCATEGORY_INFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCategoryInfo(self, dwCategoryId, pci)
+
+proc CompareCategory*(
+    self: ptr ICategorizer,
+    csfFlags: CATSORT_FLAGS,
+    dwCategoryId1: DWORD,
+    dwCategoryId2: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CompareCategory(self, csfFlags, dwCategoryId1, dwCategoryId2)
+
+proc DragEnter*(
+    self: ptr IDropTargetHelper,
+    hwndTarget: HWND,
+    pDataObject: ptr IDataObject,
+    ppt: ptr POINT,
+    dwEffect: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DragEnter(self, hwndTarget, pDataObject, ppt, dwEffect)
+
+proc DragLeave*(self: ptr IDropTargetHelper): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DragLeave(self)
+
+proc DragOver*(
+    self: ptr IDropTargetHelper, ppt: ptr POINT, dwEffect: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DragOver(self, ppt, dwEffect)
+
+proc Drop*(
+    self: ptr IDropTargetHelper,
+    pDataObject: ptr IDataObject,
+    ppt: ptr POINT,
+    dwEffect: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Drop(self, pDataObject, ppt, dwEffect)
+
+proc Show*(self: ptr IDropTargetHelper, fShow: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Show(self, fShow)
+
+proc InitializeFromBitmap*(
+    self: ptr IDragSourceHelper, pshdi: LPSHDRAGIMAGE, pDataObject: ptr IDataObject
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeFromBitmap(self, pshdi, pDataObject)
+
+proc InitializeFromWindow*(
+    self: ptr IDragSourceHelper,
+    hwnd: HWND,
+    ppt: ptr POINT,
+    pDataObject: ptr IDataObject,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeFromWindow(self, hwnd, ppt, pDataObject)
+
+proc SetFlags*(
+    self: ptr IDragSourceHelper2, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFlags(self, dwFlags)
+
+proc GetPath*(
+    self: ptr IShellLinkA,
+    pszFile: LPSTR,
+    cch: int32,
+    pfd: ptr WIN32_FIND_DATAA,
+    fFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPath(self, pszFile, cch, pfd, fFlags)
+
+proc GetIDList*(
+    self: ptr IShellLinkA, ppidl: ptr PIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIDList(self, ppidl)
+
+proc SetIDList*(
+    self: ptr IShellLinkA, pidl: PCIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetIDList(self, pidl)
+
+proc GetDescription*(
+    self: ptr IShellLinkA, pszName: LPSTR, cch: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDescription(self, pszName, cch)
+
+proc SetDescription*(
+    self: ptr IShellLinkA, pszName: LPCSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDescription(self, pszName)
+
+proc GetWorkingDirectory*(
+    self: ptr IShellLinkA, pszDir: LPSTR, cch: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetWorkingDirectory(self, pszDir, cch)
+
+proc SetWorkingDirectory*(
+    self: ptr IShellLinkA, pszDir: LPCSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetWorkingDirectory(self, pszDir)
+
+proc GetArguments*(
+    self: ptr IShellLinkA, pszArgs: LPSTR, cch: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetArguments(self, pszArgs, cch)
+
+proc SetArguments*(self: ptr IShellLinkA, pszArgs: LPCSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetArguments(self, pszArgs)
+
+proc GetHotkey*(self: ptr IShellLinkA, pwHotkey: ptr WORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHotkey(self, pwHotkey)
+
+proc SetHotkey*(self: ptr IShellLinkA, wHotkey: WORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHotkey(self, wHotkey)
+
+proc GetShowCmd*(
+    self: ptr IShellLinkA, piShowCmd: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetShowCmd(self, piShowCmd)
+
+proc SetShowCmd*(self: ptr IShellLinkA, iShowCmd: int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetShowCmd(self, iShowCmd)
+
+proc GetIconLocation*(
+    self: ptr IShellLinkA, pszIconPath: LPSTR, cch: int32, piIcon: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIconLocation(self, pszIconPath, cch, piIcon)
+
+proc SetIconLocation*(
+    self: ptr IShellLinkA, pszIconPath: LPCSTR, iIcon: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetIconLocation(self, pszIconPath, iIcon)
+
+proc SetRelativePath*(
+    self: ptr IShellLinkA, pszPathRel: LPCSTR, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetRelativePath(self, pszPathRel, dwReserved)
+
+proc Resolve*(
+    self: ptr IShellLinkA, hwnd: HWND, fFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Resolve(self, hwnd, fFlags)
+
+proc SetPath*(self: ptr IShellLinkA, pszFile: LPCSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPath(self, pszFile)
+
+proc GetPath*(
+    self: ptr IShellLinkW,
+    pszFile: LPWSTR,
+    cch: int32,
+    pfd: ptr WIN32_FIND_DATAW,
+    fFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPath(self, pszFile, cch, pfd, fFlags)
+
+proc GetIDList*(
+    self: ptr IShellLinkW, ppidl: ptr PIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIDList(self, ppidl)
+
+proc SetIDList*(
+    self: ptr IShellLinkW, pidl: PCIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetIDList(self, pidl)
+
+proc GetDescription*(
+    self: ptr IShellLinkW, pszName: LPWSTR, cch: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDescription(self, pszName, cch)
+
+proc SetDescription*(
+    self: ptr IShellLinkW, pszName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDescription(self, pszName)
+
+proc GetWorkingDirectory*(
+    self: ptr IShellLinkW, pszDir: LPWSTR, cch: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetWorkingDirectory(self, pszDir, cch)
+
+proc SetWorkingDirectory*(
+    self: ptr IShellLinkW, pszDir: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetWorkingDirectory(self, pszDir)
+
+proc GetArguments*(
+    self: ptr IShellLinkW, pszArgs: LPWSTR, cch: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetArguments(self, pszArgs, cch)
+
+proc SetArguments*(
+    self: ptr IShellLinkW, pszArgs: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetArguments(self, pszArgs)
+
+proc GetHotkey*(self: ptr IShellLinkW, pwHotkey: ptr WORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetHotkey(self, pwHotkey)
+
+proc SetHotkey*(self: ptr IShellLinkW, wHotkey: WORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHotkey(self, wHotkey)
+
+proc GetShowCmd*(
+    self: ptr IShellLinkW, piShowCmd: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetShowCmd(self, piShowCmd)
+
+proc SetShowCmd*(self: ptr IShellLinkW, iShowCmd: int32): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetShowCmd(self, iShowCmd)
+
+proc GetIconLocation*(
+    self: ptr IShellLinkW, pszIconPath: LPWSTR, cch: int32, piIcon: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIconLocation(self, pszIconPath, cch, piIcon)
+
+proc SetIconLocation*(
+    self: ptr IShellLinkW, pszIconPath: LPCWSTR, iIcon: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetIconLocation(self, pszIconPath, iIcon)
+
+proc SetRelativePath*(
+    self: ptr IShellLinkW, pszPathRel: LPCWSTR, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetRelativePath(self, pszPathRel, dwReserved)
+
+proc Resolve*(
+    self: ptr IShellLinkW, hwnd: HWND, fFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Resolve(self, hwnd, fFlags)
+
+proc SetPath*(self: ptr IShellLinkW, pszFile: LPCWSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPath(self, pszFile)
+
+proc AddDataBlock*(
+    self: ptr IShellLinkDataList, pDataBlock: pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddDataBlock(self, pDataBlock)
+
+proc CopyDataBlock*(
+    self: ptr IShellLinkDataList, dwSig: DWORD, ppDataBlock: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CopyDataBlock(self, dwSig, ppDataBlock)
+
+proc RemoveDataBlock*(
+    self: ptr IShellLinkDataList, dwSig: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveDataBlock(self, dwSig)
+
+proc GetFlags*(
+    self: ptr IShellLinkDataList, pdwFlags: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFlags(self, pdwFlags)
+
+proc SetFlags*(
+    self: ptr IShellLinkDataList, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFlags(self, dwFlags)
+
+proc ResolveShellLink*(
+    self: ptr IResolveShellLink, punkLink: ptr IUnknown, hwnd: HWND, fFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResolveShellLink(self, punkLink, hwnd, fFlags)
+
+proc Initialize*(
+    self: ptr IActionProgressDialog,
+    flags: SPINITF,
+    pszTitle: LPCWSTR,
+    pszCancel: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, flags, pszTitle, pszCancel)
+
+proc Stop*(self: ptr IActionProgressDialog): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Stop(self)
+
+proc Initialize*(
+    self: ptr IHWEventHandler, pszParams: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pszParams)
+
+proc HandleEvent*(
+    self: ptr IHWEventHandler,
+    pszDeviceID: LPCWSTR,
+    pszAltDeviceID: LPCWSTR,
+    pszEventType: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleEvent(self, pszDeviceID, pszAltDeviceID, pszEventType)
+
+proc HandleEventWithContent*(
+    self: ptr IHWEventHandler,
+    pszDeviceID: LPCWSTR,
+    pszAltDeviceID: LPCWSTR,
+    pszEventType: LPCWSTR,
+    pszContentTypeHandler: LPCWSTR,
+    pdataobject: ptr IDataObject,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleEventWithContent(
+      self, pszDeviceID, pszAltDeviceID, pszEventType, pszContentTypeHandler,
+      pdataobject,
+    )
+
+proc HandleEventWithHWND*(
+    self: ptr IHWEventHandler2,
+    pszDeviceID: LPCWSTR,
+    pszAltDeviceID: LPCWSTR,
+    pszEventType: LPCWSTR,
+    hwndOwner: HWND,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleEventWithHWND(
+      self, pszDeviceID, pszAltDeviceID, pszEventType, hwndOwner
+    )
+
+proc AllowAutoPlay*(
+    self: ptr IQueryCancelAutoPlay,
+    pszPath: LPCWSTR,
+    dwContentType: DWORD,
+    pszLabel: LPCWSTR,
+    dwSerialNumber: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AllowAutoPlay(self, pszPath, dwContentType, pszLabel, dwSerialNumber)
+
+proc GetDynamicInfo*(
+    self: ptr IDynamicHWHandler,
+    pszDeviceID: LPCWSTR,
+    dwContentType: DWORD,
+    ppszAction: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDynamicInfo(self, pszDeviceID, dwContentType, ppszAction)
+
+proc Begin*(
+    self: ptr IActionProgress, action: SPACTION, flags: SPBEGINF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Begin(self, action, flags)
+
+proc UpdateProgress*(
+    self: ptr IActionProgress, ulCompleted: ULONGLONG, ulTotal: ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UpdateProgress(self, ulCompleted, ulTotal)
+
+proc UpdateText*(
+    self: ptr IActionProgress, sptext: SPTEXT, pszText: LPCWSTR, fMayCompact: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UpdateText(self, sptext, pszText, fMayCompact)
+
+proc QueryCancel*(
+    self: ptr IActionProgress, pfCancelled: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryCancel(self, pfCancelled)
+
+proc ResetCancel*(self: ptr IActionProgress): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResetCancel(self)
+
+proc End*(self: ptr IActionProgress): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.End(self)
+
+proc Initialize*(
+    self: ptr IShellExtInit,
+    pidlFolder: PCIDLIST_ABSOLUTE,
+    pdtobj: ptr IDataObject,
+    hkeyProgID: HKEY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pidlFolder, pdtobj, hkeyProgID)
+
+proc AddPages*(
+    self: ptr IShellPropSheetExt, pfnAddPage: LPFNSVADDPROPSHEETPAGE, lParam: LPARAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddPages(self, pfnAddPage, lParam)
+
+proc ReplacePage*(
+    self: ptr IShellPropSheetExt,
+    uPageID: EXPPS,
+    pfnReplaceWith: LPFNSVADDPROPSHEETPAGE,
+    lParam: LPARAM,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReplacePage(self, uPageID, pfnReplaceWith, lParam)
+
+proc Initialize*(
+    self: ptr IRemoteComputer, pszMachine: LPCWSTR, bEnumerating: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pszMachine, bEnumerating)
+
+proc QueryContinue*(self: ptr IQueryContinue): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryContinue(self)
+
+proc GetCancelEvent*(
+    self: ptr IObjectWithCancelEvent, phEvent: ptr HANDLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCancelEvent(self, phEvent)
+
+proc SetBalloonInfo*(
+    self: ptr IUserNotification, pszTitle: LPCWSTR, pszText: LPCWSTR, dwInfoFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBalloonInfo(self, pszTitle, pszText, dwInfoFlags)
+
+proc SetBalloonRetry*(
+    self: ptr IUserNotification, dwShowTime: DWORD, dwInterval: DWORD, cRetryCount: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBalloonRetry(self, dwShowTime, dwInterval, cRetryCount)
+
+proc SetIconInfo*(
+    self: ptr IUserNotification, hIcon: HICON, pszToolTip: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetIconInfo(self, hIcon, pszToolTip)
+
+proc Show*(
+    self: ptr IUserNotification, pqc: ptr IQueryContinue, dwContinuePollInterval: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Show(self, pqc, dwContinuePollInterval)
+
+proc PlaySound*(
+    self: ptr IUserNotification, pszSoundName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PlaySound(self, pszSoundName)
+
+proc OnBalloonUserClick*(
+    self: ptr IUserNotificationCallback, pt: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnBalloonUserClick(self, pt)
+
+proc OnLeftClick*(
+    self: ptr IUserNotificationCallback, pt: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnLeftClick(self, pt)
+
+proc OnContextMenu*(
+    self: ptr IUserNotificationCallback, pt: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnContextMenu(self, pt)
+
+proc SetBalloonInfo*(
+    self: ptr IUserNotification2,
+    pszTitle: LPCWSTR,
+    pszText: LPCWSTR,
+    dwInfoFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBalloonInfo(self, pszTitle, pszText, dwInfoFlags)
+
+proc SetBalloonRetry*(
+    self: ptr IUserNotification2,
+    dwShowTime: DWORD,
+    dwInterval: DWORD,
+    cRetryCount: UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBalloonRetry(self, dwShowTime, dwInterval, cRetryCount)
+
+proc SetIconInfo*(
+    self: ptr IUserNotification2, hIcon: HICON, pszToolTip: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetIconInfo(self, hIcon, pszToolTip)
+
+proc Show*(
+    self: ptr IUserNotification2,
+    pqc: ptr IQueryContinue,
+    dwContinuePollInterval: DWORD,
+    pSink: ptr IUserNotificationCallback,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Show(self, pqc, dwContinuePollInterval, pSink)
+
+proc PlaySound*(
+    self: ptr IUserNotification2, pszSoundName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PlaySound(self, pszSoundName)
+
+proc GetValidCharacters*(
+    self: ptr IItemNameLimits,
+    ppwszValidChars: ptr LPWSTR,
+    ppwszInvalidChars: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetValidCharacters(self, ppwszValidChars, ppwszInvalidChars)
+
+proc GetMaxLength*(
+    self: ptr IItemNameLimits, pszName: LPCWSTR, piMaxNameLen: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMaxLength(self, pszName, piMaxNameLen)
+
+proc SetDisplayName*(
+    self: ptr ISearchFolderItemFactory, pszDisplayName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDisplayName(self, pszDisplayName)
+
+proc SetFolderTypeID*(
+    self: ptr ISearchFolderItemFactory, ftid: FOLDERTYPEID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFolderTypeID(self, ftid)
+
+proc SetFolderLogicalViewMode*(
+    self: ptr ISearchFolderItemFactory, flvm: FOLDERLOGICALVIEWMODE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFolderLogicalViewMode(self, flvm)
+
+proc SetIconSize*(
+    self: ptr ISearchFolderItemFactory, iIconSize: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetIconSize(self, iIconSize)
+
+proc SetVisibleColumns*(
+    self: ptr ISearchFolderItemFactory, cVisibleColumns: UINT, rgKey: ptr PROPERTYKEY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetVisibleColumns(self, cVisibleColumns, rgKey)
+
+proc SetSortColumns*(
+    self: ptr ISearchFolderItemFactory,
+    cSortColumns: UINT,
+    rgSortColumns: ptr SORTCOLUMN,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSortColumns(self, cSortColumns, rgSortColumns)
+
+proc SetGroupColumn*(
+    self: ptr ISearchFolderItemFactory, keyGroup: REFPROPERTYKEY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetGroupColumn(self, keyGroup)
+
+proc SetStacks*(
+    self: ptr ISearchFolderItemFactory, cStackKeys: UINT, rgStackKeys: ptr PROPERTYKEY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetStacks(self, cStackKeys, rgStackKeys)
+
+proc SetScope*(
+    self: ptr ISearchFolderItemFactory, psiaScope: ptr IShellItemArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetScope(self, psiaScope)
+
+proc SetCondition*(
+    self: ptr ISearchFolderItemFactory, pCondition: ptr ICondition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCondition(self, pCondition)
+
+proc GetShellItem*(
+    self: ptr ISearchFolderItemFactory, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetShellItem(self, riid, ppv)
+
+proc GetIDList*(
+    self: ptr ISearchFolderItemFactory, ppidl: ptr PIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIDList(self, ppidl)
+
+proc GetLocation*(
+    self: ptr IExtractImage,
+    pszPathBuffer: LPWSTR,
+    cch: DWORD,
+    pdwPriority: ptr DWORD,
+    prgSize: ptr SIZE,
+    dwRecClrDepth: DWORD,
+    pdwFlags: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLocation(
+      self, pszPathBuffer, cch, pdwPriority, prgSize, dwRecClrDepth, pdwFlags
+    )
+
+proc Extract*(
+    self: ptr IExtractImage, phBmpThumbnail: ptr HBITMAP
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Extract(self, phBmpThumbnail)
+
+proc GetDateStamp*(
+    self: ptr IExtractImage2, pDateStamp: ptr FILETIME
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDateStamp(self, pDateStamp)
+
+proc GetThumbnailHandler*(
+    self: ptr IThumbnailHandlerFactory,
+    pidlChild: PCUITEMID_CHILD,
+    pbc: ptr IBindCtx,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetThumbnailHandler(self, pidlChild, pbc, riid, ppv)
+
+proc SetParentAndItem*(
+    self: ptr IParentAndItem,
+    pidlParent: PCIDLIST_ABSOLUTE,
+    psf: ptr IShellFolder,
+    pidlChild: PCUITEMID_CHILD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetParentAndItem(self, pidlParent, psf, pidlChild)
+
+proc GetParentAndItem*(
+    self: ptr IParentAndItem,
+    ppidlParent: ptr PIDLIST_ABSOLUTE,
+    ppsf: ptr ptr IShellFolder,
+    ppidlChild: ptr PITEMID_CHILD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetParentAndItem(self, ppidlParent, ppsf, ppidlChild)
+
+proc ShowDW*(self: ptr IDockingWindow, fShow: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowDW(self, fShow)
+
+proc CloseDW*(self: ptr IDockingWindow, dwReserved: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CloseDW(self, dwReserved)
+
+proc ResizeBorderDW*(
+    self: ptr IDockingWindow,
+    prcBorder: LPCRECT,
+    punkToolbarSite: ptr IUnknown,
+    fReserved: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResizeBorderDW(self, prcBorder, punkToolbarSite, fReserved)
+
+proc GetBandInfo*(
+    self: ptr IDeskBand, dwBandID: DWORD, dwViewMode: DWORD, pdbi: ptr DESKBANDINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBandInfo(self, dwBandID, dwViewMode, pdbi)
+
+proc GetDefaultBandWidth*(
+    self: ptr IDeskBandInfo, dwBandID: DWORD, dwViewMode: DWORD, pnWidth: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultBandWidth(self, dwBandID, dwViewMode, pnWidth)
+
+proc CanRenderComposited*(
+    self: ptr IDeskBand2, pfCanRenderComposited: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CanRenderComposited(self, pfCanRenderComposited)
+
+proc SetCompositionState*(
+    self: ptr IDeskBand2, fCompositionEnabled: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCompositionState(self, fCompositionEnabled)
+
+proc GetCompositionState*(
+    self: ptr IDeskBand2, pfCompositionEnabled: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCompositionState(self, pfCompositionEnabled)
+
+proc HrInit*(self: ptr ITaskbarList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HrInit(self)
+
+proc AddTab*(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddTab(self, hwnd)
+
+proc DeleteTab*(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteTab(self, hwnd)
+
+proc ActivateTab*(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ActivateTab(self, hwnd)
+
+proc SetActiveAlt*(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetActiveAlt(self, hwnd)
+
+proc MarkFullscreenWindow*(
+    self: ptr ITaskbarList2, hwnd: HWND, fFullscreen: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MarkFullscreenWindow(self, hwnd, fFullscreen)
+
+proc SetProgressValue*(
+    self: ptr ITaskbarList3, hwnd: HWND, ullCompleted: ULONGLONG, ullTotal: ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetProgressValue(self, hwnd, ullCompleted, ullTotal)
+
+proc SetProgressState*(
+    self: ptr ITaskbarList3, hwnd: HWND, tbpFlags: TBPFLAG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetProgressState(self, hwnd, tbpFlags)
+
+proc RegisterTab*(
+    self: ptr ITaskbarList3, hwndTab: HWND, hwndMDI: HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterTab(self, hwndTab, hwndMDI)
+
+proc UnregisterTab*(
+    self: ptr ITaskbarList3, hwndTab: HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnregisterTab(self, hwndTab)
+
+proc SetTabOrder*(
+    self: ptr ITaskbarList3, hwndTab: HWND, hwndInsertBefore: HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTabOrder(self, hwndTab, hwndInsertBefore)
+
+proc SetTabActive*(
+    self: ptr ITaskbarList3, hwndTab: HWND, hwndMDI: HWND, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTabActive(self, hwndTab, hwndMDI, dwReserved)
+
+proc ThumbBarAddButtons*(
+    self: ptr ITaskbarList3, hwnd: HWND, cButtons: UINT, pButton: LPTHUMBBUTTON
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ThumbBarAddButtons(self, hwnd, cButtons, pButton)
+
+proc ThumbBarUpdateButtons*(
+    self: ptr ITaskbarList3, hwnd: HWND, cButtons: UINT, pButton: LPTHUMBBUTTON
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ThumbBarUpdateButtons(self, hwnd, cButtons, pButton)
+
+proc ThumbBarSetImageList*(
+    self: ptr ITaskbarList3, hwnd: HWND, himl: HIMAGELIST
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ThumbBarSetImageList(self, hwnd, himl)
+
+proc SetOverlayIcon*(
+    self: ptr ITaskbarList3, hwnd: HWND, hIcon: HICON, pszDescription: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOverlayIcon(self, hwnd, hIcon, pszDescription)
+
+proc SetThumbnailTooltip*(
+    self: ptr ITaskbarList3, hwnd: HWND, pszTip: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetThumbnailTooltip(self, hwnd, pszTip)
+
+proc SetThumbnailClip*(
+    self: ptr ITaskbarList3, hwnd: HWND, prcClip: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetThumbnailClip(self, hwnd, prcClip)
+
+proc SetTabProperties*(
+    self: ptr ITaskbarList4, hwndTab: HWND, stpFlags: STPFLAG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTabProperties(self, hwndTab, stpFlags)
+
+proc RemoveFromList*(
+    self: ptr IStartMenuPinnedList, pitem: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveFromList(self, pitem)
+
+proc GetRecorderDriveLetter*(
+    self: ptr ICDBurn, pszDrive: LPWSTR, cch: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRecorderDriveLetter(self, pszDrive, cch)
+
+proc Burn*(self: ptr ICDBurn, hwnd: HWND): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Burn(self, hwnd)
+
+proc HasRecordableDrive*(
+    self: ptr ICDBurn, pfHasRecorder: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HasRecordableDrive(self, pfHasRecorder)
+
+proc GetPreviousPage*(
+    self: ptr IWizardSite, phpage: ptr HPROPSHEETPAGE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPreviousPage(self, phpage)
+
+proc GetNextPage*(
+    self: ptr IWizardSite, phpage: ptr HPROPSHEETPAGE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNextPage(self, phpage)
+
+proc GetCancelledPage*(
+    self: ptr IWizardSite, phpage: ptr HPROPSHEETPAGE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCancelledPage(self, phpage)
+
+proc AddPages*(
+    self: ptr IWizardExtension,
+    aPages: ptr HPROPSHEETPAGE,
+    cPages: UINT,
+    pnPagesAdded: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddPages(self, aPages, cPages, pnPagesAdded)
+
+proc GetFirstPage*(
+    self: ptr IWizardExtension, phpage: ptr HPROPSHEETPAGE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFirstPage(self, phpage)
+
+proc GetLastPage*(
+    self: ptr IWizardExtension, phpage: ptr HPROPSHEETPAGE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLastPage(self, phpage)
+
+proc SetInitialURL*(
+    self: ptr IWebWizardExtension, pszURL: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetInitialURL(self, pszURL)
+
+proc SetErrorURL*(
+    self: ptr IWebWizardExtension, pszErrorURL: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetErrorURL(self, pszErrorURL)
+
+proc Initialize*(
+    self: ptr IPublishingWizard,
+    pdo: ptr IDataObject,
+    dwOptions: DWORD,
+    pszServiceScope: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pdo, dwOptions, pszServiceScope)
+
+proc GetTransferManifest*(
+    self: ptr IPublishingWizard,
+    phrFromTransfer: ptr HRESULT,
+    pdocManifest: ptr ptr IXMLDOMDocument,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTransferManifest(self, phrFromTransfer, pdocManifest)
+
+proc Initialize*(
+    self: ptr IFolderViewHost, hwndParent: HWND, pdo: ptr IDataObject, prc: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, hwndParent, pdo, prc)
+
+proc OnNavigationPending*(
+    self: ptr IExplorerBrowserEvents, pidlFolder: PCIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnNavigationPending(self, pidlFolder)
+
+proc OnViewCreated*(
+    self: ptr IExplorerBrowserEvents, psv: ptr IShellView
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnViewCreated(self, psv)
+
+proc OnNavigationComplete*(
+    self: ptr IExplorerBrowserEvents, pidlFolder: PCIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnNavigationComplete(self, pidlFolder)
+
+proc OnNavigationFailed*(
+    self: ptr IExplorerBrowserEvents, pidlFolder: PCIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnNavigationFailed(self, pidlFolder)
+
+proc Initialize*(
+    self: ptr IExplorerBrowser, hwndParent: HWND, prc: ptr RECT, pfs: ptr FOLDERSETTINGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, hwndParent, prc, pfs)
+
+proc Destroy*(self: ptr IExplorerBrowser): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Destroy(self)
+
+proc SetRect*(
+    self: ptr IExplorerBrowser, phdwp: ptr HDWP, rcBrowser: RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetRect(self, phdwp, rcBrowser)
+
+proc SetPropertyBag*(
+    self: ptr IExplorerBrowser, pszPropertyBag: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPropertyBag(self, pszPropertyBag)
+
+proc SetEmptyText*(
+    self: ptr IExplorerBrowser, pszEmptyText: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetEmptyText(self, pszEmptyText)
+
+proc SetFolderSettings*(
+    self: ptr IExplorerBrowser, pfs: ptr FOLDERSETTINGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFolderSettings(self, pfs)
+
+proc Advise*(
+    self: ptr IExplorerBrowser, psbe: ptr IExplorerBrowserEvents, pdwCookie: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Advise(self, psbe, pdwCookie)
+
+proc Unadvise*(
+    self: ptr IExplorerBrowser, dwCookie: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unadvise(self, dwCookie)
+
+proc SetOptions*(
+    self: ptr IExplorerBrowser, dwFlag: EXPLORER_BROWSER_OPTIONS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOptions(self, dwFlag)
+
+proc GetOptions*(
+    self: ptr IExplorerBrowser, pdwFlag: ptr EXPLORER_BROWSER_OPTIONS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOptions(self, pdwFlag)
+
+proc BrowseToIDList*(
+    self: ptr IExplorerBrowser, pidl: PCUIDLIST_RELATIVE, uFlags: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BrowseToIDList(self, pidl, uFlags)
+
+proc BrowseToObject*(
+    self: ptr IExplorerBrowser, punk: ptr IUnknown, uFlags: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BrowseToObject(self, punk, uFlags)
+
+proc FillFromObject*(
+    self: ptr IExplorerBrowser, punk: ptr IUnknown, dwFlags: EXPLORER_BROWSER_FILL_FLAGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FillFromObject(self, punk, dwFlags)
+
+proc RemoveAll*(self: ptr IExplorerBrowser): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveAll(self)
+
+proc GetCurrentView*(
+    self: ptr IExplorerBrowser, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentView(self, riid, ppv)
+
+proc SetAccessibleName*(
+    self: ptr IAccessibleObject, pszName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAccessibleName(self, pszName)
+
+proc AddItem*(
+    self: ptr IResultsFolder, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddItem(self, psi)
+
+proc AddIDList*(
+    self: ptr IResultsFolder, pidl: PCIDLIST_ABSOLUTE, ppidlAdded: ptr PITEMID_CHILD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddIDList(self, pidl, ppidlAdded)
+
+proc RemoveItem*(
+    self: ptr IResultsFolder, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveItem(self, psi)
+
+proc RemoveIDList*(
+    self: ptr IResultsFolder, pidl: PCIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveIDList(self, pidl)
+
+proc RemoveAll*(self: ptr IResultsFolder): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveAll(self)
+
+proc Next*(
+    self: ptr IEnumObjects,
+    celt: ULONG,
+    riid: REFIID,
+    rgelt: ptr pointer,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, riid, rgelt, pceltFetched)
+
+proc Skip*(self: ptr IEnumObjects, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumObjects): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumObjects, ppenum: ptr ptr IEnumObjects
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc StartProgressDialog*(
+    self: ptr IOperationsProgressDialog, hwndOwner: HWND, flags: OPPROGDLGF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StartProgressDialog(self, hwndOwner, flags)
+
+proc StopProgressDialog*(
+    self: ptr IOperationsProgressDialog
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StopProgressDialog(self)
+
+proc SetOperation*(
+    self: ptr IOperationsProgressDialog, action: SPACTION
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOperation(self, action)
+
+proc SetMode*(
+    self: ptr IOperationsProgressDialog, mode: PDMODE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetMode(self, mode)
+
+proc UpdateProgress*(
+    self: ptr IOperationsProgressDialog,
+    ullPointsCurrent: ULONGLONG,
+    ullPointsTotal: ULONGLONG,
+    ullSizeCurrent: ULONGLONG,
+    ullSizeTotal: ULONGLONG,
+    ullItemsCurrent: ULONGLONG,
+    ullItemsTotal: ULONGLONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UpdateProgress(
+      self, ullPointsCurrent, ullPointsTotal, ullSizeCurrent, ullSizeTotal,
+      ullItemsCurrent, ullItemsTotal,
+    )
+
+proc UpdateLocations*(
+    self: ptr IOperationsProgressDialog,
+    psiSource: ptr IShellItem,
+    psiTarget: ptr IShellItem,
+    psiItem: ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UpdateLocations(self, psiSource, psiTarget, psiItem)
+
+proc ResetTimer*(self: ptr IOperationsProgressDialog): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResetTimer(self)
+
+proc PauseTimer*(self: ptr IOperationsProgressDialog): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PauseTimer(self)
+
+proc ResumeTimer*(self: ptr IOperationsProgressDialog): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResumeTimer(self)
+
+proc GetMilliseconds*(
+    self: ptr IOperationsProgressDialog,
+    pullElapsed: ptr ULONGLONG,
+    pullRemaining: ptr ULONGLONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMilliseconds(self, pullElapsed, pullRemaining)
+
+proc GetOperationStatus*(
+    self: ptr IOperationsProgressDialog, popstatus: ptr PDOPSTATUS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOperationStatus(self, popstatus)
+
+proc SetCancelInformation*(
+    self: ptr IIOCancelInformation, dwThreadID: DWORD, uMsgCancel: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCancelInformation(self, dwThreadID, uMsgCancel)
+
+proc GetCancelInformation*(
+    self: ptr IIOCancelInformation, pdwThreadID: ptr DWORD, puMsgCancel: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCancelInformation(self, pdwThreadID, puMsgCancel)
+
+proc Advise*(
+    self: ptr IFileOperation,
+    pfops: ptr IFileOperationProgressSink,
+    pdwCookie: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Advise(self, pfops, pdwCookie)
+
+proc Unadvise*(self: ptr IFileOperation, dwCookie: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unadvise(self, dwCookie)
+
+proc SetOperationFlags*(
+    self: ptr IFileOperation, dwOperationFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOperationFlags(self, dwOperationFlags)
+
+proc SetProgressMessage*(
+    self: ptr IFileOperation, pszMessage: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetProgressMessage(self, pszMessage)
+
+proc SetProgressDialog*(
+    self: ptr IFileOperation, popd: ptr IOperationsProgressDialog
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetProgressDialog(self, popd)
+
+proc SetProperties*(
+    self: ptr IFileOperation, pproparray: ptr IPropertyChangeArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetProperties(self, pproparray)
+
+proc SetOwnerWindow*(
+    self: ptr IFileOperation, hwndOwner: HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOwnerWindow(self, hwndOwner)
+
+proc ApplyPropertiesToItem*(
+    self: ptr IFileOperation, psiItem: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ApplyPropertiesToItem(self, psiItem)
+
+proc ApplyPropertiesToItems*(
+    self: ptr IFileOperation, punkItems: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ApplyPropertiesToItems(self, punkItems)
+
+proc RenameItem*(
+    self: ptr IFileOperation,
+    psiItem: ptr IShellItem,
+    pszNewName: LPCWSTR,
+    pfopsItem: ptr IFileOperationProgressSink,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RenameItem(self, psiItem, pszNewName, pfopsItem)
+
+proc RenameItems*(
+    self: ptr IFileOperation, pUnkItems: ptr IUnknown, pszNewName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RenameItems(self, pUnkItems, pszNewName)
+
+proc MoveItem*(
+    self: ptr IFileOperation,
+    psiItem: ptr IShellItem,
+    psiDestinationFolder: ptr IShellItem,
+    pszNewName: LPCWSTR,
+    pfopsItem: ptr IFileOperationProgressSink,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveItem(self, psiItem, psiDestinationFolder, pszNewName, pfopsItem)
+
+proc MoveItems*(
+    self: ptr IFileOperation,
+    punkItems: ptr IUnknown,
+    psiDestinationFolder: ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveItems(self, punkItems, psiDestinationFolder)
+
+proc CopyItem*(
+    self: ptr IFileOperation,
+    psiItem: ptr IShellItem,
+    psiDestinationFolder: ptr IShellItem,
+    pszCopyName: LPCWSTR,
+    pfopsItem: ptr IFileOperationProgressSink,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CopyItem(self, psiItem, psiDestinationFolder, pszCopyName, pfopsItem)
+
+proc CopyItems*(
+    self: ptr IFileOperation,
+    punkItems: ptr IUnknown,
+    psiDestinationFolder: ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CopyItems(self, punkItems, psiDestinationFolder)
+
+proc DeleteItem*(
+    self: ptr IFileOperation,
+    psiItem: ptr IShellItem,
+    pfopsItem: ptr IFileOperationProgressSink,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteItem(self, psiItem, pfopsItem)
+
+proc DeleteItems*(
+    self: ptr IFileOperation, punkItems: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteItems(self, punkItems)
+
+proc NewItem*(
+    self: ptr IFileOperation,
+    psiDestinationFolder: ptr IShellItem,
+    dwFileAttributes: DWORD,
+    pszName: LPCWSTR,
+    pszTemplateName: LPCWSTR,
+    pfopsItem: ptr IFileOperationProgressSink,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NewItem(
+      self, psiDestinationFolder, dwFileAttributes, pszName, pszTemplateName, pfopsItem
+    )
+
+proc PerformOperations*(self: ptr IFileOperation): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PerformOperations(self)
+
+proc GetAnyOperationsAborted*(
+    self: ptr IFileOperation, pfAnyOperationsAborted: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAnyOperationsAborted(self, pfAnyOperationsAborted)
+
+proc QueryObject*(
+    self: ptr IObjectProvider, guidObject: REFGUID, riid: REFIID, ppvOut: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryObject(self, guidObject, riid, ppvOut)
+
+proc FoundItem*(
+    self: ptr INamespaceWalkCB, psf: ptr IShellFolder, pidl: PCUITEMID_CHILD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FoundItem(self, psf, pidl)
+
+proc EnterFolder*(
+    self: ptr INamespaceWalkCB, psf: ptr IShellFolder, pidl: PCUITEMID_CHILD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnterFolder(self, psf, pidl)
+
+proc LeaveFolder*(
+    self: ptr INamespaceWalkCB, psf: ptr IShellFolder, pidl: PCUITEMID_CHILD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LeaveFolder(self, psf, pidl)
+
+proc InitializeProgressDialog*(
+    self: ptr INamespaceWalkCB, ppszTitle: ptr LPWSTR, ppszCancel: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeProgressDialog(self, ppszTitle, ppszCancel)
+
+proc WalkComplete*(
+    self: ptr INamespaceWalkCB2, hr: HRESULT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WalkComplete(self, hr)
+
+proc Walk*(
+    self: ptr INamespaceWalk,
+    punkToWalk: ptr IUnknown,
+    dwFlags: DWORD,
+    cDepth: int32,
+    pnswcb: ptr INamespaceWalkCB,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Walk(self, punkToWalk, dwFlags, cDepth, pnswcb)
+
+proc GetIDArrayResult*(
+    self: ptr INamespaceWalk, pcItems: ptr UINT, prgpidl: ptr ptr PIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIDArrayResult(self, pcItems, prgpidl)
+
+proc GetDropDownStatus*(
+    self: ptr IAutoCompleteDropDown, pdwFlags: ptr DWORD, ppwszString: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDropDownStatus(self, pdwFlags, ppwszString)
+
+proc ResetEnumerator*(self: ptr IAutoCompleteDropDown): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResetEnumerator(self)
+
+proc AddBand*(self: ptr IBandSite, punk: ptr IUnknown): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddBand(self, punk)
+
+proc EnumBands*(
+    self: ptr IBandSite, uBand: UINT, pdwBandID: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumBands(self, uBand, pdwBandID)
+
+proc QueryBand*(
+    self: ptr IBandSite,
+    dwBandID: DWORD,
+    ppstb: ptr ptr IDeskBand,
+    pdwState: ptr DWORD,
+    pszName: LPWSTR,
+    cchName: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryBand(self, dwBandID, ppstb, pdwState, pszName, cchName)
+
+proc SetBandState*(
+    self: ptr IBandSite, dwBandID: DWORD, dwMask: DWORD, dwState: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBandState(self, dwBandID, dwMask, dwState)
+
+proc RemoveBand*(self: ptr IBandSite, dwBandID: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveBand(self, dwBandID)
+
+proc GetBandObject*(
+    self: ptr IBandSite, dwBandID: DWORD, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBandObject(self, dwBandID, riid, ppv)
+
+proc SetBandSiteInfo*(
+    self: ptr IBandSite, pbsinfo: ptr BANDSITEINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBandSiteInfo(self, pbsinfo)
+
+proc GetBandSiteInfo*(
+    self: ptr IBandSite, pbsinfo: ptr BANDSITEINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBandSiteInfo(self, pbsinfo)
+
+proc Show*(self: ptr IModalWindow, hwndOwner: HWND): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Show(self, hwndOwner)
+
+proc GetSupportedActionTypes*(
+    self: ptr ICDBurnExt, pdwActions: ptr CDBE_ACTIONS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSupportedActionTypes(self, pdwActions)
+
+proc DoContextMenuPopup*(
+    self: ptr IContextMenuSite, punkContextMenu: ptr IUnknown, fFlags: UINT, pt: POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoContextMenuPopup(self, punkContextMenu, fFlags, pt)
+
+proc EnumReady*(self: ptr IEnumReadyCallback): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumReady(self)
+
+proc SetEnumReadyCallback*(
+    self: ptr IEnumerableView, percb: ptr IEnumReadyCallback
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetEnumReadyCallback(self, percb)
+
+proc CreateEnumIDListFromContents*(
+    self: ptr IEnumerableView,
+    pidlFolder: PCIDLIST_ABSOLUTE,
+    dwEnumFlags: DWORD,
+    ppEnumIDList: ptr ptr IEnumIDList,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateEnumIDListFromContents(
+      self, pidlFolder, dwEnumFlags, ppEnumIDList
+    )
+
+proc InsertItem*(
+    self: ptr IInsertItem, pidl: PCUIDLIST_RELATIVE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InsertItem(self, pidl)
+
+proc IsMenuMessage*(self: ptr IMenuBand, pmsg: ptr MSG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsMenuMessage(self, pmsg)
+
+proc TranslateMenuMessage*(
+    self: ptr IMenuBand, pmsg: ptr MSG, plRet: ptr LRESULT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateMenuMessage(self, pmsg, plRet)
+
+proc SetCascade*(
+    self: ptr IFolderBandPriv, fCascade: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCascade(self, fCascade)
+
+proc SetAccelerators*(
+    self: ptr IFolderBandPriv, fAccelerators: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAccelerators(self, fAccelerators)
+
+proc SetNoIcons*(
+    self: ptr IFolderBandPriv, fNoIcons: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetNoIcons(self, fNoIcons)
+
+proc SetNoText*(
+    self: ptr IFolderBandPriv, fNoText: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetNoText(self, fNoText)
+
+proc GetCheckState*(
+    self: ptr IRegTreeItem, pbCheck: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCheckState(self, pbCheck)
+
+proc SetCheckState*(
+    self: ptr IRegTreeItem, bCheck: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCheckState(self, bCheck)
+
+proc RecompressImage*(
+    self: ptr IImageRecompress,
+    psi: ptr IShellItem,
+    cx: int32,
+    cy: int32,
+    iQuality: int32,
+    pstg: ptr IStorage,
+    ppstrmOut: ptr ptr IStream,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RecompressImage(self, psi, cx, cy, iQuality, pstg, ppstrmOut)
+
+proc SetClient*(
+    self: ptr IDeskBar, punkClient: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetClient(self, punkClient)
+
+proc GetClient*(
+    self: ptr IDeskBar, ppunkClient: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetClient(self, ppunkClient)
+
+proc OnPosRectChangeDB*(self: ptr IDeskBar, prc: ptr RECT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnPosRectChangeDB(self, prc)
+
+proc Popup*(
+    self: ptr IMenuPopup, ppt: ptr POINTL, prcExclude: ptr RECTL, dwFlags: MP_POPUPFLAGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Popup(self, ppt, prcExclude, dwFlags)
+
+proc OnSelect*(self: ptr IMenuPopup, dwSelectType: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnSelect(self, dwSelectType)
+
+proc SetSubMenu*(
+    self: ptr IMenuPopup, pmp: ptr IMenuPopup, fSet: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSubMenu(self, pmp, fSet)
+
+proc GetAppName*(
+    self: ptr IFileIsInUse, ppszName: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAppName(self, ppszName)
+
+proc GetUsage*(
+    self: ptr IFileIsInUse, pfut: ptr FILE_USAGE_TYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUsage(self, pfut)
+
+proc GetCapabilities*(
+    self: ptr IFileIsInUse, pdwCapFlags: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCapabilities(self, pdwCapFlags)
+
+proc GetSwitchToHWND*(
+    self: ptr IFileIsInUse, phwnd: ptr HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSwitchToHWND(self, phwnd)
+
+proc CloseFile*(self: ptr IFileIsInUse): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CloseFile(self)
+
+proc OnFileOk*(
+    self: ptr IFileDialogEvents, pfd: ptr IFileDialog
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnFileOk(self, pfd)
+
+proc OnFolderChanging*(
+    self: ptr IFileDialogEvents, pfd: ptr IFileDialog, psiFolder: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnFolderChanging(self, pfd, psiFolder)
+
+proc OnFolderChange*(
+    self: ptr IFileDialogEvents, pfd: ptr IFileDialog
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnFolderChange(self, pfd)
+
+proc OnSelectionChange*(
+    self: ptr IFileDialogEvents, pfd: ptr IFileDialog
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnSelectionChange(self, pfd)
+
+proc OnShareViolation*(
+    self: ptr IFileDialogEvents,
+    pfd: ptr IFileDialog,
+    psi: ptr IShellItem,
+    pResponse: ptr FDE_SHAREVIOLATION_RESPONSE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnShareViolation(self, pfd, psi, pResponse)
+
+proc OnTypeChange*(
+    self: ptr IFileDialogEvents, pfd: ptr IFileDialog
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnTypeChange(self, pfd)
+
+proc OnOverwrite*(
+    self: ptr IFileDialogEvents,
+    pfd: ptr IFileDialog,
+    psi: ptr IShellItem,
+    pResponse: ptr FDE_OVERWRITE_RESPONSE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnOverwrite(self, pfd, psi, pResponse)
+
+proc SetFileTypes*(
+    self: ptr IFileDialog, cFileTypes: UINT, rgFilterSpec: ptr COMDLG_FILTERSPEC
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFileTypes(self, cFileTypes, rgFilterSpec)
+
+proc SetFileTypeIndex*(
+    self: ptr IFileDialog, iFileType: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFileTypeIndex(self, iFileType)
+
+proc GetFileTypeIndex*(
+    self: ptr IFileDialog, piFileType: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFileTypeIndex(self, piFileType)
+
+proc Advise*(
+    self: ptr IFileDialog, pfde: ptr IFileDialogEvents, pdwCookie: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Advise(self, pfde, pdwCookie)
+
+proc Unadvise*(self: ptr IFileDialog, dwCookie: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unadvise(self, dwCookie)
+
+proc SetOptions*(
+    self: ptr IFileDialog, fos: FILEOPENDIALOGOPTIONS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOptions(self, fos)
+
+proc GetOptions*(
+    self: ptr IFileDialog, pfos: ptr FILEOPENDIALOGOPTIONS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOptions(self, pfos)
+
+proc SetDefaultFolder*(
+    self: ptr IFileDialog, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDefaultFolder(self, psi)
+
+proc SetFolder*(
+    self: ptr IFileDialog, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFolder(self, psi)
+
+proc GetFolder*(
+    self: ptr IFileDialog, ppsi: ptr ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolder(self, ppsi)
+
+proc GetCurrentSelection*(
+    self: ptr IFileDialog, ppsi: ptr ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentSelection(self, ppsi)
+
+proc SetFileName*(self: ptr IFileDialog, pszName: LPCWSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFileName(self, pszName)
+
+proc GetFileName*(
+    self: ptr IFileDialog, pszName: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFileName(self, pszName)
+
+proc SetTitle*(self: ptr IFileDialog, pszTitle: LPCWSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTitle(self, pszTitle)
+
+proc SetOkButtonLabel*(
+    self: ptr IFileDialog, pszText: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOkButtonLabel(self, pszText)
+
+proc SetFileNameLabel*(
+    self: ptr IFileDialog, pszLabel: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFileNameLabel(self, pszLabel)
+
+proc GetResult*(
+    self: ptr IFileDialog, ppsi: ptr ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetResult(self, ppsi)
+
+proc AddPlace*(
+    self: ptr IFileDialog, psi: ptr IShellItem, fdap: FDAP
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddPlace(self, psi, fdap)
+
+proc SetDefaultExtension*(
+    self: ptr IFileDialog, pszDefaultExtension: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDefaultExtension(self, pszDefaultExtension)
+
+proc Close*(self: ptr IFileDialog, hr: HRESULT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Close(self, hr)
+
+proc SetClientGuid*(self: ptr IFileDialog, guid: REFGUID): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetClientGuid(self, guid)
+
+proc ClearClientData*(self: ptr IFileDialog): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ClearClientData(self)
+
+proc SetFilter*(
+    self: ptr IFileDialog, pFilter: ptr IShellItemFilter
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFilter(self, pFilter)
+
+proc SetSaveAsItem*(
+    self: ptr IFileSaveDialog, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSaveAsItem(self, psi)
+
+proc SetProperties*(
+    self: ptr IFileSaveDialog, pStore: ptr IPropertyStore
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetProperties(self, pStore)
+
+proc SetCollectedProperties*(
+    self: ptr IFileSaveDialog,
+    pList: ptr IPropertyDescriptionList,
+    fAppendDefault: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCollectedProperties(self, pList, fAppendDefault)
+
+proc GetProperties*(
+    self: ptr IFileSaveDialog, ppStore: ptr ptr IPropertyStore
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperties(self, ppStore)
+
+proc ApplyProperties*(
+    self: ptr IFileSaveDialog,
+    psi: ptr IShellItem,
+    pStore: ptr IPropertyStore,
+    hwnd: HWND,
+    pSink: ptr IFileOperationProgressSink,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ApplyProperties(self, psi, pStore, hwnd, pSink)
+
+proc GetResults*(
+    self: ptr IFileOpenDialog, ppenum: ptr ptr IShellItemArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetResults(self, ppenum)
+
+proc GetSelectedItems*(
+    self: ptr IFileOpenDialog, ppsai: ptr ptr IShellItemArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelectedItems(self, ppsai)
+
+proc EnableOpenDropDown*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnableOpenDropDown(self, dwIDCtl)
+
+proc AddMenu*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddMenu(self, dwIDCtl, pszLabel)
+
+proc AddPushButton*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddPushButton(self, dwIDCtl, pszLabel)
+
+proc AddComboBox*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddComboBox(self, dwIDCtl)
+
+proc AddRadioButtonList*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddRadioButtonList(self, dwIDCtl)
+
+proc AddCheckButton*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR, bChecked: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddCheckButton(self, dwIDCtl, pszLabel, bChecked)
+
+proc AddEditBox*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszText: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddEditBox(self, dwIDCtl, pszText)
+
+proc AddSeparator*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddSeparator(self, dwIDCtl)
+
+proc AddText*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszText: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddText(self, dwIDCtl, pszText)
+
+proc SetControlLabel*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetControlLabel(self, dwIDCtl, pszLabel)
+
+proc GetControlState*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pdwState: ptr CDCONTROLSTATEF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetControlState(self, dwIDCtl, pdwState)
+
+proc SetControlState*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwState: CDCONTROLSTATEF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetControlState(self, dwIDCtl, dwState)
+
+proc GetEditBoxText*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, ppszText: ptr ptr WCHAR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEditBoxText(self, dwIDCtl, ppszText)
+
+proc SetEditBoxText*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszText: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetEditBoxText(self, dwIDCtl, pszText)
+
+proc GetCheckButtonState*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pbChecked: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCheckButtonState(self, dwIDCtl, pbChecked)
+
+proc SetCheckButtonState*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, bChecked: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCheckButtonState(self, dwIDCtl, bChecked)
+
+proc AddControlItem*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD, pszLabel: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddControlItem(self, dwIDCtl, dwIDItem, pszLabel)
+
+proc RemoveControlItem*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveControlItem(self, dwIDCtl, dwIDItem)
+
+proc RemoveAllControlItems*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveAllControlItems(self, dwIDCtl)
+
+proc GetControlItemState*(
+    self: ptr IFileDialogCustomize,
+    dwIDCtl: DWORD,
+    dwIDItem: DWORD,
+    pdwState: ptr CDCONTROLSTATEF,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetControlItemState(self, dwIDCtl, dwIDItem, pdwState)
+
+proc SetControlItemState*(
+    self: ptr IFileDialogCustomize,
+    dwIDCtl: DWORD,
+    dwIDItem: DWORD,
+    dwState: CDCONTROLSTATEF,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetControlItemState(self, dwIDCtl, dwIDItem, dwState)
+
+proc GetSelectedControlItem*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pdwIDItem: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelectedControlItem(self, dwIDCtl, pdwIDItem)
+
+proc SetSelectedControlItem*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSelectedControlItem(self, dwIDCtl, dwIDItem)
+
+proc StartVisualGroup*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, pszLabel: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StartVisualGroup(self, dwIDCtl, pszLabel)
+
+proc EndVisualGroup*(self: ptr IFileDialogCustomize): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EndVisualGroup(self)
+
+proc MakeProminent*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MakeProminent(self, dwIDCtl)
+
+proc SetControlItemText*(
+    self: ptr IFileDialogCustomize, dwIDCtl: DWORD, dwIDItem: DWORD, pszLabel: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetControlItemText(self, dwIDCtl, dwIDItem, pszLabel)
+
+proc OnItemSelected*(
+    self: ptr IFileDialogControlEvents,
+    pfdc: ptr IFileDialogCustomize,
+    dwIDCtl: DWORD,
+    dwIDItem: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnItemSelected(self, pfdc, dwIDCtl, dwIDItem)
+
+proc OnButtonClicked*(
+    self: ptr IFileDialogControlEvents, pfdc: ptr IFileDialogCustomize, dwIDCtl: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnButtonClicked(self, pfdc, dwIDCtl)
+
+proc OnCheckButtonToggled*(
+    self: ptr IFileDialogControlEvents,
+    pfdc: ptr IFileDialogCustomize,
+    dwIDCtl: DWORD,
+    bChecked: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnCheckButtonToggled(self, pfdc, dwIDCtl, bChecked)
+
+proc OnControlActivating*(
+    self: ptr IFileDialogControlEvents, pfdc: ptr IFileDialogCustomize, dwIDCtl: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnControlActivating(self, pfdc, dwIDCtl)
+
+proc SetCancelButtonLabel*(
+    self: ptr IFileDialog2, pszLabel: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCancelButtonLabel(self, pszLabel)
+
+proc SetNavigationRoot*(
+    self: ptr IFileDialog2, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetNavigationRoot(self, psi)
+
+proc QueryCurrentDefault*(
+    self: ptr IApplicationAssociationRegistration,
+    pszQuery: LPCWSTR,
+    atQueryType: ASSOCIATIONTYPE,
+    alQueryLevel: ASSOCIATIONLEVEL,
+    ppszAssociation: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryCurrentDefault(
+      self, pszQuery, atQueryType, alQueryLevel, ppszAssociation
+    )
+
+proc QueryAppIsDefault*(
+    self: ptr IApplicationAssociationRegistration,
+    pszQuery: LPCWSTR,
+    atQueryType: ASSOCIATIONTYPE,
+    alQueryLevel: ASSOCIATIONLEVEL,
+    pszAppRegistryName: LPCWSTR,
+    pfDefault: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryAppIsDefault(
+      self, pszQuery, atQueryType, alQueryLevel, pszAppRegistryName, pfDefault
+    )
+
+proc QueryAppIsDefaultAll*(
+    self: ptr IApplicationAssociationRegistration,
+    alQueryLevel: ASSOCIATIONLEVEL,
+    pszAppRegistryName: LPCWSTR,
+    pfDefault: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryAppIsDefaultAll(self, alQueryLevel, pszAppRegistryName, pfDefault)
+
+proc SetAppAsDefault*(
+    self: ptr IApplicationAssociationRegistration,
+    pszAppRegistryName: LPCWSTR,
+    pszSet: LPCWSTR,
+    atSetType: ASSOCIATIONTYPE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAppAsDefault(self, pszAppRegistryName, pszSet, atSetType)
+
+proc SetAppAsDefaultAll*(
+    self: ptr IApplicationAssociationRegistration, pszAppRegistryName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAppAsDefaultAll(self, pszAppRegistryName)
+
+proc ClearUserAssociations*(
+    self: ptr IApplicationAssociationRegistration
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ClearUserAssociations(self)
+
+proc LaunchAdvancedAssociationUI*(
+    self: ptr IApplicationAssociationRegistrationUI, pszAppRegistryName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LaunchAdvancedAssociationUI(self, pszAppRegistryName)
+
+proc SetItemAlloc*(
+    self: ptr IDelegateFolder, pmalloc: ptr IMalloc
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetItemAlloc(self, pmalloc)
+
+proc GetFrameOptions*(
+    self: ptr IBrowserFrameOptions,
+    dwMask: BROWSERFRAMEOPTIONS,
+    pdwOptions: ptr BROWSERFRAMEOPTIONS,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFrameOptions(self, dwMask, pdwOptions)
+
+proc EvaluateNewWindow*(
+    self: ptr INewWindowManager,
+    pszUrl: LPCWSTR,
+    pszName: LPCWSTR,
+    pszUrlContext: LPCWSTR,
+    pszFeatures: LPCWSTR,
+    fReplace: WINBOOL,
+    dwFlags: DWORD,
+    dwUserActionTime: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EvaluateNewWindow(
+      self, pszUrl, pszName, pszUrlContext, pszFeatures, fReplace, dwFlags,
+      dwUserActionTime,
+    )
+
+proc SetClientTitle*(
+    self: ptr IAttachmentExecute, pszTitle: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetClientTitle(self, pszTitle)
+
+proc SetClientGuid*(
+    self: ptr IAttachmentExecute, guid: REFGUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetClientGuid(self, guid)
+
+proc SetLocalPath*(
+    self: ptr IAttachmentExecute, pszLocalPath: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetLocalPath(self, pszLocalPath)
+
+proc SetFileName*(
+    self: ptr IAttachmentExecute, pszFileName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFileName(self, pszFileName)
+
+proc SetSource*(
+    self: ptr IAttachmentExecute, pszSource: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSource(self, pszSource)
+
+proc SetReferrer*(
+    self: ptr IAttachmentExecute, pszReferrer: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetReferrer(self, pszReferrer)
+
+proc CheckPolicy*(self: ptr IAttachmentExecute): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CheckPolicy(self)
+
+proc Prompt*(
+    self: ptr IAttachmentExecute,
+    hwnd: HWND,
+    prompt: ATTACHMENT_PROMPT,
+    paction: ptr ATTACHMENT_ACTION,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Prompt(self, hwnd, prompt, paction)
+
+proc Save*(self: ptr IAttachmentExecute): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Save(self)
+
+proc Execute*(
+    self: ptr IAttachmentExecute, hwnd: HWND, pszVerb: LPCWSTR, phProcess: ptr HANDLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Execute(self, hwnd, pszVerb, phProcess)
+
+proc SaveWithUI*(self: ptr IAttachmentExecute, hwnd: HWND): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SaveWithUI(self, hwnd)
+
+proc ClearClientState*(self: ptr IAttachmentExecute): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ClearClientState(self)
+
+proc CallbackSM*(
+    self: ptr IShellMenuCallback,
+    psmd: LPSMDATA,
+    uMsg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CallbackSM(self, psmd, uMsg, wParam, lParam)
+
+proc Initialize*(
+    self: ptr IShellMenu,
+    psmc: ptr IShellMenuCallback,
+    uId: UINT,
+    uIdAncestor: UINT,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, psmc, uId, uIdAncestor, dwFlags)
+
+proc GetMenuInfo*(
+    self: ptr IShellMenu,
+    ppsmc: ptr ptr IShellMenuCallback,
+    puId: ptr UINT,
+    puIdAncestor: ptr UINT,
+    pdwFlags: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMenuInfo(self, ppsmc, puId, puIdAncestor, pdwFlags)
+
+proc SetShellFolder*(
+    self: ptr IShellMenu,
+    psf: ptr IShellFolder,
+    pidlFolder: PCIDLIST_ABSOLUTE,
+    hKey: HKEY,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetShellFolder(self, psf, pidlFolder, hKey, dwFlags)
+
+proc GetShellFolder*(
+    self: ptr IShellMenu,
+    pdwFlags: ptr DWORD,
+    ppidl: ptr PIDLIST_ABSOLUTE,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetShellFolder(self, pdwFlags, ppidl, riid, ppv)
+
+proc SetMenu*(
+    self: ptr IShellMenu, hmenu: HMENU, hwnd: HWND, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetMenu(self, hmenu, hwnd, dwFlags)
+
+proc GetMenu*(
+    self: ptr IShellMenu, phmenu: ptr HMENU, phwnd: ptr HWND, pdwFlags: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMenu(self, phmenu, phwnd, pdwFlags)
+
+proc InvalidateItem*(
+    self: ptr IShellMenu, psmd: LPSMDATA, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InvalidateItem(self, psmd, dwFlags)
+
+proc GetState*(self: ptr IShellMenu, psmd: LPSMDATA): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetState(self, psmd)
+
+proc SetMenuToolbar*(
+    self: ptr IShellMenu, punk: ptr IUnknown, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetMenuToolbar(self, punk, dwFlags)
+
+proc Run*(self: ptr IShellRunDll, pszArgs: LPCWSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Run(self, pszArgs)
+
+proc GetId*(
+    self: ptr IKnownFolder, pkfid: ptr KNOWNFOLDERID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetId(self, pkfid)
+
+proc GetCategory*(
+    self: ptr IKnownFolder, pCategory: ptr KF_CATEGORY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCategory(self, pCategory)
+
+proc GetShellItem*(
+    self: ptr IKnownFolder, dwFlags: DWORD, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetShellItem(self, dwFlags, riid, ppv)
+
+proc GetPath*(
+    self: ptr IKnownFolder, dwFlags: DWORD, ppszPath: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPath(self, dwFlags, ppszPath)
+
+proc SetPath*(
+    self: ptr IKnownFolder, dwFlags: DWORD, pszPath: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPath(self, dwFlags, pszPath)
+
+proc GetIDList*(
+    self: ptr IKnownFolder, dwFlags: DWORD, ppidl: ptr PIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIDList(self, dwFlags, ppidl)
+
+proc GetFolderType*(
+    self: ptr IKnownFolder, pftid: ptr FOLDERTYPEID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolderType(self, pftid)
+
+proc GetRedirectionCapabilities*(
+    self: ptr IKnownFolder, pCapabilities: ptr KF_REDIRECTION_CAPABILITIES
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRedirectionCapabilities(self, pCapabilities)
+
+proc GetFolderDefinition*(
+    self: ptr IKnownFolder, pKFD: ptr KNOWNFOLDER_DEFINITION
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolderDefinition(self, pKFD)
+
+proc FolderIdFromCsidl*(
+    self: ptr IKnownFolderManager, nCsidl: int32, pfid: ptr KNOWNFOLDERID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FolderIdFromCsidl(self, nCsidl, pfid)
+
+proc FolderIdToCsidl*(
+    self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID, pnCsidl: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FolderIdToCsidl(self, rfid, pnCsidl)
+
+proc GetFolderIds*(
+    self: ptr IKnownFolderManager, ppKFId: ptr ptr KNOWNFOLDERID, pCount: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolderIds(self, ppKFId, pCount)
+
+proc GetFolder*(
+    self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID, ppkf: ptr ptr IKnownFolder
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolder(self, rfid, ppkf)
+
+proc GetFolderByName*(
+    self: ptr IKnownFolderManager, pszCanonicalName: LPCWSTR, ppkf: ptr ptr IKnownFolder
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolderByName(self, pszCanonicalName, ppkf)
+
+proc RegisterFolder*(
+    self: ptr IKnownFolderManager,
+    rfid: REFKNOWNFOLDERID,
+    pKFD: ptr KNOWNFOLDER_DEFINITION,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterFolder(self, rfid, pKFD)
+
+proc UnregisterFolder*(
+    self: ptr IKnownFolderManager, rfid: REFKNOWNFOLDERID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnregisterFolder(self, rfid)
+
+proc FindFolderFromPath*(
+    self: ptr IKnownFolderManager,
+    pszPath: LPCWSTR,
+    mode: FFFP_MODE,
+    ppkf: ptr ptr IKnownFolder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindFolderFromPath(self, pszPath, mode, ppkf)
+
+proc FindFolderFromIDList*(
+    self: ptr IKnownFolderManager, pidl: PCIDLIST_ABSOLUTE, ppkf: ptr ptr IKnownFolder
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindFolderFromIDList(self, pidl, ppkf)
+
+proc Redirect*(
+    self: ptr IKnownFolderManager,
+    rfid: REFKNOWNFOLDERID,
+    hwnd: HWND,
+    flags: KF_REDIRECT_FLAGS,
+    pszTargetPath: LPCWSTR,
+    cFolders: UINT,
+    pExclusion: ptr KNOWNFOLDERID,
+    ppszError: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Redirect(
+      self, rfid, hwnd, flags, pszTargetPath, cFolders, pExclusion, ppszError
+    )
+
+proc CreateShare*(
+    self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID, role: SHARE_ROLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateShare(self, dsid, role)
+
+proc DeleteShare*(
+    self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteShare(self, dsid)
+
+proc ShareExists*(
+    self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShareExists(self, dsid)
+
+proc GetSharePermissions*(
+    self: ptr ISharingConfigurationManager, dsid: DEF_SHARE_ID, pRole: ptr SHARE_ROLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSharePermissions(self, dsid, pRole)
+
+proc SharePrinters*(
+    self: ptr ISharingConfigurationManager
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SharePrinters(self)
+
+proc StopSharingPrinters*(
+    self: ptr ISharingConfigurationManager
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StopSharingPrinters(self)
+
+proc ArePrintersShared*(
+    self: ptr ISharingConfigurationManager
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ArePrintersShared(self)
+
+proc AreSnapshotsAvailable*(
+    self: ptr IPreviousVersionsInfo,
+    pszPath: LPCWSTR,
+    fOkToBeSlow: WINBOOL,
+    pfAvailable: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AreSnapshotsAvailable(self, pszPath, fOkToBeSlow, pfAvailable)
+
+proc GetItemIDList*(
+    self: ptr IRelatedItem, ppidl: ptr PIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItemIDList(self, ppidl)
+
+proc GetItem*(
+    self: ptr IRelatedItem, ppsi: ptr ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItem(self, ppsi)
+
+proc GetDestinationStream*(
+    self: ptr IDestinationStreamFactory, ppstm: ptr ptr IStream
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDestinationStream(self, ppstm)
+
+proc IncludeItems*(
+    self: ptr INewMenuClient, pflags: ptr NMCII_FLAGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IncludeItems(self, pflags)
+
+proc SelectAndEditItem*(
+    self: ptr INewMenuClient, pidlItem: PCIDLIST_ABSOLUTE, flags: NMCSAEI_FLAGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SelectAndEditItem(self, pidlItem, flags)
+
+proc Initialize*(
+    self: ptr IInitializeWithBindCtx, pbc: ptr IBindCtx
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pbc)
+
+proc IncludeItem*(
+    self: ptr IShellItemFilter, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IncludeItem(self, psi)
+
+proc GetEnumFlagsForItem*(
+    self: ptr IShellItemFilter, psi: ptr IShellItem, pgrfFlags: ptr SHCONTF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEnumFlagsForItem(self, psi, pgrfFlags)
+
+proc Initialize*(
+    self: ptr INameSpaceTreeControl,
+    hwndParent: HWND,
+    prc: ptr RECT,
+    nsctsFlags: NSTCSTYLE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, hwndParent, prc, nsctsFlags)
+
+proc TreeAdvise*(
+    self: ptr INameSpaceTreeControl, punk: ptr IUnknown, pdwCookie: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TreeAdvise(self, punk, pdwCookie)
+
+proc TreeUnadvise*(
+    self: ptr INameSpaceTreeControl, dwCookie: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TreeUnadvise(self, dwCookie)
+
+proc AppendRoot*(
+    self: ptr INameSpaceTreeControl,
+    psiRoot: ptr IShellItem,
+    grfEnumFlags: SHCONTF,
+    grfRootStyle: NSTCROOTSTYLE,
+    pif: ptr IShellItemFilter,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AppendRoot(self, psiRoot, grfEnumFlags, grfRootStyle, pif)
+
+proc InsertRoot*(
+    self: ptr INameSpaceTreeControl,
+    iIndex: int32,
+    psiRoot: ptr IShellItem,
+    grfEnumFlags: SHCONTF,
+    grfRootStyle: NSTCROOTSTYLE,
+    pif: ptr IShellItemFilter,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InsertRoot(self, iIndex, psiRoot, grfEnumFlags, grfRootStyle, pif)
+
+proc RemoveRoot*(
+    self: ptr INameSpaceTreeControl, psiRoot: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveRoot(self, psiRoot)
+
+proc RemoveAllRoots*(self: ptr INameSpaceTreeControl): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveAllRoots(self)
+
+proc GetRootItems*(
+    self: ptr INameSpaceTreeControl, ppsiaRootItems: ptr ptr IShellItemArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRootItems(self, ppsiaRootItems)
+
+proc SetItemState*(
+    self: ptr INameSpaceTreeControl,
+    psi: ptr IShellItem,
+    nstcisMask: NSTCITEMSTATE,
+    nstcisFlags: NSTCITEMSTATE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetItemState(self, psi, nstcisMask, nstcisFlags)
+
+proc GetItemState*(
+    self: ptr INameSpaceTreeControl,
+    psi: ptr IShellItem,
+    nstcisMask: NSTCITEMSTATE,
+    pnstcisFlags: ptr NSTCITEMSTATE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItemState(self, psi, nstcisMask, pnstcisFlags)
+
+proc GetSelectedItems*(
+    self: ptr INameSpaceTreeControl, psiaItems: ptr ptr IShellItemArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelectedItems(self, psiaItems)
+
+proc GetItemCustomState*(
+    self: ptr INameSpaceTreeControl, psi: ptr IShellItem, piStateNumber: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItemCustomState(self, psi, piStateNumber)
+
+proc SetItemCustomState*(
+    self: ptr INameSpaceTreeControl, psi: ptr IShellItem, iStateNumber: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetItemCustomState(self, psi, iStateNumber)
+
+proc EnsureItemVisible*(
+    self: ptr INameSpaceTreeControl, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnsureItemVisible(self, psi)
+
+proc SetTheme*(
+    self: ptr INameSpaceTreeControl, pszTheme: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTheme(self, pszTheme)
+
+proc GetNextItem*(
+    self: ptr INameSpaceTreeControl,
+    psi: ptr IShellItem,
+    nstcgi: NSTCGNI,
+    ppsiNext: ptr ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNextItem(self, psi, nstcgi, ppsiNext)
+
+proc HitTest*(
+    self: ptr INameSpaceTreeControl, ppt: ptr POINT, ppsiOut: ptr ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HitTest(self, ppt, ppsiOut)
+
+proc GetItemRect*(
+    self: ptr INameSpaceTreeControl, psi: ptr IShellItem, prect: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItemRect(self, psi, prect)
+
+proc CollapseAll*(self: ptr INameSpaceTreeControl): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CollapseAll(self)
+
+proc SetControlStyle*(
+    self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE, nstcsStyle: NSTCSTYLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetControlStyle(self, nstcsMask, nstcsStyle)
+
+proc GetControlStyle*(
+    self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE, pnstcsStyle: ptr NSTCSTYLE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetControlStyle(self, nstcsMask, pnstcsStyle)
+
+proc SetControlStyle2*(
+    self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE2, nstcsStyle: NSTCSTYLE2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetControlStyle2(self, nstcsMask, nstcsStyle)
+
+proc GetControlStyle2*(
+    self: ptr INameSpaceTreeControl2, nstcsMask: NSTCSTYLE2, pnstcsStyle: ptr NSTCSTYLE2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetControlStyle2(self, nstcsMask, pnstcsStyle)
+
+proc OnItemClick*(
+    self: ptr INameSpaceTreeControlEvents,
+    psi: ptr IShellItem,
+    nstceHitTest: NSTCEHITTEST,
+    nstceClickType: NSTCECLICKTYPE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnItemClick(self, psi, nstceHitTest, nstceClickType)
+
+proc OnPropertyItemCommit*(
+    self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnPropertyItemCommit(self, psi)
+
+proc OnItemStateChanging*(
+    self: ptr INameSpaceTreeControlEvents,
+    psi: ptr IShellItem,
+    nstcisMask: NSTCITEMSTATE,
+    nstcisState: NSTCITEMSTATE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnItemStateChanging(self, psi, nstcisMask, nstcisState)
+
+proc OnItemStateChanged*(
+    self: ptr INameSpaceTreeControlEvents,
+    psi: ptr IShellItem,
+    nstcisMask: NSTCITEMSTATE,
+    nstcisState: NSTCITEMSTATE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnItemStateChanged(self, psi, nstcisMask, nstcisState)
+
+proc OnSelectionChanged*(
+    self: ptr INameSpaceTreeControlEvents, psiaSelection: ptr IShellItemArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnSelectionChanged(self, psiaSelection)
+
+proc OnKeyboardInput*(
+    self: ptr INameSpaceTreeControlEvents, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnKeyboardInput(self, uMsg, wParam, lParam)
+
+proc OnBeforeExpand*(
+    self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnBeforeExpand(self, psi)
+
+proc OnAfterExpand*(
+    self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnAfterExpand(self, psi)
+
+proc OnBeginLabelEdit*(
+    self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnBeginLabelEdit(self, psi)
+
+proc OnEndLabelEdit*(
+    self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnEndLabelEdit(self, psi)
+
+proc OnGetToolTip*(
+    self: ptr INameSpaceTreeControlEvents,
+    psi: ptr IShellItem,
+    pszTip: LPWSTR,
+    cchTip: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnGetToolTip(self, psi, pszTip, cchTip)
+
+proc OnBeforeItemDelete*(
+    self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnBeforeItemDelete(self, psi)
+
+proc OnItemAdded*(
+    self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, fIsRoot: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnItemAdded(self, psi, fIsRoot)
+
+proc OnItemDeleted*(
+    self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem, fIsRoot: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnItemDeleted(self, psi, fIsRoot)
+
+proc OnBeforeContextMenu*(
+    self: ptr INameSpaceTreeControlEvents,
+    psi: ptr IShellItem,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnBeforeContextMenu(self, psi, riid, ppv)
+
+proc OnAfterContextMenu*(
+    self: ptr INameSpaceTreeControlEvents,
+    psi: ptr IShellItem,
+    pcmIn: ptr IContextMenu,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnAfterContextMenu(self, psi, pcmIn, riid, ppv)
+
+proc OnBeforeStateImageChange*(
+    self: ptr INameSpaceTreeControlEvents, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnBeforeStateImageChange(self, psi)
+
+proc OnGetDefaultIconIndex*(
+    self: ptr INameSpaceTreeControlEvents,
+    psi: ptr IShellItem,
+    piDefaultIcon: ptr int32,
+    piOpenIcon: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnGetDefaultIconIndex(self, psi, piDefaultIcon, piOpenIcon)
+
+proc OnDragEnter*(
+    self: ptr INameSpaceTreeControlDropHandler,
+    psiOver: ptr IShellItem,
+    psiaData: ptr IShellItemArray,
+    fOutsideSource: WINBOOL,
+    grfKeyState: DWORD,
+    pdwEffect: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDragEnter(
+      self, psiOver, psiaData, fOutsideSource, grfKeyState, pdwEffect
+    )
+
+proc OnDragOver*(
+    self: ptr INameSpaceTreeControlDropHandler,
+    psiOver: ptr IShellItem,
+    psiaData: ptr IShellItemArray,
+    grfKeyState: DWORD,
+    pdwEffect: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDragOver(self, psiOver, psiaData, grfKeyState, pdwEffect)
+
+proc OnDragPosition*(
+    self: ptr INameSpaceTreeControlDropHandler,
+    psiOver: ptr IShellItem,
+    psiaData: ptr IShellItemArray,
+    iNewPosition: int32,
+    iOldPosition: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDragPosition(self, psiOver, psiaData, iNewPosition, iOldPosition)
+
+proc OnDrop*(
+    self: ptr INameSpaceTreeControlDropHandler,
+    psiOver: ptr IShellItem,
+    psiaData: ptr IShellItemArray,
+    iPosition: int32,
+    grfKeyState: DWORD,
+    pdwEffect: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDrop(self, psiOver, psiaData, iPosition, grfKeyState, pdwEffect)
+
+proc OnDropPosition*(
+    self: ptr INameSpaceTreeControlDropHandler,
+    psiOver: ptr IShellItem,
+    psiaData: ptr IShellItemArray,
+    iNewPosition: int32,
+    iOldPosition: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDropPosition(self, psiOver, psiaData, iNewPosition, iOldPosition)
+
+proc OnDragLeave*(
+    self: ptr INameSpaceTreeControlDropHandler, psiOver: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDragLeave(self, psiOver)
+
+proc OnGetDefaultAccessibilityAction*(
+    self: ptr INameSpaceTreeAccessible,
+    psi: ptr IShellItem,
+    pbstrDefaultAction: ptr BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnGetDefaultAccessibilityAction(self, psi, pbstrDefaultAction)
+
+proc OnDoDefaultAccessibilityAction*(
+    self: ptr INameSpaceTreeAccessible, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnDoDefaultAccessibilityAction(self, psi)
+
+proc OnGetAccessibilityRole*(
+    self: ptr INameSpaceTreeAccessible, psi: ptr IShellItem, pvarRole: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnGetAccessibilityRole(self, psi, pvarRole)
+
+proc PrePaint*(
+    self: ptr INameSpaceTreeControlCustomDraw,
+    hdc: HDC,
+    prc: ptr RECT,
+    plres: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PrePaint(self, hdc, prc, plres)
+
+proc PostPaint*(
+    self: ptr INameSpaceTreeControlCustomDraw, hdc: HDC, prc: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PostPaint(self, hdc, prc)
+
+proc ItemPrePaint*(
+    self: ptr INameSpaceTreeControlCustomDraw,
+    hdc: HDC,
+    prc: ptr RECT,
+    pnstccdItem: ptr NSTCCUSTOMDRAW,
+    pclrText: ptr COLORREF,
+    pclrTextBk: ptr COLORREF,
+    plres: ptr LRESULT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ItemPrePaint(self, hdc, prc, pnstccdItem, pclrText, pclrTextBk, plres)
+
+proc ItemPostPaint*(
+    self: ptr INameSpaceTreeControlCustomDraw,
+    hdc: HDC,
+    prc: ptr RECT,
+    pnstccdItem: ptr NSTCCUSTOMDRAW,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ItemPostPaint(self, hdc, prc, pnstccdItem)
+
+proc GetFolderCapabilities*(
+    self: ptr INameSpaceTreeControlFolderCapabilities,
+    nfcMask: NSTCFOLDERCAPABILITIES,
+    pnfcValue: ptr NSTCFOLDERCAPABILITIES,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolderCapabilities(self, nfcMask, pnfcValue)
+
+proc SetWindow*(
+    self: ptr IPreviewHandler, hwnd: HWND, prc: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetWindow(self, hwnd, prc)
+
+proc SetRect*(self: ptr IPreviewHandler, prc: ptr RECT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetRect(self, prc)
+
+proc DoPreview*(self: ptr IPreviewHandler): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoPreview(self)
+
+proc Unload*(self: ptr IPreviewHandler): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unload(self)
+
+proc SetFocus*(self: ptr IPreviewHandler): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFocus(self)
+
+proc QueryFocus*(
+    self: ptr IPreviewHandler, phwnd: ptr HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryFocus(self, phwnd)
+
+proc TranslateAccelerator*(
+    self: ptr IPreviewHandler, pmsg: ptr MSG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateAccelerator(self, pmsg)
+
+proc GetWindowContext*(
+    self: ptr IPreviewHandlerFrame, pinfo: ptr PREVIEWHANDLERFRAMEINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetWindowContext(self, pinfo)
+
+proc TranslateAccelerator*(
+    self: ptr IPreviewHandlerFrame, pmsg: ptr MSG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateAccelerator(self, pmsg)
+
+proc ShowDeskBand*(
+    self: ptr ITrayDeskBand, clsid: REFCLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowDeskBand(self, clsid)
+
+proc HideDeskBand*(
+    self: ptr ITrayDeskBand, clsid: REFCLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HideDeskBand(self, clsid)
+
+proc IsDeskBandShown*(
+    self: ptr ITrayDeskBand, clsid: REFCLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDeskBandShown(self, clsid)
+
+proc DeskBandRegistrationChanged*(self: ptr ITrayDeskBand): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeskBandRegistrationChanged(self)
+
+proc CreateBand*(
+    self: ptr IBandHost,
+    rclsidBand: REFCLSID,
+    fAvailable: WINBOOL,
+    fVisible: WINBOOL,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateBand(self, rclsidBand, fAvailable, fVisible, riid, ppv)
+
+proc SetBandAvailability*(
+    self: ptr IBandHost, rclsidBand: REFCLSID, fAvailable: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBandAvailability(self, rclsidBand, fAvailable)
+
+proc DestroyBand*(
+    self: ptr IBandHost, rclsidBand: REFCLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DestroyBand(self, rclsidBand)
+
+proc GetPaneState*(
+    self: ptr IExplorerPaneVisibility, ep: REFEXPLORERPANE, peps: ptr EXPLORERPANESTATE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPaneState(self, ep, peps)
+
+proc CallBack*(
+    self: ptr IContextMenuCB,
+    psf: ptr IShellFolder,
+    hwndOwner: HWND,
+    pdtobj: ptr IDataObject,
+    uMsg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CallBack(self, psf, hwndOwner, pdtobj, uMsg, wParam, lParam)
+
+proc SetFlags*(
+    self: ptr IDefaultExtractIconInit, uFlags: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFlags(self, uFlags)
+
+proc SetKey*(
+    self: ptr IDefaultExtractIconInit, hkey: HKEY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetKey(self, hkey)
+
+proc SetNormalIcon*(
+    self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetNormalIcon(self, pszFile, iIcon)
+
+proc SetOpenIcon*(
+    self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOpenIcon(self, pszFile, iIcon)
+
+proc SetShortcutIcon*(
+    self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetShortcutIcon(self, pszFile, iIcon)
+
+proc SetDefaultIcon*(
+    self: ptr IDefaultExtractIconInit, pszFile: LPCWSTR, iIcon: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDefaultIcon(self, pszFile, iIcon)
+
+proc GetTitle*(
+    self: ptr IExplorerCommand, psiItemArray: ptr IShellItemArray, ppszName: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTitle(self, psiItemArray, ppszName)
+
+proc GetIcon*(
+    self: ptr IExplorerCommand, psiItemArray: ptr IShellItemArray, ppszIcon: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIcon(self, psiItemArray, ppszIcon)
+
+proc GetToolTip*(
+    self: ptr IExplorerCommand,
+    psiItemArray: ptr IShellItemArray,
+    ppszInfotip: ptr LPWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetToolTip(self, psiItemArray, ppszInfotip)
+
+proc GetCanonicalName*(
+    self: ptr IExplorerCommand, pguidCommandName: ptr GUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCanonicalName(self, pguidCommandName)
+
+proc GetState*(
+    self: ptr IExplorerCommand,
+    psiItemArray: ptr IShellItemArray,
+    fOkToBeSlow: WINBOOL,
+    pCmdState: ptr EXPCMDSTATE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetState(self, psiItemArray, fOkToBeSlow, pCmdState)
+
+proc Invoke*(
+    self: ptr IExplorerCommand, psiItemArray: ptr IShellItemArray, pbc: ptr IBindCtx
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Invoke(self, psiItemArray, pbc)
+
+proc GetFlags*(
+    self: ptr IExplorerCommand, pFlags: ptr EXPCMDFLAGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFlags(self, pFlags)
+
+proc EnumSubCommands*(
+    self: ptr IExplorerCommand, ppEnum: ptr ptr IEnumExplorerCommand
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumSubCommands(self, ppEnum)
+
+proc GetState*(
+    self: ptr IExplorerCommandState,
+    psiItemArray: ptr IShellItemArray,
+    fOkToBeSlow: WINBOOL,
+    pCmdState: ptr EXPCMDSTATE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetState(self, psiItemArray, fOkToBeSlow, pCmdState)
+
+proc Initialize*(
+    self: ptr IInitializeCommand, pszCommandName: LPCWSTR, ppb: ptr IPropertyBag
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pszCommandName, ppb)
+
+proc Next*(
+    self: ptr IEnumExplorerCommand,
+    celt: ULONG,
+    pUICommand: ptr ptr IExplorerCommand,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, pUICommand, pceltFetched)
+
+proc Skip*(self: ptr IEnumExplorerCommand, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IEnumExplorerCommand): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IEnumExplorerCommand, ppenum: ptr ptr IEnumExplorerCommand
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppenum)
+
+proc GetCommands*(
+    self: ptr IExplorerCommandProvider,
+    punkSite: ptr IUnknown,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCommands(self, punkSite, riid, ppv)
+
+proc GetCommand*(
+    self: ptr IExplorerCommandProvider,
+    rguidCommandId: REFGUID,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCommand(self, rguidCommandId, riid, ppv)
+
+proc Initialize*(
+    self: ptr IInitializeNetworkFolder,
+    pidl: PCIDLIST_ABSOLUTE,
+    pidlTarget: PCIDLIST_ABSOLUTE,
+    uDisplayType: UINT,
+    pszResName: LPCWSTR,
+    pszProvider: LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(
+      self, pidl, pidlTarget, uDisplayType, pszResName, pszProvider
+    )
+
+proc Open*(
+    self: ptr IOpenControlPanel,
+    pszName: LPCWSTR,
+    pszPage: LPCWSTR,
+    punkSite: ptr IUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Open(self, pszName, pszPage, punkSite)
+
+proc GetPath*(
+    self: ptr IOpenControlPanel, pszName: LPCWSTR, pszPath: LPWSTR, cchPath: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPath(self, pszName, pszPath, cchPath)
+
+proc GetCurrentView*(
+    self: ptr IOpenControlPanel, pView: ptr CPVIEW
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentView(self, pView)
+
+proc ComputerInfoChanged*(
+    self: ptr IComputerInfoChangeNotify
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ComputerInfoChanged(self)
+
+proc SetFindData*(
+    self: ptr IFileSystemBindData, pfd: ptr WIN32_FIND_DATAW
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFindData(self, pfd)
+
+proc GetFindData*(
+    self: ptr IFileSystemBindData, pfd: ptr WIN32_FIND_DATAW
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFindData(self, pfd)
+
+proc SetFileID*(
+    self: ptr IFileSystemBindData2, liFileID: LARGE_INTEGER
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFileID(self, liFileID)
+
+proc GetFileID*(
+    self: ptr IFileSystemBindData2, pliFileID: ptr LARGE_INTEGER
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFileID(self, pliFileID)
+
+proc SetJunctionCLSID*(
+    self: ptr IFileSystemBindData2, clsid: REFCLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetJunctionCLSID(self, clsid)
+
+proc GetJunctionCLSID*(
+    self: ptr IFileSystemBindData2, pclsid: ptr CLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetJunctionCLSID(self, pclsid)
+
+proc SetAppID*(
+    self: ptr ICustomDestinationList, pszAppID: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAppID(self, pszAppID)
+
+proc BeginList*(
+    self: ptr ICustomDestinationList,
+    pcMinSlots: ptr UINT,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeginList(self, pcMinSlots, riid, ppv)
+
+proc AppendCategory*(
+    self: ptr ICustomDestinationList, pszCategory: LPCWSTR, poa: ptr IObjectArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AppendCategory(self, pszCategory, poa)
+
+proc AppendKnownCategory*(
+    self: ptr ICustomDestinationList, category: KNOWNDESTCATEGORY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AppendKnownCategory(self, category)
+
+proc AddUserTasks*(
+    self: ptr ICustomDestinationList, poa: ptr IObjectArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddUserTasks(self, poa)
+
+proc CommitList*(self: ptr ICustomDestinationList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CommitList(self)
+
+proc GetRemovedDestinations*(
+    self: ptr ICustomDestinationList, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRemovedDestinations(self, riid, ppv)
+
+proc DeleteList*(
+    self: ptr ICustomDestinationList, pszAppID: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteList(self, pszAppID)
+
+proc AbortList*(self: ptr ICustomDestinationList): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AbortList(self)
+
+proc SetAppID*(
+    self: ptr IApplicationDestinations, pszAppID: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAppID(self, pszAppID)
+
+proc RemoveDestination*(
+    self: ptr IApplicationDestinations, punk: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveDestination(self, punk)
+
+proc RemoveAllDestinations*(
+    self: ptr IApplicationDestinations
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveAllDestinations(self)
+
+proc SetAppID*(
+    self: ptr IApplicationDocumentLists, pszAppID: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAppID(self, pszAppID)
+
+proc GetList*(
+    self: ptr IApplicationDocumentLists,
+    listtype: APPDOCLISTTYPE,
+    cItemsDesired: UINT,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetList(self, listtype, cItemsDesired, riid, ppv)
+
+proc SetAppID*(
+    self: ptr IObjectWithAppUserModelID, pszAppID: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAppID(self, pszAppID)
+
+proc GetAppID*(
+    self: ptr IObjectWithAppUserModelID, ppszAppID: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAppID(self, ppszAppID)
+
+proc SetProgID*(
+    self: ptr IObjectWithProgID, pszProgID: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetProgID(self, pszProgID)
+
+proc GetProgID*(
+    self: ptr IObjectWithProgID, ppszProgID: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProgID(self, ppszProgID)
+
+proc Update*(
+    self: ptr IUpdateIDList,
+    pbc: ptr IBindCtx,
+    pidlIn: PCUITEMID_CHILD,
+    ppidlOut: ptr PITEMID_CHILD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Update(self, pbc, pidlIn, ppidlOut)
+
+proc RunGadget*(
+    self: ptr IDesktopGadget, gadgetPath: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RunGadget(self, gadgetPath)
+
+proc SetWallpaper*(
+    self: ptr IDesktopWallpaper, monitorID: LPCWSTR, wallpaper: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetWallpaper(self, monitorID, wallpaper)
+
+proc GetWallpaper*(
+    self: ptr IDesktopWallpaper, monitorID: LPCWSTR, wallpaper: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetWallpaper(self, monitorID, wallpaper)
+
+proc GetMonitorDevicePathAt*(
+    self: ptr IDesktopWallpaper, monitorIndex: UINT, monitorID: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMonitorDevicePathAt(self, monitorIndex, monitorID)
+
+proc GetMonitorDevicePathCount*(
+    self: ptr IDesktopWallpaper, count: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMonitorDevicePathCount(self, count)
+
+proc GetMonitorRECT*(
+    self: ptr IDesktopWallpaper, monitorID: LPCWSTR, displayRect: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMonitorRECT(self, monitorID, displayRect)
+
+proc mSetBackgroundColor*(
+    self: ptr IDesktopWallpaper, color: COLORREF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBackgroundColor(self, color)
+
+proc GetBackgroundColor*(
+    self: ptr IDesktopWallpaper, color: ptr COLORREF
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBackgroundColor(self, color)
+
+proc SetPosition*(
+    self: ptr IDesktopWallpaper, position: DESKTOP_WALLPAPER_POSITION
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPosition(self, position)
+
+proc GetPosition*(
+    self: ptr IDesktopWallpaper, position: ptr DESKTOP_WALLPAPER_POSITION
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPosition(self, position)
+
+proc SetSlideshow*(
+    self: ptr IDesktopWallpaper, items: ptr IShellItemArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSlideshow(self, items)
+
+proc GetSlideshow*(
+    self: ptr IDesktopWallpaper, items: ptr ptr IShellItemArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSlideshow(self, items)
+
+proc SetSlideshowOptions*(
+    self: ptr IDesktopWallpaper, options: DESKTOP_SLIDESHOW_OPTIONS, slideshowTick: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSlideshowOptions(self, options, slideshowTick)
+
+proc GetSlideshowOptions*(
+    self: ptr IDesktopWallpaper,
+    options: ptr DESKTOP_SLIDESHOW_OPTIONS,
+    slideshowTick: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSlideshowOptions(self, options, slideshowTick)
+
+proc AdvanceSlideshow*(
+    self: ptr IDesktopWallpaper,
+    monitorID: LPCWSTR,
+    direction: DESKTOP_SLIDESHOW_DIRECTION,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AdvanceSlideshow(self, monitorID, direction)
+
+proc GetStatus*(
+    self: ptr IDesktopWallpaper, state: ptr DESKTOP_SLIDESHOW_STATE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetStatus(self, state)
+
+proc Enable*(self: ptr IDesktopWallpaper, enable: WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Enable(self, enable)
+
+proc IsMember*(self: ptr IHomeGroup, member: ptr WINBOOL): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsMember(self, member)
+
+proc ShowSharingWizard*(
+    self: ptr IHomeGroup, owner: HWND, sharingchoices: ptr HOMEGROUPSHARINGCHOICES
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowSharingWizard(self, owner, sharingchoices)
+
+proc Initialize*(
+    self: ptr IInitializeWithPropertyStore, pps: ptr IPropertyStore
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pps)
+
+proc GetResults*(
+    self: ptr IOpenSearchSource,
+    hwnd: HWND,
+    pszQuery: LPCWSTR,
+    dwStartIndex: DWORD,
+    dwCount: DWORD,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetResults(self, hwnd, pszQuery, dwStartIndex, dwCount, riid, ppv)
+
+proc LoadLibraryFromItem*(
+    self: ptr IShellLibrary, psiLibrary: ptr IShellItem, grfMode: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LoadLibraryFromItem(self, psiLibrary, grfMode)
+
+proc LoadLibraryFromKnownFolder*(
+    self: ptr IShellLibrary, kfidLibrary: REFKNOWNFOLDERID, grfMode: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LoadLibraryFromKnownFolder(self, kfidLibrary, grfMode)
+
+proc AddFolder*(
+    self: ptr IShellLibrary, psiLocation: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddFolder(self, psiLocation)
+
+proc RemoveFolder*(
+    self: ptr IShellLibrary, psiLocation: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveFolder(self, psiLocation)
+
+proc GetFolders*(
+    self: ptr IShellLibrary, lff: LIBRARYFOLDERFILTER, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolders(self, lff, riid, ppv)
+
+proc ResolveFolder*(
+    self: ptr IShellLibrary,
+    psiFolderToResolve: ptr IShellItem,
+    dwTimeout: DWORD,
+    riid: REFIID,
+    ppv: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ResolveFolder(self, psiFolderToResolve, dwTimeout, riid, ppv)
+
+proc GetDefaultSaveFolder*(
+    self: ptr IShellLibrary, dsft: DEFAULTSAVEFOLDERTYPE, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDefaultSaveFolder(self, dsft, riid, ppv)
+
+proc SetDefaultSaveFolder*(
+    self: ptr IShellLibrary, dsft: DEFAULTSAVEFOLDERTYPE, psi: ptr IShellItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDefaultSaveFolder(self, dsft, psi)
+
+proc GetOptions*(
+    self: ptr IShellLibrary, plofOptions: ptr LIBRARYOPTIONFLAGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOptions(self, plofOptions)
+
+proc SetOptions*(
+    self: ptr IShellLibrary, lofMask: LIBRARYOPTIONFLAGS, lofOptions: LIBRARYOPTIONFLAGS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOptions(self, lofMask, lofOptions)
+
+proc GetFolderType*(
+    self: ptr IShellLibrary, pftid: ptr FOLDERTYPEID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolderType(self, pftid)
+
+proc SetFolderType*(
+    self: ptr IShellLibrary, ftid: REFFOLDERTYPEID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFolderType(self, ftid)
+
+proc GetIcon*(
+    self: ptr IShellLibrary, ppszIcon: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIcon(self, ppszIcon)
+
+proc SetIcon*(self: ptr IShellLibrary, pszIcon: LPCWSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetIcon(self, pszIcon)
+
+proc Commit*(self: ptr IShellLibrary): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Commit(self)
+
+proc Save*(
+    self: ptr IShellLibrary,
+    psiFolderToSaveIn: ptr IShellItem,
+    pszLibraryName: LPCWSTR,
+    lsf: LIBRARYSAVEFLAGS,
+    ppsiSavedTo: ptr ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Save(self, psiFolderToSaveIn, pszLibraryName, lsf, ppsiSavedTo)
+
+proc SaveInKnownFolder*(
+    self: ptr IShellLibrary,
+    kfidToSaveIn: REFKNOWNFOLDERID,
+    pszLibraryName: LPCWSTR,
+    lsf: LIBRARYSAVEFLAGS,
+    ppsiSavedTo: ptr ptr IShellItem,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SaveInKnownFolder(self, kfidToSaveIn, pszLibraryName, lsf, ppsiSavedTo)
+
+proc OnPlaybackManagerEvent*(
+    self: ptr IPlaybackManagerEvents, dwSessionId: DWORD, mediaEvent: PBM_EVENT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnPlaybackManagerEvent(self, dwSessionId, mediaEvent)
+
+proc Advise*(
+    self: ptr IPlaybackManager,
+    `type`: PBM_SESSION_TYPE,
+    pEvents: ptr IPlaybackManagerEvents,
+    pdwSessionId: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Advise(self, `type`, pEvents, pdwSessionId)
+
+proc Unadvise*(
+    self: ptr IPlaybackManager, dwSessionId: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unadvise(self, dwSessionId)
+
+proc ChangeSessionState*(
+    self: ptr IPlaybackManager,
+    dwSessionId: DWORD,
+    state: PBM_PLAY_STATE,
+    mute: PBM_MUTE_STATE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ChangeSessionState(self, dwSessionId, state, mute)
+
+proc Initialize*(
+    self: ptr IDefaultFolderMenuInitialize,
+    hwnd: HWND,
+    pcmcb: ptr IContextMenuCB,
+    pidlFolder: PCIDLIST_ABSOLUTE,
+    psf: ptr IShellFolder,
+    cidl: UINT,
+    apidl: PCUITEMID_CHILD_ARRAY,
+    punkAssociation: ptr IUnknown,
+    cKeys: UINT,
+    aKeys: ptr HKEY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(
+      self, hwnd, pcmcb, pidlFolder, psf, cidl, apidl, punkAssociation, cKeys, aKeys
+    )
+
+proc SetMenuRestrictions*(
+    self: ptr IDefaultFolderMenuInitialize, dfmrValues: DEFAULT_FOLDER_MENU_RESTRICTIONS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetMenuRestrictions(self, dfmrValues)
+
+proc GetMenuRestrictions*(
+    self: ptr IDefaultFolderMenuInitialize,
+    dfmrMask: DEFAULT_FOLDER_MENU_RESTRICTIONS,
+    pdfmrValues: ptr DEFAULT_FOLDER_MENU_RESTRICTIONS,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMenuRestrictions(self, dfmrMask, pdfmrValues)
+
+proc SetHandlerClsid*(
+    self: ptr IDefaultFolderMenuInitialize, rclsid: REFCLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetHandlerClsid(self, rclsid)
+
+proc ActivateApplication*(
+    self: ptr IApplicationActivationManager,
+    appUserModelId: LPCWSTR,
+    arguments: LPCWSTR,
+    options: ACTIVATEOPTIONS,
+    processId: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ActivateApplication(self, appUserModelId, arguments, options, processId)
+
+proc ActivateForFile*(
+    self: ptr IApplicationActivationManager,
+    appUserModelId: LPCWSTR,
+    itemArray: ptr IShellItemArray,
+    verb: LPCWSTR,
+    processId: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ActivateForFile(self, appUserModelId, itemArray, verb, processId)
+
+proc ActivateForProtocol*(
+    self: ptr IApplicationActivationManager,
+    appUserModelId: LPCWSTR,
+    itemArray: ptr IShellItemArray,
+    processId: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ActivateForProtocol(self, appUserModelId, itemArray, processId)
+
+proc SupportsSelection*(self: ptr IAssocHandlerInvoker): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SupportsSelection(self)
+
+proc Invoke*(self: ptr IAssocHandlerInvoker): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Invoke(self)
+
+proc GetName*(self: ptr IAssocHandler, ppsz: ptr LPWSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetName(self, ppsz)
+
+proc GetUIName*(self: ptr IAssocHandler, ppsz: ptr LPWSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUIName(self, ppsz)
+
+proc GetIconLocation*(
+    self: ptr IAssocHandler, ppszPath: ptr LPWSTR, pIndex: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIconLocation(self, ppszPath, pIndex)
+
+proc IsRecommended*(self: ptr IAssocHandler): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsRecommended(self)
+
+proc MakeDefault*(
+    self: ptr IAssocHandler, pszDescription: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MakeDefault(self, pszDescription)
+
+proc Invoke*(
+    self: ptr IAssocHandler, pdo: ptr IDataObject
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Invoke(self, pdo)
+
+proc CreateInvoker*(
+    self: ptr IAssocHandler,
+    pdo: ptr IDataObject,
+    ppInvoker: ptr ptr IAssocHandlerInvoker,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInvoker(self, pdo, ppInvoker)
+
+proc Next*(
+    self: ptr IEnumAssocHandlers,
+    celt: ULONG,
+    rgelt: ptr ptr IAssocHandler,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
+
+proc GetDataObject*(
+    self: ptr IDataObjectProvider, dataObject: ptr ptr IDataObject
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDataObject(self, dataObject)
+
+proc SetDataObject*(
+    self: ptr IDataObjectProvider, dataObject: ptr IDataObject
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDataObject(self, dataObject)
+
+proc GetForWindow*(
+    self: ptr IDataTransferManagerInterop,
+    appWindow: HWND,
+    riid: REFIID,
+    dataTransferManager: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetForWindow(self, appWindow, riid, dataTransferManager)
+
+proc ShowShareUIForWindow*(
+    self: ptr IDataTransferManagerInterop, appWindow: HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowShareUIForWindow(self, appWindow)
+
+proc Showing*(
+    self: ptr IFrameworkInputPaneHandler,
+    prcInputPaneScreenLocation: ptr RECT,
+    fEnsureFocusedElementInView: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Showing(self, prcInputPaneScreenLocation, fEnsureFocusedElementInView)
+
+proc Hiding*(
+    self: ptr IFrameworkInputPaneHandler, fEnsureFocusedElementInView: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Hiding(self, fEnsureFocusedElementInView)
+
+proc Advise*(
+    self: ptr IFrameworkInputPane,
+    pWindow: ptr IUnknown,
+    pHandler: ptr IFrameworkInputPaneHandler,
+    pdwCookie: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Advise(self, pWindow, pHandler, pdwCookie)
+
+proc AdviseWithHWND*(
+    self: ptr IFrameworkInputPane,
+    hwnd: HWND,
+    pHandler: ptr IFrameworkInputPaneHandler,
+    pdwCookie: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AdviseWithHWND(self, hwnd, pHandler, pdwCookie)
+
+proc Unadvise*(
+    self: ptr IFrameworkInputPane, dwCookie: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unadvise(self, dwCookie)
+
+proc Location*(
+    self: ptr IFrameworkInputPane, prcInputPaneScreenLocation: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Location(self, prcInputPaneScreenLocation)
+
+proc GetSearchWindow*(
+    self: ptr ISearchableApplication, hwnd: ptr HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSearchWindow(self, hwnd)
+
+proc Undocked*(
+    self: ptr IAccessibilityDockingServiceCallback, undockReason: UNDOCK_REASON
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Undocked(self, undockReason)
+
+proc GetAvailableSize*(
+    self: ptr IAccessibilityDockingService,
+    hMonitor: HMONITOR,
+    pcxFixed: ptr UINT,
+    pcyMax: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAvailableSize(self, hMonitor, pcxFixed, pcyMax)
+
+proc DockWindow*(
+    self: ptr IAccessibilityDockingService,
+    hwnd: HWND,
+    hMonitor: HMONITOR,
+    cyRequested: UINT,
+    pCallback: ptr IAccessibilityDockingServiceCallback,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DockWindow(self, hwnd, hMonitor, cyRequested, pCallback)
+
+proc UndockWindow*(
+    self: ptr IAccessibilityDockingService, hwnd: HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UndockWindow(self, hwnd)
+
+proc AppVisibilityOnMonitorChanged*(
+    self: ptr IAppVisibilityEvents,
+    hMonitor: HMONITOR,
+    previousMode: MONITOR_APP_VISIBILITY,
+    currentMode: MONITOR_APP_VISIBILITY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AppVisibilityOnMonitorChanged(self, hMonitor, previousMode, currentMode)
+
+proc LauncherVisibilityChange*(
+    self: ptr IAppVisibilityEvents, currentVisibleState: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LauncherVisibilityChange(self, currentVisibleState)
+
+proc GetAppVisibilityOnMonitor*(
+    self: ptr IAppVisibility, hMonitor: HMONITOR, pMode: ptr MONITOR_APP_VISIBILITY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAppVisibilityOnMonitor(self, hMonitor, pMode)
+
+proc IsLauncherVisible*(
+    self: ptr IAppVisibility, pfVisible: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsLauncherVisible(self, pfVisible)
+
+proc Advise*(
+    self: ptr IAppVisibility, pCallback: ptr IAppVisibilityEvents, pdwCookie: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Advise(self, pCallback, pdwCookie)
+
+proc Unadvise*(self: ptr IAppVisibility, dwCookie: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Unadvise(self, dwCookie)
+
+proc OnStateChanged*(
+    self: ptr IPackageExecutionStateChangeNotification,
+    pszPackageFullName: LPCWSTR,
+    pesNewState: PACKAGE_EXECUTION_STATE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnStateChanged(self, pszPackageFullName, pesNewState)
+
+proc EnableDebugging*(
+    self: ptr IPackageDebugSettings,
+    packageFullName: LPCWSTR,
+    debuggerCommandLine: LPCWSTR,
+    environment: PZZWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnableDebugging(self, packageFullName, debuggerCommandLine, environment)
+
+proc DisableDebugging*(
+    self: ptr IPackageDebugSettings, packageFullName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DisableDebugging(self, packageFullName)
+
+proc Suspend*(
+    self: ptr IPackageDebugSettings, packageFullName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Suspend(self, packageFullName)
+
+proc Resume*(
+    self: ptr IPackageDebugSettings, packageFullName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Resume(self, packageFullName)
+
+proc TerminateAllProcesses*(
+    self: ptr IPackageDebugSettings, packageFullName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TerminateAllProcesses(self, packageFullName)
+
+proc SetTargetSessionId*(
+    self: ptr IPackageDebugSettings, sessionId: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTargetSessionId(self, sessionId)
+
+proc EnumerateBackgroundTasks*(
+    self: ptr IPackageDebugSettings,
+    packageFullName: LPCWSTR,
+    taskCount: ptr ULONG,
+    taskIds: ptr LPCGUID,
+    taskNames: ptr ptr LPCWSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnumerateBackgroundTasks(
+      self, packageFullName, taskCount, taskIds, taskNames
+    )
+
+proc ActivateBackgroundTask*(
+    self: ptr IPackageDebugSettings, taskId: LPCGUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ActivateBackgroundTask(self, taskId)
+
+proc StartServicing*(
+    self: ptr IPackageDebugSettings, packageFullName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StartServicing(self, packageFullName)
+
+proc StopServicing*(
+    self: ptr IPackageDebugSettings, packageFullName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StopServicing(self, packageFullName)
+
+proc StartSessionRedirection*(
+    self: ptr IPackageDebugSettings, packageFullName: LPCWSTR, sessionId: ULONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StartSessionRedirection(self, packageFullName, sessionId)
+
+proc StopSessionRedirection*(
+    self: ptr IPackageDebugSettings, packageFullName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StopSessionRedirection(self, packageFullName)
+
+proc GetPackageExecutionState*(
+    self: ptr IPackageDebugSettings,
+    packageFullName: LPCWSTR,
+    packageExecutionState: ptr PACKAGE_EXECUTION_STATE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPackageExecutionState(self, packageFullName, packageExecutionState)
+
+proc RegisterForPackageStateChanges*(
+    self: ptr IPackageDebugSettings,
+    packageFullName: LPCWSTR,
+    pPackageExecutionStateChangeNotification:
+      ptr IPackageExecutionStateChangeNotification,
+    pdwCookie: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterForPackageStateChanges(
+      self, packageFullName, pPackageExecutionStateChangeNotification, pdwCookie
+    )
+
+proc UnregisterForPackageStateChanges*(
+    self: ptr IPackageDebugSettings, dwCookie: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UnregisterForPackageStateChanges(self, dwCookie)
+
+proc GetValue*(
+    self: ptr IExecuteCommandApplicationHostEnvironment, pahe: ptr AHE_TYPE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetValue(self, pahe)
+
+proc GetUIMode*(
+    self: ptr IExecuteCommandHost, pUIMode: ptr EC_HOST_UI_MODE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUIMode(self, pUIMode)
+
+proc SetNativeDisplaySize*(
+    self: ptr IApplicationDesignModeSettings, sizeNativeDisplay: SIZE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetNativeDisplaySize(self, sizeNativeDisplay)
+
+proc SetScaleFactor*(
+    self: ptr IApplicationDesignModeSettings, scaleFactor: DEVICE_SCALE_FACTOR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetScaleFactor(self, scaleFactor)
+
+proc SetApplicationViewState*(
+    self: ptr IApplicationDesignModeSettings, viewState: APPLICATION_VIEW_STATE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetApplicationViewState(self, viewState)
+
+proc ComputeApplicationSize*(
+    self: ptr IApplicationDesignModeSettings, psizeApplication: ptr SIZE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ComputeApplicationSize(self, psizeApplication)
+
+proc IsApplicationViewStateSupported*(
+    self: ptr IApplicationDesignModeSettings,
+    viewState: APPLICATION_VIEW_STATE,
+    sizeNativeDisplay: SIZE,
+    scaleFactor: DEVICE_SCALE_FACTOR,
+    pfSupported: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsApplicationViewStateSupported(
+      self, viewState, sizeNativeDisplay, scaleFactor, pfSupported
+    )
+
+proc TriggerEdgeGesture*(
+    self: ptr IApplicationDesignModeSettings, edgeGestureKind: EDGE_GESTURE_KIND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TriggerEdgeGesture(self, edgeGestureKind)
+
+proc Initialize*(
+    self: ptr IInitializeWithWindow, hwnd: HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, hwnd)
+
+proc GetApplicationDisplayName*(
+    self: ptr IHandlerInfo, value: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetApplicationDisplayName(self, value)
+
+proc GetApplicationPublisher*(
+    self: ptr IHandlerInfo, value: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetApplicationPublisher(self, value)
+
+proc GetApplicationIconReference*(
+    self: ptr IHandlerInfo, value: ptr LPWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetApplicationIconReference(self, value)
+
+proc BeforeCoCreateInstance*(
+    self: ptr IHandlerActivationHost,
+    clsidHandler: REFCLSID,
+    itemsBeingActivated: ptr IShellItemArray,
+    handlerInfo: ptr IHandlerInfo,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeforeCoCreateInstance(
+      self, clsidHandler, itemsBeingActivated, handlerInfo
+    )
+
+proc BeforeCreateProcess*(
+    self: ptr IHandlerActivationHost,
+    applicationPath: LPCWSTR,
+    commandLine: LPCWSTR,
+    handlerInfo: ptr IHandlerInfo,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BeforeCreateProcess(self, applicationPath, commandLine, handlerInfo)
+
+proc GetIconLocation*(
+    self: ptr IExtractIconA,
+    uFlags: UINT,
+    pszIconFile: PSTR,
+    cchMax: UINT,
+    piIndex: ptr int32,
+    pwFlags: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIconLocation(self, uFlags, pszIconFile, cchMax, piIndex, pwFlags)
+
+proc Extract*(
+    self: ptr IExtractIconA,
+    pszFile: PCSTR,
+    nIconIndex: UINT,
+    phiconLarge: ptr HICON,
+    phiconSmall: ptr HICON,
+    nIconSize: UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Extract(self, pszFile, nIconIndex, phiconLarge, phiconSmall, nIconSize)
+
+proc GetIconLocation*(
+    self: ptr IExtractIconW,
+    uFlags: UINT,
+    pszIconFile: PWSTR,
+    cchMax: UINT,
+    piIndex: ptr int32,
+    pwFlags: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIconLocation(self, uFlags, pszIconFile, cchMax, piIndex, pwFlags)
+
+proc Extract*(
+    self: ptr IExtractIconW,
+    pszFile: PCWSTR,
+    nIconIndex: UINT,
+    phiconLarge: ptr HICON,
+    phiconSmall: ptr HICON,
+    nIconSize: UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Extract(self, pszFile, nIconIndex, phiconLarge, phiconSmall, nIconSize)
+
+proc IsMemberOf*(
+    self: ptr IShellIconOverlayIdentifier, pwszPath: PCWSTR, dwAttrib: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsMemberOf(self, pwszPath, dwAttrib)
+
+proc GetOverlayInfo*(
+    self: ptr IShellIconOverlayIdentifier,
+    pwszIconFile: PWSTR,
+    cchMax: int32,
+    pIndex: ptr int32,
+    pdwFlags: ptr DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOverlayInfo(self, pwszIconFile, cchMax, pIndex, pdwFlags)
+
+proc GetPriority*(
+    self: ptr IShellIconOverlayIdentifier, pIPriority: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPriority(self, pIPriority)
+
+proc GetFileOverlayInfo*(
+    self: ptr IShellIconOverlayManager,
+    pwszPath: PCWSTR,
+    dwAttrib: DWORD,
+    pIndex: ptr int32,
+    dwflags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFileOverlayInfo(self, pwszPath, dwAttrib, pIndex, dwflags)
+
+proc GetReservedOverlayInfo*(
+    self: ptr IShellIconOverlayManager,
+    pwszPath: PCWSTR,
+    dwAttrib: DWORD,
+    pIndex: ptr int32,
+    dwflags: DWORD,
+    iReservedID: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetReservedOverlayInfo(
+      self, pwszPath, dwAttrib, pIndex, dwflags, iReservedID
+    )
+
+proc RefreshOverlayImages*(
+    self: ptr IShellIconOverlayManager, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RefreshOverlayImages(self, dwFlags)
+
+proc LoadNonloadedOverlayIdentifiers*(
+    self: ptr IShellIconOverlayManager
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.LoadNonloadedOverlayIdentifiers(self)
+
+proc OverlayIndexFromImageIndex*(
+    self: ptr IShellIconOverlayManager, iImage: int32, piIndex: ptr int32, fAdd: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OverlayIndexFromImageIndex(self, iImage, piIndex, fAdd)
+
+proc GetOverlayIndex*(
+    self: ptr IShellIconOverlay, pidl: PCUITEMID_CHILD, pIndex: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOverlayIndex(self, pidl, pIndex)
+
+proc GetOverlayIconIndex*(
+    self: ptr IShellIconOverlay, pidl: PCUITEMID_CHILD, pIconIndex: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOverlayIconIndex(self, pidl, pIconIndex)
+
+proc Execute*(
+    self: ptr IShellExecuteHookA, pei: LPSHELLEXECUTEINFOA
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Execute(self, pei)
+
+proc Execute*(
+    self: ptr IShellExecuteHookW, pei: LPSHELLEXECUTEINFOW
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Execute(self, pei)
+
+proc Translate*(
+    self: ptr IURLSearchHook, pwszSearchURL: PWSTR, cchBufferSize: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Translate(self, pwszSearchURL, cchBufferSize)
+
+proc GetSearchUrl*(
+    self: ptr ISearchContext, pbstrSearchUrl: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSearchUrl(self, pbstrSearchUrl)
+
+proc GetSearchText*(
+    self: ptr ISearchContext, pbstrSearchText: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSearchText(self, pbstrSearchText)
+
+proc GetSearchStyle*(
+    self: ptr ISearchContext, pdwSearchStyle: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSearchStyle(self, pdwSearchStyle)
+
+proc TranslateWithSearchContext*(
+    self: ptr IURLSearchHook2,
+    pwszSearchURL: PWSTR,
+    cchBufferSize: DWORD,
+    pSearchContext: ptr ISearchContext,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.TranslateWithSearchContext(
+      self, pwszSearchURL, cchBufferSize, pSearchContext
+    )
+
+proc SetReferent*(
+    self: ptr INewShortcutHookA, pcszReferent: PCSTR, hwnd: HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetReferent(self, pcszReferent, hwnd)
+
+proc GetReferent*(
+    self: ptr INewShortcutHookA, pszReferent: PSTR, cchReferent: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetReferent(self, pszReferent, cchReferent)
+
+proc SetFolder*(
+    self: ptr INewShortcutHookA, pcszFolder: PCSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFolder(self, pcszFolder)
+
+proc GetFolder*(
+    self: ptr INewShortcutHookA, pszFolder: PSTR, cchFolder: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolder(self, pszFolder, cchFolder)
+
+proc GetName*(
+    self: ptr INewShortcutHookA, pszName: PSTR, cchName: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetName(self, pszName, cchName)
+
+proc GetExtension*(
+    self: ptr INewShortcutHookA, pszExtension: PSTR, cchExtension: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetExtension(self, pszExtension, cchExtension)
+
+proc SetReferent*(
+    self: ptr INewShortcutHookW, pcszReferent: PCWSTR, hwnd: HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetReferent(self, pcszReferent, hwnd)
+
+proc GetReferent*(
+    self: ptr INewShortcutHookW, pszReferent: PWSTR, cchReferent: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetReferent(self, pszReferent, cchReferent)
+
+proc SetFolder*(
+    self: ptr INewShortcutHookW, pcszFolder: PCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFolder(self, pcszFolder)
+
+proc GetFolder*(
+    self: ptr INewShortcutHookW, pszFolder: PWSTR, cchFolder: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFolder(self, pszFolder, cchFolder)
+
+proc GetName*(
+    self: ptr INewShortcutHookW, pszName: PWSTR, cchName: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetName(self, pszName, cchName)
+
+proc GetExtension*(
+    self: ptr INewShortcutHookW, pszExtension: PWSTR, cchExtension: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetExtension(self, pszExtension, cchExtension)
+
+proc CopyCallback*(
+    self: ptr ICopyHookA,
+    hwnd: HWND,
+    wFunc: UINT,
+    wFlags: UINT,
+    pszSrcFile: PCSTR,
+    dwSrcAttribs: DWORD,
+    pszDestFile: PCSTR,
+    dwDestAttribs: DWORD,
+): UINT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CopyCallback(
+      self, hwnd, wFunc, wFlags, pszSrcFile, dwSrcAttribs, pszDestFile, dwDestAttribs
+    )
+
+proc CopyCallback*(
+    self: ptr ICopyHookW,
+    hwnd: HWND,
+    wFunc: UINT,
+    wFlags: UINT,
+    pszSrcFile: PCWSTR,
+    dwSrcAttribs: DWORD,
+    pszDestFile: PCWSTR,
+    dwDestAttribs: DWORD,
+): UINT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CopyCallback(
+      self, hwnd, wFunc, wFlags, pszSrcFile, dwSrcAttribs, pszDestFile, dwDestAttribs
+    )
+
+proc SetPinnedWindow*(
+    self: ptr IFileViewerSite, hwnd: HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPinnedWindow(self, hwnd)
+
+proc GetPinnedWindow*(
+    self: ptr IFileViewerSite, phwnd: ptr HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPinnedWindow(self, phwnd)
+
+proc ShowInitialize*(
+    self: ptr IFileViewerA, lpfsi: LPFILEVIEWERSITE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowInitialize(self, lpfsi)
+
+proc Show*(self: ptr IFileViewerA, pvsi: LPFVSHOWINFO): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Show(self, pvsi)
+
+proc PrintTo*(
+    self: ptr IFileViewerA, pszDriver: PSTR, fSuppressUI: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PrintTo(self, pszDriver, fSuppressUI)
+
+proc ShowInitialize*(
+    self: ptr IFileViewerW, lpfsi: LPFILEVIEWERSITE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowInitialize(self, lpfsi)
+
+proc Show*(self: ptr IFileViewerW, pvsi: LPFVSHOWINFO): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Show(self, pvsi)
+
+proc PrintTo*(
+    self: ptr IFileViewerW, pszDriver: PWSTR, fSuppressUI: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PrintTo(self, pszDriver, fSuppressUI)
+
+proc GetDetailsOf*(
+    self: ptr IShellDetails,
+    pidl: PCUITEMID_CHILD,
+    iColumn: UINT,
+    pDetails: ptr SHELLDETAILS,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDetailsOf(self, pidl, iColumn, pDetails)
+
+proc ColumnClick*(self: ptr IShellDetails, iColumn: UINT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ColumnClick(self, iColumn)
+
+proc Append*(self: ptr IObjMgr, punk: ptr IUnknown): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Append(self, punk)
+
+proc Remove*(self: ptr IObjMgr, punk: ptr IUnknown): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Remove(self, punk)
+
+proc GetDirectory*(
+    self: ptr ICurrentWorkingDirectory, pwzPath: PWSTR, cchSize: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDirectory(self, pwzPath, cchSize)
+
+proc SetDirectory*(
+    self: ptr ICurrentWorkingDirectory, pwzPath: PCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDirectory(self, pwzPath)
+
+proc Expand*(self: ptr IACList, pszExpand: PCWSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Expand(self, pszExpand)
+
+proc SetOptions*(self: ptr IACList2, dwFlag: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetOptions(self, dwFlag)
+
+proc GetOptions*(self: ptr IACList2, pdwFlag: ptr DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOptions(self, pdwFlag)
+
+proc StartProgressDialog*(
+    self: ptr IProgressDialog,
+    hwndParent: HWND,
+    punkEnableModless: ptr IUnknown,
+    dwFlags: DWORD,
+    pvResevered: LPCVOID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StartProgressDialog(
+      self, hwndParent, punkEnableModless, dwFlags, pvResevered
+    )
+
+proc StopProgressDialog*(self: ptr IProgressDialog): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StopProgressDialog(self)
+
+proc SetTitle*(
+    self: ptr IProgressDialog, pwzTitle: PCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTitle(self, pwzTitle)
+
+proc SetAnimation*(
+    self: ptr IProgressDialog, hInstAnimation: HINSTANCE, idAnimation: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAnimation(self, hInstAnimation, idAnimation)
+
+proc HasUserCancelled*(self: ptr IProgressDialog): WINBOOL {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HasUserCancelled(self)
+
+proc SetProgress*(
+    self: ptr IProgressDialog, dwCompleted: DWORD, dwTotal: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetProgress(self, dwCompleted, dwTotal)
+
+proc SetProgress64*(
+    self: ptr IProgressDialog, ullCompleted: ULONGLONG, ullTotal: ULONGLONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetProgress64(self, ullCompleted, ullTotal)
+
+proc SetLine*(
+    self: ptr IProgressDialog,
+    dwLineNum: DWORD,
+    pwzString: PCWSTR,
+    fCompactPath: WINBOOL,
+    pvResevered: LPCVOID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetLine(self, dwLineNum, pwzString, fCompactPath, pvResevered)
+
+proc SetCancelMsg*(
+    self: ptr IProgressDialog, pwzCancelMsg: PCWSTR, pvResevered: LPCVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCancelMsg(self, pwzCancelMsg, pvResevered)
+
+proc Timer*(
+    self: ptr IProgressDialog, dwTimerAction: DWORD, pvResevered: LPCVOID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Timer(self, dwTimerAction, pvResevered)
+
+proc GetBorderDW*(
+    self: ptr IDockingWindowSite, punkObj: ptr IUnknown, prcBorder: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBorderDW(self, punkObj, prcBorder)
+
+proc RequestBorderSpaceDW*(
+    self: ptr IDockingWindowSite, punkObj: ptr IUnknown, pbw: LPCBORDERWIDTHS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RequestBorderSpaceDW(self, punkObj, pbw)
+
+proc SetBorderSpaceDW*(
+    self: ptr IDockingWindowSite, punkObj: ptr IUnknown, pbw: LPCBORDERWIDTHS
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBorderSpaceDW(self, punkObj, pbw)
+
+proc AddToolbar*(
+    self: ptr IDockingWindowFrame,
+    punkSrc: ptr IUnknown,
+    pwszItem: PCWSTR,
+    dwAddFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddToolbar(self, punkSrc, pwszItem, dwAddFlags)
+
+proc RemoveToolbar*(
+    self: ptr IDockingWindowFrame, punkSrc: ptr IUnknown, dwRemoveFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveToolbar(self, punkSrc, dwRemoveFlags)
+
+proc FindToolbar*(
+    self: ptr IDockingWindowFrame, pwszItem: PCWSTR, riid: REFIID, ppv: ptr pointer
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindToolbar(self, pwszItem, riid, ppv)
+
+proc CaptureThumbnail*(
+    self: ptr IThumbnailCapture,
+    pMaxSize: ptr SIZE,
+    pHTMLDoc2: ptr IUnknown,
+    phbmThumbnail: ptr HBITMAP,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CaptureThumbnail(self, pMaxSize, pHTMLDoc2, phbmThumbnail)
+
+proc Reset*(self: ptr IEnumShellImageStore): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Next*(
+    self: ptr IEnumShellImageStore,
+    celt: ULONG,
+    prgElt: ptr PENUMSHELLIMAGESTOREDATA,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, prgElt, pceltFetched)
+
+proc Skip*(self: ptr IEnumShellImageStore, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Clone*(
+    self: ptr IEnumShellImageStore, ppEnum: ptr ptr IEnumShellImageStore
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppEnum)
+
+proc Open*(
+    self: ptr IShellImageStore, dwMode: DWORD, pdwLock: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Open(self, dwMode, pdwLock)
+
+proc Create*(
+    self: ptr IShellImageStore, dwMode: DWORD, pdwLock: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Create(self, dwMode, pdwLock)
+
+proc ReleaseLock*(
+    self: ptr IShellImageStore, pdwLock: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseLock(self, pdwLock)
+
+proc Close*(
+    self: ptr IShellImageStore, pdwLock: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Close(self, pdwLock)
+
+proc Commit*(
+    self: ptr IShellImageStore, pdwLock: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Commit(self, pdwLock)
+
+proc IsLocked*(self: ptr IShellImageStore): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsLocked(self)
+
+proc GetMode*(
+    self: ptr IShellImageStore, pdwMode: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMode(self, pdwMode)
+
+proc GetCapabilities*(
+    self: ptr IShellImageStore, pdwCapMask: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCapabilities(self, pdwCapMask)
+
+proc AddEntry*(
+    self: ptr IShellImageStore,
+    pszName: PCWSTR,
+    pftTimeStamp: ptr FILETIME,
+    dwMode: DWORD,
+    hImage: HBITMAP,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddEntry(self, pszName, pftTimeStamp, dwMode, hImage)
+
+proc GetEntry*(
+    self: ptr IShellImageStore, pszName: PCWSTR, dwMode: DWORD, phImage: ptr HBITMAP
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEntry(self, pszName, dwMode, phImage)
+
+proc DeleteEntry*(
+    self: ptr IShellImageStore, pszName: PCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteEntry(self, pszName)
+
+proc IsEntryInStore*(
+    self: ptr IShellImageStore, pszName: PCWSTR, pftTimeStamp: ptr FILETIME
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsEntryInStore(self, pszName, pftTimeStamp)
+
+proc Enum*(
+    self: ptr IShellImageStore, ppEnum: ptr LPENUMSHELLIMAGESTORE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Enum(self, ppEnum)
+
+proc InitializeSFB*(
+    self: ptr IShellFolderBand, psf: ptr IShellFolder, pidl: PCIDLIST_ABSOLUTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeSFB(self, psf, pidl)
+
+proc SetBandInfoSFB*(
+    self: ptr IShellFolderBand, pbi: PBANDINFOSFB
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBandInfoSFB(self, pbi)
+
+proc GetBandInfoSFB*(
+    self: ptr IShellFolderBand, pbi: PBANDINFOSFB
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBandInfoSFB(self, pbi)
+
+proc SetDeskBarSite*(
+    self: ptr IDeskBarClient, punkSite: ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDeskBarSite(self, punkSite)
+
+proc SetModeDBC*(self: ptr IDeskBarClient, dwMode: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetModeDBC(self, dwMode)
+
+proc UIActivateDBC*(
+    self: ptr IDeskBarClient, dwState: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UIActivateDBC(self, dwState)
+
+proc GetSize*(
+    self: ptr IDeskBarClient, dwWhich: DWORD, prc: LPRECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSize(self, dwWhich, prc)
+
+proc ApplyChanges*(
+    self: ptr IActiveDesktop, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ApplyChanges(self, dwFlags)
+
+proc GetWallpaper*(
+    self: ptr IActiveDesktop, pwszWallpaper: PWSTR, cchWallpaper: UINT, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetWallpaper(self, pwszWallpaper, cchWallpaper, dwFlags)
+
+proc SetWallpaper*(
+    self: ptr IActiveDesktop, pwszWallpaper: PCWSTR, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetWallpaper(self, pwszWallpaper, dwReserved)
+
+proc GetWallpaperOptions*(
+    self: ptr IActiveDesktop, pwpo: LPWALLPAPEROPT, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetWallpaperOptions(self, pwpo, dwReserved)
+
+proc SetWallpaperOptions*(
+    self: ptr IActiveDesktop, pwpo: LPCWALLPAPEROPT, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetWallpaperOptions(self, pwpo, dwReserved)
+
+proc GetPattern*(
+    self: ptr IActiveDesktop, pwszPattern: PWSTR, cchPattern: UINT, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPattern(self, pwszPattern, cchPattern, dwReserved)
+
+proc SetPattern*(
+    self: ptr IActiveDesktop, pwszPattern: PCWSTR, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPattern(self, pwszPattern, dwReserved)
+
+proc GetDesktopItemOptions*(
+    self: ptr IActiveDesktop, pco: LPCOMPONENTSOPT, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDesktopItemOptions(self, pco, dwReserved)
+
+proc SetDesktopItemOptions*(
+    self: ptr IActiveDesktop, pco: LPCCOMPONENTSOPT, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDesktopItemOptions(self, pco, dwReserved)
+
+proc AddDesktopItem*(
+    self: ptr IActiveDesktop, pcomp: LPCCOMPONENT, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddDesktopItem(self, pcomp, dwReserved)
+
+proc AddDesktopItemWithUI*(
+    self: ptr IActiveDesktop, hwnd: HWND, pcomp: LPCOMPONENT, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddDesktopItemWithUI(self, hwnd, pcomp, dwReserved)
+
+proc ModifyDesktopItem*(
+    self: ptr IActiveDesktop, pcomp: LPCCOMPONENT, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ModifyDesktopItem(self, pcomp, dwFlags)
+
+proc RemoveDesktopItem*(
+    self: ptr IActiveDesktop, pcomp: LPCCOMPONENT, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveDesktopItem(self, pcomp, dwReserved)
+
+proc GetDesktopItemCount*(
+    self: ptr IActiveDesktop, pcItems: ptr int32, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDesktopItemCount(self, pcItems, dwReserved)
+
+proc GetDesktopItem*(
+    self: ptr IActiveDesktop, nComponent: int32, pcomp: LPCOMPONENT, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDesktopItem(self, nComponent, pcomp, dwReserved)
+
+proc GetDesktopItemByID*(
+    self: ptr IActiveDesktop, dwID: ULONG_PTR, pcomp: LPCOMPONENT, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDesktopItemByID(self, dwID, pcomp, dwReserved)
+
+proc GenerateDesktopItemHtml*(
+    self: ptr IActiveDesktop,
+    pwszFileName: PCWSTR,
+    pcomp: LPCOMPONENT,
+    dwReserved: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GenerateDesktopItemHtml(self, pwszFileName, pcomp, dwReserved)
+
+proc AddUrl*(
+    self: ptr IActiveDesktop,
+    hwnd: HWND,
+    pszSource: PCWSTR,
+    pcomp: LPCOMPONENT,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddUrl(self, hwnd, pszSource, pcomp, dwFlags)
+
+proc GetDesktopItemBySource*(
+    self: ptr IActiveDesktop, pwszSource: PCWSTR, pcomp: LPCOMPONENT, dwReserved: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDesktopItemBySource(self, pwszSource, pcomp, dwReserved)
+
+proc SetSafeMode*(
+    self: ptr IActiveDesktopP, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSafeMode(self, dwFlags)
+
+proc EnsureUpdateHTML*(self: ptr IActiveDesktopP): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EnsureUpdateHTML(self)
+
+proc SetScheme*(
+    self: ptr IActiveDesktopP, pwszSchemeName: PCWSTR, dwFlags: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetScheme(self, pwszSchemeName, dwFlags)
+
+proc GetScheme*(
+    self: ptr IActiveDesktopP,
+    pwszSchemeName: PWSTR,
+    pdwcchBuffer: ptr DWORD,
+    dwFlags: DWORD,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetScheme(self, pwszSchemeName, pdwcchBuffer, dwFlags)
+
+proc ReReadWallpaper*(self: ptr IADesktopP2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReReadWallpaper(self)
+
+proc GetADObjectFlags*(
+    self: ptr IADesktopP2, pdwFlags: ptr DWORD, dwMask: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetADObjectFlags(self, pdwFlags, dwMask)
+
+proc UpdateAllDesktopSubscriptions*(self: ptr IADesktopP2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UpdateAllDesktopSubscriptions(self)
+
+proc MakeDynamicChanges*(
+    self: ptr IADesktopP2, pOleObj: ptr IOleObject
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MakeDynamicChanges(self, pOleObj)
+
+proc Initialize*(
+    self: ptr IColumnProvider, psci: LPCSHCOLUMNINIT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, psci)
+
+proc GetColumnInfo*(
+    self: ptr IColumnProvider, dwIndex: DWORD, psci: ptr SHCOLUMNINFO
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColumnInfo(self, dwIndex, psci)
+
+proc GetItemData*(
+    self: ptr IColumnProvider,
+    pscid: LPCSHCOLUMNID,
+    pscd: LPCSHCOLUMNDATA,
+    pvarData: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItemData(self, pscid, pscd, pvarData)
+
+proc OnChange*(
+    self: ptr IShellChangeNotify,
+    lEvent: LONG,
+    pidl1: PCIDLIST_ABSOLUTE,
+    pidl2: PCIDLIST_ABSOLUTE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnChange(self, lEvent, pidl1, pidl2)
+
+proc GetInfoTip*(
+    self: ptr IQueryInfo, dwFlags: DWORD, ppwszTip: ptr PWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInfoTip(self, dwFlags, ppwszTip)
+
+proc GetInfoFlags*(
+    self: ptr IQueryInfo, pdwFlags: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetInfoFlags(self, pdwFlags)
+
+proc GetWindowLV*(
+    self: ptr IDefViewFrame, phwnd: ptr HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetWindowLV(self, phwnd)
+
+proc ReleaseWindowLV*(self: ptr IDefViewFrame): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReleaseWindowLV(self)
+
+proc GetShellFolder*(
+    self: ptr IDefViewFrame, ppsf: ptr ptr IShellFolder
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetShellFolder(self, ppsf)
+
+proc OnSetTitle*(
+    self: ptr IDocViewSite, pvTitle: ptr VARIANTARG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.OnSetTitle(self, pvTitle)
+
+proc Initialize*(self: ptr IInitializeObject): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self)
+
+proc SetIconSize*(self: ptr IBanneredBar, iIcon: DWORD): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetIconSize(self, iIcon)
+
+proc GetIconSize*(
+    self: ptr IBanneredBar, piIcon: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIconSize(self, piIcon)
+
+proc SetBitmap*(self: ptr IBanneredBar, hBitmap: HBITMAP): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetBitmap(self, hBitmap)
+
+proc GetBitmap*(
+    self: ptr IBanneredBar, phBitmap: ptr HBITMAP
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBitmap(self, phBitmap)
+
+proc MessageSFVCB*(
+    self: ptr IShellFolderViewCB, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MessageSFVCB(self, uMsg, wParam, lParam)
+
+proc Rearrange*(
+    self: ptr IShellFolderView, lParamSort: LPARAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Rearrange(self, lParamSort)
+
+proc GetArrangeParam*(
+    self: ptr IShellFolderView, plParamSort: ptr LPARAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetArrangeParam(self, plParamSort)
+
+proc ArrangeGrid*(self: ptr IShellFolderView): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ArrangeGrid(self)
+
+proc AutoArrange*(self: ptr IShellFolderView): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AutoArrange(self)
+
+proc GetAutoArrange*(self: ptr IShellFolderView): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAutoArrange(self)
+
+proc AddObject*(
+    self: ptr IShellFolderView, pidl: PUITEMID_CHILD, puItem: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddObject(self, pidl, puItem)
+
+proc GetObject*(
+    self: ptr IShellFolderView, ppidl: ptr PITEMID_CHILD, uItem: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObject(self, ppidl, uItem)
+
+proc RemoveObject*(
+    self: ptr IShellFolderView, pidl: PUITEMID_CHILD, puItem: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveObject(self, pidl, puItem)
+
+proc GetObjectCount*(
+    self: ptr IShellFolderView, puCount: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObjectCount(self, puCount)
+
+proc SetObjectCount*(
+    self: ptr IShellFolderView, uCount: UINT, dwFlags: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetObjectCount(self, uCount, dwFlags)
+
+proc UpdateObject*(
+    self: ptr IShellFolderView,
+    pidlOld: PUITEMID_CHILD,
+    pidlNew: PUITEMID_CHILD,
+    puItem: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.UpdateObject(self, pidlOld, pidlNew, puItem)
+
+proc RefreshObject*(
+    self: ptr IShellFolderView, pidl: PUITEMID_CHILD, puItem: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RefreshObject(self, pidl, puItem)
+
+proc SetRedraw*(
+    self: ptr IShellFolderView, bRedraw: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetRedraw(self, bRedraw)
+
+proc GetSelectedCount*(
+    self: ptr IShellFolderView, puSelected: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelectedCount(self, puSelected)
+
+proc GetSelectedObjects*(
+    self: ptr IShellFolderView, pppidl: ptr ptr PCUITEMID_CHILD, puItems: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelectedObjects(self, pppidl, puItems)
+
+proc IsDropOnSource*(
+    self: ptr IShellFolderView, pDropTarget: ptr IDropTarget
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsDropOnSource(self, pDropTarget)
+
+proc GetDragPoint*(
+    self: ptr IShellFolderView, ppt: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDragPoint(self, ppt)
+
+proc GetDropPoint*(
+    self: ptr IShellFolderView, ppt: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDropPoint(self, ppt)
+
+proc MoveIcons*(
+    self: ptr IShellFolderView, pDataObject: ptr IDataObject
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveIcons(self, pDataObject)
+
+proc SetItemPos*(
+    self: ptr IShellFolderView, pidl: PCUITEMID_CHILD, ppt: ptr POINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetItemPos(self, pidl, ppt)
+
+proc IsBkDropTarget*(
+    self: ptr IShellFolderView, pDropTarget: ptr IDropTarget
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsBkDropTarget(self, pDropTarget)
+
+proc SetClipboard*(
+    self: ptr IShellFolderView, bMove: WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetClipboard(self, bMove)
+
+proc SetPoints*(
+    self: ptr IShellFolderView, pDataObject: ptr IDataObject
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPoints(self, pDataObject)
+
+proc GetItemSpacing*(
+    self: ptr IShellFolderView, pSpacing: ptr ITEMSPACING
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItemSpacing(self, pSpacing)
+
+proc SetCallback*(
+    self: ptr IShellFolderView,
+    pNewCB: ptr IShellFolderViewCB,
+    ppOldCB: ptr ptr IShellFolderViewCB,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCallback(self, pNewCB, ppOldCB)
+
+proc Select*(self: ptr IShellFolderView, dwFlags: UINT): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Select(self, dwFlags)
+
+proc QuerySupport*(
+    self: ptr IShellFolderView, pdwSupport: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QuerySupport(self, pdwSupport)
+
+proc SetAutomationObject*(
+    self: ptr IShellFolderView, pdisp: ptr IDispatch
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetAutomationObject(self, pdisp)
+
+proc ReadPropertyNPB*(
+    self: ptr INamedPropertyBag,
+    pszBagname: PCWSTR,
+    pszPropName: PCWSTR,
+    pVar: ptr PROPVARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReadPropertyNPB(self, pszBagname, pszPropName, pVar)
+
+proc WritePropertyNPB*(
+    self: ptr INamedPropertyBag,
+    pszBagname: PCWSTR,
+    pszPropName: PCWSTR,
+    pVar: ptr PROPVARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WritePropertyNPB(self, pszBagname, pszPropName, pVar)
+
+proc RemovePropertyNPB*(
+    self: ptr INamedPropertyBag, pszBagname: PCWSTR, pszPropName: PCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemovePropertyNPB(self, pszBagname, pszPropName)
+
+converter winimConverterIQueryAssociationsToIUnknown*(
+    x: ptr IQueryAssociations
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFolderViewOCToIDispatch*(x: ptr IFolderViewOC): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIFolderViewOCToIUnknown*(x: ptr IFolderViewOC): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDShellFolderViewEventsToIDispatch*(
+    x: ptr DShellFolderViewEvents
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDShellFolderViewEventsToIUnknown*(
+    x: ptr DShellFolderViewEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterDFConstraintToIDispatch*(x: ptr DFConstraint): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterDFConstraintToIUnknown*(x: ptr DFConstraint): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterFolderToIDispatch*(x: ptr Folder): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterFolderToIUnknown*(x: ptr Folder): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterFolder2ToFolder*(x: ptr Folder2): ptr Folder =
+  cast[ptr Folder](x)
+
+converter winimConverterFolder2ToIDispatch*(x: ptr Folder2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterFolder2ToIUnknown*(x: ptr Folder2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterFolder3ToFolder2*(x: ptr Folder3): ptr Folder2 =
+  cast[ptr Folder2](x)
+
+converter winimConverterFolder3ToFolder*(x: ptr Folder3): ptr Folder =
+  cast[ptr Folder](x)
+
+converter winimConverterFolder3ToIDispatch*(x: ptr Folder3): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterFolder3ToIUnknown*(x: ptr Folder3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterFolderItemToIDispatch*(x: ptr FolderItem): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterFolderItemToIUnknown*(x: ptr FolderItem): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterFolderItem2ToFolderItem*(x: ptr FolderItem2): ptr FolderItem =
+  cast[ptr FolderItem](x)
+
+converter winimConverterFolderItem2ToIDispatch*(x: ptr FolderItem2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterFolderItem2ToIUnknown*(x: ptr FolderItem2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterFolderItemsToIDispatch*(x: ptr FolderItems): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterFolderItemsToIUnknown*(x: ptr FolderItems): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterFolderItems2ToFolderItems*(
+    x: ptr FolderItems2
+): ptr FolderItems =
+  cast[ptr FolderItems](x)
+
+converter winimConverterFolderItems2ToIDispatch*(x: ptr FolderItems2): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterFolderItems2ToIUnknown*(x: ptr FolderItems2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterFolderItems3ToFolderItems2*(
+    x: ptr FolderItems3
+): ptr FolderItems2 =
+  cast[ptr FolderItems2](x)
+
+converter winimConverterFolderItems3ToFolderItems*(
+    x: ptr FolderItems3
+): ptr FolderItems =
+  cast[ptr FolderItems](x)
+
+converter winimConverterFolderItems3ToIDispatch*(x: ptr FolderItems3): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterFolderItems3ToIUnknown*(x: ptr FolderItems3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterFolderItemVerbToIDispatch*(
+    x: ptr FolderItemVerb
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterFolderItemVerbToIUnknown*(x: ptr FolderItemVerb): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterFolderItemVerbsToIDispatch*(
+    x: ptr FolderItemVerbs
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterFolderItemVerbsToIUnknown*(
+    x: ptr FolderItemVerbs
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellLinkDualToIDispatch*(
+    x: ptr IShellLinkDual
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellLinkDualToIUnknown*(x: ptr IShellLinkDual): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellLinkDual2ToIShellLinkDual*(
+    x: ptr IShellLinkDual2
+): ptr IShellLinkDual =
+  cast[ptr IShellLinkDual](x)
+
+converter winimConverterIShellLinkDual2ToIDispatch*(
+    x: ptr IShellLinkDual2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellLinkDual2ToIUnknown*(
+    x: ptr IShellLinkDual2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellFolderViewDualToIDispatch*(
+    x: ptr IShellFolderViewDual
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellFolderViewDualToIUnknown*(
+    x: ptr IShellFolderViewDual
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellFolderViewDual2ToIShellFolderViewDual*(
+    x: ptr IShellFolderViewDual2
+): ptr IShellFolderViewDual =
+  cast[ptr IShellFolderViewDual](x)
+
+converter winimConverterIShellFolderViewDual2ToIDispatch*(
+    x: ptr IShellFolderViewDual2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellFolderViewDual2ToIUnknown*(
+    x: ptr IShellFolderViewDual2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellFolderViewDual3ToIShellFolderViewDual2*(
+    x: ptr IShellFolderViewDual3
+): ptr IShellFolderViewDual2 =
+  cast[ptr IShellFolderViewDual2](x)
+
+converter winimConverterIShellFolderViewDual3ToIShellFolderViewDual*(
+    x: ptr IShellFolderViewDual3
+): ptr IShellFolderViewDual =
+  cast[ptr IShellFolderViewDual](x)
+
+converter winimConverterIShellFolderViewDual3ToIDispatch*(
+    x: ptr IShellFolderViewDual3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellFolderViewDual3ToIUnknown*(
+    x: ptr IShellFolderViewDual3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellDispatchToIDispatch*(
+    x: ptr IShellDispatch
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellDispatchToIUnknown*(x: ptr IShellDispatch): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellDispatch2ToIShellDispatch*(
+    x: ptr IShellDispatch2
+): ptr IShellDispatch =
+  cast[ptr IShellDispatch](x)
+
+converter winimConverterIShellDispatch2ToIDispatch*(
+    x: ptr IShellDispatch2
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellDispatch2ToIUnknown*(
+    x: ptr IShellDispatch2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellDispatch3ToIShellDispatch2*(
+    x: ptr IShellDispatch3
+): ptr IShellDispatch2 =
+  cast[ptr IShellDispatch2](x)
+
+converter winimConverterIShellDispatch3ToIShellDispatch*(
+    x: ptr IShellDispatch3
+): ptr IShellDispatch =
+  cast[ptr IShellDispatch](x)
+
+converter winimConverterIShellDispatch3ToIDispatch*(
+    x: ptr IShellDispatch3
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellDispatch3ToIUnknown*(
+    x: ptr IShellDispatch3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellDispatch4ToIShellDispatch3*(
+    x: ptr IShellDispatch4
+): ptr IShellDispatch3 =
+  cast[ptr IShellDispatch3](x)
+
+converter winimConverterIShellDispatch4ToIShellDispatch2*(
+    x: ptr IShellDispatch4
+): ptr IShellDispatch2 =
+  cast[ptr IShellDispatch2](x)
+
+converter winimConverterIShellDispatch4ToIShellDispatch*(
+    x: ptr IShellDispatch4
+): ptr IShellDispatch =
+  cast[ptr IShellDispatch](x)
+
+converter winimConverterIShellDispatch4ToIDispatch*(
+    x: ptr IShellDispatch4
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellDispatch4ToIUnknown*(
+    x: ptr IShellDispatch4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellDispatch5ToIShellDispatch4*(
+    x: ptr IShellDispatch5
+): ptr IShellDispatch4 =
+  cast[ptr IShellDispatch4](x)
+
+converter winimConverterIShellDispatch5ToIShellDispatch3*(
+    x: ptr IShellDispatch5
+): ptr IShellDispatch3 =
+  cast[ptr IShellDispatch3](x)
+
+converter winimConverterIShellDispatch5ToIShellDispatch2*(
+    x: ptr IShellDispatch5
+): ptr IShellDispatch2 =
+  cast[ptr IShellDispatch2](x)
+
+converter winimConverterIShellDispatch5ToIShellDispatch*(
+    x: ptr IShellDispatch5
+): ptr IShellDispatch =
+  cast[ptr IShellDispatch](x)
+
+converter winimConverterIShellDispatch5ToIDispatch*(
+    x: ptr IShellDispatch5
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellDispatch5ToIUnknown*(
+    x: ptr IShellDispatch5
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellDispatch6ToIShellDispatch5*(
+    x: ptr IShellDispatch6
+): ptr IShellDispatch5 =
+  cast[ptr IShellDispatch5](x)
+
+converter winimConverterIShellDispatch6ToIShellDispatch4*(
+    x: ptr IShellDispatch6
+): ptr IShellDispatch4 =
+  cast[ptr IShellDispatch4](x)
+
+converter winimConverterIShellDispatch6ToIShellDispatch3*(
+    x: ptr IShellDispatch6
+): ptr IShellDispatch3 =
+  cast[ptr IShellDispatch3](x)
+
+converter winimConverterIShellDispatch6ToIShellDispatch2*(
+    x: ptr IShellDispatch6
+): ptr IShellDispatch2 =
+  cast[ptr IShellDispatch2](x)
+
+converter winimConverterIShellDispatch6ToIShellDispatch*(
+    x: ptr IShellDispatch6
+): ptr IShellDispatch =
+  cast[ptr IShellDispatch](x)
+
+converter winimConverterIShellDispatch6ToIDispatch*(
+    x: ptr IShellDispatch6
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIShellDispatch6ToIUnknown*(
+    x: ptr IShellDispatch6
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileSearchBandToIDispatch*(
+    x: ptr IFileSearchBand
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIFileSearchBandToIUnknown*(
+    x: ptr IFileSearchBand
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWebWizardHostToIDispatch*(
+    x: ptr IWebWizardHost
+): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterIWebWizardHostToIUnknown*(x: ptr IWebWizardHost): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINewWDEventsToIWebWizardHost*(
+    x: ptr INewWDEvents
+): ptr IWebWizardHost =
+  cast[ptr IWebWizardHost](x)
+
+converter winimConverterINewWDEventsToIDispatch*(x: ptr INewWDEvents): ptr IDispatch =
+  cast[ptr IDispatch](x)
+
+converter winimConverterINewWDEventsToIUnknown*(x: ptr INewWDEvents): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAutoCompleteToIUnknown*(x: ptr IAutoComplete): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAutoComplete2ToIAutoComplete*(
+    x: ptr IAutoComplete2
+): ptr IAutoComplete =
+  cast[ptr IAutoComplete](x)
+
+converter winimConverterIAutoComplete2ToIUnknown*(x: ptr IAutoComplete2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumACStringToIEnumString*(
+    x: ptr IEnumACString
+): ptr IEnumString =
+  cast[ptr IEnumString](x)
+
+converter winimConverterIEnumACStringToIUnknown*(x: ptr IEnumACString): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDataObjectAsyncCapabilityToIUnknown*(
+    x: ptr IDataObjectAsyncCapability
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectArrayToIUnknown*(x: ptr IObjectArray): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectCollectionToIObjectArray*(
+    x: ptr IObjectCollection
+): ptr IObjectArray =
+  cast[ptr IObjectArray](x)
+
+converter winimConverterIObjectCollectionToIUnknown*(
+    x: ptr IObjectCollection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIContextMenuToIUnknown*(x: ptr IContextMenu): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIContextMenu2ToIContextMenu*(
+    x: ptr IContextMenu2
+): ptr IContextMenu =
+  cast[ptr IContextMenu](x)
+
+converter winimConverterIContextMenu2ToIUnknown*(x: ptr IContextMenu2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIContextMenu3ToIContextMenu2*(
+    x: ptr IContextMenu3
+): ptr IContextMenu2 =
+  cast[ptr IContextMenu2](x)
+
+converter winimConverterIContextMenu3ToIContextMenu*(
+    x: ptr IContextMenu3
+): ptr IContextMenu =
+  cast[ptr IContextMenu](x)
+
+converter winimConverterIContextMenu3ToIUnknown*(x: ptr IContextMenu3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExecuteCommandToIUnknown*(
+    x: ptr IExecuteCommand
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistFolderToIPersist*(x: ptr IPersistFolder): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterIPersistFolderToIUnknown*(x: ptr IPersistFolder): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRunnableTaskToIUnknown*(x: ptr IRunnableTask): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellTaskSchedulerToIUnknown*(
+    x: ptr IShellTaskScheduler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIQueryCodePageToIUnknown*(x: ptr IQueryCodePage): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistFolder2ToIPersistFolder*(
+    x: ptr IPersistFolder2
+): ptr IPersistFolder =
+  cast[ptr IPersistFolder](x)
+
+converter winimConverterIPersistFolder2ToIPersist*(
+    x: ptr IPersistFolder2
+): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterIPersistFolder2ToIUnknown*(
+    x: ptr IPersistFolder2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistFolder3ToIPersistFolder2*(
+    x: ptr IPersistFolder3
+): ptr IPersistFolder2 =
+  cast[ptr IPersistFolder2](x)
+
+converter winimConverterIPersistFolder3ToIPersistFolder*(
+    x: ptr IPersistFolder3
+): ptr IPersistFolder =
+  cast[ptr IPersistFolder](x)
+
+converter winimConverterIPersistFolder3ToIPersist*(
+    x: ptr IPersistFolder3
+): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterIPersistFolder3ToIUnknown*(
+    x: ptr IPersistFolder3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPersistIDListToIPersist*(x: ptr IPersistIDList): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterIPersistIDListToIUnknown*(x: ptr IPersistIDList): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumIDListToIUnknown*(x: ptr IEnumIDList): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumFullIDListToIUnknown*(
+    x: ptr IEnumFullIDList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectWithFolderEnumModeToIUnknown*(
+    x: ptr IObjectWithFolderEnumMode
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIParseAndCreateItemToIUnknown*(
+    x: ptr IParseAndCreateItem
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellFolderToIUnknown*(x: ptr IShellFolder): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumExtraSearchToIUnknown*(
+    x: ptr IEnumExtraSearch
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellFolder2ToIShellFolder*(
+    x: ptr IShellFolder2
+): ptr IShellFolder =
+  cast[ptr IShellFolder](x)
+
+converter winimConverterIShellFolder2ToIUnknown*(x: ptr IShellFolder2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFolderViewOptionsToIUnknown*(
+    x: ptr IFolderViewOptions
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellViewToIOleWindow*(x: ptr IShellView): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIShellViewToIUnknown*(x: ptr IShellView): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellView2ToIShellView*(x: ptr IShellView2): ptr IShellView =
+  cast[ptr IShellView](x)
+
+converter winimConverterIShellView2ToIOleWindow*(x: ptr IShellView2): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIShellView2ToIUnknown*(x: ptr IShellView2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellView3ToIShellView2*(x: ptr IShellView3): ptr IShellView2 =
+  cast[ptr IShellView2](x)
+
+converter winimConverterIShellView3ToIShellView*(x: ptr IShellView3): ptr IShellView =
+  cast[ptr IShellView](x)
+
+converter winimConverterIShellView3ToIOleWindow*(x: ptr IShellView3): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIShellView3ToIUnknown*(x: ptr IShellView3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFolderViewToIUnknown*(x: ptr IFolderView): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISearchBoxInfoToIUnknown*(x: ptr ISearchBoxInfo): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFolderView2ToIFolderView*(
+    x: ptr IFolderView2
+): ptr IFolderView =
+  cast[ptr IFolderView](x)
+
+converter winimConverterIFolderView2ToIUnknown*(x: ptr IFolderView2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFolderViewSettingsToIUnknown*(
+    x: ptr IFolderViewSettings
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPreviewHandlerVisualsToIUnknown*(
+    x: ptr IPreviewHandlerVisuals
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIVisualPropertiesToIUnknown*(
+    x: ptr IVisualProperties
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICommDlgBrowserToIUnknown*(
+    x: ptr ICommDlgBrowser
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICommDlgBrowser2ToICommDlgBrowser*(
+    x: ptr ICommDlgBrowser2
+): ptr ICommDlgBrowser =
+  cast[ptr ICommDlgBrowser](x)
+
+converter winimConverterICommDlgBrowser2ToIUnknown*(
+    x: ptr ICommDlgBrowser2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICommDlgBrowser3ToICommDlgBrowser2*(
+    x: ptr ICommDlgBrowser3
+): ptr ICommDlgBrowser2 =
+  cast[ptr ICommDlgBrowser2](x)
+
+converter winimConverterICommDlgBrowser3ToICommDlgBrowser*(
+    x: ptr ICommDlgBrowser3
+): ptr ICommDlgBrowser =
+  cast[ptr ICommDlgBrowser](x)
+
+converter winimConverterICommDlgBrowser3ToIUnknown*(
+    x: ptr ICommDlgBrowser3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIColumnManagerToIUnknown*(x: ptr IColumnManager): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFolderFilterSiteToIUnknown*(
+    x: ptr IFolderFilterSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFolderFilterToIUnknown*(x: ptr IFolderFilter): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInputObjectSiteToIUnknown*(
+    x: ptr IInputObjectSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInputObjectToIUnknown*(x: ptr IInputObject): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInputObject2ToIInputObject*(
+    x: ptr IInputObject2
+): ptr IInputObject =
+  cast[ptr IInputObject](x)
+
+converter winimConverterIInputObject2ToIUnknown*(x: ptr IInputObject2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellIconToIUnknown*(x: ptr IShellIcon): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellBrowserToIOleWindow*(
+    x: ptr IShellBrowser
+): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIShellBrowserToIUnknown*(x: ptr IShellBrowser): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIProfferServiceToIUnknown*(
+    x: ptr IProfferService
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellItemToIUnknown*(x: ptr IShellItem): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellItem2ToIShellItem*(x: ptr IShellItem2): ptr IShellItem =
+  cast[ptr IShellItem](x)
+
+converter winimConverterIShellItem2ToIUnknown*(x: ptr IShellItem2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellItemImageFactoryToIUnknown*(
+    x: ptr IShellItemImageFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUserAccountChangeCallbackToIUnknown*(
+    x: ptr IUserAccountChangeCallback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumShellItemsToIUnknown*(
+    x: ptr IEnumShellItems
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITransferAdviseSinkToIUnknown*(
+    x: ptr ITransferAdviseSink
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITransferSourceToIUnknown*(
+    x: ptr ITransferSource
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumResourcesToIUnknown*(x: ptr IEnumResources): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellItemResourcesToIUnknown*(
+    x: ptr IShellItemResources
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITransferDestinationToIUnknown*(
+    x: ptr ITransferDestination
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIStreamAsyncToIStream*(x: ptr IStreamAsync): ptr IStream =
+  cast[ptr IStream](x)
+
+converter winimConverterIStreamAsyncToISequentialStream*(
+    x: ptr IStreamAsync
+): ptr ISequentialStream =
+  cast[ptr ISequentialStream](x)
+
+converter winimConverterIStreamAsyncToIUnknown*(x: ptr IStreamAsync): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIStreamUnbufferedInfoToIUnknown*(
+    x: ptr IStreamUnbufferedInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileOperationProgressSinkToIUnknown*(
+    x: ptr IFileOperationProgressSink
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellItemArrayToIUnknown*(
+    x: ptr IShellItemArray
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInitializeWithItemToIUnknown*(
+    x: ptr IInitializeWithItem
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectWithSelectionToIUnknown*(
+    x: ptr IObjectWithSelection
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectWithBackReferencesToIUnknown*(
+    x: ptr IObjectWithBackReferences
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPropertyUIToIUnknown*(x: ptr IPropertyUI): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICategoryProviderToIUnknown*(
+    x: ptr ICategoryProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICategorizerToIUnknown*(x: ptr ICategorizer): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDropTargetHelperToIUnknown*(
+    x: ptr IDropTargetHelper
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDragSourceHelperToIUnknown*(
+    x: ptr IDragSourceHelper
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDragSourceHelper2ToIDragSourceHelper*(
+    x: ptr IDragSourceHelper2
+): ptr IDragSourceHelper =
+  cast[ptr IDragSourceHelper](x)
+
+converter winimConverterIDragSourceHelper2ToIUnknown*(
+    x: ptr IDragSourceHelper2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellLinkAToIUnknown*(x: ptr IShellLinkA): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellLinkWToIUnknown*(x: ptr IShellLinkW): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellLinkDataListToIUnknown*(
+    x: ptr IShellLinkDataList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIResolveShellLinkToIUnknown*(
+    x: ptr IResolveShellLink
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActionProgressDialogToIUnknown*(
+    x: ptr IActionProgressDialog
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHWEventHandlerToIUnknown*(
+    x: ptr IHWEventHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHWEventHandler2ToIHWEventHandler*(
+    x: ptr IHWEventHandler2
+): ptr IHWEventHandler =
+  cast[ptr IHWEventHandler](x)
+
+converter winimConverterIHWEventHandler2ToIUnknown*(
+    x: ptr IHWEventHandler2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIQueryCancelAutoPlayToIUnknown*(
+    x: ptr IQueryCancelAutoPlay
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDynamicHWHandlerToIUnknown*(
+    x: ptr IDynamicHWHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActionProgressToIUnknown*(
+    x: ptr IActionProgress
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellExtInitToIUnknown*(x: ptr IShellExtInit): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellPropSheetExtToIUnknown*(
+    x: ptr IShellPropSheetExt
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRemoteComputerToIUnknown*(
+    x: ptr IRemoteComputer
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIQueryContinueToIUnknown*(x: ptr IQueryContinue): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectWithCancelEventToIUnknown*(
+    x: ptr IObjectWithCancelEvent
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUserNotificationToIUnknown*(
+    x: ptr IUserNotification
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUserNotificationCallbackToIUnknown*(
+    x: ptr IUserNotificationCallback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUserNotification2ToIUnknown*(
+    x: ptr IUserNotification2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIItemNameLimitsToIUnknown*(
+    x: ptr IItemNameLimits
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISearchFolderItemFactoryToIUnknown*(
+    x: ptr ISearchFolderItemFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExtractImageToIUnknown*(x: ptr IExtractImage): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExtractImage2ToIExtractImage*(
+    x: ptr IExtractImage2
+): ptr IExtractImage =
+  cast[ptr IExtractImage](x)
+
+converter winimConverterIExtractImage2ToIUnknown*(x: ptr IExtractImage2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIThumbnailHandlerFactoryToIUnknown*(
+    x: ptr IThumbnailHandlerFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIParentAndItemToIUnknown*(x: ptr IParentAndItem): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDockingWindowToIOleWindow*(
+    x: ptr IDockingWindow
+): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIDockingWindowToIUnknown*(x: ptr IDockingWindow): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDeskBandToIDockingWindow*(
+    x: ptr IDeskBand
+): ptr IDockingWindow =
+  cast[ptr IDockingWindow](x)
+
+converter winimConverterIDeskBandToIOleWindow*(x: ptr IDeskBand): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIDeskBandToIUnknown*(x: ptr IDeskBand): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDeskBandInfoToIUnknown*(x: ptr IDeskBandInfo): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDeskBand2ToIDeskBand*(x: ptr IDeskBand2): ptr IDeskBand =
+  cast[ptr IDeskBand](x)
+
+converter winimConverterIDeskBand2ToIDockingWindow*(
+    x: ptr IDeskBand2
+): ptr IDockingWindow =
+  cast[ptr IDockingWindow](x)
+
+converter winimConverterIDeskBand2ToIOleWindow*(x: ptr IDeskBand2): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIDeskBand2ToIUnknown*(x: ptr IDeskBand2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITaskbarListToIUnknown*(x: ptr ITaskbarList): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITaskbarList2ToITaskbarList*(
+    x: ptr ITaskbarList2
+): ptr ITaskbarList =
+  cast[ptr ITaskbarList](x)
+
+converter winimConverterITaskbarList2ToIUnknown*(x: ptr ITaskbarList2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITaskbarList3ToITaskbarList2*(
+    x: ptr ITaskbarList3
+): ptr ITaskbarList2 =
+  cast[ptr ITaskbarList2](x)
+
+converter winimConverterITaskbarList3ToITaskbarList*(
+    x: ptr ITaskbarList3
+): ptr ITaskbarList =
+  cast[ptr ITaskbarList](x)
+
+converter winimConverterITaskbarList3ToIUnknown*(x: ptr ITaskbarList3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITaskbarList4ToITaskbarList3*(
+    x: ptr ITaskbarList4
+): ptr ITaskbarList3 =
+  cast[ptr ITaskbarList3](x)
+
+converter winimConverterITaskbarList4ToITaskbarList2*(
+    x: ptr ITaskbarList4
+): ptr ITaskbarList2 =
+  cast[ptr ITaskbarList2](x)
+
+converter winimConverterITaskbarList4ToITaskbarList*(
+    x: ptr ITaskbarList4
+): ptr ITaskbarList =
+  cast[ptr ITaskbarList](x)
+
+converter winimConverterITaskbarList4ToIUnknown*(x: ptr ITaskbarList4): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIStartMenuPinnedListToIUnknown*(
+    x: ptr IStartMenuPinnedList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICDBurnToIUnknown*(x: ptr ICDBurn): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWizardSiteToIUnknown*(x: ptr IWizardSite): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWizardExtensionToIUnknown*(
+    x: ptr IWizardExtension
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWebWizardExtensionToIWizardExtension*(
+    x: ptr IWebWizardExtension
+): ptr IWizardExtension =
+  cast[ptr IWizardExtension](x)
+
+converter winimConverterIWebWizardExtensionToIUnknown*(
+    x: ptr IWebWizardExtension
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPublishingWizardToIWizardExtension*(
+    x: ptr IPublishingWizard
+): ptr IWizardExtension =
+  cast[ptr IWizardExtension](x)
+
+converter winimConverterIPublishingWizardToIUnknown*(
+    x: ptr IPublishingWizard
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFolderViewHostToIUnknown*(
+    x: ptr IFolderViewHost
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExplorerBrowserEventsToIUnknown*(
+    x: ptr IExplorerBrowserEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExplorerBrowserToIUnknown*(
+    x: ptr IExplorerBrowser
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAccessibleObjectToIUnknown*(
+    x: ptr IAccessibleObject
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIResultsFolderToIUnknown*(x: ptr IResultsFolder): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumObjectsToIUnknown*(x: ptr IEnumObjects): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOperationsProgressDialogToIUnknown*(
+    x: ptr IOperationsProgressDialog
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIIOCancelInformationToIUnknown*(
+    x: ptr IIOCancelInformation
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileOperationToIUnknown*(x: ptr IFileOperation): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectProviderToIUnknown*(
+    x: ptr IObjectProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINamespaceWalkCBToIUnknown*(
+    x: ptr INamespaceWalkCB
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINamespaceWalkCB2ToINamespaceWalkCB*(
+    x: ptr INamespaceWalkCB2
+): ptr INamespaceWalkCB =
+  cast[ptr INamespaceWalkCB](x)
+
+converter winimConverterINamespaceWalkCB2ToIUnknown*(
+    x: ptr INamespaceWalkCB2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINamespaceWalkToIUnknown*(x: ptr INamespaceWalk): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAutoCompleteDropDownToIUnknown*(
+    x: ptr IAutoCompleteDropDown
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIBandSiteToIUnknown*(x: ptr IBandSite): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIModalWindowToIUnknown*(x: ptr IModalWindow): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICDBurnExtToIUnknown*(x: ptr ICDBurnExt): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIContextMenuSiteToIUnknown*(
+    x: ptr IContextMenuSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumReadyCallbackToIUnknown*(
+    x: ptr IEnumReadyCallback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumerableViewToIUnknown*(
+    x: ptr IEnumerableView
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInsertItemToIUnknown*(x: ptr IInsertItem): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMenuBandToIUnknown*(x: ptr IMenuBand): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFolderBandPrivToIUnknown*(
+    x: ptr IFolderBandPriv
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRegTreeItemToIUnknown*(x: ptr IRegTreeItem): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIImageRecompressToIUnknown*(
+    x: ptr IImageRecompress
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDeskBarToIOleWindow*(x: ptr IDeskBar): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIDeskBarToIUnknown*(x: ptr IDeskBar): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMenuPopupToIDeskBar*(x: ptr IMenuPopup): ptr IDeskBar =
+  cast[ptr IDeskBar](x)
+
+converter winimConverterIMenuPopupToIOleWindow*(x: ptr IMenuPopup): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIMenuPopupToIUnknown*(x: ptr IMenuPopup): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileIsInUseToIUnknown*(x: ptr IFileIsInUse): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileDialogEventsToIUnknown*(
+    x: ptr IFileDialogEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileDialogToIModalWindow*(
+    x: ptr IFileDialog
+): ptr IModalWindow =
+  cast[ptr IModalWindow](x)
+
+converter winimConverterIFileDialogToIUnknown*(x: ptr IFileDialog): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileSaveDialogToIFileDialog*(
+    x: ptr IFileSaveDialog
+): ptr IFileDialog =
+  cast[ptr IFileDialog](x)
+
+converter winimConverterIFileSaveDialogToIModalWindow*(
+    x: ptr IFileSaveDialog
+): ptr IModalWindow =
+  cast[ptr IModalWindow](x)
+
+converter winimConverterIFileSaveDialogToIUnknown*(
+    x: ptr IFileSaveDialog
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileOpenDialogToIFileDialog*(
+    x: ptr IFileOpenDialog
+): ptr IFileDialog =
+  cast[ptr IFileDialog](x)
+
+converter winimConverterIFileOpenDialogToIModalWindow*(
+    x: ptr IFileOpenDialog
+): ptr IModalWindow =
+  cast[ptr IModalWindow](x)
+
+converter winimConverterIFileOpenDialogToIUnknown*(
+    x: ptr IFileOpenDialog
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileDialogCustomizeToIUnknown*(
+    x: ptr IFileDialogCustomize
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileDialogControlEventsToIUnknown*(
+    x: ptr IFileDialogControlEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileDialog2ToIFileDialog*(
+    x: ptr IFileDialog2
+): ptr IFileDialog =
+  cast[ptr IFileDialog](x)
+
+converter winimConverterIFileDialog2ToIModalWindow*(
+    x: ptr IFileDialog2
+): ptr IModalWindow =
+  cast[ptr IModalWindow](x)
+
+converter winimConverterIFileDialog2ToIUnknown*(x: ptr IFileDialog2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIApplicationAssociationRegistrationToIUnknown*(
+    x: ptr IApplicationAssociationRegistration
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIApplicationAssociationRegistrationUIToIUnknown*(
+    x: ptr IApplicationAssociationRegistrationUI
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDelegateFolderToIUnknown*(
+    x: ptr IDelegateFolder
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIBrowserFrameOptionsToIUnknown*(
+    x: ptr IBrowserFrameOptions
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINewWindowManagerToIUnknown*(
+    x: ptr INewWindowManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAttachmentExecuteToIUnknown*(
+    x: ptr IAttachmentExecute
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellMenuCallbackToIUnknown*(
+    x: ptr IShellMenuCallback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellMenuToIUnknown*(x: ptr IShellMenu): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellRunDllToIUnknown*(x: ptr IShellRunDll): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIKnownFolderToIUnknown*(x: ptr IKnownFolder): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIKnownFolderManagerToIUnknown*(
+    x: ptr IKnownFolderManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISharingConfigurationManagerToIUnknown*(
+    x: ptr ISharingConfigurationManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPreviousVersionsInfoToIUnknown*(
+    x: ptr IPreviousVersionsInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRelatedItemToIUnknown*(x: ptr IRelatedItem): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIIdentityNameToIRelatedItem*(
+    x: ptr IIdentityName
+): ptr IRelatedItem =
+  cast[ptr IRelatedItem](x)
+
+converter winimConverterIIdentityNameToIUnknown*(x: ptr IIdentityName): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDelegateItemToIRelatedItem*(
+    x: ptr IDelegateItem
+): ptr IRelatedItem =
+  cast[ptr IRelatedItem](x)
+
+converter winimConverterIDelegateItemToIUnknown*(x: ptr IDelegateItem): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICurrentItemToIRelatedItem*(
+    x: ptr ICurrentItem
+): ptr IRelatedItem =
+  cast[ptr IRelatedItem](x)
+
+converter winimConverterICurrentItemToIUnknown*(x: ptr ICurrentItem): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITransferMediumItemToIRelatedItem*(
+    x: ptr ITransferMediumItem
+): ptr IRelatedItem =
+  cast[ptr IRelatedItem](x)
+
+converter winimConverterITransferMediumItemToIUnknown*(
+    x: ptr ITransferMediumItem
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUseToBrowseItemToIRelatedItem*(
+    x: ptr IUseToBrowseItem
+): ptr IRelatedItem =
+  cast[ptr IRelatedItem](x)
+
+converter winimConverterIUseToBrowseItemToIUnknown*(
+    x: ptr IUseToBrowseItem
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDisplayItemToIRelatedItem*(
+    x: ptr IDisplayItem
+): ptr IRelatedItem =
+  cast[ptr IRelatedItem](x)
+
+converter winimConverterIDisplayItemToIUnknown*(x: ptr IDisplayItem): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIViewStateIdentityItemToIRelatedItem*(
+    x: ptr IViewStateIdentityItem
+): ptr IRelatedItem =
+  cast[ptr IRelatedItem](x)
+
+converter winimConverterIViewStateIdentityItemToIUnknown*(
+    x: ptr IViewStateIdentityItem
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPreviewItemToIRelatedItem*(
+    x: ptr IPreviewItem
+): ptr IRelatedItem =
+  cast[ptr IRelatedItem](x)
+
+converter winimConverterIPreviewItemToIUnknown*(x: ptr IPreviewItem): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDestinationStreamFactoryToIUnknown*(
+    x: ptr IDestinationStreamFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINewMenuClientToIUnknown*(x: ptr INewMenuClient): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInitializeWithBindCtxToIUnknown*(
+    x: ptr IInitializeWithBindCtx
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellItemFilterToIUnknown*(
+    x: ptr IShellItemFilter
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINameSpaceTreeControlToIUnknown*(
+    x: ptr INameSpaceTreeControl
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINameSpaceTreeControl2ToINameSpaceTreeControl*(
+    x: ptr INameSpaceTreeControl2
+): ptr INameSpaceTreeControl =
+  cast[ptr INameSpaceTreeControl](x)
+
+converter winimConverterINameSpaceTreeControl2ToIUnknown*(
+    x: ptr INameSpaceTreeControl2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINameSpaceTreeControlEventsToIUnknown*(
+    x: ptr INameSpaceTreeControlEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINameSpaceTreeControlDropHandlerToIUnknown*(
+    x: ptr INameSpaceTreeControlDropHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINameSpaceTreeAccessibleToIUnknown*(
+    x: ptr INameSpaceTreeAccessible
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINameSpaceTreeControlCustomDrawToIUnknown*(
+    x: ptr INameSpaceTreeControlCustomDraw
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINameSpaceTreeControlFolderCapabilitiesToIUnknown*(
+    x: ptr INameSpaceTreeControlFolderCapabilities
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPreviewHandlerToIUnknown*(
+    x: ptr IPreviewHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPreviewHandlerFrameToIUnknown*(
+    x: ptr IPreviewHandlerFrame
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITrayDeskBandToIUnknown*(x: ptr ITrayDeskBand): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIBandHostToIUnknown*(x: ptr IBandHost): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExplorerPaneVisibilityToIUnknown*(
+    x: ptr IExplorerPaneVisibility
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIContextMenuCBToIUnknown*(x: ptr IContextMenuCB): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDefaultExtractIconInitToIUnknown*(
+    x: ptr IDefaultExtractIconInit
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExplorerCommandToIUnknown*(
+    x: ptr IExplorerCommand
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExplorerCommandStateToIUnknown*(
+    x: ptr IExplorerCommandState
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInitializeCommandToIUnknown*(
+    x: ptr IInitializeCommand
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumExplorerCommandToIUnknown*(
+    x: ptr IEnumExplorerCommand
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExplorerCommandProviderToIUnknown*(
+    x: ptr IExplorerCommandProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInitializeNetworkFolderToIUnknown*(
+    x: ptr IInitializeNetworkFolder
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOpenControlPanelToIUnknown*(
+    x: ptr IOpenControlPanel
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIComputerInfoChangeNotifyToIUnknown*(
+    x: ptr IComputerInfoChangeNotify
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileSystemBindDataToIUnknown*(
+    x: ptr IFileSystemBindData
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileSystemBindData2ToIFileSystemBindData*(
+    x: ptr IFileSystemBindData2
+): ptr IFileSystemBindData =
+  cast[ptr IFileSystemBindData](x)
+
+converter winimConverterIFileSystemBindData2ToIUnknown*(
+    x: ptr IFileSystemBindData2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICustomDestinationListToIUnknown*(
+    x: ptr ICustomDestinationList
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIApplicationDestinationsToIUnknown*(
+    x: ptr IApplicationDestinations
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIApplicationDocumentListsToIUnknown*(
+    x: ptr IApplicationDocumentLists
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectWithAppUserModelIDToIUnknown*(
+    x: ptr IObjectWithAppUserModelID
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectWithProgIDToIUnknown*(
+    x: ptr IObjectWithProgID
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUpdateIDListToIUnknown*(x: ptr IUpdateIDList): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDesktopGadgetToIUnknown*(x: ptr IDesktopGadget): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDesktopWallpaperToIUnknown*(
+    x: ptr IDesktopWallpaper
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHomeGroupToIUnknown*(x: ptr IHomeGroup): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInitializeWithPropertyStoreToIUnknown*(
+    x: ptr IInitializeWithPropertyStore
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIOpenSearchSourceToIUnknown*(
+    x: ptr IOpenSearchSource
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellLibraryToIUnknown*(x: ptr IShellLibrary): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPlaybackManagerEventsToIUnknown*(
+    x: ptr IPlaybackManagerEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPlaybackManagerToIUnknown*(
+    x: ptr IPlaybackManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDefaultFolderMenuInitializeToIUnknown*(
+    x: ptr IDefaultFolderMenuInitialize
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIApplicationActivationManagerToIUnknown*(
+    x: ptr IApplicationActivationManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAssocHandlerInvokerToIUnknown*(
+    x: ptr IAssocHandlerInvoker
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAssocHandlerToIUnknown*(x: ptr IAssocHandler): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumAssocHandlersToIUnknown*(
+    x: ptr IEnumAssocHandlers
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDataObjectProviderToIUnknown*(
+    x: ptr IDataObjectProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDataTransferManagerInteropToIUnknown*(
+    x: ptr IDataTransferManagerInterop
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFrameworkInputPaneHandlerToIUnknown*(
+    x: ptr IFrameworkInputPaneHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFrameworkInputPaneToIUnknown*(
+    x: ptr IFrameworkInputPane
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISearchableApplicationToIUnknown*(
+    x: ptr ISearchableApplication
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAccessibilityDockingServiceCallbackToIUnknown*(
+    x: ptr IAccessibilityDockingServiceCallback
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAccessibilityDockingServiceToIUnknown*(
+    x: ptr IAccessibilityDockingService
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAppVisibilityEventsToIUnknown*(
+    x: ptr IAppVisibilityEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAppVisibilityToIUnknown*(x: ptr IAppVisibility): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPackageExecutionStateChangeNotificationToIUnknown*(
+    x: ptr IPackageExecutionStateChangeNotification
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIPackageDebugSettingsToIUnknown*(
+    x: ptr IPackageDebugSettings
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExecuteCommandApplicationHostEnvironmentToIUnknown*(
+    x: ptr IExecuteCommandApplicationHostEnvironment
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExecuteCommandHostToIUnknown*(
+    x: ptr IExecuteCommandHost
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIApplicationDesignModeSettingsToIUnknown*(
+    x: ptr IApplicationDesignModeSettings
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInitializeWithWindowToIUnknown*(
+    x: ptr IInitializeWithWindow
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHandlerInfoToIUnknown*(x: ptr IHandlerInfo): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIHandlerActivationHostToIUnknown*(
+    x: ptr IHandlerActivationHost
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExtractIconAToIUnknown*(x: ptr IExtractIconA): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExtractIconWToIUnknown*(x: ptr IExtractIconW): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellIconOverlayIdentifierToIUnknown*(
+    x: ptr IShellIconOverlayIdentifier
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellIconOverlayManagerToIUnknown*(
+    x: ptr IShellIconOverlayManager
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellIconOverlayToIUnknown*(
+    x: ptr IShellIconOverlay
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellExecuteHookAToIUnknown*(
+    x: ptr IShellExecuteHookA
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellExecuteHookWToIUnknown*(
+    x: ptr IShellExecuteHookW
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIURLSearchHookToIUnknown*(x: ptr IURLSearchHook): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISearchContextToIUnknown*(x: ptr ISearchContext): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIURLSearchHook2ToIURLSearchHook*(
+    x: ptr IURLSearchHook2
+): ptr IURLSearchHook =
+  cast[ptr IURLSearchHook](x)
+
+converter winimConverterIURLSearchHook2ToIUnknown*(
+    x: ptr IURLSearchHook2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINewShortcutHookAToIUnknown*(
+    x: ptr INewShortcutHookA
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINewShortcutHookWToIUnknown*(
+    x: ptr INewShortcutHookW
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICopyHookAToIUnknown*(x: ptr ICopyHookA): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICopyHookWToIUnknown*(x: ptr ICopyHookW): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileViewerSiteToIUnknown*(
+    x: ptr IFileViewerSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileViewerAToIUnknown*(x: ptr IFileViewerA): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIFileViewerWToIUnknown*(x: ptr IFileViewerW): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellDetailsToIUnknown*(x: ptr IShellDetails): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjMgrToIUnknown*(x: ptr IObjMgr): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICurrentWorkingDirectoryToIUnknown*(
+    x: ptr ICurrentWorkingDirectory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIACListToIUnknown*(x: ptr IACList): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIACList2ToIACList*(x: ptr IACList2): ptr IACList =
+  cast[ptr IACList](x)
+
+converter winimConverterIACList2ToIUnknown*(x: ptr IACList2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIProgressDialogToIUnknown*(
+    x: ptr IProgressDialog
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDockingWindowSiteToIOleWindow*(
+    x: ptr IDockingWindowSite
+): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIDockingWindowSiteToIUnknown*(
+    x: ptr IDockingWindowSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDockingWindowFrameToIOleWindow*(
+    x: ptr IDockingWindowFrame
+): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIDockingWindowFrameToIUnknown*(
+    x: ptr IDockingWindowFrame
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIThumbnailCaptureToIUnknown*(
+    x: ptr IThumbnailCapture
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIEnumShellImageStoreToIUnknown*(
+    x: ptr IEnumShellImageStore
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellImageStoreToIUnknown*(
+    x: ptr IShellImageStore
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellFolderBandToIUnknown*(
+    x: ptr IShellFolderBand
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDeskBarClientToIOleWindow*(
+    x: ptr IDeskBarClient
+): ptr IOleWindow =
+  cast[ptr IOleWindow](x)
+
+converter winimConverterIDeskBarClientToIUnknown*(x: ptr IDeskBarClient): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveDesktopToIUnknown*(x: ptr IActiveDesktop): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIActiveDesktopPToIUnknown*(
+    x: ptr IActiveDesktopP
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIADesktopP2ToIUnknown*(x: ptr IADesktopP2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIColumnProviderToIUnknown*(
+    x: ptr IColumnProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellChangeNotifyToIUnknown*(
+    x: ptr IShellChangeNotify
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIQueryInfoToIUnknown*(x: ptr IQueryInfo): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDefViewFrameToIUnknown*(x: ptr IDefViewFrame): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDocViewSiteToIUnknown*(x: ptr IDocViewSite): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInitializeObjectToIUnknown*(
+    x: ptr IInitializeObject
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIBanneredBarToIUnknown*(x: ptr IBanneredBar): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellFolderViewCBToIUnknown*(
+    x: ptr IShellFolderViewCB
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIShellFolderViewToIUnknown*(
+    x: ptr IShellFolderView
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterINamedPropertyBagToIUnknown*(
+    x: ptr INamedPropertyBag
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
 when winimUnicode:
   type
     DRAGINFO* = DRAGINFOW
@@ -8923,6 +22639,7 @@
     LPFILEDESCRIPTOR* = LPFILEDESCRIPTORW
     FILEGROUPDESCRIPTOR* = FILEGROUPDESCRIPTORW
     LPFILEGROUPDESCRIPTOR* = LPFILEGROUPDESCRIPTORW
+
   const
     SZ_CONTENTTYPE_HTML* = SZ_CONTENTTYPE_HTMLW
     SZ_CONTENTTYPE_CDF* = SZ_CONTENTTYPE_CDFW
@@ -8949,192 +22666,912 @@
     SHCNF_PATH* = SHCNF_PATHW
     SHCNF_PRINTER* = SHCNF_PRINTERW
     SHARD_PATH* = SHARD_PATHW
-  proc StrFormatByteSize64*(qdw: LONGLONG, szBuf: LPWSTR, uiBufSize: UINT): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFormatByteSizeW".}
-  proc StrCat*(psz1: LPWSTR, psz2: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCatW".}
-  proc StrCmp*(psz1: LPCWSTR, psz2: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpW".}
-  proc StrCmpI*(psz1: LPCWSTR, psz2: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpIW".}
-  proc StrCpy*(psz1: LPWSTR, psz2: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCpyW".}
-  proc StrCpyN*(psz1: LPWSTR, psz2: LPCWSTR, cchMax: int32): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCpyNW".}
-  proc DragQueryFile*(hDrop: HDROP, iFile: UINT, lpszFile: LPWSTR, cch: UINT): UINT {.winapi, stdcall, dynlib: "shell32", importc: "DragQueryFileW".}
-  proc ShellExecute*(hwnd: HWND, lpOperation: LPCWSTR, lpFile: LPCWSTR, lpParameters: LPCWSTR, lpDirectory: LPCWSTR, nShowCmd: INT): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc: "ShellExecuteW".}
-  proc FindExecutable*(lpFile: LPCWSTR, lpDirectory: LPCWSTR, lpResult: LPWSTR): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc: "FindExecutableW".}
-  proc ShellAbout*(hWnd: HWND, szApp: LPCWSTR, szOtherStuff: LPCWSTR, hIcon: HICON): INT {.winapi, stdcall, dynlib: "shell32", importc: "ShellAboutW".}
-  proc ExtractAssociatedIcon*(hInst: HINSTANCE, pszIconPath: LPWSTR, piIcon: ptr WORD): HICON {.winapi, stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconW".}
-  proc ExtractAssociatedIconEx*(hInst: HINSTANCE, pszIconPath: LPWSTR, piIconIndex: ptr WORD, piIconId: ptr WORD): HICON {.winapi, stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconExW".}
-  proc ExtractIcon*(hInst: HINSTANCE, pszExeFileName: LPCWSTR, nIconIndex: UINT): HICON {.winapi, stdcall, dynlib: "shell32", importc: "ExtractIconW".}
-  proc DoEnvironmentSubst*(pszSrc: LPWSTR, cchSrc: UINT): DWORD {.winapi, stdcall, dynlib: "shell32", importc: "DoEnvironmentSubstW".}
-  proc ExtractIconEx*(lpszFile: LPCWSTR, nIconIndex: int32, phiconLarge: ptr HICON, phiconSmall: ptr HICON, nIcons: UINT): UINT {.winapi, stdcall, dynlib: "shell32", importc: "ExtractIconExW".}
-  proc SHFileOperation*(lpFileOp: LPSHFILEOPSTRUCTW): int32 {.winapi, stdcall, dynlib: "shell32", importc: "SHFileOperationW".}
-  proc ShellExecuteEx*(pExecInfo: ptr SHELLEXECUTEINFOW): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "ShellExecuteExW".}
-  proc SHQueryRecycleBin*(pszRootPath: LPCWSTR, pSHQueryRBInfo: LPSHQUERYRBINFO): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHQueryRecycleBinW".}
-  proc SHEmptyRecycleBin*(hwnd: HWND, pszRootPath: LPCWSTR, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHEmptyRecycleBinW".}
-  proc Shell_NotifyIcon*(dwMessage: DWORD, lpData: PNOTIFYICONDATAW): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "Shell_NotifyIconW".}
-  proc SHGetFileInfo*(pszPath: LPCWSTR, dwFileAttributes: DWORD, psfi: ptr SHFILEINFOW, cbFileInfo: UINT, uFlags: UINT): DWORD_PTR {.winapi, stdcall, dynlib: "shell32", importc: "SHGetFileInfoW".}
-  proc SHGetDiskFreeSpace*(pszDirectoryName: LPCWSTR, pulFreeBytesAvailableToCaller: ptr ULARGE_INTEGER, pulTotalNumberOfBytes: ptr ULARGE_INTEGER, pulTotalNumberOfFreeBytes: ptr ULARGE_INTEGER): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetDiskFreeSpaceExW".}
-  proc SHGetDiskFreeSpaceEx*(pszDirectoryName: LPCWSTR, pulFreeBytesAvailableToCaller: ptr ULARGE_INTEGER, pulTotalNumberOfBytes: ptr ULARGE_INTEGER, pulTotalNumberOfFreeBytes: ptr ULARGE_INTEGER): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetDiskFreeSpaceExW".}
-  proc SHGetNewLinkInfo*(pszLinkTo: LPCWSTR, pszDir: LPCWSTR, pszName: LPWSTR, pfMustCopy: ptr WINBOOL, uFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetNewLinkInfoW".}
-  proc SHInvokePrinterCommand*(hwnd: HWND, uAction: UINT, lpBuf1: LPCWSTR, lpBuf2: LPCWSTR, fModal: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHInvokePrinterCommandW".}
-  proc ShellMessageBox*(hAppInst: HINSTANCE, hWnd: HWND, lpcText: LPCWSTR, lpcTitle: LPCWSTR, fuStyle: UINT): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "ShellMessageBoxW".}
-  proc IsLFNDrive*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "IsLFNDriveW".}
-  proc SHEnumerateUnreadMailAccounts*(hKeyUser: HKEY, dwIndex: DWORD, pszMailAddress: LPWSTR, cchMailAddress: int32): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHEnumerateUnreadMailAccountsW".}
-  proc SHGetUnreadMailCount*(hKeyUser: HKEY, pszMailAddress: LPCWSTR, pdwCount: ptr DWORD, pFileTime: ptr FILETIME, pszShellExecuteCommand: LPWSTR, cchShellExecuteCommand: int32): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHGetUnreadMailCountW".}
-  proc SHSetUnreadMailCount*(pszMailAddress: LPCWSTR, dwCount: DWORD, pszShellExecuteCommand: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHSetUnreadMailCountW".}
-  proc StrRetToStr*(pstr: ptr STRRET, pidl: LPCITEMIDLIST, ppsz: ptr LPWSTR): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRetToStrW".}
-  proc StrRetToBuf*(pstr: ptr STRRET, pidl: LPCITEMIDLIST, pszBuf: LPWSTR, cchBuf: UINT): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRetToBufW".}
-  proc SHStrDup*(psz: LPCWSTR, ppwsz: ptr ptr WCHAR): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "SHStrDupW".}
-  proc IsCharSpace*(wch: WCHAR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "IsCharSpaceW".}
-  proc StrCmpC*(pszStr1: LPCWSTR, pszStr2: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpCW".}
-  proc StrCmpIC*(pszStr1: LPCWSTR, pszStr2: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpICW".}
-  proc StrChr*(lpStart: LPCWSTR, wMatch: WCHAR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrChrW".}
-  proc StrRChr*(lpStart: LPCWSTR, lpEnd: LPCWSTR, wMatch: WCHAR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRChrW".}
-  proc StrChrI*(lpStart: LPCWSTR, wMatch: WCHAR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrChrIW".}
-  proc StrRChrI*(lpStart: LPCWSTR, lpEnd: LPCWSTR, wMatch: WCHAR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRChrIW".}
-  proc StrCmpN*(lpStr1: LPCWSTR, lpStr2: LPCWSTR, nChar: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNW".}
-  proc StrCmpNI*(lpStr1: LPCWSTR, lpStr2: LPCWSTR, nChar: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNIW".}
-  proc StrStr*(lpFirst: LPCWSTR, lpSrch: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrStrW".}
-  proc StrStrI*(lpFirst: LPCWSTR, lpSrch: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrStrIW".}
-  proc StrDup*(lpSrch: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrDupW".}
-  proc StrRStrI*(lpSource: LPCWSTR, lpLast: LPCWSTR, lpSrch: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRStrIW".}
-  proc StrCSpn*(lpStr: LPCWSTR, lpSet: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCSpnW".}
-  proc StrCSpnI*(lpStr: LPCWSTR, lpSet: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCSpnIW".}
-  proc StrSpn*(psz: LPCWSTR, pszSet: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrSpnW".}
-  proc StrToInt*(lpSrc: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToIntW".}
-  proc StrPBrk*(psz: LPCWSTR, pszSet: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrPBrkW".}
-  proc StrToIntEx*(pszString: LPCWSTR, dwFlags: DWORD, piRet: ptr int32): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToIntExW".}
-  proc StrToInt64Ex*(pszString: LPCWSTR, dwFlags: DWORD, pllRet: ptr LONGLONG): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToInt64ExW".}
-  proc StrFromTimeInterval*(pszOut: LPWSTR, cchMax: UINT, dwTimeMS: DWORD, digits: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFromTimeIntervalW".}
-  proc StrFormatByteSize*(qdw: LONGLONG, szBuf: LPWSTR, uiBufSize: UINT): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFormatByteSizeW".}
-  proc StrFormatKBSize*(qdw: LONGLONG, szBuf: LPWSTR, uiBufSize: UINT): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFormatKBSizeW".}
-  proc StrNCat*(psz1: LPWSTR, psz2: LPCWSTR, cchMax: int32): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrNCatW".}
-  proc StrTrim*(psz: LPWSTR, pszTrimChars: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrTrimW".}
-  proc StrCatBuff*(pszDest: LPWSTR, pszSrc: LPCWSTR, cchDestBuffSize: int32): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCatBuffW".}
-  proc ChrCmpI*(w1: WCHAR, w2: WCHAR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "ChrCmpIW".}
-  proc wvnsprintf*(lpOut: LPWSTR, cchLimitIn: int32, lpFmt: LPCWSTR, arglist: va_list): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "wvnsprintfW".}
-  proc wnsprintf*(lpOut: LPWSTR, cchLimitIn: int32, lpFmt: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "wnsprintfW".}
-  proc StrIsIntlEqual*(fCaseSens: WINBOOL, lpString1: LPCWSTR, lpString2: LPCWSTR, nChar: int32): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrIsIntlEqualW".}
-  proc StrToLong*(lpSrc: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToIntW".}
-  proc StrNCmp*(lpStr1: LPCWSTR, lpStr2: LPCWSTR, nChar: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNW".}
-  proc StrNCmpI*(lpStr1: LPCWSTR, lpStr2: LPCWSTR, nChar: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNIW".}
-  proc StrNCpy*(psz1: LPWSTR, psz2: LPCWSTR, cchMax: int32): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCpyNW".}
-  proc StrCatN*(psz1: LPWSTR, psz2: LPCWSTR, cchMax: int32): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrNCatW".}
-  proc PathAddBackslash*(pszPath: LPWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathAddBackslashW".}
-  proc PathAddExtension*(pszPath: LPWSTR, pszExt: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathAddExtensionW".}
-  proc PathBuildRoot*(pszRoot: LPWSTR, iDrive: int32): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathBuildRootW".}
-  proc PathCombine*(pszDest: LPWSTR, pszDir: LPCWSTR, pszFile: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCombineW".}
-  proc PathFileExists*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFileExistsW".}
-  proc PathFindExtension*(pszPath: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindExtensionW".}
-  proc PathFindFileName*(pszPath: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindFileNameW".}
-  proc PathFindNextComponent*(pszPath: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindNextComponentW".}
-  proc PathGetArgs*(pszPath: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathGetArgsW".}
-  proc PathFindSuffixArray*(pszPath: LPCWSTR, apszSuffix: ptr LPCWSTR, iArraySize: int32): LPCWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindSuffixArrayW".}
-  proc PathIsLFNFileSpec*(lpName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsLFNFileSpecW".}
-  proc PathGetDriveNumber*(pszPath: LPCWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "PathGetDriveNumberW".}
-  proc PathIsDirectory*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsDirectoryW".}
-  proc PathIsDirectoryEmpty*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsDirectoryEmptyW".}
-  proc PathIsFileSpec*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsFileSpecW".}
-  proc PathIsPrefix*(pszPrefix: LPCWSTR, pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsPrefixW".}
-  proc PathIsRelative*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsRelativeW".}
-  proc PathIsRoot*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsRootW".}
-  proc PathIsSameRoot*(pszPath1: LPCWSTR, pszPath2: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsSameRootW".}
-  proc PathIsUNC*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsUNCW".}
-  proc PathIsNetworkPath*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsNetworkPathW".}
-  proc PathIsUNCServer*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsUNCServerW".}
-  proc PathIsUNCServerShare*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsUNCServerShareW".}
-  proc PathIsURL*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsURLW".}
-  proc PathRemoveBackslash*(pszPath: LPWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveBackslashW".}
-  proc PathSkipRoot*(pszPath: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathSkipRootW".}
-  proc PathStripPath*(pszPath: LPWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathStripPathW".}
-  proc PathStripToRoot*(pszPath: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathStripToRootW".}
-  proc PathMakeSystemFolder*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathMakeSystemFolderW".}
-  proc PathUnmakeSystemFolder*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUnmakeSystemFolderW".}
-  proc PathIsSystemFolder*(pszPath: LPCWSTR, dwAttrb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsSystemFolderW".}
-  proc PathUndecorate*(pszPath: LPWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUndecorateW".}
-  proc PathUnExpandEnvStrings*(pszPath: LPCWSTR, pszBuf: LPWSTR, cchBuf: UINT): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUnExpandEnvStringsW".}
-  proc PathAppend*(pszPath: LPWSTR, pMore: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathAppendW".}
-  proc PathCanonicalize*(pszBuf: LPWSTR, pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCanonicalizeW".}
-  proc PathCompactPath*(hDC: HDC, pszPath: LPWSTR, dx: UINT): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCompactPathW".}
-  proc PathCompactPathEx*(pszOut: LPWSTR, pszSrc: LPCWSTR, cchMax: UINT, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCompactPathExW".}
-  proc PathCommonPrefix*(pszFile1: LPCWSTR, pszFile2: LPCWSTR, achPath: LPWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCommonPrefixW".}
-  proc PathFindOnPath*(pszPath: LPWSTR, ppszOtherDirs: ptr LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindOnPathW".}
-  proc PathGetCharType*(ch: WCHAR): UINT {.winapi, stdcall, dynlib: "shlwapi", importc: "PathGetCharTypeW".}
-  proc PathIsContentType*(pszPath: LPCWSTR, pszContentType: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsContentTypeW".}
-  proc PathMakePretty*(pszPath: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathMakePrettyW".}
-  proc PathMatchSpec*(pszFile: LPCWSTR, pszSpec: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathMatchSpecW".}
-  proc PathParseIconLocation*(pszIconFile: LPWSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "PathParseIconLocationW".}
-  proc PathQuoteSpaces*(lpsz: LPWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathQuoteSpacesW".}
-  proc PathRelativePathTo*(pszPath: LPWSTR, pszFrom: LPCWSTR, dwAttrFrom: DWORD, pszTo: LPCWSTR, dwAttrTo: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRelativePathToW".}
-  proc PathRemoveArgs*(pszPath: LPWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveArgsW".}
-  proc PathRemoveBlanks*(pszPath: LPWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveBlanksW".}
-  proc PathRemoveExtension*(pszPath: LPWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveExtensionW".}
-  proc PathRemoveFileSpec*(pszPath: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveFileSpecW".}
-  proc PathRenameExtension*(pszPath: LPWSTR, pszExt: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRenameExtensionW".}
-  proc PathSearchAndQualify*(pszPath: LPCWSTR, pszBuf: LPWSTR, cchBuf: UINT): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathSearchAndQualifyW".}
-  proc PathSetDlgItemPath*(hDlg: HWND, id: int32, pszPath: LPCWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathSetDlgItemPathW".}
-  proc PathUnquoteSpaces*(lpsz: LPWSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUnquoteSpacesW".}
-  proc UrlCompare*(psz1: LPCWSTR, psz2: LPCWSTR, fIgnoreSlash: WINBOOL): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCompareW".}
-  proc UrlCombine*(pszBase: LPCWSTR, pszRelative: LPCWSTR, pszCombined: LPWSTR, pcchCombined: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCombineW".}
-  proc UrlCanonicalize*(pszUrl: LPCWSTR, pszCanonicalized: LPWSTR, pcchCanonicalized: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCanonicalizeW".}
-  proc UrlIsOpaque*(pszURL: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlIsOpaqueW".}
-  proc UrlGetLocation*(psz1: LPCWSTR): LPCWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlGetLocationW".}
-  proc UrlUnescape*(pszUrl: LPWSTR, pszUnescaped: LPWSTR, pcchUnescaped: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlUnescapeW".}
-  proc UrlEscape*(pszUrl: LPCWSTR, pszEscaped: LPWSTR, pcchEscaped: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlEscapeW".}
-  proc UrlCreateFromPath*(pszPath: LPCWSTR, pszUrl: LPWSTR, pcchUrl: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCreateFromPathW".}
-  proc PathCreateFromUrl*(pszUrl: LPCWSTR, pszPath: LPWSTR, pcchPath: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCreateFromUrlW".}
-  proc UrlHash*(pszUrl: LPCWSTR, pbHash: LPBYTE, cbHash: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlHashW".}
-  proc UrlGetPart*(pszIn: LPCWSTR, pszOut: LPWSTR, pcchOut: LPDWORD, dwPart: DWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlGetPartW".}
-  proc UrlApplyScheme*(pszIn: LPCWSTR, pszOut: LPWSTR, pcchOut: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlApplySchemeW".}
-  proc UrlIs*(pszUrl: LPCWSTR, UrlIs: TURLIS): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlIsW".}
-  proc SHDeleteEmptyKey*(hkey: HKEY, pszSubKey: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHDeleteEmptyKeyW".}
-  proc SHDeleteKey*(hkey: HKEY, pszSubKey: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHDeleteKeyW".}
-  proc SHDeleteValue*(hkey: HKEY, pszSubKey: LPCWSTR, pszValue: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHDeleteValueW".}
-  proc SHGetValue*(hkey: HKEY, pszSubKey: LPCWSTR, pszValue: LPCWSTR, pdwType: ptr DWORD, pvData: pointer, pcbData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHGetValueW".}
-  proc SHSetValue*(hkey: HKEY, pszSubKey: LPCWSTR, pszValue: LPCWSTR, dwType: DWORD, pvData: LPCVOID, cbData: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHSetValueW".}
-  proc SHRegGetValue*(hkey: HKEY, pszSubKey: LPCWSTR, pszValue: LPCWSTR, dwFlags: SRRF, pdwType: ptr DWORD, pvData: pointer, pcbData: ptr DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetValueW".}
-  proc SHQueryValueEx*(hkey: HKEY, pszValue: LPCWSTR, pdwReserved: ptr DWORD, pdwType: ptr DWORD, pvData: pointer, pcbData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHQueryValueExW".}
-  proc SHEnumKeyEx*(hkey: HKEY, dwIndex: DWORD, pszName: LPWSTR, pcchName: LPDWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHEnumKeyExW".}
-  proc SHEnumValue*(hkey: HKEY, dwIndex: DWORD, pszValueName: LPWSTR, pcchValueName: LPDWORD, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHEnumValueW".}
-  proc SHQueryInfoKey*(hkey: HKEY, pcSubKeys: LPDWORD, pcchMaxSubKeyLen: LPDWORD, pcValues: LPDWORD, pcchMaxValueNameLen: LPDWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHQueryInfoKeyW".}
-  proc SHCopyKey*(hkeySrc: HKEY, wszSrcSubKey: LPCWSTR, hkeyDest: HKEY, fReserved: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHCopyKeyW".}
-  proc SHRegGetPath*(hKey: HKEY, pcszSubKey: LPCWSTR, pcszValue: LPCWSTR, pszPath: LPWSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetPathW".}
-  proc SHRegSetPath*(hKey: HKEY, pcszSubKey: LPCWSTR, pcszValue: LPCWSTR, pcszPath: LPCWSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegSetPathW".}
-  proc SHRegCreateUSKey*(pwzPath: LPCWSTR, samDesired: REGSAM, hRelativeUSKey: HUSKEY, phNewUSKey: PHUSKEY, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegCreateUSKeyW".}
-  proc SHRegOpenUSKey*(pwzPath: LPCWSTR, samDesired: REGSAM, hRelativeUSKey: HUSKEY, phNewUSKey: PHUSKEY, fIgnoreHKCU: WINBOOL): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegOpenUSKeyW".}
-  proc SHRegQueryUSValue*(hUSKey: HUSKEY, pwzValue: LPCWSTR, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD, fIgnoreHKCU: WINBOOL, pvDefaultData: pointer, dwDefaultDataSize: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegQueryUSValueW".}
-  proc SHRegWriteUSValue*(hUSKey: HUSKEY, pwzValue: LPCWSTR, dwType: DWORD, pvData: pointer, cbData: DWORD, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegWriteUSValueW".}
-  proc SHRegDeleteUSValue*(hUSKey: HUSKEY, pwzValue: LPCWSTR, delRegFlags: SHREGDEL_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegDeleteUSValueW".}
-  proc SHRegDeleteEmptyUSKey*(hUSKey: HUSKEY, pwzSubKey: LPCWSTR, delRegFlags: SHREGDEL_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegDeleteEmptyUSKeyW".}
-  proc SHRegEnumUSKey*(hUSKey: HUSKEY, dwIndex: DWORD, pwzName: LPWSTR, pcchName: LPDWORD, enumRegFlags: SHREGENUM_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegEnumUSKeyW".}
-  proc SHRegEnumUSValue*(hUSkey: HUSKEY, dwIndex: DWORD, pszValueName: LPWSTR, pcchValueName: LPDWORD, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD, enumRegFlags: SHREGENUM_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegEnumUSValueW".}
-  proc SHRegQueryInfoUSKey*(hUSKey: HUSKEY, pcSubKeys: LPDWORD, pcchMaxSubKeyLen: LPDWORD, pcValues: LPDWORD, pcchMaxValueNameLen: LPDWORD, enumRegFlags: SHREGENUM_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegQueryInfoUSKeyW".}
-  proc SHRegGetUSValue*(pwzSubKey: LPCWSTR, pwzValue: LPCWSTR, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD, fIgnoreHKCU: WINBOOL, pvDefaultData: pointer, dwDefaultDataSize: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetUSValueW".}
-  proc SHRegSetUSValue*(pwzSubKey: LPCWSTR, pwzValue: LPCWSTR, dwType: DWORD, pvData: pointer, cbData: DWORD, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegSetUSValueW".}
-  proc SHRegGetInt*(hk: HKEY, pwzKey: LPCWSTR, iDefault: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetIntW".}
-  proc SHRegGetBoolUSValue*(pszSubKey: LPCWSTR, pszValue: LPCWSTR, fIgnoreHKCU: WINBOOL, fDefault: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetBoolUSValueW".}
-  proc AssocQueryString*(flags: ASSOCF, str: ASSOCSTR, pszAssoc: LPCWSTR, pszExtra: LPCWSTR, pszOut: LPWSTR, pcchOut: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "AssocQueryStringW".}
-  proc AssocQueryStringByKey*(flags: ASSOCF, str: ASSOCSTR, hkAssoc: HKEY, pszExtra: LPCWSTR, pszOut: LPWSTR, pcchOut: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "AssocQueryStringByKeyW".}
-  proc AssocQueryKey*(flags: ASSOCF, key: ASSOCKEY, pszAssoc: LPCWSTR, pszExtra: LPCWSTR, phkeyOut: ptr HKEY): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "AssocQueryKeyW".}
-  proc SHOpenRegStream2*(hkey: HKEY, pszSubkey: LPCWSTR, pszValue: LPCWSTR, grfMode: DWORD): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc: "SHOpenRegStream2W".}
-  proc SHCreateStreamOnFile*(pszFile: LPCWSTR, grfMode: DWORD, ppstm: ptr ptr IStream): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "SHCreateStreamOnFileW".}
-  proc SHOpenRegStream*(hkey: HKEY, pszSubkey: LPCWSTR, pszValue: LPCWSTR, grfMode: DWORD): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc: "SHOpenRegStream2W".}
-  proc GetAcceptLanguages*(psz: LPWSTR, pcch: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "GetAcceptLanguagesW".}
-  proc SHGetIconOverlayIndex*(pszIconPath: LPCWSTR, iIconIndex: int32): int32 {.winapi, stdcall, dynlib: "shell32", importc: "SHGetIconOverlayIndexW".}
-  proc ILCreateFromPath*(pszPath: PCWSTR): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc: "ILCreateFromPathW".}
-  proc SHGetPathFromIDList*(pidl: PCIDLIST_ABSOLUTE, pszPath: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetPathFromIDListW".}
-  proc SHCreateDirectoryEx*(hwnd: HWND, pszPath: LPCWSTR, psa: ptr SECURITY_ATTRIBUTES): int32 {.winapi, stdcall, dynlib: "shell32", importc: "SHCreateDirectoryExW".}
-  proc SHGetSpecialFolderPath*(hwnd: HWND, pszPath: LPWSTR, csidl: int32, fCreate: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetSpecialFolderPathW".}
-  proc SHGetFolderPath*(hwnd: HWND, csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHGetFolderPathW".}
-  proc SHSetFolderPath*(csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHSetFolderPathW".}
-  proc SHGetFolderPathAndSubDir*(hwnd: HWND, csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszSubDir: LPCWSTR, pszPath: LPWSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHGetFolderPathAndSubDirW".}
-  proc SHBrowseForFolder*(lpbi: LPBROWSEINFOW): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc: "SHBrowseForFolderW".}
-  proc SHUpdateImage*(pszHashItem: LPCWSTR, iIndex: int32, uFlags: UINT, iImageIndex: int32): void {.winapi, stdcall, dynlib: "shell32", importc: "SHUpdateImageW".}
-  proc SHGetDataFromIDList*(psf: ptr IShellFolder, pidl: PCUITEMID_CHILD, nFormat: int32, pv: pointer, cb: int32): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHGetDataFromIDListW".}
-  proc PathIsSlow*(pszFile: LPCWSTR, dwAttr: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "PathIsSlowW".}
-  proc SHStartNetConnectionDialog*(hwnd: HWND, pszRemoteName: LPCWSTR, dwType: DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHStartNetConnectionDialogW".}
-  proc SHDefExtractIcon*(pszIconFile: LPCWSTR, iIndex: int32, uFlags: UINT, phiconLarge: ptr HICON, phiconSmall: ptr HICON, nIconSize: UINT): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHDefExtractIconW".}
-  proc Shell_GetCachedImageIndex*(pszIconPath: LPCWSTR, iIconIndex: int32, uIconFlags: UINT): int32 {.winapi, stdcall, dynlib: "shell32", importc: "Shell_GetCachedImageIndexW".}
-  proc SHOpenPropSheet*(pszCaption: LPCWSTR, ahkeys: ptr HKEY, ckeys: UINT, pclsidDefault: ptr CLSID, pdtobj: ptr IDataObject, psb: ptr IShellBrowser, pStartPage: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHOpenPropSheetW".}
-  proc SHPathPrepareForWrite*(hwnd: HWND, punkEnableModless: ptr IUnknown, pszPath: LPCWSTR, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHPathPrepareForWriteW".}
-  proc SHCreateFileExtractIcon*(pszFile: LPCWSTR, dwFileAttributes: DWORD, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHCreateFileExtractIconW".}
+  proc StrFormatByteSize64*(
+    qdw: LONGLONG, szBuf: LPWSTR, uiBufSize: UINT
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFormatByteSizeW".}
+
+  proc StrCat*(
+    psz1: LPWSTR, psz2: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCatW".}
+
+  proc StrCmp*(
+    psz1: LPCWSTR, psz2: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpW".}
+
+  proc StrCmpI*(
+    psz1: LPCWSTR, psz2: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpIW".}
+
+  proc StrCpy*(
+    psz1: LPWSTR, psz2: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCpyW".}
+
+  proc StrCpyN*(
+    psz1: LPWSTR, psz2: LPCWSTR, cchMax: int32
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCpyNW".}
+
+  proc DragQueryFile*(
+    hDrop: HDROP, iFile: UINT, lpszFile: LPWSTR, cch: UINT
+  ): UINT {.winapi, stdcall, dynlib: "shell32", importc: "DragQueryFileW".}
+
+  proc ShellExecute*(
+    hwnd: HWND,
+    lpOperation: LPCWSTR,
+    lpFile: LPCWSTR,
+    lpParameters: LPCWSTR,
+    lpDirectory: LPCWSTR,
+    nShowCmd: INT,
+  ): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc: "ShellExecuteW".}
+
+  proc FindExecutable*(
+    lpFile: LPCWSTR, lpDirectory: LPCWSTR, lpResult: LPWSTR
+  ): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc: "FindExecutableW".}
+
+  proc ShellAbout*(
+    hWnd: HWND, szApp: LPCWSTR, szOtherStuff: LPCWSTR, hIcon: HICON
+  ): INT {.winapi, stdcall, dynlib: "shell32", importc: "ShellAboutW".}
+
+  proc ExtractAssociatedIcon*(
+    hInst: HINSTANCE, pszIconPath: LPWSTR, piIcon: ptr WORD
+  ): HICON {.winapi, stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconW".}
+
+  proc ExtractAssociatedIconEx*(
+    hInst: HINSTANCE, pszIconPath: LPWSTR, piIconIndex: ptr WORD, piIconId: ptr WORD
+  ): HICON {.winapi, stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconExW".}
+
+  proc ExtractIcon*(
+    hInst: HINSTANCE, pszExeFileName: LPCWSTR, nIconIndex: UINT
+  ): HICON {.winapi, stdcall, dynlib: "shell32", importc: "ExtractIconW".}
+
+  proc DoEnvironmentSubst*(
+    pszSrc: LPWSTR, cchSrc: UINT
+  ): DWORD {.winapi, stdcall, dynlib: "shell32", importc: "DoEnvironmentSubstW".}
+
+  proc ExtractIconEx*(
+    lpszFile: LPCWSTR,
+    nIconIndex: int32,
+    phiconLarge: ptr HICON,
+    phiconSmall: ptr HICON,
+    nIcons: UINT,
+  ): UINT {.winapi, stdcall, dynlib: "shell32", importc: "ExtractIconExW".}
+
+  proc SHFileOperation*(
+    lpFileOp: LPSHFILEOPSTRUCTW
+  ): int32 {.winapi, stdcall, dynlib: "shell32", importc: "SHFileOperationW".}
+
+  proc ShellExecuteEx*(
+    pExecInfo: ptr SHELLEXECUTEINFOW
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "ShellExecuteExW".}
+
+  proc SHQueryRecycleBin*(
+    pszRootPath: LPCWSTR, pSHQueryRBInfo: LPSHQUERYRBINFO
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHQueryRecycleBinW".}
+
+  proc SHEmptyRecycleBin*(
+    hwnd: HWND, pszRootPath: LPCWSTR, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHEmptyRecycleBinW".}
+
+  proc Shell_NotifyIcon*(
+    dwMessage: DWORD, lpData: PNOTIFYICONDATAW
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "Shell_NotifyIconW".}
+
+  proc SHGetFileInfo*(
+    pszPath: LPCWSTR,
+    dwFileAttributes: DWORD,
+    psfi: ptr SHFILEINFOW,
+    cbFileInfo: UINT,
+    uFlags: UINT,
+  ): DWORD_PTR {.winapi, stdcall, dynlib: "shell32", importc: "SHGetFileInfoW".}
+
+  proc SHGetDiskFreeSpace*(
+    pszDirectoryName: LPCWSTR,
+    pulFreeBytesAvailableToCaller: ptr ULARGE_INTEGER,
+    pulTotalNumberOfBytes: ptr ULARGE_INTEGER,
+    pulTotalNumberOfFreeBytes: ptr ULARGE_INTEGER,
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetDiskFreeSpaceExW".}
+
+  proc SHGetDiskFreeSpaceEx*(
+    pszDirectoryName: LPCWSTR,
+    pulFreeBytesAvailableToCaller: ptr ULARGE_INTEGER,
+    pulTotalNumberOfBytes: ptr ULARGE_INTEGER,
+    pulTotalNumberOfFreeBytes: ptr ULARGE_INTEGER,
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetDiskFreeSpaceExW".}
+
+  proc SHGetNewLinkInfo*(
+    pszLinkTo: LPCWSTR,
+    pszDir: LPCWSTR,
+    pszName: LPWSTR,
+    pfMustCopy: ptr WINBOOL,
+    uFlags: UINT,
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetNewLinkInfoW".}
+
+  proc SHInvokePrinterCommand*(
+    hwnd: HWND, uAction: UINT, lpBuf1: LPCWSTR, lpBuf2: LPCWSTR, fModal: WINBOOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHInvokePrinterCommandW".}
+
+  proc ShellMessageBox*(
+    hAppInst: HINSTANCE, hWnd: HWND, lpcText: LPCWSTR, lpcTitle: LPCWSTR, fuStyle: UINT
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "ShellMessageBoxW".}
+
+  proc IsLFNDrive*(
+    pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "IsLFNDriveW".}
+
+  proc SHEnumerateUnreadMailAccounts*(
+    hKeyUser: HKEY, dwIndex: DWORD, pszMailAddress: LPWSTR, cchMailAddress: int32
+  ): HRESULT {.
+    winapi, stdcall, dynlib: "shell32", importc: "SHEnumerateUnreadMailAccountsW"
+  .}
+
+  proc SHGetUnreadMailCount*(
+    hKeyUser: HKEY,
+    pszMailAddress: LPCWSTR,
+    pdwCount: ptr DWORD,
+    pFileTime: ptr FILETIME,
+    pszShellExecuteCommand: LPWSTR,
+    cchShellExecuteCommand: int32,
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHGetUnreadMailCountW".}
+
+  proc SHSetUnreadMailCount*(
+    pszMailAddress: LPCWSTR, dwCount: DWORD, pszShellExecuteCommand: LPCWSTR
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHSetUnreadMailCountW".}
+
+  proc StrRetToStr*(
+    pstr: ptr STRRET, pidl: LPCITEMIDLIST, ppsz: ptr LPWSTR
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRetToStrW".}
+
+  proc StrRetToBuf*(
+    pstr: ptr STRRET, pidl: LPCITEMIDLIST, pszBuf: LPWSTR, cchBuf: UINT
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRetToBufW".}
+
+  proc SHStrDup*(
+    psz: LPCWSTR, ppwsz: ptr ptr WCHAR
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "SHStrDupW".}
+
+  proc IsCharSpace*(
+    wch: WCHAR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "IsCharSpaceW".}
+
+  proc StrCmpC*(
+    pszStr1: LPCWSTR, pszStr2: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpCW".}
+
+  proc StrCmpIC*(
+    pszStr1: LPCWSTR, pszStr2: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpICW".}
+
+  proc StrChr*(
+    lpStart: LPCWSTR, wMatch: WCHAR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrChrW".}
+
+  proc StrRChr*(
+    lpStart: LPCWSTR, lpEnd: LPCWSTR, wMatch: WCHAR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRChrW".}
+
+  proc StrChrI*(
+    lpStart: LPCWSTR, wMatch: WCHAR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrChrIW".}
+
+  proc StrRChrI*(
+    lpStart: LPCWSTR, lpEnd: LPCWSTR, wMatch: WCHAR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRChrIW".}
+
+  proc StrCmpN*(
+    lpStr1: LPCWSTR, lpStr2: LPCWSTR, nChar: int32
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNW".}
+
+  proc StrCmpNI*(
+    lpStr1: LPCWSTR, lpStr2: LPCWSTR, nChar: int32
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNIW".}
+
+  proc StrStr*(
+    lpFirst: LPCWSTR, lpSrch: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrStrW".}
+
+  proc StrStrI*(
+    lpFirst: LPCWSTR, lpSrch: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrStrIW".}
+
+  proc StrDup*(
+    lpSrch: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrDupW".}
+
+  proc StrRStrI*(
+    lpSource: LPCWSTR, lpLast: LPCWSTR, lpSrch: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRStrIW".}
+
+  proc StrCSpn*(
+    lpStr: LPCWSTR, lpSet: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCSpnW".}
+
+  proc StrCSpnI*(
+    lpStr: LPCWSTR, lpSet: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCSpnIW".}
+
+  proc StrSpn*(
+    psz: LPCWSTR, pszSet: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrSpnW".}
+
+  proc StrToInt*(
+    lpSrc: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToIntW".}
+
+  proc StrPBrk*(
+    psz: LPCWSTR, pszSet: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrPBrkW".}
+
+  proc StrToIntEx*(
+    pszString: LPCWSTR, dwFlags: DWORD, piRet: ptr int32
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToIntExW".}
+
+  proc StrToInt64Ex*(
+    pszString: LPCWSTR, dwFlags: DWORD, pllRet: ptr LONGLONG
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToInt64ExW".}
+
+  proc StrFromTimeInterval*(
+    pszOut: LPWSTR, cchMax: UINT, dwTimeMS: DWORD, digits: int32
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFromTimeIntervalW".}
+
+  proc StrFormatByteSize*(
+    qdw: LONGLONG, szBuf: LPWSTR, uiBufSize: UINT
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFormatByteSizeW".}
+
+  proc StrFormatKBSize*(
+    qdw: LONGLONG, szBuf: LPWSTR, uiBufSize: UINT
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFormatKBSizeW".}
+
+  proc StrNCat*(
+    psz1: LPWSTR, psz2: LPCWSTR, cchMax: int32
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrNCatW".}
+
+  proc StrTrim*(
+    psz: LPWSTR, pszTrimChars: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrTrimW".}
+
+  proc StrCatBuff*(
+    pszDest: LPWSTR, pszSrc: LPCWSTR, cchDestBuffSize: int32
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCatBuffW".}
+
+  proc ChrCmpI*(
+    w1: WCHAR, w2: WCHAR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "ChrCmpIW".}
+
+  proc wvnsprintf*(
+    lpOut: LPWSTR, cchLimitIn: int32, lpFmt: LPCWSTR, arglist: va_list
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "wvnsprintfW".}
+
+  proc wnsprintf*(
+    lpOut: LPWSTR, cchLimitIn: int32, lpFmt: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "wnsprintfW".}
+
+  proc StrIsIntlEqual*(
+    fCaseSens: WINBOOL, lpString1: LPCWSTR, lpString2: LPCWSTR, nChar: int32
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrIsIntlEqualW".}
+
+  proc StrToLong*(
+    lpSrc: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToIntW".}
+
+  proc StrNCmp*(
+    lpStr1: LPCWSTR, lpStr2: LPCWSTR, nChar: int32
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNW".}
+
+  proc StrNCmpI*(
+    lpStr1: LPCWSTR, lpStr2: LPCWSTR, nChar: int32
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNIW".}
+
+  proc StrNCpy*(
+    psz1: LPWSTR, psz2: LPCWSTR, cchMax: int32
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCpyNW".}
+
+  proc StrCatN*(
+    psz1: LPWSTR, psz2: LPCWSTR, cchMax: int32
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrNCatW".}
+
+  proc PathAddBackslash*(
+    pszPath: LPWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathAddBackslashW".}
+
+  proc PathAddExtension*(
+    pszPath: LPWSTR, pszExt: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathAddExtensionW".}
+
+  proc PathBuildRoot*(
+    pszRoot: LPWSTR, iDrive: int32
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathBuildRootW".}
+
+  proc PathCombine*(
+    pszDest: LPWSTR, pszDir: LPCWSTR, pszFile: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCombineW".}
+
+  proc PathFileExists*(
+    pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFileExistsW".}
+
+  proc PathFindExtension*(
+    pszPath: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindExtensionW".}
+
+  proc PathFindFileName*(
+    pszPath: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindFileNameW".}
+
+  proc PathFindNextComponent*(
+    pszPath: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindNextComponentW".}
+
+  proc PathGetArgs*(
+    pszPath: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathGetArgsW".}
+
+  proc PathFindSuffixArray*(
+    pszPath: LPCWSTR, apszSuffix: ptr LPCWSTR, iArraySize: int32
+  ): LPCWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindSuffixArrayW".}
+
+  proc PathIsLFNFileSpec*(
+    lpName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsLFNFileSpecW".}
+
+  proc PathGetDriveNumber*(
+    pszPath: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "PathGetDriveNumberW".}
+
+  proc PathIsDirectory*(
+    pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsDirectoryW".}
+
+  proc PathIsDirectoryEmpty*(
+    pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsDirectoryEmptyW".}
+
+  proc PathIsFileSpec*(
+    pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsFileSpecW".}
+
+  proc PathIsPrefix*(
+    pszPrefix: LPCWSTR, pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsPrefixW".}
+
+  proc PathIsRelative*(
+    pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsRelativeW".}
+
+  proc PathIsRoot*(
+    pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsRootW".}
+
+  proc PathIsSameRoot*(
+    pszPath1: LPCWSTR, pszPath2: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsSameRootW".}
+
+  proc PathIsUNC*(
+    pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsUNCW".}
+
+  proc PathIsNetworkPath*(
+    pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsNetworkPathW".}
+
+  proc PathIsUNCServer*(
+    pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsUNCServerW".}
+
+  proc PathIsUNCServerShare*(
+    pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsUNCServerShareW".}
+
+  proc PathIsURL*(
+    pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsURLW".}
+
+  proc PathRemoveBackslash*(
+    pszPath: LPWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveBackslashW".}
+
+  proc PathSkipRoot*(
+    pszPath: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathSkipRootW".}
+
+  proc PathStripPath*(
+    pszPath: LPWSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathStripPathW".}
+
+  proc PathStripToRoot*(
+    pszPath: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathStripToRootW".}
+
+  proc PathMakeSystemFolder*(
+    pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathMakeSystemFolderW".}
+
+  proc PathUnmakeSystemFolder*(
+    pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUnmakeSystemFolderW".}
+
+  proc PathIsSystemFolder*(
+    pszPath: LPCWSTR, dwAttrb: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsSystemFolderW".}
+
+  proc PathUndecorate*(
+    pszPath: LPWSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUndecorateW".}
+
+  proc PathUnExpandEnvStrings*(
+    pszPath: LPCWSTR, pszBuf: LPWSTR, cchBuf: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUnExpandEnvStringsW".}
+
+  proc PathAppend*(
+    pszPath: LPWSTR, pMore: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathAppendW".}
+
+  proc PathCanonicalize*(
+    pszBuf: LPWSTR, pszPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCanonicalizeW".}
+
+  proc PathCompactPath*(
+    hDC: HDC, pszPath: LPWSTR, dx: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCompactPathW".}
+
+  proc PathCompactPathEx*(
+    pszOut: LPWSTR, pszSrc: LPCWSTR, cchMax: UINT, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCompactPathExW".}
+
+  proc PathCommonPrefix*(
+    pszFile1: LPCWSTR, pszFile2: LPCWSTR, achPath: LPWSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCommonPrefixW".}
+
+  proc PathFindOnPath*(
+    pszPath: LPWSTR, ppszOtherDirs: ptr LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindOnPathW".}
+
+  proc PathGetCharType*(
+    ch: WCHAR
+  ): UINT {.winapi, stdcall, dynlib: "shlwapi", importc: "PathGetCharTypeW".}
+
+  proc PathIsContentType*(
+    pszPath: LPCWSTR, pszContentType: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsContentTypeW".}
+
+  proc PathMakePretty*(
+    pszPath: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathMakePrettyW".}
+
+  proc PathMatchSpec*(
+    pszFile: LPCWSTR, pszSpec: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathMatchSpecW".}
+
+  proc PathParseIconLocation*(
+    pszIconFile: LPWSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "PathParseIconLocationW".}
+
+  proc PathQuoteSpaces*(
+    lpsz: LPWSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathQuoteSpacesW".}
+
+  proc PathRelativePathTo*(
+    pszPath: LPWSTR,
+    pszFrom: LPCWSTR,
+    dwAttrFrom: DWORD,
+    pszTo: LPCWSTR,
+    dwAttrTo: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRelativePathToW".}
+
+  proc PathRemoveArgs*(
+    pszPath: LPWSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveArgsW".}
+
+  proc PathRemoveBlanks*(
+    pszPath: LPWSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveBlanksW".}
+
+  proc PathRemoveExtension*(
+    pszPath: LPWSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveExtensionW".}
+
+  proc PathRemoveFileSpec*(
+    pszPath: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveFileSpecW".}
+
+  proc PathRenameExtension*(
+    pszPath: LPWSTR, pszExt: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRenameExtensionW".}
+
+  proc PathSearchAndQualify*(
+    pszPath: LPCWSTR, pszBuf: LPWSTR, cchBuf: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathSearchAndQualifyW".}
+
+  proc PathSetDlgItemPath*(
+    hDlg: HWND, id: int32, pszPath: LPCWSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathSetDlgItemPathW".}
+
+  proc PathUnquoteSpaces*(
+    lpsz: LPWSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUnquoteSpacesW".}
+
+  proc UrlCompare*(
+    psz1: LPCWSTR, psz2: LPCWSTR, fIgnoreSlash: WINBOOL
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCompareW".}
+
+  proc UrlCombine*(
+    pszBase: LPCWSTR,
+    pszRelative: LPCWSTR,
+    pszCombined: LPWSTR,
+    pcchCombined: LPDWORD,
+    dwFlags: DWORD,
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCombineW".}
+
+  proc UrlCanonicalize*(
+    pszUrl: LPCWSTR,
+    pszCanonicalized: LPWSTR,
+    pcchCanonicalized: LPDWORD,
+    dwFlags: DWORD,
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCanonicalizeW".}
+
+  proc UrlIsOpaque*(
+    pszURL: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlIsOpaqueW".}
+
+  proc UrlGetLocation*(
+    psz1: LPCWSTR
+  ): LPCWSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlGetLocationW".}
+
+  proc UrlUnescape*(
+    pszUrl: LPWSTR, pszUnescaped: LPWSTR, pcchUnescaped: LPDWORD, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlUnescapeW".}
+
+  proc UrlEscape*(
+    pszUrl: LPCWSTR, pszEscaped: LPWSTR, pcchEscaped: LPDWORD, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlEscapeW".}
+
+  proc UrlCreateFromPath*(
+    pszPath: LPCWSTR, pszUrl: LPWSTR, pcchUrl: LPDWORD, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCreateFromPathW".}
+
+  proc PathCreateFromUrl*(
+    pszUrl: LPCWSTR, pszPath: LPWSTR, pcchPath: LPDWORD, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCreateFromUrlW".}
+
+  proc UrlHash*(
+    pszUrl: LPCWSTR, pbHash: LPBYTE, cbHash: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlHashW".}
+
+  proc UrlGetPart*(
+    pszIn: LPCWSTR, pszOut: LPWSTR, pcchOut: LPDWORD, dwPart: DWORD, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlGetPartW".}
+
+  proc UrlApplyScheme*(
+    pszIn: LPCWSTR, pszOut: LPWSTR, pcchOut: LPDWORD, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlApplySchemeW".}
+
+  proc UrlIs*(
+    pszUrl: LPCWSTR, UrlIs: TURLIS
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlIsW".}
+
+  proc SHDeleteEmptyKey*(
+    hkey: HKEY, pszSubKey: LPCWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHDeleteEmptyKeyW".}
+
+  proc SHDeleteKey*(
+    hkey: HKEY, pszSubKey: LPCWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHDeleteKeyW".}
+
+  proc SHDeleteValue*(
+    hkey: HKEY, pszSubKey: LPCWSTR, pszValue: LPCWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHDeleteValueW".}
+
+  proc SHGetValue*(
+    hkey: HKEY,
+    pszSubKey: LPCWSTR,
+    pszValue: LPCWSTR,
+    pdwType: ptr DWORD,
+    pvData: pointer,
+    pcbData: ptr DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHGetValueW".}
+
+  proc SHSetValue*(
+    hkey: HKEY,
+    pszSubKey: LPCWSTR,
+    pszValue: LPCWSTR,
+    dwType: DWORD,
+    pvData: LPCVOID,
+    cbData: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHSetValueW".}
+
+  proc SHRegGetValue*(
+    hkey: HKEY,
+    pszSubKey: LPCWSTR,
+    pszValue: LPCWSTR,
+    dwFlags: SRRF,
+    pdwType: ptr DWORD,
+    pvData: pointer,
+    pcbData: ptr DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetValueW".}
+
+  proc SHQueryValueEx*(
+    hkey: HKEY,
+    pszValue: LPCWSTR,
+    pdwReserved: ptr DWORD,
+    pdwType: ptr DWORD,
+    pvData: pointer,
+    pcbData: ptr DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHQueryValueExW".}
+
+  proc SHEnumKeyEx*(
+    hkey: HKEY, dwIndex: DWORD, pszName: LPWSTR, pcchName: LPDWORD
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHEnumKeyExW".}
+
+  proc SHEnumValue*(
+    hkey: HKEY,
+    dwIndex: DWORD,
+    pszValueName: LPWSTR,
+    pcchValueName: LPDWORD,
+    pdwType: LPDWORD,
+    pvData: pointer,
+    pcbData: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHEnumValueW".}
+
+  proc SHQueryInfoKey*(
+    hkey: HKEY,
+    pcSubKeys: LPDWORD,
+    pcchMaxSubKeyLen: LPDWORD,
+    pcValues: LPDWORD,
+    pcchMaxValueNameLen: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHQueryInfoKeyW".}
+
+  proc SHCopyKey*(
+    hkeySrc: HKEY, wszSrcSubKey: LPCWSTR, hkeyDest: HKEY, fReserved: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHCopyKeyW".}
+
+  proc SHRegGetPath*(
+    hKey: HKEY, pcszSubKey: LPCWSTR, pcszValue: LPCWSTR, pszPath: LPWSTR, dwFlags: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetPathW".}
+
+  proc SHRegSetPath*(
+    hKey: HKEY,
+    pcszSubKey: LPCWSTR,
+    pcszValue: LPCWSTR,
+    pcszPath: LPCWSTR,
+    dwFlags: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegSetPathW".}
+
+  proc SHRegCreateUSKey*(
+    pwzPath: LPCWSTR,
+    samDesired: REGSAM,
+    hRelativeUSKey: HUSKEY,
+    phNewUSKey: PHUSKEY,
+    dwFlags: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegCreateUSKeyW".}
+
+  proc SHRegOpenUSKey*(
+    pwzPath: LPCWSTR,
+    samDesired: REGSAM,
+    hRelativeUSKey: HUSKEY,
+    phNewUSKey: PHUSKEY,
+    fIgnoreHKCU: WINBOOL,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegOpenUSKeyW".}
+
+  proc SHRegQueryUSValue*(
+    hUSKey: HUSKEY,
+    pwzValue: LPCWSTR,
+    pdwType: LPDWORD,
+    pvData: pointer,
+    pcbData: LPDWORD,
+    fIgnoreHKCU: WINBOOL,
+    pvDefaultData: pointer,
+    dwDefaultDataSize: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegQueryUSValueW".}
+
+  proc SHRegWriteUSValue*(
+    hUSKey: HUSKEY,
+    pwzValue: LPCWSTR,
+    dwType: DWORD,
+    pvData: pointer,
+    cbData: DWORD,
+    dwFlags: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegWriteUSValueW".}
+
+  proc SHRegDeleteUSValue*(
+    hUSKey: HUSKEY, pwzValue: LPCWSTR, delRegFlags: SHREGDEL_FLAGS
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegDeleteUSValueW".}
+
+  proc SHRegDeleteEmptyUSKey*(
+    hUSKey: HUSKEY, pwzSubKey: LPCWSTR, delRegFlags: SHREGDEL_FLAGS
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegDeleteEmptyUSKeyW".}
+
+  proc SHRegEnumUSKey*(
+    hUSKey: HUSKEY,
+    dwIndex: DWORD,
+    pwzName: LPWSTR,
+    pcchName: LPDWORD,
+    enumRegFlags: SHREGENUM_FLAGS,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegEnumUSKeyW".}
+
+  proc SHRegEnumUSValue*(
+    hUSkey: HUSKEY,
+    dwIndex: DWORD,
+    pszValueName: LPWSTR,
+    pcchValueName: LPDWORD,
+    pdwType: LPDWORD,
+    pvData: pointer,
+    pcbData: LPDWORD,
+    enumRegFlags: SHREGENUM_FLAGS,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegEnumUSValueW".}
+
+  proc SHRegQueryInfoUSKey*(
+    hUSKey: HUSKEY,
+    pcSubKeys: LPDWORD,
+    pcchMaxSubKeyLen: LPDWORD,
+    pcValues: LPDWORD,
+    pcchMaxValueNameLen: LPDWORD,
+    enumRegFlags: SHREGENUM_FLAGS,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegQueryInfoUSKeyW".}
+
+  proc SHRegGetUSValue*(
+    pwzSubKey: LPCWSTR,
+    pwzValue: LPCWSTR,
+    pdwType: LPDWORD,
+    pvData: pointer,
+    pcbData: LPDWORD,
+    fIgnoreHKCU: WINBOOL,
+    pvDefaultData: pointer,
+    dwDefaultDataSize: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetUSValueW".}
+
+  proc SHRegSetUSValue*(
+    pwzSubKey: LPCWSTR,
+    pwzValue: LPCWSTR,
+    dwType: DWORD,
+    pvData: pointer,
+    cbData: DWORD,
+    dwFlags: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegSetUSValueW".}
+
+  proc SHRegGetInt*(
+    hk: HKEY, pwzKey: LPCWSTR, iDefault: int32
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetIntW".}
+
+  proc SHRegGetBoolUSValue*(
+    pszSubKey: LPCWSTR, pszValue: LPCWSTR, fIgnoreHKCU: WINBOOL, fDefault: WINBOOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetBoolUSValueW".}
+
+  proc AssocQueryString*(
+    flags: ASSOCF,
+    str: ASSOCSTR,
+    pszAssoc: LPCWSTR,
+    pszExtra: LPCWSTR,
+    pszOut: LPWSTR,
+    pcchOut: ptr DWORD,
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "AssocQueryStringW".}
+
+  proc AssocQueryStringByKey*(
+    flags: ASSOCF,
+    str: ASSOCSTR,
+    hkAssoc: HKEY,
+    pszExtra: LPCWSTR,
+    pszOut: LPWSTR,
+    pcchOut: ptr DWORD,
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "AssocQueryStringByKeyW".}
+
+  proc AssocQueryKey*(
+    flags: ASSOCF,
+    key: ASSOCKEY,
+    pszAssoc: LPCWSTR,
+    pszExtra: LPCWSTR,
+    phkeyOut: ptr HKEY,
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "AssocQueryKeyW".}
+
+  proc SHOpenRegStream2*(
+    hkey: HKEY, pszSubkey: LPCWSTR, pszValue: LPCWSTR, grfMode: DWORD
+  ): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc: "SHOpenRegStream2W".}
+
+  proc SHCreateStreamOnFile*(
+    pszFile: LPCWSTR, grfMode: DWORD, ppstm: ptr ptr IStream
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "SHCreateStreamOnFileW".}
+
+  proc SHOpenRegStream*(
+    hkey: HKEY, pszSubkey: LPCWSTR, pszValue: LPCWSTR, grfMode: DWORD
+  ): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc: "SHOpenRegStream2W".}
+
+  proc GetAcceptLanguages*(
+    psz: LPWSTR, pcch: ptr DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "GetAcceptLanguagesW".}
+
+  proc SHGetIconOverlayIndex*(
+    pszIconPath: LPCWSTR, iIconIndex: int32
+  ): int32 {.winapi, stdcall, dynlib: "shell32", importc: "SHGetIconOverlayIndexW".}
+
+  proc ILCreateFromPath*(
+    pszPath: PCWSTR
+  ): PIDLIST_ABSOLUTE {.
+    winapi, stdcall, dynlib: "shell32", importc: "ILCreateFromPathW"
+  .}
+
+  proc SHGetPathFromIDList*(
+    pidl: PCIDLIST_ABSOLUTE, pszPath: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetPathFromIDListW".}
+
+  proc SHCreateDirectoryEx*(
+    hwnd: HWND, pszPath: LPCWSTR, psa: ptr SECURITY_ATTRIBUTES
+  ): int32 {.winapi, stdcall, dynlib: "shell32", importc: "SHCreateDirectoryExW".}
+
+  proc SHGetSpecialFolderPath*(
+    hwnd: HWND, pszPath: LPWSTR, csidl: int32, fCreate: WINBOOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetSpecialFolderPathW".}
+
+  proc SHGetFolderPath*(
+    hwnd: HWND, csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPWSTR
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHGetFolderPathW".}
+
+  proc SHSetFolderPath*(
+    csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPCWSTR
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHSetFolderPathW".}
+
+  proc SHGetFolderPathAndSubDir*(
+    hwnd: HWND,
+    csidl: int32,
+    hToken: HANDLE,
+    dwFlags: DWORD,
+    pszSubDir: LPCWSTR,
+    pszPath: LPWSTR,
+  ): HRESULT {.
+    winapi, stdcall, dynlib: "shell32", importc: "SHGetFolderPathAndSubDirW"
+  .}
+
+  proc SHBrowseForFolder*(
+    lpbi: LPBROWSEINFOW
+  ): PIDLIST_ABSOLUTE {.
+    winapi, stdcall, dynlib: "shell32", importc: "SHBrowseForFolderW"
+  .}
+
+  proc SHUpdateImage*(
+    pszHashItem: LPCWSTR, iIndex: int32, uFlags: UINT, iImageIndex: int32
+  ): void {.winapi, stdcall, dynlib: "shell32", importc: "SHUpdateImageW".}
+
+  proc SHGetDataFromIDList*(
+    psf: ptr IShellFolder, pidl: PCUITEMID_CHILD, nFormat: int32, pv: pointer, cb: int32
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHGetDataFromIDListW".}
+
+  proc PathIsSlow*(
+    pszFile: LPCWSTR, dwAttr: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "PathIsSlowW".}
+
+  proc SHStartNetConnectionDialog*(
+    hwnd: HWND, pszRemoteName: LPCWSTR, dwType: DWORD
+  ): HRESULT {.
+    winapi, stdcall, dynlib: "shell32", importc: "SHStartNetConnectionDialogW"
+  .}
+
+  proc SHDefExtractIcon*(
+    pszIconFile: LPCWSTR,
+    iIndex: int32,
+    uFlags: UINT,
+    phiconLarge: ptr HICON,
+    phiconSmall: ptr HICON,
+    nIconSize: UINT,
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHDefExtractIconW".}
+
+  proc Shell_GetCachedImageIndex*(
+    pszIconPath: LPCWSTR, iIconIndex: int32, uIconFlags: UINT
+  ): int32 {.winapi, stdcall, dynlib: "shell32", importc: "Shell_GetCachedImageIndexW".}
+
+  proc SHOpenPropSheet*(
+    pszCaption: LPCWSTR,
+    ahkeys: ptr HKEY,
+    ckeys: UINT,
+    pclsidDefault: ptr CLSID,
+    pdtobj: ptr IDataObject,
+    psb: ptr IShellBrowser,
+    pStartPage: LPCWSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHOpenPropSheetW".}
+
+  proc SHPathPrepareForWrite*(
+    hwnd: HWND, punkEnableModless: ptr IUnknown, pszPath: LPCWSTR, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHPathPrepareForWriteW".}
+
+  proc SHCreateFileExtractIcon*(
+    pszFile: LPCWSTR, dwFileAttributes: DWORD, riid: REFIID, ppv: ptr pointer
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHCreateFileExtractIconW".}
+
 when winimAnsi:
   type
     DRAGINFO* = DRAGINFOA
@@ -9165,6 +23602,7 @@
     LPFILEDESCRIPTOR* = LPFILEDESCRIPTORA
     FILEGROUPDESCRIPTOR* = FILEGROUPDESCRIPTORA
     LPFILEGROUPDESCRIPTOR* = LPFILEGROUPDESCRIPTORA
+
   const
     SZ_CONTENTTYPE_HTML* = SZ_CONTENTTYPE_HTMLA
     SZ_CONTENTTYPE_CDF* = SZ_CONTENTTYPE_CDFA
@@ -9191,176 +23629,826 @@
     SHCNF_PATH* = SHCNF_PATHA
     SHCNF_PRINTER* = SHCNF_PRINTERA
     SHARD_PATH* = SHARD_PATHA
-  proc StrFormatByteSize64*(qdw: LONGLONG, szBuf: LPSTR, uiBufSize: UINT): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFormatByteSize64A".}
-  proc DragQueryFile*(hDrop: HDROP, iFile: UINT, lpszFile: LPSTR, cch: UINT): UINT {.winapi, stdcall, dynlib: "shell32", importc: "DragQueryFileA".}
-  proc ShellExecute*(hwnd: HWND, lpOperation: LPCSTR, lpFile: LPCSTR, lpParameters: LPCSTR, lpDirectory: LPCSTR, nShowCmd: INT): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc: "ShellExecuteA".}
-  proc FindExecutable*(lpFile: LPCSTR, lpDirectory: LPCSTR, lpResult: LPSTR): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc: "FindExecutableA".}
-  proc ShellAbout*(hWnd: HWND, szApp: LPCSTR, szOtherStuff: LPCSTR, hIcon: HICON): INT {.winapi, stdcall, dynlib: "shell32", importc: "ShellAboutA".}
-  proc ExtractAssociatedIcon*(hInst: HINSTANCE, pszIconPath: LPSTR, piIcon: ptr WORD): HICON {.winapi, stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconA".}
-  proc ExtractAssociatedIconEx*(hInst: HINSTANCE, pszIconPath: LPSTR, piIconIndex: ptr WORD, piIconId: ptr WORD): HICON {.winapi, stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconExA".}
-  proc ExtractIcon*(hInst: HINSTANCE, pszExeFileName: LPCSTR, nIconIndex: UINT): HICON {.winapi, stdcall, dynlib: "shell32", importc: "ExtractIconA".}
-  proc DoEnvironmentSubst*(pszSrc: LPSTR, cchSrc: UINT): DWORD {.winapi, stdcall, dynlib: "shell32", importc: "DoEnvironmentSubstA".}
-  proc ExtractIconEx*(lpszFile: LPCSTR, nIconIndex: int32, phiconLarge: ptr HICON, phiconSmall: ptr HICON, nIcons: UINT): UINT {.winapi, stdcall, dynlib: "shell32", importc: "ExtractIconExA".}
-  proc SHFileOperation*(lpFileOp: LPSHFILEOPSTRUCTA): int32 {.winapi, stdcall, dynlib: "shell32", importc: "SHFileOperationA".}
-  proc ShellExecuteEx*(pExecInfo: ptr SHELLEXECUTEINFOA): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "ShellExecuteExA".}
-  proc SHQueryRecycleBin*(pszRootPath: LPCSTR, pSHQueryRBInfo: LPSHQUERYRBINFO): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHQueryRecycleBinA".}
-  proc SHEmptyRecycleBin*(hwnd: HWND, pszRootPath: LPCSTR, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHEmptyRecycleBinA".}
-  proc Shell_NotifyIcon*(dwMessage: DWORD, lpData: PNOTIFYICONDATAA): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "Shell_NotifyIconA".}
-  proc SHGetFileInfo*(pszPath: LPCSTR, dwFileAttributes: DWORD, psfi: ptr SHFILEINFOA, cbFileInfo: UINT, uFlags: UINT): DWORD_PTR {.winapi, stdcall, dynlib: "shell32", importc: "SHGetFileInfoA".}
-  proc SHGetDiskFreeSpace*(pszDirectoryName: LPCSTR, pulFreeBytesAvailableToCaller: ptr ULARGE_INTEGER, pulTotalNumberOfBytes: ptr ULARGE_INTEGER, pulTotalNumberOfFreeBytes: ptr ULARGE_INTEGER): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetDiskFreeSpaceExA".}
-  proc SHGetDiskFreeSpaceEx*(pszDirectoryName: LPCSTR, pulFreeBytesAvailableToCaller: ptr ULARGE_INTEGER, pulTotalNumberOfBytes: ptr ULARGE_INTEGER, pulTotalNumberOfFreeBytes: ptr ULARGE_INTEGER): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetDiskFreeSpaceExA".}
-  proc SHGetNewLinkInfo*(pszLinkTo: LPCSTR, pszDir: LPCSTR, pszName: LPSTR, pfMustCopy: ptr WINBOOL, uFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetNewLinkInfoA".}
-  proc SHInvokePrinterCommand*(hwnd: HWND, uAction: UINT, lpBuf1: LPCSTR, lpBuf2: LPCSTR, fModal: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHInvokePrinterCommandA".}
-  proc ShellMessageBox*(hAppInst: HINSTANCE, hWnd: HWND, lpcText: LPCSTR, lpcTitle: LPCSTR, fuStyle: UINT): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "ShellMessageBoxA".}
-  proc IsLFNDrive*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "IsLFNDriveA".}
-  proc StrRetToStr*(pstr: ptr STRRET, pidl: LPCITEMIDLIST, ppsz: ptr LPSTR): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRetToStrA".}
-  proc StrRetToBuf*(pstr: ptr STRRET, pidl: LPCITEMIDLIST, pszBuf: LPSTR, cchBuf: UINT): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRetToBufA".}
-  proc SHStrDup*(psz: LPCSTR, ppwsz: ptr ptr WCHAR): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "SHStrDupA".}
-  proc IsCharSpace*(wch: CHAR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "IsCharSpaceA".}
-  proc StrCmpC*(pszStr1: LPCSTR, pszStr2: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpCA".}
-  proc StrCmpIC*(pszStr1: LPCSTR, pszStr2: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpICA".}
-  proc StrChr*(lpStart: LPCSTR, wMatch: WORD): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrChrA".}
-  proc StrRChr*(lpStart: LPCSTR, lpEnd: LPCSTR, wMatch: WORD): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRChrA".}
-  proc StrChrI*(lpStart: LPCSTR, wMatch: WORD): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrChrIA".}
-  proc StrRChrI*(lpStart: LPCSTR, lpEnd: LPCSTR, wMatch: WORD): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRChrIA".}
-  proc StrCmpN*(lpStr1: LPCSTR, lpStr2: LPCSTR, nChar: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNA".}
-  proc StrCmpNI*(lpStr1: LPCSTR, lpStr2: LPCSTR, nChar: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNIA".}
-  proc StrStr*(lpFirst: LPCSTR, lpSrch: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrStrA".}
-  proc StrStrI*(lpFirst: LPCSTR, lpSrch: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrStrIA".}
-  proc StrDup*(lpSrch: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrDupA".}
-  proc StrRStrI*(lpSource: LPCSTR, lpLast: LPCSTR, lpSrch: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRStrIA".}
-  proc StrCSpn*(lpStr: LPCSTR, lpSet: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCSpnA".}
-  proc StrCSpnI*(lpStr: LPCSTR, lpSet: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCSpnIA".}
-  proc StrSpn*(psz: LPCSTR, pszSet: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrSpnA".}
-  proc StrToInt*(lpSrc: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToIntA".}
-  proc StrPBrk*(psz: LPCSTR, pszSet: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrPBrkA".}
-  proc StrToIntEx*(pszString: LPCSTR, dwFlags: DWORD, piRet: ptr int32): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToIntExA".}
-  proc StrToInt64Ex*(pszString: LPCSTR, dwFlags: DWORD, pllRet: ptr LONGLONG): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToInt64ExA".}
-  proc StrFromTimeInterval*(pszOut: LPSTR, cchMax: UINT, dwTimeMS: DWORD, digits: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFromTimeIntervalA".}
-  proc StrFormatByteSize*(dw: DWORD, szBuf: LPSTR, uiBufSize: UINT): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFormatByteSizeA".}
-  proc StrFormatKBSize*(qdw: LONGLONG, szBuf: LPSTR, uiBufSize: UINT): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFormatKBSizeA".}
-  proc StrNCat*(psz1: LPSTR, psz2: LPCSTR, cchMax: int32): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrNCatA".}
-  proc StrTrim*(psz: LPSTR, pszTrimChars: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrTrimA".}
-  proc StrCatBuff*(pszDest: LPSTR, pszSrc: LPCSTR, cchDestBuffSize: int32): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCatBuffA".}
-  proc ChrCmpI*(w1: WORD, w2: WORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "ChrCmpIA".}
-  proc wvnsprintf*(lpOut: LPSTR, cchLimitIn: int32, lpFmt: LPCSTR, arglist: va_list): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "wvnsprintfA".}
-  proc wnsprintf*(lpOut: LPSTR, cchLimitIn: int32, lpFmt: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "wnsprintfA".}
-  proc StrIsIntlEqual*(fCaseSens: WINBOOL, lpString1: LPCSTR, lpString2: LPCSTR, nChar: int32): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrIsIntlEqualA".}
-  proc StrToLong*(lpSrc: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToIntA".}
-  proc StrNCmp*(lpStr1: LPCSTR, lpStr2: LPCSTR, nChar: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNA".}
-  proc StrNCmpI*(lpStr1: LPCSTR, lpStr2: LPCSTR, nChar: int32): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNIA".}
-  proc StrCatN*(psz1: LPSTR, psz2: LPCSTR, cchMax: int32): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrNCatA".}
-  proc PathAddBackslash*(pszPath: LPSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathAddBackslashA".}
-  proc PathAddExtension*(pszPath: LPSTR, pszExt: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathAddExtensionA".}
-  proc PathBuildRoot*(pszRoot: LPSTR, iDrive: int32): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathBuildRootA".}
-  proc PathCombine*(pszDest: LPSTR, pszDir: LPCSTR, pszFile: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCombineA".}
-  proc PathFileExists*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFileExistsA".}
-  proc PathFindExtension*(pszPath: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindExtensionA".}
-  proc PathFindFileName*(pszPath: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindFileNameA".}
-  proc PathFindNextComponent*(pszPath: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindNextComponentA".}
-  proc PathGetArgs*(pszPath: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathGetArgsA".}
-  proc PathFindSuffixArray*(pszPath: LPCSTR, apszSuffix: ptr LPCSTR, iArraySize: int32): LPCSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindSuffixArrayA".}
-  proc PathIsLFNFileSpec*(lpName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsLFNFileSpecA".}
-  proc PathGetDriveNumber*(pszPath: LPCSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "PathGetDriveNumberA".}
-  proc PathIsDirectory*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsDirectoryA".}
-  proc PathIsDirectoryEmpty*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsDirectoryEmptyA".}
-  proc PathIsFileSpec*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsFileSpecA".}
-  proc PathIsPrefix*(pszPrefix: LPCSTR, pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsPrefixA".}
-  proc PathIsRelative*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsRelativeA".}
-  proc PathIsRoot*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsRootA".}
-  proc PathIsSameRoot*(pszPath1: LPCSTR, pszPath2: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsSameRootA".}
-  proc PathIsUNC*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsUNCA".}
-  proc PathIsNetworkPath*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsNetworkPathA".}
-  proc PathIsUNCServer*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsUNCServerA".}
-  proc PathIsUNCServerShare*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsUNCServerShareA".}
-  proc PathIsURL*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsURLA".}
-  proc PathRemoveBackslash*(pszPath: LPSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveBackslashA".}
-  proc PathSkipRoot*(pszPath: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathSkipRootA".}
-  proc PathStripPath*(pszPath: LPSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathStripPathA".}
-  proc PathStripToRoot*(pszPath: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathStripToRootA".}
-  proc PathMakeSystemFolder*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathMakeSystemFolderA".}
-  proc PathUnmakeSystemFolder*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUnmakeSystemFolderA".}
-  proc PathIsSystemFolder*(pszPath: LPCSTR, dwAttrb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsSystemFolderA".}
-  proc PathUndecorate*(pszPath: LPSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUndecorateA".}
-  proc PathUnExpandEnvStrings*(pszPath: LPCSTR, pszBuf: LPSTR, cchBuf: UINT): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUnExpandEnvStringsA".}
-  proc PathAppend*(pszPath: LPSTR, pMore: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathAppendA".}
-  proc PathCanonicalize*(pszBuf: LPSTR, pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCanonicalizeA".}
-  proc PathCompactPath*(hDC: HDC, pszPath: LPSTR, dx: UINT): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCompactPathA".}
-  proc PathCompactPathEx*(pszOut: LPSTR, pszSrc: LPCSTR, cchMax: UINT, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCompactPathExA".}
-  proc PathCommonPrefix*(pszFile1: LPCSTR, pszFile2: LPCSTR, achPath: LPSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCommonPrefixA".}
-  proc PathFindOnPath*(pszPath: LPSTR, ppszOtherDirs: ptr LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindOnPathA".}
-  proc PathGetCharType*(ch: UCHAR): UINT {.winapi, stdcall, dynlib: "shlwapi", importc: "PathGetCharTypeA".}
-  proc PathIsContentType*(pszPath: LPCSTR, pszContentType: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsContentTypeA".}
-  proc PathMakePretty*(pszPath: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathMakePrettyA".}
-  proc PathMatchSpec*(pszFile: LPCSTR, pszSpec: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathMatchSpecA".}
-  proc PathParseIconLocation*(pszIconFile: LPSTR): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "PathParseIconLocationA".}
-  proc PathQuoteSpaces*(lpsz: LPSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathQuoteSpacesA".}
-  proc PathRelativePathTo*(pszPath: LPSTR, pszFrom: LPCSTR, dwAttrFrom: DWORD, pszTo: LPCSTR, dwAttrTo: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRelativePathToA".}
-  proc PathRemoveArgs*(pszPath: LPSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveArgsA".}
-  proc PathRemoveBlanks*(pszPath: LPSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveBlanksA".}
-  proc PathRemoveExtension*(pszPath: LPSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveExtensionA".}
-  proc PathRemoveFileSpec*(pszPath: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveFileSpecA".}
-  proc PathRenameExtension*(pszPath: LPSTR, pszExt: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRenameExtensionA".}
-  proc PathSearchAndQualify*(pszPath: LPCSTR, pszBuf: LPSTR, cchBuf: UINT): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathSearchAndQualifyA".}
-  proc PathSetDlgItemPath*(hDlg: HWND, id: int32, pszPath: LPCSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathSetDlgItemPathA".}
-  proc PathUnquoteSpaces*(lpsz: LPSTR): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUnquoteSpacesA".}
-  proc UrlCompare*(psz1: LPCSTR, psz2: LPCSTR, fIgnoreSlash: WINBOOL): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCompareA".}
-  proc UrlCombine*(pszBase: LPCSTR, pszRelative: LPCSTR, pszCombined: LPSTR, pcchCombined: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCombineA".}
-  proc UrlCanonicalize*(pszUrl: LPCSTR, pszCanonicalized: LPSTR, pcchCanonicalized: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCanonicalizeA".}
-  proc UrlIsOpaque*(pszURL: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlIsOpaqueA".}
-  proc UrlGetLocation*(psz1: LPCSTR): LPCSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlGetLocationA".}
-  proc UrlUnescape*(pszUrl: LPSTR, pszUnescaped: LPSTR, pcchUnescaped: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlUnescapeA".}
-  proc UrlEscape*(pszUrl: LPCSTR, pszEscaped: LPSTR, pcchEscaped: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlEscapeA".}
-  proc UrlCreateFromPath*(pszPath: LPCSTR, pszUrl: LPSTR, pcchUrl: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCreateFromPathA".}
-  proc PathCreateFromUrl*(pszUrl: LPCSTR, pszPath: LPSTR, pcchPath: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCreateFromUrlA".}
-  proc UrlHash*(pszUrl: LPCSTR, pbHash: LPBYTE, cbHash: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlHashA".}
-  proc UrlGetPart*(pszIn: LPCSTR, pszOut: LPSTR, pcchOut: LPDWORD, dwPart: DWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlGetPartA".}
-  proc UrlApplyScheme*(pszIn: LPCSTR, pszOut: LPSTR, pcchOut: LPDWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlApplySchemeA".}
-  proc UrlIs*(pszUrl: LPCSTR, UrlIs: TURLIS): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlIsA".}
-  proc SHDeleteEmptyKey*(hkey: HKEY, pszSubKey: LPCSTR): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHDeleteEmptyKeyA".}
-  proc SHDeleteKey*(hkey: HKEY, pszSubKey: LPCSTR): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHDeleteKeyA".}
-  proc SHDeleteValue*(hkey: HKEY, pszSubKey: LPCSTR, pszValue: LPCSTR): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHDeleteValueA".}
-  proc SHGetValue*(hkey: HKEY, pszSubKey: LPCSTR, pszValue: LPCSTR, pdwType: ptr DWORD, pvData: pointer, pcbData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHGetValueA".}
-  proc SHSetValue*(hkey: HKEY, pszSubKey: LPCSTR, pszValue: LPCSTR, dwType: DWORD, pvData: LPCVOID, cbData: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHSetValueA".}
-  proc SHRegGetValue*(hkey: HKEY, pszSubKey: LPCSTR, pszValue: LPCSTR, dwFlags: SRRF, pdwType: ptr DWORD, pvData: pointer, pcbData: ptr DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetValueA".}
-  proc SHQueryValueEx*(hkey: HKEY, pszValue: LPCSTR, pdwReserved: ptr DWORD, pdwType: ptr DWORD, pvData: pointer, pcbData: ptr DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHQueryValueExA".}
-  proc SHEnumKeyEx*(hkey: HKEY, dwIndex: DWORD, pszName: LPSTR, pcchName: LPDWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHEnumKeyExA".}
-  proc SHEnumValue*(hkey: HKEY, dwIndex: DWORD, pszValueName: LPSTR, pcchValueName: LPDWORD, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHEnumValueA".}
-  proc SHQueryInfoKey*(hkey: HKEY, pcSubKeys: LPDWORD, pcchMaxSubKeyLen: LPDWORD, pcValues: LPDWORD, pcchMaxValueNameLen: LPDWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHQueryInfoKeyA".}
-  proc SHCopyKey*(hkeySrc: HKEY, szSrcSubKey: LPCSTR, hkeyDest: HKEY, fReserved: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHCopyKeyA".}
-  proc SHRegGetPath*(hKey: HKEY, pcszSubKey: LPCSTR, pcszValue: LPCSTR, pszPath: LPSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetPathA".}
-  proc SHRegSetPath*(hKey: HKEY, pcszSubKey: LPCSTR, pcszValue: LPCSTR, pcszPath: LPCSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegSetPathA".}
-  proc SHRegCreateUSKey*(pszPath: LPCSTR, samDesired: REGSAM, hRelativeUSKey: HUSKEY, phNewUSKey: PHUSKEY, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegCreateUSKeyA".}
-  proc SHRegOpenUSKey*(pszPath: LPCSTR, samDesired: REGSAM, hRelativeUSKey: HUSKEY, phNewUSKey: PHUSKEY, fIgnoreHKCU: WINBOOL): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegOpenUSKeyA".}
-  proc SHRegQueryUSValue*(hUSKey: HUSKEY, pszValue: LPCSTR, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD, fIgnoreHKCU: WINBOOL, pvDefaultData: pointer, dwDefaultDataSize: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegQueryUSValueA".}
-  proc SHRegWriteUSValue*(hUSKey: HUSKEY, pszValue: LPCSTR, dwType: DWORD, pvData: pointer, cbData: DWORD, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegWriteUSValueA".}
-  proc SHRegDeleteUSValue*(hUSKey: HUSKEY, pszValue: LPCSTR, delRegFlags: SHREGDEL_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegDeleteUSValueA".}
-  proc SHRegDeleteEmptyUSKey*(hUSKey: HUSKEY, pszSubKey: LPCSTR, delRegFlags: SHREGDEL_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegDeleteEmptyUSKeyA".}
-  proc SHRegEnumUSKey*(hUSKey: HUSKEY, dwIndex: DWORD, pszName: LPSTR, pcchName: LPDWORD, enumRegFlags: SHREGENUM_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegEnumUSKeyA".}
-  proc SHRegEnumUSValue*(hUSkey: HUSKEY, dwIndex: DWORD, pszValueName: LPSTR, pcchValueName: LPDWORD, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD, enumRegFlags: SHREGENUM_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegEnumUSValueA".}
-  proc SHRegQueryInfoUSKey*(hUSKey: HUSKEY, pcSubKeys: LPDWORD, pcchMaxSubKeyLen: LPDWORD, pcValues: LPDWORD, pcchMaxValueNameLen: LPDWORD, enumRegFlags: SHREGENUM_FLAGS): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegQueryInfoUSKeyA".}
-  proc SHRegGetUSValue*(pszSubKey: LPCSTR, pszValue: LPCSTR, pdwType: LPDWORD, pvData: pointer, pcbData: LPDWORD, fIgnoreHKCU: WINBOOL, pvDefaultData: pointer, dwDefaultDataSize: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetUSValueA".}
-  proc SHRegSetUSValue*(pszSubKey: LPCSTR, pszValue: LPCSTR, dwType: DWORD, pvData: pointer, cbData: DWORD, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegSetUSValueA".}
-  proc SHRegGetBoolUSValue*(pszSubKey: LPCSTR, pszValue: LPCSTR, fIgnoreHKCU: WINBOOL, fDefault: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetBoolUSValueA".}
-  proc AssocQueryString*(flags: ASSOCF, str: ASSOCSTR, pszAssoc: LPCSTR, pszExtra: LPCSTR, pszOut: LPSTR, pcchOut: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "AssocQueryStringA".}
-  proc AssocQueryStringByKey*(flags: ASSOCF, str: ASSOCSTR, hkAssoc: HKEY, pszExtra: LPCSTR, pszOut: LPSTR, pcchOut: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "AssocQueryStringByKeyA".}
-  proc AssocQueryKey*(flags: ASSOCF, key: ASSOCKEY, pszAssoc: LPCSTR, pszExtra: LPCSTR, phkeyOut: ptr HKEY): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "AssocQueryKeyA".}
-  proc SHOpenRegStream2*(hkey: HKEY, pszSubkey: LPCSTR, pszValue: LPCSTR, grfMode: DWORD): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc: "SHOpenRegStream2A".}
-  proc SHCreateStreamOnFile*(pszFile: LPCSTR, grfMode: DWORD, ppstm: ptr ptr IStream): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "SHCreateStreamOnFileA".}
-  proc SHOpenRegStream*(hkey: HKEY, pszSubkey: LPCSTR, pszValue: LPCSTR, grfMode: DWORD): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc: "SHOpenRegStream2A".}
-  proc GetAcceptLanguages*(psz: LPSTR, pcch: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "GetAcceptLanguagesA".}
-  proc SHGetIconOverlayIndex*(pszIconPath: LPCSTR, iIconIndex: int32): int32 {.winapi, stdcall, dynlib: "shell32", importc: "SHGetIconOverlayIndexA".}
-  proc ILCreateFromPath*(pszPath: PCSTR): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc: "ILCreateFromPathA".}
-  proc SHGetPathFromIDList*(pidl: PCIDLIST_ABSOLUTE, pszPath: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetPathFromIDListA".}
-  proc SHCreateDirectoryEx*(hwnd: HWND, pszPath: LPCSTR, psa: ptr SECURITY_ATTRIBUTES): int32 {.winapi, stdcall, dynlib: "shell32", importc: "SHCreateDirectoryExA".}
-  proc SHGetSpecialFolderPath*(hwnd: HWND, pszPath: LPSTR, csidl: int32, fCreate: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetSpecialFolderPathA".}
-  proc SHGetFolderPath*(hwnd: HWND, csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHGetFolderPathA".}
-  proc SHSetFolderPath*(csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPCSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHSetFolderPathA".}
-  proc SHGetFolderPathAndSubDir*(hwnd: HWND, csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszSubDir: LPCSTR, pszPath: LPSTR): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHGetFolderPathAndSubDirA".}
-  proc SHBrowseForFolder*(lpbi: LPBROWSEINFOA): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc: "SHBrowseForFolderA".}
-  proc SHUpdateImage*(pszHashItem: LPCSTR, iIndex: int32, uFlags: UINT, iImageIndex: int32): void {.winapi, stdcall, dynlib: "shell32", importc: "SHUpdateImageA".}
-  proc SHGetDataFromIDList*(psf: ptr IShellFolder, pidl: PCUITEMID_CHILD, nFormat: int32, pv: pointer, cb: int32): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHGetDataFromIDListA".}
-  proc PathIsSlow*(pszFile: LPCSTR, dwAttr: DWORD): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "PathIsSlowA".}
-  proc SHDefExtractIcon*(pszIconFile: LPCSTR, iIndex: int32, uFlags: UINT, phiconLarge: ptr HICON, phiconSmall: ptr HICON, nIconSize: UINT): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHDefExtractIconA".}
-  proc Shell_GetCachedImageIndex*(pszIconPath: LPCSTR, iIconIndex: int32, uIconFlags: UINT): int32 {.winapi, stdcall, dynlib: "shell32", importc: "Shell_GetCachedImageIndexA".}
-  proc SHPathPrepareForWrite*(hwnd: HWND, punkEnableModless: ptr IUnknown, pszPath: LPCSTR, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHPathPrepareForWriteA".}
+  proc StrFormatByteSize64*(
+    qdw: LONGLONG, szBuf: LPSTR, uiBufSize: UINT
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFormatByteSize64A".}
+
+  proc DragQueryFile*(
+    hDrop: HDROP, iFile: UINT, lpszFile: LPSTR, cch: UINT
+  ): UINT {.winapi, stdcall, dynlib: "shell32", importc: "DragQueryFileA".}
+
+  proc ShellExecute*(
+    hwnd: HWND,
+    lpOperation: LPCSTR,
+    lpFile: LPCSTR,
+    lpParameters: LPCSTR,
+    lpDirectory: LPCSTR,
+    nShowCmd: INT,
+  ): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc: "ShellExecuteA".}
+
+  proc FindExecutable*(
+    lpFile: LPCSTR, lpDirectory: LPCSTR, lpResult: LPSTR
+  ): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc: "FindExecutableA".}
+
+  proc ShellAbout*(
+    hWnd: HWND, szApp: LPCSTR, szOtherStuff: LPCSTR, hIcon: HICON
+  ): INT {.winapi, stdcall, dynlib: "shell32", importc: "ShellAboutA".}
+
+  proc ExtractAssociatedIcon*(
+    hInst: HINSTANCE, pszIconPath: LPSTR, piIcon: ptr WORD
+  ): HICON {.winapi, stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconA".}
+
+  proc ExtractAssociatedIconEx*(
+    hInst: HINSTANCE, pszIconPath: LPSTR, piIconIndex: ptr WORD, piIconId: ptr WORD
+  ): HICON {.winapi, stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconExA".}
+
+  proc ExtractIcon*(
+    hInst: HINSTANCE, pszExeFileName: LPCSTR, nIconIndex: UINT
+  ): HICON {.winapi, stdcall, dynlib: "shell32", importc: "ExtractIconA".}
+
+  proc DoEnvironmentSubst*(
+    pszSrc: LPSTR, cchSrc: UINT
+  ): DWORD {.winapi, stdcall, dynlib: "shell32", importc: "DoEnvironmentSubstA".}
+
+  proc ExtractIconEx*(
+    lpszFile: LPCSTR,
+    nIconIndex: int32,
+    phiconLarge: ptr HICON,
+    phiconSmall: ptr HICON,
+    nIcons: UINT,
+  ): UINT {.winapi, stdcall, dynlib: "shell32", importc: "ExtractIconExA".}
+
+  proc SHFileOperation*(
+    lpFileOp: LPSHFILEOPSTRUCTA
+  ): int32 {.winapi, stdcall, dynlib: "shell32", importc: "SHFileOperationA".}
+
+  proc ShellExecuteEx*(
+    pExecInfo: ptr SHELLEXECUTEINFOA
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "ShellExecuteExA".}
+
+  proc SHQueryRecycleBin*(
+    pszRootPath: LPCSTR, pSHQueryRBInfo: LPSHQUERYRBINFO
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHQueryRecycleBinA".}
+
+  proc SHEmptyRecycleBin*(
+    hwnd: HWND, pszRootPath: LPCSTR, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHEmptyRecycleBinA".}
+
+  proc Shell_NotifyIcon*(
+    dwMessage: DWORD, lpData: PNOTIFYICONDATAA
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "Shell_NotifyIconA".}
+
+  proc SHGetFileInfo*(
+    pszPath: LPCSTR,
+    dwFileAttributes: DWORD,
+    psfi: ptr SHFILEINFOA,
+    cbFileInfo: UINT,
+    uFlags: UINT,
+  ): DWORD_PTR {.winapi, stdcall, dynlib: "shell32", importc: "SHGetFileInfoA".}
+
+  proc SHGetDiskFreeSpace*(
+    pszDirectoryName: LPCSTR,
+    pulFreeBytesAvailableToCaller: ptr ULARGE_INTEGER,
+    pulTotalNumberOfBytes: ptr ULARGE_INTEGER,
+    pulTotalNumberOfFreeBytes: ptr ULARGE_INTEGER,
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetDiskFreeSpaceExA".}
+
+  proc SHGetDiskFreeSpaceEx*(
+    pszDirectoryName: LPCSTR,
+    pulFreeBytesAvailableToCaller: ptr ULARGE_INTEGER,
+    pulTotalNumberOfBytes: ptr ULARGE_INTEGER,
+    pulTotalNumberOfFreeBytes: ptr ULARGE_INTEGER,
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetDiskFreeSpaceExA".}
+
+  proc SHGetNewLinkInfo*(
+    pszLinkTo: LPCSTR,
+    pszDir: LPCSTR,
+    pszName: LPSTR,
+    pfMustCopy: ptr WINBOOL,
+    uFlags: UINT,
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetNewLinkInfoA".}
+
+  proc SHInvokePrinterCommand*(
+    hwnd: HWND, uAction: UINT, lpBuf1: LPCSTR, lpBuf2: LPCSTR, fModal: WINBOOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHInvokePrinterCommandA".}
+
+  proc ShellMessageBox*(
+    hAppInst: HINSTANCE, hWnd: HWND, lpcText: LPCSTR, lpcTitle: LPCSTR, fuStyle: UINT
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "ShellMessageBoxA".}
+
+  proc IsLFNDrive*(
+    pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "IsLFNDriveA".}
+
+  proc StrRetToStr*(
+    pstr: ptr STRRET, pidl: LPCITEMIDLIST, ppsz: ptr LPSTR
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRetToStrA".}
+
+  proc StrRetToBuf*(
+    pstr: ptr STRRET, pidl: LPCITEMIDLIST, pszBuf: LPSTR, cchBuf: UINT
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRetToBufA".}
+
+  proc SHStrDup*(
+    psz: LPCSTR, ppwsz: ptr ptr WCHAR
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "SHStrDupA".}
+
+  proc IsCharSpace*(
+    wch: CHAR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "IsCharSpaceA".}
+
+  proc StrCmpC*(
+    pszStr1: LPCSTR, pszStr2: LPCSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpCA".}
+
+  proc StrCmpIC*(
+    pszStr1: LPCSTR, pszStr2: LPCSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpICA".}
+
+  proc StrChr*(
+    lpStart: LPCSTR, wMatch: WORD
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrChrA".}
+
+  proc StrRChr*(
+    lpStart: LPCSTR, lpEnd: LPCSTR, wMatch: WORD
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRChrA".}
+
+  proc StrChrI*(
+    lpStart: LPCSTR, wMatch: WORD
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrChrIA".}
+
+  proc StrRChrI*(
+    lpStart: LPCSTR, lpEnd: LPCSTR, wMatch: WORD
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRChrIA".}
+
+  proc StrCmpN*(
+    lpStr1: LPCSTR, lpStr2: LPCSTR, nChar: int32
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNA".}
+
+  proc StrCmpNI*(
+    lpStr1: LPCSTR, lpStr2: LPCSTR, nChar: int32
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNIA".}
+
+  proc StrStr*(
+    lpFirst: LPCSTR, lpSrch: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrStrA".}
+
+  proc StrStrI*(
+    lpFirst: LPCSTR, lpSrch: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrStrIA".}
+
+  proc StrDup*(
+    lpSrch: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrDupA".}
+
+  proc StrRStrI*(
+    lpSource: LPCSTR, lpLast: LPCSTR, lpSrch: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrRStrIA".}
+
+  proc StrCSpn*(
+    lpStr: LPCSTR, lpSet: LPCSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCSpnA".}
+
+  proc StrCSpnI*(
+    lpStr: LPCSTR, lpSet: LPCSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCSpnIA".}
+
+  proc StrSpn*(
+    psz: LPCSTR, pszSet: LPCSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrSpnA".}
+
+  proc StrToInt*(
+    lpSrc: LPCSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToIntA".}
+
+  proc StrPBrk*(
+    psz: LPCSTR, pszSet: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrPBrkA".}
+
+  proc StrToIntEx*(
+    pszString: LPCSTR, dwFlags: DWORD, piRet: ptr int32
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToIntExA".}
+
+  proc StrToInt64Ex*(
+    pszString: LPCSTR, dwFlags: DWORD, pllRet: ptr LONGLONG
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToInt64ExA".}
+
+  proc StrFromTimeInterval*(
+    pszOut: LPSTR, cchMax: UINT, dwTimeMS: DWORD, digits: int32
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFromTimeIntervalA".}
+
+  proc StrFormatByteSize*(
+    dw: DWORD, szBuf: LPSTR, uiBufSize: UINT
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFormatByteSizeA".}
+
+  proc StrFormatKBSize*(
+    qdw: LONGLONG, szBuf: LPSTR, uiBufSize: UINT
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrFormatKBSizeA".}
+
+  proc StrNCat*(
+    psz1: LPSTR, psz2: LPCSTR, cchMax: int32
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrNCatA".}
+
+  proc StrTrim*(
+    psz: LPSTR, pszTrimChars: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrTrimA".}
+
+  proc StrCatBuff*(
+    pszDest: LPSTR, pszSrc: LPCSTR, cchDestBuffSize: int32
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCatBuffA".}
+
+  proc ChrCmpI*(
+    w1: WORD, w2: WORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "ChrCmpIA".}
+
+  proc wvnsprintf*(
+    lpOut: LPSTR, cchLimitIn: int32, lpFmt: LPCSTR, arglist: va_list
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "wvnsprintfA".}
+
+  proc wnsprintf*(
+    lpOut: LPSTR, cchLimitIn: int32, lpFmt: LPCSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "wnsprintfA".}
+
+  proc StrIsIntlEqual*(
+    fCaseSens: WINBOOL, lpString1: LPCSTR, lpString2: LPCSTR, nChar: int32
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "StrIsIntlEqualA".}
+
+  proc StrToLong*(
+    lpSrc: LPCSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrToIntA".}
+
+  proc StrNCmp*(
+    lpStr1: LPCSTR, lpStr2: LPCSTR, nChar: int32
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNA".}
+
+  proc StrNCmpI*(
+    lpStr1: LPCSTR, lpStr2: LPCSTR, nChar: int32
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "StrCmpNIA".}
+
+  proc StrCatN*(
+    psz1: LPSTR, psz2: LPCSTR, cchMax: int32
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "StrNCatA".}
+
+  proc PathAddBackslash*(
+    pszPath: LPSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathAddBackslashA".}
+
+  proc PathAddExtension*(
+    pszPath: LPSTR, pszExt: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathAddExtensionA".}
+
+  proc PathBuildRoot*(
+    pszRoot: LPSTR, iDrive: int32
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathBuildRootA".}
+
+  proc PathCombine*(
+    pszDest: LPSTR, pszDir: LPCSTR, pszFile: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCombineA".}
+
+  proc PathFileExists*(
+    pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFileExistsA".}
+
+  proc PathFindExtension*(
+    pszPath: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindExtensionA".}
+
+  proc PathFindFileName*(
+    pszPath: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindFileNameA".}
+
+  proc PathFindNextComponent*(
+    pszPath: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindNextComponentA".}
+
+  proc PathGetArgs*(
+    pszPath: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathGetArgsA".}
+
+  proc PathFindSuffixArray*(
+    pszPath: LPCSTR, apszSuffix: ptr LPCSTR, iArraySize: int32
+  ): LPCSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindSuffixArrayA".}
+
+  proc PathIsLFNFileSpec*(
+    lpName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsLFNFileSpecA".}
+
+  proc PathGetDriveNumber*(
+    pszPath: LPCSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "PathGetDriveNumberA".}
+
+  proc PathIsDirectory*(
+    pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsDirectoryA".}
+
+  proc PathIsDirectoryEmpty*(
+    pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsDirectoryEmptyA".}
+
+  proc PathIsFileSpec*(
+    pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsFileSpecA".}
+
+  proc PathIsPrefix*(
+    pszPrefix: LPCSTR, pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsPrefixA".}
+
+  proc PathIsRelative*(
+    pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsRelativeA".}
+
+  proc PathIsRoot*(
+    pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsRootA".}
+
+  proc PathIsSameRoot*(
+    pszPath1: LPCSTR, pszPath2: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsSameRootA".}
+
+  proc PathIsUNC*(
+    pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsUNCA".}
+
+  proc PathIsNetworkPath*(
+    pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsNetworkPathA".}
+
+  proc PathIsUNCServer*(
+    pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsUNCServerA".}
+
+  proc PathIsUNCServerShare*(
+    pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsUNCServerShareA".}
+
+  proc PathIsURL*(
+    pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsURLA".}
+
+  proc PathRemoveBackslash*(
+    pszPath: LPSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveBackslashA".}
+
+  proc PathSkipRoot*(
+    pszPath: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "PathSkipRootA".}
+
+  proc PathStripPath*(
+    pszPath: LPSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathStripPathA".}
+
+  proc PathStripToRoot*(
+    pszPath: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathStripToRootA".}
+
+  proc PathMakeSystemFolder*(
+    pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathMakeSystemFolderA".}
+
+  proc PathUnmakeSystemFolder*(
+    pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUnmakeSystemFolderA".}
+
+  proc PathIsSystemFolder*(
+    pszPath: LPCSTR, dwAttrb: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsSystemFolderA".}
+
+  proc PathUndecorate*(
+    pszPath: LPSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUndecorateA".}
+
+  proc PathUnExpandEnvStrings*(
+    pszPath: LPCSTR, pszBuf: LPSTR, cchBuf: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUnExpandEnvStringsA".}
+
+  proc PathAppend*(
+    pszPath: LPSTR, pMore: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathAppendA".}
+
+  proc PathCanonicalize*(
+    pszBuf: LPSTR, pszPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCanonicalizeA".}
+
+  proc PathCompactPath*(
+    hDC: HDC, pszPath: LPSTR, dx: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCompactPathA".}
+
+  proc PathCompactPathEx*(
+    pszOut: LPSTR, pszSrc: LPCSTR, cchMax: UINT, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCompactPathExA".}
+
+  proc PathCommonPrefix*(
+    pszFile1: LPCSTR, pszFile2: LPCSTR, achPath: LPSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCommonPrefixA".}
+
+  proc PathFindOnPath*(
+    pszPath: LPSTR, ppszOtherDirs: ptr LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFindOnPathA".}
+
+  proc PathGetCharType*(
+    ch: UCHAR
+  ): UINT {.winapi, stdcall, dynlib: "shlwapi", importc: "PathGetCharTypeA".}
+
+  proc PathIsContentType*(
+    pszPath: LPCSTR, pszContentType: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathIsContentTypeA".}
+
+  proc PathMakePretty*(
+    pszPath: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathMakePrettyA".}
+
+  proc PathMatchSpec*(
+    pszFile: LPCSTR, pszSpec: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathMatchSpecA".}
+
+  proc PathParseIconLocation*(
+    pszIconFile: LPSTR
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "PathParseIconLocationA".}
+
+  proc PathQuoteSpaces*(
+    lpsz: LPSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathQuoteSpacesA".}
+
+  proc PathRelativePathTo*(
+    pszPath: LPSTR, pszFrom: LPCSTR, dwAttrFrom: DWORD, pszTo: LPCSTR, dwAttrTo: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRelativePathToA".}
+
+  proc PathRemoveArgs*(
+    pszPath: LPSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveArgsA".}
+
+  proc PathRemoveBlanks*(
+    pszPath: LPSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveBlanksA".}
+
+  proc PathRemoveExtension*(
+    pszPath: LPSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveExtensionA".}
+
+  proc PathRemoveFileSpec*(
+    pszPath: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRemoveFileSpecA".}
+
+  proc PathRenameExtension*(
+    pszPath: LPSTR, pszExt: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathRenameExtensionA".}
+
+  proc PathSearchAndQualify*(
+    pszPath: LPCSTR, pszBuf: LPSTR, cchBuf: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathSearchAndQualifyA".}
+
+  proc PathSetDlgItemPath*(
+    hDlg: HWND, id: int32, pszPath: LPCSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathSetDlgItemPathA".}
+
+  proc PathUnquoteSpaces*(
+    lpsz: LPSTR
+  ): void {.winapi, stdcall, dynlib: "shlwapi", importc: "PathUnquoteSpacesA".}
+
+  proc UrlCompare*(
+    psz1: LPCSTR, psz2: LPCSTR, fIgnoreSlash: WINBOOL
+  ): int32 {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCompareA".}
+
+  proc UrlCombine*(
+    pszBase: LPCSTR,
+    pszRelative: LPCSTR,
+    pszCombined: LPSTR,
+    pcchCombined: LPDWORD,
+    dwFlags: DWORD,
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCombineA".}
+
+  proc UrlCanonicalize*(
+    pszUrl: LPCSTR, pszCanonicalized: LPSTR, pcchCanonicalized: LPDWORD, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCanonicalizeA".}
+
+  proc UrlIsOpaque*(
+    pszURL: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlIsOpaqueA".}
+
+  proc UrlGetLocation*(
+    psz1: LPCSTR
+  ): LPCSTR {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlGetLocationA".}
+
+  proc UrlUnescape*(
+    pszUrl: LPSTR, pszUnescaped: LPSTR, pcchUnescaped: LPDWORD, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlUnescapeA".}
+
+  proc UrlEscape*(
+    pszUrl: LPCSTR, pszEscaped: LPSTR, pcchEscaped: LPDWORD, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlEscapeA".}
+
+  proc UrlCreateFromPath*(
+    pszPath: LPCSTR, pszUrl: LPSTR, pcchUrl: LPDWORD, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlCreateFromPathA".}
+
+  proc PathCreateFromUrl*(
+    pszUrl: LPCSTR, pszPath: LPSTR, pcchPath: LPDWORD, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCreateFromUrlA".}
+
+  proc UrlHash*(
+    pszUrl: LPCSTR, pbHash: LPBYTE, cbHash: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlHashA".}
+
+  proc UrlGetPart*(
+    pszIn: LPCSTR, pszOut: LPSTR, pcchOut: LPDWORD, dwPart: DWORD, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlGetPartA".}
+
+  proc UrlApplyScheme*(
+    pszIn: LPCSTR, pszOut: LPSTR, pcchOut: LPDWORD, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlApplySchemeA".}
+
+  proc UrlIs*(
+    pszUrl: LPCSTR, UrlIs: TURLIS
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "UrlIsA".}
+
+  proc SHDeleteEmptyKey*(
+    hkey: HKEY, pszSubKey: LPCSTR
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHDeleteEmptyKeyA".}
+
+  proc SHDeleteKey*(
+    hkey: HKEY, pszSubKey: LPCSTR
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHDeleteKeyA".}
+
+  proc SHDeleteValue*(
+    hkey: HKEY, pszSubKey: LPCSTR, pszValue: LPCSTR
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHDeleteValueA".}
+
+  proc SHGetValue*(
+    hkey: HKEY,
+    pszSubKey: LPCSTR,
+    pszValue: LPCSTR,
+    pdwType: ptr DWORD,
+    pvData: pointer,
+    pcbData: ptr DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHGetValueA".}
+
+  proc SHSetValue*(
+    hkey: HKEY,
+    pszSubKey: LPCSTR,
+    pszValue: LPCSTR,
+    dwType: DWORD,
+    pvData: LPCVOID,
+    cbData: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHSetValueA".}
+
+  proc SHRegGetValue*(
+    hkey: HKEY,
+    pszSubKey: LPCSTR,
+    pszValue: LPCSTR,
+    dwFlags: SRRF,
+    pdwType: ptr DWORD,
+    pvData: pointer,
+    pcbData: ptr DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetValueA".}
+
+  proc SHQueryValueEx*(
+    hkey: HKEY,
+    pszValue: LPCSTR,
+    pdwReserved: ptr DWORD,
+    pdwType: ptr DWORD,
+    pvData: pointer,
+    pcbData: ptr DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHQueryValueExA".}
+
+  proc SHEnumKeyEx*(
+    hkey: HKEY, dwIndex: DWORD, pszName: LPSTR, pcchName: LPDWORD
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHEnumKeyExA".}
+
+  proc SHEnumValue*(
+    hkey: HKEY,
+    dwIndex: DWORD,
+    pszValueName: LPSTR,
+    pcchValueName: LPDWORD,
+    pdwType: LPDWORD,
+    pvData: pointer,
+    pcbData: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHEnumValueA".}
+
+  proc SHQueryInfoKey*(
+    hkey: HKEY,
+    pcSubKeys: LPDWORD,
+    pcchMaxSubKeyLen: LPDWORD,
+    pcValues: LPDWORD,
+    pcchMaxValueNameLen: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHQueryInfoKeyA".}
+
+  proc SHCopyKey*(
+    hkeySrc: HKEY, szSrcSubKey: LPCSTR, hkeyDest: HKEY, fReserved: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHCopyKeyA".}
+
+  proc SHRegGetPath*(
+    hKey: HKEY, pcszSubKey: LPCSTR, pcszValue: LPCSTR, pszPath: LPSTR, dwFlags: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetPathA".}
+
+  proc SHRegSetPath*(
+    hKey: HKEY, pcszSubKey: LPCSTR, pcszValue: LPCSTR, pcszPath: LPCSTR, dwFlags: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegSetPathA".}
+
+  proc SHRegCreateUSKey*(
+    pszPath: LPCSTR,
+    samDesired: REGSAM,
+    hRelativeUSKey: HUSKEY,
+    phNewUSKey: PHUSKEY,
+    dwFlags: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegCreateUSKeyA".}
+
+  proc SHRegOpenUSKey*(
+    pszPath: LPCSTR,
+    samDesired: REGSAM,
+    hRelativeUSKey: HUSKEY,
+    phNewUSKey: PHUSKEY,
+    fIgnoreHKCU: WINBOOL,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegOpenUSKeyA".}
+
+  proc SHRegQueryUSValue*(
+    hUSKey: HUSKEY,
+    pszValue: LPCSTR,
+    pdwType: LPDWORD,
+    pvData: pointer,
+    pcbData: LPDWORD,
+    fIgnoreHKCU: WINBOOL,
+    pvDefaultData: pointer,
+    dwDefaultDataSize: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegQueryUSValueA".}
+
+  proc SHRegWriteUSValue*(
+    hUSKey: HUSKEY,
+    pszValue: LPCSTR,
+    dwType: DWORD,
+    pvData: pointer,
+    cbData: DWORD,
+    dwFlags: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegWriteUSValueA".}
+
+  proc SHRegDeleteUSValue*(
+    hUSKey: HUSKEY, pszValue: LPCSTR, delRegFlags: SHREGDEL_FLAGS
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegDeleteUSValueA".}
+
+  proc SHRegDeleteEmptyUSKey*(
+    hUSKey: HUSKEY, pszSubKey: LPCSTR, delRegFlags: SHREGDEL_FLAGS
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegDeleteEmptyUSKeyA".}
+
+  proc SHRegEnumUSKey*(
+    hUSKey: HUSKEY,
+    dwIndex: DWORD,
+    pszName: LPSTR,
+    pcchName: LPDWORD,
+    enumRegFlags: SHREGENUM_FLAGS,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegEnumUSKeyA".}
+
+  proc SHRegEnumUSValue*(
+    hUSkey: HUSKEY,
+    dwIndex: DWORD,
+    pszValueName: LPSTR,
+    pcchValueName: LPDWORD,
+    pdwType: LPDWORD,
+    pvData: pointer,
+    pcbData: LPDWORD,
+    enumRegFlags: SHREGENUM_FLAGS,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegEnumUSValueA".}
+
+  proc SHRegQueryInfoUSKey*(
+    hUSKey: HUSKEY,
+    pcSubKeys: LPDWORD,
+    pcchMaxSubKeyLen: LPDWORD,
+    pcValues: LPDWORD,
+    pcchMaxValueNameLen: LPDWORD,
+    enumRegFlags: SHREGENUM_FLAGS,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegQueryInfoUSKeyA".}
+
+  proc SHRegGetUSValue*(
+    pszSubKey: LPCSTR,
+    pszValue: LPCSTR,
+    pdwType: LPDWORD,
+    pvData: pointer,
+    pcbData: LPDWORD,
+    fIgnoreHKCU: WINBOOL,
+    pvDefaultData: pointer,
+    dwDefaultDataSize: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetUSValueA".}
+
+  proc SHRegSetUSValue*(
+    pszSubKey: LPCSTR,
+    pszValue: LPCSTR,
+    dwType: DWORD,
+    pvData: pointer,
+    cbData: DWORD,
+    dwFlags: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegSetUSValueA".}
+
+  proc SHRegGetBoolUSValue*(
+    pszSubKey: LPCSTR, pszValue: LPCSTR, fIgnoreHKCU: WINBOOL, fDefault: WINBOOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "SHRegGetBoolUSValueA".}
+
+  proc AssocQueryString*(
+    flags: ASSOCF,
+    str: ASSOCSTR,
+    pszAssoc: LPCSTR,
+    pszExtra: LPCSTR,
+    pszOut: LPSTR,
+    pcchOut: ptr DWORD,
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "AssocQueryStringA".}
+
+  proc AssocQueryStringByKey*(
+    flags: ASSOCF,
+    str: ASSOCSTR,
+    hkAssoc: HKEY,
+    pszExtra: LPCSTR,
+    pszOut: LPSTR,
+    pcchOut: ptr DWORD,
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "AssocQueryStringByKeyA".}
+
+  proc AssocQueryKey*(
+    flags: ASSOCF, key: ASSOCKEY, pszAssoc: LPCSTR, pszExtra: LPCSTR, phkeyOut: ptr HKEY
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "AssocQueryKeyA".}
+
+  proc SHOpenRegStream2*(
+    hkey: HKEY, pszSubkey: LPCSTR, pszValue: LPCSTR, grfMode: DWORD
+  ): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc: "SHOpenRegStream2A".}
+
+  proc SHCreateStreamOnFile*(
+    pszFile: LPCSTR, grfMode: DWORD, ppstm: ptr ptr IStream
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "SHCreateStreamOnFileA".}
+
+  proc SHOpenRegStream*(
+    hkey: HKEY, pszSubkey: LPCSTR, pszValue: LPCSTR, grfMode: DWORD
+  ): ptr IStream {.winapi, stdcall, dynlib: "shlwapi", importc: "SHOpenRegStream2A".}
+
+  proc GetAcceptLanguages*(
+    psz: LPSTR, pcch: ptr DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shlwapi", importc: "GetAcceptLanguagesA".}
+
+  proc SHGetIconOverlayIndex*(
+    pszIconPath: LPCSTR, iIconIndex: int32
+  ): int32 {.winapi, stdcall, dynlib: "shell32", importc: "SHGetIconOverlayIndexA".}
+
+  proc ILCreateFromPath*(
+    pszPath: PCSTR
+  ): PIDLIST_ABSOLUTE {.
+    winapi, stdcall, dynlib: "shell32", importc: "ILCreateFromPathA"
+  .}
+
+  proc SHGetPathFromIDList*(
+    pidl: PCIDLIST_ABSOLUTE, pszPath: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetPathFromIDListA".}
+
+  proc SHCreateDirectoryEx*(
+    hwnd: HWND, pszPath: LPCSTR, psa: ptr SECURITY_ATTRIBUTES
+  ): int32 {.winapi, stdcall, dynlib: "shell32", importc: "SHCreateDirectoryExA".}
+
+  proc SHGetSpecialFolderPath*(
+    hwnd: HWND, pszPath: LPSTR, csidl: int32, fCreate: WINBOOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetSpecialFolderPathA".}
+
+  proc SHGetFolderPath*(
+    hwnd: HWND, csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPSTR
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHGetFolderPathA".}
+
+  proc SHSetFolderPath*(
+    csidl: int32, hToken: HANDLE, dwFlags: DWORD, pszPath: LPCSTR
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHSetFolderPathA".}
+
+  proc SHGetFolderPathAndSubDir*(
+    hwnd: HWND,
+    csidl: int32,
+    hToken: HANDLE,
+    dwFlags: DWORD,
+    pszSubDir: LPCSTR,
+    pszPath: LPSTR,
+  ): HRESULT {.
+    winapi, stdcall, dynlib: "shell32", importc: "SHGetFolderPathAndSubDirA"
+  .}
+
+  proc SHBrowseForFolder*(
+    lpbi: LPBROWSEINFOA
+  ): PIDLIST_ABSOLUTE {.
+    winapi, stdcall, dynlib: "shell32", importc: "SHBrowseForFolderA"
+  .}
+
+  proc SHUpdateImage*(
+    pszHashItem: LPCSTR, iIndex: int32, uFlags: UINT, iImageIndex: int32
+  ): void {.winapi, stdcall, dynlib: "shell32", importc: "SHUpdateImageA".}
+
+  proc SHGetDataFromIDList*(
+    psf: ptr IShellFolder, pidl: PCUITEMID_CHILD, nFormat: int32, pv: pointer, cb: int32
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHGetDataFromIDListA".}
+
+  proc PathIsSlow*(
+    pszFile: LPCSTR, dwAttr: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "PathIsSlowA".}
+
+  proc SHDefExtractIcon*(
+    pszIconFile: LPCSTR,
+    iIndex: int32,
+    uFlags: UINT,
+    phiconLarge: ptr HICON,
+    phiconSmall: ptr HICON,
+    nIconSize: UINT,
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHDefExtractIconA".}
+
+  proc Shell_GetCachedImageIndex*(
+    pszIconPath: LPCSTR, iIconIndex: int32, uIconFlags: UINT
+  ): int32 {.winapi, stdcall, dynlib: "shell32", importc: "Shell_GetCachedImageIndexA".}
+
+  proc SHPathPrepareForWrite*(
+    hwnd: HWND, punkEnableModless: ptr IUnknown, pszPath: LPCSTR, dwFlags: DWORD
+  ): HRESULT {.winapi, stdcall, dynlib: "shell32", importc: "SHPathPrepareForWriteA".}
--- a/semicongine/thirdparty/winim/winim/inc/snmp.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/snmp.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -18,6 +18,7 @@
     stream*: ptr BYTE
     length*: UINT
     dynamic*: WINBOOL
+
   AsnBits* = AsnOctetString
   AsnSequence* = AsnOctetString
   AsnImplicitSequence* = AsnOctetString
@@ -28,6 +29,7 @@
   AsnObjectIdentifier* {.pure, packed.} = object
     idLength*: UINT
     ids*: ptr UINT
+
   AsnObjectName* = AsnObjectIdentifier
   AsnAny_asnValue* {.pure, union.} = object
     number*: AsnInteger32
@@ -42,22 +44,27 @@
     gauge*: AsnGauge32
     ticks*: AsnTimeticks
     arbitrary*: AsnOpaque
+
   AsnAny* {.pure, packed.} = object
     asnType*: BYTE
     padding*: array[3, byte]
     asnValue*: AsnAny_asnValue
+
   AsnObjectSyntax* = AsnAny
   SnmpVarBind* {.pure.} = object
     name*: AsnObjectName
     value*: AsnObjectSyntax
+
   SnmpVarBindList* {.pure, packed.} = object
     list*: ptr SnmpVarBind
     len*: UINT
+
   RFC1157VarBindList* = SnmpVarBindList
   RFC1157VarBind* = SnmpVarBind
   AsnInteger* = AsnInteger32
   AsnCounter* = AsnCounter32
   AsnGauge* = AsnGauge32
+
 const
   asnUNIVERSAL* = 0x00
   asnAPPLICATION* = 0x40
@@ -174,59 +181,228 @@
   asnPRIMATIVE* = asnPRIMITIVE
   asnUNSIGNED32* = asnUINTEGER32
 type
-  SnmpExtensionInit* = proc (dwUptimeReference: DWORD, phSubagentTrapEvent: ptr HANDLE, pFirstSupportedRegion: ptr AsnObjectIdentifier): WINBOOL {.stdcall.}
-  SnmpExtensionInitEx* = proc (pNextSupportedRegion: ptr AsnObjectIdentifier): WINBOOL {.stdcall.}
-  SnmpExtensionMonitor* = proc (pAgentMgmtData: LPVOID): WINBOOL {.stdcall.}
-  SnmpExtensionQuery* = proc (bPduType: BYTE, pVarBindList: ptr SnmpVarBindList, pErrorStatus: ptr AsnInteger32, pErrorIndex: ptr AsnInteger32): WINBOOL {.stdcall.}
-  SnmpExtensionQueryEx* = proc (nRequestType: UINT, nTransactionId: UINT, pVarBindList: ptr SnmpVarBindList, pContextInfo: ptr AsnOctetString, pErrorStatus: ptr AsnInteger32, pErrorIndex: ptr AsnInteger32): WINBOOL {.stdcall.}
-  SnmpExtensionTrap* = proc (pEnterpriseOid: ptr AsnObjectIdentifier, pGenericTrapId: ptr AsnInteger32, pSpecificTrapId: ptr AsnInteger32, pTimeStamp: ptr AsnTimeticks, pVarBindList: ptr SnmpVarBindList): WINBOOL {.stdcall.}
-  SnmpExtensionClose* = proc (): VOID {.stdcall.}
-  PFNSNMPEXTENSIONINIT* = proc (dwUpTimeReference: DWORD, phSubagentTrapEvent: ptr HANDLE, pFirstSupportedRegion: ptr AsnObjectIdentifier): WINBOOL {.stdcall.}
-  PFNSNMPEXTENSIONINITEX* = proc (pNextSupportedRegion: ptr AsnObjectIdentifier): WINBOOL {.stdcall.}
-  PFNSNMPEXTENSIONMONITOR* = proc (pAgentMgmtData: LPVOID): WINBOOL {.stdcall.}
-  PFNSNMPEXTENSIONQUERY* = proc (bPduType: BYTE, pVarBindList: ptr SnmpVarBindList, pErrorStatus: ptr AsnInteger32, pErrorIndex: ptr AsnInteger32): WINBOOL {.stdcall.}
-  PFNSNMPEXTENSIONQUERYEX* = proc (nRequestType: UINT, nTransactionId: UINT, pVarBindList: ptr SnmpVarBindList, pContextInfo: ptr AsnOctetString, pErrorStatus: ptr AsnInteger32, pErrorIndex: ptr AsnInteger32): WINBOOL {.stdcall.}
-  PFNSNMPEXTENSIONTRAP* = proc (pEnterpriseOid: ptr AsnObjectIdentifier, pGenericTrapId: ptr AsnInteger32, pSpecificTrapId: ptr AsnInteger32, pTimeStamp: ptr AsnTimeticks, pVarBindList: ptr SnmpVarBindList): WINBOOL {.stdcall.}
-  PFNSNMPEXTENSIONCLOSE* = proc (): VOID {.stdcall.}
-proc SnmpUtilOidCpy*(pOidDst: ptr AsnObjectIdentifier, pOidSrc: ptr AsnObjectIdentifier): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilOidAppend*(pOidDst: ptr AsnObjectIdentifier, pOidSrc: ptr AsnObjectIdentifier): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilOidNCmp*(pOid1: ptr AsnObjectIdentifier, pOid2: ptr AsnObjectIdentifier, nSubIds: UINT): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilOidCmp*(pOid1: ptr AsnObjectIdentifier, pOid2: ptr AsnObjectIdentifier): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilOidFree*(pOid: ptr AsnObjectIdentifier): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilOctetsCmp*(pOctets1: ptr AsnOctetString, pOctets2: ptr AsnOctetString): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilOctetsNCmp*(pOctets1: ptr AsnOctetString, pOctets2: ptr AsnOctetString, nChars: UINT): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilOctetsCpy*(pOctetsDst: ptr AsnOctetString, pOctetsSrc: ptr AsnOctetString): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilOctetsFree*(pOctets: ptr AsnOctetString): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilAsnAnyCpy*(pAnyDst: ptr AsnAny, pAnySrc: ptr AsnAny): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilAsnAnyFree*(pAny: ptr AsnAny): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilVarBindCpy*(pVbDst: ptr SnmpVarBind, pVbSrc: ptr SnmpVarBind): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilVarBindFree*(pVb: ptr SnmpVarBind): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilVarBindListCpy*(pVblDst: ptr SnmpVarBindList, pVblSrc: ptr SnmpVarBindList): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilVarBindListFree*(pVbl: ptr SnmpVarBindList): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilMemFree*(pMem: LPVOID): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilMemAlloc*(nBytes: UINT): LPVOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilMemReAlloc*(pMem: LPVOID, nBytes: UINT): LPVOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilOidToA*(Oid: ptr AsnObjectIdentifier): LPSTR {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilIdsToA*(Ids: ptr UINT, IdLength: UINT): LPSTR {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilPrintOid*(Oid: ptr AsnObjectIdentifier): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilPrintAsnAny*(pAny: ptr AsnAny): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
+  SnmpExtensionInit* = proc(
+    dwUptimeReference: DWORD,
+    phSubagentTrapEvent: ptr HANDLE,
+    pFirstSupportedRegion: ptr AsnObjectIdentifier,
+  ): WINBOOL {.stdcall.}
+  SnmpExtensionInitEx* =
+    proc(pNextSupportedRegion: ptr AsnObjectIdentifier): WINBOOL {.stdcall.}
+  SnmpExtensionMonitor* = proc(pAgentMgmtData: LPVOID): WINBOOL {.stdcall.}
+  SnmpExtensionQuery* = proc(
+    bPduType: BYTE,
+    pVarBindList: ptr SnmpVarBindList,
+    pErrorStatus: ptr AsnInteger32,
+    pErrorIndex: ptr AsnInteger32,
+  ): WINBOOL {.stdcall.}
+  SnmpExtensionQueryEx* = proc(
+    nRequestType: UINT,
+    nTransactionId: UINT,
+    pVarBindList: ptr SnmpVarBindList,
+    pContextInfo: ptr AsnOctetString,
+    pErrorStatus: ptr AsnInteger32,
+    pErrorIndex: ptr AsnInteger32,
+  ): WINBOOL {.stdcall.}
+  SnmpExtensionTrap* = proc(
+    pEnterpriseOid: ptr AsnObjectIdentifier,
+    pGenericTrapId: ptr AsnInteger32,
+    pSpecificTrapId: ptr AsnInteger32,
+    pTimeStamp: ptr AsnTimeticks,
+    pVarBindList: ptr SnmpVarBindList,
+  ): WINBOOL {.stdcall.}
+  SnmpExtensionClose* = proc(): VOID {.stdcall.}
+  PFNSNMPEXTENSIONINIT* = proc(
+    dwUpTimeReference: DWORD,
+    phSubagentTrapEvent: ptr HANDLE,
+    pFirstSupportedRegion: ptr AsnObjectIdentifier,
+  ): WINBOOL {.stdcall.}
+  PFNSNMPEXTENSIONINITEX* =
+    proc(pNextSupportedRegion: ptr AsnObjectIdentifier): WINBOOL {.stdcall.}
+  PFNSNMPEXTENSIONMONITOR* = proc(pAgentMgmtData: LPVOID): WINBOOL {.stdcall.}
+  PFNSNMPEXTENSIONQUERY* = proc(
+    bPduType: BYTE,
+    pVarBindList: ptr SnmpVarBindList,
+    pErrorStatus: ptr AsnInteger32,
+    pErrorIndex: ptr AsnInteger32,
+  ): WINBOOL {.stdcall.}
+  PFNSNMPEXTENSIONQUERYEX* = proc(
+    nRequestType: UINT,
+    nTransactionId: UINT,
+    pVarBindList: ptr SnmpVarBindList,
+    pContextInfo: ptr AsnOctetString,
+    pErrorStatus: ptr AsnInteger32,
+    pErrorIndex: ptr AsnInteger32,
+  ): WINBOOL {.stdcall.}
+  PFNSNMPEXTENSIONTRAP* = proc(
+    pEnterpriseOid: ptr AsnObjectIdentifier,
+    pGenericTrapId: ptr AsnInteger32,
+    pSpecificTrapId: ptr AsnInteger32,
+    pTimeStamp: ptr AsnTimeticks,
+    pVarBindList: ptr SnmpVarBindList,
+  ): WINBOOL {.stdcall.}
+  PFNSNMPEXTENSIONCLOSE* = proc(): VOID {.stdcall.}
+
+proc SnmpUtilOidCpy*(
+  pOidDst: ptr AsnObjectIdentifier, pOidSrc: ptr AsnObjectIdentifier
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilOidAppend*(
+  pOidDst: ptr AsnObjectIdentifier, pOidSrc: ptr AsnObjectIdentifier
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilOidNCmp*(
+  pOid1: ptr AsnObjectIdentifier, pOid2: ptr AsnObjectIdentifier, nSubIds: UINT
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilOidCmp*(
+  pOid1: ptr AsnObjectIdentifier, pOid2: ptr AsnObjectIdentifier
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilOidFree*(
+  pOid: ptr AsnObjectIdentifier
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilOctetsCmp*(
+  pOctets1: ptr AsnOctetString, pOctets2: ptr AsnOctetString
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilOctetsNCmp*(
+  pOctets1: ptr AsnOctetString, pOctets2: ptr AsnOctetString, nChars: UINT
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilOctetsCpy*(
+  pOctetsDst: ptr AsnOctetString, pOctetsSrc: ptr AsnOctetString
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilOctetsFree*(
+  pOctets: ptr AsnOctetString
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilAsnAnyCpy*(
+  pAnyDst: ptr AsnAny, pAnySrc: ptr AsnAny
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilAsnAnyFree*(
+  pAny: ptr AsnAny
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilVarBindCpy*(
+  pVbDst: ptr SnmpVarBind, pVbSrc: ptr SnmpVarBind
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilVarBindFree*(
+  pVb: ptr SnmpVarBind
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilVarBindListCpy*(
+  pVblDst: ptr SnmpVarBindList, pVblSrc: ptr SnmpVarBindList
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilVarBindListFree*(
+  pVbl: ptr SnmpVarBindList
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilMemFree*(
+  pMem: LPVOID
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilMemAlloc*(
+  nBytes: UINT
+): LPVOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilMemReAlloc*(
+  pMem: LPVOID, nBytes: UINT
+): LPVOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilOidToA*(
+  Oid: ptr AsnObjectIdentifier
+): LPSTR {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilIdsToA*(
+  Ids: ptr UINT, IdLength: UINT
+): LPSTR {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilPrintOid*(
+  Oid: ptr AsnObjectIdentifier
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilPrintAsnAny*(
+  pAny: ptr AsnAny
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
 proc SnmpSvcGetUptime*(): DWORD {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpSvcSetLogLevel*(nLogLevel: INT): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpSvcSetLogType*(nLogType: INT): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
-proc SnmpUtilDbgPrint*(nLogLevel: INT, szFormat: LPSTR): VOID {.winapi, cdecl, varargs, dynlib: "snmpapi", importc.}
-proc SNMP_oidcpy*(pOidDst: ptr AsnObjectIdentifier, pOidSrc: ptr AsnObjectIdentifier): INT {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilOidCpy".}
-proc SNMP_oidappend*(pOidDst: ptr AsnObjectIdentifier, pOidSrc: ptr AsnObjectIdentifier): INT {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilOidAppend".}
-proc SNMP_oidncmp*(pOid1: ptr AsnObjectIdentifier, pOid2: ptr AsnObjectIdentifier, nSubIds: UINT): INT {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilOidNCmp".}
-proc SNMP_oidcmp*(pOid1: ptr AsnObjectIdentifier, pOid2: ptr AsnObjectIdentifier): INT {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilOidCmp".}
-proc SNMP_oidfree*(pOid: ptr AsnObjectIdentifier): VOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilOidFree".}
-proc SNMP_CopyVarBindList*(pVblDst: ptr SnmpVarBindList, pVblSrc: ptr SnmpVarBindList): INT {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilVarBindListCpy".}
-proc SNMP_FreeVarBindList*(pVbl: ptr SnmpVarBindList): VOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilVarBindListFree".}
-proc SNMP_CopyVarBind*(pVbDst: ptr SnmpVarBind, pVbSrc: ptr SnmpVarBind): INT {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilVarBindCpy".}
-proc SNMP_FreeVarBind*(pVb: ptr SnmpVarBind): VOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilVarBindFree".}
-proc SNMP_printany*(pAny: ptr AsnAny): VOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilPrintAsnAny".}
-proc SNMP_free*(pMem: LPVOID): VOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilMemFree".}
-proc SNMP_malloc*(nBytes: UINT): LPVOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilMemAlloc".}
-proc SNMP_realloc*(pMem: LPVOID, nBytes: UINT): LPVOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilMemReAlloc".}
-proc SNMP_DBG_free*(pMem: LPVOID): VOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilMemFree".}
-proc SNMP_DBG_malloc*(nBytes: UINT): LPVOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilMemAlloc".}
-proc SNMP_DBG_realloc*(pMem: LPVOID, nBytes: UINT): LPVOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilMemReAlloc".}
+proc SnmpSvcSetLogLevel*(
+  nLogLevel: INT
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpSvcSetLogType*(
+  nLogType: INT
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc.}
+
+proc SnmpUtilDbgPrint*(
+  nLogLevel: INT, szFormat: LPSTR
+): VOID {.winapi, cdecl, varargs, dynlib: "snmpapi", importc.}
+
+proc SNMP_oidcpy*(
+  pOidDst: ptr AsnObjectIdentifier, pOidSrc: ptr AsnObjectIdentifier
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilOidCpy".}
+
+proc SNMP_oidappend*(
+  pOidDst: ptr AsnObjectIdentifier, pOidSrc: ptr AsnObjectIdentifier
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilOidAppend".}
+
+proc SNMP_oidncmp*(
+  pOid1: ptr AsnObjectIdentifier, pOid2: ptr AsnObjectIdentifier, nSubIds: UINT
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilOidNCmp".}
+
+proc SNMP_oidcmp*(
+  pOid1: ptr AsnObjectIdentifier, pOid2: ptr AsnObjectIdentifier
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilOidCmp".}
+
+proc SNMP_oidfree*(
+  pOid: ptr AsnObjectIdentifier
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilOidFree".}
+
+proc SNMP_CopyVarBindList*(
+  pVblDst: ptr SnmpVarBindList, pVblSrc: ptr SnmpVarBindList
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilVarBindListCpy".}
+
+proc SNMP_FreeVarBindList*(
+  pVbl: ptr SnmpVarBindList
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilVarBindListFree".}
+
+proc SNMP_CopyVarBind*(
+  pVbDst: ptr SnmpVarBind, pVbSrc: ptr SnmpVarBind
+): INT {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilVarBindCpy".}
+
+proc SNMP_FreeVarBind*(
+  pVb: ptr SnmpVarBind
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilVarBindFree".}
+
+proc SNMP_printany*(
+  pAny: ptr AsnAny
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilPrintAsnAny".}
+
+proc SNMP_free*(
+  pMem: LPVOID
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilMemFree".}
+
+proc SNMP_malloc*(
+  nBytes: UINT
+): LPVOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilMemAlloc".}
+
+proc SNMP_realloc*(
+  pMem: LPVOID, nBytes: UINT
+): LPVOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilMemReAlloc".}
+
+proc SNMP_DBG_free*(
+  pMem: LPVOID
+): VOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilMemFree".}
+
+proc SNMP_DBG_malloc*(
+  nBytes: UINT
+): LPVOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilMemAlloc".}
+
+proc SNMP_DBG_realloc*(
+  pMem: LPVOID, nBytes: UINT
+): LPVOID {.winapi, stdcall, dynlib: "snmpapi", importc: "SnmpUtilMemReAlloc".}
--- a/semicongine/thirdparty/winim/winim/inc/subauth.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/subauth.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -13,14 +13,17 @@
   OLD_LARGE_INTEGER* {.pure.} = object
     LowPart*: ULONG
     HighPart*: LONG
+
   POLD_LARGE_INTEGER* = ptr OLD_LARGE_INTEGER
   LOGON_HOURS* {.pure.} = object
     UnitsPerWeek*: USHORT
     LogonHours*: PUCHAR
+
   PLOGON_HOURS* = ptr LOGON_HOURS
   SR_SECURITY_DESCRIPTOR* {.pure.} = object
     Length*: ULONG
     SecurityDescriptor*: PUCHAR
+
   PSR_SECURITY_DESCRIPTOR* = ptr SR_SECURITY_DESCRIPTOR
   USER_ALL_INFORMATION* {.pure, packed.} = object
     LastLogon*: LARGE_INTEGER
@@ -56,21 +59,25 @@
     NtPasswordPresent*: BOOLEAN
     PasswordExpired*: BOOLEAN
     PrivateDataSensitive*: BOOLEAN
+
   PUSER_ALL_INFORMATION* = ptr USER_ALL_INFORMATION
-const
-  CLEAR_BLOCK_LENGTH* = 8
+
+const CLEAR_BLOCK_LENGTH* = 8
 type
   CLEAR_BLOCK* {.pure.} = object
     data*: array[CLEAR_BLOCK_LENGTH, CHAR]
+
   PCLEAR_BLOCK* = ptr CLEAR_BLOCK
-const
-  CYPHER_BLOCK_LENGTH* = 8
+
+const CYPHER_BLOCK_LENGTH* = 8
 type
   CYPHER_BLOCK* {.pure.} = object
     data*: array[CYPHER_BLOCK_LENGTH, CHAR]
+
   PCYPHER_BLOCK* = ptr CYPHER_BLOCK
   LM_OWF_PASSWORD* {.pure.} = object
     data*: array[2, CYPHER_BLOCK]
+
   PLM_OWF_PASSWORD* = ptr LM_OWF_PASSWORD
   LM_CHALLENGE* = CLEAR_BLOCK
   PLM_CHALLENGE* = ptr LM_CHALLENGE
@@ -80,6 +87,7 @@
   PNT_CHALLENGE* = ptr NT_CHALLENGE
   USER_SESSION_KEY* {.pure.} = object
     data*: array[2, CYPHER_BLOCK]
+
   PUSER_SESSION_KEY* = ptr USER_SESSION_KEY
   NETLOGON_LOGON_IDENTITY_INFO* {.pure.} = object
     LogonDomainName*: UNICODE_STRING
@@ -87,28 +95,33 @@
     LogonId*: OLD_LARGE_INTEGER
     UserName*: UNICODE_STRING
     Workstation*: UNICODE_STRING
+
   PNETLOGON_LOGON_IDENTITY_INFO* = ptr NETLOGON_LOGON_IDENTITY_INFO
   NETLOGON_INTERACTIVE_INFO* {.pure.} = object
     Identity*: NETLOGON_LOGON_IDENTITY_INFO
     LmOwfPassword*: LM_OWF_PASSWORD
     NtOwfPassword*: NT_OWF_PASSWORD
+
   PNETLOGON_INTERACTIVE_INFO* = ptr NETLOGON_INTERACTIVE_INFO
   NETLOGON_SERVICE_INFO* {.pure.} = object
     Identity*: NETLOGON_LOGON_IDENTITY_INFO
     LmOwfPassword*: LM_OWF_PASSWORD
     NtOwfPassword*: NT_OWF_PASSWORD
+
   PNETLOGON_SERVICE_INFO* = ptr NETLOGON_SERVICE_INFO
   NETLOGON_NETWORK_INFO* {.pure.} = object
     Identity*: NETLOGON_LOGON_IDENTITY_INFO
     LmChallenge*: LM_CHALLENGE
     NtChallengeResponse*: STRING
     LmChallengeResponse*: STRING
+
   PNETLOGON_NETWORK_INFO* = ptr NETLOGON_NETWORK_INFO
   NETLOGON_GENERIC_INFO* {.pure.} = object
     Identity*: NETLOGON_LOGON_IDENTITY_INFO
     PackageName*: UNICODE_STRING
     DataLength*: ULONG
     LogonData*: PUCHAR
+
   PNETLOGON_GENERIC_INFO* = ptr NETLOGON_GENERIC_INFO
   MSV1_0_VALIDATION_INFO* {.pure.} = object
     LogoffTime*: LARGE_INTEGER
@@ -120,7 +133,9 @@
     UserFlags*: ULONG
     WhichFields*: ULONG
     UserId*: ULONG
+
   PMSV1_0_VALIDATION_INFO* = ptr MSV1_0_VALIDATION_INFO
+
 const
   USER_ACCOUNT_DISABLED* = 0x00000001
   USER_HOME_DIRECTORY_REQUIRED* = 0x00000002
@@ -143,14 +158,18 @@
   USER_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION* = 0x00040000
   USER_NO_AUTH_DATA_REQUIRED* = 0x00080000
   NEXT_FREE_ACCOUNT_CONTROL_BIT* = USER_NO_AUTH_DATA_REQUIRED shl 1
-  USER_MACHINE_ACCOUNT_MASK* = USER_INTERDOMAIN_TRUST_ACCOUNT or USER_WORKSTATION_TRUST_ACCOUNT or USER_SERVER_TRUST_ACCOUNT
-  USER_ACCOUNT_TYPE_MASK* = USER_TEMP_DUPLICATE_ACCOUNT or USER_NORMAL_ACCOUNT or USER_MACHINE_ACCOUNT_MASK
-  USER_COMPUTED_ACCOUNT_CONTROL_BITS* = USER_ACCOUNT_AUTO_LOCKED or USER_PASSWORD_EXPIRED
+  USER_MACHINE_ACCOUNT_MASK* =
+    USER_INTERDOMAIN_TRUST_ACCOUNT or USER_WORKSTATION_TRUST_ACCOUNT or
+    USER_SERVER_TRUST_ACCOUNT
+  USER_ACCOUNT_TYPE_MASK* =
+    USER_TEMP_DUPLICATE_ACCOUNT or USER_NORMAL_ACCOUNT or USER_MACHINE_ACCOUNT_MASK
+  USER_COMPUTED_ACCOUNT_CONTROL_BITS* =
+    USER_ACCOUNT_AUTO_LOCKED or USER_PASSWORD_EXPIRED
   SAM_DAYS_PER_WEEK* = 7
-  SAM_HOURS_PER_WEEK* = 24*SAM_DAYS_PER_WEEK
-  SAM_MINUTES_PER_WEEK* = 60*SAM_HOURS_PER_WEEK
+  SAM_HOURS_PER_WEEK* = 24 * SAM_DAYS_PER_WEEK
+  SAM_MINUTES_PER_WEEK* = 60 * SAM_HOURS_PER_WEEK
   USER_ALL_PARAMETERS* = 0x00200000
-  USER_SESSION_KEY_LENGTH* = CYPHER_BLOCK_LENGTH*2
+  USER_SESSION_KEY_LENGTH* = CYPHER_BLOCK_LENGTH * 2
   netlogonInteractiveInformation* = 1
   netlogonNetworkInformation* = 2
   netlogonServiceInformation* = 3
@@ -176,7 +195,40 @@
   MSV1_0_SUBAUTH_ACCOUNT_TYPE* = 0x00000040
   MSV1_0_SUBAUTH_LOCKOUT* = 0x00000080
 type
-  Msv1_0SubAuthenticationRoutine* = proc (LogonLevel: NETLOGON_LOGON_INFO_CLASS, LogonInformation: PVOID, Flags: ULONG, UserAll: PUSER_ALL_INFORMATION, WhichFields: PULONG, UserFlags: PULONG, Authoritative: PBOOLEAN, LogoffTime: PLARGE_INTEGER, KickoffTime: PLARGE_INTEGER): NTSTATUS {.stdcall.}
-  Msv1_0SubAuthenticationRoutineEx* = proc (LogonLevel: NETLOGON_LOGON_INFO_CLASS, LogonInformation: PVOID, Flags: ULONG, UserAll: PUSER_ALL_INFORMATION, UserHandle: SAM_HANDLE, ValidationInfo: PMSV1_0_VALIDATION_INFO, ActionsPerformed: PULONG): NTSTATUS {.stdcall.}
-  Msv1_0SubAuthenticationRoutineGeneric* = proc (SubmitBuffer: PVOID, SubmitBufferLength: ULONG, ReturnBufferLength: PULONG, ReturnBuffer: ptr PVOID): NTSTATUS {.stdcall.}
-  Msv1_0SubAuthenticationFilter* = proc (LogonLevel: NETLOGON_LOGON_INFO_CLASS, LogonInformation: PVOID, Flags: ULONG, UserAll: PUSER_ALL_INFORMATION, WhichFields: PULONG, UserFlags: PULONG, Authoritative: PBOOLEAN, LogoffTime: PLARGE_INTEGER, KickoffTime: PLARGE_INTEGER): NTSTATUS {.stdcall.}
+  Msv1_0SubAuthenticationRoutine* = proc(
+    LogonLevel: NETLOGON_LOGON_INFO_CLASS,
+    LogonInformation: PVOID,
+    Flags: ULONG,
+    UserAll: PUSER_ALL_INFORMATION,
+    WhichFields: PULONG,
+    UserFlags: PULONG,
+    Authoritative: PBOOLEAN,
+    LogoffTime: PLARGE_INTEGER,
+    KickoffTime: PLARGE_INTEGER,
+  ): NTSTATUS {.stdcall.}
+  Msv1_0SubAuthenticationRoutineEx* = proc(
+    LogonLevel: NETLOGON_LOGON_INFO_CLASS,
+    LogonInformation: PVOID,
+    Flags: ULONG,
+    UserAll: PUSER_ALL_INFORMATION,
+    UserHandle: SAM_HANDLE,
+    ValidationInfo: PMSV1_0_VALIDATION_INFO,
+    ActionsPerformed: PULONG,
+  ): NTSTATUS {.stdcall.}
+  Msv1_0SubAuthenticationRoutineGeneric* = proc(
+    SubmitBuffer: PVOID,
+    SubmitBufferLength: ULONG,
+    ReturnBufferLength: PULONG,
+    ReturnBuffer: ptr PVOID,
+  ): NTSTATUS {.stdcall.}
+  Msv1_0SubAuthenticationFilter* = proc(
+    LogonLevel: NETLOGON_LOGON_INFO_CLASS,
+    LogonInformation: PVOID,
+    Flags: ULONG,
+    UserAll: PUSER_ALL_INFORMATION,
+    WhichFields: PULONG,
+    UserFlags: PULONG,
+    Authoritative: PBOOLEAN,
+    LogoffTime: PLARGE_INTEGER,
+    KickoffTime: PLARGE_INTEGER,
+  ): NTSTATUS {.stdcall.}
--- a/semicongine/thirdparty/winim/winim/inc/tlhelp32.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/tlhelp32.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -13,6 +13,7 @@
     th32ProcessID*: DWORD
     th32HeapID*: ULONG_PTR
     dwFlags*: DWORD
+
   PHEAPLIST32* = ptr HEAPLIST32
   LPHEAPLIST32* = ptr HEAPLIST32
   HEAPENTRY32* {.pure.} = object
@@ -25,6 +26,7 @@
     dwResvd*: DWORD
     th32ProcessID*: DWORD
     th32HeapID*: ULONG_PTR
+
   PHEAPENTRY32* = ptr HEAPENTRY32
   LPHEAPENTRY32* = ptr HEAPENTRY32
   PROCESSENTRY32W* {.pure.} = object
@@ -38,6 +40,7 @@
     pcPriClassBase*: LONG
     dwFlags*: DWORD
     szExeFile*: array[MAX_PATH, WCHAR]
+
   PPROCESSENTRY32W* = ptr PROCESSENTRY32W
   LPPROCESSENTRY32W* = ptr PROCESSENTRY32W
   THREADENTRY32* {.pure.} = object
@@ -48,10 +51,11 @@
     tpBasePri*: LONG
     tpDeltaPri*: LONG
     dwFlags*: DWORD
+
   PTHREADENTRY32* = ptr THREADENTRY32
   LPTHREADENTRY32* = ptr THREADENTRY32
-const
-  MAX_MODULE_NAME32* = 255
+
+const MAX_MODULE_NAME32* = 255
 type
   MODULEENTRY32W* {.pure.} = object
     dwSize*: DWORD
@@ -64,26 +68,26 @@
     hModule*: HMODULE
     szModule*: array[MAX_MODULE_NAME32 + 1, WCHAR]
     szExePath*: array[MAX_PATH, WCHAR]
+
   PMODULEENTRY32W* = ptr MODULEENTRY32W
   LPMODULEENTRY32W* = ptr MODULEENTRY32W
+
 when winimUnicode:
-  type
-    MODULEENTRY32* = MODULEENTRY32W
-type
-  MODULEENTRY32A* {.pure.} = object
-    dwSize*: DWORD
-    th32ModuleID*: DWORD
-    th32ProcessID*: DWORD
-    GlblcntUsage*: DWORD
-    ProccntUsage*: DWORD
-    modBaseAddr*: ptr BYTE
-    modBaseSize*: DWORD
-    hModule*: HMODULE
-    szModule*: array[MAX_MODULE_NAME32 + 1, char]
-    szExePath*: array[MAX_PATH, char]
+  type MODULEENTRY32* = MODULEENTRY32W
+type MODULEENTRY32A* {.pure.} = object
+  dwSize*: DWORD
+  th32ModuleID*: DWORD
+  th32ProcessID*: DWORD
+  GlblcntUsage*: DWORD
+  ProccntUsage*: DWORD
+  modBaseAddr*: ptr BYTE
+  modBaseSize*: DWORD
+  hModule*: HMODULE
+  szModule*: array[MAX_MODULE_NAME32 + 1, char]
+  szExePath*: array[MAX_PATH, char]
+
 when winimAnsi:
-  type
-    MODULEENTRY32* = MODULEENTRY32A
+  type MODULEENTRY32* = MODULEENTRY32A
 type
   LPMODULEENTRY32* = ptr MODULEENTRY32
   PROCESSENTRY32A* {.pure.} = object
@@ -97,39 +101,94 @@
     pcPriClassBase*: LONG
     dwFlags*: DWORD
     szExeFile*: array[MAX_PATH, CHAR]
+
   PPROCESSENTRY32A* = ptr PROCESSENTRY32A
   LPPROCESSENTRY32A* = ptr PROCESSENTRY32A
   PMODULEENTRY32A* = ptr MODULEENTRY32A
   LPMODULEENTRY32A* = ptr MODULEENTRY32A
+
 const
   TH32CS_SNAPHEAPLIST* = 0x00000001
   TH32CS_SNAPPROCESS* = 0x00000002
   TH32CS_SNAPTHREAD* = 0x00000004
   TH32CS_SNAPMODULE* = 0x00000008
   TH32CS_SNAPMODULE32* = 0x00000010
-  TH32CS_SNAPALL* = TH32CS_SNAPHEAPLIST or TH32CS_SNAPPROCESS or TH32CS_SNAPTHREAD or TH32CS_SNAPMODULE
+  TH32CS_SNAPALL* =
+    TH32CS_SNAPHEAPLIST or TH32CS_SNAPPROCESS or TH32CS_SNAPTHREAD or TH32CS_SNAPMODULE
   TH32CS_INHERIT* = 0x80000000'i32
   HF32_DEFAULT* = 1
   HF32_SHARED* = 2
   LF32_FIXED* = 0x00000001
   LF32_FREE* = 0x00000002
   LF32_MOVEABLE* = 0x00000004
-proc CreateToolhelp32Snapshot*(dwFlags: DWORD, th32ProcessID: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Heap32ListFirst*(hSnapshot: HANDLE, lphl: LPHEAPLIST32): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Heap32ListNext*(hSnapshot: HANDLE, lphl: LPHEAPLIST32): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Heap32First*(lphe: LPHEAPENTRY32, th32ProcessID: DWORD, th32HeapID: ULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Heap32Next*(lphe: LPHEAPENTRY32): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Toolhelp32ReadProcessMemory*(th32ProcessID: DWORD, lpBaseAddress: LPCVOID, lpBuffer: LPVOID, cbRead: SIZE_T, lpNumberOfBytesRead: ptr SIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Process32FirstW*(hSnapshot: HANDLE, lppe: LPPROCESSENTRY32W): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Process32NextW*(hSnapshot: HANDLE, lppe: LPPROCESSENTRY32W): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Process32FirstA*(hSnapshot: HANDLE, lppe: LPPROCESSENTRY32A): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Process32First".}
-proc Process32NextA*(hSnapshot: HANDLE, lppe: LPPROCESSENTRY32A): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Process32Next".}
-proc Thread32First*(hSnapshot: HANDLE, lpte: LPTHREADENTRY32): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Thread32Next*(hSnapshot: HANDLE, lpte: LPTHREADENTRY32): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Module32FirstW*(hSnapshot: HANDLE, lpme: LPMODULEENTRY32W): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Module32NextW*(hSnapshot: HANDLE, lpme: LPMODULEENTRY32W): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Module32FirstA*(hSnapshot: HANDLE, lpme: LPMODULEENTRY32A): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Module32First".}
-proc Module32NextA*(hSnapshot: HANDLE, lpme: LPMODULEENTRY32A): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Module32Next".}
+proc CreateToolhelp32Snapshot*(
+  dwFlags: DWORD, th32ProcessID: DWORD
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Heap32ListFirst*(
+  hSnapshot: HANDLE, lphl: LPHEAPLIST32
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Heap32ListNext*(
+  hSnapshot: HANDLE, lphl: LPHEAPLIST32
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Heap32First*(
+  lphe: LPHEAPENTRY32, th32ProcessID: DWORD, th32HeapID: ULONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Heap32Next*(
+  lphe: LPHEAPENTRY32
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Toolhelp32ReadProcessMemory*(
+  th32ProcessID: DWORD,
+  lpBaseAddress: LPCVOID,
+  lpBuffer: LPVOID,
+  cbRead: SIZE_T,
+  lpNumberOfBytesRead: ptr SIZE_T,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Process32FirstW*(
+  hSnapshot: HANDLE, lppe: LPPROCESSENTRY32W
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Process32NextW*(
+  hSnapshot: HANDLE, lppe: LPPROCESSENTRY32W
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Process32FirstA*(
+  hSnapshot: HANDLE, lppe: LPPROCESSENTRY32A
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Process32First".}
+
+proc Process32NextA*(
+  hSnapshot: HANDLE, lppe: LPPROCESSENTRY32A
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Process32Next".}
+
+proc Thread32First*(
+  hSnapshot: HANDLE, lpte: LPTHREADENTRY32
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Thread32Next*(
+  hSnapshot: HANDLE, lpte: LPTHREADENTRY32
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Module32FirstW*(
+  hSnapshot: HANDLE, lpme: LPMODULEENTRY32W
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Module32NextW*(
+  hSnapshot: HANDLE, lpme: LPMODULEENTRY32W
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Module32FirstA*(
+  hSnapshot: HANDLE, lpme: LPMODULEENTRY32A
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Module32First".}
+
+proc Module32NextA*(
+  hSnapshot: HANDLE, lpme: LPMODULEENTRY32A
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Module32Next".}
+
 when winimUnicode:
   type
     PROCESSENTRY32* = PROCESSENTRY32W
@@ -137,10 +196,23 @@
     LPPROCESSENTRY32* = ptr PROCESSENTRY32W
     PMODULEENTRY32* = ptr MODULEENTRY32W
     LMODULEENTRY32* = ptr MODULEENTRY32W
-  proc Process32First*(hSnapshot: HANDLE, lppe: LPPROCESSENTRY32W): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Process32FirstW".}
-  proc Process32Next*(hSnapshot: HANDLE, lppe: LPPROCESSENTRY32W): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Process32NextW".}
-  proc Module32First*(hSnapshot: HANDLE, lpme: LPMODULEENTRY32W): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Module32FirstW".}
-  proc Module32Next*(hSnapshot: HANDLE, lpme: LPMODULEENTRY32W): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Module32NextW".}
+
+  proc Process32First*(
+    hSnapshot: HANDLE, lppe: LPPROCESSENTRY32W
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Process32FirstW".}
+
+  proc Process32Next*(
+    hSnapshot: HANDLE, lppe: LPPROCESSENTRY32W
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Process32NextW".}
+
+  proc Module32First*(
+    hSnapshot: HANDLE, lpme: LPMODULEENTRY32W
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Module32FirstW".}
+
+  proc Module32Next*(
+    hSnapshot: HANDLE, lpme: LPMODULEENTRY32W
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "Module32NextW".}
+
 when winimAnsi:
   type
     PROCESSENTRY32* = PROCESSENTRY32A
@@ -148,7 +220,19 @@
     LPPROCESSENTRY32* = ptr PROCESSENTRY32A
     PMODULEENTRY32* = ptr MODULEENTRY32A
     LMODULEENTRY32* = ptr MODULEENTRY32A
-  proc Process32First*(hSnapshot: HANDLE, lppe: LPPROCESSENTRY32A): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-  proc Process32Next*(hSnapshot: HANDLE, lppe: LPPROCESSENTRY32A): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-  proc Module32First*(hSnapshot: HANDLE, lpme: LPMODULEENTRY32A): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-  proc Module32Next*(hSnapshot: HANDLE, lpme: LPMODULEENTRY32A): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+  proc Process32First*(
+    hSnapshot: HANDLE, lppe: LPPROCESSENTRY32A
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+  proc Process32Next*(
+    hSnapshot: HANDLE, lppe: LPPROCESSENTRY32A
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+  proc Module32First*(
+    hSnapshot: HANDLE, lpme: LPMODULEENTRY32A
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+  proc Module32Next*(
+    hSnapshot: HANDLE, lpme: LPMODULEENTRY32A
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
--- a/semicongine/thirdparty/winim/winim/inc/uiautomation.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/uiautomation.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -70,6 +70,7 @@
   HUIAPATTERNOBJECT* = HANDLE
   HUIATEXTRANGE* = HANDLE
   HUIAEVENT* = HANDLE
+
 const
   REQUIRED_RPCSAL_H_VERSION* = 100
   NavigateDirection_Parent* = 0
@@ -87,11 +88,11 @@
   ProviderOptions_HasNativeIAccessible* = 0x80
   ProviderOptions_UseClientCoordinates* = 0x100
   StructureChangeType_ChildAdded* = 0
-  StructureChangeType_ChildRemoved* = StructureChangeType_ChildAdded+1
-  StructureChangeType_ChildrenInvalidated* = StructureChangeType_ChildRemoved+1
-  StructureChangeType_ChildrenBulkAdded* = StructureChangeType_ChildrenInvalidated+1
-  StructureChangeType_ChildrenBulkRemoved* = StructureChangeType_ChildrenBulkAdded+1
-  StructureChangeType_ChildrenReordered* = StructureChangeType_ChildrenBulkRemoved+1
+  StructureChangeType_ChildRemoved* = StructureChangeType_ChildAdded + 1
+  StructureChangeType_ChildrenInvalidated* = StructureChangeType_ChildRemoved + 1
+  StructureChangeType_ChildrenBulkAdded* = StructureChangeType_ChildrenInvalidated + 1
+  StructureChangeType_ChildrenBulkRemoved* = StructureChangeType_ChildrenBulkAdded + 1
+  StructureChangeType_ChildrenReordered* = StructureChangeType_ChildrenBulkRemoved + 1
   TextEditChangeType_None* = 0
   TextEditChangeType_AutoCorrect* = 1
   TextEditChangeType_Composition* = 2
@@ -288,27 +289,41 @@
   UIAutomationType_OutPoint* = UIAutomationType_Point or UIAutomationType_Out
   UIAutomationType_OutRect* = UIAutomationType_Rect or UIAutomationType_Out
   UIAutomationType_OutElement* = UIAutomationType_Element or UIAutomationType_Out
-  UIAutomationType_OutIntArray* = ( UIAutomationType_Int or UIAutomationType_Array ) or UIAutomationType_Out
-  UIAutomationType_OutBoolArray* = ( UIAutomationType_Bool or UIAutomationType_Array ) or UIAutomationType_Out
-  UIAutomationType_OutStringArray* = ( UIAutomationType_String or UIAutomationType_Array ) or UIAutomationType_Out
-  UIAutomationType_OutDoubleArray* = ( UIAutomationType_Double or UIAutomationType_Array ) or UIAutomationType_Out
-  UIAutomationType_OutPointArray* = ( UIAutomationType_Point or UIAutomationType_Array ) or UIAutomationType_Out
-  UIAutomationType_OutRectArray* = ( UIAutomationType_Rect or UIAutomationType_Array ) or UIAutomationType_Out
-  UIAutomationType_OutElementArray* = ( UIAutomationType_Element or UIAutomationType_Array ) or UIAutomationType_Out
+  UIAutomationType_OutIntArray* =
+    (UIAutomationType_Int or UIAutomationType_Array) or UIAutomationType_Out
+  UIAutomationType_OutBoolArray* =
+    (UIAutomationType_Bool or UIAutomationType_Array) or UIAutomationType_Out
+  UIAutomationType_OutStringArray* =
+    (UIAutomationType_String or UIAutomationType_Array) or UIAutomationType_Out
+  UIAutomationType_OutDoubleArray* =
+    (UIAutomationType_Double or UIAutomationType_Array) or UIAutomationType_Out
+  UIAutomationType_OutPointArray* =
+    (UIAutomationType_Point or UIAutomationType_Array) or UIAutomationType_Out
+  UIAutomationType_OutRectArray* =
+    (UIAutomationType_Rect or UIAutomationType_Array) or UIAutomationType_Out
+  UIAutomationType_OutElementArray* =
+    (UIAutomationType_Element or UIAutomationType_Array) or UIAutomationType_Out
   UIA_ScrollPatternNoScroll* = -1
   IID_IRawElementProviderSimple* = DEFINE_GUID("d6dd68d1-86fd-4332-8666-9abedea2d24c")
   IID_IAccessibleEx* = DEFINE_GUID("f8b80ada-2c44-48d0-89be-5ff23c9cd875")
   IID_IRawElementProviderSimple2* = DEFINE_GUID("a0a839a9-8da1-4a82-806a-8e0d44e79f56")
   IID_IRawElementProviderSimple3* = DEFINE_GUID("fcf5d820-d7ec-4613-bdf6-42a84ce7daaf")
-  IID_IRawElementProviderFragmentRoot* = DEFINE_GUID("620ce2a5-ab8f-40a9-86cb-de3c75599b58")
+  IID_IRawElementProviderFragmentRoot* =
+    DEFINE_GUID("620ce2a5-ab8f-40a9-86cb-de3c75599b58")
   IID_IRawElementProviderFragment* = DEFINE_GUID("f7063da8-8359-439c-9297-bbc5299a7d87")
-  IID_IRawElementProviderAdviseEvents* = DEFINE_GUID("a407b27b-0f6d-4427-9292-473c7bf93258")
-  IID_IRawElementProviderHwndOverride* = DEFINE_GUID("1d5df27c-8947-4425-b8d9-79787bb460b8")
+  IID_IRawElementProviderAdviseEvents* =
+    DEFINE_GUID("a407b27b-0f6d-4427-9292-473c7bf93258")
+  IID_IRawElementProviderHwndOverride* =
+    DEFINE_GUID("1d5df27c-8947-4425-b8d9-79787bb460b8")
   IID_IProxyProviderWinEventSink* = DEFINE_GUID("4fd82b78-a43e-46ac-9803-0a6969c7c183")
-  IID_IProxyProviderWinEventHandler* = DEFINE_GUID("89592ad4-f4e0-43d5-a3b6-bad7e111b435")
-  IID_IRawElementProviderWindowlessSite* = DEFINE_GUID("0a2a93cc-bfad-42ac-9b2e-0991fb0d3ea0")
-  IID_IAccessibleHostingElementProviders* = DEFINE_GUID("33ac331b-943e-4020-b295-db37784974a3")
-  IID_IRawElementProviderHostingAccessibles* = DEFINE_GUID("24be0b07-d37d-487a-98cf-a13ed465e9b3")
+  IID_IProxyProviderWinEventHandler* =
+    DEFINE_GUID("89592ad4-f4e0-43d5-a3b6-bad7e111b435")
+  IID_IRawElementProviderWindowlessSite* =
+    DEFINE_GUID("0a2a93cc-bfad-42ac-9b2e-0991fb0d3ea0")
+  IID_IAccessibleHostingElementProviders* =
+    DEFINE_GUID("33ac331b-943e-4020-b295-db37784974a3")
+  IID_IRawElementProviderHostingAccessibles* =
+    DEFINE_GUID("24be0b07-d37d-487a-98cf-a13ed465e9b3")
   IID_IDockProvider* = DEFINE_GUID("159bc72c-4ad3-485e-9637-d7052edf0146")
   IID_IExpandCollapseProvider* = DEFINE_GUID("d847d3a5-cab0-4a98-8c32-ecb45c59ad24")
   IID_IGridProvider* = DEFINE_GUID("b17d6187-0907-464b-a168-0ef17a1572b1")
@@ -346,7 +361,8 @@
   IID_ITextRangeProvider2* = DEFINE_GUID("9bbce42c-1921-4f18-89ca-dba1910a0386")
   IID_ITextChildProvider* = DEFINE_GUID("4c2de2b9-c88f-4f88-a111-f1d336b7d1a9")
   IID_ICustomNavigationProvider* = DEFINE_GUID("2062a28a-8c07-4b94-8e12-7037c622aeb8")
-  IID_IUIAutomationPatternInstance* = DEFINE_GUID("c03a7fe4-9431-409f-bed8-ae7c2299bc8d")
+  IID_IUIAutomationPatternInstance* =
+    DEFINE_GUID("c03a7fe4-9431-409f-bed8-ae7c2299bc8d")
   IID_IUIAutomationPatternHandler* = DEFINE_GUID("d97022f3-a947-465e-8b2a-ac4315fa54e8")
   IID_IUIAutomationRegistrar* = DEFINE_GUID("8609c4ec-4a1a-4d88-a357-5a66e060e1cf")
   CLSID_CUIAutomationRegistrar* = DEFINE_GUID("6e29fabf-9977-42d1-8d0e-ca7e61ad87e6")
@@ -356,12 +372,13 @@
   TreeScope_Descendants* = 0x4
   TreeScope_Parent* = 0x8
   TreeScope_Ancestors* = 0x10
-  TreeScope_Subtree* = ( TreeScope_Element or TreeScope_Children ) or TreeScope_Descendants
+  TreeScope_Subtree* =
+    (TreeScope_Element or TreeScope_Children) or TreeScope_Descendants
   PropertyConditionFlags_None* = 0
   PropertyConditionFlags_IgnoreCase* = 0x1
   PropertyConditionFlags_MatchSubstring* = 0x2
   AutomationElementMode_None* = 0
-  AutomationElementMode_Full* = AutomationElementMode_None+1
+  AutomationElementMode_Full* = AutomationElementMode_None + 1
   TreeTraversalOptions_Default* = 0
   TreeTraversalOptions_PostOrder* = 0x1
   TreeTraversalOptions_LastToFirstOrder* = 0x2
@@ -763,37 +780,56 @@
   IID_IUIAutomationElementArray* = DEFINE_GUID("14314595-b4bc-4055-95f2-58f2e42c9855")
   IID_IUIAutomationCondition* = DEFINE_GUID("352ffba8-0973-437c-a61f-f64cafd81df9")
   IID_IUIAutomationBoolCondition* = DEFINE_GUID("1b4e1f2e-75eb-4d0b-8952-5a69988e2307")
-  IID_IUIAutomationPropertyCondition* = DEFINE_GUID("99ebf2cb-5578-4267-9ad4-afd6ea77e94b")
+  IID_IUIAutomationPropertyCondition* =
+    DEFINE_GUID("99ebf2cb-5578-4267-9ad4-afd6ea77e94b")
   IID_IUIAutomationAndCondition* = DEFINE_GUID("a7d0af36-b912-45fe-9855-091ddc174aec")
   IID_IUIAutomationOrCondition* = DEFINE_GUID("8753f032-3db1-47b5-a1fc-6e34a266c712")
   IID_IUIAutomationNotCondition* = DEFINE_GUID("f528b657-847b-498c-8896-d52b565407a1")
   IID_IUIAutomationCacheRequest* = DEFINE_GUID("b32a92b5-bc25-4078-9c08-d7ee95c48e03")
   IID_IUIAutomationTreeWalker* = DEFINE_GUID("4042c624-389c-4afc-a630-9df854a541fc")
   IID_IUIAutomationEventHandler* = DEFINE_GUID("146c3c17-f12e-4e22-8c27-f894b9b79c69")
-  IID_IUIAutomationPropertyChangedEventHandler* = DEFINE_GUID("40cd37d4-c756-4b0c-8c6f-bddfeeb13b50")
-  IID_IUIAutomationStructureChangedEventHandler* = DEFINE_GUID("e81d1b4e-11c5-42f8-9754-e7036c79f054")
-  IID_IUIAutomationFocusChangedEventHandler* = DEFINE_GUID("c270f6b5-5c69-4290-9745-7a7f97169468")
-  IID_IUIAutomationTextEditTextChangedEventHandler* = DEFINE_GUID("92faa680-e704-4156-931a-e32d5bb38f3f")
-  IID_IUIAutomationChangesEventHandler* = DEFINE_GUID("58edca55-2c3e-4980-b1b9-56c17f27a2a0")
-  IID_IUIAutomationNotificationEventHandler* = DEFINE_GUID("c7cb2637-e6c2-4d0c-85de-4948c02175c7")
+  IID_IUIAutomationPropertyChangedEventHandler* =
+    DEFINE_GUID("40cd37d4-c756-4b0c-8c6f-bddfeeb13b50")
+  IID_IUIAutomationStructureChangedEventHandler* =
+    DEFINE_GUID("e81d1b4e-11c5-42f8-9754-e7036c79f054")
+  IID_IUIAutomationFocusChangedEventHandler* =
+    DEFINE_GUID("c270f6b5-5c69-4290-9745-7a7f97169468")
+  IID_IUIAutomationTextEditTextChangedEventHandler* =
+    DEFINE_GUID("92faa680-e704-4156-931a-e32d5bb38f3f")
+  IID_IUIAutomationChangesEventHandler* =
+    DEFINE_GUID("58edca55-2c3e-4980-b1b9-56c17f27a2a0")
+  IID_IUIAutomationNotificationEventHandler* =
+    DEFINE_GUID("c7cb2637-e6c2-4d0c-85de-4948c02175c7")
   IID_IUIAutomationInvokePattern* = DEFINE_GUID("fb377fbe-8ea6-46d5-9c73-6499642d3059")
   IID_IUIAutomationDockPattern* = DEFINE_GUID("fde5ef97-1464-48f6-90bf-43d0948e86ec")
-  IID_IUIAutomationExpandCollapsePattern* = DEFINE_GUID("619be086-1f4e-4ee4-bafa-210128738730")
+  IID_IUIAutomationExpandCollapsePattern* =
+    DEFINE_GUID("619be086-1f4e-4ee4-bafa-210128738730")
   IID_IUIAutomationGridPattern* = DEFINE_GUID("414c3cdc-856b-4f5b-8538-3131c6302550")
-  IID_IUIAutomationGridItemPattern* = DEFINE_GUID("78f8ef57-66c3-4e09-bd7c-e79b2004894d")
-  IID_IUIAutomationMultipleViewPattern* = DEFINE_GUID("8d253c91-1dc5-4bb5-b18f-ade16fa495e8")
-  IID_IUIAutomationObjectModelPattern* = DEFINE_GUID("71c284b3-c14d-4d14-981e-19751b0d756d")
-  IID_IUIAutomationRangeValuePattern* = DEFINE_GUID("59213f4f-7346-49e5-b120-80555987a148")
+  IID_IUIAutomationGridItemPattern* =
+    DEFINE_GUID("78f8ef57-66c3-4e09-bd7c-e79b2004894d")
+  IID_IUIAutomationMultipleViewPattern* =
+    DEFINE_GUID("8d253c91-1dc5-4bb5-b18f-ade16fa495e8")
+  IID_IUIAutomationObjectModelPattern* =
+    DEFINE_GUID("71c284b3-c14d-4d14-981e-19751b0d756d")
+  IID_IUIAutomationRangeValuePattern* =
+    DEFINE_GUID("59213f4f-7346-49e5-b120-80555987a148")
   IID_IUIAutomationScrollPattern* = DEFINE_GUID("88f4d42a-e881-459d-a77c-73bbbb7e02dc")
-  IID_IUIAutomationScrollItemPattern* = DEFINE_GUID("b488300f-d015-4f19-9c29-bb595e3645ef")
-  IID_IUIAutomationSelectionPattern* = DEFINE_GUID("5ed5202e-b2ac-47a6-b638-4b0bf140d78e")
-  IID_IUIAutomationSelectionPattern2* = DEFINE_GUID("0532bfae-c011-4e32-a343-6d642d798555")
-  IID_IUIAutomationSelectionItemPattern* = DEFINE_GUID("a8efa66a-0fda-421a-9194-38021f3578ea")
-  IID_IUIAutomationSynchronizedInputPattern* = DEFINE_GUID("2233be0b-afb7-448b-9fda-3b378aa5eae1")
+  IID_IUIAutomationScrollItemPattern* =
+    DEFINE_GUID("b488300f-d015-4f19-9c29-bb595e3645ef")
+  IID_IUIAutomationSelectionPattern* =
+    DEFINE_GUID("5ed5202e-b2ac-47a6-b638-4b0bf140d78e")
+  IID_IUIAutomationSelectionPattern2* =
+    DEFINE_GUID("0532bfae-c011-4e32-a343-6d642d798555")
+  IID_IUIAutomationSelectionItemPattern* =
+    DEFINE_GUID("a8efa66a-0fda-421a-9194-38021f3578ea")
+  IID_IUIAutomationSynchronizedInputPattern* =
+    DEFINE_GUID("2233be0b-afb7-448b-9fda-3b378aa5eae1")
   IID_IUIAutomationTablePattern* = DEFINE_GUID("620e691c-ea96-4710-a850-754b24ce2417")
-  IID_IUIAutomationTableItemPattern* = DEFINE_GUID("0b964eb3-ef2e-4464-9c79-61d61737a27e")
+  IID_IUIAutomationTableItemPattern* =
+    DEFINE_GUID("0b964eb3-ef2e-4464-9c79-61d61737a27e")
   IID_IUIAutomationTogglePattern* = DEFINE_GUID("94cf8058-9b8d-4ab9-8bfd-4cd0a33c8c70")
-  IID_IUIAutomationTransformPattern* = DEFINE_GUID("a9b55844-a55d-4ef0-926d-569c16ff89bb")
+  IID_IUIAutomationTransformPattern* =
+    DEFINE_GUID("a9b55844-a55d-4ef0-926d-569c16ff89bb")
   IID_IUIAutomationValuePattern* = DEFINE_GUID("a94cd8b1-0844-4cd6-9d2d-640537ab39e9")
   IID_IUIAutomationWindowPattern* = DEFINE_GUID("0faef453-9208-43ef-bbb2-3b485177864f")
   IID_IUIAutomationTextRange* = DEFINE_GUID("a543cc6a-f4ae-494b-8239-c814481187a8")
@@ -802,20 +838,32 @@
   IID_IUIAutomationTextRangeArray* = DEFINE_GUID("ce4ae76a-e717-4c98-81ea-47371d028eb6")
   IID_IUIAutomationTextPattern* = DEFINE_GUID("32eba289-3583-42c9-9c59-3b6d9a1e9b6a")
   IID_IUIAutomationTextPattern2* = DEFINE_GUID("506a921a-fcc9-409f-b23b-37eb74106872")
-  IID_IUIAutomationTextEditPattern* = DEFINE_GUID("17e21576-996c-4870-99d9-bff323380c06")
-  IID_IUIAutomationCustomNavigationPattern* = DEFINE_GUID("01ea217a-1766-47ed-a6cc-acf492854b1f")
-  IID_IUIAutomationActiveTextPositionChangedEventHandler* = DEFINE_GUID("f97933b0-8dae-4496-8997-5ba015fe0d82")
-  IID_IUIAutomationLegacyIAccessiblePattern* = DEFINE_GUID("828055ad-355b-4435-86d5-3b51c14a9b1b")
-  IID_IUIAutomationItemContainerPattern* = DEFINE_GUID("c690fdb2-27a8-423c-812d-429773c9084e")
-  IID_IUIAutomationVirtualizedItemPattern* = DEFINE_GUID("6ba3d7a6-04cf-4f11-8793-a8d1cde9969f")
-  IID_IUIAutomationAnnotationPattern* = DEFINE_GUID("9a175b21-339e-41b1-8e8b-623f6b681098")
+  IID_IUIAutomationTextEditPattern* =
+    DEFINE_GUID("17e21576-996c-4870-99d9-bff323380c06")
+  IID_IUIAutomationCustomNavigationPattern* =
+    DEFINE_GUID("01ea217a-1766-47ed-a6cc-acf492854b1f")
+  IID_IUIAutomationActiveTextPositionChangedEventHandler* =
+    DEFINE_GUID("f97933b0-8dae-4496-8997-5ba015fe0d82")
+  IID_IUIAutomationLegacyIAccessiblePattern* =
+    DEFINE_GUID("828055ad-355b-4435-86d5-3b51c14a9b1b")
+  IID_IUIAutomationItemContainerPattern* =
+    DEFINE_GUID("c690fdb2-27a8-423c-812d-429773c9084e")
+  IID_IUIAutomationVirtualizedItemPattern* =
+    DEFINE_GUID("6ba3d7a6-04cf-4f11-8793-a8d1cde9969f")
+  IID_IUIAutomationAnnotationPattern* =
+    DEFINE_GUID("9a175b21-339e-41b1-8e8b-623f6b681098")
   IID_IUIAutomationStylesPattern* = DEFINE_GUID("85b5f0a2-bd79-484a-ad2b-388c9838d5fb")
-  IID_IUIAutomationSpreadsheetPattern* = DEFINE_GUID("7517a7c8-faae-4de9-9f08-29b91e8595c1")
-  IID_IUIAutomationSpreadsheetItemPattern* = DEFINE_GUID("7d4fb86c-8d34-40e1-8e83-62c15204e335")
-  IID_IUIAutomationTransformPattern2* = DEFINE_GUID("6d74d017-6ecb-4381-b38b-3c17a48ff1c2")
-  IID_IUIAutomationTextChildPattern* = DEFINE_GUID("6552b038-ae05-40c8-abfd-aa08352aab86")
+  IID_IUIAutomationSpreadsheetPattern* =
+    DEFINE_GUID("7517a7c8-faae-4de9-9f08-29b91e8595c1")
+  IID_IUIAutomationSpreadsheetItemPattern* =
+    DEFINE_GUID("7d4fb86c-8d34-40e1-8e83-62c15204e335")
+  IID_IUIAutomationTransformPattern2* =
+    DEFINE_GUID("6d74d017-6ecb-4381-b38b-3c17a48ff1c2")
+  IID_IUIAutomationTextChildPattern* =
+    DEFINE_GUID("6552b038-ae05-40c8-abfd-aa08352aab86")
   IID_IUIAutomationDragPattern* = DEFINE_GUID("1dc7b570-1f54-4bad-bcda-d36a722fb7bd")
-  IID_IUIAutomationDropTargetPattern* = DEFINE_GUID("69a095f7-eee4-430e-a46b-fb73b1ae39a5")
+  IID_IUIAutomationDropTargetPattern* =
+    DEFINE_GUID("69a095f7-eee4-430e-a46b-fb73b1ae39a5")
   IID_IUIAutomationElement2* = DEFINE_GUID("6749c683-f70d-4487-a698-5f79d55290d6")
   IID_IUIAutomationElement3* = DEFINE_GUID("8471df34-aee0-4a01-a7de-7db9af12c296")
   IID_IUIAutomationElement4* = DEFINE_GUID("3b6e233c-52fb-4063-a4c9-77c075c2a06b")
@@ -825,9 +873,12 @@
   IID_IUIAutomationElement8* = DEFINE_GUID("8c60217d-5411-4cde-bcc0-1ceda223830c")
   IID_IUIAutomationElement9* = DEFINE_GUID("39325fac-039d-440e-a3a3-5eb81a5cecc3")
   IID_IUIAutomationProxyFactory* = DEFINE_GUID("85b94ecd-849d-42b6-b94d-d6db23fdf5a4")
-  IID_IUIAutomationProxyFactoryEntry* = DEFINE_GUID("d50e472e-b64b-490c-bca1-d30696f9f289")
-  IID_IUIAutomationProxyFactoryMapping* = DEFINE_GUID("09e31e18-872d-4873-93d1-1e541ec133fd")
-  IID_IUIAutomationEventHandlerGroup* = DEFINE_GUID("c9ee12f2-c13b-4408-997c-639914377f4e")
+  IID_IUIAutomationProxyFactoryEntry* =
+    DEFINE_GUID("d50e472e-b64b-490c-bca1-d30696f9f289")
+  IID_IUIAutomationProxyFactoryMapping* =
+    DEFINE_GUID("09e31e18-872d-4873-93d1-1e541ec133fd")
+  IID_IUIAutomationEventHandlerGroup* =
+    DEFINE_GUID("c9ee12f2-c13b-4408-997c-639914377f4e")
   IID_IUIAutomation* = DEFINE_GUID("30cbe57d-d9d0-452a-ab13-7ac5ac4825ee")
   IID_IUIAutomation2* = DEFINE_GUID("34723aff-0c9d-49d0-9896-7ab52df8cd8a")
   IID_IUIAutomation3* = DEFINE_GUID("73d768da-9b51-4b89-936e-c209290973e7")
@@ -849,12 +900,14 @@
   BoundingRectangle_Property_GUID* = DEFINE_GUID("7bbfe8b2-3bfc-48dd-b729-c794b846e9a1")
   ProcessId_Property_GUID* = DEFINE_GUID("40499998-9c31-4245-a403-87320e59eaf6")
   ControlType_Property_GUID* = DEFINE_GUID("ca774fea-28ac-4bc2-94ca-acec6d6c10a3")
-  LocalizedControlType_Property_GUID* = DEFINE_GUID("8763404f-a1bd-452a-89c4-3f01d3833806")
+  LocalizedControlType_Property_GUID* =
+    DEFINE_GUID("8763404f-a1bd-452a-89c4-3f01d3833806")
   Name_Property_GUID* = DEFINE_GUID("c3a6921b-4a99-44f1-bca6-61187052c431")
   AcceleratorKey_Property_GUID* = DEFINE_GUID("514865df-2557-4cb9-aeed-6ced084ce52c")
   AccessKey_Property_GUID* = DEFINE_GUID("06827b12-a7f9-4a15-917c-ffa5ad3eb0a7")
   HasKeyboardFocus_Property_GUID* = DEFINE_GUID("cf8afd39-3f46-4800-9656-b2bf12529905")
-  IsKeyboardFocusable_Property_GUID* = DEFINE_GUID("f7b8552a-0859-4b37-b9cb-51e72092f29f")
+  IsKeyboardFocusable_Property_GUID* =
+    DEFINE_GUID("f7b8552a-0859-4b37-b9cb-51e72092f29f")
   IsEnabled_Property_GUID* = DEFINE_GUID("2109427f-da60-4fed-bf1b-264bdce6eb3a")
   AutomationId_Property_GUID* = DEFINE_GUID("c82c0500-b60e-4310-a267-303c531f8ee5")
   ClassName_Property_GUID* = DEFINE_GUID("157b7215-894f-4b65-84e2-aac0da08b16b")
@@ -865,7 +918,8 @@
   IsContentElement_Property_GUID* = DEFINE_GUID("4bda64a8-f5d8-480b-8155-ef2e89adb672")
   LabeledBy_Property_GUID* = DEFINE_GUID("e5b8924b-fc8a-4a35-8031-cf78ac43e55e")
   IsPassword_Property_GUID* = DEFINE_GUID("e8482eb1-687c-497b-bebc-03be53ec1454")
-  NewNativeWindowHandle_Property_GUID* = DEFINE_GUID("5196b33b-380a-4982-95e1-91f3ef60e024")
+  NewNativeWindowHandle_Property_GUID* =
+    DEFINE_GUID("5196b33b-380a-4982-95e1-91f3ef60e024")
   ItemType_Property_GUID* = DEFINE_GUID("cdda434d-6222-413b-a68a-325dd1d40f39")
   IsOffscreen_Property_GUID* = DEFINE_GUID("03c3d160-db79-42db-a2ef-1c231eede507")
   Orientation_Property_GUID* = DEFINE_GUID("a01eee62-3884-4415-887e-678ec21e39ba")
@@ -874,46 +928,83 @@
   ItemStatus_Property_GUID* = DEFINE_GUID("51de0321-3973-43e7-8913-0b08e813c37f")
   AriaRole_Property_GUID* = DEFINE_GUID("dd207b95-be4a-4e0d-b727-63ace94b6916")
   AriaProperties_Property_GUID* = DEFINE_GUID("4213678c-e025-4922-beb5-e43ba08e6221")
-  IsDataValidForForm_Property_GUID* = DEFINE_GUID("445ac684-c3fc-4dd9-acf8-845a579296ba")
+  IsDataValidForForm_Property_GUID* =
+    DEFINE_GUID("445ac684-c3fc-4dd9-acf8-845a579296ba")
   ControllerFor_Property_GUID* = DEFINE_GUID("51124c8a-a5d2-4f13-9be6-7fa8ba9d3a90")
   DescribedBy_Property_GUID* = DEFINE_GUID("7c5865b8-9992-40fd-8db0-6bf1d317f998")
   FlowsTo_Property_GUID* = DEFINE_GUID("e4f33d20-559a-47fb-a830-f9cb4ff1a70a")
-  ProviderDescription_Property_GUID* = DEFINE_GUID("dca5708a-c16b-4cd9-b889-beb16a804904")
-  OptimizeForVisualContent_Property_GUID* = DEFINE_GUID("6a852250-c75a-4e5d-b858-e381b0f78861")
-  IsDockPatternAvailable_Property_GUID* = DEFINE_GUID("2600a4c4-2ff8-4c96-ae31-8fe619a13c6c")
-  IsExpandCollapsePatternAvailable_Property_GUID* = DEFINE_GUID("929d3806-5287-4725-aa16-222afc63d595")
-  IsGridItemPatternAvailable_Property_GUID* = DEFINE_GUID("5a43e524-f9a2-4b12-84c8-b48a3efedd34")
-  IsGridPatternAvailable_Property_GUID* = DEFINE_GUID("5622c26c-f0ef-4f3b-97cb-714c0868588b")
-  IsInvokePatternAvailable_Property_GUID* = DEFINE_GUID("4e725738-8364-4679-aa6c-f3f41931f750")
-  IsMultipleViewPatternAvailable_Property_GUID* = DEFINE_GUID("ff0a31eb-8e25-469d-8d6e-e771a27c1b90")
-  IsRangeValuePatternAvailable_Property_GUID* = DEFINE_GUID("fda4244a-eb4d-43ff-b5ad-ed36d373ec4c")
-  IsScrollPatternAvailable_Property_GUID* = DEFINE_GUID("3ebb7b4a-828a-4b57-9d22-2fea1632ed0d")
-  IsScrollItemPatternAvailable_Property_GUID* = DEFINE_GUID("1cad1a05-0927-4b76-97e1-0fcdb209b98a")
-  IsSelectionItemPatternAvailable_Property_GUID* = DEFINE_GUID("8becd62d-0bc3-4109-bee2-8e6715290e68")
-  IsSelectionPatternAvailable_Property_GUID* = DEFINE_GUID("f588acbe-c769-4838-9a60-2686dc1188c4")
-  IsTablePatternAvailable_Property_GUID* = DEFINE_GUID("cb83575f-45c2-4048-9c76-159715a139df")
-  IsTableItemPatternAvailable_Property_GUID* = DEFINE_GUID("eb36b40d-8ea4-489b-a013-e60d5951fe34")
-  IsTextPatternAvailable_Property_GUID* = DEFINE_GUID("fbe2d69d-aff6-4a45-82e2-fc92a82f5917")
-  IsTogglePatternAvailable_Property_GUID* = DEFINE_GUID("78686d53-fcd0-4b83-9b78-5832ce63bb5b")
-  IsTransformPatternAvailable_Property_GUID* = DEFINE_GUID("a7f78804-d68b-4077-a5c6-7a5ea1ac31c5")
-  IsValuePatternAvailable_Property_GUID* = DEFINE_GUID("0b5020a7-2119-473b-be37-5ceb98bbfb22")
-  IsWindowPatternAvailable_Property_GUID* = DEFINE_GUID("e7a57bb1-5888-4155-98dc-b422fd57f2bc")
-  IsLegacyIAccessiblePatternAvailable_Property_GUID* = DEFINE_GUID("d8ebd0c7-929a-4ee7-8d3a-d3d94413027b")
-  IsItemContainerPatternAvailable_Property_GUID* = DEFINE_GUID("624b5ca7-fe40-4957-a019-20c4cf11920f")
-  IsVirtualizedItemPatternAvailable_Property_GUID* = DEFINE_GUID("302cb151-2ac8-45d6-977b-d2b3a5a53f20")
-  IsSynchronizedInputPatternAvailable_Property_GUID* = DEFINE_GUID("75d69cc5-d2bf-4943-876e-b45b62a6cc66")
-  IsObjectModelPatternAvailable_Property_GUID* = DEFINE_GUID("6b21d89b-2841-412f-8ef2-15ca952318ba")
-  IsAnnotationPatternAvailable_Property_GUID* = DEFINE_GUID("0b5b3238-6d5c-41b6-bcc4-5e807f6551c4")
-  IsTextPattern2Available_Property_GUID* = DEFINE_GUID("41cf921d-e3f1-4b22-9c81-e1c3ed331c22")
-  IsTextEditPatternAvailable_Property_GUID* = DEFINE_GUID("7843425c-8b32-484c-9ab5-e3200571ffda")
-  IsCustomNavigationPatternAvailable_Property_GUID* = DEFINE_GUID("8f8e80d4-2351-48e0-874a-54aa7313889a")
-  IsStylesPatternAvailable_Property_GUID* = DEFINE_GUID("27f353d3-459c-4b59-a490-50611dacafb5")
-  IsSpreadsheetPatternAvailable_Property_GUID* = DEFINE_GUID("6ff43732-e4b4-4555-97bc-ecdbbc4d1888")
-  IsSpreadsheetItemPatternAvailable_Property_GUID* = DEFINE_GUID("9fe79b2a-2f94-43fd-996b-549e316f4acd")
-  IsTransformPattern2Available_Property_GUID* = DEFINE_GUID("25980b4b-be04-4710-ab4a-fda31dbd2895")
-  IsTextChildPatternAvailable_Property_GUID* = DEFINE_GUID("559e65df-30ff-43b5-b5ed-5b283b80c7e9")
-  IsDragPatternAvailable_Property_GUID* = DEFINE_GUID("e997a7b7-1d39-4ca7-be0f-277fcf5605cc")
-  IsDropTargetPatternAvailable_Property_GUID* = DEFINE_GUID("0686b62e-8e19-4aaf-873d-384f6d3b92be")
+  ProviderDescription_Property_GUID* =
+    DEFINE_GUID("dca5708a-c16b-4cd9-b889-beb16a804904")
+  OptimizeForVisualContent_Property_GUID* =
+    DEFINE_GUID("6a852250-c75a-4e5d-b858-e381b0f78861")
+  IsDockPatternAvailable_Property_GUID* =
+    DEFINE_GUID("2600a4c4-2ff8-4c96-ae31-8fe619a13c6c")
+  IsExpandCollapsePatternAvailable_Property_GUID* =
+    DEFINE_GUID("929d3806-5287-4725-aa16-222afc63d595")
+  IsGridItemPatternAvailable_Property_GUID* =
+    DEFINE_GUID("5a43e524-f9a2-4b12-84c8-b48a3efedd34")
+  IsGridPatternAvailable_Property_GUID* =
+    DEFINE_GUID("5622c26c-f0ef-4f3b-97cb-714c0868588b")
+  IsInvokePatternAvailable_Property_GUID* =
+    DEFINE_GUID("4e725738-8364-4679-aa6c-f3f41931f750")
+  IsMultipleViewPatternAvailable_Property_GUID* =
+    DEFINE_GUID("ff0a31eb-8e25-469d-8d6e-e771a27c1b90")
+  IsRangeValuePatternAvailable_Property_GUID* =
+    DEFINE_GUID("fda4244a-eb4d-43ff-b5ad-ed36d373ec4c")
+  IsScrollPatternAvailable_Property_GUID* =
+    DEFINE_GUID("3ebb7b4a-828a-4b57-9d22-2fea1632ed0d")
+  IsScrollItemPatternAvailable_Property_GUID* =
+    DEFINE_GUID("1cad1a05-0927-4b76-97e1-0fcdb209b98a")
+  IsSelectionItemPatternAvailable_Property_GUID* =
+    DEFINE_GUID("8becd62d-0bc3-4109-bee2-8e6715290e68")
+  IsSelectionPatternAvailable_Property_GUID* =
+    DEFINE_GUID("f588acbe-c769-4838-9a60-2686dc1188c4")
+  IsTablePatternAvailable_Property_GUID* =
+    DEFINE_GUID("cb83575f-45c2-4048-9c76-159715a139df")
+  IsTableItemPatternAvailable_Property_GUID* =
+    DEFINE_GUID("eb36b40d-8ea4-489b-a013-e60d5951fe34")
+  IsTextPatternAvailable_Property_GUID* =
+    DEFINE_GUID("fbe2d69d-aff6-4a45-82e2-fc92a82f5917")
+  IsTogglePatternAvailable_Property_GUID* =
+    DEFINE_GUID("78686d53-fcd0-4b83-9b78-5832ce63bb5b")
+  IsTransformPatternAvailable_Property_GUID* =
+    DEFINE_GUID("a7f78804-d68b-4077-a5c6-7a5ea1ac31c5")
+  IsValuePatternAvailable_Property_GUID* =
+    DEFINE_GUID("0b5020a7-2119-473b-be37-5ceb98bbfb22")
+  IsWindowPatternAvailable_Property_GUID* =
+    DEFINE_GUID("e7a57bb1-5888-4155-98dc-b422fd57f2bc")
+  IsLegacyIAccessiblePatternAvailable_Property_GUID* =
+    DEFINE_GUID("d8ebd0c7-929a-4ee7-8d3a-d3d94413027b")
+  IsItemContainerPatternAvailable_Property_GUID* =
+    DEFINE_GUID("624b5ca7-fe40-4957-a019-20c4cf11920f")
+  IsVirtualizedItemPatternAvailable_Property_GUID* =
+    DEFINE_GUID("302cb151-2ac8-45d6-977b-d2b3a5a53f20")
+  IsSynchronizedInputPatternAvailable_Property_GUID* =
+    DEFINE_GUID("75d69cc5-d2bf-4943-876e-b45b62a6cc66")
+  IsObjectModelPatternAvailable_Property_GUID* =
+    DEFINE_GUID("6b21d89b-2841-412f-8ef2-15ca952318ba")
+  IsAnnotationPatternAvailable_Property_GUID* =
+    DEFINE_GUID("0b5b3238-6d5c-41b6-bcc4-5e807f6551c4")
+  IsTextPattern2Available_Property_GUID* =
+    DEFINE_GUID("41cf921d-e3f1-4b22-9c81-e1c3ed331c22")
+  IsTextEditPatternAvailable_Property_GUID* =
+    DEFINE_GUID("7843425c-8b32-484c-9ab5-e3200571ffda")
+  IsCustomNavigationPatternAvailable_Property_GUID* =
+    DEFINE_GUID("8f8e80d4-2351-48e0-874a-54aa7313889a")
+  IsStylesPatternAvailable_Property_GUID* =
+    DEFINE_GUID("27f353d3-459c-4b59-a490-50611dacafb5")
+  IsSpreadsheetPatternAvailable_Property_GUID* =
+    DEFINE_GUID("6ff43732-e4b4-4555-97bc-ecdbbc4d1888")
+  IsSpreadsheetItemPatternAvailable_Property_GUID* =
+    DEFINE_GUID("9fe79b2a-2f94-43fd-996b-549e316f4acd")
+  IsTransformPattern2Available_Property_GUID* =
+    DEFINE_GUID("25980b4b-be04-4710-ab4a-fda31dbd2895")
+  IsTextChildPatternAvailable_Property_GUID* =
+    DEFINE_GUID("559e65df-30ff-43b5-b5ed-5b283b80c7e9")
+  IsDragPatternAvailable_Property_GUID* =
+    DEFINE_GUID("e997a7b7-1d39-4ca7-be0f-277fcf5605cc")
+  IsDropTargetPatternAvailable_Property_GUID* =
+    DEFINE_GUID("0686b62e-8e19-4aaf-873d-384f6d3b92be")
   IsPeripheral_Property_GUID* = DEFINE_GUID("da758276-7ed5-49d4-8e68-ecc9a2d300dd")
   PositionInSet_Property_GUID* = DEFINE_GUID("33d1dc54-641e-4d76-a6b1-13f341c1f896")
   SizeOfSet_Property_GUID* = DEFINE_GUID("1600d33c-3b9f-4369-9431-aa293f344cf1")
@@ -921,89 +1012,146 @@
   AnnotationTypes_Property_GUID* = DEFINE_GUID("64b71f76-53c4-4696-a219-20e940c9a176")
   AnnotationObjects_Property_GUID* = DEFINE_GUID("310910c8-7c6e-4f20-becd-4aaf6d191156")
   LandmarkType_Property_GUID* = DEFINE_GUID("454045f2-6f61-49f7-a4f8-b5f0cf82da1e")
-  LocalizedLandmarkType_Property_GUID* = DEFINE_GUID("7ac81980-eafb-4fb2-bf91-f485bef5e8e1")
+  LocalizedLandmarkType_Property_GUID* =
+    DEFINE_GUID("7ac81980-eafb-4fb2-bf91-f485bef5e8e1")
   FullDescription_Property_GUID* = DEFINE_GUID("0d4450ff-6aef-4f33-95dd-7befa72a4391")
   Value_Value_Property_GUID* = DEFINE_GUID("e95f5e64-269f-4a85-ba99-4092c3ea2986")
   Value_IsReadOnly_Property_GUID* = DEFINE_GUID("eb090f30-e24c-4799-a705-0d247bc037f8")
   RangeValue_Value_Property_GUID* = DEFINE_GUID("131f5d98-c50c-489d-abe5-ae220898c5f7")
-  RangeValue_IsReadOnly_Property_GUID* = DEFINE_GUID("25fa1055-debf-4373-a79e-1f1a1908d3c4")
-  RangeValue_Minimum_Property_GUID* = DEFINE_GUID("78cbd3b2-684d-4860-af93-d1f95cb022fd")
-  RangeValue_Maximum_Property_GUID* = DEFINE_GUID("19319914-f979-4b35-a1a6-d37e05433473")
-  RangeValue_LargeChange_Property_GUID* = DEFINE_GUID("a1f96325-3a3d-4b44-8e1f-4a46d9844019")
-  RangeValue_SmallChange_Property_GUID* = DEFINE_GUID("81c2c457-3941-4107-9975-139760f7c072")
-  Scroll_HorizontalScrollPercent_Property_GUID* = DEFINE_GUID("c7c13c0e-eb21-47ff-acc4-b5a3350f5191")
-  Scroll_HorizontalViewSize_Property_GUID* = DEFINE_GUID("70c2e5d4-fcb0-4713-a9aa-af92ff79e4cd")
-  Scroll_VerticalScrollPercent_Property_GUID* = DEFINE_GUID("6c8d7099-b2a8-4948-bff7-3cf9058bfefb")
-  Scroll_VerticalViewSize_Property_GUID* = DEFINE_GUID("de6a2e22-d8c7-40c5-83ba-e5f681d53108")
-  Scroll_HorizontallyScrollable_Property_GUID* = DEFINE_GUID("8b925147-28cd-49ae-bd63-f44118d2e719")
-  Scroll_VerticallyScrollable_Property_GUID* = DEFINE_GUID("89164798-0068-4315-b89a-1e7cfbbc3dfc")
-  Selection_Selection_Property_GUID* = DEFINE_GUID("aa6dc2a2-0e2b-4d38-96d5-34e470b81853")
-  Selection_CanSelectMultiple_Property_GUID* = DEFINE_GUID("49d73da5-c883-4500-883d-8fcf8daf6cbe")
-  Selection_IsSelectionRequired_Property_GUID* = DEFINE_GUID("b1ae4422-63fe-44e7-a5a5-a738c829b19a")
+  RangeValue_IsReadOnly_Property_GUID* =
+    DEFINE_GUID("25fa1055-debf-4373-a79e-1f1a1908d3c4")
+  RangeValue_Minimum_Property_GUID* =
+    DEFINE_GUID("78cbd3b2-684d-4860-af93-d1f95cb022fd")
+  RangeValue_Maximum_Property_GUID* =
+    DEFINE_GUID("19319914-f979-4b35-a1a6-d37e05433473")
+  RangeValue_LargeChange_Property_GUID* =
+    DEFINE_GUID("a1f96325-3a3d-4b44-8e1f-4a46d9844019")
+  RangeValue_SmallChange_Property_GUID* =
+    DEFINE_GUID("81c2c457-3941-4107-9975-139760f7c072")
+  Scroll_HorizontalScrollPercent_Property_GUID* =
+    DEFINE_GUID("c7c13c0e-eb21-47ff-acc4-b5a3350f5191")
+  Scroll_HorizontalViewSize_Property_GUID* =
+    DEFINE_GUID("70c2e5d4-fcb0-4713-a9aa-af92ff79e4cd")
+  Scroll_VerticalScrollPercent_Property_GUID* =
+    DEFINE_GUID("6c8d7099-b2a8-4948-bff7-3cf9058bfefb")
+  Scroll_VerticalViewSize_Property_GUID* =
+    DEFINE_GUID("de6a2e22-d8c7-40c5-83ba-e5f681d53108")
+  Scroll_HorizontallyScrollable_Property_GUID* =
+    DEFINE_GUID("8b925147-28cd-49ae-bd63-f44118d2e719")
+  Scroll_VerticallyScrollable_Property_GUID* =
+    DEFINE_GUID("89164798-0068-4315-b89a-1e7cfbbc3dfc")
+  Selection_Selection_Property_GUID* =
+    DEFINE_GUID("aa6dc2a2-0e2b-4d38-96d5-34e470b81853")
+  Selection_CanSelectMultiple_Property_GUID* =
+    DEFINE_GUID("49d73da5-c883-4500-883d-8fcf8daf6cbe")
+  Selection_IsSelectionRequired_Property_GUID* =
+    DEFINE_GUID("b1ae4422-63fe-44e7-a5a5-a738c829b19a")
   Grid_RowCount_Property_GUID* = DEFINE_GUID("2a9505bf-c2eb-4fb6-b356-8245ae53703e")
   Grid_ColumnCount_Property_GUID* = DEFINE_GUID("fe96f375-44aa-4536-ac7a-2a75d71a3efc")
   GridItem_Row_Property_GUID* = DEFINE_GUID("6223972a-c945-4563-9329-fdc974af2553")
   GridItem_Column_Property_GUID* = DEFINE_GUID("c774c15c-62c0-4519-8bdc-47be573c8ad5")
   GridItem_RowSpan_Property_GUID* = DEFINE_GUID("4582291c-466b-4e93-8e83-3d1715ec0c5e")
-  GridItem_ColumnSpan_Property_GUID* = DEFINE_GUID("583ea3f5-86d0-4b08-a6ec-2c5463ffc109")
+  GridItem_ColumnSpan_Property_GUID* =
+    DEFINE_GUID("583ea3f5-86d0-4b08-a6ec-2c5463ffc109")
   GridItem_Parent_Property_GUID* = DEFINE_GUID("9d912252-b97f-4ecc-8510-ea0e33427c72")
   Dock_DockPosition_Property_GUID* = DEFINE_GUID("6d67f02e-c0b0-4b10-b5b9-18d6ecf98760")
-  ExpandCollapse_ExpandCollapseState_Property_GUID* = DEFINE_GUID("275a4c48-85a7-4f69-aba0-af157610002b")
-  MultipleView_CurrentView_Property_GUID* = DEFINE_GUID("7a81a67a-b94f-4875-918b-65c8d2f998e5")
-  MultipleView_SupportedViews_Property_GUID* = DEFINE_GUID("8d5db9fd-ce3c-4ae7-b788-400a3c645547")
-  Window_CanMaximize_Property_GUID* = DEFINE_GUID("64fff53f-635d-41c1-950c-cb5adfbe28e3")
-  Window_CanMinimize_Property_GUID* = DEFINE_GUID("b73b4625-5988-4b97-b4c2-a6fe6e78c8c6")
-  Window_WindowVisualState_Property_GUID* = DEFINE_GUID("4ab7905f-e860-453e-a30a-f6431e5daad5")
-  Window_WindowInteractionState_Property_GUID* = DEFINE_GUID("4fed26a4-0455-4fa2-b21c-c4da2db1ff9c")
+  ExpandCollapse_ExpandCollapseState_Property_GUID* =
+    DEFINE_GUID("275a4c48-85a7-4f69-aba0-af157610002b")
+  MultipleView_CurrentView_Property_GUID* =
+    DEFINE_GUID("7a81a67a-b94f-4875-918b-65c8d2f998e5")
+  MultipleView_SupportedViews_Property_GUID* =
+    DEFINE_GUID("8d5db9fd-ce3c-4ae7-b788-400a3c645547")
+  Window_CanMaximize_Property_GUID* =
+    DEFINE_GUID("64fff53f-635d-41c1-950c-cb5adfbe28e3")
+  Window_CanMinimize_Property_GUID* =
+    DEFINE_GUID("b73b4625-5988-4b97-b4c2-a6fe6e78c8c6")
+  Window_WindowVisualState_Property_GUID* =
+    DEFINE_GUID("4ab7905f-e860-453e-a30a-f6431e5daad5")
+  Window_WindowInteractionState_Property_GUID* =
+    DEFINE_GUID("4fed26a4-0455-4fa2-b21c-c4da2db1ff9c")
   Window_IsModal_Property_GUID* = DEFINE_GUID("ff4e6892-37b9-4fca-8532-ffe674ecfeed")
   Window_IsTopmost_Property_GUID* = DEFINE_GUID("ef7d85d3-0937-4962-9241-b62345f24041")
-  SelectionItem_IsSelected_Property_GUID* = DEFINE_GUID("f122835f-cd5f-43df-b79d-4b849e9e6020")
-  SelectionItem_SelectionContainer_Property_GUID* = DEFINE_GUID("a4365b6e-9c1e-4b63-8b53-c2421dd1e8fb")
+  SelectionItem_IsSelected_Property_GUID* =
+    DEFINE_GUID("f122835f-cd5f-43df-b79d-4b849e9e6020")
+  SelectionItem_SelectionContainer_Property_GUID* =
+    DEFINE_GUID("a4365b6e-9c1e-4b63-8b53-c2421dd1e8fb")
   Table_RowHeaders_Property_GUID* = DEFINE_GUID("d9e35b87-6eb8-4562-aac6-a8a9075236a8")
-  Table_ColumnHeaders_Property_GUID* = DEFINE_GUID("aff1d72b-968d-42b1-b459-150b299da664")
-  Table_RowOrColumnMajor_Property_GUID* = DEFINE_GUID("83be75c3-29fe-4a30-85e1-2a6277fd106e")
-  TableItem_RowHeaderItems_Property_GUID* = DEFINE_GUID("b3f853a0-0574-4cd8-bcd7-ed5923572d97")
-  TableItem_ColumnHeaderItems_Property_GUID* = DEFINE_GUID("967a56a3-74b6-431e-8de6-99c411031c58")
-  Toggle_ToggleState_Property_GUID* = DEFINE_GUID("b23cdc52-22c2-4c6c-9ded-f5c422479ede")
+  Table_ColumnHeaders_Property_GUID* =
+    DEFINE_GUID("aff1d72b-968d-42b1-b459-150b299da664")
+  Table_RowOrColumnMajor_Property_GUID* =
+    DEFINE_GUID("83be75c3-29fe-4a30-85e1-2a6277fd106e")
+  TableItem_RowHeaderItems_Property_GUID* =
+    DEFINE_GUID("b3f853a0-0574-4cd8-bcd7-ed5923572d97")
+  TableItem_ColumnHeaderItems_Property_GUID* =
+    DEFINE_GUID("967a56a3-74b6-431e-8de6-99c411031c58")
+  Toggle_ToggleState_Property_GUID* =
+    DEFINE_GUID("b23cdc52-22c2-4c6c-9ded-f5c422479ede")
   Transform_CanMove_Property_GUID* = DEFINE_GUID("1b75824d-208b-4fdf-bccd-f1f4e5741f4f")
-  Transform_CanResize_Property_GUID* = DEFINE_GUID("bb98dca5-4c1a-41d4-a4f6-ebc128644180")
-  Transform_CanRotate_Property_GUID* = DEFINE_GUID("10079b48-3849-476f-ac96-44a95c8440d9")
-  LegacyIAccessible_ChildId_Property_GUID* = DEFINE_GUID("9a191b5d-9ef2-4787-a459-dcde885dd4e8")
-  LegacyIAccessible_Name_Property_GUID* = DEFINE_GUID("caeb063d-40ae-4869-aa5a-1b8e5d666739")
-  LegacyIAccessible_Value_Property_GUID* = DEFINE_GUID("b5c5b0b6-8217-4a77-97a5-190a85ed0156")
-  LegacyIAccessible_Description_Property_GUID* = DEFINE_GUID("46448418-7d70-4ea9-9d27-b7e775cf2ad7")
-  LegacyIAccessible_Role_Property_GUID* = DEFINE_GUID("6856e59f-cbaf-4e31-93e8-bcbf6f7e491c")
-  LegacyIAccessible_State_Property_GUID* = DEFINE_GUID("df985854-2281-4340-ab9c-c60e2c5803f6")
-  LegacyIAccessible_Help_Property_GUID* = DEFINE_GUID("94402352-161c-4b77-a98d-a872cc33947a")
-  LegacyIAccessible_KeyboardShortcut_Property_GUID* = DEFINE_GUID("8f6909ac-00b8-4259-a41c-966266d43a8a")
-  LegacyIAccessible_Selection_Property_GUID* = DEFINE_GUID("8aa8b1e0-0891-40cc-8b06-90d7d4166219")
-  LegacyIAccessible_DefaultAction_Property_GUID* = DEFINE_GUID("3b331729-eaad-4502-b85f-92615622913c")
-  Annotation_AnnotationTypeId_Property_GUID* = DEFINE_GUID("20ae484f-69ef-4c48-8f5b-c4938b206ac7")
-  Annotation_AnnotationTypeName_Property_GUID* = DEFINE_GUID("9b818892-5ac9-4af9-aa96-f58a77b058e3")
+  Transform_CanResize_Property_GUID* =
+    DEFINE_GUID("bb98dca5-4c1a-41d4-a4f6-ebc128644180")
+  Transform_CanRotate_Property_GUID* =
+    DEFINE_GUID("10079b48-3849-476f-ac96-44a95c8440d9")
+  LegacyIAccessible_ChildId_Property_GUID* =
+    DEFINE_GUID("9a191b5d-9ef2-4787-a459-dcde885dd4e8")
+  LegacyIAccessible_Name_Property_GUID* =
+    DEFINE_GUID("caeb063d-40ae-4869-aa5a-1b8e5d666739")
+  LegacyIAccessible_Value_Property_GUID* =
+    DEFINE_GUID("b5c5b0b6-8217-4a77-97a5-190a85ed0156")
+  LegacyIAccessible_Description_Property_GUID* =
+    DEFINE_GUID("46448418-7d70-4ea9-9d27-b7e775cf2ad7")
+  LegacyIAccessible_Role_Property_GUID* =
+    DEFINE_GUID("6856e59f-cbaf-4e31-93e8-bcbf6f7e491c")
+  LegacyIAccessible_State_Property_GUID* =
+    DEFINE_GUID("df985854-2281-4340-ab9c-c60e2c5803f6")
+  LegacyIAccessible_Help_Property_GUID* =
+    DEFINE_GUID("94402352-161c-4b77-a98d-a872cc33947a")
+  LegacyIAccessible_KeyboardShortcut_Property_GUID* =
+    DEFINE_GUID("8f6909ac-00b8-4259-a41c-966266d43a8a")
+  LegacyIAccessible_Selection_Property_GUID* =
+    DEFINE_GUID("8aa8b1e0-0891-40cc-8b06-90d7d4166219")
+  LegacyIAccessible_DefaultAction_Property_GUID* =
+    DEFINE_GUID("3b331729-eaad-4502-b85f-92615622913c")
+  Annotation_AnnotationTypeId_Property_GUID* =
+    DEFINE_GUID("20ae484f-69ef-4c48-8f5b-c4938b206ac7")
+  Annotation_AnnotationTypeName_Property_GUID* =
+    DEFINE_GUID("9b818892-5ac9-4af9-aa96-f58a77b058e3")
   Annotation_Author_Property_GUID* = DEFINE_GUID("7a528462-9c5c-4a03-a974-8b307a9937f2")
-  Annotation_DateTime_Property_GUID* = DEFINE_GUID("99b5ca5d-1acf-414b-a4d0-6b350b047578")
+  Annotation_DateTime_Property_GUID* =
+    DEFINE_GUID("99b5ca5d-1acf-414b-a4d0-6b350b047578")
   Annotation_Target_Property_GUID* = DEFINE_GUID("b71b302d-2104-44ad-9c5c-092b4907d70f")
   Styles_StyleId_Property_GUID* = DEFINE_GUID("da82852f-3817-4233-82af-02279e72cc77")
   Styles_StyleName_Property_GUID* = DEFINE_GUID("1c12b035-05d1-4f55-9e8e-1489f3ff550d")
   Styles_FillColor_Property_GUID* = DEFINE_GUID("63eff97a-a1c5-4b1d-84eb-b765f2edd632")
-  Styles_FillPatternStyle_Property_GUID* = DEFINE_GUID("81cf651f-482b-4451-a30a-e1545e554fb8")
+  Styles_FillPatternStyle_Property_GUID* =
+    DEFINE_GUID("81cf651f-482b-4451-a30a-e1545e554fb8")
   Styles_Shape_Property_GUID* = DEFINE_GUID("c71a23f8-778c-400d-8458-3b543e526984")
-  Styles_FillPatternColor_Property_GUID* = DEFINE_GUID("939a59fe-8fbd-4e75-a271-ac4595195163")
-  Styles_ExtendedProperties_Property_GUID* = DEFINE_GUID("f451cda0-ba0a-4681-b0b0-0dbdb53e58f3")
-  SpreadsheetItem_Formula_Property_GUID* = DEFINE_GUID("e602e47d-1b47-4bea-87cf-3b0b0b5c15b6")
-  SpreadsheetItem_AnnotationObjects_Property_GUID* = DEFINE_GUID("a3194c38-c9bc-4604-9396-ae3f9f457f7b")
-  SpreadsheetItem_AnnotationTypes_Property_GUID* = DEFINE_GUID("c70c51d0-d602-4b45-afbc-b4712b96d72b")
-  Transform2_CanZoom_Property_GUID* = DEFINE_GUID("f357e890-a756-4359-9ca6-86702bf8f381")
+  Styles_FillPatternColor_Property_GUID* =
+    DEFINE_GUID("939a59fe-8fbd-4e75-a271-ac4595195163")
+  Styles_ExtendedProperties_Property_GUID* =
+    DEFINE_GUID("f451cda0-ba0a-4681-b0b0-0dbdb53e58f3")
+  SpreadsheetItem_Formula_Property_GUID* =
+    DEFINE_GUID("e602e47d-1b47-4bea-87cf-3b0b0b5c15b6")
+  SpreadsheetItem_AnnotationObjects_Property_GUID* =
+    DEFINE_GUID("a3194c38-c9bc-4604-9396-ae3f9f457f7b")
+  SpreadsheetItem_AnnotationTypes_Property_GUID* =
+    DEFINE_GUID("c70c51d0-d602-4b45-afbc-b4712b96d72b")
+  Transform2_CanZoom_Property_GUID* =
+    DEFINE_GUID("f357e890-a756-4359-9ca6-86702bf8f381")
   LiveSetting_Property_GUID* = DEFINE_GUID("c12bcd8e-2a8e-4950-8ae7-3625111d58eb")
   Drag_IsGrabbed_Property_GUID* = DEFINE_GUID("45f206f3-75cc-4cca-a9b9-fcdfb982d8a2")
   Drag_GrabbedItems_Property_GUID* = DEFINE_GUID("77c1562c-7b86-4b21-9ed7-3cefda6f4c43")
   Drag_DropEffect_Property_GUID* = DEFINE_GUID("646f2779-48d3-4b23-8902-4bf100005df3")
   Drag_DropEffects_Property_GUID* = DEFINE_GUID("f5d61156-7ce6-49be-a836-9269dcec920f")
-  DropTarget_DropTargetEffect_Property_GUID* = DEFINE_GUID("8bb75975-a0ca-4981-b818-87fc66e9509d")
-  DropTarget_DropTargetEffects_Property_GUID* = DEFINE_GUID("bc1dd4ed-cb89-45f1-a592-e03b08ae790f")
-  Transform2_ZoomLevel_Property_GUID* = DEFINE_GUID("eee29f1a-f4a2-4b5b-ac65-95cf93283387")
-  Transform2_ZoomMinimum_Property_GUID* = DEFINE_GUID("742ccc16-4ad1-4e07-96fe-b122c6e6b22b")
-  Transform2_ZoomMaximum_Property_GUID* = DEFINE_GUID("42ab6b77-ceb0-4eca-b82a-6cfa5fa1fc08")
+  DropTarget_DropTargetEffect_Property_GUID* =
+    DEFINE_GUID("8bb75975-a0ca-4981-b818-87fc66e9509d")
+  DropTarget_DropTargetEffects_Property_GUID* =
+    DEFINE_GUID("bc1dd4ed-cb89-45f1-a592-e03b08ae790f")
+  Transform2_ZoomLevel_Property_GUID* =
+    DEFINE_GUID("eee29f1a-f4a2-4b5b-ac65-95cf93283387")
+  Transform2_ZoomMinimum_Property_GUID* =
+    DEFINE_GUID("742ccc16-4ad1-4e07-96fe-b122c6e6b22b")
+  Transform2_ZoomMaximum_Property_GUID* =
+    DEFINE_GUID("42ab6b77-ceb0-4eca-b82a-6cfa5fa1fc08")
   FlowsFrom_Property_GUID* = DEFINE_GUID("05c6844f-19de-48f8-95fa-880d5b0fd615")
   FillColor_Property_GUID* = DEFINE_GUID("6e0ec4d0-e2a8-4a56-9de7-953389933b39")
   OutlineColor_Property_GUID* = DEFINE_GUID("c395d6c0-4b55-4762-a073-fd303a634f52")
@@ -1017,29 +1165,40 @@
   ToolTipClosed_Event_GUID* = DEFINE_GUID("276d71ef-24a9-49b6-8e97-da98b401bbcd")
   StructureChanged_Event_GUID* = DEFINE_GUID("59977961-3edd-4b11-b13b-676b2a2a6ca9")
   MenuOpened_Event_GUID* = DEFINE_GUID("ebe2e945-66ca-4ed1-9ff8-2ad7df0a1b08")
-  AutomationPropertyChanged_Event_GUID* = DEFINE_GUID("2527fba1-8d7a-4630-a4cc-e66315942f52")
-  AutomationFocusChanged_Event_GUID* = DEFINE_GUID("b68a1f17-f60d-41a7-a3cc-b05292155fe0")
-  ActiveTextPositionChanged_Event_GUID* = DEFINE_GUID("a5c09e9c-c77d-4f25-b491-e5bb7017cbd4")
+  AutomationPropertyChanged_Event_GUID* =
+    DEFINE_GUID("2527fba1-8d7a-4630-a4cc-e66315942f52")
+  AutomationFocusChanged_Event_GUID* =
+    DEFINE_GUID("b68a1f17-f60d-41a7-a3cc-b05292155fe0")
+  ActiveTextPositionChanged_Event_GUID* =
+    DEFINE_GUID("a5c09e9c-c77d-4f25-b491-e5bb7017cbd4")
   AsyncContentLoaded_Event_GUID* = DEFINE_GUID("5fdee11c-d2fa-4fb9-904e-5cbee894d5ef")
   MenuClosed_Event_GUID* = DEFINE_GUID("3cf1266e-1582-4041-acd7-88a35a965297")
   LayoutInvalidated_Event_GUID* = DEFINE_GUID("ed7d6544-a6bd-4595-9bae-3d28946cc715")
   Invoke_Invoked_Event_GUID* = DEFINE_GUID("dfd699f0-c915-49dd-b422-dde785c3d24b")
-  SelectionItem_ElementAddedToSelectionEvent_Event_GUID* = DEFINE_GUID("3c822dd1-c407-4dba-91dd-79d4aed0aec6")
-  SelectionItem_ElementRemovedFromSelectionEvent_Event_GUID* = DEFINE_GUID("097fa8a9-7079-41af-8b9c-0934d8305e5c")
-  SelectionItem_ElementSelectedEvent_Event_GUID* = DEFINE_GUID("b9c7dbfb-4ebe-4532-aaf4-008cf647233c")
-  Selection_InvalidatedEvent_Event_GUID* = DEFINE_GUID("cac14904-16b4-4b53-8e47-4cb1df267bb7")
-  Text_TextSelectionChangedEvent_Event_GUID* = DEFINE_GUID("918edaa1-71b3-49ae-9741-79beb8d358f3")
-  Text_TextChangedEvent_Event_GUID* = DEFINE_GUID("4a342082-f483-48c4-ac11-a84b435e2a84")
+  SelectionItem_ElementAddedToSelectionEvent_Event_GUID* =
+    DEFINE_GUID("3c822dd1-c407-4dba-91dd-79d4aed0aec6")
+  SelectionItem_ElementRemovedFromSelectionEvent_Event_GUID* =
+    DEFINE_GUID("097fa8a9-7079-41af-8b9c-0934d8305e5c")
+  SelectionItem_ElementSelectedEvent_Event_GUID* =
+    DEFINE_GUID("b9c7dbfb-4ebe-4532-aaf4-008cf647233c")
+  Selection_InvalidatedEvent_Event_GUID* =
+    DEFINE_GUID("cac14904-16b4-4b53-8e47-4cb1df267bb7")
+  Text_TextSelectionChangedEvent_Event_GUID* =
+    DEFINE_GUID("918edaa1-71b3-49ae-9741-79beb8d358f3")
+  Text_TextChangedEvent_Event_GUID* =
+    DEFINE_GUID("4a342082-f483-48c4-ac11-a84b435e2a84")
   Window_WindowOpened_Event_GUID* = DEFINE_GUID("d3e81d06-de45-4f2f-9633-de9e02fb65af")
   Window_WindowClosed_Event_GUID* = DEFINE_GUID("edf141f8-fa67-4e22-bbf7-944e05735ee2")
   MenuModeStart_Event_GUID* = DEFINE_GUID("18d7c631-166a-4ac9-ae3b-ef4b5420e681")
   MenuModeEnd_Event_GUID* = DEFINE_GUID("9ecd4c9f-80dd-47b8-8267-5aec06bb2cff")
   InputReachedTarget_Event_GUID* = DEFINE_GUID("93ed549a-0549-40f0-bedb-28e44f7de2a3")
-  InputReachedOtherElement_Event_GUID* = DEFINE_GUID("ed201d8a-4e6c-415e-a874-2460c9b66ba8")
+  InputReachedOtherElement_Event_GUID* =
+    DEFINE_GUID("ed201d8a-4e6c-415e-a874-2460c9b66ba8")
   InputDiscarded_Event_GUID* = DEFINE_GUID("7f36c367-7b18-417c-97e3-9d58ddc944ab")
   SystemAlert_Event_GUID* = DEFINE_GUID("d271545d-7a3a-47a7-8474-81d29a2451c9")
   LiveRegionChanged_Event_GUID* = DEFINE_GUID("102d5e90-e6a9-41b6-b1c5-a9b1929d9510")
-  HostedFragmentRootsInvalidated_Event_GUID* = DEFINE_GUID("e6bdb03e-0921-4ec5-8dcf-eae877b0426b")
+  HostedFragmentRootsInvalidated_Event_GUID* =
+    DEFINE_GUID("e6bdb03e-0921-4ec5-8dcf-eae877b0426b")
   Drag_DragStart_Event_GUID* = DEFINE_GUID("883a480b-3aa9-429d-95e4-d9c8d011f0dd")
   Drag_DragCancel_Event_GUID* = DEFINE_GUID("c3ede6fa-3451-4e0f-9e71-df9c280a4657")
   Drag_DragComplete_Event_GUID* = DEFINE_GUID("38e96188-ef1f-463e-91ca-3a7792c29caf")
@@ -1121,54 +1280,84 @@
   Separator_Control_GUID* = DEFINE_GUID("8767eba3-2a63-4ab0-ac8d-aa50e23de978")
   SemanticZoom_Control_GUID* = DEFINE_GUID("5fd34a43-061e-42c8-b589-9dccf74bc43a")
   AppBar_Control_GUID* = DEFINE_GUID("6114908d-cc02-4d37-875b-b530c7139554")
-  Text_AnimationStyle_Attribute_GUID* = DEFINE_GUID("628209f0-7c9a-4d57-be64-1f1836571ff5")
-  Text_BackgroundColor_Attribute_GUID* = DEFINE_GUID("fdc49a07-583d-4f17-ad27-77fc832a3c0b")
+  Text_AnimationStyle_Attribute_GUID* =
+    DEFINE_GUID("628209f0-7c9a-4d57-be64-1f1836571ff5")
+  Text_BackgroundColor_Attribute_GUID* =
+    DEFINE_GUID("fdc49a07-583d-4f17-ad27-77fc832a3c0b")
   Text_BulletStyle_Attribute_GUID* = DEFINE_GUID("c1097c90-d5c4-4237-9781-3bec8ba54e48")
   Text_CapStyle_Attribute_GUID* = DEFINE_GUID("fb059c50-92cc-49a5-ba8f-0aa872bba2f3")
   Text_Culture_Attribute_GUID* = DEFINE_GUID("c2025af9-a42d-4ced-a1fb-c6746315222e")
   Text_FontName_Attribute_GUID* = DEFINE_GUID("64e63ba8-f2e5-476e-a477-1734feaaf726")
   Text_FontSize_Attribute_GUID* = DEFINE_GUID("dc5eeeff-0506-4673-93f2-377e4a8e01f1")
   Text_FontWeight_Attribute_GUID* = DEFINE_GUID("6fc02359-b316-4f5f-b401-f1ce55741853")
-  Text_ForegroundColor_Attribute_GUID* = DEFINE_GUID("72d1c95d-5e60-471a-96b1-6c1b3b77a436")
-  Text_HorizontalTextAlignment_Attribute_GUID* = DEFINE_GUID("04ea6161-fba3-477a-952a-bb326d026a5b")
-  Text_IndentationFirstLine_Attribute_GUID* = DEFINE_GUID("206f9ad5-c1d3-424a-8182-6da9a7f3d632")
-  Text_IndentationLeading_Attribute_GUID* = DEFINE_GUID("5cf66bac-2d45-4a4b-b6c9-f7221d2815b0")
-  Text_IndentationTrailing_Attribute_GUID* = DEFINE_GUID("97ff6c0f-1ce4-408a-b67b-94d83eb69bf2")
+  Text_ForegroundColor_Attribute_GUID* =
+    DEFINE_GUID("72d1c95d-5e60-471a-96b1-6c1b3b77a436")
+  Text_HorizontalTextAlignment_Attribute_GUID* =
+    DEFINE_GUID("04ea6161-fba3-477a-952a-bb326d026a5b")
+  Text_IndentationFirstLine_Attribute_GUID* =
+    DEFINE_GUID("206f9ad5-c1d3-424a-8182-6da9a7f3d632")
+  Text_IndentationLeading_Attribute_GUID* =
+    DEFINE_GUID("5cf66bac-2d45-4a4b-b6c9-f7221d2815b0")
+  Text_IndentationTrailing_Attribute_GUID* =
+    DEFINE_GUID("97ff6c0f-1ce4-408a-b67b-94d83eb69bf2")
   Text_IsHidden_Attribute_GUID* = DEFINE_GUID("360182fb-bdd7-47f6-ab69-19e33f8a3344")
   Text_IsItalic_Attribute_GUID* = DEFINE_GUID("fce12a56-1336-4a34-9663-1bab47239320")
   Text_IsReadOnly_Attribute_GUID* = DEFINE_GUID("a738156b-ca3e-495e-9514-833c440feb11")
   Text_IsSubscript_Attribute_GUID* = DEFINE_GUID("f0ead858-8f53-413c-873f-1a7d7f5e0de4")
-  Text_IsSuperscript_Attribute_GUID* = DEFINE_GUID("da706ee4-b3aa-4645-a41f-cd25157dea76")
-  Text_MarginBottom_Attribute_GUID* = DEFINE_GUID("7ee593c4-72b4-4cac-9271-3ed24b0e4d42")
-  Text_MarginLeading_Attribute_GUID* = DEFINE_GUID("9e9242d0-5ed0-4900-8e8a-eecc03835afc")
+  Text_IsSuperscript_Attribute_GUID* =
+    DEFINE_GUID("da706ee4-b3aa-4645-a41f-cd25157dea76")
+  Text_MarginBottom_Attribute_GUID* =
+    DEFINE_GUID("7ee593c4-72b4-4cac-9271-3ed24b0e4d42")
+  Text_MarginLeading_Attribute_GUID* =
+    DEFINE_GUID("9e9242d0-5ed0-4900-8e8a-eecc03835afc")
   Text_MarginTop_Attribute_GUID* = DEFINE_GUID("683d936f-c9b9-4a9a-b3d9-d20d33311e2a")
-  Text_MarginTrailing_Attribute_GUID* = DEFINE_GUID("af522f98-999d-40af-a5b2-0169d0342002")
-  Text_OutlineStyles_Attribute_GUID* = DEFINE_GUID("5b675b27-db89-46fe-970c-614d523bb97d")
-  Text_OverlineColor_Attribute_GUID* = DEFINE_GUID("83ab383a-fd43-40da-ab3e-ecf8165cbb6d")
-  Text_OverlineStyle_Attribute_GUID* = DEFINE_GUID("0a234d66-617e-427f-871d-e1ff1e0c213f")
-  Text_StrikethroughColor_Attribute_GUID* = DEFINE_GUID("bfe15a18-8c41-4c5a-9a0b-04af0e07f487")
-  Text_StrikethroughStyle_Attribute_GUID* = DEFINE_GUID("72913ef1-da00-4f01-899c-ac5a8577a307")
+  Text_MarginTrailing_Attribute_GUID* =
+    DEFINE_GUID("af522f98-999d-40af-a5b2-0169d0342002")
+  Text_OutlineStyles_Attribute_GUID* =
+    DEFINE_GUID("5b675b27-db89-46fe-970c-614d523bb97d")
+  Text_OverlineColor_Attribute_GUID* =
+    DEFINE_GUID("83ab383a-fd43-40da-ab3e-ecf8165cbb6d")
+  Text_OverlineStyle_Attribute_GUID* =
+    DEFINE_GUID("0a234d66-617e-427f-871d-e1ff1e0c213f")
+  Text_StrikethroughColor_Attribute_GUID* =
+    DEFINE_GUID("bfe15a18-8c41-4c5a-9a0b-04af0e07f487")
+  Text_StrikethroughStyle_Attribute_GUID* =
+    DEFINE_GUID("72913ef1-da00-4f01-899c-ac5a8577a307")
   Text_Tabs_Attribute_GUID* = DEFINE_GUID("2e68d00b-92fe-42d8-899a-a784aa4454a1")
-  Text_TextFlowDirections_Attribute_GUID* = DEFINE_GUID("8bdf8739-f420-423e-af77-20a5d973a907")
-  Text_UnderlineColor_Attribute_GUID* = DEFINE_GUID("bfa12c73-fde2-4473-bf64-1036d6aa0f45")
-  Text_UnderlineStyle_Attribute_GUID* = DEFINE_GUID("5f3b21c0-ede4-44bd-9c36-3853038cbfeb")
-  Text_AnnotationTypes_Attribute_GUID* = DEFINE_GUID("ad2eb431-ee4e-4be1-a7ba-5559155a73ef")
-  Text_AnnotationObjects_Attribute_GUID* = DEFINE_GUID("ff41cf68-e7ab-40b9-8c72-72a8ed94017d")
+  Text_TextFlowDirections_Attribute_GUID* =
+    DEFINE_GUID("8bdf8739-f420-423e-af77-20a5d973a907")
+  Text_UnderlineColor_Attribute_GUID* =
+    DEFINE_GUID("bfa12c73-fde2-4473-bf64-1036d6aa0f45")
+  Text_UnderlineStyle_Attribute_GUID* =
+    DEFINE_GUID("5f3b21c0-ede4-44bd-9c36-3853038cbfeb")
+  Text_AnnotationTypes_Attribute_GUID* =
+    DEFINE_GUID("ad2eb431-ee4e-4be1-a7ba-5559155a73ef")
+  Text_AnnotationObjects_Attribute_GUID* =
+    DEFINE_GUID("ff41cf68-e7ab-40b9-8c72-72a8ed94017d")
   Text_StyleName_Attribute_GUID* = DEFINE_GUID("22c9e091-4d66-45d8-a828-737bab4c98a7")
   Text_StyleId_Attribute_GUID* = DEFINE_GUID("14c300de-c32b-449b-ab7c-b0e0789aea5d")
   Text_Link_Attribute_GUID* = DEFINE_GUID("b38ef51d-9e8d-4e46-9144-56ebe177329b")
   Text_IsActive_Attribute_GUID* = DEFINE_GUID("f5a4e533-e1b8-436b-935d-b57aa3f558c4")
-  Text_SelectionActiveEnd_Attribute_GUID* = DEFINE_GUID("1f668cc3-9bbf-416b-b0a2-f89f86f6612c")
-  Text_CaretPosition_Attribute_GUID* = DEFINE_GUID("b227b131-9889-4752-a91b-733efdc5c5a0")
-  Text_CaretBidiMode_Attribute_GUID* = DEFINE_GUID("929ee7a6-51d3-4715-96dc-b694fa24a168")
-  Text_BeforeParagraphSpacing_Attribute_GUID* = DEFINE_GUID("be7b0ab1-c822-4a24-85e9-c8f2650fc79c")
-  Text_AfterParagraphSpacing_Attribute_GUID* = DEFINE_GUID("588cbb38-e62f-497c-b5d1-ccdf0ee823d8")
+  Text_SelectionActiveEnd_Attribute_GUID* =
+    DEFINE_GUID("1f668cc3-9bbf-416b-b0a2-f89f86f6612c")
+  Text_CaretPosition_Attribute_GUID* =
+    DEFINE_GUID("b227b131-9889-4752-a91b-733efdc5c5a0")
+  Text_CaretBidiMode_Attribute_GUID* =
+    DEFINE_GUID("929ee7a6-51d3-4715-96dc-b694fa24a168")
+  Text_BeforeParagraphSpacing_Attribute_GUID* =
+    DEFINE_GUID("be7b0ab1-c822-4a24-85e9-c8f2650fc79c")
+  Text_AfterParagraphSpacing_Attribute_GUID* =
+    DEFINE_GUID("588cbb38-e62f-497c-b5d1-ccdf0ee823d8")
   Text_LineSpacing_Attribute_GUID* = DEFINE_GUID("63ff70ae-d943-4b47-8ab7-a7a033d3214b")
-  Text_BeforeSpacing_Attribute_GUID* = DEFINE_GUID("be7b0ab1-c822-4a24-85e9-c8f2650fc79c")
-  Text_AfterSpacing_Attribute_GUID* = DEFINE_GUID("588cbb38-e62f-497c-b5d1-ccdf0ee823d8")
-  Text_SayAsInterpretAs_Attribute_GUID* = DEFINE_GUID("b38ad6ac-eee1-4b6e-88cc-014cefa93fcb")
+  Text_BeforeSpacing_Attribute_GUID* =
+    DEFINE_GUID("be7b0ab1-c822-4a24-85e9-c8f2650fc79c")
+  Text_AfterSpacing_Attribute_GUID* =
+    DEFINE_GUID("588cbb38-e62f-497c-b5d1-ccdf0ee823d8")
+  Text_SayAsInterpretAs_Attribute_GUID* =
+    DEFINE_GUID("b38ad6ac-eee1-4b6e-88cc-014cefa93fcb")
   TextEdit_TextChanged_Event_GUID* = DEFINE_GUID("120b0308-ec22-4eb8-9c98-9867cda1b165")
-  TextEdit_ConversionTargetChanged_Event_GUID* = DEFINE_GUID("3388c183-ed4f-4c8b-9baa-364d51d8847f")
+  TextEdit_ConversionTargetChanged_Event_GUID* =
+    DEFINE_GUID("3388c183-ed4f-4c8b-9baa-364d51d8847f")
   Changes_Event_GUID* = DEFINE_GUID("7df26714-614f-4e05-9488-716c5ba19436")
   Annotation_Custom_GUID* = DEFINE_GUID("9ec82750-3931-4952-85bc-1dbff78a43e3")
   Annotation_SpellingError_GUID* = DEFINE_GUID("ae85567e-9ece-423f-81b7-96c43d53e50e")
@@ -1186,13 +1375,18 @@
   Annotation_MoveChange_GUID* = DEFINE_GUID("9da587eb-23e5-4490-b385-1a22ddc8b187")
   Annotation_FormatChange_GUID* = DEFINE_GUID("eb247345-d4f1-41ce-8e52-f79b69635e48")
   Annotation_UnsyncedChange_GUID* = DEFINE_GUID("1851116a-0e47-4b30-8cb5-d7dae4fbcd1b")
-  Annotation_EditingLockedChange_GUID* = DEFINE_GUID("c31f3e1c-7423-4dac-8348-41f099ff6f64")
+  Annotation_EditingLockedChange_GUID* =
+    DEFINE_GUID("c31f3e1c-7423-4dac-8348-41f099ff6f64")
   Annotation_ExternalChange_GUID* = DEFINE_GUID("75a05b31-5f11-42fd-887d-dfa010db2392")
-  Annotation_ConflictingChange_GUID* = DEFINE_GUID("98af8802-517c-459f-af13-016d3fab877e")
+  Annotation_ConflictingChange_GUID* =
+    DEFINE_GUID("98af8802-517c-459f-af13-016d3fab877e")
   Annotation_Author_GUID* = DEFINE_GUID("f161d3a7-f81b-4128-b17f-71f690914520")
-  Annotation_AdvancedProofingIssue_GUID* = DEFINE_GUID("dac7b72c-c0f2-4b84-b90d-5fafc0f0ef1c")
-  Annotation_DataValidationError_GUID* = DEFINE_GUID("c8649fa8-9775-437e-ad46-e709d93c2343")
-  Annotation_CircularReferenceError_GUID* = DEFINE_GUID("25bd9cf4-1745-4659-ba67-727f0318c616")
+  Annotation_AdvancedProofingIssue_GUID* =
+    DEFINE_GUID("dac7b72c-c0f2-4b84-b90d-5fafc0f0ef1c")
+  Annotation_DataValidationError_GUID* =
+    DEFINE_GUID("c8649fa8-9775-437e-ad46-e709d93c2343")
+  Annotation_CircularReferenceError_GUID* =
+    DEFINE_GUID("25bd9cf4-1745-4659-ba67-727f0318c616")
   Annotation_Mathematics_GUID* = DEFINE_GUID("eaab634b-26d0-40c1-8073-57ca1c633c9b")
   Changes_Summary_GUID* = DEFINE_GUID("313d65a6-e60f-4d62-9861-55afd728d207")
   StyleId_Custom_GUID* = DEFINE_GUID("ef2edd3e-a999-4b7c-a378-09bbd52a3516")
@@ -1215,11 +1409,16 @@
   Notification_Event_GUID* = DEFINE_GUID("72c5a2f7-9788-480f-b8eb-4dee00f6186f")
   SID_IsUIAutomationObject* = DEFINE_GUID("b96fdb85-7204-4724-842b-c7059dedb9d0")
   SID_ControlElementProvider* = DEFINE_GUID("f4791d68-e254-4ba3-9a53-26a5c5497946")
-  IsSelectionPattern2Available_Property_GUID* = DEFINE_GUID("490806fb-6e89-4a47-8319-d266e511f021")
-  Selection2_FirstSelectedItem_Property_GUID* = DEFINE_GUID("cc24ea67-369c-4e55-9ff7-38da69540c29")
-  Selection2_LastSelectedItem_Property_GUID* = DEFINE_GUID("cf7bda90-2d83-49f8-860c-9ce394cf89b4")
-  Selection2_CurrentSelectedItem_Property_GUID* = DEFINE_GUID("34257c26-83b5-41a6-939c-ae841c136236")
-  Selection2_ItemCount_Property_GUID* = DEFINE_GUID("bb49eb9f-456d-4048-b591-9c2026b84636")
+  IsSelectionPattern2Available_Property_GUID* =
+    DEFINE_GUID("490806fb-6e89-4a47-8319-d266e511f021")
+  Selection2_FirstSelectedItem_Property_GUID* =
+    DEFINE_GUID("cc24ea67-369c-4e55-9ff7-38da69540c29")
+  Selection2_LastSelectedItem_Property_GUID* =
+    DEFINE_GUID("cf7bda90-2d83-49f8-860c-9ce394cf89b4")
+  Selection2_CurrentSelectedItem_Property_GUID* =
+    DEFINE_GUID("34257c26-83b5-41a6-939c-ae841c136236")
+  Selection2_ItemCount_Property_GUID* =
+    DEFINE_GUID("bb49eb9f-456d-4048-b591-9c2026b84636")
   Selection_Pattern2_GUID* = DEFINE_GUID("fba25cab-ab98-49f7-a7dc-fe539dc15be7")
   HeadingLevel_Property_GUID* = DEFINE_GUID("29084272-aaaf-4a30-8796-3c12f62b6bbb")
   IsDialog_Property_GUID* = DEFINE_GUID("9d0dfb9b-8436-4501-bbbb-e534a4fb3b3f")
@@ -1261,33 +1460,43 @@
   UIA_PFIA_DEFAULT* = 0x0000
   UIA_PFIA_UNWRAP_BRIDGE* = 0x0001
 type
-  UiaProviderCallback* = proc (hwnd: HWND, providerType: ProviderType): ptr SAFEARRAY {.stdcall.}
+  UiaProviderCallback* =
+    proc(hwnd: HWND, providerType: ProviderType): ptr SAFEARRAY {.stdcall.}
   UiaEventArgs* {.pure.} = object
     Type*: EventArgsType
     EventId*: int32
-  UiaEventCallback* = proc (pArgs: ptr UiaEventArgs, pRequestedData: ptr SAFEARRAY, pTreeStructure: BSTR): void {.stdcall.}
+
+  UiaEventCallback* = proc(
+    pArgs: ptr UiaEventArgs, pRequestedData: ptr SAFEARRAY, pTreeStructure: BSTR
+  ): void {.stdcall.}
   UiaRect* {.pure.} = object
     left*: float64
     top*: float64
     width*: float64
     height*: float64
+
   UiaPoint* {.pure.} = object
     x*: float64
     y*: float64
+
   UiaChangeInfo* {.pure.} = object
     uiaId*: int32
     payload*: VARIANT
     extraInfo*: VARIANT
+
   UIAutomationParameter* {.pure.} = object
     `type`*: UIAutomationType
     pData*: pointer
+
   UIAutomationPropertyInfo* {.pure.} = object
     guid*: GUID
     pProgrammaticName*: LPCWSTR
     `type`*: UIAutomationType
+
   UIAutomationEventInfo* {.pure.} = object
     guid*: GUID
     pProgrammaticName*: LPCWSTR
+
   UIAutomationMethodInfo* {.pure.} = object
     pProgrammaticName*: LPCWSTR
     doSetFocus*: BOOL
@@ -1295,16 +1504,42 @@
     cOutParameters*: UINT
     pParameterTypes*: ptr UIAutomationType
     pParameterNames*: ptr LPCWSTR
+
   IUIAutomationPatternInstance* {.pure.} = object
     lpVtbl*: ptr IUIAutomationPatternInstanceVtbl
+
   IUIAutomationPatternInstanceVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetProperty*: proc(self: ptr IUIAutomationPatternInstance, index: UINT, cached: BOOL, `type`: UIAutomationType, pPtr: pointer): HRESULT {.stdcall.}
-    CallMethod*: proc(self: ptr IUIAutomationPatternInstance, index: UINT, pParams: ptr UIAutomationParameter, cParams: UINT): HRESULT {.stdcall.}
+    GetProperty*: proc(
+      self: ptr IUIAutomationPatternInstance,
+      index: UINT,
+      cached: BOOL,
+      `type`: UIAutomationType,
+      pPtr: pointer,
+    ): HRESULT {.stdcall.}
+    CallMethod*: proc(
+      self: ptr IUIAutomationPatternInstance,
+      index: UINT,
+      pParams: ptr UIAutomationParameter,
+      cParams: UINT,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationPatternHandler* {.pure.} = object
     lpVtbl*: ptr IUIAutomationPatternHandlerVtbl
+
   IUIAutomationPatternHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateClientWrapper*: proc(self: ptr IUIAutomationPatternHandler, pPatternInstance: ptr IUIAutomationPatternInstance, pClientWrapper: ptr ptr IUnknown): HRESULT {.stdcall.}
-    Dispatch*: proc(self: ptr IUIAutomationPatternHandler, pTarget: ptr IUnknown, index: UINT, pParams: ptr UIAutomationParameter, cParams: UINT): HRESULT {.stdcall.}
+    CreateClientWrapper*: proc(
+      self: ptr IUIAutomationPatternHandler,
+      pPatternInstance: ptr IUIAutomationPatternInstance,
+      pClientWrapper: ptr ptr IUnknown,
+    ): HRESULT {.stdcall.}
+    Dispatch*: proc(
+      self: ptr IUIAutomationPatternHandler,
+      pTarget: ptr IUnknown,
+      index: UINT,
+      pParams: ptr UIAutomationParameter,
+      cParams: UINT,
+    ): HRESULT {.stdcall.}
+
   UIAutomationPatternInfo* {.pure.} = object
     guid*: GUID
     pProgrammaticName*: LPCWSTR
@@ -1317,23 +1552,29 @@
     cEvents*: UINT
     pEvents*: ptr UIAutomationEventInfo
     pPatternHandler*: ptr IUIAutomationPatternHandler
+
   TExtendedProperty* {.pure.} = object
     PropertyName*: BSTR
     PropertyValue*: BSTR
+
   UiaCondition* {.pure.} = object
     ConditionType*: ConditionType
+
   UiaPropertyCondition* {.pure.} = object
     ConditionType*: ConditionType
     PropertyId*: PROPERTYID
     Value*: VARIANT
     Flags*: PropertyConditionFlags
+
   UiaAndOrCondition* {.pure.} = object
     ConditionType*: ConditionType
     ppConditions*: ptr ptr UiaCondition
     cConditions*: int32
+
   UiaNotCondition* {.pure.} = object
     ConditionType*: ConditionType
     pCondition*: ptr UiaCondition
+
   UiaCacheRequest* {.pure.} = object
     pViewCondition*: ptr UiaCondition
     Scope*: TreeScope
@@ -1342,2099 +1583,8936 @@
     pPatterns*: ptr PATTERNID
     cPatterns*: int32
     automationElementMode*: AutomationElementMode
+
   UiaFindParams* {.pure.} = object
     MaxDepth*: int32
     FindFirst*: BOOL
     ExcludeRoot*: BOOL
     pFindCondition*: ptr UiaCondition
+
   UiaPropertyChangedEventArgs* {.pure.} = object
     Type*: EventArgsType
     EventId*: int32
     PropertyId*: PROPERTYID
     OldValue*: VARIANT
     NewValue*: VARIANT
+
   UiaStructureChangedEventArgs* {.pure.} = object
     Type*: EventArgsType
     EventId*: int32
     StructureChangeType*: StructureChangeType
     pRuntimeId*: ptr int32
     cRuntimeIdLen*: int32
+
   UiaTextEditTextChangedEventArgs* {.pure.} = object
     Type*: EventArgsType
     EventId*: int32
     TextEditChangeType*: TextEditChangeType
     pTextChange*: ptr SAFEARRAY
+
   UiaChangesEventArgs* {.pure.} = object
     Type*: EventArgsType
     EventId*: int32
     EventIdCount*: int32
     pUiaChanges*: ptr UiaChangeInfo
+
   UiaAsyncContentLoadedEventArgs* {.pure.} = object
     Type*: EventArgsType
     EventId*: int32
     AsyncContentLoadedState*: AsyncContentLoadedState
     PercentComplete*: float64
+
   UiaWindowClosedEventArgs* {.pure.} = object
     Type*: EventArgsType
     EventId*: int32
     pRuntimeId*: ptr int32
     cRuntimeIdLen*: int32
+
   IRawElementProviderSimple* {.pure.} = object
     lpVtbl*: ptr IRawElementProviderSimpleVtbl
+
   IRawElementProviderSimpleVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_ProviderOptions*: proc(self: ptr IRawElementProviderSimple, pRetVal: ptr ProviderOptions): HRESULT {.stdcall.}
-    GetPatternProvider*: proc(self: ptr IRawElementProviderSimple, patternId: PATTERNID, pRetVal: ptr ptr IUnknown): HRESULT {.stdcall.}
-    GetPropertyValue*: proc(self: ptr IRawElementProviderSimple, propertyId: PROPERTYID, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
-    get_HostRawElementProvider*: proc(self: ptr IRawElementProviderSimple, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
+    get_ProviderOptions*: proc(
+      self: ptr IRawElementProviderSimple, pRetVal: ptr ProviderOptions
+    ): HRESULT {.stdcall.}
+    GetPatternProvider*: proc(
+      self: ptr IRawElementProviderSimple,
+      patternId: PATTERNID,
+      pRetVal: ptr ptr IUnknown,
+    ): HRESULT {.stdcall.}
+    GetPropertyValue*: proc(
+      self: ptr IRawElementProviderSimple, propertyId: PROPERTYID, pRetVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    get_HostRawElementProvider*: proc(
+      self: ptr IRawElementProviderSimple, pRetVal: ptr ptr IRawElementProviderSimple
+    ): HRESULT {.stdcall.}
+
   IAccessibleEx* {.pure.} = object
     lpVtbl*: ptr IAccessibleExVtbl
+
   IAccessibleExVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetObjectForChild*: proc(self: ptr IAccessibleEx, idChild: int32, pRetVal: ptr ptr IAccessibleEx): HRESULT {.stdcall.}
-    GetIAccessiblePair*: proc(self: ptr IAccessibleEx, ppAcc: ptr ptr IAccessible, pidChild: ptr int32): HRESULT {.stdcall.}
-    GetRuntimeId*: proc(self: ptr IAccessibleEx, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    ConvertReturnedElement*: proc(self: ptr IAccessibleEx, pIn: ptr IRawElementProviderSimple, ppRetValOut: ptr ptr IAccessibleEx): HRESULT {.stdcall.}
+    GetObjectForChild*: proc(
+      self: ptr IAccessibleEx, idChild: int32, pRetVal: ptr ptr IAccessibleEx
+    ): HRESULT {.stdcall.}
+    GetIAccessiblePair*: proc(
+      self: ptr IAccessibleEx, ppAcc: ptr ptr IAccessible, pidChild: ptr int32
+    ): HRESULT {.stdcall.}
+    GetRuntimeId*:
+      proc(self: ptr IAccessibleEx, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    ConvertReturnedElement*: proc(
+      self: ptr IAccessibleEx,
+      pIn: ptr IRawElementProviderSimple,
+      ppRetValOut: ptr ptr IAccessibleEx,
+    ): HRESULT {.stdcall.}
+
   IRawElementProviderSimple2* {.pure.} = object
     lpVtbl*: ptr IRawElementProviderSimple2Vtbl
+
   IRawElementProviderSimple2Vtbl* {.pure, inheritable.} = object of IRawElementProviderSimpleVtbl
     ShowContextMenu*: proc(self: ptr IRawElementProviderSimple2): HRESULT {.stdcall.}
+
   IRawElementProviderSimple3* {.pure.} = object
     lpVtbl*: ptr IRawElementProviderSimple3Vtbl
+
   IRawElementProviderSimple3Vtbl* {.pure, inheritable.} = object of IRawElementProviderSimple2Vtbl
-    GetMetadataValue*: proc(self: ptr IRawElementProviderSimple3, targetId: int32, metadataId: METADATAID, returnVal: ptr VARIANT): HRESULT {.stdcall.}
+    GetMetadataValue*: proc(
+      self: ptr IRawElementProviderSimple3,
+      targetId: int32,
+      metadataId: METADATAID,
+      returnVal: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+
   IRawElementProviderFragment* {.pure.} = object
     lpVtbl*: ptr IRawElementProviderFragmentVtbl
+
   IRawElementProviderFragmentVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Navigate*: proc(self: ptr IRawElementProviderFragment, direction: NavigateDirection, pRetVal: ptr ptr IRawElementProviderFragment): HRESULT {.stdcall.}
-    GetRuntimeId*: proc(self: ptr IRawElementProviderFragment, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    get_BoundingRectangle*: proc(self: ptr IRawElementProviderFragment, pRetVal: ptr UiaRect): HRESULT {.stdcall.}
-    GetEmbeddedFragmentRoots*: proc(self: ptr IRawElementProviderFragment, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    Navigate*: proc(
+      self: ptr IRawElementProviderFragment,
+      direction: NavigateDirection,
+      pRetVal: ptr ptr IRawElementProviderFragment,
+    ): HRESULT {.stdcall.}
+    GetRuntimeId*: proc(
+      self: ptr IRawElementProviderFragment, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    get_BoundingRectangle*: proc(
+      self: ptr IRawElementProviderFragment, pRetVal: ptr UiaRect
+    ): HRESULT {.stdcall.}
+    GetEmbeddedFragmentRoots*: proc(
+      self: ptr IRawElementProviderFragment, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
     SetFocus*: proc(self: ptr IRawElementProviderFragment): HRESULT {.stdcall.}
-    get_FragmentRoot*: proc(self: ptr IRawElementProviderFragment, pRetVal: ptr ptr IRawElementProviderFragmentRoot): HRESULT {.stdcall.}
+    get_FragmentRoot*: proc(
+      self: ptr IRawElementProviderFragment,
+      pRetVal: ptr ptr IRawElementProviderFragmentRoot,
+    ): HRESULT {.stdcall.}
+
   IRawElementProviderFragmentRoot* {.pure.} = object
     lpVtbl*: ptr IRawElementProviderFragmentRootVtbl
+
   IRawElementProviderFragmentRootVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    ElementProviderFromPoint*: proc(self: ptr IRawElementProviderFragmentRoot, x: float64, y: float64, pRetVal: ptr ptr IRawElementProviderFragment): HRESULT {.stdcall.}
-    GetFocus*: proc(self: ptr IRawElementProviderFragmentRoot, pRetVal: ptr ptr IRawElementProviderFragment): HRESULT {.stdcall.}
+    ElementProviderFromPoint*: proc(
+      self: ptr IRawElementProviderFragmentRoot,
+      x: float64,
+      y: float64,
+      pRetVal: ptr ptr IRawElementProviderFragment,
+    ): HRESULT {.stdcall.}
+    GetFocus*: proc(
+      self: ptr IRawElementProviderFragmentRoot,
+      pRetVal: ptr ptr IRawElementProviderFragment,
+    ): HRESULT {.stdcall.}
+
   IRawElementProviderAdviseEvents* {.pure.} = object
     lpVtbl*: ptr IRawElementProviderAdviseEventsVtbl
+
   IRawElementProviderAdviseEventsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AdviseEventAdded*: proc(self: ptr IRawElementProviderAdviseEvents, eventId: EVENTID, propertyIDs: ptr SAFEARRAY): HRESULT {.stdcall.}
-    AdviseEventRemoved*: proc(self: ptr IRawElementProviderAdviseEvents, eventId: EVENTID, propertyIDs: ptr SAFEARRAY): HRESULT {.stdcall.}
+    AdviseEventAdded*: proc(
+      self: ptr IRawElementProviderAdviseEvents,
+      eventId: EVENTID,
+      propertyIDs: ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+    AdviseEventRemoved*: proc(
+      self: ptr IRawElementProviderAdviseEvents,
+      eventId: EVENTID,
+      propertyIDs: ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+
   IRawElementProviderHwndOverride* {.pure.} = object
     lpVtbl*: ptr IRawElementProviderHwndOverrideVtbl
+
   IRawElementProviderHwndOverrideVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetOverrideProviderForHwnd*: proc(self: ptr IRawElementProviderHwndOverride, hwnd: HWND, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
+    GetOverrideProviderForHwnd*: proc(
+      self: ptr IRawElementProviderHwndOverride,
+      hwnd: HWND,
+      pRetVal: ptr ptr IRawElementProviderSimple,
+    ): HRESULT {.stdcall.}
+
   IProxyProviderWinEventSink* {.pure.} = object
     lpVtbl*: ptr IProxyProviderWinEventSinkVtbl
+
   IProxyProviderWinEventSinkVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AddAutomationPropertyChangedEvent*: proc(self: ptr IProxyProviderWinEventSink, pProvider: ptr IRawElementProviderSimple, id: PROPERTYID, newValue: VARIANT): HRESULT {.stdcall.}
-    AddAutomationEvent*: proc(self: ptr IProxyProviderWinEventSink, pProvider: ptr IRawElementProviderSimple, id: EVENTID): HRESULT {.stdcall.}
-    AddStructureChangedEvent*: proc(self: ptr IProxyProviderWinEventSink, pProvider: ptr IRawElementProviderSimple, structureChangeType: StructureChangeType, runtimeId: ptr SAFEARRAY): HRESULT {.stdcall.}
+    AddAutomationPropertyChangedEvent*: proc(
+      self: ptr IProxyProviderWinEventSink,
+      pProvider: ptr IRawElementProviderSimple,
+      id: PROPERTYID,
+      newValue: VARIANT,
+    ): HRESULT {.stdcall.}
+    AddAutomationEvent*: proc(
+      self: ptr IProxyProviderWinEventSink,
+      pProvider: ptr IRawElementProviderSimple,
+      id: EVENTID,
+    ): HRESULT {.stdcall.}
+    AddStructureChangedEvent*: proc(
+      self: ptr IProxyProviderWinEventSink,
+      pProvider: ptr IRawElementProviderSimple,
+      structureChangeType: StructureChangeType,
+      runtimeId: ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+
   IProxyProviderWinEventHandler* {.pure.} = object
     lpVtbl*: ptr IProxyProviderWinEventHandlerVtbl
+
   IProxyProviderWinEventHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RespondToWinEvent*: proc(self: ptr IProxyProviderWinEventHandler, idWinEvent: DWORD, hwnd: HWND, idObject: LONG, idChild: LONG, pSink: ptr IProxyProviderWinEventSink): HRESULT {.stdcall.}
+    RespondToWinEvent*: proc(
+      self: ptr IProxyProviderWinEventHandler,
+      idWinEvent: DWORD,
+      hwnd: HWND,
+      idObject: LONG,
+      idChild: LONG,
+      pSink: ptr IProxyProviderWinEventSink,
+    ): HRESULT {.stdcall.}
+
   IRawElementProviderWindowlessSite* {.pure.} = object
     lpVtbl*: ptr IRawElementProviderWindowlessSiteVtbl
+
   IRawElementProviderWindowlessSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetAdjacentFragment*: proc(self: ptr IRawElementProviderWindowlessSite, direction: NavigateDirection, ppParent: ptr ptr IRawElementProviderFragment): HRESULT {.stdcall.}
-    GetRuntimeIdPrefix*: proc(self: ptr IRawElementProviderWindowlessSite, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetAdjacentFragment*: proc(
+      self: ptr IRawElementProviderWindowlessSite,
+      direction: NavigateDirection,
+      ppParent: ptr ptr IRawElementProviderFragment,
+    ): HRESULT {.stdcall.}
+    GetRuntimeIdPrefix*: proc(
+      self: ptr IRawElementProviderWindowlessSite, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+
   IAccessibleHostingElementProviders* {.pure.} = object
     lpVtbl*: ptr IAccessibleHostingElementProvidersVtbl
+
   IAccessibleHostingElementProvidersVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetEmbeddedFragmentRoots*: proc(self: ptr IAccessibleHostingElementProviders, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetObjectIdForProvider*: proc(self: ptr IAccessibleHostingElementProviders, pProvider: ptr IRawElementProviderSimple, pidObject: ptr int32): HRESULT {.stdcall.}
+    GetEmbeddedFragmentRoots*: proc(
+      self: ptr IAccessibleHostingElementProviders, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetObjectIdForProvider*: proc(
+      self: ptr IAccessibleHostingElementProviders,
+      pProvider: ptr IRawElementProviderSimple,
+      pidObject: ptr int32,
+    ): HRESULT {.stdcall.}
+
   IRawElementProviderHostingAccessibles* {.pure.} = object
     lpVtbl*: ptr IRawElementProviderHostingAccessiblesVtbl
+
   IRawElementProviderHostingAccessiblesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetEmbeddedAccessibles*: proc(self: ptr IRawElementProviderHostingAccessibles, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetEmbeddedAccessibles*: proc(
+      self: ptr IRawElementProviderHostingAccessibles, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+
   IDockProvider* {.pure.} = object
     lpVtbl*: ptr IDockProviderVtbl
+
   IDockProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetDockPosition*: proc(self: ptr IDockProvider, dockPosition: DockPosition): HRESULT {.stdcall.}
-    get_DockPosition*: proc(self: ptr IDockProvider, pRetVal: ptr DockPosition): HRESULT {.stdcall.}
+    SetDockPosition*:
+      proc(self: ptr IDockProvider, dockPosition: DockPosition): HRESULT {.stdcall.}
+    get_DockPosition*:
+      proc(self: ptr IDockProvider, pRetVal: ptr DockPosition): HRESULT {.stdcall.}
+
   IExpandCollapseProvider* {.pure.} = object
     lpVtbl*: ptr IExpandCollapseProviderVtbl
+
   IExpandCollapseProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Expand*: proc(self: ptr IExpandCollapseProvider): HRESULT {.stdcall.}
     Collapse*: proc(self: ptr IExpandCollapseProvider): HRESULT {.stdcall.}
-    get_ExpandCollapseState*: proc(self: ptr IExpandCollapseProvider, pRetVal: ptr ExpandCollapseState): HRESULT {.stdcall.}
+    get_ExpandCollapseState*: proc(
+      self: ptr IExpandCollapseProvider, pRetVal: ptr ExpandCollapseState
+    ): HRESULT {.stdcall.}
+
   IGridProvider* {.pure.} = object
     lpVtbl*: ptr IGridProviderVtbl
+
   IGridProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetItem*: proc(self: ptr IGridProvider, row: int32, column: int32, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
-    get_RowCount*: proc(self: ptr IGridProvider, pRetVal: ptr int32): HRESULT {.stdcall.}
-    get_ColumnCount*: proc(self: ptr IGridProvider, pRetVal: ptr int32): HRESULT {.stdcall.}
+    GetItem*: proc(
+      self: ptr IGridProvider,
+      row: int32,
+      column: int32,
+      pRetVal: ptr ptr IRawElementProviderSimple,
+    ): HRESULT {.stdcall.}
+    get_RowCount*:
+      proc(self: ptr IGridProvider, pRetVal: ptr int32): HRESULT {.stdcall.}
+    get_ColumnCount*:
+      proc(self: ptr IGridProvider, pRetVal: ptr int32): HRESULT {.stdcall.}
+
   IGridItemProvider* {.pure.} = object
     lpVtbl*: ptr IGridItemProviderVtbl
+
   IGridItemProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     get_Row*: proc(self: ptr IGridItemProvider, pRetVal: ptr int32): HRESULT {.stdcall.}
-    get_Column*: proc(self: ptr IGridItemProvider, pRetVal: ptr int32): HRESULT {.stdcall.}
-    get_RowSpan*: proc(self: ptr IGridItemProvider, pRetVal: ptr int32): HRESULT {.stdcall.}
-    get_ColumnSpan*: proc(self: ptr IGridItemProvider, pRetVal: ptr int32): HRESULT {.stdcall.}
-    get_ContainingGrid*: proc(self: ptr IGridItemProvider, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
+    get_Column*:
+      proc(self: ptr IGridItemProvider, pRetVal: ptr int32): HRESULT {.stdcall.}
+    get_RowSpan*:
+      proc(self: ptr IGridItemProvider, pRetVal: ptr int32): HRESULT {.stdcall.}
+    get_ColumnSpan*:
+      proc(self: ptr IGridItemProvider, pRetVal: ptr int32): HRESULT {.stdcall.}
+    get_ContainingGrid*: proc(
+      self: ptr IGridItemProvider, pRetVal: ptr ptr IRawElementProviderSimple
+    ): HRESULT {.stdcall.}
+
   IInvokeProvider* {.pure.} = object
     lpVtbl*: ptr IInvokeProviderVtbl
+
   IInvokeProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Invoke*: proc(self: ptr IInvokeProvider): HRESULT {.stdcall.}
+
   IMultipleViewProvider* {.pure.} = object
     lpVtbl*: ptr IMultipleViewProviderVtbl
+
   IMultipleViewProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetViewName*: proc(self: ptr IMultipleViewProvider, viewId: int32, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    SetCurrentView*: proc(self: ptr IMultipleViewProvider, viewId: int32): HRESULT {.stdcall.}
-    get_CurrentView*: proc(self: ptr IMultipleViewProvider, pRetVal: ptr int32): HRESULT {.stdcall.}
-    GetSupportedViews*: proc(self: ptr IMultipleViewProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetViewName*: proc(
+      self: ptr IMultipleViewProvider, viewId: int32, pRetVal: ptr BSTR
+    ): HRESULT {.stdcall.}
+    SetCurrentView*:
+      proc(self: ptr IMultipleViewProvider, viewId: int32): HRESULT {.stdcall.}
+    get_CurrentView*:
+      proc(self: ptr IMultipleViewProvider, pRetVal: ptr int32): HRESULT {.stdcall.}
+    GetSupportedViews*: proc(
+      self: ptr IMultipleViewProvider, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+
   IRangeValueProvider* {.pure.} = object
     lpVtbl*: ptr IRangeValueProviderVtbl
+
   IRangeValueProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SetValue*: proc(self: ptr IRangeValueProvider, val: float64): HRESULT {.stdcall.}
-    get_Value*: proc(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
-    get_IsReadOnly*: proc(self: ptr IRangeValueProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
-    get_Maximum*: proc(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
-    get_Minimum*: proc(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
-    get_LargeChange*: proc(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
-    get_SmallChange*: proc(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
+    get_Value*:
+      proc(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
+    get_IsReadOnly*:
+      proc(self: ptr IRangeValueProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    get_Maximum*:
+      proc(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
+    get_Minimum*:
+      proc(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
+    get_LargeChange*:
+      proc(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
+    get_SmallChange*:
+      proc(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
+
   IScrollItemProvider* {.pure.} = object
     lpVtbl*: ptr IScrollItemProviderVtbl
+
   IScrollItemProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     ScrollIntoView*: proc(self: ptr IScrollItemProvider): HRESULT {.stdcall.}
+
   ISelectionProvider* {.pure.} = object
     lpVtbl*: ptr ISelectionProviderVtbl
+
   ISelectionProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSelection*: proc(self: ptr ISelectionProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    get_CanSelectMultiple*: proc(self: ptr ISelectionProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
-    get_IsSelectionRequired*: proc(self: ptr ISelectionProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    GetSelection*: proc(
+      self: ptr ISelectionProvider, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    get_CanSelectMultiple*:
+      proc(self: ptr ISelectionProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    get_IsSelectionRequired*:
+      proc(self: ptr ISelectionProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+
   ISelectionProvider2* {.pure.} = object
     lpVtbl*: ptr ISelectionProvider2Vtbl
+
   ISelectionProvider2Vtbl* {.pure, inheritable.} = object of ISelectionProviderVtbl
-    get_FirstSelectedItem*: proc(self: ptr ISelectionProvider2, retVal: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
-    get_LastSelectedItem*: proc(self: ptr ISelectionProvider2, retVal: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
-    get_CurrentSelectedItem*: proc(self: ptr ISelectionProvider2, retVal: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
-    get_ItemCount*: proc(self: ptr ISelectionProvider2, retVal: ptr int32): HRESULT {.stdcall.}
+    get_FirstSelectedItem*: proc(
+      self: ptr ISelectionProvider2, retVal: ptr ptr IRawElementProviderSimple
+    ): HRESULT {.stdcall.}
+    get_LastSelectedItem*: proc(
+      self: ptr ISelectionProvider2, retVal: ptr ptr IRawElementProviderSimple
+    ): HRESULT {.stdcall.}
+    get_CurrentSelectedItem*: proc(
+      self: ptr ISelectionProvider2, retVal: ptr ptr IRawElementProviderSimple
+    ): HRESULT {.stdcall.}
+    get_ItemCount*:
+      proc(self: ptr ISelectionProvider2, retVal: ptr int32): HRESULT {.stdcall.}
+
   IScrollProvider* {.pure.} = object
     lpVtbl*: ptr IScrollProviderVtbl
+
   IScrollProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Scroll*: proc(self: ptr IScrollProvider, horizontalAmount: ScrollAmount, verticalAmount: ScrollAmount): HRESULT {.stdcall.}
-    SetScrollPercent*: proc(self: ptr IScrollProvider, horizontalPercent: float64, verticalPercent: float64): HRESULT {.stdcall.}
-    get_HorizontalScrollPercent*: proc(self: ptr IScrollProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
-    get_VerticalScrollPercent*: proc(self: ptr IScrollProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
-    get_HorizontalViewSize*: proc(self: ptr IScrollProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
-    get_VerticalViewSize*: proc(self: ptr IScrollProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
-    get_HorizontallyScrollable*: proc(self: ptr IScrollProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
-    get_VerticallyScrollable*: proc(self: ptr IScrollProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    Scroll*: proc(
+      self: ptr IScrollProvider,
+      horizontalAmount: ScrollAmount,
+      verticalAmount: ScrollAmount,
+    ): HRESULT {.stdcall.}
+    SetScrollPercent*: proc(
+      self: ptr IScrollProvider, horizontalPercent: float64, verticalPercent: float64
+    ): HRESULT {.stdcall.}
+    get_HorizontalScrollPercent*:
+      proc(self: ptr IScrollProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
+    get_VerticalScrollPercent*:
+      proc(self: ptr IScrollProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
+    get_HorizontalViewSize*:
+      proc(self: ptr IScrollProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
+    get_VerticalViewSize*:
+      proc(self: ptr IScrollProvider, pRetVal: ptr float64): HRESULT {.stdcall.}
+    get_HorizontallyScrollable*:
+      proc(self: ptr IScrollProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    get_VerticallyScrollable*:
+      proc(self: ptr IScrollProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+
   ISelectionItemProvider* {.pure.} = object
     lpVtbl*: ptr ISelectionItemProviderVtbl
+
   ISelectionItemProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Select*: proc(self: ptr ISelectionItemProvider): HRESULT {.stdcall.}
     AddToSelection*: proc(self: ptr ISelectionItemProvider): HRESULT {.stdcall.}
     RemoveFromSelection*: proc(self: ptr ISelectionItemProvider): HRESULT {.stdcall.}
-    get_IsSelected*: proc(self: ptr ISelectionItemProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
-    get_SelectionContainer*: proc(self: ptr ISelectionItemProvider, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
+    get_IsSelected*:
+      proc(self: ptr ISelectionItemProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    get_SelectionContainer*: proc(
+      self: ptr ISelectionItemProvider, pRetVal: ptr ptr IRawElementProviderSimple
+    ): HRESULT {.stdcall.}
+
   ISynchronizedInputProvider* {.pure.} = object
     lpVtbl*: ptr ISynchronizedInputProviderVtbl
+
   ISynchronizedInputProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    StartListening*: proc(self: ptr ISynchronizedInputProvider, inputType: SynchronizedInputType): HRESULT {.stdcall.}
+    StartListening*: proc(
+      self: ptr ISynchronizedInputProvider, inputType: SynchronizedInputType
+    ): HRESULT {.stdcall.}
     Cancel*: proc(self: ptr ISynchronizedInputProvider): HRESULT {.stdcall.}
+
   ITableProvider* {.pure.} = object
     lpVtbl*: ptr ITableProviderVtbl
+
   ITableProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetRowHeaders*: proc(self: ptr ITableProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetColumnHeaders*: proc(self: ptr ITableProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    get_RowOrColumnMajor*: proc(self: ptr ITableProvider, pRetVal: ptr RowOrColumnMajor): HRESULT {.stdcall.}
+    GetRowHeaders*:
+      proc(self: ptr ITableProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetColumnHeaders*:
+      proc(self: ptr ITableProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    get_RowOrColumnMajor*:
+      proc(self: ptr ITableProvider, pRetVal: ptr RowOrColumnMajor): HRESULT {.stdcall.}
+
   ITableItemProvider* {.pure.} = object
     lpVtbl*: ptr ITableItemProviderVtbl
+
   ITableItemProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetRowHeaderItems*: proc(self: ptr ITableItemProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetColumnHeaderItems*: proc(self: ptr ITableItemProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetRowHeaderItems*: proc(
+      self: ptr ITableItemProvider, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetColumnHeaderItems*: proc(
+      self: ptr ITableItemProvider, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+
   IToggleProvider* {.pure.} = object
     lpVtbl*: ptr IToggleProviderVtbl
+
   IToggleProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Toggle*: proc(self: ptr IToggleProvider): HRESULT {.stdcall.}
-    get_ToggleState*: proc(self: ptr IToggleProvider, pRetVal: ptr ToggleState): HRESULT {.stdcall.}
+    get_ToggleState*:
+      proc(self: ptr IToggleProvider, pRetVal: ptr ToggleState): HRESULT {.stdcall.}
+
   ITransformProvider* {.pure.} = object
     lpVtbl*: ptr ITransformProviderVtbl
+
   ITransformProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Move*: proc(self: ptr ITransformProvider, x: float64, y: float64): HRESULT {.stdcall.}
-    Resize*: proc(self: ptr ITransformProvider, width: float64, height: float64): HRESULT {.stdcall.}
+    Move*:
+      proc(self: ptr ITransformProvider, x: float64, y: float64): HRESULT {.stdcall.}
+    Resize*: proc(
+      self: ptr ITransformProvider, width: float64, height: float64
+    ): HRESULT {.stdcall.}
     Rotate*: proc(self: ptr ITransformProvider, degrees: float64): HRESULT {.stdcall.}
-    get_CanMove*: proc(self: ptr ITransformProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CanResize*: proc(self: ptr ITransformProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CanRotate*: proc(self: ptr ITransformProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CanMove*:
+      proc(self: ptr ITransformProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CanResize*:
+      proc(self: ptr ITransformProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CanRotate*:
+      proc(self: ptr ITransformProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+
   IValueProvider* {.pure.} = object
     lpVtbl*: ptr IValueProviderVtbl
+
   IValueProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SetValue*: proc(self: ptr IValueProvider, val: LPCWSTR): HRESULT {.stdcall.}
     get_Value*: proc(self: ptr IValueProvider, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    get_IsReadOnly*: proc(self: ptr IValueProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    get_IsReadOnly*:
+      proc(self: ptr IValueProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+
   IWindowProvider* {.pure.} = object
     lpVtbl*: ptr IWindowProviderVtbl
+
   IWindowProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetVisualState*: proc(self: ptr IWindowProvider, state: WindowVisualState): HRESULT {.stdcall.}
+    SetVisualState*:
+      proc(self: ptr IWindowProvider, state: WindowVisualState): HRESULT {.stdcall.}
     Close*: proc(self: ptr IWindowProvider): HRESULT {.stdcall.}
-    WaitForInputIdle*: proc(self: ptr IWindowProvider, milliseconds: int32, pRetVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CanMaximize*: proc(self: ptr IWindowProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CanMinimize*: proc(self: ptr IWindowProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
-    get_IsModal*: proc(self: ptr IWindowProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
-    get_WindowVisualState*: proc(self: ptr IWindowProvider, pRetVal: ptr WindowVisualState): HRESULT {.stdcall.}
-    get_WindowInteractionState*: proc(self: ptr IWindowProvider, pRetVal: ptr WindowInteractionState): HRESULT {.stdcall.}
-    get_IsTopmost*: proc(self: ptr IWindowProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    WaitForInputIdle*: proc(
+      self: ptr IWindowProvider, milliseconds: int32, pRetVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CanMaximize*:
+      proc(self: ptr IWindowProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CanMinimize*:
+      proc(self: ptr IWindowProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    get_IsModal*:
+      proc(self: ptr IWindowProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    get_WindowVisualState*: proc(
+      self: ptr IWindowProvider, pRetVal: ptr WindowVisualState
+    ): HRESULT {.stdcall.}
+    get_WindowInteractionState*: proc(
+      self: ptr IWindowProvider, pRetVal: ptr WindowInteractionState
+    ): HRESULT {.stdcall.}
+    get_IsTopmost*:
+      proc(self: ptr IWindowProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+
   ILegacyIAccessibleProvider* {.pure.} = object
     lpVtbl*: ptr ILegacyIAccessibleProviderVtbl
+
   ILegacyIAccessibleProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Select*: proc(self: ptr ILegacyIAccessibleProvider, flagsSelect: int32): HRESULT {.stdcall.}
+    Select*: proc(self: ptr ILegacyIAccessibleProvider, flagsSelect: int32): HRESULT {.
+      stdcall
+    .}
     DoDefaultAction*: proc(self: ptr ILegacyIAccessibleProvider): HRESULT {.stdcall.}
-    SetValue*: proc(self: ptr ILegacyIAccessibleProvider, szValue: LPCWSTR): HRESULT {.stdcall.}
-    GetIAccessible*: proc(self: ptr ILegacyIAccessibleProvider, ppAccessible: ptr ptr IAccessible): HRESULT {.stdcall.}
-    get_ChildId*: proc(self: ptr ILegacyIAccessibleProvider, pRetVal: ptr int32): HRESULT {.stdcall.}
-    get_Name*: proc(self: ptr ILegacyIAccessibleProvider, pszName: ptr BSTR): HRESULT {.stdcall.}
-    get_Value*: proc(self: ptr ILegacyIAccessibleProvider, pszValue: ptr BSTR): HRESULT {.stdcall.}
-    get_Description*: proc(self: ptr ILegacyIAccessibleProvider, pszDescription: ptr BSTR): HRESULT {.stdcall.}
-    get_Role*: proc(self: ptr ILegacyIAccessibleProvider, pdwRole: ptr DWORD): HRESULT {.stdcall.}
-    get_State*: proc(self: ptr ILegacyIAccessibleProvider, pdwState: ptr DWORD): HRESULT {.stdcall.}
-    get_Help*: proc(self: ptr ILegacyIAccessibleProvider, pszHelp: ptr BSTR): HRESULT {.stdcall.}
-    get_KeyboardShortcut*: proc(self: ptr ILegacyIAccessibleProvider, pszKeyboardShortcut: ptr BSTR): HRESULT {.stdcall.}
-    GetSelection*: proc(self: ptr ILegacyIAccessibleProvider, pvarSelectedChildren: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    get_DefaultAction*: proc(self: ptr ILegacyIAccessibleProvider, pszDefaultAction: ptr BSTR): HRESULT {.stdcall.}
+    SetValue*:
+      proc(self: ptr ILegacyIAccessibleProvider, szValue: LPCWSTR): HRESULT {.stdcall.}
+    GetIAccessible*: proc(
+      self: ptr ILegacyIAccessibleProvider, ppAccessible: ptr ptr IAccessible
+    ): HRESULT {.stdcall.}
+    get_ChildId*: proc(
+      self: ptr ILegacyIAccessibleProvider, pRetVal: ptr int32
+    ): HRESULT {.stdcall.}
+    get_Name*:
+      proc(self: ptr ILegacyIAccessibleProvider, pszName: ptr BSTR): HRESULT {.stdcall.}
+    get_Value*: proc(self: ptr ILegacyIAccessibleProvider, pszValue: ptr BSTR): HRESULT {.
+      stdcall
+    .}
+    get_Description*: proc(
+      self: ptr ILegacyIAccessibleProvider, pszDescription: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_Role*: proc(self: ptr ILegacyIAccessibleProvider, pdwRole: ptr DWORD): HRESULT {.
+      stdcall
+    .}
+    get_State*: proc(self: ptr ILegacyIAccessibleProvider, pdwState: ptr DWORD): HRESULT {.
+      stdcall
+    .}
+    get_Help*:
+      proc(self: ptr ILegacyIAccessibleProvider, pszHelp: ptr BSTR): HRESULT {.stdcall.}
+    get_KeyboardShortcut*: proc(
+      self: ptr ILegacyIAccessibleProvider, pszKeyboardShortcut: ptr BSTR
+    ): HRESULT {.stdcall.}
+    GetSelection*: proc(
+      self: ptr ILegacyIAccessibleProvider, pvarSelectedChildren: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    get_DefaultAction*: proc(
+      self: ptr ILegacyIAccessibleProvider, pszDefaultAction: ptr BSTR
+    ): HRESULT {.stdcall.}
+
   IItemContainerProvider* {.pure.} = object
     lpVtbl*: ptr IItemContainerProviderVtbl
+
   IItemContainerProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    FindItemByProperty*: proc(self: ptr IItemContainerProvider, pStartAfter: ptr IRawElementProviderSimple, propertyId: PROPERTYID, value: VARIANT, pFound: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
+    FindItemByProperty*: proc(
+      self: ptr IItemContainerProvider,
+      pStartAfter: ptr IRawElementProviderSimple,
+      propertyId: PROPERTYID,
+      value: VARIANT,
+      pFound: ptr ptr IRawElementProviderSimple,
+    ): HRESULT {.stdcall.}
+
   IVirtualizedItemProvider* {.pure.} = object
     lpVtbl*: ptr IVirtualizedItemProviderVtbl
+
   IVirtualizedItemProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Realize*: proc(self: ptr IVirtualizedItemProvider): HRESULT {.stdcall.}
+
   IObjectModelProvider* {.pure.} = object
     lpVtbl*: ptr IObjectModelProviderVtbl
+
   IObjectModelProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetUnderlyingObjectModel*: proc(self: ptr IObjectModelProvider, ppUnknown: ptr ptr IUnknown): HRESULT {.stdcall.}
+    GetUnderlyingObjectModel*: proc(
+      self: ptr IObjectModelProvider, ppUnknown: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
+
   IAnnotationProvider* {.pure.} = object
     lpVtbl*: ptr IAnnotationProviderVtbl
+
   IAnnotationProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_AnnotationTypeId*: proc(self: ptr IAnnotationProvider, retVal: ptr int32): HRESULT {.stdcall.}
-    get_AnnotationTypeName*: proc(self: ptr IAnnotationProvider, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_Author*: proc(self: ptr IAnnotationProvider, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_DateTime*: proc(self: ptr IAnnotationProvider, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_Target*: proc(self: ptr IAnnotationProvider, retVal: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
+    get_AnnotationTypeId*:
+      proc(self: ptr IAnnotationProvider, retVal: ptr int32): HRESULT {.stdcall.}
+    get_AnnotationTypeName*:
+      proc(self: ptr IAnnotationProvider, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_Author*:
+      proc(self: ptr IAnnotationProvider, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_DateTime*:
+      proc(self: ptr IAnnotationProvider, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_Target*: proc(
+      self: ptr IAnnotationProvider, retVal: ptr ptr IRawElementProviderSimple
+    ): HRESULT {.stdcall.}
+
   IStylesProvider* {.pure.} = object
     lpVtbl*: ptr IStylesProviderVtbl
+
   IStylesProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_StyleId*: proc(self: ptr IStylesProvider, retVal: ptr int32): HRESULT {.stdcall.}
-    get_StyleName*: proc(self: ptr IStylesProvider, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_FillColor*: proc(self: ptr IStylesProvider, retVal: ptr int32): HRESULT {.stdcall.}
-    get_FillPatternStyle*: proc(self: ptr IStylesProvider, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_StyleId*:
+      proc(self: ptr IStylesProvider, retVal: ptr int32): HRESULT {.stdcall.}
+    get_StyleName*:
+      proc(self: ptr IStylesProvider, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_FillColor*:
+      proc(self: ptr IStylesProvider, retVal: ptr int32): HRESULT {.stdcall.}
+    get_FillPatternStyle*:
+      proc(self: ptr IStylesProvider, retVal: ptr BSTR): HRESULT {.stdcall.}
     get_Shape*: proc(self: ptr IStylesProvider, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_FillPatternColor*: proc(self: ptr IStylesProvider, retVal: ptr int32): HRESULT {.stdcall.}
-    get_ExtendedProperties*: proc(self: ptr IStylesProvider, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_FillPatternColor*:
+      proc(self: ptr IStylesProvider, retVal: ptr int32): HRESULT {.stdcall.}
+    get_ExtendedProperties*:
+      proc(self: ptr IStylesProvider, retVal: ptr BSTR): HRESULT {.stdcall.}
+
   ISpreadsheetProvider* {.pure.} = object
     lpVtbl*: ptr ISpreadsheetProviderVtbl
+
   ISpreadsheetProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetItemByName*: proc(self: ptr ISpreadsheetProvider, name: LPCWSTR, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
+    GetItemByName*: proc(
+      self: ptr ISpreadsheetProvider,
+      name: LPCWSTR,
+      pRetVal: ptr ptr IRawElementProviderSimple,
+    ): HRESULT {.stdcall.}
+
   ISpreadsheetItemProvider* {.pure.} = object
     lpVtbl*: ptr ISpreadsheetItemProviderVtbl
+
   ISpreadsheetItemProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_Formula*: proc(self: ptr ISpreadsheetItemProvider, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    GetAnnotationObjects*: proc(self: ptr ISpreadsheetItemProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetAnnotationTypes*: proc(self: ptr ISpreadsheetItemProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    get_Formula*:
+      proc(self: ptr ISpreadsheetItemProvider, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    GetAnnotationObjects*: proc(
+      self: ptr ISpreadsheetItemProvider, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetAnnotationTypes*: proc(
+      self: ptr ISpreadsheetItemProvider, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+
   ITransformProvider2* {.pure.} = object
     lpVtbl*: ptr ITransformProvider2Vtbl
+
   ITransformProvider2Vtbl* {.pure, inheritable.} = object of ITransformProviderVtbl
     Zoom*: proc(self: ptr ITransformProvider2, zoom: float64): HRESULT {.stdcall.}
-    get_CanZoom*: proc(self: ptr ITransformProvider2, pRetVal: ptr BOOL): HRESULT {.stdcall.}
-    get_ZoomLevel*: proc(self: ptr ITransformProvider2, pRetVal: ptr float64): HRESULT {.stdcall.}
-    get_ZoomMinimum*: proc(self: ptr ITransformProvider2, pRetVal: ptr float64): HRESULT {.stdcall.}
-    get_ZoomMaximum*: proc(self: ptr ITransformProvider2, pRetVal: ptr float64): HRESULT {.stdcall.}
-    ZoomByUnit*: proc(self: ptr ITransformProvider2, zoomUnit: ZoomUnit): HRESULT {.stdcall.}
+    get_CanZoom*:
+      proc(self: ptr ITransformProvider2, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    get_ZoomLevel*:
+      proc(self: ptr ITransformProvider2, pRetVal: ptr float64): HRESULT {.stdcall.}
+    get_ZoomMinimum*:
+      proc(self: ptr ITransformProvider2, pRetVal: ptr float64): HRESULT {.stdcall.}
+    get_ZoomMaximum*:
+      proc(self: ptr ITransformProvider2, pRetVal: ptr float64): HRESULT {.stdcall.}
+    ZoomByUnit*:
+      proc(self: ptr ITransformProvider2, zoomUnit: ZoomUnit): HRESULT {.stdcall.}
+
   IDragProvider* {.pure.} = object
     lpVtbl*: ptr IDragProviderVtbl
+
   IDragProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_IsGrabbed*: proc(self: ptr IDragProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
-    get_DropEffect*: proc(self: ptr IDragProvider, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    get_DropEffects*: proc(self: ptr IDragProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetGrabbedItems*: proc(self: ptr IDragProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    get_IsGrabbed*:
+      proc(self: ptr IDragProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
+    get_DropEffect*:
+      proc(self: ptr IDragProvider, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    get_DropEffects*:
+      proc(self: ptr IDragProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetGrabbedItems*:
+      proc(self: ptr IDragProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+
   IDropTargetProvider* {.pure.} = object
     lpVtbl*: ptr IDropTargetProviderVtbl
+
   IDropTargetProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_DropTargetEffect*: proc(self: ptr IDropTargetProvider, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    get_DropTargetEffects*: proc(self: ptr IDropTargetProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    get_DropTargetEffect*:
+      proc(self: ptr IDropTargetProvider, pRetVal: ptr BSTR): HRESULT {.stdcall.}
+    get_DropTargetEffects*: proc(
+      self: ptr IDropTargetProvider, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+
   ITextRangeProvider* {.pure.} = object
     lpVtbl*: ptr ITextRangeProviderVtbl
+
   ITextRangeProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Clone*: proc(self: ptr ITextRangeProvider, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.stdcall.}
-    Compare*: proc(self: ptr ITextRangeProvider, range: ptr ITextRangeProvider, pRetVal: ptr BOOL): HRESULT {.stdcall.}
-    CompareEndpoints*: proc(self: ptr ITextRangeProvider, endpoint: TextPatternRangeEndpoint, targetRange: ptr ITextRangeProvider, targetEndpoint: TextPatternRangeEndpoint, pRetVal: ptr int32): HRESULT {.stdcall.}
-    ExpandToEnclosingUnit*: proc(self: ptr ITextRangeProvider, unit: TextUnit): HRESULT {.stdcall.}
-    FindAttribute*: proc(self: ptr ITextRangeProvider, attributeId: TEXTATTRIBUTEID, val: VARIANT, backward: BOOL, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.stdcall.}
-    FindText*: proc(self: ptr ITextRangeProvider, text: BSTR, backward: BOOL, ignoreCase: BOOL, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.stdcall.}
-    GetAttributeValue*: proc(self: ptr ITextRangeProvider, attributeId: TEXTATTRIBUTEID, pRetVal: ptr VARIANT): HRESULT {.stdcall.}
-    GetBoundingRectangles*: proc(self: ptr ITextRangeProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetEnclosingElement*: proc(self: ptr ITextRangeProvider, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
-    GetText*: proc(self: ptr ITextRangeProvider, maxLength: int32, pRetVal: ptr BSTR): HRESULT {.stdcall.}
-    Move*: proc(self: ptr ITextRangeProvider, unit: TextUnit, count: int32, pRetVal: ptr int32): HRESULT {.stdcall.}
-    MoveEndpointByUnit*: proc(self: ptr ITextRangeProvider, endpoint: TextPatternRangeEndpoint, unit: TextUnit, count: int32, pRetVal: ptr int32): HRESULT {.stdcall.}
-    MoveEndpointByRange*: proc(self: ptr ITextRangeProvider, endpoint: TextPatternRangeEndpoint, targetRange: ptr ITextRangeProvider, targetEndpoint: TextPatternRangeEndpoint): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr ITextRangeProvider, pRetVal: ptr ptr ITextRangeProvider
+    ): HRESULT {.stdcall.}
+    Compare*: proc(
+      self: ptr ITextRangeProvider, range: ptr ITextRangeProvider, pRetVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    CompareEndpoints*: proc(
+      self: ptr ITextRangeProvider,
+      endpoint: TextPatternRangeEndpoint,
+      targetRange: ptr ITextRangeProvider,
+      targetEndpoint: TextPatternRangeEndpoint,
+      pRetVal: ptr int32,
+    ): HRESULT {.stdcall.}
+    ExpandToEnclosingUnit*:
+      proc(self: ptr ITextRangeProvider, unit: TextUnit): HRESULT {.stdcall.}
+    FindAttribute*: proc(
+      self: ptr ITextRangeProvider,
+      attributeId: TEXTATTRIBUTEID,
+      val: VARIANT,
+      backward: BOOL,
+      pRetVal: ptr ptr ITextRangeProvider,
+    ): HRESULT {.stdcall.}
+    FindText*: proc(
+      self: ptr ITextRangeProvider,
+      text: BSTR,
+      backward: BOOL,
+      ignoreCase: BOOL,
+      pRetVal: ptr ptr ITextRangeProvider,
+    ): HRESULT {.stdcall.}
+    GetAttributeValue*: proc(
+      self: ptr ITextRangeProvider, attributeId: TEXTATTRIBUTEID, pRetVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    GetBoundingRectangles*: proc(
+      self: ptr ITextRangeProvider, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetEnclosingElement*: proc(
+      self: ptr ITextRangeProvider, pRetVal: ptr ptr IRawElementProviderSimple
+    ): HRESULT {.stdcall.}
+    GetText*: proc(
+      self: ptr ITextRangeProvider, maxLength: int32, pRetVal: ptr BSTR
+    ): HRESULT {.stdcall.}
+    Move*: proc(
+      self: ptr ITextRangeProvider, unit: TextUnit, count: int32, pRetVal: ptr int32
+    ): HRESULT {.stdcall.}
+    MoveEndpointByUnit*: proc(
+      self: ptr ITextRangeProvider,
+      endpoint: TextPatternRangeEndpoint,
+      unit: TextUnit,
+      count: int32,
+      pRetVal: ptr int32,
+    ): HRESULT {.stdcall.}
+    MoveEndpointByRange*: proc(
+      self: ptr ITextRangeProvider,
+      endpoint: TextPatternRangeEndpoint,
+      targetRange: ptr ITextRangeProvider,
+      targetEndpoint: TextPatternRangeEndpoint,
+    ): HRESULT {.stdcall.}
     Select*: proc(self: ptr ITextRangeProvider): HRESULT {.stdcall.}
     AddToSelection*: proc(self: ptr ITextRangeProvider): HRESULT {.stdcall.}
     RemoveFromSelection*: proc(self: ptr ITextRangeProvider): HRESULT {.stdcall.}
-    ScrollIntoView*: proc(self: ptr ITextRangeProvider, alignToTop: BOOL): HRESULT {.stdcall.}
-    GetChildren*: proc(self: ptr ITextRangeProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    ScrollIntoView*:
+      proc(self: ptr ITextRangeProvider, alignToTop: BOOL): HRESULT {.stdcall.}
+    GetChildren*: proc(
+      self: ptr ITextRangeProvider, pRetVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+
   ITextProvider* {.pure.} = object
     lpVtbl*: ptr ITextProviderVtbl
+
   ITextProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSelection*: proc(self: ptr ITextProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetVisibleRanges*: proc(self: ptr ITextProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    RangeFromChild*: proc(self: ptr ITextProvider, childElement: ptr IRawElementProviderSimple, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.stdcall.}
-    RangeFromPoint*: proc(self: ptr ITextProvider, point: UiaPoint, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.stdcall.}
-    get_DocumentRange*: proc(self: ptr ITextProvider, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.stdcall.}
-    get_SupportedTextSelection*: proc(self: ptr ITextProvider, pRetVal: ptr SupportedTextSelection): HRESULT {.stdcall.}
+    GetSelection*:
+      proc(self: ptr ITextProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetVisibleRanges*:
+      proc(self: ptr ITextProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    RangeFromChild*: proc(
+      self: ptr ITextProvider,
+      childElement: ptr IRawElementProviderSimple,
+      pRetVal: ptr ptr ITextRangeProvider,
+    ): HRESULT {.stdcall.}
+    RangeFromPoint*: proc(
+      self: ptr ITextProvider, point: UiaPoint, pRetVal: ptr ptr ITextRangeProvider
+    ): HRESULT {.stdcall.}
+    get_DocumentRange*: proc(
+      self: ptr ITextProvider, pRetVal: ptr ptr ITextRangeProvider
+    ): HRESULT {.stdcall.}
+    get_SupportedTextSelection*: proc(
+      self: ptr ITextProvider, pRetVal: ptr SupportedTextSelection
+    ): HRESULT {.stdcall.}
+
   ITextProvider2* {.pure.} = object
     lpVtbl*: ptr ITextProvider2Vtbl
+
   ITextProvider2Vtbl* {.pure, inheritable.} = object of ITextProviderVtbl
-    RangeFromAnnotation*: proc(self: ptr ITextProvider2, annotationElement: ptr IRawElementProviderSimple, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.stdcall.}
-    GetCaretRange*: proc(self: ptr ITextProvider2, isActive: ptr BOOL, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.stdcall.}
+    RangeFromAnnotation*: proc(
+      self: ptr ITextProvider2,
+      annotationElement: ptr IRawElementProviderSimple,
+      pRetVal: ptr ptr ITextRangeProvider,
+    ): HRESULT {.stdcall.}
+    GetCaretRange*: proc(
+      self: ptr ITextProvider2, isActive: ptr BOOL, pRetVal: ptr ptr ITextRangeProvider
+    ): HRESULT {.stdcall.}
+
   ITextEditProvider* {.pure.} = object
     lpVtbl*: ptr ITextEditProviderVtbl
+
   ITextEditProviderVtbl* {.pure, inheritable.} = object of ITextProviderVtbl
-    GetActiveComposition*: proc(self: ptr ITextEditProvider, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.stdcall.}
-    GetConversionTarget*: proc(self: ptr ITextEditProvider, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.stdcall.}
+    GetActiveComposition*: proc(
+      self: ptr ITextEditProvider, pRetVal: ptr ptr ITextRangeProvider
+    ): HRESULT {.stdcall.}
+    GetConversionTarget*: proc(
+      self: ptr ITextEditProvider, pRetVal: ptr ptr ITextRangeProvider
+    ): HRESULT {.stdcall.}
+
   ITextRangeProvider2* {.pure.} = object
     lpVtbl*: ptr ITextRangeProvider2Vtbl
+
   ITextRangeProvider2Vtbl* {.pure, inheritable.} = object of ITextRangeProviderVtbl
     ShowContextMenu*: proc(self: ptr ITextRangeProvider2): HRESULT {.stdcall.}
+
   ITextChildProvider* {.pure.} = object
     lpVtbl*: ptr ITextChildProviderVtbl
+
   ITextChildProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_TextContainer*: proc(self: ptr ITextChildProvider, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
-    get_TextRange*: proc(self: ptr ITextChildProvider, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.stdcall.}
+    get_TextContainer*: proc(
+      self: ptr ITextChildProvider, pRetVal: ptr ptr IRawElementProviderSimple
+    ): HRESULT {.stdcall.}
+    get_TextRange*: proc(
+      self: ptr ITextChildProvider, pRetVal: ptr ptr ITextRangeProvider
+    ): HRESULT {.stdcall.}
+
   ICustomNavigationProvider* {.pure.} = object
     lpVtbl*: ptr ICustomNavigationProviderVtbl
+
   ICustomNavigationProviderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Navigate*: proc(self: ptr ICustomNavigationProvider, direction: NavigateDirection, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
+    Navigate*: proc(
+      self: ptr ICustomNavigationProvider,
+      direction: NavigateDirection,
+      pRetVal: ptr ptr IRawElementProviderSimple,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationRegistrar* {.pure.} = object
     lpVtbl*: ptr IUIAutomationRegistrarVtbl
+
   IUIAutomationRegistrarVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RegisterProperty*: proc(self: ptr IUIAutomationRegistrar, property: ptr UIAutomationPropertyInfo, propertyId: ptr PROPERTYID): HRESULT {.stdcall.}
-    RegisterEvent*: proc(self: ptr IUIAutomationRegistrar, event: ptr UIAutomationEventInfo, eventId: ptr EVENTID): HRESULT {.stdcall.}
-    RegisterPattern*: proc(self: ptr IUIAutomationRegistrar, pattern: ptr UIAutomationPatternInfo, pPatternId: ptr PATTERNID, pPatternAvailablePropertyId: ptr PROPERTYID, propertyIdCount: UINT, pPropertyIds: ptr PROPERTYID, eventIdCount: UINT, pEventIds: ptr EVENTID): HRESULT {.stdcall.}
+    RegisterProperty*: proc(
+      self: ptr IUIAutomationRegistrar,
+      property: ptr UIAutomationPropertyInfo,
+      propertyId: ptr PROPERTYID,
+    ): HRESULT {.stdcall.}
+    RegisterEvent*: proc(
+      self: ptr IUIAutomationRegistrar,
+      event: ptr UIAutomationEventInfo,
+      eventId: ptr EVENTID,
+    ): HRESULT {.stdcall.}
+    RegisterPattern*: proc(
+      self: ptr IUIAutomationRegistrar,
+      pattern: ptr UIAutomationPatternInfo,
+      pPatternId: ptr PATTERNID,
+      pPatternAvailablePropertyId: ptr PROPERTYID,
+      propertyIdCount: UINT,
+      pPropertyIds: ptr PROPERTYID,
+      eventIdCount: UINT,
+      pEventIds: ptr EVENTID,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationCondition* {.pure.} = object
     lpVtbl*: ptr IUIAutomationConditionVtbl
+
   IUIAutomationConditionVtbl* {.pure, inheritable.} = object of IUnknownVtbl
   IUIAutomationElementArray* {.pure.} = object
     lpVtbl*: ptr IUIAutomationElementArrayVtbl
+
   IUIAutomationElementArrayVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_Length*: proc(self: ptr IUIAutomationElementArray, length: ptr int32): HRESULT {.stdcall.}
-    GetElement*: proc(self: ptr IUIAutomationElementArray, index: int32, element: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
+    get_Length*:
+      proc(self: ptr IUIAutomationElementArray, length: ptr int32): HRESULT {.stdcall.}
+    GetElement*: proc(
+      self: ptr IUIAutomationElementArray,
+      index: int32,
+      element: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationCacheRequest* {.pure.} = object
     lpVtbl*: ptr IUIAutomationCacheRequestVtbl
+
   IUIAutomationCacheRequestVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AddProperty*: proc(self: ptr IUIAutomationCacheRequest, propertyId: PROPERTYID): HRESULT {.stdcall.}
-    AddPattern*: proc(self: ptr IUIAutomationCacheRequest, patternId: PATTERNID): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IUIAutomationCacheRequest, clonedRequest: ptr ptr IUIAutomationCacheRequest): HRESULT {.stdcall.}
-    get_TreeScope*: proc(self: ptr IUIAutomationCacheRequest, scope: ptr TreeScope): HRESULT {.stdcall.}
-    put_TreeScope*: proc(self: ptr IUIAutomationCacheRequest, scope: TreeScope): HRESULT {.stdcall.}
-    get_TreeFilter*: proc(self: ptr IUIAutomationCacheRequest, filter: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    put_TreeFilter*: proc(self: ptr IUIAutomationCacheRequest, filter: ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    get_AutomationElementMode*: proc(self: ptr IUIAutomationCacheRequest, mode: ptr AutomationElementMode): HRESULT {.stdcall.}
-    put_AutomationElementMode*: proc(self: ptr IUIAutomationCacheRequest, mode: AutomationElementMode): HRESULT {.stdcall.}
+    AddProperty*: proc(
+      self: ptr IUIAutomationCacheRequest, propertyId: PROPERTYID
+    ): HRESULT {.stdcall.}
+    AddPattern*: proc(
+      self: ptr IUIAutomationCacheRequest, patternId: PATTERNID
+    ): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr IUIAutomationCacheRequest,
+      clonedRequest: ptr ptr IUIAutomationCacheRequest,
+    ): HRESULT {.stdcall.}
+    get_TreeScope*: proc(
+      self: ptr IUIAutomationCacheRequest, scope: ptr TreeScope
+    ): HRESULT {.stdcall.}
+    put_TreeScope*:
+      proc(self: ptr IUIAutomationCacheRequest, scope: TreeScope): HRESULT {.stdcall.}
+    get_TreeFilter*: proc(
+      self: ptr IUIAutomationCacheRequest, filter: ptr ptr IUIAutomationCondition
+    ): HRESULT {.stdcall.}
+    put_TreeFilter*: proc(
+      self: ptr IUIAutomationCacheRequest, filter: ptr IUIAutomationCondition
+    ): HRESULT {.stdcall.}
+    get_AutomationElementMode*: proc(
+      self: ptr IUIAutomationCacheRequest, mode: ptr AutomationElementMode
+    ): HRESULT {.stdcall.}
+    put_AutomationElementMode*: proc(
+      self: ptr IUIAutomationCacheRequest, mode: AutomationElementMode
+    ): HRESULT {.stdcall.}
+
   IUIAutomationElement* {.pure.} = object
     lpVtbl*: ptr IUIAutomationElementVtbl
+
   IUIAutomationElementVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SetFocus*: proc(self: ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetRuntimeId*: proc(self: ptr IUIAutomationElement, runtimeId: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    FindFirst*: proc(self: ptr IUIAutomationElement, scope: TreeScope, condition: ptr IUIAutomationCondition, found: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    FindAll*: proc(self: ptr IUIAutomationElement, scope: TreeScope, condition: ptr IUIAutomationCondition, found: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    FindFirstBuildCache*: proc(self: ptr IUIAutomationElement, scope: TreeScope, condition: ptr IUIAutomationCondition, cacheRequest: ptr IUIAutomationCacheRequest, found: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    FindAllBuildCache*: proc(self: ptr IUIAutomationElement, scope: TreeScope, condition: ptr IUIAutomationCondition, cacheRequest: ptr IUIAutomationCacheRequest, found: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    BuildUpdatedCache*: proc(self: ptr IUIAutomationElement, cacheRequest: ptr IUIAutomationCacheRequest, updatedElement: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetCurrentPropertyValue*: proc(self: ptr IUIAutomationElement, propertyId: PROPERTYID, retVal: ptr VARIANT): HRESULT {.stdcall.}
-    GetCurrentPropertyValueEx*: proc(self: ptr IUIAutomationElement, propertyId: PROPERTYID, ignoreDefaultValue: BOOL, retVal: ptr VARIANT): HRESULT {.stdcall.}
-    GetCachedPropertyValue*: proc(self: ptr IUIAutomationElement, propertyId: PROPERTYID, retVal: ptr VARIANT): HRESULT {.stdcall.}
-    GetCachedPropertyValueEx*: proc(self: ptr IUIAutomationElement, propertyId: PROPERTYID, ignoreDefaultValue: BOOL, retVal: ptr VARIANT): HRESULT {.stdcall.}
-    GetCurrentPatternAs*: proc(self: ptr IUIAutomationElement, patternId: PATTERNID, riid: REFIID, patternObject: ptr pointer): HRESULT {.stdcall.}
-    GetCachedPatternAs*: proc(self: ptr IUIAutomationElement, patternId: PATTERNID, riid: REFIID, patternObject: ptr pointer): HRESULT {.stdcall.}
-    GetCurrentPattern*: proc(self: ptr IUIAutomationElement, patternId: PATTERNID, patternObject: ptr ptr IUnknown): HRESULT {.stdcall.}
-    GetCachedPattern*: proc(self: ptr IUIAutomationElement, patternId: PATTERNID, patternObject: ptr ptr IUnknown): HRESULT {.stdcall.}
-    GetCachedParent*: proc(self: ptr IUIAutomationElement, parent: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetCachedChildren*: proc(self: ptr IUIAutomationElement, children: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CurrentProcessId*: proc(self: ptr IUIAutomationElement, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CurrentControlType*: proc(self: ptr IUIAutomationElement, retVal: ptr CONTROLTYPEID): HRESULT {.stdcall.}
-    get_CurrentLocalizedControlType*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentName*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentAcceleratorKey*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentAccessKey*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentHasKeyboardFocus*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentIsKeyboardFocusable*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentIsEnabled*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentAutomationId*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentClassName*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentHelpText*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentCulture*: proc(self: ptr IUIAutomationElement, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CurrentIsControlElement*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentIsContentElement*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentIsPassword*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentNativeWindowHandle*: proc(self: ptr IUIAutomationElement, retVal: ptr UIA_HWND): HRESULT {.stdcall.}
-    get_CurrentItemType*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentIsOffscreen*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentOrientation*: proc(self: ptr IUIAutomationElement, retVal: ptr OrientationType): HRESULT {.stdcall.}
-    get_CurrentFrameworkId*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentIsRequiredForForm*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentItemStatus*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentBoundingRectangle*: proc(self: ptr IUIAutomationElement, retVal: ptr RECT): HRESULT {.stdcall.}
-    get_CurrentLabeledBy*: proc(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_CurrentAriaRole*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentAriaProperties*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentIsDataValidForForm*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentControllerFor*: proc(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CurrentDescribedBy*: proc(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CurrentFlowsTo*: proc(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CurrentProviderDescription*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedProcessId*: proc(self: ptr IUIAutomationElement, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedControlType*: proc(self: ptr IUIAutomationElement, retVal: ptr CONTROLTYPEID): HRESULT {.stdcall.}
-    get_CachedLocalizedControlType*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedName*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedAcceleratorKey*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedAccessKey*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedHasKeyboardFocus*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedIsKeyboardFocusable*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedIsEnabled*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedAutomationId*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedClassName*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedHelpText*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedCulture*: proc(self: ptr IUIAutomationElement, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedIsControlElement*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedIsContentElement*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedIsPassword*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedNativeWindowHandle*: proc(self: ptr IUIAutomationElement, retVal: ptr UIA_HWND): HRESULT {.stdcall.}
-    get_CachedItemType*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedIsOffscreen*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedOrientation*: proc(self: ptr IUIAutomationElement, retVal: ptr OrientationType): HRESULT {.stdcall.}
-    get_CachedFrameworkId*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedIsRequiredForForm*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedItemStatus*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedBoundingRectangle*: proc(self: ptr IUIAutomationElement, retVal: ptr RECT): HRESULT {.stdcall.}
-    get_CachedLabeledBy*: proc(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_CachedAriaRole*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedAriaProperties*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedIsDataValidForForm*: proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedControllerFor*: proc(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CachedDescribedBy*: proc(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CachedFlowsTo*: proc(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CachedProviderDescription*: proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
-    GetClickablePoint*: proc(self: ptr IUIAutomationElement, clickable: ptr POINT, gotClickable: ptr BOOL): HRESULT {.stdcall.}
+    GetRuntimeId*: proc(
+      self: ptr IUIAutomationElement, runtimeId: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    FindFirst*: proc(
+      self: ptr IUIAutomationElement,
+      scope: TreeScope,
+      condition: ptr IUIAutomationCondition,
+      found: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    FindAll*: proc(
+      self: ptr IUIAutomationElement,
+      scope: TreeScope,
+      condition: ptr IUIAutomationCondition,
+      found: ptr ptr IUIAutomationElementArray,
+    ): HRESULT {.stdcall.}
+    FindFirstBuildCache*: proc(
+      self: ptr IUIAutomationElement,
+      scope: TreeScope,
+      condition: ptr IUIAutomationCondition,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      found: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    FindAllBuildCache*: proc(
+      self: ptr IUIAutomationElement,
+      scope: TreeScope,
+      condition: ptr IUIAutomationCondition,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      found: ptr ptr IUIAutomationElementArray,
+    ): HRESULT {.stdcall.}
+    BuildUpdatedCache*: proc(
+      self: ptr IUIAutomationElement,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      updatedElement: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    GetCurrentPropertyValue*: proc(
+      self: ptr IUIAutomationElement, propertyId: PROPERTYID, retVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    GetCurrentPropertyValueEx*: proc(
+      self: ptr IUIAutomationElement,
+      propertyId: PROPERTYID,
+      ignoreDefaultValue: BOOL,
+      retVal: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    GetCachedPropertyValue*: proc(
+      self: ptr IUIAutomationElement, propertyId: PROPERTYID, retVal: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    GetCachedPropertyValueEx*: proc(
+      self: ptr IUIAutomationElement,
+      propertyId: PROPERTYID,
+      ignoreDefaultValue: BOOL,
+      retVal: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+    GetCurrentPatternAs*: proc(
+      self: ptr IUIAutomationElement,
+      patternId: PATTERNID,
+      riid: REFIID,
+      patternObject: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetCachedPatternAs*: proc(
+      self: ptr IUIAutomationElement,
+      patternId: PATTERNID,
+      riid: REFIID,
+      patternObject: ptr pointer,
+    ): HRESULT {.stdcall.}
+    GetCurrentPattern*: proc(
+      self: ptr IUIAutomationElement,
+      patternId: PATTERNID,
+      patternObject: ptr ptr IUnknown,
+    ): HRESULT {.stdcall.}
+    GetCachedPattern*: proc(
+      self: ptr IUIAutomationElement,
+      patternId: PATTERNID,
+      patternObject: ptr ptr IUnknown,
+    ): HRESULT {.stdcall.}
+    GetCachedParent*: proc(
+      self: ptr IUIAutomationElement, parent: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    GetCachedChildren*: proc(
+      self: ptr IUIAutomationElement, children: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    get_CurrentProcessId*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CurrentControlType*: proc(
+      self: ptr IUIAutomationElement, retVal: ptr CONTROLTYPEID
+    ): HRESULT {.stdcall.}
+    get_CurrentLocalizedControlType*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentName*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentAcceleratorKey*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentAccessKey*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentHasKeyboardFocus*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentIsKeyboardFocusable*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentIsEnabled*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentAutomationId*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentClassName*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentHelpText*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentCulture*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CurrentIsControlElement*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentIsContentElement*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentIsPassword*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentNativeWindowHandle*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr UIA_HWND): HRESULT {.stdcall.}
+    get_CurrentItemType*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentIsOffscreen*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentOrientation*: proc(
+      self: ptr IUIAutomationElement, retVal: ptr OrientationType
+    ): HRESULT {.stdcall.}
+    get_CurrentFrameworkId*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentIsRequiredForForm*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentItemStatus*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentBoundingRectangle*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr RECT): HRESULT {.stdcall.}
+    get_CurrentLabeledBy*: proc(
+      self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    get_CurrentAriaRole*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentAriaProperties*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentIsDataValidForForm*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentControllerFor*: proc(
+      self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    get_CurrentDescribedBy*: proc(
+      self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    get_CurrentFlowsTo*: proc(
+      self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    get_CurrentProviderDescription*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedProcessId*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CachedControlType*: proc(
+      self: ptr IUIAutomationElement, retVal: ptr CONTROLTYPEID
+    ): HRESULT {.stdcall.}
+    get_CachedLocalizedControlType*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedName*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedAcceleratorKey*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedAccessKey*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedHasKeyboardFocus*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedIsKeyboardFocusable*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedIsEnabled*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedAutomationId*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedClassName*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedHelpText*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedCulture*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CachedIsControlElement*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedIsContentElement*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedIsPassword*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedNativeWindowHandle*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr UIA_HWND): HRESULT {.stdcall.}
+    get_CachedItemType*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedIsOffscreen*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedOrientation*: proc(
+      self: ptr IUIAutomationElement, retVal: ptr OrientationType
+    ): HRESULT {.stdcall.}
+    get_CachedFrameworkId*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedIsRequiredForForm*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedItemStatus*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedBoundingRectangle*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr RECT): HRESULT {.stdcall.}
+    get_CachedLabeledBy*: proc(
+      self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    get_CachedAriaRole*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedAriaProperties*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedIsDataValidForForm*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedControllerFor*: proc(
+      self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    get_CachedDescribedBy*: proc(
+      self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    get_CachedFlowsTo*: proc(
+      self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    get_CachedProviderDescription*:
+      proc(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.stdcall.}
+    GetClickablePoint*: proc(
+      self: ptr IUIAutomationElement, clickable: ptr POINT, gotClickable: ptr BOOL
+    ): HRESULT {.stdcall.}
+
   IUIAutomationBoolCondition* {.pure.} = object
     lpVtbl*: ptr IUIAutomationBoolConditionVtbl
+
   IUIAutomationBoolConditionVtbl* {.pure, inheritable.} = object of IUIAutomationConditionVtbl
-    get_BooleanValue*: proc(self: ptr IUIAutomationBoolCondition, boolVal: ptr BOOL): HRESULT {.stdcall.}
+    get_BooleanValue*:
+      proc(self: ptr IUIAutomationBoolCondition, boolVal: ptr BOOL): HRESULT {.stdcall.}
+
   IUIAutomationPropertyCondition* {.pure.} = object
     lpVtbl*: ptr IUIAutomationPropertyConditionVtbl
+
   IUIAutomationPropertyConditionVtbl* {.pure, inheritable.} = object of IUIAutomationConditionVtbl
-    get_PropertyId*: proc(self: ptr IUIAutomationPropertyCondition, propertyId: ptr PROPERTYID): HRESULT {.stdcall.}
-    get_PropertyValue*: proc(self: ptr IUIAutomationPropertyCondition, propertyValue: ptr VARIANT): HRESULT {.stdcall.}
-    get_PropertyConditionFlags*: proc(self: ptr IUIAutomationPropertyCondition, flags: ptr PropertyConditionFlags): HRESULT {.stdcall.}
+    get_PropertyId*: proc(
+      self: ptr IUIAutomationPropertyCondition, propertyId: ptr PROPERTYID
+    ): HRESULT {.stdcall.}
+    get_PropertyValue*: proc(
+      self: ptr IUIAutomationPropertyCondition, propertyValue: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    get_PropertyConditionFlags*: proc(
+      self: ptr IUIAutomationPropertyCondition, flags: ptr PropertyConditionFlags
+    ): HRESULT {.stdcall.}
+
   IUIAutomationAndCondition* {.pure.} = object
     lpVtbl*: ptr IUIAutomationAndConditionVtbl
+
   IUIAutomationAndConditionVtbl* {.pure, inheritable.} = object of IUIAutomationConditionVtbl
-    get_ChildCount*: proc(self: ptr IUIAutomationAndCondition, childCount: ptr int32): HRESULT {.stdcall.}
-    GetChildrenAsNativeArray*: proc(self: ptr IUIAutomationAndCondition, childArray: ptr ptr ptr IUIAutomationCondition, childArrayCount: ptr int32): HRESULT {.stdcall.}
-    GetChildren*: proc(self: ptr IUIAutomationAndCondition, childArray: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    get_ChildCount*: proc(
+      self: ptr IUIAutomationAndCondition, childCount: ptr int32
+    ): HRESULT {.stdcall.}
+    GetChildrenAsNativeArray*: proc(
+      self: ptr IUIAutomationAndCondition,
+      childArray: ptr ptr ptr IUIAutomationCondition,
+      childArrayCount: ptr int32,
+    ): HRESULT {.stdcall.}
+    GetChildren*: proc(
+      self: ptr IUIAutomationAndCondition, childArray: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+
   IUIAutomationOrCondition* {.pure.} = object
     lpVtbl*: ptr IUIAutomationOrConditionVtbl
+
   IUIAutomationOrConditionVtbl* {.pure, inheritable.} = object of IUIAutomationConditionVtbl
-    get_ChildCount*: proc(self: ptr IUIAutomationOrCondition, childCount: ptr int32): HRESULT {.stdcall.}
-    GetChildrenAsNativeArray*: proc(self: ptr IUIAutomationOrCondition, childArray: ptr ptr ptr IUIAutomationCondition, childArrayCount: ptr int32): HRESULT {.stdcall.}
-    GetChildren*: proc(self: ptr IUIAutomationOrCondition, childArray: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    get_ChildCount*: proc(
+      self: ptr IUIAutomationOrCondition, childCount: ptr int32
+    ): HRESULT {.stdcall.}
+    GetChildrenAsNativeArray*: proc(
+      self: ptr IUIAutomationOrCondition,
+      childArray: ptr ptr ptr IUIAutomationCondition,
+      childArrayCount: ptr int32,
+    ): HRESULT {.stdcall.}
+    GetChildren*: proc(
+      self: ptr IUIAutomationOrCondition, childArray: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+
   IUIAutomationNotCondition* {.pure.} = object
     lpVtbl*: ptr IUIAutomationNotConditionVtbl
+
   IUIAutomationNotConditionVtbl* {.pure, inheritable.} = object of IUIAutomationConditionVtbl
-    GetChild*: proc(self: ptr IUIAutomationNotCondition, condition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
+    GetChild*: proc(
+      self: ptr IUIAutomationNotCondition, condition: ptr ptr IUIAutomationCondition
+    ): HRESULT {.stdcall.}
+
   IUIAutomationTreeWalker* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTreeWalkerVtbl
+
   IUIAutomationTreeWalkerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetParentElement*: proc(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, parent: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetFirstChildElement*: proc(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, first: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetLastChildElement*: proc(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, last: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetNextSiblingElement*: proc(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, next: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetPreviousSiblingElement*: proc(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, previous: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    NormalizeElement*: proc(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, normalized: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetParentElementBuildCache*: proc(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, cacheRequest: ptr IUIAutomationCacheRequest, parent: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetFirstChildElementBuildCache*: proc(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, cacheRequest: ptr IUIAutomationCacheRequest, first: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetLastChildElementBuildCache*: proc(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, cacheRequest: ptr IUIAutomationCacheRequest, last: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetNextSiblingElementBuildCache*: proc(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, cacheRequest: ptr IUIAutomationCacheRequest, next: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetPreviousSiblingElementBuildCache*: proc(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, cacheRequest: ptr IUIAutomationCacheRequest, previous: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    NormalizeElementBuildCache*: proc(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, cacheRequest: ptr IUIAutomationCacheRequest, normalized: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_Condition*: proc(self: ptr IUIAutomationTreeWalker, condition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
+    GetParentElement*: proc(
+      self: ptr IUIAutomationTreeWalker,
+      element: ptr IUIAutomationElement,
+      parent: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    GetFirstChildElement*: proc(
+      self: ptr IUIAutomationTreeWalker,
+      element: ptr IUIAutomationElement,
+      first: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    GetLastChildElement*: proc(
+      self: ptr IUIAutomationTreeWalker,
+      element: ptr IUIAutomationElement,
+      last: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    GetNextSiblingElement*: proc(
+      self: ptr IUIAutomationTreeWalker,
+      element: ptr IUIAutomationElement,
+      next: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    GetPreviousSiblingElement*: proc(
+      self: ptr IUIAutomationTreeWalker,
+      element: ptr IUIAutomationElement,
+      previous: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    NormalizeElement*: proc(
+      self: ptr IUIAutomationTreeWalker,
+      element: ptr IUIAutomationElement,
+      normalized: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    GetParentElementBuildCache*: proc(
+      self: ptr IUIAutomationTreeWalker,
+      element: ptr IUIAutomationElement,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      parent: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    GetFirstChildElementBuildCache*: proc(
+      self: ptr IUIAutomationTreeWalker,
+      element: ptr IUIAutomationElement,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      first: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    GetLastChildElementBuildCache*: proc(
+      self: ptr IUIAutomationTreeWalker,
+      element: ptr IUIAutomationElement,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      last: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    GetNextSiblingElementBuildCache*: proc(
+      self: ptr IUIAutomationTreeWalker,
+      element: ptr IUIAutomationElement,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      next: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    GetPreviousSiblingElementBuildCache*: proc(
+      self: ptr IUIAutomationTreeWalker,
+      element: ptr IUIAutomationElement,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      previous: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    NormalizeElementBuildCache*: proc(
+      self: ptr IUIAutomationTreeWalker,
+      element: ptr IUIAutomationElement,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      normalized: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    get_Condition*: proc(
+      self: ptr IUIAutomationTreeWalker, condition: ptr ptr IUIAutomationCondition
+    ): HRESULT {.stdcall.}
+
   IUIAutomationEventHandler* {.pure.} = object
     lpVtbl*: ptr IUIAutomationEventHandlerVtbl
+
   IUIAutomationEventHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    HandleAutomationEvent*: proc(self: ptr IUIAutomationEventHandler, sender: ptr IUIAutomationElement, eventId: EVENTID): HRESULT {.stdcall.}
+    HandleAutomationEvent*: proc(
+      self: ptr IUIAutomationEventHandler,
+      sender: ptr IUIAutomationElement,
+      eventId: EVENTID,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationPropertyChangedEventHandler* {.pure.} = object
     lpVtbl*: ptr IUIAutomationPropertyChangedEventHandlerVtbl
+
   IUIAutomationPropertyChangedEventHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    HandlePropertyChangedEvent*: proc(self: ptr IUIAutomationPropertyChangedEventHandler, sender: ptr IUIAutomationElement, propertyId: PROPERTYID, newValue: VARIANT): HRESULT {.stdcall.}
+    HandlePropertyChangedEvent*: proc(
+      self: ptr IUIAutomationPropertyChangedEventHandler,
+      sender: ptr IUIAutomationElement,
+      propertyId: PROPERTYID,
+      newValue: VARIANT,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationStructureChangedEventHandler* {.pure.} = object
     lpVtbl*: ptr IUIAutomationStructureChangedEventHandlerVtbl
+
   IUIAutomationStructureChangedEventHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    HandleStructureChangedEvent*: proc(self: ptr IUIAutomationStructureChangedEventHandler, sender: ptr IUIAutomationElement, changeType: StructureChangeType, runtimeId: ptr SAFEARRAY): HRESULT {.stdcall.}
+    HandleStructureChangedEvent*: proc(
+      self: ptr IUIAutomationStructureChangedEventHandler,
+      sender: ptr IUIAutomationElement,
+      changeType: StructureChangeType,
+      runtimeId: ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationFocusChangedEventHandler* {.pure.} = object
     lpVtbl*: ptr IUIAutomationFocusChangedEventHandlerVtbl
+
   IUIAutomationFocusChangedEventHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    HandleFocusChangedEvent*: proc(self: ptr IUIAutomationFocusChangedEventHandler, sender: ptr IUIAutomationElement): HRESULT {.stdcall.}
+    HandleFocusChangedEvent*: proc(
+      self: ptr IUIAutomationFocusChangedEventHandler, sender: ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+
   IUIAutomationTextEditTextChangedEventHandler* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTextEditTextChangedEventHandlerVtbl
+
   IUIAutomationTextEditTextChangedEventHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    HandleTextEditTextChangedEvent*: proc(self: ptr IUIAutomationTextEditTextChangedEventHandler, sender: ptr IUIAutomationElement, textEditChangeType: TextEditChangeType, eventStrings: ptr SAFEARRAY): HRESULT {.stdcall.}
+    HandleTextEditTextChangedEvent*: proc(
+      self: ptr IUIAutomationTextEditTextChangedEventHandler,
+      sender: ptr IUIAutomationElement,
+      textEditChangeType: TextEditChangeType,
+      eventStrings: ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationChangesEventHandler* {.pure.} = object
     lpVtbl*: ptr IUIAutomationChangesEventHandlerVtbl
+
   IUIAutomationChangesEventHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    HandleChangesEvent*: proc(self: ptr IUIAutomationChangesEventHandler, sender: ptr IUIAutomationElement, uiaChanges: ptr UiaChangeInfo, changesCount: int32): HRESULT {.stdcall.}
+    HandleChangesEvent*: proc(
+      self: ptr IUIAutomationChangesEventHandler,
+      sender: ptr IUIAutomationElement,
+      uiaChanges: ptr UiaChangeInfo,
+      changesCount: int32,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationNotificationEventHandler* {.pure.} = object
     lpVtbl*: ptr IUIAutomationNotificationEventHandlerVtbl
+
   IUIAutomationNotificationEventHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    HandleNotificationEvent*: proc(self: ptr IUIAutomationNotificationEventHandler, sender: ptr IUIAutomationElement, notificationKind: NotificationKind, notificationProcessing: NotificationProcessing, displayString: BSTR, activityId: BSTR): HRESULT {.stdcall.}
+    HandleNotificationEvent*: proc(
+      self: ptr IUIAutomationNotificationEventHandler,
+      sender: ptr IUIAutomationElement,
+      notificationKind: NotificationKind,
+      notificationProcessing: NotificationProcessing,
+      displayString: BSTR,
+      activityId: BSTR,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationInvokePattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationInvokePatternVtbl
+
   IUIAutomationInvokePatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Invoke*: proc(self: ptr IUIAutomationInvokePattern): HRESULT {.stdcall.}
+
   IUIAutomationDockPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationDockPatternVtbl
+
   IUIAutomationDockPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetDockPosition*: proc(self: ptr IUIAutomationDockPattern, dockPos: DockPosition): HRESULT {.stdcall.}
-    get_CurrentDockPosition*: proc(self: ptr IUIAutomationDockPattern, retVal: ptr DockPosition): HRESULT {.stdcall.}
-    get_CachedDockPosition*: proc(self: ptr IUIAutomationDockPattern, retVal: ptr DockPosition): HRESULT {.stdcall.}
+    SetDockPosition*: proc(
+      self: ptr IUIAutomationDockPattern, dockPos: DockPosition
+    ): HRESULT {.stdcall.}
+    get_CurrentDockPosition*: proc(
+      self: ptr IUIAutomationDockPattern, retVal: ptr DockPosition
+    ): HRESULT {.stdcall.}
+    get_CachedDockPosition*: proc(
+      self: ptr IUIAutomationDockPattern, retVal: ptr DockPosition
+    ): HRESULT {.stdcall.}
+
   IUIAutomationExpandCollapsePattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationExpandCollapsePatternVtbl
+
   IUIAutomationExpandCollapsePatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Expand*: proc(self: ptr IUIAutomationExpandCollapsePattern): HRESULT {.stdcall.}
     Collapse*: proc(self: ptr IUIAutomationExpandCollapsePattern): HRESULT {.stdcall.}
-    get_CurrentExpandCollapseState*: proc(self: ptr IUIAutomationExpandCollapsePattern, retVal: ptr ExpandCollapseState): HRESULT {.stdcall.}
-    get_CachedExpandCollapseState*: proc(self: ptr IUIAutomationExpandCollapsePattern, retVal: ptr ExpandCollapseState): HRESULT {.stdcall.}
+    get_CurrentExpandCollapseState*: proc(
+      self: ptr IUIAutomationExpandCollapsePattern, retVal: ptr ExpandCollapseState
+    ): HRESULT {.stdcall.}
+    get_CachedExpandCollapseState*: proc(
+      self: ptr IUIAutomationExpandCollapsePattern, retVal: ptr ExpandCollapseState
+    ): HRESULT {.stdcall.}
+
   IUIAutomationGridPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationGridPatternVtbl
+
   IUIAutomationGridPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetItem*: proc(self: ptr IUIAutomationGridPattern, row: int32, column: int32, element: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_CurrentRowCount*: proc(self: ptr IUIAutomationGridPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CurrentColumnCount*: proc(self: ptr IUIAutomationGridPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedRowCount*: proc(self: ptr IUIAutomationGridPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedColumnCount*: proc(self: ptr IUIAutomationGridPattern, retVal: ptr int32): HRESULT {.stdcall.}
+    GetItem*: proc(
+      self: ptr IUIAutomationGridPattern,
+      row: int32,
+      column: int32,
+      element: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    get_CurrentRowCount*:
+      proc(self: ptr IUIAutomationGridPattern, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CurrentColumnCount*:
+      proc(self: ptr IUIAutomationGridPattern, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CachedRowCount*:
+      proc(self: ptr IUIAutomationGridPattern, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CachedColumnCount*:
+      proc(self: ptr IUIAutomationGridPattern, retVal: ptr int32): HRESULT {.stdcall.}
+
   IUIAutomationGridItemPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationGridItemPatternVtbl
+
   IUIAutomationGridItemPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_CurrentContainingGrid*: proc(self: ptr IUIAutomationGridItemPattern, retVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_CurrentRow*: proc(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CurrentColumn*: proc(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CurrentRowSpan*: proc(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CurrentColumnSpan*: proc(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedContainingGrid*: proc(self: ptr IUIAutomationGridItemPattern, retVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_CachedRow*: proc(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedColumn*: proc(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedRowSpan*: proc(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedColumnSpan*: proc(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CurrentContainingGrid*: proc(
+      self: ptr IUIAutomationGridItemPattern, retVal: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    get_CurrentRow*: proc(
+      self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+    ): HRESULT {.stdcall.}
+    get_CurrentColumn*: proc(
+      self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+    ): HRESULT {.stdcall.}
+    get_CurrentRowSpan*: proc(
+      self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+    ): HRESULT {.stdcall.}
+    get_CurrentColumnSpan*: proc(
+      self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+    ): HRESULT {.stdcall.}
+    get_CachedContainingGrid*: proc(
+      self: ptr IUIAutomationGridItemPattern, retVal: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    get_CachedRow*: proc(
+      self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+    ): HRESULT {.stdcall.}
+    get_CachedColumn*: proc(
+      self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+    ): HRESULT {.stdcall.}
+    get_CachedRowSpan*: proc(
+      self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+    ): HRESULT {.stdcall.}
+    get_CachedColumnSpan*: proc(
+      self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+    ): HRESULT {.stdcall.}
+
   IUIAutomationMultipleViewPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationMultipleViewPatternVtbl
+
   IUIAutomationMultipleViewPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetViewName*: proc(self: ptr IUIAutomationMultipleViewPattern, view: int32, name: ptr BSTR): HRESULT {.stdcall.}
-    SetCurrentView*: proc(self: ptr IUIAutomationMultipleViewPattern, view: int32): HRESULT {.stdcall.}
-    get_CurrentCurrentView*: proc(self: ptr IUIAutomationMultipleViewPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    GetCurrentSupportedViews*: proc(self: ptr IUIAutomationMultipleViewPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    get_CachedCurrentView*: proc(self: ptr IUIAutomationMultipleViewPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    GetCachedSupportedViews*: proc(self: ptr IUIAutomationMultipleViewPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetViewName*: proc(
+      self: ptr IUIAutomationMultipleViewPattern, view: int32, name: ptr BSTR
+    ): HRESULT {.stdcall.}
+    SetCurrentView*:
+      proc(self: ptr IUIAutomationMultipleViewPattern, view: int32): HRESULT {.stdcall.}
+    get_CurrentCurrentView*: proc(
+      self: ptr IUIAutomationMultipleViewPattern, retVal: ptr int32
+    ): HRESULT {.stdcall.}
+    GetCurrentSupportedViews*: proc(
+      self: ptr IUIAutomationMultipleViewPattern, retVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    get_CachedCurrentView*: proc(
+      self: ptr IUIAutomationMultipleViewPattern, retVal: ptr int32
+    ): HRESULT {.stdcall.}
+    GetCachedSupportedViews*: proc(
+      self: ptr IUIAutomationMultipleViewPattern, retVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+
   IUIAutomationObjectModelPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationObjectModelPatternVtbl
+
   IUIAutomationObjectModelPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetUnderlyingObjectModel*: proc(self: ptr IUIAutomationObjectModelPattern, retVal: ptr ptr IUnknown): HRESULT {.stdcall.}
+    GetUnderlyingObjectModel*: proc(
+      self: ptr IUIAutomationObjectModelPattern, retVal: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
+
   IUIAutomationRangeValuePattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationRangeValuePatternVtbl
+
   IUIAutomationRangeValuePatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    SetValue*: proc(self: ptr IUIAutomationRangeValuePattern, val: float64): HRESULT {.stdcall.}
-    get_CurrentValue*: proc(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CurrentIsReadOnly*: proc(self: ptr IUIAutomationRangeValuePattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentMaximum*: proc(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CurrentMinimum*: proc(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CurrentLargeChange*: proc(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CurrentSmallChange*: proc(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CachedValue*: proc(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CachedIsReadOnly*: proc(self: ptr IUIAutomationRangeValuePattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedMaximum*: proc(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CachedMinimum*: proc(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CachedLargeChange*: proc(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CachedSmallChange*: proc(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.stdcall.}
+    SetValue*:
+      proc(self: ptr IUIAutomationRangeValuePattern, val: float64): HRESULT {.stdcall.}
+    get_CurrentValue*: proc(
+      self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CurrentIsReadOnly*: proc(
+      self: ptr IUIAutomationRangeValuePattern, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CurrentMaximum*: proc(
+      self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CurrentMinimum*: proc(
+      self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CurrentLargeChange*: proc(
+      self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CurrentSmallChange*: proc(
+      self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CachedValue*: proc(
+      self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CachedIsReadOnly*: proc(
+      self: ptr IUIAutomationRangeValuePattern, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CachedMaximum*: proc(
+      self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CachedMinimum*: proc(
+      self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CachedLargeChange*: proc(
+      self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CachedSmallChange*: proc(
+      self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+
   IUIAutomationScrollPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationScrollPatternVtbl
+
   IUIAutomationScrollPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Scroll*: proc(self: ptr IUIAutomationScrollPattern, horizontalAmount: ScrollAmount, verticalAmount: ScrollAmount): HRESULT {.stdcall.}
-    SetScrollPercent*: proc(self: ptr IUIAutomationScrollPattern, horizontalPercent: float64, verticalPercent: float64): HRESULT {.stdcall.}
-    get_CurrentHorizontalScrollPercent*: proc(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CurrentVerticalScrollPercent*: proc(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CurrentHorizontalViewSize*: proc(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CurrentVerticalViewSize*: proc(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CurrentHorizontallyScrollable*: proc(self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentVerticallyScrollable*: proc(self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedHorizontalScrollPercent*: proc(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CachedVerticalScrollPercent*: proc(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CachedHorizontalViewSize*: proc(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CachedVerticalViewSize*: proc(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CachedHorizontallyScrollable*: proc(self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedVerticallyScrollable*: proc(self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    Scroll*: proc(
+      self: ptr IUIAutomationScrollPattern,
+      horizontalAmount: ScrollAmount,
+      verticalAmount: ScrollAmount,
+    ): HRESULT {.stdcall.}
+    SetScrollPercent*: proc(
+      self: ptr IUIAutomationScrollPattern,
+      horizontalPercent: float64,
+      verticalPercent: float64,
+    ): HRESULT {.stdcall.}
+    get_CurrentHorizontalScrollPercent*: proc(
+      self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CurrentVerticalScrollPercent*: proc(
+      self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CurrentHorizontalViewSize*: proc(
+      self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CurrentVerticalViewSize*: proc(
+      self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CurrentHorizontallyScrollable*:
+      proc(self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentVerticallyScrollable*:
+      proc(self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedHorizontalScrollPercent*: proc(
+      self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CachedVerticalScrollPercent*: proc(
+      self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CachedHorizontalViewSize*: proc(
+      self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CachedVerticalViewSize*: proc(
+      self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CachedHorizontallyScrollable*:
+      proc(self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedVerticallyScrollable*:
+      proc(self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+
   IUIAutomationScrollItemPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationScrollItemPatternVtbl
+
   IUIAutomationScrollItemPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     ScrollIntoView*: proc(self: ptr IUIAutomationScrollItemPattern): HRESULT {.stdcall.}
+
   IUIAutomationSelectionPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationSelectionPatternVtbl
+
   IUIAutomationSelectionPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCurrentSelection*: proc(self: ptr IUIAutomationSelectionPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CurrentCanSelectMultiple*: proc(self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentIsSelectionRequired*: proc(self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    GetCachedSelection*: proc(self: ptr IUIAutomationSelectionPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CachedCanSelectMultiple*: proc(self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedIsSelectionRequired*: proc(self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    GetCurrentSelection*: proc(
+      self: ptr IUIAutomationSelectionPattern, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    get_CurrentCanSelectMultiple*: proc(
+      self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CurrentIsSelectionRequired*: proc(
+      self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    GetCachedSelection*: proc(
+      self: ptr IUIAutomationSelectionPattern, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    get_CachedCanSelectMultiple*: proc(
+      self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CachedIsSelectionRequired*: proc(
+      self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+
   IUIAutomationSelectionPattern2* {.pure.} = object
     lpVtbl*: ptr IUIAutomationSelectionPattern2Vtbl
+
   IUIAutomationSelectionPattern2Vtbl* {.pure, inheritable.} = object of IUIAutomationSelectionPatternVtbl
-    get_CurrentFirstSelectedItem*: proc(self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_CurrentLastSelectedItem*: proc(self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_CurrentCurrentSelectedItem*: proc(self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_CurrentItemCount*: proc(self: ptr IUIAutomationSelectionPattern2, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedFirstSelectedItem*: proc(self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_CachedLastSelectedItem*: proc(self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_CachedCurrentSelectedItem*: proc(self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_CachedItemCount*: proc(self: ptr IUIAutomationSelectionPattern2, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CurrentFirstSelectedItem*: proc(
+      self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    get_CurrentLastSelectedItem*: proc(
+      self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    get_CurrentCurrentSelectedItem*: proc(
+      self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    get_CurrentItemCount*: proc(
+      self: ptr IUIAutomationSelectionPattern2, retVal: ptr int32
+    ): HRESULT {.stdcall.}
+    get_CachedFirstSelectedItem*: proc(
+      self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    get_CachedLastSelectedItem*: proc(
+      self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    get_CachedCurrentSelectedItem*: proc(
+      self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    get_CachedItemCount*: proc(
+      self: ptr IUIAutomationSelectionPattern2, retVal: ptr int32
+    ): HRESULT {.stdcall.}
+
   IUIAutomationSelectionItemPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationSelectionItemPatternVtbl
+
   IUIAutomationSelectionItemPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Select*: proc(self: ptr IUIAutomationSelectionItemPattern): HRESULT {.stdcall.}
-    AddToSelection*: proc(self: ptr IUIAutomationSelectionItemPattern): HRESULT {.stdcall.}
-    RemoveFromSelection*: proc(self: ptr IUIAutomationSelectionItemPattern): HRESULT {.stdcall.}
-    get_CurrentIsSelected*: proc(self: ptr IUIAutomationSelectionItemPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentSelectionContainer*: proc(self: ptr IUIAutomationSelectionItemPattern, retVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_CachedIsSelected*: proc(self: ptr IUIAutomationSelectionItemPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedSelectionContainer*: proc(self: ptr IUIAutomationSelectionItemPattern, retVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
+    AddToSelection*:
+      proc(self: ptr IUIAutomationSelectionItemPattern): HRESULT {.stdcall.}
+    RemoveFromSelection*:
+      proc(self: ptr IUIAutomationSelectionItemPattern): HRESULT {.stdcall.}
+    get_CurrentIsSelected*: proc(
+      self: ptr IUIAutomationSelectionItemPattern, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CurrentSelectionContainer*: proc(
+      self: ptr IUIAutomationSelectionItemPattern, retVal: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    get_CachedIsSelected*: proc(
+      self: ptr IUIAutomationSelectionItemPattern, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CachedSelectionContainer*: proc(
+      self: ptr IUIAutomationSelectionItemPattern, retVal: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+
   IUIAutomationSynchronizedInputPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationSynchronizedInputPatternVtbl
+
   IUIAutomationSynchronizedInputPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    StartListening*: proc(self: ptr IUIAutomationSynchronizedInputPattern, inputType: SynchronizedInputType): HRESULT {.stdcall.}
+    StartListening*: proc(
+      self: ptr IUIAutomationSynchronizedInputPattern, inputType: SynchronizedInputType
+    ): HRESULT {.stdcall.}
     Cancel*: proc(self: ptr IUIAutomationSynchronizedInputPattern): HRESULT {.stdcall.}
+
   IUIAutomationTablePattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTablePatternVtbl
+
   IUIAutomationTablePatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCurrentRowHeaders*: proc(self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    GetCurrentColumnHeaders*: proc(self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CurrentRowOrColumnMajor*: proc(self: ptr IUIAutomationTablePattern, retVal: ptr RowOrColumnMajor): HRESULT {.stdcall.}
-    GetCachedRowHeaders*: proc(self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    GetCachedColumnHeaders*: proc(self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CachedRowOrColumnMajor*: proc(self: ptr IUIAutomationTablePattern, retVal: ptr RowOrColumnMajor): HRESULT {.stdcall.}
+    GetCurrentRowHeaders*: proc(
+      self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    GetCurrentColumnHeaders*: proc(
+      self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    get_CurrentRowOrColumnMajor*: proc(
+      self: ptr IUIAutomationTablePattern, retVal: ptr RowOrColumnMajor
+    ): HRESULT {.stdcall.}
+    GetCachedRowHeaders*: proc(
+      self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    GetCachedColumnHeaders*: proc(
+      self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    get_CachedRowOrColumnMajor*: proc(
+      self: ptr IUIAutomationTablePattern, retVal: ptr RowOrColumnMajor
+    ): HRESULT {.stdcall.}
+
   IUIAutomationTableItemPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTableItemPatternVtbl
+
   IUIAutomationTableItemPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetCurrentRowHeaderItems*: proc(self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    GetCurrentColumnHeaderItems*: proc(self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    GetCachedRowHeaderItems*: proc(self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    GetCachedColumnHeaderItems*: proc(self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
+    GetCurrentRowHeaderItems*: proc(
+      self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    GetCurrentColumnHeaderItems*: proc(
+      self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    GetCachedRowHeaderItems*: proc(
+      self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    GetCachedColumnHeaderItems*: proc(
+      self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+
   IUIAutomationTogglePattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTogglePatternVtbl
+
   IUIAutomationTogglePatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Toggle*: proc(self: ptr IUIAutomationTogglePattern): HRESULT {.stdcall.}
-    get_CurrentToggleState*: proc(self: ptr IUIAutomationTogglePattern, retVal: ptr ToggleState): HRESULT {.stdcall.}
-    get_CachedToggleState*: proc(self: ptr IUIAutomationTogglePattern, retVal: ptr ToggleState): HRESULT {.stdcall.}
+    get_CurrentToggleState*: proc(
+      self: ptr IUIAutomationTogglePattern, retVal: ptr ToggleState
+    ): HRESULT {.stdcall.}
+    get_CachedToggleState*: proc(
+      self: ptr IUIAutomationTogglePattern, retVal: ptr ToggleState
+    ): HRESULT {.stdcall.}
+
   IUIAutomationTransformPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTransformPatternVtbl
+
   IUIAutomationTransformPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Move*: proc(self: ptr IUIAutomationTransformPattern, x: float64, y: float64): HRESULT {.stdcall.}
-    Resize*: proc(self: ptr IUIAutomationTransformPattern, width: float64, height: float64): HRESULT {.stdcall.}
-    Rotate*: proc(self: ptr IUIAutomationTransformPattern, degrees: float64): HRESULT {.stdcall.}
-    get_CurrentCanMove*: proc(self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentCanResize*: proc(self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentCanRotate*: proc(self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedCanMove*: proc(self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedCanResize*: proc(self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedCanRotate*: proc(self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    Move*: proc(
+      self: ptr IUIAutomationTransformPattern, x: float64, y: float64
+    ): HRESULT {.stdcall.}
+    Resize*: proc(
+      self: ptr IUIAutomationTransformPattern, width: float64, height: float64
+    ): HRESULT {.stdcall.}
+    Rotate*: proc(self: ptr IUIAutomationTransformPattern, degrees: float64): HRESULT {.
+      stdcall
+    .}
+    get_CurrentCanMove*: proc(
+      self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CurrentCanResize*: proc(
+      self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CurrentCanRotate*: proc(
+      self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CachedCanMove*: proc(
+      self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CachedCanResize*: proc(
+      self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CachedCanRotate*: proc(
+      self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+
   IUIAutomationValuePattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationValuePatternVtbl
+
   IUIAutomationValuePatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     SetValue*: proc(self: ptr IUIAutomationValuePattern, val: BSTR): HRESULT {.stdcall.}
-    get_CurrentValue*: proc(self: ptr IUIAutomationValuePattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentIsReadOnly*: proc(self: ptr IUIAutomationValuePattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedValue*: proc(self: ptr IUIAutomationValuePattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedIsReadOnly*: proc(self: ptr IUIAutomationValuePattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentValue*:
+      proc(self: ptr IUIAutomationValuePattern, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentIsReadOnly*:
+      proc(self: ptr IUIAutomationValuePattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedValue*:
+      proc(self: ptr IUIAutomationValuePattern, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedIsReadOnly*:
+      proc(self: ptr IUIAutomationValuePattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+
   IUIAutomationWindowPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationWindowPatternVtbl
+
   IUIAutomationWindowPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Close*: proc(self: ptr IUIAutomationWindowPattern): HRESULT {.stdcall.}
-    WaitForInputIdle*: proc(self: ptr IUIAutomationWindowPattern, milliseconds: int32, success: ptr BOOL): HRESULT {.stdcall.}
-    SetWindowVisualState*: proc(self: ptr IUIAutomationWindowPattern, state: WindowVisualState): HRESULT {.stdcall.}
-    get_CurrentCanMaximize*: proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentCanMinimize*: proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentIsModal*: proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentIsTopmost*: proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentWindowVisualState*: proc(self: ptr IUIAutomationWindowPattern, retVal: ptr WindowVisualState): HRESULT {.stdcall.}
-    get_CurrentWindowInteractionState*: proc(self: ptr IUIAutomationWindowPattern, retVal: ptr WindowInteractionState): HRESULT {.stdcall.}
-    get_CachedCanMaximize*: proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedCanMinimize*: proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedIsModal*: proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedIsTopmost*: proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedWindowVisualState*: proc(self: ptr IUIAutomationWindowPattern, retVal: ptr WindowVisualState): HRESULT {.stdcall.}
-    get_CachedWindowInteractionState*: proc(self: ptr IUIAutomationWindowPattern, retVal: ptr WindowInteractionState): HRESULT {.stdcall.}
+    WaitForInputIdle*: proc(
+      self: ptr IUIAutomationWindowPattern, milliseconds: int32, success: ptr BOOL
+    ): HRESULT {.stdcall.}
+    SetWindowVisualState*: proc(
+      self: ptr IUIAutomationWindowPattern, state: WindowVisualState
+    ): HRESULT {.stdcall.}
+    get_CurrentCanMaximize*:
+      proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentCanMinimize*:
+      proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentIsModal*:
+      proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentIsTopmost*:
+      proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentWindowVisualState*: proc(
+      self: ptr IUIAutomationWindowPattern, retVal: ptr WindowVisualState
+    ): HRESULT {.stdcall.}
+    get_CurrentWindowInteractionState*: proc(
+      self: ptr IUIAutomationWindowPattern, retVal: ptr WindowInteractionState
+    ): HRESULT {.stdcall.}
+    get_CachedCanMaximize*:
+      proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedCanMinimize*:
+      proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedIsModal*:
+      proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedIsTopmost*:
+      proc(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedWindowVisualState*: proc(
+      self: ptr IUIAutomationWindowPattern, retVal: ptr WindowVisualState
+    ): HRESULT {.stdcall.}
+    get_CachedWindowInteractionState*: proc(
+      self: ptr IUIAutomationWindowPattern, retVal: ptr WindowInteractionState
+    ): HRESULT {.stdcall.}
+
   IUIAutomationTextRange* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTextRangeVtbl
+
   IUIAutomationTextRangeVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Clone*: proc(self: ptr IUIAutomationTextRange, clonedRange: ptr ptr IUIAutomationTextRange): HRESULT {.stdcall.}
-    Compare*: proc(self: ptr IUIAutomationTextRange, range: ptr IUIAutomationTextRange, areSame: ptr BOOL): HRESULT {.stdcall.}
-    CompareEndpoints*: proc(self: ptr IUIAutomationTextRange, srcEndPoint: TextPatternRangeEndpoint, range: ptr IUIAutomationTextRange, targetEndPoint: TextPatternRangeEndpoint, compValue: ptr int32): HRESULT {.stdcall.}
-    ExpandToEnclosingUnit*: proc(self: ptr IUIAutomationTextRange, textUnit: TextUnit): HRESULT {.stdcall.}
-    FindAttribute*: proc(self: ptr IUIAutomationTextRange, attr: TEXTATTRIBUTEID, val: VARIANT, backward: BOOL, found: ptr ptr IUIAutomationTextRange): HRESULT {.stdcall.}
-    FindText*: proc(self: ptr IUIAutomationTextRange, text: BSTR, backward: BOOL, ignoreCase: BOOL, found: ptr ptr IUIAutomationTextRange): HRESULT {.stdcall.}
-    GetAttributeValue*: proc(self: ptr IUIAutomationTextRange, attr: TEXTATTRIBUTEID, value: ptr VARIANT): HRESULT {.stdcall.}
-    GetBoundingRectangles*: proc(self: ptr IUIAutomationTextRange, boundingRects: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetEnclosingElement*: proc(self: ptr IUIAutomationTextRange, enclosingElement: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetText*: proc(self: ptr IUIAutomationTextRange, maxLength: int32, text: ptr BSTR): HRESULT {.stdcall.}
-    Move*: proc(self: ptr IUIAutomationTextRange, unit: TextUnit, count: int32, moved: ptr int32): HRESULT {.stdcall.}
-    MoveEndpointByUnit*: proc(self: ptr IUIAutomationTextRange, endpoint: TextPatternRangeEndpoint, unit: TextUnit, count: int32, moved: ptr int32): HRESULT {.stdcall.}
-    MoveEndpointByRange*: proc(self: ptr IUIAutomationTextRange, srcEndPoint: TextPatternRangeEndpoint, range: ptr IUIAutomationTextRange, targetEndPoint: TextPatternRangeEndpoint): HRESULT {.stdcall.}
+    Clone*: proc(
+      self: ptr IUIAutomationTextRange, clonedRange: ptr ptr IUIAutomationTextRange
+    ): HRESULT {.stdcall.}
+    Compare*: proc(
+      self: ptr IUIAutomationTextRange,
+      range: ptr IUIAutomationTextRange,
+      areSame: ptr BOOL,
+    ): HRESULT {.stdcall.}
+    CompareEndpoints*: proc(
+      self: ptr IUIAutomationTextRange,
+      srcEndPoint: TextPatternRangeEndpoint,
+      range: ptr IUIAutomationTextRange,
+      targetEndPoint: TextPatternRangeEndpoint,
+      compValue: ptr int32,
+    ): HRESULT {.stdcall.}
+    ExpandToEnclosingUnit*:
+      proc(self: ptr IUIAutomationTextRange, textUnit: TextUnit): HRESULT {.stdcall.}
+    FindAttribute*: proc(
+      self: ptr IUIAutomationTextRange,
+      attr: TEXTATTRIBUTEID,
+      val: VARIANT,
+      backward: BOOL,
+      found: ptr ptr IUIAutomationTextRange,
+    ): HRESULT {.stdcall.}
+    FindText*: proc(
+      self: ptr IUIAutomationTextRange,
+      text: BSTR,
+      backward: BOOL,
+      ignoreCase: BOOL,
+      found: ptr ptr IUIAutomationTextRange,
+    ): HRESULT {.stdcall.}
+    GetAttributeValue*: proc(
+      self: ptr IUIAutomationTextRange, attr: TEXTATTRIBUTEID, value: ptr VARIANT
+    ): HRESULT {.stdcall.}
+    GetBoundingRectangles*: proc(
+      self: ptr IUIAutomationTextRange, boundingRects: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetEnclosingElement*: proc(
+      self: ptr IUIAutomationTextRange, enclosingElement: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    GetText*: proc(
+      self: ptr IUIAutomationTextRange, maxLength: int32, text: ptr BSTR
+    ): HRESULT {.stdcall.}
+    Move*: proc(
+      self: ptr IUIAutomationTextRange, unit: TextUnit, count: int32, moved: ptr int32
+    ): HRESULT {.stdcall.}
+    MoveEndpointByUnit*: proc(
+      self: ptr IUIAutomationTextRange,
+      endpoint: TextPatternRangeEndpoint,
+      unit: TextUnit,
+      count: int32,
+      moved: ptr int32,
+    ): HRESULT {.stdcall.}
+    MoveEndpointByRange*: proc(
+      self: ptr IUIAutomationTextRange,
+      srcEndPoint: TextPatternRangeEndpoint,
+      range: ptr IUIAutomationTextRange,
+      targetEndPoint: TextPatternRangeEndpoint,
+    ): HRESULT {.stdcall.}
     Select*: proc(self: ptr IUIAutomationTextRange): HRESULT {.stdcall.}
     AddToSelection*: proc(self: ptr IUIAutomationTextRange): HRESULT {.stdcall.}
     RemoveFromSelection*: proc(self: ptr IUIAutomationTextRange): HRESULT {.stdcall.}
-    ScrollIntoView*: proc(self: ptr IUIAutomationTextRange, alignToTop: BOOL): HRESULT {.stdcall.}
-    GetChildren*: proc(self: ptr IUIAutomationTextRange, children: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
+    ScrollIntoView*:
+      proc(self: ptr IUIAutomationTextRange, alignToTop: BOOL): HRESULT {.stdcall.}
+    GetChildren*: proc(
+      self: ptr IUIAutomationTextRange, children: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+
   IUIAutomationTextRange2* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTextRange2Vtbl
+
   IUIAutomationTextRange2Vtbl* {.pure, inheritable.} = object of IUIAutomationTextRangeVtbl
     ShowContextMenu*: proc(self: ptr IUIAutomationTextRange2): HRESULT {.stdcall.}
+
   IUIAutomationTextRange3* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTextRange3Vtbl
+
   IUIAutomationTextRange3Vtbl* {.pure, inheritable.} = object of IUIAutomationTextRange2Vtbl
-    GetEnclosingElementBuildCache*: proc(self: ptr IUIAutomationTextRange3, cacheRequest: ptr IUIAutomationCacheRequest, enclosingElement: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetChildrenBuildCache*: proc(self: ptr IUIAutomationTextRange3, cacheRequest: ptr IUIAutomationCacheRequest, children: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    GetAttributeValues*: proc(self: ptr IUIAutomationTextRange3, attributeIds: ptr TEXTATTRIBUTEID, attributeIdCount: int32, attributeValues: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    GetEnclosingElementBuildCache*: proc(
+      self: ptr IUIAutomationTextRange3,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      enclosingElement: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    GetChildrenBuildCache*: proc(
+      self: ptr IUIAutomationTextRange3,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      children: ptr ptr IUIAutomationElementArray,
+    ): HRESULT {.stdcall.}
+    GetAttributeValues*: proc(
+      self: ptr IUIAutomationTextRange3,
+      attributeIds: ptr TEXTATTRIBUTEID,
+      attributeIdCount: int32,
+      attributeValues: ptr ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationTextRangeArray* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTextRangeArrayVtbl
+
   IUIAutomationTextRangeArrayVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_Length*: proc(self: ptr IUIAutomationTextRangeArray, length: ptr int32): HRESULT {.stdcall.}
-    GetElement*: proc(self: ptr IUIAutomationTextRangeArray, index: int32, element: ptr ptr IUIAutomationTextRange): HRESULT {.stdcall.}
+    get_Length*: proc(self: ptr IUIAutomationTextRangeArray, length: ptr int32): HRESULT {.
+      stdcall
+    .}
+    GetElement*: proc(
+      self: ptr IUIAutomationTextRangeArray,
+      index: int32,
+      element: ptr ptr IUIAutomationTextRange,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationTextPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTextPatternVtbl
+
   IUIAutomationTextPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    RangeFromPoint*: proc(self: ptr IUIAutomationTextPattern, pt: POINT, range: ptr ptr IUIAutomationTextRange): HRESULT {.stdcall.}
-    RangeFromChild*: proc(self: ptr IUIAutomationTextPattern, child: ptr IUIAutomationElement, range: ptr ptr IUIAutomationTextRange): HRESULT {.stdcall.}
-    GetSelection*: proc(self: ptr IUIAutomationTextPattern, ranges: ptr ptr IUIAutomationTextRangeArray): HRESULT {.stdcall.}
-    GetVisibleRanges*: proc(self: ptr IUIAutomationTextPattern, ranges: ptr ptr IUIAutomationTextRangeArray): HRESULT {.stdcall.}
-    get_DocumentRange*: proc(self: ptr IUIAutomationTextPattern, range: ptr ptr IUIAutomationTextRange): HRESULT {.stdcall.}
-    get_SupportedTextSelection*: proc(self: ptr IUIAutomationTextPattern, supportedTextSelection: ptr SupportedTextSelection): HRESULT {.stdcall.}
+    RangeFromPoint*: proc(
+      self: ptr IUIAutomationTextPattern,
+      pt: POINT,
+      range: ptr ptr IUIAutomationTextRange,
+    ): HRESULT {.stdcall.}
+    RangeFromChild*: proc(
+      self: ptr IUIAutomationTextPattern,
+      child: ptr IUIAutomationElement,
+      range: ptr ptr IUIAutomationTextRange,
+    ): HRESULT {.stdcall.}
+    GetSelection*: proc(
+      self: ptr IUIAutomationTextPattern, ranges: ptr ptr IUIAutomationTextRangeArray
+    ): HRESULT {.stdcall.}
+    GetVisibleRanges*: proc(
+      self: ptr IUIAutomationTextPattern, ranges: ptr ptr IUIAutomationTextRangeArray
+    ): HRESULT {.stdcall.}
+    get_DocumentRange*: proc(
+      self: ptr IUIAutomationTextPattern, range: ptr ptr IUIAutomationTextRange
+    ): HRESULT {.stdcall.}
+    get_SupportedTextSelection*: proc(
+      self: ptr IUIAutomationTextPattern,
+      supportedTextSelection: ptr SupportedTextSelection,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationTextPattern2* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTextPattern2Vtbl
+
   IUIAutomationTextPattern2Vtbl* {.pure, inheritable.} = object of IUIAutomationTextPatternVtbl
-    RangeFromAnnotation*: proc(self: ptr IUIAutomationTextPattern2, annotation: ptr IUIAutomationElement, range: ptr ptr IUIAutomationTextRange): HRESULT {.stdcall.}
-    GetCaretRange*: proc(self: ptr IUIAutomationTextPattern2, isActive: ptr BOOL, range: ptr ptr IUIAutomationTextRange): HRESULT {.stdcall.}
+    RangeFromAnnotation*: proc(
+      self: ptr IUIAutomationTextPattern2,
+      annotation: ptr IUIAutomationElement,
+      range: ptr ptr IUIAutomationTextRange,
+    ): HRESULT {.stdcall.}
+    GetCaretRange*: proc(
+      self: ptr IUIAutomationTextPattern2,
+      isActive: ptr BOOL,
+      range: ptr ptr IUIAutomationTextRange,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationTextEditPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTextEditPatternVtbl
+
   IUIAutomationTextEditPatternVtbl* {.pure, inheritable.} = object of IUIAutomationTextPatternVtbl
-    GetActiveComposition*: proc(self: ptr IUIAutomationTextEditPattern, range: ptr ptr IUIAutomationTextRange): HRESULT {.stdcall.}
-    GetConversionTarget*: proc(self: ptr IUIAutomationTextEditPattern, range: ptr ptr IUIAutomationTextRange): HRESULT {.stdcall.}
+    GetActiveComposition*: proc(
+      self: ptr IUIAutomationTextEditPattern, range: ptr ptr IUIAutomationTextRange
+    ): HRESULT {.stdcall.}
+    GetConversionTarget*: proc(
+      self: ptr IUIAutomationTextEditPattern, range: ptr ptr IUIAutomationTextRange
+    ): HRESULT {.stdcall.}
+
   IUIAutomationCustomNavigationPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationCustomNavigationPatternVtbl
+
   IUIAutomationCustomNavigationPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Navigate*: proc(self: ptr IUIAutomationCustomNavigationPattern, direction: NavigateDirection, pRetVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
+    Navigate*: proc(
+      self: ptr IUIAutomationCustomNavigationPattern,
+      direction: NavigateDirection,
+      pRetVal: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationActiveTextPositionChangedEventHandler* {.pure.} = object
     lpVtbl*: ptr IUIAutomationActiveTextPositionChangedEventHandlerVtbl
+
   IUIAutomationActiveTextPositionChangedEventHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    HandleActiveTextPositionChangedEvent*: proc(self: ptr IUIAutomationActiveTextPositionChangedEventHandler, sender: ptr IUIAutomationElement, range: ptr IUIAutomationTextRange): HRESULT {.stdcall.}
+    HandleActiveTextPositionChangedEvent*: proc(
+      self: ptr IUIAutomationActiveTextPositionChangedEventHandler,
+      sender: ptr IUIAutomationElement,
+      range: ptr IUIAutomationTextRange,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationLegacyIAccessiblePattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationLegacyIAccessiblePatternVtbl
+
   IUIAutomationLegacyIAccessiblePatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Select*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, flagsSelect: int32): HRESULT {.stdcall.}
-    DoDefaultAction*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern): HRESULT {.stdcall.}
-    SetValue*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, szValue: LPCWSTR): HRESULT {.stdcall.}
-    get_CurrentChildId*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pRetVal: ptr int32): HRESULT {.stdcall.}
-    get_CurrentName*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pszName: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentValue*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pszValue: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentDescription*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pszDescription: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentRole*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pdwRole: ptr DWORD): HRESULT {.stdcall.}
-    get_CurrentState*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pdwState: ptr DWORD): HRESULT {.stdcall.}
-    get_CurrentHelp*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pszHelp: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentKeyboardShortcut*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pszKeyboardShortcut: ptr BSTR): HRESULT {.stdcall.}
-    GetCurrentSelection*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pvarSelectedChildren: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CurrentDefaultAction*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pszDefaultAction: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedChildId*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pRetVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedName*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pszName: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedValue*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pszValue: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedDescription*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pszDescription: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedRole*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pdwRole: ptr DWORD): HRESULT {.stdcall.}
-    get_CachedState*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pdwState: ptr DWORD): HRESULT {.stdcall.}
-    get_CachedHelp*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pszHelp: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedKeyboardShortcut*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pszKeyboardShortcut: ptr BSTR): HRESULT {.stdcall.}
-    GetCachedSelection*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pvarSelectedChildren: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CachedDefaultAction*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, pszDefaultAction: ptr BSTR): HRESULT {.stdcall.}
-    GetIAccessible*: proc(self: ptr IUIAutomationLegacyIAccessiblePattern, ppAccessible: ptr ptr IAccessible): HRESULT {.stdcall.}
+    Select*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, flagsSelect: int32
+    ): HRESULT {.stdcall.}
+    DoDefaultAction*:
+      proc(self: ptr IUIAutomationLegacyIAccessiblePattern): HRESULT {.stdcall.}
+    SetValue*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, szValue: LPCWSTR
+    ): HRESULT {.stdcall.}
+    get_CurrentChildId*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pRetVal: ptr int32
+    ): HRESULT {.stdcall.}
+    get_CurrentName*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pszName: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CurrentValue*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pszValue: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CurrentDescription*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pszDescription: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CurrentRole*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pdwRole: ptr DWORD
+    ): HRESULT {.stdcall.}
+    get_CurrentState*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pdwState: ptr DWORD
+    ): HRESULT {.stdcall.}
+    get_CurrentHelp*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pszHelp: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CurrentKeyboardShortcut*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pszKeyboardShortcut: ptr BSTR
+    ): HRESULT {.stdcall.}
+    GetCurrentSelection*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern,
+      pvarSelectedChildren: ptr ptr IUIAutomationElementArray,
+    ): HRESULT {.stdcall.}
+    get_CurrentDefaultAction*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pszDefaultAction: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CachedChildId*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pRetVal: ptr int32
+    ): HRESULT {.stdcall.}
+    get_CachedName*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pszName: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CachedValue*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pszValue: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CachedDescription*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pszDescription: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CachedRole*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pdwRole: ptr DWORD
+    ): HRESULT {.stdcall.}
+    get_CachedState*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pdwState: ptr DWORD
+    ): HRESULT {.stdcall.}
+    get_CachedHelp*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pszHelp: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CachedKeyboardShortcut*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pszKeyboardShortcut: ptr BSTR
+    ): HRESULT {.stdcall.}
+    GetCachedSelection*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern,
+      pvarSelectedChildren: ptr ptr IUIAutomationElementArray,
+    ): HRESULT {.stdcall.}
+    get_CachedDefaultAction*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, pszDefaultAction: ptr BSTR
+    ): HRESULT {.stdcall.}
+    GetIAccessible*: proc(
+      self: ptr IUIAutomationLegacyIAccessiblePattern, ppAccessible: ptr ptr IAccessible
+    ): HRESULT {.stdcall.}
+
   IUIAutomationItemContainerPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationItemContainerPatternVtbl
+
   IUIAutomationItemContainerPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    FindItemByProperty*: proc(self: ptr IUIAutomationItemContainerPattern, pStartAfter: ptr IUIAutomationElement, propertyId: PROPERTYID, value: VARIANT, pFound: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
+    FindItemByProperty*: proc(
+      self: ptr IUIAutomationItemContainerPattern,
+      pStartAfter: ptr IUIAutomationElement,
+      propertyId: PROPERTYID,
+      value: VARIANT,
+      pFound: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationVirtualizedItemPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationVirtualizedItemPatternVtbl
+
   IUIAutomationVirtualizedItemPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Realize*: proc(self: ptr IUIAutomationVirtualizedItemPattern): HRESULT {.stdcall.}
+
   IUIAutomationAnnotationPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationAnnotationPatternVtbl
+
   IUIAutomationAnnotationPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_CurrentAnnotationTypeId*: proc(self: ptr IUIAutomationAnnotationPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CurrentAnnotationTypeName*: proc(self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentAuthor*: proc(self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentDateTime*: proc(self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentTarget*: proc(self: ptr IUIAutomationAnnotationPattern, retVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_CachedAnnotationTypeId*: proc(self: ptr IUIAutomationAnnotationPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedAnnotationTypeName*: proc(self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedAuthor*: proc(self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedDateTime*: proc(self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedTarget*: proc(self: ptr IUIAutomationAnnotationPattern, retVal: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
+    get_CurrentAnnotationTypeId*: proc(
+      self: ptr IUIAutomationAnnotationPattern, retVal: ptr int32
+    ): HRESULT {.stdcall.}
+    get_CurrentAnnotationTypeName*: proc(
+      self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CurrentAuthor*: proc(
+      self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CurrentDateTime*: proc(
+      self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CurrentTarget*: proc(
+      self: ptr IUIAutomationAnnotationPattern, retVal: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    get_CachedAnnotationTypeId*: proc(
+      self: ptr IUIAutomationAnnotationPattern, retVal: ptr int32
+    ): HRESULT {.stdcall.}
+    get_CachedAnnotationTypeName*: proc(
+      self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CachedAuthor*: proc(
+      self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CachedDateTime*: proc(
+      self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CachedTarget*: proc(
+      self: ptr IUIAutomationAnnotationPattern, retVal: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+
   IUIAutomationStylesPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationStylesPatternVtbl
+
   IUIAutomationStylesPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_CurrentStyleId*: proc(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CurrentStyleName*: proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentFillColor*: proc(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CurrentFillPatternStyle*: proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentShape*: proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentFillPatternColor*: proc(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CurrentExtendedProperties*: proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    GetCurrentExtendedPropertiesAsArray*: proc(self: ptr IUIAutomationStylesPattern, propertyArray: ptr ptr TExtendedProperty, propertyCount: ptr int32): HRESULT {.stdcall.}
-    get_CachedStyleId*: proc(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedStyleName*: proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedFillColor*: proc(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedFillPatternStyle*: proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedShape*: proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedFillPatternColor*: proc(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedExtendedProperties*: proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    GetCachedExtendedPropertiesAsArray*: proc(self: ptr IUIAutomationStylesPattern, propertyArray: ptr ptr TExtendedProperty, propertyCount: ptr int32): HRESULT {.stdcall.}
+    get_CurrentStyleId*:
+      proc(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CurrentStyleName*:
+      proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentFillColor*:
+      proc(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CurrentFillPatternStyle*:
+      proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentShape*:
+      proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentFillPatternColor*:
+      proc(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CurrentExtendedProperties*:
+      proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
+    GetCurrentExtendedPropertiesAsArray*: proc(
+      self: ptr IUIAutomationStylesPattern,
+      propertyArray: ptr ptr TExtendedProperty,
+      propertyCount: ptr int32,
+    ): HRESULT {.stdcall.}
+    get_CachedStyleId*:
+      proc(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CachedStyleName*:
+      proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedFillColor*:
+      proc(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CachedFillPatternStyle*:
+      proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedShape*:
+      proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedFillPatternColor*:
+      proc(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CachedExtendedProperties*:
+      proc(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
+    GetCachedExtendedPropertiesAsArray*: proc(
+      self: ptr IUIAutomationStylesPattern,
+      propertyArray: ptr ptr TExtendedProperty,
+      propertyCount: ptr int32,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationSpreadsheetPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationSpreadsheetPatternVtbl
+
   IUIAutomationSpreadsheetPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetItemByName*: proc(self: ptr IUIAutomationSpreadsheetPattern, name: BSTR, element: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
+    GetItemByName*: proc(
+      self: ptr IUIAutomationSpreadsheetPattern,
+      name: BSTR,
+      element: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationSpreadsheetItemPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationSpreadsheetItemPatternVtbl
+
   IUIAutomationSpreadsheetItemPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_CurrentFormula*: proc(self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    GetCurrentAnnotationObjects*: proc(self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    GetCurrentAnnotationTypes*: proc(self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    get_CachedFormula*: proc(self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    GetCachedAnnotationObjects*: proc(self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    GetCachedAnnotationTypes*: proc(self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    get_CurrentFormula*: proc(
+      self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr BSTR
+    ): HRESULT {.stdcall.}
+    GetCurrentAnnotationObjects*: proc(
+      self: ptr IUIAutomationSpreadsheetItemPattern,
+      retVal: ptr ptr IUIAutomationElementArray,
+    ): HRESULT {.stdcall.}
+    GetCurrentAnnotationTypes*: proc(
+      self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    get_CachedFormula*: proc(
+      self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr BSTR
+    ): HRESULT {.stdcall.}
+    GetCachedAnnotationObjects*: proc(
+      self: ptr IUIAutomationSpreadsheetItemPattern,
+      retVal: ptr ptr IUIAutomationElementArray,
+    ): HRESULT {.stdcall.}
+    GetCachedAnnotationTypes*: proc(
+      self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+
   IUIAutomationTransformPattern2* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTransformPattern2Vtbl
+
   IUIAutomationTransformPattern2Vtbl* {.pure, inheritable.} = object of IUIAutomationTransformPatternVtbl
-    Zoom*: proc(self: ptr IUIAutomationTransformPattern2, zoomValue: float64): HRESULT {.stdcall.}
-    ZoomByUnit*: proc(self: ptr IUIAutomationTransformPattern2, zoomUnit: ZoomUnit): HRESULT {.stdcall.}
-    get_CurrentCanZoom*: proc(self: ptr IUIAutomationTransformPattern2, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedCanZoom*: proc(self: ptr IUIAutomationTransformPattern2, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentZoomLevel*: proc(self: ptr IUIAutomationTransformPattern2, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CachedZoomLevel*: proc(self: ptr IUIAutomationTransformPattern2, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CurrentZoomMinimum*: proc(self: ptr IUIAutomationTransformPattern2, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CachedZoomMinimum*: proc(self: ptr IUIAutomationTransformPattern2, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CurrentZoomMaximum*: proc(self: ptr IUIAutomationTransformPattern2, retVal: ptr float64): HRESULT {.stdcall.}
-    get_CachedZoomMaximum*: proc(self: ptr IUIAutomationTransformPattern2, retVal: ptr float64): HRESULT {.stdcall.}
+    Zoom*: proc(self: ptr IUIAutomationTransformPattern2, zoomValue: float64): HRESULT {.
+      stdcall
+    .}
+    ZoomByUnit*: proc(
+      self: ptr IUIAutomationTransformPattern2, zoomUnit: ZoomUnit
+    ): HRESULT {.stdcall.}
+    get_CurrentCanZoom*: proc(
+      self: ptr IUIAutomationTransformPattern2, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CachedCanZoom*: proc(
+      self: ptr IUIAutomationTransformPattern2, retVal: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CurrentZoomLevel*: proc(
+      self: ptr IUIAutomationTransformPattern2, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CachedZoomLevel*: proc(
+      self: ptr IUIAutomationTransformPattern2, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CurrentZoomMinimum*: proc(
+      self: ptr IUIAutomationTransformPattern2, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CachedZoomMinimum*: proc(
+      self: ptr IUIAutomationTransformPattern2, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CurrentZoomMaximum*: proc(
+      self: ptr IUIAutomationTransformPattern2, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+    get_CachedZoomMaximum*: proc(
+      self: ptr IUIAutomationTransformPattern2, retVal: ptr float64
+    ): HRESULT {.stdcall.}
+
   IUIAutomationTextChildPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationTextChildPatternVtbl
+
   IUIAutomationTextChildPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_TextContainer*: proc(self: ptr IUIAutomationTextChildPattern, container: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    get_TextRange*: proc(self: ptr IUIAutomationTextChildPattern, range: ptr ptr IUIAutomationTextRange): HRESULT {.stdcall.}
+    get_TextContainer*: proc(
+      self: ptr IUIAutomationTextChildPattern, container: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    get_TextRange*: proc(
+      self: ptr IUIAutomationTextChildPattern, range: ptr ptr IUIAutomationTextRange
+    ): HRESULT {.stdcall.}
+
   IUIAutomationDragPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationDragPatternVtbl
+
   IUIAutomationDragPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_CurrentIsGrabbed*: proc(self: ptr IUIAutomationDragPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedIsGrabbed*: proc(self: ptr IUIAutomationDragPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentDropEffect*: proc(self: ptr IUIAutomationDragPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedDropEffect*: proc(self: ptr IUIAutomationDragPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentDropEffects*: proc(self: ptr IUIAutomationDragPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    get_CachedDropEffects*: proc(self: ptr IUIAutomationDragPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetCurrentGrabbedItems*: proc(self: ptr IUIAutomationDragPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    GetCachedGrabbedItems*: proc(self: ptr IUIAutomationDragPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
+    get_CurrentIsGrabbed*:
+      proc(self: ptr IUIAutomationDragPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedIsGrabbed*:
+      proc(self: ptr IUIAutomationDragPattern, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentDropEffect*:
+      proc(self: ptr IUIAutomationDragPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedDropEffect*:
+      proc(self: ptr IUIAutomationDragPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentDropEffects*: proc(
+      self: ptr IUIAutomationDragPattern, retVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    get_CachedDropEffects*: proc(
+      self: ptr IUIAutomationDragPattern, retVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetCurrentGrabbedItems*: proc(
+      self: ptr IUIAutomationDragPattern, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    GetCachedGrabbedItems*: proc(
+      self: ptr IUIAutomationDragPattern, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+
   IUIAutomationDropTargetPattern* {.pure.} = object
     lpVtbl*: ptr IUIAutomationDropTargetPatternVtbl
+
   IUIAutomationDropTargetPatternVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_CurrentDropTargetEffect*: proc(self: ptr IUIAutomationDropTargetPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedDropTargetEffect*: proc(self: ptr IUIAutomationDropTargetPattern, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CurrentDropTargetEffects*: proc(self: ptr IUIAutomationDropTargetPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    get_CachedDropTargetEffects*: proc(self: ptr IUIAutomationDropTargetPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    get_CurrentDropTargetEffect*: proc(
+      self: ptr IUIAutomationDropTargetPattern, retVal: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CachedDropTargetEffect*: proc(
+      self: ptr IUIAutomationDropTargetPattern, retVal: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_CurrentDropTargetEffects*: proc(
+      self: ptr IUIAutomationDropTargetPattern, retVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    get_CachedDropTargetEffects*: proc(
+      self: ptr IUIAutomationDropTargetPattern, retVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+
   IUIAutomationElement2* {.pure.} = object
     lpVtbl*: ptr IUIAutomationElement2Vtbl
+
   IUIAutomationElement2Vtbl* {.pure, inheritable.} = object of IUIAutomationElementVtbl
-    get_CurrentOptimizeForVisualContent*: proc(self: ptr IUIAutomationElement2, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedOptimizeForVisualContent*: proc(self: ptr IUIAutomationElement2, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CurrentLiveSetting*: proc(self: ptr IUIAutomationElement2, retVal: ptr LiveSetting): HRESULT {.stdcall.}
-    get_CachedLiveSetting*: proc(self: ptr IUIAutomationElement2, retVal: ptr LiveSetting): HRESULT {.stdcall.}
-    get_CurrentFlowsFrom*: proc(self: ptr IUIAutomationElement2, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CachedFlowsFrom*: proc(self: ptr IUIAutomationElement2, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
+    get_CurrentOptimizeForVisualContent*:
+      proc(self: ptr IUIAutomationElement2, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedOptimizeForVisualContent*:
+      proc(self: ptr IUIAutomationElement2, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentLiveSetting*: proc(
+      self: ptr IUIAutomationElement2, retVal: ptr LiveSetting
+    ): HRESULT {.stdcall.}
+    get_CachedLiveSetting*: proc(
+      self: ptr IUIAutomationElement2, retVal: ptr LiveSetting
+    ): HRESULT {.stdcall.}
+    get_CurrentFlowsFrom*: proc(
+      self: ptr IUIAutomationElement2, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    get_CachedFlowsFrom*: proc(
+      self: ptr IUIAutomationElement2, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+
   IUIAutomationElement3* {.pure.} = object
     lpVtbl*: ptr IUIAutomationElement3Vtbl
+
   IUIAutomationElement3Vtbl* {.pure, inheritable.} = object of IUIAutomationElement2Vtbl
     ShowContextMenu*: proc(self: ptr IUIAutomationElement3): HRESULT {.stdcall.}
-    get_CurrentIsPeripheral*: proc(self: ptr IUIAutomationElement3, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedIsPeripheral*: proc(self: ptr IUIAutomationElement3, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentIsPeripheral*:
+      proc(self: ptr IUIAutomationElement3, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedIsPeripheral*:
+      proc(self: ptr IUIAutomationElement3, retVal: ptr BOOL): HRESULT {.stdcall.}
+
   IUIAutomationElement4* {.pure.} = object
     lpVtbl*: ptr IUIAutomationElement4Vtbl
+
   IUIAutomationElement4Vtbl* {.pure, inheritable.} = object of IUIAutomationElement3Vtbl
-    get_CurrentPositionInSet*: proc(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CurrentSizeOfSet*: proc(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CurrentLevel*: proc(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CurrentAnnotationTypes*: proc(self: ptr IUIAutomationElement4, retVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    get_CurrentAnnotationObjects*: proc(self: ptr IUIAutomationElement4, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    get_CachedPositionInSet*: proc(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedSizeOfSet*: proc(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedLevel*: proc(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.stdcall.}
-    get_CachedAnnotationTypes*: proc(self: ptr IUIAutomationElement4, retVal: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    get_CachedAnnotationObjects*: proc(self: ptr IUIAutomationElement4, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
+    get_CurrentPositionInSet*:
+      proc(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CurrentSizeOfSet*:
+      proc(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CurrentLevel*:
+      proc(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CurrentAnnotationTypes*: proc(
+      self: ptr IUIAutomationElement4, retVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    get_CurrentAnnotationObjects*: proc(
+      self: ptr IUIAutomationElement4, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+    get_CachedPositionInSet*:
+      proc(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CachedSizeOfSet*:
+      proc(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CachedLevel*:
+      proc(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.stdcall.}
+    get_CachedAnnotationTypes*: proc(
+      self: ptr IUIAutomationElement4, retVal: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    get_CachedAnnotationObjects*: proc(
+      self: ptr IUIAutomationElement4, retVal: ptr ptr IUIAutomationElementArray
+    ): HRESULT {.stdcall.}
+
   IUIAutomationElement5* {.pure.} = object
     lpVtbl*: ptr IUIAutomationElement5Vtbl
+
   IUIAutomationElement5Vtbl* {.pure, inheritable.} = object of IUIAutomationElement4Vtbl
-    get_CurrentLandmarkType*: proc(self: ptr IUIAutomationElement5, retVal: ptr LANDMARKTYPEID): HRESULT {.stdcall.}
-    get_CurrentLocalizedLandmarkType*: proc(self: ptr IUIAutomationElement5, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedLandmarkType*: proc(self: ptr IUIAutomationElement5, retVal: ptr LANDMARKTYPEID): HRESULT {.stdcall.}
-    get_CachedLocalizedLandmarkType*: proc(self: ptr IUIAutomationElement5, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentLandmarkType*: proc(
+      self: ptr IUIAutomationElement5, retVal: ptr LANDMARKTYPEID
+    ): HRESULT {.stdcall.}
+    get_CurrentLocalizedLandmarkType*:
+      proc(self: ptr IUIAutomationElement5, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedLandmarkType*: proc(
+      self: ptr IUIAutomationElement5, retVal: ptr LANDMARKTYPEID
+    ): HRESULT {.stdcall.}
+    get_CachedLocalizedLandmarkType*:
+      proc(self: ptr IUIAutomationElement5, retVal: ptr BSTR): HRESULT {.stdcall.}
+
   IUIAutomationElement6* {.pure.} = object
     lpVtbl*: ptr IUIAutomationElement6Vtbl
+
   IUIAutomationElement6Vtbl* {.pure, inheritable.} = object of IUIAutomationElement5Vtbl
-    get_CurrentFullDescription*: proc(self: ptr IUIAutomationElement6, retVal: ptr BSTR): HRESULT {.stdcall.}
-    get_CachedFullDescription*: proc(self: ptr IUIAutomationElement6, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CurrentFullDescription*:
+      proc(self: ptr IUIAutomationElement6, retVal: ptr BSTR): HRESULT {.stdcall.}
+    get_CachedFullDescription*:
+      proc(self: ptr IUIAutomationElement6, retVal: ptr BSTR): HRESULT {.stdcall.}
+
   IUIAutomationElement7* {.pure.} = object
     lpVtbl*: ptr IUIAutomationElement7Vtbl
+
   IUIAutomationElement7Vtbl* {.pure, inheritable.} = object of IUIAutomationElement6Vtbl
-    FindFirstWithOptions*: proc(self: ptr IUIAutomationElement7, scope: TreeScope, condition: ptr IUIAutomationCondition, traversalOptions: TreeTraversalOptions, root: ptr IUIAutomationElement, found: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    FindAllWithOptions*: proc(self: ptr IUIAutomationElement7, scope: TreeScope, condition: ptr IUIAutomationCondition, traversalOptions: TreeTraversalOptions, root: ptr IUIAutomationElement, found: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    FindFirstWithOptionsBuildCache*: proc(self: ptr IUIAutomationElement7, scope: TreeScope, condition: ptr IUIAutomationCondition, cacheRequest: ptr IUIAutomationCacheRequest, traversalOptions: TreeTraversalOptions, root: ptr IUIAutomationElement, found: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    FindAllWithOptionsBuildCache*: proc(self: ptr IUIAutomationElement7, scope: TreeScope, condition: ptr IUIAutomationCondition, cacheRequest: ptr IUIAutomationCacheRequest, traversalOptions: TreeTraversalOptions, root: ptr IUIAutomationElement, found: ptr ptr IUIAutomationElementArray): HRESULT {.stdcall.}
-    GetCurrentMetadataValue*: proc(self: ptr IUIAutomationElement7, targetId: int32, metadataId: METADATAID, returnVal: ptr VARIANT): HRESULT {.stdcall.}
+    FindFirstWithOptions*: proc(
+      self: ptr IUIAutomationElement7,
+      scope: TreeScope,
+      condition: ptr IUIAutomationCondition,
+      traversalOptions: TreeTraversalOptions,
+      root: ptr IUIAutomationElement,
+      found: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    FindAllWithOptions*: proc(
+      self: ptr IUIAutomationElement7,
+      scope: TreeScope,
+      condition: ptr IUIAutomationCondition,
+      traversalOptions: TreeTraversalOptions,
+      root: ptr IUIAutomationElement,
+      found: ptr ptr IUIAutomationElementArray,
+    ): HRESULT {.stdcall.}
+    FindFirstWithOptionsBuildCache*: proc(
+      self: ptr IUIAutomationElement7,
+      scope: TreeScope,
+      condition: ptr IUIAutomationCondition,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      traversalOptions: TreeTraversalOptions,
+      root: ptr IUIAutomationElement,
+      found: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    FindAllWithOptionsBuildCache*: proc(
+      self: ptr IUIAutomationElement7,
+      scope: TreeScope,
+      condition: ptr IUIAutomationCondition,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      traversalOptions: TreeTraversalOptions,
+      root: ptr IUIAutomationElement,
+      found: ptr ptr IUIAutomationElementArray,
+    ): HRESULT {.stdcall.}
+    GetCurrentMetadataValue*: proc(
+      self: ptr IUIAutomationElement7,
+      targetId: int32,
+      metadataId: METADATAID,
+      returnVal: ptr VARIANT,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationElement8* {.pure.} = object
     lpVtbl*: ptr IUIAutomationElement8Vtbl
+
   IUIAutomationElement8Vtbl* {.pure, inheritable.} = object of IUIAutomationElement7Vtbl
-    get_CurrentHeadingLevel*: proc(self: ptr IUIAutomationElement8, retVal: ptr HEADINGLEVELID): HRESULT {.stdcall.}
-    get_CachedHeadingLevel*: proc(self: ptr IUIAutomationElement8, retVal: ptr HEADINGLEVELID): HRESULT {.stdcall.}
+    get_CurrentHeadingLevel*: proc(
+      self: ptr IUIAutomationElement8, retVal: ptr HEADINGLEVELID
+    ): HRESULT {.stdcall.}
+    get_CachedHeadingLevel*: proc(
+      self: ptr IUIAutomationElement8, retVal: ptr HEADINGLEVELID
+    ): HRESULT {.stdcall.}
+
   IUIAutomationElement9* {.pure.} = object
     lpVtbl*: ptr IUIAutomationElement9Vtbl
+
   IUIAutomationElement9Vtbl* {.pure, inheritable.} = object of IUIAutomationElement8Vtbl
-    get_CurrentIsDialog*: proc(self: ptr IUIAutomationElement9, retVal: ptr BOOL): HRESULT {.stdcall.}
-    get_CachedIsDialog*: proc(self: ptr IUIAutomationElement9, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CurrentIsDialog*:
+      proc(self: ptr IUIAutomationElement9, retVal: ptr BOOL): HRESULT {.stdcall.}
+    get_CachedIsDialog*:
+      proc(self: ptr IUIAutomationElement9, retVal: ptr BOOL): HRESULT {.stdcall.}
+
   IUIAutomationProxyFactory* {.pure.} = object
     lpVtbl*: ptr IUIAutomationProxyFactoryVtbl
+
   IUIAutomationProxyFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateProvider*: proc(self: ptr IUIAutomationProxyFactory, hwnd: UIA_HWND, idObject: LONG, idChild: LONG, provider: ptr ptr IRawElementProviderSimple): HRESULT {.stdcall.}
-    get_ProxyFactoryId*: proc(self: ptr IUIAutomationProxyFactory, factoryId: ptr BSTR): HRESULT {.stdcall.}
+    CreateProvider*: proc(
+      self: ptr IUIAutomationProxyFactory,
+      hwnd: UIA_HWND,
+      idObject: LONG,
+      idChild: LONG,
+      provider: ptr ptr IRawElementProviderSimple,
+    ): HRESULT {.stdcall.}
+    get_ProxyFactoryId*: proc(
+      self: ptr IUIAutomationProxyFactory, factoryId: ptr BSTR
+    ): HRESULT {.stdcall.}
+
   IUIAutomationProxyFactoryEntry* {.pure.} = object
     lpVtbl*: ptr IUIAutomationProxyFactoryEntryVtbl
+
   IUIAutomationProxyFactoryEntryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_ProxyFactory*: proc(self: ptr IUIAutomationProxyFactoryEntry, factory: ptr ptr IUIAutomationProxyFactory): HRESULT {.stdcall.}
-    get_ClassName*: proc(self: ptr IUIAutomationProxyFactoryEntry, className: ptr BSTR): HRESULT {.stdcall.}
-    get_ImageName*: proc(self: ptr IUIAutomationProxyFactoryEntry, imageName: ptr BSTR): HRESULT {.stdcall.}
-    get_AllowSubstringMatch*: proc(self: ptr IUIAutomationProxyFactoryEntry, allowSubstringMatch: ptr BOOL): HRESULT {.stdcall.}
-    get_CanCheckBaseClass*: proc(self: ptr IUIAutomationProxyFactoryEntry, canCheckBaseClass: ptr BOOL): HRESULT {.stdcall.}
-    get_NeedsAdviseEvents*: proc(self: ptr IUIAutomationProxyFactoryEntry, adviseEvents: ptr BOOL): HRESULT {.stdcall.}
-    put_ClassName*: proc(self: ptr IUIAutomationProxyFactoryEntry, className: LPCWSTR): HRESULT {.stdcall.}
-    put_ImageName*: proc(self: ptr IUIAutomationProxyFactoryEntry, imageName: LPCWSTR): HRESULT {.stdcall.}
-    put_AllowSubstringMatch*: proc(self: ptr IUIAutomationProxyFactoryEntry, allowSubstringMatch: BOOL): HRESULT {.stdcall.}
-    put_CanCheckBaseClass*: proc(self: ptr IUIAutomationProxyFactoryEntry, canCheckBaseClass: BOOL): HRESULT {.stdcall.}
-    put_NeedsAdviseEvents*: proc(self: ptr IUIAutomationProxyFactoryEntry, adviseEvents: BOOL): HRESULT {.stdcall.}
-    SetWinEventsForAutomationEvent*: proc(self: ptr IUIAutomationProxyFactoryEntry, eventId: EVENTID, propertyId: PROPERTYID, winEvents: ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetWinEventsForAutomationEvent*: proc(self: ptr IUIAutomationProxyFactoryEntry, eventId: EVENTID, propertyId: PROPERTYID, winEvents: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
+    get_ProxyFactory*: proc(
+      self: ptr IUIAutomationProxyFactoryEntry,
+      factory: ptr ptr IUIAutomationProxyFactory,
+    ): HRESULT {.stdcall.}
+    get_ClassName*: proc(
+      self: ptr IUIAutomationProxyFactoryEntry, className: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_ImageName*: proc(
+      self: ptr IUIAutomationProxyFactoryEntry, imageName: ptr BSTR
+    ): HRESULT {.stdcall.}
+    get_AllowSubstringMatch*: proc(
+      self: ptr IUIAutomationProxyFactoryEntry, allowSubstringMatch: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_CanCheckBaseClass*: proc(
+      self: ptr IUIAutomationProxyFactoryEntry, canCheckBaseClass: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_NeedsAdviseEvents*: proc(
+      self: ptr IUIAutomationProxyFactoryEntry, adviseEvents: ptr BOOL
+    ): HRESULT {.stdcall.}
+    put_ClassName*: proc(
+      self: ptr IUIAutomationProxyFactoryEntry, className: LPCWSTR
+    ): HRESULT {.stdcall.}
+    put_ImageName*: proc(
+      self: ptr IUIAutomationProxyFactoryEntry, imageName: LPCWSTR
+    ): HRESULT {.stdcall.}
+    put_AllowSubstringMatch*: proc(
+      self: ptr IUIAutomationProxyFactoryEntry, allowSubstringMatch: BOOL
+    ): HRESULT {.stdcall.}
+    put_CanCheckBaseClass*: proc(
+      self: ptr IUIAutomationProxyFactoryEntry, canCheckBaseClass: BOOL
+    ): HRESULT {.stdcall.}
+    put_NeedsAdviseEvents*: proc(
+      self: ptr IUIAutomationProxyFactoryEntry, adviseEvents: BOOL
+    ): HRESULT {.stdcall.}
+    SetWinEventsForAutomationEvent*: proc(
+      self: ptr IUIAutomationProxyFactoryEntry,
+      eventId: EVENTID,
+      propertyId: PROPERTYID,
+      winEvents: ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+    GetWinEventsForAutomationEvent*: proc(
+      self: ptr IUIAutomationProxyFactoryEntry,
+      eventId: EVENTID,
+      propertyId: PROPERTYID,
+      winEvents: ptr ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+
   IUIAutomationProxyFactoryMapping* {.pure.} = object
     lpVtbl*: ptr IUIAutomationProxyFactoryMappingVtbl
+
   IUIAutomationProxyFactoryMappingVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    get_Count*: proc(self: ptr IUIAutomationProxyFactoryMapping, count: ptr UINT): HRESULT {.stdcall.}
-    GetTable*: proc(self: ptr IUIAutomationProxyFactoryMapping, table: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    GetEntry*: proc(self: ptr IUIAutomationProxyFactoryMapping, index: UINT, entry: ptr ptr IUIAutomationProxyFactoryEntry): HRESULT {.stdcall.}
-    SetTable*: proc(self: ptr IUIAutomationProxyFactoryMapping, factoryList: ptr SAFEARRAY): HRESULT {.stdcall.}
-    InsertEntries*: proc(self: ptr IUIAutomationProxyFactoryMapping, before: UINT, factoryList: ptr SAFEARRAY): HRESULT {.stdcall.}
-    InsertEntry*: proc(self: ptr IUIAutomationProxyFactoryMapping, before: UINT, factory: ptr IUIAutomationProxyFactoryEntry): HRESULT {.stdcall.}
-    RemoveEntry*: proc(self: ptr IUIAutomationProxyFactoryMapping, index: UINT): HRESULT {.stdcall.}
+    get_Count*: proc(
+      self: ptr IUIAutomationProxyFactoryMapping, count: ptr UINT
+    ): HRESULT {.stdcall.}
+    GetTable*: proc(
+      self: ptr IUIAutomationProxyFactoryMapping, table: ptr ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    GetEntry*: proc(
+      self: ptr IUIAutomationProxyFactoryMapping,
+      index: UINT,
+      entry: ptr ptr IUIAutomationProxyFactoryEntry,
+    ): HRESULT {.stdcall.}
+    SetTable*: proc(
+      self: ptr IUIAutomationProxyFactoryMapping, factoryList: ptr SAFEARRAY
+    ): HRESULT {.stdcall.}
+    InsertEntries*: proc(
+      self: ptr IUIAutomationProxyFactoryMapping,
+      before: UINT,
+      factoryList: ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+    InsertEntry*: proc(
+      self: ptr IUIAutomationProxyFactoryMapping,
+      before: UINT,
+      factory: ptr IUIAutomationProxyFactoryEntry,
+    ): HRESULT {.stdcall.}
+    RemoveEntry*:
+      proc(self: ptr IUIAutomationProxyFactoryMapping, index: UINT): HRESULT {.stdcall.}
     ClearTable*: proc(self: ptr IUIAutomationProxyFactoryMapping): HRESULT {.stdcall.}
-    RestoreDefaultTable*: proc(self: ptr IUIAutomationProxyFactoryMapping): HRESULT {.stdcall.}
+    RestoreDefaultTable*:
+      proc(self: ptr IUIAutomationProxyFactoryMapping): HRESULT {.stdcall.}
+
   IUIAutomationEventHandlerGroup* {.pure.} = object
     lpVtbl*: ptr IUIAutomationEventHandlerGroupVtbl
+
   IUIAutomationEventHandlerGroupVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    AddActiveTextPositionChangedEventHandler*: proc(self: ptr IUIAutomationEventHandlerGroup, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationActiveTextPositionChangedEventHandler): HRESULT {.stdcall.}
-    AddAutomationEventHandler*: proc(self: ptr IUIAutomationEventHandlerGroup, eventId: EVENTID, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationEventHandler): HRESULT {.stdcall.}
-    AddChangesEventHandler*: proc(self: ptr IUIAutomationEventHandlerGroup, scope: TreeScope, changeTypes: ptr int32, changesCount: int32, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationChangesEventHandler): HRESULT {.stdcall.}
-    AddNotificationEventHandler*: proc(self: ptr IUIAutomationEventHandlerGroup, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationNotificationEventHandler): HRESULT {.stdcall.}
-    AddPropertyChangedEventHandler*: proc(self: ptr IUIAutomationEventHandlerGroup, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationPropertyChangedEventHandler, propertyArray: ptr PROPERTYID, propertyCount: int32): HRESULT {.stdcall.}
-    AddStructureChangedEventHandler*: proc(self: ptr IUIAutomationEventHandlerGroup, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationStructureChangedEventHandler): HRESULT {.stdcall.}
-    AddTextEditTextChangedEventHandler*: proc(self: ptr IUIAutomationEventHandlerGroup, scope: TreeScope, textEditChangeType: TextEditChangeType, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationTextEditTextChangedEventHandler): HRESULT {.stdcall.}
+    AddActiveTextPositionChangedEventHandler*: proc(
+      self: ptr IUIAutomationEventHandlerGroup,
+      scope: TreeScope,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationActiveTextPositionChangedEventHandler,
+    ): HRESULT {.stdcall.}
+    AddAutomationEventHandler*: proc(
+      self: ptr IUIAutomationEventHandlerGroup,
+      eventId: EVENTID,
+      scope: TreeScope,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationEventHandler,
+    ): HRESULT {.stdcall.}
+    AddChangesEventHandler*: proc(
+      self: ptr IUIAutomationEventHandlerGroup,
+      scope: TreeScope,
+      changeTypes: ptr int32,
+      changesCount: int32,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationChangesEventHandler,
+    ): HRESULT {.stdcall.}
+    AddNotificationEventHandler*: proc(
+      self: ptr IUIAutomationEventHandlerGroup,
+      scope: TreeScope,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationNotificationEventHandler,
+    ): HRESULT {.stdcall.}
+    AddPropertyChangedEventHandler*: proc(
+      self: ptr IUIAutomationEventHandlerGroup,
+      scope: TreeScope,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationPropertyChangedEventHandler,
+      propertyArray: ptr PROPERTYID,
+      propertyCount: int32,
+    ): HRESULT {.stdcall.}
+    AddStructureChangedEventHandler*: proc(
+      self: ptr IUIAutomationEventHandlerGroup,
+      scope: TreeScope,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationStructureChangedEventHandler,
+    ): HRESULT {.stdcall.}
+    AddTextEditTextChangedEventHandler*: proc(
+      self: ptr IUIAutomationEventHandlerGroup,
+      scope: TreeScope,
+      textEditChangeType: TextEditChangeType,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationTextEditTextChangedEventHandler,
+    ): HRESULT {.stdcall.}
+
   IUIAutomation* {.pure.} = object
     lpVtbl*: ptr IUIAutomationVtbl
+
   IUIAutomationVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CompareElements*: proc(self: ptr IUIAutomation, el1: ptr IUIAutomationElement, el2: ptr IUIAutomationElement, areSame: ptr BOOL): HRESULT {.stdcall.}
-    CompareRuntimeIds*: proc(self: ptr IUIAutomation, runtimeId1: ptr SAFEARRAY, runtimeId2: ptr SAFEARRAY, areSame: ptr BOOL): HRESULT {.stdcall.}
-    GetRootElement*: proc(self: ptr IUIAutomation, root: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    ElementFromHandle*: proc(self: ptr IUIAutomation, hwnd: UIA_HWND, element: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    ElementFromPoint*: proc(self: ptr IUIAutomation, pt: POINT, element: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetFocusedElement*: proc(self: ptr IUIAutomation, element: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetRootElementBuildCache*: proc(self: ptr IUIAutomation, cacheRequest: ptr IUIAutomationCacheRequest, root: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    ElementFromHandleBuildCache*: proc(self: ptr IUIAutomation, hwnd: UIA_HWND, cacheRequest: ptr IUIAutomationCacheRequest, element: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    ElementFromPointBuildCache*: proc(self: ptr IUIAutomation, pt: POINT, cacheRequest: ptr IUIAutomationCacheRequest, element: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    GetFocusedElementBuildCache*: proc(self: ptr IUIAutomation, cacheRequest: ptr IUIAutomationCacheRequest, element: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    CreateTreeWalker*: proc(self: ptr IUIAutomation, pCondition: ptr IUIAutomationCondition, walker: ptr ptr IUIAutomationTreeWalker): HRESULT {.stdcall.}
-    get_ControlViewWalker*: proc(self: ptr IUIAutomation, walker: ptr ptr IUIAutomationTreeWalker): HRESULT {.stdcall.}
-    get_ContentViewWalker*: proc(self: ptr IUIAutomation, walker: ptr ptr IUIAutomationTreeWalker): HRESULT {.stdcall.}
-    get_RawViewWalker*: proc(self: ptr IUIAutomation, walker: ptr ptr IUIAutomationTreeWalker): HRESULT {.stdcall.}
-    get_RawViewCondition*: proc(self: ptr IUIAutomation, condition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    get_ControlViewCondition*: proc(self: ptr IUIAutomation, condition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    get_ContentViewCondition*: proc(self: ptr IUIAutomation, condition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    CreateCacheRequest*: proc(self: ptr IUIAutomation, cacheRequest: ptr ptr IUIAutomationCacheRequest): HRESULT {.stdcall.}
-    CreateTrueCondition*: proc(self: ptr IUIAutomation, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    CreateFalseCondition*: proc(self: ptr IUIAutomation, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    CreatePropertyCondition*: proc(self: ptr IUIAutomation, propertyId: PROPERTYID, value: VARIANT, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    CreatePropertyConditionEx*: proc(self: ptr IUIAutomation, propertyId: PROPERTYID, value: VARIANT, flags: PropertyConditionFlags, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    CreateAndCondition*: proc(self: ptr IUIAutomation, condition1: ptr IUIAutomationCondition, condition2: ptr IUIAutomationCondition, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    CreateAndConditionFromArray*: proc(self: ptr IUIAutomation, conditions: ptr SAFEARRAY, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    CreateAndConditionFromNativeArray*: proc(self: ptr IUIAutomation, conditions: ptr ptr IUIAutomationCondition, conditionCount: int32, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    CreateOrCondition*: proc(self: ptr IUIAutomation, condition1: ptr IUIAutomationCondition, condition2: ptr IUIAutomationCondition, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    CreateOrConditionFromArray*: proc(self: ptr IUIAutomation, conditions: ptr SAFEARRAY, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    CreateOrConditionFromNativeArray*: proc(self: ptr IUIAutomation, conditions: ptr ptr IUIAutomationCondition, conditionCount: int32, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    CreateNotCondition*: proc(self: ptr IUIAutomation, condition: ptr IUIAutomationCondition, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.stdcall.}
-    AddAutomationEventHandler*: proc(self: ptr IUIAutomation, eventId: EVENTID, element: ptr IUIAutomationElement, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationEventHandler): HRESULT {.stdcall.}
-    RemoveAutomationEventHandler*: proc(self: ptr IUIAutomation, eventId: EVENTID, element: ptr IUIAutomationElement, handler: ptr IUIAutomationEventHandler): HRESULT {.stdcall.}
-    AddPropertyChangedEventHandlerNativeArray*: proc(self: ptr IUIAutomation, element: ptr IUIAutomationElement, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationPropertyChangedEventHandler, propertyArray: ptr PROPERTYID, propertyCount: int32): HRESULT {.stdcall.}
-    AddPropertyChangedEventHandler*: proc(self: ptr IUIAutomation, element: ptr IUIAutomationElement, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationPropertyChangedEventHandler, propertyArray: ptr SAFEARRAY): HRESULT {.stdcall.}
-    RemovePropertyChangedEventHandler*: proc(self: ptr IUIAutomation, element: ptr IUIAutomationElement, handler: ptr IUIAutomationPropertyChangedEventHandler): HRESULT {.stdcall.}
-    AddStructureChangedEventHandler*: proc(self: ptr IUIAutomation, element: ptr IUIAutomationElement, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationStructureChangedEventHandler): HRESULT {.stdcall.}
-    RemoveStructureChangedEventHandler*: proc(self: ptr IUIAutomation, element: ptr IUIAutomationElement, handler: ptr IUIAutomationStructureChangedEventHandler): HRESULT {.stdcall.}
-    AddFocusChangedEventHandler*: proc(self: ptr IUIAutomation, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationFocusChangedEventHandler): HRESULT {.stdcall.}
-    RemoveFocusChangedEventHandler*: proc(self: ptr IUIAutomation, handler: ptr IUIAutomationFocusChangedEventHandler): HRESULT {.stdcall.}
+    CompareElements*: proc(
+      self: ptr IUIAutomation,
+      el1: ptr IUIAutomationElement,
+      el2: ptr IUIAutomationElement,
+      areSame: ptr BOOL,
+    ): HRESULT {.stdcall.}
+    CompareRuntimeIds*: proc(
+      self: ptr IUIAutomation,
+      runtimeId1: ptr SAFEARRAY,
+      runtimeId2: ptr SAFEARRAY,
+      areSame: ptr BOOL,
+    ): HRESULT {.stdcall.}
+    GetRootElement*: proc(
+      self: ptr IUIAutomation, root: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    ElementFromHandle*: proc(
+      self: ptr IUIAutomation, hwnd: UIA_HWND, element: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    ElementFromPoint*: proc(
+      self: ptr IUIAutomation, pt: POINT, element: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    GetFocusedElement*: proc(
+      self: ptr IUIAutomation, element: ptr ptr IUIAutomationElement
+    ): HRESULT {.stdcall.}
+    GetRootElementBuildCache*: proc(
+      self: ptr IUIAutomation,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      root: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    ElementFromHandleBuildCache*: proc(
+      self: ptr IUIAutomation,
+      hwnd: UIA_HWND,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      element: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    ElementFromPointBuildCache*: proc(
+      self: ptr IUIAutomation,
+      pt: POINT,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      element: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    GetFocusedElementBuildCache*: proc(
+      self: ptr IUIAutomation,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      element: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    CreateTreeWalker*: proc(
+      self: ptr IUIAutomation,
+      pCondition: ptr IUIAutomationCondition,
+      walker: ptr ptr IUIAutomationTreeWalker,
+    ): HRESULT {.stdcall.}
+    get_ControlViewWalker*: proc(
+      self: ptr IUIAutomation, walker: ptr ptr IUIAutomationTreeWalker
+    ): HRESULT {.stdcall.}
+    get_ContentViewWalker*: proc(
+      self: ptr IUIAutomation, walker: ptr ptr IUIAutomationTreeWalker
+    ): HRESULT {.stdcall.}
+    get_RawViewWalker*: proc(
+      self: ptr IUIAutomation, walker: ptr ptr IUIAutomationTreeWalker
+    ): HRESULT {.stdcall.}
+    get_RawViewCondition*: proc(
+      self: ptr IUIAutomation, condition: ptr ptr IUIAutomationCondition
+    ): HRESULT {.stdcall.}
+    get_ControlViewCondition*: proc(
+      self: ptr IUIAutomation, condition: ptr ptr IUIAutomationCondition
+    ): HRESULT {.stdcall.}
+    get_ContentViewCondition*: proc(
+      self: ptr IUIAutomation, condition: ptr ptr IUIAutomationCondition
+    ): HRESULT {.stdcall.}
+    CreateCacheRequest*: proc(
+      self: ptr IUIAutomation, cacheRequest: ptr ptr IUIAutomationCacheRequest
+    ): HRESULT {.stdcall.}
+    CreateTrueCondition*: proc(
+      self: ptr IUIAutomation, newCondition: ptr ptr IUIAutomationCondition
+    ): HRESULT {.stdcall.}
+    CreateFalseCondition*: proc(
+      self: ptr IUIAutomation, newCondition: ptr ptr IUIAutomationCondition
+    ): HRESULT {.stdcall.}
+    CreatePropertyCondition*: proc(
+      self: ptr IUIAutomation,
+      propertyId: PROPERTYID,
+      value: VARIANT,
+      newCondition: ptr ptr IUIAutomationCondition,
+    ): HRESULT {.stdcall.}
+    CreatePropertyConditionEx*: proc(
+      self: ptr IUIAutomation,
+      propertyId: PROPERTYID,
+      value: VARIANT,
+      flags: PropertyConditionFlags,
+      newCondition: ptr ptr IUIAutomationCondition,
+    ): HRESULT {.stdcall.}
+    CreateAndCondition*: proc(
+      self: ptr IUIAutomation,
+      condition1: ptr IUIAutomationCondition,
+      condition2: ptr IUIAutomationCondition,
+      newCondition: ptr ptr IUIAutomationCondition,
+    ): HRESULT {.stdcall.}
+    CreateAndConditionFromArray*: proc(
+      self: ptr IUIAutomation,
+      conditions: ptr SAFEARRAY,
+      newCondition: ptr ptr IUIAutomationCondition,
+    ): HRESULT {.stdcall.}
+    CreateAndConditionFromNativeArray*: proc(
+      self: ptr IUIAutomation,
+      conditions: ptr ptr IUIAutomationCondition,
+      conditionCount: int32,
+      newCondition: ptr ptr IUIAutomationCondition,
+    ): HRESULT {.stdcall.}
+    CreateOrCondition*: proc(
+      self: ptr IUIAutomation,
+      condition1: ptr IUIAutomationCondition,
+      condition2: ptr IUIAutomationCondition,
+      newCondition: ptr ptr IUIAutomationCondition,
+    ): HRESULT {.stdcall.}
+    CreateOrConditionFromArray*: proc(
+      self: ptr IUIAutomation,
+      conditions: ptr SAFEARRAY,
+      newCondition: ptr ptr IUIAutomationCondition,
+    ): HRESULT {.stdcall.}
+    CreateOrConditionFromNativeArray*: proc(
+      self: ptr IUIAutomation,
+      conditions: ptr ptr IUIAutomationCondition,
+      conditionCount: int32,
+      newCondition: ptr ptr IUIAutomationCondition,
+    ): HRESULT {.stdcall.}
+    CreateNotCondition*: proc(
+      self: ptr IUIAutomation,
+      condition: ptr IUIAutomationCondition,
+      newCondition: ptr ptr IUIAutomationCondition,
+    ): HRESULT {.stdcall.}
+    AddAutomationEventHandler*: proc(
+      self: ptr IUIAutomation,
+      eventId: EVENTID,
+      element: ptr IUIAutomationElement,
+      scope: TreeScope,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationEventHandler,
+    ): HRESULT {.stdcall.}
+    RemoveAutomationEventHandler*: proc(
+      self: ptr IUIAutomation,
+      eventId: EVENTID,
+      element: ptr IUIAutomationElement,
+      handler: ptr IUIAutomationEventHandler,
+    ): HRESULT {.stdcall.}
+    AddPropertyChangedEventHandlerNativeArray*: proc(
+      self: ptr IUIAutomation,
+      element: ptr IUIAutomationElement,
+      scope: TreeScope,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationPropertyChangedEventHandler,
+      propertyArray: ptr PROPERTYID,
+      propertyCount: int32,
+    ): HRESULT {.stdcall.}
+    AddPropertyChangedEventHandler*: proc(
+      self: ptr IUIAutomation,
+      element: ptr IUIAutomationElement,
+      scope: TreeScope,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationPropertyChangedEventHandler,
+      propertyArray: ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+    RemovePropertyChangedEventHandler*: proc(
+      self: ptr IUIAutomation,
+      element: ptr IUIAutomationElement,
+      handler: ptr IUIAutomationPropertyChangedEventHandler,
+    ): HRESULT {.stdcall.}
+    AddStructureChangedEventHandler*: proc(
+      self: ptr IUIAutomation,
+      element: ptr IUIAutomationElement,
+      scope: TreeScope,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationStructureChangedEventHandler,
+    ): HRESULT {.stdcall.}
+    RemoveStructureChangedEventHandler*: proc(
+      self: ptr IUIAutomation,
+      element: ptr IUIAutomationElement,
+      handler: ptr IUIAutomationStructureChangedEventHandler,
+    ): HRESULT {.stdcall.}
+    AddFocusChangedEventHandler*: proc(
+      self: ptr IUIAutomation,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationFocusChangedEventHandler,
+    ): HRESULT {.stdcall.}
+    RemoveFocusChangedEventHandler*: proc(
+      self: ptr IUIAutomation, handler: ptr IUIAutomationFocusChangedEventHandler
+    ): HRESULT {.stdcall.}
     RemoveAllEventHandlers*: proc(self: ptr IUIAutomation): HRESULT {.stdcall.}
-    IntNativeArrayToSafeArray*: proc(self: ptr IUIAutomation, array: ptr int32, arrayCount: int32, safeArray: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    IntSafeArrayToNativeArray*: proc(self: ptr IUIAutomation, intArray: ptr SAFEARRAY, array: ptr ptr int32, arrayCount: ptr int32): HRESULT {.stdcall.}
-    RectToVariant*: proc(self: ptr IUIAutomation, rc: RECT, `var`: ptr VARIANT): HRESULT {.stdcall.}
-    VariantToRect*: proc(self: ptr IUIAutomation, `var`: VARIANT, rc: ptr RECT): HRESULT {.stdcall.}
-    SafeArrayToRectNativeArray*: proc(self: ptr IUIAutomation, rects: ptr SAFEARRAY, rectArray: ptr ptr RECT, rectArrayCount: ptr int32): HRESULT {.stdcall.}
-    CreateProxyFactoryEntry*: proc(self: ptr IUIAutomation, factory: ptr IUIAutomationProxyFactory, factoryEntry: ptr ptr IUIAutomationProxyFactoryEntry): HRESULT {.stdcall.}
-    get_ProxyFactoryMapping*: proc(self: ptr IUIAutomation, factoryMapping: ptr ptr IUIAutomationProxyFactoryMapping): HRESULT {.stdcall.}
-    GetPropertyProgrammaticName*: proc(self: ptr IUIAutomation, property: PROPERTYID, name: ptr BSTR): HRESULT {.stdcall.}
-    GetPatternProgrammaticName*: proc(self: ptr IUIAutomation, pattern: PATTERNID, name: ptr BSTR): HRESULT {.stdcall.}
-    PollForPotentialSupportedPatterns*: proc(self: ptr IUIAutomation, pElement: ptr IUIAutomationElement, patternIds: ptr ptr SAFEARRAY, patternNames: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    PollForPotentialSupportedProperties*: proc(self: ptr IUIAutomation, pElement: ptr IUIAutomationElement, propertyIds: ptr ptr SAFEARRAY, propertyNames: ptr ptr SAFEARRAY): HRESULT {.stdcall.}
-    CheckNotSupported*: proc(self: ptr IUIAutomation, value: VARIANT, isNotSupported: ptr BOOL): HRESULT {.stdcall.}
-    get_ReservedNotSupportedValue*: proc(self: ptr IUIAutomation, notSupportedValue: ptr ptr IUnknown): HRESULT {.stdcall.}
-    get_ReservedMixedAttributeValue*: proc(self: ptr IUIAutomation, mixedAttributeValue: ptr ptr IUnknown): HRESULT {.stdcall.}
-    ElementFromIAccessible*: proc(self: ptr IUIAutomation, accessible: ptr IAccessible, childId: int32, element: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
-    ElementFromIAccessibleBuildCache*: proc(self: ptr IUIAutomation, accessible: ptr IAccessible, childId: int32, cacheRequest: ptr IUIAutomationCacheRequest, element: ptr ptr IUIAutomationElement): HRESULT {.stdcall.}
+    IntNativeArrayToSafeArray*: proc(
+      self: ptr IUIAutomation,
+      array: ptr int32,
+      arrayCount: int32,
+      safeArray: ptr ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+    IntSafeArrayToNativeArray*: proc(
+      self: ptr IUIAutomation,
+      intArray: ptr SAFEARRAY,
+      array: ptr ptr int32,
+      arrayCount: ptr int32,
+    ): HRESULT {.stdcall.}
+    RectToVariant*:
+      proc(self: ptr IUIAutomation, rc: RECT, `var`: ptr VARIANT): HRESULT {.stdcall.}
+    VariantToRect*:
+      proc(self: ptr IUIAutomation, `var`: VARIANT, rc: ptr RECT): HRESULT {.stdcall.}
+    SafeArrayToRectNativeArray*: proc(
+      self: ptr IUIAutomation,
+      rects: ptr SAFEARRAY,
+      rectArray: ptr ptr RECT,
+      rectArrayCount: ptr int32,
+    ): HRESULT {.stdcall.}
+    CreateProxyFactoryEntry*: proc(
+      self: ptr IUIAutomation,
+      factory: ptr IUIAutomationProxyFactory,
+      factoryEntry: ptr ptr IUIAutomationProxyFactoryEntry,
+    ): HRESULT {.stdcall.}
+    get_ProxyFactoryMapping*: proc(
+      self: ptr IUIAutomation, factoryMapping: ptr ptr IUIAutomationProxyFactoryMapping
+    ): HRESULT {.stdcall.}
+    GetPropertyProgrammaticName*: proc(
+      self: ptr IUIAutomation, property: PROPERTYID, name: ptr BSTR
+    ): HRESULT {.stdcall.}
+    GetPatternProgrammaticName*: proc(
+      self: ptr IUIAutomation, pattern: PATTERNID, name: ptr BSTR
+    ): HRESULT {.stdcall.}
+    PollForPotentialSupportedPatterns*: proc(
+      self: ptr IUIAutomation,
+      pElement: ptr IUIAutomationElement,
+      patternIds: ptr ptr SAFEARRAY,
+      patternNames: ptr ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+    PollForPotentialSupportedProperties*: proc(
+      self: ptr IUIAutomation,
+      pElement: ptr IUIAutomationElement,
+      propertyIds: ptr ptr SAFEARRAY,
+      propertyNames: ptr ptr SAFEARRAY,
+    ): HRESULT {.stdcall.}
+    CheckNotSupported*: proc(
+      self: ptr IUIAutomation, value: VARIANT, isNotSupported: ptr BOOL
+    ): HRESULT {.stdcall.}
+    get_ReservedNotSupportedValue*: proc(
+      self: ptr IUIAutomation, notSupportedValue: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
+    get_ReservedMixedAttributeValue*: proc(
+      self: ptr IUIAutomation, mixedAttributeValue: ptr ptr IUnknown
+    ): HRESULT {.stdcall.}
+    ElementFromIAccessible*: proc(
+      self: ptr IUIAutomation,
+      accessible: ptr IAccessible,
+      childId: int32,
+      element: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+    ElementFromIAccessibleBuildCache*: proc(
+      self: ptr IUIAutomation,
+      accessible: ptr IAccessible,
+      childId: int32,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      element: ptr ptr IUIAutomationElement,
+    ): HRESULT {.stdcall.}
+
   IUIAutomation2* {.pure.} = object
     lpVtbl*: ptr IUIAutomation2Vtbl
+
   IUIAutomation2Vtbl* {.pure, inheritable.} = object of IUIAutomationVtbl
-    get_AutoSetFocus*: proc(self: ptr IUIAutomation2, autoSetFocus: ptr BOOL): HRESULT {.stdcall.}
-    put_AutoSetFocus*: proc(self: ptr IUIAutomation2, autoSetFocus: BOOL): HRESULT {.stdcall.}
-    get_ConnectionTimeout*: proc(self: ptr IUIAutomation2, timeout: ptr DWORD): HRESULT {.stdcall.}
-    put_ConnectionTimeout*: proc(self: ptr IUIAutomation2, timeout: DWORD): HRESULT {.stdcall.}
-    get_TransactionTimeout*: proc(self: ptr IUIAutomation2, timeout: ptr DWORD): HRESULT {.stdcall.}
-    put_TransactionTimeout*: proc(self: ptr IUIAutomation2, timeout: DWORD): HRESULT {.stdcall.}
+    get_AutoSetFocus*:
+      proc(self: ptr IUIAutomation2, autoSetFocus: ptr BOOL): HRESULT {.stdcall.}
+    put_AutoSetFocus*:
+      proc(self: ptr IUIAutomation2, autoSetFocus: BOOL): HRESULT {.stdcall.}
+    get_ConnectionTimeout*:
+      proc(self: ptr IUIAutomation2, timeout: ptr DWORD): HRESULT {.stdcall.}
+    put_ConnectionTimeout*:
+      proc(self: ptr IUIAutomation2, timeout: DWORD): HRESULT {.stdcall.}
+    get_TransactionTimeout*:
+      proc(self: ptr IUIAutomation2, timeout: ptr DWORD): HRESULT {.stdcall.}
+    put_TransactionTimeout*:
+      proc(self: ptr IUIAutomation2, timeout: DWORD): HRESULT {.stdcall.}
+
   IUIAutomation3* {.pure.} = object
     lpVtbl*: ptr IUIAutomation3Vtbl
+
   IUIAutomation3Vtbl* {.pure, inheritable.} = object of IUIAutomation2Vtbl
-    AddTextEditTextChangedEventHandler*: proc(self: ptr IUIAutomation3, element: ptr IUIAutomationElement, scope: TreeScope, textEditChangeType: TextEditChangeType, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationTextEditTextChangedEventHandler): HRESULT {.stdcall.}
-    RemoveTextEditTextChangedEventHandler*: proc(self: ptr IUIAutomation3, element: ptr IUIAutomationElement, handler: ptr IUIAutomationTextEditTextChangedEventHandler): HRESULT {.stdcall.}
+    AddTextEditTextChangedEventHandler*: proc(
+      self: ptr IUIAutomation3,
+      element: ptr IUIAutomationElement,
+      scope: TreeScope,
+      textEditChangeType: TextEditChangeType,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationTextEditTextChangedEventHandler,
+    ): HRESULT {.stdcall.}
+    RemoveTextEditTextChangedEventHandler*: proc(
+      self: ptr IUIAutomation3,
+      element: ptr IUIAutomationElement,
+      handler: ptr IUIAutomationTextEditTextChangedEventHandler,
+    ): HRESULT {.stdcall.}
+
   IUIAutomation4* {.pure.} = object
     lpVtbl*: ptr IUIAutomation4Vtbl
+
   IUIAutomation4Vtbl* {.pure, inheritable.} = object of IUIAutomation3Vtbl
-    AddChangesEventHandler*: proc(self: ptr IUIAutomation4, element: ptr IUIAutomationElement, scope: TreeScope, changeTypes: ptr int32, changesCount: int32, pCacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationChangesEventHandler): HRESULT {.stdcall.}
-    RemoveChangesEventHandler*: proc(self: ptr IUIAutomation4, element: ptr IUIAutomationElement, handler: ptr IUIAutomationChangesEventHandler): HRESULT {.stdcall.}
+    AddChangesEventHandler*: proc(
+      self: ptr IUIAutomation4,
+      element: ptr IUIAutomationElement,
+      scope: TreeScope,
+      changeTypes: ptr int32,
+      changesCount: int32,
+      pCacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationChangesEventHandler,
+    ): HRESULT {.stdcall.}
+    RemoveChangesEventHandler*: proc(
+      self: ptr IUIAutomation4,
+      element: ptr IUIAutomationElement,
+      handler: ptr IUIAutomationChangesEventHandler,
+    ): HRESULT {.stdcall.}
+
   IUIAutomation5* {.pure.} = object
     lpVtbl*: ptr IUIAutomation5Vtbl
+
   IUIAutomation5Vtbl* {.pure, inheritable.} = object of IUIAutomation4Vtbl
-    AddNotificationEventHandler*: proc(self: ptr IUIAutomation5, element: ptr IUIAutomationElement, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationNotificationEventHandler): HRESULT {.stdcall.}
-    RemoveNotificationEventHandler*: proc(self: ptr IUIAutomation5, element: ptr IUIAutomationElement, handler: ptr IUIAutomationNotificationEventHandler): HRESULT {.stdcall.}
+    AddNotificationEventHandler*: proc(
+      self: ptr IUIAutomation5,
+      element: ptr IUIAutomationElement,
+      scope: TreeScope,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationNotificationEventHandler,
+    ): HRESULT {.stdcall.}
+    RemoveNotificationEventHandler*: proc(
+      self: ptr IUIAutomation5,
+      element: ptr IUIAutomationElement,
+      handler: ptr IUIAutomationNotificationEventHandler,
+    ): HRESULT {.stdcall.}
+
   IUIAutomation6* {.pure.} = object
     lpVtbl*: ptr IUIAutomation6Vtbl
+
   IUIAutomation6Vtbl* {.pure, inheritable.} = object of IUIAutomation5Vtbl
-    CreateEventHandlerGroup*: proc(self: ptr IUIAutomation6, handlerGroup: ptr ptr IUIAutomationEventHandlerGroup): HRESULT {.stdcall.}
-    AddEventHandlerGroup*: proc(self: ptr IUIAutomation6, element: ptr IUIAutomationElement, handlerGroup: ptr IUIAutomationEventHandlerGroup): HRESULT {.stdcall.}
-    RemoveEventHandlerGroup*: proc(self: ptr IUIAutomation6, element: ptr IUIAutomationElement, handlerGroup: ptr IUIAutomationEventHandlerGroup): HRESULT {.stdcall.}
-    get_ConnectionRecoveryBehavior*: proc(self: ptr IUIAutomation6, connectionRecoveryBehaviorOptions: ptr ConnectionRecoveryBehaviorOptions): HRESULT {.stdcall.}
-    put_ConnectionRecoveryBehavior*: proc(self: ptr IUIAutomation6, connectionRecoveryBehaviorOptions: ConnectionRecoveryBehaviorOptions): HRESULT {.stdcall.}
-    get_CoalesceEvents*: proc(self: ptr IUIAutomation6, coalesceEventsOptions: ptr CoalesceEventsOptions): HRESULT {.stdcall.}
-    put_CoalesceEvents*: proc(self: ptr IUIAutomation6, coalesceEventsOptions: CoalesceEventsOptions): HRESULT {.stdcall.}
-    AddActiveTextPositionChangedEventHandler*: proc(self: ptr IUIAutomation6, element: ptr IUIAutomationElement, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationActiveTextPositionChangedEventHandler): HRESULT {.stdcall.}
-    RemoveActiveTextPositionChangedEventHandler*: proc(self: ptr IUIAutomation6, element: ptr IUIAutomationElement, handler: ptr IUIAutomationActiveTextPositionChangedEventHandler): HRESULT {.stdcall.}
-proc UiaGetErrorDescription*(pDescription: ptr BSTR): BOOL {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaHUiaNodeFromVariant*(pvar: ptr VARIANT, phnode: ptr HUIANODE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaHPatternObjectFromVariant*(pvar: ptr VARIANT, phobj: ptr HUIAPATTERNOBJECT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaHTextRangeFromVariant*(pvar: ptr VARIANT, phtextrange: ptr HUIATEXTRANGE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaNodeRelease*(hnode: HUIANODE): BOOL {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaGetPropertyValue*(hnode: HUIANODE, propertyId: PROPERTYID, pValue: ptr VARIANT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaGetPatternProvider*(hnode: HUIANODE, patternId: PATTERNID, phobj: ptr HUIAPATTERNOBJECT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaGetRuntimeId*(hnode: HUIANODE, pruntimeId: ptr ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaSetFocus*(hnode: HUIANODE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaNavigate*(hnode: HUIANODE, direction: NavigateDirection, pCondition: ptr UiaCondition, pRequest: ptr UiaCacheRequest, ppRequestedData: ptr ptr SAFEARRAY, ppTreeStructure: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaGetUpdatedCache*(hnode: HUIANODE, pRequest: ptr UiaCacheRequest, normalizeState: NormalizeState, pNormalizeCondition: ptr UiaCondition, ppRequestedData: ptr ptr SAFEARRAY, ppTreeStructure: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaFind*(hnode: HUIANODE, pParams: ptr UiaFindParams, pRequest: ptr UiaCacheRequest, ppRequestedData: ptr ptr SAFEARRAY, ppOffsets: ptr ptr SAFEARRAY, ppTreeStructures: ptr ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaNodeFromPoint*(x: float64, y: float64, pRequest: ptr UiaCacheRequest, ppRequestedData: ptr ptr SAFEARRAY, ppTreeStructure: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaNodeFromFocus*(pRequest: ptr UiaCacheRequest, ppRequestedData: ptr ptr SAFEARRAY, ppTreeStructure: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaNodeFromHandle*(hwnd: HWND, phnode: ptr HUIANODE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaNodeFromProvider*(pProvider: ptr IRawElementProviderSimple, phnode: ptr HUIANODE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaGetRootNode*(phnode: ptr HUIANODE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaRegisterProviderCallback*(pCallback: UiaProviderCallback): void {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaLookupId*(`type`: AutomationIdentifierType, pGuid: ptr GUID): int32 {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaGetReservedNotSupportedValue*(punkNotSupportedValue: ptr ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaGetReservedMixedAttributeValue*(punkMixedAttributeValue: ptr ptr IUnknown): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaClientsAreListening*(): BOOL {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaRaiseAutomationPropertyChangedEvent*(pProvider: ptr IRawElementProviderSimple, id: PROPERTYID, oldValue: VARIANT, newValue: VARIANT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaRaiseAutomationEvent*(pProvider: ptr IRawElementProviderSimple, id: EVENTID): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaRaiseStructureChangedEvent*(pProvider: ptr IRawElementProviderSimple, structureChangeType: StructureChangeType, pRuntimeId: ptr int32, cRuntimeIdLen: int32): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaRaiseAsyncContentLoadedEvent*(pProvider: ptr IRawElementProviderSimple, asyncContentLoadedState: AsyncContentLoadedState, percentComplete: float64): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaRaiseTextEditTextChangedEvent*(pProvider: ptr IRawElementProviderSimple, textEditChangeType: TextEditChangeType, pChangedData: ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaRaiseChangesEvent*(pProvider: ptr IRawElementProviderSimple, eventIdCount: int32, pUiaChanges: ptr UiaChangeInfo): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaRaiseNotificationEvent*(provider: ptr IRawElementProviderSimple, notificationKind: NotificationKind, notificationProcessing: NotificationProcessing, displayString: BSTR, activityId: BSTR): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaRaiseActiveTextPositionChangedEvent*(provider: ptr IRawElementProviderSimple, textRange: ptr ITextRangeProvider): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaAddEvent*(hnode: HUIANODE, eventId: EVENTID, pCallback: UiaEventCallback, scope: TreeScope, pProperties: ptr PROPERTYID, cProperties: int32, pRequest: ptr UiaCacheRequest, phEvent: ptr HUIAEVENT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaRemoveEvent*(hEvent: HUIAEVENT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaEventAddWindow*(hEvent: HUIAEVENT, hwnd: HWND): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaEventRemoveWindow*(hEvent: HUIAEVENT, hwnd: HWND): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc DockPattern_SetDockPosition*(hobj: HUIAPATTERNOBJECT, dockPosition: DockPosition): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc ExpandCollapsePattern_Collapse*(hobj: HUIAPATTERNOBJECT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc ExpandCollapsePattern_Expand*(hobj: HUIAPATTERNOBJECT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc GridPattern_GetItem*(hobj: HUIAPATTERNOBJECT, row: int32, column: int32, pResult: ptr HUIANODE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc InvokePattern_Invoke*(hobj: HUIAPATTERNOBJECT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc MultipleViewPattern_GetViewName*(hobj: HUIAPATTERNOBJECT, viewId: int32, ppStr: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc MultipleViewPattern_SetCurrentView*(hobj: HUIAPATTERNOBJECT, viewId: int32): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc RangeValuePattern_SetValue*(hobj: HUIAPATTERNOBJECT, val: float64): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc ScrollItemPattern_ScrollIntoView*(hobj: HUIAPATTERNOBJECT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc ScrollPattern_Scroll*(hobj: HUIAPATTERNOBJECT, horizontalAmount: ScrollAmount, verticalAmount: ScrollAmount): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc ScrollPattern_SetScrollPercent*(hobj: HUIAPATTERNOBJECT, horizontalPercent: float64, verticalPercent: float64): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc SelectionItemPattern_AddToSelection*(hobj: HUIAPATTERNOBJECT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc SelectionItemPattern_RemoveFromSelection*(hobj: HUIAPATTERNOBJECT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc SelectionItemPattern_Select*(hobj: HUIAPATTERNOBJECT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TogglePattern_Toggle*(hobj: HUIAPATTERNOBJECT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TransformPattern_Move*(hobj: HUIAPATTERNOBJECT, x: float64, y: float64): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TransformPattern_Resize*(hobj: HUIAPATTERNOBJECT, width: float64, height: float64): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TransformPattern_Rotate*(hobj: HUIAPATTERNOBJECT, degrees: float64): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc ValuePattern_SetValue*(hobj: HUIAPATTERNOBJECT, pVal: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc WindowPattern_Close*(hobj: HUIAPATTERNOBJECT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc WindowPattern_SetWindowVisualState*(hobj: HUIAPATTERNOBJECT, state: WindowVisualState): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc WindowPattern_WaitForInputIdle*(hobj: HUIAPATTERNOBJECT, milliseconds: int32, pResult: ptr BOOL): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextPattern_GetSelection*(hobj: HUIAPATTERNOBJECT, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextPattern_GetVisibleRanges*(hobj: HUIAPATTERNOBJECT, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextPattern_RangeFromChild*(hobj: HUIAPATTERNOBJECT, hnodeChild: HUIANODE, pRetVal: ptr HUIATEXTRANGE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextPattern_RangeFromPoint*(hobj: HUIAPATTERNOBJECT, point: UiaPoint, pRetVal: ptr HUIATEXTRANGE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextPattern_get_DocumentRange*(hobj: HUIAPATTERNOBJECT, pRetVal: ptr HUIATEXTRANGE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextPattern_get_SupportedTextSelection*(hobj: HUIAPATTERNOBJECT, pRetVal: ptr SupportedTextSelection): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_Clone*(hobj: HUIATEXTRANGE, pRetVal: ptr HUIATEXTRANGE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_Compare*(hobj: HUIATEXTRANGE, range: HUIATEXTRANGE, pRetVal: ptr BOOL): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_CompareEndpoints*(hobj: HUIATEXTRANGE, endpoint: TextPatternRangeEndpoint, targetRange: HUIATEXTRANGE, targetEndpoint: TextPatternRangeEndpoint, pRetVal: ptr int32): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_ExpandToEnclosingUnit*(hobj: HUIATEXTRANGE, unit: TextUnit): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_GetAttributeValue*(hobj: HUIATEXTRANGE, attributeId: TEXTATTRIBUTEID, pRetVal: ptr VARIANT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_FindAttribute*(hobj: HUIATEXTRANGE, attributeId: TEXTATTRIBUTEID, val: VARIANT, backward: BOOL, pRetVal: ptr HUIATEXTRANGE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_FindText*(hobj: HUIATEXTRANGE, text: BSTR, backward: BOOL, ignoreCase: BOOL, pRetVal: ptr HUIATEXTRANGE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_GetBoundingRectangles*(hobj: HUIATEXTRANGE, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_GetEnclosingElement*(hobj: HUIATEXTRANGE, pRetVal: ptr HUIANODE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_GetText*(hobj: HUIATEXTRANGE, maxLength: int32, pRetVal: ptr BSTR): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_Move*(hobj: HUIATEXTRANGE, unit: TextUnit, count: int32, pRetVal: ptr int32): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_MoveEndpointByUnit*(hobj: HUIATEXTRANGE, endpoint: TextPatternRangeEndpoint, unit: TextUnit, count: int32, pRetVal: ptr int32): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_MoveEndpointByRange*(hobj: HUIATEXTRANGE, endpoint: TextPatternRangeEndpoint, targetRange: HUIATEXTRANGE, targetEndpoint: TextPatternRangeEndpoint): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_Select*(hobj: HUIATEXTRANGE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_AddToSelection*(hobj: HUIATEXTRANGE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_RemoveFromSelection*(hobj: HUIATEXTRANGE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_ScrollIntoView*(hobj: HUIATEXTRANGE, alignToTop: BOOL): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc TextRange_GetChildren*(hobj: HUIATEXTRANGE, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc ItemContainerPattern_FindItemByProperty*(hobj: HUIAPATTERNOBJECT, hnodeStartAfter: HUIANODE, propertyId: PROPERTYID, value: VARIANT, pFound: ptr HUIANODE): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc LegacyIAccessiblePattern_Select*(hobj: HUIAPATTERNOBJECT, flagsSelect: int32): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc LegacyIAccessiblePattern_DoDefaultAction*(hobj: HUIAPATTERNOBJECT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc LegacyIAccessiblePattern_SetValue*(hobj: HUIAPATTERNOBJECT, szValue: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc LegacyIAccessiblePattern_GetIAccessible*(hobj: HUIAPATTERNOBJECT, pAccessible: ptr ptr IAccessible): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc SynchronizedInputPattern_StartListening*(hobj: HUIAPATTERNOBJECT, inputType: SynchronizedInputType): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc SynchronizedInputPattern_Cancel*(hobj: HUIAPATTERNOBJECT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc VirtualizedItemPattern_Realize*(hobj: HUIAPATTERNOBJECT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaPatternRelease*(hobj: HUIAPATTERNOBJECT): BOOL {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaTextRangeRelease*(hobj: HUIATEXTRANGE): BOOL {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaReturnRawElementProvider*(hwnd: HWND, wParam: WPARAM, lParam: LPARAM, el: ptr IRawElementProviderSimple): LRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaHostProviderFromHwnd*(hwnd: HWND, ppProvider: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaProviderForNonClient*(hwnd: HWND, idObject: int32, idChild: int32, ppProvider: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaIAccessibleFromProvider*(pProvider: ptr IRawElementProviderSimple, dwFlags: DWORD, ppAccessible: ptr ptr IAccessible, pvarChild: ptr VARIANT): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaProviderFromIAccessible*(pAccessible: ptr IAccessible, idChild: int32, dwFlags: DWORD, ppProvider: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaDisconnectAllProviders*(): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaDisconnectProvider*(pProvider: ptr IRawElementProviderSimple): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc UiaHasServerSideProvider*(hwnd: HWND): BOOL {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
-proc get_ProviderOptions*(self: ptr IRawElementProviderSimple, pRetVal: ptr ProviderOptions): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ProviderOptions(self, pRetVal)
-proc GetPatternProvider*(self: ptr IRawElementProviderSimple, patternId: PATTERNID, pRetVal: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPatternProvider(self, patternId, pRetVal)
-proc GetPropertyValue*(self: ptr IRawElementProviderSimple, propertyId: PROPERTYID, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyValue(self, propertyId, pRetVal)
-proc get_HostRawElementProvider*(self: ptr IRawElementProviderSimple, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HostRawElementProvider(self, pRetVal)
-proc GetObjectForChild*(self: ptr IAccessibleEx, idChild: int32, pRetVal: ptr ptr IAccessibleEx): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObjectForChild(self, idChild, pRetVal)
-proc GetIAccessiblePair*(self: ptr IAccessibleEx, ppAcc: ptr ptr IAccessible, pidChild: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIAccessiblePair(self, ppAcc, pidChild)
-proc GetRuntimeId*(self: ptr IAccessibleEx, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRuntimeId(self, pRetVal)
-proc ConvertReturnedElement*(self: ptr IAccessibleEx, pIn: ptr IRawElementProviderSimple, ppRetValOut: ptr ptr IAccessibleEx): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ConvertReturnedElement(self, pIn, ppRetValOut)
-proc ShowContextMenu*(self: ptr IRawElementProviderSimple2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowContextMenu(self)
-proc GetMetadataValue*(self: ptr IRawElementProviderSimple3, targetId: int32, metadataId: METADATAID, returnVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMetadataValue(self, targetId, metadataId, returnVal)
-proc ElementProviderFromPoint*(self: ptr IRawElementProviderFragmentRoot, x: float64, y: float64, pRetVal: ptr ptr IRawElementProviderFragment): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ElementProviderFromPoint(self, x, y, pRetVal)
-proc GetFocus*(self: ptr IRawElementProviderFragmentRoot, pRetVal: ptr ptr IRawElementProviderFragment): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFocus(self, pRetVal)
-proc Navigate*(self: ptr IRawElementProviderFragment, direction: NavigateDirection, pRetVal: ptr ptr IRawElementProviderFragment): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Navigate(self, direction, pRetVal)
-proc GetRuntimeId*(self: ptr IRawElementProviderFragment, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRuntimeId(self, pRetVal)
-proc get_BoundingRectangle*(self: ptr IRawElementProviderFragment, pRetVal: ptr UiaRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_BoundingRectangle(self, pRetVal)
-proc GetEmbeddedFragmentRoots*(self: ptr IRawElementProviderFragment, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEmbeddedFragmentRoots(self, pRetVal)
-proc SetFocus*(self: ptr IRawElementProviderFragment): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFocus(self)
-proc get_FragmentRoot*(self: ptr IRawElementProviderFragment, pRetVal: ptr ptr IRawElementProviderFragmentRoot): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_FragmentRoot(self, pRetVal)
-proc AdviseEventAdded*(self: ptr IRawElementProviderAdviseEvents, eventId: EVENTID, propertyIDs: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AdviseEventAdded(self, eventId, propertyIDs)
-proc AdviseEventRemoved*(self: ptr IRawElementProviderAdviseEvents, eventId: EVENTID, propertyIDs: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AdviseEventRemoved(self, eventId, propertyIDs)
-proc GetOverrideProviderForHwnd*(self: ptr IRawElementProviderHwndOverride, hwnd: HWND, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOverrideProviderForHwnd(self, hwnd, pRetVal)
-proc AddAutomationPropertyChangedEvent*(self: ptr IProxyProviderWinEventSink, pProvider: ptr IRawElementProviderSimple, id: PROPERTYID, newValue: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddAutomationPropertyChangedEvent(self, pProvider, id, newValue)
-proc AddAutomationEvent*(self: ptr IProxyProviderWinEventSink, pProvider: ptr IRawElementProviderSimple, id: EVENTID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddAutomationEvent(self, pProvider, id)
-proc AddStructureChangedEvent*(self: ptr IProxyProviderWinEventSink, pProvider: ptr IRawElementProviderSimple, structureChangeType: StructureChangeType, runtimeId: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddStructureChangedEvent(self, pProvider, structureChangeType, runtimeId)
-proc RespondToWinEvent*(self: ptr IProxyProviderWinEventHandler, idWinEvent: DWORD, hwnd: HWND, idObject: LONG, idChild: LONG, pSink: ptr IProxyProviderWinEventSink): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RespondToWinEvent(self, idWinEvent, hwnd, idObject, idChild, pSink)
-proc GetAdjacentFragment*(self: ptr IRawElementProviderWindowlessSite, direction: NavigateDirection, ppParent: ptr ptr IRawElementProviderFragment): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAdjacentFragment(self, direction, ppParent)
-proc GetRuntimeIdPrefix*(self: ptr IRawElementProviderWindowlessSite, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRuntimeIdPrefix(self, pRetVal)
-proc GetEmbeddedFragmentRoots*(self: ptr IAccessibleHostingElementProviders, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEmbeddedFragmentRoots(self, pRetVal)
-proc GetObjectIdForProvider*(self: ptr IAccessibleHostingElementProviders, pProvider: ptr IRawElementProviderSimple, pidObject: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObjectIdForProvider(self, pProvider, pidObject)
-proc GetEmbeddedAccessibles*(self: ptr IRawElementProviderHostingAccessibles, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEmbeddedAccessibles(self, pRetVal)
-proc SetDockPosition*(self: ptr IDockProvider, dockPosition: DockPosition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDockPosition(self, dockPosition)
-proc get_DockPosition*(self: ptr IDockProvider, pRetVal: ptr DockPosition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DockPosition(self, pRetVal)
-proc Expand*(self: ptr IExpandCollapseProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Expand(self)
-proc Collapse*(self: ptr IExpandCollapseProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Collapse(self)
-proc get_ExpandCollapseState*(self: ptr IExpandCollapseProvider, pRetVal: ptr ExpandCollapseState): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ExpandCollapseState(self, pRetVal)
-proc GetItem*(self: ptr IGridProvider, row: int32, column: int32, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItem(self, row, column, pRetVal)
-proc get_RowCount*(self: ptr IGridProvider, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_RowCount(self, pRetVal)
-proc get_ColumnCount*(self: ptr IGridProvider, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ColumnCount(self, pRetVal)
-proc get_Row*(self: ptr IGridItemProvider, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Row(self, pRetVal)
-proc get_Column*(self: ptr IGridItemProvider, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Column(self, pRetVal)
-proc get_RowSpan*(self: ptr IGridItemProvider, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_RowSpan(self, pRetVal)
-proc get_ColumnSpan*(self: ptr IGridItemProvider, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ColumnSpan(self, pRetVal)
-proc get_ContainingGrid*(self: ptr IGridItemProvider, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ContainingGrid(self, pRetVal)
-proc Invoke*(self: ptr IInvokeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invoke(self)
-proc GetViewName*(self: ptr IMultipleViewProvider, viewId: int32, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetViewName(self, viewId, pRetVal)
-proc SetCurrentView*(self: ptr IMultipleViewProvider, viewId: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCurrentView(self, viewId)
-proc get_CurrentView*(self: ptr IMultipleViewProvider, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentView(self, pRetVal)
-proc GetSupportedViews*(self: ptr IMultipleViewProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSupportedViews(self, pRetVal)
-proc SetValue*(self: ptr IRangeValueProvider, val: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetValue(self, val)
-proc get_Value*(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Value(self, pRetVal)
-proc get_IsReadOnly*(self: ptr IRangeValueProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsReadOnly(self, pRetVal)
-proc get_Maximum*(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Maximum(self, pRetVal)
-proc get_Minimum*(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Minimum(self, pRetVal)
-proc get_LargeChange*(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_LargeChange(self, pRetVal)
-proc get_SmallChange*(self: ptr IRangeValueProvider, pRetVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_SmallChange(self, pRetVal)
-proc ScrollIntoView*(self: ptr IScrollItemProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ScrollIntoView(self)
-proc GetSelection*(self: ptr ISelectionProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelection(self, pRetVal)
-proc get_CanSelectMultiple*(self: ptr ISelectionProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CanSelectMultiple(self, pRetVal)
-proc get_IsSelectionRequired*(self: ptr ISelectionProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsSelectionRequired(self, pRetVal)
-proc get_FirstSelectedItem*(self: ptr ISelectionProvider2, retVal: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_FirstSelectedItem(self, retVal)
-proc get_LastSelectedItem*(self: ptr ISelectionProvider2, retVal: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_LastSelectedItem(self, retVal)
-proc get_CurrentSelectedItem*(self: ptr ISelectionProvider2, retVal: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentSelectedItem(self, retVal)
-proc get_ItemCount*(self: ptr ISelectionProvider2, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ItemCount(self, retVal)
-proc Scroll*(self: ptr IScrollProvider, horizontalAmount: ScrollAmount, verticalAmount: ScrollAmount): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Scroll(self, horizontalAmount, verticalAmount)
-proc SetScrollPercent*(self: ptr IScrollProvider, horizontalPercent: float64, verticalPercent: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetScrollPercent(self, horizontalPercent, verticalPercent)
-proc get_HorizontalScrollPercent*(self: ptr IScrollProvider, pRetVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HorizontalScrollPercent(self, pRetVal)
-proc get_VerticalScrollPercent*(self: ptr IScrollProvider, pRetVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_VerticalScrollPercent(self, pRetVal)
-proc get_HorizontalViewSize*(self: ptr IScrollProvider, pRetVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HorizontalViewSize(self, pRetVal)
-proc get_VerticalViewSize*(self: ptr IScrollProvider, pRetVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_VerticalViewSize(self, pRetVal)
-proc get_HorizontallyScrollable*(self: ptr IScrollProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HorizontallyScrollable(self, pRetVal)
-proc get_VerticallyScrollable*(self: ptr IScrollProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_VerticallyScrollable(self, pRetVal)
-proc Select*(self: ptr ISelectionItemProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Select(self)
-proc AddToSelection*(self: ptr ISelectionItemProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddToSelection(self)
-proc RemoveFromSelection*(self: ptr ISelectionItemProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveFromSelection(self)
-proc get_IsSelected*(self: ptr ISelectionItemProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsSelected(self, pRetVal)
-proc get_SelectionContainer*(self: ptr ISelectionItemProvider, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_SelectionContainer(self, pRetVal)
-proc StartListening*(self: ptr ISynchronizedInputProvider, inputType: SynchronizedInputType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StartListening(self, inputType)
-proc Cancel*(self: ptr ISynchronizedInputProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Cancel(self)
-proc GetRowHeaders*(self: ptr ITableProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRowHeaders(self, pRetVal)
-proc GetColumnHeaders*(self: ptr ITableProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColumnHeaders(self, pRetVal)
-proc get_RowOrColumnMajor*(self: ptr ITableProvider, pRetVal: ptr RowOrColumnMajor): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_RowOrColumnMajor(self, pRetVal)
-proc GetRowHeaderItems*(self: ptr ITableItemProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRowHeaderItems(self, pRetVal)
-proc GetColumnHeaderItems*(self: ptr ITableItemProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColumnHeaderItems(self, pRetVal)
-proc Toggle*(self: ptr IToggleProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Toggle(self)
-proc get_ToggleState*(self: ptr IToggleProvider, pRetVal: ptr ToggleState): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ToggleState(self, pRetVal)
-proc Move*(self: ptr ITransformProvider, x: float64, y: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Move(self, x, y)
-proc Resize*(self: ptr ITransformProvider, width: float64, height: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Resize(self, width, height)
-proc Rotate*(self: ptr ITransformProvider, degrees: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Rotate(self, degrees)
-proc get_CanMove*(self: ptr ITransformProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CanMove(self, pRetVal)
-proc get_CanResize*(self: ptr ITransformProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CanResize(self, pRetVal)
-proc get_CanRotate*(self: ptr ITransformProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CanRotate(self, pRetVal)
-proc SetValue*(self: ptr IValueProvider, val: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetValue(self, val)
-proc get_Value*(self: ptr IValueProvider, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Value(self, pRetVal)
-proc get_IsReadOnly*(self: ptr IValueProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsReadOnly(self, pRetVal)
-proc SetVisualState*(self: ptr IWindowProvider, state: WindowVisualState): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetVisualState(self, state)
-proc Close*(self: ptr IWindowProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Close(self)
-proc WaitForInputIdle*(self: ptr IWindowProvider, milliseconds: int32, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WaitForInputIdle(self, milliseconds, pRetVal)
-proc get_CanMaximize*(self: ptr IWindowProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CanMaximize(self, pRetVal)
-proc get_CanMinimize*(self: ptr IWindowProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CanMinimize(self, pRetVal)
-proc get_IsModal*(self: ptr IWindowProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsModal(self, pRetVal)
-proc get_WindowVisualState*(self: ptr IWindowProvider, pRetVal: ptr WindowVisualState): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_WindowVisualState(self, pRetVal)
-proc get_WindowInteractionState*(self: ptr IWindowProvider, pRetVal: ptr WindowInteractionState): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_WindowInteractionState(self, pRetVal)
-proc get_IsTopmost*(self: ptr IWindowProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsTopmost(self, pRetVal)
-proc Select*(self: ptr ILegacyIAccessibleProvider, flagsSelect: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Select(self, flagsSelect)
-proc DoDefaultAction*(self: ptr ILegacyIAccessibleProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoDefaultAction(self)
-proc SetValue*(self: ptr ILegacyIAccessibleProvider, szValue: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetValue(self, szValue)
-proc GetIAccessible*(self: ptr ILegacyIAccessibleProvider, ppAccessible: ptr ptr IAccessible): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIAccessible(self, ppAccessible)
-proc get_ChildId*(self: ptr ILegacyIAccessibleProvider, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ChildId(self, pRetVal)
-proc get_Name*(self: ptr ILegacyIAccessibleProvider, pszName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Name(self, pszName)
-proc get_Value*(self: ptr ILegacyIAccessibleProvider, pszValue: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Value(self, pszValue)
-proc get_Description*(self: ptr ILegacyIAccessibleProvider, pszDescription: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Description(self, pszDescription)
-proc get_Role*(self: ptr ILegacyIAccessibleProvider, pdwRole: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Role(self, pdwRole)
-proc get_State*(self: ptr ILegacyIAccessibleProvider, pdwState: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_State(self, pdwState)
-proc get_Help*(self: ptr ILegacyIAccessibleProvider, pszHelp: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Help(self, pszHelp)
-proc get_KeyboardShortcut*(self: ptr ILegacyIAccessibleProvider, pszKeyboardShortcut: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_KeyboardShortcut(self, pszKeyboardShortcut)
-proc GetSelection*(self: ptr ILegacyIAccessibleProvider, pvarSelectedChildren: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelection(self, pvarSelectedChildren)
-proc get_DefaultAction*(self: ptr ILegacyIAccessibleProvider, pszDefaultAction: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DefaultAction(self, pszDefaultAction)
-proc FindItemByProperty*(self: ptr IItemContainerProvider, pStartAfter: ptr IRawElementProviderSimple, propertyId: PROPERTYID, value: VARIANT, pFound: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindItemByProperty(self, pStartAfter, propertyId, value, pFound)
-proc Realize*(self: ptr IVirtualizedItemProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Realize(self)
-proc GetUnderlyingObjectModel*(self: ptr IObjectModelProvider, ppUnknown: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUnderlyingObjectModel(self, ppUnknown)
-proc get_AnnotationTypeId*(self: ptr IAnnotationProvider, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_AnnotationTypeId(self, retVal)
-proc get_AnnotationTypeName*(self: ptr IAnnotationProvider, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_AnnotationTypeName(self, retVal)
-proc get_Author*(self: ptr IAnnotationProvider, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Author(self, retVal)
-proc get_DateTime*(self: ptr IAnnotationProvider, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DateTime(self, retVal)
-proc get_Target*(self: ptr IAnnotationProvider, retVal: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Target(self, retVal)
-proc get_StyleId*(self: ptr IStylesProvider, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_StyleId(self, retVal)
-proc get_StyleName*(self: ptr IStylesProvider, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_StyleName(self, retVal)
-proc get_FillColor*(self: ptr IStylesProvider, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_FillColor(self, retVal)
-proc get_FillPatternStyle*(self: ptr IStylesProvider, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_FillPatternStyle(self, retVal)
-proc get_Shape*(self: ptr IStylesProvider, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Shape(self, retVal)
-proc get_FillPatternColor*(self: ptr IStylesProvider, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_FillPatternColor(self, retVal)
-proc get_ExtendedProperties*(self: ptr IStylesProvider, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ExtendedProperties(self, retVal)
-proc GetItemByName*(self: ptr ISpreadsheetProvider, name: LPCWSTR, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemByName(self, name, pRetVal)
-proc get_Formula*(self: ptr ISpreadsheetItemProvider, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Formula(self, pRetVal)
-proc GetAnnotationObjects*(self: ptr ISpreadsheetItemProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAnnotationObjects(self, pRetVal)
-proc GetAnnotationTypes*(self: ptr ISpreadsheetItemProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAnnotationTypes(self, pRetVal)
-proc Zoom*(self: ptr ITransformProvider2, zoom: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Zoom(self, zoom)
-proc get_CanZoom*(self: ptr ITransformProvider2, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CanZoom(self, pRetVal)
-proc get_ZoomLevel*(self: ptr ITransformProvider2, pRetVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ZoomLevel(self, pRetVal)
-proc get_ZoomMinimum*(self: ptr ITransformProvider2, pRetVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ZoomMinimum(self, pRetVal)
-proc get_ZoomMaximum*(self: ptr ITransformProvider2, pRetVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ZoomMaximum(self, pRetVal)
-proc ZoomByUnit*(self: ptr ITransformProvider2, zoomUnit: ZoomUnit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ZoomByUnit(self, zoomUnit)
-proc get_IsGrabbed*(self: ptr IDragProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_IsGrabbed(self, pRetVal)
-proc get_DropEffect*(self: ptr IDragProvider, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DropEffect(self, pRetVal)
-proc get_DropEffects*(self: ptr IDragProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DropEffects(self, pRetVal)
-proc GetGrabbedItems*(self: ptr IDragProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetGrabbedItems(self, pRetVal)
-proc get_DropTargetEffect*(self: ptr IDropTargetProvider, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DropTargetEffect(self, pRetVal)
-proc get_DropTargetEffects*(self: ptr IDropTargetProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DropTargetEffects(self, pRetVal)
-proc Clone*(self: ptr ITextRangeProvider, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, pRetVal)
-proc Compare*(self: ptr ITextRangeProvider, range: ptr ITextRangeProvider, pRetVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Compare(self, range, pRetVal)
-proc CompareEndpoints*(self: ptr ITextRangeProvider, endpoint: TextPatternRangeEndpoint, targetRange: ptr ITextRangeProvider, targetEndpoint: TextPatternRangeEndpoint, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CompareEndpoints(self, endpoint, targetRange, targetEndpoint, pRetVal)
-proc ExpandToEnclosingUnit*(self: ptr ITextRangeProvider, unit: TextUnit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExpandToEnclosingUnit(self, unit)
-proc FindAttribute*(self: ptr ITextRangeProvider, attributeId: TEXTATTRIBUTEID, val: VARIANT, backward: BOOL, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindAttribute(self, attributeId, val, backward, pRetVal)
-proc FindText*(self: ptr ITextRangeProvider, text: BSTR, backward: BOOL, ignoreCase: BOOL, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindText(self, text, backward, ignoreCase, pRetVal)
-proc GetAttributeValue*(self: ptr ITextRangeProvider, attributeId: TEXTATTRIBUTEID, pRetVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAttributeValue(self, attributeId, pRetVal)
-proc GetBoundingRectangles*(self: ptr ITextRangeProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBoundingRectangles(self, pRetVal)
-proc GetEnclosingElement*(self: ptr ITextRangeProvider, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEnclosingElement(self, pRetVal)
-proc GetText*(self: ptr ITextRangeProvider, maxLength: int32, pRetVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetText(self, maxLength, pRetVal)
-proc Move*(self: ptr ITextRangeProvider, unit: TextUnit, count: int32, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Move(self, unit, count, pRetVal)
-proc MoveEndpointByUnit*(self: ptr ITextRangeProvider, endpoint: TextPatternRangeEndpoint, unit: TextUnit, count: int32, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveEndpointByUnit(self, endpoint, unit, count, pRetVal)
-proc MoveEndpointByRange*(self: ptr ITextRangeProvider, endpoint: TextPatternRangeEndpoint, targetRange: ptr ITextRangeProvider, targetEndpoint: TextPatternRangeEndpoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveEndpointByRange(self, endpoint, targetRange, targetEndpoint)
-proc Select*(self: ptr ITextRangeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Select(self)
-proc AddToSelection*(self: ptr ITextRangeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddToSelection(self)
-proc RemoveFromSelection*(self: ptr ITextRangeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveFromSelection(self)
-proc ScrollIntoView*(self: ptr ITextRangeProvider, alignToTop: BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ScrollIntoView(self, alignToTop)
-proc GetChildren*(self: ptr ITextRangeProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetChildren(self, pRetVal)
-proc GetSelection*(self: ptr ITextProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelection(self, pRetVal)
-proc GetVisibleRanges*(self: ptr ITextProvider, pRetVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetVisibleRanges(self, pRetVal)
-proc RangeFromChild*(self: ptr ITextProvider, childElement: ptr IRawElementProviderSimple, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RangeFromChild(self, childElement, pRetVal)
-proc RangeFromPoint*(self: ptr ITextProvider, point: UiaPoint, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RangeFromPoint(self, point, pRetVal)
-proc get_DocumentRange*(self: ptr ITextProvider, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DocumentRange(self, pRetVal)
-proc get_SupportedTextSelection*(self: ptr ITextProvider, pRetVal: ptr SupportedTextSelection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_SupportedTextSelection(self, pRetVal)
-proc RangeFromAnnotation*(self: ptr ITextProvider2, annotationElement: ptr IRawElementProviderSimple, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RangeFromAnnotation(self, annotationElement, pRetVal)
-proc GetCaretRange*(self: ptr ITextProvider2, isActive: ptr BOOL, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCaretRange(self, isActive, pRetVal)
-proc GetActiveComposition*(self: ptr ITextEditProvider, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetActiveComposition(self, pRetVal)
-proc GetConversionTarget*(self: ptr ITextEditProvider, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConversionTarget(self, pRetVal)
-proc ShowContextMenu*(self: ptr ITextRangeProvider2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowContextMenu(self)
-proc get_TextContainer*(self: ptr ITextChildProvider, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TextContainer(self, pRetVal)
-proc get_TextRange*(self: ptr ITextChildProvider, pRetVal: ptr ptr ITextRangeProvider): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TextRange(self, pRetVal)
-proc Navigate*(self: ptr ICustomNavigationProvider, direction: NavigateDirection, pRetVal: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Navigate(self, direction, pRetVal)
-proc GetProperty*(self: ptr IUIAutomationPatternInstance, index: UINT, cached: BOOL, `type`: UIAutomationType, pPtr: pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty(self, index, cached, `type`, pPtr)
-proc CallMethod*(self: ptr IUIAutomationPatternInstance, index: UINT, pParams: ptr UIAutomationParameter, cParams: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CallMethod(self, index, pParams, cParams)
-proc CreateClientWrapper*(self: ptr IUIAutomationPatternHandler, pPatternInstance: ptr IUIAutomationPatternInstance, pClientWrapper: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateClientWrapper(self, pPatternInstance, pClientWrapper)
-proc Dispatch*(self: ptr IUIAutomationPatternHandler, pTarget: ptr IUnknown, index: UINT, pParams: ptr UIAutomationParameter, cParams: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Dispatch(self, pTarget, index, pParams, cParams)
-proc RegisterProperty*(self: ptr IUIAutomationRegistrar, property: ptr UIAutomationPropertyInfo, propertyId: ptr PROPERTYID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterProperty(self, property, propertyId)
-proc RegisterEvent*(self: ptr IUIAutomationRegistrar, event: ptr UIAutomationEventInfo, eventId: ptr EVENTID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterEvent(self, event, eventId)
-proc RegisterPattern*(self: ptr IUIAutomationRegistrar, pattern: ptr UIAutomationPatternInfo, pPatternId: ptr PATTERNID, pPatternAvailablePropertyId: ptr PROPERTYID, propertyIdCount: UINT, pPropertyIds: ptr PROPERTYID, eventIdCount: UINT, pEventIds: ptr EVENTID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterPattern(self, pattern, pPatternId, pPatternAvailablePropertyId, propertyIdCount, pPropertyIds, eventIdCount, pEventIds)
-proc SetFocus*(self: ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFocus(self)
-proc GetRuntimeId*(self: ptr IUIAutomationElement, runtimeId: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRuntimeId(self, runtimeId)
-proc FindFirst*(self: ptr IUIAutomationElement, scope: TreeScope, condition: ptr IUIAutomationCondition, found: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindFirst(self, scope, condition, found)
-proc FindAll*(self: ptr IUIAutomationElement, scope: TreeScope, condition: ptr IUIAutomationCondition, found: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindAll(self, scope, condition, found)
-proc FindFirstBuildCache*(self: ptr IUIAutomationElement, scope: TreeScope, condition: ptr IUIAutomationCondition, cacheRequest: ptr IUIAutomationCacheRequest, found: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindFirstBuildCache(self, scope, condition, cacheRequest, found)
-proc FindAllBuildCache*(self: ptr IUIAutomationElement, scope: TreeScope, condition: ptr IUIAutomationCondition, cacheRequest: ptr IUIAutomationCacheRequest, found: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindAllBuildCache(self, scope, condition, cacheRequest, found)
-proc BuildUpdatedCache*(self: ptr IUIAutomationElement, cacheRequest: ptr IUIAutomationCacheRequest, updatedElement: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BuildUpdatedCache(self, cacheRequest, updatedElement)
-proc GetCurrentPropertyValue*(self: ptr IUIAutomationElement, propertyId: PROPERTYID, retVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentPropertyValue(self, propertyId, retVal)
-proc GetCurrentPropertyValueEx*(self: ptr IUIAutomationElement, propertyId: PROPERTYID, ignoreDefaultValue: BOOL, retVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentPropertyValueEx(self, propertyId, ignoreDefaultValue, retVal)
-proc GetCachedPropertyValue*(self: ptr IUIAutomationElement, propertyId: PROPERTYID, retVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedPropertyValue(self, propertyId, retVal)
-proc GetCachedPropertyValueEx*(self: ptr IUIAutomationElement, propertyId: PROPERTYID, ignoreDefaultValue: BOOL, retVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedPropertyValueEx(self, propertyId, ignoreDefaultValue, retVal)
-proc GetCurrentPatternAs*(self: ptr IUIAutomationElement, patternId: PATTERNID, riid: REFIID, patternObject: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentPatternAs(self, patternId, riid, patternObject)
-proc GetCachedPatternAs*(self: ptr IUIAutomationElement, patternId: PATTERNID, riid: REFIID, patternObject: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedPatternAs(self, patternId, riid, patternObject)
-proc GetCurrentPattern*(self: ptr IUIAutomationElement, patternId: PATTERNID, patternObject: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentPattern(self, patternId, patternObject)
-proc GetCachedPattern*(self: ptr IUIAutomationElement, patternId: PATTERNID, patternObject: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedPattern(self, patternId, patternObject)
-proc GetCachedParent*(self: ptr IUIAutomationElement, parent: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedParent(self, parent)
-proc GetCachedChildren*(self: ptr IUIAutomationElement, children: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedChildren(self, children)
-proc get_CurrentProcessId*(self: ptr IUIAutomationElement, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentProcessId(self, retVal)
-proc get_CurrentControlType*(self: ptr IUIAutomationElement, retVal: ptr CONTROLTYPEID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentControlType(self, retVal)
-proc get_CurrentLocalizedControlType*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentLocalizedControlType(self, retVal)
-proc get_CurrentName*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentName(self, retVal)
-proc get_CurrentAcceleratorKey*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentAcceleratorKey(self, retVal)
-proc get_CurrentAccessKey*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentAccessKey(self, retVal)
-proc get_CurrentHasKeyboardFocus*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentHasKeyboardFocus(self, retVal)
-proc get_CurrentIsKeyboardFocusable*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsKeyboardFocusable(self, retVal)
-proc get_CurrentIsEnabled*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsEnabled(self, retVal)
-proc get_CurrentAutomationId*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentAutomationId(self, retVal)
-proc get_CurrentClassName*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentClassName(self, retVal)
-proc get_CurrentHelpText*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentHelpText(self, retVal)
-proc get_CurrentCulture*(self: ptr IUIAutomationElement, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentCulture(self, retVal)
-proc get_CurrentIsControlElement*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsControlElement(self, retVal)
-proc get_CurrentIsContentElement*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsContentElement(self, retVal)
-proc get_CurrentIsPassword*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsPassword(self, retVal)
-proc get_CurrentNativeWindowHandle*(self: ptr IUIAutomationElement, retVal: ptr UIA_HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentNativeWindowHandle(self, retVal)
-proc get_CurrentItemType*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentItemType(self, retVal)
-proc get_CurrentIsOffscreen*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsOffscreen(self, retVal)
-proc get_CurrentOrientation*(self: ptr IUIAutomationElement, retVal: ptr OrientationType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentOrientation(self, retVal)
-proc get_CurrentFrameworkId*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentFrameworkId(self, retVal)
-proc get_CurrentIsRequiredForForm*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsRequiredForForm(self, retVal)
-proc get_CurrentItemStatus*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentItemStatus(self, retVal)
-proc get_CurrentBoundingRectangle*(self: ptr IUIAutomationElement, retVal: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentBoundingRectangle(self, retVal)
-proc get_CurrentLabeledBy*(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentLabeledBy(self, retVal)
-proc get_CurrentAriaRole*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentAriaRole(self, retVal)
-proc get_CurrentAriaProperties*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentAriaProperties(self, retVal)
-proc get_CurrentIsDataValidForForm*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsDataValidForForm(self, retVal)
-proc get_CurrentControllerFor*(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentControllerFor(self, retVal)
-proc get_CurrentDescribedBy*(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentDescribedBy(self, retVal)
-proc get_CurrentFlowsTo*(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentFlowsTo(self, retVal)
-proc get_CurrentProviderDescription*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentProviderDescription(self, retVal)
-proc get_CachedProcessId*(self: ptr IUIAutomationElement, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedProcessId(self, retVal)
-proc get_CachedControlType*(self: ptr IUIAutomationElement, retVal: ptr CONTROLTYPEID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedControlType(self, retVal)
-proc get_CachedLocalizedControlType*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedLocalizedControlType(self, retVal)
-proc get_CachedName*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedName(self, retVal)
-proc get_CachedAcceleratorKey*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedAcceleratorKey(self, retVal)
-proc get_CachedAccessKey*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedAccessKey(self, retVal)
-proc get_CachedHasKeyboardFocus*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedHasKeyboardFocus(self, retVal)
-proc get_CachedIsKeyboardFocusable*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsKeyboardFocusable(self, retVal)
-proc get_CachedIsEnabled*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsEnabled(self, retVal)
-proc get_CachedAutomationId*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedAutomationId(self, retVal)
-proc get_CachedClassName*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedClassName(self, retVal)
-proc get_CachedHelpText*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedHelpText(self, retVal)
-proc get_CachedCulture*(self: ptr IUIAutomationElement, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedCulture(self, retVal)
-proc get_CachedIsControlElement*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsControlElement(self, retVal)
-proc get_CachedIsContentElement*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsContentElement(self, retVal)
-proc get_CachedIsPassword*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsPassword(self, retVal)
-proc get_CachedNativeWindowHandle*(self: ptr IUIAutomationElement, retVal: ptr UIA_HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedNativeWindowHandle(self, retVal)
-proc get_CachedItemType*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedItemType(self, retVal)
-proc get_CachedIsOffscreen*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsOffscreen(self, retVal)
-proc get_CachedOrientation*(self: ptr IUIAutomationElement, retVal: ptr OrientationType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedOrientation(self, retVal)
-proc get_CachedFrameworkId*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedFrameworkId(self, retVal)
-proc get_CachedIsRequiredForForm*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsRequiredForForm(self, retVal)
-proc get_CachedItemStatus*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedItemStatus(self, retVal)
-proc get_CachedBoundingRectangle*(self: ptr IUIAutomationElement, retVal: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedBoundingRectangle(self, retVal)
-proc get_CachedLabeledBy*(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedLabeledBy(self, retVal)
-proc get_CachedAriaRole*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedAriaRole(self, retVal)
-proc get_CachedAriaProperties*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedAriaProperties(self, retVal)
-proc get_CachedIsDataValidForForm*(self: ptr IUIAutomationElement, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsDataValidForForm(self, retVal)
-proc get_CachedControllerFor*(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedControllerFor(self, retVal)
-proc get_CachedDescribedBy*(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedDescribedBy(self, retVal)
-proc get_CachedFlowsTo*(self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedFlowsTo(self, retVal)
-proc get_CachedProviderDescription*(self: ptr IUIAutomationElement, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedProviderDescription(self, retVal)
-proc GetClickablePoint*(self: ptr IUIAutomationElement, clickable: ptr POINT, gotClickable: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClickablePoint(self, clickable, gotClickable)
-proc get_Length*(self: ptr IUIAutomationElementArray, length: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Length(self, length)
-proc GetElement*(self: ptr IUIAutomationElementArray, index: int32, element: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetElement(self, index, element)
-proc get_BooleanValue*(self: ptr IUIAutomationBoolCondition, boolVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_BooleanValue(self, boolVal)
-proc get_PropertyId*(self: ptr IUIAutomationPropertyCondition, propertyId: ptr PROPERTYID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_PropertyId(self, propertyId)
-proc get_PropertyValue*(self: ptr IUIAutomationPropertyCondition, propertyValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_PropertyValue(self, propertyValue)
-proc get_PropertyConditionFlags*(self: ptr IUIAutomationPropertyCondition, flags: ptr PropertyConditionFlags): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_PropertyConditionFlags(self, flags)
-proc get_ChildCount*(self: ptr IUIAutomationAndCondition, childCount: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ChildCount(self, childCount)
-proc GetChildrenAsNativeArray*(self: ptr IUIAutomationAndCondition, childArray: ptr ptr ptr IUIAutomationCondition, childArrayCount: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetChildrenAsNativeArray(self, childArray, childArrayCount)
-proc GetChildren*(self: ptr IUIAutomationAndCondition, childArray: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetChildren(self, childArray)
-proc get_ChildCount*(self: ptr IUIAutomationOrCondition, childCount: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ChildCount(self, childCount)
-proc GetChildrenAsNativeArray*(self: ptr IUIAutomationOrCondition, childArray: ptr ptr ptr IUIAutomationCondition, childArrayCount: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetChildrenAsNativeArray(self, childArray, childArrayCount)
-proc GetChildren*(self: ptr IUIAutomationOrCondition, childArray: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetChildren(self, childArray)
-proc GetChild*(self: ptr IUIAutomationNotCondition, condition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetChild(self, condition)
-proc AddProperty*(self: ptr IUIAutomationCacheRequest, propertyId: PROPERTYID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddProperty(self, propertyId)
-proc AddPattern*(self: ptr IUIAutomationCacheRequest, patternId: PATTERNID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddPattern(self, patternId)
-proc Clone*(self: ptr IUIAutomationCacheRequest, clonedRequest: ptr ptr IUIAutomationCacheRequest): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, clonedRequest)
-proc get_TreeScope*(self: ptr IUIAutomationCacheRequest, scope: ptr TreeScope): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TreeScope(self, scope)
-proc put_TreeScope*(self: ptr IUIAutomationCacheRequest, scope: TreeScope): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_TreeScope(self, scope)
-proc get_TreeFilter*(self: ptr IUIAutomationCacheRequest, filter: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TreeFilter(self, filter)
-proc put_TreeFilter*(self: ptr IUIAutomationCacheRequest, filter: ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_TreeFilter(self, filter)
-proc get_AutomationElementMode*(self: ptr IUIAutomationCacheRequest, mode: ptr AutomationElementMode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_AutomationElementMode(self, mode)
-proc put_AutomationElementMode*(self: ptr IUIAutomationCacheRequest, mode: AutomationElementMode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_AutomationElementMode(self, mode)
-proc GetParentElement*(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, parent: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetParentElement(self, element, parent)
-proc GetFirstChildElement*(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, first: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFirstChildElement(self, element, first)
-proc GetLastChildElement*(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, last: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLastChildElement(self, element, last)
-proc GetNextSiblingElement*(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, next: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNextSiblingElement(self, element, next)
-proc GetPreviousSiblingElement*(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, previous: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPreviousSiblingElement(self, element, previous)
-proc NormalizeElement*(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, normalized: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NormalizeElement(self, element, normalized)
-proc GetParentElementBuildCache*(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, cacheRequest: ptr IUIAutomationCacheRequest, parent: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetParentElementBuildCache(self, element, cacheRequest, parent)
-proc GetFirstChildElementBuildCache*(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, cacheRequest: ptr IUIAutomationCacheRequest, first: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFirstChildElementBuildCache(self, element, cacheRequest, first)
-proc GetLastChildElementBuildCache*(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, cacheRequest: ptr IUIAutomationCacheRequest, last: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLastChildElementBuildCache(self, element, cacheRequest, last)
-proc GetNextSiblingElementBuildCache*(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, cacheRequest: ptr IUIAutomationCacheRequest, next: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNextSiblingElementBuildCache(self, element, cacheRequest, next)
-proc GetPreviousSiblingElementBuildCache*(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, cacheRequest: ptr IUIAutomationCacheRequest, previous: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPreviousSiblingElementBuildCache(self, element, cacheRequest, previous)
-proc NormalizeElementBuildCache*(self: ptr IUIAutomationTreeWalker, element: ptr IUIAutomationElement, cacheRequest: ptr IUIAutomationCacheRequest, normalized: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NormalizeElementBuildCache(self, element, cacheRequest, normalized)
-proc get_Condition*(self: ptr IUIAutomationTreeWalker, condition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Condition(self, condition)
-proc HandleAutomationEvent*(self: ptr IUIAutomationEventHandler, sender: ptr IUIAutomationElement, eventId: EVENTID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleAutomationEvent(self, sender, eventId)
-proc HandlePropertyChangedEvent*(self: ptr IUIAutomationPropertyChangedEventHandler, sender: ptr IUIAutomationElement, propertyId: PROPERTYID, newValue: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandlePropertyChangedEvent(self, sender, propertyId, newValue)
-proc HandleStructureChangedEvent*(self: ptr IUIAutomationStructureChangedEventHandler, sender: ptr IUIAutomationElement, changeType: StructureChangeType, runtimeId: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleStructureChangedEvent(self, sender, changeType, runtimeId)
-proc HandleFocusChangedEvent*(self: ptr IUIAutomationFocusChangedEventHandler, sender: ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleFocusChangedEvent(self, sender)
-proc HandleTextEditTextChangedEvent*(self: ptr IUIAutomationTextEditTextChangedEventHandler, sender: ptr IUIAutomationElement, textEditChangeType: TextEditChangeType, eventStrings: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleTextEditTextChangedEvent(self, sender, textEditChangeType, eventStrings)
-proc HandleChangesEvent*(self: ptr IUIAutomationChangesEventHandler, sender: ptr IUIAutomationElement, uiaChanges: ptr UiaChangeInfo, changesCount: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleChangesEvent(self, sender, uiaChanges, changesCount)
-proc HandleNotificationEvent*(self: ptr IUIAutomationNotificationEventHandler, sender: ptr IUIAutomationElement, notificationKind: NotificationKind, notificationProcessing: NotificationProcessing, displayString: BSTR, activityId: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleNotificationEvent(self, sender, notificationKind, notificationProcessing, displayString, activityId)
-proc Invoke*(self: ptr IUIAutomationInvokePattern): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invoke(self)
-proc SetDockPosition*(self: ptr IUIAutomationDockPattern, dockPos: DockPosition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDockPosition(self, dockPos)
-proc get_CurrentDockPosition*(self: ptr IUIAutomationDockPattern, retVal: ptr DockPosition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentDockPosition(self, retVal)
-proc get_CachedDockPosition*(self: ptr IUIAutomationDockPattern, retVal: ptr DockPosition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedDockPosition(self, retVal)
-proc Expand*(self: ptr IUIAutomationExpandCollapsePattern): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Expand(self)
-proc Collapse*(self: ptr IUIAutomationExpandCollapsePattern): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Collapse(self)
-proc get_CurrentExpandCollapseState*(self: ptr IUIAutomationExpandCollapsePattern, retVal: ptr ExpandCollapseState): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentExpandCollapseState(self, retVal)
-proc get_CachedExpandCollapseState*(self: ptr IUIAutomationExpandCollapsePattern, retVal: ptr ExpandCollapseState): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedExpandCollapseState(self, retVal)
-proc GetItem*(self: ptr IUIAutomationGridPattern, row: int32, column: int32, element: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItem(self, row, column, element)
-proc get_CurrentRowCount*(self: ptr IUIAutomationGridPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentRowCount(self, retVal)
-proc get_CurrentColumnCount*(self: ptr IUIAutomationGridPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentColumnCount(self, retVal)
-proc get_CachedRowCount*(self: ptr IUIAutomationGridPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedRowCount(self, retVal)
-proc get_CachedColumnCount*(self: ptr IUIAutomationGridPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedColumnCount(self, retVal)
-proc get_CurrentContainingGrid*(self: ptr IUIAutomationGridItemPattern, retVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentContainingGrid(self, retVal)
-proc get_CurrentRow*(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentRow(self, retVal)
-proc get_CurrentColumn*(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentColumn(self, retVal)
-proc get_CurrentRowSpan*(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentRowSpan(self, retVal)
-proc get_CurrentColumnSpan*(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentColumnSpan(self, retVal)
-proc get_CachedContainingGrid*(self: ptr IUIAutomationGridItemPattern, retVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedContainingGrid(self, retVal)
-proc get_CachedRow*(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedRow(self, retVal)
-proc get_CachedColumn*(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedColumn(self, retVal)
-proc get_CachedRowSpan*(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedRowSpan(self, retVal)
-proc get_CachedColumnSpan*(self: ptr IUIAutomationGridItemPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedColumnSpan(self, retVal)
-proc GetViewName*(self: ptr IUIAutomationMultipleViewPattern, view: int32, name: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetViewName(self, view, name)
-proc SetCurrentView*(self: ptr IUIAutomationMultipleViewPattern, view: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetCurrentView(self, view)
-proc get_CurrentCurrentView*(self: ptr IUIAutomationMultipleViewPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentCurrentView(self, retVal)
-proc GetCurrentSupportedViews*(self: ptr IUIAutomationMultipleViewPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentSupportedViews(self, retVal)
-proc get_CachedCurrentView*(self: ptr IUIAutomationMultipleViewPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedCurrentView(self, retVal)
-proc GetCachedSupportedViews*(self: ptr IUIAutomationMultipleViewPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedSupportedViews(self, retVal)
-proc GetUnderlyingObjectModel*(self: ptr IUIAutomationObjectModelPattern, retVal: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUnderlyingObjectModel(self, retVal)
-proc SetValue*(self: ptr IUIAutomationRangeValuePattern, val: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetValue(self, val)
-proc get_CurrentValue*(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentValue(self, retVal)
-proc get_CurrentIsReadOnly*(self: ptr IUIAutomationRangeValuePattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsReadOnly(self, retVal)
-proc get_CurrentMaximum*(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentMaximum(self, retVal)
-proc get_CurrentMinimum*(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentMinimum(self, retVal)
-proc get_CurrentLargeChange*(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentLargeChange(self, retVal)
-proc get_CurrentSmallChange*(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentSmallChange(self, retVal)
-proc get_CachedValue*(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedValue(self, retVal)
-proc get_CachedIsReadOnly*(self: ptr IUIAutomationRangeValuePattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsReadOnly(self, retVal)
-proc get_CachedMaximum*(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedMaximum(self, retVal)
-proc get_CachedMinimum*(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedMinimum(self, retVal)
-proc get_CachedLargeChange*(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedLargeChange(self, retVal)
-proc get_CachedSmallChange*(self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedSmallChange(self, retVal)
-proc Scroll*(self: ptr IUIAutomationScrollPattern, horizontalAmount: ScrollAmount, verticalAmount: ScrollAmount): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Scroll(self, horizontalAmount, verticalAmount)
-proc SetScrollPercent*(self: ptr IUIAutomationScrollPattern, horizontalPercent: float64, verticalPercent: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetScrollPercent(self, horizontalPercent, verticalPercent)
-proc get_CurrentHorizontalScrollPercent*(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentHorizontalScrollPercent(self, retVal)
-proc get_CurrentVerticalScrollPercent*(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentVerticalScrollPercent(self, retVal)
-proc get_CurrentHorizontalViewSize*(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentHorizontalViewSize(self, retVal)
-proc get_CurrentVerticalViewSize*(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentVerticalViewSize(self, retVal)
-proc get_CurrentHorizontallyScrollable*(self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentHorizontallyScrollable(self, retVal)
-proc get_CurrentVerticallyScrollable*(self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentVerticallyScrollable(self, retVal)
-proc get_CachedHorizontalScrollPercent*(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedHorizontalScrollPercent(self, retVal)
-proc get_CachedVerticalScrollPercent*(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedVerticalScrollPercent(self, retVal)
-proc get_CachedHorizontalViewSize*(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedHorizontalViewSize(self, retVal)
-proc get_CachedVerticalViewSize*(self: ptr IUIAutomationScrollPattern, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedVerticalViewSize(self, retVal)
-proc get_CachedHorizontallyScrollable*(self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedHorizontallyScrollable(self, retVal)
-proc get_CachedVerticallyScrollable*(self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedVerticallyScrollable(self, retVal)
-proc ScrollIntoView*(self: ptr IUIAutomationScrollItemPattern): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ScrollIntoView(self)
-proc GetCurrentSelection*(self: ptr IUIAutomationSelectionPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentSelection(self, retVal)
-proc get_CurrentCanSelectMultiple*(self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentCanSelectMultiple(self, retVal)
-proc get_CurrentIsSelectionRequired*(self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsSelectionRequired(self, retVal)
-proc GetCachedSelection*(self: ptr IUIAutomationSelectionPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedSelection(self, retVal)
-proc get_CachedCanSelectMultiple*(self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedCanSelectMultiple(self, retVal)
-proc get_CachedIsSelectionRequired*(self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsSelectionRequired(self, retVal)
-proc get_CurrentFirstSelectedItem*(self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentFirstSelectedItem(self, retVal)
-proc get_CurrentLastSelectedItem*(self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentLastSelectedItem(self, retVal)
-proc get_CurrentCurrentSelectedItem*(self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentCurrentSelectedItem(self, retVal)
-proc get_CurrentItemCount*(self: ptr IUIAutomationSelectionPattern2, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentItemCount(self, retVal)
-proc get_CachedFirstSelectedItem*(self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedFirstSelectedItem(self, retVal)
-proc get_CachedLastSelectedItem*(self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedLastSelectedItem(self, retVal)
-proc get_CachedCurrentSelectedItem*(self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedCurrentSelectedItem(self, retVal)
-proc get_CachedItemCount*(self: ptr IUIAutomationSelectionPattern2, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedItemCount(self, retVal)
-proc Select*(self: ptr IUIAutomationSelectionItemPattern): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Select(self)
-proc AddToSelection*(self: ptr IUIAutomationSelectionItemPattern): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddToSelection(self)
-proc RemoveFromSelection*(self: ptr IUIAutomationSelectionItemPattern): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveFromSelection(self)
-proc get_CurrentIsSelected*(self: ptr IUIAutomationSelectionItemPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsSelected(self, retVal)
-proc get_CurrentSelectionContainer*(self: ptr IUIAutomationSelectionItemPattern, retVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentSelectionContainer(self, retVal)
-proc get_CachedIsSelected*(self: ptr IUIAutomationSelectionItemPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsSelected(self, retVal)
-proc get_CachedSelectionContainer*(self: ptr IUIAutomationSelectionItemPattern, retVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedSelectionContainer(self, retVal)
-proc StartListening*(self: ptr IUIAutomationSynchronizedInputPattern, inputType: SynchronizedInputType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.StartListening(self, inputType)
-proc Cancel*(self: ptr IUIAutomationSynchronizedInputPattern): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Cancel(self)
-proc GetCurrentRowHeaders*(self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentRowHeaders(self, retVal)
-proc GetCurrentColumnHeaders*(self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentColumnHeaders(self, retVal)
-proc get_CurrentRowOrColumnMajor*(self: ptr IUIAutomationTablePattern, retVal: ptr RowOrColumnMajor): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentRowOrColumnMajor(self, retVal)
-proc GetCachedRowHeaders*(self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedRowHeaders(self, retVal)
-proc GetCachedColumnHeaders*(self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedColumnHeaders(self, retVal)
-proc get_CachedRowOrColumnMajor*(self: ptr IUIAutomationTablePattern, retVal: ptr RowOrColumnMajor): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedRowOrColumnMajor(self, retVal)
-proc GetCurrentRowHeaderItems*(self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentRowHeaderItems(self, retVal)
-proc GetCurrentColumnHeaderItems*(self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentColumnHeaderItems(self, retVal)
-proc GetCachedRowHeaderItems*(self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedRowHeaderItems(self, retVal)
-proc GetCachedColumnHeaderItems*(self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedColumnHeaderItems(self, retVal)
-proc Toggle*(self: ptr IUIAutomationTogglePattern): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Toggle(self)
-proc get_CurrentToggleState*(self: ptr IUIAutomationTogglePattern, retVal: ptr ToggleState): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentToggleState(self, retVal)
-proc get_CachedToggleState*(self: ptr IUIAutomationTogglePattern, retVal: ptr ToggleState): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedToggleState(self, retVal)
-proc Move*(self: ptr IUIAutomationTransformPattern, x: float64, y: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Move(self, x, y)
-proc Resize*(self: ptr IUIAutomationTransformPattern, width: float64, height: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Resize(self, width, height)
-proc Rotate*(self: ptr IUIAutomationTransformPattern, degrees: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Rotate(self, degrees)
-proc get_CurrentCanMove*(self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentCanMove(self, retVal)
-proc get_CurrentCanResize*(self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentCanResize(self, retVal)
-proc get_CurrentCanRotate*(self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentCanRotate(self, retVal)
-proc get_CachedCanMove*(self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedCanMove(self, retVal)
-proc get_CachedCanResize*(self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedCanResize(self, retVal)
-proc get_CachedCanRotate*(self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedCanRotate(self, retVal)
-proc SetValue*(self: ptr IUIAutomationValuePattern, val: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetValue(self, val)
-proc get_CurrentValue*(self: ptr IUIAutomationValuePattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentValue(self, retVal)
-proc get_CurrentIsReadOnly*(self: ptr IUIAutomationValuePattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsReadOnly(self, retVal)
-proc get_CachedValue*(self: ptr IUIAutomationValuePattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedValue(self, retVal)
-proc get_CachedIsReadOnly*(self: ptr IUIAutomationValuePattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsReadOnly(self, retVal)
-proc Close*(self: ptr IUIAutomationWindowPattern): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Close(self)
-proc WaitForInputIdle*(self: ptr IUIAutomationWindowPattern, milliseconds: int32, success: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WaitForInputIdle(self, milliseconds, success)
-proc SetWindowVisualState*(self: ptr IUIAutomationWindowPattern, state: WindowVisualState): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetWindowVisualState(self, state)
-proc get_CurrentCanMaximize*(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentCanMaximize(self, retVal)
-proc get_CurrentCanMinimize*(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentCanMinimize(self, retVal)
-proc get_CurrentIsModal*(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsModal(self, retVal)
-proc get_CurrentIsTopmost*(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsTopmost(self, retVal)
-proc get_CurrentWindowVisualState*(self: ptr IUIAutomationWindowPattern, retVal: ptr WindowVisualState): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentWindowVisualState(self, retVal)
-proc get_CurrentWindowInteractionState*(self: ptr IUIAutomationWindowPattern, retVal: ptr WindowInteractionState): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentWindowInteractionState(self, retVal)
-proc get_CachedCanMaximize*(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedCanMaximize(self, retVal)
-proc get_CachedCanMinimize*(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedCanMinimize(self, retVal)
-proc get_CachedIsModal*(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsModal(self, retVal)
-proc get_CachedIsTopmost*(self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsTopmost(self, retVal)
-proc get_CachedWindowVisualState*(self: ptr IUIAutomationWindowPattern, retVal: ptr WindowVisualState): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedWindowVisualState(self, retVal)
-proc get_CachedWindowInteractionState*(self: ptr IUIAutomationWindowPattern, retVal: ptr WindowInteractionState): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedWindowInteractionState(self, retVal)
-proc Clone*(self: ptr IUIAutomationTextRange, clonedRange: ptr ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, clonedRange)
-proc Compare*(self: ptr IUIAutomationTextRange, range: ptr IUIAutomationTextRange, areSame: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Compare(self, range, areSame)
-proc CompareEndpoints*(self: ptr IUIAutomationTextRange, srcEndPoint: TextPatternRangeEndpoint, range: ptr IUIAutomationTextRange, targetEndPoint: TextPatternRangeEndpoint, compValue: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CompareEndpoints(self, srcEndPoint, range, targetEndPoint, compValue)
-proc ExpandToEnclosingUnit*(self: ptr IUIAutomationTextRange, textUnit: TextUnit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExpandToEnclosingUnit(self, textUnit)
-proc FindAttribute*(self: ptr IUIAutomationTextRange, attr: TEXTATTRIBUTEID, val: VARIANT, backward: BOOL, found: ptr ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindAttribute(self, attr, val, backward, found)
-proc FindText*(self: ptr IUIAutomationTextRange, text: BSTR, backward: BOOL, ignoreCase: BOOL, found: ptr ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindText(self, text, backward, ignoreCase, found)
-proc GetAttributeValue*(self: ptr IUIAutomationTextRange, attr: TEXTATTRIBUTEID, value: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAttributeValue(self, attr, value)
-proc GetBoundingRectangles*(self: ptr IUIAutomationTextRange, boundingRects: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBoundingRectangles(self, boundingRects)
-proc GetEnclosingElement*(self: ptr IUIAutomationTextRange, enclosingElement: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEnclosingElement(self, enclosingElement)
-proc GetText*(self: ptr IUIAutomationTextRange, maxLength: int32, text: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetText(self, maxLength, text)
-proc Move*(self: ptr IUIAutomationTextRange, unit: TextUnit, count: int32, moved: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Move(self, unit, count, moved)
-proc MoveEndpointByUnit*(self: ptr IUIAutomationTextRange, endpoint: TextPatternRangeEndpoint, unit: TextUnit, count: int32, moved: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveEndpointByUnit(self, endpoint, unit, count, moved)
-proc MoveEndpointByRange*(self: ptr IUIAutomationTextRange, srcEndPoint: TextPatternRangeEndpoint, range: ptr IUIAutomationTextRange, targetEndPoint: TextPatternRangeEndpoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveEndpointByRange(self, srcEndPoint, range, targetEndPoint)
-proc Select*(self: ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Select(self)
-proc AddToSelection*(self: ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddToSelection(self)
-proc RemoveFromSelection*(self: ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveFromSelection(self)
-proc ScrollIntoView*(self: ptr IUIAutomationTextRange, alignToTop: BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ScrollIntoView(self, alignToTop)
-proc GetChildren*(self: ptr IUIAutomationTextRange, children: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetChildren(self, children)
-proc ShowContextMenu*(self: ptr IUIAutomationTextRange2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowContextMenu(self)
-proc GetEnclosingElementBuildCache*(self: ptr IUIAutomationTextRange3, cacheRequest: ptr IUIAutomationCacheRequest, enclosingElement: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEnclosingElementBuildCache(self, cacheRequest, enclosingElement)
-proc GetChildrenBuildCache*(self: ptr IUIAutomationTextRange3, cacheRequest: ptr IUIAutomationCacheRequest, children: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetChildrenBuildCache(self, cacheRequest, children)
-proc GetAttributeValues*(self: ptr IUIAutomationTextRange3, attributeIds: ptr TEXTATTRIBUTEID, attributeIdCount: int32, attributeValues: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAttributeValues(self, attributeIds, attributeIdCount, attributeValues)
-proc get_Length*(self: ptr IUIAutomationTextRangeArray, length: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Length(self, length)
-proc GetElement*(self: ptr IUIAutomationTextRangeArray, index: int32, element: ptr ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetElement(self, index, element)
-proc RangeFromPoint*(self: ptr IUIAutomationTextPattern, pt: POINT, range: ptr ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RangeFromPoint(self, pt, range)
-proc RangeFromChild*(self: ptr IUIAutomationTextPattern, child: ptr IUIAutomationElement, range: ptr ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RangeFromChild(self, child, range)
-proc GetSelection*(self: ptr IUIAutomationTextPattern, ranges: ptr ptr IUIAutomationTextRangeArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelection(self, ranges)
-proc GetVisibleRanges*(self: ptr IUIAutomationTextPattern, ranges: ptr ptr IUIAutomationTextRangeArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetVisibleRanges(self, ranges)
-proc get_DocumentRange*(self: ptr IUIAutomationTextPattern, range: ptr ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_DocumentRange(self, range)
-proc get_SupportedTextSelection*(self: ptr IUIAutomationTextPattern, supportedTextSelection: ptr SupportedTextSelection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_SupportedTextSelection(self, supportedTextSelection)
-proc RangeFromAnnotation*(self: ptr IUIAutomationTextPattern2, annotation: ptr IUIAutomationElement, range: ptr ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RangeFromAnnotation(self, annotation, range)
-proc GetCaretRange*(self: ptr IUIAutomationTextPattern2, isActive: ptr BOOL, range: ptr ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCaretRange(self, isActive, range)
-proc GetActiveComposition*(self: ptr IUIAutomationTextEditPattern, range: ptr ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetActiveComposition(self, range)
-proc GetConversionTarget*(self: ptr IUIAutomationTextEditPattern, range: ptr ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConversionTarget(self, range)
-proc Navigate*(self: ptr IUIAutomationCustomNavigationPattern, direction: NavigateDirection, pRetVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Navigate(self, direction, pRetVal)
-proc HandleActiveTextPositionChangedEvent*(self: ptr IUIAutomationActiveTextPositionChangedEventHandler, sender: ptr IUIAutomationElement, range: ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleActiveTextPositionChangedEvent(self, sender, range)
-proc Select*(self: ptr IUIAutomationLegacyIAccessiblePattern, flagsSelect: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Select(self, flagsSelect)
-proc DoDefaultAction*(self: ptr IUIAutomationLegacyIAccessiblePattern): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoDefaultAction(self)
-proc SetValue*(self: ptr IUIAutomationLegacyIAccessiblePattern, szValue: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetValue(self, szValue)
-proc get_CurrentChildId*(self: ptr IUIAutomationLegacyIAccessiblePattern, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentChildId(self, pRetVal)
-proc get_CurrentName*(self: ptr IUIAutomationLegacyIAccessiblePattern, pszName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentName(self, pszName)
-proc get_CurrentValue*(self: ptr IUIAutomationLegacyIAccessiblePattern, pszValue: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentValue(self, pszValue)
-proc get_CurrentDescription*(self: ptr IUIAutomationLegacyIAccessiblePattern, pszDescription: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentDescription(self, pszDescription)
-proc get_CurrentRole*(self: ptr IUIAutomationLegacyIAccessiblePattern, pdwRole: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentRole(self, pdwRole)
-proc get_CurrentState*(self: ptr IUIAutomationLegacyIAccessiblePattern, pdwState: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentState(self, pdwState)
-proc get_CurrentHelp*(self: ptr IUIAutomationLegacyIAccessiblePattern, pszHelp: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentHelp(self, pszHelp)
-proc get_CurrentKeyboardShortcut*(self: ptr IUIAutomationLegacyIAccessiblePattern, pszKeyboardShortcut: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentKeyboardShortcut(self, pszKeyboardShortcut)
-proc GetCurrentSelection*(self: ptr IUIAutomationLegacyIAccessiblePattern, pvarSelectedChildren: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentSelection(self, pvarSelectedChildren)
-proc get_CurrentDefaultAction*(self: ptr IUIAutomationLegacyIAccessiblePattern, pszDefaultAction: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentDefaultAction(self, pszDefaultAction)
-proc get_CachedChildId*(self: ptr IUIAutomationLegacyIAccessiblePattern, pRetVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedChildId(self, pRetVal)
-proc get_CachedName*(self: ptr IUIAutomationLegacyIAccessiblePattern, pszName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedName(self, pszName)
-proc get_CachedValue*(self: ptr IUIAutomationLegacyIAccessiblePattern, pszValue: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedValue(self, pszValue)
-proc get_CachedDescription*(self: ptr IUIAutomationLegacyIAccessiblePattern, pszDescription: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedDescription(self, pszDescription)
-proc get_CachedRole*(self: ptr IUIAutomationLegacyIAccessiblePattern, pdwRole: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedRole(self, pdwRole)
-proc get_CachedState*(self: ptr IUIAutomationLegacyIAccessiblePattern, pdwState: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedState(self, pdwState)
-proc get_CachedHelp*(self: ptr IUIAutomationLegacyIAccessiblePattern, pszHelp: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedHelp(self, pszHelp)
-proc get_CachedKeyboardShortcut*(self: ptr IUIAutomationLegacyIAccessiblePattern, pszKeyboardShortcut: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedKeyboardShortcut(self, pszKeyboardShortcut)
-proc GetCachedSelection*(self: ptr IUIAutomationLegacyIAccessiblePattern, pvarSelectedChildren: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedSelection(self, pvarSelectedChildren)
-proc get_CachedDefaultAction*(self: ptr IUIAutomationLegacyIAccessiblePattern, pszDefaultAction: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedDefaultAction(self, pszDefaultAction)
-proc GetIAccessible*(self: ptr IUIAutomationLegacyIAccessiblePattern, ppAccessible: ptr ptr IAccessible): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIAccessible(self, ppAccessible)
-proc FindItemByProperty*(self: ptr IUIAutomationItemContainerPattern, pStartAfter: ptr IUIAutomationElement, propertyId: PROPERTYID, value: VARIANT, pFound: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindItemByProperty(self, pStartAfter, propertyId, value, pFound)
-proc Realize*(self: ptr IUIAutomationVirtualizedItemPattern): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Realize(self)
-proc get_CurrentAnnotationTypeId*(self: ptr IUIAutomationAnnotationPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentAnnotationTypeId(self, retVal)
-proc get_CurrentAnnotationTypeName*(self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentAnnotationTypeName(self, retVal)
-proc get_CurrentAuthor*(self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentAuthor(self, retVal)
-proc get_CurrentDateTime*(self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentDateTime(self, retVal)
-proc get_CurrentTarget*(self: ptr IUIAutomationAnnotationPattern, retVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentTarget(self, retVal)
-proc get_CachedAnnotationTypeId*(self: ptr IUIAutomationAnnotationPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedAnnotationTypeId(self, retVal)
-proc get_CachedAnnotationTypeName*(self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedAnnotationTypeName(self, retVal)
-proc get_CachedAuthor*(self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedAuthor(self, retVal)
-proc get_CachedDateTime*(self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedDateTime(self, retVal)
-proc get_CachedTarget*(self: ptr IUIAutomationAnnotationPattern, retVal: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedTarget(self, retVal)
-proc get_CurrentStyleId*(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentStyleId(self, retVal)
-proc get_CurrentStyleName*(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentStyleName(self, retVal)
-proc get_CurrentFillColor*(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentFillColor(self, retVal)
-proc get_CurrentFillPatternStyle*(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentFillPatternStyle(self, retVal)
-proc get_CurrentShape*(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentShape(self, retVal)
-proc get_CurrentFillPatternColor*(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentFillPatternColor(self, retVal)
-proc get_CurrentExtendedProperties*(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentExtendedProperties(self, retVal)
-proc GetCurrentExtendedPropertiesAsArray*(self: ptr IUIAutomationStylesPattern, propertyArray: ptr ptr TExtendedProperty, propertyCount: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentExtendedPropertiesAsArray(self, propertyArray, propertyCount)
-proc get_CachedStyleId*(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedStyleId(self, retVal)
-proc get_CachedStyleName*(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedStyleName(self, retVal)
-proc get_CachedFillColor*(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedFillColor(self, retVal)
-proc get_CachedFillPatternStyle*(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedFillPatternStyle(self, retVal)
-proc get_CachedShape*(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedShape(self, retVal)
-proc get_CachedFillPatternColor*(self: ptr IUIAutomationStylesPattern, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedFillPatternColor(self, retVal)
-proc get_CachedExtendedProperties*(self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedExtendedProperties(self, retVal)
-proc GetCachedExtendedPropertiesAsArray*(self: ptr IUIAutomationStylesPattern, propertyArray: ptr ptr TExtendedProperty, propertyCount: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedExtendedPropertiesAsArray(self, propertyArray, propertyCount)
-proc GetItemByName*(self: ptr IUIAutomationSpreadsheetPattern, name: BSTR, element: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemByName(self, name, element)
-proc get_CurrentFormula*(self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentFormula(self, retVal)
-proc GetCurrentAnnotationObjects*(self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentAnnotationObjects(self, retVal)
-proc GetCurrentAnnotationTypes*(self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentAnnotationTypes(self, retVal)
-proc get_CachedFormula*(self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedFormula(self, retVal)
-proc GetCachedAnnotationObjects*(self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedAnnotationObjects(self, retVal)
-proc GetCachedAnnotationTypes*(self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedAnnotationTypes(self, retVal)
-proc Zoom*(self: ptr IUIAutomationTransformPattern2, zoomValue: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Zoom(self, zoomValue)
-proc ZoomByUnit*(self: ptr IUIAutomationTransformPattern2, zoomUnit: ZoomUnit): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ZoomByUnit(self, zoomUnit)
-proc get_CurrentCanZoom*(self: ptr IUIAutomationTransformPattern2, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentCanZoom(self, retVal)
-proc get_CachedCanZoom*(self: ptr IUIAutomationTransformPattern2, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedCanZoom(self, retVal)
-proc get_CurrentZoomLevel*(self: ptr IUIAutomationTransformPattern2, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentZoomLevel(self, retVal)
-proc get_CachedZoomLevel*(self: ptr IUIAutomationTransformPattern2, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedZoomLevel(self, retVal)
-proc get_CurrentZoomMinimum*(self: ptr IUIAutomationTransformPattern2, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentZoomMinimum(self, retVal)
-proc get_CachedZoomMinimum*(self: ptr IUIAutomationTransformPattern2, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedZoomMinimum(self, retVal)
-proc get_CurrentZoomMaximum*(self: ptr IUIAutomationTransformPattern2, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentZoomMaximum(self, retVal)
-proc get_CachedZoomMaximum*(self: ptr IUIAutomationTransformPattern2, retVal: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedZoomMaximum(self, retVal)
-proc get_TextContainer*(self: ptr IUIAutomationTextChildPattern, container: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TextContainer(self, container)
-proc get_TextRange*(self: ptr IUIAutomationTextChildPattern, range: ptr ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TextRange(self, range)
-proc get_CurrentIsGrabbed*(self: ptr IUIAutomationDragPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsGrabbed(self, retVal)
-proc get_CachedIsGrabbed*(self: ptr IUIAutomationDragPattern, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsGrabbed(self, retVal)
-proc get_CurrentDropEffect*(self: ptr IUIAutomationDragPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentDropEffect(self, retVal)
-proc get_CachedDropEffect*(self: ptr IUIAutomationDragPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedDropEffect(self, retVal)
-proc get_CurrentDropEffects*(self: ptr IUIAutomationDragPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentDropEffects(self, retVal)
-proc get_CachedDropEffects*(self: ptr IUIAutomationDragPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedDropEffects(self, retVal)
-proc GetCurrentGrabbedItems*(self: ptr IUIAutomationDragPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentGrabbedItems(self, retVal)
-proc GetCachedGrabbedItems*(self: ptr IUIAutomationDragPattern, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCachedGrabbedItems(self, retVal)
-proc get_CurrentDropTargetEffect*(self: ptr IUIAutomationDropTargetPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentDropTargetEffect(self, retVal)
-proc get_CachedDropTargetEffect*(self: ptr IUIAutomationDropTargetPattern, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedDropTargetEffect(self, retVal)
-proc get_CurrentDropTargetEffects*(self: ptr IUIAutomationDropTargetPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentDropTargetEffects(self, retVal)
-proc get_CachedDropTargetEffects*(self: ptr IUIAutomationDropTargetPattern, retVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedDropTargetEffects(self, retVal)
-proc get_CurrentOptimizeForVisualContent*(self: ptr IUIAutomationElement2, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentOptimizeForVisualContent(self, retVal)
-proc get_CachedOptimizeForVisualContent*(self: ptr IUIAutomationElement2, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedOptimizeForVisualContent(self, retVal)
-proc get_CurrentLiveSetting*(self: ptr IUIAutomationElement2, retVal: ptr LiveSetting): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentLiveSetting(self, retVal)
-proc get_CachedLiveSetting*(self: ptr IUIAutomationElement2, retVal: ptr LiveSetting): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedLiveSetting(self, retVal)
-proc get_CurrentFlowsFrom*(self: ptr IUIAutomationElement2, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentFlowsFrom(self, retVal)
-proc get_CachedFlowsFrom*(self: ptr IUIAutomationElement2, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedFlowsFrom(self, retVal)
-proc ShowContextMenu*(self: ptr IUIAutomationElement3): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowContextMenu(self)
-proc get_CurrentIsPeripheral*(self: ptr IUIAutomationElement3, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsPeripheral(self, retVal)
-proc get_CachedIsPeripheral*(self: ptr IUIAutomationElement3, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsPeripheral(self, retVal)
-proc get_CurrentPositionInSet*(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentPositionInSet(self, retVal)
-proc get_CurrentSizeOfSet*(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentSizeOfSet(self, retVal)
-proc get_CurrentLevel*(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentLevel(self, retVal)
-proc get_CurrentAnnotationTypes*(self: ptr IUIAutomationElement4, retVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentAnnotationTypes(self, retVal)
-proc get_CurrentAnnotationObjects*(self: ptr IUIAutomationElement4, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentAnnotationObjects(self, retVal)
-proc get_CachedPositionInSet*(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedPositionInSet(self, retVal)
-proc get_CachedSizeOfSet*(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedSizeOfSet(self, retVal)
-proc get_CachedLevel*(self: ptr IUIAutomationElement4, retVal: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedLevel(self, retVal)
-proc get_CachedAnnotationTypes*(self: ptr IUIAutomationElement4, retVal: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedAnnotationTypes(self, retVal)
-proc get_CachedAnnotationObjects*(self: ptr IUIAutomationElement4, retVal: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedAnnotationObjects(self, retVal)
-proc get_CurrentLandmarkType*(self: ptr IUIAutomationElement5, retVal: ptr LANDMARKTYPEID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentLandmarkType(self, retVal)
-proc get_CurrentLocalizedLandmarkType*(self: ptr IUIAutomationElement5, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentLocalizedLandmarkType(self, retVal)
-proc get_CachedLandmarkType*(self: ptr IUIAutomationElement5, retVal: ptr LANDMARKTYPEID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedLandmarkType(self, retVal)
-proc get_CachedLocalizedLandmarkType*(self: ptr IUIAutomationElement5, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedLocalizedLandmarkType(self, retVal)
-proc get_CurrentFullDescription*(self: ptr IUIAutomationElement6, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentFullDescription(self, retVal)
-proc get_CachedFullDescription*(self: ptr IUIAutomationElement6, retVal: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedFullDescription(self, retVal)
-proc FindFirstWithOptions*(self: ptr IUIAutomationElement7, scope: TreeScope, condition: ptr IUIAutomationCondition, traversalOptions: TreeTraversalOptions, root: ptr IUIAutomationElement, found: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindFirstWithOptions(self, scope, condition, traversalOptions, root, found)
-proc FindAllWithOptions*(self: ptr IUIAutomationElement7, scope: TreeScope, condition: ptr IUIAutomationCondition, traversalOptions: TreeTraversalOptions, root: ptr IUIAutomationElement, found: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindAllWithOptions(self, scope, condition, traversalOptions, root, found)
-proc FindFirstWithOptionsBuildCache*(self: ptr IUIAutomationElement7, scope: TreeScope, condition: ptr IUIAutomationCondition, cacheRequest: ptr IUIAutomationCacheRequest, traversalOptions: TreeTraversalOptions, root: ptr IUIAutomationElement, found: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindFirstWithOptionsBuildCache(self, scope, condition, cacheRequest, traversalOptions, root, found)
-proc FindAllWithOptionsBuildCache*(self: ptr IUIAutomationElement7, scope: TreeScope, condition: ptr IUIAutomationCondition, cacheRequest: ptr IUIAutomationCacheRequest, traversalOptions: TreeTraversalOptions, root: ptr IUIAutomationElement, found: ptr ptr IUIAutomationElementArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindAllWithOptionsBuildCache(self, scope, condition, cacheRequest, traversalOptions, root, found)
-proc GetCurrentMetadataValue*(self: ptr IUIAutomationElement7, targetId: int32, metadataId: METADATAID, returnVal: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentMetadataValue(self, targetId, metadataId, returnVal)
-proc get_CurrentHeadingLevel*(self: ptr IUIAutomationElement8, retVal: ptr HEADINGLEVELID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentHeadingLevel(self, retVal)
-proc get_CachedHeadingLevel*(self: ptr IUIAutomationElement8, retVal: ptr HEADINGLEVELID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedHeadingLevel(self, retVal)
-proc get_CurrentIsDialog*(self: ptr IUIAutomationElement9, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CurrentIsDialog(self, retVal)
-proc get_CachedIsDialog*(self: ptr IUIAutomationElement9, retVal: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CachedIsDialog(self, retVal)
-proc CreateProvider*(self: ptr IUIAutomationProxyFactory, hwnd: UIA_HWND, idObject: LONG, idChild: LONG, provider: ptr ptr IRawElementProviderSimple): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateProvider(self, hwnd, idObject, idChild, provider)
-proc get_ProxyFactoryId*(self: ptr IUIAutomationProxyFactory, factoryId: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ProxyFactoryId(self, factoryId)
-proc get_ProxyFactory*(self: ptr IUIAutomationProxyFactoryEntry, factory: ptr ptr IUIAutomationProxyFactory): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ProxyFactory(self, factory)
-proc get_ClassName*(self: ptr IUIAutomationProxyFactoryEntry, className: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ClassName(self, className)
-proc get_ImageName*(self: ptr IUIAutomationProxyFactoryEntry, imageName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ImageName(self, imageName)
-proc get_AllowSubstringMatch*(self: ptr IUIAutomationProxyFactoryEntry, allowSubstringMatch: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_AllowSubstringMatch(self, allowSubstringMatch)
-proc get_CanCheckBaseClass*(self: ptr IUIAutomationProxyFactoryEntry, canCheckBaseClass: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CanCheckBaseClass(self, canCheckBaseClass)
-proc get_NeedsAdviseEvents*(self: ptr IUIAutomationProxyFactoryEntry, adviseEvents: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_NeedsAdviseEvents(self, adviseEvents)
-proc put_ClassName*(self: ptr IUIAutomationProxyFactoryEntry, className: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ClassName(self, className)
-proc put_ImageName*(self: ptr IUIAutomationProxyFactoryEntry, imageName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ImageName(self, imageName)
-proc put_AllowSubstringMatch*(self: ptr IUIAutomationProxyFactoryEntry, allowSubstringMatch: BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_AllowSubstringMatch(self, allowSubstringMatch)
-proc put_CanCheckBaseClass*(self: ptr IUIAutomationProxyFactoryEntry, canCheckBaseClass: BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_CanCheckBaseClass(self, canCheckBaseClass)
-proc put_NeedsAdviseEvents*(self: ptr IUIAutomationProxyFactoryEntry, adviseEvents: BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_NeedsAdviseEvents(self, adviseEvents)
-proc SetWinEventsForAutomationEvent*(self: ptr IUIAutomationProxyFactoryEntry, eventId: EVENTID, propertyId: PROPERTYID, winEvents: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetWinEventsForAutomationEvent(self, eventId, propertyId, winEvents)
-proc GetWinEventsForAutomationEvent*(self: ptr IUIAutomationProxyFactoryEntry, eventId: EVENTID, propertyId: PROPERTYID, winEvents: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWinEventsForAutomationEvent(self, eventId, propertyId, winEvents)
-proc get_Count*(self: ptr IUIAutomationProxyFactoryMapping, count: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Count(self, count)
-proc GetTable*(self: ptr IUIAutomationProxyFactoryMapping, table: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTable(self, table)
-proc GetEntry*(self: ptr IUIAutomationProxyFactoryMapping, index: UINT, entry: ptr ptr IUIAutomationProxyFactoryEntry): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEntry(self, index, entry)
-proc SetTable*(self: ptr IUIAutomationProxyFactoryMapping, factoryList: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTable(self, factoryList)
-proc InsertEntries*(self: ptr IUIAutomationProxyFactoryMapping, before: UINT, factoryList: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InsertEntries(self, before, factoryList)
-proc InsertEntry*(self: ptr IUIAutomationProxyFactoryMapping, before: UINT, factory: ptr IUIAutomationProxyFactoryEntry): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InsertEntry(self, before, factory)
-proc RemoveEntry*(self: ptr IUIAutomationProxyFactoryMapping, index: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveEntry(self, index)
-proc ClearTable*(self: ptr IUIAutomationProxyFactoryMapping): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClearTable(self)
-proc RestoreDefaultTable*(self: ptr IUIAutomationProxyFactoryMapping): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RestoreDefaultTable(self)
-proc AddActiveTextPositionChangedEventHandler*(self: ptr IUIAutomationEventHandlerGroup, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationActiveTextPositionChangedEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddActiveTextPositionChangedEventHandler(self, scope, cacheRequest, handler)
-proc AddAutomationEventHandler*(self: ptr IUIAutomationEventHandlerGroup, eventId: EVENTID, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddAutomationEventHandler(self, eventId, scope, cacheRequest, handler)
-proc AddChangesEventHandler*(self: ptr IUIAutomationEventHandlerGroup, scope: TreeScope, changeTypes: ptr int32, changesCount: int32, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationChangesEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddChangesEventHandler(self, scope, changeTypes, changesCount, cacheRequest, handler)
-proc AddNotificationEventHandler*(self: ptr IUIAutomationEventHandlerGroup, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationNotificationEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddNotificationEventHandler(self, scope, cacheRequest, handler)
-proc AddPropertyChangedEventHandler*(self: ptr IUIAutomationEventHandlerGroup, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationPropertyChangedEventHandler, propertyArray: ptr PROPERTYID, propertyCount: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddPropertyChangedEventHandler(self, scope, cacheRequest, handler, propertyArray, propertyCount)
-proc AddStructureChangedEventHandler*(self: ptr IUIAutomationEventHandlerGroup, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationStructureChangedEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddStructureChangedEventHandler(self, scope, cacheRequest, handler)
-proc AddTextEditTextChangedEventHandler*(self: ptr IUIAutomationEventHandlerGroup, scope: TreeScope, textEditChangeType: TextEditChangeType, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationTextEditTextChangedEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddTextEditTextChangedEventHandler(self, scope, textEditChangeType, cacheRequest, handler)
-proc CompareElements*(self: ptr IUIAutomation, el1: ptr IUIAutomationElement, el2: ptr IUIAutomationElement, areSame: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CompareElements(self, el1, el2, areSame)
-proc CompareRuntimeIds*(self: ptr IUIAutomation, runtimeId1: ptr SAFEARRAY, runtimeId2: ptr SAFEARRAY, areSame: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CompareRuntimeIds(self, runtimeId1, runtimeId2, areSame)
-proc GetRootElement*(self: ptr IUIAutomation, root: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRootElement(self, root)
-proc ElementFromHandle*(self: ptr IUIAutomation, hwnd: UIA_HWND, element: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ElementFromHandle(self, hwnd, element)
-proc ElementFromPoint*(self: ptr IUIAutomation, pt: POINT, element: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ElementFromPoint(self, pt, element)
-proc GetFocusedElement*(self: ptr IUIAutomation, element: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFocusedElement(self, element)
-proc GetRootElementBuildCache*(self: ptr IUIAutomation, cacheRequest: ptr IUIAutomationCacheRequest, root: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRootElementBuildCache(self, cacheRequest, root)
-proc ElementFromHandleBuildCache*(self: ptr IUIAutomation, hwnd: UIA_HWND, cacheRequest: ptr IUIAutomationCacheRequest, element: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ElementFromHandleBuildCache(self, hwnd, cacheRequest, element)
-proc ElementFromPointBuildCache*(self: ptr IUIAutomation, pt: POINT, cacheRequest: ptr IUIAutomationCacheRequest, element: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ElementFromPointBuildCache(self, pt, cacheRequest, element)
-proc GetFocusedElementBuildCache*(self: ptr IUIAutomation, cacheRequest: ptr IUIAutomationCacheRequest, element: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFocusedElementBuildCache(self, cacheRequest, element)
-proc CreateTreeWalker*(self: ptr IUIAutomation, pCondition: ptr IUIAutomationCondition, walker: ptr ptr IUIAutomationTreeWalker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateTreeWalker(self, pCondition, walker)
-proc get_ControlViewWalker*(self: ptr IUIAutomation, walker: ptr ptr IUIAutomationTreeWalker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ControlViewWalker(self, walker)
-proc get_ContentViewWalker*(self: ptr IUIAutomation, walker: ptr ptr IUIAutomationTreeWalker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ContentViewWalker(self, walker)
-proc get_RawViewWalker*(self: ptr IUIAutomation, walker: ptr ptr IUIAutomationTreeWalker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_RawViewWalker(self, walker)
-proc get_RawViewCondition*(self: ptr IUIAutomation, condition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_RawViewCondition(self, condition)
-proc get_ControlViewCondition*(self: ptr IUIAutomation, condition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ControlViewCondition(self, condition)
-proc get_ContentViewCondition*(self: ptr IUIAutomation, condition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ContentViewCondition(self, condition)
-proc CreateCacheRequest*(self: ptr IUIAutomation, cacheRequest: ptr ptr IUIAutomationCacheRequest): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateCacheRequest(self, cacheRequest)
-proc CreateTrueCondition*(self: ptr IUIAutomation, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateTrueCondition(self, newCondition)
-proc CreateFalseCondition*(self: ptr IUIAutomation, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateFalseCondition(self, newCondition)
-proc CreatePropertyCondition*(self: ptr IUIAutomation, propertyId: PROPERTYID, value: VARIANT, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreatePropertyCondition(self, propertyId, value, newCondition)
-proc CreatePropertyConditionEx*(self: ptr IUIAutomation, propertyId: PROPERTYID, value: VARIANT, flags: PropertyConditionFlags, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreatePropertyConditionEx(self, propertyId, value, flags, newCondition)
-proc CreateAndCondition*(self: ptr IUIAutomation, condition1: ptr IUIAutomationCondition, condition2: ptr IUIAutomationCondition, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateAndCondition(self, condition1, condition2, newCondition)
-proc CreateAndConditionFromArray*(self: ptr IUIAutomation, conditions: ptr SAFEARRAY, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateAndConditionFromArray(self, conditions, newCondition)
-proc CreateAndConditionFromNativeArray*(self: ptr IUIAutomation, conditions: ptr ptr IUIAutomationCondition, conditionCount: int32, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateAndConditionFromNativeArray(self, conditions, conditionCount, newCondition)
-proc CreateOrCondition*(self: ptr IUIAutomation, condition1: ptr IUIAutomationCondition, condition2: ptr IUIAutomationCondition, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateOrCondition(self, condition1, condition2, newCondition)
-proc CreateOrConditionFromArray*(self: ptr IUIAutomation, conditions: ptr SAFEARRAY, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateOrConditionFromArray(self, conditions, newCondition)
-proc CreateOrConditionFromNativeArray*(self: ptr IUIAutomation, conditions: ptr ptr IUIAutomationCondition, conditionCount: int32, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateOrConditionFromNativeArray(self, conditions, conditionCount, newCondition)
-proc CreateNotCondition*(self: ptr IUIAutomation, condition: ptr IUIAutomationCondition, newCondition: ptr ptr IUIAutomationCondition): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateNotCondition(self, condition, newCondition)
-proc AddAutomationEventHandler*(self: ptr IUIAutomation, eventId: EVENTID, element: ptr IUIAutomationElement, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddAutomationEventHandler(self, eventId, element, scope, cacheRequest, handler)
-proc RemoveAutomationEventHandler*(self: ptr IUIAutomation, eventId: EVENTID, element: ptr IUIAutomationElement, handler: ptr IUIAutomationEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveAutomationEventHandler(self, eventId, element, handler)
-proc AddPropertyChangedEventHandlerNativeArray*(self: ptr IUIAutomation, element: ptr IUIAutomationElement, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationPropertyChangedEventHandler, propertyArray: ptr PROPERTYID, propertyCount: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddPropertyChangedEventHandlerNativeArray(self, element, scope, cacheRequest, handler, propertyArray, propertyCount)
-proc AddPropertyChangedEventHandler*(self: ptr IUIAutomation, element: ptr IUIAutomationElement, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationPropertyChangedEventHandler, propertyArray: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddPropertyChangedEventHandler(self, element, scope, cacheRequest, handler, propertyArray)
-proc RemovePropertyChangedEventHandler*(self: ptr IUIAutomation, element: ptr IUIAutomationElement, handler: ptr IUIAutomationPropertyChangedEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemovePropertyChangedEventHandler(self, element, handler)
-proc AddStructureChangedEventHandler*(self: ptr IUIAutomation, element: ptr IUIAutomationElement, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationStructureChangedEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddStructureChangedEventHandler(self, element, scope, cacheRequest, handler)
-proc RemoveStructureChangedEventHandler*(self: ptr IUIAutomation, element: ptr IUIAutomationElement, handler: ptr IUIAutomationStructureChangedEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveStructureChangedEventHandler(self, element, handler)
-proc AddFocusChangedEventHandler*(self: ptr IUIAutomation, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationFocusChangedEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddFocusChangedEventHandler(self, cacheRequest, handler)
-proc RemoveFocusChangedEventHandler*(self: ptr IUIAutomation, handler: ptr IUIAutomationFocusChangedEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveFocusChangedEventHandler(self, handler)
-proc RemoveAllEventHandlers*(self: ptr IUIAutomation): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveAllEventHandlers(self)
-proc IntNativeArrayToSafeArray*(self: ptr IUIAutomation, array: ptr int32, arrayCount: int32, safeArray: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IntNativeArrayToSafeArray(self, array, arrayCount, safeArray)
-proc IntSafeArrayToNativeArray*(self: ptr IUIAutomation, intArray: ptr SAFEARRAY, array: ptr ptr int32, arrayCount: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IntSafeArrayToNativeArray(self, intArray, array, arrayCount)
-proc RectToVariant*(self: ptr IUIAutomation, rc: RECT, `var`: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RectToVariant(self, rc, `var`)
-proc VariantToRect*(self: ptr IUIAutomation, `var`: VARIANT, rc: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.VariantToRect(self, `var`, rc)
-proc SafeArrayToRectNativeArray*(self: ptr IUIAutomation, rects: ptr SAFEARRAY, rectArray: ptr ptr RECT, rectArrayCount: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SafeArrayToRectNativeArray(self, rects, rectArray, rectArrayCount)
-proc CreateProxyFactoryEntry*(self: ptr IUIAutomation, factory: ptr IUIAutomationProxyFactory, factoryEntry: ptr ptr IUIAutomationProxyFactoryEntry): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateProxyFactoryEntry(self, factory, factoryEntry)
-proc get_ProxyFactoryMapping*(self: ptr IUIAutomation, factoryMapping: ptr ptr IUIAutomationProxyFactoryMapping): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ProxyFactoryMapping(self, factoryMapping)
-proc GetPropertyProgrammaticName*(self: ptr IUIAutomation, property: PROPERTYID, name: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyProgrammaticName(self, property, name)
-proc GetPatternProgrammaticName*(self: ptr IUIAutomation, pattern: PATTERNID, name: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPatternProgrammaticName(self, pattern, name)
-proc PollForPotentialSupportedPatterns*(self: ptr IUIAutomation, pElement: ptr IUIAutomationElement, patternIds: ptr ptr SAFEARRAY, patternNames: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PollForPotentialSupportedPatterns(self, pElement, patternIds, patternNames)
-proc PollForPotentialSupportedProperties*(self: ptr IUIAutomation, pElement: ptr IUIAutomationElement, propertyIds: ptr ptr SAFEARRAY, propertyNames: ptr ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PollForPotentialSupportedProperties(self, pElement, propertyIds, propertyNames)
-proc CheckNotSupported*(self: ptr IUIAutomation, value: VARIANT, isNotSupported: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CheckNotSupported(self, value, isNotSupported)
-proc get_ReservedNotSupportedValue*(self: ptr IUIAutomation, notSupportedValue: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ReservedNotSupportedValue(self, notSupportedValue)
-proc get_ReservedMixedAttributeValue*(self: ptr IUIAutomation, mixedAttributeValue: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ReservedMixedAttributeValue(self, mixedAttributeValue)
-proc ElementFromIAccessible*(self: ptr IUIAutomation, accessible: ptr IAccessible, childId: int32, element: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ElementFromIAccessible(self, accessible, childId, element)
-proc ElementFromIAccessibleBuildCache*(self: ptr IUIAutomation, accessible: ptr IAccessible, childId: int32, cacheRequest: ptr IUIAutomationCacheRequest, element: ptr ptr IUIAutomationElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ElementFromIAccessibleBuildCache(self, accessible, childId, cacheRequest, element)
-proc get_AutoSetFocus*(self: ptr IUIAutomation2, autoSetFocus: ptr BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_AutoSetFocus(self, autoSetFocus)
-proc put_AutoSetFocus*(self: ptr IUIAutomation2, autoSetFocus: BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_AutoSetFocus(self, autoSetFocus)
-proc get_ConnectionTimeout*(self: ptr IUIAutomation2, timeout: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ConnectionTimeout(self, timeout)
-proc put_ConnectionTimeout*(self: ptr IUIAutomation2, timeout: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ConnectionTimeout(self, timeout)
-proc get_TransactionTimeout*(self: ptr IUIAutomation2, timeout: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TransactionTimeout(self, timeout)
-proc put_TransactionTimeout*(self: ptr IUIAutomation2, timeout: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_TransactionTimeout(self, timeout)
-proc AddTextEditTextChangedEventHandler*(self: ptr IUIAutomation3, element: ptr IUIAutomationElement, scope: TreeScope, textEditChangeType: TextEditChangeType, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationTextEditTextChangedEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddTextEditTextChangedEventHandler(self, element, scope, textEditChangeType, cacheRequest, handler)
-proc RemoveTextEditTextChangedEventHandler*(self: ptr IUIAutomation3, element: ptr IUIAutomationElement, handler: ptr IUIAutomationTextEditTextChangedEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveTextEditTextChangedEventHandler(self, element, handler)
-proc AddChangesEventHandler*(self: ptr IUIAutomation4, element: ptr IUIAutomationElement, scope: TreeScope, changeTypes: ptr int32, changesCount: int32, pCacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationChangesEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddChangesEventHandler(self, element, scope, changeTypes, changesCount, pCacheRequest, handler)
-proc RemoveChangesEventHandler*(self: ptr IUIAutomation4, element: ptr IUIAutomationElement, handler: ptr IUIAutomationChangesEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveChangesEventHandler(self, element, handler)
-proc AddNotificationEventHandler*(self: ptr IUIAutomation5, element: ptr IUIAutomationElement, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationNotificationEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddNotificationEventHandler(self, element, scope, cacheRequest, handler)
-proc RemoveNotificationEventHandler*(self: ptr IUIAutomation5, element: ptr IUIAutomationElement, handler: ptr IUIAutomationNotificationEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveNotificationEventHandler(self, element, handler)
-proc CreateEventHandlerGroup*(self: ptr IUIAutomation6, handlerGroup: ptr ptr IUIAutomationEventHandlerGroup): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateEventHandlerGroup(self, handlerGroup)
-proc AddEventHandlerGroup*(self: ptr IUIAutomation6, element: ptr IUIAutomationElement, handlerGroup: ptr IUIAutomationEventHandlerGroup): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddEventHandlerGroup(self, element, handlerGroup)
-proc RemoveEventHandlerGroup*(self: ptr IUIAutomation6, element: ptr IUIAutomationElement, handlerGroup: ptr IUIAutomationEventHandlerGroup): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveEventHandlerGroup(self, element, handlerGroup)
-proc get_ConnectionRecoveryBehavior*(self: ptr IUIAutomation6, connectionRecoveryBehaviorOptions: ptr ConnectionRecoveryBehaviorOptions): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ConnectionRecoveryBehavior(self, connectionRecoveryBehaviorOptions)
-proc put_ConnectionRecoveryBehavior*(self: ptr IUIAutomation6, connectionRecoveryBehaviorOptions: ConnectionRecoveryBehaviorOptions): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ConnectionRecoveryBehavior(self, connectionRecoveryBehaviorOptions)
-proc get_CoalesceEvents*(self: ptr IUIAutomation6, coalesceEventsOptions: ptr CoalesceEventsOptions): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_CoalesceEvents(self, coalesceEventsOptions)
-proc put_CoalesceEvents*(self: ptr IUIAutomation6, coalesceEventsOptions: CoalesceEventsOptions): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_CoalesceEvents(self, coalesceEventsOptions)
-proc AddActiveTextPositionChangedEventHandler*(self: ptr IUIAutomation6, element: ptr IUIAutomationElement, scope: TreeScope, cacheRequest: ptr IUIAutomationCacheRequest, handler: ptr IUIAutomationActiveTextPositionChangedEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddActiveTextPositionChangedEventHandler(self, element, scope, cacheRequest, handler)
-proc RemoveActiveTextPositionChangedEventHandler*(self: ptr IUIAutomation6, element: ptr IUIAutomationElement, handler: ptr IUIAutomationActiveTextPositionChangedEventHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveActiveTextPositionChangedEventHandler(self, element, handler)
-converter winimConverterIRawElementProviderSimpleToIUnknown*(x: ptr IRawElementProviderSimple): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAccessibleExToIUnknown*(x: ptr IAccessibleEx): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRawElementProviderSimple2ToIRawElementProviderSimple*(x: ptr IRawElementProviderSimple2): ptr IRawElementProviderSimple = cast[ptr IRawElementProviderSimple](x)
-converter winimConverterIRawElementProviderSimple2ToIUnknown*(x: ptr IRawElementProviderSimple2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRawElementProviderSimple3ToIRawElementProviderSimple2*(x: ptr IRawElementProviderSimple3): ptr IRawElementProviderSimple2 = cast[ptr IRawElementProviderSimple2](x)
-converter winimConverterIRawElementProviderSimple3ToIRawElementProviderSimple*(x: ptr IRawElementProviderSimple3): ptr IRawElementProviderSimple = cast[ptr IRawElementProviderSimple](x)
-converter winimConverterIRawElementProviderSimple3ToIUnknown*(x: ptr IRawElementProviderSimple3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRawElementProviderFragmentRootToIUnknown*(x: ptr IRawElementProviderFragmentRoot): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRawElementProviderFragmentToIUnknown*(x: ptr IRawElementProviderFragment): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRawElementProviderAdviseEventsToIUnknown*(x: ptr IRawElementProviderAdviseEvents): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRawElementProviderHwndOverrideToIUnknown*(x: ptr IRawElementProviderHwndOverride): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIProxyProviderWinEventSinkToIUnknown*(x: ptr IProxyProviderWinEventSink): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIProxyProviderWinEventHandlerToIUnknown*(x: ptr IProxyProviderWinEventHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRawElementProviderWindowlessSiteToIUnknown*(x: ptr IRawElementProviderWindowlessSite): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAccessibleHostingElementProvidersToIUnknown*(x: ptr IAccessibleHostingElementProviders): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRawElementProviderHostingAccessiblesToIUnknown*(x: ptr IRawElementProviderHostingAccessibles): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDockProviderToIUnknown*(x: ptr IDockProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIExpandCollapseProviderToIUnknown*(x: ptr IExpandCollapseProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIGridProviderToIUnknown*(x: ptr IGridProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIGridItemProviderToIUnknown*(x: ptr IGridItemProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIInvokeProviderToIUnknown*(x: ptr IInvokeProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIMultipleViewProviderToIUnknown*(x: ptr IMultipleViewProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIRangeValueProviderToIUnknown*(x: ptr IRangeValueProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIScrollItemProviderToIUnknown*(x: ptr IScrollItemProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISelectionProviderToIUnknown*(x: ptr ISelectionProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISelectionProvider2ToISelectionProvider*(x: ptr ISelectionProvider2): ptr ISelectionProvider = cast[ptr ISelectionProvider](x)
-converter winimConverterISelectionProvider2ToIUnknown*(x: ptr ISelectionProvider2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIScrollProviderToIUnknown*(x: ptr IScrollProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISelectionItemProviderToIUnknown*(x: ptr ISelectionItemProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISynchronizedInputProviderToIUnknown*(x: ptr ISynchronizedInputProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITableProviderToIUnknown*(x: ptr ITableProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITableItemProviderToIUnknown*(x: ptr ITableItemProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIToggleProviderToIUnknown*(x: ptr IToggleProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITransformProviderToIUnknown*(x: ptr ITransformProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIValueProviderToIUnknown*(x: ptr IValueProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWindowProviderToIUnknown*(x: ptr IWindowProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterILegacyIAccessibleProviderToIUnknown*(x: ptr ILegacyIAccessibleProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIItemContainerProviderToIUnknown*(x: ptr IItemContainerProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIVirtualizedItemProviderToIUnknown*(x: ptr IVirtualizedItemProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIObjectModelProviderToIUnknown*(x: ptr IObjectModelProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAnnotationProviderToIUnknown*(x: ptr IAnnotationProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIStylesProviderToIUnknown*(x: ptr IStylesProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISpreadsheetProviderToIUnknown*(x: ptr ISpreadsheetProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterISpreadsheetItemProviderToIUnknown*(x: ptr ISpreadsheetItemProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITransformProvider2ToITransformProvider*(x: ptr ITransformProvider2): ptr ITransformProvider = cast[ptr ITransformProvider](x)
-converter winimConverterITransformProvider2ToIUnknown*(x: ptr ITransformProvider2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDragProviderToIUnknown*(x: ptr IDragProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIDropTargetProviderToIUnknown*(x: ptr IDropTargetProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITextRangeProviderToIUnknown*(x: ptr ITextRangeProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITextProviderToIUnknown*(x: ptr ITextProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITextProvider2ToITextProvider*(x: ptr ITextProvider2): ptr ITextProvider = cast[ptr ITextProvider](x)
-converter winimConverterITextProvider2ToIUnknown*(x: ptr ITextProvider2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITextEditProviderToITextProvider*(x: ptr ITextEditProvider): ptr ITextProvider = cast[ptr ITextProvider](x)
-converter winimConverterITextEditProviderToIUnknown*(x: ptr ITextEditProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITextRangeProvider2ToITextRangeProvider*(x: ptr ITextRangeProvider2): ptr ITextRangeProvider = cast[ptr ITextRangeProvider](x)
-converter winimConverterITextRangeProvider2ToIUnknown*(x: ptr ITextRangeProvider2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterITextChildProviderToIUnknown*(x: ptr ITextChildProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterICustomNavigationProviderToIUnknown*(x: ptr ICustomNavigationProvider): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationPatternInstanceToIUnknown*(x: ptr IUIAutomationPatternInstance): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationPatternHandlerToIUnknown*(x: ptr IUIAutomationPatternHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationRegistrarToIUnknown*(x: ptr IUIAutomationRegistrar): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationElementToIUnknown*(x: ptr IUIAutomationElement): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationElementArrayToIUnknown*(x: ptr IUIAutomationElementArray): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationConditionToIUnknown*(x: ptr IUIAutomationCondition): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationBoolConditionToIUIAutomationCondition*(x: ptr IUIAutomationBoolCondition): ptr IUIAutomationCondition = cast[ptr IUIAutomationCondition](x)
-converter winimConverterIUIAutomationBoolConditionToIUnknown*(x: ptr IUIAutomationBoolCondition): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationPropertyConditionToIUIAutomationCondition*(x: ptr IUIAutomationPropertyCondition): ptr IUIAutomationCondition = cast[ptr IUIAutomationCondition](x)
-converter winimConverterIUIAutomationPropertyConditionToIUnknown*(x: ptr IUIAutomationPropertyCondition): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationAndConditionToIUIAutomationCondition*(x: ptr IUIAutomationAndCondition): ptr IUIAutomationCondition = cast[ptr IUIAutomationCondition](x)
-converter winimConverterIUIAutomationAndConditionToIUnknown*(x: ptr IUIAutomationAndCondition): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationOrConditionToIUIAutomationCondition*(x: ptr IUIAutomationOrCondition): ptr IUIAutomationCondition = cast[ptr IUIAutomationCondition](x)
-converter winimConverterIUIAutomationOrConditionToIUnknown*(x: ptr IUIAutomationOrCondition): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationNotConditionToIUIAutomationCondition*(x: ptr IUIAutomationNotCondition): ptr IUIAutomationCondition = cast[ptr IUIAutomationCondition](x)
-converter winimConverterIUIAutomationNotConditionToIUnknown*(x: ptr IUIAutomationNotCondition): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationCacheRequestToIUnknown*(x: ptr IUIAutomationCacheRequest): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTreeWalkerToIUnknown*(x: ptr IUIAutomationTreeWalker): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationEventHandlerToIUnknown*(x: ptr IUIAutomationEventHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationPropertyChangedEventHandlerToIUnknown*(x: ptr IUIAutomationPropertyChangedEventHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationStructureChangedEventHandlerToIUnknown*(x: ptr IUIAutomationStructureChangedEventHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationFocusChangedEventHandlerToIUnknown*(x: ptr IUIAutomationFocusChangedEventHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTextEditTextChangedEventHandlerToIUnknown*(x: ptr IUIAutomationTextEditTextChangedEventHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationChangesEventHandlerToIUnknown*(x: ptr IUIAutomationChangesEventHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationNotificationEventHandlerToIUnknown*(x: ptr IUIAutomationNotificationEventHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationInvokePatternToIUnknown*(x: ptr IUIAutomationInvokePattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationDockPatternToIUnknown*(x: ptr IUIAutomationDockPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationExpandCollapsePatternToIUnknown*(x: ptr IUIAutomationExpandCollapsePattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationGridPatternToIUnknown*(x: ptr IUIAutomationGridPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationGridItemPatternToIUnknown*(x: ptr IUIAutomationGridItemPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationMultipleViewPatternToIUnknown*(x: ptr IUIAutomationMultipleViewPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationObjectModelPatternToIUnknown*(x: ptr IUIAutomationObjectModelPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationRangeValuePatternToIUnknown*(x: ptr IUIAutomationRangeValuePattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationScrollPatternToIUnknown*(x: ptr IUIAutomationScrollPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationScrollItemPatternToIUnknown*(x: ptr IUIAutomationScrollItemPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationSelectionPatternToIUnknown*(x: ptr IUIAutomationSelectionPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationSelectionPattern2ToIUIAutomationSelectionPattern*(x: ptr IUIAutomationSelectionPattern2): ptr IUIAutomationSelectionPattern = cast[ptr IUIAutomationSelectionPattern](x)
-converter winimConverterIUIAutomationSelectionPattern2ToIUnknown*(x: ptr IUIAutomationSelectionPattern2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationSelectionItemPatternToIUnknown*(x: ptr IUIAutomationSelectionItemPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationSynchronizedInputPatternToIUnknown*(x: ptr IUIAutomationSynchronizedInputPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTablePatternToIUnknown*(x: ptr IUIAutomationTablePattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTableItemPatternToIUnknown*(x: ptr IUIAutomationTableItemPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTogglePatternToIUnknown*(x: ptr IUIAutomationTogglePattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTransformPatternToIUnknown*(x: ptr IUIAutomationTransformPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationValuePatternToIUnknown*(x: ptr IUIAutomationValuePattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationWindowPatternToIUnknown*(x: ptr IUIAutomationWindowPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTextRangeToIUnknown*(x: ptr IUIAutomationTextRange): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTextRange2ToIUIAutomationTextRange*(x: ptr IUIAutomationTextRange2): ptr IUIAutomationTextRange = cast[ptr IUIAutomationTextRange](x)
-converter winimConverterIUIAutomationTextRange2ToIUnknown*(x: ptr IUIAutomationTextRange2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTextRange3ToIUIAutomationTextRange2*(x: ptr IUIAutomationTextRange3): ptr IUIAutomationTextRange2 = cast[ptr IUIAutomationTextRange2](x)
-converter winimConverterIUIAutomationTextRange3ToIUIAutomationTextRange*(x: ptr IUIAutomationTextRange3): ptr IUIAutomationTextRange = cast[ptr IUIAutomationTextRange](x)
-converter winimConverterIUIAutomationTextRange3ToIUnknown*(x: ptr IUIAutomationTextRange3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTextRangeArrayToIUnknown*(x: ptr IUIAutomationTextRangeArray): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTextPatternToIUnknown*(x: ptr IUIAutomationTextPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTextPattern2ToIUIAutomationTextPattern*(x: ptr IUIAutomationTextPattern2): ptr IUIAutomationTextPattern = cast[ptr IUIAutomationTextPattern](x)
-converter winimConverterIUIAutomationTextPattern2ToIUnknown*(x: ptr IUIAutomationTextPattern2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTextEditPatternToIUIAutomationTextPattern*(x: ptr IUIAutomationTextEditPattern): ptr IUIAutomationTextPattern = cast[ptr IUIAutomationTextPattern](x)
-converter winimConverterIUIAutomationTextEditPatternToIUnknown*(x: ptr IUIAutomationTextEditPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationCustomNavigationPatternToIUnknown*(x: ptr IUIAutomationCustomNavigationPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationActiveTextPositionChangedEventHandlerToIUnknown*(x: ptr IUIAutomationActiveTextPositionChangedEventHandler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationLegacyIAccessiblePatternToIUnknown*(x: ptr IUIAutomationLegacyIAccessiblePattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationItemContainerPatternToIUnknown*(x: ptr IUIAutomationItemContainerPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationVirtualizedItemPatternToIUnknown*(x: ptr IUIAutomationVirtualizedItemPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationAnnotationPatternToIUnknown*(x: ptr IUIAutomationAnnotationPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationStylesPatternToIUnknown*(x: ptr IUIAutomationStylesPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationSpreadsheetPatternToIUnknown*(x: ptr IUIAutomationSpreadsheetPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationSpreadsheetItemPatternToIUnknown*(x: ptr IUIAutomationSpreadsheetItemPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTransformPattern2ToIUIAutomationTransformPattern*(x: ptr IUIAutomationTransformPattern2): ptr IUIAutomationTransformPattern = cast[ptr IUIAutomationTransformPattern](x)
-converter winimConverterIUIAutomationTransformPattern2ToIUnknown*(x: ptr IUIAutomationTransformPattern2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationTextChildPatternToIUnknown*(x: ptr IUIAutomationTextChildPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationDragPatternToIUnknown*(x: ptr IUIAutomationDragPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationDropTargetPatternToIUnknown*(x: ptr IUIAutomationDropTargetPattern): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationElement2ToIUIAutomationElement*(x: ptr IUIAutomationElement2): ptr IUIAutomationElement = cast[ptr IUIAutomationElement](x)
-converter winimConverterIUIAutomationElement2ToIUnknown*(x: ptr IUIAutomationElement2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationElement3ToIUIAutomationElement2*(x: ptr IUIAutomationElement3): ptr IUIAutomationElement2 = cast[ptr IUIAutomationElement2](x)
-converter winimConverterIUIAutomationElement3ToIUIAutomationElement*(x: ptr IUIAutomationElement3): ptr IUIAutomationElement = cast[ptr IUIAutomationElement](x)
-converter winimConverterIUIAutomationElement3ToIUnknown*(x: ptr IUIAutomationElement3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationElement4ToIUIAutomationElement3*(x: ptr IUIAutomationElement4): ptr IUIAutomationElement3 = cast[ptr IUIAutomationElement3](x)
-converter winimConverterIUIAutomationElement4ToIUIAutomationElement2*(x: ptr IUIAutomationElement4): ptr IUIAutomationElement2 = cast[ptr IUIAutomationElement2](x)
-converter winimConverterIUIAutomationElement4ToIUIAutomationElement*(x: ptr IUIAutomationElement4): ptr IUIAutomationElement = cast[ptr IUIAutomationElement](x)
-converter winimConverterIUIAutomationElement4ToIUnknown*(x: ptr IUIAutomationElement4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationElement5ToIUIAutomationElement4*(x: ptr IUIAutomationElement5): ptr IUIAutomationElement4 = cast[ptr IUIAutomationElement4](x)
-converter winimConverterIUIAutomationElement5ToIUIAutomationElement3*(x: ptr IUIAutomationElement5): ptr IUIAutomationElement3 = cast[ptr IUIAutomationElement3](x)
-converter winimConverterIUIAutomationElement5ToIUIAutomationElement2*(x: ptr IUIAutomationElement5): ptr IUIAutomationElement2 = cast[ptr IUIAutomationElement2](x)
-converter winimConverterIUIAutomationElement5ToIUIAutomationElement*(x: ptr IUIAutomationElement5): ptr IUIAutomationElement = cast[ptr IUIAutomationElement](x)
-converter winimConverterIUIAutomationElement5ToIUnknown*(x: ptr IUIAutomationElement5): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationElement6ToIUIAutomationElement5*(x: ptr IUIAutomationElement6): ptr IUIAutomationElement5 = cast[ptr IUIAutomationElement5](x)
-converter winimConverterIUIAutomationElement6ToIUIAutomationElement4*(x: ptr IUIAutomationElement6): ptr IUIAutomationElement4 = cast[ptr IUIAutomationElement4](x)
-converter winimConverterIUIAutomationElement6ToIUIAutomationElement3*(x: ptr IUIAutomationElement6): ptr IUIAutomationElement3 = cast[ptr IUIAutomationElement3](x)
-converter winimConverterIUIAutomationElement6ToIUIAutomationElement2*(x: ptr IUIAutomationElement6): ptr IUIAutomationElement2 = cast[ptr IUIAutomationElement2](x)
-converter winimConverterIUIAutomationElement6ToIUIAutomationElement*(x: ptr IUIAutomationElement6): ptr IUIAutomationElement = cast[ptr IUIAutomationElement](x)
-converter winimConverterIUIAutomationElement6ToIUnknown*(x: ptr IUIAutomationElement6): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationElement7ToIUIAutomationElement6*(x: ptr IUIAutomationElement7): ptr IUIAutomationElement6 = cast[ptr IUIAutomationElement6](x)
-converter winimConverterIUIAutomationElement7ToIUIAutomationElement5*(x: ptr IUIAutomationElement7): ptr IUIAutomationElement5 = cast[ptr IUIAutomationElement5](x)
-converter winimConverterIUIAutomationElement7ToIUIAutomationElement4*(x: ptr IUIAutomationElement7): ptr IUIAutomationElement4 = cast[ptr IUIAutomationElement4](x)
-converter winimConverterIUIAutomationElement7ToIUIAutomationElement3*(x: ptr IUIAutomationElement7): ptr IUIAutomationElement3 = cast[ptr IUIAutomationElement3](x)
-converter winimConverterIUIAutomationElement7ToIUIAutomationElement2*(x: ptr IUIAutomationElement7): ptr IUIAutomationElement2 = cast[ptr IUIAutomationElement2](x)
-converter winimConverterIUIAutomationElement7ToIUIAutomationElement*(x: ptr IUIAutomationElement7): ptr IUIAutomationElement = cast[ptr IUIAutomationElement](x)
-converter winimConverterIUIAutomationElement7ToIUnknown*(x: ptr IUIAutomationElement7): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationElement8ToIUIAutomationElement7*(x: ptr IUIAutomationElement8): ptr IUIAutomationElement7 = cast[ptr IUIAutomationElement7](x)
-converter winimConverterIUIAutomationElement8ToIUIAutomationElement6*(x: ptr IUIAutomationElement8): ptr IUIAutomationElement6 = cast[ptr IUIAutomationElement6](x)
-converter winimConverterIUIAutomationElement8ToIUIAutomationElement5*(x: ptr IUIAutomationElement8): ptr IUIAutomationElement5 = cast[ptr IUIAutomationElement5](x)
-converter winimConverterIUIAutomationElement8ToIUIAutomationElement4*(x: ptr IUIAutomationElement8): ptr IUIAutomationElement4 = cast[ptr IUIAutomationElement4](x)
-converter winimConverterIUIAutomationElement8ToIUIAutomationElement3*(x: ptr IUIAutomationElement8): ptr IUIAutomationElement3 = cast[ptr IUIAutomationElement3](x)
-converter winimConverterIUIAutomationElement8ToIUIAutomationElement2*(x: ptr IUIAutomationElement8): ptr IUIAutomationElement2 = cast[ptr IUIAutomationElement2](x)
-converter winimConverterIUIAutomationElement8ToIUIAutomationElement*(x: ptr IUIAutomationElement8): ptr IUIAutomationElement = cast[ptr IUIAutomationElement](x)
-converter winimConverterIUIAutomationElement8ToIUnknown*(x: ptr IUIAutomationElement8): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationElement9ToIUIAutomationElement8*(x: ptr IUIAutomationElement9): ptr IUIAutomationElement8 = cast[ptr IUIAutomationElement8](x)
-converter winimConverterIUIAutomationElement9ToIUIAutomationElement7*(x: ptr IUIAutomationElement9): ptr IUIAutomationElement7 = cast[ptr IUIAutomationElement7](x)
-converter winimConverterIUIAutomationElement9ToIUIAutomationElement6*(x: ptr IUIAutomationElement9): ptr IUIAutomationElement6 = cast[ptr IUIAutomationElement6](x)
-converter winimConverterIUIAutomationElement9ToIUIAutomationElement5*(x: ptr IUIAutomationElement9): ptr IUIAutomationElement5 = cast[ptr IUIAutomationElement5](x)
-converter winimConverterIUIAutomationElement9ToIUIAutomationElement4*(x: ptr IUIAutomationElement9): ptr IUIAutomationElement4 = cast[ptr IUIAutomationElement4](x)
-converter winimConverterIUIAutomationElement9ToIUIAutomationElement3*(x: ptr IUIAutomationElement9): ptr IUIAutomationElement3 = cast[ptr IUIAutomationElement3](x)
-converter winimConverterIUIAutomationElement9ToIUIAutomationElement2*(x: ptr IUIAutomationElement9): ptr IUIAutomationElement2 = cast[ptr IUIAutomationElement2](x)
-converter winimConverterIUIAutomationElement9ToIUIAutomationElement*(x: ptr IUIAutomationElement9): ptr IUIAutomationElement = cast[ptr IUIAutomationElement](x)
-converter winimConverterIUIAutomationElement9ToIUnknown*(x: ptr IUIAutomationElement9): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationProxyFactoryToIUnknown*(x: ptr IUIAutomationProxyFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationProxyFactoryEntryToIUnknown*(x: ptr IUIAutomationProxyFactoryEntry): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationProxyFactoryMappingToIUnknown*(x: ptr IUIAutomationProxyFactoryMapping): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationEventHandlerGroupToIUnknown*(x: ptr IUIAutomationEventHandlerGroup): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomationToIUnknown*(x: ptr IUIAutomation): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomation2ToIUIAutomation*(x: ptr IUIAutomation2): ptr IUIAutomation = cast[ptr IUIAutomation](x)
-converter winimConverterIUIAutomation2ToIUnknown*(x: ptr IUIAutomation2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomation3ToIUIAutomation2*(x: ptr IUIAutomation3): ptr IUIAutomation2 = cast[ptr IUIAutomation2](x)
-converter winimConverterIUIAutomation3ToIUIAutomation*(x: ptr IUIAutomation3): ptr IUIAutomation = cast[ptr IUIAutomation](x)
-converter winimConverterIUIAutomation3ToIUnknown*(x: ptr IUIAutomation3): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomation4ToIUIAutomation3*(x: ptr IUIAutomation4): ptr IUIAutomation3 = cast[ptr IUIAutomation3](x)
-converter winimConverterIUIAutomation4ToIUIAutomation2*(x: ptr IUIAutomation4): ptr IUIAutomation2 = cast[ptr IUIAutomation2](x)
-converter winimConverterIUIAutomation4ToIUIAutomation*(x: ptr IUIAutomation4): ptr IUIAutomation = cast[ptr IUIAutomation](x)
-converter winimConverterIUIAutomation4ToIUnknown*(x: ptr IUIAutomation4): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomation5ToIUIAutomation4*(x: ptr IUIAutomation5): ptr IUIAutomation4 = cast[ptr IUIAutomation4](x)
-converter winimConverterIUIAutomation5ToIUIAutomation3*(x: ptr IUIAutomation5): ptr IUIAutomation3 = cast[ptr IUIAutomation3](x)
-converter winimConverterIUIAutomation5ToIUIAutomation2*(x: ptr IUIAutomation5): ptr IUIAutomation2 = cast[ptr IUIAutomation2](x)
-converter winimConverterIUIAutomation5ToIUIAutomation*(x: ptr IUIAutomation5): ptr IUIAutomation = cast[ptr IUIAutomation](x)
-converter winimConverterIUIAutomation5ToIUnknown*(x: ptr IUIAutomation5): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIUIAutomation6ToIUIAutomation5*(x: ptr IUIAutomation6): ptr IUIAutomation5 = cast[ptr IUIAutomation5](x)
-converter winimConverterIUIAutomation6ToIUIAutomation4*(x: ptr IUIAutomation6): ptr IUIAutomation4 = cast[ptr IUIAutomation4](x)
-converter winimConverterIUIAutomation6ToIUIAutomation3*(x: ptr IUIAutomation6): ptr IUIAutomation3 = cast[ptr IUIAutomation3](x)
-converter winimConverterIUIAutomation6ToIUIAutomation2*(x: ptr IUIAutomation6): ptr IUIAutomation2 = cast[ptr IUIAutomation2](x)
-converter winimConverterIUIAutomation6ToIUIAutomation*(x: ptr IUIAutomation6): ptr IUIAutomation = cast[ptr IUIAutomation](x)
-converter winimConverterIUIAutomation6ToIUnknown*(x: ptr IUIAutomation6): ptr IUnknown = cast[ptr IUnknown](x)
+    CreateEventHandlerGroup*: proc(
+      self: ptr IUIAutomation6, handlerGroup: ptr ptr IUIAutomationEventHandlerGroup
+    ): HRESULT {.stdcall.}
+    AddEventHandlerGroup*: proc(
+      self: ptr IUIAutomation6,
+      element: ptr IUIAutomationElement,
+      handlerGroup: ptr IUIAutomationEventHandlerGroup,
+    ): HRESULT {.stdcall.}
+    RemoveEventHandlerGroup*: proc(
+      self: ptr IUIAutomation6,
+      element: ptr IUIAutomationElement,
+      handlerGroup: ptr IUIAutomationEventHandlerGroup,
+    ): HRESULT {.stdcall.}
+    get_ConnectionRecoveryBehavior*: proc(
+      self: ptr IUIAutomation6,
+      connectionRecoveryBehaviorOptions: ptr ConnectionRecoveryBehaviorOptions,
+    ): HRESULT {.stdcall.}
+    put_ConnectionRecoveryBehavior*: proc(
+      self: ptr IUIAutomation6,
+      connectionRecoveryBehaviorOptions: ConnectionRecoveryBehaviorOptions,
+    ): HRESULT {.stdcall.}
+    get_CoalesceEvents*: proc(
+      self: ptr IUIAutomation6, coalesceEventsOptions: ptr CoalesceEventsOptions
+    ): HRESULT {.stdcall.}
+    put_CoalesceEvents*: proc(
+      self: ptr IUIAutomation6, coalesceEventsOptions: CoalesceEventsOptions
+    ): HRESULT {.stdcall.}
+    AddActiveTextPositionChangedEventHandler*: proc(
+      self: ptr IUIAutomation6,
+      element: ptr IUIAutomationElement,
+      scope: TreeScope,
+      cacheRequest: ptr IUIAutomationCacheRequest,
+      handler: ptr IUIAutomationActiveTextPositionChangedEventHandler,
+    ): HRESULT {.stdcall.}
+    RemoveActiveTextPositionChangedEventHandler*: proc(
+      self: ptr IUIAutomation6,
+      element: ptr IUIAutomationElement,
+      handler: ptr IUIAutomationActiveTextPositionChangedEventHandler,
+    ): HRESULT {.stdcall.}
+
+proc UiaGetErrorDescription*(
+  pDescription: ptr BSTR
+): BOOL {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaHUiaNodeFromVariant*(
+  pvar: ptr VARIANT, phnode: ptr HUIANODE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaHPatternObjectFromVariant*(
+  pvar: ptr VARIANT, phobj: ptr HUIAPATTERNOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaHTextRangeFromVariant*(
+  pvar: ptr VARIANT, phtextrange: ptr HUIATEXTRANGE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaNodeRelease*(
+  hnode: HUIANODE
+): BOOL {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaGetPropertyValue*(
+  hnode: HUIANODE, propertyId: PROPERTYID, pValue: ptr VARIANT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaGetPatternProvider*(
+  hnode: HUIANODE, patternId: PATTERNID, phobj: ptr HUIAPATTERNOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaGetRuntimeId*(
+  hnode: HUIANODE, pruntimeId: ptr ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaSetFocus*(
+  hnode: HUIANODE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaNavigate*(
+  hnode: HUIANODE,
+  direction: NavigateDirection,
+  pCondition: ptr UiaCondition,
+  pRequest: ptr UiaCacheRequest,
+  ppRequestedData: ptr ptr SAFEARRAY,
+  ppTreeStructure: ptr BSTR,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaGetUpdatedCache*(
+  hnode: HUIANODE,
+  pRequest: ptr UiaCacheRequest,
+  normalizeState: NormalizeState,
+  pNormalizeCondition: ptr UiaCondition,
+  ppRequestedData: ptr ptr SAFEARRAY,
+  ppTreeStructure: ptr BSTR,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaFind*(
+  hnode: HUIANODE,
+  pParams: ptr UiaFindParams,
+  pRequest: ptr UiaCacheRequest,
+  ppRequestedData: ptr ptr SAFEARRAY,
+  ppOffsets: ptr ptr SAFEARRAY,
+  ppTreeStructures: ptr ptr SAFEARRAY,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaNodeFromPoint*(
+  x: float64,
+  y: float64,
+  pRequest: ptr UiaCacheRequest,
+  ppRequestedData: ptr ptr SAFEARRAY,
+  ppTreeStructure: ptr BSTR,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaNodeFromFocus*(
+  pRequest: ptr UiaCacheRequest,
+  ppRequestedData: ptr ptr SAFEARRAY,
+  ppTreeStructure: ptr BSTR,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaNodeFromHandle*(
+  hwnd: HWND, phnode: ptr HUIANODE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaNodeFromProvider*(
+  pProvider: ptr IRawElementProviderSimple, phnode: ptr HUIANODE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaGetRootNode*(
+  phnode: ptr HUIANODE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaRegisterProviderCallback*(
+  pCallback: UiaProviderCallback
+): void {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaLookupId*(
+  `type`: AutomationIdentifierType, pGuid: ptr GUID
+): int32 {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaGetReservedNotSupportedValue*(
+  punkNotSupportedValue: ptr ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaGetReservedMixedAttributeValue*(
+  punkMixedAttributeValue: ptr ptr IUnknown
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaClientsAreListening*(): BOOL {.
+  winapi, stdcall, dynlib: "uiautomationcore", importc
+.}
+
+proc UiaRaiseAutomationPropertyChangedEvent*(
+  pProvider: ptr IRawElementProviderSimple,
+  id: PROPERTYID,
+  oldValue: VARIANT,
+  newValue: VARIANT,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaRaiseAutomationEvent*(
+  pProvider: ptr IRawElementProviderSimple, id: EVENTID
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaRaiseStructureChangedEvent*(
+  pProvider: ptr IRawElementProviderSimple,
+  structureChangeType: StructureChangeType,
+  pRuntimeId: ptr int32,
+  cRuntimeIdLen: int32,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaRaiseAsyncContentLoadedEvent*(
+  pProvider: ptr IRawElementProviderSimple,
+  asyncContentLoadedState: AsyncContentLoadedState,
+  percentComplete: float64,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaRaiseTextEditTextChangedEvent*(
+  pProvider: ptr IRawElementProviderSimple,
+  textEditChangeType: TextEditChangeType,
+  pChangedData: ptr SAFEARRAY,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaRaiseChangesEvent*(
+  pProvider: ptr IRawElementProviderSimple,
+  eventIdCount: int32,
+  pUiaChanges: ptr UiaChangeInfo,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaRaiseNotificationEvent*(
+  provider: ptr IRawElementProviderSimple,
+  notificationKind: NotificationKind,
+  notificationProcessing: NotificationProcessing,
+  displayString: BSTR,
+  activityId: BSTR,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaRaiseActiveTextPositionChangedEvent*(
+  provider: ptr IRawElementProviderSimple, textRange: ptr ITextRangeProvider
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaAddEvent*(
+  hnode: HUIANODE,
+  eventId: EVENTID,
+  pCallback: UiaEventCallback,
+  scope: TreeScope,
+  pProperties: ptr PROPERTYID,
+  cProperties: int32,
+  pRequest: ptr UiaCacheRequest,
+  phEvent: ptr HUIAEVENT,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaRemoveEvent*(
+  hEvent: HUIAEVENT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaEventAddWindow*(
+  hEvent: HUIAEVENT, hwnd: HWND
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaEventRemoveWindow*(
+  hEvent: HUIAEVENT, hwnd: HWND
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc DockPattern_SetDockPosition*(
+  hobj: HUIAPATTERNOBJECT, dockPosition: DockPosition
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc ExpandCollapsePattern_Collapse*(
+  hobj: HUIAPATTERNOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc ExpandCollapsePattern_Expand*(
+  hobj: HUIAPATTERNOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc GridPattern_GetItem*(
+  hobj: HUIAPATTERNOBJECT, row: int32, column: int32, pResult: ptr HUIANODE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc InvokePattern_Invoke*(
+  hobj: HUIAPATTERNOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc MultipleViewPattern_GetViewName*(
+  hobj: HUIAPATTERNOBJECT, viewId: int32, ppStr: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc MultipleViewPattern_SetCurrentView*(
+  hobj: HUIAPATTERNOBJECT, viewId: int32
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc RangeValuePattern_SetValue*(
+  hobj: HUIAPATTERNOBJECT, val: float64
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc ScrollItemPattern_ScrollIntoView*(
+  hobj: HUIAPATTERNOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc ScrollPattern_Scroll*(
+  hobj: HUIAPATTERNOBJECT, horizontalAmount: ScrollAmount, verticalAmount: ScrollAmount
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc ScrollPattern_SetScrollPercent*(
+  hobj: HUIAPATTERNOBJECT, horizontalPercent: float64, verticalPercent: float64
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc SelectionItemPattern_AddToSelection*(
+  hobj: HUIAPATTERNOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc SelectionItemPattern_RemoveFromSelection*(
+  hobj: HUIAPATTERNOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc SelectionItemPattern_Select*(
+  hobj: HUIAPATTERNOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TogglePattern_Toggle*(
+  hobj: HUIAPATTERNOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TransformPattern_Move*(
+  hobj: HUIAPATTERNOBJECT, x: float64, y: float64
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TransformPattern_Resize*(
+  hobj: HUIAPATTERNOBJECT, width: float64, height: float64
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TransformPattern_Rotate*(
+  hobj: HUIAPATTERNOBJECT, degrees: float64
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc ValuePattern_SetValue*(
+  hobj: HUIAPATTERNOBJECT, pVal: LPCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc WindowPattern_Close*(
+  hobj: HUIAPATTERNOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc WindowPattern_SetWindowVisualState*(
+  hobj: HUIAPATTERNOBJECT, state: WindowVisualState
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc WindowPattern_WaitForInputIdle*(
+  hobj: HUIAPATTERNOBJECT, milliseconds: int32, pResult: ptr BOOL
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextPattern_GetSelection*(
+  hobj: HUIAPATTERNOBJECT, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextPattern_GetVisibleRanges*(
+  hobj: HUIAPATTERNOBJECT, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextPattern_RangeFromChild*(
+  hobj: HUIAPATTERNOBJECT, hnodeChild: HUIANODE, pRetVal: ptr HUIATEXTRANGE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextPattern_RangeFromPoint*(
+  hobj: HUIAPATTERNOBJECT, point: UiaPoint, pRetVal: ptr HUIATEXTRANGE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextPattern_get_DocumentRange*(
+  hobj: HUIAPATTERNOBJECT, pRetVal: ptr HUIATEXTRANGE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextPattern_get_SupportedTextSelection*(
+  hobj: HUIAPATTERNOBJECT, pRetVal: ptr SupportedTextSelection
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_Clone*(
+  hobj: HUIATEXTRANGE, pRetVal: ptr HUIATEXTRANGE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_Compare*(
+  hobj: HUIATEXTRANGE, range: HUIATEXTRANGE, pRetVal: ptr BOOL
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_CompareEndpoints*(
+  hobj: HUIATEXTRANGE,
+  endpoint: TextPatternRangeEndpoint,
+  targetRange: HUIATEXTRANGE,
+  targetEndpoint: TextPatternRangeEndpoint,
+  pRetVal: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_ExpandToEnclosingUnit*(
+  hobj: HUIATEXTRANGE, unit: TextUnit
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_GetAttributeValue*(
+  hobj: HUIATEXTRANGE, attributeId: TEXTATTRIBUTEID, pRetVal: ptr VARIANT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_FindAttribute*(
+  hobj: HUIATEXTRANGE,
+  attributeId: TEXTATTRIBUTEID,
+  val: VARIANT,
+  backward: BOOL,
+  pRetVal: ptr HUIATEXTRANGE,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_FindText*(
+  hobj: HUIATEXTRANGE,
+  text: BSTR,
+  backward: BOOL,
+  ignoreCase: BOOL,
+  pRetVal: ptr HUIATEXTRANGE,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_GetBoundingRectangles*(
+  hobj: HUIATEXTRANGE, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_GetEnclosingElement*(
+  hobj: HUIATEXTRANGE, pRetVal: ptr HUIANODE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_GetText*(
+  hobj: HUIATEXTRANGE, maxLength: int32, pRetVal: ptr BSTR
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_Move*(
+  hobj: HUIATEXTRANGE, unit: TextUnit, count: int32, pRetVal: ptr int32
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_MoveEndpointByUnit*(
+  hobj: HUIATEXTRANGE,
+  endpoint: TextPatternRangeEndpoint,
+  unit: TextUnit,
+  count: int32,
+  pRetVal: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_MoveEndpointByRange*(
+  hobj: HUIATEXTRANGE,
+  endpoint: TextPatternRangeEndpoint,
+  targetRange: HUIATEXTRANGE,
+  targetEndpoint: TextPatternRangeEndpoint,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_Select*(
+  hobj: HUIATEXTRANGE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_AddToSelection*(
+  hobj: HUIATEXTRANGE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_RemoveFromSelection*(
+  hobj: HUIATEXTRANGE
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_ScrollIntoView*(
+  hobj: HUIATEXTRANGE, alignToTop: BOOL
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc TextRange_GetChildren*(
+  hobj: HUIATEXTRANGE, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc ItemContainerPattern_FindItemByProperty*(
+  hobj: HUIAPATTERNOBJECT,
+  hnodeStartAfter: HUIANODE,
+  propertyId: PROPERTYID,
+  value: VARIANT,
+  pFound: ptr HUIANODE,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc LegacyIAccessiblePattern_Select*(
+  hobj: HUIAPATTERNOBJECT, flagsSelect: int32
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc LegacyIAccessiblePattern_DoDefaultAction*(
+  hobj: HUIAPATTERNOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc LegacyIAccessiblePattern_SetValue*(
+  hobj: HUIAPATTERNOBJECT, szValue: LPCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc LegacyIAccessiblePattern_GetIAccessible*(
+  hobj: HUIAPATTERNOBJECT, pAccessible: ptr ptr IAccessible
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc SynchronizedInputPattern_StartListening*(
+  hobj: HUIAPATTERNOBJECT, inputType: SynchronizedInputType
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc SynchronizedInputPattern_Cancel*(
+  hobj: HUIAPATTERNOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc VirtualizedItemPattern_Realize*(
+  hobj: HUIAPATTERNOBJECT
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaPatternRelease*(
+  hobj: HUIAPATTERNOBJECT
+): BOOL {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaTextRangeRelease*(
+  hobj: HUIATEXTRANGE
+): BOOL {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaReturnRawElementProvider*(
+  hwnd: HWND, wParam: WPARAM, lParam: LPARAM, el: ptr IRawElementProviderSimple
+): LRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaHostProviderFromHwnd*(
+  hwnd: HWND, ppProvider: ptr ptr IRawElementProviderSimple
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaProviderForNonClient*(
+  hwnd: HWND,
+  idObject: int32,
+  idChild: int32,
+  ppProvider: ptr ptr IRawElementProviderSimple,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaIAccessibleFromProvider*(
+  pProvider: ptr IRawElementProviderSimple,
+  dwFlags: DWORD,
+  ppAccessible: ptr ptr IAccessible,
+  pvarChild: ptr VARIANT,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaProviderFromIAccessible*(
+  pAccessible: ptr IAccessible,
+  idChild: int32,
+  dwFlags: DWORD,
+  ppProvider: ptr ptr IRawElementProviderSimple,
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaDisconnectAllProviders*(): HRESULT {.
+  winapi, stdcall, dynlib: "uiautomationcore", importc
+.}
+
+proc UiaDisconnectProvider*(
+  pProvider: ptr IRawElementProviderSimple
+): HRESULT {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc UiaHasServerSideProvider*(
+  hwnd: HWND
+): BOOL {.winapi, stdcall, dynlib: "uiautomationcore", importc.}
+
+proc get_ProviderOptions*(
+    self: ptr IRawElementProviderSimple, pRetVal: ptr ProviderOptions
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ProviderOptions(self, pRetVal)
+
+proc GetPatternProvider*(
+    self: ptr IRawElementProviderSimple, patternId: PATTERNID, pRetVal: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPatternProvider(self, patternId, pRetVal)
+
+proc GetPropertyValue*(
+    self: ptr IRawElementProviderSimple, propertyId: PROPERTYID, pRetVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyValue(self, propertyId, pRetVal)
+
+proc get_HostRawElementProvider*(
+    self: ptr IRawElementProviderSimple, pRetVal: ptr ptr IRawElementProviderSimple
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HostRawElementProvider(self, pRetVal)
+
+proc GetObjectForChild*(
+    self: ptr IAccessibleEx, idChild: int32, pRetVal: ptr ptr IAccessibleEx
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObjectForChild(self, idChild, pRetVal)
+
+proc GetIAccessiblePair*(
+    self: ptr IAccessibleEx, ppAcc: ptr ptr IAccessible, pidChild: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIAccessiblePair(self, ppAcc, pidChild)
+
+proc GetRuntimeId*(
+    self: ptr IAccessibleEx, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRuntimeId(self, pRetVal)
+
+proc ConvertReturnedElement*(
+    self: ptr IAccessibleEx,
+    pIn: ptr IRawElementProviderSimple,
+    ppRetValOut: ptr ptr IAccessibleEx,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ConvertReturnedElement(self, pIn, ppRetValOut)
+
+proc ShowContextMenu*(
+    self: ptr IRawElementProviderSimple2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowContextMenu(self)
+
+proc GetMetadataValue*(
+    self: ptr IRawElementProviderSimple3,
+    targetId: int32,
+    metadataId: METADATAID,
+    returnVal: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMetadataValue(self, targetId, metadataId, returnVal)
+
+proc ElementProviderFromPoint*(
+    self: ptr IRawElementProviderFragmentRoot,
+    x: float64,
+    y: float64,
+    pRetVal: ptr ptr IRawElementProviderFragment,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ElementProviderFromPoint(self, x, y, pRetVal)
+
+proc GetFocus*(
+    self: ptr IRawElementProviderFragmentRoot,
+    pRetVal: ptr ptr IRawElementProviderFragment,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFocus(self, pRetVal)
+
+proc Navigate*(
+    self: ptr IRawElementProviderFragment,
+    direction: NavigateDirection,
+    pRetVal: ptr ptr IRawElementProviderFragment,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Navigate(self, direction, pRetVal)
+
+proc GetRuntimeId*(
+    self: ptr IRawElementProviderFragment, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRuntimeId(self, pRetVal)
+
+proc get_BoundingRectangle*(
+    self: ptr IRawElementProviderFragment, pRetVal: ptr UiaRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_BoundingRectangle(self, pRetVal)
+
+proc GetEmbeddedFragmentRoots*(
+    self: ptr IRawElementProviderFragment, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEmbeddedFragmentRoots(self, pRetVal)
+
+proc SetFocus*(self: ptr IRawElementProviderFragment): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFocus(self)
+
+proc get_FragmentRoot*(
+    self: ptr IRawElementProviderFragment,
+    pRetVal: ptr ptr IRawElementProviderFragmentRoot,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_FragmentRoot(self, pRetVal)
+
+proc AdviseEventAdded*(
+    self: ptr IRawElementProviderAdviseEvents,
+    eventId: EVENTID,
+    propertyIDs: ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AdviseEventAdded(self, eventId, propertyIDs)
+
+proc AdviseEventRemoved*(
+    self: ptr IRawElementProviderAdviseEvents,
+    eventId: EVENTID,
+    propertyIDs: ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AdviseEventRemoved(self, eventId, propertyIDs)
+
+proc GetOverrideProviderForHwnd*(
+    self: ptr IRawElementProviderHwndOverride,
+    hwnd: HWND,
+    pRetVal: ptr ptr IRawElementProviderSimple,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetOverrideProviderForHwnd(self, hwnd, pRetVal)
+
+proc AddAutomationPropertyChangedEvent*(
+    self: ptr IProxyProviderWinEventSink,
+    pProvider: ptr IRawElementProviderSimple,
+    id: PROPERTYID,
+    newValue: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddAutomationPropertyChangedEvent(self, pProvider, id, newValue)
+
+proc AddAutomationEvent*(
+    self: ptr IProxyProviderWinEventSink,
+    pProvider: ptr IRawElementProviderSimple,
+    id: EVENTID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddAutomationEvent(self, pProvider, id)
+
+proc AddStructureChangedEvent*(
+    self: ptr IProxyProviderWinEventSink,
+    pProvider: ptr IRawElementProviderSimple,
+    structureChangeType: StructureChangeType,
+    runtimeId: ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddStructureChangedEvent(
+      self, pProvider, structureChangeType, runtimeId
+    )
+
+proc RespondToWinEvent*(
+    self: ptr IProxyProviderWinEventHandler,
+    idWinEvent: DWORD,
+    hwnd: HWND,
+    idObject: LONG,
+    idChild: LONG,
+    pSink: ptr IProxyProviderWinEventSink,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RespondToWinEvent(self, idWinEvent, hwnd, idObject, idChild, pSink)
+
+proc GetAdjacentFragment*(
+    self: ptr IRawElementProviderWindowlessSite,
+    direction: NavigateDirection,
+    ppParent: ptr ptr IRawElementProviderFragment,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAdjacentFragment(self, direction, ppParent)
+
+proc GetRuntimeIdPrefix*(
+    self: ptr IRawElementProviderWindowlessSite, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRuntimeIdPrefix(self, pRetVal)
+
+proc GetEmbeddedFragmentRoots*(
+    self: ptr IAccessibleHostingElementProviders, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEmbeddedFragmentRoots(self, pRetVal)
+
+proc GetObjectIdForProvider*(
+    self: ptr IAccessibleHostingElementProviders,
+    pProvider: ptr IRawElementProviderSimple,
+    pidObject: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetObjectIdForProvider(self, pProvider, pidObject)
+
+proc GetEmbeddedAccessibles*(
+    self: ptr IRawElementProviderHostingAccessibles, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEmbeddedAccessibles(self, pRetVal)
+
+proc SetDockPosition*(
+    self: ptr IDockProvider, dockPosition: DockPosition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDockPosition(self, dockPosition)
+
+proc get_DockPosition*(
+    self: ptr IDockProvider, pRetVal: ptr DockPosition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DockPosition(self, pRetVal)
+
+proc Expand*(self: ptr IExpandCollapseProvider): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Expand(self)
+
+proc Collapse*(self: ptr IExpandCollapseProvider): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Collapse(self)
+
+proc get_ExpandCollapseState*(
+    self: ptr IExpandCollapseProvider, pRetVal: ptr ExpandCollapseState
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ExpandCollapseState(self, pRetVal)
+
+proc GetItem*(
+    self: ptr IGridProvider,
+    row: int32,
+    column: int32,
+    pRetVal: ptr ptr IRawElementProviderSimple,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItem(self, row, column, pRetVal)
+
+proc get_RowCount*(
+    self: ptr IGridProvider, pRetVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_RowCount(self, pRetVal)
+
+proc get_ColumnCount*(
+    self: ptr IGridProvider, pRetVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ColumnCount(self, pRetVal)
+
+proc get_Row*(
+    self: ptr IGridItemProvider, pRetVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Row(self, pRetVal)
+
+proc get_Column*(
+    self: ptr IGridItemProvider, pRetVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Column(self, pRetVal)
+
+proc get_RowSpan*(
+    self: ptr IGridItemProvider, pRetVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_RowSpan(self, pRetVal)
+
+proc get_ColumnSpan*(
+    self: ptr IGridItemProvider, pRetVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ColumnSpan(self, pRetVal)
+
+proc get_ContainingGrid*(
+    self: ptr IGridItemProvider, pRetVal: ptr ptr IRawElementProviderSimple
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ContainingGrid(self, pRetVal)
+
+proc Invoke*(self: ptr IInvokeProvider): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Invoke(self)
+
+proc GetViewName*(
+    self: ptr IMultipleViewProvider, viewId: int32, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetViewName(self, viewId, pRetVal)
+
+proc SetCurrentView*(
+    self: ptr IMultipleViewProvider, viewId: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCurrentView(self, viewId)
+
+proc get_CurrentView*(
+    self: ptr IMultipleViewProvider, pRetVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentView(self, pRetVal)
+
+proc GetSupportedViews*(
+    self: ptr IMultipleViewProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSupportedViews(self, pRetVal)
+
+proc SetValue*(
+    self: ptr IRangeValueProvider, val: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetValue(self, val)
+
+proc get_Value*(
+    self: ptr IRangeValueProvider, pRetVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Value(self, pRetVal)
+
+proc get_IsReadOnly*(
+    self: ptr IRangeValueProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsReadOnly(self, pRetVal)
+
+proc get_Maximum*(
+    self: ptr IRangeValueProvider, pRetVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Maximum(self, pRetVal)
+
+proc get_Minimum*(
+    self: ptr IRangeValueProvider, pRetVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Minimum(self, pRetVal)
+
+proc get_LargeChange*(
+    self: ptr IRangeValueProvider, pRetVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_LargeChange(self, pRetVal)
+
+proc get_SmallChange*(
+    self: ptr IRangeValueProvider, pRetVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_SmallChange(self, pRetVal)
+
+proc ScrollIntoView*(self: ptr IScrollItemProvider): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ScrollIntoView(self)
+
+proc GetSelection*(
+    self: ptr ISelectionProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelection(self, pRetVal)
+
+proc get_CanSelectMultiple*(
+    self: ptr ISelectionProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CanSelectMultiple(self, pRetVal)
+
+proc get_IsSelectionRequired*(
+    self: ptr ISelectionProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsSelectionRequired(self, pRetVal)
+
+proc get_FirstSelectedItem*(
+    self: ptr ISelectionProvider2, retVal: ptr ptr IRawElementProviderSimple
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_FirstSelectedItem(self, retVal)
+
+proc get_LastSelectedItem*(
+    self: ptr ISelectionProvider2, retVal: ptr ptr IRawElementProviderSimple
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_LastSelectedItem(self, retVal)
+
+proc get_CurrentSelectedItem*(
+    self: ptr ISelectionProvider2, retVal: ptr ptr IRawElementProviderSimple
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentSelectedItem(self, retVal)
+
+proc get_ItemCount*(
+    self: ptr ISelectionProvider2, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ItemCount(self, retVal)
+
+proc Scroll*(
+    self: ptr IScrollProvider,
+    horizontalAmount: ScrollAmount,
+    verticalAmount: ScrollAmount,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Scroll(self, horizontalAmount, verticalAmount)
+
+proc SetScrollPercent*(
+    self: ptr IScrollProvider, horizontalPercent: float64, verticalPercent: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetScrollPercent(self, horizontalPercent, verticalPercent)
+
+proc get_HorizontalScrollPercent*(
+    self: ptr IScrollProvider, pRetVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HorizontalScrollPercent(self, pRetVal)
+
+proc get_VerticalScrollPercent*(
+    self: ptr IScrollProvider, pRetVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_VerticalScrollPercent(self, pRetVal)
+
+proc get_HorizontalViewSize*(
+    self: ptr IScrollProvider, pRetVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HorizontalViewSize(self, pRetVal)
+
+proc get_VerticalViewSize*(
+    self: ptr IScrollProvider, pRetVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_VerticalViewSize(self, pRetVal)
+
+proc get_HorizontallyScrollable*(
+    self: ptr IScrollProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_HorizontallyScrollable(self, pRetVal)
+
+proc get_VerticallyScrollable*(
+    self: ptr IScrollProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_VerticallyScrollable(self, pRetVal)
+
+proc Select*(self: ptr ISelectionItemProvider): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Select(self)
+
+proc AddToSelection*(self: ptr ISelectionItemProvider): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddToSelection(self)
+
+proc RemoveFromSelection*(
+    self: ptr ISelectionItemProvider
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveFromSelection(self)
+
+proc get_IsSelected*(
+    self: ptr ISelectionItemProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsSelected(self, pRetVal)
+
+proc get_SelectionContainer*(
+    self: ptr ISelectionItemProvider, pRetVal: ptr ptr IRawElementProviderSimple
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_SelectionContainer(self, pRetVal)
+
+proc StartListening*(
+    self: ptr ISynchronizedInputProvider, inputType: SynchronizedInputType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StartListening(self, inputType)
+
+proc Cancel*(self: ptr ISynchronizedInputProvider): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Cancel(self)
+
+proc GetRowHeaders*(
+    self: ptr ITableProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRowHeaders(self, pRetVal)
+
+proc GetColumnHeaders*(
+    self: ptr ITableProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColumnHeaders(self, pRetVal)
+
+proc get_RowOrColumnMajor*(
+    self: ptr ITableProvider, pRetVal: ptr RowOrColumnMajor
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_RowOrColumnMajor(self, pRetVal)
+
+proc GetRowHeaderItems*(
+    self: ptr ITableItemProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRowHeaderItems(self, pRetVal)
+
+proc GetColumnHeaderItems*(
+    self: ptr ITableItemProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColumnHeaderItems(self, pRetVal)
+
+proc Toggle*(self: ptr IToggleProvider): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Toggle(self)
+
+proc get_ToggleState*(
+    self: ptr IToggleProvider, pRetVal: ptr ToggleState
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ToggleState(self, pRetVal)
+
+proc Move*(
+    self: ptr ITransformProvider, x: float64, y: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Move(self, x, y)
+
+proc Resize*(
+    self: ptr ITransformProvider, width: float64, height: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Resize(self, width, height)
+
+proc Rotate*(
+    self: ptr ITransformProvider, degrees: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Rotate(self, degrees)
+
+proc get_CanMove*(
+    self: ptr ITransformProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CanMove(self, pRetVal)
+
+proc get_CanResize*(
+    self: ptr ITransformProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CanResize(self, pRetVal)
+
+proc get_CanRotate*(
+    self: ptr ITransformProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CanRotate(self, pRetVal)
+
+proc SetValue*(self: ptr IValueProvider, val: LPCWSTR): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetValue(self, val)
+
+proc get_Value*(
+    self: ptr IValueProvider, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Value(self, pRetVal)
+
+proc get_IsReadOnly*(
+    self: ptr IValueProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsReadOnly(self, pRetVal)
+
+proc SetVisualState*(
+    self: ptr IWindowProvider, state: WindowVisualState
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetVisualState(self, state)
+
+proc Close*(self: ptr IWindowProvider): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Close(self)
+
+proc WaitForInputIdle*(
+    self: ptr IWindowProvider, milliseconds: int32, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WaitForInputIdle(self, milliseconds, pRetVal)
+
+proc get_CanMaximize*(
+    self: ptr IWindowProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CanMaximize(self, pRetVal)
+
+proc get_CanMinimize*(
+    self: ptr IWindowProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CanMinimize(self, pRetVal)
+
+proc get_IsModal*(
+    self: ptr IWindowProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsModal(self, pRetVal)
+
+proc get_WindowVisualState*(
+    self: ptr IWindowProvider, pRetVal: ptr WindowVisualState
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_WindowVisualState(self, pRetVal)
+
+proc get_WindowInteractionState*(
+    self: ptr IWindowProvider, pRetVal: ptr WindowInteractionState
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_WindowInteractionState(self, pRetVal)
+
+proc get_IsTopmost*(
+    self: ptr IWindowProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsTopmost(self, pRetVal)
+
+proc Select*(
+    self: ptr ILegacyIAccessibleProvider, flagsSelect: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Select(self, flagsSelect)
+
+proc DoDefaultAction*(
+    self: ptr ILegacyIAccessibleProvider
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoDefaultAction(self)
+
+proc SetValue*(
+    self: ptr ILegacyIAccessibleProvider, szValue: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetValue(self, szValue)
+
+proc GetIAccessible*(
+    self: ptr ILegacyIAccessibleProvider, ppAccessible: ptr ptr IAccessible
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIAccessible(self, ppAccessible)
+
+proc get_ChildId*(
+    self: ptr ILegacyIAccessibleProvider, pRetVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ChildId(self, pRetVal)
+
+proc get_Name*(
+    self: ptr ILegacyIAccessibleProvider, pszName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Name(self, pszName)
+
+proc get_Value*(
+    self: ptr ILegacyIAccessibleProvider, pszValue: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Value(self, pszValue)
+
+proc get_Description*(
+    self: ptr ILegacyIAccessibleProvider, pszDescription: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Description(self, pszDescription)
+
+proc get_Role*(
+    self: ptr ILegacyIAccessibleProvider, pdwRole: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Role(self, pdwRole)
+
+proc get_State*(
+    self: ptr ILegacyIAccessibleProvider, pdwState: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_State(self, pdwState)
+
+proc get_Help*(
+    self: ptr ILegacyIAccessibleProvider, pszHelp: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Help(self, pszHelp)
+
+proc get_KeyboardShortcut*(
+    self: ptr ILegacyIAccessibleProvider, pszKeyboardShortcut: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_KeyboardShortcut(self, pszKeyboardShortcut)
+
+proc GetSelection*(
+    self: ptr ILegacyIAccessibleProvider, pvarSelectedChildren: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelection(self, pvarSelectedChildren)
+
+proc get_DefaultAction*(
+    self: ptr ILegacyIAccessibleProvider, pszDefaultAction: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DefaultAction(self, pszDefaultAction)
+
+proc FindItemByProperty*(
+    self: ptr IItemContainerProvider,
+    pStartAfter: ptr IRawElementProviderSimple,
+    propertyId: PROPERTYID,
+    value: VARIANT,
+    pFound: ptr ptr IRawElementProviderSimple,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindItemByProperty(self, pStartAfter, propertyId, value, pFound)
+
+proc Realize*(self: ptr IVirtualizedItemProvider): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Realize(self)
+
+proc GetUnderlyingObjectModel*(
+    self: ptr IObjectModelProvider, ppUnknown: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUnderlyingObjectModel(self, ppUnknown)
+
+proc get_AnnotationTypeId*(
+    self: ptr IAnnotationProvider, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_AnnotationTypeId(self, retVal)
+
+proc get_AnnotationTypeName*(
+    self: ptr IAnnotationProvider, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_AnnotationTypeName(self, retVal)
+
+proc get_Author*(
+    self: ptr IAnnotationProvider, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Author(self, retVal)
+
+proc get_DateTime*(
+    self: ptr IAnnotationProvider, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DateTime(self, retVal)
+
+proc get_Target*(
+    self: ptr IAnnotationProvider, retVal: ptr ptr IRawElementProviderSimple
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Target(self, retVal)
+
+proc get_StyleId*(
+    self: ptr IStylesProvider, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_StyleId(self, retVal)
+
+proc get_StyleName*(
+    self: ptr IStylesProvider, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_StyleName(self, retVal)
+
+proc get_FillColor*(
+    self: ptr IStylesProvider, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_FillColor(self, retVal)
+
+proc get_FillPatternStyle*(
+    self: ptr IStylesProvider, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_FillPatternStyle(self, retVal)
+
+proc get_Shape*(
+    self: ptr IStylesProvider, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Shape(self, retVal)
+
+proc get_FillPatternColor*(
+    self: ptr IStylesProvider, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_FillPatternColor(self, retVal)
+
+proc get_ExtendedProperties*(
+    self: ptr IStylesProvider, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ExtendedProperties(self, retVal)
+
+proc GetItemByName*(
+    self: ptr ISpreadsheetProvider,
+    name: LPCWSTR,
+    pRetVal: ptr ptr IRawElementProviderSimple,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItemByName(self, name, pRetVal)
+
+proc get_Formula*(
+    self: ptr ISpreadsheetItemProvider, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Formula(self, pRetVal)
+
+proc GetAnnotationObjects*(
+    self: ptr ISpreadsheetItemProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAnnotationObjects(self, pRetVal)
+
+proc GetAnnotationTypes*(
+    self: ptr ISpreadsheetItemProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAnnotationTypes(self, pRetVal)
+
+proc Zoom*(self: ptr ITransformProvider2, zoom: float64): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Zoom(self, zoom)
+
+proc get_CanZoom*(
+    self: ptr ITransformProvider2, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CanZoom(self, pRetVal)
+
+proc get_ZoomLevel*(
+    self: ptr ITransformProvider2, pRetVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ZoomLevel(self, pRetVal)
+
+proc get_ZoomMinimum*(
+    self: ptr ITransformProvider2, pRetVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ZoomMinimum(self, pRetVal)
+
+proc get_ZoomMaximum*(
+    self: ptr ITransformProvider2, pRetVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ZoomMaximum(self, pRetVal)
+
+proc ZoomByUnit*(
+    self: ptr ITransformProvider2, zoomUnit: ZoomUnit
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ZoomByUnit(self, zoomUnit)
+
+proc get_IsGrabbed*(
+    self: ptr IDragProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_IsGrabbed(self, pRetVal)
+
+proc get_DropEffect*(
+    self: ptr IDragProvider, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DropEffect(self, pRetVal)
+
+proc get_DropEffects*(
+    self: ptr IDragProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DropEffects(self, pRetVal)
+
+proc GetGrabbedItems*(
+    self: ptr IDragProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetGrabbedItems(self, pRetVal)
+
+proc get_DropTargetEffect*(
+    self: ptr IDropTargetProvider, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DropTargetEffect(self, pRetVal)
+
+proc get_DropTargetEffects*(
+    self: ptr IDropTargetProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DropTargetEffects(self, pRetVal)
+
+proc Clone*(
+    self: ptr ITextRangeProvider, pRetVal: ptr ptr ITextRangeProvider
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, pRetVal)
+
+proc Compare*(
+    self: ptr ITextRangeProvider, range: ptr ITextRangeProvider, pRetVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Compare(self, range, pRetVal)
+
+proc CompareEndpoints*(
+    self: ptr ITextRangeProvider,
+    endpoint: TextPatternRangeEndpoint,
+    targetRange: ptr ITextRangeProvider,
+    targetEndpoint: TextPatternRangeEndpoint,
+    pRetVal: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CompareEndpoints(self, endpoint, targetRange, targetEndpoint, pRetVal)
+
+proc ExpandToEnclosingUnit*(
+    self: ptr ITextRangeProvider, unit: TextUnit
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExpandToEnclosingUnit(self, unit)
+
+proc FindAttribute*(
+    self: ptr ITextRangeProvider,
+    attributeId: TEXTATTRIBUTEID,
+    val: VARIANT,
+    backward: BOOL,
+    pRetVal: ptr ptr ITextRangeProvider,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindAttribute(self, attributeId, val, backward, pRetVal)
+
+proc FindText*(
+    self: ptr ITextRangeProvider,
+    text: BSTR,
+    backward: BOOL,
+    ignoreCase: BOOL,
+    pRetVal: ptr ptr ITextRangeProvider,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindText(self, text, backward, ignoreCase, pRetVal)
+
+proc GetAttributeValue*(
+    self: ptr ITextRangeProvider, attributeId: TEXTATTRIBUTEID, pRetVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAttributeValue(self, attributeId, pRetVal)
+
+proc GetBoundingRectangles*(
+    self: ptr ITextRangeProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBoundingRectangles(self, pRetVal)
+
+proc GetEnclosingElement*(
+    self: ptr ITextRangeProvider, pRetVal: ptr ptr IRawElementProviderSimple
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEnclosingElement(self, pRetVal)
+
+proc GetText*(
+    self: ptr ITextRangeProvider, maxLength: int32, pRetVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetText(self, maxLength, pRetVal)
+
+proc Move*(
+    self: ptr ITextRangeProvider, unit: TextUnit, count: int32, pRetVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Move(self, unit, count, pRetVal)
+
+proc MoveEndpointByUnit*(
+    self: ptr ITextRangeProvider,
+    endpoint: TextPatternRangeEndpoint,
+    unit: TextUnit,
+    count: int32,
+    pRetVal: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveEndpointByUnit(self, endpoint, unit, count, pRetVal)
+
+proc MoveEndpointByRange*(
+    self: ptr ITextRangeProvider,
+    endpoint: TextPatternRangeEndpoint,
+    targetRange: ptr ITextRangeProvider,
+    targetEndpoint: TextPatternRangeEndpoint,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveEndpointByRange(self, endpoint, targetRange, targetEndpoint)
+
+proc Select*(self: ptr ITextRangeProvider): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Select(self)
+
+proc AddToSelection*(self: ptr ITextRangeProvider): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddToSelection(self)
+
+proc RemoveFromSelection*(self: ptr ITextRangeProvider): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveFromSelection(self)
+
+proc ScrollIntoView*(
+    self: ptr ITextRangeProvider, alignToTop: BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ScrollIntoView(self, alignToTop)
+
+proc GetChildren*(
+    self: ptr ITextRangeProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetChildren(self, pRetVal)
+
+proc GetSelection*(
+    self: ptr ITextProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelection(self, pRetVal)
+
+proc GetVisibleRanges*(
+    self: ptr ITextProvider, pRetVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetVisibleRanges(self, pRetVal)
+
+proc RangeFromChild*(
+    self: ptr ITextProvider,
+    childElement: ptr IRawElementProviderSimple,
+    pRetVal: ptr ptr ITextRangeProvider,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RangeFromChild(self, childElement, pRetVal)
+
+proc RangeFromPoint*(
+    self: ptr ITextProvider, point: UiaPoint, pRetVal: ptr ptr ITextRangeProvider
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RangeFromPoint(self, point, pRetVal)
+
+proc get_DocumentRange*(
+    self: ptr ITextProvider, pRetVal: ptr ptr ITextRangeProvider
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DocumentRange(self, pRetVal)
+
+proc get_SupportedTextSelection*(
+    self: ptr ITextProvider, pRetVal: ptr SupportedTextSelection
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_SupportedTextSelection(self, pRetVal)
+
+proc RangeFromAnnotation*(
+    self: ptr ITextProvider2,
+    annotationElement: ptr IRawElementProviderSimple,
+    pRetVal: ptr ptr ITextRangeProvider,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RangeFromAnnotation(self, annotationElement, pRetVal)
+
+proc GetCaretRange*(
+    self: ptr ITextProvider2, isActive: ptr BOOL, pRetVal: ptr ptr ITextRangeProvider
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCaretRange(self, isActive, pRetVal)
+
+proc GetActiveComposition*(
+    self: ptr ITextEditProvider, pRetVal: ptr ptr ITextRangeProvider
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetActiveComposition(self, pRetVal)
+
+proc GetConversionTarget*(
+    self: ptr ITextEditProvider, pRetVal: ptr ptr ITextRangeProvider
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConversionTarget(self, pRetVal)
+
+proc ShowContextMenu*(self: ptr ITextRangeProvider2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowContextMenu(self)
+
+proc get_TextContainer*(
+    self: ptr ITextChildProvider, pRetVal: ptr ptr IRawElementProviderSimple
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TextContainer(self, pRetVal)
+
+proc get_TextRange*(
+    self: ptr ITextChildProvider, pRetVal: ptr ptr ITextRangeProvider
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TextRange(self, pRetVal)
+
+proc Navigate*(
+    self: ptr ICustomNavigationProvider,
+    direction: NavigateDirection,
+    pRetVal: ptr ptr IRawElementProviderSimple,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Navigate(self, direction, pRetVal)
+
+proc GetProperty*(
+    self: ptr IUIAutomationPatternInstance,
+    index: UINT,
+    cached: BOOL,
+    `type`: UIAutomationType,
+    pPtr: pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProperty(self, index, cached, `type`, pPtr)
+
+proc CallMethod*(
+    self: ptr IUIAutomationPatternInstance,
+    index: UINT,
+    pParams: ptr UIAutomationParameter,
+    cParams: UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CallMethod(self, index, pParams, cParams)
+
+proc CreateClientWrapper*(
+    self: ptr IUIAutomationPatternHandler,
+    pPatternInstance: ptr IUIAutomationPatternInstance,
+    pClientWrapper: ptr ptr IUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateClientWrapper(self, pPatternInstance, pClientWrapper)
+
+proc Dispatch*(
+    self: ptr IUIAutomationPatternHandler,
+    pTarget: ptr IUnknown,
+    index: UINT,
+    pParams: ptr UIAutomationParameter,
+    cParams: UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Dispatch(self, pTarget, index, pParams, cParams)
+
+proc RegisterProperty*(
+    self: ptr IUIAutomationRegistrar,
+    property: ptr UIAutomationPropertyInfo,
+    propertyId: ptr PROPERTYID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterProperty(self, property, propertyId)
+
+proc RegisterEvent*(
+    self: ptr IUIAutomationRegistrar,
+    event: ptr UIAutomationEventInfo,
+    eventId: ptr EVENTID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterEvent(self, event, eventId)
+
+proc RegisterPattern*(
+    self: ptr IUIAutomationRegistrar,
+    pattern: ptr UIAutomationPatternInfo,
+    pPatternId: ptr PATTERNID,
+    pPatternAvailablePropertyId: ptr PROPERTYID,
+    propertyIdCount: UINT,
+    pPropertyIds: ptr PROPERTYID,
+    eventIdCount: UINT,
+    pEventIds: ptr EVENTID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RegisterPattern(
+      self, pattern, pPatternId, pPatternAvailablePropertyId, propertyIdCount,
+      pPropertyIds, eventIdCount, pEventIds,
+    )
+
+proc SetFocus*(self: ptr IUIAutomationElement): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFocus(self)
+
+proc GetRuntimeId*(
+    self: ptr IUIAutomationElement, runtimeId: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRuntimeId(self, runtimeId)
+
+proc FindFirst*(
+    self: ptr IUIAutomationElement,
+    scope: TreeScope,
+    condition: ptr IUIAutomationCondition,
+    found: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindFirst(self, scope, condition, found)
+
+proc FindAll*(
+    self: ptr IUIAutomationElement,
+    scope: TreeScope,
+    condition: ptr IUIAutomationCondition,
+    found: ptr ptr IUIAutomationElementArray,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindAll(self, scope, condition, found)
+
+proc FindFirstBuildCache*(
+    self: ptr IUIAutomationElement,
+    scope: TreeScope,
+    condition: ptr IUIAutomationCondition,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    found: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindFirstBuildCache(self, scope, condition, cacheRequest, found)
+
+proc FindAllBuildCache*(
+    self: ptr IUIAutomationElement,
+    scope: TreeScope,
+    condition: ptr IUIAutomationCondition,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    found: ptr ptr IUIAutomationElementArray,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindAllBuildCache(self, scope, condition, cacheRequest, found)
+
+proc BuildUpdatedCache*(
+    self: ptr IUIAutomationElement,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    updatedElement: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.BuildUpdatedCache(self, cacheRequest, updatedElement)
+
+proc GetCurrentPropertyValue*(
+    self: ptr IUIAutomationElement, propertyId: PROPERTYID, retVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentPropertyValue(self, propertyId, retVal)
+
+proc GetCurrentPropertyValueEx*(
+    self: ptr IUIAutomationElement,
+    propertyId: PROPERTYID,
+    ignoreDefaultValue: BOOL,
+    retVal: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentPropertyValueEx(self, propertyId, ignoreDefaultValue, retVal)
+
+proc GetCachedPropertyValue*(
+    self: ptr IUIAutomationElement, propertyId: PROPERTYID, retVal: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedPropertyValue(self, propertyId, retVal)
+
+proc GetCachedPropertyValueEx*(
+    self: ptr IUIAutomationElement,
+    propertyId: PROPERTYID,
+    ignoreDefaultValue: BOOL,
+    retVal: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedPropertyValueEx(self, propertyId, ignoreDefaultValue, retVal)
+
+proc GetCurrentPatternAs*(
+    self: ptr IUIAutomationElement,
+    patternId: PATTERNID,
+    riid: REFIID,
+    patternObject: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentPatternAs(self, patternId, riid, patternObject)
+
+proc GetCachedPatternAs*(
+    self: ptr IUIAutomationElement,
+    patternId: PATTERNID,
+    riid: REFIID,
+    patternObject: ptr pointer,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedPatternAs(self, patternId, riid, patternObject)
+
+proc GetCurrentPattern*(
+    self: ptr IUIAutomationElement,
+    patternId: PATTERNID,
+    patternObject: ptr ptr IUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentPattern(self, patternId, patternObject)
+
+proc GetCachedPattern*(
+    self: ptr IUIAutomationElement,
+    patternId: PATTERNID,
+    patternObject: ptr ptr IUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedPattern(self, patternId, patternObject)
+
+proc GetCachedParent*(
+    self: ptr IUIAutomationElement, parent: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedParent(self, parent)
+
+proc GetCachedChildren*(
+    self: ptr IUIAutomationElement, children: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedChildren(self, children)
+
+proc get_CurrentProcessId*(
+    self: ptr IUIAutomationElement, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentProcessId(self, retVal)
+
+proc get_CurrentControlType*(
+    self: ptr IUIAutomationElement, retVal: ptr CONTROLTYPEID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentControlType(self, retVal)
+
+proc get_CurrentLocalizedControlType*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentLocalizedControlType(self, retVal)
+
+proc get_CurrentName*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentName(self, retVal)
+
+proc get_CurrentAcceleratorKey*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentAcceleratorKey(self, retVal)
+
+proc get_CurrentAccessKey*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentAccessKey(self, retVal)
+
+proc get_CurrentHasKeyboardFocus*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentHasKeyboardFocus(self, retVal)
+
+proc get_CurrentIsKeyboardFocusable*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsKeyboardFocusable(self, retVal)
+
+proc get_CurrentIsEnabled*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsEnabled(self, retVal)
+
+proc get_CurrentAutomationId*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentAutomationId(self, retVal)
+
+proc get_CurrentClassName*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentClassName(self, retVal)
+
+proc get_CurrentHelpText*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentHelpText(self, retVal)
+
+proc get_CurrentCulture*(
+    self: ptr IUIAutomationElement, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentCulture(self, retVal)
+
+proc get_CurrentIsControlElement*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsControlElement(self, retVal)
+
+proc get_CurrentIsContentElement*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsContentElement(self, retVal)
+
+proc get_CurrentIsPassword*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsPassword(self, retVal)
+
+proc get_CurrentNativeWindowHandle*(
+    self: ptr IUIAutomationElement, retVal: ptr UIA_HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentNativeWindowHandle(self, retVal)
+
+proc get_CurrentItemType*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentItemType(self, retVal)
+
+proc get_CurrentIsOffscreen*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsOffscreen(self, retVal)
+
+proc get_CurrentOrientation*(
+    self: ptr IUIAutomationElement, retVal: ptr OrientationType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentOrientation(self, retVal)
+
+proc get_CurrentFrameworkId*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentFrameworkId(self, retVal)
+
+proc get_CurrentIsRequiredForForm*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsRequiredForForm(self, retVal)
+
+proc get_CurrentItemStatus*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentItemStatus(self, retVal)
+
+proc get_CurrentBoundingRectangle*(
+    self: ptr IUIAutomationElement, retVal: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentBoundingRectangle(self, retVal)
+
+proc get_CurrentLabeledBy*(
+    self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentLabeledBy(self, retVal)
+
+proc get_CurrentAriaRole*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentAriaRole(self, retVal)
+
+proc get_CurrentAriaProperties*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentAriaProperties(self, retVal)
+
+proc get_CurrentIsDataValidForForm*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsDataValidForForm(self, retVal)
+
+proc get_CurrentControllerFor*(
+    self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentControllerFor(self, retVal)
+
+proc get_CurrentDescribedBy*(
+    self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentDescribedBy(self, retVal)
+
+proc get_CurrentFlowsTo*(
+    self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentFlowsTo(self, retVal)
+
+proc get_CurrentProviderDescription*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentProviderDescription(self, retVal)
+
+proc get_CachedProcessId*(
+    self: ptr IUIAutomationElement, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedProcessId(self, retVal)
+
+proc get_CachedControlType*(
+    self: ptr IUIAutomationElement, retVal: ptr CONTROLTYPEID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedControlType(self, retVal)
+
+proc get_CachedLocalizedControlType*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedLocalizedControlType(self, retVal)
+
+proc get_CachedName*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedName(self, retVal)
+
+proc get_CachedAcceleratorKey*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedAcceleratorKey(self, retVal)
+
+proc get_CachedAccessKey*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedAccessKey(self, retVal)
+
+proc get_CachedHasKeyboardFocus*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedHasKeyboardFocus(self, retVal)
+
+proc get_CachedIsKeyboardFocusable*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsKeyboardFocusable(self, retVal)
+
+proc get_CachedIsEnabled*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsEnabled(self, retVal)
+
+proc get_CachedAutomationId*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedAutomationId(self, retVal)
+
+proc get_CachedClassName*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedClassName(self, retVal)
+
+proc get_CachedHelpText*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedHelpText(self, retVal)
+
+proc get_CachedCulture*(
+    self: ptr IUIAutomationElement, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedCulture(self, retVal)
+
+proc get_CachedIsControlElement*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsControlElement(self, retVal)
+
+proc get_CachedIsContentElement*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsContentElement(self, retVal)
+
+proc get_CachedIsPassword*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsPassword(self, retVal)
+
+proc get_CachedNativeWindowHandle*(
+    self: ptr IUIAutomationElement, retVal: ptr UIA_HWND
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedNativeWindowHandle(self, retVal)
+
+proc get_CachedItemType*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedItemType(self, retVal)
+
+proc get_CachedIsOffscreen*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsOffscreen(self, retVal)
+
+proc get_CachedOrientation*(
+    self: ptr IUIAutomationElement, retVal: ptr OrientationType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedOrientation(self, retVal)
+
+proc get_CachedFrameworkId*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedFrameworkId(self, retVal)
+
+proc get_CachedIsRequiredForForm*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsRequiredForForm(self, retVal)
+
+proc get_CachedItemStatus*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedItemStatus(self, retVal)
+
+proc get_CachedBoundingRectangle*(
+    self: ptr IUIAutomationElement, retVal: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedBoundingRectangle(self, retVal)
+
+proc get_CachedLabeledBy*(
+    self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedLabeledBy(self, retVal)
+
+proc get_CachedAriaRole*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedAriaRole(self, retVal)
+
+proc get_CachedAriaProperties*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedAriaProperties(self, retVal)
+
+proc get_CachedIsDataValidForForm*(
+    self: ptr IUIAutomationElement, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsDataValidForForm(self, retVal)
+
+proc get_CachedControllerFor*(
+    self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedControllerFor(self, retVal)
+
+proc get_CachedDescribedBy*(
+    self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedDescribedBy(self, retVal)
+
+proc get_CachedFlowsTo*(
+    self: ptr IUIAutomationElement, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedFlowsTo(self, retVal)
+
+proc get_CachedProviderDescription*(
+    self: ptr IUIAutomationElement, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedProviderDescription(self, retVal)
+
+proc GetClickablePoint*(
+    self: ptr IUIAutomationElement, clickable: ptr POINT, gotClickable: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetClickablePoint(self, clickable, gotClickable)
+
+proc get_Length*(
+    self: ptr IUIAutomationElementArray, length: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Length(self, length)
+
+proc GetElement*(
+    self: ptr IUIAutomationElementArray,
+    index: int32,
+    element: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetElement(self, index, element)
+
+proc get_BooleanValue*(
+    self: ptr IUIAutomationBoolCondition, boolVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_BooleanValue(self, boolVal)
+
+proc get_PropertyId*(
+    self: ptr IUIAutomationPropertyCondition, propertyId: ptr PROPERTYID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_PropertyId(self, propertyId)
+
+proc get_PropertyValue*(
+    self: ptr IUIAutomationPropertyCondition, propertyValue: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_PropertyValue(self, propertyValue)
+
+proc get_PropertyConditionFlags*(
+    self: ptr IUIAutomationPropertyCondition, flags: ptr PropertyConditionFlags
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_PropertyConditionFlags(self, flags)
+
+proc get_ChildCount*(
+    self: ptr IUIAutomationAndCondition, childCount: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ChildCount(self, childCount)
+
+proc GetChildrenAsNativeArray*(
+    self: ptr IUIAutomationAndCondition,
+    childArray: ptr ptr ptr IUIAutomationCondition,
+    childArrayCount: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetChildrenAsNativeArray(self, childArray, childArrayCount)
+
+proc GetChildren*(
+    self: ptr IUIAutomationAndCondition, childArray: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetChildren(self, childArray)
+
+proc get_ChildCount*(
+    self: ptr IUIAutomationOrCondition, childCount: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ChildCount(self, childCount)
+
+proc GetChildrenAsNativeArray*(
+    self: ptr IUIAutomationOrCondition,
+    childArray: ptr ptr ptr IUIAutomationCondition,
+    childArrayCount: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetChildrenAsNativeArray(self, childArray, childArrayCount)
+
+proc GetChildren*(
+    self: ptr IUIAutomationOrCondition, childArray: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetChildren(self, childArray)
+
+proc GetChild*(
+    self: ptr IUIAutomationNotCondition, condition: ptr ptr IUIAutomationCondition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetChild(self, condition)
+
+proc AddProperty*(
+    self: ptr IUIAutomationCacheRequest, propertyId: PROPERTYID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddProperty(self, propertyId)
+
+proc AddPattern*(
+    self: ptr IUIAutomationCacheRequest, patternId: PATTERNID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddPattern(self, patternId)
+
+proc Clone*(
+    self: ptr IUIAutomationCacheRequest,
+    clonedRequest: ptr ptr IUIAutomationCacheRequest,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, clonedRequest)
+
+proc get_TreeScope*(
+    self: ptr IUIAutomationCacheRequest, scope: ptr TreeScope
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TreeScope(self, scope)
+
+proc put_TreeScope*(
+    self: ptr IUIAutomationCacheRequest, scope: TreeScope
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_TreeScope(self, scope)
+
+proc get_TreeFilter*(
+    self: ptr IUIAutomationCacheRequest, filter: ptr ptr IUIAutomationCondition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TreeFilter(self, filter)
+
+proc put_TreeFilter*(
+    self: ptr IUIAutomationCacheRequest, filter: ptr IUIAutomationCondition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_TreeFilter(self, filter)
+
+proc get_AutomationElementMode*(
+    self: ptr IUIAutomationCacheRequest, mode: ptr AutomationElementMode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_AutomationElementMode(self, mode)
+
+proc put_AutomationElementMode*(
+    self: ptr IUIAutomationCacheRequest, mode: AutomationElementMode
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_AutomationElementMode(self, mode)
+
+proc GetParentElement*(
+    self: ptr IUIAutomationTreeWalker,
+    element: ptr IUIAutomationElement,
+    parent: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetParentElement(self, element, parent)
+
+proc GetFirstChildElement*(
+    self: ptr IUIAutomationTreeWalker,
+    element: ptr IUIAutomationElement,
+    first: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFirstChildElement(self, element, first)
+
+proc GetLastChildElement*(
+    self: ptr IUIAutomationTreeWalker,
+    element: ptr IUIAutomationElement,
+    last: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLastChildElement(self, element, last)
+
+proc GetNextSiblingElement*(
+    self: ptr IUIAutomationTreeWalker,
+    element: ptr IUIAutomationElement,
+    next: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNextSiblingElement(self, element, next)
+
+proc GetPreviousSiblingElement*(
+    self: ptr IUIAutomationTreeWalker,
+    element: ptr IUIAutomationElement,
+    previous: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPreviousSiblingElement(self, element, previous)
+
+proc NormalizeElement*(
+    self: ptr IUIAutomationTreeWalker,
+    element: ptr IUIAutomationElement,
+    normalized: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NormalizeElement(self, element, normalized)
+
+proc GetParentElementBuildCache*(
+    self: ptr IUIAutomationTreeWalker,
+    element: ptr IUIAutomationElement,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    parent: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetParentElementBuildCache(self, element, cacheRequest, parent)
+
+proc GetFirstChildElementBuildCache*(
+    self: ptr IUIAutomationTreeWalker,
+    element: ptr IUIAutomationElement,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    first: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFirstChildElementBuildCache(self, element, cacheRequest, first)
+
+proc GetLastChildElementBuildCache*(
+    self: ptr IUIAutomationTreeWalker,
+    element: ptr IUIAutomationElement,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    last: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLastChildElementBuildCache(self, element, cacheRequest, last)
+
+proc GetNextSiblingElementBuildCache*(
+    self: ptr IUIAutomationTreeWalker,
+    element: ptr IUIAutomationElement,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    next: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNextSiblingElementBuildCache(self, element, cacheRequest, next)
+
+proc GetPreviousSiblingElementBuildCache*(
+    self: ptr IUIAutomationTreeWalker,
+    element: ptr IUIAutomationElement,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    previous: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPreviousSiblingElementBuildCache(
+      self, element, cacheRequest, previous
+    )
+
+proc NormalizeElementBuildCache*(
+    self: ptr IUIAutomationTreeWalker,
+    element: ptr IUIAutomationElement,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    normalized: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.NormalizeElementBuildCache(self, element, cacheRequest, normalized)
+
+proc get_Condition*(
+    self: ptr IUIAutomationTreeWalker, condition: ptr ptr IUIAutomationCondition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Condition(self, condition)
+
+proc HandleAutomationEvent*(
+    self: ptr IUIAutomationEventHandler,
+    sender: ptr IUIAutomationElement,
+    eventId: EVENTID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleAutomationEvent(self, sender, eventId)
+
+proc HandlePropertyChangedEvent*(
+    self: ptr IUIAutomationPropertyChangedEventHandler,
+    sender: ptr IUIAutomationElement,
+    propertyId: PROPERTYID,
+    newValue: VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandlePropertyChangedEvent(self, sender, propertyId, newValue)
+
+proc HandleStructureChangedEvent*(
+    self: ptr IUIAutomationStructureChangedEventHandler,
+    sender: ptr IUIAutomationElement,
+    changeType: StructureChangeType,
+    runtimeId: ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleStructureChangedEvent(self, sender, changeType, runtimeId)
+
+proc HandleFocusChangedEvent*(
+    self: ptr IUIAutomationFocusChangedEventHandler, sender: ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleFocusChangedEvent(self, sender)
+
+proc HandleTextEditTextChangedEvent*(
+    self: ptr IUIAutomationTextEditTextChangedEventHandler,
+    sender: ptr IUIAutomationElement,
+    textEditChangeType: TextEditChangeType,
+    eventStrings: ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleTextEditTextChangedEvent(
+      self, sender, textEditChangeType, eventStrings
+    )
+
+proc HandleChangesEvent*(
+    self: ptr IUIAutomationChangesEventHandler,
+    sender: ptr IUIAutomationElement,
+    uiaChanges: ptr UiaChangeInfo,
+    changesCount: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleChangesEvent(self, sender, uiaChanges, changesCount)
+
+proc HandleNotificationEvent*(
+    self: ptr IUIAutomationNotificationEventHandler,
+    sender: ptr IUIAutomationElement,
+    notificationKind: NotificationKind,
+    notificationProcessing: NotificationProcessing,
+    displayString: BSTR,
+    activityId: BSTR,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleNotificationEvent(
+      self, sender, notificationKind, notificationProcessing, displayString, activityId
+    )
+
+proc Invoke*(self: ptr IUIAutomationInvokePattern): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Invoke(self)
+
+proc SetDockPosition*(
+    self: ptr IUIAutomationDockPattern, dockPos: DockPosition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetDockPosition(self, dockPos)
+
+proc get_CurrentDockPosition*(
+    self: ptr IUIAutomationDockPattern, retVal: ptr DockPosition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentDockPosition(self, retVal)
+
+proc get_CachedDockPosition*(
+    self: ptr IUIAutomationDockPattern, retVal: ptr DockPosition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedDockPosition(self, retVal)
+
+proc Expand*(self: ptr IUIAutomationExpandCollapsePattern): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Expand(self)
+
+proc Collapse*(
+    self: ptr IUIAutomationExpandCollapsePattern
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Collapse(self)
+
+proc get_CurrentExpandCollapseState*(
+    self: ptr IUIAutomationExpandCollapsePattern, retVal: ptr ExpandCollapseState
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentExpandCollapseState(self, retVal)
+
+proc get_CachedExpandCollapseState*(
+    self: ptr IUIAutomationExpandCollapsePattern, retVal: ptr ExpandCollapseState
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedExpandCollapseState(self, retVal)
+
+proc GetItem*(
+    self: ptr IUIAutomationGridPattern,
+    row: int32,
+    column: int32,
+    element: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItem(self, row, column, element)
+
+proc get_CurrentRowCount*(
+    self: ptr IUIAutomationGridPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentRowCount(self, retVal)
+
+proc get_CurrentColumnCount*(
+    self: ptr IUIAutomationGridPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentColumnCount(self, retVal)
+
+proc get_CachedRowCount*(
+    self: ptr IUIAutomationGridPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedRowCount(self, retVal)
+
+proc get_CachedColumnCount*(
+    self: ptr IUIAutomationGridPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedColumnCount(self, retVal)
+
+proc get_CurrentContainingGrid*(
+    self: ptr IUIAutomationGridItemPattern, retVal: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentContainingGrid(self, retVal)
+
+proc get_CurrentRow*(
+    self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentRow(self, retVal)
+
+proc get_CurrentColumn*(
+    self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentColumn(self, retVal)
+
+proc get_CurrentRowSpan*(
+    self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentRowSpan(self, retVal)
+
+proc get_CurrentColumnSpan*(
+    self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentColumnSpan(self, retVal)
+
+proc get_CachedContainingGrid*(
+    self: ptr IUIAutomationGridItemPattern, retVal: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedContainingGrid(self, retVal)
+
+proc get_CachedRow*(
+    self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedRow(self, retVal)
+
+proc get_CachedColumn*(
+    self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedColumn(self, retVal)
+
+proc get_CachedRowSpan*(
+    self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedRowSpan(self, retVal)
+
+proc get_CachedColumnSpan*(
+    self: ptr IUIAutomationGridItemPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedColumnSpan(self, retVal)
+
+proc GetViewName*(
+    self: ptr IUIAutomationMultipleViewPattern, view: int32, name: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetViewName(self, view, name)
+
+proc SetCurrentView*(
+    self: ptr IUIAutomationMultipleViewPattern, view: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetCurrentView(self, view)
+
+proc get_CurrentCurrentView*(
+    self: ptr IUIAutomationMultipleViewPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentCurrentView(self, retVal)
+
+proc GetCurrentSupportedViews*(
+    self: ptr IUIAutomationMultipleViewPattern, retVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentSupportedViews(self, retVal)
+
+proc get_CachedCurrentView*(
+    self: ptr IUIAutomationMultipleViewPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedCurrentView(self, retVal)
+
+proc GetCachedSupportedViews*(
+    self: ptr IUIAutomationMultipleViewPattern, retVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedSupportedViews(self, retVal)
+
+proc GetUnderlyingObjectModel*(
+    self: ptr IUIAutomationObjectModelPattern, retVal: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetUnderlyingObjectModel(self, retVal)
+
+proc SetValue*(
+    self: ptr IUIAutomationRangeValuePattern, val: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetValue(self, val)
+
+proc get_CurrentValue*(
+    self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentValue(self, retVal)
+
+proc get_CurrentIsReadOnly*(
+    self: ptr IUIAutomationRangeValuePattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsReadOnly(self, retVal)
+
+proc get_CurrentMaximum*(
+    self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentMaximum(self, retVal)
+
+proc get_CurrentMinimum*(
+    self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentMinimum(self, retVal)
+
+proc get_CurrentLargeChange*(
+    self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentLargeChange(self, retVal)
+
+proc get_CurrentSmallChange*(
+    self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentSmallChange(self, retVal)
+
+proc get_CachedValue*(
+    self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedValue(self, retVal)
+
+proc get_CachedIsReadOnly*(
+    self: ptr IUIAutomationRangeValuePattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsReadOnly(self, retVal)
+
+proc get_CachedMaximum*(
+    self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedMaximum(self, retVal)
+
+proc get_CachedMinimum*(
+    self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedMinimum(self, retVal)
+
+proc get_CachedLargeChange*(
+    self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedLargeChange(self, retVal)
+
+proc get_CachedSmallChange*(
+    self: ptr IUIAutomationRangeValuePattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedSmallChange(self, retVal)
+
+proc Scroll*(
+    self: ptr IUIAutomationScrollPattern,
+    horizontalAmount: ScrollAmount,
+    verticalAmount: ScrollAmount,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Scroll(self, horizontalAmount, verticalAmount)
+
+proc SetScrollPercent*(
+    self: ptr IUIAutomationScrollPattern,
+    horizontalPercent: float64,
+    verticalPercent: float64,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetScrollPercent(self, horizontalPercent, verticalPercent)
+
+proc get_CurrentHorizontalScrollPercent*(
+    self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentHorizontalScrollPercent(self, retVal)
+
+proc get_CurrentVerticalScrollPercent*(
+    self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentVerticalScrollPercent(self, retVal)
+
+proc get_CurrentHorizontalViewSize*(
+    self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentHorizontalViewSize(self, retVal)
+
+proc get_CurrentVerticalViewSize*(
+    self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentVerticalViewSize(self, retVal)
+
+proc get_CurrentHorizontallyScrollable*(
+    self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentHorizontallyScrollable(self, retVal)
+
+proc get_CurrentVerticallyScrollable*(
+    self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentVerticallyScrollable(self, retVal)
+
+proc get_CachedHorizontalScrollPercent*(
+    self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedHorizontalScrollPercent(self, retVal)
+
+proc get_CachedVerticalScrollPercent*(
+    self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedVerticalScrollPercent(self, retVal)
+
+proc get_CachedHorizontalViewSize*(
+    self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedHorizontalViewSize(self, retVal)
+
+proc get_CachedVerticalViewSize*(
+    self: ptr IUIAutomationScrollPattern, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedVerticalViewSize(self, retVal)
+
+proc get_CachedHorizontallyScrollable*(
+    self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedHorizontallyScrollable(self, retVal)
+
+proc get_CachedVerticallyScrollable*(
+    self: ptr IUIAutomationScrollPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedVerticallyScrollable(self, retVal)
+
+proc ScrollIntoView*(
+    self: ptr IUIAutomationScrollItemPattern
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ScrollIntoView(self)
+
+proc GetCurrentSelection*(
+    self: ptr IUIAutomationSelectionPattern, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentSelection(self, retVal)
+
+proc get_CurrentCanSelectMultiple*(
+    self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentCanSelectMultiple(self, retVal)
+
+proc get_CurrentIsSelectionRequired*(
+    self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsSelectionRequired(self, retVal)
+
+proc GetCachedSelection*(
+    self: ptr IUIAutomationSelectionPattern, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedSelection(self, retVal)
+
+proc get_CachedCanSelectMultiple*(
+    self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedCanSelectMultiple(self, retVal)
+
+proc get_CachedIsSelectionRequired*(
+    self: ptr IUIAutomationSelectionPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsSelectionRequired(self, retVal)
+
+proc get_CurrentFirstSelectedItem*(
+    self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentFirstSelectedItem(self, retVal)
+
+proc get_CurrentLastSelectedItem*(
+    self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentLastSelectedItem(self, retVal)
+
+proc get_CurrentCurrentSelectedItem*(
+    self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentCurrentSelectedItem(self, retVal)
+
+proc get_CurrentItemCount*(
+    self: ptr IUIAutomationSelectionPattern2, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentItemCount(self, retVal)
+
+proc get_CachedFirstSelectedItem*(
+    self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedFirstSelectedItem(self, retVal)
+
+proc get_CachedLastSelectedItem*(
+    self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedLastSelectedItem(self, retVal)
+
+proc get_CachedCurrentSelectedItem*(
+    self: ptr IUIAutomationSelectionPattern2, retVal: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedCurrentSelectedItem(self, retVal)
+
+proc get_CachedItemCount*(
+    self: ptr IUIAutomationSelectionPattern2, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedItemCount(self, retVal)
+
+proc Select*(self: ptr IUIAutomationSelectionItemPattern): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Select(self)
+
+proc AddToSelection*(
+    self: ptr IUIAutomationSelectionItemPattern
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddToSelection(self)
+
+proc RemoveFromSelection*(
+    self: ptr IUIAutomationSelectionItemPattern
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveFromSelection(self)
+
+proc get_CurrentIsSelected*(
+    self: ptr IUIAutomationSelectionItemPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsSelected(self, retVal)
+
+proc get_CurrentSelectionContainer*(
+    self: ptr IUIAutomationSelectionItemPattern, retVal: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentSelectionContainer(self, retVal)
+
+proc get_CachedIsSelected*(
+    self: ptr IUIAutomationSelectionItemPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsSelected(self, retVal)
+
+proc get_CachedSelectionContainer*(
+    self: ptr IUIAutomationSelectionItemPattern, retVal: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedSelectionContainer(self, retVal)
+
+proc StartListening*(
+    self: ptr IUIAutomationSynchronizedInputPattern, inputType: SynchronizedInputType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.StartListening(self, inputType)
+
+proc Cancel*(
+    self: ptr IUIAutomationSynchronizedInputPattern
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Cancel(self)
+
+proc GetCurrentRowHeaders*(
+    self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentRowHeaders(self, retVal)
+
+proc GetCurrentColumnHeaders*(
+    self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentColumnHeaders(self, retVal)
+
+proc get_CurrentRowOrColumnMajor*(
+    self: ptr IUIAutomationTablePattern, retVal: ptr RowOrColumnMajor
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentRowOrColumnMajor(self, retVal)
+
+proc GetCachedRowHeaders*(
+    self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedRowHeaders(self, retVal)
+
+proc GetCachedColumnHeaders*(
+    self: ptr IUIAutomationTablePattern, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedColumnHeaders(self, retVal)
+
+proc get_CachedRowOrColumnMajor*(
+    self: ptr IUIAutomationTablePattern, retVal: ptr RowOrColumnMajor
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedRowOrColumnMajor(self, retVal)
+
+proc GetCurrentRowHeaderItems*(
+    self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentRowHeaderItems(self, retVal)
+
+proc GetCurrentColumnHeaderItems*(
+    self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentColumnHeaderItems(self, retVal)
+
+proc GetCachedRowHeaderItems*(
+    self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedRowHeaderItems(self, retVal)
+
+proc GetCachedColumnHeaderItems*(
+    self: ptr IUIAutomationTableItemPattern, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedColumnHeaderItems(self, retVal)
+
+proc Toggle*(self: ptr IUIAutomationTogglePattern): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Toggle(self)
+
+proc get_CurrentToggleState*(
+    self: ptr IUIAutomationTogglePattern, retVal: ptr ToggleState
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentToggleState(self, retVal)
+
+proc get_CachedToggleState*(
+    self: ptr IUIAutomationTogglePattern, retVal: ptr ToggleState
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedToggleState(self, retVal)
+
+proc Move*(
+    self: ptr IUIAutomationTransformPattern, x: float64, y: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Move(self, x, y)
+
+proc Resize*(
+    self: ptr IUIAutomationTransformPattern, width: float64, height: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Resize(self, width, height)
+
+proc Rotate*(
+    self: ptr IUIAutomationTransformPattern, degrees: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Rotate(self, degrees)
+
+proc get_CurrentCanMove*(
+    self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentCanMove(self, retVal)
+
+proc get_CurrentCanResize*(
+    self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentCanResize(self, retVal)
+
+proc get_CurrentCanRotate*(
+    self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentCanRotate(self, retVal)
+
+proc get_CachedCanMove*(
+    self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedCanMove(self, retVal)
+
+proc get_CachedCanResize*(
+    self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedCanResize(self, retVal)
+
+proc get_CachedCanRotate*(
+    self: ptr IUIAutomationTransformPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedCanRotate(self, retVal)
+
+proc SetValue*(
+    self: ptr IUIAutomationValuePattern, val: BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetValue(self, val)
+
+proc get_CurrentValue*(
+    self: ptr IUIAutomationValuePattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentValue(self, retVal)
+
+proc get_CurrentIsReadOnly*(
+    self: ptr IUIAutomationValuePattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsReadOnly(self, retVal)
+
+proc get_CachedValue*(
+    self: ptr IUIAutomationValuePattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedValue(self, retVal)
+
+proc get_CachedIsReadOnly*(
+    self: ptr IUIAutomationValuePattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsReadOnly(self, retVal)
+
+proc Close*(self: ptr IUIAutomationWindowPattern): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Close(self)
+
+proc WaitForInputIdle*(
+    self: ptr IUIAutomationWindowPattern, milliseconds: int32, success: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WaitForInputIdle(self, milliseconds, success)
+
+proc SetWindowVisualState*(
+    self: ptr IUIAutomationWindowPattern, state: WindowVisualState
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetWindowVisualState(self, state)
+
+proc get_CurrentCanMaximize*(
+    self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentCanMaximize(self, retVal)
+
+proc get_CurrentCanMinimize*(
+    self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentCanMinimize(self, retVal)
+
+proc get_CurrentIsModal*(
+    self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsModal(self, retVal)
+
+proc get_CurrentIsTopmost*(
+    self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsTopmost(self, retVal)
+
+proc get_CurrentWindowVisualState*(
+    self: ptr IUIAutomationWindowPattern, retVal: ptr WindowVisualState
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentWindowVisualState(self, retVal)
+
+proc get_CurrentWindowInteractionState*(
+    self: ptr IUIAutomationWindowPattern, retVal: ptr WindowInteractionState
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentWindowInteractionState(self, retVal)
+
+proc get_CachedCanMaximize*(
+    self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedCanMaximize(self, retVal)
+
+proc get_CachedCanMinimize*(
+    self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedCanMinimize(self, retVal)
+
+proc get_CachedIsModal*(
+    self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsModal(self, retVal)
+
+proc get_CachedIsTopmost*(
+    self: ptr IUIAutomationWindowPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsTopmost(self, retVal)
+
+proc get_CachedWindowVisualState*(
+    self: ptr IUIAutomationWindowPattern, retVal: ptr WindowVisualState
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedWindowVisualState(self, retVal)
+
+proc get_CachedWindowInteractionState*(
+    self: ptr IUIAutomationWindowPattern, retVal: ptr WindowInteractionState
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedWindowInteractionState(self, retVal)
+
+proc Clone*(
+    self: ptr IUIAutomationTextRange, clonedRange: ptr ptr IUIAutomationTextRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, clonedRange)
+
+proc Compare*(
+    self: ptr IUIAutomationTextRange,
+    range: ptr IUIAutomationTextRange,
+    areSame: ptr BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Compare(self, range, areSame)
+
+proc CompareEndpoints*(
+    self: ptr IUIAutomationTextRange,
+    srcEndPoint: TextPatternRangeEndpoint,
+    range: ptr IUIAutomationTextRange,
+    targetEndPoint: TextPatternRangeEndpoint,
+    compValue: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CompareEndpoints(self, srcEndPoint, range, targetEndPoint, compValue)
+
+proc ExpandToEnclosingUnit*(
+    self: ptr IUIAutomationTextRange, textUnit: TextUnit
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ExpandToEnclosingUnit(self, textUnit)
+
+proc FindAttribute*(
+    self: ptr IUIAutomationTextRange,
+    attr: TEXTATTRIBUTEID,
+    val: VARIANT,
+    backward: BOOL,
+    found: ptr ptr IUIAutomationTextRange,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindAttribute(self, attr, val, backward, found)
+
+proc FindText*(
+    self: ptr IUIAutomationTextRange,
+    text: BSTR,
+    backward: BOOL,
+    ignoreCase: BOOL,
+    found: ptr ptr IUIAutomationTextRange,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindText(self, text, backward, ignoreCase, found)
+
+proc GetAttributeValue*(
+    self: ptr IUIAutomationTextRange, attr: TEXTATTRIBUTEID, value: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAttributeValue(self, attr, value)
+
+proc GetBoundingRectangles*(
+    self: ptr IUIAutomationTextRange, boundingRects: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBoundingRectangles(self, boundingRects)
+
+proc GetEnclosingElement*(
+    self: ptr IUIAutomationTextRange, enclosingElement: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEnclosingElement(self, enclosingElement)
+
+proc GetText*(
+    self: ptr IUIAutomationTextRange, maxLength: int32, text: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetText(self, maxLength, text)
+
+proc Move*(
+    self: ptr IUIAutomationTextRange, unit: TextUnit, count: int32, moved: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Move(self, unit, count, moved)
+
+proc MoveEndpointByUnit*(
+    self: ptr IUIAutomationTextRange,
+    endpoint: TextPatternRangeEndpoint,
+    unit: TextUnit,
+    count: int32,
+    moved: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveEndpointByUnit(self, endpoint, unit, count, moved)
+
+proc MoveEndpointByRange*(
+    self: ptr IUIAutomationTextRange,
+    srcEndPoint: TextPatternRangeEndpoint,
+    range: ptr IUIAutomationTextRange,
+    targetEndPoint: TextPatternRangeEndpoint,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MoveEndpointByRange(self, srcEndPoint, range, targetEndPoint)
+
+proc Select*(self: ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Select(self)
+
+proc AddToSelection*(self: ptr IUIAutomationTextRange): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddToSelection(self)
+
+proc RemoveFromSelection*(
+    self: ptr IUIAutomationTextRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveFromSelection(self)
+
+proc ScrollIntoView*(
+    self: ptr IUIAutomationTextRange, alignToTop: BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ScrollIntoView(self, alignToTop)
+
+proc GetChildren*(
+    self: ptr IUIAutomationTextRange, children: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetChildren(self, children)
+
+proc ShowContextMenu*(self: ptr IUIAutomationTextRange2): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowContextMenu(self)
+
+proc GetEnclosingElementBuildCache*(
+    self: ptr IUIAutomationTextRange3,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    enclosingElement: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEnclosingElementBuildCache(self, cacheRequest, enclosingElement)
+
+proc GetChildrenBuildCache*(
+    self: ptr IUIAutomationTextRange3,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    children: ptr ptr IUIAutomationElementArray,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetChildrenBuildCache(self, cacheRequest, children)
+
+proc GetAttributeValues*(
+    self: ptr IUIAutomationTextRange3,
+    attributeIds: ptr TEXTATTRIBUTEID,
+    attributeIdCount: int32,
+    attributeValues: ptr ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAttributeValues(
+      self, attributeIds, attributeIdCount, attributeValues
+    )
+
+proc get_Length*(
+    self: ptr IUIAutomationTextRangeArray, length: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Length(self, length)
+
+proc GetElement*(
+    self: ptr IUIAutomationTextRangeArray,
+    index: int32,
+    element: ptr ptr IUIAutomationTextRange,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetElement(self, index, element)
+
+proc RangeFromPoint*(
+    self: ptr IUIAutomationTextPattern, pt: POINT, range: ptr ptr IUIAutomationTextRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RangeFromPoint(self, pt, range)
+
+proc RangeFromChild*(
+    self: ptr IUIAutomationTextPattern,
+    child: ptr IUIAutomationElement,
+    range: ptr ptr IUIAutomationTextRange,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RangeFromChild(self, child, range)
+
+proc GetSelection*(
+    self: ptr IUIAutomationTextPattern, ranges: ptr ptr IUIAutomationTextRangeArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSelection(self, ranges)
+
+proc GetVisibleRanges*(
+    self: ptr IUIAutomationTextPattern, ranges: ptr ptr IUIAutomationTextRangeArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetVisibleRanges(self, ranges)
+
+proc get_DocumentRange*(
+    self: ptr IUIAutomationTextPattern, range: ptr ptr IUIAutomationTextRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_DocumentRange(self, range)
+
+proc get_SupportedTextSelection*(
+    self: ptr IUIAutomationTextPattern,
+    supportedTextSelection: ptr SupportedTextSelection,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_SupportedTextSelection(self, supportedTextSelection)
+
+proc RangeFromAnnotation*(
+    self: ptr IUIAutomationTextPattern2,
+    annotation: ptr IUIAutomationElement,
+    range: ptr ptr IUIAutomationTextRange,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RangeFromAnnotation(self, annotation, range)
+
+proc GetCaretRange*(
+    self: ptr IUIAutomationTextPattern2,
+    isActive: ptr BOOL,
+    range: ptr ptr IUIAutomationTextRange,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCaretRange(self, isActive, range)
+
+proc GetActiveComposition*(
+    self: ptr IUIAutomationTextEditPattern, range: ptr ptr IUIAutomationTextRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetActiveComposition(self, range)
+
+proc GetConversionTarget*(
+    self: ptr IUIAutomationTextEditPattern, range: ptr ptr IUIAutomationTextRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetConversionTarget(self, range)
+
+proc Navigate*(
+    self: ptr IUIAutomationCustomNavigationPattern,
+    direction: NavigateDirection,
+    pRetVal: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Navigate(self, direction, pRetVal)
+
+proc HandleActiveTextPositionChangedEvent*(
+    self: ptr IUIAutomationActiveTextPositionChangedEventHandler,
+    sender: ptr IUIAutomationElement,
+    range: ptr IUIAutomationTextRange,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HandleActiveTextPositionChangedEvent(self, sender, range)
+
+proc Select*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, flagsSelect: int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Select(self, flagsSelect)
+
+proc DoDefaultAction*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoDefaultAction(self)
+
+proc SetValue*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, szValue: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetValue(self, szValue)
+
+proc get_CurrentChildId*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pRetVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentChildId(self, pRetVal)
+
+proc get_CurrentName*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pszName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentName(self, pszName)
+
+proc get_CurrentValue*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pszValue: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentValue(self, pszValue)
+
+proc get_CurrentDescription*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pszDescription: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentDescription(self, pszDescription)
+
+proc get_CurrentRole*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pdwRole: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentRole(self, pdwRole)
+
+proc get_CurrentState*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pdwState: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentState(self, pdwState)
+
+proc get_CurrentHelp*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pszHelp: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentHelp(self, pszHelp)
+
+proc get_CurrentKeyboardShortcut*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pszKeyboardShortcut: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentKeyboardShortcut(self, pszKeyboardShortcut)
+
+proc GetCurrentSelection*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern,
+    pvarSelectedChildren: ptr ptr IUIAutomationElementArray,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentSelection(self, pvarSelectedChildren)
+
+proc get_CurrentDefaultAction*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pszDefaultAction: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentDefaultAction(self, pszDefaultAction)
+
+proc get_CachedChildId*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pRetVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedChildId(self, pRetVal)
+
+proc get_CachedName*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pszName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedName(self, pszName)
+
+proc get_CachedValue*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pszValue: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedValue(self, pszValue)
+
+proc get_CachedDescription*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pszDescription: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedDescription(self, pszDescription)
+
+proc get_CachedRole*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pdwRole: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedRole(self, pdwRole)
+
+proc get_CachedState*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pdwState: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedState(self, pdwState)
+
+proc get_CachedHelp*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pszHelp: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedHelp(self, pszHelp)
+
+proc get_CachedKeyboardShortcut*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pszKeyboardShortcut: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedKeyboardShortcut(self, pszKeyboardShortcut)
+
+proc GetCachedSelection*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern,
+    pvarSelectedChildren: ptr ptr IUIAutomationElementArray,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedSelection(self, pvarSelectedChildren)
+
+proc get_CachedDefaultAction*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, pszDefaultAction: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedDefaultAction(self, pszDefaultAction)
+
+proc GetIAccessible*(
+    self: ptr IUIAutomationLegacyIAccessiblePattern, ppAccessible: ptr ptr IAccessible
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetIAccessible(self, ppAccessible)
+
+proc FindItemByProperty*(
+    self: ptr IUIAutomationItemContainerPattern,
+    pStartAfter: ptr IUIAutomationElement,
+    propertyId: PROPERTYID,
+    value: VARIANT,
+    pFound: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindItemByProperty(self, pStartAfter, propertyId, value, pFound)
+
+proc Realize*(
+    self: ptr IUIAutomationVirtualizedItemPattern
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Realize(self)
+
+proc get_CurrentAnnotationTypeId*(
+    self: ptr IUIAutomationAnnotationPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentAnnotationTypeId(self, retVal)
+
+proc get_CurrentAnnotationTypeName*(
+    self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentAnnotationTypeName(self, retVal)
+
+proc get_CurrentAuthor*(
+    self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentAuthor(self, retVal)
+
+proc get_CurrentDateTime*(
+    self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentDateTime(self, retVal)
+
+proc get_CurrentTarget*(
+    self: ptr IUIAutomationAnnotationPattern, retVal: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentTarget(self, retVal)
+
+proc get_CachedAnnotationTypeId*(
+    self: ptr IUIAutomationAnnotationPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedAnnotationTypeId(self, retVal)
+
+proc get_CachedAnnotationTypeName*(
+    self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedAnnotationTypeName(self, retVal)
+
+proc get_CachedAuthor*(
+    self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedAuthor(self, retVal)
+
+proc get_CachedDateTime*(
+    self: ptr IUIAutomationAnnotationPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedDateTime(self, retVal)
+
+proc get_CachedTarget*(
+    self: ptr IUIAutomationAnnotationPattern, retVal: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedTarget(self, retVal)
+
+proc get_CurrentStyleId*(
+    self: ptr IUIAutomationStylesPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentStyleId(self, retVal)
+
+proc get_CurrentStyleName*(
+    self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentStyleName(self, retVal)
+
+proc get_CurrentFillColor*(
+    self: ptr IUIAutomationStylesPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentFillColor(self, retVal)
+
+proc get_CurrentFillPatternStyle*(
+    self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentFillPatternStyle(self, retVal)
+
+proc get_CurrentShape*(
+    self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentShape(self, retVal)
+
+proc get_CurrentFillPatternColor*(
+    self: ptr IUIAutomationStylesPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentFillPatternColor(self, retVal)
+
+proc get_CurrentExtendedProperties*(
+    self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentExtendedProperties(self, retVal)
+
+proc GetCurrentExtendedPropertiesAsArray*(
+    self: ptr IUIAutomationStylesPattern,
+    propertyArray: ptr ptr TExtendedProperty,
+    propertyCount: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentExtendedPropertiesAsArray(self, propertyArray, propertyCount)
+
+proc get_CachedStyleId*(
+    self: ptr IUIAutomationStylesPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedStyleId(self, retVal)
+
+proc get_CachedStyleName*(
+    self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedStyleName(self, retVal)
+
+proc get_CachedFillColor*(
+    self: ptr IUIAutomationStylesPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedFillColor(self, retVal)
+
+proc get_CachedFillPatternStyle*(
+    self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedFillPatternStyle(self, retVal)
+
+proc get_CachedShape*(
+    self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedShape(self, retVal)
+
+proc get_CachedFillPatternColor*(
+    self: ptr IUIAutomationStylesPattern, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedFillPatternColor(self, retVal)
+
+proc get_CachedExtendedProperties*(
+    self: ptr IUIAutomationStylesPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedExtendedProperties(self, retVal)
+
+proc GetCachedExtendedPropertiesAsArray*(
+    self: ptr IUIAutomationStylesPattern,
+    propertyArray: ptr ptr TExtendedProperty,
+    propertyCount: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedExtendedPropertiesAsArray(self, propertyArray, propertyCount)
+
+proc GetItemByName*(
+    self: ptr IUIAutomationSpreadsheetPattern,
+    name: BSTR,
+    element: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetItemByName(self, name, element)
+
+proc get_CurrentFormula*(
+    self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentFormula(self, retVal)
+
+proc GetCurrentAnnotationObjects*(
+    self: ptr IUIAutomationSpreadsheetItemPattern,
+    retVal: ptr ptr IUIAutomationElementArray,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentAnnotationObjects(self, retVal)
+
+proc GetCurrentAnnotationTypes*(
+    self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentAnnotationTypes(self, retVal)
+
+proc get_CachedFormula*(
+    self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedFormula(self, retVal)
+
+proc GetCachedAnnotationObjects*(
+    self: ptr IUIAutomationSpreadsheetItemPattern,
+    retVal: ptr ptr IUIAutomationElementArray,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedAnnotationObjects(self, retVal)
+
+proc GetCachedAnnotationTypes*(
+    self: ptr IUIAutomationSpreadsheetItemPattern, retVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedAnnotationTypes(self, retVal)
+
+proc Zoom*(
+    self: ptr IUIAutomationTransformPattern2, zoomValue: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Zoom(self, zoomValue)
+
+proc ZoomByUnit*(
+    self: ptr IUIAutomationTransformPattern2, zoomUnit: ZoomUnit
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ZoomByUnit(self, zoomUnit)
+
+proc get_CurrentCanZoom*(
+    self: ptr IUIAutomationTransformPattern2, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentCanZoom(self, retVal)
+
+proc get_CachedCanZoom*(
+    self: ptr IUIAutomationTransformPattern2, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedCanZoom(self, retVal)
+
+proc get_CurrentZoomLevel*(
+    self: ptr IUIAutomationTransformPattern2, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentZoomLevel(self, retVal)
+
+proc get_CachedZoomLevel*(
+    self: ptr IUIAutomationTransformPattern2, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedZoomLevel(self, retVal)
+
+proc get_CurrentZoomMinimum*(
+    self: ptr IUIAutomationTransformPattern2, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentZoomMinimum(self, retVal)
+
+proc get_CachedZoomMinimum*(
+    self: ptr IUIAutomationTransformPattern2, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedZoomMinimum(self, retVal)
+
+proc get_CurrentZoomMaximum*(
+    self: ptr IUIAutomationTransformPattern2, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentZoomMaximum(self, retVal)
+
+proc get_CachedZoomMaximum*(
+    self: ptr IUIAutomationTransformPattern2, retVal: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedZoomMaximum(self, retVal)
+
+proc get_TextContainer*(
+    self: ptr IUIAutomationTextChildPattern, container: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TextContainer(self, container)
+
+proc get_TextRange*(
+    self: ptr IUIAutomationTextChildPattern, range: ptr ptr IUIAutomationTextRange
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TextRange(self, range)
+
+proc get_CurrentIsGrabbed*(
+    self: ptr IUIAutomationDragPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsGrabbed(self, retVal)
+
+proc get_CachedIsGrabbed*(
+    self: ptr IUIAutomationDragPattern, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsGrabbed(self, retVal)
+
+proc get_CurrentDropEffect*(
+    self: ptr IUIAutomationDragPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentDropEffect(self, retVal)
+
+proc get_CachedDropEffect*(
+    self: ptr IUIAutomationDragPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedDropEffect(self, retVal)
+
+proc get_CurrentDropEffects*(
+    self: ptr IUIAutomationDragPattern, retVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentDropEffects(self, retVal)
+
+proc get_CachedDropEffects*(
+    self: ptr IUIAutomationDragPattern, retVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedDropEffects(self, retVal)
+
+proc GetCurrentGrabbedItems*(
+    self: ptr IUIAutomationDragPattern, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentGrabbedItems(self, retVal)
+
+proc GetCachedGrabbedItems*(
+    self: ptr IUIAutomationDragPattern, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCachedGrabbedItems(self, retVal)
+
+proc get_CurrentDropTargetEffect*(
+    self: ptr IUIAutomationDropTargetPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentDropTargetEffect(self, retVal)
+
+proc get_CachedDropTargetEffect*(
+    self: ptr IUIAutomationDropTargetPattern, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedDropTargetEffect(self, retVal)
+
+proc get_CurrentDropTargetEffects*(
+    self: ptr IUIAutomationDropTargetPattern, retVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentDropTargetEffects(self, retVal)
+
+proc get_CachedDropTargetEffects*(
+    self: ptr IUIAutomationDropTargetPattern, retVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedDropTargetEffects(self, retVal)
+
+proc get_CurrentOptimizeForVisualContent*(
+    self: ptr IUIAutomationElement2, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentOptimizeForVisualContent(self, retVal)
+
+proc get_CachedOptimizeForVisualContent*(
+    self: ptr IUIAutomationElement2, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedOptimizeForVisualContent(self, retVal)
+
+proc get_CurrentLiveSetting*(
+    self: ptr IUIAutomationElement2, retVal: ptr LiveSetting
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentLiveSetting(self, retVal)
+
+proc get_CachedLiveSetting*(
+    self: ptr IUIAutomationElement2, retVal: ptr LiveSetting
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedLiveSetting(self, retVal)
+
+proc get_CurrentFlowsFrom*(
+    self: ptr IUIAutomationElement2, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentFlowsFrom(self, retVal)
+
+proc get_CachedFlowsFrom*(
+    self: ptr IUIAutomationElement2, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedFlowsFrom(self, retVal)
+
+proc ShowContextMenu*(self: ptr IUIAutomationElement3): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ShowContextMenu(self)
+
+proc get_CurrentIsPeripheral*(
+    self: ptr IUIAutomationElement3, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsPeripheral(self, retVal)
+
+proc get_CachedIsPeripheral*(
+    self: ptr IUIAutomationElement3, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsPeripheral(self, retVal)
+
+proc get_CurrentPositionInSet*(
+    self: ptr IUIAutomationElement4, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentPositionInSet(self, retVal)
+
+proc get_CurrentSizeOfSet*(
+    self: ptr IUIAutomationElement4, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentSizeOfSet(self, retVal)
+
+proc get_CurrentLevel*(
+    self: ptr IUIAutomationElement4, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentLevel(self, retVal)
+
+proc get_CurrentAnnotationTypes*(
+    self: ptr IUIAutomationElement4, retVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentAnnotationTypes(self, retVal)
+
+proc get_CurrentAnnotationObjects*(
+    self: ptr IUIAutomationElement4, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentAnnotationObjects(self, retVal)
+
+proc get_CachedPositionInSet*(
+    self: ptr IUIAutomationElement4, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedPositionInSet(self, retVal)
+
+proc get_CachedSizeOfSet*(
+    self: ptr IUIAutomationElement4, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedSizeOfSet(self, retVal)
+
+proc get_CachedLevel*(
+    self: ptr IUIAutomationElement4, retVal: ptr int32
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedLevel(self, retVal)
+
+proc get_CachedAnnotationTypes*(
+    self: ptr IUIAutomationElement4, retVal: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedAnnotationTypes(self, retVal)
+
+proc get_CachedAnnotationObjects*(
+    self: ptr IUIAutomationElement4, retVal: ptr ptr IUIAutomationElementArray
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedAnnotationObjects(self, retVal)
+
+proc get_CurrentLandmarkType*(
+    self: ptr IUIAutomationElement5, retVal: ptr LANDMARKTYPEID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentLandmarkType(self, retVal)
+
+proc get_CurrentLocalizedLandmarkType*(
+    self: ptr IUIAutomationElement5, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentLocalizedLandmarkType(self, retVal)
+
+proc get_CachedLandmarkType*(
+    self: ptr IUIAutomationElement5, retVal: ptr LANDMARKTYPEID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedLandmarkType(self, retVal)
+
+proc get_CachedLocalizedLandmarkType*(
+    self: ptr IUIAutomationElement5, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedLocalizedLandmarkType(self, retVal)
+
+proc get_CurrentFullDescription*(
+    self: ptr IUIAutomationElement6, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentFullDescription(self, retVal)
+
+proc get_CachedFullDescription*(
+    self: ptr IUIAutomationElement6, retVal: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedFullDescription(self, retVal)
+
+proc FindFirstWithOptions*(
+    self: ptr IUIAutomationElement7,
+    scope: TreeScope,
+    condition: ptr IUIAutomationCondition,
+    traversalOptions: TreeTraversalOptions,
+    root: ptr IUIAutomationElement,
+    found: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindFirstWithOptions(
+      self, scope, condition, traversalOptions, root, found
+    )
+
+proc FindAllWithOptions*(
+    self: ptr IUIAutomationElement7,
+    scope: TreeScope,
+    condition: ptr IUIAutomationCondition,
+    traversalOptions: TreeTraversalOptions,
+    root: ptr IUIAutomationElement,
+    found: ptr ptr IUIAutomationElementArray,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindAllWithOptions(
+      self, scope, condition, traversalOptions, root, found
+    )
+
+proc FindFirstWithOptionsBuildCache*(
+    self: ptr IUIAutomationElement7,
+    scope: TreeScope,
+    condition: ptr IUIAutomationCondition,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    traversalOptions: TreeTraversalOptions,
+    root: ptr IUIAutomationElement,
+    found: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindFirstWithOptionsBuildCache(
+      self, scope, condition, cacheRequest, traversalOptions, root, found
+    )
+
+proc FindAllWithOptionsBuildCache*(
+    self: ptr IUIAutomationElement7,
+    scope: TreeScope,
+    condition: ptr IUIAutomationCondition,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    traversalOptions: TreeTraversalOptions,
+    root: ptr IUIAutomationElement,
+    found: ptr ptr IUIAutomationElementArray,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindAllWithOptionsBuildCache(
+      self, scope, condition, cacheRequest, traversalOptions, root, found
+    )
+
+proc GetCurrentMetadataValue*(
+    self: ptr IUIAutomationElement7,
+    targetId: int32,
+    metadataId: METADATAID,
+    returnVal: ptr VARIANT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCurrentMetadataValue(self, targetId, metadataId, returnVal)
+
+proc get_CurrentHeadingLevel*(
+    self: ptr IUIAutomationElement8, retVal: ptr HEADINGLEVELID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentHeadingLevel(self, retVal)
+
+proc get_CachedHeadingLevel*(
+    self: ptr IUIAutomationElement8, retVal: ptr HEADINGLEVELID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedHeadingLevel(self, retVal)
+
+proc get_CurrentIsDialog*(
+    self: ptr IUIAutomationElement9, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CurrentIsDialog(self, retVal)
+
+proc get_CachedIsDialog*(
+    self: ptr IUIAutomationElement9, retVal: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CachedIsDialog(self, retVal)
+
+proc CreateProvider*(
+    self: ptr IUIAutomationProxyFactory,
+    hwnd: UIA_HWND,
+    idObject: LONG,
+    idChild: LONG,
+    provider: ptr ptr IRawElementProviderSimple,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateProvider(self, hwnd, idObject, idChild, provider)
+
+proc get_ProxyFactoryId*(
+    self: ptr IUIAutomationProxyFactory, factoryId: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ProxyFactoryId(self, factoryId)
+
+proc get_ProxyFactory*(
+    self: ptr IUIAutomationProxyFactoryEntry, factory: ptr ptr IUIAutomationProxyFactory
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ProxyFactory(self, factory)
+
+proc get_ClassName*(
+    self: ptr IUIAutomationProxyFactoryEntry, className: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ClassName(self, className)
+
+proc get_ImageName*(
+    self: ptr IUIAutomationProxyFactoryEntry, imageName: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ImageName(self, imageName)
+
+proc get_AllowSubstringMatch*(
+    self: ptr IUIAutomationProxyFactoryEntry, allowSubstringMatch: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_AllowSubstringMatch(self, allowSubstringMatch)
+
+proc get_CanCheckBaseClass*(
+    self: ptr IUIAutomationProxyFactoryEntry, canCheckBaseClass: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CanCheckBaseClass(self, canCheckBaseClass)
+
+proc get_NeedsAdviseEvents*(
+    self: ptr IUIAutomationProxyFactoryEntry, adviseEvents: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_NeedsAdviseEvents(self, adviseEvents)
+
+proc put_ClassName*(
+    self: ptr IUIAutomationProxyFactoryEntry, className: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ClassName(self, className)
+
+proc put_ImageName*(
+    self: ptr IUIAutomationProxyFactoryEntry, imageName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ImageName(self, imageName)
+
+proc put_AllowSubstringMatch*(
+    self: ptr IUIAutomationProxyFactoryEntry, allowSubstringMatch: BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_AllowSubstringMatch(self, allowSubstringMatch)
+
+proc put_CanCheckBaseClass*(
+    self: ptr IUIAutomationProxyFactoryEntry, canCheckBaseClass: BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_CanCheckBaseClass(self, canCheckBaseClass)
+
+proc put_NeedsAdviseEvents*(
+    self: ptr IUIAutomationProxyFactoryEntry, adviseEvents: BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_NeedsAdviseEvents(self, adviseEvents)
+
+proc SetWinEventsForAutomationEvent*(
+    self: ptr IUIAutomationProxyFactoryEntry,
+    eventId: EVENTID,
+    propertyId: PROPERTYID,
+    winEvents: ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetWinEventsForAutomationEvent(self, eventId, propertyId, winEvents)
+
+proc GetWinEventsForAutomationEvent*(
+    self: ptr IUIAutomationProxyFactoryEntry,
+    eventId: EVENTID,
+    propertyId: PROPERTYID,
+    winEvents: ptr ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetWinEventsForAutomationEvent(self, eventId, propertyId, winEvents)
+
+proc get_Count*(
+    self: ptr IUIAutomationProxyFactoryMapping, count: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_Count(self, count)
+
+proc GetTable*(
+    self: ptr IUIAutomationProxyFactoryMapping, table: ptr ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetTable(self, table)
+
+proc GetEntry*(
+    self: ptr IUIAutomationProxyFactoryMapping,
+    index: UINT,
+    entry: ptr ptr IUIAutomationProxyFactoryEntry,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEntry(self, index, entry)
+
+proc SetTable*(
+    self: ptr IUIAutomationProxyFactoryMapping, factoryList: ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetTable(self, factoryList)
+
+proc InsertEntries*(
+    self: ptr IUIAutomationProxyFactoryMapping, before: UINT, factoryList: ptr SAFEARRAY
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InsertEntries(self, before, factoryList)
+
+proc InsertEntry*(
+    self: ptr IUIAutomationProxyFactoryMapping,
+    before: UINT,
+    factory: ptr IUIAutomationProxyFactoryEntry,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InsertEntry(self, before, factory)
+
+proc RemoveEntry*(
+    self: ptr IUIAutomationProxyFactoryMapping, index: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveEntry(self, index)
+
+proc ClearTable*(
+    self: ptr IUIAutomationProxyFactoryMapping
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ClearTable(self)
+
+proc RestoreDefaultTable*(
+    self: ptr IUIAutomationProxyFactoryMapping
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RestoreDefaultTable(self)
+
+proc AddActiveTextPositionChangedEventHandler*(
+    self: ptr IUIAutomationEventHandlerGroup,
+    scope: TreeScope,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationActiveTextPositionChangedEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddActiveTextPositionChangedEventHandler(
+      self, scope, cacheRequest, handler
+    )
+
+proc AddAutomationEventHandler*(
+    self: ptr IUIAutomationEventHandlerGroup,
+    eventId: EVENTID,
+    scope: TreeScope,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddAutomationEventHandler(self, eventId, scope, cacheRequest, handler)
+
+proc AddChangesEventHandler*(
+    self: ptr IUIAutomationEventHandlerGroup,
+    scope: TreeScope,
+    changeTypes: ptr int32,
+    changesCount: int32,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationChangesEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddChangesEventHandler(
+      self, scope, changeTypes, changesCount, cacheRequest, handler
+    )
+
+proc AddNotificationEventHandler*(
+    self: ptr IUIAutomationEventHandlerGroup,
+    scope: TreeScope,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationNotificationEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddNotificationEventHandler(self, scope, cacheRequest, handler)
+
+proc AddPropertyChangedEventHandler*(
+    self: ptr IUIAutomationEventHandlerGroup,
+    scope: TreeScope,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationPropertyChangedEventHandler,
+    propertyArray: ptr PROPERTYID,
+    propertyCount: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddPropertyChangedEventHandler(
+      self, scope, cacheRequest, handler, propertyArray, propertyCount
+    )
+
+proc AddStructureChangedEventHandler*(
+    self: ptr IUIAutomationEventHandlerGroup,
+    scope: TreeScope,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationStructureChangedEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddStructureChangedEventHandler(self, scope, cacheRequest, handler)
+
+proc AddTextEditTextChangedEventHandler*(
+    self: ptr IUIAutomationEventHandlerGroup,
+    scope: TreeScope,
+    textEditChangeType: TextEditChangeType,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationTextEditTextChangedEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddTextEditTextChangedEventHandler(
+      self, scope, textEditChangeType, cacheRequest, handler
+    )
+
+proc CompareElements*(
+    self: ptr IUIAutomation,
+    el1: ptr IUIAutomationElement,
+    el2: ptr IUIAutomationElement,
+    areSame: ptr BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CompareElements(self, el1, el2, areSame)
+
+proc CompareRuntimeIds*(
+    self: ptr IUIAutomation,
+    runtimeId1: ptr SAFEARRAY,
+    runtimeId2: ptr SAFEARRAY,
+    areSame: ptr BOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CompareRuntimeIds(self, runtimeId1, runtimeId2, areSame)
+
+proc GetRootElement*(
+    self: ptr IUIAutomation, root: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRootElement(self, root)
+
+proc ElementFromHandle*(
+    self: ptr IUIAutomation, hwnd: UIA_HWND, element: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ElementFromHandle(self, hwnd, element)
+
+proc ElementFromPoint*(
+    self: ptr IUIAutomation, pt: POINT, element: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ElementFromPoint(self, pt, element)
+
+proc GetFocusedElement*(
+    self: ptr IUIAutomation, element: ptr ptr IUIAutomationElement
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFocusedElement(self, element)
+
+proc GetRootElementBuildCache*(
+    self: ptr IUIAutomation,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    root: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetRootElementBuildCache(self, cacheRequest, root)
+
+proc ElementFromHandleBuildCache*(
+    self: ptr IUIAutomation,
+    hwnd: UIA_HWND,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    element: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ElementFromHandleBuildCache(self, hwnd, cacheRequest, element)
+
+proc ElementFromPointBuildCache*(
+    self: ptr IUIAutomation,
+    pt: POINT,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    element: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ElementFromPointBuildCache(self, pt, cacheRequest, element)
+
+proc GetFocusedElementBuildCache*(
+    self: ptr IUIAutomation,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    element: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFocusedElementBuildCache(self, cacheRequest, element)
+
+proc CreateTreeWalker*(
+    self: ptr IUIAutomation,
+    pCondition: ptr IUIAutomationCondition,
+    walker: ptr ptr IUIAutomationTreeWalker,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateTreeWalker(self, pCondition, walker)
+
+proc get_ControlViewWalker*(
+    self: ptr IUIAutomation, walker: ptr ptr IUIAutomationTreeWalker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ControlViewWalker(self, walker)
+
+proc get_ContentViewWalker*(
+    self: ptr IUIAutomation, walker: ptr ptr IUIAutomationTreeWalker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ContentViewWalker(self, walker)
+
+proc get_RawViewWalker*(
+    self: ptr IUIAutomation, walker: ptr ptr IUIAutomationTreeWalker
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_RawViewWalker(self, walker)
+
+proc get_RawViewCondition*(
+    self: ptr IUIAutomation, condition: ptr ptr IUIAutomationCondition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_RawViewCondition(self, condition)
+
+proc get_ControlViewCondition*(
+    self: ptr IUIAutomation, condition: ptr ptr IUIAutomationCondition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ControlViewCondition(self, condition)
+
+proc get_ContentViewCondition*(
+    self: ptr IUIAutomation, condition: ptr ptr IUIAutomationCondition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ContentViewCondition(self, condition)
+
+proc CreateCacheRequest*(
+    self: ptr IUIAutomation, cacheRequest: ptr ptr IUIAutomationCacheRequest
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateCacheRequest(self, cacheRequest)
+
+proc CreateTrueCondition*(
+    self: ptr IUIAutomation, newCondition: ptr ptr IUIAutomationCondition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateTrueCondition(self, newCondition)
+
+proc CreateFalseCondition*(
+    self: ptr IUIAutomation, newCondition: ptr ptr IUIAutomationCondition
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateFalseCondition(self, newCondition)
+
+proc CreatePropertyCondition*(
+    self: ptr IUIAutomation,
+    propertyId: PROPERTYID,
+    value: VARIANT,
+    newCondition: ptr ptr IUIAutomationCondition,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreatePropertyCondition(self, propertyId, value, newCondition)
+
+proc CreatePropertyConditionEx*(
+    self: ptr IUIAutomation,
+    propertyId: PROPERTYID,
+    value: VARIANT,
+    flags: PropertyConditionFlags,
+    newCondition: ptr ptr IUIAutomationCondition,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreatePropertyConditionEx(self, propertyId, value, flags, newCondition)
+
+proc CreateAndCondition*(
+    self: ptr IUIAutomation,
+    condition1: ptr IUIAutomationCondition,
+    condition2: ptr IUIAutomationCondition,
+    newCondition: ptr ptr IUIAutomationCondition,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateAndCondition(self, condition1, condition2, newCondition)
+
+proc CreateAndConditionFromArray*(
+    self: ptr IUIAutomation,
+    conditions: ptr SAFEARRAY,
+    newCondition: ptr ptr IUIAutomationCondition,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateAndConditionFromArray(self, conditions, newCondition)
+
+proc CreateAndConditionFromNativeArray*(
+    self: ptr IUIAutomation,
+    conditions: ptr ptr IUIAutomationCondition,
+    conditionCount: int32,
+    newCondition: ptr ptr IUIAutomationCondition,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateAndConditionFromNativeArray(
+      self, conditions, conditionCount, newCondition
+    )
+
+proc CreateOrCondition*(
+    self: ptr IUIAutomation,
+    condition1: ptr IUIAutomationCondition,
+    condition2: ptr IUIAutomationCondition,
+    newCondition: ptr ptr IUIAutomationCondition,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateOrCondition(self, condition1, condition2, newCondition)
+
+proc CreateOrConditionFromArray*(
+    self: ptr IUIAutomation,
+    conditions: ptr SAFEARRAY,
+    newCondition: ptr ptr IUIAutomationCondition,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateOrConditionFromArray(self, conditions, newCondition)
+
+proc CreateOrConditionFromNativeArray*(
+    self: ptr IUIAutomation,
+    conditions: ptr ptr IUIAutomationCondition,
+    conditionCount: int32,
+    newCondition: ptr ptr IUIAutomationCondition,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateOrConditionFromNativeArray(
+      self, conditions, conditionCount, newCondition
+    )
+
+proc CreateNotCondition*(
+    self: ptr IUIAutomation,
+    condition: ptr IUIAutomationCondition,
+    newCondition: ptr ptr IUIAutomationCondition,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateNotCondition(self, condition, newCondition)
+
+proc AddAutomationEventHandler*(
+    self: ptr IUIAutomation,
+    eventId: EVENTID,
+    element: ptr IUIAutomationElement,
+    scope: TreeScope,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddAutomationEventHandler(
+      self, eventId, element, scope, cacheRequest, handler
+    )
+
+proc RemoveAutomationEventHandler*(
+    self: ptr IUIAutomation,
+    eventId: EVENTID,
+    element: ptr IUIAutomationElement,
+    handler: ptr IUIAutomationEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveAutomationEventHandler(self, eventId, element, handler)
+
+proc AddPropertyChangedEventHandlerNativeArray*(
+    self: ptr IUIAutomation,
+    element: ptr IUIAutomationElement,
+    scope: TreeScope,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationPropertyChangedEventHandler,
+    propertyArray: ptr PROPERTYID,
+    propertyCount: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddPropertyChangedEventHandlerNativeArray(
+      self, element, scope, cacheRequest, handler, propertyArray, propertyCount
+    )
+
+proc AddPropertyChangedEventHandler*(
+    self: ptr IUIAutomation,
+    element: ptr IUIAutomationElement,
+    scope: TreeScope,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationPropertyChangedEventHandler,
+    propertyArray: ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddPropertyChangedEventHandler(
+      self, element, scope, cacheRequest, handler, propertyArray
+    )
+
+proc RemovePropertyChangedEventHandler*(
+    self: ptr IUIAutomation,
+    element: ptr IUIAutomationElement,
+    handler: ptr IUIAutomationPropertyChangedEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemovePropertyChangedEventHandler(self, element, handler)
+
+proc AddStructureChangedEventHandler*(
+    self: ptr IUIAutomation,
+    element: ptr IUIAutomationElement,
+    scope: TreeScope,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationStructureChangedEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddStructureChangedEventHandler(
+      self, element, scope, cacheRequest, handler
+    )
+
+proc RemoveStructureChangedEventHandler*(
+    self: ptr IUIAutomation,
+    element: ptr IUIAutomationElement,
+    handler: ptr IUIAutomationStructureChangedEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveStructureChangedEventHandler(self, element, handler)
+
+proc AddFocusChangedEventHandler*(
+    self: ptr IUIAutomation,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationFocusChangedEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddFocusChangedEventHandler(self, cacheRequest, handler)
+
+proc RemoveFocusChangedEventHandler*(
+    self: ptr IUIAutomation, handler: ptr IUIAutomationFocusChangedEventHandler
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveFocusChangedEventHandler(self, handler)
+
+proc RemoveAllEventHandlers*(self: ptr IUIAutomation): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveAllEventHandlers(self)
+
+proc IntNativeArrayToSafeArray*(
+    self: ptr IUIAutomation,
+    array: ptr int32,
+    arrayCount: int32,
+    safeArray: ptr ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IntNativeArrayToSafeArray(self, array, arrayCount, safeArray)
+
+proc IntSafeArrayToNativeArray*(
+    self: ptr IUIAutomation,
+    intArray: ptr SAFEARRAY,
+    array: ptr ptr int32,
+    arrayCount: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IntSafeArrayToNativeArray(self, intArray, array, arrayCount)
+
+proc RectToVariant*(
+    self: ptr IUIAutomation, rc: RECT, `var`: ptr VARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RectToVariant(self, rc, `var`)
+
+proc VariantToRect*(
+    self: ptr IUIAutomation, `var`: VARIANT, rc: ptr RECT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.VariantToRect(self, `var`, rc)
+
+proc SafeArrayToRectNativeArray*(
+    self: ptr IUIAutomation,
+    rects: ptr SAFEARRAY,
+    rectArray: ptr ptr RECT,
+    rectArrayCount: ptr int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SafeArrayToRectNativeArray(self, rects, rectArray, rectArrayCount)
+
+proc CreateProxyFactoryEntry*(
+    self: ptr IUIAutomation,
+    factory: ptr IUIAutomationProxyFactory,
+    factoryEntry: ptr ptr IUIAutomationProxyFactoryEntry,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateProxyFactoryEntry(self, factory, factoryEntry)
+
+proc get_ProxyFactoryMapping*(
+    self: ptr IUIAutomation, factoryMapping: ptr ptr IUIAutomationProxyFactoryMapping
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ProxyFactoryMapping(self, factoryMapping)
+
+proc GetPropertyProgrammaticName*(
+    self: ptr IUIAutomation, property: PROPERTYID, name: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPropertyProgrammaticName(self, property, name)
+
+proc GetPatternProgrammaticName*(
+    self: ptr IUIAutomation, pattern: PATTERNID, name: ptr BSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPatternProgrammaticName(self, pattern, name)
+
+proc PollForPotentialSupportedPatterns*(
+    self: ptr IUIAutomation,
+    pElement: ptr IUIAutomationElement,
+    patternIds: ptr ptr SAFEARRAY,
+    patternNames: ptr ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PollForPotentialSupportedPatterns(
+      self, pElement, patternIds, patternNames
+    )
+
+proc PollForPotentialSupportedProperties*(
+    self: ptr IUIAutomation,
+    pElement: ptr IUIAutomationElement,
+    propertyIds: ptr ptr SAFEARRAY,
+    propertyNames: ptr ptr SAFEARRAY,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.PollForPotentialSupportedProperties(
+      self, pElement, propertyIds, propertyNames
+    )
+
+proc CheckNotSupported*(
+    self: ptr IUIAutomation, value: VARIANT, isNotSupported: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CheckNotSupported(self, value, isNotSupported)
+
+proc get_ReservedNotSupportedValue*(
+    self: ptr IUIAutomation, notSupportedValue: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ReservedNotSupportedValue(self, notSupportedValue)
+
+proc get_ReservedMixedAttributeValue*(
+    self: ptr IUIAutomation, mixedAttributeValue: ptr ptr IUnknown
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ReservedMixedAttributeValue(self, mixedAttributeValue)
+
+proc ElementFromIAccessible*(
+    self: ptr IUIAutomation,
+    accessible: ptr IAccessible,
+    childId: int32,
+    element: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ElementFromIAccessible(self, accessible, childId, element)
+
+proc ElementFromIAccessibleBuildCache*(
+    self: ptr IUIAutomation,
+    accessible: ptr IAccessible,
+    childId: int32,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    element: ptr ptr IUIAutomationElement,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ElementFromIAccessibleBuildCache(
+      self, accessible, childId, cacheRequest, element
+    )
+
+proc get_AutoSetFocus*(
+    self: ptr IUIAutomation2, autoSetFocus: ptr BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_AutoSetFocus(self, autoSetFocus)
+
+proc put_AutoSetFocus*(
+    self: ptr IUIAutomation2, autoSetFocus: BOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_AutoSetFocus(self, autoSetFocus)
+
+proc get_ConnectionTimeout*(
+    self: ptr IUIAutomation2, timeout: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ConnectionTimeout(self, timeout)
+
+proc put_ConnectionTimeout*(
+    self: ptr IUIAutomation2, timeout: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ConnectionTimeout(self, timeout)
+
+proc get_TransactionTimeout*(
+    self: ptr IUIAutomation2, timeout: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_TransactionTimeout(self, timeout)
+
+proc put_TransactionTimeout*(
+    self: ptr IUIAutomation2, timeout: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_TransactionTimeout(self, timeout)
+
+proc AddTextEditTextChangedEventHandler*(
+    self: ptr IUIAutomation3,
+    element: ptr IUIAutomationElement,
+    scope: TreeScope,
+    textEditChangeType: TextEditChangeType,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationTextEditTextChangedEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddTextEditTextChangedEventHandler(
+      self, element, scope, textEditChangeType, cacheRequest, handler
+    )
+
+proc RemoveTextEditTextChangedEventHandler*(
+    self: ptr IUIAutomation3,
+    element: ptr IUIAutomationElement,
+    handler: ptr IUIAutomationTextEditTextChangedEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveTextEditTextChangedEventHandler(self, element, handler)
+
+proc AddChangesEventHandler*(
+    self: ptr IUIAutomation4,
+    element: ptr IUIAutomationElement,
+    scope: TreeScope,
+    changeTypes: ptr int32,
+    changesCount: int32,
+    pCacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationChangesEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddChangesEventHandler(
+      self, element, scope, changeTypes, changesCount, pCacheRequest, handler
+    )
+
+proc RemoveChangesEventHandler*(
+    self: ptr IUIAutomation4,
+    element: ptr IUIAutomationElement,
+    handler: ptr IUIAutomationChangesEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveChangesEventHandler(self, element, handler)
+
+proc AddNotificationEventHandler*(
+    self: ptr IUIAutomation5,
+    element: ptr IUIAutomationElement,
+    scope: TreeScope,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationNotificationEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddNotificationEventHandler(self, element, scope, cacheRequest, handler)
+
+proc RemoveNotificationEventHandler*(
+    self: ptr IUIAutomation5,
+    element: ptr IUIAutomationElement,
+    handler: ptr IUIAutomationNotificationEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveNotificationEventHandler(self, element, handler)
+
+proc CreateEventHandlerGroup*(
+    self: ptr IUIAutomation6, handlerGroup: ptr ptr IUIAutomationEventHandlerGroup
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateEventHandlerGroup(self, handlerGroup)
+
+proc AddEventHandlerGroup*(
+    self: ptr IUIAutomation6,
+    element: ptr IUIAutomationElement,
+    handlerGroup: ptr IUIAutomationEventHandlerGroup,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddEventHandlerGroup(self, element, handlerGroup)
+
+proc RemoveEventHandlerGroup*(
+    self: ptr IUIAutomation6,
+    element: ptr IUIAutomationElement,
+    handlerGroup: ptr IUIAutomationEventHandlerGroup,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveEventHandlerGroup(self, element, handlerGroup)
+
+proc get_ConnectionRecoveryBehavior*(
+    self: ptr IUIAutomation6,
+    connectionRecoveryBehaviorOptions: ptr ConnectionRecoveryBehaviorOptions,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_ConnectionRecoveryBehavior(self, connectionRecoveryBehaviorOptions)
+
+proc put_ConnectionRecoveryBehavior*(
+    self: ptr IUIAutomation6,
+    connectionRecoveryBehaviorOptions: ConnectionRecoveryBehaviorOptions,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_ConnectionRecoveryBehavior(self, connectionRecoveryBehaviorOptions)
+
+proc get_CoalesceEvents*(
+    self: ptr IUIAutomation6, coalesceEventsOptions: ptr CoalesceEventsOptions
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.get_CoalesceEvents(self, coalesceEventsOptions)
+
+proc put_CoalesceEvents*(
+    self: ptr IUIAutomation6, coalesceEventsOptions: CoalesceEventsOptions
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.put_CoalesceEvents(self, coalesceEventsOptions)
+
+proc AddActiveTextPositionChangedEventHandler*(
+    self: ptr IUIAutomation6,
+    element: ptr IUIAutomationElement,
+    scope: TreeScope,
+    cacheRequest: ptr IUIAutomationCacheRequest,
+    handler: ptr IUIAutomationActiveTextPositionChangedEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.AddActiveTextPositionChangedEventHandler(
+      self, element, scope, cacheRequest, handler
+    )
+
+proc RemoveActiveTextPositionChangedEventHandler*(
+    self: ptr IUIAutomation6,
+    element: ptr IUIAutomationElement,
+    handler: ptr IUIAutomationActiveTextPositionChangedEventHandler,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveActiveTextPositionChangedEventHandler(self, element, handler)
+
+converter winimConverterIRawElementProviderSimpleToIUnknown*(
+    x: ptr IRawElementProviderSimple
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAccessibleExToIUnknown*(x: ptr IAccessibleEx): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRawElementProviderSimple2ToIRawElementProviderSimple*(
+    x: ptr IRawElementProviderSimple2
+): ptr IRawElementProviderSimple =
+  cast[ptr IRawElementProviderSimple](x)
+
+converter winimConverterIRawElementProviderSimple2ToIUnknown*(
+    x: ptr IRawElementProviderSimple2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRawElementProviderSimple3ToIRawElementProviderSimple2*(
+    x: ptr IRawElementProviderSimple3
+): ptr IRawElementProviderSimple2 =
+  cast[ptr IRawElementProviderSimple2](x)
+
+converter winimConverterIRawElementProviderSimple3ToIRawElementProviderSimple*(
+    x: ptr IRawElementProviderSimple3
+): ptr IRawElementProviderSimple =
+  cast[ptr IRawElementProviderSimple](x)
+
+converter winimConverterIRawElementProviderSimple3ToIUnknown*(
+    x: ptr IRawElementProviderSimple3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRawElementProviderFragmentRootToIUnknown*(
+    x: ptr IRawElementProviderFragmentRoot
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRawElementProviderFragmentToIUnknown*(
+    x: ptr IRawElementProviderFragment
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRawElementProviderAdviseEventsToIUnknown*(
+    x: ptr IRawElementProviderAdviseEvents
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRawElementProviderHwndOverrideToIUnknown*(
+    x: ptr IRawElementProviderHwndOverride
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIProxyProviderWinEventSinkToIUnknown*(
+    x: ptr IProxyProviderWinEventSink
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIProxyProviderWinEventHandlerToIUnknown*(
+    x: ptr IProxyProviderWinEventHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRawElementProviderWindowlessSiteToIUnknown*(
+    x: ptr IRawElementProviderWindowlessSite
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAccessibleHostingElementProvidersToIUnknown*(
+    x: ptr IAccessibleHostingElementProviders
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRawElementProviderHostingAccessiblesToIUnknown*(
+    x: ptr IRawElementProviderHostingAccessibles
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDockProviderToIUnknown*(x: ptr IDockProvider): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIExpandCollapseProviderToIUnknown*(
+    x: ptr IExpandCollapseProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIGridProviderToIUnknown*(x: ptr IGridProvider): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIGridItemProviderToIUnknown*(
+    x: ptr IGridItemProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIInvokeProviderToIUnknown*(
+    x: ptr IInvokeProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIMultipleViewProviderToIUnknown*(
+    x: ptr IMultipleViewProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIRangeValueProviderToIUnknown*(
+    x: ptr IRangeValueProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIScrollItemProviderToIUnknown*(
+    x: ptr IScrollItemProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISelectionProviderToIUnknown*(
+    x: ptr ISelectionProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISelectionProvider2ToISelectionProvider*(
+    x: ptr ISelectionProvider2
+): ptr ISelectionProvider =
+  cast[ptr ISelectionProvider](x)
+
+converter winimConverterISelectionProvider2ToIUnknown*(
+    x: ptr ISelectionProvider2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIScrollProviderToIUnknown*(
+    x: ptr IScrollProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISelectionItemProviderToIUnknown*(
+    x: ptr ISelectionItemProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISynchronizedInputProviderToIUnknown*(
+    x: ptr ISynchronizedInputProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITableProviderToIUnknown*(x: ptr ITableProvider): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITableItemProviderToIUnknown*(
+    x: ptr ITableItemProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIToggleProviderToIUnknown*(
+    x: ptr IToggleProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITransformProviderToIUnknown*(
+    x: ptr ITransformProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIValueProviderToIUnknown*(x: ptr IValueProvider): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWindowProviderToIUnknown*(
+    x: ptr IWindowProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterILegacyIAccessibleProviderToIUnknown*(
+    x: ptr ILegacyIAccessibleProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIItemContainerProviderToIUnknown*(
+    x: ptr IItemContainerProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIVirtualizedItemProviderToIUnknown*(
+    x: ptr IVirtualizedItemProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIObjectModelProviderToIUnknown*(
+    x: ptr IObjectModelProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAnnotationProviderToIUnknown*(
+    x: ptr IAnnotationProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIStylesProviderToIUnknown*(
+    x: ptr IStylesProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISpreadsheetProviderToIUnknown*(
+    x: ptr ISpreadsheetProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterISpreadsheetItemProviderToIUnknown*(
+    x: ptr ISpreadsheetItemProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITransformProvider2ToITransformProvider*(
+    x: ptr ITransformProvider2
+): ptr ITransformProvider =
+  cast[ptr ITransformProvider](x)
+
+converter winimConverterITransformProvider2ToIUnknown*(
+    x: ptr ITransformProvider2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDragProviderToIUnknown*(x: ptr IDragProvider): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIDropTargetProviderToIUnknown*(
+    x: ptr IDropTargetProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITextRangeProviderToIUnknown*(
+    x: ptr ITextRangeProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITextProviderToIUnknown*(x: ptr ITextProvider): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITextProvider2ToITextProvider*(
+    x: ptr ITextProvider2
+): ptr ITextProvider =
+  cast[ptr ITextProvider](x)
+
+converter winimConverterITextProvider2ToIUnknown*(x: ptr ITextProvider2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITextEditProviderToITextProvider*(
+    x: ptr ITextEditProvider
+): ptr ITextProvider =
+  cast[ptr ITextProvider](x)
+
+converter winimConverterITextEditProviderToIUnknown*(
+    x: ptr ITextEditProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITextRangeProvider2ToITextRangeProvider*(
+    x: ptr ITextRangeProvider2
+): ptr ITextRangeProvider =
+  cast[ptr ITextRangeProvider](x)
+
+converter winimConverterITextRangeProvider2ToIUnknown*(
+    x: ptr ITextRangeProvider2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterITextChildProviderToIUnknown*(
+    x: ptr ITextChildProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterICustomNavigationProviderToIUnknown*(
+    x: ptr ICustomNavigationProvider
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationPatternInstanceToIUnknown*(
+    x: ptr IUIAutomationPatternInstance
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationPatternHandlerToIUnknown*(
+    x: ptr IUIAutomationPatternHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationRegistrarToIUnknown*(
+    x: ptr IUIAutomationRegistrar
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationElementToIUnknown*(
+    x: ptr IUIAutomationElement
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationElementArrayToIUnknown*(
+    x: ptr IUIAutomationElementArray
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationConditionToIUnknown*(
+    x: ptr IUIAutomationCondition
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationBoolConditionToIUIAutomationCondition*(
+    x: ptr IUIAutomationBoolCondition
+): ptr IUIAutomationCondition =
+  cast[ptr IUIAutomationCondition](x)
+
+converter winimConverterIUIAutomationBoolConditionToIUnknown*(
+    x: ptr IUIAutomationBoolCondition
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationPropertyConditionToIUIAutomationCondition*(
+    x: ptr IUIAutomationPropertyCondition
+): ptr IUIAutomationCondition =
+  cast[ptr IUIAutomationCondition](x)
+
+converter winimConverterIUIAutomationPropertyConditionToIUnknown*(
+    x: ptr IUIAutomationPropertyCondition
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationAndConditionToIUIAutomationCondition*(
+    x: ptr IUIAutomationAndCondition
+): ptr IUIAutomationCondition =
+  cast[ptr IUIAutomationCondition](x)
+
+converter winimConverterIUIAutomationAndConditionToIUnknown*(
+    x: ptr IUIAutomationAndCondition
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationOrConditionToIUIAutomationCondition*(
+    x: ptr IUIAutomationOrCondition
+): ptr IUIAutomationCondition =
+  cast[ptr IUIAutomationCondition](x)
+
+converter winimConverterIUIAutomationOrConditionToIUnknown*(
+    x: ptr IUIAutomationOrCondition
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationNotConditionToIUIAutomationCondition*(
+    x: ptr IUIAutomationNotCondition
+): ptr IUIAutomationCondition =
+  cast[ptr IUIAutomationCondition](x)
+
+converter winimConverterIUIAutomationNotConditionToIUnknown*(
+    x: ptr IUIAutomationNotCondition
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationCacheRequestToIUnknown*(
+    x: ptr IUIAutomationCacheRequest
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTreeWalkerToIUnknown*(
+    x: ptr IUIAutomationTreeWalker
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationEventHandlerToIUnknown*(
+    x: ptr IUIAutomationEventHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationPropertyChangedEventHandlerToIUnknown*(
+    x: ptr IUIAutomationPropertyChangedEventHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationStructureChangedEventHandlerToIUnknown*(
+    x: ptr IUIAutomationStructureChangedEventHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationFocusChangedEventHandlerToIUnknown*(
+    x: ptr IUIAutomationFocusChangedEventHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTextEditTextChangedEventHandlerToIUnknown*(
+    x: ptr IUIAutomationTextEditTextChangedEventHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationChangesEventHandlerToIUnknown*(
+    x: ptr IUIAutomationChangesEventHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationNotificationEventHandlerToIUnknown*(
+    x: ptr IUIAutomationNotificationEventHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationInvokePatternToIUnknown*(
+    x: ptr IUIAutomationInvokePattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationDockPatternToIUnknown*(
+    x: ptr IUIAutomationDockPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationExpandCollapsePatternToIUnknown*(
+    x: ptr IUIAutomationExpandCollapsePattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationGridPatternToIUnknown*(
+    x: ptr IUIAutomationGridPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationGridItemPatternToIUnknown*(
+    x: ptr IUIAutomationGridItemPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationMultipleViewPatternToIUnknown*(
+    x: ptr IUIAutomationMultipleViewPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationObjectModelPatternToIUnknown*(
+    x: ptr IUIAutomationObjectModelPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationRangeValuePatternToIUnknown*(
+    x: ptr IUIAutomationRangeValuePattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationScrollPatternToIUnknown*(
+    x: ptr IUIAutomationScrollPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationScrollItemPatternToIUnknown*(
+    x: ptr IUIAutomationScrollItemPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationSelectionPatternToIUnknown*(
+    x: ptr IUIAutomationSelectionPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationSelectionPattern2ToIUIAutomationSelectionPattern*(
+    x: ptr IUIAutomationSelectionPattern2
+): ptr IUIAutomationSelectionPattern =
+  cast[ptr IUIAutomationSelectionPattern](x)
+
+converter winimConverterIUIAutomationSelectionPattern2ToIUnknown*(
+    x: ptr IUIAutomationSelectionPattern2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationSelectionItemPatternToIUnknown*(
+    x: ptr IUIAutomationSelectionItemPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationSynchronizedInputPatternToIUnknown*(
+    x: ptr IUIAutomationSynchronizedInputPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTablePatternToIUnknown*(
+    x: ptr IUIAutomationTablePattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTableItemPatternToIUnknown*(
+    x: ptr IUIAutomationTableItemPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTogglePatternToIUnknown*(
+    x: ptr IUIAutomationTogglePattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTransformPatternToIUnknown*(
+    x: ptr IUIAutomationTransformPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationValuePatternToIUnknown*(
+    x: ptr IUIAutomationValuePattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationWindowPatternToIUnknown*(
+    x: ptr IUIAutomationWindowPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTextRangeToIUnknown*(
+    x: ptr IUIAutomationTextRange
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTextRange2ToIUIAutomationTextRange*(
+    x: ptr IUIAutomationTextRange2
+): ptr IUIAutomationTextRange =
+  cast[ptr IUIAutomationTextRange](x)
+
+converter winimConverterIUIAutomationTextRange2ToIUnknown*(
+    x: ptr IUIAutomationTextRange2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTextRange3ToIUIAutomationTextRange2*(
+    x: ptr IUIAutomationTextRange3
+): ptr IUIAutomationTextRange2 =
+  cast[ptr IUIAutomationTextRange2](x)
+
+converter winimConverterIUIAutomationTextRange3ToIUIAutomationTextRange*(
+    x: ptr IUIAutomationTextRange3
+): ptr IUIAutomationTextRange =
+  cast[ptr IUIAutomationTextRange](x)
+
+converter winimConverterIUIAutomationTextRange3ToIUnknown*(
+    x: ptr IUIAutomationTextRange3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTextRangeArrayToIUnknown*(
+    x: ptr IUIAutomationTextRangeArray
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTextPatternToIUnknown*(
+    x: ptr IUIAutomationTextPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTextPattern2ToIUIAutomationTextPattern*(
+    x: ptr IUIAutomationTextPattern2
+): ptr IUIAutomationTextPattern =
+  cast[ptr IUIAutomationTextPattern](x)
+
+converter winimConverterIUIAutomationTextPattern2ToIUnknown*(
+    x: ptr IUIAutomationTextPattern2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTextEditPatternToIUIAutomationTextPattern*(
+    x: ptr IUIAutomationTextEditPattern
+): ptr IUIAutomationTextPattern =
+  cast[ptr IUIAutomationTextPattern](x)
+
+converter winimConverterIUIAutomationTextEditPatternToIUnknown*(
+    x: ptr IUIAutomationTextEditPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationCustomNavigationPatternToIUnknown*(
+    x: ptr IUIAutomationCustomNavigationPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationActiveTextPositionChangedEventHandlerToIUnknown*(
+    x: ptr IUIAutomationActiveTextPositionChangedEventHandler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationLegacyIAccessiblePatternToIUnknown*(
+    x: ptr IUIAutomationLegacyIAccessiblePattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationItemContainerPatternToIUnknown*(
+    x: ptr IUIAutomationItemContainerPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationVirtualizedItemPatternToIUnknown*(
+    x: ptr IUIAutomationVirtualizedItemPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationAnnotationPatternToIUnknown*(
+    x: ptr IUIAutomationAnnotationPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationStylesPatternToIUnknown*(
+    x: ptr IUIAutomationStylesPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationSpreadsheetPatternToIUnknown*(
+    x: ptr IUIAutomationSpreadsheetPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationSpreadsheetItemPatternToIUnknown*(
+    x: ptr IUIAutomationSpreadsheetItemPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTransformPattern2ToIUIAutomationTransformPattern*(
+    x: ptr IUIAutomationTransformPattern2
+): ptr IUIAutomationTransformPattern =
+  cast[ptr IUIAutomationTransformPattern](x)
+
+converter winimConverterIUIAutomationTransformPattern2ToIUnknown*(
+    x: ptr IUIAutomationTransformPattern2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationTextChildPatternToIUnknown*(
+    x: ptr IUIAutomationTextChildPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationDragPatternToIUnknown*(
+    x: ptr IUIAutomationDragPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationDropTargetPatternToIUnknown*(
+    x: ptr IUIAutomationDropTargetPattern
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationElement2ToIUIAutomationElement*(
+    x: ptr IUIAutomationElement2
+): ptr IUIAutomationElement =
+  cast[ptr IUIAutomationElement](x)
+
+converter winimConverterIUIAutomationElement2ToIUnknown*(
+    x: ptr IUIAutomationElement2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationElement3ToIUIAutomationElement2*(
+    x: ptr IUIAutomationElement3
+): ptr IUIAutomationElement2 =
+  cast[ptr IUIAutomationElement2](x)
+
+converter winimConverterIUIAutomationElement3ToIUIAutomationElement*(
+    x: ptr IUIAutomationElement3
+): ptr IUIAutomationElement =
+  cast[ptr IUIAutomationElement](x)
+
+converter winimConverterIUIAutomationElement3ToIUnknown*(
+    x: ptr IUIAutomationElement3
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationElement4ToIUIAutomationElement3*(
+    x: ptr IUIAutomationElement4
+): ptr IUIAutomationElement3 =
+  cast[ptr IUIAutomationElement3](x)
+
+converter winimConverterIUIAutomationElement4ToIUIAutomationElement2*(
+    x: ptr IUIAutomationElement4
+): ptr IUIAutomationElement2 =
+  cast[ptr IUIAutomationElement2](x)
+
+converter winimConverterIUIAutomationElement4ToIUIAutomationElement*(
+    x: ptr IUIAutomationElement4
+): ptr IUIAutomationElement =
+  cast[ptr IUIAutomationElement](x)
+
+converter winimConverterIUIAutomationElement4ToIUnknown*(
+    x: ptr IUIAutomationElement4
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationElement5ToIUIAutomationElement4*(
+    x: ptr IUIAutomationElement5
+): ptr IUIAutomationElement4 =
+  cast[ptr IUIAutomationElement4](x)
+
+converter winimConverterIUIAutomationElement5ToIUIAutomationElement3*(
+    x: ptr IUIAutomationElement5
+): ptr IUIAutomationElement3 =
+  cast[ptr IUIAutomationElement3](x)
+
+converter winimConverterIUIAutomationElement5ToIUIAutomationElement2*(
+    x: ptr IUIAutomationElement5
+): ptr IUIAutomationElement2 =
+  cast[ptr IUIAutomationElement2](x)
+
+converter winimConverterIUIAutomationElement5ToIUIAutomationElement*(
+    x: ptr IUIAutomationElement5
+): ptr IUIAutomationElement =
+  cast[ptr IUIAutomationElement](x)
+
+converter winimConverterIUIAutomationElement5ToIUnknown*(
+    x: ptr IUIAutomationElement5
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationElement6ToIUIAutomationElement5*(
+    x: ptr IUIAutomationElement6
+): ptr IUIAutomationElement5 =
+  cast[ptr IUIAutomationElement5](x)
+
+converter winimConverterIUIAutomationElement6ToIUIAutomationElement4*(
+    x: ptr IUIAutomationElement6
+): ptr IUIAutomationElement4 =
+  cast[ptr IUIAutomationElement4](x)
+
+converter winimConverterIUIAutomationElement6ToIUIAutomationElement3*(
+    x: ptr IUIAutomationElement6
+): ptr IUIAutomationElement3 =
+  cast[ptr IUIAutomationElement3](x)
+
+converter winimConverterIUIAutomationElement6ToIUIAutomationElement2*(
+    x: ptr IUIAutomationElement6
+): ptr IUIAutomationElement2 =
+  cast[ptr IUIAutomationElement2](x)
+
+converter winimConverterIUIAutomationElement6ToIUIAutomationElement*(
+    x: ptr IUIAutomationElement6
+): ptr IUIAutomationElement =
+  cast[ptr IUIAutomationElement](x)
+
+converter winimConverterIUIAutomationElement6ToIUnknown*(
+    x: ptr IUIAutomationElement6
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationElement7ToIUIAutomationElement6*(
+    x: ptr IUIAutomationElement7
+): ptr IUIAutomationElement6 =
+  cast[ptr IUIAutomationElement6](x)
+
+converter winimConverterIUIAutomationElement7ToIUIAutomationElement5*(
+    x: ptr IUIAutomationElement7
+): ptr IUIAutomationElement5 =
+  cast[ptr IUIAutomationElement5](x)
+
+converter winimConverterIUIAutomationElement7ToIUIAutomationElement4*(
+    x: ptr IUIAutomationElement7
+): ptr IUIAutomationElement4 =
+  cast[ptr IUIAutomationElement4](x)
+
+converter winimConverterIUIAutomationElement7ToIUIAutomationElement3*(
+    x: ptr IUIAutomationElement7
+): ptr IUIAutomationElement3 =
+  cast[ptr IUIAutomationElement3](x)
+
+converter winimConverterIUIAutomationElement7ToIUIAutomationElement2*(
+    x: ptr IUIAutomationElement7
+): ptr IUIAutomationElement2 =
+  cast[ptr IUIAutomationElement2](x)
+
+converter winimConverterIUIAutomationElement7ToIUIAutomationElement*(
+    x: ptr IUIAutomationElement7
+): ptr IUIAutomationElement =
+  cast[ptr IUIAutomationElement](x)
+
+converter winimConverterIUIAutomationElement7ToIUnknown*(
+    x: ptr IUIAutomationElement7
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationElement8ToIUIAutomationElement7*(
+    x: ptr IUIAutomationElement8
+): ptr IUIAutomationElement7 =
+  cast[ptr IUIAutomationElement7](x)
+
+converter winimConverterIUIAutomationElement8ToIUIAutomationElement6*(
+    x: ptr IUIAutomationElement8
+): ptr IUIAutomationElement6 =
+  cast[ptr IUIAutomationElement6](x)
+
+converter winimConverterIUIAutomationElement8ToIUIAutomationElement5*(
+    x: ptr IUIAutomationElement8
+): ptr IUIAutomationElement5 =
+  cast[ptr IUIAutomationElement5](x)
+
+converter winimConverterIUIAutomationElement8ToIUIAutomationElement4*(
+    x: ptr IUIAutomationElement8
+): ptr IUIAutomationElement4 =
+  cast[ptr IUIAutomationElement4](x)
+
+converter winimConverterIUIAutomationElement8ToIUIAutomationElement3*(
+    x: ptr IUIAutomationElement8
+): ptr IUIAutomationElement3 =
+  cast[ptr IUIAutomationElement3](x)
+
+converter winimConverterIUIAutomationElement8ToIUIAutomationElement2*(
+    x: ptr IUIAutomationElement8
+): ptr IUIAutomationElement2 =
+  cast[ptr IUIAutomationElement2](x)
+
+converter winimConverterIUIAutomationElement8ToIUIAutomationElement*(
+    x: ptr IUIAutomationElement8
+): ptr IUIAutomationElement =
+  cast[ptr IUIAutomationElement](x)
+
+converter winimConverterIUIAutomationElement8ToIUnknown*(
+    x: ptr IUIAutomationElement8
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationElement9ToIUIAutomationElement8*(
+    x: ptr IUIAutomationElement9
+): ptr IUIAutomationElement8 =
+  cast[ptr IUIAutomationElement8](x)
+
+converter winimConverterIUIAutomationElement9ToIUIAutomationElement7*(
+    x: ptr IUIAutomationElement9
+): ptr IUIAutomationElement7 =
+  cast[ptr IUIAutomationElement7](x)
+
+converter winimConverterIUIAutomationElement9ToIUIAutomationElement6*(
+    x: ptr IUIAutomationElement9
+): ptr IUIAutomationElement6 =
+  cast[ptr IUIAutomationElement6](x)
+
+converter winimConverterIUIAutomationElement9ToIUIAutomationElement5*(
+    x: ptr IUIAutomationElement9
+): ptr IUIAutomationElement5 =
+  cast[ptr IUIAutomationElement5](x)
+
+converter winimConverterIUIAutomationElement9ToIUIAutomationElement4*(
+    x: ptr IUIAutomationElement9
+): ptr IUIAutomationElement4 =
+  cast[ptr IUIAutomationElement4](x)
+
+converter winimConverterIUIAutomationElement9ToIUIAutomationElement3*(
+    x: ptr IUIAutomationElement9
+): ptr IUIAutomationElement3 =
+  cast[ptr IUIAutomationElement3](x)
+
+converter winimConverterIUIAutomationElement9ToIUIAutomationElement2*(
+    x: ptr IUIAutomationElement9
+): ptr IUIAutomationElement2 =
+  cast[ptr IUIAutomationElement2](x)
+
+converter winimConverterIUIAutomationElement9ToIUIAutomationElement*(
+    x: ptr IUIAutomationElement9
+): ptr IUIAutomationElement =
+  cast[ptr IUIAutomationElement](x)
+
+converter winimConverterIUIAutomationElement9ToIUnknown*(
+    x: ptr IUIAutomationElement9
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationProxyFactoryToIUnknown*(
+    x: ptr IUIAutomationProxyFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationProxyFactoryEntryToIUnknown*(
+    x: ptr IUIAutomationProxyFactoryEntry
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationProxyFactoryMappingToIUnknown*(
+    x: ptr IUIAutomationProxyFactoryMapping
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationEventHandlerGroupToIUnknown*(
+    x: ptr IUIAutomationEventHandlerGroup
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomationToIUnknown*(x: ptr IUIAutomation): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomation2ToIUIAutomation*(
+    x: ptr IUIAutomation2
+): ptr IUIAutomation =
+  cast[ptr IUIAutomation](x)
+
+converter winimConverterIUIAutomation2ToIUnknown*(x: ptr IUIAutomation2): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomation3ToIUIAutomation2*(
+    x: ptr IUIAutomation3
+): ptr IUIAutomation2 =
+  cast[ptr IUIAutomation2](x)
+
+converter winimConverterIUIAutomation3ToIUIAutomation*(
+    x: ptr IUIAutomation3
+): ptr IUIAutomation =
+  cast[ptr IUIAutomation](x)
+
+converter winimConverterIUIAutomation3ToIUnknown*(x: ptr IUIAutomation3): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomation4ToIUIAutomation3*(
+    x: ptr IUIAutomation4
+): ptr IUIAutomation3 =
+  cast[ptr IUIAutomation3](x)
+
+converter winimConverterIUIAutomation4ToIUIAutomation2*(
+    x: ptr IUIAutomation4
+): ptr IUIAutomation2 =
+  cast[ptr IUIAutomation2](x)
+
+converter winimConverterIUIAutomation4ToIUIAutomation*(
+    x: ptr IUIAutomation4
+): ptr IUIAutomation =
+  cast[ptr IUIAutomation](x)
+
+converter winimConverterIUIAutomation4ToIUnknown*(x: ptr IUIAutomation4): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomation5ToIUIAutomation4*(
+    x: ptr IUIAutomation5
+): ptr IUIAutomation4 =
+  cast[ptr IUIAutomation4](x)
+
+converter winimConverterIUIAutomation5ToIUIAutomation3*(
+    x: ptr IUIAutomation5
+): ptr IUIAutomation3 =
+  cast[ptr IUIAutomation3](x)
+
+converter winimConverterIUIAutomation5ToIUIAutomation2*(
+    x: ptr IUIAutomation5
+): ptr IUIAutomation2 =
+  cast[ptr IUIAutomation2](x)
+
+converter winimConverterIUIAutomation5ToIUIAutomation*(
+    x: ptr IUIAutomation5
+): ptr IUIAutomation =
+  cast[ptr IUIAutomation](x)
+
+converter winimConverterIUIAutomation5ToIUnknown*(x: ptr IUIAutomation5): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIUIAutomation6ToIUIAutomation5*(
+    x: ptr IUIAutomation6
+): ptr IUIAutomation5 =
+  cast[ptr IUIAutomation5](x)
+
+converter winimConverterIUIAutomation6ToIUIAutomation4*(
+    x: ptr IUIAutomation6
+): ptr IUIAutomation4 =
+  cast[ptr IUIAutomation4](x)
+
+converter winimConverterIUIAutomation6ToIUIAutomation3*(
+    x: ptr IUIAutomation6
+): ptr IUIAutomation3 =
+  cast[ptr IUIAutomation3](x)
+
+converter winimConverterIUIAutomation6ToIUIAutomation2*(
+    x: ptr IUIAutomation6
+): ptr IUIAutomation2 =
+  cast[ptr IUIAutomation2](x)
+
+converter winimConverterIUIAutomation6ToIUIAutomation*(
+    x: ptr IUIAutomation6
+): ptr IUIAutomation =
+  cast[ptr IUIAutomation](x)
+
+converter winimConverterIUIAutomation6ToIUnknown*(x: ptr IUIAutomation6): ptr IUnknown =
+  cast[ptr IUnknown](x)
--- a/semicongine/thirdparty/winim/winim/inc/usp10.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/usp10.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -13,6 +13,7 @@
   SCRIPT_CACHE* = pointer
   SCRIPT_STRING_ANALYSIS* = pointer
   OPENTYPE_TAG* = ULONG
+
 const
   USPBUILD* = 0400
   SCRIPT_UNDEFINED* = 0
@@ -66,75 +67,83 @@
   SCRIPT_JUSTIFY_ARABIC_SEEN_M* = 15
 type
   SCRIPT_CONTROL* {.pure.} = object
-    uDefaultLanguage* {.bitsize:16.}: DWORD
-    fContextDigits* {.bitsize:1.}: DWORD
-    fInvertPreBoundDir* {.bitsize:1.}: DWORD
-    fInvertPostBoundDir* {.bitsize:1.}: DWORD
-    fLinkStringBefore* {.bitsize:1.}: DWORD
-    fLinkStringAfter* {.bitsize:1.}: DWORD
-    fNeutralOverride* {.bitsize:1.}: DWORD
-    fNumericOverride* {.bitsize:1.}: DWORD
-    fLegacyBidiClass* {.bitsize:1.}: DWORD
-    fMergeNeutralItems* {.bitsize:1.}: DWORD
-    fUseStandardBidi* {.bitsize:1.}: DWORD
-    fReserved* {.bitsize:6.}: DWORD
+    uDefaultLanguage* {.bitsize: 16.}: DWORD
+    fContextDigits* {.bitsize: 1.}: DWORD
+    fInvertPreBoundDir* {.bitsize: 1.}: DWORD
+    fInvertPostBoundDir* {.bitsize: 1.}: DWORD
+    fLinkStringBefore* {.bitsize: 1.}: DWORD
+    fLinkStringAfter* {.bitsize: 1.}: DWORD
+    fNeutralOverride* {.bitsize: 1.}: DWORD
+    fNumericOverride* {.bitsize: 1.}: DWORD
+    fLegacyBidiClass* {.bitsize: 1.}: DWORD
+    fMergeNeutralItems* {.bitsize: 1.}: DWORD
+    fUseStandardBidi* {.bitsize: 1.}: DWORD
+    fReserved* {.bitsize: 6.}: DWORD
+
   SCRIPT_STATE* {.pure.} = object
-    uBidiLevel* {.bitsize:5.}: WORD
-    fOverrideDirection* {.bitsize:1.}: WORD
-    fInhibitSymSwap* {.bitsize:1.}: WORD
-    fCharShape* {.bitsize:1.}: WORD
-    fDigitSubstitute* {.bitsize:1.}: WORD
-    fInhibitLigate* {.bitsize:1.}: WORD
-    fDisplayZWG* {.bitsize:1.}: WORD
-    fArabicNumContext* {.bitsize:1.}: WORD
-    fGcpClusters* {.bitsize:1.}: WORD
-    fReserved* {.bitsize:1.}: WORD
-    fEngineReserved* {.bitsize:2.}: WORD
+    uBidiLevel* {.bitsize: 5.}: WORD
+    fOverrideDirection* {.bitsize: 1.}: WORD
+    fInhibitSymSwap* {.bitsize: 1.}: WORD
+    fCharShape* {.bitsize: 1.}: WORD
+    fDigitSubstitute* {.bitsize: 1.}: WORD
+    fInhibitLigate* {.bitsize: 1.}: WORD
+    fDisplayZWG* {.bitsize: 1.}: WORD
+    fArabicNumContext* {.bitsize: 1.}: WORD
+    fGcpClusters* {.bitsize: 1.}: WORD
+    fReserved* {.bitsize: 1.}: WORD
+    fEngineReserved* {.bitsize: 2.}: WORD
+
   SCRIPT_ANALYSIS* {.pure.} = object
-    eScript* {.bitsize:10.}: WORD
-    fRTL* {.bitsize:1.}: WORD
-    fLayoutRTL* {.bitsize:1.}: WORD
-    fLinkBefore* {.bitsize:1.}: WORD
-    fLinkAfter* {.bitsize:1.}: WORD
-    fLogicalOrder* {.bitsize:1.}: WORD
-    fNoGlyphIndex* {.bitsize:1.}: WORD
+    eScript* {.bitsize: 10.}: WORD
+    fRTL* {.bitsize: 1.}: WORD
+    fLayoutRTL* {.bitsize: 1.}: WORD
+    fLinkBefore* {.bitsize: 1.}: WORD
+    fLinkAfter* {.bitsize: 1.}: WORD
+    fLogicalOrder* {.bitsize: 1.}: WORD
+    fNoGlyphIndex* {.bitsize: 1.}: WORD
     s*: SCRIPT_STATE
+
   SCRIPT_ITEM* {.pure.} = object
     iCharPos*: int32
     a*: SCRIPT_ANALYSIS
+
   SCRIPT_VISATTR* {.pure.} = object
-    uJustification* {.bitsize:4.}: WORD
-    fClusterStart* {.bitsize:1.}: WORD
-    fDiacritic* {.bitsize:1.}: WORD
-    fZeroWidth* {.bitsize:1.}: WORD
-    fReserved* {.bitsize:1.}: WORD
-    fShapeReserved* {.bitsize:8.}: WORD
+    uJustification* {.bitsize: 4.}: WORD
+    fClusterStart* {.bitsize: 1.}: WORD
+    fDiacritic* {.bitsize: 1.}: WORD
+    fZeroWidth* {.bitsize: 1.}: WORD
+    fReserved* {.bitsize: 1.}: WORD
+    fShapeReserved* {.bitsize: 8.}: WORD
+
   GOFFSET* {.pure.} = object
     du*: LONG
     dv*: LONG
+
   SCRIPT_LOGATTR* {.pure.} = object
-    fSoftBreak* {.bitsize:1.}: BYTE
-    fWhiteSpace* {.bitsize:1.}: BYTE
-    fCharStop* {.bitsize:1.}: BYTE
-    fWordStop* {.bitsize:1.}: BYTE
-    fInvalid* {.bitsize:1.}: BYTE
-    fReserved* {.bitsize:3.}: BYTE
+    fSoftBreak* {.bitsize: 1.}: BYTE
+    fWhiteSpace* {.bitsize: 1.}: BYTE
+    fCharStop* {.bitsize: 1.}: BYTE
+    fWordStop* {.bitsize: 1.}: BYTE
+    fInvalid* {.bitsize: 1.}: BYTE
+    fReserved* {.bitsize: 3.}: BYTE
+
   SCRIPT_PROPERTIES* {.pure.} = object
-    langid* {.bitsize:16.}: DWORD
-    fNumeric* {.bitsize:1.}: DWORD
-    fComplex* {.bitsize:1.}: DWORD
-    fNeedsWordBreaking* {.bitsize:1.}: DWORD
-    fNeedsCaretInfo* {.bitsize:1.}: DWORD
-    bCharSet* {.bitsize:8.}: DWORD
-    fControl* {.bitsize:1.}: DWORD
-    fPrivateUseArea* {.bitsize:1.}: DWORD
-    fNeedsCharacterJustify* {.bitsize:1.}: DWORD
-    fInvalidGlyph* {.bitsize:1.}: DWORD
-    fInvalidLogAttr* {.bitsize:1.}: DWORD
-    fCDM* {.bitsize:1.}: DWORD
-    fAmbiguousCharSet* {.bitsize:1.}: DWORD
-    fClusterSizeVaries* {.bitsize:1.}: DWORD
-    fRejectInvalid* {.bitsize:1.}: DWORD
+    langid* {.bitsize: 16.}: DWORD
+    fNumeric* {.bitsize: 1.}: DWORD
+    fComplex* {.bitsize: 1.}: DWORD
+    fNeedsWordBreaking* {.bitsize: 1.}: DWORD
+    fNeedsCaretInfo* {.bitsize: 1.}: DWORD
+    bCharSet* {.bitsize: 8.}: DWORD
+    fControl* {.bitsize: 1.}: DWORD
+    fPrivateUseArea* {.bitsize: 1.}: DWORD
+    fNeedsCharacterJustify* {.bitsize: 1.}: DWORD
+    fInvalidGlyph* {.bitsize: 1.}: DWORD
+    fInvalidLogAttr* {.bitsize: 1.}: DWORD
+    fCDM* {.bitsize: 1.}: DWORD
+    fAmbiguousCharSet* {.bitsize: 1.}: DWORD
+    fClusterSizeVaries* {.bitsize: 1.}: DWORD
+    fRejectInvalid* {.bitsize: 1.}: DWORD
+
   SCRIPT_FONTPROPERTIES* {.pure.} = object
     cBytes*: int32
     wgBlank*: WORD
@@ -142,65 +151,374 @@
     wgInvalid*: WORD
     wgKashida*: WORD
     iKashidaWidth*: int32
+
   SCRIPT_TABDEF* {.pure.} = object
     cTabStops*: int32
     iScale*: int32
     pTabStops*: ptr int32
     iTabOrigin*: int32
+
   SCRIPT_DIGITSUBSTITUTE* {.pure.} = object
-    NationalDigitLanguage* {.bitsize:16.}: DWORD
-    TraditionalDigitLanguage* {.bitsize:16.}: DWORD
-    DigitSubstitute* {.bitsize:8.}: DWORD
+    NationalDigitLanguage* {.bitsize: 16.}: DWORD
+    TraditionalDigitLanguage* {.bitsize: 16.}: DWORD
+    DigitSubstitute* {.bitsize: 8.}: DWORD
     dwReserved*: DWORD
+
   OPENTYPE_FEATURE_RECORD* {.pure.} = object
     tagFeature*: OPENTYPE_TAG
     lParameter*: LONG
+
   TEXTRANGE_PROPERTIES* {.pure.} = object
     potfRecords*: ptr OPENTYPE_FEATURE_RECORD
     cotfRecords*: int32
+
   SCRIPT_CHARPROP* {.pure.} = object
-    fCanGlyphAlone* {.bitsize:1.}: WORD
-    reserved* {.bitsize:15.}: WORD
+    fCanGlyphAlone* {.bitsize: 1.}: WORD
+    reserved* {.bitsize: 15.}: WORD
+
   SCRIPT_GLYPHPROP* {.pure.} = object
     sva*: SCRIPT_VISATTR
     reserved*: WORD
-proc ScriptFreeCache*(psc: ptr SCRIPT_CACHE): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptItemize*(pwcInChars: ptr WCHAR, cInChars: int32, cMaxItems: int32, psControl: ptr SCRIPT_CONTROL, psState: ptr SCRIPT_STATE, pItems: ptr SCRIPT_ITEM, pcItems: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptLayout*(cRuns: int32, pbLevel: ptr BYTE, piVisualToLogical: ptr int32, piLogicalToVisual: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptShape*(hdc: HDC, psc: ptr SCRIPT_CACHE, pwcChars: ptr WCHAR, cChars: int32, cMaxGlyphs: int32, psa: ptr SCRIPT_ANALYSIS, pwOutGlyphs: ptr WORD, pwLogClust: ptr WORD, psva: ptr SCRIPT_VISATTR, pcGlyphs: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptPlace*(hdc: HDC, psc: ptr SCRIPT_CACHE, pwGlyphs: ptr WORD, cGlyphs: int32, psva: ptr SCRIPT_VISATTR, psa: ptr SCRIPT_ANALYSIS, piAdvance: ptr int32, pGoffset: ptr GOFFSET, pABC: ptr ABC): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptTextOut*(hdc: HDC, psc: ptr SCRIPT_CACHE, x: int32, y: int32, fuOptions: UINT, lprc: ptr RECT, psa: ptr SCRIPT_ANALYSIS, pwcReserved: ptr WCHAR, iReserved: int32, pwGlyphs: ptr WORD, cGlyphs: int32, piAdvance: ptr int32, piJustify: ptr int32, pGoffset: ptr GOFFSET): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptJustify*(psva: ptr SCRIPT_VISATTR, piAdvance: ptr int32, cGlyphs: int32, iDx: int32, iMinKashida: int32, piJustify: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptBreak*(pwcChars: ptr WCHAR, cChars: int32, psa: ptr SCRIPT_ANALYSIS, psla: ptr SCRIPT_LOGATTR): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptCPtoX*(iCP: int32, fTrailing: WINBOOL, cChars: int32, cGlyphs: int32, pwLogClust: ptr WORD, psva: ptr SCRIPT_VISATTR, piAdvance: ptr int32, psa: ptr SCRIPT_ANALYSIS, piX: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptXtoCP*(iX: int32, cChars: int32, cGlyphs: int32, pwLogClust: ptr WORD, psva: ptr SCRIPT_VISATTR, piAdvance: ptr int32, psa: ptr SCRIPT_ANALYSIS, piCP: ptr int32, piTrailing: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptGetLogicalWidths*(psa: ptr SCRIPT_ANALYSIS, cChars: int32, cGlyphs: int32, piGlyphWidth: ptr int32, pwLogClust: ptr WORD, psva: ptr SCRIPT_VISATTR, piDx: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptApplyLogicalWidth*(piDx: ptr int32, cChars: int32, cGlyphs: int32, pwLogClust: ptr WORD, psva: ptr SCRIPT_VISATTR, piAdvance: ptr int32, psa: ptr SCRIPT_ANALYSIS, pABC: ptr ABC, piJustify: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptGetCMap*(hdc: HDC, psc: ptr SCRIPT_CACHE, pwcInChars: ptr WCHAR, cChars: int32, dwFlags: DWORD, pwOutGlyphs: ptr WORD): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptGetGlyphABCWidth*(hdc: HDC, psc: ptr SCRIPT_CACHE, wGlyph: WORD, pABC: ptr ABC): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptGetProperties*(ppSp: ptr ptr ptr SCRIPT_PROPERTIES, piNumScripts: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptGetFontProperties*(hdc: HDC, psc: ptr SCRIPT_CACHE, sfp: ptr SCRIPT_FONTPROPERTIES): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptCacheGetHeight*(hdc: HDC, psc: ptr SCRIPT_CACHE, tmHeight: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptStringAnalyse*(hdc: HDC, pString: pointer, cString: int32, cGlyphs: int32, iCharset: int32, dwFlags: DWORD, iReqWidth: int32, psControl: ptr SCRIPT_CONTROL, psState: ptr SCRIPT_STATE, piDx: ptr int32, pTabdef: ptr SCRIPT_TABDEF, pbInClass: ptr BYTE, pssa: ptr SCRIPT_STRING_ANALYSIS): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptStringFree*(pssa: ptr SCRIPT_STRING_ANALYSIS): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptString_pSize*(ssa: SCRIPT_STRING_ANALYSIS): ptr SIZE {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptString_pcOutChars*(ssa: SCRIPT_STRING_ANALYSIS): ptr int32 {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptString_pLogAttr*(ssa: SCRIPT_STRING_ANALYSIS): ptr SCRIPT_LOGATTR {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptStringGetOrder*(ssa: SCRIPT_STRING_ANALYSIS, puOrder: ptr UINT): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptStringCPtoX*(ssa: SCRIPT_STRING_ANALYSIS, icp: int32, fTrailing: WINBOOL, pX: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptStringXtoCP*(ssa: SCRIPT_STRING_ANALYSIS, iX: int32, piCh: ptr int32, piTrailing: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptStringGetLogicalWidths*(ssa: SCRIPT_STRING_ANALYSIS, piDx: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptStringValidate*(ssa: SCRIPT_STRING_ANALYSIS): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptStringOut*(ssa: SCRIPT_STRING_ANALYSIS, iX: int32, iY: int32, uOptions: UINT, prc: ptr RECT, iMinSel: int32, iMaxSel: int32, fDisabled: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptIsComplex*(pwcInChars: ptr WCHAR, cInChars: int32, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptRecordDigitSubstitution*(Locale: LCID, psds: ptr SCRIPT_DIGITSUBSTITUTE): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptApplyDigitSubstitution*(psds: ptr SCRIPT_DIGITSUBSTITUTE, psc: ptr SCRIPT_CONTROL, pss: ptr SCRIPT_STATE): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptShapeOpenType*(hdc: HDC, psc: ptr SCRIPT_CACHE, psa: ptr SCRIPT_ANALYSIS, tagScript: OPENTYPE_TAG, tagLangSys: OPENTYPE_TAG, rcRangeChars: ptr int32, rpRangeProperties: ptr ptr TEXTRANGE_PROPERTIES, cRanges: int32, pwcChars: ptr WCHAR, cChars: int32, cMaxGlyphs: int32, pwLogClust: ptr WORD, pCharProps: ptr SCRIPT_CHARPROP, pwOutGlyphs: ptr WORD, pOutGlyphProps: ptr SCRIPT_GLYPHPROP, pcGlyphs: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptPlaceOpenType*(hdc: HDC, psc: ptr SCRIPT_CACHE, psa: ptr SCRIPT_ANALYSIS, tagScript: OPENTYPE_TAG, tagLangSys: OPENTYPE_TAG, rcRangeChars: ptr int32, rpRangeProperties: ptr ptr TEXTRANGE_PROPERTIES, cRanges: int32, pwcChars: ptr WCHAR, pwLogClust: ptr WORD, pCharProps: ptr SCRIPT_CHARPROP, cChars: int32, pwGlyphs: ptr WORD, pGlyphProps: ptr SCRIPT_GLYPHPROP, cGlyphs: int32, piAdvance: ptr int32, pGoffset: ptr GOFFSET, pABC: ptr ABC): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptItemizeOpenType*(pwcInChars: ptr WCHAR, cInChars: int32, cMaxItems: int32, psControl: ptr SCRIPT_CONTROL, psState: ptr SCRIPT_STATE, pItems: ptr SCRIPT_ITEM, pScriptTags: ptr OPENTYPE_TAG, pcItems: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptGetFontScriptTags*(hdc: HDC, psc: ptr SCRIPT_CACHE, psa: ptr SCRIPT_ANALYSIS, cMaxTags: int32, pScriptTags: ptr OPENTYPE_TAG, pcTags: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptGetFontLanguageTags*(hdc: HDC, psc: ptr SCRIPT_CACHE, psa: ptr SCRIPT_ANALYSIS, tagScript: OPENTYPE_TAG, cMaxTags: int32, pLangsysTags: ptr OPENTYPE_TAG, pcTags: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptGetFontFeatureTags*(hdc: HDC, psc: ptr SCRIPT_CACHE, psa: ptr SCRIPT_ANALYSIS, tagScript: OPENTYPE_TAG, tagLangSys: OPENTYPE_TAG, cMaxTags: int32, pFeatureTags: ptr OPENTYPE_TAG, pcTags: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptGetFontAlternateGlyphs*(hdc: HDC, psc: ptr SCRIPT_CACHE, psa: ptr SCRIPT_ANALYSIS, tagScript: OPENTYPE_TAG, tagLangSys: OPENTYPE_TAG, tagFeature: OPENTYPE_TAG, wGlyphId: WORD, cMaxAlternates: int32, pAlternateGlyphs: ptr WORD, pcAlternates: ptr int32): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptSubstituteSingleGlyph*(hdc: HDC, psc: ptr SCRIPT_CACHE, psa: ptr SCRIPT_ANALYSIS, tagScript: OPENTYPE_TAG, tagLangSys: OPENTYPE_TAG, tagFeature: OPENTYPE_TAG, lParameter: LONG, wGlyphId: WORD, pwOutGlyphId: ptr WORD): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
-proc ScriptPositionSingleGlyph*(hdc: HDC, psc: ptr SCRIPT_CACHE, psa: ptr SCRIPT_ANALYSIS, tagScript: OPENTYPE_TAG, tagLangSys: OPENTYPE_TAG, tagFeature: OPENTYPE_TAG, lParameter: LONG, wGlyphId: WORD, iAdvance: int32, GOffset: GOFFSET, piOutAdvance: ptr int32, pOutGoffset: ptr GOFFSET): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptFreeCache*(
+  psc: ptr SCRIPT_CACHE
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptItemize*(
+  pwcInChars: ptr WCHAR,
+  cInChars: int32,
+  cMaxItems: int32,
+  psControl: ptr SCRIPT_CONTROL,
+  psState: ptr SCRIPT_STATE,
+  pItems: ptr SCRIPT_ITEM,
+  pcItems: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptLayout*(
+  cRuns: int32,
+  pbLevel: ptr BYTE,
+  piVisualToLogical: ptr int32,
+  piLogicalToVisual: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptShape*(
+  hdc: HDC,
+  psc: ptr SCRIPT_CACHE,
+  pwcChars: ptr WCHAR,
+  cChars: int32,
+  cMaxGlyphs: int32,
+  psa: ptr SCRIPT_ANALYSIS,
+  pwOutGlyphs: ptr WORD,
+  pwLogClust: ptr WORD,
+  psva: ptr SCRIPT_VISATTR,
+  pcGlyphs: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptPlace*(
+  hdc: HDC,
+  psc: ptr SCRIPT_CACHE,
+  pwGlyphs: ptr WORD,
+  cGlyphs: int32,
+  psva: ptr SCRIPT_VISATTR,
+  psa: ptr SCRIPT_ANALYSIS,
+  piAdvance: ptr int32,
+  pGoffset: ptr GOFFSET,
+  pABC: ptr ABC,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptTextOut*(
+  hdc: HDC,
+  psc: ptr SCRIPT_CACHE,
+  x: int32,
+  y: int32,
+  fuOptions: UINT,
+  lprc: ptr RECT,
+  psa: ptr SCRIPT_ANALYSIS,
+  pwcReserved: ptr WCHAR,
+  iReserved: int32,
+  pwGlyphs: ptr WORD,
+  cGlyphs: int32,
+  piAdvance: ptr int32,
+  piJustify: ptr int32,
+  pGoffset: ptr GOFFSET,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptJustify*(
+  psva: ptr SCRIPT_VISATTR,
+  piAdvance: ptr int32,
+  cGlyphs: int32,
+  iDx: int32,
+  iMinKashida: int32,
+  piJustify: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptBreak*(
+  pwcChars: ptr WCHAR, cChars: int32, psa: ptr SCRIPT_ANALYSIS, psla: ptr SCRIPT_LOGATTR
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptCPtoX*(
+  iCP: int32,
+  fTrailing: WINBOOL,
+  cChars: int32,
+  cGlyphs: int32,
+  pwLogClust: ptr WORD,
+  psva: ptr SCRIPT_VISATTR,
+  piAdvance: ptr int32,
+  psa: ptr SCRIPT_ANALYSIS,
+  piX: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptXtoCP*(
+  iX: int32,
+  cChars: int32,
+  cGlyphs: int32,
+  pwLogClust: ptr WORD,
+  psva: ptr SCRIPT_VISATTR,
+  piAdvance: ptr int32,
+  psa: ptr SCRIPT_ANALYSIS,
+  piCP: ptr int32,
+  piTrailing: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptGetLogicalWidths*(
+  psa: ptr SCRIPT_ANALYSIS,
+  cChars: int32,
+  cGlyphs: int32,
+  piGlyphWidth: ptr int32,
+  pwLogClust: ptr WORD,
+  psva: ptr SCRIPT_VISATTR,
+  piDx: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptApplyLogicalWidth*(
+  piDx: ptr int32,
+  cChars: int32,
+  cGlyphs: int32,
+  pwLogClust: ptr WORD,
+  psva: ptr SCRIPT_VISATTR,
+  piAdvance: ptr int32,
+  psa: ptr SCRIPT_ANALYSIS,
+  pABC: ptr ABC,
+  piJustify: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptGetCMap*(
+  hdc: HDC,
+  psc: ptr SCRIPT_CACHE,
+  pwcInChars: ptr WCHAR,
+  cChars: int32,
+  dwFlags: DWORD,
+  pwOutGlyphs: ptr WORD,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptGetGlyphABCWidth*(
+  hdc: HDC, psc: ptr SCRIPT_CACHE, wGlyph: WORD, pABC: ptr ABC
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptGetProperties*(
+  ppSp: ptr ptr ptr SCRIPT_PROPERTIES, piNumScripts: ptr int32
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptGetFontProperties*(
+  hdc: HDC, psc: ptr SCRIPT_CACHE, sfp: ptr SCRIPT_FONTPROPERTIES
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptCacheGetHeight*(
+  hdc: HDC, psc: ptr SCRIPT_CACHE, tmHeight: ptr int32
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptStringAnalyse*(
+  hdc: HDC,
+  pString: pointer,
+  cString: int32,
+  cGlyphs: int32,
+  iCharset: int32,
+  dwFlags: DWORD,
+  iReqWidth: int32,
+  psControl: ptr SCRIPT_CONTROL,
+  psState: ptr SCRIPT_STATE,
+  piDx: ptr int32,
+  pTabdef: ptr SCRIPT_TABDEF,
+  pbInClass: ptr BYTE,
+  pssa: ptr SCRIPT_STRING_ANALYSIS,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptStringFree*(
+  pssa: ptr SCRIPT_STRING_ANALYSIS
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptString_pSize*(
+  ssa: SCRIPT_STRING_ANALYSIS
+): ptr SIZE {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptString_pcOutChars*(
+  ssa: SCRIPT_STRING_ANALYSIS
+): ptr int32 {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptString_pLogAttr*(
+  ssa: SCRIPT_STRING_ANALYSIS
+): ptr SCRIPT_LOGATTR {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptStringGetOrder*(
+  ssa: SCRIPT_STRING_ANALYSIS, puOrder: ptr UINT
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptStringCPtoX*(
+  ssa: SCRIPT_STRING_ANALYSIS, icp: int32, fTrailing: WINBOOL, pX: ptr int32
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptStringXtoCP*(
+  ssa: SCRIPT_STRING_ANALYSIS, iX: int32, piCh: ptr int32, piTrailing: ptr int32
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptStringGetLogicalWidths*(
+  ssa: SCRIPT_STRING_ANALYSIS, piDx: ptr int32
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptStringValidate*(
+  ssa: SCRIPT_STRING_ANALYSIS
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptStringOut*(
+  ssa: SCRIPT_STRING_ANALYSIS,
+  iX: int32,
+  iY: int32,
+  uOptions: UINT,
+  prc: ptr RECT,
+  iMinSel: int32,
+  iMaxSel: int32,
+  fDisabled: WINBOOL,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptIsComplex*(
+  pwcInChars: ptr WCHAR, cInChars: int32, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptRecordDigitSubstitution*(
+  Locale: LCID, psds: ptr SCRIPT_DIGITSUBSTITUTE
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptApplyDigitSubstitution*(
+  psds: ptr SCRIPT_DIGITSUBSTITUTE, psc: ptr SCRIPT_CONTROL, pss: ptr SCRIPT_STATE
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptShapeOpenType*(
+  hdc: HDC,
+  psc: ptr SCRIPT_CACHE,
+  psa: ptr SCRIPT_ANALYSIS,
+  tagScript: OPENTYPE_TAG,
+  tagLangSys: OPENTYPE_TAG,
+  rcRangeChars: ptr int32,
+  rpRangeProperties: ptr ptr TEXTRANGE_PROPERTIES,
+  cRanges: int32,
+  pwcChars: ptr WCHAR,
+  cChars: int32,
+  cMaxGlyphs: int32,
+  pwLogClust: ptr WORD,
+  pCharProps: ptr SCRIPT_CHARPROP,
+  pwOutGlyphs: ptr WORD,
+  pOutGlyphProps: ptr SCRIPT_GLYPHPROP,
+  pcGlyphs: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptPlaceOpenType*(
+  hdc: HDC,
+  psc: ptr SCRIPT_CACHE,
+  psa: ptr SCRIPT_ANALYSIS,
+  tagScript: OPENTYPE_TAG,
+  tagLangSys: OPENTYPE_TAG,
+  rcRangeChars: ptr int32,
+  rpRangeProperties: ptr ptr TEXTRANGE_PROPERTIES,
+  cRanges: int32,
+  pwcChars: ptr WCHAR,
+  pwLogClust: ptr WORD,
+  pCharProps: ptr SCRIPT_CHARPROP,
+  cChars: int32,
+  pwGlyphs: ptr WORD,
+  pGlyphProps: ptr SCRIPT_GLYPHPROP,
+  cGlyphs: int32,
+  piAdvance: ptr int32,
+  pGoffset: ptr GOFFSET,
+  pABC: ptr ABC,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptItemizeOpenType*(
+  pwcInChars: ptr WCHAR,
+  cInChars: int32,
+  cMaxItems: int32,
+  psControl: ptr SCRIPT_CONTROL,
+  psState: ptr SCRIPT_STATE,
+  pItems: ptr SCRIPT_ITEM,
+  pScriptTags: ptr OPENTYPE_TAG,
+  pcItems: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptGetFontScriptTags*(
+  hdc: HDC,
+  psc: ptr SCRIPT_CACHE,
+  psa: ptr SCRIPT_ANALYSIS,
+  cMaxTags: int32,
+  pScriptTags: ptr OPENTYPE_TAG,
+  pcTags: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptGetFontLanguageTags*(
+  hdc: HDC,
+  psc: ptr SCRIPT_CACHE,
+  psa: ptr SCRIPT_ANALYSIS,
+  tagScript: OPENTYPE_TAG,
+  cMaxTags: int32,
+  pLangsysTags: ptr OPENTYPE_TAG,
+  pcTags: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptGetFontFeatureTags*(
+  hdc: HDC,
+  psc: ptr SCRIPT_CACHE,
+  psa: ptr SCRIPT_ANALYSIS,
+  tagScript: OPENTYPE_TAG,
+  tagLangSys: OPENTYPE_TAG,
+  cMaxTags: int32,
+  pFeatureTags: ptr OPENTYPE_TAG,
+  pcTags: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptGetFontAlternateGlyphs*(
+  hdc: HDC,
+  psc: ptr SCRIPT_CACHE,
+  psa: ptr SCRIPT_ANALYSIS,
+  tagScript: OPENTYPE_TAG,
+  tagLangSys: OPENTYPE_TAG,
+  tagFeature: OPENTYPE_TAG,
+  wGlyphId: WORD,
+  cMaxAlternates: int32,
+  pAlternateGlyphs: ptr WORD,
+  pcAlternates: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptSubstituteSingleGlyph*(
+  hdc: HDC,
+  psc: ptr SCRIPT_CACHE,
+  psa: ptr SCRIPT_ANALYSIS,
+  tagScript: OPENTYPE_TAG,
+  tagLangSys: OPENTYPE_TAG,
+  tagFeature: OPENTYPE_TAG,
+  lParameter: LONG,
+  wGlyphId: WORD,
+  pwOutGlyphId: ptr WORD,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
+
+proc ScriptPositionSingleGlyph*(
+  hdc: HDC,
+  psc: ptr SCRIPT_CACHE,
+  psa: ptr SCRIPT_ANALYSIS,
+  tagScript: OPENTYPE_TAG,
+  tagLangSys: OPENTYPE_TAG,
+  tagFeature: OPENTYPE_TAG,
+  lParameter: LONG,
+  wGlyphId: WORD,
+  iAdvance: int32,
+  GOffset: GOFFSET,
+  piOutAdvance: ptr int32,
+  pOutGoffset: ptr GOFFSET,
+): HRESULT {.winapi, stdcall, dynlib: "usp10", importc.}
--- a/semicongine/thirdparty/winim/winim/inc/uxtheme.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/uxtheme.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -23,18 +23,28 @@
     dwFlags*: DWORD
     prcExclude*: ptr RECT
     pBlendFunction*: ptr BLENDFUNCTION
+
   PBP_PAINTPARAMS* = ptr BP_PAINTPARAMS
   BP_ANIMATIONPARAMS* {.pure.} = object
     cbSize*: DWORD
     dwFlags*: DWORD
     style*: BP_ANIMATIONSTYLE
     dwDuration*: DWORD
+
   PBP_ANIMATIONPARAMS* = ptr BP_ANIMATIONPARAMS
   WTA_OPTIONS* {.pure.} = object
     dwFlags*: DWORD
     dwMask*: DWORD
+
   PWTA_OPTIONS* = ptr WTA_OPTIONS
-  DTT_CALLBACK_PROC* = proc (hdc: HDC, pszText: LPWSTR, cchText: int32, prc: LPRECT, dwFlags: UINT, lParam: LPARAM): int32 {.stdcall.}
+  DTT_CALLBACK_PROC* = proc(
+    hdc: HDC,
+    pszText: LPWSTR,
+    cchText: int32,
+    prc: LPRECT,
+    dwFlags: UINT,
+    lParam: LPARAM,
+  ): int32 {.stdcall.}
   DTTOPTS* {.pure.} = object
     dwSize*: DWORD
     dwFlags*: DWORD
@@ -51,25 +61,30 @@
     iGlowSize*: int32
     pfnDrawTextCallback*: DTT_CALLBACK_PROC
     lParam*: LPARAM
+
   PDTTOPTS* = ptr DTTOPTS
   MARGINS* {.pure.} = object
     cxLeftWidth*: int32
     cxRightWidth*: int32
     cyTopHeight*: int32
     cyBottomHeight*: int32
+
   PMARGINS* = ptr MARGINS
-const
-  MAX_INTLIST_COUNT* = 402
+
+const MAX_INTLIST_COUNT* = 402
 type
   INTLIST* {.pure.} = object
     iValueCount*: int32
     iValues*: array[MAX_INTLIST_COUNT, int32]
+
   PINTLIST* = ptr INTLIST
   DTBGOPTS* {.pure.} = object
     dwSize*: DWORD
     dwFlags*: DWORD
     rcClip*: RECT
+
   PDTBGOPTS* = ptr DTBGOPTS
+
 const
   GBF_DIRECT* = 0x00000001
   GBF_COPY* = 0x00000002
@@ -90,7 +105,8 @@
   WTNCA_NODRAWICON* = 0x00000002
   WTNCA_NOSYSMENU* = 0x00000004
   WTNCA_NOMIRRORHELP* = 0x00000008
-  WTNCA_VALIDBITS* = WTNCA_NODRAWCAPTION or WTNCA_NODRAWICON or WTNCA_NOSYSMENU or WTNCA_NOMIRRORHELP
+  WTNCA_VALIDBITS* =
+    WTNCA_NODRAWCAPTION or WTNCA_NODRAWICON or WTNCA_NOSYSMENU or WTNCA_NOMIRRORHELP
   OTD_FORCE_RECT_SIZING* = 0x00000001
   OTD_NONCLIENT* = 0x00000002
   OTD_VALIDBITS* = OTD_FORCE_RECT_SIZING or OTD_NONCLIENT
@@ -109,7 +125,10 @@
   DTT_GLOWSIZE* = 1 shl 11
   DTT_CALLBACK* = 1 shl 12
   DTT_COMPOSITED* = 1 shl 13
-  DTT_VALIDBITS* = DTT_TEXTCOLOR or DTT_BORDERCOLOR or DTT_SHADOWCOLOR or DTT_SHADOWTYPE or DTT_SHADOWOFFSET or DTT_BORDERSIZE or DTT_FONTPROP or DTT_COLORPROP or DTT_STATEID or DTT_CALCRECT or DTT_APPLYOVERLAY or DTT_GLOWSIZE or DTT_COMPOSITED
+  DTT_VALIDBITS* =
+    DTT_TEXTCOLOR or DTT_BORDERCOLOR or DTT_SHADOWCOLOR or DTT_SHADOWTYPE or
+    DTT_SHADOWOFFSET or DTT_BORDERSIZE or DTT_FONTPROP or DTT_COLORPROP or DTT_STATEID or
+    DTT_CALCRECT or DTT_APPLYOVERLAY or DTT_GLOWSIZE or DTT_COMPOSITED
   TS_MIN* = 0
   TS_TRUE* = 1
   TS_DRAW* = 2
@@ -120,7 +139,9 @@
   HTTB_RESIZINGBORDER_TOP* = 0x0020
   HTTB_RESIZINGBORDER_RIGHT* = 0x0040
   HTTB_RESIZINGBORDER_BOTTOM* = 0x0080
-  HTTB_RESIZINGBORDER* = HTTB_RESIZINGBORDER_LEFT or HTTB_RESIZINGBORDER_TOP or HTTB_RESIZINGBORDER_RIGHT or HTTB_RESIZINGBORDER_BOTTOM
+  HTTB_RESIZINGBORDER* =
+    HTTB_RESIZINGBORDER_LEFT or HTTB_RESIZINGBORDER_TOP or HTTB_RESIZINGBORDER_RIGHT or
+    HTTB_RESIZINGBORDER_BOTTOM
   HTTB_SIZINGTEMPLATE* = 0x0100
   HTTB_SYSTEMSIZINGMARGINS* = 0x0200
   PO_STATE* = 0
@@ -134,7 +155,8 @@
   ETDT_ENABLETAB* = ETDT_ENABLE or ETDT_USETABTEXTURE
   ETDT_USEAEROWIZARDTABTEXTURE* = 0x00000008
   ETDT_ENABLEAEROWIZARDTAB* = ETDT_ENABLE or ETDT_USEAEROWIZARDTABTEXTURE
-  ETDT_VALIDBITS* = ETDT_DISABLE or ETDT_ENABLE or ETDT_USETABTEXTURE or ETDT_USEAEROWIZARDTABTEXTURE
+  ETDT_VALIDBITS* =
+    ETDT_DISABLE or ETDT_ENABLE or ETDT_USETABTEXTURE or ETDT_USEAEROWIZARDTABTEXTURE
   STAP_ALLOW_NONCLIENT* = 1 shl 0
   STAP_ALLOW_CONTROLS* = 1 shl 1
   STAP_ALLOW_WEBCONTENT* = 1 shl 2
@@ -152,77 +174,423 @@
   DTBG_COMPUTINGREGION* = 0x00000010
   DTBG_MIRRORDC* = 0x00000020
   DTBG_NOMIRROR* = 0x00000040
-  DTBG_VALIDBITS* = DTBG_CLIPRECT or DTBG_DRAWSOLID or DTBG_OMITBORDER or DTBG_OMITCONTENT or DTBG_COMPUTINGREGION or DTBG_MIRRORDC or DTBG_NOMIRROR
-proc BeginPanningFeedback*(hwnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc UpdatePanningFeedback*(hwnd: HWND, lTotalOverpanOffsetX: LONG, lTotalOverpanOffsetY: LONG, fInInertia: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc EndPanningFeedback*(hwnd: HWND, fAnimateBack: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeBitmap*(hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, dwFlags: ULONG, phBitmap: ptr HBITMAP): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeStream*(hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, ppvStream: ptr pointer, pcbStream: ptr DWORD, hInst: HINSTANCE): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeTransitionDuration*(hTheme: HTHEME, iPartId: int32, iStateIdFrom: int32, iStateIdTo: int32, iPropId: int32, pdwDuration: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc BeginBufferedPaint*(hdcTarget: HDC, prcTarget: ptr RECT, dwFormat: BP_BUFFERFORMAT, pPaintParams: ptr BP_PAINTPARAMS, phdc: ptr HDC): HPAINTBUFFER {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc EndBufferedPaint*(hBufferedPaint: HPAINTBUFFER, fUpdateTarget: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetBufferedPaintTargetRect*(hBufferedPaint: HPAINTBUFFER, prc: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetBufferedPaintTargetDC*(hBufferedPaint: HPAINTBUFFER): HDC {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetBufferedPaintDC*(hBufferedPaint: HPAINTBUFFER): HDC {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetBufferedPaintBits*(hBufferedPaint: HPAINTBUFFER, ppbBuffer: ptr ptr RGBQUAD, pcxRow: ptr int32): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc BufferedPaintClear*(hBufferedPaint: HPAINTBUFFER, prc: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc BufferedPaintSetAlpha*(hBufferedPaint: HPAINTBUFFER, prc: ptr RECT, alpha: BYTE): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+  DTBG_VALIDBITS* =
+    DTBG_CLIPRECT or DTBG_DRAWSOLID or DTBG_OMITBORDER or DTBG_OMITCONTENT or
+    DTBG_COMPUTINGREGION or DTBG_MIRRORDC or DTBG_NOMIRROR
+proc BeginPanningFeedback*(
+  hwnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc UpdatePanningFeedback*(
+  hwnd: HWND,
+  lTotalOverpanOffsetX: LONG,
+  lTotalOverpanOffsetY: LONG,
+  fInInertia: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc EndPanningFeedback*(
+  hwnd: HWND, fAnimateBack: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeBitmap*(
+  hTheme: HTHEME,
+  iPartId: int32,
+  iStateId: int32,
+  iPropId: int32,
+  dwFlags: ULONG,
+  phBitmap: ptr HBITMAP,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeStream*(
+  hTheme: HTHEME,
+  iPartId: int32,
+  iStateId: int32,
+  iPropId: int32,
+  ppvStream: ptr pointer,
+  pcbStream: ptr DWORD,
+  hInst: HINSTANCE,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeTransitionDuration*(
+  hTheme: HTHEME,
+  iPartId: int32,
+  iStateIdFrom: int32,
+  iStateIdTo: int32,
+  iPropId: int32,
+  pdwDuration: ptr DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc BeginBufferedPaint*(
+  hdcTarget: HDC,
+  prcTarget: ptr RECT,
+  dwFormat: BP_BUFFERFORMAT,
+  pPaintParams: ptr BP_PAINTPARAMS,
+  phdc: ptr HDC,
+): HPAINTBUFFER {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc EndBufferedPaint*(
+  hBufferedPaint: HPAINTBUFFER, fUpdateTarget: WINBOOL
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetBufferedPaintTargetRect*(
+  hBufferedPaint: HPAINTBUFFER, prc: ptr RECT
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetBufferedPaintTargetDC*(
+  hBufferedPaint: HPAINTBUFFER
+): HDC {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetBufferedPaintDC*(
+  hBufferedPaint: HPAINTBUFFER
+): HDC {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetBufferedPaintBits*(
+  hBufferedPaint: HPAINTBUFFER, ppbBuffer: ptr ptr RGBQUAD, pcxRow: ptr int32
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc BufferedPaintClear*(
+  hBufferedPaint: HPAINTBUFFER, prc: ptr RECT
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc BufferedPaintSetAlpha*(
+  hBufferedPaint: HPAINTBUFFER, prc: ptr RECT, alpha: BYTE
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
 proc BufferedPaintInit*(): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
 proc BufferedPaintUnInit*(): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc BeginBufferedAnimation*(hwnd: HWND, hdcTarget: HDC, rcTarget: ptr RECT, dwFormat: BP_BUFFERFORMAT, pPaintParams: ptr BP_PAINTPARAMS, pAnimationParams: ptr BP_ANIMATIONPARAMS, phdcFrom: ptr HDC, phdcTo: ptr HDC): HANIMATIONBUFFER {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc EndBufferedAnimation*(hbpAnimation: HANIMATIONBUFFER, fUpdateTarget: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc BufferedPaintRenderAnimation*(hwnd: HWND, hdcTarget: HDC): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc BufferedPaintStopAllAnimations*(hwnd: HWND): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+proc BeginBufferedAnimation*(
+  hwnd: HWND,
+  hdcTarget: HDC,
+  rcTarget: ptr RECT,
+  dwFormat: BP_BUFFERFORMAT,
+  pPaintParams: ptr BP_PAINTPARAMS,
+  pAnimationParams: ptr BP_ANIMATIONPARAMS,
+  phdcFrom: ptr HDC,
+  phdcTo: ptr HDC,
+): HANIMATIONBUFFER {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc EndBufferedAnimation*(
+  hbpAnimation: HANIMATIONBUFFER, fUpdateTarget: WINBOOL
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc BufferedPaintRenderAnimation*(
+  hwnd: HWND, hdcTarget: HDC
+): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc BufferedPaintStopAllAnimations*(
+  hwnd: HWND
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
 proc IsCompositionActive*(): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc SetWindowThemeAttribute*(hwnd: HWND, eAttribute: WINDOWTHEMEATTRIBUTETYPE, pvAttribute: PVOID, cbAttribute: DWORD): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc OpenThemeData*(hwnd: HWND, pszClassList: LPCWSTR): HTHEME {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc OpenThemeDataEx*(hwnd: HWND, pszClassList: LPCWSTR, dwFlags: DWORD): HTHEME {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc CloseThemeData*(hTheme: HTHEME): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc DrawThemeBackground*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, pRect: ptr RECT, pClipRect: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc DrawThemeText*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, pszText: LPCWSTR, iCharCount: int32, dwTextFlags: DWORD, dwTextFlags2: DWORD, pRect: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc DrawThemeTextEx*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, pszText: LPCWSTR, iCharCount: int32, dwFlags: DWORD, pRect: LPRECT, pOptions: ptr DTTOPTS): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeBackgroundContentRect*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, pBoundingRect: ptr RECT, pContentRect: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeBackgroundExtent*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, pContentRect: ptr RECT, pExtentRect: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemePartSize*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, prc: ptr RECT, eSize: THEMESIZE, psz: ptr SIZE): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeTextExtent*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, pszText: LPCWSTR, iCharCount: int32, dwTextFlags: DWORD, pBoundingRect: ptr RECT, pExtentRect: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeTextMetrics*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, ptm: ptr TEXTMETRIC): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeBackgroundRegion*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, pRect: ptr RECT, pRegion: ptr HRGN): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc HitTestThemeBackground*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, dwOptions: DWORD, pRect: ptr RECT, hrgn: HRGN, ptTest: POINT, pwHitTestCode: ptr WORD): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc DrawThemeEdge*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, pDestRect: ptr RECT, uEdge: UINT, uFlags: UINT, pContentRect: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc DrawThemeIcon*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, pRect: ptr RECT, himl: HIMAGELIST, iImageIndex: int32): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc IsThemePartDefined*(hTheme: HTHEME, iPartId: int32, iStateId: int32): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc IsThemeBackgroundPartiallyTransparent*(hTheme: HTHEME, iPartId: int32, iStateId: int32): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeColor*(hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, pColor: ptr COLORREF): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeMetric*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, iPropId: int32, piVal: ptr int32): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeString*(hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, pszBuff: LPWSTR, cchMaxBuffChars: int32): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeBool*(hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, pfVal: ptr WINBOOL): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeInt*(hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, piVal: ptr int32): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeEnumValue*(hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, piVal: ptr int32): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemePosition*(hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, pPoint: ptr POINT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeFont*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, iPropId: int32, pFont: ptr LOGFONTW): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeRect*(hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, pRect: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeMargins*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, iPropId: int32, prc: ptr RECT, pMargins: ptr MARGINS): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeIntList*(hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, pIntList: ptr INTLIST): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemePropertyOrigin*(hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, pOrigin: ptr PROPERTYORIGIN): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc SetWindowTheme*(hwnd: HWND, pszSubAppName: LPCWSTR, pszSubIdList: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeFilename*(hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, pszThemeFileName: LPWSTR, cchMaxBuffChars: int32): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeSysColor*(hTheme: HTHEME, iColorId: int32): COLORREF {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeSysColorBrush*(hTheme: HTHEME, iColorId: int32): HBRUSH {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeSysBool*(hTheme: HTHEME, iBoolId: int32): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeSysSize*(hTheme: HTHEME, iSizeId: int32): int32 {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeSysFont*(hTheme: HTHEME, iFontId: int32, plf: ptr LOGFONT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeSysString*(hTheme: HTHEME, iStringId: int32, pszStringBuff: LPWSTR, cchMaxStringChars: int32): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeSysInt*(hTheme: HTHEME, iIntId: int32, piValue: ptr int32): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+proc SetWindowThemeAttribute*(
+  hwnd: HWND,
+  eAttribute: WINDOWTHEMEATTRIBUTETYPE,
+  pvAttribute: PVOID,
+  cbAttribute: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc OpenThemeData*(
+  hwnd: HWND, pszClassList: LPCWSTR
+): HTHEME {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc OpenThemeDataEx*(
+  hwnd: HWND, pszClassList: LPCWSTR, dwFlags: DWORD
+): HTHEME {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc CloseThemeData*(
+  hTheme: HTHEME
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc DrawThemeBackground*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  pRect: ptr RECT,
+  pClipRect: ptr RECT,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc DrawThemeText*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  pszText: LPCWSTR,
+  iCharCount: int32,
+  dwTextFlags: DWORD,
+  dwTextFlags2: DWORD,
+  pRect: ptr RECT,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc DrawThemeTextEx*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  pszText: LPCWSTR,
+  iCharCount: int32,
+  dwFlags: DWORD,
+  pRect: LPRECT,
+  pOptions: ptr DTTOPTS,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeBackgroundContentRect*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  pBoundingRect: ptr RECT,
+  pContentRect: ptr RECT,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeBackgroundExtent*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  pContentRect: ptr RECT,
+  pExtentRect: ptr RECT,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemePartSize*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  prc: ptr RECT,
+  eSize: THEMESIZE,
+  psz: ptr SIZE,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeTextExtent*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  pszText: LPCWSTR,
+  iCharCount: int32,
+  dwTextFlags: DWORD,
+  pBoundingRect: ptr RECT,
+  pExtentRect: ptr RECT,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeTextMetrics*(
+  hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, ptm: ptr TEXTMETRIC
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeBackgroundRegion*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  pRect: ptr RECT,
+  pRegion: ptr HRGN,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc HitTestThemeBackground*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  dwOptions: DWORD,
+  pRect: ptr RECT,
+  hrgn: HRGN,
+  ptTest: POINT,
+  pwHitTestCode: ptr WORD,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc DrawThemeEdge*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  pDestRect: ptr RECT,
+  uEdge: UINT,
+  uFlags: UINT,
+  pContentRect: ptr RECT,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc DrawThemeIcon*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  pRect: ptr RECT,
+  himl: HIMAGELIST,
+  iImageIndex: int32,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc IsThemePartDefined*(
+  hTheme: HTHEME, iPartId: int32, iStateId: int32
+): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc IsThemeBackgroundPartiallyTransparent*(
+  hTheme: HTHEME, iPartId: int32, iStateId: int32
+): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeColor*(
+  hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, pColor: ptr COLORREF
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeMetric*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  iPropId: int32,
+  piVal: ptr int32,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeString*(
+  hTheme: HTHEME,
+  iPartId: int32,
+  iStateId: int32,
+  iPropId: int32,
+  pszBuff: LPWSTR,
+  cchMaxBuffChars: int32,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeBool*(
+  hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, pfVal: ptr WINBOOL
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeInt*(
+  hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, piVal: ptr int32
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeEnumValue*(
+  hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, piVal: ptr int32
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemePosition*(
+  hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, pPoint: ptr POINT
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeFont*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  iPropId: int32,
+  pFont: ptr LOGFONTW,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeRect*(
+  hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, pRect: ptr RECT
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeMargins*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  iPropId: int32,
+  prc: ptr RECT,
+  pMargins: ptr MARGINS,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeIntList*(
+  hTheme: HTHEME, iPartId: int32, iStateId: int32, iPropId: int32, pIntList: ptr INTLIST
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemePropertyOrigin*(
+  hTheme: HTHEME,
+  iPartId: int32,
+  iStateId: int32,
+  iPropId: int32,
+  pOrigin: ptr PROPERTYORIGIN,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc SetWindowTheme*(
+  hwnd: HWND, pszSubAppName: LPCWSTR, pszSubIdList: LPCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeFilename*(
+  hTheme: HTHEME,
+  iPartId: int32,
+  iStateId: int32,
+  iPropId: int32,
+  pszThemeFileName: LPWSTR,
+  cchMaxBuffChars: int32,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeSysColor*(
+  hTheme: HTHEME, iColorId: int32
+): COLORREF {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeSysColorBrush*(
+  hTheme: HTHEME, iColorId: int32
+): HBRUSH {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeSysBool*(
+  hTheme: HTHEME, iBoolId: int32
+): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeSysSize*(
+  hTheme: HTHEME, iSizeId: int32
+): int32 {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeSysFont*(
+  hTheme: HTHEME, iFontId: int32, plf: ptr LOGFONT
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeSysString*(
+  hTheme: HTHEME, iStringId: int32, pszStringBuff: LPWSTR, cchMaxStringChars: int32
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeSysInt*(
+  hTheme: HTHEME, iIntId: int32, piValue: ptr int32
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
 proc IsThemeActive*(): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
 proc IsAppThemed*(): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
 proc GetWindowTheme*(hwnd: HWND): HTHEME {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc EnableThemeDialogTexture*(hwnd: HWND, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc IsThemeDialogTextureEnabled*(hwnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
+proc EnableThemeDialogTexture*(
+  hwnd: HWND, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc IsThemeDialogTextureEnabled*(
+  hwnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
 proc GetThemeAppProperties*(): DWORD {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc SetThemeAppProperties*(dwFlags: DWORD): void {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetCurrentThemeName*(pszThemeFileName: LPWSTR, cchMaxNameChars: int32, pszColorBuff: LPWSTR, cchMaxColorChars: int32, pszSizeBuff: LPWSTR, cchMaxSizeChars: int32): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc GetThemeDocumentationProperty*(pszThemeName: LPCWSTR, pszPropertyName: LPCWSTR, pszValueBuff: LPWSTR, cchMaxValChars: int32): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc DrawThemeParentBackground*(hwnd: HWND, hdc: HDC, prc: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc DrawThemeParentBackgroundEx*(hwnd: HWND, hdc: HDC, dwFlags: DWORD, prc: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc EnableTheming*(fEnable: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
-proc DrawThemeBackgroundEx*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, pRect: ptr RECT, pOptions: ptr DTBGOPTS): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+proc SetThemeAppProperties*(
+  dwFlags: DWORD
+): void {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetCurrentThemeName*(
+  pszThemeFileName: LPWSTR,
+  cchMaxNameChars: int32,
+  pszColorBuff: LPWSTR,
+  cchMaxColorChars: int32,
+  pszSizeBuff: LPWSTR,
+  cchMaxSizeChars: int32,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc GetThemeDocumentationProperty*(
+  pszThemeName: LPCWSTR,
+  pszPropertyName: LPCWSTR,
+  pszValueBuff: LPWSTR,
+  cchMaxValChars: int32,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc DrawThemeParentBackground*(
+  hwnd: HWND, hdc: HDC, prc: ptr RECT
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc DrawThemeParentBackgroundEx*(
+  hwnd: HWND, hdc: HDC, dwFlags: DWORD, prc: ptr RECT
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc EnableTheming*(
+  fEnable: WINBOOL
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
+
+proc DrawThemeBackgroundEx*(
+  hTheme: HTHEME,
+  hdc: HDC,
+  iPartId: int32,
+  iStateId: int32,
+  pRect: ptr RECT,
+  pOptions: ptr DTBGOPTS,
+): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
--- a/semicongine/thirdparty/winim/winim/inc/vfw.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/vfw.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -40,6 +40,7 @@
     lKeyCount*: LONG
     lpState*: LPVOID
     cbState*: LONG
+
   PCOMPVARS* = ptr COMPVARS
   TDRAWDIBTIME* {.pure.} = object
     timeCount*: LONG
@@ -49,6 +50,7 @@
     timeStretch*: LONG
     timeBlt*: LONG
     timeSetDIBits*: LONG
+
   LPDRAWDIBTIME* = ptr TDRAWDIBTIME
   TAVISTREAMINFOW* {.pure.} = object
     fccType*: DWORD
@@ -69,6 +71,7 @@
     dwEditCount*: DWORD
     dwFormatChangeCount*: DWORD
     szName*: array[64, WCHAR]
+
   LPAVISTREAMINFOW* = ptr TAVISTREAMINFOW
   TAVISTREAMINFOA* {.pure.} = object
     fccType*: DWORD
@@ -89,6 +92,7 @@
     dwEditCount*: DWORD
     dwFormatChangeCount*: DWORD
     szName*: array[64, char]
+
   LPAVISTREAMINFOA* = ptr TAVISTREAMINFOA
   TAVIFILEINFOW* {.pure.} = object
     dwMaxBytesPerSec*: DWORD
@@ -103,6 +107,7 @@
     dwLength*: DWORD
     dwEditCount*: DWORD
     szFileType*: array[64, WCHAR]
+
   LPAVIFILEINFOW* = ptr TAVIFILEINFOW
   TAVIFILEINFOA* {.pure.} = object
     dwMaxBytesPerSec*: DWORD
@@ -117,6 +122,7 @@
     dwLength*: DWORD
     dwEditCount*: DWORD
     szFileType*: array[64, char]
+
   LPAVIFILEINFOA* = ptr TAVIFILEINFOA
   AVICOMPRESSOPTIONS* {.pure.} = object
     fccType*: DWORD
@@ -130,60 +136,145 @@
     lpParms*: LPVOID
     cbParms*: DWORD
     dwInterleaveEvery*: DWORD
+
   LPAVICOMPRESSOPTIONS* = ptr AVICOMPRESSOPTIONS
   IAVIStream* {.pure.} = object
     lpVtbl*: ptr IAVIStreamVtbl
+
   IAVIStreamVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Create*: proc(self: ptr IAVIStream, lParam1: LPARAM, lParam2: LPARAM): HRESULT {.stdcall.}
-    Info*: proc(self: ptr IAVIStream, psi: ptr TAVISTREAMINFOW, lSize: LONG): HRESULT {.stdcall.}
+    Create*:
+      proc(self: ptr IAVIStream, lParam1: LPARAM, lParam2: LPARAM): HRESULT {.stdcall.}
+    Info*: proc(self: ptr IAVIStream, psi: ptr TAVISTREAMINFOW, lSize: LONG): HRESULT {.
+      stdcall
+    .}
     FindSample*: proc(self: ptr IAVIStream, lPos: LONG, lFlags: LONG): LONG {.stdcall.}
-    ReadFormat*: proc(self: ptr IAVIStream, lPos: LONG, lpFormat: LPVOID, lpcbFormat: ptr LONG): HRESULT {.stdcall.}
-    SetFormat*: proc(self: ptr IAVIStream, lPos: LONG, lpFormat: LPVOID, cbFormat: LONG): HRESULT {.stdcall.}
-    Read*: proc(self: ptr IAVIStream, lStart: LONG, lSamples: LONG, lpBuffer: LPVOID, cbBuffer: LONG, plBytes: ptr LONG, plSamples: ptr LONG): HRESULT {.stdcall.}
-    Write*: proc(self: ptr IAVIStream, lStart: LONG, lSamples: LONG, lpBuffer: LPVOID, cbBuffer: LONG, dwFlags: DWORD, plSampWritten: ptr LONG, plBytesWritten: ptr LONG): HRESULT {.stdcall.}
-    Delete*: proc(self: ptr IAVIStream, lStart: LONG, lSamples: LONG): HRESULT {.stdcall.}
-    ReadData*: proc(self: ptr IAVIStream, fcc: DWORD, lp: LPVOID, lpcb: ptr LONG): HRESULT {.stdcall.}
-    WriteData*: proc(self: ptr IAVIStream, fcc: DWORD, lp: LPVOID, cb: LONG): HRESULT {.stdcall.}
-    SetInfo*: proc(self: ptr IAVIStream, lpInfo: ptr TAVISTREAMINFOW, cbInfo: LONG): HRESULT {.stdcall.}
+    ReadFormat*: proc(
+      self: ptr IAVIStream, lPos: LONG, lpFormat: LPVOID, lpcbFormat: ptr LONG
+    ): HRESULT {.stdcall.}
+    SetFormat*: proc(
+      self: ptr IAVIStream, lPos: LONG, lpFormat: LPVOID, cbFormat: LONG
+    ): HRESULT {.stdcall.}
+    Read*: proc(
+      self: ptr IAVIStream,
+      lStart: LONG,
+      lSamples: LONG,
+      lpBuffer: LPVOID,
+      cbBuffer: LONG,
+      plBytes: ptr LONG,
+      plSamples: ptr LONG,
+    ): HRESULT {.stdcall.}
+    Write*: proc(
+      self: ptr IAVIStream,
+      lStart: LONG,
+      lSamples: LONG,
+      lpBuffer: LPVOID,
+      cbBuffer: LONG,
+      dwFlags: DWORD,
+      plSampWritten: ptr LONG,
+      plBytesWritten: ptr LONG,
+    ): HRESULT {.stdcall.}
+    Delete*:
+      proc(self: ptr IAVIStream, lStart: LONG, lSamples: LONG): HRESULT {.stdcall.}
+    ReadData*: proc(
+      self: ptr IAVIStream, fcc: DWORD, lp: LPVOID, lpcb: ptr LONG
+    ): HRESULT {.stdcall.}
+    WriteData*:
+      proc(self: ptr IAVIStream, fcc: DWORD, lp: LPVOID, cb: LONG): HRESULT {.stdcall.}
+    SetInfo*: proc(
+      self: ptr IAVIStream, lpInfo: ptr TAVISTREAMINFOW, cbInfo: LONG
+    ): HRESULT {.stdcall.}
+
   PAVISTREAM* = ptr IAVIStream
   IAVIStreaming* {.pure.} = object
     lpVtbl*: ptr IAVIStreamingVtbl
+
   IAVIStreamingVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Begin*: proc(self: ptr IAVIStreaming, lStart: LONG, lEnd: LONG, lRate: LONG): HRESULT {.stdcall.}
+    Begin*: proc(
+      self: ptr IAVIStreaming, lStart: LONG, lEnd: LONG, lRate: LONG
+    ): HRESULT {.stdcall.}
     End*: proc(self: ptr IAVIStreaming): HRESULT {.stdcall.}
+
   PAVISTREAMING* = ptr IAVIStreaming
   IAVIEditStream* {.pure.} = object
     lpVtbl*: ptr IAVIEditStreamVtbl
+
   IAVIEditStreamVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Cut*: proc(self: ptr IAVIEditStream, plStart: ptr LONG, plLength: ptr LONG, ppResult: ptr PAVISTREAM): HRESULT {.stdcall.}
-    Copy*: proc(self: ptr IAVIEditStream, plStart: ptr LONG, plLength: ptr LONG, ppResult: ptr PAVISTREAM): HRESULT {.stdcall.}
-    Paste*: proc(self: ptr IAVIEditStream, plPos: ptr LONG, plLength: ptr LONG, pstream: PAVISTREAM, lStart: LONG, lEnd: LONG): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IAVIEditStream, ppResult: ptr PAVISTREAM): HRESULT {.stdcall.}
-    SetInfo*: proc(self: ptr IAVIEditStream, lpInfo: ptr TAVISTREAMINFOW, cbInfo: LONG): HRESULT {.stdcall.}
+    Cut*: proc(
+      self: ptr IAVIEditStream,
+      plStart: ptr LONG,
+      plLength: ptr LONG,
+      ppResult: ptr PAVISTREAM,
+    ): HRESULT {.stdcall.}
+    Copy*: proc(
+      self: ptr IAVIEditStream,
+      plStart: ptr LONG,
+      plLength: ptr LONG,
+      ppResult: ptr PAVISTREAM,
+    ): HRESULT {.stdcall.}
+    Paste*: proc(
+      self: ptr IAVIEditStream,
+      plPos: ptr LONG,
+      plLength: ptr LONG,
+      pstream: PAVISTREAM,
+      lStart: LONG,
+      lEnd: LONG,
+    ): HRESULT {.stdcall.}
+    Clone*:
+      proc(self: ptr IAVIEditStream, ppResult: ptr PAVISTREAM): HRESULT {.stdcall.}
+    SetInfo*: proc(
+      self: ptr IAVIEditStream, lpInfo: ptr TAVISTREAMINFOW, cbInfo: LONG
+    ): HRESULT {.stdcall.}
+
   PAVIEDITSTREAM* = ptr IAVIEditStream
   IAVIPersistFile* {.pure.} = object
     lpVtbl*: ptr IAVIPersistFileVtbl
+
   IAVIPersistFileVtbl* {.pure, inheritable.} = object of IPersistFileVtbl
     Reserved1*: proc(self: ptr IAVIPersistFile): HRESULT {.stdcall.}
+
   PAVIPERSISTFILE* = ptr IAVIPersistFile
   IAVIFile* {.pure.} = object
     lpVtbl*: ptr IAVIFileVtbl
+
   IAVIFileVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Info*: proc(self: ptr IAVIFile, pfi: ptr TAVIFILEINFOW, lSize: LONG): HRESULT {.stdcall.}
-    GetStream*: proc(self: ptr IAVIFile, ppStream: ptr PAVISTREAM, fccType: DWORD, lParam: LONG): HRESULT {.stdcall.}
-    CreateStream*: proc(self: ptr IAVIFile, ppStream: ptr PAVISTREAM, psi: ptr TAVISTREAMINFOW): HRESULT {.stdcall.}
-    WriteData*: proc(self: ptr IAVIFile, ckid: DWORD, lpData: LPVOID, cbData: LONG): HRESULT {.stdcall.}
-    ReadData*: proc(self: ptr IAVIFile, ckid: DWORD, lpData: LPVOID, lpcbData: ptr LONG): HRESULT {.stdcall.}
+    Info*:
+      proc(self: ptr IAVIFile, pfi: ptr TAVIFILEINFOW, lSize: LONG): HRESULT {.stdcall.}
+    GetStream*: proc(
+      self: ptr IAVIFile, ppStream: ptr PAVISTREAM, fccType: DWORD, lParam: LONG
+    ): HRESULT {.stdcall.}
+    CreateStream*: proc(
+      self: ptr IAVIFile, ppStream: ptr PAVISTREAM, psi: ptr TAVISTREAMINFOW
+    ): HRESULT {.stdcall.}
+    WriteData*: proc(
+      self: ptr IAVIFile, ckid: DWORD, lpData: LPVOID, cbData: LONG
+    ): HRESULT {.stdcall.}
+    ReadData*: proc(
+      self: ptr IAVIFile, ckid: DWORD, lpData: LPVOID, lpcbData: ptr LONG
+    ): HRESULT {.stdcall.}
     EndRecord*: proc(self: ptr IAVIFile): HRESULT {.stdcall.}
-    DeleteStream*: proc(self: ptr IAVIFile, fccType: DWORD, lParam: LONG): HRESULT {.stdcall.}
+    DeleteStream*:
+      proc(self: ptr IAVIFile, fccType: DWORD, lParam: LONG): HRESULT {.stdcall.}
+
   PAVIFILE* = ptr IAVIFile
   IGetFrame* {.pure.} = object
     lpVtbl*: ptr IGetFrameVtbl
+
   IGetFrameVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     GetFrame*: proc(self: ptr IGetFrame, lPos: LONG): LPVOID {.stdcall.}
-    Begin*: proc(self: ptr IGetFrame, lStart: LONG, lEnd: LONG, lRate: LONG): HRESULT {.stdcall.}
+    Begin*: proc(self: ptr IGetFrame, lStart: LONG, lEnd: LONG, lRate: LONG): HRESULT {.
+      stdcall
+    .}
     End*: proc(self: ptr IGetFrame): HRESULT {.stdcall.}
-    SetFormat*: proc(self: ptr IGetFrame, lpbi: LPBITMAPINFOHEADER, lpBits: LPVOID, x: int32, y: int32, dx: int32, dy: int32): HRESULT {.stdcall.}
+    SetFormat*: proc(
+      self: ptr IGetFrame,
+      lpbi: LPBITMAPINFOHEADER,
+      lpBits: LPVOID,
+      x: int32,
+      y: int32,
+      dx: int32,
+      dy: int32,
+    ): HRESULT {.stdcall.}
+
   PGETFRAME* = ptr IGetFrame
   LPHVIDEO* = ptr HVIDEO
   VIDEOHDR* {.pure.} = object
@@ -194,6 +285,7 @@
     dwUser*: DWORD_PTR
     dwFlags*: DWORD
     dwReserved*: array[4, DWORD_PTR]
+
   PVIDEOHDR* = ptr VIDEOHDR
   LPVIDEOHDR* = ptr VIDEOHDR
   CHANNEL_CAPS* {.pure.} = object
@@ -206,6 +298,7 @@
     dwDstRectYMod*: DWORD
     dwDstRectWidthMod*: DWORD
     dwDstRectHeightMod*: DWORD
+
   PCHANNEL_CAPS* = ptr CHANNEL_CAPS
   LPCHANNEL_CAPS* = ptr CHANNEL_CAPS
   CAPDRIVERCAPS* {.pure.} = object
@@ -220,6 +313,7 @@
     hVideoOut*: HANDLE
     hVideoExtIn*: HANDLE
     hVideoExtOut*: HANDLE
+
   PCAPDRIVERCAPS* = ptr CAPDRIVERCAPS
   LPCAPDRIVERCAPS* = ptr CAPDRIVERCAPS
   CAPSTATUS* {.pure.} = object
@@ -241,6 +335,7 @@
     dwReturn*: DWORD
     wNumVideoAllocated*: UINT
     wNumAudioAllocated*: UINT
+
   PCAPSTATUS* = ptr CAPSTATUS
   LPCAPSTATUS* = ptr CAPSTATUS
   CAPTUREPARMS* {.pure.} = object
@@ -268,12 +363,14 @@
     dwAudioBufferSize*: DWORD
     fDisableWriteCache*: WINBOOL
     AVStreamMaster*: UINT
+
   PCAPTUREPARMS* = ptr CAPTUREPARMS
   LPCAPTUREPARMS* = ptr CAPTUREPARMS
   CAPINFOCHUNK* {.pure.} = object
     fccInfoID*: FOURCC
     lpData*: LPVOID
     cbData*: LONG
+
   PCAPINFOCHUNK* = ptr CAPINFOCHUNK
   LPCAPINFOCHUNK* = ptr CAPINFOCHUNK
   PHACMDRIVERID* = ptr HACMDRIVERID
@@ -284,8 +381,11 @@
   LPHACMSTREAM* = ptr HACMSTREAM
   PHACMOBJ* = ptr HACMOBJ
   LPHACMOBJ* = ptr HACMOBJ
-  ACMDRIVERPROC* = proc (P1: DWORD_PTR, P2: HACMDRIVERID, P3: UINT, P4: LPARAM, P5: LPARAM): LRESULT {.stdcall.}
+  ACMDRIVERPROC* = proc(
+    P1: DWORD_PTR, P2: HACMDRIVERID, P3: UINT, P4: LPARAM, P5: LPARAM
+  ): LRESULT {.stdcall.}
   LPACMDRIVERPROC* = ptr ACMDRIVERPROC
+
 const
   ACMDRIVERDETAILS_SHORTNAME_CHARS* = 32
   ACMDRIVERDETAILS_LONGNAME_CHARS* = 128
@@ -310,6 +410,7 @@
     szCopyright*: array[ACMDRIVERDETAILS_COPYRIGHT_CHARS, char]
     szLicensing*: array[ACMDRIVERDETAILS_LICENSING_CHARS, char]
     szFeatures*: array[ACMDRIVERDETAILS_FEATURES_CHARS, char]
+
   PACMDRIVERDETAILSA* = ptr ACMDRIVERDETAILSA
   LPACMDRIVERDETAILSA* = ptr ACMDRIVERDETAILSA
   ACMDRIVERDETAILSW* {.pure, packed.} = object
@@ -329,10 +430,11 @@
     szCopyright*: array[ACMDRIVERDETAILS_COPYRIGHT_CHARS, WCHAR]
     szLicensing*: array[ACMDRIVERDETAILS_LICENSING_CHARS, WCHAR]
     szFeatures*: array[ACMDRIVERDETAILS_FEATURES_CHARS, WCHAR]
+
   PACMDRIVERDETAILSW* = ptr ACMDRIVERDETAILSW
   LPACMDRIVERDETAILSW* = ptr ACMDRIVERDETAILSW
-const
-  ACMFORMATTAGDETAILS_FORMATTAG_CHARS* = 48
+
+const ACMFORMATTAGDETAILS_FORMATTAG_CHARS* = 48
 type
   ACMFORMATTAGDETAILSA* {.pure.} = object
     cbStruct*: DWORD
@@ -342,6 +444,7 @@
     fdwSupport*: DWORD
     cStandardFormats*: DWORD
     szFormatTag*: array[ACMFORMATTAGDETAILS_FORMATTAG_CHARS, char]
+
   PACMFORMATTAGDETAILSA* = ptr ACMFORMATTAGDETAILSA
   LPACMFORMATTAGDETAILSA* = ptr ACMFORMATTAGDETAILSA
   ACMFORMATTAGDETAILSW* {.pure.} = object
@@ -352,10 +455,11 @@
     fdwSupport*: DWORD
     cStandardFormats*: DWORD
     szFormatTag*: array[ACMFORMATTAGDETAILS_FORMATTAG_CHARS, WCHAR]
+
   PACMFORMATTAGDETAILSW* = ptr ACMFORMATTAGDETAILSW
   LPACMFORMATTAGDETAILSW* = ptr ACMFORMATTAGDETAILSW
-const
-  ACMFORMATDETAILS_FORMAT_CHARS* = 128
+
+const ACMFORMATDETAILS_FORMAT_CHARS* = 128
 type
   ACMFORMATDETAILSA* {.pure, packed.} = object
     cbStruct*: DWORD
@@ -365,6 +469,7 @@
     pwfx*: LPWAVEFORMATEX
     cbwfx*: DWORD
     szFormat*: array[ACMFORMATDETAILS_FORMAT_CHARS, char]
+
   PACMFORMATDETAILSA* = ptr ACMFORMATDETAILSA
   LPACMFORMATDETAILSA* = ptr ACMFORMATDETAILSA
   ACMFORMATDETAILSW* {.pure, packed.} = object
@@ -375,9 +480,11 @@
     pwfx*: LPWAVEFORMATEX
     cbwfx*: DWORD
     szFormat*: array[ACMFORMATDETAILS_FORMAT_CHARS, WCHAR]
+
   PACMFORMATDETAILSW* = ptr ACMFORMATDETAILSW
   LPACMFORMATDETAILSW* = ptr ACMFORMATDETAILSW
-  ACMFORMATCHOOSEHOOKPROCA* = proc (hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): UINT {.stdcall.}
+  ACMFORMATCHOOSEHOOKPROCA* =
+    proc(hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): UINT {.stdcall.}
   ACMFORMATCHOOSEA* {.pure, packed.} = object
     cbStruct*: DWORD
     fdwStyle*: DWORD
@@ -395,9 +502,11 @@
     pszTemplateName*: LPCSTR
     lCustData*: LPARAM
     pfnHook*: ACMFORMATCHOOSEHOOKPROCA
+
   PACMFORMATCHOOSEA* = ptr ACMFORMATCHOOSEA
   LPACMFORMATCHOOSEA* = ptr ACMFORMATCHOOSEA
-  ACMFORMATCHOOSEHOOKPROCW* = proc (hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): UINT {.stdcall.}
+  ACMFORMATCHOOSEHOOKPROCW* =
+    proc(hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): UINT {.stdcall.}
   ACMFORMATCHOOSEW* {.pure, packed.} = object
     cbStruct*: DWORD
     fdwStyle*: DWORD
@@ -415,10 +524,11 @@
     pszTemplateName*: LPCWSTR
     lCustData*: LPARAM
     pfnHook*: ACMFORMATCHOOSEHOOKPROCW
+
   PACMFORMATCHOOSEW* = ptr ACMFORMATCHOOSEW
   LPACMFORMATCHOOSEW* = ptr ACMFORMATCHOOSEW
-const
-  ACMFILTERTAGDETAILS_FILTERTAG_CHARS* = 48
+
+const ACMFILTERTAGDETAILS_FILTERTAG_CHARS* = 48
 type
   ACMFILTERTAGDETAILSA* {.pure.} = object
     cbStruct*: DWORD
@@ -428,6 +538,7 @@
     fdwSupport*: DWORD
     cStandardFilters*: DWORD
     szFilterTag*: array[ACMFILTERTAGDETAILS_FILTERTAG_CHARS, char]
+
   PACMFILTERTAGDETAILSA* = ptr ACMFILTERTAGDETAILSA
   LPACMFILTERTAGDETAILSA* = ptr ACMFILTERTAGDETAILSA
   ACMFILTERTAGDETAILSW* {.pure.} = object
@@ -438,10 +549,11 @@
     fdwSupport*: DWORD
     cStandardFilters*: DWORD
     szFilterTag*: array[ACMFILTERTAGDETAILS_FILTERTAG_CHARS, WCHAR]
+
   PACMFILTERTAGDETAILSW* = ptr ACMFILTERTAGDETAILSW
   LPACMFILTERTAGDETAILSW* = ptr ACMFILTERTAGDETAILSW
-const
-  ACMFILTERDETAILS_FILTER_CHARS* = 128
+
+const ACMFILTERDETAILS_FILTER_CHARS* = 128
 type
   ACMFILTERDETAILSA* {.pure, packed.} = object
     cbStruct*: DWORD
@@ -451,6 +563,7 @@
     pwfltr*: LPWAVEFILTER
     cbwfltr*: DWORD
     szFilter*: array[ACMFILTERDETAILS_FILTER_CHARS, char]
+
   PACMFILTERDETAILSA* = ptr ACMFILTERDETAILSA
   LPACMFILTERDETAILSA* = ptr ACMFILTERDETAILSA
   ACMFILTERDETAILSW* {.pure, packed.} = object
@@ -461,9 +574,11 @@
     pwfltr*: LPWAVEFILTER
     cbwfltr*: DWORD
     szFilter*: array[ACMFILTERDETAILS_FILTER_CHARS, WCHAR]
+
   PACMFILTERDETAILSW* = ptr ACMFILTERDETAILSW
   LPACMFILTERDETAILSW* = ptr ACMFILTERDETAILSW
-  ACMFILTERCHOOSEHOOKPROCA* = proc (hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): UINT {.stdcall.}
+  ACMFILTERCHOOSEHOOKPROCA* =
+    proc(hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): UINT {.stdcall.}
   ACMFILTERCHOOSEA* {.pure, packed.} = object
     cbStruct*: DWORD
     fdwStyle*: DWORD
@@ -481,9 +596,11 @@
     pszTemplateName*: LPCSTR
     lCustData*: LPARAM
     pfnHook*: ACMFILTERCHOOSEHOOKPROCA
+
   PACMFILTERCHOOSEA* = ptr ACMFILTERCHOOSEA
   LPACMFILTERCHOOSEA* = ptr ACMFILTERCHOOSEA
-  ACMFILTERCHOOSEHOOKPROCW* = proc (hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): UINT {.stdcall.}
+  ACMFILTERCHOOSEHOOKPROCW* =
+    proc(hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): UINT {.stdcall.}
   ACMFILTERCHOOSEW* {.pure, packed.} = object
     cbStruct*: DWORD
     fdwStyle*: DWORD
@@ -501,14 +618,14 @@
     pszTemplateName*: LPCWSTR
     lCustData*: LPARAM
     pfnHook*: ACMFILTERCHOOSEHOOKPROCW
+
   PACMFILTERCHOOSEW* = ptr ACMFILTERCHOOSEW
   LPACMFILTERCHOOSEW* = ptr ACMFILTERCHOOSEW
+
 when winimCpu64:
-  const
-    VFW_DRVRESERVED* = 15
+  const VFW_DRVRESERVED* = 15
 when winimCpu32:
-  const
-    VFW_DRVRESERVED* = 10
+  const VFW_DRVRESERVED* = 10
 type
   ACMSTREAMHEADER* {.pure, packed.} = object
     cbStruct*: DWORD
@@ -523,8 +640,10 @@
     cbDstLengthUsed*: DWORD
     dwDstUser*: DWORD_PTR
     dwReservedDriver*: array[VFW_DRVRESERVED, DWORD]
+
   PACMSTREAMHEADER* = ptr ACMSTREAMHEADER
   LPACMSTREAMHEADER* = ptr ACMSTREAMHEADER
+
 const
   ICVERSION* = 0x0104
   BI_1632* = 0x32333631
@@ -559,67 +678,67 @@
   ICQUALITY_LOW* = 0
   ICQUALITY_HIGH* = 10000
   ICQUALITY_DEFAULT* = -1
-  ICM_USER* = DRV_USER+0x0000
-  ICM_RESERVED_LOW* = DRV_USER+0x1000
+  ICM_USER* = DRV_USER + 0x0000
+  ICM_RESERVED_LOW* = DRV_USER + 0x1000
   ICM_RESERVED* = ICM_RESERVED_LOW
-  ICM_RESERVED_HIGH* = DRV_USER+0x2000
-  ICM_GETSTATE* = ICM_RESERVED+0
-  ICM_SETSTATE* = ICM_RESERVED+1
-  ICM_GETINFO* = ICM_RESERVED+2
-  ICM_CONFIGURE* = ICM_RESERVED+10
-  ICM_ABOUT* = ICM_RESERVED+11
-  ICM_GETERRORTEXT* = ICM_RESERVED+12
-  ICM_GETFORMATNAME* = ICM_RESERVED+20
-  ICM_ENUMFORMATS* = ICM_RESERVED+21
-  ICM_GETDEFAULTQUALITY* = ICM_RESERVED+30
-  ICM_GETQUALITY* = ICM_RESERVED+31
-  ICM_SETQUALITY* = ICM_RESERVED+32
-  ICM_SET* = ICM_RESERVED+40
-  ICM_GET* = ICM_RESERVED+41
-  ICM_FRAMERATE* = mmioFOURCC('F','r','m','R')
-  ICM_KEYFRAMERATE* = mmioFOURCC('K','e','y','R')
-  ICM_COMPRESS_GET_FORMAT* = ICM_USER+4
-  ICM_COMPRESS_GET_SIZE* = ICM_USER+5
-  ICM_COMPRESS_QUERY* = ICM_USER+6
-  ICM_COMPRESS_BEGIN* = ICM_USER+7
-  ICM_COMPRESS* = ICM_USER+8
-  ICM_COMPRESS_END* = ICM_USER+9
-  ICM_DECOMPRESS_GET_FORMAT* = ICM_USER+10
-  ICM_DECOMPRESS_QUERY* = ICM_USER+11
-  ICM_DECOMPRESS_BEGIN* = ICM_USER+12
-  ICM_DECOMPRESS* = ICM_USER+13
-  ICM_DECOMPRESS_END* = ICM_USER+14
-  ICM_DECOMPRESS_SET_PALETTE* = ICM_USER+29
-  ICM_DECOMPRESS_GET_PALETTE* = ICM_USER+30
-  ICM_DRAW_QUERY* = ICM_USER+31
-  ICM_DRAW_BEGIN* = ICM_USER+15
-  ICM_DRAW_GET_PALETTE* = ICM_USER+16
-  ICM_DRAW_UPDATE* = ICM_USER+17
-  ICM_DRAW_START* = ICM_USER+18
-  ICM_DRAW_STOP* = ICM_USER+19
-  ICM_DRAW_BITS* = ICM_USER+20
-  ICM_DRAW_END* = ICM_USER+21
-  ICM_DRAW_GETTIME* = ICM_USER+32
-  ICM_DRAW* = ICM_USER+33
-  ICM_DRAW_WINDOW* = ICM_USER+34
-  ICM_DRAW_SETTIME* = ICM_USER+35
-  ICM_DRAW_REALIZE* = ICM_USER+36
-  ICM_DRAW_FLUSH* = ICM_USER+37
-  ICM_DRAW_RENDERBUFFER* = ICM_USER+38
-  ICM_DRAW_START_PLAY* = ICM_USER+39
-  ICM_DRAW_STOP_PLAY* = ICM_USER+40
-  ICM_DRAW_SUGGESTFORMAT* = ICM_USER+50
-  ICM_DRAW_CHANGEPALETTE* = ICM_USER+51
-  ICM_DRAW_IDLE* = ICM_USER+52
-  ICM_GETBUFFERSWANTED* = ICM_USER+41
-  ICM_GETDEFAULTKEYFRAMERATE* = ICM_USER+42
-  ICM_DECOMPRESSEX_BEGIN* = ICM_USER+60
-  ICM_DECOMPRESSEX_QUERY* = ICM_USER+61
-  ICM_DECOMPRESSEX* = ICM_USER+62
-  ICM_DECOMPRESSEX_END* = ICM_USER+63
-  ICM_COMPRESS_FRAMES_INFO* = ICM_USER+70
-  ICM_COMPRESS_FRAMES* = ICM_USER+71
-  ICM_SET_STATUS_PROC* = ICM_USER+72
+  ICM_RESERVED_HIGH* = DRV_USER + 0x2000
+  ICM_GETSTATE* = ICM_RESERVED + 0
+  ICM_SETSTATE* = ICM_RESERVED + 1
+  ICM_GETINFO* = ICM_RESERVED + 2
+  ICM_CONFIGURE* = ICM_RESERVED + 10
+  ICM_ABOUT* = ICM_RESERVED + 11
+  ICM_GETERRORTEXT* = ICM_RESERVED + 12
+  ICM_GETFORMATNAME* = ICM_RESERVED + 20
+  ICM_ENUMFORMATS* = ICM_RESERVED + 21
+  ICM_GETDEFAULTQUALITY* = ICM_RESERVED + 30
+  ICM_GETQUALITY* = ICM_RESERVED + 31
+  ICM_SETQUALITY* = ICM_RESERVED + 32
+  ICM_SET* = ICM_RESERVED + 40
+  ICM_GET* = ICM_RESERVED + 41
+  ICM_FRAMERATE* = mmioFOURCC('F', 'r', 'm', 'R')
+  ICM_KEYFRAMERATE* = mmioFOURCC('K', 'e', 'y', 'R')
+  ICM_COMPRESS_GET_FORMAT* = ICM_USER + 4
+  ICM_COMPRESS_GET_SIZE* = ICM_USER + 5
+  ICM_COMPRESS_QUERY* = ICM_USER + 6
+  ICM_COMPRESS_BEGIN* = ICM_USER + 7
+  ICM_COMPRESS* = ICM_USER + 8
+  ICM_COMPRESS_END* = ICM_USER + 9
+  ICM_DECOMPRESS_GET_FORMAT* = ICM_USER + 10
+  ICM_DECOMPRESS_QUERY* = ICM_USER + 11
+  ICM_DECOMPRESS_BEGIN* = ICM_USER + 12
+  ICM_DECOMPRESS* = ICM_USER + 13
+  ICM_DECOMPRESS_END* = ICM_USER + 14
+  ICM_DECOMPRESS_SET_PALETTE* = ICM_USER + 29
+  ICM_DECOMPRESS_GET_PALETTE* = ICM_USER + 30
+  ICM_DRAW_QUERY* = ICM_USER + 31
+  ICM_DRAW_BEGIN* = ICM_USER + 15
+  ICM_DRAW_GET_PALETTE* = ICM_USER + 16
+  ICM_DRAW_UPDATE* = ICM_USER + 17
+  ICM_DRAW_START* = ICM_USER + 18
+  ICM_DRAW_STOP* = ICM_USER + 19
+  ICM_DRAW_BITS* = ICM_USER + 20
+  ICM_DRAW_END* = ICM_USER + 21
+  ICM_DRAW_GETTIME* = ICM_USER + 32
+  ICM_DRAW* = ICM_USER + 33
+  ICM_DRAW_WINDOW* = ICM_USER + 34
+  ICM_DRAW_SETTIME* = ICM_USER + 35
+  ICM_DRAW_REALIZE* = ICM_USER + 36
+  ICM_DRAW_FLUSH* = ICM_USER + 37
+  ICM_DRAW_RENDERBUFFER* = ICM_USER + 38
+  ICM_DRAW_START_PLAY* = ICM_USER + 39
+  ICM_DRAW_STOP_PLAY* = ICM_USER + 40
+  ICM_DRAW_SUGGESTFORMAT* = ICM_USER + 50
+  ICM_DRAW_CHANGEPALETTE* = ICM_USER + 51
+  ICM_DRAW_IDLE* = ICM_USER + 52
+  ICM_GETBUFFERSWANTED* = ICM_USER + 41
+  ICM_GETDEFAULTKEYFRAMERATE* = ICM_USER + 42
+  ICM_DECOMPRESSEX_BEGIN* = ICM_USER + 60
+  ICM_DECOMPRESSEX_QUERY* = ICM_USER + 61
+  ICM_DECOMPRESSEX* = ICM_USER + 62
+  ICM_DECOMPRESSEX_END* = ICM_USER + 63
+  ICM_COMPRESS_FRAMES_INFO* = ICM_USER + 70
+  ICM_COMPRESS_FRAMES* = ICM_USER + 71
+  ICM_SET_STATUS_PROC* = ICM_USER + 72
   VIDCF_QUALITY* = 0x0001
   VIDCF_CRUNCH* = 0x0002
   VIDCF_TEMPORAL* = 0x0004
@@ -689,29 +808,31 @@
   PD_STRETCHDIB_1_1_OK* = 0x0004
   PD_STRETCHDIB_1_2_OK* = 0x0008
   PD_STRETCHDIB_1_N_OK* = 0x0010
-  formtypeAVI* = mmioFOURCC('A','V','I',' ')
-  listtypeAVIHEADER* = mmioFOURCC('h','d','r','l')
-  ckidAVIMAINHDR* = mmioFOURCC('a','v','i','h')
-  listtypeSTREAMHEADER* = mmioFOURCC('s','t','r','l')
-  ckidSTREAMHEADER* = mmioFOURCC('s','t','r','h')
-  ckidSTREAMFORMAT* = mmioFOURCC('s','t','r','f')
-  ckidSTREAMHANDLERDATA* = mmioFOURCC('s','t','r','d')
-  ckidSTREAMNAME* = mmioFOURCC('s','t','r','n')
-  listtypeAVIMOVIE* = mmioFOURCC('m','o','v','i')
-  listtypeAVIRECORD* = mmioFOURCC('r','e','c',' ')
-  ckidAVINEWINDEX* = mmioFOURCC('i','d','x','1')
+  formtypeAVI* = mmioFOURCC('A', 'V', 'I', ' ')
+  listtypeAVIHEADER* = mmioFOURCC('h', 'd', 'r', 'l')
+  ckidAVIMAINHDR* = mmioFOURCC('a', 'v', 'i', 'h')
+  listtypeSTREAMHEADER* = mmioFOURCC('s', 't', 'r', 'l')
+  ckidSTREAMHEADER* = mmioFOURCC('s', 't', 'r', 'h')
+  ckidSTREAMFORMAT* = mmioFOURCC('s', 't', 'r', 'f')
+  ckidSTREAMHANDLERDATA* = mmioFOURCC('s', 't', 'r', 'd')
+  ckidSTREAMNAME* = mmioFOURCC('s', 't', 'r', 'n')
+  listtypeAVIMOVIE* = mmioFOURCC('m', 'o', 'v', 'i')
+  listtypeAVIRECORD* = mmioFOURCC('r', 'e', 'c', ' ')
+  ckidAVINEWINDEX* = mmioFOURCC('i', 'd', 'x', '1')
   streamtypeANY* = 0
-  streamtypeVIDEO* = mmioFOURCC('v','i','d','s')
-  streamtypeAUDIO* = mmioFOURCC('a','u','d','s')
-  streamtypeMIDI* = mmioFOURCC('m','i','d','s')
-  streamtypeTEXT* = mmioFOURCC('t','x','t','s')
-template aviTWOCC*(c0: untyped, c1: untyped): untyped = c0.DWORD or (c1.DWORD shl 8)
+  streamtypeVIDEO* = mmioFOURCC('v', 'i', 'd', 's')
+  streamtypeAUDIO* = mmioFOURCC('a', 'u', 'd', 's')
+  streamtypeMIDI* = mmioFOURCC('m', 'i', 'd', 's')
+  streamtypeTEXT* = mmioFOURCC('t', 'x', 't', 's')
+template aviTWOCC*(c0: untyped, c1: untyped): untyped =
+  c0.DWORD or (c1.DWORD shl 8)
+
 const
-  cktypeDIBbits* = aviTWOCC('d','b')
-  cktypeDIBcompressed* = aviTWOCC('d','c')
-  cktypePALchange* = aviTWOCC('p','c')
-  cktypeWAVEbytes* = aviTWOCC('w','b')
-  ckidAVIPADDING* = mmioFOURCC('J','U','N','K')
+  cktypeDIBbits* = aviTWOCC('d', 'b')
+  cktypeDIBcompressed* = aviTWOCC('d', 'c')
+  cktypePALchange* = aviTWOCC('p', 'c')
+  cktypeWAVEbytes* = aviTWOCC('w', 'b')
+  ckidAVIPADDING* = mmioFOURCC('J', 'U', 'N', 'K')
   AVIF_HASINDEX* = 0x00000010
   AVIF_MUSTUSEINDEX* = 0x00000020
   AVIF_ISINTERLEAVED* = 0x00000100
@@ -773,9 +894,11 @@
   SEARCH_FORWARD* = FIND_NEXT
   SEARCH_KEY* = FIND_KEY
   SEARCH_ANY* = FIND_ANY
-  comptypeDIB* = mmioFOURCC('D','I','B',' ')
+  comptypeDIB* = mmioFOURCC('D', 'I', 'B', ' ')
   AVIERR_OK* = 0
-template MAKE_AVIERR*(error: untyped): SCODE = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, error + 0x4000)
+template MAKE_AVIERR*(error: untyped): SCODE =
+  MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, error + 0x4000)
+
 const
   AVIERR_UNSUPPORTED* = MAKE_AVIERR(101)
   AVIERR_BADFORMAT* = MAKE_AVIERR(102)
@@ -817,108 +940,108 @@
   MCIWNDF_RECORD* = 0x2000
   MCIWNDF_NOERRORDLG* = 0x4000
   MCIWNDF_NOOPEN* = 0x8000
-  MCIWNDM_GETDEVICEID* = WM_USER+100
-  MCIWNDM_GETSTART* = WM_USER+103
-  MCIWNDM_GETLENGTH* = WM_USER+104
-  MCIWNDM_GETEND* = WM_USER+105
-  MCIWNDM_EJECT* = WM_USER+107
-  MCIWNDM_SETZOOM* = WM_USER+108
-  MCIWNDM_GETZOOM* = WM_USER+109
-  MCIWNDM_SETVOLUME* = WM_USER+110
-  MCIWNDM_GETVOLUME* = WM_USER+111
-  MCIWNDM_SETSPEED* = WM_USER+112
-  MCIWNDM_GETSPEED* = WM_USER+113
-  MCIWNDM_SETREPEAT* = WM_USER+114
-  MCIWNDM_GETREPEAT* = WM_USER+115
-  MCIWNDM_REALIZE* = WM_USER+118
-  MCIWNDM_VALIDATEMEDIA* = WM_USER+121
-  MCIWNDM_PLAYFROM* = WM_USER+122
-  MCIWNDM_PLAYTO* = WM_USER+123
-  MCIWNDM_GETPALETTE* = WM_USER+126
-  MCIWNDM_SETPALETTE* = WM_USER+127
-  MCIWNDM_SETTIMERS* = WM_USER+129
-  MCIWNDM_SETACTIVETIMER* = WM_USER+130
-  MCIWNDM_SETINACTIVETIMER* = WM_USER+131
-  MCIWNDM_GETACTIVETIMER* = WM_USER+132
-  MCIWNDM_GETINACTIVETIMER* = WM_USER+133
-  MCIWNDM_CHANGESTYLES* = WM_USER+135
-  MCIWNDM_GETSTYLES* = WM_USER+136
-  MCIWNDM_GETALIAS* = WM_USER+137
-  MCIWNDM_PLAYREVERSE* = WM_USER+139
-  MCIWNDM_GET_SOURCE* = WM_USER+140
-  MCIWNDM_PUT_SOURCE* = WM_USER+141
-  MCIWNDM_GET_DEST* = WM_USER+142
-  MCIWNDM_PUT_DEST* = WM_USER+143
-  MCIWNDM_CAN_PLAY* = WM_USER+144
-  MCIWNDM_CAN_WINDOW* = WM_USER+145
-  MCIWNDM_CAN_RECORD* = WM_USER+146
-  MCIWNDM_CAN_SAVE* = WM_USER+147
-  MCIWNDM_CAN_EJECT* = WM_USER+148
-  MCIWNDM_CAN_CONFIG* = WM_USER+149
-  MCIWNDM_PALETTEKICK* = WM_USER+150
-  MCIWNDM_OPENINTERFACE* = WM_USER+151
-  MCIWNDM_SETOWNER* = WM_USER+152
-  MCIWNDM_SENDSTRINGA* = WM_USER+101
-  MCIWNDM_GETPOSITIONA* = WM_USER+102
-  MCIWNDM_GETMODEA* = WM_USER+106
-  MCIWNDM_SETTIMEFORMATA* = WM_USER+119
-  MCIWNDM_GETTIMEFORMATA* = WM_USER+120
-  MCIWNDM_GETFILENAMEA* = WM_USER+124
-  MCIWNDM_GETDEVICEA* = WM_USER+125
-  MCIWNDM_GETERRORA* = WM_USER+128
-  MCIWNDM_NEWA* = WM_USER+134
-  MCIWNDM_RETURNSTRINGA* = WM_USER+138
-  MCIWNDM_OPENA* = WM_USER+153
-  MCIWNDM_SENDSTRINGW* = WM_USER+201
-  MCIWNDM_GETPOSITIONW* = WM_USER+202
-  MCIWNDM_GETMODEW* = WM_USER+206
-  MCIWNDM_SETTIMEFORMATW* = WM_USER+219
-  MCIWNDM_GETTIMEFORMATW* = WM_USER+220
-  MCIWNDM_GETFILENAMEW* = WM_USER+224
-  MCIWNDM_GETDEVICEW* = WM_USER+225
-  MCIWNDM_GETERRORW* = WM_USER+228
-  MCIWNDM_NEWW* = WM_USER+234
-  MCIWNDM_RETURNSTRINGW* = WM_USER+238
-  MCIWNDM_OPENW* = WM_USER+252
-  MCIWNDM_NOTIFYMODE* = WM_USER+200
-  MCIWNDM_NOTIFYPOS* = WM_USER+201
-  MCIWNDM_NOTIFYSIZE* = WM_USER+202
-  MCIWNDM_NOTIFYMEDIA* = WM_USER+203
-  MCIWNDM_NOTIFYERROR* = WM_USER+205
+  MCIWNDM_GETDEVICEID* = WM_USER + 100
+  MCIWNDM_GETSTART* = WM_USER + 103
+  MCIWNDM_GETLENGTH* = WM_USER + 104
+  MCIWNDM_GETEND* = WM_USER + 105
+  MCIWNDM_EJECT* = WM_USER + 107
+  MCIWNDM_SETZOOM* = WM_USER + 108
+  MCIWNDM_GETZOOM* = WM_USER + 109
+  MCIWNDM_SETVOLUME* = WM_USER + 110
+  MCIWNDM_GETVOLUME* = WM_USER + 111
+  MCIWNDM_SETSPEED* = WM_USER + 112
+  MCIWNDM_GETSPEED* = WM_USER + 113
+  MCIWNDM_SETREPEAT* = WM_USER + 114
+  MCIWNDM_GETREPEAT* = WM_USER + 115
+  MCIWNDM_REALIZE* = WM_USER + 118
+  MCIWNDM_VALIDATEMEDIA* = WM_USER + 121
+  MCIWNDM_PLAYFROM* = WM_USER + 122
+  MCIWNDM_PLAYTO* = WM_USER + 123
+  MCIWNDM_GETPALETTE* = WM_USER + 126
+  MCIWNDM_SETPALETTE* = WM_USER + 127
+  MCIWNDM_SETTIMERS* = WM_USER + 129
+  MCIWNDM_SETACTIVETIMER* = WM_USER + 130
+  MCIWNDM_SETINACTIVETIMER* = WM_USER + 131
+  MCIWNDM_GETACTIVETIMER* = WM_USER + 132
+  MCIWNDM_GETINACTIVETIMER* = WM_USER + 133
+  MCIWNDM_CHANGESTYLES* = WM_USER + 135
+  MCIWNDM_GETSTYLES* = WM_USER + 136
+  MCIWNDM_GETALIAS* = WM_USER + 137
+  MCIWNDM_PLAYREVERSE* = WM_USER + 139
+  MCIWNDM_GET_SOURCE* = WM_USER + 140
+  MCIWNDM_PUT_SOURCE* = WM_USER + 141
+  MCIWNDM_GET_DEST* = WM_USER + 142
+  MCIWNDM_PUT_DEST* = WM_USER + 143
+  MCIWNDM_CAN_PLAY* = WM_USER + 144
+  MCIWNDM_CAN_WINDOW* = WM_USER + 145
+  MCIWNDM_CAN_RECORD* = WM_USER + 146
+  MCIWNDM_CAN_SAVE* = WM_USER + 147
+  MCIWNDM_CAN_EJECT* = WM_USER + 148
+  MCIWNDM_CAN_CONFIG* = WM_USER + 149
+  MCIWNDM_PALETTEKICK* = WM_USER + 150
+  MCIWNDM_OPENINTERFACE* = WM_USER + 151
+  MCIWNDM_SETOWNER* = WM_USER + 152
+  MCIWNDM_SENDSTRINGA* = WM_USER + 101
+  MCIWNDM_GETPOSITIONA* = WM_USER + 102
+  MCIWNDM_GETMODEA* = WM_USER + 106
+  MCIWNDM_SETTIMEFORMATA* = WM_USER + 119
+  MCIWNDM_GETTIMEFORMATA* = WM_USER + 120
+  MCIWNDM_GETFILENAMEA* = WM_USER + 124
+  MCIWNDM_GETDEVICEA* = WM_USER + 125
+  MCIWNDM_GETERRORA* = WM_USER + 128
+  MCIWNDM_NEWA* = WM_USER + 134
+  MCIWNDM_RETURNSTRINGA* = WM_USER + 138
+  MCIWNDM_OPENA* = WM_USER + 153
+  MCIWNDM_SENDSTRINGW* = WM_USER + 201
+  MCIWNDM_GETPOSITIONW* = WM_USER + 202
+  MCIWNDM_GETMODEW* = WM_USER + 206
+  MCIWNDM_SETTIMEFORMATW* = WM_USER + 219
+  MCIWNDM_GETTIMEFORMATW* = WM_USER + 220
+  MCIWNDM_GETFILENAMEW* = WM_USER + 224
+  MCIWNDM_GETDEVICEW* = WM_USER + 225
+  MCIWNDM_GETERRORW* = WM_USER + 228
+  MCIWNDM_NEWW* = WM_USER + 234
+  MCIWNDM_RETURNSTRINGW* = WM_USER + 238
+  MCIWNDM_OPENW* = WM_USER + 252
+  MCIWNDM_NOTIFYMODE* = WM_USER + 200
+  MCIWNDM_NOTIFYPOS* = WM_USER + 201
+  MCIWNDM_NOTIFYSIZE* = WM_USER + 202
+  MCIWNDM_NOTIFYMEDIA* = WM_USER + 203
+  MCIWNDM_NOTIFYERROR* = WM_USER + 205
   MCIWND_START* = -1
   MCIWND_END* = -2
   DV_ERR_OK* = 0
   DV_ERR_BASE* = 1
   DV_ERR_NONSPECIFIC* = DV_ERR_BASE
-  DV_ERR_BADFORMAT* = DV_ERR_BASE+1
-  DV_ERR_STILLPLAYING* = DV_ERR_BASE+2
-  DV_ERR_UNPREPARED* = DV_ERR_BASE+3
-  DV_ERR_SYNC* = DV_ERR_BASE+4
-  DV_ERR_TOOMANYCHANNELS* = DV_ERR_BASE+5
-  DV_ERR_NOTDETECTED* = DV_ERR_BASE+6
-  DV_ERR_BADINSTALL* = DV_ERR_BASE+7
-  DV_ERR_CREATEPALETTE* = DV_ERR_BASE+8
-  DV_ERR_SIZEFIELD* = DV_ERR_BASE+9
-  DV_ERR_PARAM1* = DV_ERR_BASE+10
-  DV_ERR_PARAM2* = DV_ERR_BASE+11
-  DV_ERR_CONFIG1* = DV_ERR_BASE+12
-  DV_ERR_CONFIG2* = DV_ERR_BASE+13
-  DV_ERR_FLAGS* = DV_ERR_BASE+14
-  DV_ERR_13* = DV_ERR_BASE+15
-  DV_ERR_NOTSUPPORTED* = DV_ERR_BASE+16
-  DV_ERR_NOMEM* = DV_ERR_BASE+17
-  DV_ERR_ALLOCATED* = DV_ERR_BASE+18
-  DV_ERR_BADDEVICEID* = DV_ERR_BASE+19
-  DV_ERR_INVALHANDLE* = DV_ERR_BASE+20
-  DV_ERR_BADERRNUM* = DV_ERR_BASE+21
-  DV_ERR_NO_BUFFERS* = DV_ERR_BASE+22
-  DV_ERR_MEM_CONFLICT* = DV_ERR_BASE+23
-  DV_ERR_IO_CONFLICT* = DV_ERR_BASE+24
-  DV_ERR_DMA_CONFLICT* = DV_ERR_BASE+25
-  DV_ERR_INT_CONFLICT* = DV_ERR_BASE+26
-  DV_ERR_PROTECT_ONLY* = DV_ERR_BASE+27
-  DV_ERR_LASTERROR* = DV_ERR_BASE+27
-  DV_ERR_USER_MSG* = DV_ERR_BASE+1000
+  DV_ERR_BADFORMAT* = DV_ERR_BASE + 1
+  DV_ERR_STILLPLAYING* = DV_ERR_BASE + 2
+  DV_ERR_UNPREPARED* = DV_ERR_BASE + 3
+  DV_ERR_SYNC* = DV_ERR_BASE + 4
+  DV_ERR_TOOMANYCHANNELS* = DV_ERR_BASE + 5
+  DV_ERR_NOTDETECTED* = DV_ERR_BASE + 6
+  DV_ERR_BADINSTALL* = DV_ERR_BASE + 7
+  DV_ERR_CREATEPALETTE* = DV_ERR_BASE + 8
+  DV_ERR_SIZEFIELD* = DV_ERR_BASE + 9
+  DV_ERR_PARAM1* = DV_ERR_BASE + 10
+  DV_ERR_PARAM2* = DV_ERR_BASE + 11
+  DV_ERR_CONFIG1* = DV_ERR_BASE + 12
+  DV_ERR_CONFIG2* = DV_ERR_BASE + 13
+  DV_ERR_FLAGS* = DV_ERR_BASE + 14
+  DV_ERR_13* = DV_ERR_BASE + 15
+  DV_ERR_NOTSUPPORTED* = DV_ERR_BASE + 16
+  DV_ERR_NOMEM* = DV_ERR_BASE + 17
+  DV_ERR_ALLOCATED* = DV_ERR_BASE + 18
+  DV_ERR_BADDEVICEID* = DV_ERR_BASE + 19
+  DV_ERR_INVALHANDLE* = DV_ERR_BASE + 20
+  DV_ERR_BADERRNUM* = DV_ERR_BASE + 21
+  DV_ERR_NO_BUFFERS* = DV_ERR_BASE + 22
+  DV_ERR_MEM_CONFLICT* = DV_ERR_BASE + 23
+  DV_ERR_IO_CONFLICT* = DV_ERR_BASE + 24
+  DV_ERR_DMA_CONFLICT* = DV_ERR_BASE + 25
+  DV_ERR_INT_CONFLICT* = DV_ERR_BASE + 26
+  DV_ERR_PROTECT_ONLY* = DV_ERR_BASE + 27
+  DV_ERR_LASTERROR* = DV_ERR_BASE + 27
+  DV_ERR_USER_MSG* = DV_ERR_BASE + 1000
   DV_VM_OPEN* = MM_DRVM_OPEN
   DV_VM_CLOSE* = MM_DRVM_CLOSE
   DV_VM_DATA* = MM_DRVM_DATA
@@ -948,87 +1071,87 @@
   DVM_USER* = 0X4000
   DVM_CONFIGURE_START* = 0x1000
   DVM_CONFIGURE_END* = 0x1FFF
-  DVM_PALETTE* = DVM_CONFIGURE_START+1
-  DVM_FORMAT* = DVM_CONFIGURE_START+2
-  DVM_PALETTERGB555* = DVM_CONFIGURE_START+3
-  DVM_SRC_RECT* = DVM_CONFIGURE_START+4
-  DVM_DST_RECT* = DVM_CONFIGURE_START+5
+  DVM_PALETTE* = DVM_CONFIGURE_START + 1
+  DVM_FORMAT* = DVM_CONFIGURE_START + 2
+  DVM_PALETTERGB555* = DVM_CONFIGURE_START + 3
+  DVM_SRC_RECT* = DVM_CONFIGURE_START + 4
+  DVM_DST_RECT* = DVM_CONFIGURE_START + 5
   WM_CAP_START* = WM_USER
-  WM_CAP_UNICODE_START* = WM_USER+100
-  WM_CAP_GET_CAPSTREAMPTR* = WM_CAP_START+1
-  WM_CAP_SET_CALLBACK_ERRORW* = WM_CAP_UNICODE_START+2
-  WM_CAP_SET_CALLBACK_STATUSW* = WM_CAP_UNICODE_START+3
-  WM_CAP_SET_CALLBACK_ERRORA* = WM_CAP_START+2
-  WM_CAP_SET_CALLBACK_STATUSA* = WM_CAP_START+3
-  WM_CAP_SET_CALLBACK_YIELD* = WM_CAP_START+4
-  WM_CAP_SET_CALLBACK_FRAME* = WM_CAP_START+5
-  WM_CAP_SET_CALLBACK_VIDEOSTREAM* = WM_CAP_START+6
-  WM_CAP_SET_CALLBACK_WAVESTREAM* = WM_CAP_START+7
-  WM_CAP_GET_USER_DATA* = WM_CAP_START+8
-  WM_CAP_SET_USER_DATA* = WM_CAP_START+9
-  WM_CAP_DRIVER_CONNECT* = WM_CAP_START+10
-  WM_CAP_DRIVER_DISCONNECT* = WM_CAP_START+11
-  WM_CAP_DRIVER_GET_NAMEA* = WM_CAP_START+12
-  WM_CAP_DRIVER_GET_VERSIONA* = WM_CAP_START+13
-  WM_CAP_DRIVER_GET_NAMEW* = WM_CAP_UNICODE_START+12
-  WM_CAP_DRIVER_GET_VERSIONW* = WM_CAP_UNICODE_START+13
-  WM_CAP_DRIVER_GET_CAPS* = WM_CAP_START+14
-  WM_CAP_FILE_SET_CAPTURE_FILEA* = WM_CAP_START+20
-  WM_CAP_FILE_GET_CAPTURE_FILEA* = WM_CAP_START+21
-  WM_CAP_FILE_SAVEASA* = WM_CAP_START+23
-  WM_CAP_FILE_SAVEDIBA* = WM_CAP_START+25
-  WM_CAP_FILE_SET_CAPTURE_FILEW* = WM_CAP_UNICODE_START+20
-  WM_CAP_FILE_GET_CAPTURE_FILEW* = WM_CAP_UNICODE_START+21
-  WM_CAP_FILE_SAVEASW* = WM_CAP_UNICODE_START+23
-  WM_CAP_FILE_SAVEDIBW* = WM_CAP_UNICODE_START+25
-  WM_CAP_FILE_ALLOCATE* = WM_CAP_START+22
-  WM_CAP_FILE_SET_INFOCHUNK* = WM_CAP_START+24
-  WM_CAP_EDIT_COPY* = WM_CAP_START+30
-  WM_CAP_SET_AUDIOFORMAT* = WM_CAP_START+35
-  WM_CAP_GET_AUDIOFORMAT* = WM_CAP_START+36
-  WM_CAP_DLG_VIDEOFORMAT* = WM_CAP_START+41
-  WM_CAP_DLG_VIDEOSOURCE* = WM_CAP_START+42
-  WM_CAP_DLG_VIDEODISPLAY* = WM_CAP_START+43
-  WM_CAP_GET_VIDEOFORMAT* = WM_CAP_START+44
-  WM_CAP_SET_VIDEOFORMAT* = WM_CAP_START+45
-  WM_CAP_DLG_VIDEOCOMPRESSION* = WM_CAP_START+46
-  WM_CAP_SET_PREVIEW* = WM_CAP_START+50
-  WM_CAP_SET_OVERLAY* = WM_CAP_START+51
-  WM_CAP_SET_PREVIEWRATE* = WM_CAP_START+52
-  WM_CAP_SET_SCALE* = WM_CAP_START+53
-  WM_CAP_GET_STATUS* = WM_CAP_START+54
-  WM_CAP_SET_SCROLL* = WM_CAP_START+55
-  WM_CAP_GRAB_FRAME* = WM_CAP_START+60
-  WM_CAP_GRAB_FRAME_NOSTOP* = WM_CAP_START+61
-  WM_CAP_SEQUENCE* = WM_CAP_START+62
-  WM_CAP_SEQUENCE_NOFILE* = WM_CAP_START+63
-  WM_CAP_SET_SEQUENCE_SETUP* = WM_CAP_START+64
-  WM_CAP_GET_SEQUENCE_SETUP* = WM_CAP_START+65
-  WM_CAP_SET_MCI_DEVICEA* = WM_CAP_START+66
-  WM_CAP_GET_MCI_DEVICEA* = WM_CAP_START+67
-  WM_CAP_SET_MCI_DEVICEW* = WM_CAP_UNICODE_START+66
-  WM_CAP_GET_MCI_DEVICEW* = WM_CAP_UNICODE_START+67
-  WM_CAP_STOP* = WM_CAP_START+68
-  WM_CAP_ABORT* = WM_CAP_START+69
-  WM_CAP_SINGLE_FRAME_OPEN* = WM_CAP_START+70
-  WM_CAP_SINGLE_FRAME_CLOSE* = WM_CAP_START+71
-  WM_CAP_SINGLE_FRAME* = WM_CAP_START+72
-  WM_CAP_PAL_OPENA* = WM_CAP_START+80
-  WM_CAP_PAL_SAVEA* = WM_CAP_START+81
-  WM_CAP_PAL_OPENW* = WM_CAP_UNICODE_START+80
-  WM_CAP_PAL_SAVEW* = WM_CAP_UNICODE_START+81
-  WM_CAP_PAL_PASTE* = WM_CAP_START+82
-  WM_CAP_PAL_AUTOCREATE* = WM_CAP_START+83
-  WM_CAP_PAL_MANUALCREATE* = WM_CAP_START+84
-  WM_CAP_SET_CALLBACK_CAPCONTROL* = WM_CAP_START+85
+  WM_CAP_UNICODE_START* = WM_USER + 100
+  WM_CAP_GET_CAPSTREAMPTR* = WM_CAP_START + 1
+  WM_CAP_SET_CALLBACK_ERRORW* = WM_CAP_UNICODE_START + 2
+  WM_CAP_SET_CALLBACK_STATUSW* = WM_CAP_UNICODE_START + 3
+  WM_CAP_SET_CALLBACK_ERRORA* = WM_CAP_START + 2
+  WM_CAP_SET_CALLBACK_STATUSA* = WM_CAP_START + 3
+  WM_CAP_SET_CALLBACK_YIELD* = WM_CAP_START + 4
+  WM_CAP_SET_CALLBACK_FRAME* = WM_CAP_START + 5
+  WM_CAP_SET_CALLBACK_VIDEOSTREAM* = WM_CAP_START + 6
+  WM_CAP_SET_CALLBACK_WAVESTREAM* = WM_CAP_START + 7
+  WM_CAP_GET_USER_DATA* = WM_CAP_START + 8
+  WM_CAP_SET_USER_DATA* = WM_CAP_START + 9
+  WM_CAP_DRIVER_CONNECT* = WM_CAP_START + 10
+  WM_CAP_DRIVER_DISCONNECT* = WM_CAP_START + 11
+  WM_CAP_DRIVER_GET_NAMEA* = WM_CAP_START + 12
+  WM_CAP_DRIVER_GET_VERSIONA* = WM_CAP_START + 13
+  WM_CAP_DRIVER_GET_NAMEW* = WM_CAP_UNICODE_START + 12
+  WM_CAP_DRIVER_GET_VERSIONW* = WM_CAP_UNICODE_START + 13
+  WM_CAP_DRIVER_GET_CAPS* = WM_CAP_START + 14
+  WM_CAP_FILE_SET_CAPTURE_FILEA* = WM_CAP_START + 20
+  WM_CAP_FILE_GET_CAPTURE_FILEA* = WM_CAP_START + 21
+  WM_CAP_FILE_SAVEASA* = WM_CAP_START + 23
+  WM_CAP_FILE_SAVEDIBA* = WM_CAP_START + 25
+  WM_CAP_FILE_SET_CAPTURE_FILEW* = WM_CAP_UNICODE_START + 20
+  WM_CAP_FILE_GET_CAPTURE_FILEW* = WM_CAP_UNICODE_START + 21
+  WM_CAP_FILE_SAVEASW* = WM_CAP_UNICODE_START + 23
+  WM_CAP_FILE_SAVEDIBW* = WM_CAP_UNICODE_START + 25
+  WM_CAP_FILE_ALLOCATE* = WM_CAP_START + 22
+  WM_CAP_FILE_SET_INFOCHUNK* = WM_CAP_START + 24
+  WM_CAP_EDIT_COPY* = WM_CAP_START + 30
+  WM_CAP_SET_AUDIOFORMAT* = WM_CAP_START + 35
+  WM_CAP_GET_AUDIOFORMAT* = WM_CAP_START + 36
+  WM_CAP_DLG_VIDEOFORMAT* = WM_CAP_START + 41
+  WM_CAP_DLG_VIDEOSOURCE* = WM_CAP_START + 42
+  WM_CAP_DLG_VIDEODISPLAY* = WM_CAP_START + 43
+  WM_CAP_GET_VIDEOFORMAT* = WM_CAP_START + 44
+  WM_CAP_SET_VIDEOFORMAT* = WM_CAP_START + 45
+  WM_CAP_DLG_VIDEOCOMPRESSION* = WM_CAP_START + 46
+  WM_CAP_SET_PREVIEW* = WM_CAP_START + 50
+  WM_CAP_SET_OVERLAY* = WM_CAP_START + 51
+  WM_CAP_SET_PREVIEWRATE* = WM_CAP_START + 52
+  WM_CAP_SET_SCALE* = WM_CAP_START + 53
+  WM_CAP_GET_STATUS* = WM_CAP_START + 54
+  WM_CAP_SET_SCROLL* = WM_CAP_START + 55
+  WM_CAP_GRAB_FRAME* = WM_CAP_START + 60
+  WM_CAP_GRAB_FRAME_NOSTOP* = WM_CAP_START + 61
+  WM_CAP_SEQUENCE* = WM_CAP_START + 62
+  WM_CAP_SEQUENCE_NOFILE* = WM_CAP_START + 63
+  WM_CAP_SET_SEQUENCE_SETUP* = WM_CAP_START + 64
+  WM_CAP_GET_SEQUENCE_SETUP* = WM_CAP_START + 65
+  WM_CAP_SET_MCI_DEVICEA* = WM_CAP_START + 66
+  WM_CAP_GET_MCI_DEVICEA* = WM_CAP_START + 67
+  WM_CAP_SET_MCI_DEVICEW* = WM_CAP_UNICODE_START + 66
+  WM_CAP_GET_MCI_DEVICEW* = WM_CAP_UNICODE_START + 67
+  WM_CAP_STOP* = WM_CAP_START + 68
+  WM_CAP_ABORT* = WM_CAP_START + 69
+  WM_CAP_SINGLE_FRAME_OPEN* = WM_CAP_START + 70
+  WM_CAP_SINGLE_FRAME_CLOSE* = WM_CAP_START + 71
+  WM_CAP_SINGLE_FRAME* = WM_CAP_START + 72
+  WM_CAP_PAL_OPENA* = WM_CAP_START + 80
+  WM_CAP_PAL_SAVEA* = WM_CAP_START + 81
+  WM_CAP_PAL_OPENW* = WM_CAP_UNICODE_START + 80
+  WM_CAP_PAL_SAVEW* = WM_CAP_UNICODE_START + 81
+  WM_CAP_PAL_PASTE* = WM_CAP_START + 82
+  WM_CAP_PAL_AUTOCREATE* = WM_CAP_START + 83
+  WM_CAP_PAL_MANUALCREATE* = WM_CAP_START + 84
+  WM_CAP_SET_CALLBACK_CAPCONTROL* = WM_CAP_START + 85
   WM_CAP_UNICODE_END* = WM_CAP_PAL_SAVEW
   WM_CAP_END* = WM_CAP_UNICODE_END
   AVSTREAMMASTER_AUDIO* = 0
   AVSTREAMMASTER_NONE* = 1
   CONTROLCALLBACK_PREROLL* = 1
   CONTROLCALLBACK_CAPTURING* = 2
-  infotypeDIGITIZATION_TIME* = mmioFOURCC('I','D','I','T')
-  infotypeSMPTE_TIME* = mmioFOURCC('I','S','M','P')
+  infotypeDIGITIZATION_TIME* = mmioFOURCC('I', 'D', 'I', 'T')
+  infotypeSMPTE_TIME* = mmioFOURCC('I', 'S', 'M', 'P')
   IDS_CAP_BEGIN* = 300
   IDS_CAP_END* = 301
   IDS_CAP_INFO* = 401
@@ -1087,23 +1210,23 @@
   IDS_CAP_STAT_VIDEOAUDIO* = 511
   IDS_CAP_STAT_VIDEOONLY* = 512
   IDS_CAP_STAT_FRAMESDROPPED* = 513
-  DRV_MAPPER_PREFERRED_INPUT_GET* = DRV_USER+0
-  DRV_MAPPER_PREFERRED_OUTPUT_GET* = DRV_USER+2
+  DRV_MAPPER_PREFERRED_INPUT_GET* = DRV_USER + 0
+  DRV_MAPPER_PREFERRED_OUTPUT_GET* = DRV_USER + 2
   DRVM_MAPPER* = 0x2000
-  DRVM_MAPPER_STATUS* = DRVM_MAPPER+0
-  WIDM_MAPPER_STATUS* = DRVM_MAPPER_STATUS+0
+  DRVM_MAPPER_STATUS* = DRVM_MAPPER + 0
+  WIDM_MAPPER_STATUS* = DRVM_MAPPER_STATUS + 0
   WAVEIN_MAPPER_STATUS_DEVICE* = 0
   WAVEIN_MAPPER_STATUS_MAPPED* = 1
   WAVEIN_MAPPER_STATUS_FORMAT* = 2
-  WODM_MAPPER_STATUS* = DRVM_MAPPER_STATUS+0
+  WODM_MAPPER_STATUS* = DRVM_MAPPER_STATUS + 0
   WAVEOUT_MAPPER_STATUS_DEVICE* = 0
   WAVEOUT_MAPPER_STATUS_MAPPED* = 1
   WAVEOUT_MAPPER_STATUS_FORMAT* = 2
   ACMERR_BASE* = 512
-  ACMERR_NOTPOSSIBLE* = ACMERR_BASE+0
-  ACMERR_BUSY* = ACMERR_BASE+1
-  ACMERR_UNPREPARED* = ACMERR_BASE+2
-  ACMERR_CANCELED* = ACMERR_BASE+3
+  ACMERR_NOTPOSSIBLE* = ACMERR_BASE + 0
+  ACMERR_BUSY* = ACMERR_BASE + 1
+  ACMERR_UNPREPARED* = ACMERR_BASE + 2
+  ACMERR_CANCELED* = ACMERR_BASE + 3
   MM_ACM_OPEN* = MM_STREAM_OPEN
   MM_ACM_CLOSE* = MM_STREAM_CLOSE
   MM_ACM_DONE* = MM_STREAM_DONE
@@ -1132,19 +1255,19 @@
   ACM_DRIVERADDF_TYPEMASK* = 0x00000007
   ACM_DRIVERADDF_LOCAL* = 0x00000000
   ACM_DRIVERADDF_GLOBAL* = 0x00000008
-  ACMDM_USER* = DRV_USER+0x0000
-  ACMDM_RESERVED_LOW* = DRV_USER+0x2000
-  ACMDM_RESERVED_HIGH* = DRV_USER+0x2FFF
+  ACMDM_USER* = DRV_USER + 0x0000
+  ACMDM_RESERVED_LOW* = DRV_USER + 0x2000
+  ACMDM_RESERVED_HIGH* = DRV_USER + 0x2FFF
   ACMDM_BASE* = ACMDM_RESERVED_LOW
-  ACMDM_DRIVER_ABOUT* = ACMDM_BASE+11
+  ACMDM_DRIVER_ABOUT* = ACMDM_BASE + 11
   ACM_DRIVERPRIORITYF_ENABLE* = 0x00000001
   ACM_DRIVERPRIORITYF_DISABLE* = 0x00000002
   ACM_DRIVERPRIORITYF_ABLEMASK* = 0x00000003
   ACM_DRIVERPRIORITYF_BEGIN* = 0x00010000
   ACM_DRIVERPRIORITYF_END* = 0x00020000
   ACM_DRIVERPRIORITYF_DEFERMASK* = 0x00030000
-  ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC* = mmioFOURCC('a','u','d','c')
-  ACMDRIVERDETAILS_FCCCOMP_UNDEFINED* = mmioFOURCC('\0','\0','\0','\0')
+  ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC* = mmioFOURCC('a', 'u', 'd', 'c')
+  ACMDRIVERDETAILS_FCCCOMP_UNDEFINED* = mmioFOURCC('\0', '\0', '\0', '\0')
   ACMDRIVERDETAILS_SUPPORTF_CODEC* = 0x00000001
   ACMDRIVERDETAILS_SUPPORTF_CONVERTER* = 0x00000002
   ACMDRIVERDETAILS_SUPPORTF_FILTER* = 0x00000004
@@ -1181,9 +1304,9 @@
   ACMHELPMSGCONTEXTHELPW* = "acmchoose_contexthelp"
   MM_ACM_FORMATCHOOSE* = 0x8000
   FORMATCHOOSE_MESSAGE* = 0
-  FORMATCHOOSE_FORMATTAG_VERIFY* = FORMATCHOOSE_MESSAGE+0
-  FORMATCHOOSE_FORMAT_VERIFY* = FORMATCHOOSE_MESSAGE+1
-  FORMATCHOOSE_CUSTOM_VERIFY* = FORMATCHOOSE_MESSAGE+2
+  FORMATCHOOSE_FORMATTAG_VERIFY* = FORMATCHOOSE_MESSAGE + 0
+  FORMATCHOOSE_FORMAT_VERIFY* = FORMATCHOOSE_MESSAGE + 1
+  FORMATCHOOSE_CUSTOM_VERIFY* = FORMATCHOOSE_MESSAGE + 2
   ACMFORMATCHOOSE_STYLEF_SHOWHELP* = 0x00000004
   ACMFORMATCHOOSE_STYLEF_ENABLEHOOK* = 0x00000008
   ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE* = 0x00000010
@@ -1200,9 +1323,9 @@
   ACM_FILTERENUMF_DWFILTERTAG* = 0x00010000
   MM_ACM_FILTERCHOOSE* = 0x8000
   FILTERCHOOSE_MESSAGE* = 0
-  FILTERCHOOSE_FILTERTAG_VERIFY* = FILTERCHOOSE_MESSAGE+0
-  FILTERCHOOSE_FILTER_VERIFY* = FILTERCHOOSE_MESSAGE+1
-  FILTERCHOOSE_CUSTOM_VERIFY* = FILTERCHOOSE_MESSAGE+2
+  FILTERCHOOSE_FILTERTAG_VERIFY* = FILTERCHOOSE_MESSAGE + 0
+  FILTERCHOOSE_FILTER_VERIFY* = FILTERCHOOSE_MESSAGE + 1
+  FILTERCHOOSE_CUSTOM_VERIFY* = FILTERCHOOSE_MESSAGE + 2
   ACMFILTERCHOOSE_STYLEF_SHOWHELP* = 0x00000004
   ACMFILTERCHOOSE_STYLEF_ENABLEHOOK* = 0x00000008
   ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE* = 0x00000010
@@ -1222,24 +1345,66 @@
   ACM_STREAMCONVERTF_START* = 0x00000010
   ACM_STREAMCONVERTF_END* = 0x00000020
 type
-  AVISAVECALLBACK* = proc (P1: int32): WINBOOL {.stdcall.}
-  CAPYIELDCALLBACK* = proc (hWnd: HWND): LRESULT {.stdcall.}
-  CAPSTATUSCALLBACKW* = proc (hWnd: HWND, nID: int32, lpsz: LPCWSTR): LRESULT {.stdcall.}
-  CAPERRORCALLBACKW* = proc (hWnd: HWND, nID: int32, lpsz: LPCWSTR): LRESULT {.stdcall.}
-  CAPSTATUSCALLBACKA* = proc (hWnd: HWND, nID: int32, lpsz: LPCSTR): LRESULT {.stdcall.}
-  CAPERRORCALLBACKA* = proc (hWnd: HWND, nID: int32, lpsz: LPCSTR): LRESULT {.stdcall.}
-  CAPVIDEOCALLBACK* = proc (hWnd: HWND, lpVHdr: LPVIDEOHDR): LRESULT {.stdcall.}
-  CAPWAVECALLBACK* = proc (hWnd: HWND, lpWHdr: LPWAVEHDR): LRESULT {.stdcall.}
-  CAPCONTROLCALLBACK* = proc (hWnd: HWND, nState: int32): LRESULT {.stdcall.}
-  ACMDRIVERENUMCB* = proc (hadid: HACMDRIVERID, dwInstance: DWORD_PTR, fdwSupport: DWORD): WINBOOL {.stdcall.}
-  ACMFORMATTAGENUMCBA* = proc (hadid: HACMDRIVERID, paftd: LPACMFORMATTAGDETAILSA, dwInstance: DWORD_PTR, fdwSupport: DWORD): WINBOOL {.stdcall.}
-  ACMFORMATTAGENUMCBW* = proc (hadid: HACMDRIVERID, paftd: LPACMFORMATTAGDETAILSW, dwInstance: DWORD_PTR, fdwSupport: DWORD): WINBOOL {.stdcall.}
-  ACMFORMATENUMCBA* = proc (hadid: HACMDRIVERID, pafd: LPACMFORMATDETAILSA, dwInstance: DWORD_PTR, fdwSupport: DWORD): WINBOOL {.stdcall.}
-  ACMFORMATENUMCBW* = proc (hadid: HACMDRIVERID, pafd: LPACMFORMATDETAILSW, dwInstance: DWORD_PTR, fdwSupport: DWORD): WINBOOL {.stdcall.}
-  ACMFILTERTAGENUMCBA* = proc (hadid: HACMDRIVERID, paftd: LPACMFILTERTAGDETAILSA, dwInstance: DWORD_PTR, fdwSupport: DWORD): WINBOOL {.stdcall.}
-  ACMFILTERTAGENUMCBW* = proc (hadid: HACMDRIVERID, paftd: LPACMFILTERTAGDETAILSW, dwInstance: DWORD_PTR, fdwSupport: DWORD): WINBOOL {.stdcall.}
-  ACMFILTERENUMCBA* = proc (hadid: HACMDRIVERID, pafd: LPACMFILTERDETAILSA, dwInstance: DWORD_PTR, fdwSupport: DWORD): WINBOOL {.stdcall.}
-  ACMFILTERENUMCBW* = proc (hadid: HACMDRIVERID, pafd: LPACMFILTERDETAILSW, dwInstance: DWORD_PTR, fdwSupport: DWORD): WINBOOL {.stdcall.}
+  AVISAVECALLBACK* = proc(P1: int32): WINBOOL {.stdcall.}
+  CAPYIELDCALLBACK* = proc(hWnd: HWND): LRESULT {.stdcall.}
+  CAPSTATUSCALLBACKW* = proc(hWnd: HWND, nID: int32, lpsz: LPCWSTR): LRESULT {.stdcall.}
+  CAPERRORCALLBACKW* = proc(hWnd: HWND, nID: int32, lpsz: LPCWSTR): LRESULT {.stdcall.}
+  CAPSTATUSCALLBACKA* = proc(hWnd: HWND, nID: int32, lpsz: LPCSTR): LRESULT {.stdcall.}
+  CAPERRORCALLBACKA* = proc(hWnd: HWND, nID: int32, lpsz: LPCSTR): LRESULT {.stdcall.}
+  CAPVIDEOCALLBACK* = proc(hWnd: HWND, lpVHdr: LPVIDEOHDR): LRESULT {.stdcall.}
+  CAPWAVECALLBACK* = proc(hWnd: HWND, lpWHdr: LPWAVEHDR): LRESULT {.stdcall.}
+  CAPCONTROLCALLBACK* = proc(hWnd: HWND, nState: int32): LRESULT {.stdcall.}
+  ACMDRIVERENUMCB* = proc(
+    hadid: HACMDRIVERID, dwInstance: DWORD_PTR, fdwSupport: DWORD
+  ): WINBOOL {.stdcall.}
+  ACMFORMATTAGENUMCBA* = proc(
+    hadid: HACMDRIVERID,
+    paftd: LPACMFORMATTAGDETAILSA,
+    dwInstance: DWORD_PTR,
+    fdwSupport: DWORD,
+  ): WINBOOL {.stdcall.}
+  ACMFORMATTAGENUMCBW* = proc(
+    hadid: HACMDRIVERID,
+    paftd: LPACMFORMATTAGDETAILSW,
+    dwInstance: DWORD_PTR,
+    fdwSupport: DWORD,
+  ): WINBOOL {.stdcall.}
+  ACMFORMATENUMCBA* = proc(
+    hadid: HACMDRIVERID,
+    pafd: LPACMFORMATDETAILSA,
+    dwInstance: DWORD_PTR,
+    fdwSupport: DWORD,
+  ): WINBOOL {.stdcall.}
+  ACMFORMATENUMCBW* = proc(
+    hadid: HACMDRIVERID,
+    pafd: LPACMFORMATDETAILSW,
+    dwInstance: DWORD_PTR,
+    fdwSupport: DWORD,
+  ): WINBOOL {.stdcall.}
+  ACMFILTERTAGENUMCBA* = proc(
+    hadid: HACMDRIVERID,
+    paftd: LPACMFILTERTAGDETAILSA,
+    dwInstance: DWORD_PTR,
+    fdwSupport: DWORD,
+  ): WINBOOL {.stdcall.}
+  ACMFILTERTAGENUMCBW* = proc(
+    hadid: HACMDRIVERID,
+    paftd: LPACMFILTERTAGDETAILSW,
+    dwInstance: DWORD_PTR,
+    fdwSupport: DWORD,
+  ): WINBOOL {.stdcall.}
+  ACMFILTERENUMCBA* = proc(
+    hadid: HACMDRIVERID,
+    pafd: LPACMFILTERDETAILSA,
+    dwInstance: DWORD_PTR,
+    fdwSupport: DWORD,
+  ): WINBOOL {.stdcall.}
+  ACMFILTERENUMCBW* = proc(
+    hadid: HACMDRIVERID,
+    pafd: LPACMFILTERDETAILSW,
+    dwInstance: DWORD_PTR,
+    fdwSupport: DWORD,
+  ): WINBOOL {.stdcall.}
   TICOPEN* {.pure.} = object
     dwSize*: DWORD
     fccType*: DWORD
@@ -1250,6 +1415,7 @@
     pV1Reserved*: LPVOID
     pV2Reserved*: LPVOID
     dnDevNode*: DWORD
+
   TICINFO* {.pure.} = object
     dwSize*: DWORD
     fccType*: DWORD
@@ -1260,6 +1426,7 @@
     szName*: array[16, WCHAR]
     szDescription*: array[128, WCHAR]
     szDriver*: array[128, WCHAR]
+
   TICCOMPRESS* {.pure.} = object
     dwFlags*: DWORD
     lpbiOutput*: LPBITMAPINFOHEADER
@@ -1273,6 +1440,7 @@
     dwQuality*: DWORD
     lpbiPrev*: LPBITMAPINFOHEADER
     lpPrev*: LPVOID
+
   ICCOMPRESSFRAMES* {.pure.} = object
     dwFlags*: DWORD
     lpbiOutput*: LPBITMAPINFOHEADER
@@ -1288,12 +1456,16 @@
     dwScale*: DWORD
     dwOverheadPerFrame*: DWORD
     dwReserved2*: DWORD
-    GetData*: proc(lInput: LPARAM, lFrame: LONG, lpBits: LPVOID, len: LONG): LONG {.stdcall.}
-    PutData*: proc(lOutput: LPARAM, lFrame: LONG, lpBits: LPVOID, len: LONG): LONG {.stdcall.}
+    GetData*:
+      proc(lInput: LPARAM, lFrame: LONG, lpBits: LPVOID, len: LONG): LONG {.stdcall.}
+    PutData*:
+      proc(lOutput: LPARAM, lFrame: LONG, lpBits: LPVOID, len: LONG): LONG {.stdcall.}
+
   ICSETSTATUSPROC* {.pure.} = object
     dwFlags*: DWORD
     lParam*: LPARAM
     Status*: proc(lParam: LPARAM, message: UINT, l: LONG): LONG {.stdcall.}
+
   TICDECOMPRESS* {.pure.} = object
     dwFlags*: DWORD
     lpbiInput*: LPBITMAPINFOHEADER
@@ -1301,6 +1473,7 @@
     lpbiOutput*: LPBITMAPINFOHEADER
     lpOutput*: LPVOID
     ckid*: DWORD
+
   ICDECOMPRESSEX* {.pure.} = object
     dwFlags*: DWORD
     lpbiSrc*: LPBITMAPINFOHEADER
@@ -1315,6 +1488,7 @@
     ySrc*: int32
     dxSrc*: int32
     dySrc*: int32
+
   TICDRAWBEGIN* {.pure.} = object
     dwFlags*: DWORD
     hpal*: HPALETTE
@@ -1331,12 +1505,14 @@
     dySrc*: int32
     dwRate*: DWORD
     dwScale*: DWORD
+
   TICDRAW* {.pure.} = object
     dwFlags*: DWORD
     lpFormat*: LPVOID
     lpData*: LPVOID
     cbData*: DWORD
     lTime*: LONG
+
   ICDRAWSUGGEST* {.pure.} = object
     lpbiIn*: LPBITMAPINFOHEADER
     lpbiSuggest*: LPBITMAPINFOHEADER
@@ -1345,11 +1521,13 @@
     dxDst*: int32
     dyDst*: int32
     hicDecompressor*: HIC
+
   ICPALETTE* {.pure.} = object
     dwFlags*: DWORD
     iStart*: int32
     iLen*: int32
     lppe*: LPPALETTEENTRY
+
   MainAVIHeader* {.pure.} = object
     dwMicroSecPerFrame*: DWORD
     dwMaxBytesPerSec*: DWORD
@@ -1362,6 +1540,7 @@
     dwWidth*: DWORD
     dwHeight*: DWORD
     dwReserved*: array[4, DWORD]
+
   AVIStreamHeader* {.pure.} = object
     fccType*: FOURCC
     fccHandler*: FOURCC
@@ -1377,532 +1556,1766 @@
     dwQuality*: DWORD
     dwSampleSize*: DWORD
     rcFrame*: RECT
+
   AVIINDEXENTRY* {.pure.} = object
     ckid*: DWORD
     dwFlags*: DWORD
     dwChunkOffset*: DWORD
     dwChunkLength*: DWORD
+
   AVIPALCHANGE* {.pure.} = object
     bFirstEntry*: BYTE
     bNumEntries*: BYTE
     wFlags*: WORD
     peNew*: UncheckedArray[PALETTEENTRY]
+
 proc VideoForWindowsVersion*(): DWORD {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICInfo*(fccType: DWORD, fccHandler: DWORD, lpicinfo: ptr TICINFO): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICInstall*(fccType: DWORD, fccHandler: DWORD, lParam: LPARAM, szDesc: LPSTR, wFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICRemove*(fccType: DWORD, fccHandler: DWORD, wFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICGetInfo*(hic: HIC, picinfo: ptr TICINFO, cb: DWORD): LRESULT {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICOpen*(fccType: DWORD, fccHandler: DWORD, wMode: UINT): HIC {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICOpenFunction*(fccType: DWORD, fccHandler: DWORD, wMode: UINT, lpfnHandler: FARPROC): HIC {.winapi, stdcall, dynlib: "msvfw32", importc.}
+proc ICInfo*(
+  fccType: DWORD, fccHandler: DWORD, lpicinfo: ptr TICINFO
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc ICInstall*(
+  fccType: DWORD, fccHandler: DWORD, lParam: LPARAM, szDesc: LPSTR, wFlags: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc ICRemove*(
+  fccType: DWORD, fccHandler: DWORD, wFlags: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc ICGetInfo*(
+  hic: HIC, picinfo: ptr TICINFO, cb: DWORD
+): LRESULT {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc ICOpen*(
+  fccType: DWORD, fccHandler: DWORD, wMode: UINT
+): HIC {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc ICOpenFunction*(
+  fccType: DWORD, fccHandler: DWORD, wMode: UINT, lpfnHandler: FARPROC
+): HIC {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
 proc ICClose*(hic: HIC): LRESULT {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICSendMessage*(hic: HIC, msg: UINT, dw1: DWORD_PTR, dw2: DWORD_PTR): LRESULT {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICCompress*(hic: HIC, dwFlags: DWORD, lpbiOutput: LPBITMAPINFOHEADER, lpData: LPVOID, lpbiInput: LPBITMAPINFOHEADER, lpBits: LPVOID, lpckid: LPDWORD, lpdwFlags: LPDWORD, lFrameNum: LONG, dwFrameSize: DWORD, dwQuality: DWORD, lpbiPrev: LPBITMAPINFOHEADER, lpPrev: LPVOID): DWORD {.winapi, cdecl, dynlib: "msvfw32", importc.}
-proc ICDecompress*(hic: HIC, dwFlags: DWORD, lpbiFormat: LPBITMAPINFOHEADER, lpData: LPVOID, lpbi: LPBITMAPINFOHEADER, lpBits: LPVOID): DWORD {.winapi, cdecl, dynlib: "msvfw32", importc.}
-proc ICDrawBegin*(hic: HIC, dwFlags: DWORD, hpal: HPALETTE, hwnd: HWND, hdc: HDC, xDst: int32, yDst: int32, dxDst: int32, dyDst: int32, lpbi: LPBITMAPINFOHEADER, xSrc: int32, ySrc: int32, dxSrc: int32, dySrc: int32, dwRate: DWORD, dwScale: DWORD): DWORD {.winapi, cdecl, dynlib: "msvfw32", importc.}
-proc ICDraw*(hic: HIC, dwFlags: DWORD, lpFormat: LPVOID, lpData: LPVOID, cbData: DWORD, lTime: LONG): DWORD {.winapi, cdecl, dynlib: "msvfw32", importc.}
-proc ICLocate*(fccType: DWORD, fccHandler: DWORD, lpbiIn: LPBITMAPINFOHEADER, lpbiOut: LPBITMAPINFOHEADER, wFlags: WORD): HIC {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICGetDisplayFormat*(hic: HIC, lpbiIn: LPBITMAPINFOHEADER, lpbiOut: LPBITMAPINFOHEADER, BitDepth: int32, dx: int32, dy: int32): HIC {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICImageCompress*(hic: HIC, uiFlags: UINT, lpbiIn: LPBITMAPINFO, lpBits: LPVOID, lpbiOut: LPBITMAPINFO, lQuality: LONG, plSize: ptr LONG): HANDLE {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICImageDecompress*(hic: HIC, uiFlags: UINT, lpbiIn: LPBITMAPINFO, lpBits: LPVOID, lpbiOut: LPBITMAPINFO): HANDLE {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICCompressorChoose*(hwnd: HWND, uiFlags: UINT, pvIn: LPVOID, lpData: LPVOID, pc: PCOMPVARS, lpszTitle: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICSeqCompressFrameStart*(pc: PCOMPVARS, lpbiIn: LPBITMAPINFO): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICSeqCompressFrameEnd*(pc: PCOMPVARS): void {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICSeqCompressFrame*(pc: PCOMPVARS, uiFlags: UINT, lpBits: LPVOID, pfKey: ptr WINBOOL, plSize: ptr LONG): LPVOID {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc ICCompressorFree*(pc: PCOMPVARS): void {.winapi, stdcall, dynlib: "msvfw32", importc.}
+proc ICSendMessage*(
+  hic: HIC, msg: UINT, dw1: DWORD_PTR, dw2: DWORD_PTR
+): LRESULT {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc ICCompress*(
+  hic: HIC,
+  dwFlags: DWORD,
+  lpbiOutput: LPBITMAPINFOHEADER,
+  lpData: LPVOID,
+  lpbiInput: LPBITMAPINFOHEADER,
+  lpBits: LPVOID,
+  lpckid: LPDWORD,
+  lpdwFlags: LPDWORD,
+  lFrameNum: LONG,
+  dwFrameSize: DWORD,
+  dwQuality: DWORD,
+  lpbiPrev: LPBITMAPINFOHEADER,
+  lpPrev: LPVOID,
+): DWORD {.winapi, cdecl, dynlib: "msvfw32", importc.}
+
+proc ICDecompress*(
+  hic: HIC,
+  dwFlags: DWORD,
+  lpbiFormat: LPBITMAPINFOHEADER,
+  lpData: LPVOID,
+  lpbi: LPBITMAPINFOHEADER,
+  lpBits: LPVOID,
+): DWORD {.winapi, cdecl, dynlib: "msvfw32", importc.}
+
+proc ICDrawBegin*(
+  hic: HIC,
+  dwFlags: DWORD,
+  hpal: HPALETTE,
+  hwnd: HWND,
+  hdc: HDC,
+  xDst: int32,
+  yDst: int32,
+  dxDst: int32,
+  dyDst: int32,
+  lpbi: LPBITMAPINFOHEADER,
+  xSrc: int32,
+  ySrc: int32,
+  dxSrc: int32,
+  dySrc: int32,
+  dwRate: DWORD,
+  dwScale: DWORD,
+): DWORD {.winapi, cdecl, dynlib: "msvfw32", importc.}
+
+proc ICDraw*(
+  hic: HIC, dwFlags: DWORD, lpFormat: LPVOID, lpData: LPVOID, cbData: DWORD, lTime: LONG
+): DWORD {.winapi, cdecl, dynlib: "msvfw32", importc.}
+
+proc ICLocate*(
+  fccType: DWORD,
+  fccHandler: DWORD,
+  lpbiIn: LPBITMAPINFOHEADER,
+  lpbiOut: LPBITMAPINFOHEADER,
+  wFlags: WORD,
+): HIC {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc ICGetDisplayFormat*(
+  hic: HIC,
+  lpbiIn: LPBITMAPINFOHEADER,
+  lpbiOut: LPBITMAPINFOHEADER,
+  BitDepth: int32,
+  dx: int32,
+  dy: int32,
+): HIC {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc ICImageCompress*(
+  hic: HIC,
+  uiFlags: UINT,
+  lpbiIn: LPBITMAPINFO,
+  lpBits: LPVOID,
+  lpbiOut: LPBITMAPINFO,
+  lQuality: LONG,
+  plSize: ptr LONG,
+): HANDLE {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc ICImageDecompress*(
+  hic: HIC, uiFlags: UINT, lpbiIn: LPBITMAPINFO, lpBits: LPVOID, lpbiOut: LPBITMAPINFO
+): HANDLE {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc ICCompressorChoose*(
+  hwnd: HWND,
+  uiFlags: UINT,
+  pvIn: LPVOID,
+  lpData: LPVOID,
+  pc: PCOMPVARS,
+  lpszTitle: LPSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc ICSeqCompressFrameStart*(
+  pc: PCOMPVARS, lpbiIn: LPBITMAPINFO
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc ICSeqCompressFrameEnd*(
+  pc: PCOMPVARS
+): void {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc ICSeqCompressFrame*(
+  pc: PCOMPVARS, uiFlags: UINT, lpBits: LPVOID, pfKey: ptr WINBOOL, plSize: ptr LONG
+): LPVOID {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc ICCompressorFree*(
+  pc: PCOMPVARS
+): void {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
 proc DrawDibOpen*(): HDRAWDIB {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc DrawDibClose*(hdd: HDRAWDIB): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc DrawDibGetBuffer*(hdd: HDRAWDIB, lpbi: LPBITMAPINFOHEADER, dwSize: DWORD, dwFlags: DWORD): LPVOID {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc DrawDibGetPalette*(hdd: HDRAWDIB): HPALETTE {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc DrawDibSetPalette*(hdd: HDRAWDIB, hpal: HPALETTE): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc DrawDibChangePalette*(hdd: HDRAWDIB, iStart: int32, iLen: int32, lppe: LPPALETTEENTRY): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc DrawDibRealize*(hdd: HDRAWDIB, hdc: HDC, fBackground: WINBOOL): UINT {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc DrawDibStart*(hdd: HDRAWDIB, rate: DWORD): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc DrawDibStop*(hdd: HDRAWDIB): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc DrawDibBegin*(hdd: HDRAWDIB, hdc: HDC, dxDst: int32, dyDst: int32, lpbi: LPBITMAPINFOHEADER, dxSrc: int32, dySrc: int32, wFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc DrawDibDraw*(hdd: HDRAWDIB, hdc: HDC, xDst: int32, yDst: int32, dxDst: int32, dyDst: int32, lpbi: LPBITMAPINFOHEADER, lpBits: LPVOID, xSrc: int32, ySrc: int32, dxSrc: int32, dySrc: int32, wFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+proc DrawDibClose*(
+  hdd: HDRAWDIB
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc DrawDibGetBuffer*(
+  hdd: HDRAWDIB, lpbi: LPBITMAPINFOHEADER, dwSize: DWORD, dwFlags: DWORD
+): LPVOID {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc DrawDibGetPalette*(
+  hdd: HDRAWDIB
+): HPALETTE {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc DrawDibSetPalette*(
+  hdd: HDRAWDIB, hpal: HPALETTE
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc DrawDibChangePalette*(
+  hdd: HDRAWDIB, iStart: int32, iLen: int32, lppe: LPPALETTEENTRY
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc DrawDibRealize*(
+  hdd: HDRAWDIB, hdc: HDC, fBackground: WINBOOL
+): UINT {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc DrawDibStart*(
+  hdd: HDRAWDIB, rate: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc DrawDibStop*(
+  hdd: HDRAWDIB
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc DrawDibBegin*(
+  hdd: HDRAWDIB,
+  hdc: HDC,
+  dxDst: int32,
+  dyDst: int32,
+  lpbi: LPBITMAPINFOHEADER,
+  dxSrc: int32,
+  dySrc: int32,
+  wFlags: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc DrawDibDraw*(
+  hdd: HDRAWDIB,
+  hdc: HDC,
+  xDst: int32,
+  yDst: int32,
+  dxDst: int32,
+  dyDst: int32,
+  lpbi: LPBITMAPINFOHEADER,
+  lpBits: LPVOID,
+  xSrc: int32,
+  ySrc: int32,
+  dxSrc: int32,
+  dySrc: int32,
+  wFlags: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
 proc DrawDibEnd*(hdd: HDRAWDIB): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc DrawDibTime*(hdd: HDRAWDIB, lpddtime: LPDRAWDIBTIME): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc DrawDibProfileDisplay*(lpbi: LPBITMAPINFOHEADER): LRESULT {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc StretchDIB*(biDst: LPBITMAPINFOHEADER, lpDst: LPVOID, DstX: int32, DstY: int32, DstXE: int32, DstYE: int32, biSrc: LPBITMAPINFOHEADER, lpSrc: LPVOID, SrcX: int32, SrcY: int32, SrcXE: int32, SrcYE: int32): void {.winapi, stdcall, dynlib: "msvfw32", importc.}
+proc DrawDibTime*(
+  hdd: HDRAWDIB, lpddtime: LPDRAWDIBTIME
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc DrawDibProfileDisplay*(
+  lpbi: LPBITMAPINFOHEADER
+): LRESULT {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc StretchDIB*(
+  biDst: LPBITMAPINFOHEADER,
+  lpDst: LPVOID,
+  DstX: int32,
+  DstY: int32,
+  DstXE: int32,
+  DstYE: int32,
+  biSrc: LPBITMAPINFOHEADER,
+  lpSrc: LPVOID,
+  SrcX: int32,
+  SrcY: int32,
+  SrcXE: int32,
+  SrcYE: int32,
+): void {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
 proc AVIFileInit*(): void {.winapi, stdcall, dynlib: "avifil32", importc.}
 proc AVIFileExit*(): void {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIFileAddRef*(pfile: PAVIFILE): ULONG {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIFileRelease*(pfile: PAVIFILE): ULONG {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIFileOpenA*(ppfile: ptr PAVIFILE, szFile: LPCSTR, uMode: UINT, lpHandler: LPCLSID): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIFileOpenW*(ppfile: ptr PAVIFILE, szFile: LPCWSTR, uMode: UINT, lpHandler: LPCLSID): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIFileInfoW*(pfile: PAVIFILE, pfi: LPAVIFILEINFOW, lSize: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIFileInfoA*(pfile: PAVIFILE, pfi: LPAVIFILEINFOA, lSize: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIFileGetStream*(pfile: PAVIFILE, ppavi: ptr PAVISTREAM, fccType: DWORD, lParam: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIFileCreateStreamW*(pfile: PAVIFILE, ppavi: ptr PAVISTREAM, psi: ptr TAVISTREAMINFOW): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIFileCreateStreamA*(pfile: PAVIFILE, ppavi: ptr PAVISTREAM, psi: ptr TAVISTREAMINFOA): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIFileWriteData*(pfile: PAVIFILE, ckid: DWORD, lpData: LPVOID, cbData: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIFileReadData*(pfile: PAVIFILE, ckid: DWORD, lpData: LPVOID, lpcbData: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIFileEndRecord*(pfile: PAVIFILE): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamAddRef*(pavi: PAVISTREAM): ULONG {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamRelease*(pavi: PAVISTREAM): ULONG {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamInfoW*(pavi: PAVISTREAM, psi: LPAVISTREAMINFOW, lSize: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamInfoA*(pavi: PAVISTREAM, psi: LPAVISTREAMINFOA, lSize: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamFindSample*(pavi: PAVISTREAM, lPos: LONG, lFlags: LONG): LONG {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamReadFormat*(pavi: PAVISTREAM, lPos: LONG, lpFormat: LPVOID, lpcbFormat: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamSetFormat*(pavi: PAVISTREAM, lPos: LONG, lpFormat: LPVOID, cbFormat: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamReadData*(pavi: PAVISTREAM, fcc: DWORD, lp: LPVOID, lpcb: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamWriteData*(pavi: PAVISTREAM, fcc: DWORD, lp: LPVOID, cb: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamRead*(pavi: PAVISTREAM, lStart: LONG, lSamples: LONG, lpBuffer: LPVOID, cbBuffer: LONG, plBytes: ptr LONG, plSamples: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamWrite*(pavi: PAVISTREAM, lStart: LONG, lSamples: LONG, lpBuffer: LPVOID, cbBuffer: LONG, dwFlags: DWORD, plSampWritten: ptr LONG, plBytesWritten: ptr LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamStart*(pavi: PAVISTREAM): LONG {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamLength*(pavi: PAVISTREAM): LONG {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamTimeToSample*(pavi: PAVISTREAM, lTime: LONG): LONG {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamSampleToTime*(pavi: PAVISTREAM, lSample: LONG): LONG {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamBeginStreaming*(pavi: PAVISTREAM, lStart: LONG, lEnd: LONG, lRate: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamEndStreaming*(pavi: PAVISTREAM): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamGetFrameOpen*(pavi: PAVISTREAM, lpbiWanted: LPBITMAPINFOHEADER): PGETFRAME {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamGetFrame*(pg: PGETFRAME, lPos: LONG): LPVOID {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamGetFrameClose*(pg: PGETFRAME): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamOpenFromFileA*(ppavi: ptr PAVISTREAM, szFile: LPCSTR, fccType: DWORD, lParam: LONG, mode: UINT, pclsidHandler: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamOpenFromFileW*(ppavi: ptr PAVISTREAM, szFile: LPCWSTR, fccType: DWORD, lParam: LONG, mode: UINT, pclsidHandler: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamCreate*(ppavi: ptr PAVISTREAM, lParam1: LONG, lParam2: LONG, pclsidHandler: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIStreamFindKeyFrame*(pavi: PAVISTREAM, lPos: LONG, lFlags: LONG): LONG {.winapi, stdcall, dynlib: "avifil32", importc: "AVIStreamFindSample".}
-proc AVIStreamClose*(pavi: PAVISTREAM): ULONG {.winapi, stdcall, dynlib: "avifil32", importc: "AVIStreamRelease".}
-proc AVIFileClose*(pfile: PAVIFILE): ULONG {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileRelease".}
-proc AVIStreamInit*(): void {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileInit".}
-proc AVIStreamExit*(): void {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileExit".}
-proc AVIMakeCompressedStream*(ppsCompressed: ptr PAVISTREAM, ppsSource: PAVISTREAM, lpOptions: ptr AVICOMPRESSOPTIONS, pclsidHandler: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVISaveVA*(szFile: LPCSTR, pclsidHandler: ptr CLSID, lpfnCallback: AVISAVECALLBACK, nStreams: int32, ppavi: ptr PAVISTREAM, plpOptions: ptr LPAVICOMPRESSOPTIONS): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVISaveVW*(szFile: LPCWSTR, pclsidHandler: ptr CLSID, lpfnCallback: AVISAVECALLBACK, nStreams: int32, ppavi: ptr PAVISTREAM, plpOptions: ptr LPAVICOMPRESSOPTIONS): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVISaveOptions*(hwnd: HWND, uiFlags: UINT, nStreams: int32, ppavi: ptr PAVISTREAM, plpOptions: ptr LPAVICOMPRESSOPTIONS): INT_PTR {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVISaveOptionsFree*(nStreams: int32, plpOptions: ptr LPAVICOMPRESSOPTIONS): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIBuildFilterW*(lpszFilter: LPWSTR, cbFilter: LONG, fSaving: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIBuildFilterA*(lpszFilter: LPSTR, cbFilter: LONG, fSaving: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIMakeFileFromStreams*(ppfile: ptr PAVIFILE, nStreams: int32, papStreams: ptr PAVISTREAM): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIMakeStreamFromClipboard*(cfFormat: UINT, hGlobal: HANDLE, ppstream: ptr PAVISTREAM): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIPutFileOnClipboard*(pf: PAVIFILE): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc AVIGetFromClipboard*(lppf: ptr PAVIFILE): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+proc AVIFileAddRef*(
+  pfile: PAVIFILE
+): ULONG {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIFileRelease*(
+  pfile: PAVIFILE
+): ULONG {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIFileOpenA*(
+  ppfile: ptr PAVIFILE, szFile: LPCSTR, uMode: UINT, lpHandler: LPCLSID
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIFileOpenW*(
+  ppfile: ptr PAVIFILE, szFile: LPCWSTR, uMode: UINT, lpHandler: LPCLSID
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIFileInfoW*(
+  pfile: PAVIFILE, pfi: LPAVIFILEINFOW, lSize: LONG
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIFileInfoA*(
+  pfile: PAVIFILE, pfi: LPAVIFILEINFOA, lSize: LONG
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIFileGetStream*(
+  pfile: PAVIFILE, ppavi: ptr PAVISTREAM, fccType: DWORD, lParam: LONG
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIFileCreateStreamW*(
+  pfile: PAVIFILE, ppavi: ptr PAVISTREAM, psi: ptr TAVISTREAMINFOW
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIFileCreateStreamA*(
+  pfile: PAVIFILE, ppavi: ptr PAVISTREAM, psi: ptr TAVISTREAMINFOA
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIFileWriteData*(
+  pfile: PAVIFILE, ckid: DWORD, lpData: LPVOID, cbData: LONG
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIFileReadData*(
+  pfile: PAVIFILE, ckid: DWORD, lpData: LPVOID, lpcbData: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIFileEndRecord*(
+  pfile: PAVIFILE
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamAddRef*(
+  pavi: PAVISTREAM
+): ULONG {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamRelease*(
+  pavi: PAVISTREAM
+): ULONG {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamInfoW*(
+  pavi: PAVISTREAM, psi: LPAVISTREAMINFOW, lSize: LONG
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamInfoA*(
+  pavi: PAVISTREAM, psi: LPAVISTREAMINFOA, lSize: LONG
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamFindSample*(
+  pavi: PAVISTREAM, lPos: LONG, lFlags: LONG
+): LONG {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamReadFormat*(
+  pavi: PAVISTREAM, lPos: LONG, lpFormat: LPVOID, lpcbFormat: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamSetFormat*(
+  pavi: PAVISTREAM, lPos: LONG, lpFormat: LPVOID, cbFormat: LONG
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamReadData*(
+  pavi: PAVISTREAM, fcc: DWORD, lp: LPVOID, lpcb: ptr LONG
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamWriteData*(
+  pavi: PAVISTREAM, fcc: DWORD, lp: LPVOID, cb: LONG
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamRead*(
+  pavi: PAVISTREAM,
+  lStart: LONG,
+  lSamples: LONG,
+  lpBuffer: LPVOID,
+  cbBuffer: LONG,
+  plBytes: ptr LONG,
+  plSamples: ptr LONG,
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamWrite*(
+  pavi: PAVISTREAM,
+  lStart: LONG,
+  lSamples: LONG,
+  lpBuffer: LPVOID,
+  cbBuffer: LONG,
+  dwFlags: DWORD,
+  plSampWritten: ptr LONG,
+  plBytesWritten: ptr LONG,
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamStart*(
+  pavi: PAVISTREAM
+): LONG {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamLength*(
+  pavi: PAVISTREAM
+): LONG {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamTimeToSample*(
+  pavi: PAVISTREAM, lTime: LONG
+): LONG {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamSampleToTime*(
+  pavi: PAVISTREAM, lSample: LONG
+): LONG {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamBeginStreaming*(
+  pavi: PAVISTREAM, lStart: LONG, lEnd: LONG, lRate: LONG
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamEndStreaming*(
+  pavi: PAVISTREAM
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamGetFrameOpen*(
+  pavi: PAVISTREAM, lpbiWanted: LPBITMAPINFOHEADER
+): PGETFRAME {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamGetFrame*(
+  pg: PGETFRAME, lPos: LONG
+): LPVOID {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamGetFrameClose*(
+  pg: PGETFRAME
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamOpenFromFileA*(
+  ppavi: ptr PAVISTREAM,
+  szFile: LPCSTR,
+  fccType: DWORD,
+  lParam: LONG,
+  mode: UINT,
+  pclsidHandler: ptr CLSID,
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamOpenFromFileW*(
+  ppavi: ptr PAVISTREAM,
+  szFile: LPCWSTR,
+  fccType: DWORD,
+  lParam: LONG,
+  mode: UINT,
+  pclsidHandler: ptr CLSID,
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamCreate*(
+  ppavi: ptr PAVISTREAM, lParam1: LONG, lParam2: LONG, pclsidHandler: ptr CLSID
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIStreamFindKeyFrame*(
+  pavi: PAVISTREAM, lPos: LONG, lFlags: LONG
+): LONG {.winapi, stdcall, dynlib: "avifil32", importc: "AVIStreamFindSample".}
+
+proc AVIStreamClose*(
+  pavi: PAVISTREAM
+): ULONG {.winapi, stdcall, dynlib: "avifil32", importc: "AVIStreamRelease".}
+
+proc AVIFileClose*(
+  pfile: PAVIFILE
+): ULONG {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileRelease".}
+
+proc AVIStreamInit*(): void {.
+  winapi, stdcall, dynlib: "avifil32", importc: "AVIFileInit"
+.}
+
+proc AVIStreamExit*(): void {.
+  winapi, stdcall, dynlib: "avifil32", importc: "AVIFileExit"
+.}
+
+proc AVIMakeCompressedStream*(
+  ppsCompressed: ptr PAVISTREAM,
+  ppsSource: PAVISTREAM,
+  lpOptions: ptr AVICOMPRESSOPTIONS,
+  pclsidHandler: ptr CLSID,
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVISaveVA*(
+  szFile: LPCSTR,
+  pclsidHandler: ptr CLSID,
+  lpfnCallback: AVISAVECALLBACK,
+  nStreams: int32,
+  ppavi: ptr PAVISTREAM,
+  plpOptions: ptr LPAVICOMPRESSOPTIONS,
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVISaveVW*(
+  szFile: LPCWSTR,
+  pclsidHandler: ptr CLSID,
+  lpfnCallback: AVISAVECALLBACK,
+  nStreams: int32,
+  ppavi: ptr PAVISTREAM,
+  plpOptions: ptr LPAVICOMPRESSOPTIONS,
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVISaveOptions*(
+  hwnd: HWND,
+  uiFlags: UINT,
+  nStreams: int32,
+  ppavi: ptr PAVISTREAM,
+  plpOptions: ptr LPAVICOMPRESSOPTIONS,
+): INT_PTR {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVISaveOptionsFree*(
+  nStreams: int32, plpOptions: ptr LPAVICOMPRESSOPTIONS
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIBuildFilterW*(
+  lpszFilter: LPWSTR, cbFilter: LONG, fSaving: WINBOOL
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIBuildFilterA*(
+  lpszFilter: LPSTR, cbFilter: LONG, fSaving: WINBOOL
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIMakeFileFromStreams*(
+  ppfile: ptr PAVIFILE, nStreams: int32, papStreams: ptr PAVISTREAM
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIMakeStreamFromClipboard*(
+  cfFormat: UINT, hGlobal: HANDLE, ppstream: ptr PAVISTREAM
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIPutFileOnClipboard*(
+  pf: PAVIFILE
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc AVIGetFromClipboard*(
+  lppf: ptr PAVIFILE
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
 proc AVIClearClipboard*(): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc CreateEditableStream*(ppsEditable: ptr PAVISTREAM, psSource: PAVISTREAM): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc EditStreamCut*(pavi: PAVISTREAM, plStart: ptr LONG, plLength: ptr LONG, ppResult: ptr PAVISTREAM): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc EditStreamCopy*(pavi: PAVISTREAM, plStart: ptr LONG, plLength: ptr LONG, ppResult: ptr PAVISTREAM): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc EditStreamPaste*(pavi: PAVISTREAM, plPos: ptr LONG, plLength: ptr LONG, pstream: PAVISTREAM, lStart: LONG, lEnd: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc EditStreamClone*(pavi: PAVISTREAM, ppResult: ptr PAVISTREAM): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc EditStreamSetNameA*(pavi: PAVISTREAM, lpszName: LPCSTR): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc EditStreamSetNameW*(pavi: PAVISTREAM, lpszName: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc EditStreamSetInfoW*(pavi: PAVISTREAM, lpInfo: LPAVISTREAMINFOW, cbInfo: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc EditStreamSetInfoA*(pavi: PAVISTREAM, lpInfo: LPAVISTREAMINFOA, cbInfo: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
-proc MCIWndCreateA*(hwndParent: HWND, hInstance: HINSTANCE, dwStyle: DWORD, szFile: LPCSTR): HWND {.winapi, cdecl, dynlib: "msvfw32", importc.}
-proc MCIWndCreateW*(hwndParent: HWND, hInstance: HINSTANCE, dwStyle: DWORD, szFile: LPCWSTR): HWND {.winapi, cdecl, dynlib: "msvfw32", importc.}
+proc CreateEditableStream*(
+  ppsEditable: ptr PAVISTREAM, psSource: PAVISTREAM
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc EditStreamCut*(
+  pavi: PAVISTREAM, plStart: ptr LONG, plLength: ptr LONG, ppResult: ptr PAVISTREAM
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc EditStreamCopy*(
+  pavi: PAVISTREAM, plStart: ptr LONG, plLength: ptr LONG, ppResult: ptr PAVISTREAM
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc EditStreamPaste*(
+  pavi: PAVISTREAM,
+  plPos: ptr LONG,
+  plLength: ptr LONG,
+  pstream: PAVISTREAM,
+  lStart: LONG,
+  lEnd: LONG,
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc EditStreamClone*(
+  pavi: PAVISTREAM, ppResult: ptr PAVISTREAM
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc EditStreamSetNameA*(
+  pavi: PAVISTREAM, lpszName: LPCSTR
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc EditStreamSetNameW*(
+  pavi: PAVISTREAM, lpszName: LPCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc EditStreamSetInfoW*(
+  pavi: PAVISTREAM, lpInfo: LPAVISTREAMINFOW, cbInfo: LONG
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc EditStreamSetInfoA*(
+  pavi: PAVISTREAM, lpInfo: LPAVISTREAMINFOA, cbInfo: LONG
+): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc.}
+
+proc MCIWndCreateA*(
+  hwndParent: HWND, hInstance: HINSTANCE, dwStyle: DWORD, szFile: LPCSTR
+): HWND {.winapi, cdecl, dynlib: "msvfw32", importc.}
+
+proc MCIWndCreateW*(
+  hwndParent: HWND, hInstance: HINSTANCE, dwStyle: DWORD, szFile: LPCWSTR
+): HWND {.winapi, cdecl, dynlib: "msvfw32", importc.}
+
 proc MCIWndRegisterClass*(): WINBOOL {.winapi, cdecl, dynlib: "msvfw32", importc.}
-proc capCreateCaptureWindowA*(lpszWindowName: LPCSTR, dwStyle: DWORD, x: int32, y: int32, nWidth: int32, nHeight: int32, hwndParent: HWND, nID: int32): HWND {.winapi, stdcall, dynlib: "avicap32", importc.}
-proc capGetDriverDescriptionA*(wDriverIndex: UINT, lpszName: LPSTR, cbName: int32, lpszVer: LPSTR, cbVer: int32): WINBOOL {.winapi, stdcall, dynlib: "avicap32", importc.}
-proc capCreateCaptureWindowW*(lpszWindowName: LPCWSTR, dwStyle: DWORD, x: int32, y: int32, nWidth: int32, nHeight: int32, hwndParent: HWND, nID: int32): HWND {.winapi, stdcall, dynlib: "avicap32", importc.}
-proc capGetDriverDescriptionW*(wDriverIndex: UINT, lpszName: LPWSTR, cbName: int32, lpszVer: LPWSTR, cbVer: int32): WINBOOL {.winapi, stdcall, dynlib: "avicap32", importc.}
+proc capCreateCaptureWindowA*(
+  lpszWindowName: LPCSTR,
+  dwStyle: DWORD,
+  x: int32,
+  y: int32,
+  nWidth: int32,
+  nHeight: int32,
+  hwndParent: HWND,
+  nID: int32,
+): HWND {.winapi, stdcall, dynlib: "avicap32", importc.}
+
+proc capGetDriverDescriptionA*(
+  wDriverIndex: UINT, lpszName: LPSTR, cbName: int32, lpszVer: LPSTR, cbVer: int32
+): WINBOOL {.winapi, stdcall, dynlib: "avicap32", importc.}
+
+proc capCreateCaptureWindowW*(
+  lpszWindowName: LPCWSTR,
+  dwStyle: DWORD,
+  x: int32,
+  y: int32,
+  nWidth: int32,
+  nHeight: int32,
+  hwndParent: HWND,
+  nID: int32,
+): HWND {.winapi, stdcall, dynlib: "avicap32", importc.}
+
+proc capGetDriverDescriptionW*(
+  wDriverIndex: UINT, lpszName: LPWSTR, cbName: int32, lpszVer: LPWSTR, cbVer: int32
+): WINBOOL {.winapi, stdcall, dynlib: "avicap32", importc.}
+
 proc acmGetVersion*(): DWORD {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmMetrics*(hao: HACMOBJ, uMetric: UINT, pMetric: LPVOID): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmDriverEnum*(fnCallback: ACMDRIVERENUMCB, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmDriverID*(hao: HACMOBJ, phadid: LPHACMDRIVERID, fdwDriverID: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmDriverAddA*(phadid: LPHACMDRIVERID, hinstModule: HINSTANCE, lParam: LPARAM, dwPriority: DWORD, fdwAdd: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmDriverAddW*(phadid: LPHACMDRIVERID, hinstModule: HINSTANCE, lParam: LPARAM, dwPriority: DWORD, fdwAdd: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmDriverRemove*(hadid: HACMDRIVERID, fdwRemove: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmDriverOpen*(phad: LPHACMDRIVER, hadid: HACMDRIVERID, fdwOpen: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmDriverClose*(had: HACMDRIVER, fdwClose: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmDriverMessage*(had: HACMDRIVER, uMsg: UINT, lParam1: LPARAM, lParam2: LPARAM): LRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmDriverPriority*(hadid: HACMDRIVERID, dwPriority: DWORD, fdwPriority: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmDriverDetailsA*(hadid: HACMDRIVERID, padd: LPACMDRIVERDETAILSA, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmDriverDetailsW*(hadid: HACMDRIVERID, padd: LPACMDRIVERDETAILSW, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFormatTagDetailsA*(had: HACMDRIVER, paftd: LPACMFORMATTAGDETAILSA, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFormatTagDetailsW*(had: HACMDRIVER, paftd: LPACMFORMATTAGDETAILSW, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFormatTagEnumA*(had: HACMDRIVER, paftd: LPACMFORMATTAGDETAILSA, fnCallback: ACMFORMATTAGENUMCBA, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFormatTagEnumW*(had: HACMDRIVER, paftd: LPACMFORMATTAGDETAILSW, fnCallback: ACMFORMATTAGENUMCBW, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFormatDetailsA*(had: HACMDRIVER, pafd: LPACMFORMATDETAILSA, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFormatDetailsW*(had: HACMDRIVER, pafd: LPACMFORMATDETAILSW, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFormatEnumA*(had: HACMDRIVER, pafd: LPACMFORMATDETAILSA, fnCallback: ACMFORMATENUMCBA, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFormatEnumW*(had: HACMDRIVER, pafd: LPACMFORMATDETAILSW, fnCallback: ACMFORMATENUMCBW, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFormatSuggest*(had: HACMDRIVER, pwfxSrc: LPWAVEFORMATEX, pwfxDst: LPWAVEFORMATEX, cbwfxDst: DWORD, fdwSuggest: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFormatChooseA*(pafmtc: LPACMFORMATCHOOSEA): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFormatChooseW*(pafmtc: LPACMFORMATCHOOSEW): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFilterTagDetailsA*(had: HACMDRIVER, paftd: LPACMFILTERTAGDETAILSA, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFilterTagDetailsW*(had: HACMDRIVER, paftd: LPACMFILTERTAGDETAILSW, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFilterTagEnumA*(had: HACMDRIVER, paftd: LPACMFILTERTAGDETAILSA, fnCallback: ACMFILTERTAGENUMCBA, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFilterTagEnumW*(had: HACMDRIVER, paftd: LPACMFILTERTAGDETAILSW, fnCallback: ACMFILTERTAGENUMCBW, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFilterDetailsA*(had: HACMDRIVER, pafd: LPACMFILTERDETAILSA, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFilterDetailsW*(had: HACMDRIVER, pafd: LPACMFILTERDETAILSW, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFilterEnumA*(had: HACMDRIVER, pafd: LPACMFILTERDETAILSA, fnCallback: ACMFILTERENUMCBA, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFilterEnumW*(had: HACMDRIVER, pafd: LPACMFILTERDETAILSW, fnCallback: ACMFILTERENUMCBW, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFilterChooseA*(pafltrc: LPACMFILTERCHOOSEA): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmFilterChooseW*(pafltrc: LPACMFILTERCHOOSEW): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmStreamOpen*(phas: LPHACMSTREAM, had: HACMDRIVER, pwfxSrc: LPWAVEFORMATEX, pwfxDst: LPWAVEFORMATEX, pwfltr: LPWAVEFILTER, dwCallback: DWORD_PTR, dwInstance: DWORD_PTR, fdwOpen: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmStreamClose*(has: HACMSTREAM, fdwClose: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmStreamSize*(has: HACMSTREAM, cbInput: DWORD, pdwOutputBytes: LPDWORD, fdwSize: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmStreamReset*(has: HACMSTREAM, fdwReset: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmStreamMessage*(has: HACMSTREAM, uMsg: UINT, lParam1: LPARAM, lParam2: LPARAM): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmStreamConvert*(has: HACMSTREAM, pash: LPACMSTREAMHEADER, fdwConvert: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmStreamPrepareHeader*(has: HACMSTREAM, pash: LPACMSTREAMHEADER, fdwPrepare: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc acmStreamUnprepareHeader*(has: HACMSTREAM, pash: LPACMSTREAMHEADER, fdwUnprepare: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
-proc GetOpenFileNamePreviewA*(lpofn: LPOPENFILENAMEA): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc GetSaveFileNamePreviewA*(lpofn: LPOPENFILENAMEA): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc GetOpenFileNamePreviewW*(lpofn: LPOPENFILENAMEW): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-proc GetSaveFileNamePreviewW*(lpofn: LPOPENFILENAMEW): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
-template MCIWndCanPlay*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, MCIWNDM_CAN_PLAY, 0, 0)
-template MCIWndCanRecord*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, MCIWNDM_CAN_RECORD, 0, 0)
-template MCIWndCanSave*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, MCIWNDM_CAN_SAVE, 0, 0)
-template MCIWndCanWindow*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, MCIWNDM_CAN_WINDOW, 0, 0)
-template MCIWndCanEject*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, MCIWNDM_CAN_EJECT, 0, 0)
-template MCIWndCanConfig*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, MCIWNDM_CAN_CONFIG, 0, 0)
-template MCIWndPaletteKick*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, MCIWNDM_PALETTEKICK, 0, 0)
-template MCIWndSave*(hwnd: HWND, szFile: PCWSTR): LONG = discardable LONG SendMessage(hwnd, MCI_SAVE, 0, cast[LPARAM](szFile))
-template MCIWndSaveDialog*(hwnd: HWND): LONG = discardable MCIWndSave(hwnd, cast[PCWSTR](-1))
+proc acmMetrics*(
+  hao: HACMOBJ, uMetric: UINT, pMetric: LPVOID
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmDriverEnum*(
+  fnCallback: ACMDRIVERENUMCB, dwInstance: DWORD_PTR, fdwEnum: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmDriverID*(
+  hao: HACMOBJ, phadid: LPHACMDRIVERID, fdwDriverID: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmDriverAddA*(
+  phadid: LPHACMDRIVERID,
+  hinstModule: HINSTANCE,
+  lParam: LPARAM,
+  dwPriority: DWORD,
+  fdwAdd: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmDriverAddW*(
+  phadid: LPHACMDRIVERID,
+  hinstModule: HINSTANCE,
+  lParam: LPARAM,
+  dwPriority: DWORD,
+  fdwAdd: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmDriverRemove*(
+  hadid: HACMDRIVERID, fdwRemove: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmDriverOpen*(
+  phad: LPHACMDRIVER, hadid: HACMDRIVERID, fdwOpen: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmDriverClose*(
+  had: HACMDRIVER, fdwClose: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmDriverMessage*(
+  had: HACMDRIVER, uMsg: UINT, lParam1: LPARAM, lParam2: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmDriverPriority*(
+  hadid: HACMDRIVERID, dwPriority: DWORD, fdwPriority: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmDriverDetailsA*(
+  hadid: HACMDRIVERID, padd: LPACMDRIVERDETAILSA, fdwDetails: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmDriverDetailsW*(
+  hadid: HACMDRIVERID, padd: LPACMDRIVERDETAILSW, fdwDetails: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFormatTagDetailsA*(
+  had: HACMDRIVER, paftd: LPACMFORMATTAGDETAILSA, fdwDetails: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFormatTagDetailsW*(
+  had: HACMDRIVER, paftd: LPACMFORMATTAGDETAILSW, fdwDetails: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFormatTagEnumA*(
+  had: HACMDRIVER,
+  paftd: LPACMFORMATTAGDETAILSA,
+  fnCallback: ACMFORMATTAGENUMCBA,
+  dwInstance: DWORD_PTR,
+  fdwEnum: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFormatTagEnumW*(
+  had: HACMDRIVER,
+  paftd: LPACMFORMATTAGDETAILSW,
+  fnCallback: ACMFORMATTAGENUMCBW,
+  dwInstance: DWORD_PTR,
+  fdwEnum: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFormatDetailsA*(
+  had: HACMDRIVER, pafd: LPACMFORMATDETAILSA, fdwDetails: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFormatDetailsW*(
+  had: HACMDRIVER, pafd: LPACMFORMATDETAILSW, fdwDetails: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFormatEnumA*(
+  had: HACMDRIVER,
+  pafd: LPACMFORMATDETAILSA,
+  fnCallback: ACMFORMATENUMCBA,
+  dwInstance: DWORD_PTR,
+  fdwEnum: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFormatEnumW*(
+  had: HACMDRIVER,
+  pafd: LPACMFORMATDETAILSW,
+  fnCallback: ACMFORMATENUMCBW,
+  dwInstance: DWORD_PTR,
+  fdwEnum: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFormatSuggest*(
+  had: HACMDRIVER,
+  pwfxSrc: LPWAVEFORMATEX,
+  pwfxDst: LPWAVEFORMATEX,
+  cbwfxDst: DWORD,
+  fdwSuggest: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFormatChooseA*(
+  pafmtc: LPACMFORMATCHOOSEA
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFormatChooseW*(
+  pafmtc: LPACMFORMATCHOOSEW
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFilterTagDetailsA*(
+  had: HACMDRIVER, paftd: LPACMFILTERTAGDETAILSA, fdwDetails: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFilterTagDetailsW*(
+  had: HACMDRIVER, paftd: LPACMFILTERTAGDETAILSW, fdwDetails: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFilterTagEnumA*(
+  had: HACMDRIVER,
+  paftd: LPACMFILTERTAGDETAILSA,
+  fnCallback: ACMFILTERTAGENUMCBA,
+  dwInstance: DWORD_PTR,
+  fdwEnum: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFilterTagEnumW*(
+  had: HACMDRIVER,
+  paftd: LPACMFILTERTAGDETAILSW,
+  fnCallback: ACMFILTERTAGENUMCBW,
+  dwInstance: DWORD_PTR,
+  fdwEnum: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFilterDetailsA*(
+  had: HACMDRIVER, pafd: LPACMFILTERDETAILSA, fdwDetails: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFilterDetailsW*(
+  had: HACMDRIVER, pafd: LPACMFILTERDETAILSW, fdwDetails: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFilterEnumA*(
+  had: HACMDRIVER,
+  pafd: LPACMFILTERDETAILSA,
+  fnCallback: ACMFILTERENUMCBA,
+  dwInstance: DWORD_PTR,
+  fdwEnum: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFilterEnumW*(
+  had: HACMDRIVER,
+  pafd: LPACMFILTERDETAILSW,
+  fnCallback: ACMFILTERENUMCBW,
+  dwInstance: DWORD_PTR,
+  fdwEnum: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFilterChooseA*(
+  pafltrc: LPACMFILTERCHOOSEA
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmFilterChooseW*(
+  pafltrc: LPACMFILTERCHOOSEW
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmStreamOpen*(
+  phas: LPHACMSTREAM,
+  had: HACMDRIVER,
+  pwfxSrc: LPWAVEFORMATEX,
+  pwfxDst: LPWAVEFORMATEX,
+  pwfltr: LPWAVEFILTER,
+  dwCallback: DWORD_PTR,
+  dwInstance: DWORD_PTR,
+  fdwOpen: DWORD,
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmStreamClose*(
+  has: HACMSTREAM, fdwClose: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmStreamSize*(
+  has: HACMSTREAM, cbInput: DWORD, pdwOutputBytes: LPDWORD, fdwSize: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmStreamReset*(
+  has: HACMSTREAM, fdwReset: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmStreamMessage*(
+  has: HACMSTREAM, uMsg: UINT, lParam1: LPARAM, lParam2: LPARAM
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmStreamConvert*(
+  has: HACMSTREAM, pash: LPACMSTREAMHEADER, fdwConvert: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmStreamPrepareHeader*(
+  has: HACMSTREAM, pash: LPACMSTREAMHEADER, fdwPrepare: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc acmStreamUnprepareHeader*(
+  has: HACMSTREAM, pash: LPACMSTREAMHEADER, fdwUnprepare: DWORD
+): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc.}
+
+proc GetOpenFileNamePreviewA*(
+  lpofn: LPOPENFILENAMEA
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc GetSaveFileNamePreviewA*(
+  lpofn: LPOPENFILENAMEA
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc GetOpenFileNamePreviewW*(
+  lpofn: LPOPENFILENAMEW
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+proc GetSaveFileNamePreviewW*(
+  lpofn: LPOPENFILENAMEW
+): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc.}
+
+template MCIWndCanPlay*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, MCIWNDM_CAN_PLAY, 0, 0)
+
+template MCIWndCanRecord*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, MCIWNDM_CAN_RECORD, 0, 0)
+
+template MCIWndCanSave*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, MCIWNDM_CAN_SAVE, 0, 0)
+
+template MCIWndCanWindow*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, MCIWNDM_CAN_WINDOW, 0, 0)
+
+template MCIWndCanEject*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, MCIWNDM_CAN_EJECT, 0, 0)
+
+template MCIWndCanConfig*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, MCIWNDM_CAN_CONFIG, 0, 0)
+
+template MCIWndPaletteKick*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, MCIWNDM_PALETTEKICK, 0, 0)
+
+template MCIWndSave*(hwnd: HWND, szFile: PCWSTR): LONG =
+  discardable LONG SendMessage(hwnd, MCI_SAVE, 0, cast[LPARAM](szFile))
+
+template MCIWndSaveDialog*(hwnd: HWND): LONG =
+  discardable MCIWndSave(hwnd, cast[PCWSTR](-1))
+
 when winimUnicode:
-  const
-    MCIWNDM_NEW* = MCIWNDM_NEWW
-when winimAnsi:
-  const
-    MCIWNDM_NEW* = MCIWNDM_NEWA
-template MCIWndNew*(hwnd: HWND, lp: LPVOID): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_NEW, 0, cast[LPARAM](lp))
-template MCIWndRecord*(hwnd: HWND): LONG = discardable LONG SendMessage(hwnd, MCI_RECORD, 0, 0)
-when winimUnicode:
-  const
-    MCIWNDM_OPEN* = MCIWNDM_OPENW
+  const MCIWNDM_NEW* = MCIWNDM_NEWW
 when winimAnsi:
-  const
-    MCIWNDM_OPEN* = MCIWNDM_OPENA
-template MCIWndOpen*(hwnd: HWND, sz: LPVOID, f: UINT): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_OPEN, cast[WPARAM](f), cast[LPARAM](sz))
-template MCIWndOpenDialog*(hwnd: HWND): LONG = discardable MCIWndOpen(hwnd, cast[LPVOID](-1), 0)
-template MCIWndClose*(hwnd: HWND): LONG = discardable LONG SendMessage(hwnd, MCI_CLOSE, 0, 0)
-template MCIWndPlay*(hwnd: HWND): LONG = discardable LONG SendMessage(hwnd, MCI_PLAY, 0, 0)
-template MCIWndStop*(hwnd: HWND): LONG = discardable LONG SendMessage(hwnd, MCI_STOP, 0, 0)
-template MCIWndPause*(hwnd: HWND): LONG = discardable LONG SendMessage(hwnd, MCI_PAUSE, 0, 0)
-template MCIWndResume*(hwnd: HWND): LONG = discardable LONG SendMessage(hwnd, MCI_RESUME, 0, 0)
-template MCIWndSeek*(hwnd: HWND, lPos: LONG): LONG = discardable LONG SendMessage(hwnd, MCI_SEEK, 0, cast[LPARAM](lPos))
-template MCIWndEject*(hwnd: HWND): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_EJECT, 0, 0)
-template MCIWndHome*(hwnd: HWND): LONG = discardable MCIWndSeek(hwnd, MCIWND_START)
-template MCIWndToEnd*(hwnd: HWND): LONG = discardable MCIWndSeek(hwnd, MCIWND_END)
-template MCIWndGetSource*(hwnd: HWND, prc: LPRECT): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_GET_SOURCE, 0, cast[LPARAM](prc))
-template MCIWndPutSource*(hwnd: HWND, prc: LPRECT): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_PUT_SOURCE, 0, cast[LPARAM](prc))
-template MCIWndGetDest*(hwnd: HWND, prc: LPRECT): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_GET_DEST, 0, cast[LPARAM](prc))
-template MCIWndPutDest*(hwnd: HWND, prc: LPRECT): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_PUT_DEST, 0, cast[LPARAM](prc))
-template MCIWndPlayReverse*(hwnd: HWND): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_PLAYREVERSE, 0, 0)
-template MCIWndPlayFrom*(hwnd: HWND, lPos: LONG): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_PLAYFROM, 0, cast[LPARAM](lPos))
-template MCIWndPlayTo*(hwnd: HWND, lPos: LONG): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_PLAYTO, 0, cast[LPARAM](lPos))
-template MCIWndPlayFromTo*(hwnd: HWND, lStart: LONG, lEnd: LONG): LONG = MCIWndSeek(hwnd, lStart); discardable MCIWndPlayTo(hwnd, lEnd)
-template MCIWndGetDeviceID*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, MCIWNDM_GETDEVICEID, 0, 0)
-template MCIWndGetAlias*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, MCIWNDM_GETALIAS, 0, 0)
+  const MCIWNDM_NEW* = MCIWNDM_NEWA
+template MCIWndNew*(hwnd: HWND, lp: LPVOID): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_NEW, 0, cast[LPARAM](lp))
+
+template MCIWndRecord*(hwnd: HWND): LONG =
+  discardable LONG SendMessage(hwnd, MCI_RECORD, 0, 0)
+
 when winimUnicode:
-  const
-    MCIWNDM_GETMODE* = MCIWNDM_GETMODEW
-when winimAnsi:
-  const
-    MCIWNDM_GETMODE* = MCIWNDM_GETMODEA
-template MCIWndGetMode*(hwnd: HWND, lp: LPTSTR, L: UINT): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_GETMODE, cast[WPARAM](L), cast[LPARAM](lp))
-when winimUnicode:
-  const
-    MCIWNDM_GETPOSITION* = MCIWNDM_GETPOSITIONW
+  const MCIWNDM_OPEN* = MCIWNDM_OPENW
 when winimAnsi:
-  const
-    MCIWNDM_GETPOSITION* = MCIWNDM_GETPOSITIONA
-template MCIWndGetPosition*(hwnd: HWND): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_GETPOSITION, 0, 0)
-template MCIWndGetPositionString*(hwnd: HWND, lp: LPTSTR, L: UINT): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_GETPOSITION, cast[WPARAM](L), cast[LPARAM](lp))
-template MCIWndGetStart*(hwnd: HWND): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_GETSTART, 0, 0)
-template MCIWndGetLength*(hwnd: HWND): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_GETLENGTH, 0, 0)
-template MCIWndGetEnd*(hwnd: HWND): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_GETEND, 0, 0)
-template MCIWndStep*(hwnd: HWND, n: LONG): LONG = discardable LONG SendMessage(hwnd, MCI_STEP, 0, cast[LPARAM](n))
-template MCIWndDestroy*(hwnd: HWND): void = SendMessage(hwnd, WM_CLOSE, 0, 0)
-template MCIWndSetZoom*(hwnd: HWND, iZoom: UINT): void = SendMessage(hwnd, MCIWNDM_SETZOOM, 0, cast[LPARAM](iZoom))
-template MCIWndGetZoom*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, MCIWNDM_GETZOOM, 0, 0)
-template MCIWndSetVolume*(hwnd: HWND, iVol: UINT): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_SETVOLUME, 0, cast[LPARAM](iVol))
-template MCIWndGetVolume*(hwnd: HWND): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_GETVOLUME, 0, 0)
-template MCIWndSetSpeed*(hwnd: HWND, iSpeed: UINT): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_SETSPEED, 0, cast[LPARAM](iSpeed))
-template MCIWndGetSpeed*(hwnd: HWND): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_GETSPEED, 0, 0)
+  const MCIWNDM_OPEN* = MCIWNDM_OPENA
+template MCIWndOpen*(hwnd: HWND, sz: LPVOID, f: UINT): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_OPEN, cast[WPARAM](f), cast[LPARAM](sz))
+
+template MCIWndOpenDialog*(hwnd: HWND): LONG =
+  discardable MCIWndOpen(hwnd, cast[LPVOID](-1), 0)
+
+template MCIWndClose*(hwnd: HWND): LONG =
+  discardable LONG SendMessage(hwnd, MCI_CLOSE, 0, 0)
+
+template MCIWndPlay*(hwnd: HWND): LONG =
+  discardable LONG SendMessage(hwnd, MCI_PLAY, 0, 0)
+
+template MCIWndStop*(hwnd: HWND): LONG =
+  discardable LONG SendMessage(hwnd, MCI_STOP, 0, 0)
+
+template MCIWndPause*(hwnd: HWND): LONG =
+  discardable LONG SendMessage(hwnd, MCI_PAUSE, 0, 0)
+
+template MCIWndResume*(hwnd: HWND): LONG =
+  discardable LONG SendMessage(hwnd, MCI_RESUME, 0, 0)
+
+template MCIWndSeek*(hwnd: HWND, lPos: LONG): LONG =
+  discardable LONG SendMessage(hwnd, MCI_SEEK, 0, cast[LPARAM](lPos))
+
+template MCIWndEject*(hwnd: HWND): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_EJECT, 0, 0)
+
+template MCIWndHome*(hwnd: HWND): LONG =
+  discardable MCIWndSeek(hwnd, MCIWND_START)
+
+template MCIWndToEnd*(hwnd: HWND): LONG =
+  discardable MCIWndSeek(hwnd, MCIWND_END)
+
+template MCIWndGetSource*(hwnd: HWND, prc: LPRECT): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_GET_SOURCE, 0, cast[LPARAM](prc))
+
+template MCIWndPutSource*(hwnd: HWND, prc: LPRECT): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_PUT_SOURCE, 0, cast[LPARAM](prc))
+
+template MCIWndGetDest*(hwnd: HWND, prc: LPRECT): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_GET_DEST, 0, cast[LPARAM](prc))
+
+template MCIWndPutDest*(hwnd: HWND, prc: LPRECT): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_PUT_DEST, 0, cast[LPARAM](prc))
+
+template MCIWndPlayReverse*(hwnd: HWND): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_PLAYREVERSE, 0, 0)
+
+template MCIWndPlayFrom*(hwnd: HWND, lPos: LONG): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_PLAYFROM, 0, cast[LPARAM](lPos))
+
+template MCIWndPlayTo*(hwnd: HWND, lPos: LONG): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_PLAYTO, 0, cast[LPARAM](lPos))
+
+template MCIWndPlayFromTo*(hwnd: HWND, lStart: LONG, lEnd: LONG): LONG =
+  MCIWndSeek(hwnd, lStart)
+  discardable MCIWndPlayTo(hwnd, lEnd)
+
+template MCIWndGetDeviceID*(hwnd: HWND): UINT =
+  discardable UINT SendMessage(hwnd, MCIWNDM_GETDEVICEID, 0, 0)
+
+template MCIWndGetAlias*(hwnd: HWND): UINT =
+  discardable UINT SendMessage(hwnd, MCIWNDM_GETALIAS, 0, 0)
+
+when winimUnicode:
+  const MCIWNDM_GETMODE* = MCIWNDM_GETMODEW
+when winimAnsi:
+  const MCIWNDM_GETMODE* = MCIWNDM_GETMODEA
+template MCIWndGetMode*(hwnd: HWND, lp: LPTSTR, L: UINT): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_GETMODE, cast[WPARAM](L), cast[LPARAM](lp))
+
 when winimUnicode:
-  const
-    MCIWNDM_SETTIMEFORMAT* = MCIWNDM_SETTIMEFORMATW
-when winimAnsi:
-  const
-    MCIWNDM_SETTIMEFORMAT* = MCIWNDM_SETTIMEFORMATA
-template MCIWndSetTimeFormat*(hwnd: HWND, lp: LPTSTR): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_SETTIMEFORMAT, 0, cast[LPARAM](lp))
-when winimUnicode:
-  const
-    MCIWNDM_GETTIMEFORMAT* = MCIWNDM_GETTIMEFORMATW
-when winimAnsi:
-  const
-    MCIWNDM_GETTIMEFORMAT* = MCIWNDM_GETTIMEFORMATA
-template MCIWndGetTimeFormat*(hwnd: HWND, lp: LPTSTR, L: UINT): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_GETTIMEFORMAT, cast[WPARAM](L), cast[LPARAM](lp))
-template MCIWndValidateMedia*(hwnd: HWND): void = SendMessage(hwnd, MCIWNDM_VALIDATEMEDIA, 0, 0)
-template MCIWndSetRepeat*(hwnd: HWND, f: BOOL): void = SendMessage(hwnd, MCIWNDM_SETREPEAT, 0, cast[LPARAM](f))
-template MCIWndGetRepeat*(hwnd: HWND): BOOL = discardable BOOL SendMessage(hwnd, MCIWNDM_GETREPEAT, 0, 0)
-template MCIWndSetActiveTimer*(hwnd: HWND, active: UINT): void = SendMessage(hwnd, MCIWNDM_SETACTIVETIMER, cast[WPARAM](active), 0)
-template MCIWndSetInactiveTimer*(hwnd: HWND, inactive: UINT): void = SendMessage(hwnd, MCIWNDM_SETINACTIVETIMER, cast[WPARAM](inactive), 0)
-template MCIWndSetTimers*(hwnd: HWND, active: UINT, inactive: UINT): void = SendMessage(hwnd, MCIWNDM_SETTIMERS, cast[WPARAM](active), cast[LPARAM](inactive))
-template MCIWndGetActiveTimer*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, MCIWNDM_GETACTIVETIMER, 0, 0)
-template MCIWndGetInactiveTimer*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, MCIWNDM_GETINACTIVETIMER, 0, 0)
-template MCIWndRealize*(hwnd: HWND, fBkgnd: BOOL): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_REALIZE, cast[WPARAM](fBkgnd), 0)
-when winimUnicode:
-  const
-    MCIWNDM_SENDSTRING* = MCIWNDM_SENDSTRINGW
+  const MCIWNDM_GETPOSITION* = MCIWNDM_GETPOSITIONW
 when winimAnsi:
-  const
-    MCIWNDM_SENDSTRING* = MCIWNDM_SENDSTRINGA
-template MCIWndSendString*(hwnd: HWND, sz: LPTSTR): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_SENDSTRING, 0, cast[LPARAM](sz))
-when winimUnicode:
-  const
-    MCIWNDM_RETURNSTRING* = MCIWNDM_RETURNSTRINGW
-when winimAnsi:
-  const
-    MCIWNDM_RETURNSTRING* = MCIWNDM_RETURNSTRINGA
-template MCIWndReturnString*(hwnd: HWND, lp: LPVOID, L: UINT): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_RETURNSTRING, cast[WPARAM](L), cast[LPARAM](lp))
+  const MCIWNDM_GETPOSITION* = MCIWNDM_GETPOSITIONA
+template MCIWndGetPosition*(hwnd: HWND): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_GETPOSITION, 0, 0)
+
+template MCIWndGetPositionString*(hwnd: HWND, lp: LPTSTR, L: UINT): LONG =
+  discardable LONG SendMessage(
+    hwnd, MCIWNDM_GETPOSITION, cast[WPARAM](L), cast[LPARAM](lp)
+  )
+
+template MCIWndGetStart*(hwnd: HWND): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_GETSTART, 0, 0)
+
+template MCIWndGetLength*(hwnd: HWND): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_GETLENGTH, 0, 0)
+
+template MCIWndGetEnd*(hwnd: HWND): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_GETEND, 0, 0)
+
+template MCIWndStep*(hwnd: HWND, n: LONG): LONG =
+  discardable LONG SendMessage(hwnd, MCI_STEP, 0, cast[LPARAM](n))
+
+template MCIWndDestroy*(hwnd: HWND): void =
+  SendMessage(hwnd, WM_CLOSE, 0, 0)
+
+template MCIWndSetZoom*(hwnd: HWND, iZoom: UINT): void =
+  SendMessage(hwnd, MCIWNDM_SETZOOM, 0, cast[LPARAM](iZoom))
+
+template MCIWndGetZoom*(hwnd: HWND): UINT =
+  discardable UINT SendMessage(hwnd, MCIWNDM_GETZOOM, 0, 0)
+
+template MCIWndSetVolume*(hwnd: HWND, iVol: UINT): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_SETVOLUME, 0, cast[LPARAM](iVol))
+
+template MCIWndGetVolume*(hwnd: HWND): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_GETVOLUME, 0, 0)
+
+template MCIWndSetSpeed*(hwnd: HWND, iSpeed: UINT): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_SETSPEED, 0, cast[LPARAM](iSpeed))
+
+template MCIWndGetSpeed*(hwnd: HWND): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_GETSPEED, 0, 0)
+
 when winimUnicode:
-  const
-    MCIWNDM_GETERROR* = MCIWNDM_GETERRORW
+  const MCIWNDM_SETTIMEFORMAT* = MCIWNDM_SETTIMEFORMATW
+when winimAnsi:
+  const MCIWNDM_SETTIMEFORMAT* = MCIWNDM_SETTIMEFORMATA
+template MCIWndSetTimeFormat*(hwnd: HWND, lp: LPTSTR): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_SETTIMEFORMAT, 0, cast[LPARAM](lp))
+
+when winimUnicode:
+  const MCIWNDM_GETTIMEFORMAT* = MCIWNDM_GETTIMEFORMATW
 when winimAnsi:
-  const
-    MCIWNDM_GETERROR* = MCIWNDM_GETERRORA
-template MCIWndGetError*(hwnd: HWND, lp: LPVOID, L: UINT): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_GETERROR, cast[WPARAM](L), cast[LPARAM](lp))
-template MCIWndGetPalette*(hwnd: HWND): HPALETTE = discardable HPALETTE SendMessage(hwnd, MCIWNDM_GETPALETTE, 0, 0)
-template MCIWndSetPalette*(hwnd: HWND, hpal: HPALETTE): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_SETPALETTE, cast[WPARAM](hpal), 0)
-when winimUnicode:
-  const
-    MCIWNDM_GETFILENAME* = MCIWNDM_GETFILENAMEW
-when winimAnsi:
-  const
-    MCIWNDM_GETFILENAME* = MCIWNDM_GETFILENAMEA
-template MCIWndGetFileName*(hwnd: HWND, lp: LPVOID, L: UINT): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_GETFILENAME, cast[WPARAM](L), cast[LPARAM](lp))
+  const MCIWNDM_GETTIMEFORMAT* = MCIWNDM_GETTIMEFORMATA
+template MCIWndGetTimeFormat*(hwnd: HWND, lp: LPTSTR, L: UINT): LONG =
+  discardable LONG SendMessage(
+    hwnd, MCIWNDM_GETTIMEFORMAT, cast[WPARAM](L), cast[LPARAM](lp)
+  )
+
+template MCIWndValidateMedia*(hwnd: HWND): void =
+  SendMessage(hwnd, MCIWNDM_VALIDATEMEDIA, 0, 0)
+
+template MCIWndSetRepeat*(hwnd: HWND, f: BOOL): void =
+  SendMessage(hwnd, MCIWNDM_SETREPEAT, 0, cast[LPARAM](f))
+
+template MCIWndGetRepeat*(hwnd: HWND): BOOL =
+  discardable BOOL SendMessage(hwnd, MCIWNDM_GETREPEAT, 0, 0)
+
+template MCIWndSetActiveTimer*(hwnd: HWND, active: UINT): void =
+  SendMessage(hwnd, MCIWNDM_SETACTIVETIMER, cast[WPARAM](active), 0)
+
+template MCIWndSetInactiveTimer*(hwnd: HWND, inactive: UINT): void =
+  SendMessage(hwnd, MCIWNDM_SETINACTIVETIMER, cast[WPARAM](inactive), 0)
+
+template MCIWndSetTimers*(hwnd: HWND, active: UINT, inactive: UINT): void =
+  SendMessage(hwnd, MCIWNDM_SETTIMERS, cast[WPARAM](active), cast[LPARAM](inactive))
+
+template MCIWndGetActiveTimer*(hwnd: HWND): UINT =
+  discardable UINT SendMessage(hwnd, MCIWNDM_GETACTIVETIMER, 0, 0)
+
+template MCIWndGetInactiveTimer*(hwnd: HWND): UINT =
+  discardable UINT SendMessage(hwnd, MCIWNDM_GETINACTIVETIMER, 0, 0)
+
+template MCIWndRealize*(hwnd: HWND, fBkgnd: BOOL): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_REALIZE, cast[WPARAM](fBkgnd), 0)
+
 when winimUnicode:
-  const
-    MCIWNDM_GETDEVICE* = MCIWNDM_GETDEVICEW
+  const MCIWNDM_SENDSTRING* = MCIWNDM_SENDSTRINGW
+when winimAnsi:
+  const MCIWNDM_SENDSTRING* = MCIWNDM_SENDSTRINGA
+template MCIWndSendString*(hwnd: HWND, sz: LPTSTR): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_SENDSTRING, 0, cast[LPARAM](sz))
+
+when winimUnicode:
+  const MCIWNDM_RETURNSTRING* = MCIWNDM_RETURNSTRINGW
+when winimAnsi:
+  const MCIWNDM_RETURNSTRING* = MCIWNDM_RETURNSTRINGA
+template MCIWndReturnString*(hwnd: HWND, lp: LPVOID, L: UINT): LONG =
+  discardable LONG SendMessage(
+    hwnd, MCIWNDM_RETURNSTRING, cast[WPARAM](L), cast[LPARAM](lp)
+  )
+
+when winimUnicode:
+  const MCIWNDM_GETERROR* = MCIWNDM_GETERRORW
+when winimAnsi:
+  const MCIWNDM_GETERROR* = MCIWNDM_GETERRORA
+template MCIWndGetError*(hwnd: HWND, lp: LPVOID, L: UINT): LONG =
+  discardable LONG SendMessage(
+    hwnd, MCIWNDM_GETERROR, cast[WPARAM](L), cast[LPARAM](lp)
+  )
+
+template MCIWndGetPalette*(hwnd: HWND): HPALETTE =
+  discardable HPALETTE SendMessage(hwnd, MCIWNDM_GETPALETTE, 0, 0)
+
+template MCIWndSetPalette*(hwnd: HWND, hpal: HPALETTE): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_SETPALETTE, cast[WPARAM](hpal), 0)
+
+when winimUnicode:
+  const MCIWNDM_GETFILENAME* = MCIWNDM_GETFILENAMEW
+when winimAnsi:
+  const MCIWNDM_GETFILENAME* = MCIWNDM_GETFILENAMEA
+template MCIWndGetFileName*(hwnd: HWND, lp: LPVOID, L: UINT): LONG =
+  discardable LONG SendMessage(
+    hwnd, MCIWNDM_GETFILENAME, cast[WPARAM](L), cast[LPARAM](lp)
+  )
+
+when winimUnicode:
+  const MCIWNDM_GETDEVICE* = MCIWNDM_GETDEVICEW
 when winimAnsi:
-  const
-    MCIWNDM_GETDEVICE* = MCIWNDM_GETDEVICEA
-template MCIWndGetDevice*(hwnd: HWND, lp: LPVOID, L: UINT): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_GETDEVICE, cast[WPARAM](L), cast[LPARAM](lp))
-template MCIWndGetStyles*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, MCIWNDM_GETSTYLES, 0, 0)
-template MCIWndChangeStyles*(hwnd: HWND, mask: UINT, value: LONG): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_CHANGESTYLES, cast[WPARAM](mask), cast[LPARAM](value))
-template MCIWndOpenInterface*(hwnd: HWND, pUnk): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_OPENINTERFACE, 0, cast[LPARAM](pUnk))
-template MCIWndSetOwner*(hwnd: HWND, hwndP): LONG = discardable LONG SendMessage(hwnd, MCIWNDM_SETOWNER, cast[WPARAM](hwndP), 0)
-template ICQueryAbout*(hic: HIC): bool = discardable ICSendMessage(hic, ICM_ABOUT, cast[DWORD_PTR](-1), ICMF_ABOUT_QUERY) == ICERR_OK
-template ICAbout*(hic: HIC, hwnd: HWND): LRESULT = discardable ICSendMessage(hic, ICM_ABOUT, cast[DWORD_PTR](hwnd), 0)
-template ICQueryConfigure*(hic: HIC): bool = discardable ICSendMessage(hic, ICM_CONFIGURE, cast[DWORD_PTR](-1), ICMF_CONFIGURE_QUERY) == ICERR_OK
-template ICConfigure*(hic: HIC, hwnd: HWND): LRESULT = discardable ICSendMessage(hic, ICM_CONFIGURE, cast[DWORD_PTR](hwnd), 0)
-template ICGetState*(hic: HIC, pv: LPVOID, cb: DWORD_PTR): LRESULT = discardable ICSendMessage(hic, ICM_GETSTATE, cast[DWORD_PTR](pv), cb)
-template ICSetState*(hic: HIC, pv: LPVOID, cb: DWORD_PTR): LRESULT = discardable ICSendMessage(hic, ICM_SETSTATE, cast[DWORD_PTR](pv), cb)
-template ICGetStateSize*(hic: HIC): DWORD = discardable DWORD ICGetState(hic, 0, 0)
-template ICDrawWindow*(hic: HIC, prc: LPVOID): LRESULT = discardable ICSendMessage(hic, ICM_DRAW_WINDOW, cast[DWORD_PTR](prc), cast[DWORD_PTR](sizeof(RECT)))
-template ICCompressBegin*(hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID): LRESULT = discardable ICSendMessage(hic, ICM_COMPRESS_BEGIN, cast[DWORD_PTR](lpbiInput), cast[DWORD_PTR](lpbiOutput))
-template ICCompressQuery*(hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID): LRESULT = discardable ICSendMessage(hic, ICM_COMPRESS_QUERY, cast[DWORD_PTR](lpbiInput), cast[DWORD_PTR](lpbiOutput))
-template ICCompressGetFormat*(hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID): LRESULT = discardable ICSendMessage(hic, ICM_COMPRESS_GET_FORMAT, cast[DWORD_PTR](lpbiInput), cast[DWORD_PTR](lpbiOutput))
-template ICCompressGetFormatSize*(hic: HIC, lpbi: LPVOID): DWORD = discardable DWORD ICCompressGetFormat(hic, lpbi, nil)
-template ICCompressGetSize*(hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID): DWORD = discardable DWORD ICSendMessage(hic, ICM_COMPRESS_GET_SIZE, cast[DWORD_PTR](lpbiInput), cast[DWORD_PTR](lpbiOutput))
-template ICCompressEnd*(hic: HIC): LRESULT = discardable ICSendMessage(hic, ICM_COMPRESS_END, 0, 0)
-template ICDecompressBegin*(hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID): LRESULT = discardable ICSendMessage(hic, ICM_DECOMPRESS_BEGIN, cast[DWORD_PTR](lpbiInput), cast[DWORD_PTR](lpbiOutput))
-template ICDecompressQuery*(hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID): LRESULT = discardable ICSendMessage(hic, ICM_DECOMPRESS_QUERY, cast[DWORD_PTR](lpbiInput), cast[DWORD_PTR](lpbiOutput))
-template ICDecompressGetFormat*(hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID): LONG = discardable LONG ICSendMessage(hic, ICM_DECOMPRESS_GET_FORMAT, cast[DWORD_PTR](lpbiInput), cast[DWORD_PTR](lpbiOutput))
-template ICDecompressGetFormatSize*(hic: HIC, lpbi: LPVOID): LRESULT = discardable ICDecompressGetFormat(hic, lpbi, nil)
-template ICDecompressGetPalette*(hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID): LRESULT = discardable ICSendMessage(hic, ICM_DECOMPRESS_GET_PALETTE, cast[DWORD_PTR](lpbiInput), cast[DWORD_PTR](lpbiOutput))
-template ICDecompressSetPalette*(hic: HIC, lpbiPalette: LPVOID): LRESULT = discardable ICSendMessage(hic, ICM_DECOMPRESS_SET_PALETTE, cast[DWORD_PTR](lpbiPalette), 0)
-template ICDecompressEnd*(hic: HIC): LRESULT = discardable ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0)
-template ICDecompressExEnd*(hic: HIC): LRESULT = discardable ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0)
-template ICDrawQuery2*(hic: HIC, lpbiInput: LPVOID): LRESULT = discardable ICSendMessage(hic, ICM_DRAW_QUERY, cast[DWORD_PTR](lpbiInput), 0)
-template ICDrawChangePalette*(hic: HIC, lpbiInput: LPVOID): LRESULT = discardable ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, cast[DWORD_PTR](lpbiInput), 0)
-template ICGetBuffersWanted*(hic: HIC, lpdwBuffers: LPVOID): LRESULT = discardable ICSendMessage(hic, ICM_GETBUFFERSWANTED, cast[DWORD_PTR](lpdwBuffers), 0)
-template ICDrawEnd*(hic: HIC): LRESULT = discardable ICSendMessage(hic, ICM_DRAW_END, 0, 0)
-template ICDrawStart*(hic: HIC): LRESULT = discardable ICSendMessage(hic, ICM_DRAW_START, 0, 0)
-template ICDrawStartPlay*(hic: HIC, lFrom: LONG, lTo: LONG): LRESULT = discardable ICSendMessage(hic, ICM_DRAW_START_PLAY, cast[DWORD_PTR](lFrom), cast[DWORD_PTR](lTo))
-template ICDrawStop*(hic: HIC): LRESULT = discardable ICSendMessage(hic, ICM_DRAW_STOP, 0, 0)
-template ICDrawStopPlay*(hic: HIC): LRESULT = discardable ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0)
-template ICDrawGetTime*(hic: HIC, lplTime: LPVOID): LRESULT = discardable ICSendMessage(hic, ICM_DRAW_GETTIME, cast[DWORD_PTR](lplTime), 0)
-template ICDrawSetTime*(hic: HIC, lTime: LONG): LRESULT = discardable ICSendMessage(hic, ICM_DRAW_SETTIME, cast[DWORD_PTR](lTime), 0)
-template ICDrawRealize*(hic: HIC, hdc: HDC, fBackground: BOOL): LRESULT = discardable ICSendMessage(hic, ICM_DRAW_REALIZE, cast[DWORD_PTR](hdc), cast[DWORD_PTR](fBackground))
-template ICDrawFlush*(hic: HIC): LRESULT = discardable ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0)
-template ICDrawRenderBuffer*(hic: HIC): LRESULT = discardable ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0)
-template ICDecompressOpen*(fccType: DWORD, fccHandler: DWORD, lpbiIn: LPVOID, lpbiOut: LPVOID): HIC = discardable ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS)
-template ICDrawOpen*(fccType: DWORD, fccHandler: DWORD, lpbiIn: LPVOID): HIC = discardable ICLocate(fccType, fccHandler, lpbiIn, nil, ICMODE_DRAW)
-template DrawDibUpdate*(hdd: HDRAWDIB, hdc: HDC, x: int32, y: int32): WINBOOL = discardable DrawDibDraw(hdd, hdc, x, y, 0, 0, nil, nil, 0, 0, 0, 0, DDF_UPDATE)
-template AVIStreamSampleToSample*(pavi1: PAVISTREAM, pavi2: PAVISTREAM, l: LONG): LONG = discardable AVIStreamTimeToSample(pavi1, AVIStreamSampleToTime(pavi2, l))
-template AVIStreamNextSample*(pavi: PAVISTREAM, l: LONG): LONG = discardable AVIStreamFindSample(pavi, l+1, FIND_NEXT or FIND_ANY)
-template AVIStreamPrevSample*(pavi: PAVISTREAM, l: LONG): LONG = discardable AVIStreamFindSample(pavi, l-1, FIND_PREV or FIND_ANY)
-template AVIStreamNearestSample*(pavi: PAVISTREAM, l: LONG): LONG = discardable AVIStreamFindSample(pavi, l, FIND_PREV or FIND_ANY)
-template AVIStreamNextKeyFrame*(pavi: PAVISTREAM, l: LONG): LONG = discardable AVIStreamFindSample(pavi, l+1, FIND_NEXT or FIND_KEY)
-template AVIStreamPrevKeyFrame*(pavi: PAVISTREAM, l: LONG): LONG = discardable AVIStreamFindSample(pavi, l-1, FIND_PREV or FIND_KEY)
-template AVIStreamNearestKeyFrame*(pavi: PAVISTREAM, l: LONG): LONG = discardable AVIStreamFindSample(pavi, l, FIND_PREV or FIND_KEY)
-template AVIStreamIsKeyFrame*(pavi: PAVISTREAM, l: LONG): bool = AVIStreamNearestKeyFrame(pavi, l) == l
-template AVIStreamPrevSampleTime*(pavi: PAVISTREAM, t: LONG): LONG = discardable AVIStreamSampleToTime(pavi, AVIStreamPrevSample(pavi, AVIStreamTimeToSample(pavi, t)))
-template AVIStreamNextSampleTime*(pavi: PAVISTREAM, t: LONG): LONG = discardable AVIStreamSampleToTime(pavi, AVIStreamNextSample(pavi, AVIStreamTimeToSample(pavi, t)))
-template AVIStreamNearestSampleTime*(pavi: PAVISTREAM, t: LONG): LONG = discardable AVIStreamSampleToTime(pavi, AVIStreamNearestSample(pavi, AVIStreamTimeToSample(pavi, t)))
-template AVIStreamNextKeyFrameTime*(pavi: PAVISTREAM, t: LONG): LONG = discardable AVIStreamSampleToTime(pavi, AVIStreamNextKeyFrame(pavi, AVIStreamTimeToSample(pavi, t)))
-template AVIStreamPrevKeyFrameTime*(pavi: PAVISTREAM, t: LONG): LONG = discardable AVIStreamSampleToTime(pavi, AVIStreamPrevKeyFrame(pavi, AVIStreamTimeToSample(pavi, t)))
-template AVIStreamNearestKeyFrameTime*(pavi: PAVISTREAM, t: LONG): LONG = discardable AVIStreamSampleToTime(pavi, AVIStreamNearestKeyFrame(pavi, AVIStreamTimeToSample(pavi, t)))
-template AVIStreamStartTime*(pavi: PAVISTREAM): LONG = discardable AVIStreamSampleToTime(pavi, AVIStreamStart(pavi))
-template AVIStreamLengthTime*(pavi: PAVISTREAM): LONG = discardable AVIStreamSampleToTime(pavi, AVIStreamLength(pavi))
-template AVIStreamEnd*(pavi: PAVISTREAM): LONG = discardable(AVIStreamStart(pavi) + AVIStreamLength(pavi))
-template AVIStreamEndTime*(pavi: PAVISTREAM): LONG = discardable AVIStreamSampleToTime(pavi, AVIStreamEnd(pavi))
-template AVIStreamSampleSize*(pavi: PAVISTREAM, lPos: LONG, plSize: ptr LONG): HRESULT = discardable AVIStreamRead(pavi, lPos, 1, nil, 0, plSize, nil)
-template AVIStreamFormatSize*(pavi: PAVISTREAM, lPos: LONG, plSize: ptr LONG): HRESULT = discardable AVIStreamReadFormat(pavi, lPos, nil, plSize)
-template AVIStreamDataSize*(pavi: PAVISTREAM, fcc: DWORD, plSize: ptr LONG): HRESULT = discardable AVIStreamReadData(pavi, fcc, nil, plSize)
-template AVStreamNextKeyFrame*(pavi: PAVISTREAM, pos: LONG): LONG = discardable AVIStreamFindSample(pavi, pos+1, FIND_NEXT or FIND_KEY)
-template AVStreamPrevKeyFrame*(pavi: PAVISTREAM, pos: LONG): LONG = discardable AVIStreamFindSample(pavi, pos-1, FIND_NEXT or FIND_KEY)
-template AVICapSM*(hwnd: HWND, msg: UINT, wparam: untyped, lparam: untyped): LRESULT = (if IsWindow(hwnd) != FALSE: SendMessage(hwnd, msg, cast[WPARAM](wparam), cast[LPARAM](lparam)) else: 0)
+  const MCIWNDM_GETDEVICE* = MCIWNDM_GETDEVICEA
+template MCIWndGetDevice*(hwnd: HWND, lp: LPVOID, L: UINT): LONG =
+  discardable LONG SendMessage(
+    hwnd, MCIWNDM_GETDEVICE, cast[WPARAM](L), cast[LPARAM](lp)
+  )
+
+template MCIWndGetStyles*(hwnd: HWND): UINT =
+  discardable UINT SendMessage(hwnd, MCIWNDM_GETSTYLES, 0, 0)
+
+template MCIWndChangeStyles*(hwnd: HWND, mask: UINT, value: LONG): LONG =
+  discardable LONG SendMessage(
+    hwnd, MCIWNDM_CHANGESTYLES, cast[WPARAM](mask), cast[LPARAM](value)
+  )
+
+template MCIWndOpenInterface*(hwnd: HWND, pUnk): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_OPENINTERFACE, 0, cast[LPARAM](pUnk))
+
+template MCIWndSetOwner*(hwnd: HWND, hwndP): LONG =
+  discardable LONG SendMessage(hwnd, MCIWNDM_SETOWNER, cast[WPARAM](hwndP), 0)
+
+template ICQueryAbout*(hic: HIC): bool =
+  discardable ICSendMessage(hic, ICM_ABOUT, cast[DWORD_PTR](-1), ICMF_ABOUT_QUERY) ==
+    ICERR_OK
+
+template ICAbout*(hic: HIC, hwnd: HWND): LRESULT =
+  discardable ICSendMessage(hic, ICM_ABOUT, cast[DWORD_PTR](hwnd), 0)
+
+template ICQueryConfigure*(hic: HIC): bool =
+  discardable ICSendMessage(
+    hic, ICM_CONFIGURE, cast[DWORD_PTR](-1), ICMF_CONFIGURE_QUERY
+  ) == ICERR_OK
+
+template ICConfigure*(hic: HIC, hwnd: HWND): LRESULT =
+  discardable ICSendMessage(hic, ICM_CONFIGURE, cast[DWORD_PTR](hwnd), 0)
+
+template ICGetState*(hic: HIC, pv: LPVOID, cb: DWORD_PTR): LRESULT =
+  discardable ICSendMessage(hic, ICM_GETSTATE, cast[DWORD_PTR](pv), cb)
+
+template ICSetState*(hic: HIC, pv: LPVOID, cb: DWORD_PTR): LRESULT =
+  discardable ICSendMessage(hic, ICM_SETSTATE, cast[DWORD_PTR](pv), cb)
+
+template ICGetStateSize*(hic: HIC): DWORD =
+  discardable DWORD ICGetState(hic, 0, 0)
+
+template ICDrawWindow*(hic: HIC, prc: LPVOID): LRESULT =
+  discardable ICSendMessage(
+    hic, ICM_DRAW_WINDOW, cast[DWORD_PTR](prc), cast[DWORD_PTR](sizeof(RECT))
+  )
+
+template ICCompressBegin*(hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID): LRESULT =
+  discardable ICSendMessage(
+    hic, ICM_COMPRESS_BEGIN, cast[DWORD_PTR](lpbiInput), cast[DWORD_PTR](lpbiOutput)
+  )
+
+template ICCompressQuery*(hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID): LRESULT =
+  discardable ICSendMessage(
+    hic, ICM_COMPRESS_QUERY, cast[DWORD_PTR](lpbiInput), cast[DWORD_PTR](lpbiOutput)
+  )
+
+template ICCompressGetFormat*(
+    hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID
+): LRESULT =
+  discardable ICSendMessage(
+    hic,
+    ICM_COMPRESS_GET_FORMAT,
+    cast[DWORD_PTR](lpbiInput),
+    cast[DWORD_PTR](lpbiOutput),
+  )
+
+template ICCompressGetFormatSize*(hic: HIC, lpbi: LPVOID): DWORD =
+  discardable DWORD ICCompressGetFormat(hic, lpbi, nil)
+
+template ICCompressGetSize*(hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID): DWORD =
+  discardable DWORD ICSendMessage(
+    hic, ICM_COMPRESS_GET_SIZE, cast[DWORD_PTR](lpbiInput), cast[DWORD_PTR](lpbiOutput)
+  )
+
+template ICCompressEnd*(hic: HIC): LRESULT =
+  discardable ICSendMessage(hic, ICM_COMPRESS_END, 0, 0)
+
+template ICDecompressBegin*(hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID): LRESULT =
+  discardable ICSendMessage(
+    hic, ICM_DECOMPRESS_BEGIN, cast[DWORD_PTR](lpbiInput), cast[DWORD_PTR](lpbiOutput)
+  )
+
+template ICDecompressQuery*(hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID): LRESULT =
+  discardable ICSendMessage(
+    hic, ICM_DECOMPRESS_QUERY, cast[DWORD_PTR](lpbiInput), cast[DWORD_PTR](lpbiOutput)
+  )
+
+template ICDecompressGetFormat*(hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID): LONG =
+  discardable LONG ICSendMessage(
+    hic,
+    ICM_DECOMPRESS_GET_FORMAT,
+    cast[DWORD_PTR](lpbiInput),
+    cast[DWORD_PTR](lpbiOutput),
+  )
+
+template ICDecompressGetFormatSize*(hic: HIC, lpbi: LPVOID): LRESULT =
+  discardable ICDecompressGetFormat(hic, lpbi, nil)
+
+template ICDecompressGetPalette*(
+    hic: HIC, lpbiInput: LPVOID, lpbiOutput: LPVOID
+): LRESULT =
+  discardable ICSendMessage(
+    hic,
+    ICM_DECOMPRESS_GET_PALETTE,
+    cast[DWORD_PTR](lpbiInput),
+    cast[DWORD_PTR](lpbiOutput),
+  )
+
+template ICDecompressSetPalette*(hic: HIC, lpbiPalette: LPVOID): LRESULT =
+  discardable ICSendMessage(
+    hic, ICM_DECOMPRESS_SET_PALETTE, cast[DWORD_PTR](lpbiPalette), 0
+  )
+
+template ICDecompressEnd*(hic: HIC): LRESULT =
+  discardable ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0)
+
+template ICDecompressExEnd*(hic: HIC): LRESULT =
+  discardable ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0)
+
+template ICDrawQuery2*(hic: HIC, lpbiInput: LPVOID): LRESULT =
+  discardable ICSendMessage(hic, ICM_DRAW_QUERY, cast[DWORD_PTR](lpbiInput), 0)
+
+template ICDrawChangePalette*(hic: HIC, lpbiInput: LPVOID): LRESULT =
+  discardable ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, cast[DWORD_PTR](lpbiInput), 0)
+
+template ICGetBuffersWanted*(hic: HIC, lpdwBuffers: LPVOID): LRESULT =
+  discardable ICSendMessage(hic, ICM_GETBUFFERSWANTED, cast[DWORD_PTR](lpdwBuffers), 0)
+
+template ICDrawEnd*(hic: HIC): LRESULT =
+  discardable ICSendMessage(hic, ICM_DRAW_END, 0, 0)
+
+template ICDrawStart*(hic: HIC): LRESULT =
+  discardable ICSendMessage(hic, ICM_DRAW_START, 0, 0)
+
+template ICDrawStartPlay*(hic: HIC, lFrom: LONG, lTo: LONG): LRESULT =
+  discardable ICSendMessage(
+    hic, ICM_DRAW_START_PLAY, cast[DWORD_PTR](lFrom), cast[DWORD_PTR](lTo)
+  )
+
+template ICDrawStop*(hic: HIC): LRESULT =
+  discardable ICSendMessage(hic, ICM_DRAW_STOP, 0, 0)
+
+template ICDrawStopPlay*(hic: HIC): LRESULT =
+  discardable ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0)
+
+template ICDrawGetTime*(hic: HIC, lplTime: LPVOID): LRESULT =
+  discardable ICSendMessage(hic, ICM_DRAW_GETTIME, cast[DWORD_PTR](lplTime), 0)
+
+template ICDrawSetTime*(hic: HIC, lTime: LONG): LRESULT =
+  discardable ICSendMessage(hic, ICM_DRAW_SETTIME, cast[DWORD_PTR](lTime), 0)
+
+template ICDrawRealize*(hic: HIC, hdc: HDC, fBackground: BOOL): LRESULT =
+  discardable ICSendMessage(
+    hic, ICM_DRAW_REALIZE, cast[DWORD_PTR](hdc), cast[DWORD_PTR](fBackground)
+  )
+
+template ICDrawFlush*(hic: HIC): LRESULT =
+  discardable ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0)
+
+template ICDrawRenderBuffer*(hic: HIC): LRESULT =
+  discardable ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0)
+
+template ICDecompressOpen*(
+    fccType: DWORD, fccHandler: DWORD, lpbiIn: LPVOID, lpbiOut: LPVOID
+): HIC =
+  discardable ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS)
+
+template ICDrawOpen*(fccType: DWORD, fccHandler: DWORD, lpbiIn: LPVOID): HIC =
+  discardable ICLocate(fccType, fccHandler, lpbiIn, nil, ICMODE_DRAW)
+
+template DrawDibUpdate*(hdd: HDRAWDIB, hdc: HDC, x: int32, y: int32): WINBOOL =
+  discardable DrawDibDraw(hdd, hdc, x, y, 0, 0, nil, nil, 0, 0, 0, 0, DDF_UPDATE)
+
+template AVIStreamSampleToSample*(pavi1: PAVISTREAM, pavi2: PAVISTREAM, l: LONG): LONG =
+  discardable AVIStreamTimeToSample(pavi1, AVIStreamSampleToTime(pavi2, l))
+
+template AVIStreamNextSample*(pavi: PAVISTREAM, l: LONG): LONG =
+  discardable AVIStreamFindSample(pavi, l + 1, FIND_NEXT or FIND_ANY)
+
+template AVIStreamPrevSample*(pavi: PAVISTREAM, l: LONG): LONG =
+  discardable AVIStreamFindSample(pavi, l - 1, FIND_PREV or FIND_ANY)
+
+template AVIStreamNearestSample*(pavi: PAVISTREAM, l: LONG): LONG =
+  discardable AVIStreamFindSample(pavi, l, FIND_PREV or FIND_ANY)
+
+template AVIStreamNextKeyFrame*(pavi: PAVISTREAM, l: LONG): LONG =
+  discardable AVIStreamFindSample(pavi, l + 1, FIND_NEXT or FIND_KEY)
+
+template AVIStreamPrevKeyFrame*(pavi: PAVISTREAM, l: LONG): LONG =
+  discardable AVIStreamFindSample(pavi, l - 1, FIND_PREV or FIND_KEY)
+
+template AVIStreamNearestKeyFrame*(pavi: PAVISTREAM, l: LONG): LONG =
+  discardable AVIStreamFindSample(pavi, l, FIND_PREV or FIND_KEY)
+
+template AVIStreamIsKeyFrame*(pavi: PAVISTREAM, l: LONG): bool =
+  AVIStreamNearestKeyFrame(pavi, l) == l
+
+template AVIStreamPrevSampleTime*(pavi: PAVISTREAM, t: LONG): LONG =
+  discardable AVIStreamSampleToTime(
+    pavi, AVIStreamPrevSample(pavi, AVIStreamTimeToSample(pavi, t))
+  )
+
+template AVIStreamNextSampleTime*(pavi: PAVISTREAM, t: LONG): LONG =
+  discardable AVIStreamSampleToTime(
+    pavi, AVIStreamNextSample(pavi, AVIStreamTimeToSample(pavi, t))
+  )
+
+template AVIStreamNearestSampleTime*(pavi: PAVISTREAM, t: LONG): LONG =
+  discardable AVIStreamSampleToTime(
+    pavi, AVIStreamNearestSample(pavi, AVIStreamTimeToSample(pavi, t))
+  )
+
+template AVIStreamNextKeyFrameTime*(pavi: PAVISTREAM, t: LONG): LONG =
+  discardable AVIStreamSampleToTime(
+    pavi, AVIStreamNextKeyFrame(pavi, AVIStreamTimeToSample(pavi, t))
+  )
+
+template AVIStreamPrevKeyFrameTime*(pavi: PAVISTREAM, t: LONG): LONG =
+  discardable AVIStreamSampleToTime(
+    pavi, AVIStreamPrevKeyFrame(pavi, AVIStreamTimeToSample(pavi, t))
+  )
+
+template AVIStreamNearestKeyFrameTime*(pavi: PAVISTREAM, t: LONG): LONG =
+  discardable AVIStreamSampleToTime(
+    pavi, AVIStreamNearestKeyFrame(pavi, AVIStreamTimeToSample(pavi, t))
+  )
+
+template AVIStreamStartTime*(pavi: PAVISTREAM): LONG =
+  discardable AVIStreamSampleToTime(pavi, AVIStreamStart(pavi))
+
+template AVIStreamLengthTime*(pavi: PAVISTREAM): LONG =
+  discardable AVIStreamSampleToTime(pavi, AVIStreamLength(pavi))
+
+template AVIStreamEnd*(pavi: PAVISTREAM): LONG =
+  discardable(AVIStreamStart(pavi) + AVIStreamLength(pavi))
+
+template AVIStreamEndTime*(pavi: PAVISTREAM): LONG =
+  discardable AVIStreamSampleToTime(pavi, AVIStreamEnd(pavi))
+
+template AVIStreamSampleSize*(pavi: PAVISTREAM, lPos: LONG, plSize: ptr LONG): HRESULT =
+  discardable AVIStreamRead(pavi, lPos, 1, nil, 0, plSize, nil)
+
+template AVIStreamFormatSize*(pavi: PAVISTREAM, lPos: LONG, plSize: ptr LONG): HRESULT =
+  discardable AVIStreamReadFormat(pavi, lPos, nil, plSize)
+
+template AVIStreamDataSize*(pavi: PAVISTREAM, fcc: DWORD, plSize: ptr LONG): HRESULT =
+  discardable AVIStreamReadData(pavi, fcc, nil, plSize)
+
+template AVStreamNextKeyFrame*(pavi: PAVISTREAM, pos: LONG): LONG =
+  discardable AVIStreamFindSample(pavi, pos + 1, FIND_NEXT or FIND_KEY)
+
+template AVStreamPrevKeyFrame*(pavi: PAVISTREAM, pos: LONG): LONG =
+  discardable AVIStreamFindSample(pavi, pos - 1, FIND_NEXT or FIND_KEY)
+
+template AVICapSM*(hwnd: HWND, msg: UINT, wparam: untyped, lparam: untyped): LRESULT =
+  (
+    if IsWindow(hwnd) != FALSE:
+    SendMessage(hwnd, msg, cast[WPARAM](wparam), cast[LPARAM](lparam))
+    else: 0
+  )
+
 when winimUnicode:
-  const
-    WM_CAP_SET_CALLBACK_ERROR* = WM_CAP_SET_CALLBACK_ERRORW
+  const WM_CAP_SET_CALLBACK_ERROR* = WM_CAP_SET_CALLBACK_ERRORW
 when winimAnsi:
-  const
-    WM_CAP_SET_CALLBACK_ERROR* = WM_CAP_SET_CALLBACK_ERRORA
-template capSetCallbackOnError*(hwnd: HWND, fpProc: LPVOID): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_CALLBACK_ERROR, 0, fpProc)
+  const WM_CAP_SET_CALLBACK_ERROR* = WM_CAP_SET_CALLBACK_ERRORA
+template capSetCallbackOnError*(hwnd: HWND, fpProc: LPVOID): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_CALLBACK_ERROR, 0, fpProc)
+
 when winimUnicode:
-  const
-    WM_CAP_SET_CALLBACK_STATUS* = WM_CAP_SET_CALLBACK_STATUSW
+  const WM_CAP_SET_CALLBACK_STATUS* = WM_CAP_SET_CALLBACK_STATUSW
 when winimAnsi:
-  const
-    WM_CAP_SET_CALLBACK_STATUS* = WM_CAP_SET_CALLBACK_STATUSA
-template capSetCallbackOnStatus*(hwnd: HWND, fpProc: LPVOID): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_CALLBACK_STATUS, 0, fpProc)
-template capSetCallbackOnYield*(hwnd: HWND, fpProc: LPVOID): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_CALLBACK_YIELD, 0, fpProc)
-template capSetCallbackOnFrame*(hwnd: HWND, fpProc: LPVOID): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_CALLBACK_FRAME, 0, fpProc)
-template capSetCallbackOnVideoStream*(hwnd: HWND, fpProc: LPVOID): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, fpProc)
-template capSetCallbackOnWaveStream*(hwnd: HWND, fpProc: LPVOID): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, fpProc)
-template capSetCallbackOnCapControl*(hwnd: HWND, fpProc: LPVOID): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, fpProc)
-template capSetUserData*(hwnd: HWND, lUser: LPARAM): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_USER_DATA, 0, lUser)
-template capGetUserData*(hwnd: HWND): LPARAM = discardable LPARAM AVICapSM(hwnd, WM_CAP_GET_USER_DATA, 0, 0)
-template capDriverConnect*(hwnd: HWND, i: WPARAM): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_DRIVER_CONNECT, i, 0)
-template capDriverDisconnect*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0)
+  const WM_CAP_SET_CALLBACK_STATUS* = WM_CAP_SET_CALLBACK_STATUSA
+template capSetCallbackOnStatus*(hwnd: HWND, fpProc: LPVOID): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_CALLBACK_STATUS, 0, fpProc)
+
+template capSetCallbackOnYield*(hwnd: HWND, fpProc: LPVOID): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_CALLBACK_YIELD, 0, fpProc)
+
+template capSetCallbackOnFrame*(hwnd: HWND, fpProc: LPVOID): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_CALLBACK_FRAME, 0, fpProc)
+
+template capSetCallbackOnVideoStream*(hwnd: HWND, fpProc: LPVOID): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, fpProc)
+
+template capSetCallbackOnWaveStream*(hwnd: HWND, fpProc: LPVOID): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, fpProc)
+
+template capSetCallbackOnCapControl*(hwnd: HWND, fpProc: LPVOID): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, fpProc)
+
+template capSetUserData*(hwnd: HWND, lUser: LPARAM): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_USER_DATA, 0, lUser)
+
+template capGetUserData*(hwnd: HWND): LPARAM =
+  discardable LPARAM AVICapSM(hwnd, WM_CAP_GET_USER_DATA, 0, 0)
+
+template capDriverConnect*(hwnd: HWND, i: WPARAM): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_DRIVER_CONNECT, i, 0)
+
+template capDriverDisconnect*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0)
+
 when winimUnicode:
-  const
-    WM_CAP_DRIVER_GET_NAME* = WM_CAP_DRIVER_GET_NAMEW
+  const WM_CAP_DRIVER_GET_NAME* = WM_CAP_DRIVER_GET_NAMEW
 when winimAnsi:
-  const
-    WM_CAP_DRIVER_GET_NAME* = WM_CAP_DRIVER_GET_NAMEA
-template capDriverGetName*(hwnd: HWND, szName: LPTSTR, wSize: WPARAM): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_DRIVER_GET_NAME, wSize, szName)
+  const WM_CAP_DRIVER_GET_NAME* = WM_CAP_DRIVER_GET_NAMEA
+template capDriverGetName*(hwnd: HWND, szName: LPTSTR, wSize: WPARAM): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_DRIVER_GET_NAME, wSize, szName)
+
 when winimUnicode:
-  const
-    WM_CAP_DRIVER_GET_VERSION* = WM_CAP_DRIVER_GET_VERSIONW
+  const WM_CAP_DRIVER_GET_VERSION* = WM_CAP_DRIVER_GET_VERSIONW
 when winimAnsi:
-  const
-    WM_CAP_DRIVER_GET_VERSION* = WM_CAP_DRIVER_GET_VERSIONA
-template capDriverGetVersion*(hwnd: HWND, szVer: LPTSTR, wSize: WPARAM): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_DRIVER_GET_VERSION, wSize, szVer)
-template capDriverGetCaps*(hwnd: HWND, s: LPCAPDRIVERCAPS, wSize: WPARAM): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_DRIVER_GET_CAPS, wSize, s)
+  const WM_CAP_DRIVER_GET_VERSION* = WM_CAP_DRIVER_GET_VERSIONA
+template capDriverGetVersion*(hwnd: HWND, szVer: LPTSTR, wSize: WPARAM): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_DRIVER_GET_VERSION, wSize, szVer)
+
+template capDriverGetCaps*(hwnd: HWND, s: LPCAPDRIVERCAPS, wSize: WPARAM): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_DRIVER_GET_CAPS, wSize, s)
+
 when winimUnicode:
-  const
-    WM_CAP_FILE_SET_CAPTURE_FILE* = WM_CAP_FILE_SET_CAPTURE_FILEW
+  const WM_CAP_FILE_SET_CAPTURE_FILE* = WM_CAP_FILE_SET_CAPTURE_FILEW
 when winimAnsi:
-  const
-    WM_CAP_FILE_SET_CAPTURE_FILE* = WM_CAP_FILE_SET_CAPTURE_FILEA
-template capFileSetCaptureFile*(hwnd: HWND, szName: LPTSTR): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, szName)
+  const WM_CAP_FILE_SET_CAPTURE_FILE* = WM_CAP_FILE_SET_CAPTURE_FILEA
+template capFileSetCaptureFile*(hwnd: HWND, szName: LPTSTR): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, szName)
+
+when winimUnicode:
+  const WM_CAP_FILE_GET_CAPTURE_FILE* = WM_CAP_FILE_GET_CAPTURE_FILEW
+when winimAnsi:
+  const WM_CAP_FILE_GET_CAPTURE_FILE* = WM_CAP_FILE_GET_CAPTURE_FILEA
+template capFileGetCaptureFile*(hwnd: HWND, szName: LPTSTR, wSize: WPARAM): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_FILE_GET_CAPTURE_FILE, wSize, szName)
+
+template capFileAlloc*(hwnd: HWND, dwSize: DWORD): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_FILE_ALLOCATE, 0, dwSize)
+
 when winimUnicode:
-  const
-    WM_CAP_FILE_GET_CAPTURE_FILE* = WM_CAP_FILE_GET_CAPTURE_FILEW
+  const WM_CAP_FILE_SAVEAS* = WM_CAP_FILE_SAVEASW
 when winimAnsi:
-  const
-    WM_CAP_FILE_GET_CAPTURE_FILE* = WM_CAP_FILE_GET_CAPTURE_FILEA
-template capFileGetCaptureFile*(hwnd: HWND, szName: LPTSTR, wSize: WPARAM): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_FILE_GET_CAPTURE_FILE, wSize, szName)
-template capFileAlloc*(hwnd: HWND, dwSize: DWORD): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_FILE_ALLOCATE, 0, dwSize)
+  const WM_CAP_FILE_SAVEAS* = WM_CAP_FILE_SAVEASA
+template capFileSaveAs*(hwnd: HWND, szName: LPTSTR): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_FILE_SAVEAS, 0, szName)
+
+template capFileSetInfoChunk*(hwnd: HWND, lpInfoChunk: LPCAPINFOCHUNK): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_FILE_SET_INFOCHUNK, 0, lpInfoChunk)
+
 when winimUnicode:
-  const
-    WM_CAP_FILE_SAVEAS* = WM_CAP_FILE_SAVEASW
-when winimAnsi:
-  const
-    WM_CAP_FILE_SAVEAS* = WM_CAP_FILE_SAVEASA
-template capFileSaveAs*(hwnd: HWND, szName: LPTSTR): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_FILE_SAVEAS, 0, szName)
-template capFileSetInfoChunk*(hwnd: HWND, lpInfoChunk: LPCAPINFOCHUNK): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_FILE_SET_INFOCHUNK, 0, lpInfoChunk)
-when winimUnicode:
-  const
-    WM_CAP_FILE_SAVEDIB* = WM_CAP_FILE_SAVEDIBW
+  const WM_CAP_FILE_SAVEDIB* = WM_CAP_FILE_SAVEDIBW
 when winimAnsi:
-  const
-    WM_CAP_FILE_SAVEDIB* = WM_CAP_FILE_SAVEDIBA
-template capFileSaveDIB*(hwnd: HWND, szName: LPTSTR): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_FILE_SAVEDIB, 0, szName)
-template capEditCopy*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_EDIT_COPY, 0, 0)
-template capSetAudioFormat*(hwnd: HWND, s: LPWAVEFORMATEX, wSize: WPARAM): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_AUDIOFORMAT, wSize, s)
-template capGetAudioFormat*(hwnd: HWND, s: LPWAVEFORMATEX, wSize: WPARAM): DWORD = discardable DWORD AVICapSM(hwnd, WM_CAP_GET_AUDIOFORMAT, wSize, s)
-template capGetAudioFormatSize*(hwnd: HWND): DWORD = discardable DWORD AVICapSM(hwnd, WM_CAP_GET_AUDIOFORMAT, 0, 0)
-template capDlgVideoFormat*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0)
-template capDlgVideoSource*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0)
-template capDlgVideoDisplay*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_DLG_VIDEODISPLAY, 0, 0)
-template capDlgVideoCompression*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0)
-template capGetVideoFormat*(hwnd: HWND, s: LPVOID, wSize: WPARAM): DWORD = discardable DWORD AVICapSM(hwnd, WM_CAP_GET_VIDEOFORMAT, wSize, s)
-template capGetVideoFormatSize*(hwnd: HWND): DWORD = discardable DWORD AVICapSM(hwnd, WM_CAP_GET_VIDEOFORMAT, 0, 0)
-template capSetVideoFormat*(hwnd: HWND, s: LPVOID, wSize: WPARAM): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_VIDEOFORMAT, wSize, s)
-template capPreview*(hwnd: HWND, f: BOOL): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_PREVIEW, f, 0)
-template capPreviewRate*(hwnd: HWND, wMS: WPARAM): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_PREVIEWRATE, wMS, 0)
-template capOverlay*(hwnd: HWND, f: BOOL): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_OVERLAY, f, 0)
-template capPreviewScale*(hwnd: HWND, f: BOOL): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_SCALE, f, 0)
-template capGetStatus*(hwnd: HWND, s: LPCAPSTATUS, wSize: WPARAM): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_GET_STATUS, wSize, s)
-template capSetScrollPos*(hwnd: HWND, lpP: LPPOINT): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_SCROLL, 0, lpP)
-template capGrabFrame*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_GRAB_FRAME, 0, 0)
-template capGrabFrameNoStop*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0)
-template capCaptureSequence*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SEQUENCE, 0, 0)
-template capCaptureSequenceNoFile*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SEQUENCE_NOFILE, 0, 0)
-template capCaptureStop*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_STOP, 0, 0)
-template capCaptureAbort*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_ABORT, 0, 0)
-template capCaptureSingleFrameOpen*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SINGLE_FRAME_OPEN, 0, 0)
-template capCaptureSingleFrameClose*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SINGLE_FRAME_CLOSE, 0, 0)
-template capCaptureSingleFrame*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SINGLE_FRAME, 0, 0)
-template capCaptureGetSetup*(hwnd: HWND, s: LPCAPTUREPARMS, wSize: WPARAM): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_GET_SEQUENCE_SETUP, wSize, s)
-template capCaptureSetSetup*(hwnd: HWND, s: LPCAPTUREPARMS, wSize: WPARAM): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_SEQUENCE_SETUP, wSize, s)
+  const WM_CAP_FILE_SAVEDIB* = WM_CAP_FILE_SAVEDIBA
+template capFileSaveDIB*(hwnd: HWND, szName: LPTSTR): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_FILE_SAVEDIB, 0, szName)
+
+template capEditCopy*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_EDIT_COPY, 0, 0)
+
+template capSetAudioFormat*(hwnd: HWND, s: LPWAVEFORMATEX, wSize: WPARAM): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_AUDIOFORMAT, wSize, s)
+
+template capGetAudioFormat*(hwnd: HWND, s: LPWAVEFORMATEX, wSize: WPARAM): DWORD =
+  discardable DWORD AVICapSM(hwnd, WM_CAP_GET_AUDIOFORMAT, wSize, s)
+
+template capGetAudioFormatSize*(hwnd: HWND): DWORD =
+  discardable DWORD AVICapSM(hwnd, WM_CAP_GET_AUDIOFORMAT, 0, 0)
+
+template capDlgVideoFormat*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0)
+
+template capDlgVideoSource*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0)
+
+template capDlgVideoDisplay*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_DLG_VIDEODISPLAY, 0, 0)
+
+template capDlgVideoCompression*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0)
+
+template capGetVideoFormat*(hwnd: HWND, s: LPVOID, wSize: WPARAM): DWORD =
+  discardable DWORD AVICapSM(hwnd, WM_CAP_GET_VIDEOFORMAT, wSize, s)
+
+template capGetVideoFormatSize*(hwnd: HWND): DWORD =
+  discardable DWORD AVICapSM(hwnd, WM_CAP_GET_VIDEOFORMAT, 0, 0)
+
+template capSetVideoFormat*(hwnd: HWND, s: LPVOID, wSize: WPARAM): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_VIDEOFORMAT, wSize, s)
+
+template capPreview*(hwnd: HWND, f: BOOL): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_PREVIEW, f, 0)
+
+template capPreviewRate*(hwnd: HWND, wMS: WPARAM): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_PREVIEWRATE, wMS, 0)
+
+template capOverlay*(hwnd: HWND, f: BOOL): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_OVERLAY, f, 0)
+
+template capPreviewScale*(hwnd: HWND, f: BOOL): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_SCALE, f, 0)
+
+template capGetStatus*(hwnd: HWND, s: LPCAPSTATUS, wSize: WPARAM): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_GET_STATUS, wSize, s)
+
+template capSetScrollPos*(hwnd: HWND, lpP: LPPOINT): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_SCROLL, 0, lpP)
+
+template capGrabFrame*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_GRAB_FRAME, 0, 0)
+
+template capGrabFrameNoStop*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0)
+
+template capCaptureSequence*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SEQUENCE, 0, 0)
+
+template capCaptureSequenceNoFile*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SEQUENCE_NOFILE, 0, 0)
+
+template capCaptureStop*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_STOP, 0, 0)
+
+template capCaptureAbort*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_ABORT, 0, 0)
+
+template capCaptureSingleFrameOpen*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SINGLE_FRAME_OPEN, 0, 0)
+
+template capCaptureSingleFrameClose*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SINGLE_FRAME_CLOSE, 0, 0)
+
+template capCaptureSingleFrame*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SINGLE_FRAME, 0, 0)
+
+template capCaptureGetSetup*(hwnd: HWND, s: LPCAPTUREPARMS, wSize: WPARAM): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_GET_SEQUENCE_SETUP, wSize, s)
+
+template capCaptureSetSetup*(hwnd: HWND, s: LPCAPTUREPARMS, wSize: WPARAM): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_SEQUENCE_SETUP, wSize, s)
+
 when winimUnicode:
-  const
-    WM_CAP_SET_MCI_DEVICE* = WM_CAP_SET_MCI_DEVICEW
+  const WM_CAP_SET_MCI_DEVICE* = WM_CAP_SET_MCI_DEVICEW
+when winimAnsi:
+  const WM_CAP_SET_MCI_DEVICE* = WM_CAP_SET_MCI_DEVICEA
+template capSetMCIDeviceName*(hwnd: HWND, szName: LPTSTR): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_SET_MCI_DEVICE, 0, szName)
+
+when winimUnicode:
+  const WM_CAP_GET_MCI_DEVICE* = WM_CAP_GET_MCI_DEVICEW
 when winimAnsi:
-  const
-    WM_CAP_SET_MCI_DEVICE* = WM_CAP_SET_MCI_DEVICEA
-template capSetMCIDeviceName*(hwnd: HWND, szName: LPTSTR): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_SET_MCI_DEVICE, 0, szName)
+  const WM_CAP_GET_MCI_DEVICE* = WM_CAP_GET_MCI_DEVICEA
+template capGetMCIDeviceName*(hwnd: HWND, szName: LPTSTR, wSize): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_GET_MCI_DEVICE, wSize, szName)
+
 when winimUnicode:
-  const
-    WM_CAP_GET_MCI_DEVICE* = WM_CAP_GET_MCI_DEVICEW
+  const WM_CAP_PAL_OPEN* = WM_CAP_PAL_OPENW
+when winimAnsi:
+  const WM_CAP_PAL_OPEN* = WM_CAP_PAL_OPENA
+template capPaletteOpen*(hwnd: HWND, szName: LPTSTR): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_PAL_OPEN, 0, szName)
+
+when winimUnicode:
+  const WM_CAP_PAL_SAVE* = WM_CAP_PAL_SAVEW
 when winimAnsi:
-  const
-    WM_CAP_GET_MCI_DEVICE* = WM_CAP_GET_MCI_DEVICEA
-template capGetMCIDeviceName*(hwnd: HWND, szName: LPTSTR, wSize): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_GET_MCI_DEVICE, wSize, szName)
-when winimUnicode:
-  const
-    WM_CAP_PAL_OPEN* = WM_CAP_PAL_OPENW
-when winimAnsi:
-  const
-    WM_CAP_PAL_OPEN* = WM_CAP_PAL_OPENA
-template capPaletteOpen*(hwnd: HWND, szName: LPTSTR): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_PAL_OPEN, 0, szName)
-when winimUnicode:
-  const
-    WM_CAP_PAL_SAVE* = WM_CAP_PAL_SAVEW
-when winimAnsi:
-  const
-    WM_CAP_PAL_SAVE* = WM_CAP_PAL_SAVEA
-template capPaletteSave*(hwnd: HWND, szName: LPTSTR): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_PAL_SAVE, 0, szName)
-template capPalettePaste*(hwnd: HWND): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_PAL_PASTE, 0, 0)
-template capPaletteAuto*(hwnd: HWND, iFrames: WPARAM, iColors: DWORD): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_PAL_AUTOCREATE, iFrames, iColors)
-template capPaletteManual*(hwnd: HWND, fGrab: WPARAM, iColors: DWORD): BOOL = discardable BOOL AVICapSM(hwnd, WM_CAP_PAL_MANUALCREATE, fGrab, iColors)
-proc ICGetDefaultQuality*(hic: HIC): DWORD {.winapi, inline.} = discard ICSendMessage(hic, ICM_GETDEFAULTQUALITY, cast[DWORD_PTR](addr result), cast[DWORD_PTR](sizeof(DWORD))); result
-proc ICGetDefaultKeyFrameRate*(hic: HIC): DWORD {.winapi, inline.} = discard ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, cast[DWORD_PTR](addr result), cast[DWORD_PTR](sizeof(DWORD))); result
-proc Create*(self: ptr IAVIStream, lParam1: LPARAM, lParam2: LPARAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Create(self, lParam1, lParam2)
-proc Info*(self: ptr IAVIStream, psi: ptr TAVISTREAMINFOW, lSize: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Info(self, psi, lSize)
-proc FindSample*(self: ptr IAVIStream, lPos: LONG, lFlags: LONG): LONG {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindSample(self, lPos, lFlags)
-proc ReadFormat*(self: ptr IAVIStream, lPos: LONG, lpFormat: LPVOID, lpcbFormat: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReadFormat(self, lPos, lpFormat, lpcbFormat)
-proc SetFormat*(self: ptr IAVIStream, lPos: LONG, lpFormat: LPVOID, cbFormat: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFormat(self, lPos, lpFormat, cbFormat)
-proc Read*(self: ptr IAVIStream, lStart: LONG, lSamples: LONG, lpBuffer: LPVOID, cbBuffer: LONG, plBytes: ptr LONG, plSamples: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Read(self, lStart, lSamples, lpBuffer, cbBuffer, plBytes, plSamples)
-proc Write*(self: ptr IAVIStream, lStart: LONG, lSamples: LONG, lpBuffer: LPVOID, cbBuffer: LONG, dwFlags: DWORD, plSampWritten: ptr LONG, plBytesWritten: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Write(self, lStart, lSamples, lpBuffer, cbBuffer, dwFlags, plSampWritten, plBytesWritten)
-proc mDelete*(self: ptr IAVIStream, lStart: LONG, lSamples: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Delete(self, lStart, lSamples)
-proc ReadData*(self: ptr IAVIStream, fcc: DWORD, lp: LPVOID, lpcb: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReadData(self, fcc, lp, lpcb)
-proc WriteData*(self: ptr IAVIStream, fcc: DWORD, lp: LPVOID, cb: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WriteData(self, fcc, lp, cb)
-proc SetInfo*(self: ptr IAVIStream, lpInfo: ptr TAVISTREAMINFOW, cbInfo: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetInfo(self, lpInfo, cbInfo)
-proc Begin*(self: ptr IAVIStreaming, lStart: LONG, lEnd: LONG, lRate: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Begin(self, lStart, lEnd, lRate)
-proc End*(self: ptr IAVIStreaming): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.End(self)
-proc Cut*(self: ptr IAVIEditStream, plStart: ptr LONG, plLength: ptr LONG, ppResult: ptr PAVISTREAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Cut(self, plStart, plLength, ppResult)
-proc Copy*(self: ptr IAVIEditStream, plStart: ptr LONG, plLength: ptr LONG, ppResult: ptr PAVISTREAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Copy(self, plStart, plLength, ppResult)
-proc Paste*(self: ptr IAVIEditStream, plPos: ptr LONG, plLength: ptr LONG, pstream: PAVISTREAM, lStart: LONG, lEnd: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Paste(self, plPos, plLength, pstream, lStart, lEnd)
-proc Clone*(self: ptr IAVIEditStream, ppResult: ptr PAVISTREAM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppResult)
-proc SetInfo*(self: ptr IAVIEditStream, lpInfo: ptr TAVISTREAMINFOW, cbInfo: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetInfo(self, lpInfo, cbInfo)
-proc Reserved1*(self: ptr IAVIPersistFile): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reserved1(self)
-proc Info*(self: ptr IAVIFile, pfi: ptr TAVIFILEINFOW, lSize: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Info(self, pfi, lSize)
-proc GetStream*(self: ptr IAVIFile, ppStream: ptr PAVISTREAM, fccType: DWORD, lParam: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetStream(self, ppStream, fccType, lParam)
-proc CreateStream*(self: ptr IAVIFile, ppStream: ptr PAVISTREAM, psi: ptr TAVISTREAMINFOW): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateStream(self, ppStream, psi)
-proc WriteData*(self: ptr IAVIFile, ckid: DWORD, lpData: LPVOID, cbData: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WriteData(self, ckid, lpData, cbData)
-proc ReadData*(self: ptr IAVIFile, ckid: DWORD, lpData: LPVOID, lpcbData: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReadData(self, ckid, lpData, lpcbData)
-proc EndRecord*(self: ptr IAVIFile): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EndRecord(self)
-proc DeleteStream*(self: ptr IAVIFile, fccType: DWORD, lParam: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteStream(self, fccType, lParam)
-proc GetFrame*(self: ptr IGetFrame, lPos: LONG): LPVOID {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFrame(self, lPos)
-proc Begin*(self: ptr IGetFrame, lStart: LONG, lEnd: LONG, lRate: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Begin(self, lStart, lEnd, lRate)
-proc End*(self: ptr IGetFrame): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.End(self)
-proc SetFormat*(self: ptr IGetFrame, lpbi: LPBITMAPINFOHEADER, lpBits: LPVOID, x: int32, y: int32, dx: int32, dy: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFormat(self, lpbi, lpBits, x, y, dx, dy)
-converter winimConverterIAVIStreamToIUnknown*(x: ptr IAVIStream): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAVIStreamingToIUnknown*(x: ptr IAVIStreaming): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAVIEditStreamToIUnknown*(x: ptr IAVIEditStream): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAVIPersistFileToIPersistFile*(x: ptr IAVIPersistFile): ptr IPersistFile = cast[ptr IPersistFile](x)
-converter winimConverterIAVIPersistFileToIPersist*(x: ptr IAVIPersistFile): ptr IPersist = cast[ptr IPersist](x)
-converter winimConverterIAVIPersistFileToIUnknown*(x: ptr IAVIPersistFile): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIAVIFileToIUnknown*(x: ptr IAVIFile): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIGetFrameToIUnknown*(x: ptr IGetFrame): ptr IUnknown = cast[ptr IUnknown](x)
+  const WM_CAP_PAL_SAVE* = WM_CAP_PAL_SAVEA
+template capPaletteSave*(hwnd: HWND, szName: LPTSTR): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_PAL_SAVE, 0, szName)
+
+template capPalettePaste*(hwnd: HWND): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_PAL_PASTE, 0, 0)
+
+template capPaletteAuto*(hwnd: HWND, iFrames: WPARAM, iColors: DWORD): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_PAL_AUTOCREATE, iFrames, iColors)
+
+template capPaletteManual*(hwnd: HWND, fGrab: WPARAM, iColors: DWORD): BOOL =
+  discardable BOOL AVICapSM(hwnd, WM_CAP_PAL_MANUALCREATE, fGrab, iColors)
+
+proc ICGetDefaultQuality*(hic: HIC): DWORD {.winapi, inline.} =
+  discard ICSendMessage(
+    hic,
+    ICM_GETDEFAULTQUALITY,
+    cast[DWORD_PTR](addr result),
+    cast[DWORD_PTR](sizeof(DWORD)),
+  )
+  result
+
+proc ICGetDefaultKeyFrameRate*(hic: HIC): DWORD {.winapi, inline.} =
+  discard ICSendMessage(
+    hic,
+    ICM_GETDEFAULTKEYFRAMERATE,
+    cast[DWORD_PTR](addr result),
+    cast[DWORD_PTR](sizeof(DWORD)),
+  )
+  result
+
+proc Create*(
+    self: ptr IAVIStream, lParam1: LPARAM, lParam2: LPARAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Create(self, lParam1, lParam2)
+
+proc Info*(
+    self: ptr IAVIStream, psi: ptr TAVISTREAMINFOW, lSize: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Info(self, psi, lSize)
+
+proc FindSample*(
+    self: ptr IAVIStream, lPos: LONG, lFlags: LONG
+): LONG {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.FindSample(self, lPos, lFlags)
+
+proc ReadFormat*(
+    self: ptr IAVIStream, lPos: LONG, lpFormat: LPVOID, lpcbFormat: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReadFormat(self, lPos, lpFormat, lpcbFormat)
+
+proc SetFormat*(
+    self: ptr IAVIStream, lPos: LONG, lpFormat: LPVOID, cbFormat: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFormat(self, lPos, lpFormat, cbFormat)
+
+proc Read*(
+    self: ptr IAVIStream,
+    lStart: LONG,
+    lSamples: LONG,
+    lpBuffer: LPVOID,
+    cbBuffer: LONG,
+    plBytes: ptr LONG,
+    plSamples: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Read(self, lStart, lSamples, lpBuffer, cbBuffer, plBytes, plSamples)
+
+proc Write*(
+    self: ptr IAVIStream,
+    lStart: LONG,
+    lSamples: LONG,
+    lpBuffer: LPVOID,
+    cbBuffer: LONG,
+    dwFlags: DWORD,
+    plSampWritten: ptr LONG,
+    plBytesWritten: ptr LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Write(
+      self, lStart, lSamples, lpBuffer, cbBuffer, dwFlags, plSampWritten, plBytesWritten
+    )
+
+proc mDelete*(
+    self: ptr IAVIStream, lStart: LONG, lSamples: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Delete(self, lStart, lSamples)
+
+proc ReadData*(
+    self: ptr IAVIStream, fcc: DWORD, lp: LPVOID, lpcb: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReadData(self, fcc, lp, lpcb)
+
+proc WriteData*(
+    self: ptr IAVIStream, fcc: DWORD, lp: LPVOID, cb: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WriteData(self, fcc, lp, cb)
+
+proc SetInfo*(
+    self: ptr IAVIStream, lpInfo: ptr TAVISTREAMINFOW, cbInfo: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetInfo(self, lpInfo, cbInfo)
+
+proc Begin*(
+    self: ptr IAVIStreaming, lStart: LONG, lEnd: LONG, lRate: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Begin(self, lStart, lEnd, lRate)
+
+proc End*(self: ptr IAVIStreaming): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.End(self)
+
+proc Cut*(
+    self: ptr IAVIEditStream,
+    plStart: ptr LONG,
+    plLength: ptr LONG,
+    ppResult: ptr PAVISTREAM,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Cut(self, plStart, plLength, ppResult)
+
+proc Copy*(
+    self: ptr IAVIEditStream,
+    plStart: ptr LONG,
+    plLength: ptr LONG,
+    ppResult: ptr PAVISTREAM,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Copy(self, plStart, plLength, ppResult)
+
+proc Paste*(
+    self: ptr IAVIEditStream,
+    plPos: ptr LONG,
+    plLength: ptr LONG,
+    pstream: PAVISTREAM,
+    lStart: LONG,
+    lEnd: LONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Paste(self, plPos, plLength, pstream, lStart, lEnd)
+
+proc Clone*(
+    self: ptr IAVIEditStream, ppResult: ptr PAVISTREAM
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppResult)
+
+proc SetInfo*(
+    self: ptr IAVIEditStream, lpInfo: ptr TAVISTREAMINFOW, cbInfo: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetInfo(self, lpInfo, cbInfo)
+
+proc Reserved1*(self: ptr IAVIPersistFile): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reserved1(self)
+
+proc Info*(
+    self: ptr IAVIFile, pfi: ptr TAVIFILEINFOW, lSize: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Info(self, pfi, lSize)
+
+proc GetStream*(
+    self: ptr IAVIFile, ppStream: ptr PAVISTREAM, fccType: DWORD, lParam: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetStream(self, ppStream, fccType, lParam)
+
+proc CreateStream*(
+    self: ptr IAVIFile, ppStream: ptr PAVISTREAM, psi: ptr TAVISTREAMINFOW
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateStream(self, ppStream, psi)
+
+proc WriteData*(
+    self: ptr IAVIFile, ckid: DWORD, lpData: LPVOID, cbData: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WriteData(self, ckid, lpData, cbData)
+
+proc ReadData*(
+    self: ptr IAVIFile, ckid: DWORD, lpData: LPVOID, lpcbData: ptr LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.ReadData(self, ckid, lpData, lpcbData)
+
+proc EndRecord*(self: ptr IAVIFile): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.EndRecord(self)
+
+proc DeleteStream*(
+    self: ptr IAVIFile, fccType: DWORD, lParam: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DeleteStream(self, fccType, lParam)
+
+proc GetFrame*(self: ptr IGetFrame, lPos: LONG): LPVOID {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFrame(self, lPos)
+
+proc Begin*(
+    self: ptr IGetFrame, lStart: LONG, lEnd: LONG, lRate: LONG
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Begin(self, lStart, lEnd, lRate)
+
+proc End*(self: ptr IGetFrame): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.End(self)
+
+proc SetFormat*(
+    self: ptr IGetFrame,
+    lpbi: LPBITMAPINFOHEADER,
+    lpBits: LPVOID,
+    x: int32,
+    y: int32,
+    dx: int32,
+    dy: int32,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetFormat(self, lpbi, lpBits, x, y, dx, dy)
+
+converter winimConverterIAVIStreamToIUnknown*(x: ptr IAVIStream): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAVIStreamingToIUnknown*(x: ptr IAVIStreaming): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAVIEditStreamToIUnknown*(x: ptr IAVIEditStream): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAVIPersistFileToIPersistFile*(
+    x: ptr IAVIPersistFile
+): ptr IPersistFile =
+  cast[ptr IPersistFile](x)
+
+converter winimConverterIAVIPersistFileToIPersist*(
+    x: ptr IAVIPersistFile
+): ptr IPersist =
+  cast[ptr IPersist](x)
+
+converter winimConverterIAVIPersistFileToIUnknown*(
+    x: ptr IAVIPersistFile
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIAVIFileToIUnknown*(x: ptr IAVIFile): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIGetFrameToIUnknown*(x: ptr IGetFrame): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
 when winimUnicode:
   type
     ACMDRIVERDETAILS* = ACMDRIVERDETAILSW
@@ -1938,37 +3351,155 @@
     LPAVIFILEINFO* = LPAVIFILEINFOW
     CAPSTATUSCALLBACK* = CAPSTATUSCALLBACKW
     CAPERRORCALLBACK* = CAPERRORCALLBACKW
+
   const
     ACMHELPMSGSTRING* = ACMHELPMSGSTRINGW
     ACMHELPMSGCONTEXTMENU* = ACMHELPMSGCONTEXTMENUW
     ACMHELPMSGCONTEXTHELP* = ACMHELPMSGCONTEXTHELPW
     MCIWNDF_NOTIFYMEDIA* = MCIWNDF_NOTIFYMEDIAW
-  proc acmDriverAdd*(phadid: LPHACMDRIVERID, hinstModule: HINSTANCE, lParam: LPARAM, dwPriority: DWORD, fdwAdd: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmDriverAddW".}
-  proc acmDriverDetails*(hadid: HACMDRIVERID, padd: LPACMDRIVERDETAILSW, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmDriverDetailsW".}
-  proc acmFormatTagDetails*(had: HACMDRIVER, paftd: LPACMFORMATTAGDETAILSW, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatTagDetailsW".}
-  proc acmFormatTagEnum*(had: HACMDRIVER, paftd: LPACMFORMATTAGDETAILSW, fnCallback: ACMFORMATTAGENUMCBW, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatTagEnumW".}
-  proc acmFormatDetails*(had: HACMDRIVER, pafd: LPACMFORMATDETAILSW, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatDetailsW".}
-  proc acmFormatEnum*(had: HACMDRIVER, pafd: LPACMFORMATDETAILSW, fnCallback: ACMFORMATENUMCBW, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatEnumW".}
-  proc acmFormatChoose*(pafmtc: LPACMFORMATCHOOSEW): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatChooseW".}
-  proc acmFilterTagDetails*(had: HACMDRIVER, paftd: LPACMFILTERTAGDETAILSW, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterTagDetailsW".}
-  proc acmFilterTagEnum*(had: HACMDRIVER, paftd: LPACMFILTERTAGDETAILSW, fnCallback: ACMFILTERTAGENUMCBW, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterTagEnumW".}
-  proc acmFilterDetails*(had: HACMDRIVER, pafd: LPACMFILTERDETAILSW, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterDetailsW".}
-  proc acmFilterEnum*(had: HACMDRIVER, pafd: LPACMFILTERDETAILSW, fnCallback: ACMFILTERENUMCBW, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterEnumW".}
-  proc acmFilterChoose*(pafltrc: LPACMFILTERCHOOSEW): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterChooseW".}
-  proc AVIFileOpen*(ppfile: ptr PAVIFILE, szFile: LPCWSTR, uMode: UINT, lpHandler: LPCLSID): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileOpenW".}
-  proc AVIFileInfo*(pfile: PAVIFILE, pfi: LPAVIFILEINFOW, lSize: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileInfoW".}
-  proc AVIFileCreateStream*(pfile: PAVIFILE, ppavi: ptr PAVISTREAM, psi: ptr TAVISTREAMINFOW): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileCreateStreamW".}
-  proc AVIStreamInfo*(pavi: PAVISTREAM, psi: LPAVISTREAMINFOW, lSize: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIStreamInfoW".}
-  proc AVIStreamOpenFromFile*(ppavi: ptr PAVISTREAM, szFile: LPCWSTR, fccType: DWORD, lParam: LONG, mode: UINT, pclsidHandler: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIStreamOpenFromFileW".}
-  proc AVISaveV*(szFile: LPCWSTR, pclsidHandler: ptr CLSID, lpfnCallback: AVISAVECALLBACK, nStreams: int32, ppavi: ptr PAVISTREAM, plpOptions: ptr LPAVICOMPRESSOPTIONS): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVISaveVW".}
-  proc AVIBuildFilter*(lpszFilter: LPWSTR, cbFilter: LONG, fSaving: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIBuildFilterW".}
-  proc EditStreamSetInfo*(pavi: PAVISTREAM, lpInfo: LPAVISTREAMINFOW, cbInfo: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "EditStreamSetInfoW".}
-  proc EditStreamSetName*(pavi: PAVISTREAM, lpszName: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "EditStreamSetNameW".}
-  proc MCIWndCreate*(hwndParent: HWND, hInstance: HINSTANCE, dwStyle: DWORD, szFile: LPCWSTR): HWND {.winapi, stdcall, dynlib: "msvfw32", importc: "MCIWndCreateW".}
-  proc capCreateCaptureWindow*(lpszWindowName: LPCWSTR, dwStyle: DWORD, x: int32, y: int32, nWidth: int32, nHeight: int32, hwndParent: HWND, nID: int32): HWND {.winapi, stdcall, dynlib: "avicap32", importc: "capCreateCaptureWindowW".}
-  proc capGetDriverDescription*(wDriverIndex: UINT, lpszName: LPWSTR, cbName: int32, lpszVer: LPWSTR, cbVer: int32): WINBOOL {.winapi, stdcall, dynlib: "avicap32", importc: "capGetDriverDescriptionW".}
-  proc GetOpenFileNamePreview*(lpofn: LPOPENFILENAMEW): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc: "GetOpenFileNamePreviewW".}
-  proc GetSaveFileNamePreview*(lpofn: LPOPENFILENAMEW): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc: "GetSaveFileNamePreviewW".}
+  proc acmDriverAdd*(
+    phadid: LPHACMDRIVERID,
+    hinstModule: HINSTANCE,
+    lParam: LPARAM,
+    dwPriority: DWORD,
+    fdwAdd: DWORD,
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmDriverAddW".}
+
+  proc acmDriverDetails*(
+    hadid: HACMDRIVERID, padd: LPACMDRIVERDETAILSW, fdwDetails: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmDriverDetailsW".}
+
+  proc acmFormatTagDetails*(
+    had: HACMDRIVER, paftd: LPACMFORMATTAGDETAILSW, fdwDetails: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatTagDetailsW".}
+
+  proc acmFormatTagEnum*(
+    had: HACMDRIVER,
+    paftd: LPACMFORMATTAGDETAILSW,
+    fnCallback: ACMFORMATTAGENUMCBW,
+    dwInstance: DWORD_PTR,
+    fdwEnum: DWORD,
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatTagEnumW".}
+
+  proc acmFormatDetails*(
+    had: HACMDRIVER, pafd: LPACMFORMATDETAILSW, fdwDetails: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatDetailsW".}
+
+  proc acmFormatEnum*(
+    had: HACMDRIVER,
+    pafd: LPACMFORMATDETAILSW,
+    fnCallback: ACMFORMATENUMCBW,
+    dwInstance: DWORD_PTR,
+    fdwEnum: DWORD,
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatEnumW".}
+
+  proc acmFormatChoose*(
+    pafmtc: LPACMFORMATCHOOSEW
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatChooseW".}
+
+  proc acmFilterTagDetails*(
+    had: HACMDRIVER, paftd: LPACMFILTERTAGDETAILSW, fdwDetails: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterTagDetailsW".}
+
+  proc acmFilterTagEnum*(
+    had: HACMDRIVER,
+    paftd: LPACMFILTERTAGDETAILSW,
+    fnCallback: ACMFILTERTAGENUMCBW,
+    dwInstance: DWORD_PTR,
+    fdwEnum: DWORD,
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterTagEnumW".}
+
+  proc acmFilterDetails*(
+    had: HACMDRIVER, pafd: LPACMFILTERDETAILSW, fdwDetails: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterDetailsW".}
+
+  proc acmFilterEnum*(
+    had: HACMDRIVER,
+    pafd: LPACMFILTERDETAILSW,
+    fnCallback: ACMFILTERENUMCBW,
+    dwInstance: DWORD_PTR,
+    fdwEnum: DWORD,
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterEnumW".}
+
+  proc acmFilterChoose*(
+    pafltrc: LPACMFILTERCHOOSEW
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterChooseW".}
+
+  proc AVIFileOpen*(
+    ppfile: ptr PAVIFILE, szFile: LPCWSTR, uMode: UINT, lpHandler: LPCLSID
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileOpenW".}
+
+  proc AVIFileInfo*(
+    pfile: PAVIFILE, pfi: LPAVIFILEINFOW, lSize: LONG
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileInfoW".}
+
+  proc AVIFileCreateStream*(
+    pfile: PAVIFILE, ppavi: ptr PAVISTREAM, psi: ptr TAVISTREAMINFOW
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileCreateStreamW".}
+
+  proc AVIStreamInfo*(
+    pavi: PAVISTREAM, psi: LPAVISTREAMINFOW, lSize: LONG
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIStreamInfoW".}
+
+  proc AVIStreamOpenFromFile*(
+    ppavi: ptr PAVISTREAM,
+    szFile: LPCWSTR,
+    fccType: DWORD,
+    lParam: LONG,
+    mode: UINT,
+    pclsidHandler: ptr CLSID,
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIStreamOpenFromFileW".}
+
+  proc AVISaveV*(
+    szFile: LPCWSTR,
+    pclsidHandler: ptr CLSID,
+    lpfnCallback: AVISAVECALLBACK,
+    nStreams: int32,
+    ppavi: ptr PAVISTREAM,
+    plpOptions: ptr LPAVICOMPRESSOPTIONS,
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVISaveVW".}
+
+  proc AVIBuildFilter*(
+    lpszFilter: LPWSTR, cbFilter: LONG, fSaving: WINBOOL
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIBuildFilterW".}
+
+  proc EditStreamSetInfo*(
+    pavi: PAVISTREAM, lpInfo: LPAVISTREAMINFOW, cbInfo: LONG
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "EditStreamSetInfoW".}
+
+  proc EditStreamSetName*(
+    pavi: PAVISTREAM, lpszName: LPCWSTR
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "EditStreamSetNameW".}
+
+  proc MCIWndCreate*(
+    hwndParent: HWND, hInstance: HINSTANCE, dwStyle: DWORD, szFile: LPCWSTR
+  ): HWND {.winapi, stdcall, dynlib: "msvfw32", importc: "MCIWndCreateW".}
+
+  proc capCreateCaptureWindow*(
+    lpszWindowName: LPCWSTR,
+    dwStyle: DWORD,
+    x: int32,
+    y: int32,
+    nWidth: int32,
+    nHeight: int32,
+    hwndParent: HWND,
+    nID: int32,
+  ): HWND {.winapi, stdcall, dynlib: "avicap32", importc: "capCreateCaptureWindowW".}
+
+  proc capGetDriverDescription*(
+    wDriverIndex: UINT, lpszName: LPWSTR, cbName: int32, lpszVer: LPWSTR, cbVer: int32
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "avicap32", importc: "capGetDriverDescriptionW"
+  .}
+
+  proc GetOpenFileNamePreview*(
+    lpofn: LPOPENFILENAMEW
+  ): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc: "GetOpenFileNamePreviewW".}
+
+  proc GetSaveFileNamePreview*(
+    lpofn: LPOPENFILENAMEW
+  ): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc: "GetSaveFileNamePreviewW".}
+
 when winimAnsi:
   type
     ACMDRIVERDETAILS* = ACMDRIVERDETAILSA
@@ -2004,35 +3535,152 @@
     LPAVIFILEINFO* = LPAVIFILEINFOA
     CAPSTATUSCALLBACK* = CAPSTATUSCALLBACKA
     CAPERRORCALLBACK* = CAPERRORCALLBACKA
+
   const
     CLSID_AVISimpleUnMarshal* = DEFINE_GUID("00020009-0000-0000-c000-000000000046")
     ACMHELPMSGSTRING* = ACMHELPMSGSTRINGA
     ACMHELPMSGCONTEXTMENU* = ACMHELPMSGCONTEXTMENUA
     ACMHELPMSGCONTEXTHELP* = ACMHELPMSGCONTEXTHELPA
     MCIWNDF_NOTIFYMEDIA* = MCIWNDF_NOTIFYMEDIAA
-  proc acmDriverAdd*(phadid: LPHACMDRIVERID, hinstModule: HINSTANCE, lParam: LPARAM, dwPriority: DWORD, fdwAdd: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmDriverAddA".}
-  proc acmDriverDetails*(hadid: HACMDRIVERID, padd: LPACMDRIVERDETAILSA, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmDriverDetailsA".}
-  proc acmFormatTagDetails*(had: HACMDRIVER, paftd: LPACMFORMATTAGDETAILSA, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatTagDetailsA".}
-  proc acmFormatTagEnum*(had: HACMDRIVER, paftd: LPACMFORMATTAGDETAILSA, fnCallback: ACMFORMATTAGENUMCBA, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatTagEnumA".}
-  proc acmFormatDetails*(had: HACMDRIVER, pafd: LPACMFORMATDETAILSA, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatDetailsA".}
-  proc acmFormatEnum*(had: HACMDRIVER, pafd: LPACMFORMATDETAILSA, fnCallback: ACMFORMATENUMCBA, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatEnumA".}
-  proc acmFormatChoose*(pafmtc: LPACMFORMATCHOOSEA): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatChooseA".}
-  proc acmFilterTagDetails*(had: HACMDRIVER, paftd: LPACMFILTERTAGDETAILSA, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterTagDetailsA".}
-  proc acmFilterTagEnum*(had: HACMDRIVER, paftd: LPACMFILTERTAGDETAILSA, fnCallback: ACMFILTERTAGENUMCBA, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterTagEnumA".}
-  proc acmFilterDetails*(had: HACMDRIVER, pafd: LPACMFILTERDETAILSA, fdwDetails: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterDetailsA".}
-  proc acmFilterEnum*(had: HACMDRIVER, pafd: LPACMFILTERDETAILSA, fnCallback: ACMFILTERENUMCBA, dwInstance: DWORD_PTR, fdwEnum: DWORD): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterEnumA".}
-  proc acmFilterChoose*(pafltrc: LPACMFILTERCHOOSEA): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterChooseA".}
-  proc AVIFileOpen*(ppfile: ptr PAVIFILE, szFile: LPCSTR, uMode: UINT, lpHandler: LPCLSID): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileOpenA".}
-  proc AVIFileInfo*(pfile: PAVIFILE, pfi: LPAVIFILEINFOA, lSize: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileInfoA".}
-  proc AVIFileCreateStream*(pfile: PAVIFILE, ppavi: ptr PAVISTREAM, psi: ptr TAVISTREAMINFOA): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileCreateStreamA".}
-  proc AVIStreamInfo*(pavi: PAVISTREAM, psi: LPAVISTREAMINFOA, lSize: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIStreamInfoA".}
-  proc AVIStreamOpenFromFile*(ppavi: ptr PAVISTREAM, szFile: LPCSTR, fccType: DWORD, lParam: LONG, mode: UINT, pclsidHandler: ptr CLSID): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIStreamOpenFromFileA".}
-  proc AVISaveV*(szFile: LPCSTR, pclsidHandler: ptr CLSID, lpfnCallback: AVISAVECALLBACK, nStreams: int32, ppavi: ptr PAVISTREAM, plpOptions: ptr LPAVICOMPRESSOPTIONS): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVISaveVA".}
-  proc AVIBuildFilter*(lpszFilter: LPSTR, cbFilter: LONG, fSaving: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIBuildFilterA".}
-  proc EditStreamSetInfo*(pavi: PAVISTREAM, lpInfo: LPAVISTREAMINFOA, cbInfo: LONG): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "EditStreamSetInfoA".}
-  proc EditStreamSetName*(pavi: PAVISTREAM, lpszName: LPCSTR): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "EditStreamSetNameA".}
-  proc MCIWndCreate*(hwndParent: HWND, hInstance: HINSTANCE, dwStyle: DWORD, szFile: LPCSTR): HWND {.winapi, stdcall, dynlib: "msvfw32", importc: "MCIWndCreateA".}
-  proc capCreateCaptureWindow*(lpszWindowName: LPCSTR, dwStyle: DWORD, x: int32, y: int32, nWidth: int32, nHeight: int32, hwndParent: HWND, nID: int32): HWND {.winapi, stdcall, dynlib: "avicap32", importc: "capCreateCaptureWindowA".}
-  proc capGetDriverDescription*(wDriverIndex: UINT, lpszName: LPSTR, cbName: int32, lpszVer: LPSTR, cbVer: int32): WINBOOL {.winapi, stdcall, dynlib: "avicap32", importc: "capGetDriverDescriptionA".}
-  proc GetOpenFileNamePreview*(lpofn: LPOPENFILENAMEA): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc: "GetOpenFileNamePreviewA".}
-  proc GetSaveFileNamePreview*(lpofn: LPOPENFILENAMEA): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc: "GetSaveFileNamePreviewA".}
+  proc acmDriverAdd*(
+    phadid: LPHACMDRIVERID,
+    hinstModule: HINSTANCE,
+    lParam: LPARAM,
+    dwPriority: DWORD,
+    fdwAdd: DWORD,
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmDriverAddA".}
+
+  proc acmDriverDetails*(
+    hadid: HACMDRIVERID, padd: LPACMDRIVERDETAILSA, fdwDetails: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmDriverDetailsA".}
+
+  proc acmFormatTagDetails*(
+    had: HACMDRIVER, paftd: LPACMFORMATTAGDETAILSA, fdwDetails: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatTagDetailsA".}
+
+  proc acmFormatTagEnum*(
+    had: HACMDRIVER,
+    paftd: LPACMFORMATTAGDETAILSA,
+    fnCallback: ACMFORMATTAGENUMCBA,
+    dwInstance: DWORD_PTR,
+    fdwEnum: DWORD,
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatTagEnumA".}
+
+  proc acmFormatDetails*(
+    had: HACMDRIVER, pafd: LPACMFORMATDETAILSA, fdwDetails: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatDetailsA".}
+
+  proc acmFormatEnum*(
+    had: HACMDRIVER,
+    pafd: LPACMFORMATDETAILSA,
+    fnCallback: ACMFORMATENUMCBA,
+    dwInstance: DWORD_PTR,
+    fdwEnum: DWORD,
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatEnumA".}
+
+  proc acmFormatChoose*(
+    pafmtc: LPACMFORMATCHOOSEA
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFormatChooseA".}
+
+  proc acmFilterTagDetails*(
+    had: HACMDRIVER, paftd: LPACMFILTERTAGDETAILSA, fdwDetails: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterTagDetailsA".}
+
+  proc acmFilterTagEnum*(
+    had: HACMDRIVER,
+    paftd: LPACMFILTERTAGDETAILSA,
+    fnCallback: ACMFILTERTAGENUMCBA,
+    dwInstance: DWORD_PTR,
+    fdwEnum: DWORD,
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterTagEnumA".}
+
+  proc acmFilterDetails*(
+    had: HACMDRIVER, pafd: LPACMFILTERDETAILSA, fdwDetails: DWORD
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterDetailsA".}
+
+  proc acmFilterEnum*(
+    had: HACMDRIVER,
+    pafd: LPACMFILTERDETAILSA,
+    fnCallback: ACMFILTERENUMCBA,
+    dwInstance: DWORD_PTR,
+    fdwEnum: DWORD,
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterEnumA".}
+
+  proc acmFilterChoose*(
+    pafltrc: LPACMFILTERCHOOSEA
+  ): MMRESULT {.winapi, stdcall, dynlib: "msacm32", importc: "acmFilterChooseA".}
+
+  proc AVIFileOpen*(
+    ppfile: ptr PAVIFILE, szFile: LPCSTR, uMode: UINT, lpHandler: LPCLSID
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileOpenA".}
+
+  proc AVIFileInfo*(
+    pfile: PAVIFILE, pfi: LPAVIFILEINFOA, lSize: LONG
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileInfoA".}
+
+  proc AVIFileCreateStream*(
+    pfile: PAVIFILE, ppavi: ptr PAVISTREAM, psi: ptr TAVISTREAMINFOA
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIFileCreateStreamA".}
+
+  proc AVIStreamInfo*(
+    pavi: PAVISTREAM, psi: LPAVISTREAMINFOA, lSize: LONG
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIStreamInfoA".}
+
+  proc AVIStreamOpenFromFile*(
+    ppavi: ptr PAVISTREAM,
+    szFile: LPCSTR,
+    fccType: DWORD,
+    lParam: LONG,
+    mode: UINT,
+    pclsidHandler: ptr CLSID,
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIStreamOpenFromFileA".}
+
+  proc AVISaveV*(
+    szFile: LPCSTR,
+    pclsidHandler: ptr CLSID,
+    lpfnCallback: AVISAVECALLBACK,
+    nStreams: int32,
+    ppavi: ptr PAVISTREAM,
+    plpOptions: ptr LPAVICOMPRESSOPTIONS,
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVISaveVA".}
+
+  proc AVIBuildFilter*(
+    lpszFilter: LPSTR, cbFilter: LONG, fSaving: WINBOOL
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "AVIBuildFilterA".}
+
+  proc EditStreamSetInfo*(
+    pavi: PAVISTREAM, lpInfo: LPAVISTREAMINFOA, cbInfo: LONG
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "EditStreamSetInfoA".}
+
+  proc EditStreamSetName*(
+    pavi: PAVISTREAM, lpszName: LPCSTR
+  ): HRESULT {.winapi, stdcall, dynlib: "avifil32", importc: "EditStreamSetNameA".}
+
+  proc MCIWndCreate*(
+    hwndParent: HWND, hInstance: HINSTANCE, dwStyle: DWORD, szFile: LPCSTR
+  ): HWND {.winapi, stdcall, dynlib: "msvfw32", importc: "MCIWndCreateA".}
+
+  proc capCreateCaptureWindow*(
+    lpszWindowName: LPCSTR,
+    dwStyle: DWORD,
+    x: int32,
+    y: int32,
+    nWidth: int32,
+    nHeight: int32,
+    hwndParent: HWND,
+    nID: int32,
+  ): HWND {.winapi, stdcall, dynlib: "avicap32", importc: "capCreateCaptureWindowA".}
+
+  proc capGetDriverDescription*(
+    wDriverIndex: UINT, lpszName: LPSTR, cbName: int32, lpszVer: LPSTR, cbVer: int32
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "avicap32", importc: "capGetDriverDescriptionA"
+  .}
+
+  proc GetOpenFileNamePreview*(
+    lpofn: LPOPENFILENAMEA
+  ): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc: "GetOpenFileNamePreviewA".}
+
+  proc GetSaveFileNamePreview*(
+    lpofn: LPOPENFILENAMEA
+  ): WINBOOL {.winapi, stdcall, dynlib: "msvfw32", importc: "GetSaveFileNamePreviewA".}
--- a/semicongine/thirdparty/winim/winim/inc/virtdisk.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/virtdisk.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -31,22 +31,29 @@
   VIRTUAL_STORAGE_TYPE* {.pure.} = object
     DeviceId*: ULONG
     VendorId*: GUID
+
   PVIRTUAL_STORAGE_TYPE* = ptr VIRTUAL_STORAGE_TYPE
   ATTACH_VIRTUAL_DISK_PARAMETERS_UNION1_Version1* {.pure.} = object
     Reserved*: ULONG
+
   ATTACH_VIRTUAL_DISK_PARAMETERS_UNION1* {.pure, union.} = object
     Version1*: ATTACH_VIRTUAL_DISK_PARAMETERS_UNION1_Version1
+
   ATTACH_VIRTUAL_DISK_PARAMETERS* {.pure.} = object
     Version*: ATTACH_VIRTUAL_DISK_VERSION
     union1*: ATTACH_VIRTUAL_DISK_PARAMETERS_UNION1
+
   PATTACH_VIRTUAL_DISK_PARAMETERS* = ptr ATTACH_VIRTUAL_DISK_PARAMETERS
   COMPACT_VIRTUAL_DISK_PARAMETERS_UNION1_Version1* {.pure.} = object
     Reserved*: ULONG
+
   COMPACT_VIRTUAL_DISK_PARAMETERS_UNION1* {.pure, union.} = object
     Version1*: COMPACT_VIRTUAL_DISK_PARAMETERS_UNION1_Version1
+
   COMPACT_VIRTUAL_DISK_PARAMETERS* {.pure.} = object
     Version*: COMPACT_VIRTUAL_DISK_VERSION
     union1*: COMPACT_VIRTUAL_DISK_PARAMETERS_UNION1
+
   PCOMPACT_VIRTUAL_DISK_PARAMETERS* = ptr COMPACT_VIRTUAL_DISK_PARAMETERS
   CREATE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1* {.pure.} = object
     UniqueId*: GUID
@@ -55,28 +62,36 @@
     SectorSizeInBytes*: ULONG
     ParentPath*: PCWSTR
     SourcePath*: PCWSTR
+
   CREATE_VIRTUAL_DISK_PARAMETERS_UNION1* {.pure, union.} = object
     Version1*: CREATE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1
+
   CREATE_VIRTUAL_DISK_PARAMETERS* {.pure.} = object
     Version*: CREATE_VIRTUAL_DISK_VERSION
     union1*: CREATE_VIRTUAL_DISK_PARAMETERS_UNION1
+
   PCREATE_VIRTUAL_DISK_PARAMETERS* = ptr CREATE_VIRTUAL_DISK_PARAMETERS
   EXPAND_VIRTUAL_DISK_PARAMETERS_UNION1_Version1* {.pure.} = object
     NewSize*: ULONGLONG
+
   EXPAND_VIRTUAL_DISK_PARAMETERS_UNION1* {.pure, union.} = object
     Version1*: EXPAND_VIRTUAL_DISK_PARAMETERS_UNION1_Version1
+
   EXPAND_VIRTUAL_DISK_PARAMETERS* {.pure.} = object
     Version*: EXPAND_VIRTUAL_DISK_VERSION
     union1*: EXPAND_VIRTUAL_DISK_PARAMETERS_UNION1
+
   PEXPAND_VIRTUAL_DISK_PARAMETERS* = ptr EXPAND_VIRTUAL_DISK_PARAMETERS
   GET_VIRTUAL_DISK_INFO_UNION1_Size* {.pure.} = object
     VirtualSize*: ULONGLONG
     PhysicalSize*: ULONGLONG
     BlockSize*: ULONG
     SectorSize*: ULONG
+
   GET_VIRTUAL_DISK_INFO_UNION1_ParentLocation* {.pure.} = object
     ParentResolved*: BOOL
     ParentLocationBuffer*: array[1, WCHAR]
+
   GET_VIRTUAL_DISK_INFO_UNION1* {.pure, union.} = object
     Size*: GET_VIRTUAL_DISK_INFO_UNION1_Size
     Identifier*: GUID
@@ -85,37 +100,48 @@
     ParentTimestamp*: ULONG
     VirtualStorageType*: VIRTUAL_STORAGE_TYPE
     ProviderSubtype*: ULONG
+
   GET_VIRTUAL_DISK_INFO* {.pure.} = object
     Version*: GET_VIRTUAL_DISK_INFO_VERSION
     union1*: GET_VIRTUAL_DISK_INFO_UNION1
+
   PGET_VIRTUAL_DISK_INFO* = ptr GET_VIRTUAL_DISK_INFO
   MERGE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1* {.pure.} = object
     MergeDepth*: ULONG
+
   MERGE_VIRTUAL_DISK_PARAMETERS_UNION1* {.pure, union.} = object
     Version1*: MERGE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1
+
   MERGE_VIRTUAL_DISK_PARAMETERS* {.pure.} = object
     Version*: MERGE_VIRTUAL_DISK_VERSION
     union1*: MERGE_VIRTUAL_DISK_PARAMETERS_UNION1
+
   PMERGE_VIRTUAL_DISK_PARAMETERS* = ptr MERGE_VIRTUAL_DISK_PARAMETERS
   OPEN_VIRTUAL_DISK_PARAMETERS_UNION1_Version1* {.pure.} = object
     RWDepth*: ULONG
+
   OPEN_VIRTUAL_DISK_PARAMETERS_UNION1* {.pure, union.} = object
     Version1*: OPEN_VIRTUAL_DISK_PARAMETERS_UNION1_Version1
+
   OPEN_VIRTUAL_DISK_PARAMETERS* {.pure.} = object
     Version*: OPEN_VIRTUAL_DISK_VERSION
     union1*: OPEN_VIRTUAL_DISK_PARAMETERS_UNION1
+
   POPEN_VIRTUAL_DISK_PARAMETERS* = ptr OPEN_VIRTUAL_DISK_PARAMETERS
   SET_VIRTUAL_DISK_INFO_UNION1* {.pure, union.} = object
     ParentFilePath*: PCWSTR
     UniqueIdentifier*: GUID
+
   SET_VIRTUAL_DISK_INFO* {.pure.} = object
     Version*: SET_VIRTUAL_DISK_INFO_VERSION
     union1*: SET_VIRTUAL_DISK_INFO_UNION1
+
   PSET_VIRTUAL_DISK_INFO* = ptr SET_VIRTUAL_DISK_INFO
   STORAGE_DEPENDENCY_INFO_TYPE_1* {.pure.} = object
     DependencyTypeFlags*: DEPENDENT_DISK_FLAG
     ProviderSpecificFlags*: ULONG
     VirtualStorageType*: VIRTUAL_STORAGE_TYPE
+
   PSTORAGE_DEPENDENCY_INFO_TYPE_1* = ptr STORAGE_DEPENDENCY_INFO_TYPE_1
   STORAGE_DEPENDENCY_INFO_TYPE_2* {.pure.} = object
     DependencyTypeFlags*: DEPENDENT_DISK_FLAG
@@ -126,20 +152,25 @@
     HostVolumeName*: PWSTR
     DependentVolumeName*: PWSTR
     DependentVolumeRelativePath*: PWSTR
+
   PSTORAGE_DEPENDENCY_INFO_TYPE_2* = ptr STORAGE_DEPENDENCY_INFO_TYPE_2
   STORAGE_DEPENDENCY_INFO_UNION1* {.pure, union.} = object
     Version1Entries*: array[1, STORAGE_DEPENDENCY_INFO_TYPE_1]
     Version2Entries*: array[1, STORAGE_DEPENDENCY_INFO_TYPE_2]
+
   STORAGE_DEPENDENCY_INFO* {.pure.} = object
     Version*: STORAGE_DEPENDENCY_INFO_VERSION
     NumberEntries*: ULONG
     union1*: STORAGE_DEPENDENCY_INFO_UNION1
+
   PSTORAGE_DEPENDENCY_INFO* = ptr STORAGE_DEPENDENCY_INFO
   VIRTUAL_DISK_PROGRESS* {.pure.} = object
     OperationStatus*: DWORD
     CurrentValue*: ULONGLONG
     CompletionValue*: ULONGLONG
+
   PVIRTUAL_DISK_PROGRESS* = ptr VIRTUAL_DISK_PROGRESS
+
 const
   ATTACH_VIRTUAL_DISK_FLAG_NONE* = 0x00000000
   ATTACH_VIRTUAL_DISK_FLAG_READ_ONLY* = 0x00000001
@@ -209,61 +240,283 @@
   VIRTUAL_STORAGE_TYPE_DEVICE_UNKNOWN* = 0
   VIRTUAL_STORAGE_TYPE_DEVICE_ISO* = 1
   VIRTUAL_STORAGE_TYPE_DEVICE_VHD* = 2
-  VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT* = DEFINE_GUID("ec984aec-a0f9-47e9-901f-71415a66345b")
-proc AttachVirtualDisk*(VirtualDiskHandle: HANDLE, SecurityDescriptor: PSECURITY_DESCRIPTOR, Flags: ATTACH_VIRTUAL_DISK_FLAG, ProviderSpecificFlags: ULONG, Parameters: PATTACH_VIRTUAL_DISK_PARAMETERS, Overlapped: LPOVERLAPPED): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
-proc CompactVirtualDisk*(VirtualDiskHandle: HANDLE, Flags: COMPACT_VIRTUAL_DISK_FLAG, Parameters: PCOMPACT_VIRTUAL_DISK_PARAMETERS, Overlapped: LPOVERLAPPED): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
-proc CreateVirtualDisk*(VirtualStorageType: PVIRTUAL_STORAGE_TYPE, Path: PCWSTR, VirtualDiskAccessMask: VIRTUAL_DISK_ACCESS_MASK, SecurityDescriptor: PSECURITY_DESCRIPTOR, Flags: CREATE_VIRTUAL_DISK_FLAG, ProviderSpecificFlags: ULONG, Parameters: PCREATE_VIRTUAL_DISK_PARAMETERS, Overlapped: LPOVERLAPPED, Handle: PHANDLE): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
-proc DetachVirtualDisk*(VirtualDiskHandle: HANDLE, Flags: DETACH_VIRTUAL_DISK_FLAG, ProviderSpecificFlags: ULONG): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
-proc ExpandVirtualDisk*(VirtualDiskHandle: HANDLE, Flags: EXPAND_VIRTUAL_DISK_FLAG, Parameters: PEXPAND_VIRTUAL_DISK_PARAMETERS, Overlapped: LPOVERLAPPED): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
-proc GetStorageDependencyInformation*(ObjectHandle: HANDLE, Flags: GET_STORAGE_DEPENDENCY_FLAG, StorageDependencyInfoSize: ULONG, StorageDependencyInfo: PSTORAGE_DEPENDENCY_INFO, SizeUsed: PULONG): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
-proc GetVirtualDiskInformation*(VirtualDiskHandle: HANDLE, VirtualDiskInfoSize: PULONG, VirtualDiskInfo: PGET_VIRTUAL_DISK_INFO, SizeUsed: PULONG): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
-proc GetVirtualDiskOperationProgress*(VirtualDiskHandle: HANDLE, Overlapped: LPOVERLAPPED, Progress: PVIRTUAL_DISK_PROGRESS): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
-proc GetVirtualDiskPhysicalPath*(VirtualDiskHandle: HANDLE, DiskPathSizeInBytes: PULONG, DiskPath: PWSTR): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
-proc MergeVirtualDisk*(VirtualDiskHandle: HANDLE, Flags: MERGE_VIRTUAL_DISK_FLAG, Parameters: PMERGE_VIRTUAL_DISK_PARAMETERS, Overlapped: LPOVERLAPPED): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
-proc OpenVirtualDisk*(VirtualStorageType: PVIRTUAL_STORAGE_TYPE, Path: PCWSTR, VirtualDiskAccessMask: VIRTUAL_DISK_ACCESS_MASK, Flags: OPEN_VIRTUAL_DISK_FLAG, Parameters: POPEN_VIRTUAL_DISK_PARAMETERS, Handle: PHANDLE): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
-proc SetVirtualDiskInformation*(VirtualDiskHandle: HANDLE, VirtualDiskInfo: PSET_VIRTUAL_DISK_INFO): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
-proc `Version1=`*(self: var ATTACH_VIRTUAL_DISK_PARAMETERS, x: ATTACH_VIRTUAL_DISK_PARAMETERS_UNION1_Version1) {.inline.} = self.union1.Version1 = x
-proc Version1*(self: ATTACH_VIRTUAL_DISK_PARAMETERS): ATTACH_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} = self.union1.Version1
-proc Version1*(self: var ATTACH_VIRTUAL_DISK_PARAMETERS): var ATTACH_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} = self.union1.Version1
-proc `Version1=`*(self: var COMPACT_VIRTUAL_DISK_PARAMETERS, x: COMPACT_VIRTUAL_DISK_PARAMETERS_UNION1_Version1) {.inline.} = self.union1.Version1 = x
-proc Version1*(self: COMPACT_VIRTUAL_DISK_PARAMETERS): COMPACT_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} = self.union1.Version1
-proc Version1*(self: var COMPACT_VIRTUAL_DISK_PARAMETERS): var COMPACT_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} = self.union1.Version1
-proc `Version1=`*(self: var CREATE_VIRTUAL_DISK_PARAMETERS, x: CREATE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1) {.inline.} = self.union1.Version1 = x
-proc Version1*(self: CREATE_VIRTUAL_DISK_PARAMETERS): CREATE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} = self.union1.Version1
-proc Version1*(self: var CREATE_VIRTUAL_DISK_PARAMETERS): var CREATE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} = self.union1.Version1
-proc `Version1=`*(self: var EXPAND_VIRTUAL_DISK_PARAMETERS, x: EXPAND_VIRTUAL_DISK_PARAMETERS_UNION1_Version1) {.inline.} = self.union1.Version1 = x
-proc Version1*(self: EXPAND_VIRTUAL_DISK_PARAMETERS): EXPAND_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} = self.union1.Version1
-proc Version1*(self: var EXPAND_VIRTUAL_DISK_PARAMETERS): var EXPAND_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} = self.union1.Version1
-proc `Identifier=`*(self: var GET_VIRTUAL_DISK_INFO, x: GUID) {.inline.} = self.union1.Identifier = x
-proc Identifier*(self: GET_VIRTUAL_DISK_INFO): GUID {.inline.} = self.union1.Identifier
-proc Identifier*(self: var GET_VIRTUAL_DISK_INFO): var GUID {.inline.} = self.union1.Identifier
-proc `ParentLocation=`*(self: var GET_VIRTUAL_DISK_INFO, x: GET_VIRTUAL_DISK_INFO_UNION1_ParentLocation) {.inline.} = self.union1.ParentLocation = x
-proc ParentLocation*(self: GET_VIRTUAL_DISK_INFO): GET_VIRTUAL_DISK_INFO_UNION1_ParentLocation {.inline.} = self.union1.ParentLocation
-proc ParentLocation*(self: var GET_VIRTUAL_DISK_INFO): var GET_VIRTUAL_DISK_INFO_UNION1_ParentLocation {.inline.} = self.union1.ParentLocation
-proc `ParentIdentifier=`*(self: var GET_VIRTUAL_DISK_INFO, x: GUID) {.inline.} = self.union1.ParentIdentifier = x
-proc ParentIdentifier*(self: GET_VIRTUAL_DISK_INFO): GUID {.inline.} = self.union1.ParentIdentifier
-proc ParentIdentifier*(self: var GET_VIRTUAL_DISK_INFO): var GUID {.inline.} = self.union1.ParentIdentifier
-proc `ParentTimestamp=`*(self: var GET_VIRTUAL_DISK_INFO, x: ULONG) {.inline.} = self.union1.ParentTimestamp = x
-proc ParentTimestamp*(self: GET_VIRTUAL_DISK_INFO): ULONG {.inline.} = self.union1.ParentTimestamp
-proc ParentTimestamp*(self: var GET_VIRTUAL_DISK_INFO): var ULONG {.inline.} = self.union1.ParentTimestamp
-proc `ProviderSubtype=`*(self: var GET_VIRTUAL_DISK_INFO, x: ULONG) {.inline.} = self.union1.ProviderSubtype = x
-proc ProviderSubtype*(self: GET_VIRTUAL_DISK_INFO): ULONG {.inline.} = self.union1.ProviderSubtype
-proc ProviderSubtype*(self: var GET_VIRTUAL_DISK_INFO): var ULONG {.inline.} = self.union1.ProviderSubtype
-proc `Version1=`*(self: var MERGE_VIRTUAL_DISK_PARAMETERS, x: MERGE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1) {.inline.} = self.union1.Version1 = x
-proc Version1*(self: MERGE_VIRTUAL_DISK_PARAMETERS): MERGE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} = self.union1.Version1
-proc Version1*(self: var MERGE_VIRTUAL_DISK_PARAMETERS): var MERGE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} = self.union1.Version1
-proc `Version1=`*(self: var OPEN_VIRTUAL_DISK_PARAMETERS, x: OPEN_VIRTUAL_DISK_PARAMETERS_UNION1_Version1) {.inline.} = self.union1.Version1 = x
-proc Version1*(self: OPEN_VIRTUAL_DISK_PARAMETERS): OPEN_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} = self.union1.Version1
-proc Version1*(self: var OPEN_VIRTUAL_DISK_PARAMETERS): var OPEN_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} = self.union1.Version1
-proc `ParentFilePath=`*(self: var SET_VIRTUAL_DISK_INFO, x: PCWSTR) {.inline.} = self.union1.ParentFilePath = x
-proc ParentFilePath*(self: SET_VIRTUAL_DISK_INFO): PCWSTR {.inline.} = self.union1.ParentFilePath
-proc ParentFilePath*(self: var SET_VIRTUAL_DISK_INFO): var PCWSTR {.inline.} = self.union1.ParentFilePath
-proc `UniqueIdentifier=`*(self: var SET_VIRTUAL_DISK_INFO, x: GUID) {.inline.} = self.union1.UniqueIdentifier = x
-proc UniqueIdentifier*(self: SET_VIRTUAL_DISK_INFO): GUID {.inline.} = self.union1.UniqueIdentifier
-proc UniqueIdentifier*(self: var SET_VIRTUAL_DISK_INFO): var GUID {.inline.} = self.union1.UniqueIdentifier
-proc `Version1Entries=`*(self: var STORAGE_DEPENDENCY_INFO, x: array[1, STORAGE_DEPENDENCY_INFO_TYPE_1]) {.inline.} = self.union1.Version1Entries = x
-proc Version1Entries*(self: STORAGE_DEPENDENCY_INFO): array[1, STORAGE_DEPENDENCY_INFO_TYPE_1] {.inline.} = self.union1.Version1Entries
-proc Version1Entries*(self: var STORAGE_DEPENDENCY_INFO): var array[1, STORAGE_DEPENDENCY_INFO_TYPE_1] {.inline.} = self.union1.Version1Entries
-proc `Version2Entries=`*(self: var STORAGE_DEPENDENCY_INFO, x: array[1, STORAGE_DEPENDENCY_INFO_TYPE_2]) {.inline.} = self.union1.Version2Entries = x
-proc Version2Entries*(self: STORAGE_DEPENDENCY_INFO): array[1, STORAGE_DEPENDENCY_INFO_TYPE_2] {.inline.} = self.union1.Version2Entries
-proc Version2Entries*(self: var STORAGE_DEPENDENCY_INFO): var array[1, STORAGE_DEPENDENCY_INFO_TYPE_2] {.inline.} = self.union1.Version2Entries
+  VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT* =
+    DEFINE_GUID("ec984aec-a0f9-47e9-901f-71415a66345b")
+proc AttachVirtualDisk*(
+  VirtualDiskHandle: HANDLE,
+  SecurityDescriptor: PSECURITY_DESCRIPTOR,
+  Flags: ATTACH_VIRTUAL_DISK_FLAG,
+  ProviderSpecificFlags: ULONG,
+  Parameters: PATTACH_VIRTUAL_DISK_PARAMETERS,
+  Overlapped: LPOVERLAPPED,
+): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
+
+proc CompactVirtualDisk*(
+  VirtualDiskHandle: HANDLE,
+  Flags: COMPACT_VIRTUAL_DISK_FLAG,
+  Parameters: PCOMPACT_VIRTUAL_DISK_PARAMETERS,
+  Overlapped: LPOVERLAPPED,
+): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
+
+proc CreateVirtualDisk*(
+  VirtualStorageType: PVIRTUAL_STORAGE_TYPE,
+  Path: PCWSTR,
+  VirtualDiskAccessMask: VIRTUAL_DISK_ACCESS_MASK,
+  SecurityDescriptor: PSECURITY_DESCRIPTOR,
+  Flags: CREATE_VIRTUAL_DISK_FLAG,
+  ProviderSpecificFlags: ULONG,
+  Parameters: PCREATE_VIRTUAL_DISK_PARAMETERS,
+  Overlapped: LPOVERLAPPED,
+  Handle: PHANDLE,
+): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
+
+proc DetachVirtualDisk*(
+  VirtualDiskHandle: HANDLE,
+  Flags: DETACH_VIRTUAL_DISK_FLAG,
+  ProviderSpecificFlags: ULONG,
+): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
+
+proc ExpandVirtualDisk*(
+  VirtualDiskHandle: HANDLE,
+  Flags: EXPAND_VIRTUAL_DISK_FLAG,
+  Parameters: PEXPAND_VIRTUAL_DISK_PARAMETERS,
+  Overlapped: LPOVERLAPPED,
+): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
+
+proc GetStorageDependencyInformation*(
+  ObjectHandle: HANDLE,
+  Flags: GET_STORAGE_DEPENDENCY_FLAG,
+  StorageDependencyInfoSize: ULONG,
+  StorageDependencyInfo: PSTORAGE_DEPENDENCY_INFO,
+  SizeUsed: PULONG,
+): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
+
+proc GetVirtualDiskInformation*(
+  VirtualDiskHandle: HANDLE,
+  VirtualDiskInfoSize: PULONG,
+  VirtualDiskInfo: PGET_VIRTUAL_DISK_INFO,
+  SizeUsed: PULONG,
+): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
+
+proc GetVirtualDiskOperationProgress*(
+  VirtualDiskHandle: HANDLE, Overlapped: LPOVERLAPPED, Progress: PVIRTUAL_DISK_PROGRESS
+): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
+
+proc GetVirtualDiskPhysicalPath*(
+  VirtualDiskHandle: HANDLE, DiskPathSizeInBytes: PULONG, DiskPath: PWSTR
+): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
+
+proc MergeVirtualDisk*(
+  VirtualDiskHandle: HANDLE,
+  Flags: MERGE_VIRTUAL_DISK_FLAG,
+  Parameters: PMERGE_VIRTUAL_DISK_PARAMETERS,
+  Overlapped: LPOVERLAPPED,
+): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
+
+proc OpenVirtualDisk*(
+  VirtualStorageType: PVIRTUAL_STORAGE_TYPE,
+  Path: PCWSTR,
+  VirtualDiskAccessMask: VIRTUAL_DISK_ACCESS_MASK,
+  Flags: OPEN_VIRTUAL_DISK_FLAG,
+  Parameters: POPEN_VIRTUAL_DISK_PARAMETERS,
+  Handle: PHANDLE,
+): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
+
+proc SetVirtualDiskInformation*(
+  VirtualDiskHandle: HANDLE, VirtualDiskInfo: PSET_VIRTUAL_DISK_INFO
+): DWORD {.winapi, stdcall, dynlib: "virtdisk", importc.}
+
+proc `Version1=`*(
+    self: var ATTACH_VIRTUAL_DISK_PARAMETERS,
+    x: ATTACH_VIRTUAL_DISK_PARAMETERS_UNION1_Version1,
+) {.inline.} =
+  self.union1.Version1 = x
+
+proc Version1*(
+    self: ATTACH_VIRTUAL_DISK_PARAMETERS
+): ATTACH_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} =
+  self.union1.Version1
+
+proc Version1*(
+    self: var ATTACH_VIRTUAL_DISK_PARAMETERS
+): var ATTACH_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} =
+  self.union1.Version1
+
+proc `Version1=`*(
+    self: var COMPACT_VIRTUAL_DISK_PARAMETERS,
+    x: COMPACT_VIRTUAL_DISK_PARAMETERS_UNION1_Version1,
+) {.inline.} =
+  self.union1.Version1 = x
+
+proc Version1*(
+    self: COMPACT_VIRTUAL_DISK_PARAMETERS
+): COMPACT_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} =
+  self.union1.Version1
+
+proc Version1*(
+    self: var COMPACT_VIRTUAL_DISK_PARAMETERS
+): var COMPACT_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} =
+  self.union1.Version1
+
+proc `Version1=`*(
+    self: var CREATE_VIRTUAL_DISK_PARAMETERS,
+    x: CREATE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1,
+) {.inline.} =
+  self.union1.Version1 = x
+
+proc Version1*(
+    self: CREATE_VIRTUAL_DISK_PARAMETERS
+): CREATE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} =
+  self.union1.Version1
+
+proc Version1*(
+    self: var CREATE_VIRTUAL_DISK_PARAMETERS
+): var CREATE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} =
+  self.union1.Version1
+
+proc `Version1=`*(
+    self: var EXPAND_VIRTUAL_DISK_PARAMETERS,
+    x: EXPAND_VIRTUAL_DISK_PARAMETERS_UNION1_Version1,
+) {.inline.} =
+  self.union1.Version1 = x
+
+proc Version1*(
+    self: EXPAND_VIRTUAL_DISK_PARAMETERS
+): EXPAND_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} =
+  self.union1.Version1
+
+proc Version1*(
+    self: var EXPAND_VIRTUAL_DISK_PARAMETERS
+): var EXPAND_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} =
+  self.union1.Version1
+
+proc `Identifier=`*(self: var GET_VIRTUAL_DISK_INFO, x: GUID) {.inline.} =
+  self.union1.Identifier = x
+
+proc Identifier*(self: GET_VIRTUAL_DISK_INFO): GUID {.inline.} =
+  self.union1.Identifier
+
+proc Identifier*(self: var GET_VIRTUAL_DISK_INFO): var GUID {.inline.} =
+  self.union1.Identifier
+
+proc `ParentLocation=`*(
+    self: var GET_VIRTUAL_DISK_INFO, x: GET_VIRTUAL_DISK_INFO_UNION1_ParentLocation
+) {.inline.} =
+  self.union1.ParentLocation = x
+
+proc ParentLocation*(
+    self: GET_VIRTUAL_DISK_INFO
+): GET_VIRTUAL_DISK_INFO_UNION1_ParentLocation {.inline.} =
+  self.union1.ParentLocation
+
+proc ParentLocation*(
+    self: var GET_VIRTUAL_DISK_INFO
+): var GET_VIRTUAL_DISK_INFO_UNION1_ParentLocation {.inline.} =
+  self.union1.ParentLocation
+
+proc `ParentIdentifier=`*(self: var GET_VIRTUAL_DISK_INFO, x: GUID) {.inline.} =
+  self.union1.ParentIdentifier = x
+
+proc ParentIdentifier*(self: GET_VIRTUAL_DISK_INFO): GUID {.inline.} =
+  self.union1.ParentIdentifier
+
+proc ParentIdentifier*(self: var GET_VIRTUAL_DISK_INFO): var GUID {.inline.} =
+  self.union1.ParentIdentifier
+
+proc `ParentTimestamp=`*(self: var GET_VIRTUAL_DISK_INFO, x: ULONG) {.inline.} =
+  self.union1.ParentTimestamp = x
+
+proc ParentTimestamp*(self: GET_VIRTUAL_DISK_INFO): ULONG {.inline.} =
+  self.union1.ParentTimestamp
+
+proc ParentTimestamp*(self: var GET_VIRTUAL_DISK_INFO): var ULONG {.inline.} =
+  self.union1.ParentTimestamp
+
+proc `ProviderSubtype=`*(self: var GET_VIRTUAL_DISK_INFO, x: ULONG) {.inline.} =
+  self.union1.ProviderSubtype = x
+
+proc ProviderSubtype*(self: GET_VIRTUAL_DISK_INFO): ULONG {.inline.} =
+  self.union1.ProviderSubtype
+
+proc ProviderSubtype*(self: var GET_VIRTUAL_DISK_INFO): var ULONG {.inline.} =
+  self.union1.ProviderSubtype
+
+proc `Version1=`*(
+    self: var MERGE_VIRTUAL_DISK_PARAMETERS,
+    x: MERGE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1,
+) {.inline.} =
+  self.union1.Version1 = x
+
+proc Version1*(
+    self: MERGE_VIRTUAL_DISK_PARAMETERS
+): MERGE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} =
+  self.union1.Version1
+
+proc Version1*(
+    self: var MERGE_VIRTUAL_DISK_PARAMETERS
+): var MERGE_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} =
+  self.union1.Version1
+
+proc `Version1=`*(
+    self: var OPEN_VIRTUAL_DISK_PARAMETERS,
+    x: OPEN_VIRTUAL_DISK_PARAMETERS_UNION1_Version1,
+) {.inline.} =
+  self.union1.Version1 = x
+
+proc Version1*(
+    self: OPEN_VIRTUAL_DISK_PARAMETERS
+): OPEN_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} =
+  self.union1.Version1
+
+proc Version1*(
+    self: var OPEN_VIRTUAL_DISK_PARAMETERS
+): var OPEN_VIRTUAL_DISK_PARAMETERS_UNION1_Version1 {.inline.} =
+  self.union1.Version1
+
+proc `ParentFilePath=`*(self: var SET_VIRTUAL_DISK_INFO, x: PCWSTR) {.inline.} =
+  self.union1.ParentFilePath = x
+
+proc ParentFilePath*(self: SET_VIRTUAL_DISK_INFO): PCWSTR {.inline.} =
+  self.union1.ParentFilePath
+
+proc ParentFilePath*(self: var SET_VIRTUAL_DISK_INFO): var PCWSTR {.inline.} =
+  self.union1.ParentFilePath
+
+proc `UniqueIdentifier=`*(self: var SET_VIRTUAL_DISK_INFO, x: GUID) {.inline.} =
+  self.union1.UniqueIdentifier = x
+
+proc UniqueIdentifier*(self: SET_VIRTUAL_DISK_INFO): GUID {.inline.} =
+  self.union1.UniqueIdentifier
+
+proc UniqueIdentifier*(self: var SET_VIRTUAL_DISK_INFO): var GUID {.inline.} =
+  self.union1.UniqueIdentifier
+
+proc `Version1Entries=`*(
+    self: var STORAGE_DEPENDENCY_INFO, x: array[1, STORAGE_DEPENDENCY_INFO_TYPE_1]
+) {.inline.} =
+  self.union1.Version1Entries = x
+
+proc Version1Entries*(
+    self: STORAGE_DEPENDENCY_INFO
+): array[1, STORAGE_DEPENDENCY_INFO_TYPE_1] {.inline.} =
+  self.union1.Version1Entries
+
+proc Version1Entries*(
+    self: var STORAGE_DEPENDENCY_INFO
+): var array[1, STORAGE_DEPENDENCY_INFO_TYPE_1] {.inline.} =
+  self.union1.Version1Entries
+
+proc `Version2Entries=`*(
+    self: var STORAGE_DEPENDENCY_INFO, x: array[1, STORAGE_DEPENDENCY_INFO_TYPE_2]
+) {.inline.} =
+  self.union1.Version2Entries = x
+
+proc Version2Entries*(
+    self: STORAGE_DEPENDENCY_INFO
+): array[1, STORAGE_DEPENDENCY_INFO_TYPE_2] {.inline.} =
+  self.union1.Version2Entries
+
+proc Version2Entries*(
+    self: var STORAGE_DEPENDENCY_INFO
+): var array[1, STORAGE_DEPENDENCY_INFO_TYPE_2] {.inline.} =
+  self.union1.Version2Entries
--- a/semicongine/thirdparty/winim/winim/inc/vssym32.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/vssym32.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -218,6 +218,7 @@
   LOGOFFBUTTONSSTATES* = int32
   MENUBANDPARTS* = int32
   MENUBANDSTATES* = int32
+
 const
   TMTVS_RESERVEDLOW* = 100000
   TMTVS_RESERVEDHIGH* = 19999
--- a/semicongine/thirdparty/winim/winim/inc/winbase.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winbase.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -65,25 +65,30 @@
     nLength*: DWORD
     lpSecurityDescriptor*: LPVOID
     bInheritHandle*: WINBOOL
+
   PSECURITY_ATTRIBUTES* = ptr SECURITY_ATTRIBUTES
   LPSECURITY_ATTRIBUTES* = ptr SECURITY_ATTRIBUTES
   OVERLAPPED_UNION1_STRUCT1* {.pure.} = object
     Offset*: DWORD
     OffsetHigh*: DWORD
+
   OVERLAPPED_UNION1* {.pure, union.} = object
     struct1*: OVERLAPPED_UNION1_STRUCT1
     Pointer*: PVOID
+
   OVERLAPPED* {.pure.} = object
     Internal*: ULONG_PTR
     InternalHigh*: ULONG_PTR
     union1*: OVERLAPPED_UNION1
     hEvent*: HANDLE
+
   LPOVERLAPPED* = ptr OVERLAPPED
   OVERLAPPED_ENTRY* {.pure.} = object
     lpCompletionKey*: ULONG_PTR
     lpOverlapped*: LPOVERLAPPED
     Internal*: ULONG_PTR
     dwNumberOfBytesTransferred*: DWORD
+
   LPOVERLAPPED_ENTRY* = ptr OVERLAPPED_ENTRY
   SYSTEMTIME* {.pure.} = object
     wYear*: WORD
@@ -94,6 +99,7 @@
     wMinute*: WORD
     wSecond*: WORD
     wMilliseconds*: WORD
+
   PSYSTEMTIME* = ptr SYSTEMTIME
   LPSYSTEMTIME* = ptr SYSTEMTIME
   WIN32_FIND_DATAA* {.pure.} = object
@@ -107,6 +113,7 @@
     dwReserved1*: DWORD
     cFileName*: array[MAX_PATH, CHAR]
     cAlternateFileName*: array[14, CHAR]
+
   PWIN32_FIND_DATAA* = ptr WIN32_FIND_DATAA
   LPWIN32_FIND_DATAA* = ptr WIN32_FIND_DATAA
   WIN32_FIND_DATAW* {.pure.} = object
@@ -120,6 +127,7 @@
     dwReserved1*: DWORD
     cFileName*: array[MAX_PATH, WCHAR]
     cAlternateFileName*: array[14, WCHAR]
+
   PWIN32_FIND_DATAW* = ptr WIN32_FIND_DATAW
   LPWIN32_FIND_DATAW* = ptr WIN32_FIND_DATAW
   CRITICAL_SECTION* = RTL_CRITICAL_SECTION
@@ -131,14 +139,17 @@
   PROCESS_HEAP_ENTRY_UNION1_Block* {.pure.} = object
     hMem*: HANDLE
     dwReserved*: array[3, DWORD]
+
   PROCESS_HEAP_ENTRY_UNION1_Region* {.pure.} = object
     dwCommittedSize*: DWORD
     dwUnCommittedSize*: DWORD
     lpFirstBlock*: LPVOID
     lpLastBlock*: LPVOID
+
   PROCESS_HEAP_ENTRY_UNION1* {.pure, union.} = object
     Block*: PROCESS_HEAP_ENTRY_UNION1_Block
     Region*: PROCESS_HEAP_ENTRY_UNION1_Region
+
   PROCESS_HEAP_ENTRY* {.pure.} = object
     lpData*: PVOID
     cbData*: DWORD
@@ -146,6 +157,7 @@
     iRegionIndex*: BYTE
     wFlags*: WORD
     union1*: PROCESS_HEAP_ENTRY_UNION1
+
   LPPROCESS_HEAP_ENTRY* = ptr PROCESS_HEAP_ENTRY
   PPROCESS_HEAP_ENTRY* = ptr PROCESS_HEAP_ENTRY
   REASON_CONTEXT_Reason_Detailed* {.pure.} = object
@@ -153,24 +165,29 @@
     LocalizedReasonId*: ULONG
     ReasonStringCount*: ULONG
     ReasonStrings*: ptr LPWSTR
+
   REASON_CONTEXT_Reason* {.pure, union.} = object
     Detailed*: REASON_CONTEXT_Reason_Detailed
     SimpleReasonString*: LPWSTR
+
   REASON_CONTEXT* {.pure.} = object
     Version*: ULONG
     Flags*: DWORD
     Reason*: REASON_CONTEXT_Reason
+
   PREASON_CONTEXT* = ptr REASON_CONTEXT
-  PTHREAD_START_ROUTINE* = proc (lpThreadParameter: LPVOID): DWORD {.stdcall.}
+  PTHREAD_START_ROUTINE* = proc(lpThreadParameter: LPVOID): DWORD {.stdcall.}
   LPTHREAD_START_ROUTINE* = PTHREAD_START_ROUTINE
   EXCEPTION_DEBUG_INFO* {.pure.} = object
     ExceptionRecord*: EXCEPTION_RECORD
     dwFirstChance*: DWORD
+
   LPEXCEPTION_DEBUG_INFO* = ptr EXCEPTION_DEBUG_INFO
   CREATE_THREAD_DEBUG_INFO* {.pure.} = object
     hThread*: HANDLE
     lpThreadLocalBase*: LPVOID
     lpStartAddress*: LPTHREAD_START_ROUTINE
+
   LPCREATE_THREAD_DEBUG_INFO* = ptr CREATE_THREAD_DEBUG_INFO
   CREATE_PROCESS_DEBUG_INFO* {.pure.} = object
     hFile*: HANDLE
@@ -183,12 +200,15 @@
     lpStartAddress*: LPTHREAD_START_ROUTINE
     lpImageName*: LPVOID
     fUnicode*: WORD
+
   LPCREATE_PROCESS_DEBUG_INFO* = ptr CREATE_PROCESS_DEBUG_INFO
   EXIT_THREAD_DEBUG_INFO* {.pure.} = object
     dwExitCode*: DWORD
+
   LPEXIT_THREAD_DEBUG_INFO* = ptr EXIT_THREAD_DEBUG_INFO
   EXIT_PROCESS_DEBUG_INFO* {.pure.} = object
     dwExitCode*: DWORD
+
   LPEXIT_PROCESS_DEBUG_INFO* = ptr EXIT_PROCESS_DEBUG_INFO
   LOAD_DLL_DEBUG_INFO* {.pure.} = object
     hFile*: HANDLE
@@ -197,18 +217,22 @@
     nDebugInfoSize*: DWORD
     lpImageName*: LPVOID
     fUnicode*: WORD
+
   LPLOAD_DLL_DEBUG_INFO* = ptr LOAD_DLL_DEBUG_INFO
   UNLOAD_DLL_DEBUG_INFO* {.pure.} = object
     lpBaseOfDll*: LPVOID
+
   LPUNLOAD_DLL_DEBUG_INFO* = ptr UNLOAD_DLL_DEBUG_INFO
   OUTPUT_DEBUG_STRING_INFO* {.pure.} = object
     lpDebugStringData*: LPSTR
     fUnicode*: WORD
     nDebugStringLength*: WORD
+
   LPOUTPUT_DEBUG_STRING_INFO* = ptr OUTPUT_DEBUG_STRING_INFO
   RIP_INFO* {.pure.} = object
     dwError*: DWORD
     dwType*: DWORD
+
   LPRIP_INFO* = ptr RIP_INFO
   DEBUG_EVENT_u* {.pure, union.} = object
     Exception*: EXCEPTION_DEBUG_INFO
@@ -220,14 +244,17 @@
     UnloadDll*: UNLOAD_DLL_DEBUG_INFO
     DebugString*: OUTPUT_DEBUG_STRING_INFO
     RipInfo*: RIP_INFO
+
   DEBUG_EVENT* {.pure.} = object
     dwDebugEventCode*: DWORD
     dwProcessId*: DWORD
     dwThreadId*: DWORD
     u*: DEBUG_EVENT_u
+
   LPDEBUG_EVENT* = ptr DEBUG_EVENT
   LPCONTEXT* = PCONTEXT
-  PTOP_LEVEL_EXCEPTION_FILTER* = proc (ExceptionInfo: ptr EXCEPTION_POINTERS): LONG {.stdcall.}
+  PTOP_LEVEL_EXCEPTION_FILTER* =
+    proc(ExceptionInfo: ptr EXCEPTION_POINTERS): LONG {.stdcall.}
   LPTOP_LEVEL_EXCEPTION_FILTER* = PTOP_LEVEL_EXCEPTION_FILTER
   BY_HANDLE_FILE_INFORMATION* {.pure.} = object
     dwFileAttributes*: DWORD
@@ -240,6 +267,7 @@
     nNumberOfLinks*: DWORD
     nFileIndexHigh*: DWORD
     nFileIndexLow*: DWORD
+
   PBY_HANDLE_FILE_INFORMATION* = ptr BY_HANDLE_FILE_INFORMATION
   LPBY_HANDLE_FILE_INFORMATION* = ptr BY_HANDLE_FILE_INFORMATION
   WIN32_FILE_ATTRIBUTE_DATA* {.pure.} = object
@@ -249,6 +277,7 @@
     ftLastWriteTime*: FILETIME
     nFileSizeHigh*: DWORD
     nFileSizeLow*: DWORD
+
   LPWIN32_FILE_ATTRIBUTE_DATA* = ptr WIN32_FILE_ATTRIBUTE_DATA
   CREATEFILE2_EXTENDED_PARAMETERS* {.pure.} = object
     dwSize*: DWORD
@@ -257,6 +286,7 @@
     dwSecurityQosFlags*: DWORD
     lpSecurityAttributes*: LPSECURITY_ATTRIBUTES
     hTemplateFile*: HANDLE
+
   PCREATEFILE2_EXTENDED_PARAMETERS* = ptr CREATEFILE2_EXTENDED_PARAMETERS
   LPCREATEFILE2_EXTENDED_PARAMETERS* = ptr CREATEFILE2_EXTENDED_PARAMETERS
   THEAP_SUMMARY* {.pure.} = object
@@ -265,22 +295,26 @@
     cbCommitted*: SIZE_T
     cbReserved*: SIZE_T
     cbMaxReserve*: SIZE_T
+
   PHEAP_SUMMARY* = ptr THEAP_SUMMARY
   LPHEAP_SUMMARY* = PHEAP_SUMMARY
   ENUMUILANG* {.pure.} = object
     NumOfEnumUILang*: ULONG
     SizeOfEnumUIBuffer*: ULONG
     pEnumUIBuffer*: ptr LANGID
+
   PENUMUILANG* = ptr ENUMUILANG
   WIN32_MEMORY_RANGE_ENTRY* {.pure.} = object
     VirtualAddress*: PVOID
     NumberOfBytes*: SIZE_T
+
   PWIN32_MEMORY_RANGE_ENTRY* = ptr WIN32_MEMORY_RANGE_ENTRY
   PROCESS_INFORMATION* {.pure.} = object
     hProcess*: HANDLE
     hThread*: HANDLE
     dwProcessId*: DWORD
     dwThreadId*: DWORD
+
   PPROCESS_INFORMATION* = ptr PROCESS_INFORMATION
   LPPROCESS_INFORMATION* = ptr PROCESS_INFORMATION
   STARTUPINFOA* {.pure.} = object
@@ -302,6 +336,7 @@
     hStdInput*: HANDLE
     hStdOutput*: HANDLE
     hStdError*: HANDLE
+
   LPSTARTUPINFOA* = ptr STARTUPINFOA
   STARTUPINFOW* {.pure.} = object
     cb*: DWORD
@@ -322,6 +357,7 @@
     hStdInput*: HANDLE
     hStdOutput*: HANDLE
     hStdError*: HANDLE
+
   LPSTARTUPINFOW* = ptr STARTUPINFOW
   PROC_THREAD_ATTRIBUTE_LIST* {.pure.} = object
   PPROC_THREAD_ATTRIBUTE_LIST* = ptr PROC_THREAD_ATTRIBUTE_LIST
@@ -339,9 +375,11 @@
   SYSTEM_INFO_UNION1_STRUCT1* {.pure.} = object
     wProcessorArchitecture*: WORD
     wReserved*: WORD
+
   SYSTEM_INFO_UNION1* {.pure, union.} = object
     dwOemId*: DWORD
     struct1*: SYSTEM_INFO_UNION1_STRUCT1
+
   SYSTEM_INFO* {.pure.} = object
     union1*: SYSTEM_INFO_UNION1
     dwPageSize*: DWORD
@@ -353,6 +391,7 @@
     dwAllocationGranularity*: DWORD
     wProcessorLevel*: WORD
     wProcessorRevision*: WORD
+
   LPSYSTEM_INFO* = ptr SYSTEM_INFO
   MEMORYSTATUSEX* {.pure.} = object
     dwLength*: DWORD
@@ -364,8 +403,9 @@
     ullTotalVirtual*: DWORDLONG
     ullAvailVirtual*: DWORDLONG
     ullAvailExtendedVirtual*: DWORDLONG
+
   LPMEMORYSTATUSEX* = ptr MEMORYSTATUSEX
-  PFIBER_START_ROUTINE* = proc (lpFiberParameter: LPVOID): VOID {.stdcall.}
+  PFIBER_START_ROUTINE* = proc(lpFiberParameter: LPVOID): VOID {.stdcall.}
   LPFIBER_START_ROUTINE* = PFIBER_START_ROUTINE
   COMMPROP* {.pure.} = object
     wPacketLength*: WORD
@@ -386,36 +426,38 @@
     dwProvSpec1*: DWORD
     dwProvSpec2*: DWORD
     wcProvChar*: array[1, WCHAR]
+
   LPCOMMPROP* = ptr COMMPROP
   COMSTAT* {.pure.} = object
-    fCtsHold* {.bitsize:1.}: DWORD
-    fDsrHold* {.bitsize:1.}: DWORD
-    fRlsdHold* {.bitsize:1.}: DWORD
-    fXoffHold* {.bitsize:1.}: DWORD
-    fXoffSent* {.bitsize:1.}: DWORD
-    fEof* {.bitsize:1.}: DWORD
-    fTxim* {.bitsize:1.}: DWORD
-    fReserved* {.bitsize:25.}: DWORD
+    fCtsHold* {.bitsize: 1.}: DWORD
+    fDsrHold* {.bitsize: 1.}: DWORD
+    fRlsdHold* {.bitsize: 1.}: DWORD
+    fXoffHold* {.bitsize: 1.}: DWORD
+    fXoffSent* {.bitsize: 1.}: DWORD
+    fEof* {.bitsize: 1.}: DWORD
+    fTxim* {.bitsize: 1.}: DWORD
+    fReserved* {.bitsize: 25.}: DWORD
     cbInQue*: DWORD
     cbOutQue*: DWORD
+
   LPCOMSTAT* = ptr COMSTAT
   DCB* {.pure.} = object
     DCBlength*: DWORD
     BaudRate*: DWORD
-    fBinary* {.bitsize:1.}: DWORD
-    fParity* {.bitsize:1.}: DWORD
-    fOutxCtsFlow* {.bitsize:1.}: DWORD
-    fOutxDsrFlow* {.bitsize:1.}: DWORD
-    fDtrControl* {.bitsize:2.}: DWORD
-    fDsrSensitivity* {.bitsize:1.}: DWORD
-    fTXContinueOnXoff* {.bitsize:1.}: DWORD
-    fOutX* {.bitsize:1.}: DWORD
-    fInX* {.bitsize:1.}: DWORD
-    fErrorChar* {.bitsize:1.}: DWORD
-    fNull* {.bitsize:1.}: DWORD
-    fRtsControl* {.bitsize:2.}: DWORD
-    fAbortOnError* {.bitsize:1.}: DWORD
-    fDummy2* {.bitsize:17.}: DWORD
+    fBinary* {.bitsize: 1.}: DWORD
+    fParity* {.bitsize: 1.}: DWORD
+    fOutxCtsFlow* {.bitsize: 1.}: DWORD
+    fOutxDsrFlow* {.bitsize: 1.}: DWORD
+    fDtrControl* {.bitsize: 2.}: DWORD
+    fDsrSensitivity* {.bitsize: 1.}: DWORD
+    fTXContinueOnXoff* {.bitsize: 1.}: DWORD
+    fOutX* {.bitsize: 1.}: DWORD
+    fInX* {.bitsize: 1.}: DWORD
+    fErrorChar* {.bitsize: 1.}: DWORD
+    fNull* {.bitsize: 1.}: DWORD
+    fRtsControl* {.bitsize: 2.}: DWORD
+    fAbortOnError* {.bitsize: 1.}: DWORD
+    fDummy2* {.bitsize: 17.}: DWORD
     wReserved*: WORD
     XonLim*: WORD
     XoffLim*: WORD
@@ -428,6 +470,7 @@
     EofChar*: char
     EvtChar*: char
     wReserved1*: WORD
+
   LPDCB* = ptr DCB
   COMMTIMEOUTS* {.pure.} = object
     ReadIntervalTimeout*: DWORD
@@ -435,6 +478,7 @@
     ReadTotalTimeoutConstant*: DWORD
     WriteTotalTimeoutMultiplier*: DWORD
     WriteTotalTimeoutConstant*: DWORD
+
   LPCOMMTIMEOUTS* = ptr COMMTIMEOUTS
   COMMCONFIG* {.pure.} = object
     dwSize*: DWORD
@@ -445,6 +489,7 @@
     dwProviderOffset*: DWORD
     dwProviderSize*: DWORD
     wcProviderData*: array[1, WCHAR]
+
   LPCOMMCONFIG* = ptr COMMCONFIG
   MEMORYSTATUS* {.pure.} = object
     dwLength*: DWORD
@@ -455,6 +500,7 @@
     dwAvailPageFile*: SIZE_T
     dwTotalVirtual*: SIZE_T
     dwAvailVirtual*: SIZE_T
+
   LPMEMORYSTATUS* = ptr MEMORYSTATUS
   JIT_DEBUG_INFO* {.pure.} = object
     dwSize*: DWORD
@@ -464,6 +510,7 @@
     lpExceptionAddress*: ULONG64
     lpExceptionRecord*: ULONG64
     lpContextRecord*: ULONG64
+
   LPJIT_DEBUG_INFO* = ptr JIT_DEBUG_INFO
   JIT_DEBUG_INFO32* = JIT_DEBUG_INFO
   LPJIT_DEBUG_INFO32* = ptr JIT_DEBUG_INFO
@@ -471,8 +518,8 @@
   LPJIT_DEBUG_INFO64* = ptr JIT_DEBUG_INFO
   LPEXCEPTION_RECORD* = PEXCEPTION_RECORD
   LPEXCEPTION_POINTERS* = PEXCEPTION_POINTERS
-const
-  OFS_MAXPATHNAME* = 128
+
+const OFS_MAXPATHNAME* = 128
 type
   OFSTRUCT* {.pure.} = object
     cBytes*: BYTE
@@ -481,10 +528,12 @@
     Reserved1*: WORD
     Reserved2*: WORD
     szPathName*: array[OFS_MAXPATHNAME, CHAR]
+
   LPOFSTRUCT* = ptr OFSTRUCT
   POFSTRUCT* = ptr OFSTRUCT
   MEMORY_PRIORITY_INFORMATION* {.pure.} = object
     MemoryPriority*: ULONG
+
   PMEMORY_PRIORITY_INFORMATION* = ptr MEMORY_PRIORITY_INFORMATION
   POWER_REQUEST_CONTEXT* = REASON_CONTEXT
   PPOWER_REQUEST_CONTEXT* = ptr REASON_CONTEXT
@@ -495,32 +544,40 @@
     Size*: LARGE_INTEGER
     dwStreamNameSize*: DWORD
     cStreamName*: array[ANYSIZE_ARRAY, WCHAR]
+
   LPWIN32_STREAM_ID* = ptr WIN32_STREAM_ID
   STARTUPINFOEXA* {.pure.} = object
     StartupInfo*: STARTUPINFOA
     lpAttributeList*: LPPROC_THREAD_ATTRIBUTE_LIST
+
   LPSTARTUPINFOEXA* = ptr STARTUPINFOEXA
   STARTUPINFOEXW* {.pure.} = object
     StartupInfo*: STARTUPINFOW
     lpAttributeList*: LPPROC_THREAD_ATTRIBUTE_LIST
+
   LPSTARTUPINFOEXW* = ptr STARTUPINFOEXW
   WIN32_FIND_STREAM_DATA* {.pure.} = object
     StreamSize*: LARGE_INTEGER
     cStreamName*: array[MAX_PATH + 36, WCHAR]
+
   PWIN32_FIND_STREAM_DATA* = ptr WIN32_FIND_STREAM_DATA
   EVENTLOG_FULL_INFORMATION* {.pure.} = object
     dwFull*: DWORD
+
   LPEVENTLOG_FULL_INFORMATION* = ptr EVENTLOG_FULL_INFORMATION
   OPERATION_START_PARAMETERS* {.pure.} = object
     Version*: ULONG
     OperationId*: OPERATION_ID
     Flags*: ULONG
+
   POPERATION_START_PARAMETERS* = ptr OPERATION_START_PARAMETERS
   OPERATION_END_PARAMETERS* {.pure.} = object
     Version*: ULONG
     OperationId*: OPERATION_ID
     Flags*: ULONG
+
   POPERATION_END_PARAMETERS* = ptr OPERATION_END_PARAMETERS
+
 const
   HW_PROFILE_GUIDLEN* = 39
   MAX_PROFILE_LEN* = 80
@@ -529,11 +586,13 @@
     dwDockInfo*: DWORD
     szHwProfileGuid*: array[HW_PROFILE_GUIDLEN, CHAR]
     szHwProfileName*: array[MAX_PROFILE_LEN, CHAR]
+
   LPHW_PROFILE_INFOA* = ptr HW_PROFILE_INFOA
   HW_PROFILE_INFOW* {.pure.} = object
     dwDockInfo*: DWORD
     szHwProfileGuid*: array[HW_PROFILE_GUIDLEN, WCHAR]
     szHwProfileName*: array[MAX_PROFILE_LEN, WCHAR]
+
   LPHW_PROFILE_INFOW* = ptr HW_PROFILE_INFOW
   TIME_ZONE_INFORMATION* {.pure.} = object
     Bias*: LONG
@@ -543,6 +602,7 @@
     DaylightName*: array[32, WCHAR]
     DaylightDate*: SYSTEMTIME
     DaylightBias*: LONG
+
   PTIME_ZONE_INFORMATION* = ptr TIME_ZONE_INFORMATION
   LPTIME_ZONE_INFORMATION* = ptr TIME_ZONE_INFORMATION
   DYNAMIC_TIME_ZONE_INFORMATION* {.pure.} = object
@@ -555,6 +615,7 @@
     DaylightBias*: LONG
     TimeZoneKeyName*: array[128, WCHAR]
     DynamicDaylightTimeDisabled*: BOOLEAN
+
   PDYNAMIC_TIME_ZONE_INFORMATION* = ptr DYNAMIC_TIME_ZONE_INFORMATION
   SYSTEM_POWER_STATUS* {.pure.} = object
     ACLineStatus*: BYTE
@@ -563,6 +624,7 @@
     Reserved1*: BYTE
     BatteryLifeTime*: DWORD
     BatteryFullLifeTime*: DWORD
+
   LPSYSTEM_POWER_STATUS* = ptr SYSTEM_POWER_STATUS
   PBAD_MEMORY_CALLBACK_ROUTINE* = ptr BAD_MEMORY_CALLBACK_ROUTINE
   ACTCTXA* {.pure.} = object
@@ -575,6 +637,7 @@
     lpResourceName*: LPCSTR
     lpApplicationName*: LPCSTR
     hModule*: HMODULE
+
   PACTCTXA* = ptr ACTCTXA
   ACTCTXW* {.pure.} = object
     cbSize*: ULONG
@@ -586,6 +649,7 @@
     lpResourceName*: LPCWSTR
     lpApplicationName*: LPCWSTR
     hModule*: HMODULE
+
   PACTCTXW* = ptr ACTCTXW
   PCACTCTXA* = ptr ACTCTXA
   PCACTCTXW* = ptr ACTCTXW
@@ -600,6 +664,7 @@
     ulSectionTotalLength*: ULONG
     hActCtx*: HANDLE
     ulAssemblyRosterIndex*: ULONG
+
   PACTCTX_SECTION_KEYED_DATA_2600* = ptr ACTCTX_SECTION_KEYED_DATA_2600
   PCACTCTX_SECTION_KEYED_DATA_2600* = ptr ACTCTX_SECTION_KEYED_DATA_2600
   ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA* {.pure.} = object
@@ -608,8 +673,11 @@
     ulSectionLength*: ULONG
     lpSectionGlobalDataBase*: PVOID
     ulSectionGlobalDataLength*: ULONG
-  PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA* = ptr ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA
-  PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA* = ptr ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA
+
+  PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA* =
+    ptr ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA
+  PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA* =
+    ptr ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA
   ACTCTX_SECTION_KEYED_DATA* {.pure.} = object
     cbSize*: ULONG
     ulDataFormatVersion*: ULONG
@@ -623,11 +691,13 @@
     ulAssemblyRosterIndex*: ULONG
     ulFlags*: ULONG
     AssemblyMetadata*: ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA
+
   PACTCTX_SECTION_KEYED_DATA* = ptr ACTCTX_SECTION_KEYED_DATA
   PCACTCTX_SECTION_KEYED_DATA* = ptr ACTCTX_SECTION_KEYED_DATA
   ACTIVATION_CONTEXT_BASIC_INFORMATION* {.pure.} = object
     hActCtx*: HANDLE
     dwFlags*: DWORD
+
   PACTIVATION_CONTEXT_BASIC_INFORMATION* = ptr ACTIVATION_CONTEXT_BASIC_INFORMATION
   PCACTIVATION_CONTEXT_BASIC_INFORMATION* = ptr ACTIVATION_CONTEXT_BASIC_INFORMATION
   FILE_BASIC_INFO* {.pure.} = object
@@ -636,6 +706,7 @@
     LastWriteTime*: LARGE_INTEGER
     ChangeTime*: LARGE_INTEGER
     FileAttributes*: DWORD
+
   PFILE_BASIC_INFO* = ptr FILE_BASIC_INFO
   FILE_STANDARD_INFO* {.pure.} = object
     AllocationSize*: LARGE_INTEGER
@@ -643,22 +714,27 @@
     NumberOfLinks*: DWORD
     DeletePending*: BOOLEAN
     Directory*: BOOLEAN
+
   PFILE_STANDARD_INFO* = ptr FILE_STANDARD_INFO
   FILE_NAME_INFO* {.pure.} = object
     FileNameLength*: DWORD
     FileName*: array[1, WCHAR]
+
   PFILE_NAME_INFO* = ptr FILE_NAME_INFO
   FILE_RENAME_INFO* {.pure.} = object
     ReplaceIfExists*: BOOLEAN
     RootDirectory*: HANDLE
     FileNameLength*: DWORD
     FileName*: array[1, WCHAR]
+
   PFILE_RENAME_INFO* = ptr FILE_RENAME_INFO
   FILE_ALLOCATION_INFO* {.pure.} = object
     AllocationSize*: LARGE_INTEGER
+
   PFILE_ALLOCATION_INFO* = ptr FILE_ALLOCATION_INFO
   FILE_END_OF_FILE_INFO* {.pure.} = object
     EndOfFile*: LARGE_INTEGER
+
   PFILE_END_OF_FILE_INFO* = ptr FILE_END_OF_FILE_INFO
   FILE_STREAM_INFO* {.pure.} = object
     NextEntryOffset*: DWORD
@@ -666,6 +742,7 @@
     StreamSize*: LARGE_INTEGER
     StreamAllocationSize*: LARGE_INTEGER
     StreamName*: array[1, WCHAR]
+
   PFILE_STREAM_INFO* = ptr FILE_STREAM_INFO
   FILE_COMPRESSION_INFO* {.pure.} = object
     CompressedFileSize*: LARGE_INTEGER
@@ -674,13 +751,16 @@
     ChunkShift*: UCHAR
     ClusterShift*: UCHAR
     Reserved*: array[3, UCHAR]
+
   PFILE_COMPRESSION_INFO* = ptr FILE_COMPRESSION_INFO
   FILE_ATTRIBUTE_TAG_INFO* {.pure.} = object
     FileAttributes*: DWORD
     ReparseTag*: DWORD
+
   PFILE_ATTRIBUTE_TAG_INFO* = ptr FILE_ATTRIBUTE_TAG_INFO
   FILE_DISPOSITION_INFO* {.pure.} = object
     DeleteFile*: BOOLEAN
+
   PFILE_DISPOSITION_INFO* = ptr FILE_DISPOSITION_INFO
   FILE_ID_BOTH_DIR_INFO* {.pure.} = object
     NextEntryOffset*: DWORD
@@ -698,6 +778,7 @@
     ShortName*: array[12, WCHAR]
     FileId*: LARGE_INTEGER
     FileName*: array[1, WCHAR]
+
   PFILE_ID_BOTH_DIR_INFO* = ptr FILE_ID_BOTH_DIR_INFO
   FILE_FULL_DIR_INFO* {.pure.} = object
     NextEntryOffset*: ULONG
@@ -712,12 +793,15 @@
     FileNameLength*: ULONG
     EaSize*: ULONG
     FileName*: array[1, WCHAR]
+
   PFILE_FULL_DIR_INFO* = ptr FILE_FULL_DIR_INFO
   FILE_IO_PRIORITY_HINT_INFO* {.pure.} = object
     PriorityHint*: PRIORITY_HINT
+
   PFILE_IO_PRIORITY_HINT_INFO* = ptr FILE_IO_PRIORITY_HINT_INFO
   FILE_ALIGNMENT_INFO* {.pure.} = object
     AlignmentRequirement*: ULONG
+
   PFILE_ALIGNMENT_INFO* = ptr FILE_ALIGNMENT_INFO
   FILE_STORAGE_INFO* {.pure.} = object
     LogicalBytesPerSector*: ULONG
@@ -727,10 +811,12 @@
     Flags*: ULONG
     ByteOffsetForSectorAlignment*: ULONG
     ByteOffsetForPartitionAlignment*: ULONG
+
   PFILE_STORAGE_INFO* = ptr FILE_STORAGE_INFO
   FILE_ID_INFO* {.pure.} = object
     VolumeSerialNumber*: ULONGLONG
     FileId*: FILE_ID_128
+
   PFILE_ID_INFO* = ptr FILE_ID_INFO
   FILE_ID_EXTD_DIR_INFO* {.pure.} = object
     NextEntryOffset*: ULONG
@@ -747,20 +833,26 @@
     ReparsePointTag*: ULONG
     FileId*: FILE_ID_128
     FileName*: array[1, WCHAR]
+
   PFILE_ID_EXTD_DIR_INFO* = ptr FILE_ID_EXTD_DIR_INFO
   FILE_REMOTE_PROTOCOL_INFO_GenericReserved* {.pure.} = object
     Reserved*: array[8, ULONG]
+
   FILE_REMOTE_PROTOCOL_INFO_ProtocolSpecific_Smb2_Server* {.pure.} = object
     Capabilities*: ULONG
+
   FILE_REMOTE_PROTOCOL_INFO_ProtocolSpecific_Smb2_Share* {.pure.} = object
     Capabilities*: ULONG
     CachingFlags*: ULONG
+
   FILE_REMOTE_PROTOCOL_INFO_ProtocolSpecific_Smb2* {.pure.} = object
     Server*: FILE_REMOTE_PROTOCOL_INFO_ProtocolSpecific_Smb2_Server
     Share*: FILE_REMOTE_PROTOCOL_INFO_ProtocolSpecific_Smb2_Share
+
   FILE_REMOTE_PROTOCOL_INFO_ProtocolSpecific* {.pure, union.} = object
     Smb2*: FILE_REMOTE_PROTOCOL_INFO_ProtocolSpecific_Smb2
     Reserved*: array[16, ULONG]
+
   FILE_REMOTE_PROTOCOL_INFO* {.pure.} = object
     StructureVersion*: USHORT
     StructureSize*: USHORT
@@ -772,16 +864,20 @@
     Flags*: ULONG
     GenericReserved*: FILE_REMOTE_PROTOCOL_INFO_GenericReserved
     ProtocolSpecific*: FILE_REMOTE_PROTOCOL_INFO_ProtocolSpecific
+
   PFILE_REMOTE_PROTOCOL_INFO* = ptr FILE_REMOTE_PROTOCOL_INFO
   FILE_ID_DESCRIPTOR_UNION1* {.pure, union.} = object
     FileId*: LARGE_INTEGER
     ObjectId*: GUID
     ExtendedFileId*: FILE_ID_128
+
   FILE_ID_DESCRIPTOR* {.pure.} = object
     dwSize*: DWORD
     Type*: FILE_ID_TYPE
     union1*: FILE_ID_DESCRIPTOR_UNION1
+
   LPFILE_ID_DESCRIPTOR* = ptr FILE_ID_DESCRIPTOR
+
 const
   findExInfoStandard* = 0
   findExInfoBasic* = 1
@@ -958,9 +1054,9 @@
   FILE_CURRENT* = 1
   FILE_END* = 2
   WAIT_FAILED* = DWORD 0xffffffff'i32
-  WAIT_OBJECT_0* = (STATUS_WAIT_0)+0
-  WAIT_ABANDONED* = (STATUS_ABANDONED_WAIT_0)+0
-  WAIT_ABANDONED_0* = (STATUS_ABANDONED_WAIT_0)+0
+  WAIT_OBJECT_0* = (STATUS_WAIT_0) + 0
+  WAIT_ABANDONED* = (STATUS_ABANDONED_WAIT_0) + 0
+  WAIT_ABANDONED_0* = (STATUS_ABANDONED_WAIT_0) + 0
   WAIT_IO_COMPLETION* = STATUS_USER_APC
   FILE_FLAG_WRITE_THROUGH* = 0x80000000'i32
   FILE_FLAG_OVERLAPPED* = 0x40000000
@@ -1141,10 +1237,10 @@
   CREATE_IGNORE_SYSTEM_DEFAULT* = 0x80000000'i32
   STACK_SIZE_PARAM_IS_A_RESERVATION* = 0x10000
   THREAD_PRIORITY_LOWEST* = THREAD_BASE_PRIORITY_MIN
-  THREAD_PRIORITY_BELOW_NORMAL* = THREAD_PRIORITY_LOWEST+1
+  THREAD_PRIORITY_BELOW_NORMAL* = THREAD_PRIORITY_LOWEST + 1
   THREAD_PRIORITY_NORMAL* = 0
   THREAD_PRIORITY_HIGHEST* = THREAD_BASE_PRIORITY_MAX
-  THREAD_PRIORITY_ABOVE_NORMAL* = THREAD_PRIORITY_HIGHEST-1
+  THREAD_PRIORITY_ABOVE_NORMAL* = THREAD_PRIORITY_HIGHEST - 1
   THREAD_PRIORITY_ERROR_RETURN* = MAXLONG
   THREAD_PRIORITY_TIME_CRITICAL* = THREAD_BASE_PRIORITY_LOWRT
   THREAD_PRIORITY_IDLE* = THREAD_BASE_PRIORITY_IDLE
@@ -1409,24 +1505,42 @@
   procThreadAttributeUmsThread* = 6
   procThreadAttributeMitigationPolicy* = 7
   procThreadAttributeSecurityCapabilities* = 9
-template ProcThreadAttributeValue*(Number, Thread, Input, Additive: untyped): untyped = (((Number) and PROC_THREAD_ATTRIBUTE_NUMBER) or (if (Thread != FALSE): PROC_THREAD_ATTRIBUTE_THREAD else: 0) or (if (Input != FALSE): PROC_THREAD_ATTRIBUTE_INPUT else: 0) or (if (Additive != FALSE): PROC_THREAD_ATTRIBUTE_ADDITIVE else: 0))
+template ProcThreadAttributeValue*(Number, Thread, Input, Additive: untyped): untyped =
+  (
+    ((Number) and PROC_THREAD_ATTRIBUTE_NUMBER) or
+    (if (Thread != FALSE): PROC_THREAD_ATTRIBUTE_THREAD else: 0) or
+    (if (Input != FALSE): PROC_THREAD_ATTRIBUTE_INPUT else: 0) or
+    (if (Additive != FALSE): PROC_THREAD_ATTRIBUTE_ADDITIVE else: 0)
+  )
+
 const
-  PROC_THREAD_ATTRIBUTE_PARENT_PROCESS* = ProcThreadAttributeValue(procThreadAttributeParentProcess, FALSE, TRUE, FALSE)
-  PROC_THREAD_ATTRIBUTE_HANDLE_LIST* = ProcThreadAttributeValue(procThreadAttributeHandleList, FALSE, TRUE, FALSE)
-  PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY* = ProcThreadAttributeValue(procThreadAttributeGroupAffinity, TRUE, TRUE, FALSE)
-  PROC_THREAD_ATTRIBUTE_PREFERRED_NODE* = ProcThreadAttributeValue(procThreadAttributePreferredNode, FALSE, TRUE, FALSE)
-  PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR* = ProcThreadAttributeValue(procThreadAttributeIdealProcessor, TRUE, TRUE, FALSE)
-  PROC_THREAD_ATTRIBUTE_UMS_THREAD* = ProcThreadAttributeValue(procThreadAttributeUmsThread, TRUE, TRUE, FALSE)
-  PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY* = ProcThreadAttributeValue(procThreadAttributeMitigationPolicy, FALSE, TRUE, FALSE)
+  PROC_THREAD_ATTRIBUTE_PARENT_PROCESS* =
+    ProcThreadAttributeValue(procThreadAttributeParentProcess, FALSE, TRUE, FALSE)
+  PROC_THREAD_ATTRIBUTE_HANDLE_LIST* =
+    ProcThreadAttributeValue(procThreadAttributeHandleList, FALSE, TRUE, FALSE)
+  PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY* =
+    ProcThreadAttributeValue(procThreadAttributeGroupAffinity, TRUE, TRUE, FALSE)
+  PROC_THREAD_ATTRIBUTE_PREFERRED_NODE* =
+    ProcThreadAttributeValue(procThreadAttributePreferredNode, FALSE, TRUE, FALSE)
+  PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR* =
+    ProcThreadAttributeValue(procThreadAttributeIdealProcessor, TRUE, TRUE, FALSE)
+  PROC_THREAD_ATTRIBUTE_UMS_THREAD* =
+    ProcThreadAttributeValue(procThreadAttributeUmsThread, TRUE, TRUE, FALSE)
+  PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY* =
+    ProcThreadAttributeValue(procThreadAttributeMitigationPolicy, FALSE, TRUE, FALSE)
   PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE* = 0x01
   PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE* = 0x02
   PROCESS_CREATION_MITIGATION_POLICY_SEHOP_ENABLE* = 0x04
-  PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES* = ProcThreadAttributeValue(procThreadAttributeSecurityCapabilities, FALSE, TRUE, FALSE)
+  PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES* = ProcThreadAttributeValue(
+    procThreadAttributeSecurityCapabilities, FALSE, TRUE, FALSE
+  )
   PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_MASK* = 0x00000003 shl 8
   PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_DEFER* = 0x00000000 shl 8
   PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON* = 0x00000001 shl 8
-  PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_OFF* = 0x00000002 shl 8
-  PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON_REQ_RELOCS* = 0x00000003 shl 8
+  PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_OFF* =
+    0x00000002 shl 8
+  PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON_REQ_RELOCS* =
+    0x00000003 shl 8
   PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_MASK* = 0x00000003 shl 12
   PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_DEFER* = 0x00000000 shl 12
   PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_ON* = 0x00000001 shl 12
@@ -1445,18 +1559,27 @@
   PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_MASK* = 0x00000003 shl 24
   PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_DEFER* = 0x00000000 shl 24
   PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_ON* = 0x00000001 shl 24
-  PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_OFF* = 0x00000002 shl 24
+  PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_OFF* =
+    0x00000002 shl 24
   PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_RESERVED* = 0x00000003 shl 24
-  PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_MASK* = 0x00000003 shl 28
-  PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_DEFER* = 0x00000000 shl 28
-  PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_ON* = 0x00000001 shl 28
-  PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_OFF* = 0x00000002 shl 28
-  PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_RESERVED* = 0x00000003 shl 28
+  PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_MASK* =
+    0x00000003 shl 28
+  PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_DEFER* =
+    0x00000000 shl 28
+  PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_ON* =
+    0x00000001 shl 28
+  PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_OFF* =
+    0x00000002 shl 28
+  PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_RESERVED* =
+    0x00000003 shl 28
   PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_MASK* = 0x00000003 shl 32
   PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_DEFER* = 0x00000000 shl 32
-  PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_ON* = 0x00000001 shl 32
-  PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_OFF* = 0x00000002 shl 32
-  PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_RESERVED* = 0x00000003 shl 32
+  PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_ON* =
+    0x00000001 shl 32
+  PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_OFF* =
+    0x00000002 shl 32
+  PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_RESERVED* =
+    0x00000003 shl 32
   ATOM_FLAG_GLOBAL* = 0x2
   GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A* = "GetSystemWow64DirectoryA"
   GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W* = "GetSystemWow64DirectoryA"
@@ -1565,7 +1688,7 @@
   RESTART_NO_PATCH* = 4
   RESTART_NO_REBOOT* = 8
   RECOVERY_DEFAULT_PING_INTERVAL* = 5000
-  RECOVERY_MAX_PING_INTERVAL* = 5*60*1000
+  RECOVERY_MAX_PING_INTERVAL* = 5 * 60 * 1000
   ioPriorityHintVeryLow* = 0
   ioPriorityHintLow* = 1
   ioPriorityHintNormal* = 2
@@ -1595,25 +1718,68 @@
   VALID_SYMBOLIC_LINK_FLAGS* = SYMBOLIC_LINK_FLAG_DIRECTORY
   INVALID_HANDLE_VALUE* = HANDLE(-1)
 type
-  LPOVERLAPPED_COMPLETION_ROUTINE* = proc (dwErrorCode: DWORD, dwNumberOfBytesTransfered: DWORD, lpOverlapped: LPOVERLAPPED): VOID {.stdcall.}
-  BEM_FREE_INTERFACE_CALLBACK* = proc (interfaceInstance: pointer): void {.stdcall.}
-  PRESTORE_LAST_ERROR* = proc (P1: DWORD): VOID {.stdcall.}
-  ENUMRESLANGPROCA* = proc (hModule: HMODULE, lpType: LPCSTR, lpName: LPCSTR, wLanguage: WORD, lParam: LONG_PTR): WINBOOL {.stdcall.}
-  ENUMRESLANGPROCW* = proc (hModule: HMODULE, lpType: LPCWSTR, lpName: LPCWSTR, wLanguage: WORD, lParam: LONG_PTR): WINBOOL {.stdcall.}
-  ENUMRESNAMEPROCA* = proc (hModule: HMODULE, lpType: LPCSTR, lpName: LPSTR, lParam: LONG_PTR): WINBOOL {.stdcall.}
-  ENUMRESNAMEPROCW* = proc (hModule: HMODULE, lpType: LPCWSTR, lpName: LPWSTR, lParam: LONG_PTR): WINBOOL {.stdcall.}
-  ENUMRESTYPEPROCA* = proc (hModule: HMODULE, lpType: LPSTR, lParam: LONG_PTR): WINBOOL {.stdcall.}
-  ENUMRESTYPEPROCW* = proc (hModule: HMODULE, lpType: LPWSTR, lParam: LONG_PTR): WINBOOL {.stdcall.}
-  PGET_MODULE_HANDLE_EXA* = proc (dwFlags: DWORD, lpModuleName: LPCSTR, phModule: ptr HMODULE): WINBOOL {.stdcall.}
-  PGET_MODULE_HANDLE_EXW* = proc (dwFlags: DWORD, lpModuleName: LPCWSTR, phModule: ptr HMODULE): WINBOOL {.stdcall.}
-  PINIT_ONCE_FN* = proc (InitOnce: PINIT_ONCE, Parameter: PVOID, Context: ptr PVOID): WINBOOL {.stdcall.}
-  PTIMERAPCROUTINE* = proc (lpArgToCompletionRoutine: LPVOID, dwTimerLowValue: DWORD, dwTimerHighValue: DWORD): VOID {.stdcall.}
-  PTP_WIN32_IO_CALLBACK* = proc (Instance: PTP_CALLBACK_INSTANCE, Context: PVOID, Overlapped: PVOID, IoResult: ULONG, NumberOfBytesTransferred: ULONG_PTR, Io: PTP_IO): VOID {.stdcall.}
-  PFE_EXPORT_FUNC* = proc (pbData: PBYTE, pvCallbackContext: PVOID, ulLength: ULONG): DWORD {.stdcall.}
-  PFE_IMPORT_FUNC* = proc (pbData: PBYTE, pvCallbackContext: PVOID, ulLength: PULONG): DWORD {.stdcall.}
-  PGET_SYSTEM_WOW64_DIRECTORY_A* = proc (lpBuffer: LPSTR, uSize: UINT): UINT {.stdcall.}
-  PGET_SYSTEM_WOW64_DIRECTORY_W* = proc (lpBuffer: LPWSTR, uSize: UINT): UINT {.stdcall.}
-  LPPROGRESS_ROUTINE* = proc (TotalFileSize: LARGE_INTEGER, TotalBytesTransferred: LARGE_INTEGER, StreamSize: LARGE_INTEGER, StreamBytesTransferred: LARGE_INTEGER, dwStreamNumber: DWORD, dwCallbackReason: DWORD, hSourceFile: HANDLE, hDestinationFile: HANDLE, lpData: LPVOID): DWORD {.stdcall.}
+  LPOVERLAPPED_COMPLETION_ROUTINE* = proc(
+    dwErrorCode: DWORD, dwNumberOfBytesTransfered: DWORD, lpOverlapped: LPOVERLAPPED
+  ): VOID {.stdcall.}
+  BEM_FREE_INTERFACE_CALLBACK* = proc(interfaceInstance: pointer): void {.stdcall.}
+  PRESTORE_LAST_ERROR* = proc(P1: DWORD): VOID {.stdcall.}
+  ENUMRESLANGPROCA* = proc(
+    hModule: HMODULE, lpType: LPCSTR, lpName: LPCSTR, wLanguage: WORD, lParam: LONG_PTR
+  ): WINBOOL {.stdcall.}
+  ENUMRESLANGPROCW* = proc(
+    hModule: HMODULE,
+    lpType: LPCWSTR,
+    lpName: LPCWSTR,
+    wLanguage: WORD,
+    lParam: LONG_PTR,
+  ): WINBOOL {.stdcall.}
+  ENUMRESNAMEPROCA* = proc(
+    hModule: HMODULE, lpType: LPCSTR, lpName: LPSTR, lParam: LONG_PTR
+  ): WINBOOL {.stdcall.}
+  ENUMRESNAMEPROCW* = proc(
+    hModule: HMODULE, lpType: LPCWSTR, lpName: LPWSTR, lParam: LONG_PTR
+  ): WINBOOL {.stdcall.}
+  ENUMRESTYPEPROCA* =
+    proc(hModule: HMODULE, lpType: LPSTR, lParam: LONG_PTR): WINBOOL {.stdcall.}
+  ENUMRESTYPEPROCW* =
+    proc(hModule: HMODULE, lpType: LPWSTR, lParam: LONG_PTR): WINBOOL {.stdcall.}
+  PGET_MODULE_HANDLE_EXA* = proc(
+    dwFlags: DWORD, lpModuleName: LPCSTR, phModule: ptr HMODULE
+  ): WINBOOL {.stdcall.}
+  PGET_MODULE_HANDLE_EXW* = proc(
+    dwFlags: DWORD, lpModuleName: LPCWSTR, phModule: ptr HMODULE
+  ): WINBOOL {.stdcall.}
+  PINIT_ONCE_FN* = proc(
+    InitOnce: PINIT_ONCE, Parameter: PVOID, Context: ptr PVOID
+  ): WINBOOL {.stdcall.}
+  PTIMERAPCROUTINE* = proc(
+    lpArgToCompletionRoutine: LPVOID, dwTimerLowValue: DWORD, dwTimerHighValue: DWORD
+  ): VOID {.stdcall.}
+  PTP_WIN32_IO_CALLBACK* = proc(
+    Instance: PTP_CALLBACK_INSTANCE,
+    Context: PVOID,
+    Overlapped: PVOID,
+    IoResult: ULONG,
+    NumberOfBytesTransferred: ULONG_PTR,
+    Io: PTP_IO,
+  ): VOID {.stdcall.}
+  PFE_EXPORT_FUNC* =
+    proc(pbData: PBYTE, pvCallbackContext: PVOID, ulLength: ULONG): DWORD {.stdcall.}
+  PFE_IMPORT_FUNC* =
+    proc(pbData: PBYTE, pvCallbackContext: PVOID, ulLength: PULONG): DWORD {.stdcall.}
+  PGET_SYSTEM_WOW64_DIRECTORY_A* = proc(lpBuffer: LPSTR, uSize: UINT): UINT {.stdcall.}
+  PGET_SYSTEM_WOW64_DIRECTORY_W* = proc(lpBuffer: LPWSTR, uSize: UINT): UINT {.stdcall.}
+  LPPROGRESS_ROUTINE* = proc(
+    TotalFileSize: LARGE_INTEGER,
+    TotalBytesTransferred: LARGE_INTEGER,
+    StreamSize: LARGE_INTEGER,
+    StreamBytesTransferred: LARGE_INTEGER,
+    dwStreamNumber: DWORD,
+    dwCallbackReason: DWORD,
+    hSourceFile: HANDLE,
+    hDestinationFile: HANDLE,
+    lpData: LPVOID,
+  ): DWORD {.stdcall.}
   COPYFILE2_MESSAGE_Info_ChunkStarted* {.pure.} = object
     dwStreamNumber*: DWORD
     dwReserved*: DWORD
@@ -1623,6 +1789,7 @@
     uliChunkSize*: ULARGE_INTEGER
     uliStreamSize*: ULARGE_INTEGER
     uliTotalFileSize*: ULARGE_INTEGER
+
   COPYFILE2_MESSAGE_Info_ChunkFinished* {.pure.} = object
     dwStreamNumber*: DWORD
     dwFlags*: DWORD
@@ -1634,6 +1801,7 @@
     uliStreamBytesTransferred*: ULARGE_INTEGER
     uliTotalFileSize*: ULARGE_INTEGER
     uliTotalBytesTransferred*: ULARGE_INTEGER
+
   COPYFILE2_MESSAGE_Info_StreamStarted* {.pure.} = object
     dwStreamNumber*: DWORD
     dwReserved*: DWORD
@@ -1641,6 +1809,7 @@
     hDestinationFile*: HANDLE
     uliStreamSize*: ULARGE_INTEGER
     uliTotalFileSize*: ULARGE_INTEGER
+
   COPYFILE2_MESSAGE_Info_StreamFinished* {.pure.} = object
     dwStreamNumber*: DWORD
     dwReserved*: DWORD
@@ -1650,8 +1819,10 @@
     uliStreamBytesTransferred*: ULARGE_INTEGER
     uliTotalFileSize*: ULARGE_INTEGER
     uliTotalBytesTransferred*: ULARGE_INTEGER
+
   COPYFILE2_MESSAGE_Info_PollContinue* {.pure.} = object
     dwReserved*: DWORD
+
   COPYFILE2_MESSAGE_Info_Error* {.pure.} = object
     CopyPhase*: COPYFILE2_COPY_PHASE
     dwStreamNumber*: DWORD
@@ -1662,6 +1833,7 @@
     uliStreamBytesTransferred*: ULARGE_INTEGER
     uliTotalFileSize*: ULARGE_INTEGER
     uliTotalBytesTransferred*: ULARGE_INTEGER
+
   COPYFILE2_MESSAGE_Info* {.pure, union.} = object
     ChunkStarted*: COPYFILE2_MESSAGE_Info_ChunkStarted
     ChunkFinished*: COPYFILE2_MESSAGE_Info_ChunkFinished
@@ -1669,1187 +1841,5891 @@
     StreamFinished*: COPYFILE2_MESSAGE_Info_StreamFinished
     PollContinue*: COPYFILE2_MESSAGE_Info_PollContinue
     Error*: COPYFILE2_MESSAGE_Info_Error
+
   COPYFILE2_MESSAGE* {.pure.} = object
     Type*: COPYFILE2_MESSAGE_TYPE
     dwPadding*: DWORD
     Info*: COPYFILE2_MESSAGE_Info
-  PCOPYFILE2_PROGRESS_ROUTINE* = proc (pMessage: ptr COPYFILE2_MESSAGE, pvCallbackContext: PVOID): COPYFILE2_MESSAGE_ACTION {.stdcall.}
-  PQUERYACTCTXW_FUNC* = proc (dwFlags: DWORD, hActCtx: HANDLE, pvSubInstance: PVOID, ulInfoClass: ULONG, pvBuffer: PVOID, cbBuffer: SIZE_T, pcbWrittenOrRequired: ptr SIZE_T): WINBOOL {.stdcall.}
-  APPLICATION_RECOVERY_CALLBACK* = proc (pvParameter: PVOID): DWORD {.stdcall.}
+
+  PCOPYFILE2_PROGRESS_ROUTINE* = proc(
+    pMessage: ptr COPYFILE2_MESSAGE, pvCallbackContext: PVOID
+  ): COPYFILE2_MESSAGE_ACTION {.stdcall.}
+  PQUERYACTCTXW_FUNC* = proc(
+    dwFlags: DWORD,
+    hActCtx: HANDLE,
+    pvSubInstance: PVOID,
+    ulInfoClass: ULONG,
+    pvBuffer: PVOID,
+    cbBuffer: SIZE_T,
+    pcbWrittenOrRequired: ptr SIZE_T,
+  ): WINBOOL {.stdcall.}
+  APPLICATION_RECOVERY_CALLBACK* = proc(pvParameter: PVOID): DWORD {.stdcall.}
   COPYFILE2_EXTENDED_PARAMETERS* {.pure.} = object
     dwSize*: DWORD
     dwCopyFlags*: DWORD
     pfCancel*: ptr WINBOOL
     pProgressRoutine*: PCOPYFILE2_PROGRESS_ROUTINE
     pvCallbackContext*: PVOID
+
 proc IsDebuggerPresent*(): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OutputDebugStringA*(lpOutputString: LPCSTR): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OutputDebugStringW*(lpOutputString: LPCWSTR): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc OutputDebugStringA*(
+  lpOutputString: LPCSTR
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OutputDebugStringW*(
+  lpOutputString: LPCWSTR
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc DebugBreak*(): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ContinueDebugEvent*(dwProcessId: DWORD, dwThreadId: DWORD, dwContinueStatus: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WaitForDebugEvent*(lpDebugEvent: LPDEBUG_EVENT, dwMilliseconds: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DebugActiveProcess*(dwProcessId: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DebugActiveProcessStop*(dwProcessId: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CheckRemoteDebuggerPresent*(hProcess: HANDLE, pbDebuggerPresent: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc UnhandledExceptionFilter*(ExceptionInfo: ptr EXCEPTION_POINTERS): LONG {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetUnhandledExceptionFilter*(lpTopLevelExceptionFilter: LPTOP_LEVEL_EXCEPTION_FILTER): LPTOP_LEVEL_EXCEPTION_FILTER {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc ContinueDebugEvent*(
+  dwProcessId: DWORD, dwThreadId: DWORD, dwContinueStatus: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WaitForDebugEvent*(
+  lpDebugEvent: LPDEBUG_EVENT, dwMilliseconds: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DebugActiveProcess*(
+  dwProcessId: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DebugActiveProcessStop*(
+  dwProcessId: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CheckRemoteDebuggerPresent*(
+  hProcess: HANDLE, pbDebuggerPresent: PBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc UnhandledExceptionFilter*(
+  ExceptionInfo: ptr EXCEPTION_POINTERS
+): LONG {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetUnhandledExceptionFilter*(
+  lpTopLevelExceptionFilter: LPTOP_LEVEL_EXCEPTION_FILTER
+): LPTOP_LEVEL_EXCEPTION_FILTER {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc SetErrorMode*(uMode: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AddVectoredExceptionHandler*(First: ULONG, Handler: PVECTORED_EXCEPTION_HANDLER): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RemoveVectoredExceptionHandler*(Handle: PVOID): ULONG {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AddVectoredContinueHandler*(First: ULONG, Handler: PVECTORED_EXCEPTION_HANDLER): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RemoveVectoredContinueHandler*(Handle: PVOID): ULONG {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc AddVectoredExceptionHandler*(
+  First: ULONG, Handler: PVECTORED_EXCEPTION_HANDLER
+): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RemoveVectoredExceptionHandler*(
+  Handle: PVOID
+): ULONG {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AddVectoredContinueHandler*(
+  First: ULONG, Handler: PVECTORED_EXCEPTION_HANDLER
+): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RemoveVectoredContinueHandler*(
+  Handle: PVOID
+): ULONG {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetErrorMode*(): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RestoreLastError*(dwErrCode: DWORD): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RaiseException*(dwExceptionCode: DWORD, dwExceptionFlags: DWORD, nNumberOfArguments: DWORD, lpArguments: ptr ULONG_PTR): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc RestoreLastError*(
+  dwErrCode: DWORD
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RaiseException*(
+  dwExceptionCode: DWORD,
+  dwExceptionFlags: DWORD,
+  nNumberOfArguments: DWORD,
+  lpArguments: ptr ULONG_PTR,
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetLastError*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetLastError*(dwErrCode: DWORD): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FlsAlloc*(lpCallback: PFLS_CALLBACK_FUNCTION): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FlsGetValue*(dwFlsIndex: DWORD): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FlsSetValue*(dwFlsIndex: DWORD, lpFlsData: PVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FlsFree*(dwFlsIndex: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc SetLastError*(
+  dwErrCode: DWORD
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FlsAlloc*(
+  lpCallback: PFLS_CALLBACK_FUNCTION
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FlsGetValue*(
+  dwFlsIndex: DWORD
+): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FlsSetValue*(
+  dwFlsIndex: DWORD, lpFlsData: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FlsFree*(
+  dwFlsIndex: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc IsThreadAFiber*(): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CompareFileTime*(lpFileTime1: ptr FILETIME, lpFileTime2: ptr FILETIME): LONG {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateFileA*(lpFileName: LPCSTR, dwDesiredAccess: DWORD, dwShareMode: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD, hTemplateFile: HANDLE): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateFileW*(lpFileName: LPCWSTR, dwDesiredAccess: DWORD, dwShareMode: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD, hTemplateFile: HANDLE): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DefineDosDeviceW*(dwFlags: DWORD, lpDeviceName: LPCWSTR, lpTargetPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeleteVolumeMountPointW*(lpszVolumeMountPoint: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FileTimeToLocalFileTime*(lpFileTime: ptr FILETIME, lpLocalFileTime: LPFILETIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindCloseChangeNotification*(hChangeHandle: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstChangeNotificationA*(lpPathName: LPCSTR, bWatchSubtree: WINBOOL, dwNotifyFilter: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstChangeNotificationW*(lpPathName: LPCWSTR, bWatchSubtree: WINBOOL, dwNotifyFilter: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstFileA*(lpFileName: LPCSTR, lpFindFileData: LPWIN32_FIND_DATAA): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstFileW*(lpFileName: LPCWSTR, lpFindFileData: LPWIN32_FIND_DATAW): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstVolumeW*(lpszVolumeName: LPWSTR, cchBufferLength: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindNextChangeNotification*(hChangeHandle: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindNextVolumeW*(hFindVolume: HANDLE, lpszVolumeName: LPWSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindVolumeClose*(hFindVolume: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDiskFreeSpaceA*(lpRootPathName: LPCSTR, lpSectorsPerCluster: LPDWORD, lpBytesPerSector: LPDWORD, lpNumberOfFreeClusters: LPDWORD, lpTotalNumberOfClusters: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDiskFreeSpaceW*(lpRootPathName: LPCWSTR, lpSectorsPerCluster: LPDWORD, lpBytesPerSector: LPDWORD, lpNumberOfFreeClusters: LPDWORD, lpTotalNumberOfClusters: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDriveTypeA*(lpRootPathName: LPCSTR): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDriveTypeW*(lpRootPathName: LPCWSTR): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFileAttributesA*(lpFileName: LPCSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFileAttributesW*(lpFileName: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFileInformationByHandle*(hFile: HANDLE, lpFileInformation: LPBY_HANDLE_FILE_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFileSize*(hFile: HANDLE, lpFileSizeHigh: LPDWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFileSizeEx*(hFile: HANDLE, lpFileSize: PLARGE_INTEGER): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFileTime*(hFile: HANDLE, lpCreationTime: LPFILETIME, lpLastAccessTime: LPFILETIME, lpLastWriteTime: LPFILETIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc CompareFileTime*(
+  lpFileTime1: ptr FILETIME, lpFileTime2: ptr FILETIME
+): LONG {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateFileA*(
+  lpFileName: LPCSTR,
+  dwDesiredAccess: DWORD,
+  dwShareMode: DWORD,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  dwCreationDisposition: DWORD,
+  dwFlagsAndAttributes: DWORD,
+  hTemplateFile: HANDLE,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateFileW*(
+  lpFileName: LPCWSTR,
+  dwDesiredAccess: DWORD,
+  dwShareMode: DWORD,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  dwCreationDisposition: DWORD,
+  dwFlagsAndAttributes: DWORD,
+  hTemplateFile: HANDLE,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DefineDosDeviceW*(
+  dwFlags: DWORD, lpDeviceName: LPCWSTR, lpTargetPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeleteVolumeMountPointW*(
+  lpszVolumeMountPoint: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FileTimeToLocalFileTime*(
+  lpFileTime: ptr FILETIME, lpLocalFileTime: LPFILETIME
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindCloseChangeNotification*(
+  hChangeHandle: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstChangeNotificationA*(
+  lpPathName: LPCSTR, bWatchSubtree: WINBOOL, dwNotifyFilter: DWORD
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstChangeNotificationW*(
+  lpPathName: LPCWSTR, bWatchSubtree: WINBOOL, dwNotifyFilter: DWORD
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstFileA*(
+  lpFileName: LPCSTR, lpFindFileData: LPWIN32_FIND_DATAA
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstFileW*(
+  lpFileName: LPCWSTR, lpFindFileData: LPWIN32_FIND_DATAW
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstVolumeW*(
+  lpszVolumeName: LPWSTR, cchBufferLength: DWORD
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindNextChangeNotification*(
+  hChangeHandle: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindNextVolumeW*(
+  hFindVolume: HANDLE, lpszVolumeName: LPWSTR, cchBufferLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindVolumeClose*(
+  hFindVolume: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDiskFreeSpaceA*(
+  lpRootPathName: LPCSTR,
+  lpSectorsPerCluster: LPDWORD,
+  lpBytesPerSector: LPDWORD,
+  lpNumberOfFreeClusters: LPDWORD,
+  lpTotalNumberOfClusters: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDiskFreeSpaceW*(
+  lpRootPathName: LPCWSTR,
+  lpSectorsPerCluster: LPDWORD,
+  lpBytesPerSector: LPDWORD,
+  lpNumberOfFreeClusters: LPDWORD,
+  lpTotalNumberOfClusters: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDriveTypeA*(
+  lpRootPathName: LPCSTR
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDriveTypeW*(
+  lpRootPathName: LPCWSTR
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFileAttributesA*(
+  lpFileName: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFileAttributesW*(
+  lpFileName: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFileInformationByHandle*(
+  hFile: HANDLE, lpFileInformation: LPBY_HANDLE_FILE_INFORMATION
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFileSize*(
+  hFile: HANDLE, lpFileSizeHigh: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFileSizeEx*(
+  hFile: HANDLE, lpFileSize: PLARGE_INTEGER
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFileTime*(
+  hFile: HANDLE,
+  lpCreationTime: LPFILETIME,
+  lpLastAccessTime: LPFILETIME,
+  lpLastWriteTime: LPFILETIME,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetFileType*(hFile: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFullPathNameA*(lpFileName: LPCSTR, nBufferLength: DWORD, lpBuffer: LPSTR, lpFilePart: ptr LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFullPathNameW*(lpFileName: LPCWSTR, nBufferLength: DWORD, lpBuffer: LPWSTR, lpFilePart: ptr LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc GetFullPathNameA*(
+  lpFileName: LPCSTR, nBufferLength: DWORD, lpBuffer: LPSTR, lpFilePart: ptr LPSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFullPathNameW*(
+  lpFileName: LPCWSTR, nBufferLength: DWORD, lpBuffer: LPWSTR, lpFilePart: ptr LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetLogicalDrives*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetLogicalDriveStringsW*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetLongPathNameA*(lpszShortPath: LPCSTR, lpszLongPath: LPSTR, cchBuffer: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetLongPathNameW*(lpszShortPath: LPCWSTR, lpszLongPath: LPWSTR, cchBuffer: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetShortPathNameW*(lpszLongPath: LPCWSTR, lpszShortPath: LPWSTR, cchBuffer: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetTempFileNameW*(lpPathName: LPCWSTR, lpPrefixString: LPCWSTR, uUnique: UINT, lpTempFileName: LPWSTR): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetVolumeInformationW*(lpRootPathName: LPCWSTR, lpVolumeNameBuffer: LPWSTR, nVolumeNameSize: DWORD, lpVolumeSerialNumber: LPDWORD, lpMaximumComponentLength: LPDWORD, lpFileSystemFlags: LPDWORD, lpFileSystemNameBuffer: LPWSTR, nFileSystemNameSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetVolumePathNameW*(lpszFileName: LPCWSTR, lpszVolumePathName: LPWSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LocalFileTimeToFileTime*(lpLocalFileTime: ptr FILETIME, lpFileTime: LPFILETIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LockFile*(hFile: HANDLE, dwFileOffsetLow: DWORD, dwFileOffsetHigh: DWORD, nNumberOfBytesToLockLow: DWORD, nNumberOfBytesToLockHigh: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryDosDeviceW*(lpDeviceName: LPCWSTR, lpTargetPath: LPWSTR, ucchMax: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReadFileEx*(hFile: HANDLE, lpBuffer: LPVOID, nNumberOfBytesToRead: DWORD, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReadFileScatter*(hFile: HANDLE, aSegmentArray: ptr FILE_SEGMENT_ELEMENT, nNumberOfBytesToRead: DWORD, lpReserved: LPDWORD, lpOverlapped: LPOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFilePointer*(hFile: HANDLE, lDistanceToMove: LONG, lpDistanceToMoveHigh: PLONG, dwMoveMethod: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFileTime*(hFile: HANDLE, lpCreationTime: ptr FILETIME, lpLastAccessTime: ptr FILETIME, lpLastWriteTime: ptr FILETIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFileValidData*(hFile: HANDLE, ValidDataLength: LONGLONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc UnlockFile*(hFile: HANDLE, dwFileOffsetLow: DWORD, dwFileOffsetHigh: DWORD, nNumberOfBytesToUnlockLow: DWORD, nNumberOfBytesToUnlockHigh: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteFileEx*(hFile: HANDLE, lpBuffer: LPCVOID, nNumberOfBytesToWrite: DWORD, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteFileGather*(hFile: HANDLE, aSegmentArray: ptr FILE_SEGMENT_ELEMENT, nNumberOfBytesToWrite: DWORD, lpReserved: LPDWORD, lpOverlapped: LPOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetVolumeNameForVolumeMountPointW*(lpszVolumeMountPoint: LPCWSTR, lpszVolumeName: LPWSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetVolumePathNamesForVolumeNameW*(lpszVolumeName: LPCWSTR, lpszVolumePathNames: LPWCH, cchBufferLength: DWORD, lpcchReturnLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFinalPathNameByHandleA*(hFile: HANDLE, lpszFilePath: LPSTR, cchFilePath: DWORD, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFinalPathNameByHandleW*(hFile: HANDLE, lpszFilePath: LPWSTR, cchFilePath: DWORD, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetVolumeInformationByHandleW*(hFile: HANDLE, lpVolumeNameBuffer: LPWSTR, nVolumeNameSize: DWORD, lpVolumeSerialNumber: LPDWORD, lpMaximumComponentLength: LPDWORD, lpFileSystemFlags: LPDWORD, lpFileSystemNameBuffer: LPWSTR, nFileSystemNameSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateDirectoryA*(lpPathName: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateDirectoryW*(lpPathName: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeleteFileA*(lpFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeleteFileW*(lpFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindClose*(hFindFile: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstFileExA*(lpFileName: LPCSTR, fInfoLevelId: FINDEX_INFO_LEVELS, lpFindFileData: LPVOID, fSearchOp: FINDEX_SEARCH_OPS, lpSearchFilter: LPVOID, dwAdditionalFlags: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstFileExW*(lpFileName: LPCWSTR, fInfoLevelId: FINDEX_INFO_LEVELS, lpFindFileData: LPVOID, fSearchOp: FINDEX_SEARCH_OPS, lpSearchFilter: LPVOID, dwAdditionalFlags: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindNextFileA*(hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATAA): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindNextFileW*(hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATAW): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FlushFileBuffers*(hFile: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDiskFreeSpaceExA*(lpDirectoryName: LPCSTR, lpFreeBytesAvailableToCaller: PULARGE_INTEGER, lpTotalNumberOfBytes: PULARGE_INTEGER, lpTotalNumberOfFreeBytes: PULARGE_INTEGER): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDiskFreeSpaceExW*(lpDirectoryName: LPCWSTR, lpFreeBytesAvailableToCaller: PULARGE_INTEGER, lpTotalNumberOfBytes: PULARGE_INTEGER, lpTotalNumberOfFreeBytes: PULARGE_INTEGER): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFileAttributesExA*(lpFileName: LPCSTR, fInfoLevelId: GET_FILEEX_INFO_LEVELS, lpFileInformation: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFileAttributesExW*(lpFileName: LPCWSTR, fInfoLevelId: GET_FILEEX_INFO_LEVELS, lpFileInformation: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetTempPathW*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LockFileEx*(hFile: HANDLE, dwFlags: DWORD, dwReserved: DWORD, nNumberOfBytesToLockLow: DWORD, nNumberOfBytesToLockHigh: DWORD, lpOverlapped: LPOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReadFile*(hFile: HANDLE, lpBuffer: LPVOID, nNumberOfBytesToRead: DWORD, lpNumberOfBytesRead: LPDWORD, lpOverlapped: LPOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RemoveDirectoryA*(lpPathName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RemoveDirectoryW*(lpPathName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetEndOfFile*(hFile: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFileAttributesA*(lpFileName: LPCSTR, dwFileAttributes: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFileAttributesW*(lpFileName: LPCWSTR, dwFileAttributes: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFilePointerEx*(hFile: HANDLE, liDistanceToMove: LARGE_INTEGER, lpNewFilePointer: PLARGE_INTEGER, dwMoveMethod: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc UnlockFileEx*(hFile: HANDLE, dwReserved: DWORD, nNumberOfBytesToUnlockLow: DWORD, nNumberOfBytesToUnlockHigh: DWORD, lpOverlapped: LPOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteFile*(hFile: HANDLE, lpBuffer: LPCVOID, nNumberOfBytesToWrite: DWORD, lpNumberOfBytesWritten: LPDWORD, lpOverlapped: LPOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFileInformationByHandle*(hFile: HANDLE, FileInformationClass: FILE_INFO_BY_HANDLE_CLASS, lpFileInformation: LPVOID, dwBufferSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateFile2*(lpFileName: LPCWSTR, dwDesiredAccess: DWORD, dwShareMode: DWORD, dwCreationDisposition: DWORD, pCreateExParams: LPCREATEFILE2_EXTENDED_PARAMETERS): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CloseHandle*(hObject: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DuplicateHandle*(hSourceProcessHandle: HANDLE, hSourceHandle: HANDLE, hTargetProcessHandle: HANDLE, lpTargetHandle: LPHANDLE, dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, dwOptions: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetHandleInformation*(hObject: HANDLE, lpdwFlags: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetHandleInformation*(hObject: HANDLE, dwMask: DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc HeapCreate*(flOptions: DWORD, dwInitialSize: SIZE_T, dwMaximumSize: SIZE_T): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc HeapDestroy*(hHeap: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc HeapValidate*(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPCVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc HeapCompact*(hHeap: HANDLE, dwFlags: DWORD): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc HeapSummary*(hHeap: HANDLE, dwFlags: DWORD, lpSummary: LPHEAP_SUMMARY): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessHeaps*(NumberOfHeaps: DWORD, ProcessHeaps: PHANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc GetLogicalDriveStringsW*(
+  nBufferLength: DWORD, lpBuffer: LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetLongPathNameA*(
+  lpszShortPath: LPCSTR, lpszLongPath: LPSTR, cchBuffer: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetLongPathNameW*(
+  lpszShortPath: LPCWSTR, lpszLongPath: LPWSTR, cchBuffer: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetShortPathNameW*(
+  lpszLongPath: LPCWSTR, lpszShortPath: LPWSTR, cchBuffer: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetTempFileNameW*(
+  lpPathName: LPCWSTR, lpPrefixString: LPCWSTR, uUnique: UINT, lpTempFileName: LPWSTR
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetVolumeInformationW*(
+  lpRootPathName: LPCWSTR,
+  lpVolumeNameBuffer: LPWSTR,
+  nVolumeNameSize: DWORD,
+  lpVolumeSerialNumber: LPDWORD,
+  lpMaximumComponentLength: LPDWORD,
+  lpFileSystemFlags: LPDWORD,
+  lpFileSystemNameBuffer: LPWSTR,
+  nFileSystemNameSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetVolumePathNameW*(
+  lpszFileName: LPCWSTR, lpszVolumePathName: LPWSTR, cchBufferLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LocalFileTimeToFileTime*(
+  lpLocalFileTime: ptr FILETIME, lpFileTime: LPFILETIME
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LockFile*(
+  hFile: HANDLE,
+  dwFileOffsetLow: DWORD,
+  dwFileOffsetHigh: DWORD,
+  nNumberOfBytesToLockLow: DWORD,
+  nNumberOfBytesToLockHigh: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryDosDeviceW*(
+  lpDeviceName: LPCWSTR, lpTargetPath: LPWSTR, ucchMax: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReadFileEx*(
+  hFile: HANDLE,
+  lpBuffer: LPVOID,
+  nNumberOfBytesToRead: DWORD,
+  lpOverlapped: LPOVERLAPPED,
+  lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReadFileScatter*(
+  hFile: HANDLE,
+  aSegmentArray: ptr FILE_SEGMENT_ELEMENT,
+  nNumberOfBytesToRead: DWORD,
+  lpReserved: LPDWORD,
+  lpOverlapped: LPOVERLAPPED,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFilePointer*(
+  hFile: HANDLE, lDistanceToMove: LONG, lpDistanceToMoveHigh: PLONG, dwMoveMethod: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFileTime*(
+  hFile: HANDLE,
+  lpCreationTime: ptr FILETIME,
+  lpLastAccessTime: ptr FILETIME,
+  lpLastWriteTime: ptr FILETIME,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFileValidData*(
+  hFile: HANDLE, ValidDataLength: LONGLONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc UnlockFile*(
+  hFile: HANDLE,
+  dwFileOffsetLow: DWORD,
+  dwFileOffsetHigh: DWORD,
+  nNumberOfBytesToUnlockLow: DWORD,
+  nNumberOfBytesToUnlockHigh: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteFileEx*(
+  hFile: HANDLE,
+  lpBuffer: LPCVOID,
+  nNumberOfBytesToWrite: DWORD,
+  lpOverlapped: LPOVERLAPPED,
+  lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteFileGather*(
+  hFile: HANDLE,
+  aSegmentArray: ptr FILE_SEGMENT_ELEMENT,
+  nNumberOfBytesToWrite: DWORD,
+  lpReserved: LPDWORD,
+  lpOverlapped: LPOVERLAPPED,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetVolumeNameForVolumeMountPointW*(
+  lpszVolumeMountPoint: LPCWSTR, lpszVolumeName: LPWSTR, cchBufferLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetVolumePathNamesForVolumeNameW*(
+  lpszVolumeName: LPCWSTR,
+  lpszVolumePathNames: LPWCH,
+  cchBufferLength: DWORD,
+  lpcchReturnLength: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFinalPathNameByHandleA*(
+  hFile: HANDLE, lpszFilePath: LPSTR, cchFilePath: DWORD, dwFlags: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFinalPathNameByHandleW*(
+  hFile: HANDLE, lpszFilePath: LPWSTR, cchFilePath: DWORD, dwFlags: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetVolumeInformationByHandleW*(
+  hFile: HANDLE,
+  lpVolumeNameBuffer: LPWSTR,
+  nVolumeNameSize: DWORD,
+  lpVolumeSerialNumber: LPDWORD,
+  lpMaximumComponentLength: LPDWORD,
+  lpFileSystemFlags: LPDWORD,
+  lpFileSystemNameBuffer: LPWSTR,
+  nFileSystemNameSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateDirectoryA*(
+  lpPathName: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateDirectoryW*(
+  lpPathName: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeleteFileA*(
+  lpFileName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeleteFileW*(
+  lpFileName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindClose*(
+  hFindFile: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstFileExA*(
+  lpFileName: LPCSTR,
+  fInfoLevelId: FINDEX_INFO_LEVELS,
+  lpFindFileData: LPVOID,
+  fSearchOp: FINDEX_SEARCH_OPS,
+  lpSearchFilter: LPVOID,
+  dwAdditionalFlags: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstFileExW*(
+  lpFileName: LPCWSTR,
+  fInfoLevelId: FINDEX_INFO_LEVELS,
+  lpFindFileData: LPVOID,
+  fSearchOp: FINDEX_SEARCH_OPS,
+  lpSearchFilter: LPVOID,
+  dwAdditionalFlags: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindNextFileA*(
+  hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATAA
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindNextFileW*(
+  hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATAW
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FlushFileBuffers*(
+  hFile: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDiskFreeSpaceExA*(
+  lpDirectoryName: LPCSTR,
+  lpFreeBytesAvailableToCaller: PULARGE_INTEGER,
+  lpTotalNumberOfBytes: PULARGE_INTEGER,
+  lpTotalNumberOfFreeBytes: PULARGE_INTEGER,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDiskFreeSpaceExW*(
+  lpDirectoryName: LPCWSTR,
+  lpFreeBytesAvailableToCaller: PULARGE_INTEGER,
+  lpTotalNumberOfBytes: PULARGE_INTEGER,
+  lpTotalNumberOfFreeBytes: PULARGE_INTEGER,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFileAttributesExA*(
+  lpFileName: LPCSTR, fInfoLevelId: GET_FILEEX_INFO_LEVELS, lpFileInformation: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFileAttributesExW*(
+  lpFileName: LPCWSTR, fInfoLevelId: GET_FILEEX_INFO_LEVELS, lpFileInformation: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetTempPathW*(
+  nBufferLength: DWORD, lpBuffer: LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LockFileEx*(
+  hFile: HANDLE,
+  dwFlags: DWORD,
+  dwReserved: DWORD,
+  nNumberOfBytesToLockLow: DWORD,
+  nNumberOfBytesToLockHigh: DWORD,
+  lpOverlapped: LPOVERLAPPED,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReadFile*(
+  hFile: HANDLE,
+  lpBuffer: LPVOID,
+  nNumberOfBytesToRead: DWORD,
+  lpNumberOfBytesRead: LPDWORD,
+  lpOverlapped: LPOVERLAPPED,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RemoveDirectoryA*(
+  lpPathName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RemoveDirectoryW*(
+  lpPathName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetEndOfFile*(
+  hFile: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFileAttributesA*(
+  lpFileName: LPCSTR, dwFileAttributes: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFileAttributesW*(
+  lpFileName: LPCWSTR, dwFileAttributes: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFilePointerEx*(
+  hFile: HANDLE,
+  liDistanceToMove: LARGE_INTEGER,
+  lpNewFilePointer: PLARGE_INTEGER,
+  dwMoveMethod: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc UnlockFileEx*(
+  hFile: HANDLE,
+  dwReserved: DWORD,
+  nNumberOfBytesToUnlockLow: DWORD,
+  nNumberOfBytesToUnlockHigh: DWORD,
+  lpOverlapped: LPOVERLAPPED,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteFile*(
+  hFile: HANDLE,
+  lpBuffer: LPCVOID,
+  nNumberOfBytesToWrite: DWORD,
+  lpNumberOfBytesWritten: LPDWORD,
+  lpOverlapped: LPOVERLAPPED,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFileInformationByHandle*(
+  hFile: HANDLE,
+  FileInformationClass: FILE_INFO_BY_HANDLE_CLASS,
+  lpFileInformation: LPVOID,
+  dwBufferSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateFile2*(
+  lpFileName: LPCWSTR,
+  dwDesiredAccess: DWORD,
+  dwShareMode: DWORD,
+  dwCreationDisposition: DWORD,
+  pCreateExParams: LPCREATEFILE2_EXTENDED_PARAMETERS,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CloseHandle*(
+  hObject: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DuplicateHandle*(
+  hSourceProcessHandle: HANDLE,
+  hSourceHandle: HANDLE,
+  hTargetProcessHandle: HANDLE,
+  lpTargetHandle: LPHANDLE,
+  dwDesiredAccess: DWORD,
+  bInheritHandle: WINBOOL,
+  dwOptions: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetHandleInformation*(
+  hObject: HANDLE, lpdwFlags: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetHandleInformation*(
+  hObject: HANDLE, dwMask: DWORD, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc HeapCreate*(
+  flOptions: DWORD, dwInitialSize: SIZE_T, dwMaximumSize: SIZE_T
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc HeapDestroy*(
+  hHeap: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc HeapValidate*(
+  hHeap: HANDLE, dwFlags: DWORD, lpMem: LPCVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc HeapCompact*(
+  hHeap: HANDLE, dwFlags: DWORD
+): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc HeapSummary*(
+  hHeap: HANDLE, dwFlags: DWORD, lpSummary: LPHEAP_SUMMARY
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessHeaps*(
+  NumberOfHeaps: DWORD, ProcessHeaps: PHANDLE
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc HeapLock*(hHeap: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc HeapUnlock*(hHeap: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc HeapWalk*(hHeap: HANDLE, lpEntry: LPPROCESS_HEAP_ENTRY): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc HeapSetInformation*(HeapHandle: HANDLE, HeapInformationClass: HEAP_INFORMATION_CLASS, HeapInformation: PVOID, HeapInformationLength: SIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc HeapQueryInformation*(HeapHandle: HANDLE, HeapInformationClass: HEAP_INFORMATION_CLASS, HeapInformation: PVOID, HeapInformationLength: SIZE_T, ReturnLength: PSIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc HeapAlloc*(hHeap: HANDLE, dwFlags: DWORD, dwBytes: SIZE_T): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc HeapReAlloc*(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID, dwBytes: SIZE_T): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc HeapFree*(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc HeapSize*(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPCVOID): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc HeapUnlock*(
+  hHeap: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc HeapWalk*(
+  hHeap: HANDLE, lpEntry: LPPROCESS_HEAP_ENTRY
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc HeapSetInformation*(
+  HeapHandle: HANDLE,
+  HeapInformationClass: HEAP_INFORMATION_CLASS,
+  HeapInformation: PVOID,
+  HeapInformationLength: SIZE_T,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc HeapQueryInformation*(
+  HeapHandle: HANDLE,
+  HeapInformationClass: HEAP_INFORMATION_CLASS,
+  HeapInformation: PVOID,
+  HeapInformationLength: SIZE_T,
+  ReturnLength: PSIZE_T,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc HeapAlloc*(
+  hHeap: HANDLE, dwFlags: DWORD, dwBytes: SIZE_T
+): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc HeapReAlloc*(
+  hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID, dwBytes: SIZE_T
+): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc HeapFree*(
+  hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc HeapSize*(
+  hHeap: HANDLE, dwFlags: DWORD, lpMem: LPCVOID
+): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetProcessHeap*(): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetOverlappedResult*(hFile: HANDLE, lpOverlapped: LPOVERLAPPED, lpNumberOfBytesTransferred: LPDWORD, bWait: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateIoCompletionPort*(FileHandle: HANDLE, ExistingCompletionPort: HANDLE, CompletionKey: ULONG_PTR, NumberOfConcurrentThreads: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetQueuedCompletionStatus*(CompletionPort: HANDLE, lpNumberOfBytesTransferred: LPDWORD, lpCompletionKey: PULONG_PTR, lpOverlapped: ptr LPOVERLAPPED, dwMilliseconds: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc PostQueuedCompletionStatus*(CompletionPort: HANDLE, dwNumberOfBytesTransferred: DWORD, dwCompletionKey: ULONG_PTR, lpOverlapped: LPOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeviceIoControl*(hDevice: HANDLE, dwIoControlCode: DWORD, lpInBuffer: LPVOID, nInBufferSize: DWORD, lpOutBuffer: LPVOID, nOutBufferSize: DWORD, lpBytesReturned: LPDWORD, lpOverlapped: LPOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc GetOverlappedResult*(
+  hFile: HANDLE,
+  lpOverlapped: LPOVERLAPPED,
+  lpNumberOfBytesTransferred: LPDWORD,
+  bWait: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateIoCompletionPort*(
+  FileHandle: HANDLE,
+  ExistingCompletionPort: HANDLE,
+  CompletionKey: ULONG_PTR,
+  NumberOfConcurrentThreads: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetQueuedCompletionStatus*(
+  CompletionPort: HANDLE,
+  lpNumberOfBytesTransferred: LPDWORD,
+  lpCompletionKey: PULONG_PTR,
+  lpOverlapped: ptr LPOVERLAPPED,
+  dwMilliseconds: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc PostQueuedCompletionStatus*(
+  CompletionPort: HANDLE,
+  dwNumberOfBytesTransferred: DWORD,
+  dwCompletionKey: ULONG_PTR,
+  lpOverlapped: LPOVERLAPPED,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeviceIoControl*(
+  hDevice: HANDLE,
+  dwIoControlCode: DWORD,
+  lpInBuffer: LPVOID,
+  nInBufferSize: DWORD,
+  lpOutBuffer: LPVOID,
+  nOutBufferSize: DWORD,
+  lpBytesReturned: LPDWORD,
+  lpOverlapped: LPOVERLAPPED,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc CancelIo*(hFile: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetQueuedCompletionStatusEx*(CompletionPort: HANDLE, lpCompletionPortEntries: LPOVERLAPPED_ENTRY, ulCount: ULONG, ulNumEntriesRemoved: PULONG, dwMilliseconds: DWORD, fAlertable: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CancelIoEx*(hFile: HANDLE, lpOverlapped: LPOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CancelSynchronousIo*(hThread: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetOverlappedResultEx*(hFile: HANDLE, lpOverlapped: LPOVERLAPPED, lpNumberOfBytesTransferred: LPDWORD, dwMilliseconds: DWORD, bAlertable: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InitializeSListHead*(ListHead: PSLIST_HEADER): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InterlockedPopEntrySList*(ListHead: PSLIST_HEADER): PSLIST_ENTRY {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InterlockedPushEntrySList*(ListHead: PSLIST_HEADER, ListEntry: PSLIST_ENTRY): PSLIST_ENTRY {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InterlockedFlushSList*(ListHead: PSLIST_HEADER): PSLIST_ENTRY {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryDepthSList*(ListHead: PSLIST_HEADER): USHORT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InterlockedPushListSListEx*(ListHead: PSLIST_HEADER, List: PSLIST_ENTRY, ListEnd: PSLIST_ENTRY, Count: ULONG): PSLIST_ENTRY {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsProcessInJob*(ProcessHandle: HANDLE, JobHandle: HANDLE, Result: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindResourceExW*(hModule: HMODULE, lpType: LPCWSTR, lpName: LPCWSTR, wLanguage: WORD): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FreeLibraryAndExitThread*(hLibModule: HMODULE, dwExitCode: DWORD): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FreeResource*(hResData: HGLOBAL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetModuleFileNameA*(hModule: HMODULE, lpFilename: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetModuleFileNameW*(hModule: HMODULE, lpFilename: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetModuleHandleA*(lpModuleName: LPCSTR): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetModuleHandleW*(lpModuleName: LPCWSTR): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LoadLibraryExA*(lpLibFileName: LPCSTR, hFile: HANDLE, dwFlags: DWORD): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LoadLibraryExW*(lpLibFileName: LPCWSTR, hFile: HANDLE, dwFlags: DWORD): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LoadResource*(hModule: HMODULE, hResInfo: HRSRC): HGLOBAL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LoadStringA*(hInstance: HINSTANCE, uID: UINT, lpBuffer: LPSTR, cchBufferMax: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadStringW*(hInstance: HINSTANCE, uID: UINT, lpBuffer: LPWSTR, cchBufferMax: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc LockResource*(hResData: HGLOBAL): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SizeofResource*(hModule: HMODULE, hResInfo: HRSRC): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AddDllDirectory*(NewDirectory: PCWSTR): DLL_DIRECTORY_COOKIE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RemoveDllDirectory*(Cookie: DLL_DIRECTORY_COOKIE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetDefaultDllDirectories*(DirectoryFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetModuleHandleExA*(dwFlags: DWORD, lpModuleName: LPCSTR, phModule: ptr HMODULE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetModuleHandleExW*(dwFlags: DWORD, lpModuleName: LPCWSTR, phModule: ptr HMODULE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumResourceLanguagesA*(hModule: HMODULE, lpType: LPCSTR, lpName: LPCSTR, lpEnumFunc: ENUMRESLANGPROCA, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumResourceLanguagesW*(hModule: HMODULE, lpType: LPCWSTR, lpName: LPCWSTR, lpEnumFunc: ENUMRESLANGPROCW, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumResourceLanguagesExA*(hModule: HMODULE, lpType: LPCSTR, lpName: LPCSTR, lpEnumFunc: ENUMRESLANGPROCA, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumResourceLanguagesExW*(hModule: HMODULE, lpType: LPCWSTR, lpName: LPCWSTR, lpEnumFunc: ENUMRESLANGPROCW, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumResourceNamesExA*(hModule: HMODULE, lpType: LPCSTR, lpEnumFunc: ENUMRESNAMEPROCA, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumResourceNamesExW*(hModule: HMODULE, lpType: LPCWSTR, lpEnumFunc: ENUMRESNAMEPROCW, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumResourceTypesExA*(hModule: HMODULE, lpEnumFunc: ENUMRESTYPEPROCA, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumResourceTypesExW*(hModule: HMODULE, lpEnumFunc: ENUMRESTYPEPROCW, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DisableThreadLibraryCalls*(hLibModule: HMODULE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FreeLibrary*(hLibModule: HMODULE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcAddress*(hModule: HMODULE, lpProcName: LPCSTR): FARPROC {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindStringOrdinal*(dwFindStringOrdinalFlags: DWORD, lpStringSource: LPCWSTR, cchSource: int32, lpStringValue: LPCWSTR, cchValue: int32, bIgnoreCase: WINBOOL): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc VirtualQuery*(lpAddress: LPCVOID, lpBuffer: PMEMORY_BASIC_INFORMATION, dwLength: SIZE_T): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FlushViewOfFile*(lpBaseAddress: LPCVOID, dwNumberOfBytesToFlush: SIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc UnmapViewOfFile*(lpBaseAddress: LPCVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateFileMappingFromApp*(hFile: HANDLE, SecurityAttributes: PSECURITY_ATTRIBUTES, PageProtection: ULONG, MaximumSize: ULONG64, Name: PCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MapViewOfFileFromApp*(hFileMappingObject: HANDLE, DesiredAccess: ULONG, FileOffset: ULONG64, NumberOfBytesToMap: SIZE_T): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc VirtualAlloc*(lpAddress: LPVOID, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc VirtualFree*(lpAddress: LPVOID, dwSize: SIZE_T, dwFreeType: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc VirtualProtect*(lpAddress: LPVOID, dwSize: SIZE_T, flNewProtect: DWORD, lpflOldProtect: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc VirtualAllocEx*(hProcess: HANDLE, lpAddress: LPVOID, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc VirtualFreeEx*(hProcess: HANDLE, lpAddress: LPVOID, dwSize: SIZE_T, dwFreeType: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc VirtualProtectEx*(hProcess: HANDLE, lpAddress: LPVOID, dwSize: SIZE_T, flNewProtect: DWORD, lpflOldProtect: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc VirtualQueryEx*(hProcess: HANDLE, lpAddress: LPCVOID, lpBuffer: PMEMORY_BASIC_INFORMATION, dwLength: SIZE_T): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReadProcessMemory*(hProcess: HANDLE, lpBaseAddress: LPCVOID, lpBuffer: LPVOID, nSize: SIZE_T, lpNumberOfBytesRead: ptr SIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteProcessMemory*(hProcess: HANDLE, lpBaseAddress: LPVOID, lpBuffer: LPCVOID, nSize: SIZE_T, lpNumberOfBytesWritten: ptr SIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateFileMappingW*(hFile: HANDLE, lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, flProtect: DWORD, dwMaximumSizeHigh: DWORD, dwMaximumSizeLow: DWORD, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenFileMappingW*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MapViewOfFile*(hFileMappingObject: HANDLE, dwDesiredAccess: DWORD, dwFileOffsetHigh: DWORD, dwFileOffsetLow: DWORD, dwNumberOfBytesToMap: SIZE_T): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MapViewOfFileEx*(hFileMappingObject: HANDLE, dwDesiredAccess: DWORD, dwFileOffsetHigh: DWORD, dwFileOffsetLow: DWORD, dwNumberOfBytesToMap: SIZE_T, lpBaseAddress: LPVOID): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc GetQueuedCompletionStatusEx*(
+  CompletionPort: HANDLE,
+  lpCompletionPortEntries: LPOVERLAPPED_ENTRY,
+  ulCount: ULONG,
+  ulNumEntriesRemoved: PULONG,
+  dwMilliseconds: DWORD,
+  fAlertable: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CancelIoEx*(
+  hFile: HANDLE, lpOverlapped: LPOVERLAPPED
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CancelSynchronousIo*(
+  hThread: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetOverlappedResultEx*(
+  hFile: HANDLE,
+  lpOverlapped: LPOVERLAPPED,
+  lpNumberOfBytesTransferred: LPDWORD,
+  dwMilliseconds: DWORD,
+  bAlertable: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InitializeSListHead*(
+  ListHead: PSLIST_HEADER
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InterlockedPopEntrySList*(
+  ListHead: PSLIST_HEADER
+): PSLIST_ENTRY {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InterlockedPushEntrySList*(
+  ListHead: PSLIST_HEADER, ListEntry: PSLIST_ENTRY
+): PSLIST_ENTRY {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InterlockedFlushSList*(
+  ListHead: PSLIST_HEADER
+): PSLIST_ENTRY {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryDepthSList*(
+  ListHead: PSLIST_HEADER
+): USHORT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InterlockedPushListSListEx*(
+  ListHead: PSLIST_HEADER, List: PSLIST_ENTRY, ListEnd: PSLIST_ENTRY, Count: ULONG
+): PSLIST_ENTRY {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsProcessInJob*(
+  ProcessHandle: HANDLE, JobHandle: HANDLE, Result: PBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindResourceExW*(
+  hModule: HMODULE, lpType: LPCWSTR, lpName: LPCWSTR, wLanguage: WORD
+): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FreeLibraryAndExitThread*(
+  hLibModule: HMODULE, dwExitCode: DWORD
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FreeResource*(
+  hResData: HGLOBAL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetModuleFileNameA*(
+  hModule: HMODULE, lpFilename: LPSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetModuleFileNameW*(
+  hModule: HMODULE, lpFilename: LPWSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetModuleHandleA*(
+  lpModuleName: LPCSTR
+): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetModuleHandleW*(
+  lpModuleName: LPCWSTR
+): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LoadLibraryExA*(
+  lpLibFileName: LPCSTR, hFile: HANDLE, dwFlags: DWORD
+): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LoadLibraryExW*(
+  lpLibFileName: LPCWSTR, hFile: HANDLE, dwFlags: DWORD
+): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LoadResource*(
+  hModule: HMODULE, hResInfo: HRSRC
+): HGLOBAL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LoadStringA*(
+  hInstance: HINSTANCE, uID: UINT, lpBuffer: LPSTR, cchBufferMax: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadStringW*(
+  hInstance: HINSTANCE, uID: UINT, lpBuffer: LPWSTR, cchBufferMax: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LockResource*(
+  hResData: HGLOBAL
+): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SizeofResource*(
+  hModule: HMODULE, hResInfo: HRSRC
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AddDllDirectory*(
+  NewDirectory: PCWSTR
+): DLL_DIRECTORY_COOKIE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RemoveDllDirectory*(
+  Cookie: DLL_DIRECTORY_COOKIE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetDefaultDllDirectories*(
+  DirectoryFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetModuleHandleExA*(
+  dwFlags: DWORD, lpModuleName: LPCSTR, phModule: ptr HMODULE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetModuleHandleExW*(
+  dwFlags: DWORD, lpModuleName: LPCWSTR, phModule: ptr HMODULE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumResourceLanguagesA*(
+  hModule: HMODULE,
+  lpType: LPCSTR,
+  lpName: LPCSTR,
+  lpEnumFunc: ENUMRESLANGPROCA,
+  lParam: LONG_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumResourceLanguagesW*(
+  hModule: HMODULE,
+  lpType: LPCWSTR,
+  lpName: LPCWSTR,
+  lpEnumFunc: ENUMRESLANGPROCW,
+  lParam: LONG_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumResourceLanguagesExA*(
+  hModule: HMODULE,
+  lpType: LPCSTR,
+  lpName: LPCSTR,
+  lpEnumFunc: ENUMRESLANGPROCA,
+  lParam: LONG_PTR,
+  dwFlags: DWORD,
+  LangId: LANGID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumResourceLanguagesExW*(
+  hModule: HMODULE,
+  lpType: LPCWSTR,
+  lpName: LPCWSTR,
+  lpEnumFunc: ENUMRESLANGPROCW,
+  lParam: LONG_PTR,
+  dwFlags: DWORD,
+  LangId: LANGID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumResourceNamesExA*(
+  hModule: HMODULE,
+  lpType: LPCSTR,
+  lpEnumFunc: ENUMRESNAMEPROCA,
+  lParam: LONG_PTR,
+  dwFlags: DWORD,
+  LangId: LANGID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumResourceNamesExW*(
+  hModule: HMODULE,
+  lpType: LPCWSTR,
+  lpEnumFunc: ENUMRESNAMEPROCW,
+  lParam: LONG_PTR,
+  dwFlags: DWORD,
+  LangId: LANGID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumResourceTypesExA*(
+  hModule: HMODULE,
+  lpEnumFunc: ENUMRESTYPEPROCA,
+  lParam: LONG_PTR,
+  dwFlags: DWORD,
+  LangId: LANGID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumResourceTypesExW*(
+  hModule: HMODULE,
+  lpEnumFunc: ENUMRESTYPEPROCW,
+  lParam: LONG_PTR,
+  dwFlags: DWORD,
+  LangId: LANGID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DisableThreadLibraryCalls*(
+  hLibModule: HMODULE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FreeLibrary*(
+  hLibModule: HMODULE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcAddress*(
+  hModule: HMODULE, lpProcName: LPCSTR
+): FARPROC {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindStringOrdinal*(
+  dwFindStringOrdinalFlags: DWORD,
+  lpStringSource: LPCWSTR,
+  cchSource: int32,
+  lpStringValue: LPCWSTR,
+  cchValue: int32,
+  bIgnoreCase: WINBOOL,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc VirtualQuery*(
+  lpAddress: LPCVOID, lpBuffer: PMEMORY_BASIC_INFORMATION, dwLength: SIZE_T
+): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FlushViewOfFile*(
+  lpBaseAddress: LPCVOID, dwNumberOfBytesToFlush: SIZE_T
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc UnmapViewOfFile*(
+  lpBaseAddress: LPCVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateFileMappingFromApp*(
+  hFile: HANDLE,
+  SecurityAttributes: PSECURITY_ATTRIBUTES,
+  PageProtection: ULONG,
+  MaximumSize: ULONG64,
+  Name: PCWSTR,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MapViewOfFileFromApp*(
+  hFileMappingObject: HANDLE,
+  DesiredAccess: ULONG,
+  FileOffset: ULONG64,
+  NumberOfBytesToMap: SIZE_T,
+): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc VirtualAlloc*(
+  lpAddress: LPVOID, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD
+): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc VirtualFree*(
+  lpAddress: LPVOID, dwSize: SIZE_T, dwFreeType: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc VirtualProtect*(
+  lpAddress: LPVOID, dwSize: SIZE_T, flNewProtect: DWORD, lpflOldProtect: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc VirtualAllocEx*(
+  hProcess: HANDLE,
+  lpAddress: LPVOID,
+  dwSize: SIZE_T,
+  flAllocationType: DWORD,
+  flProtect: DWORD,
+): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc VirtualFreeEx*(
+  hProcess: HANDLE, lpAddress: LPVOID, dwSize: SIZE_T, dwFreeType: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc VirtualProtectEx*(
+  hProcess: HANDLE,
+  lpAddress: LPVOID,
+  dwSize: SIZE_T,
+  flNewProtect: DWORD,
+  lpflOldProtect: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc VirtualQueryEx*(
+  hProcess: HANDLE,
+  lpAddress: LPCVOID,
+  lpBuffer: PMEMORY_BASIC_INFORMATION,
+  dwLength: SIZE_T,
+): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReadProcessMemory*(
+  hProcess: HANDLE,
+  lpBaseAddress: LPCVOID,
+  lpBuffer: LPVOID,
+  nSize: SIZE_T,
+  lpNumberOfBytesRead: ptr SIZE_T,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteProcessMemory*(
+  hProcess: HANDLE,
+  lpBaseAddress: LPVOID,
+  lpBuffer: LPCVOID,
+  nSize: SIZE_T,
+  lpNumberOfBytesWritten: ptr SIZE_T,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateFileMappingW*(
+  hFile: HANDLE,
+  lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,
+  flProtect: DWORD,
+  dwMaximumSizeHigh: DWORD,
+  dwMaximumSizeLow: DWORD,
+  lpName: LPCWSTR,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenFileMappingW*(
+  dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MapViewOfFile*(
+  hFileMappingObject: HANDLE,
+  dwDesiredAccess: DWORD,
+  dwFileOffsetHigh: DWORD,
+  dwFileOffsetLow: DWORD,
+  dwNumberOfBytesToMap: SIZE_T,
+): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MapViewOfFileEx*(
+  hFileMappingObject: HANDLE,
+  dwDesiredAccess: DWORD,
+  dwFileOffsetHigh: DWORD,
+  dwFileOffsetLow: DWORD,
+  dwNumberOfBytesToMap: SIZE_T,
+  lpBaseAddress: LPVOID,
+): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetLargePageMinimum*(): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessWorkingSetSizeEx*(hProcess: HANDLE, lpMinimumWorkingSetSize: PSIZE_T, lpMaximumWorkingSetSize: PSIZE_T, Flags: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetProcessWorkingSetSizeEx*(hProcess: HANDLE, dwMinimumWorkingSetSize: SIZE_T, dwMaximumWorkingSetSize: SIZE_T, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc VirtualLock*(lpAddress: LPVOID, dwSize: SIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc VirtualUnlock*(lpAddress: LPVOID, dwSize: SIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetWriteWatch*(dwFlags: DWORD, lpBaseAddress: PVOID, dwRegionSize: SIZE_T, lpAddresses: ptr PVOID, lpdwCount: ptr ULONG_PTR, lpdwGranularity: LPDWORD): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ResetWriteWatch*(lpBaseAddress: LPVOID, dwRegionSize: SIZE_T): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateMemoryResourceNotification*(NotificationType: MEMORY_RESOURCE_NOTIFICATION_TYPE): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryMemoryResourceNotification*(ResourceNotificationHandle: HANDLE, ResourceState: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemFileCacheSize*(lpMinimumFileCacheSize: PSIZE_T, lpMaximumFileCacheSize: PSIZE_T, lpFlags: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetSystemFileCacheSize*(MinimumFileCacheSize: SIZE_T, MaximumFileCacheSize: SIZE_T, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateFileMappingNumaW*(hFile: HANDLE, lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, flProtect: DWORD, dwMaximumSizeHigh: DWORD, dwMaximumSizeLow: DWORD, lpName: LPCWSTR, nndPreferred: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc PrefetchVirtualMemory*(hProcess: HANDLE, NumberOfEntries: ULONG_PTR, VirtualAddresses: PWIN32_MEMORY_RANGE_ENTRY, Flags: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc UnmapViewOfFileEx*(BaseAddress: PVOID, UnmapFlags: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DiscardVirtualMemory*(VirtualAddress: PVOID, Size: SIZE_T): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OfferVirtualMemory*(VirtualAddress: PVOID, Size: SIZE_T, Priority: OFFER_PRIORITY): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReclaimVirtualMemory*(VirtualAddress: PVOID, Size: SIZE_T): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ImpersonateNamedPipeClient*(hNamedPipe: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CreatePipe*(hReadPipe: PHANDLE, hWritePipe: PHANDLE, lpPipeAttributes: LPSECURITY_ATTRIBUTES, nSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ConnectNamedPipe*(hNamedPipe: HANDLE, lpOverlapped: LPOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DisconnectNamedPipe*(hNamedPipe: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetNamedPipeHandleState*(hNamedPipe: HANDLE, lpMode: LPDWORD, lpMaxCollectionCount: LPDWORD, lpCollectDataTimeout: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc PeekNamedPipe*(hNamedPipe: HANDLE, lpBuffer: LPVOID, nBufferSize: DWORD, lpBytesRead: LPDWORD, lpTotalBytesAvail: LPDWORD, lpBytesLeftThisMessage: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc TransactNamedPipe*(hNamedPipe: HANDLE, lpInBuffer: LPVOID, nInBufferSize: DWORD, lpOutBuffer: LPVOID, nOutBufferSize: DWORD, lpBytesRead: LPDWORD, lpOverlapped: LPOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateNamedPipeW*(lpName: LPCWSTR, dwOpenMode: DWORD, dwPipeMode: DWORD, nMaxInstances: DWORD, nOutBufferSize: DWORD, nInBufferSize: DWORD, nDefaultTimeOut: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WaitNamedPipeW*(lpNamedPipeName: LPCWSTR, nTimeOut: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNamedPipeClientComputerNameW*(Pipe: HANDLE, ClientComputerName: LPWSTR, ClientComputerNameLength: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreatePrivateNamespaceW*(lpPrivateNamespaceAttributes: LPSECURITY_ATTRIBUTES, lpBoundaryDescriptor: LPVOID, lpAliasPrefix: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenPrivateNamespaceW*(lpBoundaryDescriptor: LPVOID, lpAliasPrefix: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ClosePrivateNamespace*(Handle: HANDLE, Flags: ULONG): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateBoundaryDescriptorW*(Name: LPCWSTR, Flags: ULONG): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AddSIDToBoundaryDescriptor*(BoundaryDescriptor: ptr HANDLE, RequiredSid: PSID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeleteBoundaryDescriptor*(BoundaryDescriptor: HANDLE): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetEnvironmentStringsA*(): LPCH {.winapi, stdcall, dynlib: "kernel32", importc: "GetEnvironmentStrings".}
+proc GetProcessWorkingSetSizeEx*(
+  hProcess: HANDLE,
+  lpMinimumWorkingSetSize: PSIZE_T,
+  lpMaximumWorkingSetSize: PSIZE_T,
+  Flags: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetProcessWorkingSetSizeEx*(
+  hProcess: HANDLE,
+  dwMinimumWorkingSetSize: SIZE_T,
+  dwMaximumWorkingSetSize: SIZE_T,
+  Flags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc VirtualLock*(
+  lpAddress: LPVOID, dwSize: SIZE_T
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc VirtualUnlock*(
+  lpAddress: LPVOID, dwSize: SIZE_T
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetWriteWatch*(
+  dwFlags: DWORD,
+  lpBaseAddress: PVOID,
+  dwRegionSize: SIZE_T,
+  lpAddresses: ptr PVOID,
+  lpdwCount: ptr ULONG_PTR,
+  lpdwGranularity: LPDWORD,
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ResetWriteWatch*(
+  lpBaseAddress: LPVOID, dwRegionSize: SIZE_T
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateMemoryResourceNotification*(
+  NotificationType: MEMORY_RESOURCE_NOTIFICATION_TYPE
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryMemoryResourceNotification*(
+  ResourceNotificationHandle: HANDLE, ResourceState: PBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemFileCacheSize*(
+  lpMinimumFileCacheSize: PSIZE_T, lpMaximumFileCacheSize: PSIZE_T, lpFlags: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetSystemFileCacheSize*(
+  MinimumFileCacheSize: SIZE_T, MaximumFileCacheSize: SIZE_T, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateFileMappingNumaW*(
+  hFile: HANDLE,
+  lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,
+  flProtect: DWORD,
+  dwMaximumSizeHigh: DWORD,
+  dwMaximumSizeLow: DWORD,
+  lpName: LPCWSTR,
+  nndPreferred: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc PrefetchVirtualMemory*(
+  hProcess: HANDLE,
+  NumberOfEntries: ULONG_PTR,
+  VirtualAddresses: PWIN32_MEMORY_RANGE_ENTRY,
+  Flags: ULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc UnmapViewOfFileEx*(
+  BaseAddress: PVOID, UnmapFlags: ULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DiscardVirtualMemory*(
+  VirtualAddress: PVOID, Size: SIZE_T
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OfferVirtualMemory*(
+  VirtualAddress: PVOID, Size: SIZE_T, Priority: OFFER_PRIORITY
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReclaimVirtualMemory*(
+  VirtualAddress: PVOID, Size: SIZE_T
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ImpersonateNamedPipeClient*(
+  hNamedPipe: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CreatePipe*(
+  hReadPipe: PHANDLE,
+  hWritePipe: PHANDLE,
+  lpPipeAttributes: LPSECURITY_ATTRIBUTES,
+  nSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ConnectNamedPipe*(
+  hNamedPipe: HANDLE, lpOverlapped: LPOVERLAPPED
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DisconnectNamedPipe*(
+  hNamedPipe: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetNamedPipeHandleState*(
+  hNamedPipe: HANDLE,
+  lpMode: LPDWORD,
+  lpMaxCollectionCount: LPDWORD,
+  lpCollectDataTimeout: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc PeekNamedPipe*(
+  hNamedPipe: HANDLE,
+  lpBuffer: LPVOID,
+  nBufferSize: DWORD,
+  lpBytesRead: LPDWORD,
+  lpTotalBytesAvail: LPDWORD,
+  lpBytesLeftThisMessage: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc TransactNamedPipe*(
+  hNamedPipe: HANDLE,
+  lpInBuffer: LPVOID,
+  nInBufferSize: DWORD,
+  lpOutBuffer: LPVOID,
+  nOutBufferSize: DWORD,
+  lpBytesRead: LPDWORD,
+  lpOverlapped: LPOVERLAPPED,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateNamedPipeW*(
+  lpName: LPCWSTR,
+  dwOpenMode: DWORD,
+  dwPipeMode: DWORD,
+  nMaxInstances: DWORD,
+  nOutBufferSize: DWORD,
+  nInBufferSize: DWORD,
+  nDefaultTimeOut: DWORD,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WaitNamedPipeW*(
+  lpNamedPipeName: LPCWSTR, nTimeOut: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNamedPipeClientComputerNameW*(
+  Pipe: HANDLE, ClientComputerName: LPWSTR, ClientComputerNameLength: ULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreatePrivateNamespaceW*(
+  lpPrivateNamespaceAttributes: LPSECURITY_ATTRIBUTES,
+  lpBoundaryDescriptor: LPVOID,
+  lpAliasPrefix: LPCWSTR,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenPrivateNamespaceW*(
+  lpBoundaryDescriptor: LPVOID, lpAliasPrefix: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ClosePrivateNamespace*(
+  Handle: HANDLE, Flags: ULONG
+): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateBoundaryDescriptorW*(
+  Name: LPCWSTR, Flags: ULONG
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AddSIDToBoundaryDescriptor*(
+  BoundaryDescriptor: ptr HANDLE, RequiredSid: PSID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeleteBoundaryDescriptor*(
+  BoundaryDescriptor: HANDLE
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetEnvironmentStringsA*(): LPCH {.
+  winapi, stdcall, dynlib: "kernel32", importc: "GetEnvironmentStrings"
+.}
+
 proc GetEnvironmentStringsW*(): LPWCH {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetEnvironmentStringsW*(NewEnvironment: LPWCH): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FreeEnvironmentStringsA*(penv: LPCH): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FreeEnvironmentStringsW*(penv: LPWCH): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetStdHandle*(nStdHandle: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetStdHandle*(nStdHandle: DWORD, hHandle: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetStdHandleEx*(nStdHandle: DWORD, hHandle: HANDLE, phPrevValue: PHANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc SetEnvironmentStringsW*(
+  NewEnvironment: LPWCH
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FreeEnvironmentStringsA*(
+  penv: LPCH
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FreeEnvironmentStringsW*(
+  penv: LPWCH
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetStdHandle*(
+  nStdHandle: DWORD
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetStdHandle*(
+  nStdHandle: DWORD, hHandle: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetStdHandleEx*(
+  nStdHandle: DWORD, hHandle: HANDLE, phPrevValue: PHANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetCommandLineA*(): LPSTR {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc GetCommandLineW*(): LPWSTR {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetEnvironmentVariableA*(lpName: LPCSTR, lpBuffer: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetEnvironmentVariableW*(lpName: LPCWSTR, lpBuffer: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetEnvironmentVariableA*(lpName: LPCSTR, lpValue: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetEnvironmentVariableW*(lpName: LPCWSTR, lpValue: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ExpandEnvironmentStringsA*(lpSrc: LPCSTR, lpDst: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ExpandEnvironmentStringsW*(lpSrc: LPCWSTR, lpDst: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetCurrentDirectoryA*(lpPathName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetCurrentDirectoryW*(lpPathName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCurrentDirectoryA*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCurrentDirectoryW*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SearchPathW*(lpPath: LPCWSTR, lpFileName: LPCWSTR, lpExtension: LPCWSTR, nBufferLength: DWORD, lpBuffer: LPWSTR, lpFilePart: ptr LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SearchPathA*(lpPath: LPCSTR, lpFileName: LPCSTR, lpExtension: LPCSTR, nBufferLength: DWORD, lpBuffer: LPSTR, lpFilePart: ptr LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc NeedCurrentDirectoryForExePathA*(ExeName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc NeedCurrentDirectoryForExePathW*(ExeName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueueUserAPC*(pfnAPC: PAPCFUNC, hThread: HANDLE, dwData: ULONG_PTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessTimes*(hProcess: HANDLE, lpCreationTime: LPFILETIME, lpExitTime: LPFILETIME, lpKernelTime: LPFILETIME, lpUserTime: LPFILETIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ExitProcess*(uExitCode: UINT): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc TerminateProcess*(hProcess: HANDLE, uExitCode: UINT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetExitCodeProcess*(hProcess: HANDLE, lpExitCode: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc GetEnvironmentVariableA*(
+  lpName: LPCSTR, lpBuffer: LPSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetEnvironmentVariableW*(
+  lpName: LPCWSTR, lpBuffer: LPWSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetEnvironmentVariableA*(
+  lpName: LPCSTR, lpValue: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetEnvironmentVariableW*(
+  lpName: LPCWSTR, lpValue: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ExpandEnvironmentStringsA*(
+  lpSrc: LPCSTR, lpDst: LPSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ExpandEnvironmentStringsW*(
+  lpSrc: LPCWSTR, lpDst: LPWSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetCurrentDirectoryA*(
+  lpPathName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetCurrentDirectoryW*(
+  lpPathName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCurrentDirectoryA*(
+  nBufferLength: DWORD, lpBuffer: LPSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCurrentDirectoryW*(
+  nBufferLength: DWORD, lpBuffer: LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SearchPathW*(
+  lpPath: LPCWSTR,
+  lpFileName: LPCWSTR,
+  lpExtension: LPCWSTR,
+  nBufferLength: DWORD,
+  lpBuffer: LPWSTR,
+  lpFilePart: ptr LPWSTR,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SearchPathA*(
+  lpPath: LPCSTR,
+  lpFileName: LPCSTR,
+  lpExtension: LPCSTR,
+  nBufferLength: DWORD,
+  lpBuffer: LPSTR,
+  lpFilePart: ptr LPSTR,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc NeedCurrentDirectoryForExePathA*(
+  ExeName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc NeedCurrentDirectoryForExePathW*(
+  ExeName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueueUserAPC*(
+  pfnAPC: PAPCFUNC, hThread: HANDLE, dwData: ULONG_PTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessTimes*(
+  hProcess: HANDLE,
+  lpCreationTime: LPFILETIME,
+  lpExitTime: LPFILETIME,
+  lpKernelTime: LPFILETIME,
+  lpUserTime: LPFILETIME,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ExitProcess*(
+  uExitCode: UINT
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc TerminateProcess*(
+  hProcess: HANDLE, uExitCode: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetExitCodeProcess*(
+  hProcess: HANDLE, lpExitCode: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc SwitchToThread*(): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateRemoteThread*(hProcess: HANDLE, lpThreadAttributes: LPSECURITY_ATTRIBUTES, dwStackSize: SIZE_T, lpStartAddress: LPTHREAD_START_ROUTINE, lpParameter: LPVOID, dwCreationFlags: DWORD, lpThreadId: LPDWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenThread*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, dwThreadId: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadPriorityBoost*(hThread: HANDLE, bDisablePriorityBoost: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetThreadPriorityBoost*(hThread: HANDLE, pDisablePriorityBoost: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc TerminateThread*(hThread: HANDLE, dwExitCode: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetProcessShutdownParameters*(dwLevel: DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessVersion*(ProcessId: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetStartupInfoW*(lpStartupInfo: LPSTARTUPINFOW): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadToken*(Thread: PHANDLE, Token: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc OpenProcessToken*(ProcessHandle: HANDLE, DesiredAccess: DWORD, TokenHandle: PHANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc OpenThreadToken*(ThreadHandle: HANDLE, DesiredAccess: DWORD, OpenAsSelf: WINBOOL, TokenHandle: PHANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetPriorityClass*(hProcess: HANDLE, dwPriorityClass: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadStackGuarantee*(StackSizeInBytes: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetPriorityClass*(hProcess: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ProcessIdToSessionId*(dwProcessId: DWORD, pSessionId: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessId*(Process: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetThreadId*(Thread: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateRemoteThreadEx*(hProcess: HANDLE, lpThreadAttributes: LPSECURITY_ATTRIBUTES, dwStackSize: SIZE_T, lpStartAddress: LPTHREAD_START_ROUTINE, lpParameter: LPVOID, dwCreationFlags: DWORD, lpAttributeList: LPPROC_THREAD_ATTRIBUTE_LIST, lpThreadId: LPDWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetThreadContext*(hThread: HANDLE, lpContext: LPCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadContext*(hThread: HANDLE, lpContext: ptr CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FlushInstructionCache*(hProcess: HANDLE, lpBaseAddress: LPCVOID, dwSize: SIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetThreadTimes*(hThread: HANDLE, lpCreationTime: LPFILETIME, lpExitTime: LPFILETIME, lpKernelTime: LPFILETIME, lpUserTime: LPFILETIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenProcess*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, dwProcessId: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessHandleCount*(hProcess: HANDLE, pdwHandleCount: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCurrentProcessorNumber*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateProcessA*(lpApplicationName: LPCSTR, lpCommandLine: LPSTR, lpProcessAttributes: LPSECURITY_ATTRIBUTES, lpThreadAttributes: LPSECURITY_ATTRIBUTES, bInheritHandles: WINBOOL, dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: LPCSTR, lpStartupInfo: LPSTARTUPINFOA, lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateProcessW*(lpApplicationName: LPCWSTR, lpCommandLine: LPWSTR, lpProcessAttributes: LPSECURITY_ATTRIBUTES, lpThreadAttributes: LPSECURITY_ATTRIBUTES, bInheritHandles: WINBOOL, dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: LPCWSTR, lpStartupInfo: LPSTARTUPINFOW, lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateProcessAsUserW*(hToken: HANDLE, lpApplicationName: LPCWSTR, lpCommandLine: LPWSTR, lpProcessAttributes: LPSECURITY_ATTRIBUTES, lpThreadAttributes: LPSECURITY_ATTRIBUTES, bInheritHandles: WINBOOL, dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: LPCWSTR, lpStartupInfo: LPSTARTUPINFOW, lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetProcessIdOfThread*(Thread: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InitializeProcThreadAttributeList*(lpAttributeList: LPPROC_THREAD_ATTRIBUTE_LIST, dwAttributeCount: DWORD, dwFlags: DWORD, lpSize: PSIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeleteProcThreadAttributeList*(lpAttributeList: LPPROC_THREAD_ATTRIBUTE_LIST): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetProcessAffinityUpdateMode*(hProcess: HANDLE, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryProcessAffinityUpdateMode*(hProcess: HANDLE, lpdwFlags: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc UpdateProcThreadAttribute*(lpAttributeList: LPPROC_THREAD_ATTRIBUTE_LIST, dwFlags: DWORD, Attribute: DWORD_PTR, lpValue: PVOID, cbSize: SIZE_T, lpPreviousValue: PVOID, lpReturnSize: PSIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetThreadIdealProcessorEx*(hThread: HANDLE, lpIdealProcessor: PPROCESSOR_NUMBER): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCurrentProcessorNumberEx*(ProcNumber: PPROCESSOR_NUMBER): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCurrentThreadStackLimits*(LowLimit: PULONG_PTR, HighLimit: PULONG_PTR): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetProcessMitigationPolicy*(MitigationPolicy: PROCESS_MITIGATION_POLICY, lpBuffer: PVOID, dwLength: SIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessMitigationPolicy*(hProcess: HANDLE, MitigationPolicy: PROCESS_MITIGATION_POLICY, lpBuffer: PVOID, dwLength: SIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc CreateRemoteThread*(
+  hProcess: HANDLE,
+  lpThreadAttributes: LPSECURITY_ATTRIBUTES,
+  dwStackSize: SIZE_T,
+  lpStartAddress: LPTHREAD_START_ROUTINE,
+  lpParameter: LPVOID,
+  dwCreationFlags: DWORD,
+  lpThreadId: LPDWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenThread*(
+  dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, dwThreadId: DWORD
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadPriorityBoost*(
+  hThread: HANDLE, bDisablePriorityBoost: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetThreadPriorityBoost*(
+  hThread: HANDLE, pDisablePriorityBoost: PBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc TerminateThread*(
+  hThread: HANDLE, dwExitCode: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetProcessShutdownParameters*(
+  dwLevel: DWORD, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessVersion*(
+  ProcessId: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetStartupInfoW*(
+  lpStartupInfo: LPSTARTUPINFOW
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadToken*(
+  Thread: PHANDLE, Token: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc OpenProcessToken*(
+  ProcessHandle: HANDLE, DesiredAccess: DWORD, TokenHandle: PHANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc OpenThreadToken*(
+  ThreadHandle: HANDLE, DesiredAccess: DWORD, OpenAsSelf: WINBOOL, TokenHandle: PHANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetPriorityClass*(
+  hProcess: HANDLE, dwPriorityClass: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadStackGuarantee*(
+  StackSizeInBytes: PULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetPriorityClass*(
+  hProcess: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ProcessIdToSessionId*(
+  dwProcessId: DWORD, pSessionId: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessId*(
+  Process: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetThreadId*(
+  Thread: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateRemoteThreadEx*(
+  hProcess: HANDLE,
+  lpThreadAttributes: LPSECURITY_ATTRIBUTES,
+  dwStackSize: SIZE_T,
+  lpStartAddress: LPTHREAD_START_ROUTINE,
+  lpParameter: LPVOID,
+  dwCreationFlags: DWORD,
+  lpAttributeList: LPPROC_THREAD_ATTRIBUTE_LIST,
+  lpThreadId: LPDWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetThreadContext*(
+  hThread: HANDLE, lpContext: LPCONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadContext*(
+  hThread: HANDLE, lpContext: ptr CONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FlushInstructionCache*(
+  hProcess: HANDLE, lpBaseAddress: LPCVOID, dwSize: SIZE_T
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetThreadTimes*(
+  hThread: HANDLE,
+  lpCreationTime: LPFILETIME,
+  lpExitTime: LPFILETIME,
+  lpKernelTime: LPFILETIME,
+  lpUserTime: LPFILETIME,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenProcess*(
+  dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, dwProcessId: DWORD
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessHandleCount*(
+  hProcess: HANDLE, pdwHandleCount: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCurrentProcessorNumber*(): DWORD {.
+  winapi, stdcall, dynlib: "kernel32", importc
+.}
+
+proc CreateProcessA*(
+  lpApplicationName: LPCSTR,
+  lpCommandLine: LPSTR,
+  lpProcessAttributes: LPSECURITY_ATTRIBUTES,
+  lpThreadAttributes: LPSECURITY_ATTRIBUTES,
+  bInheritHandles: WINBOOL,
+  dwCreationFlags: DWORD,
+  lpEnvironment: LPVOID,
+  lpCurrentDirectory: LPCSTR,
+  lpStartupInfo: LPSTARTUPINFOA,
+  lpProcessInformation: LPPROCESS_INFORMATION,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateProcessW*(
+  lpApplicationName: LPCWSTR,
+  lpCommandLine: LPWSTR,
+  lpProcessAttributes: LPSECURITY_ATTRIBUTES,
+  lpThreadAttributes: LPSECURITY_ATTRIBUTES,
+  bInheritHandles: WINBOOL,
+  dwCreationFlags: DWORD,
+  lpEnvironment: LPVOID,
+  lpCurrentDirectory: LPCWSTR,
+  lpStartupInfo: LPSTARTUPINFOW,
+  lpProcessInformation: LPPROCESS_INFORMATION,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateProcessAsUserW*(
+  hToken: HANDLE,
+  lpApplicationName: LPCWSTR,
+  lpCommandLine: LPWSTR,
+  lpProcessAttributes: LPSECURITY_ATTRIBUTES,
+  lpThreadAttributes: LPSECURITY_ATTRIBUTES,
+  bInheritHandles: WINBOOL,
+  dwCreationFlags: DWORD,
+  lpEnvironment: LPVOID,
+  lpCurrentDirectory: LPCWSTR,
+  lpStartupInfo: LPSTARTUPINFOW,
+  lpProcessInformation: LPPROCESS_INFORMATION,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetProcessIdOfThread*(
+  Thread: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InitializeProcThreadAttributeList*(
+  lpAttributeList: LPPROC_THREAD_ATTRIBUTE_LIST,
+  dwAttributeCount: DWORD,
+  dwFlags: DWORD,
+  lpSize: PSIZE_T,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeleteProcThreadAttributeList*(
+  lpAttributeList: LPPROC_THREAD_ATTRIBUTE_LIST
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetProcessAffinityUpdateMode*(
+  hProcess: HANDLE, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryProcessAffinityUpdateMode*(
+  hProcess: HANDLE, lpdwFlags: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc UpdateProcThreadAttribute*(
+  lpAttributeList: LPPROC_THREAD_ATTRIBUTE_LIST,
+  dwFlags: DWORD,
+  Attribute: DWORD_PTR,
+  lpValue: PVOID,
+  cbSize: SIZE_T,
+  lpPreviousValue: PVOID,
+  lpReturnSize: PSIZE_T,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetThreadIdealProcessorEx*(
+  hThread: HANDLE, lpIdealProcessor: PPROCESSOR_NUMBER
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCurrentProcessorNumberEx*(
+  ProcNumber: PPROCESSOR_NUMBER
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCurrentThreadStackLimits*(
+  LowLimit: PULONG_PTR, HighLimit: PULONG_PTR
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetProcessMitigationPolicy*(
+  MitigationPolicy: PROCESS_MITIGATION_POLICY, lpBuffer: PVOID, dwLength: SIZE_T
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessMitigationPolicy*(
+  hProcess: HANDLE,
+  MitigationPolicy: PROCESS_MITIGATION_POLICY,
+  lpBuffer: PVOID,
+  dwLength: SIZE_T,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetCurrentProcess*(): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc GetCurrentProcessId*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc GetCurrentThread*(): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc GetCurrentThreadId*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsProcessorFeaturePresent*(ProcessorFeature: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc IsProcessorFeaturePresent*(
+  ProcessorFeature: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc FlushProcessWriteBuffers*(): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateThread*(lpThreadAttributes: LPSECURITY_ATTRIBUTES, dwStackSize: SIZE_T, lpStartAddress: LPTHREAD_START_ROUTINE, lpParameter: LPVOID, dwCreationFlags: DWORD, lpThreadId: LPDWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadPriority*(hThread: HANDLE, nPriority: int32): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetThreadPriority*(hThread: HANDLE): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ExitThread*(dwExitCode: DWORD): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetExitCodeThread*(hThread: HANDLE, lpExitCode: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SuspendThread*(hThread: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ResumeThread*(hThread: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc CreateThread*(
+  lpThreadAttributes: LPSECURITY_ATTRIBUTES,
+  dwStackSize: SIZE_T,
+  lpStartAddress: LPTHREAD_START_ROUTINE,
+  lpParameter: LPVOID,
+  dwCreationFlags: DWORD,
+  lpThreadId: LPDWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadPriority*(
+  hThread: HANDLE, nPriority: int32
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetThreadPriority*(
+  hThread: HANDLE
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ExitThread*(
+  dwExitCode: DWORD
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetExitCodeThread*(
+  hThread: HANDLE, lpExitCode: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SuspendThread*(
+  hThread: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ResumeThread*(
+  hThread: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc TlsAlloc*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc TlsGetValue*(dwTlsIndex: DWORD): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc TlsSetValue*(dwTlsIndex: DWORD, lpTlsValue: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc TlsFree*(dwTlsIndex: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadIdealProcessorEx*(hThread: HANDLE, lpIdealProcessor: PPROCESSOR_NUMBER, lpPreviousIdealProcessor: PPROCESSOR_NUMBER): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessGroupAffinity*(hProcess: HANDLE, GroupCount: PUSHORT, GroupArray: PUSHORT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetThreadGroupAffinity*(hThread: HANDLE, GroupAffinity: PGROUP_AFFINITY): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadGroupAffinity*(hThread: HANDLE, GroupAffinity: ptr GROUP_AFFINITY, PreviousGroupAffinity: PGROUP_AFFINITY): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryPerformanceCounter*(lpPerformanceCount: ptr LARGE_INTEGER): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryPerformanceFrequency*(lpFrequency: ptr LARGE_INTEGER): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryThreadCycleTime*(ThreadHandle: HANDLE, CycleTime: PULONG64): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryProcessCycleTime*(ProcessHandle: HANDLE, CycleTime: PULONG64): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryIdleProcessorCycleTime*(BufferLength: PULONG, ProcessorIdleCycleTime: PULONG64): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryIdleProcessorCycleTimeEx*(Group: USHORT, BufferLength: PULONG, ProcessorIdleCycleTime: PULONG64): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryUnbiasedInterruptTime*(UnbiasedTime: PULONGLONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetAppContainerNamedObjectPath*(Token: HANDLE, AppContainerSid: PSID, ObjectPathLength: ULONG, ObjectPath: LPWSTR, ReturnLength: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AccessCheck*(pSecurityDescriptor: PSECURITY_DESCRIPTOR, ClientToken: HANDLE, DesiredAccess: DWORD, GenericMapping: PGENERIC_MAPPING, PrivilegeSet: PPRIVILEGE_SET, PrivilegeSetLength: LPDWORD, GrantedAccess: LPDWORD, AccessStatus: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AccessCheckAndAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID, ObjectTypeName: LPWSTR, ObjectName: LPWSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, DesiredAccess: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccess: LPDWORD, AccessStatus: LPBOOL, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AccessCheckByType*(pSecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, ClientToken: HANDLE, DesiredAccess: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, PrivilegeSet: PPRIVILEGE_SET, PrivilegeSetLength: LPDWORD, GrantedAccess: LPDWORD, AccessStatus: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AccessCheckByTypeResultList*(pSecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, ClientToken: HANDLE, DesiredAccess: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, PrivilegeSet: PPRIVILEGE_SET, PrivilegeSetLength: LPDWORD, GrantedAccessList: LPDWORD, AccessStatusList: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AccessCheckByTypeAndAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID, ObjectTypeName: LPCWSTR, ObjectName: LPCWSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccess: LPDWORD, AccessStatus: LPBOOL, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AccessCheckByTypeResultListAndAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID, ObjectTypeName: LPCWSTR, ObjectName: LPCWSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccessList: LPDWORD, AccessStatusList: LPDWORD, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AccessCheckByTypeResultListAndAuditAlarmByHandleW*(SubsystemName: LPCWSTR, HandleId: LPVOID, ClientToken: HANDLE, ObjectTypeName: LPCWSTR, ObjectName: LPCWSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccessList: LPDWORD, AccessStatusList: LPDWORD, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AddAccessAllowedAce*(pAcl: PACL, dwAceRevision: DWORD, AccessMask: DWORD, pSid: PSID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AddAccessAllowedAceEx*(pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AddAccessAllowedObjectAce*(pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, ObjectTypeGuid: ptr GUID, InheritedObjectTypeGuid: ptr GUID, pSid: PSID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AddAccessDeniedAce*(pAcl: PACL, dwAceRevision: DWORD, AccessMask: DWORD, pSid: PSID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AddAccessDeniedAceEx*(pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AddAccessDeniedObjectAce*(pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, ObjectTypeGuid: ptr GUID, InheritedObjectTypeGuid: ptr GUID, pSid: PSID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AddAce*(pAcl: PACL, dwAceRevision: DWORD, dwStartingAceIndex: DWORD, pAceList: LPVOID, nAceListLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AddAuditAccessAce*(pAcl: PACL, dwAceRevision: DWORD, dwAccessMask: DWORD, pSid: PSID, bAuditSuccess: WINBOOL, bAuditFailure: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AddAuditAccessAceEx*(pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, dwAccessMask: DWORD, pSid: PSID, bAuditSuccess: WINBOOL, bAuditFailure: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AddAuditAccessObjectAce*(pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, ObjectTypeGuid: ptr GUID, InheritedObjectTypeGuid: ptr GUID, pSid: PSID, bAuditSuccess: WINBOOL, bAuditFailure: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AddMandatoryAce*(pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, MandatoryPolicy: DWORD, pLabelSid: PSID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AddResourceAttributeAce*(pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID, pAttributeInfo: PCLAIM_SECURITY_ATTRIBUTES_INFORMATION, pReturnLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AddScopedPolicyIDAce*(pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AdjustTokenGroups*(TokenHandle: HANDLE, ResetToDefault: WINBOOL, NewState: PTOKEN_GROUPS, BufferLength: DWORD, PreviousState: PTOKEN_GROUPS, ReturnLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AdjustTokenPrivileges*(TokenHandle: HANDLE, DisableAllPrivileges: WINBOOL, NewState: PTOKEN_PRIVILEGES, BufferLength: DWORD, PreviousState: PTOKEN_PRIVILEGES, ReturnLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AllocateAndInitializeSid*(pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY, nSubAuthorityCount: BYTE, nSubAuthority0: DWORD, nSubAuthority1: DWORD, nSubAuthority2: DWORD, nSubAuthority3: DWORD, nSubAuthority4: DWORD, nSubAuthority5: DWORD, nSubAuthority6: DWORD, nSubAuthority7: DWORD, pSid: ptr PSID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AllocateLocallyUniqueId*(Luid: PLUID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AreAllAccessesGranted*(GrantedAccess: DWORD, DesiredAccess: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AreAnyAccessesGranted*(GrantedAccess: DWORD, DesiredAccess: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CheckTokenMembership*(TokenHandle: HANDLE, SidToCheck: PSID, IsMember: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CheckTokenCapability*(TokenHandle: HANDLE, CapabilitySidToCheck: PSID, HasCapability: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetAppContainerAce*(Acl: PACL, StartingAceIndex: DWORD, AppContainerAce: ptr PVOID, AppContainerAceIndex: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CheckTokenMembershipEx*(TokenHandle: HANDLE, SidToCheck: PSID, Flags: DWORD, IsMember: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ConvertToAutoInheritPrivateObjectSecurity*(ParentDescriptor: PSECURITY_DESCRIPTOR, CurrentSecurityDescriptor: PSECURITY_DESCRIPTOR, NewSecurityDescriptor: ptr PSECURITY_DESCRIPTOR, ObjectType: ptr GUID, IsDirectoryObject: BOOLEAN, GenericMapping: PGENERIC_MAPPING): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CopySid*(nDestinationSidLength: DWORD, pDestinationSid: PSID, pSourceSid: PSID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CreatePrivateObjectSecurity*(ParentDescriptor: PSECURITY_DESCRIPTOR, CreatorDescriptor: PSECURITY_DESCRIPTOR, NewDescriptor: ptr PSECURITY_DESCRIPTOR, IsDirectoryObject: WINBOOL, Token: HANDLE, GenericMapping: PGENERIC_MAPPING): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CreatePrivateObjectSecurityEx*(ParentDescriptor: PSECURITY_DESCRIPTOR, CreatorDescriptor: PSECURITY_DESCRIPTOR, NewDescriptor: ptr PSECURITY_DESCRIPTOR, ObjectType: ptr GUID, IsContainerObject: WINBOOL, AutoInheritFlags: ULONG, Token: HANDLE, GenericMapping: PGENERIC_MAPPING): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CreatePrivateObjectSecurityWithMultipleInheritance*(ParentDescriptor: PSECURITY_DESCRIPTOR, CreatorDescriptor: PSECURITY_DESCRIPTOR, NewDescriptor: ptr PSECURITY_DESCRIPTOR, ObjectTypes: ptr ptr GUID, GuidCount: ULONG, IsContainerObject: WINBOOL, AutoInheritFlags: ULONG, Token: HANDLE, GenericMapping: PGENERIC_MAPPING): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CreateRestrictedToken*(ExistingTokenHandle: HANDLE, Flags: DWORD, DisableSidCount: DWORD, SidsToDisable: PSID_AND_ATTRIBUTES, DeletePrivilegeCount: DWORD, PrivilegesToDelete: PLUID_AND_ATTRIBUTES, RestrictedSidCount: DWORD, SidsToRestrict: PSID_AND_ATTRIBUTES, NewTokenHandle: PHANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CreateWellKnownSid*(WellKnownSidType: WELL_KNOWN_SID_TYPE, DomainSid: PSID, pSid: PSID, cbSid: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc EqualDomainSid*(pSid1: PSID, pSid2: PSID, pfEqual: ptr WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc DeleteAce*(pAcl: PACL, dwAceIndex: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc DestroyPrivateObjectSecurity*(ObjectDescriptor: ptr PSECURITY_DESCRIPTOR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc DuplicateToken*(ExistingTokenHandle: HANDLE, ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL, DuplicateTokenHandle: PHANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc DuplicateTokenEx*(hExistingToken: HANDLE, dwDesiredAccess: DWORD, lpTokenAttributes: LPSECURITY_ATTRIBUTES, ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL, TokenType: TOKEN_TYPE, phNewToken: PHANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc EqualPrefixSid*(pSid1: PSID, pSid2: PSID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc EqualSid*(pSid1: PSID, pSid2: PSID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc FindFirstFreeAce*(pAcl: PACL, pAce: ptr LPVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+proc TlsGetValue*(
+  dwTlsIndex: DWORD
+): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc TlsSetValue*(
+  dwTlsIndex: DWORD, lpTlsValue: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc TlsFree*(
+  dwTlsIndex: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadIdealProcessorEx*(
+  hThread: HANDLE,
+  lpIdealProcessor: PPROCESSOR_NUMBER,
+  lpPreviousIdealProcessor: PPROCESSOR_NUMBER,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessGroupAffinity*(
+  hProcess: HANDLE, GroupCount: PUSHORT, GroupArray: PUSHORT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetThreadGroupAffinity*(
+  hThread: HANDLE, GroupAffinity: PGROUP_AFFINITY
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadGroupAffinity*(
+  hThread: HANDLE,
+  GroupAffinity: ptr GROUP_AFFINITY,
+  PreviousGroupAffinity: PGROUP_AFFINITY,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryPerformanceCounter*(
+  lpPerformanceCount: ptr LARGE_INTEGER
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryPerformanceFrequency*(
+  lpFrequency: ptr LARGE_INTEGER
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryThreadCycleTime*(
+  ThreadHandle: HANDLE, CycleTime: PULONG64
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryProcessCycleTime*(
+  ProcessHandle: HANDLE, CycleTime: PULONG64
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryIdleProcessorCycleTime*(
+  BufferLength: PULONG, ProcessorIdleCycleTime: PULONG64
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryIdleProcessorCycleTimeEx*(
+  Group: USHORT, BufferLength: PULONG, ProcessorIdleCycleTime: PULONG64
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryUnbiasedInterruptTime*(
+  UnbiasedTime: PULONGLONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetAppContainerNamedObjectPath*(
+  Token: HANDLE,
+  AppContainerSid: PSID,
+  ObjectPathLength: ULONG,
+  ObjectPath: LPWSTR,
+  ReturnLength: PULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AccessCheck*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  ClientToken: HANDLE,
+  DesiredAccess: DWORD,
+  GenericMapping: PGENERIC_MAPPING,
+  PrivilegeSet: PPRIVILEGE_SET,
+  PrivilegeSetLength: LPDWORD,
+  GrantedAccess: LPDWORD,
+  AccessStatus: LPBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AccessCheckAndAuditAlarmW*(
+  SubsystemName: LPCWSTR,
+  HandleId: LPVOID,
+  ObjectTypeName: LPWSTR,
+  ObjectName: LPWSTR,
+  SecurityDescriptor: PSECURITY_DESCRIPTOR,
+  DesiredAccess: DWORD,
+  GenericMapping: PGENERIC_MAPPING,
+  ObjectCreation: WINBOOL,
+  GrantedAccess: LPDWORD,
+  AccessStatus: LPBOOL,
+  pfGenerateOnClose: LPBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AccessCheckByType*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  PrincipalSelfSid: PSID,
+  ClientToken: HANDLE,
+  DesiredAccess: DWORD,
+  ObjectTypeList: POBJECT_TYPE_LIST,
+  ObjectTypeListLength: DWORD,
+  GenericMapping: PGENERIC_MAPPING,
+  PrivilegeSet: PPRIVILEGE_SET,
+  PrivilegeSetLength: LPDWORD,
+  GrantedAccess: LPDWORD,
+  AccessStatus: LPBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AccessCheckByTypeResultList*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  PrincipalSelfSid: PSID,
+  ClientToken: HANDLE,
+  DesiredAccess: DWORD,
+  ObjectTypeList: POBJECT_TYPE_LIST,
+  ObjectTypeListLength: DWORD,
+  GenericMapping: PGENERIC_MAPPING,
+  PrivilegeSet: PPRIVILEGE_SET,
+  PrivilegeSetLength: LPDWORD,
+  GrantedAccessList: LPDWORD,
+  AccessStatusList: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AccessCheckByTypeAndAuditAlarmW*(
+  SubsystemName: LPCWSTR,
+  HandleId: LPVOID,
+  ObjectTypeName: LPCWSTR,
+  ObjectName: LPCWSTR,
+  SecurityDescriptor: PSECURITY_DESCRIPTOR,
+  PrincipalSelfSid: PSID,
+  DesiredAccess: DWORD,
+  AuditType: AUDIT_EVENT_TYPE,
+  Flags: DWORD,
+  ObjectTypeList: POBJECT_TYPE_LIST,
+  ObjectTypeListLength: DWORD,
+  GenericMapping: PGENERIC_MAPPING,
+  ObjectCreation: WINBOOL,
+  GrantedAccess: LPDWORD,
+  AccessStatus: LPBOOL,
+  pfGenerateOnClose: LPBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AccessCheckByTypeResultListAndAuditAlarmW*(
+  SubsystemName: LPCWSTR,
+  HandleId: LPVOID,
+  ObjectTypeName: LPCWSTR,
+  ObjectName: LPCWSTR,
+  SecurityDescriptor: PSECURITY_DESCRIPTOR,
+  PrincipalSelfSid: PSID,
+  DesiredAccess: DWORD,
+  AuditType: AUDIT_EVENT_TYPE,
+  Flags: DWORD,
+  ObjectTypeList: POBJECT_TYPE_LIST,
+  ObjectTypeListLength: DWORD,
+  GenericMapping: PGENERIC_MAPPING,
+  ObjectCreation: WINBOOL,
+  GrantedAccessList: LPDWORD,
+  AccessStatusList: LPDWORD,
+  pfGenerateOnClose: LPBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AccessCheckByTypeResultListAndAuditAlarmByHandleW*(
+  SubsystemName: LPCWSTR,
+  HandleId: LPVOID,
+  ClientToken: HANDLE,
+  ObjectTypeName: LPCWSTR,
+  ObjectName: LPCWSTR,
+  SecurityDescriptor: PSECURITY_DESCRIPTOR,
+  PrincipalSelfSid: PSID,
+  DesiredAccess: DWORD,
+  AuditType: AUDIT_EVENT_TYPE,
+  Flags: DWORD,
+  ObjectTypeList: POBJECT_TYPE_LIST,
+  ObjectTypeListLength: DWORD,
+  GenericMapping: PGENERIC_MAPPING,
+  ObjectCreation: WINBOOL,
+  GrantedAccessList: LPDWORD,
+  AccessStatusList: LPDWORD,
+  pfGenerateOnClose: LPBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AddAccessAllowedAce*(
+  pAcl: PACL, dwAceRevision: DWORD, AccessMask: DWORD, pSid: PSID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AddAccessAllowedAceEx*(
+  pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AddAccessAllowedObjectAce*(
+  pAcl: PACL,
+  dwAceRevision: DWORD,
+  AceFlags: DWORD,
+  AccessMask: DWORD,
+  ObjectTypeGuid: ptr GUID,
+  InheritedObjectTypeGuid: ptr GUID,
+  pSid: PSID,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AddAccessDeniedAce*(
+  pAcl: PACL, dwAceRevision: DWORD, AccessMask: DWORD, pSid: PSID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AddAccessDeniedAceEx*(
+  pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AddAccessDeniedObjectAce*(
+  pAcl: PACL,
+  dwAceRevision: DWORD,
+  AceFlags: DWORD,
+  AccessMask: DWORD,
+  ObjectTypeGuid: ptr GUID,
+  InheritedObjectTypeGuid: ptr GUID,
+  pSid: PSID,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AddAce*(
+  pAcl: PACL,
+  dwAceRevision: DWORD,
+  dwStartingAceIndex: DWORD,
+  pAceList: LPVOID,
+  nAceListLength: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AddAuditAccessAce*(
+  pAcl: PACL,
+  dwAceRevision: DWORD,
+  dwAccessMask: DWORD,
+  pSid: PSID,
+  bAuditSuccess: WINBOOL,
+  bAuditFailure: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AddAuditAccessAceEx*(
+  pAcl: PACL,
+  dwAceRevision: DWORD,
+  AceFlags: DWORD,
+  dwAccessMask: DWORD,
+  pSid: PSID,
+  bAuditSuccess: WINBOOL,
+  bAuditFailure: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AddAuditAccessObjectAce*(
+  pAcl: PACL,
+  dwAceRevision: DWORD,
+  AceFlags: DWORD,
+  AccessMask: DWORD,
+  ObjectTypeGuid: ptr GUID,
+  InheritedObjectTypeGuid: ptr GUID,
+  pSid: PSID,
+  bAuditSuccess: WINBOOL,
+  bAuditFailure: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AddMandatoryAce*(
+  pAcl: PACL,
+  dwAceRevision: DWORD,
+  AceFlags: DWORD,
+  MandatoryPolicy: DWORD,
+  pLabelSid: PSID,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AddResourceAttributeAce*(
+  pAcl: PACL,
+  dwAceRevision: DWORD,
+  AceFlags: DWORD,
+  AccessMask: DWORD,
+  pSid: PSID,
+  pAttributeInfo: PCLAIM_SECURITY_ATTRIBUTES_INFORMATION,
+  pReturnLength: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AddScopedPolicyIDAce*(
+  pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AdjustTokenGroups*(
+  TokenHandle: HANDLE,
+  ResetToDefault: WINBOOL,
+  NewState: PTOKEN_GROUPS,
+  BufferLength: DWORD,
+  PreviousState: PTOKEN_GROUPS,
+  ReturnLength: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AdjustTokenPrivileges*(
+  TokenHandle: HANDLE,
+  DisableAllPrivileges: WINBOOL,
+  NewState: PTOKEN_PRIVILEGES,
+  BufferLength: DWORD,
+  PreviousState: PTOKEN_PRIVILEGES,
+  ReturnLength: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AllocateAndInitializeSid*(
+  pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY,
+  nSubAuthorityCount: BYTE,
+  nSubAuthority0: DWORD,
+  nSubAuthority1: DWORD,
+  nSubAuthority2: DWORD,
+  nSubAuthority3: DWORD,
+  nSubAuthority4: DWORD,
+  nSubAuthority5: DWORD,
+  nSubAuthority6: DWORD,
+  nSubAuthority7: DWORD,
+  pSid: ptr PSID,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AllocateLocallyUniqueId*(
+  Luid: PLUID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AreAllAccessesGranted*(
+  GrantedAccess: DWORD, DesiredAccess: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AreAnyAccessesGranted*(
+  GrantedAccess: DWORD, DesiredAccess: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CheckTokenMembership*(
+  TokenHandle: HANDLE, SidToCheck: PSID, IsMember: PBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CheckTokenCapability*(
+  TokenHandle: HANDLE, CapabilitySidToCheck: PSID, HasCapability: PBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetAppContainerAce*(
+  Acl: PACL,
+  StartingAceIndex: DWORD,
+  AppContainerAce: ptr PVOID,
+  AppContainerAceIndex: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CheckTokenMembershipEx*(
+  TokenHandle: HANDLE, SidToCheck: PSID, Flags: DWORD, IsMember: PBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ConvertToAutoInheritPrivateObjectSecurity*(
+  ParentDescriptor: PSECURITY_DESCRIPTOR,
+  CurrentSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  NewSecurityDescriptor: ptr PSECURITY_DESCRIPTOR,
+  ObjectType: ptr GUID,
+  IsDirectoryObject: BOOLEAN,
+  GenericMapping: PGENERIC_MAPPING,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CopySid*(
+  nDestinationSidLength: DWORD, pDestinationSid: PSID, pSourceSid: PSID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CreatePrivateObjectSecurity*(
+  ParentDescriptor: PSECURITY_DESCRIPTOR,
+  CreatorDescriptor: PSECURITY_DESCRIPTOR,
+  NewDescriptor: ptr PSECURITY_DESCRIPTOR,
+  IsDirectoryObject: WINBOOL,
+  Token: HANDLE,
+  GenericMapping: PGENERIC_MAPPING,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CreatePrivateObjectSecurityEx*(
+  ParentDescriptor: PSECURITY_DESCRIPTOR,
+  CreatorDescriptor: PSECURITY_DESCRIPTOR,
+  NewDescriptor: ptr PSECURITY_DESCRIPTOR,
+  ObjectType: ptr GUID,
+  IsContainerObject: WINBOOL,
+  AutoInheritFlags: ULONG,
+  Token: HANDLE,
+  GenericMapping: PGENERIC_MAPPING,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CreatePrivateObjectSecurityWithMultipleInheritance*(
+  ParentDescriptor: PSECURITY_DESCRIPTOR,
+  CreatorDescriptor: PSECURITY_DESCRIPTOR,
+  NewDescriptor: ptr PSECURITY_DESCRIPTOR,
+  ObjectTypes: ptr ptr GUID,
+  GuidCount: ULONG,
+  IsContainerObject: WINBOOL,
+  AutoInheritFlags: ULONG,
+  Token: HANDLE,
+  GenericMapping: PGENERIC_MAPPING,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CreateRestrictedToken*(
+  ExistingTokenHandle: HANDLE,
+  Flags: DWORD,
+  DisableSidCount: DWORD,
+  SidsToDisable: PSID_AND_ATTRIBUTES,
+  DeletePrivilegeCount: DWORD,
+  PrivilegesToDelete: PLUID_AND_ATTRIBUTES,
+  RestrictedSidCount: DWORD,
+  SidsToRestrict: PSID_AND_ATTRIBUTES,
+  NewTokenHandle: PHANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CreateWellKnownSid*(
+  WellKnownSidType: WELL_KNOWN_SID_TYPE, DomainSid: PSID, pSid: PSID, cbSid: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc EqualDomainSid*(
+  pSid1: PSID, pSid2: PSID, pfEqual: ptr WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc DeleteAce*(
+  pAcl: PACL, dwAceIndex: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc DestroyPrivateObjectSecurity*(
+  ObjectDescriptor: ptr PSECURITY_DESCRIPTOR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc DuplicateToken*(
+  ExistingTokenHandle: HANDLE,
+  ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL,
+  DuplicateTokenHandle: PHANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc DuplicateTokenEx*(
+  hExistingToken: HANDLE,
+  dwDesiredAccess: DWORD,
+  lpTokenAttributes: LPSECURITY_ATTRIBUTES,
+  ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL,
+  TokenType: TOKEN_TYPE,
+  phNewToken: PHANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc EqualPrefixSid*(
+  pSid1: PSID, pSid2: PSID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc EqualSid*(
+  pSid1: PSID, pSid2: PSID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc FindFirstFreeAce*(
+  pAcl: PACL, pAce: ptr LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
 proc FreeSid*(pSid: PSID): PVOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetAce*(pAcl: PACL, dwAceIndex: DWORD, pAce: ptr LPVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetAclInformation*(pAcl: PACL, pAclInformation: LPVOID, nAclInformationLength: DWORD, dwAclInformationClass: ACL_INFORMATION_CLASS): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetFileSecurityW*(lpFileName: LPCWSTR, RequestedInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetKernelObjectSecurity*(Handle: HANDLE, RequestedInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+proc GetAce*(
+  pAcl: PACL, dwAceIndex: DWORD, pAce: ptr LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetAclInformation*(
+  pAcl: PACL,
+  pAclInformation: LPVOID,
+  nAclInformationLength: DWORD,
+  dwAclInformationClass: ACL_INFORMATION_CLASS,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetFileSecurityW*(
+  lpFileName: LPCWSTR,
+  RequestedInformation: SECURITY_INFORMATION,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  nLength: DWORD,
+  lpnLengthNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetKernelObjectSecurity*(
+  Handle: HANDLE,
+  RequestedInformation: SECURITY_INFORMATION,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  nLength: DWORD,
+  lpnLengthNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
 proc GetLengthSid*(pSid: PSID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetPrivateObjectSecurity*(ObjectDescriptor: PSECURITY_DESCRIPTOR, SecurityInformation: SECURITY_INFORMATION, ResultantDescriptor: PSECURITY_DESCRIPTOR, DescriptorLength: DWORD, ReturnLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetSecurityDescriptorControl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR, pControl: PSECURITY_DESCRIPTOR_CONTROL, lpdwRevision: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetSecurityDescriptorDacl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR, lpbDaclPresent: LPBOOL, pDacl: ptr PACL, lpbDaclDefaulted: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetSecurityDescriptorGroup*(pSecurityDescriptor: PSECURITY_DESCRIPTOR, pGroup: ptr PSID, lpbGroupDefaulted: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetSecurityDescriptorLength*(pSecurityDescriptor: PSECURITY_DESCRIPTOR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetSecurityDescriptorOwner*(pSecurityDescriptor: PSECURITY_DESCRIPTOR, pOwner: ptr PSID, lpbOwnerDefaulted: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetSecurityDescriptorRMControl*(SecurityDescriptor: PSECURITY_DESCRIPTOR, RMControl: PUCHAR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetSecurityDescriptorSacl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR, lpbSaclPresent: LPBOOL, pSacl: ptr PACL, lpbSaclDefaulted: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetSidIdentifierAuthority*(pSid: PSID): PSID_IDENTIFIER_AUTHORITY {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetSidLengthRequired*(nSubAuthorityCount: UCHAR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetSidSubAuthority*(pSid: PSID, nSubAuthority: DWORD): PDWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetSidSubAuthorityCount*(pSid: PSID): PUCHAR {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetTokenInformation*(TokenHandle: HANDLE, TokenInformationClass: TOKEN_INFORMATION_CLASS, TokenInformation: LPVOID, TokenInformationLength: DWORD, ReturnLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetWindowsAccountDomainSid*(pSid: PSID, pDomainSid: PSID, cbDomainSid: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ImpersonateAnonymousToken*(ThreadHandle: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ImpersonateLoggedOnUser*(hToken: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ImpersonateSelf*(ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc InitializeAcl*(pAcl: PACL, nAclLength: DWORD, dwAclRevision: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc InitializeSecurityDescriptor*(pSecurityDescriptor: PSECURITY_DESCRIPTOR, dwRevision: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc InitializeSid*(Sid: PSID, pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY, nSubAuthorityCount: BYTE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc IsTokenRestricted*(TokenHandle: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+proc GetPrivateObjectSecurity*(
+  ObjectDescriptor: PSECURITY_DESCRIPTOR,
+  SecurityInformation: SECURITY_INFORMATION,
+  ResultantDescriptor: PSECURITY_DESCRIPTOR,
+  DescriptorLength: DWORD,
+  ReturnLength: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetSecurityDescriptorControl*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  pControl: PSECURITY_DESCRIPTOR_CONTROL,
+  lpdwRevision: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetSecurityDescriptorDacl*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  lpbDaclPresent: LPBOOL,
+  pDacl: ptr PACL,
+  lpbDaclDefaulted: LPBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetSecurityDescriptorGroup*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR, pGroup: ptr PSID, lpbGroupDefaulted: LPBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetSecurityDescriptorLength*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetSecurityDescriptorOwner*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR, pOwner: ptr PSID, lpbOwnerDefaulted: LPBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetSecurityDescriptorRMControl*(
+  SecurityDescriptor: PSECURITY_DESCRIPTOR, RMControl: PUCHAR
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetSecurityDescriptorSacl*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  lpbSaclPresent: LPBOOL,
+  pSacl: ptr PACL,
+  lpbSaclDefaulted: LPBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetSidIdentifierAuthority*(
+  pSid: PSID
+): PSID_IDENTIFIER_AUTHORITY {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetSidLengthRequired*(
+  nSubAuthorityCount: UCHAR
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetSidSubAuthority*(
+  pSid: PSID, nSubAuthority: DWORD
+): PDWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetSidSubAuthorityCount*(
+  pSid: PSID
+): PUCHAR {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetTokenInformation*(
+  TokenHandle: HANDLE,
+  TokenInformationClass: TOKEN_INFORMATION_CLASS,
+  TokenInformation: LPVOID,
+  TokenInformationLength: DWORD,
+  ReturnLength: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetWindowsAccountDomainSid*(
+  pSid: PSID, pDomainSid: PSID, cbDomainSid: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ImpersonateAnonymousToken*(
+  ThreadHandle: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ImpersonateLoggedOnUser*(
+  hToken: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ImpersonateSelf*(
+  ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc InitializeAcl*(
+  pAcl: PACL, nAclLength: DWORD, dwAclRevision: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc InitializeSecurityDescriptor*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR, dwRevision: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc InitializeSid*(
+  Sid: PSID, pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY, nSubAuthorityCount: BYTE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc IsTokenRestricted*(
+  TokenHandle: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
 proc IsValidAcl*(pAcl: PACL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc IsValidSecurityDescriptor*(pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+proc IsValidSecurityDescriptor*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
 proc IsValidSid*(pSid: PSID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc IsWellKnownSid*(pSid: PSID, WellKnownSidType: WELL_KNOWN_SID_TYPE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc MakeAbsoluteSD*(pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR, pAbsoluteSecurityDescriptor: PSECURITY_DESCRIPTOR, lpdwAbsoluteSecurityDescriptorSize: LPDWORD, pDacl: PACL, lpdwDaclSize: LPDWORD, pSacl: PACL, lpdwSaclSize: LPDWORD, pOwner: PSID, lpdwOwnerSize: LPDWORD, pPrimaryGroup: PSID, lpdwPrimaryGroupSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc MakeSelfRelativeSD*(pAbsoluteSecurityDescriptor: PSECURITY_DESCRIPTOR, pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR, lpdwBufferLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc MapGenericMask*(AccessMask: PDWORD, GenericMapping: PGENERIC_MAPPING): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ObjectCloseAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ObjectDeleteAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ObjectOpenAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID, ObjectTypeName: LPWSTR, ObjectName: LPWSTR, pSecurityDescriptor: PSECURITY_DESCRIPTOR, ClientToken: HANDLE, DesiredAccess: DWORD, GrantedAccess: DWORD, Privileges: PPRIVILEGE_SET, ObjectCreation: WINBOOL, AccessGranted: WINBOOL, GenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ObjectPrivilegeAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID, ClientToken: HANDLE, DesiredAccess: DWORD, Privileges: PPRIVILEGE_SET, AccessGranted: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc PrivilegeCheck*(ClientToken: HANDLE, RequiredPrivileges: PPRIVILEGE_SET, pfResult: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc PrivilegedServiceAuditAlarmW*(SubsystemName: LPCWSTR, ServiceName: LPCWSTR, ClientToken: HANDLE, Privileges: PPRIVILEGE_SET, AccessGranted: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc QuerySecurityAccessMask*(SecurityInformation: SECURITY_INFORMATION, DesiredAccess: LPDWORD): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+proc IsWellKnownSid*(
+  pSid: PSID, WellKnownSidType: WELL_KNOWN_SID_TYPE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc MakeAbsoluteSD*(
+  pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  pAbsoluteSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  lpdwAbsoluteSecurityDescriptorSize: LPDWORD,
+  pDacl: PACL,
+  lpdwDaclSize: LPDWORD,
+  pSacl: PACL,
+  lpdwSaclSize: LPDWORD,
+  pOwner: PSID,
+  lpdwOwnerSize: LPDWORD,
+  pPrimaryGroup: PSID,
+  lpdwPrimaryGroupSize: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc MakeSelfRelativeSD*(
+  pAbsoluteSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  lpdwBufferLength: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc MapGenericMask*(
+  AccessMask: PDWORD, GenericMapping: PGENERIC_MAPPING
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ObjectCloseAuditAlarmW*(
+  SubsystemName: LPCWSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ObjectDeleteAuditAlarmW*(
+  SubsystemName: LPCWSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ObjectOpenAuditAlarmW*(
+  SubsystemName: LPCWSTR,
+  HandleId: LPVOID,
+  ObjectTypeName: LPWSTR,
+  ObjectName: LPWSTR,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  ClientToken: HANDLE,
+  DesiredAccess: DWORD,
+  GrantedAccess: DWORD,
+  Privileges: PPRIVILEGE_SET,
+  ObjectCreation: WINBOOL,
+  AccessGranted: WINBOOL,
+  GenerateOnClose: LPBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ObjectPrivilegeAuditAlarmW*(
+  SubsystemName: LPCWSTR,
+  HandleId: LPVOID,
+  ClientToken: HANDLE,
+  DesiredAccess: DWORD,
+  Privileges: PPRIVILEGE_SET,
+  AccessGranted: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc PrivilegeCheck*(
+  ClientToken: HANDLE, RequiredPrivileges: PPRIVILEGE_SET, pfResult: LPBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc PrivilegedServiceAuditAlarmW*(
+  SubsystemName: LPCWSTR,
+  ServiceName: LPCWSTR,
+  ClientToken: HANDLE,
+  Privileges: PPRIVILEGE_SET,
+  AccessGranted: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc QuerySecurityAccessMask*(
+  SecurityInformation: SECURITY_INFORMATION, DesiredAccess: LPDWORD
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
 proc RevertToSelf*(): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetAclInformation*(pAcl: PACL, pAclInformation: LPVOID, nAclInformationLength: DWORD, dwAclInformationClass: ACL_INFORMATION_CLASS): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetFileSecurityW*(lpFileName: LPCWSTR, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetKernelObjectSecurity*(Handle: HANDLE, SecurityInformation: SECURITY_INFORMATION, SecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetPrivateObjectSecurity*(SecurityInformation: SECURITY_INFORMATION, ModificationDescriptor: PSECURITY_DESCRIPTOR, ObjectsSecurityDescriptor: ptr PSECURITY_DESCRIPTOR, GenericMapping: PGENERIC_MAPPING, Token: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetPrivateObjectSecurityEx*(SecurityInformation: SECURITY_INFORMATION, ModificationDescriptor: PSECURITY_DESCRIPTOR, ObjectsSecurityDescriptor: ptr PSECURITY_DESCRIPTOR, AutoInheritFlags: ULONG, GenericMapping: PGENERIC_MAPPING, Token: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetSecurityAccessMask*(SecurityInformation: SECURITY_INFORMATION, DesiredAccess: LPDWORD): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetSecurityDescriptorControl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR, ControlBitsOfInterest: SECURITY_DESCRIPTOR_CONTROL, ControlBitsToSet: SECURITY_DESCRIPTOR_CONTROL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetSecurityDescriptorDacl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR, bDaclPresent: WINBOOL, pDacl: PACL, bDaclDefaulted: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetSecurityDescriptorGroup*(pSecurityDescriptor: PSECURITY_DESCRIPTOR, pGroup: PSID, bGroupDefaulted: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetSecurityDescriptorOwner*(pSecurityDescriptor: PSECURITY_DESCRIPTOR, pOwner: PSID, bOwnerDefaulted: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetSecurityDescriptorRMControl*(SecurityDescriptor: PSECURITY_DESCRIPTOR, RMControl: PUCHAR): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetSecurityDescriptorSacl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR, bSaclPresent: WINBOOL, pSacl: PACL, bSaclDefaulted: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetTokenInformation*(TokenHandle: HANDLE, TokenInformationClass: TOKEN_INFORMATION_CLASS, TokenInformation: LPVOID, TokenInformationLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetCachedSigningLevel*(SourceFiles: PHANDLE, SourceFileCount: ULONG, Flags: ULONG, TargetFile: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCachedSigningLevel*(File: HANDLE, Flags: PULONG, SigningLevel: PULONG, Thumbprint: PUCHAR, ThumbprintSize: PULONG, ThumbprintAlgorithm: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnterCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LeaveCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc TryEnterCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeleteCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc SetAclInformation*(
+  pAcl: PACL,
+  pAclInformation: LPVOID,
+  nAclInformationLength: DWORD,
+  dwAclInformationClass: ACL_INFORMATION_CLASS,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetFileSecurityW*(
+  lpFileName: LPCWSTR,
+  SecurityInformation: SECURITY_INFORMATION,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetKernelObjectSecurity*(
+  Handle: HANDLE,
+  SecurityInformation: SECURITY_INFORMATION,
+  SecurityDescriptor: PSECURITY_DESCRIPTOR,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetPrivateObjectSecurity*(
+  SecurityInformation: SECURITY_INFORMATION,
+  ModificationDescriptor: PSECURITY_DESCRIPTOR,
+  ObjectsSecurityDescriptor: ptr PSECURITY_DESCRIPTOR,
+  GenericMapping: PGENERIC_MAPPING,
+  Token: HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetPrivateObjectSecurityEx*(
+  SecurityInformation: SECURITY_INFORMATION,
+  ModificationDescriptor: PSECURITY_DESCRIPTOR,
+  ObjectsSecurityDescriptor: ptr PSECURITY_DESCRIPTOR,
+  AutoInheritFlags: ULONG,
+  GenericMapping: PGENERIC_MAPPING,
+  Token: HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetSecurityAccessMask*(
+  SecurityInformation: SECURITY_INFORMATION, DesiredAccess: LPDWORD
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetSecurityDescriptorControl*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  ControlBitsOfInterest: SECURITY_DESCRIPTOR_CONTROL,
+  ControlBitsToSet: SECURITY_DESCRIPTOR_CONTROL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetSecurityDescriptorDacl*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  bDaclPresent: WINBOOL,
+  pDacl: PACL,
+  bDaclDefaulted: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetSecurityDescriptorGroup*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR, pGroup: PSID, bGroupDefaulted: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetSecurityDescriptorOwner*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR, pOwner: PSID, bOwnerDefaulted: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetSecurityDescriptorRMControl*(
+  SecurityDescriptor: PSECURITY_DESCRIPTOR, RMControl: PUCHAR
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetSecurityDescriptorSacl*(
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  bSaclPresent: WINBOOL,
+  pSacl: PACL,
+  bSaclDefaulted: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetTokenInformation*(
+  TokenHandle: HANDLE,
+  TokenInformationClass: TOKEN_INFORMATION_CLASS,
+  TokenInformation: LPVOID,
+  TokenInformationLength: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetCachedSigningLevel*(
+  SourceFiles: PHANDLE, SourceFileCount: ULONG, Flags: ULONG, TargetFile: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCachedSigningLevel*(
+  File: HANDLE,
+  Flags: PULONG,
+  SigningLevel: PULONG,
+  Thumbprint: PUCHAR,
+  ThumbprintSize: PULONG,
+  ThumbprintAlgorithm: PULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnterCriticalSection*(
+  lpCriticalSection: LPCRITICAL_SECTION
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LeaveCriticalSection*(
+  lpCriticalSection: LPCRITICAL_SECTION
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc TryEnterCriticalSection*(
+  lpCriticalSection: LPCRITICAL_SECTION
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeleteCriticalSection*(
+  lpCriticalSection: LPCRITICAL_SECTION
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc SetEvent*(hEvent: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ResetEvent*(hEvent: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReleaseSemaphore*(hSemaphore: HANDLE, lReleaseCount: LONG, lpPreviousCount: LPLONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReleaseMutex*(hMutex: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WaitForSingleObjectEx*(hHandle: HANDLE, dwMilliseconds: DWORD, bAlertable: WINBOOL): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WaitForMultipleObjectsEx*(nCount: DWORD, lpHandles: ptr HANDLE, bWaitAll: WINBOOL, dwMilliseconds: DWORD, bAlertable: WINBOOL): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenMutexW*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenEventA*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenEventW*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenSemaphoreW*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InitializeSRWLock*(SRWLock: PSRWLOCK): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReleaseSRWLockExclusive*(SRWLock: PSRWLOCK): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReleaseSRWLockShared*(SRWLock: PSRWLOCK): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AcquireSRWLockExclusive*(SRWLock: PSRWLOCK): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AcquireSRWLockShared*(SRWLock: PSRWLOCK): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc TryAcquireSRWLockExclusive*(SRWLock: PSRWLOCK): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc TryAcquireSRWLockShared*(SRWLock: PSRWLOCK): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InitializeCriticalSectionEx*(lpCriticalSection: LPCRITICAL_SECTION, dwSpinCount: DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InitOnceInitialize*(InitOnce: PINIT_ONCE): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InitOnceExecuteOnce*(InitOnce: PINIT_ONCE, InitFn: PINIT_ONCE_FN, Parameter: PVOID, Context: ptr LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InitOnceBeginInitialize*(lpInitOnce: LPINIT_ONCE, dwFlags: DWORD, fPending: PBOOL, lpContext: ptr LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InitOnceComplete*(lpInitOnce: LPINIT_ONCE, dwFlags: DWORD, lpContext: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InitializeConditionVariable*(ConditionVariable: PCONDITION_VARIABLE): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WakeConditionVariable*(ConditionVariable: PCONDITION_VARIABLE): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WakeAllConditionVariable*(ConditionVariable: PCONDITION_VARIABLE): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SleepConditionVariableCS*(ConditionVariable: PCONDITION_VARIABLE, CriticalSection: PCRITICAL_SECTION, dwMilliseconds: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SleepConditionVariableSRW*(ConditionVariable: PCONDITION_VARIABLE, SRWLock: PSRWLOCK, dwMilliseconds: DWORD, Flags: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateMutexExA*(lpMutexAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateMutexExW*(lpMutexAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCWSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateEventExA*(lpEventAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateEventExW*(lpEventAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCWSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateSemaphoreExW*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES, lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCWSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InitializeCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InitializeCriticalSectionAndSpinCount*(lpCriticalSection: LPCRITICAL_SECTION, dwSpinCount: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetCriticalSectionSpinCount*(lpCriticalSection: LPCRITICAL_SECTION, dwSpinCount: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WaitForSingleObject*(hHandle: HANDLE, dwMilliseconds: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SleepEx*(dwMilliseconds: DWORD, bAlertable: WINBOOL): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateMutexA*(lpMutexAttributes: LPSECURITY_ATTRIBUTES, bInitialOwner: WINBOOL, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateMutexW*(lpMutexAttributes: LPSECURITY_ATTRIBUTES, bInitialOwner: WINBOOL, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateEventA*(lpEventAttributes: LPSECURITY_ATTRIBUTES, bManualReset: WINBOOL, bInitialState: WINBOOL, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateEventW*(lpEventAttributes: LPSECURITY_ATTRIBUTES, bManualReset: WINBOOL, bInitialState: WINBOOL, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetWaitableTimer*(hTimer: HANDLE, lpDueTime: ptr LARGE_INTEGER, lPeriod: LONG, pfnCompletionRoutine: PTIMERAPCROUTINE, lpArgToCompletionRoutine: LPVOID, fResume: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CancelWaitableTimer*(hTimer: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenWaitableTimerW*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpTimerName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnterSynchronizationBarrier*(lpBarrier: LPSYNCHRONIZATION_BARRIER, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InitializeSynchronizationBarrier*(lpBarrier: LPSYNCHRONIZATION_BARRIER, lTotalThreads: LONG, lSpinCount: LONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeleteSynchronizationBarrier*(lpBarrier: LPSYNCHRONIZATION_BARRIER): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Sleep*(dwMilliseconds: DWORD): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SignalObjectAndWait*(hObjectToSignal: HANDLE, hObjectToWaitOn: HANDLE, dwMilliseconds: DWORD, bAlertable: WINBOOL): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateWaitableTimerExW*(lpTimerAttributes: LPSECURITY_ATTRIBUTES, lpTimerName: LPCWSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetWaitableTimerEx*(hTimer: HANDLE, lpDueTime: ptr LARGE_INTEGER, lPeriod: LONG, pfnCompletionRoutine: PTIMERAPCROUTINE, lpArgToCompletionRoutine: LPVOID, WakeContext: PREASON_CONTEXT, TolerableDelay: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemTime*(lpSystemTime: LPSYSTEMTIME): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemTimeAsFileTime*(lpSystemTimeAsFileTime: LPFILETIME): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetLocalTime*(lpSystemTime: LPSYSTEMTIME): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNativeSystemInfo*(lpSystemInfo: LPSYSTEM_INFO): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc ResetEvent*(
+  hEvent: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReleaseSemaphore*(
+  hSemaphore: HANDLE, lReleaseCount: LONG, lpPreviousCount: LPLONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReleaseMutex*(
+  hMutex: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WaitForSingleObjectEx*(
+  hHandle: HANDLE, dwMilliseconds: DWORD, bAlertable: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WaitForMultipleObjectsEx*(
+  nCount: DWORD,
+  lpHandles: ptr HANDLE,
+  bWaitAll: WINBOOL,
+  dwMilliseconds: DWORD,
+  bAlertable: WINBOOL,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenMutexW*(
+  dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenEventA*(
+  dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenEventW*(
+  dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenSemaphoreW*(
+  dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InitializeSRWLock*(
+  SRWLock: PSRWLOCK
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReleaseSRWLockExclusive*(
+  SRWLock: PSRWLOCK
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReleaseSRWLockShared*(
+  SRWLock: PSRWLOCK
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AcquireSRWLockExclusive*(
+  SRWLock: PSRWLOCK
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AcquireSRWLockShared*(
+  SRWLock: PSRWLOCK
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc TryAcquireSRWLockExclusive*(
+  SRWLock: PSRWLOCK
+): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc TryAcquireSRWLockShared*(
+  SRWLock: PSRWLOCK
+): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InitializeCriticalSectionEx*(
+  lpCriticalSection: LPCRITICAL_SECTION, dwSpinCount: DWORD, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InitOnceInitialize*(
+  InitOnce: PINIT_ONCE
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InitOnceExecuteOnce*(
+  InitOnce: PINIT_ONCE, InitFn: PINIT_ONCE_FN, Parameter: PVOID, Context: ptr LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InitOnceBeginInitialize*(
+  lpInitOnce: LPINIT_ONCE, dwFlags: DWORD, fPending: PBOOL, lpContext: ptr LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InitOnceComplete*(
+  lpInitOnce: LPINIT_ONCE, dwFlags: DWORD, lpContext: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InitializeConditionVariable*(
+  ConditionVariable: PCONDITION_VARIABLE
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WakeConditionVariable*(
+  ConditionVariable: PCONDITION_VARIABLE
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WakeAllConditionVariable*(
+  ConditionVariable: PCONDITION_VARIABLE
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SleepConditionVariableCS*(
+  ConditionVariable: PCONDITION_VARIABLE,
+  CriticalSection: PCRITICAL_SECTION,
+  dwMilliseconds: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SleepConditionVariableSRW*(
+  ConditionVariable: PCONDITION_VARIABLE,
+  SRWLock: PSRWLOCK,
+  dwMilliseconds: DWORD,
+  Flags: ULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateMutexExA*(
+  lpMutexAttributes: LPSECURITY_ATTRIBUTES,
+  lpName: LPCSTR,
+  dwFlags: DWORD,
+  dwDesiredAccess: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateMutexExW*(
+  lpMutexAttributes: LPSECURITY_ATTRIBUTES,
+  lpName: LPCWSTR,
+  dwFlags: DWORD,
+  dwDesiredAccess: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateEventExA*(
+  lpEventAttributes: LPSECURITY_ATTRIBUTES,
+  lpName: LPCSTR,
+  dwFlags: DWORD,
+  dwDesiredAccess: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateEventExW*(
+  lpEventAttributes: LPSECURITY_ATTRIBUTES,
+  lpName: LPCWSTR,
+  dwFlags: DWORD,
+  dwDesiredAccess: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateSemaphoreExW*(
+  lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,
+  lInitialCount: LONG,
+  lMaximumCount: LONG,
+  lpName: LPCWSTR,
+  dwFlags: DWORD,
+  dwDesiredAccess: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InitializeCriticalSection*(
+  lpCriticalSection: LPCRITICAL_SECTION
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InitializeCriticalSectionAndSpinCount*(
+  lpCriticalSection: LPCRITICAL_SECTION, dwSpinCount: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetCriticalSectionSpinCount*(
+  lpCriticalSection: LPCRITICAL_SECTION, dwSpinCount: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WaitForSingleObject*(
+  hHandle: HANDLE, dwMilliseconds: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SleepEx*(
+  dwMilliseconds: DWORD, bAlertable: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateMutexA*(
+  lpMutexAttributes: LPSECURITY_ATTRIBUTES, bInitialOwner: WINBOOL, lpName: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateMutexW*(
+  lpMutexAttributes: LPSECURITY_ATTRIBUTES, bInitialOwner: WINBOOL, lpName: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateEventA*(
+  lpEventAttributes: LPSECURITY_ATTRIBUTES,
+  bManualReset: WINBOOL,
+  bInitialState: WINBOOL,
+  lpName: LPCSTR,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateEventW*(
+  lpEventAttributes: LPSECURITY_ATTRIBUTES,
+  bManualReset: WINBOOL,
+  bInitialState: WINBOOL,
+  lpName: LPCWSTR,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetWaitableTimer*(
+  hTimer: HANDLE,
+  lpDueTime: ptr LARGE_INTEGER,
+  lPeriod: LONG,
+  pfnCompletionRoutine: PTIMERAPCROUTINE,
+  lpArgToCompletionRoutine: LPVOID,
+  fResume: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CancelWaitableTimer*(
+  hTimer: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenWaitableTimerW*(
+  dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpTimerName: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnterSynchronizationBarrier*(
+  lpBarrier: LPSYNCHRONIZATION_BARRIER, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InitializeSynchronizationBarrier*(
+  lpBarrier: LPSYNCHRONIZATION_BARRIER, lTotalThreads: LONG, lSpinCount: LONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeleteSynchronizationBarrier*(
+  lpBarrier: LPSYNCHRONIZATION_BARRIER
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Sleep*(
+  dwMilliseconds: DWORD
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SignalObjectAndWait*(
+  hObjectToSignal: HANDLE,
+  hObjectToWaitOn: HANDLE,
+  dwMilliseconds: DWORD,
+  bAlertable: WINBOOL,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateWaitableTimerExW*(
+  lpTimerAttributes: LPSECURITY_ATTRIBUTES,
+  lpTimerName: LPCWSTR,
+  dwFlags: DWORD,
+  dwDesiredAccess: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetWaitableTimerEx*(
+  hTimer: HANDLE,
+  lpDueTime: ptr LARGE_INTEGER,
+  lPeriod: LONG,
+  pfnCompletionRoutine: PTIMERAPCROUTINE,
+  lpArgToCompletionRoutine: LPVOID,
+  WakeContext: PREASON_CONTEXT,
+  TolerableDelay: ULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemTime*(
+  lpSystemTime: LPSYSTEMTIME
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemTimeAsFileTime*(
+  lpSystemTimeAsFileTime: LPFILETIME
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetLocalTime*(
+  lpSystemTime: LPSYSTEMTIME
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNativeSystemInfo*(
+  lpSystemInfo: LPSYSTEM_INFO
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetTickCount64*(): ULONGLONG {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc GetVersion*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalMemoryStatusEx*(lpBuffer: LPMEMORYSTATUSEX): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetLocalTime*(lpSystemTime: ptr SYSTEMTIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemInfo*(lpSystemInfo: LPSYSTEM_INFO): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc GlobalMemoryStatusEx*(
+  lpBuffer: LPMEMORYSTATUSEX
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetLocalTime*(
+  lpSystemTime: ptr SYSTEMTIME
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemInfo*(
+  lpSystemInfo: LPSYSTEM_INFO
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetTickCount*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemTimeAdjustment*(lpTimeAdjustment: PDWORD, lpTimeIncrement: PDWORD, lpTimeAdjustmentDisabled: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemDirectoryA*(lpBuffer: LPSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemDirectoryW*(lpBuffer: LPWSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetWindowsDirectoryA*(lpBuffer: LPSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetWindowsDirectoryW*(lpBuffer: LPWSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemWindowsDirectoryA*(lpBuffer: LPSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemWindowsDirectoryW*(lpBuffer: LPWSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetComputerNameExA*(NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPSTR, nSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetComputerNameExW*(NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPWSTR, nSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetComputerNameExW*(NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetSystemTime*(lpSystemTime: ptr SYSTEMTIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetVersionExA*(lpVersionInformation: LPOSVERSIONINFOA): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetVersionExW*(lpVersionInformation: LPOSVERSIONINFOW): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetLogicalProcessorInformation*(Buffer: PSYSTEM_LOGICAL_PROCESSOR_INFORMATION, ReturnedLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemTimePreciseAsFileTime*(lpSystemTimeAsFileTime: LPFILETIME): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumSystemFirmwareTables*(FirmwareTableProviderSignature: DWORD, pFirmwareTableEnumBuffer: PVOID, BufferSize: DWORD): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemFirmwareTable*(FirmwareTableProviderSignature: DWORD, FirmwareTableID: DWORD, pFirmwareTableBuffer: PVOID, BufferSize: DWORD): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProductInfo*(dwOSMajorVersion: DWORD, dwOSMinorVersion: DWORD, dwSpMajorVersion: DWORD, dwSpMinorVersion: DWORD, pdwReturnedProductType: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetLogicalProcessorInformationEx*(RelationshipType: LOGICAL_PROCESSOR_RELATIONSHIP, Buffer: PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, ReturnedLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumaHighestNodeNumber*(HighestNodeNumber: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumaNodeProcessorMaskEx*(Node: USHORT, ProcessorMask: PGROUP_AFFINITY): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateThreadpool*(reserved: PVOID): PTP_POOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadpoolThreadMaximum*(ptpp: PTP_POOL, cthrdMost: DWORD): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadpoolThreadMinimum*(ptpp: PTP_POOL, cthrdMic: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadpoolStackInformation*(ptpp: PTP_POOL, ptpsi: PTP_POOL_STACK_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryThreadpoolStackInformation*(ptpp: PTP_POOL, ptpsi: PTP_POOL_STACK_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CloseThreadpool*(ptpp: PTP_POOL): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateThreadpoolCleanupGroup*(): PTP_CLEANUP_GROUP {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CloseThreadpoolCleanupGroupMembers*(ptpcg: PTP_CLEANUP_GROUP, fCancelPendingCallbacks: WINBOOL, pvCleanupContext: PVOID): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CloseThreadpoolCleanupGroup*(ptpcg: PTP_CLEANUP_GROUP): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetEventWhenCallbackReturns*(pci: PTP_CALLBACK_INSTANCE, evt: HANDLE): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReleaseSemaphoreWhenCallbackReturns*(pci: PTP_CALLBACK_INSTANCE, sem: HANDLE, crel: DWORD): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReleaseMutexWhenCallbackReturns*(pci: PTP_CALLBACK_INSTANCE, mut: HANDLE): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LeaveCriticalSectionWhenCallbackReturns*(pci: PTP_CALLBACK_INSTANCE, pcs: PCRITICAL_SECTION): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FreeLibraryWhenCallbackReturns*(pci: PTP_CALLBACK_INSTANCE, `mod`: HMODULE): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CallbackMayRunLong*(pci: PTP_CALLBACK_INSTANCE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DisassociateCurrentThreadFromCallback*(pci: PTP_CALLBACK_INSTANCE): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc TrySubmitThreadpoolCallback*(pfns: PTP_SIMPLE_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateThreadpoolWork*(pfnwk: PTP_WORK_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON): PTP_WORK {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SubmitThreadpoolWork*(pwk: PTP_WORK): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WaitForThreadpoolWorkCallbacks*(pwk: PTP_WORK, fCancelPendingCallbacks: WINBOOL): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CloseThreadpoolWork*(pwk: PTP_WORK): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateThreadpoolTimer*(pfnti: PTP_TIMER_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON): PTP_TIMER {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadpoolTimer*(pti: PTP_TIMER, pftDueTime: PFILETIME, msPeriod: DWORD, msWindowLength: DWORD): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsThreadpoolTimerSet*(pti: PTP_TIMER): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WaitForThreadpoolTimerCallbacks*(pti: PTP_TIMER, fCancelPendingCallbacks: WINBOOL): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CloseThreadpoolTimer*(pti: PTP_TIMER): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateThreadpoolWait*(pfnwa: PTP_WAIT_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON): PTP_WAIT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadpoolWait*(pwa: PTP_WAIT, h: HANDLE, pftTimeout: PFILETIME): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WaitForThreadpoolWaitCallbacks*(pwa: PTP_WAIT, fCancelPendingCallbacks: WINBOOL): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CloseThreadpoolWait*(pwa: PTP_WAIT): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateThreadpoolIo*(fl: HANDLE, pfnio: PTP_WIN32_IO_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON): PTP_IO {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc StartThreadpoolIo*(pio: PTP_IO): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CancelThreadpoolIo*(pio: PTP_IO): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WaitForThreadpoolIoCallbacks*(pio: PTP_IO, fCancelPendingCallbacks: WINBOOL): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CloseThreadpoolIo*(pio: PTP_IO): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadpoolTimerEx*(pti: PTP_TIMER, pftDueTime: PFILETIME, msPeriod: DWORD, msWindowLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadpoolWaitEx*(pwa: PTP_WAIT, h: HANDLE, pftTimeout: PFILETIME, Reserved: PVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateTimerQueueTimer*(phNewTimer: PHANDLE, TimerQueue: HANDLE, Callback: WAITORTIMERCALLBACK, Parameter: PVOID, DueTime: DWORD, Period: DWORD, Flags: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeleteTimerQueueTimer*(TimerQueue: HANDLE, Timer: HANDLE, CompletionEvent: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueueUserWorkItem*(Function: LPTHREAD_START_ROUTINE, Context: PVOID, Flags: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc UnregisterWaitEx*(WaitHandle: HANDLE, CompletionEvent: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc GetSystemTimeAdjustment*(
+  lpTimeAdjustment: PDWORD, lpTimeIncrement: PDWORD, lpTimeAdjustmentDisabled: PBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemDirectoryA*(
+  lpBuffer: LPSTR, uSize: UINT
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemDirectoryW*(
+  lpBuffer: LPWSTR, uSize: UINT
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetWindowsDirectoryA*(
+  lpBuffer: LPSTR, uSize: UINT
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetWindowsDirectoryW*(
+  lpBuffer: LPWSTR, uSize: UINT
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemWindowsDirectoryA*(
+  lpBuffer: LPSTR, uSize: UINT
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemWindowsDirectoryW*(
+  lpBuffer: LPWSTR, uSize: UINT
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetComputerNameExA*(
+  NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPSTR, nSize: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetComputerNameExW*(
+  NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPWSTR, nSize: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetComputerNameExW*(
+  NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetSystemTime*(
+  lpSystemTime: ptr SYSTEMTIME
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetVersionExA*(
+  lpVersionInformation: LPOSVERSIONINFOA
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetVersionExW*(
+  lpVersionInformation: LPOSVERSIONINFOW
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetLogicalProcessorInformation*(
+  Buffer: PSYSTEM_LOGICAL_PROCESSOR_INFORMATION, ReturnedLength: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemTimePreciseAsFileTime*(
+  lpSystemTimeAsFileTime: LPFILETIME
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumSystemFirmwareTables*(
+  FirmwareTableProviderSignature: DWORD,
+  pFirmwareTableEnumBuffer: PVOID,
+  BufferSize: DWORD,
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemFirmwareTable*(
+  FirmwareTableProviderSignature: DWORD,
+  FirmwareTableID: DWORD,
+  pFirmwareTableBuffer: PVOID,
+  BufferSize: DWORD,
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProductInfo*(
+  dwOSMajorVersion: DWORD,
+  dwOSMinorVersion: DWORD,
+  dwSpMajorVersion: DWORD,
+  dwSpMinorVersion: DWORD,
+  pdwReturnedProductType: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetLogicalProcessorInformationEx*(
+  RelationshipType: LOGICAL_PROCESSOR_RELATIONSHIP,
+  Buffer: PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX,
+  ReturnedLength: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNumaHighestNodeNumber*(
+  HighestNodeNumber: PULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNumaNodeProcessorMaskEx*(
+  Node: USHORT, ProcessorMask: PGROUP_AFFINITY
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateThreadpool*(
+  reserved: PVOID
+): PTP_POOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadpoolThreadMaximum*(
+  ptpp: PTP_POOL, cthrdMost: DWORD
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadpoolThreadMinimum*(
+  ptpp: PTP_POOL, cthrdMic: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadpoolStackInformation*(
+  ptpp: PTP_POOL, ptpsi: PTP_POOL_STACK_INFORMATION
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryThreadpoolStackInformation*(
+  ptpp: PTP_POOL, ptpsi: PTP_POOL_STACK_INFORMATION
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CloseThreadpool*(
+  ptpp: PTP_POOL
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateThreadpoolCleanupGroup*(): PTP_CLEANUP_GROUP {.
+  winapi, stdcall, dynlib: "kernel32", importc
+.}
+
+proc CloseThreadpoolCleanupGroupMembers*(
+  ptpcg: PTP_CLEANUP_GROUP, fCancelPendingCallbacks: WINBOOL, pvCleanupContext: PVOID
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CloseThreadpoolCleanupGroup*(
+  ptpcg: PTP_CLEANUP_GROUP
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetEventWhenCallbackReturns*(
+  pci: PTP_CALLBACK_INSTANCE, evt: HANDLE
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReleaseSemaphoreWhenCallbackReturns*(
+  pci: PTP_CALLBACK_INSTANCE, sem: HANDLE, crel: DWORD
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReleaseMutexWhenCallbackReturns*(
+  pci: PTP_CALLBACK_INSTANCE, mut: HANDLE
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LeaveCriticalSectionWhenCallbackReturns*(
+  pci: PTP_CALLBACK_INSTANCE, pcs: PCRITICAL_SECTION
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FreeLibraryWhenCallbackReturns*(
+  pci: PTP_CALLBACK_INSTANCE, `mod`: HMODULE
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CallbackMayRunLong*(
+  pci: PTP_CALLBACK_INSTANCE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DisassociateCurrentThreadFromCallback*(
+  pci: PTP_CALLBACK_INSTANCE
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc TrySubmitThreadpoolCallback*(
+  pfns: PTP_SIMPLE_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateThreadpoolWork*(
+  pfnwk: PTP_WORK_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON
+): PTP_WORK {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SubmitThreadpoolWork*(
+  pwk: PTP_WORK
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WaitForThreadpoolWorkCallbacks*(
+  pwk: PTP_WORK, fCancelPendingCallbacks: WINBOOL
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CloseThreadpoolWork*(
+  pwk: PTP_WORK
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateThreadpoolTimer*(
+  pfnti: PTP_TIMER_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON
+): PTP_TIMER {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadpoolTimer*(
+  pti: PTP_TIMER, pftDueTime: PFILETIME, msPeriod: DWORD, msWindowLength: DWORD
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsThreadpoolTimerSet*(
+  pti: PTP_TIMER
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WaitForThreadpoolTimerCallbacks*(
+  pti: PTP_TIMER, fCancelPendingCallbacks: WINBOOL
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CloseThreadpoolTimer*(
+  pti: PTP_TIMER
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateThreadpoolWait*(
+  pfnwa: PTP_WAIT_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON
+): PTP_WAIT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadpoolWait*(
+  pwa: PTP_WAIT, h: HANDLE, pftTimeout: PFILETIME
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WaitForThreadpoolWaitCallbacks*(
+  pwa: PTP_WAIT, fCancelPendingCallbacks: WINBOOL
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CloseThreadpoolWait*(
+  pwa: PTP_WAIT
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateThreadpoolIo*(
+  fl: HANDLE, pfnio: PTP_WIN32_IO_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON
+): PTP_IO {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc StartThreadpoolIo*(
+  pio: PTP_IO
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CancelThreadpoolIo*(
+  pio: PTP_IO
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WaitForThreadpoolIoCallbacks*(
+  pio: PTP_IO, fCancelPendingCallbacks: WINBOOL
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CloseThreadpoolIo*(
+  pio: PTP_IO
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadpoolTimerEx*(
+  pti: PTP_TIMER, pftDueTime: PFILETIME, msPeriod: DWORD, msWindowLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadpoolWaitEx*(
+  pwa: PTP_WAIT, h: HANDLE, pftTimeout: PFILETIME, Reserved: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateTimerQueueTimer*(
+  phNewTimer: PHANDLE,
+  TimerQueue: HANDLE,
+  Callback: WAITORTIMERCALLBACK,
+  Parameter: PVOID,
+  DueTime: DWORD,
+  Period: DWORD,
+  Flags: ULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeleteTimerQueueTimer*(
+  TimerQueue: HANDLE, Timer: HANDLE, CompletionEvent: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueueUserWorkItem*(
+  Function: LPTHREAD_START_ROUTINE, Context: PVOID, Flags: ULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc UnregisterWaitEx*(
+  WaitHandle: HANDLE, CompletionEvent: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc CreateTimerQueue*(): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ChangeTimerQueueTimer*(TimerQueue: HANDLE, Timer: HANDLE, DueTime: ULONG, Period: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeleteTimerQueueEx*(TimerQueue: HANDLE, CompletionEvent: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc ChangeTimerQueueTimer*(
+  TimerQueue: HANDLE, Timer: HANDLE, DueTime: ULONG, Period: ULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeleteTimerQueueEx*(
+  TimerQueue: HANDLE, CompletionEvent: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc EncodePointer*(Ptr: PVOID): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc DecodePointer*(Ptr: PVOID): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EncodeSystemPointer*(Ptr: PVOID): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DecodeSystemPointer*(Ptr: PVOID): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Beep*(dwFreq: DWORD, dwDuration: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Wow64DisableWow64FsRedirection*(OldValue: ptr PVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Wow64RevertWow64FsRedirection*(OlValue: PVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsWow64Process*(hProcess: HANDLE, Wow64Process: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalAlloc*(uFlags: UINT, dwBytes: SIZE_T): HGLOBAL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalReAlloc*(hMem: HGLOBAL, dwBytes: SIZE_T, uFlags: UINT): HGLOBAL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc EncodeSystemPointer*(
+  Ptr: PVOID
+): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DecodeSystemPointer*(
+  Ptr: PVOID
+): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Beep*(
+  dwFreq: DWORD, dwDuration: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Wow64DisableWow64FsRedirection*(
+  OldValue: ptr PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Wow64RevertWow64FsRedirection*(
+  OlValue: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsWow64Process*(
+  hProcess: HANDLE, Wow64Process: PBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalAlloc*(
+  uFlags: UINT, dwBytes: SIZE_T
+): HGLOBAL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalReAlloc*(
+  hMem: HGLOBAL, dwBytes: SIZE_T, uFlags: UINT
+): HGLOBAL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GlobalSize*(hMem: HGLOBAL): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc GlobalFlags*(hMem: HGLOBAL): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc GlobalLock*(hMem: HGLOBAL): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalHandle*(pMem: LPCVOID): HGLOBAL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalUnlock*(hMem: HGLOBAL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalFree*(hMem: HGLOBAL): HGLOBAL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalCompact*(dwMinFree: DWORD): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc GlobalHandle*(
+  pMem: LPCVOID
+): HGLOBAL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalUnlock*(
+  hMem: HGLOBAL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalFree*(
+  hMem: HGLOBAL
+): HGLOBAL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalCompact*(
+  dwMinFree: DWORD
+): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GlobalFix*(hMem: HGLOBAL): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc GlobalUnfix*(hMem: HGLOBAL): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc GlobalWire*(hMem: HGLOBAL): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalUnWire*(hMem: HGLOBAL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalMemoryStatus*(lpBuffer: LPMEMORYSTATUS): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LocalAlloc*(uFlags: UINT, uBytes: SIZE_T): HLOCAL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LocalReAlloc*(hMem: HLOCAL, uBytes: SIZE_T, uFlags: UINT): HLOCAL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc GlobalUnWire*(
+  hMem: HGLOBAL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalMemoryStatus*(
+  lpBuffer: LPMEMORYSTATUS
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LocalAlloc*(
+  uFlags: UINT, uBytes: SIZE_T
+): HLOCAL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LocalReAlloc*(
+  hMem: HLOCAL, uBytes: SIZE_T, uFlags: UINT
+): HLOCAL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc LocalLock*(hMem: HLOCAL): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LocalHandle*(pMem: LPCVOID): HLOCAL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LocalUnlock*(hMem: HLOCAL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc LocalHandle*(
+  pMem: LPCVOID
+): HLOCAL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LocalUnlock*(
+  hMem: HLOCAL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc LocalSize*(hMem: HLOCAL): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc LocalFlags*(hMem: HLOCAL): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc LocalFree*(hMem: HLOCAL): HLOCAL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LocalShrink*(hMem: HLOCAL, cbNewSize: UINT): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LocalCompact*(uMinFree: UINT): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc VirtualAllocExNuma*(hProcess: HANDLE, lpAddress: LPVOID, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD, nndPreferred: DWORD): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessorSystemCycleTime*(Group: USHORT, Buffer: PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION, ReturnedLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetPhysicallyInstalledSystemMemory*(TotalMemoryInKilobytes: PULONGLONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetBinaryTypeA*(lpApplicationName: LPCSTR, lpBinaryType: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetBinaryTypeW*(lpApplicationName: LPCWSTR, lpBinaryType: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetShortPathNameA*(lpszLongPath: LPCSTR, lpszShortPath: LPSTR, cchBuffer: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetLongPathNameTransactedA*(lpszShortPath: LPCSTR, lpszLongPath: LPSTR, cchBuffer: DWORD, hTransaction: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetLongPathNameTransactedW*(lpszShortPath: LPCWSTR, lpszLongPath: LPWSTR, cchBuffer: DWORD, hTransaction: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessAffinityMask*(hProcess: HANDLE, lpProcessAffinityMask: PDWORD_PTR, lpSystemAffinityMask: PDWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetProcessAffinityMask*(hProcess: HANDLE, dwProcessAffinityMask: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessIoCounters*(hProcess: HANDLE, lpIoCounters: PIO_COUNTERS): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessWorkingSetSize*(hProcess: HANDLE, lpMinimumWorkingSetSize: PSIZE_T, lpMaximumWorkingSetSize: PSIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetProcessWorkingSetSize*(hProcess: HANDLE, dwMinimumWorkingSetSize: SIZE_T, dwMaximumWorkingSetSize: SIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc LocalShrink*(
+  hMem: HLOCAL, cbNewSize: UINT
+): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LocalCompact*(
+  uMinFree: UINT
+): SIZE_T {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc VirtualAllocExNuma*(
+  hProcess: HANDLE,
+  lpAddress: LPVOID,
+  dwSize: SIZE_T,
+  flAllocationType: DWORD,
+  flProtect: DWORD,
+  nndPreferred: DWORD,
+): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessorSystemCycleTime*(
+  Group: USHORT,
+  Buffer: PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION,
+  ReturnedLength: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetPhysicallyInstalledSystemMemory*(
+  TotalMemoryInKilobytes: PULONGLONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetBinaryTypeA*(
+  lpApplicationName: LPCSTR, lpBinaryType: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetBinaryTypeW*(
+  lpApplicationName: LPCWSTR, lpBinaryType: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetShortPathNameA*(
+  lpszLongPath: LPCSTR, lpszShortPath: LPSTR, cchBuffer: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetLongPathNameTransactedA*(
+  lpszShortPath: LPCSTR, lpszLongPath: LPSTR, cchBuffer: DWORD, hTransaction: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetLongPathNameTransactedW*(
+  lpszShortPath: LPCWSTR, lpszLongPath: LPWSTR, cchBuffer: DWORD, hTransaction: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessAffinityMask*(
+  hProcess: HANDLE, lpProcessAffinityMask: PDWORD_PTR, lpSystemAffinityMask: PDWORD_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetProcessAffinityMask*(
+  hProcess: HANDLE, dwProcessAffinityMask: DWORD_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessIoCounters*(
+  hProcess: HANDLE, lpIoCounters: PIO_COUNTERS
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessWorkingSetSize*(
+  hProcess: HANDLE, lpMinimumWorkingSetSize: PSIZE_T, lpMaximumWorkingSetSize: PSIZE_T
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetProcessWorkingSetSize*(
+  hProcess: HANDLE, dwMinimumWorkingSetSize: SIZE_T, dwMaximumWorkingSetSize: SIZE_T
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc FatalExit*(ExitCode: int32): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetEnvironmentStringsA*(NewEnvironment: LPCH): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RaiseFailFastException*(pExceptionRecord: PEXCEPTION_RECORD, pContextRecord: PCONTEXT, dwFlags: DWORD): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadIdealProcessor*(hThread: HANDLE, dwIdealProcessor: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateFiber*(dwStackSize: SIZE_T, lpStartAddress: LPFIBER_START_ROUTINE, lpParameter: LPVOID): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateFiberEx*(dwStackCommitSize: SIZE_T, dwStackReserveSize: SIZE_T, dwFlags: DWORD, lpStartAddress: LPFIBER_START_ROUTINE, lpParameter: LPVOID): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeleteFiber*(lpFiber: LPVOID): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ConvertThreadToFiber*(lpParameter: LPVOID): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ConvertThreadToFiberEx*(lpParameter: LPVOID, dwFlags: DWORD): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc SetEnvironmentStringsA*(
+  NewEnvironment: LPCH
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RaiseFailFastException*(
+  pExceptionRecord: PEXCEPTION_RECORD, pContextRecord: PCONTEXT, dwFlags: DWORD
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadIdealProcessor*(
+  hThread: HANDLE, dwIdealProcessor: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateFiber*(
+  dwStackSize: SIZE_T, lpStartAddress: LPFIBER_START_ROUTINE, lpParameter: LPVOID
+): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateFiberEx*(
+  dwStackCommitSize: SIZE_T,
+  dwStackReserveSize: SIZE_T,
+  dwFlags: DWORD,
+  lpStartAddress: LPFIBER_START_ROUTINE,
+  lpParameter: LPVOID,
+): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeleteFiber*(
+  lpFiber: LPVOID
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ConvertThreadToFiber*(
+  lpParameter: LPVOID
+): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ConvertThreadToFiberEx*(
+  lpParameter: LPVOID, dwFlags: DWORD
+): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc ConvertFiberToThread*(): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SwitchToFiber*(lpFiber: LPVOID): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadAffinityMask*(hThread: HANDLE, dwThreadAffinityMask: DWORD_PTR): DWORD_PTR {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetThreadInformation*(hThread: HANDLE, ThreadInformationClass: THREAD_INFORMATION_CLASS, ThreadInformation: LPVOID, ThreadInformationSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadInformation*(hThread: HANDLE, ThreadInformationClass: THREAD_INFORMATION_CLASS, ThreadInformation: LPVOID, ThreadInformationSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessInformation*(hProcess: HANDLE, ProcessInformationClass: PROCESS_INFORMATION_CLASS, ProcessInformation: LPVOID, ProcessInformationSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetProcessInformation*(hProcess: HANDLE, ProcessInformationClass: PROCESS_INFORMATION_CLASS, ProcessInformation: LPVOID, ProcessInformationSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetProcessDEPPolicy*(dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessDEPPolicy*(hProcess: HANDLE, lpFlags: LPDWORD, lpPermanent: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetProcessPriorityBoost*(hProcess: HANDLE, bDisablePriorityBoost: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessPriorityBoost*(hProcess: HANDLE, pDisablePriorityBoost: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RequestWakeupLatency*(latency: LATENCY_TIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsSystemResumeAutomatic*(): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetThreadIOPendingFlag*(hThread: HANDLE, lpIOIsPending: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc SwitchToFiber*(
+  lpFiber: LPVOID
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadAffinityMask*(
+  hThread: HANDLE, dwThreadAffinityMask: DWORD_PTR
+): DWORD_PTR {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetThreadInformation*(
+  hThread: HANDLE,
+  ThreadInformationClass: THREAD_INFORMATION_CLASS,
+  ThreadInformation: LPVOID,
+  ThreadInformationSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadInformation*(
+  hThread: HANDLE,
+  ThreadInformationClass: THREAD_INFORMATION_CLASS,
+  ThreadInformation: LPVOID,
+  ThreadInformationSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessInformation*(
+  hProcess: HANDLE,
+  ProcessInformationClass: PROCESS_INFORMATION_CLASS,
+  ProcessInformation: LPVOID,
+  ProcessInformationSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetProcessInformation*(
+  hProcess: HANDLE,
+  ProcessInformationClass: PROCESS_INFORMATION_CLASS,
+  ProcessInformation: LPVOID,
+  ProcessInformationSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetProcessDEPPolicy*(
+  dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessDEPPolicy*(
+  hProcess: HANDLE, lpFlags: LPDWORD, lpPermanent: PBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetProcessPriorityBoost*(
+  hProcess: HANDLE, bDisablePriorityBoost: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessPriorityBoost*(
+  hProcess: HANDLE, pDisablePriorityBoost: PBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RequestWakeupLatency*(
+  latency: LATENCY_TIME
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsSystemResumeAutomatic*(): WINBOOL {.
+  winapi, stdcall, dynlib: "kernel32", importc
+.}
+
+proc GetThreadIOPendingFlag*(
+  hThread: HANDLE, lpIOIsPending: PBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 when winimCpu64:
-  type
-    LPLDT_ENTRY* = LPVOID
+  type LPLDT_ENTRY* = LPVOID
 when winimCpu32:
-  type
-    LPLDT_ENTRY* = PLDT_ENTRY
-proc GetThreadSelectorEntry*(hThread: HANDLE, dwSelector: DWORD, lpSelectorEntry: LPLDT_ENTRY): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadExecutionState*(esFlags: EXECUTION_STATE): EXECUTION_STATE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc PowerCreateRequest*(Context: PREASON_CONTEXT): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc PowerSetRequest*(PowerRequest: HANDLE, RequestType: POWER_REQUEST_TYPE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc PowerClearRequest*(PowerRequest: HANDLE, RequestType: POWER_REQUEST_TYPE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFileCompletionNotificationModes*(FileHandle: HANDLE, Flags: UCHAR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFileIoOverlappedRange*(FileHandle: HANDLE, OverlappedRangeStart: PUCHAR, Length: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+  type LPLDT_ENTRY* = PLDT_ENTRY
+proc GetThreadSelectorEntry*(
+  hThread: HANDLE, dwSelector: DWORD, lpSelectorEntry: LPLDT_ENTRY
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadExecutionState*(
+  esFlags: EXECUTION_STATE
+): EXECUTION_STATE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc PowerCreateRequest*(
+  Context: PREASON_CONTEXT
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc PowerSetRequest*(
+  PowerRequest: HANDLE, RequestType: POWER_REQUEST_TYPE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc PowerClearRequest*(
+  PowerRequest: HANDLE, RequestType: POWER_REQUEST_TYPE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFileCompletionNotificationModes*(
+  FileHandle: HANDLE, Flags: UCHAR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFileIoOverlappedRange*(
+  FileHandle: HANDLE, OverlappedRangeStart: PUCHAR, Length: ULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetThreadErrorMode*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadErrorMode*(dwNewMode: DWORD, lpOldMode: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Wow64GetThreadContext*(hThread: HANDLE, lpContext: PWOW64_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Wow64SetThreadContext*(hThread: HANDLE, lpContext: ptr WOW64_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Wow64GetThreadSelectorEntry*(hThread: HANDLE, dwSelector: DWORD, lpSelectorEntry: PWOW64_LDT_ENTRY): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Wow64SuspendThread*(hThread: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DebugSetProcessKillOnExit*(KillOnExit: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DebugBreakProcess*(Process: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc PulseEvent*(hEvent: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WaitForMultipleObjects*(nCount: DWORD, lpHandles: ptr HANDLE, bWaitAll: WINBOOL, dwMilliseconds: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalDeleteAtom*(nAtom: ATOM): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InitAtomTable*(nSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc SetThreadErrorMode*(
+  dwNewMode: DWORD, lpOldMode: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Wow64GetThreadContext*(
+  hThread: HANDLE, lpContext: PWOW64_CONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Wow64SetThreadContext*(
+  hThread: HANDLE, lpContext: ptr WOW64_CONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Wow64GetThreadSelectorEntry*(
+  hThread: HANDLE, dwSelector: DWORD, lpSelectorEntry: PWOW64_LDT_ENTRY
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Wow64SuspendThread*(
+  hThread: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DebugSetProcessKillOnExit*(
+  KillOnExit: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DebugBreakProcess*(
+  Process: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc PulseEvent*(
+  hEvent: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WaitForMultipleObjects*(
+  nCount: DWORD, lpHandles: ptr HANDLE, bWaitAll: WINBOOL, dwMilliseconds: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalDeleteAtom*(
+  nAtom: ATOM
+): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InitAtomTable*(
+  nSize: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc DeleteAtom*(nAtom: ATOM): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetHandleCount*(uNumber: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RequestDeviceWakeup*(hDevice: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CancelDeviceWakeupRequest*(hDevice: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDevicePowerState*(hDevice: HANDLE, pfOn: ptr WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetMessageWaitingIndicator*(hMsgIndicator: HANDLE, ulMsgCount: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFileShortNameA*(hFile: HANDLE, lpShortName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFileShortNameW*(hFile: HANDLE, lpShortName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LoadModule*(lpModuleName: LPCSTR, lpParameterBlock: LPVOID): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WinExec*(lpCmdLine: LPCSTR, uCmdShow: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ClearCommBreak*(hFile: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ClearCommError*(hFile: HANDLE, lpErrors: LPDWORD, lpStat: LPCOMSTAT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetupComm*(hFile: HANDLE, dwInQueue: DWORD, dwOutQueue: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EscapeCommFunction*(hFile: HANDLE, dwFunc: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCommConfig*(hCommDev: HANDLE, lpCC: LPCOMMCONFIG, lpdwSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCommMask*(hFile: HANDLE, lpEvtMask: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCommProperties*(hFile: HANDLE, lpCommProp: LPCOMMPROP): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCommModemStatus*(hFile: HANDLE, lpModemStat: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCommState*(hFile: HANDLE, lpDCB: LPDCB): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCommTimeouts*(hFile: HANDLE, lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc PurgeComm*(hFile: HANDLE, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetCommBreak*(hFile: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetCommConfig*(hCommDev: HANDLE, lpCC: LPCOMMCONFIG, dwSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetCommMask*(hFile: HANDLE, dwEvtMask: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetCommState*(hFile: HANDLE, lpDCB: LPDCB): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetCommTimeouts*(hFile: HANDLE, lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc TransmitCommChar*(hFile: HANDLE, cChar: char): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WaitCommEvent*(hFile: HANDLE, lpEvtMask: LPDWORD, lpOverlapped: LPOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetTapePosition*(hDevice: HANDLE, dwPositionMethod: DWORD, dwPartition: DWORD, dwOffsetLow: DWORD, dwOffsetHigh: DWORD, bImmediate: WINBOOL): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetTapePosition*(hDevice: HANDLE, dwPositionType: DWORD, lpdwPartition: LPDWORD, lpdwOffsetLow: LPDWORD, lpdwOffsetHigh: LPDWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc PrepareTape*(hDevice: HANDLE, dwOperation: DWORD, bImmediate: WINBOOL): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EraseTape*(hDevice: HANDLE, dwEraseType: DWORD, bImmediate: WINBOOL): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateTapePartition*(hDevice: HANDLE, dwPartitionMethod: DWORD, dwCount: DWORD, dwSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteTapemark*(hDevice: HANDLE, dwTapemarkType: DWORD, dwTapemarkCount: DWORD, bImmediate: WINBOOL): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetTapeStatus*(hDevice: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetTapeParameters*(hDevice: HANDLE, dwOperation: DWORD, lpdwSize: LPDWORD, lpTapeInformation: LPVOID): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetTapeParameters*(hDevice: HANDLE, dwOperation: DWORD, lpTapeInformation: LPVOID): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemDEPPolicy*(): DEP_SYSTEM_POLICY_TYPE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemRegistryQuota*(pdwQuotaAllowed: PDWORD, pdwQuotaUsed: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemTimes*(lpIdleTime: LPFILETIME, lpKernelTime: LPFILETIME, lpUserTime: LPFILETIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FileTimeToDosDateTime*(lpFileTime: ptr FILETIME, lpFatDate: LPWORD, lpFatTime: LPWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DosDateTimeToFileTime*(wFatDate: WORD, wFatTime: WORD, lpFileTime: LPFILETIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetSystemTimeAdjustment*(dwTimeAdjustment: DWORD, bTimeAdjustmentDisabled: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MulDiv*(nNumber: int32, nNumerator: int32, nDenominator: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FormatMessageA*(dwFlags: DWORD, lpSource: LPCVOID, dwMessageId: DWORD, dwLanguageId: DWORD, lpBuffer: LPSTR, nSize: DWORD, Arguments: ptr va_list): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FormatMessageW*(dwFlags: DWORD, lpSource: LPCVOID, dwMessageId: DWORD, dwLanguageId: DWORD, lpBuffer: LPWSTR, nSize: DWORD, Arguments: ptr va_list): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNamedPipeInfo*(hNamedPipe: HANDLE, lpFlags: LPDWORD, lpOutBufferSize: LPDWORD, lpInBufferSize: LPDWORD, lpMaxInstances: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateMailslotA*(lpName: LPCSTR, nMaxMessageSize: DWORD, lReadTimeout: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateMailslotW*(lpName: LPCWSTR, nMaxMessageSize: DWORD, lReadTimeout: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetMailslotInfo*(hMailslot: HANDLE, lpMaxMessageSize: LPDWORD, lpNextSize: LPDWORD, lpMessageCount: LPDWORD, lpReadTimeout: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetMailslotInfo*(hMailslot: HANDLE, lReadTimeout: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EncryptFileA*(lpFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc EncryptFileW*(lpFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc DecryptFileA*(lpFileName: LPCSTR, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc DecryptFileW*(lpFileName: LPCWSTR, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc FileEncryptionStatusA*(lpFileName: LPCSTR, lpStatus: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc FileEncryptionStatusW*(lpFileName: LPCWSTR, lpStatus: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc OpenEncryptedFileRawA*(lpFileName: LPCSTR, ulFlags: ULONG, pvContext: ptr PVOID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc OpenEncryptedFileRawW*(lpFileName: LPCWSTR, ulFlags: ULONG, pvContext: ptr PVOID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ReadEncryptedFileRaw*(pfExportCallback: PFE_EXPORT_FUNC, pvCallbackContext: PVOID, pvContext: PVOID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc WriteEncryptedFileRaw*(pfImportCallback: PFE_IMPORT_FUNC, pvCallbackContext: PVOID, pvContext: PVOID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CloseEncryptedFileRaw*(pvContext: PVOID): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc lstrcmpA*(lpString1: LPCSTR, lpString2: LPCSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc lstrcmpW*(lpString1: LPCWSTR, lpString2: LPCWSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc lstrcmpiA*(lpString1: LPCSTR, lpString2: LPCSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc lstrcmpiW*(lpString1: LPCWSTR, lpString2: LPCWSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc lstrcpynA*(lpString1: LPSTR, lpString2: LPCSTR, iMaxLength: int32): LPSTR {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc lstrcpynW*(lpString1: LPWSTR, lpString2: LPCWSTR, iMaxLength: int32): LPWSTR {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc lstrcpyA*(lpString1: LPSTR, lpString2: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc lstrcpyW*(lpString1: LPWSTR, lpString2: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc lstrcatA*(lpString1: LPSTR, lpString2: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc lstrcatW*(lpString1: LPWSTR, lpString2: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc SetHandleCount*(
+  uNumber: UINT
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RequestDeviceWakeup*(
+  hDevice: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CancelDeviceWakeupRequest*(
+  hDevice: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDevicePowerState*(
+  hDevice: HANDLE, pfOn: ptr WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetMessageWaitingIndicator*(
+  hMsgIndicator: HANDLE, ulMsgCount: ULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFileShortNameA*(
+  hFile: HANDLE, lpShortName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFileShortNameW*(
+  hFile: HANDLE, lpShortName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LoadModule*(
+  lpModuleName: LPCSTR, lpParameterBlock: LPVOID
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WinExec*(
+  lpCmdLine: LPCSTR, uCmdShow: UINT
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ClearCommBreak*(
+  hFile: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ClearCommError*(
+  hFile: HANDLE, lpErrors: LPDWORD, lpStat: LPCOMSTAT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetupComm*(
+  hFile: HANDLE, dwInQueue: DWORD, dwOutQueue: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EscapeCommFunction*(
+  hFile: HANDLE, dwFunc: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCommConfig*(
+  hCommDev: HANDLE, lpCC: LPCOMMCONFIG, lpdwSize: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCommMask*(
+  hFile: HANDLE, lpEvtMask: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCommProperties*(
+  hFile: HANDLE, lpCommProp: LPCOMMPROP
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCommModemStatus*(
+  hFile: HANDLE, lpModemStat: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCommState*(
+  hFile: HANDLE, lpDCB: LPDCB
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCommTimeouts*(
+  hFile: HANDLE, lpCommTimeouts: LPCOMMTIMEOUTS
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc PurgeComm*(
+  hFile: HANDLE, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetCommBreak*(
+  hFile: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetCommConfig*(
+  hCommDev: HANDLE, lpCC: LPCOMMCONFIG, dwSize: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetCommMask*(
+  hFile: HANDLE, dwEvtMask: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetCommState*(
+  hFile: HANDLE, lpDCB: LPDCB
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetCommTimeouts*(
+  hFile: HANDLE, lpCommTimeouts: LPCOMMTIMEOUTS
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc TransmitCommChar*(
+  hFile: HANDLE, cChar: char
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WaitCommEvent*(
+  hFile: HANDLE, lpEvtMask: LPDWORD, lpOverlapped: LPOVERLAPPED
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetTapePosition*(
+  hDevice: HANDLE,
+  dwPositionMethod: DWORD,
+  dwPartition: DWORD,
+  dwOffsetLow: DWORD,
+  dwOffsetHigh: DWORD,
+  bImmediate: WINBOOL,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetTapePosition*(
+  hDevice: HANDLE,
+  dwPositionType: DWORD,
+  lpdwPartition: LPDWORD,
+  lpdwOffsetLow: LPDWORD,
+  lpdwOffsetHigh: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc PrepareTape*(
+  hDevice: HANDLE, dwOperation: DWORD, bImmediate: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EraseTape*(
+  hDevice: HANDLE, dwEraseType: DWORD, bImmediate: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateTapePartition*(
+  hDevice: HANDLE, dwPartitionMethod: DWORD, dwCount: DWORD, dwSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteTapemark*(
+  hDevice: HANDLE, dwTapemarkType: DWORD, dwTapemarkCount: DWORD, bImmediate: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetTapeStatus*(
+  hDevice: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetTapeParameters*(
+  hDevice: HANDLE, dwOperation: DWORD, lpdwSize: LPDWORD, lpTapeInformation: LPVOID
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetTapeParameters*(
+  hDevice: HANDLE, dwOperation: DWORD, lpTapeInformation: LPVOID
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemDEPPolicy*(): DEP_SYSTEM_POLICY_TYPE {.
+  winapi, stdcall, dynlib: "kernel32", importc
+.}
+
+proc GetSystemRegistryQuota*(
+  pdwQuotaAllowed: PDWORD, pdwQuotaUsed: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemTimes*(
+  lpIdleTime: LPFILETIME, lpKernelTime: LPFILETIME, lpUserTime: LPFILETIME
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FileTimeToDosDateTime*(
+  lpFileTime: ptr FILETIME, lpFatDate: LPWORD, lpFatTime: LPWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DosDateTimeToFileTime*(
+  wFatDate: WORD, wFatTime: WORD, lpFileTime: LPFILETIME
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetSystemTimeAdjustment*(
+  dwTimeAdjustment: DWORD, bTimeAdjustmentDisabled: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MulDiv*(
+  nNumber: int32, nNumerator: int32, nDenominator: int32
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FormatMessageA*(
+  dwFlags: DWORD,
+  lpSource: LPCVOID,
+  dwMessageId: DWORD,
+  dwLanguageId: DWORD,
+  lpBuffer: LPSTR,
+  nSize: DWORD,
+  Arguments: ptr va_list,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FormatMessageW*(
+  dwFlags: DWORD,
+  lpSource: LPCVOID,
+  dwMessageId: DWORD,
+  dwLanguageId: DWORD,
+  lpBuffer: LPWSTR,
+  nSize: DWORD,
+  Arguments: ptr va_list,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNamedPipeInfo*(
+  hNamedPipe: HANDLE,
+  lpFlags: LPDWORD,
+  lpOutBufferSize: LPDWORD,
+  lpInBufferSize: LPDWORD,
+  lpMaxInstances: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateMailslotA*(
+  lpName: LPCSTR,
+  nMaxMessageSize: DWORD,
+  lReadTimeout: DWORD,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateMailslotW*(
+  lpName: LPCWSTR,
+  nMaxMessageSize: DWORD,
+  lReadTimeout: DWORD,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetMailslotInfo*(
+  hMailslot: HANDLE,
+  lpMaxMessageSize: LPDWORD,
+  lpNextSize: LPDWORD,
+  lpMessageCount: LPDWORD,
+  lpReadTimeout: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetMailslotInfo*(
+  hMailslot: HANDLE, lReadTimeout: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EncryptFileA*(
+  lpFileName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc EncryptFileW*(
+  lpFileName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc DecryptFileA*(
+  lpFileName: LPCSTR, dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc DecryptFileW*(
+  lpFileName: LPCWSTR, dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc FileEncryptionStatusA*(
+  lpFileName: LPCSTR, lpStatus: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc FileEncryptionStatusW*(
+  lpFileName: LPCWSTR, lpStatus: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc OpenEncryptedFileRawA*(
+  lpFileName: LPCSTR, ulFlags: ULONG, pvContext: ptr PVOID
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc OpenEncryptedFileRawW*(
+  lpFileName: LPCWSTR, ulFlags: ULONG, pvContext: ptr PVOID
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ReadEncryptedFileRaw*(
+  pfExportCallback: PFE_EXPORT_FUNC, pvCallbackContext: PVOID, pvContext: PVOID
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc WriteEncryptedFileRaw*(
+  pfImportCallback: PFE_IMPORT_FUNC, pvCallbackContext: PVOID, pvContext: PVOID
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CloseEncryptedFileRaw*(
+  pvContext: PVOID
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc lstrcmpA*(
+  lpString1: LPCSTR, lpString2: LPCSTR
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc lstrcmpW*(
+  lpString1: LPCWSTR, lpString2: LPCWSTR
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc lstrcmpiA*(
+  lpString1: LPCSTR, lpString2: LPCSTR
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc lstrcmpiW*(
+  lpString1: LPCWSTR, lpString2: LPCWSTR
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc lstrcpynA*(
+  lpString1: LPSTR, lpString2: LPCSTR, iMaxLength: int32
+): LPSTR {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc lstrcpynW*(
+  lpString1: LPWSTR, lpString2: LPCWSTR, iMaxLength: int32
+): LPWSTR {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc lstrcpyA*(
+  lpString1: LPSTR, lpString2: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc lstrcpyW*(
+  lpString1: LPWSTR, lpString2: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc lstrcatA*(
+  lpString1: LPSTR, lpString2: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc lstrcatW*(
+  lpString1: LPWSTR, lpString2: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc lstrlenA*(lpString: LPCSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc lstrlenW*(lpString: LPCWSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenFile*(lpFileName: LPCSTR, lpReOpenBuff: LPOFSTRUCT, uStyle: UINT): HFILE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsTextUnicode*(lpv: pointer, iSize: int32, lpiResult: LPINT): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BackupRead*(hFile: HANDLE, lpBuffer: LPBYTE, nNumberOfBytesToRead: DWORD, lpNumberOfBytesRead: LPDWORD, bAbort: WINBOOL, bProcessSecurity: WINBOOL, lpContext: ptr LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc BackupSeek*(hFile: HANDLE, dwLowBytesToSeek: DWORD, dwHighBytesToSeek: DWORD, lpdwLowByteSeeked: LPDWORD, lpdwHighByteSeeked: LPDWORD, lpContext: ptr LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc BackupWrite*(hFile: HANDLE, lpBuffer: LPBYTE, nNumberOfBytesToWrite: DWORD, lpNumberOfBytesWritten: LPDWORD, bAbort: WINBOOL, bProcessSecurity: WINBOOL, lpContext: ptr LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateSemaphoreW*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES, lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LoadLibraryW*(lpLibFileName: LPCWSTR): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenMutexA*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateSemaphoreA*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES, lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenSemaphoreA*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateWaitableTimerA*(lpTimerAttributes: LPSECURITY_ATTRIBUTES, bManualReset: WINBOOL, lpTimerName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateWaitableTimerW*(lpTimerAttributes: LPSECURITY_ATTRIBUTES, bManualReset: WINBOOL, lpTimerName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenWaitableTimerA*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpTimerName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateFileMappingA*(hFile: HANDLE, lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, flProtect: DWORD, dwMaximumSizeHigh: DWORD, dwMaximumSizeLow: DWORD, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateSemaphoreExA*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES, lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateWaitableTimerExA*(lpTimerAttributes: LPSECURITY_ATTRIBUTES, lpTimerName: LPCSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateFileMappingNumaA*(hFile: HANDLE, lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, flProtect: DWORD, dwMaximumSizeHigh: DWORD, dwMaximumSizeLow: DWORD, lpName: LPCSTR, nndPreferred: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenFileMappingA*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetLogicalDriveStringsA*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LoadLibraryA*(lpLibFileName: LPCSTR): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LoadPackagedLibrary*(lpwLibFileName: LPCWSTR, Reserved: DWORD): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryFullProcessImageNameA*(hProcess: HANDLE, dwFlags: DWORD, lpExeName: LPSTR, lpdwSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryFullProcessImageNameW*(hProcess: HANDLE, dwFlags: DWORD, lpExeName: LPWSTR, lpdwSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessShutdownParameters*(lpdwLevel: LPDWORD, lpdwFlags: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FatalAppExitA*(uAction: UINT, lpMessageText: LPCSTR): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FatalAppExitW*(uAction: UINT, lpMessageText: LPCWSTR): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetStartupInfoA*(lpStartupInfo: LPSTARTUPINFOA): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFirmwareEnvironmentVariableA*(lpName: LPCSTR, lpGuid: LPCSTR, pBuffer: PVOID, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFirmwareEnvironmentVariableW*(lpName: LPCWSTR, lpGuid: LPCWSTR, pBuffer: PVOID, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFirmwareEnvironmentVariableA*(lpName: LPCSTR, lpGuid: LPCSTR, pValue: PVOID, nSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFirmwareEnvironmentVariableW*(lpName: LPCWSTR, lpGuid: LPCWSTR, pValue: PVOID, nSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindResourceA*(hModule: HMODULE, lpName: LPCSTR, lpType: LPCSTR): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindResourceW*(hModule: HMODULE, lpName: LPCWSTR, lpType: LPCWSTR): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindResourceExA*(hModule: HMODULE, lpType: LPCSTR, lpName: LPCSTR, wLanguage: WORD): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumResourceTypesA*(hModule: HMODULE, lpEnumFunc: ENUMRESTYPEPROCA, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumResourceTypesW*(hModule: HMODULE, lpEnumFunc: ENUMRESTYPEPROCW, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumResourceNamesA*(hModule: HMODULE, lpType: LPCSTR, lpEnumFunc: ENUMRESNAMEPROCA, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumResourceNamesW*(hModule: HMODULE, lpType: LPCWSTR, lpEnumFunc: ENUMRESNAMEPROCW, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc BeginUpdateResourceA*(pFileName: LPCSTR, bDeleteExistingResources: WINBOOL): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc BeginUpdateResourceW*(pFileName: LPCWSTR, bDeleteExistingResources: WINBOOL): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc UpdateResourceA*(hUpdate: HANDLE, lpType: LPCSTR, lpName: LPCSTR, wLanguage: WORD, lpData: LPVOID, cb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc UpdateResourceW*(hUpdate: HANDLE, lpType: LPCWSTR, lpName: LPCWSTR, wLanguage: WORD, lpData: LPVOID, cb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EndUpdateResourceA*(hUpdate: HANDLE, fDiscard: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EndUpdateResourceW*(hUpdate: HANDLE, fDiscard: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFirmwareEnvironmentVariableExA*(lpName: LPCSTR, lpGuid: LPCSTR, pBuffer: PVOID, nSize: DWORD, pdwAttribubutes: PDWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFirmwareEnvironmentVariableExW*(lpName: LPCWSTR, lpGuid: LPCWSTR, pBuffer: PVOID, nSize: DWORD, pdwAttribubutes: PDWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFirmwareEnvironmentVariableExA*(lpName: LPCSTR, lpGuid: LPCSTR, pValue: PVOID, nSize: DWORD, dwAttributes: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFirmwareEnvironmentVariableExW*(lpName: LPCWSTR, lpGuid: LPCWSTR, pValue: PVOID, nSize: DWORD, dwAttributes: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFirmwareType*(FirmwareType: PFIRMWARE_TYPE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsNativeVhdBoot*(NativeVhdBoot: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalAddAtomA*(lpString: LPCSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalAddAtomW*(lpString: LPCWSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalAddAtomExA*(lpString: LPCSTR, Flags: DWORD): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalAddAtomExW*(lpString: LPCWSTR, Flags: DWORD): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalFindAtomA*(lpString: LPCSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalFindAtomW*(lpString: LPCWSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalGetAtomNameA*(nAtom: ATOM, lpBuffer: LPSTR, nSize: int32): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GlobalGetAtomNameW*(nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc lstrlenW*(
+  lpString: LPCWSTR
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenFile*(
+  lpFileName: LPCSTR, lpReOpenBuff: LPOFSTRUCT, uStyle: UINT
+): HFILE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsTextUnicode*(
+  lpv: pointer, iSize: int32, lpiResult: LPINT
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BackupRead*(
+  hFile: HANDLE,
+  lpBuffer: LPBYTE,
+  nNumberOfBytesToRead: DWORD,
+  lpNumberOfBytesRead: LPDWORD,
+  bAbort: WINBOOL,
+  bProcessSecurity: WINBOOL,
+  lpContext: ptr LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc BackupSeek*(
+  hFile: HANDLE,
+  dwLowBytesToSeek: DWORD,
+  dwHighBytesToSeek: DWORD,
+  lpdwLowByteSeeked: LPDWORD,
+  lpdwHighByteSeeked: LPDWORD,
+  lpContext: ptr LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc BackupWrite*(
+  hFile: HANDLE,
+  lpBuffer: LPBYTE,
+  nNumberOfBytesToWrite: DWORD,
+  lpNumberOfBytesWritten: LPDWORD,
+  bAbort: WINBOOL,
+  bProcessSecurity: WINBOOL,
+  lpContext: ptr LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateSemaphoreW*(
+  lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,
+  lInitialCount: LONG,
+  lMaximumCount: LONG,
+  lpName: LPCWSTR,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LoadLibraryW*(
+  lpLibFileName: LPCWSTR
+): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenMutexA*(
+  dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateSemaphoreA*(
+  lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,
+  lInitialCount: LONG,
+  lMaximumCount: LONG,
+  lpName: LPCSTR,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenSemaphoreA*(
+  dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateWaitableTimerA*(
+  lpTimerAttributes: LPSECURITY_ATTRIBUTES, bManualReset: WINBOOL, lpTimerName: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateWaitableTimerW*(
+  lpTimerAttributes: LPSECURITY_ATTRIBUTES, bManualReset: WINBOOL, lpTimerName: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenWaitableTimerA*(
+  dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpTimerName: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateFileMappingA*(
+  hFile: HANDLE,
+  lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,
+  flProtect: DWORD,
+  dwMaximumSizeHigh: DWORD,
+  dwMaximumSizeLow: DWORD,
+  lpName: LPCSTR,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateSemaphoreExA*(
+  lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,
+  lInitialCount: LONG,
+  lMaximumCount: LONG,
+  lpName: LPCSTR,
+  dwFlags: DWORD,
+  dwDesiredAccess: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateWaitableTimerExA*(
+  lpTimerAttributes: LPSECURITY_ATTRIBUTES,
+  lpTimerName: LPCSTR,
+  dwFlags: DWORD,
+  dwDesiredAccess: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateFileMappingNumaA*(
+  hFile: HANDLE,
+  lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,
+  flProtect: DWORD,
+  dwMaximumSizeHigh: DWORD,
+  dwMaximumSizeLow: DWORD,
+  lpName: LPCSTR,
+  nndPreferred: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenFileMappingA*(
+  dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetLogicalDriveStringsA*(
+  nBufferLength: DWORD, lpBuffer: LPSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LoadLibraryA*(
+  lpLibFileName: LPCSTR
+): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LoadPackagedLibrary*(
+  lpwLibFileName: LPCWSTR, Reserved: DWORD
+): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryFullProcessImageNameA*(
+  hProcess: HANDLE, dwFlags: DWORD, lpExeName: LPSTR, lpdwSize: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryFullProcessImageNameW*(
+  hProcess: HANDLE, dwFlags: DWORD, lpExeName: LPWSTR, lpdwSize: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProcessShutdownParameters*(
+  lpdwLevel: LPDWORD, lpdwFlags: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FatalAppExitA*(
+  uAction: UINT, lpMessageText: LPCSTR
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FatalAppExitW*(
+  uAction: UINT, lpMessageText: LPCWSTR
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetStartupInfoA*(
+  lpStartupInfo: LPSTARTUPINFOA
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFirmwareEnvironmentVariableA*(
+  lpName: LPCSTR, lpGuid: LPCSTR, pBuffer: PVOID, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFirmwareEnvironmentVariableW*(
+  lpName: LPCWSTR, lpGuid: LPCWSTR, pBuffer: PVOID, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFirmwareEnvironmentVariableA*(
+  lpName: LPCSTR, lpGuid: LPCSTR, pValue: PVOID, nSize: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFirmwareEnvironmentVariableW*(
+  lpName: LPCWSTR, lpGuid: LPCWSTR, pValue: PVOID, nSize: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindResourceA*(
+  hModule: HMODULE, lpName: LPCSTR, lpType: LPCSTR
+): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindResourceW*(
+  hModule: HMODULE, lpName: LPCWSTR, lpType: LPCWSTR
+): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindResourceExA*(
+  hModule: HMODULE, lpType: LPCSTR, lpName: LPCSTR, wLanguage: WORD
+): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumResourceTypesA*(
+  hModule: HMODULE, lpEnumFunc: ENUMRESTYPEPROCA, lParam: LONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumResourceTypesW*(
+  hModule: HMODULE, lpEnumFunc: ENUMRESTYPEPROCW, lParam: LONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumResourceNamesA*(
+  hModule: HMODULE, lpType: LPCSTR, lpEnumFunc: ENUMRESNAMEPROCA, lParam: LONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumResourceNamesW*(
+  hModule: HMODULE, lpType: LPCWSTR, lpEnumFunc: ENUMRESNAMEPROCW, lParam: LONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc BeginUpdateResourceA*(
+  pFileName: LPCSTR, bDeleteExistingResources: WINBOOL
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc BeginUpdateResourceW*(
+  pFileName: LPCWSTR, bDeleteExistingResources: WINBOOL
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc UpdateResourceA*(
+  hUpdate: HANDLE,
+  lpType: LPCSTR,
+  lpName: LPCSTR,
+  wLanguage: WORD,
+  lpData: LPVOID,
+  cb: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc UpdateResourceW*(
+  hUpdate: HANDLE,
+  lpType: LPCWSTR,
+  lpName: LPCWSTR,
+  wLanguage: WORD,
+  lpData: LPVOID,
+  cb: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EndUpdateResourceA*(
+  hUpdate: HANDLE, fDiscard: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EndUpdateResourceW*(
+  hUpdate: HANDLE, fDiscard: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFirmwareEnvironmentVariableExA*(
+  lpName: LPCSTR, lpGuid: LPCSTR, pBuffer: PVOID, nSize: DWORD, pdwAttribubutes: PDWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFirmwareEnvironmentVariableExW*(
+  lpName: LPCWSTR,
+  lpGuid: LPCWSTR,
+  pBuffer: PVOID,
+  nSize: DWORD,
+  pdwAttribubutes: PDWORD,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFirmwareEnvironmentVariableExA*(
+  lpName: LPCSTR, lpGuid: LPCSTR, pValue: PVOID, nSize: DWORD, dwAttributes: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFirmwareEnvironmentVariableExW*(
+  lpName: LPCWSTR, lpGuid: LPCWSTR, pValue: PVOID, nSize: DWORD, dwAttributes: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFirmwareType*(
+  FirmwareType: PFIRMWARE_TYPE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsNativeVhdBoot*(
+  NativeVhdBoot: PBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalAddAtomA*(
+  lpString: LPCSTR
+): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalAddAtomW*(
+  lpString: LPCWSTR
+): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalAddAtomExA*(
+  lpString: LPCSTR, Flags: DWORD
+): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalAddAtomExW*(
+  lpString: LPCWSTR, Flags: DWORD
+): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalFindAtomA*(
+  lpString: LPCSTR
+): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalFindAtomW*(
+  lpString: LPCWSTR
+): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalGetAtomNameA*(
+  nAtom: ATOM, lpBuffer: LPSTR, nSize: int32
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GlobalGetAtomNameW*(
+  nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc AddAtomA*(lpString: LPCSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc AddAtomW*(lpString: LPCWSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc FindAtomA*(lpString: LPCSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindAtomW*(lpString: LPCWSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetAtomNameA*(nAtom: ATOM, lpBuffer: LPSTR, nSize: int32): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetAtomNameW*(nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProfileIntA*(lpAppName: LPCSTR, lpKeyName: LPCSTR, nDefault: INT): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProfileIntW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, nDefault: INT): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProfileStringA*(lpAppName: LPCSTR, lpKeyName: LPCSTR, lpDefault: LPCSTR, lpReturnedString: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProfileStringW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, lpDefault: LPCWSTR, lpReturnedString: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteProfileStringA*(lpAppName: LPCSTR, lpKeyName: LPCSTR, lpString: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteProfileStringW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, lpString: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProfileSectionA*(lpAppName: LPCSTR, lpReturnedString: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProfileSectionW*(lpAppName: LPCWSTR, lpReturnedString: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteProfileSectionA*(lpAppName: LPCSTR, lpString: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteProfileSectionW*(lpAppName: LPCWSTR, lpString: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetPrivateProfileIntA*(lpAppName: LPCSTR, lpKeyName: LPCSTR, nDefault: INT, lpFileName: LPCSTR): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetPrivateProfileIntW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, nDefault: INT, lpFileName: LPCWSTR): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetPrivateProfileStringA*(lpAppName: LPCSTR, lpKeyName: LPCSTR, lpDefault: LPCSTR, lpReturnedString: LPSTR, nSize: DWORD, lpFileName: LPCSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetPrivateProfileStringW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, lpDefault: LPCWSTR, lpReturnedString: LPWSTR, nSize: DWORD, lpFileName: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WritePrivateProfileStringA*(lpAppName: LPCSTR, lpKeyName: LPCSTR, lpString: LPCSTR, lpFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WritePrivateProfileStringW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, lpString: LPCWSTR, lpFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetPrivateProfileSectionA*(lpAppName: LPCSTR, lpReturnedString: LPSTR, nSize: DWORD, lpFileName: LPCSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetPrivateProfileSectionW*(lpAppName: LPCWSTR, lpReturnedString: LPWSTR, nSize: DWORD, lpFileName: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WritePrivateProfileSectionA*(lpAppName: LPCSTR, lpString: LPCSTR, lpFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WritePrivateProfileSectionW*(lpAppName: LPCWSTR, lpString: LPCWSTR, lpFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetPrivateProfileSectionNamesA*(lpszReturnBuffer: LPSTR, nSize: DWORD, lpFileName: LPCSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetPrivateProfileSectionNamesW*(lpszReturnBuffer: LPWSTR, nSize: DWORD, lpFileName: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetPrivateProfileStructA*(lpszSection: LPCSTR, lpszKey: LPCSTR, lpStruct: LPVOID, uSizeStruct: UINT, szFile: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetPrivateProfileStructW*(lpszSection: LPCWSTR, lpszKey: LPCWSTR, lpStruct: LPVOID, uSizeStruct: UINT, szFile: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WritePrivateProfileStructA*(lpszSection: LPCSTR, lpszKey: LPCSTR, lpStruct: LPVOID, uSizeStruct: UINT, szFile: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WritePrivateProfileStructW*(lpszSection: LPCWSTR, lpszKey: LPCWSTR, lpStruct: LPVOID, uSizeStruct: UINT, szFile: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetTempPathA*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetTempFileNameA*(lpPathName: LPCSTR, lpPrefixString: LPCSTR, uUnique: UINT, lpTempFileName: LPSTR): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemWow64DirectoryA*(lpBuffer: LPSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemWow64DirectoryW*(lpBuffer: LPWSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc Wow64EnableWow64FsRedirection*(Wow64FsEnableRedirection: BOOLEAN): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetDllDirectoryA*(lpPathName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetDllDirectoryW*(lpPathName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDllDirectoryA*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDllDirectoryW*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetSearchPathMode*(Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateDirectoryExA*(lpTemplateDirectory: LPCSTR, lpNewDirectory: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateDirectoryExW*(lpTemplateDirectory: LPCWSTR, lpNewDirectory: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateDirectoryTransactedA*(lpTemplateDirectory: LPCSTR, lpNewDirectory: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateDirectoryTransactedW*(lpTemplateDirectory: LPCWSTR, lpNewDirectory: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RemoveDirectoryTransactedA*(lpPathName: LPCSTR, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RemoveDirectoryTransactedW*(lpPathName: LPCWSTR, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFullPathNameTransactedA*(lpFileName: LPCSTR, nBufferLength: DWORD, lpBuffer: LPSTR, lpFilePart: ptr LPSTR, hTransaction: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFullPathNameTransactedW*(lpFileName: LPCWSTR, nBufferLength: DWORD, lpBuffer: LPWSTR, lpFilePart: ptr LPWSTR, hTransaction: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DefineDosDeviceA*(dwFlags: DWORD, lpDeviceName: LPCSTR, lpTargetPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryDosDeviceA*(lpDeviceName: LPCSTR, lpTargetPath: LPSTR, ucchMax: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateFileTransactedA*(lpFileName: LPCSTR, dwDesiredAccess: DWORD, dwShareMode: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD, hTemplateFile: HANDLE, hTransaction: HANDLE, pusMiniVersion: PUSHORT, lpExtendedParameter: PVOID): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateFileTransactedW*(lpFileName: LPCWSTR, dwDesiredAccess: DWORD, dwShareMode: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD, hTemplateFile: HANDLE, hTransaction: HANDLE, pusMiniVersion: PUSHORT, lpExtendedParameter: PVOID): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReOpenFile*(hOriginalFile: HANDLE, dwDesiredAccess: DWORD, dwShareMode: DWORD, dwFlagsAndAttributes: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFileAttributesTransactedA*(lpFileName: LPCSTR, dwFileAttributes: DWORD, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFileAttributesTransactedW*(lpFileName: LPCWSTR, dwFileAttributes: DWORD, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFileAttributesTransactedA*(lpFileName: LPCSTR, fInfoLevelId: GET_FILEEX_INFO_LEVELS, lpFileInformation: LPVOID, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFileAttributesTransactedW*(lpFileName: LPCWSTR, fInfoLevelId: GET_FILEEX_INFO_LEVELS, lpFileInformation: LPVOID, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCompressedFileSizeA*(lpFileName: LPCSTR, lpFileSizeHigh: LPDWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCompressedFileSizeW*(lpFileName: LPCWSTR, lpFileSizeHigh: LPDWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCompressedFileSizeTransactedA*(lpFileName: LPCSTR, lpFileSizeHigh: LPDWORD, hTransaction: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCompressedFileSizeTransactedW*(lpFileName: LPCWSTR, lpFileSizeHigh: LPDWORD, hTransaction: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeleteFileTransactedA*(lpFileName: LPCSTR, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeleteFileTransactedW*(lpFileName: LPCWSTR, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CheckNameLegalDOS8Dot3A*(lpName: LPCSTR, lpOemName: LPSTR, OemNameSize: DWORD, pbNameContainsSpaces: PBOOL, pbNameLegal: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CheckNameLegalDOS8Dot3W*(lpName: LPCWSTR, lpOemName: LPSTR, OemNameSize: DWORD, pbNameContainsSpaces: PBOOL, pbNameLegal: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CopyFileA*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, bFailIfExists: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CopyFileW*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, bFailIfExists: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CopyFileExA*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, pbCancel: LPBOOL, dwCopyFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CopyFileExW*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, pbCancel: LPBOOL, dwCopyFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstFileTransactedA*(lpFileName: LPCSTR, fInfoLevelId: FINDEX_INFO_LEVELS, lpFindFileData: LPVOID, fSearchOp: FINDEX_SEARCH_OPS, lpSearchFilter: LPVOID, dwAdditionalFlags: DWORD, hTransaction: HANDLE): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstFileTransactedW*(lpFileName: LPCWSTR, fInfoLevelId: FINDEX_INFO_LEVELS, lpFindFileData: LPVOID, fSearchOp: FINDEX_SEARCH_OPS, lpSearchFilter: LPVOID, dwAdditionalFlags: DWORD, hTransaction: HANDLE): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CopyFileTransactedA*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, pbCancel: LPBOOL, dwCopyFlags: DWORD, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CopyFileTransactedW*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, pbCancel: LPBOOL, dwCopyFlags: DWORD, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CopyFile2*(pwszExistingFileName: PCWSTR, pwszNewFileName: PCWSTR, pExtendedParameters: ptr COPYFILE2_EXTENDED_PARAMETERS): HRESULT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MoveFileA*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MoveFileW*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MoveFileExA*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MoveFileExW*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MoveFileWithProgressA*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MoveFileWithProgressW*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MoveFileTransactedA*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, dwFlags: DWORD, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MoveFileTransactedW*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, dwFlags: DWORD, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReplaceFileA*(lpReplacedFileName: LPCSTR, lpReplacementFileName: LPCSTR, lpBackupFileName: LPCSTR, dwReplaceFlags: DWORD, lpExclude: LPVOID, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReplaceFileW*(lpReplacedFileName: LPCWSTR, lpReplacementFileName: LPCWSTR, lpBackupFileName: LPCWSTR, dwReplaceFlags: DWORD, lpExclude: LPVOID, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateHardLinkA*(lpFileName: LPCSTR, lpExistingFileName: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateHardLinkW*(lpFileName: LPCWSTR, lpExistingFileName: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateHardLinkTransactedA*(lpFileName: LPCSTR, lpExistingFileName: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateHardLinkTransactedW*(lpFileName: LPCWSTR, lpExistingFileName: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstStreamW*(lpFileName: LPCWSTR, InfoLevel: STREAM_INFO_LEVELS, lpFindStreamData: LPVOID, dwFlags: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindNextStreamW*(hFindStream: HANDLE, lpFindStreamData: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstStreamTransactedW*(lpFileName: LPCWSTR, InfoLevel: STREAM_INFO_LEVELS, lpFindStreamData: LPVOID, dwFlags: DWORD, hTransaction: HANDLE): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstFileNameW*(lpFileName: LPCWSTR, dwFlags: DWORD, StringLength: LPDWORD, LinkName: PWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindNextFileNameW*(hFindStream: HANDLE, StringLength: LPDWORD, LinkName: PWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstFileNameTransactedW*(lpFileName: LPCWSTR, dwFlags: DWORD, StringLength: LPDWORD, LinkName: PWSTR, hTransaction: HANDLE): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNamedPipeClientComputerNameA*(Pipe: HANDLE, ClientComputerName: LPSTR, ClientComputerNameLength: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNamedPipeClientProcessId*(Pipe: HANDLE, ClientProcessId: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNamedPipeClientSessionId*(Pipe: HANDLE, ClientSessionId: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNamedPipeServerProcessId*(Pipe: HANDLE, ServerProcessId: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNamedPipeServerSessionId*(Pipe: HANDLE, ServerSessionId: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetFileBandwidthReservation*(hFile: HANDLE, nPeriodMilliseconds: DWORD, nBytesPerPeriod: DWORD, bDiscardable: WINBOOL, lpTransferSize: LPDWORD, lpNumOutstandingRequests: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFileBandwidthReservation*(hFile: HANDLE, lpPeriodMilliseconds: LPDWORD, lpBytesPerPeriod: LPDWORD, pDiscardable: LPBOOL, lpTransferSize: LPDWORD, lpNumOutstandingRequests: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateNamedPipeA*(lpName: LPCSTR, dwOpenMode: DWORD, dwPipeMode: DWORD, nMaxInstances: DWORD, nOutBufferSize: DWORD, nInBufferSize: DWORD, nDefaultTimeOut: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNamedPipeHandleStateA*(hNamedPipe: HANDLE, lpState: LPDWORD, lpCurInstances: LPDWORD, lpMaxCollectionCount: LPDWORD, lpCollectDataTimeout: LPDWORD, lpUserName: LPSTR, nMaxUserNameSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNamedPipeHandleStateW*(hNamedPipe: HANDLE, lpState: LPDWORD, lpCurInstances: LPDWORD, lpMaxCollectionCount: LPDWORD, lpCollectDataTimeout: LPDWORD, lpUserName: LPWSTR, nMaxUserNameSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CallNamedPipeA*(lpNamedPipeName: LPCSTR, lpInBuffer: LPVOID, nInBufferSize: DWORD, lpOutBuffer: LPVOID, nOutBufferSize: DWORD, lpBytesRead: LPDWORD, nTimeOut: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CallNamedPipeW*(lpNamedPipeName: LPCWSTR, lpInBuffer: LPVOID, nInBufferSize: DWORD, lpOutBuffer: LPVOID, nOutBufferSize: DWORD, lpBytesRead: LPDWORD, nTimeOut: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WaitNamedPipeA*(lpNamedPipeName: LPCSTR, nTimeOut: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetVolumeLabelA*(lpRootPathName: LPCSTR, lpVolumeName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetVolumeLabelW*(lpRootPathName: LPCWSTR, lpVolumeName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc FindAtomW*(
+  lpString: LPCWSTR
+): ATOM {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetAtomNameA*(
+  nAtom: ATOM, lpBuffer: LPSTR, nSize: int32
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetAtomNameW*(
+  nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProfileIntA*(
+  lpAppName: LPCSTR, lpKeyName: LPCSTR, nDefault: INT
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProfileIntW*(
+  lpAppName: LPCWSTR, lpKeyName: LPCWSTR, nDefault: INT
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProfileStringA*(
+  lpAppName: LPCSTR,
+  lpKeyName: LPCSTR,
+  lpDefault: LPCSTR,
+  lpReturnedString: LPSTR,
+  nSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProfileStringW*(
+  lpAppName: LPCWSTR,
+  lpKeyName: LPCWSTR,
+  lpDefault: LPCWSTR,
+  lpReturnedString: LPWSTR,
+  nSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteProfileStringA*(
+  lpAppName: LPCSTR, lpKeyName: LPCSTR, lpString: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteProfileStringW*(
+  lpAppName: LPCWSTR, lpKeyName: LPCWSTR, lpString: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProfileSectionA*(
+  lpAppName: LPCSTR, lpReturnedString: LPSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetProfileSectionW*(
+  lpAppName: LPCWSTR, lpReturnedString: LPWSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteProfileSectionA*(
+  lpAppName: LPCSTR, lpString: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteProfileSectionW*(
+  lpAppName: LPCWSTR, lpString: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetPrivateProfileIntA*(
+  lpAppName: LPCSTR, lpKeyName: LPCSTR, nDefault: INT, lpFileName: LPCSTR
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetPrivateProfileIntW*(
+  lpAppName: LPCWSTR, lpKeyName: LPCWSTR, nDefault: INT, lpFileName: LPCWSTR
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetPrivateProfileStringA*(
+  lpAppName: LPCSTR,
+  lpKeyName: LPCSTR,
+  lpDefault: LPCSTR,
+  lpReturnedString: LPSTR,
+  nSize: DWORD,
+  lpFileName: LPCSTR,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetPrivateProfileStringW*(
+  lpAppName: LPCWSTR,
+  lpKeyName: LPCWSTR,
+  lpDefault: LPCWSTR,
+  lpReturnedString: LPWSTR,
+  nSize: DWORD,
+  lpFileName: LPCWSTR,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WritePrivateProfileStringA*(
+  lpAppName: LPCSTR, lpKeyName: LPCSTR, lpString: LPCSTR, lpFileName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WritePrivateProfileStringW*(
+  lpAppName: LPCWSTR, lpKeyName: LPCWSTR, lpString: LPCWSTR, lpFileName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetPrivateProfileSectionA*(
+  lpAppName: LPCSTR, lpReturnedString: LPSTR, nSize: DWORD, lpFileName: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetPrivateProfileSectionW*(
+  lpAppName: LPCWSTR, lpReturnedString: LPWSTR, nSize: DWORD, lpFileName: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WritePrivateProfileSectionA*(
+  lpAppName: LPCSTR, lpString: LPCSTR, lpFileName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WritePrivateProfileSectionW*(
+  lpAppName: LPCWSTR, lpString: LPCWSTR, lpFileName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetPrivateProfileSectionNamesA*(
+  lpszReturnBuffer: LPSTR, nSize: DWORD, lpFileName: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetPrivateProfileSectionNamesW*(
+  lpszReturnBuffer: LPWSTR, nSize: DWORD, lpFileName: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetPrivateProfileStructA*(
+  lpszSection: LPCSTR,
+  lpszKey: LPCSTR,
+  lpStruct: LPVOID,
+  uSizeStruct: UINT,
+  szFile: LPCSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetPrivateProfileStructW*(
+  lpszSection: LPCWSTR,
+  lpszKey: LPCWSTR,
+  lpStruct: LPVOID,
+  uSizeStruct: UINT,
+  szFile: LPCWSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WritePrivateProfileStructA*(
+  lpszSection: LPCSTR,
+  lpszKey: LPCSTR,
+  lpStruct: LPVOID,
+  uSizeStruct: UINT,
+  szFile: LPCSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WritePrivateProfileStructW*(
+  lpszSection: LPCWSTR,
+  lpszKey: LPCWSTR,
+  lpStruct: LPVOID,
+  uSizeStruct: UINT,
+  szFile: LPCWSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetTempPathA*(
+  nBufferLength: DWORD, lpBuffer: LPSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetTempFileNameA*(
+  lpPathName: LPCSTR, lpPrefixString: LPCSTR, uUnique: UINT, lpTempFileName: LPSTR
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemWow64DirectoryA*(
+  lpBuffer: LPSTR, uSize: UINT
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemWow64DirectoryW*(
+  lpBuffer: LPWSTR, uSize: UINT
+): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc Wow64EnableWow64FsRedirection*(
+  Wow64FsEnableRedirection: BOOLEAN
+): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetDllDirectoryA*(
+  lpPathName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetDllDirectoryW*(
+  lpPathName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDllDirectoryA*(
+  nBufferLength: DWORD, lpBuffer: LPSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDllDirectoryW*(
+  nBufferLength: DWORD, lpBuffer: LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetSearchPathMode*(
+  Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateDirectoryExA*(
+  lpTemplateDirectory: LPCSTR,
+  lpNewDirectory: LPCSTR,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateDirectoryExW*(
+  lpTemplateDirectory: LPCWSTR,
+  lpNewDirectory: LPCWSTR,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateDirectoryTransactedA*(
+  lpTemplateDirectory: LPCSTR,
+  lpNewDirectory: LPCSTR,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  hTransaction: HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateDirectoryTransactedW*(
+  lpTemplateDirectory: LPCWSTR,
+  lpNewDirectory: LPCWSTR,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  hTransaction: HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RemoveDirectoryTransactedA*(
+  lpPathName: LPCSTR, hTransaction: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RemoveDirectoryTransactedW*(
+  lpPathName: LPCWSTR, hTransaction: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFullPathNameTransactedA*(
+  lpFileName: LPCSTR,
+  nBufferLength: DWORD,
+  lpBuffer: LPSTR,
+  lpFilePart: ptr LPSTR,
+  hTransaction: HANDLE,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFullPathNameTransactedW*(
+  lpFileName: LPCWSTR,
+  nBufferLength: DWORD,
+  lpBuffer: LPWSTR,
+  lpFilePart: ptr LPWSTR,
+  hTransaction: HANDLE,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DefineDosDeviceA*(
+  dwFlags: DWORD, lpDeviceName: LPCSTR, lpTargetPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryDosDeviceA*(
+  lpDeviceName: LPCSTR, lpTargetPath: LPSTR, ucchMax: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateFileTransactedA*(
+  lpFileName: LPCSTR,
+  dwDesiredAccess: DWORD,
+  dwShareMode: DWORD,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  dwCreationDisposition: DWORD,
+  dwFlagsAndAttributes: DWORD,
+  hTemplateFile: HANDLE,
+  hTransaction: HANDLE,
+  pusMiniVersion: PUSHORT,
+  lpExtendedParameter: PVOID,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateFileTransactedW*(
+  lpFileName: LPCWSTR,
+  dwDesiredAccess: DWORD,
+  dwShareMode: DWORD,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  dwCreationDisposition: DWORD,
+  dwFlagsAndAttributes: DWORD,
+  hTemplateFile: HANDLE,
+  hTransaction: HANDLE,
+  pusMiniVersion: PUSHORT,
+  lpExtendedParameter: PVOID,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReOpenFile*(
+  hOriginalFile: HANDLE,
+  dwDesiredAccess: DWORD,
+  dwShareMode: DWORD,
+  dwFlagsAndAttributes: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFileAttributesTransactedA*(
+  lpFileName: LPCSTR, dwFileAttributes: DWORD, hTransaction: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFileAttributesTransactedW*(
+  lpFileName: LPCWSTR, dwFileAttributes: DWORD, hTransaction: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFileAttributesTransactedA*(
+  lpFileName: LPCSTR,
+  fInfoLevelId: GET_FILEEX_INFO_LEVELS,
+  lpFileInformation: LPVOID,
+  hTransaction: HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFileAttributesTransactedW*(
+  lpFileName: LPCWSTR,
+  fInfoLevelId: GET_FILEEX_INFO_LEVELS,
+  lpFileInformation: LPVOID,
+  hTransaction: HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCompressedFileSizeA*(
+  lpFileName: LPCSTR, lpFileSizeHigh: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCompressedFileSizeW*(
+  lpFileName: LPCWSTR, lpFileSizeHigh: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCompressedFileSizeTransactedA*(
+  lpFileName: LPCSTR, lpFileSizeHigh: LPDWORD, hTransaction: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCompressedFileSizeTransactedW*(
+  lpFileName: LPCWSTR, lpFileSizeHigh: LPDWORD, hTransaction: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeleteFileTransactedA*(
+  lpFileName: LPCSTR, hTransaction: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeleteFileTransactedW*(
+  lpFileName: LPCWSTR, hTransaction: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CheckNameLegalDOS8Dot3A*(
+  lpName: LPCSTR,
+  lpOemName: LPSTR,
+  OemNameSize: DWORD,
+  pbNameContainsSpaces: PBOOL,
+  pbNameLegal: PBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CheckNameLegalDOS8Dot3W*(
+  lpName: LPCWSTR,
+  lpOemName: LPSTR,
+  OemNameSize: DWORD,
+  pbNameContainsSpaces: PBOOL,
+  pbNameLegal: PBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CopyFileA*(
+  lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, bFailIfExists: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CopyFileW*(
+  lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, bFailIfExists: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CopyFileExA*(
+  lpExistingFileName: LPCSTR,
+  lpNewFileName: LPCSTR,
+  lpProgressRoutine: LPPROGRESS_ROUTINE,
+  lpData: LPVOID,
+  pbCancel: LPBOOL,
+  dwCopyFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CopyFileExW*(
+  lpExistingFileName: LPCWSTR,
+  lpNewFileName: LPCWSTR,
+  lpProgressRoutine: LPPROGRESS_ROUTINE,
+  lpData: LPVOID,
+  pbCancel: LPBOOL,
+  dwCopyFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstFileTransactedA*(
+  lpFileName: LPCSTR,
+  fInfoLevelId: FINDEX_INFO_LEVELS,
+  lpFindFileData: LPVOID,
+  fSearchOp: FINDEX_SEARCH_OPS,
+  lpSearchFilter: LPVOID,
+  dwAdditionalFlags: DWORD,
+  hTransaction: HANDLE,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstFileTransactedW*(
+  lpFileName: LPCWSTR,
+  fInfoLevelId: FINDEX_INFO_LEVELS,
+  lpFindFileData: LPVOID,
+  fSearchOp: FINDEX_SEARCH_OPS,
+  lpSearchFilter: LPVOID,
+  dwAdditionalFlags: DWORD,
+  hTransaction: HANDLE,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CopyFileTransactedA*(
+  lpExistingFileName: LPCSTR,
+  lpNewFileName: LPCSTR,
+  lpProgressRoutine: LPPROGRESS_ROUTINE,
+  lpData: LPVOID,
+  pbCancel: LPBOOL,
+  dwCopyFlags: DWORD,
+  hTransaction: HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CopyFileTransactedW*(
+  lpExistingFileName: LPCWSTR,
+  lpNewFileName: LPCWSTR,
+  lpProgressRoutine: LPPROGRESS_ROUTINE,
+  lpData: LPVOID,
+  pbCancel: LPBOOL,
+  dwCopyFlags: DWORD,
+  hTransaction: HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CopyFile2*(
+  pwszExistingFileName: PCWSTR,
+  pwszNewFileName: PCWSTR,
+  pExtendedParameters: ptr COPYFILE2_EXTENDED_PARAMETERS,
+): HRESULT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MoveFileA*(
+  lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MoveFileW*(
+  lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MoveFileExA*(
+  lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MoveFileExW*(
+  lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MoveFileWithProgressA*(
+  lpExistingFileName: LPCSTR,
+  lpNewFileName: LPCSTR,
+  lpProgressRoutine: LPPROGRESS_ROUTINE,
+  lpData: LPVOID,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MoveFileWithProgressW*(
+  lpExistingFileName: LPCWSTR,
+  lpNewFileName: LPCWSTR,
+  lpProgressRoutine: LPPROGRESS_ROUTINE,
+  lpData: LPVOID,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MoveFileTransactedA*(
+  lpExistingFileName: LPCSTR,
+  lpNewFileName: LPCSTR,
+  lpProgressRoutine: LPPROGRESS_ROUTINE,
+  lpData: LPVOID,
+  dwFlags: DWORD,
+  hTransaction: HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MoveFileTransactedW*(
+  lpExistingFileName: LPCWSTR,
+  lpNewFileName: LPCWSTR,
+  lpProgressRoutine: LPPROGRESS_ROUTINE,
+  lpData: LPVOID,
+  dwFlags: DWORD,
+  hTransaction: HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReplaceFileA*(
+  lpReplacedFileName: LPCSTR,
+  lpReplacementFileName: LPCSTR,
+  lpBackupFileName: LPCSTR,
+  dwReplaceFlags: DWORD,
+  lpExclude: LPVOID,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReplaceFileW*(
+  lpReplacedFileName: LPCWSTR,
+  lpReplacementFileName: LPCWSTR,
+  lpBackupFileName: LPCWSTR,
+  dwReplaceFlags: DWORD,
+  lpExclude: LPVOID,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateHardLinkA*(
+  lpFileName: LPCSTR,
+  lpExistingFileName: LPCSTR,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateHardLinkW*(
+  lpFileName: LPCWSTR,
+  lpExistingFileName: LPCWSTR,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateHardLinkTransactedA*(
+  lpFileName: LPCSTR,
+  lpExistingFileName: LPCSTR,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  hTransaction: HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateHardLinkTransactedW*(
+  lpFileName: LPCWSTR,
+  lpExistingFileName: LPCWSTR,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  hTransaction: HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstStreamW*(
+  lpFileName: LPCWSTR,
+  InfoLevel: STREAM_INFO_LEVELS,
+  lpFindStreamData: LPVOID,
+  dwFlags: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindNextStreamW*(
+  hFindStream: HANDLE, lpFindStreamData: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstStreamTransactedW*(
+  lpFileName: LPCWSTR,
+  InfoLevel: STREAM_INFO_LEVELS,
+  lpFindStreamData: LPVOID,
+  dwFlags: DWORD,
+  hTransaction: HANDLE,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstFileNameW*(
+  lpFileName: LPCWSTR, dwFlags: DWORD, StringLength: LPDWORD, LinkName: PWSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindNextFileNameW*(
+  hFindStream: HANDLE, StringLength: LPDWORD, LinkName: PWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstFileNameTransactedW*(
+  lpFileName: LPCWSTR,
+  dwFlags: DWORD,
+  StringLength: LPDWORD,
+  LinkName: PWSTR,
+  hTransaction: HANDLE,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNamedPipeClientComputerNameA*(
+  Pipe: HANDLE, ClientComputerName: LPSTR, ClientComputerNameLength: ULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNamedPipeClientProcessId*(
+  Pipe: HANDLE, ClientProcessId: PULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNamedPipeClientSessionId*(
+  Pipe: HANDLE, ClientSessionId: PULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNamedPipeServerProcessId*(
+  Pipe: HANDLE, ServerProcessId: PULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNamedPipeServerSessionId*(
+  Pipe: HANDLE, ServerSessionId: PULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetFileBandwidthReservation*(
+  hFile: HANDLE,
+  nPeriodMilliseconds: DWORD,
+  nBytesPerPeriod: DWORD,
+  bDiscardable: WINBOOL,
+  lpTransferSize: LPDWORD,
+  lpNumOutstandingRequests: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFileBandwidthReservation*(
+  hFile: HANDLE,
+  lpPeriodMilliseconds: LPDWORD,
+  lpBytesPerPeriod: LPDWORD,
+  pDiscardable: LPBOOL,
+  lpTransferSize: LPDWORD,
+  lpNumOutstandingRequests: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateNamedPipeA*(
+  lpName: LPCSTR,
+  dwOpenMode: DWORD,
+  dwPipeMode: DWORD,
+  nMaxInstances: DWORD,
+  nOutBufferSize: DWORD,
+  nInBufferSize: DWORD,
+  nDefaultTimeOut: DWORD,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNamedPipeHandleStateA*(
+  hNamedPipe: HANDLE,
+  lpState: LPDWORD,
+  lpCurInstances: LPDWORD,
+  lpMaxCollectionCount: LPDWORD,
+  lpCollectDataTimeout: LPDWORD,
+  lpUserName: LPSTR,
+  nMaxUserNameSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNamedPipeHandleStateW*(
+  hNamedPipe: HANDLE,
+  lpState: LPDWORD,
+  lpCurInstances: LPDWORD,
+  lpMaxCollectionCount: LPDWORD,
+  lpCollectDataTimeout: LPDWORD,
+  lpUserName: LPWSTR,
+  nMaxUserNameSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CallNamedPipeA*(
+  lpNamedPipeName: LPCSTR,
+  lpInBuffer: LPVOID,
+  nInBufferSize: DWORD,
+  lpOutBuffer: LPVOID,
+  nOutBufferSize: DWORD,
+  lpBytesRead: LPDWORD,
+  nTimeOut: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CallNamedPipeW*(
+  lpNamedPipeName: LPCWSTR,
+  lpInBuffer: LPVOID,
+  nInBufferSize: DWORD,
+  lpOutBuffer: LPVOID,
+  nOutBufferSize: DWORD,
+  lpBytesRead: LPDWORD,
+  nTimeOut: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WaitNamedPipeA*(
+  lpNamedPipeName: LPCSTR, nTimeOut: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetVolumeLabelA*(
+  lpRootPathName: LPCSTR, lpVolumeName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetVolumeLabelW*(
+  lpRootPathName: LPCWSTR, lpVolumeName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc SetFileApisToOEM*(): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc SetFileApisToANSI*(): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc AreFileApisANSI*(): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetVolumeInformationA*(lpRootPathName: LPCSTR, lpVolumeNameBuffer: LPSTR, nVolumeNameSize: DWORD, lpVolumeSerialNumber: LPDWORD, lpMaximumComponentLength: LPDWORD, lpFileSystemFlags: LPDWORD, lpFileSystemNameBuffer: LPSTR, nFileSystemNameSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ClearEventLogA*(hEventLog: HANDLE, lpBackupFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ClearEventLogW*(hEventLog: HANDLE, lpBackupFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BackupEventLogA*(hEventLog: HANDLE, lpBackupFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BackupEventLogW*(hEventLog: HANDLE, lpBackupFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CloseEventLog*(hEventLog: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc DeregisterEventSource*(hEventLog: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc NotifyChangeEventLog*(hEventLog: HANDLE, hEvent: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetNumberOfEventLogRecords*(hEventLog: HANDLE, NumberOfRecords: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetOldestEventLogRecord*(hEventLog: HANDLE, OldestRecord: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc OpenEventLogA*(lpUNCServerName: LPCSTR, lpSourceName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc OpenEventLogW*(lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegisterEventSourceA*(lpUNCServerName: LPCSTR, lpSourceName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegisterEventSourceW*(lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc OpenBackupEventLogA*(lpUNCServerName: LPCSTR, lpFileName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc OpenBackupEventLogW*(lpUNCServerName: LPCWSTR, lpFileName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ReadEventLogA*(hEventLog: HANDLE, dwReadFlags: DWORD, dwRecordOffset: DWORD, lpBuffer: LPVOID, nNumberOfBytesToRead: DWORD, pnBytesRead: ptr DWORD, pnMinNumberOfBytesNeeded: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ReadEventLogW*(hEventLog: HANDLE, dwReadFlags: DWORD, dwRecordOffset: DWORD, lpBuffer: LPVOID, nNumberOfBytesToRead: DWORD, pnBytesRead: ptr DWORD, pnMinNumberOfBytesNeeded: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ReportEventA*(hEventLog: HANDLE, wType: WORD, wCategory: WORD, dwEventID: DWORD, lpUserSid: PSID, wNumStrings: WORD, dwDataSize: DWORD, lpStrings: ptr LPCSTR, lpRawData: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ReportEventW*(hEventLog: HANDLE, wType: WORD, wCategory: WORD, dwEventID: DWORD, lpUserSid: PSID, wNumStrings: WORD, dwDataSize: DWORD, lpStrings: ptr LPCWSTR, lpRawData: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetNamedPipeClientComputerName*(Pipe: HANDLE, ClientComputerName: LPSTR, ClientComputerNameLength: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetNamedPipeClientComputerNameA".}
-proc GetEventLogInformation*(hEventLog: HANDLE, dwInfoLevel: DWORD, lpBuffer: LPVOID, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc OperationStart*(OperationStartParams: ptr OPERATION_START_PARAMETERS): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc OperationEnd*(OperationEndParams: ptr OPERATION_END_PARAMETERS): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AccessCheckAndAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID, ObjectTypeName: LPSTR, ObjectName: LPSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, DesiredAccess: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccess: LPDWORD, AccessStatus: LPBOOL, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AccessCheckByTypeAndAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID, ObjectTypeName: LPCSTR, ObjectName: LPCSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccess: LPDWORD, AccessStatus: LPBOOL, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AccessCheckByTypeResultListAndAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID, ObjectTypeName: LPCSTR, ObjectName: LPCSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccess: LPDWORD, AccessStatusList: LPDWORD, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AccessCheckByTypeResultListAndAuditAlarmByHandleA*(SubsystemName: LPCSTR, HandleId: LPVOID, ClientToken: HANDLE, ObjectTypeName: LPCSTR, ObjectName: LPCSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccess: LPDWORD, AccessStatusList: LPDWORD, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ObjectOpenAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID, ObjectTypeName: LPSTR, ObjectName: LPSTR, pSecurityDescriptor: PSECURITY_DESCRIPTOR, ClientToken: HANDLE, DesiredAccess: DWORD, GrantedAccess: DWORD, Privileges: PPRIVILEGE_SET, ObjectCreation: WINBOOL, AccessGranted: WINBOOL, GenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ObjectPrivilegeAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID, ClientToken: HANDLE, DesiredAccess: DWORD, Privileges: PPRIVILEGE_SET, AccessGranted: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ObjectCloseAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ObjectDeleteAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc PrivilegedServiceAuditAlarmA*(SubsystemName: LPCSTR, ServiceName: LPCSTR, ClientToken: HANDLE, Privileges: PPRIVILEGE_SET, AccessGranted: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetFileSecurityA*(lpFileName: LPCSTR, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetFileSecurityA*(lpFileName: LPCSTR, RequestedInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ReadDirectoryChangesW*(hDirectory: HANDLE, lpBuffer: LPVOID, nBufferLength: DWORD, bWatchSubtree: WINBOOL, dwNotifyFilter: DWORD, lpBytesReturned: LPDWORD, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsBadReadPtr*(lp: pointer, ucb: UINT_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsBadWritePtr*(lp: LPVOID, ucb: UINT_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsBadHugeReadPtr*(lp: pointer, ucb: UINT_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsBadHugeWritePtr*(lp: LPVOID, ucb: UINT_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsBadCodePtr*(lpfn: FARPROC): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsBadStringPtrA*(lpsz: LPCSTR, ucchMax: UINT_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsBadStringPtrW*(lpsz: LPCWSTR, ucchMax: UINT_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MapViewOfFileExNuma*(hFileMappingObject: HANDLE, dwDesiredAccess: DWORD, dwFileOffsetHigh: DWORD, dwFileOffsetLow: DWORD, dwNumberOfBytesToMap: SIZE_T, lpBaseAddress: LPVOID, nndPreferred: DWORD): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AddConditionalAce*(pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AceType: UCHAR, AccessMask: DWORD, pSid: PSID, ConditionStr: PWCHAR, ReturnLength: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LookupAccountSidA*(lpSystemName: LPCSTR, Sid: PSID, Name: LPSTR, cchName: LPDWORD, ReferencedDomainName: LPSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LookupAccountSidW*(lpSystemName: LPCWSTR, Sid: PSID, Name: LPWSTR, cchName: LPDWORD, ReferencedDomainName: LPWSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LookupAccountNameA*(lpSystemName: LPCSTR, lpAccountName: LPCSTR, Sid: PSID, cbSid: LPDWORD, ReferencedDomainName: LPSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LookupAccountNameW*(lpSystemName: LPCWSTR, lpAccountName: LPCWSTR, Sid: PSID, cbSid: LPDWORD, ReferencedDomainName: LPWSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LookupPrivilegeValueA*(lpSystemName: LPCSTR, lpName: LPCSTR, lpLuid: PLUID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LookupPrivilegeValueW*(lpSystemName: LPCWSTR, lpName: LPCWSTR, lpLuid: PLUID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LookupPrivilegeNameA*(lpSystemName: LPCSTR, lpLuid: PLUID, lpName: LPSTR, cchName: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LookupPrivilegeNameW*(lpSystemName: LPCWSTR, lpLuid: PLUID, lpName: LPWSTR, cchName: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LookupPrivilegeDisplayNameA*(lpSystemName: LPCSTR, lpName: LPCSTR, lpDisplayName: LPSTR, cchDisplayName: LPDWORD, lpLanguageId: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LookupPrivilegeDisplayNameW*(lpSystemName: LPCWSTR, lpName: LPCWSTR, lpDisplayName: LPWSTR, cchDisplayName: LPDWORD, lpLanguageId: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BuildCommDCBA*(lpDef: LPCSTR, lpDCB: LPDCB): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc BuildCommDCBW*(lpDef: LPCWSTR, lpDCB: LPDCB): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc BuildCommDCBAndTimeoutsA*(lpDef: LPCSTR, lpDCB: LPDCB, lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc BuildCommDCBAndTimeoutsW*(lpDef: LPCWSTR, lpDCB: LPDCB, lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CommConfigDialogA*(lpszName: LPCSTR, hWnd: HWND, lpCC: LPCOMMCONFIG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CommConfigDialogW*(lpszName: LPCWSTR, hWnd: HWND, lpCC: LPCOMMCONFIG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDefaultCommConfigA*(lpszName: LPCSTR, lpCC: LPCOMMCONFIG, lpdwSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDefaultCommConfigW*(lpszName: LPCWSTR, lpCC: LPCOMMCONFIG, lpdwSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetDefaultCommConfigA*(lpszName: LPCSTR, lpCC: LPCOMMCONFIG, dwSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetDefaultCommConfigW*(lpszName: LPCWSTR, lpCC: LPCOMMCONFIG, dwSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetComputerNameA*(lpBuffer: LPSTR, nSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetComputerNameW*(lpBuffer: LPWSTR, nSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetComputerNameA*(lpComputerName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetComputerNameW*(lpComputerName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetComputerNameExA*(NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPCTSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DnsHostnameToComputerNameA*(Hostname: LPCSTR, ComputerName: LPSTR, nSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DnsHostnameToComputerNameW*(Hostname: LPCWSTR, ComputerName: LPWSTR, nSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetUserNameA*(lpBuffer: LPSTR, pcbBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetUserNameW*(lpBuffer: LPWSTR, pcbBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LogonUserA*(lpszUsername: LPCSTR, lpszDomain: LPCSTR, lpszPassword: LPCSTR, dwLogonType: DWORD, dwLogonProvider: DWORD, phToken: PHANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LogonUserW*(lpszUsername: LPCWSTR, lpszDomain: LPCWSTR, lpszPassword: LPCWSTR, dwLogonType: DWORD, dwLogonProvider: DWORD, phToken: PHANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LogonUserExA*(lpszUsername: LPCSTR, lpszDomain: LPCSTR, lpszPassword: LPCSTR, dwLogonType: DWORD, dwLogonProvider: DWORD, phToken: PHANDLE, ppLogonSid: ptr PSID, ppProfileBuffer: ptr PVOID, pdwProfileLength: LPDWORD, pQuotaLimits: PQUOTA_LIMITS): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LogonUserExW*(lpszUsername: LPCWSTR, lpszDomain: LPCWSTR, lpszPassword: LPCWSTR, dwLogonType: DWORD, dwLogonProvider: DWORD, phToken: PHANDLE, ppLogonSid: ptr PSID, ppProfileBuffer: ptr PVOID, pdwProfileLength: LPDWORD, pQuotaLimits: PQUOTA_LIMITS): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CreateProcessAsUserA*(hToken: HANDLE, lpApplicationName: LPCSTR, lpCommandLine: LPSTR, lpProcessAttributes: LPSECURITY_ATTRIBUTES, lpThreadAttributes: LPSECURITY_ATTRIBUTES, bInheritHandles: WINBOOL, dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: LPCSTR, lpStartupInfo: LPSTARTUPINFOA, lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CreateProcessWithLogonW*(lpUsername: LPCWSTR, lpDomain: LPCWSTR, lpPassword: LPCWSTR, dwLogonFlags: DWORD, lpApplicationName: LPCWSTR, lpCommandLine: LPWSTR, dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: LPCWSTR, lpStartupInfo: LPSTARTUPINFOW, lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CreateProcessWithTokenW*(hToken: HANDLE, dwLogonFlags: DWORD, lpApplicationName: LPCWSTR, lpCommandLine: LPWSTR, dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: LPCWSTR, lpStartupInfo: LPSTARTUPINFOW, lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc IsTokenUntrusted*(TokenHandle: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegisterWaitForSingleObject*(phNewWaitObject: PHANDLE, hObject: HANDLE, Callback: WAITORTIMERCALLBACK, Context: PVOID, dwMilliseconds: ULONG, dwFlags: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc UnregisterWait*(WaitHandle: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc BindIoCompletionCallback*(FileHandle: HANDLE, Function: LPOVERLAPPED_COMPLETION_ROUTINE, Flags: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetTimerQueueTimer*(TimerQueue: HANDLE, Callback: WAITORTIMERCALLBACK, Parameter: PVOID, DueTime: DWORD, Period: DWORD, PreferIo: WINBOOL): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CancelTimerQueueTimer*(TimerQueue: HANDLE, Timer: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeleteTimerQueue*(TimerQueue: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreatePrivateNamespaceA*(lpPrivateNamespaceAttributes: LPSECURITY_ATTRIBUTES, lpBoundaryDescriptor: LPVOID, lpAliasPrefix: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenPrivateNamespaceA*(lpBoundaryDescriptor: LPVOID, lpAliasPrefix: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateBoundaryDescriptorA*(Name: LPCSTR, Flags: ULONG): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AddIntegrityLabelToBoundaryDescriptor*(BoundaryDescriptor: ptr HANDLE, IntegrityLabel: PSID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCurrentHwProfileA*(lpHwProfileInfo: LPHW_PROFILE_INFOA): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetCurrentHwProfileW*(lpHwProfileInfo: LPHW_PROFILE_INFOW): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc VerifyVersionInfoA*(lpVersionInformation: LPOSVERSIONINFOEXA, dwTypeMask: DWORD, dwlConditionMask: DWORDLONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc VerifyVersionInfoW*(lpVersionInformation: LPOSVERSIONINFOEXW, dwTypeMask: DWORD, dwlConditionMask: DWORDLONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SystemTimeToTzSpecificLocalTime*(lpTimeZoneInformation: ptr TIME_ZONE_INFORMATION, lpUniversalTime: ptr SYSTEMTIME, lpLocalTime: LPSYSTEMTIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc TzSpecificLocalTimeToSystemTime*(lpTimeZoneInformation: ptr TIME_ZONE_INFORMATION, lpLocalTime: ptr SYSTEMTIME, lpUniversalTime: LPSYSTEMTIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FileTimeToSystemTime*(lpFileTime: ptr FILETIME, lpSystemTime: LPSYSTEMTIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SystemTimeToFileTime*(lpSystemTime: ptr SYSTEMTIME, lpFileTime: LPFILETIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetTimeZoneInformation*(lpTimeZoneInformation: LPTIME_ZONE_INFORMATION): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDynamicTimeZoneInformation*(pTimeZoneInformation: PDYNAMIC_TIME_ZONE_INFORMATION): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetTimeZoneInformationForYear*(wYear: USHORT, pdtzi: PDYNAMIC_TIME_ZONE_INFORMATION, ptzi: LPTIME_ZONE_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumDynamicTimeZoneInformation*(dwIndex: DWORD, lpTimeZoneInformation: PDYNAMIC_TIME_ZONE_INFORMATION): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetDynamicTimeZoneInformationEffectiveYears*(lpTimeZoneInformation: PDYNAMIC_TIME_ZONE_INFORMATION, FirstYear: LPDWORD, LastYear: LPDWORD): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SystemTimeToTzSpecificLocalTimeEx*(lpTimeZoneInformation: ptr DYNAMIC_TIME_ZONE_INFORMATION, lpUniversalTime: ptr SYSTEMTIME, lpLocalTime: LPSYSTEMTIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc TzSpecificLocalTimeToSystemTimeEx*(lpTimeZoneInformation: ptr DYNAMIC_TIME_ZONE_INFORMATION, lpLocalTime: ptr SYSTEMTIME, lpUniversalTime: LPSYSTEMTIME): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetTimeZoneInformation*(lpTimeZoneInformation: ptr TIME_ZONE_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetDynamicTimeZoneInformation*(lpTimeZoneInformation: ptr DYNAMIC_TIME_ZONE_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemPowerStatus*(lpSystemPowerStatus: LPSYSTEM_POWER_STATUS): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetSystemPowerState*(fSuspend: WINBOOL, fForce: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RegisterBadMemoryNotification*(Callback: PBAD_MEMORY_CALLBACK_ROUTINE): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc UnregisterBadMemoryNotification*(RegistrationHandle: PVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetMemoryErrorHandlingCapabilities*(Capabilities: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AllocateUserPhysicalPages*(hProcess: HANDLE, NumberOfPages: PULONG_PTR, PageArray: PULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FreeUserPhysicalPages*(hProcess: HANDLE, NumberOfPages: PULONG_PTR, PageArray: PULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MapUserPhysicalPages*(VirtualAddress: PVOID, NumberOfPages: ULONG_PTR, PageArray: PULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MapUserPhysicalPagesScatter*(VirtualAddresses: ptr PVOID, NumberOfPages: ULONG_PTR, PageArray: PULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateJobObjectA*(lpJobAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateJobObjectW*(lpJobAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenJobObjectA*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenJobObjectW*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AssignProcessToJobObject*(hJob: HANDLE, hProcess: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc TerminateJobObject*(hJob: HANDLE, uExitCode: UINT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryInformationJobObject*(hJob: HANDLE, JobObjectInformationClass: JOBOBJECTINFOCLASS, lpJobObjectInformation: LPVOID, cbJobObjectInformationLength: DWORD, lpReturnLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetInformationJobObject*(hJob: HANDLE, JobObjectInformationClass: JOBOBJECTINFOCLASS, lpJobObjectInformation: LPVOID, cbJobObjectInformationLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateJobSet*(NumJob: ULONG, UserJobSet: PJOB_SET_ARRAY, Flags: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstVolumeA*(lpszVolumeName: LPSTR, cchBufferLength: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindNextVolumeA*(hFindVolume: HANDLE, lpszVolumeName: LPSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstVolumeMountPointA*(lpszRootPathName: LPCSTR, lpszVolumeMountPoint: LPSTR, cchBufferLength: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindFirstVolumeMountPointW*(lpszRootPathName: LPCWSTR, lpszVolumeMountPoint: LPWSTR, cchBufferLength: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindNextVolumeMountPointA*(hFindVolumeMountPoint: HANDLE, lpszVolumeMountPoint: LPSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindNextVolumeMountPointW*(hFindVolumeMountPoint: HANDLE, lpszVolumeMountPoint: LPWSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindVolumeMountPointClose*(hFindVolumeMountPoint: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetVolumeMountPointA*(lpszVolumeMountPoint: LPCSTR, lpszVolumeName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetVolumeMountPointW*(lpszVolumeMountPoint: LPCWSTR, lpszVolumeName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeleteVolumeMountPointA*(lpszVolumeMountPoint: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetVolumeNameForVolumeMountPointA*(lpszVolumeMountPoint: LPCSTR, lpszVolumeName: LPSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetVolumePathNameA*(lpszFileName: LPCSTR, lpszVolumePathName: LPSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetVolumePathNamesForVolumeNameA*(lpszVolumeName: LPCSTR, lpszVolumePathNames: LPCH, cchBufferLength: DWORD, lpcchReturnLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AllocateUserPhysicalPagesNuma*(hProcess: HANDLE, NumberOfPages: PULONG_PTR, PageArray: PULONG_PTR, nndPreferred: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateActCtxA*(pActCtx: PCACTCTXA): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateActCtxW*(pActCtx: PCACTCTXW): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AddRefActCtx*(hActCtx: HANDLE): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReleaseActCtx*(hActCtx: HANDLE): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ZombifyActCtx*(hActCtx: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ActivateActCtx*(hActCtx: HANDLE, lpCookie: ptr ULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DeactivateActCtx*(dwFlags: DWORD, ulCookie: ULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCurrentActCtx*(lphActCtx: ptr HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindActCtxSectionStringA*(dwFlags: DWORD, lpExtensionGuid: ptr GUID, ulSectionId: ULONG, lpStringToFind: LPCSTR, ReturnedData: PACTCTX_SECTION_KEYED_DATA): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindActCtxSectionStringW*(dwFlags: DWORD, lpExtensionGuid: ptr GUID, ulSectionId: ULONG, lpStringToFind: LPCWSTR, ReturnedData: PACTCTX_SECTION_KEYED_DATA): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindActCtxSectionGuid*(dwFlags: DWORD, lpExtensionGuid: ptr GUID, ulSectionId: ULONG, lpGuidToFind: ptr GUID, ReturnedData: PACTCTX_SECTION_KEYED_DATA): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryActCtxW*(dwFlags: DWORD, hActCtx: HANDLE, pvSubInstance: PVOID, ulInfoClass: ULONG, pvBuffer: PVOID, cbBuffer: SIZE_T, pcbWrittenOrRequired: ptr SIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WTSGetActiveConsoleSessionId*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumaProcessorNode*(Processor: UCHAR, NodeNumber: PUCHAR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumaNodeProcessorMask*(Node: UCHAR, ProcessorMask: PULONGLONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumaAvailableMemoryNode*(Node: UCHAR, AvailableBytes: PULONGLONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumaProximityNode*(ProximityId: ULONG, NodeNumber: PUCHAR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetActiveProcessorGroupCount*(): WORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetMaximumProcessorGroupCount*(): WORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetActiveProcessorCount*(GroupNumber: WORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetMaximumProcessorCount*(GroupNumber: WORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumaNodeNumberFromHandle*(hFile: HANDLE, NodeNumber: PUSHORT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumaProcessorNodeEx*(Processor: PPROCESSOR_NUMBER, NodeNumber: PUSHORT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumaAvailableMemoryNodeEx*(Node: USHORT, AvailableBytes: PULONGLONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumaProximityNodeEx*(ProximityId: ULONG, NodeNumber: PUSHORT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RegisterApplicationRecoveryCallback*(pRecoveyCallback: APPLICATION_RECOVERY_CALLBACK, pvParameter: PVOID, dwPingInterval: DWORD, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc UnregisterApplicationRecoveryCallback*(): HRESULT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RegisterApplicationRestart*(pwzCommandline: PCWSTR, dwFlags: DWORD): HRESULT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc UnregisterApplicationRestart*(): HRESULT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetApplicationRecoveryCallback*(hProcess: HANDLE, pRecoveryCallback: ptr APPLICATION_RECOVERY_CALLBACK, ppvParameter: ptr PVOID, pdwPingInterval: PDWORD, pdwFlags: PDWORD): HRESULT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetApplicationRestartSettings*(hProcess: HANDLE, pwzCommandline: PWSTR, pcchSize: PDWORD, pdwFlags: PDWORD): HRESULT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ApplicationRecoveryInProgress*(pbCancelled: PBOOL): HRESULT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ApplicationRecoveryFinished*(bSuccess: WINBOOL): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFileInformationByHandleEx*(hFile: HANDLE, FileInformationClass: FILE_INFO_BY_HANDLE_CLASS, lpFileInformation: LPVOID, dwBufferSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc OpenFileById*(hVolumeHint: HANDLE, lpFileId: LPFILE_ID_DESCRIPTOR, dwDesiredAccess: DWORD, dwShareMode: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, dwFlagsAndAttributes: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateSymbolicLinkA*(lpSymlinkFileName: LPCSTR, lpTargetFileName: LPCSTR, dwFlags: DWORD): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateSymbolicLinkW*(lpSymlinkFileName: LPCWSTR, lpTargetFileName: LPCWSTR, dwFlags: DWORD): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateSymbolicLinkTransactedA*(lpSymlinkFileName: LPCSTR, lpTargetFileName: LPCSTR, dwFlags: DWORD, hTransaction: HANDLE): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateSymbolicLinkTransactedW*(lpSymlinkFileName: LPCWSTR, lpTargetFileName: LPCWSTR, dwFlags: DWORD, hTransaction: HANDLE): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryActCtxSettingsW*(dwFlags: DWORD, hActCtx: HANDLE, settingsNameSpace: PCWSTR, settingName: PCWSTR, pvBuffer: PWSTR, dwBuffer: SIZE_T, pdwWrittenOrRequired: ptr SIZE_T): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReplacePartitionUnit*(TargetPartition: PWSTR, SparePartition: PWSTR, Flags: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AddSecureMemoryCacheCallback*(pfnCallBack: PSECURE_MEMORY_CACHE_CALLBACK): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RemoveSecureMemoryCacheCallback*(pfnCallBack: PSECURE_MEMORY_CACHE_CALLBACK): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CopyContext*(Destination: PCONTEXT, ContextFlags: DWORD, Source: PCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc InitializeContext*(Buffer: PVOID, ContextFlags: DWORD, Context: ptr PCONTEXT, ContextLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnableThreadProfiling*(ThreadHandle: HANDLE, Flags: DWORD, HardwareCounters: DWORD64, PerformanceDataHandle: ptr HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc DisableThreadProfiling*(PerformanceDataHandle: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc QueryThreadProfiling*(ThreadHandle: HANDLE, Enabled: PBOOLEAN): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReadThreadProfilingData*(PerformanceDataHandle: HANDLE, Flags: DWORD, PerformanceData: PPERFORMANCE_DATA): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCurrentTime*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetTickCount".}
-proc LockSegment*(hMem: HGLOBAL): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalFix".}
-proc UnlockSegment*(hMem: HGLOBAL): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalUnfix".}
-proc FreeModule*(hLibModule: HMODULE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FreeLibrary".}
-proc InterlockedPushListSList*(ListHead: PSLIST_HEADER, List: PSLIST_ENTRY, ListEnd: PSLIST_ENTRY, Count: ULONG): PSLIST_ENTRY {.winapi, stdcall, dynlib: "kernel32", importc: "InterlockedPushListSListEx".}
-template HasOverlappedIoCompleted*(lpOverlapped: LPOVERLAPPED): bool = lpOverlapped.Internal != STATUS_PENDING
-template RtlSecureZeroMemory*(Destination: PVOID, Length: SIZE_T) = zeroMem(Destination, Length)
-template SecureZeroMemory*(Destination: PVOID, Length: SIZE_T) = zeroMem(Destination, Length)
-template RtlZeroMemory*(Destination: PVOID, Length: SIZE_T) = zeroMem(Destination, Length)
-template ZeroMemory*(Destination: PVOID, Length: SIZE_T) = zeroMem(Destination, Length)
-template RtlCopyMemory*(Destination: PVOID, Source: PVOID, Length: SIZE_T) = copyMem(Destination, Source, Length)
-template CopyMemory*(Destination: PVOID, Source: PVOID, Length: SIZE_T) = copyMem(Destination, Source, Length)
-template MAKEINTATOM*(i: untyped): untyped = cast[LPTSTR](i and 0xffff)
-proc LocalDiscard*(h: HLOCAL): HLOCAL {.winapi, inline.} = LocalReAlloc(h, 0, LMEM_MOVEABLE)
-proc GlobalDiscard*(h: HGLOBAL): HGLOBAL {.winapi, inline.} = GlobalReAlloc(h, 0, GMEM_MOVEABLE)
+proc GetVolumeInformationA*(
+  lpRootPathName: LPCSTR,
+  lpVolumeNameBuffer: LPSTR,
+  nVolumeNameSize: DWORD,
+  lpVolumeSerialNumber: LPDWORD,
+  lpMaximumComponentLength: LPDWORD,
+  lpFileSystemFlags: LPDWORD,
+  lpFileSystemNameBuffer: LPSTR,
+  nFileSystemNameSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ClearEventLogA*(
+  hEventLog: HANDLE, lpBackupFileName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ClearEventLogW*(
+  hEventLog: HANDLE, lpBackupFileName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BackupEventLogA*(
+  hEventLog: HANDLE, lpBackupFileName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BackupEventLogW*(
+  hEventLog: HANDLE, lpBackupFileName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CloseEventLog*(
+  hEventLog: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc DeregisterEventSource*(
+  hEventLog: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc NotifyChangeEventLog*(
+  hEventLog: HANDLE, hEvent: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetNumberOfEventLogRecords*(
+  hEventLog: HANDLE, NumberOfRecords: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetOldestEventLogRecord*(
+  hEventLog: HANDLE, OldestRecord: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc OpenEventLogA*(
+  lpUNCServerName: LPCSTR, lpSourceName: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc OpenEventLogW*(
+  lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegisterEventSourceA*(
+  lpUNCServerName: LPCSTR, lpSourceName: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegisterEventSourceW*(
+  lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc OpenBackupEventLogA*(
+  lpUNCServerName: LPCSTR, lpFileName: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc OpenBackupEventLogW*(
+  lpUNCServerName: LPCWSTR, lpFileName: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ReadEventLogA*(
+  hEventLog: HANDLE,
+  dwReadFlags: DWORD,
+  dwRecordOffset: DWORD,
+  lpBuffer: LPVOID,
+  nNumberOfBytesToRead: DWORD,
+  pnBytesRead: ptr DWORD,
+  pnMinNumberOfBytesNeeded: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ReadEventLogW*(
+  hEventLog: HANDLE,
+  dwReadFlags: DWORD,
+  dwRecordOffset: DWORD,
+  lpBuffer: LPVOID,
+  nNumberOfBytesToRead: DWORD,
+  pnBytesRead: ptr DWORD,
+  pnMinNumberOfBytesNeeded: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ReportEventA*(
+  hEventLog: HANDLE,
+  wType: WORD,
+  wCategory: WORD,
+  dwEventID: DWORD,
+  lpUserSid: PSID,
+  wNumStrings: WORD,
+  dwDataSize: DWORD,
+  lpStrings: ptr LPCSTR,
+  lpRawData: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ReportEventW*(
+  hEventLog: HANDLE,
+  wType: WORD,
+  wCategory: WORD,
+  dwEventID: DWORD,
+  lpUserSid: PSID,
+  wNumStrings: WORD,
+  dwDataSize: DWORD,
+  lpStrings: ptr LPCWSTR,
+  lpRawData: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetNamedPipeClientComputerName*(
+  Pipe: HANDLE, ClientComputerName: LPSTR, ClientComputerNameLength: ULONG
+): WINBOOL {.
+  winapi, stdcall, dynlib: "kernel32", importc: "GetNamedPipeClientComputerNameA"
+.}
+
+proc GetEventLogInformation*(
+  hEventLog: HANDLE,
+  dwInfoLevel: DWORD,
+  lpBuffer: LPVOID,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc OperationStart*(
+  OperationStartParams: ptr OPERATION_START_PARAMETERS
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc OperationEnd*(
+  OperationEndParams: ptr OPERATION_END_PARAMETERS
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AccessCheckAndAuditAlarmA*(
+  SubsystemName: LPCSTR,
+  HandleId: LPVOID,
+  ObjectTypeName: LPSTR,
+  ObjectName: LPSTR,
+  SecurityDescriptor: PSECURITY_DESCRIPTOR,
+  DesiredAccess: DWORD,
+  GenericMapping: PGENERIC_MAPPING,
+  ObjectCreation: WINBOOL,
+  GrantedAccess: LPDWORD,
+  AccessStatus: LPBOOL,
+  pfGenerateOnClose: LPBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AccessCheckByTypeAndAuditAlarmA*(
+  SubsystemName: LPCSTR,
+  HandleId: LPVOID,
+  ObjectTypeName: LPCSTR,
+  ObjectName: LPCSTR,
+  SecurityDescriptor: PSECURITY_DESCRIPTOR,
+  PrincipalSelfSid: PSID,
+  DesiredAccess: DWORD,
+  AuditType: AUDIT_EVENT_TYPE,
+  Flags: DWORD,
+  ObjectTypeList: POBJECT_TYPE_LIST,
+  ObjectTypeListLength: DWORD,
+  GenericMapping: PGENERIC_MAPPING,
+  ObjectCreation: WINBOOL,
+  GrantedAccess: LPDWORD,
+  AccessStatus: LPBOOL,
+  pfGenerateOnClose: LPBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AccessCheckByTypeResultListAndAuditAlarmA*(
+  SubsystemName: LPCSTR,
+  HandleId: LPVOID,
+  ObjectTypeName: LPCSTR,
+  ObjectName: LPCSTR,
+  SecurityDescriptor: PSECURITY_DESCRIPTOR,
+  PrincipalSelfSid: PSID,
+  DesiredAccess: DWORD,
+  AuditType: AUDIT_EVENT_TYPE,
+  Flags: DWORD,
+  ObjectTypeList: POBJECT_TYPE_LIST,
+  ObjectTypeListLength: DWORD,
+  GenericMapping: PGENERIC_MAPPING,
+  ObjectCreation: WINBOOL,
+  GrantedAccess: LPDWORD,
+  AccessStatusList: LPDWORD,
+  pfGenerateOnClose: LPBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AccessCheckByTypeResultListAndAuditAlarmByHandleA*(
+  SubsystemName: LPCSTR,
+  HandleId: LPVOID,
+  ClientToken: HANDLE,
+  ObjectTypeName: LPCSTR,
+  ObjectName: LPCSTR,
+  SecurityDescriptor: PSECURITY_DESCRIPTOR,
+  PrincipalSelfSid: PSID,
+  DesiredAccess: DWORD,
+  AuditType: AUDIT_EVENT_TYPE,
+  Flags: DWORD,
+  ObjectTypeList: POBJECT_TYPE_LIST,
+  ObjectTypeListLength: DWORD,
+  GenericMapping: PGENERIC_MAPPING,
+  ObjectCreation: WINBOOL,
+  GrantedAccess: LPDWORD,
+  AccessStatusList: LPDWORD,
+  pfGenerateOnClose: LPBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ObjectOpenAuditAlarmA*(
+  SubsystemName: LPCSTR,
+  HandleId: LPVOID,
+  ObjectTypeName: LPSTR,
+  ObjectName: LPSTR,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  ClientToken: HANDLE,
+  DesiredAccess: DWORD,
+  GrantedAccess: DWORD,
+  Privileges: PPRIVILEGE_SET,
+  ObjectCreation: WINBOOL,
+  AccessGranted: WINBOOL,
+  GenerateOnClose: LPBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ObjectPrivilegeAuditAlarmA*(
+  SubsystemName: LPCSTR,
+  HandleId: LPVOID,
+  ClientToken: HANDLE,
+  DesiredAccess: DWORD,
+  Privileges: PPRIVILEGE_SET,
+  AccessGranted: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ObjectCloseAuditAlarmA*(
+  SubsystemName: LPCSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ObjectDeleteAuditAlarmA*(
+  SubsystemName: LPCSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc PrivilegedServiceAuditAlarmA*(
+  SubsystemName: LPCSTR,
+  ServiceName: LPCSTR,
+  ClientToken: HANDLE,
+  Privileges: PPRIVILEGE_SET,
+  AccessGranted: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetFileSecurityA*(
+  lpFileName: LPCSTR,
+  SecurityInformation: SECURITY_INFORMATION,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetFileSecurityA*(
+  lpFileName: LPCSTR,
+  RequestedInformation: SECURITY_INFORMATION,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  nLength: DWORD,
+  lpnLengthNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ReadDirectoryChangesW*(
+  hDirectory: HANDLE,
+  lpBuffer: LPVOID,
+  nBufferLength: DWORD,
+  bWatchSubtree: WINBOOL,
+  dwNotifyFilter: DWORD,
+  lpBytesReturned: LPDWORD,
+  lpOverlapped: LPOVERLAPPED,
+  lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsBadReadPtr*(
+  lp: pointer, ucb: UINT_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsBadWritePtr*(
+  lp: LPVOID, ucb: UINT_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsBadHugeReadPtr*(
+  lp: pointer, ucb: UINT_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsBadHugeWritePtr*(
+  lp: LPVOID, ucb: UINT_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsBadCodePtr*(
+  lpfn: FARPROC
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsBadStringPtrA*(
+  lpsz: LPCSTR, ucchMax: UINT_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsBadStringPtrW*(
+  lpsz: LPCWSTR, ucchMax: UINT_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MapViewOfFileExNuma*(
+  hFileMappingObject: HANDLE,
+  dwDesiredAccess: DWORD,
+  dwFileOffsetHigh: DWORD,
+  dwFileOffsetLow: DWORD,
+  dwNumberOfBytesToMap: SIZE_T,
+  lpBaseAddress: LPVOID,
+  nndPreferred: DWORD,
+): LPVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AddConditionalAce*(
+  pAcl: PACL,
+  dwAceRevision: DWORD,
+  AceFlags: DWORD,
+  AceType: UCHAR,
+  AccessMask: DWORD,
+  pSid: PSID,
+  ConditionStr: PWCHAR,
+  ReturnLength: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LookupAccountSidA*(
+  lpSystemName: LPCSTR,
+  Sid: PSID,
+  Name: LPSTR,
+  cchName: LPDWORD,
+  ReferencedDomainName: LPSTR,
+  cchReferencedDomainName: LPDWORD,
+  peUse: PSID_NAME_USE,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LookupAccountSidW*(
+  lpSystemName: LPCWSTR,
+  Sid: PSID,
+  Name: LPWSTR,
+  cchName: LPDWORD,
+  ReferencedDomainName: LPWSTR,
+  cchReferencedDomainName: LPDWORD,
+  peUse: PSID_NAME_USE,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LookupAccountNameA*(
+  lpSystemName: LPCSTR,
+  lpAccountName: LPCSTR,
+  Sid: PSID,
+  cbSid: LPDWORD,
+  ReferencedDomainName: LPSTR,
+  cchReferencedDomainName: LPDWORD,
+  peUse: PSID_NAME_USE,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LookupAccountNameW*(
+  lpSystemName: LPCWSTR,
+  lpAccountName: LPCWSTR,
+  Sid: PSID,
+  cbSid: LPDWORD,
+  ReferencedDomainName: LPWSTR,
+  cchReferencedDomainName: LPDWORD,
+  peUse: PSID_NAME_USE,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LookupPrivilegeValueA*(
+  lpSystemName: LPCSTR, lpName: LPCSTR, lpLuid: PLUID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LookupPrivilegeValueW*(
+  lpSystemName: LPCWSTR, lpName: LPCWSTR, lpLuid: PLUID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LookupPrivilegeNameA*(
+  lpSystemName: LPCSTR, lpLuid: PLUID, lpName: LPSTR, cchName: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LookupPrivilegeNameW*(
+  lpSystemName: LPCWSTR, lpLuid: PLUID, lpName: LPWSTR, cchName: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LookupPrivilegeDisplayNameA*(
+  lpSystemName: LPCSTR,
+  lpName: LPCSTR,
+  lpDisplayName: LPSTR,
+  cchDisplayName: LPDWORD,
+  lpLanguageId: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LookupPrivilegeDisplayNameW*(
+  lpSystemName: LPCWSTR,
+  lpName: LPCWSTR,
+  lpDisplayName: LPWSTR,
+  cchDisplayName: LPDWORD,
+  lpLanguageId: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BuildCommDCBA*(
+  lpDef: LPCSTR, lpDCB: LPDCB
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc BuildCommDCBW*(
+  lpDef: LPCWSTR, lpDCB: LPDCB
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc BuildCommDCBAndTimeoutsA*(
+  lpDef: LPCSTR, lpDCB: LPDCB, lpCommTimeouts: LPCOMMTIMEOUTS
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc BuildCommDCBAndTimeoutsW*(
+  lpDef: LPCWSTR, lpDCB: LPDCB, lpCommTimeouts: LPCOMMTIMEOUTS
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CommConfigDialogA*(
+  lpszName: LPCSTR, hWnd: HWND, lpCC: LPCOMMCONFIG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CommConfigDialogW*(
+  lpszName: LPCWSTR, hWnd: HWND, lpCC: LPCOMMCONFIG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDefaultCommConfigA*(
+  lpszName: LPCSTR, lpCC: LPCOMMCONFIG, lpdwSize: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDefaultCommConfigW*(
+  lpszName: LPCWSTR, lpCC: LPCOMMCONFIG, lpdwSize: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetDefaultCommConfigA*(
+  lpszName: LPCSTR, lpCC: LPCOMMCONFIG, dwSize: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetDefaultCommConfigW*(
+  lpszName: LPCWSTR, lpCC: LPCOMMCONFIG, dwSize: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetComputerNameA*(
+  lpBuffer: LPSTR, nSize: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetComputerNameW*(
+  lpBuffer: LPWSTR, nSize: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetComputerNameA*(
+  lpComputerName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetComputerNameW*(
+  lpComputerName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetComputerNameExA*(
+  NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPCTSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DnsHostnameToComputerNameA*(
+  Hostname: LPCSTR, ComputerName: LPSTR, nSize: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DnsHostnameToComputerNameW*(
+  Hostname: LPCWSTR, ComputerName: LPWSTR, nSize: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetUserNameA*(
+  lpBuffer: LPSTR, pcbBuffer: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetUserNameW*(
+  lpBuffer: LPWSTR, pcbBuffer: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LogonUserA*(
+  lpszUsername: LPCSTR,
+  lpszDomain: LPCSTR,
+  lpszPassword: LPCSTR,
+  dwLogonType: DWORD,
+  dwLogonProvider: DWORD,
+  phToken: PHANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LogonUserW*(
+  lpszUsername: LPCWSTR,
+  lpszDomain: LPCWSTR,
+  lpszPassword: LPCWSTR,
+  dwLogonType: DWORD,
+  dwLogonProvider: DWORD,
+  phToken: PHANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LogonUserExA*(
+  lpszUsername: LPCSTR,
+  lpszDomain: LPCSTR,
+  lpszPassword: LPCSTR,
+  dwLogonType: DWORD,
+  dwLogonProvider: DWORD,
+  phToken: PHANDLE,
+  ppLogonSid: ptr PSID,
+  ppProfileBuffer: ptr PVOID,
+  pdwProfileLength: LPDWORD,
+  pQuotaLimits: PQUOTA_LIMITS,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LogonUserExW*(
+  lpszUsername: LPCWSTR,
+  lpszDomain: LPCWSTR,
+  lpszPassword: LPCWSTR,
+  dwLogonType: DWORD,
+  dwLogonProvider: DWORD,
+  phToken: PHANDLE,
+  ppLogonSid: ptr PSID,
+  ppProfileBuffer: ptr PVOID,
+  pdwProfileLength: LPDWORD,
+  pQuotaLimits: PQUOTA_LIMITS,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CreateProcessAsUserA*(
+  hToken: HANDLE,
+  lpApplicationName: LPCSTR,
+  lpCommandLine: LPSTR,
+  lpProcessAttributes: LPSECURITY_ATTRIBUTES,
+  lpThreadAttributes: LPSECURITY_ATTRIBUTES,
+  bInheritHandles: WINBOOL,
+  dwCreationFlags: DWORD,
+  lpEnvironment: LPVOID,
+  lpCurrentDirectory: LPCSTR,
+  lpStartupInfo: LPSTARTUPINFOA,
+  lpProcessInformation: LPPROCESS_INFORMATION,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CreateProcessWithLogonW*(
+  lpUsername: LPCWSTR,
+  lpDomain: LPCWSTR,
+  lpPassword: LPCWSTR,
+  dwLogonFlags: DWORD,
+  lpApplicationName: LPCWSTR,
+  lpCommandLine: LPWSTR,
+  dwCreationFlags: DWORD,
+  lpEnvironment: LPVOID,
+  lpCurrentDirectory: LPCWSTR,
+  lpStartupInfo: LPSTARTUPINFOW,
+  lpProcessInformation: LPPROCESS_INFORMATION,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CreateProcessWithTokenW*(
+  hToken: HANDLE,
+  dwLogonFlags: DWORD,
+  lpApplicationName: LPCWSTR,
+  lpCommandLine: LPWSTR,
+  dwCreationFlags: DWORD,
+  lpEnvironment: LPVOID,
+  lpCurrentDirectory: LPCWSTR,
+  lpStartupInfo: LPSTARTUPINFOW,
+  lpProcessInformation: LPPROCESS_INFORMATION,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc IsTokenUntrusted*(
+  TokenHandle: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegisterWaitForSingleObject*(
+  phNewWaitObject: PHANDLE,
+  hObject: HANDLE,
+  Callback: WAITORTIMERCALLBACK,
+  Context: PVOID,
+  dwMilliseconds: ULONG,
+  dwFlags: ULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc UnregisterWait*(
+  WaitHandle: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc BindIoCompletionCallback*(
+  FileHandle: HANDLE, Function: LPOVERLAPPED_COMPLETION_ROUTINE, Flags: ULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetTimerQueueTimer*(
+  TimerQueue: HANDLE,
+  Callback: WAITORTIMERCALLBACK,
+  Parameter: PVOID,
+  DueTime: DWORD,
+  Period: DWORD,
+  PreferIo: WINBOOL,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CancelTimerQueueTimer*(
+  TimerQueue: HANDLE, Timer: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeleteTimerQueue*(
+  TimerQueue: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreatePrivateNamespaceA*(
+  lpPrivateNamespaceAttributes: LPSECURITY_ATTRIBUTES,
+  lpBoundaryDescriptor: LPVOID,
+  lpAliasPrefix: LPCSTR,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenPrivateNamespaceA*(
+  lpBoundaryDescriptor: LPVOID, lpAliasPrefix: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateBoundaryDescriptorA*(
+  Name: LPCSTR, Flags: ULONG
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AddIntegrityLabelToBoundaryDescriptor*(
+  BoundaryDescriptor: ptr HANDLE, IntegrityLabel: PSID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCurrentHwProfileA*(
+  lpHwProfileInfo: LPHW_PROFILE_INFOA
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetCurrentHwProfileW*(
+  lpHwProfileInfo: LPHW_PROFILE_INFOW
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc VerifyVersionInfoA*(
+  lpVersionInformation: LPOSVERSIONINFOEXA,
+  dwTypeMask: DWORD,
+  dwlConditionMask: DWORDLONG,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc VerifyVersionInfoW*(
+  lpVersionInformation: LPOSVERSIONINFOEXW,
+  dwTypeMask: DWORD,
+  dwlConditionMask: DWORDLONG,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SystemTimeToTzSpecificLocalTime*(
+  lpTimeZoneInformation: ptr TIME_ZONE_INFORMATION,
+  lpUniversalTime: ptr SYSTEMTIME,
+  lpLocalTime: LPSYSTEMTIME,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc TzSpecificLocalTimeToSystemTime*(
+  lpTimeZoneInformation: ptr TIME_ZONE_INFORMATION,
+  lpLocalTime: ptr SYSTEMTIME,
+  lpUniversalTime: LPSYSTEMTIME,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FileTimeToSystemTime*(
+  lpFileTime: ptr FILETIME, lpSystemTime: LPSYSTEMTIME
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SystemTimeToFileTime*(
+  lpSystemTime: ptr SYSTEMTIME, lpFileTime: LPFILETIME
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetTimeZoneInformation*(
+  lpTimeZoneInformation: LPTIME_ZONE_INFORMATION
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDynamicTimeZoneInformation*(
+  pTimeZoneInformation: PDYNAMIC_TIME_ZONE_INFORMATION
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetTimeZoneInformationForYear*(
+  wYear: USHORT, pdtzi: PDYNAMIC_TIME_ZONE_INFORMATION, ptzi: LPTIME_ZONE_INFORMATION
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumDynamicTimeZoneInformation*(
+  dwIndex: DWORD, lpTimeZoneInformation: PDYNAMIC_TIME_ZONE_INFORMATION
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetDynamicTimeZoneInformationEffectiveYears*(
+  lpTimeZoneInformation: PDYNAMIC_TIME_ZONE_INFORMATION,
+  FirstYear: LPDWORD,
+  LastYear: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SystemTimeToTzSpecificLocalTimeEx*(
+  lpTimeZoneInformation: ptr DYNAMIC_TIME_ZONE_INFORMATION,
+  lpUniversalTime: ptr SYSTEMTIME,
+  lpLocalTime: LPSYSTEMTIME,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc TzSpecificLocalTimeToSystemTimeEx*(
+  lpTimeZoneInformation: ptr DYNAMIC_TIME_ZONE_INFORMATION,
+  lpLocalTime: ptr SYSTEMTIME,
+  lpUniversalTime: LPSYSTEMTIME,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetTimeZoneInformation*(
+  lpTimeZoneInformation: ptr TIME_ZONE_INFORMATION
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetDynamicTimeZoneInformation*(
+  lpTimeZoneInformation: ptr DYNAMIC_TIME_ZONE_INFORMATION
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemPowerStatus*(
+  lpSystemPowerStatus: LPSYSTEM_POWER_STATUS
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetSystemPowerState*(
+  fSuspend: WINBOOL, fForce: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RegisterBadMemoryNotification*(
+  Callback: PBAD_MEMORY_CALLBACK_ROUTINE
+): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc UnregisterBadMemoryNotification*(
+  RegistrationHandle: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetMemoryErrorHandlingCapabilities*(
+  Capabilities: PULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AllocateUserPhysicalPages*(
+  hProcess: HANDLE, NumberOfPages: PULONG_PTR, PageArray: PULONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FreeUserPhysicalPages*(
+  hProcess: HANDLE, NumberOfPages: PULONG_PTR, PageArray: PULONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MapUserPhysicalPages*(
+  VirtualAddress: PVOID, NumberOfPages: ULONG_PTR, PageArray: PULONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MapUserPhysicalPagesScatter*(
+  VirtualAddresses: ptr PVOID, NumberOfPages: ULONG_PTR, PageArray: PULONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateJobObjectA*(
+  lpJobAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateJobObjectW*(
+  lpJobAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenJobObjectA*(
+  dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenJobObjectW*(
+  dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AssignProcessToJobObject*(
+  hJob: HANDLE, hProcess: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc TerminateJobObject*(
+  hJob: HANDLE, uExitCode: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryInformationJobObject*(
+  hJob: HANDLE,
+  JobObjectInformationClass: JOBOBJECTINFOCLASS,
+  lpJobObjectInformation: LPVOID,
+  cbJobObjectInformationLength: DWORD,
+  lpReturnLength: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetInformationJobObject*(
+  hJob: HANDLE,
+  JobObjectInformationClass: JOBOBJECTINFOCLASS,
+  lpJobObjectInformation: LPVOID,
+  cbJobObjectInformationLength: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateJobSet*(
+  NumJob: ULONG, UserJobSet: PJOB_SET_ARRAY, Flags: ULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstVolumeA*(
+  lpszVolumeName: LPSTR, cchBufferLength: DWORD
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindNextVolumeA*(
+  hFindVolume: HANDLE, lpszVolumeName: LPSTR, cchBufferLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstVolumeMountPointA*(
+  lpszRootPathName: LPCSTR, lpszVolumeMountPoint: LPSTR, cchBufferLength: DWORD
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindFirstVolumeMountPointW*(
+  lpszRootPathName: LPCWSTR, lpszVolumeMountPoint: LPWSTR, cchBufferLength: DWORD
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindNextVolumeMountPointA*(
+  hFindVolumeMountPoint: HANDLE, lpszVolumeMountPoint: LPSTR, cchBufferLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindNextVolumeMountPointW*(
+  hFindVolumeMountPoint: HANDLE, lpszVolumeMountPoint: LPWSTR, cchBufferLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindVolumeMountPointClose*(
+  hFindVolumeMountPoint: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetVolumeMountPointA*(
+  lpszVolumeMountPoint: LPCSTR, lpszVolumeName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetVolumeMountPointW*(
+  lpszVolumeMountPoint: LPCWSTR, lpszVolumeName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeleteVolumeMountPointA*(
+  lpszVolumeMountPoint: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetVolumeNameForVolumeMountPointA*(
+  lpszVolumeMountPoint: LPCSTR, lpszVolumeName: LPSTR, cchBufferLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetVolumePathNameA*(
+  lpszFileName: LPCSTR, lpszVolumePathName: LPSTR, cchBufferLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetVolumePathNamesForVolumeNameA*(
+  lpszVolumeName: LPCSTR,
+  lpszVolumePathNames: LPCH,
+  cchBufferLength: DWORD,
+  lpcchReturnLength: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AllocateUserPhysicalPagesNuma*(
+  hProcess: HANDLE,
+  NumberOfPages: PULONG_PTR,
+  PageArray: PULONG_PTR,
+  nndPreferred: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateActCtxA*(
+  pActCtx: PCACTCTXA
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateActCtxW*(
+  pActCtx: PCACTCTXW
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AddRefActCtx*(
+  hActCtx: HANDLE
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReleaseActCtx*(
+  hActCtx: HANDLE
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ZombifyActCtx*(
+  hActCtx: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ActivateActCtx*(
+  hActCtx: HANDLE, lpCookie: ptr ULONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DeactivateActCtx*(
+  dwFlags: DWORD, ulCookie: ULONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCurrentActCtx*(
+  lphActCtx: ptr HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindActCtxSectionStringA*(
+  dwFlags: DWORD,
+  lpExtensionGuid: ptr GUID,
+  ulSectionId: ULONG,
+  lpStringToFind: LPCSTR,
+  ReturnedData: PACTCTX_SECTION_KEYED_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindActCtxSectionStringW*(
+  dwFlags: DWORD,
+  lpExtensionGuid: ptr GUID,
+  ulSectionId: ULONG,
+  lpStringToFind: LPCWSTR,
+  ReturnedData: PACTCTX_SECTION_KEYED_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindActCtxSectionGuid*(
+  dwFlags: DWORD,
+  lpExtensionGuid: ptr GUID,
+  ulSectionId: ULONG,
+  lpGuidToFind: ptr GUID,
+  ReturnedData: PACTCTX_SECTION_KEYED_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryActCtxW*(
+  dwFlags: DWORD,
+  hActCtx: HANDLE,
+  pvSubInstance: PVOID,
+  ulInfoClass: ULONG,
+  pvBuffer: PVOID,
+  cbBuffer: SIZE_T,
+  pcbWrittenOrRequired: ptr SIZE_T,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WTSGetActiveConsoleSessionId*(): DWORD {.
+  winapi, stdcall, dynlib: "kernel32", importc
+.}
+
+proc GetNumaProcessorNode*(
+  Processor: UCHAR, NodeNumber: PUCHAR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNumaNodeProcessorMask*(
+  Node: UCHAR, ProcessorMask: PULONGLONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNumaAvailableMemoryNode*(
+  Node: UCHAR, AvailableBytes: PULONGLONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNumaProximityNode*(
+  ProximityId: ULONG, NodeNumber: PUCHAR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetActiveProcessorGroupCount*(): WORD {.
+  winapi, stdcall, dynlib: "kernel32", importc
+.}
+
+proc GetMaximumProcessorGroupCount*(): WORD {.
+  winapi, stdcall, dynlib: "kernel32", importc
+.}
+
+proc GetActiveProcessorCount*(
+  GroupNumber: WORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetMaximumProcessorCount*(
+  GroupNumber: WORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNumaNodeNumberFromHandle*(
+  hFile: HANDLE, NodeNumber: PUSHORT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNumaProcessorNodeEx*(
+  Processor: PPROCESSOR_NUMBER, NodeNumber: PUSHORT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNumaAvailableMemoryNodeEx*(
+  Node: USHORT, AvailableBytes: PULONGLONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNumaProximityNodeEx*(
+  ProximityId: ULONG, NodeNumber: PUSHORT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RegisterApplicationRecoveryCallback*(
+  pRecoveyCallback: APPLICATION_RECOVERY_CALLBACK,
+  pvParameter: PVOID,
+  dwPingInterval: DWORD,
+  dwFlags: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc UnregisterApplicationRecoveryCallback*(): HRESULT {.
+  winapi, stdcall, dynlib: "kernel32", importc
+.}
+
+proc RegisterApplicationRestart*(
+  pwzCommandline: PCWSTR, dwFlags: DWORD
+): HRESULT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc UnregisterApplicationRestart*(): HRESULT {.
+  winapi, stdcall, dynlib: "kernel32", importc
+.}
+
+proc GetApplicationRecoveryCallback*(
+  hProcess: HANDLE,
+  pRecoveryCallback: ptr APPLICATION_RECOVERY_CALLBACK,
+  ppvParameter: ptr PVOID,
+  pdwPingInterval: PDWORD,
+  pdwFlags: PDWORD,
+): HRESULT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetApplicationRestartSettings*(
+  hProcess: HANDLE, pwzCommandline: PWSTR, pcchSize: PDWORD, pdwFlags: PDWORD
+): HRESULT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ApplicationRecoveryInProgress*(
+  pbCancelled: PBOOL
+): HRESULT {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ApplicationRecoveryFinished*(
+  bSuccess: WINBOOL
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFileInformationByHandleEx*(
+  hFile: HANDLE,
+  FileInformationClass: FILE_INFO_BY_HANDLE_CLASS,
+  lpFileInformation: LPVOID,
+  dwBufferSize: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc OpenFileById*(
+  hVolumeHint: HANDLE,
+  lpFileId: LPFILE_ID_DESCRIPTOR,
+  dwDesiredAccess: DWORD,
+  dwShareMode: DWORD,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  dwFlagsAndAttributes: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateSymbolicLinkA*(
+  lpSymlinkFileName: LPCSTR, lpTargetFileName: LPCSTR, dwFlags: DWORD
+): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateSymbolicLinkW*(
+  lpSymlinkFileName: LPCWSTR, lpTargetFileName: LPCWSTR, dwFlags: DWORD
+): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateSymbolicLinkTransactedA*(
+  lpSymlinkFileName: LPCSTR,
+  lpTargetFileName: LPCSTR,
+  dwFlags: DWORD,
+  hTransaction: HANDLE,
+): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateSymbolicLinkTransactedW*(
+  lpSymlinkFileName: LPCWSTR,
+  lpTargetFileName: LPCWSTR,
+  dwFlags: DWORD,
+  hTransaction: HANDLE,
+): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryActCtxSettingsW*(
+  dwFlags: DWORD,
+  hActCtx: HANDLE,
+  settingsNameSpace: PCWSTR,
+  settingName: PCWSTR,
+  pvBuffer: PWSTR,
+  dwBuffer: SIZE_T,
+  pdwWrittenOrRequired: ptr SIZE_T,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReplacePartitionUnit*(
+  TargetPartition: PWSTR, SparePartition: PWSTR, Flags: ULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AddSecureMemoryCacheCallback*(
+  pfnCallBack: PSECURE_MEMORY_CACHE_CALLBACK
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RemoveSecureMemoryCacheCallback*(
+  pfnCallBack: PSECURE_MEMORY_CACHE_CALLBACK
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CopyContext*(
+  Destination: PCONTEXT, ContextFlags: DWORD, Source: PCONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc InitializeContext*(
+  Buffer: PVOID, ContextFlags: DWORD, Context: ptr PCONTEXT, ContextLength: PDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnableThreadProfiling*(
+  ThreadHandle: HANDLE,
+  Flags: DWORD,
+  HardwareCounters: DWORD64,
+  PerformanceDataHandle: ptr HANDLE,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc DisableThreadProfiling*(
+  PerformanceDataHandle: HANDLE
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc QueryThreadProfiling*(
+  ThreadHandle: HANDLE, Enabled: PBOOLEAN
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReadThreadProfilingData*(
+  PerformanceDataHandle: HANDLE, Flags: DWORD, PerformanceData: PPERFORMANCE_DATA
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCurrentTime*(): DWORD {.
+  winapi, stdcall, dynlib: "kernel32", importc: "GetTickCount"
+.}
+
+proc LockSegment*(
+  hMem: HGLOBAL
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalFix".}
+
+proc UnlockSegment*(
+  hMem: HGLOBAL
+): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalUnfix".}
+
+proc FreeModule*(
+  hLibModule: HMODULE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FreeLibrary".}
+
+proc InterlockedPushListSList*(
+  ListHead: PSLIST_HEADER, List: PSLIST_ENTRY, ListEnd: PSLIST_ENTRY, Count: ULONG
+): PSLIST_ENTRY {.
+  winapi, stdcall, dynlib: "kernel32", importc: "InterlockedPushListSListEx"
+.}
+
+template HasOverlappedIoCompleted*(lpOverlapped: LPOVERLAPPED): bool =
+  lpOverlapped.Internal != STATUS_PENDING
+
+template RtlSecureZeroMemory*(Destination: PVOID, Length: SIZE_T) =
+  zeroMem(Destination, Length)
+
+template SecureZeroMemory*(Destination: PVOID, Length: SIZE_T) =
+  zeroMem(Destination, Length)
+
+template RtlZeroMemory*(Destination: PVOID, Length: SIZE_T) =
+  zeroMem(Destination, Length)
+
+template ZeroMemory*(Destination: PVOID, Length: SIZE_T) =
+  zeroMem(Destination, Length)
+
+template RtlCopyMemory*(Destination: PVOID, Source: PVOID, Length: SIZE_T) =
+  copyMem(Destination, Source, Length)
+
+template CopyMemory*(Destination: PVOID, Source: PVOID, Length: SIZE_T) =
+  copyMem(Destination, Source, Length)
+
+template MAKEINTATOM*(i: untyped): untyped =
+  cast[LPTSTR](i and 0xffff)
+
+proc LocalDiscard*(h: HLOCAL): HLOCAL {.winapi, inline.} =
+  LocalReAlloc(h, 0, LMEM_MOVEABLE)
+
+proc GlobalDiscard*(h: HGLOBAL): HGLOBAL {.winapi, inline.} =
+  GlobalReAlloc(h, 0, GMEM_MOVEABLE)
+
 when winimAnsi:
-  proc LookupAccountName*(lpSystemName: LPCSTR, lpAccountName: LPCSTR, Sid: PSID, cbSid: LPDWORD, ReferencedDomainName: LPSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupAccountNameA".}
-proc LookupAccountNameLocalA*(lpAccountName: LPCSTR, Sid: PSID, cbSid: LPDWORD, ReferencedDomainName: LPSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, inline.} = LookupAccountNameA(nil, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse)
+  proc LookupAccountName*(
+    lpSystemName: LPCSTR,
+    lpAccountName: LPCSTR,
+    Sid: PSID,
+    cbSid: LPDWORD,
+    ReferencedDomainName: LPSTR,
+    cchReferencedDomainName: LPDWORD,
+    peUse: PSID_NAME_USE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupAccountNameA".}
+
+proc LookupAccountNameLocalA*(
+    lpAccountName: LPCSTR,
+    Sid: PSID,
+    cbSid: LPDWORD,
+    ReferencedDomainName: LPSTR,
+    cchReferencedDomainName: LPDWORD,
+    peUse: PSID_NAME_USE,
+): WINBOOL {.winapi, inline.} =
+  LookupAccountNameA(
+    nil, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse
+  )
+
 when winimUnicode:
-  proc LookupAccountName*(lpSystemName: LPCWSTR, lpAccountName: LPCWSTR, Sid: PSID, cbSid: LPDWORD, ReferencedDomainName: LPWSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupAccountNameW".}
-proc LookupAccountNameLocalW*(lpAccountName: LPCWSTR, Sid: PSID, cbSid: LPDWORD, ReferencedDomainName: LPWSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, inline.} = LookupAccountNameW(nil, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse)
+  proc LookupAccountName*(
+    lpSystemName: LPCWSTR,
+    lpAccountName: LPCWSTR,
+    Sid: PSID,
+    cbSid: LPDWORD,
+    ReferencedDomainName: LPWSTR,
+    cchReferencedDomainName: LPDWORD,
+    peUse: PSID_NAME_USE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupAccountNameW".}
+
+proc LookupAccountNameLocalW*(
+    lpAccountName: LPCWSTR,
+    Sid: PSID,
+    cbSid: LPDWORD,
+    ReferencedDomainName: LPWSTR,
+    cchReferencedDomainName: LPDWORD,
+    peUse: PSID_NAME_USE,
+): WINBOOL {.winapi, inline.} =
+  LookupAccountNameW(
+    nil, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse
+  )
+
 when winimAnsi:
-  proc LookupAccountSid*(lpSystemName: LPCSTR, Sid: PSID, Name: LPSTR, cchName: LPDWORD, ReferencedDomainName: LPSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupAccountSidA".}
-proc LookupAccountSidLocalA*(Sid: PSID, Name: LPSTR, cchName: LPDWORD, ReferencedDomainName: LPSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, inline.} = LookupAccountSidA(nil, Sid, Name, cchName, ReferencedDomainName, cchReferencedDomainName, peUse)
+  proc LookupAccountSid*(
+    lpSystemName: LPCSTR,
+    Sid: PSID,
+    Name: LPSTR,
+    cchName: LPDWORD,
+    ReferencedDomainName: LPSTR,
+    cchReferencedDomainName: LPDWORD,
+    peUse: PSID_NAME_USE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupAccountSidA".}
+
+proc LookupAccountSidLocalA*(
+    Sid: PSID,
+    Name: LPSTR,
+    cchName: LPDWORD,
+    ReferencedDomainName: LPSTR,
+    cchReferencedDomainName: LPDWORD,
+    peUse: PSID_NAME_USE,
+): WINBOOL {.winapi, inline.} =
+  LookupAccountSidA(
+    nil, Sid, Name, cchName, ReferencedDomainName, cchReferencedDomainName, peUse
+  )
+
 when winimUnicode:
-  proc LookupAccountSid*(lpSystemName: LPCWSTR, Sid: PSID, Name: LPWSTR, cchName: LPDWORD, ReferencedDomainName: LPWSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupAccountSidW".}
-proc LookupAccountSidLocalW*(Sid: PSID, Name: LPWSTR, cchName: LPDWORD, ReferencedDomainName: LPWSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, inline.} = LookupAccountSidW(nil, Sid, Name, cchName, ReferencedDomainName, cchReferencedDomainName, peUse)
-proc InterlockedOr*(Destination: ptr LONG, Value: LONG): LONG {.importc: "InterlockedOr", header: "<windows.h>".}
-proc InterlockedOr8*(Destination: ptr byte, Value: byte): byte {.importc: "InterlockedOr8", header: "<windows.h>".}
-proc InterlockedOr16*(Destination: ptr SHORT, Value: SHORT): SHORT {.importc: "InterlockedOr16", header: "<windows.h>".}
-proc InterlockedOr64*(Destination: ptr LONGLONG, Value: LONGLONG): LONGLONG {.importc: "InterlockedOr64", header: "<windows.h>".}
-proc InterlockedXor*(Destination: ptr LONG, Value: LONG): LONG {.importc: "InterlockedXor", header: "<windows.h>".}
-proc InterlockedXor8*(Destination: ptr byte, Value: byte): byte {.importc: "InterlockedXor8", header: "<windows.h>".}
-proc InterlockedXor16*(Destination: ptr SHORT, Value: SHORT): SHORT {.importc: "InterlockedXor16", header: "<windows.h>".}
-proc InterlockedXor64*(Destination: ptr LONGLONG, Value: LONGLONG): LONGLONG {.importc: "InterlockedXor64", header: "<windows.h>".}
-proc InterlockedAnd*(Destination: ptr LONG, Value: LONG): LONG {.importc: "InterlockedAnd", header: "<windows.h>".}
-proc InterlockedAnd8*(Destination: ptr byte, Value: byte): byte {.importc: "InterlockedAnd8", header: "<windows.h>".}
-proc InterlockedAnd16*(Destination: ptr SHORT, Value: SHORT): SHORT {.importc: "InterlockedAnd16", header: "<windows.h>".}
-proc InterlockedAnd64*(Destination: ptr LONGLONG, Value: LONGLONG): LONGLONG {.importc: "InterlockedAnd64", header: "<windows.h>".}
-proc InterlockedIncrement64*(Addend: ptr LONGLONG): LONGLONG {.importc: "InterlockedIncrement64", header: "<windows.h>".}
-proc InterlockedDecrement64*(Addend: ptr LONGLONG): LONGLONG {.importc: "InterlockedDecrement64", header: "<windows.h>".}
-proc InterlockedExchange64*(Target: ptr LONGLONG, Value: LONGLONG): LONGLONG {.importc: "InterlockedExchange64", header: "<windows.h>".}
-proc InterlockedExchangeAdd64*(Addend: ptr LONGLONG, Value: LONGLONG): LONGLONG {.importc: "InterlockedExchangeAdd64", header: "<windows.h>".}
-proc InterlockedCompareExchange64*(Destination: ptr LONGLONG, ExChange: LONGLONG, Comperand: LONGLONG): LONGLONG {.importc: "InterlockedCompareExchange64", header: "<windows.h>".}
-proc InterlockedCompare64Exchange128*(Destination: ptr LONG64, ExchangeHigh: LONG64, ExchangeLow: LONG64, Comperand: LONG64): LONG64 {.importc: "InterlockedCompare64Exchange128", header: "<windows.h>".}
-proc InterlockedIncrement*(Addend: ptr LONG): LONG {.importc: "InterlockedIncrement", header: "<windows.h>".}
-proc InterlockedDecrement*(Addend: ptr LONG): LONG {.importc: "InterlockedDecrement", header: "<windows.h>".}
-proc InterlockedExchange*(Target: ptr LONG, Value: LONG): LONG {.importc: "InterlockedExchange", header: "<windows.h>".}
-proc InterlockedExchangeAdd*(Addend: ptr LONG, Value: LONG): LONG {.importc: "InterlockedExchangeAdd", header: "<windows.h>".}
-proc InterlockedCompareExchange*(Destination: ptr LONG, ExChange: LONG, Comperand: LONG): LONG {.importc: "InterlockedCompareExchange", header: "<windows.h>".}
-proc InterlockedExchangePointer*(Target: ptr PVOID, Value: PVOID): PVOID {.importc: "InterlockedExchangePointer", header: "<windows.h>".}
-proc InterlockedCompareExchangePointer*(Destination: ptr PVOID, ExChange: PVOID, Comperand: PVOID): PVOID {.importc: "InterlockedCompareExchangePointer", header: "<windows.h>".}
-proc `Offset=`*(self: var OVERLAPPED, x: DWORD) {.inline.} = self.union1.struct1.Offset = x
-proc Offset*(self: OVERLAPPED): DWORD {.inline.} = self.union1.struct1.Offset
-proc Offset*(self: var OVERLAPPED): var DWORD {.inline.} = self.union1.struct1.Offset
-proc `OffsetHigh=`*(self: var OVERLAPPED, x: DWORD) {.inline.} = self.union1.struct1.OffsetHigh = x
-proc OffsetHigh*(self: OVERLAPPED): DWORD {.inline.} = self.union1.struct1.OffsetHigh
-proc OffsetHigh*(self: var OVERLAPPED): var DWORD {.inline.} = self.union1.struct1.OffsetHigh
-proc `Pointer=`*(self: var OVERLAPPED, x: PVOID) {.inline.} = self.union1.Pointer = x
-proc Pointer*(self: OVERLAPPED): PVOID {.inline.} = self.union1.Pointer
-proc Pointer*(self: var OVERLAPPED): var PVOID {.inline.} = self.union1.Pointer
-proc `Block=`*(self: var PROCESS_HEAP_ENTRY, x: PROCESS_HEAP_ENTRY_UNION1_Block) {.inline.} = self.union1.Block = x
-proc Block*(self: PROCESS_HEAP_ENTRY): PROCESS_HEAP_ENTRY_UNION1_Block {.inline.} = self.union1.Block
-proc Block*(self: var PROCESS_HEAP_ENTRY): var PROCESS_HEAP_ENTRY_UNION1_Block {.inline.} = self.union1.Block
-proc `Region=`*(self: var PROCESS_HEAP_ENTRY, x: PROCESS_HEAP_ENTRY_UNION1_Region) {.inline.} = self.union1.Region = x
-proc Region*(self: PROCESS_HEAP_ENTRY): PROCESS_HEAP_ENTRY_UNION1_Region {.inline.} = self.union1.Region
-proc Region*(self: var PROCESS_HEAP_ENTRY): var PROCESS_HEAP_ENTRY_UNION1_Region {.inline.} = self.union1.Region
-proc `dwOemId=`*(self: var SYSTEM_INFO, x: DWORD) {.inline.} = self.union1.dwOemId = x
-proc dwOemId*(self: SYSTEM_INFO): DWORD {.inline.} = self.union1.dwOemId
-proc dwOemId*(self: var SYSTEM_INFO): var DWORD {.inline.} = self.union1.dwOemId
-proc `wProcessorArchitecture=`*(self: var SYSTEM_INFO, x: WORD) {.inline.} = self.union1.struct1.wProcessorArchitecture = x
-proc wProcessorArchitecture*(self: SYSTEM_INFO): WORD {.inline.} = self.union1.struct1.wProcessorArchitecture
-proc wProcessorArchitecture*(self: var SYSTEM_INFO): var WORD {.inline.} = self.union1.struct1.wProcessorArchitecture
-proc `wReserved=`*(self: var SYSTEM_INFO, x: WORD) {.inline.} = self.union1.struct1.wReserved = x
-proc wReserved*(self: SYSTEM_INFO): WORD {.inline.} = self.union1.struct1.wReserved
-proc wReserved*(self: var SYSTEM_INFO): var WORD {.inline.} = self.union1.struct1.wReserved
-proc `FileId=`*(self: var FILE_ID_DESCRIPTOR, x: LARGE_INTEGER) {.inline.} = self.union1.FileId = x
-proc FileId*(self: FILE_ID_DESCRIPTOR): LARGE_INTEGER {.inline.} = self.union1.FileId
-proc FileId*(self: var FILE_ID_DESCRIPTOR): var LARGE_INTEGER {.inline.} = self.union1.FileId
-proc `ObjectId=`*(self: var FILE_ID_DESCRIPTOR, x: GUID) {.inline.} = self.union1.ObjectId = x
-proc objectId*(self: FILE_ID_DESCRIPTOR): GUID {.inline.} = self.union1.ObjectId
-proc objectId*(self: var FILE_ID_DESCRIPTOR): var GUID {.inline.} = self.union1.ObjectId
-proc `ExtendedFileId=`*(self: var FILE_ID_DESCRIPTOR, x: FILE_ID_128) {.inline.} = self.union1.ExtendedFileId = x
-proc ExtendedFileId*(self: FILE_ID_DESCRIPTOR): FILE_ID_128 {.inline.} = self.union1.ExtendedFileId
-proc ExtendedFileId*(self: var FILE_ID_DESCRIPTOR): var FILE_ID_128 {.inline.} = self.union1.ExtendedFileId
+  proc LookupAccountSid*(
+    lpSystemName: LPCWSTR,
+    Sid: PSID,
+    Name: LPWSTR,
+    cchName: LPDWORD,
+    ReferencedDomainName: LPWSTR,
+    cchReferencedDomainName: LPDWORD,
+    peUse: PSID_NAME_USE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupAccountSidW".}
+
+proc LookupAccountSidLocalW*(
+    Sid: PSID,
+    Name: LPWSTR,
+    cchName: LPDWORD,
+    ReferencedDomainName: LPWSTR,
+    cchReferencedDomainName: LPDWORD,
+    peUse: PSID_NAME_USE,
+): WINBOOL {.winapi, inline.} =
+  LookupAccountSidW(
+    nil, Sid, Name, cchName, ReferencedDomainName, cchReferencedDomainName, peUse
+  )
+
+proc InterlockedOr*(
+  Destination: ptr LONG, Value: LONG
+): LONG {.importc: "InterlockedOr", header: "<windows.h>".}
+
+proc InterlockedOr8*(
+  Destination: ptr byte, Value: byte
+): byte {.importc: "InterlockedOr8", header: "<windows.h>".}
+
+proc InterlockedOr16*(
+  Destination: ptr SHORT, Value: SHORT
+): SHORT {.importc: "InterlockedOr16", header: "<windows.h>".}
+
+proc InterlockedOr64*(
+  Destination: ptr LONGLONG, Value: LONGLONG
+): LONGLONG {.importc: "InterlockedOr64", header: "<windows.h>".}
+
+proc InterlockedXor*(
+  Destination: ptr LONG, Value: LONG
+): LONG {.importc: "InterlockedXor", header: "<windows.h>".}
+
+proc InterlockedXor8*(
+  Destination: ptr byte, Value: byte
+): byte {.importc: "InterlockedXor8", header: "<windows.h>".}
+
+proc InterlockedXor16*(
+  Destination: ptr SHORT, Value: SHORT
+): SHORT {.importc: "InterlockedXor16", header: "<windows.h>".}
+
+proc InterlockedXor64*(
+  Destination: ptr LONGLONG, Value: LONGLONG
+): LONGLONG {.importc: "InterlockedXor64", header: "<windows.h>".}
+
+proc InterlockedAnd*(
+  Destination: ptr LONG, Value: LONG
+): LONG {.importc: "InterlockedAnd", header: "<windows.h>".}
+
+proc InterlockedAnd8*(
+  Destination: ptr byte, Value: byte
+): byte {.importc: "InterlockedAnd8", header: "<windows.h>".}
+
+proc InterlockedAnd16*(
+  Destination: ptr SHORT, Value: SHORT
+): SHORT {.importc: "InterlockedAnd16", header: "<windows.h>".}
+
+proc InterlockedAnd64*(
+  Destination: ptr LONGLONG, Value: LONGLONG
+): LONGLONG {.importc: "InterlockedAnd64", header: "<windows.h>".}
+
+proc InterlockedIncrement64*(
+  Addend: ptr LONGLONG
+): LONGLONG {.importc: "InterlockedIncrement64", header: "<windows.h>".}
+
+proc InterlockedDecrement64*(
+  Addend: ptr LONGLONG
+): LONGLONG {.importc: "InterlockedDecrement64", header: "<windows.h>".}
+
+proc InterlockedExchange64*(
+  Target: ptr LONGLONG, Value: LONGLONG
+): LONGLONG {.importc: "InterlockedExchange64", header: "<windows.h>".}
+
+proc InterlockedExchangeAdd64*(
+  Addend: ptr LONGLONG, Value: LONGLONG
+): LONGLONG {.importc: "InterlockedExchangeAdd64", header: "<windows.h>".}
+
+proc InterlockedCompareExchange64*(
+  Destination: ptr LONGLONG, ExChange: LONGLONG, Comperand: LONGLONG
+): LONGLONG {.importc: "InterlockedCompareExchange64", header: "<windows.h>".}
+
+proc InterlockedCompare64Exchange128*(
+  Destination: ptr LONG64, ExchangeHigh: LONG64, ExchangeLow: LONG64, Comperand: LONG64
+): LONG64 {.importc: "InterlockedCompare64Exchange128", header: "<windows.h>".}
+
+proc InterlockedIncrement*(
+  Addend: ptr LONG
+): LONG {.importc: "InterlockedIncrement", header: "<windows.h>".}
+
+proc InterlockedDecrement*(
+  Addend: ptr LONG
+): LONG {.importc: "InterlockedDecrement", header: "<windows.h>".}
+
+proc InterlockedExchange*(
+  Target: ptr LONG, Value: LONG
+): LONG {.importc: "InterlockedExchange", header: "<windows.h>".}
+
+proc InterlockedExchangeAdd*(
+  Addend: ptr LONG, Value: LONG
+): LONG {.importc: "InterlockedExchangeAdd", header: "<windows.h>".}
+
+proc InterlockedCompareExchange*(
+  Destination: ptr LONG, ExChange: LONG, Comperand: LONG
+): LONG {.importc: "InterlockedCompareExchange", header: "<windows.h>".}
+
+proc InterlockedExchangePointer*(
+  Target: ptr PVOID, Value: PVOID
+): PVOID {.importc: "InterlockedExchangePointer", header: "<windows.h>".}
+
+proc InterlockedCompareExchangePointer*(
+  Destination: ptr PVOID, ExChange: PVOID, Comperand: PVOID
+): PVOID {.importc: "InterlockedCompareExchangePointer", header: "<windows.h>".}
+
+proc `Offset=`*(self: var OVERLAPPED, x: DWORD) {.inline.} =
+  self.union1.struct1.Offset = x
+
+proc Offset*(self: OVERLAPPED): DWORD {.inline.} =
+  self.union1.struct1.Offset
+
+proc Offset*(self: var OVERLAPPED): var DWORD {.inline.} =
+  self.union1.struct1.Offset
+
+proc `OffsetHigh=`*(self: var OVERLAPPED, x: DWORD) {.inline.} =
+  self.union1.struct1.OffsetHigh = x
+
+proc OffsetHigh*(self: OVERLAPPED): DWORD {.inline.} =
+  self.union1.struct1.OffsetHigh
+
+proc OffsetHigh*(self: var OVERLAPPED): var DWORD {.inline.} =
+  self.union1.struct1.OffsetHigh
+
+proc `Pointer=`*(self: var OVERLAPPED, x: PVOID) {.inline.} =
+  self.union1.Pointer = x
+
+proc Pointer*(self: OVERLAPPED): PVOID {.inline.} =
+  self.union1.Pointer
+
+proc Pointer*(self: var OVERLAPPED): var PVOID {.inline.} =
+  self.union1.Pointer
+
+proc `Block=`*(
+    self: var PROCESS_HEAP_ENTRY, x: PROCESS_HEAP_ENTRY_UNION1_Block
+) {.inline.} =
+  self.union1.Block = x
+
+proc Block*(self: PROCESS_HEAP_ENTRY): PROCESS_HEAP_ENTRY_UNION1_Block {.inline.} =
+  self.union1.Block
+
+proc Block*(
+    self: var PROCESS_HEAP_ENTRY
+): var PROCESS_HEAP_ENTRY_UNION1_Block {.inline.} =
+  self.union1.Block
+
+proc `Region=`*(
+    self: var PROCESS_HEAP_ENTRY, x: PROCESS_HEAP_ENTRY_UNION1_Region
+) {.inline.} =
+  self.union1.Region = x
+
+proc Region*(self: PROCESS_HEAP_ENTRY): PROCESS_HEAP_ENTRY_UNION1_Region {.inline.} =
+  self.union1.Region
+
+proc Region*(
+    self: var PROCESS_HEAP_ENTRY
+): var PROCESS_HEAP_ENTRY_UNION1_Region {.inline.} =
+  self.union1.Region
+
+proc `dwOemId=`*(self: var SYSTEM_INFO, x: DWORD) {.inline.} =
+  self.union1.dwOemId = x
+
+proc dwOemId*(self: SYSTEM_INFO): DWORD {.inline.} =
+  self.union1.dwOemId
+
+proc dwOemId*(self: var SYSTEM_INFO): var DWORD {.inline.} =
+  self.union1.dwOemId
+
+proc `wProcessorArchitecture=`*(self: var SYSTEM_INFO, x: WORD) {.inline.} =
+  self.union1.struct1.wProcessorArchitecture = x
+
+proc wProcessorArchitecture*(self: SYSTEM_INFO): WORD {.inline.} =
+  self.union1.struct1.wProcessorArchitecture
+
+proc wProcessorArchitecture*(self: var SYSTEM_INFO): var WORD {.inline.} =
+  self.union1.struct1.wProcessorArchitecture
+
+proc `wReserved=`*(self: var SYSTEM_INFO, x: WORD) {.inline.} =
+  self.union1.struct1.wReserved = x
+
+proc wReserved*(self: SYSTEM_INFO): WORD {.inline.} =
+  self.union1.struct1.wReserved
+
+proc wReserved*(self: var SYSTEM_INFO): var WORD {.inline.} =
+  self.union1.struct1.wReserved
+
+proc `FileId=`*(self: var FILE_ID_DESCRIPTOR, x: LARGE_INTEGER) {.inline.} =
+  self.union1.FileId = x
+
+proc FileId*(self: FILE_ID_DESCRIPTOR): LARGE_INTEGER {.inline.} =
+  self.union1.FileId
+
+proc FileId*(self: var FILE_ID_DESCRIPTOR): var LARGE_INTEGER {.inline.} =
+  self.union1.FileId
+
+proc `ObjectId=`*(self: var FILE_ID_DESCRIPTOR, x: GUID) {.inline.} =
+  self.union1.ObjectId = x
+
+proc objectId*(self: FILE_ID_DESCRIPTOR): GUID {.inline.} =
+  self.union1.ObjectId
+
+proc objectId*(self: var FILE_ID_DESCRIPTOR): var GUID {.inline.} =
+  self.union1.ObjectId
+
+proc `ExtendedFileId=`*(self: var FILE_ID_DESCRIPTOR, x: FILE_ID_128) {.inline.} =
+  self.union1.ExtendedFileId = x
+
+proc ExtendedFileId*(self: FILE_ID_DESCRIPTOR): FILE_ID_128 {.inline.} =
+  self.union1.ExtendedFileId
+
+proc ExtendedFileId*(self: var FILE_ID_DESCRIPTOR): var FILE_ID_128 {.inline.} =
+  self.union1.ExtendedFileId
+
 when winimUnicode:
   type
     WIN32_FIND_DATA* = WIN32_FIND_DATAW
@@ -2868,214 +7744,1272 @@
     ACTCTX* = ACTCTXW
     PACTCTX* = PACTCTXW
     PCACTCTX* = PCACTCTXW
+
   const
     GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A* = GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A
     GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W* = GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W
     GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T* = GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T
-  proc DefineDosDevice*(dwFlags: DWORD, lpDeviceName: LPCWSTR, lpTargetPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DefineDosDeviceW".}
-  proc DeleteVolumeMountPoint*(lpszVolumeMountPoint: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DeleteVolumeMountPointW".}
-  proc FindFirstVolume*(lpszVolumeName: LPWSTR, cchBufferLength: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstVolumeW".}
-  proc FindNextVolume*(hFindVolume: HANDLE, lpszVolumeName: LPWSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FindNextVolumeW".}
-  proc GetLogicalDriveStrings*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetLogicalDriveStringsW".}
-  proc GetShortPathName*(lpszLongPath: LPCWSTR, lpszShortPath: LPWSTR, cchBuffer: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetShortPathNameW".}
-  proc GetTempFileName*(lpPathName: LPCWSTR, lpPrefixString: LPCWSTR, uUnique: UINT, lpTempFileName: LPWSTR): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetTempFileNameW".}
-  proc GetVolumeInformation*(lpRootPathName: LPCWSTR, lpVolumeNameBuffer: LPWSTR, nVolumeNameSize: DWORD, lpVolumeSerialNumber: LPDWORD, lpMaximumComponentLength: LPDWORD, lpFileSystemFlags: LPDWORD, lpFileSystemNameBuffer: LPWSTR, nFileSystemNameSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVolumeInformationW".}
-  proc GetVolumePathName*(lpszFileName: LPCWSTR, lpszVolumePathName: LPWSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVolumePathNameW".}
-  proc QueryDosDevice*(lpDeviceName: LPCWSTR, lpTargetPath: LPWSTR, ucchMax: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "QueryDosDeviceW".}
-  proc GetVolumeNameForVolumeMountPoint*(lpszVolumeMountPoint: LPCWSTR, lpszVolumeName: LPWSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVolumeNameForVolumeMountPointW".}
-  proc GetVolumePathNamesForVolumeName*(lpszVolumeName: LPCWSTR, lpszVolumePathNames: LPWCH, cchBufferLength: DWORD, lpcchReturnLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVolumePathNamesForVolumeNameW".}
-  proc GetTempPath*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetTempPathW".}
-  proc FindResourceEx*(hModule: HMODULE, lpType: LPCWSTR, lpName: LPCWSTR, wLanguage: WORD): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc: "FindResourceExW".}
-  proc CreateFileMapping*(hFile: HANDLE, lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, flProtect: DWORD, dwMaximumSizeHigh: DWORD, dwMaximumSizeLow: DWORD, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileMappingW".}
-  proc OpenFileMapping*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenFileMappingW".}
-  proc CreateFileMappingNuma*(hFile: HANDLE, lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, flProtect: DWORD, dwMaximumSizeHigh: DWORD, dwMaximumSizeLow: DWORD, lpName: LPCWSTR, nndPreferred: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileMappingNumaW".}
-  proc CreateNamedPipe*(lpName: LPCWSTR, dwOpenMode: DWORD, dwPipeMode: DWORD, nMaxInstances: DWORD, nOutBufferSize: DWORD, nInBufferSize: DWORD, nDefaultTimeOut: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateNamedPipeW".}
-  proc WaitNamedPipe*(lpNamedPipeName: LPCWSTR, nTimeOut: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WaitNamedPipeW".}
-  proc GetNamedPipeClientComputerName*(Pipe: HANDLE, ClientComputerName: LPWSTR, ClientComputerNameLength: ULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetNamedPipeClientComputerNameW".}
-  proc CreatePrivateNamespace*(lpPrivateNamespaceAttributes: LPSECURITY_ATTRIBUTES, lpBoundaryDescriptor: LPVOID, lpAliasPrefix: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreatePrivateNamespaceW".}
-  proc CreateBoundaryDescriptor*(Name: LPCWSTR, Flags: ULONG): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateBoundaryDescriptorW".}
-  proc GetEnvironmentStrings*(): LPWCH {.winapi, stdcall, dynlib: "kernel32", importc: "GetEnvironmentStringsW".}
-  proc SetEnvironmentStrings*(NewEnvironment: LPWCH): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetEnvironmentStringsW".}
-  proc GetStartupInfo*(lpStartupInfo: LPSTARTUPINFOW): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "GetStartupInfoW".}
-  proc CreateProcessAsUser*(hToken: HANDLE, lpApplicationName: LPCWSTR, lpCommandLine: LPWSTR, lpProcessAttributes: LPSECURITY_ATTRIBUTES, lpThreadAttributes: LPSECURITY_ATTRIBUTES, bInheritHandles: WINBOOL, dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: LPCWSTR, lpStartupInfo: LPSTARTUPINFOW, lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CreateProcessAsUserW".}
-  proc AccessCheckAndAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID, ObjectTypeName: LPWSTR, ObjectName: LPWSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, DesiredAccess: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccess: LPDWORD, AccessStatus: LPBOOL, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "AccessCheckAndAuditAlarmW".}
-  proc AccessCheckByTypeAndAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID, ObjectTypeName: LPCWSTR, ObjectName: LPCWSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccess: LPDWORD, AccessStatus: LPBOOL, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "AccessCheckByTypeAndAuditAlarmW".}
-  proc AccessCheckByTypeResultListAndAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID, ObjectTypeName: LPCWSTR, ObjectName: LPCWSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccessList: LPDWORD, AccessStatusList: LPDWORD, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "AccessCheckByTypeResultListAndAuditAlarmW".}
-  proc AccessCheckByTypeResultListAndAuditAlarmByHandle*(SubsystemName: LPCWSTR, HandleId: LPVOID, ClientToken: HANDLE, ObjectTypeName: LPCWSTR, ObjectName: LPCWSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccessList: LPDWORD, AccessStatusList: LPDWORD, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "AccessCheckByTypeResultListAndAuditAlarmByHandleW".}
-  proc GetFileSecurity*(lpFileName: LPCWSTR, RequestedInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetFileSecurityW".}
-  proc ObjectCloseAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ObjectCloseAuditAlarmW".}
-  proc ObjectDeleteAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ObjectDeleteAuditAlarmW".}
-  proc ObjectOpenAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID, ObjectTypeName: LPWSTR, ObjectName: LPWSTR, pSecurityDescriptor: PSECURITY_DESCRIPTOR, ClientToken: HANDLE, DesiredAccess: DWORD, GrantedAccess: DWORD, Privileges: PPRIVILEGE_SET, ObjectCreation: WINBOOL, AccessGranted: WINBOOL, GenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ObjectOpenAuditAlarmW".}
-  proc ObjectPrivilegeAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID, ClientToken: HANDLE, DesiredAccess: DWORD, Privileges: PPRIVILEGE_SET, AccessGranted: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmW".}
-  proc PrivilegedServiceAuditAlarm*(SubsystemName: LPCWSTR, ServiceName: LPCWSTR, ClientToken: HANDLE, Privileges: PPRIVILEGE_SET, AccessGranted: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmW".}
-  proc SetFileSecurity*(lpFileName: LPCWSTR, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "SetFileSecurityW".}
-  proc CreateSemaphoreEx*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES, lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCWSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateSemaphoreExW".}
-  proc OpenMutex*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenMutexW".}
-  proc OpenSemaphore*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenSemaphoreW".}
-  proc CreateWaitableTimerEx*(lpTimerAttributes: LPSECURITY_ATTRIBUTES, lpTimerName: LPCWSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateWaitableTimerExW".}
-  proc OpenWaitableTimer*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpTimerName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenWaitableTimerW".}
-  proc SetComputerNameEx*(NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetComputerNameExW".}
-  proc OutputDebugString*(lpOutputString: LPCWSTR): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "OutputDebugStringW".}
-  proc CreateFile*(lpFileName: LPCWSTR, dwDesiredAccess: DWORD, dwShareMode: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD, hTemplateFile: HANDLE): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileW".}
-  proc FindFirstChangeNotification*(lpPathName: LPCWSTR, bWatchSubtree: WINBOOL, dwNotifyFilter: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstChangeNotificationW".}
-  proc FindFirstFile*(lpFileName: LPCWSTR, lpFindFileData: LPWIN32_FIND_DATAW): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstFileW".}
-  proc GetDiskFreeSpace*(lpRootPathName: LPCWSTR, lpSectorsPerCluster: LPDWORD, lpBytesPerSector: LPDWORD, lpNumberOfFreeClusters: LPDWORD, lpTotalNumberOfClusters: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceW".}
-  proc GetDriveType*(lpRootPathName: LPCWSTR): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetDriveTypeW".}
-  proc GetFileAttributes*(lpFileName: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFileAttributesW".}
-  proc GetFullPathName*(lpFileName: LPCWSTR, nBufferLength: DWORD, lpBuffer: LPWSTR, lpFilePart: ptr LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFullPathNameW".}
-  proc GetLongPathName*(lpszShortPath: LPCWSTR, lpszLongPath: LPWSTR, cchBuffer: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetLongPathNameW".}
-  proc GetFinalPathNameByHandle*(hFile: HANDLE, lpszFilePath: LPWSTR, cchFilePath: DWORD, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFinalPathNameByHandleW".}
-  proc CreateDirectory*(lpPathName: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateDirectoryW".}
-  proc DeleteFile*(lpFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DeleteFileW".}
-  proc FindFirstFileEx*(lpFileName: LPCWSTR, fInfoLevelId: FINDEX_INFO_LEVELS, lpFindFileData: LPVOID, fSearchOp: FINDEX_SEARCH_OPS, lpSearchFilter: LPVOID, dwAdditionalFlags: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstFileExW".}
-  proc FindNextFile*(hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATAW): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FindNextFileW".}
-  proc GetDiskFreeSpaceEx*(lpDirectoryName: LPCWSTR, lpFreeBytesAvailableToCaller: PULARGE_INTEGER, lpTotalNumberOfBytes: PULARGE_INTEGER, lpTotalNumberOfFreeBytes: PULARGE_INTEGER): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExW".}
-  proc GetFileAttributesEx*(lpFileName: LPCWSTR, fInfoLevelId: GET_FILEEX_INFO_LEVELS, lpFileInformation: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetFileAttributesExW".}
-  proc RemoveDirectory*(lpPathName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "RemoveDirectoryW".}
-  proc SetFileAttributes*(lpFileName: LPCWSTR, dwFileAttributes: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetFileAttributesW".}
-  proc GetModuleHandleEx*(dwFlags: DWORD, lpModuleName: LPCWSTR, phModule: ptr HMODULE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetModuleHandleExW".}
-  proc LoadString*(hInstance: HINSTANCE, uID: UINT, lpBuffer: LPWSTR, cchBufferMax: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "LoadStringW".}
-  proc GetModuleFileName*(hModule: HMODULE, lpFilename: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetModuleFileNameW".}
-  proc GetModuleHandle*(lpModuleName: LPCWSTR): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc: "GetModuleHandleW".}
-  proc LoadLibraryEx*(lpLibFileName: LPCWSTR, hFile: HANDLE, dwFlags: DWORD): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc: "LoadLibraryExW".}
-  proc EnumResourceLanguages*(hModule: HMODULE, lpType: LPCWSTR, lpName: LPCWSTR, lpEnumFunc: ENUMRESLANGPROCW, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesW".}
-  proc EnumResourceLanguagesEx*(hModule: HMODULE, lpType: LPCWSTR, lpName: LPCWSTR, lpEnumFunc: ENUMRESLANGPROCW, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesExW".}
-  proc EnumResourceNamesEx*(hModule: HMODULE, lpType: LPCWSTR, lpEnumFunc: ENUMRESNAMEPROCW, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceNamesExW".}
-  proc EnumResourceTypesEx*(hModule: HMODULE, lpEnumFunc: ENUMRESTYPEPROCW, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceTypesExW".}
-  proc ExpandEnvironmentStrings*(lpSrc: LPCWSTR, lpDst: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "ExpandEnvironmentStringsW".}
-  proc FreeEnvironmentStrings*(penv: LPWCH): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FreeEnvironmentStringsW".}
-  proc GetCommandLine*(): LPWSTR {.winapi, stdcall, dynlib: "kernel32", importc: "GetCommandLineW".}
-  proc GetCurrentDirectory*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetCurrentDirectoryW".}
-  proc GetEnvironmentVariable*(lpName: LPCWSTR, lpBuffer: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetEnvironmentVariableW".}
-  proc NeedCurrentDirectoryForExePath*(ExeName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "NeedCurrentDirectoryForExePathW".}
-  proc SearchPath*(lpPath: LPCWSTR, lpFileName: LPCWSTR, lpExtension: LPCWSTR, nBufferLength: DWORD, lpBuffer: LPWSTR, lpFilePart: ptr LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "SearchPathW".}
-  proc SetCurrentDirectory*(lpPathName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetCurrentDirectoryW".}
-  proc SetEnvironmentVariable*(lpName: LPCWSTR, lpValue: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetEnvironmentVariableW".}
-  proc CreateProcess*(lpApplicationName: LPCWSTR, lpCommandLine: LPWSTR, lpProcessAttributes: LPSECURITY_ATTRIBUTES, lpThreadAttributes: LPSECURITY_ATTRIBUTES, bInheritHandles: WINBOOL, dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: LPCWSTR, lpStartupInfo: LPSTARTUPINFOW, lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateProcessW".}
-  proc CreateMutexEx*(lpMutexAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCWSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateMutexExW".}
-  proc CreateEventEx*(lpEventAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCWSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateEventExW".}
-  proc OpenEvent*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenEventW".}
-  proc CreateMutex*(lpMutexAttributes: LPSECURITY_ATTRIBUTES, bInitialOwner: WINBOOL, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateMutexW".}
-  proc CreateEvent*(lpEventAttributes: LPSECURITY_ATTRIBUTES, bManualReset: WINBOOL, bInitialState: WINBOOL, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateEventW".}
-  proc GetSystemDirectory*(lpBuffer: LPWSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetSystemDirectoryW".}
-  proc GetWindowsDirectory*(lpBuffer: LPWSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetWindowsDirectoryW".}
-  proc GetSystemWindowsDirectory*(lpBuffer: LPWSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetSystemWindowsDirectoryW".}
-  proc GetComputerNameEx*(NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPWSTR, nSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetComputerNameExW".}
-  proc GetVersionEx*(lpVersionInformation: LPOSVERSIONINFOW): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVersionExW".}
-  proc GetBinaryType*(lpApplicationName: LPCWSTR, lpBinaryType: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetBinaryTypeW".}
-  proc GetLongPathNameTransacted*(lpszShortPath: LPCWSTR, lpszLongPath: LPWSTR, cchBuffer: DWORD, hTransaction: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetLongPathNameTransactedW".}
-  proc SetFileShortName*(hFile: HANDLE, lpShortName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetFileShortNameW".}
-  proc FormatMessage*(dwFlags: DWORD, lpSource: LPCVOID, dwMessageId: DWORD, dwLanguageId: DWORD, lpBuffer: LPWSTR, nSize: DWORD, Arguments: ptr va_list): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "FormatMessageW".}
-  proc CreateMailslot*(lpName: LPCWSTR, nMaxMessageSize: DWORD, lReadTimeout: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateMailslotW".}
-  proc EncryptFile*(lpFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EncryptFileW".}
-  proc DecryptFile*(lpFileName: LPCWSTR, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "DecryptFileW".}
-  proc FileEncryptionStatus*(lpFileName: LPCWSTR, lpStatus: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "FileEncryptionStatusW".}
-  proc OpenEncryptedFileRaw*(lpFileName: LPCWSTR, ulFlags: ULONG, pvContext: ptr PVOID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "OpenEncryptedFileRawW".}
-  proc lstrcmp*(lpString1: LPCWSTR, lpString2: LPCWSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcmpW".}
-  proc lstrcmpi*(lpString1: LPCWSTR, lpString2: LPCWSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcmpiW".}
-  proc lstrcpyn*(lpString1: LPWSTR, lpString2: LPCWSTR, iMaxLength: int32): LPWSTR {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcpynW".}
-  proc lstrcpy*(lpString1: LPWSTR, lpString2: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcpyW".}
-  proc lstrcat*(lpString1: LPWSTR, lpString2: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcatW".}
-  proc lstrlen*(lpString: LPCWSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "lstrlenW".}
-  proc CreateSemaphore*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES, lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateSemaphoreW".}
-  proc CreateWaitableTimer*(lpTimerAttributes: LPSECURITY_ATTRIBUTES, bManualReset: WINBOOL, lpTimerName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateWaitableTimerW".}
-  proc LoadLibrary*(lpLibFileName: LPCWSTR): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc: "LoadLibraryW".}
-  proc QueryFullProcessImageName*(hProcess: HANDLE, dwFlags: DWORD, lpExeName: LPWSTR, lpdwSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "QueryFullProcessImageNameW".}
-  proc FatalAppExit*(uAction: UINT, lpMessageText: LPCWSTR): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "FatalAppExitW".}
-  proc GetFirmwareEnvironmentVariable*(lpName: LPCWSTR, lpGuid: LPCWSTR, pBuffer: PVOID, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFirmwareEnvironmentVariableW".}
-  proc SetFirmwareEnvironmentVariable*(lpName: LPCWSTR, lpGuid: LPCWSTR, pValue: PVOID, nSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetFirmwareEnvironmentVariableW".}
-  proc FindResource*(hModule: HMODULE, lpName: LPCWSTR, lpType: LPCWSTR): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc: "FindResourceW".}
-  proc EnumResourceTypes*(hModule: HMODULE, lpEnumFunc: ENUMRESTYPEPROCW, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceTypesW".}
-  proc EnumResourceNames*(hModule: HMODULE, lpType: LPCWSTR, lpEnumFunc: ENUMRESNAMEPROCW, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceNamesW".}
-  proc BeginUpdateResource*(pFileName: LPCWSTR, bDeleteExistingResources: WINBOOL): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "BeginUpdateResourceW".}
-  proc UpdateResource*(hUpdate: HANDLE, lpType: LPCWSTR, lpName: LPCWSTR, wLanguage: WORD, lpData: LPVOID, cb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "UpdateResourceW".}
-  proc EndUpdateResource*(hUpdate: HANDLE, fDiscard: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EndUpdateResourceW".}
-  proc GlobalAddAtom*(lpString: LPCWSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalAddAtomW".}
-  proc GlobalAddAtomEx*(lpString: LPCWSTR, Flags: DWORD): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalAddAtomExW".}
-  proc GlobalFindAtom*(lpString: LPCWSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalFindAtomW".}
-  proc GlobalGetAtomName*(nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalGetAtomNameW".}
-  proc AddAtom*(lpString: LPCWSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "AddAtomW".}
-  proc FindAtom*(lpString: LPCWSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "FindAtomW".}
-  proc GetAtomName*(nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetAtomNameW".}
-  proc GetProfileInt*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, nDefault: INT): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetProfileIntW".}
-  proc GetProfileString*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, lpDefault: LPCWSTR, lpReturnedString: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetProfileStringW".}
-  proc WriteProfileString*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, lpString: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteProfileStringW".}
-  proc GetProfileSection*(lpAppName: LPCWSTR, lpReturnedString: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetProfileSectionW".}
-  proc WriteProfileSection*(lpAppName: LPCWSTR, lpString: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteProfileSectionW".}
-  proc GetPrivateProfileInt*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, nDefault: INT, lpFileName: LPCWSTR): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileIntW".}
-  proc GetPrivateProfileString*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, lpDefault: LPCWSTR, lpReturnedString: LPWSTR, nSize: DWORD, lpFileName: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStringW".}
-  proc WritePrivateProfileString*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, lpString: LPCWSTR, lpFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStringW".}
-  proc GetPrivateProfileSection*(lpAppName: LPCWSTR, lpReturnedString: LPWSTR, nSize: DWORD, lpFileName: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionW".}
-  proc WritePrivateProfileSection*(lpAppName: LPCWSTR, lpString: LPCWSTR, lpFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WritePrivateProfileSectionW".}
-  proc GetPrivateProfileSectionNames*(lpszReturnBuffer: LPWSTR, nSize: DWORD, lpFileName: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionNamesW".}
-  proc GetPrivateProfileStruct*(lpszSection: LPCWSTR, lpszKey: LPCWSTR, lpStruct: LPVOID, uSizeStruct: UINT, szFile: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStructW".}
-  proc WritePrivateProfileStruct*(lpszSection: LPCWSTR, lpszKey: LPCWSTR, lpStruct: LPVOID, uSizeStruct: UINT, szFile: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStructW".}
-  proc GetFirmwareEnvironmentVariableEx*(lpName: LPCWSTR, lpGuid: LPCWSTR, pBuffer: PVOID, nSize: DWORD, pdwAttribubutes: PDWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFirmwareEnvironmentVariableExW".}
-  proc SetFirmwareEnvironmentVariableEx*(lpName: LPCWSTR, lpGuid: LPCWSTR, pValue: PVOID, nSize: DWORD, dwAttributes: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetFirmwareEnvironmentVariableExW".}
-  proc GetSystemWow64Directory*(lpBuffer: LPWSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetSystemWow64DirectoryW".}
-  proc SetDllDirectory*(lpPathName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetDllDirectoryW".}
-  proc GetDllDirectory*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetDllDirectoryW".}
-  proc CreateDirectoryEx*(lpTemplateDirectory: LPCWSTR, lpNewDirectory: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateDirectoryExW".}
-  proc CreateDirectoryTransacted*(lpTemplateDirectory: LPCWSTR, lpNewDirectory: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateDirectoryTransactedW".}
-  proc RemoveDirectoryTransacted*(lpPathName: LPCWSTR, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "RemoveDirectoryTransactedW".}
-  proc GetFullPathNameTransacted*(lpFileName: LPCWSTR, nBufferLength: DWORD, lpBuffer: LPWSTR, lpFilePart: ptr LPWSTR, hTransaction: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFullPathNameTransactedW".}
-  proc CreateFileTransacted*(lpFileName: LPCWSTR, dwDesiredAccess: DWORD, dwShareMode: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD, hTemplateFile: HANDLE, hTransaction: HANDLE, pusMiniVersion: PUSHORT, lpExtendedParameter: PVOID): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileTransactedW".}
-  proc SetFileAttributesTransacted*(lpFileName: LPCWSTR, dwFileAttributes: DWORD, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetFileAttributesTransactedW".}
-  proc GetFileAttributesTransacted*(lpFileName: LPCWSTR, fInfoLevelId: GET_FILEEX_INFO_LEVELS, lpFileInformation: LPVOID, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetFileAttributesTransactedW".}
-  proc GetCompressedFileSize*(lpFileName: LPCWSTR, lpFileSizeHigh: LPDWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeW".}
-  proc DeleteFileTransacted*(lpFileName: LPCWSTR, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DeleteFileTransactedW".}
-  proc GetCompressedFileSizeTransacted*(lpFileName: LPCWSTR, lpFileSizeHigh: LPDWORD, hTransaction: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeTransactedW".}
-  proc FindFirstFileTransacted*(lpFileName: LPCWSTR, fInfoLevelId: FINDEX_INFO_LEVELS, lpFindFileData: LPVOID, fSearchOp: FINDEX_SEARCH_OPS, lpSearchFilter: LPVOID, dwAdditionalFlags: DWORD, hTransaction: HANDLE): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstFileTransactedW".}
-  proc CopyFileTransacted*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, pbCancel: LPBOOL, dwCopyFlags: DWORD, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CopyFileTransactedW".}
-  proc CheckNameLegalDOS8Dot3*(lpName: LPCWSTR, lpOemName: LPSTR, OemNameSize: DWORD, pbNameContainsSpaces: PBOOL, pbNameLegal: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CheckNameLegalDOS8Dot3W".}
-  proc CopyFile*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, bFailIfExists: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CopyFileW".}
-  proc CopyFileEx*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, pbCancel: LPBOOL, dwCopyFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CopyFileExW".}
-  proc MoveFile*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileW".}
-  proc MoveFileEx*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileExW".}
-  proc MoveFileWithProgress*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileWithProgressW".}
-  proc MoveFileTransacted*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, dwFlags: DWORD, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileTransactedW".}
-  proc ReplaceFile*(lpReplacedFileName: LPCWSTR, lpReplacementFileName: LPCWSTR, lpBackupFileName: LPCWSTR, dwReplaceFlags: DWORD, lpExclude: LPVOID, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReplaceFileW".}
-  proc CreateHardLink*(lpFileName: LPCWSTR, lpExistingFileName: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateHardLinkW".}
-  proc CreateHardLinkTransacted*(lpFileName: LPCWSTR, lpExistingFileName: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateHardLinkTransactedW".}
-  proc GetNamedPipeHandleState*(hNamedPipe: HANDLE, lpState: LPDWORD, lpCurInstances: LPDWORD, lpMaxCollectionCount: LPDWORD, lpCollectDataTimeout: LPDWORD, lpUserName: LPWSTR, nMaxUserNameSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetNamedPipeHandleStateW".}
-  proc CallNamedPipe*(lpNamedPipeName: LPCWSTR, lpInBuffer: LPVOID, nInBufferSize: DWORD, lpOutBuffer: LPVOID, nOutBufferSize: DWORD, lpBytesRead: LPDWORD, nTimeOut: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CallNamedPipeW".}
-  proc SetVolumeLabel*(lpRootPathName: LPCWSTR, lpVolumeName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetVolumeLabelW".}
-  proc ClearEventLog*(hEventLog: HANDLE, lpBackupFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ClearEventLogW".}
-  proc BackupEventLog*(hEventLog: HANDLE, lpBackupFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "BackupEventLogW".}
-  proc OpenEventLog*(lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenEventLogW".}
-  proc RegisterEventSource*(lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "RegisterEventSourceW".}
-  proc OpenBackupEventLog*(lpUNCServerName: LPCWSTR, lpFileName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenBackupEventLogW".}
-  proc ReadEventLog*(hEventLog: HANDLE, dwReadFlags: DWORD, dwRecordOffset: DWORD, lpBuffer: LPVOID, nNumberOfBytesToRead: DWORD, pnBytesRead: ptr DWORD, pnMinNumberOfBytesNeeded: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ReadEventLogW".}
-  proc ReportEvent*(hEventLog: HANDLE, wType: WORD, wCategory: WORD, dwEventID: DWORD, lpUserSid: PSID, wNumStrings: WORD, dwDataSize: DWORD, lpStrings: ptr LPCWSTR, lpRawData: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ReportEventW".}
-  proc IsBadStringPtr*(lpsz: LPCWSTR, ucchMax: UINT_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "IsBadStringPtrW".}
-  proc LookupPrivilegeValue*(lpSystemName: LPCWSTR, lpName: LPCWSTR, lpLuid: PLUID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupPrivilegeValueW".}
-  proc LookupPrivilegeName*(lpSystemName: LPCWSTR, lpLuid: PLUID, lpName: LPWSTR, cchName: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupPrivilegeNameW".}
-  proc LookupPrivilegeDisplayName*(lpSystemName: LPCWSTR, lpName: LPCWSTR, lpDisplayName: LPWSTR, cchDisplayName: LPDWORD, lpLanguageId: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameW".}
-  proc BuildCommDCB*(lpDef: LPCWSTR, lpDCB: LPDCB): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "BuildCommDCBW".}
-  proc BuildCommDCBAndTimeouts*(lpDef: LPCWSTR, lpDCB: LPDCB, lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsW".}
-  proc CommConfigDialog*(lpszName: LPCWSTR, hWnd: HWND, lpCC: LPCOMMCONFIG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CommConfigDialogW".}
-  proc GetDefaultCommConfig*(lpszName: LPCWSTR, lpCC: LPCOMMCONFIG, lpdwSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetDefaultCommConfigW".}
-  proc SetDefaultCommConfig*(lpszName: LPCWSTR, lpCC: LPCOMMCONFIG, dwSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetDefaultCommConfigW".}
-  proc GetComputerName*(lpBuffer: LPWSTR, nSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetComputerNameW".}
-  proc SetComputerName*(lpComputerName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetComputerNameW".}
-  proc DnsHostnameToComputerName*(Hostname: LPCWSTR, ComputerName: LPWSTR, nSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DnsHostnameToComputerNameW".}
-  proc GetUserName*(lpBuffer: LPWSTR, pcbBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetUserNameW".}
-  proc LogonUser*(lpszUsername: LPCWSTR, lpszDomain: LPCWSTR, lpszPassword: LPCWSTR, dwLogonType: DWORD, dwLogonProvider: DWORD, phToken: PHANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LogonUserW".}
-  proc LogonUserEx*(lpszUsername: LPCWSTR, lpszDomain: LPCWSTR, lpszPassword: LPCWSTR, dwLogonType: DWORD, dwLogonProvider: DWORD, phToken: PHANDLE, ppLogonSid: ptr PSID, ppProfileBuffer: ptr PVOID, pdwProfileLength: LPDWORD, pQuotaLimits: PQUOTA_LIMITS): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LogonUserExW".}
-  proc OpenPrivateNamespace*(lpBoundaryDescriptor: LPVOID, lpAliasPrefix: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenPrivateNamespaceW".}
-  proc GetCurrentHwProfile*(lpHwProfileInfo: LPHW_PROFILE_INFOW): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetCurrentHwProfileW".}
-  proc VerifyVersionInfo*(lpVersionInformation: LPOSVERSIONINFOEXW, dwTypeMask: DWORD, dwlConditionMask: DWORDLONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "VerifyVersionInfoW".}
-  proc CreateJobObject*(lpJobAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateJobObjectW".}
-  proc OpenJobObject*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenJobObjectW".}
-  proc FindFirstVolumeMountPoint*(lpszRootPathName: LPCWSTR, lpszVolumeMountPoint: LPWSTR, cchBufferLength: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstVolumeMountPointW".}
-  proc FindNextVolumeMountPoint*(hFindVolumeMountPoint: HANDLE, lpszVolumeMountPoint: LPWSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FindNextVolumeMountPointW".}
-  proc SetVolumeMountPoint*(lpszVolumeMountPoint: LPCWSTR, lpszVolumeName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetVolumeMountPointW".}
-  proc CreateActCtx*(pActCtx: PCACTCTXW): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateActCtxW".}
-  proc FindActCtxSectionString*(dwFlags: DWORD, lpExtensionGuid: ptr GUID, ulSectionId: ULONG, lpStringToFind: LPCWSTR, ReturnedData: PACTCTX_SECTION_KEYED_DATA): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FindActCtxSectionStringW".}
-  proc CreateSymbolicLink*(lpSymlinkFileName: LPCWSTR, lpTargetFileName: LPCWSTR, dwFlags: DWORD): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc: "CreateSymbolicLinkW".}
-  proc CreateSymbolicLinkTransacted*(lpSymlinkFileName: LPCWSTR, lpTargetFileName: LPCWSTR, dwFlags: DWORD, hTransaction: HANDLE): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc: "CreateSymbolicLinkTransactedW".}
-  proc LookupAccountNameLocal*(lpAccountName: LPCWSTR, Sid: PSID, cbSid: LPDWORD, ReferencedDomainName: LPWSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, inline.} = LookupAccountNameW(nil, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse)
-  proc LookupAccountSidLocal*(Sid: PSID, Name: LPWSTR, cchName: LPDWORD, ReferencedDomainName: LPWSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, inline.} = LookupAccountSidW(nil, Sid, Name, cchName, ReferencedDomainName, cchReferencedDomainName, peUse)
+  proc DefineDosDevice*(
+    dwFlags: DWORD, lpDeviceName: LPCWSTR, lpTargetPath: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DefineDosDeviceW".}
+
+  proc DeleteVolumeMountPoint*(
+    lpszVolumeMountPoint: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DeleteVolumeMountPointW".}
+
+  proc FindFirstVolume*(
+    lpszVolumeName: LPWSTR, cchBufferLength: DWORD
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstVolumeW".}
+
+  proc FindNextVolume*(
+    hFindVolume: HANDLE, lpszVolumeName: LPWSTR, cchBufferLength: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FindNextVolumeW".}
+
+  proc GetLogicalDriveStrings*(
+    nBufferLength: DWORD, lpBuffer: LPWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetLogicalDriveStringsW".}
+
+  proc GetShortPathName*(
+    lpszLongPath: LPCWSTR, lpszShortPath: LPWSTR, cchBuffer: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetShortPathNameW".}
+
+  proc GetTempFileName*(
+    lpPathName: LPCWSTR, lpPrefixString: LPCWSTR, uUnique: UINT, lpTempFileName: LPWSTR
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetTempFileNameW".}
+
+  proc GetVolumeInformation*(
+    lpRootPathName: LPCWSTR,
+    lpVolumeNameBuffer: LPWSTR,
+    nVolumeNameSize: DWORD,
+    lpVolumeSerialNumber: LPDWORD,
+    lpMaximumComponentLength: LPDWORD,
+    lpFileSystemFlags: LPDWORD,
+    lpFileSystemNameBuffer: LPWSTR,
+    nFileSystemNameSize: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVolumeInformationW".}
+
+  proc GetVolumePathName*(
+    lpszFileName: LPCWSTR, lpszVolumePathName: LPWSTR, cchBufferLength: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVolumePathNameW".}
+
+  proc QueryDosDevice*(
+    lpDeviceName: LPCWSTR, lpTargetPath: LPWSTR, ucchMax: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "QueryDosDeviceW".}
+
+  proc GetVolumeNameForVolumeMountPoint*(
+    lpszVolumeMountPoint: LPCWSTR, lpszVolumeName: LPWSTR, cchBufferLength: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetVolumeNameForVolumeMountPointW"
+  .}
+
+  proc GetVolumePathNamesForVolumeName*(
+    lpszVolumeName: LPCWSTR,
+    lpszVolumePathNames: LPWCH,
+    cchBufferLength: DWORD,
+    lpcchReturnLength: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetVolumePathNamesForVolumeNameW"
+  .}
+
+  proc GetTempPath*(
+    nBufferLength: DWORD, lpBuffer: LPWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetTempPathW".}
+
+  proc FindResourceEx*(
+    hModule: HMODULE, lpType: LPCWSTR, lpName: LPCWSTR, wLanguage: WORD
+  ): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc: "FindResourceExW".}
+
+  proc CreateFileMapping*(
+    hFile: HANDLE,
+    lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,
+    flProtect: DWORD,
+    dwMaximumSizeHigh: DWORD,
+    dwMaximumSizeLow: DWORD,
+    lpName: LPCWSTR,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileMappingW".}
+
+  proc OpenFileMapping*(
+    dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenFileMappingW".}
+
+  proc CreateFileMappingNuma*(
+    hFile: HANDLE,
+    lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,
+    flProtect: DWORD,
+    dwMaximumSizeHigh: DWORD,
+    dwMaximumSizeLow: DWORD,
+    lpName: LPCWSTR,
+    nndPreferred: DWORD,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileMappingNumaW".}
+
+  proc CreateNamedPipe*(
+    lpName: LPCWSTR,
+    dwOpenMode: DWORD,
+    dwPipeMode: DWORD,
+    nMaxInstances: DWORD,
+    nOutBufferSize: DWORD,
+    nInBufferSize: DWORD,
+    nDefaultTimeOut: DWORD,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateNamedPipeW".}
+
+  proc WaitNamedPipe*(
+    lpNamedPipeName: LPCWSTR, nTimeOut: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WaitNamedPipeW".}
+
+  proc GetNamedPipeClientComputerName*(
+    Pipe: HANDLE, ClientComputerName: LPWSTR, ClientComputerNameLength: ULONG
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetNamedPipeClientComputerNameW"
+  .}
+
+  proc CreatePrivateNamespace*(
+    lpPrivateNamespaceAttributes: LPSECURITY_ATTRIBUTES,
+    lpBoundaryDescriptor: LPVOID,
+    lpAliasPrefix: LPCWSTR,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreatePrivateNamespaceW".}
+
+  proc CreateBoundaryDescriptor*(
+    Name: LPCWSTR, Flags: ULONG
+  ): HANDLE {.
+    winapi, stdcall, dynlib: "kernel32", importc: "CreateBoundaryDescriptorW"
+  .}
+
+  proc GetEnvironmentStrings*(): LPWCH {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetEnvironmentStringsW"
+  .}
+
+  proc SetEnvironmentStrings*(
+    NewEnvironment: LPWCH
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetEnvironmentStringsW".}
+
+  proc GetStartupInfo*(
+    lpStartupInfo: LPSTARTUPINFOW
+  ): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "GetStartupInfoW".}
+
+  proc CreateProcessAsUser*(
+    hToken: HANDLE,
+    lpApplicationName: LPCWSTR,
+    lpCommandLine: LPWSTR,
+    lpProcessAttributes: LPSECURITY_ATTRIBUTES,
+    lpThreadAttributes: LPSECURITY_ATTRIBUTES,
+    bInheritHandles: WINBOOL,
+    dwCreationFlags: DWORD,
+    lpEnvironment: LPVOID,
+    lpCurrentDirectory: LPCWSTR,
+    lpStartupInfo: LPSTARTUPINFOW,
+    lpProcessInformation: LPPROCESS_INFORMATION,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CreateProcessAsUserW".}
+
+  proc AccessCheckAndAuditAlarm*(
+    SubsystemName: LPCWSTR,
+    HandleId: LPVOID,
+    ObjectTypeName: LPWSTR,
+    ObjectName: LPWSTR,
+    SecurityDescriptor: PSECURITY_DESCRIPTOR,
+    DesiredAccess: DWORD,
+    GenericMapping: PGENERIC_MAPPING,
+    ObjectCreation: WINBOOL,
+    GrantedAccess: LPDWORD,
+    AccessStatus: LPBOOL,
+    pfGenerateOnClose: LPBOOL,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "AccessCheckAndAuditAlarmW"
+  .}
+
+  proc AccessCheckByTypeAndAuditAlarm*(
+    SubsystemName: LPCWSTR,
+    HandleId: LPVOID,
+    ObjectTypeName: LPCWSTR,
+    ObjectName: LPCWSTR,
+    SecurityDescriptor: PSECURITY_DESCRIPTOR,
+    PrincipalSelfSid: PSID,
+    DesiredAccess: DWORD,
+    AuditType: AUDIT_EVENT_TYPE,
+    Flags: DWORD,
+    ObjectTypeList: POBJECT_TYPE_LIST,
+    ObjectTypeListLength: DWORD,
+    GenericMapping: PGENERIC_MAPPING,
+    ObjectCreation: WINBOOL,
+    GrantedAccess: LPDWORD,
+    AccessStatus: LPBOOL,
+    pfGenerateOnClose: LPBOOL,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "AccessCheckByTypeAndAuditAlarmW"
+  .}
+
+  proc AccessCheckByTypeResultListAndAuditAlarm*(
+    SubsystemName: LPCWSTR,
+    HandleId: LPVOID,
+    ObjectTypeName: LPCWSTR,
+    ObjectName: LPCWSTR,
+    SecurityDescriptor: PSECURITY_DESCRIPTOR,
+    PrincipalSelfSid: PSID,
+    DesiredAccess: DWORD,
+    AuditType: AUDIT_EVENT_TYPE,
+    Flags: DWORD,
+    ObjectTypeList: POBJECT_TYPE_LIST,
+    ObjectTypeListLength: DWORD,
+    GenericMapping: PGENERIC_MAPPING,
+    ObjectCreation: WINBOOL,
+    GrantedAccessList: LPDWORD,
+    AccessStatusList: LPDWORD,
+    pfGenerateOnClose: LPBOOL,
+  ): WINBOOL {.
+    winapi,
+    stdcall,
+    dynlib: "advapi32",
+    importc: "AccessCheckByTypeResultListAndAuditAlarmW"
+  .}
+
+  proc AccessCheckByTypeResultListAndAuditAlarmByHandle*(
+    SubsystemName: LPCWSTR,
+    HandleId: LPVOID,
+    ClientToken: HANDLE,
+    ObjectTypeName: LPCWSTR,
+    ObjectName: LPCWSTR,
+    SecurityDescriptor: PSECURITY_DESCRIPTOR,
+    PrincipalSelfSid: PSID,
+    DesiredAccess: DWORD,
+    AuditType: AUDIT_EVENT_TYPE,
+    Flags: DWORD,
+    ObjectTypeList: POBJECT_TYPE_LIST,
+    ObjectTypeListLength: DWORD,
+    GenericMapping: PGENERIC_MAPPING,
+    ObjectCreation: WINBOOL,
+    GrantedAccessList: LPDWORD,
+    AccessStatusList: LPDWORD,
+    pfGenerateOnClose: LPBOOL,
+  ): WINBOOL {.
+    winapi,
+    stdcall,
+    dynlib: "advapi32",
+    importc: "AccessCheckByTypeResultListAndAuditAlarmByHandleW"
+  .}
+
+  proc GetFileSecurity*(
+    lpFileName: LPCWSTR,
+    RequestedInformation: SECURITY_INFORMATION,
+    pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+    nLength: DWORD,
+    lpnLengthNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetFileSecurityW".}
+
+  proc ObjectCloseAuditAlarm*(
+    SubsystemName: LPCWSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ObjectCloseAuditAlarmW".}
+
+  proc ObjectDeleteAuditAlarm*(
+    SubsystemName: LPCWSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ObjectDeleteAuditAlarmW".}
+
+  proc ObjectOpenAuditAlarm*(
+    SubsystemName: LPCWSTR,
+    HandleId: LPVOID,
+    ObjectTypeName: LPWSTR,
+    ObjectName: LPWSTR,
+    pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+    ClientToken: HANDLE,
+    DesiredAccess: DWORD,
+    GrantedAccess: DWORD,
+    Privileges: PPRIVILEGE_SET,
+    ObjectCreation: WINBOOL,
+    AccessGranted: WINBOOL,
+    GenerateOnClose: LPBOOL,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ObjectOpenAuditAlarmW".}
+
+  proc ObjectPrivilegeAuditAlarm*(
+    SubsystemName: LPCWSTR,
+    HandleId: LPVOID,
+    ClientToken: HANDLE,
+    DesiredAccess: DWORD,
+    Privileges: PPRIVILEGE_SET,
+    AccessGranted: WINBOOL,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmW"
+  .}
+
+  proc PrivilegedServiceAuditAlarm*(
+    SubsystemName: LPCWSTR,
+    ServiceName: LPCWSTR,
+    ClientToken: HANDLE,
+    Privileges: PPRIVILEGE_SET,
+    AccessGranted: WINBOOL,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmW"
+  .}
+
+  proc SetFileSecurity*(
+    lpFileName: LPCWSTR,
+    SecurityInformation: SECURITY_INFORMATION,
+    pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "SetFileSecurityW".}
+
+  proc CreateSemaphoreEx*(
+    lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,
+    lInitialCount: LONG,
+    lMaximumCount: LONG,
+    lpName: LPCWSTR,
+    dwFlags: DWORD,
+    dwDesiredAccess: DWORD,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateSemaphoreExW".}
+
+  proc OpenMutex*(
+    dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenMutexW".}
+
+  proc OpenSemaphore*(
+    dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenSemaphoreW".}
+
+  proc CreateWaitableTimerEx*(
+    lpTimerAttributes: LPSECURITY_ATTRIBUTES,
+    lpTimerName: LPCWSTR,
+    dwFlags: DWORD,
+    dwDesiredAccess: DWORD,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateWaitableTimerExW".}
+
+  proc OpenWaitableTimer*(
+    dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpTimerName: LPCWSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenWaitableTimerW".}
+
+  proc SetComputerNameEx*(
+    NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetComputerNameExW".}
+
+  proc OutputDebugString*(
+    lpOutputString: LPCWSTR
+  ): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "OutputDebugStringW".}
+
+  proc CreateFile*(
+    lpFileName: LPCWSTR,
+    dwDesiredAccess: DWORD,
+    dwShareMode: DWORD,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+    dwCreationDisposition: DWORD,
+    dwFlagsAndAttributes: DWORD,
+    hTemplateFile: HANDLE,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileW".}
+
+  proc FindFirstChangeNotification*(
+    lpPathName: LPCWSTR, bWatchSubtree: WINBOOL, dwNotifyFilter: DWORD
+  ): HANDLE {.
+    winapi, stdcall, dynlib: "kernel32", importc: "FindFirstChangeNotificationW"
+  .}
+
+  proc FindFirstFile*(
+    lpFileName: LPCWSTR, lpFindFileData: LPWIN32_FIND_DATAW
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstFileW".}
+
+  proc GetDiskFreeSpace*(
+    lpRootPathName: LPCWSTR,
+    lpSectorsPerCluster: LPDWORD,
+    lpBytesPerSector: LPDWORD,
+    lpNumberOfFreeClusters: LPDWORD,
+    lpTotalNumberOfClusters: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceW".}
+
+  proc GetDriveType*(
+    lpRootPathName: LPCWSTR
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetDriveTypeW".}
+
+  proc GetFileAttributes*(
+    lpFileName: LPCWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFileAttributesW".}
+
+  proc GetFullPathName*(
+    lpFileName: LPCWSTR, nBufferLength: DWORD, lpBuffer: LPWSTR, lpFilePart: ptr LPWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFullPathNameW".}
+
+  proc GetLongPathName*(
+    lpszShortPath: LPCWSTR, lpszLongPath: LPWSTR, cchBuffer: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetLongPathNameW".}
+
+  proc GetFinalPathNameByHandle*(
+    hFile: HANDLE, lpszFilePath: LPWSTR, cchFilePath: DWORD, dwFlags: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFinalPathNameByHandleW".}
+
+  proc CreateDirectory*(
+    lpPathName: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateDirectoryW".}
+
+  proc DeleteFile*(
+    lpFileName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DeleteFileW".}
+
+  proc FindFirstFileEx*(
+    lpFileName: LPCWSTR,
+    fInfoLevelId: FINDEX_INFO_LEVELS,
+    lpFindFileData: LPVOID,
+    fSearchOp: FINDEX_SEARCH_OPS,
+    lpSearchFilter: LPVOID,
+    dwAdditionalFlags: DWORD,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstFileExW".}
+
+  proc FindNextFile*(
+    hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATAW
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FindNextFileW".}
+
+  proc GetDiskFreeSpaceEx*(
+    lpDirectoryName: LPCWSTR,
+    lpFreeBytesAvailableToCaller: PULARGE_INTEGER,
+    lpTotalNumberOfBytes: PULARGE_INTEGER,
+    lpTotalNumberOfFreeBytes: PULARGE_INTEGER,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExW".}
+
+  proc GetFileAttributesEx*(
+    lpFileName: LPCWSTR, fInfoLevelId: GET_FILEEX_INFO_LEVELS, lpFileInformation: LPVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetFileAttributesExW".}
+
+  proc RemoveDirectory*(
+    lpPathName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "RemoveDirectoryW".}
+
+  proc SetFileAttributes*(
+    lpFileName: LPCWSTR, dwFileAttributes: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetFileAttributesW".}
+
+  proc GetModuleHandleEx*(
+    dwFlags: DWORD, lpModuleName: LPCWSTR, phModule: ptr HMODULE
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetModuleHandleExW".}
+
+  proc LoadString*(
+    hInstance: HINSTANCE, uID: UINT, lpBuffer: LPWSTR, cchBufferMax: int32
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "LoadStringW".}
+
+  proc GetModuleFileName*(
+    hModule: HMODULE, lpFilename: LPWSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetModuleFileNameW".}
+
+  proc GetModuleHandle*(
+    lpModuleName: LPCWSTR
+  ): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc: "GetModuleHandleW".}
+
+  proc LoadLibraryEx*(
+    lpLibFileName: LPCWSTR, hFile: HANDLE, dwFlags: DWORD
+  ): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc: "LoadLibraryExW".}
+
+  proc EnumResourceLanguages*(
+    hModule: HMODULE,
+    lpType: LPCWSTR,
+    lpName: LPCWSTR,
+    lpEnumFunc: ENUMRESLANGPROCW,
+    lParam: LONG_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesW".}
+
+  proc EnumResourceLanguagesEx*(
+    hModule: HMODULE,
+    lpType: LPCWSTR,
+    lpName: LPCWSTR,
+    lpEnumFunc: ENUMRESLANGPROCW,
+    lParam: LONG_PTR,
+    dwFlags: DWORD,
+    LangId: LANGID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesExW"
+  .}
+
+  proc EnumResourceNamesEx*(
+    hModule: HMODULE,
+    lpType: LPCWSTR,
+    lpEnumFunc: ENUMRESNAMEPROCW,
+    lParam: LONG_PTR,
+    dwFlags: DWORD,
+    LangId: LANGID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceNamesExW".}
+
+  proc EnumResourceTypesEx*(
+    hModule: HMODULE,
+    lpEnumFunc: ENUMRESTYPEPROCW,
+    lParam: LONG_PTR,
+    dwFlags: DWORD,
+    LangId: LANGID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceTypesExW".}
+
+  proc ExpandEnvironmentStrings*(
+    lpSrc: LPCWSTR, lpDst: LPWSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "ExpandEnvironmentStringsW".}
+
+  proc FreeEnvironmentStrings*(
+    penv: LPWCH
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FreeEnvironmentStringsW".}
+
+  proc GetCommandLine*(): LPWSTR {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetCommandLineW"
+  .}
+
+  proc GetCurrentDirectory*(
+    nBufferLength: DWORD, lpBuffer: LPWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetCurrentDirectoryW".}
+
+  proc GetEnvironmentVariable*(
+    lpName: LPCWSTR, lpBuffer: LPWSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetEnvironmentVariableW".}
+
+  proc NeedCurrentDirectoryForExePath*(
+    ExeName: LPCWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "NeedCurrentDirectoryForExePathW"
+  .}
+
+  proc SearchPath*(
+    lpPath: LPCWSTR,
+    lpFileName: LPCWSTR,
+    lpExtension: LPCWSTR,
+    nBufferLength: DWORD,
+    lpBuffer: LPWSTR,
+    lpFilePart: ptr LPWSTR,
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "SearchPathW".}
+
+  proc SetCurrentDirectory*(
+    lpPathName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetCurrentDirectoryW".}
+
+  proc SetEnvironmentVariable*(
+    lpName: LPCWSTR, lpValue: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetEnvironmentVariableW".}
+
+  proc CreateProcess*(
+    lpApplicationName: LPCWSTR,
+    lpCommandLine: LPWSTR,
+    lpProcessAttributes: LPSECURITY_ATTRIBUTES,
+    lpThreadAttributes: LPSECURITY_ATTRIBUTES,
+    bInheritHandles: WINBOOL,
+    dwCreationFlags: DWORD,
+    lpEnvironment: LPVOID,
+    lpCurrentDirectory: LPCWSTR,
+    lpStartupInfo: LPSTARTUPINFOW,
+    lpProcessInformation: LPPROCESS_INFORMATION,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateProcessW".}
+
+  proc CreateMutexEx*(
+    lpMutexAttributes: LPSECURITY_ATTRIBUTES,
+    lpName: LPCWSTR,
+    dwFlags: DWORD,
+    dwDesiredAccess: DWORD,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateMutexExW".}
+
+  proc CreateEventEx*(
+    lpEventAttributes: LPSECURITY_ATTRIBUTES,
+    lpName: LPCWSTR,
+    dwFlags: DWORD,
+    dwDesiredAccess: DWORD,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateEventExW".}
+
+  proc OpenEvent*(
+    dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenEventW".}
+
+  proc CreateMutex*(
+    lpMutexAttributes: LPSECURITY_ATTRIBUTES, bInitialOwner: WINBOOL, lpName: LPCWSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateMutexW".}
+
+  proc CreateEvent*(
+    lpEventAttributes: LPSECURITY_ATTRIBUTES,
+    bManualReset: WINBOOL,
+    bInitialState: WINBOOL,
+    lpName: LPCWSTR,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateEventW".}
+
+  proc GetSystemDirectory*(
+    lpBuffer: LPWSTR, uSize: UINT
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetSystemDirectoryW".}
+
+  proc GetWindowsDirectory*(
+    lpBuffer: LPWSTR, uSize: UINT
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetWindowsDirectoryW".}
+
+  proc GetSystemWindowsDirectory*(
+    lpBuffer: LPWSTR, uSize: UINT
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetSystemWindowsDirectoryW".}
+
+  proc GetComputerNameEx*(
+    NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPWSTR, nSize: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetComputerNameExW".}
+
+  proc GetVersionEx*(
+    lpVersionInformation: LPOSVERSIONINFOW
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVersionExW".}
+
+  proc GetBinaryType*(
+    lpApplicationName: LPCWSTR, lpBinaryType: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetBinaryTypeW".}
+
+  proc GetLongPathNameTransacted*(
+    lpszShortPath: LPCWSTR, lpszLongPath: LPWSTR, cchBuffer: DWORD, hTransaction: HANDLE
+  ): DWORD {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetLongPathNameTransactedW"
+  .}
+
+  proc SetFileShortName*(
+    hFile: HANDLE, lpShortName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetFileShortNameW".}
+
+  proc FormatMessage*(
+    dwFlags: DWORD,
+    lpSource: LPCVOID,
+    dwMessageId: DWORD,
+    dwLanguageId: DWORD,
+    lpBuffer: LPWSTR,
+    nSize: DWORD,
+    Arguments: ptr va_list,
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "FormatMessageW".}
+
+  proc CreateMailslot*(
+    lpName: LPCWSTR,
+    nMaxMessageSize: DWORD,
+    lReadTimeout: DWORD,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateMailslotW".}
+
+  proc EncryptFile*(
+    lpFileName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EncryptFileW".}
+
+  proc DecryptFile*(
+    lpFileName: LPCWSTR, dwReserved: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "DecryptFileW".}
+
+  proc FileEncryptionStatus*(
+    lpFileName: LPCWSTR, lpStatus: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "FileEncryptionStatusW".}
+
+  proc OpenEncryptedFileRaw*(
+    lpFileName: LPCWSTR, ulFlags: ULONG, pvContext: ptr PVOID
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "OpenEncryptedFileRawW".}
+
+  proc lstrcmp*(
+    lpString1: LPCWSTR, lpString2: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcmpW".}
+
+  proc lstrcmpi*(
+    lpString1: LPCWSTR, lpString2: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcmpiW".}
+
+  proc lstrcpyn*(
+    lpString1: LPWSTR, lpString2: LPCWSTR, iMaxLength: int32
+  ): LPWSTR {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcpynW".}
+
+  proc lstrcpy*(
+    lpString1: LPWSTR, lpString2: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcpyW".}
+
+  proc lstrcat*(
+    lpString1: LPWSTR, lpString2: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcatW".}
+
+  proc lstrlen*(
+    lpString: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "lstrlenW".}
+
+  proc CreateSemaphore*(
+    lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,
+    lInitialCount: LONG,
+    lMaximumCount: LONG,
+    lpName: LPCWSTR,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateSemaphoreW".}
+
+  proc CreateWaitableTimer*(
+    lpTimerAttributes: LPSECURITY_ATTRIBUTES,
+    bManualReset: WINBOOL,
+    lpTimerName: LPCWSTR,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateWaitableTimerW".}
+
+  proc LoadLibrary*(
+    lpLibFileName: LPCWSTR
+  ): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc: "LoadLibraryW".}
+
+  proc QueryFullProcessImageName*(
+    hProcess: HANDLE, dwFlags: DWORD, lpExeName: LPWSTR, lpdwSize: PDWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "QueryFullProcessImageNameW"
+  .}
+
+  proc FatalAppExit*(
+    uAction: UINT, lpMessageText: LPCWSTR
+  ): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "FatalAppExitW".}
+
+  proc GetFirmwareEnvironmentVariable*(
+    lpName: LPCWSTR, lpGuid: LPCWSTR, pBuffer: PVOID, nSize: DWORD
+  ): DWORD {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetFirmwareEnvironmentVariableW"
+  .}
+
+  proc SetFirmwareEnvironmentVariable*(
+    lpName: LPCWSTR, lpGuid: LPCWSTR, pValue: PVOID, nSize: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "SetFirmwareEnvironmentVariableW"
+  .}
+
+  proc FindResource*(
+    hModule: HMODULE, lpName: LPCWSTR, lpType: LPCWSTR
+  ): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc: "FindResourceW".}
+
+  proc EnumResourceTypes*(
+    hModule: HMODULE, lpEnumFunc: ENUMRESTYPEPROCW, lParam: LONG_PTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceTypesW".}
+
+  proc EnumResourceNames*(
+    hModule: HMODULE, lpType: LPCWSTR, lpEnumFunc: ENUMRESNAMEPROCW, lParam: LONG_PTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceNamesW".}
+
+  proc BeginUpdateResource*(
+    pFileName: LPCWSTR, bDeleteExistingResources: WINBOOL
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "BeginUpdateResourceW".}
+
+  proc UpdateResource*(
+    hUpdate: HANDLE,
+    lpType: LPCWSTR,
+    lpName: LPCWSTR,
+    wLanguage: WORD,
+    lpData: LPVOID,
+    cb: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "UpdateResourceW".}
+
+  proc EndUpdateResource*(
+    hUpdate: HANDLE, fDiscard: WINBOOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EndUpdateResourceW".}
+
+  proc GlobalAddAtom*(
+    lpString: LPCWSTR
+  ): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalAddAtomW".}
+
+  proc GlobalAddAtomEx*(
+    lpString: LPCWSTR, Flags: DWORD
+  ): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalAddAtomExW".}
+
+  proc GlobalFindAtom*(
+    lpString: LPCWSTR
+  ): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalFindAtomW".}
+
+  proc GlobalGetAtomName*(
+    nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalGetAtomNameW".}
+
+  proc AddAtom*(
+    lpString: LPCWSTR
+  ): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "AddAtomW".}
+
+  proc FindAtom*(
+    lpString: LPCWSTR
+  ): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "FindAtomW".}
+
+  proc GetAtomName*(
+    nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetAtomNameW".}
+
+  proc GetProfileInt*(
+    lpAppName: LPCWSTR, lpKeyName: LPCWSTR, nDefault: INT
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetProfileIntW".}
+
+  proc GetProfileString*(
+    lpAppName: LPCWSTR,
+    lpKeyName: LPCWSTR,
+    lpDefault: LPCWSTR,
+    lpReturnedString: LPWSTR,
+    nSize: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetProfileStringW".}
+
+  proc WriteProfileString*(
+    lpAppName: LPCWSTR, lpKeyName: LPCWSTR, lpString: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteProfileStringW".}
+
+  proc GetProfileSection*(
+    lpAppName: LPCWSTR, lpReturnedString: LPWSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetProfileSectionW".}
+
+  proc WriteProfileSection*(
+    lpAppName: LPCWSTR, lpString: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteProfileSectionW".}
+
+  proc GetPrivateProfileInt*(
+    lpAppName: LPCWSTR, lpKeyName: LPCWSTR, nDefault: INT, lpFileName: LPCWSTR
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileIntW".}
+
+  proc GetPrivateProfileString*(
+    lpAppName: LPCWSTR,
+    lpKeyName: LPCWSTR,
+    lpDefault: LPCWSTR,
+    lpReturnedString: LPWSTR,
+    nSize: DWORD,
+    lpFileName: LPCWSTR,
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStringW".}
+
+  proc WritePrivateProfileString*(
+    lpAppName: LPCWSTR, lpKeyName: LPCWSTR, lpString: LPCWSTR, lpFileName: LPCWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStringW"
+  .}
+
+  proc GetPrivateProfileSection*(
+    lpAppName: LPCWSTR, lpReturnedString: LPWSTR, nSize: DWORD, lpFileName: LPCWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionW".}
+
+  proc WritePrivateProfileSection*(
+    lpAppName: LPCWSTR, lpString: LPCWSTR, lpFileName: LPCWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "WritePrivateProfileSectionW"
+  .}
+
+  proc GetPrivateProfileSectionNames*(
+    lpszReturnBuffer: LPWSTR, nSize: DWORD, lpFileName: LPCWSTR
+  ): DWORD {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionNamesW"
+  .}
+
+  proc GetPrivateProfileStruct*(
+    lpszSection: LPCWSTR,
+    lpszKey: LPCWSTR,
+    lpStruct: LPVOID,
+    uSizeStruct: UINT,
+    szFile: LPCWSTR,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStructW"
+  .}
+
+  proc WritePrivateProfileStruct*(
+    lpszSection: LPCWSTR,
+    lpszKey: LPCWSTR,
+    lpStruct: LPVOID,
+    uSizeStruct: UINT,
+    szFile: LPCWSTR,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStructW"
+  .}
+
+  proc GetFirmwareEnvironmentVariableEx*(
+    lpName: LPCWSTR,
+    lpGuid: LPCWSTR,
+    pBuffer: PVOID,
+    nSize: DWORD,
+    pdwAttribubutes: PDWORD,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetFirmwareEnvironmentVariableExW"
+  .}
+
+  proc SetFirmwareEnvironmentVariableEx*(
+    lpName: LPCWSTR, lpGuid: LPCWSTR, pValue: PVOID, nSize: DWORD, dwAttributes: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "SetFirmwareEnvironmentVariableExW"
+  .}
+
+  proc GetSystemWow64Directory*(
+    lpBuffer: LPWSTR, uSize: UINT
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetSystemWow64DirectoryW".}
+
+  proc SetDllDirectory*(
+    lpPathName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetDllDirectoryW".}
+
+  proc GetDllDirectory*(
+    nBufferLength: DWORD, lpBuffer: LPWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetDllDirectoryW".}
+
+  proc CreateDirectoryEx*(
+    lpTemplateDirectory: LPCWSTR,
+    lpNewDirectory: LPCWSTR,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateDirectoryExW".}
+
+  proc CreateDirectoryTransacted*(
+    lpTemplateDirectory: LPCWSTR,
+    lpNewDirectory: LPCWSTR,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+    hTransaction: HANDLE,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "CreateDirectoryTransactedW"
+  .}
+
+  proc RemoveDirectoryTransacted*(
+    lpPathName: LPCWSTR, hTransaction: HANDLE
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "RemoveDirectoryTransactedW"
+  .}
+
+  proc GetFullPathNameTransacted*(
+    lpFileName: LPCWSTR,
+    nBufferLength: DWORD,
+    lpBuffer: LPWSTR,
+    lpFilePart: ptr LPWSTR,
+    hTransaction: HANDLE,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetFullPathNameTransactedW"
+  .}
+
+  proc CreateFileTransacted*(
+    lpFileName: LPCWSTR,
+    dwDesiredAccess: DWORD,
+    dwShareMode: DWORD,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+    dwCreationDisposition: DWORD,
+    dwFlagsAndAttributes: DWORD,
+    hTemplateFile: HANDLE,
+    hTransaction: HANDLE,
+    pusMiniVersion: PUSHORT,
+    lpExtendedParameter: PVOID,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileTransactedW".}
+
+  proc SetFileAttributesTransacted*(
+    lpFileName: LPCWSTR, dwFileAttributes: DWORD, hTransaction: HANDLE
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "SetFileAttributesTransactedW"
+  .}
+
+  proc GetFileAttributesTransacted*(
+    lpFileName: LPCWSTR,
+    fInfoLevelId: GET_FILEEX_INFO_LEVELS,
+    lpFileInformation: LPVOID,
+    hTransaction: HANDLE,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetFileAttributesTransactedW"
+  .}
+
+  proc GetCompressedFileSize*(
+    lpFileName: LPCWSTR, lpFileSizeHigh: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeW".}
+
+  proc DeleteFileTransacted*(
+    lpFileName: LPCWSTR, hTransaction: HANDLE
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DeleteFileTransactedW".}
+
+  proc GetCompressedFileSizeTransacted*(
+    lpFileName: LPCWSTR, lpFileSizeHigh: LPDWORD, hTransaction: HANDLE
+  ): DWORD {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeTransactedW"
+  .}
+
+  proc FindFirstFileTransacted*(
+    lpFileName: LPCWSTR,
+    fInfoLevelId: FINDEX_INFO_LEVELS,
+    lpFindFileData: LPVOID,
+    fSearchOp: FINDEX_SEARCH_OPS,
+    lpSearchFilter: LPVOID,
+    dwAdditionalFlags: DWORD,
+    hTransaction: HANDLE,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstFileTransactedW".}
+
+  proc CopyFileTransacted*(
+    lpExistingFileName: LPCWSTR,
+    lpNewFileName: LPCWSTR,
+    lpProgressRoutine: LPPROGRESS_ROUTINE,
+    lpData: LPVOID,
+    pbCancel: LPBOOL,
+    dwCopyFlags: DWORD,
+    hTransaction: HANDLE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CopyFileTransactedW".}
+
+  proc CheckNameLegalDOS8Dot3*(
+    lpName: LPCWSTR,
+    lpOemName: LPSTR,
+    OemNameSize: DWORD,
+    pbNameContainsSpaces: PBOOL,
+    pbNameLegal: PBOOL,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CheckNameLegalDOS8Dot3W".}
+
+  proc CopyFile*(
+    lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, bFailIfExists: WINBOOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CopyFileW".}
+
+  proc CopyFileEx*(
+    lpExistingFileName: LPCWSTR,
+    lpNewFileName: LPCWSTR,
+    lpProgressRoutine: LPPROGRESS_ROUTINE,
+    lpData: LPVOID,
+    pbCancel: LPBOOL,
+    dwCopyFlags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CopyFileExW".}
+
+  proc MoveFile*(
+    lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileW".}
+
+  proc MoveFileEx*(
+    lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileExW".}
+
+  proc MoveFileWithProgress*(
+    lpExistingFileName: LPCWSTR,
+    lpNewFileName: LPCWSTR,
+    lpProgressRoutine: LPPROGRESS_ROUTINE,
+    lpData: LPVOID,
+    dwFlags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileWithProgressW".}
+
+  proc MoveFileTransacted*(
+    lpExistingFileName: LPCWSTR,
+    lpNewFileName: LPCWSTR,
+    lpProgressRoutine: LPPROGRESS_ROUTINE,
+    lpData: LPVOID,
+    dwFlags: DWORD,
+    hTransaction: HANDLE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileTransactedW".}
+
+  proc ReplaceFile*(
+    lpReplacedFileName: LPCWSTR,
+    lpReplacementFileName: LPCWSTR,
+    lpBackupFileName: LPCWSTR,
+    dwReplaceFlags: DWORD,
+    lpExclude: LPVOID,
+    lpReserved: LPVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReplaceFileW".}
+
+  proc CreateHardLink*(
+    lpFileName: LPCWSTR,
+    lpExistingFileName: LPCWSTR,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateHardLinkW".}
+
+  proc CreateHardLinkTransacted*(
+    lpFileName: LPCWSTR,
+    lpExistingFileName: LPCWSTR,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+    hTransaction: HANDLE,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "CreateHardLinkTransactedW"
+  .}
+
+  proc GetNamedPipeHandleState*(
+    hNamedPipe: HANDLE,
+    lpState: LPDWORD,
+    lpCurInstances: LPDWORD,
+    lpMaxCollectionCount: LPDWORD,
+    lpCollectDataTimeout: LPDWORD,
+    lpUserName: LPWSTR,
+    nMaxUserNameSize: DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetNamedPipeHandleStateW"
+  .}
+
+  proc CallNamedPipe*(
+    lpNamedPipeName: LPCWSTR,
+    lpInBuffer: LPVOID,
+    nInBufferSize: DWORD,
+    lpOutBuffer: LPVOID,
+    nOutBufferSize: DWORD,
+    lpBytesRead: LPDWORD,
+    nTimeOut: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CallNamedPipeW".}
+
+  proc SetVolumeLabel*(
+    lpRootPathName: LPCWSTR, lpVolumeName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetVolumeLabelW".}
+
+  proc ClearEventLog*(
+    hEventLog: HANDLE, lpBackupFileName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ClearEventLogW".}
+
+  proc BackupEventLog*(
+    hEventLog: HANDLE, lpBackupFileName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "BackupEventLogW".}
+
+  proc OpenEventLog*(
+    lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenEventLogW".}
+
+  proc RegisterEventSource*(
+    lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "RegisterEventSourceW".}
+
+  proc OpenBackupEventLog*(
+    lpUNCServerName: LPCWSTR, lpFileName: LPCWSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenBackupEventLogW".}
+
+  proc ReadEventLog*(
+    hEventLog: HANDLE,
+    dwReadFlags: DWORD,
+    dwRecordOffset: DWORD,
+    lpBuffer: LPVOID,
+    nNumberOfBytesToRead: DWORD,
+    pnBytesRead: ptr DWORD,
+    pnMinNumberOfBytesNeeded: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ReadEventLogW".}
+
+  proc ReportEvent*(
+    hEventLog: HANDLE,
+    wType: WORD,
+    wCategory: WORD,
+    dwEventID: DWORD,
+    lpUserSid: PSID,
+    wNumStrings: WORD,
+    dwDataSize: DWORD,
+    lpStrings: ptr LPCWSTR,
+    lpRawData: LPVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ReportEventW".}
+
+  proc IsBadStringPtr*(
+    lpsz: LPCWSTR, ucchMax: UINT_PTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "IsBadStringPtrW".}
+
+  proc LookupPrivilegeValue*(
+    lpSystemName: LPCWSTR, lpName: LPCWSTR, lpLuid: PLUID
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupPrivilegeValueW".}
+
+  proc LookupPrivilegeName*(
+    lpSystemName: LPCWSTR, lpLuid: PLUID, lpName: LPWSTR, cchName: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupPrivilegeNameW".}
+
+  proc LookupPrivilegeDisplayName*(
+    lpSystemName: LPCWSTR,
+    lpName: LPCWSTR,
+    lpDisplayName: LPWSTR,
+    cchDisplayName: LPDWORD,
+    lpLanguageId: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameW"
+  .}
+
+  proc BuildCommDCB*(
+    lpDef: LPCWSTR, lpDCB: LPDCB
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "BuildCommDCBW".}
+
+  proc BuildCommDCBAndTimeouts*(
+    lpDef: LPCWSTR, lpDCB: LPDCB, lpCommTimeouts: LPCOMMTIMEOUTS
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsW"
+  .}
+
+  proc CommConfigDialog*(
+    lpszName: LPCWSTR, hWnd: HWND, lpCC: LPCOMMCONFIG
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CommConfigDialogW".}
+
+  proc GetDefaultCommConfig*(
+    lpszName: LPCWSTR, lpCC: LPCOMMCONFIG, lpdwSize: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetDefaultCommConfigW".}
+
+  proc SetDefaultCommConfig*(
+    lpszName: LPCWSTR, lpCC: LPCOMMCONFIG, dwSize: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetDefaultCommConfigW".}
+
+  proc GetComputerName*(
+    lpBuffer: LPWSTR, nSize: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetComputerNameW".}
+
+  proc SetComputerName*(
+    lpComputerName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetComputerNameW".}
+
+  proc DnsHostnameToComputerName*(
+    Hostname: LPCWSTR, ComputerName: LPWSTR, nSize: LPDWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "DnsHostnameToComputerNameW"
+  .}
+
+  proc GetUserName*(
+    lpBuffer: LPWSTR, pcbBuffer: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetUserNameW".}
+
+  proc LogonUser*(
+    lpszUsername: LPCWSTR,
+    lpszDomain: LPCWSTR,
+    lpszPassword: LPCWSTR,
+    dwLogonType: DWORD,
+    dwLogonProvider: DWORD,
+    phToken: PHANDLE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LogonUserW".}
+
+  proc LogonUserEx*(
+    lpszUsername: LPCWSTR,
+    lpszDomain: LPCWSTR,
+    lpszPassword: LPCWSTR,
+    dwLogonType: DWORD,
+    dwLogonProvider: DWORD,
+    phToken: PHANDLE,
+    ppLogonSid: ptr PSID,
+    ppProfileBuffer: ptr PVOID,
+    pdwProfileLength: LPDWORD,
+    pQuotaLimits: PQUOTA_LIMITS,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LogonUserExW".}
+
+  proc OpenPrivateNamespace*(
+    lpBoundaryDescriptor: LPVOID, lpAliasPrefix: LPCWSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenPrivateNamespaceW".}
+
+  proc GetCurrentHwProfile*(
+    lpHwProfileInfo: LPHW_PROFILE_INFOW
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetCurrentHwProfileW".}
+
+  proc VerifyVersionInfo*(
+    lpVersionInformation: LPOSVERSIONINFOEXW,
+    dwTypeMask: DWORD,
+    dwlConditionMask: DWORDLONG,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "VerifyVersionInfoW".}
+
+  proc CreateJobObject*(
+    lpJobAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCWSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateJobObjectW".}
+
+  proc OpenJobObject*(
+    dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCWSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenJobObjectW".}
+
+  proc FindFirstVolumeMountPoint*(
+    lpszRootPathName: LPCWSTR, lpszVolumeMountPoint: LPWSTR, cchBufferLength: DWORD
+  ): HANDLE {.
+    winapi, stdcall, dynlib: "kernel32", importc: "FindFirstVolumeMountPointW"
+  .}
+
+  proc FindNextVolumeMountPoint*(
+    hFindVolumeMountPoint: HANDLE, lpszVolumeMountPoint: LPWSTR, cchBufferLength: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "FindNextVolumeMountPointW"
+  .}
+
+  proc SetVolumeMountPoint*(
+    lpszVolumeMountPoint: LPCWSTR, lpszVolumeName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetVolumeMountPointW".}
+
+  proc CreateActCtx*(
+    pActCtx: PCACTCTXW
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateActCtxW".}
+
+  proc FindActCtxSectionString*(
+    dwFlags: DWORD,
+    lpExtensionGuid: ptr GUID,
+    ulSectionId: ULONG,
+    lpStringToFind: LPCWSTR,
+    ReturnedData: PACTCTX_SECTION_KEYED_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "FindActCtxSectionStringW"
+  .}
+
+  proc CreateSymbolicLink*(
+    lpSymlinkFileName: LPCWSTR, lpTargetFileName: LPCWSTR, dwFlags: DWORD
+  ): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc: "CreateSymbolicLinkW".}
+
+  proc CreateSymbolicLinkTransacted*(
+    lpSymlinkFileName: LPCWSTR,
+    lpTargetFileName: LPCWSTR,
+    dwFlags: DWORD,
+    hTransaction: HANDLE,
+  ): BOOLEAN {.
+    winapi, stdcall, dynlib: "kernel32", importc: "CreateSymbolicLinkTransactedW"
+  .}
+
+  proc LookupAccountNameLocal*(
+      lpAccountName: LPCWSTR,
+      Sid: PSID,
+      cbSid: LPDWORD,
+      ReferencedDomainName: LPWSTR,
+      cchReferencedDomainName: LPDWORD,
+      peUse: PSID_NAME_USE,
+  ): WINBOOL {.winapi, inline.} =
+    LookupAccountNameW(
+      nil, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName,
+      peUse,
+    )
+
+  proc LookupAccountSidLocal*(
+      Sid: PSID,
+      Name: LPWSTR,
+      cchName: LPDWORD,
+      ReferencedDomainName: LPWSTR,
+      cchReferencedDomainName: LPDWORD,
+      peUse: PSID_NAME_USE,
+  ): WINBOOL {.winapi, inline.} =
+    LookupAccountSidW(
+      nil, Sid, Name, cchName, ReferencedDomainName, cchReferencedDomainName, peUse
+    )
+
 when winimAnsi:
   type
     WIN32_FIND_DATA* = WIN32_FIND_DATAA
@@ -3094,220 +9028,1278 @@
     ACTCTX* = ACTCTXA
     PACTCTX* = PACTCTXA
     PCACTCTX* = PCACTCTXA
+
   const
     GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A* = GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A
     GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W* = GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W
     GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T* = GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T
   proc GetEnvironmentStrings*(): LPCH {.winapi, stdcall, dynlib: "kernel32", importc.}
-  proc SetEnvironmentStrings*(NewEnvironment: LPCH): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetEnvironmentStringsA".}
-  proc GetShortPathName*(lpszLongPath: LPCSTR, lpszShortPath: LPSTR, cchBuffer: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetShortPathNameA".}
-  proc OpenMutex*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenMutexA".}
-  proc OpenSemaphore*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenSemaphoreA".}
-  proc OpenWaitableTimer*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpTimerName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenWaitableTimerA".}
-  proc CreateFileMapping*(hFile: HANDLE, lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, flProtect: DWORD, dwMaximumSizeHigh: DWORD, dwMaximumSizeLow: DWORD, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileMappingA".}
-  proc OpenFileMapping*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenFileMappingA".}
-  proc GetLogicalDriveStrings*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetLogicalDriveStringsA".}
-  proc CreateSemaphoreEx*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES, lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateSemaphoreExA".}
-  proc CreateWaitableTimerEx*(lpTimerAttributes: LPSECURITY_ATTRIBUTES, lpTimerName: LPCSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateWaitableTimerExA".}
-  proc CreateFileMappingNuma*(hFile: HANDLE, lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, flProtect: DWORD, dwMaximumSizeHigh: DWORD, dwMaximumSizeLow: DWORD, lpName: LPCSTR, nndPreferred: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileMappingNumaA".}
-  proc GetStartupInfo*(lpStartupInfo: LPSTARTUPINFOA): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "GetStartupInfoA".}
-  proc FindResourceEx*(hModule: HMODULE, lpType: LPCSTR, lpName: LPCSTR, wLanguage: WORD): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc: "FindResourceExA".}
-  proc GetTempPath*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetTempPathA".}
-  proc GetTempFileName*(lpPathName: LPCSTR, lpPrefixString: LPCSTR, uUnique: UINT, lpTempFileName: LPSTR): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetTempFileNameA".}
-  proc DefineDosDevice*(dwFlags: DWORD, lpDeviceName: LPCSTR, lpTargetPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DefineDosDeviceA".}
-  proc QueryDosDevice*(lpDeviceName: LPCSTR, lpTargetPath: LPSTR, ucchMax: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "QueryDosDeviceA".}
-  proc CreateNamedPipe*(lpName: LPCSTR, dwOpenMode: DWORD, dwPipeMode: DWORD, nMaxInstances: DWORD, nOutBufferSize: DWORD, nInBufferSize: DWORD, nDefaultTimeOut: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateNamedPipeA".}
-  proc WaitNamedPipe*(lpNamedPipeName: LPCSTR, nTimeOut: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WaitNamedPipeA".}
-  proc GetVolumeInformation*(lpRootPathName: LPCSTR, lpVolumeNameBuffer: LPSTR, nVolumeNameSize: DWORD, lpVolumeSerialNumber: LPDWORD, lpMaximumComponentLength: LPDWORD, lpFileSystemFlags: LPDWORD, lpFileSystemNameBuffer: LPSTR, nFileSystemNameSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVolumeInformationA".}
-  proc AccessCheckAndAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID, ObjectTypeName: LPSTR, ObjectName: LPSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, DesiredAccess: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccess: LPDWORD, AccessStatus: LPBOOL, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "AccessCheckAndAuditAlarmA".}
-  proc AccessCheckByTypeAndAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID, ObjectTypeName: LPCSTR, ObjectName: LPCSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccess: LPDWORD, AccessStatus: LPBOOL, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "AccessCheckByTypeAndAuditAlarmA".}
-  proc AccessCheckByTypeResultListAndAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID, ObjectTypeName: LPCSTR, ObjectName: LPCSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccess: LPDWORD, AccessStatusList: LPDWORD, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "AccessCheckByTypeResultListAndAuditAlarmA".}
-  proc AccessCheckByTypeResultListAndAuditAlarmByHandle*(SubsystemName: LPCSTR, HandleId: LPVOID, ClientToken: HANDLE, ObjectTypeName: LPCSTR, ObjectName: LPCSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: WINBOOL, GrantedAccess: LPDWORD, AccessStatusList: LPDWORD, pfGenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "AccessCheckByTypeResultListAndAuditAlarmByHandleA".}
-  proc ObjectOpenAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID, ObjectTypeName: LPSTR, ObjectName: LPSTR, pSecurityDescriptor: PSECURITY_DESCRIPTOR, ClientToken: HANDLE, DesiredAccess: DWORD, GrantedAccess: DWORD, Privileges: PPRIVILEGE_SET, ObjectCreation: WINBOOL, AccessGranted: WINBOOL, GenerateOnClose: LPBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ObjectOpenAuditAlarmA".}
-  proc ObjectPrivilegeAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID, ClientToken: HANDLE, DesiredAccess: DWORD, Privileges: PPRIVILEGE_SET, AccessGranted: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmA".}
-  proc ObjectCloseAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ObjectCloseAuditAlarmA".}
-  proc ObjectDeleteAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ObjectDeleteAuditAlarmA".}
-  proc PrivilegedServiceAuditAlarm*(SubsystemName: LPCSTR, ServiceName: LPCSTR, ClientToken: HANDLE, Privileges: PPRIVILEGE_SET, AccessGranted: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmA".}
-  proc SetFileSecurity*(lpFileName: LPCSTR, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "SetFileSecurityA".}
-  proc GetFileSecurity*(lpFileName: LPCSTR, RequestedInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetFileSecurityA".}
-  proc SetComputerNameEx*(NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPCTSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetComputerNameExA".}
-  proc CreateProcessAsUser*(hToken: HANDLE, lpApplicationName: LPCSTR, lpCommandLine: LPSTR, lpProcessAttributes: LPSECURITY_ATTRIBUTES, lpThreadAttributes: LPSECURITY_ATTRIBUTES, bInheritHandles: WINBOOL, dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: LPCSTR, lpStartupInfo: LPSTARTUPINFOA, lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CreateProcessAsUserA".}
-  proc FindFirstVolume*(lpszVolumeName: LPSTR, cchBufferLength: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstVolumeA".}
-  proc FindNextVolume*(hFindVolume: HANDLE, lpszVolumeName: LPSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FindNextVolumeA".}
-  proc DeleteVolumeMountPoint*(lpszVolumeMountPoint: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DeleteVolumeMountPointA".}
-  proc GetVolumeNameForVolumeMountPoint*(lpszVolumeMountPoint: LPCSTR, lpszVolumeName: LPSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVolumeNameForVolumeMountPointA".}
-  proc GetVolumePathName*(lpszFileName: LPCSTR, lpszVolumePathName: LPSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVolumePathNameA".}
-  proc GetVolumePathNamesForVolumeName*(lpszVolumeName: LPCSTR, lpszVolumePathNames: LPCH, cchBufferLength: DWORD, lpcchReturnLength: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVolumePathNamesForVolumeNameA".}
-  proc OutputDebugString*(lpOutputString: LPCSTR): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "OutputDebugStringA".}
-  proc CreateFile*(lpFileName: LPCSTR, dwDesiredAccess: DWORD, dwShareMode: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD, hTemplateFile: HANDLE): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileA".}
-  proc FindFirstChangeNotification*(lpPathName: LPCSTR, bWatchSubtree: WINBOOL, dwNotifyFilter: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstChangeNotificationA".}
-  proc FindFirstFile*(lpFileName: LPCSTR, lpFindFileData: LPWIN32_FIND_DATAA): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstFileA".}
-  proc GetDiskFreeSpace*(lpRootPathName: LPCSTR, lpSectorsPerCluster: LPDWORD, lpBytesPerSector: LPDWORD, lpNumberOfFreeClusters: LPDWORD, lpTotalNumberOfClusters: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceA".}
-  proc GetDriveType*(lpRootPathName: LPCSTR): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetDriveTypeA".}
-  proc GetFileAttributes*(lpFileName: LPCSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFileAttributesA".}
-  proc GetFullPathName*(lpFileName: LPCSTR, nBufferLength: DWORD, lpBuffer: LPSTR, lpFilePart: ptr LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFullPathNameA".}
-  proc GetLongPathName*(lpszShortPath: LPCSTR, lpszLongPath: LPSTR, cchBuffer: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetLongPathNameA".}
-  proc GetFinalPathNameByHandle*(hFile: HANDLE, lpszFilePath: LPSTR, cchFilePath: DWORD, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFinalPathNameByHandleA".}
-  proc CreateDirectory*(lpPathName: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateDirectoryA".}
-  proc DeleteFile*(lpFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DeleteFileA".}
-  proc FindFirstFileEx*(lpFileName: LPCSTR, fInfoLevelId: FINDEX_INFO_LEVELS, lpFindFileData: LPVOID, fSearchOp: FINDEX_SEARCH_OPS, lpSearchFilter: LPVOID, dwAdditionalFlags: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstFileExA".}
-  proc FindNextFile*(hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATAA): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FindNextFileA".}
-  proc GetDiskFreeSpaceEx*(lpDirectoryName: LPCSTR, lpFreeBytesAvailableToCaller: PULARGE_INTEGER, lpTotalNumberOfBytes: PULARGE_INTEGER, lpTotalNumberOfFreeBytes: PULARGE_INTEGER): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExA".}
-  proc GetFileAttributesEx*(lpFileName: LPCSTR, fInfoLevelId: GET_FILEEX_INFO_LEVELS, lpFileInformation: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetFileAttributesExA".}
-  proc RemoveDirectory*(lpPathName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "RemoveDirectoryA".}
-  proc SetFileAttributes*(lpFileName: LPCSTR, dwFileAttributes: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetFileAttributesA".}
-  proc GetModuleHandleEx*(dwFlags: DWORD, lpModuleName: LPCSTR, phModule: ptr HMODULE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetModuleHandleExA".}
-  proc LoadString*(hInstance: HINSTANCE, uID: UINT, lpBuffer: LPSTR, cchBufferMax: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "LoadStringA".}
-  proc GetModuleFileName*(hModule: HMODULE, lpFilename: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetModuleFileNameA".}
-  proc GetModuleHandle*(lpModuleName: LPCSTR): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc: "GetModuleHandleA".}
-  proc LoadLibraryEx*(lpLibFileName: LPCSTR, hFile: HANDLE, dwFlags: DWORD): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc: "LoadLibraryExA".}
-  proc EnumResourceLanguages*(hModule: HMODULE, lpType: LPCSTR, lpName: LPCSTR, lpEnumFunc: ENUMRESLANGPROCA, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesA".}
-  proc EnumResourceLanguagesEx*(hModule: HMODULE, lpType: LPCSTR, lpName: LPCSTR, lpEnumFunc: ENUMRESLANGPROCA, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesExA".}
-  proc EnumResourceNamesEx*(hModule: HMODULE, lpType: LPCSTR, lpEnumFunc: ENUMRESNAMEPROCA, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceNamesExA".}
-  proc EnumResourceTypesEx*(hModule: HMODULE, lpEnumFunc: ENUMRESTYPEPROCA, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceTypesExA".}
-  proc ExpandEnvironmentStrings*(lpSrc: LPCSTR, lpDst: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "ExpandEnvironmentStringsA".}
-  proc FreeEnvironmentStrings*(penv: LPCH): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FreeEnvironmentStringsA".}
-  proc GetCommandLine*(): LPSTR {.winapi, stdcall, dynlib: "kernel32", importc: "GetCommandLineA".}
-  proc GetCurrentDirectory*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetCurrentDirectoryA".}
-  proc GetEnvironmentVariable*(lpName: LPCSTR, lpBuffer: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetEnvironmentVariableA".}
-  proc NeedCurrentDirectoryForExePath*(ExeName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "NeedCurrentDirectoryForExePathA".}
-  proc SearchPath*(lpPath: LPCSTR, lpFileName: LPCSTR, lpExtension: LPCSTR, nBufferLength: DWORD, lpBuffer: LPSTR, lpFilePart: ptr LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "SearchPathA".}
-  proc SetCurrentDirectory*(lpPathName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetCurrentDirectoryA".}
-  proc SetEnvironmentVariable*(lpName: LPCSTR, lpValue: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetEnvironmentVariableA".}
-  proc CreateProcess*(lpApplicationName: LPCSTR, lpCommandLine: LPSTR, lpProcessAttributes: LPSECURITY_ATTRIBUTES, lpThreadAttributes: LPSECURITY_ATTRIBUTES, bInheritHandles: WINBOOL, dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: LPCSTR, lpStartupInfo: LPSTARTUPINFOA, lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateProcessA".}
-  proc CreateMutexEx*(lpMutexAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateMutexExA".}
-  proc CreateEventEx*(lpEventAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCSTR, dwFlags: DWORD, dwDesiredAccess: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateEventExA".}
-  proc OpenEvent*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenEventA".}
-  proc CreateMutex*(lpMutexAttributes: LPSECURITY_ATTRIBUTES, bInitialOwner: WINBOOL, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateMutexA".}
-  proc CreateEvent*(lpEventAttributes: LPSECURITY_ATTRIBUTES, bManualReset: WINBOOL, bInitialState: WINBOOL, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateEventA".}
-  proc GetSystemDirectory*(lpBuffer: LPSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetSystemDirectoryA".}
-  proc GetWindowsDirectory*(lpBuffer: LPSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetWindowsDirectoryA".}
-  proc GetSystemWindowsDirectory*(lpBuffer: LPSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetSystemWindowsDirectoryA".}
-  proc GetComputerNameEx*(NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPSTR, nSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetComputerNameExA".}
-  proc GetVersionEx*(lpVersionInformation: LPOSVERSIONINFOA): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVersionExA".}
-  proc GetBinaryType*(lpApplicationName: LPCSTR, lpBinaryType: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetBinaryTypeA".}
-  proc GetLongPathNameTransacted*(lpszShortPath: LPCSTR, lpszLongPath: LPSTR, cchBuffer: DWORD, hTransaction: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetLongPathNameTransactedA".}
-  proc SetFileShortName*(hFile: HANDLE, lpShortName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetFileShortNameA".}
-  proc FormatMessage*(dwFlags: DWORD, lpSource: LPCVOID, dwMessageId: DWORD, dwLanguageId: DWORD, lpBuffer: LPSTR, nSize: DWORD, Arguments: ptr va_list): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "FormatMessageA".}
-  proc CreateMailslot*(lpName: LPCSTR, nMaxMessageSize: DWORD, lReadTimeout: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateMailslotA".}
-  proc EncryptFile*(lpFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EncryptFileA".}
-  proc DecryptFile*(lpFileName: LPCSTR, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "DecryptFileA".}
-  proc FileEncryptionStatus*(lpFileName: LPCSTR, lpStatus: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "FileEncryptionStatusA".}
-  proc OpenEncryptedFileRaw*(lpFileName: LPCSTR, ulFlags: ULONG, pvContext: ptr PVOID): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "OpenEncryptedFileRawA".}
-  proc lstrcmp*(lpString1: LPCSTR, lpString2: LPCSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcmpA".}
-  proc lstrcmpi*(lpString1: LPCSTR, lpString2: LPCSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcmpiA".}
-  proc lstrcpyn*(lpString1: LPSTR, lpString2: LPCSTR, iMaxLength: int32): LPSTR {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcpynA".}
-  proc lstrcpy*(lpString1: LPSTR, lpString2: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcpyA".}
-  proc lstrcat*(lpString1: LPSTR, lpString2: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcatA".}
-  proc lstrlen*(lpString: LPCSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "lstrlenA".}
-  proc CreateSemaphore*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES, lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateSemaphoreA".}
-  proc CreateWaitableTimer*(lpTimerAttributes: LPSECURITY_ATTRIBUTES, bManualReset: WINBOOL, lpTimerName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateWaitableTimerA".}
-  proc LoadLibrary*(lpLibFileName: LPCSTR): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc: "LoadLibraryA".}
-  proc QueryFullProcessImageName*(hProcess: HANDLE, dwFlags: DWORD, lpExeName: LPSTR, lpdwSize: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "QueryFullProcessImageNameA".}
-  proc FatalAppExit*(uAction: UINT, lpMessageText: LPCSTR): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "FatalAppExitA".}
-  proc GetFirmwareEnvironmentVariable*(lpName: LPCSTR, lpGuid: LPCSTR, pBuffer: PVOID, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFirmwareEnvironmentVariableA".}
-  proc SetFirmwareEnvironmentVariable*(lpName: LPCSTR, lpGuid: LPCSTR, pValue: PVOID, nSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetFirmwareEnvironmentVariableA".}
-  proc FindResource*(hModule: HMODULE, lpName: LPCSTR, lpType: LPCSTR): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc: "FindResourceA".}
-  proc EnumResourceTypes*(hModule: HMODULE, lpEnumFunc: ENUMRESTYPEPROCA, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceTypesA".}
-  proc EnumResourceNames*(hModule: HMODULE, lpType: LPCSTR, lpEnumFunc: ENUMRESNAMEPROCA, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceNamesA".}
-  proc BeginUpdateResource*(pFileName: LPCSTR, bDeleteExistingResources: WINBOOL): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "BeginUpdateResourceA".}
-  proc UpdateResource*(hUpdate: HANDLE, lpType: LPCSTR, lpName: LPCSTR, wLanguage: WORD, lpData: LPVOID, cb: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "UpdateResourceA".}
-  proc EndUpdateResource*(hUpdate: HANDLE, fDiscard: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EndUpdateResourceA".}
-  proc GlobalAddAtom*(lpString: LPCSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalAddAtomA".}
-  proc GlobalAddAtomEx*(lpString: LPCSTR, Flags: DWORD): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalAddAtomExA".}
-  proc GlobalFindAtom*(lpString: LPCSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalFindAtomA".}
-  proc GlobalGetAtomName*(nAtom: ATOM, lpBuffer: LPSTR, nSize: int32): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalGetAtomNameA".}
-  proc AddAtom*(lpString: LPCSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "AddAtomA".}
-  proc FindAtom*(lpString: LPCSTR): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "FindAtomA".}
-  proc GetAtomName*(nAtom: ATOM, lpBuffer: LPSTR, nSize: int32): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetAtomNameA".}
-  proc GetProfileInt*(lpAppName: LPCSTR, lpKeyName: LPCSTR, nDefault: INT): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetProfileIntA".}
-  proc GetProfileString*(lpAppName: LPCSTR, lpKeyName: LPCSTR, lpDefault: LPCSTR, lpReturnedString: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetProfileStringA".}
-  proc WriteProfileString*(lpAppName: LPCSTR, lpKeyName: LPCSTR, lpString: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteProfileStringA".}
-  proc GetProfileSection*(lpAppName: LPCSTR, lpReturnedString: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetProfileSectionA".}
-  proc WriteProfileSection*(lpAppName: LPCSTR, lpString: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteProfileSectionA".}
-  proc GetPrivateProfileInt*(lpAppName: LPCSTR, lpKeyName: LPCSTR, nDefault: INT, lpFileName: LPCSTR): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileIntA".}
-  proc GetPrivateProfileString*(lpAppName: LPCSTR, lpKeyName: LPCSTR, lpDefault: LPCSTR, lpReturnedString: LPSTR, nSize: DWORD, lpFileName: LPCSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStringA".}
-  proc WritePrivateProfileString*(lpAppName: LPCSTR, lpKeyName: LPCSTR, lpString: LPCSTR, lpFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStringA".}
-  proc GetPrivateProfileSection*(lpAppName: LPCSTR, lpReturnedString: LPSTR, nSize: DWORD, lpFileName: LPCSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionA".}
-  proc WritePrivateProfileSection*(lpAppName: LPCSTR, lpString: LPCSTR, lpFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WritePrivateProfileSectionA".}
-  proc GetPrivateProfileSectionNames*(lpszReturnBuffer: LPSTR, nSize: DWORD, lpFileName: LPCSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionNamesA".}
-  proc GetPrivateProfileStruct*(lpszSection: LPCSTR, lpszKey: LPCSTR, lpStruct: LPVOID, uSizeStruct: UINT, szFile: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStructA".}
-  proc WritePrivateProfileStruct*(lpszSection: LPCSTR, lpszKey: LPCSTR, lpStruct: LPVOID, uSizeStruct: UINT, szFile: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStructA".}
-  proc GetFirmwareEnvironmentVariableEx*(lpName: LPCSTR, lpGuid: LPCSTR, pBuffer: PVOID, nSize: DWORD, pdwAttribubutes: PDWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFirmwareEnvironmentVariableExA".}
-  proc SetFirmwareEnvironmentVariableEx*(lpName: LPCSTR, lpGuid: LPCSTR, pValue: PVOID, nSize: DWORD, dwAttributes: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetFirmwareEnvironmentVariableExA".}
-  proc GetSystemWow64Directory*(lpBuffer: LPSTR, uSize: UINT): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetSystemWow64DirectoryA".}
-  proc SetDllDirectory*(lpPathName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetDllDirectoryA".}
-  proc GetDllDirectory*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetDllDirectoryA".}
-  proc CreateDirectoryEx*(lpTemplateDirectory: LPCSTR, lpNewDirectory: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateDirectoryExA".}
-  proc CreateDirectoryTransacted*(lpTemplateDirectory: LPCSTR, lpNewDirectory: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateDirectoryTransactedA".}
-  proc RemoveDirectoryTransacted*(lpPathName: LPCSTR, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "RemoveDirectoryTransactedA".}
-  proc GetFullPathNameTransacted*(lpFileName: LPCSTR, nBufferLength: DWORD, lpBuffer: LPSTR, lpFilePart: ptr LPSTR, hTransaction: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFullPathNameTransactedA".}
-  proc CreateFileTransacted*(lpFileName: LPCSTR, dwDesiredAccess: DWORD, dwShareMode: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD, hTemplateFile: HANDLE, hTransaction: HANDLE, pusMiniVersion: PUSHORT, lpExtendedParameter: PVOID): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileTransactedA".}
-  proc SetFileAttributesTransacted*(lpFileName: LPCSTR, dwFileAttributes: DWORD, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetFileAttributesTransactedA".}
-  proc GetFileAttributesTransacted*(lpFileName: LPCSTR, fInfoLevelId: GET_FILEEX_INFO_LEVELS, lpFileInformation: LPVOID, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetFileAttributesTransactedA".}
-  proc GetCompressedFileSize*(lpFileName: LPCSTR, lpFileSizeHigh: LPDWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeA".}
-  proc DeleteFileTransacted*(lpFileName: LPCSTR, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DeleteFileTransactedA".}
-  proc GetCompressedFileSizeTransacted*(lpFileName: LPCSTR, lpFileSizeHigh: LPDWORD, hTransaction: HANDLE): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeTransactedA".}
-  proc FindFirstFileTransacted*(lpFileName: LPCSTR, fInfoLevelId: FINDEX_INFO_LEVELS, lpFindFileData: LPVOID, fSearchOp: FINDEX_SEARCH_OPS, lpSearchFilter: LPVOID, dwAdditionalFlags: DWORD, hTransaction: HANDLE): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstFileTransactedA".}
-  proc CopyFileTransacted*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, pbCancel: LPBOOL, dwCopyFlags: DWORD, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CopyFileTransactedA".}
-  proc CheckNameLegalDOS8Dot3*(lpName: LPCSTR, lpOemName: LPSTR, OemNameSize: DWORD, pbNameContainsSpaces: PBOOL, pbNameLegal: PBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CheckNameLegalDOS8Dot3A".}
-  proc CopyFile*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, bFailIfExists: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CopyFileA".}
-  proc CopyFileEx*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, pbCancel: LPBOOL, dwCopyFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CopyFileExA".}
-  proc MoveFile*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileA".}
-  proc MoveFileEx*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileExA".}
-  proc MoveFileWithProgress*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileWithProgressA".}
-  proc MoveFileTransacted*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, dwFlags: DWORD, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileTransactedA".}
-  proc ReplaceFile*(lpReplacedFileName: LPCSTR, lpReplacementFileName: LPCSTR, lpBackupFileName: LPCSTR, dwReplaceFlags: DWORD, lpExclude: LPVOID, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReplaceFileA".}
-  proc CreateHardLink*(lpFileName: LPCSTR, lpExistingFileName: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateHardLinkA".}
-  proc CreateHardLinkTransacted*(lpFileName: LPCSTR, lpExistingFileName: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, hTransaction: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateHardLinkTransactedA".}
-  proc GetNamedPipeHandleState*(hNamedPipe: HANDLE, lpState: LPDWORD, lpCurInstances: LPDWORD, lpMaxCollectionCount: LPDWORD, lpCollectDataTimeout: LPDWORD, lpUserName: LPSTR, nMaxUserNameSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetNamedPipeHandleStateA".}
-  proc CallNamedPipe*(lpNamedPipeName: LPCSTR, lpInBuffer: LPVOID, nInBufferSize: DWORD, lpOutBuffer: LPVOID, nOutBufferSize: DWORD, lpBytesRead: LPDWORD, nTimeOut: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CallNamedPipeA".}
-  proc SetVolumeLabel*(lpRootPathName: LPCSTR, lpVolumeName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetVolumeLabelA".}
-  proc ClearEventLog*(hEventLog: HANDLE, lpBackupFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ClearEventLogA".}
-  proc BackupEventLog*(hEventLog: HANDLE, lpBackupFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "BackupEventLogA".}
-  proc OpenEventLog*(lpUNCServerName: LPCSTR, lpSourceName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenEventLogA".}
-  proc RegisterEventSource*(lpUNCServerName: LPCSTR, lpSourceName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "RegisterEventSourceA".}
-  proc OpenBackupEventLog*(lpUNCServerName: LPCSTR, lpFileName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenBackupEventLogA".}
-  proc ReadEventLog*(hEventLog: HANDLE, dwReadFlags: DWORD, dwRecordOffset: DWORD, lpBuffer: LPVOID, nNumberOfBytesToRead: DWORD, pnBytesRead: ptr DWORD, pnMinNumberOfBytesNeeded: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ReadEventLogA".}
-  proc ReportEvent*(hEventLog: HANDLE, wType: WORD, wCategory: WORD, dwEventID: DWORD, lpUserSid: PSID, wNumStrings: WORD, dwDataSize: DWORD, lpStrings: ptr LPCSTR, lpRawData: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ReportEventA".}
-  proc IsBadStringPtr*(lpsz: LPCSTR, ucchMax: UINT_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "IsBadStringPtrA".}
-  proc LookupPrivilegeValue*(lpSystemName: LPCSTR, lpName: LPCSTR, lpLuid: PLUID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupPrivilegeValueA".}
-  proc LookupPrivilegeName*(lpSystemName: LPCSTR, lpLuid: PLUID, lpName: LPSTR, cchName: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupPrivilegeNameA".}
-  proc LookupPrivilegeDisplayName*(lpSystemName: LPCSTR, lpName: LPCSTR, lpDisplayName: LPSTR, cchDisplayName: LPDWORD, lpLanguageId: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameA".}
-  proc BuildCommDCB*(lpDef: LPCSTR, lpDCB: LPDCB): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "BuildCommDCBA".}
-  proc BuildCommDCBAndTimeouts*(lpDef: LPCSTR, lpDCB: LPDCB, lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsA".}
-  proc CommConfigDialog*(lpszName: LPCSTR, hWnd: HWND, lpCC: LPCOMMCONFIG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CommConfigDialogA".}
-  proc GetDefaultCommConfig*(lpszName: LPCSTR, lpCC: LPCOMMCONFIG, lpdwSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetDefaultCommConfigA".}
-  proc SetDefaultCommConfig*(lpszName: LPCSTR, lpCC: LPCOMMCONFIG, dwSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetDefaultCommConfigA".}
-  proc GetComputerName*(lpBuffer: LPSTR, nSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetComputerNameA".}
-  proc SetComputerName*(lpComputerName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetComputerNameA".}
-  proc DnsHostnameToComputerName*(Hostname: LPCSTR, ComputerName: LPSTR, nSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DnsHostnameToComputerNameA".}
-  proc GetUserName*(lpBuffer: LPSTR, pcbBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetUserNameA".}
-  proc LogonUser*(lpszUsername: LPCSTR, lpszDomain: LPCSTR, lpszPassword: LPCSTR, dwLogonType: DWORD, dwLogonProvider: DWORD, phToken: PHANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LogonUserA".}
-  proc LogonUserEx*(lpszUsername: LPCSTR, lpszDomain: LPCSTR, lpszPassword: LPCSTR, dwLogonType: DWORD, dwLogonProvider: DWORD, phToken: PHANDLE, ppLogonSid: ptr PSID, ppProfileBuffer: ptr PVOID, pdwProfileLength: LPDWORD, pQuotaLimits: PQUOTA_LIMITS): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LogonUserExA".}
-  proc CreatePrivateNamespace*(lpPrivateNamespaceAttributes: LPSECURITY_ATTRIBUTES, lpBoundaryDescriptor: LPVOID, lpAliasPrefix: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreatePrivateNamespaceA".}
-  proc OpenPrivateNamespace*(lpBoundaryDescriptor: LPVOID, lpAliasPrefix: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenPrivateNamespaceA".}
-  proc CreateBoundaryDescriptor*(Name: LPCSTR, Flags: ULONG): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateBoundaryDescriptorA".}
-  proc GetCurrentHwProfile*(lpHwProfileInfo: LPHW_PROFILE_INFOA): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetCurrentHwProfileA".}
-  proc VerifyVersionInfo*(lpVersionInformation: LPOSVERSIONINFOEXA, dwTypeMask: DWORD, dwlConditionMask: DWORDLONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "VerifyVersionInfoA".}
-  proc CreateJobObject*(lpJobAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateJobObjectA".}
-  proc OpenJobObject*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenJobObjectA".}
-  proc FindFirstVolumeMountPoint*(lpszRootPathName: LPCSTR, lpszVolumeMountPoint: LPSTR, cchBufferLength: DWORD): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstVolumeMountPointA".}
-  proc FindNextVolumeMountPoint*(hFindVolumeMountPoint: HANDLE, lpszVolumeMountPoint: LPSTR, cchBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FindNextVolumeMountPointA".}
-  proc SetVolumeMountPoint*(lpszVolumeMountPoint: LPCSTR, lpszVolumeName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetVolumeMountPointA".}
-  proc CreateActCtx*(pActCtx: PCACTCTXA): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateActCtxA".}
-  proc FindActCtxSectionString*(dwFlags: DWORD, lpExtensionGuid: ptr GUID, ulSectionId: ULONG, lpStringToFind: LPCSTR, ReturnedData: PACTCTX_SECTION_KEYED_DATA): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FindActCtxSectionStringA".}
-  proc CreateSymbolicLink*(lpSymlinkFileName: LPCSTR, lpTargetFileName: LPCSTR, dwFlags: DWORD): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc: "CreateSymbolicLinkA".}
-  proc CreateSymbolicLinkTransacted*(lpSymlinkFileName: LPCSTR, lpTargetFileName: LPCSTR, dwFlags: DWORD, hTransaction: HANDLE): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc: "CreateSymbolicLinkTransactedA".}
-  proc LookupAccountNameLocal*(lpAccountName: LPCSTR, Sid: PSID, cbSid: LPDWORD, ReferencedDomainName: LPSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, inline.} = LookupAccountNameA(nil, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse)
-  proc LookupAccountSidLocal*(Sid: PSID, Name: LPSTR, cchName: LPDWORD, ReferencedDomainName: LPSTR, cchReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL {.winapi, inline.} = LookupAccountSidA(nil, Sid, Name, cchName, ReferencedDomainName, cchReferencedDomainName, peUse)
+  proc SetEnvironmentStrings*(
+    NewEnvironment: LPCH
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetEnvironmentStringsA".}
+
+  proc GetShortPathName*(
+    lpszLongPath: LPCSTR, lpszShortPath: LPSTR, cchBuffer: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetShortPathNameA".}
+
+  proc OpenMutex*(
+    dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenMutexA".}
+
+  proc OpenSemaphore*(
+    dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenSemaphoreA".}
+
+  proc OpenWaitableTimer*(
+    dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpTimerName: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenWaitableTimerA".}
+
+  proc CreateFileMapping*(
+    hFile: HANDLE,
+    lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,
+    flProtect: DWORD,
+    dwMaximumSizeHigh: DWORD,
+    dwMaximumSizeLow: DWORD,
+    lpName: LPCSTR,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileMappingA".}
+
+  proc OpenFileMapping*(
+    dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenFileMappingA".}
+
+  proc GetLogicalDriveStrings*(
+    nBufferLength: DWORD, lpBuffer: LPSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetLogicalDriveStringsA".}
+
+  proc CreateSemaphoreEx*(
+    lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,
+    lInitialCount: LONG,
+    lMaximumCount: LONG,
+    lpName: LPCSTR,
+    dwFlags: DWORD,
+    dwDesiredAccess: DWORD,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateSemaphoreExA".}
+
+  proc CreateWaitableTimerEx*(
+    lpTimerAttributes: LPSECURITY_ATTRIBUTES,
+    lpTimerName: LPCSTR,
+    dwFlags: DWORD,
+    dwDesiredAccess: DWORD,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateWaitableTimerExA".}
+
+  proc CreateFileMappingNuma*(
+    hFile: HANDLE,
+    lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,
+    flProtect: DWORD,
+    dwMaximumSizeHigh: DWORD,
+    dwMaximumSizeLow: DWORD,
+    lpName: LPCSTR,
+    nndPreferred: DWORD,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileMappingNumaA".}
+
+  proc GetStartupInfo*(
+    lpStartupInfo: LPSTARTUPINFOA
+  ): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "GetStartupInfoA".}
+
+  proc FindResourceEx*(
+    hModule: HMODULE, lpType: LPCSTR, lpName: LPCSTR, wLanguage: WORD
+  ): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc: "FindResourceExA".}
+
+  proc GetTempPath*(
+    nBufferLength: DWORD, lpBuffer: LPSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetTempPathA".}
+
+  proc GetTempFileName*(
+    lpPathName: LPCSTR, lpPrefixString: LPCSTR, uUnique: UINT, lpTempFileName: LPSTR
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetTempFileNameA".}
+
+  proc DefineDosDevice*(
+    dwFlags: DWORD, lpDeviceName: LPCSTR, lpTargetPath: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DefineDosDeviceA".}
+
+  proc QueryDosDevice*(
+    lpDeviceName: LPCSTR, lpTargetPath: LPSTR, ucchMax: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "QueryDosDeviceA".}
+
+  proc CreateNamedPipe*(
+    lpName: LPCSTR,
+    dwOpenMode: DWORD,
+    dwPipeMode: DWORD,
+    nMaxInstances: DWORD,
+    nOutBufferSize: DWORD,
+    nInBufferSize: DWORD,
+    nDefaultTimeOut: DWORD,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateNamedPipeA".}
+
+  proc WaitNamedPipe*(
+    lpNamedPipeName: LPCSTR, nTimeOut: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WaitNamedPipeA".}
+
+  proc GetVolumeInformation*(
+    lpRootPathName: LPCSTR,
+    lpVolumeNameBuffer: LPSTR,
+    nVolumeNameSize: DWORD,
+    lpVolumeSerialNumber: LPDWORD,
+    lpMaximumComponentLength: LPDWORD,
+    lpFileSystemFlags: LPDWORD,
+    lpFileSystemNameBuffer: LPSTR,
+    nFileSystemNameSize: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVolumeInformationA".}
+
+  proc AccessCheckAndAuditAlarm*(
+    SubsystemName: LPCSTR,
+    HandleId: LPVOID,
+    ObjectTypeName: LPSTR,
+    ObjectName: LPSTR,
+    SecurityDescriptor: PSECURITY_DESCRIPTOR,
+    DesiredAccess: DWORD,
+    GenericMapping: PGENERIC_MAPPING,
+    ObjectCreation: WINBOOL,
+    GrantedAccess: LPDWORD,
+    AccessStatus: LPBOOL,
+    pfGenerateOnClose: LPBOOL,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "AccessCheckAndAuditAlarmA"
+  .}
+
+  proc AccessCheckByTypeAndAuditAlarm*(
+    SubsystemName: LPCSTR,
+    HandleId: LPVOID,
+    ObjectTypeName: LPCSTR,
+    ObjectName: LPCSTR,
+    SecurityDescriptor: PSECURITY_DESCRIPTOR,
+    PrincipalSelfSid: PSID,
+    DesiredAccess: DWORD,
+    AuditType: AUDIT_EVENT_TYPE,
+    Flags: DWORD,
+    ObjectTypeList: POBJECT_TYPE_LIST,
+    ObjectTypeListLength: DWORD,
+    GenericMapping: PGENERIC_MAPPING,
+    ObjectCreation: WINBOOL,
+    GrantedAccess: LPDWORD,
+    AccessStatus: LPBOOL,
+    pfGenerateOnClose: LPBOOL,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "AccessCheckByTypeAndAuditAlarmA"
+  .}
+
+  proc AccessCheckByTypeResultListAndAuditAlarm*(
+    SubsystemName: LPCSTR,
+    HandleId: LPVOID,
+    ObjectTypeName: LPCSTR,
+    ObjectName: LPCSTR,
+    SecurityDescriptor: PSECURITY_DESCRIPTOR,
+    PrincipalSelfSid: PSID,
+    DesiredAccess: DWORD,
+    AuditType: AUDIT_EVENT_TYPE,
+    Flags: DWORD,
+    ObjectTypeList: POBJECT_TYPE_LIST,
+    ObjectTypeListLength: DWORD,
+    GenericMapping: PGENERIC_MAPPING,
+    ObjectCreation: WINBOOL,
+    GrantedAccess: LPDWORD,
+    AccessStatusList: LPDWORD,
+    pfGenerateOnClose: LPBOOL,
+  ): WINBOOL {.
+    winapi,
+    stdcall,
+    dynlib: "advapi32",
+    importc: "AccessCheckByTypeResultListAndAuditAlarmA"
+  .}
+
+  proc AccessCheckByTypeResultListAndAuditAlarmByHandle*(
+    SubsystemName: LPCSTR,
+    HandleId: LPVOID,
+    ClientToken: HANDLE,
+    ObjectTypeName: LPCSTR,
+    ObjectName: LPCSTR,
+    SecurityDescriptor: PSECURITY_DESCRIPTOR,
+    PrincipalSelfSid: PSID,
+    DesiredAccess: DWORD,
+    AuditType: AUDIT_EVENT_TYPE,
+    Flags: DWORD,
+    ObjectTypeList: POBJECT_TYPE_LIST,
+    ObjectTypeListLength: DWORD,
+    GenericMapping: PGENERIC_MAPPING,
+    ObjectCreation: WINBOOL,
+    GrantedAccess: LPDWORD,
+    AccessStatusList: LPDWORD,
+    pfGenerateOnClose: LPBOOL,
+  ): WINBOOL {.
+    winapi,
+    stdcall,
+    dynlib: "advapi32",
+    importc: "AccessCheckByTypeResultListAndAuditAlarmByHandleA"
+  .}
+
+  proc ObjectOpenAuditAlarm*(
+    SubsystemName: LPCSTR,
+    HandleId: LPVOID,
+    ObjectTypeName: LPSTR,
+    ObjectName: LPSTR,
+    pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+    ClientToken: HANDLE,
+    DesiredAccess: DWORD,
+    GrantedAccess: DWORD,
+    Privileges: PPRIVILEGE_SET,
+    ObjectCreation: WINBOOL,
+    AccessGranted: WINBOOL,
+    GenerateOnClose: LPBOOL,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ObjectOpenAuditAlarmA".}
+
+  proc ObjectPrivilegeAuditAlarm*(
+    SubsystemName: LPCSTR,
+    HandleId: LPVOID,
+    ClientToken: HANDLE,
+    DesiredAccess: DWORD,
+    Privileges: PPRIVILEGE_SET,
+    AccessGranted: WINBOOL,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmA"
+  .}
+
+  proc ObjectCloseAuditAlarm*(
+    SubsystemName: LPCSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ObjectCloseAuditAlarmA".}
+
+  proc ObjectDeleteAuditAlarm*(
+    SubsystemName: LPCSTR, HandleId: LPVOID, GenerateOnClose: WINBOOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ObjectDeleteAuditAlarmA".}
+
+  proc PrivilegedServiceAuditAlarm*(
+    SubsystemName: LPCSTR,
+    ServiceName: LPCSTR,
+    ClientToken: HANDLE,
+    Privileges: PPRIVILEGE_SET,
+    AccessGranted: WINBOOL,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmA"
+  .}
+
+  proc SetFileSecurity*(
+    lpFileName: LPCSTR,
+    SecurityInformation: SECURITY_INFORMATION,
+    pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "SetFileSecurityA".}
+
+  proc GetFileSecurity*(
+    lpFileName: LPCSTR,
+    RequestedInformation: SECURITY_INFORMATION,
+    pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+    nLength: DWORD,
+    lpnLengthNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetFileSecurityA".}
+
+  proc SetComputerNameEx*(
+    NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPCTSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetComputerNameExA".}
+
+  proc CreateProcessAsUser*(
+    hToken: HANDLE,
+    lpApplicationName: LPCSTR,
+    lpCommandLine: LPSTR,
+    lpProcessAttributes: LPSECURITY_ATTRIBUTES,
+    lpThreadAttributes: LPSECURITY_ATTRIBUTES,
+    bInheritHandles: WINBOOL,
+    dwCreationFlags: DWORD,
+    lpEnvironment: LPVOID,
+    lpCurrentDirectory: LPCSTR,
+    lpStartupInfo: LPSTARTUPINFOA,
+    lpProcessInformation: LPPROCESS_INFORMATION,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CreateProcessAsUserA".}
+
+  proc FindFirstVolume*(
+    lpszVolumeName: LPSTR, cchBufferLength: DWORD
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstVolumeA".}
+
+  proc FindNextVolume*(
+    hFindVolume: HANDLE, lpszVolumeName: LPSTR, cchBufferLength: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FindNextVolumeA".}
+
+  proc DeleteVolumeMountPoint*(
+    lpszVolumeMountPoint: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DeleteVolumeMountPointA".}
+
+  proc GetVolumeNameForVolumeMountPoint*(
+    lpszVolumeMountPoint: LPCSTR, lpszVolumeName: LPSTR, cchBufferLength: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetVolumeNameForVolumeMountPointA"
+  .}
+
+  proc GetVolumePathName*(
+    lpszFileName: LPCSTR, lpszVolumePathName: LPSTR, cchBufferLength: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVolumePathNameA".}
+
+  proc GetVolumePathNamesForVolumeName*(
+    lpszVolumeName: LPCSTR,
+    lpszVolumePathNames: LPCH,
+    cchBufferLength: DWORD,
+    lpcchReturnLength: PDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetVolumePathNamesForVolumeNameA"
+  .}
+
+  proc OutputDebugString*(
+    lpOutputString: LPCSTR
+  ): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "OutputDebugStringA".}
+
+  proc CreateFile*(
+    lpFileName: LPCSTR,
+    dwDesiredAccess: DWORD,
+    dwShareMode: DWORD,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+    dwCreationDisposition: DWORD,
+    dwFlagsAndAttributes: DWORD,
+    hTemplateFile: HANDLE,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileA".}
+
+  proc FindFirstChangeNotification*(
+    lpPathName: LPCSTR, bWatchSubtree: WINBOOL, dwNotifyFilter: DWORD
+  ): HANDLE {.
+    winapi, stdcall, dynlib: "kernel32", importc: "FindFirstChangeNotificationA"
+  .}
+
+  proc FindFirstFile*(
+    lpFileName: LPCSTR, lpFindFileData: LPWIN32_FIND_DATAA
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstFileA".}
+
+  proc GetDiskFreeSpace*(
+    lpRootPathName: LPCSTR,
+    lpSectorsPerCluster: LPDWORD,
+    lpBytesPerSector: LPDWORD,
+    lpNumberOfFreeClusters: LPDWORD,
+    lpTotalNumberOfClusters: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceA".}
+
+  proc GetDriveType*(
+    lpRootPathName: LPCSTR
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetDriveTypeA".}
+
+  proc GetFileAttributes*(
+    lpFileName: LPCSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFileAttributesA".}
+
+  proc GetFullPathName*(
+    lpFileName: LPCSTR, nBufferLength: DWORD, lpBuffer: LPSTR, lpFilePart: ptr LPSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFullPathNameA".}
+
+  proc GetLongPathName*(
+    lpszShortPath: LPCSTR, lpszLongPath: LPSTR, cchBuffer: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetLongPathNameA".}
+
+  proc GetFinalPathNameByHandle*(
+    hFile: HANDLE, lpszFilePath: LPSTR, cchFilePath: DWORD, dwFlags: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetFinalPathNameByHandleA".}
+
+  proc CreateDirectory*(
+    lpPathName: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateDirectoryA".}
+
+  proc DeleteFile*(
+    lpFileName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DeleteFileA".}
+
+  proc FindFirstFileEx*(
+    lpFileName: LPCSTR,
+    fInfoLevelId: FINDEX_INFO_LEVELS,
+    lpFindFileData: LPVOID,
+    fSearchOp: FINDEX_SEARCH_OPS,
+    lpSearchFilter: LPVOID,
+    dwAdditionalFlags: DWORD,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstFileExA".}
+
+  proc FindNextFile*(
+    hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATAA
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FindNextFileA".}
+
+  proc GetDiskFreeSpaceEx*(
+    lpDirectoryName: LPCSTR,
+    lpFreeBytesAvailableToCaller: PULARGE_INTEGER,
+    lpTotalNumberOfBytes: PULARGE_INTEGER,
+    lpTotalNumberOfFreeBytes: PULARGE_INTEGER,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExA".}
+
+  proc GetFileAttributesEx*(
+    lpFileName: LPCSTR, fInfoLevelId: GET_FILEEX_INFO_LEVELS, lpFileInformation: LPVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetFileAttributesExA".}
+
+  proc RemoveDirectory*(
+    lpPathName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "RemoveDirectoryA".}
+
+  proc SetFileAttributes*(
+    lpFileName: LPCSTR, dwFileAttributes: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetFileAttributesA".}
+
+  proc GetModuleHandleEx*(
+    dwFlags: DWORD, lpModuleName: LPCSTR, phModule: ptr HMODULE
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetModuleHandleExA".}
+
+  proc LoadString*(
+    hInstance: HINSTANCE, uID: UINT, lpBuffer: LPSTR, cchBufferMax: int32
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "LoadStringA".}
+
+  proc GetModuleFileName*(
+    hModule: HMODULE, lpFilename: LPSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetModuleFileNameA".}
+
+  proc GetModuleHandle*(
+    lpModuleName: LPCSTR
+  ): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc: "GetModuleHandleA".}
+
+  proc LoadLibraryEx*(
+    lpLibFileName: LPCSTR, hFile: HANDLE, dwFlags: DWORD
+  ): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc: "LoadLibraryExA".}
+
+  proc EnumResourceLanguages*(
+    hModule: HMODULE,
+    lpType: LPCSTR,
+    lpName: LPCSTR,
+    lpEnumFunc: ENUMRESLANGPROCA,
+    lParam: LONG_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesA".}
+
+  proc EnumResourceLanguagesEx*(
+    hModule: HMODULE,
+    lpType: LPCSTR,
+    lpName: LPCSTR,
+    lpEnumFunc: ENUMRESLANGPROCA,
+    lParam: LONG_PTR,
+    dwFlags: DWORD,
+    LangId: LANGID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesExA"
+  .}
+
+  proc EnumResourceNamesEx*(
+    hModule: HMODULE,
+    lpType: LPCSTR,
+    lpEnumFunc: ENUMRESNAMEPROCA,
+    lParam: LONG_PTR,
+    dwFlags: DWORD,
+    LangId: LANGID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceNamesExA".}
+
+  proc EnumResourceTypesEx*(
+    hModule: HMODULE,
+    lpEnumFunc: ENUMRESTYPEPROCA,
+    lParam: LONG_PTR,
+    dwFlags: DWORD,
+    LangId: LANGID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceTypesExA".}
+
+  proc ExpandEnvironmentStrings*(
+    lpSrc: LPCSTR, lpDst: LPSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "ExpandEnvironmentStringsA".}
+
+  proc FreeEnvironmentStrings*(
+    penv: LPCH
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FreeEnvironmentStringsA".}
+
+  proc GetCommandLine*(): LPSTR {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetCommandLineA"
+  .}
+
+  proc GetCurrentDirectory*(
+    nBufferLength: DWORD, lpBuffer: LPSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetCurrentDirectoryA".}
+
+  proc GetEnvironmentVariable*(
+    lpName: LPCSTR, lpBuffer: LPSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetEnvironmentVariableA".}
+
+  proc NeedCurrentDirectoryForExePath*(
+    ExeName: LPCSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "NeedCurrentDirectoryForExePathA"
+  .}
+
+  proc SearchPath*(
+    lpPath: LPCSTR,
+    lpFileName: LPCSTR,
+    lpExtension: LPCSTR,
+    nBufferLength: DWORD,
+    lpBuffer: LPSTR,
+    lpFilePart: ptr LPSTR,
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "SearchPathA".}
+
+  proc SetCurrentDirectory*(
+    lpPathName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetCurrentDirectoryA".}
+
+  proc SetEnvironmentVariable*(
+    lpName: LPCSTR, lpValue: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetEnvironmentVariableA".}
+
+  proc CreateProcess*(
+    lpApplicationName: LPCSTR,
+    lpCommandLine: LPSTR,
+    lpProcessAttributes: LPSECURITY_ATTRIBUTES,
+    lpThreadAttributes: LPSECURITY_ATTRIBUTES,
+    bInheritHandles: WINBOOL,
+    dwCreationFlags: DWORD,
+    lpEnvironment: LPVOID,
+    lpCurrentDirectory: LPCSTR,
+    lpStartupInfo: LPSTARTUPINFOA,
+    lpProcessInformation: LPPROCESS_INFORMATION,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateProcessA".}
+
+  proc CreateMutexEx*(
+    lpMutexAttributes: LPSECURITY_ATTRIBUTES,
+    lpName: LPCSTR,
+    dwFlags: DWORD,
+    dwDesiredAccess: DWORD,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateMutexExA".}
+
+  proc CreateEventEx*(
+    lpEventAttributes: LPSECURITY_ATTRIBUTES,
+    lpName: LPCSTR,
+    dwFlags: DWORD,
+    dwDesiredAccess: DWORD,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateEventExA".}
+
+  proc OpenEvent*(
+    dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenEventA".}
+
+  proc CreateMutex*(
+    lpMutexAttributes: LPSECURITY_ATTRIBUTES, bInitialOwner: WINBOOL, lpName: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateMutexA".}
+
+  proc CreateEvent*(
+    lpEventAttributes: LPSECURITY_ATTRIBUTES,
+    bManualReset: WINBOOL,
+    bInitialState: WINBOOL,
+    lpName: LPCSTR,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateEventA".}
+
+  proc GetSystemDirectory*(
+    lpBuffer: LPSTR, uSize: UINT
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetSystemDirectoryA".}
+
+  proc GetWindowsDirectory*(
+    lpBuffer: LPSTR, uSize: UINT
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetWindowsDirectoryA".}
+
+  proc GetSystemWindowsDirectory*(
+    lpBuffer: LPSTR, uSize: UINT
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetSystemWindowsDirectoryA".}
+
+  proc GetComputerNameEx*(
+    NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPSTR, nSize: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetComputerNameExA".}
+
+  proc GetVersionEx*(
+    lpVersionInformation: LPOSVERSIONINFOA
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetVersionExA".}
+
+  proc GetBinaryType*(
+    lpApplicationName: LPCSTR, lpBinaryType: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetBinaryTypeA".}
+
+  proc GetLongPathNameTransacted*(
+    lpszShortPath: LPCSTR, lpszLongPath: LPSTR, cchBuffer: DWORD, hTransaction: HANDLE
+  ): DWORD {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetLongPathNameTransactedA"
+  .}
+
+  proc SetFileShortName*(
+    hFile: HANDLE, lpShortName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetFileShortNameA".}
+
+  proc FormatMessage*(
+    dwFlags: DWORD,
+    lpSource: LPCVOID,
+    dwMessageId: DWORD,
+    dwLanguageId: DWORD,
+    lpBuffer: LPSTR,
+    nSize: DWORD,
+    Arguments: ptr va_list,
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "FormatMessageA".}
+
+  proc CreateMailslot*(
+    lpName: LPCSTR,
+    nMaxMessageSize: DWORD,
+    lReadTimeout: DWORD,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateMailslotA".}
+
+  proc EncryptFile*(
+    lpFileName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EncryptFileA".}
+
+  proc DecryptFile*(
+    lpFileName: LPCSTR, dwReserved: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "DecryptFileA".}
+
+  proc FileEncryptionStatus*(
+    lpFileName: LPCSTR, lpStatus: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "FileEncryptionStatusA".}
+
+  proc OpenEncryptedFileRaw*(
+    lpFileName: LPCSTR, ulFlags: ULONG, pvContext: ptr PVOID
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "OpenEncryptedFileRawA".}
+
+  proc lstrcmp*(
+    lpString1: LPCSTR, lpString2: LPCSTR
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcmpA".}
+
+  proc lstrcmpi*(
+    lpString1: LPCSTR, lpString2: LPCSTR
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcmpiA".}
+
+  proc lstrcpyn*(
+    lpString1: LPSTR, lpString2: LPCSTR, iMaxLength: int32
+  ): LPSTR {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcpynA".}
+
+  proc lstrcpy*(
+    lpString1: LPSTR, lpString2: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcpyA".}
+
+  proc lstrcat*(
+    lpString1: LPSTR, lpString2: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "kernel32", importc: "lstrcatA".}
+
+  proc lstrlen*(
+    lpString: LPCSTR
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "lstrlenA".}
+
+  proc CreateSemaphore*(
+    lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,
+    lInitialCount: LONG,
+    lMaximumCount: LONG,
+    lpName: LPCSTR,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateSemaphoreA".}
+
+  proc CreateWaitableTimer*(
+    lpTimerAttributes: LPSECURITY_ATTRIBUTES, bManualReset: WINBOOL, lpTimerName: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateWaitableTimerA".}
+
+  proc LoadLibrary*(
+    lpLibFileName: LPCSTR
+  ): HMODULE {.winapi, stdcall, dynlib: "kernel32", importc: "LoadLibraryA".}
+
+  proc QueryFullProcessImageName*(
+    hProcess: HANDLE, dwFlags: DWORD, lpExeName: LPSTR, lpdwSize: PDWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "QueryFullProcessImageNameA"
+  .}
+
+  proc FatalAppExit*(
+    uAction: UINT, lpMessageText: LPCSTR
+  ): VOID {.winapi, stdcall, dynlib: "kernel32", importc: "FatalAppExitA".}
+
+  proc GetFirmwareEnvironmentVariable*(
+    lpName: LPCSTR, lpGuid: LPCSTR, pBuffer: PVOID, nSize: DWORD
+  ): DWORD {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetFirmwareEnvironmentVariableA"
+  .}
+
+  proc SetFirmwareEnvironmentVariable*(
+    lpName: LPCSTR, lpGuid: LPCSTR, pValue: PVOID, nSize: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "SetFirmwareEnvironmentVariableA"
+  .}
+
+  proc FindResource*(
+    hModule: HMODULE, lpName: LPCSTR, lpType: LPCSTR
+  ): HRSRC {.winapi, stdcall, dynlib: "kernel32", importc: "FindResourceA".}
+
+  proc EnumResourceTypes*(
+    hModule: HMODULE, lpEnumFunc: ENUMRESTYPEPROCA, lParam: LONG_PTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceTypesA".}
+
+  proc EnumResourceNames*(
+    hModule: HMODULE, lpType: LPCSTR, lpEnumFunc: ENUMRESNAMEPROCA, lParam: LONG_PTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumResourceNamesA".}
+
+  proc BeginUpdateResource*(
+    pFileName: LPCSTR, bDeleteExistingResources: WINBOOL
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "BeginUpdateResourceA".}
+
+  proc UpdateResource*(
+    hUpdate: HANDLE,
+    lpType: LPCSTR,
+    lpName: LPCSTR,
+    wLanguage: WORD,
+    lpData: LPVOID,
+    cb: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "UpdateResourceA".}
+
+  proc EndUpdateResource*(
+    hUpdate: HANDLE, fDiscard: WINBOOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EndUpdateResourceA".}
+
+  proc GlobalAddAtom*(
+    lpString: LPCSTR
+  ): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalAddAtomA".}
+
+  proc GlobalAddAtomEx*(
+    lpString: LPCSTR, Flags: DWORD
+  ): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalAddAtomExA".}
+
+  proc GlobalFindAtom*(
+    lpString: LPCSTR
+  ): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalFindAtomA".}
+
+  proc GlobalGetAtomName*(
+    nAtom: ATOM, lpBuffer: LPSTR, nSize: int32
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GlobalGetAtomNameA".}
+
+  proc AddAtom*(
+    lpString: LPCSTR
+  ): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "AddAtomA".}
+
+  proc FindAtom*(
+    lpString: LPCSTR
+  ): ATOM {.winapi, stdcall, dynlib: "kernel32", importc: "FindAtomA".}
+
+  proc GetAtomName*(
+    nAtom: ATOM, lpBuffer: LPSTR, nSize: int32
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetAtomNameA".}
+
+  proc GetProfileInt*(
+    lpAppName: LPCSTR, lpKeyName: LPCSTR, nDefault: INT
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetProfileIntA".}
+
+  proc GetProfileString*(
+    lpAppName: LPCSTR,
+    lpKeyName: LPCSTR,
+    lpDefault: LPCSTR,
+    lpReturnedString: LPSTR,
+    nSize: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetProfileStringA".}
+
+  proc WriteProfileString*(
+    lpAppName: LPCSTR, lpKeyName: LPCSTR, lpString: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteProfileStringA".}
+
+  proc GetProfileSection*(
+    lpAppName: LPCSTR, lpReturnedString: LPSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetProfileSectionA".}
+
+  proc WriteProfileSection*(
+    lpAppName: LPCSTR, lpString: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteProfileSectionA".}
+
+  proc GetPrivateProfileInt*(
+    lpAppName: LPCSTR, lpKeyName: LPCSTR, nDefault: INT, lpFileName: LPCSTR
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileIntA".}
+
+  proc GetPrivateProfileString*(
+    lpAppName: LPCSTR,
+    lpKeyName: LPCSTR,
+    lpDefault: LPCSTR,
+    lpReturnedString: LPSTR,
+    nSize: DWORD,
+    lpFileName: LPCSTR,
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStringA".}
+
+  proc WritePrivateProfileString*(
+    lpAppName: LPCSTR, lpKeyName: LPCSTR, lpString: LPCSTR, lpFileName: LPCSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStringA"
+  .}
+
+  proc GetPrivateProfileSection*(
+    lpAppName: LPCSTR, lpReturnedString: LPSTR, nSize: DWORD, lpFileName: LPCSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionA".}
+
+  proc WritePrivateProfileSection*(
+    lpAppName: LPCSTR, lpString: LPCSTR, lpFileName: LPCSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "WritePrivateProfileSectionA"
+  .}
+
+  proc GetPrivateProfileSectionNames*(
+    lpszReturnBuffer: LPSTR, nSize: DWORD, lpFileName: LPCSTR
+  ): DWORD {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionNamesA"
+  .}
+
+  proc GetPrivateProfileStruct*(
+    lpszSection: LPCSTR,
+    lpszKey: LPCSTR,
+    lpStruct: LPVOID,
+    uSizeStruct: UINT,
+    szFile: LPCSTR,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStructA"
+  .}
+
+  proc WritePrivateProfileStruct*(
+    lpszSection: LPCSTR,
+    lpszKey: LPCSTR,
+    lpStruct: LPVOID,
+    uSizeStruct: UINT,
+    szFile: LPCSTR,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStructA"
+  .}
+
+  proc GetFirmwareEnvironmentVariableEx*(
+    lpName: LPCSTR,
+    lpGuid: LPCSTR,
+    pBuffer: PVOID,
+    nSize: DWORD,
+    pdwAttribubutes: PDWORD,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetFirmwareEnvironmentVariableExA"
+  .}
+
+  proc SetFirmwareEnvironmentVariableEx*(
+    lpName: LPCSTR, lpGuid: LPCSTR, pValue: PVOID, nSize: DWORD, dwAttributes: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "SetFirmwareEnvironmentVariableExA"
+  .}
+
+  proc GetSystemWow64Directory*(
+    lpBuffer: LPSTR, uSize: UINT
+  ): UINT {.winapi, stdcall, dynlib: "kernel32", importc: "GetSystemWow64DirectoryA".}
+
+  proc SetDllDirectory*(
+    lpPathName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetDllDirectoryA".}
+
+  proc GetDllDirectory*(
+    nBufferLength: DWORD, lpBuffer: LPSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetDllDirectoryA".}
+
+  proc CreateDirectoryEx*(
+    lpTemplateDirectory: LPCSTR,
+    lpNewDirectory: LPCSTR,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateDirectoryExA".}
+
+  proc CreateDirectoryTransacted*(
+    lpTemplateDirectory: LPCSTR,
+    lpNewDirectory: LPCSTR,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+    hTransaction: HANDLE,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "CreateDirectoryTransactedA"
+  .}
+
+  proc RemoveDirectoryTransacted*(
+    lpPathName: LPCSTR, hTransaction: HANDLE
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "RemoveDirectoryTransactedA"
+  .}
+
+  proc GetFullPathNameTransacted*(
+    lpFileName: LPCSTR,
+    nBufferLength: DWORD,
+    lpBuffer: LPSTR,
+    lpFilePart: ptr LPSTR,
+    hTransaction: HANDLE,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetFullPathNameTransactedA"
+  .}
+
+  proc CreateFileTransacted*(
+    lpFileName: LPCSTR,
+    dwDesiredAccess: DWORD,
+    dwShareMode: DWORD,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+    dwCreationDisposition: DWORD,
+    dwFlagsAndAttributes: DWORD,
+    hTemplateFile: HANDLE,
+    hTransaction: HANDLE,
+    pusMiniVersion: PUSHORT,
+    lpExtendedParameter: PVOID,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateFileTransactedA".}
+
+  proc SetFileAttributesTransacted*(
+    lpFileName: LPCSTR, dwFileAttributes: DWORD, hTransaction: HANDLE
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "SetFileAttributesTransactedA"
+  .}
+
+  proc GetFileAttributesTransacted*(
+    lpFileName: LPCSTR,
+    fInfoLevelId: GET_FILEEX_INFO_LEVELS,
+    lpFileInformation: LPVOID,
+    hTransaction: HANDLE,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetFileAttributesTransactedA"
+  .}
+
+  proc GetCompressedFileSize*(
+    lpFileName: LPCSTR, lpFileSizeHigh: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeA".}
+
+  proc DeleteFileTransacted*(
+    lpFileName: LPCSTR, hTransaction: HANDLE
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "DeleteFileTransactedA".}
+
+  proc GetCompressedFileSizeTransacted*(
+    lpFileName: LPCSTR, lpFileSizeHigh: LPDWORD, hTransaction: HANDLE
+  ): DWORD {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeTransactedA"
+  .}
+
+  proc FindFirstFileTransacted*(
+    lpFileName: LPCSTR,
+    fInfoLevelId: FINDEX_INFO_LEVELS,
+    lpFindFileData: LPVOID,
+    fSearchOp: FINDEX_SEARCH_OPS,
+    lpSearchFilter: LPVOID,
+    dwAdditionalFlags: DWORD,
+    hTransaction: HANDLE,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "FindFirstFileTransactedA".}
+
+  proc CopyFileTransacted*(
+    lpExistingFileName: LPCSTR,
+    lpNewFileName: LPCSTR,
+    lpProgressRoutine: LPPROGRESS_ROUTINE,
+    lpData: LPVOID,
+    pbCancel: LPBOOL,
+    dwCopyFlags: DWORD,
+    hTransaction: HANDLE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CopyFileTransactedA".}
+
+  proc CheckNameLegalDOS8Dot3*(
+    lpName: LPCSTR,
+    lpOemName: LPSTR,
+    OemNameSize: DWORD,
+    pbNameContainsSpaces: PBOOL,
+    pbNameLegal: PBOOL,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CheckNameLegalDOS8Dot3A".}
+
+  proc CopyFile*(
+    lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, bFailIfExists: WINBOOL
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CopyFileA".}
+
+  proc CopyFileEx*(
+    lpExistingFileName: LPCSTR,
+    lpNewFileName: LPCSTR,
+    lpProgressRoutine: LPPROGRESS_ROUTINE,
+    lpData: LPVOID,
+    pbCancel: LPBOOL,
+    dwCopyFlags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CopyFileExA".}
+
+  proc MoveFile*(
+    lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileA".}
+
+  proc MoveFileEx*(
+    lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileExA".}
+
+  proc MoveFileWithProgress*(
+    lpExistingFileName: LPCSTR,
+    lpNewFileName: LPCSTR,
+    lpProgressRoutine: LPPROGRESS_ROUTINE,
+    lpData: LPVOID,
+    dwFlags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileWithProgressA".}
+
+  proc MoveFileTransacted*(
+    lpExistingFileName: LPCSTR,
+    lpNewFileName: LPCSTR,
+    lpProgressRoutine: LPPROGRESS_ROUTINE,
+    lpData: LPVOID,
+    dwFlags: DWORD,
+    hTransaction: HANDLE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "MoveFileTransactedA".}
+
+  proc ReplaceFile*(
+    lpReplacedFileName: LPCSTR,
+    lpReplacementFileName: LPCSTR,
+    lpBackupFileName: LPCSTR,
+    dwReplaceFlags: DWORD,
+    lpExclude: LPVOID,
+    lpReserved: LPVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReplaceFileA".}
+
+  proc CreateHardLink*(
+    lpFileName: LPCSTR,
+    lpExistingFileName: LPCSTR,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CreateHardLinkA".}
+
+  proc CreateHardLinkTransacted*(
+    lpFileName: LPCSTR,
+    lpExistingFileName: LPCSTR,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+    hTransaction: HANDLE,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "CreateHardLinkTransactedA"
+  .}
+
+  proc GetNamedPipeHandleState*(
+    hNamedPipe: HANDLE,
+    lpState: LPDWORD,
+    lpCurInstances: LPDWORD,
+    lpMaxCollectionCount: LPDWORD,
+    lpCollectDataTimeout: LPDWORD,
+    lpUserName: LPSTR,
+    nMaxUserNameSize: DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetNamedPipeHandleStateA"
+  .}
+
+  proc CallNamedPipe*(
+    lpNamedPipeName: LPCSTR,
+    lpInBuffer: LPVOID,
+    nInBufferSize: DWORD,
+    lpOutBuffer: LPVOID,
+    nOutBufferSize: DWORD,
+    lpBytesRead: LPDWORD,
+    nTimeOut: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CallNamedPipeA".}
+
+  proc SetVolumeLabel*(
+    lpRootPathName: LPCSTR, lpVolumeName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetVolumeLabelA".}
+
+  proc ClearEventLog*(
+    hEventLog: HANDLE, lpBackupFileName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ClearEventLogA".}
+
+  proc BackupEventLog*(
+    hEventLog: HANDLE, lpBackupFileName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "BackupEventLogA".}
+
+  proc OpenEventLog*(
+    lpUNCServerName: LPCSTR, lpSourceName: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenEventLogA".}
+
+  proc RegisterEventSource*(
+    lpUNCServerName: LPCSTR, lpSourceName: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "RegisterEventSourceA".}
+
+  proc OpenBackupEventLog*(
+    lpUNCServerName: LPCSTR, lpFileName: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenBackupEventLogA".}
+
+  proc ReadEventLog*(
+    hEventLog: HANDLE,
+    dwReadFlags: DWORD,
+    dwRecordOffset: DWORD,
+    lpBuffer: LPVOID,
+    nNumberOfBytesToRead: DWORD,
+    pnBytesRead: ptr DWORD,
+    pnMinNumberOfBytesNeeded: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ReadEventLogA".}
+
+  proc ReportEvent*(
+    hEventLog: HANDLE,
+    wType: WORD,
+    wCategory: WORD,
+    dwEventID: DWORD,
+    lpUserSid: PSID,
+    wNumStrings: WORD,
+    dwDataSize: DWORD,
+    lpStrings: ptr LPCSTR,
+    lpRawData: LPVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ReportEventA".}
+
+  proc IsBadStringPtr*(
+    lpsz: LPCSTR, ucchMax: UINT_PTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "IsBadStringPtrA".}
+
+  proc LookupPrivilegeValue*(
+    lpSystemName: LPCSTR, lpName: LPCSTR, lpLuid: PLUID
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupPrivilegeValueA".}
+
+  proc LookupPrivilegeName*(
+    lpSystemName: LPCSTR, lpLuid: PLUID, lpName: LPSTR, cchName: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LookupPrivilegeNameA".}
+
+  proc LookupPrivilegeDisplayName*(
+    lpSystemName: LPCSTR,
+    lpName: LPCSTR,
+    lpDisplayName: LPSTR,
+    cchDisplayName: LPDWORD,
+    lpLanguageId: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameA"
+  .}
+
+  proc BuildCommDCB*(
+    lpDef: LPCSTR, lpDCB: LPDCB
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "BuildCommDCBA".}
+
+  proc BuildCommDCBAndTimeouts*(
+    lpDef: LPCSTR, lpDCB: LPDCB, lpCommTimeouts: LPCOMMTIMEOUTS
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsA"
+  .}
+
+  proc CommConfigDialog*(
+    lpszName: LPCSTR, hWnd: HWND, lpCC: LPCOMMCONFIG
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "CommConfigDialogA".}
+
+  proc GetDefaultCommConfig*(
+    lpszName: LPCSTR, lpCC: LPCOMMCONFIG, lpdwSize: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetDefaultCommConfigA".}
+
+  proc SetDefaultCommConfig*(
+    lpszName: LPCSTR, lpCC: LPCOMMCONFIG, dwSize: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetDefaultCommConfigA".}
+
+  proc GetComputerName*(
+    lpBuffer: LPSTR, nSize: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetComputerNameA".}
+
+  proc SetComputerName*(
+    lpComputerName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetComputerNameA".}
+
+  proc DnsHostnameToComputerName*(
+    Hostname: LPCSTR, ComputerName: LPSTR, nSize: LPDWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "DnsHostnameToComputerNameA"
+  .}
+
+  proc GetUserName*(
+    lpBuffer: LPSTR, pcbBuffer: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetUserNameA".}
+
+  proc LogonUser*(
+    lpszUsername: LPCSTR,
+    lpszDomain: LPCSTR,
+    lpszPassword: LPCSTR,
+    dwLogonType: DWORD,
+    dwLogonProvider: DWORD,
+    phToken: PHANDLE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LogonUserA".}
+
+  proc LogonUserEx*(
+    lpszUsername: LPCSTR,
+    lpszDomain: LPCSTR,
+    lpszPassword: LPCSTR,
+    dwLogonType: DWORD,
+    dwLogonProvider: DWORD,
+    phToken: PHANDLE,
+    ppLogonSid: ptr PSID,
+    ppProfileBuffer: ptr PVOID,
+    pdwProfileLength: LPDWORD,
+    pQuotaLimits: PQUOTA_LIMITS,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "LogonUserExA".}
+
+  proc CreatePrivateNamespace*(
+    lpPrivateNamespaceAttributes: LPSECURITY_ATTRIBUTES,
+    lpBoundaryDescriptor: LPVOID,
+    lpAliasPrefix: LPCSTR,
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreatePrivateNamespaceA".}
+
+  proc OpenPrivateNamespace*(
+    lpBoundaryDescriptor: LPVOID, lpAliasPrefix: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenPrivateNamespaceA".}
+
+  proc CreateBoundaryDescriptor*(
+    Name: LPCSTR, Flags: ULONG
+  ): HANDLE {.
+    winapi, stdcall, dynlib: "kernel32", importc: "CreateBoundaryDescriptorA"
+  .}
+
+  proc GetCurrentHwProfile*(
+    lpHwProfileInfo: LPHW_PROFILE_INFOA
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetCurrentHwProfileA".}
+
+  proc VerifyVersionInfo*(
+    lpVersionInformation: LPOSVERSIONINFOEXA,
+    dwTypeMask: DWORD,
+    dwlConditionMask: DWORDLONG,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "VerifyVersionInfoA".}
+
+  proc CreateJobObject*(
+    lpJobAttributes: LPSECURITY_ATTRIBUTES, lpName: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateJobObjectA".}
+
+  proc OpenJobObject*(
+    dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "OpenJobObjectA".}
+
+  proc FindFirstVolumeMountPoint*(
+    lpszRootPathName: LPCSTR, lpszVolumeMountPoint: LPSTR, cchBufferLength: DWORD
+  ): HANDLE {.
+    winapi, stdcall, dynlib: "kernel32", importc: "FindFirstVolumeMountPointA"
+  .}
+
+  proc FindNextVolumeMountPoint*(
+    hFindVolumeMountPoint: HANDLE, lpszVolumeMountPoint: LPSTR, cchBufferLength: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "FindNextVolumeMountPointA"
+  .}
+
+  proc SetVolumeMountPoint*(
+    lpszVolumeMountPoint: LPCSTR, lpszVolumeName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetVolumeMountPointA".}
+
+  proc CreateActCtx*(
+    pActCtx: PCACTCTXA
+  ): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc: "CreateActCtxA".}
+
+  proc FindActCtxSectionString*(
+    dwFlags: DWORD,
+    lpExtensionGuid: ptr GUID,
+    ulSectionId: ULONG,
+    lpStringToFind: LPCSTR,
+    ReturnedData: PACTCTX_SECTION_KEYED_DATA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "FindActCtxSectionStringA"
+  .}
+
+  proc CreateSymbolicLink*(
+    lpSymlinkFileName: LPCSTR, lpTargetFileName: LPCSTR, dwFlags: DWORD
+  ): BOOLEAN {.winapi, stdcall, dynlib: "kernel32", importc: "CreateSymbolicLinkA".}
+
+  proc CreateSymbolicLinkTransacted*(
+    lpSymlinkFileName: LPCSTR,
+    lpTargetFileName: LPCSTR,
+    dwFlags: DWORD,
+    hTransaction: HANDLE,
+  ): BOOLEAN {.
+    winapi, stdcall, dynlib: "kernel32", importc: "CreateSymbolicLinkTransactedA"
+  .}
+
+  proc LookupAccountNameLocal*(
+      lpAccountName: LPCSTR,
+      Sid: PSID,
+      cbSid: LPDWORD,
+      ReferencedDomainName: LPSTR,
+      cchReferencedDomainName: LPDWORD,
+      peUse: PSID_NAME_USE,
+  ): WINBOOL {.winapi, inline.} =
+    LookupAccountNameA(
+      nil, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName,
+      peUse,
+    )
+
+  proc LookupAccountSidLocal*(
+      Sid: PSID,
+      Name: LPSTR,
+      cchName: LPDWORD,
+      ReferencedDomainName: LPSTR,
+      cchReferencedDomainName: LPDWORD,
+      peUse: PSID_NAME_USE,
+  ): WINBOOL {.winapi, inline.} =
+    LookupAccountSidA(
+      nil, Sid, Name, cchName, ReferencedDomainName, cchReferencedDomainName, peUse
+    )
+
 when winimCpu64:
-  const
-    SCS_THIS_PLATFORM_BINARY* = SCS_64BIT_BINARY
-  proc GetEnabledXStateFeatures*(): DWORD64 {.winapi, stdcall, dynlib: "kernel32", importc.}
-  proc GetXStateFeaturesMask*(Context: PCONTEXT, FeatureMask: PDWORD64): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-  proc LocateXStateFeature*(Context: PCONTEXT, FeatureId: DWORD, Length: PDWORD): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-  proc SetXStateFeaturesMask*(Context: PCONTEXT, FeatureMask: DWORD64): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+  const SCS_THIS_PLATFORM_BINARY* = SCS_64BIT_BINARY
+  proc GetEnabledXStateFeatures*(): DWORD64 {.
+    winapi, stdcall, dynlib: "kernel32", importc
+  .}
+
+  proc GetXStateFeaturesMask*(
+    Context: PCONTEXT, FeatureMask: PDWORD64
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+  proc LocateXStateFeature*(
+    Context: PCONTEXT, FeatureId: DWORD, Length: PDWORD
+  ): PVOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+  proc SetXStateFeaturesMask*(
+    Context: PCONTEXT, FeatureMask: DWORD64
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 when winimCpu32:
-  const
-    SCS_THIS_PLATFORM_BINARY* = SCS_32BIT_BINARY
+  const SCS_THIS_PLATFORM_BINARY* = SCS_32BIT_BINARY
--- a/semicongine/thirdparty/winim/winim/inc/wincodec.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/wincodec.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -28,6 +28,7 @@
   WICPixelFormatGUID* = GUID
   REFWICPixelFormatGUID* = REFGUID
   WICColor* = UINT32
+
 const
   WINCODEC_SDK_VERSION* = 0x0236
   wICDecodeMetadataCacheOnDemand* = 0x0
@@ -139,7 +140,8 @@
   GUID_WICPixelFormat16bppGray* = DEFINE_GUID("6fddc324-4e03-4bfe-b185-3d77768dc90b")
   GUID_WICPixelFormat16bppBGR555* = DEFINE_GUID("6fddc324-4e03-4bfe-b185-3d77768dc909")
   GUID_WICPixelFormat16bppBGR565* = DEFINE_GUID("6fddc324-4e03-4bfe-b185-3d77768dc90a")
-  GUID_WICPixelFormat16bppBGRA5551* = DEFINE_GUID("05ec7c2b-f1e6-4961-ad46-e1cc810a87d2")
+  GUID_WICPixelFormat16bppBGRA5551* =
+    DEFINE_GUID("05ec7c2b-f1e6-4961-ad46-e1cc810a87d2")
   GUID_WICPixelFormat24bppBGR* = DEFINE_GUID("6fddc324-4e03-4bfe-b185-3d77768dc90c")
   GUID_WICPixelFormat24bppRGB* = DEFINE_GUID("6fddc324-4e03-4bfe-b185-3d77768dc90d")
   GUID_WICPixelFormat32bppBGR* = DEFINE_GUID("6fddc324-4e03-4bfe-b185-3d77768dc90e")
@@ -230,422 +232,1979 @@
     Y*: INT
     Width*: INT
     Height*: INT
+
   WICBitmapPattern* {.pure.} = object
     Position*: ULARGE_INTEGER
     Length*: ULONG
     Pattern*: ptr BYTE
     Mask*: ptr BYTE
     EndOfStream*: WINBOOL
+
   IWICColorContext* {.pure.} = object
     lpVtbl*: ptr IWICColorContextVtbl
+
   IWICColorContextVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    InitializeFromFilename*: proc(self: ptr IWICColorContext, wzFilename: LPCWSTR): HRESULT {.stdcall.}
-    InitializeFromMemory*: proc(self: ptr IWICColorContext, pbBuffer: ptr BYTE, cbBufferSize: UINT): HRESULT {.stdcall.}
-    InitializeFromExifColorSpace*: proc(self: ptr IWICColorContext, value: UINT): HRESULT {.stdcall.}
-    GetType*: proc(self: ptr IWICColorContext, pType: ptr WICColorContextType): HRESULT {.stdcall.}
-    GetProfileBytes*: proc(self: ptr IWICColorContext, cbBuffer: UINT, pbBuffer: ptr BYTE, pcbActual: ptr UINT): HRESULT {.stdcall.}
-    GetExifColorSpace*: proc(self: ptr IWICColorContext, pValue: ptr UINT): HRESULT {.stdcall.}
+    InitializeFromFilename*:
+      proc(self: ptr IWICColorContext, wzFilename: LPCWSTR): HRESULT {.stdcall.}
+    InitializeFromMemory*: proc(
+      self: ptr IWICColorContext, pbBuffer: ptr BYTE, cbBufferSize: UINT
+    ): HRESULT {.stdcall.}
+    InitializeFromExifColorSpace*:
+      proc(self: ptr IWICColorContext, value: UINT): HRESULT {.stdcall.}
+    GetType*: proc(self: ptr IWICColorContext, pType: ptr WICColorContextType): HRESULT {.
+      stdcall
+    .}
+    GetProfileBytes*: proc(
+      self: ptr IWICColorContext,
+      cbBuffer: UINT,
+      pbBuffer: ptr BYTE,
+      pcbActual: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetExifColorSpace*:
+      proc(self: ptr IWICColorContext, pValue: ptr UINT): HRESULT {.stdcall.}
+
   IWICPalette* {.pure.} = object
     lpVtbl*: ptr IWICPaletteVtbl
+
   IWICPaletteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    InitializePredefined*: proc(self: ptr IWICPalette, ePaletteType: WICBitmapPaletteType, fAddTransparentColor: WINBOOL): HRESULT {.stdcall.}
-    InitializeCustom*: proc(self: ptr IWICPalette, pColors: ptr WICColor, colorCount: UINT): HRESULT {.stdcall.}
-    InitializeFromBitmap*: proc(self: ptr IWICPalette, pISurface: ptr IWICBitmapSource, colorCount: UINT, fAddTransparentColor: WINBOOL): HRESULT {.stdcall.}
-    InitializeFromPalette*: proc(self: ptr IWICPalette, pIPalette: ptr IWICPalette): HRESULT {.stdcall.}
-    GetType*: proc(self: ptr IWICPalette, pePaletteType: ptr WICBitmapPaletteType): HRESULT {.stdcall.}
+    InitializePredefined*: proc(
+      self: ptr IWICPalette,
+      ePaletteType: WICBitmapPaletteType,
+      fAddTransparentColor: WINBOOL,
+    ): HRESULT {.stdcall.}
+    InitializeCustom*: proc(
+      self: ptr IWICPalette, pColors: ptr WICColor, colorCount: UINT
+    ): HRESULT {.stdcall.}
+    InitializeFromBitmap*: proc(
+      self: ptr IWICPalette,
+      pISurface: ptr IWICBitmapSource,
+      colorCount: UINT,
+      fAddTransparentColor: WINBOOL,
+    ): HRESULT {.stdcall.}
+    InitializeFromPalette*:
+      proc(self: ptr IWICPalette, pIPalette: ptr IWICPalette): HRESULT {.stdcall.}
+    GetType*: proc(
+      self: ptr IWICPalette, pePaletteType: ptr WICBitmapPaletteType
+    ): HRESULT {.stdcall.}
     GetColorCount*: proc(self: ptr IWICPalette, pcCount: ptr UINT): HRESULT {.stdcall.}
-    GetColors*: proc(self: ptr IWICPalette, colorCount: UINT, pColors: ptr WICColor, pcActualColors: ptr UINT): HRESULT {.stdcall.}
-    IsBlackWhite*: proc(self: ptr IWICPalette, pfIsBlackWhite: ptr WINBOOL): HRESULT {.stdcall.}
-    IsGrayscale*: proc(self: ptr IWICPalette, pfIsGrayscale: ptr WINBOOL): HRESULT {.stdcall.}
+    GetColors*: proc(
+      self: ptr IWICPalette,
+      colorCount: UINT,
+      pColors: ptr WICColor,
+      pcActualColors: ptr UINT,
+    ): HRESULT {.stdcall.}
+    IsBlackWhite*:
+      proc(self: ptr IWICPalette, pfIsBlackWhite: ptr WINBOOL): HRESULT {.stdcall.}
+    IsGrayscale*:
+      proc(self: ptr IWICPalette, pfIsGrayscale: ptr WINBOOL): HRESULT {.stdcall.}
     HasAlpha*: proc(self: ptr IWICPalette, pfHasAlpha: ptr WINBOOL): HRESULT {.stdcall.}
+
   IWICBitmapSource* {.pure.} = object
     lpVtbl*: ptr IWICBitmapSourceVtbl
+
   IWICBitmapSourceVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSize*: proc(self: ptr IWICBitmapSource, puiWidth: ptr UINT, puiHeight: ptr UINT): HRESULT {.stdcall.}
-    GetPixelFormat*: proc(self: ptr IWICBitmapSource, pPixelFormat: ptr WICPixelFormatGUID): HRESULT {.stdcall.}
-    GetResolution*: proc(self: ptr IWICBitmapSource, pDpiX: ptr float64, pDpiY: ptr float64): HRESULT {.stdcall.}
-    CopyPalette*: proc(self: ptr IWICBitmapSource, pIPalette: ptr IWICPalette): HRESULT {.stdcall.}
-    CopyPixels*: proc(self: ptr IWICBitmapSource, prc: ptr WICRect, cbStride: UINT, cbBufferSize: UINT, pbBuffer: ptr BYTE): HRESULT {.stdcall.}
+    GetSize*: proc(
+      self: ptr IWICBitmapSource, puiWidth: ptr UINT, puiHeight: ptr UINT
+    ): HRESULT {.stdcall.}
+    GetPixelFormat*: proc(
+      self: ptr IWICBitmapSource, pPixelFormat: ptr WICPixelFormatGUID
+    ): HRESULT {.stdcall.}
+    GetResolution*: proc(
+      self: ptr IWICBitmapSource, pDpiX: ptr float64, pDpiY: ptr float64
+    ): HRESULT {.stdcall.}
+    CopyPalette*:
+      proc(self: ptr IWICBitmapSource, pIPalette: ptr IWICPalette): HRESULT {.stdcall.}
+    CopyPixels*: proc(
+      self: ptr IWICBitmapSource,
+      prc: ptr WICRect,
+      cbStride: UINT,
+      cbBufferSize: UINT,
+      pbBuffer: ptr BYTE,
+    ): HRESULT {.stdcall.}
+
   IWICBitmapLock* {.pure.} = object
     lpVtbl*: ptr IWICBitmapLockVtbl
+
   IWICBitmapLockVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetSize*: proc(self: ptr IWICBitmapLock, pWidth: ptr UINT, pHeight: ptr UINT): HRESULT {.stdcall.}
+    GetSize*: proc(
+      self: ptr IWICBitmapLock, pWidth: ptr UINT, pHeight: ptr UINT
+    ): HRESULT {.stdcall.}
     GetStride*: proc(self: ptr IWICBitmapLock, pcbStride: ptr UINT): HRESULT {.stdcall.}
-    GetDataPointer*: proc(self: ptr IWICBitmapLock, pcbBufferSize: ptr UINT, ppbData: ptr ptr BYTE): HRESULT {.stdcall.}
-    GetPixelFormat*: proc(self: ptr IWICBitmapLock, pPixelFormat: ptr WICPixelFormatGUID): HRESULT {.stdcall.}
+    GetDataPointer*: proc(
+      self: ptr IWICBitmapLock, pcbBufferSize: ptr UINT, ppbData: ptr ptr BYTE
+    ): HRESULT {.stdcall.}
+    GetPixelFormat*: proc(
+      self: ptr IWICBitmapLock, pPixelFormat: ptr WICPixelFormatGUID
+    ): HRESULT {.stdcall.}
+
   IWICBitmapFlipRotator* {.pure.} = object
     lpVtbl*: ptr IWICBitmapFlipRotatorVtbl
+
   IWICBitmapFlipRotatorVtbl* {.pure, inheritable.} = object of IWICBitmapSourceVtbl
-    Initialize*: proc(self: ptr IWICBitmapFlipRotator, pISource: ptr IWICBitmapSource, options: WICBitmapTransformOptions): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IWICBitmapFlipRotator,
+      pISource: ptr IWICBitmapSource,
+      options: WICBitmapTransformOptions,
+    ): HRESULT {.stdcall.}
+
   IWICBitmap* {.pure.} = object
     lpVtbl*: ptr IWICBitmapVtbl
+
   IWICBitmapVtbl* {.pure, inheritable.} = object of IWICBitmapSourceVtbl
-    Lock*: proc(self: ptr IWICBitmap, prcLock: ptr WICRect, flags: DWORD, ppILock: ptr ptr IWICBitmapLock): HRESULT {.stdcall.}
-    SetPalette*: proc(self: ptr IWICBitmap, pIPalette: ptr IWICPalette): HRESULT {.stdcall.}
-    SetResolution*: proc(self: ptr IWICBitmap, dpiX: float64, dpiY: float64): HRESULT {.stdcall.}
+    Lock*: proc(
+      self: ptr IWICBitmap,
+      prcLock: ptr WICRect,
+      flags: DWORD,
+      ppILock: ptr ptr IWICBitmapLock,
+    ): HRESULT {.stdcall.}
+    SetPalette*:
+      proc(self: ptr IWICBitmap, pIPalette: ptr IWICPalette): HRESULT {.stdcall.}
+    SetResolution*:
+      proc(self: ptr IWICBitmap, dpiX: float64, dpiY: float64): HRESULT {.stdcall.}
+
   IWICComponentInfo* {.pure.} = object
     lpVtbl*: ptr IWICComponentInfoVtbl
+
   IWICComponentInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetComponentType*: proc(self: ptr IWICComponentInfo, pType: ptr WICComponentType): HRESULT {.stdcall.}
+    GetComponentType*: proc(
+      self: ptr IWICComponentInfo, pType: ptr WICComponentType
+    ): HRESULT {.stdcall.}
     GetCLSID*: proc(self: ptr IWICComponentInfo, pclsid: ptr CLSID): HRESULT {.stdcall.}
-    GetSigningStatus*: proc(self: ptr IWICComponentInfo, pStatus: ptr DWORD): HRESULT {.stdcall.}
-    GetAuthor*: proc(self: ptr IWICComponentInfo, cchAuthor: UINT, wzAuthor: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.stdcall.}
-    GetVendorGUID*: proc(self: ptr IWICComponentInfo, pguidVendor: ptr GUID): HRESULT {.stdcall.}
-    GetVersion*: proc(self: ptr IWICComponentInfo, cchVersion: UINT, wzVersion: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.stdcall.}
-    GetSpecVersion*: proc(self: ptr IWICComponentInfo, cchSpecVersion: UINT, wzSpecVersion: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.stdcall.}
-    GetFriendlyName*: proc(self: ptr IWICComponentInfo, cchFriendlyName: UINT, wzFriendlyName: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.stdcall.}
+    GetSigningStatus*:
+      proc(self: ptr IWICComponentInfo, pStatus: ptr DWORD): HRESULT {.stdcall.}
+    GetAuthor*: proc(
+      self: ptr IWICComponentInfo,
+      cchAuthor: UINT,
+      wzAuthor: ptr WCHAR,
+      pcchActual: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetVendorGUID*:
+      proc(self: ptr IWICComponentInfo, pguidVendor: ptr GUID): HRESULT {.stdcall.}
+    GetVersion*: proc(
+      self: ptr IWICComponentInfo,
+      cchVersion: UINT,
+      wzVersion: ptr WCHAR,
+      pcchActual: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetSpecVersion*: proc(
+      self: ptr IWICComponentInfo,
+      cchSpecVersion: UINT,
+      wzSpecVersion: ptr WCHAR,
+      pcchActual: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetFriendlyName*: proc(
+      self: ptr IWICComponentInfo,
+      cchFriendlyName: UINT,
+      wzFriendlyName: ptr WCHAR,
+      pcchActual: ptr UINT,
+    ): HRESULT {.stdcall.}
+
   IWICMetadataQueryReader* {.pure.} = object
     lpVtbl*: ptr IWICMetadataQueryReaderVtbl
+
   IWICMetadataQueryReaderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    GetContainerFormat*: proc(self: ptr IWICMetadataQueryReader, pguidContainerFormat: ptr GUID): HRESULT {.stdcall.}
-    GetLocation*: proc(self: ptr IWICMetadataQueryReader, cchMaxLength: UINT, wzNamespace: ptr WCHAR, pcchActualLength: ptr UINT): HRESULT {.stdcall.}
-    GetMetadataByName*: proc(self: ptr IWICMetadataQueryReader, wzName: LPCWSTR, pvarValue: ptr PROPVARIANT): HRESULT {.stdcall.}
-    GetEnumerator*: proc(self: ptr IWICMetadataQueryReader, ppIEnumString: ptr ptr IEnumString): HRESULT {.stdcall.}
+    GetContainerFormat*: proc(
+      self: ptr IWICMetadataQueryReader, pguidContainerFormat: ptr GUID
+    ): HRESULT {.stdcall.}
+    GetLocation*: proc(
+      self: ptr IWICMetadataQueryReader,
+      cchMaxLength: UINT,
+      wzNamespace: ptr WCHAR,
+      pcchActualLength: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetMetadataByName*: proc(
+      self: ptr IWICMetadataQueryReader, wzName: LPCWSTR, pvarValue: ptr PROPVARIANT
+    ): HRESULT {.stdcall.}
+    GetEnumerator*: proc(
+      self: ptr IWICMetadataQueryReader, ppIEnumString: ptr ptr IEnumString
+    ): HRESULT {.stdcall.}
+
   IWICMetadataQueryWriter* {.pure.} = object
     lpVtbl*: ptr IWICMetadataQueryWriterVtbl
+
   IWICMetadataQueryWriterVtbl* {.pure, inheritable.} = object of IWICMetadataQueryReaderVtbl
-    SetMetadataByName*: proc(self: ptr IWICMetadataQueryWriter, wzName: LPCWSTR, pvarValue: ptr PROPVARIANT): HRESULT {.stdcall.}
-    RemoveMetadataByName*: proc(self: ptr IWICMetadataQueryWriter, wzName: LPCWSTR): HRESULT {.stdcall.}
+    SetMetadataByName*: proc(
+      self: ptr IWICMetadataQueryWriter, wzName: LPCWSTR, pvarValue: ptr PROPVARIANT
+    ): HRESULT {.stdcall.}
+    RemoveMetadataByName*:
+      proc(self: ptr IWICMetadataQueryWriter, wzName: LPCWSTR): HRESULT {.stdcall.}
+
   IWICBitmapFrameDecode* {.pure.} = object
     lpVtbl*: ptr IWICBitmapFrameDecodeVtbl
+
   IWICBitmapFrameDecodeVtbl* {.pure, inheritable.} = object of IWICBitmapSourceVtbl
-    GetMetadataQueryReader*: proc(self: ptr IWICBitmapFrameDecode, ppIMetadataQueryReader: ptr ptr IWICMetadataQueryReader): HRESULT {.stdcall.}
-    GetColorContexts*: proc(self: ptr IWICBitmapFrameDecode, cCount: UINT, ppIColorContexts: ptr ptr IWICColorContext, pcActualCount: ptr UINT): HRESULT {.stdcall.}
-    GetThumbnail*: proc(self: ptr IWICBitmapFrameDecode, ppIThumbnail: ptr ptr IWICBitmapSource): HRESULT {.stdcall.}
+    GetMetadataQueryReader*: proc(
+      self: ptr IWICBitmapFrameDecode,
+      ppIMetadataQueryReader: ptr ptr IWICMetadataQueryReader,
+    ): HRESULT {.stdcall.}
+    GetColorContexts*: proc(
+      self: ptr IWICBitmapFrameDecode,
+      cCount: UINT,
+      ppIColorContexts: ptr ptr IWICColorContext,
+      pcActualCount: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetThumbnail*: proc(
+      self: ptr IWICBitmapFrameDecode, ppIThumbnail: ptr ptr IWICBitmapSource
+    ): HRESULT {.stdcall.}
+
   IWICPixelFormatInfo* {.pure.} = object
     lpVtbl*: ptr IWICPixelFormatInfoVtbl
+
   IWICPixelFormatInfoVtbl* {.pure, inheritable.} = object of IWICComponentInfoVtbl
-    GetFormatGUID*: proc(self: ptr IWICPixelFormatInfo, pFormat: ptr GUID): HRESULT {.stdcall.}
-    GetColorContext*: proc(self: ptr IWICPixelFormatInfo, ppIColorContext: ptr ptr IWICColorContext): HRESULT {.stdcall.}
-    GetBitsPerPixel*: proc(self: ptr IWICPixelFormatInfo, puiBitsPerPixel: ptr UINT): HRESULT {.stdcall.}
-    GetChannelCount*: proc(self: ptr IWICPixelFormatInfo, puiChannelCount: ptr UINT): HRESULT {.stdcall.}
-    GetChannelMask*: proc(self: ptr IWICPixelFormatInfo, uiChannelIndex: UINT, cbMaskBuffer: UINT, pbMaskBuffer: ptr BYTE, pcbActual: ptr UINT): HRESULT {.stdcall.}
+    GetFormatGUID*:
+      proc(self: ptr IWICPixelFormatInfo, pFormat: ptr GUID): HRESULT {.stdcall.}
+    GetColorContext*: proc(
+      self: ptr IWICPixelFormatInfo, ppIColorContext: ptr ptr IWICColorContext
+    ): HRESULT {.stdcall.}
+    GetBitsPerPixel*: proc(
+      self: ptr IWICPixelFormatInfo, puiBitsPerPixel: ptr UINT
+    ): HRESULT {.stdcall.}
+    GetChannelCount*: proc(
+      self: ptr IWICPixelFormatInfo, puiChannelCount: ptr UINT
+    ): HRESULT {.stdcall.}
+    GetChannelMask*: proc(
+      self: ptr IWICPixelFormatInfo,
+      uiChannelIndex: UINT,
+      cbMaskBuffer: UINT,
+      pbMaskBuffer: ptr BYTE,
+      pcbActual: ptr UINT,
+    ): HRESULT {.stdcall.}
+
   IWICPixelFormatInfo2* {.pure.} = object
     lpVtbl*: ptr IWICPixelFormatInfo2Vtbl
+
   IWICPixelFormatInfo2Vtbl* {.pure, inheritable.} = object of IWICPixelFormatInfoVtbl
-    SupportsTransparency*: proc(self: ptr IWICPixelFormatInfo2, pfSupportsTransparency: ptr WINBOOL): HRESULT {.stdcall.}
-    GetNumericRepresentation*: proc(self: ptr IWICPixelFormatInfo2, pNumericRepresentation: ptr WICPixelFormatNumericRepresentation): HRESULT {.stdcall.}
+    SupportsTransparency*: proc(
+      self: ptr IWICPixelFormatInfo2, pfSupportsTransparency: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    GetNumericRepresentation*: proc(
+      self: ptr IWICPixelFormatInfo2,
+      pNumericRepresentation: ptr WICPixelFormatNumericRepresentation,
+    ): HRESULT {.stdcall.}
+
   IWICBitmapCodecInfo* {.pure.} = object
     lpVtbl*: ptr IWICBitmapCodecInfoVtbl
+
   IWICBitmapCodecInfoVtbl* {.pure, inheritable.} = object of IWICComponentInfoVtbl
-    GetContainerFormat*: proc(self: ptr IWICBitmapCodecInfo, pguidContainerFormat: ptr GUID): HRESULT {.stdcall.}
-    GetPixelFormats*: proc(self: ptr IWICBitmapCodecInfo, cFormats: UINT, pguidPixelFormats: ptr GUID, pcActual: ptr UINT): HRESULT {.stdcall.}
-    GetColorManagementVersion*: proc(self: ptr IWICBitmapCodecInfo, cchColorManagementVersion: UINT, wzColorManagementVersion: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.stdcall.}
-    GetDeviceManufacturer*: proc(self: ptr IWICBitmapCodecInfo, cchDeviceManufacturer: UINT, wzDeviceManufacturer: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.stdcall.}
-    GetDeviceModels*: proc(self: ptr IWICBitmapCodecInfo, cchDeviceModels: UINT, wzDeviceModels: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.stdcall.}
-    GetMimeTypes*: proc(self: ptr IWICBitmapCodecInfo, cchMimeTypes: UINT, wzMimeTypes: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.stdcall.}
-    GetFileExtensions*: proc(self: ptr IWICBitmapCodecInfo, cchFileExtensions: UINT, wzFileExtensions: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.stdcall.}
-    DoesSupportAnimation*: proc(self: ptr IWICBitmapCodecInfo, pfSupportAnimation: ptr WINBOOL): HRESULT {.stdcall.}
-    DoesSupportChromaKey*: proc(self: ptr IWICBitmapCodecInfo, pfSupportChromaKey: ptr WINBOOL): HRESULT {.stdcall.}
-    DoesSupportLossless*: proc(self: ptr IWICBitmapCodecInfo, pfSupportLossless: ptr WINBOOL): HRESULT {.stdcall.}
-    DoesSupportMultiframe*: proc(self: ptr IWICBitmapCodecInfo, pfSupportMultiframe: ptr WINBOOL): HRESULT {.stdcall.}
-    MatchesMimeType*: proc(self: ptr IWICBitmapCodecInfo, wzMimeType: LPCWSTR, pfMatches: ptr WINBOOL): HRESULT {.stdcall.}
+    GetContainerFormat*: proc(
+      self: ptr IWICBitmapCodecInfo, pguidContainerFormat: ptr GUID
+    ): HRESULT {.stdcall.}
+    GetPixelFormats*: proc(
+      self: ptr IWICBitmapCodecInfo,
+      cFormats: UINT,
+      pguidPixelFormats: ptr GUID,
+      pcActual: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetColorManagementVersion*: proc(
+      self: ptr IWICBitmapCodecInfo,
+      cchColorManagementVersion: UINT,
+      wzColorManagementVersion: ptr WCHAR,
+      pcchActual: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetDeviceManufacturer*: proc(
+      self: ptr IWICBitmapCodecInfo,
+      cchDeviceManufacturer: UINT,
+      wzDeviceManufacturer: ptr WCHAR,
+      pcchActual: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetDeviceModels*: proc(
+      self: ptr IWICBitmapCodecInfo,
+      cchDeviceModels: UINT,
+      wzDeviceModels: ptr WCHAR,
+      pcchActual: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetMimeTypes*: proc(
+      self: ptr IWICBitmapCodecInfo,
+      cchMimeTypes: UINT,
+      wzMimeTypes: ptr WCHAR,
+      pcchActual: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetFileExtensions*: proc(
+      self: ptr IWICBitmapCodecInfo,
+      cchFileExtensions: UINT,
+      wzFileExtensions: ptr WCHAR,
+      pcchActual: ptr UINT,
+    ): HRESULT {.stdcall.}
+    DoesSupportAnimation*: proc(
+      self: ptr IWICBitmapCodecInfo, pfSupportAnimation: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    DoesSupportChromaKey*: proc(
+      self: ptr IWICBitmapCodecInfo, pfSupportChromaKey: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    DoesSupportLossless*: proc(
+      self: ptr IWICBitmapCodecInfo, pfSupportLossless: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    DoesSupportMultiframe*: proc(
+      self: ptr IWICBitmapCodecInfo, pfSupportMultiframe: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    MatchesMimeType*: proc(
+      self: ptr IWICBitmapCodecInfo, wzMimeType: LPCWSTR, pfMatches: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+
   IWICBitmapDecoder* {.pure.} = object
     lpVtbl*: ptr IWICBitmapDecoderVtbl
+
   IWICBitmapDecoderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    QueryCapability*: proc(self: ptr IWICBitmapDecoder, pIStream: ptr IStream, pdwCapability: ptr DWORD): HRESULT {.stdcall.}
-    Initialize*: proc(self: ptr IWICBitmapDecoder, pIStream: ptr IStream, cacheOptions: WICDecodeOptions): HRESULT {.stdcall.}
-    GetContainerFormat*: proc(self: ptr IWICBitmapDecoder, pguidContainerFormat: ptr GUID): HRESULT {.stdcall.}
-    GetDecoderInfo*: proc(self: ptr IWICBitmapDecoder, ppIDecoderInfo: ptr ptr IWICBitmapDecoderInfo): HRESULT {.stdcall.}
-    CopyPalette*: proc(self: ptr IWICBitmapDecoder, pIPalette: ptr IWICPalette): HRESULT {.stdcall.}
-    GetMetadataQueryReader*: proc(self: ptr IWICBitmapDecoder, ppIMetadataQueryReader: ptr ptr IWICMetadataQueryReader): HRESULT {.stdcall.}
-    GetPreview*: proc(self: ptr IWICBitmapDecoder, ppIBitmapSource: ptr ptr IWICBitmapSource): HRESULT {.stdcall.}
-    GetColorContexts*: proc(self: ptr IWICBitmapDecoder, cCount: UINT, ppIColorContexts: ptr ptr IWICColorContext, pcActualCount: ptr UINT): HRESULT {.stdcall.}
-    GetThumbnail*: proc(self: ptr IWICBitmapDecoder, ppIThumbnail: ptr ptr IWICBitmapSource): HRESULT {.stdcall.}
-    GetFrameCount*: proc(self: ptr IWICBitmapDecoder, pCount: ptr UINT): HRESULT {.stdcall.}
-    GetFrame*: proc(self: ptr IWICBitmapDecoder, index: UINT, ppIBitmapFrame: ptr ptr IWICBitmapFrameDecode): HRESULT {.stdcall.}
+    QueryCapability*: proc(
+      self: ptr IWICBitmapDecoder, pIStream: ptr IStream, pdwCapability: ptr DWORD
+    ): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IWICBitmapDecoder, pIStream: ptr IStream, cacheOptions: WICDecodeOptions
+    ): HRESULT {.stdcall.}
+    GetContainerFormat*: proc(
+      self: ptr IWICBitmapDecoder, pguidContainerFormat: ptr GUID
+    ): HRESULT {.stdcall.}
+    GetDecoderInfo*: proc(
+      self: ptr IWICBitmapDecoder, ppIDecoderInfo: ptr ptr IWICBitmapDecoderInfo
+    ): HRESULT {.stdcall.}
+    CopyPalette*:
+      proc(self: ptr IWICBitmapDecoder, pIPalette: ptr IWICPalette): HRESULT {.stdcall.}
+    GetMetadataQueryReader*: proc(
+      self: ptr IWICBitmapDecoder,
+      ppIMetadataQueryReader: ptr ptr IWICMetadataQueryReader,
+    ): HRESULT {.stdcall.}
+    GetPreview*: proc(
+      self: ptr IWICBitmapDecoder, ppIBitmapSource: ptr ptr IWICBitmapSource
+    ): HRESULT {.stdcall.}
+    GetColorContexts*: proc(
+      self: ptr IWICBitmapDecoder,
+      cCount: UINT,
+      ppIColorContexts: ptr ptr IWICColorContext,
+      pcActualCount: ptr UINT,
+    ): HRESULT {.stdcall.}
+    GetThumbnail*: proc(
+      self: ptr IWICBitmapDecoder, ppIThumbnail: ptr ptr IWICBitmapSource
+    ): HRESULT {.stdcall.}
+    GetFrameCount*:
+      proc(self: ptr IWICBitmapDecoder, pCount: ptr UINT): HRESULT {.stdcall.}
+    GetFrame*: proc(
+      self: ptr IWICBitmapDecoder,
+      index: UINT,
+      ppIBitmapFrame: ptr ptr IWICBitmapFrameDecode,
+    ): HRESULT {.stdcall.}
+
   IWICBitmapDecoderInfo* {.pure.} = object
     lpVtbl*: ptr IWICBitmapDecoderInfoVtbl
+
   IWICBitmapDecoderInfoVtbl* {.pure, inheritable.} = object of IWICBitmapCodecInfoVtbl
-    GetPatterns*: proc(self: ptr IWICBitmapDecoderInfo, cbSizePatterns: UINT, pPatterns: ptr WICBitmapPattern, pcPatterns: ptr UINT, pcbPatternsActual: ptr UINT): HRESULT {.stdcall.}
-    MatchesPattern*: proc(self: ptr IWICBitmapDecoderInfo, pIStream: ptr IStream, pfMatches: ptr WINBOOL): HRESULT {.stdcall.}
-    CreateInstance*: proc(self: ptr IWICBitmapDecoderInfo, ppIBitmapDecoder: ptr ptr IWICBitmapDecoder): HRESULT {.stdcall.}
+    GetPatterns*: proc(
+      self: ptr IWICBitmapDecoderInfo,
+      cbSizePatterns: UINT,
+      pPatterns: ptr WICBitmapPattern,
+      pcPatterns: ptr UINT,
+      pcbPatternsActual: ptr UINT,
+    ): HRESULT {.stdcall.}
+    MatchesPattern*: proc(
+      self: ptr IWICBitmapDecoderInfo, pIStream: ptr IStream, pfMatches: ptr WINBOOL
+    ): HRESULT {.stdcall.}
+    CreateInstance*: proc(
+      self: ptr IWICBitmapDecoderInfo, ppIBitmapDecoder: ptr ptr IWICBitmapDecoder
+    ): HRESULT {.stdcall.}
+
   IWICBitmapFrameEncode* {.pure.} = object
     lpVtbl*: ptr IWICBitmapFrameEncodeVtbl
+
   IWICBitmapFrameEncodeVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IWICBitmapFrameEncode, pIEncoderOptions: ptr IPropertyBag2): HRESULT {.stdcall.}
-    SetSize*: proc(self: ptr IWICBitmapFrameEncode, uiWidth: UINT, uiHeight: UINT): HRESULT {.stdcall.}
-    SetResolution*: proc(self: ptr IWICBitmapFrameEncode, dpiX: float64, dpiY: float64): HRESULT {.stdcall.}
-    SetPixelFormat*: proc(self: ptr IWICBitmapFrameEncode, pPixelFormat: ptr WICPixelFormatGUID): HRESULT {.stdcall.}
-    SetColorContexts*: proc(self: ptr IWICBitmapFrameEncode, cCount: UINT, ppIColorContext: ptr ptr IWICColorContext): HRESULT {.stdcall.}
-    SetPalette*: proc(self: ptr IWICBitmapFrameEncode, pIPalette: ptr IWICPalette): HRESULT {.stdcall.}
-    SetThumbnail*: proc(self: ptr IWICBitmapFrameEncode, pIThumbnail: ptr IWICBitmapSource): HRESULT {.stdcall.}
-    WritePixels*: proc(self: ptr IWICBitmapFrameEncode, lineCount: UINT, cbStride: UINT, cbBufferSize: UINT, pbPixels: ptr BYTE): HRESULT {.stdcall.}
-    WriteSource*: proc(self: ptr IWICBitmapFrameEncode, pIBitmapSource: ptr IWICBitmapSource, prc: ptr WICRect): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IWICBitmapFrameEncode, pIEncoderOptions: ptr IPropertyBag2
+    ): HRESULT {.stdcall.}
+    SetSize*: proc(
+      self: ptr IWICBitmapFrameEncode, uiWidth: UINT, uiHeight: UINT
+    ): HRESULT {.stdcall.}
+    SetResolution*: proc(
+      self: ptr IWICBitmapFrameEncode, dpiX: float64, dpiY: float64
+    ): HRESULT {.stdcall.}
+    SetPixelFormat*: proc(
+      self: ptr IWICBitmapFrameEncode, pPixelFormat: ptr WICPixelFormatGUID
+    ): HRESULT {.stdcall.}
+    SetColorContexts*: proc(
+      self: ptr IWICBitmapFrameEncode,
+      cCount: UINT,
+      ppIColorContext: ptr ptr IWICColorContext,
+    ): HRESULT {.stdcall.}
+    SetPalette*: proc(
+      self: ptr IWICBitmapFrameEncode, pIPalette: ptr IWICPalette
+    ): HRESULT {.stdcall.}
+    SetThumbnail*: proc(
+      self: ptr IWICBitmapFrameEncode, pIThumbnail: ptr IWICBitmapSource
+    ): HRESULT {.stdcall.}
+    WritePixels*: proc(
+      self: ptr IWICBitmapFrameEncode,
+      lineCount: UINT,
+      cbStride: UINT,
+      cbBufferSize: UINT,
+      pbPixels: ptr BYTE,
+    ): HRESULT {.stdcall.}
+    WriteSource*: proc(
+      self: ptr IWICBitmapFrameEncode,
+      pIBitmapSource: ptr IWICBitmapSource,
+      prc: ptr WICRect,
+    ): HRESULT {.stdcall.}
     Commit*: proc(self: ptr IWICBitmapFrameEncode): HRESULT {.stdcall.}
-    GetMetadataQueryWriter*: proc(self: ptr IWICBitmapFrameEncode, ppIMetadataQueryWriter: ptr ptr IWICMetadataQueryWriter): HRESULT {.stdcall.}
+    GetMetadataQueryWriter*: proc(
+      self: ptr IWICBitmapFrameEncode,
+      ppIMetadataQueryWriter: ptr ptr IWICMetadataQueryWriter,
+    ): HRESULT {.stdcall.}
+
   IWICBitmapEncoder* {.pure.} = object
     lpVtbl*: ptr IWICBitmapEncoderVtbl
+
   IWICBitmapEncoderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Initialize*: proc(self: ptr IWICBitmapEncoder, pIStream: ptr IStream, cacheOption: WICBitmapEncoderCacheOption): HRESULT {.stdcall.}
-    GetContainerFormat*: proc(self: ptr IWICBitmapEncoder, pguidContainerFormat: ptr GUID): HRESULT {.stdcall.}
-    GetEncoderInfo*: proc(self: ptr IWICBitmapEncoder, ppIEncoderInfo: ptr ptr IWICBitmapEncoderInfo): HRESULT {.stdcall.}
-    SetColorContexts*: proc(self: ptr IWICBitmapEncoder, cCount: UINT, ppIColorContext: ptr ptr IWICColorContext): HRESULT {.stdcall.}
-    SetPalette*: proc(self: ptr IWICBitmapEncoder, pIPalette: ptr IWICPalette): HRESULT {.stdcall.}
-    SetThumbnail*: proc(self: ptr IWICBitmapEncoder, pIThumbnail: ptr IWICBitmapSource): HRESULT {.stdcall.}
-    SetPreview*: proc(self: ptr IWICBitmapEncoder, pIPreview: ptr IWICBitmapSource): HRESULT {.stdcall.}
-    CreateNewFrame*: proc(self: ptr IWICBitmapEncoder, ppIFrameEncode: ptr ptr IWICBitmapFrameEncode, ppIEncoderOptions: ptr ptr IPropertyBag2): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IWICBitmapEncoder,
+      pIStream: ptr IStream,
+      cacheOption: WICBitmapEncoderCacheOption,
+    ): HRESULT {.stdcall.}
+    GetContainerFormat*: proc(
+      self: ptr IWICBitmapEncoder, pguidContainerFormat: ptr GUID
+    ): HRESULT {.stdcall.}
+    GetEncoderInfo*: proc(
+      self: ptr IWICBitmapEncoder, ppIEncoderInfo: ptr ptr IWICBitmapEncoderInfo
+    ): HRESULT {.stdcall.}
+    SetColorContexts*: proc(
+      self: ptr IWICBitmapEncoder,
+      cCount: UINT,
+      ppIColorContext: ptr ptr IWICColorContext,
+    ): HRESULT {.stdcall.}
+    SetPalette*:
+      proc(self: ptr IWICBitmapEncoder, pIPalette: ptr IWICPalette): HRESULT {.stdcall.}
+    SetThumbnail*: proc(
+      self: ptr IWICBitmapEncoder, pIThumbnail: ptr IWICBitmapSource
+    ): HRESULT {.stdcall.}
+    SetPreview*: proc(
+      self: ptr IWICBitmapEncoder, pIPreview: ptr IWICBitmapSource
+    ): HRESULT {.stdcall.}
+    CreateNewFrame*: proc(
+      self: ptr IWICBitmapEncoder,
+      ppIFrameEncode: ptr ptr IWICBitmapFrameEncode,
+      ppIEncoderOptions: ptr ptr IPropertyBag2,
+    ): HRESULT {.stdcall.}
     Commit*: proc(self: ptr IWICBitmapEncoder): HRESULT {.stdcall.}
-    GetMetadataQueryWriter*: proc(self: ptr IWICBitmapEncoder, ppIMetadataQueryWriter: ptr ptr IWICMetadataQueryWriter): HRESULT {.stdcall.}
+    GetMetadataQueryWriter*: proc(
+      self: ptr IWICBitmapEncoder,
+      ppIMetadataQueryWriter: ptr ptr IWICMetadataQueryWriter,
+    ): HRESULT {.stdcall.}
+
   IWICBitmapEncoderInfo* {.pure.} = object
     lpVtbl*: ptr IWICBitmapEncoderInfoVtbl
+
   IWICBitmapEncoderInfoVtbl* {.pure, inheritable.} = object of IWICBitmapCodecInfoVtbl
-    CreateInstance*: proc(self: ptr IWICBitmapEncoderInfo, ppIBitmapEncoder: ptr ptr IWICBitmapEncoder): HRESULT {.stdcall.}
+    CreateInstance*: proc(
+      self: ptr IWICBitmapEncoderInfo, ppIBitmapEncoder: ptr ptr IWICBitmapEncoder
+    ): HRESULT {.stdcall.}
+
   IWICFormatConverter* {.pure.} = object
     lpVtbl*: ptr IWICFormatConverterVtbl
+
   IWICFormatConverterVtbl* {.pure, inheritable.} = object of IWICBitmapSourceVtbl
-    Initialize*: proc(self: ptr IWICFormatConverter, pISource: ptr IWICBitmapSource, dstFormat: REFWICPixelFormatGUID, dither: WICBitmapDitherType, pIPalette: ptr IWICPalette, alphaThresholdPercent: float64, paletteTranslate: WICBitmapPaletteType): HRESULT {.stdcall.}
-    CanConvert*: proc(self: ptr IWICFormatConverter, srcPixelFormat: REFWICPixelFormatGUID, dstPixelFormat: REFWICPixelFormatGUID, pfCanConvert: ptr WINBOOL): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IWICFormatConverter,
+      pISource: ptr IWICBitmapSource,
+      dstFormat: REFWICPixelFormatGUID,
+      dither: WICBitmapDitherType,
+      pIPalette: ptr IWICPalette,
+      alphaThresholdPercent: float64,
+      paletteTranslate: WICBitmapPaletteType,
+    ): HRESULT {.stdcall.}
+    CanConvert*: proc(
+      self: ptr IWICFormatConverter,
+      srcPixelFormat: REFWICPixelFormatGUID,
+      dstPixelFormat: REFWICPixelFormatGUID,
+      pfCanConvert: ptr WINBOOL,
+    ): HRESULT {.stdcall.}
+
   IWICFormatConverterInfo* {.pure.} = object
     lpVtbl*: ptr IWICFormatConverterInfoVtbl
+
   IWICFormatConverterInfoVtbl* {.pure, inheritable.} = object of IWICComponentInfoVtbl
-    GetPixelFormats*: proc(self: ptr IWICFormatConverterInfo, cFormats: UINT, pPixelFormatGUIDs: ptr WICPixelFormatGUID, pcActual: ptr UINT): HRESULT {.stdcall.}
-    CreateInstance*: proc(self: ptr IWICFormatConverterInfo, ppIConverter: ptr ptr IWICFormatConverter): HRESULT {.stdcall.}
+    GetPixelFormats*: proc(
+      self: ptr IWICFormatConverterInfo,
+      cFormats: UINT,
+      pPixelFormatGUIDs: ptr WICPixelFormatGUID,
+      pcActual: ptr UINT,
+    ): HRESULT {.stdcall.}
+    CreateInstance*: proc(
+      self: ptr IWICFormatConverterInfo, ppIConverter: ptr ptr IWICFormatConverter
+    ): HRESULT {.stdcall.}
+
   IWICStream* {.pure.} = object
     lpVtbl*: ptr IWICStreamVtbl
+
   IWICStreamVtbl* {.pure, inheritable.} = object of IStreamVtbl
-    InitializeFromIStream*: proc(self: ptr IWICStream, pIStream: ptr IStream): HRESULT {.stdcall.}
-    InitializeFromFilename*: proc(self: ptr IWICStream, wzFileName: LPCWSTR, dwAccessMode: DWORD): HRESULT {.stdcall.}
-    InitializeFromMemory*: proc(self: ptr IWICStream, pbBuffer: ptr BYTE, cbBufferSize: DWORD): HRESULT {.stdcall.}
-    InitializeFromIStreamRegion*: proc(self: ptr IWICStream, pIStream: ptr IStream, ulOffset: ULARGE_INTEGER, ulMaxSize: ULARGE_INTEGER): HRESULT {.stdcall.}
+    InitializeFromIStream*:
+      proc(self: ptr IWICStream, pIStream: ptr IStream): HRESULT {.stdcall.}
+    InitializeFromFilename*: proc(
+      self: ptr IWICStream, wzFileName: LPCWSTR, dwAccessMode: DWORD
+    ): HRESULT {.stdcall.}
+    InitializeFromMemory*: proc(
+      self: ptr IWICStream, pbBuffer: ptr BYTE, cbBufferSize: DWORD
+    ): HRESULT {.stdcall.}
+    InitializeFromIStreamRegion*: proc(
+      self: ptr IWICStream,
+      pIStream: ptr IStream,
+      ulOffset: ULARGE_INTEGER,
+      ulMaxSize: ULARGE_INTEGER,
+    ): HRESULT {.stdcall.}
+
   IWICBitmapScaler* {.pure.} = object
     lpVtbl*: ptr IWICBitmapScalerVtbl
+
   IWICBitmapScalerVtbl* {.pure, inheritable.} = object of IWICBitmapSourceVtbl
-    Initialize*: proc(self: ptr IWICBitmapScaler, pISource: ptr IWICBitmapSource, uiWidth: UINT, uiHeight: UINT, mode: WICBitmapInterpolationMode): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IWICBitmapScaler,
+      pISource: ptr IWICBitmapSource,
+      uiWidth: UINT,
+      uiHeight: UINT,
+      mode: WICBitmapInterpolationMode,
+    ): HRESULT {.stdcall.}
+
   IWICBitmapClipper* {.pure.} = object
     lpVtbl*: ptr IWICBitmapClipperVtbl
+
   IWICBitmapClipperVtbl* {.pure, inheritable.} = object of IWICBitmapSourceVtbl
-    Initialize*: proc(self: ptr IWICBitmapClipper, pISource: ptr IWICBitmapSource, prc: ptr WICRect): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IWICBitmapClipper, pISource: ptr IWICBitmapSource, prc: ptr WICRect
+    ): HRESULT {.stdcall.}
+
   IWICColorTransform* {.pure.} = object
     lpVtbl*: ptr IWICColorTransformVtbl
+
   IWICColorTransformVtbl* {.pure, inheritable.} = object of IWICBitmapSourceVtbl
-    Initialize*: proc(self: ptr IWICColorTransform, pIBitmapSource: ptr IWICBitmapSource, pIContextSource: ptr IWICColorContext, pIContextDest: ptr IWICColorContext, pixelFmtDest: REFWICPixelFormatGUID): HRESULT {.stdcall.}
+    Initialize*: proc(
+      self: ptr IWICColorTransform,
+      pIBitmapSource: ptr IWICBitmapSource,
+      pIContextSource: ptr IWICColorContext,
+      pIContextDest: ptr IWICColorContext,
+      pixelFmtDest: REFWICPixelFormatGUID,
+    ): HRESULT {.stdcall.}
+
   IWICFastMetadataEncoder* {.pure.} = object
     lpVtbl*: ptr IWICFastMetadataEncoderVtbl
+
   IWICFastMetadataEncoderVtbl* {.pure, inheritable.} = object of IUnknownVtbl
     Commit*: proc(self: ptr IWICFastMetadataEncoder): HRESULT {.stdcall.}
-    GetMetadataQueryWriter*: proc(self: ptr IWICFastMetadataEncoder, ppIMetadataQueryWriter: ptr ptr IWICMetadataQueryWriter): HRESULT {.stdcall.}
+    GetMetadataQueryWriter*: proc(
+      self: ptr IWICFastMetadataEncoder,
+      ppIMetadataQueryWriter: ptr ptr IWICMetadataQueryWriter,
+    ): HRESULT {.stdcall.}
+
   IWICImagingFactory* {.pure.} = object
     lpVtbl*: ptr IWICImagingFactoryVtbl
+
   IWICImagingFactoryVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    CreateDecoderFromFilename*: proc(self: ptr IWICImagingFactory, wzFilename: LPCWSTR, pguidVendor: ptr GUID, dwDesiredAccess: DWORD, metadataOptions: WICDecodeOptions, ppIDecoder: ptr ptr IWICBitmapDecoder): HRESULT {.stdcall.}
-    CreateDecoderFromStream*: proc(self: ptr IWICImagingFactory, pIStream: ptr IStream, pguidVendor: ptr GUID, metadataOptions: WICDecodeOptions, ppIDecoder: ptr ptr IWICBitmapDecoder): HRESULT {.stdcall.}
-    CreateDecoderFromFileHandle*: proc(self: ptr IWICImagingFactory, hFile: ULONG_PTR, pguidVendor: ptr GUID, metadataOptions: WICDecodeOptions, ppIDecoder: ptr ptr IWICBitmapDecoder): HRESULT {.stdcall.}
-    CreateComponentInfo*: proc(self: ptr IWICImagingFactory, clsidComponent: REFCLSID, ppIInfo: ptr ptr IWICComponentInfo): HRESULT {.stdcall.}
-    CreateDecoder*: proc(self: ptr IWICImagingFactory, guidContainerFormat: REFGUID, pguidVendor: ptr GUID, ppIDecoder: ptr ptr IWICBitmapDecoder): HRESULT {.stdcall.}
-    CreateEncoder*: proc(self: ptr IWICImagingFactory, guidContainerFormat: REFGUID, pguidVendor: ptr GUID, ppIEncoder: ptr ptr IWICBitmapEncoder): HRESULT {.stdcall.}
-    CreatePalette*: proc(self: ptr IWICImagingFactory, ppIPalette: ptr ptr IWICPalette): HRESULT {.stdcall.}
-    CreateFormatConverter*: proc(self: ptr IWICImagingFactory, ppIFormatConverter: ptr ptr IWICFormatConverter): HRESULT {.stdcall.}
-    CreateBitmapScaler*: proc(self: ptr IWICImagingFactory, ppIBitmapScaler: ptr ptr IWICBitmapScaler): HRESULT {.stdcall.}
-    CreateBitmapClipper*: proc(self: ptr IWICImagingFactory, ppIBitmapClipper: ptr ptr IWICBitmapClipper): HRESULT {.stdcall.}
-    CreateBitmapFlipRotator*: proc(self: ptr IWICImagingFactory, ppIBitmapFlipRotator: ptr ptr IWICBitmapFlipRotator): HRESULT {.stdcall.}
-    CreateStream*: proc(self: ptr IWICImagingFactory, ppIWICStream: ptr ptr IWICStream): HRESULT {.stdcall.}
-    CreateColorContext*: proc(self: ptr IWICImagingFactory, ppIWICColorContext: ptr ptr IWICColorContext): HRESULT {.stdcall.}
-    CreateColorTransformer*: proc(self: ptr IWICImagingFactory, ppIWICColorTransform: ptr ptr IWICColorTransform): HRESULT {.stdcall.}
-    CreateBitmap*: proc(self: ptr IWICImagingFactory, uiWidth: UINT, uiHeight: UINT, pixelFormat: REFWICPixelFormatGUID, option: WICBitmapCreateCacheOption, ppIBitmap: ptr ptr IWICBitmap): HRESULT {.stdcall.}
-    CreateBitmapFromSource*: proc(self: ptr IWICImagingFactory, piBitmapSource: ptr IWICBitmapSource, option: WICBitmapCreateCacheOption, ppIBitmap: ptr ptr IWICBitmap): HRESULT {.stdcall.}
-    CreateBitmapFromSourceRect*: proc(self: ptr IWICImagingFactory, piBitmapSource: ptr IWICBitmapSource, x: UINT, y: UINT, width: UINT, height: UINT, ppIBitmap: ptr ptr IWICBitmap): HRESULT {.stdcall.}
-    CreateBitmapFromMemory*: proc(self: ptr IWICImagingFactory, uiWidth: UINT, uiHeight: UINT, pixelFormat: REFWICPixelFormatGUID, cbStride: UINT, cbBufferSize: UINT, pbBuffer: ptr BYTE, ppIBitmap: ptr ptr IWICBitmap): HRESULT {.stdcall.}
-    CreateBitmapFromHBITMAP*: proc(self: ptr IWICImagingFactory, hBitmap: HBITMAP, hPalette: HPALETTE, options: WICBitmapAlphaChannelOption, ppIBitmap: ptr ptr IWICBitmap): HRESULT {.stdcall.}
-    CreateBitmapFromHICON*: proc(self: ptr IWICImagingFactory, hIcon: HICON, ppIBitmap: ptr ptr IWICBitmap): HRESULT {.stdcall.}
-    CreateComponentEnumerator*: proc(self: ptr IWICImagingFactory, componentTypes: DWORD, options: DWORD, ppIEnumUnknown: ptr ptr IEnumUnknown): HRESULT {.stdcall.}
-    CreateFastMetadataEncoderFromDecoder*: proc(self: ptr IWICImagingFactory, pIDecoder: ptr IWICBitmapDecoder, ppIFastEncoder: ptr ptr IWICFastMetadataEncoder): HRESULT {.stdcall.}
-    CreateFastMetadataEncoderFromFrameDecode*: proc(self: ptr IWICImagingFactory, pIFrameDecoder: ptr IWICBitmapFrameDecode, ppIFastEncoder: ptr ptr IWICFastMetadataEncoder): HRESULT {.stdcall.}
-    CreateQueryWriter*: proc(self: ptr IWICImagingFactory, guidMetadataFormat: REFGUID, pguidVendor: ptr GUID, ppIQueryWriter: ptr ptr IWICMetadataQueryWriter): HRESULT {.stdcall.}
-    CreateQueryWriterFromReader*: proc(self: ptr IWICImagingFactory, pIQueryReader: ptr IWICMetadataQueryReader, pguidVendor: ptr GUID, ppIQueryWriter: ptr ptr IWICMetadataQueryWriter): HRESULT {.stdcall.}
+    CreateDecoderFromFilename*: proc(
+      self: ptr IWICImagingFactory,
+      wzFilename: LPCWSTR,
+      pguidVendor: ptr GUID,
+      dwDesiredAccess: DWORD,
+      metadataOptions: WICDecodeOptions,
+      ppIDecoder: ptr ptr IWICBitmapDecoder,
+    ): HRESULT {.stdcall.}
+    CreateDecoderFromStream*: proc(
+      self: ptr IWICImagingFactory,
+      pIStream: ptr IStream,
+      pguidVendor: ptr GUID,
+      metadataOptions: WICDecodeOptions,
+      ppIDecoder: ptr ptr IWICBitmapDecoder,
+    ): HRESULT {.stdcall.}
+    CreateDecoderFromFileHandle*: proc(
+      self: ptr IWICImagingFactory,
+      hFile: ULONG_PTR,
+      pguidVendor: ptr GUID,
+      metadataOptions: WICDecodeOptions,
+      ppIDecoder: ptr ptr IWICBitmapDecoder,
+    ): HRESULT {.stdcall.}
+    CreateComponentInfo*: proc(
+      self: ptr IWICImagingFactory,
+      clsidComponent: REFCLSID,
+      ppIInfo: ptr ptr IWICComponentInfo,
+    ): HRESULT {.stdcall.}
+    CreateDecoder*: proc(
+      self: ptr IWICImagingFactory,
+      guidContainerFormat: REFGUID,
+      pguidVendor: ptr GUID,
+      ppIDecoder: ptr ptr IWICBitmapDecoder,
+    ): HRESULT {.stdcall.}
+    CreateEncoder*: proc(
+      self: ptr IWICImagingFactory,
+      guidContainerFormat: REFGUID,
+      pguidVendor: ptr GUID,
+      ppIEncoder: ptr ptr IWICBitmapEncoder,
+    ): HRESULT {.stdcall.}
+    CreatePalette*: proc(
+      self: ptr IWICImagingFactory, ppIPalette: ptr ptr IWICPalette
+    ): HRESULT {.stdcall.}
+    CreateFormatConverter*: proc(
+      self: ptr IWICImagingFactory, ppIFormatConverter: ptr ptr IWICFormatConverter
+    ): HRESULT {.stdcall.}
+    CreateBitmapScaler*: proc(
+      self: ptr IWICImagingFactory, ppIBitmapScaler: ptr ptr IWICBitmapScaler
+    ): HRESULT {.stdcall.}
+    CreateBitmapClipper*: proc(
+      self: ptr IWICImagingFactory, ppIBitmapClipper: ptr ptr IWICBitmapClipper
+    ): HRESULT {.stdcall.}
+    CreateBitmapFlipRotator*: proc(
+      self: ptr IWICImagingFactory, ppIBitmapFlipRotator: ptr ptr IWICBitmapFlipRotator
+    ): HRESULT {.stdcall.}
+    CreateStream*: proc(
+      self: ptr IWICImagingFactory, ppIWICStream: ptr ptr IWICStream
+    ): HRESULT {.stdcall.}
+    CreateColorContext*: proc(
+      self: ptr IWICImagingFactory, ppIWICColorContext: ptr ptr IWICColorContext
+    ): HRESULT {.stdcall.}
+    CreateColorTransformer*: proc(
+      self: ptr IWICImagingFactory, ppIWICColorTransform: ptr ptr IWICColorTransform
+    ): HRESULT {.stdcall.}
+    CreateBitmap*: proc(
+      self: ptr IWICImagingFactory,
+      uiWidth: UINT,
+      uiHeight: UINT,
+      pixelFormat: REFWICPixelFormatGUID,
+      option: WICBitmapCreateCacheOption,
+      ppIBitmap: ptr ptr IWICBitmap,
+    ): HRESULT {.stdcall.}
+    CreateBitmapFromSource*: proc(
+      self: ptr IWICImagingFactory,
+      piBitmapSource: ptr IWICBitmapSource,
+      option: WICBitmapCreateCacheOption,
+      ppIBitmap: ptr ptr IWICBitmap,
+    ): HRESULT {.stdcall.}
+    CreateBitmapFromSourceRect*: proc(
+      self: ptr IWICImagingFactory,
+      piBitmapSource: ptr IWICBitmapSource,
+      x: UINT,
+      y: UINT,
+      width: UINT,
+      height: UINT,
+      ppIBitmap: ptr ptr IWICBitmap,
+    ): HRESULT {.stdcall.}
+    CreateBitmapFromMemory*: proc(
+      self: ptr IWICImagingFactory,
+      uiWidth: UINT,
+      uiHeight: UINT,
+      pixelFormat: REFWICPixelFormatGUID,
+      cbStride: UINT,
+      cbBufferSize: UINT,
+      pbBuffer: ptr BYTE,
+      ppIBitmap: ptr ptr IWICBitmap,
+    ): HRESULT {.stdcall.}
+    CreateBitmapFromHBITMAP*: proc(
+      self: ptr IWICImagingFactory,
+      hBitmap: HBITMAP,
+      hPalette: HPALETTE,
+      options: WICBitmapAlphaChannelOption,
+      ppIBitmap: ptr ptr IWICBitmap,
+    ): HRESULT {.stdcall.}
+    CreateBitmapFromHICON*: proc(
+      self: ptr IWICImagingFactory, hIcon: HICON, ppIBitmap: ptr ptr IWICBitmap
+    ): HRESULT {.stdcall.}
+    CreateComponentEnumerator*: proc(
+      self: ptr IWICImagingFactory,
+      componentTypes: DWORD,
+      options: DWORD,
+      ppIEnumUnknown: ptr ptr IEnumUnknown,
+    ): HRESULT {.stdcall.}
+    CreateFastMetadataEncoderFromDecoder*: proc(
+      self: ptr IWICImagingFactory,
+      pIDecoder: ptr IWICBitmapDecoder,
+      ppIFastEncoder: ptr ptr IWICFastMetadataEncoder,
+    ): HRESULT {.stdcall.}
+    CreateFastMetadataEncoderFromFrameDecode*: proc(
+      self: ptr IWICImagingFactory,
+      pIFrameDecoder: ptr IWICBitmapFrameDecode,
+      ppIFastEncoder: ptr ptr IWICFastMetadataEncoder,
+    ): HRESULT {.stdcall.}
+    CreateQueryWriter*: proc(
+      self: ptr IWICImagingFactory,
+      guidMetadataFormat: REFGUID,
+      pguidVendor: ptr GUID,
+      ppIQueryWriter: ptr ptr IWICMetadataQueryWriter,
+    ): HRESULT {.stdcall.}
+    CreateQueryWriterFromReader*: proc(
+      self: ptr IWICImagingFactory,
+      pIQueryReader: ptr IWICMetadataQueryReader,
+      pguidVendor: ptr GUID,
+      ppIQueryWriter: ptr ptr IWICMetadataQueryWriter,
+    ): HRESULT {.stdcall.}
+
   IWICEnumMetadataItem* {.pure.} = object
     lpVtbl*: ptr IWICEnumMetadataItemVtbl
+
   IWICEnumMetadataItemVtbl* {.pure, inheritable.} = object of IUnknownVtbl
-    Next*: proc(self: ptr IWICEnumMetadataItem, celt: ULONG, rgeltSchema: ptr PROPVARIANT, rgeltId: ptr PROPVARIANT, rgeltValue: ptr PROPVARIANT, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
+    Next*: proc(
+      self: ptr IWICEnumMetadataItem,
+      celt: ULONG,
+      rgeltSchema: ptr PROPVARIANT,
+      rgeltId: ptr PROPVARIANT,
+      rgeltValue: ptr PROPVARIANT,
+      pceltFetched: ptr ULONG,
+    ): HRESULT {.stdcall.}
     Skip*: proc(self: ptr IWICEnumMetadataItem, celt: ULONG): HRESULT {.stdcall.}
     Reset*: proc(self: ptr IWICEnumMetadataItem): HRESULT {.stdcall.}
-    Clone*: proc(self: ptr IWICEnumMetadataItem, ppIEnumMetadataItem: ptr ptr IWICEnumMetadataItem): HRESULT {.stdcall.}
-proc InitializeFromFilename*(self: ptr IWICColorContext, wzFilename: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeFromFilename(self, wzFilename)
-proc InitializeFromMemory*(self: ptr IWICColorContext, pbBuffer: ptr BYTE, cbBufferSize: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeFromMemory(self, pbBuffer, cbBufferSize)
-proc InitializeFromExifColorSpace*(self: ptr IWICColorContext, value: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeFromExifColorSpace(self, value)
-proc GetType*(self: ptr IWICColorContext, pType: ptr WICColorContextType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetType(self, pType)
-proc GetProfileBytes*(self: ptr IWICColorContext, cbBuffer: UINT, pbBuffer: ptr BYTE, pcbActual: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProfileBytes(self, cbBuffer, pbBuffer, pcbActual)
-proc GetExifColorSpace*(self: ptr IWICColorContext, pValue: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetExifColorSpace(self, pValue)
-proc GetSize*(self: ptr IWICBitmapSource, puiWidth: ptr UINT, puiHeight: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSize(self, puiWidth, puiHeight)
-proc GetPixelFormat*(self: ptr IWICBitmapSource, pPixelFormat: ptr WICPixelFormatGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPixelFormat(self, pPixelFormat)
-proc GetResolution*(self: ptr IWICBitmapSource, pDpiX: ptr float64, pDpiY: ptr float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetResolution(self, pDpiX, pDpiY)
-proc CopyPalette*(self: ptr IWICBitmapSource, pIPalette: ptr IWICPalette): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyPalette(self, pIPalette)
-proc CopyPixels*(self: ptr IWICBitmapSource, prc: ptr WICRect, cbStride: UINT, cbBufferSize: UINT, pbBuffer: ptr BYTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyPixels(self, prc, cbStride, cbBufferSize, pbBuffer)
-proc GetSize*(self: ptr IWICBitmapLock, pWidth: ptr UINT, pHeight: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSize(self, pWidth, pHeight)
-proc GetStride*(self: ptr IWICBitmapLock, pcbStride: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetStride(self, pcbStride)
-proc GetDataPointer*(self: ptr IWICBitmapLock, pcbBufferSize: ptr UINT, ppbData: ptr ptr BYTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDataPointer(self, pcbBufferSize, ppbData)
-proc GetPixelFormat*(self: ptr IWICBitmapLock, pPixelFormat: ptr WICPixelFormatGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPixelFormat(self, pPixelFormat)
-proc Initialize*(self: ptr IWICBitmapFlipRotator, pISource: ptr IWICBitmapSource, options: WICBitmapTransformOptions): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pISource, options)
-proc Lock*(self: ptr IWICBitmap, prcLock: ptr WICRect, flags: DWORD, ppILock: ptr ptr IWICBitmapLock): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Lock(self, prcLock, flags, ppILock)
-proc SetPalette*(self: ptr IWICBitmap, pIPalette: ptr IWICPalette): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPalette(self, pIPalette)
-proc SetResolution*(self: ptr IWICBitmap, dpiX: float64, dpiY: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetResolution(self, dpiX, dpiY)
-proc InitializePredefined*(self: ptr IWICPalette, ePaletteType: WICBitmapPaletteType, fAddTransparentColor: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializePredefined(self, ePaletteType, fAddTransparentColor)
-proc InitializeCustom*(self: ptr IWICPalette, pColors: ptr WICColor, colorCount: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeCustom(self, pColors, colorCount)
-proc InitializeFromBitmap*(self: ptr IWICPalette, pISurface: ptr IWICBitmapSource, colorCount: UINT, fAddTransparentColor: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeFromBitmap(self, pISurface, colorCount, fAddTransparentColor)
-proc InitializeFromPalette*(self: ptr IWICPalette, pIPalette: ptr IWICPalette): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeFromPalette(self, pIPalette)
-proc GetType*(self: ptr IWICPalette, pePaletteType: ptr WICBitmapPaletteType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetType(self, pePaletteType)
-proc GetColorCount*(self: ptr IWICPalette, pcCount: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColorCount(self, pcCount)
-proc GetColors*(self: ptr IWICPalette, colorCount: UINT, pColors: ptr WICColor, pcActualColors: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColors(self, colorCount, pColors, pcActualColors)
-proc IsBlackWhite*(self: ptr IWICPalette, pfIsBlackWhite: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsBlackWhite(self, pfIsBlackWhite)
-proc IsGrayscale*(self: ptr IWICPalette, pfIsGrayscale: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsGrayscale(self, pfIsGrayscale)
-proc HasAlpha*(self: ptr IWICPalette, pfHasAlpha: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HasAlpha(self, pfHasAlpha)
-proc GetComponentType*(self: ptr IWICComponentInfo, pType: ptr WICComponentType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetComponentType(self, pType)
-proc GetCLSID*(self: ptr IWICComponentInfo, pclsid: ptr CLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCLSID(self, pclsid)
-proc GetSigningStatus*(self: ptr IWICComponentInfo, pStatus: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSigningStatus(self, pStatus)
-proc GetAuthor*(self: ptr IWICComponentInfo, cchAuthor: UINT, wzAuthor: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAuthor(self, cchAuthor, wzAuthor, pcchActual)
-proc GetVendorGUID*(self: ptr IWICComponentInfo, pguidVendor: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetVendorGUID(self, pguidVendor)
-proc GetVersion*(self: ptr IWICComponentInfo, cchVersion: UINT, wzVersion: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetVersion(self, cchVersion, wzVersion, pcchActual)
-proc GetSpecVersion*(self: ptr IWICComponentInfo, cchSpecVersion: UINT, wzSpecVersion: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSpecVersion(self, cchSpecVersion, wzSpecVersion, pcchActual)
-proc GetFriendlyName*(self: ptr IWICComponentInfo, cchFriendlyName: UINT, wzFriendlyName: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFriendlyName(self, cchFriendlyName, wzFriendlyName, pcchActual)
-proc GetContainerFormat*(self: ptr IWICMetadataQueryReader, pguidContainerFormat: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetContainerFormat(self, pguidContainerFormat)
-proc GetLocation*(self: ptr IWICMetadataQueryReader, cchMaxLength: UINT, wzNamespace: ptr WCHAR, pcchActualLength: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLocation(self, cchMaxLength, wzNamespace, pcchActualLength)
-proc GetMetadataByName*(self: ptr IWICMetadataQueryReader, wzName: LPCWSTR, pvarValue: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMetadataByName(self, wzName, pvarValue)
-proc GetEnumerator*(self: ptr IWICMetadataQueryReader, ppIEnumString: ptr ptr IEnumString): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEnumerator(self, ppIEnumString)
-proc SetMetadataByName*(self: ptr IWICMetadataQueryWriter, wzName: LPCWSTR, pvarValue: ptr PROPVARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMetadataByName(self, wzName, pvarValue)
-proc RemoveMetadataByName*(self: ptr IWICMetadataQueryWriter, wzName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveMetadataByName(self, wzName)
-proc GetMetadataQueryReader*(self: ptr IWICBitmapFrameDecode, ppIMetadataQueryReader: ptr ptr IWICMetadataQueryReader): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMetadataQueryReader(self, ppIMetadataQueryReader)
-proc GetColorContexts*(self: ptr IWICBitmapFrameDecode, cCount: UINT, ppIColorContexts: ptr ptr IWICColorContext, pcActualCount: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColorContexts(self, cCount, ppIColorContexts, pcActualCount)
-proc GetThumbnail*(self: ptr IWICBitmapFrameDecode, ppIThumbnail: ptr ptr IWICBitmapSource): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetThumbnail(self, ppIThumbnail)
-proc GetFormatGUID*(self: ptr IWICPixelFormatInfo, pFormat: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFormatGUID(self, pFormat)
-proc GetColorContext*(self: ptr IWICPixelFormatInfo, ppIColorContext: ptr ptr IWICColorContext): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColorContext(self, ppIColorContext)
-proc GetBitsPerPixel*(self: ptr IWICPixelFormatInfo, puiBitsPerPixel: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBitsPerPixel(self, puiBitsPerPixel)
-proc GetChannelCount*(self: ptr IWICPixelFormatInfo, puiChannelCount: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetChannelCount(self, puiChannelCount)
-proc GetChannelMask*(self: ptr IWICPixelFormatInfo, uiChannelIndex: UINT, cbMaskBuffer: UINT, pbMaskBuffer: ptr BYTE, pcbActual: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetChannelMask(self, uiChannelIndex, cbMaskBuffer, pbMaskBuffer, pcbActual)
-proc SupportsTransparency*(self: ptr IWICPixelFormatInfo2, pfSupportsTransparency: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SupportsTransparency(self, pfSupportsTransparency)
-proc GetNumericRepresentation*(self: ptr IWICPixelFormatInfo2, pNumericRepresentation: ptr WICPixelFormatNumericRepresentation): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNumericRepresentation(self, pNumericRepresentation)
-proc GetContainerFormat*(self: ptr IWICBitmapCodecInfo, pguidContainerFormat: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetContainerFormat(self, pguidContainerFormat)
-proc GetPixelFormats*(self: ptr IWICBitmapCodecInfo, cFormats: UINT, pguidPixelFormats: ptr GUID, pcActual: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPixelFormats(self, cFormats, pguidPixelFormats, pcActual)
-proc GetColorManagementVersion*(self: ptr IWICBitmapCodecInfo, cchColorManagementVersion: UINT, wzColorManagementVersion: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColorManagementVersion(self, cchColorManagementVersion, wzColorManagementVersion, pcchActual)
-proc GetDeviceManufacturer*(self: ptr IWICBitmapCodecInfo, cchDeviceManufacturer: UINT, wzDeviceManufacturer: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDeviceManufacturer(self, cchDeviceManufacturer, wzDeviceManufacturer, pcchActual)
-proc GetDeviceModels*(self: ptr IWICBitmapCodecInfo, cchDeviceModels: UINT, wzDeviceModels: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDeviceModels(self, cchDeviceModels, wzDeviceModels, pcchActual)
-proc GetMimeTypes*(self: ptr IWICBitmapCodecInfo, cchMimeTypes: UINT, wzMimeTypes: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMimeTypes(self, cchMimeTypes, wzMimeTypes, pcchActual)
-proc GetFileExtensions*(self: ptr IWICBitmapCodecInfo, cchFileExtensions: UINT, wzFileExtensions: ptr WCHAR, pcchActual: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFileExtensions(self, cchFileExtensions, wzFileExtensions, pcchActual)
-proc DoesSupportAnimation*(self: ptr IWICBitmapCodecInfo, pfSupportAnimation: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoesSupportAnimation(self, pfSupportAnimation)
-proc DoesSupportChromaKey*(self: ptr IWICBitmapCodecInfo, pfSupportChromaKey: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoesSupportChromaKey(self, pfSupportChromaKey)
-proc DoesSupportLossless*(self: ptr IWICBitmapCodecInfo, pfSupportLossless: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoesSupportLossless(self, pfSupportLossless)
-proc DoesSupportMultiframe*(self: ptr IWICBitmapCodecInfo, pfSupportMultiframe: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoesSupportMultiframe(self, pfSupportMultiframe)
-proc MatchesMimeType*(self: ptr IWICBitmapCodecInfo, wzMimeType: LPCWSTR, pfMatches: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MatchesMimeType(self, wzMimeType, pfMatches)
-proc GetPatterns*(self: ptr IWICBitmapDecoderInfo, cbSizePatterns: UINT, pPatterns: ptr WICBitmapPattern, pcPatterns: ptr UINT, pcbPatternsActual: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPatterns(self, cbSizePatterns, pPatterns, pcPatterns, pcbPatternsActual)
-proc MatchesPattern*(self: ptr IWICBitmapDecoderInfo, pIStream: ptr IStream, pfMatches: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MatchesPattern(self, pIStream, pfMatches)
-proc CreateInstance*(self: ptr IWICBitmapDecoderInfo, ppIBitmapDecoder: ptr ptr IWICBitmapDecoder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstance(self, ppIBitmapDecoder)
-proc QueryCapability*(self: ptr IWICBitmapDecoder, pIStream: ptr IStream, pdwCapability: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryCapability(self, pIStream, pdwCapability)
-proc Initialize*(self: ptr IWICBitmapDecoder, pIStream: ptr IStream, cacheOptions: WICDecodeOptions): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pIStream, cacheOptions)
-proc GetContainerFormat*(self: ptr IWICBitmapDecoder, pguidContainerFormat: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetContainerFormat(self, pguidContainerFormat)
-proc GetDecoderInfo*(self: ptr IWICBitmapDecoder, ppIDecoderInfo: ptr ptr IWICBitmapDecoderInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDecoderInfo(self, ppIDecoderInfo)
-proc CopyPalette*(self: ptr IWICBitmapDecoder, pIPalette: ptr IWICPalette): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyPalette(self, pIPalette)
-proc GetMetadataQueryReader*(self: ptr IWICBitmapDecoder, ppIMetadataQueryReader: ptr ptr IWICMetadataQueryReader): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMetadataQueryReader(self, ppIMetadataQueryReader)
-proc GetPreview*(self: ptr IWICBitmapDecoder, ppIBitmapSource: ptr ptr IWICBitmapSource): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPreview(self, ppIBitmapSource)
-proc GetColorContexts*(self: ptr IWICBitmapDecoder, cCount: UINT, ppIColorContexts: ptr ptr IWICColorContext, pcActualCount: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetColorContexts(self, cCount, ppIColorContexts, pcActualCount)
-proc GetThumbnail*(self: ptr IWICBitmapDecoder, ppIThumbnail: ptr ptr IWICBitmapSource): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetThumbnail(self, ppIThumbnail)
-proc GetFrameCount*(self: ptr IWICBitmapDecoder, pCount: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFrameCount(self, pCount)
-proc GetFrame*(self: ptr IWICBitmapDecoder, index: UINT, ppIBitmapFrame: ptr ptr IWICBitmapFrameDecode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFrame(self, index, ppIBitmapFrame)
-proc Initialize*(self: ptr IWICBitmapFrameEncode, pIEncoderOptions: ptr IPropertyBag2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pIEncoderOptions)
-proc SetSize*(self: ptr IWICBitmapFrameEncode, uiWidth: UINT, uiHeight: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSize(self, uiWidth, uiHeight)
-proc SetResolution*(self: ptr IWICBitmapFrameEncode, dpiX: float64, dpiY: float64): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetResolution(self, dpiX, dpiY)
-proc SetPixelFormat*(self: ptr IWICBitmapFrameEncode, pPixelFormat: ptr WICPixelFormatGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPixelFormat(self, pPixelFormat)
-proc SetColorContexts*(self: ptr IWICBitmapFrameEncode, cCount: UINT, ppIColorContext: ptr ptr IWICColorContext): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetColorContexts(self, cCount, ppIColorContext)
-proc SetPalette*(self: ptr IWICBitmapFrameEncode, pIPalette: ptr IWICPalette): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPalette(self, pIPalette)
-proc SetThumbnail*(self: ptr IWICBitmapFrameEncode, pIThumbnail: ptr IWICBitmapSource): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetThumbnail(self, pIThumbnail)
-proc WritePixels*(self: ptr IWICBitmapFrameEncode, lineCount: UINT, cbStride: UINT, cbBufferSize: UINT, pbPixels: ptr BYTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WritePixels(self, lineCount, cbStride, cbBufferSize, pbPixels)
-proc WriteSource*(self: ptr IWICBitmapFrameEncode, pIBitmapSource: ptr IWICBitmapSource, prc: ptr WICRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.WriteSource(self, pIBitmapSource, prc)
-proc Commit*(self: ptr IWICBitmapFrameEncode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Commit(self)
-proc GetMetadataQueryWriter*(self: ptr IWICBitmapFrameEncode, ppIMetadataQueryWriter: ptr ptr IWICMetadataQueryWriter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMetadataQueryWriter(self, ppIMetadataQueryWriter)
-proc CreateInstance*(self: ptr IWICBitmapEncoderInfo, ppIBitmapEncoder: ptr ptr IWICBitmapEncoder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstance(self, ppIBitmapEncoder)
-proc Initialize*(self: ptr IWICBitmapEncoder, pIStream: ptr IStream, cacheOption: WICBitmapEncoderCacheOption): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pIStream, cacheOption)
-proc GetContainerFormat*(self: ptr IWICBitmapEncoder, pguidContainerFormat: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetContainerFormat(self, pguidContainerFormat)
-proc GetEncoderInfo*(self: ptr IWICBitmapEncoder, ppIEncoderInfo: ptr ptr IWICBitmapEncoderInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEncoderInfo(self, ppIEncoderInfo)
-proc SetColorContexts*(self: ptr IWICBitmapEncoder, cCount: UINT, ppIColorContext: ptr ptr IWICColorContext): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetColorContexts(self, cCount, ppIColorContext)
-proc SetPalette*(self: ptr IWICBitmapEncoder, pIPalette: ptr IWICPalette): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPalette(self, pIPalette)
-proc SetThumbnail*(self: ptr IWICBitmapEncoder, pIThumbnail: ptr IWICBitmapSource): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetThumbnail(self, pIThumbnail)
-proc SetPreview*(self: ptr IWICBitmapEncoder, pIPreview: ptr IWICBitmapSource): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetPreview(self, pIPreview)
-proc CreateNewFrame*(self: ptr IWICBitmapEncoder, ppIFrameEncode: ptr ptr IWICBitmapFrameEncode, ppIEncoderOptions: ptr ptr IPropertyBag2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateNewFrame(self, ppIFrameEncode, ppIEncoderOptions)
-proc Commit*(self: ptr IWICBitmapEncoder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Commit(self)
-proc GetMetadataQueryWriter*(self: ptr IWICBitmapEncoder, ppIMetadataQueryWriter: ptr ptr IWICMetadataQueryWriter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMetadataQueryWriter(self, ppIMetadataQueryWriter)
-proc Initialize*(self: ptr IWICFormatConverter, pISource: ptr IWICBitmapSource, dstFormat: REFWICPixelFormatGUID, dither: WICBitmapDitherType, pIPalette: ptr IWICPalette, alphaThresholdPercent: float64, paletteTranslate: WICBitmapPaletteType): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pISource, dstFormat, dither, pIPalette, alphaThresholdPercent, paletteTranslate)
-proc CanConvert*(self: ptr IWICFormatConverter, srcPixelFormat: REFWICPixelFormatGUID, dstPixelFormat: REFWICPixelFormatGUID, pfCanConvert: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CanConvert(self, srcPixelFormat, dstPixelFormat, pfCanConvert)
-proc GetPixelFormats*(self: ptr IWICFormatConverterInfo, cFormats: UINT, pPixelFormatGUIDs: ptr WICPixelFormatGUID, pcActual: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPixelFormats(self, cFormats, pPixelFormatGUIDs, pcActual)
-proc CreateInstance*(self: ptr IWICFormatConverterInfo, ppIConverter: ptr ptr IWICFormatConverter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstance(self, ppIConverter)
-proc InitializeFromIStream*(self: ptr IWICStream, pIStream: ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeFromIStream(self, pIStream)
-proc InitializeFromFilename*(self: ptr IWICStream, wzFileName: LPCWSTR, dwAccessMode: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeFromFilename(self, wzFileName, dwAccessMode)
-proc InitializeFromMemory*(self: ptr IWICStream, pbBuffer: ptr BYTE, cbBufferSize: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeFromMemory(self, pbBuffer, cbBufferSize)
-proc InitializeFromIStreamRegion*(self: ptr IWICStream, pIStream: ptr IStream, ulOffset: ULARGE_INTEGER, ulMaxSize: ULARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitializeFromIStreamRegion(self, pIStream, ulOffset, ulMaxSize)
-proc Initialize*(self: ptr IWICBitmapScaler, pISource: ptr IWICBitmapSource, uiWidth: UINT, uiHeight: UINT, mode: WICBitmapInterpolationMode): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pISource, uiWidth, uiHeight, mode)
-proc Initialize*(self: ptr IWICBitmapClipper, pISource: ptr IWICBitmapSource, prc: ptr WICRect): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pISource, prc)
-proc Initialize*(self: ptr IWICColorTransform, pIBitmapSource: ptr IWICBitmapSource, pIContextSource: ptr IWICColorContext, pIContextDest: ptr IWICColorContext, pixelFmtDest: REFWICPixelFormatGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Initialize(self, pIBitmapSource, pIContextSource, pIContextDest, pixelFmtDest)
-proc Commit*(self: ptr IWICFastMetadataEncoder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Commit(self)
-proc GetMetadataQueryWriter*(self: ptr IWICFastMetadataEncoder, ppIMetadataQueryWriter: ptr ptr IWICMetadataQueryWriter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMetadataQueryWriter(self, ppIMetadataQueryWriter)
-proc CreateDecoderFromFilename*(self: ptr IWICImagingFactory, wzFilename: LPCWSTR, pguidVendor: ptr GUID, dwDesiredAccess: DWORD, metadataOptions: WICDecodeOptions, ppIDecoder: ptr ptr IWICBitmapDecoder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateDecoderFromFilename(self, wzFilename, pguidVendor, dwDesiredAccess, metadataOptions, ppIDecoder)
-proc CreateDecoderFromStream*(self: ptr IWICImagingFactory, pIStream: ptr IStream, pguidVendor: ptr GUID, metadataOptions: WICDecodeOptions, ppIDecoder: ptr ptr IWICBitmapDecoder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateDecoderFromStream(self, pIStream, pguidVendor, metadataOptions, ppIDecoder)
-proc CreateDecoderFromFileHandle*(self: ptr IWICImagingFactory, hFile: ULONG_PTR, pguidVendor: ptr GUID, metadataOptions: WICDecodeOptions, ppIDecoder: ptr ptr IWICBitmapDecoder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateDecoderFromFileHandle(self, hFile, pguidVendor, metadataOptions, ppIDecoder)
-proc CreateComponentInfo*(self: ptr IWICImagingFactory, clsidComponent: REFCLSID, ppIInfo: ptr ptr IWICComponentInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateComponentInfo(self, clsidComponent, ppIInfo)
-proc CreateDecoder*(self: ptr IWICImagingFactory, guidContainerFormat: REFGUID, pguidVendor: ptr GUID, ppIDecoder: ptr ptr IWICBitmapDecoder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateDecoder(self, guidContainerFormat, pguidVendor, ppIDecoder)
-proc CreateEncoder*(self: ptr IWICImagingFactory, guidContainerFormat: REFGUID, pguidVendor: ptr GUID, ppIEncoder: ptr ptr IWICBitmapEncoder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateEncoder(self, guidContainerFormat, pguidVendor, ppIEncoder)
-proc CreatePalette*(self: ptr IWICImagingFactory, ppIPalette: ptr ptr IWICPalette): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreatePalette(self, ppIPalette)
-proc CreateFormatConverter*(self: ptr IWICImagingFactory, ppIFormatConverter: ptr ptr IWICFormatConverter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateFormatConverter(self, ppIFormatConverter)
-proc CreateBitmapScaler*(self: ptr IWICImagingFactory, ppIBitmapScaler: ptr ptr IWICBitmapScaler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateBitmapScaler(self, ppIBitmapScaler)
-proc CreateBitmapClipper*(self: ptr IWICImagingFactory, ppIBitmapClipper: ptr ptr IWICBitmapClipper): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateBitmapClipper(self, ppIBitmapClipper)
-proc CreateBitmapFlipRotator*(self: ptr IWICImagingFactory, ppIBitmapFlipRotator: ptr ptr IWICBitmapFlipRotator): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateBitmapFlipRotator(self, ppIBitmapFlipRotator)
-proc CreateStream*(self: ptr IWICImagingFactory, ppIWICStream: ptr ptr IWICStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateStream(self, ppIWICStream)
-proc CreateColorContext*(self: ptr IWICImagingFactory, ppIWICColorContext: ptr ptr IWICColorContext): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateColorContext(self, ppIWICColorContext)
-proc CreateColorTransformer*(self: ptr IWICImagingFactory, ppIWICColorTransform: ptr ptr IWICColorTransform): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateColorTransformer(self, ppIWICColorTransform)
-proc CreateBitmap*(self: ptr IWICImagingFactory, uiWidth: UINT, uiHeight: UINT, pixelFormat: REFWICPixelFormatGUID, option: WICBitmapCreateCacheOption, ppIBitmap: ptr ptr IWICBitmap): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateBitmap(self, uiWidth, uiHeight, pixelFormat, option, ppIBitmap)
-proc CreateBitmapFromSource*(self: ptr IWICImagingFactory, piBitmapSource: ptr IWICBitmapSource, option: WICBitmapCreateCacheOption, ppIBitmap: ptr ptr IWICBitmap): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateBitmapFromSource(self, piBitmapSource, option, ppIBitmap)
-proc CreateBitmapFromSourceRect*(self: ptr IWICImagingFactory, piBitmapSource: ptr IWICBitmapSource, x: UINT, y: UINT, width: UINT, height: UINT, ppIBitmap: ptr ptr IWICBitmap): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateBitmapFromSourceRect(self, piBitmapSource, x, y, width, height, ppIBitmap)
-proc CreateBitmapFromMemory*(self: ptr IWICImagingFactory, uiWidth: UINT, uiHeight: UINT, pixelFormat: REFWICPixelFormatGUID, cbStride: UINT, cbBufferSize: UINT, pbBuffer: ptr BYTE, ppIBitmap: ptr ptr IWICBitmap): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateBitmapFromMemory(self, uiWidth, uiHeight, pixelFormat, cbStride, cbBufferSize, pbBuffer, ppIBitmap)
-proc CreateBitmapFromHBITMAP*(self: ptr IWICImagingFactory, hBitmap: HBITMAP, hPalette: HPALETTE, options: WICBitmapAlphaChannelOption, ppIBitmap: ptr ptr IWICBitmap): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateBitmapFromHBITMAP(self, hBitmap, hPalette, options, ppIBitmap)
-proc CreateBitmapFromHICON*(self: ptr IWICImagingFactory, hIcon: HICON, ppIBitmap: ptr ptr IWICBitmap): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateBitmapFromHICON(self, hIcon, ppIBitmap)
-proc CreateComponentEnumerator*(self: ptr IWICImagingFactory, componentTypes: DWORD, options: DWORD, ppIEnumUnknown: ptr ptr IEnumUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateComponentEnumerator(self, componentTypes, options, ppIEnumUnknown)
-proc CreateFastMetadataEncoderFromDecoder*(self: ptr IWICImagingFactory, pIDecoder: ptr IWICBitmapDecoder, ppIFastEncoder: ptr ptr IWICFastMetadataEncoder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateFastMetadataEncoderFromDecoder(self, pIDecoder, ppIFastEncoder)
-proc CreateFastMetadataEncoderFromFrameDecode*(self: ptr IWICImagingFactory, pIFrameDecoder: ptr IWICBitmapFrameDecode, ppIFastEncoder: ptr ptr IWICFastMetadataEncoder): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateFastMetadataEncoderFromFrameDecode(self, pIFrameDecoder, ppIFastEncoder)
-proc CreateQueryWriter*(self: ptr IWICImagingFactory, guidMetadataFormat: REFGUID, pguidVendor: ptr GUID, ppIQueryWriter: ptr ptr IWICMetadataQueryWriter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateQueryWriter(self, guidMetadataFormat, pguidVendor, ppIQueryWriter)
-proc CreateQueryWriterFromReader*(self: ptr IWICImagingFactory, pIQueryReader: ptr IWICMetadataQueryReader, pguidVendor: ptr GUID, ppIQueryWriter: ptr ptr IWICMetadataQueryWriter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateQueryWriterFromReader(self, pIQueryReader, pguidVendor, ppIQueryWriter)
-proc Next*(self: ptr IWICEnumMetadataItem, celt: ULONG, rgeltSchema: ptr PROPVARIANT, rgeltId: ptr PROPVARIANT, rgeltValue: ptr PROPVARIANT, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgeltSchema, rgeltId, rgeltValue, pceltFetched)
-proc Skip*(self: ptr IWICEnumMetadataItem, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
-proc Reset*(self: ptr IWICEnumMetadataItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
-proc Clone*(self: ptr IWICEnumMetadataItem, ppIEnumMetadataItem: ptr ptr IWICEnumMetadataItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppIEnumMetadataItem)
-converter winimConverterIWICColorContextToIUnknown*(x: ptr IWICColorContext): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICBitmapSourceToIUnknown*(x: ptr IWICBitmapSource): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICBitmapLockToIUnknown*(x: ptr IWICBitmapLock): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICBitmapFlipRotatorToIWICBitmapSource*(x: ptr IWICBitmapFlipRotator): ptr IWICBitmapSource = cast[ptr IWICBitmapSource](x)
-converter winimConverterIWICBitmapFlipRotatorToIUnknown*(x: ptr IWICBitmapFlipRotator): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICBitmapToIWICBitmapSource*(x: ptr IWICBitmap): ptr IWICBitmapSource = cast[ptr IWICBitmapSource](x)
-converter winimConverterIWICBitmapToIUnknown*(x: ptr IWICBitmap): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICPaletteToIUnknown*(x: ptr IWICPalette): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICComponentInfoToIUnknown*(x: ptr IWICComponentInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICMetadataQueryReaderToIUnknown*(x: ptr IWICMetadataQueryReader): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICMetadataQueryWriterToIWICMetadataQueryReader*(x: ptr IWICMetadataQueryWriter): ptr IWICMetadataQueryReader = cast[ptr IWICMetadataQueryReader](x)
-converter winimConverterIWICMetadataQueryWriterToIUnknown*(x: ptr IWICMetadataQueryWriter): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICBitmapFrameDecodeToIWICBitmapSource*(x: ptr IWICBitmapFrameDecode): ptr IWICBitmapSource = cast[ptr IWICBitmapSource](x)
-converter winimConverterIWICBitmapFrameDecodeToIUnknown*(x: ptr IWICBitmapFrameDecode): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICPixelFormatInfoToIWICComponentInfo*(x: ptr IWICPixelFormatInfo): ptr IWICComponentInfo = cast[ptr IWICComponentInfo](x)
-converter winimConverterIWICPixelFormatInfoToIUnknown*(x: ptr IWICPixelFormatInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICPixelFormatInfo2ToIWICPixelFormatInfo*(x: ptr IWICPixelFormatInfo2): ptr IWICPixelFormatInfo = cast[ptr IWICPixelFormatInfo](x)
-converter winimConverterIWICPixelFormatInfo2ToIWICComponentInfo*(x: ptr IWICPixelFormatInfo2): ptr IWICComponentInfo = cast[ptr IWICComponentInfo](x)
-converter winimConverterIWICPixelFormatInfo2ToIUnknown*(x: ptr IWICPixelFormatInfo2): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICBitmapCodecInfoToIWICComponentInfo*(x: ptr IWICBitmapCodecInfo): ptr IWICComponentInfo = cast[ptr IWICComponentInfo](x)
-converter winimConverterIWICBitmapCodecInfoToIUnknown*(x: ptr IWICBitmapCodecInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICBitmapDecoderInfoToIWICBitmapCodecInfo*(x: ptr IWICBitmapDecoderInfo): ptr IWICBitmapCodecInfo = cast[ptr IWICBitmapCodecInfo](x)
-converter winimConverterIWICBitmapDecoderInfoToIWICComponentInfo*(x: ptr IWICBitmapDecoderInfo): ptr IWICComponentInfo = cast[ptr IWICComponentInfo](x)
-converter winimConverterIWICBitmapDecoderInfoToIUnknown*(x: ptr IWICBitmapDecoderInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICBitmapDecoderToIUnknown*(x: ptr IWICBitmapDecoder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICBitmapFrameEncodeToIUnknown*(x: ptr IWICBitmapFrameEncode): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICBitmapEncoderInfoToIWICBitmapCodecInfo*(x: ptr IWICBitmapEncoderInfo): ptr IWICBitmapCodecInfo = cast[ptr IWICBitmapCodecInfo](x)
-converter winimConverterIWICBitmapEncoderInfoToIWICComponentInfo*(x: ptr IWICBitmapEncoderInfo): ptr IWICComponentInfo = cast[ptr IWICComponentInfo](x)
-converter winimConverterIWICBitmapEncoderInfoToIUnknown*(x: ptr IWICBitmapEncoderInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICBitmapEncoderToIUnknown*(x: ptr IWICBitmapEncoder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICFormatConverterToIWICBitmapSource*(x: ptr IWICFormatConverter): ptr IWICBitmapSource = cast[ptr IWICBitmapSource](x)
-converter winimConverterIWICFormatConverterToIUnknown*(x: ptr IWICFormatConverter): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICFormatConverterInfoToIWICComponentInfo*(x: ptr IWICFormatConverterInfo): ptr IWICComponentInfo = cast[ptr IWICComponentInfo](x)
-converter winimConverterIWICFormatConverterInfoToIUnknown*(x: ptr IWICFormatConverterInfo): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICStreamToIStream*(x: ptr IWICStream): ptr IStream = cast[ptr IStream](x)
-converter winimConverterIWICStreamToISequentialStream*(x: ptr IWICStream): ptr ISequentialStream = cast[ptr ISequentialStream](x)
-converter winimConverterIWICStreamToIUnknown*(x: ptr IWICStream): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICBitmapScalerToIWICBitmapSource*(x: ptr IWICBitmapScaler): ptr IWICBitmapSource = cast[ptr IWICBitmapSource](x)
-converter winimConverterIWICBitmapScalerToIUnknown*(x: ptr IWICBitmapScaler): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICBitmapClipperToIWICBitmapSource*(x: ptr IWICBitmapClipper): ptr IWICBitmapSource = cast[ptr IWICBitmapSource](x)
-converter winimConverterIWICBitmapClipperToIUnknown*(x: ptr IWICBitmapClipper): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICColorTransformToIWICBitmapSource*(x: ptr IWICColorTransform): ptr IWICBitmapSource = cast[ptr IWICBitmapSource](x)
-converter winimConverterIWICColorTransformToIUnknown*(x: ptr IWICColorTransform): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICFastMetadataEncoderToIUnknown*(x: ptr IWICFastMetadataEncoder): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICImagingFactoryToIUnknown*(x: ptr IWICImagingFactory): ptr IUnknown = cast[ptr IUnknown](x)
-converter winimConverterIWICEnumMetadataItemToIUnknown*(x: ptr IWICEnumMetadataItem): ptr IUnknown = cast[ptr IUnknown](x)
+    Clone*: proc(
+      self: ptr IWICEnumMetadataItem, ppIEnumMetadataItem: ptr ptr IWICEnumMetadataItem
+    ): HRESULT {.stdcall.}
+
+proc InitializeFromFilename*(
+    self: ptr IWICColorContext, wzFilename: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeFromFilename(self, wzFilename)
+
+proc InitializeFromMemory*(
+    self: ptr IWICColorContext, pbBuffer: ptr BYTE, cbBufferSize: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeFromMemory(self, pbBuffer, cbBufferSize)
+
+proc InitializeFromExifColorSpace*(
+    self: ptr IWICColorContext, value: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeFromExifColorSpace(self, value)
+
+proc GetType*(
+    self: ptr IWICColorContext, pType: ptr WICColorContextType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetType(self, pType)
+
+proc GetProfileBytes*(
+    self: ptr IWICColorContext, cbBuffer: UINT, pbBuffer: ptr BYTE, pcbActual: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetProfileBytes(self, cbBuffer, pbBuffer, pcbActual)
+
+proc GetExifColorSpace*(
+    self: ptr IWICColorContext, pValue: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetExifColorSpace(self, pValue)
+
+proc GetSize*(
+    self: ptr IWICBitmapSource, puiWidth: ptr UINT, puiHeight: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSize(self, puiWidth, puiHeight)
+
+proc GetPixelFormat*(
+    self: ptr IWICBitmapSource, pPixelFormat: ptr WICPixelFormatGUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPixelFormat(self, pPixelFormat)
+
+proc GetResolution*(
+    self: ptr IWICBitmapSource, pDpiX: ptr float64, pDpiY: ptr float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetResolution(self, pDpiX, pDpiY)
+
+proc CopyPalette*(
+    self: ptr IWICBitmapSource, pIPalette: ptr IWICPalette
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CopyPalette(self, pIPalette)
+
+proc CopyPixels*(
+    self: ptr IWICBitmapSource,
+    prc: ptr WICRect,
+    cbStride: UINT,
+    cbBufferSize: UINT,
+    pbBuffer: ptr BYTE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CopyPixels(self, prc, cbStride, cbBufferSize, pbBuffer)
+
+proc GetSize*(
+    self: ptr IWICBitmapLock, pWidth: ptr UINT, pHeight: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSize(self, pWidth, pHeight)
+
+proc GetStride*(
+    self: ptr IWICBitmapLock, pcbStride: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetStride(self, pcbStride)
+
+proc GetDataPointer*(
+    self: ptr IWICBitmapLock, pcbBufferSize: ptr UINT, ppbData: ptr ptr BYTE
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDataPointer(self, pcbBufferSize, ppbData)
+
+proc GetPixelFormat*(
+    self: ptr IWICBitmapLock, pPixelFormat: ptr WICPixelFormatGUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPixelFormat(self, pPixelFormat)
+
+proc Initialize*(
+    self: ptr IWICBitmapFlipRotator,
+    pISource: ptr IWICBitmapSource,
+    options: WICBitmapTransformOptions,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pISource, options)
+
+proc Lock*(
+    self: ptr IWICBitmap,
+    prcLock: ptr WICRect,
+    flags: DWORD,
+    ppILock: ptr ptr IWICBitmapLock,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Lock(self, prcLock, flags, ppILock)
+
+proc SetPalette*(
+    self: ptr IWICBitmap, pIPalette: ptr IWICPalette
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPalette(self, pIPalette)
+
+proc SetResolution*(
+    self: ptr IWICBitmap, dpiX: float64, dpiY: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetResolution(self, dpiX, dpiY)
+
+proc InitializePredefined*(
+    self: ptr IWICPalette,
+    ePaletteType: WICBitmapPaletteType,
+    fAddTransparentColor: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializePredefined(self, ePaletteType, fAddTransparentColor)
+
+proc InitializeCustom*(
+    self: ptr IWICPalette, pColors: ptr WICColor, colorCount: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeCustom(self, pColors, colorCount)
+
+proc InitializeFromBitmap*(
+    self: ptr IWICPalette,
+    pISurface: ptr IWICBitmapSource,
+    colorCount: UINT,
+    fAddTransparentColor: WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeFromBitmap(self, pISurface, colorCount, fAddTransparentColor)
+
+proc InitializeFromPalette*(
+    self: ptr IWICPalette, pIPalette: ptr IWICPalette
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeFromPalette(self, pIPalette)
+
+proc GetType*(
+    self: ptr IWICPalette, pePaletteType: ptr WICBitmapPaletteType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetType(self, pePaletteType)
+
+proc GetColorCount*(
+    self: ptr IWICPalette, pcCount: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColorCount(self, pcCount)
+
+proc GetColors*(
+    self: ptr IWICPalette,
+    colorCount: UINT,
+    pColors: ptr WICColor,
+    pcActualColors: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColors(self, colorCount, pColors, pcActualColors)
+
+proc IsBlackWhite*(
+    self: ptr IWICPalette, pfIsBlackWhite: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsBlackWhite(self, pfIsBlackWhite)
+
+proc IsGrayscale*(
+    self: ptr IWICPalette, pfIsGrayscale: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.IsGrayscale(self, pfIsGrayscale)
+
+proc HasAlpha*(
+    self: ptr IWICPalette, pfHasAlpha: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.HasAlpha(self, pfHasAlpha)
+
+proc GetComponentType*(
+    self: ptr IWICComponentInfo, pType: ptr WICComponentType
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetComponentType(self, pType)
+
+proc GetCLSID*(
+    self: ptr IWICComponentInfo, pclsid: ptr CLSID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetCLSID(self, pclsid)
+
+proc GetSigningStatus*(
+    self: ptr IWICComponentInfo, pStatus: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSigningStatus(self, pStatus)
+
+proc GetAuthor*(
+    self: ptr IWICComponentInfo,
+    cchAuthor: UINT,
+    wzAuthor: ptr WCHAR,
+    pcchActual: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetAuthor(self, cchAuthor, wzAuthor, pcchActual)
+
+proc GetVendorGUID*(
+    self: ptr IWICComponentInfo, pguidVendor: ptr GUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetVendorGUID(self, pguidVendor)
+
+proc GetVersion*(
+    self: ptr IWICComponentInfo,
+    cchVersion: UINT,
+    wzVersion: ptr WCHAR,
+    pcchActual: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetVersion(self, cchVersion, wzVersion, pcchActual)
+
+proc GetSpecVersion*(
+    self: ptr IWICComponentInfo,
+    cchSpecVersion: UINT,
+    wzSpecVersion: ptr WCHAR,
+    pcchActual: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetSpecVersion(self, cchSpecVersion, wzSpecVersion, pcchActual)
+
+proc GetFriendlyName*(
+    self: ptr IWICComponentInfo,
+    cchFriendlyName: UINT,
+    wzFriendlyName: ptr WCHAR,
+    pcchActual: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFriendlyName(self, cchFriendlyName, wzFriendlyName, pcchActual)
+
+proc GetContainerFormat*(
+    self: ptr IWICMetadataQueryReader, pguidContainerFormat: ptr GUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetContainerFormat(self, pguidContainerFormat)
+
+proc GetLocation*(
+    self: ptr IWICMetadataQueryReader,
+    cchMaxLength: UINT,
+    wzNamespace: ptr WCHAR,
+    pcchActualLength: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetLocation(self, cchMaxLength, wzNamespace, pcchActualLength)
+
+proc GetMetadataByName*(
+    self: ptr IWICMetadataQueryReader, wzName: LPCWSTR, pvarValue: ptr PROPVARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMetadataByName(self, wzName, pvarValue)
+
+proc GetEnumerator*(
+    self: ptr IWICMetadataQueryReader, ppIEnumString: ptr ptr IEnumString
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEnumerator(self, ppIEnumString)
+
+proc SetMetadataByName*(
+    self: ptr IWICMetadataQueryWriter, wzName: LPCWSTR, pvarValue: ptr PROPVARIANT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetMetadataByName(self, wzName, pvarValue)
+
+proc RemoveMetadataByName*(
+    self: ptr IWICMetadataQueryWriter, wzName: LPCWSTR
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.RemoveMetadataByName(self, wzName)
+
+proc GetMetadataQueryReader*(
+    self: ptr IWICBitmapFrameDecode,
+    ppIMetadataQueryReader: ptr ptr IWICMetadataQueryReader,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMetadataQueryReader(self, ppIMetadataQueryReader)
+
+proc GetColorContexts*(
+    self: ptr IWICBitmapFrameDecode,
+    cCount: UINT,
+    ppIColorContexts: ptr ptr IWICColorContext,
+    pcActualCount: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColorContexts(self, cCount, ppIColorContexts, pcActualCount)
+
+proc GetThumbnail*(
+    self: ptr IWICBitmapFrameDecode, ppIThumbnail: ptr ptr IWICBitmapSource
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetThumbnail(self, ppIThumbnail)
+
+proc GetFormatGUID*(
+    self: ptr IWICPixelFormatInfo, pFormat: ptr GUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFormatGUID(self, pFormat)
+
+proc GetColorContext*(
+    self: ptr IWICPixelFormatInfo, ppIColorContext: ptr ptr IWICColorContext
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColorContext(self, ppIColorContext)
+
+proc GetBitsPerPixel*(
+    self: ptr IWICPixelFormatInfo, puiBitsPerPixel: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetBitsPerPixel(self, puiBitsPerPixel)
+
+proc GetChannelCount*(
+    self: ptr IWICPixelFormatInfo, puiChannelCount: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetChannelCount(self, puiChannelCount)
+
+proc GetChannelMask*(
+    self: ptr IWICPixelFormatInfo,
+    uiChannelIndex: UINT,
+    cbMaskBuffer: UINT,
+    pbMaskBuffer: ptr BYTE,
+    pcbActual: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetChannelMask(
+      self, uiChannelIndex, cbMaskBuffer, pbMaskBuffer, pcbActual
+    )
+
+proc SupportsTransparency*(
+    self: ptr IWICPixelFormatInfo2, pfSupportsTransparency: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SupportsTransparency(self, pfSupportsTransparency)
+
+proc GetNumericRepresentation*(
+    self: ptr IWICPixelFormatInfo2,
+    pNumericRepresentation: ptr WICPixelFormatNumericRepresentation,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetNumericRepresentation(self, pNumericRepresentation)
+
+proc GetContainerFormat*(
+    self: ptr IWICBitmapCodecInfo, pguidContainerFormat: ptr GUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetContainerFormat(self, pguidContainerFormat)
+
+proc GetPixelFormats*(
+    self: ptr IWICBitmapCodecInfo,
+    cFormats: UINT,
+    pguidPixelFormats: ptr GUID,
+    pcActual: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPixelFormats(self, cFormats, pguidPixelFormats, pcActual)
+
+proc GetColorManagementVersion*(
+    self: ptr IWICBitmapCodecInfo,
+    cchColorManagementVersion: UINT,
+    wzColorManagementVersion: ptr WCHAR,
+    pcchActual: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColorManagementVersion(
+      self, cchColorManagementVersion, wzColorManagementVersion, pcchActual
+    )
+
+proc GetDeviceManufacturer*(
+    self: ptr IWICBitmapCodecInfo,
+    cchDeviceManufacturer: UINT,
+    wzDeviceManufacturer: ptr WCHAR,
+    pcchActual: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDeviceManufacturer(
+      self, cchDeviceManufacturer, wzDeviceManufacturer, pcchActual
+    )
+
+proc GetDeviceModels*(
+    self: ptr IWICBitmapCodecInfo,
+    cchDeviceModels: UINT,
+    wzDeviceModels: ptr WCHAR,
+    pcchActual: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDeviceModels(self, cchDeviceModels, wzDeviceModels, pcchActual)
+
+proc GetMimeTypes*(
+    self: ptr IWICBitmapCodecInfo,
+    cchMimeTypes: UINT,
+    wzMimeTypes: ptr WCHAR,
+    pcchActual: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMimeTypes(self, cchMimeTypes, wzMimeTypes, pcchActual)
+
+proc GetFileExtensions*(
+    self: ptr IWICBitmapCodecInfo,
+    cchFileExtensions: UINT,
+    wzFileExtensions: ptr WCHAR,
+    pcchActual: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFileExtensions(self, cchFileExtensions, wzFileExtensions, pcchActual)
+
+proc DoesSupportAnimation*(
+    self: ptr IWICBitmapCodecInfo, pfSupportAnimation: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoesSupportAnimation(self, pfSupportAnimation)
+
+proc DoesSupportChromaKey*(
+    self: ptr IWICBitmapCodecInfo, pfSupportChromaKey: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoesSupportChromaKey(self, pfSupportChromaKey)
+
+proc DoesSupportLossless*(
+    self: ptr IWICBitmapCodecInfo, pfSupportLossless: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoesSupportLossless(self, pfSupportLossless)
+
+proc DoesSupportMultiframe*(
+    self: ptr IWICBitmapCodecInfo, pfSupportMultiframe: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.DoesSupportMultiframe(self, pfSupportMultiframe)
+
+proc MatchesMimeType*(
+    self: ptr IWICBitmapCodecInfo, wzMimeType: LPCWSTR, pfMatches: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MatchesMimeType(self, wzMimeType, pfMatches)
+
+proc GetPatterns*(
+    self: ptr IWICBitmapDecoderInfo,
+    cbSizePatterns: UINT,
+    pPatterns: ptr WICBitmapPattern,
+    pcPatterns: ptr UINT,
+    pcbPatternsActual: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPatterns(
+      self, cbSizePatterns, pPatterns, pcPatterns, pcbPatternsActual
+    )
+
+proc MatchesPattern*(
+    self: ptr IWICBitmapDecoderInfo, pIStream: ptr IStream, pfMatches: ptr WINBOOL
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.MatchesPattern(self, pIStream, pfMatches)
+
+proc CreateInstance*(
+    self: ptr IWICBitmapDecoderInfo, ppIBitmapDecoder: ptr ptr IWICBitmapDecoder
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstance(self, ppIBitmapDecoder)
+
+proc QueryCapability*(
+    self: ptr IWICBitmapDecoder, pIStream: ptr IStream, pdwCapability: ptr DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.QueryCapability(self, pIStream, pdwCapability)
+
+proc Initialize*(
+    self: ptr IWICBitmapDecoder, pIStream: ptr IStream, cacheOptions: WICDecodeOptions
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pIStream, cacheOptions)
+
+proc GetContainerFormat*(
+    self: ptr IWICBitmapDecoder, pguidContainerFormat: ptr GUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetContainerFormat(self, pguidContainerFormat)
+
+proc GetDecoderInfo*(
+    self: ptr IWICBitmapDecoder, ppIDecoderInfo: ptr ptr IWICBitmapDecoderInfo
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetDecoderInfo(self, ppIDecoderInfo)
+
+proc CopyPalette*(
+    self: ptr IWICBitmapDecoder, pIPalette: ptr IWICPalette
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CopyPalette(self, pIPalette)
+
+proc GetMetadataQueryReader*(
+    self: ptr IWICBitmapDecoder, ppIMetadataQueryReader: ptr ptr IWICMetadataQueryReader
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMetadataQueryReader(self, ppIMetadataQueryReader)
+
+proc GetPreview*(
+    self: ptr IWICBitmapDecoder, ppIBitmapSource: ptr ptr IWICBitmapSource
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPreview(self, ppIBitmapSource)
+
+proc GetColorContexts*(
+    self: ptr IWICBitmapDecoder,
+    cCount: UINT,
+    ppIColorContexts: ptr ptr IWICColorContext,
+    pcActualCount: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetColorContexts(self, cCount, ppIColorContexts, pcActualCount)
+
+proc GetThumbnail*(
+    self: ptr IWICBitmapDecoder, ppIThumbnail: ptr ptr IWICBitmapSource
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetThumbnail(self, ppIThumbnail)
+
+proc GetFrameCount*(
+    self: ptr IWICBitmapDecoder, pCount: ptr UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFrameCount(self, pCount)
+
+proc GetFrame*(
+    self: ptr IWICBitmapDecoder,
+    index: UINT,
+    ppIBitmapFrame: ptr ptr IWICBitmapFrameDecode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetFrame(self, index, ppIBitmapFrame)
+
+proc Initialize*(
+    self: ptr IWICBitmapFrameEncode, pIEncoderOptions: ptr IPropertyBag2
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pIEncoderOptions)
+
+proc SetSize*(
+    self: ptr IWICBitmapFrameEncode, uiWidth: UINT, uiHeight: UINT
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetSize(self, uiWidth, uiHeight)
+
+proc SetResolution*(
+    self: ptr IWICBitmapFrameEncode, dpiX: float64, dpiY: float64
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetResolution(self, dpiX, dpiY)
+
+proc SetPixelFormat*(
+    self: ptr IWICBitmapFrameEncode, pPixelFormat: ptr WICPixelFormatGUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPixelFormat(self, pPixelFormat)
+
+proc SetColorContexts*(
+    self: ptr IWICBitmapFrameEncode,
+    cCount: UINT,
+    ppIColorContext: ptr ptr IWICColorContext,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetColorContexts(self, cCount, ppIColorContext)
+
+proc SetPalette*(
+    self: ptr IWICBitmapFrameEncode, pIPalette: ptr IWICPalette
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPalette(self, pIPalette)
+
+proc SetThumbnail*(
+    self: ptr IWICBitmapFrameEncode, pIThumbnail: ptr IWICBitmapSource
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetThumbnail(self, pIThumbnail)
+
+proc WritePixels*(
+    self: ptr IWICBitmapFrameEncode,
+    lineCount: UINT,
+    cbStride: UINT,
+    cbBufferSize: UINT,
+    pbPixels: ptr BYTE,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WritePixels(self, lineCount, cbStride, cbBufferSize, pbPixels)
+
+proc WriteSource*(
+    self: ptr IWICBitmapFrameEncode,
+    pIBitmapSource: ptr IWICBitmapSource,
+    prc: ptr WICRect,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.WriteSource(self, pIBitmapSource, prc)
+
+proc Commit*(self: ptr IWICBitmapFrameEncode): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Commit(self)
+
+proc GetMetadataQueryWriter*(
+    self: ptr IWICBitmapFrameEncode,
+    ppIMetadataQueryWriter: ptr ptr IWICMetadataQueryWriter,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMetadataQueryWriter(self, ppIMetadataQueryWriter)
+
+proc CreateInstance*(
+    self: ptr IWICBitmapEncoderInfo, ppIBitmapEncoder: ptr ptr IWICBitmapEncoder
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstance(self, ppIBitmapEncoder)
+
+proc Initialize*(
+    self: ptr IWICBitmapEncoder,
+    pIStream: ptr IStream,
+    cacheOption: WICBitmapEncoderCacheOption,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pIStream, cacheOption)
+
+proc GetContainerFormat*(
+    self: ptr IWICBitmapEncoder, pguidContainerFormat: ptr GUID
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetContainerFormat(self, pguidContainerFormat)
+
+proc GetEncoderInfo*(
+    self: ptr IWICBitmapEncoder, ppIEncoderInfo: ptr ptr IWICBitmapEncoderInfo
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetEncoderInfo(self, ppIEncoderInfo)
+
+proc SetColorContexts*(
+    self: ptr IWICBitmapEncoder, cCount: UINT, ppIColorContext: ptr ptr IWICColorContext
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetColorContexts(self, cCount, ppIColorContext)
+
+proc SetPalette*(
+    self: ptr IWICBitmapEncoder, pIPalette: ptr IWICPalette
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPalette(self, pIPalette)
+
+proc SetThumbnail*(
+    self: ptr IWICBitmapEncoder, pIThumbnail: ptr IWICBitmapSource
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetThumbnail(self, pIThumbnail)
+
+proc SetPreview*(
+    self: ptr IWICBitmapEncoder, pIPreview: ptr IWICBitmapSource
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.SetPreview(self, pIPreview)
+
+proc CreateNewFrame*(
+    self: ptr IWICBitmapEncoder,
+    ppIFrameEncode: ptr ptr IWICBitmapFrameEncode,
+    ppIEncoderOptions: ptr ptr IPropertyBag2,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateNewFrame(self, ppIFrameEncode, ppIEncoderOptions)
+
+proc Commit*(self: ptr IWICBitmapEncoder): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Commit(self)
+
+proc GetMetadataQueryWriter*(
+    self: ptr IWICBitmapEncoder, ppIMetadataQueryWriter: ptr ptr IWICMetadataQueryWriter
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMetadataQueryWriter(self, ppIMetadataQueryWriter)
+
+proc Initialize*(
+    self: ptr IWICFormatConverter,
+    pISource: ptr IWICBitmapSource,
+    dstFormat: REFWICPixelFormatGUID,
+    dither: WICBitmapDitherType,
+    pIPalette: ptr IWICPalette,
+    alphaThresholdPercent: float64,
+    paletteTranslate: WICBitmapPaletteType,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(
+      self, pISource, dstFormat, dither, pIPalette, alphaThresholdPercent,
+      paletteTranslate,
+    )
+
+proc CanConvert*(
+    self: ptr IWICFormatConverter,
+    srcPixelFormat: REFWICPixelFormatGUID,
+    dstPixelFormat: REFWICPixelFormatGUID,
+    pfCanConvert: ptr WINBOOL,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CanConvert(self, srcPixelFormat, dstPixelFormat, pfCanConvert)
+
+proc GetPixelFormats*(
+    self: ptr IWICFormatConverterInfo,
+    cFormats: UINT,
+    pPixelFormatGUIDs: ptr WICPixelFormatGUID,
+    pcActual: ptr UINT,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetPixelFormats(self, cFormats, pPixelFormatGUIDs, pcActual)
+
+proc CreateInstance*(
+    self: ptr IWICFormatConverterInfo, ppIConverter: ptr ptr IWICFormatConverter
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateInstance(self, ppIConverter)
+
+proc InitializeFromIStream*(
+    self: ptr IWICStream, pIStream: ptr IStream
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeFromIStream(self, pIStream)
+
+proc InitializeFromFilename*(
+    self: ptr IWICStream, wzFileName: LPCWSTR, dwAccessMode: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeFromFilename(self, wzFileName, dwAccessMode)
+
+proc InitializeFromMemory*(
+    self: ptr IWICStream, pbBuffer: ptr BYTE, cbBufferSize: DWORD
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeFromMemory(self, pbBuffer, cbBufferSize)
+
+proc InitializeFromIStreamRegion*(
+    self: ptr IWICStream,
+    pIStream: ptr IStream,
+    ulOffset: ULARGE_INTEGER,
+    ulMaxSize: ULARGE_INTEGER,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.InitializeFromIStreamRegion(self, pIStream, ulOffset, ulMaxSize)
+
+proc Initialize*(
+    self: ptr IWICBitmapScaler,
+    pISource: ptr IWICBitmapSource,
+    uiWidth: UINT,
+    uiHeight: UINT,
+    mode: WICBitmapInterpolationMode,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pISource, uiWidth, uiHeight, mode)
+
+proc Initialize*(
+    self: ptr IWICBitmapClipper, pISource: ptr IWICBitmapSource, prc: ptr WICRect
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(self, pISource, prc)
+
+proc Initialize*(
+    self: ptr IWICColorTransform,
+    pIBitmapSource: ptr IWICBitmapSource,
+    pIContextSource: ptr IWICColorContext,
+    pIContextDest: ptr IWICColorContext,
+    pixelFmtDest: REFWICPixelFormatGUID,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Initialize(
+      self, pIBitmapSource, pIContextSource, pIContextDest, pixelFmtDest
+    )
+
+proc Commit*(self: ptr IWICFastMetadataEncoder): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Commit(self)
+
+proc GetMetadataQueryWriter*(
+    self: ptr IWICFastMetadataEncoder,
+    ppIMetadataQueryWriter: ptr ptr IWICMetadataQueryWriter,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.GetMetadataQueryWriter(self, ppIMetadataQueryWriter)
+
+proc CreateDecoderFromFilename*(
+    self: ptr IWICImagingFactory,
+    wzFilename: LPCWSTR,
+    pguidVendor: ptr GUID,
+    dwDesiredAccess: DWORD,
+    metadataOptions: WICDecodeOptions,
+    ppIDecoder: ptr ptr IWICBitmapDecoder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateDecoderFromFilename(
+      self, wzFilename, pguidVendor, dwDesiredAccess, metadataOptions, ppIDecoder
+    )
+
+proc CreateDecoderFromStream*(
+    self: ptr IWICImagingFactory,
+    pIStream: ptr IStream,
+    pguidVendor: ptr GUID,
+    metadataOptions: WICDecodeOptions,
+    ppIDecoder: ptr ptr IWICBitmapDecoder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateDecoderFromStream(
+      self, pIStream, pguidVendor, metadataOptions, ppIDecoder
+    )
+
+proc CreateDecoderFromFileHandle*(
+    self: ptr IWICImagingFactory,
+    hFile: ULONG_PTR,
+    pguidVendor: ptr GUID,
+    metadataOptions: WICDecodeOptions,
+    ppIDecoder: ptr ptr IWICBitmapDecoder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateDecoderFromFileHandle(
+      self, hFile, pguidVendor, metadataOptions, ppIDecoder
+    )
+
+proc CreateComponentInfo*(
+    self: ptr IWICImagingFactory,
+    clsidComponent: REFCLSID,
+    ppIInfo: ptr ptr IWICComponentInfo,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateComponentInfo(self, clsidComponent, ppIInfo)
+
+proc CreateDecoder*(
+    self: ptr IWICImagingFactory,
+    guidContainerFormat: REFGUID,
+    pguidVendor: ptr GUID,
+    ppIDecoder: ptr ptr IWICBitmapDecoder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateDecoder(self, guidContainerFormat, pguidVendor, ppIDecoder)
+
+proc CreateEncoder*(
+    self: ptr IWICImagingFactory,
+    guidContainerFormat: REFGUID,
+    pguidVendor: ptr GUID,
+    ppIEncoder: ptr ptr IWICBitmapEncoder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateEncoder(self, guidContainerFormat, pguidVendor, ppIEncoder)
+
+proc CreatePalette*(
+    self: ptr IWICImagingFactory, ppIPalette: ptr ptr IWICPalette
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreatePalette(self, ppIPalette)
+
+proc CreateFormatConverter*(
+    self: ptr IWICImagingFactory, ppIFormatConverter: ptr ptr IWICFormatConverter
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateFormatConverter(self, ppIFormatConverter)
+
+proc CreateBitmapScaler*(
+    self: ptr IWICImagingFactory, ppIBitmapScaler: ptr ptr IWICBitmapScaler
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateBitmapScaler(self, ppIBitmapScaler)
+
+proc CreateBitmapClipper*(
+    self: ptr IWICImagingFactory, ppIBitmapClipper: ptr ptr IWICBitmapClipper
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateBitmapClipper(self, ppIBitmapClipper)
+
+proc CreateBitmapFlipRotator*(
+    self: ptr IWICImagingFactory, ppIBitmapFlipRotator: ptr ptr IWICBitmapFlipRotator
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateBitmapFlipRotator(self, ppIBitmapFlipRotator)
+
+proc CreateStream*(
+    self: ptr IWICImagingFactory, ppIWICStream: ptr ptr IWICStream
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateStream(self, ppIWICStream)
+
+proc CreateColorContext*(
+    self: ptr IWICImagingFactory, ppIWICColorContext: ptr ptr IWICColorContext
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateColorContext(self, ppIWICColorContext)
+
+proc CreateColorTransformer*(
+    self: ptr IWICImagingFactory, ppIWICColorTransform: ptr ptr IWICColorTransform
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateColorTransformer(self, ppIWICColorTransform)
+
+proc CreateBitmap*(
+    self: ptr IWICImagingFactory,
+    uiWidth: UINT,
+    uiHeight: UINT,
+    pixelFormat: REFWICPixelFormatGUID,
+    option: WICBitmapCreateCacheOption,
+    ppIBitmap: ptr ptr IWICBitmap,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateBitmap(self, uiWidth, uiHeight, pixelFormat, option, ppIBitmap)
+
+proc CreateBitmapFromSource*(
+    self: ptr IWICImagingFactory,
+    piBitmapSource: ptr IWICBitmapSource,
+    option: WICBitmapCreateCacheOption,
+    ppIBitmap: ptr ptr IWICBitmap,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateBitmapFromSource(self, piBitmapSource, option, ppIBitmap)
+
+proc CreateBitmapFromSourceRect*(
+    self: ptr IWICImagingFactory,
+    piBitmapSource: ptr IWICBitmapSource,
+    x: UINT,
+    y: UINT,
+    width: UINT,
+    height: UINT,
+    ppIBitmap: ptr ptr IWICBitmap,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateBitmapFromSourceRect(
+      self, piBitmapSource, x, y, width, height, ppIBitmap
+    )
+
+proc CreateBitmapFromMemory*(
+    self: ptr IWICImagingFactory,
+    uiWidth: UINT,
+    uiHeight: UINT,
+    pixelFormat: REFWICPixelFormatGUID,
+    cbStride: UINT,
+    cbBufferSize: UINT,
+    pbBuffer: ptr BYTE,
+    ppIBitmap: ptr ptr IWICBitmap,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateBitmapFromMemory(
+      self, uiWidth, uiHeight, pixelFormat, cbStride, cbBufferSize, pbBuffer, ppIBitmap
+    )
+
+proc CreateBitmapFromHBITMAP*(
+    self: ptr IWICImagingFactory,
+    hBitmap: HBITMAP,
+    hPalette: HPALETTE,
+    options: WICBitmapAlphaChannelOption,
+    ppIBitmap: ptr ptr IWICBitmap,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateBitmapFromHBITMAP(self, hBitmap, hPalette, options, ppIBitmap)
+
+proc CreateBitmapFromHICON*(
+    self: ptr IWICImagingFactory, hIcon: HICON, ppIBitmap: ptr ptr IWICBitmap
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateBitmapFromHICON(self, hIcon, ppIBitmap)
+
+proc CreateComponentEnumerator*(
+    self: ptr IWICImagingFactory,
+    componentTypes: DWORD,
+    options: DWORD,
+    ppIEnumUnknown: ptr ptr IEnumUnknown,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateComponentEnumerator(self, componentTypes, options, ppIEnumUnknown)
+
+proc CreateFastMetadataEncoderFromDecoder*(
+    self: ptr IWICImagingFactory,
+    pIDecoder: ptr IWICBitmapDecoder,
+    ppIFastEncoder: ptr ptr IWICFastMetadataEncoder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateFastMetadataEncoderFromDecoder(self, pIDecoder, ppIFastEncoder)
+
+proc CreateFastMetadataEncoderFromFrameDecode*(
+    self: ptr IWICImagingFactory,
+    pIFrameDecoder: ptr IWICBitmapFrameDecode,
+    ppIFastEncoder: ptr ptr IWICFastMetadataEncoder,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateFastMetadataEncoderFromFrameDecode(
+      self, pIFrameDecoder, ppIFastEncoder
+    )
+
+proc CreateQueryWriter*(
+    self: ptr IWICImagingFactory,
+    guidMetadataFormat: REFGUID,
+    pguidVendor: ptr GUID,
+    ppIQueryWriter: ptr ptr IWICMetadataQueryWriter,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateQueryWriter(self, guidMetadataFormat, pguidVendor, ppIQueryWriter)
+
+proc CreateQueryWriterFromReader*(
+    self: ptr IWICImagingFactory,
+    pIQueryReader: ptr IWICMetadataQueryReader,
+    pguidVendor: ptr GUID,
+    ppIQueryWriter: ptr ptr IWICMetadataQueryWriter,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.CreateQueryWriterFromReader(
+      self, pIQueryReader, pguidVendor, ppIQueryWriter
+    )
+
+proc Next*(
+    self: ptr IWICEnumMetadataItem,
+    celt: ULONG,
+    rgeltSchema: ptr PROPVARIANT,
+    rgeltId: ptr PROPVARIANT,
+    rgeltValue: ptr PROPVARIANT,
+    pceltFetched: ptr ULONG,
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Next(self, celt, rgeltSchema, rgeltId, rgeltValue, pceltFetched)
+
+proc Skip*(self: ptr IWICEnumMetadataItem, celt: ULONG): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Skip(self, celt)
+
+proc Reset*(self: ptr IWICEnumMetadataItem): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Reset(self)
+
+proc Clone*(
+    self: ptr IWICEnumMetadataItem, ppIEnumMetadataItem: ptr ptr IWICEnumMetadataItem
+): HRESULT {.winapi, inline.} =
+  {.gcsafe.}:
+    self.lpVtbl.Clone(self, ppIEnumMetadataItem)
+
+converter winimConverterIWICColorContextToIUnknown*(
+    x: ptr IWICColorContext
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICBitmapSourceToIUnknown*(
+    x: ptr IWICBitmapSource
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICBitmapLockToIUnknown*(x: ptr IWICBitmapLock): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICBitmapFlipRotatorToIWICBitmapSource*(
+    x: ptr IWICBitmapFlipRotator
+): ptr IWICBitmapSource =
+  cast[ptr IWICBitmapSource](x)
+
+converter winimConverterIWICBitmapFlipRotatorToIUnknown*(
+    x: ptr IWICBitmapFlipRotator
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICBitmapToIWICBitmapSource*(
+    x: ptr IWICBitmap
+): ptr IWICBitmapSource =
+  cast[ptr IWICBitmapSource](x)
+
+converter winimConverterIWICBitmapToIUnknown*(x: ptr IWICBitmap): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICPaletteToIUnknown*(x: ptr IWICPalette): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICComponentInfoToIUnknown*(
+    x: ptr IWICComponentInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICMetadataQueryReaderToIUnknown*(
+    x: ptr IWICMetadataQueryReader
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICMetadataQueryWriterToIWICMetadataQueryReader*(
+    x: ptr IWICMetadataQueryWriter
+): ptr IWICMetadataQueryReader =
+  cast[ptr IWICMetadataQueryReader](x)
+
+converter winimConverterIWICMetadataQueryWriterToIUnknown*(
+    x: ptr IWICMetadataQueryWriter
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICBitmapFrameDecodeToIWICBitmapSource*(
+    x: ptr IWICBitmapFrameDecode
+): ptr IWICBitmapSource =
+  cast[ptr IWICBitmapSource](x)
+
+converter winimConverterIWICBitmapFrameDecodeToIUnknown*(
+    x: ptr IWICBitmapFrameDecode
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICPixelFormatInfoToIWICComponentInfo*(
+    x: ptr IWICPixelFormatInfo
+): ptr IWICComponentInfo =
+  cast[ptr IWICComponentInfo](x)
+
+converter winimConverterIWICPixelFormatInfoToIUnknown*(
+    x: ptr IWICPixelFormatInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICPixelFormatInfo2ToIWICPixelFormatInfo*(
+    x: ptr IWICPixelFormatInfo2
+): ptr IWICPixelFormatInfo =
+  cast[ptr IWICPixelFormatInfo](x)
+
+converter winimConverterIWICPixelFormatInfo2ToIWICComponentInfo*(
+    x: ptr IWICPixelFormatInfo2
+): ptr IWICComponentInfo =
+  cast[ptr IWICComponentInfo](x)
+
+converter winimConverterIWICPixelFormatInfo2ToIUnknown*(
+    x: ptr IWICPixelFormatInfo2
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICBitmapCodecInfoToIWICComponentInfo*(
+    x: ptr IWICBitmapCodecInfo
+): ptr IWICComponentInfo =
+  cast[ptr IWICComponentInfo](x)
+
+converter winimConverterIWICBitmapCodecInfoToIUnknown*(
+    x: ptr IWICBitmapCodecInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICBitmapDecoderInfoToIWICBitmapCodecInfo*(
+    x: ptr IWICBitmapDecoderInfo
+): ptr IWICBitmapCodecInfo =
+  cast[ptr IWICBitmapCodecInfo](x)
+
+converter winimConverterIWICBitmapDecoderInfoToIWICComponentInfo*(
+    x: ptr IWICBitmapDecoderInfo
+): ptr IWICComponentInfo =
+  cast[ptr IWICComponentInfo](x)
+
+converter winimConverterIWICBitmapDecoderInfoToIUnknown*(
+    x: ptr IWICBitmapDecoderInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICBitmapDecoderToIUnknown*(
+    x: ptr IWICBitmapDecoder
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICBitmapFrameEncodeToIUnknown*(
+    x: ptr IWICBitmapFrameEncode
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICBitmapEncoderInfoToIWICBitmapCodecInfo*(
+    x: ptr IWICBitmapEncoderInfo
+): ptr IWICBitmapCodecInfo =
+  cast[ptr IWICBitmapCodecInfo](x)
+
+converter winimConverterIWICBitmapEncoderInfoToIWICComponentInfo*(
+    x: ptr IWICBitmapEncoderInfo
+): ptr IWICComponentInfo =
+  cast[ptr IWICComponentInfo](x)
+
+converter winimConverterIWICBitmapEncoderInfoToIUnknown*(
+    x: ptr IWICBitmapEncoderInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICBitmapEncoderToIUnknown*(
+    x: ptr IWICBitmapEncoder
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICFormatConverterToIWICBitmapSource*(
+    x: ptr IWICFormatConverter
+): ptr IWICBitmapSource =
+  cast[ptr IWICBitmapSource](x)
+
+converter winimConverterIWICFormatConverterToIUnknown*(
+    x: ptr IWICFormatConverter
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICFormatConverterInfoToIWICComponentInfo*(
+    x: ptr IWICFormatConverterInfo
+): ptr IWICComponentInfo =
+  cast[ptr IWICComponentInfo](x)
+
+converter winimConverterIWICFormatConverterInfoToIUnknown*(
+    x: ptr IWICFormatConverterInfo
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICStreamToIStream*(x: ptr IWICStream): ptr IStream =
+  cast[ptr IStream](x)
+
+converter winimConverterIWICStreamToISequentialStream*(
+    x: ptr IWICStream
+): ptr ISequentialStream =
+  cast[ptr ISequentialStream](x)
+
+converter winimConverterIWICStreamToIUnknown*(x: ptr IWICStream): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICBitmapScalerToIWICBitmapSource*(
+    x: ptr IWICBitmapScaler
+): ptr IWICBitmapSource =
+  cast[ptr IWICBitmapSource](x)
+
+converter winimConverterIWICBitmapScalerToIUnknown*(
+    x: ptr IWICBitmapScaler
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICBitmapClipperToIWICBitmapSource*(
+    x: ptr IWICBitmapClipper
+): ptr IWICBitmapSource =
+  cast[ptr IWICBitmapSource](x)
+
+converter winimConverterIWICBitmapClipperToIUnknown*(
+    x: ptr IWICBitmapClipper
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICColorTransformToIWICBitmapSource*(
+    x: ptr IWICColorTransform
+): ptr IWICBitmapSource =
+  cast[ptr IWICBitmapSource](x)
+
+converter winimConverterIWICColorTransformToIUnknown*(
+    x: ptr IWICColorTransform
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICFastMetadataEncoderToIUnknown*(
+    x: ptr IWICFastMetadataEncoder
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICImagingFactoryToIUnknown*(
+    x: ptr IWICImagingFactory
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
+
+converter winimConverterIWICEnumMetadataItemToIUnknown*(
+    x: ptr IWICEnumMetadataItem
+): ptr IUnknown =
+  cast[ptr IUnknown](x)
--- a/semicongine/thirdparty/winim/winim/inc/wincon.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/wincon.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -13,16 +13,19 @@
   COORD* {.pure.} = object
     X*: SHORT
     Y*: SHORT
+
   PCOORD* = ptr COORD
   SMALL_RECT* {.pure.} = object
     Left*: SHORT
     Top*: SHORT
     Right*: SHORT
     Bottom*: SHORT
+
   PSMALL_RECT* = ptr SMALL_RECT
   KEY_EVENT_RECORD_uChar* {.pure, union.} = object
     UnicodeChar*: WCHAR
     AsciiChar*: CHAR
+
   KEY_EVENT_RECORD* {.pure.} = object
     bKeyDown*: WINBOOL
     wRepeatCount*: WORD
@@ -30,21 +33,26 @@
     wVirtualScanCode*: WORD
     uChar*: KEY_EVENT_RECORD_uChar
     dwControlKeyState*: DWORD
+
   PKEY_EVENT_RECORD* = ptr KEY_EVENT_RECORD
   MOUSE_EVENT_RECORD* {.pure.} = object
     dwMousePosition*: COORD
     dwButtonState*: DWORD
     dwControlKeyState*: DWORD
     dwEventFlags*: DWORD
+
   PMOUSE_EVENT_RECORD* = ptr MOUSE_EVENT_RECORD
   WINDOW_BUFFER_SIZE_RECORD* {.pure.} = object
     dwSize*: COORD
+
   PWINDOW_BUFFER_SIZE_RECORD* = ptr WINDOW_BUFFER_SIZE_RECORD
   MENU_EVENT_RECORD* {.pure.} = object
     dwCommandId*: UINT
+
   PMENU_EVENT_RECORD* = ptr MENU_EVENT_RECORD
   FOCUS_EVENT_RECORD* {.pure.} = object
     bSetFocus*: WINBOOL
+
   PFOCUS_EVENT_RECORD* = ptr FOCUS_EVENT_RECORD
   INPUT_RECORD_Event* {.pure, union.} = object
     KeyEvent*: KEY_EVENT_RECORD
@@ -52,16 +60,20 @@
     WindowBufferSizeEvent*: WINDOW_BUFFER_SIZE_RECORD
     MenuEvent*: MENU_EVENT_RECORD
     FocusEvent*: FOCUS_EVENT_RECORD
+
   INPUT_RECORD* {.pure.} = object
     EventType*: WORD
     Event*: INPUT_RECORD_Event
+
   PINPUT_RECORD* = ptr INPUT_RECORD
   CHAR_INFO_Char* {.pure, union.} = object
     UnicodeChar*: WCHAR
     AsciiChar*: CHAR
+
   CHAR_INFO* {.pure.} = object
     Char*: CHAR_INFO_Char
     Attributes*: WORD
+
   PCHAR_INFO* = ptr CHAR_INFO
   CONSOLE_SCREEN_BUFFER_INFO* {.pure.} = object
     dwSize*: COORD
@@ -69,19 +81,23 @@
     wAttributes*: WORD
     srWindow*: SMALL_RECT
     dwMaximumWindowSize*: COORD
+
   PCONSOLE_SCREEN_BUFFER_INFO* = ptr CONSOLE_SCREEN_BUFFER_INFO
   CONSOLE_CURSOR_INFO* {.pure.} = object
     dwSize*: DWORD
     bVisible*: WINBOOL
+
   PCONSOLE_CURSOR_INFO* = ptr CONSOLE_CURSOR_INFO
   CONSOLE_FONT_INFO* {.pure.} = object
     nFont*: DWORD
     dwFontSize*: COORD
+
   PCONSOLE_FONT_INFO* = ptr CONSOLE_FONT_INFO
   CONSOLE_SELECTION_INFO* {.pure.} = object
     dwFlags*: DWORD
     dwSelectionAnchor*: COORD
     srSelection*: SMALL_RECT
+
   PCONSOLE_SELECTION_INFO* = ptr CONSOLE_SELECTION_INFO
   CONSOLE_FONT_INFOEX* {.pure.} = object
     cbSize*: ULONG
@@ -90,18 +106,21 @@
     FontFamily*: UINT
     FontWeight*: UINT
     FaceName*: array[LF_FACESIZE, WCHAR]
+
   PCONSOLE_FONT_INFOEX* = ptr CONSOLE_FONT_INFOEX
   CONSOLE_HISTORY_INFO* {.pure.} = object
     cbSize*: UINT
     HistoryBufferSize*: UINT
     NumberOfHistoryBuffers*: UINT
     dwFlags*: DWORD
+
   PCONSOLE_HISTORY_INFO* = ptr CONSOLE_HISTORY_INFO
   CONSOLE_READCONSOLE_CONTROL* {.pure.} = object
     nLength*: ULONG
     nInitialChars*: ULONG
     dwCtrlWakeupMask*: ULONG
     dwControlKeyState*: ULONG
+
   PCONSOLE_READCONSOLE_CONTROL* = ptr CONSOLE_READCONSOLE_CONTROL
   CONSOLE_SCREEN_BUFFER_INFOEX* {.pure.} = object
     cbSize*: ULONG
@@ -113,7 +132,9 @@
     wPopupAttributes*: WORD
     bFullscreenSupported*: WINBOOL
     ColorTable*: array[16, COLORREF]
+
   PCONSOLE_SCREEN_BUFFER_INFOEX* = ptr CONSOLE_SCREEN_BUFFER_INFOEX
+
 const
   RIGHT_ALT_PRESSED* = 0x1
   LEFT_ALT_PRESSED* = 0x2
@@ -188,127 +209,672 @@
   CONSOLE_FULLSCREEN_HARDWARE* = 2
   CONSOLE_FULLSCREEN_MODE* = 1
   CONSOLE_WINDOWED_MODE* = 2
-type
-  PHANDLER_ROUTINE* = proc (CtrlType: DWORD): WINBOOL {.stdcall.}
-proc PeekConsoleInputA*(hConsoleInput: HANDLE, lpBuffer: PINPUT_RECORD, nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc PeekConsoleInputW*(hConsoleInput: HANDLE, lpBuffer: PINPUT_RECORD, nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReadConsoleInputA*(hConsoleInput: HANDLE, lpBuffer: PINPUT_RECORD, nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReadConsoleInputW*(hConsoleInput: HANDLE, lpBuffer: PINPUT_RECORD, nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteConsoleInputA*(hConsoleInput: HANDLE, lpBuffer: ptr INPUT_RECORD, nLength: DWORD, lpNumberOfEventsWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteConsoleInputW*(hConsoleInput: HANDLE, lpBuffer: ptr INPUT_RECORD, nLength: DWORD, lpNumberOfEventsWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReadConsoleOutputA*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO, dwBufferSize: COORD, dwBufferCoord: COORD, lpReadRegion: PSMALL_RECT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReadConsoleOutputW*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO, dwBufferSize: COORD, dwBufferCoord: COORD, lpReadRegion: PSMALL_RECT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteConsoleOutputA*(hConsoleOutput: HANDLE, lpBuffer: ptr CHAR_INFO, dwBufferSize: COORD, dwBufferCoord: COORD, lpWriteRegion: PSMALL_RECT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteConsoleOutputW*(hConsoleOutput: HANDLE, lpBuffer: ptr CHAR_INFO, dwBufferSize: COORD, dwBufferCoord: COORD, lpWriteRegion: PSMALL_RECT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReadConsoleOutputCharacterA*(hConsoleOutput: HANDLE, lpCharacter: LPSTR, nLength: DWORD, dwReadCoord: COORD, lpNumberOfCharsRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReadConsoleOutputCharacterW*(hConsoleOutput: HANDLE, lpCharacter: LPWSTR, nLength: DWORD, dwReadCoord: COORD, lpNumberOfCharsRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReadConsoleOutputAttribute*(hConsoleOutput: HANDLE, lpAttribute: LPWORD, nLength: DWORD, dwReadCoord: COORD, lpNumberOfAttrsRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteConsoleOutputCharacterA*(hConsoleOutput: HANDLE, lpCharacter: LPCSTR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteConsoleOutputCharacterW*(hConsoleOutput: HANDLE, lpCharacter: LPCWSTR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteConsoleOutputAttribute*(hConsoleOutput: HANDLE, lpAttribute: ptr WORD, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfAttrsWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FillConsoleOutputCharacterA*(hConsoleOutput: HANDLE, cCharacter: CHAR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FillConsoleOutputCharacterW*(hConsoleOutput: HANDLE, cCharacter: WCHAR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FillConsoleOutputAttribute*(hConsoleOutput: HANDLE, wAttribute: WORD, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfAttrsWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleMode*(hConsoleHandle: HANDLE, lpMode: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumberOfConsoleInputEvents*(hConsoleInput: HANDLE, lpNumberOfEvents: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleScreenBufferInfo*(hConsoleOutput: HANDLE, lpConsoleScreenBufferInfo: PCONSOLE_SCREEN_BUFFER_INFO): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetLargestConsoleWindowSize*(hConsoleOutput: HANDLE): COORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleCursorInfo*(hConsoleOutput: HANDLE, lpConsoleCursorInfo: PCONSOLE_CURSOR_INFO): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCurrentConsoleFont*(hConsoleOutput: HANDLE, bMaximumWindow: WINBOOL, lpConsoleCurrentFont: PCONSOLE_FONT_INFO): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleFontSize*(hConsoleOutput: HANDLE, nFont: DWORD): COORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleSelectionInfo*(lpConsoleSelectionInfo: PCONSOLE_SELECTION_INFO): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumberOfConsoleMouseButtons*(lpNumberOfMouseButtons: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleMode*(hConsoleHandle: HANDLE, dwMode: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleActiveScreenBuffer*(hConsoleOutput: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FlushConsoleInputBuffer*(hConsoleInput: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleScreenBufferSize*(hConsoleOutput: HANDLE, dwSize: COORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleCursorPosition*(hConsoleOutput: HANDLE, dwCursorPosition: COORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleCursorInfo*(hConsoleOutput: HANDLE, lpConsoleCursorInfo: ptr CONSOLE_CURSOR_INFO): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ScrollConsoleScreenBufferA*(hConsoleOutput: HANDLE, lpScrollRectangle: ptr SMALL_RECT, lpClipRectangle: ptr SMALL_RECT, dwDestinationOrigin: COORD, lpFill: ptr CHAR_INFO): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ScrollConsoleScreenBufferW*(hConsoleOutput: HANDLE, lpScrollRectangle: ptr SMALL_RECT, lpClipRectangle: ptr SMALL_RECT, dwDestinationOrigin: COORD, lpFill: ptr CHAR_INFO): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleWindowInfo*(hConsoleOutput: HANDLE, bAbsolute: WINBOOL, lpConsoleWindow: ptr SMALL_RECT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleTextAttribute*(hConsoleOutput: HANDLE, wAttributes: WORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleCtrlHandler*(HandlerRoutine: PHANDLER_ROUTINE, Add: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GenerateConsoleCtrlEvent*(dwCtrlEvent: DWORD, dwProcessGroupId: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+type PHANDLER_ROUTINE* = proc(CtrlType: DWORD): WINBOOL {.stdcall.}
+proc PeekConsoleInputA*(
+  hConsoleInput: HANDLE,
+  lpBuffer: PINPUT_RECORD,
+  nLength: DWORD,
+  lpNumberOfEventsRead: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc PeekConsoleInputW*(
+  hConsoleInput: HANDLE,
+  lpBuffer: PINPUT_RECORD,
+  nLength: DWORD,
+  lpNumberOfEventsRead: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReadConsoleInputA*(
+  hConsoleInput: HANDLE,
+  lpBuffer: PINPUT_RECORD,
+  nLength: DWORD,
+  lpNumberOfEventsRead: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReadConsoleInputW*(
+  hConsoleInput: HANDLE,
+  lpBuffer: PINPUT_RECORD,
+  nLength: DWORD,
+  lpNumberOfEventsRead: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteConsoleInputA*(
+  hConsoleInput: HANDLE,
+  lpBuffer: ptr INPUT_RECORD,
+  nLength: DWORD,
+  lpNumberOfEventsWritten: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteConsoleInputW*(
+  hConsoleInput: HANDLE,
+  lpBuffer: ptr INPUT_RECORD,
+  nLength: DWORD,
+  lpNumberOfEventsWritten: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReadConsoleOutputA*(
+  hConsoleOutput: HANDLE,
+  lpBuffer: PCHAR_INFO,
+  dwBufferSize: COORD,
+  dwBufferCoord: COORD,
+  lpReadRegion: PSMALL_RECT,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReadConsoleOutputW*(
+  hConsoleOutput: HANDLE,
+  lpBuffer: PCHAR_INFO,
+  dwBufferSize: COORD,
+  dwBufferCoord: COORD,
+  lpReadRegion: PSMALL_RECT,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteConsoleOutputA*(
+  hConsoleOutput: HANDLE,
+  lpBuffer: ptr CHAR_INFO,
+  dwBufferSize: COORD,
+  dwBufferCoord: COORD,
+  lpWriteRegion: PSMALL_RECT,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteConsoleOutputW*(
+  hConsoleOutput: HANDLE,
+  lpBuffer: ptr CHAR_INFO,
+  dwBufferSize: COORD,
+  dwBufferCoord: COORD,
+  lpWriteRegion: PSMALL_RECT,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReadConsoleOutputCharacterA*(
+  hConsoleOutput: HANDLE,
+  lpCharacter: LPSTR,
+  nLength: DWORD,
+  dwReadCoord: COORD,
+  lpNumberOfCharsRead: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReadConsoleOutputCharacterW*(
+  hConsoleOutput: HANDLE,
+  lpCharacter: LPWSTR,
+  nLength: DWORD,
+  dwReadCoord: COORD,
+  lpNumberOfCharsRead: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReadConsoleOutputAttribute*(
+  hConsoleOutput: HANDLE,
+  lpAttribute: LPWORD,
+  nLength: DWORD,
+  dwReadCoord: COORD,
+  lpNumberOfAttrsRead: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteConsoleOutputCharacterA*(
+  hConsoleOutput: HANDLE,
+  lpCharacter: LPCSTR,
+  nLength: DWORD,
+  dwWriteCoord: COORD,
+  lpNumberOfCharsWritten: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteConsoleOutputCharacterW*(
+  hConsoleOutput: HANDLE,
+  lpCharacter: LPCWSTR,
+  nLength: DWORD,
+  dwWriteCoord: COORD,
+  lpNumberOfCharsWritten: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteConsoleOutputAttribute*(
+  hConsoleOutput: HANDLE,
+  lpAttribute: ptr WORD,
+  nLength: DWORD,
+  dwWriteCoord: COORD,
+  lpNumberOfAttrsWritten: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FillConsoleOutputCharacterA*(
+  hConsoleOutput: HANDLE,
+  cCharacter: CHAR,
+  nLength: DWORD,
+  dwWriteCoord: COORD,
+  lpNumberOfCharsWritten: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FillConsoleOutputCharacterW*(
+  hConsoleOutput: HANDLE,
+  cCharacter: WCHAR,
+  nLength: DWORD,
+  dwWriteCoord: COORD,
+  lpNumberOfCharsWritten: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FillConsoleOutputAttribute*(
+  hConsoleOutput: HANDLE,
+  wAttribute: WORD,
+  nLength: DWORD,
+  dwWriteCoord: COORD,
+  lpNumberOfAttrsWritten: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleMode*(
+  hConsoleHandle: HANDLE, lpMode: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNumberOfConsoleInputEvents*(
+  hConsoleInput: HANDLE, lpNumberOfEvents: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleScreenBufferInfo*(
+  hConsoleOutput: HANDLE, lpConsoleScreenBufferInfo: PCONSOLE_SCREEN_BUFFER_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetLargestConsoleWindowSize*(
+  hConsoleOutput: HANDLE
+): COORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleCursorInfo*(
+  hConsoleOutput: HANDLE, lpConsoleCursorInfo: PCONSOLE_CURSOR_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCurrentConsoleFont*(
+  hConsoleOutput: HANDLE,
+  bMaximumWindow: WINBOOL,
+  lpConsoleCurrentFont: PCONSOLE_FONT_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleFontSize*(
+  hConsoleOutput: HANDLE, nFont: DWORD
+): COORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleSelectionInfo*(
+  lpConsoleSelectionInfo: PCONSOLE_SELECTION_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNumberOfConsoleMouseButtons*(
+  lpNumberOfMouseButtons: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetConsoleMode*(
+  hConsoleHandle: HANDLE, dwMode: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetConsoleActiveScreenBuffer*(
+  hConsoleOutput: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FlushConsoleInputBuffer*(
+  hConsoleInput: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetConsoleScreenBufferSize*(
+  hConsoleOutput: HANDLE, dwSize: COORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetConsoleCursorPosition*(
+  hConsoleOutput: HANDLE, dwCursorPosition: COORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetConsoleCursorInfo*(
+  hConsoleOutput: HANDLE, lpConsoleCursorInfo: ptr CONSOLE_CURSOR_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ScrollConsoleScreenBufferA*(
+  hConsoleOutput: HANDLE,
+  lpScrollRectangle: ptr SMALL_RECT,
+  lpClipRectangle: ptr SMALL_RECT,
+  dwDestinationOrigin: COORD,
+  lpFill: ptr CHAR_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ScrollConsoleScreenBufferW*(
+  hConsoleOutput: HANDLE,
+  lpScrollRectangle: ptr SMALL_RECT,
+  lpClipRectangle: ptr SMALL_RECT,
+  dwDestinationOrigin: COORD,
+  lpFill: ptr CHAR_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetConsoleWindowInfo*(
+  hConsoleOutput: HANDLE, bAbsolute: WINBOOL, lpConsoleWindow: ptr SMALL_RECT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetConsoleTextAttribute*(
+  hConsoleOutput: HANDLE, wAttributes: WORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetConsoleCtrlHandler*(
+  HandlerRoutine: PHANDLER_ROUTINE, Add: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GenerateConsoleCtrlEvent*(
+  dwCtrlEvent: DWORD, dwProcessGroupId: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc AllocConsole*(): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc FreeConsole*(): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AttachConsole*(dwProcessId: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleTitleA*(lpConsoleTitle: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleTitleW*(lpConsoleTitle: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleTitleA*(lpConsoleTitle: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleTitleW*(lpConsoleTitle: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReadConsoleA*(hConsoleInput: HANDLE, lpBuffer: LPVOID, nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ReadConsoleW*(hConsoleInput: HANDLE, lpBuffer: LPVOID, nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteConsoleA*(hConsoleOutput: HANDLE, lpBuffer: pointer, nNumberOfCharsToWrite: DWORD, lpNumberOfCharsWritten: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WriteConsoleW*(hConsoleOutput: HANDLE, lpBuffer: pointer, nNumberOfCharsToWrite: DWORD, lpNumberOfCharsWritten: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CreateConsoleScreenBuffer*(dwDesiredAccess: DWORD, dwShareMode: DWORD, lpSecurityAttributes: ptr SECURITY_ATTRIBUTES, dwFlags: DWORD, lpScreenBufferData: LPVOID): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc AttachConsole*(
+  dwProcessId: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleTitleA*(
+  lpConsoleTitle: LPSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleTitleW*(
+  lpConsoleTitle: LPWSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetConsoleTitleA*(
+  lpConsoleTitle: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetConsoleTitleW*(
+  lpConsoleTitle: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReadConsoleA*(
+  hConsoleInput: HANDLE,
+  lpBuffer: LPVOID,
+  nNumberOfCharsToRead: DWORD,
+  lpNumberOfCharsRead: LPDWORD,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ReadConsoleW*(
+  hConsoleInput: HANDLE,
+  lpBuffer: LPVOID,
+  nNumberOfCharsToRead: DWORD,
+  lpNumberOfCharsRead: LPDWORD,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteConsoleA*(
+  hConsoleOutput: HANDLE,
+  lpBuffer: pointer,
+  nNumberOfCharsToWrite: DWORD,
+  lpNumberOfCharsWritten: LPDWORD,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WriteConsoleW*(
+  hConsoleOutput: HANDLE,
+  lpBuffer: pointer,
+  nNumberOfCharsToWrite: DWORD,
+  lpNumberOfCharsWritten: LPDWORD,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CreateConsoleScreenBuffer*(
+  dwDesiredAccess: DWORD,
+  dwShareMode: DWORD,
+  lpSecurityAttributes: ptr SECURITY_ATTRIBUTES,
+  dwFlags: DWORD,
+  lpScreenBufferData: LPVOID,
+): HANDLE {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetConsoleCP*(): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleCP*(wCodePageID: UINT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc SetConsoleCP*(
+  wCodePageID: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetConsoleOutputCP*(): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleOutputCP*(wCodePageID: UINT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleDisplayMode*(lpModeFlags: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleDisplayMode*(hConsoleOutput: HANDLE, dwFlags: DWORD, lpNewScreenBufferDimensions: PCOORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc SetConsoleOutputCP*(
+  wCodePageID: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleDisplayMode*(
+  lpModeFlags: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetConsoleDisplayMode*(
+  hConsoleOutput: HANDLE, dwFlags: DWORD, lpNewScreenBufferDimensions: PCOORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetConsoleWindow*(): HWND {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleProcessList*(lpdwProcessList: LPDWORD, dwProcessCount: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AddConsoleAliasA*(Source: LPSTR, Target: LPSTR, ExeName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc AddConsoleAliasW*(Source: LPWSTR, Target: LPWSTR, ExeName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleAliasA*(Source: LPSTR, TargetBuffer: LPSTR, TargetBufferLength: DWORD, ExeName: LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleAliasW*(Source: LPWSTR, TargetBuffer: LPWSTR, TargetBufferLength: DWORD, ExeName: LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleAliasesLengthA*(ExeName: LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleAliasesLengthW*(ExeName: LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleAliasExesLengthA*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleAliasExesLengthW*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleAliasesA*(AliasBuffer: LPSTR, AliasBufferLength: DWORD, ExeName: LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleAliasesW*(AliasBuffer: LPWSTR, AliasBufferLength: DWORD, ExeName: LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleAliasExesA*(ExeNameBuffer: LPSTR, ExeNameBufferLength: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleAliasExesW*(ExeNameBuffer: LPWSTR, ExeNameBufferLength: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleHistoryInfo*(lpConsoleHistoryInfo: PCONSOLE_HISTORY_INFO): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleOriginalTitleA*(lpConsoleTitle: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleOriginalTitleW*(lpConsoleTitle: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetConsoleScreenBufferInfoEx*(hConsoleOutput: HANDLE, lpConsoleScreenBufferInfoEx: PCONSOLE_SCREEN_BUFFER_INFOEX): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCurrentConsoleFontEx*(hConsoleOutput: HANDLE, bMaximumWindow: WINBOOL, lpConsoleCurrentFontEx: PCONSOLE_FONT_INFOEX): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleHistoryInfo*(lpConsoleHistoryInfo: PCONSOLE_HISTORY_INFO): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetConsoleScreenBufferInfoEx*(hConsoleOutput: HANDLE, lpConsoleScreenBufferInfoEx: PCONSOLE_SCREEN_BUFFER_INFOEX): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetCurrentConsoleFontEx*(hConsoleOutput: HANDLE, bMaximumWindow: WINBOOL, lpConsoleCurrentFontEx: PCONSOLE_FONT_INFOEX): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc GetConsoleProcessList*(
+  lpdwProcessList: LPDWORD, dwProcessCount: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AddConsoleAliasA*(
+  Source: LPSTR, Target: LPSTR, ExeName: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc AddConsoleAliasW*(
+  Source: LPWSTR, Target: LPWSTR, ExeName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleAliasA*(
+  Source: LPSTR, TargetBuffer: LPSTR, TargetBufferLength: DWORD, ExeName: LPSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleAliasW*(
+  Source: LPWSTR, TargetBuffer: LPWSTR, TargetBufferLength: DWORD, ExeName: LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleAliasesLengthA*(
+  ExeName: LPSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleAliasesLengthW*(
+  ExeName: LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleAliasExesLengthA*(): DWORD {.
+  winapi, stdcall, dynlib: "kernel32", importc
+.}
+
+proc GetConsoleAliasExesLengthW*(): DWORD {.
+  winapi, stdcall, dynlib: "kernel32", importc
+.}
+
+proc GetConsoleAliasesA*(
+  AliasBuffer: LPSTR, AliasBufferLength: DWORD, ExeName: LPSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleAliasesW*(
+  AliasBuffer: LPWSTR, AliasBufferLength: DWORD, ExeName: LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleAliasExesA*(
+  ExeNameBuffer: LPSTR, ExeNameBufferLength: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleAliasExesW*(
+  ExeNameBuffer: LPWSTR, ExeNameBufferLength: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleHistoryInfo*(
+  lpConsoleHistoryInfo: PCONSOLE_HISTORY_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleOriginalTitleA*(
+  lpConsoleTitle: LPSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleOriginalTitleW*(
+  lpConsoleTitle: LPWSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetConsoleScreenBufferInfoEx*(
+  hConsoleOutput: HANDLE, lpConsoleScreenBufferInfoEx: PCONSOLE_SCREEN_BUFFER_INFOEX
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCurrentConsoleFontEx*(
+  hConsoleOutput: HANDLE,
+  bMaximumWindow: WINBOOL,
+  lpConsoleCurrentFontEx: PCONSOLE_FONT_INFOEX,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetConsoleHistoryInfo*(
+  lpConsoleHistoryInfo: PCONSOLE_HISTORY_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetConsoleScreenBufferInfoEx*(
+  hConsoleOutput: HANDLE, lpConsoleScreenBufferInfoEx: PCONSOLE_SCREEN_BUFFER_INFOEX
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetCurrentConsoleFontEx*(
+  hConsoleOutput: HANDLE,
+  bMaximumWindow: WINBOOL,
+  lpConsoleCurrentFontEx: PCONSOLE_FONT_INFOEX,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 when winimUnicode:
-  proc PeekConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUT_RECORD, nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "PeekConsoleInputW".}
-  proc ReadConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUT_RECORD, nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleInputW".}
-  proc WriteConsoleInput*(hConsoleInput: HANDLE, lpBuffer: ptr INPUT_RECORD, nLength: DWORD, lpNumberOfEventsWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleInputW".}
-  proc ReadConsoleOutput*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO, dwBufferSize: COORD, dwBufferCoord: COORD, lpReadRegion: PSMALL_RECT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputW".}
-  proc WriteConsoleOutput*(hConsoleOutput: HANDLE, lpBuffer: ptr CHAR_INFO, dwBufferSize: COORD, dwBufferCoord: COORD, lpWriteRegion: PSMALL_RECT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputW".}
-  proc ReadConsoleOutputCharacter*(hConsoleOutput: HANDLE, lpCharacter: LPWSTR, nLength: DWORD, dwReadCoord: COORD, lpNumberOfCharsRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterW".}
-  proc WriteConsoleOutputCharacter*(hConsoleOutput: HANDLE, lpCharacter: LPCWSTR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterW".}
-  proc FillConsoleOutputCharacter*(hConsoleOutput: HANDLE, cCharacter: WCHAR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterW".}
-  proc ScrollConsoleScreenBuffer*(hConsoleOutput: HANDLE, lpScrollRectangle: ptr SMALL_RECT, lpClipRectangle: ptr SMALL_RECT, dwDestinationOrigin: COORD, lpFill: ptr CHAR_INFO): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ScrollConsoleScreenBufferW".}
-  proc GetConsoleTitle*(lpConsoleTitle: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleTitleW".}
-  proc SetConsoleTitle*(lpConsoleTitle: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetConsoleTitleW".}
-  proc ReadConsole*(hConsoleInput: HANDLE, lpBuffer: LPVOID, nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleW".}
-  proc WriteConsole*(hConsoleOutput: HANDLE, lpBuffer: pointer, nNumberOfCharsToWrite: DWORD, lpNumberOfCharsWritten: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleW".}
-  proc AddConsoleAlias*(Source: LPWSTR, Target: LPWSTR, ExeName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "AddConsoleAliasW".}
-  proc GetConsoleAlias*(Source: LPWSTR, TargetBuffer: LPWSTR, TargetBufferLength: DWORD, ExeName: LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasW".}
-  proc GetConsoleAliasesLength*(ExeName: LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasesLengthW".}
-  proc GetConsoleAliasExesLength*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasExesLengthW".}
-  proc GetConsoleAliases*(AliasBuffer: LPWSTR, AliasBufferLength: DWORD, ExeName: LPWSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasesW".}
-  proc GetConsoleAliasExes*(ExeNameBuffer: LPWSTR, ExeNameBufferLength: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasExesW".}
-  proc GetConsoleOriginalTitle*(lpConsoleTitle: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleOriginalTitleW".}
+  proc PeekConsoleInput*(
+    hConsoleInput: HANDLE,
+    lpBuffer: PINPUT_RECORD,
+    nLength: DWORD,
+    lpNumberOfEventsRead: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "PeekConsoleInputW".}
+
+  proc ReadConsoleInput*(
+    hConsoleInput: HANDLE,
+    lpBuffer: PINPUT_RECORD,
+    nLength: DWORD,
+    lpNumberOfEventsRead: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleInputW".}
+
+  proc WriteConsoleInput*(
+    hConsoleInput: HANDLE,
+    lpBuffer: ptr INPUT_RECORD,
+    nLength: DWORD,
+    lpNumberOfEventsWritten: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleInputW".}
+
+  proc ReadConsoleOutput*(
+    hConsoleOutput: HANDLE,
+    lpBuffer: PCHAR_INFO,
+    dwBufferSize: COORD,
+    dwBufferCoord: COORD,
+    lpReadRegion: PSMALL_RECT,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputW".}
+
+  proc WriteConsoleOutput*(
+    hConsoleOutput: HANDLE,
+    lpBuffer: ptr CHAR_INFO,
+    dwBufferSize: COORD,
+    dwBufferCoord: COORD,
+    lpWriteRegion: PSMALL_RECT,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputW".}
+
+  proc ReadConsoleOutputCharacter*(
+    hConsoleOutput: HANDLE,
+    lpCharacter: LPWSTR,
+    nLength: DWORD,
+    dwReadCoord: COORD,
+    lpNumberOfCharsRead: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterW"
+  .}
+
+  proc WriteConsoleOutputCharacter*(
+    hConsoleOutput: HANDLE,
+    lpCharacter: LPCWSTR,
+    nLength: DWORD,
+    dwWriteCoord: COORD,
+    lpNumberOfCharsWritten: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterW"
+  .}
+
+  proc FillConsoleOutputCharacter*(
+    hConsoleOutput: HANDLE,
+    cCharacter: WCHAR,
+    nLength: DWORD,
+    dwWriteCoord: COORD,
+    lpNumberOfCharsWritten: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterW"
+  .}
+
+  proc ScrollConsoleScreenBuffer*(
+    hConsoleOutput: HANDLE,
+    lpScrollRectangle: ptr SMALL_RECT,
+    lpClipRectangle: ptr SMALL_RECT,
+    dwDestinationOrigin: COORD,
+    lpFill: ptr CHAR_INFO,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "ScrollConsoleScreenBufferW"
+  .}
+
+  proc GetConsoleTitle*(
+    lpConsoleTitle: LPWSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleTitleW".}
+
+  proc SetConsoleTitle*(
+    lpConsoleTitle: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetConsoleTitleW".}
+
+  proc ReadConsole*(
+    hConsoleInput: HANDLE,
+    lpBuffer: LPVOID,
+    nNumberOfCharsToRead: DWORD,
+    lpNumberOfCharsRead: LPDWORD,
+    lpReserved: LPVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleW".}
+
+  proc WriteConsole*(
+    hConsoleOutput: HANDLE,
+    lpBuffer: pointer,
+    nNumberOfCharsToWrite: DWORD,
+    lpNumberOfCharsWritten: LPDWORD,
+    lpReserved: LPVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleW".}
+
+  proc AddConsoleAlias*(
+    Source: LPWSTR, Target: LPWSTR, ExeName: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "AddConsoleAliasW".}
+
+  proc GetConsoleAlias*(
+    Source: LPWSTR, TargetBuffer: LPWSTR, TargetBufferLength: DWORD, ExeName: LPWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasW".}
+
+  proc GetConsoleAliasesLength*(
+    ExeName: LPWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasesLengthW".}
+
+  proc GetConsoleAliasExesLength*(): DWORD {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasExesLengthW"
+  .}
+
+  proc GetConsoleAliases*(
+    AliasBuffer: LPWSTR, AliasBufferLength: DWORD, ExeName: LPWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasesW".}
+
+  proc GetConsoleAliasExes*(
+    ExeNameBuffer: LPWSTR, ExeNameBufferLength: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasExesW".}
+
+  proc GetConsoleOriginalTitle*(
+    lpConsoleTitle: LPWSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleOriginalTitleW".}
+
 when winimAnsi:
-  proc PeekConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUT_RECORD, nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "PeekConsoleInputA".}
-  proc ReadConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUT_RECORD, nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleInputA".}
-  proc WriteConsoleInput*(hConsoleInput: HANDLE, lpBuffer: ptr INPUT_RECORD, nLength: DWORD, lpNumberOfEventsWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleInputA".}
-  proc ReadConsoleOutput*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO, dwBufferSize: COORD, dwBufferCoord: COORD, lpReadRegion: PSMALL_RECT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputA".}
-  proc WriteConsoleOutput*(hConsoleOutput: HANDLE, lpBuffer: ptr CHAR_INFO, dwBufferSize: COORD, dwBufferCoord: COORD, lpWriteRegion: PSMALL_RECT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputA".}
-  proc ReadConsoleOutputCharacter*(hConsoleOutput: HANDLE, lpCharacter: LPSTR, nLength: DWORD, dwReadCoord: COORD, lpNumberOfCharsRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterA".}
-  proc WriteConsoleOutputCharacter*(hConsoleOutput: HANDLE, lpCharacter: LPCSTR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterA".}
-  proc FillConsoleOutputCharacter*(hConsoleOutput: HANDLE, cCharacter: CHAR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterA".}
-  proc ScrollConsoleScreenBuffer*(hConsoleOutput: HANDLE, lpScrollRectangle: ptr SMALL_RECT, lpClipRectangle: ptr SMALL_RECT, dwDestinationOrigin: COORD, lpFill: ptr CHAR_INFO): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ScrollConsoleScreenBufferA".}
-  proc GetConsoleTitle*(lpConsoleTitle: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleTitleA".}
-  proc SetConsoleTitle*(lpConsoleTitle: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetConsoleTitleA".}
-  proc ReadConsole*(hConsoleInput: HANDLE, lpBuffer: LPVOID, nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleA".}
-  proc WriteConsole*(hConsoleOutput: HANDLE, lpBuffer: pointer, nNumberOfCharsToWrite: DWORD, lpNumberOfCharsWritten: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleA".}
-  proc AddConsoleAlias*(Source: LPSTR, Target: LPSTR, ExeName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "AddConsoleAliasA".}
-  proc GetConsoleAlias*(Source: LPSTR, TargetBuffer: LPSTR, TargetBufferLength: DWORD, ExeName: LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasA".}
-  proc GetConsoleAliasesLength*(ExeName: LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasesLengthA".}
-  proc GetConsoleAliasExesLength*(): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasExesLengthA".}
-  proc GetConsoleAliases*(AliasBuffer: LPSTR, AliasBufferLength: DWORD, ExeName: LPSTR): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasesA".}
-  proc GetConsoleAliasExes*(ExeNameBuffer: LPSTR, ExeNameBufferLength: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasExesA".}
-  proc GetConsoleOriginalTitle*(lpConsoleTitle: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleOriginalTitleA".}
+  proc PeekConsoleInput*(
+    hConsoleInput: HANDLE,
+    lpBuffer: PINPUT_RECORD,
+    nLength: DWORD,
+    lpNumberOfEventsRead: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "PeekConsoleInputA".}
+
+  proc ReadConsoleInput*(
+    hConsoleInput: HANDLE,
+    lpBuffer: PINPUT_RECORD,
+    nLength: DWORD,
+    lpNumberOfEventsRead: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleInputA".}
+
+  proc WriteConsoleInput*(
+    hConsoleInput: HANDLE,
+    lpBuffer: ptr INPUT_RECORD,
+    nLength: DWORD,
+    lpNumberOfEventsWritten: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleInputA".}
+
+  proc ReadConsoleOutput*(
+    hConsoleOutput: HANDLE,
+    lpBuffer: PCHAR_INFO,
+    dwBufferSize: COORD,
+    dwBufferCoord: COORD,
+    lpReadRegion: PSMALL_RECT,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputA".}
+
+  proc WriteConsoleOutput*(
+    hConsoleOutput: HANDLE,
+    lpBuffer: ptr CHAR_INFO,
+    dwBufferSize: COORD,
+    dwBufferCoord: COORD,
+    lpWriteRegion: PSMALL_RECT,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputA".}
+
+  proc ReadConsoleOutputCharacter*(
+    hConsoleOutput: HANDLE,
+    lpCharacter: LPSTR,
+    nLength: DWORD,
+    dwReadCoord: COORD,
+    lpNumberOfCharsRead: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterA"
+  .}
+
+  proc WriteConsoleOutputCharacter*(
+    hConsoleOutput: HANDLE,
+    lpCharacter: LPCSTR,
+    nLength: DWORD,
+    dwWriteCoord: COORD,
+    lpNumberOfCharsWritten: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterA"
+  .}
+
+  proc FillConsoleOutputCharacter*(
+    hConsoleOutput: HANDLE,
+    cCharacter: CHAR,
+    nLength: DWORD,
+    dwWriteCoord: COORD,
+    lpNumberOfCharsWritten: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterA"
+  .}
+
+  proc ScrollConsoleScreenBuffer*(
+    hConsoleOutput: HANDLE,
+    lpScrollRectangle: ptr SMALL_RECT,
+    lpClipRectangle: ptr SMALL_RECT,
+    dwDestinationOrigin: COORD,
+    lpFill: ptr CHAR_INFO,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "ScrollConsoleScreenBufferA"
+  .}
+
+  proc GetConsoleTitle*(
+    lpConsoleTitle: LPSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleTitleA".}
+
+  proc SetConsoleTitle*(
+    lpConsoleTitle: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetConsoleTitleA".}
+
+  proc ReadConsole*(
+    hConsoleInput: HANDLE,
+    lpBuffer: LPVOID,
+    nNumberOfCharsToRead: DWORD,
+    lpNumberOfCharsRead: LPDWORD,
+    lpReserved: LPVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "ReadConsoleA".}
+
+  proc WriteConsole*(
+    hConsoleOutput: HANDLE,
+    lpBuffer: pointer,
+    nNumberOfCharsToWrite: DWORD,
+    lpNumberOfCharsWritten: LPDWORD,
+    lpReserved: LPVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "WriteConsoleA".}
+
+  proc AddConsoleAlias*(
+    Source: LPSTR, Target: LPSTR, ExeName: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "AddConsoleAliasA".}
+
+  proc GetConsoleAlias*(
+    Source: LPSTR, TargetBuffer: LPSTR, TargetBufferLength: DWORD, ExeName: LPSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasA".}
+
+  proc GetConsoleAliasesLength*(
+    ExeName: LPSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasesLengthA".}
+
+  proc GetConsoleAliasExesLength*(): DWORD {.
+    winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasExesLengthA"
+  .}
+
+  proc GetConsoleAliases*(
+    AliasBuffer: LPSTR, AliasBufferLength: DWORD, ExeName: LPSTR
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasesA".}
+
+  proc GetConsoleAliasExes*(
+    ExeNameBuffer: LPSTR, ExeNameBufferLength: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleAliasExesA".}
+
+  proc GetConsoleOriginalTitle*(
+    lpConsoleTitle: LPSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "kernel32", importc: "GetConsoleOriginalTitleA".}
--- a/semicongine/thirdparty/winim/winim/inc/wincred.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/wincred.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -18,12 +18,14 @@
     Flags*: DWORD
     ValueSize*: DWORD
     Value*: LPBYTE
+
   PCREDENTIAL_ATTRIBUTEA* = ptr CREDENTIAL_ATTRIBUTEA
   CREDENTIAL_ATTRIBUTEW* {.pure.} = object
     Keyword*: LPWSTR
     Flags*: DWORD
     ValueSize*: DWORD
     Value*: LPBYTE
+
   PCREDENTIAL_ATTRIBUTEW* = ptr CREDENTIAL_ATTRIBUTEW
   CREDENTIALA* {.pure.} = object
     Flags*: DWORD
@@ -38,6 +40,7 @@
     Attributes*: PCREDENTIAL_ATTRIBUTEA
     TargetAlias*: LPSTR
     UserName*: LPSTR
+
   PCREDENTIALA* = ptr CREDENTIALA
   CREDENTIALW* {.pure.} = object
     Flags*: DWORD
@@ -52,6 +55,7 @@
     Attributes*: PCREDENTIAL_ATTRIBUTEW
     TargetAlias*: LPWSTR
     UserName*: LPWSTR
+
   PCREDENTIALW* = ptr CREDENTIALW
   CREDENTIAL_TARGET_INFORMATIONA* {.pure.} = object
     TargetName*: LPSTR
@@ -64,6 +68,7 @@
     Flags*: ULONG
     CredTypeCount*: DWORD
     CredTypes*: LPDWORD
+
   PCREDENTIAL_TARGET_INFORMATIONA* = ptr CREDENTIAL_TARGET_INFORMATIONA
   CREDENTIAL_TARGET_INFORMATIONW* {.pure.} = object
     TargetName*: LPWSTR
@@ -76,16 +81,19 @@
     Flags*: ULONG
     CredTypeCount*: DWORD
     CredTypes*: LPDWORD
+
   PCREDENTIAL_TARGET_INFORMATIONW* = ptr CREDENTIAL_TARGET_INFORMATIONW
-const
-  CERT_HASH_LENGTH* = 20
+
+const CERT_HASH_LENGTH* = 20
 type
   CERT_CREDENTIAL_INFO* {.pure.} = object
     cbSize*: ULONG
     rgbHashOfCert*: array[CERT_HASH_LENGTH, UCHAR]
+
   PCERT_CREDENTIAL_INFO* = ptr CERT_CREDENTIAL_INFO
   USERNAME_TARGET_CREDENTIAL_INFO* {.pure.} = object
     UserName*: LPWSTR
+
   PUSERNAME_TARGET_CREDENTIAL_INFO* = ptr USERNAME_TARGET_CREDENTIAL_INFO
   CREDUI_INFOA* {.pure.} = object
     cbSize*: DWORD
@@ -93,6 +101,7 @@
     pszMessageText*: PCSTR
     pszCaptionText*: PCSTR
     hbmBanner*: HBITMAP
+
   PCREDUI_INFOA* = ptr CREDUI_INFOA
   CREDUI_INFOW* {.pure.} = object
     cbSize*: DWORD
@@ -100,12 +109,14 @@
     pszMessageText*: PCWSTR
     pszCaptionText*: PCWSTR
     hbmBanner*: HBITMAP
+
   PCREDUI_INFOW* = ptr CREDUI_INFOW
+
 const
   CRED_MAX_STRING_LENGTH* = 256
-  CRED_MAX_USERNAME_LENGTH* = 256+1+256
+  CRED_MAX_USERNAME_LENGTH* = 256 + 1 + 256
   CRED_MAX_GENERIC_TARGET_NAME_LENGTH* = 32767
-  CRED_MAX_DOMAIN_TARGET_NAME_LENGTH* = 256+1+80
+  CRED_MAX_DOMAIN_TARGET_NAME_LENGTH* = 256 + 1 + 80
   CRED_MAX_VALUE_SIZE* = 256
   CRED_MAX_ATTRIBUTES* = 64
   CRED_SESSION_WILDCARD_NAME_W* = "*Session"
@@ -120,7 +131,7 @@
   CRED_TYPE_DOMAIN_CERTIFICATE* = 3
   CRED_TYPE_DOMAIN_VISIBLE_PASSWORD* = 4
   CRED_TYPE_MAXIMUM* = 5
-  CRED_TYPE_MAXIMUM_EX* = CRED_TYPE_MAXIMUM+1000
+  CRED_TYPE_MAXIMUM_EX* = CRED_TYPE_MAXIMUM + 1000
   CRED_MAX_CREDENTIAL_BLOB_SIZE* = 512
   CRED_PERSIST_NONE* = 0
   CRED_PERSIST_SESSION* = 1
@@ -140,7 +151,7 @@
   CREDUI_MAX_GENERIC_TARGET_LENGTH* = CRED_MAX_GENERIC_TARGET_NAME_LENGTH
   CREDUI_MAX_DOMAIN_TARGET_LENGTH* = CRED_MAX_DOMAIN_TARGET_NAME_LENGTH
   CREDUI_MAX_USERNAME_LENGTH* = CRED_MAX_USERNAME_LENGTH
-  CREDUI_MAX_PASSWORD_LENGTH* = CRED_MAX_CREDENTIAL_BLOB_SIZE/2
+  CREDUI_MAX_PASSWORD_LENGTH* = CRED_MAX_CREDENTIAL_BLOB_SIZE / 2
   CREDUI_FLAGS_INCORRECT_PASSWORD* = 0x00001
   CREDUI_FLAGS_DO_NOT_PERSIST* = 0x00002
   CREDUI_FLAGS_REQUEST_ADMINISTRATOR* = 0x00004
@@ -158,7 +169,16 @@
   CREDUI_FLAGS_GENERIC_CREDENTIALS* = 0x40000
   CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS* = 0x80000
   CREDUI_FLAGS_KEEP_USERNAME* = 0x100000
-  CREDUI_FLAGS_PROMPT_VALID* = CREDUI_FLAGS_INCORRECT_PASSWORD or CREDUI_FLAGS_DO_NOT_PERSIST or CREDUI_FLAGS_REQUEST_ADMINISTRATOR or CREDUI_FLAGS_EXCLUDE_CERTIFICATES or CREDUI_FLAGS_REQUIRE_CERTIFICATE or CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX or CREDUI_FLAGS_ALWAYS_SHOW_UI or CREDUI_FLAGS_REQUIRE_SMARTCARD or CREDUI_FLAGS_PASSWORD_ONLY_OK or CREDUI_FLAGS_VALIDATE_USERNAME or CREDUI_FLAGS_COMPLETE_USERNAME or CREDUI_FLAGS_PERSIST or CREDUI_FLAGS_SERVER_CREDENTIAL or CREDUI_FLAGS_EXPECT_CONFIRMATION or CREDUI_FLAGS_GENERIC_CREDENTIALS or CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS or CREDUI_FLAGS_KEEP_USERNAME
+  CREDUI_FLAGS_PROMPT_VALID* =
+    CREDUI_FLAGS_INCORRECT_PASSWORD or CREDUI_FLAGS_DO_NOT_PERSIST or
+    CREDUI_FLAGS_REQUEST_ADMINISTRATOR or CREDUI_FLAGS_EXCLUDE_CERTIFICATES or
+    CREDUI_FLAGS_REQUIRE_CERTIFICATE or CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX or
+    CREDUI_FLAGS_ALWAYS_SHOW_UI or CREDUI_FLAGS_REQUIRE_SMARTCARD or
+    CREDUI_FLAGS_PASSWORD_ONLY_OK or CREDUI_FLAGS_VALIDATE_USERNAME or
+    CREDUI_FLAGS_COMPLETE_USERNAME or CREDUI_FLAGS_PERSIST or
+    CREDUI_FLAGS_SERVER_CREDENTIAL or CREDUI_FLAGS_EXPECT_CONFIRMATION or
+    CREDUI_FLAGS_GENERIC_CREDENTIALS or CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS or
+    CREDUI_FLAGS_KEEP_USERNAME
   CRED_PRESERVE_CREDENTIAL_BLOB* = 0x1
   CRED_CACHE_TARGET_INFORMATION* = 0x1
   CRED_ALLOW_NAME_RESOLUTION* = 0x1
@@ -174,61 +194,305 @@
   credUserProtection* = 1
   credTrustedProtection* = 2
 when winimUnicode:
-  const
-    CRED_SESSION_WILDCARD_NAME* = CRED_SESSION_WILDCARD_NAME_W
+  const CRED_SESSION_WILDCARD_NAME* = CRED_SESSION_WILDCARD_NAME_W
 when winimAnsi:
-  const
-    CRED_SESSION_WILDCARD_NAME* = CRED_SESSION_WILDCARD_NAME_A
-const
-  CRED_SESSION_WILDCARD_NAME_LENGTH* = CRED_SESSION_WILDCARD_NAME.len
-proc CredWriteW*(Credential: PCREDENTIALW, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredWriteA*(Credential: PCREDENTIALA, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredReadW*(TargetName: LPCWSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALW): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredReadA*(TargetName: LPCSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALA): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredEnumerateW*(Filter: LPCWSTR, Flags: DWORD, Count: ptr DWORD, Credential: ptr ptr PCREDENTIALW): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredEnumerateA*(Filter: LPCSTR, Flags: DWORD, Count: ptr DWORD, Credential: ptr ptr PCREDENTIALA): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredWriteDomainCredentialsW*(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONW, Credential: PCREDENTIALW, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredWriteDomainCredentialsA*(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONA, Credential: PCREDENTIALA, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredReadDomainCredentialsW*(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONW, Flags: DWORD, Count: ptr DWORD, Credential: ptr ptr PCREDENTIALW): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredReadDomainCredentialsA*(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONA, Flags: DWORD, Count: ptr DWORD, Credential: ptr ptr PCREDENTIALA): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredDeleteW*(TargetName: LPCWSTR, Type: DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredDeleteA*(TargetName: LPCSTR, Type: DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredRenameW*(OldTargetName: LPCWSTR, NewTargetName: LPCWSTR, Type: DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredRenameA*(OldTargetName: LPCSTR, NewTargetName: LPCSTR, Type: DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredGetTargetInfoW*(TargetName: LPCWSTR, Flags: DWORD, TargetInfo: ptr PCREDENTIAL_TARGET_INFORMATIONW): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredGetTargetInfoA*(TargetName: LPCSTR, Flags: DWORD, TargetInfo: ptr PCREDENTIAL_TARGET_INFORMATIONA): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredMarshalCredentialW*(CredType: CRED_MARSHAL_TYPE, Credential: PVOID, MarshaledCredential: ptr LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredMarshalCredentialA*(CredType: CRED_MARSHAL_TYPE, Credential: PVOID, MarshaledCredential: ptr LPSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredUnmarshalCredentialW*(MarshaledCredential: LPCWSTR, CredType: PCRED_MARSHAL_TYPE, Credential: ptr PVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredUnmarshalCredentialA*(MarshaledCredential: LPCSTR, CredType: PCRED_MARSHAL_TYPE, Credential: ptr PVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredIsMarshaledCredentialW*(MarshaledCredential: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredIsMarshaledCredentialA*(MarshaledCredential: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredGetSessionTypes*(MaximumPersistCount: DWORD, MaximumPersist: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+  const CRED_SESSION_WILDCARD_NAME* = CRED_SESSION_WILDCARD_NAME_A
+const CRED_SESSION_WILDCARD_NAME_LENGTH* = CRED_SESSION_WILDCARD_NAME.len
+proc CredWriteW*(
+  Credential: PCREDENTIALW, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredWriteA*(
+  Credential: PCREDENTIALA, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredReadW*(
+  TargetName: LPCWSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALW
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredReadA*(
+  TargetName: LPCSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALA
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredEnumerateW*(
+  Filter: LPCWSTR, Flags: DWORD, Count: ptr DWORD, Credential: ptr ptr PCREDENTIALW
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredEnumerateA*(
+  Filter: LPCSTR, Flags: DWORD, Count: ptr DWORD, Credential: ptr ptr PCREDENTIALA
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredWriteDomainCredentialsW*(
+  TargetInfo: PCREDENTIAL_TARGET_INFORMATIONW, Credential: PCREDENTIALW, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredWriteDomainCredentialsA*(
+  TargetInfo: PCREDENTIAL_TARGET_INFORMATIONA, Credential: PCREDENTIALA, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredReadDomainCredentialsW*(
+  TargetInfo: PCREDENTIAL_TARGET_INFORMATIONW,
+  Flags: DWORD,
+  Count: ptr DWORD,
+  Credential: ptr ptr PCREDENTIALW,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredReadDomainCredentialsA*(
+  TargetInfo: PCREDENTIAL_TARGET_INFORMATIONA,
+  Flags: DWORD,
+  Count: ptr DWORD,
+  Credential: ptr ptr PCREDENTIALA,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredDeleteW*(
+  TargetName: LPCWSTR, Type: DWORD, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredDeleteA*(
+  TargetName: LPCSTR, Type: DWORD, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredRenameW*(
+  OldTargetName: LPCWSTR, NewTargetName: LPCWSTR, Type: DWORD, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredRenameA*(
+  OldTargetName: LPCSTR, NewTargetName: LPCSTR, Type: DWORD, Flags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredGetTargetInfoW*(
+  TargetName: LPCWSTR, Flags: DWORD, TargetInfo: ptr PCREDENTIAL_TARGET_INFORMATIONW
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredGetTargetInfoA*(
+  TargetName: LPCSTR, Flags: DWORD, TargetInfo: ptr PCREDENTIAL_TARGET_INFORMATIONA
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredMarshalCredentialW*(
+  CredType: CRED_MARSHAL_TYPE, Credential: PVOID, MarshaledCredential: ptr LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredMarshalCredentialA*(
+  CredType: CRED_MARSHAL_TYPE, Credential: PVOID, MarshaledCredential: ptr LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredUnmarshalCredentialW*(
+  MarshaledCredential: LPCWSTR, CredType: PCRED_MARSHAL_TYPE, Credential: ptr PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredUnmarshalCredentialA*(
+  MarshaledCredential: LPCSTR, CredType: PCRED_MARSHAL_TYPE, Credential: ptr PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredIsMarshaledCredentialW*(
+  MarshaledCredential: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredIsMarshaledCredentialA*(
+  MarshaledCredential: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredGetSessionTypes*(
+  MaximumPersistCount: DWORD, MaximumPersist: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
 proc CredFree*(Buffer: PVOID): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredUIPromptForCredentialsW*(pUiInfo: PCREDUI_INFOW, pszTargetName: PCWSTR, pContext: PCtxtHandle, dwAuthError: DWORD, pszUserName: PWSTR, ulUserNameBufferSize: ULONG, pszPassword: PWSTR, ulPasswordBufferSize: ULONG, save: ptr WINBOOL, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredUIPromptForCredentialsA*(pUiInfo: PCREDUI_INFOA, pszTargetName: PCSTR, pContext: PCtxtHandle, dwAuthError: DWORD, pszUserName: PSTR, ulUserNameBufferSize: ULONG, pszPassword: PSTR, ulPasswordBufferSize: ULONG, save: ptr WINBOOL, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredUIParseUserNameW*(UserName: ptr WCHAR, user: ptr WCHAR, userBufferSize: ULONG, domain: ptr WCHAR, domainBufferSize: ULONG): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredUIParseUserNameA*(userName: ptr CHAR, user: ptr CHAR, userBufferSize: ULONG, domain: ptr CHAR, domainBufferSize: ULONG): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredUICmdLinePromptForCredentialsW*(pszTargetName: PCWSTR, pContext: PCtxtHandle, dwAuthError: DWORD, UserName: PWSTR, ulUserBufferSize: ULONG, pszPassword: PWSTR, ulPasswordBufferSize: ULONG, pfSave: PBOOL, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredUICmdLinePromptForCredentialsA*(pszTargetName: PCSTR, pContext: PCtxtHandle, dwAuthError: DWORD, UserName: PSTR, ulUserBufferSize: ULONG, pszPassword: PSTR, ulPasswordBufferSize: ULONG, pfSave: PBOOL, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredUIConfirmCredentialsW*(pszTargetName: PCWSTR, bConfirm: WINBOOL): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredUIConfirmCredentialsA*(pszTargetName: PCSTR, bConfirm: WINBOOL): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredUIStoreSSOCredW*(pszRealm: PCWSTR, pszUsername: PCWSTR, pszPassword: PCWSTR, bPersist: WINBOOL): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredUIReadSSOCredW*(pszRealm: PCWSTR, ppszUsername: ptr PWSTR): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredFindBestCredentialA*(TargetName: LPCSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALA): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredFindBestCredentialW*(TargetName: LPCWSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALW): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredIsProtectedA*(pszProtectedCredentials: LPSTR, pProtectionType: ptr CRED_PROTECTION_TYPE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredIsProtectedW*(pszProtectedCredentials: LPWSTR, pProtectionType: ptr CRED_PROTECTION_TYPE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredPackAuthenticationBufferA*(dwFlags: DWORD, pszUserName: LPSTR, pszPassword: LPSTR, pPackedCredentials: PBYTE, pcbPackedCredentials: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredPackAuthenticationBufferW*(dwFlags: DWORD, pszUserName: LPWSTR, pszPassword: LPWSTR, pPackedCredentials: PBYTE, pcbPackedCredentials: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredProtectW*(fAsSelf: WINBOOL, pszCredentials: LPWSTR, cchCredentials: DWORD, pszProtectedCredentials: LPWSTR, pcchMaxChars: ptr DWORD, ProtectionType: ptr CRED_PROTECTION_TYPE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredProtectA*(fAsSelf: WINBOOL, pszCredentials: LPSTR, cchCredentials: DWORD, pszProtectedCredentials: LPSTR, pcchMaxChars: ptr DWORD, ProtectionType: ptr CRED_PROTECTION_TYPE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredUIPromptForWindowsCredentialsA*(pUiInfo: PCREDUI_INFOA, dwAuthError: DWORD, pulAuthPackage: ptr ULONG, pvInAuthBuffer: LPCVOID, ulInAuthBufferSize: ULONG, ppvOutAuthBuffer: ptr LPVOID, pulOutAuthBufferSize: ptr ULONG, pfSave: ptr WINBOOL, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredUIPromptForWindowsCredentialsW*(pUiInfo: PCREDUI_INFOW, dwAuthError: DWORD, pulAuthPackage: ptr ULONG, pvInAuthBuffer: LPCVOID, ulInAuthBufferSize: ULONG, ppvOutAuthBuffer: ptr LPVOID, pulOutAuthBufferSize: ptr ULONG, pfSave: ptr WINBOOL, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredUnPackAuthenticationBufferA*(dwFlags: DWORD, pAuthBuffer: PVOID, cbAuthBuffer: DWORD, pszUserName: LPSTR, pcchMaxUserName: ptr DWORD, pszDomainName: LPSTR, pcchMaxDomainame: ptr DWORD, pszPassword: LPSTR, pcchMaxPassword: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredUnPackAuthenticationBufferW*(dwFlags: DWORD, pAuthBuffer: PVOID, cbAuthBuffer: DWORD, pszUserName: LPWSTR, pcchMaxUserName: ptr DWORD, pszDomainName: LPWSTR, pcchMaxDomainame: ptr DWORD, pszPassword: LPWSTR, pcchMaxPassword: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "credui", importc.}
-proc CredUnprotectA*(fAsSelf: WINBOOL, pszProtectedCredentials: LPSTR, cchCredentials: DWORD, pszCredentials: LPSTR, pcchMaxChars: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CredUnprotectW*(fAsSelf: WINBOOL, pszProtectedCredentials: LPWSTR, cchCredentials: DWORD, pszCredentials: LPWSTR, pcchMaxChars: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+proc CredUIPromptForCredentialsW*(
+  pUiInfo: PCREDUI_INFOW,
+  pszTargetName: PCWSTR,
+  pContext: PCtxtHandle,
+  dwAuthError: DWORD,
+  pszUserName: PWSTR,
+  ulUserNameBufferSize: ULONG,
+  pszPassword: PWSTR,
+  ulPasswordBufferSize: ULONG,
+  save: ptr WINBOOL,
+  dwFlags: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredUIPromptForCredentialsA*(
+  pUiInfo: PCREDUI_INFOA,
+  pszTargetName: PCSTR,
+  pContext: PCtxtHandle,
+  dwAuthError: DWORD,
+  pszUserName: PSTR,
+  ulUserNameBufferSize: ULONG,
+  pszPassword: PSTR,
+  ulPasswordBufferSize: ULONG,
+  save: ptr WINBOOL,
+  dwFlags: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredUIParseUserNameW*(
+  UserName: ptr WCHAR,
+  user: ptr WCHAR,
+  userBufferSize: ULONG,
+  domain: ptr WCHAR,
+  domainBufferSize: ULONG,
+): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredUIParseUserNameA*(
+  userName: ptr CHAR,
+  user: ptr CHAR,
+  userBufferSize: ULONG,
+  domain: ptr CHAR,
+  domainBufferSize: ULONG,
+): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredUICmdLinePromptForCredentialsW*(
+  pszTargetName: PCWSTR,
+  pContext: PCtxtHandle,
+  dwAuthError: DWORD,
+  UserName: PWSTR,
+  ulUserBufferSize: ULONG,
+  pszPassword: PWSTR,
+  ulPasswordBufferSize: ULONG,
+  pfSave: PBOOL,
+  dwFlags: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredUICmdLinePromptForCredentialsA*(
+  pszTargetName: PCSTR,
+  pContext: PCtxtHandle,
+  dwAuthError: DWORD,
+  UserName: PSTR,
+  ulUserBufferSize: ULONG,
+  pszPassword: PSTR,
+  ulPasswordBufferSize: ULONG,
+  pfSave: PBOOL,
+  dwFlags: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredUIConfirmCredentialsW*(
+  pszTargetName: PCWSTR, bConfirm: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredUIConfirmCredentialsA*(
+  pszTargetName: PCSTR, bConfirm: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredUIStoreSSOCredW*(
+  pszRealm: PCWSTR, pszUsername: PCWSTR, pszPassword: PCWSTR, bPersist: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredUIReadSSOCredW*(
+  pszRealm: PCWSTR, ppszUsername: ptr PWSTR
+): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredFindBestCredentialA*(
+  TargetName: LPCSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALA
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredFindBestCredentialW*(
+  TargetName: LPCWSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALW
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredIsProtectedA*(
+  pszProtectedCredentials: LPSTR, pProtectionType: ptr CRED_PROTECTION_TYPE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredIsProtectedW*(
+  pszProtectedCredentials: LPWSTR, pProtectionType: ptr CRED_PROTECTION_TYPE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredPackAuthenticationBufferA*(
+  dwFlags: DWORD,
+  pszUserName: LPSTR,
+  pszPassword: LPSTR,
+  pPackedCredentials: PBYTE,
+  pcbPackedCredentials: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredPackAuthenticationBufferW*(
+  dwFlags: DWORD,
+  pszUserName: LPWSTR,
+  pszPassword: LPWSTR,
+  pPackedCredentials: PBYTE,
+  pcbPackedCredentials: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredProtectW*(
+  fAsSelf: WINBOOL,
+  pszCredentials: LPWSTR,
+  cchCredentials: DWORD,
+  pszProtectedCredentials: LPWSTR,
+  pcchMaxChars: ptr DWORD,
+  ProtectionType: ptr CRED_PROTECTION_TYPE,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredProtectA*(
+  fAsSelf: WINBOOL,
+  pszCredentials: LPSTR,
+  cchCredentials: DWORD,
+  pszProtectedCredentials: LPSTR,
+  pcchMaxChars: ptr DWORD,
+  ProtectionType: ptr CRED_PROTECTION_TYPE,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredUIPromptForWindowsCredentialsA*(
+  pUiInfo: PCREDUI_INFOA,
+  dwAuthError: DWORD,
+  pulAuthPackage: ptr ULONG,
+  pvInAuthBuffer: LPCVOID,
+  ulInAuthBufferSize: ULONG,
+  ppvOutAuthBuffer: ptr LPVOID,
+  pulOutAuthBufferSize: ptr ULONG,
+  pfSave: ptr WINBOOL,
+  dwFlags: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredUIPromptForWindowsCredentialsW*(
+  pUiInfo: PCREDUI_INFOW,
+  dwAuthError: DWORD,
+  pulAuthPackage: ptr ULONG,
+  pvInAuthBuffer: LPCVOID,
+  ulInAuthBufferSize: ULONG,
+  ppvOutAuthBuffer: ptr LPVOID,
+  pulOutAuthBufferSize: ptr ULONG,
+  pfSave: ptr WINBOOL,
+  dwFlags: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredUnPackAuthenticationBufferA*(
+  dwFlags: DWORD,
+  pAuthBuffer: PVOID,
+  cbAuthBuffer: DWORD,
+  pszUserName: LPSTR,
+  pcchMaxUserName: ptr DWORD,
+  pszDomainName: LPSTR,
+  pcchMaxDomainame: ptr DWORD,
+  pszPassword: LPSTR,
+  pcchMaxPassword: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredUnPackAuthenticationBufferW*(
+  dwFlags: DWORD,
+  pAuthBuffer: PVOID,
+  cbAuthBuffer: DWORD,
+  pszUserName: LPWSTR,
+  pcchMaxUserName: ptr DWORD,
+  pszDomainName: LPWSTR,
+  pcchMaxDomainame: ptr DWORD,
+  pszPassword: LPWSTR,
+  pcchMaxPassword: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "credui", importc.}
+
+proc CredUnprotectA*(
+  fAsSelf: WINBOOL,
+  pszProtectedCredentials: LPSTR,
+  cchCredentials: DWORD,
+  pszCredentials: LPSTR,
+  pcchMaxChars: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CredUnprotectW*(
+  fAsSelf: WINBOOL,
+  pszProtectedCredentials: LPWSTR,
+  cchCredentials: DWORD,
+  pszCredentials: LPWSTR,
+  pcchMaxChars: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
 when winimUnicode:
   type
     CREDENTIAL_ATTRIBUTE* = CREDENTIAL_ATTRIBUTEW
@@ -239,28 +503,164 @@
     PCREDENTIAL_TARGET_INFORMATION* = PCREDENTIAL_TARGET_INFORMATIONW
     CREDUI_INFO* = CREDUI_INFOW
     PCREDUI_INFO* = PCREDUI_INFOW
-  proc CredWrite*(Credential: PCREDENTIALW, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredWriteW".}
-  proc CredRead*(TargetName: LPCWSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALW): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredReadW".}
-  proc CredEnumerate*(Filter: LPCWSTR, Flags: DWORD, Count: ptr DWORD, Credential: ptr ptr PCREDENTIALW): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredEnumerateW".}
-  proc CredWriteDomainCredentials*(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONW, Credential: PCREDENTIALW, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredWriteDomainCredentialsW".}
-  proc CredReadDomainCredentials*(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONW, Flags: DWORD, Count: ptr DWORD, Credential: ptr ptr PCREDENTIALW): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredReadDomainCredentialsW".}
-  proc CredDelete*(TargetName: LPCWSTR, Type: DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredDeleteW".}
-  proc CredRename*(OldTargetName: LPCWSTR, NewTargetName: LPCWSTR, Type: DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredRenameW".}
-  proc CredGetTargetInfo*(TargetName: LPCWSTR, Flags: DWORD, TargetInfo: ptr PCREDENTIAL_TARGET_INFORMATIONW): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredGetTargetInfoW".}
-  proc CredMarshalCredential*(CredType: CRED_MARSHAL_TYPE, Credential: PVOID, MarshaledCredential: ptr LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredMarshalCredentialW".}
-  proc CredUnmarshalCredential*(MarshaledCredential: LPCWSTR, CredType: PCRED_MARSHAL_TYPE, Credential: ptr PVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredUnmarshalCredentialW".}
-  proc CredIsMarshaledCredential*(MarshaledCredential: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredIsMarshaledCredentialW".}
-  proc CredUIPromptForCredentials*(pUiInfo: PCREDUI_INFOW, pszTargetName: PCWSTR, pContext: PCtxtHandle, dwAuthError: DWORD, pszUserName: PWSTR, ulUserNameBufferSize: ULONG, pszPassword: PWSTR, ulPasswordBufferSize: ULONG, save: ptr WINBOOL, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUIPromptForCredentialsW".}
-  proc CredUIParseUserName*(UserName: ptr WCHAR, user: ptr WCHAR, userBufferSize: ULONG, domain: ptr WCHAR, domainBufferSize: ULONG): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUIParseUserNameW".}
-  proc CredUICmdLinePromptForCredentials*(pszTargetName: PCWSTR, pContext: PCtxtHandle, dwAuthError: DWORD, UserName: PWSTR, ulUserBufferSize: ULONG, pszPassword: PWSTR, ulPasswordBufferSize: ULONG, pfSave: PBOOL, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUICmdLinePromptForCredentialsW".}
-  proc CredUIConfirmCredentials*(pszTargetName: PCWSTR, bConfirm: WINBOOL): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUIConfirmCredentialsW".}
-  proc CredFindBestCredential*(TargetName: LPCWSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALW): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredFindBestCredentialW".}
-  proc CredIsProtected*(pszProtectedCredentials: LPWSTR, pProtectionType: ptr CRED_PROTECTION_TYPE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredIsProtectedW".}
-  proc CredPackAuthenticationBuffer*(dwFlags: DWORD, pszUserName: LPWSTR, pszPassword: LPWSTR, pPackedCredentials: PBYTE, pcbPackedCredentials: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "credui", importc: "CredPackAuthenticationBufferW".}
-  proc CredProtect*(fAsSelf: WINBOOL, pszCredentials: LPWSTR, cchCredentials: DWORD, pszProtectedCredentials: LPWSTR, pcchMaxChars: ptr DWORD, ProtectionType: ptr CRED_PROTECTION_TYPE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredProtectW".}
-  proc CredUIPromptForWindowsCredentials*(pUiInfo: PCREDUI_INFOW, dwAuthError: DWORD, pulAuthPackage: ptr ULONG, pvInAuthBuffer: LPCVOID, ulInAuthBufferSize: ULONG, ppvOutAuthBuffer: ptr LPVOID, pulOutAuthBufferSize: ptr ULONG, pfSave: ptr WINBOOL, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUIPromptForWindowsCredentialsW".}
-  proc CredUnPackAuthenticationBuffer*(dwFlags: DWORD, pAuthBuffer: PVOID, cbAuthBuffer: DWORD, pszUserName: LPWSTR, pcchMaxUserName: ptr DWORD, pszDomainName: LPWSTR, pcchMaxDomainame: ptr DWORD, pszPassword: LPWSTR, pcchMaxPassword: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "credui", importc: "CredUnPackAuthenticationBufferW".}
-  proc CredUnprotect*(fAsSelf: WINBOOL, pszProtectedCredentials: LPWSTR, cchCredentials: DWORD, pszCredentials: LPWSTR, pcchMaxChars: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredUnprotectW".}
+
+  proc CredWrite*(
+    Credential: PCREDENTIALW, Flags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredWriteW".}
+
+  proc CredRead*(
+    TargetName: LPCWSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALW
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredReadW".}
+
+  proc CredEnumerate*(
+    Filter: LPCWSTR, Flags: DWORD, Count: ptr DWORD, Credential: ptr ptr PCREDENTIALW
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredEnumerateW".}
+
+  proc CredWriteDomainCredentials*(
+    TargetInfo: PCREDENTIAL_TARGET_INFORMATIONW, Credential: PCREDENTIALW, Flags: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "CredWriteDomainCredentialsW"
+  .}
+
+  proc CredReadDomainCredentials*(
+    TargetInfo: PCREDENTIAL_TARGET_INFORMATIONW,
+    Flags: DWORD,
+    Count: ptr DWORD,
+    Credential: ptr ptr PCREDENTIALW,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "CredReadDomainCredentialsW"
+  .}
+
+  proc CredDelete*(
+    TargetName: LPCWSTR, Type: DWORD, Flags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredDeleteW".}
+
+  proc CredRename*(
+    OldTargetName: LPCWSTR, NewTargetName: LPCWSTR, Type: DWORD, Flags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredRenameW".}
+
+  proc CredGetTargetInfo*(
+    TargetName: LPCWSTR, Flags: DWORD, TargetInfo: ptr PCREDENTIAL_TARGET_INFORMATIONW
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredGetTargetInfoW".}
+
+  proc CredMarshalCredential*(
+    CredType: CRED_MARSHAL_TYPE, Credential: PVOID, MarshaledCredential: ptr LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredMarshalCredentialW".}
+
+  proc CredUnmarshalCredential*(
+    MarshaledCredential: LPCWSTR, CredType: PCRED_MARSHAL_TYPE, Credential: ptr PVOID
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "CredUnmarshalCredentialW"
+  .}
+
+  proc CredIsMarshaledCredential*(
+    MarshaledCredential: LPCWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "CredIsMarshaledCredentialW"
+  .}
+
+  proc CredUIPromptForCredentials*(
+    pUiInfo: PCREDUI_INFOW,
+    pszTargetName: PCWSTR,
+    pContext: PCtxtHandle,
+    dwAuthError: DWORD,
+    pszUserName: PWSTR,
+    ulUserNameBufferSize: ULONG,
+    pszPassword: PWSTR,
+    ulPasswordBufferSize: ULONG,
+    save: ptr WINBOOL,
+    dwFlags: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUIPromptForCredentialsW".}
+
+  proc CredUIParseUserName*(
+    UserName: ptr WCHAR,
+    user: ptr WCHAR,
+    userBufferSize: ULONG,
+    domain: ptr WCHAR,
+    domainBufferSize: ULONG,
+  ): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUIParseUserNameW".}
+
+  proc CredUICmdLinePromptForCredentials*(
+    pszTargetName: PCWSTR,
+    pContext: PCtxtHandle,
+    dwAuthError: DWORD,
+    UserName: PWSTR,
+    ulUserBufferSize: ULONG,
+    pszPassword: PWSTR,
+    ulPasswordBufferSize: ULONG,
+    pfSave: PBOOL,
+    dwFlags: DWORD,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "credui", importc: "CredUICmdLinePromptForCredentialsW"
+  .}
+
+  proc CredUIConfirmCredentials*(
+    pszTargetName: PCWSTR, bConfirm: WINBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUIConfirmCredentialsW".}
+
+  proc CredFindBestCredential*(
+    TargetName: LPCWSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALW
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredFindBestCredentialW".}
+
+  proc CredIsProtected*(
+    pszProtectedCredentials: LPWSTR, pProtectionType: ptr CRED_PROTECTION_TYPE
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredIsProtectedW".}
+
+  proc CredPackAuthenticationBuffer*(
+    dwFlags: DWORD,
+    pszUserName: LPWSTR,
+    pszPassword: LPWSTR,
+    pPackedCredentials: PBYTE,
+    pcbPackedCredentials: ptr DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "credui", importc: "CredPackAuthenticationBufferW"
+  .}
+
+  proc CredProtect*(
+    fAsSelf: WINBOOL,
+    pszCredentials: LPWSTR,
+    cchCredentials: DWORD,
+    pszProtectedCredentials: LPWSTR,
+    pcchMaxChars: ptr DWORD,
+    ProtectionType: ptr CRED_PROTECTION_TYPE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredProtectW".}
+
+  proc CredUIPromptForWindowsCredentials*(
+    pUiInfo: PCREDUI_INFOW,
+    dwAuthError: DWORD,
+    pulAuthPackage: ptr ULONG,
+    pvInAuthBuffer: LPCVOID,
+    ulInAuthBufferSize: ULONG,
+    ppvOutAuthBuffer: ptr LPVOID,
+    pulOutAuthBufferSize: ptr ULONG,
+    pfSave: ptr WINBOOL,
+    dwFlags: DWORD,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "credui", importc: "CredUIPromptForWindowsCredentialsW"
+  .}
+
+  proc CredUnPackAuthenticationBuffer*(
+    dwFlags: DWORD,
+    pAuthBuffer: PVOID,
+    cbAuthBuffer: DWORD,
+    pszUserName: LPWSTR,
+    pcchMaxUserName: ptr DWORD,
+    pszDomainName: LPWSTR,
+    pcchMaxDomainame: ptr DWORD,
+    pszPassword: LPWSTR,
+    pcchMaxPassword: ptr DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "credui", importc: "CredUnPackAuthenticationBufferW"
+  .}
+
+  proc CredUnprotect*(
+    fAsSelf: WINBOOL,
+    pszProtectedCredentials: LPWSTR,
+    cchCredentials: DWORD,
+    pszCredentials: LPWSTR,
+    pcchMaxChars: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredUnprotectW".}
+
 when winimAnsi:
   type
     CREDENTIAL_ATTRIBUTE* = CREDENTIAL_ATTRIBUTEA
@@ -271,25 +671,160 @@
     PCREDENTIAL_TARGET_INFORMATION* = PCREDENTIAL_TARGET_INFORMATIONA
     CREDUI_INFO* = CREDUI_INFOA
     PCREDUI_INFO* = PCREDUI_INFOA
-  proc CredWrite*(Credential: PCREDENTIALA, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredWriteA".}
-  proc CredRead*(TargetName: LPCSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALA): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredReadA".}
-  proc CredEnumerate*(Filter: LPCSTR, Flags: DWORD, Count: ptr DWORD, Credential: ptr ptr PCREDENTIALA): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredEnumerateA".}
-  proc CredWriteDomainCredentials*(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONA, Credential: PCREDENTIALA, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredWriteDomainCredentialsA".}
-  proc CredReadDomainCredentials*(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONA, Flags: DWORD, Count: ptr DWORD, Credential: ptr ptr PCREDENTIALA): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredReadDomainCredentialsA".}
-  proc CredDelete*(TargetName: LPCSTR, Type: DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredDeleteA".}
-  proc CredRename*(OldTargetName: LPCSTR, NewTargetName: LPCSTR, Type: DWORD, Flags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredRenameA".}
-  proc CredGetTargetInfo*(TargetName: LPCSTR, Flags: DWORD, TargetInfo: ptr PCREDENTIAL_TARGET_INFORMATIONA): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredGetTargetInfoA".}
-  proc CredMarshalCredential*(CredType: CRED_MARSHAL_TYPE, Credential: PVOID, MarshaledCredential: ptr LPSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredMarshalCredentialA".}
-  proc CredUnmarshalCredential*(MarshaledCredential: LPCSTR, CredType: PCRED_MARSHAL_TYPE, Credential: ptr PVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredUnmarshalCredentialA".}
-  proc CredIsMarshaledCredential*(MarshaledCredential: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredIsMarshaledCredentialA".}
-  proc CredUIPromptForCredentials*(pUiInfo: PCREDUI_INFOA, pszTargetName: PCSTR, pContext: PCtxtHandle, dwAuthError: DWORD, pszUserName: PSTR, ulUserNameBufferSize: ULONG, pszPassword: PSTR, ulPasswordBufferSize: ULONG, save: ptr WINBOOL, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUIPromptForCredentialsA".}
-  proc CredUIParseUserName*(userName: ptr CHAR, user: ptr CHAR, userBufferSize: ULONG, domain: ptr CHAR, domainBufferSize: ULONG): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUIParseUserNameA".}
-  proc CredUICmdLinePromptForCredentials*(pszTargetName: PCSTR, pContext: PCtxtHandle, dwAuthError: DWORD, UserName: PSTR, ulUserBufferSize: ULONG, pszPassword: PSTR, ulPasswordBufferSize: ULONG, pfSave: PBOOL, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUICmdLinePromptForCredentialsA".}
-  proc CredUIConfirmCredentials*(pszTargetName: PCSTR, bConfirm: WINBOOL): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUIConfirmCredentialsA".}
-  proc CredFindBestCredential*(TargetName: LPCSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALA): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredFindBestCredentialA".}
-  proc CredIsProtected*(pszProtectedCredentials: LPSTR, pProtectionType: ptr CRED_PROTECTION_TYPE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredIsProtectedA".}
-  proc CredPackAuthenticationBuffer*(dwFlags: DWORD, pszUserName: LPSTR, pszPassword: LPSTR, pPackedCredentials: PBYTE, pcbPackedCredentials: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "credui", importc: "CredPackAuthenticationBufferA".}
-  proc CredProtect*(fAsSelf: WINBOOL, pszCredentials: LPSTR, cchCredentials: DWORD, pszProtectedCredentials: LPSTR, pcchMaxChars: ptr DWORD, ProtectionType: ptr CRED_PROTECTION_TYPE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredProtectA".}
-  proc CredUIPromptForWindowsCredentials*(pUiInfo: PCREDUI_INFOA, dwAuthError: DWORD, pulAuthPackage: ptr ULONG, pvInAuthBuffer: LPCVOID, ulInAuthBufferSize: ULONG, ppvOutAuthBuffer: ptr LPVOID, pulOutAuthBufferSize: ptr ULONG, pfSave: ptr WINBOOL, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUIPromptForWindowsCredentialsA".}
-  proc CredUnPackAuthenticationBuffer*(dwFlags: DWORD, pAuthBuffer: PVOID, cbAuthBuffer: DWORD, pszUserName: LPSTR, pcchMaxUserName: ptr DWORD, pszDomainName: LPSTR, pcchMaxDomainame: ptr DWORD, pszPassword: LPSTR, pcchMaxPassword: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "credui", importc: "CredUnPackAuthenticationBufferA".}
-  proc CredUnprotect*(fAsSelf: WINBOOL, pszProtectedCredentials: LPSTR, cchCredentials: DWORD, pszCredentials: LPSTR, pcchMaxChars: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredUnprotectA".}
+
+  proc CredWrite*(
+    Credential: PCREDENTIALA, Flags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredWriteA".}
+
+  proc CredRead*(
+    TargetName: LPCSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALA
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredReadA".}
+
+  proc CredEnumerate*(
+    Filter: LPCSTR, Flags: DWORD, Count: ptr DWORD, Credential: ptr ptr PCREDENTIALA
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredEnumerateA".}
+
+  proc CredWriteDomainCredentials*(
+    TargetInfo: PCREDENTIAL_TARGET_INFORMATIONA, Credential: PCREDENTIALA, Flags: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "CredWriteDomainCredentialsA"
+  .}
+
+  proc CredReadDomainCredentials*(
+    TargetInfo: PCREDENTIAL_TARGET_INFORMATIONA,
+    Flags: DWORD,
+    Count: ptr DWORD,
+    Credential: ptr ptr PCREDENTIALA,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "CredReadDomainCredentialsA"
+  .}
+
+  proc CredDelete*(
+    TargetName: LPCSTR, Type: DWORD, Flags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredDeleteA".}
+
+  proc CredRename*(
+    OldTargetName: LPCSTR, NewTargetName: LPCSTR, Type: DWORD, Flags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredRenameA".}
+
+  proc CredGetTargetInfo*(
+    TargetName: LPCSTR, Flags: DWORD, TargetInfo: ptr PCREDENTIAL_TARGET_INFORMATIONA
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredGetTargetInfoA".}
+
+  proc CredMarshalCredential*(
+    CredType: CRED_MARSHAL_TYPE, Credential: PVOID, MarshaledCredential: ptr LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredMarshalCredentialA".}
+
+  proc CredUnmarshalCredential*(
+    MarshaledCredential: LPCSTR, CredType: PCRED_MARSHAL_TYPE, Credential: ptr PVOID
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "CredUnmarshalCredentialA"
+  .}
+
+  proc CredIsMarshaledCredential*(
+    MarshaledCredential: LPCSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "CredIsMarshaledCredentialA"
+  .}
+
+  proc CredUIPromptForCredentials*(
+    pUiInfo: PCREDUI_INFOA,
+    pszTargetName: PCSTR,
+    pContext: PCtxtHandle,
+    dwAuthError: DWORD,
+    pszUserName: PSTR,
+    ulUserNameBufferSize: ULONG,
+    pszPassword: PSTR,
+    ulPasswordBufferSize: ULONG,
+    save: ptr WINBOOL,
+    dwFlags: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUIPromptForCredentialsA".}
+
+  proc CredUIParseUserName*(
+    userName: ptr CHAR,
+    user: ptr CHAR,
+    userBufferSize: ULONG,
+    domain: ptr CHAR,
+    domainBufferSize: ULONG,
+  ): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUIParseUserNameA".}
+
+  proc CredUICmdLinePromptForCredentials*(
+    pszTargetName: PCSTR,
+    pContext: PCtxtHandle,
+    dwAuthError: DWORD,
+    UserName: PSTR,
+    ulUserBufferSize: ULONG,
+    pszPassword: PSTR,
+    ulPasswordBufferSize: ULONG,
+    pfSave: PBOOL,
+    dwFlags: DWORD,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "credui", importc: "CredUICmdLinePromptForCredentialsA"
+  .}
+
+  proc CredUIConfirmCredentials*(
+    pszTargetName: PCSTR, bConfirm: WINBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "credui", importc: "CredUIConfirmCredentialsA".}
+
+  proc CredFindBestCredential*(
+    TargetName: LPCSTR, Type: DWORD, Flags: DWORD, Credential: ptr PCREDENTIALA
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredFindBestCredentialA".}
+
+  proc CredIsProtected*(
+    pszProtectedCredentials: LPSTR, pProtectionType: ptr CRED_PROTECTION_TYPE
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredIsProtectedA".}
+
+  proc CredPackAuthenticationBuffer*(
+    dwFlags: DWORD,
+    pszUserName: LPSTR,
+    pszPassword: LPSTR,
+    pPackedCredentials: PBYTE,
+    pcbPackedCredentials: ptr DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "credui", importc: "CredPackAuthenticationBufferA"
+  .}
+
+  proc CredProtect*(
+    fAsSelf: WINBOOL,
+    pszCredentials: LPSTR,
+    cchCredentials: DWORD,
+    pszProtectedCredentials: LPSTR,
+    pcchMaxChars: ptr DWORD,
+    ProtectionType: ptr CRED_PROTECTION_TYPE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredProtectA".}
+
+  proc CredUIPromptForWindowsCredentials*(
+    pUiInfo: PCREDUI_INFOA,
+    dwAuthError: DWORD,
+    pulAuthPackage: ptr ULONG,
+    pvInAuthBuffer: LPCVOID,
+    ulInAuthBufferSize: ULONG,
+    ppvOutAuthBuffer: ptr LPVOID,
+    pulOutAuthBufferSize: ptr ULONG,
+    pfSave: ptr WINBOOL,
+    dwFlags: DWORD,
+  ): DWORD {.
+    winapi, stdcall, dynlib: "credui", importc: "CredUIPromptForWindowsCredentialsA"
+  .}
+
+  proc CredUnPackAuthenticationBuffer*(
+    dwFlags: DWORD,
+    pAuthBuffer: PVOID,
+    cbAuthBuffer: DWORD,
+    pszUserName: LPSTR,
+    pcchMaxUserName: ptr DWORD,
+    pszDomainName: LPSTR,
+    pcchMaxDomainame: ptr DWORD,
+    pszPassword: LPSTR,
+    pcchMaxPassword: ptr DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "credui", importc: "CredUnPackAuthenticationBufferA"
+  .}
+
+  proc CredUnprotect*(
+    fAsSelf: WINBOOL,
+    pszProtectedCredentials: LPSTR,
+    cchCredentials: DWORD,
+    pszCredentials: LPSTR,
+    pcchMaxChars: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CredUnprotectA".}
--- a/semicongine/thirdparty/winim/winim/inc/wincrypt.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/wincrypt.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -47,6 +47,7 @@
     Algid*: ALG_ID
     pbOID*: ptr BYTE
     cbOID*: DWORD
+
   PCMS_KEY_INFO* = ptr CMS_KEY_INFO
   HMAC_INFO* {.pure.} = object
     HashAlgid*: ALG_ID
@@ -54,6 +55,7 @@
     cbInnerString*: DWORD
     pbOuterString*: ptr BYTE
     cbOuterString*: DWORD
+
   PHMAC_INFO* = ptr HMAC_INFO
   SCHANNEL_ALG* {.pure.} = object
     dwUse*: DWORD
@@ -61,28 +63,33 @@
     cBits*: DWORD
     dwFlags*: DWORD
     dwReserved*: DWORD
+
   PSCHANNEL_ALG* = ptr SCHANNEL_ALG
   BLOBHEADER* {.pure.} = object
     bType*: BYTE
     bVersion*: BYTE
     reserved*: WORD
     aiKeyAlg*: ALG_ID
+
   PUBLICKEYSTRUC* = BLOBHEADER
   DHPUBKEY* {.pure.} = object
     magic*: DWORD
     bitlen*: DWORD
+
   DSSPUBKEY* = DHPUBKEY
   KEAPUBKEY* = DHPUBKEY
   TEKPUBKEY* = DHPUBKEY
   DSSSEED* {.pure.} = object
     counter*: DWORD
     seed*: array[20, BYTE]
+
   DHPUBKEY_VER3* {.pure.} = object
     magic*: DWORD
     bitlenP*: DWORD
     bitlenQ*: DWORD
     bitlenJ*: DWORD
     DSSSeed*: DSSSEED
+
   DSSPUBKEY_VER3* = DHPUBKEY_VER3
   DHPRIVKEY_VER3* {.pure.} = object
     magic*: DWORD
@@ -91,27 +98,32 @@
     bitlenJ*: DWORD
     bitlenX*: DWORD
     DSSSeed*: DSSSEED
+
   DSSPRIVKEY_VER3* = DHPRIVKEY_VER3
   KEY_TYPE_SUBTYPE* {.pure.} = object
     dwKeySpec*: DWORD
     Type*: GUID
     Subtype*: GUID
+
   PKEY_TYPE_SUBTYPE* = ptr KEY_TYPE_SUBTYPE
   CRYPT_RC4_KEY_STATE* {.pure.} = object
     Key*: array[16, uint8]
     SBox*: array[256, uint8]
     i*: uint8
     j*: uint8
+
   PCRYPT_RC4_KEY_STATE* = ptr CRYPT_RC4_KEY_STATE
   CRYPT_DES_KEY_STATE* {.pure.} = object
     Key*: array[8, uint8]
     IV*: array[8, uint8]
     Feedback*: array[8, uint8]
+
   PCRYPT_DES_KEY_STATE* = ptr CRYPT_DES_KEY_STATE
   CRYPT_3DES_KEY_STATE* {.pure.} = object
     Key*: array[24, uint8]
     IV*: array[8, uint8]
     Feedback*: array[8, uint8]
+
   PCRYPT_3DES_KEY_STATE* = ptr CRYPT_3DES_KEY_STATE
   CRYPT_AES_128_KEY_STATE* {.pure.} = object
     Key*: array[16, uint8]
@@ -119,6 +131,7 @@
     EncryptionState*: array[11, array[16, uint8]]
     DecryptionState*: array[11, array[16, uint8]]
     Feedback*: array[16, uint8]
+
   PCRYPT_AES_128_KEY_STATE* = ptr CRYPT_AES_128_KEY_STATE
   CRYPT_AES_256_KEY_STATE* {.pure.} = object
     Key*: array[32, uint8]
@@ -126,10 +139,12 @@
     EncryptionState*: array[15, array[16, uint8]]
     DecryptionState*: array[15, array[16, uint8]]
     Feedback*: array[16, uint8]
+
   PCRYPT_AES_256_KEY_STATE* = ptr CRYPT_AES_256_KEY_STATE
   CRYPT_INTEGER_BLOB* {.pure.} = object
     cbData*: DWORD
     pbData*: ptr BYTE
+
   PCRYPT_INTEGER_BLOB* = ptr CRYPT_INTEGER_BLOB
   CRYPT_UINT_BLOB* = CRYPT_INTEGER_BLOB
   PCRYPT_UINT_BLOB* = ptr CRYPT_INTEGER_BLOB
@@ -161,11 +176,13 @@
     pszContentEncObjId*: LPSTR
     PubInfo*: CRYPT_DATA_BLOB
     pReserved*: pointer
+
   PCMS_DH_KEY_INFO* = ptr CMS_DH_KEY_INFO
   BCRYPT_KEY_LENGTHS_STRUCT* {.pure.} = object
     dwMinLength*: ULONG
     dwMaxLength*: ULONG
     dwIncrement*: ULONG
+
   BCRYPT_AUTH_TAG_LENGTHS_STRUCT* = BCRYPT_KEY_LENGTHS_STRUCT
   BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO* {.pure.} = object
     cbSize*: ULONG
@@ -181,24 +198,29 @@
     cbAAD*: ULONG
     cbData*: ULONGLONG
     dwFlags*: ULONG
+
   PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO* = ptr BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO
   BCryptBuffer* {.pure.} = object
     cbBuffer*: ULONG
     BufferType*: ULONG
     pvBuffer*: PVOID
+
   PBCryptBuffer* = ptr BCryptBuffer
   BCryptBufferDesc* {.pure.} = object
     ulVersion*: ULONG
     cBuffers*: ULONG
     pBuffers*: PBCryptBuffer
+
   PBCryptBufferDesc* = ptr BCryptBufferDesc
   BCRYPT_ECCKEY_BLOB* {.pure.} = object
     dwMagic*: ULONG
     cbKey*: ULONG
+
   PBCRYPT_ECCKEY_BLOB* = ptr BCRYPT_ECCKEY_BLOB
   BCRYPT_DH_KEY_BLOB* {.pure.} = object
     dwMagic*: ULONG
     cbKey*: ULONG
+
   PBCRYPT_DH_KEY_BLOB* = ptr BCRYPT_DH_KEY_BLOB
   BCRYPT_DSA_KEY_BLOB* {.pure.} = object
     dwMagic*: ULONG
@@ -206,6 +228,7 @@
     Count*: array[4, UCHAR]
     Seed*: array[20, UCHAR]
     q*: array[20, UCHAR]
+
   PBCRYPT_DSA_KEY_BLOB* = ptr BCRYPT_DSA_KEY_BLOB
   BCRYPT_DSA_KEY_BLOB_V2* {.pure.} = object
     dwMagic*: ULONG
@@ -215,65 +238,79 @@
     cbSeedLength*: ULONG
     cbGroupSize*: ULONG
     Count*: array[4, UCHAR]
+
   PBCRYPT_DSA_KEY_BLOB_V2* = ptr BCRYPT_DSA_KEY_BLOB_V2
   BCRYPT_KEY_DATA_BLOB_HEADER* {.pure.} = object
     dwMagic*: ULONG
     dwVersion*: ULONG
     cbKeyData*: ULONG
+
   PBCRYPT_KEY_DATA_BLOB_HEADER* = ptr BCRYPT_KEY_DATA_BLOB_HEADER
   BCRYPT_INTERFACE_VERSION* {.pure.} = object
     MajorVersion*: USHORT
     MinorVersion*: USHORT
+
   PBCRYPT_INTERFACE_VERSION* = ptr BCRYPT_INTERFACE_VERSION
   CRYPT_INTERFACE_REG* {.pure.} = object
     dwInterface*: ULONG
     dwFlags*: ULONG
     cFunctions*: ULONG
     rgpszFunctions*: ptr PWSTR
+
   PCRYPT_INTERFACE_REG* = ptr CRYPT_INTERFACE_REG
   CRYPT_IMAGE_REG* {.pure.} = object
     pszImage*: PWSTR
     cInterfaces*: ULONG
     rgpInterfaces*: ptr PCRYPT_INTERFACE_REG
+
   PCRYPT_IMAGE_REG* = ptr CRYPT_IMAGE_REG
   CRYPT_PROVIDER_REG* {.pure.} = object
     cAliases*: ULONG
     rgpszAliases*: ptr PWSTR
     pUM*: PCRYPT_IMAGE_REG
     pKM*: PCRYPT_IMAGE_REG
+
   PCRYPT_PROVIDER_REG* = ptr CRYPT_PROVIDER_REG
   CRYPT_PROVIDERS* {.pure.} = object
     cProviders*: ULONG
     rgpszProviders*: ptr PWSTR
+
   PCRYPT_PROVIDERS* = ptr CRYPT_PROVIDERS
   CRYPT_CONTEXT_CONFIG* {.pure.} = object
     dwFlags*: ULONG
     dwReserved*: ULONG
+
   PCRYPT_CONTEXT_CONFIG* = ptr CRYPT_CONTEXT_CONFIG
   CRYPT_CONTEXT_FUNCTION_CONFIG* {.pure.} = object
     dwFlags*: ULONG
     dwReserved*: ULONG
+
   PCRYPT_CONTEXT_FUNCTION_CONFIG* = ptr CRYPT_CONTEXT_FUNCTION_CONFIG
   CRYPT_CONTEXTS* {.pure.} = object
     cContexts*: ULONG
     rgpszContexts*: ptr PWSTR
+
   PCRYPT_CONTEXTS* = ptr CRYPT_CONTEXTS
   CRYPT_CONTEXT_FUNCTIONS* {.pure.} = object
     cFunctions*: ULONG
     rgpszFunctions*: ptr PWSTR
+
   PCRYPT_CONTEXT_FUNCTIONS* = ptr CRYPT_CONTEXT_FUNCTIONS
   CRYPT_CONTEXT_FUNCTION_PROVIDERS* {.pure.} = object
     cProviders*: ULONG
     rgpszProviders*: ptr PWSTR
+
   PCRYPT_CONTEXT_FUNCTION_PROVIDERS* = ptr CRYPT_CONTEXT_FUNCTION_PROVIDERS
   CRYPT_PROPERTY_REF* {.pure.} = object
     pszProperty*: PWSTR
     cbValue*: ULONG
     pbValue*: PUCHAR
+
   PCRYPT_PROPERTY_REF* = ptr CRYPT_PROPERTY_REF
   CRYPT_IMAGE_REF* {.pure.} = object
     pszImage*: PWSTR
     dwFlags*: ULONG
+
   PCRYPT_IMAGE_REF* = ptr CRYPT_IMAGE_REF
   CRYPT_PROVIDER_REF* {.pure.} = object
     dwInterface*: ULONG
@@ -283,10 +320,12 @@
     rgpProperties*: ptr PCRYPT_PROPERTY_REF
     pUM*: PCRYPT_IMAGE_REF
     pKM*: PCRYPT_IMAGE_REF
+
   PCRYPT_PROVIDER_REF* = ptr CRYPT_PROVIDER_REF
   CRYPT_PROVIDER_REFS* {.pure.} = object
     cProviders*: ULONG
     rgpProviders*: ptr PCRYPT_PROVIDER_REF
+
   PCRYPT_PROVIDER_REFS* = ptr CRYPT_PROVIDER_REFS
   NCryptBuffer* = BCryptBuffer
   PNCryptBuffer* = ptr BCryptBuffer
@@ -299,104 +338,140 @@
     cbIV*: ULONG
     pbOtherInfo*: PUCHAR
     cbOtherInfo*: ULONG
+
   PNCRYPT_CIPHER_PADDING_INFO* = ptr NCRYPT_CIPHER_PADDING_INFO
   NCRYPT_KEY_BLOB_HEADER* {.pure.} = object
     cbSize*: ULONG
     dwMagic*: ULONG
     cbAlgName*: ULONG
     cbKeyData*: ULONG
+
   PNCRYPT_KEY_BLOB_HEADER* = ptr NCRYPT_KEY_BLOB_HEADER
   CRYPT_BIT_BLOB* {.pure.} = object
     cbData*: DWORD
     pbData*: ptr BYTE
     cUnusedBits*: DWORD
+
   PCRYPT_BIT_BLOB* = ptr CRYPT_BIT_BLOB
   CRYPT_ALGORITHM_IDENTIFIER* {.pure.} = object
     pszObjId*: LPSTR
     Parameters*: CRYPT_OBJID_BLOB
+
   PCRYPT_ALGORITHM_IDENTIFIER* = ptr CRYPT_ALGORITHM_IDENTIFIER
   CRYPT_OBJID_TABLE* {.pure.} = object
     dwAlgId*: DWORD
     pszObjId*: LPCSTR
+
   PCRYPT_OBJID_TABLE* = ptr CRYPT_OBJID_TABLE
   CRYPT_HASH_INFO* {.pure.} = object
     HashAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     Hash*: CRYPT_HASH_BLOB
+
   PCRYPT_HASH_INFO* = ptr CRYPT_HASH_INFO
   CERT_EXTENSION* {.pure.} = object
     pszObjId*: LPSTR
     fCritical*: WINBOOL
     Value*: CRYPT_OBJID_BLOB
+
   PCERT_EXTENSION* = ptr CERT_EXTENSION
   PCCERT_EXTENSION* = ptr CERT_EXTENSION
   CRYPT_ATTRIBUTE_TYPE_VALUE* {.pure.} = object
     pszObjId*: LPSTR
     Value*: CRYPT_OBJID_BLOB
+
   PCRYPT_ATTRIBUTE_TYPE_VALUE* = ptr CRYPT_ATTRIBUTE_TYPE_VALUE
   CRYPT_ATTRIBUTE* {.pure.} = object
     pszObjId*: LPSTR
     cValue*: DWORD
     rgValue*: PCRYPT_ATTR_BLOB
+
   PCRYPT_ATTRIBUTE* = ptr CRYPT_ATTRIBUTE
   CRYPT_ATTRIBUTES* {.pure.} = object
     cAttr*: DWORD
     rgAttr*: PCRYPT_ATTRIBUTE
+
   PCRYPT_ATTRIBUTES* = ptr CRYPT_ATTRIBUTES
   CERT_RDN_ATTR* {.pure.} = object
     pszObjId*: LPSTR
     dwValueType*: DWORD
     Value*: CERT_RDN_VALUE_BLOB
+
   PCERT_RDN_ATTR* = ptr CERT_RDN_ATTR
   CERT_RDN* {.pure.} = object
     cRDNAttr*: DWORD
     rgRDNAttr*: PCERT_RDN_ATTR
+
   PCERT_RDN* = ptr CERT_RDN
   CERT_NAME_INFO* {.pure.} = object
     cRDN*: DWORD
     rgRDN*: PCERT_RDN
+
   PCERT_NAME_INFO* = ptr CERT_NAME_INFO
   CERT_NAME_VALUE* {.pure.} = object
     dwValueType*: DWORD
     Value*: CERT_RDN_VALUE_BLOB
+
   PCERT_NAME_VALUE* = ptr CERT_NAME_VALUE
   CERT_PUBLIC_KEY_INFO* {.pure.} = object
     Algorithm*: CRYPT_ALGORITHM_IDENTIFIER
     PublicKey*: CRYPT_BIT_BLOB
+
   PCERT_PUBLIC_KEY_INFO* = ptr CERT_PUBLIC_KEY_INFO
   CRYPT_ECC_PRIVATE_KEY_INFO* {.pure.} = object
     dwVersion*: DWORD
     PrivateKey*: CRYPT_DER_BLOB
     szCurveOid*: LPSTR
     PublicKey*: CRYPT_BIT_BLOB
+
   PCRYPT_ECC_PRIVATE_KEY_INFO* = ptr CRYPT_ECC_PRIVATE_KEY_INFO
   CRYPT_PRIVATE_KEY_INFO* {.pure.} = object
     Version*: DWORD
     Algorithm*: CRYPT_ALGORITHM_IDENTIFIER
     PrivateKey*: CRYPT_DER_BLOB
     pAttributes*: PCRYPT_ATTRIBUTES
+
   PCRYPT_PRIVATE_KEY_INFO* = ptr CRYPT_PRIVATE_KEY_INFO
   CRYPT_ENCRYPTED_PRIVATE_KEY_INFO* {.pure.} = object
     EncryptionAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     EncryptedPrivateKey*: CRYPT_DATA_BLOB
+
   PCRYPT_ENCRYPTED_PRIVATE_KEY_INFO* = ptr CRYPT_ENCRYPTED_PRIVATE_KEY_INFO
-  PCRYPT_RESOLVE_HCRYPTPROV_FUNC* = proc (pPrivateKeyInfo: ptr CRYPT_PRIVATE_KEY_INFO, phCryptProv: ptr HCRYPTPROV, pVoidResolveFunc: LPVOID): WINBOOL {.stdcall.}
-  PCRYPT_DECRYPT_PRIVATE_KEY_FUNC* = proc (Algorithm: CRYPT_ALGORITHM_IDENTIFIER, EncryptedPrivateKey: CRYPT_DATA_BLOB, pbClearTextKey: ptr BYTE, pcbClearTextKey: ptr DWORD, pVoidDecryptFunc: LPVOID): WINBOOL {.stdcall.}
+  PCRYPT_RESOLVE_HCRYPTPROV_FUNC* = proc(
+    pPrivateKeyInfo: ptr CRYPT_PRIVATE_KEY_INFO,
+    phCryptProv: ptr HCRYPTPROV,
+    pVoidResolveFunc: LPVOID,
+  ): WINBOOL {.stdcall.}
+  PCRYPT_DECRYPT_PRIVATE_KEY_FUNC* = proc(
+    Algorithm: CRYPT_ALGORITHM_IDENTIFIER,
+    EncryptedPrivateKey: CRYPT_DATA_BLOB,
+    pbClearTextKey: ptr BYTE,
+    pcbClearTextKey: ptr DWORD,
+    pVoidDecryptFunc: LPVOID,
+  ): WINBOOL {.stdcall.}
   CRYPT_PKCS8_IMPORT_PARAMS* {.pure.} = object
     PrivateKey*: CRYPT_DIGEST_BLOB
     pResolvehCryptProvFunc*: PCRYPT_RESOLVE_HCRYPTPROV_FUNC
     pVoidResolveFunc*: LPVOID
     pDecryptPrivateKeyFunc*: PCRYPT_DECRYPT_PRIVATE_KEY_FUNC
     pVoidDecryptFunc*: LPVOID
+
   PCRYPT_PKCS8_IMPORT_PARAMS* = ptr CRYPT_PKCS8_IMPORT_PARAMS
   CRYPT_PRIVATE_KEY_BLOB_AND_PARAMS* = CRYPT_PKCS8_IMPORT_PARAMS
   PCRYPT_PRIVATE_KEY_BLOB_AND_PARAMS* = ptr CRYPT_PKCS8_IMPORT_PARAMS
-  PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC* = proc (pAlgorithm: ptr CRYPT_ALGORITHM_IDENTIFIER, pClearTextPrivateKey: ptr CRYPT_DATA_BLOB, pbEncryptedKey: ptr BYTE, pcbEncryptedKey: ptr DWORD, pVoidEncryptFunc: LPVOID): WINBOOL {.stdcall.}
+  PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC* = proc(
+    pAlgorithm: ptr CRYPT_ALGORITHM_IDENTIFIER,
+    pClearTextPrivateKey: ptr CRYPT_DATA_BLOB,
+    pbEncryptedKey: ptr BYTE,
+    pcbEncryptedKey: ptr DWORD,
+    pVoidEncryptFunc: LPVOID,
+  ): WINBOOL {.stdcall.}
   CRYPT_PKCS8_EXPORT_PARAMS* {.pure.} = object
     hCryptProv*: HCRYPTPROV
     dwKeySpec*: DWORD
     pszPrivateKeyObjId*: LPSTR
     pEncryptPrivateKeyFunc*: PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC
     pVoidEncryptFunc*: LPVOID
+
   PCRYPT_PKCS8_EXPORT_PARAMS* = ptr CRYPT_PKCS8_EXPORT_PARAMS
   CERT_INFO* {.pure.} = object
     dwVersion*: DWORD
@@ -411,12 +486,14 @@
     SubjectUniqueId*: CRYPT_BIT_BLOB
     cExtension*: DWORD
     rgExtension*: PCERT_EXTENSION
+
   PCERT_INFO* = ptr CERT_INFO
   CRL_ENTRY* {.pure.} = object
     SerialNumber*: CRYPT_INTEGER_BLOB
     RevocationDate*: FILETIME
     cExtension*: DWORD
     rgExtension*: PCERT_EXTENSION
+
   PCRL_ENTRY* = ptr CRL_ENTRY
   CRL_INFO* {.pure.} = object
     dwVersion*: DWORD
@@ -428,15 +505,18 @@
     rgCRLEntry*: PCRL_ENTRY
     cExtension*: DWORD
     rgExtension*: PCERT_EXTENSION
+
   PCRL_INFO* = ptr CRL_INFO
   CERT_OR_CRL_BLOB* {.pure.} = object
     dwChoice*: DWORD
     cbEncoded*: DWORD
     pbEncoded*: ptr BYTE
+
   PCERT_OR_CRL_BLOB* = ptr CERT_OR_CRL_BLOB
   CERT_OR_CRL_BUNDLE* {.pure.} = object
     cItem*: DWORD
     rgItem*: PCERT_OR_CRL_BLOB
+
   PCERT_OR_CRL_BUNDLE* = ptr CERT_OR_CRL_BUNDLE
   CERT_REQUEST_INFO* {.pure.} = object
     dwVersion*: DWORD
@@ -444,20 +524,24 @@
     SubjectPublicKeyInfo*: CERT_PUBLIC_KEY_INFO
     cAttribute*: DWORD
     rgAttribute*: PCRYPT_ATTRIBUTE
+
   PCERT_REQUEST_INFO* = ptr CERT_REQUEST_INFO
   CERT_KEYGEN_REQUEST_INFO* {.pure.} = object
     dwVersion*: DWORD
     SubjectPublicKeyInfo*: CERT_PUBLIC_KEY_INFO
     pwszChallengeString*: LPWSTR
+
   PCERT_KEYGEN_REQUEST_INFO* = ptr CERT_KEYGEN_REQUEST_INFO
   CERT_SIGNED_CONTENT_INFO* {.pure.} = object
     ToBeSigned*: CRYPT_DER_BLOB
     SignatureAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     Signature*: CRYPT_BIT_BLOB
+
   PCERT_SIGNED_CONTENT_INFO* = ptr CERT_SIGNED_CONTENT_INFO
   CTL_USAGE* {.pure.} = object
     cUsageIdentifier*: DWORD
     rgpszUsageIdentifier*: ptr LPSTR
+
   PCTL_USAGE* = ptr CTL_USAGE
   CERT_ENHKEY_USAGE* = CTL_USAGE
   PCERT_ENHKEY_USAGE* = ptr CTL_USAGE
@@ -467,6 +551,7 @@
     SubjectIdentifier*: CRYPT_DATA_BLOB
     cAttribute*: DWORD
     rgAttribute*: PCRYPT_ATTRIBUTE
+
   PCTL_ENTRY* = ptr CTL_ENTRY
   CTL_INFO* {.pure.} = object
     dwVersion*: DWORD
@@ -480,6 +565,7 @@
     rgCTLEntry*: PCTL_ENTRY
     cExtension*: DWORD
     rgExtension*: PCERT_EXTENSION
+
   PCTL_INFO* = ptr CTL_INFO
   CRYPT_TIME_STAMP_REQUEST_INFO* {.pure.} = object
     pszTimeStampAlgorithm*: LPSTR
@@ -487,58 +573,70 @@
     Content*: CRYPT_OBJID_BLOB
     cAttribute*: DWORD
     rgAttribute*: PCRYPT_ATTRIBUTE
+
   PCRYPT_TIME_STAMP_REQUEST_INFO* = ptr CRYPT_TIME_STAMP_REQUEST_INFO
   CRYPT_ENROLLMENT_NAME_VALUE_PAIR* {.pure.} = object
     pwszName*: LPWSTR
     pwszValue*: LPWSTR
+
   PCRYPT_ENROLLMENT_NAME_VALUE_PAIR* = ptr CRYPT_ENROLLMENT_NAME_VALUE_PAIR
   CRYPT_CSP_PROVIDER* {.pure.} = object
     dwKeySpec*: DWORD
     pwszProviderName*: LPWSTR
     Signature*: CRYPT_BIT_BLOB
+
   PCRYPT_CSP_PROVIDER* = ptr CRYPT_CSP_PROVIDER
-  PFN_CRYPT_ALLOC* = proc (cbSize: int): LPVOID {.stdcall.}
-  PFN_CRYPT_FREE* = proc (pv: LPVOID): VOID {.stdcall.}
+  PFN_CRYPT_ALLOC* = proc(cbSize: int): LPVOID {.stdcall.}
+  PFN_CRYPT_FREE* = proc(pv: LPVOID): VOID {.stdcall.}
   CRYPT_ENCODE_PARA* {.pure.} = object
     cbSize*: DWORD
     pfnAlloc*: PFN_CRYPT_ALLOC
     pfnFree*: PFN_CRYPT_FREE
+
   PCRYPT_ENCODE_PARA* = ptr CRYPT_ENCODE_PARA
   CRYPT_DECODE_PARA* {.pure.} = object
     cbSize*: DWORD
     pfnAlloc*: PFN_CRYPT_ALLOC
     pfnFree*: PFN_CRYPT_FREE
+
   PCRYPT_DECODE_PARA* = ptr CRYPT_DECODE_PARA
   CERT_EXTENSIONS* {.pure.} = object
     cExtension*: DWORD
     rgExtension*: PCERT_EXTENSION
+
   PCERT_EXTENSIONS* = ptr CERT_EXTENSIONS
   CERT_AUTHORITY_KEY_ID_INFO* {.pure.} = object
     KeyId*: CRYPT_DATA_BLOB
     CertIssuer*: CERT_NAME_BLOB
     CertSerialNumber*: CRYPT_INTEGER_BLOB
+
   PCERT_AUTHORITY_KEY_ID_INFO* = ptr CERT_AUTHORITY_KEY_ID_INFO
   CERT_PRIVATE_KEY_VALIDITY* {.pure.} = object
     NotBefore*: FILETIME
     NotAfter*: FILETIME
+
   PCERT_PRIVATE_KEY_VALIDITY* = ptr CERT_PRIVATE_KEY_VALIDITY
   CERT_KEY_ATTRIBUTES_INFO* {.pure.} = object
     KeyId*: CRYPT_DATA_BLOB
     IntendedKeyUsage*: CRYPT_BIT_BLOB
     pPrivateKeyUsagePeriod*: PCERT_PRIVATE_KEY_VALIDITY
+
   PCERT_KEY_ATTRIBUTES_INFO* = ptr CERT_KEY_ATTRIBUTES_INFO
   CERT_POLICY_ID* {.pure.} = object
     cCertPolicyElementId*: DWORD
     rgpszCertPolicyElementId*: ptr LPSTR
+
   PCERT_POLICY_ID* = ptr CERT_POLICY_ID
   CERT_KEY_USAGE_RESTRICTION_INFO* {.pure.} = object
     cCertPolicyId*: DWORD
     rgCertPolicyId*: PCERT_POLICY_ID
     RestrictedKeyUsage*: CRYPT_BIT_BLOB
+
   PCERT_KEY_USAGE_RESTRICTION_INFO* = ptr CERT_KEY_USAGE_RESTRICTION_INFO
   CERT_OTHER_NAME* {.pure.} = object
     pszObjId*: LPSTR
     Value*: CRYPT_OBJID_BLOB
+
   PCERT_OTHER_NAME* = ptr CERT_OTHER_NAME
   CERT_ALT_NAME_ENTRY_UNION1* {.pure, union.} = object
     pOtherName*: PCERT_OTHER_NAME
@@ -548,13 +646,16 @@
     pwszURL*: LPWSTR
     IPAddress*: CRYPT_DATA_BLOB
     pszRegisteredID*: LPSTR
+
   CERT_ALT_NAME_ENTRY* {.pure.} = object
     dwAltNameChoice*: DWORD
     union1*: CERT_ALT_NAME_ENTRY_UNION1
+
   PCERT_ALT_NAME_ENTRY* = ptr CERT_ALT_NAME_ENTRY
   CERT_ALT_NAME_INFO* {.pure.} = object
     cAltEntry*: DWORD
     rgAltEntry*: PCERT_ALT_NAME_ENTRY
+
   PCERT_ALT_NAME_INFO* = ptr CERT_ALT_NAME_INFO
   CERT_BASIC_CONSTRAINTS_INFO* {.pure.} = object
     SubjectType*: CRYPT_BIT_BLOB
@@ -562,38 +663,46 @@
     dwPathLenConstraint*: DWORD
     cSubtreesConstraint*: DWORD
     rgSubtreesConstraint*: ptr CERT_NAME_BLOB
+
   PCERT_BASIC_CONSTRAINTS_INFO* = ptr CERT_BASIC_CONSTRAINTS_INFO
   CERT_BASIC_CONSTRAINTS2_INFO* {.pure.} = object
     fCA*: WINBOOL
     fPathLenConstraint*: WINBOOL
     dwPathLenConstraint*: DWORD
+
   PCERT_BASIC_CONSTRAINTS2_INFO* = ptr CERT_BASIC_CONSTRAINTS2_INFO
   CERT_POLICY_QUALIFIER_INFO* {.pure.} = object
     pszPolicyQualifierId*: LPSTR
     Qualifier*: CRYPT_OBJID_BLOB
+
   PCERT_POLICY_QUALIFIER_INFO* = ptr CERT_POLICY_QUALIFIER_INFO
   CERT_POLICY_INFO* {.pure.} = object
     pszPolicyIdentifier*: LPSTR
     cPolicyQualifier*: DWORD
     rgPolicyQualifier*: ptr CERT_POLICY_QUALIFIER_INFO
+
   PCERT_POLICY_INFO* = ptr CERT_POLICY_INFO
   CERT_POLICIES_INFO* {.pure.} = object
     cPolicyInfo*: DWORD
     rgPolicyInfo*: ptr CERT_POLICY_INFO
+
   PCERT_POLICIES_INFO* = ptr CERT_POLICIES_INFO
   CERT_POLICY_QUALIFIER_NOTICE_REFERENCE* {.pure.} = object
     pszOrganization*: LPSTR
     cNoticeNumbers*: DWORD
     rgNoticeNumbers*: ptr int32
+
   PCERT_POLICY_QUALIFIER_NOTICE_REFERENCE* = ptr CERT_POLICY_QUALIFIER_NOTICE_REFERENCE
   CERT_POLICY_QUALIFIER_USER_NOTICE* {.pure.} = object
     pNoticeReference*: ptr CERT_POLICY_QUALIFIER_NOTICE_REFERENCE
     pszDisplayText*: LPWSTR
+
   PCERT_POLICY_QUALIFIER_USER_NOTICE* = ptr CERT_POLICY_QUALIFIER_USER_NOTICE
   CPS_URLS* {.pure.} = object
     pszURL*: LPWSTR
     pAlgorithm*: ptr CRYPT_ALGORITHM_IDENTIFIER
     pDigest*: ptr CRYPT_DATA_BLOB
+
   PCPS_URLS* = ptr CPS_URLS
   CERT_POLICY95_QUALIFIER1* {.pure.} = object
     pszPracticesReference*: LPWSTR
@@ -601,72 +710,88 @@
     pszNSINoticeIdentifier*: LPSTR
     cCPSURLs*: DWORD
     rgCPSURLs*: ptr CPS_URLS
+
   PCERT_POLICY95_QUALIFIER1* = ptr CERT_POLICY95_QUALIFIER1
   CERT_POLICY_MAPPING* {.pure.} = object
     pszIssuerDomainPolicy*: LPSTR
     pszSubjectDomainPolicy*: LPSTR
+
   PCERT_POLICY_MAPPING* = ptr CERT_POLICY_MAPPING
   CERT_POLICY_MAPPINGS_INFO* {.pure.} = object
     cPolicyMapping*: DWORD
     rgPolicyMapping*: PCERT_POLICY_MAPPING
+
   PCERT_POLICY_MAPPINGS_INFO* = ptr CERT_POLICY_MAPPINGS_INFO
   CERT_POLICY_CONSTRAINTS_INFO* {.pure.} = object
     fRequireExplicitPolicy*: WINBOOL
     dwRequireExplicitPolicySkipCerts*: DWORD
     fInhibitPolicyMapping*: WINBOOL
     dwInhibitPolicyMappingSkipCerts*: DWORD
+
   PCERT_POLICY_CONSTRAINTS_INFO* = ptr CERT_POLICY_CONSTRAINTS_INFO
   CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY* {.pure.} = object
     pszObjId*: LPSTR
     cValue*: DWORD
     rgValue*: PCRYPT_DER_BLOB
+
   PCRYPT_CONTENT_INFO_SEQUENCE_OF_ANY* = ptr CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY
   CRYPT_CONTENT_INFO* {.pure.} = object
     pszObjId*: LPSTR
     Content*: CRYPT_DER_BLOB
+
   PCRYPT_CONTENT_INFO* = ptr CRYPT_CONTENT_INFO
   CRYPT_SEQUENCE_OF_ANY* {.pure.} = object
     cValue*: DWORD
     rgValue*: PCRYPT_DER_BLOB
+
   PCRYPT_SEQUENCE_OF_ANY* = ptr CRYPT_SEQUENCE_OF_ANY
   CERT_AUTHORITY_KEY_ID2_INFO* {.pure.} = object
     KeyId*: CRYPT_DATA_BLOB
     AuthorityCertIssuer*: CERT_ALT_NAME_INFO
     AuthorityCertSerialNumber*: CRYPT_INTEGER_BLOB
+
   PCERT_AUTHORITY_KEY_ID2_INFO* = ptr CERT_AUTHORITY_KEY_ID2_INFO
   CERT_ACCESS_DESCRIPTION* {.pure.} = object
     pszAccessMethod*: LPSTR
     AccessLocation*: CERT_ALT_NAME_ENTRY
+
   PCERT_ACCESS_DESCRIPTION* = ptr CERT_ACCESS_DESCRIPTION
   CERT_AUTHORITY_INFO_ACCESS* {.pure.} = object
     cAccDescr*: DWORD
     rgAccDescr*: PCERT_ACCESS_DESCRIPTION
+
   PCERT_AUTHORITY_INFO_ACCESS* = ptr CERT_AUTHORITY_INFO_ACCESS
   CERT_SUBJECT_INFO_ACCESS* = CERT_AUTHORITY_INFO_ACCESS
   PCERT_SUBJECT_INFO_ACCESS* = ptr CERT_AUTHORITY_INFO_ACCESS
   CRL_DIST_POINT_NAME_UNION1* {.pure, union.} = object
     FullName*: CERT_ALT_NAME_INFO
+
   CRL_DIST_POINT_NAME* {.pure.} = object
     dwDistPointNameChoice*: DWORD
     union1*: CRL_DIST_POINT_NAME_UNION1
+
   PCRL_DIST_POINT_NAME* = ptr CRL_DIST_POINT_NAME
   CRL_DIST_POINT* {.pure.} = object
     DistPointName*: CRL_DIST_POINT_NAME
     ReasonFlags*: CRYPT_BIT_BLOB
     CRLIssuer*: CERT_ALT_NAME_INFO
+
   PCRL_DIST_POINT* = ptr CRL_DIST_POINT
   CRL_DIST_POINTS_INFO* {.pure.} = object
     cDistPoint*: DWORD
     rgDistPoint*: PCRL_DIST_POINT
+
   PCRL_DIST_POINTS_INFO* = ptr CRL_DIST_POINTS_INFO
   CROSS_CERT_DIST_POINTS_INFO* {.pure.} = object
     dwSyncDeltaTime*: DWORD
     cDistPoint*: DWORD
     rgDistPoint*: PCERT_ALT_NAME_INFO
+
   PCROSS_CERT_DIST_POINTS_INFO* = ptr CROSS_CERT_DIST_POINTS_INFO
   CERT_PAIR* {.pure.} = object
     Forward*: CERT_BLOB
     Reverse*: CERT_BLOB
+
   PCERT_PAIR* = ptr CERT_PAIR
   CRL_ISSUING_DIST_POINT* {.pure.} = object
     DistPointName*: CRL_DIST_POINT_NAME
@@ -674,35 +799,42 @@
     fOnlyContainsCACerts*: WINBOOL
     OnlySomeReasonFlags*: CRYPT_BIT_BLOB
     fIndirectCRL*: WINBOOL
+
   PCRL_ISSUING_DIST_POINT* = ptr CRL_ISSUING_DIST_POINT
   CERT_GENERAL_SUBTREE* {.pure.} = object
     Base*: CERT_ALT_NAME_ENTRY
     dwMinimum*: DWORD
     fMaximum*: WINBOOL
     dwMaximum*: DWORD
+
   PCERT_GENERAL_SUBTREE* = ptr CERT_GENERAL_SUBTREE
   CERT_NAME_CONSTRAINTS_INFO* {.pure.} = object
     cPermittedSubtree*: DWORD
     rgPermittedSubtree*: PCERT_GENERAL_SUBTREE
     cExcludedSubtree*: DWORD
     rgExcludedSubtree*: PCERT_GENERAL_SUBTREE
+
   PCERT_NAME_CONSTRAINTS_INFO* = ptr CERT_NAME_CONSTRAINTS_INFO
   CERT_DSS_PARAMETERS* {.pure.} = object
     p*: CRYPT_UINT_BLOB
     q*: CRYPT_UINT_BLOB
     g*: CRYPT_UINT_BLOB
+
   PCERT_DSS_PARAMETERS* = ptr CERT_DSS_PARAMETERS
   CERT_DH_PARAMETERS* {.pure.} = object
     p*: CRYPT_UINT_BLOB
     g*: CRYPT_UINT_BLOB
+
   PCERT_DH_PARAMETERS* = ptr CERT_DH_PARAMETERS
   CERT_ECC_SIGNATURE* {.pure.} = object
     r*: CRYPT_UINT_BLOB
     s*: CRYPT_UINT_BLOB
+
   PCERT_ECC_SIGNATURE* = ptr CERT_ECC_SIGNATURE
   CERT_X942_DH_VALIDATION_PARAMS* {.pure.} = object
     seed*: CRYPT_BIT_BLOB
     pgenCounter*: DWORD
+
   PCERT_X942_DH_VALIDATION_PARAMS* = ptr CERT_X942_DH_VALIDATION_PARAMS
   CERT_X942_DH_PARAMETERS* {.pure.} = object
     p*: CRYPT_UINT_BLOB
@@ -710,7 +842,9 @@
     q*: CRYPT_UINT_BLOB
     j*: CRYPT_UINT_BLOB
     pValidationParams*: PCERT_X942_DH_VALIDATION_PARAMS
+
   PCERT_X942_DH_PARAMETERS* = ptr CERT_X942_DH_PARAMETERS
+
 const
   CRYPT_X942_COUNTER_BYTE_LENGTH* = 4
   CRYPT_X942_KEY_LENGTH_BYTE_LENGTH* = 4
@@ -720,77 +854,94 @@
     rgbCounter*: array[CRYPT_X942_COUNTER_BYTE_LENGTH, BYTE]
     rgbKeyLength*: array[CRYPT_X942_KEY_LENGTH_BYTE_LENGTH, BYTE]
     PubInfo*: CRYPT_DATA_BLOB
+
   PCRYPT_X942_OTHER_INFO* = ptr CRYPT_X942_OTHER_INFO
-const
-  CRYPT_ECC_CMS_SHARED_INFO_SUPPPUBINFO_BYTE_LENGTH* = 4
+
+const CRYPT_ECC_CMS_SHARED_INFO_SUPPPUBINFO_BYTE_LENGTH* = 4
 type
   CRYPT_ECC_CMS_SHARED_INFO* {.pure.} = object
     Algorithm*: CRYPT_ALGORITHM_IDENTIFIER
     EntityUInfo*: CRYPT_DATA_BLOB
     rgbSuppPubInfo*: array[CRYPT_ECC_CMS_SHARED_INFO_SUPPPUBINFO_BYTE_LENGTH, BYTE]
+
   PCRYPT_ECC_CMS_SHARED_INFO* = ptr CRYPT_ECC_CMS_SHARED_INFO
   CRYPT_RC2_CBC_PARAMETERS* {.pure.} = object
     dwVersion*: DWORD
     fIV*: WINBOOL
     rgbIV*: array[8, BYTE]
+
   PCRYPT_RC2_CBC_PARAMETERS* = ptr CRYPT_RC2_CBC_PARAMETERS
   CRYPT_SMIME_CAPABILITY* {.pure.} = object
     pszObjId*: LPSTR
     Parameters*: CRYPT_OBJID_BLOB
+
   PCRYPT_SMIME_CAPABILITY* = ptr CRYPT_SMIME_CAPABILITY
   CRYPT_SMIME_CAPABILITIES* {.pure.} = object
     cCapability*: DWORD
     rgCapability*: PCRYPT_SMIME_CAPABILITY
+
   PCRYPT_SMIME_CAPABILITIES* = ptr CRYPT_SMIME_CAPABILITIES
   CERT_QC_STATEMENT* {.pure.} = object
     pszStatementId*: LPSTR
     StatementInfo*: CRYPT_OBJID_BLOB
+
   PCERT_QC_STATEMENT* = ptr CERT_QC_STATEMENT
   CERT_QC_STATEMENTS_EXT_INFO* {.pure.} = object
     cStatement*: DWORD
     rgStatement*: PCERT_QC_STATEMENT
+
   PCERT_QC_STATEMENTS_EXT_INFO* = ptr CERT_QC_STATEMENTS_EXT_INFO
   CRYPT_MASK_GEN_ALGORITHM* {.pure.} = object
     pszObjId*: LPSTR
     HashAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
+
   PCRYPT_MASK_GEN_ALGORITHM* = ptr CRYPT_MASK_GEN_ALGORITHM
   CRYPT_RSA_SSA_PSS_PARAMETERS* {.pure.} = object
     HashAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     MaskGenAlgorithm*: CRYPT_MASK_GEN_ALGORITHM
     dwSaltLength*: DWORD
     dwTrailerField*: DWORD
+
   PCRYPT_RSA_SSA_PSS_PARAMETERS* = ptr CRYPT_RSA_SSA_PSS_PARAMETERS
   CRYPT_PSOURCE_ALGORITHM* {.pure.} = object
     pszObjId*: LPSTR
     EncodingParameters*: CRYPT_DATA_BLOB
+
   PCRYPT_PSOURCE_ALGORITHM* = ptr CRYPT_PSOURCE_ALGORITHM
   CRYPT_RSAES_OAEP_PARAMETERS* {.pure.} = object
     HashAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     MaskGenAlgorithm*: CRYPT_MASK_GEN_ALGORITHM
     PSourceAlgorithm*: CRYPT_PSOURCE_ALGORITHM
+
   PCRYPT_RSAES_OAEP_PARAMETERS* = ptr CRYPT_RSAES_OAEP_PARAMETERS
   CMC_TAGGED_ATTRIBUTE* {.pure.} = object
     dwBodyPartID*: DWORD
     Attribute*: CRYPT_ATTRIBUTE
+
   PCMC_TAGGED_ATTRIBUTE* = ptr CMC_TAGGED_ATTRIBUTE
   CMC_TAGGED_CERT_REQUEST* {.pure.} = object
     dwBodyPartID*: DWORD
     SignedCertRequest*: CRYPT_DER_BLOB
+
   PCMC_TAGGED_CERT_REQUEST* = ptr CMC_TAGGED_CERT_REQUEST
   CMC_TAGGED_REQUEST_UNION1* {.pure, union.} = object
     pTaggedCertRequest*: PCMC_TAGGED_CERT_REQUEST
+
   CMC_TAGGED_REQUEST* {.pure.} = object
     dwTaggedRequestChoice*: DWORD
     union1*: CMC_TAGGED_REQUEST_UNION1
+
   PCMC_TAGGED_REQUEST* = ptr CMC_TAGGED_REQUEST
   CMC_TAGGED_CONTENT_INFO* {.pure.} = object
     dwBodyPartID*: DWORD
     EncodedContentInfo*: CRYPT_DER_BLOB
+
   PCMC_TAGGED_CONTENT_INFO* = ptr CMC_TAGGED_CONTENT_INFO
   CMC_TAGGED_OTHER_MSG* {.pure.} = object
     dwBodyPartID*: DWORD
     pszObjId*: LPSTR
     Value*: CRYPT_OBJID_BLOB
+
   PCMC_TAGGED_OTHER_MSG* = ptr CMC_TAGGED_OTHER_MSG
   CMC_DATA_INFO* {.pure.} = object
     cTaggedAttribute*: DWORD
@@ -801,6 +952,7 @@
     rgTaggedContentInfo*: PCMC_TAGGED_CONTENT_INFO
     cTaggedOtherMsg*: DWORD
     rgTaggedOtherMsg*: PCMC_TAGGED_OTHER_MSG
+
   PCMC_DATA_INFO* = ptr CMC_DATA_INFO
   CMC_RESPONSE_INFO* {.pure.} = object
     cTaggedAttribute*: DWORD
@@ -809,14 +961,17 @@
     rgTaggedContentInfo*: PCMC_TAGGED_CONTENT_INFO
     cTaggedOtherMsg*: DWORD
     rgTaggedOtherMsg*: PCMC_TAGGED_OTHER_MSG
+
   PCMC_RESPONSE_INFO* = ptr CMC_RESPONSE_INFO
   CMC_PEND_INFO* {.pure.} = object
     PendToken*: CRYPT_DATA_BLOB
     PendTime*: FILETIME
+
   PCMC_PEND_INFO* = ptr CMC_PEND_INFO
   CMC_STATUS_INFO_UNION1* {.pure, union.} = object
     dwFailInfo*: DWORD
     pPendInfo*: PCMC_PEND_INFO
+
   CMC_STATUS_INFO* {.pure.} = object
     dwStatus*: DWORD
     cBodyList*: DWORD
@@ -824,6 +979,7 @@
     pwszStatusString*: LPWSTR
     dwOtherInfoChoice*: DWORD
     union1*: CMC_STATUS_INFO_UNION1
+
   PCMC_STATUS_INFO* = ptr CMC_STATUS_INFO
   CMC_ADD_EXTENSIONS_INFO* {.pure.} = object
     dwCmcDataReference*: DWORD
@@ -831,6 +987,7 @@
     rgdwCertReference*: ptr DWORD
     cExtension*: DWORD
     rgExtension*: PCERT_EXTENSION
+
   PCMC_ADD_EXTENSIONS_INFO* = ptr CMC_ADD_EXTENSIONS_INFO
   CMC_ADD_ATTRIBUTES_INFO* {.pure.} = object
     dwCmcDataReference*: DWORD
@@ -838,30 +995,36 @@
     rgdwCertReference*: ptr DWORD
     cAttribute*: DWORD
     rgAttribute*: PCRYPT_ATTRIBUTE
+
   PCMC_ADD_ATTRIBUTES_INFO* = ptr CMC_ADD_ATTRIBUTES_INFO
   CERT_TEMPLATE_EXT* {.pure.} = object
     pszObjId*: LPSTR
     dwMajorVersion*: DWORD
     fMinorVersion*: WINBOOL
     dwMinorVersion*: DWORD
+
   PCERT_TEMPLATE_EXT* = ptr CERT_TEMPLATE_EXT
   CERT_HASHED_URL* {.pure.} = object
     HashAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     Hash*: CRYPT_HASH_BLOB
     pwszUrl*: LPWSTR
+
   PCERT_HASHED_URL* = ptr CERT_HASHED_URL
   CERT_LOGOTYPE_DETAILS* {.pure.} = object
     pwszMimeType*: LPWSTR
     cHashedUrl*: DWORD
     rgHashedUrl*: PCERT_HASHED_URL
+
   PCERT_LOGOTYPE_DETAILS* = ptr CERT_LOGOTYPE_DETAILS
   CERT_LOGOTYPE_REFERENCE* {.pure.} = object
     cHashedUrl*: DWORD
     rgHashedUrl*: PCERT_HASHED_URL
+
   PCERT_LOGOTYPE_REFERENCE* = ptr CERT_LOGOTYPE_REFERENCE
   CERT_LOGOTYPE_IMAGE_INFO_UNION1* {.pure, union.} = object
     dwNumBits*: DWORD
     dwTableSize*: DWORD
+
   CERT_LOGOTYPE_IMAGE_INFO* {.pure.} = object
     dwLogotypeImageInfoChoice*: DWORD
     dwFileSize*: DWORD
@@ -870,10 +1033,12 @@
     dwLogotypeImageResolutionChoice*: DWORD
     union1*: CERT_LOGOTYPE_IMAGE_INFO_UNION1
     pwszLanguage*: LPWSTR
+
   PCERT_LOGOTYPE_IMAGE_INFO* = ptr CERT_LOGOTYPE_IMAGE_INFO
   CERT_LOGOTYPE_IMAGE* {.pure.} = object
     LogotypeDetails*: CERT_LOGOTYPE_DETAILS
     pLogotypeImageInfo*: PCERT_LOGOTYPE_IMAGE_INFO
+
   PCERT_LOGOTYPE_IMAGE* = ptr CERT_LOGOTYPE_IMAGE
   CERT_LOGOTYPE_AUDIO_INFO* {.pure.} = object
     dwFileSize*: DWORD
@@ -881,27 +1046,33 @@
     dwChannels*: DWORD
     dwSampleRate*: DWORD
     pwszLanguage*: LPWSTR
+
   PCERT_LOGOTYPE_AUDIO_INFO* = ptr CERT_LOGOTYPE_AUDIO_INFO
   CERT_LOGOTYPE_AUDIO* {.pure.} = object
     LogotypeDetails*: CERT_LOGOTYPE_DETAILS
     pLogotypeAudioInfo*: PCERT_LOGOTYPE_AUDIO_INFO
+
   PCERT_LOGOTYPE_AUDIO* = ptr CERT_LOGOTYPE_AUDIO
   CERT_LOGOTYPE_DATA* {.pure.} = object
     cLogotypeImage*: DWORD
     rgLogotypeImage*: PCERT_LOGOTYPE_IMAGE
     cLogotypeAudio*: DWORD
     rgLogotypeAudio*: PCERT_LOGOTYPE_AUDIO
+
   PCERT_LOGOTYPE_DATA* = ptr CERT_LOGOTYPE_DATA
   CERT_LOGOTYPE_INFO_UNION1* {.pure, union.} = object
     pLogotypeDirectInfo*: PCERT_LOGOTYPE_DATA
     pLogotypeIndirectInfo*: PCERT_LOGOTYPE_REFERENCE
+
   CERT_LOGOTYPE_INFO* {.pure.} = object
     dwLogotypeInfoChoice*: DWORD
     union1*: CERT_LOGOTYPE_INFO_UNION1
+
   PCERT_LOGOTYPE_INFO* = ptr CERT_LOGOTYPE_INFO
   CERT_OTHER_LOGOTYPE_INFO* {.pure.} = object
     pszObjId*: LPSTR
     LogotypeInfo*: CERT_LOGOTYPE_INFO
+
   PCERT_OTHER_LOGOTYPE_INFO* = ptr CERT_OTHER_LOGOTYPE_INFO
   CERT_LOGOTYPE_EXT_INFO* {.pure.} = object
     cCommunityLogo*: DWORD
@@ -910,39 +1081,47 @@
     pSubjectLogo*: PCERT_LOGOTYPE_INFO
     cOtherLogo*: DWORD
     rgOtherLogo*: PCERT_OTHER_LOGOTYPE_INFO
+
   PCERT_LOGOTYPE_EXT_INFO* = ptr CERT_LOGOTYPE_EXT_INFO
   CERT_BIOMETRIC_DATA_UNION1* {.pure, union.} = object
     dwPredefined*: DWORD
     pszObjId*: LPSTR
+
   CERT_BIOMETRIC_DATA* {.pure.} = object
     dwTypeOfBiometricDataChoice*: DWORD
     union1*: CERT_BIOMETRIC_DATA_UNION1
     HashedUrl*: CERT_HASHED_URL
+
   PCERT_BIOMETRIC_DATA* = ptr CERT_BIOMETRIC_DATA
   CERT_BIOMETRIC_EXT_INFO* {.pure.} = object
     cBiometricData*: DWORD
     rgBiometricData*: PCERT_BIOMETRIC_DATA
+
   PCERT_BIOMETRIC_EXT_INFO* = ptr CERT_BIOMETRIC_EXT_INFO
   OCSP_SIGNATURE_INFO* {.pure.} = object
     SignatureAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     Signature*: CRYPT_BIT_BLOB
     cCertEncoded*: DWORD
     rgCertEncoded*: PCERT_BLOB
+
   POCSP_SIGNATURE_INFO* = ptr OCSP_SIGNATURE_INFO
   OCSP_SIGNED_REQUEST_INFO* {.pure.} = object
     ToBeSigned*: CRYPT_DER_BLOB
     pOptionalSignatureInfo*: POCSP_SIGNATURE_INFO
+
   POCSP_SIGNED_REQUEST_INFO* = ptr OCSP_SIGNED_REQUEST_INFO
   OCSP_CERT_ID* {.pure.} = object
     HashAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     IssuerNameHash*: CRYPT_HASH_BLOB
     IssuerKeyHash*: CRYPT_HASH_BLOB
     SerialNumber*: CRYPT_INTEGER_BLOB
+
   POCSP_CERT_ID* = ptr OCSP_CERT_ID
   OCSP_REQUEST_ENTRY* {.pure.} = object
     CertId*: OCSP_CERT_ID
     cExtension*: DWORD
     rgExtension*: PCERT_EXTENSION
+
   POCSP_REQUEST_ENTRY* = ptr OCSP_REQUEST_ENTRY
   OCSP_REQUEST_INFO* {.pure.} = object
     dwVersion*: DWORD
@@ -951,22 +1130,27 @@
     rgRequestEntry*: POCSP_REQUEST_ENTRY
     cExtension*: DWORD
     rgExtension*: PCERT_EXTENSION
+
   POCSP_REQUEST_INFO* = ptr OCSP_REQUEST_INFO
   OCSP_RESPONSE_INFO* {.pure.} = object
     dwStatus*: DWORD
     pszObjId*: LPSTR
     Value*: CRYPT_OBJID_BLOB
+
   POCSP_RESPONSE_INFO* = ptr OCSP_RESPONSE_INFO
   OCSP_BASIC_SIGNED_RESPONSE_INFO* {.pure.} = object
     ToBeSigned*: CRYPT_DER_BLOB
     SignatureInfo*: OCSP_SIGNATURE_INFO
+
   POCSP_BASIC_SIGNED_RESPONSE_INFO* = ptr OCSP_BASIC_SIGNED_RESPONSE_INFO
   OCSP_BASIC_REVOKED_INFO* {.pure.} = object
     RevocationDate*: FILETIME
     dwCrlReasonCode*: DWORD
+
   POCSP_BASIC_REVOKED_INFO* = ptr OCSP_BASIC_REVOKED_INFO
   OCSP_BASIC_RESPONSE_ENTRY_UNION1* {.pure, union.} = object
     pRevokedInfo*: POCSP_BASIC_REVOKED_INFO
+
   OCSP_BASIC_RESPONSE_ENTRY* {.pure.} = object
     CertId*: OCSP_CERT_ID
     dwCertStatus*: DWORD
@@ -975,10 +1159,12 @@
     NextUpdate*: FILETIME
     cExtension*: DWORD
     rgExtension*: PCERT_EXTENSION
+
   POCSP_BASIC_RESPONSE_ENTRY* = ptr OCSP_BASIC_RESPONSE_ENTRY
   OCSP_BASIC_RESPONSE_INFO_UNION1* {.pure, union.} = object
     ByNameResponderId*: CERT_NAME_BLOB
     ByKeyResponderId*: CRYPT_HASH_BLOB
+
   OCSP_BASIC_RESPONSE_INFO* {.pure.} = object
     dwVersion*: DWORD
     dwResponderIdChoice*: DWORD
@@ -988,37 +1174,40 @@
     rgResponseEntry*: POCSP_BASIC_RESPONSE_ENTRY
     cExtension*: DWORD
     rgExtension*: PCERT_EXTENSION
+
   POCSP_BASIC_RESPONSE_INFO* = ptr OCSP_BASIC_RESPONSE_INFO
   CRYPT_OID_FUNC_ENTRY* {.pure.} = object
     pszOID*: LPCSTR
     pvFuncAddr*: pointer
+
   PCRYPT_OID_FUNC_ENTRY* = ptr CRYPT_OID_FUNC_ENTRY
   CRYPT_OID_INFO_UNION1* {.pure, union.} = object
     dwValue*: DWORD
     Algid*: ALG_ID
     dwLength*: DWORD
+
 when winimCpu64:
-  type
-    CRYPT_OID_INFO* {.pure.} = object
-      cbSize*: DWORD
-      pszOID*: LPCSTR
-      pwszName*: LPCWSTR
-      dwGroupId*: DWORD
-      union1*: CRYPT_OID_INFO_UNION1
-      ExtraInfo*: CRYPT_DATA_BLOB
-      pwszCNGAlgid*: LPCWSTR
-      pwszCNGExtraAlgid*: LPCWSTR
+  type CRYPT_OID_INFO* {.pure.} = object
+    cbSize*: DWORD
+    pszOID*: LPCSTR
+    pwszName*: LPCWSTR
+    dwGroupId*: DWORD
+    union1*: CRYPT_OID_INFO_UNION1
+    ExtraInfo*: CRYPT_DATA_BLOB
+    pwszCNGAlgid*: LPCWSTR
+    pwszCNGExtraAlgid*: LPCWSTR
+
 when winimCpu32:
-  type
-    CRYPT_OID_INFO* {.pure, packed.} = object
-      cbSize*: DWORD
-      pszOID*: LPCSTR
-      pwszName*: LPCWSTR
-      dwGroupId*: DWORD
-      union1*: CRYPT_OID_INFO_UNION1
-      ExtraInfo*: CRYPT_DATA_BLOB
-      pwszCNGAlgid*: LPCWSTR
-      pwszCNGExtraAlgid*: LPCWSTR
+  type CRYPT_OID_INFO* {.pure, packed.} = object
+    cbSize*: DWORD
+    pszOID*: LPCSTR
+    pwszName*: LPCWSTR
+    dwGroupId*: DWORD
+    union1*: CRYPT_OID_INFO_UNION1
+    ExtraInfo*: CRYPT_DATA_BLOB
+    pwszCNGAlgid*: LPCWSTR
+    pwszCNGExtraAlgid*: LPCWSTR
+
 type
   PCRYPT_OID_INFO* = ptr CRYPT_OID_INFO
   CCRYPT_OID_INFO* = CRYPT_OID_INFO
@@ -1027,32 +1216,39 @@
     dwFlags*: DWORD
     pwszCNGSignHashAlgids*: LPWSTR
     pwszCNGPubKeyMinBitLengths*: LPWSTR
+
   PCERT_STRONG_SIGN_SERIALIZED_INFO* = ptr CERT_STRONG_SIGN_SERIALIZED_INFO
   CERT_STRONG_SIGN_PARA_UNION1* {.pure, union.} = object
     pvInfo*: pointer
     pSerializedInfo*: PCERT_STRONG_SIGN_SERIALIZED_INFO
     pszOID*: LPSTR
+
   CERT_STRONG_SIGN_PARA* {.pure.} = object
     cbSize*: DWORD
     dwInfoChoice*: DWORD
     union1*: CERT_STRONG_SIGN_PARA_UNION1
+
   PCERT_STRONG_SIGN_PARA* = ptr CERT_STRONG_SIGN_PARA
   PCCERT_STRONG_SIGN_PARA* = ptr CERT_STRONG_SIGN_PARA
   CERT_ISSUER_SERIAL_NUMBER* {.pure.} = object
     Issuer*: CERT_NAME_BLOB
     SerialNumber*: CRYPT_INTEGER_BLOB
+
   PCERT_ISSUER_SERIAL_NUMBER* = ptr CERT_ISSUER_SERIAL_NUMBER
   CERT_ID_UNION1* {.pure, union.} = object
     IssuerSerialNumber*: CERT_ISSUER_SERIAL_NUMBER
     KeyId*: CRYPT_HASH_BLOB
     HashId*: CRYPT_HASH_BLOB
+
   CERT_ID* {.pure.} = object
     dwIdChoice*: DWORD
     union1*: CERT_ID_UNION1
+
   PCERT_ID* = ptr CERT_ID
   CMSG_SIGNER_ENCODE_INFO_UNION1* {.pure, union.} = object
     hCryptProv*: HCRYPTPROV
     hNCryptKey*: NCRYPT_KEY_HANDLE
+
   CMSG_SIGNER_ENCODE_INFO* {.pure.} = object
     cbSize*: DWORD
     pCertInfo*: PCERT_INFO
@@ -1067,6 +1263,7 @@
     SignerId*: CERT_ID
     HashEncryptionAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     pvHashEncryptionAuxInfo*: pointer
+
   PCMSG_SIGNER_ENCODE_INFO* = ptr CMSG_SIGNER_ENCODE_INFO
   CMSG_SIGNED_ENCODE_INFO* {.pure.} = object
     cbSize*: DWORD
@@ -1078,6 +1275,7 @@
     rgCrlEncoded*: PCRL_BLOB
     cAttrCertEncoded*: DWORD
     rgAttrCertEncoded*: PCERT_BLOB
+
   PCMSG_SIGNED_ENCODE_INFO* = ptr CMSG_SIGNED_ENCODE_INFO
   CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO* {.pure.} = object
     cbSize*: DWORD
@@ -1086,17 +1284,21 @@
     hCryptProv*: HCRYPTPROV_LEGACY
     RecipientPublicKey*: CRYPT_BIT_BLOB
     RecipientId*: CERT_ID
+
   PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO* = ptr CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO
   CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO_UNION1* {.pure, union.} = object
     pEphemeralAlgorithm*: PCRYPT_ALGORITHM_IDENTIFIER
     pSenderId*: PCERT_ID
+
   CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO* {.pure.} = object
     cbSize*: DWORD
     RecipientPublicKey*: CRYPT_BIT_BLOB
     RecipientId*: CERT_ID
     Date*: FILETIME
     pOtherAttr*: PCRYPT_ATTRIBUTE_TYPE_VALUE
-  PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO* = ptr CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO
+
+  PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO* =
+    ptr CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO
   CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO* {.pure.} = object
     cbSize*: DWORD
     KeyEncryptionAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
@@ -1110,10 +1312,12 @@
     UserKeyingMaterial*: CRYPT_DATA_BLOB
     cRecipientEncryptedKeys*: DWORD
     rgpRecipientEncryptedKeys*: ptr PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO
+
   PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO* = ptr CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
   CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO_UNION1* {.pure, union.} = object
     hKeyEncryptionKey*: HCRYPTKEY
     pvKeyEncryptionKey*: pointer
+
   CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO* {.pure.} = object
     cbSize*: DWORD
     KeyEncryptionAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
@@ -1124,14 +1328,17 @@
     KeyId*: CRYPT_DATA_BLOB
     Date*: FILETIME
     pOtherAttr*: PCRYPT_ATTRIBUTE_TYPE_VALUE
+
   PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO* = ptr CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
   CMSG_RECIPIENT_ENCODE_INFO_UNION1* {.pure, union.} = object
     pKeyTrans*: PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO
     pKeyAgree*: PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
     pMailList*: PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
+
   CMSG_RECIPIENT_ENCODE_INFO* {.pure.} = object
     dwRecipientChoice*: DWORD
     union1*: CMSG_RECIPIENT_ENCODE_INFO_UNION1
+
   PCMSG_RECIPIENT_ENCODE_INFO* = ptr CMSG_RECIPIENT_ENCODE_INFO
   CMSG_ENVELOPED_ENCODE_INFO* {.pure.} = object
     cbSize*: DWORD
@@ -1149,40 +1356,50 @@
     rgAttrCertEncoded*: PCERT_BLOB
     cUnprotectedAttr*: DWORD
     rgUnprotectedAttr*: PCRYPT_ATTRIBUTE
+
   PCMSG_ENVELOPED_ENCODE_INFO* = ptr CMSG_ENVELOPED_ENCODE_INFO
   CMSG_RC2_AUX_INFO* {.pure.} = object
     cbSize*: DWORD
     dwBitLen*: DWORD
+
   PCMSG_RC2_AUX_INFO* = ptr CMSG_RC2_AUX_INFO
   CMSG_SP3_COMPATIBLE_AUX_INFO* {.pure.} = object
     cbSize*: DWORD
     dwFlags*: DWORD
+
   PCMSG_SP3_COMPATIBLE_AUX_INFO* = ptr CMSG_SP3_COMPATIBLE_AUX_INFO
   CMSG_RC4_AUX_INFO* {.pure.} = object
     cbSize*: DWORD
     dwBitLen*: DWORD
+
   PCMSG_RC4_AUX_INFO* = ptr CMSG_RC4_AUX_INFO
   CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO* {.pure.} = object
     cbSize*: DWORD
     SignedInfo*: CMSG_SIGNED_ENCODE_INFO
     EnvelopedInfo*: CMSG_ENVELOPED_ENCODE_INFO
+
   PCMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO* = ptr CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO
   CMSG_HASHED_ENCODE_INFO* {.pure.} = object
     cbSize*: DWORD
     hCryptProv*: HCRYPTPROV_LEGACY
     HashAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     pvHashAuxInfo*: pointer
+
   PCMSG_HASHED_ENCODE_INFO* = ptr CMSG_HASHED_ENCODE_INFO
   CMSG_ENCRYPTED_ENCODE_INFO* {.pure.} = object
     cbSize*: DWORD
     ContentEncryptionAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     pvEncryptionAuxInfo*: pointer
+
   PCMSG_ENCRYPTED_ENCODE_INFO* = ptr CMSG_ENCRYPTED_ENCODE_INFO
-  PFN_CMSG_STREAM_OUTPUT* = proc (pvArg: pointer, pbData: ptr BYTE, cbData: DWORD, fFinal: WINBOOL): WINBOOL {.stdcall.}
+  PFN_CMSG_STREAM_OUTPUT* = proc(
+    pvArg: pointer, pbData: ptr BYTE, cbData: DWORD, fFinal: WINBOOL
+  ): WINBOOL {.stdcall.}
   CMSG_STREAM_INFO* {.pure.} = object
     cbContent*: DWORD
     pfnStreamOutput*: PFN_CMSG_STREAM_OUTPUT
     pvArg*: pointer
+
   PCMSG_STREAM_INFO* = ptr CMSG_STREAM_INFO
   CMSG_SIGNER_INFO* {.pure.} = object
     dwVersion*: DWORD
@@ -1193,6 +1410,7 @@
     EncryptedHash*: CRYPT_DATA_BLOB
     AuthAttrs*: CRYPT_ATTRIBUTES
     UnauthAttrs*: CRYPT_ATTRIBUTES
+
   PCMSG_SIGNER_INFO* = ptr CMSG_SIGNER_INFO
   CMSG_CMS_SIGNER_INFO* {.pure.} = object
     dwVersion*: DWORD
@@ -1202,6 +1420,7 @@
     EncryptedHash*: CRYPT_DATA_BLOB
     AuthAttrs*: CRYPT_ATTRIBUTES
     UnauthAttrs*: CRYPT_ATTRIBUTES
+
   PCMSG_CMS_SIGNER_INFO* = ptr CMSG_CMS_SIGNER_INFO
   CMSG_ATTR* = CRYPT_ATTRIBUTES
   PCMSG_ATTR* = ptr CRYPT_ATTRIBUTES
@@ -1210,16 +1429,19 @@
     RecipientId*: CERT_ID
     KeyEncryptionAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     EncryptedKey*: CRYPT_DATA_BLOB
+
   PCMSG_KEY_TRANS_RECIPIENT_INFO* = ptr CMSG_KEY_TRANS_RECIPIENT_INFO
   CMSG_RECIPIENT_ENCRYPTED_KEY_INFO* {.pure.} = object
     RecipientId*: CERT_ID
     EncryptedKey*: CRYPT_DATA_BLOB
     Date*: FILETIME
     pOtherAttr*: PCRYPT_ATTRIBUTE_TYPE_VALUE
+
   PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO* = ptr CMSG_RECIPIENT_ENCRYPTED_KEY_INFO
   CMSG_KEY_AGREE_RECIPIENT_INFO_UNION1* {.pure, union.} = object
     OriginatorCertId*: CERT_ID
     OriginatorPublicKeyInfo*: CERT_PUBLIC_KEY_INFO
+
   CMSG_KEY_AGREE_RECIPIENT_INFO* {.pure.} = object
     dwVersion*: DWORD
     dwOriginatorChoice*: DWORD
@@ -1228,6 +1450,7 @@
     KeyEncryptionAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     cRecipientEncryptedKeys*: DWORD
     rgpRecipientEncryptedKeys*: ptr PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO
+
   PCMSG_KEY_AGREE_RECIPIENT_INFO* = ptr CMSG_KEY_AGREE_RECIPIENT_INFO
   CMSG_MAIL_LIST_RECIPIENT_INFO* {.pure.} = object
     dwVersion*: DWORD
@@ -1236,14 +1459,17 @@
     EncryptedKey*: CRYPT_DATA_BLOB
     Date*: FILETIME
     pOtherAttr*: PCRYPT_ATTRIBUTE_TYPE_VALUE
+
   PCMSG_MAIL_LIST_RECIPIENT_INFO* = ptr CMSG_MAIL_LIST_RECIPIENT_INFO
   CMSG_CMS_RECIPIENT_INFO_UNION1* {.pure, union.} = object
     pKeyTrans*: PCMSG_KEY_TRANS_RECIPIENT_INFO
     pKeyAgree*: PCMSG_KEY_AGREE_RECIPIENT_INFO
     pMailList*: PCMSG_MAIL_LIST_RECIPIENT_INFO
+
   CMSG_CMS_RECIPIENT_INFO* {.pure.} = object
     dwRecipientChoice*: DWORD
     union1*: CMSG_CMS_RECIPIENT_INFO_UNION1
+
   PCMSG_CMS_RECIPIENT_INFO* = ptr CMSG_CMS_RECIPIENT_INFO
   CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA* {.pure.} = object
     cbSize*: DWORD
@@ -1251,29 +1477,35 @@
     dwSignerIndex*: DWORD
     dwSignerType*: DWORD
     pvSigner*: pointer
+
   PCMSG_CTRL_VERIFY_SIGNATURE_EX_PARA* = ptr CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA
   CMSG_CTRL_DECRYPT_PARA_UNION1* {.pure, union.} = object
     hCryptProv*: HCRYPTPROV
     hNCryptKey*: NCRYPT_KEY_HANDLE
+
   CMSG_CTRL_DECRYPT_PARA* {.pure.} = object
     cbSize*: DWORD
     union1*: CMSG_CTRL_DECRYPT_PARA_UNION1
     dwKeySpec*: DWORD
     dwRecipientIndex*: DWORD
+
   PCMSG_CTRL_DECRYPT_PARA* = ptr CMSG_CTRL_DECRYPT_PARA
   CMSG_CTRL_KEY_TRANS_DECRYPT_PARA_UNION1* {.pure, union.} = object
     hCryptProv*: HCRYPTPROV
     hNCryptKey*: NCRYPT_KEY_HANDLE
+
   CMSG_CTRL_KEY_TRANS_DECRYPT_PARA* {.pure.} = object
     cbSize*: DWORD
     union1*: CMSG_CTRL_KEY_TRANS_DECRYPT_PARA_UNION1
     dwKeySpec*: DWORD
     pKeyTrans*: PCMSG_KEY_TRANS_RECIPIENT_INFO
     dwRecipientIndex*: DWORD
+
   PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA* = ptr CMSG_CTRL_KEY_TRANS_DECRYPT_PARA
   CMSG_CTRL_KEY_AGREE_DECRYPT_PARA_UNION1* {.pure, union.} = object
     hCryptProv*: HCRYPTPROV
     hNCryptKey*: NCRYPT_KEY_HANDLE
+
   CMSG_CTRL_KEY_AGREE_DECRYPT_PARA* {.pure.} = object
     cbSize*: DWORD
     union1*: CMSG_CTRL_KEY_AGREE_DECRYPT_PARA_UNION1
@@ -1282,10 +1514,12 @@
     dwRecipientIndex*: DWORD
     dwRecipientEncryptedKeyIndex*: DWORD
     OriginatorPublicKey*: CRYPT_BIT_BLOB
+
   PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA* = ptr CMSG_CTRL_KEY_AGREE_DECRYPT_PARA
   CMSG_CTRL_MAIL_LIST_DECRYPT_PARA_UNION1* {.pure, union.} = object
     hKeyEncryptionKey*: HCRYPTKEY
     pvKeyEncryptionKey*: pointer
+
   CMSG_CTRL_MAIL_LIST_DECRYPT_PARA* {.pure.} = object
     cbSize*: DWORD
     hCryptProv*: HCRYPTPROV
@@ -1293,22 +1527,26 @@
     dwRecipientIndex*: DWORD
     dwKeyChoice*: DWORD
     union1*: CMSG_CTRL_MAIL_LIST_DECRYPT_PARA_UNION1
+
   PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA* = ptr CMSG_CTRL_MAIL_LIST_DECRYPT_PARA
   CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA* {.pure.} = object
     cbSize*: DWORD
     dwSignerIndex*: DWORD
     blob*: CRYPT_DATA_BLOB
+
   PCMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA* = ptr CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA
   CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA* {.pure.} = object
     cbSize*: DWORD
     dwSignerIndex*: DWORD
     dwUnauthAttrIndex*: DWORD
+
   PCMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA* = ptr CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA
-  PFN_CMSG_ALLOC* = proc (cb: int): pointer {.stdcall.}
-  PFN_CMSG_FREE* = proc (pv: pointer): void {.stdcall.}
+  PFN_CMSG_ALLOC* = proc(cb: int): pointer {.stdcall.}
+  PFN_CMSG_FREE* = proc(pv: pointer): void {.stdcall.}
   CMSG_CONTENT_ENCRYPT_INFO_UNION1* {.pure, union.} = object
     hContentEncryptKey*: HCRYPTKEY
     hCNGContentEncryptKey*: BCRYPT_KEY_HANDLE
+
   CMSG_CONTENT_ENCRYPT_INFO* {.pure.} = object
     cbSize*: DWORD
     hCryptProv*: HCRYPTPROV_LEGACY
@@ -1325,6 +1563,7 @@
     pbCNGContentEncryptKeyObject*: ptr BYTE
     pbContentEncryptKey*: ptr BYTE
     cbContentEncryptKey*: DWORD
+
   PCMSG_CONTENT_ENCRYPT_INFO* = ptr CMSG_CONTENT_ENCRYPT_INFO
   CMSG_KEY_TRANS_ENCRYPT_INFO* {.pure.} = object
     cbSize*: DWORD
@@ -1332,14 +1571,17 @@
     KeyEncryptionAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     EncryptedKey*: CRYPT_DATA_BLOB
     dwFlags*: DWORD
+
   PCMSG_KEY_TRANS_ENCRYPT_INFO* = ptr CMSG_KEY_TRANS_ENCRYPT_INFO
   CMSG_KEY_AGREE_KEY_ENCRYPT_INFO* {.pure.} = object
     cbSize*: DWORD
     EncryptedKey*: CRYPT_DATA_BLOB
+
   PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO* = ptr CMSG_KEY_AGREE_KEY_ENCRYPT_INFO
   CMSG_KEY_AGREE_ENCRYPT_INFO_UNION1* {.pure, union.} = object
     OriginatorCertId*: CERT_ID
     OriginatorPublicKeyInfo*: CERT_PUBLIC_KEY_INFO
+
   CMSG_KEY_AGREE_ENCRYPT_INFO* {.pure.} = object
     cbSize*: DWORD
     dwRecipientIndex*: DWORD
@@ -1350,6 +1592,7 @@
     cKeyAgreeKeyEncryptInfo*: DWORD
     rgpKeyAgreeKeyEncryptInfo*: ptr PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO
     dwFlags*: DWORD
+
   PCMSG_KEY_AGREE_ENCRYPT_INFO* = ptr CMSG_KEY_AGREE_ENCRYPT_INFO
   CMSG_MAIL_LIST_ENCRYPT_INFO* {.pure.} = object
     cbSize*: DWORD
@@ -1357,6 +1600,7 @@
     KeyEncryptionAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     EncryptedKey*: CRYPT_DATA_BLOB
     dwFlags*: DWORD
+
   PCMSG_MAIL_LIST_ENCRYPT_INFO* = ptr CMSG_MAIL_LIST_ENCRYPT_INFO
   CMSG_CNG_CONTENT_DECRYPT_INFO* {.pure.} = object
     cbSize*: DWORD
@@ -1368,6 +1612,7 @@
     cbContentEncryptKey*: DWORD
     hCNGContentEncryptKey*: BCRYPT_KEY_HANDLE
     pbCNGContentEncryptKeyObject*: ptr BYTE
+
   PCMSG_CNG_CONTENT_DECRYPT_INFO* = ptr CMSG_CNG_CONTENT_DECRYPT_INFO
   CERT_CONTEXT* {.pure.} = object
     dwCertEncodingType*: DWORD
@@ -1375,6 +1620,7 @@
     cbCertEncoded*: DWORD
     pCertInfo*: PCERT_INFO
     hCertStore*: HCERTSTORE
+
   PCERT_CONTEXT* = ptr CERT_CONTEXT
   PCCERT_CONTEXT* = ptr CERT_CONTEXT
   CRL_CONTEXT* {.pure.} = object
@@ -1383,6 +1629,7 @@
     cbCrlEncoded*: DWORD
     pCrlInfo*: PCRL_INFO
     hCertStore*: HCERTSTORE
+
   PCRL_CONTEXT* = ptr CRL_CONTEXT
   PCCRL_CONTEXT* = ptr CRL_CONTEXT
   CTL_CONTEXT* {.pure.} = object
@@ -1394,6 +1641,7 @@
     hCryptMsg*: HCRYPTMSG
     pbCtlContent*: ptr BYTE
     cbCtlContent*: DWORD
+
   PCTL_CONTEXT* = ptr CTL_CONTEXT
   PCCTL_CONTEXT* = ptr CTL_CONTEXT
   CRYPT_KEY_PROV_PARAM* {.pure.} = object
@@ -1401,6 +1649,7 @@
     pbData*: ptr BYTE
     cbData*: DWORD
     dwFlags*: DWORD
+
   PCRYPT_KEY_PROV_PARAM* = ptr CRYPT_KEY_PROV_PARAM
   CRYPT_KEY_PROV_INFO* {.pure.} = object
     pwszContainerName*: LPWSTR
@@ -1410,45 +1659,56 @@
     cProvParam*: DWORD
     rgProvParam*: PCRYPT_KEY_PROV_PARAM
     dwKeySpec*: DWORD
+
   PCRYPT_KEY_PROV_INFO* = ptr CRYPT_KEY_PROV_INFO
   CERT_KEY_CONTEXT_UNION1* {.pure, union.} = object
     hCryptProv*: HCRYPTPROV
     hNCryptKey*: NCRYPT_KEY_HANDLE
+
   CERT_KEY_CONTEXT* {.pure.} = object
     cbSize*: DWORD
     union1*: CERT_KEY_CONTEXT_UNION1
     dwKeySpec*: DWORD
+
   PCERT_KEY_CONTEXT* = ptr CERT_KEY_CONTEXT
   ROOT_INFO_LUID* {.pure.} = object
     LowPart*: DWORD
     HighPart*: LONG
+
   PROOT_INFO_LUID* = ptr ROOT_INFO_LUID
   CRYPT_SMART_CARD_ROOT_INFO* {.pure.} = object
     rgbCardID*: array[16, BYTE]
     luid*: ROOT_INFO_LUID
+
   PCRYPT_SMART_CARD_ROOT_INFO* = ptr CRYPT_SMART_CARD_ROOT_INFO
   CERT_SYSTEM_STORE_RELOCATE_PARA_UNION1* {.pure, union.} = object
     hKeyBase*: HKEY
     pvBase*: pointer
+
   CERT_SYSTEM_STORE_RELOCATE_PARA_UNION2* {.pure, union.} = object
     pvSystemStore*: pointer
     pszSystemStore*: LPCSTR
     pwszSystemStore*: LPCWSTR
+
   CERT_SYSTEM_STORE_RELOCATE_PARA* {.pure.} = object
     union1*: CERT_SYSTEM_STORE_RELOCATE_PARA_UNION1
     union2*: CERT_SYSTEM_STORE_RELOCATE_PARA_UNION2
+
   PCERT_SYSTEM_STORE_RELOCATE_PARA* = ptr CERT_SYSTEM_STORE_RELOCATE_PARA
   CERT_REGISTRY_STORE_CLIENT_GPT_PARA* {.pure.} = object
     hKeyBase*: HKEY
     pwszRegPath*: LPWSTR
+
   PCERT_REGISTRY_STORE_CLIENT_GPT_PARA* = ptr CERT_REGISTRY_STORE_CLIENT_GPT_PARA
   CERT_REGISTRY_STORE_ROAMING_PARA* {.pure.} = object
     hKey*: HKEY
     pwszStoreDirectory*: LPWSTR
+
   PCERT_REGISTRY_STORE_ROAMING_PARA* = ptr CERT_REGISTRY_STORE_ROAMING_PARA
   CERT_LDAP_STORE_OPENED_PARA* {.pure.} = object
     pvLdapSessionHandle*: pointer
     pwszLdapUrl*: LPCWSTR
+
   PCERT_LDAP_STORE_OPENED_PARA* = ptr CERT_LDAP_STORE_OPENED_PARA
   CERT_STORE_PROV_INFO* {.pure.} = object
     cbSize*: DWORD
@@ -1457,6 +1717,7 @@
     hStoreProv*: HCERTSTOREPROV
     dwStoreProvFlags*: DWORD
     hStoreProvFuncAddr2*: HCRYPTOIDFUNCADDR
+
   PCERT_STORE_PROV_INFO* = ptr CERT_STORE_PROV_INFO
   CERT_STORE_PROV_FIND_INFO* {.pure.} = object
     cbSize*: DWORD
@@ -1464,39 +1725,48 @@
     dwFindFlags*: DWORD
     dwFindType*: DWORD
     pvFindPara*: pointer
+
   PCERT_STORE_PROV_FIND_INFO* = ptr CERT_STORE_PROV_FIND_INFO
   CCERT_STORE_PROV_FIND_INFO* = CERT_STORE_PROV_FIND_INFO
   PCCERT_STORE_PROV_FIND_INFO* = ptr CERT_STORE_PROV_FIND_INFO
   CRL_FIND_ISSUED_FOR_PARA* {.pure.} = object
     pSubjectCert*: PCCERT_CONTEXT
     pIssuerCert*: PCCERT_CONTEXT
+
   PCRL_FIND_ISSUED_FOR_PARA* = ptr CRL_FIND_ISSUED_FOR_PARA
   CTL_ANY_SUBJECT_INFO* {.pure.} = object
     SubjectAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     SubjectIdentifier*: CRYPT_DATA_BLOB
+
   PCTL_ANY_SUBJECT_INFO* = ptr CTL_ANY_SUBJECT_INFO
   CTL_FIND_USAGE_PARA* {.pure.} = object
     cbSize*: DWORD
     SubjectUsage*: CTL_USAGE
     ListIdentifier*: CRYPT_DATA_BLOB
     pSigner*: PCERT_INFO
+
   PCTL_FIND_USAGE_PARA* = ptr CTL_FIND_USAGE_PARA
   CTL_FIND_SUBJECT_PARA* {.pure.} = object
     cbSize*: DWORD
     pUsagePara*: PCTL_FIND_USAGE_PARA
     dwSubjectType*: DWORD
     pvSubject*: pointer
+
   PCTL_FIND_SUBJECT_PARA* = ptr CTL_FIND_SUBJECT_PARA
-  PFN_CERT_CREATE_CONTEXT_SORT_FUNC* = proc (cbTotalEncoded: DWORD, cbRemainEncoded: DWORD, cEntry: DWORD, pvSort: pointer): WINBOOL {.stdcall.}
+  PFN_CERT_CREATE_CONTEXT_SORT_FUNC* = proc(
+    cbTotalEncoded: DWORD, cbRemainEncoded: DWORD, cEntry: DWORD, pvSort: pointer
+  ): WINBOOL {.stdcall.}
   CERT_CREATE_CONTEXT_PARA* {.pure.} = object
     cbSize*: DWORD
     pfnFree*: PFN_CRYPT_FREE
     pvFree*: pointer
     pfnSort*: PFN_CERT_CREATE_CONTEXT_SORT_FUNC
     pvSort*: pointer
+
   PCERT_CREATE_CONTEXT_PARA* = ptr CERT_CREATE_CONTEXT_PARA
   CERT_SYSTEM_STORE_INFO* {.pure.} = object
     cbSize*: DWORD
+
   PCERT_SYSTEM_STORE_INFO* = ptr CERT_SYSTEM_STORE_INFO
   CERT_PHYSICAL_STORE_INFO* {.pure.} = object
     cbSize*: DWORD
@@ -1506,6 +1776,7 @@
     OpenParameters*: CRYPT_DATA_BLOB
     dwFlags*: DWORD
     dwPriority*: DWORD
+
   PCERT_PHYSICAL_STORE_INFO* = ptr CERT_PHYSICAL_STORE_INFO
   CTL_VERIFY_USAGE_PARA* {.pure.} = object
     cbSize*: DWORD
@@ -1514,6 +1785,7 @@
     rghCtlStore*: ptr HCERTSTORE
     cSignerStore*: DWORD
     rghSignerStore*: ptr HCERTSTORE
+
   PCTL_VERIFY_USAGE_PARA* = ptr CTL_VERIFY_USAGE_PARA
   CTL_VERIFY_USAGE_STATUS* {.pure.} = object
     cbSize*: DWORD
@@ -1523,6 +1795,7 @@
     dwCtlEntryIndex*: DWORD
     ppSigner*: ptr PCCERT_CONTEXT
     dwSignerIndex*: DWORD
+
   PCTL_VERIFY_USAGE_STATUS* = ptr CTL_VERIFY_USAGE_STATUS
   CERT_REVOCATION_CRL_INFO* {.pure.} = object
     cbSize*: DWORD
@@ -1530,6 +1803,7 @@
     pDeltaCrlContext*: PCCRL_CONTEXT
     pCrlEntry*: PCRL_ENTRY
     fDeltaCrlEntry*: WINBOOL
+
   PCERT_REVOCATION_CRL_INFO* = ptr CERT_REVOCATION_CRL_INFO
   CERT_REVOCATION_CHAIN_PARA* {.pure.} = object
     cbSize*: DWORD
@@ -1540,6 +1814,7 @@
     pftCurrentTime*: LPFILETIME
     pftCacheResync*: LPFILETIME
     cbMaxUrlRetrievalByteCount*: DWORD
+
   PCERT_REVOCATION_CHAIN_PARA* = ptr CERT_REVOCATION_CHAIN_PARA
   CERT_REVOCATION_PARA* {.pure.} = object
     cbSize*: DWORD
@@ -1555,6 +1830,7 @@
     pCrlInfo*: PCERT_REVOCATION_CRL_INFO
     pftCacheResync*: LPFILETIME
     pChainPara*: PCERT_REVOCATION_CHAIN_PARA
+
   PCERT_REVOCATION_PARA* = ptr CERT_REVOCATION_PARA
   CERT_REVOCATION_STATUS* {.pure.} = object
     cbSize*: DWORD
@@ -1563,14 +1839,18 @@
     dwReason*: DWORD
     fHasFreshnessTime*: WINBOOL
     dwFreshnessTime*: DWORD
+
   PCERT_REVOCATION_STATUS* = ptr CERT_REVOCATION_STATUS
   CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO* {.pure.} = object
     CertSignHashCNGAlgPropData*: CRYPT_DATA_BLOB
     CertIssuerPubKeyBitLengthPropData*: CRYPT_DATA_BLOB
-  PCRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO* = ptr CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO
+
+  PCRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO* =
+    ptr CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO
   CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA* {.pure.} = object
     cOID*: DWORD
     rgpszOID*: ptr LPSTR
+
   PCRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA* = ptr CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA
   CRYPT_SIGN_MESSAGE_PARA* {.pure.} = object
     cbSize*: DWORD
@@ -1590,8 +1870,14 @@
     dwInnerContentType*: DWORD
     HashEncryptionAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     pvHashEncryptionAuxInfo*: pointer
+
   PCRYPT_SIGN_MESSAGE_PARA* = ptr CRYPT_SIGN_MESSAGE_PARA
-  PFN_CRYPT_GET_SIGNER_CERTIFICATE* = proc (pvGetArg: pointer, dwCertEncodingType: DWORD, pSignerId: PCERT_INFO, hMsgCertStore: HCERTSTORE): PCCERT_CONTEXT {.stdcall.}
+  PFN_CRYPT_GET_SIGNER_CERTIFICATE* = proc(
+    pvGetArg: pointer,
+    dwCertEncodingType: DWORD,
+    pSignerId: PCERT_INFO,
+    hMsgCertStore: HCERTSTORE,
+  ): PCCERT_CONTEXT {.stdcall.}
   CRYPT_VERIFY_MESSAGE_PARA* {.pure.} = object
     cbSize*: DWORD
     dwMsgAndCertEncodingType*: DWORD
@@ -1599,6 +1885,7 @@
     pfnGetSignerCertificate*: PFN_CRYPT_GET_SIGNER_CERTIFICATE
     pvGetArg*: pointer
     pStrongSignPara*: PCCERT_STRONG_SIGN_PARA
+
   PCRYPT_VERIFY_MESSAGE_PARA* = ptr CRYPT_VERIFY_MESSAGE_PARA
   CRYPT_ENCRYPT_MESSAGE_PARA* {.pure.} = object
     cbSize*: DWORD
@@ -1608,6 +1895,7 @@
     pvEncryptionAuxInfo*: pointer
     dwFlags*: DWORD
     dwInnerContentType*: DWORD
+
   PCRYPT_ENCRYPT_MESSAGE_PARA* = ptr CRYPT_ENCRYPT_MESSAGE_PARA
   CRYPT_DECRYPT_MESSAGE_PARA* {.pure.} = object
     cbSize*: DWORD
@@ -1615,6 +1903,7 @@
     cCertStore*: DWORD
     rghCertStore*: ptr HCERTSTORE
     dwFlags*: DWORD
+
   PCRYPT_DECRYPT_MESSAGE_PARA* = ptr CRYPT_DECRYPT_MESSAGE_PARA
   CRYPT_HASH_MESSAGE_PARA* {.pure.} = object
     cbSize*: DWORD
@@ -1622,10 +1911,12 @@
     hCryptProv*: HCRYPTPROV_LEGACY
     HashAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     pvHashAuxInfo*: pointer
+
   PCRYPT_HASH_MESSAGE_PARA* = ptr CRYPT_HASH_MESSAGE_PARA
   CRYPT_KEY_SIGN_MESSAGE_PARA_UNION1* {.pure, union.} = object
     hCryptProv*: HCRYPTPROV
     hNCryptKey*: NCRYPT_KEY_HANDLE
+
   CRYPT_KEY_SIGN_MESSAGE_PARA* {.pure.} = object
     cbSize*: DWORD
     dwMsgAndCertEncodingType*: DWORD
@@ -1634,35 +1925,42 @@
     HashAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     pvHashAuxInfo*: pointer
     PubKeyAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
+
   PCRYPT_KEY_SIGN_MESSAGE_PARA* = ptr CRYPT_KEY_SIGN_MESSAGE_PARA
   CRYPT_KEY_VERIFY_MESSAGE_PARA* {.pure.} = object
     cbSize*: DWORD
     dwMsgEncodingType*: DWORD
     hCryptProv*: HCRYPTPROV_LEGACY
+
   PCRYPT_KEY_VERIFY_MESSAGE_PARA* = ptr CRYPT_KEY_VERIFY_MESSAGE_PARA
   CERT_CHAIN* {.pure.} = object
     cCerts*: DWORD
     certs*: PCERT_BLOB
     keyLocatorInfo*: CRYPT_KEY_PROV_INFO
+
   PCERT_CHAIN* = ptr CERT_CHAIN
   CRYPT_BLOB_ARRAY* {.pure.} = object
     cBlob*: DWORD
     rgBlob*: PCRYPT_DATA_BLOB
+
   PCRYPT_BLOB_ARRAY* = ptr CRYPT_BLOB_ARRAY
   CRYPT_CREDENTIALS* {.pure.} = object
     cbSize*: DWORD
     pszCredentialsOid*: LPCSTR
     pvCredentials*: LPVOID
+
   PCRYPT_CREDENTIALS* = ptr CRYPT_CREDENTIALS
   CRYPT_PASSWORD_CREDENTIALSA* {.pure.} = object
     cbSize*: DWORD
     pszUsername*: LPSTR
     pszPassword*: LPSTR
+
   PCRYPT_PASSWORD_CREDENTIALSA* = ptr CRYPT_PASSWORD_CREDENTIALSA
   CRYPT_PASSWORD_CREDENTIALSW* {.pure.} = object
     cbSize*: DWORD
     pszUsername*: LPWSTR
     pszPassword*: LPWSTR
+
   PCRYPT_PASSWORD_CREDENTIALSW* = ptr CRYPT_PASSWORD_CREDENTIALSW
   CRYPTNET_URL_CACHE_PRE_FETCH_INFO* {.pure.} = object
     cbSize*: DWORD
@@ -1672,11 +1970,13 @@
     ThisUpdateTime*: FILETIME
     NextUpdateTime*: FILETIME
     PublishTime*: FILETIME
+
   PCRYPTNET_URL_CACHE_PRE_FETCH_INFO* = ptr CRYPTNET_URL_CACHE_PRE_FETCH_INFO
   CRYPTNET_URL_CACHE_FLUSH_INFO* {.pure.} = object
     cbSize*: DWORD
     dwExemptSeconds*: DWORD
     ExpireTime*: FILETIME
+
   PCRYPTNET_URL_CACHE_FLUSH_INFO* = ptr CRYPTNET_URL_CACHE_FLUSH_INFO
   CRYPTNET_URL_CACHE_RESPONSE_INFO* {.pure.} = object
     cbSize*: DWORD
@@ -1686,6 +1986,7 @@
     dwMaxAge*: DWORD
     pwszETag*: LPCWSTR
     dwProxyId*: DWORD
+
   PCRYPTNET_URL_CACHE_RESPONSE_INFO* = ptr CRYPTNET_URL_CACHE_RESPONSE_INFO
   CRYPT_RETRIEVE_AUX_INFO* {.pure.} = object
     cbSize*: DWORD
@@ -1698,25 +1999,36 @@
     pftCacheResync*: LPFILETIME
     fProxyCacheRetrieval*: WINBOOL
     dwHttpStatusCode*: DWORD
+
   PCRYPT_RETRIEVE_AUX_INFO* = ptr CRYPT_RETRIEVE_AUX_INFO
-  PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC* = proc (pvCompletion: LPVOID, dwCompletionCode: DWORD, pszUrl: LPCSTR, pszObjectOid: LPSTR, pvObject: LPVOID): VOID {.stdcall.}
+  PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC* = proc(
+    pvCompletion: LPVOID,
+    dwCompletionCode: DWORD,
+    pszUrl: LPCSTR,
+    pszObjectOid: LPSTR,
+    pvObject: LPVOID,
+  ): VOID {.stdcall.}
   CRYPT_ASYNC_RETRIEVAL_COMPLETION* {.pure.} = object
     pfnCompletion*: PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC
     pvCompletion*: LPVOID
+
   PCRYPT_ASYNC_RETRIEVAL_COMPLETION* = ptr CRYPT_ASYNC_RETRIEVAL_COMPLETION
   CRYPT_URL_ARRAY* {.pure.} = object
     cUrl*: DWORD
     rgwszUrl*: ptr LPWSTR
+
   PCRYPT_URL_ARRAY* = ptr CRYPT_URL_ARRAY
   CRYPT_URL_INFO* {.pure.} = object
     cbSize*: DWORD
     dwSyncDeltaTime*: DWORD
     cGroup*: DWORD
     rgcGroupEntry*: ptr DWORD
+
   PCRYPT_URL_INFO* = ptr CRYPT_URL_INFO
   CERT_CRL_CONTEXT_PAIR* {.pure.} = object
     pCertContext*: PCCERT_CONTEXT
     pCrlContext*: PCCRL_CONTEXT
+
   PCERT_CRL_CONTEXT_PAIR* = ptr CERT_CRL_CONTEXT_PAIR
   PCCERT_CRL_CONTEXT_PAIR* = ptr CERT_CRL_CONTEXT_PAIR
   CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO* {.pure.} = object
@@ -1727,6 +2039,7 @@
     pMaxAgeTime*: LPFILETIME
     pChainPara*: PCERT_REVOCATION_CHAIN_PARA
     pDeltaCrlIndicator*: PCRYPT_INTEGER_BLOB
+
   PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO* = ptr CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO
   CERT_CHAIN_ENGINE_CONFIG* {.pure.} = object
     cbSize*: DWORD
@@ -1742,10 +2055,12 @@
     hExclusiveRoot*: HCERTSTORE
     hExclusiveTrustedPeople*: HCERTSTORE
     dwExclusiveFlags*: DWORD
+
   PCERT_CHAIN_ENGINE_CONFIG* = ptr CERT_CHAIN_ENGINE_CONFIG
   CERT_TRUST_STATUS* {.pure.} = object
     dwErrorStatus*: DWORD
     dwInfoStatus*: DWORD
+
   PCERT_TRUST_STATUS* = ptr CERT_TRUST_STATUS
   CERT_REVOCATION_INFO* {.pure.} = object
     cbSize*: DWORD
@@ -1755,11 +2070,13 @@
     fHasFreshnessTime*: WINBOOL
     dwFreshnessTime*: DWORD
     pCrlInfo*: PCERT_REVOCATION_CRL_INFO
+
   PCERT_REVOCATION_INFO* = ptr CERT_REVOCATION_INFO
   CERT_TRUST_LIST_INFO* {.pure.} = object
     cbSize*: DWORD
     pCtlEntry*: PCTL_ENTRY
     pCtlContext*: PCCTL_CONTEXT
+
   PCERT_TRUST_LIST_INFO* = ptr CERT_TRUST_LIST_INFO
   CERT_CHAIN_ELEMENT* {.pure.} = object
     cbSize*: DWORD
@@ -1769,6 +2086,7 @@
     pIssuanceUsage*: PCERT_ENHKEY_USAGE
     pApplicationUsage*: PCERT_ENHKEY_USAGE
     pwszExtendedErrorInfo*: LPCWSTR
+
   PCERT_CHAIN_ELEMENT* = ptr CERT_CHAIN_ELEMENT
   PCCERT_CHAIN_ELEMENT* = ptr CERT_CHAIN_ELEMENT
   CERT_SIMPLE_CHAIN* {.pure.} = object
@@ -1779,6 +2097,7 @@
     pTrustListInfo*: PCERT_TRUST_LIST_INFO
     fHasRevocationFreshnessTime*: WINBOOL
     dwRevocationFreshnessTime*: DWORD
+
   PCERT_SIMPLE_CHAIN* = ptr CERT_SIMPLE_CHAIN
   PCCERT_SIMPLE_CHAIN* = ptr CERT_SIMPLE_CHAIN
   PCCERT_CHAIN_CONTEXT* = ptr CERT_CHAIN_CONTEXT
@@ -1793,14 +2112,17 @@
     dwRevocationFreshnessTime*: DWORD
     dwCreateFlags*: DWORD
     ChainId*: GUID
+
   PCERT_CHAIN_CONTEXT* = ptr CERT_CHAIN_CONTEXT
   CERT_USAGE_MATCH* {.pure.} = object
     dwType*: DWORD
     Usage*: CERT_ENHKEY_USAGE
+
   PCERT_USAGE_MATCH* = ptr CERT_USAGE_MATCH
   CTL_USAGE_MATCH* {.pure.} = object
     dwType*: DWORD
     Usage*: CTL_USAGE
+
   PCTL_USAGE_MATCH* = ptr CTL_USAGE_MATCH
   CERT_CHAIN_PARA* {.pure.} = object
     cbSize*: DWORD
@@ -1812,13 +2134,16 @@
     pftCacheResync*: LPFILETIME
     pStrongSignPara*: PCCERT_STRONG_SIGN_PARA
     dwStrongSignFlags*: DWORD
+
   PCERT_CHAIN_PARA* = ptr CERT_CHAIN_PARA
   CRL_REVOCATION_INFO* {.pure.} = object
     pCrlEntry*: PCRL_ENTRY
     pCrlContext*: PCCRL_CONTEXT
     pCrlIssuerChain*: PCCERT_CHAIN_CONTEXT
+
   PCRL_REVOCATION_INFO* = ptr CRL_REVOCATION_INFO
-  PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK* = proc (pCert: PCCERT_CONTEXT, pvFindArg: pointer): WINBOOL {.stdcall.}
+  PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK* =
+    proc(pCert: PCCERT_CONTEXT, pvFindArg: pointer): WINBOOL {.stdcall.}
   CERT_CHAIN_FIND_ISSUER_PARA* {.pure.} = object
     cbSize*: DWORD
     pszUsageIdentifier*: LPCSTR
@@ -1830,6 +2155,7 @@
     pvFindArg*: pointer
     pdwIssuerChainIndex*: ptr DWORD
     pdwIssuerElementIndex*: ptr DWORD
+
   PCERT_CHAIN_FIND_ISSUER_PARA* = ptr CERT_CHAIN_FIND_ISSUER_PARA
   CERT_CHAIN_FIND_BY_ISSUER_PARA* = CERT_CHAIN_FIND_ISSUER_PARA
   PCERT_CHAIN_FIND_BY_ISSUER_PARA* = ptr CERT_CHAIN_FIND_ISSUER_PARA
@@ -1837,6 +2163,7 @@
     cbSize*: DWORD
     dwFlags*: DWORD
     pvExtraPolicyPara*: pointer
+
   PCERT_CHAIN_POLICY_PARA* = ptr CERT_CHAIN_POLICY_PARA
   CERT_CHAIN_POLICY_STATUS* {.pure.} = object
     cbSize*: DWORD
@@ -1844,45 +2171,57 @@
     lChainIndex*: LONG
     lElementIndex*: LONG
     pvExtraPolicyStatus*: pointer
+
   PCERT_CHAIN_POLICY_STATUS* = ptr CERT_CHAIN_POLICY_STATUS
   AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA* {.pure.} = object
     cbSize*: DWORD
     dwRegPolicySettings*: DWORD
     pSignerInfo*: PCMSG_SIGNER_INFO
-  PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA* = ptr AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA
+
+  PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA* =
+    ptr AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA
   AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS* {.pure.} = object
     cbSize*: DWORD
     fCommercial*: WINBOOL
-  PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS* = ptr AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS
+
+  PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS* =
+    ptr AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS
   AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA* {.pure.} = object
     cbSize*: DWORD
     dwRegPolicySettings*: DWORD
     fCommercial*: WINBOOL
-  PAUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA* = ptr AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA
+
+  PAUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA* =
+    ptr AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA
   HTTPSPolicyCallbackData_UNION1* {.pure, union.} = object
     cbStruct*: DWORD
     cbSize*: DWORD
+
   HTTPSPolicyCallbackData* {.pure.} = object
     union1*: HTTPSPolicyCallbackData_UNION1
     dwAuthType*: DWORD
     fdwChecks*: DWORD
     pwszServerName*: ptr WCHAR
+
   PHTTPSPolicyCallbackData* = ptr HTTPSPolicyCallbackData
   SSL_EXTRA_CERT_CHAIN_POLICY_PARA* = HTTPSPolicyCallbackData
   PSSL_EXTRA_CERT_CHAIN_POLICY_PARA* = ptr HTTPSPolicyCallbackData
   EV_EXTRA_CERT_CHAIN_POLICY_PARA* {.pure.} = object
     cbSize*: DWORD
     dwRootProgramQualifierFlags*: DWORD
+
   PEV_EXTRA_CERT_CHAIN_POLICY_PARA* = ptr EV_EXTRA_CERT_CHAIN_POLICY_PARA
   EV_EXTRA_CERT_CHAIN_POLICY_STATUS* {.pure.} = object
     cbSize*: DWORD
     dwQualifiers*: DWORD
     dwIssuanceUsageIndex*: DWORD
+
   PEV_EXTRA_CERT_CHAIN_POLICY_STATUS* = ptr EV_EXTRA_CERT_CHAIN_POLICY_STATUS
   CERT_SERVER_OCSP_RESPONSE_CONTEXT* {.pure.} = object
     cbSize*: DWORD
     pbEncodedOcspResponse*: ptr BYTE
     cbEncodedOcspResponse*: DWORD
+
   PCERT_SERVER_OCSP_RESPONSE_CONTEXT* = ptr CERT_SERVER_OCSP_RESPONSE_CONTEXT
   PCCERT_SERVER_OCSP_RESPONSE_CONTEXT* = ptr CERT_SERVER_OCSP_RESPONSE_CONTEXT
   CERT_SELECT_CHAIN_PARA* {.pure.} = object
@@ -1891,12 +2230,14 @@
     hAdditionalStore*: HCERTSTORE
     pChainPara*: PCERT_CHAIN_PARA
     dwFlags*: DWORD
+
   PCERT_SELECT_CHAIN_PARA* = ptr CERT_SELECT_CHAIN_PARA
   PCCERT_SELECT_CHAIN_PARA* = ptr CERT_SELECT_CHAIN_PARA
   CERT_SELECT_CRITERIA* {.pure.} = object
     dwType*: DWORD
     cPara*: DWORD
     ppPara*: ptr pointer
+
   PCERT_SELECT_CRITERIA* = ptr CERT_SELECT_CRITERIA
   PCCERT_SELECT_CRITERIA* = ptr CERT_SELECT_CRITERIA
   CRYPT_TIMESTAMP_REQUEST* {.pure.} = object
@@ -1908,6 +2249,7 @@
     fCertReq*: WINBOOL
     cExtension*: DWORD
     rgExtension*: PCERT_EXTENSION
+
   PCRYPT_TIMESTAMP_REQUEST* = ptr CRYPT_TIMESTAMP_REQUEST
   CRYPT_TIMESTAMP_RESPONSE* {.pure.} = object
     dwStatus*: DWORD
@@ -1915,11 +2257,13 @@
     rgFreeText*: ptr LPWSTR
     FailureInfo*: CRYPT_BIT_BLOB
     ContentInfo*: CRYPT_DER_BLOB
+
   PCRYPT_TIMESTAMP_RESPONSE* = ptr CRYPT_TIMESTAMP_RESPONSE
   CRYPT_TIMESTAMP_ACCURACY* {.pure.} = object
     dwSeconds*: DWORD
     dwMillis*: DWORD
     dwMicros*: DWORD
+
   PCRYPT_TIMESTAMP_ACCURACY* = ptr CRYPT_TIMESTAMP_ACCURACY
   CRYPT_TIMESTAMP_INFO* {.pure.} = object
     dwVersion*: DWORD
@@ -1934,11 +2278,13 @@
     Tsa*: CRYPT_DER_BLOB
     cExtension*: DWORD
     rgExtension*: PCERT_EXTENSION
+
   PCRYPT_TIMESTAMP_INFO* = ptr CRYPT_TIMESTAMP_INFO
   CRYPT_TIMESTAMP_CONTEXT* {.pure.} = object
     cbEncoded*: DWORD
     pbEncoded*: ptr BYTE
     pTimeStamp*: PCRYPT_TIMESTAMP_INFO
+
   PCRYPT_TIMESTAMP_CONTEXT* = ptr CRYPT_TIMESTAMP_CONTEXT
   CRYPT_TIMESTAMP_PARA* {.pure.} = object
     pszTSAPolicyId*: LPCSTR
@@ -1946,12 +2292,26 @@
     Nonce*: CRYPT_INTEGER_BLOB
     cExtension*: DWORD
     rgExtension*: PCERT_EXTENSION
+
   PCRYPT_TIMESTAMP_PARA* = ptr CRYPT_TIMESTAMP_PARA
-  PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET* = proc (pPluginContext: LPVOID, pIdentifier: PCRYPT_DATA_BLOB, dwNameType: DWORD, pNameBlob: PCERT_NAME_BLOB, ppbContent: ptr PBYTE, pcbContent: ptr DWORD, ppwszPassword: ptr PCWSTR, ppIdentifier: ptr PCRYPT_DATA_BLOB): WINBOOL {.stdcall.}
-  PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE* = proc (dwReason: DWORD, pPluginContext: LPVOID): void {.stdcall.}
-  PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_PASSWORD* = proc (pPluginContext: LPVOID, pwszPassword: PCWSTR): void {.stdcall.}
-  PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE* = proc (pPluginContext: LPVOID, pbData: PBYTE): void {.stdcall.}
-  PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_IDENTIFIER* = proc (pPluginContext: LPVOID, pIdentifier: PCRYPT_DATA_BLOB): void {.stdcall.}
+  PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET* = proc(
+    pPluginContext: LPVOID,
+    pIdentifier: PCRYPT_DATA_BLOB,
+    dwNameType: DWORD,
+    pNameBlob: PCERT_NAME_BLOB,
+    ppbContent: ptr PBYTE,
+    pcbContent: ptr DWORD,
+    ppwszPassword: ptr PCWSTR,
+    ppIdentifier: ptr PCRYPT_DATA_BLOB,
+  ): WINBOOL {.stdcall.}
+  PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE* =
+    proc(dwReason: DWORD, pPluginContext: LPVOID): void {.stdcall.}
+  PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_PASSWORD* =
+    proc(pPluginContext: LPVOID, pwszPassword: PCWSTR): void {.stdcall.}
+  PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE* =
+    proc(pPluginContext: LPVOID, pbData: PBYTE): void {.stdcall.}
+  PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_IDENTIFIER* =
+    proc(pPluginContext: LPVOID, pIdentifier: PCRYPT_DATA_BLOB): void {.stdcall.}
   CRYPT_OBJECT_LOCATOR_PROVIDER_TABLE* {.pure.} = object
     cbSize*: DWORD
     pfnGet*: PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET
@@ -1959,13 +2319,16 @@
     pfnFreePassword*: PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_PASSWORD
     pfnFree*: PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE
     pfnFreeIdentifier*: PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_IDENTIFIER
+
   PCRYPT_OBJECT_LOCATOR_PROVIDER_TABLE* = ptr CRYPT_OBJECT_LOCATOR_PROVIDER_TABLE
   CRYPTPROTECT_PROMPTSTRUCT* {.pure.} = object
     cbSize*: DWORD
     dwPromptFlags*: DWORD
     hwndApp*: HWND
     szPrompt*: LPCWSTR
+
   PCRYPTPROTECT_PROMPTSTRUCT* = ptr CRYPTPROTECT_PROMPTSTRUCT
+
 const
   ALG_CLASS_ANY* = 0
   ALG_CLASS_SIGNATURE* = 1 shl 13
@@ -2070,13 +2433,20 @@
   CALG_TEK* = ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK or ALG_SID_TEK
   CALG_CYLINK_MEK* = ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK or ALG_SID_CYLINK_MEK
   CALG_SSL3_SHAMD5* = ALG_CLASS_HASH or ALG_TYPE_ANY or ALG_SID_SSL3SHAMD5
-  CALG_SSL3_MASTER* = ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SSL3_MASTER
-  CALG_SCHANNEL_MASTER_HASH* = ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SCHANNEL_MASTER_HASH
-  CALG_SCHANNEL_MAC_KEY* = ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SCHANNEL_MAC_KEY
-  CALG_SCHANNEL_ENC_KEY* = ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SCHANNEL_ENC_KEY
-  CALG_PCT1_MASTER* = ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_PCT1_MASTER
-  CALG_SSL2_MASTER* = ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SSL2_MASTER
-  CALG_TLS1_MASTER* = ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_TLS1_MASTER
+  CALG_SSL3_MASTER* =
+    ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SSL3_MASTER
+  CALG_SCHANNEL_MASTER_HASH* =
+    ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SCHANNEL_MASTER_HASH
+  CALG_SCHANNEL_MAC_KEY* =
+    ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SCHANNEL_MAC_KEY
+  CALG_SCHANNEL_ENC_KEY* =
+    ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SCHANNEL_ENC_KEY
+  CALG_PCT1_MASTER* =
+    ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_PCT1_MASTER
+  CALG_SSL2_MASTER* =
+    ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SSL2_MASTER
+  CALG_TLS1_MASTER* =
+    ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_TLS1_MASTER
   CALG_RC5* = ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK or ALG_SID_RC5
   CALG_HMAC* = ALG_CLASS_HASH or ALG_TYPE_ANY or ALG_SID_HMAC
   CALG_TLS1PRF* = ALG_CLASS_HASH or ALG_TYPE_ANY or ALG_SID_TLS1PRF
@@ -2316,8 +2686,10 @@
   MS_DEF_DSS_PROV_W* = "Microsoft Base DSS Cryptographic Provider"
   MS_DEF_DSS_DH_PROV_A* = "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
   MS_DEF_DSS_DH_PROV_W* = "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
-  MS_ENH_DSS_DH_PROV_A* = "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
-  MS_ENH_DSS_DH_PROV_W* = "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
+  MS_ENH_DSS_DH_PROV_A* =
+    "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
+  MS_ENH_DSS_DH_PROV_W* =
+    "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
   MS_DEF_DH_SCHANNEL_PROV_A* = "Microsoft DH SChannel Cryptographic Provider"
   MS_DEF_DH_SCHANNEL_PROV_W* = "Microsoft DH SChannel Cryptographic Provider"
   MS_SCARD_PROV_A* = "Microsoft Base Smart Card Crypto Provider"
@@ -2688,13 +3060,15 @@
   NCRYPT_PCP_PROVIDERHANDLE_PROPERTY* = "PCP_PROVIDERMHANDLE"
   NCRYPT_PCP_PLATFORMHANDLE_PROPERTY* = "PCP_PLATFORMHANDLE"
   NCRYPT_PCP_PLATFORM_BINDING_PCRMASK_PROPERTY* = "PCP_PLATFORM_BINDING_PCRMASK"
-  NCRYPT_PCP_PLATFORM_BINDING_PCRDIGESTLIST_PROPERTY* = "PCP_PLATFORM_BINDING_PCRDIGESTLIST"
+  NCRYPT_PCP_PLATFORM_BINDING_PCRDIGESTLIST_PROPERTY* =
+    "PCP_PLATFORM_BINDING_PCRDIGESTLIST"
   NCRYPT_PCP_PLATFORM_BINDING_PCRDIGEST_PROPERTY* = "PCP_PLATFORM_BINDING_PCRDIGEST"
   NCRYPT_PCP_KEY_USAGE_POLICY_PROPERTY* = "PCP_KEY_USAGE_POLICY"
   NCRYPT_PCP_TPM12_IDBINDING_PROPERTY* = "PCP_TPM12_IDBINDING"
   NCRYPT_PCP_TPM12_IDACTIVATION_PROPERTY* = "PCP_TPM12_IDACTIVATION"
   NCRYPT_PCP_KEYATTESTATION_PROPERTY* = "PCP_TPM12_KEYATTESTATION"
-  NCRYPT_PCP_ALTERNATE_KEY_STORAGE_LOCATION_PROPERTY* = "PCP_ALTERNATE_KEY_STORAGE_LOCATION"
+  NCRYPT_PCP_ALTERNATE_KEY_STORAGE_LOCATION_PROPERTY* =
+    "PCP_ALTERNATE_KEY_STORAGE_LOCATION"
   NCRYPT_TPM12_PROVIDER* = 0x00010000
   NCRYPT_PCP_SIGNATURE_KEY* = 0x1
   NCRYPT_PCP_ENCRYPTION_KEY* = 0x2
@@ -3002,13 +3376,15 @@
   CRYPT_ENCODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG* = 0x8
   CRYPT_ENCODE_ALLOC_FLAG* = 0x8000
   CRYPT_UNICODE_NAME_ENCODE_ENABLE_T61_UNICODE_FLAG* = CERT_RDN_ENABLE_T61_UNICODE_FLAG
-  CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG* = CERT_RDN_ENABLE_UTF8_UNICODE_FLAG
+  CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG* =
+    CERT_RDN_ENABLE_UTF8_UNICODE_FLAG
   CRYPT_UNICODE_NAME_ENCODE_FORCE_UTF8_UNICODE_FLAG* = CERT_RDN_FORCE_UTF8_UNICODE_FLAG
   CRYPT_UNICODE_NAME_ENCODE_DISABLE_CHECK_TYPE_FLAG* = CERT_RDN_DISABLE_CHECK_TYPE_FLAG
   CRYPT_SORTED_CTL_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG* = 0x10000
   CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG* = 0x20000
   CRYPT_ENCODE_ENABLE_UTF8PERCENT_FLAG* = 0x40000
-  CRYPT_ENCODE_ENABLE_IA5CONVERSION_FLAG* = CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG or CRYPT_ENCODE_ENABLE_UTF8PERCENT_FLAG
+  CRYPT_ENCODE_ENABLE_IA5CONVERSION_FLAG* =
+    CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG or CRYPT_ENCODE_ENABLE_UTF8PERCENT_FLAG
   CRYPT_DECODE_NOCOPY_FLAG* = 0x1
   CRYPT_DECODE_TO_BE_SIGNED_FLAG* = 0x2
   CRYPT_DECODE_SHARE_OID_STRING_FLAG* = 0x4
@@ -3017,7 +3393,8 @@
   CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG* = CERT_RDN_DISABLE_IE4_UTF8_FLAG
   CRYPT_DECODE_ENABLE_PUNYCODE_FLAG* = 0x2000000
   CRYPT_DECODE_ENABLE_UTF8PERCENT_FLAG* = 0x4000000
-  CRYPT_DECODE_ENABLE_IA5CONVERSION_FLAG* = CRYPT_DECODE_ENABLE_PUNYCODE_FLAG or CRYPT_DECODE_ENABLE_UTF8PERCENT_FLAG
+  CRYPT_DECODE_ENABLE_IA5CONVERSION_FLAG* =
+    CRYPT_DECODE_ENABLE_PUNYCODE_FLAG or CRYPT_DECODE_ENABLE_UTF8PERCENT_FLAG
   CRYPT_ENCODE_DECODE_NONE* = 0
   X509_CERT* = cast[LPCSTR](1)
   X509_CERT_TO_BE_SIGNED* = cast[LPCSTR](2)
@@ -3309,9 +3686,9 @@
   SORTED_CTL_EXT_HASHED_SUBJECT_IDENTIFIER_FLAG* = 0x1
   CERT_DSS_R_LEN* = 20
   CERT_DSS_S_LEN* = 20
-  CERT_DSS_SIGNATURE_LEN* = CERT_DSS_R_LEN+CERT_DSS_S_LEN
+  CERT_DSS_SIGNATURE_LEN* = CERT_DSS_R_LEN + CERT_DSS_S_LEN
   CERT_MAX_ASN_ENCODED_DSS_SIGNATURE_LEN* = 48
-  CRYPT_X942_PUB_INFO_BYTE_LENGTH* = 512/8
+  CRYPT_X942_PUB_INFO_BYTE_LENGTH* = 512 / 8
   CRYPT_RC2_40BIT_VERSION* = 160
   CRYPT_RC2_56BIT_VERSION* = 52
   CRYPT_RC2_64BIT_VERSION* = 120
@@ -3655,7 +4032,8 @@
   CMSG_OID_CAPI1_IMPORT_MAIL_LIST_FUNC* = CMSG_OID_IMPORT_MAIL_LIST_FUNC
   CMSG_OID_CNG_IMPORT_KEY_TRANS_FUNC* = "CryptMsgDllCNGImportKeyTrans"
   CMSG_OID_CNG_IMPORT_KEY_AGREE_FUNC* = "CryptMsgDllCNGImportKeyAgree"
-  CMSG_OID_CNG_IMPORT_CONTENT_ENCRYPT_KEY_FUNC* = "CryptMsgDllCNGImportContentEncryptKey"
+  CMSG_OID_CNG_IMPORT_CONTENT_ENCRYPT_KEY_FUNC* =
+    "CryptMsgDllCNGImportContentEncryptKey"
   CERT_KEY_PROV_HANDLE_PROP_ID* = 1
   CERT_KEY_PROV_INFO_PROP_ID* = 2
   CERT_SHA1_HASH_PROP_ID* = 3
@@ -3829,15 +4207,24 @@
   CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID* = 7
   CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID* = 8
   CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID* = 9
-  CERT_SYSTEM_STORE_CURRENT_USER* = CERT_SYSTEM_STORE_CURRENT_USER_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
-  CERT_SYSTEM_STORE_LOCAL_MACHINE* = CERT_SYSTEM_STORE_LOCAL_MACHINE_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
-  CERT_SYSTEM_STORE_CURRENT_SERVICE* = CERT_SYSTEM_STORE_CURRENT_SERVICE_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
-  CERT_SYSTEM_STORE_SERVICES* = CERT_SYSTEM_STORE_SERVICES_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
-  CERT_SYSTEM_STORE_USERS* = CERT_SYSTEM_STORE_USERS_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
-  CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY* = CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
-  CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY* = CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
-  CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE* = CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
-  CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH* = "Software\\Policies\\Microsoft\\SystemCertificates"
+  CERT_SYSTEM_STORE_CURRENT_USER* =
+    CERT_SYSTEM_STORE_CURRENT_USER_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
+  CERT_SYSTEM_STORE_LOCAL_MACHINE* =
+    CERT_SYSTEM_STORE_LOCAL_MACHINE_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
+  CERT_SYSTEM_STORE_CURRENT_SERVICE* =
+    CERT_SYSTEM_STORE_CURRENT_SERVICE_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
+  CERT_SYSTEM_STORE_SERVICES* =
+    CERT_SYSTEM_STORE_SERVICES_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
+  CERT_SYSTEM_STORE_USERS* =
+    CERT_SYSTEM_STORE_USERS_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
+  CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY* =
+    CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
+  CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY* =
+    CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
+  CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE* =
+    CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT
+  CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH* =
+    "Software\\Policies\\Microsoft\\SystemCertificates"
   CERT_EFSBLOB_VALUE_NAME* = "EFSBlob"
   CERT_PROT_ROOT_FLAGS_VALUE_NAME* = "Flags"
   CERT_PROT_ROOT_DISABLE_CURRENT_USER_FLAG* = 0x1
@@ -3858,13 +4245,17 @@
   CERT_TRUST_PUB_ALLOW_ENTERPRISE_ADMIN_TRUST* = 0x2
   CERT_TRUST_PUB_CHECK_PUBLISHER_REV_FLAG* = 0x100
   CERT_TRUST_PUB_CHECK_TIMESTAMP_REV_FLAG* = 0x200
-  CERT_OCM_SUBCOMPONENTS_LOCAL_MACHINE_REGPATH* = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OC Manager\\Subcomponents"
+  CERT_OCM_SUBCOMPONENTS_LOCAL_MACHINE_REGPATH* =
+    "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OC Manager\\Subcomponents"
   CERT_OCM_SUBCOMPONENTS_ROOT_AUTO_UPDATE_VALUE_NAME* = "RootAutoUpdate"
   CERT_DISABLE_ROOT_AUTO_UPDATE_VALUE_NAME* = "DisableRootAutoUpdate"
   CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME* = "RootDirUrl"
-  CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH* = CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH & "\\AuthRoot\\AutoUpdate"
-  CERT_AUTH_ROOT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH* = CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH
-  CERT_AUTH_ROOT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME* = CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME
+  CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH* =
+    CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH & "\\AuthRoot\\AutoUpdate"
+  CERT_AUTH_ROOT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH* =
+    CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH
+  CERT_AUTH_ROOT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME* =
+    CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME
   CERT_AUTH_ROOT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME* = "SyncDeltaTime"
   CERT_AUTH_ROOT_AUTO_UPDATE_FLAGS_VALUE_NAME* = "Flags"
   CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_UNTRUSTED_ROOT_LOGGING_FLAG* = 0x1
@@ -3877,8 +4268,10 @@
   CERT_AUTH_ROOT_CAB_FILENAME* = "authrootstl.cab"
   CERT_AUTH_ROOT_SEQ_FILENAME* = "authrootseq.txt"
   CERT_AUTH_ROOT_CERT_EXT* = ".crt"
-  CERT_DISALLOWED_CERT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME* = "DisallowedCertSyncDeltaTime"
-  CERT_DISALLOWED_CERT_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME* = "DisallowedCertLastSyncTime"
+  CERT_DISALLOWED_CERT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME* =
+    "DisallowedCertSyncDeltaTime"
+  CERT_DISALLOWED_CERT_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME* =
+    "DisallowedCertLastSyncTime"
   CERT_DISALLOWED_CERT_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME* = "DisallowedCertEncodedCtl"
   CERT_DISALLOWED_CERT_CTL_FILENAME* = "disallowedcert.stl"
   CERT_DISALLOWED_CERT_CTL_FILENAME_A* = "disallowedcert.stl"
@@ -3973,15 +4366,23 @@
   CERT_FIND_HASH* = CERT_FIND_SHA1_HASH
   CERT_FIND_PROPERTY* = CERT_COMPARE_PROPERTY shl CERT_COMPARE_SHIFT
   CERT_FIND_PUBLIC_KEY* = CERT_COMPARE_PUBLIC_KEY shl CERT_COMPARE_SHIFT
-  CERT_FIND_SUBJECT_NAME* = CERT_COMPARE_NAME shl CERT_COMPARE_SHIFT or CERT_INFO_SUBJECT_FLAG
-  CERT_FIND_SUBJECT_ATTR* = CERT_COMPARE_ATTR shl CERT_COMPARE_SHIFT or CERT_INFO_SUBJECT_FLAG
-  CERT_FIND_ISSUER_NAME* = CERT_COMPARE_NAME shl CERT_COMPARE_SHIFT or CERT_INFO_ISSUER_FLAG
-  CERT_FIND_ISSUER_ATTR* = CERT_COMPARE_ATTR shl CERT_COMPARE_SHIFT or CERT_INFO_ISSUER_FLAG
-  CERT_FIND_SUBJECT_STR_A* = CERT_COMPARE_NAME_STR_A shl CERT_COMPARE_SHIFT or CERT_INFO_SUBJECT_FLAG
-  CERT_FIND_SUBJECT_STR_W* = CERT_COMPARE_NAME_STR_W shl CERT_COMPARE_SHIFT or CERT_INFO_SUBJECT_FLAG
+  CERT_FIND_SUBJECT_NAME* =
+    CERT_COMPARE_NAME shl CERT_COMPARE_SHIFT or CERT_INFO_SUBJECT_FLAG
+  CERT_FIND_SUBJECT_ATTR* =
+    CERT_COMPARE_ATTR shl CERT_COMPARE_SHIFT or CERT_INFO_SUBJECT_FLAG
+  CERT_FIND_ISSUER_NAME* =
+    CERT_COMPARE_NAME shl CERT_COMPARE_SHIFT or CERT_INFO_ISSUER_FLAG
+  CERT_FIND_ISSUER_ATTR* =
+    CERT_COMPARE_ATTR shl CERT_COMPARE_SHIFT or CERT_INFO_ISSUER_FLAG
+  CERT_FIND_SUBJECT_STR_A* =
+    CERT_COMPARE_NAME_STR_A shl CERT_COMPARE_SHIFT or CERT_INFO_SUBJECT_FLAG
+  CERT_FIND_SUBJECT_STR_W* =
+    CERT_COMPARE_NAME_STR_W shl CERT_COMPARE_SHIFT or CERT_INFO_SUBJECT_FLAG
   CERT_FIND_SUBJECT_STR* = CERT_FIND_SUBJECT_STR_W
-  CERT_FIND_ISSUER_STR_A* = CERT_COMPARE_NAME_STR_A shl CERT_COMPARE_SHIFT or CERT_INFO_ISSUER_FLAG
-  CERT_FIND_ISSUER_STR_W* = CERT_COMPARE_NAME_STR_W shl CERT_COMPARE_SHIFT or CERT_INFO_ISSUER_FLAG
+  CERT_FIND_ISSUER_STR_A* =
+    CERT_COMPARE_NAME_STR_A shl CERT_COMPARE_SHIFT or CERT_INFO_ISSUER_FLAG
+  CERT_FIND_ISSUER_STR_W* =
+    CERT_COMPARE_NAME_STR_W shl CERT_COMPARE_SHIFT or CERT_INFO_ISSUER_FLAG
   CERT_FIND_ISSUER_STR* = CERT_FIND_ISSUER_STR_W
   CERT_FIND_KEY_SPEC* = CERT_COMPARE_KEY_SPEC shl CERT_COMPARE_SHIFT
   CERT_FIND_ENHKEY_USAGE* = CERT_COMPARE_ENHKEY_USAGE shl CERT_COMPARE_SHIFT
@@ -3990,9 +4391,11 @@
   CERT_FIND_ISSUER_OF* = CERT_COMPARE_ISSUER_OF shl CERT_COMPARE_SHIFT
   CERT_FIND_EXISTING* = CERT_COMPARE_EXISTING shl CERT_COMPARE_SHIFT
   CERT_FIND_CERT_ID* = CERT_COMPARE_CERT_ID shl CERT_COMPARE_SHIFT
-  CERT_FIND_CROSS_CERT_DIST_POINTS* = CERT_COMPARE_CROSS_CERT_DIST_POINTS shl CERT_COMPARE_SHIFT
+  CERT_FIND_CROSS_CERT_DIST_POINTS* =
+    CERT_COMPARE_CROSS_CERT_DIST_POINTS shl CERT_COMPARE_SHIFT
   CERT_FIND_PUBKEY_MD5_HASH* = CERT_COMPARE_PUBKEY_MD5_HASH shl CERT_COMPARE_SHIFT
-  CERT_FIND_SUBJECT_INFO_ACCESS* = CERT_COMPARE_SUBJECT_INFO_ACCESS shl CERT_COMPARE_SHIFT
+  CERT_FIND_SUBJECT_INFO_ACCESS* =
+    CERT_COMPARE_SUBJECT_INFO_ACCESS shl CERT_COMPARE_SHIFT
   CERT_FIND_HASH_STR* = CERT_COMPARE_HASH_STR shl CERT_COMPARE_SHIFT
   CERT_FIND_HAS_PRIVATE_KEY* = CERT_COMPARE_HAS_PRIVATE_KEY shl CERT_COMPARE_SHIFT
   CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG* = 0x1
@@ -4107,7 +4510,8 @@
   CRYPT_VERIFY_CERT_SIGN_DISABLE_MD2_MD4_FLAG* = 0x1
   CRYPT_VERIFY_CERT_SIGN_SET_STRONG_PROPERTIES_FLAG* = 0x2
   CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG* = 0x4
-  CRYPT_OID_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC* = "CryptDllExtractEncodedSignatureParameters"
+  CRYPT_OID_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC* =
+    "CryptDllExtractEncodedSignatureParameters"
   CRYPT_OID_SIGN_AND_ENCODE_HASH_FUNC* = "CryptDllSignAndEncodeHash"
   CRYPT_OID_VERIFY_ENCODED_SIGNATURE_FUNC* = "CryptDllVerifyEncodedSignature"
   CRYPT_DEFAULT_CONTEXT_AUTO_RELEASE_FLAG* = 0x1
@@ -4116,7 +4520,8 @@
   CRYPT_DEFAULT_CONTEXT_MULTI_CERT_SIGN_OID* = 2
   CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC* = "CryptDllExportPublicKeyInfoEx"
   CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC* = "CryptDllExportPublicKeyInfoEx2"
-  CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FROM_BCRYPT_HANDLE_FUNC* = "CryptDllExportPublicKeyInfoFromBCryptKeyHandle"
+  CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FROM_BCRYPT_HANDLE_FUNC* =
+    "CryptDllExportPublicKeyInfoFromBCryptKeyHandle"
   CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC* = "CryptDllImportPublicKeyInfoEx"
   CRYPT_OID_IMPORT_PRIVATE_KEY_INFO_FUNC* = "CryptDllImportPrivateKeyInfoEx"
   CRYPT_OID_EXPORT_PRIVATE_KEY_INFO_FUNC* = "CryptDllExportPrivateKeyInfoEx"
@@ -4192,20 +4597,34 @@
   CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL* = 1 shl CERT_QUERY_CONTENT_SERIALIZED_CRL
   CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED* = 1 shl CERT_QUERY_CONTENT_PKCS7_SIGNED
   CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED* = 1 shl CERT_QUERY_CONTENT_PKCS7_UNSIGNED
-  CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED* = 1 shl CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
+  CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED* =
+    1 shl CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
   CERT_QUERY_CONTENT_FLAG_PKCS10* = 1 shl CERT_QUERY_CONTENT_PKCS10
   CERT_QUERY_CONTENT_FLAG_PFX* = 1 shl CERT_QUERY_CONTENT_PFX
   CERT_QUERY_CONTENT_FLAG_CERT_PAIR* = 1 shl CERT_QUERY_CONTENT_CERT_PAIR
   CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD* = 1 shl CERT_QUERY_CONTENT_PFX_AND_LOAD
-  CERT_QUERY_CONTENT_FLAG_ALL* = CERT_QUERY_CONTENT_FLAG_CERT or CERT_QUERY_CONTENT_FLAG_CTL or CERT_QUERY_CONTENT_FLAG_CRL or CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE or CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT or CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL or CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL or CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED or CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED or CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED or CERT_QUERY_CONTENT_FLAG_PKCS10 or CERT_QUERY_CONTENT_FLAG_PFX or CERT_QUERY_CONTENT_FLAG_CERT_PAIR
-  CERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT* = CERT_QUERY_CONTENT_FLAG_CERT or CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE or CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT or CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED or CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
+  CERT_QUERY_CONTENT_FLAG_ALL* =
+    CERT_QUERY_CONTENT_FLAG_CERT or CERT_QUERY_CONTENT_FLAG_CTL or
+    CERT_QUERY_CONTENT_FLAG_CRL or CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE or
+    CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT or CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL or
+    CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL or CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED or
+    CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED or CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED or
+    CERT_QUERY_CONTENT_FLAG_PKCS10 or CERT_QUERY_CONTENT_FLAG_PFX or
+    CERT_QUERY_CONTENT_FLAG_CERT_PAIR
+  CERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT* =
+    CERT_QUERY_CONTENT_FLAG_CERT or CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE or
+    CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT or CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED or
+    CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
   CERT_QUERY_FORMAT_BINARY* = 1
   CERT_QUERY_FORMAT_BASE64_ENCODED* = 2
   CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED* = 3
   CERT_QUERY_FORMAT_FLAG_BINARY* = 1 shl CERT_QUERY_FORMAT_BINARY
   CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED* = 1 shl CERT_QUERY_FORMAT_BASE64_ENCODED
-  CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED* = 1 shl CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED
-  CERT_QUERY_FORMAT_FLAG_ALL* = CERT_QUERY_FORMAT_FLAG_BINARY or CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED or CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED
+  CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED* =
+    1 shl CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED
+  CERT_QUERY_FORMAT_FLAG_ALL* =
+    CERT_QUERY_FORMAT_FLAG_BINARY or CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED or
+    CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED
   CREDENTIAL_OID_PASSWORD_CREDENTIALS_A* = cast[LPCSTR](1)
   CREDENTIAL_OID_PASSWORD_CREDENTIALS_W* = cast[LPCSTR](2)
   SCHEME_OID_RETRIEVE_ENCODED_OBJECT_FUNC* = "SchemeDllRetrieveEncodedObject"
@@ -4276,7 +4695,8 @@
   URL_OID_CROSS_CERT_SUBJECT_INFO_ACCESS* = cast[LPCSTR](12)
   URL_OID_CERTIFICATE_ONLY_OCSP* = cast[LPCSTR](13)
   TIME_VALID_OID_GET_OBJECT_FUNC* = "TimeValidDllGetObject"
-  CERT_CHAIN_CONFIG_REGPATH* = "Software\\Microsoft\\Cryptography\\OID\\EncodingType 0\\CertDllCreateCertificateChainEngine\\Config"
+  CERT_CHAIN_CONFIG_REGPATH* =
+    "Software\\Microsoft\\Cryptography\\OID\\EncodingType 0\\CertDllCreateCertificateChainEngine\\Config"
   TIME_VALID_OID_GET_CTL* = cast[LPCSTR](1)
   TIME_VALID_OID_GET_CRL* = cast[LPCSTR](2)
   TIME_VALID_OID_GET_CRL_FROM_CERT* = cast[LPCSTR](3)
@@ -4295,21 +4715,26 @@
   CRYPT_KEYID_SET_NEW_FLAG* = 0x2000
   CRYPT_KEYID_ALLOC_FLAG* = 0x8000
   CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME* = "MaxUrlRetrievalByteCount"
-  CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_DEFAULT* = 100*1024*1024
+  CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_DEFAULT* = 100 * 1024 * 1024
   CERT_CHAIN_CACHE_RESYNC_FILETIME_VALUE_NAME* = "ChainCacheResyncFiletime"
-  CERT_CHAIN_DISABLE_MANDATORY_BASIC_CONSTRAINTS_VALUE_NAME* = "DisableMandatoryBasicConstraints"
+  CERT_CHAIN_DISABLE_MANDATORY_BASIC_CONSTRAINTS_VALUE_NAME* =
+    "DisableMandatoryBasicConstraints"
   CERT_CHAIN_DISABLE_CA_NAME_CONSTRAINTS_VALUE_NAME* = "DisableCANameConstraints"
-  CERT_CHAIN_DISABLE_UNSUPPORTED_CRITICAL_EXTENSIONS_VALUE_NAME* = "DisableUnsupportedCriticalExtensions"
+  CERT_CHAIN_DISABLE_UNSUPPORTED_CRITICAL_EXTENSIONS_VALUE_NAME* =
+    "DisableUnsupportedCriticalExtensions"
   CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_VALUE_NAME* = "MaxAIAUrlCountInCert"
   CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_DEFAULT* = 5
-  CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_VALUE_NAME* = "MaxAIAUrlRetrievalCountPerChain"
+  CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_VALUE_NAME* =
+    "MaxAIAUrlRetrievalCountPerChain"
   CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_DEFAULT* = 3
-  CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME* = "MaxAIAUrlRetrievalByteCount"
+  CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME* =
+    "MaxAIAUrlRetrievalByteCount"
   CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_DEFAULT* = 100000
-  CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_VALUE_NAME* = "MaxAIAUrlRetrievalCertCount"
+  CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_VALUE_NAME* =
+    "MaxAIAUrlRetrievalCertCount"
   CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_DEFAULT* = 10
   CERT_CHAIN_OCSP_VALIDITY_SECONDS_VALUE_NAME* = "OcspValiditySeconds"
-  CERT_CHAIN_OCSP_VALIDITY_SECONDS_DEFAULT* = 12*60*60
+  CERT_CHAIN_OCSP_VALIDITY_SECONDS_DEFAULT* = 12 * 60 * 60
   CERT_CHAIN_ENABLE_WEAK_SIGNATURE_FLAGS_VALUE_NAME* = "EnableWeakSignatureFlags"
   CERT_CHAIN_ENABLE_MD2_MD4_FLAG* = 0x1
   CERT_CHAIN_ENABLE_WEAK_RSA_ROOT_FLAG* = 0x2
@@ -4322,64 +4747,89 @@
   CERT_CHAIN_WEAK_RSA_PUB_KEY_TIME_DEFAULT* = 0x01ca8a755c6e0000
   CERT_CHAIN_WEAK_SIGNATURE_LOG_DIR_VALUE_NAME* = "WeakSignatureLogDir"
   CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_VALUE_NAME* = "SrvOcspRespMinValiditySeconds"
-  CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_DEFAULT* = 10*60
-  CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME* = "SrvOcspRespUrlRetrievalTimeoutMilliseconds"
-  CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT* = 15*1000
-  CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME* = "SrvOcspRespMaxBeforeNextUpdateSeconds"
-  CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT* = 4*60*60
-  CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME* = "SrvOcspRespMinBeforeNextUpdateSeconds"
-  CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT* = 2*60
-  CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME* = "SrvOcspRespMinAfterNextUpdateSeconds"
-  CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_DEFAULT* = 1*60
-  CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_VALUE_NAME* = "CryptnetMaxCachedOcspPerCrlCount"
+  CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_DEFAULT* = 10 * 60
+  CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME* =
+    "SrvOcspRespUrlRetrievalTimeoutMilliseconds"
+  CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT* = 15 * 1000
+  CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME* =
+    "SrvOcspRespMaxBeforeNextUpdateSeconds"
+  CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT* = 4 * 60 * 60
+  CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME* =
+    "SrvOcspRespMinBeforeNextUpdateSeconds"
+  CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT* = 2 * 60
+  CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME* =
+    "SrvOcspRespMinAfterNextUpdateSeconds"
+  CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_DEFAULT* = 1 * 60
+  CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_VALUE_NAME* =
+    "CryptnetMaxCachedOcspPerCrlCount"
   CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_DEFAULT* = 500
   CRYPTNET_OCSP_AFTER_CRL_DISABLE* = 0xffffffff'i32
-  CRYPTNET_URL_CACHE_DEFAULT_FLUSH_EXEMPT_SECONDS_VALUE_NAME* = "CryptnetDefaultFlushExemptSeconds"
-  CRYPTNET_URL_CACHE_DEFAULT_FLUSH_EXEMPT_SECONDS_DEFAULT* = 28*24*60*60
-  CRYPTNET_PRE_FETCH_MIN_MAX_AGE_SECONDS_VALUE_NAME* = "CryptnetPreFetchMinMaxAgeSeconds"
-  CRYPTNET_PRE_FETCH_MIN_MAX_AGE_SECONDS_DEFAULT* = 1*60*60
-  CRYPTNET_PRE_FETCH_MAX_MAX_AGE_SECONDS_VALUE_NAME* = "CryptnetPreFetchMaxMaxAgeSeconds"
-  CRYPTNET_PRE_FETCH_MAX_MAX_AGE_SECONDS_DEFAULT* = 14*24*60*60
-  CRYPTNET_PRE_FETCH_MIN_OCSP_VALIDITY_PERIOD_SECONDS_VALUE_NAME* = "CryptnetPreFetchMinOcspValidityPeriodSeconds"
-  CRYPTNET_PRE_FETCH_MIN_OCSP_VALIDITY_PERIOD_SECONDS_DEFAULT* = 14*24*60*60
-  CRYPTNET_PRE_FETCH_AFTER_PUBLISH_PRE_FETCH_DIVISOR_VALUE_NAME* = "CryptnetPreFetchAfterPublishPreFetchDivisor"
+  CRYPTNET_URL_CACHE_DEFAULT_FLUSH_EXEMPT_SECONDS_VALUE_NAME* =
+    "CryptnetDefaultFlushExemptSeconds"
+  CRYPTNET_URL_CACHE_DEFAULT_FLUSH_EXEMPT_SECONDS_DEFAULT* = 28 * 24 * 60 * 60
+  CRYPTNET_PRE_FETCH_MIN_MAX_AGE_SECONDS_VALUE_NAME* =
+    "CryptnetPreFetchMinMaxAgeSeconds"
+  CRYPTNET_PRE_FETCH_MIN_MAX_AGE_SECONDS_DEFAULT* = 1 * 60 * 60
+  CRYPTNET_PRE_FETCH_MAX_MAX_AGE_SECONDS_VALUE_NAME* =
+    "CryptnetPreFetchMaxMaxAgeSeconds"
+  CRYPTNET_PRE_FETCH_MAX_MAX_AGE_SECONDS_DEFAULT* = 14 * 24 * 60 * 60
+  CRYPTNET_PRE_FETCH_MIN_OCSP_VALIDITY_PERIOD_SECONDS_VALUE_NAME* =
+    "CryptnetPreFetchMinOcspValidityPeriodSeconds"
+  CRYPTNET_PRE_FETCH_MIN_OCSP_VALIDITY_PERIOD_SECONDS_DEFAULT* = 14 * 24 * 60 * 60
+  CRYPTNET_PRE_FETCH_AFTER_PUBLISH_PRE_FETCH_DIVISOR_VALUE_NAME* =
+    "CryptnetPreFetchAfterPublishPreFetchDivisor"
   CRYPTNET_PRE_FETCH_AFTER_PUBLISH_PRE_FETCH_DIVISOR_DEFAULT* = 10
-  CRYPTNET_PRE_FETCH_BEFORE_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME* = "CryptnetPreFetchBeforeNextUpdatePreFetchDivisor"
+  CRYPTNET_PRE_FETCH_BEFORE_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME* =
+    "CryptnetPreFetchBeforeNextUpdatePreFetchDivisor"
   CRYPTNET_PRE_FETCH_BEFORE_NEXT_UPDATE_PRE_FETCH_DIVISOR_DEFAULT* = 20
-  CRYPTNET_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME* = "CryptnetPreFetchMinBeforeNextUpdatePreFetchSeconds"
-  CRYPTNET_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT* = 1*60*60
-  CRYPTNET_PRE_FETCH_VALIDITY_PERIOD_AFTER_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME* = "CryptnetPreFetchValidityPeriodAfterNextUpdatePreFetchDivisor"
+  CRYPTNET_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME* =
+    "CryptnetPreFetchMinBeforeNextUpdatePreFetchSeconds"
+  CRYPTNET_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT* =
+    1 * 60 * 60
+  CRYPTNET_PRE_FETCH_VALIDITY_PERIOD_AFTER_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME* =
+    "CryptnetPreFetchValidityPeriodAfterNextUpdatePreFetchDivisor"
   CRYPTNET_PRE_FETCH_VALIDITY_PERIOD_AFTER_NEXT_UPDATE_PRE_FETCH_DIVISOR_DEFAULT* = 10
-  CRYPTNET_PRE_FETCH_MAX_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME* = "CryptnetPreFetchMaxAfterNextUpdatePreFetchPeriodSeconds"
-  CRYPTNET_PRE_FETCH_MAX_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT* = 4*60*60
-  CRYPTNET_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME* = "CryptnetPreFetchMinAfterNextUpdatePreFetchPeriodSeconds"
-  CRYPTNET_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT* = 30*60
-  CRYPTNET_PRE_FETCH_AFTER_CURRENT_TIME_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME* = "CryptnetPreFetchAfterCurrentTimePreFetchPeriodSeconds"
-  CRYPTNET_PRE_FETCH_AFTER_CURRENT_TIME_PRE_FETCH_PERIOD_SECONDS_DEFAULT* = 30*60
-  CRYPTNET_PRE_FETCH_TRIGGER_PERIOD_SECONDS_VALUE_NAME* = "CryptnetPreFetchTriggerPeriodSeconds"
-  CRYPTNET_PRE_FETCH_TRIGGER_PERIOD_SECONDS_DEFAULT* = 10*60
+  CRYPTNET_PRE_FETCH_MAX_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME* =
+    "CryptnetPreFetchMaxAfterNextUpdatePreFetchPeriodSeconds"
+  CRYPTNET_PRE_FETCH_MAX_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT* =
+    4 * 60 * 60
+  CRYPTNET_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME* =
+    "CryptnetPreFetchMinAfterNextUpdatePreFetchPeriodSeconds"
+  CRYPTNET_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT* = 30 * 60
+  CRYPTNET_PRE_FETCH_AFTER_CURRENT_TIME_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME* =
+    "CryptnetPreFetchAfterCurrentTimePreFetchPeriodSeconds"
+  CRYPTNET_PRE_FETCH_AFTER_CURRENT_TIME_PRE_FETCH_PERIOD_SECONDS_DEFAULT* = 30 * 60
+  CRYPTNET_PRE_FETCH_TRIGGER_PERIOD_SECONDS_VALUE_NAME* =
+    "CryptnetPreFetchTriggerPeriodSeconds"
+  CRYPTNET_PRE_FETCH_TRIGGER_PERIOD_SECONDS_DEFAULT* = 10 * 60
   CRYPTNET_PRE_FETCH_TRIGGER_DISABLE* = 0xffffffff'i32
-  CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_VALUE_NAME* = "CryptnetPreFetchScanAfterTriggerDelaySeconds"
+  CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_VALUE_NAME* =
+    "CryptnetPreFetchScanAfterTriggerDelaySeconds"
   CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_DEFAULT* = 30
-  CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_VALUE_NAME* = "CryptnetPreFetchRetrievalTimeoutSeconds"
-  CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_DEFAULT* = 5*60
-  CERT_CHAIN_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME* = "ChainUrlRetrievalTimeoutMilliseconds"
-  CERT_CHAIN_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT* = 15*1000
-  CERT_CHAIN_REV_ACCUMULATIVE_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME* = "ChainRevAccumulativeUrlRetrievalTimeoutMilliseconds"
-  CERT_CHAIN_REV_ACCUMULATIVE_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT* = 20*1000
+  CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_VALUE_NAME* =
+    "CryptnetPreFetchRetrievalTimeoutSeconds"
+  CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_DEFAULT* = 5 * 60
+  CERT_CHAIN_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME* =
+    "ChainUrlRetrievalTimeoutMilliseconds"
+  CERT_CHAIN_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT* = 15 * 1000
+  CERT_CHAIN_REV_ACCUMULATIVE_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME* =
+    "ChainRevAccumulativeUrlRetrievalTimeoutMilliseconds"
+  CERT_CHAIN_REV_ACCUMULATIVE_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT* = 20 * 1000
   CERT_RETR_BEHAVIOR_INET_AUTH_VALUE_NAME* = "EnableInetUnknownAuth"
   CERT_RETR_BEHAVIOR_INET_STATUS_VALUE_NAME* = "EnableInetLocal"
   CERT_RETR_BEHAVIOR_FILE_VALUE_NAME* = "AllowFileUrlScheme"
   CERT_RETR_BEHAVIOR_LDAP_VALUE_NAME* = "DisableLDAPSignAndEncrypt"
-  CRYPTNET_CACHED_OCSP_SWITCH_TO_CRL_COUNT_VALUE_NAME* = "CryptnetCachedOcspSwitchToCrlCount"
+  CRYPTNET_CACHED_OCSP_SWITCH_TO_CRL_COUNT_VALUE_NAME* =
+    "CryptnetCachedOcspSwitchToCrlCount"
   CRYPTNET_CACHED_OCSP_SWITCH_TO_CRL_COUNT_DEFAULT* = 50
   CRYPTNET_CRL_BEFORE_OCSP_ENABLE* = 0xffffffff'i32
   CERT_CHAIN_DISABLE_AIA_URL_RETRIEVAL_VALUE_NAME* = "DisableAIAUrlRetrieval"
   CERT_CHAIN_OPTIONS_VALUE_NAME* = "Options"
   CERT_CHAIN_OPTION_DISABLE_AIA_URL_RETRIEVAL* = 0x2
   CERT_CHAIN_OPTION_ENABLE_SIA_URL_RETRIEVAL* = 0x4
-  CERT_CHAIN_CROSS_CERT_DOWNLOAD_INTERVAL_HOURS_VALUE_NAME* = "CrossCertDownloadIntervalHours"
-  CERT_CHAIN_CROSS_CERT_DOWNLOAD_INTERVAL_HOURS_DEFAULT* = 24*7
+  CERT_CHAIN_CROSS_CERT_DOWNLOAD_INTERVAL_HOURS_VALUE_NAME* =
+    "CrossCertDownloadIntervalHours"
+  CERT_CHAIN_CROSS_CERT_DOWNLOAD_INTERVAL_HOURS_DEFAULT* = 24 * 7
   CERT_CHAIN_CRL_VALIDITY_EXT_PERIOD_HOURS_VALUE_NAME* = "CRLValidityExtensionPeriod"
   CERT_CHAIN_CRL_VALIDITY_EXT_PERIOD_HOURS_DEFAULT* = 12
   HCCE_LOCAL_MACHINE* = HCERTCHAINENGINE 0x1
@@ -4459,7 +4909,10 @@
   CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG* = 0x2
   CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG* = 0x4
   CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG* = 0x8
-  CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS* = CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG or CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG or CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG
+  CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS* =
+    CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG or
+    CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG or
+    CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG
   CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG* = 0x10
   CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG* = 0x20
   CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG* = 0x40
@@ -4468,12 +4921,17 @@
   CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG* = 0x200
   CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG* = 0x400
   CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG* = 0x800
-  CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS* = CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG or CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG or CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG or CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG
+  CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS* =
+    CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG or
+    CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG or
+    CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG or
+    CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG
   CERT_CHAIN_POLICY_IGNORE_PEER_TRUST_FLAG* = 0x1000
   CERT_CHAIN_POLICY_IGNORE_NOT_SUPPORTED_CRITICAL_EXT_FLAG* = 0x2000
   CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAG* = 0x4000
   CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG* = 0x8000
-  CRYPT_OID_VERIFY_CERTIFICATE_CHAIN_POLICY_FUNC* = "CertDllVerifyCertificateChainPolicy"
+  CRYPT_OID_VERIFY_CERTIFICATE_CHAIN_POLICY_FUNC* =
+    "CertDllVerifyCertificateChainPolicy"
   CERT_CHAIN_POLICY_BASE* = cast[LPCSTR](1)
   CERT_CHAIN_POLICY_AUTHENTICODE* = cast[LPCSTR](2)
   CERT_CHAIN_POLICY_AUTHENTICODE_TS* = cast[LPCSTR](3)
@@ -4520,7 +4978,9 @@
   PKCS12_NO_PERSIST_KEY* = 0x8000
   PKCS12_IMPORT_RESERVED_MASK* = 0xffff0000'i32
   PKCS12_INCLUDE_EXTENDED_PROPERTIES* = 0x10
-  PKCS12_OBJECT_LOCATOR_ALL_IMPORT_FLAGS* = PKCS12_ALWAYS_CNG_KSP or PKCS12_NO_PERSIST_KEY or PKCS12_IMPORT_SILENT or PKCS12_INCLUDE_EXTENDED_PROPERTIES
+  PKCS12_OBJECT_LOCATOR_ALL_IMPORT_FLAGS* =
+    PKCS12_ALWAYS_CNG_KSP or PKCS12_NO_PERSIST_KEY or PKCS12_IMPORT_SILENT or
+    PKCS12_INCLUDE_EXTENDED_PROPERTIES
   REPORT_NO_PRIVATE_KEY* = 0x1
   REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY* = 0x2
   EXPORT_PRIVATE_KEYS* = 0x4
@@ -4545,7 +5005,7 @@
   CERT_SELECT_BY_PUBLIC_KEY* = 10
   CERT_SELECT_BY_TLS_SIGNATURES* = 11
   CERT_SELECT_LAST* = CERT_SELECT_BY_TLS_SIGNATURES
-  CERT_SELECT_MAX* = CERT_SELECT_LAST*3
+  CERT_SELECT_MAX* = CERT_SELECT_LAST * 3
   CERT_SELECT_ALLOW_EXPIRED* = 0x1
   CERT_SELECT_TRUSTED_ROOT* = 0x2
   CERT_SELECT_DISALLOW_SELFSIGNED* = 0x4
@@ -4578,7 +5038,8 @@
   CRYPT_OBJECT_LOCATOR_LAST_RESERVED_USER_NAME_TYPE* = 0x0000ffff
   SSL_OBJECT_LOCATOR_PFX_FUNC* = "SslObjectLocatorInitializePfx"
   SSL_OBJECT_LOCATOR_ISSUER_LIST_FUNC* = "SslObjectLocatorInitializeIssuerList"
-  SSL_OBJECT_LOCATOR_CERT_VALIDATION_CONFIG_FUNC* = "SslObjectLocatorInitializeCertValidationConfig"
+  SSL_OBJECT_LOCATOR_CERT_VALIDATION_CONFIG_FUNC* =
+    "SslObjectLocatorInitializeCertValidationConfig"
   CRYPT_OBJECT_LOCATOR_RELEASE_SYSTEM_SHUTDOWN* = 1
   CRYPT_OBJECT_LOCATOR_RELEASE_SERVICE_STOP* = 2
   CRYPT_OBJECT_LOCATOR_RELEASE_PROCESS_EXIT* = 3
@@ -4606,8 +5067,10 @@
   CRYPTPROTECTMEMORY_SAME_PROCESS* = 0x0
   CRYPTPROTECTMEMORY_CROSS_PROCESS* = 0x1
   CRYPTPROTECTMEMORY_SAME_LOGON* = 0x2
-  MS_ENH_RSA_AES_PROV_XP_A* = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
-  MS_ENH_RSA_AES_PROV_XP_W* = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
+  MS_ENH_RSA_AES_PROV_XP_A* =
+    "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
+  MS_ENH_RSA_AES_PROV_XP_W* =
+    "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
   BCRYPT_CIPHER_INTERFACE_VERSION_1* = [1'u16, 0]
   BCRYPT_HASH_INTERFACE_VERSION_1* = [1'u16, 0]
   BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE_VERSION_1* = [1'u16, 0]
@@ -4619,79 +5082,387 @@
   CTL_FIND_NO_SIGNER_PTR* = cast[PCERT_INFO](-1)
   HCCE_CURRENT_USER* = HCERTCHAINENGINE(0)
   CERT_EFSBLOB_REGPATH* = CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH & "\\EFS"
-  CERT_PROT_ROOT_FLAGS_REGPATH* = CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH & "\\Root\\ProtectedRoots"
-  CERT_PROT_ROOT_PEER_USAGES_DEFAULT_A* = szOID_PKIX_KP_CLIENT_AUTH & "\0" & szOID_PKIX_KP_EMAIL_PROTECTION & "\0" & szOID_KP_EFS & "\0"
-  CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH* = CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH & "\\TrustedPublisher\\Safer"
-  CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH* = CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH & "\\TrustedPublisher\\Safer"
-  CERT_DISABLE_ROOT_AUTO_UPDATE_REGPATH* = CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH & "\\AuthRoot"
-  CERT_GROUP_POLICY_CHAIN_CONFIG_REGPATH* = CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH & "\\ChainEngine\\Config"
+  CERT_PROT_ROOT_FLAGS_REGPATH* =
+    CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH & "\\Root\\ProtectedRoots"
+  CERT_PROT_ROOT_PEER_USAGES_DEFAULT_A* =
+    szOID_PKIX_KP_CLIENT_AUTH & "\0" & szOID_PKIX_KP_EMAIL_PROTECTION & "\0" &
+    szOID_KP_EFS & "\0"
+  CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH* =
+    CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH & "\\TrustedPublisher\\Safer"
+  CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH* =
+    CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH & "\\TrustedPublisher\\Safer"
+  CERT_DISABLE_ROOT_AUTO_UPDATE_REGPATH* =
+    CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH & "\\AuthRoot"
+  CERT_GROUP_POLICY_CHAIN_CONFIG_REGPATH* =
+    CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH & "\\ChainEngine\\Config"
   CERT_RETRIEVE_BIOMETRIC_PICTURE_TYPE* = cast[LPCSTR](1000)
   CERT_RETRIEVE_BIOMETRIC_SIGNATURE_TYPE* = cast[LPCSTR](1001)
 type
-  PFN_NCRYPT_ALLOC* = proc (cbSize: SIZE_T): LPVOID {.stdcall.}
-  PFN_NCRYPT_FREE* = proc (pv: LPVOID): VOID {.stdcall.}
-  PFN_CRYPT_ENUM_OID_FUNC* = proc (dwEncodingType: DWORD, pszFuncName: LPCSTR, pszOID: LPCSTR, cValue: DWORD, rgdwValueType: ptr DWORD, rgpwszValueName: ptr LPCWSTR, rgpbValueData: ptr ptr BYTE, rgcbValueData: ptr DWORD, pvArg: pointer): WINBOOL {.stdcall.}
-  PFN_CRYPT_ENUM_OID_INFO* = proc (pInfo: PCCRYPT_OID_INFO, pvArg: pointer): WINBOOL {.stdcall.}
-  PFN_CMSG_GEN_ENCRYPT_KEY* = proc (phCryptProv: ptr HCRYPTPROV, paiEncrypt: PCRYPT_ALGORITHM_IDENTIFIER, pvEncryptAuxInfo: PVOID, pPublicKeyInfo: PCERT_PUBLIC_KEY_INFO, pfnAlloc: PFN_CMSG_ALLOC, phEncryptKey: ptr HCRYPTKEY, ppbEncryptParameters: ptr PBYTE, pcbEncryptParameters: PDWORD): WINBOOL {.stdcall.}
-  PFN_CMSG_EXPORT_ENCRYPT_KEY* = proc (hCryptProv: HCRYPTPROV, hEncryptKey: HCRYPTKEY, pPublicKeyInfo: PCERT_PUBLIC_KEY_INFO, pbData: PBYTE, pcbData: PDWORD): WINBOOL {.stdcall.}
-  PFN_CMSG_IMPORT_ENCRYPT_KEY* = proc (hCryptProv: HCRYPTPROV, dwKeySpec: DWORD, paiEncrypt: PCRYPT_ALGORITHM_IDENTIFIER, paiPubKey: PCRYPT_ALGORITHM_IDENTIFIER, pbEncodedKey: PBYTE, cbEncodedKey: DWORD, phEncryptKey: ptr HCRYPTKEY): WINBOOL {.stdcall.}
-  PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY* = proc (pContentEncryptInfo: PCMSG_CONTENT_ENCRYPT_INFO, dwFlags: DWORD, pvReserved: pointer): WINBOOL {.stdcall.}
-  PFN_CMSG_EXPORT_KEY_TRANS* = proc (pContentEncryptInfo: PCMSG_CONTENT_ENCRYPT_INFO, pKeyTransEncodeInfo: PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO, pKeyTransEncryptInfo: PCMSG_KEY_TRANS_ENCRYPT_INFO, dwFlags: DWORD, pvReserved: pointer): WINBOOL {.stdcall.}
-  PFN_CMSG_EXPORT_KEY_AGREE* = proc (pContentEncryptInfo: PCMSG_CONTENT_ENCRYPT_INFO, pKeyAgreeEncodeInfo: PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO, pKeyAgreeEncryptInfo: PCMSG_KEY_AGREE_ENCRYPT_INFO, dwFlags: DWORD, pvReserved: pointer): WINBOOL {.stdcall.}
-  PFN_CMSG_EXPORT_MAIL_LIST* = proc (pContentEncryptInfo: PCMSG_CONTENT_ENCRYPT_INFO, pMailListEncodeInfo: PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO, pMailListEncryptInfo: PCMSG_MAIL_LIST_ENCRYPT_INFO, dwFlags: DWORD, pvReserved: pointer): WINBOOL {.stdcall.}
-  PFN_CMSG_IMPORT_KEY_TRANS* = proc (pContentEncryptionAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER, pKeyTransDecryptPara: PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA, dwFlags: DWORD, pvReserved: pointer, phContentEncryptKey: ptr HCRYPTKEY): WINBOOL {.stdcall.}
-  PFN_CMSG_IMPORT_KEY_AGREE* = proc (pContentEncryptionAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER, pKeyAgreeDecryptPara: PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA, dwFlags: DWORD, pvReserved: pointer, phContentEncryptKey: ptr HCRYPTKEY): WINBOOL {.stdcall.}
-  PFN_CMSG_IMPORT_MAIL_LIST* = proc (pContentEncryptionAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER, pMailListDecryptPara: PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA, dwFlags: DWORD, pvReserved: pointer, phContentEncryptKey: ptr HCRYPTKEY): WINBOOL {.stdcall.}
-  PFN_CMSG_CNG_IMPORT_KEY_TRANS* = proc (pCNGContentDecryptInfo: PCMSG_CNG_CONTENT_DECRYPT_INFO, pKeyTransDecryptPara: PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA, dwFlags: DWORD, pvReserved: pointer): WINBOOL {.stdcall.}
-  PFN_CMSG_CNG_IMPORT_KEY_AGREE* = proc (pCNGContentDecryptInfo: PCMSG_CNG_CONTENT_DECRYPT_INFO, pKeyAgreeDecryptPara: PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA, dwFlags: DWORD, pvReserved: pointer): WINBOOL {.stdcall.}
-  PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY* = proc (pCNGContentDecryptInfo: PCMSG_CNG_CONTENT_DECRYPT_INFO, dwFlags: DWORD, pvReserved: pointer): WINBOOL {.stdcall.}
-  PFN_CERT_DLL_OPEN_STORE_PROV_FUNC* = proc (lpszStoreProvider: LPCSTR, dwEncodingType: DWORD, hCryptProv: HCRYPTPROV_LEGACY, dwFlags: DWORD, pvPara: pointer, hCertStore: HCERTSTORE, pStoreProvInfo: PCERT_STORE_PROV_INFO): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_CLOSE* = proc (hStoreProv: HCERTSTOREPROV, dwFlags: DWORD): void {.stdcall.}
-  PFN_CERT_STORE_PROV_READ_CERT* = proc (hStoreProv: HCERTSTOREPROV, pStoreCertContext: PCCERT_CONTEXT, dwFlags: DWORD, ppProvCertContext: ptr PCCERT_CONTEXT): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_WRITE_CERT* = proc (hStoreProv: HCERTSTOREPROV, pCertContext: PCCERT_CONTEXT, dwFlags: DWORD): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_DELETE_CERT* = proc (hStoreProv: HCERTSTOREPROV, pCertContext: PCCERT_CONTEXT, dwFlags: DWORD): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_SET_CERT_PROPERTY* = proc (hStoreProv: HCERTSTOREPROV, pCertContext: PCCERT_CONTEXT, dwPropId: DWORD, dwFlags: DWORD, pvData: pointer): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_READ_CRL* = proc (hStoreProv: HCERTSTOREPROV, pStoreCrlContext: PCCRL_CONTEXT, dwFlags: DWORD, ppProvCrlContext: ptr PCCRL_CONTEXT): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_WRITE_CRL* = proc (hStoreProv: HCERTSTOREPROV, pCrlContext: PCCRL_CONTEXT, dwFlags: DWORD): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_DELETE_CRL* = proc (hStoreProv: HCERTSTOREPROV, pCrlContext: PCCRL_CONTEXT, dwFlags: DWORD): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_SET_CRL_PROPERTY* = proc (hStoreProv: HCERTSTOREPROV, pCrlContext: PCCRL_CONTEXT, dwPropId: DWORD, dwFlags: DWORD, pvData: pointer): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_READ_CTL* = proc (hStoreProv: HCERTSTOREPROV, pStoreCtlContext: PCCTL_CONTEXT, dwFlags: DWORD, ppProvCtlContext: ptr PCCTL_CONTEXT): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_WRITE_CTL* = proc (hStoreProv: HCERTSTOREPROV, pCtlContext: PCCTL_CONTEXT, dwFlags: DWORD): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_DELETE_CTL* = proc (hStoreProv: HCERTSTOREPROV, pCtlContext: PCCTL_CONTEXT, dwFlags: DWORD): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_SET_CTL_PROPERTY* = proc (hStoreProv: HCERTSTOREPROV, pCtlContext: PCCTL_CONTEXT, dwPropId: DWORD, dwFlags: DWORD, pvData: pointer): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_CONTROL* = proc (hStoreProv: HCERTSTOREPROV, dwFlags: DWORD, dwCtrlType: DWORD, pvCtrlPara: pointer): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_FIND_CERT* = proc (hStoreProv: HCERTSTOREPROV, pFindInfo: PCCERT_STORE_PROV_FIND_INFO, pPrevCertContext: PCCERT_CONTEXT, dwFlags: DWORD, ppvStoreProvFindInfo: ptr pointer, ppProvCertContext: ptr PCCERT_CONTEXT): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_FREE_FIND_CERT* = proc (hStoreProv: HCERTSTOREPROV, pCertContext: PCCERT_CONTEXT, pvStoreProvFindInfo: pointer, dwFlags: DWORD): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_GET_CERT_PROPERTY* = proc (hStoreProv: HCERTSTOREPROV, pCertContext: PCCERT_CONTEXT, dwPropId: DWORD, dwFlags: DWORD, pvData: pointer, pcbData: ptr DWORD): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_FIND_CRL* = proc (hStoreProv: HCERTSTOREPROV, pFindInfo: PCCERT_STORE_PROV_FIND_INFO, pPrevCrlContext: PCCRL_CONTEXT, dwFlags: DWORD, ppvStoreProvFindInfo: ptr pointer, ppProvCrlContext: ptr PCCRL_CONTEXT): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_FREE_FIND_CRL* = proc (hStoreProv: HCERTSTOREPROV, pCrlContext: PCCRL_CONTEXT, pvStoreProvFindInfo: pointer, dwFlags: DWORD): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_GET_CRL_PROPERTY* = proc (hStoreProv: HCERTSTOREPROV, pCrlContext: PCCRL_CONTEXT, dwPropId: DWORD, dwFlags: DWORD, pvData: pointer, pcbData: ptr DWORD): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_FIND_CTL* = proc (hStoreProv: HCERTSTOREPROV, pFindInfo: PCCERT_STORE_PROV_FIND_INFO, pPrevCtlContext: PCCTL_CONTEXT, dwFlags: DWORD, ppvStoreProvFindInfo: ptr pointer, ppProvCtlContext: ptr PCCTL_CONTEXT): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_FREE_FIND_CTL* = proc (hStoreProv: HCERTSTOREPROV, pCtlContext: PCCTL_CONTEXT, pvStoreProvFindInfo: pointer, dwFlags: DWORD): WINBOOL {.stdcall.}
-  PFN_CERT_STORE_PROV_GET_CTL_PROPERTY* = proc (hStoreProv: HCERTSTOREPROV, pCtlContext: PCCTL_CONTEXT, dwPropId: DWORD, dwFlags: DWORD, pvData: pointer, pcbData: ptr DWORD): WINBOOL {.stdcall.}
-  PFN_CERT_ENUM_SYSTEM_STORE_LOCATION* = proc (pwszStoreLocation: LPCWSTR, dwFlags: DWORD, pvReserved: pointer, pvArg: pointer): WINBOOL {.stdcall.}
-  PFN_CERT_ENUM_SYSTEM_STORE* = proc (pvSystemStore: pointer, dwFlags: DWORD, pStoreInfo: PCERT_SYSTEM_STORE_INFO, pvReserved: pointer, pvArg: pointer): WINBOOL {.stdcall.}
-  PFN_CERT_ENUM_PHYSICAL_STORE* = proc (pvSystemStore: pointer, dwFlags: DWORD, pwszStoreName: LPCWSTR, pStoreInfo: PCERT_PHYSICAL_STORE_INFO, pvReserved: pointer, pvArg: pointer): WINBOOL {.stdcall.}
-  PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC* = proc (dwCertEncodingType: DWORD, pSignatureAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER, ppvDecodedSignPara: ptr pointer, ppwszCNGHashAlgid: ptr LPWSTR): WINBOOL {.stdcall.}
-  PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC* = proc (hKey: NCRYPT_KEY_HANDLE, dwCertEncodingType: DWORD, pSignatureAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER, pvDecodedSignPara: pointer, pwszCNGPubKeyAlgid: LPCWSTR, pwszCNGHashAlgid: LPCWSTR, pbComputedHash: ptr BYTE, cbComputedHash: DWORD, pbSignature: ptr BYTE, pcbSignature: ptr DWORD): WINBOOL {.stdcall.}
-  PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC* = proc (dwCertEncodingType: DWORD, pPubKeyInfo: PCERT_PUBLIC_KEY_INFO, pSignatureAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER, pvDecodedSignPara: pointer, pwszCNGPubKeyAlgid: LPCWSTR, pwszCNGHashAlgid: LPCWSTR, pbComputedHash: ptr BYTE, cbComputedHash: DWORD, pbSignature: ptr BYTE, cbSignature: DWORD): WINBOOL {.stdcall.}
-  PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC* = proc (hNCryptKey: NCRYPT_KEY_HANDLE, dwCertEncodingType: DWORD, pszPublicKeyObjId: LPSTR, dwFlags: DWORD, pvAuxInfo: pointer, pInfo: PCERT_PUBLIC_KEY_INFO, pcbInfo: ptr DWORD): WINBOOL {.stdcall.}
-  PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_FROM_BCRYPT_HANDLE_FUNC* = proc (hBCryptKey: BCRYPT_KEY_HANDLE, dwCertEncodingType: DWORD, pszPublicKeyObjId: LPSTR, dwFlags: DWORD, pvAuxInfo: pointer, pInfo: PCERT_PUBLIC_KEY_INFO, pcbInfo: ptr DWORD): WINBOOL {.stdcall.}
-  PFN_IMPORT_PRIV_KEY_FUNC* = proc (hCryptProv: HCRYPTPROV, pPrivateKeyInfo: ptr CRYPT_PRIVATE_KEY_INFO, dwFlags: DWORD, pvAuxInfo: pointer): WINBOOL {.stdcall.}
-  PFN_EXPORT_PRIV_KEY_FUNC* = proc (hCryptProv: HCRYPTPROV, dwKeySpec: DWORD, pszPrivateKeyObjId: LPSTR, dwFlags: DWORD, pvAuxInfo: pointer, pPrivateKeyInfo: ptr CRYPT_PRIVATE_KEY_INFO, pcbPrivateKeyInfo: ptr DWORD): WINBOOL {.stdcall.}
-  PFN_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC* = proc (dwCertEncodingType: DWORD, pInfo: PCERT_PUBLIC_KEY_INFO, dwFlags: DWORD, pvAuxInfo: pointer, phKey: ptr BCRYPT_KEY_HANDLE): WINBOOL {.stdcall.}
-  PFN_CRYPT_ASYNC_PARAM_FREE_FUNC* = proc (pszParamOid: LPSTR, pvParam: LPVOID): VOID {.stdcall.}
-  PFN_FREE_ENCODED_OBJECT_FUNC* = proc (pszObjectOid: LPCSTR, pObject: PCRYPT_BLOB_ARRAY, pvFreeContext: LPVOID): VOID {.stdcall.}
-  PFN_CRYPT_CANCEL_RETRIEVAL* = proc (dwFlags: DWORD, pvArg: pointer): WINBOOL {.stdcall.}
-  PFN_CANCEL_ASYNC_RETRIEVAL_FUNC* = proc (hAsyncRetrieve: HCRYPTASYNC): WINBOOL {.stdcall.}
-  PFN_CRYPT_ENUM_KEYID_PROP* = proc (pKeyIdentifier: ptr CRYPT_HASH_BLOB, dwFlags: DWORD, pvReserved: pointer, pvArg: pointer, cProp: DWORD, rgdwPropId: ptr DWORD, rgpvData: ptr pointer, rgcbData: ptr DWORD): WINBOOL {.stdcall.}
-  PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH* = proc (pContext: LPVOID, rgIdentifierOrNameList: ptr PCERT_NAME_BLOB, dwIdentifierOrNameListCount: DWORD): WINBOOL {.stdcall.}
-  PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE* = proc (pfnFlush: PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH, pContext: LPVOID, pdwExpectedObjectCount: ptr DWORD, ppFuncTable: ptr PCRYPT_OBJECT_LOCATOR_PROVIDER_TABLE, ppPluginContext: ptr pointer): WINBOOL {.stdcall.}
+  PFN_NCRYPT_ALLOC* = proc(cbSize: SIZE_T): LPVOID {.stdcall.}
+  PFN_NCRYPT_FREE* = proc(pv: LPVOID): VOID {.stdcall.}
+  PFN_CRYPT_ENUM_OID_FUNC* = proc(
+    dwEncodingType: DWORD,
+    pszFuncName: LPCSTR,
+    pszOID: LPCSTR,
+    cValue: DWORD,
+    rgdwValueType: ptr DWORD,
+    rgpwszValueName: ptr LPCWSTR,
+    rgpbValueData: ptr ptr BYTE,
+    rgcbValueData: ptr DWORD,
+    pvArg: pointer,
+  ): WINBOOL {.stdcall.}
+  PFN_CRYPT_ENUM_OID_INFO* =
+    proc(pInfo: PCCRYPT_OID_INFO, pvArg: pointer): WINBOOL {.stdcall.}
+  PFN_CMSG_GEN_ENCRYPT_KEY* = proc(
+    phCryptProv: ptr HCRYPTPROV,
+    paiEncrypt: PCRYPT_ALGORITHM_IDENTIFIER,
+    pvEncryptAuxInfo: PVOID,
+    pPublicKeyInfo: PCERT_PUBLIC_KEY_INFO,
+    pfnAlloc: PFN_CMSG_ALLOC,
+    phEncryptKey: ptr HCRYPTKEY,
+    ppbEncryptParameters: ptr PBYTE,
+    pcbEncryptParameters: PDWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_CMSG_EXPORT_ENCRYPT_KEY* = proc(
+    hCryptProv: HCRYPTPROV,
+    hEncryptKey: HCRYPTKEY,
+    pPublicKeyInfo: PCERT_PUBLIC_KEY_INFO,
+    pbData: PBYTE,
+    pcbData: PDWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_CMSG_IMPORT_ENCRYPT_KEY* = proc(
+    hCryptProv: HCRYPTPROV,
+    dwKeySpec: DWORD,
+    paiEncrypt: PCRYPT_ALGORITHM_IDENTIFIER,
+    paiPubKey: PCRYPT_ALGORITHM_IDENTIFIER,
+    pbEncodedKey: PBYTE,
+    cbEncodedKey: DWORD,
+    phEncryptKey: ptr HCRYPTKEY,
+  ): WINBOOL {.stdcall.}
+  PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY* = proc(
+    pContentEncryptInfo: PCMSG_CONTENT_ENCRYPT_INFO, dwFlags: DWORD, pvReserved: pointer
+  ): WINBOOL {.stdcall.}
+  PFN_CMSG_EXPORT_KEY_TRANS* = proc(
+    pContentEncryptInfo: PCMSG_CONTENT_ENCRYPT_INFO,
+    pKeyTransEncodeInfo: PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO,
+    pKeyTransEncryptInfo: PCMSG_KEY_TRANS_ENCRYPT_INFO,
+    dwFlags: DWORD,
+    pvReserved: pointer,
+  ): WINBOOL {.stdcall.}
+  PFN_CMSG_EXPORT_KEY_AGREE* = proc(
+    pContentEncryptInfo: PCMSG_CONTENT_ENCRYPT_INFO,
+    pKeyAgreeEncodeInfo: PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO,
+    pKeyAgreeEncryptInfo: PCMSG_KEY_AGREE_ENCRYPT_INFO,
+    dwFlags: DWORD,
+    pvReserved: pointer,
+  ): WINBOOL {.stdcall.}
+  PFN_CMSG_EXPORT_MAIL_LIST* = proc(
+    pContentEncryptInfo: PCMSG_CONTENT_ENCRYPT_INFO,
+    pMailListEncodeInfo: PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO,
+    pMailListEncryptInfo: PCMSG_MAIL_LIST_ENCRYPT_INFO,
+    dwFlags: DWORD,
+    pvReserved: pointer,
+  ): WINBOOL {.stdcall.}
+  PFN_CMSG_IMPORT_KEY_TRANS* = proc(
+    pContentEncryptionAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER,
+    pKeyTransDecryptPara: PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA,
+    dwFlags: DWORD,
+    pvReserved: pointer,
+    phContentEncryptKey: ptr HCRYPTKEY,
+  ): WINBOOL {.stdcall.}
+  PFN_CMSG_IMPORT_KEY_AGREE* = proc(
+    pContentEncryptionAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER,
+    pKeyAgreeDecryptPara: PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA,
+    dwFlags: DWORD,
+    pvReserved: pointer,
+    phContentEncryptKey: ptr HCRYPTKEY,
+  ): WINBOOL {.stdcall.}
+  PFN_CMSG_IMPORT_MAIL_LIST* = proc(
+    pContentEncryptionAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER,
+    pMailListDecryptPara: PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA,
+    dwFlags: DWORD,
+    pvReserved: pointer,
+    phContentEncryptKey: ptr HCRYPTKEY,
+  ): WINBOOL {.stdcall.}
+  PFN_CMSG_CNG_IMPORT_KEY_TRANS* = proc(
+    pCNGContentDecryptInfo: PCMSG_CNG_CONTENT_DECRYPT_INFO,
+    pKeyTransDecryptPara: PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA,
+    dwFlags: DWORD,
+    pvReserved: pointer,
+  ): WINBOOL {.stdcall.}
+  PFN_CMSG_CNG_IMPORT_KEY_AGREE* = proc(
+    pCNGContentDecryptInfo: PCMSG_CNG_CONTENT_DECRYPT_INFO,
+    pKeyAgreeDecryptPara: PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA,
+    dwFlags: DWORD,
+    pvReserved: pointer,
+  ): WINBOOL {.stdcall.}
+  PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY* = proc(
+    pCNGContentDecryptInfo: PCMSG_CNG_CONTENT_DECRYPT_INFO,
+    dwFlags: DWORD,
+    pvReserved: pointer,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_DLL_OPEN_STORE_PROV_FUNC* = proc(
+    lpszStoreProvider: LPCSTR,
+    dwEncodingType: DWORD,
+    hCryptProv: HCRYPTPROV_LEGACY,
+    dwFlags: DWORD,
+    pvPara: pointer,
+    hCertStore: HCERTSTORE,
+    pStoreProvInfo: PCERT_STORE_PROV_INFO,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_CLOSE* =
+    proc(hStoreProv: HCERTSTOREPROV, dwFlags: DWORD): void {.stdcall.}
+  PFN_CERT_STORE_PROV_READ_CERT* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pStoreCertContext: PCCERT_CONTEXT,
+    dwFlags: DWORD,
+    ppProvCertContext: ptr PCCERT_CONTEXT,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_WRITE_CERT* = proc(
+    hStoreProv: HCERTSTOREPROV, pCertContext: PCCERT_CONTEXT, dwFlags: DWORD
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_DELETE_CERT* = proc(
+    hStoreProv: HCERTSTOREPROV, pCertContext: PCCERT_CONTEXT, dwFlags: DWORD
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_SET_CERT_PROPERTY* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pCertContext: PCCERT_CONTEXT,
+    dwPropId: DWORD,
+    dwFlags: DWORD,
+    pvData: pointer,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_READ_CRL* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pStoreCrlContext: PCCRL_CONTEXT,
+    dwFlags: DWORD,
+    ppProvCrlContext: ptr PCCRL_CONTEXT,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_WRITE_CRL* = proc(
+    hStoreProv: HCERTSTOREPROV, pCrlContext: PCCRL_CONTEXT, dwFlags: DWORD
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_DELETE_CRL* = proc(
+    hStoreProv: HCERTSTOREPROV, pCrlContext: PCCRL_CONTEXT, dwFlags: DWORD
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_SET_CRL_PROPERTY* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pCrlContext: PCCRL_CONTEXT,
+    dwPropId: DWORD,
+    dwFlags: DWORD,
+    pvData: pointer,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_READ_CTL* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pStoreCtlContext: PCCTL_CONTEXT,
+    dwFlags: DWORD,
+    ppProvCtlContext: ptr PCCTL_CONTEXT,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_WRITE_CTL* = proc(
+    hStoreProv: HCERTSTOREPROV, pCtlContext: PCCTL_CONTEXT, dwFlags: DWORD
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_DELETE_CTL* = proc(
+    hStoreProv: HCERTSTOREPROV, pCtlContext: PCCTL_CONTEXT, dwFlags: DWORD
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_SET_CTL_PROPERTY* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pCtlContext: PCCTL_CONTEXT,
+    dwPropId: DWORD,
+    dwFlags: DWORD,
+    pvData: pointer,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_CONTROL* = proc(
+    hStoreProv: HCERTSTOREPROV, dwFlags: DWORD, dwCtrlType: DWORD, pvCtrlPara: pointer
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_FIND_CERT* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pFindInfo: PCCERT_STORE_PROV_FIND_INFO,
+    pPrevCertContext: PCCERT_CONTEXT,
+    dwFlags: DWORD,
+    ppvStoreProvFindInfo: ptr pointer,
+    ppProvCertContext: ptr PCCERT_CONTEXT,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_FREE_FIND_CERT* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pCertContext: PCCERT_CONTEXT,
+    pvStoreProvFindInfo: pointer,
+    dwFlags: DWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_GET_CERT_PROPERTY* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pCertContext: PCCERT_CONTEXT,
+    dwPropId: DWORD,
+    dwFlags: DWORD,
+    pvData: pointer,
+    pcbData: ptr DWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_FIND_CRL* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pFindInfo: PCCERT_STORE_PROV_FIND_INFO,
+    pPrevCrlContext: PCCRL_CONTEXT,
+    dwFlags: DWORD,
+    ppvStoreProvFindInfo: ptr pointer,
+    ppProvCrlContext: ptr PCCRL_CONTEXT,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_FREE_FIND_CRL* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pCrlContext: PCCRL_CONTEXT,
+    pvStoreProvFindInfo: pointer,
+    dwFlags: DWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_GET_CRL_PROPERTY* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pCrlContext: PCCRL_CONTEXT,
+    dwPropId: DWORD,
+    dwFlags: DWORD,
+    pvData: pointer,
+    pcbData: ptr DWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_FIND_CTL* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pFindInfo: PCCERT_STORE_PROV_FIND_INFO,
+    pPrevCtlContext: PCCTL_CONTEXT,
+    dwFlags: DWORD,
+    ppvStoreProvFindInfo: ptr pointer,
+    ppProvCtlContext: ptr PCCTL_CONTEXT,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_FREE_FIND_CTL* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pCtlContext: PCCTL_CONTEXT,
+    pvStoreProvFindInfo: pointer,
+    dwFlags: DWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_STORE_PROV_GET_CTL_PROPERTY* = proc(
+    hStoreProv: HCERTSTOREPROV,
+    pCtlContext: PCCTL_CONTEXT,
+    dwPropId: DWORD,
+    dwFlags: DWORD,
+    pvData: pointer,
+    pcbData: ptr DWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_ENUM_SYSTEM_STORE_LOCATION* = proc(
+    pwszStoreLocation: LPCWSTR, dwFlags: DWORD, pvReserved: pointer, pvArg: pointer
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_ENUM_SYSTEM_STORE* = proc(
+    pvSystemStore: pointer,
+    dwFlags: DWORD,
+    pStoreInfo: PCERT_SYSTEM_STORE_INFO,
+    pvReserved: pointer,
+    pvArg: pointer,
+  ): WINBOOL {.stdcall.}
+  PFN_CERT_ENUM_PHYSICAL_STORE* = proc(
+    pvSystemStore: pointer,
+    dwFlags: DWORD,
+    pwszStoreName: LPCWSTR,
+    pStoreInfo: PCERT_PHYSICAL_STORE_INFO,
+    pvReserved: pointer,
+    pvArg: pointer,
+  ): WINBOOL {.stdcall.}
+  PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC* = proc(
+    dwCertEncodingType: DWORD,
+    pSignatureAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER,
+    ppvDecodedSignPara: ptr pointer,
+    ppwszCNGHashAlgid: ptr LPWSTR,
+  ): WINBOOL {.stdcall.}
+  PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC* = proc(
+    hKey: NCRYPT_KEY_HANDLE,
+    dwCertEncodingType: DWORD,
+    pSignatureAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER,
+    pvDecodedSignPara: pointer,
+    pwszCNGPubKeyAlgid: LPCWSTR,
+    pwszCNGHashAlgid: LPCWSTR,
+    pbComputedHash: ptr BYTE,
+    cbComputedHash: DWORD,
+    pbSignature: ptr BYTE,
+    pcbSignature: ptr DWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC* = proc(
+    dwCertEncodingType: DWORD,
+    pPubKeyInfo: PCERT_PUBLIC_KEY_INFO,
+    pSignatureAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER,
+    pvDecodedSignPara: pointer,
+    pwszCNGPubKeyAlgid: LPCWSTR,
+    pwszCNGHashAlgid: LPCWSTR,
+    pbComputedHash: ptr BYTE,
+    cbComputedHash: DWORD,
+    pbSignature: ptr BYTE,
+    cbSignature: DWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC* = proc(
+    hNCryptKey: NCRYPT_KEY_HANDLE,
+    dwCertEncodingType: DWORD,
+    pszPublicKeyObjId: LPSTR,
+    dwFlags: DWORD,
+    pvAuxInfo: pointer,
+    pInfo: PCERT_PUBLIC_KEY_INFO,
+    pcbInfo: ptr DWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_FROM_BCRYPT_HANDLE_FUNC* = proc(
+    hBCryptKey: BCRYPT_KEY_HANDLE,
+    dwCertEncodingType: DWORD,
+    pszPublicKeyObjId: LPSTR,
+    dwFlags: DWORD,
+    pvAuxInfo: pointer,
+    pInfo: PCERT_PUBLIC_KEY_INFO,
+    pcbInfo: ptr DWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_IMPORT_PRIV_KEY_FUNC* = proc(
+    hCryptProv: HCRYPTPROV,
+    pPrivateKeyInfo: ptr CRYPT_PRIVATE_KEY_INFO,
+    dwFlags: DWORD,
+    pvAuxInfo: pointer,
+  ): WINBOOL {.stdcall.}
+  PFN_EXPORT_PRIV_KEY_FUNC* = proc(
+    hCryptProv: HCRYPTPROV,
+    dwKeySpec: DWORD,
+    pszPrivateKeyObjId: LPSTR,
+    dwFlags: DWORD,
+    pvAuxInfo: pointer,
+    pPrivateKeyInfo: ptr CRYPT_PRIVATE_KEY_INFO,
+    pcbPrivateKeyInfo: ptr DWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC* = proc(
+    dwCertEncodingType: DWORD,
+    pInfo: PCERT_PUBLIC_KEY_INFO,
+    dwFlags: DWORD,
+    pvAuxInfo: pointer,
+    phKey: ptr BCRYPT_KEY_HANDLE,
+  ): WINBOOL {.stdcall.}
+  PFN_CRYPT_ASYNC_PARAM_FREE_FUNC* =
+    proc(pszParamOid: LPSTR, pvParam: LPVOID): VOID {.stdcall.}
+  PFN_FREE_ENCODED_OBJECT_FUNC* = proc(
+    pszObjectOid: LPCSTR, pObject: PCRYPT_BLOB_ARRAY, pvFreeContext: LPVOID
+  ): VOID {.stdcall.}
+  PFN_CRYPT_CANCEL_RETRIEVAL* =
+    proc(dwFlags: DWORD, pvArg: pointer): WINBOOL {.stdcall.}
+  PFN_CANCEL_ASYNC_RETRIEVAL_FUNC* =
+    proc(hAsyncRetrieve: HCRYPTASYNC): WINBOOL {.stdcall.}
+  PFN_CRYPT_ENUM_KEYID_PROP* = proc(
+    pKeyIdentifier: ptr CRYPT_HASH_BLOB,
+    dwFlags: DWORD,
+    pvReserved: pointer,
+    pvArg: pointer,
+    cProp: DWORD,
+    rgdwPropId: ptr DWORD,
+    rgpvData: ptr pointer,
+    rgcbData: ptr DWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH* = proc(
+    pContext: LPVOID,
+    rgIdentifierOrNameList: ptr PCERT_NAME_BLOB,
+    dwIdentifierOrNameListCount: DWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE* = proc(
+    pfnFlush: PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH,
+    pContext: LPVOID,
+    pdwExpectedObjectCount: ptr DWORD,
+    ppFuncTable: ptr PCRYPT_OBJECT_LOCATOR_PROVIDER_TABLE,
+    ppPluginContext: ptr pointer,
+  ): WINBOOL {.stdcall.}
   PROV_ENUMALGS* {.pure.} = object
     aiAlgid*: ALG_ID
     dwBitLen*: DWORD
     dwNameLen*: DWORD
     szName*: array[20, CHAR]
+
   PROV_ENUMALGS_EX* {.pure.} = object
     aiAlgid*: ALG_ID
     dwDefaultLen*: DWORD
@@ -4702,31 +5473,40 @@
     szName*: array[20, CHAR]
     dwLongNameLen*: DWORD
     szLongName*: array[40, CHAR]
+
   RSAPUBKEY* {.pure.} = object
     magic*: DWORD
     bitlen*: DWORD
     pubexp*: DWORD
+
   CERT_FORTEZZA_DATA_PROP* {.pure.} = object
     SerialNumber*: array[8, uint8]
     CertIndex*: int32
     CertLabel*: array[36, uint8]
+
   BCRYPT_OID* {.pure.} = object
     cbOID*: ULONG
     pbOID*: PUCHAR
+
   BCRYPT_OID_LIST* {.pure.} = object
     dwOIDCount*: ULONG
     pOIDs*: ptr BCRYPT_OID
+
   BCRYPT_PKCS1_PADDING_INFO* {.pure.} = object
     pszAlgId*: LPCWSTR
+
   BCRYPT_PSS_PADDING_INFO* {.pure.} = object
     pszAlgId*: LPCWSTR
     cbSalt*: ULONG
+
   BCRYPT_OAEP_PADDING_INFO* {.pure.} = object
     pszAlgId*: LPCWSTR
     pbLabel*: PUCHAR
     cbLabel*: ULONG
+
   BCRYPT_KEY_BLOB* {.pure.} = object
     Magic*: ULONG
+
   BCRYPT_RSAKEY_BLOB* {.pure.} = object
     Magic*: ULONG
     BitLength*: ULONG
@@ -4734,10 +5514,12 @@
     cbModulus*: ULONG
     cbPrime1*: ULONG
     cbPrime2*: ULONG
+
   BCRYPT_DH_PARAMETER_HEADER* {.pure.} = object
     cbLength*: ULONG
     dwMagic*: ULONG
     cbKeyLength*: ULONG
+
   BCRYPT_DSA_PARAMETER_HEADER* {.pure.} = object
     cbLength*: ULONG
     dwMagic*: ULONG
@@ -4745,6 +5527,7 @@
     Count*: array[4, UCHAR]
     Seed*: array[20, UCHAR]
     q*: array[20, UCHAR]
+
   BCRYPT_DSA_PARAMETER_HEADER_V2* {.pure.} = object
     cbLength*: ULONG
     dwMagic*: ULONG
@@ -4754,592 +5537,3218 @@
     cbSeedLength*: ULONG
     cbGroupSize*: ULONG
     Count*: array[4, UCHAR]
+
   BCRYPT_ALGORITHM_IDENTIFIER* {.pure.} = object
     pszName*: LPWSTR
     dwClass*: ULONG
     dwFlags*: ULONG
+
   BCRYPT_PROVIDER_NAME* {.pure.} = object
     pszProviderName*: LPWSTR
+
   NCRYPT_ALLOC_PARA* {.pure.} = object
     cbSize*: DWORD
     pfnAlloc*: PFN_NCRYPT_ALLOC
     pfnFree*: PFN_NCRYPT_FREE
+
   NCryptAlgorithmName* {.pure.} = object
     pszName*: LPWSTR
     dwClass*: DWORD
     dwAlgOperations*: DWORD
     dwFlags*: DWORD
+
   NCryptKeyName* {.pure.} = object
     pszName*: LPWSTR
     pszAlgid*: LPWSTR
     dwLegacyKeySpec*: DWORD
     dwFlags*: DWORD
+
   NCryptProviderName* {.pure.} = object
     pszName*: LPWSTR
     pszComment*: LPWSTR
+
   NCRYPT_UI_POLICY* {.pure.} = object
     dwVersion*: DWORD
     dwFlags*: DWORD
     pszCreationTitle*: LPCWSTR
     pszFriendlyName*: LPCWSTR
     pszDescription*: LPCWSTR
+
   NCRYPT_SUPPORTED_LENGTHS* {.pure.} = object
     dwMinLength*: DWORD
     dwMaxLength*: DWORD
     dwIncrement*: DWORD
     dwDefaultLength*: DWORD
+
   CRYPT_PKCS12_PBE_PARAMS* {.pure.} = object
     iIterations*: int32
     cbSalt*: ULONG
-proc CryptAcquireContextA*(phProv: ptr HCRYPTPROV, szContainer: LPCSTR, szProvider: LPCSTR, dwProvType: DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptAcquireContextW*(phProv: ptr HCRYPTPROV, szContainer: LPCWSTR, szProvider: LPCWSTR, dwProvType: DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptReleaseContext*(hProv: HCRYPTPROV, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptGenKey*(hProv: HCRYPTPROV, Algid: ALG_ID, dwFlags: DWORD, phKey: ptr HCRYPTKEY): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptDeriveKey*(hProv: HCRYPTPROV, Algid: ALG_ID, hBaseData: HCRYPTHASH, dwFlags: DWORD, phKey: ptr HCRYPTKEY): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptDestroyKey*(hKey: HCRYPTKEY): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptSetKeyParam*(hKey: HCRYPTKEY, dwParam: DWORD, pbData: ptr BYTE, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptGetKeyParam*(hKey: HCRYPTKEY, dwParam: DWORD, pbData: ptr BYTE, pdwDataLen: ptr DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptSetHashParam*(hHash: HCRYPTHASH, dwParam: DWORD, pbData: ptr BYTE, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptGetHashParam*(hHash: HCRYPTHASH, dwParam: DWORD, pbData: ptr BYTE, pdwDataLen: ptr DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptSetProvParam*(hProv: HCRYPTPROV, dwParam: DWORD, pbData: ptr BYTE, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptGetProvParam*(hProv: HCRYPTPROV, dwParam: DWORD, pbData: ptr BYTE, pdwDataLen: ptr DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptGenRandom*(hProv: HCRYPTPROV, dwLen: DWORD, pbBuffer: ptr BYTE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptGetUserKey*(hProv: HCRYPTPROV, dwKeySpec: DWORD, phUserKey: ptr HCRYPTKEY): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptExportKey*(hKey: HCRYPTKEY, hExpKey: HCRYPTKEY, dwBlobType: DWORD, dwFlags: DWORD, pbData: ptr BYTE, pdwDataLen: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptImportKey*(hProv: HCRYPTPROV, pbData: ptr BYTE, dwDataLen: DWORD, hPubKey: HCRYPTKEY, dwFlags: DWORD, phKey: ptr HCRYPTKEY): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptEncrypt*(hKey: HCRYPTKEY, hHash: HCRYPTHASH, Final: WINBOOL, dwFlags: DWORD, pbData: ptr BYTE, pdwDataLen: ptr DWORD, dwBufLen: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptDecrypt*(hKey: HCRYPTKEY, hHash: HCRYPTHASH, Final: WINBOOL, dwFlags: DWORD, pbData: ptr BYTE, pdwDataLen: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptCreateHash*(hProv: HCRYPTPROV, Algid: ALG_ID, hKey: HCRYPTKEY, dwFlags: DWORD, phHash: ptr HCRYPTHASH): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptHashData*(hHash: HCRYPTHASH, pbData: ptr BYTE, dwDataLen: DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptHashSessionKey*(hHash: HCRYPTHASH, hKey: HCRYPTKEY, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptDestroyHash*(hHash: HCRYPTHASH): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptSignHashA*(hHash: HCRYPTHASH, dwKeySpec: DWORD, szDescription: LPCSTR, dwFlags: DWORD, pbSignature: ptr BYTE, pdwSigLen: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptSignHashW*(hHash: HCRYPTHASH, dwKeySpec: DWORD, szDescription: LPCWSTR, dwFlags: DWORD, pbSignature: ptr BYTE, pdwSigLen: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptVerifySignatureA*(hHash: HCRYPTHASH, pbSignature: ptr BYTE, dwSigLen: DWORD, hPubKey: HCRYPTKEY, szDescription: LPCSTR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptVerifySignatureW*(hHash: HCRYPTHASH, pbSignature: ptr BYTE, dwSigLen: DWORD, hPubKey: HCRYPTKEY, szDescription: LPCWSTR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptSetProviderA*(pszProvName: LPCSTR, dwProvType: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptSetProviderW*(pszProvName: LPCWSTR, dwProvType: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptSetProviderExA*(pszProvName: LPCSTR, dwProvType: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptSetProviderExW*(pszProvName: LPCWSTR, dwProvType: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptGetDefaultProviderA*(dwProvType: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD, pszProvName: LPSTR, pcbProvName: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptGetDefaultProviderW*(dwProvType: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD, pszProvName: LPWSTR, pcbProvName: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptEnumProviderTypesA*(dwIndex: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD, pdwProvType: ptr DWORD, szTypeName: LPSTR, pcbTypeName: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptEnumProviderTypesW*(dwIndex: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD, pdwProvType: ptr DWORD, szTypeName: LPWSTR, pcbTypeName: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptEnumProvidersA*(dwIndex: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD, pdwProvType: ptr DWORD, szProvName: LPSTR, pcbProvName: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptEnumProvidersW*(dwIndex: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD, pdwProvType: ptr DWORD, szProvName: LPWSTR, pcbProvName: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptContextAddRef*(hProv: HCRYPTPROV, pdwReserved: ptr DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptDuplicateKey*(hKey: HCRYPTKEY, pdwReserved: ptr DWORD, dwFlags: DWORD, phKey: ptr HCRYPTKEY): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CryptDuplicateHash*(hHash: HCRYPTHASH, pdwReserved: ptr DWORD, dwFlags: DWORD, phHash: ptr HCRYPTHASH): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc BCryptOpenAlgorithmProvider*(phAlgorithm: ptr BCRYPT_ALG_HANDLE, pszAlgId: LPCWSTR, pszImplementation: LPCWSTR, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptEnumAlgorithms*(dwAlgOperations: ULONG, pAlgCount: ptr ULONG, ppAlgList: ptr ptr BCRYPT_ALGORITHM_IDENTIFIER, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptEnumProviders*(pszAlgId: LPCWSTR, pImplCount: ptr ULONG, ppImplList: ptr ptr BCRYPT_PROVIDER_NAME, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptGetProperty*(hObject: BCRYPT_HANDLE, pszProperty: LPCWSTR, pbOutput: PUCHAR, cbOutput: ULONG, pcbResult: ptr ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptSetProperty*(hObject: BCRYPT_HANDLE, pszProperty: LPCWSTR, pbInput: PUCHAR, cbInput: ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptCloseAlgorithmProvider*(hAlgorithm: BCRYPT_ALG_HANDLE, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptFreeBuffer*(pvBuffer: PVOID): VOID {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptGenerateSymmetricKey*(hAlgorithm: BCRYPT_ALG_HANDLE, phKey: ptr BCRYPT_KEY_HANDLE, pbKeyObject: PUCHAR, cbKeyObject: ULONG, pbSecret: PUCHAR, cbSecret: ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptGenerateKeyPair*(hAlgorithm: BCRYPT_ALG_HANDLE, phKey: ptr BCRYPT_KEY_HANDLE, dwLength: ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptEncrypt*(hKey: BCRYPT_KEY_HANDLE, pbInput: PUCHAR, cbInput: ULONG, pPaddingInfo: pointer, pbIV: PUCHAR, cbIV: ULONG, pbOutput: PUCHAR, cbOutput: ULONG, pcbResult: ptr ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptDecrypt*(hKey: BCRYPT_KEY_HANDLE, pbInput: PUCHAR, cbInput: ULONG, pPaddingInfo: pointer, pbIV: PUCHAR, cbIV: ULONG, pbOutput: PUCHAR, cbOutput: ULONG, pcbResult: ptr ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptExportKey*(hKey: BCRYPT_KEY_HANDLE, hExportKey: BCRYPT_KEY_HANDLE, pszBlobType: LPCWSTR, pbOutput: PUCHAR, cbOutput: ULONG, pcbResult: ptr ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptImportKey*(hAlgorithm: BCRYPT_ALG_HANDLE, hImportKey: BCRYPT_KEY_HANDLE, pszBlobType: LPCWSTR, phKey: ptr BCRYPT_KEY_HANDLE, pbKeyObject: PUCHAR, cbKeyObject: ULONG, pbInput: PUCHAR, cbInput: ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptImportKeyPair*(hAlgorithm: BCRYPT_ALG_HANDLE, hImportKey: BCRYPT_KEY_HANDLE, pszBlobType: LPCWSTR, phKey: ptr BCRYPT_KEY_HANDLE, pbInput: PUCHAR, cbInput: ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptDuplicateKey*(hKey: BCRYPT_KEY_HANDLE, phNewKey: ptr BCRYPT_KEY_HANDLE, pbKeyObject: PUCHAR, cbKeyObject: ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptFinalizeKeyPair*(hKey: BCRYPT_KEY_HANDLE, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptDestroyKey*(hKey: BCRYPT_KEY_HANDLE): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptDestroySecret*(hSecret: BCRYPT_SECRET_HANDLE): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptSignHash*(hKey: BCRYPT_KEY_HANDLE, pPaddingInfo: pointer, pbInput: PUCHAR, cbInput: ULONG, pbOutput: PUCHAR, cbOutput: ULONG, pcbResult: ptr ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptVerifySignature*(hKey: BCRYPT_KEY_HANDLE, pPaddingInfo: pointer, pbHash: PUCHAR, cbHash: ULONG, pbSignature: PUCHAR, cbSignature: ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptSecretAgreement*(hPrivKey: BCRYPT_KEY_HANDLE, hPubKey: BCRYPT_KEY_HANDLE, phAgreedSecret: ptr BCRYPT_SECRET_HANDLE, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptDeriveKey*(hSharedSecret: BCRYPT_SECRET_HANDLE, pwszKDF: LPCWSTR, pParameterList: ptr BCryptBufferDesc, pbDerivedKey: PUCHAR, cbDerivedKey: ULONG, pcbResult: ptr ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptKeyDerivation*(hKey: BCRYPT_KEY_HANDLE, pParameterList: ptr BCryptBufferDesc, pbDerivedKey: PUCHAR, cbDerivedKey: ULONG, pcbResult: ptr ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptCreateHash*(hAlgorithm: BCRYPT_ALG_HANDLE, phHash: ptr BCRYPT_HASH_HANDLE, pbHashObject: PUCHAR, cbHashObject: ULONG, pbSecret: PUCHAR, cbSecret: ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptHashData*(hHash: BCRYPT_HASH_HANDLE, pbInput: PUCHAR, cbInput: ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptFinishHash*(hHash: BCRYPT_HASH_HANDLE, pbOutput: PUCHAR, cbOutput: ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptDuplicateHash*(hHash: BCRYPT_HASH_HANDLE, phNewHash: ptr BCRYPT_HASH_HANDLE, pbHashObject: PUCHAR, cbHashObject: ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptDestroyHash*(hHash: BCRYPT_HASH_HANDLE): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptGenRandom*(hAlgorithm: BCRYPT_ALG_HANDLE, pbBuffer: PUCHAR, cbBuffer: ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptDeriveKeyCapi*(hHash: BCRYPT_HASH_HANDLE, hTargetAlg: BCRYPT_ALG_HANDLE, pbDerivedKey: PUCHAR, cbDerivedKey: ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptDeriveKeyPBKDF2*(hPrf: BCRYPT_ALG_HANDLE, pbPassword: PUCHAR, cbPassword: ULONG, pbSalt: PUCHAR, cbSalt: ULONG, cIterations: ULONGLONG, pbDerivedKey: PUCHAR, cbDerivedKey: ULONG, dwFlags: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptResolveProviders*(pszContext: LPCWSTR, dwInterface: ULONG, pszFunction: LPCWSTR, pszProvider: LPCWSTR, dwMode: ULONG, dwFlags: ULONG, pcbBuffer: ptr ULONG, ppBuffer: ptr PCRYPT_PROVIDER_REFS): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptGetFipsAlgorithmMode*(pfEnabled: ptr BOOLEAN): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptRegisterConfigChangeNotify*(pEvent: PRKEVENT): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptUnregisterConfigChangeNotify*(pEvent: PRKEVENT): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptUnregisterConfigChangeNotify*(hEvent: HANDLE): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptQueryProviderRegistration*(pszProvider: LPCWSTR, dwMode: ULONG, dwInterface: ULONG, pcbBuffer: ptr ULONG, ppBuffer: ptr PCRYPT_PROVIDER_REG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptEnumRegisteredProviders*(pcbBuffer: ptr ULONG, ppBuffer: ptr PCRYPT_PROVIDERS): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptCreateContext*(dwTable: ULONG, pszContext: LPCWSTR, pConfig: PCRYPT_CONTEXT_CONFIG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptDeleteContext*(dwTable: ULONG, pszContext: LPCWSTR): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptEnumContexts*(dwTable: ULONG, pcbBuffer: ptr ULONG, ppBuffer: ptr PCRYPT_CONTEXTS): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptConfigureContext*(dwTable: ULONG, pszContext: LPCWSTR, pConfig: PCRYPT_CONTEXT_CONFIG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptQueryContextConfiguration*(dwTable: ULONG, pszContext: LPCWSTR, pcbBuffer: ptr ULONG, ppBuffer: ptr PCRYPT_CONTEXT_CONFIG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptAddContextFunction*(dwTable: ULONG, pszContext: LPCWSTR, dwInterface: ULONG, pszFunction: LPCWSTR, dwPosition: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptRemoveContextFunction*(dwTable: ULONG, pszContext: LPCWSTR, dwInterface: ULONG, pszFunction: LPCWSTR): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptEnumContextFunctions*(dwTable: ULONG, pszContext: LPCWSTR, dwInterface: ULONG, pcbBuffer: ptr ULONG, ppBuffer: ptr PCRYPT_CONTEXT_FUNCTIONS): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptConfigureContextFunction*(dwTable: ULONG, pszContext: LPCWSTR, dwInterface: ULONG, pszFunction: LPCWSTR, pConfig: PCRYPT_CONTEXT_FUNCTION_CONFIG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptQueryContextFunctionConfiguration*(dwTable: ULONG, pszContext: LPCWSTR, dwInterface: ULONG, pszFunction: LPCWSTR, pcbBuffer: ptr ULONG, ppBuffer: ptr PCRYPT_CONTEXT_FUNCTION_CONFIG): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptEnumContextFunctionProviders*(dwTable: ULONG, pszContext: LPCWSTR, dwInterface: ULONG, pszFunction: LPCWSTR, pcbBuffer: ptr ULONG, ppBuffer: ptr PCRYPT_CONTEXT_FUNCTION_PROVIDERS): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptSetContextFunctionProperty*(dwTable: ULONG, pszContext: LPCWSTR, dwInterface: ULONG, pszFunction: LPCWSTR, pszProperty: LPCWSTR, cbValue: ULONG, pbValue: PUCHAR): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptQueryContextFunctionProperty*(dwTable: ULONG, pszContext: LPCWSTR, dwInterface: ULONG, pszFunction: LPCWSTR, pszProperty: LPCWSTR, pcbValue: ptr ULONG, ppbValue: ptr PUCHAR): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc BCryptRegisterConfigChangeNotify*(phEvent: ptr HANDLE): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
-proc NCryptOpenStorageProvider*(phProvider: ptr NCRYPT_PROV_HANDLE, pszProviderName: LPCWSTR, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptEnumAlgorithms*(hProvider: NCRYPT_PROV_HANDLE, dwAlgOperations: DWORD, pdwAlgCount: ptr DWORD, ppAlgList: ptr ptr NCryptAlgorithmName, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptIsAlgSupported*(hProvider: NCRYPT_PROV_HANDLE, pszAlgId: LPCWSTR, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptEnumKeys*(hProvider: NCRYPT_PROV_HANDLE, pszScope: LPCWSTR, ppKeyName: ptr ptr NCryptKeyName, ppEnumState: ptr PVOID, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptEnumStorageProviders*(pdwProviderCount: ptr DWORD, ppProviderList: ptr ptr NCryptProviderName, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptFreeBuffer*(pvInput: PVOID): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptOpenKey*(hProvider: NCRYPT_PROV_HANDLE, phKey: ptr NCRYPT_KEY_HANDLE, pszKeyName: LPCWSTR, dwLegacyKeySpec: DWORD, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptCreatePersistedKey*(hProvider: NCRYPT_PROV_HANDLE, phKey: ptr NCRYPT_KEY_HANDLE, pszAlgId: LPCWSTR, pszKeyName: LPCWSTR, dwLegacyKeySpec: DWORD, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptGetProperty*(hObject: NCRYPT_HANDLE, pszProperty: LPCWSTR, pbOutput: PBYTE, cbOutput: DWORD, pcbResult: ptr DWORD, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptSetProperty*(hObject: NCRYPT_HANDLE, pszProperty: LPCWSTR, pbInput: PBYTE, cbInput: DWORD, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptFinalizeKey*(hKey: NCRYPT_KEY_HANDLE, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptEncrypt*(hKey: NCRYPT_KEY_HANDLE, pbInput: PBYTE, cbInput: DWORD, pPaddingInfo: pointer, pbOutput: PBYTE, cbOutput: DWORD, pcbResult: ptr DWORD, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptDecrypt*(hKey: NCRYPT_KEY_HANDLE, pbInput: PBYTE, cbInput: DWORD, pPaddingInfo: pointer, pbOutput: PBYTE, cbOutput: DWORD, pcbResult: ptr DWORD, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptImportKey*(hProvider: NCRYPT_PROV_HANDLE, hImportKey: NCRYPT_KEY_HANDLE, pszBlobType: LPCWSTR, pParameterList: ptr NCryptBufferDesc, phKey: ptr NCRYPT_KEY_HANDLE, pbData: PBYTE, cbData: DWORD, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptExportKey*(hKey: NCRYPT_KEY_HANDLE, hExportKey: NCRYPT_KEY_HANDLE, pszBlobType: LPCWSTR, pParameterList: ptr NCryptBufferDesc, pbOutput: PBYTE, cbOutput: DWORD, pcbResult: ptr DWORD, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptSignHash*(hKey: NCRYPT_KEY_HANDLE, pPaddingInfo: pointer, pbHashValue: PBYTE, cbHashValue: DWORD, pbSignature: PBYTE, cbSignature: DWORD, pcbResult: ptr DWORD, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptVerifySignature*(hKey: NCRYPT_KEY_HANDLE, pPaddingInfo: pointer, pbHashValue: PBYTE, cbHashValue: DWORD, pbSignature: PBYTE, cbSignature: DWORD, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptDeleteKey*(hKey: NCRYPT_KEY_HANDLE, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptFreeObject*(hObject: NCRYPT_HANDLE): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptIsKeyHandle*(hKey: NCRYPT_KEY_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptTranslateHandle*(phProvider: ptr NCRYPT_PROV_HANDLE, phKey: ptr NCRYPT_KEY_HANDLE, hLegacyProv: HCRYPTPROV, hLegacyKey: HCRYPTKEY, dwLegacyKeySpec: DWORD, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptNotifyChangeKey*(hProvider: NCRYPT_PROV_HANDLE, phEvent: ptr HANDLE, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptSecretAgreement*(hPrivKey: NCRYPT_KEY_HANDLE, hPubKey: NCRYPT_KEY_HANDLE, phAgreedSecret: ptr NCRYPT_SECRET_HANDLE, dwFlags: DWORD): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptDeriveKey*(hSharedSecret: NCRYPT_SECRET_HANDLE, pwszKDF: LPCWSTR, pParameterList: ptr NCryptBufferDesc, pbDerivedKey: PBYTE, cbDerivedKey: DWORD, pcbResult: ptr DWORD, dwFlags: ULONG): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc NCryptKeyDerivation*(hKey: NCRYPT_KEY_HANDLE, pParameterList: ptr NCryptBufferDesc, pbDerivedKey: PUCHAR, cbDerivedKey: DWORD, pcbResult: ptr DWORD, dwFlags: ULONG): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
-proc CryptFormatObject*(dwCertEncodingType: DWORD, dwFormatType: DWORD, dwFormatStrType: DWORD, pFormatStruct: pointer, lpszStructType: LPCSTR, pbEncoded: ptr BYTE, cbEncoded: DWORD, pbFormat: pointer, pcbFormat: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptEncodeObjectEx*(dwCertEncodingType: DWORD, lpszStructType: LPCSTR, pvStructInfo: pointer, dwFlags: DWORD, pEncodePara: PCRYPT_ENCODE_PARA, pvEncoded: pointer, pcbEncoded: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptEncodeObject*(dwCertEncodingType: DWORD, lpszStructType: LPCSTR, pvStructInfo: pointer, pbEncoded: ptr BYTE, pcbEncoded: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptDecodeObjectEx*(dwCertEncodingType: DWORD, lpszStructType: LPCSTR, pbEncoded: ptr BYTE, cbEncoded: DWORD, dwFlags: DWORD, pDecodePara: PCRYPT_DECODE_PARA, pvStructInfo: pointer, pcbStructInfo: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptDecodeObject*(dwCertEncodingType: DWORD, lpszStructType: LPCSTR, pbEncoded: ptr BYTE, cbEncoded: DWORD, dwFlags: DWORD, pvStructInfo: pointer, pcbStructInfo: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptInstallOIDFunctionAddress*(hModule: HMODULE, dwEncodingType: DWORD, pszFuncName: LPCSTR, cFuncEntry: DWORD, rgFuncEntry: ptr CRYPT_OID_FUNC_ENTRY, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptInitOIDFunctionSet*(pszFuncName: LPCSTR, dwFlags: DWORD): HCRYPTOIDFUNCSET {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptGetOIDFunctionAddress*(hFuncSet: HCRYPTOIDFUNCSET, dwEncodingType: DWORD, pszOID: LPCSTR, dwFlags: DWORD, ppvFuncAddr: ptr pointer, phFuncAddr: ptr HCRYPTOIDFUNCADDR): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptGetDefaultOIDDllList*(hFuncSet: HCRYPTOIDFUNCSET, dwEncodingType: DWORD, pwszDllList: ptr WCHAR, pcchDllList: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptGetDefaultOIDFunctionAddress*(hFuncSet: HCRYPTOIDFUNCSET, dwEncodingType: DWORD, pwszDll: LPCWSTR, dwFlags: DWORD, ppvFuncAddr: ptr pointer, phFuncAddr: ptr HCRYPTOIDFUNCADDR): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptFreeOIDFunctionAddress*(hFuncAddr: HCRYPTOIDFUNCADDR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptRegisterOIDFunction*(dwEncodingType: DWORD, pszFuncName: LPCSTR, pszOID: LPCSTR, pwszDll: LPCWSTR, pszOverrideFuncName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptUnregisterOIDFunction*(dwEncodingType: DWORD, pszFuncName: LPCSTR, pszOID: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptRegisterDefaultOIDFunction*(dwEncodingType: DWORD, pszFuncName: LPCSTR, dwIndex: DWORD, pwszDll: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptUnregisterDefaultOIDFunction*(dwEncodingType: DWORD, pszFuncName: LPCSTR, pwszDll: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSetOIDFunctionValue*(dwEncodingType: DWORD, pszFuncName: LPCSTR, pszOID: LPCSTR, pwszValueName: LPCWSTR, dwValueType: DWORD, pbValueData: ptr BYTE, cbValueData: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptGetOIDFunctionValue*(dwEncodingType: DWORD, pszFuncName: LPCSTR, pszOID: LPCSTR, pwszValueName: LPCWSTR, pdwValueType: ptr DWORD, pbValueData: ptr BYTE, pcbValueData: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptEnumOIDFunction*(dwEncodingType: DWORD, pszFuncName: LPCSTR, pszOID: LPCSTR, dwFlags: DWORD, pvArg: pointer, pfnEnumOIDFunc: PFN_CRYPT_ENUM_OID_FUNC): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptFindOIDInfo*(dwKeyType: DWORD, pvKey: pointer, dwGroupId: DWORD): PCCRYPT_OID_INFO {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptRegisterOIDInfo*(pInfo: PCCRYPT_OID_INFO, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptUnregisterOIDInfo*(pInfo: PCCRYPT_OID_INFO): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptEnumOIDInfo*(dwGroupId: DWORD, dwFlags: DWORD, pvArg: pointer, pfnEnumOIDInfo: PFN_CRYPT_ENUM_OID_INFO): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptFindLocalizedName*(pwszCryptName: LPCWSTR): LPCWSTR {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgOpenToEncode*(dwMsgEncodingType: DWORD, dwFlags: DWORD, dwMsgType: DWORD, pvMsgEncodeInfo: pointer, pszInnerContentObjID: LPSTR, pStreamInfo: PCMSG_STREAM_INFO): HCRYPTMSG {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgCalculateEncodedLength*(dwMsgEncodingType: DWORD, dwFlags: DWORD, dwMsgType: DWORD, pvMsgEncodeInfo: pointer, pszInnerContentObjID: LPSTR, cbData: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgOpenToDecode*(dwMsgEncodingType: DWORD, dwFlags: DWORD, dwMsgType: DWORD, hCryptProv: HCRYPTPROV_LEGACY, pRecipientInfo: PCERT_INFO, pStreamInfo: PCMSG_STREAM_INFO): HCRYPTMSG {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgDuplicate*(hCryptMsg: HCRYPTMSG): HCRYPTMSG {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgClose*(hCryptMsg: HCRYPTMSG): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgUpdate*(hCryptMsg: HCRYPTMSG, pbData: ptr BYTE, cbData: DWORD, fFinal: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgGetParam*(hCryptMsg: HCRYPTMSG, dwParamType: DWORD, dwIndex: DWORD, pvData: pointer, pcbData: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgControl*(hCryptMsg: HCRYPTMSG, dwFlags: DWORD, dwCtrlType: DWORD, pvCtrlPara: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgVerifyCountersignatureEncoded*(hCryptProv: HCRYPTPROV_LEGACY, dwEncodingType: DWORD, pbSignerInfo: PBYTE, cbSignerInfo: DWORD, pbSignerInfoCountersignature: PBYTE, cbSignerInfoCountersignature: DWORD, pciCountersigner: PCERT_INFO): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgVerifyCountersignatureEncodedEx*(hCryptProv: HCRYPTPROV_LEGACY, dwEncodingType: DWORD, pbSignerInfo: PBYTE, cbSignerInfo: DWORD, pbSignerInfoCountersignature: PBYTE, cbSignerInfoCountersignature: DWORD, dwSignerType: DWORD, pvSigner: pointer, dwFlags: DWORD, pvExtra: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgCountersign*(hCryptMsg: HCRYPTMSG, dwIndex: DWORD, cCountersigners: DWORD, rgCountersigners: PCMSG_SIGNER_ENCODE_INFO): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgCountersignEncoded*(dwEncodingType: DWORD, pbSignerInfo: PBYTE, cbSignerInfo: DWORD, cCountersigners: DWORD, rgCountersigners: PCMSG_SIGNER_ENCODE_INFO, pbCountersignature: PBYTE, pcbCountersignature: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertOpenStore*(lpszStoreProvider: LPCSTR, dwEncodingType: DWORD, hCryptProv: HCRYPTPROV_LEGACY, dwFlags: DWORD, pvPara: pointer): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertDuplicateStore*(hCertStore: HCERTSTORE): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertSaveStore*(hCertStore: HCERTSTORE, dwEncodingType: DWORD, dwSaveAs: DWORD, dwSaveTo: DWORD, pvSaveToPara: pointer, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertCloseStore*(hCertStore: HCERTSTORE, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetSubjectCertificateFromStore*(hCertStore: HCERTSTORE, dwCertEncodingType: DWORD, pCertId: PCERT_INFO): PCCERT_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertEnumCertificatesInStore*(hCertStore: HCERTSTORE, pPrevCertContext: PCCERT_CONTEXT): PCCERT_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFindCertificateInStore*(hCertStore: HCERTSTORE, dwCertEncodingType: DWORD, dwFindFlags: DWORD, dwFindType: DWORD, pvFindPara: pointer, pPrevCertContext: PCCERT_CONTEXT): PCCERT_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetIssuerCertificateFromStore*(hCertStore: HCERTSTORE, pSubjectContext: PCCERT_CONTEXT, pPrevIssuerContext: PCCERT_CONTEXT, pdwFlags: ptr DWORD): PCCERT_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertVerifySubjectCertificateContext*(pSubject: PCCERT_CONTEXT, pIssuer: PCCERT_CONTEXT, pdwFlags: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertDuplicateCertificateContext*(pCertContext: PCCERT_CONTEXT): PCCERT_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertCreateCertificateContext*(dwCertEncodingType: DWORD, pbCertEncoded: ptr BYTE, cbCertEncoded: DWORD): PCCERT_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFreeCertificateContext*(pCertContext: PCCERT_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertSetCertificateContextProperty*(pCertContext: PCCERT_CONTEXT, dwPropId: DWORD, dwFlags: DWORD, pvData: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertEnumCRLsInStore*(hCertStore: HCERTSTORE, pPrevCrlContext: PCCRL_CONTEXT): PCCRL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertDeleteCRLFromStore*(pCrlContext: PCCRL_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertDuplicateCRLContext*(pCrlContext: PCCRL_CONTEXT): PCCRL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFindCRLInStore*(hCertStore: HCERTSTORE, dwCertEncodingType: DWORD, dwFindFlags: DWORD, dwFindType: DWORD, pvFindPara: pointer, pPrevCrlContext: PCCRL_CONTEXT): PCCRL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFreeCRLContext*(pCrlContext: PCCRL_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetCertificateContextProperty*(pCertContext: PCCERT_CONTEXT, dwPropId: DWORD, pvData: pointer, pcbData: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertEnumCertificateContextProperties*(pCertContext: PCCERT_CONTEXT, dwPropId: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertCreateCTLEntryFromCertificateContextProperties*(pCertContext: PCCERT_CONTEXT, cOptAttr: DWORD, rgOptAttr: PCRYPT_ATTRIBUTE, dwFlags: DWORD, pvReserved: pointer, pCtlEntry: PCTL_ENTRY, pcbCtlEntry: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertSetCertificateContextPropertiesFromCTLEntry*(pCertContext: PCCERT_CONTEXT, pCtlEntry: PCTL_ENTRY, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetCRLFromStore*(hCertStore: HCERTSTORE, pIssuerContext: PCCERT_CONTEXT, pPrevCrlContext: PCCRL_CONTEXT, pdwFlags: ptr DWORD): PCCRL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertCreateCRLContext*(dwCertEncodingType: DWORD, pbCrlEncoded: ptr BYTE, cbCrlEncoded: DWORD): PCCRL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertSetCRLContextProperty*(pCrlContext: PCCRL_CONTEXT, dwPropId: DWORD, dwFlags: DWORD, pvData: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetCRLContextProperty*(pCrlContext: PCCRL_CONTEXT, dwPropId: DWORD, pvData: pointer, pcbData: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertEnumCRLContextProperties*(pCrlContext: PCCRL_CONTEXT, dwPropId: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFindCertificateInCRL*(pCert: PCCERT_CONTEXT, pCrlContext: PCCRL_CONTEXT, dwFlags: DWORD, pvReserved: pointer, ppCrlEntry: ptr PCRL_ENTRY): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertIsValidCRLForCertificate*(pCert: PCCERT_CONTEXT, pCrl: PCCRL_CONTEXT, dwFlags: DWORD, pvReserved: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddEncodedCertificateToStore*(hCertStore: HCERTSTORE, dwCertEncodingType: DWORD, pbCertEncoded: ptr BYTE, cbCertEncoded: DWORD, dwAddDisposition: DWORD, ppCertContext: ptr PCCERT_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddCertificateContextToStore*(hCertStore: HCERTSTORE, pCertContext: PCCERT_CONTEXT, dwAddDisposition: DWORD, ppStoreContext: ptr PCCERT_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddSerializedElementToStore*(hCertStore: HCERTSTORE, pbElement: ptr BYTE, cbElement: DWORD, dwAddDisposition: DWORD, dwFlags: DWORD, dwContextTypeFlags: DWORD, pdwContextType: ptr DWORD, ppvContext: ptr pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertDeleteCertificateFromStore*(pCertContext: PCCERT_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddEncodedCRLToStore*(hCertStore: HCERTSTORE, dwCertEncodingType: DWORD, pbCrlEncoded: ptr BYTE, cbCrlEncoded: DWORD, dwAddDisposition: DWORD, ppCrlContext: ptr PCCRL_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddCRLContextToStore*(hCertStore: HCERTSTORE, pCrlContext: PCCRL_CONTEXT, dwAddDisposition: DWORD, ppStoreContext: ptr PCCRL_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertSerializeCertificateStoreElement*(pCertContext: PCCERT_CONTEXT, dwFlags: DWORD, pbElement: ptr BYTE, pcbElement: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertSerializeCRLStoreElement*(pCrlContext: PCCRL_CONTEXT, dwFlags: DWORD, pbElement: ptr BYTE, pcbElement: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertDuplicateCTLContext*(pCtlContext: PCCTL_CONTEXT): PCCTL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertCreateCTLContext*(dwMsgAndCertEncodingType: DWORD, pbCtlEncoded: ptr BYTE, cbCtlEncoded: DWORD): PCCTL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFreeCTLContext*(pCtlContext: PCCTL_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertSetCTLContextProperty*(pCtlContext: PCCTL_CONTEXT, dwPropId: DWORD, dwFlags: DWORD, pvData: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetCTLContextProperty*(pCtlContext: PCCTL_CONTEXT, dwPropId: DWORD, pvData: pointer, pcbData: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertEnumCTLContextProperties*(pCtlContext: PCCTL_CONTEXT, dwPropId: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertEnumCTLsInStore*(hCertStore: HCERTSTORE, pPrevCtlContext: PCCTL_CONTEXT): PCCTL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFindSubjectInCTL*(dwEncodingType: DWORD, dwSubjectType: DWORD, pvSubject: pointer, pCtlContext: PCCTL_CONTEXT, dwFlags: DWORD): PCTL_ENTRY {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFindCTLInStore*(hCertStore: HCERTSTORE, dwMsgAndCertEncodingType: DWORD, dwFindFlags: DWORD, dwFindType: DWORD, pvFindPara: pointer, pPrevCtlContext: PCCTL_CONTEXT): PCCTL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddEncodedCTLToStore*(hCertStore: HCERTSTORE, dwMsgAndCertEncodingType: DWORD, pbCtlEncoded: ptr BYTE, cbCtlEncoded: DWORD, dwAddDisposition: DWORD, ppCtlContext: ptr PCCTL_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddCTLContextToStore*(hCertStore: HCERTSTORE, pCtlContext: PCCTL_CONTEXT, dwAddDisposition: DWORD, ppStoreContext: ptr PCCTL_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertSerializeCTLStoreElement*(pCtlContext: PCCTL_CONTEXT, dwFlags: DWORD, pbElement: ptr BYTE, pcbElement: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertDeleteCTLFromStore*(pCtlContext: PCCTL_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddCertificateLinkToStore*(hCertStore: HCERTSTORE, pCertContext: PCCERT_CONTEXT, dwAddDisposition: DWORD, ppStoreContext: ptr PCCERT_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddCRLLinkToStore*(hCertStore: HCERTSTORE, pCrlContext: PCCRL_CONTEXT, dwAddDisposition: DWORD, ppStoreContext: ptr PCCRL_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddCTLLinkToStore*(hCertStore: HCERTSTORE, pCtlContext: PCCTL_CONTEXT, dwAddDisposition: DWORD, ppStoreContext: ptr PCCTL_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddStoreToCollection*(hCollectionStore: HCERTSTORE, hSiblingStore: HCERTSTORE, dwUpdateFlags: DWORD, dwPriority: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertRemoveStoreFromCollection*(hCollectionStore: HCERTSTORE, hSiblingStore: HCERTSTORE): void {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertControlStore*(hCertStore: HCERTSTORE, dwFlags: DWORD, dwCtrlType: DWORD, pvCtrlPara: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertSetStoreProperty*(hCertStore: HCERTSTORE, dwPropId: DWORD, dwFlags: DWORD, pvData: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetStoreProperty*(hCertStore: HCERTSTORE, dwPropId: DWORD, pvData: pointer, pcbData: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertRegisterSystemStore*(pvSystemStore: pointer, dwFlags: DWORD, pStoreInfo: PCERT_SYSTEM_STORE_INFO, pvReserved: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertRegisterPhysicalStore*(pvSystemStore: pointer, dwFlags: DWORD, pwszStoreName: LPCWSTR, pStoreInfo: PCERT_PHYSICAL_STORE_INFO, pvReserved: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertUnregisterSystemStore*(pvSystemStore: pointer, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertUnregisterPhysicalStore*(pvSystemStore: pointer, dwFlags: DWORD, pwszStoreName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertEnumSystemStoreLocation*(dwFlags: DWORD, pvArg: pointer, pfnEnum: PFN_CERT_ENUM_SYSTEM_STORE_LOCATION): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertEnumSystemStore*(dwFlags: DWORD, pvSystemStoreLocationPara: pointer, pvArg: pointer, pfnEnum: PFN_CERT_ENUM_SYSTEM_STORE): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertEnumPhysicalStore*(pvSystemStore: pointer, dwFlags: DWORD, pvArg: pointer, pfnEnum: PFN_CERT_ENUM_PHYSICAL_STORE): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetEnhancedKeyUsage*(pCertContext: PCCERT_CONTEXT, dwFlags: DWORD, pUsage: PCERT_ENHKEY_USAGE, pcbUsage: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertSetEnhancedKeyUsage*(pCertContext: PCCERT_CONTEXT, pUsage: PCERT_ENHKEY_USAGE): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddEnhancedKeyUsageIdentifier*(pCertContext: PCCERT_CONTEXT, pszUsageIdentifier: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertRemoveEnhancedKeyUsageIdentifier*(pCertContext: PCCERT_CONTEXT, pszUsageIdentifier: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetValidUsages*(cCerts: DWORD, rghCerts: ptr PCCERT_CONTEXT, cNumOIDs: ptr int32, rghOIDs: ptr LPSTR, pcbOIDs: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgGetAndVerifySigner*(hCryptMsg: HCRYPTMSG, cSignerStore: DWORD, rghSignerStore: ptr HCERTSTORE, dwFlags: DWORD, ppSigner: ptr PCCERT_CONTEXT, pdwSignerIndex: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgSignCTL*(dwMsgEncodingType: DWORD, pbCtlContent: ptr BYTE, cbCtlContent: DWORD, pSignInfo: PCMSG_SIGNED_ENCODE_INFO, dwFlags: DWORD, pbEncoded: ptr BYTE, pcbEncoded: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMsgEncodeAndSignCTL*(dwMsgEncodingType: DWORD, pCtlInfo: PCTL_INFO, pSignInfo: PCMSG_SIGNED_ENCODE_INFO, dwFlags: DWORD, pbEncoded: ptr BYTE, pcbEncoded: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFindSubjectInSortedCTL*(pSubjectIdentifier: PCRYPT_DATA_BLOB, pCtlContext: PCCTL_CONTEXT, dwFlags: DWORD, pvReserved: pointer, pEncodedAttributes: PCRYPT_DER_BLOB): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertEnumSubjectInSortedCTL*(pCtlContext: PCCTL_CONTEXT, ppvNextSubject: ptr pointer, pSubjectIdentifier: PCRYPT_DER_BLOB, pEncodedAttributes: PCRYPT_DER_BLOB): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertVerifyCTLUsage*(dwEncodingType: DWORD, dwSubjectType: DWORD, pvSubject: pointer, pSubjectUsage: PCTL_USAGE, dwFlags: DWORD, pVerifyUsagePara: PCTL_VERIFY_USAGE_PARA, pVerifyUsageStatus: PCTL_VERIFY_USAGE_STATUS): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertVerifyRevocation*(dwEncodingType: DWORD, dwRevType: DWORD, cContext: DWORD, rgpvContext: ptr PVOID, dwFlags: DWORD, pRevPara: PCERT_REVOCATION_PARA, pRevStatus: PCERT_REVOCATION_STATUS): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertCompareIntegerBlob*(pInt1: PCRYPT_INTEGER_BLOB, pInt2: PCRYPT_INTEGER_BLOB): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertCompareCertificate*(dwCertEncodingType: DWORD, pCertId1: PCERT_INFO, pCertId2: PCERT_INFO): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertCompareCertificateName*(dwCertEncodingType: DWORD, pCertName1: PCERT_NAME_BLOB, pCertName2: PCERT_NAME_BLOB): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertIsRDNAttrsInCertificateName*(dwCertEncodingType: DWORD, dwFlags: DWORD, pCertName: PCERT_NAME_BLOB, pRDN: PCERT_RDN): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertComparePublicKeyInfo*(dwCertEncodingType: DWORD, pPublicKey1: PCERT_PUBLIC_KEY_INFO, pPublicKey2: PCERT_PUBLIC_KEY_INFO): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetPublicKeyLength*(dwCertEncodingType: DWORD, pPublicKey: PCERT_PUBLIC_KEY_INFO): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptVerifyCertificateSignature*(hCryptProv: HCRYPTPROV_LEGACY, dwCertEncodingType: DWORD, pbEncoded: ptr BYTE, cbEncoded: DWORD, pPublicKey: PCERT_PUBLIC_KEY_INFO): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptVerifyCertificateSignatureEx*(hCryptProv: HCRYPTPROV_LEGACY, dwCertEncodingType: DWORD, dwSubjectType: DWORD, pvSubject: pointer, dwIssuerType: DWORD, pvIssuer: pointer, dwFlags: DWORD, pvExtra: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertIsStrongHashToSign*(pStrongSignPara: PCCERT_STRONG_SIGN_PARA, pwszCNGHashAlgid: LPCWSTR, pSigningCert: PCCERT_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptHashToBeSigned*(hCryptProv: HCRYPTPROV_LEGACY, dwCertEncodingType: DWORD, pbEncoded: ptr BYTE, cbEncoded: DWORD, pbComputedHash: ptr BYTE, pcbComputedHash: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptHashCertificate*(hCryptProv: HCRYPTPROV_LEGACY, Algid: ALG_ID, dwFlags: DWORD, pbEncoded: ptr BYTE, cbEncoded: DWORD, pbComputedHash: ptr BYTE, pcbComputedHash: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptHashCertificate2*(pwszCNGHashAlgid: LPCWSTR, dwFlags: DWORD, pvReserved: pointer, pbEncoded: ptr BYTE, cbEncoded: DWORD, pbComputedHash: ptr BYTE, pcbComputedHash: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSignCertificate*(hCryptProvOrNCryptKey: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, dwKeySpec: DWORD, dwCertEncodingType: DWORD, pbEncodedToBeSigned: ptr BYTE, cbEncodedToBeSigned: DWORD, pSignatureAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER, pvHashAuxInfo: pointer, pbSignature: ptr BYTE, pcbSignature: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSignAndEncodeCertificate*(hCryptProvOrNCryptKey: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, dwKeySpec: DWORD, dwCertEncodingType: DWORD, lpszStructType: LPCSTR, pvStructInfo: pointer, pSignatureAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER, pvHashAuxInfo: pointer, pbEncoded: ptr BYTE, pcbEncoded: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertVerifyTimeValidity*(pTimeToVerify: LPFILETIME, pCertInfo: PCERT_INFO): LONG {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertVerifyCRLTimeValidity*(pTimeToVerify: LPFILETIME, pCrlInfo: PCRL_INFO): LONG {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertVerifyValidityNesting*(pSubjectInfo: PCERT_INFO, pIssuerInfo: PCERT_INFO): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertVerifyCRLRevocation*(dwCertEncodingType: DWORD, pCertId: PCERT_INFO, cCrlInfo: DWORD, rgpCrlInfo: ptr PCRL_INFO): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAlgIdToOID*(dwAlgId: DWORD): LPCSTR {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertOIDToAlgId*(pszObjId: LPCSTR): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFindExtension*(pszObjId: LPCSTR, cExtensions: DWORD, rgExtensions: ptr CERT_EXTENSION): PCERT_EXTENSION {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFindAttribute*(pszObjId: LPCSTR, cAttr: DWORD, rgAttr: ptr CRYPT_ATTRIBUTE): PCRYPT_ATTRIBUTE {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFindRDNAttr*(pszObjId: LPCSTR, pName: PCERT_NAME_INFO): PCERT_RDN_ATTR {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetIntendedKeyUsage*(dwCertEncodingType: DWORD, pCertInfo: PCERT_INFO, pbKeyUsage: ptr BYTE, cbKeyUsage: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptInstallDefaultContext*(hCryptProv: HCRYPTPROV, dwDefaultType: DWORD, pvDefaultPara: pointer, dwFlags: DWORD, pvReserved: pointer, phDefaultContext: ptr HCRYPTDEFAULTCONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptUninstallDefaultContext*(hDefaultContext: HCRYPTDEFAULTCONTEXT, dwFlags: DWORD, pvReserved: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptExportPublicKeyInfo*(hCryptProvOrNCryptKey: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, dwKeySpec: DWORD, dwCertEncodingType: DWORD, pInfo: PCERT_PUBLIC_KEY_INFO, pcbInfo: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptExportPublicKeyInfoEx*(hCryptProvOrNCryptKey: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, dwKeySpec: DWORD, dwCertEncodingType: DWORD, pszPublicKeyObjId: LPSTR, dwFlags: DWORD, pvAuxInfo: pointer, pInfo: PCERT_PUBLIC_KEY_INFO, pcbInfo: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptExportPublicKeyInfoFromBCryptKeyHandle*(hBCryptKey: BCRYPT_KEY_HANDLE, dwCertEncodingType: DWORD, pszPublicKeyObjId: LPSTR, dwFlags: DWORD, pvAuxInfo: pointer, pInfo: PCERT_PUBLIC_KEY_INFO, pcbInfo: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptImportPublicKeyInfo*(hCryptProv: HCRYPTPROV, dwCertEncodingType: DWORD, pInfo: PCERT_PUBLIC_KEY_INFO, phKey: ptr HCRYPTKEY): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptImportPublicKeyInfoEx*(hCryptProv: HCRYPTPROV, dwCertEncodingType: DWORD, pInfo: PCERT_PUBLIC_KEY_INFO, aiKeyAlg: ALG_ID, dwFlags: DWORD, pvAuxInfo: pointer, phKey: ptr HCRYPTKEY): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptImportPublicKeyInfoEx2*(dwCertEncodingType: DWORD, pInfo: PCERT_PUBLIC_KEY_INFO, dwFlags: DWORD, pvAuxInfo: pointer, phKey: ptr BCRYPT_KEY_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptAcquireCertificatePrivateKey*(pCert: PCCERT_CONTEXT, dwFlags: DWORD, pvParameters: pointer, phCryptProvOrNCryptKey: ptr HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, pdwKeySpec: ptr DWORD, pfCallerFreeProvOrNCryptKey: ptr WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptFindCertificateKeyProvInfo*(pCert: PCCERT_CONTEXT, dwFlags: DWORD, pvReserved: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptImportPKCS8*(sPrivateKeyAndParams: CRYPT_PKCS8_IMPORT_PARAMS, dwFlags: DWORD, phCryptProv: ptr HCRYPTPROV, pvAuxInfo: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptExportPKCS8*(hCryptProv: HCRYPTPROV, dwKeySpec: DWORD, pszPrivateKeyObjId: LPSTR, dwFlags: DWORD, pvAuxInfo: pointer, pbPrivateKeyBlob: ptr BYTE, pcbPrivateKeyBlob: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptHashPublicKeyInfo*(hCryptProv: HCRYPTPROV_LEGACY, Algid: ALG_ID, dwFlags: DWORD, dwCertEncodingType: DWORD, pInfo: PCERT_PUBLIC_KEY_INFO, pbComputedHash: ptr BYTE, pcbComputedHash: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertRDNValueToStrA*(dwValueType: DWORD, pValue: PCERT_RDN_VALUE_BLOB, psz: LPSTR, csz: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertRDNValueToStrW*(dwValueType: DWORD, pValue: PCERT_RDN_VALUE_BLOB, psz: LPWSTR, csz: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertNameToStrA*(dwCertEncodingType: DWORD, pName: PCERT_NAME_BLOB, dwStrType: DWORD, psz: LPSTR, csz: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertNameToStrW*(dwCertEncodingType: DWORD, pName: PCERT_NAME_BLOB, dwStrType: DWORD, psz: LPWSTR, csz: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertStrToNameA*(dwCertEncodingType: DWORD, pszX500: LPCSTR, dwStrType: DWORD, pvReserved: pointer, pbEncoded: ptr BYTE, pcbEncoded: ptr DWORD, ppszError: ptr LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertStrToNameW*(dwCertEncodingType: DWORD, pszX500: LPCWSTR, dwStrType: DWORD, pvReserved: pointer, pbEncoded: ptr BYTE, pcbEncoded: ptr DWORD, ppszError: ptr LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetNameStringA*(pCertContext: PCCERT_CONTEXT, dwType: DWORD, dwFlags: DWORD, pvTypePara: pointer, pszNameString: LPSTR, cchNameString: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetNameStringW*(pCertContext: PCCERT_CONTEXT, dwType: DWORD, dwFlags: DWORD, pvTypePara: pointer, pszNameString: LPWSTR, cchNameString: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSignMessage*(pSignPara: PCRYPT_SIGN_MESSAGE_PARA, fDetachedSignature: WINBOOL, cToBeSigned: DWORD, rgpbToBeSigned: ptr ptr BYTE, rgcbToBeSigned: ptr DWORD, pbSignedBlob: ptr BYTE, pcbSignedBlob: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptVerifyMessageSignature*(pVerifyPara: PCRYPT_VERIFY_MESSAGE_PARA, dwSignerIndex: DWORD, pbSignedBlob: ptr BYTE, cbSignedBlob: DWORD, pbDecoded: ptr BYTE, pcbDecoded: ptr DWORD, ppSignerCert: ptr PCCERT_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptGetMessageSignerCount*(dwMsgEncodingType: DWORD, pbSignedBlob: ptr BYTE, cbSignedBlob: DWORD): LONG {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptGetMessageCertificates*(dwMsgAndCertEncodingType: DWORD, hCryptProv: HCRYPTPROV_LEGACY, dwFlags: DWORD, pbSignedBlob: ptr BYTE, cbSignedBlob: DWORD): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptVerifyDetachedMessageSignature*(pVerifyPara: PCRYPT_VERIFY_MESSAGE_PARA, dwSignerIndex: DWORD, pbDetachedSignBlob: ptr BYTE, cbDetachedSignBlob: DWORD, cToBeSigned: DWORD, rgpbToBeSigned: ptr ptr BYTE, rgcbToBeSigned: ptr DWORD, ppSignerCert: ptr PCCERT_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptEncryptMessage*(pEncryptPara: PCRYPT_ENCRYPT_MESSAGE_PARA, cRecipientCert: DWORD, rgpRecipientCert: ptr PCCERT_CONTEXT, pbToBeEncrypted: ptr BYTE, cbToBeEncrypted: DWORD, pbEncryptedBlob: ptr BYTE, pcbEncryptedBlob: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptDecryptMessage*(pDecryptPara: PCRYPT_DECRYPT_MESSAGE_PARA, pbEncryptedBlob: ptr BYTE, cbEncryptedBlob: DWORD, pbDecrypted: ptr BYTE, pcbDecrypted: ptr DWORD, ppXchgCert: ptr PCCERT_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSignAndEncryptMessage*(pSignPara: PCRYPT_SIGN_MESSAGE_PARA, pEncryptPara: PCRYPT_ENCRYPT_MESSAGE_PARA, cRecipientCert: DWORD, rgpRecipientCert: ptr PCCERT_CONTEXT, pbToBeSignedAndEncrypted: ptr BYTE, cbToBeSignedAndEncrypted: DWORD, pbSignedAndEncryptedBlob: ptr BYTE, pcbSignedAndEncryptedBlob: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptDecryptAndVerifyMessageSignature*(pDecryptPara: PCRYPT_DECRYPT_MESSAGE_PARA, pVerifyPara: PCRYPT_VERIFY_MESSAGE_PARA, dwSignerIndex: DWORD, pbEncryptedBlob: ptr BYTE, cbEncryptedBlob: DWORD, pbDecrypted: ptr BYTE, pcbDecrypted: ptr DWORD, ppXchgCert: ptr PCCERT_CONTEXT, ppSignerCert: ptr PCCERT_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptDecodeMessage*(dwMsgTypeFlags: DWORD, pDecryptPara: PCRYPT_DECRYPT_MESSAGE_PARA, pVerifyPara: PCRYPT_VERIFY_MESSAGE_PARA, dwSignerIndex: DWORD, pbEncodedBlob: ptr BYTE, cbEncodedBlob: DWORD, dwPrevInnerContentType: DWORD, pdwMsgType: ptr DWORD, pdwInnerContentType: ptr DWORD, pbDecoded: ptr BYTE, pcbDecoded: ptr DWORD, ppXchgCert: ptr PCCERT_CONTEXT, ppSignerCert: ptr PCCERT_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptHashMessage*(pHashPara: PCRYPT_HASH_MESSAGE_PARA, fDetachedHash: WINBOOL, cToBeHashed: DWORD, rgpbToBeHashed: ptr ptr BYTE, rgcbToBeHashed: ptr DWORD, pbHashedBlob: ptr BYTE, pcbHashedBlob: ptr DWORD, pbComputedHash: ptr BYTE, pcbComputedHash: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptVerifyMessageHash*(pHashPara: PCRYPT_HASH_MESSAGE_PARA, pbHashedBlob: ptr BYTE, cbHashedBlob: DWORD, pbToBeHashed: ptr BYTE, pcbToBeHashed: ptr DWORD, pbComputedHash: ptr BYTE, pcbComputedHash: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptVerifyDetachedMessageHash*(pHashPara: PCRYPT_HASH_MESSAGE_PARA, pbDetachedHashBlob: ptr BYTE, cbDetachedHashBlob: DWORD, cToBeHashed: DWORD, rgpbToBeHashed: ptr ptr BYTE, rgcbToBeHashed: ptr DWORD, pbComputedHash: ptr BYTE, pcbComputedHash: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSignMessageWithKey*(pSignPara: PCRYPT_KEY_SIGN_MESSAGE_PARA, pbToBeSigned: ptr BYTE, cbToBeSigned: DWORD, pbSignedBlob: ptr BYTE, pcbSignedBlob: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptVerifyMessageSignatureWithKey*(pVerifyPara: PCRYPT_KEY_VERIFY_MESSAGE_PARA, pPublicKeyInfo: PCERT_PUBLIC_KEY_INFO, pbSignedBlob: ptr BYTE, cbSignedBlob: DWORD, pbDecoded: ptr BYTE, pcbDecoded: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertOpenSystemStoreA*(hProv: HCRYPTPROV_LEGACY, szSubsystemProtocol: LPCSTR): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertOpenSystemStoreW*(hProv: HCRYPTPROV_LEGACY, szSubsystemProtocol: LPCWSTR): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddEncodedCertificateToSystemStoreA*(szCertStoreName: LPCSTR, pbCertEncoded: ptr BYTE, cbCertEncoded: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddEncodedCertificateToSystemStoreW*(szCertStoreName: LPCWSTR, pbCertEncoded: ptr BYTE, cbCertEncoded: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc FindCertsByIssuer*(pCertChains: PCERT_CHAIN, pcbCertChains: ptr DWORD, pcCertChains: ptr DWORD, pbEncodedIssuerName: ptr BYTE, cbEncodedIssuerName: DWORD, pwszPurpose: LPCWSTR, dwKeySpec: DWORD): HRESULT {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc CryptQueryObject*(dwObjectType: DWORD, pvObject: pointer, dwExpectedContentTypeFlags: DWORD, dwExpectedFormatTypeFlags: DWORD, dwFlags: DWORD, pdwMsgAndCertEncodingType: ptr DWORD, pdwContentType: ptr DWORD, pdwFormatType: ptr DWORD, phCertStore: ptr HCERTSTORE, phMsg: ptr HCRYPTMSG, ppvContext: ptr pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMemAlloc*(cbSize: ULONG): LPVOID {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptMemRealloc*(pv: LPVOID, cbSize: ULONG): LPVOID {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptAcquireContextA*(
+  phProv: ptr HCRYPTPROV,
+  szContainer: LPCSTR,
+  szProvider: LPCSTR,
+  dwProvType: DWORD,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptAcquireContextW*(
+  phProv: ptr HCRYPTPROV,
+  szContainer: LPCWSTR,
+  szProvider: LPCWSTR,
+  dwProvType: DWORD,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptReleaseContext*(
+  hProv: HCRYPTPROV, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptGenKey*(
+  hProv: HCRYPTPROV, Algid: ALG_ID, dwFlags: DWORD, phKey: ptr HCRYPTKEY
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptDeriveKey*(
+  hProv: HCRYPTPROV,
+  Algid: ALG_ID,
+  hBaseData: HCRYPTHASH,
+  dwFlags: DWORD,
+  phKey: ptr HCRYPTKEY,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptDestroyKey*(
+  hKey: HCRYPTKEY
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptSetKeyParam*(
+  hKey: HCRYPTKEY, dwParam: DWORD, pbData: ptr BYTE, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptGetKeyParam*(
+  hKey: HCRYPTKEY,
+  dwParam: DWORD,
+  pbData: ptr BYTE,
+  pdwDataLen: ptr DWORD,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptSetHashParam*(
+  hHash: HCRYPTHASH, dwParam: DWORD, pbData: ptr BYTE, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptGetHashParam*(
+  hHash: HCRYPTHASH,
+  dwParam: DWORD,
+  pbData: ptr BYTE,
+  pdwDataLen: ptr DWORD,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptSetProvParam*(
+  hProv: HCRYPTPROV, dwParam: DWORD, pbData: ptr BYTE, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptGetProvParam*(
+  hProv: HCRYPTPROV,
+  dwParam: DWORD,
+  pbData: ptr BYTE,
+  pdwDataLen: ptr DWORD,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptGenRandom*(
+  hProv: HCRYPTPROV, dwLen: DWORD, pbBuffer: ptr BYTE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptGetUserKey*(
+  hProv: HCRYPTPROV, dwKeySpec: DWORD, phUserKey: ptr HCRYPTKEY
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptExportKey*(
+  hKey: HCRYPTKEY,
+  hExpKey: HCRYPTKEY,
+  dwBlobType: DWORD,
+  dwFlags: DWORD,
+  pbData: ptr BYTE,
+  pdwDataLen: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptImportKey*(
+  hProv: HCRYPTPROV,
+  pbData: ptr BYTE,
+  dwDataLen: DWORD,
+  hPubKey: HCRYPTKEY,
+  dwFlags: DWORD,
+  phKey: ptr HCRYPTKEY,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptEncrypt*(
+  hKey: HCRYPTKEY,
+  hHash: HCRYPTHASH,
+  Final: WINBOOL,
+  dwFlags: DWORD,
+  pbData: ptr BYTE,
+  pdwDataLen: ptr DWORD,
+  dwBufLen: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptDecrypt*(
+  hKey: HCRYPTKEY,
+  hHash: HCRYPTHASH,
+  Final: WINBOOL,
+  dwFlags: DWORD,
+  pbData: ptr BYTE,
+  pdwDataLen: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptCreateHash*(
+  hProv: HCRYPTPROV,
+  Algid: ALG_ID,
+  hKey: HCRYPTKEY,
+  dwFlags: DWORD,
+  phHash: ptr HCRYPTHASH,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptHashData*(
+  hHash: HCRYPTHASH, pbData: ptr BYTE, dwDataLen: DWORD, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptHashSessionKey*(
+  hHash: HCRYPTHASH, hKey: HCRYPTKEY, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptDestroyHash*(
+  hHash: HCRYPTHASH
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptSignHashA*(
+  hHash: HCRYPTHASH,
+  dwKeySpec: DWORD,
+  szDescription: LPCSTR,
+  dwFlags: DWORD,
+  pbSignature: ptr BYTE,
+  pdwSigLen: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptSignHashW*(
+  hHash: HCRYPTHASH,
+  dwKeySpec: DWORD,
+  szDescription: LPCWSTR,
+  dwFlags: DWORD,
+  pbSignature: ptr BYTE,
+  pdwSigLen: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptVerifySignatureA*(
+  hHash: HCRYPTHASH,
+  pbSignature: ptr BYTE,
+  dwSigLen: DWORD,
+  hPubKey: HCRYPTKEY,
+  szDescription: LPCSTR,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptVerifySignatureW*(
+  hHash: HCRYPTHASH,
+  pbSignature: ptr BYTE,
+  dwSigLen: DWORD,
+  hPubKey: HCRYPTKEY,
+  szDescription: LPCWSTR,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptSetProviderA*(
+  pszProvName: LPCSTR, dwProvType: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptSetProviderW*(
+  pszProvName: LPCWSTR, dwProvType: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptSetProviderExA*(
+  pszProvName: LPCSTR, dwProvType: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptSetProviderExW*(
+  pszProvName: LPCWSTR, dwProvType: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptGetDefaultProviderA*(
+  dwProvType: DWORD,
+  pdwReserved: ptr DWORD,
+  dwFlags: DWORD,
+  pszProvName: LPSTR,
+  pcbProvName: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptGetDefaultProviderW*(
+  dwProvType: DWORD,
+  pdwReserved: ptr DWORD,
+  dwFlags: DWORD,
+  pszProvName: LPWSTR,
+  pcbProvName: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptEnumProviderTypesA*(
+  dwIndex: DWORD,
+  pdwReserved: ptr DWORD,
+  dwFlags: DWORD,
+  pdwProvType: ptr DWORD,
+  szTypeName: LPSTR,
+  pcbTypeName: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptEnumProviderTypesW*(
+  dwIndex: DWORD,
+  pdwReserved: ptr DWORD,
+  dwFlags: DWORD,
+  pdwProvType: ptr DWORD,
+  szTypeName: LPWSTR,
+  pcbTypeName: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptEnumProvidersA*(
+  dwIndex: DWORD,
+  pdwReserved: ptr DWORD,
+  dwFlags: DWORD,
+  pdwProvType: ptr DWORD,
+  szProvName: LPSTR,
+  pcbProvName: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptEnumProvidersW*(
+  dwIndex: DWORD,
+  pdwReserved: ptr DWORD,
+  dwFlags: DWORD,
+  pdwProvType: ptr DWORD,
+  szProvName: LPWSTR,
+  pcbProvName: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptContextAddRef*(
+  hProv: HCRYPTPROV, pdwReserved: ptr DWORD, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptDuplicateKey*(
+  hKey: HCRYPTKEY, pdwReserved: ptr DWORD, dwFlags: DWORD, phKey: ptr HCRYPTKEY
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CryptDuplicateHash*(
+  hHash: HCRYPTHASH, pdwReserved: ptr DWORD, dwFlags: DWORD, phHash: ptr HCRYPTHASH
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc BCryptOpenAlgorithmProvider*(
+  phAlgorithm: ptr BCRYPT_ALG_HANDLE,
+  pszAlgId: LPCWSTR,
+  pszImplementation: LPCWSTR,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptEnumAlgorithms*(
+  dwAlgOperations: ULONG,
+  pAlgCount: ptr ULONG,
+  ppAlgList: ptr ptr BCRYPT_ALGORITHM_IDENTIFIER,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptEnumProviders*(
+  pszAlgId: LPCWSTR,
+  pImplCount: ptr ULONG,
+  ppImplList: ptr ptr BCRYPT_PROVIDER_NAME,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptGetProperty*(
+  hObject: BCRYPT_HANDLE,
+  pszProperty: LPCWSTR,
+  pbOutput: PUCHAR,
+  cbOutput: ULONG,
+  pcbResult: ptr ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptSetProperty*(
+  hObject: BCRYPT_HANDLE,
+  pszProperty: LPCWSTR,
+  pbInput: PUCHAR,
+  cbInput: ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptCloseAlgorithmProvider*(
+  hAlgorithm: BCRYPT_ALG_HANDLE, dwFlags: ULONG
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptFreeBuffer*(
+  pvBuffer: PVOID
+): VOID {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptGenerateSymmetricKey*(
+  hAlgorithm: BCRYPT_ALG_HANDLE,
+  phKey: ptr BCRYPT_KEY_HANDLE,
+  pbKeyObject: PUCHAR,
+  cbKeyObject: ULONG,
+  pbSecret: PUCHAR,
+  cbSecret: ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptGenerateKeyPair*(
+  hAlgorithm: BCRYPT_ALG_HANDLE,
+  phKey: ptr BCRYPT_KEY_HANDLE,
+  dwLength: ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptEncrypt*(
+  hKey: BCRYPT_KEY_HANDLE,
+  pbInput: PUCHAR,
+  cbInput: ULONG,
+  pPaddingInfo: pointer,
+  pbIV: PUCHAR,
+  cbIV: ULONG,
+  pbOutput: PUCHAR,
+  cbOutput: ULONG,
+  pcbResult: ptr ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptDecrypt*(
+  hKey: BCRYPT_KEY_HANDLE,
+  pbInput: PUCHAR,
+  cbInput: ULONG,
+  pPaddingInfo: pointer,
+  pbIV: PUCHAR,
+  cbIV: ULONG,
+  pbOutput: PUCHAR,
+  cbOutput: ULONG,
+  pcbResult: ptr ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptExportKey*(
+  hKey: BCRYPT_KEY_HANDLE,
+  hExportKey: BCRYPT_KEY_HANDLE,
+  pszBlobType: LPCWSTR,
+  pbOutput: PUCHAR,
+  cbOutput: ULONG,
+  pcbResult: ptr ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptImportKey*(
+  hAlgorithm: BCRYPT_ALG_HANDLE,
+  hImportKey: BCRYPT_KEY_HANDLE,
+  pszBlobType: LPCWSTR,
+  phKey: ptr BCRYPT_KEY_HANDLE,
+  pbKeyObject: PUCHAR,
+  cbKeyObject: ULONG,
+  pbInput: PUCHAR,
+  cbInput: ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptImportKeyPair*(
+  hAlgorithm: BCRYPT_ALG_HANDLE,
+  hImportKey: BCRYPT_KEY_HANDLE,
+  pszBlobType: LPCWSTR,
+  phKey: ptr BCRYPT_KEY_HANDLE,
+  pbInput: PUCHAR,
+  cbInput: ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptDuplicateKey*(
+  hKey: BCRYPT_KEY_HANDLE,
+  phNewKey: ptr BCRYPT_KEY_HANDLE,
+  pbKeyObject: PUCHAR,
+  cbKeyObject: ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptFinalizeKeyPair*(
+  hKey: BCRYPT_KEY_HANDLE, dwFlags: ULONG
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptDestroyKey*(
+  hKey: BCRYPT_KEY_HANDLE
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptDestroySecret*(
+  hSecret: BCRYPT_SECRET_HANDLE
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptSignHash*(
+  hKey: BCRYPT_KEY_HANDLE,
+  pPaddingInfo: pointer,
+  pbInput: PUCHAR,
+  cbInput: ULONG,
+  pbOutput: PUCHAR,
+  cbOutput: ULONG,
+  pcbResult: ptr ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptVerifySignature*(
+  hKey: BCRYPT_KEY_HANDLE,
+  pPaddingInfo: pointer,
+  pbHash: PUCHAR,
+  cbHash: ULONG,
+  pbSignature: PUCHAR,
+  cbSignature: ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptSecretAgreement*(
+  hPrivKey: BCRYPT_KEY_HANDLE,
+  hPubKey: BCRYPT_KEY_HANDLE,
+  phAgreedSecret: ptr BCRYPT_SECRET_HANDLE,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptDeriveKey*(
+  hSharedSecret: BCRYPT_SECRET_HANDLE,
+  pwszKDF: LPCWSTR,
+  pParameterList: ptr BCryptBufferDesc,
+  pbDerivedKey: PUCHAR,
+  cbDerivedKey: ULONG,
+  pcbResult: ptr ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptKeyDerivation*(
+  hKey: BCRYPT_KEY_HANDLE,
+  pParameterList: ptr BCryptBufferDesc,
+  pbDerivedKey: PUCHAR,
+  cbDerivedKey: ULONG,
+  pcbResult: ptr ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptCreateHash*(
+  hAlgorithm: BCRYPT_ALG_HANDLE,
+  phHash: ptr BCRYPT_HASH_HANDLE,
+  pbHashObject: PUCHAR,
+  cbHashObject: ULONG,
+  pbSecret: PUCHAR,
+  cbSecret: ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptHashData*(
+  hHash: BCRYPT_HASH_HANDLE, pbInput: PUCHAR, cbInput: ULONG, dwFlags: ULONG
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptFinishHash*(
+  hHash: BCRYPT_HASH_HANDLE, pbOutput: PUCHAR, cbOutput: ULONG, dwFlags: ULONG
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptDuplicateHash*(
+  hHash: BCRYPT_HASH_HANDLE,
+  phNewHash: ptr BCRYPT_HASH_HANDLE,
+  pbHashObject: PUCHAR,
+  cbHashObject: ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptDestroyHash*(
+  hHash: BCRYPT_HASH_HANDLE
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptGenRandom*(
+  hAlgorithm: BCRYPT_ALG_HANDLE, pbBuffer: PUCHAR, cbBuffer: ULONG, dwFlags: ULONG
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptDeriveKeyCapi*(
+  hHash: BCRYPT_HASH_HANDLE,
+  hTargetAlg: BCRYPT_ALG_HANDLE,
+  pbDerivedKey: PUCHAR,
+  cbDerivedKey: ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptDeriveKeyPBKDF2*(
+  hPrf: BCRYPT_ALG_HANDLE,
+  pbPassword: PUCHAR,
+  cbPassword: ULONG,
+  pbSalt: PUCHAR,
+  cbSalt: ULONG,
+  cIterations: ULONGLONG,
+  pbDerivedKey: PUCHAR,
+  cbDerivedKey: ULONG,
+  dwFlags: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptResolveProviders*(
+  pszContext: LPCWSTR,
+  dwInterface: ULONG,
+  pszFunction: LPCWSTR,
+  pszProvider: LPCWSTR,
+  dwMode: ULONG,
+  dwFlags: ULONG,
+  pcbBuffer: ptr ULONG,
+  ppBuffer: ptr PCRYPT_PROVIDER_REFS,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptGetFipsAlgorithmMode*(
+  pfEnabled: ptr BOOLEAN
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptRegisterConfigChangeNotify*(
+  pEvent: PRKEVENT
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptUnregisterConfigChangeNotify*(
+  pEvent: PRKEVENT
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptUnregisterConfigChangeNotify*(
+  hEvent: HANDLE
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptQueryProviderRegistration*(
+  pszProvider: LPCWSTR,
+  dwMode: ULONG,
+  dwInterface: ULONG,
+  pcbBuffer: ptr ULONG,
+  ppBuffer: ptr PCRYPT_PROVIDER_REG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptEnumRegisteredProviders*(
+  pcbBuffer: ptr ULONG, ppBuffer: ptr PCRYPT_PROVIDERS
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptCreateContext*(
+  dwTable: ULONG, pszContext: LPCWSTR, pConfig: PCRYPT_CONTEXT_CONFIG
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptDeleteContext*(
+  dwTable: ULONG, pszContext: LPCWSTR
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptEnumContexts*(
+  dwTable: ULONG, pcbBuffer: ptr ULONG, ppBuffer: ptr PCRYPT_CONTEXTS
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptConfigureContext*(
+  dwTable: ULONG, pszContext: LPCWSTR, pConfig: PCRYPT_CONTEXT_CONFIG
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptQueryContextConfiguration*(
+  dwTable: ULONG,
+  pszContext: LPCWSTR,
+  pcbBuffer: ptr ULONG,
+  ppBuffer: ptr PCRYPT_CONTEXT_CONFIG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptAddContextFunction*(
+  dwTable: ULONG,
+  pszContext: LPCWSTR,
+  dwInterface: ULONG,
+  pszFunction: LPCWSTR,
+  dwPosition: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptRemoveContextFunction*(
+  dwTable: ULONG, pszContext: LPCWSTR, dwInterface: ULONG, pszFunction: LPCWSTR
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptEnumContextFunctions*(
+  dwTable: ULONG,
+  pszContext: LPCWSTR,
+  dwInterface: ULONG,
+  pcbBuffer: ptr ULONG,
+  ppBuffer: ptr PCRYPT_CONTEXT_FUNCTIONS,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptConfigureContextFunction*(
+  dwTable: ULONG,
+  pszContext: LPCWSTR,
+  dwInterface: ULONG,
+  pszFunction: LPCWSTR,
+  pConfig: PCRYPT_CONTEXT_FUNCTION_CONFIG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptQueryContextFunctionConfiguration*(
+  dwTable: ULONG,
+  pszContext: LPCWSTR,
+  dwInterface: ULONG,
+  pszFunction: LPCWSTR,
+  pcbBuffer: ptr ULONG,
+  ppBuffer: ptr PCRYPT_CONTEXT_FUNCTION_CONFIG,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptEnumContextFunctionProviders*(
+  dwTable: ULONG,
+  pszContext: LPCWSTR,
+  dwInterface: ULONG,
+  pszFunction: LPCWSTR,
+  pcbBuffer: ptr ULONG,
+  ppBuffer: ptr PCRYPT_CONTEXT_FUNCTION_PROVIDERS,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptSetContextFunctionProperty*(
+  dwTable: ULONG,
+  pszContext: LPCWSTR,
+  dwInterface: ULONG,
+  pszFunction: LPCWSTR,
+  pszProperty: LPCWSTR,
+  cbValue: ULONG,
+  pbValue: PUCHAR,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptQueryContextFunctionProperty*(
+  dwTable: ULONG,
+  pszContext: LPCWSTR,
+  dwInterface: ULONG,
+  pszFunction: LPCWSTR,
+  pszProperty: LPCWSTR,
+  pcbValue: ptr ULONG,
+  ppbValue: ptr PUCHAR,
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc BCryptRegisterConfigChangeNotify*(
+  phEvent: ptr HANDLE
+): NTSTATUS {.winapi, stdcall, dynlib: "bcrypt", importc.}
+
+proc NCryptOpenStorageProvider*(
+  phProvider: ptr NCRYPT_PROV_HANDLE, pszProviderName: LPCWSTR, dwFlags: DWORD
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptEnumAlgorithms*(
+  hProvider: NCRYPT_PROV_HANDLE,
+  dwAlgOperations: DWORD,
+  pdwAlgCount: ptr DWORD,
+  ppAlgList: ptr ptr NCryptAlgorithmName,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptIsAlgSupported*(
+  hProvider: NCRYPT_PROV_HANDLE, pszAlgId: LPCWSTR, dwFlags: DWORD
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptEnumKeys*(
+  hProvider: NCRYPT_PROV_HANDLE,
+  pszScope: LPCWSTR,
+  ppKeyName: ptr ptr NCryptKeyName,
+  ppEnumState: ptr PVOID,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptEnumStorageProviders*(
+  pdwProviderCount: ptr DWORD,
+  ppProviderList: ptr ptr NCryptProviderName,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptFreeBuffer*(
+  pvInput: PVOID
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptOpenKey*(
+  hProvider: NCRYPT_PROV_HANDLE,
+  phKey: ptr NCRYPT_KEY_HANDLE,
+  pszKeyName: LPCWSTR,
+  dwLegacyKeySpec: DWORD,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptCreatePersistedKey*(
+  hProvider: NCRYPT_PROV_HANDLE,
+  phKey: ptr NCRYPT_KEY_HANDLE,
+  pszAlgId: LPCWSTR,
+  pszKeyName: LPCWSTR,
+  dwLegacyKeySpec: DWORD,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptGetProperty*(
+  hObject: NCRYPT_HANDLE,
+  pszProperty: LPCWSTR,
+  pbOutput: PBYTE,
+  cbOutput: DWORD,
+  pcbResult: ptr DWORD,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptSetProperty*(
+  hObject: NCRYPT_HANDLE,
+  pszProperty: LPCWSTR,
+  pbInput: PBYTE,
+  cbInput: DWORD,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptFinalizeKey*(
+  hKey: NCRYPT_KEY_HANDLE, dwFlags: DWORD
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptEncrypt*(
+  hKey: NCRYPT_KEY_HANDLE,
+  pbInput: PBYTE,
+  cbInput: DWORD,
+  pPaddingInfo: pointer,
+  pbOutput: PBYTE,
+  cbOutput: DWORD,
+  pcbResult: ptr DWORD,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptDecrypt*(
+  hKey: NCRYPT_KEY_HANDLE,
+  pbInput: PBYTE,
+  cbInput: DWORD,
+  pPaddingInfo: pointer,
+  pbOutput: PBYTE,
+  cbOutput: DWORD,
+  pcbResult: ptr DWORD,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptImportKey*(
+  hProvider: NCRYPT_PROV_HANDLE,
+  hImportKey: NCRYPT_KEY_HANDLE,
+  pszBlobType: LPCWSTR,
+  pParameterList: ptr NCryptBufferDesc,
+  phKey: ptr NCRYPT_KEY_HANDLE,
+  pbData: PBYTE,
+  cbData: DWORD,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptExportKey*(
+  hKey: NCRYPT_KEY_HANDLE,
+  hExportKey: NCRYPT_KEY_HANDLE,
+  pszBlobType: LPCWSTR,
+  pParameterList: ptr NCryptBufferDesc,
+  pbOutput: PBYTE,
+  cbOutput: DWORD,
+  pcbResult: ptr DWORD,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptSignHash*(
+  hKey: NCRYPT_KEY_HANDLE,
+  pPaddingInfo: pointer,
+  pbHashValue: PBYTE,
+  cbHashValue: DWORD,
+  pbSignature: PBYTE,
+  cbSignature: DWORD,
+  pcbResult: ptr DWORD,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptVerifySignature*(
+  hKey: NCRYPT_KEY_HANDLE,
+  pPaddingInfo: pointer,
+  pbHashValue: PBYTE,
+  cbHashValue: DWORD,
+  pbSignature: PBYTE,
+  cbSignature: DWORD,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptDeleteKey*(
+  hKey: NCRYPT_KEY_HANDLE, dwFlags: DWORD
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptFreeObject*(
+  hObject: NCRYPT_HANDLE
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptIsKeyHandle*(
+  hKey: NCRYPT_KEY_HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptTranslateHandle*(
+  phProvider: ptr NCRYPT_PROV_HANDLE,
+  phKey: ptr NCRYPT_KEY_HANDLE,
+  hLegacyProv: HCRYPTPROV,
+  hLegacyKey: HCRYPTKEY,
+  dwLegacyKeySpec: DWORD,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptNotifyChangeKey*(
+  hProvider: NCRYPT_PROV_HANDLE, phEvent: ptr HANDLE, dwFlags: DWORD
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptSecretAgreement*(
+  hPrivKey: NCRYPT_KEY_HANDLE,
+  hPubKey: NCRYPT_KEY_HANDLE,
+  phAgreedSecret: ptr NCRYPT_SECRET_HANDLE,
+  dwFlags: DWORD,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptDeriveKey*(
+  hSharedSecret: NCRYPT_SECRET_HANDLE,
+  pwszKDF: LPCWSTR,
+  pParameterList: ptr NCryptBufferDesc,
+  pbDerivedKey: PBYTE,
+  cbDerivedKey: DWORD,
+  pcbResult: ptr DWORD,
+  dwFlags: ULONG,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc NCryptKeyDerivation*(
+  hKey: NCRYPT_KEY_HANDLE,
+  pParameterList: ptr NCryptBufferDesc,
+  pbDerivedKey: PUCHAR,
+  cbDerivedKey: DWORD,
+  pcbResult: ptr DWORD,
+  dwFlags: ULONG,
+): SECURITY_STATUS {.winapi, stdcall, dynlib: "ncrypt", importc.}
+
+proc CryptFormatObject*(
+  dwCertEncodingType: DWORD,
+  dwFormatType: DWORD,
+  dwFormatStrType: DWORD,
+  pFormatStruct: pointer,
+  lpszStructType: LPCSTR,
+  pbEncoded: ptr BYTE,
+  cbEncoded: DWORD,
+  pbFormat: pointer,
+  pcbFormat: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptEncodeObjectEx*(
+  dwCertEncodingType: DWORD,
+  lpszStructType: LPCSTR,
+  pvStructInfo: pointer,
+  dwFlags: DWORD,
+  pEncodePara: PCRYPT_ENCODE_PARA,
+  pvEncoded: pointer,
+  pcbEncoded: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptEncodeObject*(
+  dwCertEncodingType: DWORD,
+  lpszStructType: LPCSTR,
+  pvStructInfo: pointer,
+  pbEncoded: ptr BYTE,
+  pcbEncoded: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptDecodeObjectEx*(
+  dwCertEncodingType: DWORD,
+  lpszStructType: LPCSTR,
+  pbEncoded: ptr BYTE,
+  cbEncoded: DWORD,
+  dwFlags: DWORD,
+  pDecodePara: PCRYPT_DECODE_PARA,
+  pvStructInfo: pointer,
+  pcbStructInfo: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptDecodeObject*(
+  dwCertEncodingType: DWORD,
+  lpszStructType: LPCSTR,
+  pbEncoded: ptr BYTE,
+  cbEncoded: DWORD,
+  dwFlags: DWORD,
+  pvStructInfo: pointer,
+  pcbStructInfo: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptInstallOIDFunctionAddress*(
+  hModule: HMODULE,
+  dwEncodingType: DWORD,
+  pszFuncName: LPCSTR,
+  cFuncEntry: DWORD,
+  rgFuncEntry: ptr CRYPT_OID_FUNC_ENTRY,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptInitOIDFunctionSet*(
+  pszFuncName: LPCSTR, dwFlags: DWORD
+): HCRYPTOIDFUNCSET {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptGetOIDFunctionAddress*(
+  hFuncSet: HCRYPTOIDFUNCSET,
+  dwEncodingType: DWORD,
+  pszOID: LPCSTR,
+  dwFlags: DWORD,
+  ppvFuncAddr: ptr pointer,
+  phFuncAddr: ptr HCRYPTOIDFUNCADDR,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptGetDefaultOIDDllList*(
+  hFuncSet: HCRYPTOIDFUNCSET,
+  dwEncodingType: DWORD,
+  pwszDllList: ptr WCHAR,
+  pcchDllList: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptGetDefaultOIDFunctionAddress*(
+  hFuncSet: HCRYPTOIDFUNCSET,
+  dwEncodingType: DWORD,
+  pwszDll: LPCWSTR,
+  dwFlags: DWORD,
+  ppvFuncAddr: ptr pointer,
+  phFuncAddr: ptr HCRYPTOIDFUNCADDR,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptFreeOIDFunctionAddress*(
+  hFuncAddr: HCRYPTOIDFUNCADDR, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptRegisterOIDFunction*(
+  dwEncodingType: DWORD,
+  pszFuncName: LPCSTR,
+  pszOID: LPCSTR,
+  pwszDll: LPCWSTR,
+  pszOverrideFuncName: LPCSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptUnregisterOIDFunction*(
+  dwEncodingType: DWORD, pszFuncName: LPCSTR, pszOID: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptRegisterDefaultOIDFunction*(
+  dwEncodingType: DWORD, pszFuncName: LPCSTR, dwIndex: DWORD, pwszDll: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptUnregisterDefaultOIDFunction*(
+  dwEncodingType: DWORD, pszFuncName: LPCSTR, pwszDll: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSetOIDFunctionValue*(
+  dwEncodingType: DWORD,
+  pszFuncName: LPCSTR,
+  pszOID: LPCSTR,
+  pwszValueName: LPCWSTR,
+  dwValueType: DWORD,
+  pbValueData: ptr BYTE,
+  cbValueData: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptGetOIDFunctionValue*(
+  dwEncodingType: DWORD,
+  pszFuncName: LPCSTR,
+  pszOID: LPCSTR,
+  pwszValueName: LPCWSTR,
+  pdwValueType: ptr DWORD,
+  pbValueData: ptr BYTE,
+  pcbValueData: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptEnumOIDFunction*(
+  dwEncodingType: DWORD,
+  pszFuncName: LPCSTR,
+  pszOID: LPCSTR,
+  dwFlags: DWORD,
+  pvArg: pointer,
+  pfnEnumOIDFunc: PFN_CRYPT_ENUM_OID_FUNC,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptFindOIDInfo*(
+  dwKeyType: DWORD, pvKey: pointer, dwGroupId: DWORD
+): PCCRYPT_OID_INFO {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptRegisterOIDInfo*(
+  pInfo: PCCRYPT_OID_INFO, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptUnregisterOIDInfo*(
+  pInfo: PCCRYPT_OID_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptEnumOIDInfo*(
+  dwGroupId: DWORD,
+  dwFlags: DWORD,
+  pvArg: pointer,
+  pfnEnumOIDInfo: PFN_CRYPT_ENUM_OID_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptFindLocalizedName*(
+  pwszCryptName: LPCWSTR
+): LPCWSTR {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgOpenToEncode*(
+  dwMsgEncodingType: DWORD,
+  dwFlags: DWORD,
+  dwMsgType: DWORD,
+  pvMsgEncodeInfo: pointer,
+  pszInnerContentObjID: LPSTR,
+  pStreamInfo: PCMSG_STREAM_INFO,
+): HCRYPTMSG {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgCalculateEncodedLength*(
+  dwMsgEncodingType: DWORD,
+  dwFlags: DWORD,
+  dwMsgType: DWORD,
+  pvMsgEncodeInfo: pointer,
+  pszInnerContentObjID: LPSTR,
+  cbData: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgOpenToDecode*(
+  dwMsgEncodingType: DWORD,
+  dwFlags: DWORD,
+  dwMsgType: DWORD,
+  hCryptProv: HCRYPTPROV_LEGACY,
+  pRecipientInfo: PCERT_INFO,
+  pStreamInfo: PCMSG_STREAM_INFO,
+): HCRYPTMSG {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgDuplicate*(
+  hCryptMsg: HCRYPTMSG
+): HCRYPTMSG {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgClose*(
+  hCryptMsg: HCRYPTMSG
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgUpdate*(
+  hCryptMsg: HCRYPTMSG, pbData: ptr BYTE, cbData: DWORD, fFinal: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgGetParam*(
+  hCryptMsg: HCRYPTMSG,
+  dwParamType: DWORD,
+  dwIndex: DWORD,
+  pvData: pointer,
+  pcbData: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgControl*(
+  hCryptMsg: HCRYPTMSG, dwFlags: DWORD, dwCtrlType: DWORD, pvCtrlPara: pointer
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgVerifyCountersignatureEncoded*(
+  hCryptProv: HCRYPTPROV_LEGACY,
+  dwEncodingType: DWORD,
+  pbSignerInfo: PBYTE,
+  cbSignerInfo: DWORD,
+  pbSignerInfoCountersignature: PBYTE,
+  cbSignerInfoCountersignature: DWORD,
+  pciCountersigner: PCERT_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgVerifyCountersignatureEncodedEx*(
+  hCryptProv: HCRYPTPROV_LEGACY,
+  dwEncodingType: DWORD,
+  pbSignerInfo: PBYTE,
+  cbSignerInfo: DWORD,
+  pbSignerInfoCountersignature: PBYTE,
+  cbSignerInfoCountersignature: DWORD,
+  dwSignerType: DWORD,
+  pvSigner: pointer,
+  dwFlags: DWORD,
+  pvExtra: pointer,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgCountersign*(
+  hCryptMsg: HCRYPTMSG,
+  dwIndex: DWORD,
+  cCountersigners: DWORD,
+  rgCountersigners: PCMSG_SIGNER_ENCODE_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgCountersignEncoded*(
+  dwEncodingType: DWORD,
+  pbSignerInfo: PBYTE,
+  cbSignerInfo: DWORD,
+  cCountersigners: DWORD,
+  rgCountersigners: PCMSG_SIGNER_ENCODE_INFO,
+  pbCountersignature: PBYTE,
+  pcbCountersignature: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertOpenStore*(
+  lpszStoreProvider: LPCSTR,
+  dwEncodingType: DWORD,
+  hCryptProv: HCRYPTPROV_LEGACY,
+  dwFlags: DWORD,
+  pvPara: pointer,
+): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertDuplicateStore*(
+  hCertStore: HCERTSTORE
+): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertSaveStore*(
+  hCertStore: HCERTSTORE,
+  dwEncodingType: DWORD,
+  dwSaveAs: DWORD,
+  dwSaveTo: DWORD,
+  pvSaveToPara: pointer,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertCloseStore*(
+  hCertStore: HCERTSTORE, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetSubjectCertificateFromStore*(
+  hCertStore: HCERTSTORE, dwCertEncodingType: DWORD, pCertId: PCERT_INFO
+): PCCERT_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertEnumCertificatesInStore*(
+  hCertStore: HCERTSTORE, pPrevCertContext: PCCERT_CONTEXT
+): PCCERT_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFindCertificateInStore*(
+  hCertStore: HCERTSTORE,
+  dwCertEncodingType: DWORD,
+  dwFindFlags: DWORD,
+  dwFindType: DWORD,
+  pvFindPara: pointer,
+  pPrevCertContext: PCCERT_CONTEXT,
+): PCCERT_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetIssuerCertificateFromStore*(
+  hCertStore: HCERTSTORE,
+  pSubjectContext: PCCERT_CONTEXT,
+  pPrevIssuerContext: PCCERT_CONTEXT,
+  pdwFlags: ptr DWORD,
+): PCCERT_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertVerifySubjectCertificateContext*(
+  pSubject: PCCERT_CONTEXT, pIssuer: PCCERT_CONTEXT, pdwFlags: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertDuplicateCertificateContext*(
+  pCertContext: PCCERT_CONTEXT
+): PCCERT_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertCreateCertificateContext*(
+  dwCertEncodingType: DWORD, pbCertEncoded: ptr BYTE, cbCertEncoded: DWORD
+): PCCERT_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFreeCertificateContext*(
+  pCertContext: PCCERT_CONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertSetCertificateContextProperty*(
+  pCertContext: PCCERT_CONTEXT, dwPropId: DWORD, dwFlags: DWORD, pvData: pointer
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertEnumCRLsInStore*(
+  hCertStore: HCERTSTORE, pPrevCrlContext: PCCRL_CONTEXT
+): PCCRL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertDeleteCRLFromStore*(
+  pCrlContext: PCCRL_CONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertDuplicateCRLContext*(
+  pCrlContext: PCCRL_CONTEXT
+): PCCRL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFindCRLInStore*(
+  hCertStore: HCERTSTORE,
+  dwCertEncodingType: DWORD,
+  dwFindFlags: DWORD,
+  dwFindType: DWORD,
+  pvFindPara: pointer,
+  pPrevCrlContext: PCCRL_CONTEXT,
+): PCCRL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFreeCRLContext*(
+  pCrlContext: PCCRL_CONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetCertificateContextProperty*(
+  pCertContext: PCCERT_CONTEXT, dwPropId: DWORD, pvData: pointer, pcbData: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertEnumCertificateContextProperties*(
+  pCertContext: PCCERT_CONTEXT, dwPropId: DWORD
+): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertCreateCTLEntryFromCertificateContextProperties*(
+  pCertContext: PCCERT_CONTEXT,
+  cOptAttr: DWORD,
+  rgOptAttr: PCRYPT_ATTRIBUTE,
+  dwFlags: DWORD,
+  pvReserved: pointer,
+  pCtlEntry: PCTL_ENTRY,
+  pcbCtlEntry: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertSetCertificateContextPropertiesFromCTLEntry*(
+  pCertContext: PCCERT_CONTEXT, pCtlEntry: PCTL_ENTRY, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetCRLFromStore*(
+  hCertStore: HCERTSTORE,
+  pIssuerContext: PCCERT_CONTEXT,
+  pPrevCrlContext: PCCRL_CONTEXT,
+  pdwFlags: ptr DWORD,
+): PCCRL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertCreateCRLContext*(
+  dwCertEncodingType: DWORD, pbCrlEncoded: ptr BYTE, cbCrlEncoded: DWORD
+): PCCRL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertSetCRLContextProperty*(
+  pCrlContext: PCCRL_CONTEXT, dwPropId: DWORD, dwFlags: DWORD, pvData: pointer
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetCRLContextProperty*(
+  pCrlContext: PCCRL_CONTEXT, dwPropId: DWORD, pvData: pointer, pcbData: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertEnumCRLContextProperties*(
+  pCrlContext: PCCRL_CONTEXT, dwPropId: DWORD
+): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFindCertificateInCRL*(
+  pCert: PCCERT_CONTEXT,
+  pCrlContext: PCCRL_CONTEXT,
+  dwFlags: DWORD,
+  pvReserved: pointer,
+  ppCrlEntry: ptr PCRL_ENTRY,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertIsValidCRLForCertificate*(
+  pCert: PCCERT_CONTEXT, pCrl: PCCRL_CONTEXT, dwFlags: DWORD, pvReserved: pointer
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddEncodedCertificateToStore*(
+  hCertStore: HCERTSTORE,
+  dwCertEncodingType: DWORD,
+  pbCertEncoded: ptr BYTE,
+  cbCertEncoded: DWORD,
+  dwAddDisposition: DWORD,
+  ppCertContext: ptr PCCERT_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddCertificateContextToStore*(
+  hCertStore: HCERTSTORE,
+  pCertContext: PCCERT_CONTEXT,
+  dwAddDisposition: DWORD,
+  ppStoreContext: ptr PCCERT_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddSerializedElementToStore*(
+  hCertStore: HCERTSTORE,
+  pbElement: ptr BYTE,
+  cbElement: DWORD,
+  dwAddDisposition: DWORD,
+  dwFlags: DWORD,
+  dwContextTypeFlags: DWORD,
+  pdwContextType: ptr DWORD,
+  ppvContext: ptr pointer,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertDeleteCertificateFromStore*(
+  pCertContext: PCCERT_CONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddEncodedCRLToStore*(
+  hCertStore: HCERTSTORE,
+  dwCertEncodingType: DWORD,
+  pbCrlEncoded: ptr BYTE,
+  cbCrlEncoded: DWORD,
+  dwAddDisposition: DWORD,
+  ppCrlContext: ptr PCCRL_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddCRLContextToStore*(
+  hCertStore: HCERTSTORE,
+  pCrlContext: PCCRL_CONTEXT,
+  dwAddDisposition: DWORD,
+  ppStoreContext: ptr PCCRL_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertSerializeCertificateStoreElement*(
+  pCertContext: PCCERT_CONTEXT,
+  dwFlags: DWORD,
+  pbElement: ptr BYTE,
+  pcbElement: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertSerializeCRLStoreElement*(
+  pCrlContext: PCCRL_CONTEXT, dwFlags: DWORD, pbElement: ptr BYTE, pcbElement: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertDuplicateCTLContext*(
+  pCtlContext: PCCTL_CONTEXT
+): PCCTL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertCreateCTLContext*(
+  dwMsgAndCertEncodingType: DWORD, pbCtlEncoded: ptr BYTE, cbCtlEncoded: DWORD
+): PCCTL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFreeCTLContext*(
+  pCtlContext: PCCTL_CONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertSetCTLContextProperty*(
+  pCtlContext: PCCTL_CONTEXT, dwPropId: DWORD, dwFlags: DWORD, pvData: pointer
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetCTLContextProperty*(
+  pCtlContext: PCCTL_CONTEXT, dwPropId: DWORD, pvData: pointer, pcbData: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertEnumCTLContextProperties*(
+  pCtlContext: PCCTL_CONTEXT, dwPropId: DWORD
+): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertEnumCTLsInStore*(
+  hCertStore: HCERTSTORE, pPrevCtlContext: PCCTL_CONTEXT
+): PCCTL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFindSubjectInCTL*(
+  dwEncodingType: DWORD,
+  dwSubjectType: DWORD,
+  pvSubject: pointer,
+  pCtlContext: PCCTL_CONTEXT,
+  dwFlags: DWORD,
+): PCTL_ENTRY {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFindCTLInStore*(
+  hCertStore: HCERTSTORE,
+  dwMsgAndCertEncodingType: DWORD,
+  dwFindFlags: DWORD,
+  dwFindType: DWORD,
+  pvFindPara: pointer,
+  pPrevCtlContext: PCCTL_CONTEXT,
+): PCCTL_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddEncodedCTLToStore*(
+  hCertStore: HCERTSTORE,
+  dwMsgAndCertEncodingType: DWORD,
+  pbCtlEncoded: ptr BYTE,
+  cbCtlEncoded: DWORD,
+  dwAddDisposition: DWORD,
+  ppCtlContext: ptr PCCTL_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddCTLContextToStore*(
+  hCertStore: HCERTSTORE,
+  pCtlContext: PCCTL_CONTEXT,
+  dwAddDisposition: DWORD,
+  ppStoreContext: ptr PCCTL_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertSerializeCTLStoreElement*(
+  pCtlContext: PCCTL_CONTEXT, dwFlags: DWORD, pbElement: ptr BYTE, pcbElement: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertDeleteCTLFromStore*(
+  pCtlContext: PCCTL_CONTEXT
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddCertificateLinkToStore*(
+  hCertStore: HCERTSTORE,
+  pCertContext: PCCERT_CONTEXT,
+  dwAddDisposition: DWORD,
+  ppStoreContext: ptr PCCERT_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddCRLLinkToStore*(
+  hCertStore: HCERTSTORE,
+  pCrlContext: PCCRL_CONTEXT,
+  dwAddDisposition: DWORD,
+  ppStoreContext: ptr PCCRL_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddCTLLinkToStore*(
+  hCertStore: HCERTSTORE,
+  pCtlContext: PCCTL_CONTEXT,
+  dwAddDisposition: DWORD,
+  ppStoreContext: ptr PCCTL_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddStoreToCollection*(
+  hCollectionStore: HCERTSTORE,
+  hSiblingStore: HCERTSTORE,
+  dwUpdateFlags: DWORD,
+  dwPriority: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertRemoveStoreFromCollection*(
+  hCollectionStore: HCERTSTORE, hSiblingStore: HCERTSTORE
+): void {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertControlStore*(
+  hCertStore: HCERTSTORE, dwFlags: DWORD, dwCtrlType: DWORD, pvCtrlPara: pointer
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertSetStoreProperty*(
+  hCertStore: HCERTSTORE, dwPropId: DWORD, dwFlags: DWORD, pvData: pointer
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetStoreProperty*(
+  hCertStore: HCERTSTORE, dwPropId: DWORD, pvData: pointer, pcbData: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertRegisterSystemStore*(
+  pvSystemStore: pointer,
+  dwFlags: DWORD,
+  pStoreInfo: PCERT_SYSTEM_STORE_INFO,
+  pvReserved: pointer,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertRegisterPhysicalStore*(
+  pvSystemStore: pointer,
+  dwFlags: DWORD,
+  pwszStoreName: LPCWSTR,
+  pStoreInfo: PCERT_PHYSICAL_STORE_INFO,
+  pvReserved: pointer,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertUnregisterSystemStore*(
+  pvSystemStore: pointer, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertUnregisterPhysicalStore*(
+  pvSystemStore: pointer, dwFlags: DWORD, pwszStoreName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertEnumSystemStoreLocation*(
+  dwFlags: DWORD, pvArg: pointer, pfnEnum: PFN_CERT_ENUM_SYSTEM_STORE_LOCATION
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertEnumSystemStore*(
+  dwFlags: DWORD,
+  pvSystemStoreLocationPara: pointer,
+  pvArg: pointer,
+  pfnEnum: PFN_CERT_ENUM_SYSTEM_STORE,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertEnumPhysicalStore*(
+  pvSystemStore: pointer,
+  dwFlags: DWORD,
+  pvArg: pointer,
+  pfnEnum: PFN_CERT_ENUM_PHYSICAL_STORE,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetEnhancedKeyUsage*(
+  pCertContext: PCCERT_CONTEXT,
+  dwFlags: DWORD,
+  pUsage: PCERT_ENHKEY_USAGE,
+  pcbUsage: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertSetEnhancedKeyUsage*(
+  pCertContext: PCCERT_CONTEXT, pUsage: PCERT_ENHKEY_USAGE
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddEnhancedKeyUsageIdentifier*(
+  pCertContext: PCCERT_CONTEXT, pszUsageIdentifier: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertRemoveEnhancedKeyUsageIdentifier*(
+  pCertContext: PCCERT_CONTEXT, pszUsageIdentifier: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetValidUsages*(
+  cCerts: DWORD,
+  rghCerts: ptr PCCERT_CONTEXT,
+  cNumOIDs: ptr int32,
+  rghOIDs: ptr LPSTR,
+  pcbOIDs: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgGetAndVerifySigner*(
+  hCryptMsg: HCRYPTMSG,
+  cSignerStore: DWORD,
+  rghSignerStore: ptr HCERTSTORE,
+  dwFlags: DWORD,
+  ppSigner: ptr PCCERT_CONTEXT,
+  pdwSignerIndex: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgSignCTL*(
+  dwMsgEncodingType: DWORD,
+  pbCtlContent: ptr BYTE,
+  cbCtlContent: DWORD,
+  pSignInfo: PCMSG_SIGNED_ENCODE_INFO,
+  dwFlags: DWORD,
+  pbEncoded: ptr BYTE,
+  pcbEncoded: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMsgEncodeAndSignCTL*(
+  dwMsgEncodingType: DWORD,
+  pCtlInfo: PCTL_INFO,
+  pSignInfo: PCMSG_SIGNED_ENCODE_INFO,
+  dwFlags: DWORD,
+  pbEncoded: ptr BYTE,
+  pcbEncoded: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFindSubjectInSortedCTL*(
+  pSubjectIdentifier: PCRYPT_DATA_BLOB,
+  pCtlContext: PCCTL_CONTEXT,
+  dwFlags: DWORD,
+  pvReserved: pointer,
+  pEncodedAttributes: PCRYPT_DER_BLOB,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertEnumSubjectInSortedCTL*(
+  pCtlContext: PCCTL_CONTEXT,
+  ppvNextSubject: ptr pointer,
+  pSubjectIdentifier: PCRYPT_DER_BLOB,
+  pEncodedAttributes: PCRYPT_DER_BLOB,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertVerifyCTLUsage*(
+  dwEncodingType: DWORD,
+  dwSubjectType: DWORD,
+  pvSubject: pointer,
+  pSubjectUsage: PCTL_USAGE,
+  dwFlags: DWORD,
+  pVerifyUsagePara: PCTL_VERIFY_USAGE_PARA,
+  pVerifyUsageStatus: PCTL_VERIFY_USAGE_STATUS,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertVerifyRevocation*(
+  dwEncodingType: DWORD,
+  dwRevType: DWORD,
+  cContext: DWORD,
+  rgpvContext: ptr PVOID,
+  dwFlags: DWORD,
+  pRevPara: PCERT_REVOCATION_PARA,
+  pRevStatus: PCERT_REVOCATION_STATUS,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertCompareIntegerBlob*(
+  pInt1: PCRYPT_INTEGER_BLOB, pInt2: PCRYPT_INTEGER_BLOB
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertCompareCertificate*(
+  dwCertEncodingType: DWORD, pCertId1: PCERT_INFO, pCertId2: PCERT_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertCompareCertificateName*(
+  dwCertEncodingType: DWORD, pCertName1: PCERT_NAME_BLOB, pCertName2: PCERT_NAME_BLOB
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertIsRDNAttrsInCertificateName*(
+  dwCertEncodingType: DWORD, dwFlags: DWORD, pCertName: PCERT_NAME_BLOB, pRDN: PCERT_RDN
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertComparePublicKeyInfo*(
+  dwCertEncodingType: DWORD,
+  pPublicKey1: PCERT_PUBLIC_KEY_INFO,
+  pPublicKey2: PCERT_PUBLIC_KEY_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetPublicKeyLength*(
+  dwCertEncodingType: DWORD, pPublicKey: PCERT_PUBLIC_KEY_INFO
+): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptVerifyCertificateSignature*(
+  hCryptProv: HCRYPTPROV_LEGACY,
+  dwCertEncodingType: DWORD,
+  pbEncoded: ptr BYTE,
+  cbEncoded: DWORD,
+  pPublicKey: PCERT_PUBLIC_KEY_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptVerifyCertificateSignatureEx*(
+  hCryptProv: HCRYPTPROV_LEGACY,
+  dwCertEncodingType: DWORD,
+  dwSubjectType: DWORD,
+  pvSubject: pointer,
+  dwIssuerType: DWORD,
+  pvIssuer: pointer,
+  dwFlags: DWORD,
+  pvExtra: pointer,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertIsStrongHashToSign*(
+  pStrongSignPara: PCCERT_STRONG_SIGN_PARA,
+  pwszCNGHashAlgid: LPCWSTR,
+  pSigningCert: PCCERT_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptHashToBeSigned*(
+  hCryptProv: HCRYPTPROV_LEGACY,
+  dwCertEncodingType: DWORD,
+  pbEncoded: ptr BYTE,
+  cbEncoded: DWORD,
+  pbComputedHash: ptr BYTE,
+  pcbComputedHash: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptHashCertificate*(
+  hCryptProv: HCRYPTPROV_LEGACY,
+  Algid: ALG_ID,
+  dwFlags: DWORD,
+  pbEncoded: ptr BYTE,
+  cbEncoded: DWORD,
+  pbComputedHash: ptr BYTE,
+  pcbComputedHash: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptHashCertificate2*(
+  pwszCNGHashAlgid: LPCWSTR,
+  dwFlags: DWORD,
+  pvReserved: pointer,
+  pbEncoded: ptr BYTE,
+  cbEncoded: DWORD,
+  pbComputedHash: ptr BYTE,
+  pcbComputedHash: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSignCertificate*(
+  hCryptProvOrNCryptKey: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE,
+  dwKeySpec: DWORD,
+  dwCertEncodingType: DWORD,
+  pbEncodedToBeSigned: ptr BYTE,
+  cbEncodedToBeSigned: DWORD,
+  pSignatureAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER,
+  pvHashAuxInfo: pointer,
+  pbSignature: ptr BYTE,
+  pcbSignature: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSignAndEncodeCertificate*(
+  hCryptProvOrNCryptKey: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE,
+  dwKeySpec: DWORD,
+  dwCertEncodingType: DWORD,
+  lpszStructType: LPCSTR,
+  pvStructInfo: pointer,
+  pSignatureAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER,
+  pvHashAuxInfo: pointer,
+  pbEncoded: ptr BYTE,
+  pcbEncoded: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertVerifyTimeValidity*(
+  pTimeToVerify: LPFILETIME, pCertInfo: PCERT_INFO
+): LONG {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertVerifyCRLTimeValidity*(
+  pTimeToVerify: LPFILETIME, pCrlInfo: PCRL_INFO
+): LONG {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertVerifyValidityNesting*(
+  pSubjectInfo: PCERT_INFO, pIssuerInfo: PCERT_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertVerifyCRLRevocation*(
+  dwCertEncodingType: DWORD,
+  pCertId: PCERT_INFO,
+  cCrlInfo: DWORD,
+  rgpCrlInfo: ptr PCRL_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAlgIdToOID*(
+  dwAlgId: DWORD
+): LPCSTR {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertOIDToAlgId*(
+  pszObjId: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFindExtension*(
+  pszObjId: LPCSTR, cExtensions: DWORD, rgExtensions: ptr CERT_EXTENSION
+): PCERT_EXTENSION {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFindAttribute*(
+  pszObjId: LPCSTR, cAttr: DWORD, rgAttr: ptr CRYPT_ATTRIBUTE
+): PCRYPT_ATTRIBUTE {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFindRDNAttr*(
+  pszObjId: LPCSTR, pName: PCERT_NAME_INFO
+): PCERT_RDN_ATTR {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetIntendedKeyUsage*(
+  dwCertEncodingType: DWORD,
+  pCertInfo: PCERT_INFO,
+  pbKeyUsage: ptr BYTE,
+  cbKeyUsage: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptInstallDefaultContext*(
+  hCryptProv: HCRYPTPROV,
+  dwDefaultType: DWORD,
+  pvDefaultPara: pointer,
+  dwFlags: DWORD,
+  pvReserved: pointer,
+  phDefaultContext: ptr HCRYPTDEFAULTCONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptUninstallDefaultContext*(
+  hDefaultContext: HCRYPTDEFAULTCONTEXT, dwFlags: DWORD, pvReserved: pointer
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptExportPublicKeyInfo*(
+  hCryptProvOrNCryptKey: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE,
+  dwKeySpec: DWORD,
+  dwCertEncodingType: DWORD,
+  pInfo: PCERT_PUBLIC_KEY_INFO,
+  pcbInfo: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptExportPublicKeyInfoEx*(
+  hCryptProvOrNCryptKey: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE,
+  dwKeySpec: DWORD,
+  dwCertEncodingType: DWORD,
+  pszPublicKeyObjId: LPSTR,
+  dwFlags: DWORD,
+  pvAuxInfo: pointer,
+  pInfo: PCERT_PUBLIC_KEY_INFO,
+  pcbInfo: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptExportPublicKeyInfoFromBCryptKeyHandle*(
+  hBCryptKey: BCRYPT_KEY_HANDLE,
+  dwCertEncodingType: DWORD,
+  pszPublicKeyObjId: LPSTR,
+  dwFlags: DWORD,
+  pvAuxInfo: pointer,
+  pInfo: PCERT_PUBLIC_KEY_INFO,
+  pcbInfo: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptImportPublicKeyInfo*(
+  hCryptProv: HCRYPTPROV,
+  dwCertEncodingType: DWORD,
+  pInfo: PCERT_PUBLIC_KEY_INFO,
+  phKey: ptr HCRYPTKEY,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptImportPublicKeyInfoEx*(
+  hCryptProv: HCRYPTPROV,
+  dwCertEncodingType: DWORD,
+  pInfo: PCERT_PUBLIC_KEY_INFO,
+  aiKeyAlg: ALG_ID,
+  dwFlags: DWORD,
+  pvAuxInfo: pointer,
+  phKey: ptr HCRYPTKEY,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptImportPublicKeyInfoEx2*(
+  dwCertEncodingType: DWORD,
+  pInfo: PCERT_PUBLIC_KEY_INFO,
+  dwFlags: DWORD,
+  pvAuxInfo: pointer,
+  phKey: ptr BCRYPT_KEY_HANDLE,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptAcquireCertificatePrivateKey*(
+  pCert: PCCERT_CONTEXT,
+  dwFlags: DWORD,
+  pvParameters: pointer,
+  phCryptProvOrNCryptKey: ptr HCRYPTPROV_OR_NCRYPT_KEY_HANDLE,
+  pdwKeySpec: ptr DWORD,
+  pfCallerFreeProvOrNCryptKey: ptr WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptFindCertificateKeyProvInfo*(
+  pCert: PCCERT_CONTEXT, dwFlags: DWORD, pvReserved: pointer
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptImportPKCS8*(
+  sPrivateKeyAndParams: CRYPT_PKCS8_IMPORT_PARAMS,
+  dwFlags: DWORD,
+  phCryptProv: ptr HCRYPTPROV,
+  pvAuxInfo: pointer,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptExportPKCS8*(
+  hCryptProv: HCRYPTPROV,
+  dwKeySpec: DWORD,
+  pszPrivateKeyObjId: LPSTR,
+  dwFlags: DWORD,
+  pvAuxInfo: pointer,
+  pbPrivateKeyBlob: ptr BYTE,
+  pcbPrivateKeyBlob: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptHashPublicKeyInfo*(
+  hCryptProv: HCRYPTPROV_LEGACY,
+  Algid: ALG_ID,
+  dwFlags: DWORD,
+  dwCertEncodingType: DWORD,
+  pInfo: PCERT_PUBLIC_KEY_INFO,
+  pbComputedHash: ptr BYTE,
+  pcbComputedHash: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertRDNValueToStrA*(
+  dwValueType: DWORD, pValue: PCERT_RDN_VALUE_BLOB, psz: LPSTR, csz: DWORD
+): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertRDNValueToStrW*(
+  dwValueType: DWORD, pValue: PCERT_RDN_VALUE_BLOB, psz: LPWSTR, csz: DWORD
+): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertNameToStrA*(
+  dwCertEncodingType: DWORD,
+  pName: PCERT_NAME_BLOB,
+  dwStrType: DWORD,
+  psz: LPSTR,
+  csz: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertNameToStrW*(
+  dwCertEncodingType: DWORD,
+  pName: PCERT_NAME_BLOB,
+  dwStrType: DWORD,
+  psz: LPWSTR,
+  csz: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertStrToNameA*(
+  dwCertEncodingType: DWORD,
+  pszX500: LPCSTR,
+  dwStrType: DWORD,
+  pvReserved: pointer,
+  pbEncoded: ptr BYTE,
+  pcbEncoded: ptr DWORD,
+  ppszError: ptr LPCSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertStrToNameW*(
+  dwCertEncodingType: DWORD,
+  pszX500: LPCWSTR,
+  dwStrType: DWORD,
+  pvReserved: pointer,
+  pbEncoded: ptr BYTE,
+  pcbEncoded: ptr DWORD,
+  ppszError: ptr LPCWSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetNameStringA*(
+  pCertContext: PCCERT_CONTEXT,
+  dwType: DWORD,
+  dwFlags: DWORD,
+  pvTypePara: pointer,
+  pszNameString: LPSTR,
+  cchNameString: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetNameStringW*(
+  pCertContext: PCCERT_CONTEXT,
+  dwType: DWORD,
+  dwFlags: DWORD,
+  pvTypePara: pointer,
+  pszNameString: LPWSTR,
+  cchNameString: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSignMessage*(
+  pSignPara: PCRYPT_SIGN_MESSAGE_PARA,
+  fDetachedSignature: WINBOOL,
+  cToBeSigned: DWORD,
+  rgpbToBeSigned: ptr ptr BYTE,
+  rgcbToBeSigned: ptr DWORD,
+  pbSignedBlob: ptr BYTE,
+  pcbSignedBlob: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptVerifyMessageSignature*(
+  pVerifyPara: PCRYPT_VERIFY_MESSAGE_PARA,
+  dwSignerIndex: DWORD,
+  pbSignedBlob: ptr BYTE,
+  cbSignedBlob: DWORD,
+  pbDecoded: ptr BYTE,
+  pcbDecoded: ptr DWORD,
+  ppSignerCert: ptr PCCERT_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptGetMessageSignerCount*(
+  dwMsgEncodingType: DWORD, pbSignedBlob: ptr BYTE, cbSignedBlob: DWORD
+): LONG {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptGetMessageCertificates*(
+  dwMsgAndCertEncodingType: DWORD,
+  hCryptProv: HCRYPTPROV_LEGACY,
+  dwFlags: DWORD,
+  pbSignedBlob: ptr BYTE,
+  cbSignedBlob: DWORD,
+): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptVerifyDetachedMessageSignature*(
+  pVerifyPara: PCRYPT_VERIFY_MESSAGE_PARA,
+  dwSignerIndex: DWORD,
+  pbDetachedSignBlob: ptr BYTE,
+  cbDetachedSignBlob: DWORD,
+  cToBeSigned: DWORD,
+  rgpbToBeSigned: ptr ptr BYTE,
+  rgcbToBeSigned: ptr DWORD,
+  ppSignerCert: ptr PCCERT_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptEncryptMessage*(
+  pEncryptPara: PCRYPT_ENCRYPT_MESSAGE_PARA,
+  cRecipientCert: DWORD,
+  rgpRecipientCert: ptr PCCERT_CONTEXT,
+  pbToBeEncrypted: ptr BYTE,
+  cbToBeEncrypted: DWORD,
+  pbEncryptedBlob: ptr BYTE,
+  pcbEncryptedBlob: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptDecryptMessage*(
+  pDecryptPara: PCRYPT_DECRYPT_MESSAGE_PARA,
+  pbEncryptedBlob: ptr BYTE,
+  cbEncryptedBlob: DWORD,
+  pbDecrypted: ptr BYTE,
+  pcbDecrypted: ptr DWORD,
+  ppXchgCert: ptr PCCERT_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSignAndEncryptMessage*(
+  pSignPara: PCRYPT_SIGN_MESSAGE_PARA,
+  pEncryptPara: PCRYPT_ENCRYPT_MESSAGE_PARA,
+  cRecipientCert: DWORD,
+  rgpRecipientCert: ptr PCCERT_CONTEXT,
+  pbToBeSignedAndEncrypted: ptr BYTE,
+  cbToBeSignedAndEncrypted: DWORD,
+  pbSignedAndEncryptedBlob: ptr BYTE,
+  pcbSignedAndEncryptedBlob: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptDecryptAndVerifyMessageSignature*(
+  pDecryptPara: PCRYPT_DECRYPT_MESSAGE_PARA,
+  pVerifyPara: PCRYPT_VERIFY_MESSAGE_PARA,
+  dwSignerIndex: DWORD,
+  pbEncryptedBlob: ptr BYTE,
+  cbEncryptedBlob: DWORD,
+  pbDecrypted: ptr BYTE,
+  pcbDecrypted: ptr DWORD,
+  ppXchgCert: ptr PCCERT_CONTEXT,
+  ppSignerCert: ptr PCCERT_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptDecodeMessage*(
+  dwMsgTypeFlags: DWORD,
+  pDecryptPara: PCRYPT_DECRYPT_MESSAGE_PARA,
+  pVerifyPara: PCRYPT_VERIFY_MESSAGE_PARA,
+  dwSignerIndex: DWORD,
+  pbEncodedBlob: ptr BYTE,
+  cbEncodedBlob: DWORD,
+  dwPrevInnerContentType: DWORD,
+  pdwMsgType: ptr DWORD,
+  pdwInnerContentType: ptr DWORD,
+  pbDecoded: ptr BYTE,
+  pcbDecoded: ptr DWORD,
+  ppXchgCert: ptr PCCERT_CONTEXT,
+  ppSignerCert: ptr PCCERT_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptHashMessage*(
+  pHashPara: PCRYPT_HASH_MESSAGE_PARA,
+  fDetachedHash: WINBOOL,
+  cToBeHashed: DWORD,
+  rgpbToBeHashed: ptr ptr BYTE,
+  rgcbToBeHashed: ptr DWORD,
+  pbHashedBlob: ptr BYTE,
+  pcbHashedBlob: ptr DWORD,
+  pbComputedHash: ptr BYTE,
+  pcbComputedHash: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptVerifyMessageHash*(
+  pHashPara: PCRYPT_HASH_MESSAGE_PARA,
+  pbHashedBlob: ptr BYTE,
+  cbHashedBlob: DWORD,
+  pbToBeHashed: ptr BYTE,
+  pcbToBeHashed: ptr DWORD,
+  pbComputedHash: ptr BYTE,
+  pcbComputedHash: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptVerifyDetachedMessageHash*(
+  pHashPara: PCRYPT_HASH_MESSAGE_PARA,
+  pbDetachedHashBlob: ptr BYTE,
+  cbDetachedHashBlob: DWORD,
+  cToBeHashed: DWORD,
+  rgpbToBeHashed: ptr ptr BYTE,
+  rgcbToBeHashed: ptr DWORD,
+  pbComputedHash: ptr BYTE,
+  pcbComputedHash: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSignMessageWithKey*(
+  pSignPara: PCRYPT_KEY_SIGN_MESSAGE_PARA,
+  pbToBeSigned: ptr BYTE,
+  cbToBeSigned: DWORD,
+  pbSignedBlob: ptr BYTE,
+  pcbSignedBlob: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptVerifyMessageSignatureWithKey*(
+  pVerifyPara: PCRYPT_KEY_VERIFY_MESSAGE_PARA,
+  pPublicKeyInfo: PCERT_PUBLIC_KEY_INFO,
+  pbSignedBlob: ptr BYTE,
+  cbSignedBlob: DWORD,
+  pbDecoded: ptr BYTE,
+  pcbDecoded: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertOpenSystemStoreA*(
+  hProv: HCRYPTPROV_LEGACY, szSubsystemProtocol: LPCSTR
+): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertOpenSystemStoreW*(
+  hProv: HCRYPTPROV_LEGACY, szSubsystemProtocol: LPCWSTR
+): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddEncodedCertificateToSystemStoreA*(
+  szCertStoreName: LPCSTR, pbCertEncoded: ptr BYTE, cbCertEncoded: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddEncodedCertificateToSystemStoreW*(
+  szCertStoreName: LPCWSTR, pbCertEncoded: ptr BYTE, cbCertEncoded: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc FindCertsByIssuer*(
+  pCertChains: PCERT_CHAIN,
+  pcbCertChains: ptr DWORD,
+  pcCertChains: ptr DWORD,
+  pbEncodedIssuerName: ptr BYTE,
+  cbEncodedIssuerName: DWORD,
+  pwszPurpose: LPCWSTR,
+  dwKeySpec: DWORD,
+): HRESULT {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc CryptQueryObject*(
+  dwObjectType: DWORD,
+  pvObject: pointer,
+  dwExpectedContentTypeFlags: DWORD,
+  dwExpectedFormatTypeFlags: DWORD,
+  dwFlags: DWORD,
+  pdwMsgAndCertEncodingType: ptr DWORD,
+  pdwContentType: ptr DWORD,
+  pdwFormatType: ptr DWORD,
+  phCertStore: ptr HCERTSTORE,
+  phMsg: ptr HCRYPTMSG,
+  ppvContext: ptr pointer,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMemAlloc*(
+  cbSize: ULONG
+): LPVOID {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptMemRealloc*(
+  pv: LPVOID, cbSize: ULONG
+): LPVOID {.winapi, stdcall, dynlib: "crypt32", importc.}
+
 proc CryptMemFree*(pv: LPVOID): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptCreateAsyncHandle*(dwFlags: DWORD, phAsync: PHCRYPTASYNC): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSetAsyncParam*(hAsync: HCRYPTASYNC, pszParamOid: LPSTR, pvParam: LPVOID, pfnFree: PFN_CRYPT_ASYNC_PARAM_FREE_FUNC): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptGetAsyncParam*(hAsync: HCRYPTASYNC, pszParamOid: LPSTR, ppvParam: ptr LPVOID, ppfnFree: ptr PFN_CRYPT_ASYNC_PARAM_FREE_FUNC): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptCloseAsyncHandle*(hAsync: HCRYPTASYNC): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptRetrieveObjectByUrlA*(pszUrl: LPCSTR, pszObjectOid: LPCSTR, dwRetrievalFlags: DWORD, dwTimeout: DWORD, ppvObject: ptr LPVOID, hAsyncRetrieve: HCRYPTASYNC, pCredentials: PCRYPT_CREDENTIALS, pvVerify: LPVOID, pAuxInfo: PCRYPT_RETRIEVE_AUX_INFO): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
-proc CryptRetrieveObjectByUrlW*(pszUrl: LPCWSTR, pszObjectOid: LPCSTR, dwRetrievalFlags: DWORD, dwTimeout: DWORD, ppvObject: ptr LPVOID, hAsyncRetrieve: HCRYPTASYNC, pCredentials: PCRYPT_CREDENTIALS, pvVerify: LPVOID, pAuxInfo: PCRYPT_RETRIEVE_AUX_INFO): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
-proc CryptInstallCancelRetrieval*(pfnCancel: PFN_CRYPT_CANCEL_RETRIEVAL, pvArg: pointer, dwFlags: DWORD, pvReserved: pointer): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
-proc CryptUninstallCancelRetrieval*(dwFlags: DWORD, pvReserved: pointer): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
-proc CryptCancelAsyncRetrieval*(hAsyncRetrieval: HCRYPTASYNC): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
-proc CryptGetObjectUrl*(pszUrlOid: LPCSTR, pvPara: LPVOID, dwFlags: DWORD, pUrlArray: PCRYPT_URL_ARRAY, pcbUrlArray: ptr DWORD, pUrlInfo: PCRYPT_URL_INFO, pcbUrlInfo: ptr DWORD, pvReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
-proc CryptGetTimeValidObject*(pszTimeValidOid: LPCSTR, pvPara: LPVOID, pIssuer: PCCERT_CONTEXT, pftValidFor: LPFILETIME, dwFlags: DWORD, dwTimeout: DWORD, ppvObject: ptr LPVOID, pCredentials: PCRYPT_CREDENTIALS, pExtraInfo: PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
-proc CryptFlushTimeValidObject*(pszFlushTimeValidOid: LPCSTR, pvPara: LPVOID, pIssuer: PCCERT_CONTEXT, dwFlags: DWORD, pvReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
-proc CertCreateSelfSignCertificate*(hCryptProvOrNCryptKey: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, pSubjectIssuerBlob: PCERT_NAME_BLOB, dwFlags: DWORD, pKeyProvInfo: PCRYPT_KEY_PROV_INFO, pSignatureAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER, pStartTime: PSYSTEMTIME, pEndTime: PSYSTEMTIME, pExtensions: PCERT_EXTENSIONS): PCCERT_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptGetKeyIdentifierProperty*(pKeyIdentifier: ptr CRYPT_HASH_BLOB, dwPropId: DWORD, dwFlags: DWORD, pwszComputerName: LPCWSTR, pvReserved: pointer, pvData: pointer, pcbData: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSetKeyIdentifierProperty*(pKeyIdentifier: ptr CRYPT_HASH_BLOB, dwPropId: DWORD, dwFlags: DWORD, pwszComputerName: LPCWSTR, pvReserved: pointer, pvData: pointer): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptEnumKeyIdentifierProperties*(pKeyIdentifier: ptr CRYPT_HASH_BLOB, dwPropId: DWORD, dwFlags: DWORD, pwszComputerName: LPCWSTR, pvReserved: pointer, pvArg: pointer, pfnEnum: PFN_CRYPT_ENUM_KEYID_PROP): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptCreateKeyIdentifierFromCSP*(dwCertEncodingType: DWORD, pszPubKeyOID: LPCSTR, pPubKeyStruc: ptr PUBLICKEYSTRUC, cbPubKeyStruc: DWORD, dwFlags: DWORD, pvReserved: pointer, pbHash: ptr BYTE, pcbHash: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertCreateCertificateChainEngine*(pConfig: PCERT_CHAIN_ENGINE_CONFIG, phChainEngine: ptr HCERTCHAINENGINE): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFreeCertificateChainEngine*(hChainEngine: HCERTCHAINENGINE): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertResyncCertificateChainEngine*(hChainEngine: HCERTCHAINENGINE): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetCertificateChain*(hChainEngine: HCERTCHAINENGINE, pCertContext: PCCERT_CONTEXT, pTime: LPFILETIME, hAdditionalStore: HCERTSTORE, pChainPara: PCERT_CHAIN_PARA, dwFlags: DWORD, pvReserved: LPVOID, ppChainContext: ptr PCCERT_CHAIN_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFreeCertificateChain*(pChainContext: PCCERT_CHAIN_CONTEXT): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertDuplicateCertificateChain*(pChainContext: PCCERT_CHAIN_CONTEXT): PCCERT_CHAIN_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFindChainInStore*(hCertStore: HCERTSTORE, dwCertEncodingType: DWORD, dwFindFlags: DWORD, dwFindType: DWORD, pvFindPara: pointer, pPrevChainContext: PCCERT_CHAIN_CONTEXT): PCCERT_CHAIN_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertVerifyCertificateChainPolicy*(pszPolicyOID: LPCSTR, pChainContext: PCCERT_CHAIN_CONTEXT, pPolicyPara: PCERT_CHAIN_POLICY_PARA, pPolicyStatus: PCERT_CHAIN_POLICY_STATUS): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptStringToBinaryA*(pszString: LPCSTR, cchString: DWORD, dwFlags: DWORD, pbBinary: ptr BYTE, pcbBinary: ptr DWORD, pdwSkip: ptr DWORD, pdwFlags: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptStringToBinaryW*(pszString: LPCWSTR, cchString: DWORD, dwFlags: DWORD, pbBinary: ptr BYTE, pcbBinary: ptr DWORD, pdwSkip: ptr DWORD, pdwFlags: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptBinaryToStringA*(pbBinary: ptr BYTE, cbBinary: DWORD, dwFlags: DWORD, pszString: LPSTR, pcchString: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptBinaryToStringW*(pbBinary: ptr BYTE, cbBinary: DWORD, dwFlags: DWORD, pszString: LPWSTR, pcchString: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc PFXImportCertStore*(pPFX: ptr CRYPT_DATA_BLOB, szPassword: LPCWSTR, dwFlags: DWORD): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc PFXIsPFXBlob*(pPFX: ptr CRYPT_DATA_BLOB): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc PFXVerifyPassword*(pPFX: ptr CRYPT_DATA_BLOB, szPassword: LPCWSTR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc PFXExportCertStoreEx*(hStore: HCERTSTORE, pPFX: ptr CRYPT_DATA_BLOB, szPassword: LPCWSTR, pvPara: pointer, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc PFXExportCertStore*(hStore: HCERTSTORE, pPFX: ptr CRYPT_DATA_BLOB, szPassword: LPCWSTR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertOpenServerOcspResponse*(pChainContext: PCCERT_CHAIN_CONTEXT, dwFlags: DWORD, pvReserved: LPVOID): HCERT_SERVER_OCSP_RESPONSE {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddRefServerOcspResponse*(hServerOcspResponse: HCERT_SERVER_OCSP_RESPONSE): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertCloseServerOcspResponse*(hServerOcspResponse: HCERT_SERVER_OCSP_RESPONSE, dwFlags: DWORD): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertGetServerOcspResponseContext*(hServerOcspResponse: HCERT_SERVER_OCSP_RESPONSE, dwFlags: DWORD, pvReserved: LPVOID): PCCERT_SERVER_OCSP_RESPONSE_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertAddRefServerOcspResponseContext*(pServerOcspResponseContext: PCCERT_SERVER_OCSP_RESPONSE_CONTEXT): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFreeServerOcspResponseContext*(pServerOcspResponseContext: PCCERT_SERVER_OCSP_RESPONSE_CONTEXT): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertRetrieveLogoOrBiometricInfo*(pCertContext: PCCERT_CONTEXT, lpszLogoOrBiometricType: LPCSTR, dwRetrievalFlags: DWORD, dwTimeout: DWORD, dwFlags: DWORD, pvReserved: pointer, ppbData: ptr ptr BYTE, pcbData: ptr DWORD, ppwszMimeType: ptr LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertSelectCertificateChains*(pSelectionContext: LPCGUID, dwFlags: DWORD, pChainParameters: PCCERT_SELECT_CHAIN_PARA, cCriteria: DWORD, rgpCriteria: PCCERT_SELECT_CRITERIA, hStore: HCERTSTORE, pcSelection: PDWORD, pprgpSelection: ptr ptr PCCERT_CHAIN_CONTEXT): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CertFreeCertificateChainList*(prgpSelection: ptr PCCERT_CHAIN_CONTEXT): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptRetrieveTimeStamp*(wszUrl: LPCWSTR, dwRetrievalFlags: DWORD, dwTimeout: DWORD, pszHashId: LPCSTR, pPara: ptr CRYPT_TIMESTAMP_PARA, pbData: ptr BYTE, cbData: DWORD, ppTsContext: ptr PCRYPT_TIMESTAMP_CONTEXT, ppTsSigner: ptr PCCERT_CONTEXT, phStore: ptr HCERTSTORE): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptVerifyTimeStampSignature*(pbTSContentInfo: ptr BYTE, cbTSContentInfo: DWORD, pbData: ptr BYTE, cbData: DWORD, hAdditionalStore: HCERTSTORE, ppTsContext: ptr PCRYPT_TIMESTAMP_CONTEXT, ppTsSigner: ptr PCCERT_CONTEXT, phStore: ptr HCERTSTORE): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptProtectData*(pDataIn: ptr DATA_BLOB, szDataDescr: LPCWSTR, pOptionalEntropy: ptr DATA_BLOB, pvReserved: PVOID, pPromptStruct: ptr CRYPTPROTECT_PROMPTSTRUCT, dwFlags: DWORD, pDataOut: ptr DATA_BLOB): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptUnprotectData*(pDataIn: ptr DATA_BLOB, ppszDataDescr: ptr LPWSTR, pOptionalEntropy: ptr DATA_BLOB, pvReserved: PVOID, pPromptStruct: ptr CRYPTPROTECT_PROMPTSTRUCT, dwFlags: DWORD, pDataOut: ptr DATA_BLOB): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptProtectMemory*(pDataIn: LPVOID, cbDataIn: DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptUnprotectMemory*(pDataIn: LPVOID, cbDataIn: DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptUpdateProtectedState*(pOldSid: PSID, pwszOldPassword: LPCWSTR, dwFlags: DWORD, pdwSuccessCount: ptr DWORD, pdwFailureCount: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc `pOtherName=`*(self: var CERT_ALT_NAME_ENTRY, x: PCERT_OTHER_NAME) {.inline.} = self.union1.pOtherName = x
-proc pOtherName*(self: CERT_ALT_NAME_ENTRY): PCERT_OTHER_NAME {.inline.} = self.union1.pOtherName
-proc pOtherName*(self: var CERT_ALT_NAME_ENTRY): var PCERT_OTHER_NAME {.inline.} = self.union1.pOtherName
-proc `pwszRfc822Name=`*(self: var CERT_ALT_NAME_ENTRY, x: LPWSTR) {.inline.} = self.union1.pwszRfc822Name = x
-proc pwszRfc822Name*(self: CERT_ALT_NAME_ENTRY): LPWSTR {.inline.} = self.union1.pwszRfc822Name
-proc pwszRfc822Name*(self: var CERT_ALT_NAME_ENTRY): var LPWSTR {.inline.} = self.union1.pwszRfc822Name
-proc `pwszDNSName=`*(self: var CERT_ALT_NAME_ENTRY, x: LPWSTR) {.inline.} = self.union1.pwszDNSName = x
-proc pwszDNSName*(self: CERT_ALT_NAME_ENTRY): LPWSTR {.inline.} = self.union1.pwszDNSName
-proc pwszDNSName*(self: var CERT_ALT_NAME_ENTRY): var LPWSTR {.inline.} = self.union1.pwszDNSName
-proc `DirectoryName=`*(self: var CERT_ALT_NAME_ENTRY, x: CERT_NAME_BLOB) {.inline.} = self.union1.DirectoryName = x
-proc DirectoryName*(self: CERT_ALT_NAME_ENTRY): CERT_NAME_BLOB {.inline.} = self.union1.DirectoryName
-proc DirectoryName*(self: var CERT_ALT_NAME_ENTRY): var CERT_NAME_BLOB {.inline.} = self.union1.DirectoryName
-proc `pwszURL=`*(self: var CERT_ALT_NAME_ENTRY, x: LPWSTR) {.inline.} = self.union1.pwszURL = x
-proc pwszURL*(self: CERT_ALT_NAME_ENTRY): LPWSTR {.inline.} = self.union1.pwszURL
-proc pwszURL*(self: var CERT_ALT_NAME_ENTRY): var LPWSTR {.inline.} = self.union1.pwszURL
-proc `IPAddress=`*(self: var CERT_ALT_NAME_ENTRY, x: CRYPT_DATA_BLOB) {.inline.} = self.union1.IPAddress = x
-proc IPAddress*(self: CERT_ALT_NAME_ENTRY): CRYPT_DATA_BLOB {.inline.} = self.union1.IPAddress
-proc IPAddress*(self: var CERT_ALT_NAME_ENTRY): var CRYPT_DATA_BLOB {.inline.} = self.union1.IPAddress
-proc `pszRegisteredID=`*(self: var CERT_ALT_NAME_ENTRY, x: LPSTR) {.inline.} = self.union1.pszRegisteredID = x
-proc pszRegisteredID*(self: CERT_ALT_NAME_ENTRY): LPSTR {.inline.} = self.union1.pszRegisteredID
-proc pszRegisteredID*(self: var CERT_ALT_NAME_ENTRY): var LPSTR {.inline.} = self.union1.pszRegisteredID
-proc `FullName=`*(self: var CRL_DIST_POINT_NAME, x: CERT_ALT_NAME_INFO) {.inline.} = self.union1.FullName = x
-proc FullName*(self: CRL_DIST_POINT_NAME): CERT_ALT_NAME_INFO {.inline.} = self.union1.FullName
-proc FullName*(self: var CRL_DIST_POINT_NAME): var CERT_ALT_NAME_INFO {.inline.} = self.union1.FullName
-proc `pTaggedCertRequest=`*(self: var CMC_TAGGED_REQUEST, x: PCMC_TAGGED_CERT_REQUEST) {.inline.} = self.union1.pTaggedCertRequest = x
-proc pTaggedCertRequest*(self: CMC_TAGGED_REQUEST): PCMC_TAGGED_CERT_REQUEST {.inline.} = self.union1.pTaggedCertRequest
-proc pTaggedCertRequest*(self: var CMC_TAGGED_REQUEST): var PCMC_TAGGED_CERT_REQUEST {.inline.} = self.union1.pTaggedCertRequest
-proc `dwFailInfo=`*(self: var CMC_STATUS_INFO, x: DWORD) {.inline.} = self.union1.dwFailInfo = x
-proc dwFailInfo*(self: CMC_STATUS_INFO): DWORD {.inline.} = self.union1.dwFailInfo
-proc dwFailInfo*(self: var CMC_STATUS_INFO): var DWORD {.inline.} = self.union1.dwFailInfo
-proc `pPendInfo=`*(self: var CMC_STATUS_INFO, x: PCMC_PEND_INFO) {.inline.} = self.union1.pPendInfo = x
-proc pPendInfo*(self: CMC_STATUS_INFO): PCMC_PEND_INFO {.inline.} = self.union1.pPendInfo
-proc pPendInfo*(self: var CMC_STATUS_INFO): var PCMC_PEND_INFO {.inline.} = self.union1.pPendInfo
-proc `dwNumBits=`*(self: var CERT_LOGOTYPE_IMAGE_INFO, x: DWORD) {.inline.} = self.union1.dwNumBits = x
-proc dwNumBits*(self: CERT_LOGOTYPE_IMAGE_INFO): DWORD {.inline.} = self.union1.dwNumBits
-proc dwNumBits*(self: var CERT_LOGOTYPE_IMAGE_INFO): var DWORD {.inline.} = self.union1.dwNumBits
-proc `dwTableSize=`*(self: var CERT_LOGOTYPE_IMAGE_INFO, x: DWORD) {.inline.} = self.union1.dwTableSize = x
-proc dwTableSize*(self: CERT_LOGOTYPE_IMAGE_INFO): DWORD {.inline.} = self.union1.dwTableSize
-proc dwTableSize*(self: var CERT_LOGOTYPE_IMAGE_INFO): var DWORD {.inline.} = self.union1.dwTableSize
-proc `pLogotypeDirectInfo=`*(self: var CERT_LOGOTYPE_INFO, x: PCERT_LOGOTYPE_DATA) {.inline.} = self.union1.pLogotypeDirectInfo = x
-proc pLogotypeDirectInfo*(self: CERT_LOGOTYPE_INFO): PCERT_LOGOTYPE_DATA {.inline.} = self.union1.pLogotypeDirectInfo
-proc pLogotypeDirectInfo*(self: var CERT_LOGOTYPE_INFO): var PCERT_LOGOTYPE_DATA {.inline.} = self.union1.pLogotypeDirectInfo
-proc `pLogotypeIndirectInfo=`*(self: var CERT_LOGOTYPE_INFO, x: PCERT_LOGOTYPE_REFERENCE) {.inline.} = self.union1.pLogotypeIndirectInfo = x
-proc pLogotypeIndirectInfo*(self: CERT_LOGOTYPE_INFO): PCERT_LOGOTYPE_REFERENCE {.inline.} = self.union1.pLogotypeIndirectInfo
-proc pLogotypeIndirectInfo*(self: var CERT_LOGOTYPE_INFO): var PCERT_LOGOTYPE_REFERENCE {.inline.} = self.union1.pLogotypeIndirectInfo
-proc `dwPredefined=`*(self: var CERT_BIOMETRIC_DATA, x: DWORD) {.inline.} = self.union1.dwPredefined = x
-proc dwPredefined*(self: CERT_BIOMETRIC_DATA): DWORD {.inline.} = self.union1.dwPredefined
-proc dwPredefined*(self: var CERT_BIOMETRIC_DATA): var DWORD {.inline.} = self.union1.dwPredefined
-proc `pszObjId=`*(self: var CERT_BIOMETRIC_DATA, x: LPSTR) {.inline.} = self.union1.pszObjId = x
-proc pszObjId*(self: CERT_BIOMETRIC_DATA): LPSTR {.inline.} = self.union1.pszObjId
-proc pszObjId*(self: var CERT_BIOMETRIC_DATA): var LPSTR {.inline.} = self.union1.pszObjId
-proc `pRevokedInfo=`*(self: var OCSP_BASIC_RESPONSE_ENTRY, x: POCSP_BASIC_REVOKED_INFO) {.inline.} = self.union1.pRevokedInfo = x
-proc pRevokedInfo*(self: OCSP_BASIC_RESPONSE_ENTRY): POCSP_BASIC_REVOKED_INFO {.inline.} = self.union1.pRevokedInfo
-proc pRevokedInfo*(self: var OCSP_BASIC_RESPONSE_ENTRY): var POCSP_BASIC_REVOKED_INFO {.inline.} = self.union1.pRevokedInfo
-proc `ByNameResponderId=`*(self: var OCSP_BASIC_RESPONSE_INFO, x: CERT_NAME_BLOB) {.inline.} = self.union1.ByNameResponderId = x
-proc ByNameResponderId*(self: OCSP_BASIC_RESPONSE_INFO): CERT_NAME_BLOB {.inline.} = self.union1.ByNameResponderId
-proc ByNameResponderId*(self: var OCSP_BASIC_RESPONSE_INFO): var CERT_NAME_BLOB {.inline.} = self.union1.ByNameResponderId
-proc `ByKeyResponderId=`*(self: var OCSP_BASIC_RESPONSE_INFO, x: CRYPT_HASH_BLOB) {.inline.} = self.union1.ByKeyResponderId = x
-proc ByKeyResponderId*(self: OCSP_BASIC_RESPONSE_INFO): CRYPT_HASH_BLOB {.inline.} = self.union1.ByKeyResponderId
-proc ByKeyResponderId*(self: var OCSP_BASIC_RESPONSE_INFO): var CRYPT_HASH_BLOB {.inline.} = self.union1.ByKeyResponderId
-proc `dwValue=`*(self: var CRYPT_OID_INFO, x: DWORD) {.inline.} = self.union1.dwValue = x
-proc dwValue*(self: CRYPT_OID_INFO): DWORD {.inline.} = self.union1.dwValue
-proc dwValue*(self: var CRYPT_OID_INFO): var DWORD {.inline.} = self.union1.dwValue
-proc `Algid=`*(self: var CRYPT_OID_INFO, x: ALG_ID) {.inline.} = self.union1.Algid = x
-proc algid*(self: CRYPT_OID_INFO): ALG_ID {.inline.} = self.union1.Algid
-proc algid*(self: var CRYPT_OID_INFO): var ALG_ID {.inline.} = self.union1.Algid
-proc `dwLength=`*(self: var CRYPT_OID_INFO, x: DWORD) {.inline.} = self.union1.dwLength = x
-proc dwLength*(self: CRYPT_OID_INFO): DWORD {.inline.} = self.union1.dwLength
-proc dwLength*(self: var CRYPT_OID_INFO): var DWORD {.inline.} = self.union1.dwLength
-proc `pvInfo=`*(self: var CERT_STRONG_SIGN_PARA, x: pointer) {.inline.} = self.union1.pvInfo = x
-proc pvInfo*(self: CERT_STRONG_SIGN_PARA): pointer {.inline.} = self.union1.pvInfo
-proc pvInfo*(self: var CERT_STRONG_SIGN_PARA): var pointer {.inline.} = self.union1.pvInfo
-proc `pSerializedInfo=`*(self: var CERT_STRONG_SIGN_PARA, x: PCERT_STRONG_SIGN_SERIALIZED_INFO) {.inline.} = self.union1.pSerializedInfo = x
-proc pSerializedInfo*(self: CERT_STRONG_SIGN_PARA): PCERT_STRONG_SIGN_SERIALIZED_INFO {.inline.} = self.union1.pSerializedInfo
-proc pSerializedInfo*(self: var CERT_STRONG_SIGN_PARA): var PCERT_STRONG_SIGN_SERIALIZED_INFO {.inline.} = self.union1.pSerializedInfo
-proc `pszOID=`*(self: var CERT_STRONG_SIGN_PARA, x: LPSTR) {.inline.} = self.union1.pszOID = x
-proc pszOID*(self: CERT_STRONG_SIGN_PARA): LPSTR {.inline.} = self.union1.pszOID
-proc pszOID*(self: var CERT_STRONG_SIGN_PARA): var LPSTR {.inline.} = self.union1.pszOID
-proc `IssuerSerialNumber=`*(self: var CERT_ID, x: CERT_ISSUER_SERIAL_NUMBER) {.inline.} = self.union1.IssuerSerialNumber = x
-proc IssuerSerialNumber*(self: CERT_ID): CERT_ISSUER_SERIAL_NUMBER {.inline.} = self.union1.IssuerSerialNumber
-proc IssuerSerialNumber*(self: var CERT_ID): var CERT_ISSUER_SERIAL_NUMBER {.inline.} = self.union1.IssuerSerialNumber
-proc `KeyId=`*(self: var CERT_ID, x: CRYPT_HASH_BLOB) {.inline.} = self.union1.KeyId = x
-proc KeyId*(self: CERT_ID): CRYPT_HASH_BLOB {.inline.} = self.union1.KeyId
-proc KeyId*(self: var CERT_ID): var CRYPT_HASH_BLOB {.inline.} = self.union1.KeyId
-proc `HashId=`*(self: var CERT_ID, x: CRYPT_HASH_BLOB) {.inline.} = self.union1.HashId = x
-proc HashId*(self: CERT_ID): CRYPT_HASH_BLOB {.inline.} = self.union1.HashId
-proc HashId*(self: var CERT_ID): var CRYPT_HASH_BLOB {.inline.} = self.union1.HashId
-proc `hCryptProv=`*(self: var CMSG_SIGNER_ENCODE_INFO, x: HCRYPTPROV) {.inline.} = self.union1.hCryptProv = x
-proc hCryptProv*(self: CMSG_SIGNER_ENCODE_INFO): HCRYPTPROV {.inline.} = self.union1.hCryptProv
-proc hCryptProv*(self: var CMSG_SIGNER_ENCODE_INFO): var HCRYPTPROV {.inline.} = self.union1.hCryptProv
-proc `hNCryptKey=`*(self: var CMSG_SIGNER_ENCODE_INFO, x: NCRYPT_KEY_HANDLE) {.inline.} = self.union1.hNCryptKey = x
-proc hNCryptKey*(self: CMSG_SIGNER_ENCODE_INFO): NCRYPT_KEY_HANDLE {.inline.} = self.union1.hNCryptKey
-proc hNCryptKey*(self: var CMSG_SIGNER_ENCODE_INFO): var NCRYPT_KEY_HANDLE {.inline.} = self.union1.hNCryptKey
-proc `pEphemeralAlgorithm=`*(self: var CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO, x: PCRYPT_ALGORITHM_IDENTIFIER) {.inline.} = self.union1.pEphemeralAlgorithm = x
-proc pEphemeralAlgorithm*(self: CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO): PCRYPT_ALGORITHM_IDENTIFIER {.inline.} = self.union1.pEphemeralAlgorithm
-proc pEphemeralAlgorithm*(self: var CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO): var PCRYPT_ALGORITHM_IDENTIFIER {.inline.} = self.union1.pEphemeralAlgorithm
-proc `pSenderId=`*(self: var CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO, x: PCERT_ID) {.inline.} = self.union1.pSenderId = x
-proc pSenderId*(self: CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO): PCERT_ID {.inline.} = self.union1.pSenderId
-proc pSenderId*(self: var CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO): var PCERT_ID {.inline.} = self.union1.pSenderId
-proc `hKeyEncryptionKey=`*(self: var CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO, x: HCRYPTKEY) {.inline.} = self.union1.hKeyEncryptionKey = x
-proc hKeyEncryptionKey*(self: CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO): HCRYPTKEY {.inline.} = self.union1.hKeyEncryptionKey
-proc hKeyEncryptionKey*(self: var CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO): var HCRYPTKEY {.inline.} = self.union1.hKeyEncryptionKey
-proc `pvKeyEncryptionKey=`*(self: var CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO, x: pointer) {.inline.} = self.union1.pvKeyEncryptionKey = x
-proc pvKeyEncryptionKey*(self: CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO): pointer {.inline.} = self.union1.pvKeyEncryptionKey
-proc pvKeyEncryptionKey*(self: var CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO): var pointer {.inline.} = self.union1.pvKeyEncryptionKey
-proc `pKeyTrans=`*(self: var CMSG_RECIPIENT_ENCODE_INFO, x: PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO) {.inline.} = self.union1.pKeyTrans = x
-proc pKeyTrans*(self: CMSG_RECIPIENT_ENCODE_INFO): PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO {.inline.} = self.union1.pKeyTrans
-proc pKeyTrans*(self: var CMSG_RECIPIENT_ENCODE_INFO): var PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO {.inline.} = self.union1.pKeyTrans
-proc `pKeyAgree=`*(self: var CMSG_RECIPIENT_ENCODE_INFO, x: PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO) {.inline.} = self.union1.pKeyAgree = x
-proc pKeyAgree*(self: CMSG_RECIPIENT_ENCODE_INFO): PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO {.inline.} = self.union1.pKeyAgree
-proc pKeyAgree*(self: var CMSG_RECIPIENT_ENCODE_INFO): var PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO {.inline.} = self.union1.pKeyAgree
-proc `pMailList=`*(self: var CMSG_RECIPIENT_ENCODE_INFO, x: PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO) {.inline.} = self.union1.pMailList = x
-proc pMailList*(self: CMSG_RECIPIENT_ENCODE_INFO): PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO {.inline.} = self.union1.pMailList
-proc pMailList*(self: var CMSG_RECIPIENT_ENCODE_INFO): var PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO {.inline.} = self.union1.pMailList
-proc `OriginatorCertId=`*(self: var CMSG_KEY_AGREE_RECIPIENT_INFO, x: CERT_ID) {.inline.} = self.union1.OriginatorCertId = x
-proc OriginatorCertId*(self: CMSG_KEY_AGREE_RECIPIENT_INFO): CERT_ID {.inline.} = self.union1.OriginatorCertId
-proc OriginatorCertId*(self: var CMSG_KEY_AGREE_RECIPIENT_INFO): var CERT_ID {.inline.} = self.union1.OriginatorCertId
-proc `OriginatorPublicKeyInfo=`*(self: var CMSG_KEY_AGREE_RECIPIENT_INFO, x: CERT_PUBLIC_KEY_INFO) {.inline.} = self.union1.OriginatorPublicKeyInfo = x
-proc OriginatorPublicKeyInfo*(self: CMSG_KEY_AGREE_RECIPIENT_INFO): CERT_PUBLIC_KEY_INFO {.inline.} = self.union1.OriginatorPublicKeyInfo
-proc OriginatorPublicKeyInfo*(self: var CMSG_KEY_AGREE_RECIPIENT_INFO): var CERT_PUBLIC_KEY_INFO {.inline.} = self.union1.OriginatorPublicKeyInfo
-proc `pKeyTrans=`*(self: var CMSG_CMS_RECIPIENT_INFO, x: PCMSG_KEY_TRANS_RECIPIENT_INFO) {.inline.} = self.union1.pKeyTrans = x
-proc pKeyTrans*(self: CMSG_CMS_RECIPIENT_INFO): PCMSG_KEY_TRANS_RECIPIENT_INFO {.inline.} = self.union1.pKeyTrans
-proc pKeyTrans*(self: var CMSG_CMS_RECIPIENT_INFO): var PCMSG_KEY_TRANS_RECIPIENT_INFO {.inline.} = self.union1.pKeyTrans
-proc `pKeyAgree=`*(self: var CMSG_CMS_RECIPIENT_INFO, x: PCMSG_KEY_AGREE_RECIPIENT_INFO) {.inline.} = self.union1.pKeyAgree = x
-proc pKeyAgree*(self: CMSG_CMS_RECIPIENT_INFO): PCMSG_KEY_AGREE_RECIPIENT_INFO {.inline.} = self.union1.pKeyAgree
-proc pKeyAgree*(self: var CMSG_CMS_RECIPIENT_INFO): var PCMSG_KEY_AGREE_RECIPIENT_INFO {.inline.} = self.union1.pKeyAgree
-proc `pMailList=`*(self: var CMSG_CMS_RECIPIENT_INFO, x: PCMSG_MAIL_LIST_RECIPIENT_INFO) {.inline.} = self.union1.pMailList = x
-proc pMailList*(self: CMSG_CMS_RECIPIENT_INFO): PCMSG_MAIL_LIST_RECIPIENT_INFO {.inline.} = self.union1.pMailList
-proc pMailList*(self: var CMSG_CMS_RECIPIENT_INFO): var PCMSG_MAIL_LIST_RECIPIENT_INFO {.inline.} = self.union1.pMailList
-proc `hCryptProv=`*(self: var CMSG_CTRL_DECRYPT_PARA, x: HCRYPTPROV) {.inline.} = self.union1.hCryptProv = x
-proc hCryptProv*(self: CMSG_CTRL_DECRYPT_PARA): HCRYPTPROV {.inline.} = self.union1.hCryptProv
-proc hCryptProv*(self: var CMSG_CTRL_DECRYPT_PARA): var HCRYPTPROV {.inline.} = self.union1.hCryptProv
-proc `hNCryptKey=`*(self: var CMSG_CTRL_DECRYPT_PARA, x: NCRYPT_KEY_HANDLE) {.inline.} = self.union1.hNCryptKey = x
-proc hNCryptKey*(self: CMSG_CTRL_DECRYPT_PARA): NCRYPT_KEY_HANDLE {.inline.} = self.union1.hNCryptKey
-proc hNCryptKey*(self: var CMSG_CTRL_DECRYPT_PARA): var NCRYPT_KEY_HANDLE {.inline.} = self.union1.hNCryptKey
-proc `hCryptProv=`*(self: var CMSG_CTRL_KEY_TRANS_DECRYPT_PARA, x: HCRYPTPROV) {.inline.} = self.union1.hCryptProv = x
-proc hCryptProv*(self: CMSG_CTRL_KEY_TRANS_DECRYPT_PARA): HCRYPTPROV {.inline.} = self.union1.hCryptProv
-proc hCryptProv*(self: var CMSG_CTRL_KEY_TRANS_DECRYPT_PARA): var HCRYPTPROV {.inline.} = self.union1.hCryptProv
-proc `hNCryptKey=`*(self: var CMSG_CTRL_KEY_TRANS_DECRYPT_PARA, x: NCRYPT_KEY_HANDLE) {.inline.} = self.union1.hNCryptKey = x
-proc hNCryptKey*(self: CMSG_CTRL_KEY_TRANS_DECRYPT_PARA): NCRYPT_KEY_HANDLE {.inline.} = self.union1.hNCryptKey
-proc hNCryptKey*(self: var CMSG_CTRL_KEY_TRANS_DECRYPT_PARA): var NCRYPT_KEY_HANDLE {.inline.} = self.union1.hNCryptKey
-proc `hCryptProv=`*(self: var CMSG_CTRL_KEY_AGREE_DECRYPT_PARA, x: HCRYPTPROV) {.inline.} = self.union1.hCryptProv = x
-proc hCryptProv*(self: CMSG_CTRL_KEY_AGREE_DECRYPT_PARA): HCRYPTPROV {.inline.} = self.union1.hCryptProv
-proc hCryptProv*(self: var CMSG_CTRL_KEY_AGREE_DECRYPT_PARA): var HCRYPTPROV {.inline.} = self.union1.hCryptProv
-proc `hNCryptKey=`*(self: var CMSG_CTRL_KEY_AGREE_DECRYPT_PARA, x: NCRYPT_KEY_HANDLE) {.inline.} = self.union1.hNCryptKey = x
-proc hNCryptKey*(self: CMSG_CTRL_KEY_AGREE_DECRYPT_PARA): NCRYPT_KEY_HANDLE {.inline.} = self.union1.hNCryptKey
-proc hNCryptKey*(self: var CMSG_CTRL_KEY_AGREE_DECRYPT_PARA): var NCRYPT_KEY_HANDLE {.inline.} = self.union1.hNCryptKey
-proc `hKeyEncryptionKey=`*(self: var CMSG_CTRL_MAIL_LIST_DECRYPT_PARA, x: HCRYPTKEY) {.inline.} = self.union1.hKeyEncryptionKey = x
-proc hKeyEncryptionKey*(self: CMSG_CTRL_MAIL_LIST_DECRYPT_PARA): HCRYPTKEY {.inline.} = self.union1.hKeyEncryptionKey
-proc hKeyEncryptionKey*(self: var CMSG_CTRL_MAIL_LIST_DECRYPT_PARA): var HCRYPTKEY {.inline.} = self.union1.hKeyEncryptionKey
-proc `pvKeyEncryptionKey=`*(self: var CMSG_CTRL_MAIL_LIST_DECRYPT_PARA, x: pointer) {.inline.} = self.union1.pvKeyEncryptionKey = x
-proc pvKeyEncryptionKey*(self: CMSG_CTRL_MAIL_LIST_DECRYPT_PARA): pointer {.inline.} = self.union1.pvKeyEncryptionKey
-proc pvKeyEncryptionKey*(self: var CMSG_CTRL_MAIL_LIST_DECRYPT_PARA): var pointer {.inline.} = self.union1.pvKeyEncryptionKey
-proc `hContentEncryptKey=`*(self: var CMSG_CONTENT_ENCRYPT_INFO, x: HCRYPTKEY) {.inline.} = self.union1.hContentEncryptKey = x
-proc hContentEncryptKey*(self: CMSG_CONTENT_ENCRYPT_INFO): HCRYPTKEY {.inline.} = self.union1.hContentEncryptKey
-proc hContentEncryptKey*(self: var CMSG_CONTENT_ENCRYPT_INFO): var HCRYPTKEY {.inline.} = self.union1.hContentEncryptKey
-proc `hCNGContentEncryptKey=`*(self: var CMSG_CONTENT_ENCRYPT_INFO, x: BCRYPT_KEY_HANDLE) {.inline.} = self.union1.hCNGContentEncryptKey = x
-proc hCNGContentEncryptKey*(self: CMSG_CONTENT_ENCRYPT_INFO): BCRYPT_KEY_HANDLE {.inline.} = self.union1.hCNGContentEncryptKey
-proc hCNGContentEncryptKey*(self: var CMSG_CONTENT_ENCRYPT_INFO): var BCRYPT_KEY_HANDLE {.inline.} = self.union1.hCNGContentEncryptKey
-proc `OriginatorCertId=`*(self: var CMSG_KEY_AGREE_ENCRYPT_INFO, x: CERT_ID) {.inline.} = self.union1.OriginatorCertId = x
-proc OriginatorCertId*(self: CMSG_KEY_AGREE_ENCRYPT_INFO): CERT_ID {.inline.} = self.union1.OriginatorCertId
-proc OriginatorCertId*(self: var CMSG_KEY_AGREE_ENCRYPT_INFO): var CERT_ID {.inline.} = self.union1.OriginatorCertId
-proc `OriginatorPublicKeyInfo=`*(self: var CMSG_KEY_AGREE_ENCRYPT_INFO, x: CERT_PUBLIC_KEY_INFO) {.inline.} = self.union1.OriginatorPublicKeyInfo = x
-proc OriginatorPublicKeyInfo*(self: CMSG_KEY_AGREE_ENCRYPT_INFO): CERT_PUBLIC_KEY_INFO {.inline.} = self.union1.OriginatorPublicKeyInfo
-proc OriginatorPublicKeyInfo*(self: var CMSG_KEY_AGREE_ENCRYPT_INFO): var CERT_PUBLIC_KEY_INFO {.inline.} = self.union1.OriginatorPublicKeyInfo
-proc `hCryptProv=`*(self: var CERT_KEY_CONTEXT, x: HCRYPTPROV) {.inline.} = self.union1.hCryptProv = x
-proc hCryptProv*(self: CERT_KEY_CONTEXT): HCRYPTPROV {.inline.} = self.union1.hCryptProv
-proc hCryptProv*(self: var CERT_KEY_CONTEXT): var HCRYPTPROV {.inline.} = self.union1.hCryptProv
-proc `hNCryptKey=`*(self: var CERT_KEY_CONTEXT, x: NCRYPT_KEY_HANDLE) {.inline.} = self.union1.hNCryptKey = x
-proc hNCryptKey*(self: CERT_KEY_CONTEXT): NCRYPT_KEY_HANDLE {.inline.} = self.union1.hNCryptKey
-proc hNCryptKey*(self: var CERT_KEY_CONTEXT): var NCRYPT_KEY_HANDLE {.inline.} = self.union1.hNCryptKey
-proc `hKeyBase=`*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA, x: HKEY) {.inline.} = self.union1.hKeyBase = x
-proc hKeyBase*(self: CERT_SYSTEM_STORE_RELOCATE_PARA): HKEY {.inline.} = self.union1.hKeyBase
-proc hKeyBase*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA): var HKEY {.inline.} = self.union1.hKeyBase
-proc `pvBase=`*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA, x: pointer) {.inline.} = self.union1.pvBase = x
-proc pvBase*(self: CERT_SYSTEM_STORE_RELOCATE_PARA): pointer {.inline.} = self.union1.pvBase
-proc pvBase*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA): var pointer {.inline.} = self.union1.pvBase
-proc `pvSystemStore=`*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA, x: pointer) {.inline.} = self.union2.pvSystemStore = x
-proc pvSystemStore*(self: CERT_SYSTEM_STORE_RELOCATE_PARA): pointer {.inline.} = self.union2.pvSystemStore
-proc pvSystemStore*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA): var pointer {.inline.} = self.union2.pvSystemStore
-proc `pszSystemStore=`*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA, x: LPCSTR) {.inline.} = self.union2.pszSystemStore = x
-proc pszSystemStore*(self: CERT_SYSTEM_STORE_RELOCATE_PARA): LPCSTR {.inline.} = self.union2.pszSystemStore
-proc pszSystemStore*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA): var LPCSTR {.inline.} = self.union2.pszSystemStore
-proc `pwszSystemStore=`*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA, x: LPCWSTR) {.inline.} = self.union2.pwszSystemStore = x
-proc pwszSystemStore*(self: CERT_SYSTEM_STORE_RELOCATE_PARA): LPCWSTR {.inline.} = self.union2.pwszSystemStore
-proc pwszSystemStore*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA): var LPCWSTR {.inline.} = self.union2.pwszSystemStore
-proc `hCryptProv=`*(self: var CRYPT_KEY_SIGN_MESSAGE_PARA, x: HCRYPTPROV) {.inline.} = self.union1.hCryptProv = x
-proc hCryptProv*(self: CRYPT_KEY_SIGN_MESSAGE_PARA): HCRYPTPROV {.inline.} = self.union1.hCryptProv
-proc hCryptProv*(self: var CRYPT_KEY_SIGN_MESSAGE_PARA): var HCRYPTPROV {.inline.} = self.union1.hCryptProv
-proc `hNCryptKey=`*(self: var CRYPT_KEY_SIGN_MESSAGE_PARA, x: NCRYPT_KEY_HANDLE) {.inline.} = self.union1.hNCryptKey = x
-proc hNCryptKey*(self: CRYPT_KEY_SIGN_MESSAGE_PARA): NCRYPT_KEY_HANDLE {.inline.} = self.union1.hNCryptKey
-proc hNCryptKey*(self: var CRYPT_KEY_SIGN_MESSAGE_PARA): var NCRYPT_KEY_HANDLE {.inline.} = self.union1.hNCryptKey
-proc `cbStruct=`*(self: var HTTPSPolicyCallbackData, x: DWORD) {.inline.} = self.union1.cbStruct = x
-proc cbStruct*(self: HTTPSPolicyCallbackData): DWORD {.inline.} = self.union1.cbStruct
-proc cbStruct*(self: var HTTPSPolicyCallbackData): var DWORD {.inline.} = self.union1.cbStruct
-proc `cbSize=`*(self: var HTTPSPolicyCallbackData, x: DWORD) {.inline.} = self.union1.cbSize = x
-proc cbSize*(self: HTTPSPolicyCallbackData): DWORD {.inline.} = self.union1.cbSize
-proc cbSize*(self: var HTTPSPolicyCallbackData): var DWORD {.inline.} = self.union1.cbSize
+proc CryptCreateAsyncHandle*(
+  dwFlags: DWORD, phAsync: PHCRYPTASYNC
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSetAsyncParam*(
+  hAsync: HCRYPTASYNC,
+  pszParamOid: LPSTR,
+  pvParam: LPVOID,
+  pfnFree: PFN_CRYPT_ASYNC_PARAM_FREE_FUNC,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptGetAsyncParam*(
+  hAsync: HCRYPTASYNC,
+  pszParamOid: LPSTR,
+  ppvParam: ptr LPVOID,
+  ppfnFree: ptr PFN_CRYPT_ASYNC_PARAM_FREE_FUNC,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptCloseAsyncHandle*(
+  hAsync: HCRYPTASYNC
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptRetrieveObjectByUrlA*(
+  pszUrl: LPCSTR,
+  pszObjectOid: LPCSTR,
+  dwRetrievalFlags: DWORD,
+  dwTimeout: DWORD,
+  ppvObject: ptr LPVOID,
+  hAsyncRetrieve: HCRYPTASYNC,
+  pCredentials: PCRYPT_CREDENTIALS,
+  pvVerify: LPVOID,
+  pAuxInfo: PCRYPT_RETRIEVE_AUX_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
+
+proc CryptRetrieveObjectByUrlW*(
+  pszUrl: LPCWSTR,
+  pszObjectOid: LPCSTR,
+  dwRetrievalFlags: DWORD,
+  dwTimeout: DWORD,
+  ppvObject: ptr LPVOID,
+  hAsyncRetrieve: HCRYPTASYNC,
+  pCredentials: PCRYPT_CREDENTIALS,
+  pvVerify: LPVOID,
+  pAuxInfo: PCRYPT_RETRIEVE_AUX_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
+
+proc CryptInstallCancelRetrieval*(
+  pfnCancel: PFN_CRYPT_CANCEL_RETRIEVAL,
+  pvArg: pointer,
+  dwFlags: DWORD,
+  pvReserved: pointer,
+): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
+
+proc CryptUninstallCancelRetrieval*(
+  dwFlags: DWORD, pvReserved: pointer
+): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
+
+proc CryptCancelAsyncRetrieval*(
+  hAsyncRetrieval: HCRYPTASYNC
+): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
+
+proc CryptGetObjectUrl*(
+  pszUrlOid: LPCSTR,
+  pvPara: LPVOID,
+  dwFlags: DWORD,
+  pUrlArray: PCRYPT_URL_ARRAY,
+  pcbUrlArray: ptr DWORD,
+  pUrlInfo: PCRYPT_URL_INFO,
+  pcbUrlInfo: ptr DWORD,
+  pvReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
+
+proc CryptGetTimeValidObject*(
+  pszTimeValidOid: LPCSTR,
+  pvPara: LPVOID,
+  pIssuer: PCCERT_CONTEXT,
+  pftValidFor: LPFILETIME,
+  dwFlags: DWORD,
+  dwTimeout: DWORD,
+  ppvObject: ptr LPVOID,
+  pCredentials: PCRYPT_CREDENTIALS,
+  pExtraInfo: PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
+
+proc CryptFlushTimeValidObject*(
+  pszFlushTimeValidOid: LPCSTR,
+  pvPara: LPVOID,
+  pIssuer: PCCERT_CONTEXT,
+  dwFlags: DWORD,
+  pvReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc.}
+
+proc CertCreateSelfSignCertificate*(
+  hCryptProvOrNCryptKey: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE,
+  pSubjectIssuerBlob: PCERT_NAME_BLOB,
+  dwFlags: DWORD,
+  pKeyProvInfo: PCRYPT_KEY_PROV_INFO,
+  pSignatureAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER,
+  pStartTime: PSYSTEMTIME,
+  pEndTime: PSYSTEMTIME,
+  pExtensions: PCERT_EXTENSIONS,
+): PCCERT_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptGetKeyIdentifierProperty*(
+  pKeyIdentifier: ptr CRYPT_HASH_BLOB,
+  dwPropId: DWORD,
+  dwFlags: DWORD,
+  pwszComputerName: LPCWSTR,
+  pvReserved: pointer,
+  pvData: pointer,
+  pcbData: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSetKeyIdentifierProperty*(
+  pKeyIdentifier: ptr CRYPT_HASH_BLOB,
+  dwPropId: DWORD,
+  dwFlags: DWORD,
+  pwszComputerName: LPCWSTR,
+  pvReserved: pointer,
+  pvData: pointer,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptEnumKeyIdentifierProperties*(
+  pKeyIdentifier: ptr CRYPT_HASH_BLOB,
+  dwPropId: DWORD,
+  dwFlags: DWORD,
+  pwszComputerName: LPCWSTR,
+  pvReserved: pointer,
+  pvArg: pointer,
+  pfnEnum: PFN_CRYPT_ENUM_KEYID_PROP,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptCreateKeyIdentifierFromCSP*(
+  dwCertEncodingType: DWORD,
+  pszPubKeyOID: LPCSTR,
+  pPubKeyStruc: ptr PUBLICKEYSTRUC,
+  cbPubKeyStruc: DWORD,
+  dwFlags: DWORD,
+  pvReserved: pointer,
+  pbHash: ptr BYTE,
+  pcbHash: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertCreateCertificateChainEngine*(
+  pConfig: PCERT_CHAIN_ENGINE_CONFIG, phChainEngine: ptr HCERTCHAINENGINE
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFreeCertificateChainEngine*(
+  hChainEngine: HCERTCHAINENGINE
+): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertResyncCertificateChainEngine*(
+  hChainEngine: HCERTCHAINENGINE
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetCertificateChain*(
+  hChainEngine: HCERTCHAINENGINE,
+  pCertContext: PCCERT_CONTEXT,
+  pTime: LPFILETIME,
+  hAdditionalStore: HCERTSTORE,
+  pChainPara: PCERT_CHAIN_PARA,
+  dwFlags: DWORD,
+  pvReserved: LPVOID,
+  ppChainContext: ptr PCCERT_CHAIN_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFreeCertificateChain*(
+  pChainContext: PCCERT_CHAIN_CONTEXT
+): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertDuplicateCertificateChain*(
+  pChainContext: PCCERT_CHAIN_CONTEXT
+): PCCERT_CHAIN_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFindChainInStore*(
+  hCertStore: HCERTSTORE,
+  dwCertEncodingType: DWORD,
+  dwFindFlags: DWORD,
+  dwFindType: DWORD,
+  pvFindPara: pointer,
+  pPrevChainContext: PCCERT_CHAIN_CONTEXT,
+): PCCERT_CHAIN_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertVerifyCertificateChainPolicy*(
+  pszPolicyOID: LPCSTR,
+  pChainContext: PCCERT_CHAIN_CONTEXT,
+  pPolicyPara: PCERT_CHAIN_POLICY_PARA,
+  pPolicyStatus: PCERT_CHAIN_POLICY_STATUS,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptStringToBinaryA*(
+  pszString: LPCSTR,
+  cchString: DWORD,
+  dwFlags: DWORD,
+  pbBinary: ptr BYTE,
+  pcbBinary: ptr DWORD,
+  pdwSkip: ptr DWORD,
+  pdwFlags: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptStringToBinaryW*(
+  pszString: LPCWSTR,
+  cchString: DWORD,
+  dwFlags: DWORD,
+  pbBinary: ptr BYTE,
+  pcbBinary: ptr DWORD,
+  pdwSkip: ptr DWORD,
+  pdwFlags: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptBinaryToStringA*(
+  pbBinary: ptr BYTE,
+  cbBinary: DWORD,
+  dwFlags: DWORD,
+  pszString: LPSTR,
+  pcchString: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptBinaryToStringW*(
+  pbBinary: ptr BYTE,
+  cbBinary: DWORD,
+  dwFlags: DWORD,
+  pszString: LPWSTR,
+  pcchString: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc PFXImportCertStore*(
+  pPFX: ptr CRYPT_DATA_BLOB, szPassword: LPCWSTR, dwFlags: DWORD
+): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc PFXIsPFXBlob*(
+  pPFX: ptr CRYPT_DATA_BLOB
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc PFXVerifyPassword*(
+  pPFX: ptr CRYPT_DATA_BLOB, szPassword: LPCWSTR, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc PFXExportCertStoreEx*(
+  hStore: HCERTSTORE,
+  pPFX: ptr CRYPT_DATA_BLOB,
+  szPassword: LPCWSTR,
+  pvPara: pointer,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc PFXExportCertStore*(
+  hStore: HCERTSTORE, pPFX: ptr CRYPT_DATA_BLOB, szPassword: LPCWSTR, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertOpenServerOcspResponse*(
+  pChainContext: PCCERT_CHAIN_CONTEXT, dwFlags: DWORD, pvReserved: LPVOID
+): HCERT_SERVER_OCSP_RESPONSE {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddRefServerOcspResponse*(
+  hServerOcspResponse: HCERT_SERVER_OCSP_RESPONSE
+): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertCloseServerOcspResponse*(
+  hServerOcspResponse: HCERT_SERVER_OCSP_RESPONSE, dwFlags: DWORD
+): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertGetServerOcspResponseContext*(
+  hServerOcspResponse: HCERT_SERVER_OCSP_RESPONSE, dwFlags: DWORD, pvReserved: LPVOID
+): PCCERT_SERVER_OCSP_RESPONSE_CONTEXT {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertAddRefServerOcspResponseContext*(
+  pServerOcspResponseContext: PCCERT_SERVER_OCSP_RESPONSE_CONTEXT
+): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFreeServerOcspResponseContext*(
+  pServerOcspResponseContext: PCCERT_SERVER_OCSP_RESPONSE_CONTEXT
+): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertRetrieveLogoOrBiometricInfo*(
+  pCertContext: PCCERT_CONTEXT,
+  lpszLogoOrBiometricType: LPCSTR,
+  dwRetrievalFlags: DWORD,
+  dwTimeout: DWORD,
+  dwFlags: DWORD,
+  pvReserved: pointer,
+  ppbData: ptr ptr BYTE,
+  pcbData: ptr DWORD,
+  ppwszMimeType: ptr LPWSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertSelectCertificateChains*(
+  pSelectionContext: LPCGUID,
+  dwFlags: DWORD,
+  pChainParameters: PCCERT_SELECT_CHAIN_PARA,
+  cCriteria: DWORD,
+  rgpCriteria: PCCERT_SELECT_CRITERIA,
+  hStore: HCERTSTORE,
+  pcSelection: PDWORD,
+  pprgpSelection: ptr ptr PCCERT_CHAIN_CONTEXT,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CertFreeCertificateChainList*(
+  prgpSelection: ptr PCCERT_CHAIN_CONTEXT
+): VOID {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptRetrieveTimeStamp*(
+  wszUrl: LPCWSTR,
+  dwRetrievalFlags: DWORD,
+  dwTimeout: DWORD,
+  pszHashId: LPCSTR,
+  pPara: ptr CRYPT_TIMESTAMP_PARA,
+  pbData: ptr BYTE,
+  cbData: DWORD,
+  ppTsContext: ptr PCRYPT_TIMESTAMP_CONTEXT,
+  ppTsSigner: ptr PCCERT_CONTEXT,
+  phStore: ptr HCERTSTORE,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptVerifyTimeStampSignature*(
+  pbTSContentInfo: ptr BYTE,
+  cbTSContentInfo: DWORD,
+  pbData: ptr BYTE,
+  cbData: DWORD,
+  hAdditionalStore: HCERTSTORE,
+  ppTsContext: ptr PCRYPT_TIMESTAMP_CONTEXT,
+  ppTsSigner: ptr PCCERT_CONTEXT,
+  phStore: ptr HCERTSTORE,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptProtectData*(
+  pDataIn: ptr DATA_BLOB,
+  szDataDescr: LPCWSTR,
+  pOptionalEntropy: ptr DATA_BLOB,
+  pvReserved: PVOID,
+  pPromptStruct: ptr CRYPTPROTECT_PROMPTSTRUCT,
+  dwFlags: DWORD,
+  pDataOut: ptr DATA_BLOB,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptUnprotectData*(
+  pDataIn: ptr DATA_BLOB,
+  ppszDataDescr: ptr LPWSTR,
+  pOptionalEntropy: ptr DATA_BLOB,
+  pvReserved: PVOID,
+  pPromptStruct: ptr CRYPTPROTECT_PROMPTSTRUCT,
+  dwFlags: DWORD,
+  pDataOut: ptr DATA_BLOB,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptProtectMemory*(
+  pDataIn: LPVOID, cbDataIn: DWORD, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptUnprotectMemory*(
+  pDataIn: LPVOID, cbDataIn: DWORD, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptUpdateProtectedState*(
+  pOldSid: PSID,
+  pwszOldPassword: LPCWSTR,
+  dwFlags: DWORD,
+  pdwSuccessCount: ptr DWORD,
+  pdwFailureCount: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc `pOtherName=`*(self: var CERT_ALT_NAME_ENTRY, x: PCERT_OTHER_NAME) {.inline.} =
+  self.union1.pOtherName = x
+
+proc pOtherName*(self: CERT_ALT_NAME_ENTRY): PCERT_OTHER_NAME {.inline.} =
+  self.union1.pOtherName
+
+proc pOtherName*(self: var CERT_ALT_NAME_ENTRY): var PCERT_OTHER_NAME {.inline.} =
+  self.union1.pOtherName
+
+proc `pwszRfc822Name=`*(self: var CERT_ALT_NAME_ENTRY, x: LPWSTR) {.inline.} =
+  self.union1.pwszRfc822Name = x
+
+proc pwszRfc822Name*(self: CERT_ALT_NAME_ENTRY): LPWSTR {.inline.} =
+  self.union1.pwszRfc822Name
+
+proc pwszRfc822Name*(self: var CERT_ALT_NAME_ENTRY): var LPWSTR {.inline.} =
+  self.union1.pwszRfc822Name
+
+proc `pwszDNSName=`*(self: var CERT_ALT_NAME_ENTRY, x: LPWSTR) {.inline.} =
+  self.union1.pwszDNSName = x
+
+proc pwszDNSName*(self: CERT_ALT_NAME_ENTRY): LPWSTR {.inline.} =
+  self.union1.pwszDNSName
+
+proc pwszDNSName*(self: var CERT_ALT_NAME_ENTRY): var LPWSTR {.inline.} =
+  self.union1.pwszDNSName
+
+proc `DirectoryName=`*(self: var CERT_ALT_NAME_ENTRY, x: CERT_NAME_BLOB) {.inline.} =
+  self.union1.DirectoryName = x
+
+proc DirectoryName*(self: CERT_ALT_NAME_ENTRY): CERT_NAME_BLOB {.inline.} =
+  self.union1.DirectoryName
+
+proc DirectoryName*(self: var CERT_ALT_NAME_ENTRY): var CERT_NAME_BLOB {.inline.} =
+  self.union1.DirectoryName
+
+proc `pwszURL=`*(self: var CERT_ALT_NAME_ENTRY, x: LPWSTR) {.inline.} =
+  self.union1.pwszURL = x
+
+proc pwszURL*(self: CERT_ALT_NAME_ENTRY): LPWSTR {.inline.} =
+  self.union1.pwszURL
+
+proc pwszURL*(self: var CERT_ALT_NAME_ENTRY): var LPWSTR {.inline.} =
+  self.union1.pwszURL
+
+proc `IPAddress=`*(self: var CERT_ALT_NAME_ENTRY, x: CRYPT_DATA_BLOB) {.inline.} =
+  self.union1.IPAddress = x
+
+proc IPAddress*(self: CERT_ALT_NAME_ENTRY): CRYPT_DATA_BLOB {.inline.} =
+  self.union1.IPAddress
+
+proc IPAddress*(self: var CERT_ALT_NAME_ENTRY): var CRYPT_DATA_BLOB {.inline.} =
+  self.union1.IPAddress
+
+proc `pszRegisteredID=`*(self: var CERT_ALT_NAME_ENTRY, x: LPSTR) {.inline.} =
+  self.union1.pszRegisteredID = x
+
+proc pszRegisteredID*(self: CERT_ALT_NAME_ENTRY): LPSTR {.inline.} =
+  self.union1.pszRegisteredID
+
+proc pszRegisteredID*(self: var CERT_ALT_NAME_ENTRY): var LPSTR {.inline.} =
+  self.union1.pszRegisteredID
+
+proc `FullName=`*(self: var CRL_DIST_POINT_NAME, x: CERT_ALT_NAME_INFO) {.inline.} =
+  self.union1.FullName = x
+
+proc FullName*(self: CRL_DIST_POINT_NAME): CERT_ALT_NAME_INFO {.inline.} =
+  self.union1.FullName
+
+proc FullName*(self: var CRL_DIST_POINT_NAME): var CERT_ALT_NAME_INFO {.inline.} =
+  self.union1.FullName
+
+proc `pTaggedCertRequest=`*(
+    self: var CMC_TAGGED_REQUEST, x: PCMC_TAGGED_CERT_REQUEST
+) {.inline.} =
+  self.union1.pTaggedCertRequest = x
+
+proc pTaggedCertRequest*(
+    self: CMC_TAGGED_REQUEST
+): PCMC_TAGGED_CERT_REQUEST {.inline.} =
+  self.union1.pTaggedCertRequest
+
+proc pTaggedCertRequest*(
+    self: var CMC_TAGGED_REQUEST
+): var PCMC_TAGGED_CERT_REQUEST {.inline.} =
+  self.union1.pTaggedCertRequest
+
+proc `dwFailInfo=`*(self: var CMC_STATUS_INFO, x: DWORD) {.inline.} =
+  self.union1.dwFailInfo = x
+
+proc dwFailInfo*(self: CMC_STATUS_INFO): DWORD {.inline.} =
+  self.union1.dwFailInfo
+
+proc dwFailInfo*(self: var CMC_STATUS_INFO): var DWORD {.inline.} =
+  self.union1.dwFailInfo
+
+proc `pPendInfo=`*(self: var CMC_STATUS_INFO, x: PCMC_PEND_INFO) {.inline.} =
+  self.union1.pPendInfo = x
+
+proc pPendInfo*(self: CMC_STATUS_INFO): PCMC_PEND_INFO {.inline.} =
+  self.union1.pPendInfo
+
+proc pPendInfo*(self: var CMC_STATUS_INFO): var PCMC_PEND_INFO {.inline.} =
+  self.union1.pPendInfo
+
+proc `dwNumBits=`*(self: var CERT_LOGOTYPE_IMAGE_INFO, x: DWORD) {.inline.} =
+  self.union1.dwNumBits = x
+
+proc dwNumBits*(self: CERT_LOGOTYPE_IMAGE_INFO): DWORD {.inline.} =
+  self.union1.dwNumBits
+
+proc dwNumBits*(self: var CERT_LOGOTYPE_IMAGE_INFO): var DWORD {.inline.} =
+  self.union1.dwNumBits
+
+proc `dwTableSize=`*(self: var CERT_LOGOTYPE_IMAGE_INFO, x: DWORD) {.inline.} =
+  self.union1.dwTableSize = x
+
+proc dwTableSize*(self: CERT_LOGOTYPE_IMAGE_INFO): DWORD {.inline.} =
+  self.union1.dwTableSize
+
+proc dwTableSize*(self: var CERT_LOGOTYPE_IMAGE_INFO): var DWORD {.inline.} =
+  self.union1.dwTableSize
+
+proc `pLogotypeDirectInfo=`*(
+    self: var CERT_LOGOTYPE_INFO, x: PCERT_LOGOTYPE_DATA
+) {.inline.} =
+  self.union1.pLogotypeDirectInfo = x
+
+proc pLogotypeDirectInfo*(self: CERT_LOGOTYPE_INFO): PCERT_LOGOTYPE_DATA {.inline.} =
+  self.union1.pLogotypeDirectInfo
+
+proc pLogotypeDirectInfo*(
+    self: var CERT_LOGOTYPE_INFO
+): var PCERT_LOGOTYPE_DATA {.inline.} =
+  self.union1.pLogotypeDirectInfo
+
+proc `pLogotypeIndirectInfo=`*(
+    self: var CERT_LOGOTYPE_INFO, x: PCERT_LOGOTYPE_REFERENCE
+) {.inline.} =
+  self.union1.pLogotypeIndirectInfo = x
+
+proc pLogotypeIndirectInfo*(
+    self: CERT_LOGOTYPE_INFO
+): PCERT_LOGOTYPE_REFERENCE {.inline.} =
+  self.union1.pLogotypeIndirectInfo
+
+proc pLogotypeIndirectInfo*(
+    self: var CERT_LOGOTYPE_INFO
+): var PCERT_LOGOTYPE_REFERENCE {.inline.} =
+  self.union1.pLogotypeIndirectInfo
+
+proc `dwPredefined=`*(self: var CERT_BIOMETRIC_DATA, x: DWORD) {.inline.} =
+  self.union1.dwPredefined = x
+
+proc dwPredefined*(self: CERT_BIOMETRIC_DATA): DWORD {.inline.} =
+  self.union1.dwPredefined
+
+proc dwPredefined*(self: var CERT_BIOMETRIC_DATA): var DWORD {.inline.} =
+  self.union1.dwPredefined
+
+proc `pszObjId=`*(self: var CERT_BIOMETRIC_DATA, x: LPSTR) {.inline.} =
+  self.union1.pszObjId = x
+
+proc pszObjId*(self: CERT_BIOMETRIC_DATA): LPSTR {.inline.} =
+  self.union1.pszObjId
+
+proc pszObjId*(self: var CERT_BIOMETRIC_DATA): var LPSTR {.inline.} =
+  self.union1.pszObjId
+
+proc `pRevokedInfo=`*(
+    self: var OCSP_BASIC_RESPONSE_ENTRY, x: POCSP_BASIC_REVOKED_INFO
+) {.inline.} =
+  self.union1.pRevokedInfo = x
+
+proc pRevokedInfo*(
+    self: OCSP_BASIC_RESPONSE_ENTRY
+): POCSP_BASIC_REVOKED_INFO {.inline.} =
+  self.union1.pRevokedInfo
+
+proc pRevokedInfo*(
+    self: var OCSP_BASIC_RESPONSE_ENTRY
+): var POCSP_BASIC_REVOKED_INFO {.inline.} =
+  self.union1.pRevokedInfo
+
+proc `ByNameResponderId=`*(
+    self: var OCSP_BASIC_RESPONSE_INFO, x: CERT_NAME_BLOB
+) {.inline.} =
+  self.union1.ByNameResponderId = x
+
+proc ByNameResponderId*(self: OCSP_BASIC_RESPONSE_INFO): CERT_NAME_BLOB {.inline.} =
+  self.union1.ByNameResponderId
+
+proc ByNameResponderId*(
+    self: var OCSP_BASIC_RESPONSE_INFO
+): var CERT_NAME_BLOB {.inline.} =
+  self.union1.ByNameResponderId
+
+proc `ByKeyResponderId=`*(
+    self: var OCSP_BASIC_RESPONSE_INFO, x: CRYPT_HASH_BLOB
+) {.inline.} =
+  self.union1.ByKeyResponderId = x
+
+proc ByKeyResponderId*(self: OCSP_BASIC_RESPONSE_INFO): CRYPT_HASH_BLOB {.inline.} =
+  self.union1.ByKeyResponderId
+
+proc ByKeyResponderId*(
+    self: var OCSP_BASIC_RESPONSE_INFO
+): var CRYPT_HASH_BLOB {.inline.} =
+  self.union1.ByKeyResponderId
+
+proc `dwValue=`*(self: var CRYPT_OID_INFO, x: DWORD) {.inline.} =
+  self.union1.dwValue = x
+
+proc dwValue*(self: CRYPT_OID_INFO): DWORD {.inline.} =
+  self.union1.dwValue
+
+proc dwValue*(self: var CRYPT_OID_INFO): var DWORD {.inline.} =
+  self.union1.dwValue
+
+proc `Algid=`*(self: var CRYPT_OID_INFO, x: ALG_ID) {.inline.} =
+  self.union1.Algid = x
+
+proc algid*(self: CRYPT_OID_INFO): ALG_ID {.inline.} =
+  self.union1.Algid
+
+proc algid*(self: var CRYPT_OID_INFO): var ALG_ID {.inline.} =
+  self.union1.Algid
+
+proc `dwLength=`*(self: var CRYPT_OID_INFO, x: DWORD) {.inline.} =
+  self.union1.dwLength = x
+
+proc dwLength*(self: CRYPT_OID_INFO): DWORD {.inline.} =
+  self.union1.dwLength
+
+proc dwLength*(self: var CRYPT_OID_INFO): var DWORD {.inline.} =
+  self.union1.dwLength
+
+proc `pvInfo=`*(self: var CERT_STRONG_SIGN_PARA, x: pointer) {.inline.} =
+  self.union1.pvInfo = x
+
+proc pvInfo*(self: CERT_STRONG_SIGN_PARA): pointer {.inline.} =
+  self.union1.pvInfo
+
+proc pvInfo*(self: var CERT_STRONG_SIGN_PARA): var pointer {.inline.} =
+  self.union1.pvInfo
+
+proc `pSerializedInfo=`*(
+    self: var CERT_STRONG_SIGN_PARA, x: PCERT_STRONG_SIGN_SERIALIZED_INFO
+) {.inline.} =
+  self.union1.pSerializedInfo = x
+
+proc pSerializedInfo*(
+    self: CERT_STRONG_SIGN_PARA
+): PCERT_STRONG_SIGN_SERIALIZED_INFO {.inline.} =
+  self.union1.pSerializedInfo
+
+proc pSerializedInfo*(
+    self: var CERT_STRONG_SIGN_PARA
+): var PCERT_STRONG_SIGN_SERIALIZED_INFO {.inline.} =
+  self.union1.pSerializedInfo
+
+proc `pszOID=`*(self: var CERT_STRONG_SIGN_PARA, x: LPSTR) {.inline.} =
+  self.union1.pszOID = x
+
+proc pszOID*(self: CERT_STRONG_SIGN_PARA): LPSTR {.inline.} =
+  self.union1.pszOID
+
+proc pszOID*(self: var CERT_STRONG_SIGN_PARA): var LPSTR {.inline.} =
+  self.union1.pszOID
+
+proc `IssuerSerialNumber=`*(
+    self: var CERT_ID, x: CERT_ISSUER_SERIAL_NUMBER
+) {.inline.} =
+  self.union1.IssuerSerialNumber = x
+
+proc IssuerSerialNumber*(self: CERT_ID): CERT_ISSUER_SERIAL_NUMBER {.inline.} =
+  self.union1.IssuerSerialNumber
+
+proc IssuerSerialNumber*(self: var CERT_ID): var CERT_ISSUER_SERIAL_NUMBER {.inline.} =
+  self.union1.IssuerSerialNumber
+
+proc `KeyId=`*(self: var CERT_ID, x: CRYPT_HASH_BLOB) {.inline.} =
+  self.union1.KeyId = x
+
+proc KeyId*(self: CERT_ID): CRYPT_HASH_BLOB {.inline.} =
+  self.union1.KeyId
+
+proc KeyId*(self: var CERT_ID): var CRYPT_HASH_BLOB {.inline.} =
+  self.union1.KeyId
+
+proc `HashId=`*(self: var CERT_ID, x: CRYPT_HASH_BLOB) {.inline.} =
+  self.union1.HashId = x
+
+proc HashId*(self: CERT_ID): CRYPT_HASH_BLOB {.inline.} =
+  self.union1.HashId
+
+proc HashId*(self: var CERT_ID): var CRYPT_HASH_BLOB {.inline.} =
+  self.union1.HashId
+
+proc `hCryptProv=`*(self: var CMSG_SIGNER_ENCODE_INFO, x: HCRYPTPROV) {.inline.} =
+  self.union1.hCryptProv = x
+
+proc hCryptProv*(self: CMSG_SIGNER_ENCODE_INFO): HCRYPTPROV {.inline.} =
+  self.union1.hCryptProv
+
+proc hCryptProv*(self: var CMSG_SIGNER_ENCODE_INFO): var HCRYPTPROV {.inline.} =
+  self.union1.hCryptProv
+
+proc `hNCryptKey=`*(
+    self: var CMSG_SIGNER_ENCODE_INFO, x: NCRYPT_KEY_HANDLE
+) {.inline.} =
+  self.union1.hNCryptKey = x
+
+proc hNCryptKey*(self: CMSG_SIGNER_ENCODE_INFO): NCRYPT_KEY_HANDLE {.inline.} =
+  self.union1.hNCryptKey
+
+proc hNCryptKey*(self: var CMSG_SIGNER_ENCODE_INFO): var NCRYPT_KEY_HANDLE {.inline.} =
+  self.union1.hNCryptKey
+
+proc `pEphemeralAlgorithm=`*(
+    self: var CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO, x: PCRYPT_ALGORITHM_IDENTIFIER
+) {.inline.} =
+  self.union1.pEphemeralAlgorithm = x
+
+proc pEphemeralAlgorithm*(
+    self: CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
+): PCRYPT_ALGORITHM_IDENTIFIER {.inline.} =
+  self.union1.pEphemeralAlgorithm
+
+proc pEphemeralAlgorithm*(
+    self: var CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
+): var PCRYPT_ALGORITHM_IDENTIFIER {.inline.} =
+  self.union1.pEphemeralAlgorithm
+
+proc `pSenderId=`*(
+    self: var CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO, x: PCERT_ID
+) {.inline.} =
+  self.union1.pSenderId = x
+
+proc pSenderId*(self: CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO): PCERT_ID {.inline.} =
+  self.union1.pSenderId
+
+proc pSenderId*(
+    self: var CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
+): var PCERT_ID {.inline.} =
+  self.union1.pSenderId
+
+proc `hKeyEncryptionKey=`*(
+    self: var CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO, x: HCRYPTKEY
+) {.inline.} =
+  self.union1.hKeyEncryptionKey = x
+
+proc hKeyEncryptionKey*(
+    self: CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
+): HCRYPTKEY {.inline.} =
+  self.union1.hKeyEncryptionKey
+
+proc hKeyEncryptionKey*(
+    self: var CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
+): var HCRYPTKEY {.inline.} =
+  self.union1.hKeyEncryptionKey
+
+proc `pvKeyEncryptionKey=`*(
+    self: var CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO, x: pointer
+) {.inline.} =
+  self.union1.pvKeyEncryptionKey = x
+
+proc pvKeyEncryptionKey*(
+    self: CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
+): pointer {.inline.} =
+  self.union1.pvKeyEncryptionKey
+
+proc pvKeyEncryptionKey*(
+    self: var CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
+): var pointer {.inline.} =
+  self.union1.pvKeyEncryptionKey
+
+proc `pKeyTrans=`*(
+    self: var CMSG_RECIPIENT_ENCODE_INFO, x: PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO
+) {.inline.} =
+  self.union1.pKeyTrans = x
+
+proc pKeyTrans*(
+    self: CMSG_RECIPIENT_ENCODE_INFO
+): PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO {.inline.} =
+  self.union1.pKeyTrans
+
+proc pKeyTrans*(
+    self: var CMSG_RECIPIENT_ENCODE_INFO
+): var PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO {.inline.} =
+  self.union1.pKeyTrans
+
+proc `pKeyAgree=`*(
+    self: var CMSG_RECIPIENT_ENCODE_INFO, x: PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
+) {.inline.} =
+  self.union1.pKeyAgree = x
+
+proc pKeyAgree*(
+    self: CMSG_RECIPIENT_ENCODE_INFO
+): PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO {.inline.} =
+  self.union1.pKeyAgree
+
+proc pKeyAgree*(
+    self: var CMSG_RECIPIENT_ENCODE_INFO
+): var PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO {.inline.} =
+  self.union1.pKeyAgree
+
+proc `pMailList=`*(
+    self: var CMSG_RECIPIENT_ENCODE_INFO, x: PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
+) {.inline.} =
+  self.union1.pMailList = x
+
+proc pMailList*(
+    self: CMSG_RECIPIENT_ENCODE_INFO
+): PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO {.inline.} =
+  self.union1.pMailList
+
+proc pMailList*(
+    self: var CMSG_RECIPIENT_ENCODE_INFO
+): var PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO {.inline.} =
+  self.union1.pMailList
+
+proc `OriginatorCertId=`*(
+    self: var CMSG_KEY_AGREE_RECIPIENT_INFO, x: CERT_ID
+) {.inline.} =
+  self.union1.OriginatorCertId = x
+
+proc OriginatorCertId*(self: CMSG_KEY_AGREE_RECIPIENT_INFO): CERT_ID {.inline.} =
+  self.union1.OriginatorCertId
+
+proc OriginatorCertId*(
+    self: var CMSG_KEY_AGREE_RECIPIENT_INFO
+): var CERT_ID {.inline.} =
+  self.union1.OriginatorCertId
+
+proc `OriginatorPublicKeyInfo=`*(
+    self: var CMSG_KEY_AGREE_RECIPIENT_INFO, x: CERT_PUBLIC_KEY_INFO
+) {.inline.} =
+  self.union1.OriginatorPublicKeyInfo = x
+
+proc OriginatorPublicKeyInfo*(
+    self: CMSG_KEY_AGREE_RECIPIENT_INFO
+): CERT_PUBLIC_KEY_INFO {.inline.} =
+  self.union1.OriginatorPublicKeyInfo
+
+proc OriginatorPublicKeyInfo*(
+    self: var CMSG_KEY_AGREE_RECIPIENT_INFO
+): var CERT_PUBLIC_KEY_INFO {.inline.} =
+  self.union1.OriginatorPublicKeyInfo
+
+proc `pKeyTrans=`*(
+    self: var CMSG_CMS_RECIPIENT_INFO, x: PCMSG_KEY_TRANS_RECIPIENT_INFO
+) {.inline.} =
+  self.union1.pKeyTrans = x
+
+proc pKeyTrans*(
+    self: CMSG_CMS_RECIPIENT_INFO
+): PCMSG_KEY_TRANS_RECIPIENT_INFO {.inline.} =
+  self.union1.pKeyTrans
+
+proc pKeyTrans*(
+    self: var CMSG_CMS_RECIPIENT_INFO
+): var PCMSG_KEY_TRANS_RECIPIENT_INFO {.inline.} =
+  self.union1.pKeyTrans
+
+proc `pKeyAgree=`*(
+    self: var CMSG_CMS_RECIPIENT_INFO, x: PCMSG_KEY_AGREE_RECIPIENT_INFO
+) {.inline.} =
+  self.union1.pKeyAgree = x
+
+proc pKeyAgree*(
+    self: CMSG_CMS_RECIPIENT_INFO
+): PCMSG_KEY_AGREE_RECIPIENT_INFO {.inline.} =
+  self.union1.pKeyAgree
+
+proc pKeyAgree*(
+    self: var CMSG_CMS_RECIPIENT_INFO
+): var PCMSG_KEY_AGREE_RECIPIENT_INFO {.inline.} =
+  self.union1.pKeyAgree
+
+proc `pMailList=`*(
+    self: var CMSG_CMS_RECIPIENT_INFO, x: PCMSG_MAIL_LIST_RECIPIENT_INFO
+) {.inline.} =
+  self.union1.pMailList = x
+
+proc pMailList*(
+    self: CMSG_CMS_RECIPIENT_INFO
+): PCMSG_MAIL_LIST_RECIPIENT_INFO {.inline.} =
+  self.union1.pMailList
+
+proc pMailList*(
+    self: var CMSG_CMS_RECIPIENT_INFO
+): var PCMSG_MAIL_LIST_RECIPIENT_INFO {.inline.} =
+  self.union1.pMailList
+
+proc `hCryptProv=`*(self: var CMSG_CTRL_DECRYPT_PARA, x: HCRYPTPROV) {.inline.} =
+  self.union1.hCryptProv = x
+
+proc hCryptProv*(self: CMSG_CTRL_DECRYPT_PARA): HCRYPTPROV {.inline.} =
+  self.union1.hCryptProv
+
+proc hCryptProv*(self: var CMSG_CTRL_DECRYPT_PARA): var HCRYPTPROV {.inline.} =
+  self.union1.hCryptProv
+
+proc `hNCryptKey=`*(self: var CMSG_CTRL_DECRYPT_PARA, x: NCRYPT_KEY_HANDLE) {.inline.} =
+  self.union1.hNCryptKey = x
+
+proc hNCryptKey*(self: CMSG_CTRL_DECRYPT_PARA): NCRYPT_KEY_HANDLE {.inline.} =
+  self.union1.hNCryptKey
+
+proc hNCryptKey*(self: var CMSG_CTRL_DECRYPT_PARA): var NCRYPT_KEY_HANDLE {.inline.} =
+  self.union1.hNCryptKey
+
+proc `hCryptProv=`*(
+    self: var CMSG_CTRL_KEY_TRANS_DECRYPT_PARA, x: HCRYPTPROV
+) {.inline.} =
+  self.union1.hCryptProv = x
+
+proc hCryptProv*(self: CMSG_CTRL_KEY_TRANS_DECRYPT_PARA): HCRYPTPROV {.inline.} =
+  self.union1.hCryptProv
+
+proc hCryptProv*(
+    self: var CMSG_CTRL_KEY_TRANS_DECRYPT_PARA
+): var HCRYPTPROV {.inline.} =
+  self.union1.hCryptProv
+
+proc `hNCryptKey=`*(
+    self: var CMSG_CTRL_KEY_TRANS_DECRYPT_PARA, x: NCRYPT_KEY_HANDLE
+) {.inline.} =
+  self.union1.hNCryptKey = x
+
+proc hNCryptKey*(self: CMSG_CTRL_KEY_TRANS_DECRYPT_PARA): NCRYPT_KEY_HANDLE {.inline.} =
+  self.union1.hNCryptKey
+
+proc hNCryptKey*(
+    self: var CMSG_CTRL_KEY_TRANS_DECRYPT_PARA
+): var NCRYPT_KEY_HANDLE {.inline.} =
+  self.union1.hNCryptKey
+
+proc `hCryptProv=`*(
+    self: var CMSG_CTRL_KEY_AGREE_DECRYPT_PARA, x: HCRYPTPROV
+) {.inline.} =
+  self.union1.hCryptProv = x
+
+proc hCryptProv*(self: CMSG_CTRL_KEY_AGREE_DECRYPT_PARA): HCRYPTPROV {.inline.} =
+  self.union1.hCryptProv
+
+proc hCryptProv*(
+    self: var CMSG_CTRL_KEY_AGREE_DECRYPT_PARA
+): var HCRYPTPROV {.inline.} =
+  self.union1.hCryptProv
+
+proc `hNCryptKey=`*(
+    self: var CMSG_CTRL_KEY_AGREE_DECRYPT_PARA, x: NCRYPT_KEY_HANDLE
+) {.inline.} =
+  self.union1.hNCryptKey = x
+
+proc hNCryptKey*(self: CMSG_CTRL_KEY_AGREE_DECRYPT_PARA): NCRYPT_KEY_HANDLE {.inline.} =
+  self.union1.hNCryptKey
+
+proc hNCryptKey*(
+    self: var CMSG_CTRL_KEY_AGREE_DECRYPT_PARA
+): var NCRYPT_KEY_HANDLE {.inline.} =
+  self.union1.hNCryptKey
+
+proc `hKeyEncryptionKey=`*(
+    self: var CMSG_CTRL_MAIL_LIST_DECRYPT_PARA, x: HCRYPTKEY
+) {.inline.} =
+  self.union1.hKeyEncryptionKey = x
+
+proc hKeyEncryptionKey*(self: CMSG_CTRL_MAIL_LIST_DECRYPT_PARA): HCRYPTKEY {.inline.} =
+  self.union1.hKeyEncryptionKey
+
+proc hKeyEncryptionKey*(
+    self: var CMSG_CTRL_MAIL_LIST_DECRYPT_PARA
+): var HCRYPTKEY {.inline.} =
+  self.union1.hKeyEncryptionKey
+
+proc `pvKeyEncryptionKey=`*(
+    self: var CMSG_CTRL_MAIL_LIST_DECRYPT_PARA, x: pointer
+) {.inline.} =
+  self.union1.pvKeyEncryptionKey = x
+
+proc pvKeyEncryptionKey*(self: CMSG_CTRL_MAIL_LIST_DECRYPT_PARA): pointer {.inline.} =
+  self.union1.pvKeyEncryptionKey
+
+proc pvKeyEncryptionKey*(
+    self: var CMSG_CTRL_MAIL_LIST_DECRYPT_PARA
+): var pointer {.inline.} =
+  self.union1.pvKeyEncryptionKey
+
+proc `hContentEncryptKey=`*(
+    self: var CMSG_CONTENT_ENCRYPT_INFO, x: HCRYPTKEY
+) {.inline.} =
+  self.union1.hContentEncryptKey = x
+
+proc hContentEncryptKey*(self: CMSG_CONTENT_ENCRYPT_INFO): HCRYPTKEY {.inline.} =
+  self.union1.hContentEncryptKey
+
+proc hContentEncryptKey*(
+    self: var CMSG_CONTENT_ENCRYPT_INFO
+): var HCRYPTKEY {.inline.} =
+  self.union1.hContentEncryptKey
+
+proc `hCNGContentEncryptKey=`*(
+    self: var CMSG_CONTENT_ENCRYPT_INFO, x: BCRYPT_KEY_HANDLE
+) {.inline.} =
+  self.union1.hCNGContentEncryptKey = x
+
+proc hCNGContentEncryptKey*(
+    self: CMSG_CONTENT_ENCRYPT_INFO
+): BCRYPT_KEY_HANDLE {.inline.} =
+  self.union1.hCNGContentEncryptKey
+
+proc hCNGContentEncryptKey*(
+    self: var CMSG_CONTENT_ENCRYPT_INFO
+): var BCRYPT_KEY_HANDLE {.inline.} =
+  self.union1.hCNGContentEncryptKey
+
+proc `OriginatorCertId=`*(
+    self: var CMSG_KEY_AGREE_ENCRYPT_INFO, x: CERT_ID
+) {.inline.} =
+  self.union1.OriginatorCertId = x
+
+proc OriginatorCertId*(self: CMSG_KEY_AGREE_ENCRYPT_INFO): CERT_ID {.inline.} =
+  self.union1.OriginatorCertId
+
+proc OriginatorCertId*(self: var CMSG_KEY_AGREE_ENCRYPT_INFO): var CERT_ID {.inline.} =
+  self.union1.OriginatorCertId
+
+proc `OriginatorPublicKeyInfo=`*(
+    self: var CMSG_KEY_AGREE_ENCRYPT_INFO, x: CERT_PUBLIC_KEY_INFO
+) {.inline.} =
+  self.union1.OriginatorPublicKeyInfo = x
+
+proc OriginatorPublicKeyInfo*(
+    self: CMSG_KEY_AGREE_ENCRYPT_INFO
+): CERT_PUBLIC_KEY_INFO {.inline.} =
+  self.union1.OriginatorPublicKeyInfo
+
+proc OriginatorPublicKeyInfo*(
+    self: var CMSG_KEY_AGREE_ENCRYPT_INFO
+): var CERT_PUBLIC_KEY_INFO {.inline.} =
+  self.union1.OriginatorPublicKeyInfo
+
+proc `hCryptProv=`*(self: var CERT_KEY_CONTEXT, x: HCRYPTPROV) {.inline.} =
+  self.union1.hCryptProv = x
+
+proc hCryptProv*(self: CERT_KEY_CONTEXT): HCRYPTPROV {.inline.} =
+  self.union1.hCryptProv
+
+proc hCryptProv*(self: var CERT_KEY_CONTEXT): var HCRYPTPROV {.inline.} =
+  self.union1.hCryptProv
+
+proc `hNCryptKey=`*(self: var CERT_KEY_CONTEXT, x: NCRYPT_KEY_HANDLE) {.inline.} =
+  self.union1.hNCryptKey = x
+
+proc hNCryptKey*(self: CERT_KEY_CONTEXT): NCRYPT_KEY_HANDLE {.inline.} =
+  self.union1.hNCryptKey
+
+proc hNCryptKey*(self: var CERT_KEY_CONTEXT): var NCRYPT_KEY_HANDLE {.inline.} =
+  self.union1.hNCryptKey
+
+proc `hKeyBase=`*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA, x: HKEY) {.inline.} =
+  self.union1.hKeyBase = x
+
+proc hKeyBase*(self: CERT_SYSTEM_STORE_RELOCATE_PARA): HKEY {.inline.} =
+  self.union1.hKeyBase
+
+proc hKeyBase*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA): var HKEY {.inline.} =
+  self.union1.hKeyBase
+
+proc `pvBase=`*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA, x: pointer) {.inline.} =
+  self.union1.pvBase = x
+
+proc pvBase*(self: CERT_SYSTEM_STORE_RELOCATE_PARA): pointer {.inline.} =
+  self.union1.pvBase
+
+proc pvBase*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA): var pointer {.inline.} =
+  self.union1.pvBase
+
+proc `pvSystemStore=`*(
+    self: var CERT_SYSTEM_STORE_RELOCATE_PARA, x: pointer
+) {.inline.} =
+  self.union2.pvSystemStore = x
+
+proc pvSystemStore*(self: CERT_SYSTEM_STORE_RELOCATE_PARA): pointer {.inline.} =
+  self.union2.pvSystemStore
+
+proc pvSystemStore*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA): var pointer {.inline.} =
+  self.union2.pvSystemStore
+
+proc `pszSystemStore=`*(
+    self: var CERT_SYSTEM_STORE_RELOCATE_PARA, x: LPCSTR
+) {.inline.} =
+  self.union2.pszSystemStore = x
+
+proc pszSystemStore*(self: CERT_SYSTEM_STORE_RELOCATE_PARA): LPCSTR {.inline.} =
+  self.union2.pszSystemStore
+
+proc pszSystemStore*(self: var CERT_SYSTEM_STORE_RELOCATE_PARA): var LPCSTR {.inline.} =
+  self.union2.pszSystemStore
+
+proc `pwszSystemStore=`*(
+    self: var CERT_SYSTEM_STORE_RELOCATE_PARA, x: LPCWSTR
+) {.inline.} =
+  self.union2.pwszSystemStore = x
+
+proc pwszSystemStore*(self: CERT_SYSTEM_STORE_RELOCATE_PARA): LPCWSTR {.inline.} =
+  self.union2.pwszSystemStore
+
+proc pwszSystemStore*(
+    self: var CERT_SYSTEM_STORE_RELOCATE_PARA
+): var LPCWSTR {.inline.} =
+  self.union2.pwszSystemStore
+
+proc `hCryptProv=`*(self: var CRYPT_KEY_SIGN_MESSAGE_PARA, x: HCRYPTPROV) {.inline.} =
+  self.union1.hCryptProv = x
+
+proc hCryptProv*(self: CRYPT_KEY_SIGN_MESSAGE_PARA): HCRYPTPROV {.inline.} =
+  self.union1.hCryptProv
+
+proc hCryptProv*(self: var CRYPT_KEY_SIGN_MESSAGE_PARA): var HCRYPTPROV {.inline.} =
+  self.union1.hCryptProv
+
+proc `hNCryptKey=`*(
+    self: var CRYPT_KEY_SIGN_MESSAGE_PARA, x: NCRYPT_KEY_HANDLE
+) {.inline.} =
+  self.union1.hNCryptKey = x
+
+proc hNCryptKey*(self: CRYPT_KEY_SIGN_MESSAGE_PARA): NCRYPT_KEY_HANDLE {.inline.} =
+  self.union1.hNCryptKey
+
+proc hNCryptKey*(
+    self: var CRYPT_KEY_SIGN_MESSAGE_PARA
+): var NCRYPT_KEY_HANDLE {.inline.} =
+  self.union1.hNCryptKey
+
+proc `cbStruct=`*(self: var HTTPSPolicyCallbackData, x: DWORD) {.inline.} =
+  self.union1.cbStruct = x
+
+proc cbStruct*(self: HTTPSPolicyCallbackData): DWORD {.inline.} =
+  self.union1.cbStruct
+
+proc cbStruct*(self: var HTTPSPolicyCallbackData): var DWORD {.inline.} =
+  self.union1.cbStruct
+
+proc `cbSize=`*(self: var HTTPSPolicyCallbackData, x: DWORD) {.inline.} =
+  self.union1.cbSize = x
+
+proc cbSize*(self: HTTPSPolicyCallbackData): DWORD {.inline.} =
+  self.union1.cbSize
+
+proc cbSize*(self: var HTTPSPolicyCallbackData): var DWORD {.inline.} =
+  self.union1.cbSize
+
 when winimUnicode:
   type
     CRYPT_PASSWORD_CREDENTIALS* = CRYPT_PASSWORD_CREDENTIALSW
     PCRYPT_PASSWORD_CREDENTIALS* = PCRYPT_PASSWORD_CREDENTIALSW
+
   const
     MS_DEF_PROV* = MS_DEF_PROV_W
     MS_ENHANCED_PROV* = MS_ENHANCED_PROV_W
@@ -5354,27 +8763,149 @@
     MS_ENH_RSA_AES_PROV_XP* = MS_ENH_RSA_AES_PROV_XP_W
     MS_ENH_RSA_AES_PROV* = MS_ENH_RSA_AES_PROV_W
     CREDENTIAL_OID_PASSWORD_CREDENTIALS* = CREDENTIAL_OID_PASSWORD_CREDENTIALS_W
-  proc CryptAcquireContext*(phProv: ptr HCRYPTPROV, szContainer: LPCWSTR, szProvider: LPCWSTR, dwProvType: DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptAcquireContextW".}
-  proc CryptSignHash*(hHash: HCRYPTHASH, dwKeySpec: DWORD, szDescription: LPCWSTR, dwFlags: DWORD, pbSignature: ptr BYTE, pdwSigLen: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptSignHashW".}
-  proc CryptVerifySignature*(hHash: HCRYPTHASH, pbSignature: ptr BYTE, dwSigLen: DWORD, hPubKey: HCRYPTKEY, szDescription: LPCWSTR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptVerifySignatureW".}
-  proc CryptSetProvider*(pszProvName: LPCWSTR, dwProvType: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptSetProviderW".}
-  proc CryptSetProviderEx*(pszProvName: LPCWSTR, dwProvType: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptSetProviderExW".}
-  proc CryptGetDefaultProvider*(dwProvType: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD, pszProvName: LPWSTR, pcbProvName: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptGetDefaultProviderW".}
-  proc CryptEnumProviderTypes*(dwIndex: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD, pdwProvType: ptr DWORD, szTypeName: LPWSTR, pcbTypeName: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptEnumProviderTypesW".}
-  proc CryptEnumProviders*(dwIndex: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD, pdwProvType: ptr DWORD, szProvName: LPWSTR, pcbProvName: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptEnumProvidersW".}
-  proc CertRDNValueToStr*(dwValueType: DWORD, pValue: PCERT_RDN_VALUE_BLOB, psz: LPWSTR, csz: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc: "CertRDNValueToStrW".}
-  proc CertNameToStr*(dwCertEncodingType: DWORD, pName: PCERT_NAME_BLOB, dwStrType: DWORD, psz: LPWSTR, csz: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc: "CertNameToStrW".}
-  proc CertStrToName*(dwCertEncodingType: DWORD, pszX500: LPCWSTR, dwStrType: DWORD, pvReserved: pointer, pbEncoded: ptr BYTE, pcbEncoded: ptr DWORD, ppszError: ptr LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc: "CertStrToNameW".}
-  proc CertGetNameString*(pCertContext: PCCERT_CONTEXT, dwType: DWORD, dwFlags: DWORD, pvTypePara: pointer, pszNameString: LPWSTR, cchNameString: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc: "CertGetNameStringW".}
-  proc CertOpenSystemStore*(hProv: HCRYPTPROV_LEGACY, szSubsystemProtocol: LPCWSTR): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc: "CertOpenSystemStoreW".}
-  proc CertAddEncodedCertificateToSystemStore*(szCertStoreName: LPCWSTR, pbCertEncoded: ptr BYTE, cbCertEncoded: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc: "CertAddEncodedCertificateToSystemStoreW".}
-  proc CryptRetrieveObjectByUrl*(pszUrl: LPCWSTR, pszObjectOid: LPCSTR, dwRetrievalFlags: DWORD, dwTimeout: DWORD, ppvObject: ptr LPVOID, hAsyncRetrieve: HCRYPTASYNC, pCredentials: PCRYPT_CREDENTIALS, pvVerify: LPVOID, pAuxInfo: PCRYPT_RETRIEVE_AUX_INFO): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc: "CryptRetrieveObjectByUrlW".}
-  proc CryptStringToBinary*(pszString: LPCWSTR, cchString: DWORD, dwFlags: DWORD, pbBinary: ptr BYTE, pcbBinary: ptr DWORD, pdwSkip: ptr DWORD, pdwFlags: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc: "CryptStringToBinaryW".}
-  proc CryptBinaryToString*(pbBinary: ptr BYTE, cbBinary: DWORD, dwFlags: DWORD, pszString: LPWSTR, pcchString: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc: "CryptBinaryToStringW".}
+  proc CryptAcquireContext*(
+    phProv: ptr HCRYPTPROV,
+    szContainer: LPCWSTR,
+    szProvider: LPCWSTR,
+    dwProvType: DWORD,
+    dwFlags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptAcquireContextW".}
+
+  proc CryptSignHash*(
+    hHash: HCRYPTHASH,
+    dwKeySpec: DWORD,
+    szDescription: LPCWSTR,
+    dwFlags: DWORD,
+    pbSignature: ptr BYTE,
+    pdwSigLen: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptSignHashW".}
+
+  proc CryptVerifySignature*(
+    hHash: HCRYPTHASH,
+    pbSignature: ptr BYTE,
+    dwSigLen: DWORD,
+    hPubKey: HCRYPTKEY,
+    szDescription: LPCWSTR,
+    dwFlags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptVerifySignatureW".}
+
+  proc CryptSetProvider*(
+    pszProvName: LPCWSTR, dwProvType: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptSetProviderW".}
+
+  proc CryptSetProviderEx*(
+    pszProvName: LPCWSTR, dwProvType: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptSetProviderExW".}
+
+  proc CryptGetDefaultProvider*(
+    dwProvType: DWORD,
+    pdwReserved: ptr DWORD,
+    dwFlags: DWORD,
+    pszProvName: LPWSTR,
+    pcbProvName: ptr DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "CryptGetDefaultProviderW"
+  .}
+
+  proc CryptEnumProviderTypes*(
+    dwIndex: DWORD,
+    pdwReserved: ptr DWORD,
+    dwFlags: DWORD,
+    pdwProvType: ptr DWORD,
+    szTypeName: LPWSTR,
+    pcbTypeName: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptEnumProviderTypesW".}
+
+  proc CryptEnumProviders*(
+    dwIndex: DWORD,
+    pdwReserved: ptr DWORD,
+    dwFlags: DWORD,
+    pdwProvType: ptr DWORD,
+    szProvName: LPWSTR,
+    pcbProvName: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptEnumProvidersW".}
+
+  proc CertRDNValueToStr*(
+    dwValueType: DWORD, pValue: PCERT_RDN_VALUE_BLOB, psz: LPWSTR, csz: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "crypt32", importc: "CertRDNValueToStrW".}
+
+  proc CertNameToStr*(
+    dwCertEncodingType: DWORD,
+    pName: PCERT_NAME_BLOB,
+    dwStrType: DWORD,
+    psz: LPWSTR,
+    csz: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "crypt32", importc: "CertNameToStrW".}
+
+  proc CertStrToName*(
+    dwCertEncodingType: DWORD,
+    pszX500: LPCWSTR,
+    dwStrType: DWORD,
+    pvReserved: pointer,
+    pbEncoded: ptr BYTE,
+    pcbEncoded: ptr DWORD,
+    ppszError: ptr LPCWSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc: "CertStrToNameW".}
+
+  proc CertGetNameString*(
+    pCertContext: PCCERT_CONTEXT,
+    dwType: DWORD,
+    dwFlags: DWORD,
+    pvTypePara: pointer,
+    pszNameString: LPWSTR,
+    cchNameString: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "crypt32", importc: "CertGetNameStringW".}
+
+  proc CertOpenSystemStore*(
+    hProv: HCRYPTPROV_LEGACY, szSubsystemProtocol: LPCWSTR
+  ): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc: "CertOpenSystemStoreW".}
+
+  proc CertAddEncodedCertificateToSystemStore*(
+    szCertStoreName: LPCWSTR, pbCertEncoded: ptr BYTE, cbCertEncoded: DWORD
+  ): WINBOOL {.
+    winapi,
+    stdcall,
+    dynlib: "crypt32",
+    importc: "CertAddEncodedCertificateToSystemStoreW"
+  .}
+
+  proc CryptRetrieveObjectByUrl*(
+    pszUrl: LPCWSTR,
+    pszObjectOid: LPCSTR,
+    dwRetrievalFlags: DWORD,
+    dwTimeout: DWORD,
+    ppvObject: ptr LPVOID,
+    hAsyncRetrieve: HCRYPTASYNC,
+    pCredentials: PCRYPT_CREDENTIALS,
+    pvVerify: LPVOID,
+    pAuxInfo: PCRYPT_RETRIEVE_AUX_INFO,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "cryptnet", importc: "CryptRetrieveObjectByUrlW"
+  .}
+
+  proc CryptStringToBinary*(
+    pszString: LPCWSTR,
+    cchString: DWORD,
+    dwFlags: DWORD,
+    pbBinary: ptr BYTE,
+    pcbBinary: ptr DWORD,
+    pdwSkip: ptr DWORD,
+    pdwFlags: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc: "CryptStringToBinaryW".}
+
+  proc CryptBinaryToString*(
+    pbBinary: ptr BYTE,
+    cbBinary: DWORD,
+    dwFlags: DWORD,
+    pszString: LPWSTR,
+    pcchString: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc: "CryptBinaryToStringW".}
+
 when winimAnsi:
   type
     CRYPT_PASSWORD_CREDENTIALS* = CRYPT_PASSWORD_CREDENTIALSA
     PCRYPT_PASSWORD_CREDENTIALS* = PCRYPT_PASSWORD_CREDENTIALSA
+
   const
     MS_DEF_PROV* = MS_DEF_PROV_A
     MS_ENHANCED_PROV* = MS_ENHANCED_PROV_A
@@ -5389,20 +8920,140 @@
     MS_ENH_RSA_AES_PROV_XP* = MS_ENH_RSA_AES_PROV_XP_A
     MS_ENH_RSA_AES_PROV* = MS_ENH_RSA_AES_PROV_A
     CREDENTIAL_OID_PASSWORD_CREDENTIALS* = CREDENTIAL_OID_PASSWORD_CREDENTIALS_A
-  proc CryptAcquireContext*(phProv: ptr HCRYPTPROV, szContainer: LPCSTR, szProvider: LPCSTR, dwProvType: DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptAcquireContextA".}
-  proc CryptSignHash*(hHash: HCRYPTHASH, dwKeySpec: DWORD, szDescription: LPCSTR, dwFlags: DWORD, pbSignature: ptr BYTE, pdwSigLen: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptSignHashA".}
-  proc CryptVerifySignature*(hHash: HCRYPTHASH, pbSignature: ptr BYTE, dwSigLen: DWORD, hPubKey: HCRYPTKEY, szDescription: LPCSTR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptVerifySignatureA".}
-  proc CryptSetProvider*(pszProvName: LPCSTR, dwProvType: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptSetProviderA".}
-  proc CryptSetProviderEx*(pszProvName: LPCSTR, dwProvType: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptSetProviderExA".}
-  proc CryptGetDefaultProvider*(dwProvType: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD, pszProvName: LPSTR, pcbProvName: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptGetDefaultProviderA".}
-  proc CryptEnumProviderTypes*(dwIndex: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD, pdwProvType: ptr DWORD, szTypeName: LPSTR, pcbTypeName: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptEnumProviderTypesA".}
-  proc CryptEnumProviders*(dwIndex: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD, pdwProvType: ptr DWORD, szProvName: LPSTR, pcbProvName: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptEnumProvidersA".}
-  proc CertRDNValueToStr*(dwValueType: DWORD, pValue: PCERT_RDN_VALUE_BLOB, psz: LPSTR, csz: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc: "CertRDNValueToStrA".}
-  proc CertNameToStr*(dwCertEncodingType: DWORD, pName: PCERT_NAME_BLOB, dwStrType: DWORD, psz: LPSTR, csz: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc: "CertNameToStrA".}
-  proc CertStrToName*(dwCertEncodingType: DWORD, pszX500: LPCSTR, dwStrType: DWORD, pvReserved: pointer, pbEncoded: ptr BYTE, pcbEncoded: ptr DWORD, ppszError: ptr LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc: "CertStrToNameA".}
-  proc CertGetNameString*(pCertContext: PCCERT_CONTEXT, dwType: DWORD, dwFlags: DWORD, pvTypePara: pointer, pszNameString: LPSTR, cchNameString: DWORD): DWORD {.winapi, stdcall, dynlib: "crypt32", importc: "CertGetNameStringA".}
-  proc CertOpenSystemStore*(hProv: HCRYPTPROV_LEGACY, szSubsystemProtocol: LPCSTR): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc: "CertOpenSystemStoreA".}
-  proc CertAddEncodedCertificateToSystemStore*(szCertStoreName: LPCSTR, pbCertEncoded: ptr BYTE, cbCertEncoded: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc: "CertAddEncodedCertificateToSystemStoreA".}
-  proc CryptRetrieveObjectByUrl*(pszUrl: LPCSTR, pszObjectOid: LPCSTR, dwRetrievalFlags: DWORD, dwTimeout: DWORD, ppvObject: ptr LPVOID, hAsyncRetrieve: HCRYPTASYNC, pCredentials: PCRYPT_CREDENTIALS, pvVerify: LPVOID, pAuxInfo: PCRYPT_RETRIEVE_AUX_INFO): WINBOOL {.winapi, stdcall, dynlib: "cryptnet", importc: "CryptRetrieveObjectByUrlA".}
-  proc CryptStringToBinary*(pszString: LPCSTR, cchString: DWORD, dwFlags: DWORD, pbBinary: ptr BYTE, pcbBinary: ptr DWORD, pdwSkip: ptr DWORD, pdwFlags: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc: "CryptStringToBinaryA".}
-  proc CryptBinaryToString*(pbBinary: ptr BYTE, cbBinary: DWORD, dwFlags: DWORD, pszString: LPSTR, pcchString: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc: "CryptBinaryToStringA".}
+  proc CryptAcquireContext*(
+    phProv: ptr HCRYPTPROV,
+    szContainer: LPCSTR,
+    szProvider: LPCSTR,
+    dwProvType: DWORD,
+    dwFlags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptAcquireContextA".}
+
+  proc CryptSignHash*(
+    hHash: HCRYPTHASH,
+    dwKeySpec: DWORD,
+    szDescription: LPCSTR,
+    dwFlags: DWORD,
+    pbSignature: ptr BYTE,
+    pdwSigLen: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptSignHashA".}
+
+  proc CryptVerifySignature*(
+    hHash: HCRYPTHASH,
+    pbSignature: ptr BYTE,
+    dwSigLen: DWORD,
+    hPubKey: HCRYPTKEY,
+    szDescription: LPCSTR,
+    dwFlags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptVerifySignatureA".}
+
+  proc CryptSetProvider*(
+    pszProvName: LPCSTR, dwProvType: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptSetProviderA".}
+
+  proc CryptSetProviderEx*(
+    pszProvName: LPCSTR, dwProvType: DWORD, pdwReserved: ptr DWORD, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptSetProviderExA".}
+
+  proc CryptGetDefaultProvider*(
+    dwProvType: DWORD,
+    pdwReserved: ptr DWORD,
+    dwFlags: DWORD,
+    pszProvName: LPSTR,
+    pcbProvName: ptr DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "CryptGetDefaultProviderA"
+  .}
+
+  proc CryptEnumProviderTypes*(
+    dwIndex: DWORD,
+    pdwReserved: ptr DWORD,
+    dwFlags: DWORD,
+    pdwProvType: ptr DWORD,
+    szTypeName: LPSTR,
+    pcbTypeName: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptEnumProviderTypesA".}
+
+  proc CryptEnumProviders*(
+    dwIndex: DWORD,
+    pdwReserved: ptr DWORD,
+    dwFlags: DWORD,
+    pdwProvType: ptr DWORD,
+    szProvName: LPSTR,
+    pcbProvName: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "CryptEnumProvidersA".}
+
+  proc CertRDNValueToStr*(
+    dwValueType: DWORD, pValue: PCERT_RDN_VALUE_BLOB, psz: LPSTR, csz: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "crypt32", importc: "CertRDNValueToStrA".}
+
+  proc CertNameToStr*(
+    dwCertEncodingType: DWORD,
+    pName: PCERT_NAME_BLOB,
+    dwStrType: DWORD,
+    psz: LPSTR,
+    csz: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "crypt32", importc: "CertNameToStrA".}
+
+  proc CertStrToName*(
+    dwCertEncodingType: DWORD,
+    pszX500: LPCSTR,
+    dwStrType: DWORD,
+    pvReserved: pointer,
+    pbEncoded: ptr BYTE,
+    pcbEncoded: ptr DWORD,
+    ppszError: ptr LPCSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc: "CertStrToNameA".}
+
+  proc CertGetNameString*(
+    pCertContext: PCCERT_CONTEXT,
+    dwType: DWORD,
+    dwFlags: DWORD,
+    pvTypePara: pointer,
+    pszNameString: LPSTR,
+    cchNameString: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "crypt32", importc: "CertGetNameStringA".}
+
+  proc CertOpenSystemStore*(
+    hProv: HCRYPTPROV_LEGACY, szSubsystemProtocol: LPCSTR
+  ): HCERTSTORE {.winapi, stdcall, dynlib: "crypt32", importc: "CertOpenSystemStoreA".}
+
+  proc CertAddEncodedCertificateToSystemStore*(
+    szCertStoreName: LPCSTR, pbCertEncoded: ptr BYTE, cbCertEncoded: DWORD
+  ): WINBOOL {.
+    winapi,
+    stdcall,
+    dynlib: "crypt32",
+    importc: "CertAddEncodedCertificateToSystemStoreA"
+  .}
+
+  proc CryptRetrieveObjectByUrl*(
+    pszUrl: LPCSTR,
+    pszObjectOid: LPCSTR,
+    dwRetrievalFlags: DWORD,
+    dwTimeout: DWORD,
+    ppvObject: ptr LPVOID,
+    hAsyncRetrieve: HCRYPTASYNC,
+    pCredentials: PCRYPT_CREDENTIALS,
+    pvVerify: LPVOID,
+    pAuxInfo: PCRYPT_RETRIEVE_AUX_INFO,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "cryptnet", importc: "CryptRetrieveObjectByUrlA"
+  .}
+
+  proc CryptStringToBinary*(
+    pszString: LPCSTR,
+    cchString: DWORD,
+    dwFlags: DWORD,
+    pbBinary: ptr BYTE,
+    pcbBinary: ptr DWORD,
+    pdwSkip: ptr DWORD,
+    pdwFlags: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc: "CryptStringToBinaryA".}
+
+  proc CryptBinaryToString*(
+    pbBinary: ptr BYTE,
+    cbBinary: DWORD,
+    dwFlags: DWORD,
+    pszString: LPSTR,
+    pcchString: ptr DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc: "CryptBinaryToStringA".}
--- a/semicongine/thirdparty/winim/winim/inc/windef.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/windef.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -177,12 +177,14 @@
   EXCEPTION_DISPOSITION* = int
   QWORD* = int64
   PQWORD* = ptr int64
+
 when winimAnsi:
   type
     TCHAR* = char
     PTCHAR* = ptr char
     TBYTE* = uint8
     PTBYTE* = ptr uint8
+
 when winimCpu64:
   type
     INT_PTR* = int64
@@ -199,6 +201,7 @@
     PUHALF_PTR* = ptr int32
     HALF_PTR* = int32
     PHALF_PTR* = ptr int32
+
 when winimCpu32:
   type
     INT_PTR* = int32
@@ -213,6 +216,7 @@
     PUHALF_PTR* = ptr uint16
     SHANDLE_PTR* = int32
     HANDLE_PTR* = int32
+
 type
   SIZE_T* = ULONG_PTR
   PSIZE_T* = ptr ULONG_PTR
@@ -380,6 +384,7 @@
   KPRIORITY* = LONG
   HGDIOBJ* = HANDLE
   OLECHAR* = WCHAR
+
 when winimUnicode:
   type
     TCHAR* = WCHAR
@@ -401,6 +406,7 @@
     PUZZTSTR* = PUZZWSTR
     PZPTSTR* = PZPWSTR
     PUNZTCH* = PUNZWCH
+
 when winimAnsi:
   type
     LPTCH* = LPSTR
@@ -418,12 +424,13 @@
     PZZTSTR* = PZZSTR
     PUZZTSTR* = PZZSTR
     PZPTSTR* = PZPSTR
+
 type
   INT16* = int16
   PINT16* = ptr int16
   PKAFFINITY* = ptr KAFFINITY
-const
-  EXCEPTION_MAXIMUM_PARAMETERS* = 15
+
+const EXCEPTION_MAXIMUM_PARAMETERS* = 15
 type
   EXCEPTION_RECORD* {.pure.} = object
     ExceptionCode*: DWORD
@@ -432,10 +439,12 @@
     ExceptionAddress*: PVOID
     NumberParameters*: DWORD
     ExceptionInformation*: array[EXCEPTION_MAXIMUM_PARAMETERS, ULONG_PTR]
+
   PEXCEPTION_RECORD* = ptr EXCEPTION_RECORD
   M128A* {.pure.} = object
     Low*: ULONGLONG
     High*: LONGLONG
+
 when winimCpu64:
   type
     XMM_SAVE_AREA32* {.pure.} = object
@@ -455,6 +464,7 @@
       FloatRegisters*: array[8, M128A]
       XmmRegisters*: array[16, M128A]
       Reserved4*: array[96, BYTE]
+
     CONTEXT_UNION1_STRUCT1* {.pure.} = object
       Header*: array[2, M128A]
       Legacy*: array[8, M128A]
@@ -474,10 +484,12 @@
       Xmm13*: M128A
       Xmm14*: M128A
       Xmm15*: M128A
+
     CONTEXT_UNION1* {.pure, union.} = object
       FltSave*: XMM_SAVE_AREA32
       FloatSave*: XMM_SAVE_AREA32
       struct1*: CONTEXT_UNION1_STRUCT1
+
     CONTEXT* {.pure.} = object
       P1Home*: DWORD64
       P2Home*: DWORD64
@@ -525,59 +537,57 @@
       LastBranchFromRip*: DWORD64
       LastExceptionToRip*: DWORD64
       LastExceptionFromRip*: DWORD64
+
 when winimCpu32:
-  const
-    SIZE_OF_80387_REGISTERS* = 80
-  type
-    FLOATING_SAVE_AREA* {.pure.} = object
-      ControlWord*: DWORD
-      StatusWord*: DWORD
-      TagWord*: DWORD
-      ErrorOffset*: DWORD
-      ErrorSelector*: DWORD
-      DataOffset*: DWORD
-      DataSelector*: DWORD
-      RegisterArea*: array[SIZE_OF_80387_REGISTERS, BYTE]
-      Cr0NpxState*: DWORD
-  const
-    MAXIMUM_SUPPORTED_EXTENSION* = 512
-  type
-    CONTEXT* {.pure.} = object
-      ContextFlags*: DWORD
-      Dr0*: DWORD
-      Dr1*: DWORD
-      Dr2*: DWORD
-      Dr3*: DWORD
-      Dr6*: DWORD
-      Dr7*: DWORD
-      FloatSave*: FLOATING_SAVE_AREA
-      SegGs*: DWORD
-      SegFs*: DWORD
-      SegEs*: DWORD
-      SegDs*: DWORD
-      Edi*: DWORD
-      Esi*: DWORD
-      Ebx*: DWORD
-      Edx*: DWORD
-      Ecx*: DWORD
-      Eax*: DWORD
-      Ebp*: DWORD
-      Eip*: DWORD
-      SegCs*: DWORD
-      EFlags*: DWORD
-      Esp*: DWORD
-      SegSs*: DWORD
-      ExtendedRegisters*: array[MAXIMUM_SUPPORTED_EXTENSION, BYTE]
+  const SIZE_OF_80387_REGISTERS* = 80
+  type FLOATING_SAVE_AREA* {.pure.} = object
+    ControlWord*: DWORD
+    StatusWord*: DWORD
+    TagWord*: DWORD
+    ErrorOffset*: DWORD
+    ErrorSelector*: DWORD
+    DataOffset*: DWORD
+    DataSelector*: DWORD
+    RegisterArea*: array[SIZE_OF_80387_REGISTERS, BYTE]
+    Cr0NpxState*: DWORD
+
+  const MAXIMUM_SUPPORTED_EXTENSION* = 512
+  type CONTEXT* {.pure.} = object
+    ContextFlags*: DWORD
+    Dr0*: DWORD
+    Dr1*: DWORD
+    Dr2*: DWORD
+    Dr3*: DWORD
+    Dr6*: DWORD
+    Dr7*: DWORD
+    FloatSave*: FLOATING_SAVE_AREA
+    SegGs*: DWORD
+    SegFs*: DWORD
+    SegEs*: DWORD
+    SegDs*: DWORD
+    Edi*: DWORD
+    Esi*: DWORD
+    Ebx*: DWORD
+    Edx*: DWORD
+    Ecx*: DWORD
+    Eax*: DWORD
+    Ebp*: DWORD
+    Eip*: DWORD
+    SegCs*: DWORD
+    EFlags*: DWORD
+    Esp*: DWORD
+    SegSs*: DWORD
+    ExtendedRegisters*: array[MAXIMUM_SUPPORTED_EXTENSION, BYTE]
+
 when winimCpu64:
-  type
-    PCONTEXT* = ptr CONTEXT
+  type PCONTEXT* = ptr CONTEXT
 when winimCpu32:
-  type
-    PCONTEXT* = ptr CONTEXT
+  type PCONTEXT* = ptr CONTEXT
 type
   EXCEPTION_POINTERS* {.pure.} = object
     ExceptionRecord*: PEXCEPTION_RECORD
     ContextRecord*: PCONTEXT
+
   Exception_info_ptr* = ptr EXCEPTION_POINTERS
   DOUBLE* = float64
   PNTSTATUS* = ptr NTSTATUS
@@ -586,36 +596,45 @@
   QUAD_UNION1* {.pure, union.} = object
     UseThisFieldToCopy*: int64
     DoNotUseThisField*: float64
+
   QUAD* {.pure.} = object
     union1*: QUAD_UNION1
+
   PQUAD* = ptr QUAD
   UQUAD* = QUAD
   PUQUAD* = ptr QUAD
   LARGE_INTEGER_STRUCT1* {.pure.} = object
     LowPart*: ULONG
     HighPart*: LONG
+
   LARGE_INTEGER_u* {.pure.} = object
     LowPart*: ULONG
     HighPart*: LONG
+
   LARGE_INTEGER* {.pure, union.} = object
     struct1*: LARGE_INTEGER_STRUCT1
     u*: LARGE_INTEGER_u
     QuadPart*: LONGLONG
+
   PLARGE_INTEGER* = ptr LARGE_INTEGER
   ULARGE_INTEGER_STRUCT1* {.pure.} = object
     LowPart*: ULONG
     HighPart*: ULONG
+
   ULARGE_INTEGER_u* {.pure.} = object
     LowPart*: ULONG
     HighPart*: ULONG
+
   ULARGE_INTEGER* {.pure, union.} = object
     struct1*: ULARGE_INTEGER_STRUCT1
     u*: ULARGE_INTEGER_u
     QuadPart*: ULONGLONG
+
   PULARGE_INTEGER* = ptr ULARGE_INTEGER
   LUID* {.pure.} = object
     LowPart*: ULONG
     HighPart*: LONG
+
   PLUID* = ptr LUID
   PHYSICAL_ADDRESS* = LARGE_INTEGER
   PPHYSICAL_ADDRESS* = ptr LARGE_INTEGER
@@ -623,17 +642,20 @@
     Length*: USHORT
     MaximumLength*: USHORT
     Buffer*: PWSTR
+
   PUNICODE_STRING* = ptr UNICODE_STRING
   PCUNICODE_STRING* = ptr UNICODE_STRING
   CSTRING* {.pure.} = object
     Length*: USHORT
     MaximumLength*: USHORT
     Buffer*: ptr CHAR
+
   PCSTRING* = ptr CSTRING
   STRING* {.pure.} = object
     Length*: USHORT
     MaximumLength*: USHORT
     Buffer*: PCHAR
+
   PSTRING* = ptr STRING
   ANSI_STRING* = STRING
   PANSI_STRING* = PSTRING
@@ -646,6 +668,7 @@
     Length*: USHORT
     MaximumLength*: USHORT
     Buffer*: ULONG
+
   PSTRING32* = ptr STRING32
   UNICODE_STRING32* = STRING32
   PUNICODE_STRING32* = ptr STRING32
@@ -655,6 +678,7 @@
     Length*: USHORT
     MaximumLength*: USHORT
     Buffer*: ULONGLONG
+
   PSTRING64* = ptr STRING64
   UNICODE_STRING64* = STRING64
   PUNICODE_STRING64* = ptr STRING64
@@ -667,33 +691,40 @@
     Attributes*: ULONG
     SecurityDescriptor*: PVOID
     SecurityQualityOfService*: PVOID
+
   POBJECT_ATTRIBUTES* = ptr OBJECT_ATTRIBUTES
   PCOBJECT_ATTRIBUTES* = ptr OBJECT_ATTRIBUTES
   LIST_ENTRY* {.pure.} = object
     Flink*: ptr LIST_ENTRY
     Blink*: ptr LIST_ENTRY
+
   PLIST_ENTRY* = ptr LIST_ENTRY
   PRLIST_ENTRY* = ptr LIST_ENTRY
   LIST_ENTRY32* {.pure.} = object
     Flink*: ULONG
     Blink*: ULONG
+
   PLIST_ENTRY32* = ptr LIST_ENTRY32
   LIST_ENTRY64* {.pure.} = object
     Flink*: ULONGLONG
     Blink*: ULONGLONG
+
   PLIST_ENTRY64* = ptr LIST_ENTRY64
   SINGLE_LIST_ENTRY* {.pure.} = object
     Next*: ptr SINGLE_LIST_ENTRY
+
   PSINGLE_LIST_ENTRY* = ptr SINGLE_LIST_ENTRY
   PROCESSOR_NUMBER* {.pure.} = object
     Group*: USHORT
     Number*: UCHAR
     Reserved*: UCHAR
+
   PPROCESSOR_NUMBER* = ptr PROCESSOR_NUMBER
   GROUP_AFFINITY* {.pure.} = object
     Mask*: KAFFINITY
     Group*: USHORT
     Reserved*: array[3, USHORT]
+
   PGROUP_AFFINITY* = ptr GROUP_AFFINITY
   REPARSE_DATA_BUFFER_UNION1_SymbolicLinkReparseBuffer* {.pure.} = object
     SubstituteNameOffset*: USHORT
@@ -702,33 +733,40 @@
     PrintNameLength*: USHORT
     Flags*: ULONG
     PathBuffer*: array[1, WCHAR]
+
   REPARSE_DATA_BUFFER_UNION1_MountPointReparseBuffer* {.pure.} = object
     SubstituteNameOffset*: USHORT
     SubstituteNameLength*: USHORT
     PrintNameOffset*: USHORT
     PrintNameLength*: USHORT
     PathBuffer*: array[1, WCHAR]
+
   REPARSE_DATA_BUFFER_UNION1_GenericReparseBuffer* {.pure.} = object
     DataBuffer*: array[1, UCHAR]
+
   REPARSE_DATA_BUFFER_UNION1* {.pure, union.} = object
     SymbolicLinkReparseBuffer*: REPARSE_DATA_BUFFER_UNION1_SymbolicLinkReparseBuffer
     MountPointReparseBuffer*: REPARSE_DATA_BUFFER_UNION1_MountPointReparseBuffer
     GenericReparseBuffer*: REPARSE_DATA_BUFFER_UNION1_GenericReparseBuffer
+
   REPARSE_DATA_BUFFER* {.pure.} = object
     ReparseTag*: ULONG
     ReparseDataLength*: USHORT
     Reserved*: USHORT
     union1*: REPARSE_DATA_BUFFER_UNION1
+
   PREPARSE_DATA_BUFFER* = ptr REPARSE_DATA_BUFFER
   FLOAT128* {.pure.} = object
     LowPart*: int64
     HighPart*: int64
+
   PFLOAT128* = ptr FLOAT128
   GUID* {.pure.} = object
     Data1*: int32
     Data2*: uint16
     Data3*: uint16
     Data4*: array[8, uint8]
+
   LPGUID* = ptr GUID
   LPCGUID* = ptr GUID
   IID* = GUID
@@ -741,90 +779,104 @@
   REFIID* = ptr IID
   REFCLSID* = ptr IID
   REFFMTID* = ptr IID
-  EXCEPTION_ROUTINE* = proc (ExceptionRecord: ptr EXCEPTION_RECORD, EstablisherFrame: PVOID, ContextRecord: ptr CONTEXT, DispatcherContext: PVOID): EXCEPTION_DISPOSITION {.stdcall.}
+  EXCEPTION_ROUTINE* = proc(
+    ExceptionRecord: ptr EXCEPTION_RECORD,
+    EstablisherFrame: PVOID,
+    ContextRecord: ptr CONTEXT,
+    DispatcherContext: PVOID,
+  ): EXCEPTION_DISPOSITION {.stdcall.}
   PEXCEPTION_ROUTINE* = EXCEPTION_ROUTINE
   PKSPIN_LOCK* = ptr KSPIN_LOCK
   PM128A* = ptr M128A
   XSAVE_AREA_HEADER* {.pure.} = object
     Mask*: DWORD64
     Reserved*: array[7, DWORD64]
+
   PXSAVE_AREA_HEADER* = ptr XSAVE_AREA_HEADER
+
 when winimCpu64:
-  type
-    XSAVE_FORMAT* {.pure.} = object
-      ControlWord*: WORD
-      StatusWord*: WORD
-      TagWord*: BYTE
-      Reserved1*: BYTE
-      ErrorOpcode*: WORD
-      ErrorOffset*: DWORD
-      ErrorSelector*: WORD
-      Reserved2*: WORD
-      DataOffset*: DWORD
-      DataSelector*: WORD
-      Reserved3*: WORD
-      MxCsr*: DWORD
-      MxCsr_Mask*: DWORD
-      FloatRegisters*: array[8, M128A]
-      XmmRegisters*: array[16, M128A]
-      Reserved4*: array[96, BYTE]
+  type XSAVE_FORMAT* {.pure.} = object
+    ControlWord*: WORD
+    StatusWord*: WORD
+    TagWord*: BYTE
+    Reserved1*: BYTE
+    ErrorOpcode*: WORD
+    ErrorOffset*: DWORD
+    ErrorSelector*: WORD
+    Reserved2*: WORD
+    DataOffset*: DWORD
+    DataSelector*: WORD
+    Reserved3*: WORD
+    MxCsr*: DWORD
+    MxCsr_Mask*: DWORD
+    FloatRegisters*: array[8, M128A]
+    XmmRegisters*: array[16, M128A]
+    Reserved4*: array[96, BYTE]
+
 when winimCpu32:
-  type
-    XSAVE_FORMAT* {.pure.} = object
-      ControlWord*: WORD
-      StatusWord*: WORD
-      TagWord*: BYTE
-      Reserved1*: BYTE
-      ErrorOpcode*: WORD
-      ErrorOffset*: DWORD
-      ErrorSelector*: WORD
-      Reserved2*: WORD
-      DataOffset*: DWORD
-      DataSelector*: WORD
-      Reserved3*: WORD
-      MxCsr*: DWORD
-      MxCsr_Mask*: DWORD
-      FloatRegisters*: array[8, M128A]
-      XmmRegisters*: array[8, M128A]
-      Reserved4*: array[220, BYTE]
-      Cr0NpxState*: DWORD
+  type XSAVE_FORMAT* {.pure.} = object
+    ControlWord*: WORD
+    StatusWord*: WORD
+    TagWord*: BYTE
+    Reserved1*: BYTE
+    ErrorOpcode*: WORD
+    ErrorOffset*: DWORD
+    ErrorSelector*: WORD
+    Reserved2*: WORD
+    DataOffset*: DWORD
+    DataSelector*: WORD
+    Reserved3*: WORD
+    MxCsr*: DWORD
+    MxCsr_Mask*: DWORD
+    FloatRegisters*: array[8, M128A]
+    XmmRegisters*: array[8, M128A]
+    Reserved4*: array[220, BYTE]
+    Cr0NpxState*: DWORD
+
 type
   XSAVE_AREA* {.pure.} = object
     LegacyState*: XSAVE_FORMAT
     Header*: XSAVE_AREA_HEADER
+
   PXSAVE_AREA* = ptr XSAVE_AREA
   SCOPE_TABLE_AMD64_ScopeRecord* {.pure.} = object
     BeginAddress*: DWORD
     EndAddress*: DWORD
     HandlerAddress*: DWORD
     JumpTarget*: DWORD
+
   SCOPE_TABLE_AMD64* {.pure.} = object
     Count*: DWORD
     ScopeRecord*: array[1, SCOPE_TABLE_AMD64_ScopeRecord]
+
   PSCOPE_TABLE_AMD64* = ptr SCOPE_TABLE_AMD64
   LDT_ENTRY_HighWord_Bytes* {.pure.} = object
     BaseMid*: BYTE
     Flags1*: BYTE
     Flags2*: BYTE
     BaseHi*: BYTE
+
   LDT_ENTRY_HighWord_Bits* {.pure.} = object
-    BaseMid* {.bitsize:8.}: DWORD
-    Type* {.bitsize:5.}: DWORD
-    Dpl* {.bitsize:2.}: DWORD
-    Pres* {.bitsize:1.}: DWORD
-    LimitHi* {.bitsize:4.}: DWORD
-    Sys* {.bitsize:1.}: DWORD
-    Reserved_0* {.bitsize:1.}: DWORD
-    Default_Big* {.bitsize:1.}: DWORD
-    Granularity* {.bitsize:1.}: DWORD
-    BaseHi* {.bitsize:8.}: DWORD
+    BaseMid* {.bitsize: 8.}: DWORD
+    Type* {.bitsize: 5.}: DWORD
+    Dpl* {.bitsize: 2.}: DWORD
+    Pres* {.bitsize: 1.}: DWORD
+    LimitHi* {.bitsize: 4.}: DWORD
+    Sys* {.bitsize: 1.}: DWORD
+    Reserved_0* {.bitsize: 1.}: DWORD
+    Default_Big* {.bitsize: 1.}: DWORD
+    Granularity* {.bitsize: 1.}: DWORD
+    BaseHi* {.bitsize: 8.}: DWORD
+
   LDT_ENTRY_HighWord* {.pure, union.} = object
     Bytes*: LDT_ENTRY_HighWord_Bytes
     Bits*: LDT_ENTRY_HighWord_Bits
+
   LDT_ENTRY* {.pure.} = object
     LimitLow*: WORD
     BaseLow*: WORD
     HighWord*: LDT_ENTRY_HighWord
+
   PLDT_ENTRY* = ptr LDT_ENTRY
   EXCEPTION_RECORD32* {.pure.} = object
     ExceptionCode*: DWORD
@@ -833,6 +885,7 @@
     ExceptionAddress*: DWORD
     NumberParameters*: DWORD
     ExceptionInformation*: array[EXCEPTION_MAXIMUM_PARAMETERS, DWORD]
+
   PEXCEPTION_RECORD32* = ptr EXCEPTION_RECORD32
   EXCEPTION_RECORD64* {.pure.} = object
     ExceptionCode*: DWORD
@@ -842,6 +895,7 @@
     NumberParameters*: DWORD
     unusedAlignment*: DWORD
     ExceptionInformation*: array[EXCEPTION_MAXIMUM_PARAMETERS, DWORD64]
+
   PEXCEPTION_RECORD64* = ptr EXCEPTION_RECORD64
   PEXCEPTION_POINTERS* = ptr EXCEPTION_POINTERS
   PACCESS_MASK* = ptr ACCESS_MASK
@@ -850,38 +904,44 @@
     GenericWrite*: ACCESS_MASK
     GenericExecute*: ACCESS_MASK
     GenericAll*: ACCESS_MASK
+
   PGENERIC_MAPPING* = ptr GENERIC_MAPPING
   LUID_AND_ATTRIBUTES* {.pure.} = object
     Luid*: LUID
     Attributes*: DWORD
+
   PLUID_AND_ATTRIBUTES* = ptr LUID_AND_ATTRIBUTES
-const
-  ANYSIZE_ARRAY* = 1
+
+const ANYSIZE_ARRAY* = 1
 type
   LUID_AND_ATTRIBUTES_ARRAY* = array[ANYSIZE_ARRAY, LUID_AND_ATTRIBUTES]
   PLUID_AND_ATTRIBUTES_ARRAY* = ptr LUID_AND_ATTRIBUTES_ARRAY
   SID_IDENTIFIER_AUTHORITY* {.pure.} = object
     Value*: array[6, BYTE]
+
   PSID_IDENTIFIER_AUTHORITY* = ptr SID_IDENTIFIER_AUTHORITY
   SID* {.pure.} = object
     Revision*: BYTE
     SubAuthorityCount*: BYTE
     IdentifierAuthority*: SID_IDENTIFIER_AUTHORITY
     SubAuthority*: array[ANYSIZE_ARRAY, DWORD]
+
   PISID* = ptr SID
   SID_AND_ATTRIBUTES* {.pure.} = object
     Sid*: PSID
     Attributes*: DWORD
+
   PSID_AND_ATTRIBUTES* = ptr SID_AND_ATTRIBUTES
   SID_AND_ATTRIBUTES_ARRAY* = array[ANYSIZE_ARRAY, SID_AND_ATTRIBUTES]
   PSID_AND_ATTRIBUTES_ARRAY* = ptr SID_AND_ATTRIBUTES_ARRAY
-const
-  SID_HASH_SIZE* = 32
+
+const SID_HASH_SIZE* = 32
 type
   SID_AND_ATTRIBUTES_HASH* {.pure.} = object
     SidCount*: DWORD
     SidAttr*: PSID_AND_ATTRIBUTES
     Hash*: array[SID_HASH_SIZE, SID_HASH_ENTRY]
+
   PSID_AND_ATTRIBUTES_HASH* = ptr SID_AND_ATTRIBUTES_HASH
   ACL* {.pure.} = object
     AclRevision*: BYTE
@@ -889,46 +949,55 @@
     AclSize*: WORD
     AceCount*: WORD
     Sbz2*: WORD
+
   PACL* = ptr ACL
   ACE_HEADER* {.pure.} = object
     AceType*: BYTE
     AceFlags*: BYTE
     AceSize*: WORD
+
   PACE_HEADER* = ptr ACE_HEADER
   ACCESS_ALLOWED_ACE* {.pure.} = object
     Header*: ACE_HEADER
     Mask*: ACCESS_MASK
     SidStart*: DWORD
+
   PACCESS_ALLOWED_ACE* = ptr ACCESS_ALLOWED_ACE
   ACCESS_DENIED_ACE* {.pure.} = object
     Header*: ACE_HEADER
     Mask*: ACCESS_MASK
     SidStart*: DWORD
+
   PACCESS_DENIED_ACE* = ptr ACCESS_DENIED_ACE
   SYSTEM_AUDIT_ACE* {.pure.} = object
     Header*: ACE_HEADER
     Mask*: ACCESS_MASK
     SidStart*: DWORD
+
   PSYSTEM_AUDIT_ACE* = ptr SYSTEM_AUDIT_ACE
   SYSTEM_ALARM_ACE* {.pure.} = object
     Header*: ACE_HEADER
     Mask*: ACCESS_MASK
     SidStart*: DWORD
+
   PSYSTEM_ALARM_ACE* = ptr SYSTEM_ALARM_ACE
   SYSTEM_RESOURCE_ATTRIBUTE_ACE* {.pure.} = object
     Header*: ACE_HEADER
     Mask*: ACCESS_MASK
     SidStart*: DWORD
+
   PSYSTEM_RESOURCE_ATTRIBUTE_ACE* = ptr SYSTEM_RESOURCE_ATTRIBUTE_ACE
   SYSTEM_SCOPED_POLICY_ID_ACE* {.pure.} = object
     Header*: ACE_HEADER
     Mask*: ACCESS_MASK
     SidStart*: DWORD
+
   PSYSTEM_SCOPED_POLICY_ID_ACE* = ptr SYSTEM_SCOPED_POLICY_ID_ACE
   SYSTEM_MANDATORY_LABEL_ACE* {.pure.} = object
     Header*: ACE_HEADER
     Mask*: ACCESS_MASK
     SidStart*: DWORD
+
   PSYSTEM_MANDATORY_LABEL_ACE* = ptr SYSTEM_MANDATORY_LABEL_ACE
   ACCESS_ALLOWED_OBJECT_ACE* {.pure.} = object
     Header*: ACE_HEADER
@@ -937,6 +1006,7 @@
     ObjectType*: GUID
     InheritedObjectType*: GUID
     SidStart*: DWORD
+
   PACCESS_ALLOWED_OBJECT_ACE* = ptr ACCESS_ALLOWED_OBJECT_ACE
   ACCESS_DENIED_OBJECT_ACE* {.pure.} = object
     Header*: ACE_HEADER
@@ -945,6 +1015,7 @@
     ObjectType*: GUID
     InheritedObjectType*: GUID
     SidStart*: DWORD
+
   PACCESS_DENIED_OBJECT_ACE* = ptr ACCESS_DENIED_OBJECT_ACE
   SYSTEM_AUDIT_OBJECT_ACE* {.pure.} = object
     Header*: ACE_HEADER
@@ -953,6 +1024,7 @@
     ObjectType*: GUID
     InheritedObjectType*: GUID
     SidStart*: DWORD
+
   PSYSTEM_AUDIT_OBJECT_ACE* = ptr SYSTEM_AUDIT_OBJECT_ACE
   SYSTEM_ALARM_OBJECT_ACE* {.pure.} = object
     Header*: ACE_HEADER
@@ -961,26 +1033,31 @@
     ObjectType*: GUID
     InheritedObjectType*: GUID
     SidStart*: DWORD
+
   PSYSTEM_ALARM_OBJECT_ACE* = ptr SYSTEM_ALARM_OBJECT_ACE
   ACCESS_ALLOWED_CALLBACK_ACE* {.pure.} = object
     Header*: ACE_HEADER
     Mask*: ACCESS_MASK
     SidStart*: DWORD
+
   PACCESS_ALLOWED_CALLBACK_ACE* = ptr ACCESS_ALLOWED_CALLBACK_ACE
   ACCESS_DENIED_CALLBACK_ACE* {.pure.} = object
     Header*: ACE_HEADER
     Mask*: ACCESS_MASK
     SidStart*: DWORD
+
   PACCESS_DENIED_CALLBACK_ACE* = ptr ACCESS_DENIED_CALLBACK_ACE
   SYSTEM_AUDIT_CALLBACK_ACE* {.pure.} = object
     Header*: ACE_HEADER
     Mask*: ACCESS_MASK
     SidStart*: DWORD
+
   PSYSTEM_AUDIT_CALLBACK_ACE* = ptr SYSTEM_AUDIT_CALLBACK_ACE
   SYSTEM_ALARM_CALLBACK_ACE* {.pure.} = object
     Header*: ACE_HEADER
     Mask*: ACCESS_MASK
     SidStart*: DWORD
+
   PSYSTEM_ALARM_CALLBACK_ACE* = ptr SYSTEM_ALARM_CALLBACK_ACE
   ACCESS_ALLOWED_CALLBACK_OBJECT_ACE* {.pure.} = object
     Header*: ACE_HEADER
@@ -989,6 +1066,7 @@
     ObjectType*: GUID
     InheritedObjectType*: GUID
     SidStart*: DWORD
+
   PACCESS_ALLOWED_CALLBACK_OBJECT_ACE* = ptr ACCESS_ALLOWED_CALLBACK_OBJECT_ACE
   ACCESS_DENIED_CALLBACK_OBJECT_ACE* {.pure.} = object
     Header*: ACE_HEADER
@@ -997,6 +1075,7 @@
     ObjectType*: GUID
     InheritedObjectType*: GUID
     SidStart*: DWORD
+
   PACCESS_DENIED_CALLBACK_OBJECT_ACE* = ptr ACCESS_DENIED_CALLBACK_OBJECT_ACE
   SYSTEM_AUDIT_CALLBACK_OBJECT_ACE* {.pure.} = object
     Header*: ACE_HEADER
@@ -1005,6 +1084,7 @@
     ObjectType*: GUID
     InheritedObjectType*: GUID
     SidStart*: DWORD
+
   PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE* = ptr SYSTEM_AUDIT_CALLBACK_OBJECT_ACE
   SYSTEM_ALARM_CALLBACK_OBJECT_ACE* {.pure.} = object
     Header*: ACE_HEADER
@@ -1013,14 +1093,17 @@
     ObjectType*: GUID
     InheritedObjectType*: GUID
     SidStart*: DWORD
+
   PSYSTEM_ALARM_CALLBACK_OBJECT_ACE* = ptr SYSTEM_ALARM_CALLBACK_OBJECT_ACE
   ACL_REVISION_INFORMATION* {.pure.} = object
     AclRevision*: DWORD
+
   PACL_REVISION_INFORMATION* = ptr ACL_REVISION_INFORMATION
   ACL_SIZE_INFORMATION* {.pure.} = object
     AceCount*: DWORD
     AclBytesInUse*: DWORD
     AclBytesFree*: DWORD
+
   PACL_SIZE_INFORMATION* = ptr ACL_SIZE_INFORMATION
   SECURITY_DESCRIPTOR_RELATIVE* {.pure.} = object
     Revision*: BYTE
@@ -1030,6 +1113,7 @@
     Group*: DWORD
     Sacl*: DWORD
     Dacl*: DWORD
+
   PISECURITY_DESCRIPTOR_RELATIVE* = ptr SECURITY_DESCRIPTOR_RELATIVE
   SECURITY_DESCRIPTOR* {.pure.} = object
     Revision*: BYTE
@@ -1039,24 +1123,29 @@
     Group*: PSID
     Sacl*: PACL
     Dacl*: PACL
+
   PISECURITY_DESCRIPTOR* = ptr SECURITY_DESCRIPTOR
   OBJECT_TYPE_LIST* {.pure.} = object
     Level*: WORD
     Sbz*: WORD
     ObjectType*: ptr GUID
+
   POBJECT_TYPE_LIST* = ptr OBJECT_TYPE_LIST
   PRIVILEGE_SET* {.pure.} = object
     PrivilegeCount*: DWORD
     Control*: DWORD
     Privilege*: array[ANYSIZE_ARRAY, LUID_AND_ATTRIBUTES]
+
   PPRIVILEGE_SET* = ptr PRIVILEGE_SET
   ACCESS_REASONS* {.pure.} = object
     Data*: array[32, ACCESS_REASON]
+
   PACCESS_REASONS* = ptr ACCESS_REASONS
   SE_SECURITY_DESCRIPTOR* {.pure.} = object
     Size*: DWORD
     Flags*: DWORD
     SecurityDescriptor*: PSECURITY_DESCRIPTOR
+
   PSE_SECURITY_DESCRIPTOR* = ptr SE_SECURITY_DESCRIPTOR
   SE_ACCESS_REQUEST* {.pure.} = object
     Size*: DWORD
@@ -1067,6 +1156,7 @@
     GenericMapping*: PGENERIC_MAPPING
     ObjectTypeListCount*: DWORD
     ObjectTypeList*: POBJECT_TYPE_LIST
+
   PSE_ACCESS_REQUEST* = ptr SE_ACCESS_REQUEST
   SE_ACCESS_REPLY* {.pure.} = object
     Size*: DWORD
@@ -1075,33 +1165,42 @@
     AccessStatus*: PDWORD
     AccessReason*: PACCESS_REASONS
     Privileges*: ptr PPRIVILEGE_SET
+
   PSE_ACCESS_REPLY* = ptr SE_ACCESS_REPLY
   PTOKEN_TYPE* = ptr TOKEN_TYPE
   TOKEN_USER* {.pure.} = object
     User*: SID_AND_ATTRIBUTES
+
   PTOKEN_USER* = ptr TOKEN_USER
   TOKEN_GROUPS* {.pure.} = object
     GroupCount*: DWORD
     Groups*: array[ANYSIZE_ARRAY, SID_AND_ATTRIBUTES]
+
   PTOKEN_GROUPS* = ptr TOKEN_GROUPS
   TOKEN_PRIVILEGES* {.pure.} = object
     PrivilegeCount*: DWORD
     Privileges*: array[ANYSIZE_ARRAY, LUID_AND_ATTRIBUTES]
+
   PTOKEN_PRIVILEGES* = ptr TOKEN_PRIVILEGES
   TOKEN_OWNER* {.pure.} = object
     Owner*: PSID
+
   PTOKEN_OWNER* = ptr TOKEN_OWNER
   TOKEN_PRIMARY_GROUP* {.pure.} = object
     PrimaryGroup*: PSID
+
   PTOKEN_PRIMARY_GROUP* = ptr TOKEN_PRIMARY_GROUP
   TOKEN_DEFAULT_DACL* {.pure.} = object
     DefaultDacl*: PACL
+
   PTOKEN_DEFAULT_DACL* = ptr TOKEN_DEFAULT_DACL
   TOKEN_USER_CLAIMS* {.pure.} = object
     UserClaims*: PCLAIMS_BLOB
+
   PTOKEN_USER_CLAIMS* = ptr TOKEN_USER_CLAIMS
   TOKEN_DEVICE_CLAIMS* {.pure.} = object
     DeviceClaims*: PCLAIMS_BLOB
+
   PTOKEN_DEVICE_CLAIMS* = ptr TOKEN_DEVICE_CLAIMS
   TOKEN_GROUPS_AND_PRIVILEGES* {.pure.} = object
     SidCount*: DWORD
@@ -1114,18 +1213,23 @@
     PrivilegeLength*: DWORD
     Privileges*: PLUID_AND_ATTRIBUTES
     AuthenticationId*: LUID
+
   PTOKEN_GROUPS_AND_PRIVILEGES* = ptr TOKEN_GROUPS_AND_PRIVILEGES
   TOKEN_LINKED_TOKEN* {.pure.} = object
     LinkedToken*: HANDLE
+
   PTOKEN_LINKED_TOKEN* = ptr TOKEN_LINKED_TOKEN
   TOKEN_ELEVATION* {.pure.} = object
     TokenIsElevated*: DWORD
+
   PTOKEN_ELEVATION* = ptr TOKEN_ELEVATION
   TOKEN_MANDATORY_LABEL* {.pure.} = object
     Label*: SID_AND_ATTRIBUTES
+
   PTOKEN_MANDATORY_LABEL* = ptr TOKEN_MANDATORY_LABEL
   TOKEN_MANDATORY_POLICY* {.pure.} = object
     Policy*: DWORD
+
   PTOKEN_MANDATORY_POLICY* = ptr TOKEN_MANDATORY_POLICY
   TOKEN_ACCESS_INFORMATION* {.pure.} = object
     SidHash*: PSID_AND_ATTRIBUTES_HASH
@@ -1139,19 +1243,22 @@
     AppContainerNumber*: DWORD
     PackageSid*: PSID
     CapabilitiesHash*: PSID_AND_ATTRIBUTES_HASH
+
   PTOKEN_ACCESS_INFORMATION* = ptr TOKEN_ACCESS_INFORMATION
-const
-  POLICY_AUDIT_SUBCATEGORY_COUNT* = 56
+
+const POLICY_AUDIT_SUBCATEGORY_COUNT* = 56
 type
   TOKEN_AUDIT_POLICY* {.pure.} = object
     PerUserPolicy*: array[((POLICY_AUDIT_SUBCATEGORY_COUNT) shr 1) + 1, UCHAR]
+
   PTOKEN_AUDIT_POLICY* = ptr TOKEN_AUDIT_POLICY
-const
-  TOKEN_SOURCE_LENGTH* = 8
+
+const TOKEN_SOURCE_LENGTH* = 8
 type
   TOKEN_SOURCE* {.pure.} = object
     SourceName*: array[TOKEN_SOURCE_LENGTH, CHAR]
     SourceIdentifier*: LUID
+
   PTOKEN_SOURCE* = ptr TOKEN_SOURCE
   TOKEN_STATISTICS* {.pure.} = object
     TokenId*: LUID
@@ -1164,33 +1271,41 @@
     GroupCount*: DWORD
     PrivilegeCount*: DWORD
     ModifiedId*: LUID
+
   PTOKEN_STATISTICS* = ptr TOKEN_STATISTICS
   TOKEN_CONTROL* {.pure.} = object
     TokenId*: LUID
     AuthenticationId*: LUID
     ModifiedId*: LUID
     TokenSource*: TOKEN_SOURCE
+
   PTOKEN_CONTROL* = ptr TOKEN_CONTROL
   TOKEN_ORIGIN* {.pure.} = object
     OriginatingLogonSession*: LUID
+
   PTOKEN_ORIGIN* = ptr TOKEN_ORIGIN
   TOKEN_APPCONTAINER_INFORMATION* {.pure.} = object
     TokenAppContainer*: PSID
+
   PTOKEN_APPCONTAINER_INFORMATION* = ptr TOKEN_APPCONTAINER_INFORMATION
   CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE* {.pure.} = object
     Version*: DWORD64
     Name*: PWSTR
+
   PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE* = ptr CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE
   CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE* {.pure.} = object
     pValue*: PVOID
     ValueLength*: DWORD
-  PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE* = ptr CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE
+
+  PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE* =
+    ptr CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE
   CLAIM_SECURITY_ATTRIBUTE_V1_Values* {.pure, union.} = object
     pInt64*: PLONG64
     pUint64*: PDWORD64
     ppString*: ptr PWSTR
     pFqbn*: PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE
     pOctetString*: PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE
+
   CLAIM_SECURITY_ATTRIBUTE_V1* {.pure.} = object
     Name*: PWSTR
     ValueType*: WORD
@@ -1198,6 +1313,7 @@
     Flags*: DWORD
     ValueCount*: DWORD
     Values*: CLAIM_SECURITY_ATTRIBUTE_V1_Values
+
   PCLAIM_SECURITY_ATTRIBUTE_V1* = ptr CLAIM_SECURITY_ATTRIBUTE_V1
   CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1_Values* {.pure, union.} = object
     pInt64*: array[ANYSIZE_ARRAY, DWORD]
@@ -1205,6 +1321,7 @@
     ppString*: array[ANYSIZE_ARRAY, DWORD]
     pFqbn*: array[ANYSIZE_ARRAY, DWORD]
     pOctetString*: array[ANYSIZE_ARRAY, DWORD]
+
   CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1* {.pure.} = object
     Name*: DWORD
     ValueType*: WORD
@@ -1212,43 +1329,51 @@
     Flags*: DWORD
     ValueCount*: DWORD
     Values*: CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1_Values
+
   PCLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1* = ptr CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1
   CLAIM_SECURITY_ATTRIBUTES_INFORMATION_Attribute* {.pure, union.} = object
     pAttributeV1*: PCLAIM_SECURITY_ATTRIBUTE_V1
+
   CLAIM_SECURITY_ATTRIBUTES_INFORMATION* {.pure.} = object
     Version*: WORD
     Reserved*: WORD
     AttributeCount*: DWORD
     Attribute*: CLAIM_SECURITY_ATTRIBUTES_INFORMATION_Attribute
+
   PCLAIM_SECURITY_ATTRIBUTES_INFORMATION* = ptr CLAIM_SECURITY_ATTRIBUTES_INFORMATION
   SECURITY_QUALITY_OF_SERVICE* {.pure.} = object
     Length*: DWORD
     ImpersonationLevel*: SECURITY_IMPERSONATION_LEVEL
     ContextTrackingMode*: SECURITY_CONTEXT_TRACKING_MODE
     EffectiveOnly*: BOOLEAN
+
   PSECURITY_QUALITY_OF_SERVICE* = ptr SECURITY_QUALITY_OF_SERVICE
   SE_IMPERSONATION_STATE* {.pure.} = object
     Token*: PACCESS_TOKEN
     CopyOnOpen*: BOOLEAN
     EffectiveOnly*: BOOLEAN
     Level*: SECURITY_IMPERSONATION_LEVEL
+
   PSE_IMPERSONATION_STATE* = ptr SE_IMPERSONATION_STATE
   SECURITY_CAPABILITIES* {.pure.} = object
     AppContainerSid*: PSID
     Capabilities*: PSID_AND_ATTRIBUTES
     CapabilityCount*: DWORD
     Reserved*: DWORD
+
   PSECURITY_CAPABILITIES* = ptr SECURITY_CAPABILITIES
   LPSECURITY_CAPABILITIES* = ptr SECURITY_CAPABILITIES
   JOB_SET_ARRAY* {.pure.} = object
     JobHandle*: HANDLE
     MemberLevel*: DWORD
     Flags*: DWORD
+
   PJOB_SET_ARRAY* = ptr JOB_SET_ARRAY
   EXCEPTION_REGISTRATION_RECORD* {.pure.} = object
   NT_TIB_UNION1* {.pure, union.} = object
     FiberData*: PVOID
     Version*: DWORD
+
   NT_TIB* {.pure.} = object
     ExceptionList*: ptr EXCEPTION_REGISTRATION_RECORD
     StackBase*: PVOID
@@ -1257,10 +1382,12 @@
     union1*: NT_TIB_UNION1
     ArbitraryUserPointer*: PVOID
     Self*: ptr NT_TIB
+
   PNT_TIB* = ptr NT_TIB
   NT_TIB32_UNION1* {.pure, union.} = object
     FiberData*: DWORD
     Version*: DWORD
+
   NT_TIB32* {.pure.} = object
     ExceptionList*: DWORD
     StackBase*: DWORD
@@ -1269,10 +1396,12 @@
     union1*: NT_TIB32_UNION1
     ArbitraryUserPointer*: DWORD
     Self*: DWORD
+
   PNT_TIB32* = ptr NT_TIB32
   NT_TIB64_UNION1* {.pure, union.} = object
     FiberData*: DWORD64
     Version*: DWORD
+
   NT_TIB64* {.pure.} = object
     ExceptionList*: DWORD64
     StackBase*: DWORD64
@@ -1281,11 +1410,13 @@
     union1*: NT_TIB64_UNION1
     ArbitraryUserPointer*: DWORD64
     Self*: DWORD64
+
   PNT_TIB64* = ptr NT_TIB64
   UMS_CREATE_THREAD_ATTRIBUTES* {.pure.} = object
     UmsVersion*: DWORD
     UmsContext*: PVOID
     UmsCompletionList*: PVOID
+
   PUMS_CREATE_THREAD_ATTRIBUTES* = ptr UMS_CREATE_THREAD_ATTRIBUTES
   QUOTA_LIMITS* {.pure.} = object
     PagedPoolLimit*: SIZE_T
@@ -1294,13 +1425,16 @@
     MaximumWorkingSetSize*: SIZE_T
     PagefileLimit*: SIZE_T
     TimeLimit*: LARGE_INTEGER
+
   PQUOTA_LIMITS* = ptr QUOTA_LIMITS
   RATE_QUOTA_LIMIT_STRUCT1* {.pure.} = object
-    RatePercent* {.bitsize:7.}: DWORD
-    Reserved0* {.bitsize:25.}: DWORD
+    RatePercent* {.bitsize: 7.}: DWORD
+    Reserved0* {.bitsize: 25.}: DWORD
+
   RATE_QUOTA_LIMIT* {.pure, union.} = object
     RateData*: DWORD
     struct1*: RATE_QUOTA_LIMIT_STRUCT1
+
   PRATE_QUOTA_LIMIT* = ptr RATE_QUOTA_LIMIT
   QUOTA_LIMITS_EX* {.pure.} = object
     PagedPoolLimit*: SIZE_T
@@ -1315,6 +1449,7 @@
     Reserved4*: SIZE_T
     Flags*: DWORD
     CpuRateLimit*: RATE_QUOTA_LIMIT
+
   PQUOTA_LIMITS_EX* = ptr QUOTA_LIMITS_EX
   IO_COUNTERS* {.pure.} = object
     ReadOperationCount*: ULONGLONG
@@ -1323,58 +1458,77 @@
     ReadTransferCount*: ULONGLONG
     WriteTransferCount*: ULONGLONG
     OtherTransferCount*: ULONGLONG
+
   PIO_COUNTERS* = ptr IO_COUNTERS
   PROCESS_MITIGATION_ASLR_POLICY_UNION1_STRUCT1* {.pure.} = object
-    EnableBottomUpRandomization* {.bitsize:1.}: DWORD
-    EnableForceRelocateImages* {.bitsize:1.}: DWORD
-    EnableHighEntropy* {.bitsize:1.}: DWORD
-    DisallowStrippedImages* {.bitsize:1.}: DWORD
-    ReservedFlags* {.bitsize:28.}: DWORD
+    EnableBottomUpRandomization* {.bitsize: 1.}: DWORD
+    EnableForceRelocateImages* {.bitsize: 1.}: DWORD
+    EnableHighEntropy* {.bitsize: 1.}: DWORD
+    DisallowStrippedImages* {.bitsize: 1.}: DWORD
+    ReservedFlags* {.bitsize: 28.}: DWORD
+
   PROCESS_MITIGATION_ASLR_POLICY_UNION1* {.pure, union.} = object
     Flags*: DWORD
     struct1*: PROCESS_MITIGATION_ASLR_POLICY_UNION1_STRUCT1
+
   PROCESS_MITIGATION_ASLR_POLICY* {.pure.} = object
     union1*: PROCESS_MITIGATION_ASLR_POLICY_UNION1
+
   PPROCESS_MITIGATION_ASLR_POLICY* = ptr PROCESS_MITIGATION_ASLR_POLICY
   PROCESS_MITIGATION_DEP_POLICY_UNION1_STRUCT1* {.pure.} = object
-    Enable* {.bitsize:1.}: DWORD
-    DisableAtlThunkEmulation* {.bitsize:1.}: DWORD
-    ReservedFlags* {.bitsize:30.}: DWORD
+    Enable* {.bitsize: 1.}: DWORD
+    DisableAtlThunkEmulation* {.bitsize: 1.}: DWORD
+    ReservedFlags* {.bitsize: 30.}: DWORD
+
   PROCESS_MITIGATION_DEP_POLICY_UNION1* {.pure, union.} = object
     Flags*: DWORD
     struct1*: PROCESS_MITIGATION_DEP_POLICY_UNION1_STRUCT1
+
   PROCESS_MITIGATION_DEP_POLICY* {.pure.} = object
     union1*: PROCESS_MITIGATION_DEP_POLICY_UNION1
     Permanent*: BOOLEAN
+
   PPROCESS_MITIGATION_DEP_POLICY* = ptr PROCESS_MITIGATION_DEP_POLICY
   PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY_UNION1_STRUCT1* {.pure.} = object
-    RaiseExceptionOnInvalidHandleReference* {.bitsize:1.}: DWORD
-    HandleExceptionsPermanentlyEnabled* {.bitsize:1.}: DWORD
-    ReservedFlags* {.bitsize:30.}: DWORD
+    RaiseExceptionOnInvalidHandleReference* {.bitsize: 1.}: DWORD
+    HandleExceptionsPermanentlyEnabled* {.bitsize: 1.}: DWORD
+    ReservedFlags* {.bitsize: 30.}: DWORD
+
   PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY_UNION1* {.pure, union.} = object
     Flags*: DWORD
     struct1*: PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY_UNION1_STRUCT1
+
   PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY* {.pure.} = object
     union1*: PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY_UNION1
-  PPROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY* = ptr PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY
+
+  PPROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY* =
+    ptr PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY
   PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY_UNION1_STRUCT1* {.pure.} = object
-    DisallowWin32kSystemCalls* {.bitsize:1.}: DWORD
-    ReservedFlags* {.bitsize:31.}: DWORD
+    DisallowWin32kSystemCalls* {.bitsize: 1.}: DWORD
+    ReservedFlags* {.bitsize: 31.}: DWORD
+
   PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY_UNION1* {.pure, union.} = object
     Flags*: DWORD
     struct1*: PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY_UNION1_STRUCT1
+
   PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY* {.pure.} = object
     union1*: PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY_UNION1
-  PPROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY* = ptr PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY
+
+  PPROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY* =
+    ptr PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY
   PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY_UNION1_STRUCT1* {.pure.} = object
-    DisableExtensionPoints* {.bitsize:1.}: DWORD
-    ReservedFlags* {.bitsize:31.}: DWORD
+    DisableExtensionPoints* {.bitsize: 1.}: DWORD
+    ReservedFlags* {.bitsize: 31.}: DWORD
+
   PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY_UNION1* {.pure, union.} = object
     Flags*: DWORD
     struct1*: PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY_UNION1_STRUCT1
+
   PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY* {.pure.} = object
     union1*: PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY_UNION1
-  PPROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY* = ptr PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY
+
+  PPROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY* =
+    ptr PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY
   JOBOBJECT_BASIC_ACCOUNTING_INFORMATION* {.pure.} = object
     TotalUserTime*: LARGE_INTEGER
     TotalKernelTime*: LARGE_INTEGER
@@ -1384,6 +1538,7 @@
     TotalProcesses*: DWORD
     ActiveProcesses*: DWORD
     TotalTerminatedProcesses*: DWORD
+
   PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION* = ptr JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
   JOBOBJECT_BASIC_LIMIT_INFORMATION* {.pure.} = object
     PerProcessUserTimeLimit*: LARGE_INTEGER
@@ -1395,6 +1550,7 @@
     Affinity*: ULONG_PTR
     PriorityClass*: DWORD
     SchedulingClass*: DWORD
+
   PJOBOBJECT_BASIC_LIMIT_INFORMATION* = ptr JOBOBJECT_BASIC_LIMIT_INFORMATION
   JOBOBJECT_EXTENDED_LIMIT_INFORMATION* {.pure.} = object
     BasicLimitInformation*: JOBOBJECT_BASIC_LIMIT_INFORMATION
@@ -1403,14 +1559,17 @@
     JobMemoryLimit*: SIZE_T
     PeakProcessMemoryUsed*: SIZE_T
     PeakJobMemoryUsed*: SIZE_T
+
   PJOBOBJECT_EXTENDED_LIMIT_INFORMATION* = ptr JOBOBJECT_EXTENDED_LIMIT_INFORMATION
   JOBOBJECT_BASIC_PROCESS_ID_LIST* {.pure.} = object
     NumberOfAssignedProcesses*: DWORD
     NumberOfProcessIdsInList*: DWORD
     ProcessIdList*: array[1, ULONG_PTR]
+
   PJOBOBJECT_BASIC_PROCESS_ID_LIST* = ptr JOBOBJECT_BASIC_PROCESS_ID_LIST
   JOBOBJECT_BASIC_UI_RESTRICTIONS* {.pure.} = object
     UIRestrictionsClass*: DWORD
+
   PJOBOBJECT_BASIC_UI_RESTRICTIONS* = ptr JOBOBJECT_BASIC_UI_RESTRICTIONS
   JOBOBJECT_SECURITY_LIMIT_INFORMATION* {.pure.} = object
     SecurityLimitFlags*: DWORD
@@ -1418,20 +1577,26 @@
     SidsToDisable*: PTOKEN_GROUPS
     PrivilegesToDelete*: PTOKEN_PRIVILEGES
     RestrictedSids*: PTOKEN_GROUPS
+
   PJOBOBJECT_SECURITY_LIMIT_INFORMATION* = ptr JOBOBJECT_SECURITY_LIMIT_INFORMATION
   JOBOBJECT_END_OF_JOB_TIME_INFORMATION* {.pure.} = object
     EndOfJobTimeAction*: DWORD
+
   PJOBOBJECT_END_OF_JOB_TIME_INFORMATION* = ptr JOBOBJECT_END_OF_JOB_TIME_INFORMATION
   JOBOBJECT_ASSOCIATE_COMPLETION_PORT* {.pure.} = object
     CompletionKey*: PVOID
     CompletionPort*: HANDLE
+
   PJOBOBJECT_ASSOCIATE_COMPLETION_PORT* = ptr JOBOBJECT_ASSOCIATE_COMPLETION_PORT
   JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION* {.pure.} = object
     BasicInfo*: JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
     IoInfo*: IO_COUNTERS
-  PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION* = ptr JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION
+
+  PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION* =
+    ptr JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION
   JOBOBJECT_JOBSET_INFORMATION* {.pure.} = object
     MemberLevel*: DWORD
+
   PJOBOBJECT_JOBSET_INFORMATION* = ptr JOBOBJECT_JOBSET_INFORMATION
   JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION* {.pure.} = object
     IoReadBytesLimit*: DWORD64
@@ -1441,7 +1606,9 @@
     RateControlTolerance*: JOBOBJECT_RATE_CONTROL_TOLERANCE
     RateControlToleranceInterval*: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL
     LimitFlags*: DWORD
-  PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION* = ptr JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION
+
+  PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION* =
+    ptr JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION
   JOBOBJECT_LIMIT_VIOLATION_INFORMATION* {.pure.} = object
     LimitFlags*: DWORD
     ViolationLimitFlags*: DWORD
@@ -1455,13 +1622,16 @@
     JobMemoryLimit*: DWORD64
     RateControlTolerance*: JOBOBJECT_RATE_CONTROL_TOLERANCE
     RateControlToleranceLimit*: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL
+
   PJOBOBJECT_LIMIT_VIOLATION_INFORMATION* = ptr JOBOBJECT_LIMIT_VIOLATION_INFORMATION
   JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_UNION1* {.pure, union.} = object
     CpuRate*: DWORD
     Weight*: DWORD
+
   JOBOBJECT_CPU_RATE_CONTROL_INFORMATION* {.pure.} = object
     ControlFlags*: DWORD
     union1*: JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_UNION1
+
   PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION* = ptr JOBOBJECT_CPU_RATE_CONTROL_INFORMATION
   CACHE_DESCRIPTOR* {.pure.} = object
     Level*: BYTE
@@ -1469,31 +1639,38 @@
     LineSize*: WORD
     Size*: DWORD
     Type*: PROCESSOR_CACHE_TYPE
+
   PCACHE_DESCRIPTOR* = ptr CACHE_DESCRIPTOR
   SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_ProcessorCore* {.pure.} = object
     Flags*: BYTE
+
   SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_NumaNode* {.pure.} = object
     NodeNumber*: DWORD
+
   SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1* {.pure, union.} = object
     ProcessorCore*: SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_ProcessorCore
     NumaNode*: SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_NumaNode
     Cache*: CACHE_DESCRIPTOR
     Reserved*: array[2, ULONGLONG]
+
   SYSTEM_LOGICAL_PROCESSOR_INFORMATION* {.pure.} = object
     ProcessorMask*: ULONG_PTR
     Relationship*: LOGICAL_PROCESSOR_RELATIONSHIP
     union1*: SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1
+
   PSYSTEM_LOGICAL_PROCESSOR_INFORMATION* = ptr SYSTEM_LOGICAL_PROCESSOR_INFORMATION
   PROCESSOR_RELATIONSHIP* {.pure.} = object
     Flags*: BYTE
     Reserved*: array[21, BYTE]
     GroupCount*: WORD
     GroupMask*: array[ANYSIZE_ARRAY, GROUP_AFFINITY]
+
   PPROCESSOR_RELATIONSHIP* = ptr PROCESSOR_RELATIONSHIP
   NUMA_NODE_RELATIONSHIP* {.pure.} = object
     NodeNumber*: DWORD
     Reserved*: array[20, BYTE]
     GroupMask*: GROUP_AFFINITY
+
   PNUMA_NODE_RELATIONSHIP* = ptr NUMA_NODE_RELATIONSHIP
   CACHE_RELATIONSHIP* {.pure.} = object
     Level*: BYTE
@@ -1503,45 +1680,55 @@
     Type*: PROCESSOR_CACHE_TYPE
     Reserved*: array[20, BYTE]
     GroupMask*: GROUP_AFFINITY
+
   PCACHE_RELATIONSHIP* = ptr CACHE_RELATIONSHIP
   PROCESSOR_GROUP_INFO* {.pure.} = object
     MaximumProcessorCount*: BYTE
     ActiveProcessorCount*: BYTE
     Reserved*: array[38, BYTE]
     ActiveProcessorMask*: KAFFINITY
+
   PPROCESSOR_GROUP_INFO* = ptr PROCESSOR_GROUP_INFO
   GROUP_RELATIONSHIP* {.pure.} = object
     MaximumGroupCount*: WORD
     ActiveGroupCount*: WORD
     Reserved*: array[20, BYTE]
     GroupInfo*: array[ANYSIZE_ARRAY, PROCESSOR_GROUP_INFO]
+
   PGROUP_RELATIONSHIP* = ptr GROUP_RELATIONSHIP
   SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX_UNION1* {.pure, union.} = object
     Processor*: PROCESSOR_RELATIONSHIP
     NumaNode*: NUMA_NODE_RELATIONSHIP
     Cache*: CACHE_RELATIONSHIP
     Group*: GROUP_RELATIONSHIP
+
   SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX* {.pure.} = object
     Relationship*: LOGICAL_PROCESSOR_RELATIONSHIP
     Size*: DWORD
     union1*: SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX_UNION1
-  PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX* = ptr SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX
+
+  PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX* =
+    ptr SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX
   SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION* {.pure.} = object
     CycleTime*: DWORD64
-  PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION* = ptr SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION
+
+  PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION* =
+    ptr SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION
   XSTATE_FEATURE* {.pure.} = object
     Offset*: DWORD
     Size*: DWORD
+
   PXSTATE_FEATURE* = ptr XSTATE_FEATURE
-const
-  MAXIMUM_XSTATE_FEATURES* = 64
+
+const MAXIMUM_XSTATE_FEATURES* = 64
 type
   XSTATE_CONFIGURATION* {.pure.} = object
     EnabledFeatures*: DWORD64
     EnabledVolatileFeatures*: DWORD64
     Size*: DWORD
-    OptimizedSave* {.bitsize:1.}: DWORD
+    OptimizedSave* {.bitsize: 1.}: DWORD
     Features*: array[MAXIMUM_XSTATE_FEATURES, XSTATE_FEATURE]
+
   PXSTATE_CONFIGURATION* = ptr XSTATE_CONFIGURATION
   MEMORY_BASIC_INFORMATION* {.pure.} = object
     BaseAddress*: PVOID
@@ -1551,6 +1738,7 @@
     State*: DWORD
     Protect*: DWORD
     Type*: DWORD
+
   PMEMORY_BASIC_INFORMATION* = ptr MEMORY_BASIC_INFORMATION
   MEMORY_BASIC_INFORMATION32* {.pure.} = object
     BaseAddress*: DWORD
@@ -1560,6 +1748,7 @@
     State*: DWORD
     Protect*: DWORD
     Type*: DWORD
+
   PMEMORY_BASIC_INFORMATION32* = ptr MEMORY_BASIC_INFORMATION32
   MEMORY_BASIC_INFORMATION64* {.pure.} = object
     BaseAddress*: ULONGLONG
@@ -1571,29 +1760,35 @@
     Protect*: DWORD
     Type*: DWORD
     alignment2*: DWORD
+
   PMEMORY_BASIC_INFORMATION64* = ptr MEMORY_BASIC_INFORMATION64
   FILE_ID_128* {.pure.} = object
     LowPart*: ULONGLONG
     HighPart*: ULONGLONG
+
   PFILE_ID_128* = ptr FILE_ID_128
   FILE_NOTIFY_INFORMATION* {.pure.} = object
     NextEntryOffset*: DWORD
     Action*: DWORD
     FileNameLength*: DWORD
     FileName*: array[1, WCHAR]
+
   PFILE_NOTIFY_INFORMATION* = ptr FILE_NOTIFY_INFORMATION
   FILE_SEGMENT_ELEMENT* {.pure, union.} = object
     Buffer*: PVOID64
     Alignment*: ULONGLONG
+
   PFILE_SEGMENT_ELEMENT* = ptr FILE_SEGMENT_ELEMENT
   REPARSE_GUID_DATA_BUFFER_GenericReparseBuffer* {.pure.} = object
     DataBuffer*: array[1, BYTE]
+
   REPARSE_GUID_DATA_BUFFER* {.pure.} = object
     ReparseTag*: DWORD
     ReparseDataLength*: WORD
     Reserved*: WORD
     ReparseGuid*: GUID
     GenericReparseBuffer*: REPARSE_GUID_DATA_BUFFER_GenericReparseBuffer
+
   PREPARSE_GUID_DATA_BUFFER* = ptr REPARSE_GUID_DATA_BUFFER
   SCRUB_DATA_INPUT* {.pure.} = object
     Size*: DWORD
@@ -1601,6 +1796,7 @@
     MaximumIos*: DWORD
     Reserved*: array[17, DWORD]
     ResumeContext*: array[816, BYTE]
+
   PSCRUB_DATA_INPUT* = ptr SCRUB_DATA_INPUT
   SCRUB_DATA_OUTPUT* {.pure.} = object
     Size*: DWORD
@@ -1613,9 +1809,10 @@
     InternalFileReference*: ULONGLONG
     Reserved*: array[6, DWORD]
     ResumeContext*: array[816, BYTE]
+
   PSCRUB_DATA_OUTPUT* = ptr SCRUB_DATA_OUTPUT
-const
-  POWER_SYSTEM_MAXIMUM* = 7
+
+const POWER_SYSTEM_MAXIMUM* = 7
 type
   CM_POWER_DATA* {.pure.} = object
     PD_Size*: DWORD
@@ -1626,40 +1823,49 @@
     PD_D3Latency*: DWORD
     PD_PowerStateMapping*: array[POWER_SYSTEM_MAXIMUM, DEVICE_POWER_STATE]
     PD_DeepestSystemWake*: SYSTEM_POWER_STATE
+
   PCM_POWER_DATA* = ptr CM_POWER_DATA
   POWER_USER_PRESENCE* {.pure.} = object
     UserPresence*: POWER_USER_PRESENCE_TYPE
+
   PPOWER_USER_PRESENCE* = ptr POWER_USER_PRESENCE
   POWER_SESSION_CONNECT* {.pure.} = object
     Connected*: BOOLEAN
     Console*: BOOLEAN
+
   PPOWER_SESSION_CONNECT* = ptr POWER_SESSION_CONNECT
   POWER_SESSION_TIMEOUTS* {.pure.} = object
     InputTimeout*: DWORD
     DisplayTimeout*: DWORD
+
   PPOWER_SESSION_TIMEOUTS* = ptr POWER_SESSION_TIMEOUTS
   POWER_SESSION_RIT_STATE* {.pure.} = object
     Active*: BOOLEAN
     LastInputTime*: DWORD
+
   PPOWER_SESSION_RIT_STATE* = ptr POWER_SESSION_RIT_STATE
   POWER_SESSION_WINLOGON* {.pure.} = object
     SessionId*: DWORD
     Console*: BOOLEAN
     Locked*: BOOLEAN
+
   PPOWER_SESSION_WINLOGON* = ptr POWER_SESSION_WINLOGON
   POWER_IDLE_RESILIENCY* {.pure.} = object
     CoalescingTimeout*: DWORD
     IdleResiliencyPeriod*: DWORD
+
   PPOWER_IDLE_RESILIENCY* = ptr POWER_IDLE_RESILIENCY
   POWER_MONITOR_INVOCATION* {.pure.} = object
     On*: BOOLEAN
     Console*: BOOLEAN
     RequestReason*: POWER_MONITOR_REQUEST_REASON
+
   PPOWER_MONITOR_INVOCATION* = ptr POWER_MONITOR_INVOCATION
   RESUME_PERFORMANCE* {.pure.} = object
     PostTimeMs*: DWORD
     TotalResumeTimeMs*: ULONGLONG
     ResumeCompleteTimestamp*: ULONGLONG
+
   PRESUME_PERFORMANCE* = ptr RESUME_PERFORMANCE
   SET_POWER_SETTING_VALUE* {.pure.} = object
     Version*: DWORD
@@ -1667,26 +1873,32 @@
     PowerCondition*: SYSTEM_POWER_CONDITION
     DataLength*: DWORD
     Data*: array[ANYSIZE_ARRAY, BYTE]
+
   PSET_POWER_SETTING_VALUE* = ptr SET_POWER_SETTING_VALUE
   NOTIFY_USER_POWER_SETTING* {.pure.} = object
     Guid*: GUID
+
   PNOTIFY_USER_POWER_SETTING* = ptr NOTIFY_USER_POWER_SETTING
   APPLICATIONLAUNCH_SETTING_VALUE* {.pure.} = object
     ActivationTime*: LARGE_INTEGER
     Flags*: DWORD
     ButtonInstanceID*: DWORD
+
   PAPPLICATIONLAUNCH_SETTING_VALUE* = ptr APPLICATIONLAUNCH_SETTING_VALUE
   POWER_PLATFORM_INFORMATION* {.pure.} = object
     AoAc*: BOOLEAN
+
   PPOWER_PLATFORM_INFORMATION* = ptr POWER_PLATFORM_INFORMATION
   BATTERY_REPORTING_SCALE* {.pure.} = object
     Granularity*: DWORD
     Capacity*: DWORD
+
   PBATTERY_REPORTING_SCALE* = ptr BATTERY_REPORTING_SCALE
   PPM_WMI_LEGACY_PERFSTATE* {.pure.} = object
     Frequency*: DWORD
     Flags*: DWORD
     PercentFrequency*: DWORD
+
   PPPM_WMI_LEGACY_PERFSTATE* = ptr PPM_WMI_LEGACY_PERFSTATE
   PPM_WMI_IDLE_STATE* {.pure.} = object
     Latency*: DWORD
@@ -1700,6 +1912,7 @@
     Context*: DWORD
     IdleHandler*: DWORD
     Reserved1*: DWORD
+
   PPPM_WMI_IDLE_STATE* = ptr PPM_WMI_IDLE_STATE
   PPM_WMI_IDLE_STATES* {.pure.} = object
     Type*: DWORD
@@ -1708,6 +1921,7 @@
     OldState*: DWORD
     TargetProcessors*: DWORD64
     State*: array[ANYSIZE_ARRAY, PPM_WMI_IDLE_STATE]
+
   PPPM_WMI_IDLE_STATES* = ptr PPM_WMI_IDLE_STATES
   PPM_WMI_IDLE_STATES_EX* {.pure.} = object
     Type*: DWORD
@@ -1716,6 +1930,7 @@
     OldState*: DWORD
     TargetProcessors*: PVOID
     State*: array[ANYSIZE_ARRAY, PPM_WMI_IDLE_STATE]
+
   PPPM_WMI_IDLE_STATES_EX* = ptr PPM_WMI_IDLE_STATES_EX
   PPM_WMI_PERF_STATE* {.pure.} = object
     Frequency*: DWORD
@@ -1732,6 +1947,7 @@
     Reserved1*: DWORD
     Reserved2*: DWORD64
     Reserved3*: DWORD64
+
   PPPM_WMI_PERF_STATE* = ptr PPM_WMI_PERF_STATE
   PPM_WMI_PERF_STATES* {.pure.} = object
     Count*: DWORD
@@ -1755,6 +1971,7 @@
     Reserved1*: DWORD
     Reserved2*: DWORD64
     State*: array[ANYSIZE_ARRAY, PPM_WMI_PERF_STATE]
+
   PPPM_WMI_PERF_STATES* = ptr PPM_WMI_PERF_STATES
   PPM_WMI_PERF_STATES_EX* {.pure.} = object
     Count*: DWORD
@@ -1778,9 +1995,10 @@
     Reserved1*: DWORD
     Reserved2*: DWORD64
     State*: array[ANYSIZE_ARRAY, PPM_WMI_PERF_STATE]
+
   PPPM_WMI_PERF_STATES_EX* = ptr PPM_WMI_PERF_STATES_EX
-const
-  PROC_IDLE_BUCKET_COUNT* = 6
+
+const PROC_IDLE_BUCKET_COUNT* = 6
 type
   PPM_IDLE_STATE_ACCOUNTING* {.pure.} = object
     IdleTransitions*: DWORD
@@ -1788,6 +2006,7 @@
     InvalidBucketIndex*: DWORD
     TotalTime*: DWORD64
     IdleTimeBuckets*: array[PROC_IDLE_BUCKET_COUNT, DWORD]
+
   PPPM_IDLE_STATE_ACCOUNTING* = ptr PPM_IDLE_STATE_ACCOUNTING
   PPM_IDLE_ACCOUNTING* {.pure.} = object
     StateCount*: DWORD
@@ -1795,15 +2014,17 @@
     ResetCount*: DWORD
     StartTime*: DWORD64
     State*: array[ANYSIZE_ARRAY, PPM_IDLE_STATE_ACCOUNTING]
+
   PPPM_IDLE_ACCOUNTING* = ptr PPM_IDLE_ACCOUNTING
   PPM_IDLE_STATE_BUCKET_EX* {.pure.} = object
     TotalTimeUs*: DWORD64
     MinTimeUs*: DWORD
     MaxTimeUs*: DWORD
     Count*: DWORD
+
   PPPM_IDLE_STATE_BUCKET_EX* = ptr PPM_IDLE_STATE_BUCKET_EX
-const
-  PROC_IDLE_BUCKET_COUNT_EX* = 16
+
+const PROC_IDLE_BUCKET_COUNT_EX* = 16
 type
   PPM_IDLE_STATE_ACCOUNTING_EX* {.pure.} = object
     TotalTime*: DWORD64
@@ -1814,6 +2035,7 @@
     MaxTimeUs*: DWORD
     CancelledTransitions*: DWORD
     IdleTimeBuckets*: array[PROC_IDLE_BUCKET_COUNT_EX, PPM_IDLE_STATE_BUCKET_EX]
+
   PPPM_IDLE_STATE_ACCOUNTING_EX* = ptr PPM_IDLE_STATE_ACCOUNTING_EX
   PPM_IDLE_ACCOUNTING_EX* {.pure.} = object
     StateCount*: DWORD
@@ -1822,6 +2044,7 @@
     AbortCount*: DWORD
     StartTime*: DWORD64
     State*: array[ANYSIZE_ARRAY, PPM_IDLE_STATE_ACCOUNTING_EX]
+
   PPPM_IDLE_ACCOUNTING_EX* = ptr PPM_IDLE_ACCOUNTING_EX
   PPM_PERFSTATE_EVENT* {.pure.} = object
     State*: DWORD
@@ -1829,36 +2052,43 @@
     Latency*: DWORD
     Speed*: DWORD
     Processor*: DWORD
+
   PPPM_PERFSTATE_EVENT* = ptr PPM_PERFSTATE_EVENT
   PPM_PERFSTATE_DOMAIN_EVENT* {.pure.} = object
     State*: DWORD
     Latency*: DWORD
     Speed*: DWORD
     Processors*: DWORD64
+
   PPPM_PERFSTATE_DOMAIN_EVENT* = ptr PPM_PERFSTATE_DOMAIN_EVENT
   PPM_IDLESTATE_EVENT* {.pure.} = object
     NewState*: DWORD
     OldState*: DWORD
     Processors*: DWORD64
+
   PPPM_IDLESTATE_EVENT* = ptr PPM_IDLESTATE_EVENT
   PPM_THERMALCHANGE_EVENT* {.pure.} = object
     ThermalConstraint*: DWORD
     Processors*: DWORD64
+
   PPPM_THERMALCHANGE_EVENT* = ptr PPM_THERMALCHANGE_EVENT
   PPM_THERMAL_POLICY_EVENT* {.pure.} = object
     Mode*: BYTE
     Processors*: DWORD64
+
   PPPM_THERMAL_POLICY_EVENT* = ptr PPM_THERMAL_POLICY_EVENT
   POWER_ACTION_POLICY* {.pure.} = object
     Action*: POWER_ACTION
     Flags*: DWORD
     EventCode*: DWORD
+
   PPOWER_ACTION_POLICY* = ptr POWER_ACTION_POLICY
   PROCESSOR_IDLESTATE_INFO* {.pure.} = object
     TimeCheck*: DWORD
     DemotePercent*: BYTE
     PromotePercent*: BYTE
     Spare*: array[2, BYTE]
+
   PPROCESSOR_IDLESTATE_INFO* = ptr PROCESSOR_IDLESTATE_INFO
   SYSTEM_POWER_LEVEL* {.pure.} = object
     Enable*: BOOLEAN
@@ -1866,9 +2096,10 @@
     BatteryLevel*: DWORD
     PowerPolicy*: POWER_ACTION_POLICY
     MinSystemState*: SYSTEM_POWER_STATE
+
   PSYSTEM_POWER_LEVEL* = ptr SYSTEM_POWER_LEVEL
-const
-  NUM_DISCHARGE_POLICIES* = 4
+
+const NUM_DISCHARGE_POLICIES* = 4
 type
   SYSTEM_POWER_POLICY* {.pure.} = object
     Revision*: DWORD
@@ -1899,22 +2130,25 @@
     ForcedThrottle*: BYTE
     MinThrottle*: BYTE
     OverThrottled*: POWER_ACTION_POLICY
+
   PSYSTEM_POWER_POLICY* = ptr SYSTEM_POWER_POLICY
   PROCESSOR_IDLESTATE_POLICY_Flags_STRUCT1* {.pure.} = object
-    AllowScaling* {.bitsize:1.}: WORD
-    Disabled* {.bitsize:1.}: WORD
-    Reserved* {.bitsize:14.}: WORD
+    AllowScaling* {.bitsize: 1.}: WORD
+    Disabled* {.bitsize: 1.}: WORD
+    Reserved* {.bitsize: 14.}: WORD
+
   PROCESSOR_IDLESTATE_POLICY_Flags* {.pure, union.} = object
     AsWORD*: WORD
     struct1*: PROCESSOR_IDLESTATE_POLICY_Flags_STRUCT1
-const
-  PROCESSOR_IDLESTATE_POLICY_COUNT* = 0x3
+
+const PROCESSOR_IDLESTATE_POLICY_COUNT* = 0x3
 type
   PROCESSOR_IDLESTATE_POLICY* {.pure.} = object
     Revision*: WORD
     Flags*: PROCESSOR_IDLESTATE_POLICY_Flags
     PolicyCount*: DWORD
     Policy*: array[PROCESSOR_IDLESTATE_POLICY_COUNT, PROCESSOR_IDLESTATE_INFO]
+
   PPROCESSOR_IDLESTATE_POLICY* = ptr PROCESSOR_IDLESTATE_POLICY
   PROCESSOR_POWER_POLICY_INFO* {.pure.} = object
     TimeCheck*: DWORD
@@ -1923,30 +2157,35 @@
     DemotePercent*: BYTE
     PromotePercent*: BYTE
     Spare*: array[2, BYTE]
-    AllowDemotion* {.bitsize:1.}: DWORD
-    AllowPromotion* {.bitsize:1.}: DWORD
-    Reserved* {.bitsize:30.}: DWORD
+    AllowDemotion* {.bitsize: 1.}: DWORD
+    AllowPromotion* {.bitsize: 1.}: DWORD
+    Reserved* {.bitsize: 30.}: DWORD
+
   PPROCESSOR_POWER_POLICY_INFO* = ptr PROCESSOR_POWER_POLICY_INFO
   PROCESSOR_POWER_POLICY* {.pure.} = object
     Revision*: DWORD
     DynamicThrottle*: BYTE
     Spare*: array[3, BYTE]
-    DisableCStates* {.bitsize:1.}: DWORD
-    Reserved* {.bitsize:31.}: DWORD
+    DisableCStates* {.bitsize: 1.}: DWORD
+    Reserved* {.bitsize: 31.}: DWORD
     PolicyCount*: DWORD
     Policy*: array[3, PROCESSOR_POWER_POLICY_INFO]
+
   PPROCESSOR_POWER_POLICY* = ptr PROCESSOR_POWER_POLICY
   PROCESSOR_PERFSTATE_POLICY_UNION1_Flags_STRUCT1* {.pure.} = object
-    NoDomainAccounting* {.bitsize:1.}: BYTE
-    IncreasePolicy* {.bitsize:2.}: BYTE
-    DecreasePolicy* {.bitsize:2.}: BYTE
-    Reserved* {.bitsize:3.}: BYTE
+    NoDomainAccounting* {.bitsize: 1.}: BYTE
+    IncreasePolicy* {.bitsize: 2.}: BYTE
+    DecreasePolicy* {.bitsize: 2.}: BYTE
+    Reserved* {.bitsize: 3.}: BYTE
+
   PROCESSOR_PERFSTATE_POLICY_UNION1_Flags* {.pure, union.} = object
     AsBYTE*: BYTE
     struct1*: PROCESSOR_PERFSTATE_POLICY_UNION1_Flags_STRUCT1
+
   PROCESSOR_PERFSTATE_POLICY_UNION1* {.pure, union.} = object
     Spare*: BYTE
     Flags*: PROCESSOR_PERFSTATE_POLICY_UNION1_Flags
+
   PROCESSOR_PERFSTATE_POLICY* {.pure.} = object
     Revision*: DWORD
     MaxThrottle*: BYTE
@@ -1958,6 +2197,7 @@
     DecreaseTime*: DWORD
     IncreasePercent*: DWORD
     DecreasePercent*: DWORD
+
   PPROCESSOR_PERFSTATE_POLICY* = ptr PROCESSOR_PERFSTATE_POLICY
   ADMINISTRATOR_POWER_POLICY* {.pure.} = object
     MinSleep*: SYSTEM_POWER_STATE
@@ -1966,6 +2206,7 @@
     MaxVideoTimeout*: DWORD
     MinSpindownTimeout*: DWORD
     MaxSpindownTimeout*: DWORD
+
   PADMINISTRATOR_POWER_POLICY* = ptr ADMINISTRATOR_POWER_POLICY
   SYSTEM_POWER_CAPABILITIES* {.pure.} = object
     PowerButtonPresent*: BOOLEAN
@@ -1997,6 +2238,7 @@
     RtcWake*: SYSTEM_POWER_STATE
     MinDeviceWakeState*: SYSTEM_POWER_STATE
     DefaultLowLatencyWake*: SYSTEM_POWER_STATE
+
   PSYSTEM_POWER_CAPABILITIES* = ptr SYSTEM_POWER_CAPABILITIES
   SYSTEM_BATTERY_STATE* {.pure.} = object
     AcOnLine*: BOOLEAN
@@ -2010,6 +2252,7 @@
     EstimatedTime*: DWORD
     DefaultAlert1*: DWORD
     DefaultAlert2*: DWORD
+
   PSYSTEM_BATTERY_STATE* = ptr SYSTEM_BATTERY_STATE
   IMAGE_DOS_HEADER* {.pure.} = object
     e_magic*: WORD
@@ -2031,6 +2274,7 @@
     e_oeminfo*: WORD
     e_res2*: array[10, WORD]
     e_lfanew*: LONG
+
   PIMAGE_DOS_HEADER* = ptr IMAGE_DOS_HEADER
   IMAGE_OS2_HEADER* {.pure.} = object
     ne_magic*: WORD
@@ -2063,6 +2307,7 @@
     ne_psegrefbytes*: WORD
     ne_swaparea*: WORD
     ne_expver*: WORD
+
   PIMAGE_OS2_HEADER* = ptr IMAGE_OS2_HEADER
   IMAGE_VXD_HEADER* {.pure.} = object
     e32_magic*: WORD
@@ -2116,6 +2361,7 @@
     e32_winreslen*: DWORD
     e32_devid*: WORD
     e32_ddkver*: WORD
+
   PIMAGE_VXD_HEADER* = ptr IMAGE_VXD_HEADER
   IMAGE_FILE_HEADER* {.pure.} = object
     Machine*: WORD
@@ -2125,13 +2371,15 @@
     NumberOfSymbols*: DWORD
     SizeOfOptionalHeader*: WORD
     Characteristics*: WORD
+
   PIMAGE_FILE_HEADER* = ptr IMAGE_FILE_HEADER
   IMAGE_DATA_DIRECTORY* {.pure.} = object
     VirtualAddress*: DWORD
     Size*: DWORD
+
   PIMAGE_DATA_DIRECTORY* = ptr IMAGE_DATA_DIRECTORY
-const
-  IMAGE_NUMBEROF_DIRECTORY_ENTRIES* = 16
+
+const IMAGE_NUMBEROF_DIRECTORY_ENTRIES* = 16
 type
   IMAGE_OPTIONAL_HEADER32* {.pure.} = object
     Magic*: WORD
@@ -2165,6 +2413,7 @@
     LoaderFlags*: DWORD
     NumberOfRvaAndSizes*: DWORD
     DataDirectory*: array[IMAGE_NUMBEROF_DIRECTORY_ENTRIES, IMAGE_DATA_DIRECTORY]
+
   PIMAGE_OPTIONAL_HEADER32* = ptr IMAGE_OPTIONAL_HEADER32
   IMAGE_ROM_OPTIONAL_HEADER* {.pure.} = object
     Magic*: WORD
@@ -2180,6 +2429,7 @@
     GprMask*: DWORD
     CprMask*: array[4, DWORD]
     GpValue*: DWORD
+
   PIMAGE_ROM_OPTIONAL_HEADER* = ptr IMAGE_ROM_OPTIONAL_HEADER
   IMAGE_OPTIONAL_HEADER64* {.pure.} = object
     Magic*: WORD
@@ -2212,27 +2462,32 @@
     LoaderFlags*: DWORD
     NumberOfRvaAndSizes*: DWORD
     DataDirectory*: array[IMAGE_NUMBEROF_DIRECTORY_ENTRIES, IMAGE_DATA_DIRECTORY]
+
   PIMAGE_OPTIONAL_HEADER64* = ptr IMAGE_OPTIONAL_HEADER64
   IMAGE_NT_HEADERS64* {.pure.} = object
     Signature*: DWORD
     FileHeader*: IMAGE_FILE_HEADER
     OptionalHeader*: IMAGE_OPTIONAL_HEADER64
+
   PIMAGE_NT_HEADERS64* = ptr IMAGE_NT_HEADERS64
   IMAGE_NT_HEADERS32* {.pure.} = object
     Signature*: DWORD
     FileHeader*: IMAGE_FILE_HEADER
     OptionalHeader*: IMAGE_OPTIONAL_HEADER32
+
   PIMAGE_NT_HEADERS32* = ptr IMAGE_NT_HEADERS32
   IMAGE_ROM_HEADERS* {.pure.} = object
     FileHeader*: IMAGE_FILE_HEADER
     OptionalHeader*: IMAGE_ROM_OPTIONAL_HEADER
+
   PIMAGE_ROM_HEADERS* = ptr IMAGE_ROM_HEADERS
-const
-  IMAGE_SIZEOF_SHORT_NAME* = 8
+
+const IMAGE_SIZEOF_SHORT_NAME* = 8
 type
   IMAGE_SECTION_HEADER_Misc* {.pure, union.} = object
     PhysicalAddress*: DWORD
     VirtualSize*: DWORD
+
   IMAGE_SECTION_HEADER* {.pure.} = object
     Name*: array[IMAGE_SIZEOF_SHORT_NAME, BYTE]
     Misc*: IMAGE_SECTION_HEADER_Misc
@@ -2244,14 +2499,17 @@
     NumberOfRelocations*: WORD
     NumberOfLinenumbers*: WORD
     Characteristics*: DWORD
+
   PIMAGE_SECTION_HEADER* = ptr IMAGE_SECTION_HEADER
   IMAGE_SYMBOL_N_Name* {.pure.} = object
     Short*: DWORD
     Long*: DWORD
+
   IMAGE_SYMBOL_N* {.pure, union.} = object
     ShortName*: array[8, BYTE]
     Name*: IMAGE_SYMBOL_N_Name
     LongName*: array[2, DWORD]
+
   IMAGE_SYMBOL* {.pure, packed.} = object
     N*: IMAGE_SYMBOL_N
     Value*: DWORD
@@ -2259,14 +2517,17 @@
     Type*: WORD
     StorageClass*: BYTE
     NumberOfAuxSymbols*: BYTE
+
   PIMAGE_SYMBOL* = ptr IMAGE_SYMBOL
   IMAGE_SYMBOL_EX_N_Name* {.pure.} = object
     Short*: DWORD
     Long*: DWORD
+
   IMAGE_SYMBOL_EX_N* {.pure, union.} = object
     ShortName*: array[8, BYTE]
     Name*: IMAGE_SYMBOL_EX_N_Name
     LongName*: array[2, DWORD]
+
   IMAGE_SYMBOL_EX* {.pure.} = object
     N*: IMAGE_SYMBOL_EX_N
     Value*: DWORD
@@ -2274,37 +2535,45 @@
     Type*: WORD
     StorageClass*: BYTE
     NumberOfAuxSymbols*: BYTE
+
   PIMAGE_SYMBOL_EX* = ptr IMAGE_SYMBOL_EX
   IMAGE_AUX_SYMBOL_TOKEN_DEF* {.pure, packed.} = object
     bAuxType*: BYTE
     bReserved*: BYTE
     SymbolTableIndex*: DWORD
     rgbReserved*: array[12, BYTE]
+
   PIMAGE_AUX_SYMBOL_TOKEN_DEF* = ptr IMAGE_AUX_SYMBOL_TOKEN_DEF
   IMAGE_AUX_SYMBOL_Sym_Misc_LnSz* {.pure.} = object
     Linenumber*: WORD
     Size*: WORD
+
   IMAGE_AUX_SYMBOL_Sym_Misc* {.pure, union.} = object
     LnSz*: IMAGE_AUX_SYMBOL_Sym_Misc_LnSz
     TotalSize*: DWORD
+
   IMAGE_AUX_SYMBOL_Sym_FcnAry_Function* {.pure.} = object
     PointerToLinenumber*: DWORD
     PointerToNextFunction*: DWORD
+
   IMAGE_AUX_SYMBOL_Sym_FcnAry_Array* {.pure.} = object
     Dimension*: array[4, WORD]
+
   IMAGE_AUX_SYMBOL_Sym_FcnAry* {.pure, union.} = object
     Function*: IMAGE_AUX_SYMBOL_Sym_FcnAry_Function
     Array*: IMAGE_AUX_SYMBOL_Sym_FcnAry_Array
+
   IMAGE_AUX_SYMBOL_Sym* {.pure.} = object
     TagIndex*: DWORD
     Misc*: IMAGE_AUX_SYMBOL_Sym_Misc
     FcnAry*: IMAGE_AUX_SYMBOL_Sym_FcnAry
     TvIndex*: WORD
-const
-  IMAGE_SIZEOF_SYMBOL* = 18
+
+const IMAGE_SIZEOF_SYMBOL* = 18
 type
   IMAGE_AUX_SYMBOL_File* {.pure.} = object
     Name*: array[IMAGE_SIZEOF_SYMBOL, BYTE]
+
   IMAGE_AUX_SYMBOL_Section* {.pure.} = object
     Length*: DWORD
     NumberOfRelocations*: WORD
@@ -2312,22 +2581,27 @@
     CheckSum*: DWORD
     Number*: SHORT
     Selection*: BYTE
+
   IMAGE_AUX_SYMBOL_CRC* {.pure.} = object
     crc*: DWORD
     rgbReserved*: array[14, BYTE]
+
   IMAGE_AUX_SYMBOL* {.pure, union.} = object
     Sym*: IMAGE_AUX_SYMBOL_Sym
     File*: IMAGE_AUX_SYMBOL_File
     Section*: IMAGE_AUX_SYMBOL_Section
     TokenDef*: IMAGE_AUX_SYMBOL_TOKEN_DEF
     CRC*: IMAGE_AUX_SYMBOL_CRC
+
   PIMAGE_AUX_SYMBOL* = ptr IMAGE_AUX_SYMBOL
   IMAGE_AUX_SYMBOL_EX_Sym* {.pure.} = object
     WeakDefaultSymIndex*: DWORD
     WeakSearchType*: DWORD
     rgbReserved*: array[12, BYTE]
+
   IMAGE_AUX_SYMBOL_EX_File* {.pure.} = object
     Name*: array[20, BYTE]
+
   IMAGE_AUX_SYMBOL_EX_Section* {.pure.} = object
     Length*: DWORD
     NumberOfRelocations*: WORD
@@ -2338,37 +2612,46 @@
     bReserved*: BYTE
     HighNumber*: SHORT
     rgbReserved*: array[2, BYTE]
+
   IMAGE_AUX_SYMBOL_EX_STRUCT4* {.pure.} = object
     TokenDef*: IMAGE_AUX_SYMBOL_TOKEN_DEF
     rgbReserved*: array[2, BYTE]
+
   IMAGE_AUX_SYMBOL_EX_CRC* {.pure.} = object
     crc*: DWORD
     rgbReserved*: array[16, BYTE]
+
   IMAGE_AUX_SYMBOL_EX* {.pure, union.} = object
     Sym*: IMAGE_AUX_SYMBOL_EX_Sym
     File*: IMAGE_AUX_SYMBOL_EX_File
     Section*: IMAGE_AUX_SYMBOL_EX_Section
     struct4*: IMAGE_AUX_SYMBOL_EX_STRUCT4
     CRC*: IMAGE_AUX_SYMBOL_EX_CRC
+
   PIMAGE_AUX_SYMBOL_EX* = ptr IMAGE_AUX_SYMBOL_EX
   IMAGE_RELOCATION_UNION1* {.pure, union.} = object
     VirtualAddress*: DWORD
     RelocCount*: DWORD
+
   IMAGE_RELOCATION* {.pure, packed.} = object
     union1*: IMAGE_RELOCATION_UNION1
     SymbolTableIndex*: DWORD
     Type*: WORD
+
   PIMAGE_RELOCATION* = ptr IMAGE_RELOCATION
   IMAGE_LINENUMBER_Type* {.pure, union.} = object
     SymbolTableIndex*: DWORD
     VirtualAddress*: DWORD
+
   IMAGE_LINENUMBER* {.pure, packed.} = object
     Type*: IMAGE_LINENUMBER_Type
     Linenumber*: WORD
+
   PIMAGE_LINENUMBER* = ptr IMAGE_LINENUMBER
   IMAGE_BASE_RELOCATION* {.pure.} = object
     VirtualAddress*: DWORD
     SizeOfBlock*: DWORD
+
   PIMAGE_BASE_RELOCATION* = ptr IMAGE_BASE_RELOCATION
   IMAGE_ARCHIVE_MEMBER_HEADER* {.pure.} = object
     Name*: array[16, BYTE]
@@ -2378,6 +2661,7 @@
     Mode*: array[8, BYTE]
     Size*: array[10, BYTE]
     EndHeader*: array[2, BYTE]
+
   PIMAGE_ARCHIVE_MEMBER_HEADER* = ptr IMAGE_ARCHIVE_MEMBER_HEADER
   IMAGE_EXPORT_DIRECTORY* {.pure.} = object
     Characteristics*: DWORD
@@ -2391,26 +2675,32 @@
     AddressOfFunctions*: DWORD
     AddressOfNames*: DWORD
     AddressOfNameOrdinals*: DWORD
+
   PIMAGE_EXPORT_DIRECTORY* = ptr IMAGE_EXPORT_DIRECTORY
   IMAGE_IMPORT_BY_NAME* {.pure.} = object
     Hint*: WORD
     Name*: array[1, BYTE]
+
   PIMAGE_IMPORT_BY_NAME* = ptr IMAGE_IMPORT_BY_NAME
   IMAGE_THUNK_DATA64_u1* {.pure, union.} = object
     ForwarderString*: ULONGLONG
     Function*: ULONGLONG
     Ordinal*: ULONGLONG
     AddressOfData*: ULONGLONG
+
   IMAGE_THUNK_DATA64* {.pure.} = object
     u1*: IMAGE_THUNK_DATA64_u1
+
   PIMAGE_THUNK_DATA64* = ptr IMAGE_THUNK_DATA64
   IMAGE_THUNK_DATA32_u1* {.pure, union.} = object
     ForwarderString*: DWORD
     Function*: DWORD
     Ordinal*: DWORD
     AddressOfData*: DWORD
+
   IMAGE_THUNK_DATA32* {.pure.} = object
     u1*: IMAGE_THUNK_DATA32_u1
+
   PIMAGE_THUNK_DATA32* = ptr IMAGE_THUNK_DATA32
   IMAGE_TLS_DIRECTORY64* {.pure.} = object
     StartAddressOfRawData*: ULONGLONG
@@ -2419,6 +2709,7 @@
     AddressOfCallBacks*: ULONGLONG
     SizeOfZeroFill*: DWORD
     Characteristics*: DWORD
+
   PIMAGE_TLS_DIRECTORY64* = ptr IMAGE_TLS_DIRECTORY64
   IMAGE_TLS_DIRECTORY32* {.pure.} = object
     StartAddressOfRawData*: DWORD
@@ -2427,33 +2718,40 @@
     AddressOfCallBacks*: DWORD
     SizeOfZeroFill*: DWORD
     Characteristics*: DWORD
+
   PIMAGE_TLS_DIRECTORY32* = ptr IMAGE_TLS_DIRECTORY32
   IMAGE_IMPORT_DESCRIPTOR_UNION1* {.pure, union.} = object
     Characteristics*: DWORD
     OriginalFirstThunk*: DWORD
+
   IMAGE_IMPORT_DESCRIPTOR* {.pure.} = object
     union1*: IMAGE_IMPORT_DESCRIPTOR_UNION1
     TimeDateStamp*: DWORD
     ForwarderChain*: DWORD
     Name*: DWORD
     FirstThunk*: DWORD
+
   PIMAGE_IMPORT_DESCRIPTOR* = ptr IMAGE_IMPORT_DESCRIPTOR
   IMAGE_BOUND_IMPORT_DESCRIPTOR* {.pure.} = object
     TimeDateStamp*: DWORD
     OffsetModuleName*: WORD
     NumberOfModuleForwarderRefs*: WORD
+
   PIMAGE_BOUND_IMPORT_DESCRIPTOR* = ptr IMAGE_BOUND_IMPORT_DESCRIPTOR
   IMAGE_BOUND_FORWARDER_REF* {.pure.} = object
     TimeDateStamp*: DWORD
     OffsetModuleName*: WORD
     Reserved*: WORD
+
   PIMAGE_BOUND_FORWARDER_REF* = ptr IMAGE_BOUND_FORWARDER_REF
   IMAGE_DELAYLOAD_DESCRIPTOR_Attributes_STRUCT1* {.pure.} = object
-    RvaBased* {.bitsize:1.}: DWORD
-    ReservedAttributes* {.bitsize:31.}: DWORD
+    RvaBased* {.bitsize: 1.}: DWORD
+    ReservedAttributes* {.bitsize: 31.}: DWORD
+
   IMAGE_DELAYLOAD_DESCRIPTOR_Attributes* {.pure, union.} = object
     AllAttributes*: DWORD
     struct1*: IMAGE_DELAYLOAD_DESCRIPTOR_Attributes_STRUCT1
+
   IMAGE_DELAYLOAD_DESCRIPTOR* {.pure.} = object
     Attributes*: IMAGE_DELAYLOAD_DESCRIPTOR_Attributes
     DllNameRVA*: DWORD
@@ -2463,6 +2761,7 @@
     BoundImportAddressTableRVA*: DWORD
     UnloadInformationTableRVA*: DWORD
     TimeDateStamp*: DWORD
+
   PIMAGE_DELAYLOAD_DESCRIPTOR* = ptr IMAGE_DELAYLOAD_DESCRIPTOR
   PCIMAGE_DELAYLOAD_DESCRIPTOR* = ptr IMAGE_DELAYLOAD_DESCRIPTOR
   IMAGE_RESOURCE_DIRECTORY* {.pure.} = object
@@ -2472,37 +2771,46 @@
     MinorVersion*: WORD
     NumberOfNamedEntries*: WORD
     NumberOfIdEntries*: WORD
+
   PIMAGE_RESOURCE_DIRECTORY* = ptr IMAGE_RESOURCE_DIRECTORY
   IMAGE_RESOURCE_DIRECTORY_ENTRY_UNION1_STRUCT1* {.pure.} = object
-    NameOffset* {.bitsize:31.}: DWORD
-    NameIsString* {.bitsize:1.}: DWORD
+    NameOffset* {.bitsize: 31.}: DWORD
+    NameIsString* {.bitsize: 1.}: DWORD
+
   IMAGE_RESOURCE_DIRECTORY_ENTRY_UNION1* {.pure, union.} = object
     struct1*: IMAGE_RESOURCE_DIRECTORY_ENTRY_UNION1_STRUCT1
     Name*: DWORD
     Id*: WORD
+
   IMAGE_RESOURCE_DIRECTORY_ENTRY_UNION2_STRUCT1* {.pure.} = object
-    OffsetToDirectory* {.bitsize:31.}: DWORD
-    DataIsDirectory* {.bitsize:1.}: DWORD
+    OffsetToDirectory* {.bitsize: 31.}: DWORD
+    DataIsDirectory* {.bitsize: 1.}: DWORD
+
   IMAGE_RESOURCE_DIRECTORY_ENTRY_UNION2* {.pure, union.} = object
     OffsetToData*: DWORD
     struct1*: IMAGE_RESOURCE_DIRECTORY_ENTRY_UNION2_STRUCT1
+
   IMAGE_RESOURCE_DIRECTORY_ENTRY* {.pure.} = object
     union1*: IMAGE_RESOURCE_DIRECTORY_ENTRY_UNION1
     union2*: IMAGE_RESOURCE_DIRECTORY_ENTRY_UNION2
+
   PIMAGE_RESOURCE_DIRECTORY_ENTRY* = ptr IMAGE_RESOURCE_DIRECTORY_ENTRY
   IMAGE_RESOURCE_DIRECTORY_STRING* {.pure.} = object
     Length*: WORD
     NameString*: array[1, CHAR]
+
   PIMAGE_RESOURCE_DIRECTORY_STRING* = ptr IMAGE_RESOURCE_DIRECTORY_STRING
   IMAGE_RESOURCE_DIR_STRING_U* {.pure.} = object
     Length*: WORD
     NameString*: array[1, WCHAR]
+
   PIMAGE_RESOURCE_DIR_STRING_U* = ptr IMAGE_RESOURCE_DIR_STRING_U
   IMAGE_RESOURCE_DATA_ENTRY* {.pure.} = object
     OffsetToData*: DWORD
     Size*: DWORD
     CodePage*: DWORD
     Reserved*: DWORD
+
   PIMAGE_RESOURCE_DATA_ENTRY* = ptr IMAGE_RESOURCE_DATA_ENTRY
   IMAGE_LOAD_CONFIG_DIRECTORY32* {.pure.} = object
     Size*: DWORD
@@ -2525,6 +2833,7 @@
     SecurityCookie*: DWORD
     SEHandlerTable*: DWORD
     SEHandlerCount*: DWORD
+
   PIMAGE_LOAD_CONFIG_DIRECTORY32* = ptr IMAGE_LOAD_CONFIG_DIRECTORY32
   IMAGE_LOAD_CONFIG_DIRECTORY64* {.pure.} = object
     Size*: DWORD
@@ -2547,6 +2856,7 @@
     SecurityCookie*: ULONGLONG
     SEHandlerTable*: ULONGLONG
     SEHandlerCount*: ULONGLONG
+
   PIMAGE_LOAD_CONFIG_DIRECTORY64* = ptr IMAGE_LOAD_CONFIG_DIRECTORY64
   IMAGE_DEBUG_DIRECTORY* {.pure.} = object
     Characteristics*: DWORD
@@ -2557,6 +2867,7 @@
     SizeOfData*: DWORD
     AddressOfRawData*: DWORD
     PointerToRawData*: DWORD
+
   PIMAGE_DEBUG_DIRECTORY* = ptr IMAGE_DEBUG_DIRECTORY
   IMAGE_COFF_SYMBOLS_HEADER* {.pure.} = object
     NumberOfSymbols*: DWORD
@@ -2567,18 +2878,20 @@
     RvaToLastByteOfCode*: DWORD
     RvaToFirstByteOfData*: DWORD
     RvaToLastByteOfData*: DWORD
+
   PIMAGE_COFF_SYMBOLS_HEADER* = ptr IMAGE_COFF_SYMBOLS_HEADER
   FPO_DATA* {.pure.} = object
     ulOffStart*: DWORD
     cbProcSize*: DWORD
     cdwLocals*: DWORD
     cdwParams*: WORD
-    cbProlog* {.bitsize:8.}: WORD
-    cbRegs* {.bitsize:3.}: WORD
-    fHasSEH* {.bitsize:1.}: WORD
-    fUseBP* {.bitsize:1.}: WORD
-    reserved* {.bitsize:1.}: WORD
-    cbFrame* {.bitsize:2.}: WORD
+    cbProlog* {.bitsize: 8.}: WORD
+    cbRegs* {.bitsize: 3.}: WORD
+    fHasSEH* {.bitsize: 1.}: WORD
+    fUseBP* {.bitsize: 1.}: WORD
+    reserved* {.bitsize: 1.}: WORD
+    cbFrame* {.bitsize: 2.}: WORD
+
   PFPO_DATA* = ptr FPO_DATA
   IMAGE_DEBUG_MISC* {.pure.} = object
     DataType*: DWORD
@@ -2586,19 +2899,23 @@
     Unicode*: BOOLEAN
     Reserved*: array[3, BYTE]
     Data*: array[1, BYTE]
+
   PIMAGE_DEBUG_MISC* = ptr IMAGE_DEBUG_MISC
   IMAGE_FUNCTION_ENTRY* {.pure.} = object
     StartingAddress*: DWORD
     EndingAddress*: DWORD
     EndOfPrologue*: DWORD
+
   PIMAGE_FUNCTION_ENTRY* = ptr IMAGE_FUNCTION_ENTRY
   IMAGE_FUNCTION_ENTRY64_UNION1* {.pure, union.} = object
     EndOfPrologue*: ULONGLONG
     UnwindInfoAddress*: ULONGLONG
+
   IMAGE_FUNCTION_ENTRY64* {.pure.} = object
     StartingAddress*: ULONGLONG
     EndingAddress*: ULONGLONG
     union1*: IMAGE_FUNCTION_ENTRY64_UNION1
+
   PIMAGE_FUNCTION_ENTRY64* = ptr IMAGE_FUNCTION_ENTRY64
   IMAGE_SEPARATE_DEBUG_HEADER* {.pure.} = object
     Signature*: WORD
@@ -2614,6 +2931,7 @@
     DebugDirectorySize*: DWORD
     SectionAlignment*: DWORD
     Reserved*: array[2, DWORD]
+
   PIMAGE_SEPARATE_DEBUG_HEADER* = ptr IMAGE_SEPARATE_DEBUG_HEADER
   NON_PAGED_DEBUG_INFO* {.pure.} = object
     Signature*: WORD
@@ -2625,21 +2943,25 @@
     CheckSum*: DWORD
     SizeOfImage*: DWORD
     ImageBase*: ULONGLONG
+
   PNON_PAGED_DEBUG_INFO* = ptr NON_PAGED_DEBUG_INFO
   IMAGE_ARCHITECTURE_HEADER* {.pure.} = object
-    AmaskValue* {.bitsize:1.}: int32
-    Adummy1* {.bitsize:7.}: int32
-    AmaskShift* {.bitsize:8.}: int32
-    Adummy2* {.bitsize:16.}: int32
+    AmaskValue* {.bitsize: 1.}: int32
+    Adummy1* {.bitsize: 7.}: int32
+    AmaskShift* {.bitsize: 8.}: int32
+    Adummy2* {.bitsize: 16.}: int32
     FirstEntryRVA*: DWORD
+
   PIMAGE_ARCHITECTURE_HEADER* = ptr IMAGE_ARCHITECTURE_HEADER
   IMAGE_ARCHITECTURE_ENTRY* {.pure.} = object
     FixupInstRVA*: DWORD
     NewInst*: DWORD
+
   PIMAGE_ARCHITECTURE_ENTRY* = ptr IMAGE_ARCHITECTURE_ENTRY
   IMAGE_COR20_HEADER_UNION1* {.pure, union.} = object
     EntryPointToken*: DWORD
     EntryPointRVA*: DWORD
+
   IMAGE_COR20_HEADER* {.pure.} = object
     cb*: DWORD
     MajorRuntimeVersion*: WORD
@@ -2653,9 +2975,11 @@
     VTableFixups*: IMAGE_DATA_DIRECTORY
     ExportAddressTableJumps*: IMAGE_DATA_DIRECTORY
     ManagedNativeHeader*: IMAGE_DATA_DIRECTORY
+
   PIMAGE_COR20_HEADER* = ptr IMAGE_COR20_HEADER
   RTL_RUN_ONCE* {.pure.} = object
     Ptr*: PVOID
+
   PRTL_RUN_ONCE* = ptr RTL_RUN_ONCE
   RTL_BARRIER* {.pure.} = object
     Reserved1*: DWORD
@@ -2663,20 +2987,24 @@
     Reserved3*: array[2, ULONG_PTR]
     Reserved4*: DWORD
     Reserved5*: DWORD
+
   PRTL_BARRIER* = ptr RTL_BARRIER
   MESSAGE_RESOURCE_ENTRY* {.pure.} = object
     Length*: WORD
     Flags*: WORD
     Text*: array[1, BYTE]
+
   PMESSAGE_RESOURCE_ENTRY* = ptr MESSAGE_RESOURCE_ENTRY
   MESSAGE_RESOURCE_BLOCK* {.pure.} = object
     LowId*: DWORD
     HighId*: DWORD
     OffsetToEntries*: DWORD
+
   PMESSAGE_RESOURCE_BLOCK* = ptr MESSAGE_RESOURCE_BLOCK
   MESSAGE_RESOURCE_DATA* {.pure.} = object
     NumberOfBlocks*: DWORD
     Blocks*: array[1, MESSAGE_RESOURCE_BLOCK]
+
   PMESSAGE_RESOURCE_DATA* = ptr MESSAGE_RESOURCE_DATA
   OSVERSIONINFOA* {.pure.} = object
     dwOSVersionInfoSize*: DWORD
@@ -2685,6 +3013,7 @@
     dwBuildNumber*: DWORD
     dwPlatformId*: DWORD
     szCSDVersion*: array[128, CHAR]
+
   POSVERSIONINFOA* = ptr OSVERSIONINFOA
   LPOSVERSIONINFOA* = ptr OSVERSIONINFOA
   OSVERSIONINFOW* {.pure.} = object
@@ -2694,6 +3023,7 @@
     dwBuildNumber*: DWORD
     dwPlatformId*: DWORD
     szCSDVersion*: array[128, WCHAR]
+
   POSVERSIONINFOW* = ptr OSVERSIONINFOW
   LPOSVERSIONINFOW* = ptr OSVERSIONINFOW
   RTL_OSVERSIONINFOW* = OSVERSIONINFOW
@@ -2710,6 +3040,7 @@
     wSuiteMask*: WORD
     wProductType*: BYTE
     wReserved*: BYTE
+
   POSVERSIONINFOEXA* = ptr OSVERSIONINFOEXA
   LPOSVERSIONINFOEXA* = ptr OSVERSIONINFOEXA
   OSVERSIONINFOEXW* {.pure.} = object
@@ -2724,11 +3055,16 @@
     wSuiteMask*: WORD
     wProductType*: BYTE
     wReserved*: BYTE
+
   POSVERSIONINFOEXW* = ptr OSVERSIONINFOEXW
   LPOSVERSIONINFOEXW* = ptr OSVERSIONINFOEXW
   RTL_OSVERSIONINFOEXW* = OSVERSIONINFOEXW
   PRTL_OSVERSIONINFOEXW* = ptr OSVERSIONINFOEXW
-  RTL_UMS_SCHEDULER_ENTRY_POINT* = proc (Reason: RTL_UMS_SCHEDULER_REASON, ActivationPayload: ULONG_PTR, SchedulerParam: PVOID): VOID {.stdcall.}
+  RTL_UMS_SCHEDULER_ENTRY_POINT* = proc(
+    Reason: RTL_UMS_SCHEDULER_REASON,
+    ActivationPayload: ULONG_PTR,
+    SchedulerParam: PVOID,
+  ): VOID {.stdcall.}
   PRTL_UMS_SCHEDULER_ENTRY_POINT* = RTL_UMS_SCHEDULER_ENTRY_POINT
   RTL_CRITICAL_SECTION* {.pure.} = object
     DebugInfo*: PRTL_CRITICAL_SECTION_DEBUG
@@ -2737,6 +3073,7 @@
     OwningThread*: HANDLE
     LockSemaphore*: HANDLE
     SpinCount*: ULONG_PTR
+
   RTL_CRITICAL_SECTION_DEBUG* {.pure.} = object
     Type*: WORD
     CreatorBackTraceIndex*: WORD
@@ -2747,21 +3084,25 @@
     Flags*: DWORD
     CreatorBackTraceIndexHigh*: WORD
     SpareWORD*: WORD
+
   PRTL_CRITICAL_SECTION_DEBUG* = ptr RTL_CRITICAL_SECTION_DEBUG
   RTL_RESOURCE_DEBUG* = RTL_CRITICAL_SECTION_DEBUG
   PRTL_RESOURCE_DEBUG* = ptr RTL_CRITICAL_SECTION_DEBUG
   PRTL_CRITICAL_SECTION* = ptr RTL_CRITICAL_SECTION
   RTL_SRWLOCK* {.pure.} = object
     Ptr*: PVOID
+
   PRTL_SRWLOCK* = ptr RTL_SRWLOCK
   RTL_CONDITION_VARIABLE* {.pure.} = object
     Ptr*: PVOID
+
   PRTL_CONDITION_VARIABLE* = ptr RTL_CONDITION_VARIABLE
-  WAITORTIMERCALLBACKFUNC* = proc (P1: PVOID, P2: BOOLEAN): VOID {.stdcall.}
+  WAITORTIMERCALLBACKFUNC* = proc(P1: PVOID, P2: BOOLEAN): VOID {.stdcall.}
   WAITORTIMERCALLBACK* = WAITORTIMERCALLBACKFUNC
   ACTIVATION_CONTEXT_QUERY_INDEX* {.pure.} = object
     ulAssemblyIndex*: DWORD
     ulFileIndexInAssembly*: DWORD
+
   PACTIVATION_CONTEXT_QUERY_INDEX* = ptr ACTIVATION_CONTEXT_QUERY_INDEX
   ASSEMBLY_FILE_DETAILED_INFORMATION* {.pure.} = object
     ulFlags*: DWORD
@@ -2769,6 +3110,7 @@
     ulPathLength*: DWORD
     lpFileName*: PCWSTR
     lpFilePath*: PCWSTR
+
   PASSEMBLY_FILE_DETAILED_INFORMATION* = ptr ASSEMBLY_FILE_DETAILED_INFORMATION
   ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* {.pure.} = object
     ulFlags*: DWORD
@@ -2790,27 +3132,35 @@
     lpAssemblyPolicyPath*: PCWSTR
     lpAssemblyDirectoryName*: PCWSTR
     ulFileCount*: DWORD
-  PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* = ptr ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
+
+  PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* =
+    ptr ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
   ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION* {.pure.} = object
     ulFlags*: DWORD
     RunLevel*: ACTCTX_REQUESTED_RUN_LEVEL
     UiAccess*: DWORD
-  PACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION* = ptr ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION
+
+  PACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION* =
+    ptr ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION
   COMPATIBILITY_CONTEXT_ELEMENT* {.pure.} = object
     Id*: GUID
     Type*: ACTCTX_COMPATIBILITY_ELEMENT_TYPE
+
   PCOMPATIBILITY_CONTEXT_ELEMENT* = ptr COMPATIBILITY_CONTEXT_ELEMENT
   ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION* {.pure.} = object
     ElementCount*: DWORD
     Elements*: UncheckedArray[COMPATIBILITY_CONTEXT_ELEMENT]
-  PACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION* = ptr ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION
-const
-  MAX_SUPPORTED_OS_NUM* = 4
+
+  PACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION* =
+    ptr ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION
+
+const MAX_SUPPORTED_OS_NUM* = 4
 type
   SUPPORTED_OS_INFO* {.pure.} = object
     OsCount*: WORD
     MitigationExist*: WORD
     OsList*: array[MAX_SUPPORTED_OS_NUM, WORD]
+
   PSUPPORTED_OS_INFO* = ptr SUPPORTED_OS_INFO
   ACTIVATION_CONTEXT_DETAILED_INFORMATION* {.pure.} = object
     dwFlags*: DWORD
@@ -2825,31 +3175,45 @@
     lpRootManifestPath*: PCWSTR
     lpRootConfigurationPath*: PCWSTR
     lpAppDirPath*: PCWSTR
-  PACTIVATION_CONTEXT_DETAILED_INFORMATION* = ptr ACTIVATION_CONTEXT_DETAILED_INFORMATION
+
+  PACTIVATION_CONTEXT_DETAILED_INFORMATION* =
+    ptr ACTIVATION_CONTEXT_DETAILED_INFORMATION
   PCACTIVATION_CONTEXT_QUERY_INDEX* = ptr ACTIVATION_CONTEXT_QUERY_INDEX
   PCASSEMBLY_FILE_DETAILED_INFORMATION* = ptr ASSEMBLY_FILE_DETAILED_INFORMATION
-  PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* = ptr ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
-  PCACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION* = ptr ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION
+  PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* =
+    ptr ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
+  PCACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION* =
+    ptr ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION
   PCCOMPATIBILITY_CONTEXT_ELEMENT* = ptr COMPATIBILITY_CONTEXT_ELEMENT
-  PCACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION* = ptr ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION
-  PCACTIVATION_CONTEXT_DETAILED_INFORMATION* = ptr ACTIVATION_CONTEXT_DETAILED_INFORMATION
+  PCACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION* =
+    ptr ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION
+  PCACTIVATION_CONTEXT_DETAILED_INFORMATION* =
+    ptr ACTIVATION_CONTEXT_DETAILED_INFORMATION
   ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION* = ASSEMBLY_FILE_DETAILED_INFORMATION
   PASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION* = PASSEMBLY_FILE_DETAILED_INFORMATION
-  PCASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION* = PCASSEMBLY_FILE_DETAILED_INFORMATION
+  PCASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION* =
+    PCASSEMBLY_FILE_DETAILED_INFORMATION
   RTL_VERIFIER_THUNK_DESCRIPTOR* {.pure.} = object
     ThunkName*: PCHAR
     ThunkOldAddress*: PVOID
     ThunkNewAddress*: PVOID
+
   PRTL_VERIFIER_THUNK_DESCRIPTOR* = ptr RTL_VERIFIER_THUNK_DESCRIPTOR
   RTL_VERIFIER_DLL_DESCRIPTOR* {.pure.} = object
     DllName*: PWCHAR
     DllFlags*: DWORD
     DllAddress*: PVOID
     DllThunks*: PRTL_VERIFIER_THUNK_DESCRIPTOR
+
   PRTL_VERIFIER_DLL_DESCRIPTOR* = ptr RTL_VERIFIER_DLL_DESCRIPTOR
-  RTL_VERIFIER_DLL_LOAD_CALLBACK* = proc (DllName: PWSTR, DllBase: PVOID, DllSize: SIZE_T, Reserved: PVOID): VOID {.stdcall.}
-  RTL_VERIFIER_DLL_UNLOAD_CALLBACK* = proc (DllName: PWSTR, DllBase: PVOID, DllSize: SIZE_T, Reserved: PVOID): VOID {.stdcall.}
-  RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK* = proc (AllocationBase: PVOID, AllocationSize: SIZE_T): VOID {.stdcall.}
+  RTL_VERIFIER_DLL_LOAD_CALLBACK* = proc(
+    DllName: PWSTR, DllBase: PVOID, DllSize: SIZE_T, Reserved: PVOID
+  ): VOID {.stdcall.}
+  RTL_VERIFIER_DLL_UNLOAD_CALLBACK* = proc(
+    DllName: PWSTR, DllBase: PVOID, DllSize: SIZE_T, Reserved: PVOID
+  ): VOID {.stdcall.}
+  RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK* =
+    proc(AllocationBase: PVOID, AllocationSize: SIZE_T): VOID {.stdcall.}
   RTL_VERIFIER_PROVIDER_DESCRIPTOR* {.pure.} = object
     Length*: DWORD
     ProviderDlls*: PRTL_VERIFIER_DLL_DESCRIPTOR
@@ -2862,14 +3226,16 @@
     RtlpDebugPageHeapCreate*: PVOID
     RtlpDebugPageHeapDestroy*: PVOID
     ProviderNtdllHeapFreeCallback*: RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK
+
   PRTL_VERIFIER_PROVIDER_DESCRIPTOR* = ptr RTL_VERIFIER_PROVIDER_DESCRIPTOR
   HARDWARE_COUNTER_DATA* {.pure.} = object
     Type*: HARDWARE_COUNTER_TYPE
     Reserved*: DWORD
     Value*: DWORD64
+
   PHARDWARE_COUNTER_DATA* = ptr HARDWARE_COUNTER_DATA
-const
-  MAX_HW_COUNTERS* = 16
+
+const MAX_HW_COUNTERS* = 16
 type
   PERFORMANCE_DATA* {.pure.} = object
     Size*: WORD
@@ -2881,6 +3247,7 @@
     RetryCount*: DWORD
     Reserved*: DWORD
     HwCounters*: array[MAX_HW_COUNTERS, HARDWARE_COUNTER_DATA]
+
   PPERFORMANCE_DATA* = ptr PERFORMANCE_DATA
   EVENTLOGRECORD* {.pure.} = object
     Length*: DWORD
@@ -2899,44 +3266,52 @@
     UserSidOffset*: DWORD
     DataLength*: DWORD
     DataOffset*: DWORD
+
   PEVENTLOGRECORD* = ptr EVENTLOGRECORD
-const
-  MAXLOGICALLOGNAMESIZE* = 256
+
+const MAXLOGICALLOGNAMESIZE* = 256
 type
   EVENTSFORLOGFILE* {.pure.} = object
     ulSize*: DWORD
     szLogicalLogFile*: array[MAXLOGICALLOGNAMESIZE, WCHAR]
     ulNumRecords*: DWORD
     pEventLogRecords*: UncheckedArray[EVENTLOGRECORD]
+
   PEVENTSFORLOGFILE* = ptr EVENTSFORLOGFILE
   PACKEDEVENTINFO* {.pure.} = object
     ulSize*: DWORD
     ulNumEventsForLogFile*: DWORD
     ulOffsets*: UncheckedArray[DWORD]
+
   PPACKEDEVENTINFO* = ptr PACKEDEVENTINFO
   TAPE_ERASE* {.pure.} = object
     Type*: DWORD
     Immediate*: BOOLEAN
+
   PTAPE_ERASE* = ptr TAPE_ERASE
   TAPE_PREPARE* {.pure.} = object
     Operation*: DWORD
     Immediate*: BOOLEAN
+
   PTAPE_PREPARE* = ptr TAPE_PREPARE
   TAPE_WRITE_MARKS* {.pure.} = object
     Type*: DWORD
     Count*: DWORD
     Immediate*: BOOLEAN
+
   PTAPE_WRITE_MARKS* = ptr TAPE_WRITE_MARKS
   TAPE_GET_POSITION* {.pure.} = object
     Type*: DWORD
     Partition*: DWORD
     Offset*: LARGE_INTEGER
+
   PTAPE_GET_POSITION* = ptr TAPE_GET_POSITION
   TAPE_SET_POSITION* {.pure.} = object
     Method*: DWORD
     Partition*: DWORD
     Offset*: LARGE_INTEGER
     Immediate*: BOOLEAN
+
   PTAPE_SET_POSITION* = ptr TAPE_SET_POSITION
   TAPE_GET_DRIVE_PARAMETERS* {.pure.} = object
     ECC*: BOOLEAN
@@ -2950,6 +3325,7 @@
     FeaturesLow*: DWORD
     FeaturesHigh*: DWORD
     EOTWarningZoneSize*: DWORD
+
   PTAPE_GET_DRIVE_PARAMETERS* = ptr TAPE_GET_DRIVE_PARAMETERS
   TAPE_SET_DRIVE_PARAMETERS* {.pure.} = object
     ECC*: BOOLEAN
@@ -2957,6 +3333,7 @@
     DataPadding*: BOOLEAN
     ReportSetmarks*: BOOLEAN
     EOTWarningZoneSize*: DWORD
+
   PTAPE_SET_DRIVE_PARAMETERS* = ptr TAPE_SET_DRIVE_PARAMETERS
   TAPE_GET_MEDIA_PARAMETERS* {.pure.} = object
     Capacity*: LARGE_INTEGER
@@ -2964,19 +3341,23 @@
     BlockSize*: DWORD
     PartitionCount*: DWORD
     WriteProtected*: BOOLEAN
+
   PTAPE_GET_MEDIA_PARAMETERS* = ptr TAPE_GET_MEDIA_PARAMETERS
   TAPE_SET_MEDIA_PARAMETERS* {.pure.} = object
     BlockSize*: DWORD
+
   PTAPE_SET_MEDIA_PARAMETERS* = ptr TAPE_SET_MEDIA_PARAMETERS
   TAPE_CREATE_PARTITION* {.pure.} = object
     Method*: DWORD
     Count*: DWORD
     Size*: DWORD
+
   PTAPE_CREATE_PARTITION* = ptr TAPE_CREATE_PARTITION
   TAPE_WMI_OPERATIONS* {.pure.} = object
     Method*: DWORD
     DataBufferSize*: DWORD
     DataBuffer*: PVOID
+
   PTAPE_WMI_OPERATIONS* = ptr TAPE_WMI_OPERATIONS
   TP_CALLBACK_INSTANCE* {.pure.} = object
   PTP_CALLBACK_INSTANCE* = ptr TP_CALLBACK_INSTANCE
@@ -2985,19 +3366,24 @@
   TP_POOL_STACK_INFORMATION* {.pure.} = object
     StackReserve*: SIZE_T
     StackCommit*: SIZE_T
+
   PTP_POOL_STACK_INFORMATION* = ptr TP_POOL_STACK_INFORMATION
   TP_CLEANUP_GROUP* {.pure.} = object
   PTP_CLEANUP_GROUP* = ptr TP_CLEANUP_GROUP
-  PTP_CLEANUP_GROUP_CANCEL_CALLBACK* = proc (ObjectContext: PVOID, CleanupContext: PVOID): VOID {.stdcall.}
+  PTP_CLEANUP_GROUP_CANCEL_CALLBACK* =
+    proc(ObjectContext: PVOID, CleanupContext: PVOID): VOID {.stdcall.}
   ACTIVATION_CONTEXT* {.pure.} = object
-  PTP_SIMPLE_CALLBACK* = proc (Instance: PTP_CALLBACK_INSTANCE, Context: PVOID): VOID {.stdcall.}
+  PTP_SIMPLE_CALLBACK* =
+    proc(Instance: PTP_CALLBACK_INSTANCE, Context: PVOID): VOID {.stdcall.}
   TP_CALLBACK_ENVIRON_V3_u_s* {.pure.} = object
-    LongFunction* {.bitsize:1.}: DWORD
-    Persistent* {.bitsize:1.}: DWORD
-    Private* {.bitsize:30.}: DWORD
+    LongFunction* {.bitsize: 1.}: DWORD
+    Persistent* {.bitsize: 1.}: DWORD
+    Private* {.bitsize: 30.}: DWORD
+
   TP_CALLBACK_ENVIRON_V3_u* {.pure, union.} = object
     Flags*: DWORD
     s*: TP_CALLBACK_ENVIRON_V3_u_s
+
   TP_CALLBACK_ENVIRON_V3* {.pure.} = object
     Version*: TP_VERSION
     Pool*: PTP_POOL
@@ -3009,6 +3395,7 @@
     u*: TP_CALLBACK_ENVIRON_V3_u
     CallbackPriority*: TP_CALLBACK_PRIORITY
     Size*: DWORD
+
   TP_CALLBACK_ENVIRON* = TP_CALLBACK_ENVIRON_V3
   PTP_CALLBACK_ENVIRON* = ptr TP_CALLBACK_ENVIRON_V3
   TP_WORK* {.pure.} = object
@@ -3026,39 +3413,53 @@
     TransactionNotification*: ULONG
     TmVirtualClock*: LARGE_INTEGER
     ArgumentLength*: ULONG
+
   PTRANSACTION_NOTIFICATION* = ptr TRANSACTION_NOTIFICATION
   TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT* {.pure.} = object
     EnlistmentId*: GUID
     UOW*: GUID
-  PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT* = ptr TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT
+
+  PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT* =
+    ptr TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT
   TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT* {.pure.} = object
     TmIdentity*: GUID
     Flags*: ULONG
-  PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT* = ptr TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT
+
+  PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT* =
+    ptr TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT
   TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT* {.pure.} = object
     SavepointId*: SAVEPOINT_ID
-  PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT* = ptr TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT
+
+  PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT* =
+    ptr TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT
   TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT* {.pure.} = object
     PropagationCookie*: ULONG
     UOW*: GUID
     TmIdentity*: GUID
     BufferLength*: ULONG
-  PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT* = ptr TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT
+
+  PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT* =
+    ptr TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT
   TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT* {.pure.} = object
     MarshalCookie*: ULONG
     UOW*: GUID
-  PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT* = ptr TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT
-  TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT* = TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT
-  PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT* = ptr TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT
+
+  PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT* =
+    ptr TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT
+  TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT* =
+    TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT
+  PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT* =
+    ptr TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT
   KCRM_MARSHAL_HEADER* {.pure.} = object
     VersionMajor*: ULONG
     VersionMinor*: ULONG
     NumProtocols*: ULONG
     Unused*: ULONG
+
   PKCRM_MARSHAL_HEADER* = ptr KCRM_MARSHAL_HEADER
   PRKCRM_MARSHAL_HEADER* = ptr KCRM_MARSHAL_HEADER
-const
-  MAX_TRANSACTION_DESCRIPTION_LENGTH* = 64
+
+const MAX_TRANSACTION_DESCRIPTION_LENGTH* = 64
 type
   KCRM_TRANSACTION_BLOB* {.pure.} = object
     UOW*: GUID
@@ -3067,6 +3468,7 @@
     IsolationFlags*: ULONG
     Timeout*: ULONG
     Description*: array[MAX_TRANSACTION_DESCRIPTION_LENGTH, WCHAR]
+
   PKCRM_TRANSACTION_BLOB* = ptr KCRM_TRANSACTION_BLOB
   PRKCRM_TRANSACTION_BLOB* = ptr KCRM_TRANSACTION_BLOB
   KCRM_PROTOCOL_BLOB* {.pure.} = object
@@ -3075,29 +3477,37 @@
     TransactionIdInfoLength*: ULONG
     Unused1*: ULONG
     Unused2*: ULONG
+
   PKCRM_PROTOCOL_BLOB* = ptr KCRM_PROTOCOL_BLOB
   PRKCRM_PROTOCOL_BLOB* = ptr KCRM_PROTOCOL_BLOB
   TRANSACTION_BASIC_INFORMATION* {.pure.} = object
     TransactionId*: GUID
     State*: DWORD
     Outcome*: DWORD
+
   PTRANSACTION_BASIC_INFORMATION* = ptr TRANSACTION_BASIC_INFORMATION
   TRANSACTIONMANAGER_BASIC_INFORMATION* {.pure.} = object
     TmIdentity*: GUID
     VirtualClock*: LARGE_INTEGER
+
   PTRANSACTIONMANAGER_BASIC_INFORMATION* = ptr TRANSACTIONMANAGER_BASIC_INFORMATION
   TRANSACTIONMANAGER_LOG_INFORMATION* {.pure.} = object
     LogIdentity*: GUID
+
   PTRANSACTIONMANAGER_LOG_INFORMATION* = ptr TRANSACTIONMANAGER_LOG_INFORMATION
   TRANSACTIONMANAGER_LOGPATH_INFORMATION* {.pure.} = object
     LogPathLength*: DWORD
     LogPath*: array[1, WCHAR]
+
   PTRANSACTIONMANAGER_LOGPATH_INFORMATION* = ptr TRANSACTIONMANAGER_LOGPATH_INFORMATION
   TRANSACTIONMANAGER_RECOVERY_INFORMATION* {.pure.} = object
     LastRecoveredLsn*: ULONGLONG
-  PTRANSACTIONMANAGER_RECOVERY_INFORMATION* = ptr TRANSACTIONMANAGER_RECOVERY_INFORMATION
+
+  PTRANSACTIONMANAGER_RECOVERY_INFORMATION* =
+    ptr TRANSACTIONMANAGER_RECOVERY_INFORMATION
   TRANSACTIONMANAGER_OLDEST_INFORMATION* {.pure.} = object
     OldestTransactionGuid*: GUID
+
   PTRANSACTIONMANAGER_OLDEST_INFORMATION* = ptr TRANSACTIONMANAGER_OLDEST_INFORMATION
   TRANSACTION_PROPERTIES_INFORMATION* {.pure.} = object
     IsolationLevel*: DWORD
@@ -3106,54 +3516,67 @@
     Outcome*: DWORD
     DescriptionLength*: DWORD
     Description*: array[1, WCHAR]
+
   PTRANSACTION_PROPERTIES_INFORMATION* = ptr TRANSACTION_PROPERTIES_INFORMATION
   TRANSACTION_BIND_INFORMATION* {.pure.} = object
     TmHandle*: HANDLE
+
   PTRANSACTION_BIND_INFORMATION* = ptr TRANSACTION_BIND_INFORMATION
   TRANSACTION_ENLISTMENT_PAIR* {.pure.} = object
     EnlistmentId*: GUID
     ResourceManagerId*: GUID
+
   PTRANSACTION_ENLISTMENT_PAIR* = ptr TRANSACTION_ENLISTMENT_PAIR
   TRANSACTION_ENLISTMENTS_INFORMATION* {.pure.} = object
     NumberOfEnlistments*: DWORD
     EnlistmentPair*: array[1, TRANSACTION_ENLISTMENT_PAIR]
+
   PTRANSACTION_ENLISTMENTS_INFORMATION* = ptr TRANSACTION_ENLISTMENTS_INFORMATION
   TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION* {.pure.} = object
     SuperiorEnlistmentPair*: TRANSACTION_ENLISTMENT_PAIR
-  PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION* = ptr TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION
+
+  PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION* =
+    ptr TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION
   RESOURCEMANAGER_BASIC_INFORMATION* {.pure.} = object
     ResourceManagerId*: GUID
     DescriptionLength*: DWORD
     Description*: array[1, WCHAR]
+
   PRESOURCEMANAGER_BASIC_INFORMATION* = ptr RESOURCEMANAGER_BASIC_INFORMATION
   RESOURCEMANAGER_COMPLETION_INFORMATION* {.pure.} = object
     IoCompletionPortHandle*: HANDLE
     CompletionKey*: ULONG_PTR
+
   PRESOURCEMANAGER_COMPLETION_INFORMATION* = ptr RESOURCEMANAGER_COMPLETION_INFORMATION
   ENLISTMENT_BASIC_INFORMATION* {.pure.} = object
     EnlistmentId*: GUID
     TransactionId*: GUID
     ResourceManagerId*: GUID
+
   PENLISTMENT_BASIC_INFORMATION* = ptr ENLISTMENT_BASIC_INFORMATION
   ENLISTMENT_CRM_INFORMATION* {.pure.} = object
     CrmTransactionManagerId*: GUID
     CrmResourceManagerId*: GUID
     CrmEnlistmentId*: GUID
+
   PENLISTMENT_CRM_INFORMATION* = ptr ENLISTMENT_CRM_INFORMATION
   TRANSACTION_LIST_ENTRY* {.pure.} = object
     UOW*: GUID
+
   PTRANSACTION_LIST_ENTRY* = ptr TRANSACTION_LIST_ENTRY
   TRANSACTION_LIST_INFORMATION* {.pure.} = object
     NumberOfTransactions*: DWORD
     TransactionInformation*: array[1, TRANSACTION_LIST_ENTRY]
+
   PTRANSACTION_LIST_INFORMATION* = ptr TRANSACTION_LIST_INFORMATION
   KTMOBJECT_CURSOR* {.pure.} = object
     LastQuery*: GUID
     ObjectIdCount*: DWORD
     ObjectIds*: array[1, GUID]
+
   PKTMOBJECT_CURSOR* = ptr KTMOBJECT_CURSOR
-const
-  WOW64_SIZE_OF_80387_REGISTERS* = 80
+
+const WOW64_SIZE_OF_80387_REGISTERS* = 80
 type
   WOW64_FLOATING_SAVE_AREA* {.pure.} = object
     ControlWord*: DWORD
@@ -3165,9 +3588,10 @@
     DataSelector*: DWORD
     RegisterArea*: array[WOW64_SIZE_OF_80387_REGISTERS, BYTE]
     Cr0NpxState*: DWORD
+
   PWOW64_FLOATING_SAVE_AREA* = ptr WOW64_FLOATING_SAVE_AREA
-const
-  WOW64_MAXIMUM_SUPPORTED_EXTENSION* = 512
+
+const WOW64_MAXIMUM_SUPPORTED_EXTENSION* = 512
 type
   WOW64_CONTEXT* {.pure.} = object
     ContextFlags*: DWORD
@@ -3195,39 +3619,46 @@
     Esp*: DWORD
     SegSs*: DWORD
     ExtendedRegisters*: array[WOW64_MAXIMUM_SUPPORTED_EXTENSION, BYTE]
+
   PWOW64_CONTEXT* = ptr WOW64_CONTEXT
   WOW64_LDT_ENTRY_HighWord_Bytes* {.pure.} = object
     BaseMid*: BYTE
     Flags1*: BYTE
     Flags2*: BYTE
     BaseHi*: BYTE
+
   WOW64_LDT_ENTRY_HighWord_Bits* {.pure.} = object
-    BaseMid* {.bitsize:8.}: DWORD
-    Type* {.bitsize:5.}: DWORD
-    Dpl* {.bitsize:2.}: DWORD
-    Pres* {.bitsize:1.}: DWORD
-    LimitHi* {.bitsize:4.}: DWORD
-    Sys* {.bitsize:1.}: DWORD
-    Reserved_0* {.bitsize:1.}: DWORD
-    Default_Big* {.bitsize:1.}: DWORD
-    Granularity* {.bitsize:1.}: DWORD
-    BaseHi* {.bitsize:8.}: DWORD
+    BaseMid* {.bitsize: 8.}: DWORD
+    Type* {.bitsize: 5.}: DWORD
+    Dpl* {.bitsize: 2.}: DWORD
+    Pres* {.bitsize: 1.}: DWORD
+    LimitHi* {.bitsize: 4.}: DWORD
+    Sys* {.bitsize: 1.}: DWORD
+    Reserved_0* {.bitsize: 1.}: DWORD
+    Default_Big* {.bitsize: 1.}: DWORD
+    Granularity* {.bitsize: 1.}: DWORD
+    BaseHi* {.bitsize: 8.}: DWORD
+
   WOW64_LDT_ENTRY_HighWord* {.pure, union.} = object
     Bytes*: WOW64_LDT_ENTRY_HighWord_Bytes
     Bits*: WOW64_LDT_ENTRY_HighWord_Bits
+
   WOW64_LDT_ENTRY* {.pure.} = object
     LimitLow*: WORD
     BaseLow*: WORD
     HighWord*: WOW64_LDT_ENTRY_HighWord
+
   PWOW64_LDT_ENTRY* = ptr WOW64_LDT_ENTRY
   WOW64_DESCRIPTOR_TABLE_ENTRY* {.pure.} = object
     Selector*: DWORD
     Descriptor*: WOW64_LDT_ENTRY
+
   PWOW64_DESCRIPTOR_TABLE_ENTRY* = ptr WOW64_DESCRIPTOR_TABLE_ENTRY
   PHKEY* = ptr HKEY
   FILETIME* {.pure.} = object
     dwLowDateTime*: DWORD
     dwHighDateTime*: DWORD
+
   PFILETIME* = ptr FILETIME
   LPFILETIME* = ptr FILETIME
   RECT* {.pure.} = object
@@ -3235,6 +3666,7 @@
     top*: LONG
     right*: LONG
     bottom*: LONG
+
   PRECT* = ptr RECT
   NPRECT* = ptr RECT
   LPRECT* = ptr RECT
@@ -3244,22 +3676,26 @@
     top*: LONG
     right*: LONG
     bottom*: LONG
+
   PRECTL* = ptr RECTL
   LPRECTL* = ptr RECTL
   LPCRECTL* = ptr RECTL
   POINT* {.pure.} = object
     x*: LONG
     y*: LONG
+
   PPOINT* = ptr POINT
   NPPOINT* = ptr POINT
   LPPOINT* = ptr POINT
   POINTL* {.pure.} = object
     x*: LONG
     y*: LONG
+
   PPOINTL* = ptr POINTL
   SIZE* {.pure.} = object
     cx*: LONG
     cy*: LONG
+
   PSIZE* = ptr SIZE
   LPSIZE* = ptr SIZE
   SIZEL* = SIZE
@@ -3268,16 +3704,19 @@
   POINTS* {.pure.} = object
     x*: SHORT
     y*: SHORT
+
   PPOINTS* = ptr POINTS
   LPPOINTS* = ptr POINTS
   PEB_LDR_DATA* {.pure.} = object
     Reserved1*: array[8, BYTE]
     Reserved2*: array[3, PVOID]
     InMemoryOrderModuleList*: LIST_ENTRY
+
   PPEB_LDR_DATA* = ptr PEB_LDR_DATA
   LDR_DATA_TABLE_ENTRY_UNION1* {.pure, union.} = object
     CheckSum*: ULONG
     Reserved6*: PVOID
+
   LDR_DATA_TABLE_ENTRY* {.pure.} = object
     Reserved1*: array[2, PVOID]
     InMemoryOrderLinks*: LIST_ENTRY
@@ -3289,14 +3728,16 @@
     Reserved5*: array[3, PVOID]
     union1*: LDR_DATA_TABLE_ENTRY_UNION1
     TimeDateStamp*: ULONG
+
   PLDR_DATA_TABLE_ENTRY* = ptr LDR_DATA_TABLE_ENTRY
   RTL_USER_PROCESS_PARAMETERS* {.pure.} = object
     Reserved1*: array[16, BYTE]
     Reserved2*: array[10, PVOID]
     ImagePathName*: UNICODE_STRING
     CommandLine*: UNICODE_STRING
+
   PRTL_USER_PROCESS_PARAMETERS* = ptr RTL_USER_PROCESS_PARAMETERS
-  PPS_POST_PROCESS_INIT_ROUTINE* = proc (): VOID {.stdcall.}
+  PPS_POST_PROCESS_INIT_ROUTINE* = proc(): VOID {.stdcall.}
   PEB* {.pure.} = object
     Reserved1*: array[2, BYTE]
     BeingDebugged*: BYTE
@@ -3310,6 +3751,7 @@
     Reserved6*: array[128, BYTE]
     Reserved7*: array[1, PVOID]
     SessionId*: ULONG
+
   PPEB* = ptr PEB
   TEB* {.pure.} = object
     Reserved1*: array[1952, BYTE]
@@ -3320,10 +3762,12 @@
     ReservedForOle*: PVOID
     Reserved5*: array[4, PVOID]
     TlsExpansionSlots*: PVOID
+
   PTEB* = ptr TEB
   OBJECT_DATA_INFORMATION* {.pure.} = object
     InheritHandle*: BOOLEAN
     ProtectFromClose*: BOOLEAN
+
   POBJECT_DATA_INFORMATION* = ptr OBJECT_DATA_INFORMATION
   OBJECT_BASIC_INFORMATION* {.pure.} = object
     Attributes*: ULONG
@@ -3337,9 +3781,11 @@
     TypeInformationLength*: ULONG
     SecurityDescriptorLength*: ULONG
     CreateTime*: LARGE_INTEGER
+
   POBJECT_BASIC_INFORMATION* = ptr OBJECT_BASIC_INFORMATION
   OBJECT_NAME_INFORMATION* {.pure.} = object
     Name*: UNICODE_STRING
+
   POBJECT_NAME_INFORMATION* = ptr OBJECT_NAME_INFORMATION
   OBJECT_TYPE_INFORMATION* {.pure.} = object
     TypeName*: UNICODE_STRING
@@ -3363,10 +3809,12 @@
     PoolType*: ULONG
     DefaultPagedPoolCharge*: ULONG
     DefaultNonPagedPoolCharge*: ULONG
+
   POBJECT_TYPE_INFORMATION* = ptr OBJECT_TYPE_INFORMATION
   OBJECT_ALL_INFORMATION* {.pure.} = object
     NumberOfObjects*: ULONG
     ObjectTypeInformation*: array[1, OBJECT_TYPE_INFORMATION]
+
   POBJECT_ALL_INFORMATION* = ptr OBJECT_ALL_INFORMATION
   FILE_DIRECTORY_INFORMATION* {.pure.} = object
     NextEntryOffset*: ULONG
@@ -3380,6 +3828,7 @@
     FileAttributes*: ULONG
     FileNameLength*: ULONG
     FileName*: array[ANYSIZE_ARRAY, WCHAR]
+
   PFILE_DIRECTORY_INFORMATION* = ptr FILE_DIRECTORY_INFORMATION
   FILE_FULL_DIR_INFORMATION* {.pure.} = object
     NextEntryOffset*: ULONG
@@ -3394,6 +3843,7 @@
     FileNameLength*: ULONG
     EaSize*: ULONG
     FileName*: array[ANYSIZE_ARRAY, WCHAR]
+
   PFILE_FULL_DIR_INFORMATION* = ptr FILE_FULL_DIR_INFORMATION
   FILE_ID_FULL_DIR_INFORMATION* {.pure.} = object
     NextEntryOffset*: ULONG
@@ -3409,6 +3859,7 @@
     EaSize*: ULONG
     FileId*: LARGE_INTEGER
     FileName*: array[ANYSIZE_ARRAY, WCHAR]
+
   PFILE_ID_FULL_DIR_INFORMATION* = ptr FILE_ID_FULL_DIR_INFORMATION
   FILE_BOTH_DIR_INFORMATION* {.pure.} = object
     NextEntryOffset*: ULONG
@@ -3425,6 +3876,7 @@
     ShortNameLength*: CHAR
     ShortName*: array[12, WCHAR]
     FileName*: array[ANYSIZE_ARRAY, WCHAR]
+
   PFILE_BOTH_DIR_INFORMATION* = ptr FILE_BOTH_DIR_INFORMATION
   FILE_ID_BOTH_DIR_INFORMATION* {.pure.} = object
     NextEntryOffset*: ULONG
@@ -3442,6 +3894,7 @@
     ShortName*: array[12, WCHAR]
     FileId*: LARGE_INTEGER
     FileName*: array[ANYSIZE_ARRAY, WCHAR]
+
   PFILE_ID_BOTH_DIR_INFORMATION* = ptr FILE_ID_BOTH_DIR_INFORMATION
   FILE_FULL_DIRECTORY_INFORMATION* = FILE_FULL_DIR_INFORMATION
   PFILE_FULL_DIRECTORY_INFORMATION* = ptr FILE_FULL_DIR_INFORMATION
@@ -3457,6 +3910,7 @@
     LastWriteTime*: LARGE_INTEGER
     ChangeTime*: LARGE_INTEGER
     FileAttributes*: ULONG
+
   PFILE_BASIC_INFORMATION* = ptr FILE_BASIC_INFORMATION
   FILE_STANDARD_INFORMATION* {.pure.} = object
     AllocationSize*: LARGE_INTEGER
@@ -3464,52 +3918,65 @@
     NumberOfLinks*: ULONG
     DeletePending*: BOOLEAN
     Directory*: BOOLEAN
+
   PFILE_STANDARD_INFORMATION* = ptr FILE_STANDARD_INFORMATION
   FILE_INTERNAL_INFORMATION* {.pure.} = object
     IndexNumber*: LARGE_INTEGER
+
   PFILE_INTERNAL_INFORMATION* = ptr FILE_INTERNAL_INFORMATION
   FILE_EA_INFORMATION* {.pure.} = object
     EaSize*: ULONG
+
   PFILE_EA_INFORMATION* = ptr FILE_EA_INFORMATION
   FILE_ACCESS_INFORMATION* {.pure.} = object
     AccessFlags*: ACCESS_MASK
+
   PFILE_ACCESS_INFORMATION* = ptr FILE_ACCESS_INFORMATION
   FILE_LINK_INFORMATION* {.pure.} = object
     ReplaceIfExists*: BOOLEAN
     RootDirectory*: HANDLE
     FileNameLength*: ULONG
     FileName*: array[1, WCHAR]
+
   PFILE_LINK_INFORMATION* = ptr FILE_LINK_INFORMATION
   FILE_NAME_INFORMATION* {.pure.} = object
     FileNameLength*: ULONG
     FileName*: array[1, WCHAR]
+
   PFILE_NAME_INFORMATION* = ptr FILE_NAME_INFORMATION
   FILE_RENAME_INFORMATION* {.pure.} = object
     ReplaceIfExists*: BOOLEAN
     RootDirectory*: HANDLE
     FileNameLength*: ULONG
     FileName*: array[1, WCHAR]
+
   PFILE_RENAME_INFORMATION* = ptr FILE_RENAME_INFORMATION
   FILE_NAMES_INFORMATION* {.pure.} = object
     NextEntryOffset*: ULONG
     FileIndex*: ULONG
     FileNameLength*: ULONG
     FileName*: array[1, WCHAR]
+
   PFILE_NAMES_INFORMATION* = ptr FILE_NAMES_INFORMATION
   FILE_DISPOSITION_INFORMATION* {.pure.} = object
     DoDeleteFile*: BOOLEAN
+
   PFILE_DISPOSITION_INFORMATION* = ptr FILE_DISPOSITION_INFORMATION
   FILE_POSITION_INFORMATION* {.pure.} = object
     CurrentByteOffset*: LARGE_INTEGER
+
   PFILE_POSITION_INFORMATION* = ptr FILE_POSITION_INFORMATION
   FILE_ALIGNMENT_INFORMATION* {.pure.} = object
     AlignmentRequirement*: ULONG
+
   PFILE_ALIGNMENT_INFORMATION* = ptr FILE_ALIGNMENT_INFORMATION
   FILE_ALLOCATION_INFORMATION* {.pure.} = object
     AllocationSize*: LARGE_INTEGER
+
   PFILE_ALLOCATION_INFORMATION* = ptr FILE_ALLOCATION_INFORMATION
   FILE_END_OF_FILE_INFORMATION* {.pure.} = object
     EndOfFile*: LARGE_INTEGER
+
   PFILE_END_OF_FILE_INFORMATION* = ptr FILE_END_OF_FILE_INFORMATION
   FILE_NETWORK_OPEN_INFORMATION* {.pure.} = object
     CreationTime*: LARGE_INTEGER
@@ -3519,6 +3986,7 @@
     AllocationSize*: LARGE_INTEGER
     EndOfFile*: LARGE_INTEGER
     FileAttributes*: ULONG
+
   PFILE_NETWORK_OPEN_INFORMATION* = ptr FILE_NETWORK_OPEN_INFORMATION
   FILE_FULL_EA_INFORMATION* {.pure.} = object
     NextEntryOffset*: ULONG
@@ -3526,9 +3994,11 @@
     EaNameLength*: UCHAR
     EaValueLength*: USHORT
     EaName*: array[1, CHAR]
+
   PFILE_FULL_EA_INFORMATION* = ptr FILE_FULL_EA_INFORMATION
   FILE_MODE_INFORMATION* {.pure.} = object
     Mode*: ULONG
+
   PFILE_MODE_INFORMATION* = ptr FILE_MODE_INFORMATION
   FILE_STREAM_INFORMATION* {.pure.} = object
     NextEntryOffset*: ULONG
@@ -3536,10 +4006,12 @@
     StreamSize*: LARGE_INTEGER
     StreamAllocationSize*: LARGE_INTEGER
     StreamName*: array[1, WCHAR]
+
   PFILE_STREAM_INFORMATION* = ptr FILE_STREAM_INFORMATION
   FILE_ATTRIBUTE_TAG_INFORMATION* {.pure.} = object
     FileAttributes*: ULONG
     ReparseTag*: ULONG
+
   PFILE_ATTRIBUTE_TAG_INFORMATION* = ptr FILE_ATTRIBUTE_TAG_INFORMATION
   FILE_MAILSLOT_QUERY_INFORMATION* {.pure.} = object
     MaximumMessageSize*: ULONG
@@ -3547,9 +4019,11 @@
     NextMessageSize*: ULONG
     MessagesAvailable*: ULONG
     ReadTimeout*: LARGE_INTEGER
+
   PFILE_MAILSLOT_QUERY_INFORMATION* = ptr FILE_MAILSLOT_QUERY_INFORMATION
   FILE_MAILSLOT_SET_INFORMATION* {.pure.} = object
     ReadTimeout*: LARGE_INTEGER
+
   PFILE_MAILSLOT_SET_INFORMATION* = ptr FILE_MAILSLOT_SET_INFORMATION
   FILE_PIPE_LOCAL_INFORMATION* {.pure.} = object
     NamedPipeType*: ULONG
@@ -3562,6 +4036,7 @@
     WriteQuotaAvailable*: ULONG
     NamedPipeState*: ULONG
     NamedPipeEnd*: ULONG
+
   PFILE_PIPE_LOCAL_INFORMATION* = ptr FILE_PIPE_LOCAL_INFORMATION
   FILE_ALL_INFORMATION* {.pure.} = object
     BasicInformation*: FILE_BASIC_INFORMATION
@@ -3573,6 +4048,7 @@
     ModeInformation*: FILE_MODE_INFORMATION
     AlignmentInformation*: FILE_ALIGNMENT_INFORMATION
     NameInformation*: FILE_NAME_INFORMATION
+
   PFILE_ALL_INFORMATION* = ptr FILE_ALL_INFORMATION
   FILE_FS_VOLUME_INFORMATION* {.pure.} = object
     VolumeCreationTime*: LARGE_INTEGER
@@ -3580,26 +4056,31 @@
     VolumeLabelLength*: ULONG
     SupportsObjects*: BOOLEAN
     VolumeLabel*: array[1, WCHAR]
+
   PFILE_FS_VOLUME_INFORMATION* = ptr FILE_FS_VOLUME_INFORMATION
   FILE_FS_LABEL_INFORMATION* {.pure.} = object
     VolumeLabelLength*: ULONG
     VolumeLabel*: array[1, WCHAR]
+
   PFILE_FS_LABEL_INFORMATION* = ptr FILE_FS_LABEL_INFORMATION
   FILE_FS_SIZE_INFORMATION* {.pure.} = object
     TotalAllocationUnits*: LARGE_INTEGER
     AvailableAllocationUnits*: LARGE_INTEGER
     SectorsPerAllocationUnit*: ULONG
     BytesPerSector*: ULONG
+
   PFILE_FS_SIZE_INFORMATION* = ptr FILE_FS_SIZE_INFORMATION
   FILE_FS_DEVICE_INFORMATION* {.pure.} = object
     DeviceType*: DEVICE_TYPE
     Characteristics*: ULONG
+
   PFILE_FS_DEVICE_INFORMATION* = ptr FILE_FS_DEVICE_INFORMATION
   FILE_FS_ATTRIBUTE_INFORMATION* {.pure.} = object
     FileSystemAttributes*: ULONG
     MaximumComponentNameLength*: ULONG
     FileSystemNameLength*: ULONG
     FileSystemName*: array[1, WCHAR]
+
   PFILE_FS_ATTRIBUTE_INFORMATION* = ptr FILE_FS_ATTRIBUTE_INFORMATION
   FILE_FS_FULL_SIZE_INFORMATION* {.pure.} = object
     TotalAllocationUnits*: LARGE_INTEGER
@@ -3607,17 +4088,21 @@
     ActualAvailableAllocationUnits*: LARGE_INTEGER
     SectorsPerAllocationUnit*: ULONG
     BytesPerSector*: ULONG
+
   PFILE_FS_FULL_SIZE_INFORMATION* = ptr FILE_FS_FULL_SIZE_INFORMATION
   FILE_FS_OBJECTID_INFORMATION* {.pure.} = object
     ObjectId*: array[16, UCHAR]
     ExtendedInfo*: array[48, UCHAR]
+
   PFILE_FS_OBJECTID_INFORMATION* = ptr FILE_FS_OBJECTID_INFORMATION
   IO_STATUS_BLOCK_UNION1* {.pure, union.} = object
     Status*: NTSTATUS
     Pointer*: PVOID
+
   IO_STATUS_BLOCK* {.pure.} = object
     union1*: IO_STATUS_BLOCK_UNION1
     Information*: ULONG_PTR
+
   PIO_STATUS_BLOCK* = ptr IO_STATUS_BLOCK
   VM_COUNTERS* {.pure.} = object
     PeakVirtualSize*: SIZE_T
@@ -3631,10 +4116,12 @@
     QuotaNonPagedPoolUsage*: SIZE_T
     PagefileUsage*: SIZE_T
     PeakPagefileUsage*: SIZE_T
+
   PVM_COUNTERS* = ptr VM_COUNTERS
   CLIENT_ID* {.pure.} = object
     UniqueProcess*: HANDLE
     UniqueThread*: HANDLE
+
   PCLIENT_ID* = ptr CLIENT_ID
   SYSTEM_THREADS* {.pure.} = object
     KernelTime*: LARGE_INTEGER
@@ -3648,6 +4135,7 @@
     ContextSwitchCount*: ULONG
     State*: THREAD_STATE
     WaitReason*: KWAIT_REASON
+
   PSYSTEM_THREADS* = ptr SYSTEM_THREADS
   PROCESS_BASIC_INFORMATION* {.pure.} = object
     ExitStatus*: NTSTATUS
@@ -3656,12 +4144,14 @@
     BasePriority*: KPRIORITY
     UniqueProcessId*: ULONG_PTR
     InheritedFromUniqueProcessId*: ULONG_PTR
+
   PPROCESS_BASIC_INFORMATION* = ptr PROCESS_BASIC_INFORMATION
   KERNEL_USER_TIMES* {.pure.} = object
     CreateTime*: FILETIME
     ExitTime*: FILETIME
     KernelTime*: LARGE_INTEGER
     UserTime*: LARGE_INTEGER
+
   PKERNEL_USER_TIMES* = ptr KERNEL_USER_TIMES
   SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION* {.pure.} = object
     IdleTime*: LARGE_INTEGER
@@ -3669,7 +4159,9 @@
     UserTime*: LARGE_INTEGER
     Reserved1*: array[2, LARGE_INTEGER]
     Reserved2*: ULONG
-  PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION* = ptr SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
+
+  PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION* =
+    ptr SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
   SYSTEM_PROCESS_INFORMATION* {.pure.} = object
     NextEntryOffset*: ULONG
     NumberOfThreads*: ULONG
@@ -3687,11 +4179,13 @@
     VirtualMemoryCounters*: VM_COUNTERS
     PrivatePageCount*: SIZE_T
     IoCounters*: IO_COUNTERS
+
   PSYSTEM_PROCESS_INFORMATION* = ptr SYSTEM_PROCESS_INFORMATION
   SYSTEM_REGISTRY_QUOTA_INFORMATION* {.pure.} = object
     RegistryQuotaAllowed*: ULONG
     RegistryQuotaUsed*: ULONG
     Reserved1*: PVOID
+
   PSYSTEM_REGISTRY_QUOTA_INFORMATION* = ptr SYSTEM_REGISTRY_QUOTA_INFORMATION
   SYSTEM_BASIC_INFORMATION* {.pure.} = object
     Reserved1*: array[4, BYTE]
@@ -3705,6 +4199,7 @@
     HighestUserAddress*: ULONG_PTR
     ActiveProcessors*: ULONG_PTR
     NumberOfProcessors*: CCHAR
+
   PSYSTEM_BASIC_INFORMATION* = ptr SYSTEM_BASIC_INFORMATION
   SYSTEM_PROCESSOR_INFORMATION* {.pure.} = object
     ProcessorArchitecture*: USHORT
@@ -3712,6 +4207,7 @@
     ProcessorRevision*: USHORT
     Unknown*: USHORT
     FeatureBits*: ULONG
+
   PSYSTEM_PROCESSOR_INFORMATION* = ptr SYSTEM_PROCESSOR_INFORMATION
   SYSTEM_TIMEOFDAY_INFORMATION* {.pure.} = object
     BootTime*: LARGE_INTEGER
@@ -3719,6 +4215,7 @@
     TimeZoneBias*: LARGE_INTEGER
     CurrentTimeZoneId*: ULONG
     Reserved1*: array[20, BYTE]
+
   PSYSTEM_TIMEOFDAY_INFORMATION* = ptr SYSTEM_TIMEOFDAY_INFORMATION
   SYSTEM_PERFORMANCE_INFORMATION* {.pure.} = object
     IdleTime*: LARGE_INTEGER
@@ -3795,15 +4292,19 @@
     FirstLevelTbFills*: ULONG
     SecondLevelTbFills*: ULONG
     SystemCalls*: ULONG
+
   PSYSTEM_PERFORMANCE_INFORMATION* = ptr SYSTEM_PERFORMANCE_INFORMATION
   SYSTEM_EXCEPTION_INFORMATION* {.pure.} = object
     Reserved1*: array[16, BYTE]
+
   PSYSTEM_EXCEPTION_INFORMATION* = ptr SYSTEM_EXCEPTION_INFORMATION
   SYSTEM_LOOKASIDE_INFORMATION* {.pure.} = object
     Reserved1*: array[32, BYTE]
+
   PSYSTEM_LOOKASIDE_INFORMATION* = ptr SYSTEM_LOOKASIDE_INFORMATION
   SYSTEM_INTERRUPT_INFORMATION* {.pure.} = object
     Reserved1*: array[24, BYTE]
+
   PSYSTEM_INTERRUPT_INFORMATION* = ptr SYSTEM_INTERRUPT_INFORMATION
   SYSTEM_HANDLE_ENTRY* {.pure.} = object
     OwnerPid*: ULONG
@@ -3812,10 +4313,12 @@
     HandleValue*: USHORT
     ObjectPointer*: PVOID
     AccessMask*: ULONG
+
   PSYSTEM_HANDLE_ENTRY* = ptr SYSTEM_HANDLE_ENTRY
   SYSTEM_HANDLE_INFORMATION* {.pure.} = object
     Count*: ULONG
     Handle*: array[1, SYSTEM_HANDLE_ENTRY]
+
   PSYSTEM_HANDLE_INFORMATION* = ptr SYSTEM_HANDLE_INFORMATION
   SYSTEM_PAGEFILE_INFORMATION* {.pure.} = object
     NextEntryOffset*: ULONG
@@ -3823,8 +4326,11 @@
     TotalUsed*: ULONG
     PeakUsed*: ULONG
     FileName*: UNICODE_STRING
+
   PSYSTEM_PAGEFILE_INFORMATION* = ptr SYSTEM_PAGEFILE_INFORMATION
-  PRTL_HEAP_COMMIT_ROUTINE* = proc (Base: PVOID, CommitAddress: ptr PVOID, CommitSize: PSIZE_T): NTSTATUS {.stdcall.}
+  PRTL_HEAP_COMMIT_ROUTINE* = proc(
+    Base: PVOID, CommitAddress: ptr PVOID, CommitSize: PSIZE_T
+  ): NTSTATUS {.stdcall.}
   RTL_HEAP_PARAMETERS* {.pure.} = object
     Length*: ULONG
     SegmentReserve*: SIZE_T
@@ -3836,14 +4342,17 @@
     InitialCommit*: SIZE_T
     InitialReserve*: SIZE_T
     CommitRoutine*: PRTL_HEAP_COMMIT_ROUTINE
-    Reserved*: array[ 2 , SIZE_T]
+    Reserved*: array[2, SIZE_T]
+
   PRTL_HEAP_PARAMETERS* = ptr RTL_HEAP_PARAMETERS
   WINSTATIONINFORMATIONW* {.pure.} = object
     Reserved2*: array[70, BYTE]
     LogonId*: ULONG
     Reserved3*: array[1140, BYTE]
+
   PWINSTATIONINFORMATIONW* = ptr WINSTATIONINFORMATIONW
   BSTR* = distinct ptr OLECHAR
+
 const
   exceptionContinueExecution* = 0
   exceptionContinueSearch* = 1
@@ -5013,7 +5522,8 @@
   STATUS_AUTHENTICATION_FIREWALL_FAILED* = NTSTATUS 0xC0000413'i32
   STATUS_VDM_DISALLOWED* = NTSTATUS 0xC0000414'i32
   STATUS_HUNG_DISPLAY_DRIVER_THREAD* = NTSTATUS 0xC0000415'i32
-  STATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE* = NTSTATUS 0xC0000416'i32
+  STATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE* =
+    NTSTATUS 0xC0000416'i32
   STATUS_INVALID_CRUNTIME_PARAMETER* = NTSTATUS 0xC0000417'i32
   STATUS_NTLM_BLOCKED* = NTSTATUS 0xC0000418'i32
   STATUS_DS_SRC_SID_EXISTS_IN_FOREST* = NTSTATUS 0xC0000419'i32
@@ -5589,7 +6099,8 @@
   STATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE* = NTSTATUS 0xC01E0322'i32
   STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN* = NTSTATUS 0xC01E0323'i32
   STATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE* = NTSTATUS 0xC01E0324'i32
-  STATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION* = NTSTATUS 0xC01E0325'i32
+  STATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION* =
+    NTSTATUS 0xC01E0325'i32
   STATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES* = NTSTATUS 0xC01E0326'i32
   STATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY* = NTSTATUS 0xC01E0327'i32
   STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE* = NTSTATUS 0xC01E0328'i32
@@ -5604,7 +6115,8 @@
   STATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE* = NTSTATUS 0xC01E0331'i32
   STATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE* = NTSTATUS 0xC01E0332'i32
   STATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET* = NTSTATUS 0xC01E0333'i32
-  STATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER* = NTSTATUS 0xC01E0334'i32
+  STATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER* =
+    NTSTATUS 0xC01E0334'i32
   STATUS_GRAPHICS_NO_VIDPNMGR* = NTSTATUS 0xC01E0335'i32
   STATUS_GRAPHICS_NO_ACTIVE_VIDPN* = NTSTATUS 0xC01E0336'i32
   STATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY* = NTSTATUS 0xC01E0337'i32
@@ -5621,13 +6133,16 @@
   STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE* = NTSTATUS 0xC01E0342'i32
   STATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN* = NTSTATUS 0xC01E0343'i32
   STATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL* = NTSTATUS 0xC01E0344'i32
-  STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION* = NTSTATUS 0xC01E0345'i32
-  STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED* = NTSTATUS 0xC01E0346'i32
+  STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION* =
+    NTSTATUS 0xC01E0345'i32
+  STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED* =
+    NTSTATUS 0xC01E0346'i32
   STATUS_GRAPHICS_INVALID_GAMMA_RAMP* = NTSTATUS 0xC01E0347'i32
   STATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED* = NTSTATUS 0xC01E0348'i32
   STATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED* = NTSTATUS 0xC01E0349'i32
   STATUS_GRAPHICS_MODE_NOT_IN_MODESET* = NTSTATUS 0xC01E034A'i32
-  STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON* = NTSTATUS 0xC01E034D'i32
+  STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON* =
+    NTSTATUS 0xC01E034D'i32
   STATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE* = NTSTATUS 0xC01E034E'i32
   STATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE* = NTSTATUS 0xC01E034F'i32
   STATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS* = NTSTATUS 0xC01E0350'i32
@@ -5665,7 +6180,8 @@
   STATUS_GRAPHICS_OPM_INVALID_POINTER* = NTSTATUS 0xC01E050A'i32
   STATUS_GRAPHICS_OPM_INTERNAL_ERROR* = NTSTATUS 0xC01E050B'i32
   STATUS_GRAPHICS_OPM_INVALID_HANDLE* = NTSTATUS 0xC01E050C'i32
-  STATUS_GRAPHICS_PVP_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE* = NTSTATUS 0xC01E050D'i32
+  STATUS_GRAPHICS_PVP_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE* =
+    NTSTATUS 0xC01E050D'i32
   STATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH* = NTSTATUS 0xC01E050E'i32
   STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED* = NTSTATUS 0xC01E050F'i32
   STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED* = NTSTATUS 0xC01E0510'i32
@@ -5679,10 +6195,12 @@
   STATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE* = NTSTATUS 0xC01E0518'i32
   STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS* = NTSTATUS 0xC01E051A'i32
   STATUS_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS* = NTSTATUS 0xC01E051B'i32
-  STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS* = NTSTATUS 0xC01E051C'i32
+  STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS* =
+    NTSTATUS 0xC01E051C'i32
   STATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST* = NTSTATUS 0xC01E051D'i32
   STATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR* = NTSTATUS 0xC01E051E'i32
-  STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS* = NTSTATUS 0xC01E051F'i32
+  STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS* =
+    NTSTATUS 0xC01E051F'i32
   STATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED* = NTSTATUS 0xC01E0520'i32
   STATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST* = NTSTATUS 0xC01E0521'i32
   STATUS_GRAPHICS_I2C_NOT_SUPPORTED* = NTSTATUS 0xC01E0580'i32
@@ -5691,7 +6209,8 @@
   STATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA* = NTSTATUS 0xC01E0583'i32
   STATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED* = NTSTATUS 0xC01E0584'i32
   STATUS_GRAPHICS_DDCCI_INVALID_DATA* = NTSTATUS 0xC01E0585'i32
-  STATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE* = NTSTATUS 0xC01E0586'i32
+  STATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE* =
+    NTSTATUS 0xC01E0586'i32
   STATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING* = NTSTATUS 0xC01E0587'i32
   STATUS_GRAPHICS_MCA_INTERNAL_ERROR* = NTSTATUS 0xC01E0588'i32
   STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND* = NTSTATUS 0xC01E0589'i32
@@ -5892,7 +6411,11 @@
   ERROR_SEVERITY_ERROR* = 0xC0000000'i32
   UNICODE_STRING_MAX_BYTES* = WORD 65534
   UNICODE_STRING_MAX_CHARS* = 32767
-template DEFINE_GUID*(data1: int32, data2: uint16, data3: uint16, data4: array[8, uint8]): GUID = GUID(Data1: data1, Data2: data2, Data3: data3, Data4: data4)
+template DEFINE_GUID*(
+    data1: int32, data2: uint16, data3: uint16, data4: array[8, uint8]
+): GUID =
+  GUID(Data1: data1, Data2: data2, Data3: data3, Data4: data4)
+
 const
   GUID_NULL* = DEFINE_GUID("00000000-0000-0000-0000-000000000000")
   IID_NULL* = GUID_NULL
@@ -6279,19 +6802,27 @@
   SORT_GEORGIAN_TRADITIONAL* = 0x0
   SORT_GEORGIAN_MODERN* = 0x1
   LOCALE_NAME_MAX_LENGTH* = 85
-template MAKELANGID*(p: untyped, s: untyped): WORD = s.WORD shl 10 or p.WORD
+template MAKELANGID*(p: untyped, s: untyped): WORD =
+  s.WORD shl 10 or p.WORD
+
 const
-  LANG_SYSTEM_DEFAULT* = MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT)
-  LANG_USER_DEFAULT* = MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT)
-template MAKELCID*(l: untyped, s: untyped): DWORD = (s.DWORD shl 16) or l.DWORD
+  LANG_SYSTEM_DEFAULT* = MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT)
+  LANG_USER_DEFAULT* = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)
+template MAKELCID*(l: untyped, s: untyped): DWORD =
+  (s.DWORD shl 16) or l.DWORD
+
 const
-  LOCALE_SYSTEM_DEFAULT* = MAKELCID(LANG_SYSTEM_DEFAULT,SORT_DEFAULT)
-  LOCALE_USER_DEFAULT* = MAKELCID(LANG_USER_DEFAULT,SORT_DEFAULT)
-  LOCALE_NEUTRAL* = MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT)
-  LOCALE_CUSTOM_DEFAULT* = MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_DEFAULT), SORT_DEFAULT)
-  LOCALE_CUSTOM_UNSPECIFIED* = MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_UNSPECIFIED), SORT_DEFAULT)
-  LOCALE_CUSTOM_UI_DEFAULT* = MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_UI_CUSTOM_DEFAULT), SORT_DEFAULT)
-  LOCALE_INVARIANT* = MAKELCID(MAKELANGID(LANG_INVARIANT,SUBLANG_NEUTRAL),SORT_DEFAULT)
+  LOCALE_SYSTEM_DEFAULT* = MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT)
+  LOCALE_USER_DEFAULT* = MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT)
+  LOCALE_NEUTRAL* = MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), SORT_DEFAULT)
+  LOCALE_CUSTOM_DEFAULT* =
+    MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_DEFAULT), SORT_DEFAULT)
+  LOCALE_CUSTOM_UNSPECIFIED* =
+    MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_UNSPECIFIED), SORT_DEFAULT)
+  LOCALE_CUSTOM_UI_DEFAULT* =
+    MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_UI_CUSTOM_DEFAULT), SORT_DEFAULT)
+  LOCALE_INVARIANT* =
+    MAKELCID(MAKELANGID(LANG_INVARIANT, SUBLANG_NEUTRAL), SORT_DEFAULT)
   MAXIMUM_WAIT_OBJECTS* = 64
   MAXIMUM_SUSPEND_COUNT* = MAXCHAR
   EXCEPTION_NONCONTINUABLE* = 0x1
@@ -6332,12 +6863,12 @@
   sidTypeUnknown* = 8
   sidTypeComputer* = 9
   sidTypeLabel* = 10
-  SECURITY_NULL_SID_AUTHORITY* = [0'u8,0,0,0,0,0]
-  SECURITY_WORLD_SID_AUTHORITY* = [0'u8,0,0,0,0,1]
-  SECURITY_LOCAL_SID_AUTHORITY* = [0'u8,0,0,0,0,2]
-  SECURITY_CREATOR_SID_AUTHORITY* = [0'u8,0,0,0,0,3]
-  SECURITY_NON_UNIQUE_AUTHORITY* = [0'u8,0,0,0,0,4]
-  SECURITY_RESOURCE_MANAGER_AUTHORITY* = [0'u8,0,0,0,0,9]
+  SECURITY_NULL_SID_AUTHORITY* = [0'u8, 0, 0, 0, 0, 0]
+  SECURITY_WORLD_SID_AUTHORITY* = [0'u8, 0, 0, 0, 0, 1]
+  SECURITY_LOCAL_SID_AUTHORITY* = [0'u8, 0, 0, 0, 0, 2]
+  SECURITY_CREATOR_SID_AUTHORITY* = [0'u8, 0, 0, 0, 0, 3]
+  SECURITY_NON_UNIQUE_AUTHORITY* = [0'u8, 0, 0, 0, 0, 4]
+  SECURITY_RESOURCE_MANAGER_AUTHORITY* = [0'u8, 0, 0, 0, 0, 9]
   SECURITY_NULL_RID* = 0x00000000
   SECURITY_WORLD_RID* = 0x00000000
   SECURITY_LOCAL_RID* = 0x00000000
@@ -6347,7 +6878,7 @@
   SECURITY_CREATOR_OWNER_SERVER_RID* = 0x00000002
   SECURITY_CREATOR_GROUP_SERVER_RID* = 0x00000003
   SECURITY_CREATOR_OWNER_RIGHTS_RID* = 0x00000004
-  SECURITY_NT_AUTHORITY* = [0'u8,0,0,0,0,5]
+  SECURITY_NT_AUTHORITY* = [0'u8, 0, 0, 0, 0, 5]
   SECURITY_DIALUP_RID* = 0x00000001
   SECURITY_NETWORK_RID* = 0x00000002
   SECURITY_BATCH_RID* = 0x00000003
@@ -6478,7 +7009,7 @@
   SECURITY_CAPABILITY_SHARED_USER_CERTIFICATES* = 0x00000009
   SECURITY_CAPABILITY_REMOVABLE_STORAGE* = 0x0000000a
   SECURITY_CAPABILITY_INTERNET_EXPLORER* = 0x00001000
-  SECURITY_MANDATORY_LABEL_AUTHORITY* = [0'u8,0,0,0,0,16]
+  SECURITY_MANDATORY_LABEL_AUTHORITY* = [0'u8, 0, 0, 0, 0, 16]
   SECURITY_MANDATORY_UNTRUSTED_RID* = 0x00000000
   SECURITY_MANDATORY_LOW_RID* = 0x00001000
   SECURITY_MANDATORY_MEDIUM_RID* = 0x00002000
@@ -6610,7 +7141,10 @@
   SE_GROUP_INTEGRITY_ENABLED* = 0x00000040
   SE_GROUP_LOGON_ID* = 0xC0000000'i32
   SE_GROUP_RESOURCE* = 0x20000000
-  SE_GROUP_VALID_ATTRIBUTES* = SE_GROUP_MANDATORY or SE_GROUP_ENABLED_BY_DEFAULT or SE_GROUP_ENABLED or SE_GROUP_OWNER or SE_GROUP_USE_FOR_DENY_ONLY or SE_GROUP_LOGON_ID or SE_GROUP_RESOURCE or SE_GROUP_INTEGRITY or SE_GROUP_INTEGRITY_ENABLED
+  SE_GROUP_VALID_ATTRIBUTES* =
+    SE_GROUP_MANDATORY or SE_GROUP_ENABLED_BY_DEFAULT or SE_GROUP_ENABLED or
+    SE_GROUP_OWNER or SE_GROUP_USE_FOR_DENY_ONLY or SE_GROUP_LOGON_ID or
+    SE_GROUP_RESOURCE or SE_GROUP_INTEGRITY or SE_GROUP_INTEGRITY_ENABLED
   ACL_REVISION* = 2
   ACL_REVISION_DS* = 4
   ACL_REVISION1* = 1
@@ -6658,7 +7192,9 @@
   SYSTEM_MANDATORY_LABEL_NO_WRITE_UP* = 0x1
   SYSTEM_MANDATORY_LABEL_NO_READ_UP* = 0x2
   SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP* = 0x4
-  SYSTEM_MANDATORY_LABEL_VALID_MASK* = SYSTEM_MANDATORY_LABEL_NO_WRITE_UP or SYSTEM_MANDATORY_LABEL_NO_READ_UP or SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP
+  SYSTEM_MANDATORY_LABEL_VALID_MASK* =
+    SYSTEM_MANDATORY_LABEL_NO_WRITE_UP or SYSTEM_MANDATORY_LABEL_NO_READ_UP or
+    SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP
   ACE_OBJECT_TYPE_PRESENT* = 0x1
   ACE_INHERITED_OBJECT_TYPE_PRESENT* = 0x2
   aclRevisionInformation* = 1
@@ -6694,7 +7230,9 @@
   SE_PRIVILEGE_ENABLED* = 0x00000002
   SE_PRIVILEGE_REMOVED* = 0X00000004
   SE_PRIVILEGE_USED_FOR_ACCESS* = 0x80000000'i32
-  SE_PRIVILEGE_VALID_ATTRIBUTES* = SE_PRIVILEGE_ENABLED_BY_DEFAULT or SE_PRIVILEGE_ENABLED or SE_PRIVILEGE_REMOVED or SE_PRIVILEGE_USED_FOR_ACCESS
+  SE_PRIVILEGE_VALID_ATTRIBUTES* =
+    SE_PRIVILEGE_ENABLED_BY_DEFAULT or SE_PRIVILEGE_ENABLED or SE_PRIVILEGE_REMOVED or
+    SE_PRIVILEGE_USED_FOR_ACCESS
   PRIVILEGE_SET_ALL_NECESSARY* = 1
   ACCESS_REASON_TYPE_MASK* = 0x00ff0000
   ACCESS_REASON_DATA_MASK* = 0x0000ffff
@@ -6770,10 +7308,15 @@
   TOKEN_ADJUST_GROUPS* = 0x0040
   TOKEN_ADJUST_DEFAULT* = 0x0080
   TOKEN_ADJUST_SESSIONID* = 0x0100
-  TOKEN_ALL_ACCESS_P* = STANDARD_RIGHTS_REQUIRED or TOKEN_ASSIGN_PRIMARY or TOKEN_DUPLICATE or TOKEN_IMPERSONATE or TOKEN_QUERY or TOKEN_QUERY_SOURCE or TOKEN_ADJUST_PRIVILEGES or TOKEN_ADJUST_GROUPS or TOKEN_ADJUST_DEFAULT
+  TOKEN_ALL_ACCESS_P* =
+    STANDARD_RIGHTS_REQUIRED or TOKEN_ASSIGN_PRIMARY or TOKEN_DUPLICATE or
+    TOKEN_IMPERSONATE or TOKEN_QUERY or TOKEN_QUERY_SOURCE or TOKEN_ADJUST_PRIVILEGES or
+    TOKEN_ADJUST_GROUPS or TOKEN_ADJUST_DEFAULT
   TOKEN_ALL_ACCESS* = TOKEN_ALL_ACCESS_P or TOKEN_ADJUST_SESSIONID
   TOKEN_READ* = STANDARD_RIGHTS_READ or TOKEN_QUERY
-  TOKEN_WRITE* = STANDARD_RIGHTS_WRITE or TOKEN_ADJUST_PRIVILEGES or TOKEN_ADJUST_GROUPS or TOKEN_ADJUST_DEFAULT
+  TOKEN_WRITE* =
+    STANDARD_RIGHTS_WRITE or TOKEN_ADJUST_PRIVILEGES or TOKEN_ADJUST_GROUPS or
+    TOKEN_ADJUST_DEFAULT
   TOKEN_EXECUTE* = STANDARD_RIGHTS_EXECUTE
   tokenPrimary* = 1
   tokenImpersonation* = 2
@@ -6824,7 +7367,8 @@
   TOKEN_MANDATORY_POLICY_OFF* = 0x0
   TOKEN_MANDATORY_POLICY_NO_WRITE_UP* = 0x1
   TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN* = 0x2
-  TOKEN_MANDATORY_POLICY_VALID_MASK* = TOKEN_MANDATORY_POLICY_NO_WRITE_UP or TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN
+  TOKEN_MANDATORY_POLICY_VALID_MASK* =
+    TOKEN_MANDATORY_POLICY_NO_WRITE_UP or TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN
   mandatoryLevelUntrusted* = 0
   mandatoryLevelLow* = 1
   mandatoryLevelMedium* = 2
@@ -6846,10 +7390,16 @@
   CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT* = 0x0008
   CLAIM_SECURITY_ATTRIBUTE_DISABLED* = 0x0010
   CLAIM_SECURITY_ATTRIBUTE_MANDATORY* = 0x0020
-  CLAIM_SECURITY_ATTRIBUTE_VALID_FLAGS* = CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE or CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE or CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY or CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT or CLAIM_SECURITY_ATTRIBUTE_DISABLED or CLAIM_SECURITY_ATTRIBUTE_MANDATORY
+  CLAIM_SECURITY_ATTRIBUTE_VALID_FLAGS* =
+    CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE or
+    CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE or
+    CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY or
+    CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT or CLAIM_SECURITY_ATTRIBUTE_DISABLED or
+    CLAIM_SECURITY_ATTRIBUTE_MANDATORY
   CLAIM_SECURITY_ATTRIBUTE_CUSTOM_FLAGS* = 0xffff0000'i32
   CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1* = 1
-  CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION* = CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1
+  CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION* =
+    CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1
   SECURITY_DYNAMIC_TRACKING* = TRUE
   SECURITY_STATIC_TRACKING* = FALSE
   DISABLE_MAX_PRIVILEGE* = 0x1
@@ -6887,11 +7437,9 @@
   PROCESS_QUERY_LIMITED_INFORMATION* = 0x1000
   PROCESS_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0xffff
 when winimCpu64:
-  const
-    MAXIMUM_PROC_PER_GROUP* = 64
+  const MAXIMUM_PROC_PER_GROUP* = 64
 when winimCpu32:
-  const
-    MAXIMUM_PROC_PER_GROUP* = 32
+  const MAXIMUM_PROC_PER_GROUP* = 32
 const
   MAXIMUM_PROCESSORS* = MAXIMUM_PROC_PER_GROUP
   THREAD_TERMINATE* = 0x0001
@@ -7041,7 +7589,8 @@
   SEMAPHORE_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0x3
   TIMER_QUERY_STATE* = 0x0001
   TIMER_MODIFY_STATE* = 0x0002
-  TIMER_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or TIMER_QUERY_STATE or TIMER_MODIFY_STATE
+  TIMER_ALL_ACCESS* =
+    STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or TIMER_QUERY_STATE or TIMER_MODIFY_STATE
   TIME_ZONE_ID_UNKNOWN* = 0
   TIME_ZONE_ID_STANDARD* = 1
   TIME_ZONE_ID_DAYLIGHT* = 2
@@ -7136,10 +7685,13 @@
   SECTION_MAP_EXECUTE* = 0x0008
   SECTION_EXTEND_SIZE* = 0x0010
   SECTION_MAP_EXECUTE_EXPLICIT* = 0x0020
-  SECTION_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or SECTION_QUERY or SECTION_MAP_WRITE or SECTION_MAP_READ or SECTION_MAP_EXECUTE or SECTION_EXTEND_SIZE
+  SECTION_ALL_ACCESS* =
+    STANDARD_RIGHTS_REQUIRED or SECTION_QUERY or SECTION_MAP_WRITE or SECTION_MAP_READ or
+    SECTION_MAP_EXECUTE or SECTION_EXTEND_SIZE
   SESSION_QUERY_ACCESS* = 0x1
   SESSION_MODIFY_ACCESS* = 0x2
-  SESSION_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or SESSION_QUERY_ACCESS or SESSION_MODIFY_ACCESS
+  SESSION_ALL_ACCESS* =
+    STANDARD_RIGHTS_REQUIRED or SESSION_QUERY_ACCESS or SESSION_MODIFY_ACCESS
   PAGE_NOACCESS* = 0x01
   PAGE_READONLY* = 0x02
   PAGE_READWRITE* = 0x04
@@ -7192,9 +7744,14 @@
   FILE_READ_ATTRIBUTES* = 0x0080
   FILE_WRITE_ATTRIBUTES* = 0x0100
   FILE_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0x1FF
-  FILE_GENERIC_READ* = STANDARD_RIGHTS_READ or FILE_READ_DATA or FILE_READ_ATTRIBUTES or FILE_READ_EA or SYNCHRONIZE
-  FILE_GENERIC_WRITE* = STANDARD_RIGHTS_WRITE or FILE_WRITE_DATA or FILE_WRITE_ATTRIBUTES or FILE_WRITE_EA or FILE_APPEND_DATA or SYNCHRONIZE
-  FILE_GENERIC_EXECUTE* = STANDARD_RIGHTS_EXECUTE or FILE_READ_ATTRIBUTES or FILE_EXECUTE or SYNCHRONIZE
+  FILE_GENERIC_READ* =
+    STANDARD_RIGHTS_READ or FILE_READ_DATA or FILE_READ_ATTRIBUTES or FILE_READ_EA or
+    SYNCHRONIZE
+  FILE_GENERIC_WRITE* =
+    STANDARD_RIGHTS_WRITE or FILE_WRITE_DATA or FILE_WRITE_ATTRIBUTES or FILE_WRITE_EA or
+    FILE_APPEND_DATA or SYNCHRONIZE
+  FILE_GENERIC_EXECUTE* =
+    STANDARD_RIGHTS_EXECUTE or FILE_READ_ATTRIBUTES or FILE_EXECUTE or SYNCHRONIZE
   FILE_ATTRIBUTE_READONLY* = 0x00000001
   FILE_ATTRIBUTE_HIDDEN* = 0x00000002
   FILE_ATTRIBUTE_SYSTEM* = 0x00000004
@@ -7246,7 +7803,7 @@
   FILE_SUPPORTS_OPEN_BY_FILE_ID* = 0x01000000
   FILE_SUPPORTS_USN_JOURNAL* = 0x02000000
   FILE_SUPPORTS_INTEGRITY_STREAMS* = 0x04000000
-  MAXIMUM_REPARSE_DATA_BUFFER_SIZE* = 16*1024
+  MAXIMUM_REPARSE_DATA_BUFFER_SIZE* = 16 * 1024
   SYMLINK_FLAG_RELATIVE* = 1
   IO_REPARSE_TAG_RESERVED_ZERO* = 0
   IO_REPARSE_TAG_RESERVED_ONE* = 1
@@ -7310,28 +7867,37 @@
   GUID_ACTIVE_POWERSCHEME* = DEFINE_GUID("31f9f286-5084-42fe-b720-2b0264993763")
   GUID_IDLE_RESILIENCY_SUBGROUP* = DEFINE_GUID("2e601130-5351-4d9d-8e04-252966bad054")
   GUID_IDLE_RESILIENCY_PERIOD* = DEFINE_GUID("c42b79aa-aa3a-484b-a98f-2cf32aa90a28")
-  GUID_DISK_COALESCING_POWERDOWN_TIMEOUT* = DEFINE_GUID("c36f0eb4-2988-4a70-8eee-0884fc2c2433")
-  GUID_EXECUTION_REQUIRED_REQUEST_TIMEOUT* = DEFINE_GUID("3166bc41-7e98-4e03-b34e-ec0f5f2b218e")
+  GUID_DISK_COALESCING_POWERDOWN_TIMEOUT* =
+    DEFINE_GUID("c36f0eb4-2988-4a70-8eee-0884fc2c2433")
+  GUID_EXECUTION_REQUIRED_REQUEST_TIMEOUT* =
+    DEFINE_GUID("3166bc41-7e98-4e03-b34e-ec0f5f2b218e")
   GUID_VIDEO_SUBGROUP* = DEFINE_GUID("7516b95f-f776-4464-8c53-06167f40cc99")
   GUID_VIDEO_POWERDOWN_TIMEOUT* = DEFINE_GUID("3c0bc021-c8a8-4e07-a973-6b14cbcb2b7e")
   GUID_VIDEO_ANNOYANCE_TIMEOUT* = DEFINE_GUID("82dbcf2d-cd67-40c5-bfdc-9f1a5ccd4663")
-  GUID_VIDEO_ADAPTIVE_PERCENT_INCREASE* = DEFINE_GUID("eed904df-b142-4183-b10b-5a1197a37864")
+  GUID_VIDEO_ADAPTIVE_PERCENT_INCREASE* =
+    DEFINE_GUID("eed904df-b142-4183-b10b-5a1197a37864")
   GUID_VIDEO_DIM_TIMEOUT* = DEFINE_GUID("17aaa29b-8b43-4b94-aafe-35f64daaf1ee")
   GUID_VIDEO_ADAPTIVE_POWERDOWN* = DEFINE_GUID("90959d22-d6a1-49b9-af93-bce885ad335b")
   GUID_MONITOR_POWER_ON* = DEFINE_GUID("02731015-4510-4526-99e6-e5a17ebd1aea")
-  GUID_DEVICE_POWER_POLICY_VIDEO_BRIGHTNESS* = DEFINE_GUID("aded5e82-b909-4619-9949-f5d71dac0bcb")
-  GUID_DEVICE_POWER_POLICY_VIDEO_DIM_BRIGHTNESS* = DEFINE_GUID("f1fbfde2-a960-4165-9f88-50667911ce96")
-  GUID_VIDEO_CURRENT_MONITOR_BRIGHTNESS* = DEFINE_GUID("8ffee2c6-2d01-46be-adb9-398addc5b4ff")
-  GUID_VIDEO_ADAPTIVE_DISPLAY_BRIGHTNESS* = DEFINE_GUID("fbd9aa66-9553-4097-ba44-ed6e9d65eab8")
+  GUID_DEVICE_POWER_POLICY_VIDEO_BRIGHTNESS* =
+    DEFINE_GUID("aded5e82-b909-4619-9949-f5d71dac0bcb")
+  GUID_DEVICE_POWER_POLICY_VIDEO_DIM_BRIGHTNESS* =
+    DEFINE_GUID("f1fbfde2-a960-4165-9f88-50667911ce96")
+  GUID_VIDEO_CURRENT_MONITOR_BRIGHTNESS* =
+    DEFINE_GUID("8ffee2c6-2d01-46be-adb9-398addc5b4ff")
+  GUID_VIDEO_ADAPTIVE_DISPLAY_BRIGHTNESS* =
+    DEFINE_GUID("fbd9aa66-9553-4097-ba44-ed6e9d65eab8")
   GUID_CONSOLE_DISPLAY_STATE* = DEFINE_GUID("6fe69556-704a-47a0-8f24-c28d936fda47")
   GUID_ALLOW_DISPLAY_REQUIRED* = DEFINE_GUID("a9ceb8da-cd46-44fb-a98b-02af69de4623")
   GUID_VIDEO_CONSOLE_LOCK_TIMEOUT* = DEFINE_GUID("8ec4b3a5-6868-48c2-be75-4f3044be88a7")
-  GUID_ADAPTIVE_POWER_BEHAVIOR_SUBGROUP* = DEFINE_GUID("8619b916-e004-4dd8-9b66-dae86f806698")
+  GUID_ADAPTIVE_POWER_BEHAVIOR_SUBGROUP* =
+    DEFINE_GUID("8619b916-e004-4dd8-9b66-dae86f806698")
   GUID_NON_ADAPTIVE_INPUT_TIMEOUT* = DEFINE_GUID("5adbbfbc-074e-4da1-ba38-db8b36b2c8f3")
   GUID_DISK_SUBGROUP* = DEFINE_GUID("0012ee47-9041-4b5d-9b77-535fba8b1442")
   GUID_DISK_POWERDOWN_TIMEOUT* = DEFINE_GUID("6738e2c4-e8a5-4a42-b16a-e040e769756e")
   GUID_DISK_IDLE_TIMEOUT* = DEFINE_GUID("58e39ba8-b8e6-4ef6-90d0-89ae32b258d6")
-  GUID_DISK_BURST_IGNORE_THRESHOLD* = DEFINE_GUID("80e3c60e-bb94-4ad8-bbe0-0d3195efc663")
+  GUID_DISK_BURST_IGNORE_THRESHOLD* =
+    DEFINE_GUID("80e3c60e-bb94-4ad8-bbe0-0d3195efc663")
   GUID_DISK_ADAPTIVE_POWERDOWN* = DEFINE_GUID("396a32e1-499a-40b2-9124-a96afe707667")
   GUID_SLEEP_SUBGROUP* = DEFINE_GUID("238c9fa8-0aad-41ed-83f4-97be242c8f20")
   GUID_SLEEP_IDLE_THRESHOLD* = DEFINE_GUID("81cd32e0-7833-44f3-8737-7081f38d1f70")
@@ -7364,65 +7930,102 @@
   GUID_BATTERY_DISCHARGE_ACTION_3* = DEFINE_GUID("80472613-9780-455e-b308-72d3003cf2f8")
   GUID_BATTERY_DISCHARGE_LEVEL_3* = DEFINE_GUID("58afd5a6-c2dd-47d2-9fbf-ef70cc5c5965")
   GUID_BATTERY_DISCHARGE_FLAGS_3* = DEFINE_GUID("73613ccf-dbfa-4279-8356-4935f6bf62f3")
-  GUID_PROCESSOR_SETTINGS_SUBGROUP* = DEFINE_GUID("54533251-82be-4824-96c1-47b60b740d00")
+  GUID_PROCESSOR_SETTINGS_SUBGROUP* =
+    DEFINE_GUID("54533251-82be-4824-96c1-47b60b740d00")
   GUID_PROCESSOR_THROTTLE_POLICY* = DEFINE_GUID("57027304-4af6-4104-9260-e3d95248fc36")
   GUID_PROCESSOR_THROTTLE_MAXIMUM* = DEFINE_GUID("bc5038f7-23e0-4960-96da-33abaf5935ec")
   GUID_PROCESSOR_THROTTLE_MINIMUM* = DEFINE_GUID("893dee8e-2bef-41e0-89c6-b55d0929964c")
   GUID_PROCESSOR_ALLOW_THROTTLING* = DEFINE_GUID("3b04d4fd-1cc7-4f23-ab1c-d1337819c4bb")
   GUID_PROCESSOR_IDLESTATE_POLICY* = DEFINE_GUID("68f262a7-f621-4069-b9a5-4874169be23c")
   GUID_PROCESSOR_PERFSTATE_POLICY* = DEFINE_GUID("bbdc3814-18e9-4463-8a55-d197327c45c0")
-  GUID_PROCESSOR_PERF_INCREASE_THRESHOLD* = DEFINE_GUID("06cadf0e-64ed-448a-8927-ce7bf90eb35d")
-  GUID_PROCESSOR_PERF_DECREASE_THRESHOLD* = DEFINE_GUID("12a0ab44-fe28-4fa9-b3bd-4b64f44960a6")
-  GUID_PROCESSOR_PERF_INCREASE_POLICY* = DEFINE_GUID("465e1f50-b610-473a-ab58-00d1077dc418")
-  GUID_PROCESSOR_PERF_DECREASE_POLICY* = DEFINE_GUID("40fbefc7-2e9d-4d25-a185-0cfd8574bac6")
-  GUID_PROCESSOR_PERF_INCREASE_TIME* = DEFINE_GUID("984cf492-3bed-4488-a8f9-4286c97bf5aa")
-  GUID_PROCESSOR_PERF_DECREASE_TIME* = DEFINE_GUID("d8edeb9b-95cf-4f95-a73c-b061973693c8")
+  GUID_PROCESSOR_PERF_INCREASE_THRESHOLD* =
+    DEFINE_GUID("06cadf0e-64ed-448a-8927-ce7bf90eb35d")
+  GUID_PROCESSOR_PERF_DECREASE_THRESHOLD* =
+    DEFINE_GUID("12a0ab44-fe28-4fa9-b3bd-4b64f44960a6")
+  GUID_PROCESSOR_PERF_INCREASE_POLICY* =
+    DEFINE_GUID("465e1f50-b610-473a-ab58-00d1077dc418")
+  GUID_PROCESSOR_PERF_DECREASE_POLICY* =
+    DEFINE_GUID("40fbefc7-2e9d-4d25-a185-0cfd8574bac6")
+  GUID_PROCESSOR_PERF_INCREASE_TIME* =
+    DEFINE_GUID("984cf492-3bed-4488-a8f9-4286c97bf5aa")
+  GUID_PROCESSOR_PERF_DECREASE_TIME* =
+    DEFINE_GUID("d8edeb9b-95cf-4f95-a73c-b061973693c8")
   GUID_PROCESSOR_PERF_TIME_CHECK* = DEFINE_GUID("4d2b0152-7d5c-498b-88e2-34345392a2c5")
-  GUID_PROCESSOR_PERF_BOOST_POLICY* = DEFINE_GUID("45bcc044-d885-43e2-8605-ee0ec6e96b59")
+  GUID_PROCESSOR_PERF_BOOST_POLICY* =
+    DEFINE_GUID("45bcc044-d885-43e2-8605-ee0ec6e96b59")
   GUID_PROCESSOR_PERF_BOOST_MODE* = DEFINE_GUID("be337238-0d82-4146-a960-4f3749d470c7")
-  GUID_PROCESSOR_IDLE_ALLOW_SCALING* = DEFINE_GUID("6c2993b0-8f48-481f-bcc6-00dd2742aa06")
+  GUID_PROCESSOR_IDLE_ALLOW_SCALING* =
+    DEFINE_GUID("6c2993b0-8f48-481f-bcc6-00dd2742aa06")
   GUID_PROCESSOR_IDLE_DISABLE* = DEFINE_GUID("5d76a2ca-e8c0-402f-a133-2158492d58ad")
-  GUID_PROCESSOR_IDLE_STATE_MAXIMUM* = DEFINE_GUID("9943e905-9a30-4ec1-9b99-44dd3b76f7a2")
+  GUID_PROCESSOR_IDLE_STATE_MAXIMUM* =
+    DEFINE_GUID("9943e905-9a30-4ec1-9b99-44dd3b76f7a2")
   GUID_PROCESSOR_IDLE_TIME_CHECK* = DEFINE_GUID("c4581c31-89ab-4597-8e2b-9c9cab440e6b")
-  GUID_PROCESSOR_IDLE_DEMOTE_THRESHOLD* = DEFINE_GUID("4b92d758-5a24-4851-a470-815d78aee119")
-  GUID_PROCESSOR_IDLE_PROMOTE_THRESHOLD* = DEFINE_GUID("7b224883-b3cc-4d79-819f-8374152cbe7c")
-  GUID_PROCESSOR_CORE_PARKING_INCREASE_THRESHOLD* = DEFINE_GUID("df142941-20f3-4edf-9a4a-9c83d3d717d1")
-  GUID_PROCESSOR_CORE_PARKING_DECREASE_THRESHOLD* = DEFINE_GUID("68dd2f27-a4ce-4e11-8487-3794e4135dfa")
-  GUID_PROCESSOR_CORE_PARKING_INCREASE_POLICY* = DEFINE_GUID("c7be0679-2817-4d69-9d02-519a537ed0c6")
-  GUID_PROCESSOR_CORE_PARKING_DECREASE_POLICY* = DEFINE_GUID("71021b41-c749-4d21-be74-a00f335d582b")
-  GUID_PROCESSOR_CORE_PARKING_MAX_CORES* = DEFINE_GUID("ea062031-0e34-4ff1-9b6d-eb1059334028")
-  GUID_PROCESSOR_CORE_PARKING_MIN_CORES* = DEFINE_GUID("0cc5b647-c1df-4637-891a-dec35c318583")
-  GUID_PROCESSOR_CORE_PARKING_INCREASE_TIME* = DEFINE_GUID("2ddd5a84-5a71-437e-912a-db0b8c788732")
-  GUID_PROCESSOR_CORE_PARKING_DECREASE_TIME* = DEFINE_GUID("dfd10d17-d5eb-45dd-877a-9a34ddd15c82")
-  GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_DECREASE_FACTOR* = DEFINE_GUID("8f7b45e3-c393-480a-878c-f67ac3d07082")
-  GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_THRESHOLD* = DEFINE_GUID("5b33697b-e89d-4d38-aa46-9e7dfb7cd2f9")
-  GUID_PROCESSOR_CORE_PARKING_AFFINITY_WEIGHTING* = DEFINE_GUID("e70867f1-fa2f-4f4e-aea1-4d8a0ba23b20")
-  GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_DECREASE_FACTOR* = DEFINE_GUID("1299023c-bc28-4f0a-81ec-d3295a8d815d")
-  GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_THRESHOLD* = DEFINE_GUID("9ac18e92-aa3c-4e27-b307-01ae37307129")
-  GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_WEIGHTING* = DEFINE_GUID("8809c2d8-b155-42d4-bcda-0d345651b1db")
-  GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_THRESHOLD* = DEFINE_GUID("943c8cb6-6f93-4227-ad87-e9a3feec08d1")
-  GUID_PROCESSOR_PARKING_CORE_OVERRIDE* = DEFINE_GUID("a55612aa-f624-42c6-a443-7397d064c04f")
-  GUID_PROCESSOR_PARKING_PERF_STATE* = DEFINE_GUID("447235c7-6a8d-4cc0-8e24-9eaf70b96e2b")
-  GUID_PROCESSOR_PARKING_CONCURRENCY_THRESHOLD* = DEFINE_GUID("2430ab6f-a520-44a2-9601-f7f23b5134b1")
-  GUID_PROCESSOR_PARKING_HEADROOM_THRESHOLD* = DEFINE_GUID("f735a673-2066-4f80-a0c5-ddee0cf1bf5d")
+  GUID_PROCESSOR_IDLE_DEMOTE_THRESHOLD* =
+    DEFINE_GUID("4b92d758-5a24-4851-a470-815d78aee119")
+  GUID_PROCESSOR_IDLE_PROMOTE_THRESHOLD* =
+    DEFINE_GUID("7b224883-b3cc-4d79-819f-8374152cbe7c")
+  GUID_PROCESSOR_CORE_PARKING_INCREASE_THRESHOLD* =
+    DEFINE_GUID("df142941-20f3-4edf-9a4a-9c83d3d717d1")
+  GUID_PROCESSOR_CORE_PARKING_DECREASE_THRESHOLD* =
+    DEFINE_GUID("68dd2f27-a4ce-4e11-8487-3794e4135dfa")
+  GUID_PROCESSOR_CORE_PARKING_INCREASE_POLICY* =
+    DEFINE_GUID("c7be0679-2817-4d69-9d02-519a537ed0c6")
+  GUID_PROCESSOR_CORE_PARKING_DECREASE_POLICY* =
+    DEFINE_GUID("71021b41-c749-4d21-be74-a00f335d582b")
+  GUID_PROCESSOR_CORE_PARKING_MAX_CORES* =
+    DEFINE_GUID("ea062031-0e34-4ff1-9b6d-eb1059334028")
+  GUID_PROCESSOR_CORE_PARKING_MIN_CORES* =
+    DEFINE_GUID("0cc5b647-c1df-4637-891a-dec35c318583")
+  GUID_PROCESSOR_CORE_PARKING_INCREASE_TIME* =
+    DEFINE_GUID("2ddd5a84-5a71-437e-912a-db0b8c788732")
+  GUID_PROCESSOR_CORE_PARKING_DECREASE_TIME* =
+    DEFINE_GUID("dfd10d17-d5eb-45dd-877a-9a34ddd15c82")
+  GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_DECREASE_FACTOR* =
+    DEFINE_GUID("8f7b45e3-c393-480a-878c-f67ac3d07082")
+  GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_THRESHOLD* =
+    DEFINE_GUID("5b33697b-e89d-4d38-aa46-9e7dfb7cd2f9")
+  GUID_PROCESSOR_CORE_PARKING_AFFINITY_WEIGHTING* =
+    DEFINE_GUID("e70867f1-fa2f-4f4e-aea1-4d8a0ba23b20")
+  GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_DECREASE_FACTOR* =
+    DEFINE_GUID("1299023c-bc28-4f0a-81ec-d3295a8d815d")
+  GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_THRESHOLD* =
+    DEFINE_GUID("9ac18e92-aa3c-4e27-b307-01ae37307129")
+  GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_WEIGHTING* =
+    DEFINE_GUID("8809c2d8-b155-42d4-bcda-0d345651b1db")
+  GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_THRESHOLD* =
+    DEFINE_GUID("943c8cb6-6f93-4227-ad87-e9a3feec08d1")
+  GUID_PROCESSOR_PARKING_CORE_OVERRIDE* =
+    DEFINE_GUID("a55612aa-f624-42c6-a443-7397d064c04f")
+  GUID_PROCESSOR_PARKING_PERF_STATE* =
+    DEFINE_GUID("447235c7-6a8d-4cc0-8e24-9eaf70b96e2b")
+  GUID_PROCESSOR_PARKING_CONCURRENCY_THRESHOLD* =
+    DEFINE_GUID("2430ab6f-a520-44a2-9601-f7f23b5134b1")
+  GUID_PROCESSOR_PARKING_HEADROOM_THRESHOLD* =
+    DEFINE_GUID("f735a673-2066-4f80-a0c5-ddee0cf1bf5d")
   GUID_PROCESSOR_PERF_HISTORY* = DEFINE_GUID("7d24baa7-0b84-480f-840c-1b0743c00f5f")
-  GUID_PROCESSOR_PERF_LATENCY_HINT* = DEFINE_GUID("0822df31-9c83-441c-a079-0de4cf009c7b")
-  GUID_PROCESSOR_DISTRIBUTE_UTILITY* = DEFINE_GUID("e0007330-f589-42ed-a401-5ddb10e785d3")
+  GUID_PROCESSOR_PERF_LATENCY_HINT* =
+    DEFINE_GUID("0822df31-9c83-441c-a079-0de4cf009c7b")
+  GUID_PROCESSOR_DISTRIBUTE_UTILITY* =
+    DEFINE_GUID("e0007330-f589-42ed-a401-5ddb10e785d3")
   GUID_SYSTEM_COOLING_POLICY* = DEFINE_GUID("94d3a615-a899-4ac5-ae2b-e4d8f634367f")
   GUID_LOCK_CONSOLE_ON_WAKE* = DEFINE_GUID("0e796bdb-100d-47d6-a2d5-f7d2daa51f51")
   GUID_DEVICE_IDLE_POLICY* = DEFINE_GUID("4faab71a-92e5-4726-b531-224559672d19")
   GUID_ACDC_POWER_SOURCE* = DEFINE_GUID("5d3e9a59-e9d5-4b00-a6bd-ff34ff516548")
   GUID_LIDSWITCH_STATE_CHANGE* = DEFINE_GUID("ba3e0f4d-b817-4094-a2d1-d56379e6a0f3")
-  GUID_BATTERY_PERCENTAGE_REMAINING* = DEFINE_GUID("a7ad8041-b45a-4cae-87a3-eecbb468a9e1")
+  GUID_BATTERY_PERCENTAGE_REMAINING* =
+    DEFINE_GUID("a7ad8041-b45a-4cae-87a3-eecbb468a9e1")
   GUID_GLOBAL_USER_PRESENCE* = DEFINE_GUID("786e8a1d-b427-4344-9207-09e70bdcbea9")
   GUID_SESSION_DISPLAY_STATUS* = DEFINE_GUID("2b84c20e-ad23-4ddf-93db-05ffbd7efca5")
   GUID_SESSION_USER_PRESENCE* = DEFINE_GUID("3c0f4548-c03f-4c4d-b9f2-237ede686376")
   GUID_IDLE_BACKGROUND_TASK* = DEFINE_GUID("515c31d8-f734-163d-a0fd-11a08c91e8f1")
-  GUID_BACKGROUND_TASK_NOTIFICATION* = DEFINE_GUID("cf23f240-2a54-48d8-b114-de1518ff052e")
+  GUID_BACKGROUND_TASK_NOTIFICATION* =
+    DEFINE_GUID("cf23f240-2a54-48d8-b114-de1518ff052e")
   GUID_APPLAUNCH_BUTTON* = DEFINE_GUID("1a689231-7399-4e9a-8f99-b71f999db3fa")
-  GUID_PCIEXPRESS_SETTINGS_SUBGROUP* = DEFINE_GUID("501a4d13-42af-4429-9fd1-a8218c268e20")
+  GUID_PCIEXPRESS_SETTINGS_SUBGROUP* =
+    DEFINE_GUID("501a4d13-42af-4429-9fd1-a8218c268e20")
   GUID_PCIEXPRESS_ASPM_POLICY* = DEFINE_GUID("ee12f906-d277-404b-b6da-e5fa1a576df5")
-  GUID_ENABLE_SWITCH_FORCED_SHUTDOWN* = DEFINE_GUID("833a6b62-dfa4-46d1-82f8-e09e34d029d6")
+  GUID_ENABLE_SWITCH_FORCED_SHUTDOWN* =
+    DEFINE_GUID("833a6b62-dfa4-46d1-82f8-e09e34d029d6")
   powerSystemUnspecified* = 0
   powerSystemWorking* = 1
   powerSystemSleeping1* = 2
@@ -7596,9 +8199,9 @@
   platformRoleSlate* = 8
   platformRoleMaximum* = 9
   POWER_PLATFORM_ROLE_V1* = 0x00000001
-  POWER_PLATFORM_ROLE_V1_MAX* = platformRolePerformanceServer+1
+  POWER_PLATFORM_ROLE_V1_MAX* = platformRolePerformanceServer + 1
   POWER_PLATFORM_ROLE_V2* = 0x00000002
-  POWER_PLATFORM_ROLE_V2_MAX* = platformRoleSlate+1
+  POWER_PLATFORM_ROLE_V2_MAX* = platformRoleSlate + 1
   POWER_PLATFORM_ROLE_VERSION* = POWER_PLATFORM_ROLE_V2
   POWER_PLATFORM_ROLE_VERSION_MAX* = POWER_PLATFORM_ROLE_V2_MAX
   ACPI_PPM_SOFTWARE_ALL* = 0xfc
@@ -7633,7 +8236,8 @@
   PPM_IDLE_IMPLEMENTATION_CSTATES* = 0x1
   PPM_IDLE_IMPLEMENTATION_PEP* = 0x2
   PPM_PERFSTATE_CHANGE_GUID* = DEFINE_GUID("a5b32ddd-7f39-4abc-b892-900e43b59ebb")
-  PPM_PERFSTATE_DOMAIN_CHANGE_GUID* = DEFINE_GUID("995e6b7f-d653-497a-b978-36a30c29bf01")
+  PPM_PERFSTATE_DOMAIN_CHANGE_GUID* =
+    DEFINE_GUID("995e6b7f-d653-497a-b978-36a30c29bf01")
   PPM_IDLESTATE_CHANGE_GUID* = DEFINE_GUID("4838fe4f-f71c-4e51-9ecc-8430a7ac4c6c")
   PPM_PERFSTATES_DATA_GUID* = DEFINE_GUID("5708cc20-7d40-4bf4-b4aa-2b01338d0126")
   PPM_IDLESTATES_DATA_GUID* = DEFINE_GUID("ba138e10-e250-4ad7-8616-cf1a7ad410e7")
@@ -8308,7 +8912,8 @@
   SEF_MACL_NO_READ_UP* = 0x200
   SEF_MACL_NO_EXECUTE_UP* = 0x400
   SEF_AVOID_OWNER_RESTRICTION* = 0x1000
-  SEF_MACL_VALID_FLAGS* = SEF_MACL_NO_WRITE_UP or SEF_MACL_NO_READ_UP or SEF_MACL_NO_EXECUTE_UP
+  SEF_MACL_VALID_FLAGS* =
+    SEF_MACL_NO_WRITE_UP or SEF_MACL_NO_READ_UP or SEF_MACL_NO_EXECUTE_UP
   MESSAGE_RESOURCE_UNICODE* = 0x0001
   VER_EQUAL* = 1
   VER_GREATER* = 2
@@ -8359,7 +8964,14 @@
   RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE* = 0x08000000
   RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO* = 0x10000000
   RTL_CRITICAL_SECTION_ALL_FLAG_BITS* = 0xff000000'i32
-  RTL_CRITICAL_SECTION_FLAG_RESERVED* = RTL_CRITICAL_SECTION_ALL_FLAG_BITS and (not (RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO or RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN or RTL_CRITICAL_SECTION_FLAG_STATIC_INIT or RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE or RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO))
+  RTL_CRITICAL_SECTION_FLAG_RESERVED* =
+    RTL_CRITICAL_SECTION_ALL_FLAG_BITS and (
+      not (
+        RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO or RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN or
+        RTL_CRITICAL_SECTION_FLAG_STATIC_INIT or RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE or
+        RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
+      )
+    )
   RTL_CRITICAL_SECTION_DEBUG_FLAG_STATIC_INIT* = 0x00000001
   RTL_SRWLOCK_INIT* = [0'u8]
   RTL_CONDITION_VARIABLE_INIT* = [0'u8]
@@ -8528,17 +9140,26 @@
   KEY_WOW64_64KEY* = 0x0100
   KEY_WOW64_32KEY* = 0x0200
   KEY_WOW64_RES* = 0x0300
-  KEY_READ* = (STANDARD_RIGHTS_READ or KEY_QUERY_VALUE or KEY_ENUMERATE_SUB_KEYS or KEY_NOTIFY) and (not SYNCHRONIZE)
-  KEY_WRITE* = (STANDARD_RIGHTS_WRITE or KEY_SET_VALUE or KEY_CREATE_SUB_KEY) and (not SYNCHRONIZE)
+  KEY_READ* =
+    (STANDARD_RIGHTS_READ or KEY_QUERY_VALUE or KEY_ENUMERATE_SUB_KEYS or KEY_NOTIFY) and
+    (not SYNCHRONIZE)
+  KEY_WRITE* =
+    (STANDARD_RIGHTS_WRITE or KEY_SET_VALUE or KEY_CREATE_SUB_KEY) and (not SYNCHRONIZE)
   KEY_EXECUTE* = (KEY_READ) and (not SYNCHRONIZE)
-  KEY_ALL_ACCESS* = (STANDARD_RIGHTS_ALL or KEY_QUERY_VALUE or KEY_SET_VALUE or KEY_CREATE_SUB_KEY or KEY_ENUMERATE_SUB_KEYS or KEY_NOTIFY or KEY_CREATE_LINK) and (not SYNCHRONIZE)
+  KEY_ALL_ACCESS* =
+    (
+      STANDARD_RIGHTS_ALL or KEY_QUERY_VALUE or KEY_SET_VALUE or KEY_CREATE_SUB_KEY or
+      KEY_ENUMERATE_SUB_KEYS or KEY_NOTIFY or KEY_CREATE_LINK
+    ) and (not SYNCHRONIZE)
   REG_OPTION_RESERVED* = 0x00000000
   REG_OPTION_NON_VOLATILE* = 0x00000000
   REG_OPTION_VOLATILE* = 0x00000001
   REG_OPTION_CREATE_LINK* = 0x00000002
   REG_OPTION_BACKUP_RESTORE* = 0x00000004
   REG_OPTION_OPEN_LINK* = 0x00000008
-  REG_LEGAL_OPTION* = REG_OPTION_RESERVED or REG_OPTION_NON_VOLATILE or REG_OPTION_VOLATILE or REG_OPTION_CREATE_LINK or REG_OPTION_BACKUP_RESTORE or REG_OPTION_OPEN_LINK
+  REG_LEGAL_OPTION* =
+    REG_OPTION_RESERVED or REG_OPTION_NON_VOLATILE or REG_OPTION_VOLATILE or
+    REG_OPTION_CREATE_LINK or REG_OPTION_BACKUP_RESTORE or REG_OPTION_OPEN_LINK
   REG_CREATED_NEW_KEY* = 0x00000001
   REG_OPENED_EXISTING_KEY* = 0x00000002
   REG_STANDARD_FORMAT* = 1
@@ -8561,7 +9182,9 @@
   REG_NOTIFY_CHANGE_LAST_SET* = 0x00000004
   REG_NOTIFY_CHANGE_SECURITY* = 0x00000008
   REG_NOTIFY_THREAD_AGNOSTIC* = 0x10000000
-  REG_LEGAL_CHANGE_FILTER* = REG_NOTIFY_CHANGE_NAME or REG_NOTIFY_CHANGE_ATTRIBUTES or REG_NOTIFY_CHANGE_LAST_SET or REG_NOTIFY_CHANGE_SECURITY or REG_NOTIFY_THREAD_AGNOSTIC
+  REG_LEGAL_CHANGE_FILTER* =
+    REG_NOTIFY_CHANGE_NAME or REG_NOTIFY_CHANGE_ATTRIBUTES or REG_NOTIFY_CHANGE_LAST_SET or
+    REG_NOTIFY_CHANGE_SECURITY or REG_NOTIFY_THREAD_AGNOSTIC
   REG_NONE* = 0
   REG_SZ* = 1
   REG_EXPAND_SZ* = 2
@@ -8580,12 +9203,14 @@
   SERVICE_FILE_SYSTEM_DRIVER* = 0x00000002
   SERVICE_ADAPTER* = 0x00000004
   SERVICE_RECOGNIZER_DRIVER* = 0x00000008
-  SERVICE_DRIVER* = SERVICE_KERNEL_DRIVER or SERVICE_FILE_SYSTEM_DRIVER or SERVICE_RECOGNIZER_DRIVER
+  SERVICE_DRIVER* =
+    SERVICE_KERNEL_DRIVER or SERVICE_FILE_SYSTEM_DRIVER or SERVICE_RECOGNIZER_DRIVER
   SERVICE_WIN32_OWN_PROCESS* = 0x00000010
   SERVICE_WIN32_SHARE_PROCESS* = 0x00000020
   SERVICE_WIN32* = SERVICE_WIN32_OWN_PROCESS or SERVICE_WIN32_SHARE_PROCESS
   SERVICE_INTERACTIVE_PROCESS* = 0x00000100
-  SERVICE_TYPE_ALL* = SERVICE_WIN32 or SERVICE_ADAPTER or SERVICE_DRIVER or SERVICE_INTERACTIVE_PROCESS
+  SERVICE_TYPE_ALL* =
+    SERVICE_WIN32 or SERVICE_ADAPTER or SERVICE_DRIVER or SERVICE_INTERACTIVE_PROCESS
   SERVICE_BOOT_START* = 0x00000000
   SERVICE_SYSTEM_START* = 0x00000001
   SERVICE_AUTO_START* = 0x00000002
@@ -8618,7 +9243,11 @@
   CM_SERVICE_MEASURED_BOOT_LOAD* = 0x00000020
   CM_SERVICE_VERIFIER_BOOT_LOAD* = 0x00000040
   CM_SERVICE_WINPE_BOOT_LOAD* = 0x00000080
-  CM_SERVICE_VALID_PROMOTION_MASK* = CM_SERVICE_NETWORK_BOOT_LOAD or CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD or CM_SERVICE_USB_DISK_BOOT_LOAD or CM_SERVICE_SD_DISK_BOOT_LOAD or CM_SERVICE_USB3_DISK_BOOT_LOAD or CM_SERVICE_MEASURED_BOOT_LOAD or CM_SERVICE_VERIFIER_BOOT_LOAD or CM_SERVICE_WINPE_BOOT_LOAD
+  CM_SERVICE_VALID_PROMOTION_MASK* =
+    CM_SERVICE_NETWORK_BOOT_LOAD or CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD or
+    CM_SERVICE_USB_DISK_BOOT_LOAD or CM_SERVICE_SD_DISK_BOOT_LOAD or
+    CM_SERVICE_USB3_DISK_BOOT_LOAD or CM_SERVICE_MEASURED_BOOT_LOAD or
+    CM_SERVICE_VERIFIER_BOOT_LOAD or CM_SERVICE_WINPE_BOOT_LOAD
   TAPE_ERASE_SHORT* = 0
   TAPE_ERASE_LONG* = 1
   TAPE_LOAD* = 0
@@ -8786,10 +9415,17 @@
   TRANSACTIONMANAGER_RENAME* = 0x00008
   TRANSACTIONMANAGER_CREATE_RM* = 0x00010
   TRANSACTIONMANAGER_BIND_TRANSACTION* = 0x00020
-  TRANSACTIONMANAGER_GENERIC_READ* = STANDARD_RIGHTS_READ or TRANSACTIONMANAGER_QUERY_INFORMATION
-  TRANSACTIONMANAGER_GENERIC_WRITE* = STANDARD_RIGHTS_WRITE or TRANSACTIONMANAGER_SET_INFORMATION or TRANSACTIONMANAGER_RECOVER or TRANSACTIONMANAGER_RENAME or TRANSACTIONMANAGER_CREATE_RM
+  TRANSACTIONMANAGER_GENERIC_READ* =
+    STANDARD_RIGHTS_READ or TRANSACTIONMANAGER_QUERY_INFORMATION
+  TRANSACTIONMANAGER_GENERIC_WRITE* =
+    STANDARD_RIGHTS_WRITE or TRANSACTIONMANAGER_SET_INFORMATION or
+    TRANSACTIONMANAGER_RECOVER or TRANSACTIONMANAGER_RENAME or
+    TRANSACTIONMANAGER_CREATE_RM
   TRANSACTIONMANAGER_GENERIC_EXECUTE* = STANDARD_RIGHTS_EXECUTE
-  TRANSACTIONMANAGER_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or TRANSACTIONMANAGER_GENERIC_READ or TRANSACTIONMANAGER_GENERIC_WRITE or TRANSACTIONMANAGER_GENERIC_EXECUTE or TRANSACTIONMANAGER_BIND_TRANSACTION
+  TRANSACTIONMANAGER_ALL_ACCESS* =
+    STANDARD_RIGHTS_REQUIRED or TRANSACTIONMANAGER_GENERIC_READ or
+    TRANSACTIONMANAGER_GENERIC_WRITE or TRANSACTIONMANAGER_GENERIC_EXECUTE or
+    TRANSACTIONMANAGER_BIND_TRANSACTION
   TRANSACTION_QUERY_INFORMATION* = 0x0001
   TRANSACTION_SET_INFORMATION* = 0x0002
   TRANSACTION_ENLIST* = 0x0004
@@ -8797,11 +9433,19 @@
   TRANSACTION_ROLLBACK* = 0x0010
   TRANSACTION_PROPAGATE* = 0x0020
   TRANSACTION_RIGHT_RESERVED1* = 0x0040
-  TRANSACTION_GENERIC_READ* = STANDARD_RIGHTS_READ or TRANSACTION_QUERY_INFORMATION or SYNCHRONIZE
-  TRANSACTION_GENERIC_WRITE* = STANDARD_RIGHTS_WRITE or TRANSACTION_SET_INFORMATION or TRANSACTION_COMMIT or TRANSACTION_ENLIST or TRANSACTION_ROLLBACK or TRANSACTION_PROPAGATE or SYNCHRONIZE
-  TRANSACTION_GENERIC_EXECUTE* = STANDARD_RIGHTS_EXECUTE or TRANSACTION_COMMIT or TRANSACTION_ROLLBACK or SYNCHRONIZE
-  TRANSACTION_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or TRANSACTION_GENERIC_READ or TRANSACTION_GENERIC_WRITE or TRANSACTION_GENERIC_EXECUTE
-  TRANSACTION_RESOURCE_MANAGER_RIGHTS* = TRANSACTION_GENERIC_READ or STANDARD_RIGHTS_WRITE or TRANSACTION_SET_INFORMATION or TRANSACTION_ENLIST or TRANSACTION_ROLLBACK or TRANSACTION_PROPAGATE or SYNCHRONIZE
+  TRANSACTION_GENERIC_READ* =
+    STANDARD_RIGHTS_READ or TRANSACTION_QUERY_INFORMATION or SYNCHRONIZE
+  TRANSACTION_GENERIC_WRITE* =
+    STANDARD_RIGHTS_WRITE or TRANSACTION_SET_INFORMATION or TRANSACTION_COMMIT or
+    TRANSACTION_ENLIST or TRANSACTION_ROLLBACK or TRANSACTION_PROPAGATE or SYNCHRONIZE
+  TRANSACTION_GENERIC_EXECUTE* =
+    STANDARD_RIGHTS_EXECUTE or TRANSACTION_COMMIT or TRANSACTION_ROLLBACK or SYNCHRONIZE
+  TRANSACTION_ALL_ACCESS* =
+    STANDARD_RIGHTS_REQUIRED or TRANSACTION_GENERIC_READ or TRANSACTION_GENERIC_WRITE or
+    TRANSACTION_GENERIC_EXECUTE
+  TRANSACTION_RESOURCE_MANAGER_RIGHTS* =
+    TRANSACTION_GENERIC_READ or STANDARD_RIGHTS_WRITE or TRANSACTION_SET_INFORMATION or
+    TRANSACTION_ENLIST or TRANSACTION_ROLLBACK or TRANSACTION_PROPAGATE or SYNCHRONIZE
   RESOURCEMANAGER_QUERY_INFORMATION* = 0x0001
   RESOURCEMANAGER_SET_INFORMATION* = 0x0002
   RESOURCEMANAGER_RECOVER* = 0x0004
@@ -8809,19 +9453,35 @@
   RESOURCEMANAGER_GET_NOTIFICATION* = 0x0010
   RESOURCEMANAGER_REGISTER_PROTOCOL* = 0x0020
   RESOURCEMANAGER_COMPLETE_PROPAGATION* = 0x0040
-  RESOURCEMANAGER_GENERIC_READ* = STANDARD_RIGHTS_READ or RESOURCEMANAGER_QUERY_INFORMATION or SYNCHRONIZE
-  RESOURCEMANAGER_GENERIC_WRITE* = STANDARD_RIGHTS_WRITE or RESOURCEMANAGER_SET_INFORMATION or RESOURCEMANAGER_RECOVER or RESOURCEMANAGER_ENLIST or RESOURCEMANAGER_GET_NOTIFICATION or RESOURCEMANAGER_REGISTER_PROTOCOL or RESOURCEMANAGER_COMPLETE_PROPAGATION or SYNCHRONIZE
-  RESOURCEMANAGER_GENERIC_EXECUTE* = STANDARD_RIGHTS_EXECUTE or RESOURCEMANAGER_RECOVER or RESOURCEMANAGER_ENLIST or RESOURCEMANAGER_GET_NOTIFICATION or RESOURCEMANAGER_COMPLETE_PROPAGATION or SYNCHRONIZE
-  RESOURCEMANAGER_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or RESOURCEMANAGER_GENERIC_READ or RESOURCEMANAGER_GENERIC_WRITE or RESOURCEMANAGER_GENERIC_EXECUTE
+  RESOURCEMANAGER_GENERIC_READ* =
+    STANDARD_RIGHTS_READ or RESOURCEMANAGER_QUERY_INFORMATION or SYNCHRONIZE
+  RESOURCEMANAGER_GENERIC_WRITE* =
+    STANDARD_RIGHTS_WRITE or RESOURCEMANAGER_SET_INFORMATION or RESOURCEMANAGER_RECOVER or
+    RESOURCEMANAGER_ENLIST or RESOURCEMANAGER_GET_NOTIFICATION or
+    RESOURCEMANAGER_REGISTER_PROTOCOL or RESOURCEMANAGER_COMPLETE_PROPAGATION or
+    SYNCHRONIZE
+  RESOURCEMANAGER_GENERIC_EXECUTE* =
+    STANDARD_RIGHTS_EXECUTE or RESOURCEMANAGER_RECOVER or RESOURCEMANAGER_ENLIST or
+    RESOURCEMANAGER_GET_NOTIFICATION or RESOURCEMANAGER_COMPLETE_PROPAGATION or
+    SYNCHRONIZE
+  RESOURCEMANAGER_ALL_ACCESS* =
+    STANDARD_RIGHTS_REQUIRED or RESOURCEMANAGER_GENERIC_READ or
+    RESOURCEMANAGER_GENERIC_WRITE or RESOURCEMANAGER_GENERIC_EXECUTE
   ENLISTMENT_QUERY_INFORMATION* = 1
   ENLISTMENT_SET_INFORMATION* = 2
   ENLISTMENT_RECOVER* = 4
   ENLISTMENT_SUBORDINATE_RIGHTS* = 8
   ENLISTMENT_SUPERIOR_RIGHTS* = 0x10
   ENLISTMENT_GENERIC_READ* = STANDARD_RIGHTS_READ or ENLISTMENT_QUERY_INFORMATION
-  ENLISTMENT_GENERIC_WRITE* = STANDARD_RIGHTS_WRITE or ENLISTMENT_SET_INFORMATION or ENLISTMENT_RECOVER or ENLISTMENT_SUBORDINATE_RIGHTS or ENLISTMENT_SUPERIOR_RIGHTS
-  ENLISTMENT_GENERIC_EXECUTE* = STANDARD_RIGHTS_EXECUTE or ENLISTMENT_RECOVER or ENLISTMENT_SUBORDINATE_RIGHTS or ENLISTMENT_SUPERIOR_RIGHTS
-  ENLISTMENT_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or ENLISTMENT_GENERIC_READ or ENLISTMENT_GENERIC_WRITE or ENLISTMENT_GENERIC_EXECUTE
+  ENLISTMENT_GENERIC_WRITE* =
+    STANDARD_RIGHTS_WRITE or ENLISTMENT_SET_INFORMATION or ENLISTMENT_RECOVER or
+    ENLISTMENT_SUBORDINATE_RIGHTS or ENLISTMENT_SUPERIOR_RIGHTS
+  ENLISTMENT_GENERIC_EXECUTE* =
+    STANDARD_RIGHTS_EXECUTE or ENLISTMENT_RECOVER or ENLISTMENT_SUBORDINATE_RIGHTS or
+    ENLISTMENT_SUPERIOR_RIGHTS
+  ENLISTMENT_ALL_ACCESS* =
+    STANDARD_RIGHTS_REQUIRED or ENLISTMENT_GENERIC_READ or ENLISTMENT_GENERIC_WRITE or
+    ENLISTMENT_GENERIC_EXECUTE
   transactionOutcomeUndetermined* = 1
   transactionOutcomeCommitted* = 2
   transactionOutcomeAborted* = 3
@@ -8858,8 +9518,12 @@
   WOW64_CONTEXT_FLOATING_POINT* = WOW64_CONTEXT_i386 or 0x00000008
   WOW64_CONTEXT_DEBUG_REGISTERS* = WOW64_CONTEXT_i386 or 0x00000010
   WOW64_CONTEXT_EXTENDED_REGISTERS* = WOW64_CONTEXT_i386 or 0x00000020
-  WOW64_CONTEXT_FULL* = WOW64_CONTEXT_CONTROL or WOW64_CONTEXT_INTEGER or WOW64_CONTEXT_SEGMENTS
-  WOW64_CONTEXT_ALL* = WOW64_CONTEXT_CONTROL or WOW64_CONTEXT_INTEGER or WOW64_CONTEXT_SEGMENTS or WOW64_CONTEXT_FLOATING_POINT or WOW64_CONTEXT_DEBUG_REGISTERS or WOW64_CONTEXT_EXTENDED_REGISTERS
+  WOW64_CONTEXT_FULL* =
+    WOW64_CONTEXT_CONTROL or WOW64_CONTEXT_INTEGER or WOW64_CONTEXT_SEGMENTS
+  WOW64_CONTEXT_ALL* =
+    WOW64_CONTEXT_CONTROL or WOW64_CONTEXT_INTEGER or WOW64_CONTEXT_SEGMENTS or
+    WOW64_CONTEXT_FLOATING_POINT or WOW64_CONTEXT_DEBUG_REGISTERS or
+    WOW64_CONTEXT_EXTENDED_REGISTERS
   WOW64_CONTEXT_XSTATE* = WOW64_CONTEXT_i386 or 0x00000040
   WOW64_CONTEXT_EXCEPTION_ACTIVE* = 0x08000000
   WOW64_CONTEXT_SERVICE_ACTIVE* = 0x10000000
@@ -9098,34 +9762,58 @@
   NETWORKSERVICE_LUID* = LUID(LowPart: 0x3e4, HighPart: 0x0)
   IUSER_LUID* = LUID(LowPart: 0x3e3, HighPart: 0x0)
   SERVERNAME_CURRENT* = HANDLE 0
-  TRANSACTIONMANAGER_OBJECT_NAME_LENGTH_IN_BYTES* = (len(TRANSACTIONMANAGER_OBJECT_PATH)+1)+(38*sizeof(WCHAR))
-  TRANSACTION_OBJECT_NAME_LENGTH_IN_BYTES* = (len(TRANSACTION_OBJECT_PATH)+1)+(38*sizeof(WCHAR))
-  ENLISTMENT_OBJECT_NAME_LENGTH_IN_BYTES* = (len(ENLISTMENT_OBJECT_PATH)+1)+(38*sizeof(WCHAR))
-  RESOURCE_MANAGER_OBJECT_NAME_LENGTH_IN_BYTES* = (len(RESOURCE_MANAGER_OBJECT_PATH)+1)+(38*sizeof(WCHAR))
+  TRANSACTIONMANAGER_OBJECT_NAME_LENGTH_IN_BYTES* =
+    (len(TRANSACTIONMANAGER_OBJECT_PATH) + 1) + (38 * sizeof(WCHAR))
+  TRANSACTION_OBJECT_NAME_LENGTH_IN_BYTES* =
+    (len(TRANSACTION_OBJECT_PATH) + 1) + (38 * sizeof(WCHAR))
+  ENLISTMENT_OBJECT_NAME_LENGTH_IN_BYTES* =
+    (len(ENLISTMENT_OBJECT_PATH) + 1) + (38 * sizeof(WCHAR))
+  RESOURCE_MANAGER_OBJECT_NAME_LENGTH_IN_BYTES* =
+    (len(RESOURCE_MANAGER_OBJECT_PATH) + 1) + (38 * sizeof(WCHAR))
   IMAGE_SYM_CLASS_END_OF_FUNCTION* = not BYTE(0)
 type
-  PHNDLR* = proc (P1: int32): void {.stdcall.}
-  PEXCEPTION_HANDLER* = proc (P1: ptr EXCEPTION_RECORD, P2: pointer, P3: ptr CONTEXT, P4: pointer): EXCEPTION_DISPOSITION {.stdcall.}
-  PIMAGE_TLS_CALLBACK* = proc (DllHandle: PVOID, Reason: DWORD, Reserved: PVOID): VOID {.stdcall.}
-  PRTL_RUN_ONCE_INIT_FN* = proc (P1: PRTL_RUN_ONCE, P2: PVOID, P3: ptr PVOID): DWORD {.stdcall.}
-  PAPCFUNC* = proc (Parameter: ULONG_PTR): VOID {.stdcall.}
-  PVECTORED_EXCEPTION_HANDLER* = proc (ExceptionInfo: ptr EXCEPTION_POINTERS): LONG {.stdcall.}
-  WORKERCALLBACKFUNC* = proc (P1: PVOID): VOID {.stdcall.}
-  APC_CALLBACK_FUNCTION* = proc (P1: DWORD, P2: PVOID, P3: PVOID): VOID {.stdcall.}
-  PFLS_CALLBACK_FUNCTION* = proc (lpFlsData: PVOID): VOID {.stdcall.}
-  PSECURE_MEMORY_CACHE_CALLBACK* = proc (Addr: PVOID, Range: SIZE_T): BOOLEAN {.stdcall.}
-  PTP_WORK_CALLBACK* = proc (Instance: PTP_CALLBACK_INSTANCE, Context: PVOID, Work: PTP_WORK): VOID {.stdcall.}
-  PTP_TIMER_CALLBACK* = proc (Instance: PTP_CALLBACK_INSTANCE, Context: PVOID, Timer: PTP_TIMER): VOID {.stdcall.}
-  PTP_WAIT_CALLBACK* = proc (Instance: PTP_CALLBACK_INSTANCE, Context: PVOID, Wait: PTP_WAIT, WaitResult: TP_WAIT_RESULT): VOID {.stdcall.}
-  PIO_APC_ROUTINE* = proc (ApcContext: PVOID, IoStatusBlock: PIO_STATUS_BLOCK, Reserved: ULONG): VOID {.stdcall.}
-  PWINSTATIONQUERYINFORMATIONW* = proc (P1: HANDLE, P2: ULONG, P3: WINSTATIONINFOCLASS, P4: PVOID, P5: ULONG, P6: PULONG): BOOLEAN {.stdcall.}
+  PHNDLR* = proc(P1: int32): void {.stdcall.}
+  PEXCEPTION_HANDLER* = proc(
+    P1: ptr EXCEPTION_RECORD, P2: pointer, P3: ptr CONTEXT, P4: pointer
+  ): EXCEPTION_DISPOSITION {.stdcall.}
+  PIMAGE_TLS_CALLBACK* =
+    proc(DllHandle: PVOID, Reason: DWORD, Reserved: PVOID): VOID {.stdcall.}
+  PRTL_RUN_ONCE_INIT_FN* =
+    proc(P1: PRTL_RUN_ONCE, P2: PVOID, P3: ptr PVOID): DWORD {.stdcall.}
+  PAPCFUNC* = proc(Parameter: ULONG_PTR): VOID {.stdcall.}
+  PVECTORED_EXCEPTION_HANDLER* =
+    proc(ExceptionInfo: ptr EXCEPTION_POINTERS): LONG {.stdcall.}
+  WORKERCALLBACKFUNC* = proc(P1: PVOID): VOID {.stdcall.}
+  APC_CALLBACK_FUNCTION* = proc(P1: DWORD, P2: PVOID, P3: PVOID): VOID {.stdcall.}
+  PFLS_CALLBACK_FUNCTION* = proc(lpFlsData: PVOID): VOID {.stdcall.}
+  PSECURE_MEMORY_CACHE_CALLBACK* = proc(Addr: PVOID, Range: SIZE_T): BOOLEAN {.stdcall.}
+  PTP_WORK_CALLBACK* = proc(
+    Instance: PTP_CALLBACK_INSTANCE, Context: PVOID, Work: PTP_WORK
+  ): VOID {.stdcall.}
+  PTP_TIMER_CALLBACK* = proc(
+    Instance: PTP_CALLBACK_INSTANCE, Context: PVOID, Timer: PTP_TIMER
+  ): VOID {.stdcall.}
+  PTP_WAIT_CALLBACK* = proc(
+    Instance: PTP_CALLBACK_INSTANCE,
+    Context: PVOID,
+    Wait: PTP_WAIT,
+    WaitResult: TP_WAIT_RESULT,
+  ): VOID {.stdcall.}
+  PIO_APC_ROUTINE* = proc(
+    ApcContext: PVOID, IoStatusBlock: PIO_STATUS_BLOCK, Reserved: ULONG
+  ): VOID {.stdcall.}
+  PWINSTATIONQUERYINFORMATIONW* = proc(
+    P1: HANDLE, P2: ULONG, P3: WINSTATIONINFOCLASS, P4: PVOID, P5: ULONG, P6: PULONG
+  ): BOOLEAN {.stdcall.}
   XCPT_ACTION* {.pure.} = object
     XcptNum*: int32
     SigNum*: int32
     XcptAction*: PHNDLR
+
   OBJECTID* {.pure.} = object
     Lineage*: GUID
     Uniquifier*: DWORD
+
   ANON_OBJECT_HEADER* {.pure.} = object
     Sig1*: WORD
     Sig2*: WORD
@@ -9134,6 +9822,7 @@
     TimeDateStamp*: DWORD
     ClassID*: CLSID
     SizeOfData*: DWORD
+
   ANON_OBJECT_HEADER_V2* {.pure.} = object
     Sig1*: WORD
     Sig2*: WORD
@@ -9145,6 +9834,7 @@
     Flags*: DWORD
     MetaDataSize*: DWORD
     MetaDataOffset*: DWORD
+
   ANON_OBJECT_HEADER_BIGOBJ* {.pure.} = object
     Sig1*: WORD
     Sig2*: WORD
@@ -9159,9 +9849,11 @@
     NumberOfSections*: DWORD
     PointerToSymbolTable*: DWORD
     NumberOfSymbols*: DWORD
+
   IMPORT_OBJECT_HEADER_UNION1* {.pure, union.} = object
     Ordinal*: WORD
     Hint*: WORD
+
   IMPORT_OBJECT_HEADER* {.pure.} = object
     Sig1*: WORD
     Sig2*: WORD
@@ -9170,16 +9862,19 @@
     TimeDateStamp*: DWORD
     SizeOfData*: DWORD
     union1*: IMPORT_OBJECT_HEADER_UNION1
-    Type* {.bitsize:2.}: WORD
-    NameType* {.bitsize:3.}: WORD
-    Reserved* {.bitsize:11.}: WORD
+    Type* {.bitsize: 2.}: WORD
+    NameType* {.bitsize: 3.}: WORD
+    Reserved* {.bitsize: 11.}: WORD
+
   TP_CALLBACK_ENVIRON_V1_u_s* {.pure.} = object
-    LongFunction* {.bitsize:1.}: DWORD
-    Persistent* {.bitsize:1.}: DWORD
-    Private* {.bitsize:30.}: DWORD
+    LongFunction* {.bitsize: 1.}: DWORD
+    Persistent* {.bitsize: 1.}: DWORD
+    Private* {.bitsize: 30.}: DWORD
+
   TP_CALLBACK_ENVIRON_V1_u* {.pure, union.} = object
     Flags*: DWORD
     s*: TP_CALLBACK_ENVIRON_V1_u_s
+
   TP_CALLBACK_ENVIRON_V1* {.pure.} = object
     Version*: TP_VERSION
     Pool*: PTP_POOL
@@ -9189,390 +9884,1350 @@
     ActivationContext*: ptr ACTIVATION_CONTEXT
     FinalizationCallback*: PTP_SIMPLE_CALLBACK
     u*: TP_CALLBACK_ENVIRON_V1_u
-proc IsEqualGUID*(rguid1: REFGUID, rguid2: REFGUID): BOOL {.winapi, stdcall, dynlib: "ole32", importc.}
-proc IsEqualIID*(rguid1: REFIID, rguid2: REFIID): BOOL {.winapi, stdcall, dynlib: "ole32", importc: "IsEqualGUID".}
-proc IsEqualCLSID*(rguid1: REFCLSID, rguid2: REFCLSID): BOOL {.winapi, stdcall, dynlib: "ole32", importc: "IsEqualGUID".}
-proc IsEqualFMTID*(rguid1: REFFMTID, rguid2: REFFMTID): BOOL {.winapi, stdcall, dynlib: "ole32", importc: "IsEqualGUID".}
-proc RtlCaptureStackBackTrace*(FramesToSkip: DWORD, FramesToCapture: DWORD, BackTrace: ptr PVOID, BackTraceHash: PDWORD): WORD {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlCaptureContext*(ContextRecord: PCONTEXT): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlCompareMemory*(Source1: pointer, Source2: pointer, Length: SIZE_T): SIZE_T {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlUnwind*(TargetFrame: PVOID, TargetIp: PVOID, ExceptionRecord: PEXCEPTION_RECORD, ReturnValue: PVOID): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlPcToFileHeader*(PcValue: PVOID, BaseOfImage: ptr PVOID): PVOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc IsEqualGUID*(
+  rguid1: REFGUID, rguid2: REFGUID
+): BOOL {.winapi, stdcall, dynlib: "ole32", importc.}
+
+proc IsEqualIID*(
+  rguid1: REFIID, rguid2: REFIID
+): BOOL {.winapi, stdcall, dynlib: "ole32", importc: "IsEqualGUID".}
+
+proc IsEqualCLSID*(
+  rguid1: REFCLSID, rguid2: REFCLSID
+): BOOL {.winapi, stdcall, dynlib: "ole32", importc: "IsEqualGUID".}
+
+proc IsEqualFMTID*(
+  rguid1: REFFMTID, rguid2: REFFMTID
+): BOOL {.winapi, stdcall, dynlib: "ole32", importc: "IsEqualGUID".}
+
+proc RtlCaptureStackBackTrace*(
+  FramesToSkip: DWORD,
+  FramesToCapture: DWORD,
+  BackTrace: ptr PVOID,
+  BackTraceHash: PDWORD,
+): WORD {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlCaptureContext*(
+  ContextRecord: PCONTEXT
+): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlCompareMemory*(
+  Source1: pointer, Source2: pointer, Length: SIZE_T
+): SIZE_T {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlUnwind*(
+  TargetFrame: PVOID,
+  TargetIp: PVOID,
+  ExceptionRecord: PEXCEPTION_RECORD,
+  ReturnValue: PVOID,
+): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlPcToFileHeader*(
+  PcValue: PVOID, BaseOfImage: ptr PVOID
+): PVOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
 when winimCpu64:
-  type
-    SLIST_HEADER_STRUCT1* {.pure.} = object
-      Alignment*: ULONGLONG
-      Region*: ULONGLONG
+  type SLIST_HEADER_STRUCT1* {.pure.} = object
+    Alignment*: ULONGLONG
+    Region*: ULONGLONG
+
 when winimCpu32:
-  type
-    SLIST_ENTRY* = SINGLE_LIST_ENTRY
+  type SLIST_ENTRY* = SINGLE_LIST_ENTRY
 when winimCpu64:
-  type
-    SLIST_ENTRY* {.pure.} = object
-      Next*: ptr SLIST_ENTRY
-      padding*: array[8, byte]
+  type SLIST_ENTRY* {.pure.} = object
+    Next*: ptr SLIST_ENTRY
+    padding*: array[8, byte]
+
 when winimCpu32:
-  type
-    SLIST_HEADER_STRUCT1* {.pure.} = object
-      Next*: SLIST_ENTRY
-      Depth*: WORD
-      Sequence*: WORD
+  type SLIST_HEADER_STRUCT1* {.pure.} = object
+    Next*: SLIST_ENTRY
+    Depth*: WORD
+    Sequence*: WORD
+
 when winimCpu64:
   type
     SLIST_HEADER_Header8* {.pure.} = object
-      Depth* {.bitsize:16.}: ULONGLONG
-      Sequence* {.bitsize:9.}: ULONGLONG
-      NextEntry* {.bitsize:39.}: ULONGLONG
-      HeaderType* {.bitsize:1.}: ULONGLONG
-      Init* {.bitsize:1.}: ULONGLONG
-      Reserved* {.bitsize:59.}: ULONGLONG
-      Region* {.bitsize:3.}: ULONGLONG
+      Depth* {.bitsize: 16.}: ULONGLONG
+      Sequence* {.bitsize: 9.}: ULONGLONG
+      NextEntry* {.bitsize: 39.}: ULONGLONG
+      HeaderType* {.bitsize: 1.}: ULONGLONG
+      Init* {.bitsize: 1.}: ULONGLONG
+      Reserved* {.bitsize: 59.}: ULONGLONG
+      Region* {.bitsize: 3.}: ULONGLONG
+
     SLIST_HEADER_HeaderX64* {.pure.} = object
-      Depth* {.bitsize:16.}: ULONGLONG
-      Sequence* {.bitsize:48.}: ULONGLONG
-      HeaderType* {.bitsize:1.}: ULONGLONG
-      Reserved* {.bitsize:3.}: ULONGLONG
-      NextEntry* {.bitsize:60.}: ULONGLONG
+      Depth* {.bitsize: 16.}: ULONGLONG
+      Sequence* {.bitsize: 48.}: ULONGLONG
+      HeaderType* {.bitsize: 1.}: ULONGLONG
+      Reserved* {.bitsize: 3.}: ULONGLONG
+      NextEntry* {.bitsize: 60.}: ULONGLONG
+
     SLIST_HEADER* {.pure, union.} = object
       struct1*: SLIST_HEADER_STRUCT1
       Header8*: SLIST_HEADER_Header8
       HeaderX64*: SLIST_HEADER_HeaderX64
+
 when winimCpu32:
-  type
-    SLIST_HEADER* {.pure, union.} = object
-      Alignment*: ULONGLONG
-      struct1*: SLIST_HEADER_STRUCT1
+  type SLIST_HEADER* {.pure, union.} = object
+    Alignment*: ULONGLONG
+    struct1*: SLIST_HEADER_STRUCT1
+
 when winimCpu64:
-  type
-    PSLIST_HEADER* = ptr SLIST_HEADER
+  type PSLIST_HEADER* = ptr SLIST_HEADER
 when winimCpu32:
-  type
-    PSLIST_HEADER* = ptr SLIST_HEADER
-proc RtlInitializeSListHead*(ListHead: PSLIST_HEADER): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+  type PSLIST_HEADER* = ptr SLIST_HEADER
+proc RtlInitializeSListHead*(
+  ListHead: PSLIST_HEADER
+): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
 when winimCpu64:
-  type
-    PSLIST_ENTRY* = ptr SLIST_ENTRY
+  type PSLIST_ENTRY* = ptr SLIST_ENTRY
 when winimCpu32:
-  type
-    PSLIST_ENTRY* = ptr SINGLE_LIST_ENTRY
-proc RtlFirstEntrySList*(ListHead: ptr SLIST_HEADER): PSLIST_ENTRY {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlInterlockedPopEntrySList*(ListHead: PSLIST_HEADER): PSLIST_ENTRY {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlInterlockedPushEntrySList*(ListHead: PSLIST_HEADER, ListEntry: PSLIST_ENTRY): PSLIST_ENTRY {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlInterlockedPushListSListEx*(ListHead: PSLIST_HEADER, List: PSLIST_ENTRY, ListEnd: PSLIST_ENTRY, Count: DWORD): PSLIST_ENTRY {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlInterlockedFlushSList*(ListHead: PSLIST_HEADER): PSLIST_ENTRY {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlQueryDepthSList*(ListHead: PSLIST_HEADER): WORD {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc VerSetConditionMask*(ConditionMask: ULONGLONG, TypeMask: DWORD, Condition: BYTE): ULONGLONG {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc RtlGetProductInfo*(OSMajorVersion: DWORD, OSMinorVersion: DWORD, SpMajorVersion: DWORD, SpMinorVersion: DWORD, ReturnedProductType: PDWORD): BOOLEAN {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlCrc32*(Buffer: pointer, Size: int, InitialCrc: DWORD): DWORD {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlCrc64*(Buffer: pointer, Size: int, InitialCrc: ULONGLONG): ULONGLONG {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlApplicationVerifierStop*(Code: ULONG_PTR, Message: PSTR, Param1: ULONG_PTR, Description1: PSTR, Param2: ULONG_PTR, Description2: PSTR, Param3: ULONG_PTR, Description3: PSTR, Param4: ULONG_PTR, Description4: PSTR): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlSetHeapInformation*(HeapHandle: PVOID, HeapInformationClass: HEAP_INFORMATION_CLASS, HeapInformation: PVOID, HeapInformationLength: SIZE_T): DWORD {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlQueryHeapInformation*(HeapHandle: PVOID, HeapInformationClass: HEAP_INFORMATION_CLASS, HeapInformation: PVOID, HeapInformationLength: SIZE_T, ReturnLength: PSIZE_T): DWORD {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlMultipleAllocateHeap*(HeapHandle: PVOID, Flags: DWORD, Size: SIZE_T, Count: DWORD, Array: ptr PVOID): DWORD {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlMultipleFreeHeap*(HeapHandle: PVOID, Flags: DWORD, Count: DWORD, Array: ptr PVOID): DWORD {.winapi, stdcall, dynlib: "ntdll", importc.}
+  type PSLIST_ENTRY* = ptr SINGLE_LIST_ENTRY
+proc RtlFirstEntrySList*(
+  ListHead: ptr SLIST_HEADER
+): PSLIST_ENTRY {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlInterlockedPopEntrySList*(
+  ListHead: PSLIST_HEADER
+): PSLIST_ENTRY {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlInterlockedPushEntrySList*(
+  ListHead: PSLIST_HEADER, ListEntry: PSLIST_ENTRY
+): PSLIST_ENTRY {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlInterlockedPushListSListEx*(
+  ListHead: PSLIST_HEADER, List: PSLIST_ENTRY, ListEnd: PSLIST_ENTRY, Count: DWORD
+): PSLIST_ENTRY {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlInterlockedFlushSList*(
+  ListHead: PSLIST_HEADER
+): PSLIST_ENTRY {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlQueryDepthSList*(
+  ListHead: PSLIST_HEADER
+): WORD {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc VerSetConditionMask*(
+  ConditionMask: ULONGLONG, TypeMask: DWORD, Condition: BYTE
+): ULONGLONG {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc RtlGetProductInfo*(
+  OSMajorVersion: DWORD,
+  OSMinorVersion: DWORD,
+  SpMajorVersion: DWORD,
+  SpMinorVersion: DWORD,
+  ReturnedProductType: PDWORD,
+): BOOLEAN {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlCrc32*(
+  Buffer: pointer, Size: int, InitialCrc: DWORD
+): DWORD {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlCrc64*(
+  Buffer: pointer, Size: int, InitialCrc: ULONGLONG
+): ULONGLONG {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlApplicationVerifierStop*(
+  Code: ULONG_PTR,
+  Message: PSTR,
+  Param1: ULONG_PTR,
+  Description1: PSTR,
+  Param2: ULONG_PTR,
+  Description2: PSTR,
+  Param3: ULONG_PTR,
+  Description3: PSTR,
+  Param4: ULONG_PTR,
+  Description4: PSTR,
+): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlSetHeapInformation*(
+  HeapHandle: PVOID,
+  HeapInformationClass: HEAP_INFORMATION_CLASS,
+  HeapInformation: PVOID,
+  HeapInformationLength: SIZE_T,
+): DWORD {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlQueryHeapInformation*(
+  HeapHandle: PVOID,
+  HeapInformationClass: HEAP_INFORMATION_CLASS,
+  HeapInformation: PVOID,
+  HeapInformationLength: SIZE_T,
+  ReturnLength: PSIZE_T,
+): DWORD {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlMultipleAllocateHeap*(
+  HeapHandle: PVOID, Flags: DWORD, Size: SIZE_T, Count: DWORD, Array: ptr PVOID
+): DWORD {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlMultipleFreeHeap*(
+  HeapHandle: PVOID, Flags: DWORD, Count: DWORD, Array: ptr PVOID
+): DWORD {.winapi, stdcall, dynlib: "ntdll", importc.}
+
 proc NtClose*(Handle: HANDLE): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtCreateFile*(FileHandle: PHANDLE, DesiredAccess: ACCESS_MASK, ObjectAttributes: POBJECT_ATTRIBUTES, IoStatusBlock: PIO_STATUS_BLOCK, AllocationSize: PLARGE_INTEGER, FileAttributes: ULONG, ShareAccess: ULONG, CreateDisposition: ULONG, CreateOptions: ULONG, EaBuffer: PVOID, EaLength: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtOpenFile*(FileHandle: PHANDLE, DesiredAccess: ACCESS_MASK, ObjectAttributes: POBJECT_ATTRIBUTES, IoStatusBlock: PIO_STATUS_BLOCK, ShareAccess: ULONG, OpenOptions: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtFsControlFile*(FileHandle: HANDLE, Event: HANDLE, ApcRoutine: PIO_APC_ROUTINE, ApcContext: PVOID, IoStatusBlock: PIO_STATUS_BLOCK, IoControlCode: ULONG, InputBuffer: PVOID, InputBufferLength: ULONG, OutputBuffer: PVOID, OutputBufferLength: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtDeviceIoControlFile*(FileHandle: HANDLE, Event: HANDLE, ApcRoutine: PIO_APC_ROUTINE, ApcContext: PVOID, IoStatusBlock: PIO_STATUS_BLOCK, IoControlCode: ULONG, InputBuffer: PVOID, InputBufferLength: ULONG, OutputBuffer: PVOID, OutputBufferLength: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtWaitForSingleObject*(Handle: HANDLE, Alertable: BOOLEAN, Timeout: PLARGE_INTEGER): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlIsNameLegalDOS8Dot3*(Name: PUNICODE_STRING, OemName: POEM_STRING, NameContainsSpaces: PBOOLEAN): BOOLEAN {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlNtStatusToDosError*(Status: NTSTATUS): ULONG {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtQueryInformationProcess*(ProcessHandle: HANDLE, ProcessInformationClass: PROCESSINFOCLASS, ProcessInformation: PVOID, ProcessInformationLength: ULONG, ReturnLength: PULONG): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtQueryInformationThread*(ThreadHandle: HANDLE, ThreadInformationClass: THREADINFOCLASS, ThreadInformation: PVOID, ThreadInformationLength: ULONG, ReturnLength: PULONG): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtQueryInformationFile*(hFile: HANDLE, io: PIO_STATUS_BLOCK, `ptr`: PVOID, len: ULONG, FileInformationClass: FILE_INFORMATION_CLASS): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtQueryObject*(Handle: HANDLE, ObjectInformationClass: OBJECT_INFORMATION_CLASS, ObjectInformation: PVOID, ObjectInformationLength: ULONG, ReturnLength: PULONG): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtQuerySystemInformation*(SystemInformationClass: SYSTEM_INFORMATION_CLASS, SystemInformation: PVOID, SystemInformationLength: ULONG, ReturnLength: PULONG): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtQuerySystemTime*(SystemTime: PLARGE_INTEGER): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtQueryVolumeInformationFile*(hFile: HANDLE, io: PIO_STATUS_BLOCK, `ptr`: PVOID, len: ULONG, FsInformationClass: FS_INFORMATION_CLASS): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtSetInformationFile*(hFile: HANDLE, io: PIO_STATUS_BLOCK, `ptr`: PVOID, len: ULONG, FileInformationClass: FILE_INFORMATION_CLASS): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtSetInformationProcess*(ProcessHandle: HANDLE, ProcessInformationClass: PROCESSINFOCLASS, ProcessInformation: PVOID, ProcessInformationLength: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc NtSetVolumeInformationFile*(hFile: HANDLE, io: PIO_STATUS_BLOCK, `ptr`: PVOID, len: ULONG, FileInformationClass: FILE_INFORMATION_CLASS): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlLocalTimeToSystemTime*(LocalTime: PLARGE_INTEGER, SystemTime: PLARGE_INTEGER): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlTimeToSecondsSince1970*(Time: PLARGE_INTEGER, ElapsedSeconds: PULONG): BOOLEAN {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlFreeAnsiString*(AnsiString: PANSI_STRING): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlFreeUnicodeString*(UnicodeString: PUNICODE_STRING): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlFreeOemString*(OemString: POEM_STRING): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlInitString*(DestinationString: PSTRING, SourceString: PCSZ): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlInitAnsiString*(DestinationString: PANSI_STRING, SourceString: PCSZ): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlInitUnicodeString*(DestinationString: PUNICODE_STRING, SourceString: PCWSTR): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlAnsiStringToUnicodeString*(DestinationString: PUNICODE_STRING, SourceString: PCANSI_STRING, AllocateDestinationString: BOOLEAN): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlUnicodeStringToAnsiString*(DestinationString: PANSI_STRING, SourceString: PCUNICODE_STRING, AllocateDestinationString: BOOLEAN): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlUnicodeStringToOemString*(DestinationString: POEM_STRING, SourceString: PCUNICODE_STRING, AllocateDestinationString: BOOLEAN): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlUnicodeToMultiByteSize*(BytesInMultiByteString: PULONG, UnicodeString: PWCH, BytesInUnicodeString: ULONG): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlCharToInteger*(String: PCSZ, Base: ULONG, Value: PULONG): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlConvertSidToUnicodeString*(UnicodeString: PUNICODE_STRING, Sid: PSID, AllocateDestinationString: BOOLEAN): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+proc NtCreateFile*(
+  FileHandle: PHANDLE,
+  DesiredAccess: ACCESS_MASK,
+  ObjectAttributes: POBJECT_ATTRIBUTES,
+  IoStatusBlock: PIO_STATUS_BLOCK,
+  AllocationSize: PLARGE_INTEGER,
+  FileAttributes: ULONG,
+  ShareAccess: ULONG,
+  CreateDisposition: ULONG,
+  CreateOptions: ULONG,
+  EaBuffer: PVOID,
+  EaLength: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc NtOpenFile*(
+  FileHandle: PHANDLE,
+  DesiredAccess: ACCESS_MASK,
+  ObjectAttributes: POBJECT_ATTRIBUTES,
+  IoStatusBlock: PIO_STATUS_BLOCK,
+  ShareAccess: ULONG,
+  OpenOptions: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc NtFsControlFile*(
+  FileHandle: HANDLE,
+  Event: HANDLE,
+  ApcRoutine: PIO_APC_ROUTINE,
+  ApcContext: PVOID,
+  IoStatusBlock: PIO_STATUS_BLOCK,
+  IoControlCode: ULONG,
+  InputBuffer: PVOID,
+  InputBufferLength: ULONG,
+  OutputBuffer: PVOID,
+  OutputBufferLength: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc NtDeviceIoControlFile*(
+  FileHandle: HANDLE,
+  Event: HANDLE,
+  ApcRoutine: PIO_APC_ROUTINE,
+  ApcContext: PVOID,
+  IoStatusBlock: PIO_STATUS_BLOCK,
+  IoControlCode: ULONG,
+  InputBuffer: PVOID,
+  InputBufferLength: ULONG,
+  OutputBuffer: PVOID,
+  OutputBufferLength: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc NtWaitForSingleObject*(
+  Handle: HANDLE, Alertable: BOOLEAN, Timeout: PLARGE_INTEGER
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlIsNameLegalDOS8Dot3*(
+  Name: PUNICODE_STRING, OemName: POEM_STRING, NameContainsSpaces: PBOOLEAN
+): BOOLEAN {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlNtStatusToDosError*(
+  Status: NTSTATUS
+): ULONG {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc NtQueryInformationProcess*(
+  ProcessHandle: HANDLE,
+  ProcessInformationClass: PROCESSINFOCLASS,
+  ProcessInformation: PVOID,
+  ProcessInformationLength: ULONG,
+  ReturnLength: PULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc NtQueryInformationThread*(
+  ThreadHandle: HANDLE,
+  ThreadInformationClass: THREADINFOCLASS,
+  ThreadInformation: PVOID,
+  ThreadInformationLength: ULONG,
+  ReturnLength: PULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc NtQueryInformationFile*(
+  hFile: HANDLE,
+  io: PIO_STATUS_BLOCK,
+  `ptr`: PVOID,
+  len: ULONG,
+  FileInformationClass: FILE_INFORMATION_CLASS,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc NtQueryObject*(
+  Handle: HANDLE,
+  ObjectInformationClass: OBJECT_INFORMATION_CLASS,
+  ObjectInformation: PVOID,
+  ObjectInformationLength: ULONG,
+  ReturnLength: PULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc NtQuerySystemInformation*(
+  SystemInformationClass: SYSTEM_INFORMATION_CLASS,
+  SystemInformation: PVOID,
+  SystemInformationLength: ULONG,
+  ReturnLength: PULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc NtQuerySystemTime*(
+  SystemTime: PLARGE_INTEGER
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc NtQueryVolumeInformationFile*(
+  hFile: HANDLE,
+  io: PIO_STATUS_BLOCK,
+  `ptr`: PVOID,
+  len: ULONG,
+  FsInformationClass: FS_INFORMATION_CLASS,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc NtSetInformationFile*(
+  hFile: HANDLE,
+  io: PIO_STATUS_BLOCK,
+  `ptr`: PVOID,
+  len: ULONG,
+  FileInformationClass: FILE_INFORMATION_CLASS,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc NtSetInformationProcess*(
+  ProcessHandle: HANDLE,
+  ProcessInformationClass: PROCESSINFOCLASS,
+  ProcessInformation: PVOID,
+  ProcessInformationLength: ULONG,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc NtSetVolumeInformationFile*(
+  hFile: HANDLE,
+  io: PIO_STATUS_BLOCK,
+  `ptr`: PVOID,
+  len: ULONG,
+  FileInformationClass: FILE_INFORMATION_CLASS,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlLocalTimeToSystemTime*(
+  LocalTime: PLARGE_INTEGER, SystemTime: PLARGE_INTEGER
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlTimeToSecondsSince1970*(
+  Time: PLARGE_INTEGER, ElapsedSeconds: PULONG
+): BOOLEAN {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlFreeAnsiString*(
+  AnsiString: PANSI_STRING
+): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlFreeUnicodeString*(
+  UnicodeString: PUNICODE_STRING
+): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlFreeOemString*(
+  OemString: POEM_STRING
+): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlInitString*(
+  DestinationString: PSTRING, SourceString: PCSZ
+): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlInitAnsiString*(
+  DestinationString: PANSI_STRING, SourceString: PCSZ
+): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlInitUnicodeString*(
+  DestinationString: PUNICODE_STRING, SourceString: PCWSTR
+): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlAnsiStringToUnicodeString*(
+  DestinationString: PUNICODE_STRING,
+  SourceString: PCANSI_STRING,
+  AllocateDestinationString: BOOLEAN,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlUnicodeStringToAnsiString*(
+  DestinationString: PANSI_STRING,
+  SourceString: PCUNICODE_STRING,
+  AllocateDestinationString: BOOLEAN,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlUnicodeStringToOemString*(
+  DestinationString: POEM_STRING,
+  SourceString: PCUNICODE_STRING,
+  AllocateDestinationString: BOOLEAN,
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlUnicodeToMultiByteSize*(
+  BytesInMultiByteString: PULONG, UnicodeString: PWCH, BytesInUnicodeString: ULONG
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlCharToInteger*(
+  String: PCSZ, Base: ULONG, Value: PULONG
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlConvertSidToUnicodeString*(
+  UnicodeString: PUNICODE_STRING, Sid: PSID, AllocateDestinationString: BOOLEAN
+): NTSTATUS {.winapi, stdcall, dynlib: "ntdll", importc.}
+
 proc RtlUniform*(Seed: PULONG): ULONG {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlDosPathNameToNtPathName_U*(DosPathName: PCWSTR, NtPathName: PUNICODE_STRING, NtFileNamePart: ptr PCWSTR, DirectoryInfo: pointer): BOOL {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlPrefixUnicodeString*(String1: PCUNICODE_STRING, String2: PCUNICODE_STRING, CaseInSensitive: BOOLEAN): BOOLEAN {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlCreateUnicodeStringFromAsciiz*(target: PUNICODE_STRING, src: LPCSTR): BOOLEAN {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlFreeHeap*(HeapHandle: PVOID, Flags: ULONG, HeapBase: PVOID): BOOLEAN {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlAllocateHeap*(HeapHandle: PVOID, Flags: ULONG, Size: SIZE_T): PVOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlCreateHeap*(Flags: ULONG, HeapBase: PVOID, ReserveSize: SIZE_T, CommitSize: SIZE_T, Lock: PVOID, Parameters: PRTL_HEAP_PARAMETERS): PVOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlDestroyHeap*(HeapHandle: PVOID): PVOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc CaptureStackBackTrace*(FramesToSkip: DWORD, FramesToCapture: DWORD, BackTrace: ptr PVOID, BackTraceHash: PDWORD): WORD {.winapi, stdcall, dynlib: "ntdll", importc: "RtlCaptureStackBackTrace".}
-template NT_SUCCESS*(status: untyped): bool = status.NTSTATUS >= 0
-template NT_INFORMATION*(status: untyped): bool = status.NTSTATUS shr 30 == 1
-template NT_WARNING*(status: untyped): bool = status.NTSTATUS shr 30 == 2
-template NT_ERROR*(status: untyped): bool = status.NTSTATUS shr 30 == 3
-template PRIMARYLANGID*(lgid: untyped): WORD = lgid.WORD and 0x3ff
-template SUBLANGID*(lgid: untyped): WORD = lgid.WORD shr 10
-template MAKESORTLCID*(lgid: untyped, srtid: untyped, ver: untyped): DWORD = MAKELCID(lgid, srtid) or (ver.DWORD shl 20)
-template LANGIDFROMLCID*(lcid: untyped): WORD = WORD(lcid and 0xffff)
-template SORTIDFROMLCID*(lcid: untyped): WORD = WORD((lcid shr 16) and 0xf)
-template SORTVERSIONFROMLCID*(lcid: untyped): WORD = WORD((lcid shr 20) and 0xf)
-template MAKEWORD*(a: untyped, b: untyped): WORD = WORD((b and 0xff) shl 8) or WORD(a and 0xff)
-template MAKELONG*(a: untyped, b: untyped): DWORD = cast[DWORD](b shl 16) or DWORD(a and 0xffff)
-template LOWORD*(l: untyped): WORD = WORD(l and 0xffff)
-template HIWORD*(l: untyped): WORD = WORD((l shr 16) and 0xffff)
-template LOBYTE*(w: untyped): BYTE = BYTE(w and 0xff)
-template HIBYTE*(w: untyped): BYTE = BYTE((w shr 8) and 0xff)
-template GET_X_LPARAM*(x: untyped): int = int cast[int16](LOWORD(x))
-template GET_Y_LPARAM*(x: untyped): int = int cast[int16](HIWORD(x))
-template IS_UNWINDING*(f: untyped): bool = (f and EXCEPTION_UNWIND) != 0
-template IS_DISPATCHING*(f: untyped): bool = (f and EXCEPTION_UNWIND) == 0
-template IS_TARGET_UNWIND*(f: untyped): bool = (f and EXCEPTION_TARGET_UNWIND) != 0
-template MANDATORY_LEVEL_TO_MANDATORY_RID*(IL: untyped): DWORD = IL.DWORD * 0x1000
-template VALID_IMPERSONATION_LEVEL*(L: untyped): bool = (L >= SECURITY_MIN_IMPERSONATION_LEVEL) and (L <= SECURITY_MAX_IMPERSONATION_LEVEL)
-template IsReparseTagMicrosoft*(tag: untyped): ULONG = tag.ULONG and 0x80000000'i32
-template IsReparseTagNameSurrogate*(tag: untyped): ULONG = tag.ULONG and 0x20000000'i32
+proc RtlDosPathNameToNtPathName_U*(
+  DosPathName: PCWSTR,
+  NtPathName: PUNICODE_STRING,
+  NtFileNamePart: ptr PCWSTR,
+  DirectoryInfo: pointer,
+): BOOL {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlPrefixUnicodeString*(
+  String1: PCUNICODE_STRING, String2: PCUNICODE_STRING, CaseInSensitive: BOOLEAN
+): BOOLEAN {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlCreateUnicodeStringFromAsciiz*(
+  target: PUNICODE_STRING, src: LPCSTR
+): BOOLEAN {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlFreeHeap*(
+  HeapHandle: PVOID, Flags: ULONG, HeapBase: PVOID
+): BOOLEAN {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlAllocateHeap*(
+  HeapHandle: PVOID, Flags: ULONG, Size: SIZE_T
+): PVOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlCreateHeap*(
+  Flags: ULONG,
+  HeapBase: PVOID,
+  ReserveSize: SIZE_T,
+  CommitSize: SIZE_T,
+  Lock: PVOID,
+  Parameters: PRTL_HEAP_PARAMETERS,
+): PVOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlDestroyHeap*(
+  HeapHandle: PVOID
+): PVOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc CaptureStackBackTrace*(
+  FramesToSkip: DWORD,
+  FramesToCapture: DWORD,
+  BackTrace: ptr PVOID,
+  BackTraceHash: PDWORD,
+): WORD {.winapi, stdcall, dynlib: "ntdll", importc: "RtlCaptureStackBackTrace".}
+
+template NT_SUCCESS*(status: untyped): bool =
+  status.NTSTATUS >= 0
+
+template NT_INFORMATION*(status: untyped): bool =
+  status.NTSTATUS shr 30 == 1
+
+template NT_WARNING*(status: untyped): bool =
+  status.NTSTATUS shr 30 == 2
+
+template NT_ERROR*(status: untyped): bool =
+  status.NTSTATUS shr 30 == 3
+
+template PRIMARYLANGID*(lgid: untyped): WORD =
+  lgid.WORD and 0x3ff
+
+template SUBLANGID*(lgid: untyped): WORD =
+  lgid.WORD shr 10
+
+template MAKESORTLCID*(lgid: untyped, srtid: untyped, ver: untyped): DWORD =
+  MAKELCID(lgid, srtid) or (ver.DWORD shl 20)
+
+template LANGIDFROMLCID*(lcid: untyped): WORD =
+  WORD(lcid and 0xffff)
+
+template SORTIDFROMLCID*(lcid: untyped): WORD =
+  WORD((lcid shr 16) and 0xf)
+
+template SORTVERSIONFROMLCID*(lcid: untyped): WORD =
+  WORD((lcid shr 20) and 0xf)
+
+template MAKEWORD*(a: untyped, b: untyped): WORD =
+  WORD((b and 0xff) shl 8) or WORD(a and 0xff)
+
+template MAKELONG*(a: untyped, b: untyped): DWORD =
+  cast[DWORD](b shl 16) or DWORD(a and 0xffff)
+
+template LOWORD*(l: untyped): WORD =
+  WORD(l and 0xffff)
+
+template HIWORD*(l: untyped): WORD =
+  WORD((l shr 16) and 0xffff)
+
+template LOBYTE*(w: untyped): BYTE =
+  BYTE(w and 0xff)
+
+template HIBYTE*(w: untyped): BYTE =
+  BYTE((w shr 8) and 0xff)
+
+template GET_X_LPARAM*(x: untyped): int =
+  int cast[int16](LOWORD(x))
+
+template GET_Y_LPARAM*(x: untyped): int =
+  int cast[int16](HIWORD(x))
+
+template IS_UNWINDING*(f: untyped): bool =
+  (f and EXCEPTION_UNWIND) != 0
+
+template IS_DISPATCHING*(f: untyped): bool =
+  (f and EXCEPTION_UNWIND) == 0
+
+template IS_TARGET_UNWIND*(f: untyped): bool =
+  (f and EXCEPTION_TARGET_UNWIND) != 0
+
+template MANDATORY_LEVEL_TO_MANDATORY_RID*(IL: untyped): DWORD =
+  IL.DWORD * 0x1000
+
+template VALID_IMPERSONATION_LEVEL*(L: untyped): bool =
+  (L >= SECURITY_MIN_IMPERSONATION_LEVEL) and (L <= SECURITY_MAX_IMPERSONATION_LEVEL)
+
+template IsReparseTagMicrosoft*(tag: untyped): ULONG =
+  tag.ULONG and 0x80000000'i32
+
+template IsReparseTagNameSurrogate*(tag: untyped): ULONG =
+  tag.ULONG and 0x20000000'i32
+
 when winimCpu64:
-  type
-    PIMAGE_NT_HEADERS* = PIMAGE_NT_HEADERS64
+  type PIMAGE_NT_HEADERS* = PIMAGE_NT_HEADERS64
 when winimCpu32:
-  type
-    PIMAGE_NT_HEADERS* = PIMAGE_NT_HEADERS32
-template IMAGE_FIRST_SECTION*(ntheader: PIMAGE_NT_HEADERS): PIMAGE_SECTION_HEADER = cast[PIMAGE_SECTION_HEADER](cast[int](addr ntheader.OptionalHeader) + int(ntheader.FileHeader.SizeOfOptionalHeader))
-template BTYPE*(x: untyped): DWORD = x.DWORD and N_BTMASK
-template ISPTR*(x: untyped): bool = DWORD(x and N_TMASK) == DWORD(IMAGE_SYM_DTYPE_POINTER shl N_BTSHFT)
-template ISFCN*(x: untyped): bool = DWORD(x and N_TMASK) == DWORD(IMAGE_SYM_DTYPE_FUNCTION shl N_BTSHFT)
-template ISARY*(x: untyped): bool = DWORD(x and N_TMASK) == DWORD(IMAGE_SYM_DTYPE_ARRAY shl N_BTSHFT)
-template ISTAG*(x: untyped): bool = (x == IMAGE_SYM_CLASS_STRUCT_TAG) or (x == IMAGE_SYM_CLASS_UNION_TAG) or (x == IMAGE_SYM_CLASS_ENUM_TAG)
-template INCREF*(x: untyped): DWORD = ((x.DWORD and (not N_BTMASK)) shl N_TSHIFT) or DWORD(IMAGE_SYM_DTYPE_POINTER shl N_BTSHFT) or DWORD(x and N_BTMASK)
-template DECREF*(x: untyped): DWORD = (x.DWORD shr N_TSHIFT) and DWORD(not N_BTMASK) or (x.DWORD and N_BTMASK)
-template IMAGE_ORDINAL64*(Ordinal: untyped): int64 = Ordinal.int64 and 0xffff'i64
-template IMAGE_ORDINAL32*(Ordinal: untyped): int32 = Ordinal.int32 and 0xffff'i32
-template IMAGE_SNAP_BY_ORDINAL64*(Ordinal: untyped): bool = (Ordinal and IMAGE_ORDINAL_FLAG64) != 0
-template IMAGE_SNAP_BY_ORDINAL32*(Ordinal: untyped): bool = (Ordinal and IMAGE_ORDINAL_FLAG32) != 0
-template HEAP_MAKE_TAG_FLAGS*(b: untyped, o: untyped): DWORD = b.DWORD + (o.DWORD shl 18)
-template InitializeObjectAttributes*(p: POBJECT_ATTRIBUTES, n: PUNICODE_STRING, a: ULONG, r: HANDLE, s: PSECURITY_DESCRIPTOR) = p.Length = int32 sizeof(OBJECT_ATTRIBUTES); p.RootDirectory = r; p.Attributes = a; p.ObjectName = n; p.SecurityDescriptor = s; p.SecurityQualityOfService = nil
+  type PIMAGE_NT_HEADERS* = PIMAGE_NT_HEADERS32
+template IMAGE_FIRST_SECTION*(ntheader: PIMAGE_NT_HEADERS): PIMAGE_SECTION_HEADER =
+  cast[PIMAGE_SECTION_HEADER](cast[int](addr ntheader.OptionalHeader) +
+    int(ntheader.FileHeader.SizeOfOptionalHeader))
+
+template BTYPE*(x: untyped): DWORD =
+  x.DWORD and N_BTMASK
+
+template ISPTR*(x: untyped): bool =
+  DWORD(x and N_TMASK) == DWORD(IMAGE_SYM_DTYPE_POINTER shl N_BTSHFT)
+
+template ISFCN*(x: untyped): bool =
+  DWORD(x and N_TMASK) == DWORD(IMAGE_SYM_DTYPE_FUNCTION shl N_BTSHFT)
+
+template ISARY*(x: untyped): bool =
+  DWORD(x and N_TMASK) == DWORD(IMAGE_SYM_DTYPE_ARRAY shl N_BTSHFT)
+
+template ISTAG*(x: untyped): bool =
+  (x == IMAGE_SYM_CLASS_STRUCT_TAG) or (x == IMAGE_SYM_CLASS_UNION_TAG) or
+    (x == IMAGE_SYM_CLASS_ENUM_TAG)
+
+template INCREF*(x: untyped): DWORD =
+  ((x.DWORD and (not N_BTMASK)) shl N_TSHIFT) or
+    DWORD(IMAGE_SYM_DTYPE_POINTER shl N_BTSHFT) or DWORD(x and N_BTMASK)
+
+template DECREF*(x: untyped): DWORD =
+  (x.DWORD shr N_TSHIFT) and DWORD(not N_BTMASK) or (x.DWORD and N_BTMASK)
+
+template IMAGE_ORDINAL64*(Ordinal: untyped): int64 =
+  Ordinal.int64 and 0xffff'i64
+
+template IMAGE_ORDINAL32*(Ordinal: untyped): int32 =
+  Ordinal.int32 and 0xffff'i32
+
+template IMAGE_SNAP_BY_ORDINAL64*(Ordinal: untyped): bool =
+  (Ordinal and IMAGE_ORDINAL_FLAG64) != 0
+
+template IMAGE_SNAP_BY_ORDINAL32*(Ordinal: untyped): bool =
+  (Ordinal and IMAGE_ORDINAL_FLAG32) != 0
+
+template HEAP_MAKE_TAG_FLAGS*(b: untyped, o: untyped): DWORD =
+  b.DWORD + (o.DWORD shl 18)
+
+template InitializeObjectAttributes*(
+    p: POBJECT_ATTRIBUTES,
+    n: PUNICODE_STRING,
+    a: ULONG,
+    r: HANDLE,
+    s: PSECURITY_DESCRIPTOR,
+) =
+  p.Length = int32 sizeof(OBJECT_ATTRIBUTES)
+  p.RootDirectory = r
+  p.Attributes = a
+  p.ObjectName = n
+  p.SecurityDescriptor = s
+  p.SecurityQualityOfService = nil
+
 proc ReadTimeStampCounter*(): int64 {.importc: "__rdtsc".}
-proc RtlEqualMemory*(Destination: pointer, Source: pointer, Length: Natural): bool {.importc: "RtlEqualMemory", header: "<windows.h>".}
-proc RtlMoveMemory*(Destination: pointer, Source: pointer, Length: Natural) {.importc: "RtlMoveMemory", header: "<windows.h>".}
-proc RtlCopyMemory*(Destination: pointer, Source: pointer, Length: Natural) {.importc: "RtlCopyMemory", header: "<windows.h>".}
-proc RtlZeroMemory*(Destination: pointer, Length: Natural) {.importc: "RtlZeroMemory", header: "<windows.h>".}
-proc RtlSecureZeroMemory*(Destination: pointer, Length: Natural) {.importc: "RtlSecureZeroMemory", header: "<windows.h>".}
-proc RtlFillMemory*(Destination: pointer, Length: Natural, Fill: byte): void {.importc: "RtlFillMemory", header: "<windows.h>".}
-proc `UseThisFieldToCopy=`*(self: var QUAD, x: int64) {.inline.} = self.union1.UseThisFieldToCopy = x
-proc UseThisFieldToCopy*(self: QUAD): int64 {.inline.} = self.union1.UseThisFieldToCopy
-proc UseThisFieldToCopy*(self: var QUAD): var int64 {.inline.} = self.union1.UseThisFieldToCopy
-proc `DoNotUseThisField=`*(self: var QUAD, x: float64) {.inline.} = self.union1.DoNotUseThisField = x
-proc DoNotUseThisField*(self: QUAD): float64 {.inline.} = self.union1.DoNotUseThisField
-proc DoNotUseThisField*(self: var QUAD): var float64 {.inline.} = self.union1.DoNotUseThisField
-proc `LowPart=`*(self: var LARGE_INTEGER, x: ULONG) {.inline.} = self.struct1.LowPart = x
-proc LowPart*(self: LARGE_INTEGER): ULONG {.inline.} = self.struct1.LowPart
-proc LowPart*(self: var LARGE_INTEGER): var ULONG {.inline.} = self.struct1.LowPart
-proc `HighPart=`*(self: var LARGE_INTEGER, x: LONG) {.inline.} = self.struct1.HighPart = x
-proc HighPart*(self: LARGE_INTEGER): LONG {.inline.} = self.struct1.HighPart
-proc HighPart*(self: var LARGE_INTEGER): var LONG {.inline.} = self.struct1.HighPart
-proc `LowPart=`*(self: var ULARGE_INTEGER, x: ULONG) {.inline.} = self.struct1.LowPart = x
-proc LowPart*(self: ULARGE_INTEGER): ULONG {.inline.} = self.struct1.LowPart
-proc LowPart*(self: var ULARGE_INTEGER): var ULONG {.inline.} = self.struct1.LowPart
-proc `HighPart=`*(self: var ULARGE_INTEGER, x: ULONG) {.inline.} = self.struct1.HighPart = x
-proc HighPart*(self: ULARGE_INTEGER): ULONG {.inline.} = self.struct1.HighPart
-proc HighPart*(self: var ULARGE_INTEGER): var ULONG {.inline.} = self.struct1.HighPart
-proc `SymbolicLinkReparseBuffer=`*(self: var REPARSE_DATA_BUFFER, x: REPARSE_DATA_BUFFER_UNION1_SymbolicLinkReparseBuffer) {.inline.} = self.union1.SymbolicLinkReparseBuffer = x
-proc SymbolicLinkReparseBuffer*(self: REPARSE_DATA_BUFFER): REPARSE_DATA_BUFFER_UNION1_SymbolicLinkReparseBuffer {.inline.} = self.union1.SymbolicLinkReparseBuffer
-proc SymbolicLinkReparseBuffer*(self: var REPARSE_DATA_BUFFER): var REPARSE_DATA_BUFFER_UNION1_SymbolicLinkReparseBuffer {.inline.} = self.union1.SymbolicLinkReparseBuffer
-proc `MountPointReparseBuffer=`*(self: var REPARSE_DATA_BUFFER, x: REPARSE_DATA_BUFFER_UNION1_MountPointReparseBuffer) {.inline.} = self.union1.MountPointReparseBuffer = x
-proc MountPointReparseBuffer*(self: REPARSE_DATA_BUFFER): REPARSE_DATA_BUFFER_UNION1_MountPointReparseBuffer {.inline.} = self.union1.MountPointReparseBuffer
-proc MountPointReparseBuffer*(self: var REPARSE_DATA_BUFFER): var REPARSE_DATA_BUFFER_UNION1_MountPointReparseBuffer {.inline.} = self.union1.MountPointReparseBuffer
-proc `GenericReparseBuffer=`*(self: var REPARSE_DATA_BUFFER, x: REPARSE_DATA_BUFFER_UNION1_GenericReparseBuffer) {.inline.} = self.union1.GenericReparseBuffer = x
-proc GenericReparseBuffer*(self: REPARSE_DATA_BUFFER): REPARSE_DATA_BUFFER_UNION1_GenericReparseBuffer {.inline.} = self.union1.GenericReparseBuffer
-proc GenericReparseBuffer*(self: var REPARSE_DATA_BUFFER): var REPARSE_DATA_BUFFER_UNION1_GenericReparseBuffer {.inline.} = self.union1.GenericReparseBuffer
-proc `FiberData=`*(self: var NT_TIB, x: PVOID) {.inline.} = self.union1.FiberData = x
-proc FiberData*(self: NT_TIB): PVOID {.inline.} = self.union1.FiberData
-proc FiberData*(self: var NT_TIB): var PVOID {.inline.} = self.union1.FiberData
-proc `Version=`*(self: var NT_TIB, x: DWORD) {.inline.} = self.union1.Version = x
-proc Version*(self: NT_TIB): DWORD {.inline.} = self.union1.Version
-proc Version*(self: var NT_TIB): var DWORD {.inline.} = self.union1.Version
-proc `FiberData=`*(self: var NT_TIB32, x: DWORD) {.inline.} = self.union1.FiberData = x
-proc FiberData*(self: NT_TIB32): DWORD {.inline.} = self.union1.FiberData
-proc FiberData*(self: var NT_TIB32): var DWORD {.inline.} = self.union1.FiberData
-proc `Version=`*(self: var NT_TIB32, x: DWORD) {.inline.} = self.union1.Version = x
-proc Version*(self: NT_TIB32): DWORD {.inline.} = self.union1.Version
-proc Version*(self: var NT_TIB32): var DWORD {.inline.} = self.union1.Version
-proc `FiberData=`*(self: var NT_TIB64, x: DWORD64) {.inline.} = self.union1.FiberData = x
-proc FiberData*(self: NT_TIB64): DWORD64 {.inline.} = self.union1.FiberData
-proc FiberData*(self: var NT_TIB64): var DWORD64 {.inline.} = self.union1.FiberData
-proc `Version=`*(self: var NT_TIB64, x: DWORD) {.inline.} = self.union1.Version = x
-proc Version*(self: NT_TIB64): DWORD {.inline.} = self.union1.Version
-proc Version*(self: var NT_TIB64): var DWORD {.inline.} = self.union1.Version
-proc `RatePercent=`*(self: var RATE_QUOTA_LIMIT, x: DWORD) {.inline.} = self.struct1.RatePercent = x
-proc RatePercent*(self: RATE_QUOTA_LIMIT): DWORD {.inline.} = self.struct1.RatePercent
-proc `Reserved0=`*(self: var RATE_QUOTA_LIMIT, x: DWORD) {.inline.} = self.struct1.Reserved0 = x
-proc Reserved0*(self: RATE_QUOTA_LIMIT): DWORD {.inline.} = self.struct1.Reserved0
-proc `Flags=`*(self: var PROCESS_MITIGATION_ASLR_POLICY, x: DWORD) {.inline.} = self.union1.Flags = x
-proc Flags*(self: PROCESS_MITIGATION_ASLR_POLICY): DWORD {.inline.} = self.union1.Flags
-proc Flags*(self: var PROCESS_MITIGATION_ASLR_POLICY): var DWORD {.inline.} = self.union1.Flags
-proc `EnableBottomUpRandomization=`*(self: var PROCESS_MITIGATION_ASLR_POLICY, x: DWORD) {.inline.} = self.union1.struct1.EnableBottomUpRandomization = x
-proc EnableBottomUpRandomization*(self: PROCESS_MITIGATION_ASLR_POLICY): DWORD {.inline.} = self.union1.struct1.EnableBottomUpRandomization
-proc `EnableForceRelocateImages=`*(self: var PROCESS_MITIGATION_ASLR_POLICY, x: DWORD) {.inline.} = self.union1.struct1.EnableForceRelocateImages = x
-proc EnableForceRelocateImages*(self: PROCESS_MITIGATION_ASLR_POLICY): DWORD {.inline.} = self.union1.struct1.EnableForceRelocateImages
-proc `EnableHighEntropy=`*(self: var PROCESS_MITIGATION_ASLR_POLICY, x: DWORD) {.inline.} = self.union1.struct1.EnableHighEntropy = x
-proc EnableHighEntropy*(self: PROCESS_MITIGATION_ASLR_POLICY): DWORD {.inline.} = self.union1.struct1.EnableHighEntropy
-proc `DisallowStrippedImages=`*(self: var PROCESS_MITIGATION_ASLR_POLICY, x: DWORD) {.inline.} = self.union1.struct1.DisallowStrippedImages = x
-proc DisallowStrippedImages*(self: PROCESS_MITIGATION_ASLR_POLICY): DWORD {.inline.} = self.union1.struct1.DisallowStrippedImages
-proc `ReservedFlags=`*(self: var PROCESS_MITIGATION_ASLR_POLICY, x: DWORD) {.inline.} = self.union1.struct1.ReservedFlags = x
-proc ReservedFlags*(self: PROCESS_MITIGATION_ASLR_POLICY): DWORD {.inline.} = self.union1.struct1.ReservedFlags
-proc `Flags=`*(self: var PROCESS_MITIGATION_DEP_POLICY, x: DWORD) {.inline.} = self.union1.Flags = x
-proc Flags*(self: PROCESS_MITIGATION_DEP_POLICY): DWORD {.inline.} = self.union1.Flags
-proc Flags*(self: var PROCESS_MITIGATION_DEP_POLICY): var DWORD {.inline.} = self.union1.Flags
-proc `Enable=`*(self: var PROCESS_MITIGATION_DEP_POLICY, x: DWORD) {.inline.} = self.union1.struct1.Enable = x
-proc Enable*(self: PROCESS_MITIGATION_DEP_POLICY): DWORD {.inline.} = self.union1.struct1.Enable
-proc `DisableAtlThunkEmulation=`*(self: var PROCESS_MITIGATION_DEP_POLICY, x: DWORD) {.inline.} = self.union1.struct1.DisableAtlThunkEmulation = x
-proc DisableAtlThunkEmulation*(self: PROCESS_MITIGATION_DEP_POLICY): DWORD {.inline.} = self.union1.struct1.DisableAtlThunkEmulation
-proc `ReservedFlags=`*(self: var PROCESS_MITIGATION_DEP_POLICY, x: DWORD) {.inline.} = self.union1.struct1.ReservedFlags = x
-proc ReservedFlags*(self: PROCESS_MITIGATION_DEP_POLICY): DWORD {.inline.} = self.union1.struct1.ReservedFlags
-proc `Flags=`*(self: var PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY, x: DWORD) {.inline.} = self.union1.Flags = x
-proc Flags*(self: PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY): DWORD {.inline.} = self.union1.Flags
-proc Flags*(self: var PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY): var DWORD {.inline.} = self.union1.Flags
-proc `RaiseExceptionOnInvalidHandleReference=`*(self: var PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY, x: DWORD) {.inline.} = self.union1.struct1.RaiseExceptionOnInvalidHandleReference = x
-proc RaiseExceptionOnInvalidHandleReference*(self: PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY): DWORD {.inline.} = self.union1.struct1.RaiseExceptionOnInvalidHandleReference
-proc `HandleExceptionsPermanentlyEnabled=`*(self: var PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY, x: DWORD) {.inline.} = self.union1.struct1.HandleExceptionsPermanentlyEnabled = x
-proc HandleExceptionsPermanentlyEnabled*(self: PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY): DWORD {.inline.} = self.union1.struct1.HandleExceptionsPermanentlyEnabled
-proc `ReservedFlags=`*(self: var PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY, x: DWORD) {.inline.} = self.union1.struct1.ReservedFlags = x
-proc ReservedFlags*(self: PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY): DWORD {.inline.} = self.union1.struct1.ReservedFlags
-proc `Flags=`*(self: var PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY, x: DWORD) {.inline.} = self.union1.Flags = x
-proc Flags*(self: PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY): DWORD {.inline.} = self.union1.Flags
-proc Flags*(self: var PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY): var DWORD {.inline.} = self.union1.Flags
-proc `DisallowWin32kSystemCalls=`*(self: var PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY, x: DWORD) {.inline.} = self.union1.struct1.DisallowWin32kSystemCalls = x
-proc DisallowWin32kSystemCalls*(self: PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY): DWORD {.inline.} = self.union1.struct1.DisallowWin32kSystemCalls
-proc `ReservedFlags=`*(self: var PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY, x: DWORD) {.inline.} = self.union1.struct1.ReservedFlags = x
-proc ReservedFlags*(self: PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY): DWORD {.inline.} = self.union1.struct1.ReservedFlags
-proc `Flags=`*(self: var PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY, x: DWORD) {.inline.} = self.union1.Flags = x
-proc Flags*(self: PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY): DWORD {.inline.} = self.union1.Flags
-proc Flags*(self: var PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY): var DWORD {.inline.} = self.union1.Flags
-proc `DisableExtensionPoints=`*(self: var PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY, x: DWORD) {.inline.} = self.union1.struct1.DisableExtensionPoints = x
-proc DisableExtensionPoints*(self: PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY): DWORD {.inline.} = self.union1.struct1.DisableExtensionPoints
-proc `ReservedFlags=`*(self: var PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY, x: DWORD) {.inline.} = self.union1.struct1.ReservedFlags = x
-proc ReservedFlags*(self: PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY): DWORD {.inline.} = self.union1.struct1.ReservedFlags
-proc `CpuRate=`*(self: var JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, x: DWORD) {.inline.} = self.union1.CpuRate = x
-proc CpuRate*(self: JOBOBJECT_CPU_RATE_CONTROL_INFORMATION): DWORD {.inline.} = self.union1.CpuRate
-proc CpuRate*(self: var JOBOBJECT_CPU_RATE_CONTROL_INFORMATION): var DWORD {.inline.} = self.union1.CpuRate
-proc `Weight=`*(self: var JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, x: DWORD) {.inline.} = self.union1.Weight = x
-proc Weight*(self: JOBOBJECT_CPU_RATE_CONTROL_INFORMATION): DWORD {.inline.} = self.union1.Weight
-proc Weight*(self: var JOBOBJECT_CPU_RATE_CONTROL_INFORMATION): var DWORD {.inline.} = self.union1.Weight
-proc `ProcessorCore=`*(self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION, x: SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_ProcessorCore) {.inline.} = self.union1.ProcessorCore = x
-proc ProcessorCore*(self: SYSTEM_LOGICAL_PROCESSOR_INFORMATION): SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_ProcessorCore {.inline.} = self.union1.ProcessorCore
-proc ProcessorCore*(self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION): var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_ProcessorCore {.inline.} = self.union1.ProcessorCore
-proc `NumaNode=`*(self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION, x: SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_NumaNode) {.inline.} = self.union1.NumaNode = x
-proc NumaNode*(self: SYSTEM_LOGICAL_PROCESSOR_INFORMATION): SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_NumaNode {.inline.} = self.union1.NumaNode
-proc NumaNode*(self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION): var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_NumaNode {.inline.} = self.union1.NumaNode
-proc `Cache=`*(self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION, x: CACHE_DESCRIPTOR) {.inline.} = self.union1.Cache = x
-proc Cache*(self: SYSTEM_LOGICAL_PROCESSOR_INFORMATION): CACHE_DESCRIPTOR {.inline.} = self.union1.Cache
-proc Cache*(self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION): var CACHE_DESCRIPTOR {.inline.} = self.union1.Cache
-proc `Reserved=`*(self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION, x: array[2, ULONGLONG]) {.inline.} = self.union1.Reserved = x
-proc Reserved*(self: SYSTEM_LOGICAL_PROCESSOR_INFORMATION): array[2, ULONGLONG] {.inline.} = self.union1.Reserved
-proc Reserved*(self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION): var array[2, ULONGLONG] {.inline.} = self.union1.Reserved
-proc `Processor=`*(self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, x: PROCESSOR_RELATIONSHIP) {.inline.} = self.union1.Processor = x
-proc Processor*(self: SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX): PROCESSOR_RELATIONSHIP {.inline.} = self.union1.Processor
-proc Processor*(self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX): var PROCESSOR_RELATIONSHIP {.inline.} = self.union1.Processor
-proc `NumaNode=`*(self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, x: NUMA_NODE_RELATIONSHIP) {.inline.} = self.union1.NumaNode = x
-proc NumaNode*(self: SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX): NUMA_NODE_RELATIONSHIP {.inline.} = self.union1.NumaNode
-proc NumaNode*(self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX): var NUMA_NODE_RELATIONSHIP {.inline.} = self.union1.NumaNode
-proc `Cache=`*(self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, x: CACHE_RELATIONSHIP) {.inline.} = self.union1.Cache = x
-proc Cache*(self: SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX): CACHE_RELATIONSHIP {.inline.} = self.union1.Cache
-proc Cache*(self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX): var CACHE_RELATIONSHIP {.inline.} = self.union1.Cache
-proc `AllowScaling=`*(self: var PROCESSOR_IDLESTATE_POLICY, x: WORD) {.inline.} = self.Flags.struct1.AllowScaling = x
-proc AllowScaling*(self: PROCESSOR_IDLESTATE_POLICY): WORD {.inline.} = self.Flags.struct1.AllowScaling
-proc `Disabled=`*(self: var PROCESSOR_IDLESTATE_POLICY, x: WORD) {.inline.} = self.Flags.struct1.Disabled = x
-proc Disabled*(self: PROCESSOR_IDLESTATE_POLICY): WORD {.inline.} = self.Flags.struct1.Disabled
-proc `Reserved=`*(self: var PROCESSOR_IDLESTATE_POLICY, x: WORD) {.inline.} = self.Flags.struct1.Reserved = x
-proc Reserved*(self: PROCESSOR_IDLESTATE_POLICY): WORD {.inline.} = self.Flags.struct1.Reserved
-proc `Spare=`*(self: var PROCESSOR_PERFSTATE_POLICY, x: BYTE) {.inline.} = self.union1.Spare = x
-proc Spare*(self: PROCESSOR_PERFSTATE_POLICY): BYTE {.inline.} = self.union1.Spare
-proc Spare*(self: var PROCESSOR_PERFSTATE_POLICY): var BYTE {.inline.} = self.union1.Spare
-proc `NoDomainAccounting=`*(self: var PROCESSOR_PERFSTATE_POLICY, x: BYTE) {.inline.} = self.union1.Flags.struct1.NoDomainAccounting = x
-proc NoDomainAccounting*(self: PROCESSOR_PERFSTATE_POLICY): BYTE {.inline.} = self.union1.Flags.struct1.NoDomainAccounting
-proc `IncreasePolicy=`*(self: var PROCESSOR_PERFSTATE_POLICY, x: BYTE) {.inline.} = self.union1.Flags.struct1.IncreasePolicy = x
-proc IncreasePolicy*(self: PROCESSOR_PERFSTATE_POLICY): BYTE {.inline.} = self.union1.Flags.struct1.IncreasePolicy
-proc `DecreasePolicy=`*(self: var PROCESSOR_PERFSTATE_POLICY, x: BYTE) {.inline.} = self.union1.Flags.struct1.DecreasePolicy = x
-proc DecreasePolicy*(self: PROCESSOR_PERFSTATE_POLICY): BYTE {.inline.} = self.union1.Flags.struct1.DecreasePolicy
-proc `Reserved=`*(self: var PROCESSOR_PERFSTATE_POLICY, x: BYTE) {.inline.} = self.union1.Flags.struct1.Reserved = x
-proc Reserved*(self: PROCESSOR_PERFSTATE_POLICY): BYTE {.inline.} = self.union1.Flags.struct1.Reserved
-proc `Flags=`*(self: var PROCESSOR_PERFSTATE_POLICY, x: PROCESSOR_PERFSTATE_POLICY_UNION1_Flags) {.inline.} = self.union1.Flags = x
-proc Flags*(self: PROCESSOR_PERFSTATE_POLICY): PROCESSOR_PERFSTATE_POLICY_UNION1_Flags {.inline.} = self.union1.Flags
-proc Flags*(self: var PROCESSOR_PERFSTATE_POLICY): var PROCESSOR_PERFSTATE_POLICY_UNION1_Flags {.inline.} = self.union1.Flags
-proc `TokenDef=`*(self: var IMAGE_AUX_SYMBOL_EX, x: IMAGE_AUX_SYMBOL_TOKEN_DEF) {.inline.} = self.struct4.TokenDef = x
-proc TokenDef*(self: IMAGE_AUX_SYMBOL_EX): IMAGE_AUX_SYMBOL_TOKEN_DEF {.inline.} = self.struct4.TokenDef
-proc TokenDef*(self: var IMAGE_AUX_SYMBOL_EX): var IMAGE_AUX_SYMBOL_TOKEN_DEF {.inline.} = self.struct4.TokenDef
-proc `rgbReserved=`*(self: var IMAGE_AUX_SYMBOL_EX, x: array[2, BYTE]) {.inline.} = self.struct4.rgbReserved = x
-proc rgbReserved*(self: IMAGE_AUX_SYMBOL_EX): array[2, BYTE] {.inline.} = self.struct4.rgbReserved
-proc rgbReserved*(self: var IMAGE_AUX_SYMBOL_EX): var array[2, BYTE] {.inline.} = self.struct4.rgbReserved
-proc `VirtualAddress=`*(self: var IMAGE_RELOCATION, x: DWORD) {.inline.} = self.union1.VirtualAddress = x
-proc VirtualAddress*(self: IMAGE_RELOCATION): DWORD {.inline.} = self.union1.VirtualAddress
-proc VirtualAddress*(self: var IMAGE_RELOCATION): var DWORD {.inline.} = self.union1.VirtualAddress
-proc `RelocCount=`*(self: var IMAGE_RELOCATION, x: DWORD) {.inline.} = self.union1.RelocCount = x
-proc RelocCount*(self: IMAGE_RELOCATION): DWORD {.inline.} = self.union1.RelocCount
-proc RelocCount*(self: var IMAGE_RELOCATION): var DWORD {.inline.} = self.union1.RelocCount
-proc `Characteristics=`*(self: var IMAGE_IMPORT_DESCRIPTOR, x: DWORD) {.inline.} = self.union1.Characteristics = x
-proc Characteristics*(self: IMAGE_IMPORT_DESCRIPTOR): DWORD {.inline.} = self.union1.Characteristics
-proc Characteristics*(self: var IMAGE_IMPORT_DESCRIPTOR): var DWORD {.inline.} = self.union1.Characteristics
-proc `OriginalFirstThunk=`*(self: var IMAGE_IMPORT_DESCRIPTOR, x: DWORD) {.inline.} = self.union1.OriginalFirstThunk = x
-proc OriginalFirstThunk*(self: IMAGE_IMPORT_DESCRIPTOR): DWORD {.inline.} = self.union1.OriginalFirstThunk
-proc OriginalFirstThunk*(self: var IMAGE_IMPORT_DESCRIPTOR): var DWORD {.inline.} = self.union1.OriginalFirstThunk
-proc `RvaBased=`*(self: var IMAGE_DELAYLOAD_DESCRIPTOR, x: DWORD) {.inline.} = self.Attributes.struct1.RvaBased = x
-proc RvaBased*(self: IMAGE_DELAYLOAD_DESCRIPTOR): DWORD {.inline.} = self.Attributes.struct1.RvaBased
-proc `ReservedAttributes=`*(self: var IMAGE_DELAYLOAD_DESCRIPTOR, x: DWORD) {.inline.} = self.Attributes.struct1.ReservedAttributes = x
-proc ReservedAttributes*(self: IMAGE_DELAYLOAD_DESCRIPTOR): DWORD {.inline.} = self.Attributes.struct1.ReservedAttributes
-proc `NameOffset=`*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY, x: DWORD) {.inline.} = self.union1.struct1.NameOffset = x
-proc NameOffset*(self: IMAGE_RESOURCE_DIRECTORY_ENTRY): DWORD {.inline.} = self.union1.struct1.NameOffset
-proc `NameIsString=`*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY, x: DWORD) {.inline.} = self.union1.struct1.NameIsString = x
-proc NameIsString*(self: IMAGE_RESOURCE_DIRECTORY_ENTRY): DWORD {.inline.} = self.union1.struct1.NameIsString
-proc `Name=`*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY, x: DWORD) {.inline.} = self.union1.Name = x
-proc Name*(self: IMAGE_RESOURCE_DIRECTORY_ENTRY): DWORD {.inline.} = self.union1.Name
-proc Name*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY): var DWORD {.inline.} = self.union1.Name
-proc `Id=`*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY, x: WORD) {.inline.} = self.union1.Id = x
-proc Id*(self: IMAGE_RESOURCE_DIRECTORY_ENTRY): WORD {.inline.} = self.union1.Id
-proc Id*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY): var WORD {.inline.} = self.union1.Id
-proc `OffsetToData=`*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY, x: DWORD) {.inline.} = self.union2.OffsetToData = x
-proc OffsetToData*(self: IMAGE_RESOURCE_DIRECTORY_ENTRY): DWORD {.inline.} = self.union2.OffsetToData
-proc OffsetToData*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY): var DWORD {.inline.} = self.union2.OffsetToData
-proc `OffsetToDirectory=`*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY, x: DWORD) {.inline.} = self.union2.struct1.OffsetToDirectory = x
-proc OffsetToDirectory*(self: IMAGE_RESOURCE_DIRECTORY_ENTRY): DWORD {.inline.} = self.union2.struct1.OffsetToDirectory
-proc `DataIsDirectory=`*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY, x: DWORD) {.inline.} = self.union2.struct1.DataIsDirectory = x
-proc DataIsDirectory*(self: IMAGE_RESOURCE_DIRECTORY_ENTRY): DWORD {.inline.} = self.union2.struct1.DataIsDirectory
-proc `EndOfPrologue=`*(self: var IMAGE_FUNCTION_ENTRY64, x: ULONGLONG) {.inline.} = self.union1.EndOfPrologue = x
-proc EndOfPrologue*(self: IMAGE_FUNCTION_ENTRY64): ULONGLONG {.inline.} = self.union1.EndOfPrologue
-proc EndOfPrologue*(self: var IMAGE_FUNCTION_ENTRY64): var ULONGLONG {.inline.} = self.union1.EndOfPrologue
-proc `UnwindInfoAddress=`*(self: var IMAGE_FUNCTION_ENTRY64, x: ULONGLONG) {.inline.} = self.union1.UnwindInfoAddress = x
-proc UnwindInfoAddress*(self: IMAGE_FUNCTION_ENTRY64): ULONGLONG {.inline.} = self.union1.UnwindInfoAddress
-proc UnwindInfoAddress*(self: var IMAGE_FUNCTION_ENTRY64): var ULONGLONG {.inline.} = self.union1.UnwindInfoAddress
-proc `Ordinal=`*(self: var IMPORT_OBJECT_HEADER, x: WORD) {.inline.} = self.union1.Ordinal = x
-proc Ordinal*(self: IMPORT_OBJECT_HEADER): WORD {.inline.} = self.union1.Ordinal
-proc Ordinal*(self: var IMPORT_OBJECT_HEADER): var WORD {.inline.} = self.union1.Ordinal
-proc `Hint=`*(self: var IMPORT_OBJECT_HEADER, x: WORD) {.inline.} = self.union1.Hint = x
-proc Hint*(self: IMPORT_OBJECT_HEADER): WORD {.inline.} = self.union1.Hint
-proc Hint*(self: var IMPORT_OBJECT_HEADER): var WORD {.inline.} = self.union1.Hint
-proc `EntryPointToken=`*(self: var IMAGE_COR20_HEADER, x: DWORD) {.inline.} = self.union1.EntryPointToken = x
-proc EntryPointToken*(self: IMAGE_COR20_HEADER): DWORD {.inline.} = self.union1.EntryPointToken
-proc EntryPointToken*(self: var IMAGE_COR20_HEADER): var DWORD {.inline.} = self.union1.EntryPointToken
-proc `EntryPointRVA=`*(self: var IMAGE_COR20_HEADER, x: DWORD) {.inline.} = self.union1.EntryPointRVA = x
-proc EntryPointRVA*(self: IMAGE_COR20_HEADER): DWORD {.inline.} = self.union1.EntryPointRVA
-proc EntryPointRVA*(self: var IMAGE_COR20_HEADER): var DWORD {.inline.} = self.union1.EntryPointRVA
-proc `CheckSum=`*(self: var LDR_DATA_TABLE_ENTRY, x: ULONG) {.inline.} = self.union1.CheckSum = x
-proc CheckSum*(self: LDR_DATA_TABLE_ENTRY): ULONG {.inline.} = self.union1.CheckSum
-proc CheckSum*(self: var LDR_DATA_TABLE_ENTRY): var ULONG {.inline.} = self.union1.CheckSum
-proc `Reserved6=`*(self: var LDR_DATA_TABLE_ENTRY, x: PVOID) {.inline.} = self.union1.Reserved6 = x
-proc Reserved6*(self: LDR_DATA_TABLE_ENTRY): PVOID {.inline.} = self.union1.Reserved6
-proc Reserved6*(self: var LDR_DATA_TABLE_ENTRY): var PVOID {.inline.} = self.union1.Reserved6
-proc `Status=`*(self: var IO_STATUS_BLOCK, x: NTSTATUS) {.inline.} = self.union1.Status = x
-proc Status*(self: IO_STATUS_BLOCK): NTSTATUS {.inline.} = self.union1.Status
-proc Status*(self: var IO_STATUS_BLOCK): var NTSTATUS {.inline.} = self.union1.Status
-proc `Pointer=`*(self: var IO_STATUS_BLOCK, x: PVOID) {.inline.} = self.union1.Pointer = x
-proc Pointer*(self: IO_STATUS_BLOCK): PVOID {.inline.} = self.union1.Pointer
-proc Pointer*(self: var IO_STATUS_BLOCK): var PVOID {.inline.} = self.union1.Pointer
+proc RtlEqualMemory*(
+  Destination: pointer, Source: pointer, Length: Natural
+): bool {.importc: "RtlEqualMemory", header: "<windows.h>".}
+
+proc RtlMoveMemory*(
+  Destination: pointer, Source: pointer, Length: Natural
+) {.importc: "RtlMoveMemory", header: "<windows.h>".}
+
+proc RtlCopyMemory*(
+  Destination: pointer, Source: pointer, Length: Natural
+) {.importc: "RtlCopyMemory", header: "<windows.h>".}
+
+proc RtlZeroMemory*(
+  Destination: pointer, Length: Natural
+) {.importc: "RtlZeroMemory", header: "<windows.h>".}
+
+proc RtlSecureZeroMemory*(
+  Destination: pointer, Length: Natural
+) {.importc: "RtlSecureZeroMemory", header: "<windows.h>".}
+
+proc RtlFillMemory*(
+  Destination: pointer, Length: Natural, Fill: byte
+): void {.importc: "RtlFillMemory", header: "<windows.h>".}
+
+proc `UseThisFieldToCopy=`*(self: var QUAD, x: int64) {.inline.} =
+  self.union1.UseThisFieldToCopy = x
+
+proc UseThisFieldToCopy*(self: QUAD): int64 {.inline.} =
+  self.union1.UseThisFieldToCopy
+
+proc UseThisFieldToCopy*(self: var QUAD): var int64 {.inline.} =
+  self.union1.UseThisFieldToCopy
+
+proc `DoNotUseThisField=`*(self: var QUAD, x: float64) {.inline.} =
+  self.union1.DoNotUseThisField = x
+
+proc DoNotUseThisField*(self: QUAD): float64 {.inline.} =
+  self.union1.DoNotUseThisField
+
+proc DoNotUseThisField*(self: var QUAD): var float64 {.inline.} =
+  self.union1.DoNotUseThisField
+
+proc `LowPart=`*(self: var LARGE_INTEGER, x: ULONG) {.inline.} =
+  self.struct1.LowPart = x
+
+proc LowPart*(self: LARGE_INTEGER): ULONG {.inline.} =
+  self.struct1.LowPart
+
+proc LowPart*(self: var LARGE_INTEGER): var ULONG {.inline.} =
+  self.struct1.LowPart
+
+proc `HighPart=`*(self: var LARGE_INTEGER, x: LONG) {.inline.} =
+  self.struct1.HighPart = x
+
+proc HighPart*(self: LARGE_INTEGER): LONG {.inline.} =
+  self.struct1.HighPart
+
+proc HighPart*(self: var LARGE_INTEGER): var LONG {.inline.} =
+  self.struct1.HighPart
+
+proc `LowPart=`*(self: var ULARGE_INTEGER, x: ULONG) {.inline.} =
+  self.struct1.LowPart = x
+
+proc LowPart*(self: ULARGE_INTEGER): ULONG {.inline.} =
+  self.struct1.LowPart
+
+proc LowPart*(self: var ULARGE_INTEGER): var ULONG {.inline.} =
+  self.struct1.LowPart
+
+proc `HighPart=`*(self: var ULARGE_INTEGER, x: ULONG) {.inline.} =
+  self.struct1.HighPart = x
+
+proc HighPart*(self: ULARGE_INTEGER): ULONG {.inline.} =
+  self.struct1.HighPart
+
+proc HighPart*(self: var ULARGE_INTEGER): var ULONG {.inline.} =
+  self.struct1.HighPart
+
+proc `SymbolicLinkReparseBuffer=`*(
+    self: var REPARSE_DATA_BUFFER,
+    x: REPARSE_DATA_BUFFER_UNION1_SymbolicLinkReparseBuffer,
+) {.inline.} =
+  self.union1.SymbolicLinkReparseBuffer = x
+
+proc SymbolicLinkReparseBuffer*(
+    self: REPARSE_DATA_BUFFER
+): REPARSE_DATA_BUFFER_UNION1_SymbolicLinkReparseBuffer {.inline.} =
+  self.union1.SymbolicLinkReparseBuffer
+
+proc SymbolicLinkReparseBuffer*(
+    self: var REPARSE_DATA_BUFFER
+): var REPARSE_DATA_BUFFER_UNION1_SymbolicLinkReparseBuffer {.inline.} =
+  self.union1.SymbolicLinkReparseBuffer
+
+proc `MountPointReparseBuffer=`*(
+    self: var REPARSE_DATA_BUFFER, x: REPARSE_DATA_BUFFER_UNION1_MountPointReparseBuffer
+) {.inline.} =
+  self.union1.MountPointReparseBuffer = x
+
+proc MountPointReparseBuffer*(
+    self: REPARSE_DATA_BUFFER
+): REPARSE_DATA_BUFFER_UNION1_MountPointReparseBuffer {.inline.} =
+  self.union1.MountPointReparseBuffer
+
+proc MountPointReparseBuffer*(
+    self: var REPARSE_DATA_BUFFER
+): var REPARSE_DATA_BUFFER_UNION1_MountPointReparseBuffer {.inline.} =
+  self.union1.MountPointReparseBuffer
+
+proc `GenericReparseBuffer=`*(
+    self: var REPARSE_DATA_BUFFER, x: REPARSE_DATA_BUFFER_UNION1_GenericReparseBuffer
+) {.inline.} =
+  self.union1.GenericReparseBuffer = x
+
+proc GenericReparseBuffer*(
+    self: REPARSE_DATA_BUFFER
+): REPARSE_DATA_BUFFER_UNION1_GenericReparseBuffer {.inline.} =
+  self.union1.GenericReparseBuffer
+
+proc GenericReparseBuffer*(
+    self: var REPARSE_DATA_BUFFER
+): var REPARSE_DATA_BUFFER_UNION1_GenericReparseBuffer {.inline.} =
+  self.union1.GenericReparseBuffer
+
+proc `FiberData=`*(self: var NT_TIB, x: PVOID) {.inline.} =
+  self.union1.FiberData = x
+
+proc FiberData*(self: NT_TIB): PVOID {.inline.} =
+  self.union1.FiberData
+
+proc FiberData*(self: var NT_TIB): var PVOID {.inline.} =
+  self.union1.FiberData
+
+proc `Version=`*(self: var NT_TIB, x: DWORD) {.inline.} =
+  self.union1.Version = x
+
+proc Version*(self: NT_TIB): DWORD {.inline.} =
+  self.union1.Version
+
+proc Version*(self: var NT_TIB): var DWORD {.inline.} =
+  self.union1.Version
+
+proc `FiberData=`*(self: var NT_TIB32, x: DWORD) {.inline.} =
+  self.union1.FiberData = x
+
+proc FiberData*(self: NT_TIB32): DWORD {.inline.} =
+  self.union1.FiberData
+
+proc FiberData*(self: var NT_TIB32): var DWORD {.inline.} =
+  self.union1.FiberData
+
+proc `Version=`*(self: var NT_TIB32, x: DWORD) {.inline.} =
+  self.union1.Version = x
+
+proc Version*(self: NT_TIB32): DWORD {.inline.} =
+  self.union1.Version
+
+proc Version*(self: var NT_TIB32): var DWORD {.inline.} =
+  self.union1.Version
+
+proc `FiberData=`*(self: var NT_TIB64, x: DWORD64) {.inline.} =
+  self.union1.FiberData = x
+
+proc FiberData*(self: NT_TIB64): DWORD64 {.inline.} =
+  self.union1.FiberData
+
+proc FiberData*(self: var NT_TIB64): var DWORD64 {.inline.} =
+  self.union1.FiberData
+
+proc `Version=`*(self: var NT_TIB64, x: DWORD) {.inline.} =
+  self.union1.Version = x
+
+proc Version*(self: NT_TIB64): DWORD {.inline.} =
+  self.union1.Version
+
+proc Version*(self: var NT_TIB64): var DWORD {.inline.} =
+  self.union1.Version
+
+proc `RatePercent=`*(self: var RATE_QUOTA_LIMIT, x: DWORD) {.inline.} =
+  self.struct1.RatePercent = x
+
+proc RatePercent*(self: RATE_QUOTA_LIMIT): DWORD {.inline.} =
+  self.struct1.RatePercent
+
+proc `Reserved0=`*(self: var RATE_QUOTA_LIMIT, x: DWORD) {.inline.} =
+  self.struct1.Reserved0 = x
+
+proc Reserved0*(self: RATE_QUOTA_LIMIT): DWORD {.inline.} =
+  self.struct1.Reserved0
+
+proc `Flags=`*(self: var PROCESS_MITIGATION_ASLR_POLICY, x: DWORD) {.inline.} =
+  self.union1.Flags = x
+
+proc Flags*(self: PROCESS_MITIGATION_ASLR_POLICY): DWORD {.inline.} =
+  self.union1.Flags
+
+proc Flags*(self: var PROCESS_MITIGATION_ASLR_POLICY): var DWORD {.inline.} =
+  self.union1.Flags
+
+proc `EnableBottomUpRandomization=`*(
+    self: var PROCESS_MITIGATION_ASLR_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.struct1.EnableBottomUpRandomization = x
+
+proc EnableBottomUpRandomization*(
+    self: PROCESS_MITIGATION_ASLR_POLICY
+): DWORD {.inline.} =
+  self.union1.struct1.EnableBottomUpRandomization
+
+proc `EnableForceRelocateImages=`*(
+    self: var PROCESS_MITIGATION_ASLR_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.struct1.EnableForceRelocateImages = x
+
+proc EnableForceRelocateImages*(
+    self: PROCESS_MITIGATION_ASLR_POLICY
+): DWORD {.inline.} =
+  self.union1.struct1.EnableForceRelocateImages
+
+proc `EnableHighEntropy=`*(
+    self: var PROCESS_MITIGATION_ASLR_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.struct1.EnableHighEntropy = x
+
+proc EnableHighEntropy*(self: PROCESS_MITIGATION_ASLR_POLICY): DWORD {.inline.} =
+  self.union1.struct1.EnableHighEntropy
+
+proc `DisallowStrippedImages=`*(
+    self: var PROCESS_MITIGATION_ASLR_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.struct1.DisallowStrippedImages = x
+
+proc DisallowStrippedImages*(self: PROCESS_MITIGATION_ASLR_POLICY): DWORD {.inline.} =
+  self.union1.struct1.DisallowStrippedImages
+
+proc `ReservedFlags=`*(self: var PROCESS_MITIGATION_ASLR_POLICY, x: DWORD) {.inline.} =
+  self.union1.struct1.ReservedFlags = x
+
+proc ReservedFlags*(self: PROCESS_MITIGATION_ASLR_POLICY): DWORD {.inline.} =
+  self.union1.struct1.ReservedFlags
+
+proc `Flags=`*(self: var PROCESS_MITIGATION_DEP_POLICY, x: DWORD) {.inline.} =
+  self.union1.Flags = x
+
+proc Flags*(self: PROCESS_MITIGATION_DEP_POLICY): DWORD {.inline.} =
+  self.union1.Flags
+
+proc Flags*(self: var PROCESS_MITIGATION_DEP_POLICY): var DWORD {.inline.} =
+  self.union1.Flags
+
+proc `Enable=`*(self: var PROCESS_MITIGATION_DEP_POLICY, x: DWORD) {.inline.} =
+  self.union1.struct1.Enable = x
+
+proc Enable*(self: PROCESS_MITIGATION_DEP_POLICY): DWORD {.inline.} =
+  self.union1.struct1.Enable
+
+proc `DisableAtlThunkEmulation=`*(
+    self: var PROCESS_MITIGATION_DEP_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.struct1.DisableAtlThunkEmulation = x
+
+proc DisableAtlThunkEmulation*(self: PROCESS_MITIGATION_DEP_POLICY): DWORD {.inline.} =
+  self.union1.struct1.DisableAtlThunkEmulation
+
+proc `ReservedFlags=`*(self: var PROCESS_MITIGATION_DEP_POLICY, x: DWORD) {.inline.} =
+  self.union1.struct1.ReservedFlags = x
+
+proc ReservedFlags*(self: PROCESS_MITIGATION_DEP_POLICY): DWORD {.inline.} =
+  self.union1.struct1.ReservedFlags
+
+proc `Flags=`*(
+    self: var PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.Flags = x
+
+proc Flags*(self: PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY): DWORD {.inline.} =
+  self.union1.Flags
+
+proc Flags*(
+    self: var PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY
+): var DWORD {.inline.} =
+  self.union1.Flags
+
+proc `RaiseExceptionOnInvalidHandleReference=`*(
+    self: var PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.struct1.RaiseExceptionOnInvalidHandleReference = x
+
+proc RaiseExceptionOnInvalidHandleReference*(
+    self: PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY
+): DWORD {.inline.} =
+  self.union1.struct1.RaiseExceptionOnInvalidHandleReference
+
+proc `HandleExceptionsPermanentlyEnabled=`*(
+    self: var PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.struct1.HandleExceptionsPermanentlyEnabled = x
+
+proc HandleExceptionsPermanentlyEnabled*(
+    self: PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY
+): DWORD {.inline.} =
+  self.union1.struct1.HandleExceptionsPermanentlyEnabled
+
+proc `ReservedFlags=`*(
+    self: var PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.struct1.ReservedFlags = x
+
+proc ReservedFlags*(
+    self: PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY
+): DWORD {.inline.} =
+  self.union1.struct1.ReservedFlags
+
+proc `Flags=`*(
+    self: var PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.Flags = x
+
+proc Flags*(self: PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY): DWORD {.inline.} =
+  self.union1.Flags
+
+proc Flags*(
+    self: var PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY
+): var DWORD {.inline.} =
+  self.union1.Flags
+
+proc `DisallowWin32kSystemCalls=`*(
+    self: var PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.struct1.DisallowWin32kSystemCalls = x
+
+proc DisallowWin32kSystemCalls*(
+    self: PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY
+): DWORD {.inline.} =
+  self.union1.struct1.DisallowWin32kSystemCalls
+
+proc `ReservedFlags=`*(
+    self: var PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.struct1.ReservedFlags = x
+
+proc ReservedFlags*(
+    self: PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY
+): DWORD {.inline.} =
+  self.union1.struct1.ReservedFlags
+
+proc `Flags=`*(
+    self: var PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.Flags = x
+
+proc Flags*(self: PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY): DWORD {.inline.} =
+  self.union1.Flags
+
+proc Flags*(
+    self: var PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY
+): var DWORD {.inline.} =
+  self.union1.Flags
+
+proc `DisableExtensionPoints=`*(
+    self: var PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.struct1.DisableExtensionPoints = x
+
+proc DisableExtensionPoints*(
+    self: PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY
+): DWORD {.inline.} =
+  self.union1.struct1.DisableExtensionPoints
+
+proc `ReservedFlags=`*(
+    self: var PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY, x: DWORD
+) {.inline.} =
+  self.union1.struct1.ReservedFlags = x
+
+proc ReservedFlags*(
+    self: PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY
+): DWORD {.inline.} =
+  self.union1.struct1.ReservedFlags
+
+proc `CpuRate=`*(
+    self: var JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, x: DWORD
+) {.inline.} =
+  self.union1.CpuRate = x
+
+proc CpuRate*(self: JOBOBJECT_CPU_RATE_CONTROL_INFORMATION): DWORD {.inline.} =
+  self.union1.CpuRate
+
+proc CpuRate*(self: var JOBOBJECT_CPU_RATE_CONTROL_INFORMATION): var DWORD {.inline.} =
+  self.union1.CpuRate
+
+proc `Weight=`*(self: var JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, x: DWORD) {.inline.} =
+  self.union1.Weight = x
+
+proc Weight*(self: JOBOBJECT_CPU_RATE_CONTROL_INFORMATION): DWORD {.inline.} =
+  self.union1.Weight
+
+proc Weight*(self: var JOBOBJECT_CPU_RATE_CONTROL_INFORMATION): var DWORD {.inline.} =
+  self.union1.Weight
+
+proc `ProcessorCore=`*(
+    self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION,
+    x: SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_ProcessorCore,
+) {.inline.} =
+  self.union1.ProcessorCore = x
+
+proc ProcessorCore*(
+    self: SYSTEM_LOGICAL_PROCESSOR_INFORMATION
+): SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_ProcessorCore {.inline.} =
+  self.union1.ProcessorCore
+
+proc ProcessorCore*(
+    self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION
+): var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_ProcessorCore {.inline.} =
+  self.union1.ProcessorCore
+
+proc `NumaNode=`*(
+    self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION,
+    x: SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_NumaNode,
+) {.inline.} =
+  self.union1.NumaNode = x
+
+proc NumaNode*(
+    self: SYSTEM_LOGICAL_PROCESSOR_INFORMATION
+): SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_NumaNode {.inline.} =
+  self.union1.NumaNode
+
+proc NumaNode*(
+    self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION
+): var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_UNION1_NumaNode {.inline.} =
+  self.union1.NumaNode
+
+proc `Cache=`*(
+    self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION, x: CACHE_DESCRIPTOR
+) {.inline.} =
+  self.union1.Cache = x
+
+proc Cache*(self: SYSTEM_LOGICAL_PROCESSOR_INFORMATION): CACHE_DESCRIPTOR {.inline.} =
+  self.union1.Cache
+
+proc Cache*(
+    self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION
+): var CACHE_DESCRIPTOR {.inline.} =
+  self.union1.Cache
+
+proc `Reserved=`*(
+    self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION, x: array[2, ULONGLONG]
+) {.inline.} =
+  self.union1.Reserved = x
+
+proc Reserved*(
+    self: SYSTEM_LOGICAL_PROCESSOR_INFORMATION
+): array[2, ULONGLONG] {.inline.} =
+  self.union1.Reserved
+
+proc Reserved*(
+    self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION
+): var array[2, ULONGLONG] {.inline.} =
+  self.union1.Reserved
+
+proc `Processor=`*(
+    self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, x: PROCESSOR_RELATIONSHIP
+) {.inline.} =
+  self.union1.Processor = x
+
+proc Processor*(
+    self: SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX
+): PROCESSOR_RELATIONSHIP {.inline.} =
+  self.union1.Processor
+
+proc Processor*(
+    self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX
+): var PROCESSOR_RELATIONSHIP {.inline.} =
+  self.union1.Processor
+
+proc `NumaNode=`*(
+    self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, x: NUMA_NODE_RELATIONSHIP
+) {.inline.} =
+  self.union1.NumaNode = x
+
+proc NumaNode*(
+    self: SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX
+): NUMA_NODE_RELATIONSHIP {.inline.} =
+  self.union1.NumaNode
+
+proc NumaNode*(
+    self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX
+): var NUMA_NODE_RELATIONSHIP {.inline.} =
+  self.union1.NumaNode
+
+proc `Cache=`*(
+    self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, x: CACHE_RELATIONSHIP
+) {.inline.} =
+  self.union1.Cache = x
+
+proc Cache*(
+    self: SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX
+): CACHE_RELATIONSHIP {.inline.} =
+  self.union1.Cache
+
+proc Cache*(
+    self: var SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX
+): var CACHE_RELATIONSHIP {.inline.} =
+  self.union1.Cache
+
+proc `AllowScaling=`*(self: var PROCESSOR_IDLESTATE_POLICY, x: WORD) {.inline.} =
+  self.Flags.struct1.AllowScaling = x
+
+proc AllowScaling*(self: PROCESSOR_IDLESTATE_POLICY): WORD {.inline.} =
+  self.Flags.struct1.AllowScaling
+
+proc `Disabled=`*(self: var PROCESSOR_IDLESTATE_POLICY, x: WORD) {.inline.} =
+  self.Flags.struct1.Disabled = x
+
+proc Disabled*(self: PROCESSOR_IDLESTATE_POLICY): WORD {.inline.} =
+  self.Flags.struct1.Disabled
+
+proc `Reserved=`*(self: var PROCESSOR_IDLESTATE_POLICY, x: WORD) {.inline.} =
+  self.Flags.struct1.Reserved = x
+
+proc Reserved*(self: PROCESSOR_IDLESTATE_POLICY): WORD {.inline.} =
+  self.Flags.struct1.Reserved
+
+proc `Spare=`*(self: var PROCESSOR_PERFSTATE_POLICY, x: BYTE) {.inline.} =
+  self.union1.Spare = x
+
+proc Spare*(self: PROCESSOR_PERFSTATE_POLICY): BYTE {.inline.} =
+  self.union1.Spare
+
+proc Spare*(self: var PROCESSOR_PERFSTATE_POLICY): var BYTE {.inline.} =
+  self.union1.Spare
+
+proc `NoDomainAccounting=`*(self: var PROCESSOR_PERFSTATE_POLICY, x: BYTE) {.inline.} =
+  self.union1.Flags.struct1.NoDomainAccounting = x
+
+proc NoDomainAccounting*(self: PROCESSOR_PERFSTATE_POLICY): BYTE {.inline.} =
+  self.union1.Flags.struct1.NoDomainAccounting
+
+proc `IncreasePolicy=`*(self: var PROCESSOR_PERFSTATE_POLICY, x: BYTE) {.inline.} =
+  self.union1.Flags.struct1.IncreasePolicy = x
+
+proc IncreasePolicy*(self: PROCESSOR_PERFSTATE_POLICY): BYTE {.inline.} =
+  self.union1.Flags.struct1.IncreasePolicy
+
+proc `DecreasePolicy=`*(self: var PROCESSOR_PERFSTATE_POLICY, x: BYTE) {.inline.} =
+  self.union1.Flags.struct1.DecreasePolicy = x
+
+proc DecreasePolicy*(self: PROCESSOR_PERFSTATE_POLICY): BYTE {.inline.} =
+  self.union1.Flags.struct1.DecreasePolicy
+
+proc `Reserved=`*(self: var PROCESSOR_PERFSTATE_POLICY, x: BYTE) {.inline.} =
+  self.union1.Flags.struct1.Reserved = x
+
+proc Reserved*(self: PROCESSOR_PERFSTATE_POLICY): BYTE {.inline.} =
+  self.union1.Flags.struct1.Reserved
+
+proc `Flags=`*(
+    self: var PROCESSOR_PERFSTATE_POLICY, x: PROCESSOR_PERFSTATE_POLICY_UNION1_Flags
+) {.inline.} =
+  self.union1.Flags = x
+
+proc Flags*(
+    self: PROCESSOR_PERFSTATE_POLICY
+): PROCESSOR_PERFSTATE_POLICY_UNION1_Flags {.inline.} =
+  self.union1.Flags
+
+proc Flags*(
+    self: var PROCESSOR_PERFSTATE_POLICY
+): var PROCESSOR_PERFSTATE_POLICY_UNION1_Flags {.inline.} =
+  self.union1.Flags
+
+proc `TokenDef=`*(
+    self: var IMAGE_AUX_SYMBOL_EX, x: IMAGE_AUX_SYMBOL_TOKEN_DEF
+) {.inline.} =
+  self.struct4.TokenDef = x
+
+proc TokenDef*(self: IMAGE_AUX_SYMBOL_EX): IMAGE_AUX_SYMBOL_TOKEN_DEF {.inline.} =
+  self.struct4.TokenDef
+
+proc TokenDef*(
+    self: var IMAGE_AUX_SYMBOL_EX
+): var IMAGE_AUX_SYMBOL_TOKEN_DEF {.inline.} =
+  self.struct4.TokenDef
+
+proc `rgbReserved=`*(self: var IMAGE_AUX_SYMBOL_EX, x: array[2, BYTE]) {.inline.} =
+  self.struct4.rgbReserved = x
+
+proc rgbReserved*(self: IMAGE_AUX_SYMBOL_EX): array[2, BYTE] {.inline.} =
+  self.struct4.rgbReserved
+
+proc rgbReserved*(self: var IMAGE_AUX_SYMBOL_EX): var array[2, BYTE] {.inline.} =
+  self.struct4.rgbReserved
+
+proc `VirtualAddress=`*(self: var IMAGE_RELOCATION, x: DWORD) {.inline.} =
+  self.union1.VirtualAddress = x
+
+proc VirtualAddress*(self: IMAGE_RELOCATION): DWORD {.inline.} =
+  self.union1.VirtualAddress
+
+proc VirtualAddress*(self: var IMAGE_RELOCATION): var DWORD {.inline.} =
+  self.union1.VirtualAddress
+
+proc `RelocCount=`*(self: var IMAGE_RELOCATION, x: DWORD) {.inline.} =
+  self.union1.RelocCount = x
+
+proc RelocCount*(self: IMAGE_RELOCATION): DWORD {.inline.} =
+  self.union1.RelocCount
+
+proc RelocCount*(self: var IMAGE_RELOCATION): var DWORD {.inline.} =
+  self.union1.RelocCount
+
+proc `Characteristics=`*(self: var IMAGE_IMPORT_DESCRIPTOR, x: DWORD) {.inline.} =
+  self.union1.Characteristics = x
+
+proc Characteristics*(self: IMAGE_IMPORT_DESCRIPTOR): DWORD {.inline.} =
+  self.union1.Characteristics
+
+proc Characteristics*(self: var IMAGE_IMPORT_DESCRIPTOR): var DWORD {.inline.} =
+  self.union1.Characteristics
+
+proc `OriginalFirstThunk=`*(self: var IMAGE_IMPORT_DESCRIPTOR, x: DWORD) {.inline.} =
+  self.union1.OriginalFirstThunk = x
+
+proc OriginalFirstThunk*(self: IMAGE_IMPORT_DESCRIPTOR): DWORD {.inline.} =
+  self.union1.OriginalFirstThunk
+
+proc OriginalFirstThunk*(self: var IMAGE_IMPORT_DESCRIPTOR): var DWORD {.inline.} =
+  self.union1.OriginalFirstThunk
+
+proc `RvaBased=`*(self: var IMAGE_DELAYLOAD_DESCRIPTOR, x: DWORD) {.inline.} =
+  self.Attributes.struct1.RvaBased = x
+
+proc RvaBased*(self: IMAGE_DELAYLOAD_DESCRIPTOR): DWORD {.inline.} =
+  self.Attributes.struct1.RvaBased
+
+proc `ReservedAttributes=`*(self: var IMAGE_DELAYLOAD_DESCRIPTOR, x: DWORD) {.inline.} =
+  self.Attributes.struct1.ReservedAttributes = x
+
+proc ReservedAttributes*(self: IMAGE_DELAYLOAD_DESCRIPTOR): DWORD {.inline.} =
+  self.Attributes.struct1.ReservedAttributes
+
+proc `NameOffset=`*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY, x: DWORD) {.inline.} =
+  self.union1.struct1.NameOffset = x
+
+proc NameOffset*(self: IMAGE_RESOURCE_DIRECTORY_ENTRY): DWORD {.inline.} =
+  self.union1.struct1.NameOffset
+
+proc `NameIsString=`*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY, x: DWORD) {.inline.} =
+  self.union1.struct1.NameIsString = x
+
+proc NameIsString*(self: IMAGE_RESOURCE_DIRECTORY_ENTRY): DWORD {.inline.} =
+  self.union1.struct1.NameIsString
+
+proc `Name=`*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY, x: DWORD) {.inline.} =
+  self.union1.Name = x
+
+proc Name*(self: IMAGE_RESOURCE_DIRECTORY_ENTRY): DWORD {.inline.} =
+  self.union1.Name
+
+proc Name*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY): var DWORD {.inline.} =
+  self.union1.Name
+
+proc `Id=`*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY, x: WORD) {.inline.} =
+  self.union1.Id = x
+
+proc Id*(self: IMAGE_RESOURCE_DIRECTORY_ENTRY): WORD {.inline.} =
+  self.union1.Id
+
+proc Id*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY): var WORD {.inline.} =
+  self.union1.Id
+
+proc `OffsetToData=`*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY, x: DWORD) {.inline.} =
+  self.union2.OffsetToData = x
+
+proc OffsetToData*(self: IMAGE_RESOURCE_DIRECTORY_ENTRY): DWORD {.inline.} =
+  self.union2.OffsetToData
+
+proc OffsetToData*(self: var IMAGE_RESOURCE_DIRECTORY_ENTRY): var DWORD {.inline.} =
+  self.union2.OffsetToData
+
+proc `OffsetToDirectory=`*(
+    self: var IMAGE_RESOURCE_DIRECTORY_ENTRY, x: DWORD
+) {.inline.} =
+  self.union2.struct1.OffsetToDirectory = x
+
+proc OffsetToDirectory*(self: IMAGE_RESOURCE_DIRECTORY_ENTRY): DWORD {.inline.} =
+  self.union2.struct1.OffsetToDirectory
+
+proc `DataIsDirectory=`*(
+    self: var IMAGE_RESOURCE_DIRECTORY_ENTRY, x: DWORD
+) {.inline.} =
+  self.union2.struct1.DataIsDirectory = x
+
+proc DataIsDirectory*(self: IMAGE_RESOURCE_DIRECTORY_ENTRY): DWORD {.inline.} =
+  self.union2.struct1.DataIsDirectory
+
+proc `EndOfPrologue=`*(self: var IMAGE_FUNCTION_ENTRY64, x: ULONGLONG) {.inline.} =
+  self.union1.EndOfPrologue = x
+
+proc EndOfPrologue*(self: IMAGE_FUNCTION_ENTRY64): ULONGLONG {.inline.} =
+  self.union1.EndOfPrologue
+
+proc EndOfPrologue*(self: var IMAGE_FUNCTION_ENTRY64): var ULONGLONG {.inline.} =
+  self.union1.EndOfPrologue
+
+proc `UnwindInfoAddress=`*(self: var IMAGE_FUNCTION_ENTRY64, x: ULONGLONG) {.inline.} =
+  self.union1.UnwindInfoAddress = x
+
+proc UnwindInfoAddress*(self: IMAGE_FUNCTION_ENTRY64): ULONGLONG {.inline.} =
+  self.union1.UnwindInfoAddress
+
+proc UnwindInfoAddress*(self: var IMAGE_FUNCTION_ENTRY64): var ULONGLONG {.inline.} =
+  self.union1.UnwindInfoAddress
+
+proc `Ordinal=`*(self: var IMPORT_OBJECT_HEADER, x: WORD) {.inline.} =
+  self.union1.Ordinal = x
+
+proc Ordinal*(self: IMPORT_OBJECT_HEADER): WORD {.inline.} =
+  self.union1.Ordinal
+
+proc Ordinal*(self: var IMPORT_OBJECT_HEADER): var WORD {.inline.} =
+  self.union1.Ordinal
+
+proc `Hint=`*(self: var IMPORT_OBJECT_HEADER, x: WORD) {.inline.} =
+  self.union1.Hint = x
+
+proc Hint*(self: IMPORT_OBJECT_HEADER): WORD {.inline.} =
+  self.union1.Hint
+
+proc Hint*(self: var IMPORT_OBJECT_HEADER): var WORD {.inline.} =
+  self.union1.Hint
+
+proc `EntryPointToken=`*(self: var IMAGE_COR20_HEADER, x: DWORD) {.inline.} =
+  self.union1.EntryPointToken = x
+
+proc EntryPointToken*(self: IMAGE_COR20_HEADER): DWORD {.inline.} =
+  self.union1.EntryPointToken
+
+proc EntryPointToken*(self: var IMAGE_COR20_HEADER): var DWORD {.inline.} =
+  self.union1.EntryPointToken
+
+proc `EntryPointRVA=`*(self: var IMAGE_COR20_HEADER, x: DWORD) {.inline.} =
+  self.union1.EntryPointRVA = x
+
+proc EntryPointRVA*(self: IMAGE_COR20_HEADER): DWORD {.inline.} =
+  self.union1.EntryPointRVA
+
+proc EntryPointRVA*(self: var IMAGE_COR20_HEADER): var DWORD {.inline.} =
+  self.union1.EntryPointRVA
+
+proc `CheckSum=`*(self: var LDR_DATA_TABLE_ENTRY, x: ULONG) {.inline.} =
+  self.union1.CheckSum = x
+
+proc CheckSum*(self: LDR_DATA_TABLE_ENTRY): ULONG {.inline.} =
+  self.union1.CheckSum
+
+proc CheckSum*(self: var LDR_DATA_TABLE_ENTRY): var ULONG {.inline.} =
+  self.union1.CheckSum
+
+proc `Reserved6=`*(self: var LDR_DATA_TABLE_ENTRY, x: PVOID) {.inline.} =
+  self.union1.Reserved6 = x
+
+proc Reserved6*(self: LDR_DATA_TABLE_ENTRY): PVOID {.inline.} =
+  self.union1.Reserved6
+
+proc Reserved6*(self: var LDR_DATA_TABLE_ENTRY): var PVOID {.inline.} =
+  self.union1.Reserved6
+
+proc `Status=`*(self: var IO_STATUS_BLOCK, x: NTSTATUS) {.inline.} =
+  self.union1.Status = x
+
+proc Status*(self: IO_STATUS_BLOCK): NTSTATUS {.inline.} =
+  self.union1.Status
+
+proc Status*(self: var IO_STATUS_BLOCK): var NTSTATUS {.inline.} =
+  self.union1.Status
+
+proc `Pointer=`*(self: var IO_STATUS_BLOCK, x: PVOID) {.inline.} =
+  self.union1.Pointer = x
+
+proc Pointer*(self: IO_STATUS_BLOCK): PVOID {.inline.} =
+  self.union1.Pointer
+
+proc Pointer*(self: var IO_STATUS_BLOCK): var PVOID {.inline.} =
+  self.union1.Pointer
+
 when winimUnicode:
   type
     PCZZTSTR* = PCZZWSTR
@@ -9586,6 +11241,7 @@
     OSVERSIONINFOEX* = OSVERSIONINFOEXW
     POSVERSIONINFOEX* = POSVERSIONINFOEXW
     LPOSVERSIONINFOEX* = LPOSVERSIONINFOEXW
+
 when winimAnsi:
   type
     PCZZTSTR* = PCZZSTR
@@ -9600,6 +11256,7 @@
     OSVERSIONINFOEX* = OSVERSIONINFOEXA
     POSVERSIONINFOEX* = POSVERSIONINFOEXA
     LPOSVERSIONINFOEX* = LPOSVERSIONINFOEXA
+
 when winimCpu64:
   type
     PXSAVE_FORMAT* = ptr XSAVE_FORMAT
@@ -9609,16 +11266,17 @@
       Reserved1*: DWORD
       Area*: PXSAVE_AREA
       Buffer*: PVOID
+
 when winimCpu32:
-  type
-    XSTATE_CONTEXT* {.pure.} = object
-      Mask*: DWORD64
-      Length*: DWORD
-      Reserved1*: DWORD
-      Area*: PXSAVE_AREA
-      Reserved2*: DWORD
-      Buffer*: PVOID
-      Reserved3*: DWORD
+  type XSTATE_CONTEXT* {.pure.} = object
+    Mask*: DWORD64
+    Length*: DWORD
+    Reserved1*: DWORD
+    Area*: PXSAVE_AREA
+    Reserved2*: DWORD
+    Buffer*: PVOID
+    Reserved3*: DWORD
+
 when winimCpu64:
   type
     PXSTATE_CONTEXT* = ptr XSTATE_CONTEXT
@@ -9627,13 +11285,15 @@
       BeginAddress*: DWORD
       EndAddress*: DWORD
       UnwindData*: DWORD
+
     PRUNTIME_FUNCTION* = ptr RUNTIME_FUNCTION
     UNWIND_HISTORY_TABLE_ENTRY* {.pure.} = object
       ImageBase*: ULONG64
       FunctionEntry*: PRUNTIME_FUNCTION
+
     PUNWIND_HISTORY_TABLE_ENTRY* = ptr UNWIND_HISTORY_TABLE_ENTRY
-  const
-    UNWIND_HISTORY_TABLE_SIZE* = 12
+
+  const UNWIND_HISTORY_TABLE_SIZE* = 12
   type
     UNWIND_HISTORY_TABLE* {.pure.} = object
       Count*: ULONG
@@ -9641,6 +11301,7 @@
       LowAddress*: ULONG64
       HighAddress*: ULONG64
       Entry*: array[UNWIND_HISTORY_TABLE_SIZE, UNWIND_HISTORY_TABLE_ENTRY]
+
     PUNWIND_HISTORY_TABLE* = ptr UNWIND_HISTORY_TABLE
     DISPATCHER_CONTEXT* {.pure.} = object
       ControlPc*: ULONG64
@@ -9654,10 +11315,12 @@
       HistoryTable*: PUNWIND_HISTORY_TABLE
       ScopeIndex*: ULONG
       Fill0*: ULONG
+
     PDISPATCHER_CONTEXT* = ptr DISPATCHER_CONTEXT
     KNONVOLATILE_CONTEXT_POINTERS* {.pure.} = object
       FloatingContext*: array[16, PM128A]
       IntegerContext*: array[16, PULONG64]
+
     PKNONVOLATILE_CONTEXT_POINTERS* = ptr KNONVOLATILE_CONTEXT_POINTERS
     IMAGE_OPTIONAL_HEADER* = IMAGE_OPTIONAL_HEADER64
     PIMAGE_OPTIONAL_HEADER* = PIMAGE_OPTIONAL_HEADER64
@@ -9668,6 +11331,7 @@
     PIMAGE_TLS_DIRECTORY* = PIMAGE_TLS_DIRECTORY64
     IMAGE_LOAD_CONFIG_DIRECTORY* = IMAGE_LOAD_CONFIG_DIRECTORY64
     PIMAGE_LOAD_CONFIG_DIRECTORY* = PIMAGE_LOAD_CONFIG_DIRECTORY64
+
   const
     ADDRESS_TAG_BIT* = 0x40000000000
     EXCEPTION_READ_FAULT* = 0
@@ -9686,15 +11350,16 @@
     CONTEXT_INTEGER* = CONTEXT_i386 or 0x00000002
     CONTEXT_FLOATING_POINT* = CONTEXT_i386 or 0x00000008
 when winimCpu64:
-  const
-    CONTEXT_FULL* = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_FLOATING_POINT
+  const CONTEXT_FULL* = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_FLOATING_POINT
 when winimCpu32:
   const
     CONTEXT_SEGMENTS* = CONTEXT_i386 or 0x00000004
     CONTEXT_DEBUG_REGISTERS* = CONTEXT_i386 or 0x00000010
 when winimCpu64:
   const
-    CONTEXT_ALL* = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS or CONTEXT_FLOATING_POINT or CONTEXT_DEBUG_REGISTERS
+    CONTEXT_ALL* =
+      CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS or CONTEXT_FLOATING_POINT or
+      CONTEXT_DEBUG_REGISTERS
     CONTEXT_EXCEPTION_ACTIVE* = 0x8000000
     CONTEXT_SERVICE_ACTIVE* = 0x10000000
     CONTEXT_EXCEPTION_REQUEST* = 0x40000000
@@ -9703,7 +11368,8 @@
     INITIAL_FPCSR* = 0x027f
     LEGACY_SAVE_AREA_LENGTH* = sizeof(XMM_SAVE_AREA32)
     RUNTIME_FUNCTION_INDIRECT* = 0x1
-    OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME* = "OutOfProcessFunctionTableCallback"
+    OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME* =
+      "OutOfProcessFunctionTableCallback"
     UNW_FLAG_NHANDLER* = 0x0
     UNW_FLAG_EHANDLER* = 0x1
     UNW_FLAG_UHANDLER* = 0x2
@@ -9715,86 +11381,281 @@
     IMAGE_NT_OPTIONAL_HDR_MAGIC* = IMAGE_NT_OPTIONAL_HDR64_MAGIC
     IMAGE_ORDINAL_FLAG* = IMAGE_ORDINAL_FLAG64
   type
-    PGET_RUNTIME_FUNCTION_CALLBACK* = proc (ControlPc: DWORD64, Context: PVOID): PRUNTIME_FUNCTION {.stdcall.}
-    POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK* = proc (Process: HANDLE, TableAddress: PVOID, Entries: PDWORD, Functions: ptr PRUNTIME_FUNCTION): DWORD {.stdcall.}
-  proc RtlAddGrowableFunctionTable*(DynamicTable: ptr PVOID, FunctionTable: PRUNTIME_FUNCTION, EntryCount: DWORD, MaximumEntryCount: DWORD, RangeBase: ULONG_PTR, RangeEnd: ULONG_PTR): DWORD {.winapi, stdcall, dynlib: "ntdll", importc.}
-  proc RtlGrowFunctionTable*(DynamicTable: PVOID, NewEntryCount: DWORD): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-  proc RtlDeleteGrowableFunctionTable*(DynamicTable: PVOID): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-  proc RtlAddFunctionTable*(FunctionTable: PRUNTIME_FUNCTION, EntryCount: DWORD, BaseAddress: DWORD64): BOOLEAN {.winapi, cdecl, dynlib: "ntdll", importc.}
-  proc RtlDeleteFunctionTable*(FunctionTable: PRUNTIME_FUNCTION): BOOLEAN {.winapi, cdecl, dynlib: "ntdll", importc.}
-  proc RtlInstallFunctionTableCallback*(TableIdentifier: DWORD64, BaseAddress: DWORD64, Length: DWORD, Callback: PGET_RUNTIME_FUNCTION_CALLBACK, Context: PVOID, OutOfProcessCallbackDll: PCWSTR): BOOLEAN {.winapi, cdecl, dynlib: "ntdll", importc.}
-  proc RtlRestoreContext*(ContextRecord: PCONTEXT, ExceptionRecord: ptr EXCEPTION_RECORD): VOID {.winapi, cdecl, dynlib: "ntdll", importc.}
-  proc RtlVirtualUnwind*(HandlerType: DWORD, ImageBase: DWORD64, ControlPc: DWORD64, FunctionEntry: PRUNTIME_FUNCTION, ContextRecord: PCONTEXT, HandlerData: ptr PVOID, EstablisherFrame: PDWORD64, ContextPointers: PKNONVOLATILE_CONTEXT_POINTERS): PEXCEPTION_ROUTINE {.winapi, stdcall, dynlib: "ntdll", importc.}
-  proc RtlLookupFunctionEntry*(ControlPc: DWORD64, ImageBase: PDWORD64, HistoryTable: PUNWIND_HISTORY_TABLE): PRUNTIME_FUNCTION {.winapi, stdcall, dynlib: "ntdll", importc.}
-  proc RtlUnwindEx*(TargetFrame: PVOID, TargetIp: PVOID, ExceptionRecord: PEXCEPTION_RECORD, ReturnValue: PVOID, ContextRecord: PCONTEXT, HistoryTable: PUNWIND_HISTORY_TABLE): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
-  template IMAGE_ORDINAL*(Ordinal: untyped): int64 = Ordinal.int64 and 0xffff'i64
-  template IMAGE_SNAP_BY_ORDINAL*(Ordinal: untyped): bool = (Ordinal and IMAGE_ORDINAL_FLAG64) != 0
-  proc `FltSave=`*(self: var CONTEXT, x: XMM_SAVE_AREA32) {.inline.} = self.union1.FltSave = x
-  proc FltSave*(self: CONTEXT): XMM_SAVE_AREA32 {.inline.} = self.union1.FltSave
-  proc FltSave*(self: var CONTEXT): var XMM_SAVE_AREA32 {.inline.} = self.union1.FltSave
-  proc `FloatSave=`*(self: var CONTEXT, x: XMM_SAVE_AREA32) {.inline.} = self.union1.FloatSave = x
-  proc FloatSave*(self: CONTEXT): XMM_SAVE_AREA32 {.inline.} = self.union1.FloatSave
-  proc FloatSave*(self: var CONTEXT): var XMM_SAVE_AREA32 {.inline.} = self.union1.FloatSave
-  proc `Header=`*(self: var CONTEXT, x: array[2, M128A]) {.inline.} = self.union1.struct1.Header = x
-  proc Header*(self: CONTEXT): array[2, M128A] {.inline.} = self.union1.struct1.Header
-  proc Header*(self: var CONTEXT): var array[2, M128A] {.inline.} = self.union1.struct1.Header
-  proc `Legacy=`*(self: var CONTEXT, x: array[8, M128A]) {.inline.} = self.union1.struct1.Legacy = x
-  proc Legacy*(self: CONTEXT): array[8, M128A] {.inline.} = self.union1.struct1.Legacy
-  proc Legacy*(self: var CONTEXT): var array[8, M128A] {.inline.} = self.union1.struct1.Legacy
-  proc `Xmm0=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm0 = x
-  proc Xmm0*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm0
-  proc Xmm0*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm0
-  proc `Xmm1=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm1 = x
-  proc Xmm1*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm1
-  proc Xmm1*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm1
-  proc `Xmm2=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm2 = x
-  proc Xmm2*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm2
-  proc Xmm2*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm2
-  proc `Xmm3=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm3 = x
-  proc Xmm3*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm3
-  proc Xmm3*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm3
-  proc `Xmm4=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm4 = x
-  proc Xmm4*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm4
-  proc Xmm4*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm4
-  proc `Xmm5=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm5 = x
-  proc Xmm5*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm5
-  proc Xmm5*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm5
-  proc `Xmm6=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm6 = x
-  proc Xmm6*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm6
-  proc Xmm6*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm6
-  proc `Xmm7=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm7 = x
-  proc Xmm7*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm7
-  proc Xmm7*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm7
-  proc `Xmm8=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm8 = x
-  proc Xmm8*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm8
-  proc Xmm8*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm8
-  proc `Xmm9=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm9 = x
-  proc Xmm9*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm9
-  proc Xmm9*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm9
-  proc `Xmm10=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm10 = x
-  proc Xmm10*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm10
-  proc Xmm10*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm10
-  proc `Xmm11=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm11 = x
-  proc Xmm11*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm11
-  proc Xmm11*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm11
-  proc `Xmm12=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm12 = x
-  proc Xmm12*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm12
-  proc Xmm12*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm12
-  proc `Xmm13=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm13 = x
-  proc Xmm13*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm13
-  proc Xmm13*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm13
-  proc `Xmm14=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm14 = x
-  proc Xmm14*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm14
-  proc Xmm14*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm14
-  proc `Xmm15=`*(self: var CONTEXT, x: M128A) {.inline.} = self.union1.struct1.Xmm15 = x
-  proc Xmm15*(self: CONTEXT): M128A {.inline.} = self.union1.struct1.Xmm15
-  proc Xmm15*(self: var CONTEXT): var M128A {.inline.} = self.union1.struct1.Xmm15
-  proc `Alignment=`*(self: var SLIST_HEADER, x: ULONGLONG) {.inline.} = self.struct1.Alignment = x
-  proc Alignment*(self: SLIST_HEADER): ULONGLONG {.inline.} = self.struct1.Alignment
-  proc Alignment*(self: var SLIST_HEADER): var ULONGLONG {.inline.} = self.struct1.Alignment
-  proc `Region=`*(self: var SLIST_HEADER, x: ULONGLONG) {.inline.} = self.struct1.Region = x
-  proc Region*(self: SLIST_HEADER): ULONGLONG {.inline.} = self.struct1.Region
-  proc Region*(self: var SLIST_HEADER): var ULONGLONG {.inline.} = self.struct1.Region
+    PGET_RUNTIME_FUNCTION_CALLBACK* =
+      proc(ControlPc: DWORD64, Context: PVOID): PRUNTIME_FUNCTION {.stdcall.}
+    POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK* = proc(
+      Process: HANDLE,
+      TableAddress: PVOID,
+      Entries: PDWORD,
+      Functions: ptr PRUNTIME_FUNCTION,
+    ): DWORD {.stdcall.}
+
+  proc RtlAddGrowableFunctionTable*(
+    DynamicTable: ptr PVOID,
+    FunctionTable: PRUNTIME_FUNCTION,
+    EntryCount: DWORD,
+    MaximumEntryCount: DWORD,
+    RangeBase: ULONG_PTR,
+    RangeEnd: ULONG_PTR,
+  ): DWORD {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+  proc RtlGrowFunctionTable*(
+    DynamicTable: PVOID, NewEntryCount: DWORD
+  ): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+  proc RtlDeleteGrowableFunctionTable*(
+    DynamicTable: PVOID
+  ): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+  proc RtlAddFunctionTable*(
+    FunctionTable: PRUNTIME_FUNCTION, EntryCount: DWORD, BaseAddress: DWORD64
+  ): BOOLEAN {.winapi, cdecl, dynlib: "ntdll", importc.}
+
+  proc RtlDeleteFunctionTable*(
+    FunctionTable: PRUNTIME_FUNCTION
+  ): BOOLEAN {.winapi, cdecl, dynlib: "ntdll", importc.}
+
+  proc RtlInstallFunctionTableCallback*(
+    TableIdentifier: DWORD64,
+    BaseAddress: DWORD64,
+    Length: DWORD,
+    Callback: PGET_RUNTIME_FUNCTION_CALLBACK,
+    Context: PVOID,
+    OutOfProcessCallbackDll: PCWSTR,
+  ): BOOLEAN {.winapi, cdecl, dynlib: "ntdll", importc.}
+
+  proc RtlRestoreContext*(
+    ContextRecord: PCONTEXT, ExceptionRecord: ptr EXCEPTION_RECORD
+  ): VOID {.winapi, cdecl, dynlib: "ntdll", importc.}
+
+  proc RtlVirtualUnwind*(
+    HandlerType: DWORD,
+    ImageBase: DWORD64,
+    ControlPc: DWORD64,
+    FunctionEntry: PRUNTIME_FUNCTION,
+    ContextRecord: PCONTEXT,
+    HandlerData: ptr PVOID,
+    EstablisherFrame: PDWORD64,
+    ContextPointers: PKNONVOLATILE_CONTEXT_POINTERS,
+  ): PEXCEPTION_ROUTINE {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+  proc RtlLookupFunctionEntry*(
+    ControlPc: DWORD64, ImageBase: PDWORD64, HistoryTable: PUNWIND_HISTORY_TABLE
+  ): PRUNTIME_FUNCTION {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+  proc RtlUnwindEx*(
+    TargetFrame: PVOID,
+    TargetIp: PVOID,
+    ExceptionRecord: PEXCEPTION_RECORD,
+    ReturnValue: PVOID,
+    ContextRecord: PCONTEXT,
+    HistoryTable: PUNWIND_HISTORY_TABLE,
+  ): VOID {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+  template IMAGE_ORDINAL*(Ordinal: untyped): int64 =
+    Ordinal.int64 and 0xffff'i64
+
+  template IMAGE_SNAP_BY_ORDINAL*(Ordinal: untyped): bool =
+    (Ordinal and IMAGE_ORDINAL_FLAG64) != 0
+
+  proc `FltSave=`*(self: var CONTEXT, x: XMM_SAVE_AREA32) {.inline.} =
+    self.union1.FltSave = x
+
+  proc FltSave*(self: CONTEXT): XMM_SAVE_AREA32 {.inline.} =
+    self.union1.FltSave
+
+  proc FltSave*(self: var CONTEXT): var XMM_SAVE_AREA32 {.inline.} =
+    self.union1.FltSave
+
+  proc `FloatSave=`*(self: var CONTEXT, x: XMM_SAVE_AREA32) {.inline.} =
+    self.union1.FloatSave = x
+
+  proc FloatSave*(self: CONTEXT): XMM_SAVE_AREA32 {.inline.} =
+    self.union1.FloatSave
+
+  proc FloatSave*(self: var CONTEXT): var XMM_SAVE_AREA32 {.inline.} =
+    self.union1.FloatSave
+
+  proc `Header=`*(self: var CONTEXT, x: array[2, M128A]) {.inline.} =
+    self.union1.struct1.Header = x
+
+  proc Header*(self: CONTEXT): array[2, M128A] {.inline.} =
+    self.union1.struct1.Header
+
+  proc Header*(self: var CONTEXT): var array[2, M128A] {.inline.} =
+    self.union1.struct1.Header
+
+  proc `Legacy=`*(self: var CONTEXT, x: array[8, M128A]) {.inline.} =
+    self.union1.struct1.Legacy = x
+
+  proc Legacy*(self: CONTEXT): array[8, M128A] {.inline.} =
+    self.union1.struct1.Legacy
+
+  proc Legacy*(self: var CONTEXT): var array[8, M128A] {.inline.} =
+    self.union1.struct1.Legacy
+
+  proc `Xmm0=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm0 = x
+
+  proc Xmm0*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm0
+
+  proc Xmm0*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm0
+
+  proc `Xmm1=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm1 = x
+
+  proc Xmm1*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm1
+
+  proc Xmm1*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm1
+
+  proc `Xmm2=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm2 = x
+
+  proc Xmm2*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm2
+
+  proc Xmm2*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm2
+
+  proc `Xmm3=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm3 = x
+
+  proc Xmm3*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm3
+
+  proc Xmm3*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm3
+
+  proc `Xmm4=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm4 = x
+
+  proc Xmm4*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm4
+
+  proc Xmm4*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm4
+
+  proc `Xmm5=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm5 = x
+
+  proc Xmm5*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm5
+
+  proc Xmm5*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm5
+
+  proc `Xmm6=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm6 = x
+
+  proc Xmm6*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm6
+
+  proc Xmm6*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm6
+
+  proc `Xmm7=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm7 = x
+
+  proc Xmm7*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm7
+
+  proc Xmm7*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm7
+
+  proc `Xmm8=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm8 = x
+
+  proc Xmm8*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm8
+
+  proc Xmm8*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm8
+
+  proc `Xmm9=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm9 = x
+
+  proc Xmm9*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm9
+
+  proc Xmm9*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm9
+
+  proc `Xmm10=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm10 = x
+
+  proc Xmm10*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm10
+
+  proc Xmm10*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm10
+
+  proc `Xmm11=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm11 = x
+
+  proc Xmm11*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm11
+
+  proc Xmm11*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm11
+
+  proc `Xmm12=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm12 = x
+
+  proc Xmm12*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm12
+
+  proc Xmm12*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm12
+
+  proc `Xmm13=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm13 = x
+
+  proc Xmm13*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm13
+
+  proc Xmm13*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm13
+
+  proc `Xmm14=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm14 = x
+
+  proc Xmm14*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm14
+
+  proc Xmm14*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm14
+
+  proc `Xmm15=`*(self: var CONTEXT, x: M128A) {.inline.} =
+    self.union1.struct1.Xmm15 = x
+
+  proc Xmm15*(self: CONTEXT): M128A {.inline.} =
+    self.union1.struct1.Xmm15
+
+  proc Xmm15*(self: var CONTEXT): var M128A {.inline.} =
+    self.union1.struct1.Xmm15
+
+  proc `Alignment=`*(self: var SLIST_HEADER, x: ULONGLONG) {.inline.} =
+    self.struct1.Alignment = x
+
+  proc Alignment*(self: SLIST_HEADER): ULONGLONG {.inline.} =
+    self.struct1.Alignment
+
+  proc Alignment*(self: var SLIST_HEADER): var ULONGLONG {.inline.} =
+    self.struct1.Alignment
+
+  proc `Region=`*(self: var SLIST_HEADER, x: ULONGLONG) {.inline.} =
+    self.struct1.Region = x
+
+  proc Region*(self: SLIST_HEADER): ULONGLONG {.inline.} =
+    self.struct1.Region
+
+  proc Region*(self: var SLIST_HEADER): var ULONGLONG {.inline.} =
+    self.struct1.Region
+
 when winimCpu32:
   type
     HALF_PTR* = int16
@@ -9811,6 +11672,7 @@
     PIMAGE_TLS_DIRECTORY* = PIMAGE_TLS_DIRECTORY32
     IMAGE_LOAD_CONFIG_DIRECTORY* = IMAGE_LOAD_CONFIG_DIRECTORY32
     PIMAGE_LOAD_CONFIG_DIRECTORY* = PIMAGE_LOAD_CONFIG_DIRECTORY32
+
   const
     ADDRESS_TAG_BIT* = 0x80000000'i32
     pcTeb* = 0x18
@@ -9820,18 +11682,41 @@
     CONTEXT_i486* = 0x00010000
     CONTEXT_EXTENDED_REGISTERS* = CONTEXT_i386 or 0x00000020
     CONTEXT_FULL* = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS
-    CONTEXT_ALL* = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS or CONTEXT_FLOATING_POINT or CONTEXT_DEBUG_REGISTERS or CONTEXT_EXTENDED_REGISTERS
+    CONTEXT_ALL* =
+      CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS or CONTEXT_FLOATING_POINT or
+      CONTEXT_DEBUG_REGISTERS or CONTEXT_EXTENDED_REGISTERS
     IMAGE_SIZEOF_NT_OPTIONAL_HEADER* = IMAGE_SIZEOF_NT_OPTIONAL32_HEADER
     IMAGE_NT_OPTIONAL_HDR_MAGIC* = IMAGE_NT_OPTIONAL_HDR32_MAGIC
     IMAGE_ORDINAL_FLAG* = IMAGE_ORDINAL_FLAG32
-  template IMAGE_ORDINAL*(Ordinal: untyped): int32 = Ordinal.int32 and 0xffff'i32
-  template IMAGE_SNAP_BY_ORDINAL*(Ordinal: untyped): bool = (Ordinal and IMAGE_ORDINAL_FLAG32) != 0
-  proc `Next=`*(self: var SLIST_HEADER, x: SLIST_ENTRY) {.inline.} = self.struct1.Next = x
-  proc Next*(self: SLIST_HEADER): SLIST_ENTRY {.inline.} = self.struct1.Next
-  proc Next*(self: var SLIST_HEADER): var SLIST_ENTRY {.inline.} = self.struct1.Next
-  proc `Depth=`*(self: var SLIST_HEADER, x: WORD) {.inline.} = self.struct1.Depth = x
-  proc Depth*(self: SLIST_HEADER): WORD {.inline.} = self.struct1.Depth
-  proc Depth*(self: var SLIST_HEADER): var WORD {.inline.} = self.struct1.Depth
-  proc `Sequence=`*(self: var SLIST_HEADER, x: WORD) {.inline.} = self.struct1.Sequence = x
-  proc Sequence*(self: SLIST_HEADER): WORD {.inline.} = self.struct1.Sequence
-  proc Sequence*(self: var SLIST_HEADER): var WORD {.inline.} = self.struct1.Sequence
+  template IMAGE_ORDINAL*(Ordinal: untyped): int32 =
+    Ordinal.int32 and 0xffff'i32
+
+  template IMAGE_SNAP_BY_ORDINAL*(Ordinal: untyped): bool =
+    (Ordinal and IMAGE_ORDINAL_FLAG32) != 0
+
+  proc `Next=`*(self: var SLIST_HEADER, x: SLIST_ENTRY) {.inline.} =
+    self.struct1.Next = x
+
+  proc Next*(self: SLIST_HEADER): SLIST_ENTRY {.inline.} =
+    self.struct1.Next
+
+  proc Next*(self: var SLIST_HEADER): var SLIST_ENTRY {.inline.} =
+    self.struct1.Next
+
+  proc `Depth=`*(self: var SLIST_HEADER, x: WORD) {.inline.} =
+    self.struct1.Depth = x
+
+  proc Depth*(self: SLIST_HEADER): WORD {.inline.} =
+    self.struct1.Depth
+
+  proc Depth*(self: var SLIST_HEADER): var WORD {.inline.} =
+    self.struct1.Depth
+
+  proc `Sequence=`*(self: var SLIST_HEADER, x: WORD) {.inline.} =
+    self.struct1.Sequence = x
+
+  proc Sequence*(self: SLIST_HEADER): WORD {.inline.} =
+    self.struct1.Sequence
+
+  proc Sequence*(self: var SLIST_HEADER): var WORD {.inline.} =
+    self.struct1.Sequence
--- a/semicongine/thirdparty/winim/winim/inc/windns.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/windns.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -21,6 +21,7 @@
   IP4_ARRAY* {.pure.} = object
     AddrCount*: DWORD
     AddrArray*: array[1, IP4_ADDRESS]
+
   PIP4_ARRAY* = ptr IP4_ARRAY
   IP6_ADDRESS* {.pure, union.} = object
     IP6Qword*: array[2, QWORD]
@@ -28,40 +29,47 @@
     IP6Word*: array[8, WORD]
     IP6Byte*: array[16, BYTE]
     In6*: IN6_ADDR
+
   PIP6_ADDRESS* = ptr IP6_ADDRESS
   DNS_HEADER* {.pure.} = object
     Xid*: WORD
-    RecursionDesired* {.bitsize:1.}: BYTE
-    Truncation* {.bitsize:1.}: BYTE
-    Authoritative* {.bitsize:1.}: BYTE
-    Opcode* {.bitsize:4.}: BYTE
-    IsResponse* {.bitsize:1.}: BYTE
-    ResponseCode* {.bitsize:4.}: BYTE
-    Reserved* {.bitsize:3.}: BYTE
-    RecursionAvailable* {.bitsize:1.}: BYTE
+    RecursionDesired* {.bitsize: 1.}: BYTE
+    Truncation* {.bitsize: 1.}: BYTE
+    Authoritative* {.bitsize: 1.}: BYTE
+    Opcode* {.bitsize: 4.}: BYTE
+    IsResponse* {.bitsize: 1.}: BYTE
+    ResponseCode* {.bitsize: 4.}: BYTE
+    Reserved* {.bitsize: 3.}: BYTE
+    RecursionAvailable* {.bitsize: 1.}: BYTE
     QuestionCount*: WORD
     AnswerCount*: WORD
     NameServerCount*: WORD
     AdditionalCount*: WORD
+
   PDNS_HEADER* = ptr DNS_HEADER
   DNS_WIRE_QUESTION* {.pure.} = object
     QuestionType*: WORD
     QuestionClass*: WORD
+
   PDNS_WIRE_QUESTION* = ptr DNS_WIRE_QUESTION
   DNS_WIRE_RECORD* {.pure, packed.} = object
     RecordType*: WORD
     RecordClass*: WORD
     TimeToLive*: DWORD
     DataLength*: WORD
+
   PDNS_WIRE_RECORD* = ptr DNS_WIRE_RECORD
   DNS_A_DATA* {.pure.} = object
     IpAddress*: IP4_ADDRESS
+
   PDNS_A_DATA* = ptr DNS_A_DATA
   DNS_PTR_DATAW* {.pure.} = object
     pNameHost*: PWSTR
+
   PDNS_PTR_DATAW* = ptr DNS_PTR_DATAW
   DNS_PTR_DATAA* {.pure.} = object
     pNameHost*: PSTR
+
   PDNS_PTR_DATAA* = ptr DNS_PTR_DATAA
   DNS_SOA_DATAW* {.pure.} = object
     pNamePrimaryServer*: PWSTR
@@ -71,6 +79,7 @@
     dwRetry*: DWORD
     dwExpire*: DWORD
     dwDefaultTtl*: DWORD
+
   PDNS_SOA_DATAW* = ptr DNS_SOA_DATAW
   DNS_SOA_DATAA* {.pure.} = object
     pNamePrimaryServer*: PSTR
@@ -80,44 +89,54 @@
     dwRetry*: DWORD
     dwExpire*: DWORD
     dwDefaultTtl*: DWORD
+
   PDNS_SOA_DATAA* = ptr DNS_SOA_DATAA
   DNS_MINFO_DATAW* {.pure.} = object
     pNameMailbox*: PWSTR
     pNameErrorsMailbox*: PWSTR
+
   PDNS_MINFO_DATAW* = ptr DNS_MINFO_DATAW
   DNS_MINFO_DATAA* {.pure.} = object
     pNameMailbox*: PSTR
     pNameErrorsMailbox*: PSTR
+
   PDNS_MINFO_DATAA* = ptr DNS_MINFO_DATAA
   DNS_MX_DATAW* {.pure.} = object
     pNameExchange*: PWSTR
     wPreference*: WORD
     Pad*: WORD
+
   PDNS_MX_DATAW* = ptr DNS_MX_DATAW
   DNS_MX_DATAA* {.pure.} = object
     pNameExchange*: PSTR
     wPreference*: WORD
     Pad*: WORD
+
   PDNS_MX_DATAA* = ptr DNS_MX_DATAA
   DNS_TXT_DATAW* {.pure.} = object
     dwStringCount*: DWORD
     pStringArray*: array[1, PWSTR]
+
   PDNS_TXT_DATAW* = ptr DNS_TXT_DATAW
   DNS_TXT_DATAA* {.pure.} = object
     dwStringCount*: DWORD
     pStringArray*: array[1, PSTR]
+
   PDNS_TXT_DATAA* = ptr DNS_TXT_DATAA
   DNS_NULL_DATA* {.pure.} = object
     dwByteCount*: DWORD
     Data*: array[1, BYTE]
+
   PDNS_NULL_DATA* = ptr DNS_NULL_DATA
   DNS_WKS_DATA* {.pure.} = object
     IpAddress*: IP4_ADDRESS
     chProtocol*: UCHAR
     BitMask*: array[1, BYTE]
+
   PDNS_WKS_DATA* = ptr DNS_WKS_DATA
   DNS_AAAA_DATA* {.pure.} = object
     Ip6Address*: IP6_ADDRESS
+
   PDNS_AAAA_DATA* = ptr DNS_AAAA_DATA
   DNS_SIG_DATAW* {.pure.} = object
     pNameSigner*: PWSTR
@@ -130,6 +149,7 @@
     wKeyTag*: WORD
     Pad*: WORD
     Signature*: array[1, BYTE]
+
   PDNS_SIG_DATAW* = ptr DNS_SIG_DATAW
   DNS_SIG_DATAA* {.pure.} = object
     pNameSigner*: PSTR
@@ -142,12 +162,14 @@
     wKeyTag*: WORD
     Pad*: WORD
     Signature*: array[1, BYTE]
+
   PDNS_SIG_DATAA* = ptr DNS_SIG_DATAA
   DNS_KEY_DATA* {.pure.} = object
     wFlags*: WORD
     chProtocol*: BYTE
     chAlgorithm*: BYTE
     Key*: array[1, BYTE]
+
   PDNS_KEY_DATA* = ptr DNS_KEY_DATA
   DNS_LOC_DATA* {.pure.} = object
     wVersion*: WORD
@@ -157,16 +179,19 @@
     dwLatitude*: DWORD
     dwLongitude*: DWORD
     dwAltitude*: DWORD
+
   PDNS_LOC_DATA* = ptr DNS_LOC_DATA
   DNS_NXT_DATAW* {.pure.} = object
     pNameNext*: PWSTR
     wNumTypes*: WORD
     wTypes*: array[1, WORD]
+
   PDNS_NXT_DATAW* = ptr DNS_NXT_DATAW
   DNS_NXT_DATAA* {.pure.} = object
     pNameNext*: PSTR
     wNumTypes*: WORD
     wTypes*: array[1, WORD]
+
   PDNS_NXT_DATAA* = ptr DNS_NXT_DATAA
   DNS_SRV_DATAW* {.pure.} = object
     pNameTarget*: PWSTR
@@ -174,6 +199,7 @@
     wWeight*: WORD
     wPort*: WORD
     Pad*: WORD
+
   PDNS_SRV_DATAW* = ptr DNS_SRV_DATAW
   DNS_SRV_DATAA* {.pure.} = object
     pNameTarget*: PSTR
@@ -181,13 +207,15 @@
     wWeight*: WORD
     wPort*: WORD
     Pad*: WORD
+
   PDNS_SRV_DATAA* = ptr DNS_SRV_DATAA
-const
-  DNS_ATMA_MAX_ADDR_LENGTH* = 20
+
+const DNS_ATMA_MAX_ADDR_LENGTH* = 20
 type
   DNS_ATMA_DATA* {.pure.} = object
     AddressType*: BYTE
-    Address*: array[DNS_ATMA_MAX_ADDR_LENGTH , BYTE]
+    Address*: array[DNS_ATMA_MAX_ADDR_LENGTH, BYTE]
+
   PDNS_ATMA_DATA* = ptr DNS_ATMA_DATA
   DNS_TKEY_DATAW* {.pure.} = object
     pNameAlgorithm*: PWSTR
@@ -202,6 +230,7 @@
     wOtherLength*: WORD
     cAlgNameLength*: UCHAR
     bPacketPointers*: WINBOOL
+
   PDNS_TKEY_DATAW* = ptr DNS_TKEY_DATAW
   DNS_TKEY_DATAA* {.pure.} = object
     pNameAlgorithm*: PSTR
@@ -216,6 +245,7 @@
     wOtherLength*: WORD
     cAlgNameLength*: UCHAR
     bPacketPointers*: WINBOOL
+
   PDNS_TKEY_DATAA* = ptr DNS_TKEY_DATAA
   DNS_TSIG_DATAW* {.pure.} = object
     pNameAlgorithm*: PWSTR
@@ -230,6 +260,7 @@
     wOtherLength*: WORD
     cAlgNameLength*: UCHAR
     bPacketPointers*: WINBOOL
+
   PDNS_TSIG_DATAW* = ptr DNS_TSIG_DATAW
   DNS_TSIG_DATAA* {.pure.} = object
     pNameAlgorithm*: PSTR
@@ -244,6 +275,7 @@
     wOtherLength*: WORD
     cAlgNameLength*: UCHAR
     bPacketPointers*: WINBOOL
+
   PDNS_TSIG_DATAA* = ptr DNS_TSIG_DATAA
   DNS_WINS_DATA* {.pure.} = object
     dwMappingFlag*: DWORD
@@ -251,28 +283,33 @@
     dwCacheTimeout*: DWORD
     cWinsServerCount*: DWORD
     WinsServers*: array[1, IP4_ADDRESS]
+
   PDNS_WINS_DATA* = ptr DNS_WINS_DATA
   DNS_WINSR_DATAW* {.pure.} = object
     dwMappingFlag*: DWORD
     dwLookupTimeout*: DWORD
     dwCacheTimeout*: DWORD
     pNameResultDomain*: PWSTR
+
   PDNS_WINSR_DATAW* = ptr DNS_WINSR_DATAW
   DNS_WINSR_DATAA* {.pure.} = object
     dwMappingFlag*: DWORD
     dwLookupTimeout*: DWORD
     dwCacheTimeout*: DWORD
     pNameResultDomain*: PSTR
+
   PDNS_WINSR_DATAA* = ptr DNS_WINSR_DATAA
   DNS_RECORD_FLAGS* {.pure.} = object
-    Section* {.bitsize:2.}: DWORD
-    Delete* {.bitsize:1.}: DWORD
-    CharSet* {.bitsize:2.}: DWORD
-    Unused* {.bitsize:3.}: DWORD
-    Reserved* {.bitsize:24.}: DWORD
+    Section* {.bitsize: 2.}: DWORD
+    Delete* {.bitsize: 1.}: DWORD
+    CharSet* {.bitsize: 2.}: DWORD
+    Unused* {.bitsize: 3.}: DWORD
+    Reserved* {.bitsize: 24.}: DWORD
+
   DNS_RECORDW_Flags* {.pure, union.} = object
     DW*: DWORD
     S*: DNS_RECORD_FLAGS
+
   DNS_RECORDW_Data* {.pure, union.} = object
     A*: DNS_A_DATA
     SOA*: DNS_SOA_DATAW
@@ -334,6 +371,7 @@
     winsr*: DNS_WINSR_DATAW
     NBSTAT*: DNS_WINSR_DATAW
     nbstat*: DNS_WINSR_DATAW
+
   DNS_RECORDW* {.pure.} = object
     pNext*: ptr DnsRecordW
     pName*: PWSTR
@@ -343,10 +381,12 @@
     dwTtl*: DWORD
     dwReserved*: DWORD
     Data*: DNS_RECORDW_Data
+
   PDNS_RECORDW* = ptr DNS_RECORDW
   DNS_RECORDA_Flags* {.pure, union.} = object
     DW*: DWORD
     S*: DNS_RECORD_FLAGS
+
   DNS_RECORDA_Data* {.pure, union.} = object
     A*: DNS_A_DATA
     SOA*: DNS_SOA_DATAA
@@ -408,6 +448,7 @@
     winsr*: DNS_WINSR_DATAA
     NBSTAT*: DNS_WINSR_DATAA
     nbstat*: DNS_WINSR_DATAA
+
   DNS_RECORDA* {.pure.} = object
     pNext*: ptr DnsRecordA
     pName*: PSTR
@@ -417,22 +458,25 @@
     dwTtl*: DWORD
     dwReserved*: DWORD
     Data*: DNS_RECORDA_Data
+
   PDNS_RECORDA* = ptr DNS_RECORDA
+
 when winimUnicode:
-  type
-    PDNS_RECORD* = ptr DNS_RECORDW
+  type PDNS_RECORD* = ptr DNS_RECORDW
 when winimAnsi:
-  type
-    PDNS_RECORD* = ptr DNS_RECORDA
+  type PDNS_RECORD* = ptr DNS_RECORDA
 type
   DNS_RRSET* {.pure.} = object
     pFirstRR*: PDNS_RECORD
     pLastRR*: PDNS_RECORD
+
   PDNS_RRSET* = ptr DNS_RRSET
   DNS_MESSAGE_BUFFER* {.pure, packed.} = object
     MessageHead*: DNS_HEADER
     MessageBody*: array[1, CHAR]
+
   PDNS_MESSAGE_BUFFER* = ptr DNS_MESSAGE_BUFFER
+
 const
   SIZEOF_IP4_ADDRESS* = 4
   IP4_ADDRESS_STRING_LENGTH* = 15
@@ -448,12 +492,13 @@
   DNS_MAX_LABEL_BUFFER_LENGTH* = 64
   DNS_IP4_REVERSE_DOMAIN_STRING_A* = "in-addr.arpa."
   DNS_IP4_REVERSE_DOMAIN_STRING_W* = "in-addr.arpa."
-  DNS_MAX_IP4_REVERSE_NAME_LENGTH* = IP4_ADDRESS_STRING_LENGTH+1+(len(DNS_IP4_REVERSE_DOMAIN_STRING_A)+1)
-  DNS_MAX_IP4_REVERSE_NAME_BUFFER_LENGTH* = DNS_MAX_IP4_REVERSE_NAME_LENGTH+1
+  DNS_MAX_IP4_REVERSE_NAME_LENGTH* =
+    IP4_ADDRESS_STRING_LENGTH + 1 + (len(DNS_IP4_REVERSE_DOMAIN_STRING_A) + 1)
+  DNS_MAX_IP4_REVERSE_NAME_BUFFER_LENGTH* = DNS_MAX_IP4_REVERSE_NAME_LENGTH + 1
   DNS_IP6_REVERSE_DOMAIN_STRING_A* = "ip6.arpa."
   DNS_IP6_REVERSE_DOMAIN_STRING_W* = "ip6.arpa."
-  DNS_MAX_IP6_REVERSE_NAME_LENGTH* = 64+(len(DNS_IP6_REVERSE_DOMAIN_STRING_A)+1)
-  DNS_MAX_IP6_REVERSE_NAME_BUFFER_LENGTH* = DNS_MAX_IP6_REVERSE_NAME_LENGTH+1
+  DNS_MAX_IP6_REVERSE_NAME_LENGTH* = 64 + (len(DNS_IP6_REVERSE_DOMAIN_STRING_A) + 1)
+  DNS_MAX_IP6_REVERSE_NAME_BUFFER_LENGTH* = DNS_MAX_IP6_REVERSE_NAME_LENGTH + 1
   DNS_MAX_REVERSE_NAME_LENGTH* = DNS_MAX_IP6_REVERSE_NAME_LENGTH
   DNS_MAX_REVERSE_NAME_BUFFER_LENGTH* = DNS_MAX_IP6_REVERSE_NAME_BUFFER_LENGTH
   DNS_MAX_TEXT_STRING_LENGTH* = 255
@@ -614,7 +659,7 @@
   DNS_ATMA_FORMAT_E164* = 1
   DNS_ATMA_FORMAT_AESA* = 2
   DNS_ATMA_AESA_ADDR_LENGTH* = 20
-  DNS_ATMA_MAX_RECORD_LENGTH* = DNS_ATMA_MAX_ADDR_LENGTH+1
+  DNS_ATMA_MAX_RECORD_LENGTH* = DNS_ATMA_MAX_ADDR_LENGTH + 1
   DNSSEC_ALGORITHM_RSAMD5* = 1
   DNSSEC_ALGORITHM_NULL* = 253
   DNSSEC_ALGORITHM_PRIVATE* = 254
@@ -741,35 +786,182 @@
   dnsNameWildcard* = 4
   dnsNameSrvRecord* = 5
   DNS_OFFSET_TO_QUESTION_NAME* = 12
-proc DnsQueryConfig*(Config: DNS_CONFIG_TYPE, Flag: DWORD, pwsAdapterName: PWSTR, pReserved: PVOID, pBuffer: PVOID, pBufferLength: PDWORD): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsRecordCopyEx*(pRecord: PDNS_RECORD, CharSetIn: DNS_CHARSET, CharSetOut: DNS_CHARSET): PDNS_RECORD {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsRecordSetCopyEx*(pRecordSet: PDNS_RECORD, CharSetIn: DNS_CHARSET, CharSetOut: DNS_CHARSET): PDNS_RECORD {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsRecordCompare*(pRecord1: PDNS_RECORD, pRecord2: PDNS_RECORD): WINBOOL {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsRecordSetCompare*(pRR1: PDNS_RECORD, pRR2: PDNS_RECORD, ppDiff1: ptr PDNS_RECORD, ppDiff2: ptr PDNS_RECORD): WINBOOL {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsRecordSetDetach*(pRecordList: PDNS_RECORD): PDNS_RECORD {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsFree*(pData: PVOID, FreeType: DNS_FREE_TYPE): VOID {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsRecordListFree*(pRecordList: PDNS_RECORD, FreeType: DNS_FREE_TYPE): VOID {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsQuery_A*(pszName: PCSTR, wType: WORD, Options: DWORD, aipServers: PIP4_ARRAY, ppQueryResults: ptr PDNS_RECORD, pReserved: ptr PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsQuery_UTF8*(pszName: PCSTR, wType: WORD, Options: DWORD, aipServers: PIP4_ARRAY, ppQueryResults: ptr PDNS_RECORDA, pReserved: ptr PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsQuery_W*(pszName: PCWSTR, wType: WORD, Options: DWORD, aipServers: PIP4_ARRAY, ppQueryResults: ptr PDNS_RECORD, pReserved: ptr PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsAcquireContextHandle_W*(CredentialFlags: DWORD, pCredentials: PVOID, pContextHandle: PHANDLE): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsAcquireContextHandle_A*(CredentialFlags: DWORD, pCredentials: PVOID, pContextHandle: PHANDLE): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsReleaseContextHandle*(hContext: HANDLE): VOID {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsModifyRecordsInSet_W*(pAddRecords: PDNS_RECORD, pDeleteRecords: PDNS_RECORD, Options: DWORD, hContext: HANDLE, pServerList: PIP4_ARRAY, pReserved: PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsModifyRecordsInSet_A*(pAddRecords: PDNS_RECORD, pDeleteRecords: PDNS_RECORD, Options: DWORD, hContext: HANDLE, pServerList: PIP4_ARRAY, pReserved: PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsModifyRecordsInSet_UTF8*(pAddRecords: PDNS_RECORDA, pDeleteRecords: PDNS_RECORDA, Options: DWORD, hContext: HANDLE, pServerList: PIP4_ARRAY, pReserved: PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsReplaceRecordSetW*(pNewSet: PDNS_RECORD, Options: DWORD, hContext: HANDLE, pServerList: PIP4_ARRAY, pReserved: PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsReplaceRecordSetA*(pNewSet: PDNS_RECORD, Options: DWORD, hContext: HANDLE, pServerList: PIP4_ARRAY, pReserved: PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsReplaceRecordSetUTF8*(pNewSet: PDNS_RECORDA, Options: DWORD, hContext: HANDLE, pServerList: PIP4_ARRAY, pReserved: PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsValidateName_UTF8*(pszName: LPCSTR, Format: DNS_NAME_FORMAT): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsValidateName_W*(pwszName: LPCWSTR, Format: DNS_NAME_FORMAT): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsValidateName_A*(pszName: LPCSTR, Format: DNS_NAME_FORMAT): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsNameCompare_A*(pName1: LPSTR, pName2: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsNameCompare_W*(pName1: LPWSTR, pName2: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsWriteQuestionToBuffer_W*(pDnsBuffer: PDNS_MESSAGE_BUFFER, pdwBufferSize: PDWORD, pszName: LPWSTR, wType: WORD, Xid: WORD, fRecursionDesired: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsWriteQuestionToBuffer_UTF8*(pDnsBuffer: PDNS_MESSAGE_BUFFER, pdwBufferSize: LPDWORD, pszName: LPSTR, wType: WORD, Xid: WORD, fRecursionDesired: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsExtractRecordsFromMessage_W*(pDnsBuffer: PDNS_MESSAGE_BUFFER, wMessageLength: WORD, ppRecord: ptr PDNS_RECORD): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
-proc DnsExtractRecordsFromMessage_UTF8*(pDnsBuffer: PDNS_MESSAGE_BUFFER, wMessageLength: WORD, ppRecord: ptr PDNS_RECORDA): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+proc DnsQueryConfig*(
+  Config: DNS_CONFIG_TYPE,
+  Flag: DWORD,
+  pwsAdapterName: PWSTR,
+  pReserved: PVOID,
+  pBuffer: PVOID,
+  pBufferLength: PDWORD,
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsRecordCopyEx*(
+  pRecord: PDNS_RECORD, CharSetIn: DNS_CHARSET, CharSetOut: DNS_CHARSET
+): PDNS_RECORD {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsRecordSetCopyEx*(
+  pRecordSet: PDNS_RECORD, CharSetIn: DNS_CHARSET, CharSetOut: DNS_CHARSET
+): PDNS_RECORD {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsRecordCompare*(
+  pRecord1: PDNS_RECORD, pRecord2: PDNS_RECORD
+): WINBOOL {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsRecordSetCompare*(
+  pRR1: PDNS_RECORD,
+  pRR2: PDNS_RECORD,
+  ppDiff1: ptr PDNS_RECORD,
+  ppDiff2: ptr PDNS_RECORD,
+): WINBOOL {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsRecordSetDetach*(
+  pRecordList: PDNS_RECORD
+): PDNS_RECORD {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsFree*(
+  pData: PVOID, FreeType: DNS_FREE_TYPE
+): VOID {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsRecordListFree*(
+  pRecordList: PDNS_RECORD, FreeType: DNS_FREE_TYPE
+): VOID {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsQuery_A*(
+  pszName: PCSTR,
+  wType: WORD,
+  Options: DWORD,
+  aipServers: PIP4_ARRAY,
+  ppQueryResults: ptr PDNS_RECORD,
+  pReserved: ptr PVOID,
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsQuery_UTF8*(
+  pszName: PCSTR,
+  wType: WORD,
+  Options: DWORD,
+  aipServers: PIP4_ARRAY,
+  ppQueryResults: ptr PDNS_RECORDA,
+  pReserved: ptr PVOID,
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsQuery_W*(
+  pszName: PCWSTR,
+  wType: WORD,
+  Options: DWORD,
+  aipServers: PIP4_ARRAY,
+  ppQueryResults: ptr PDNS_RECORD,
+  pReserved: ptr PVOID,
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsAcquireContextHandle_W*(
+  CredentialFlags: DWORD, pCredentials: PVOID, pContextHandle: PHANDLE
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsAcquireContextHandle_A*(
+  CredentialFlags: DWORD, pCredentials: PVOID, pContextHandle: PHANDLE
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsReleaseContextHandle*(
+  hContext: HANDLE
+): VOID {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsModifyRecordsInSet_W*(
+  pAddRecords: PDNS_RECORD,
+  pDeleteRecords: PDNS_RECORD,
+  Options: DWORD,
+  hContext: HANDLE,
+  pServerList: PIP4_ARRAY,
+  pReserved: PVOID,
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsModifyRecordsInSet_A*(
+  pAddRecords: PDNS_RECORD,
+  pDeleteRecords: PDNS_RECORD,
+  Options: DWORD,
+  hContext: HANDLE,
+  pServerList: PIP4_ARRAY,
+  pReserved: PVOID,
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsModifyRecordsInSet_UTF8*(
+  pAddRecords: PDNS_RECORDA,
+  pDeleteRecords: PDNS_RECORDA,
+  Options: DWORD,
+  hContext: HANDLE,
+  pServerList: PIP4_ARRAY,
+  pReserved: PVOID,
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsReplaceRecordSetW*(
+  pNewSet: PDNS_RECORD,
+  Options: DWORD,
+  hContext: HANDLE,
+  pServerList: PIP4_ARRAY,
+  pReserved: PVOID,
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsReplaceRecordSetA*(
+  pNewSet: PDNS_RECORD,
+  Options: DWORD,
+  hContext: HANDLE,
+  pServerList: PIP4_ARRAY,
+  pReserved: PVOID,
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsReplaceRecordSetUTF8*(
+  pNewSet: PDNS_RECORDA,
+  Options: DWORD,
+  hContext: HANDLE,
+  pServerList: PIP4_ARRAY,
+  pReserved: PVOID,
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsValidateName_UTF8*(
+  pszName: LPCSTR, Format: DNS_NAME_FORMAT
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsValidateName_W*(
+  pwszName: LPCWSTR, Format: DNS_NAME_FORMAT
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsValidateName_A*(
+  pszName: LPCSTR, Format: DNS_NAME_FORMAT
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsNameCompare_A*(
+  pName1: LPSTR, pName2: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsNameCompare_W*(
+  pName1: LPWSTR, pName2: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsWriteQuestionToBuffer_W*(
+  pDnsBuffer: PDNS_MESSAGE_BUFFER,
+  pdwBufferSize: PDWORD,
+  pszName: LPWSTR,
+  wType: WORD,
+  Xid: WORD,
+  fRecursionDesired: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsWriteQuestionToBuffer_UTF8*(
+  pDnsBuffer: PDNS_MESSAGE_BUFFER,
+  pdwBufferSize: LPDWORD,
+  pszName: LPSTR,
+  wType: WORD,
+  Xid: WORD,
+  fRecursionDesired: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsExtractRecordsFromMessage_W*(
+  pDnsBuffer: PDNS_MESSAGE_BUFFER, wMessageLength: WORD, ppRecord: ptr PDNS_RECORD
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
+proc DnsExtractRecordsFromMessage_UTF8*(
+  pDnsBuffer: PDNS_MESSAGE_BUFFER, wMessageLength: WORD, ppRecord: ptr PDNS_RECORDA
+): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc.}
+
 when winimUnicode:
   type
     DNS_RECORD* = DNS_RECORDW
@@ -795,13 +987,44 @@
     PDNS_TSIG_DATA* = PDNS_TSIG_DATAW
     DNS_WINSR_DATA* = DNS_WINSR_DATAW
     PDNS_WINSR_DATA* = PDNS_WINSR_DATAW
+
   const
     DNS_IP4_REVERSE_DOMAIN_STRING* = DNS_IP4_REVERSE_DOMAIN_STRING_W
     DNS_IP6_REVERSE_DOMAIN_STRING* = DNS_IP6_REVERSE_DOMAIN_STRING_W
-  proc DnsQuery*(pszName: PCWSTR, wType: WORD, Options: DWORD, aipServers: PIP4_ARRAY, ppQueryResults: ptr PDNS_RECORD, pReserved: ptr PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc: "DnsQuery_W".}
-  proc DnsAcquireContextHandle*(CredentialFlags: DWORD, pCredentials: PVOID, pContextHandle: PHANDLE): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc: "DnsAcquireContextHandle_W".}
-  proc DnsModifyRecordsInSet*(pAddRecords: PDNS_RECORD, pDeleteRecords: PDNS_RECORD, Options: DWORD, hContext: HANDLE, pServerList: PIP4_ARRAY, pReserved: PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc: "DnsModifyRecordsInSet_W".}
-  proc DnsReplaceRecordSet*(pNewSet: PDNS_RECORD, Options: DWORD, hContext: HANDLE, pServerList: PIP4_ARRAY, pReserved: PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc: "DnsReplaceRecordSetW".}
+  proc DnsQuery*(
+    pszName: PCWSTR,
+    wType: WORD,
+    Options: DWORD,
+    aipServers: PIP4_ARRAY,
+    ppQueryResults: ptr PDNS_RECORD,
+    pReserved: ptr PVOID,
+  ): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc: "DnsQuery_W".}
+
+  proc DnsAcquireContextHandle*(
+    CredentialFlags: DWORD, pCredentials: PVOID, pContextHandle: PHANDLE
+  ): DNS_STATUS {.
+    winapi, stdcall, dynlib: "dnsapi", importc: "DnsAcquireContextHandle_W"
+  .}
+
+  proc DnsModifyRecordsInSet*(
+    pAddRecords: PDNS_RECORD,
+    pDeleteRecords: PDNS_RECORD,
+    Options: DWORD,
+    hContext: HANDLE,
+    pServerList: PIP4_ARRAY,
+    pReserved: PVOID,
+  ): DNS_STATUS {.
+    winapi, stdcall, dynlib: "dnsapi", importc: "DnsModifyRecordsInSet_W"
+  .}
+
+  proc DnsReplaceRecordSet*(
+    pNewSet: PDNS_RECORD,
+    Options: DWORD,
+    hContext: HANDLE,
+    pServerList: PIP4_ARRAY,
+    pReserved: PVOID,
+  ): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc: "DnsReplaceRecordSetW".}
+
 when winimAnsi:
   type
     DNS_RECORD* = DNS_RECORDA
@@ -827,10 +1050,40 @@
     PDNS_TSIG_DATA* = PDNS_TSIG_DATAA
     DNS_WINSR_DATA* = DNS_WINSR_DATAA
     PDNS_WINSR_DATA* = PDNS_WINSR_DATAA
+
   const
     DNS_IP4_REVERSE_DOMAIN_STRING* = DNS_IP4_REVERSE_DOMAIN_STRING_A
     DNS_IP6_REVERSE_DOMAIN_STRING* = DNS_IP6_REVERSE_DOMAIN_STRING_A
-  proc DnsQuery*(pszName: PCSTR, wType: WORD, Options: DWORD, aipServers: PIP4_ARRAY, ppQueryResults: ptr PDNS_RECORD, pReserved: ptr PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc: "DnsQuery_A".}
-  proc DnsAcquireContextHandle*(CredentialFlags: DWORD, pCredentials: PVOID, pContextHandle: PHANDLE): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc: "DnsAcquireContextHandle_A".}
-  proc DnsModifyRecordsInSet*(pAddRecords: PDNS_RECORD, pDeleteRecords: PDNS_RECORD, Options: DWORD, hContext: HANDLE, pServerList: PIP4_ARRAY, pReserved: PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc: "DnsModifyRecordsInSet_A".}
-  proc DnsReplaceRecordSet*(pNewSet: PDNS_RECORD, Options: DWORD, hContext: HANDLE, pServerList: PIP4_ARRAY, pReserved: PVOID): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc: "DnsReplaceRecordSetA".}
+  proc DnsQuery*(
+    pszName: PCSTR,
+    wType: WORD,
+    Options: DWORD,
+    aipServers: PIP4_ARRAY,
+    ppQueryResults: ptr PDNS_RECORD,
+    pReserved: ptr PVOID,
+  ): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc: "DnsQuery_A".}
+
+  proc DnsAcquireContextHandle*(
+    CredentialFlags: DWORD, pCredentials: PVOID, pContextHandle: PHANDLE
+  ): DNS_STATUS {.
+    winapi, stdcall, dynlib: "dnsapi", importc: "DnsAcquireContextHandle_A"
+  .}
+
+  proc DnsModifyRecordsInSet*(
+    pAddRecords: PDNS_RECORD,
+    pDeleteRecords: PDNS_RECORD,
+    Options: DWORD,
+    hContext: HANDLE,
+    pServerList: PIP4_ARRAY,
+    pReserved: PVOID,
+  ): DNS_STATUS {.
+    winapi, stdcall, dynlib: "dnsapi", importc: "DnsModifyRecordsInSet_A"
+  .}
+
+  proc DnsReplaceRecordSet*(
+    pNewSet: PDNS_RECORD,
+    Options: DWORD,
+    hContext: HANDLE,
+    pServerList: PIP4_ARRAY,
+    pReserved: PVOID,
+  ): DNS_STATUS {.winapi, stdcall, dynlib: "dnsapi", importc: "DnsReplaceRecordSetA".}
--- a/semicongine/thirdparty/winim/winim/inc/winefs.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winefs.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -14,47 +14,82 @@
     dwCertEncodingType*: DWORD
     cbData*: DWORD
     pbData*: PBYTE
+
   PEFS_CERTIFICATE_BLOB* = ptr EFS_CERTIFICATE_BLOB
   EFS_HASH_BLOB* {.pure.} = object
     cbData*: DWORD
     pbData*: PBYTE
+
   PEFS_HASH_BLOB* = ptr EFS_HASH_BLOB
   EFS_RPC_BLOB* {.pure.} = object
     cbData*: DWORD
     pbData*: PBYTE
+
   PEFS_RPC_BLOB* = ptr EFS_RPC_BLOB
   EFS_KEY_INFO* {.pure.} = object
     dwVersion*: DWORD
     Entropy*: ULONG
     Algorithm*: ALG_ID
     KeyLength*: ULONG
+
   PEFS_KEY_INFO* = ptr EFS_KEY_INFO
   ENCRYPTION_CERTIFICATE* {.pure.} = object
     cbTotalLength*: DWORD
     pUserSid*: ptr SID
     pCertBlob*: PEFS_CERTIFICATE_BLOB
+
   PENCRYPTION_CERTIFICATE* = ptr ENCRYPTION_CERTIFICATE
   ENCRYPTION_CERTIFICATE_HASH* {.pure.} = object
     cbTotalLength*: DWORD
     pUserSid*: ptr SID
     pHash*: PEFS_HASH_BLOB
     lpDisplayInformation*: LPWSTR
+
   PENCRYPTION_CERTIFICATE_HASH* = ptr ENCRYPTION_CERTIFICATE_HASH
   ENCRYPTION_CERTIFICATE_HASH_LIST* {.pure.} = object
     nCert_Hash*: DWORD
     pUsers*: ptr PENCRYPTION_CERTIFICATE_HASH
+
   PENCRYPTION_CERTIFICATE_HASH_LIST* = ptr ENCRYPTION_CERTIFICATE_HASH_LIST
   ENCRYPTION_CERTIFICATE_LIST* {.pure.} = object
     nUsers*: DWORD
     pUsers*: ptr PENCRYPTION_CERTIFICATE
+
   PENCRYPTION_CERTIFICATE_LIST* = ptr ENCRYPTION_CERTIFICATE_LIST
-const
-  MAX_SID_SIZE* = 256
-proc QueryUsersOnEncryptedFile*(lpFileName: LPCWSTR, pUsers: ptr PENCRYPTION_CERTIFICATE_HASH_LIST): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc QueryRecoveryAgentsOnEncryptedFile*(lpFileName: LPCWSTR, pRecoveryAgents: ptr PENCRYPTION_CERTIFICATE_HASH_LIST): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RemoveUsersFromEncryptedFile*(lpFileName: LPCWSTR, pHashes: PENCRYPTION_CERTIFICATE_HASH_LIST): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AddUsersToEncryptedFile*(lpFileName: LPCWSTR, pUsers: PENCRYPTION_CERTIFICATE_LIST): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetUserFileEncryptionKey*(pEncryptionCertificate: PENCRYPTION_CERTIFICATE): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc FreeEncryptionCertificateHashList*(pHashes: PENCRYPTION_CERTIFICATE_HASH_LIST): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc EncryptionDisable*(DirPath: LPCWSTR, Disable: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc DuplicateEncryptionInfoFile*(SrcFileName: LPCWSTR, DstFileName: LPCWSTR, dwCreationDistribution: DWORD, dwAttributes: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+const MAX_SID_SIZE* = 256
+proc QueryUsersOnEncryptedFile*(
+  lpFileName: LPCWSTR, pUsers: ptr PENCRYPTION_CERTIFICATE_HASH_LIST
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc QueryRecoveryAgentsOnEncryptedFile*(
+  lpFileName: LPCWSTR, pRecoveryAgents: ptr PENCRYPTION_CERTIFICATE_HASH_LIST
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RemoveUsersFromEncryptedFile*(
+  lpFileName: LPCWSTR, pHashes: PENCRYPTION_CERTIFICATE_HASH_LIST
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AddUsersToEncryptedFile*(
+  lpFileName: LPCWSTR, pUsers: PENCRYPTION_CERTIFICATE_LIST
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetUserFileEncryptionKey*(
+  pEncryptionCertificate: PENCRYPTION_CERTIFICATE
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc FreeEncryptionCertificateHashList*(
+  pHashes: PENCRYPTION_CERTIFICATE_HASH_LIST
+): VOID {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc EncryptionDisable*(
+  DirPath: LPCWSTR, Disable: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc DuplicateEncryptionInfoFile*(
+  SrcFileName: LPCWSTR,
+  DstFileName: LPCWSTR,
+  dwCreationDistribution: DWORD,
+  dwAttributes: DWORD,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
--- a/semicongine/thirdparty/winim/winim/inc/winerror.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winerror.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1706,94 +1706,94 @@
   DNS_ERROR_DP_NOT_AVAILABLE* = 9905
   DNS_ERROR_DP_FSMO_ERROR* = 9906
   WSABASEERR* = 10000
-  WSAEINTR* = WSABASEERR+4
-  WSAEBADF* = WSABASEERR+9
-  WSAEACCES* = WSABASEERR+13
-  WSAEFAULT* = WSABASEERR+14
-  WSAEINVAL* = WSABASEERR+22
-  WSAEMFILE* = WSABASEERR+24
-  WSAEWOULDBLOCK* = WSABASEERR+35
-  WSAEINPROGRESS* = WSABASEERR+36
-  WSAEALREADY* = WSABASEERR+37
-  WSAENOTSOCK* = WSABASEERR+38
-  WSAEDESTADDRREQ* = WSABASEERR+39
-  WSAEMSGSIZE* = WSABASEERR+40
-  WSAEPROTOTYPE* = WSABASEERR+41
-  WSAENOPROTOOPT* = WSABASEERR+42
-  WSAEPROTONOSUPPORT* = WSABASEERR+43
-  WSAESOCKTNOSUPPORT* = WSABASEERR+44
-  WSAEOPNOTSUPP* = WSABASEERR+45
-  WSAEPFNOSUPPORT* = WSABASEERR+46
-  WSAEAFNOSUPPORT* = WSABASEERR+47
-  WSAEADDRINUSE* = WSABASEERR+48
-  WSAEADDRNOTAVAIL* = WSABASEERR+49
-  WSAENETDOWN* = WSABASEERR+50
-  WSAENETUNREACH* = WSABASEERR+51
-  WSAENETRESET* = WSABASEERR+52
-  WSAECONNABORTED* = WSABASEERR+53
-  WSAECONNRESET* = WSABASEERR+54
-  WSAENOBUFS* = WSABASEERR+55
-  WSAEISCONN* = WSABASEERR+56
-  WSAENOTCONN* = WSABASEERR+57
-  WSAESHUTDOWN* = WSABASEERR+58
-  WSAETOOMANYREFS* = WSABASEERR+59
-  WSAETIMEDOUT* = WSABASEERR+60
-  WSAECONNREFUSED* = WSABASEERR+61
-  WSAELOOP* = WSABASEERR+62
-  WSAENAMETOOLONG* = WSABASEERR+63
-  WSAEHOSTDOWN* = WSABASEERR+64
-  WSAEHOSTUNREACH* = WSABASEERR+65
-  WSAENOTEMPTY* = WSABASEERR+66
-  WSAEPROCLIM* = WSABASEERR+67
-  WSAEUSERS* = WSABASEERR+68
-  WSAEDQUOT* = WSABASEERR+69
-  WSAESTALE* = WSABASEERR+70
-  WSAEREMOTE* = WSABASEERR+71
-  WSASYSNOTREADY* = WSABASEERR+91
-  WSAVERNOTSUPPORTED* = WSABASEERR+92
-  WSANOTINITIALISED* = WSABASEERR+93
-  WSAEDISCON* = WSABASEERR+101
-  WSAEINVALIDPROCTABLE* = WSABASEERR+104
-  WSAEINVALIDPROVIDER* = WSABASEERR+105
-  WSAEPROVIDERFAILEDINIT* = WSABASEERR+106
-  WSASYSCALLFAILURE* = WSABASEERR+107
-  WSASERVICE_NOT_FOUND* = WSABASEERR+108
-  WSATYPE_NOT_FOUND* = WSABASEERR+109
-  WSA_E_NO_MORE* = WSABASEERR+110
-  WSA_E_CANCELLED* = WSABASEERR+111
-  WSAEREFUSED* = WSABASEERR+112
-  WSAHOST_NOT_FOUND* = WSABASEERR+1001
-  WSATRY_AGAIN* = WSABASEERR+1002
-  WSANO_RECOVERY* = WSABASEERR+1003
-  WSANO_DATA* = WSABASEERR+1004
-  WSA_QOS_RECEIVERS* = WSABASEERR+1005
-  WSA_QOS_SENDERS* = WSABASEERR+1006
-  WSA_QOS_NO_SENDERS* = WSABASEERR+1007
-  WSA_QOS_NO_RECEIVERS* = WSABASEERR+1008
-  WSA_QOS_REQUEST_CONFIRMED* = WSABASEERR+1009
-  WSA_QOS_ADMISSION_FAILURE* = WSABASEERR+1010
-  WSA_QOS_POLICY_FAILURE* = WSABASEERR+1011
-  WSA_QOS_BAD_STYLE* = WSABASEERR+1012
-  WSA_QOS_BAD_OBJECT* = WSABASEERR+1013
-  WSA_QOS_TRAFFIC_CTRL_ERROR* = WSABASEERR+1014
-  WSA_QOS_GENERIC_ERROR* = WSABASEERR+1015
-  WSA_QOS_ESERVICETYPE* = WSABASEERR+1016
-  WSA_QOS_EFLOWSPEC* = WSABASEERR+1017
-  WSA_QOS_EPROVSPECBUF* = WSABASEERR+1018
-  WSA_QOS_EFILTERSTYLE* = WSABASEERR+1019
-  WSA_QOS_EFILTERTYPE* = WSABASEERR+1020
-  WSA_QOS_EFILTERCOUNT* = WSABASEERR+1021
-  WSA_QOS_EOBJLENGTH* = WSABASEERR+1022
-  WSA_QOS_EFLOWCOUNT* = WSABASEERR+1023
-  WSA_QOS_EUNKNOWNPSOBJ* = WSABASEERR+1024
+  WSAEINTR* = WSABASEERR + 4
+  WSAEBADF* = WSABASEERR + 9
+  WSAEACCES* = WSABASEERR + 13
+  WSAEFAULT* = WSABASEERR + 14
+  WSAEINVAL* = WSABASEERR + 22
+  WSAEMFILE* = WSABASEERR + 24
+  WSAEWOULDBLOCK* = WSABASEERR + 35
+  WSAEINPROGRESS* = WSABASEERR + 36
+  WSAEALREADY* = WSABASEERR + 37
+  WSAENOTSOCK* = WSABASEERR + 38
+  WSAEDESTADDRREQ* = WSABASEERR + 39
+  WSAEMSGSIZE* = WSABASEERR + 40
+  WSAEPROTOTYPE* = WSABASEERR + 41
+  WSAENOPROTOOPT* = WSABASEERR + 42
+  WSAEPROTONOSUPPORT* = WSABASEERR + 43
+  WSAESOCKTNOSUPPORT* = WSABASEERR + 44
+  WSAEOPNOTSUPP* = WSABASEERR + 45
+  WSAEPFNOSUPPORT* = WSABASEERR + 46
+  WSAEAFNOSUPPORT* = WSABASEERR + 47
+  WSAEADDRINUSE* = WSABASEERR + 48
+  WSAEADDRNOTAVAIL* = WSABASEERR + 49
+  WSAENETDOWN* = WSABASEERR + 50
+  WSAENETUNREACH* = WSABASEERR + 51
+  WSAENETRESET* = WSABASEERR + 52
+  WSAECONNABORTED* = WSABASEERR + 53
+  WSAECONNRESET* = WSABASEERR + 54
+  WSAENOBUFS* = WSABASEERR + 55
+  WSAEISCONN* = WSABASEERR + 56
+  WSAENOTCONN* = WSABASEERR + 57
+  WSAESHUTDOWN* = WSABASEERR + 58
+  WSAETOOMANYREFS* = WSABASEERR + 59
+  WSAETIMEDOUT* = WSABASEERR + 60
+  WSAECONNREFUSED* = WSABASEERR + 61
+  WSAELOOP* = WSABASEERR + 62
+  WSAENAMETOOLONG* = WSABASEERR + 63
+  WSAEHOSTDOWN* = WSABASEERR + 64
+  WSAEHOSTUNREACH* = WSABASEERR + 65
+  WSAENOTEMPTY* = WSABASEERR + 66
+  WSAEPROCLIM* = WSABASEERR + 67
+  WSAEUSERS* = WSABASEERR + 68
+  WSAEDQUOT* = WSABASEERR + 69
+  WSAESTALE* = WSABASEERR + 70
+  WSAEREMOTE* = WSABASEERR + 71
+  WSASYSNOTREADY* = WSABASEERR + 91
+  WSAVERNOTSUPPORTED* = WSABASEERR + 92
+  WSANOTINITIALISED* = WSABASEERR + 93
+  WSAEDISCON* = WSABASEERR + 101
+  WSAEINVALIDPROCTABLE* = WSABASEERR + 104
+  WSAEINVALIDPROVIDER* = WSABASEERR + 105
+  WSAEPROVIDERFAILEDINIT* = WSABASEERR + 106
+  WSASYSCALLFAILURE* = WSABASEERR + 107
+  WSASERVICE_NOT_FOUND* = WSABASEERR + 108
+  WSATYPE_NOT_FOUND* = WSABASEERR + 109
+  WSA_E_NO_MORE* = WSABASEERR + 110
+  WSA_E_CANCELLED* = WSABASEERR + 111
+  WSAEREFUSED* = WSABASEERR + 112
+  WSAHOST_NOT_FOUND* = WSABASEERR + 1001
+  WSATRY_AGAIN* = WSABASEERR + 1002
+  WSANO_RECOVERY* = WSABASEERR + 1003
+  WSANO_DATA* = WSABASEERR + 1004
+  WSA_QOS_RECEIVERS* = WSABASEERR + 1005
+  WSA_QOS_SENDERS* = WSABASEERR + 1006
+  WSA_QOS_NO_SENDERS* = WSABASEERR + 1007
+  WSA_QOS_NO_RECEIVERS* = WSABASEERR + 1008
+  WSA_QOS_REQUEST_CONFIRMED* = WSABASEERR + 1009
+  WSA_QOS_ADMISSION_FAILURE* = WSABASEERR + 1010
+  WSA_QOS_POLICY_FAILURE* = WSABASEERR + 1011
+  WSA_QOS_BAD_STYLE* = WSABASEERR + 1012
+  WSA_QOS_BAD_OBJECT* = WSABASEERR + 1013
+  WSA_QOS_TRAFFIC_CTRL_ERROR* = WSABASEERR + 1014
+  WSA_QOS_GENERIC_ERROR* = WSABASEERR + 1015
+  WSA_QOS_ESERVICETYPE* = WSABASEERR + 1016
+  WSA_QOS_EFLOWSPEC* = WSABASEERR + 1017
+  WSA_QOS_EPROVSPECBUF* = WSABASEERR + 1018
+  WSA_QOS_EFILTERSTYLE* = WSABASEERR + 1019
+  WSA_QOS_EFILTERTYPE* = WSABASEERR + 1020
+  WSA_QOS_EFILTERCOUNT* = WSABASEERR + 1021
+  WSA_QOS_EOBJLENGTH* = WSABASEERR + 1022
+  WSA_QOS_EFLOWCOUNT* = WSABASEERR + 1023
+  WSA_QOS_EUNKNOWNPSOBJ* = WSABASEERR + 1024
   WSA_QOS_EUNKOWNPSOBJ* = WSA_QOS_EUNKNOWNPSOBJ
-  WSA_QOS_EPOLICYOBJ* = WSABASEERR+1025
-  WSA_QOS_EFLOWDESC* = WSABASEERR+1026
-  WSA_QOS_EPSFLOWSPEC* = WSABASEERR+1027
-  WSA_QOS_EPSFILTERSPEC* = WSABASEERR+1028
-  WSA_QOS_ESDMODEOBJ* = WSABASEERR+1029
-  WSA_QOS_ESHAPERATEOBJ* = WSABASEERR+1030
-  WSA_QOS_RESERVED_PETYPE* = WSABASEERR+1031
+  WSA_QOS_EPOLICYOBJ* = WSABASEERR + 1025
+  WSA_QOS_EFLOWDESC* = WSABASEERR + 1026
+  WSA_QOS_EPSFLOWSPEC* = WSABASEERR + 1027
+  WSA_QOS_EPSFILTERSPEC* = WSABASEERR + 1028
+  WSA_QOS_ESDMODEOBJ* = WSABASEERR + 1029
+  WSA_QOS_ESHAPERATEOBJ* = WSABASEERR + 1030
+  WSA_QOS_RESERVED_PETYPE* = WSABASEERR + 1031
   ERROR_SXS_SECTION_NOT_FOUND* = 14000
   ERROR_SXS_CANT_GEN_ACTCTX* = 14001
   ERROR_SXS_INVALID_ACTCTXDATA_FORMAT* = 14002
@@ -2220,7 +2220,14 @@
   E_FAIL* = HRESULT 0x80004005'i32
   E_ACCESSDENIED* = HRESULT 0x80070005'i32
   E_PENDING* = HRESULT 0x8000000A'i32
-template HRESULT_FROM_WIN32*(x: untyped): HRESULT = (if x <= 0: HRESULT x else: HRESULT(x and 0x0000ffff) or HRESULT(FACILITY_WIN32 shl 16) or HRESULT(0x80000000'i32))
+template HRESULT_FROM_WIN32*(x: untyped): HRESULT =
+  (
+    if x <= 0: HRESULT x
+    else:
+    HRESULT(x and 0x0000ffff) or HRESULT(FACILITY_WIN32 shl 16) or
+      HRESULT(0x80000000'i32)
+  )
+
 const
   E_NOT_SUFFICIENT_BUFFER* = HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
   CO_E_INIT_TLS* = HRESULT 0x80004006'i32
@@ -3551,15 +3558,38 @@
   ERROR_FLT_CONTEXT_ALREADY_LINKED* = HRESULT 0x801F001c'i32
   ERROR_FLT_NO_WAITER_FOR_REPLY* = HRESULT 0x801f0020'i32
   ERROR_FLT_REGISTRATION_BUSY* = HRESULT 0x801F0023'i32
-template SUCCEEDED*(hr: untyped): bool = hr.HRESULT >= 0
-template FAILED*(hr: untyped): bool = hr.HRESULT < 0
-template IS_ERROR*(Status: untyped): bool = Status shr 31 == SEVERITY_ERROR
-template HRESULT_CODE*(hr: untyped): WORD = WORD(hr and 0xFFFF)
-template SCODE_CODE*(sc: untyped): WORD = WORD(sc and 0xFFFF)
-template HRESULT_FACILITY*(hr: untyped): WORD = WORD((hr shr 16) and 0x1fff)
-template SCODE_FACILITY*(sc: untyped): WORD = WORD((sc shr 16) and 0x1fff)
-template HRESULT_SEVERITY*(hr: untyped): DWORD = DWORD((hr shr 31) and 0x1)
-template SCODE_SEVERITY*(sc: untyped): DWORD = DWORD((hr shr 31) and 0x1)
-template MAKE_HRESULT*(sev: untyped, fac: untyped, code: untyped): HRESULT = (sev.HRESULT shl 31) or (fac.HRESULT shl 16) or (code.HRESULT)
-template MAKE_SCODE*(sev: untyped, fac: untyped, code: untyped): HRESULT = (sev.HRESULT shl 31) or (fac.HRESULT shl 16) or (code.HRESULT)
-template HRESULT_FROM_NT*(x: untyped): HRESULT = HRESULT(x or FACILITY_NT_BIT)
+template SUCCEEDED*(hr: untyped): bool =
+  hr.HRESULT >= 0
+
+template FAILED*(hr: untyped): bool =
+  hr.HRESULT < 0
+
+template IS_ERROR*(Status: untyped): bool =
+  Status shr 31 == SEVERITY_ERROR
+
+template HRESULT_CODE*(hr: untyped): WORD =
+  WORD(hr and 0xFFFF)
+
+template SCODE_CODE*(sc: untyped): WORD =
+  WORD(sc and 0xFFFF)
+
+template HRESULT_FACILITY*(hr: untyped): WORD =
+  WORD((hr shr 16) and 0x1fff)
+
+template SCODE_FACILITY*(sc: untyped): WORD =
+  WORD((sc shr 16) and 0x1fff)
+
+template HRESULT_SEVERITY*(hr: untyped): DWORD =
+  DWORD((hr shr 31) and 0x1)
+
+template SCODE_SEVERITY*(sc: untyped): DWORD =
+  DWORD((hr shr 31) and 0x1)
+
+template MAKE_HRESULT*(sev: untyped, fac: untyped, code: untyped): HRESULT =
+  (sev.HRESULT shl 31) or (fac.HRESULT shl 16) or (code.HRESULT)
+
+template MAKE_SCODE*(sev: untyped, fac: untyped, code: untyped): HRESULT =
+  (sev.HRESULT shl 31) or (fac.HRESULT shl 16) or (code.HRESULT)
+
+template HRESULT_FROM_NT*(x: untyped): HRESULT =
+  HRESULT(x or FACILITY_NT_BIT)
--- a/semicongine/thirdparty/winim/winim/inc/wingdi.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/wingdi.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -23,27 +23,29 @@
   LCSCSTYPE* = LONG
   LCSGAMUTMATCH* = LONG
   COLOR16* = USHORT
+
 when winimUnicode:
-  type
-    BCHAR* = WCHAR
+  type BCHAR* = WCHAR
 when winimAnsi:
-  type
-    BCHAR* = BYTE
+  type BCHAR* = BYTE
 type
   DRAWPATRECT* {.pure.} = object
     ptPosition*: POINT
     ptSize*: POINT
     wStyle*: WORD
     wPattern*: WORD
+
   PDRAWPATRECT* = ptr DRAWPATRECT
   PSINJECTDATA* {.pure.} = object
     DataBytes*: DWORD
     InjectionPoint*: WORD
     PageNumber*: WORD
+
   PPSINJECTDATA* = ptr PSINJECTDATA
   PSFEATURE_OUTPUT* {.pure.} = object
     bPageIndependent*: WINBOOL
     bSetPageDevice*: WINBOOL
+
   PPSFEATURE_OUTPUT* = ptr PSFEATURE_OUTPUT
   PSFEATURE_CUSTPAPER* {.pure.} = object
     lOrientation*: LONG
@@ -51,6 +53,7 @@
     lHeight*: LONG
     lWidthOffset*: LONG
     lHeightOffset*: LONG
+
   PPSFEATURE_CUSTPAPER* = ptr PSFEATURE_CUSTPAPER
   XFORM* {.pure.} = object
     eM11*: FLOAT
@@ -59,6 +62,7 @@
     eM22*: FLOAT
     eDx*: FLOAT
     eDy*: FLOAT
+
   PXFORM* = ptr XFORM
   LPXFORM* = ptr XFORM
   BITMAP* {.pure.} = object
@@ -69,6 +73,7 @@
     bmPlanes*: WORD
     bmBitsPixel*: WORD
     bmBits*: LPVOID
+
   PBITMAP* = ptr BITMAP
   NPBITMAP* = ptr BITMAP
   LPBITMAP* = ptr BITMAP
@@ -77,16 +82,19 @@
     rgbGreen*: BYTE
     rgbRed*: BYTE
     rgbReserved*: BYTE
+
   LPRGBQUAD* = ptr RGBQUAD
   CIEXYZ* {.pure.} = object
     ciexyzX*: FXPT2DOT30
     ciexyzY*: FXPT2DOT30
     ciexyzZ*: FXPT2DOT30
+
   LPCIEXYZ* = ptr CIEXYZ
   CIEXYZTRIPLE* {.pure.} = object
     ciexyzRed*: CIEXYZ
     ciexyzGreen*: CIEXYZ
     ciexyzBlue*: CIEXYZ
+
   LPCIEXYZTRIPLE* = ptr CIEXYZTRIPLE
   LOGCOLORSPACEA* {.pure.} = object
     lcsSignature*: DWORD
@@ -99,6 +107,7 @@
     lcsGammaGreen*: DWORD
     lcsGammaBlue*: DWORD
     lcsFilename*: array[MAX_PATH, CHAR]
+
   LPLOGCOLORSPACEA* = ptr LOGCOLORSPACEA
   LOGCOLORSPACEW* {.pure.} = object
     lcsSignature*: DWORD
@@ -111,6 +120,7 @@
     lcsGammaGreen*: DWORD
     lcsGammaBlue*: DWORD
     lcsFilename*: array[MAX_PATH, WCHAR]
+
   LPLOGCOLORSPACEW* = ptr LOGCOLORSPACEW
   BITMAPCOREHEADER* {.pure.} = object
     bcSize*: DWORD
@@ -118,6 +128,7 @@
     bcHeight*: WORD
     bcPlanes*: WORD
     bcBitCount*: WORD
+
   LPBITMAPCOREHEADER* = ptr BITMAPCOREHEADER
   PBITMAPCOREHEADER* = ptr BITMAPCOREHEADER
   BITMAPINFOHEADER* {.pure.} = object
@@ -132,6 +143,7 @@
     biYPelsPerMeter*: LONG
     biClrUsed*: DWORD
     biClrImportant*: DWORD
+
   LPBITMAPINFOHEADER* = ptr BITMAPINFOHEADER
   PBITMAPINFOHEADER* = ptr BITMAPINFOHEADER
   BITMAPV4HEADER* {.pure.} = object
@@ -155,6 +167,7 @@
     bV4GammaRed*: DWORD
     bV4GammaGreen*: DWORD
     bV4GammaBlue*: DWORD
+
   LPBITMAPV4HEADER* = ptr BITMAPV4HEADER
   PBITMAPV4HEADER* = ptr BITMAPV4HEADER
   BITMAPV5HEADER* {.pure.} = object
@@ -182,20 +195,24 @@
     bV5ProfileData*: DWORD
     bV5ProfileSize*: DWORD
     bV5Reserved*: DWORD
+
   LPBITMAPV5HEADER* = ptr BITMAPV5HEADER
   PBITMAPV5HEADER* = ptr BITMAPV5HEADER
   BITMAPINFO* {.pure.} = object
     bmiHeader*: BITMAPINFOHEADER
     bmiColors*: array[1, RGBQUAD]
+
   LPBITMAPINFO* = ptr BITMAPINFO
   PBITMAPINFO* = ptr BITMAPINFO
   RGBTRIPLE* {.pure.} = object
     rgbtBlue*: BYTE
     rgbtGreen*: BYTE
     rgbtRed*: BYTE
+
   BITMAPCOREINFO* {.pure.} = object
     bmciHeader*: BITMAPCOREHEADER
     bmciColors*: array[1, RGBTRIPLE]
+
   LPBITMAPCOREINFO* = ptr BITMAPCOREINFO
   PBITMAPCOREINFO* = ptr BITMAPCOREINFO
   BITMAPFILEHEADER* {.pure, packed.} = object
@@ -204,17 +221,20 @@
     bfReserved1*: WORD
     bfReserved2*: WORD
     bfOffBits*: DWORD
+
   LPBITMAPFILEHEADER* = ptr BITMAPFILEHEADER
   PBITMAPFILEHEADER* = ptr BITMAPFILEHEADER
   FONTSIGNATURE* {.pure.} = object
     fsUsb*: array[4, DWORD]
     fsCsb*: array[2, DWORD]
+
   PFONTSIGNATURE* = ptr FONTSIGNATURE
   LPFONTSIGNATURE* = ptr FONTSIGNATURE
   CHARSETINFO* {.pure.} = object
     ciCharset*: UINT
     ciACP*: UINT
     fs*: FONTSIGNATURE
+
   PCHARSETINFO* = ptr CHARSETINFO
   NPCHARSETINFO* = ptr CHARSETINFO
   LPCHARSETINFO* = ptr CHARSETINFO
@@ -222,16 +242,19 @@
     lsUsb*: array[4, DWORD]
     lsCsbDefault*: array[2, DWORD]
     lsCsbSupported*: array[2, DWORD]
+
   PLOCALESIGNATURE* = ptr LOCALESIGNATURE
   LPLOCALESIGNATURE* = ptr LOCALESIGNATURE
   HANDLETABLE* {.pure.} = object
     objectHandle*: array[1, HGDIOBJ]
+
   PHANDLETABLE* = ptr HANDLETABLE
   LPHANDLETABLE* = ptr HANDLETABLE
   METARECORD* {.pure.} = object
     rdSize*: DWORD
     rdFunction*: WORD
     rdParm*: array[1, WORD]
+
   PMETARECORD* = ptr METARECORD
   LPMETARECORD* = ptr METARECORD
   METAFILEPICT* {.pure.} = object
@@ -239,6 +262,7 @@
     xExt*: LONG
     yExt*: LONG
     hMF*: HMETAFILE
+
   LPMETAFILEPICT* = ptr METAFILEPICT
   METAHEADER* {.pure, packed.} = object
     mtType*: WORD
@@ -248,12 +272,14 @@
     mtNoObjects*: WORD
     mtMaxRecord*: DWORD
     mtNoParameters*: WORD
+
   PMETAHEADER* = ptr METAHEADER
   LPMETAHEADER* = ptr METAHEADER
   ENHMETARECORD* {.pure.} = object
     iType*: DWORD
     nSize*: DWORD
     dParm*: array[1, DWORD]
+
   PENHMETARECORD* = ptr ENHMETARECORD
   LPENHMETARECORD* = ptr ENHMETARECORD
   ENHMETAHEADER* {.pure.} = object
@@ -276,6 +302,7 @@
     offPixelFormat*: DWORD
     bOpenGL*: DWORD
     szlMicrometers*: SIZEL
+
   PENHMETAHEADER* = ptr ENHMETAHEADER
   LPENHMETAHEADER* = ptr ENHMETAHEADER
   TEXTMETRICA* {.pure.} = object
@@ -299,6 +326,7 @@
     tmStruckOut*: BYTE
     tmPitchAndFamily*: BYTE
     tmCharSet*: BYTE
+
   PTEXTMETRICA* = ptr TEXTMETRICA
   NPTEXTMETRICA* = ptr TEXTMETRICA
   LPTEXTMETRICA* = ptr TEXTMETRICA
@@ -323,6 +351,7 @@
     tmStruckOut*: BYTE
     tmPitchAndFamily*: BYTE
     tmCharSet*: BYTE
+
   PTEXTMETRICW* = ptr TEXTMETRICW
   NPTEXTMETRICW* = ptr TEXTMETRICW
   LPTEXTMETRICW* = ptr TEXTMETRICW
@@ -351,6 +380,7 @@
     ntmSizeEM*: UINT
     ntmCellHeight*: UINT
     ntmAvgWidth*: UINT
+
   PNEWTEXTMETRICA* = ptr NEWTEXTMETRICA
   NPNEWTEXTMETRICA* = ptr NEWTEXTMETRICA
   LPNEWTEXTMETRICA* = ptr NEWTEXTMETRICA
@@ -379,6 +409,7 @@
     ntmSizeEM*: UINT
     ntmCellHeight*: UINT
     ntmAvgWidth*: UINT
+
   PNEWTEXTMETRICW* = ptr NEWTEXTMETRICW
   NPNEWTEXTMETRICW* = ptr NEWTEXTMETRICW
   LPNEWTEXTMETRICW* = ptr NEWTEXTMETRICW
@@ -388,6 +419,7 @@
     paXExt*: LONG
     paYExt*: LONG
     paRGBs*: BYTE
+
   PPELARRAY* = ptr PELARRAY
   NPPELARRAY* = ptr PELARRAY
   LPPELARRAY* = ptr PELARRAY
@@ -395,6 +427,7 @@
     lbStyle*: UINT
     lbColor*: COLORREF
     lbHatch*: ULONG_PTR
+
   PLOGBRUSH* = ptr LOGBRUSH
   NPLOGBRUSH* = ptr LOGBRUSH
   LPLOGBRUSH* = ptr LOGBRUSH
@@ -402,6 +435,7 @@
     lbStyle*: UINT
     lbColor*: COLORREF
     lbHatch*: ULONG
+
   PLOGBRUSH32* = ptr LOGBRUSH32
   NPLOGBRUSH32* = ptr LOGBRUSH32
   LPLOGBRUSH32* = ptr LOGBRUSH32
@@ -413,6 +447,7 @@
     lopnStyle*: UINT
     lopnWidth*: POINT
     lopnColor*: COLORREF
+
   PLOGPEN* = ptr LOGPEN
   NPLOGPEN* = ptr LOGPEN
   LPLOGPEN* = ptr LOGPEN
@@ -424,6 +459,7 @@
     elpHatch*: ULONG_PTR
     elpNumEntries*: DWORD
     elpStyleEntry*: array[1, DWORD]
+
   PEXTLOGPEN* = ptr EXTLOGPEN
   NPEXTLOGPEN* = ptr EXTLOGPEN
   LPEXTLOGPEN* = ptr EXTLOGPEN
@@ -435,6 +471,7 @@
     elpHatch*: ULONG
     elpNumEntries*: DWORD
     elpStyleEntry*: array[1, DWORD]
+
   PEXTLOGPEN32* = ptr EXTLOGPEN32
   NPEXTLOGPEN32* = ptr EXTLOGPEN32
   LPEXTLOGPEN32* = ptr EXTLOGPEN32
@@ -443,17 +480,19 @@
     peGreen*: BYTE
     peBlue*: BYTE
     peFlags*: BYTE
+
   PPALETTEENTRY* = ptr PALETTEENTRY
   LPPALETTEENTRY* = ptr PALETTEENTRY
   LOGPALETTE* {.pure.} = object
     palVersion*: WORD
     palNumEntries*: WORD
     palPalEntry*: array[1, PALETTEENTRY]
+
   PLOGPALETTE* = ptr LOGPALETTE
   NPLOGPALETTE* = ptr LOGPALETTE
   LPLOGPALETTE* = ptr LOGPALETTE
-const
-  LF_FACESIZE* = 32
+
+const LF_FACESIZE* = 32
 type
   LOGFONTA* {.pure.} = object
     lfHeight*: LONG
@@ -470,6 +509,7 @@
     lfQuality*: BYTE
     lfPitchAndFamily*: BYTE
     lfFaceName*: array[LF_FACESIZE, CHAR]
+
   PLOGFONTA* = ptr LOGFONTA
   NPLOGFONTA* = ptr LOGFONTA
   LPLOGFONTA* = ptr LOGFONTA
@@ -488,33 +528,38 @@
     lfQuality*: BYTE
     lfPitchAndFamily*: BYTE
     lfFaceName*: array[LF_FACESIZE, WCHAR]
+
   PLOGFONTW* = ptr LOGFONTW
   NPLOGFONTW* = ptr LOGFONTW
   LPLOGFONTW* = ptr LOGFONTW
-const
-  LF_FULLFACESIZE* = 64
+
+const LF_FULLFACESIZE* = 64
 type
   ENUMLOGFONTA* {.pure.} = object
     elfLogFont*: LOGFONTA
     elfFullName*: array[LF_FULLFACESIZE, BYTE]
     elfStyle*: array[LF_FACESIZE, BYTE]
+
   LPENUMLOGFONTA* = ptr ENUMLOGFONTA
   ENUMLOGFONTW* {.pure.} = object
     elfLogFont*: LOGFONTW
     elfFullName*: array[LF_FULLFACESIZE, WCHAR]
     elfStyle*: array[LF_FACESIZE, WCHAR]
+
   LPENUMLOGFONTW* = ptr ENUMLOGFONTW
   ENUMLOGFONTEXA* {.pure.} = object
     elfLogFont*: LOGFONTA
     elfFullName*: array[LF_FULLFACESIZE, BYTE]
     elfStyle*: array[LF_FACESIZE, BYTE]
     elfScript*: array[LF_FACESIZE, BYTE]
+
   LPENUMLOGFONTEXA* = ptr ENUMLOGFONTEXA
   ENUMLOGFONTEXW* {.pure.} = object
     elfLogFont*: LOGFONTW
     elfFullName*: array[LF_FULLFACESIZE, WCHAR]
     elfStyle*: array[LF_FACESIZE, WCHAR]
     elfScript*: array[LF_FACESIZE, WCHAR]
+
   LPENUMLOGFONTEXW* = ptr ENUMLOGFONTEXW
   PANOSE* {.pure.} = object
     bFamilyType*: BYTE
@@ -527,9 +572,10 @@
     bLetterform*: BYTE
     bMidline*: BYTE
     bXHeight*: BYTE
+
   LPPANOSE* = ptr PANOSE
-const
-  ELF_VENDOR_SIZE* = 4
+
+const ELF_VENDOR_SIZE* = 4
 type
   EXTLOGFONTA* {.pure.} = object
     elfLogFont*: LOGFONTA
@@ -542,6 +588,7 @@
     elfVendorId*: array[ELF_VENDOR_SIZE, BYTE]
     elfCulture*: DWORD
     elfPanose*: PANOSE
+
   PEXTLOGFONTA* = ptr EXTLOGFONTA
   NPEXTLOGFONTA* = ptr EXTLOGFONTA
   LPEXTLOGFONTA* = ptr EXTLOGFONTA
@@ -556,11 +603,12 @@
     elfVendorId*: array[ELF_VENDOR_SIZE, BYTE]
     elfCulture*: DWORD
     elfPanose*: PANOSE
+
   PEXTLOGFONTW* = ptr EXTLOGFONTW
   NPEXTLOGFONTW* = ptr EXTLOGFONTW
   LPEXTLOGFONTW* = ptr EXTLOGFONTW
-const
-  CCHDEVICENAME* = 32
+
+const CCHDEVICENAME* = 32
 type
   DEVMODEA_UNION1_STRUCT1* {.pure.} = object
     dmOrientation*: int16
@@ -571,19 +619,22 @@
     dmCopies*: int16
     dmDefaultSource*: int16
     dmPrintQuality*: int16
+
   DEVMODEA_UNION1_STRUCT2* {.pure.} = object
     dmPosition*: POINTL
     dmDisplayOrientation*: DWORD
     dmDisplayFixedOutput*: DWORD
+
   DEVMODEA_UNION1* {.pure, union.} = object
     struct1*: DEVMODEA_UNION1_STRUCT1
     struct2*: DEVMODEA_UNION1_STRUCT2
-const
-  CCHFORMNAME* = 32
+
+const CCHFORMNAME* = 32
 type
   DEVMODEA_UNION2* {.pure, union.} = object
     dmDisplayFlags*: DWORD
     dmNup*: DWORD
+
   DEVMODEA* {.pure.} = object
     dmDeviceName*: array[CCHDEVICENAME, BYTE]
     dmSpecVersion*: WORD
@@ -612,6 +663,7 @@
     dmReserved2*: DWORD
     dmPanningWidth*: DWORD
     dmPanningHeight*: DWORD
+
   PDEVMODEA* = ptr DEVMODEA
   NPDEVMODEA* = ptr DEVMODEA
   LPDEVMODEA* = ptr DEVMODEA
@@ -624,16 +676,20 @@
     dmCopies*: int16
     dmDefaultSource*: int16
     dmPrintQuality*: int16
+
   DEVMODEW_UNION1_STRUCT2* {.pure.} = object
     dmPosition*: POINTL
     dmDisplayOrientation*: DWORD
     dmDisplayFixedOutput*: DWORD
+
   DEVMODEW_UNION1* {.pure, union.} = object
     struct1*: DEVMODEW_UNION1_STRUCT1
     struct2*: DEVMODEW_UNION1_STRUCT2
+
   DEVMODEW_UNION2* {.pure, union.} = object
     dmDisplayFlags*: DWORD
     dmNup*: DWORD
+
   DEVMODEW* {.pure.} = object
     dmDeviceName*: array[CCHDEVICENAME, WCHAR]
     dmSpecVersion*: WORD
@@ -662,6 +718,7 @@
     dmReserved2*: DWORD
     dmPanningWidth*: DWORD
     dmPanningHeight*: DWORD
+
   PDEVMODEW* = ptr DEVMODEW
   NPDEVMODEW* = ptr DEVMODEW
   LPDEVMODEW* = ptr DEVMODEW
@@ -672,6 +729,7 @@
     StateFlags*: DWORD
     DeviceID*: array[128, CHAR]
     DeviceKey*: array[128, CHAR]
+
   PDISPLAY_DEVICEA* = ptr DISPLAY_DEVICEA
   LPDISPLAY_DEVICEA* = ptr DISPLAY_DEVICEA
   DISPLAY_DEVICEW* {.pure.} = object
@@ -681,6 +739,7 @@
     StateFlags*: DWORD
     DeviceID*: array[128, WCHAR]
     DeviceKey*: array[128, WCHAR]
+
   PDISPLAY_DEVICEW* = ptr DISPLAY_DEVICEW
   LPDISPLAY_DEVICEW* = ptr DISPLAY_DEVICEW
   RGNDATAHEADER* {.pure.} = object
@@ -689,10 +748,12 @@
     nCount*: DWORD
     nRgnSize*: DWORD
     rcBound*: RECT
+
   PRGNDATAHEADER* = ptr RGNDATAHEADER
   RGNDATA* {.pure.} = object
     rdh*: RGNDATAHEADER
     Buffer*: array[1, char]
+
   PRGNDATA* = ptr RGNDATA
   NPRGNDATA* = ptr RGNDATA
   LPRGNDATA* = ptr RGNDATA
@@ -700,6 +761,7 @@
     abcA*: int32
     abcB*: UINT
     abcC*: int32
+
   PABC* = ptr ABC
   NPABC* = ptr ABC
   LPABC* = ptr ABC
@@ -707,6 +769,7 @@
     abcfA*: FLOAT
     abcfB*: FLOAT
     abcfC*: FLOAT
+
   PABCFLOAT* = ptr ABCFLOAT
   NPABCFLOAT* = ptr ABCFLOAT
   LPABCFLOAT* = ptr ABCFLOAT
@@ -743,6 +806,7 @@
     otmpFaceName*: PSTR
     otmpStyleName*: PSTR
     otmpFullName*: PSTR
+
   POUTLINETEXTMETRICA* = ptr OUTLINETEXTMETRICA
   NPOUTLINETEXTMETRICA* = ptr OUTLINETEXTMETRICA
   LPOUTLINETEXTMETRICA* = ptr OUTLINETEXTMETRICA
@@ -779,6 +843,7 @@
     otmpFaceName*: PSTR
     otmpStyleName*: PSTR
     otmpFullName*: PSTR
+
   POUTLINETEXTMETRICW* = ptr OUTLINETEXTMETRICW
   NPOUTLINETEXTMETRICW* = ptr OUTLINETEXTMETRICW
   LPOUTLINETEXTMETRICW* = ptr OUTLINETEXTMETRICW
@@ -790,6 +855,7 @@
     uiFlags*: UINT
     rcl*: RECT
     pdx*: ptr int32
+
   PPOLYTEXTA* = ptr POLYTEXTA
   NPPOLYTEXTA* = ptr POLYTEXTA
   LPPOLYTEXTA* = ptr POLYTEXTA
@@ -801,17 +867,20 @@
     uiFlags*: UINT
     rcl*: RECT
     pdx*: ptr int32
+
   PPOLYTEXTW* = ptr POLYTEXTW
   NPPOLYTEXTW* = ptr POLYTEXTW
   LPPOLYTEXTW* = ptr POLYTEXTW
   FIXED* {.pure.} = object
     fract*: WORD
     value*: int16
+
   MAT2* {.pure.} = object
     eM11*: FIXED
     eM12*: FIXED
     eM21*: FIXED
     eM22*: FIXED
+
   LPMAT2* = ptr MAT2
   GLYPHMETRICS* {.pure.} = object
     gmBlackBoxX*: UINT
@@ -819,20 +888,24 @@
     gmptGlyphOrigin*: POINT
     gmCellIncX*: int16
     gmCellIncY*: int16
+
   LPGLYPHMETRICS* = ptr GLYPHMETRICS
   POINTFX* {.pure.} = object
     x*: FIXED
     y*: FIXED
+
   LPPOINTFX* = ptr POINTFX
   TTPOLYCURVE* {.pure.} = object
     wType*: WORD
     cpfx*: WORD
     apfx*: array[1, POINTFX]
+
   LPTTPOLYCURVE* = ptr TTPOLYCURVE
   TTPOLYGONHEADER* {.pure.} = object
     cb*: DWORD
     dwType*: DWORD
     pfxStart*: POINTFX
+
   LPTTPOLYGONHEADER* = ptr TTPOLYGONHEADER
   GCP_RESULTSA* {.pure.} = object
     lStructSize*: DWORD
@@ -844,6 +917,7 @@
     lpGlyphs*: LPWSTR
     nGlyphs*: UINT
     nMaxFit*: int32
+
   LPGCP_RESULTSA* = ptr GCP_RESULTSA
   GCP_RESULTSW* {.pure.} = object
     lStructSize*: DWORD
@@ -855,11 +929,13 @@
     lpGlyphs*: LPWSTR
     nGlyphs*: UINT
     nMaxFit*: int32
+
   LPGCP_RESULTSW* = ptr GCP_RESULTSW
   RASTERIZER_STATUS* {.pure.} = object
     nSize*: int16
     wFlags*: int16
     nLanguageID*: int16
+
   LPRASTERIZER_STATUS* = ptr RASTERIZER_STATUS
   PIXELFORMATDESCRIPTOR* {.pure.} = object
     nSize*: WORD
@@ -888,15 +964,21 @@
     dwLayerMask*: DWORD
     dwVisibleMask*: DWORD
     dwDamageMask*: DWORD
+
   PPIXELFORMATDESCRIPTOR* = ptr PIXELFORMATDESCRIPTOR
   LPPIXELFORMATDESCRIPTOR* = ptr PIXELFORMATDESCRIPTOR
-  OLDFONTENUMPROCA* = proc (P1: ptr LOGFONTA, P2: ptr TEXTMETRICA, P3: DWORD, P4: LPARAM): int32 {.stdcall.}
+  OLDFONTENUMPROCA* = proc(
+    P1: ptr LOGFONTA, P2: ptr TEXTMETRICA, P3: DWORD, P4: LPARAM
+  ): int32 {.stdcall.}
   FONTENUMPROCA* = OLDFONTENUMPROCA
-  OLDFONTENUMPROCW* = proc (P1: ptr LOGFONTW, P2: ptr TEXTMETRICW, P3: DWORD, P4: LPARAM): int32 {.stdcall.}
+  OLDFONTENUMPROCW* = proc(
+    P1: ptr LOGFONTW, P2: ptr TEXTMETRICW, P3: DWORD, P4: LPARAM
+  ): int32 {.stdcall.}
   FONTENUMPROCW* = OLDFONTENUMPROCW
   WCRANGE* {.pure.} = object
     wcLow*: WCHAR
     cGlyphs*: USHORT
+
   PWCRANGE* = ptr WCRANGE
   LPWCRANGE* = ptr WCRANGE
   GLYPHSET* {.pure.} = object
@@ -905,79 +987,94 @@
     cGlyphsSupported*: DWORD
     cRanges*: DWORD
     ranges*: array[1, WCRANGE]
+
   PGLYPHSET* = ptr GLYPHSET
   LPGLYPHSET* = ptr GLYPHSET
-const
-  MM_MAX_NUMAXES* = 16
+
+const MM_MAX_NUMAXES* = 16
 type
   DESIGNVECTOR* {.pure.} = object
     dvReserved*: DWORD
     dvNumAxes*: DWORD
     dvValues*: array[MM_MAX_NUMAXES, LONG]
+
   PDESIGNVECTOR* = ptr DESIGNVECTOR
   LPDESIGNVECTOR* = ptr DESIGNVECTOR
-const
-  MM_MAX_AXES_NAMELEN* = 16
+
+const MM_MAX_AXES_NAMELEN* = 16
 type
   AXISINFOA* {.pure.} = object
     axMinValue*: LONG
     axMaxValue*: LONG
     axAxisName*: array[MM_MAX_AXES_NAMELEN, BYTE]
+
   PAXISINFOA* = ptr AXISINFOA
   LPAXISINFOA* = ptr AXISINFOA
   AXISINFOW* {.pure.} = object
     axMinValue*: LONG
     axMaxValue*: LONG
     axAxisName*: array[MM_MAX_AXES_NAMELEN, WCHAR]
+
   PAXISINFOW* = ptr AXISINFOW
   LPAXISINFOW* = ptr AXISINFOW
   AXESLISTA* {.pure.} = object
     axlReserved*: DWORD
     axlNumAxes*: DWORD
     axlAxisInfo*: array[MM_MAX_NUMAXES, AXISINFOA]
+
   PAXESLISTA* = ptr AXESLISTA
   LPAXESLISTA* = ptr AXESLISTA
   AXESLISTW* {.pure.} = object
     axlReserved*: DWORD
     axlNumAxes*: DWORD
     axlAxisInfo*: array[MM_MAX_NUMAXES, AXISINFOW]
+
   PAXESLISTW* = ptr AXESLISTW
   LPAXESLISTW* = ptr AXESLISTW
   ENUMLOGFONTEXDVA* {.pure.} = object
     elfEnumLogfontEx*: ENUMLOGFONTEXA
     elfDesignVector*: DESIGNVECTOR
+
   PENUMLOGFONTEXDVA* = ptr ENUMLOGFONTEXDVA
   LPENUMLOGFONTEXDVA* = ptr ENUMLOGFONTEXDVA
   ENUMLOGFONTEXDVW* {.pure.} = object
     elfEnumLogfontEx*: ENUMLOGFONTEXW
     elfDesignVector*: DESIGNVECTOR
+
   PENUMLOGFONTEXDVW* = ptr ENUMLOGFONTEXDVW
   LPENUMLOGFONTEXDVW* = ptr ENUMLOGFONTEXDVW
   NEWTEXTMETRICEXA* {.pure.} = object
     ntmTm*: NEWTEXTMETRICA
     ntmFontSig*: FONTSIGNATURE
+
   ENUMTEXTMETRICA* {.pure.} = object
     etmNewTextMetricEx*: NEWTEXTMETRICEXA
     etmAxesList*: AXESLISTA
+
   PENUMTEXTMETRICA* = ptr ENUMTEXTMETRICA
   LPENUMTEXTMETRICA* = ptr ENUMTEXTMETRICA
   NEWTEXTMETRICEXW* {.pure.} = object
     ntmTm*: NEWTEXTMETRICW
     ntmFontSig*: FONTSIGNATURE
+
   ENUMTEXTMETRICW* {.pure.} = object
     etmNewTextMetricEx*: NEWTEXTMETRICEXW
     etmAxesList*: AXESLISTW
+
   PENUMTEXTMETRICW* = ptr ENUMTEXTMETRICW
   LPENUMTEXTMETRICW* = ptr ENUMTEXTMETRICW
-  DDRAWMARSHCALLBACKMARSHAL* = proc (hGdiObj: HGDIOBJ, pGdiRef: LPVOID, ppDDrawRef: ptr LPVOID): HRESULT {.stdcall.}
-  DDRAWMARSHCALLBACKUNMARSHAL* = proc (pData: LPVOID, phdc: ptr HDC, ppDDrawRef: ptr LPVOID): HRESULT {.stdcall.}
-  DDRAWMARSHCALLBACKRELEASE* = proc (pDDrawRef: LPVOID): HRESULT {.stdcall.}
+  DDRAWMARSHCALLBACKMARSHAL* =
+    proc(hGdiObj: HGDIOBJ, pGdiRef: LPVOID, ppDDrawRef: ptr LPVOID): HRESULT {.stdcall.}
+  DDRAWMARSHCALLBACKUNMARSHAL* =
+    proc(pData: LPVOID, phdc: ptr HDC, ppDDrawRef: ptr LPVOID): HRESULT {.stdcall.}
+  DDRAWMARSHCALLBACKRELEASE* = proc(pDDrawRef: LPVOID): HRESULT {.stdcall.}
   GDIREGISTERDDRAWPACKET* {.pure.} = object
     dwSize*: DWORD
     dwVersion*: DWORD
     pfnDdMarshal*: DDRAWMARSHCALLBACKMARSHAL
     pfnDdUnmarshal*: DDRAWMARSHCALLBACKUNMARSHAL
     pfnDdRelease*: DDRAWMARSHCALLBACKRELEASE
+
   PGDIREGISTERDDRAWPACKET* = ptr GDIREGISTERDDRAWPACKET
   TRIVERTEX* {.pure.} = object
     x*: LONG
@@ -986,17 +1083,20 @@
     Green*: COLOR16
     Blue*: COLOR16
     Alpha*: COLOR16
+
   PTRIVERTEX* = ptr TRIVERTEX
   LPTRIVERTEX* = ptr TRIVERTEX
   GRADIENT_TRIANGLE* {.pure.} = object
     Vertex1*: ULONG
     Vertex2*: ULONG
     Vertex3*: ULONG
+
   PGRADIENT_TRIANGLE* = ptr GRADIENT_TRIANGLE
   LPGRADIENT_TRIANGLE* = ptr GRADIENT_TRIANGLE
   GRADIENT_RECT* {.pure.} = object
     UpperLeft*: ULONG
     LowerRight*: ULONG
+
   PGRADIENT_RECT* = ptr GRADIENT_RECT
   LPGRADIENT_RECT* = ptr GRADIENT_RECT
   BLENDFUNCTION* {.pure.} = object
@@ -1004,6 +1104,7 @@
     BlendFlags*: BYTE
     SourceConstantAlpha*: BYTE
     AlphaFormat*: BYTE
+
   PBLENDFUNCTION* = ptr BLENDFUNCTION
   DIBSECTION* {.pure.} = object
     dsBm*: BITMAP
@@ -1011,6 +1112,7 @@
     dsBitfields*: array[3, DWORD]
     dshSection*: HANDLE
     dsOffset*: DWORD
+
   LPDIBSECTION* = ptr DIBSECTION
   PDIBSECTION* = ptr DIBSECTION
   COLORADJUSTMENT* {.pure.} = object
@@ -1026,6 +1128,7 @@
     caBrightness*: SHORT
     caColorfulness*: SHORT
     caRedGreenTint*: SHORT
+
   PCOLORADJUSTMENT* = ptr COLORADJUSTMENT
   LPCOLORADJUSTMENT* = ptr COLORADJUSTMENT
   DOCINFOA* {.pure.} = object
@@ -1034,6 +1137,7 @@
     lpszOutput*: LPCSTR
     lpszDatatype*: LPCSTR
     fwType*: DWORD
+
   LPDOCINFOA* = ptr DOCINFOA
   DOCINFOW* {.pure.} = object
     cbSize*: int32
@@ -1041,15 +1145,18 @@
     lpszOutput*: LPCWSTR
     lpszDatatype*: LPCWSTR
     fwType*: DWORD
+
   LPDOCINFOW* = ptr DOCINFOW
   KERNINGPAIR* {.pure.} = object
     wFirst*: WORD
     wSecond*: WORD
     iKernAmount*: int32
+
   LPKERNINGPAIR* = ptr KERNINGPAIR
   EMR* {.pure.} = object
     iType*: DWORD
     nSize*: DWORD
+
   PEMR* = ptr EMR
   EMRTEXT* {.pure.} = object
     ptlReference*: POINTL
@@ -1058,9 +1165,11 @@
     fOptions*: DWORD
     rcl*: RECTL
     offDx*: DWORD
+
   PEMRTEXT* = ptr EMRTEXT
   EMRABORTPATH* {.pure.} = object
     emr*: EMR
+
   PEMRABORTPATH* = ptr EMRABORTPATH
   EMRBEGINPATH* = EMRABORTPATH
   PEMRBEGINPATH* = ptr EMRABORTPATH
@@ -1081,6 +1190,7 @@
   EMRSELECTCLIPPATH* {.pure.} = object
     emr*: EMR
     iMode*: DWORD
+
   PEMRSELECTCLIPPATH* = ptr EMRSELECTCLIPPATH
   EMRSETBKMODE* = EMRSELECTCLIPPATH
   PEMRSETBKMODE* = ptr EMRSELECTCLIPPATH
@@ -1101,39 +1211,47 @@
   EMRSETMITERLIMIT* {.pure.} = object
     emr*: EMR
     eMiterLimit*: FLOAT
+
   PEMRSETMITERLIMIT* = ptr EMRSETMITERLIMIT
   EMRRESTOREDC* {.pure.} = object
     emr*: EMR
     iRelative*: LONG
+
   PEMRRESTOREDC* = ptr EMRRESTOREDC
   EMRSETARCDIRECTION* {.pure.} = object
     emr*: EMR
     iArcDirection*: DWORD
+
   PEMRSETARCDIRECTION* = ptr EMRSETARCDIRECTION
   EMRSETMAPPERFLAGS* {.pure.} = object
     emr*: EMR
     dwFlags*: DWORD
+
   PEMRSETMAPPERFLAGS* = ptr EMRSETMAPPERFLAGS
   EMRSETBKCOLOR* {.pure.} = object
     emr*: EMR
     crColor*: COLORREF
+
   PEMRSETBKCOLOR* = ptr EMRSETBKCOLOR
   EMRSETTEXTCOLOR* = EMRSETBKCOLOR
   PEMRSETTEXTCOLOR* = ptr EMRSETBKCOLOR
   EMRSELECTOBJECT* {.pure.} = object
     emr*: EMR
     ihObject*: DWORD
+
   PEMRSELECTOBJECT* = ptr EMRSELECTOBJECT
   EMRDELETEOBJECT* = EMRSELECTOBJECT
   PEMRDELETEOBJECT* = ptr EMRSELECTOBJECT
   EMRSELECTPALETTE* {.pure.} = object
     emr*: EMR
     ihPal*: DWORD
+
   PEMRSELECTPALETTE* = ptr EMRSELECTPALETTE
   EMRRESIZEPALETTE* {.pure.} = object
     emr*: EMR
     ihPal*: DWORD
     cEntries*: DWORD
+
   PEMRRESIZEPALETTE* = ptr EMRRESIZEPALETTE
   EMRSETPALETTEENTRIES* {.pure.} = object
     emr*: EMR
@@ -1141,35 +1259,42 @@
     iStart*: DWORD
     cEntries*: DWORD
     aPalEntries*: array[1, PALETTEENTRY]
+
   PEMRSETPALETTEENTRIES* = ptr EMRSETPALETTEENTRIES
   EMRSETCOLORADJUSTMENT* {.pure.} = object
     emr*: EMR
     ColorAdjustment*: COLORADJUSTMENT
+
   PEMRSETCOLORADJUSTMENT* = ptr EMRSETCOLORADJUSTMENT
   EMRGDICOMMENT* {.pure.} = object
     emr*: EMR
     cbData*: DWORD
     Data*: array[1, BYTE]
+
   PEMRGDICOMMENT* = ptr EMRGDICOMMENT
   EMREOF* {.pure.} = object
     emr*: EMR
     nPalEntries*: DWORD
     offPalEntries*: DWORD
     nSizeLast*: DWORD
+
   PEMREOF* = ptr EMREOF
   EMRLINETO* {.pure.} = object
     emr*: EMR
     ptl*: POINTL
+
   PEMRLINETO* = ptr EMRLINETO
   EMRMOVETOEX* = EMRLINETO
   PEMRMOVETOEX* = ptr EMRLINETO
   EMROFFSETCLIPRGN* {.pure.} = object
     emr*: EMR
     ptlOffset*: POINTL
+
   PEMROFFSETCLIPRGN* = ptr EMROFFSETCLIPRGN
   EMRFILLPATH* {.pure.} = object
     emr*: EMR
     rclBounds*: RECTL
+
   PEMRFILLPATH* = ptr EMRFILLPATH
   EMRSTROKEANDFILLPATH* = EMRFILLPATH
   PEMRSTROKEANDFILLPATH* = ptr EMRFILLPATH
@@ -1178,12 +1303,14 @@
   EMREXCLUDECLIPRECT* {.pure.} = object
     emr*: EMR
     rclClip*: RECTL
+
   PEMREXCLUDECLIPRECT* = ptr EMREXCLUDECLIPRECT
   EMRINTERSECTCLIPRECT* = EMREXCLUDECLIPRECT
   PEMRINTERSECTCLIPRECT* = ptr EMREXCLUDECLIPRECT
   EMRSETVIEWPORTORGEX* {.pure.} = object
     emr*: EMR
     ptlOrigin*: POINTL
+
   PEMRSETVIEWPORTORGEX* = ptr EMRSETVIEWPORTORGEX
   EMRSETWINDOWORGEX* = EMRSETVIEWPORTORGEX
   PEMRSETWINDOWORGEX* = ptr EMRSETVIEWPORTORGEX
@@ -1192,6 +1319,7 @@
   EMRSETVIEWPORTEXTEX* {.pure.} = object
     emr*: EMR
     szlExtent*: SIZEL
+
   PEMRSETVIEWPORTEXTEX* = ptr EMRSETVIEWPORTEXTEX
   EMRSETWINDOWEXTEX* = EMRSETVIEWPORTEXTEX
   PEMRSETWINDOWEXTEX* = ptr EMRSETVIEWPORTEXTEX
@@ -1201,32 +1329,38 @@
     xDenom*: LONG
     yNum*: LONG
     yDenom*: LONG
+
   PEMRSCALEVIEWPORTEXTEX* = ptr EMRSCALEVIEWPORTEXTEX
   EMRSCALEWINDOWEXTEX* = EMRSCALEVIEWPORTEXTEX
   PEMRSCALEWINDOWEXTEX* = ptr EMRSCALEVIEWPORTEXTEX
   EMRSETWORLDTRANSFORM* {.pure.} = object
     emr*: EMR
     xform*: XFORM
+
   PEMRSETWORLDTRANSFORM* = ptr EMRSETWORLDTRANSFORM
   EMRMODIFYWORLDTRANSFORM* {.pure.} = object
     emr*: EMR
     xform*: XFORM
     iMode*: DWORD
+
   PEMRMODIFYWORLDTRANSFORM* = ptr EMRMODIFYWORLDTRANSFORM
   EMRSETPIXELV* {.pure.} = object
     emr*: EMR
     ptlPixel*: POINTL
     crColor*: COLORREF
+
   PEMRSETPIXELV* = ptr EMRSETPIXELV
   EMREXTFLOODFILL* {.pure.} = object
     emr*: EMR
     ptlStart*: POINTL
     crColor*: COLORREF
     iMode*: DWORD
+
   PEMREXTFLOODFILL* = ptr EMREXTFLOODFILL
   EMRELLIPSE* {.pure.} = object
     emr*: EMR
     rclBox*: RECTL
+
   PEMRELLIPSE* = ptr EMRELLIPSE
   EMRRECTANGLE* = EMRELLIPSE
   PEMRRECTANGLE* = ptr EMRELLIPSE
@@ -1234,12 +1368,14 @@
     emr*: EMR
     rclBox*: RECTL
     szlCorner*: SIZEL
+
   PEMRROUNDRECT* = ptr EMRROUNDRECT
   EMRARC* {.pure.} = object
     emr*: EMR
     rclBox*: RECTL
     ptlStart*: POINTL
     ptlEnd*: POINTL
+
   PEMRARC* = ptr EMRARC
   EMRARCTO* = EMRARC
   PEMRARCTO* = ptr EMRARC
@@ -1253,12 +1389,14 @@
     nRadius*: DWORD
     eStartAngle*: FLOAT
     eSweepAngle*: FLOAT
+
   PEMRANGLEARC* = ptr EMRANGLEARC
   EMRPOLYLINE* {.pure.} = object
     emr*: EMR
     rclBounds*: RECTL
     cptl*: DWORD
     aptl*: array[1, POINTL]
+
   PEMRPOLYLINE* = ptr EMRPOLYLINE
   EMRPOLYBEZIER* = EMRPOLYLINE
   PEMRPOLYBEZIER* = ptr EMRPOLYLINE
@@ -1273,6 +1411,7 @@
     rclBounds*: RECTL
     cpts*: DWORD
     apts*: array[1, POINTS]
+
   PEMRPOLYLINE16* = ptr EMRPOLYLINE16
   EMRPOLYBEZIER16* = EMRPOLYLINE16
   PEMRPOLYBEZIER16* = ptr EMRPOLYLINE16
@@ -1288,6 +1427,7 @@
     cptl*: DWORD
     aptl*: array[1, POINTL]
     abTypes*: array[1, BYTE]
+
   PEMRPOLYDRAW* = ptr EMRPOLYDRAW
   EMRPOLYDRAW16* {.pure.} = object
     emr*: EMR
@@ -1295,6 +1435,7 @@
     cpts*: DWORD
     apts*: array[1, POINTS]
     abTypes*: array[1, BYTE]
+
   PEMRPOLYDRAW16* = ptr EMRPOLYDRAW16
   EMRPOLYPOLYLINE* {.pure.} = object
     emr*: EMR
@@ -1303,6 +1444,7 @@
     cptl*: DWORD
     aPolyCounts*: array[1, DWORD]
     aptl*: array[1, POINTL]
+
   PEMRPOLYPOLYLINE* = ptr EMRPOLYPOLYLINE
   EMRPOLYPOLYGON* = EMRPOLYPOLYLINE
   PEMRPOLYPOLYGON* = ptr EMRPOLYPOLYLINE
@@ -1313,6 +1455,7 @@
     cpts*: DWORD
     aPolyCounts*: array[1, DWORD]
     apts*: array[1, POINTS]
+
   PEMRPOLYPOLYLINE16* = ptr EMRPOLYPOLYLINE16
   EMRPOLYPOLYGON16* = EMRPOLYPOLYLINE16
   PEMRPOLYPOLYGON16* = ptr EMRPOLYPOLYLINE16
@@ -1321,6 +1464,7 @@
     rclBounds*: RECTL
     cbRgnData*: DWORD
     RgnData*: array[1, BYTE]
+
   PEMRINVERTRGN* = ptr EMRINVERTRGN
   EMRPAINTRGN* = EMRINVERTRGN
   PEMRPAINTRGN* = ptr EMRINVERTRGN
@@ -1330,6 +1474,7 @@
     cbRgnData*: DWORD
     ihBrush*: DWORD
     RgnData*: array[1, BYTE]
+
   PEMRFILLRGN* = ptr EMRFILLRGN
   EMRFRAMERGN* {.pure.} = object
     emr*: EMR
@@ -1338,12 +1483,14 @@
     ihBrush*: DWORD
     szlStroke*: SIZEL
     RgnData*: array[1, BYTE]
+
   PEMRFRAMERGN* = ptr EMRFRAMERGN
   EMREXTSELECTCLIPRGN* {.pure.} = object
     emr*: EMR
     cbRgnData*: DWORD
     iMode*: DWORD
     RgnData*: array[1, BYTE]
+
   PEMREXTSELECTCLIPRGN* = ptr EMREXTSELECTCLIPRGN
   EMREXTTEXTOUTA* {.pure.} = object
     emr*: EMR
@@ -1352,6 +1499,7 @@
     exScale*: FLOAT
     eyScale*: FLOAT
     emrtext*: EMRTEXT
+
   PEMREXTTEXTOUTA* = ptr EMREXTTEXTOUTA
   EMREXTTEXTOUTW* = EMREXTTEXTOUTA
   PEMREXTTEXTOUTW* = ptr EMREXTTEXTOUTA
@@ -1363,6 +1511,7 @@
     eyScale*: FLOAT
     cStrings*: LONG
     aemrtext*: array[1, EMRTEXT]
+
   PEMRPOLYTEXTOUTA* = ptr EMRPOLYTEXTOUTA
   EMRPOLYTEXTOUTW* = EMRPOLYTEXTOUTA
   PEMRPOLYTEXTOUTW* = ptr EMRPOLYTEXTOUTA
@@ -1383,6 +1532,7 @@
     cbBmiSrc*: DWORD
     offBitsSrc*: DWORD
     cbBitsSrc*: DWORD
+
   PEMRBITBLT* = ptr EMRBITBLT
   EMRSTRETCHBLT* {.pure.} = object
     emr*: EMR
@@ -1403,6 +1553,7 @@
     cbBitsSrc*: DWORD
     cxSrc*: LONG
     cySrc*: LONG
+
   PEMRSTRETCHBLT* = ptr EMRSTRETCHBLT
   EMRMASKBLT* {.pure.} = object
     emr*: EMR
@@ -1428,6 +1579,7 @@
     cbBmiMask*: DWORD
     offBitsMask*: DWORD
     cbBitsMask*: DWORD
+
   PEMRMASKBLT* = ptr EMRMASKBLT
   EMRPLGBLT* {.pure.} = object
     emr*: EMR
@@ -1451,6 +1603,7 @@
     cbBmiMask*: DWORD
     offBitsMask*: DWORD
     cbBitsMask*: DWORD
+
   PEMRPLGBLT* = ptr EMRPLGBLT
   EMRSETDIBITSTODEVICE* {.pure.} = object
     emr*: EMR
@@ -1468,6 +1621,7 @@
     iUsageSrc*: DWORD
     iStartScan*: DWORD
     cScans*: DWORD
+
   PEMRSETDIBITSTODEVICE* = ptr EMRSETDIBITSTODEVICE
   EMRSTRETCHDIBITS* {.pure.} = object
     emr*: EMR
@@ -1486,21 +1640,25 @@
     dwRop*: DWORD
     cxDest*: LONG
     cyDest*: LONG
+
   PEMRSTRETCHDIBITS* = ptr EMRSTRETCHDIBITS
   EMREXTCREATEFONTINDIRECTW* {.pure.} = object
     emr*: EMR
     ihFont*: DWORD
     elfw*: EXTLOGFONTW
+
   PEMREXTCREATEFONTINDIRECTW* = ptr EMREXTCREATEFONTINDIRECTW
   EMRCREATEPALETTE* {.pure.} = object
     emr*: EMR
     ihPal*: DWORD
     lgpl*: LOGPALETTE
+
   PEMRCREATEPALETTE* = ptr EMRCREATEPALETTE
   EMRCREATEPEN* {.pure.} = object
     emr*: EMR
     ihPen*: DWORD
     lopn*: LOGPEN
+
   PEMRCREATEPEN* = ptr EMRCREATEPEN
   EMREXTCREATEPEN* {.pure.} = object
     emr*: EMR
@@ -1510,11 +1668,13 @@
     offBits*: DWORD
     cbBits*: DWORD
     elp*: EXTLOGPEN
+
   PEMREXTCREATEPEN* = ptr EMREXTCREATEPEN
   EMRCREATEBRUSHINDIRECT* {.pure.} = object
     emr*: EMR
     ihBrush*: DWORD
     lb*: LOGBRUSH32
+
   PEMRCREATEBRUSHINDIRECT* = ptr EMRCREATEBRUSHINDIRECT
   EMRCREATEMONOBRUSH* {.pure.} = object
     emr*: EMR
@@ -1524,6 +1684,7 @@
     cbBmi*: DWORD
     offBits*: DWORD
     cbBits*: DWORD
+
   PEMRCREATEMONOBRUSH* = ptr EMRCREATEMONOBRUSH
   EMRCREATEDIBPATTERNBRUSHPT* {.pure.} = object
     emr*: EMR
@@ -1533,36 +1694,43 @@
     cbBmi*: DWORD
     offBits*: DWORD
     cbBits*: DWORD
+
   PEMRCREATEDIBPATTERNBRUSHPT* = ptr EMRCREATEDIBPATTERNBRUSHPT
   EMRFORMAT* {.pure.} = object
     dSignature*: DWORD
     nVersion*: DWORD
     cbData*: DWORD
     offData*: DWORD
+
   PEMRFORMAT* = ptr EMRFORMAT
   EMRGLSRECORD* {.pure.} = object
     emr*: EMR
     cbData*: DWORD
     Data*: array[1, BYTE]
+
   PEMRGLSRECORD* = ptr EMRGLSRECORD
   EMRGLSBOUNDEDRECORD* {.pure.} = object
     emr*: EMR
     rclBounds*: RECTL
     cbData*: DWORD
     Data*: array[1, BYTE]
+
   PEMRGLSBOUNDEDRECORD* = ptr EMRGLSBOUNDEDRECORD
   EMRPIXELFORMAT* {.pure.} = object
     emr*: EMR
     pfd*: PIXELFORMATDESCRIPTOR
+
   PEMRPIXELFORMAT* = ptr EMRPIXELFORMAT
   EMRCREATECOLORSPACE* {.pure.} = object
     emr*: EMR
     ihCS*: DWORD
     lcs*: LOGCOLORSPACEA
+
   PEMRCREATECOLORSPACE* = ptr EMRCREATECOLORSPACE
   EMRSETCOLORSPACE* {.pure.} = object
     emr*: EMR
     ihCS*: DWORD
+
   PEMRSETCOLORSPACE* = ptr EMRSETCOLORSPACE
   EMRSELECTCOLORSPACE* = EMRSETCOLORSPACE
   PEMRSELECTCOLORSPACE* = ptr EMRSETCOLORSPACE
@@ -1573,6 +1741,7 @@
     iEscape*: INT
     cbEscData*: INT
     EscData*: array[1, BYTE]
+
   PEMREXTESCAPE* = ptr EMREXTESCAPE
   EMRDRAWESCAPE* = EMREXTESCAPE
   PEMRDRAWESCAPE* = ptr EMREXTESCAPE
@@ -1582,6 +1751,7 @@
     cbDriver*: INT
     cbEscData*: INT
     EscData*: array[1, BYTE]
+
   PEMRNAMEDESCAPE* = ptr EMRNAMEDESCAPE
   EMRSETICMPROFILE* {.pure.} = object
     emr*: EMR
@@ -1589,6 +1759,7 @@
     cbName*: DWORD
     cbData*: DWORD
     Data*: array[1, BYTE]
+
   PEMRSETICMPROFILE* = ptr EMRSETICMPROFILE
   EMRSETICMPROFILEA* = EMRSETICMPROFILE
   PEMRSETICMPROFILEA* = ptr EMRSETICMPROFILE
@@ -1601,6 +1772,7 @@
     dwFlags*: DWORD
     cbData*: DWORD
     Data*: array[1, BYTE]
+
   PEMRCREATECOLORSPACEW* = ptr EMRCREATECOLORSPACEW
   EMRCOLORMATCHTOTARGET* {.pure.} = object
     emr*: EMR
@@ -1609,6 +1781,7 @@
     cbName*: DWORD
     cbData*: DWORD
     Data*: array[1, BYTE]
+
   PEMRCOLORMATCHTOTARGET* = ptr EMRCOLORMATCHTOTARGET
   EMRCOLORCORRECTPALETTE* {.pure.} = object
     emr*: EMR
@@ -1616,6 +1789,7 @@
     nFirstEntry*: DWORD
     nPalEntries*: DWORD
     nReserved*: DWORD
+
   PEMRCOLORCORRECTPALETTE* = ptr EMRCOLORCORRECTPALETTE
   EMRALPHABLEND* {.pure.} = object
     emr*: EMR
@@ -1636,6 +1810,7 @@
     cbBitsSrc*: DWORD
     cxSrc*: LONG
     cySrc*: LONG
+
   PEMRALPHABLEND* = ptr EMRALPHABLEND
   EMRGRADIENTFILL* {.pure.} = object
     emr*: EMR
@@ -1644,6 +1819,7 @@
     nTri*: DWORD
     ulMode*: ULONG
     Ver*: array[1, TRIVERTEX]
+
   PEMRGRADIENTFILL* = ptr EMRGRADIENTFILL
   EMRTRANSPARENTBLT* {.pure.} = object
     emr*: EMR
@@ -1664,10 +1840,12 @@
     cbBitsSrc*: DWORD
     cxSrc*: LONG
     cySrc*: LONG
+
   PEMRTRANSPARENTBLT* = ptr EMRTRANSPARENTBLT
   POINTFLOAT* {.pure.} = object
     x*: FLOAT
     y*: FLOAT
+
   PPOINTFLOAT* = ptr POINTFLOAT
   GLYPHMETRICSFLOAT* {.pure.} = object
     gmfBlackBoxX*: FLOAT
@@ -1675,6 +1853,7 @@
     gmfptGlyphOrigin*: POINTFLOAT
     gmfCellIncX*: FLOAT
     gmfCellIncY*: FLOAT
+
   PGLYPHMETRICSFLOAT* = ptr GLYPHMETRICSFLOAT
   LPGLYPHMETRICSFLOAT* = ptr GLYPHMETRICSFLOAT
   LAYERPLANEDESCRIPTOR* {.pure.} = object
@@ -1702,13 +1881,16 @@
     iLayerPlane*: BYTE
     bReserved*: BYTE
     crTransparent*: COLORREF
+
   PLAYERPLANEDESCRIPTOR* = ptr LAYERPLANEDESCRIPTOR
   LPLAYERPLANEDESCRIPTOR* = ptr LAYERPLANEDESCRIPTOR
   WGLSWAP* {.pure.} = object
     hdc*: HDC
     uiFlags*: UINT
+
   PWGLSWAP* = ptr WGLSWAP
   LPWGLSWAP* = ptr WGLSWAP
+
 const
   R2_BLACK* = 1
   R2_NOTMERGEPEN* = 2
@@ -1784,7 +1966,7 @@
   TA_BOTTOM* = 8
   TA_BASELINE* = 24
   TA_RTLREADING* = 256
-  TA_MASK* = TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING
+  TA_MASK* = TA_BASELINE + TA_CENTER + TA_UPDATECP + TA_RTLREADING
   VTA_BASELINE* = TA_BASELINE
   VTA_LEFT* = TA_BOTTOM
   VTA_RIGHT* = TA_TOP
@@ -2813,7 +2995,9 @@
   SDC_TOPOLOGY_EXTEND* = 0x00000004
   SDC_TOPOLOGY_EXTERNAL* = 0x00000008
   SDC_TOPOLOGY_SUPPLIED* = 0x00000010
-  SDC_USE_DATABASE_CURRENT* = SDC_TOPOLOGY_INTERNAL or SDC_TOPOLOGY_CLONE or SDC_TOPOLOGY_EXTEND or SDC_TOPOLOGY_EXTERNAL
+  SDC_USE_DATABASE_CURRENT* =
+    SDC_TOPOLOGY_INTERNAL or SDC_TOPOLOGY_CLONE or SDC_TOPOLOGY_EXTEND or
+    SDC_TOPOLOGY_EXTERNAL
   SDC_USE_SUPPLIED_DISPLAY_CONFIG* = 0x00000020
   SDC_VALIDATE* = 0x00000040
   SDC_APPLY* = 0x00000080
@@ -3159,29 +3343,48 @@
   STAMP_AXESLIST* = 0x08006C61
   STAMP_DESIGNVECTOR* = 0x08007664
 type
-  GOBJENUMPROC* = proc (P1: LPVOID, P2: LPARAM): int32 {.stdcall.}
-  LINEDDAPROC* = proc (P1: int32, P2: int32, P3: LPARAM): VOID {.stdcall.}
+  GOBJENUMPROC* = proc(P1: LPVOID, P2: LPARAM): int32 {.stdcall.}
+  LINEDDAPROC* = proc(P1: int32, P2: int32, P3: LPARAM): VOID {.stdcall.}
+
 when winimUnicode:
-  type
-    LPDEVMODE* = LPDEVMODEW
+  type LPDEVMODE* = LPDEVMODEW
 when winimAnsi:
-  type
-    LPDEVMODE* = LPDEVMODEA
+  type LPDEVMODE* = LPDEVMODEA
 type
-  LPFNDEVMODE* = proc (P1: HWND, P2: HMODULE, P3: LPDEVMODE, P4: LPSTR, P5: LPSTR, P6: LPDEVMODE, P7: LPSTR, P8: UINT): UINT {.stdcall.}
-  LPFNDEVCAPS* = proc (P1: LPSTR, P2: LPSTR, P3: UINT, P4: LPSTR, P5: LPDEVMODE): DWORD {.stdcall.}
-  GDIMARSHALLOC* = proc (dwSize: DWORD, pGdiRef: LPVOID): PVOID {.stdcall.}
-  MFENUMPROC* = proc (hdc: HDC, lpht: ptr HANDLETABLE, lpMR: ptr METARECORD, nObj: int32, lParam: LPARAM): int32 {.stdcall.}
-  ENHMFENUMPROC* = proc (hdc: HDC, lpht: ptr HANDLETABLE, lpmr: ptr ENHMETARECORD, hHandles: int32, data: LPARAM): int32 {.stdcall.}
-  ABORTPROC* = proc (P1: HDC, P2: int32): WINBOOL {.stdcall.}
-  ICMENUMPROCA* = proc (P1: LPSTR, P2: LPARAM): int32 {.stdcall.}
-  ICMENUMPROCW* = proc (P1: LPWSTR, P2: LPARAM): int32 {.stdcall.}
+  LPFNDEVMODE* = proc(
+    P1: HWND,
+    P2: HMODULE,
+    P3: LPDEVMODE,
+    P4: LPSTR,
+    P5: LPSTR,
+    P6: LPDEVMODE,
+    P7: LPSTR,
+    P8: UINT,
+  ): UINT {.stdcall.}
+  LPFNDEVCAPS* =
+    proc(P1: LPSTR, P2: LPSTR, P3: UINT, P4: LPSTR, P5: LPDEVMODE): DWORD {.stdcall.}
+  GDIMARSHALLOC* = proc(dwSize: DWORD, pGdiRef: LPVOID): PVOID {.stdcall.}
+  MFENUMPROC* = proc(
+    hdc: HDC, lpht: ptr HANDLETABLE, lpMR: ptr METARECORD, nObj: int32, lParam: LPARAM
+  ): int32 {.stdcall.}
+  ENHMFENUMPROC* = proc(
+    hdc: HDC,
+    lpht: ptr HANDLETABLE,
+    lpmr: ptr ENHMETARECORD,
+    hHandles: int32,
+    data: LPARAM,
+  ): int32 {.stdcall.}
+  ABORTPROC* = proc(P1: HDC, P2: int32): WINBOOL {.stdcall.}
+  ICMENUMPROCA* = proc(P1: LPSTR, P2: LPARAM): int32 {.stdcall.}
+  ICMENUMPROCW* = proc(P1: LPWSTR, P2: LPARAM): int32 {.stdcall.}
   DISPLAYCONFIG_RATIONAL* {.pure.} = object
     Numerator*: UINT32
     Denominator*: UINT32
+
   DISPLAYCONFIG_2DREGION* {.pure.} = object
     cx*: UINT32
     cy*: UINT32
+
   DISPLAYCONFIG_VIDEO_SIGNAL_INFO* {.pure.} = object
     pixelRate*: UINT64
     hSyncFreq*: DISPLAYCONFIG_RATIONAL
@@ -3190,26 +3393,32 @@
     totalSize*: DISPLAYCONFIG_2DREGION
     videoStandard*: UINT32
     scanLineOrdering*: DISPLAYCONFIG_SCANLINE_ORDERING
+
   DISPLAYCONFIG_SOURCE_MODE* {.pure.} = object
     width*: UINT32
     height*: UINT32
     pixelFormat*: DISPLAYCONFIG_PIXELFORMAT
     position*: POINTL
+
   DISPLAYCONFIG_TARGET_MODE* {.pure.} = object
     targetVideoSignalInfo*: DISPLAYCONFIG_VIDEO_SIGNAL_INFO
+
   DISPLAYCONFIG_MODE_INFO_UNION1* {.pure, union.} = object
     targetMode*: DISPLAYCONFIG_TARGET_MODE
     sourceMode*: DISPLAYCONFIG_SOURCE_MODE
+
   DISPLAYCONFIG_MODE_INFO* {.pure.} = object
     infoType*: DISPLAYCONFIG_MODE_INFO_TYPE
     id*: UINT32
     adapterId*: LUID
     union1*: DISPLAYCONFIG_MODE_INFO_UNION1
+
   DISPLAYCONFIG_PATH_SOURCE_INFO* {.pure.} = object
     adapterId*: LUID
     id*: UINT32
     modeInfoIdx*: UINT32
     statusFlags*: UINT32
+
   DISPLAYCONFIG_PATH_TARGET_INFO* {.pure.} = object
     adapterId*: LUID
     id*: UINT32
@@ -3221,28 +3430,35 @@
     scanLineOrdering*: DISPLAYCONFIG_SCANLINE_ORDERING
     targetAvailable*: WINBOOL
     statusFlags*: UINT32
+
   DISPLAYCONFIG_PATH_INFO* {.pure.} = object
     sourceInfo*: DISPLAYCONFIG_PATH_SOURCE_INFO
     targetInfo*: DISPLAYCONFIG_PATH_TARGET_INFO
     flags*: UINT32
+
   DISPLAYCONFIG_DEVICE_INFO_HEADER* {.pure.} = object
     `type`*: DISPLAYCONFIG_DEVICE_INFO_TYPE
     size*: UINT32
     adapterId*: LUID
     id*: UINT32
+
   DISPLAYCONFIG_SOURCE_DEVICE_NAME* {.pure.} = object
     header*: DISPLAYCONFIG_DEVICE_INFO_HEADER
     viewGdiDeviceName*: array[CCHDEVICENAME, WCHAR]
+
   DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS_UNION1_STRUCT1* {.pure.} = object
-    friendlyNameFromEdid* {.bitsize:1.}: UINT32
-    friendlyNameForced* {.bitsize:1.}: UINT32
-    edidIdsValid* {.bitsize:1.}: UINT32
-    reserved* {.bitsize:29.}: UINT32
+    friendlyNameFromEdid* {.bitsize: 1.}: UINT32
+    friendlyNameForced* {.bitsize: 1.}: UINT32
+    edidIdsValid* {.bitsize: 1.}: UINT32
+    reserved* {.bitsize: 29.}: UINT32
+
   DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS_UNION1* {.pure, union.} = object
     struct1*: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS_UNION1_STRUCT1
     value*: UINT32
+
   DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS* {.pure.} = object
     union1*: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS_UNION1
+
   DISPLAYCONFIG_TARGET_DEVICE_NAME* {.pure.} = object
     header*: DISPLAYCONFIG_DEVICE_INFO_HEADER
     flags*: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS
@@ -3252,502 +3468,1983 @@
     connectorInstance*: UINT32
     monitorFriendlyDeviceName*: array[64, WCHAR]
     monitorDevicePath*: array[128, WCHAR]
+
   DISPLAYCONFIG_TARGET_PREFERRED_MODE* {.pure.} = object
     header*: DISPLAYCONFIG_DEVICE_INFO_HEADER
     width*: UINT32
     height*: UINT32
     targetMode*: DISPLAYCONFIG_TARGET_MODE
+
   DISPLAYCONFIG_ADAPTER_NAME* {.pure.} = object
     header*: DISPLAYCONFIG_DEVICE_INFO_HEADER
     adapterDevicePath*: array[128, WCHAR]
+
   DISPLAYCONFIG_SET_TARGET_PERSISTENCE_UNION1_STRUCT1* {.pure.} = object
-    bootPersistenceOn* {.bitsize:1.}: UINT32
-    reserved* {.bitsize:31.}: UINT32
+    bootPersistenceOn* {.bitsize: 1.}: UINT32
+    reserved* {.bitsize: 31.}: UINT32
+
   DISPLAYCONFIG_SET_TARGET_PERSISTENCE_UNION1* {.pure, union.} = object
     struct1*: DISPLAYCONFIG_SET_TARGET_PERSISTENCE_UNION1_STRUCT1
     value*: UINT32
+
   DISPLAYCONFIG_SET_TARGET_PERSISTENCE* {.pure.} = object
     header*: DISPLAYCONFIG_DEVICE_INFO_HEADER
     union1*: DISPLAYCONFIG_SET_TARGET_PERSISTENCE_UNION1
+
 proc AddFontResourceA*(P1: LPCSTR): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc AddFontResourceW*(P1: LPCWSTR): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc AnimatePalette*(hPal: HPALETTE, iStartIndex: UINT, cEntries: UINT, ppe: ptr PALETTEENTRY): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc Arc*(hdc: HDC, x1: int32, y1: int32, x2: int32, y2: int32, x3: int32, y3: int32, x4: int32, y4: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc BitBlt*(hdc: HDC, x: int32, y: int32, cx: int32, cy: int32, hdcSrc: HDC, x1: int32, y1: int32, rop: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc AnimatePalette*(
+  hPal: HPALETTE, iStartIndex: UINT, cEntries: UINT, ppe: ptr PALETTEENTRY
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc Arc*(
+  hdc: HDC,
+  x1: int32,
+  y1: int32,
+  x2: int32,
+  y2: int32,
+  x3: int32,
+  y3: int32,
+  x4: int32,
+  y4: int32,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc BitBlt*(
+  hdc: HDC,
+  x: int32,
+  y: int32,
+  cx: int32,
+  cy: int32,
+  hdcSrc: HDC,
+  x1: int32,
+  y1: int32,
+  rop: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc CancelDC*(hdc: HDC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc Chord*(hdc: HDC, x1: int32, y1: int32, x2: int32, y2: int32, x3: int32, y3: int32, x4: int32, y4: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ChoosePixelFormat*(hdc: HDC, ppfd: ptr PIXELFORMATDESCRIPTOR): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc Chord*(
+  hdc: HDC,
+  x1: int32,
+  y1: int32,
+  x2: int32,
+  y2: int32,
+  x3: int32,
+  y3: int32,
+  x4: int32,
+  y4: int32,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ChoosePixelFormat*(
+  hdc: HDC, ppfd: ptr PIXELFORMATDESCRIPTOR
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc CloseMetaFile*(hdc: HDC): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CombineRgn*(hrgnDst: HRGN, hrgnSrc1: HRGN, hrgnSrc2: HRGN, iMode: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CopyMetaFileA*(P1: HMETAFILE, P2: LPCSTR): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CopyMetaFileW*(P1: HMETAFILE, P2: LPCWSTR): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateBitmap*(nWidth: int32, nHeight: int32, nPlanes: UINT, nBitCount: UINT, lpBits: pointer): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateBitmapIndirect*(pbm: ptr BITMAP): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateBrushIndirect*(plbrush: ptr LOGBRUSH): HBRUSH {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateCompatibleBitmap*(hdc: HDC, cx: int32, cy: int32): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateDiscardableBitmap*(hdc: HDC, cx: int32, cy: int32): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc CombineRgn*(
+  hrgnDst: HRGN, hrgnSrc1: HRGN, hrgnSrc2: HRGN, iMode: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CopyMetaFileA*(
+  P1: HMETAFILE, P2: LPCSTR
+): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CopyMetaFileW*(
+  P1: HMETAFILE, P2: LPCWSTR
+): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateBitmap*(
+  nWidth: int32, nHeight: int32, nPlanes: UINT, nBitCount: UINT, lpBits: pointer
+): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateBitmapIndirect*(
+  pbm: ptr BITMAP
+): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateBrushIndirect*(
+  plbrush: ptr LOGBRUSH
+): HBRUSH {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateCompatibleBitmap*(
+  hdc: HDC, cx: int32, cy: int32
+): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateDiscardableBitmap*(
+  hdc: HDC, cx: int32, cy: int32
+): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc CreateCompatibleDC*(hdc: HDC): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateDCA*(pwszDriver: LPCSTR, pwszDevice: LPCSTR, pszPort: LPCSTR, pdm: ptr DEVMODEA): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateDCW*(pwszDriver: LPCWSTR, pwszDevice: LPCWSTR, pszPort: LPCWSTR, pdm: ptr DEVMODEW): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateDIBitmap*(hdc: HDC, pbmih: ptr BITMAPINFOHEADER, flInit: DWORD, pjBits: pointer, pbmi: ptr BITMAPINFO, iUsage: UINT): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateDIBPatternBrush*(h: HGLOBAL, iUsage: UINT): HBRUSH {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateDIBPatternBrushPt*(lpPackedDIB: pointer, iUsage: UINT): HBRUSH {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateEllipticRgn*(x1: int32, y1: int32, x2: int32, y2: int32): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateEllipticRgnIndirect*(lprect: ptr RECT): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateFontIndirectA*(lplf: ptr LOGFONTA): HFONT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateFontIndirectW*(lplf: ptr LOGFONTW): HFONT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateFontA*(cHeight: int32, cWidth: int32, cEscapement: int32, cOrientation: int32, cWeight: int32, bItalic: DWORD, bUnderline: DWORD, bStrikeOut: DWORD, iCharSet: DWORD, iOutPrecision: DWORD, iClipPrecision: DWORD, iQuality: DWORD, iPitchAndFamily: DWORD, pszFaceName: LPCSTR): HFONT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateFontW*(cHeight: int32, cWidth: int32, cEscapement: int32, cOrientation: int32, cWeight: int32, bItalic: DWORD, bUnderline: DWORD, bStrikeOut: DWORD, iCharSet: DWORD, iOutPrecision: DWORD, iClipPrecision: DWORD, iQuality: DWORD, iPitchAndFamily: DWORD, pszFaceName: LPCWSTR): HFONT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateHatchBrush*(iHatch: int32, color: COLORREF): HBRUSH {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateICA*(pszDriver: LPCSTR, pszDevice: LPCSTR, pszPort: LPCSTR, pdm: ptr DEVMODEA): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateICW*(pszDriver: LPCWSTR, pszDevice: LPCWSTR, pszPort: LPCWSTR, pdm: ptr DEVMODEW): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateMetaFileA*(pszFile: LPCSTR): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateMetaFileW*(pszFile: LPCWSTR): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreatePalette*(plpal: ptr LOGPALETTE): HPALETTE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreatePen*(iStyle: int32, cWidth: int32, color: COLORREF): HPEN {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreatePenIndirect*(plpen: ptr LOGPEN): HPEN {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreatePolyPolygonRgn*(pptl: ptr POINT, pc: ptr INT, cPoly: int32, iMode: int32): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreatePatternBrush*(hbm: HBITMAP): HBRUSH {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateRectRgn*(x1: int32, y1: int32, x2: int32, y2: int32): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateRectRgnIndirect*(lprect: ptr RECT): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateRoundRectRgn*(x1: int32, y1: int32, x2: int32, y2: int32, w: int32, h: int32): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateScalableFontResourceA*(fdwHidden: DWORD, lpszFont: LPCSTR, lpszFile: LPCSTR, lpszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateScalableFontResourceW*(fdwHidden: DWORD, lpszFont: LPCWSTR, lpszFile: LPCWSTR, lpszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateSolidBrush*(color: COLORREF): HBRUSH {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc CreateDCA*(
+  pwszDriver: LPCSTR, pwszDevice: LPCSTR, pszPort: LPCSTR, pdm: ptr DEVMODEA
+): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateDCW*(
+  pwszDriver: LPCWSTR, pwszDevice: LPCWSTR, pszPort: LPCWSTR, pdm: ptr DEVMODEW
+): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateDIBitmap*(
+  hdc: HDC,
+  pbmih: ptr BITMAPINFOHEADER,
+  flInit: DWORD,
+  pjBits: pointer,
+  pbmi: ptr BITMAPINFO,
+  iUsage: UINT,
+): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateDIBPatternBrush*(
+  h: HGLOBAL, iUsage: UINT
+): HBRUSH {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateDIBPatternBrushPt*(
+  lpPackedDIB: pointer, iUsage: UINT
+): HBRUSH {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateEllipticRgn*(
+  x1: int32, y1: int32, x2: int32, y2: int32
+): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateEllipticRgnIndirect*(
+  lprect: ptr RECT
+): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateFontIndirectA*(
+  lplf: ptr LOGFONTA
+): HFONT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateFontIndirectW*(
+  lplf: ptr LOGFONTW
+): HFONT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateFontA*(
+  cHeight: int32,
+  cWidth: int32,
+  cEscapement: int32,
+  cOrientation: int32,
+  cWeight: int32,
+  bItalic: DWORD,
+  bUnderline: DWORD,
+  bStrikeOut: DWORD,
+  iCharSet: DWORD,
+  iOutPrecision: DWORD,
+  iClipPrecision: DWORD,
+  iQuality: DWORD,
+  iPitchAndFamily: DWORD,
+  pszFaceName: LPCSTR,
+): HFONT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateFontW*(
+  cHeight: int32,
+  cWidth: int32,
+  cEscapement: int32,
+  cOrientation: int32,
+  cWeight: int32,
+  bItalic: DWORD,
+  bUnderline: DWORD,
+  bStrikeOut: DWORD,
+  iCharSet: DWORD,
+  iOutPrecision: DWORD,
+  iClipPrecision: DWORD,
+  iQuality: DWORD,
+  iPitchAndFamily: DWORD,
+  pszFaceName: LPCWSTR,
+): HFONT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateHatchBrush*(
+  iHatch: int32, color: COLORREF
+): HBRUSH {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateICA*(
+  pszDriver: LPCSTR, pszDevice: LPCSTR, pszPort: LPCSTR, pdm: ptr DEVMODEA
+): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateICW*(
+  pszDriver: LPCWSTR, pszDevice: LPCWSTR, pszPort: LPCWSTR, pdm: ptr DEVMODEW
+): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateMetaFileA*(
+  pszFile: LPCSTR
+): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateMetaFileW*(
+  pszFile: LPCWSTR
+): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreatePalette*(
+  plpal: ptr LOGPALETTE
+): HPALETTE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreatePen*(
+  iStyle: int32, cWidth: int32, color: COLORREF
+): HPEN {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreatePenIndirect*(
+  plpen: ptr LOGPEN
+): HPEN {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreatePolyPolygonRgn*(
+  pptl: ptr POINT, pc: ptr INT, cPoly: int32, iMode: int32
+): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreatePatternBrush*(
+  hbm: HBITMAP
+): HBRUSH {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateRectRgn*(
+  x1: int32, y1: int32, x2: int32, y2: int32
+): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateRectRgnIndirect*(
+  lprect: ptr RECT
+): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateRoundRectRgn*(
+  x1: int32, y1: int32, x2: int32, y2: int32, w: int32, h: int32
+): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateScalableFontResourceA*(
+  fdwHidden: DWORD, lpszFont: LPCSTR, lpszFile: LPCSTR, lpszPath: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateScalableFontResourceW*(
+  fdwHidden: DWORD, lpszFont: LPCWSTR, lpszFile: LPCWSTR, lpszPath: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateSolidBrush*(
+  color: COLORREF
+): HBRUSH {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc DeleteDC*(hdc: HDC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc DeleteMetaFile*(hmf: HMETAFILE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc DeleteMetaFile*(
+  hmf: HMETAFILE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc DeleteObject*(ho: HGDIOBJ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc DescribePixelFormat*(hdc: HDC, iPixelFormat: int32, nBytes: UINT, ppfd: LPPIXELFORMATDESCRIPTOR): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc DeviceCapabilitiesA*(pDevice: LPCSTR, pPort: LPCSTR, fwCapability: WORD, pOutput: LPSTR, pDevMode: ptr DEVMODEA): int32 {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeviceCapabilitiesW*(pDevice: LPCWSTR, pPort: LPCWSTR, fwCapability: WORD, pOutput: LPWSTR, pDevMode: ptr DEVMODEW): int32 {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DrawEscape*(hdc: HDC, iEscape: int32, cjIn: int32, lpIn: LPCSTR): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc Ellipse*(hdc: HDC, left: int32, top: int32, right: int32, bottom: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc EnumFontFamiliesExA*(hdc: HDC, lpLogfont: LPLOGFONTA, lpProc: FONTENUMPROCA, lParam: LPARAM, dwFlags: DWORD): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc EnumFontFamiliesExW*(hdc: HDC, lpLogfont: LPLOGFONTW, lpProc: FONTENUMPROCW, lParam: LPARAM, dwFlags: DWORD): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc EnumFontFamiliesA*(hdc: HDC, lpLogfont: LPCSTR, lpProc: FONTENUMPROCA, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc EnumFontFamiliesW*(hdc: HDC, lpLogfont: LPCWSTR, lpProc: FONTENUMPROCW, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc EnumFontsA*(hdc: HDC, lpLogfont: LPCSTR, lpProc: FONTENUMPROCA, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc EnumFontsW*(hdc: HDC, lpLogfont: LPCWSTR, lpProc: FONTENUMPROCW, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc EnumObjects*(hdc: HDC, nType: int32, lpFunc: GOBJENUMPROC, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc EqualRgn*(hrgn1: HRGN, hrgn2: HRGN): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc Escape*(hdc: HDC, iEscape: int32, cjIn: int32, pvIn: LPCSTR, pvOut: LPVOID): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ExtEscape*(hdc: HDC, iEscape: int32, cjInput: int32, lpInData: LPCSTR, cjOutput: int32, lpOutData: LPSTR): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ExcludeClipRect*(hdc: HDC, left: int32, top: int32, right: int32, bottom: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ExtCreateRegion*(lpx: ptr XFORM, nCount: DWORD, lpData: ptr RGNDATA): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ExtFloodFill*(hdc: HDC, x: int32, y: int32, color: COLORREF, `type`: UINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc FillRgn*(hdc: HDC, hrgn: HRGN, hbr: HBRUSH): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc FloodFill*(hdc: HDC, x: int32, y: int32, color: COLORREF): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc FrameRgn*(hdc: HDC, hrgn: HRGN, hbr: HBRUSH, w: int32, h: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc DescribePixelFormat*(
+  hdc: HDC, iPixelFormat: int32, nBytes: UINT, ppfd: LPPIXELFORMATDESCRIPTOR
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc DeviceCapabilitiesA*(
+  pDevice: LPCSTR,
+  pPort: LPCSTR,
+  fwCapability: WORD,
+  pOutput: LPSTR,
+  pDevMode: ptr DEVMODEA,
+): int32 {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeviceCapabilitiesW*(
+  pDevice: LPCWSTR,
+  pPort: LPCWSTR,
+  fwCapability: WORD,
+  pOutput: LPWSTR,
+  pDevMode: ptr DEVMODEW,
+): int32 {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DrawEscape*(
+  hdc: HDC, iEscape: int32, cjIn: int32, lpIn: LPCSTR
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc Ellipse*(
+  hdc: HDC, left: int32, top: int32, right: int32, bottom: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc EnumFontFamiliesExA*(
+  hdc: HDC, lpLogfont: LPLOGFONTA, lpProc: FONTENUMPROCA, lParam: LPARAM, dwFlags: DWORD
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc EnumFontFamiliesExW*(
+  hdc: HDC, lpLogfont: LPLOGFONTW, lpProc: FONTENUMPROCW, lParam: LPARAM, dwFlags: DWORD
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc EnumFontFamiliesA*(
+  hdc: HDC, lpLogfont: LPCSTR, lpProc: FONTENUMPROCA, lParam: LPARAM
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc EnumFontFamiliesW*(
+  hdc: HDC, lpLogfont: LPCWSTR, lpProc: FONTENUMPROCW, lParam: LPARAM
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc EnumFontsA*(
+  hdc: HDC, lpLogfont: LPCSTR, lpProc: FONTENUMPROCA, lParam: LPARAM
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc EnumFontsW*(
+  hdc: HDC, lpLogfont: LPCWSTR, lpProc: FONTENUMPROCW, lParam: LPARAM
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc EnumObjects*(
+  hdc: HDC, nType: int32, lpFunc: GOBJENUMPROC, lParam: LPARAM
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc EqualRgn*(
+  hrgn1: HRGN, hrgn2: HRGN
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc Escape*(
+  hdc: HDC, iEscape: int32, cjIn: int32, pvIn: LPCSTR, pvOut: LPVOID
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ExtEscape*(
+  hdc: HDC,
+  iEscape: int32,
+  cjInput: int32,
+  lpInData: LPCSTR,
+  cjOutput: int32,
+  lpOutData: LPSTR,
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ExcludeClipRect*(
+  hdc: HDC, left: int32, top: int32, right: int32, bottom: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ExtCreateRegion*(
+  lpx: ptr XFORM, nCount: DWORD, lpData: ptr RGNDATA
+): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ExtFloodFill*(
+  hdc: HDC, x: int32, y: int32, color: COLORREF, `type`: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc FillRgn*(
+  hdc: HDC, hrgn: HRGN, hbr: HBRUSH
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc FloodFill*(
+  hdc: HDC, x: int32, y: int32, color: COLORREF
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc FrameRgn*(
+  hdc: HDC, hrgn: HRGN, hbr: HBRUSH, w: int32, h: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc GetROP2*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetAspectRatioFilterEx*(hdc: HDC, lpsize: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc GetAspectRatioFilterEx*(
+  hdc: HDC, lpsize: LPSIZE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc GetBkColor*(hdc: HDC): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc GetDCBrushColor*(hdc: HDC): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc GetDCPenColor*(hdc: HDC): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc GetBkMode*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetBitmapBits*(hbit: HBITMAP, cb: LONG, lpvBits: LPVOID): LONG {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetBitmapDimensionEx*(hbit: HBITMAP, lpsize: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetBoundsRect*(hdc: HDC, lprect: LPRECT, flags: UINT): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetBrushOrgEx*(hdc: HDC, lppt: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCharWidthA*(hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCharWidthW*(hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCharWidth32A*(hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCharWidth32W*(hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCharWidthFloatA*(hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: PFLOAT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCharWidthFloatW*(hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: PFLOAT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCharABCWidthsA*(hdc: HDC, wFirst: UINT, wLast: UINT, lpABC: LPABC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCharABCWidthsW*(hdc: HDC, wFirst: UINT, wLast: UINT, lpABC: LPABC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCharABCWidthsFloatA*(hdc: HDC, iFirst: UINT, iLast: UINT, lpABC: LPABCFLOAT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCharABCWidthsFloatW*(hdc: HDC, iFirst: UINT, iLast: UINT, lpABC: LPABCFLOAT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetClipBox*(hdc: HDC, lprect: LPRECT): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetClipRgn*(hdc: HDC, hrgn: HRGN): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetMetaRgn*(hdc: HDC, hrgn: HRGN): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCurrentObject*(hdc: HDC, `type`: UINT): HGDIOBJ {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCurrentPositionEx*(hdc: HDC, lppt: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetDeviceCaps*(hdc: HDC, index: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetDIBits*(hdc: HDC, hbm: HBITMAP, start: UINT, cLines: UINT, lpvBits: LPVOID, lpbmi: LPBITMAPINFO, usage: UINT): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetFontData*(hdc: HDC, dwTable: DWORD, dwOffset: DWORD, pvBuffer: PVOID, cjBuffer: DWORD): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetGlyphOutlineA*(hdc: HDC, uChar: UINT, fuFormat: UINT, lpgm: LPGLYPHMETRICS, cjBuffer: DWORD, pvBuffer: LPVOID, lpmat2: ptr MAT2): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetGlyphOutlineW*(hdc: HDC, uChar: UINT, fuFormat: UINT, lpgm: LPGLYPHMETRICS, cjBuffer: DWORD, pvBuffer: LPVOID, lpmat2: ptr MAT2): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc GetBitmapBits*(
+  hbit: HBITMAP, cb: LONG, lpvBits: LPVOID
+): LONG {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetBitmapDimensionEx*(
+  hbit: HBITMAP, lpsize: LPSIZE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetBoundsRect*(
+  hdc: HDC, lprect: LPRECT, flags: UINT
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetBrushOrgEx*(
+  hdc: HDC, lppt: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCharWidthA*(
+  hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCharWidthW*(
+  hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCharWidth32A*(
+  hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCharWidth32W*(
+  hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCharWidthFloatA*(
+  hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: PFLOAT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCharWidthFloatW*(
+  hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: PFLOAT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCharABCWidthsA*(
+  hdc: HDC, wFirst: UINT, wLast: UINT, lpABC: LPABC
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCharABCWidthsW*(
+  hdc: HDC, wFirst: UINT, wLast: UINT, lpABC: LPABC
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCharABCWidthsFloatA*(
+  hdc: HDC, iFirst: UINT, iLast: UINT, lpABC: LPABCFLOAT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCharABCWidthsFloatW*(
+  hdc: HDC, iFirst: UINT, iLast: UINT, lpABC: LPABCFLOAT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetClipBox*(
+  hdc: HDC, lprect: LPRECT
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetClipRgn*(
+  hdc: HDC, hrgn: HRGN
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetMetaRgn*(
+  hdc: HDC, hrgn: HRGN
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCurrentObject*(
+  hdc: HDC, `type`: UINT
+): HGDIOBJ {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCurrentPositionEx*(
+  hdc: HDC, lppt: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetDeviceCaps*(
+  hdc: HDC, index: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetDIBits*(
+  hdc: HDC,
+  hbm: HBITMAP,
+  start: UINT,
+  cLines: UINT,
+  lpvBits: LPVOID,
+  lpbmi: LPBITMAPINFO,
+  usage: UINT,
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetFontData*(
+  hdc: HDC, dwTable: DWORD, dwOffset: DWORD, pvBuffer: PVOID, cjBuffer: DWORD
+): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetGlyphOutlineA*(
+  hdc: HDC,
+  uChar: UINT,
+  fuFormat: UINT,
+  lpgm: LPGLYPHMETRICS,
+  cjBuffer: DWORD,
+  pvBuffer: LPVOID,
+  lpmat2: ptr MAT2,
+): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetGlyphOutlineW*(
+  hdc: HDC,
+  uChar: UINT,
+  fuFormat: UINT,
+  lpgm: LPGLYPHMETRICS,
+  cjBuffer: DWORD,
+  pvBuffer: LPVOID,
+  lpmat2: ptr MAT2,
+): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc GetGraphicsMode*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc GetMapMode*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetMetaFileBitsEx*(hMF: HMETAFILE, cbBuffer: UINT, lpData: LPVOID): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetMetaFileA*(lpName: LPCSTR): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetMetaFileW*(lpName: LPCWSTR): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetNearestColor*(hdc: HDC, color: COLORREF): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetNearestPaletteIndex*(h: HPALETTE, color: COLORREF): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc GetMetaFileBitsEx*(
+  hMF: HMETAFILE, cbBuffer: UINT, lpData: LPVOID
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetMetaFileA*(
+  lpName: LPCSTR
+): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetMetaFileW*(
+  lpName: LPCWSTR
+): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetNearestColor*(
+  hdc: HDC, color: COLORREF
+): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetNearestPaletteIndex*(
+  h: HPALETTE, color: COLORREF
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc GetObjectType*(h: HGDIOBJ): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetOutlineTextMetricsA*(hdc: HDC, cjCopy: UINT, potm: LPOUTLINETEXTMETRICA): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetOutlineTextMetricsW*(hdc: HDC, cjCopy: UINT, potm: LPOUTLINETEXTMETRICW): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetPaletteEntries*(hpal: HPALETTE, iStart: UINT, cEntries: UINT, pPalEntries: LPPALETTEENTRY): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetPixel*(hdc: HDC, x: int32, y: int32): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc GetOutlineTextMetricsA*(
+  hdc: HDC, cjCopy: UINT, potm: LPOUTLINETEXTMETRICA
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetOutlineTextMetricsW*(
+  hdc: HDC, cjCopy: UINT, potm: LPOUTLINETEXTMETRICW
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetPaletteEntries*(
+  hpal: HPALETTE, iStart: UINT, cEntries: UINT, pPalEntries: LPPALETTEENTRY
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetPixel*(
+  hdc: HDC, x: int32, y: int32
+): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc GetPixelFormat*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc GetPolyFillMode*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetRasterizerCaps*(lpraststat: LPRASTERIZER_STATUS, cjBytes: UINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetRandomRgn*(hdc: HDC, hrgn: HRGN, i: INT): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetRegionData*(hrgn: HRGN, nCount: DWORD, lpRgnData: LPRGNDATA): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetRgnBox*(hrgn: HRGN, lprc: LPRECT): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc GetRasterizerCaps*(
+  lpraststat: LPRASTERIZER_STATUS, cjBytes: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetRandomRgn*(
+  hdc: HDC, hrgn: HRGN, i: INT
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetRegionData*(
+  hrgn: HRGN, nCount: DWORD, lpRgnData: LPRGNDATA
+): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetRgnBox*(
+  hrgn: HRGN, lprc: LPRECT
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc GetStockObject*(i: int32): HGDIOBJ {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc GetStretchBltMode*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetSystemPaletteEntries*(hdc: HDC, iStart: UINT, cEntries: UINT, pPalEntries: LPPALETTEENTRY): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc GetSystemPaletteEntries*(
+  hdc: HDC, iStart: UINT, cEntries: UINT, pPalEntries: LPPALETTEENTRY
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc GetSystemPaletteUse*(hdc: HDC): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetTextCharacterExtra*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc GetTextCharacterExtra*(
+  hdc: HDC
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc GetTextAlign*(hdc: HDC): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc GetTextColor*(hdc: HDC): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetTextExtentPointA*(hdc: HDC, lpString: LPCSTR, c: int32, lpsz: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetTextExtentPointW*(hdc: HDC, lpString: LPCWSTR, c: int32, lpsz: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetTextExtentPoint32A*(hdc: HDC, lpString: LPCSTR, c: int32, psizl: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetTextExtentPoint32W*(hdc: HDC, lpString: LPCWSTR, c: int32, psizl: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetTextExtentExPointA*(hdc: HDC, lpszString: LPCSTR, cchString: int32, nMaxExtent: int32, lpnFit: LPINT, lpnDx: LPINT, lpSize: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetTextExtentExPointW*(hdc: HDC, lpszString: LPCWSTR, cchString: int32, nMaxExtent: int32, lpnFit: LPINT, lpnDx: LPINT, lpSize: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc GetTextExtentPointA*(
+  hdc: HDC, lpString: LPCSTR, c: int32, lpsz: LPSIZE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetTextExtentPointW*(
+  hdc: HDC, lpString: LPCWSTR, c: int32, lpsz: LPSIZE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetTextExtentPoint32A*(
+  hdc: HDC, lpString: LPCSTR, c: int32, psizl: LPSIZE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetTextExtentPoint32W*(
+  hdc: HDC, lpString: LPCWSTR, c: int32, psizl: LPSIZE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetTextExtentExPointA*(
+  hdc: HDC,
+  lpszString: LPCSTR,
+  cchString: int32,
+  nMaxExtent: int32,
+  lpnFit: LPINT,
+  lpnDx: LPINT,
+  lpSize: LPSIZE,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetTextExtentExPointW*(
+  hdc: HDC,
+  lpszString: LPCWSTR,
+  cchString: int32,
+  nMaxExtent: int32,
+  lpnFit: LPINT,
+  lpnDx: LPINT,
+  lpSize: LPSIZE,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc GetTextCharset*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetTextCharsetInfo*(hdc: HDC, lpSig: LPFONTSIGNATURE, dwFlags: DWORD): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc TranslateCharsetInfo*(lpSrc: ptr DWORD, lpCs: LPCHARSETINFO, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc GetTextCharsetInfo*(
+  hdc: HDC, lpSig: LPFONTSIGNATURE, dwFlags: DWORD
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc TranslateCharsetInfo*(
+  lpSrc: ptr DWORD, lpCs: LPCHARSETINFO, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc GetFontLanguageInfo*(hdc: HDC): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCharacterPlacementA*(hdc: HDC, lpString: LPCSTR, nCount: int32, nMexExtent: int32, lpResults: LPGCP_RESULTSA, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCharacterPlacementW*(hdc: HDC, lpString: LPCWSTR, nCount: int32, nMexExtent: int32, lpResults: LPGCP_RESULTSW, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetFontUnicodeRanges*(hdc: HDC, lpgs: LPGLYPHSET): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetGlyphIndicesA*(hdc: HDC, lpstr: LPCSTR, c: int32, pgi: LPWORD, fl: DWORD): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetGlyphIndicesW*(hdc: HDC, lpstr: LPCWSTR, c: int32, pgi: LPWORD, fl: DWORD): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetTextExtentPointI*(hdc: HDC, pgiIn: LPWORD, cgi: int32, psize: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetTextExtentExPointI*(hdc: HDC, lpwszString: LPWORD, cwchString: int32, nMaxExtent: int32, lpnFit: LPINT, lpnDx: LPINT, lpSize: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCharWidthI*(hdc: HDC, giFirst: UINT, cgi: UINT, pgi: LPWORD, piWidths: LPINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetCharABCWidthsI*(hdc: HDC, giFirst: UINT, cgi: UINT, pgi: LPWORD, pabc: LPABC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc AddFontResourceExA*(name: LPCSTR, fl: DWORD, res: PVOID): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc AddFontResourceExW*(name: LPCWSTR, fl: DWORD, res: PVOID): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc RemoveFontResourceExA*(name: LPCSTR, fl: DWORD, pdv: PVOID): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc RemoveFontResourceExW*(name: LPCWSTR, fl: DWORD, pdv: PVOID): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc AddFontMemResourceEx*(pFileView: PVOID, cjSize: DWORD, pvResrved: PVOID, pNumFonts: ptr DWORD): HANDLE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc RemoveFontMemResourceEx*(h: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateFontIndirectExA*(P1: ptr ENUMLOGFONTEXDVA): HFONT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateFontIndirectExW*(P1: ptr ENUMLOGFONTEXDVW): HFONT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetViewportExtEx*(hdc: HDC, lpsize: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetViewportOrgEx*(hdc: HDC, lppoint: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetWindowExtEx*(hdc: HDC, lpsize: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetWindowOrgEx*(hdc: HDC, lppoint: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc IntersectClipRect*(hdc: HDC, left: int32, top: int32, right: int32, bottom: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc InvertRgn*(hdc: HDC, hrgn: HRGN): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc LineDDA*(xStart: int32, yStart: int32, xEnd: int32, yEnd: int32, lpProc: LINEDDAPROC, data: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc LineTo*(hdc: HDC, x: int32, y: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc MaskBlt*(hdcDest: HDC, xDest: int32, yDest: int32, width: int32, height: int32, hdcSrc: HDC, xSrc: int32, ySrc: int32, hbmMask: HBITMAP, xMask: int32, yMask: int32, rop: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PlgBlt*(hdcDest: HDC, lpPoint: ptr POINT, hdcSrc: HDC, xSrc: int32, ySrc: int32, width: int32, height: int32, hbmMask: HBITMAP, xMask: int32, yMask: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc OffsetClipRgn*(hdc: HDC, x: int32, y: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc OffsetRgn*(hrgn: HRGN, x: int32, y: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PatBlt*(hdc: HDC, x: int32, y: int32, w: int32, h: int32, rop: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc Pie*(hdc: HDC, left: int32, top: int32, right: int32, bottom: int32, xr1: int32, yr1: int32, xr2: int32, yr2: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PlayMetaFile*(hdc: HDC, hmf: HMETAFILE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PaintRgn*(hdc: HDC, hrgn: HRGN): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PolyPolygon*(hdc: HDC, apt: ptr POINT, asz: ptr INT, csz: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PtInRegion*(hrgn: HRGN, x: int32, y: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PtVisible*(hdc: HDC, x: int32, y: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc RectInRegion*(hrgn: HRGN, lprect: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc RectVisible*(hdc: HDC, lprect: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc Rectangle*(hdc: HDC, left: int32, top: int32, right: int32, bottom: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc RestoreDC*(hdc: HDC, nSavedDC: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ResetDCA*(hdc: HDC, lpdm: ptr DEVMODEA): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ResetDCW*(hdc: HDC, lpdm: ptr DEVMODEW): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc GetCharacterPlacementA*(
+  hdc: HDC,
+  lpString: LPCSTR,
+  nCount: int32,
+  nMexExtent: int32,
+  lpResults: LPGCP_RESULTSA,
+  dwFlags: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCharacterPlacementW*(
+  hdc: HDC,
+  lpString: LPCWSTR,
+  nCount: int32,
+  nMexExtent: int32,
+  lpResults: LPGCP_RESULTSW,
+  dwFlags: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetFontUnicodeRanges*(
+  hdc: HDC, lpgs: LPGLYPHSET
+): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetGlyphIndicesA*(
+  hdc: HDC, lpstr: LPCSTR, c: int32, pgi: LPWORD, fl: DWORD
+): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetGlyphIndicesW*(
+  hdc: HDC, lpstr: LPCWSTR, c: int32, pgi: LPWORD, fl: DWORD
+): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetTextExtentPointI*(
+  hdc: HDC, pgiIn: LPWORD, cgi: int32, psize: LPSIZE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetTextExtentExPointI*(
+  hdc: HDC,
+  lpwszString: LPWORD,
+  cwchString: int32,
+  nMaxExtent: int32,
+  lpnFit: LPINT,
+  lpnDx: LPINT,
+  lpSize: LPSIZE,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCharWidthI*(
+  hdc: HDC, giFirst: UINT, cgi: UINT, pgi: LPWORD, piWidths: LPINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetCharABCWidthsI*(
+  hdc: HDC, giFirst: UINT, cgi: UINT, pgi: LPWORD, pabc: LPABC
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc AddFontResourceExA*(
+  name: LPCSTR, fl: DWORD, res: PVOID
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc AddFontResourceExW*(
+  name: LPCWSTR, fl: DWORD, res: PVOID
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc RemoveFontResourceExA*(
+  name: LPCSTR, fl: DWORD, pdv: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc RemoveFontResourceExW*(
+  name: LPCWSTR, fl: DWORD, pdv: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc AddFontMemResourceEx*(
+  pFileView: PVOID, cjSize: DWORD, pvResrved: PVOID, pNumFonts: ptr DWORD
+): HANDLE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc RemoveFontMemResourceEx*(
+  h: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateFontIndirectExA*(
+  P1: ptr ENUMLOGFONTEXDVA
+): HFONT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateFontIndirectExW*(
+  P1: ptr ENUMLOGFONTEXDVW
+): HFONT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetViewportExtEx*(
+  hdc: HDC, lpsize: LPSIZE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetViewportOrgEx*(
+  hdc: HDC, lppoint: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetWindowExtEx*(
+  hdc: HDC, lpsize: LPSIZE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetWindowOrgEx*(
+  hdc: HDC, lppoint: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc IntersectClipRect*(
+  hdc: HDC, left: int32, top: int32, right: int32, bottom: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc InvertRgn*(
+  hdc: HDC, hrgn: HRGN
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc LineDDA*(
+  xStart: int32,
+  yStart: int32,
+  xEnd: int32,
+  yEnd: int32,
+  lpProc: LINEDDAPROC,
+  data: LPARAM,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc LineTo*(
+  hdc: HDC, x: int32, y: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc MaskBlt*(
+  hdcDest: HDC,
+  xDest: int32,
+  yDest: int32,
+  width: int32,
+  height: int32,
+  hdcSrc: HDC,
+  xSrc: int32,
+  ySrc: int32,
+  hbmMask: HBITMAP,
+  xMask: int32,
+  yMask: int32,
+  rop: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PlgBlt*(
+  hdcDest: HDC,
+  lpPoint: ptr POINT,
+  hdcSrc: HDC,
+  xSrc: int32,
+  ySrc: int32,
+  width: int32,
+  height: int32,
+  hbmMask: HBITMAP,
+  xMask: int32,
+  yMask: int32,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc OffsetClipRgn*(
+  hdc: HDC, x: int32, y: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc OffsetRgn*(
+  hrgn: HRGN, x: int32, y: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PatBlt*(
+  hdc: HDC, x: int32, y: int32, w: int32, h: int32, rop: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc Pie*(
+  hdc: HDC,
+  left: int32,
+  top: int32,
+  right: int32,
+  bottom: int32,
+  xr1: int32,
+  yr1: int32,
+  xr2: int32,
+  yr2: int32,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PlayMetaFile*(
+  hdc: HDC, hmf: HMETAFILE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PaintRgn*(
+  hdc: HDC, hrgn: HRGN
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PolyPolygon*(
+  hdc: HDC, apt: ptr POINT, asz: ptr INT, csz: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PtInRegion*(
+  hrgn: HRGN, x: int32, y: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PtVisible*(
+  hdc: HDC, x: int32, y: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc RectInRegion*(
+  hrgn: HRGN, lprect: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc RectVisible*(
+  hdc: HDC, lprect: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc Rectangle*(
+  hdc: HDC, left: int32, top: int32, right: int32, bottom: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc RestoreDC*(
+  hdc: HDC, nSavedDC: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ResetDCA*(
+  hdc: HDC, lpdm: ptr DEVMODEA
+): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ResetDCW*(
+  hdc: HDC, lpdm: ptr DEVMODEW
+): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc RealizePalette*(hdc: HDC): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc RemoveFontResourceA*(lpFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc RemoveFontResourceW*(lpFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc RoundRect*(hdc: HDC, left: int32, top: int32, right: int32, bottom: int32, width: int32, height: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ResizePalette*(hpal: HPALETTE, n: UINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc RemoveFontResourceA*(
+  lpFileName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc RemoveFontResourceW*(
+  lpFileName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc RoundRect*(
+  hdc: HDC,
+  left: int32,
+  top: int32,
+  right: int32,
+  bottom: int32,
+  width: int32,
+  height: int32,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ResizePalette*(
+  hpal: HPALETTE, n: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc SaveDC*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SelectClipRgn*(hdc: HDC, hrgn: HRGN): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ExtSelectClipRgn*(hdc: HDC, hrgn: HRGN, mode: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc SelectClipRgn*(
+  hdc: HDC, hrgn: HRGN
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ExtSelectClipRgn*(
+  hdc: HDC, hrgn: HRGN, mode: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc SetMetaRgn*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SelectObject*(hdc: HDC, h: HGDIOBJ): HGDIOBJ {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SelectPalette*(hdc: HDC, hPal: HPALETTE, bForceBkgd: WINBOOL): HPALETTE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetBkColor*(hdc: HDC, color: COLORREF): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetDCBrushColor*(hdc: HDC, color: COLORREF): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetDCPenColor*(hdc: HDC, color: COLORREF): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetBkMode*(hdc: HDC, mode: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetBitmapBits*(hbm: HBITMAP, cb: DWORD, pvBits: pointer): LONG {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetBoundsRect*(hdc: HDC, lprect: ptr RECT, flags: UINT): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetDIBits*(hdc: HDC, hbm: HBITMAP, start: UINT, cLines: UINT, lpBits: pointer, lpbmi: ptr BITMAPINFO, ColorUse: UINT): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetDIBitsToDevice*(hdc: HDC, xDest: int32, yDest: int32, w: DWORD, h: DWORD, xSrc: int32, ySrc: int32, StartScan: UINT, cLines: UINT, lpvBits: pointer, lpbmi: ptr BITMAPINFO, ColorUse: UINT): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetMapperFlags*(hdc: HDC, flags: DWORD): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetGraphicsMode*(hdc: HDC, iMode: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetMapMode*(hdc: HDC, iMode: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc SelectObject*(
+  hdc: HDC, h: HGDIOBJ
+): HGDIOBJ {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SelectPalette*(
+  hdc: HDC, hPal: HPALETTE, bForceBkgd: WINBOOL
+): HPALETTE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetBkColor*(
+  hdc: HDC, color: COLORREF
+): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetDCBrushColor*(
+  hdc: HDC, color: COLORREF
+): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetDCPenColor*(
+  hdc: HDC, color: COLORREF
+): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetBkMode*(
+  hdc: HDC, mode: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetBitmapBits*(
+  hbm: HBITMAP, cb: DWORD, pvBits: pointer
+): LONG {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetBoundsRect*(
+  hdc: HDC, lprect: ptr RECT, flags: UINT
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetDIBits*(
+  hdc: HDC,
+  hbm: HBITMAP,
+  start: UINT,
+  cLines: UINT,
+  lpBits: pointer,
+  lpbmi: ptr BITMAPINFO,
+  ColorUse: UINT,
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetDIBitsToDevice*(
+  hdc: HDC,
+  xDest: int32,
+  yDest: int32,
+  w: DWORD,
+  h: DWORD,
+  xSrc: int32,
+  ySrc: int32,
+  StartScan: UINT,
+  cLines: UINT,
+  lpvBits: pointer,
+  lpbmi: ptr BITMAPINFO,
+  ColorUse: UINT,
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetMapperFlags*(
+  hdc: HDC, flags: DWORD
+): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetGraphicsMode*(
+  hdc: HDC, iMode: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetMapMode*(
+  hdc: HDC, iMode: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc SetLayout*(hdc: HDC, l: DWORD): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc GetLayout*(hdc: HDC): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetMetaFileBitsEx*(cbBuffer: UINT, lpData: ptr BYTE): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetPaletteEntries*(hpal: HPALETTE, iStart: UINT, cEntries: UINT, pPalEntries: ptr PALETTEENTRY): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetPixel*(hdc: HDC, x: int32, y: int32, color: COLORREF): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetPixelV*(hdc: HDC, x: int32, y: int32, color: COLORREF): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetPixelFormat*(hdc: HDC, format: int32, ppfd: ptr PIXELFORMATDESCRIPTOR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetPolyFillMode*(hdc: HDC, mode: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc StretchBlt*(hdcDest: HDC, xDest: int32, yDest: int32, wDest: int32, hDest: int32, hdcSrc: HDC, xSrc: int32, ySrc: int32, wSrc: int32, hSrc: int32, rop: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetRectRgn*(hrgn: HRGN, left: int32, top: int32, right: int32, bottom: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc StretchDIBits*(hdc: HDC, xDest: int32, yDest: int32, DestWidth: int32, DestHeight: int32, xSrc: int32, ySrc: int32, SrcWidth: int32, SrcHeight: int32, lpBits: pointer, lpbmi: ptr BITMAPINFO, iUsage: UINT, rop: DWORD): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetROP2*(hdc: HDC, rop2: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetStretchBltMode*(hdc: HDC, mode: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetSystemPaletteUse*(hdc: HDC, use: UINT): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetTextCharacterExtra*(hdc: HDC, extra: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetTextColor*(hdc: HDC, color: COLORREF): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetTextAlign*(hdc: HDC, align: UINT): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetTextJustification*(hdc: HDC, extra: int32, count: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc SetMetaFileBitsEx*(
+  cbBuffer: UINT, lpData: ptr BYTE
+): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetPaletteEntries*(
+  hpal: HPALETTE, iStart: UINT, cEntries: UINT, pPalEntries: ptr PALETTEENTRY
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetPixel*(
+  hdc: HDC, x: int32, y: int32, color: COLORREF
+): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetPixelV*(
+  hdc: HDC, x: int32, y: int32, color: COLORREF
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetPixelFormat*(
+  hdc: HDC, format: int32, ppfd: ptr PIXELFORMATDESCRIPTOR
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetPolyFillMode*(
+  hdc: HDC, mode: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc StretchBlt*(
+  hdcDest: HDC,
+  xDest: int32,
+  yDest: int32,
+  wDest: int32,
+  hDest: int32,
+  hdcSrc: HDC,
+  xSrc: int32,
+  ySrc: int32,
+  wSrc: int32,
+  hSrc: int32,
+  rop: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetRectRgn*(
+  hrgn: HRGN, left: int32, top: int32, right: int32, bottom: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc StretchDIBits*(
+  hdc: HDC,
+  xDest: int32,
+  yDest: int32,
+  DestWidth: int32,
+  DestHeight: int32,
+  xSrc: int32,
+  ySrc: int32,
+  SrcWidth: int32,
+  SrcHeight: int32,
+  lpBits: pointer,
+  lpbmi: ptr BITMAPINFO,
+  iUsage: UINT,
+  rop: DWORD,
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetROP2*(
+  hdc: HDC, rop2: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetStretchBltMode*(
+  hdc: HDC, mode: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetSystemPaletteUse*(
+  hdc: HDC, use: UINT
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetTextCharacterExtra*(
+  hdc: HDC, extra: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetTextColor*(
+  hdc: HDC, color: COLORREF
+): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetTextAlign*(
+  hdc: HDC, align: UINT
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetTextJustification*(
+  hdc: HDC, extra: int32, count: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc UpdateColors*(hdc: HDC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc AlphaBlend*(hdcDest: HDC, xoriginDest: int32, yoriginDest: int32, wDest: int32, hDest: int32, hdcSrc: HDC, xoriginSrc: int32, yoriginSrc: int32, wSrc: int32, hSrc: int32, ftn: BLENDFUNCTION): WINBOOL {.winapi, stdcall, dynlib: "msimg32", importc.}
-proc GdiAlphaBlend*(hdcDest: HDC, xoriginDest: int32, yoriginDest: int32, wDest: int32, hDest: int32, hdcSrc: HDC, xoriginSrc: int32, yoriginSrc: int32, wSrc: int32, hSrc: int32, ftn: BLENDFUNCTION): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc TransparentBlt*(hdcDest: HDC, xoriginDest: int32, yoriginDest: int32, wDest: int32, hDest: int32, hdcSrc: HDC, xoriginSrc: int32, yoriginSrc: int32, wSrc: int32, hSrc: int32, crTransparent: UINT): WINBOOL {.winapi, stdcall, dynlib: "msimg32", importc.}
-proc GdiTransparentBlt*(hdcDest: HDC, xoriginDest: int32, yoriginDest: int32, wDest: int32, hDest: int32, hdcSrc: HDC, xoriginSrc: int32, yoriginSrc: int32, wSrc: int32, hSrc: int32, crTransparent: UINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GradientFill*(hdc: HDC, pVertex: PTRIVERTEX, nVertex: ULONG, pMesh: PVOID, nMesh: ULONG, ulMode: ULONG): WINBOOL {.winapi, stdcall, dynlib: "msimg32", importc.}
-proc GdiGradientFill*(hdc: HDC, pVertex: PTRIVERTEX, nVertex: ULONG, pMesh: PVOID, nMesh: ULONG, ulMode: ULONG): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PlayMetaFileRecord*(hdc: HDC, lpHandleTable: LPHANDLETABLE, lpMR: LPMETARECORD, noObjs: UINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc EnumMetaFile*(hdc: HDC, hmf: HMETAFILE, lpProc: MFENUMPROC, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CloseEnhMetaFile*(hdc: HDC): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CopyEnhMetaFileA*(hEnh: HENHMETAFILE, lpFileName: LPCSTR): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CopyEnhMetaFileW*(hEnh: HENHMETAFILE, lpFileName: LPCWSTR): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateEnhMetaFileA*(hdc: HDC, lpFilename: LPCSTR, lprc: ptr RECT, lpDesc: LPCSTR): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateEnhMetaFileW*(hdc: HDC, lpFilename: LPCWSTR, lprc: ptr RECT, lpDesc: LPCWSTR): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc DeleteEnhMetaFile*(hmf: HENHMETAFILE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc EnumEnhMetaFile*(hdc: HDC, hmf: HENHMETAFILE, lpProc: ENHMFENUMPROC, lpParam: LPVOID, lpRect: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetEnhMetaFileA*(lpName: LPCSTR): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetEnhMetaFileW*(lpName: LPCWSTR): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetEnhMetaFileBits*(hEMF: HENHMETAFILE, nSize: UINT, lpData: LPBYTE): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetEnhMetaFileDescriptionA*(hemf: HENHMETAFILE, cchBuffer: UINT, lpDescription: LPSTR): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetEnhMetaFileDescriptionW*(hemf: HENHMETAFILE, cchBuffer: UINT, lpDescription: LPWSTR): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetEnhMetaFileHeader*(hemf: HENHMETAFILE, nSize: UINT, lpEnhMetaHeader: LPENHMETAHEADER): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetEnhMetaFilePaletteEntries*(hemf: HENHMETAFILE, nNumEntries: UINT, lpPaletteEntries: LPPALETTEENTRY): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetEnhMetaFilePixelFormat*(hemf: HENHMETAFILE, cbBuffer: UINT, ppfd: ptr PIXELFORMATDESCRIPTOR): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetWinMetaFileBits*(hemf: HENHMETAFILE, cbData16: UINT, pData16: LPBYTE, iMapMode: INT, hdcRef: HDC): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PlayEnhMetaFile*(hdc: HDC, hmf: HENHMETAFILE, lprect: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PlayEnhMetaFileRecord*(hdc: HDC, pht: LPHANDLETABLE, pmr: ptr ENHMETARECORD, cht: UINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetEnhMetaFileBits*(nSize: UINT, pb: ptr BYTE): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetWinMetaFileBits*(nSize: UINT, lpMeta16Data: ptr BYTE, hdcRef: HDC, lpMFP: ptr METAFILEPICT): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GdiComment*(hdc: HDC, nSize: UINT, lpData: ptr BYTE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetTextMetricsA*(hdc: HDC, lptm: LPTEXTMETRICA): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetTextMetricsW*(hdc: HDC, lptm: LPTEXTMETRICW): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc AngleArc*(hdc: HDC, x: int32, y: int32, r: DWORD, StartAngle: FLOAT, SweepAngle: FLOAT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PolyPolyline*(hdc: HDC, apt: ptr POINT, asz: ptr DWORD, csz: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetWorldTransform*(hdc: HDC, lpxf: LPXFORM): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetWorldTransform*(hdc: HDC, lpxf: ptr XFORM): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ModifyWorldTransform*(hdc: HDC, lpxf: ptr XFORM, mode: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CombineTransform*(lpxfOut: LPXFORM, lpxf1: ptr XFORM, lpxf2: ptr XFORM): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateDIBSection*(hdc: HDC, lpbmi: ptr BITMAPINFO, usage: UINT, ppvBits: ptr pointer, hSection: HANDLE, offset: DWORD): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetDIBColorTable*(hdc: HDC, iStart: UINT, cEntries: UINT, prgbq: ptr RGBQUAD): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetDIBColorTable*(hdc: HDC, iStart: UINT, cEntries: UINT, prgbq: ptr RGBQUAD): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetColorAdjustment*(hdc: HDC, lpca: ptr COLORADJUSTMENT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetColorAdjustment*(hdc: HDC, lpca: LPCOLORADJUSTMENT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateHalftonePalette*(hdc: HDC): HPALETTE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc StartDocA*(hdc: HDC, lpdi: ptr DOCINFOA): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc StartDocW*(hdc: HDC, lpdi: ptr DOCINFOW): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc AlphaBlend*(
+  hdcDest: HDC,
+  xoriginDest: int32,
+  yoriginDest: int32,
+  wDest: int32,
+  hDest: int32,
+  hdcSrc: HDC,
+  xoriginSrc: int32,
+  yoriginSrc: int32,
+  wSrc: int32,
+  hSrc: int32,
+  ftn: BLENDFUNCTION,
+): WINBOOL {.winapi, stdcall, dynlib: "msimg32", importc.}
+
+proc GdiAlphaBlend*(
+  hdcDest: HDC,
+  xoriginDest: int32,
+  yoriginDest: int32,
+  wDest: int32,
+  hDest: int32,
+  hdcSrc: HDC,
+  xoriginSrc: int32,
+  yoriginSrc: int32,
+  wSrc: int32,
+  hSrc: int32,
+  ftn: BLENDFUNCTION,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc TransparentBlt*(
+  hdcDest: HDC,
+  xoriginDest: int32,
+  yoriginDest: int32,
+  wDest: int32,
+  hDest: int32,
+  hdcSrc: HDC,
+  xoriginSrc: int32,
+  yoriginSrc: int32,
+  wSrc: int32,
+  hSrc: int32,
+  crTransparent: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "msimg32", importc.}
+
+proc GdiTransparentBlt*(
+  hdcDest: HDC,
+  xoriginDest: int32,
+  yoriginDest: int32,
+  wDest: int32,
+  hDest: int32,
+  hdcSrc: HDC,
+  xoriginSrc: int32,
+  yoriginSrc: int32,
+  wSrc: int32,
+  hSrc: int32,
+  crTransparent: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GradientFill*(
+  hdc: HDC,
+  pVertex: PTRIVERTEX,
+  nVertex: ULONG,
+  pMesh: PVOID,
+  nMesh: ULONG,
+  ulMode: ULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "msimg32", importc.}
+
+proc GdiGradientFill*(
+  hdc: HDC,
+  pVertex: PTRIVERTEX,
+  nVertex: ULONG,
+  pMesh: PVOID,
+  nMesh: ULONG,
+  ulMode: ULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PlayMetaFileRecord*(
+  hdc: HDC, lpHandleTable: LPHANDLETABLE, lpMR: LPMETARECORD, noObjs: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc EnumMetaFile*(
+  hdc: HDC, hmf: HMETAFILE, lpProc: MFENUMPROC, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CloseEnhMetaFile*(
+  hdc: HDC
+): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CopyEnhMetaFileA*(
+  hEnh: HENHMETAFILE, lpFileName: LPCSTR
+): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CopyEnhMetaFileW*(
+  hEnh: HENHMETAFILE, lpFileName: LPCWSTR
+): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateEnhMetaFileA*(
+  hdc: HDC, lpFilename: LPCSTR, lprc: ptr RECT, lpDesc: LPCSTR
+): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateEnhMetaFileW*(
+  hdc: HDC, lpFilename: LPCWSTR, lprc: ptr RECT, lpDesc: LPCWSTR
+): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc DeleteEnhMetaFile*(
+  hmf: HENHMETAFILE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc EnumEnhMetaFile*(
+  hdc: HDC, hmf: HENHMETAFILE, lpProc: ENHMFENUMPROC, lpParam: LPVOID, lpRect: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetEnhMetaFileA*(
+  lpName: LPCSTR
+): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetEnhMetaFileW*(
+  lpName: LPCWSTR
+): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetEnhMetaFileBits*(
+  hEMF: HENHMETAFILE, nSize: UINT, lpData: LPBYTE
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetEnhMetaFileDescriptionA*(
+  hemf: HENHMETAFILE, cchBuffer: UINT, lpDescription: LPSTR
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetEnhMetaFileDescriptionW*(
+  hemf: HENHMETAFILE, cchBuffer: UINT, lpDescription: LPWSTR
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetEnhMetaFileHeader*(
+  hemf: HENHMETAFILE, nSize: UINT, lpEnhMetaHeader: LPENHMETAHEADER
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetEnhMetaFilePaletteEntries*(
+  hemf: HENHMETAFILE, nNumEntries: UINT, lpPaletteEntries: LPPALETTEENTRY
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetEnhMetaFilePixelFormat*(
+  hemf: HENHMETAFILE, cbBuffer: UINT, ppfd: ptr PIXELFORMATDESCRIPTOR
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetWinMetaFileBits*(
+  hemf: HENHMETAFILE, cbData16: UINT, pData16: LPBYTE, iMapMode: INT, hdcRef: HDC
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PlayEnhMetaFile*(
+  hdc: HDC, hmf: HENHMETAFILE, lprect: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PlayEnhMetaFileRecord*(
+  hdc: HDC, pht: LPHANDLETABLE, pmr: ptr ENHMETARECORD, cht: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetEnhMetaFileBits*(
+  nSize: UINT, pb: ptr BYTE
+): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetWinMetaFileBits*(
+  nSize: UINT, lpMeta16Data: ptr BYTE, hdcRef: HDC, lpMFP: ptr METAFILEPICT
+): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GdiComment*(
+  hdc: HDC, nSize: UINT, lpData: ptr BYTE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetTextMetricsA*(
+  hdc: HDC, lptm: LPTEXTMETRICA
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetTextMetricsW*(
+  hdc: HDC, lptm: LPTEXTMETRICW
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc AngleArc*(
+  hdc: HDC, x: int32, y: int32, r: DWORD, StartAngle: FLOAT, SweepAngle: FLOAT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PolyPolyline*(
+  hdc: HDC, apt: ptr POINT, asz: ptr DWORD, csz: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetWorldTransform*(
+  hdc: HDC, lpxf: LPXFORM
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetWorldTransform*(
+  hdc: HDC, lpxf: ptr XFORM
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ModifyWorldTransform*(
+  hdc: HDC, lpxf: ptr XFORM, mode: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CombineTransform*(
+  lpxfOut: LPXFORM, lpxf1: ptr XFORM, lpxf2: ptr XFORM
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateDIBSection*(
+  hdc: HDC,
+  lpbmi: ptr BITMAPINFO,
+  usage: UINT,
+  ppvBits: ptr pointer,
+  hSection: HANDLE,
+  offset: DWORD,
+): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetDIBColorTable*(
+  hdc: HDC, iStart: UINT, cEntries: UINT, prgbq: ptr RGBQUAD
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetDIBColorTable*(
+  hdc: HDC, iStart: UINT, cEntries: UINT, prgbq: ptr RGBQUAD
+): UINT {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetColorAdjustment*(
+  hdc: HDC, lpca: ptr COLORADJUSTMENT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetColorAdjustment*(
+  hdc: HDC, lpca: LPCOLORADJUSTMENT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateHalftonePalette*(
+  hdc: HDC
+): HPALETTE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc StartDocA*(
+  hdc: HDC, lpdi: ptr DOCINFOA
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc StartDocW*(
+  hdc: HDC, lpdi: ptr DOCINFOW
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc EndDoc*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc StartPage*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc EndPage*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc AbortDoc*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetAbortProc*(hdc: HDC, lpProc: ABORTPROC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc SetAbortProc*(
+  hdc: HDC, lpProc: ABORTPROC
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc AbortPath*(hdc: HDC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ArcTo*(hdc: HDC, left: int32, top: int32, right: int32, bottom: int32, xr1: int32, yr1: int32, xr2: int32, yr2: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc ArcTo*(
+  hdc: HDC,
+  left: int32,
+  top: int32,
+  right: int32,
+  bottom: int32,
+  xr1: int32,
+  yr1: int32,
+  xr2: int32,
+  yr2: int32,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc BeginPath*(hdc: HDC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc CloseFigure*(hdc: HDC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc EndPath*(hdc: HDC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc FillPath*(hdc: HDC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc FlattenPath*(hdc: HDC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetPath*(hdc: HDC, apt: LPPOINT, aj: LPBYTE, cpt: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc GetPath*(
+  hdc: HDC, apt: LPPOINT, aj: LPBYTE, cpt: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc PathToRegion*(hdc: HDC): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PolyDraw*(hdc: HDC, apt: ptr POINT, aj: ptr BYTE, cpt: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SelectClipPath*(hdc: HDC, mode: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetArcDirection*(hdc: HDC, dir: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetMiterLimit*(hdc: HDC, limit: FLOAT, old: PFLOAT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc PolyDraw*(
+  hdc: HDC, apt: ptr POINT, aj: ptr BYTE, cpt: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SelectClipPath*(
+  hdc: HDC, mode: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetArcDirection*(
+  hdc: HDC, dir: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetMiterLimit*(
+  hdc: HDC, limit: FLOAT, old: PFLOAT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc StrokeAndFillPath*(hdc: HDC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc StrokePath*(hdc: HDC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc WidenPath*(hdc: HDC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ExtCreatePen*(iPenStyle: DWORD, cWidth: DWORD, plbrush: ptr LOGBRUSH, cStyle: DWORD, pstyle: ptr DWORD): HPEN {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetMiterLimit*(hdc: HDC, plimit: PFLOAT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc ExtCreatePen*(
+  iPenStyle: DWORD,
+  cWidth: DWORD,
+  plbrush: ptr LOGBRUSH,
+  cStyle: DWORD,
+  pstyle: ptr DWORD,
+): HPEN {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetMiterLimit*(
+  hdc: HDC, plimit: PFLOAT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc GetArcDirection*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetObjectA*(h: HANDLE, c: int32, pv: LPVOID): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetObjectW*(h: HANDLE, c: int32, pv: LPVOID): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc MoveToEx*(hdc: HDC, x: int32, y: int32, lppt: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc TextOutA*(hdc: HDC, x: int32, y: int32, lpString: LPCSTR, c: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc TextOutW*(hdc: HDC, x: int32, y: int32, lpString: LPCWSTR, c: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ExtTextOutA*(hdc: HDC, x: int32, y: int32, options: UINT, lprect: ptr RECT, lpString: LPCSTR, c: UINT, lpDx: ptr INT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ExtTextOutW*(hdc: HDC, x: int32, y: int32, options: UINT, lprect: ptr RECT, lpString: LPCWSTR, c: UINT, lpDx: ptr INT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PolyTextOutA*(hdc: HDC, ppt: ptr POLYTEXTA, nstrings: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PolyTextOutW*(hdc: HDC, ppt: ptr POLYTEXTW, nstrings: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreatePolygonRgn*(pptl: ptr POINT, cPoint: int32, iMode: int32): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc DPtoLP*(hdc: HDC, lppt: LPPOINT, c: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc LPtoDP*(hdc: HDC, lppt: LPPOINT, c: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc Polygon*(hdc: HDC, apt: ptr POINT, cpt: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc Polyline*(hdc: HDC, apt: ptr POINT, cpt: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PolyBezier*(hdc: HDC, apt: ptr POINT, cpt: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PolyBezierTo*(hdc: HDC, apt: ptr POINT, cpt: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc PolylineTo*(hdc: HDC, apt: ptr POINT, cpt: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetViewportExtEx*(hdc: HDC, x: int32, y: int32, lpsz: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetViewportOrgEx*(hdc: HDC, x: int32, y: int32, lppt: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetWindowExtEx*(hdc: HDC, x: int32, y: int32, lpsz: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetWindowOrgEx*(hdc: HDC, x: int32, y: int32, lppt: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc OffsetViewportOrgEx*(hdc: HDC, x: int32, y: int32, lppt: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc OffsetWindowOrgEx*(hdc: HDC, x: int32, y: int32, lppt: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ScaleViewportExtEx*(hdc: HDC, xn: int32, dx: int32, yn: int32, yd: int32, lpsz: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ScaleWindowExtEx*(hdc: HDC, xn: int32, xd: int32, yn: int32, yd: int32, lpsz: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetBitmapDimensionEx*(hbm: HBITMAP, w: int32, h: int32, lpsz: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetBrushOrgEx*(hdc: HDC, x: int32, y: int32, lppt: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetTextFaceA*(hdc: HDC, c: int32, lpName: LPSTR): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetTextFaceW*(hdc: HDC, c: int32, lpName: LPWSTR): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetKerningPairsA*(hdc: HDC, nPairs: DWORD, lpKernPair: LPKERNINGPAIR): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetKerningPairsW*(hdc: HDC, nPairs: DWORD, lpKernPair: LPKERNINGPAIR): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetDCOrgEx*(hdc: HDC, lppt: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc FixBrushOrgEx*(hdc: HDC, x: int32, y: int32, ptl: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc GetObjectA*(
+  h: HANDLE, c: int32, pv: LPVOID
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetObjectW*(
+  h: HANDLE, c: int32, pv: LPVOID
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc MoveToEx*(
+  hdc: HDC, x: int32, y: int32, lppt: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc TextOutA*(
+  hdc: HDC, x: int32, y: int32, lpString: LPCSTR, c: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc TextOutW*(
+  hdc: HDC, x: int32, y: int32, lpString: LPCWSTR, c: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ExtTextOutA*(
+  hdc: HDC,
+  x: int32,
+  y: int32,
+  options: UINT,
+  lprect: ptr RECT,
+  lpString: LPCSTR,
+  c: UINT,
+  lpDx: ptr INT,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ExtTextOutW*(
+  hdc: HDC,
+  x: int32,
+  y: int32,
+  options: UINT,
+  lprect: ptr RECT,
+  lpString: LPCWSTR,
+  c: UINT,
+  lpDx: ptr INT,
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PolyTextOutA*(
+  hdc: HDC, ppt: ptr POLYTEXTA, nstrings: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PolyTextOutW*(
+  hdc: HDC, ppt: ptr POLYTEXTW, nstrings: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreatePolygonRgn*(
+  pptl: ptr POINT, cPoint: int32, iMode: int32
+): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc DPtoLP*(
+  hdc: HDC, lppt: LPPOINT, c: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc LPtoDP*(
+  hdc: HDC, lppt: LPPOINT, c: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc Polygon*(
+  hdc: HDC, apt: ptr POINT, cpt: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc Polyline*(
+  hdc: HDC, apt: ptr POINT, cpt: int32
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PolyBezier*(
+  hdc: HDC, apt: ptr POINT, cpt: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PolyBezierTo*(
+  hdc: HDC, apt: ptr POINT, cpt: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc PolylineTo*(
+  hdc: HDC, apt: ptr POINT, cpt: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetViewportExtEx*(
+  hdc: HDC, x: int32, y: int32, lpsz: LPSIZE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetViewportOrgEx*(
+  hdc: HDC, x: int32, y: int32, lppt: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetWindowExtEx*(
+  hdc: HDC, x: int32, y: int32, lpsz: LPSIZE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetWindowOrgEx*(
+  hdc: HDC, x: int32, y: int32, lppt: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc OffsetViewportOrgEx*(
+  hdc: HDC, x: int32, y: int32, lppt: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc OffsetWindowOrgEx*(
+  hdc: HDC, x: int32, y: int32, lppt: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ScaleViewportExtEx*(
+  hdc: HDC, xn: int32, dx: int32, yn: int32, yd: int32, lpsz: LPSIZE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ScaleWindowExtEx*(
+  hdc: HDC, xn: int32, xd: int32, yn: int32, yd: int32, lpsz: LPSIZE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetBitmapDimensionEx*(
+  hbm: HBITMAP, w: int32, h: int32, lpsz: LPSIZE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetBrushOrgEx*(
+  hdc: HDC, x: int32, y: int32, lppt: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetTextFaceA*(
+  hdc: HDC, c: int32, lpName: LPSTR
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetTextFaceW*(
+  hdc: HDC, c: int32, lpName: LPWSTR
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetKerningPairsA*(
+  hdc: HDC, nPairs: DWORD, lpKernPair: LPKERNINGPAIR
+): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetKerningPairsW*(
+  hdc: HDC, nPairs: DWORD, lpKernPair: LPKERNINGPAIR
+): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetDCOrgEx*(
+  hdc: HDC, lppt: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc FixBrushOrgEx*(
+  hdc: HDC, x: int32, y: int32, ptl: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc UnrealizeObject*(h: HGDIOBJ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc GdiFlush*(): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc GdiSetBatchLimit*(dw: DWORD): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
 proc GdiGetBatchLimit*(): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetICMMode*(hdc: HDC, mode: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CheckColorsInGamut*(hdc: HDC, lpRGBTriple: LPVOID, dlpBuffer: LPVOID, nCount: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+proc SetICMMode*(
+  hdc: HDC, mode: int32
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CheckColorsInGamut*(
+  hdc: HDC, lpRGBTriple: LPVOID, dlpBuffer: LPVOID, nCount: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
 proc GetColorSpace*(hdc: HDC): HCOLORSPACE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetLogColorSpaceA*(hColorSpace: HCOLORSPACE, lpBuffer: LPLOGCOLORSPACEA, nSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetLogColorSpaceW*(hColorSpace: HCOLORSPACE, lpBuffer: LPLOGCOLORSPACEW, nSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateColorSpaceA*(lplcs: LPLOGCOLORSPACEA): HCOLORSPACE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc CreateColorSpaceW*(lplcs: LPLOGCOLORSPACEW): HCOLORSPACE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetColorSpace*(hdc: HDC, hcs: HCOLORSPACE): HCOLORSPACE {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc DeleteColorSpace*(hcs: HCOLORSPACE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetICMProfileA*(hdc: HDC, pBufSize: LPDWORD, pszFilename: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetICMProfileW*(hdc: HDC, pBufSize: LPDWORD, pszFilename: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetICMProfileA*(hdc: HDC, lpFileName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetICMProfileW*(hdc: HDC, lpFileName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc GetDeviceGammaRamp*(hdc: HDC, lpRamp: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc SetDeviceGammaRamp*(hdc: HDC, lpRamp: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ColorMatchToTarget*(hdc: HDC, hdcTarget: HDC, action: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc EnumICMProfilesA*(hdc: HDC, lpProc: ICMENUMPROCA, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc EnumICMProfilesW*(hdc: HDC, lpProc: ICMENUMPROCW, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc UpdateICMRegKeyA*(reserved: DWORD, lpszCMID: LPSTR, lpszFileName: LPSTR, command: UINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc UpdateICMRegKeyW*(reserved: DWORD, lpszCMID: LPWSTR, lpszFileName: LPWSTR, command: UINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc ColorCorrectPalette*(hdc: HDC, hPal: HPALETTE, deFirst: DWORD, num: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc wglCopyContext*(P1: HGLRC, P2: HGLRC, P3: UINT): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
+proc GetLogColorSpaceA*(
+  hColorSpace: HCOLORSPACE, lpBuffer: LPLOGCOLORSPACEA, nSize: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetLogColorSpaceW*(
+  hColorSpace: HCOLORSPACE, lpBuffer: LPLOGCOLORSPACEW, nSize: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateColorSpaceA*(
+  lplcs: LPLOGCOLORSPACEA
+): HCOLORSPACE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc CreateColorSpaceW*(
+  lplcs: LPLOGCOLORSPACEW
+): HCOLORSPACE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetColorSpace*(
+  hdc: HDC, hcs: HCOLORSPACE
+): HCOLORSPACE {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc DeleteColorSpace*(
+  hcs: HCOLORSPACE
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetICMProfileA*(
+  hdc: HDC, pBufSize: LPDWORD, pszFilename: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetICMProfileW*(
+  hdc: HDC, pBufSize: LPDWORD, pszFilename: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetICMProfileA*(
+  hdc: HDC, lpFileName: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetICMProfileW*(
+  hdc: HDC, lpFileName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc GetDeviceGammaRamp*(
+  hdc: HDC, lpRamp: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc SetDeviceGammaRamp*(
+  hdc: HDC, lpRamp: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ColorMatchToTarget*(
+  hdc: HDC, hdcTarget: HDC, action: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc EnumICMProfilesA*(
+  hdc: HDC, lpProc: ICMENUMPROCA, lParam: LPARAM
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc EnumICMProfilesW*(
+  hdc: HDC, lpProc: ICMENUMPROCW, lParam: LPARAM
+): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc UpdateICMRegKeyA*(
+  reserved: DWORD, lpszCMID: LPSTR, lpszFileName: LPSTR, command: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc UpdateICMRegKeyW*(
+  reserved: DWORD, lpszCMID: LPWSTR, lpszFileName: LPWSTR, command: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc ColorCorrectPalette*(
+  hdc: HDC, hPal: HPALETTE, deFirst: DWORD, num: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
+
+proc wglCopyContext*(
+  P1: HGLRC, P2: HGLRC, P3: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
+
 proc wglCreateContext*(P1: HDC): HGLRC {.winapi, stdcall, dynlib: "opengl32", importc.}
-proc wglCreateLayerContext*(P1: HDC, P2: int32): HGLRC {.winapi, stdcall, dynlib: "opengl32", importc.}
-proc wglDeleteContext*(P1: HGLRC): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
+proc wglCreateLayerContext*(
+  P1: HDC, P2: int32
+): HGLRC {.winapi, stdcall, dynlib: "opengl32", importc.}
+
+proc wglDeleteContext*(
+  P1: HGLRC
+): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
+
 proc wglGetCurrentContext*(): HGLRC {.winapi, stdcall, dynlib: "opengl32", importc.}
 proc wglGetCurrentDC*(): HDC {.winapi, stdcall, dynlib: "opengl32", importc.}
-proc wglGetProcAddress*(P1: LPCSTR): PROC {.winapi, stdcall, dynlib: "opengl32", importc.}
-proc wglMakeCurrent*(P1: HDC, P2: HGLRC): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
-proc wglShareLists*(P1: HGLRC, P2: HGLRC): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
-proc wglUseFontBitmapsA*(P1: HDC, P2: DWORD, P3: DWORD, P4: DWORD): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
-proc wglUseFontBitmapsW*(P1: HDC, P2: DWORD, P3: DWORD, P4: DWORD): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
+proc wglGetProcAddress*(
+  P1: LPCSTR
+): PROC {.winapi, stdcall, dynlib: "opengl32", importc.}
+
+proc wglMakeCurrent*(
+  P1: HDC, P2: HGLRC
+): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
+
+proc wglShareLists*(
+  P1: HGLRC, P2: HGLRC
+): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
+
+proc wglUseFontBitmapsA*(
+  P1: HDC, P2: DWORD, P3: DWORD, P4: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
+
+proc wglUseFontBitmapsW*(
+  P1: HDC, P2: DWORD, P3: DWORD, P4: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
+
 proc SwapBuffers*(P1: HDC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
-proc wglUseFontOutlinesA*(P1: HDC, P2: DWORD, P3: DWORD, P4: DWORD, P5: FLOAT, P6: FLOAT, P7: int32, P8: LPGLYPHMETRICSFLOAT): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
-proc wglUseFontOutlinesW*(P1: HDC, P2: DWORD, P3: DWORD, P4: DWORD, P5: FLOAT, P6: FLOAT, P7: int32, P8: LPGLYPHMETRICSFLOAT): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
-proc wglDescribeLayerPlane*(P1: HDC, P2: int32, P3: int32, P4: UINT, P5: LPLAYERPLANEDESCRIPTOR): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
-proc wglSetLayerPaletteEntries*(P1: HDC, P2: int32, P3: int32, P4: int32, P5: ptr COLORREF): int32 {.winapi, stdcall, dynlib: "opengl32", importc.}
-proc wglGetLayerPaletteEntries*(P1: HDC, P2: int32, P3: int32, P4: int32, P5: ptr COLORREF): int32 {.winapi, stdcall, dynlib: "opengl32", importc.}
-proc wglRealizeLayerPalette*(P1: HDC, P2: int32, P3: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
-proc wglSwapLayerBuffers*(P1: HDC, P2: UINT): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
-proc wglSwapMultipleBuffers*(P1: UINT, P2: ptr WGLSWAP): DWORD {.winapi, stdcall, dynlib: "opengl32", importc.}
-template MAKEROP4*(fore: untyped, back: untyped): DWORD = DWORD((back shl 8) and 0xff000000) or DWORD(fore)
-template GetCValue*(cmyk: untyped): BYTE = BYTE((cmyk shr 24) and 0xff)
-template GetMValue*(cmyk: untyped): BYTE = BYTE((cmyk shr 16) and 0xff)
-template GetYValue*(cmyk: untyped): BYTE = BYTE((cmyk shr 8) and 0xff)
-template GetKValue*(cmyk: untyped): BYTE = BYTE((cmyk) and 0xff)
-template CMYK*(c: untyped, m: untyped, y: untyped, k: untyped): COLORREF = COLORREF(COLORREF(k) or COLORREF(y shl 8) or COLORREF(m shl 16) or COLORREF(c shl 24))
-template MAKEPOINTS*(l: untyped): POINTS = POINTS(x: SHORT(l and 0xffff), y: SHORT(l shr 16 and 0xffff))
-template RGB*(r: untyped, g: untyped, b: untyped): COLORREF = COLORREF(COLORREF(r and 0xff) or (COLORREF(g and 0xff) shl 8) or (COLORREF(b and 0xff) shl 16))
-template PALETTERGB*(r: untyped, g: untyped, b: untyped): COLORREF = COLORREF(RGB(r, g, b) or 0x02000000)
-template GetRValue*(c: untyped): BYTE = BYTE((c) and 0xff)
-template GetGValue*(c: untyped): BYTE = BYTE((c shr 8) and 0xff)
-template GetBValue*(c: untyped): BYTE = BYTE((c shr 16) and 0xff)
-template PALETTEINDEX*(i: untyped): COLORREF = COLORREF(i and 0xff) or 0x01000000
-proc `dmOrientation=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmOrientation = x
-proc dmOrientation*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmOrientation
-proc dmOrientation*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmOrientation
-proc `dmPaperSize=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmPaperSize = x
-proc dmPaperSize*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmPaperSize
-proc dmPaperSize*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmPaperSize
-proc `dmPaperLength=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmPaperLength = x
-proc dmPaperLength*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmPaperLength
-proc dmPaperLength*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmPaperLength
-proc `dmPaperWidth=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmPaperWidth = x
-proc dmPaperWidth*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmPaperWidth
-proc dmPaperWidth*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmPaperWidth
-proc `dmScale=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmScale = x
-proc dmScale*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmScale
-proc dmScale*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmScale
-proc `dmCopies=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmCopies = x
-proc dmCopies*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmCopies
-proc dmCopies*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmCopies
-proc `dmDefaultSource=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmDefaultSource = x
-proc dmDefaultSource*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmDefaultSource
-proc dmDefaultSource*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmDefaultSource
-proc `dmPrintQuality=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmPrintQuality = x
-proc dmPrintQuality*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmPrintQuality
-proc dmPrintQuality*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmPrintQuality
-proc `dmPosition=`*(self: var DEVMODEA, x: POINTL) {.inline.} = self.union1.struct2.dmPosition = x
-proc dmPosition*(self: DEVMODEA): POINTL {.inline.} = self.union1.struct2.dmPosition
-proc dmPosition*(self: var DEVMODEA): var POINTL {.inline.} = self.union1.struct2.dmPosition
-proc `dmDisplayOrientation=`*(self: var DEVMODEA, x: DWORD) {.inline.} = self.union1.struct2.dmDisplayOrientation = x
-proc dmDisplayOrientation*(self: DEVMODEA): DWORD {.inline.} = self.union1.struct2.dmDisplayOrientation
-proc dmDisplayOrientation*(self: var DEVMODEA): var DWORD {.inline.} = self.union1.struct2.dmDisplayOrientation
-proc `dmDisplayFixedOutput=`*(self: var DEVMODEA, x: DWORD) {.inline.} = self.union1.struct2.dmDisplayFixedOutput = x
-proc dmDisplayFixedOutput*(self: DEVMODEA): DWORD {.inline.} = self.union1.struct2.dmDisplayFixedOutput
-proc dmDisplayFixedOutput*(self: var DEVMODEA): var DWORD {.inline.} = self.union1.struct2.dmDisplayFixedOutput
-proc `dmDisplayFlags=`*(self: var DEVMODEA, x: DWORD) {.inline.} = self.union2.dmDisplayFlags = x
-proc dmDisplayFlags*(self: DEVMODEA): DWORD {.inline.} = self.union2.dmDisplayFlags
-proc dmDisplayFlags*(self: var DEVMODEA): var DWORD {.inline.} = self.union2.dmDisplayFlags
-proc `dmNup=`*(self: var DEVMODEA, x: DWORD) {.inline.} = self.union2.dmNup = x
-proc dmNup*(self: DEVMODEA): DWORD {.inline.} = self.union2.dmNup
-proc dmNup*(self: var DEVMODEA): var DWORD {.inline.} = self.union2.dmNup
-proc `dmOrientation=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmOrientation = x
-proc dmOrientation*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmOrientation
-proc dmOrientation*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmOrientation
-proc `dmPaperSize=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmPaperSize = x
-proc dmPaperSize*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmPaperSize
-proc dmPaperSize*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmPaperSize
-proc `dmPaperLength=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmPaperLength = x
-proc dmPaperLength*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmPaperLength
-proc dmPaperLength*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmPaperLength
-proc `dmPaperWidth=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmPaperWidth = x
-proc dmPaperWidth*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmPaperWidth
-proc dmPaperWidth*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmPaperWidth
-proc `dmScale=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmScale = x
-proc dmScale*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmScale
-proc dmScale*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmScale
-proc `dmCopies=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmCopies = x
-proc dmCopies*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmCopies
-proc dmCopies*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmCopies
-proc `dmDefaultSource=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmDefaultSource = x
-proc dmDefaultSource*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmDefaultSource
-proc dmDefaultSource*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmDefaultSource
-proc `dmPrintQuality=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmPrintQuality = x
-proc dmPrintQuality*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmPrintQuality
-proc dmPrintQuality*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmPrintQuality
-proc `dmPosition=`*(self: var DEVMODEW, x: POINTL) {.inline.} = self.union1.struct2.dmPosition = x
-proc dmPosition*(self: DEVMODEW): POINTL {.inline.} = self.union1.struct2.dmPosition
-proc dmPosition*(self: var DEVMODEW): var POINTL {.inline.} = self.union1.struct2.dmPosition
-proc `dmDisplayOrientation=`*(self: var DEVMODEW, x: DWORD) {.inline.} = self.union1.struct2.dmDisplayOrientation = x
-proc dmDisplayOrientation*(self: DEVMODEW): DWORD {.inline.} = self.union1.struct2.dmDisplayOrientation
-proc dmDisplayOrientation*(self: var DEVMODEW): var DWORD {.inline.} = self.union1.struct2.dmDisplayOrientation
-proc `dmDisplayFixedOutput=`*(self: var DEVMODEW, x: DWORD) {.inline.} = self.union1.struct2.dmDisplayFixedOutput = x
-proc dmDisplayFixedOutput*(self: DEVMODEW): DWORD {.inline.} = self.union1.struct2.dmDisplayFixedOutput
-proc dmDisplayFixedOutput*(self: var DEVMODEW): var DWORD {.inline.} = self.union1.struct2.dmDisplayFixedOutput
-proc `dmDisplayFlags=`*(self: var DEVMODEW, x: DWORD) {.inline.} = self.union2.dmDisplayFlags = x
-proc dmDisplayFlags*(self: DEVMODEW): DWORD {.inline.} = self.union2.dmDisplayFlags
-proc dmDisplayFlags*(self: var DEVMODEW): var DWORD {.inline.} = self.union2.dmDisplayFlags
-proc `dmNup=`*(self: var DEVMODEW, x: DWORD) {.inline.} = self.union2.dmNup = x
-proc dmNup*(self: DEVMODEW): DWORD {.inline.} = self.union2.dmNup
-proc dmNup*(self: var DEVMODEW): var DWORD {.inline.} = self.union2.dmNup
-proc `targetMode=`*(self: var DISPLAYCONFIG_MODE_INFO, x: DISPLAYCONFIG_TARGET_MODE) {.inline.} = self.union1.targetMode = x
-proc targetMode*(self: DISPLAYCONFIG_MODE_INFO): DISPLAYCONFIG_TARGET_MODE {.inline.} = self.union1.targetMode
-proc targetMode*(self: var DISPLAYCONFIG_MODE_INFO): var DISPLAYCONFIG_TARGET_MODE {.inline.} = self.union1.targetMode
-proc `sourceMode=`*(self: var DISPLAYCONFIG_MODE_INFO, x: DISPLAYCONFIG_SOURCE_MODE) {.inline.} = self.union1.sourceMode = x
-proc sourceMode*(self: DISPLAYCONFIG_MODE_INFO): DISPLAYCONFIG_SOURCE_MODE {.inline.} = self.union1.sourceMode
-proc sourceMode*(self: var DISPLAYCONFIG_MODE_INFO): var DISPLAYCONFIG_SOURCE_MODE {.inline.} = self.union1.sourceMode
-proc `friendlyNameFromEdid=`*(self: var DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS, x: UINT32) {.inline.} = self.union1.struct1.friendlyNameFromEdid = x
-proc friendlyNameFromEdid*(self: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS): UINT32 {.inline.} = self.union1.struct1.friendlyNameFromEdid
-proc `friendlyNameForced=`*(self: var DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS, x: UINT32) {.inline.} = self.union1.struct1.friendlyNameForced = x
-proc friendlyNameForced*(self: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS): UINT32 {.inline.} = self.union1.struct1.friendlyNameForced
-proc `edidIdsValid=`*(self: var DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS, x: UINT32) {.inline.} = self.union1.struct1.edidIdsValid = x
-proc edidIdsValid*(self: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS): UINT32 {.inline.} = self.union1.struct1.edidIdsValid
-proc `reserved=`*(self: var DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS, x: UINT32) {.inline.} = self.union1.struct1.reserved = x
-proc reserved*(self: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS): UINT32 {.inline.} = self.union1.struct1.reserved
-proc `value=`*(self: var DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS, x: UINT32) {.inline.} = self.union1.value = x
-proc value*(self: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS): UINT32 {.inline.} = self.union1.value
-proc value*(self: var DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS): var UINT32 {.inline.} = self.union1.value
-proc `bootPersistenceOn=`*(self: var DISPLAYCONFIG_SET_TARGET_PERSISTENCE, x: UINT32) {.inline.} = self.union1.struct1.bootPersistenceOn = x
-proc bootPersistenceOn*(self: DISPLAYCONFIG_SET_TARGET_PERSISTENCE): UINT32 {.inline.} = self.union1.struct1.bootPersistenceOn
-proc `reserved=`*(self: var DISPLAYCONFIG_SET_TARGET_PERSISTENCE, x: UINT32) {.inline.} = self.union1.struct1.reserved = x
-proc reserved*(self: DISPLAYCONFIG_SET_TARGET_PERSISTENCE): UINT32 {.inline.} = self.union1.struct1.reserved
-proc `value=`*(self: var DISPLAYCONFIG_SET_TARGET_PERSISTENCE, x: UINT32) {.inline.} = self.union1.value = x
-proc value*(self: DISPLAYCONFIG_SET_TARGET_PERSISTENCE): UINT32 {.inline.} = self.union1.value
-proc value*(self: var DISPLAYCONFIG_SET_TARGET_PERSISTENCE): var UINT32 {.inline.} = self.union1.value
+proc wglUseFontOutlinesA*(
+  P1: HDC,
+  P2: DWORD,
+  P3: DWORD,
+  P4: DWORD,
+  P5: FLOAT,
+  P6: FLOAT,
+  P7: int32,
+  P8: LPGLYPHMETRICSFLOAT,
+): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
+
+proc wglUseFontOutlinesW*(
+  P1: HDC,
+  P2: DWORD,
+  P3: DWORD,
+  P4: DWORD,
+  P5: FLOAT,
+  P6: FLOAT,
+  P7: int32,
+  P8: LPGLYPHMETRICSFLOAT,
+): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
+
+proc wglDescribeLayerPlane*(
+  P1: HDC, P2: int32, P3: int32, P4: UINT, P5: LPLAYERPLANEDESCRIPTOR
+): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
+
+proc wglSetLayerPaletteEntries*(
+  P1: HDC, P2: int32, P3: int32, P4: int32, P5: ptr COLORREF
+): int32 {.winapi, stdcall, dynlib: "opengl32", importc.}
+
+proc wglGetLayerPaletteEntries*(
+  P1: HDC, P2: int32, P3: int32, P4: int32, P5: ptr COLORREF
+): int32 {.winapi, stdcall, dynlib: "opengl32", importc.}
+
+proc wglRealizeLayerPalette*(
+  P1: HDC, P2: int32, P3: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
+
+proc wglSwapLayerBuffers*(
+  P1: HDC, P2: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc.}
+
+proc wglSwapMultipleBuffers*(
+  P1: UINT, P2: ptr WGLSWAP
+): DWORD {.winapi, stdcall, dynlib: "opengl32", importc.}
+
+template MAKEROP4*(fore: untyped, back: untyped): DWORD =
+  DWORD((back shl 8) and 0xff000000) or DWORD(fore)
+
+template GetCValue*(cmyk: untyped): BYTE =
+  BYTE((cmyk shr 24) and 0xff)
+
+template GetMValue*(cmyk: untyped): BYTE =
+  BYTE((cmyk shr 16) and 0xff)
+
+template GetYValue*(cmyk: untyped): BYTE =
+  BYTE((cmyk shr 8) and 0xff)
+
+template GetKValue*(cmyk: untyped): BYTE =
+  BYTE((cmyk) and 0xff)
+
+template CMYK*(c: untyped, m: untyped, y: untyped, k: untyped): COLORREF =
+  COLORREF(COLORREF(k) or COLORREF(y shl 8) or COLORREF(m shl 16) or COLORREF(c shl 24))
+
+template MAKEPOINTS*(l: untyped): POINTS =
+  POINTS(x: SHORT(l and 0xffff), y: SHORT(l shr 16 and 0xffff))
+
+template RGB*(r: untyped, g: untyped, b: untyped): COLORREF =
+  COLORREF(
+    COLORREF(r and 0xff) or (COLORREF(g and 0xff) shl 8) or (
+      COLORREF(b and 0xff) shl 16
+    )
+  )
+
+template PALETTERGB*(r: untyped, g: untyped, b: untyped): COLORREF =
+  COLORREF(RGB(r, g, b) or 0x02000000)
+
+template GetRValue*(c: untyped): BYTE =
+  BYTE((c) and 0xff)
+
+template GetGValue*(c: untyped): BYTE =
+  BYTE((c shr 8) and 0xff)
+
+template GetBValue*(c: untyped): BYTE =
+  BYTE((c shr 16) and 0xff)
+
+template PALETTEINDEX*(i: untyped): COLORREF =
+  COLORREF(i and 0xff) or 0x01000000
+
+proc `dmOrientation=`*(self: var DEVMODEA, x: int16) {.inline.} =
+  self.union1.struct1.dmOrientation = x
+
+proc dmOrientation*(self: DEVMODEA): int16 {.inline.} =
+  self.union1.struct1.dmOrientation
+
+proc dmOrientation*(self: var DEVMODEA): var int16 {.inline.} =
+  self.union1.struct1.dmOrientation
+
+proc `dmPaperSize=`*(self: var DEVMODEA, x: int16) {.inline.} =
+  self.union1.struct1.dmPaperSize = x
+
+proc dmPaperSize*(self: DEVMODEA): int16 {.inline.} =
+  self.union1.struct1.dmPaperSize
+
+proc dmPaperSize*(self: var DEVMODEA): var int16 {.inline.} =
+  self.union1.struct1.dmPaperSize
+
+proc `dmPaperLength=`*(self: var DEVMODEA, x: int16) {.inline.} =
+  self.union1.struct1.dmPaperLength = x
+
+proc dmPaperLength*(self: DEVMODEA): int16 {.inline.} =
+  self.union1.struct1.dmPaperLength
+
+proc dmPaperLength*(self: var DEVMODEA): var int16 {.inline.} =
+  self.union1.struct1.dmPaperLength
+
+proc `dmPaperWidth=`*(self: var DEVMODEA, x: int16) {.inline.} =
+  self.union1.struct1.dmPaperWidth = x
+
+proc dmPaperWidth*(self: DEVMODEA): int16 {.inline.} =
+  self.union1.struct1.dmPaperWidth
+
+proc dmPaperWidth*(self: var DEVMODEA): var int16 {.inline.} =
+  self.union1.struct1.dmPaperWidth
+
+proc `dmScale=`*(self: var DEVMODEA, x: int16) {.inline.} =
+  self.union1.struct1.dmScale = x
+
+proc dmScale*(self: DEVMODEA): int16 {.inline.} =
+  self.union1.struct1.dmScale
+
+proc dmScale*(self: var DEVMODEA): var int16 {.inline.} =
+  self.union1.struct1.dmScale
+
+proc `dmCopies=`*(self: var DEVMODEA, x: int16) {.inline.} =
+  self.union1.struct1.dmCopies = x
+
+proc dmCopies*(self: DEVMODEA): int16 {.inline.} =
+  self.union1.struct1.dmCopies
+
+proc dmCopies*(self: var DEVMODEA): var int16 {.inline.} =
+  self.union1.struct1.dmCopies
+
+proc `dmDefaultSource=`*(self: var DEVMODEA, x: int16) {.inline.} =
+  self.union1.struct1.dmDefaultSource = x
+
+proc dmDefaultSource*(self: DEVMODEA): int16 {.inline.} =
+  self.union1.struct1.dmDefaultSource
+
+proc dmDefaultSource*(self: var DEVMODEA): var int16 {.inline.} =
+  self.union1.struct1.dmDefaultSource
+
+proc `dmPrintQuality=`*(self: var DEVMODEA, x: int16) {.inline.} =
+  self.union1.struct1.dmPrintQuality = x
+
+proc dmPrintQuality*(self: DEVMODEA): int16 {.inline.} =
+  self.union1.struct1.dmPrintQuality
+
+proc dmPrintQuality*(self: var DEVMODEA): var int16 {.inline.} =
+  self.union1.struct1.dmPrintQuality
+
+proc `dmPosition=`*(self: var DEVMODEA, x: POINTL) {.inline.} =
+  self.union1.struct2.dmPosition = x
+
+proc dmPosition*(self: DEVMODEA): POINTL {.inline.} =
+  self.union1.struct2.dmPosition
+
+proc dmPosition*(self: var DEVMODEA): var POINTL {.inline.} =
+  self.union1.struct2.dmPosition
+
+proc `dmDisplayOrientation=`*(self: var DEVMODEA, x: DWORD) {.inline.} =
+  self.union1.struct2.dmDisplayOrientation = x
+
+proc dmDisplayOrientation*(self: DEVMODEA): DWORD {.inline.} =
+  self.union1.struct2.dmDisplayOrientation
+
+proc dmDisplayOrientation*(self: var DEVMODEA): var DWORD {.inline.} =
+  self.union1.struct2.dmDisplayOrientation
+
+proc `dmDisplayFixedOutput=`*(self: var DEVMODEA, x: DWORD) {.inline.} =
+  self.union1.struct2.dmDisplayFixedOutput = x
+
+proc dmDisplayFixedOutput*(self: DEVMODEA): DWORD {.inline.} =
+  self.union1.struct2.dmDisplayFixedOutput
+
+proc dmDisplayFixedOutput*(self: var DEVMODEA): var DWORD {.inline.} =
+  self.union1.struct2.dmDisplayFixedOutput
+
+proc `dmDisplayFlags=`*(self: var DEVMODEA, x: DWORD) {.inline.} =
+  self.union2.dmDisplayFlags = x
+
+proc dmDisplayFlags*(self: DEVMODEA): DWORD {.inline.} =
+  self.union2.dmDisplayFlags
+
+proc dmDisplayFlags*(self: var DEVMODEA): var DWORD {.inline.} =
+  self.union2.dmDisplayFlags
+
+proc `dmNup=`*(self: var DEVMODEA, x: DWORD) {.inline.} =
+  self.union2.dmNup = x
+
+proc dmNup*(self: DEVMODEA): DWORD {.inline.} =
+  self.union2.dmNup
+
+proc dmNup*(self: var DEVMODEA): var DWORD {.inline.} =
+  self.union2.dmNup
+
+proc `dmOrientation=`*(self: var DEVMODEW, x: int16) {.inline.} =
+  self.union1.struct1.dmOrientation = x
+
+proc dmOrientation*(self: DEVMODEW): int16 {.inline.} =
+  self.union1.struct1.dmOrientation
+
+proc dmOrientation*(self: var DEVMODEW): var int16 {.inline.} =
+  self.union1.struct1.dmOrientation
+
+proc `dmPaperSize=`*(self: var DEVMODEW, x: int16) {.inline.} =
+  self.union1.struct1.dmPaperSize = x
+
+proc dmPaperSize*(self: DEVMODEW): int16 {.inline.} =
+  self.union1.struct1.dmPaperSize
+
+proc dmPaperSize*(self: var DEVMODEW): var int16 {.inline.} =
+  self.union1.struct1.dmPaperSize
+
+proc `dmPaperLength=`*(self: var DEVMODEW, x: int16) {.inline.} =
+  self.union1.struct1.dmPaperLength = x
+
+proc dmPaperLength*(self: DEVMODEW): int16 {.inline.} =
+  self.union1.struct1.dmPaperLength
+
+proc dmPaperLength*(self: var DEVMODEW): var int16 {.inline.} =
+  self.union1.struct1.dmPaperLength
+
+proc `dmPaperWidth=`*(self: var DEVMODEW, x: int16) {.inline.} =
+  self.union1.struct1.dmPaperWidth = x
+
+proc dmPaperWidth*(self: DEVMODEW): int16 {.inline.} =
+  self.union1.struct1.dmPaperWidth
+
+proc dmPaperWidth*(self: var DEVMODEW): var int16 {.inline.} =
+  self.union1.struct1.dmPaperWidth
+
+proc `dmScale=`*(self: var DEVMODEW, x: int16) {.inline.} =
+  self.union1.struct1.dmScale = x
+
+proc dmScale*(self: DEVMODEW): int16 {.inline.} =
+  self.union1.struct1.dmScale
+
+proc dmScale*(self: var DEVMODEW): var int16 {.inline.} =
+  self.union1.struct1.dmScale
+
+proc `dmCopies=`*(self: var DEVMODEW, x: int16) {.inline.} =
+  self.union1.struct1.dmCopies = x
+
+proc dmCopies*(self: DEVMODEW): int16 {.inline.} =
+  self.union1.struct1.dmCopies
+
+proc dmCopies*(self: var DEVMODEW): var int16 {.inline.} =
+  self.union1.struct1.dmCopies
+
+proc `dmDefaultSource=`*(self: var DEVMODEW, x: int16) {.inline.} =
+  self.union1.struct1.dmDefaultSource = x
+
+proc dmDefaultSource*(self: DEVMODEW): int16 {.inline.} =
+  self.union1.struct1.dmDefaultSource
+
+proc dmDefaultSource*(self: var DEVMODEW): var int16 {.inline.} =
+  self.union1.struct1.dmDefaultSource
+
+proc `dmPrintQuality=`*(self: var DEVMODEW, x: int16) {.inline.} =
+  self.union1.struct1.dmPrintQuality = x
+
+proc dmPrintQuality*(self: DEVMODEW): int16 {.inline.} =
+  self.union1.struct1.dmPrintQuality
+
+proc dmPrintQuality*(self: var DEVMODEW): var int16 {.inline.} =
+  self.union1.struct1.dmPrintQuality
+
+proc `dmPosition=`*(self: var DEVMODEW, x: POINTL) {.inline.} =
+  self.union1.struct2.dmPosition = x
+
+proc dmPosition*(self: DEVMODEW): POINTL {.inline.} =
+  self.union1.struct2.dmPosition
+
+proc dmPosition*(self: var DEVMODEW): var POINTL {.inline.} =
+  self.union1.struct2.dmPosition
+
+proc `dmDisplayOrientation=`*(self: var DEVMODEW, x: DWORD) {.inline.} =
+  self.union1.struct2.dmDisplayOrientation = x
+
+proc dmDisplayOrientation*(self: DEVMODEW): DWORD {.inline.} =
+  self.union1.struct2.dmDisplayOrientation
+
+proc dmDisplayOrientation*(self: var DEVMODEW): var DWORD {.inline.} =
+  self.union1.struct2.dmDisplayOrientation
+
+proc `dmDisplayFixedOutput=`*(self: var DEVMODEW, x: DWORD) {.inline.} =
+  self.union1.struct2.dmDisplayFixedOutput = x
+
+proc dmDisplayFixedOutput*(self: DEVMODEW): DWORD {.inline.} =
+  self.union1.struct2.dmDisplayFixedOutput
+
+proc dmDisplayFixedOutput*(self: var DEVMODEW): var DWORD {.inline.} =
+  self.union1.struct2.dmDisplayFixedOutput
+
+proc `dmDisplayFlags=`*(self: var DEVMODEW, x: DWORD) {.inline.} =
+  self.union2.dmDisplayFlags = x
+
+proc dmDisplayFlags*(self: DEVMODEW): DWORD {.inline.} =
+  self.union2.dmDisplayFlags
+
+proc dmDisplayFlags*(self: var DEVMODEW): var DWORD {.inline.} =
+  self.union2.dmDisplayFlags
+
+proc `dmNup=`*(self: var DEVMODEW, x: DWORD) {.inline.} =
+  self.union2.dmNup = x
+
+proc dmNup*(self: DEVMODEW): DWORD {.inline.} =
+  self.union2.dmNup
+
+proc dmNup*(self: var DEVMODEW): var DWORD {.inline.} =
+  self.union2.dmNup
+
+proc `targetMode=`*(
+    self: var DISPLAYCONFIG_MODE_INFO, x: DISPLAYCONFIG_TARGET_MODE
+) {.inline.} =
+  self.union1.targetMode = x
+
+proc targetMode*(self: DISPLAYCONFIG_MODE_INFO): DISPLAYCONFIG_TARGET_MODE {.inline.} =
+  self.union1.targetMode
+
+proc targetMode*(
+    self: var DISPLAYCONFIG_MODE_INFO
+): var DISPLAYCONFIG_TARGET_MODE {.inline.} =
+  self.union1.targetMode
+
+proc `sourceMode=`*(
+    self: var DISPLAYCONFIG_MODE_INFO, x: DISPLAYCONFIG_SOURCE_MODE
+) {.inline.} =
+  self.union1.sourceMode = x
+
+proc sourceMode*(self: DISPLAYCONFIG_MODE_INFO): DISPLAYCONFIG_SOURCE_MODE {.inline.} =
+  self.union1.sourceMode
+
+proc sourceMode*(
+    self: var DISPLAYCONFIG_MODE_INFO
+): var DISPLAYCONFIG_SOURCE_MODE {.inline.} =
+  self.union1.sourceMode
+
+proc `friendlyNameFromEdid=`*(
+    self: var DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS, x: UINT32
+) {.inline.} =
+  self.union1.struct1.friendlyNameFromEdid = x
+
+proc friendlyNameFromEdid*(
+    self: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS
+): UINT32 {.inline.} =
+  self.union1.struct1.friendlyNameFromEdid
+
+proc `friendlyNameForced=`*(
+    self: var DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS, x: UINT32
+) {.inline.} =
+  self.union1.struct1.friendlyNameForced = x
+
+proc friendlyNameForced*(
+    self: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS
+): UINT32 {.inline.} =
+  self.union1.struct1.friendlyNameForced
+
+proc `edidIdsValid=`*(
+    self: var DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS, x: UINT32
+) {.inline.} =
+  self.union1.struct1.edidIdsValid = x
+
+proc edidIdsValid*(self: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS): UINT32 {.inline.} =
+  self.union1.struct1.edidIdsValid
+
+proc `reserved=`*(
+    self: var DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS, x: UINT32
+) {.inline.} =
+  self.union1.struct1.reserved = x
+
+proc reserved*(self: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS): UINT32 {.inline.} =
+  self.union1.struct1.reserved
+
+proc `value=`*(self: var DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS, x: UINT32) {.inline.} =
+  self.union1.value = x
+
+proc value*(self: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS): UINT32 {.inline.} =
+  self.union1.value
+
+proc value*(self: var DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS): var UINT32 {.inline.} =
+  self.union1.value
+
+proc `bootPersistenceOn=`*(
+    self: var DISPLAYCONFIG_SET_TARGET_PERSISTENCE, x: UINT32
+) {.inline.} =
+  self.union1.struct1.bootPersistenceOn = x
+
+proc bootPersistenceOn*(self: DISPLAYCONFIG_SET_TARGET_PERSISTENCE): UINT32 {.inline.} =
+  self.union1.struct1.bootPersistenceOn
+
+proc `reserved=`*(
+    self: var DISPLAYCONFIG_SET_TARGET_PERSISTENCE, x: UINT32
+) {.inline.} =
+  self.union1.struct1.reserved = x
+
+proc reserved*(self: DISPLAYCONFIG_SET_TARGET_PERSISTENCE): UINT32 {.inline.} =
+  self.union1.struct1.reserved
+
+proc `value=`*(self: var DISPLAYCONFIG_SET_TARGET_PERSISTENCE, x: UINT32) {.inline.} =
+  self.union1.value = x
+
+proc value*(self: DISPLAYCONFIG_SET_TARGET_PERSISTENCE): UINT32 {.inline.} =
+  self.union1.value
+
+proc value*(self: var DISPLAYCONFIG_SET_TARGET_PERSISTENCE): var UINT32 {.inline.} =
+  self.union1.value
+
 when winimUnicode:
   type
     LOGCOLORSPACE* = LOGCOLORSPACEW
@@ -3806,56 +5503,261 @@
     DOCINFO* = DOCINFOW
     LPDOCINFO* = LPDOCINFOW
     ICMENUMPROC* = ICMENUMPROCW
-  proc AddFontResource*(P1: LPCWSTR): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "AddFontResourceW".}
-  proc CopyMetaFile*(P1: HMETAFILE, P2: LPCWSTR): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "CopyMetaFileW".}
-  proc CreateDC*(pwszDriver: LPCWSTR, pwszDevice: LPCWSTR, pszPort: LPCWSTR, pdm: ptr DEVMODEW): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateDCW".}
-  proc CreateFontIndirect*(lplf: ptr LOGFONTW): HFONT {.winapi, stdcall, dynlib: "gdi32", importc: "CreateFontIndirectW".}
-  proc CreateFont*(cHeight: int32, cWidth: int32, cEscapement: int32, cOrientation: int32, cWeight: int32, bItalic: DWORD, bUnderline: DWORD, bStrikeOut: DWORD, iCharSet: DWORD, iOutPrecision: DWORD, iClipPrecision: DWORD, iQuality: DWORD, iPitchAndFamily: DWORD, pszFaceName: LPCWSTR): HFONT {.winapi, stdcall, dynlib: "gdi32", importc: "CreateFontW".}
-  proc CreateIC*(pszDriver: LPCWSTR, pszDevice: LPCWSTR, pszPort: LPCWSTR, pdm: ptr DEVMODEW): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateICW".}
-  proc CreateMetaFile*(pszFile: LPCWSTR): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateMetaFileW".}
-  proc CreateScalableFontResource*(fdwHidden: DWORD, lpszFont: LPCWSTR, lpszFile: LPCWSTR, lpszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "CreateScalableFontResourceW".}
-  proc DeviceCapabilities*(pDevice: LPCWSTR, pPort: LPCWSTR, fwCapability: WORD, pOutput: LPWSTR, pDevMode: ptr DEVMODEW): int32 {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeviceCapabilitiesW".}
-  proc EnumFontFamiliesEx*(hdc: HDC, lpLogfont: LPLOGFONTW, lpProc: FONTENUMPROCW, lParam: LPARAM, dwFlags: DWORD): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumFontFamiliesExW".}
-  proc EnumFontFamilies*(hdc: HDC, lpLogfont: LPCWSTR, lpProc: FONTENUMPROCW, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumFontFamiliesW".}
-  proc EnumFonts*(hdc: HDC, lpLogfont: LPCWSTR, lpProc: FONTENUMPROCW, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumFontsW".}
-  proc GetCharWidth*(hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharWidthW".}
-  proc GetCharWidth32*(hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharWidth32W".}
-  proc GetCharWidthFloat*(hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: PFLOAT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatW".}
-  proc GetCharABCWidths*(hdc: HDC, wFirst: UINT, wLast: UINT, lpABC: LPABC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsW".}
-  proc GetCharABCWidthsFloat*(hdc: HDC, iFirst: UINT, iLast: UINT, lpABC: LPABCFLOAT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsFloatW".}
-  proc GetGlyphOutline*(hdc: HDC, uChar: UINT, fuFormat: UINT, lpgm: LPGLYPHMETRICS, cjBuffer: DWORD, pvBuffer: LPVOID, lpmat2: ptr MAT2): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetGlyphOutlineW".}
-  proc GetMetaFile*(lpName: LPCWSTR): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "GetMetaFileW".}
-  proc GetOutlineTextMetrics*(hdc: HDC, cjCopy: UINT, potm: LPOUTLINETEXTMETRICW): UINT {.winapi, stdcall, dynlib: "gdi32", importc: "GetOutlineTextMetricsW".}
-  proc GetTextExtentPoint*(hdc: HDC, lpString: LPCWSTR, c: int32, lpsz: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextExtentPointW".}
-  proc GetTextExtentPoint32*(hdc: HDC, lpString: LPCWSTR, c: int32, psizl: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextExtentPoint32W".}
-  proc GetTextExtentExPoint*(hdc: HDC, lpszString: LPCWSTR, cchString: int32, nMaxExtent: int32, lpnFit: LPINT, lpnDx: LPINT, lpSize: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextExtentExPointW".}
-  proc GetCharacterPlacement*(hdc: HDC, lpString: LPCWSTR, nCount: int32, nMexExtent: int32, lpResults: LPGCP_RESULTSW, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharacterPlacementW".}
-  proc GetGlyphIndices*(hdc: HDC, lpstr: LPCWSTR, c: int32, pgi: LPWORD, fl: DWORD): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetGlyphIndicesW".}
-  proc AddFontResourceEx*(name: LPCWSTR, fl: DWORD, res: PVOID): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "AddFontResourceExW".}
-  proc RemoveFontResourceEx*(name: LPCWSTR, fl: DWORD, pdv: PVOID): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "RemoveFontResourceExW".}
-  proc CreateFontIndirectEx*(P1: ptr ENUMLOGFONTEXDVW): HFONT {.winapi, stdcall, dynlib: "gdi32", importc: "CreateFontIndirectExW".}
-  proc ResetDC*(hdc: HDC, lpdm: ptr DEVMODEW): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "ResetDCW".}
-  proc RemoveFontResource*(lpFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "RemoveFontResourceW".}
-  proc CopyEnhMetaFile*(hEnh: HENHMETAFILE, lpFileName: LPCWSTR): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "CopyEnhMetaFileW".}
-  proc CreateEnhMetaFile*(hdc: HDC, lpFilename: LPCWSTR, lprc: ptr RECT, lpDesc: LPCWSTR): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateEnhMetaFileW".}
-  proc GetEnhMetaFile*(lpName: LPCWSTR): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileW".}
-  proc GetEnhMetaFileDescription*(hemf: HENHMETAFILE, cchBuffer: UINT, lpDescription: LPWSTR): UINT {.winapi, stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileDescriptionW".}
-  proc GetTextMetrics*(hdc: HDC, lptm: LPTEXTMETRICW): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextMetricsW".}
-  proc StartDoc*(hdc: HDC, lpdi: ptr DOCINFOW): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "StartDocW".}
-  proc GetObject*(h: HANDLE, c: int32, pv: LPVOID): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "GetObjectW".}
-  proc TextOut*(hdc: HDC, x: int32, y: int32, lpString: LPCWSTR, c: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "TextOutW".}
-  proc ExtTextOut*(hdc: HDC, x: int32, y: int32, options: UINT, lprect: ptr RECT, lpString: LPCWSTR, c: UINT, lpDx: ptr INT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "ExtTextOutW".}
-  proc PolyTextOut*(hdc: HDC, ppt: ptr POLYTEXTW, nstrings: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "PolyTextOutW".}
-  proc GetTextFace*(hdc: HDC, c: int32, lpName: LPWSTR): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextFaceW".}
-  proc GetKerningPairs*(hdc: HDC, nPairs: DWORD, lpKernPair: LPKERNINGPAIR): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetKerningPairsW".}
-  proc EnumICMProfiles*(hdc: HDC, lpProc: ICMENUMPROCW, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumICMProfilesW".}
-  proc UpdateICMRegKey*(reserved: DWORD, lpszCMID: LPWSTR, lpszFileName: LPWSTR, command: UINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "UpdateICMRegKeyW".}
-  proc GetLogColorSpace*(hColorSpace: HCOLORSPACE, lpBuffer: LPLOGCOLORSPACEW, nSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetLogColorSpaceW".}
-  proc CreateColorSpace*(lplcs: LPLOGCOLORSPACEW): HCOLORSPACE {.winapi, stdcall, dynlib: "gdi32", importc: "CreateColorSpaceW".}
-  proc GetICMProfile*(hdc: HDC, pBufSize: LPDWORD, pszFilename: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetICMProfileW".}
-  proc SetICMProfile*(hdc: HDC, lpFileName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "SetICMProfileW".}
-  proc wglUseFontBitmaps*(P1: HDC, P2: DWORD, P3: DWORD, P4: DWORD): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc: "wglUseFontBitmapsW".}
-  proc wglUseFontOutlines*(P1: HDC, P2: DWORD, P3: DWORD, P4: DWORD, P5: FLOAT, P6: FLOAT, P7: int32, P8: LPGLYPHMETRICSFLOAT): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc: "wglUseFontOutlinesW".}
+
+  proc AddFontResource*(
+    P1: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "AddFontResourceW".}
+
+  proc CopyMetaFile*(
+    P1: HMETAFILE, P2: LPCWSTR
+  ): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "CopyMetaFileW".}
+
+  proc CreateDC*(
+    pwszDriver: LPCWSTR, pwszDevice: LPCWSTR, pszPort: LPCWSTR, pdm: ptr DEVMODEW
+  ): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateDCW".}
+
+  proc CreateFontIndirect*(
+    lplf: ptr LOGFONTW
+  ): HFONT {.winapi, stdcall, dynlib: "gdi32", importc: "CreateFontIndirectW".}
+
+  proc CreateFont*(
+    cHeight: int32,
+    cWidth: int32,
+    cEscapement: int32,
+    cOrientation: int32,
+    cWeight: int32,
+    bItalic: DWORD,
+    bUnderline: DWORD,
+    bStrikeOut: DWORD,
+    iCharSet: DWORD,
+    iOutPrecision: DWORD,
+    iClipPrecision: DWORD,
+    iQuality: DWORD,
+    iPitchAndFamily: DWORD,
+    pszFaceName: LPCWSTR,
+  ): HFONT {.winapi, stdcall, dynlib: "gdi32", importc: "CreateFontW".}
+
+  proc CreateIC*(
+    pszDriver: LPCWSTR, pszDevice: LPCWSTR, pszPort: LPCWSTR, pdm: ptr DEVMODEW
+  ): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateICW".}
+
+  proc CreateMetaFile*(
+    pszFile: LPCWSTR
+  ): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateMetaFileW".}
+
+  proc CreateScalableFontResource*(
+    fdwHidden: DWORD, lpszFont: LPCWSTR, lpszFile: LPCWSTR, lpszPath: LPCWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "gdi32", importc: "CreateScalableFontResourceW"
+  .}
+
+  proc DeviceCapabilities*(
+    pDevice: LPCWSTR,
+    pPort: LPCWSTR,
+    fwCapability: WORD,
+    pOutput: LPWSTR,
+    pDevMode: ptr DEVMODEW,
+  ): int32 {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeviceCapabilitiesW".}
+
+  proc EnumFontFamiliesEx*(
+    hdc: HDC,
+    lpLogfont: LPLOGFONTW,
+    lpProc: FONTENUMPROCW,
+    lParam: LPARAM,
+    dwFlags: DWORD,
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumFontFamiliesExW".}
+
+  proc EnumFontFamilies*(
+    hdc: HDC, lpLogfont: LPCWSTR, lpProc: FONTENUMPROCW, lParam: LPARAM
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumFontFamiliesW".}
+
+  proc EnumFonts*(
+    hdc: HDC, lpLogfont: LPCWSTR, lpProc: FONTENUMPROCW, lParam: LPARAM
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumFontsW".}
+
+  proc GetCharWidth*(
+    hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharWidthW".}
+
+  proc GetCharWidth32*(
+    hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharWidth32W".}
+
+  proc GetCharWidthFloat*(
+    hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: PFLOAT
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatW".}
+
+  proc GetCharABCWidths*(
+    hdc: HDC, wFirst: UINT, wLast: UINT, lpABC: LPABC
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsW".}
+
+  proc GetCharABCWidthsFloat*(
+    hdc: HDC, iFirst: UINT, iLast: UINT, lpABC: LPABCFLOAT
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsFloatW".}
+
+  proc GetGlyphOutline*(
+    hdc: HDC,
+    uChar: UINT,
+    fuFormat: UINT,
+    lpgm: LPGLYPHMETRICS,
+    cjBuffer: DWORD,
+    pvBuffer: LPVOID,
+    lpmat2: ptr MAT2,
+  ): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetGlyphOutlineW".}
+
+  proc GetMetaFile*(
+    lpName: LPCWSTR
+  ): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "GetMetaFileW".}
+
+  proc GetOutlineTextMetrics*(
+    hdc: HDC, cjCopy: UINT, potm: LPOUTLINETEXTMETRICW
+  ): UINT {.winapi, stdcall, dynlib: "gdi32", importc: "GetOutlineTextMetricsW".}
+
+  proc GetTextExtentPoint*(
+    hdc: HDC, lpString: LPCWSTR, c: int32, lpsz: LPSIZE
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextExtentPointW".}
+
+  proc GetTextExtentPoint32*(
+    hdc: HDC, lpString: LPCWSTR, c: int32, psizl: LPSIZE
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextExtentPoint32W".}
+
+  proc GetTextExtentExPoint*(
+    hdc: HDC,
+    lpszString: LPCWSTR,
+    cchString: int32,
+    nMaxExtent: int32,
+    lpnFit: LPINT,
+    lpnDx: LPINT,
+    lpSize: LPSIZE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextExtentExPointW".}
+
+  proc GetCharacterPlacement*(
+    hdc: HDC,
+    lpString: LPCWSTR,
+    nCount: int32,
+    nMexExtent: int32,
+    lpResults: LPGCP_RESULTSW,
+    dwFlags: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharacterPlacementW".}
+
+  proc GetGlyphIndices*(
+    hdc: HDC, lpstr: LPCWSTR, c: int32, pgi: LPWORD, fl: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetGlyphIndicesW".}
+
+  proc AddFontResourceEx*(
+    name: LPCWSTR, fl: DWORD, res: PVOID
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "AddFontResourceExW".}
+
+  proc RemoveFontResourceEx*(
+    name: LPCWSTR, fl: DWORD, pdv: PVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "RemoveFontResourceExW".}
+
+  proc CreateFontIndirectEx*(
+    P1: ptr ENUMLOGFONTEXDVW
+  ): HFONT {.winapi, stdcall, dynlib: "gdi32", importc: "CreateFontIndirectExW".}
+
+  proc ResetDC*(
+    hdc: HDC, lpdm: ptr DEVMODEW
+  ): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "ResetDCW".}
+
+  proc RemoveFontResource*(
+    lpFileName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "RemoveFontResourceW".}
+
+  proc CopyEnhMetaFile*(
+    hEnh: HENHMETAFILE, lpFileName: LPCWSTR
+  ): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "CopyEnhMetaFileW".}
+
+  proc CreateEnhMetaFile*(
+    hdc: HDC, lpFilename: LPCWSTR, lprc: ptr RECT, lpDesc: LPCWSTR
+  ): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateEnhMetaFileW".}
+
+  proc GetEnhMetaFile*(
+    lpName: LPCWSTR
+  ): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileW".}
+
+  proc GetEnhMetaFileDescription*(
+    hemf: HENHMETAFILE, cchBuffer: UINT, lpDescription: LPWSTR
+  ): UINT {.winapi, stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileDescriptionW".}
+
+  proc GetTextMetrics*(
+    hdc: HDC, lptm: LPTEXTMETRICW
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextMetricsW".}
+
+  proc StartDoc*(
+    hdc: HDC, lpdi: ptr DOCINFOW
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "StartDocW".}
+
+  proc GetObject*(
+    h: HANDLE, c: int32, pv: LPVOID
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "GetObjectW".}
+
+  proc TextOut*(
+    hdc: HDC, x: int32, y: int32, lpString: LPCWSTR, c: int32
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "TextOutW".}
+
+  proc ExtTextOut*(
+    hdc: HDC,
+    x: int32,
+    y: int32,
+    options: UINT,
+    lprect: ptr RECT,
+    lpString: LPCWSTR,
+    c: UINT,
+    lpDx: ptr INT,
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "ExtTextOutW".}
+
+  proc PolyTextOut*(
+    hdc: HDC, ppt: ptr POLYTEXTW, nstrings: int32
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "PolyTextOutW".}
+
+  proc GetTextFace*(
+    hdc: HDC, c: int32, lpName: LPWSTR
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextFaceW".}
+
+  proc GetKerningPairs*(
+    hdc: HDC, nPairs: DWORD, lpKernPair: LPKERNINGPAIR
+  ): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetKerningPairsW".}
+
+  proc EnumICMProfiles*(
+    hdc: HDC, lpProc: ICMENUMPROCW, lParam: LPARAM
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumICMProfilesW".}
+
+  proc UpdateICMRegKey*(
+    reserved: DWORD, lpszCMID: LPWSTR, lpszFileName: LPWSTR, command: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "UpdateICMRegKeyW".}
+
+  proc GetLogColorSpace*(
+    hColorSpace: HCOLORSPACE, lpBuffer: LPLOGCOLORSPACEW, nSize: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetLogColorSpaceW".}
+
+  proc CreateColorSpace*(
+    lplcs: LPLOGCOLORSPACEW
+  ): HCOLORSPACE {.winapi, stdcall, dynlib: "gdi32", importc: "CreateColorSpaceW".}
+
+  proc GetICMProfile*(
+    hdc: HDC, pBufSize: LPDWORD, pszFilename: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetICMProfileW".}
+
+  proc SetICMProfile*(
+    hdc: HDC, lpFileName: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "SetICMProfileW".}
+
+  proc wglUseFontBitmaps*(
+    P1: HDC, P2: DWORD, P3: DWORD, P4: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc: "wglUseFontBitmapsW".}
+
+  proc wglUseFontOutlines*(
+    P1: HDC,
+    P2: DWORD,
+    P3: DWORD,
+    P4: DWORD,
+    P5: FLOAT,
+    P6: FLOAT,
+    P7: int32,
+    P8: LPGLYPHMETRICSFLOAT,
+  ): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc: "wglUseFontOutlinesW".}
+
 when winimAnsi:
   type
     LOGCOLORSPACE* = LOGCOLORSPACEA
@@ -3914,53 +5816,257 @@
     DOCINFO* = DOCINFOA
     LPDOCINFO* = LPDOCINFOA
     ICMENUMPROC* = ICMENUMPROCA
-  proc AddFontResource*(P1: LPCSTR): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "AddFontResourceA".}
-  proc CopyMetaFile*(P1: HMETAFILE, P2: LPCSTR): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "CopyMetaFileA".}
-  proc CreateDC*(pwszDriver: LPCSTR, pwszDevice: LPCSTR, pszPort: LPCSTR, pdm: ptr DEVMODEA): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateDCA".}
-  proc CreateFontIndirect*(lplf: ptr LOGFONTA): HFONT {.winapi, stdcall, dynlib: "gdi32", importc: "CreateFontIndirectA".}
-  proc CreateFont*(cHeight: int32, cWidth: int32, cEscapement: int32, cOrientation: int32, cWeight: int32, bItalic: DWORD, bUnderline: DWORD, bStrikeOut: DWORD, iCharSet: DWORD, iOutPrecision: DWORD, iClipPrecision: DWORD, iQuality: DWORD, iPitchAndFamily: DWORD, pszFaceName: LPCSTR): HFONT {.winapi, stdcall, dynlib: "gdi32", importc: "CreateFontA".}
-  proc CreateIC*(pszDriver: LPCSTR, pszDevice: LPCSTR, pszPort: LPCSTR, pdm: ptr DEVMODEA): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateICA".}
-  proc CreateMetaFile*(pszFile: LPCSTR): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateMetaFileA".}
-  proc CreateScalableFontResource*(fdwHidden: DWORD, lpszFont: LPCSTR, lpszFile: LPCSTR, lpszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "CreateScalableFontResourceA".}
-  proc DeviceCapabilities*(pDevice: LPCSTR, pPort: LPCSTR, fwCapability: WORD, pOutput: LPSTR, pDevMode: ptr DEVMODEA): int32 {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeviceCapabilitiesA".}
-  proc EnumFontFamiliesEx*(hdc: HDC, lpLogfont: LPLOGFONTA, lpProc: FONTENUMPROCA, lParam: LPARAM, dwFlags: DWORD): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumFontFamiliesExA".}
-  proc EnumFontFamilies*(hdc: HDC, lpLogfont: LPCSTR, lpProc: FONTENUMPROCA, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumFontFamiliesA".}
-  proc EnumFonts*(hdc: HDC, lpLogfont: LPCSTR, lpProc: FONTENUMPROCA, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumFontsA".}
-  proc GetCharWidth*(hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharWidthA".}
-  proc GetCharWidth32*(hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharWidth32A".}
-  proc GetCharWidthFloat*(hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: PFLOAT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatA".}
-  proc GetCharABCWidths*(hdc: HDC, wFirst: UINT, wLast: UINT, lpABC: LPABC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsA".}
-  proc GetCharABCWidthsFloat*(hdc: HDC, iFirst: UINT, iLast: UINT, lpABC: LPABCFLOAT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsFloatA".}
-  proc GetGlyphOutline*(hdc: HDC, uChar: UINT, fuFormat: UINT, lpgm: LPGLYPHMETRICS, cjBuffer: DWORD, pvBuffer: LPVOID, lpmat2: ptr MAT2): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetGlyphOutlineA".}
-  proc GetMetaFile*(lpName: LPCSTR): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "GetMetaFileA".}
-  proc GetOutlineTextMetrics*(hdc: HDC, cjCopy: UINT, potm: LPOUTLINETEXTMETRICA): UINT {.winapi, stdcall, dynlib: "gdi32", importc: "GetOutlineTextMetricsA".}
-  proc GetTextExtentPoint*(hdc: HDC, lpString: LPCSTR, c: int32, lpsz: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextExtentPointA".}
-  proc GetTextExtentPoint32*(hdc: HDC, lpString: LPCSTR, c: int32, psizl: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextExtentPoint32A".}
-  proc GetTextExtentExPoint*(hdc: HDC, lpszString: LPCSTR, cchString: int32, nMaxExtent: int32, lpnFit: LPINT, lpnDx: LPINT, lpSize: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextExtentExPointA".}
-  proc GetCharacterPlacement*(hdc: HDC, lpString: LPCSTR, nCount: int32, nMexExtent: int32, lpResults: LPGCP_RESULTSA, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharacterPlacementA".}
-  proc GetGlyphIndices*(hdc: HDC, lpstr: LPCSTR, c: int32, pgi: LPWORD, fl: DWORD): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetGlyphIndicesA".}
-  proc AddFontResourceEx*(name: LPCSTR, fl: DWORD, res: PVOID): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "AddFontResourceExA".}
-  proc RemoveFontResourceEx*(name: LPCSTR, fl: DWORD, pdv: PVOID): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "RemoveFontResourceExA".}
-  proc CreateFontIndirectEx*(P1: ptr ENUMLOGFONTEXDVA): HFONT {.winapi, stdcall, dynlib: "gdi32", importc: "CreateFontIndirectExA".}
-  proc ResetDC*(hdc: HDC, lpdm: ptr DEVMODEA): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "ResetDCA".}
-  proc RemoveFontResource*(lpFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "RemoveFontResourceA".}
-  proc CopyEnhMetaFile*(hEnh: HENHMETAFILE, lpFileName: LPCSTR): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "CopyEnhMetaFileA".}
-  proc CreateEnhMetaFile*(hdc: HDC, lpFilename: LPCSTR, lprc: ptr RECT, lpDesc: LPCSTR): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateEnhMetaFileA".}
-  proc GetEnhMetaFile*(lpName: LPCSTR): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileA".}
-  proc GetEnhMetaFileDescription*(hemf: HENHMETAFILE, cchBuffer: UINT, lpDescription: LPSTR): UINT {.winapi, stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileDescriptionA".}
-  proc GetTextMetrics*(hdc: HDC, lptm: LPTEXTMETRICA): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextMetricsA".}
-  proc StartDoc*(hdc: HDC, lpdi: ptr DOCINFOA): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "StartDocA".}
-  proc GetObject*(h: HANDLE, c: int32, pv: LPVOID): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "GetObjectA".}
-  proc TextOut*(hdc: HDC, x: int32, y: int32, lpString: LPCSTR, c: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "TextOutA".}
-  proc ExtTextOut*(hdc: HDC, x: int32, y: int32, options: UINT, lprect: ptr RECT, lpString: LPCSTR, c: UINT, lpDx: ptr INT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "ExtTextOutA".}
-  proc PolyTextOut*(hdc: HDC, ppt: ptr POLYTEXTA, nstrings: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "PolyTextOutA".}
-  proc GetTextFace*(hdc: HDC, c: int32, lpName: LPSTR): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextFaceA".}
-  proc GetKerningPairs*(hdc: HDC, nPairs: DWORD, lpKernPair: LPKERNINGPAIR): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetKerningPairsA".}
-  proc EnumICMProfiles*(hdc: HDC, lpProc: ICMENUMPROCA, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumICMProfilesA".}
-  proc UpdateICMRegKey*(reserved: DWORD, lpszCMID: LPSTR, lpszFileName: LPSTR, command: UINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "UpdateICMRegKeyA".}
-  proc GetLogColorSpace*(hColorSpace: HCOLORSPACE, lpBuffer: LPLOGCOLORSPACEA, nSize: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetLogColorSpaceA".}
-  proc CreateColorSpace*(lplcs: LPLOGCOLORSPACEA): HCOLORSPACE {.winapi, stdcall, dynlib: "gdi32", importc: "CreateColorSpaceA".}
-  proc GetICMProfile*(hdc: HDC, pBufSize: LPDWORD, pszFilename: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetICMProfileA".}
-  proc SetICMProfile*(hdc: HDC, lpFileName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "SetICMProfileA".}
-  proc wglUseFontBitmaps*(P1: HDC, P2: DWORD, P3: DWORD, P4: DWORD): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc: "wglUseFontBitmapsA".}
-  proc wglUseFontOutlines*(P1: HDC, P2: DWORD, P3: DWORD, P4: DWORD, P5: FLOAT, P6: FLOAT, P7: int32, P8: LPGLYPHMETRICSFLOAT): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc: "wglUseFontOutlinesA".}
+
+  proc AddFontResource*(
+    P1: LPCSTR
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "AddFontResourceA".}
+
+  proc CopyMetaFile*(
+    P1: HMETAFILE, P2: LPCSTR
+  ): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "CopyMetaFileA".}
+
+  proc CreateDC*(
+    pwszDriver: LPCSTR, pwszDevice: LPCSTR, pszPort: LPCSTR, pdm: ptr DEVMODEA
+  ): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateDCA".}
+
+  proc CreateFontIndirect*(
+    lplf: ptr LOGFONTA
+  ): HFONT {.winapi, stdcall, dynlib: "gdi32", importc: "CreateFontIndirectA".}
+
+  proc CreateFont*(
+    cHeight: int32,
+    cWidth: int32,
+    cEscapement: int32,
+    cOrientation: int32,
+    cWeight: int32,
+    bItalic: DWORD,
+    bUnderline: DWORD,
+    bStrikeOut: DWORD,
+    iCharSet: DWORD,
+    iOutPrecision: DWORD,
+    iClipPrecision: DWORD,
+    iQuality: DWORD,
+    iPitchAndFamily: DWORD,
+    pszFaceName: LPCSTR,
+  ): HFONT {.winapi, stdcall, dynlib: "gdi32", importc: "CreateFontA".}
+
+  proc CreateIC*(
+    pszDriver: LPCSTR, pszDevice: LPCSTR, pszPort: LPCSTR, pdm: ptr DEVMODEA
+  ): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateICA".}
+
+  proc CreateMetaFile*(
+    pszFile: LPCSTR
+  ): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateMetaFileA".}
+
+  proc CreateScalableFontResource*(
+    fdwHidden: DWORD, lpszFont: LPCSTR, lpszFile: LPCSTR, lpszPath: LPCSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "gdi32", importc: "CreateScalableFontResourceA"
+  .}
+
+  proc DeviceCapabilities*(
+    pDevice: LPCSTR,
+    pPort: LPCSTR,
+    fwCapability: WORD,
+    pOutput: LPSTR,
+    pDevMode: ptr DEVMODEA,
+  ): int32 {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeviceCapabilitiesA".}
+
+  proc EnumFontFamiliesEx*(
+    hdc: HDC,
+    lpLogfont: LPLOGFONTA,
+    lpProc: FONTENUMPROCA,
+    lParam: LPARAM,
+    dwFlags: DWORD,
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumFontFamiliesExA".}
+
+  proc EnumFontFamilies*(
+    hdc: HDC, lpLogfont: LPCSTR, lpProc: FONTENUMPROCA, lParam: LPARAM
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumFontFamiliesA".}
+
+  proc EnumFonts*(
+    hdc: HDC, lpLogfont: LPCSTR, lpProc: FONTENUMPROCA, lParam: LPARAM
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumFontsA".}
+
+  proc GetCharWidth*(
+    hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharWidthA".}
+
+  proc GetCharWidth32*(
+    hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharWidth32A".}
+
+  proc GetCharWidthFloat*(
+    hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: PFLOAT
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatA".}
+
+  proc GetCharABCWidths*(
+    hdc: HDC, wFirst: UINT, wLast: UINT, lpABC: LPABC
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsA".}
+
+  proc GetCharABCWidthsFloat*(
+    hdc: HDC, iFirst: UINT, iLast: UINT, lpABC: LPABCFLOAT
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsFloatA".}
+
+  proc GetGlyphOutline*(
+    hdc: HDC,
+    uChar: UINT,
+    fuFormat: UINT,
+    lpgm: LPGLYPHMETRICS,
+    cjBuffer: DWORD,
+    pvBuffer: LPVOID,
+    lpmat2: ptr MAT2,
+  ): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetGlyphOutlineA".}
+
+  proc GetMetaFile*(
+    lpName: LPCSTR
+  ): HMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "GetMetaFileA".}
+
+  proc GetOutlineTextMetrics*(
+    hdc: HDC, cjCopy: UINT, potm: LPOUTLINETEXTMETRICA
+  ): UINT {.winapi, stdcall, dynlib: "gdi32", importc: "GetOutlineTextMetricsA".}
+
+  proc GetTextExtentPoint*(
+    hdc: HDC, lpString: LPCSTR, c: int32, lpsz: LPSIZE
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextExtentPointA".}
+
+  proc GetTextExtentPoint32*(
+    hdc: HDC, lpString: LPCSTR, c: int32, psizl: LPSIZE
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextExtentPoint32A".}
+
+  proc GetTextExtentExPoint*(
+    hdc: HDC,
+    lpszString: LPCSTR,
+    cchString: int32,
+    nMaxExtent: int32,
+    lpnFit: LPINT,
+    lpnDx: LPINT,
+    lpSize: LPSIZE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextExtentExPointA".}
+
+  proc GetCharacterPlacement*(
+    hdc: HDC,
+    lpString: LPCSTR,
+    nCount: int32,
+    nMexExtent: int32,
+    lpResults: LPGCP_RESULTSA,
+    dwFlags: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharacterPlacementA".}
+
+  proc GetGlyphIndices*(
+    hdc: HDC, lpstr: LPCSTR, c: int32, pgi: LPWORD, fl: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetGlyphIndicesA".}
+
+  proc AddFontResourceEx*(
+    name: LPCSTR, fl: DWORD, res: PVOID
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "AddFontResourceExA".}
+
+  proc RemoveFontResourceEx*(
+    name: LPCSTR, fl: DWORD, pdv: PVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "RemoveFontResourceExA".}
+
+  proc CreateFontIndirectEx*(
+    P1: ptr ENUMLOGFONTEXDVA
+  ): HFONT {.winapi, stdcall, dynlib: "gdi32", importc: "CreateFontIndirectExA".}
+
+  proc ResetDC*(
+    hdc: HDC, lpdm: ptr DEVMODEA
+  ): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "ResetDCA".}
+
+  proc RemoveFontResource*(
+    lpFileName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "RemoveFontResourceA".}
+
+  proc CopyEnhMetaFile*(
+    hEnh: HENHMETAFILE, lpFileName: LPCSTR
+  ): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "CopyEnhMetaFileA".}
+
+  proc CreateEnhMetaFile*(
+    hdc: HDC, lpFilename: LPCSTR, lprc: ptr RECT, lpDesc: LPCSTR
+  ): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateEnhMetaFileA".}
+
+  proc GetEnhMetaFile*(
+    lpName: LPCSTR
+  ): HENHMETAFILE {.winapi, stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileA".}
+
+  proc GetEnhMetaFileDescription*(
+    hemf: HENHMETAFILE, cchBuffer: UINT, lpDescription: LPSTR
+  ): UINT {.winapi, stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileDescriptionA".}
+
+  proc GetTextMetrics*(
+    hdc: HDC, lptm: LPTEXTMETRICA
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextMetricsA".}
+
+  proc StartDoc*(
+    hdc: HDC, lpdi: ptr DOCINFOA
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "StartDocA".}
+
+  proc GetObject*(
+    h: HANDLE, c: int32, pv: LPVOID
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "GetObjectA".}
+
+  proc TextOut*(
+    hdc: HDC, x: int32, y: int32, lpString: LPCSTR, c: int32
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "TextOutA".}
+
+  proc ExtTextOut*(
+    hdc: HDC,
+    x: int32,
+    y: int32,
+    options: UINT,
+    lprect: ptr RECT,
+    lpString: LPCSTR,
+    c: UINT,
+    lpDx: ptr INT,
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "ExtTextOutA".}
+
+  proc PolyTextOut*(
+    hdc: HDC, ppt: ptr POLYTEXTA, nstrings: int32
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "PolyTextOutA".}
+
+  proc GetTextFace*(
+    hdc: HDC, c: int32, lpName: LPSTR
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextFaceA".}
+
+  proc GetKerningPairs*(
+    hdc: HDC, nPairs: DWORD, lpKernPair: LPKERNINGPAIR
+  ): DWORD {.winapi, stdcall, dynlib: "gdi32", importc: "GetKerningPairsA".}
+
+  proc EnumICMProfiles*(
+    hdc: HDC, lpProc: ICMENUMPROCA, lParam: LPARAM
+  ): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "EnumICMProfilesA".}
+
+  proc UpdateICMRegKey*(
+    reserved: DWORD, lpszCMID: LPSTR, lpszFileName: LPSTR, command: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "UpdateICMRegKeyA".}
+
+  proc GetLogColorSpace*(
+    hColorSpace: HCOLORSPACE, lpBuffer: LPLOGCOLORSPACEA, nSize: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetLogColorSpaceA".}
+
+  proc CreateColorSpace*(
+    lplcs: LPLOGCOLORSPACEA
+  ): HCOLORSPACE {.winapi, stdcall, dynlib: "gdi32", importc: "CreateColorSpaceA".}
+
+  proc GetICMProfile*(
+    hdc: HDC, pBufSize: LPDWORD, pszFilename: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetICMProfileA".}
+
+  proc SetICMProfile*(
+    hdc: HDC, lpFileName: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "SetICMProfileA".}
+
+  proc wglUseFontBitmaps*(
+    P1: HDC, P2: DWORD, P3: DWORD, P4: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc: "wglUseFontBitmapsA".}
+
+  proc wglUseFontOutlines*(
+    P1: HDC,
+    P2: DWORD,
+    P3: DWORD,
+    P4: DWORD,
+    P5: FLOAT,
+    P6: FLOAT,
+    P7: int32,
+    P8: LPGLYPHMETRICSFLOAT,
+  ): WINBOOL {.winapi, stdcall, dynlib: "opengl32", importc: "wglUseFontOutlinesA".}
--- a/semicongine/thirdparty/winim/winim/inc/winhttp.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winhttp.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -32,24 +32,29 @@
     dwUrlPathLength*: DWORD
     lpszExtraInfo*: LPWSTR
     dwExtraInfoLength*: DWORD
+
   LPURL_COMPONENTS* = ptr URL_COMPONENTS
   URL_COMPONENTSW* = URL_COMPONENTS
   LPURL_COMPONENTSW* = LPURL_COMPONENTS
   WINHTTP_ASYNC_RESULT* {.pure.} = object
     dwResult*: DWORD_PTR
     dwError*: DWORD
+
   LPWINHTTP_ASYNC_RESULT* = ptr WINHTTP_ASYNC_RESULT
   WINHTTP_PROXY_INFO* {.pure.} = object
     dwAccessType*: DWORD
     lpszProxy*: LPWSTR
     lpszProxyBypass*: LPWSTR
+
   LPWINHTTP_PROXY_INFO* = ptr WINHTTP_PROXY_INFO
   WINHTTP_PROXY_INFOW* = WINHTTP_PROXY_INFO
   LPWINHTTP_PROXY_INFOW* = LPWINHTTP_PROXY_INFO
   HTTP_VERSION_INFO* {.pure.} = object
     dwMajorVersion*: DWORD
     dwMinorVersion*: DWORD
+
   LPHTTP_VERSION_INFO* = ptr HTTP_VERSION_INFO
+
 const
   INTERNET_DEFAULT_PORT* = 0
   INTERNET_DEFAULT_HTTP_PORT* = 80
@@ -151,7 +156,8 @@
   WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP* = 1
   WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS* = 2
   WINHTTP_OPTION_REDIRECT_POLICY_LAST* = WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS
-  WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT* = WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP
+  WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT* =
+    WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP
   WINHTTP_DISABLE_PASSPORT_AUTH* = 0x00000000
   WINHTTP_ENABLE_PASSPORT_AUTH* = 0x10000000
   WINHTTP_DISABLE_PASSPORT_KEYRING* = 0x20000000
@@ -166,54 +172,54 @@
   WINHTTP_ENABLE_SPN_SERVER_PORT* = 0x00000001
   WINHTTP_OPTION_SPN_MASK* = WINHTTP_ENABLE_SPN_SERVER_PORT
   WINHTTP_ERROR_BASE* = 12000
-  ERROR_WINHTTP_OUT_OF_HANDLES* = WINHTTP_ERROR_BASE+1
-  ERROR_WINHTTP_TIMEOUT* = WINHTTP_ERROR_BASE+2
-  ERROR_WINHTTP_INTERNAL_ERROR* = WINHTTP_ERROR_BASE+4
-  ERROR_WINHTTP_INVALID_URL* = WINHTTP_ERROR_BASE+5
-  ERROR_WINHTTP_UNRECOGNIZED_SCHEME* = WINHTTP_ERROR_BASE+6
-  ERROR_WINHTTP_NAME_NOT_RESOLVED* = WINHTTP_ERROR_BASE+7
-  ERROR_WINHTTP_INVALID_OPTION* = WINHTTP_ERROR_BASE+9
-  ERROR_WINHTTP_OPTION_NOT_SETTABLE* = WINHTTP_ERROR_BASE+11
-  ERROR_WINHTTP_SHUTDOWN* = WINHTTP_ERROR_BASE+12
-  ERROR_WINHTTP_LOGIN_FAILURE* = WINHTTP_ERROR_BASE+15
-  ERROR_WINHTTP_OPERATION_CANCELLED* = WINHTTP_ERROR_BASE+17
-  ERROR_WINHTTP_INCORRECT_HANDLE_TYPE* = WINHTTP_ERROR_BASE+18
-  ERROR_WINHTTP_INCORRECT_HANDLE_STATE* = WINHTTP_ERROR_BASE+19
-  ERROR_WINHTTP_CANNOT_CONNECT* = WINHTTP_ERROR_BASE+29
-  ERROR_WINHTTP_CONNECTION_ERROR* = WINHTTP_ERROR_BASE+30
-  ERROR_WINHTTP_RESEND_REQUEST* = WINHTTP_ERROR_BASE+32
-  ERROR_WINHTTP_SECURE_CERT_DATE_INVALID* = WINHTTP_ERROR_BASE+37
-  ERROR_WINHTTP_SECURE_CERT_CN_INVALID* = WINHTTP_ERROR_BASE+38
-  ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED* = WINHTTP_ERROR_BASE+44
-  ERROR_WINHTTP_SECURE_INVALID_CA* = WINHTTP_ERROR_BASE+45
-  ERROR_WINHTTP_SECURE_CERT_REV_FAILED* = WINHTTP_ERROR_BASE+57
-  ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN* = WINHTTP_ERROR_BASE+100
-  ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND* = WINHTTP_ERROR_BASE+101
-  ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND* = WINHTTP_ERROR_BASE+102
-  ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN* = WINHTTP_ERROR_BASE+103
-  ERROR_WINHTTP_HEADER_NOT_FOUND* = WINHTTP_ERROR_BASE+150
-  ERROR_WINHTTP_INVALID_SERVER_RESPONSE* = WINHTTP_ERROR_BASE+152
-  ERROR_WINHTTP_INVALID_HEADER* = WINHTTP_ERROR_BASE+153
-  ERROR_WINHTTP_INVALID_QUERY_REQUEST* = WINHTTP_ERROR_BASE+154
-  ERROR_WINHTTP_HEADER_ALREADY_EXISTS* = WINHTTP_ERROR_BASE+155
-  ERROR_WINHTTP_REDIRECT_FAILED* = WINHTTP_ERROR_BASE+156
-  ERROR_WINHTTP_SECURE_CHANNEL_ERROR* = WINHTTP_ERROR_BASE+157
-  ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT* = WINHTTP_ERROR_BASE+166
-  ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT* = WINHTTP_ERROR_BASE+167
-  ERROR_WINHTTP_SECURE_INVALID_CERT* = WINHTTP_ERROR_BASE+169
-  ERROR_WINHTTP_SECURE_CERT_REVOKED* = WINHTTP_ERROR_BASE+170
-  ERROR_WINHTTP_NOT_INITIALIZED* = WINHTTP_ERROR_BASE+172
-  ERROR_WINHTTP_SECURE_FAILURE* = WINHTTP_ERROR_BASE+175
-  ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR* = WINHTTP_ERROR_BASE+178
-  ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE* = WINHTTP_ERROR_BASE+179
-  ERROR_WINHTTP_AUTODETECTION_FAILED* = WINHTTP_ERROR_BASE+180
-  ERROR_WINHTTP_HEADER_COUNT_EXCEEDED* = WINHTTP_ERROR_BASE+181
-  ERROR_WINHTTP_HEADER_SIZE_OVERFLOW* = WINHTTP_ERROR_BASE+182
-  ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW* = WINHTTP_ERROR_BASE+183
-  ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW* = WINHTTP_ERROR_BASE+184
-  ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY* = WINHTTP_ERROR_BASE+185
-  ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY* = WINHTTP_ERROR_BASE+186
-  WINHTTP_ERROR_LAST* = WINHTTP_ERROR_BASE+186
+  ERROR_WINHTTP_OUT_OF_HANDLES* = WINHTTP_ERROR_BASE + 1
+  ERROR_WINHTTP_TIMEOUT* = WINHTTP_ERROR_BASE + 2
+  ERROR_WINHTTP_INTERNAL_ERROR* = WINHTTP_ERROR_BASE + 4
+  ERROR_WINHTTP_INVALID_URL* = WINHTTP_ERROR_BASE + 5
+  ERROR_WINHTTP_UNRECOGNIZED_SCHEME* = WINHTTP_ERROR_BASE + 6
+  ERROR_WINHTTP_NAME_NOT_RESOLVED* = WINHTTP_ERROR_BASE + 7
+  ERROR_WINHTTP_INVALID_OPTION* = WINHTTP_ERROR_BASE + 9
+  ERROR_WINHTTP_OPTION_NOT_SETTABLE* = WINHTTP_ERROR_BASE + 11
+  ERROR_WINHTTP_SHUTDOWN* = WINHTTP_ERROR_BASE + 12
+  ERROR_WINHTTP_LOGIN_FAILURE* = WINHTTP_ERROR_BASE + 15
+  ERROR_WINHTTP_OPERATION_CANCELLED* = WINHTTP_ERROR_BASE + 17
+  ERROR_WINHTTP_INCORRECT_HANDLE_TYPE* = WINHTTP_ERROR_BASE + 18
+  ERROR_WINHTTP_INCORRECT_HANDLE_STATE* = WINHTTP_ERROR_BASE + 19
+  ERROR_WINHTTP_CANNOT_CONNECT* = WINHTTP_ERROR_BASE + 29
+  ERROR_WINHTTP_CONNECTION_ERROR* = WINHTTP_ERROR_BASE + 30
+  ERROR_WINHTTP_RESEND_REQUEST* = WINHTTP_ERROR_BASE + 32
+  ERROR_WINHTTP_SECURE_CERT_DATE_INVALID* = WINHTTP_ERROR_BASE + 37
+  ERROR_WINHTTP_SECURE_CERT_CN_INVALID* = WINHTTP_ERROR_BASE + 38
+  ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED* = WINHTTP_ERROR_BASE + 44
+  ERROR_WINHTTP_SECURE_INVALID_CA* = WINHTTP_ERROR_BASE + 45
+  ERROR_WINHTTP_SECURE_CERT_REV_FAILED* = WINHTTP_ERROR_BASE + 57
+  ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN* = WINHTTP_ERROR_BASE + 100
+  ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND* = WINHTTP_ERROR_BASE + 101
+  ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND* = WINHTTP_ERROR_BASE + 102
+  ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN* = WINHTTP_ERROR_BASE + 103
+  ERROR_WINHTTP_HEADER_NOT_FOUND* = WINHTTP_ERROR_BASE + 150
+  ERROR_WINHTTP_INVALID_SERVER_RESPONSE* = WINHTTP_ERROR_BASE + 152
+  ERROR_WINHTTP_INVALID_HEADER* = WINHTTP_ERROR_BASE + 153
+  ERROR_WINHTTP_INVALID_QUERY_REQUEST* = WINHTTP_ERROR_BASE + 154
+  ERROR_WINHTTP_HEADER_ALREADY_EXISTS* = WINHTTP_ERROR_BASE + 155
+  ERROR_WINHTTP_REDIRECT_FAILED* = WINHTTP_ERROR_BASE + 156
+  ERROR_WINHTTP_SECURE_CHANNEL_ERROR* = WINHTTP_ERROR_BASE + 157
+  ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT* = WINHTTP_ERROR_BASE + 166
+  ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT* = WINHTTP_ERROR_BASE + 167
+  ERROR_WINHTTP_SECURE_INVALID_CERT* = WINHTTP_ERROR_BASE + 169
+  ERROR_WINHTTP_SECURE_CERT_REVOKED* = WINHTTP_ERROR_BASE + 170
+  ERROR_WINHTTP_NOT_INITIALIZED* = WINHTTP_ERROR_BASE + 172
+  ERROR_WINHTTP_SECURE_FAILURE* = WINHTTP_ERROR_BASE + 175
+  ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR* = WINHTTP_ERROR_BASE + 178
+  ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE* = WINHTTP_ERROR_BASE + 179
+  ERROR_WINHTTP_AUTODETECTION_FAILED* = WINHTTP_ERROR_BASE + 180
+  ERROR_WINHTTP_HEADER_COUNT_EXCEEDED* = WINHTTP_ERROR_BASE + 181
+  ERROR_WINHTTP_HEADER_SIZE_OVERFLOW* = WINHTTP_ERROR_BASE + 182
+  ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW* = WINHTTP_ERROR_BASE + 183
+  ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW* = WINHTTP_ERROR_BASE + 184
+  ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY* = WINHTTP_ERROR_BASE + 185
+  ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY* = WINHTTP_ERROR_BASE + 186
+  WINHTTP_ERROR_LAST* = WINHTTP_ERROR_BASE + 186
   HTTP_STATUS_CONTINUE* = 100
   HTTP_STATUS_SWITCH_PROTOCOLS* = 101
   HTTP_STATUS_OK* = 200
@@ -372,23 +378,38 @@
   WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE* = 0x00100000
   WINHTTP_CALLBACK_STATUS_REQUEST_ERROR* = 0x00200000
   WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE* = 0x00400000
-  WINHTTP_CALLBACK_FLAG_RESOLVE_NAME* = WINHTTP_CALLBACK_STATUS_RESOLVING_NAME or WINHTTP_CALLBACK_STATUS_NAME_RESOLVED
-  WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER* = WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER or WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER
-  WINHTTP_CALLBACK_FLAG_SEND_REQUEST* = WINHTTP_CALLBACK_STATUS_SENDING_REQUEST or WINHTTP_CALLBACK_STATUS_REQUEST_SENT
-  WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE* = WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE or WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED
-  WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION* = WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION or WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED
-  WINHTTP_CALLBACK_FLAG_HANDLES* = WINHTTP_CALLBACK_STATUS_HANDLE_CREATED or WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING
+  WINHTTP_CALLBACK_FLAG_RESOLVE_NAME* =
+    WINHTTP_CALLBACK_STATUS_RESOLVING_NAME or WINHTTP_CALLBACK_STATUS_NAME_RESOLVED
+  WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER* =
+    WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER or
+    WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER
+  WINHTTP_CALLBACK_FLAG_SEND_REQUEST* =
+    WINHTTP_CALLBACK_STATUS_SENDING_REQUEST or WINHTTP_CALLBACK_STATUS_REQUEST_SENT
+  WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE* =
+    WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE or
+    WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED
+  WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION* =
+    WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION or
+    WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED
+  WINHTTP_CALLBACK_FLAG_HANDLES* =
+    WINHTTP_CALLBACK_STATUS_HANDLE_CREATED or WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING
   WINHTTP_CALLBACK_FLAG_DETECTING_PROXY* = WINHTTP_CALLBACK_STATUS_DETECTING_PROXY
   WINHTTP_CALLBACK_FLAG_REDIRECT* = WINHTTP_CALLBACK_STATUS_REDIRECT
-  WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE* = WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE
+  WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE* =
+    WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE
   WINHTTP_CALLBACK_FLAG_SECURE_FAILURE* = WINHTTP_CALLBACK_STATUS_SECURE_FAILURE
-  WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE* = WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE
+  WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE* =
+    WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE
   WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE* = WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE
   WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE* = WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE
   WINHTTP_CALLBACK_FLAG_READ_COMPLETE* = WINHTTP_CALLBACK_STATUS_READ_COMPLETE
   WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE* = WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE
   WINHTTP_CALLBACK_FLAG_REQUEST_ERROR* = WINHTTP_CALLBACK_STATUS_REQUEST_ERROR
-  WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS* = WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE or WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE or WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE or WINHTTP_CALLBACK_STATUS_READ_COMPLETE or WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE or WINHTTP_CALLBACK_STATUS_REQUEST_ERROR
+  WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS* =
+    WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE or
+    WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE or WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE or
+    WINHTTP_CALLBACK_STATUS_READ_COMPLETE or WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE or
+    WINHTTP_CALLBACK_STATUS_REQUEST_ERROR
   WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS* = 0xffffffff'i32
   API_RECEIVE_RESPONSE* = 1
   API_QUERY_DATA_AVAILABLE* = 2
@@ -409,7 +430,9 @@
   WINHTTP_FLAG_SECURE_PROTOCOL_SSL2* = 0x00000008
   WINHTTP_FLAG_SECURE_PROTOCOL_SSL3* = 0x00000020
   WINHTTP_FLAG_SECURE_PROTOCOL_TLS1* = 0x00000080
-  WINHTTP_FLAG_SECURE_PROTOCOL_ALL* = WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 or WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 or WINHTTP_FLAG_SECURE_PROTOCOL_TLS1
+  WINHTTP_FLAG_SECURE_PROTOCOL_ALL* =
+    WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 or WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 or
+    WINHTTP_FLAG_SECURE_PROTOCOL_TLS1
   WINHTTP_AUTH_SCHEME_BASIC* = 0x00000001
   WINHTTP_AUTH_SCHEME_NTLM* = 0x00000002
   WINHTTP_AUTH_SCHEME_PASSPORT* = 0x00000004
@@ -424,10 +447,10 @@
   WINHTTP_AUTOPROXY_CONFIG_URL* = 0x00000002
   WINHTTP_AUTOPROXY_RUN_INPROCESS* = 0x00010000
   WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY* = 0x00020000
-type
-  WINHTTP_STATUS_CALLBACK* = proc (P1: HINTERNET, P2: DWORD_PTR, P3: DWORD, P4: LPVOID, P5: DWORD): VOID {.stdcall.}
-const
-  WINHTTP_INVALID_STATUS_CALLBACK* = cast[WINHTTP_STATUS_CALLBACK](-1)
+type WINHTTP_STATUS_CALLBACK* =
+  proc(P1: HINTERNET, P2: DWORD_PTR, P3: DWORD, P4: LPVOID, P5: DWORD): VOID {.stdcall.}
+
+const WINHTTP_INVALID_STATUS_CALLBACK* = cast[WINHTTP_STATUS_CALLBACK](-1)
 type
   WINHTTP_CERTIFICATE_INFO* {.pure.} = object
     ftExpiry*: FILETIME
@@ -438,11 +461,13 @@
     lpszSignatureAlgName*: LPWSTR
     lpszEncryptionAlgName*: LPWSTR
     dwKeySize*: DWORD
+
   WINHTTP_CURRENT_USER_IE_PROXY_CONFIG* {.pure.} = object
     fAutoDetect*: WINBOOL
     lpszAutoConfigUrl*: LPWSTR
     lpszProxy*: LPWSTR
     lpszProxyBypass*: LPWSTR
+
   WINHTTP_AUTOPROXY_OPTIONS* {.pure.} = object
     dwFlags*: DWORD
     dwAutoDetectFlags*: DWORD
@@ -450,42 +475,129 @@
     lpvReserved*: LPVOID
     dwReserved*: DWORD
     fAutoLogonIfChallenged*: WINBOOL
-proc WinHttpAddRequestHeaders*(P1: HINTERNET, P2: LPCWSTR, P3: DWORD, P4: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpDetectAutoProxyConfigUrl*(P1: DWORD, P2: ptr LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpAddRequestHeaders*(
+  P1: HINTERNET, P2: LPCWSTR, P3: DWORD, P4: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpDetectAutoProxyConfigUrl*(
+  P1: DWORD, P2: ptr LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
 proc WinHttpCheckPlatform*(): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpCloseHandle*(P1: HINTERNET): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpConnect*(P1: HINTERNET, P2: LPCWSTR, P3: INTERNET_PORT, P4: DWORD): HINTERNET {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpCrackUrl*(P1: LPCWSTR, P2: DWORD, P3: DWORD, P4: LPURL_COMPONENTS): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpCreateUrl*(P1: LPURL_COMPONENTS, P2: DWORD, P3: LPWSTR, P4: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpGetDefaultProxyConfiguration*(P1: ptr WINHTTP_PROXY_INFO): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpGetIEProxyConfigForCurrentUser*(P1: ptr WINHTTP_CURRENT_USER_IE_PROXY_CONFIG): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpGetProxyForUrl*(P1: HINTERNET, P2: LPCWSTR, P3: ptr WINHTTP_AUTOPROXY_OPTIONS, P4: ptr WINHTTP_PROXY_INFO): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpOpen*(P1: LPCWSTR, P2: DWORD, P3: LPCWSTR, P4: LPCWSTR, P5: DWORD): HINTERNET {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpOpenRequest*(P1: HINTERNET, P2: LPCWSTR, P3: LPCWSTR, P4: LPCWSTR, P5: LPCWSTR, P6: ptr LPCWSTR, P7: DWORD): HINTERNET {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpQueryAuthSchemes*(P1: HINTERNET, P2: LPDWORD, P3: LPDWORD, P4: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpQueryDataAvailable*(P1: HINTERNET, P2: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpQueryHeaders*(P1: HINTERNET, P2: DWORD, P3: LPCWSTR, P4: LPVOID, P5: LPDWORD, P6: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpQueryOption*(P1: HINTERNET, P2: DWORD, P3: LPVOID, P4: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpReadData*(P1: HINTERNET, P2: LPVOID, P3: DWORD, P4: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpReceiveResponse*(P1: HINTERNET, P2: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpSendRequest*(P1: HINTERNET, P2: LPCWSTR, P3: DWORD, P4: LPVOID, P5: DWORD, P6: DWORD, P7: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpSetDefaultProxyConfiguration*(P1: ptr WINHTTP_PROXY_INFO): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpSetCredentials*(P1: HINTERNET, P2: DWORD, P3: DWORD, P4: LPCWSTR, P5: LPCWSTR, P6: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpSetOption*(P1: HINTERNET, P2: DWORD, P3: LPVOID, P4: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpSetStatusCallback*(P1: HINTERNET, P2: WINHTTP_STATUS_CALLBACK, P3: DWORD, P4: DWORD_PTR): WINHTTP_STATUS_CALLBACK {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpSetTimeouts*(P1: HINTERNET, P2: int32, P3: int32, P4: int32, P5: int32): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpTimeFromSystemTime*(P1: ptr SYSTEMTIME, P2: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpTimeToSystemTime*(P1: LPCWSTR, P2: ptr SYSTEMTIME): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
-proc WinHttpWriteData*(P1: HINTERNET, P2: LPCVOID, P3: DWORD, P4: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+proc WinHttpCloseHandle*(
+  P1: HINTERNET
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpConnect*(
+  P1: HINTERNET, P2: LPCWSTR, P3: INTERNET_PORT, P4: DWORD
+): HINTERNET {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpCrackUrl*(
+  P1: LPCWSTR, P2: DWORD, P3: DWORD, P4: LPURL_COMPONENTS
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpCreateUrl*(
+  P1: LPURL_COMPONENTS, P2: DWORD, P3: LPWSTR, P4: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpGetDefaultProxyConfiguration*(
+  P1: ptr WINHTTP_PROXY_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpGetIEProxyConfigForCurrentUser*(
+  P1: ptr WINHTTP_CURRENT_USER_IE_PROXY_CONFIG
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpGetProxyForUrl*(
+  P1: HINTERNET,
+  P2: LPCWSTR,
+  P3: ptr WINHTTP_AUTOPROXY_OPTIONS,
+  P4: ptr WINHTTP_PROXY_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpOpen*(
+  P1: LPCWSTR, P2: DWORD, P3: LPCWSTR, P4: LPCWSTR, P5: DWORD
+): HINTERNET {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpOpenRequest*(
+  P1: HINTERNET,
+  P2: LPCWSTR,
+  P3: LPCWSTR,
+  P4: LPCWSTR,
+  P5: LPCWSTR,
+  P6: ptr LPCWSTR,
+  P7: DWORD,
+): HINTERNET {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpQueryAuthSchemes*(
+  P1: HINTERNET, P2: LPDWORD, P3: LPDWORD, P4: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpQueryDataAvailable*(
+  P1: HINTERNET, P2: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpQueryHeaders*(
+  P1: HINTERNET, P2: DWORD, P3: LPCWSTR, P4: LPVOID, P5: LPDWORD, P6: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpQueryOption*(
+  P1: HINTERNET, P2: DWORD, P3: LPVOID, P4: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpReadData*(
+  P1: HINTERNET, P2: LPVOID, P3: DWORD, P4: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpReceiveResponse*(
+  P1: HINTERNET, P2: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpSendRequest*(
+  P1: HINTERNET, P2: LPCWSTR, P3: DWORD, P4: LPVOID, P5: DWORD, P6: DWORD, P7: DWORD_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpSetDefaultProxyConfiguration*(
+  P1: ptr WINHTTP_PROXY_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpSetCredentials*(
+  P1: HINTERNET, P2: DWORD, P3: DWORD, P4: LPCWSTR, P5: LPCWSTR, P6: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpSetOption*(
+  P1: HINTERNET, P2: DWORD, P3: LPVOID, P4: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpSetStatusCallback*(
+  P1: HINTERNET, P2: WINHTTP_STATUS_CALLBACK, P3: DWORD, P4: DWORD_PTR
+): WINHTTP_STATUS_CALLBACK {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpSetTimeouts*(
+  P1: HINTERNET, P2: int32, P3: int32, P4: int32, P5: int32
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpTimeFromSystemTime*(
+  P1: ptr SYSTEMTIME, P2: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpTimeToSystemTime*(
+  P1: LPCWSTR, P2: ptr SYSTEMTIME
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
+proc WinHttpWriteData*(
+  P1: HINTERNET, P2: LPCVOID, P3: DWORD, P4: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winhttp", importc.}
+
 when winimCpu64:
-  type
-    WINHTTP_CONNECTION_INFO* {.pure.} = object
-      cbSize*: DWORD
-      LocalAddress*: SOCKADDR_STORAGE
-      RemoteAddress*: SOCKADDR_STORAGE
+  type WINHTTP_CONNECTION_INFO* {.pure.} = object
+    cbSize*: DWORD
+    LocalAddress*: SOCKADDR_STORAGE
+    RemoteAddress*: SOCKADDR_STORAGE
+
 when winimCpu32:
-  type
-    WINHTTP_CONNECTION_INFO* {.pure, packed.} = object
-      cbSize*: DWORD
-      LocalAddress*: SOCKADDR_STORAGE
-      RemoteAddress*: SOCKADDR_STORAGE
+  type WINHTTP_CONNECTION_INFO* {.pure, packed.} = object
+    cbSize*: DWORD
+    LocalAddress*: SOCKADDR_STORAGE
+    RemoteAddress*: SOCKADDR_STORAGE
--- a/semicongine/thirdparty/winim/winim/inc/winimbase.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winimbase.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -10,10 +10,8 @@
 when not defined(noRes):
   when defined(vcc):
     {.link: "../lib/winimvcc.res".}
-
   elif defined(cpu64):
     {.link: "../lib/winim64.res".}
-
   else:
     {.link: "../lib/winim32.res".}
 
@@ -23,18 +21,34 @@
 
   result = x
 
-proc discardable*[T](x: T): T {.discardable, inline.} = x
+proc discardable*[T](x: T): T {.discardable, inline.} =
+  x
 
 macro DEFINE_GUID*(guid: string): untyped =
   const
-    ranges = [0..7, 9..12, 14..17, 19..20, 21..22, 24..25, 26..27, 28..29, 30..31, 32..33, 34..35]
-    parts = ["'i32, 0x", ", 0x", ", [0x", "'u8, 0x", ", 0x", ", 0x", ", 0x", ", 0x", ", 0x", ", 0x", "])"]
+    ranges = [
+      0 .. 7,
+      9 .. 12,
+      14 .. 17,
+      19 .. 20,
+      21 .. 22,
+      24 .. 25,
+      26 .. 27,
+      28 .. 29,
+      30 .. 31,
+      32 .. 33,
+      34 .. 35,
+    ]
+    parts = [
+      "'i32, 0x", ", 0x", ", [0x", "'u8, 0x", ", 0x", ", 0x", ", 0x", ", 0x", ", 0x",
+      ", 0x", "])",
+    ]
 
   let guid = guid.strVal
   assert guid.len == 36
 
   var code = "DEFINE_GUID(0x"
-  for i in 0..10:
+  for i in 0 .. 10:
     code.add guid[ranges[i]]
     code.add parts[i]
   result = parseStmt(code)
--- a/semicongine/thirdparty/winim/winim/inc/wininet.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/wininet.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -20,33 +20,40 @@
   INTERNET_ASYNC_RESULT* {.pure.} = object
     dwResult*: DWORD_PTR
     dwError*: DWORD
+
   LPINTERNET_ASYNC_RESULT* = ptr INTERNET_ASYNC_RESULT
   INTERNET_DIAGNOSTIC_SOCKET_INFO* {.pure.} = object
     Socket*: DWORD_PTR
     SourcePort*: DWORD
     DestPort*: DWORD
     Flags*: DWORD
+
   LPINTERNET_DIAGNOSTIC_SOCKET_INFO* = ptr INTERNET_DIAGNOSTIC_SOCKET_INFO
   INTERNET_PROXY_INFO* {.pure.} = object
     dwAccessType*: DWORD
     lpszProxy*: LPCTSTR
     lpszProxyBypass*: LPCTSTR
+
   LPINTERNET_PROXY_INFO* = ptr INTERNET_PROXY_INFO
   INTERNET_PER_CONN_OPTIONA_Value* {.pure, union.} = object
     dwValue*: DWORD
     pszValue*: LPSTR
     ftValue*: FILETIME
+
   INTERNET_PER_CONN_OPTIONA* {.pure.} = object
     dwOption*: DWORD
     Value*: INTERNET_PER_CONN_OPTIONA_Value
+
   LPINTERNET_PER_CONN_OPTIONA* = ptr INTERNET_PER_CONN_OPTIONA
   INTERNET_PER_CONN_OPTIONW_Value* {.pure, union.} = object
     dwValue*: DWORD
     pszValue*: LPWSTR
     ftValue*: FILETIME
+
   INTERNET_PER_CONN_OPTIONW* {.pure.} = object
     dwOption*: DWORD
     Value*: INTERNET_PER_CONN_OPTIONW_Value
+
   LPINTERNET_PER_CONN_OPTIONW* = ptr INTERNET_PER_CONN_OPTIONW
   INTERNET_PER_CONN_OPTION_LISTA* {.pure.} = object
     dwSize*: DWORD
@@ -54,6 +61,7 @@
     dwOptionCount*: DWORD
     dwOptionError*: DWORD
     pOptions*: LPINTERNET_PER_CONN_OPTIONA
+
   LPINTERNET_PER_CONN_OPTION_LISTA* = ptr INTERNET_PER_CONN_OPTION_LISTA
   INTERNET_PER_CONN_OPTION_LISTW* {.pure.} = object
     dwSize*: DWORD
@@ -61,18 +69,22 @@
     dwOptionCount*: DWORD
     dwOptionError*: DWORD
     pOptions*: LPINTERNET_PER_CONN_OPTIONW
+
   LPINTERNET_PER_CONN_OPTION_LISTW* = ptr INTERNET_PER_CONN_OPTION_LISTW
   INTERNET_VERSION_INFO* {.pure.} = object
     dwMajorVersion*: DWORD
     dwMinorVersion*: DWORD
+
   LPINTERNET_VERSION_INFO* = ptr INTERNET_VERSION_INFO
   HTTP_VERSION_INFO* {.pure.} = object
     dwMajorVersion*: DWORD
     dwMinorVersion*: DWORD
+
   LPHTTP_VERSION_INFO* = ptr HTTP_VERSION_INFO
   INTERNET_CONNECTED_INFO* {.pure.} = object
     dwConnectedState*: DWORD
     dwFlags*: DWORD
+
   LPINTERNET_CONNECTED_INFO* = ptr INTERNET_CONNECTED_INFO
   URL_COMPONENTSA* {.pure.} = object
     dwStructSize*: DWORD
@@ -90,6 +102,7 @@
     dwUrlPathLength*: DWORD
     lpszExtraInfo*: LPSTR
     dwExtraInfoLength*: DWORD
+
   LPURL_COMPONENTSA* = ptr URL_COMPONENTSA
   URL_COMPONENTSW* {.pure.} = object
     dwStructSize*: DWORD
@@ -107,6 +120,7 @@
     dwUrlPathLength*: DWORD
     lpszExtraInfo*: LPWSTR
     dwExtraInfoLength*: DWORD
+
   LPURL_COMPONENTSW* = ptr URL_COMPONENTSW
   INTERNET_CERTIFICATE_INFO* {.pure.} = object
     ftExpiry*: FILETIME
@@ -117,6 +131,7 @@
     lpszSignatureAlgName*: LPTSTR
     lpszEncryptionAlgName*: LPTSTR
     dwKeySize*: DWORD
+
   LPINTERNET_CERTIFICATE_INFO* = ptr INTERNET_CERTIFICATE_INFO
   INTERNET_BUFFERSA* {.pure.} = object
     dwStructSize*: DWORD
@@ -129,6 +144,7 @@
     dwBufferTotal*: DWORD
     dwOffsetLow*: DWORD
     dwOffsetHigh*: DWORD
+
   LPINTERNET_BUFFERSA* = ptr INTERNET_BUFFERSA
   INTERNET_BUFFERSW* {.pure.} = object
     dwStructSize*: DWORD
@@ -141,16 +157,26 @@
     dwBufferTotal*: DWORD
     dwOffsetLow*: DWORD
     dwOffsetHigh*: DWORD
+
   LPINTERNET_BUFFERSW* = ptr INTERNET_BUFFERSW
-  INTERNET_STATUS_CALLBACK* = proc (hInternet: HINTERNET, dwContext: DWORD_PTR, dwInternetStatus: DWORD, lpvStatusInformation: LPVOID, dwStatusInformationLength: DWORD): VOID {.stdcall.}
+  INTERNET_STATUS_CALLBACK* = proc(
+    hInternet: HINTERNET,
+    dwContext: DWORD_PTR,
+    dwInternetStatus: DWORD,
+    lpvStatusInformation: LPVOID,
+    dwStatusInformationLength: DWORD,
+  ): VOID {.stdcall.}
   LPINTERNET_STATUS_CALLBACK* = ptr INTERNET_STATUS_CALLBACK
+
 const
   MAX_GOPHER_DISPLAY_TEXT* = 128
   MAX_GOPHER_SELECTOR_TEXT* = 256
   INTERNET_MAX_HOST_NAME_LENGTH* = 256
   MAX_GOPHER_HOST_NAME* = INTERNET_MAX_HOST_NAME_LENGTH
   INTERNET_MAX_PORT_NUMBER_LENGTH* = 5
-  MAX_GOPHER_LOCATOR_LENGTH* = 1+MAX_GOPHER_DISPLAY_TEXT+1+MAX_GOPHER_SELECTOR_TEXT+1+MAX_GOPHER_HOST_NAME+1+INTERNET_MAX_PORT_NUMBER_LENGTH+1+1+2
+  MAX_GOPHER_LOCATOR_LENGTH* =
+    1 + MAX_GOPHER_DISPLAY_TEXT + 1 + MAX_GOPHER_SELECTOR_TEXT + 1 + MAX_GOPHER_HOST_NAME +
+    1 + INTERNET_MAX_PORT_NUMBER_LENGTH + 1 + 1 + 2
 type
   GOPHER_FIND_DATAA* {.pure.} = object
     DisplayString*: array[MAX_GOPHER_DISPLAY_TEXT + 1, CHAR]
@@ -159,6 +185,7 @@
     SizeHigh*: DWORD
     LastModificationTime*: FILETIME
     Locator*: array[MAX_GOPHER_LOCATOR_LENGTH + 1, CHAR]
+
   LPGOPHER_FIND_DATAA* = ptr GOPHER_FIND_DATAA
   GOPHER_FIND_DATAW* {.pure.} = object
     DisplayString*: array[MAX_GOPHER_DISPLAY_TEXT + 1, WCHAR]
@@ -167,32 +194,41 @@
     SizeHigh*: DWORD
     LastModificationTime*: FILETIME
     Locator*: array[MAX_GOPHER_LOCATOR_LENGTH + 1, WCHAR]
+
   LPGOPHER_FIND_DATAW* = ptr GOPHER_FIND_DATAW
   GOPHER_ADMIN_ATTRIBUTE_TYPE* {.pure.} = object
     Comment*: LPCTSTR
     EmailAddress*: LPCTSTR
+
   LPGOPHER_ADMIN_ATTRIBUTE_TYPE* = ptr GOPHER_ADMIN_ATTRIBUTE_TYPE
   GOPHER_MOD_DATE_ATTRIBUTE_TYPE* {.pure.} = object
     DateAndTime*: FILETIME
+
   LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE* = ptr GOPHER_MOD_DATE_ATTRIBUTE_TYPE
   GOPHER_TTL_ATTRIBUTE_TYPE* {.pure.} = object
     Ttl*: DWORD
+
   LPGOPHER_TTL_ATTRIBUTE_TYPE* = ptr GOPHER_TTL_ATTRIBUTE_TYPE
   GOPHER_SCORE_ATTRIBUTE_TYPE* {.pure.} = object
     Score*: INT
+
   LPGOPHER_SCORE_ATTRIBUTE_TYPE* = ptr GOPHER_SCORE_ATTRIBUTE_TYPE
   GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE* {.pure.} = object
     LowerBound*: INT
     UpperBound*: INT
+
   LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE* = ptr GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE
   GOPHER_SITE_ATTRIBUTE_TYPE* {.pure.} = object
     Site*: LPCTSTR
+
   LPGOPHER_SITE_ATTRIBUTE_TYPE* = ptr GOPHER_SITE_ATTRIBUTE_TYPE
   GOPHER_ORGANIZATION_ATTRIBUTE_TYPE* {.pure.} = object
     Organization*: LPCTSTR
+
   LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE* = ptr GOPHER_ORGANIZATION_ATTRIBUTE_TYPE
   GOPHER_LOCATION_ATTRIBUTE_TYPE* {.pure.} = object
     Location*: LPCTSTR
+
   LPGOPHER_LOCATION_ATTRIBUTE_TYPE* = ptr GOPHER_LOCATION_ATTRIBUTE_TYPE
   GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE* {.pure.} = object
     DegreesNorth*: INT
@@ -201,34 +237,44 @@
     DegreesEast*: INT
     MinutesEast*: INT
     SecondsEast*: INT
-  LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE* = ptr GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE
+
+  LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE* =
+    ptr GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE
   GOPHER_TIMEZONE_ATTRIBUTE_TYPE* {.pure.} = object
     Zone*: INT
+
   LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE* = ptr GOPHER_TIMEZONE_ATTRIBUTE_TYPE
   GOPHER_PROVIDER_ATTRIBUTE_TYPE* {.pure.} = object
     Provider*: LPCTSTR
+
   LPGOPHER_PROVIDER_ATTRIBUTE_TYPE* = ptr GOPHER_PROVIDER_ATTRIBUTE_TYPE
   GOPHER_VERSION_ATTRIBUTE_TYPE* {.pure.} = object
     Version*: LPCTSTR
+
   LPGOPHER_VERSION_ATTRIBUTE_TYPE* = ptr GOPHER_VERSION_ATTRIBUTE_TYPE
   GOPHER_ABSTRACT_ATTRIBUTE_TYPE* {.pure.} = object
     ShortAbstract*: LPCTSTR
     AbstractFile*: LPCTSTR
+
   LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE* = ptr GOPHER_ABSTRACT_ATTRIBUTE_TYPE
   GOPHER_VIEW_ATTRIBUTE_TYPE* {.pure.} = object
     ContentType*: LPCTSTR
     Language*: LPCTSTR
     Size*: DWORD
+
   LPGOPHER_VIEW_ATTRIBUTE_TYPE* = ptr GOPHER_VIEW_ATTRIBUTE_TYPE
   GOPHER_VERONICA_ATTRIBUTE_TYPE* {.pure.} = object
     TreeWalk*: WINBOOL
+
   LPGOPHER_VERONICA_ATTRIBUTE_TYPE* = ptr GOPHER_VERONICA_ATTRIBUTE_TYPE
   GOPHER_ASK_ATTRIBUTE_TYPE* {.pure.} = object
     QuestionType*: LPCTSTR
     QuestionText*: LPCTSTR
+
   LPGOPHER_ASK_ATTRIBUTE_TYPE* = ptr GOPHER_ASK_ATTRIBUTE_TYPE
   GOPHER_UNKNOWN_ATTRIBUTE_TYPE* {.pure.} = object
     Text*: LPCTSTR
+
   LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE* = ptr GOPHER_UNKNOWN_ATTRIBUTE_TYPE
   GOPHER_ATTRIBUTE_TYPE_AttributeType* {.pure, union.} = object
     Admin*: GOPHER_ADMIN_ATTRIBUTE_TYPE
@@ -248,14 +294,17 @@
     Veronica*: GOPHER_VERONICA_ATTRIBUTE_TYPE
     Ask*: GOPHER_ASK_ATTRIBUTE_TYPE
     Unknown*: GOPHER_UNKNOWN_ATTRIBUTE_TYPE
+
   GOPHER_ATTRIBUTE_TYPE* {.pure.} = object
     CategoryId*: DWORD
     AttributeId*: DWORD
     AttributeType*: GOPHER_ATTRIBUTE_TYPE_AttributeType
+
   LPGOPHER_ATTRIBUTE_TYPE* = ptr GOPHER_ATTRIBUTE_TYPE
   INTERNET_CACHE_ENTRY_INFOA_UNION1* {.pure, union.} = object
     dwReserved*: DWORD
     dwExemptDelta*: DWORD
+
   INTERNET_CACHE_ENTRY_INFOA* {.pure.} = object
     dwStructSize*: DWORD
     lpszSourceUrlName*: LPSTR
@@ -273,10 +322,12 @@
     dwHeaderInfoSize*: DWORD
     lpszFileExtension*: LPSTR
     union1*: INTERNET_CACHE_ENTRY_INFOA_UNION1
+
   LPINTERNET_CACHE_ENTRY_INFOA* = ptr INTERNET_CACHE_ENTRY_INFOA
   INTERNET_CACHE_ENTRY_INFOW_UNION1* {.pure, union.} = object
     dwReserved*: DWORD
     dwExemptDelta*: DWORD
+
   INTERNET_CACHE_ENTRY_INFOW* {.pure.} = object
     dwStructSize*: DWORD
     lpszSourceUrlName*: LPWSTR
@@ -294,11 +345,14 @@
     dwHeaderInfoSize*: DWORD
     lpszFileExtension*: LPWSTR
     union1*: INTERNET_CACHE_ENTRY_INFOW_UNION1
+
   LPINTERNET_CACHE_ENTRY_INFOW* = ptr INTERNET_CACHE_ENTRY_INFOW
   INTERNET_CACHE_TIMESTAMPS* {.pure.} = object
     ftExpires*: FILETIME
     ftLastModified*: FILETIME
+
   LPINTERNET_CACHE_TIMESTAMPS* = ptr INTERNET_CACHE_TIMESTAMPS
+
 const
   GROUP_OWNER_STORAGE_SIZE* = 4
   GROUPNAME_MAX_LENGTH* = 120
@@ -311,6 +365,7 @@
     dwDiskQuota*: DWORD
     dwOwnerStorage*: array[GROUP_OWNER_STORAGE_SIZE, DWORD]
     szGroupName*: array[GROUPNAME_MAX_LENGTH, CHAR]
+
   LPINTERNET_CACHE_GROUP_INFOA* = ptr INTERNET_CACHE_GROUP_INFOA
   INTERNET_CACHE_GROUP_INFOW* {.pure.} = object
     dwGroupSize*: DWORD
@@ -320,12 +375,15 @@
     dwDiskQuota*: DWORD
     dwOwnerStorage*: array[GROUP_OWNER_STORAGE_SIZE, DWORD]
     szGroupName*: array[GROUPNAME_MAX_LENGTH, WCHAR]
+
   LPINTERNET_CACHE_GROUP_INFOW* = ptr INTERNET_CACHE_GROUP_INFOW
   AUTO_PROXY_SCRIPT_BUFFER* {.pure.} = object
     dwStructSize*: DWORD
     lpszScriptBuffer*: LPSTR
     dwScriptBufferSize*: DWORD
+
   LPAUTO_PROXY_SCRIPT_BUFFER* = ptr AUTO_PROXY_SCRIPT_BUFFER
+
 const
   INTERNET_INVALID_PORT_NUMBER* = 0
   INTERNET_DEFAULT_FTP_PORT* = 21
@@ -383,9 +441,22 @@
   INTERNET_FLAG_TRANSFER_ASCII* = FTP_TRANSFER_TYPE_ASCII
   FTP_TRANSFER_TYPE_BINARY* = 0x00000002
   INTERNET_FLAG_TRANSFER_BINARY* = FTP_TRANSFER_TYPE_BINARY
-  SECURITY_INTERNET_MASK* = INTERNET_FLAG_IGNORE_CERT_CN_INVALID or INTERNET_FLAG_IGNORE_CERT_DATE_INVALID or INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS or INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP
+  SECURITY_INTERNET_MASK* =
+    INTERNET_FLAG_IGNORE_CERT_CN_INVALID or INTERNET_FLAG_IGNORE_CERT_DATE_INVALID or
+    INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS or INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP
   INTERNET_FLAG_BGUPDATE* = 8
-  INTERNET_FLAGS_MASK* = INTERNET_FLAG_RELOAD or INTERNET_FLAG_RAW_DATA or INTERNET_FLAG_EXISTING_CONNECT or INTERNET_FLAG_ASYNC or INTERNET_FLAG_PASSIVE or INTERNET_FLAG_NO_CACHE_WRITE or INTERNET_FLAG_MAKE_PERSISTENT or INTERNET_FLAG_FROM_CACHE or INTERNET_FLAG_SECURE or INTERNET_FLAG_KEEP_CONNECTION or INTERNET_FLAG_NO_AUTO_REDIRECT or INTERNET_FLAG_READ_PREFETCH or INTERNET_FLAG_NO_COOKIES or INTERNET_FLAG_NO_AUTH or INTERNET_FLAG_CACHE_IF_NET_FAIL or SECURITY_INTERNET_MASK or INTERNET_FLAG_RESYNCHRONIZE or INTERNET_FLAG_HYPERLINK or INTERNET_FLAG_NO_UI or INTERNET_FLAG_PRAGMA_NOCACHE or INTERNET_FLAG_CACHE_ASYNC or INTERNET_FLAG_FORMS_SUBMIT or INTERNET_FLAG_NEED_FILE or INTERNET_FLAG_RESTRICTED_ZONE or INTERNET_FLAG_TRANSFER_BINARY or INTERNET_FLAG_TRANSFER_ASCII or INTERNET_FLAG_FWD_BACK or INTERNET_FLAG_BGUPDATE
+  INTERNET_FLAGS_MASK* =
+    INTERNET_FLAG_RELOAD or INTERNET_FLAG_RAW_DATA or INTERNET_FLAG_EXISTING_CONNECT or
+    INTERNET_FLAG_ASYNC or INTERNET_FLAG_PASSIVE or INTERNET_FLAG_NO_CACHE_WRITE or
+    INTERNET_FLAG_MAKE_PERSISTENT or INTERNET_FLAG_FROM_CACHE or INTERNET_FLAG_SECURE or
+    INTERNET_FLAG_KEEP_CONNECTION or INTERNET_FLAG_NO_AUTO_REDIRECT or
+    INTERNET_FLAG_READ_PREFETCH or INTERNET_FLAG_NO_COOKIES or INTERNET_FLAG_NO_AUTH or
+    INTERNET_FLAG_CACHE_IF_NET_FAIL or SECURITY_INTERNET_MASK or
+    INTERNET_FLAG_RESYNCHRONIZE or INTERNET_FLAG_HYPERLINK or INTERNET_FLAG_NO_UI or
+    INTERNET_FLAG_PRAGMA_NOCACHE or INTERNET_FLAG_CACHE_ASYNC or
+    INTERNET_FLAG_FORMS_SUBMIT or INTERNET_FLAG_NEED_FILE or
+    INTERNET_FLAG_RESTRICTED_ZONE or INTERNET_FLAG_TRANSFER_BINARY or
+    INTERNET_FLAG_TRANSFER_ASCII or INTERNET_FLAG_FWD_BACK or INTERNET_FLAG_BGUPDATE
   INTERNET_ERROR_MASK_INSERT_CDROM* = 0x1
   INTERNET_ERROR_MASK_COMBINED_SEC_CERT* = 0x2
   INTERNET_ERROR_MASK_NEED_MSN_SSPI_PKG* = 0X4
@@ -592,7 +663,10 @@
   SECURITY_FLAG_IGNORE_CERT_DATE_INVALID* = INTERNET_FLAG_IGNORE_CERT_DATE_INVALID
   SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS* = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS
   SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP* = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP
-  SECURITY_SET_MASK* = SECURITY_FLAG_IGNORE_REVOCATION or SECURITY_FLAG_IGNORE_UNKNOWN_CA or SECURITY_FLAG_IGNORE_CERT_CN_INVALID or SECURITY_FLAG_IGNORE_CERT_DATE_INVALID or SECURITY_FLAG_IGNORE_WRONG_USAGE
+  SECURITY_SET_MASK* =
+    SECURITY_FLAG_IGNORE_REVOCATION or SECURITY_FLAG_IGNORE_UNKNOWN_CA or
+    SECURITY_FLAG_IGNORE_CERT_CN_INVALID or SECURITY_FLAG_IGNORE_CERT_DATE_INVALID or
+    SECURITY_FLAG_IGNORE_WRONG_USAGE
   AUTODIAL_MODE_NEVER* = 1
   AUTODIAL_MODE_ALWAYS* = 2
   AUTODIAL_MODE_NO_NETWORK_PRESENT* = 4
@@ -660,7 +734,11 @@
   GOPHER_TYPE_UNKNOWN* = 0x20000000
   GOPHER_TYPE_ASK* = 0x40000000
   GOPHER_TYPE_GOPHER_PLUS* = 0x80000000'i32
-  GOPHER_TYPE_FILE_MASK* = GOPHER_TYPE_TEXT_FILE or GOPHER_TYPE_MAC_BINHEX or GOPHER_TYPE_DOS_ARCHIVE or GOPHER_TYPE_UNIX_UUENCODED or GOPHER_TYPE_BINARY or GOPHER_TYPE_GIF or GOPHER_TYPE_IMAGE or GOPHER_TYPE_BITMAP or GOPHER_TYPE_MOVIE or GOPHER_TYPE_SOUND or GOPHER_TYPE_HTML or GOPHER_TYPE_PDF or GOPHER_TYPE_CALENDAR or GOPHER_TYPE_INLINE
+  GOPHER_TYPE_FILE_MASK* =
+    GOPHER_TYPE_TEXT_FILE or GOPHER_TYPE_MAC_BINHEX or GOPHER_TYPE_DOS_ARCHIVE or
+    GOPHER_TYPE_UNIX_UUENCODED or GOPHER_TYPE_BINARY or GOPHER_TYPE_GIF or
+    GOPHER_TYPE_IMAGE or GOPHER_TYPE_BITMAP or GOPHER_TYPE_MOVIE or GOPHER_TYPE_SOUND or
+    GOPHER_TYPE_HTML or GOPHER_TYPE_PDF or GOPHER_TYPE_CALENDAR or GOPHER_TYPE_INLINE
   MAX_GOPHER_CATEGORY_NAME* = 128
   MAX_GOPHER_ATTRIBUTE_NAME* = 128
   MIN_GOPHER_ATTRIBUTE_LENGTH* = 256
@@ -685,31 +763,31 @@
   GOPHER_VIEW_ATTRIBUTE* = "View"
   GOPHER_TREEWALK_ATTRIBUTE* = "treewalk"
   GOPHER_ATTRIBUTE_ID_BASE* = 0xabcccc00'i32
-  GOPHER_CATEGORY_ID_ALL* = GOPHER_ATTRIBUTE_ID_BASE+1
-  GOPHER_CATEGORY_ID_INFO* = GOPHER_ATTRIBUTE_ID_BASE+2
-  GOPHER_CATEGORY_ID_ADMIN* = GOPHER_ATTRIBUTE_ID_BASE+3
-  GOPHER_CATEGORY_ID_VIEWS* = GOPHER_ATTRIBUTE_ID_BASE+4
-  GOPHER_CATEGORY_ID_ABSTRACT* = GOPHER_ATTRIBUTE_ID_BASE+5
-  GOPHER_CATEGORY_ID_VERONICA* = GOPHER_ATTRIBUTE_ID_BASE+6
-  GOPHER_CATEGORY_ID_ASK* = GOPHER_ATTRIBUTE_ID_BASE+7
-  GOPHER_CATEGORY_ID_UNKNOWN* = GOPHER_ATTRIBUTE_ID_BASE+8
-  GOPHER_ATTRIBUTE_ID_ALL* = GOPHER_ATTRIBUTE_ID_BASE+9
-  GOPHER_ATTRIBUTE_ID_ADMIN* = GOPHER_ATTRIBUTE_ID_BASE+10
-  GOPHER_ATTRIBUTE_ID_MOD_DATE* = GOPHER_ATTRIBUTE_ID_BASE+11
-  GOPHER_ATTRIBUTE_ID_TTL* = GOPHER_ATTRIBUTE_ID_BASE+12
-  GOPHER_ATTRIBUTE_ID_SCORE* = GOPHER_ATTRIBUTE_ID_BASE+13
-  GOPHER_ATTRIBUTE_ID_RANGE* = GOPHER_ATTRIBUTE_ID_BASE+14
-  GOPHER_ATTRIBUTE_ID_SITE* = GOPHER_ATTRIBUTE_ID_BASE+15
-  GOPHER_ATTRIBUTE_ID_ORG* = GOPHER_ATTRIBUTE_ID_BASE+16
-  GOPHER_ATTRIBUTE_ID_LOCATION* = GOPHER_ATTRIBUTE_ID_BASE+17
-  GOPHER_ATTRIBUTE_ID_GEOG* = GOPHER_ATTRIBUTE_ID_BASE+18
-  GOPHER_ATTRIBUTE_ID_TIMEZONE* = GOPHER_ATTRIBUTE_ID_BASE+19
-  GOPHER_ATTRIBUTE_ID_PROVIDER* = GOPHER_ATTRIBUTE_ID_BASE+20
-  GOPHER_ATTRIBUTE_ID_VERSION* = GOPHER_ATTRIBUTE_ID_BASE+21
-  GOPHER_ATTRIBUTE_ID_ABSTRACT* = GOPHER_ATTRIBUTE_ID_BASE+22
-  GOPHER_ATTRIBUTE_ID_VIEW* = GOPHER_ATTRIBUTE_ID_BASE+23
-  GOPHER_ATTRIBUTE_ID_TREEWALK* = GOPHER_ATTRIBUTE_ID_BASE+24
-  GOPHER_ATTRIBUTE_ID_UNKNOWN* = GOPHER_ATTRIBUTE_ID_BASE+25
+  GOPHER_CATEGORY_ID_ALL* = GOPHER_ATTRIBUTE_ID_BASE + 1
+  GOPHER_CATEGORY_ID_INFO* = GOPHER_ATTRIBUTE_ID_BASE + 2
+  GOPHER_CATEGORY_ID_ADMIN* = GOPHER_ATTRIBUTE_ID_BASE + 3
+  GOPHER_CATEGORY_ID_VIEWS* = GOPHER_ATTRIBUTE_ID_BASE + 4
+  GOPHER_CATEGORY_ID_ABSTRACT* = GOPHER_ATTRIBUTE_ID_BASE + 5
+  GOPHER_CATEGORY_ID_VERONICA* = GOPHER_ATTRIBUTE_ID_BASE + 6
+  GOPHER_CATEGORY_ID_ASK* = GOPHER_ATTRIBUTE_ID_BASE + 7
+  GOPHER_CATEGORY_ID_UNKNOWN* = GOPHER_ATTRIBUTE_ID_BASE + 8
+  GOPHER_ATTRIBUTE_ID_ALL* = GOPHER_ATTRIBUTE_ID_BASE + 9
+  GOPHER_ATTRIBUTE_ID_ADMIN* = GOPHER_ATTRIBUTE_ID_BASE + 10
+  GOPHER_ATTRIBUTE_ID_MOD_DATE* = GOPHER_ATTRIBUTE_ID_BASE + 11
+  GOPHER_ATTRIBUTE_ID_TTL* = GOPHER_ATTRIBUTE_ID_BASE + 12
+  GOPHER_ATTRIBUTE_ID_SCORE* = GOPHER_ATTRIBUTE_ID_BASE + 13
+  GOPHER_ATTRIBUTE_ID_RANGE* = GOPHER_ATTRIBUTE_ID_BASE + 14
+  GOPHER_ATTRIBUTE_ID_SITE* = GOPHER_ATTRIBUTE_ID_BASE + 15
+  GOPHER_ATTRIBUTE_ID_ORG* = GOPHER_ATTRIBUTE_ID_BASE + 16
+  GOPHER_ATTRIBUTE_ID_LOCATION* = GOPHER_ATTRIBUTE_ID_BASE + 17
+  GOPHER_ATTRIBUTE_ID_GEOG* = GOPHER_ATTRIBUTE_ID_BASE + 18
+  GOPHER_ATTRIBUTE_ID_TIMEZONE* = GOPHER_ATTRIBUTE_ID_BASE + 19
+  GOPHER_ATTRIBUTE_ID_PROVIDER* = GOPHER_ATTRIBUTE_ID_BASE + 20
+  GOPHER_ATTRIBUTE_ID_VERSION* = GOPHER_ATTRIBUTE_ID_BASE + 21
+  GOPHER_ATTRIBUTE_ID_ABSTRACT* = GOPHER_ATTRIBUTE_ID_BASE + 22
+  GOPHER_ATTRIBUTE_ID_VIEW* = GOPHER_ATTRIBUTE_ID_BASE + 23
+  GOPHER_ATTRIBUTE_ID_TREEWALK* = GOPHER_ATTRIBUTE_ID_BASE + 24
+  GOPHER_ATTRIBUTE_ID_UNKNOWN* = GOPHER_ATTRIBUTE_ID_BASE + 25
   HTTP_MAJOR_VERSION* = 1
   HTTP_MINOR_VERSION* = 0
   HTTP_QUERY_MIME_VERSION* = 0
@@ -797,7 +875,9 @@
   HTTP_QUERY_FLAG_SYSTEMTIME* = 0x40000000
   HTTP_QUERY_FLAG_NUMBER* = 0x20000000
   HTTP_QUERY_FLAG_COALESCE* = 0x10000000
-  HTTP_QUERY_MODIFIER_FLAGS_MASK* = HTTP_QUERY_FLAG_REQUEST_HEADERS or HTTP_QUERY_FLAG_SYSTEMTIME or HTTP_QUERY_FLAG_NUMBER or HTTP_QUERY_FLAG_COALESCE
+  HTTP_QUERY_MODIFIER_FLAGS_MASK* =
+    HTTP_QUERY_FLAG_REQUEST_HEADERS or HTTP_QUERY_FLAG_SYSTEMTIME or
+    HTTP_QUERY_FLAG_NUMBER or HTTP_QUERY_FLAG_COALESCE
   HTTP_QUERY_HEADER_MASK* = not HTTP_QUERY_MODIFIER_FLAGS_MASK
   HTTP_STATUS_CONTINUE* = 100
   HTTP_STATUS_SWITCH_PROTOCOLS* = 101
@@ -871,98 +951,98 @@
   FLAGS_ERROR_UI_FLAGS_NO_UI* = 0x08
   FLAGS_ERROR_UI_SERIALIZE_DIALOGS* = 0x10
   INTERNET_ERROR_BASE* = 12000
-  ERROR_INTERNET_OUT_OF_HANDLES* = INTERNET_ERROR_BASE+1
-  ERROR_INTERNET_TIMEOUT* = INTERNET_ERROR_BASE+2
-  ERROR_INTERNET_EXTENDED_ERROR* = INTERNET_ERROR_BASE+3
-  ERROR_INTERNET_INTERNAL_ERROR* = INTERNET_ERROR_BASE+4
-  ERROR_INTERNET_INVALID_URL* = INTERNET_ERROR_BASE+5
-  ERROR_INTERNET_UNRECOGNIZED_SCHEME* = INTERNET_ERROR_BASE+6
-  ERROR_INTERNET_NAME_NOT_RESOLVED* = INTERNET_ERROR_BASE+7
-  ERROR_INTERNET_PROTOCOL_NOT_FOUND* = INTERNET_ERROR_BASE+8
-  ERROR_INTERNET_INVALID_OPTION* = INTERNET_ERROR_BASE+9
-  ERROR_INTERNET_BAD_OPTION_LENGTH* = INTERNET_ERROR_BASE+10
-  ERROR_INTERNET_OPTION_NOT_SETTABLE* = INTERNET_ERROR_BASE+11
-  ERROR_INTERNET_SHUTDOWN* = INTERNET_ERROR_BASE+12
-  ERROR_INTERNET_INCORRECT_USER_NAME* = INTERNET_ERROR_BASE+13
-  ERROR_INTERNET_INCORRECT_PASSWORD* = INTERNET_ERROR_BASE+14
-  ERROR_INTERNET_LOGIN_FAILURE* = INTERNET_ERROR_BASE+15
-  ERROR_INTERNET_INVALID_OPERATION* = INTERNET_ERROR_BASE+16
-  ERROR_INTERNET_OPERATION_CANCELLED* = INTERNET_ERROR_BASE+17
-  ERROR_INTERNET_INCORRECT_HANDLE_TYPE* = INTERNET_ERROR_BASE+18
-  ERROR_INTERNET_INCORRECT_HANDLE_STATE* = INTERNET_ERROR_BASE+19
-  ERROR_INTERNET_NOT_PROXY_REQUEST* = INTERNET_ERROR_BASE+20
-  ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND* = INTERNET_ERROR_BASE+21
-  ERROR_INTERNET_BAD_REGISTRY_PARAMETER* = INTERNET_ERROR_BASE+22
-  ERROR_INTERNET_NO_DIRECT_ACCESS* = INTERNET_ERROR_BASE+23
-  ERROR_INTERNET_NO_CONTEXT* = INTERNET_ERROR_BASE+24
-  ERROR_INTERNET_NO_CALLBACK* = INTERNET_ERROR_BASE+25
-  ERROR_INTERNET_REQUEST_PENDING* = INTERNET_ERROR_BASE+26
-  ERROR_INTERNET_INCORRECT_FORMAT* = INTERNET_ERROR_BASE+27
-  ERROR_INTERNET_ITEM_NOT_FOUND* = INTERNET_ERROR_BASE+28
-  ERROR_INTERNET_CANNOT_CONNECT* = INTERNET_ERROR_BASE+29
-  ERROR_INTERNET_CONNECTION_ABORTED* = INTERNET_ERROR_BASE+30
-  ERROR_INTERNET_CONNECTION_RESET* = INTERNET_ERROR_BASE+31
-  ERROR_INTERNET_FORCE_RETRY* = INTERNET_ERROR_BASE+32
-  ERROR_INTERNET_INVALID_PROXY_REQUEST* = INTERNET_ERROR_BASE+33
-  ERROR_INTERNET_NEED_UI* = INTERNET_ERROR_BASE+34
-  ERROR_INTERNET_HANDLE_EXISTS* = INTERNET_ERROR_BASE+36
-  ERROR_INTERNET_SEC_CERT_DATE_INVALID* = INTERNET_ERROR_BASE+37
-  ERROR_INTERNET_SEC_CERT_CN_INVALID* = INTERNET_ERROR_BASE+38
-  ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR* = INTERNET_ERROR_BASE+39
-  ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR* = INTERNET_ERROR_BASE+40
-  ERROR_INTERNET_MIXED_SECURITY* = INTERNET_ERROR_BASE+41
-  ERROR_INTERNET_CHG_POST_IS_NON_SECURE* = INTERNET_ERROR_BASE+42
-  ERROR_INTERNET_POST_IS_NON_SECURE* = INTERNET_ERROR_BASE+43
-  ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED* = INTERNET_ERROR_BASE+44
-  ERROR_INTERNET_INVALID_CA* = INTERNET_ERROR_BASE+45
-  ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP* = INTERNET_ERROR_BASE+46
-  ERROR_INTERNET_ASYNC_THREAD_FAILED* = INTERNET_ERROR_BASE+47
-  ERROR_INTERNET_REDIRECT_SCHEME_CHANGE* = INTERNET_ERROR_BASE+48
-  ERROR_INTERNET_DIALOG_PENDING* = INTERNET_ERROR_BASE+49
-  ERROR_INTERNET_RETRY_DIALOG* = INTERNET_ERROR_BASE+50
-  ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR* = INTERNET_ERROR_BASE+52
-  ERROR_INTERNET_INSERT_CDROM* = INTERNET_ERROR_BASE+53
-  ERROR_INTERNET_FORTEZZA_LOGIN_NEEDED* = INTERNET_ERROR_BASE+54
-  ERROR_INTERNET_SEC_CERT_ERRORS* = INTERNET_ERROR_BASE+55
-  ERROR_INTERNET_SEC_CERT_NO_REV* = INTERNET_ERROR_BASE+56
-  ERROR_INTERNET_SEC_CERT_REV_FAILED* = INTERNET_ERROR_BASE+57
-  ERROR_FTP_TRANSFER_IN_PROGRESS* = INTERNET_ERROR_BASE+110
-  ERROR_FTP_DROPPED* = INTERNET_ERROR_BASE+111
-  ERROR_FTP_NO_PASSIVE_MODE* = INTERNET_ERROR_BASE+112
-  ERROR_GOPHER_PROTOCOL_ERROR* = INTERNET_ERROR_BASE+130
-  ERROR_GOPHER_NOT_FILE* = INTERNET_ERROR_BASE+131
-  ERROR_GOPHER_DATA_ERROR* = INTERNET_ERROR_BASE+132
-  ERROR_GOPHER_END_OF_DATA* = INTERNET_ERROR_BASE+133
-  ERROR_GOPHER_INVALID_LOCATOR* = INTERNET_ERROR_BASE+134
-  ERROR_GOPHER_INCORRECT_LOCATOR_TYPE* = INTERNET_ERROR_BASE+135
-  ERROR_GOPHER_NOT_GOPHER_PLUS* = INTERNET_ERROR_BASE+136
-  ERROR_GOPHER_ATTRIBUTE_NOT_FOUND* = INTERNET_ERROR_BASE+137
-  ERROR_GOPHER_UNKNOWN_LOCATOR* = INTERNET_ERROR_BASE+138
-  ERROR_HTTP_HEADER_NOT_FOUND* = INTERNET_ERROR_BASE+150
-  ERROR_HTTP_DOWNLEVEL_SERVER* = INTERNET_ERROR_BASE+151
-  ERROR_HTTP_INVALID_SERVER_RESPONSE* = INTERNET_ERROR_BASE+152
-  ERROR_HTTP_INVALID_HEADER* = INTERNET_ERROR_BASE+153
-  ERROR_HTTP_INVALID_QUERY_REQUEST* = INTERNET_ERROR_BASE+154
-  ERROR_HTTP_HEADER_ALREADY_EXISTS* = INTERNET_ERROR_BASE+155
-  ERROR_HTTP_REDIRECT_FAILED* = INTERNET_ERROR_BASE+156
-  ERROR_HTTP_NOT_REDIRECTED* = INTERNET_ERROR_BASE+160
-  ERROR_HTTP_COOKIE_NEEDS_CONFIRMATION* = INTERNET_ERROR_BASE+161
-  ERROR_HTTP_COOKIE_DECLINED* = INTERNET_ERROR_BASE+162
-  ERROR_HTTP_REDIRECT_NEEDS_CONFIRMATION* = INTERNET_ERROR_BASE+168
-  ERROR_INTERNET_SECURITY_CHANNEL_ERROR* = INTERNET_ERROR_BASE+157
-  ERROR_INTERNET_UNABLE_TO_CACHE_FILE* = INTERNET_ERROR_BASE+158
-  ERROR_INTERNET_TCPIP_NOT_INSTALLED* = INTERNET_ERROR_BASE+159
-  ERROR_INTERNET_DISCONNECTED* = INTERNET_ERROR_BASE+163
-  ERROR_INTERNET_SERVER_UNREACHABLE* = INTERNET_ERROR_BASE+164
-  ERROR_INTERNET_PROXY_SERVER_UNREACHABLE* = INTERNET_ERROR_BASE+165
-  ERROR_INTERNET_BAD_AUTO_PROXY_SCRIPT* = INTERNET_ERROR_BASE+166
-  ERROR_INTERNET_UNABLE_TO_DOWNLOAD_SCRIPT* = INTERNET_ERROR_BASE+167
-  ERROR_INTERNET_SEC_INVALID_CERT* = INTERNET_ERROR_BASE+169
-  ERROR_INTERNET_SEC_CERT_REVOKED* = INTERNET_ERROR_BASE+170
-  ERROR_INTERNET_FAILED_DUETOSECURITYCHECK* = INTERNET_ERROR_BASE+171
-  ERROR_INTERNET_NOT_INITIALIZED* = INTERNET_ERROR_BASE+172
-  ERROR_INTERNET_NEED_MSN_SSPI_PKG* = INTERNET_ERROR_BASE+173
-  ERROR_INTERNET_LOGIN_FAILURE_DISPLAY_ENTITY_BODY* = INTERNET_ERROR_BASE+174
+  ERROR_INTERNET_OUT_OF_HANDLES* = INTERNET_ERROR_BASE + 1
+  ERROR_INTERNET_TIMEOUT* = INTERNET_ERROR_BASE + 2
+  ERROR_INTERNET_EXTENDED_ERROR* = INTERNET_ERROR_BASE + 3
+  ERROR_INTERNET_INTERNAL_ERROR* = INTERNET_ERROR_BASE + 4
+  ERROR_INTERNET_INVALID_URL* = INTERNET_ERROR_BASE + 5
+  ERROR_INTERNET_UNRECOGNIZED_SCHEME* = INTERNET_ERROR_BASE + 6
+  ERROR_INTERNET_NAME_NOT_RESOLVED* = INTERNET_ERROR_BASE + 7
+  ERROR_INTERNET_PROTOCOL_NOT_FOUND* = INTERNET_ERROR_BASE + 8
+  ERROR_INTERNET_INVALID_OPTION* = INTERNET_ERROR_BASE + 9
+  ERROR_INTERNET_BAD_OPTION_LENGTH* = INTERNET_ERROR_BASE + 10
+  ERROR_INTERNET_OPTION_NOT_SETTABLE* = INTERNET_ERROR_BASE + 11
+  ERROR_INTERNET_SHUTDOWN* = INTERNET_ERROR_BASE + 12
+  ERROR_INTERNET_INCORRECT_USER_NAME* = INTERNET_ERROR_BASE + 13
+  ERROR_INTERNET_INCORRECT_PASSWORD* = INTERNET_ERROR_BASE + 14
+  ERROR_INTERNET_LOGIN_FAILURE* = INTERNET_ERROR_BASE + 15
+  ERROR_INTERNET_INVALID_OPERATION* = INTERNET_ERROR_BASE + 16
+  ERROR_INTERNET_OPERATION_CANCELLED* = INTERNET_ERROR_BASE + 17
+  ERROR_INTERNET_INCORRECT_HANDLE_TYPE* = INTERNET_ERROR_BASE + 18
+  ERROR_INTERNET_INCORRECT_HANDLE_STATE* = INTERNET_ERROR_BASE + 19
+  ERROR_INTERNET_NOT_PROXY_REQUEST* = INTERNET_ERROR_BASE + 20
+  ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND* = INTERNET_ERROR_BASE + 21
+  ERROR_INTERNET_BAD_REGISTRY_PARAMETER* = INTERNET_ERROR_BASE + 22
+  ERROR_INTERNET_NO_DIRECT_ACCESS* = INTERNET_ERROR_BASE + 23
+  ERROR_INTERNET_NO_CONTEXT* = INTERNET_ERROR_BASE + 24
+  ERROR_INTERNET_NO_CALLBACK* = INTERNET_ERROR_BASE + 25
+  ERROR_INTERNET_REQUEST_PENDING* = INTERNET_ERROR_BASE + 26
+  ERROR_INTERNET_INCORRECT_FORMAT* = INTERNET_ERROR_BASE + 27
+  ERROR_INTERNET_ITEM_NOT_FOUND* = INTERNET_ERROR_BASE + 28
+  ERROR_INTERNET_CANNOT_CONNECT* = INTERNET_ERROR_BASE + 29
+  ERROR_INTERNET_CONNECTION_ABORTED* = INTERNET_ERROR_BASE + 30
+  ERROR_INTERNET_CONNECTION_RESET* = INTERNET_ERROR_BASE + 31
+  ERROR_INTERNET_FORCE_RETRY* = INTERNET_ERROR_BASE + 32
+  ERROR_INTERNET_INVALID_PROXY_REQUEST* = INTERNET_ERROR_BASE + 33
+  ERROR_INTERNET_NEED_UI* = INTERNET_ERROR_BASE + 34
+  ERROR_INTERNET_HANDLE_EXISTS* = INTERNET_ERROR_BASE + 36
+  ERROR_INTERNET_SEC_CERT_DATE_INVALID* = INTERNET_ERROR_BASE + 37
+  ERROR_INTERNET_SEC_CERT_CN_INVALID* = INTERNET_ERROR_BASE + 38
+  ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR* = INTERNET_ERROR_BASE + 39
+  ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR* = INTERNET_ERROR_BASE + 40
+  ERROR_INTERNET_MIXED_SECURITY* = INTERNET_ERROR_BASE + 41
+  ERROR_INTERNET_CHG_POST_IS_NON_SECURE* = INTERNET_ERROR_BASE + 42
+  ERROR_INTERNET_POST_IS_NON_SECURE* = INTERNET_ERROR_BASE + 43
+  ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED* = INTERNET_ERROR_BASE + 44
+  ERROR_INTERNET_INVALID_CA* = INTERNET_ERROR_BASE + 45
+  ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP* = INTERNET_ERROR_BASE + 46
+  ERROR_INTERNET_ASYNC_THREAD_FAILED* = INTERNET_ERROR_BASE + 47
+  ERROR_INTERNET_REDIRECT_SCHEME_CHANGE* = INTERNET_ERROR_BASE + 48
+  ERROR_INTERNET_DIALOG_PENDING* = INTERNET_ERROR_BASE + 49
+  ERROR_INTERNET_RETRY_DIALOG* = INTERNET_ERROR_BASE + 50
+  ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR* = INTERNET_ERROR_BASE + 52
+  ERROR_INTERNET_INSERT_CDROM* = INTERNET_ERROR_BASE + 53
+  ERROR_INTERNET_FORTEZZA_LOGIN_NEEDED* = INTERNET_ERROR_BASE + 54
+  ERROR_INTERNET_SEC_CERT_ERRORS* = INTERNET_ERROR_BASE + 55
+  ERROR_INTERNET_SEC_CERT_NO_REV* = INTERNET_ERROR_BASE + 56
+  ERROR_INTERNET_SEC_CERT_REV_FAILED* = INTERNET_ERROR_BASE + 57
+  ERROR_FTP_TRANSFER_IN_PROGRESS* = INTERNET_ERROR_BASE + 110
+  ERROR_FTP_DROPPED* = INTERNET_ERROR_BASE + 111
+  ERROR_FTP_NO_PASSIVE_MODE* = INTERNET_ERROR_BASE + 112
+  ERROR_GOPHER_PROTOCOL_ERROR* = INTERNET_ERROR_BASE + 130
+  ERROR_GOPHER_NOT_FILE* = INTERNET_ERROR_BASE + 131
+  ERROR_GOPHER_DATA_ERROR* = INTERNET_ERROR_BASE + 132
+  ERROR_GOPHER_END_OF_DATA* = INTERNET_ERROR_BASE + 133
+  ERROR_GOPHER_INVALID_LOCATOR* = INTERNET_ERROR_BASE + 134
+  ERROR_GOPHER_INCORRECT_LOCATOR_TYPE* = INTERNET_ERROR_BASE + 135
+  ERROR_GOPHER_NOT_GOPHER_PLUS* = INTERNET_ERROR_BASE + 136
+  ERROR_GOPHER_ATTRIBUTE_NOT_FOUND* = INTERNET_ERROR_BASE + 137
+  ERROR_GOPHER_UNKNOWN_LOCATOR* = INTERNET_ERROR_BASE + 138
+  ERROR_HTTP_HEADER_NOT_FOUND* = INTERNET_ERROR_BASE + 150
+  ERROR_HTTP_DOWNLEVEL_SERVER* = INTERNET_ERROR_BASE + 151
+  ERROR_HTTP_INVALID_SERVER_RESPONSE* = INTERNET_ERROR_BASE + 152
+  ERROR_HTTP_INVALID_HEADER* = INTERNET_ERROR_BASE + 153
+  ERROR_HTTP_INVALID_QUERY_REQUEST* = INTERNET_ERROR_BASE + 154
+  ERROR_HTTP_HEADER_ALREADY_EXISTS* = INTERNET_ERROR_BASE + 155
+  ERROR_HTTP_REDIRECT_FAILED* = INTERNET_ERROR_BASE + 156
+  ERROR_HTTP_NOT_REDIRECTED* = INTERNET_ERROR_BASE + 160
+  ERROR_HTTP_COOKIE_NEEDS_CONFIRMATION* = INTERNET_ERROR_BASE + 161
+  ERROR_HTTP_COOKIE_DECLINED* = INTERNET_ERROR_BASE + 162
+  ERROR_HTTP_REDIRECT_NEEDS_CONFIRMATION* = INTERNET_ERROR_BASE + 168
+  ERROR_INTERNET_SECURITY_CHANNEL_ERROR* = INTERNET_ERROR_BASE + 157
+  ERROR_INTERNET_UNABLE_TO_CACHE_FILE* = INTERNET_ERROR_BASE + 158
+  ERROR_INTERNET_TCPIP_NOT_INSTALLED* = INTERNET_ERROR_BASE + 159
+  ERROR_INTERNET_DISCONNECTED* = INTERNET_ERROR_BASE + 163
+  ERROR_INTERNET_SERVER_UNREACHABLE* = INTERNET_ERROR_BASE + 164
+  ERROR_INTERNET_PROXY_SERVER_UNREACHABLE* = INTERNET_ERROR_BASE + 165
+  ERROR_INTERNET_BAD_AUTO_PROXY_SCRIPT* = INTERNET_ERROR_BASE + 166
+  ERROR_INTERNET_UNABLE_TO_DOWNLOAD_SCRIPT* = INTERNET_ERROR_BASE + 167
+  ERROR_INTERNET_SEC_INVALID_CERT* = INTERNET_ERROR_BASE + 169
+  ERROR_INTERNET_SEC_CERT_REVOKED* = INTERNET_ERROR_BASE + 170
+  ERROR_INTERNET_FAILED_DUETOSECURITYCHECK* = INTERNET_ERROR_BASE + 171
+  ERROR_INTERNET_NOT_INITIALIZED* = INTERNET_ERROR_BASE + 172
+  ERROR_INTERNET_NEED_MSN_SSPI_PKG* = INTERNET_ERROR_BASE + 173
+  ERROR_INTERNET_LOGIN_FAILURE_DISPLAY_ENTITY_BODY* = INTERNET_ERROR_BASE + 174
   INTERNET_ERROR_LAST* = ERROR_INTERNET_LOGIN_FAILURE_DISPLAY_ENTITY_BODY
   NORMAL_CACHE_ENTRY* = 0x00000001
   STICKY_CACHE_ENTRY* = 0x00000004
@@ -972,7 +1052,9 @@
   SPARSE_CACHE_ENTRY* = 0x00010000
   COOKIE_CACHE_ENTRY* = 0x00100000
   URLHISTORY_CACHE_ENTRY* = 0x00200000
-  URLCACHE_FIND_DEFAULT_FILTER* = NORMAL_CACHE_ENTRY or COOKIE_CACHE_ENTRY or URLHISTORY_CACHE_ENTRY or TRACK_OFFLINE_CACHE_ENTRY or TRACK_ONLINE_CACHE_ENTRY or STICKY_CACHE_ENTRY
+  URLCACHE_FIND_DEFAULT_FILTER* =
+    NORMAL_CACHE_ENTRY or COOKIE_CACHE_ENTRY or URLHISTORY_CACHE_ENTRY or
+    TRACK_OFFLINE_CACHE_ENTRY or TRACK_ONLINE_CACHE_ENTRY or STICKY_CACHE_ENTRY
   CACHEGROUP_ATTRIBUTE_GET_ALL* = 0xffffffff'i32
   CACHEGROUP_ATTRIBUTE_BASIC* = 0x00000001
   CACHEGROUP_ATTRIBUTE_FLAG* = 0x00000002
@@ -986,7 +1068,9 @@
   CACHEGROUP_SEARCH_ALL* = 0x00000000
   CACHEGROUP_SEARCH_BYURL* = 0x00000001
   CACHEGROUP_TYPE_INVALID* = 0x00000001
-  CACHEGROUP_READWRITE_MASK* = CACHEGROUP_ATTRIBUTE_TYPE or CACHEGROUP_ATTRIBUTE_QUOTA or CACHEGROUP_ATTRIBUTE_GROUPNAME or CACHEGROUP_ATTRIBUTE_STORAGE
+  CACHEGROUP_READWRITE_MASK* =
+    CACHEGROUP_ATTRIBUTE_TYPE or CACHEGROUP_ATTRIBUTE_QUOTA or
+    CACHEGROUP_ATTRIBUTE_GROUPNAME or CACHEGROUP_ATTRIBUTE_STORAGE
   CACHE_ENTRY_ATTRIBUTE_FC* = 0x00000004
   CACHE_ENTRY_HITRATE_FC* = 0x00000010
   CACHE_ENTRY_MODTIME_FC* = 0x00000040
@@ -1006,7 +1090,9 @@
   INTERNET_AUTODIAL_FORCE_UNATTENDED* = 2
   INTERNET_AUTODIAL_FAILIFSECURITYCHECK* = 4
   INTERNET_AUTODIAL_OVERRIDE_NET_PRESENT* = 8
-  INTERNET_AUTODIAL_FLAGS_MASK* = INTERNET_AUTODIAL_FORCE_ONLINE or INTERNET_AUTODIAL_FORCE_UNATTENDED or INTERNET_AUTODIAL_FAILIFSECURITYCHECK or INTERNET_AUTODIAL_OVERRIDE_NET_PRESENT
+  INTERNET_AUTODIAL_FLAGS_MASK* =
+    INTERNET_AUTODIAL_FORCE_ONLINE or INTERNET_AUTODIAL_FORCE_UNATTENDED or
+    INTERNET_AUTODIAL_FAILIFSECURITYCHECK or INTERNET_AUTODIAL_OVERRIDE_NET_PRESENT
   PROXY_AUTO_DETECT_TYPE_DHCP* = 1
   PROXY_AUTO_DETECT_TYPE_DNS_A* = 2
   INTERNET_CONNECTION_MODEM* = 0x01
@@ -1047,14 +1133,31 @@
   INTERNET_MAX_URL_LENGTH* = 2084
   INTERNET_INVALID_STATUS_CALLBACK* = cast[INTERNET_STATUS_CALLBACK](-1)
 type
-  GOPHER_ATTRIBUTE_ENUMERATOR* = proc (lpAttributeInfo: LPGOPHER_ATTRIBUTE_TYPE, dwError: DWORD): WINBOOL {.stdcall.}
-  PFN_AUTH_NOTIFY* = proc (P1: DWORD_PTR, P2: DWORD, P3: LPVOID): DWORD {.stdcall.}
+  GOPHER_ATTRIBUTE_ENUMERATOR* =
+    proc(lpAttributeInfo: LPGOPHER_ATTRIBUTE_TYPE, dwError: DWORD): WINBOOL {.stdcall.}
+  PFN_AUTH_NOTIFY* = proc(P1: DWORD_PTR, P2: DWORD, P3: LPVOID): DWORD {.stdcall.}
   AutoProxyHelperFunctions* {.pure.} = object
     lpVtbl*: ptr AutoProxyHelperVtbl
-  pfnInternetInitializeAutoProxyDll* = proc (dwVersion: DWORD, lpszDownloadedTempFile: LPSTR, lpszMime: LPSTR, lpAutoProxyCallbacks: ptr AutoProxyHelperFunctions, lpAutoProxyScriptBuffer: LPAUTO_PROXY_SCRIPT_BUFFER): WINBOOL {.stdcall.}
-  pfnInternetDeInitializeAutoProxyDll* = proc (lpszMime: LPSTR, dwReserved: DWORD): WINBOOL {.stdcall.}
-  pfnInternetGetProxyInfo* = proc (lpszUrl: LPCSTR, dwUrlLength: DWORD, lpszUrlHostName: LPSTR, dwUrlHostNameLength: DWORD, lplpszProxyHostName: ptr LPSTR, lpdwProxyHostNameLength: LPDWORD): WINBOOL {.stdcall.}
-  PFN_DIAL_HANDLER* = proc (P1: HWND, P2: LPCSTR, P3: DWORD, P4: LPDWORD): DWORD {.stdcall.}
+
+  pfnInternetInitializeAutoProxyDll* = proc(
+    dwVersion: DWORD,
+    lpszDownloadedTempFile: LPSTR,
+    lpszMime: LPSTR,
+    lpAutoProxyCallbacks: ptr AutoProxyHelperFunctions,
+    lpAutoProxyScriptBuffer: LPAUTO_PROXY_SCRIPT_BUFFER,
+  ): WINBOOL {.stdcall.}
+  pfnInternetDeInitializeAutoProxyDll* =
+    proc(lpszMime: LPSTR, dwReserved: DWORD): WINBOOL {.stdcall.}
+  pfnInternetGetProxyInfo* = proc(
+    lpszUrl: LPCSTR,
+    dwUrlLength: DWORD,
+    lpszUrlHostName: LPSTR,
+    dwUrlHostNameLength: DWORD,
+    lplpszProxyHostName: ptr LPSTR,
+    lpdwProxyHostNameLength: LPDWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_DIAL_HANDLER* =
+    proc(P1: HWND, P2: LPCSTR, P3: DWORD, P4: LPDWORD): DWORD {.stdcall.}
   IncomingCookieState* {.pure.} = object
     cSession*: int32
     cPersistent*: int32
@@ -1063,204 +1166,1112 @@
     cDowngraded*: int32
     cBlocked*: int32
     pszLocation*: ptr char
+
   OutgoingCookieState* {.pure.} = object
     cSent*: int32
     cSuppressed*: int32
     pszLocation*: ptr char
+
   InternetCookieHistory* {.pure.} = object
     fAccepted*: WINBOOL
     fLeashed*: WINBOOL
     fDowngraded*: WINBOOL
     fRejected*: WINBOOL
+
   CookieDecision* {.pure.} = object
     dwCookieState*: DWORD
     fAllowSession*: WINBOOL
+
   INTERNET_AUTH_NOTIFY_DATA* {.pure.} = object
     cbStruct*: DWORD
     dwOptions*: DWORD
     pfnNotify*: PFN_AUTH_NOTIFY
     dwContext*: DWORD_PTR
+
   AutoProxyHelperVtbl* {.pure.} = object
     IsResolvable*: proc(lpszHost: LPSTR): WINBOOL {.stdcall.}
-    GetIPAddress*: proc(lpszIPAddress: LPSTR, lpdwIPAddressSize: LPDWORD): DWORD {.stdcall.}
-    ResolveHostName*: proc(lpszHostName: LPSTR, lpszIPAddress: LPSTR, lpdwIPAddressSize: LPDWORD): DWORD {.stdcall.}
-    IsInNet*: proc(lpszIPAddress: LPSTR, lpszDest: LPSTR, lpszMask: LPSTR): WINBOOL {.stdcall.}
-proc InternetTimeFromSystemTimeA*(pst: ptr SYSTEMTIME, dwRFC: DWORD, lpszTime: LPSTR, cbTime: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetTimeFromSystemTimeW*(pst: ptr SYSTEMTIME, dwRFC: DWORD, lpszTime: LPWSTR, cbTime: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetTimeToSystemTimeA*(lpszTime: LPCSTR, pst: ptr SYSTEMTIME, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetTimeToSystemTimeW*(lpszTime: LPCWSTR, pst: ptr SYSTEMTIME, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetCrackUrlA*(lpszUrl: LPCSTR, dwUrlLength: DWORD, dwFlags: DWORD, lpUrlComponents: LPURL_COMPONENTSA): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetCrackUrlW*(lpszUrl: LPCWSTR, dwUrlLength: DWORD, dwFlags: DWORD, lpUrlComponents: LPURL_COMPONENTSW): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetCreateUrlA*(lpUrlComponents: LPURL_COMPONENTSA, dwFlags: DWORD, lpszUrl: LPSTR, lpdwUrlLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetCreateUrlW*(lpUrlComponents: LPURL_COMPONENTSW, dwFlags: DWORD, lpszUrl: LPWSTR, lpdwUrlLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetCanonicalizeUrlA*(lpszUrl: LPCSTR, lpszBuffer: LPSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetCanonicalizeUrlW*(lpszUrl: LPCWSTR, lpszBuffer: LPWSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetCombineUrlA*(lpszBaseUrl: LPCSTR, lpszRelativeUrl: LPCSTR, lpszBuffer: LPSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetCombineUrlW*(lpszBaseUrl: LPCWSTR, lpszRelativeUrl: LPCWSTR, lpszBuffer: LPWSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetOpenA*(lpszAgent: LPCSTR, dwAccessType: DWORD, lpszProxy: LPCSTR, lpszProxyBypass: LPCSTR, dwFlags: DWORD): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetOpenW*(lpszAgent: LPCWSTR, dwAccessType: DWORD, lpszProxy: LPCWSTR, lpszProxyBypass: LPCWSTR, dwFlags: DWORD): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetCloseHandle*(hInternet: HINTERNET): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetConnectA*(hInternet: HINTERNET, lpszServerName: LPCSTR, nServerPort: INTERNET_PORT, lpszUserName: LPCSTR, lpszPassword: LPCSTR, dwService: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetConnectW*(hInternet: HINTERNET, lpszServerName: LPCWSTR, nServerPort: INTERNET_PORT, lpszUserName: LPCWSTR, lpszPassword: LPCWSTR, dwService: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetOpenUrlA*(hInternet: HINTERNET, lpszUrl: LPCSTR, lpszHeaders: LPCSTR, dwHeadersLength: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetOpenUrlW*(hInternet: HINTERNET, lpszUrl: LPCWSTR, lpszHeaders: LPCWSTR, dwHeadersLength: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetReadFile*(hFile: HINTERNET, lpBuffer: LPVOID, dwNumberOfBytesToRead: DWORD, lpdwNumberOfBytesRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetReadFileExA*(hFile: HINTERNET, lpBuffersOut: LPINTERNET_BUFFERSA, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetReadFileExW*(hFile: HINTERNET, lpBuffersOut: LPINTERNET_BUFFERSW, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetFilePointer*(hFile: HINTERNET, lDistanceToMove: LONG, pReserved: PVOID, dwMoveMethod: DWORD, dwContext: DWORD_PTR): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetWriteFile*(hFile: HINTERNET, lpBuffer: LPCVOID, dwNumberOfBytesToWrite: DWORD, lpdwNumberOfBytesWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetQueryDataAvailable*(hFile: HINTERNET, lpdwNumberOfBytesAvailable: LPDWORD, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetFindNextFileA*(hFind: HINTERNET, lpvFindData: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetFindNextFileW*(hFind: HINTERNET, lpvFindData: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetQueryOptionA*(hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetQueryOptionW*(hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetOptionA*(hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetOptionW*(hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetOptionExA*(hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetOptionExW*(hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetLockRequestFile*(hInternet: HINTERNET, lphLockRequestInfo: ptr HANDLE): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetUnlockRequestFile*(hLockRequestInfo: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetGetLastResponseInfoA*(lpdwError: LPDWORD, lpszBuffer: LPSTR, lpdwBufferLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetGetLastResponseInfoW*(lpdwError: LPDWORD, lpszBuffer: LPWSTR, lpdwBufferLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetStatusCallbackA*(hInternet: HINTERNET, lpfnInternetCallback: INTERNET_STATUS_CALLBACK): INTERNET_STATUS_CALLBACK {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetStatusCallbackW*(hInternet: HINTERNET, lpfnInternetCallback: INTERNET_STATUS_CALLBACK): INTERNET_STATUS_CALLBACK {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpFindFirstFileA*(hConnect: HINTERNET, lpszSearchFile: LPCSTR, lpFindFileData: LPWIN32_FIND_DATAA, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpFindFirstFileW*(hConnect: HINTERNET, lpszSearchFile: LPCWSTR, lpFindFileData: LPWIN32_FIND_DATAW, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpGetFileA*(hConnect: HINTERNET, lpszRemoteFile: LPCSTR, lpszNewFile: LPCSTR, fFailIfExists: WINBOOL, dwFlagsAndAttributes: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpGetFileW*(hConnect: HINTERNET, lpszRemoteFile: LPCWSTR, lpszNewFile: LPCWSTR, fFailIfExists: WINBOOL, dwFlagsAndAttributes: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpPutFileA*(hConnect: HINTERNET, lpszLocalFile: LPCSTR, lpszNewRemoteFile: LPCSTR, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpPutFileW*(hConnect: HINTERNET, lpszLocalFile: LPCWSTR, lpszNewRemoteFile: LPCWSTR, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpGetFileEx*(hFtpSession: HINTERNET, lpszRemoteFile: LPCSTR, lpszNewFile: LPCWSTR, fFailIfExists: WINBOOL, dwFlagsAndAttributes: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpPutFileEx*(hFtpSession: HINTERNET, lpszLocalFile: LPCWSTR, lpszNewRemoteFile: LPCSTR, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpDeleteFileA*(hConnect: HINTERNET, lpszFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpDeleteFileW*(hConnect: HINTERNET, lpszFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpRenameFileA*(hConnect: HINTERNET, lpszExisting: LPCSTR, lpszNew: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpRenameFileW*(hConnect: HINTERNET, lpszExisting: LPCWSTR, lpszNew: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpOpenFileA*(hConnect: HINTERNET, lpszFileName: LPCSTR, dwAccess: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpOpenFileW*(hConnect: HINTERNET, lpszFileName: LPCWSTR, dwAccess: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpCreateDirectoryA*(hConnect: HINTERNET, lpszDirectory: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpCreateDirectoryW*(hConnect: HINTERNET, lpszDirectory: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpRemoveDirectoryA*(hConnect: HINTERNET, lpszDirectory: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpRemoveDirectoryW*(hConnect: HINTERNET, lpszDirectory: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpSetCurrentDirectoryA*(hConnect: HINTERNET, lpszDirectory: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpSetCurrentDirectoryW*(hConnect: HINTERNET, lpszDirectory: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpGetCurrentDirectoryA*(hConnect: HINTERNET, lpszCurrentDirectory: LPSTR, lpdwCurrentDirectory: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpGetCurrentDirectoryW*(hConnect: HINTERNET, lpszCurrentDirectory: LPWSTR, lpdwCurrentDirectory: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpCommandA*(hConnect: HINTERNET, fExpectResponse: WINBOOL, dwFlags: DWORD, lpszCommand: LPCSTR, dwContext: DWORD_PTR, phFtpCommand: ptr HINTERNET): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpCommandW*(hConnect: HINTERNET, fExpectResponse: WINBOOL, dwFlags: DWORD, lpszCommand: LPCWSTR, dwContext: DWORD_PTR, phFtpCommand: ptr HINTERNET): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FtpGetFileSize*(hFile: HINTERNET, lpdwFileSizeHigh: LPDWORD): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GopherCreateLocatorA*(lpszHost: LPCSTR, nServerPort: INTERNET_PORT, lpszDisplayString: LPCSTR, lpszSelectorString: LPCSTR, dwGopherType: DWORD, lpszLocator: LPSTR, lpdwBufferLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GopherCreateLocatorW*(lpszHost: LPCWSTR, nServerPort: INTERNET_PORT, lpszDisplayString: LPCWSTR, lpszSelectorString: LPCWSTR, dwGopherType: DWORD, lpszLocator: LPWSTR, lpdwBufferLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GopherGetLocatorTypeA*(lpszLocator: LPCSTR, lpdwGopherType: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GopherGetLocatorTypeW*(lpszLocator: LPCWSTR, lpdwGopherType: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GopherFindFirstFileA*(hConnect: HINTERNET, lpszLocator: LPCSTR, lpszSearchString: LPCSTR, lpFindData: LPGOPHER_FIND_DATAA, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GopherFindFirstFileW*(hConnect: HINTERNET, lpszLocator: LPCWSTR, lpszSearchString: LPCWSTR, lpFindData: LPGOPHER_FIND_DATAW, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GopherOpenFileA*(hConnect: HINTERNET, lpszLocator: LPCSTR, lpszView: LPCSTR, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GopherOpenFileW*(hConnect: HINTERNET, lpszLocator: LPCWSTR, lpszView: LPCWSTR, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GopherGetAttributeA*(hConnect: HINTERNET, lpszLocator: LPCSTR, lpszAttributeName: LPCSTR, lpBuffer: LPBYTE, dwBufferLength: DWORD, lpdwCharactersReturned: LPDWORD, lpfnEnumerator: GOPHER_ATTRIBUTE_ENUMERATOR, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GopherGetAttributeW*(hConnect: HINTERNET, lpszLocator: LPCWSTR, lpszAttributeName: LPCWSTR, lpBuffer: LPBYTE, dwBufferLength: DWORD, lpdwCharactersReturned: LPDWORD, lpfnEnumerator: GOPHER_ATTRIBUTE_ENUMERATOR, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc HttpOpenRequestA*(hConnect: HINTERNET, lpszVerb: LPCSTR, lpszObjectName: LPCSTR, lpszVersion: LPCSTR, lpszReferrer: LPCSTR, lplpszAcceptTypes: ptr LPCSTR, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc HttpOpenRequestW*(hConnect: HINTERNET, lpszVerb: LPCWSTR, lpszObjectName: LPCWSTR, lpszVersion: LPCWSTR, lpszReferrer: LPCWSTR, lplpszAcceptTypes: ptr LPCWSTR, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
-proc HttpAddRequestHeadersA*(hRequest: HINTERNET, lpszHeaders: LPCSTR, dwHeadersLength: DWORD, dwModifiers: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc HttpAddRequestHeadersW*(hRequest: HINTERNET, lpszHeaders: LPCWSTR, dwHeadersLength: DWORD, dwModifiers: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc HttpSendRequestA*(hRequest: HINTERNET, lpszHeaders: LPCSTR, dwHeadersLength: DWORD, lpOptional: LPVOID, dwOptionalLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc HttpSendRequestW*(hRequest: HINTERNET, lpszHeaders: LPCWSTR, dwHeadersLength: DWORD, lpOptional: LPVOID, dwOptionalLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc HttpSendRequestExA*(hRequest: HINTERNET, lpBuffersIn: LPINTERNET_BUFFERSA, lpBuffersOut: LPINTERNET_BUFFERSA, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc HttpSendRequestExW*(hRequest: HINTERNET, lpBuffersIn: LPINTERNET_BUFFERSW, lpBuffersOut: LPINTERNET_BUFFERSW, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc HttpEndRequestA*(hRequest: HINTERNET, lpBuffersOut: LPINTERNET_BUFFERSA, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc HttpEndRequestW*(hRequest: HINTERNET, lpBuffersOut: LPINTERNET_BUFFERSW, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc HttpQueryInfoA*(hRequest: HINTERNET, dwInfoLevel: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD, lpdwIndex: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc HttpQueryInfoW*(hRequest: HINTERNET, dwInfoLevel: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD, lpdwIndex: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetCookieA*(lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetCookieW*(lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetGetCookieA*(lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPSTR, lpdwSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetGetCookieW*(lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPWSTR, lpdwSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetCookieExA*(lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPCSTR, dwFlags: DWORD, dwReserved: DWORD_PTR): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetCookieExW*(lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPCWSTR, dwFlags: DWORD, dwReserved: DWORD_PTR): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetGetCookieExA*(lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPSTR, lpdwSize: LPDWORD, dwFlags: DWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetGetCookieExW*(lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPWSTR, lpdwSize: LPDWORD, dwFlags: DWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetAttemptConnect*(dwReserved: DWORD): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetCheckConnectionA*(lpszUrl: LPCSTR, dwFlags: DWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetCheckConnectionW*(lpszUrl: LPCWSTR, dwFlags: DWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc ResumeSuspendedDownload*(hRequest: HINTERNET, dwResultCode: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetErrorDlg*(hWnd: HWND, hRequest: HINTERNET, dwError: DWORD, dwFlags: DWORD, lppvData: ptr LPVOID): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetConfirmZoneCrossingA*(hWnd: HWND, szUrlPrev: LPSTR, szUrlNew: LPSTR, bPost: WINBOOL): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetConfirmZoneCrossingW*(hWnd: HWND, szUrlPrev: LPWSTR, szUrlNew: LPWSTR, bPost: WINBOOL): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
-proc CreateUrlCacheEntryA*(lpszUrlName: LPCSTR, dwExpectedFileSize: DWORD, lpszFileExtension: LPCSTR, lpszFileName: LPSTR, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc CreateUrlCacheEntryW*(lpszUrlName: LPCWSTR, dwExpectedFileSize: DWORD, lpszFileExtension: LPCWSTR, lpszFileName: LPWSTR, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc CommitUrlCacheEntryA*(lpszUrlName: LPCSTR, lpszLocalFileName: LPCSTR, ExpireTime: FILETIME, LastModifiedTime: FILETIME, CacheEntryType: DWORD, lpHeaderInfo: LPBYTE, dwHeaderSize: DWORD, lpszFileExtension: LPCSTR, lpszOriginalUrl: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc CommitUrlCacheEntryW*(lpszUrlName: LPCWSTR, lpszLocalFileName: LPCWSTR, ExpireTime: FILETIME, LastModifiedTime: FILETIME, CacheEntryType: DWORD, lpszHeaderInfo: LPWSTR, dwHeaders: DWORD, lpszFileExtension: LPCWSTR, lpszOriginalUrl: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc RetrieveUrlCacheEntryFileA*(lpszUrlName: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc RetrieveUrlCacheEntryFileW*(lpszUrlName: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc UnlockUrlCacheEntryFileA*(lpszUrlName: LPCSTR, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc UnlockUrlCacheEntryFileW*(lpszUrlName: LPCWSTR, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc RetrieveUrlCacheEntryStreamA*(lpszUrlName: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD, fRandomRead: WINBOOL, dwReserved: DWORD): HANDLE {.winapi, stdcall, dynlib: "wininet", importc.}
-proc RetrieveUrlCacheEntryStreamW*(lpszUrlName: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD, fRandomRead: WINBOOL, dwReserved: DWORD): HANDLE {.winapi, stdcall, dynlib: "wininet", importc.}
-proc ReadUrlCacheEntryStream*(hUrlCacheStream: HANDLE, dwLocation: DWORD, lpBuffer: LPVOID, lpdwLen: LPDWORD, Reserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc UnlockUrlCacheEntryStream*(hUrlCacheStream: HANDLE, Reserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GetUrlCacheEntryInfoA*(lpszUrlName: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GetUrlCacheEntryInfoW*(lpszUrlName: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FindFirstUrlCacheGroup*(dwFlags: DWORD, dwFilter: DWORD, lpSearchCondition: LPVOID, dwSearchCondition: DWORD, lpGroupId: ptr GROUPID, lpReserved: LPVOID): HANDLE {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FindNextUrlCacheGroup*(hFind: HANDLE, lpGroupId: ptr GROUPID, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GetUrlCacheGroupAttributeA*(gid: GROUPID, dwFlags: DWORD, dwAttributes: DWORD, lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOA, lpdwGroupInfo: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GetUrlCacheGroupAttributeW*(gid: GROUPID, dwFlags: DWORD, dwAttributes: DWORD, lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOW, lpdwGroupInfo: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc SetUrlCacheGroupAttributeA*(gid: GROUPID, dwFlags: DWORD, dwAttributes: DWORD, lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOA, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc SetUrlCacheGroupAttributeW*(gid: GROUPID, dwFlags: DWORD, dwAttributes: DWORD, lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOW, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc CreateUrlCacheGroup*(dwFlags: DWORD, lpReserved: LPVOID): GROUPID {.winapi, stdcall, dynlib: "wininet", importc.}
-proc DeleteUrlCacheGroup*(GroupId: GROUPID, dwFlags: DWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GetUrlCacheEntryInfoExA*(lpszUrl: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD, lpszRedirectUrl: LPSTR, lpcbRedirectUrl: LPDWORD, lpReserved: LPVOID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc GetUrlCacheEntryInfoExW*(lpszUrl: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD, lpszRedirectUrl: LPWSTR, lpcbRedirectUrl: LPDWORD, lpReserved: LPVOID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc SetUrlCacheEntryInfoA*(lpszUrlName: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, dwFieldControl: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc SetUrlCacheEntryInfoW*(lpszUrlName: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, dwFieldControl: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc SetUrlCacheEntryGroupA*(lpszUrlName: LPCSTR, dwFlags: DWORD, GroupId: GROUPID, pbGroupAttributes: LPBYTE, cbGroupAttributes: DWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc SetUrlCacheEntryGroupW*(lpszUrlName: LPCWSTR, dwFlags: DWORD, GroupId: GROUPID, pbGroupAttributes: LPBYTE, cbGroupAttributes: DWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FindFirstUrlCacheEntryExA*(lpszUrlSearchPattern: LPCSTR, dwFlags: DWORD, dwFilter: DWORD, GroupId: GROUPID, lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbEntryInfo: LPDWORD, lpGroupAttributes: LPVOID, lpcbGroupAttributes: LPDWORD, lpReserved: LPVOID): HANDLE {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FindFirstUrlCacheEntryExW*(lpszUrlSearchPattern: LPCWSTR, dwFlags: DWORD, dwFilter: DWORD, GroupId: GROUPID, lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbEntryInfo: LPDWORD, lpGroupAttributes: LPVOID, lpcbGroupAttributes: LPDWORD, lpReserved: LPVOID): HANDLE {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FindNextUrlCacheEntryExA*(hEnumHandle: HANDLE, lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbEntryInfo: LPDWORD, lpGroupAttributes: LPVOID, lpcbGroupAttributes: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FindNextUrlCacheEntryExW*(hEnumHandle: HANDLE, lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbEntryInfo: LPDWORD, lpGroupAttributes: LPVOID, lpcbGroupAttributes: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FindFirstUrlCacheEntryA*(lpszUrlSearchPattern: LPCSTR, lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD): HANDLE {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FindFirstUrlCacheEntryW*(lpszUrlSearchPattern: LPCWSTR, lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD): HANDLE {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FindNextUrlCacheEntryA*(hEnumHandle: HANDLE, lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FindNextUrlCacheEntryW*(hEnumHandle: HANDLE, lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc FindCloseUrlCache*(hEnumHandle: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc DeleteUrlCacheEntryA*(lpszUrlName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc DeleteUrlCacheEntryW*(lpszUrlName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetDialA*(hwndParent: HWND, lpszConnectoid: LPSTR, dwFlags: DWORD, lpdwConnection: ptr DWORD_PTR, dwReserved: DWORD): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetDialW*(hwndParent: HWND, lpszConnectoid: LPWSTR, dwFlags: DWORD, lpdwConnection: ptr DWORD_PTR, dwReserved: DWORD): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetHangUp*(dwConnection: DWORD_PTR, dwReserved: DWORD): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetGoOnlineA*(lpszURL: LPSTR, hwndParent: HWND, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetGoOnlineW*(lpszURL: LPWSTR, hwndParent: HWND, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetAutodial*(dwFlags: DWORD, hwndParent: HWND): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetAutodialHangup*(dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetGetConnectedState*(lpdwFlags: LPDWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetGetConnectedStateExA*(lpdwFlags: LPDWORD, lpszConnectionName: LPSTR, dwBufLen: DWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetGetConnectedStateExW*(lpdwFlags: LPDWORD, lpszConnectionName: LPWSTR, dwBufLen: DWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetInitializeAutoProxyDll*(dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc DetectAutoProxyUrl*(lpszAutoProxyUrl: LPSTR, dwAutoProxyUrlLength: DWORD, dwDetectFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc CreateMD5SSOHash*(pszChallengeInfo: PWSTR, pwszRealm: PWSTR, pwszTarget: PWSTR, pbHexHash: PBYTE): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetDialStateA*(lpszConnectoid: LPCSTR, dwState: DWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetDialStateW*(lpszConnectoid: LPCWSTR, dwState: DWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetPerSiteCookieDecisionA*(pchHostName: LPCSTR, dwDecision: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetSetPerSiteCookieDecisionW*(pchHostName: LPCWSTR, dwDecision: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetGetPerSiteCookieDecisionA*(pchHostName: LPCSTR, pResult: ptr int32): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetGetPerSiteCookieDecisionW*(pchHostName: LPCWSTR, pResult: ptr int32): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetClearAllPerSiteCookieDecisions*(): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetEnumPerSiteCookieDecisionA*(pszSiteName: LPSTR, pcSiteNameSize: ptr int32, pdwDecision: ptr int32, dwIndex: int32): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc InternetEnumPerSiteCookieDecisionW*(pszSiteName: LPWSTR, pcSiteNameSize: ptr int32, pdwDecision: ptr int32, dwIndex: int32): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
-proc PrivacySetZonePreferenceW*(dwZone: DWORD, dwType: DWORD, dwTemplate: DWORD, pszPreference: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
-proc PrivacyGetZonePreferenceW*(dwZone: DWORD, dwType: DWORD, pdwTemplate: LPDWORD, pszBuffer: LPWSTR, pdwBufferLength: LPDWORD): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
-proc `dwReserved=`*(self: var INTERNET_CACHE_ENTRY_INFOA, x: DWORD) {.inline.} = self.union1.dwReserved = x
-proc dwReserved*(self: INTERNET_CACHE_ENTRY_INFOA): DWORD {.inline.} = self.union1.dwReserved
-proc dwReserved*(self: var INTERNET_CACHE_ENTRY_INFOA): var DWORD {.inline.} = self.union1.dwReserved
-proc `dwExemptDelta=`*(self: var INTERNET_CACHE_ENTRY_INFOA, x: DWORD) {.inline.} = self.union1.dwExemptDelta = x
-proc dwExemptDelta*(self: INTERNET_CACHE_ENTRY_INFOA): DWORD {.inline.} = self.union1.dwExemptDelta
-proc dwExemptDelta*(self: var INTERNET_CACHE_ENTRY_INFOA): var DWORD {.inline.} = self.union1.dwExemptDelta
-proc `dwReserved=`*(self: var INTERNET_CACHE_ENTRY_INFOW, x: DWORD) {.inline.} = self.union1.dwReserved = x
-proc dwReserved*(self: INTERNET_CACHE_ENTRY_INFOW): DWORD {.inline.} = self.union1.dwReserved
-proc dwReserved*(self: var INTERNET_CACHE_ENTRY_INFOW): var DWORD {.inline.} = self.union1.dwReserved
-proc `dwExemptDelta=`*(self: var INTERNET_CACHE_ENTRY_INFOW, x: DWORD) {.inline.} = self.union1.dwExemptDelta = x
-proc dwExemptDelta*(self: INTERNET_CACHE_ENTRY_INFOW): DWORD {.inline.} = self.union1.dwExemptDelta
-proc dwExemptDelta*(self: var INTERNET_CACHE_ENTRY_INFOW): var DWORD {.inline.} = self.union1.dwExemptDelta
+    GetIPAddress*:
+      proc(lpszIPAddress: LPSTR, lpdwIPAddressSize: LPDWORD): DWORD {.stdcall.}
+    ResolveHostName*: proc(
+      lpszHostName: LPSTR, lpszIPAddress: LPSTR, lpdwIPAddressSize: LPDWORD
+    ): DWORD {.stdcall.}
+    IsInNet*:
+      proc(lpszIPAddress: LPSTR, lpszDest: LPSTR, lpszMask: LPSTR): WINBOOL {.stdcall.}
+
+proc InternetTimeFromSystemTimeA*(
+  pst: ptr SYSTEMTIME, dwRFC: DWORD, lpszTime: LPSTR, cbTime: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetTimeFromSystemTimeW*(
+  pst: ptr SYSTEMTIME, dwRFC: DWORD, lpszTime: LPWSTR, cbTime: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetTimeToSystemTimeA*(
+  lpszTime: LPCSTR, pst: ptr SYSTEMTIME, dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetTimeToSystemTimeW*(
+  lpszTime: LPCWSTR, pst: ptr SYSTEMTIME, dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetCrackUrlA*(
+  lpszUrl: LPCSTR,
+  dwUrlLength: DWORD,
+  dwFlags: DWORD,
+  lpUrlComponents: LPURL_COMPONENTSA,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetCrackUrlW*(
+  lpszUrl: LPCWSTR,
+  dwUrlLength: DWORD,
+  dwFlags: DWORD,
+  lpUrlComponents: LPURL_COMPONENTSW,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetCreateUrlA*(
+  lpUrlComponents: LPURL_COMPONENTSA,
+  dwFlags: DWORD,
+  lpszUrl: LPSTR,
+  lpdwUrlLength: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetCreateUrlW*(
+  lpUrlComponents: LPURL_COMPONENTSW,
+  dwFlags: DWORD,
+  lpszUrl: LPWSTR,
+  lpdwUrlLength: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetCanonicalizeUrlA*(
+  lpszUrl: LPCSTR, lpszBuffer: LPSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetCanonicalizeUrlW*(
+  lpszUrl: LPCWSTR, lpszBuffer: LPWSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetCombineUrlA*(
+  lpszBaseUrl: LPCSTR,
+  lpszRelativeUrl: LPCSTR,
+  lpszBuffer: LPSTR,
+  lpdwBufferLength: LPDWORD,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetCombineUrlW*(
+  lpszBaseUrl: LPCWSTR,
+  lpszRelativeUrl: LPCWSTR,
+  lpszBuffer: LPWSTR,
+  lpdwBufferLength: LPDWORD,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetOpenA*(
+  lpszAgent: LPCSTR,
+  dwAccessType: DWORD,
+  lpszProxy: LPCSTR,
+  lpszProxyBypass: LPCSTR,
+  dwFlags: DWORD,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetOpenW*(
+  lpszAgent: LPCWSTR,
+  dwAccessType: DWORD,
+  lpszProxy: LPCWSTR,
+  lpszProxyBypass: LPCWSTR,
+  dwFlags: DWORD,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetCloseHandle*(
+  hInternet: HINTERNET
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetConnectA*(
+  hInternet: HINTERNET,
+  lpszServerName: LPCSTR,
+  nServerPort: INTERNET_PORT,
+  lpszUserName: LPCSTR,
+  lpszPassword: LPCSTR,
+  dwService: DWORD,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetConnectW*(
+  hInternet: HINTERNET,
+  lpszServerName: LPCWSTR,
+  nServerPort: INTERNET_PORT,
+  lpszUserName: LPCWSTR,
+  lpszPassword: LPCWSTR,
+  dwService: DWORD,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetOpenUrlA*(
+  hInternet: HINTERNET,
+  lpszUrl: LPCSTR,
+  lpszHeaders: LPCSTR,
+  dwHeadersLength: DWORD,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetOpenUrlW*(
+  hInternet: HINTERNET,
+  lpszUrl: LPCWSTR,
+  lpszHeaders: LPCWSTR,
+  dwHeadersLength: DWORD,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetReadFile*(
+  hFile: HINTERNET,
+  lpBuffer: LPVOID,
+  dwNumberOfBytesToRead: DWORD,
+  lpdwNumberOfBytesRead: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetReadFileExA*(
+  hFile: HINTERNET,
+  lpBuffersOut: LPINTERNET_BUFFERSA,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetReadFileExW*(
+  hFile: HINTERNET,
+  lpBuffersOut: LPINTERNET_BUFFERSW,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetFilePointer*(
+  hFile: HINTERNET,
+  lDistanceToMove: LONG,
+  pReserved: PVOID,
+  dwMoveMethod: DWORD,
+  dwContext: DWORD_PTR,
+): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetWriteFile*(
+  hFile: HINTERNET,
+  lpBuffer: LPCVOID,
+  dwNumberOfBytesToWrite: DWORD,
+  lpdwNumberOfBytesWritten: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetQueryDataAvailable*(
+  hFile: HINTERNET,
+  lpdwNumberOfBytesAvailable: LPDWORD,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetFindNextFileA*(
+  hFind: HINTERNET, lpvFindData: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetFindNextFileW*(
+  hFind: HINTERNET, lpvFindData: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetQueryOptionA*(
+  hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetQueryOptionW*(
+  hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetOptionA*(
+  hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetOptionW*(
+  hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetOptionExA*(
+  hInternet: HINTERNET,
+  dwOption: DWORD,
+  lpBuffer: LPVOID,
+  dwBufferLength: DWORD,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetOptionExW*(
+  hInternet: HINTERNET,
+  dwOption: DWORD,
+  lpBuffer: LPVOID,
+  dwBufferLength: DWORD,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetLockRequestFile*(
+  hInternet: HINTERNET, lphLockRequestInfo: ptr HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetUnlockRequestFile*(
+  hLockRequestInfo: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetGetLastResponseInfoA*(
+  lpdwError: LPDWORD, lpszBuffer: LPSTR, lpdwBufferLength: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetGetLastResponseInfoW*(
+  lpdwError: LPDWORD, lpszBuffer: LPWSTR, lpdwBufferLength: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetStatusCallbackA*(
+  hInternet: HINTERNET, lpfnInternetCallback: INTERNET_STATUS_CALLBACK
+): INTERNET_STATUS_CALLBACK {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetStatusCallbackW*(
+  hInternet: HINTERNET, lpfnInternetCallback: INTERNET_STATUS_CALLBACK
+): INTERNET_STATUS_CALLBACK {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpFindFirstFileA*(
+  hConnect: HINTERNET,
+  lpszSearchFile: LPCSTR,
+  lpFindFileData: LPWIN32_FIND_DATAA,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpFindFirstFileW*(
+  hConnect: HINTERNET,
+  lpszSearchFile: LPCWSTR,
+  lpFindFileData: LPWIN32_FIND_DATAW,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpGetFileA*(
+  hConnect: HINTERNET,
+  lpszRemoteFile: LPCSTR,
+  lpszNewFile: LPCSTR,
+  fFailIfExists: WINBOOL,
+  dwFlagsAndAttributes: DWORD,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpGetFileW*(
+  hConnect: HINTERNET,
+  lpszRemoteFile: LPCWSTR,
+  lpszNewFile: LPCWSTR,
+  fFailIfExists: WINBOOL,
+  dwFlagsAndAttributes: DWORD,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpPutFileA*(
+  hConnect: HINTERNET,
+  lpszLocalFile: LPCSTR,
+  lpszNewRemoteFile: LPCSTR,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpPutFileW*(
+  hConnect: HINTERNET,
+  lpszLocalFile: LPCWSTR,
+  lpszNewRemoteFile: LPCWSTR,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpGetFileEx*(
+  hFtpSession: HINTERNET,
+  lpszRemoteFile: LPCSTR,
+  lpszNewFile: LPCWSTR,
+  fFailIfExists: WINBOOL,
+  dwFlagsAndAttributes: DWORD,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpPutFileEx*(
+  hFtpSession: HINTERNET,
+  lpszLocalFile: LPCWSTR,
+  lpszNewRemoteFile: LPCSTR,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpDeleteFileA*(
+  hConnect: HINTERNET, lpszFileName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpDeleteFileW*(
+  hConnect: HINTERNET, lpszFileName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpRenameFileA*(
+  hConnect: HINTERNET, lpszExisting: LPCSTR, lpszNew: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpRenameFileW*(
+  hConnect: HINTERNET, lpszExisting: LPCWSTR, lpszNew: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpOpenFileA*(
+  hConnect: HINTERNET,
+  lpszFileName: LPCSTR,
+  dwAccess: DWORD,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpOpenFileW*(
+  hConnect: HINTERNET,
+  lpszFileName: LPCWSTR,
+  dwAccess: DWORD,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpCreateDirectoryA*(
+  hConnect: HINTERNET, lpszDirectory: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpCreateDirectoryW*(
+  hConnect: HINTERNET, lpszDirectory: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpRemoveDirectoryA*(
+  hConnect: HINTERNET, lpszDirectory: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpRemoveDirectoryW*(
+  hConnect: HINTERNET, lpszDirectory: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpSetCurrentDirectoryA*(
+  hConnect: HINTERNET, lpszDirectory: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpSetCurrentDirectoryW*(
+  hConnect: HINTERNET, lpszDirectory: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpGetCurrentDirectoryA*(
+  hConnect: HINTERNET, lpszCurrentDirectory: LPSTR, lpdwCurrentDirectory: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpGetCurrentDirectoryW*(
+  hConnect: HINTERNET, lpszCurrentDirectory: LPWSTR, lpdwCurrentDirectory: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpCommandA*(
+  hConnect: HINTERNET,
+  fExpectResponse: WINBOOL,
+  dwFlags: DWORD,
+  lpszCommand: LPCSTR,
+  dwContext: DWORD_PTR,
+  phFtpCommand: ptr HINTERNET,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpCommandW*(
+  hConnect: HINTERNET,
+  fExpectResponse: WINBOOL,
+  dwFlags: DWORD,
+  lpszCommand: LPCWSTR,
+  dwContext: DWORD_PTR,
+  phFtpCommand: ptr HINTERNET,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FtpGetFileSize*(
+  hFile: HINTERNET, lpdwFileSizeHigh: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GopherCreateLocatorA*(
+  lpszHost: LPCSTR,
+  nServerPort: INTERNET_PORT,
+  lpszDisplayString: LPCSTR,
+  lpszSelectorString: LPCSTR,
+  dwGopherType: DWORD,
+  lpszLocator: LPSTR,
+  lpdwBufferLength: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GopherCreateLocatorW*(
+  lpszHost: LPCWSTR,
+  nServerPort: INTERNET_PORT,
+  lpszDisplayString: LPCWSTR,
+  lpszSelectorString: LPCWSTR,
+  dwGopherType: DWORD,
+  lpszLocator: LPWSTR,
+  lpdwBufferLength: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GopherGetLocatorTypeA*(
+  lpszLocator: LPCSTR, lpdwGopherType: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GopherGetLocatorTypeW*(
+  lpszLocator: LPCWSTR, lpdwGopherType: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GopherFindFirstFileA*(
+  hConnect: HINTERNET,
+  lpszLocator: LPCSTR,
+  lpszSearchString: LPCSTR,
+  lpFindData: LPGOPHER_FIND_DATAA,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GopherFindFirstFileW*(
+  hConnect: HINTERNET,
+  lpszLocator: LPCWSTR,
+  lpszSearchString: LPCWSTR,
+  lpFindData: LPGOPHER_FIND_DATAW,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GopherOpenFileA*(
+  hConnect: HINTERNET,
+  lpszLocator: LPCSTR,
+  lpszView: LPCSTR,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GopherOpenFileW*(
+  hConnect: HINTERNET,
+  lpszLocator: LPCWSTR,
+  lpszView: LPCWSTR,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GopherGetAttributeA*(
+  hConnect: HINTERNET,
+  lpszLocator: LPCSTR,
+  lpszAttributeName: LPCSTR,
+  lpBuffer: LPBYTE,
+  dwBufferLength: DWORD,
+  lpdwCharactersReturned: LPDWORD,
+  lpfnEnumerator: GOPHER_ATTRIBUTE_ENUMERATOR,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GopherGetAttributeW*(
+  hConnect: HINTERNET,
+  lpszLocator: LPCWSTR,
+  lpszAttributeName: LPCWSTR,
+  lpBuffer: LPBYTE,
+  dwBufferLength: DWORD,
+  lpdwCharactersReturned: LPDWORD,
+  lpfnEnumerator: GOPHER_ATTRIBUTE_ENUMERATOR,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc HttpOpenRequestA*(
+  hConnect: HINTERNET,
+  lpszVerb: LPCSTR,
+  lpszObjectName: LPCSTR,
+  lpszVersion: LPCSTR,
+  lpszReferrer: LPCSTR,
+  lplpszAcceptTypes: ptr LPCSTR,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc HttpOpenRequestW*(
+  hConnect: HINTERNET,
+  lpszVerb: LPCWSTR,
+  lpszObjectName: LPCWSTR,
+  lpszVersion: LPCWSTR,
+  lpszReferrer: LPCWSTR,
+  lplpszAcceptTypes: ptr LPCWSTR,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc HttpAddRequestHeadersA*(
+  hRequest: HINTERNET, lpszHeaders: LPCSTR, dwHeadersLength: DWORD, dwModifiers: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc HttpAddRequestHeadersW*(
+  hRequest: HINTERNET, lpszHeaders: LPCWSTR, dwHeadersLength: DWORD, dwModifiers: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc HttpSendRequestA*(
+  hRequest: HINTERNET,
+  lpszHeaders: LPCSTR,
+  dwHeadersLength: DWORD,
+  lpOptional: LPVOID,
+  dwOptionalLength: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc HttpSendRequestW*(
+  hRequest: HINTERNET,
+  lpszHeaders: LPCWSTR,
+  dwHeadersLength: DWORD,
+  lpOptional: LPVOID,
+  dwOptionalLength: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc HttpSendRequestExA*(
+  hRequest: HINTERNET,
+  lpBuffersIn: LPINTERNET_BUFFERSA,
+  lpBuffersOut: LPINTERNET_BUFFERSA,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc HttpSendRequestExW*(
+  hRequest: HINTERNET,
+  lpBuffersIn: LPINTERNET_BUFFERSW,
+  lpBuffersOut: LPINTERNET_BUFFERSW,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc HttpEndRequestA*(
+  hRequest: HINTERNET,
+  lpBuffersOut: LPINTERNET_BUFFERSA,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc HttpEndRequestW*(
+  hRequest: HINTERNET,
+  lpBuffersOut: LPINTERNET_BUFFERSW,
+  dwFlags: DWORD,
+  dwContext: DWORD_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc HttpQueryInfoA*(
+  hRequest: HINTERNET,
+  dwInfoLevel: DWORD,
+  lpBuffer: LPVOID,
+  lpdwBufferLength: LPDWORD,
+  lpdwIndex: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc HttpQueryInfoW*(
+  hRequest: HINTERNET,
+  dwInfoLevel: DWORD,
+  lpBuffer: LPVOID,
+  lpdwBufferLength: LPDWORD,
+  lpdwIndex: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetCookieA*(
+  lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetCookieW*(
+  lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetGetCookieA*(
+  lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPSTR, lpdwSize: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetGetCookieW*(
+  lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPWSTR, lpdwSize: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetCookieExA*(
+  lpszUrl: LPCSTR,
+  lpszCookieName: LPCSTR,
+  lpszCookieData: LPCSTR,
+  dwFlags: DWORD,
+  dwReserved: DWORD_PTR,
+): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetCookieExW*(
+  lpszUrl: LPCWSTR,
+  lpszCookieName: LPCWSTR,
+  lpszCookieData: LPCWSTR,
+  dwFlags: DWORD,
+  dwReserved: DWORD_PTR,
+): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetGetCookieExA*(
+  lpszUrl: LPCSTR,
+  lpszCookieName: LPCSTR,
+  lpszCookieData: LPSTR,
+  lpdwSize: LPDWORD,
+  dwFlags: DWORD,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetGetCookieExW*(
+  lpszUrl: LPCWSTR,
+  lpszCookieName: LPCWSTR,
+  lpszCookieData: LPWSTR,
+  lpdwSize: LPDWORD,
+  dwFlags: DWORD,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetAttemptConnect*(
+  dwReserved: DWORD
+): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetCheckConnectionA*(
+  lpszUrl: LPCSTR, dwFlags: DWORD, dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetCheckConnectionW*(
+  lpszUrl: LPCWSTR, dwFlags: DWORD, dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc ResumeSuspendedDownload*(
+  hRequest: HINTERNET, dwResultCode: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetErrorDlg*(
+  hWnd: HWND, hRequest: HINTERNET, dwError: DWORD, dwFlags: DWORD, lppvData: ptr LPVOID
+): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetConfirmZoneCrossingA*(
+  hWnd: HWND, szUrlPrev: LPSTR, szUrlNew: LPSTR, bPost: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetConfirmZoneCrossingW*(
+  hWnd: HWND, szUrlPrev: LPWSTR, szUrlNew: LPWSTR, bPost: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc CreateUrlCacheEntryA*(
+  lpszUrlName: LPCSTR,
+  dwExpectedFileSize: DWORD,
+  lpszFileExtension: LPCSTR,
+  lpszFileName: LPSTR,
+  dwReserved: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc CreateUrlCacheEntryW*(
+  lpszUrlName: LPCWSTR,
+  dwExpectedFileSize: DWORD,
+  lpszFileExtension: LPCWSTR,
+  lpszFileName: LPWSTR,
+  dwReserved: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc CommitUrlCacheEntryA*(
+  lpszUrlName: LPCSTR,
+  lpszLocalFileName: LPCSTR,
+  ExpireTime: FILETIME,
+  LastModifiedTime: FILETIME,
+  CacheEntryType: DWORD,
+  lpHeaderInfo: LPBYTE,
+  dwHeaderSize: DWORD,
+  lpszFileExtension: LPCSTR,
+  lpszOriginalUrl: LPCSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc CommitUrlCacheEntryW*(
+  lpszUrlName: LPCWSTR,
+  lpszLocalFileName: LPCWSTR,
+  ExpireTime: FILETIME,
+  LastModifiedTime: FILETIME,
+  CacheEntryType: DWORD,
+  lpszHeaderInfo: LPWSTR,
+  dwHeaders: DWORD,
+  lpszFileExtension: LPCWSTR,
+  lpszOriginalUrl: LPCWSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc RetrieveUrlCacheEntryFileA*(
+  lpszUrlName: LPCSTR,
+  lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+  lpcbCacheEntryInfo: LPDWORD,
+  dwReserved: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc RetrieveUrlCacheEntryFileW*(
+  lpszUrlName: LPCWSTR,
+  lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+  lpcbCacheEntryInfo: LPDWORD,
+  dwReserved: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc UnlockUrlCacheEntryFileA*(
+  lpszUrlName: LPCSTR, dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc UnlockUrlCacheEntryFileW*(
+  lpszUrlName: LPCWSTR, dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc RetrieveUrlCacheEntryStreamA*(
+  lpszUrlName: LPCSTR,
+  lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+  lpcbCacheEntryInfo: LPDWORD,
+  fRandomRead: WINBOOL,
+  dwReserved: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc RetrieveUrlCacheEntryStreamW*(
+  lpszUrlName: LPCWSTR,
+  lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+  lpcbCacheEntryInfo: LPDWORD,
+  fRandomRead: WINBOOL,
+  dwReserved: DWORD,
+): HANDLE {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc ReadUrlCacheEntryStream*(
+  hUrlCacheStream: HANDLE,
+  dwLocation: DWORD,
+  lpBuffer: LPVOID,
+  lpdwLen: LPDWORD,
+  Reserved: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc UnlockUrlCacheEntryStream*(
+  hUrlCacheStream: HANDLE, Reserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GetUrlCacheEntryInfoA*(
+  lpszUrlName: LPCSTR,
+  lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+  lpcbCacheEntryInfo: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GetUrlCacheEntryInfoW*(
+  lpszUrlName: LPCWSTR,
+  lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+  lpcbCacheEntryInfo: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FindFirstUrlCacheGroup*(
+  dwFlags: DWORD,
+  dwFilter: DWORD,
+  lpSearchCondition: LPVOID,
+  dwSearchCondition: DWORD,
+  lpGroupId: ptr GROUPID,
+  lpReserved: LPVOID,
+): HANDLE {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FindNextUrlCacheGroup*(
+  hFind: HANDLE, lpGroupId: ptr GROUPID, lpReserved: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GetUrlCacheGroupAttributeA*(
+  gid: GROUPID,
+  dwFlags: DWORD,
+  dwAttributes: DWORD,
+  lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOA,
+  lpdwGroupInfo: LPDWORD,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GetUrlCacheGroupAttributeW*(
+  gid: GROUPID,
+  dwFlags: DWORD,
+  dwAttributes: DWORD,
+  lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOW,
+  lpdwGroupInfo: LPDWORD,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc SetUrlCacheGroupAttributeA*(
+  gid: GROUPID,
+  dwFlags: DWORD,
+  dwAttributes: DWORD,
+  lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOA,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc SetUrlCacheGroupAttributeW*(
+  gid: GROUPID,
+  dwFlags: DWORD,
+  dwAttributes: DWORD,
+  lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOW,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc CreateUrlCacheGroup*(
+  dwFlags: DWORD, lpReserved: LPVOID
+): GROUPID {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc DeleteUrlCacheGroup*(
+  GroupId: GROUPID, dwFlags: DWORD, lpReserved: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GetUrlCacheEntryInfoExA*(
+  lpszUrl: LPCSTR,
+  lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+  lpcbCacheEntryInfo: LPDWORD,
+  lpszRedirectUrl: LPSTR,
+  lpcbRedirectUrl: LPDWORD,
+  lpReserved: LPVOID,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc GetUrlCacheEntryInfoExW*(
+  lpszUrl: LPCWSTR,
+  lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+  lpcbCacheEntryInfo: LPDWORD,
+  lpszRedirectUrl: LPWSTR,
+  lpcbRedirectUrl: LPDWORD,
+  lpReserved: LPVOID,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc SetUrlCacheEntryInfoA*(
+  lpszUrlName: LPCSTR,
+  lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+  dwFieldControl: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc SetUrlCacheEntryInfoW*(
+  lpszUrlName: LPCWSTR,
+  lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+  dwFieldControl: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc SetUrlCacheEntryGroupA*(
+  lpszUrlName: LPCSTR,
+  dwFlags: DWORD,
+  GroupId: GROUPID,
+  pbGroupAttributes: LPBYTE,
+  cbGroupAttributes: DWORD,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc SetUrlCacheEntryGroupW*(
+  lpszUrlName: LPCWSTR,
+  dwFlags: DWORD,
+  GroupId: GROUPID,
+  pbGroupAttributes: LPBYTE,
+  cbGroupAttributes: DWORD,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FindFirstUrlCacheEntryExA*(
+  lpszUrlSearchPattern: LPCSTR,
+  dwFlags: DWORD,
+  dwFilter: DWORD,
+  GroupId: GROUPID,
+  lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+  lpcbEntryInfo: LPDWORD,
+  lpGroupAttributes: LPVOID,
+  lpcbGroupAttributes: LPDWORD,
+  lpReserved: LPVOID,
+): HANDLE {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FindFirstUrlCacheEntryExW*(
+  lpszUrlSearchPattern: LPCWSTR,
+  dwFlags: DWORD,
+  dwFilter: DWORD,
+  GroupId: GROUPID,
+  lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+  lpcbEntryInfo: LPDWORD,
+  lpGroupAttributes: LPVOID,
+  lpcbGroupAttributes: LPDWORD,
+  lpReserved: LPVOID,
+): HANDLE {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FindNextUrlCacheEntryExA*(
+  hEnumHandle: HANDLE,
+  lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+  lpcbEntryInfo: LPDWORD,
+  lpGroupAttributes: LPVOID,
+  lpcbGroupAttributes: LPDWORD,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FindNextUrlCacheEntryExW*(
+  hEnumHandle: HANDLE,
+  lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+  lpcbEntryInfo: LPDWORD,
+  lpGroupAttributes: LPVOID,
+  lpcbGroupAttributes: LPDWORD,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FindFirstUrlCacheEntryA*(
+  lpszUrlSearchPattern: LPCSTR,
+  lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+  lpcbCacheEntryInfo: LPDWORD,
+): HANDLE {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FindFirstUrlCacheEntryW*(
+  lpszUrlSearchPattern: LPCWSTR,
+  lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+  lpcbCacheEntryInfo: LPDWORD,
+): HANDLE {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FindNextUrlCacheEntryA*(
+  hEnumHandle: HANDLE,
+  lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+  lpcbCacheEntryInfo: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FindNextUrlCacheEntryW*(
+  hEnumHandle: HANDLE,
+  lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+  lpcbCacheEntryInfo: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc FindCloseUrlCache*(
+  hEnumHandle: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc DeleteUrlCacheEntryA*(
+  lpszUrlName: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc DeleteUrlCacheEntryW*(
+  lpszUrlName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetDialA*(
+  hwndParent: HWND,
+  lpszConnectoid: LPSTR,
+  dwFlags: DWORD,
+  lpdwConnection: ptr DWORD_PTR,
+  dwReserved: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetDialW*(
+  hwndParent: HWND,
+  lpszConnectoid: LPWSTR,
+  dwFlags: DWORD,
+  lpdwConnection: ptr DWORD_PTR,
+  dwReserved: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetHangUp*(
+  dwConnection: DWORD_PTR, dwReserved: DWORD
+): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetGoOnlineA*(
+  lpszURL: LPSTR, hwndParent: HWND, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetGoOnlineW*(
+  lpszURL: LPWSTR, hwndParent: HWND, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetAutodial*(
+  dwFlags: DWORD, hwndParent: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetAutodialHangup*(
+  dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetGetConnectedState*(
+  lpdwFlags: LPDWORD, dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetGetConnectedStateExA*(
+  lpdwFlags: LPDWORD, lpszConnectionName: LPSTR, dwBufLen: DWORD, dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetGetConnectedStateExW*(
+  lpdwFlags: LPDWORD, lpszConnectionName: LPWSTR, dwBufLen: DWORD, dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetInitializeAutoProxyDll*(
+  dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc DetectAutoProxyUrl*(
+  lpszAutoProxyUrl: LPSTR, dwAutoProxyUrlLength: DWORD, dwDetectFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc CreateMD5SSOHash*(
+  pszChallengeInfo: PWSTR, pwszRealm: PWSTR, pwszTarget: PWSTR, pbHexHash: PBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetDialStateA*(
+  lpszConnectoid: LPCSTR, dwState: DWORD, dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetDialStateW*(
+  lpszConnectoid: LPCWSTR, dwState: DWORD, dwReserved: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetPerSiteCookieDecisionA*(
+  pchHostName: LPCSTR, dwDecision: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetSetPerSiteCookieDecisionW*(
+  pchHostName: LPCWSTR, dwDecision: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetGetPerSiteCookieDecisionA*(
+  pchHostName: LPCSTR, pResult: ptr int32
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetGetPerSiteCookieDecisionW*(
+  pchHostName: LPCWSTR, pResult: ptr int32
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetClearAllPerSiteCookieDecisions*(): WINBOOL {.
+  winapi, stdcall, dynlib: "wininet", importc
+.}
+
+proc InternetEnumPerSiteCookieDecisionA*(
+  pszSiteName: LPSTR, pcSiteNameSize: ptr int32, pdwDecision: ptr int32, dwIndex: int32
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc InternetEnumPerSiteCookieDecisionW*(
+  pszSiteName: LPWSTR, pcSiteNameSize: ptr int32, pdwDecision: ptr int32, dwIndex: int32
+): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc PrivacySetZonePreferenceW*(
+  dwZone: DWORD, dwType: DWORD, dwTemplate: DWORD, pszPreference: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc PrivacyGetZonePreferenceW*(
+  dwZone: DWORD,
+  dwType: DWORD,
+  pdwTemplate: LPDWORD,
+  pszBuffer: LPWSTR,
+  pdwBufferLength: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "wininet", importc.}
+
+proc `dwReserved=`*(self: var INTERNET_CACHE_ENTRY_INFOA, x: DWORD) {.inline.} =
+  self.union1.dwReserved = x
+
+proc dwReserved*(self: INTERNET_CACHE_ENTRY_INFOA): DWORD {.inline.} =
+  self.union1.dwReserved
+
+proc dwReserved*(self: var INTERNET_CACHE_ENTRY_INFOA): var DWORD {.inline.} =
+  self.union1.dwReserved
+
+proc `dwExemptDelta=`*(self: var INTERNET_CACHE_ENTRY_INFOA, x: DWORD) {.inline.} =
+  self.union1.dwExemptDelta = x
+
+proc dwExemptDelta*(self: INTERNET_CACHE_ENTRY_INFOA): DWORD {.inline.} =
+  self.union1.dwExemptDelta
+
+proc dwExemptDelta*(self: var INTERNET_CACHE_ENTRY_INFOA): var DWORD {.inline.} =
+  self.union1.dwExemptDelta
+
+proc `dwReserved=`*(self: var INTERNET_CACHE_ENTRY_INFOW, x: DWORD) {.inline.} =
+  self.union1.dwReserved = x
+
+proc dwReserved*(self: INTERNET_CACHE_ENTRY_INFOW): DWORD {.inline.} =
+  self.union1.dwReserved
+
+proc dwReserved*(self: var INTERNET_CACHE_ENTRY_INFOW): var DWORD {.inline.} =
+  self.union1.dwReserved
+
+proc `dwExemptDelta=`*(self: var INTERNET_CACHE_ENTRY_INFOW, x: DWORD) {.inline.} =
+  self.union1.dwExemptDelta = x
+
+proc dwExemptDelta*(self: INTERNET_CACHE_ENTRY_INFOW): DWORD {.inline.} =
+  self.union1.dwExemptDelta
+
+proc dwExemptDelta*(self: var INTERNET_CACHE_ENTRY_INFOW): var DWORD {.inline.} =
+  self.union1.dwExemptDelta
+
 when winimUnicode:
   type
     INTERNET_PER_CONN_OPTION* = INTERNET_PER_CONN_OPTIONW
@@ -1277,73 +2288,480 @@
     LPINTERNET_CACHE_ENTRY_INFO* = LPINTERNET_CACHE_ENTRY_INFOW
     INTERNET_CACHE_GROUP_INFO* = INTERNET_CACHE_GROUP_INFOW
     LPINTERNET_CACHE_GROUP_INFO* = LPINTERNET_CACHE_GROUP_INFOW
-  proc InternetCrackUrl*(lpszUrl: LPCWSTR, dwUrlLength: DWORD, dwFlags: DWORD, lpUrlComponents: LPURL_COMPONENTSW): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCrackUrlW".}
-  proc InternetCreateUrl*(lpUrlComponents: LPURL_COMPONENTSW, dwFlags: DWORD, lpszUrl: LPWSTR, lpdwUrlLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCreateUrlW".}
-  proc InternetCanonicalizeUrl*(lpszUrl: LPCWSTR, lpszBuffer: LPWSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCanonicalizeUrlW".}
-  proc InternetCombineUrl*(lpszBaseUrl: LPCWSTR, lpszRelativeUrl: LPCWSTR, lpszBuffer: LPWSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCombineUrlW".}
-  proc InternetOpen*(lpszAgent: LPCWSTR, dwAccessType: DWORD, lpszProxy: LPCWSTR, lpszProxyBypass: LPCWSTR, dwFlags: DWORD): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "InternetOpenW".}
-  proc InternetConnect*(hInternet: HINTERNET, lpszServerName: LPCWSTR, nServerPort: INTERNET_PORT, lpszUserName: LPCWSTR, lpszPassword: LPCWSTR, dwService: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "InternetConnectW".}
-  proc InternetOpenUrl*(hInternet: HINTERNET, lpszUrl: LPCWSTR, lpszHeaders: LPCWSTR, dwHeadersLength: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "InternetOpenUrlW".}
-  proc InternetReadFileEx*(hFile: HINTERNET, lpBuffersOut: LPINTERNET_BUFFERSW, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetReadFileExW".}
-  proc InternetFindNextFile*(hFind: HINTERNET, lpvFindData: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetFindNextFileW".}
-  proc InternetQueryOption*(hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetQueryOptionW".}
-  proc InternetSetOption*(hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetOptionW".}
-  proc InternetSetOptionEx*(hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetOptionExW".}
-  proc InternetGetLastResponseInfo*(lpdwError: LPDWORD, lpszBuffer: LPWSTR, lpdwBufferLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGetLastResponseInfoW".}
-  proc FtpFindFirstFile*(hConnect: HINTERNET, lpszSearchFile: LPCWSTR, lpFindFileData: LPWIN32_FIND_DATAW, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "FtpFindFirstFileW".}
-  proc FtpGetFile*(hConnect: HINTERNET, lpszRemoteFile: LPCWSTR, lpszNewFile: LPCWSTR, fFailIfExists: WINBOOL, dwFlagsAndAttributes: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpGetFileW".}
-  proc FtpPutFile*(hConnect: HINTERNET, lpszLocalFile: LPCWSTR, lpszNewRemoteFile: LPCWSTR, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpPutFileW".}
-  proc FtpDeleteFile*(hConnect: HINTERNET, lpszFileName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpDeleteFileW".}
-  proc FtpRenameFile*(hConnect: HINTERNET, lpszExisting: LPCWSTR, lpszNew: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpRenameFileW".}
-  proc FtpOpenFile*(hConnect: HINTERNET, lpszFileName: LPCWSTR, dwAccess: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "FtpOpenFileW".}
-  proc FtpCreateDirectory*(hConnect: HINTERNET, lpszDirectory: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpCreateDirectoryW".}
-  proc FtpRemoveDirectory*(hConnect: HINTERNET, lpszDirectory: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpRemoveDirectoryW".}
-  proc FtpSetCurrentDirectory*(hConnect: HINTERNET, lpszDirectory: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpSetCurrentDirectoryW".}
-  proc FtpGetCurrentDirectory*(hConnect: HINTERNET, lpszCurrentDirectory: LPWSTR, lpdwCurrentDirectory: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpGetCurrentDirectoryW".}
-  proc FtpCommand*(hConnect: HINTERNET, fExpectResponse: WINBOOL, dwFlags: DWORD, lpszCommand: LPCWSTR, dwContext: DWORD_PTR, phFtpCommand: ptr HINTERNET): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpCommandW".}
-  proc GopherCreateLocator*(lpszHost: LPCWSTR, nServerPort: INTERNET_PORT, lpszDisplayString: LPCWSTR, lpszSelectorString: LPCWSTR, dwGopherType: DWORD, lpszLocator: LPWSTR, lpdwBufferLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GopherCreateLocatorW".}
-  proc GopherGetLocatorType*(lpszLocator: LPCWSTR, lpdwGopherType: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GopherGetLocatorTypeW".}
-  proc GopherFindFirstFile*(hConnect: HINTERNET, lpszLocator: LPCWSTR, lpszSearchString: LPCWSTR, lpFindData: LPGOPHER_FIND_DATAW, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "GopherFindFirstFileW".}
-  proc GopherOpenFile*(hConnect: HINTERNET, lpszLocator: LPCWSTR, lpszView: LPCWSTR, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "GopherOpenFileW".}
-  proc GopherGetAttribute*(hConnect: HINTERNET, lpszLocator: LPCWSTR, lpszAttributeName: LPCWSTR, lpBuffer: LPBYTE, dwBufferLength: DWORD, lpdwCharactersReturned: LPDWORD, lpfnEnumerator: GOPHER_ATTRIBUTE_ENUMERATOR, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GopherGetAttributeW".}
-  proc HttpOpenRequest*(hConnect: HINTERNET, lpszVerb: LPCWSTR, lpszObjectName: LPCWSTR, lpszVersion: LPCWSTR, lpszReferrer: LPCWSTR, lplpszAcceptTypes: ptr LPCWSTR, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "HttpOpenRequestW".}
-  proc HttpAddRequestHeaders*(hRequest: HINTERNET, lpszHeaders: LPCWSTR, dwHeadersLength: DWORD, dwModifiers: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpAddRequestHeadersW".}
-  proc HttpSendRequest*(hRequest: HINTERNET, lpszHeaders: LPCWSTR, dwHeadersLength: DWORD, lpOptional: LPVOID, dwOptionalLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpSendRequestW".}
-  proc HttpSendRequestEx*(hRequest: HINTERNET, lpBuffersIn: LPINTERNET_BUFFERSW, lpBuffersOut: LPINTERNET_BUFFERSW, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpSendRequestExW".}
-  proc HttpEndRequest*(hRequest: HINTERNET, lpBuffersOut: LPINTERNET_BUFFERSW, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpEndRequestW".}
-  proc HttpQueryInfo*(hRequest: HINTERNET, dwInfoLevel: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD, lpdwIndex: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpQueryInfoW".}
-  proc InternetSetCookie*(lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetCookieW".}
-  proc InternetGetCookie*(lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPWSTR, lpdwSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGetCookieW".}
-  proc InternetSetCookieEx*(lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPCWSTR, dwFlags: DWORD, dwReserved: DWORD_PTR): DWORD {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetCookieExW".}
-  proc InternetGetCookieEx*(lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPWSTR, lpdwSize: LPDWORD, dwFlags: DWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGetCookieExW".}
-  proc InternetCheckConnection*(lpszUrl: LPCWSTR, dwFlags: DWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCheckConnectionW".}
-  proc CreateUrlCacheEntry*(lpszUrlName: LPCWSTR, dwExpectedFileSize: DWORD, lpszFileExtension: LPCWSTR, lpszFileName: LPWSTR, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "CreateUrlCacheEntryW".}
-  proc CommitUrlCacheEntry*(lpszUrlName: LPCWSTR, lpszLocalFileName: LPCWSTR, ExpireTime: FILETIME, LastModifiedTime: FILETIME, CacheEntryType: DWORD, lpszHeaderInfo: LPWSTR, dwHeaders: DWORD, lpszFileExtension: LPCWSTR, lpszOriginalUrl: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "CommitUrlCacheEntryW".}
-  proc RetrieveUrlCacheEntryFile*(lpszUrlName: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "RetrieveUrlCacheEntryFileW".}
-  proc UnlockUrlCacheEntryFile*(lpszUrlName: LPCWSTR, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "UnlockUrlCacheEntryFileW".}
-  proc RetrieveUrlCacheEntryStream*(lpszUrlName: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD, fRandomRead: WINBOOL, dwReserved: DWORD): HANDLE {.winapi, stdcall, dynlib: "wininet", importc: "RetrieveUrlCacheEntryStreamW".}
-  proc GetUrlCacheEntryInfo*(lpszUrlName: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GetUrlCacheEntryInfoW".}
-  proc GetUrlCacheGroupAttribute*(gid: GROUPID, dwFlags: DWORD, dwAttributes: DWORD, lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOW, lpdwGroupInfo: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GetUrlCacheGroupAttributeW".}
-  proc SetUrlCacheGroupAttribute*(gid: GROUPID, dwFlags: DWORD, dwAttributes: DWORD, lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOW, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "SetUrlCacheGroupAttributeW".}
-  proc GetUrlCacheEntryInfoEx*(lpszUrl: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD, lpszRedirectUrl: LPWSTR, lpcbRedirectUrl: LPDWORD, lpReserved: LPVOID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GetUrlCacheEntryInfoExW".}
-  proc SetUrlCacheEntryInfo*(lpszUrlName: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, dwFieldControl: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "SetUrlCacheEntryInfoW".}
-  proc FindFirstUrlCacheEntryEx*(lpszUrlSearchPattern: LPCWSTR, dwFlags: DWORD, dwFilter: DWORD, GroupId: GROUPID, lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbEntryInfo: LPDWORD, lpGroupAttributes: LPVOID, lpcbGroupAttributes: LPDWORD, lpReserved: LPVOID): HANDLE {.winapi, stdcall, dynlib: "wininet", importc: "FindFirstUrlCacheEntryExW".}
-  proc FindNextUrlCacheEntryEx*(hEnumHandle: HANDLE, lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbEntryInfo: LPDWORD, lpGroupAttributes: LPVOID, lpcbGroupAttributes: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FindNextUrlCacheEntryExW".}
-  proc FindFirstUrlCacheEntry*(lpszUrlSearchPattern: LPCWSTR, lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD): HANDLE {.winapi, stdcall, dynlib: "wininet", importc: "FindFirstUrlCacheEntryW".}
-  proc FindNextUrlCacheEntry*(hEnumHandle: HANDLE, lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FindNextUrlCacheEntryW".}
-  proc InternetSetPerSiteCookieDecision*(pchHostName: LPCWSTR, dwDecision: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetPerSiteCookieDecisionW".}
-  proc InternetGetPerSiteCookieDecision*(pchHostName: LPCWSTR, pResult: ptr int32): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGetPerSiteCookieDecisionW".}
-  proc InternetEnumPerSiteCookieDecision*(pszSiteName: LPWSTR, pcSiteNameSize: ptr int32, pdwDecision: ptr int32, dwIndex: int32): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetEnumPerSiteCookieDecisionW".}
-  proc InternetTimeFromSystemTime*(pst: ptr SYSTEMTIME, dwRFC: DWORD, lpszTime: LPWSTR, cbTime: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetTimeFromSystemTimeW".}
-  proc InternetTimeToSystemTime*(lpszTime: LPCWSTR, pst: ptr SYSTEMTIME, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetTimeToSystemTimeW".}
-  proc InternetSetStatusCallback*(hInternet: HINTERNET, lpfnInternetCallback: INTERNET_STATUS_CALLBACK): INTERNET_STATUS_CALLBACK {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetStatusCallbackW".}
-  proc InternetConfirmZoneCrossing*(hWnd: HWND, szUrlPrev: LPWSTR, szUrlNew: LPWSTR, bPost: WINBOOL): DWORD {.winapi, stdcall, dynlib: "wininet", importc: "InternetConfirmZoneCrossingW".}
-  proc InternetDial*(hwndParent: HWND, lpszConnectoid: LPWSTR, dwFlags: DWORD, lpdwConnection: ptr DWORD_PTR, dwReserved: DWORD): DWORD {.winapi, stdcall, dynlib: "wininet", importc: "InternetDialW".}
-  proc InternetGoOnline*(lpszURL: LPWSTR, hwndParent: HWND, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGoOnlineW".}
-  proc DeleteUrlCacheEntry*(lpszUrlName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "DeleteUrlCacheEntryW".}
-  proc SetUrlCacheEntryGroup*(lpszUrlName: LPCWSTR, dwFlags: DWORD, GroupId: GROUPID, pbGroupAttributes: LPBYTE, cbGroupAttributes: DWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "SetUrlCacheEntryGroupW".}
-  proc InternetSetDialState*(lpszConnectoid: LPCWSTR, dwState: DWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetDialStateW".}
-  proc InternetGetConnectedStateEx*(lpdwFlags: LPDWORD, lpszConnectionName: LPWSTR, dwBufLen: DWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGetConnectedStateExW".}
+
+  proc InternetCrackUrl*(
+    lpszUrl: LPCWSTR,
+    dwUrlLength: DWORD,
+    dwFlags: DWORD,
+    lpUrlComponents: LPURL_COMPONENTSW,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCrackUrlW".}
+
+  proc InternetCreateUrl*(
+    lpUrlComponents: LPURL_COMPONENTSW,
+    dwFlags: DWORD,
+    lpszUrl: LPWSTR,
+    lpdwUrlLength: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCreateUrlW".}
+
+  proc InternetCanonicalizeUrl*(
+    lpszUrl: LPCWSTR, lpszBuffer: LPWSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCanonicalizeUrlW".}
+
+  proc InternetCombineUrl*(
+    lpszBaseUrl: LPCWSTR,
+    lpszRelativeUrl: LPCWSTR,
+    lpszBuffer: LPWSTR,
+    lpdwBufferLength: LPDWORD,
+    dwFlags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCombineUrlW".}
+
+  proc InternetOpen*(
+    lpszAgent: LPCWSTR,
+    dwAccessType: DWORD,
+    lpszProxy: LPCWSTR,
+    lpszProxyBypass: LPCWSTR,
+    dwFlags: DWORD,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "InternetOpenW".}
+
+  proc InternetConnect*(
+    hInternet: HINTERNET,
+    lpszServerName: LPCWSTR,
+    nServerPort: INTERNET_PORT,
+    lpszUserName: LPCWSTR,
+    lpszPassword: LPCWSTR,
+    dwService: DWORD,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "InternetConnectW".}
+
+  proc InternetOpenUrl*(
+    hInternet: HINTERNET,
+    lpszUrl: LPCWSTR,
+    lpszHeaders: LPCWSTR,
+    dwHeadersLength: DWORD,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "InternetOpenUrlW".}
+
+  proc InternetReadFileEx*(
+    hFile: HINTERNET,
+    lpBuffersOut: LPINTERNET_BUFFERSW,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetReadFileExW".}
+
+  proc InternetFindNextFile*(
+    hFind: HINTERNET, lpvFindData: LPVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetFindNextFileW".}
+
+  proc InternetQueryOption*(
+    hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetQueryOptionW".}
+
+  proc InternetSetOption*(
+    hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetOptionW".}
+
+  proc InternetSetOptionEx*(
+    hInternet: HINTERNET,
+    dwOption: DWORD,
+    lpBuffer: LPVOID,
+    dwBufferLength: DWORD,
+    dwFlags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetOptionExW".}
+
+  proc InternetGetLastResponseInfo*(
+    lpdwError: LPDWORD, lpszBuffer: LPWSTR, lpdwBufferLength: LPDWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetGetLastResponseInfoW"
+  .}
+
+  proc FtpFindFirstFile*(
+    hConnect: HINTERNET,
+    lpszSearchFile: LPCWSTR,
+    lpFindFileData: LPWIN32_FIND_DATAW,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "FtpFindFirstFileW".}
+
+  proc FtpGetFile*(
+    hConnect: HINTERNET,
+    lpszRemoteFile: LPCWSTR,
+    lpszNewFile: LPCWSTR,
+    fFailIfExists: WINBOOL,
+    dwFlagsAndAttributes: DWORD,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpGetFileW".}
+
+  proc FtpPutFile*(
+    hConnect: HINTERNET,
+    lpszLocalFile: LPCWSTR,
+    lpszNewRemoteFile: LPCWSTR,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpPutFileW".}
+
+  proc FtpDeleteFile*(
+    hConnect: HINTERNET, lpszFileName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpDeleteFileW".}
+
+  proc FtpRenameFile*(
+    hConnect: HINTERNET, lpszExisting: LPCWSTR, lpszNew: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpRenameFileW".}
+
+  proc FtpOpenFile*(
+    hConnect: HINTERNET,
+    lpszFileName: LPCWSTR,
+    dwAccess: DWORD,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "FtpOpenFileW".}
+
+  proc FtpCreateDirectory*(
+    hConnect: HINTERNET, lpszDirectory: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpCreateDirectoryW".}
+
+  proc FtpRemoveDirectory*(
+    hConnect: HINTERNET, lpszDirectory: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpRemoveDirectoryW".}
+
+  proc FtpSetCurrentDirectory*(
+    hConnect: HINTERNET, lpszDirectory: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpSetCurrentDirectoryW".}
+
+  proc FtpGetCurrentDirectory*(
+    hConnect: HINTERNET, lpszCurrentDirectory: LPWSTR, lpdwCurrentDirectory: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpGetCurrentDirectoryW".}
+
+  proc FtpCommand*(
+    hConnect: HINTERNET,
+    fExpectResponse: WINBOOL,
+    dwFlags: DWORD,
+    lpszCommand: LPCWSTR,
+    dwContext: DWORD_PTR,
+    phFtpCommand: ptr HINTERNET,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpCommandW".}
+
+  proc GopherCreateLocator*(
+    lpszHost: LPCWSTR,
+    nServerPort: INTERNET_PORT,
+    lpszDisplayString: LPCWSTR,
+    lpszSelectorString: LPCWSTR,
+    dwGopherType: DWORD,
+    lpszLocator: LPWSTR,
+    lpdwBufferLength: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GopherCreateLocatorW".}
+
+  proc GopherGetLocatorType*(
+    lpszLocator: LPCWSTR, lpdwGopherType: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GopherGetLocatorTypeW".}
+
+  proc GopherFindFirstFile*(
+    hConnect: HINTERNET,
+    lpszLocator: LPCWSTR,
+    lpszSearchString: LPCWSTR,
+    lpFindData: LPGOPHER_FIND_DATAW,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "GopherFindFirstFileW".}
+
+  proc GopherOpenFile*(
+    hConnect: HINTERNET,
+    lpszLocator: LPCWSTR,
+    lpszView: LPCWSTR,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "GopherOpenFileW".}
+
+  proc GopherGetAttribute*(
+    hConnect: HINTERNET,
+    lpszLocator: LPCWSTR,
+    lpszAttributeName: LPCWSTR,
+    lpBuffer: LPBYTE,
+    dwBufferLength: DWORD,
+    lpdwCharactersReturned: LPDWORD,
+    lpfnEnumerator: GOPHER_ATTRIBUTE_ENUMERATOR,
+    dwContext: DWORD_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GopherGetAttributeW".}
+
+  proc HttpOpenRequest*(
+    hConnect: HINTERNET,
+    lpszVerb: LPCWSTR,
+    lpszObjectName: LPCWSTR,
+    lpszVersion: LPCWSTR,
+    lpszReferrer: LPCWSTR,
+    lplpszAcceptTypes: ptr LPCWSTR,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "HttpOpenRequestW".}
+
+  proc HttpAddRequestHeaders*(
+    hRequest: HINTERNET,
+    lpszHeaders: LPCWSTR,
+    dwHeadersLength: DWORD,
+    dwModifiers: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpAddRequestHeadersW".}
+
+  proc HttpSendRequest*(
+    hRequest: HINTERNET,
+    lpszHeaders: LPCWSTR,
+    dwHeadersLength: DWORD,
+    lpOptional: LPVOID,
+    dwOptionalLength: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpSendRequestW".}
+
+  proc HttpSendRequestEx*(
+    hRequest: HINTERNET,
+    lpBuffersIn: LPINTERNET_BUFFERSW,
+    lpBuffersOut: LPINTERNET_BUFFERSW,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpSendRequestExW".}
+
+  proc HttpEndRequest*(
+    hRequest: HINTERNET,
+    lpBuffersOut: LPINTERNET_BUFFERSW,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpEndRequestW".}
+
+  proc HttpQueryInfo*(
+    hRequest: HINTERNET,
+    dwInfoLevel: DWORD,
+    lpBuffer: LPVOID,
+    lpdwBufferLength: LPDWORD,
+    lpdwIndex: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpQueryInfoW".}
+
+  proc InternetSetCookie*(
+    lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetCookieW".}
+
+  proc InternetGetCookie*(
+    lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPWSTR, lpdwSize: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGetCookieW".}
+
+  proc InternetSetCookieEx*(
+    lpszUrl: LPCWSTR,
+    lpszCookieName: LPCWSTR,
+    lpszCookieData: LPCWSTR,
+    dwFlags: DWORD,
+    dwReserved: DWORD_PTR,
+  ): DWORD {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetCookieExW".}
+
+  proc InternetGetCookieEx*(
+    lpszUrl: LPCWSTR,
+    lpszCookieName: LPCWSTR,
+    lpszCookieData: LPWSTR,
+    lpdwSize: LPDWORD,
+    dwFlags: DWORD,
+    lpReserved: LPVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGetCookieExW".}
+
+  proc InternetCheckConnection*(
+    lpszUrl: LPCWSTR, dwFlags: DWORD, dwReserved: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCheckConnectionW".}
+
+  proc CreateUrlCacheEntry*(
+    lpszUrlName: LPCWSTR,
+    dwExpectedFileSize: DWORD,
+    lpszFileExtension: LPCWSTR,
+    lpszFileName: LPWSTR,
+    dwReserved: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "CreateUrlCacheEntryW".}
+
+  proc CommitUrlCacheEntry*(
+    lpszUrlName: LPCWSTR,
+    lpszLocalFileName: LPCWSTR,
+    ExpireTime: FILETIME,
+    LastModifiedTime: FILETIME,
+    CacheEntryType: DWORD,
+    lpszHeaderInfo: LPWSTR,
+    dwHeaders: DWORD,
+    lpszFileExtension: LPCWSTR,
+    lpszOriginalUrl: LPCWSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "CommitUrlCacheEntryW".}
+
+  proc RetrieveUrlCacheEntryFile*(
+    lpszUrlName: LPCWSTR,
+    lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+    lpcbCacheEntryInfo: LPDWORD,
+    dwReserved: DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "RetrieveUrlCacheEntryFileW"
+  .}
+
+  proc UnlockUrlCacheEntryFile*(
+    lpszUrlName: LPCWSTR, dwReserved: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "UnlockUrlCacheEntryFileW".}
+
+  proc RetrieveUrlCacheEntryStream*(
+    lpszUrlName: LPCWSTR,
+    lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+    lpcbCacheEntryInfo: LPDWORD,
+    fRandomRead: WINBOOL,
+    dwReserved: DWORD,
+  ): HANDLE {.
+    winapi, stdcall, dynlib: "wininet", importc: "RetrieveUrlCacheEntryStreamW"
+  .}
+
+  proc GetUrlCacheEntryInfo*(
+    lpszUrlName: LPCWSTR,
+    lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+    lpcbCacheEntryInfo: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GetUrlCacheEntryInfoW".}
+
+  proc GetUrlCacheGroupAttribute*(
+    gid: GROUPID,
+    dwFlags: DWORD,
+    dwAttributes: DWORD,
+    lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOW,
+    lpdwGroupInfo: LPDWORD,
+    lpReserved: LPVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "GetUrlCacheGroupAttributeW"
+  .}
+
+  proc SetUrlCacheGroupAttribute*(
+    gid: GROUPID,
+    dwFlags: DWORD,
+    dwAttributes: DWORD,
+    lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOW,
+    lpReserved: LPVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "SetUrlCacheGroupAttributeW"
+  .}
+
+  proc GetUrlCacheEntryInfoEx*(
+    lpszUrl: LPCWSTR,
+    lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+    lpcbCacheEntryInfo: LPDWORD,
+    lpszRedirectUrl: LPWSTR,
+    lpcbRedirectUrl: LPDWORD,
+    lpReserved: LPVOID,
+    dwFlags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GetUrlCacheEntryInfoExW".}
+
+  proc SetUrlCacheEntryInfo*(
+    lpszUrlName: LPCWSTR,
+    lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+    dwFieldControl: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "SetUrlCacheEntryInfoW".}
+
+  proc FindFirstUrlCacheEntryEx*(
+    lpszUrlSearchPattern: LPCWSTR,
+    dwFlags: DWORD,
+    dwFilter: DWORD,
+    GroupId: GROUPID,
+    lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+    lpcbEntryInfo: LPDWORD,
+    lpGroupAttributes: LPVOID,
+    lpcbGroupAttributes: LPDWORD,
+    lpReserved: LPVOID,
+  ): HANDLE {.winapi, stdcall, dynlib: "wininet", importc: "FindFirstUrlCacheEntryExW".}
+
+  proc FindNextUrlCacheEntryEx*(
+    hEnumHandle: HANDLE,
+    lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+    lpcbEntryInfo: LPDWORD,
+    lpGroupAttributes: LPVOID,
+    lpcbGroupAttributes: LPDWORD,
+    lpReserved: LPVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FindNextUrlCacheEntryExW".}
+
+  proc FindFirstUrlCacheEntry*(
+    lpszUrlSearchPattern: LPCWSTR,
+    lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+    lpcbCacheEntryInfo: LPDWORD,
+  ): HANDLE {.winapi, stdcall, dynlib: "wininet", importc: "FindFirstUrlCacheEntryW".}
+
+  proc FindNextUrlCacheEntry*(
+    hEnumHandle: HANDLE,
+    lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW,
+    lpcbCacheEntryInfo: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FindNextUrlCacheEntryW".}
+
+  proc InternetSetPerSiteCookieDecision*(
+    pchHostName: LPCWSTR, dwDecision: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetSetPerSiteCookieDecisionW"
+  .}
+
+  proc InternetGetPerSiteCookieDecision*(
+    pchHostName: LPCWSTR, pResult: ptr int32
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetGetPerSiteCookieDecisionW"
+  .}
+
+  proc InternetEnumPerSiteCookieDecision*(
+    pszSiteName: LPWSTR,
+    pcSiteNameSize: ptr int32,
+    pdwDecision: ptr int32,
+    dwIndex: int32,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetEnumPerSiteCookieDecisionW"
+  .}
+
+  proc InternetTimeFromSystemTime*(
+    pst: ptr SYSTEMTIME, dwRFC: DWORD, lpszTime: LPWSTR, cbTime: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetTimeFromSystemTimeW"
+  .}
+
+  proc InternetTimeToSystemTime*(
+    lpszTime: LPCWSTR, pst: ptr SYSTEMTIME, dwReserved: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetTimeToSystemTimeW"
+  .}
+
+  proc InternetSetStatusCallback*(
+    hInternet: HINTERNET, lpfnInternetCallback: INTERNET_STATUS_CALLBACK
+  ): INTERNET_STATUS_CALLBACK {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetSetStatusCallbackW"
+  .}
+
+  proc InternetConfirmZoneCrossing*(
+    hWnd: HWND, szUrlPrev: LPWSTR, szUrlNew: LPWSTR, bPost: WINBOOL
+  ): DWORD {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetConfirmZoneCrossingW"
+  .}
+
+  proc InternetDial*(
+    hwndParent: HWND,
+    lpszConnectoid: LPWSTR,
+    dwFlags: DWORD,
+    lpdwConnection: ptr DWORD_PTR,
+    dwReserved: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "wininet", importc: "InternetDialW".}
+
+  proc InternetGoOnline*(
+    lpszURL: LPWSTR, hwndParent: HWND, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGoOnlineW".}
+
+  proc DeleteUrlCacheEntry*(
+    lpszUrlName: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "DeleteUrlCacheEntryW".}
+
+  proc SetUrlCacheEntryGroup*(
+    lpszUrlName: LPCWSTR,
+    dwFlags: DWORD,
+    GroupId: GROUPID,
+    pbGroupAttributes: LPBYTE,
+    cbGroupAttributes: DWORD,
+    lpReserved: LPVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "SetUrlCacheEntryGroupW".}
+
+  proc InternetSetDialState*(
+    lpszConnectoid: LPCWSTR, dwState: DWORD, dwReserved: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetDialStateW".}
+
+  proc InternetGetConnectedStateEx*(
+    lpdwFlags: LPDWORD, lpszConnectionName: LPWSTR, dwBufLen: DWORD, dwReserved: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetGetConnectedStateExW"
+  .}
+
 when winimAnsi:
   type
     INTERNET_PER_CONN_OPTION* = INTERNET_PER_CONN_OPTIONA
@@ -1360,70 +2778,473 @@
     LPINTERNET_CACHE_ENTRY_INFO* = LPINTERNET_CACHE_ENTRY_INFOA
     INTERNET_CACHE_GROUP_INFO* = INTERNET_CACHE_GROUP_INFOA
     LPINTERNET_CACHE_GROUP_INFO* = LPINTERNET_CACHE_GROUP_INFOA
-  proc InternetCrackUrl*(lpszUrl: LPCSTR, dwUrlLength: DWORD, dwFlags: DWORD, lpUrlComponents: LPURL_COMPONENTSA): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCrackUrlA".}
-  proc InternetCreateUrl*(lpUrlComponents: LPURL_COMPONENTSA, dwFlags: DWORD, lpszUrl: LPSTR, lpdwUrlLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCreateUrlA".}
-  proc InternetCanonicalizeUrl*(lpszUrl: LPCSTR, lpszBuffer: LPSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCanonicalizeUrlA".}
-  proc InternetCombineUrl*(lpszBaseUrl: LPCSTR, lpszRelativeUrl: LPCSTR, lpszBuffer: LPSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCombineUrlA".}
-  proc InternetOpen*(lpszAgent: LPCSTR, dwAccessType: DWORD, lpszProxy: LPCSTR, lpszProxyBypass: LPCSTR, dwFlags: DWORD): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "InternetOpenA".}
-  proc InternetConnect*(hInternet: HINTERNET, lpszServerName: LPCSTR, nServerPort: INTERNET_PORT, lpszUserName: LPCSTR, lpszPassword: LPCSTR, dwService: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "InternetConnectA".}
-  proc InternetOpenUrl*(hInternet: HINTERNET, lpszUrl: LPCSTR, lpszHeaders: LPCSTR, dwHeadersLength: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "InternetOpenUrlA".}
-  proc InternetReadFileEx*(hFile: HINTERNET, lpBuffersOut: LPINTERNET_BUFFERSA, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetReadFileExA".}
-  proc InternetFindNextFile*(hFind: HINTERNET, lpvFindData: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetFindNextFileA".}
-  proc InternetQueryOption*(hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetQueryOptionA".}
-  proc InternetSetOption*(hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetOptionA".}
-  proc InternetSetOptionEx*(hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetOptionExA".}
-  proc InternetGetLastResponseInfo*(lpdwError: LPDWORD, lpszBuffer: LPSTR, lpdwBufferLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGetLastResponseInfoA".}
-  proc FtpFindFirstFile*(hConnect: HINTERNET, lpszSearchFile: LPCSTR, lpFindFileData: LPWIN32_FIND_DATAA, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "FtpFindFirstFileA".}
-  proc FtpGetFile*(hConnect: HINTERNET, lpszRemoteFile: LPCSTR, lpszNewFile: LPCSTR, fFailIfExists: WINBOOL, dwFlagsAndAttributes: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpGetFileA".}
-  proc FtpPutFile*(hConnect: HINTERNET, lpszLocalFile: LPCSTR, lpszNewRemoteFile: LPCSTR, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpPutFileA".}
-  proc FtpDeleteFile*(hConnect: HINTERNET, lpszFileName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpDeleteFileA".}
-  proc FtpRenameFile*(hConnect: HINTERNET, lpszExisting: LPCSTR, lpszNew: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpRenameFileA".}
-  proc FtpOpenFile*(hConnect: HINTERNET, lpszFileName: LPCSTR, dwAccess: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "FtpOpenFileA".}
-  proc FtpCreateDirectory*(hConnect: HINTERNET, lpszDirectory: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpCreateDirectoryA".}
-  proc FtpRemoveDirectory*(hConnect: HINTERNET, lpszDirectory: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpRemoveDirectoryA".}
-  proc FtpSetCurrentDirectory*(hConnect: HINTERNET, lpszDirectory: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpSetCurrentDirectoryA".}
-  proc FtpGetCurrentDirectory*(hConnect: HINTERNET, lpszCurrentDirectory: LPSTR, lpdwCurrentDirectory: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpGetCurrentDirectoryA".}
-  proc FtpCommand*(hConnect: HINTERNET, fExpectResponse: WINBOOL, dwFlags: DWORD, lpszCommand: LPCSTR, dwContext: DWORD_PTR, phFtpCommand: ptr HINTERNET): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpCommandA".}
-  proc GopherCreateLocator*(lpszHost: LPCSTR, nServerPort: INTERNET_PORT, lpszDisplayString: LPCSTR, lpszSelectorString: LPCSTR, dwGopherType: DWORD, lpszLocator: LPSTR, lpdwBufferLength: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GopherCreateLocatorA".}
-  proc GopherGetLocatorType*(lpszLocator: LPCSTR, lpdwGopherType: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GopherGetLocatorTypeA".}
-  proc GopherFindFirstFile*(hConnect: HINTERNET, lpszLocator: LPCSTR, lpszSearchString: LPCSTR, lpFindData: LPGOPHER_FIND_DATAA, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "GopherFindFirstFileA".}
-  proc GopherOpenFile*(hConnect: HINTERNET, lpszLocator: LPCSTR, lpszView: LPCSTR, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "GopherOpenFileA".}
-  proc GopherGetAttribute*(hConnect: HINTERNET, lpszLocator: LPCSTR, lpszAttributeName: LPCSTR, lpBuffer: LPBYTE, dwBufferLength: DWORD, lpdwCharactersReturned: LPDWORD, lpfnEnumerator: GOPHER_ATTRIBUTE_ENUMERATOR, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GopherGetAttributeA".}
-  proc HttpOpenRequest*(hConnect: HINTERNET, lpszVerb: LPCSTR, lpszObjectName: LPCSTR, lpszVersion: LPCSTR, lpszReferrer: LPCSTR, lplpszAcceptTypes: ptr LPCSTR, dwFlags: DWORD, dwContext: DWORD_PTR): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "HttpOpenRequestA".}
-  proc HttpAddRequestHeaders*(hRequest: HINTERNET, lpszHeaders: LPCSTR, dwHeadersLength: DWORD, dwModifiers: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpAddRequestHeadersA".}
-  proc HttpSendRequest*(hRequest: HINTERNET, lpszHeaders: LPCSTR, dwHeadersLength: DWORD, lpOptional: LPVOID, dwOptionalLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpSendRequestA".}
-  proc HttpSendRequestEx*(hRequest: HINTERNET, lpBuffersIn: LPINTERNET_BUFFERSA, lpBuffersOut: LPINTERNET_BUFFERSA, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpSendRequestExA".}
-  proc HttpEndRequest*(hRequest: HINTERNET, lpBuffersOut: LPINTERNET_BUFFERSA, dwFlags: DWORD, dwContext: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpEndRequestA".}
-  proc HttpQueryInfo*(hRequest: HINTERNET, dwInfoLevel: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD, lpdwIndex: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpQueryInfoA".}
-  proc InternetSetCookie*(lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetCookieA".}
-  proc InternetGetCookie*(lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPSTR, lpdwSize: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGetCookieA".}
-  proc InternetSetCookieEx*(lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPCSTR, dwFlags: DWORD, dwReserved: DWORD_PTR): DWORD {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetCookieExA".}
-  proc InternetGetCookieEx*(lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPSTR, lpdwSize: LPDWORD, dwFlags: DWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGetCookieExA".}
-  proc InternetCheckConnection*(lpszUrl: LPCSTR, dwFlags: DWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCheckConnectionA".}
-  proc CreateUrlCacheEntry*(lpszUrlName: LPCSTR, dwExpectedFileSize: DWORD, lpszFileExtension: LPCSTR, lpszFileName: LPSTR, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "CreateUrlCacheEntryA".}
-  proc CommitUrlCacheEntry*(lpszUrlName: LPCSTR, lpszLocalFileName: LPCSTR, ExpireTime: FILETIME, LastModifiedTime: FILETIME, CacheEntryType: DWORD, lpHeaderInfo: LPBYTE, dwHeaderSize: DWORD, lpszFileExtension: LPCSTR, lpszOriginalUrl: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "CommitUrlCacheEntryA".}
-  proc RetrieveUrlCacheEntryFile*(lpszUrlName: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "RetrieveUrlCacheEntryFileA".}
-  proc UnlockUrlCacheEntryFile*(lpszUrlName: LPCSTR, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "UnlockUrlCacheEntryFileA".}
-  proc RetrieveUrlCacheEntryStream*(lpszUrlName: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD, fRandomRead: WINBOOL, dwReserved: DWORD): HANDLE {.winapi, stdcall, dynlib: "wininet", importc: "RetrieveUrlCacheEntryStreamA".}
-  proc GetUrlCacheEntryInfo*(lpszUrlName: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GetUrlCacheEntryInfoA".}
-  proc GetUrlCacheGroupAttribute*(gid: GROUPID, dwFlags: DWORD, dwAttributes: DWORD, lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOA, lpdwGroupInfo: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GetUrlCacheGroupAttributeA".}
-  proc SetUrlCacheGroupAttribute*(gid: GROUPID, dwFlags: DWORD, dwAttributes: DWORD, lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOA, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "SetUrlCacheGroupAttributeA".}
-  proc GetUrlCacheEntryInfoEx*(lpszUrl: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD, lpszRedirectUrl: LPSTR, lpcbRedirectUrl: LPDWORD, lpReserved: LPVOID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GetUrlCacheEntryInfoExA".}
-  proc SetUrlCacheEntryInfo*(lpszUrlName: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, dwFieldControl: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "SetUrlCacheEntryInfoA".}
-  proc FindFirstUrlCacheEntryEx*(lpszUrlSearchPattern: LPCSTR, dwFlags: DWORD, dwFilter: DWORD, GroupId: GROUPID, lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbEntryInfo: LPDWORD, lpGroupAttributes: LPVOID, lpcbGroupAttributes: LPDWORD, lpReserved: LPVOID): HANDLE {.winapi, stdcall, dynlib: "wininet", importc: "FindFirstUrlCacheEntryExA".}
-  proc FindNextUrlCacheEntryEx*(hEnumHandle: HANDLE, lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbEntryInfo: LPDWORD, lpGroupAttributes: LPVOID, lpcbGroupAttributes: LPDWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FindNextUrlCacheEntryExA".}
-  proc FindFirstUrlCacheEntry*(lpszUrlSearchPattern: LPCSTR, lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD): HANDLE {.winapi, stdcall, dynlib: "wininet", importc: "FindFirstUrlCacheEntryA".}
-  proc FindNextUrlCacheEntry*(hEnumHandle: HANDLE, lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FindNextUrlCacheEntryA".}
-  proc InternetSetPerSiteCookieDecision*(pchHostName: LPCSTR, dwDecision: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetPerSiteCookieDecisionA".}
-  proc InternetGetPerSiteCookieDecision*(pchHostName: LPCSTR, pResult: ptr int32): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGetPerSiteCookieDecisionA".}
-  proc InternetEnumPerSiteCookieDecision*(pszSiteName: LPSTR, pcSiteNameSize: ptr int32, pdwDecision: ptr int32, dwIndex: int32): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetEnumPerSiteCookieDecisionA".}
-  proc InternetTimeFromSystemTime*(pst: ptr SYSTEMTIME, dwRFC: DWORD, lpszTime: LPSTR, cbTime: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetTimeFromSystemTimeA".}
-  proc InternetTimeToSystemTime*(lpszTime: LPCSTR, pst: ptr SYSTEMTIME, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetTimeToSystemTimeA".}
-  proc InternetSetStatusCallback*(hInternet: HINTERNET, lpfnInternetCallback: INTERNET_STATUS_CALLBACK): INTERNET_STATUS_CALLBACK {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetStatusCallbackA".}
-  proc InternetConfirmZoneCrossing*(hWnd: HWND, szUrlPrev: LPSTR, szUrlNew: LPSTR, bPost: WINBOOL): DWORD {.winapi, stdcall, dynlib: "wininet", importc: "InternetConfirmZoneCrossingA".}
-  proc InternetDial*(hwndParent: HWND, lpszConnectoid: LPSTR, dwFlags: DWORD, lpdwConnection: ptr DWORD_PTR, dwReserved: DWORD): DWORD {.winapi, stdcall, dynlib: "wininet", importc: "InternetDialA".}
-  proc InternetGoOnline*(lpszURL: LPSTR, hwndParent: HWND, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGoOnlineA".}
-  proc DeleteUrlCacheEntry*(lpszUrlName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "DeleteUrlCacheEntryA".}
-  proc SetUrlCacheEntryGroup*(lpszUrlName: LPCSTR, dwFlags: DWORD, GroupId: GROUPID, pbGroupAttributes: LPBYTE, cbGroupAttributes: DWORD, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "SetUrlCacheEntryGroupA".}
-  proc InternetSetDialState*(lpszConnectoid: LPCSTR, dwState: DWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetDialStateA".}
-  proc InternetGetConnectedStateEx*(lpdwFlags: LPDWORD, lpszConnectionName: LPSTR, dwBufLen: DWORD, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGetConnectedStateExA".}
+
+  proc InternetCrackUrl*(
+    lpszUrl: LPCSTR,
+    dwUrlLength: DWORD,
+    dwFlags: DWORD,
+    lpUrlComponents: LPURL_COMPONENTSA,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCrackUrlA".}
+
+  proc InternetCreateUrl*(
+    lpUrlComponents: LPURL_COMPONENTSA,
+    dwFlags: DWORD,
+    lpszUrl: LPSTR,
+    lpdwUrlLength: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCreateUrlA".}
+
+  proc InternetCanonicalizeUrl*(
+    lpszUrl: LPCSTR, lpszBuffer: LPSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCanonicalizeUrlA".}
+
+  proc InternetCombineUrl*(
+    lpszBaseUrl: LPCSTR,
+    lpszRelativeUrl: LPCSTR,
+    lpszBuffer: LPSTR,
+    lpdwBufferLength: LPDWORD,
+    dwFlags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCombineUrlA".}
+
+  proc InternetOpen*(
+    lpszAgent: LPCSTR,
+    dwAccessType: DWORD,
+    lpszProxy: LPCSTR,
+    lpszProxyBypass: LPCSTR,
+    dwFlags: DWORD,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "InternetOpenA".}
+
+  proc InternetConnect*(
+    hInternet: HINTERNET,
+    lpszServerName: LPCSTR,
+    nServerPort: INTERNET_PORT,
+    lpszUserName: LPCSTR,
+    lpszPassword: LPCSTR,
+    dwService: DWORD,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "InternetConnectA".}
+
+  proc InternetOpenUrl*(
+    hInternet: HINTERNET,
+    lpszUrl: LPCSTR,
+    lpszHeaders: LPCSTR,
+    dwHeadersLength: DWORD,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "InternetOpenUrlA".}
+
+  proc InternetReadFileEx*(
+    hFile: HINTERNET,
+    lpBuffersOut: LPINTERNET_BUFFERSA,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetReadFileExA".}
+
+  proc InternetFindNextFile*(
+    hFind: HINTERNET, lpvFindData: LPVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetFindNextFileA".}
+
+  proc InternetQueryOption*(
+    hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetQueryOptionA".}
+
+  proc InternetSetOption*(
+    hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetOptionA".}
+
+  proc InternetSetOptionEx*(
+    hInternet: HINTERNET,
+    dwOption: DWORD,
+    lpBuffer: LPVOID,
+    dwBufferLength: DWORD,
+    dwFlags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetOptionExA".}
+
+  proc InternetGetLastResponseInfo*(
+    lpdwError: LPDWORD, lpszBuffer: LPSTR, lpdwBufferLength: LPDWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetGetLastResponseInfoA"
+  .}
+
+  proc FtpFindFirstFile*(
+    hConnect: HINTERNET,
+    lpszSearchFile: LPCSTR,
+    lpFindFileData: LPWIN32_FIND_DATAA,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "FtpFindFirstFileA".}
+
+  proc FtpGetFile*(
+    hConnect: HINTERNET,
+    lpszRemoteFile: LPCSTR,
+    lpszNewFile: LPCSTR,
+    fFailIfExists: WINBOOL,
+    dwFlagsAndAttributes: DWORD,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpGetFileA".}
+
+  proc FtpPutFile*(
+    hConnect: HINTERNET,
+    lpszLocalFile: LPCSTR,
+    lpszNewRemoteFile: LPCSTR,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpPutFileA".}
+
+  proc FtpDeleteFile*(
+    hConnect: HINTERNET, lpszFileName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpDeleteFileA".}
+
+  proc FtpRenameFile*(
+    hConnect: HINTERNET, lpszExisting: LPCSTR, lpszNew: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpRenameFileA".}
+
+  proc FtpOpenFile*(
+    hConnect: HINTERNET,
+    lpszFileName: LPCSTR,
+    dwAccess: DWORD,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "FtpOpenFileA".}
+
+  proc FtpCreateDirectory*(
+    hConnect: HINTERNET, lpszDirectory: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpCreateDirectoryA".}
+
+  proc FtpRemoveDirectory*(
+    hConnect: HINTERNET, lpszDirectory: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpRemoveDirectoryA".}
+
+  proc FtpSetCurrentDirectory*(
+    hConnect: HINTERNET, lpszDirectory: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpSetCurrentDirectoryA".}
+
+  proc FtpGetCurrentDirectory*(
+    hConnect: HINTERNET, lpszCurrentDirectory: LPSTR, lpdwCurrentDirectory: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpGetCurrentDirectoryA".}
+
+  proc FtpCommand*(
+    hConnect: HINTERNET,
+    fExpectResponse: WINBOOL,
+    dwFlags: DWORD,
+    lpszCommand: LPCSTR,
+    dwContext: DWORD_PTR,
+    phFtpCommand: ptr HINTERNET,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FtpCommandA".}
+
+  proc GopherCreateLocator*(
+    lpszHost: LPCSTR,
+    nServerPort: INTERNET_PORT,
+    lpszDisplayString: LPCSTR,
+    lpszSelectorString: LPCSTR,
+    dwGopherType: DWORD,
+    lpszLocator: LPSTR,
+    lpdwBufferLength: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GopherCreateLocatorA".}
+
+  proc GopherGetLocatorType*(
+    lpszLocator: LPCSTR, lpdwGopherType: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GopherGetLocatorTypeA".}
+
+  proc GopherFindFirstFile*(
+    hConnect: HINTERNET,
+    lpszLocator: LPCSTR,
+    lpszSearchString: LPCSTR,
+    lpFindData: LPGOPHER_FIND_DATAA,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "GopherFindFirstFileA".}
+
+  proc GopherOpenFile*(
+    hConnect: HINTERNET,
+    lpszLocator: LPCSTR,
+    lpszView: LPCSTR,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "GopherOpenFileA".}
+
+  proc GopherGetAttribute*(
+    hConnect: HINTERNET,
+    lpszLocator: LPCSTR,
+    lpszAttributeName: LPCSTR,
+    lpBuffer: LPBYTE,
+    dwBufferLength: DWORD,
+    lpdwCharactersReturned: LPDWORD,
+    lpfnEnumerator: GOPHER_ATTRIBUTE_ENUMERATOR,
+    dwContext: DWORD_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GopherGetAttributeA".}
+
+  proc HttpOpenRequest*(
+    hConnect: HINTERNET,
+    lpszVerb: LPCSTR,
+    lpszObjectName: LPCSTR,
+    lpszVersion: LPCSTR,
+    lpszReferrer: LPCSTR,
+    lplpszAcceptTypes: ptr LPCSTR,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): HINTERNET {.winapi, stdcall, dynlib: "wininet", importc: "HttpOpenRequestA".}
+
+  proc HttpAddRequestHeaders*(
+    hRequest: HINTERNET, lpszHeaders: LPCSTR, dwHeadersLength: DWORD, dwModifiers: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpAddRequestHeadersA".}
+
+  proc HttpSendRequest*(
+    hRequest: HINTERNET,
+    lpszHeaders: LPCSTR,
+    dwHeadersLength: DWORD,
+    lpOptional: LPVOID,
+    dwOptionalLength: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpSendRequestA".}
+
+  proc HttpSendRequestEx*(
+    hRequest: HINTERNET,
+    lpBuffersIn: LPINTERNET_BUFFERSA,
+    lpBuffersOut: LPINTERNET_BUFFERSA,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpSendRequestExA".}
+
+  proc HttpEndRequest*(
+    hRequest: HINTERNET,
+    lpBuffersOut: LPINTERNET_BUFFERSA,
+    dwFlags: DWORD,
+    dwContext: DWORD_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpEndRequestA".}
+
+  proc HttpQueryInfo*(
+    hRequest: HINTERNET,
+    dwInfoLevel: DWORD,
+    lpBuffer: LPVOID,
+    lpdwBufferLength: LPDWORD,
+    lpdwIndex: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "HttpQueryInfoA".}
+
+  proc InternetSetCookie*(
+    lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetCookieA".}
+
+  proc InternetGetCookie*(
+    lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPSTR, lpdwSize: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGetCookieA".}
+
+  proc InternetSetCookieEx*(
+    lpszUrl: LPCSTR,
+    lpszCookieName: LPCSTR,
+    lpszCookieData: LPCSTR,
+    dwFlags: DWORD,
+    dwReserved: DWORD_PTR,
+  ): DWORD {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetCookieExA".}
+
+  proc InternetGetCookieEx*(
+    lpszUrl: LPCSTR,
+    lpszCookieName: LPCSTR,
+    lpszCookieData: LPSTR,
+    lpdwSize: LPDWORD,
+    dwFlags: DWORD,
+    lpReserved: LPVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGetCookieExA".}
+
+  proc InternetCheckConnection*(
+    lpszUrl: LPCSTR, dwFlags: DWORD, dwReserved: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetCheckConnectionA".}
+
+  proc CreateUrlCacheEntry*(
+    lpszUrlName: LPCSTR,
+    dwExpectedFileSize: DWORD,
+    lpszFileExtension: LPCSTR,
+    lpszFileName: LPSTR,
+    dwReserved: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "CreateUrlCacheEntryA".}
+
+  proc CommitUrlCacheEntry*(
+    lpszUrlName: LPCSTR,
+    lpszLocalFileName: LPCSTR,
+    ExpireTime: FILETIME,
+    LastModifiedTime: FILETIME,
+    CacheEntryType: DWORD,
+    lpHeaderInfo: LPBYTE,
+    dwHeaderSize: DWORD,
+    lpszFileExtension: LPCSTR,
+    lpszOriginalUrl: LPCSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "CommitUrlCacheEntryA".}
+
+  proc RetrieveUrlCacheEntryFile*(
+    lpszUrlName: LPCSTR,
+    lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+    lpcbCacheEntryInfo: LPDWORD,
+    dwReserved: DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "RetrieveUrlCacheEntryFileA"
+  .}
+
+  proc UnlockUrlCacheEntryFile*(
+    lpszUrlName: LPCSTR, dwReserved: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "UnlockUrlCacheEntryFileA".}
+
+  proc RetrieveUrlCacheEntryStream*(
+    lpszUrlName: LPCSTR,
+    lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+    lpcbCacheEntryInfo: LPDWORD,
+    fRandomRead: WINBOOL,
+    dwReserved: DWORD,
+  ): HANDLE {.
+    winapi, stdcall, dynlib: "wininet", importc: "RetrieveUrlCacheEntryStreamA"
+  .}
+
+  proc GetUrlCacheEntryInfo*(
+    lpszUrlName: LPCSTR,
+    lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+    lpcbCacheEntryInfo: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GetUrlCacheEntryInfoA".}
+
+  proc GetUrlCacheGroupAttribute*(
+    gid: GROUPID,
+    dwFlags: DWORD,
+    dwAttributes: DWORD,
+    lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOA,
+    lpdwGroupInfo: LPDWORD,
+    lpReserved: LPVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "GetUrlCacheGroupAttributeA"
+  .}
+
+  proc SetUrlCacheGroupAttribute*(
+    gid: GROUPID,
+    dwFlags: DWORD,
+    dwAttributes: DWORD,
+    lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOA,
+    lpReserved: LPVOID,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "SetUrlCacheGroupAttributeA"
+  .}
+
+  proc GetUrlCacheEntryInfoEx*(
+    lpszUrl: LPCSTR,
+    lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+    lpcbCacheEntryInfo: LPDWORD,
+    lpszRedirectUrl: LPSTR,
+    lpcbRedirectUrl: LPDWORD,
+    lpReserved: LPVOID,
+    dwFlags: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "GetUrlCacheEntryInfoExA".}
+
+  proc SetUrlCacheEntryInfo*(
+    lpszUrlName: LPCSTR,
+    lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+    dwFieldControl: DWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "SetUrlCacheEntryInfoA".}
+
+  proc FindFirstUrlCacheEntryEx*(
+    lpszUrlSearchPattern: LPCSTR,
+    dwFlags: DWORD,
+    dwFilter: DWORD,
+    GroupId: GROUPID,
+    lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+    lpcbEntryInfo: LPDWORD,
+    lpGroupAttributes: LPVOID,
+    lpcbGroupAttributes: LPDWORD,
+    lpReserved: LPVOID,
+  ): HANDLE {.winapi, stdcall, dynlib: "wininet", importc: "FindFirstUrlCacheEntryExA".}
+
+  proc FindNextUrlCacheEntryEx*(
+    hEnumHandle: HANDLE,
+    lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+    lpcbEntryInfo: LPDWORD,
+    lpGroupAttributes: LPVOID,
+    lpcbGroupAttributes: LPDWORD,
+    lpReserved: LPVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FindNextUrlCacheEntryExA".}
+
+  proc FindFirstUrlCacheEntry*(
+    lpszUrlSearchPattern: LPCSTR,
+    lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+    lpcbCacheEntryInfo: LPDWORD,
+  ): HANDLE {.winapi, stdcall, dynlib: "wininet", importc: "FindFirstUrlCacheEntryA".}
+
+  proc FindNextUrlCacheEntry*(
+    hEnumHandle: HANDLE,
+    lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA,
+    lpcbCacheEntryInfo: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "FindNextUrlCacheEntryA".}
+
+  proc InternetSetPerSiteCookieDecision*(
+    pchHostName: LPCSTR, dwDecision: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetSetPerSiteCookieDecisionA"
+  .}
+
+  proc InternetGetPerSiteCookieDecision*(
+    pchHostName: LPCSTR, pResult: ptr int32
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetGetPerSiteCookieDecisionA"
+  .}
+
+  proc InternetEnumPerSiteCookieDecision*(
+    pszSiteName: LPSTR,
+    pcSiteNameSize: ptr int32,
+    pdwDecision: ptr int32,
+    dwIndex: int32,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetEnumPerSiteCookieDecisionA"
+  .}
+
+  proc InternetTimeFromSystemTime*(
+    pst: ptr SYSTEMTIME, dwRFC: DWORD, lpszTime: LPSTR, cbTime: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetTimeFromSystemTimeA"
+  .}
+
+  proc InternetTimeToSystemTime*(
+    lpszTime: LPCSTR, pst: ptr SYSTEMTIME, dwReserved: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetTimeToSystemTimeA"
+  .}
+
+  proc InternetSetStatusCallback*(
+    hInternet: HINTERNET, lpfnInternetCallback: INTERNET_STATUS_CALLBACK
+  ): INTERNET_STATUS_CALLBACK {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetSetStatusCallbackA"
+  .}
+
+  proc InternetConfirmZoneCrossing*(
+    hWnd: HWND, szUrlPrev: LPSTR, szUrlNew: LPSTR, bPost: WINBOOL
+  ): DWORD {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetConfirmZoneCrossingA"
+  .}
+
+  proc InternetDial*(
+    hwndParent: HWND,
+    lpszConnectoid: LPSTR,
+    dwFlags: DWORD,
+    lpdwConnection: ptr DWORD_PTR,
+    dwReserved: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "wininet", importc: "InternetDialA".}
+
+  proc InternetGoOnline*(
+    lpszURL: LPSTR, hwndParent: HWND, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetGoOnlineA".}
+
+  proc DeleteUrlCacheEntry*(
+    lpszUrlName: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "DeleteUrlCacheEntryA".}
+
+  proc SetUrlCacheEntryGroup*(
+    lpszUrlName: LPCSTR,
+    dwFlags: DWORD,
+    GroupId: GROUPID,
+    pbGroupAttributes: LPBYTE,
+    cbGroupAttributes: DWORD,
+    lpReserved: LPVOID,
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "SetUrlCacheEntryGroupA".}
+
+  proc InternetSetDialState*(
+    lpszConnectoid: LPCSTR, dwState: DWORD, dwReserved: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "wininet", importc: "InternetSetDialStateA".}
+
+  proc InternetGetConnectedStateEx*(
+    lpdwFlags: LPDWORD, lpszConnectionName: LPSTR, dwBufLen: DWORD, dwReserved: DWORD
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "wininet", importc: "InternetGetConnectedStateExA"
+  .}
--- a/semicongine/thirdparty/winim/winim/inc/winioctl.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winioctl.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -42,6 +42,7 @@
     BlockLength*: ULONG
     NumberOfBlocks*: LARGE_INTEGER
     DiskLength*: LARGE_INTEGER
+
   PSTORAGE_READ_CAPACITY* = ptr STORAGE_READ_CAPACITY
   DEVICE_MANAGE_DATA_SET_ATTRIBUTES* {.pure.} = object
     Size*: DWORD
@@ -51,10 +52,12 @@
     ParameterBlockLength*: DWORD
     DataSetRangesOffset*: DWORD
     DataSetRangesLength*: DWORD
+
   PDEVICE_MANAGE_DATA_SET_ATTRIBUTES* = ptr DEVICE_MANAGE_DATA_SET_ATTRIBUTES
   DEVICE_DATA_SET_RANGE* {.pure.} = object
     StartingOffset*: LONGLONG
     LengthInBytes*: DWORDLONG
+
   PDEVICE_DATA_SET_RANGE* = ptr DEVICE_DATA_SET_RANGE
   STORAGE_HOTPLUG_INFO* {.pure.} = object
     Size*: DWORD
@@ -62,14 +65,17 @@
     MediaHotplug*: BOOLEAN
     DeviceHotplug*: BOOLEAN
     WriteCacheEnableOverride*: BOOLEAN
+
   PSTORAGE_HOTPLUG_INFO* = ptr STORAGE_HOTPLUG_INFO
   STORAGE_DEVICE_NUMBER* {.pure.} = object
     DeviceType*: DEVICE_TYPE
     DeviceNumber*: DWORD
     PartitionNumber*: DWORD
+
   PSTORAGE_DEVICE_NUMBER* = ptr STORAGE_DEVICE_NUMBER
   STORAGE_BUS_RESET_REQUEST* {.pure.} = object
     PathId*: BYTE
+
   PSTORAGE_BUS_RESET_REQUEST* = ptr STORAGE_BUS_RESET_REQUEST
   STORAGE_BREAK_RESERVATION_REQUEST* {.pure.} = object
     Length*: DWORD
@@ -77,13 +83,16 @@
     PathId*: BYTE
     TargetId*: BYTE
     Lun*: BYTE
+
   PSTORAGE_BREAK_RESERVATION_REQUEST* = ptr STORAGE_BREAK_RESERVATION_REQUEST
   PREVENT_MEDIA_REMOVAL* {.pure.} = object
     PreventMediaRemoval*: BOOLEAN
+
   PPREVENT_MEDIA_REMOVAL* = ptr PREVENT_MEDIA_REMOVAL
   CLASS_MEDIA_CHANGE_CONTEXT* {.pure.} = object
     MediaChangeCount*: DWORD
     NewState*: DWORD
+
   PCLASS_MEDIA_CHANGE_CONTEXT* = ptr CLASS_MEDIA_CHANGE_CONTEXT
   TAPE_STATISTICS* {.pure.} = object
     Version*: DWORD
@@ -94,9 +103,11 @@
     UnrecoveredReads*: LARGE_INTEGER
     CompressionRatioReads*: BYTE
     CompressionRatioWrites*: BYTE
+
   PTAPE_STATISTICS* = ptr TAPE_STATISTICS
   TAPE_GET_STATISTICS* {.pure.} = object
     Operation*: DWORD
+
   PTAPE_GET_STATISTICS* = ptr TAPE_GET_STATISTICS
   DEVICE_MEDIA_INFO_DeviceSpecific_DiskInfo* {.pure.} = object
     Cylinders*: LARGE_INTEGER
@@ -106,6 +117,7 @@
     BytesPerSector*: DWORD
     NumberMediaSides*: DWORD
     MediaCharacteristics*: DWORD
+
   DEVICE_MEDIA_INFO_DeviceSpecific_RemovableDiskInfo* {.pure.} = object
     Cylinders*: LARGE_INTEGER
     MediaType*: STORAGE_MEDIA_TYPE
@@ -114,32 +126,41 @@
     BytesPerSector*: DWORD
     NumberMediaSides*: DWORD
     MediaCharacteristics*: DWORD
+
   DEVICE_MEDIA_INFO_DeviceSpecific_TapeInfo_BusSpecificData_ScsiInformation* {.pure.} = object
     MediumType*: BYTE
     DensityCode*: BYTE
+
   DEVICE_MEDIA_INFO_DeviceSpecific_TapeInfo_BusSpecificData* {.pure, union.} = object
-    ScsiInformation*: DEVICE_MEDIA_INFO_DeviceSpecific_TapeInfo_BusSpecificData_ScsiInformation
+    ScsiInformation*:
+      DEVICE_MEDIA_INFO_DeviceSpecific_TapeInfo_BusSpecificData_ScsiInformation
+
   DEVICE_MEDIA_INFO_DeviceSpecific_TapeInfo* {.pure.} = object
     MediaType*: STORAGE_MEDIA_TYPE
     MediaCharacteristics*: DWORD
     CurrentBlockSize*: DWORD
     BusType*: STORAGE_BUS_TYPE
     BusSpecificData*: DEVICE_MEDIA_INFO_DeviceSpecific_TapeInfo_BusSpecificData
+
   DEVICE_MEDIA_INFO_DeviceSpecific* {.pure, union.} = object
     DiskInfo*: DEVICE_MEDIA_INFO_DeviceSpecific_DiskInfo
     RemovableDiskInfo*: DEVICE_MEDIA_INFO_DeviceSpecific_RemovableDiskInfo
     TapeInfo*: DEVICE_MEDIA_INFO_DeviceSpecific_TapeInfo
+
   DEVICE_MEDIA_INFO* {.pure.} = object
     DeviceSpecific*: DEVICE_MEDIA_INFO_DeviceSpecific
+
   PDEVICE_MEDIA_INFO* = ptr DEVICE_MEDIA_INFO
   GET_MEDIA_TYPES* {.pure.} = object
     DeviceType*: DWORD
     MediaInfoCount*: DWORD
     MediaInfo*: array[1, DEVICE_MEDIA_INFO]
+
   PGET_MEDIA_TYPES* = ptr GET_MEDIA_TYPES
   STORAGE_PREDICT_FAILURE* {.pure.} = object
     PredictFailure*: DWORD
     VendorSpecific*: array[512, BYTE]
+
   PSTORAGE_PREDICT_FAILURE* = ptr STORAGE_PREDICT_FAILURE
   FORMAT_PARAMETERS* {.pure.} = object
     MediaType*: MEDIA_TYPE
@@ -147,6 +168,7 @@
     EndCylinderNumber*: DWORD
     StartHeadNumber*: DWORD
     EndHeadNumber*: DWORD
+
   PFORMAT_PARAMETERS* = ptr FORMAT_PARAMETERS
   FORMAT_EX_PARAMETERS* {.pure.} = object
     MediaType*: MEDIA_TYPE
@@ -157,6 +179,7 @@
     FormatGapLength*: WORD
     SectorsPerTrack*: WORD
     SectorNumber*: array[1, WORD]
+
   PFORMAT_EX_PARAMETERS* = ptr FORMAT_EX_PARAMETERS
   DISK_GEOMETRY* {.pure.} = object
     Cylinders*: LARGE_INTEGER
@@ -164,6 +187,7 @@
     TracksPerCylinder*: DWORD
     SectorsPerTrack*: DWORD
     BytesPerSector*: DWORD
+
   PDISK_GEOMETRY* = ptr DISK_GEOMETRY
   PARTITION_INFORMATION* {.pure.} = object
     StartingOffset*: LARGE_INTEGER
@@ -174,70 +198,86 @@
     BootIndicator*: BOOLEAN
     RecognizedPartition*: BOOLEAN
     RewritePartition*: BOOLEAN
+
   PPARTITION_INFORMATION* = ptr PARTITION_INFORMATION
   SET_PARTITION_INFORMATION* {.pure.} = object
     PartitionType*: BYTE
+
   PSET_PARTITION_INFORMATION* = ptr SET_PARTITION_INFORMATION
   DRIVE_LAYOUT_INFORMATION* {.pure.} = object
     PartitionCount*: DWORD
     Signature*: DWORD
     PartitionEntry*: array[1, PARTITION_INFORMATION]
+
   PDRIVE_LAYOUT_INFORMATION* = ptr DRIVE_LAYOUT_INFORMATION
   VERIFY_INFORMATION* {.pure.} = object
     StartingOffset*: LARGE_INTEGER
     Length*: DWORD
+
   PVERIFY_INFORMATION* = ptr VERIFY_INFORMATION
   REASSIGN_BLOCKS* {.pure.} = object
     Reserved*: WORD
     Count*: WORD
     BlockNumber*: array[1, DWORD]
+
   PREASSIGN_BLOCKS* = ptr REASSIGN_BLOCKS
   REASSIGN_BLOCKS_EX* {.pure, packed.} = object
     Reserved*: WORD
     Count*: WORD
     BlockNumber*: array[1, LARGE_INTEGER]
+
   PREASSIGN_BLOCKS_EX* = ptr REASSIGN_BLOCKS_EX
   PARTITION_INFORMATION_GPT* {.pure.} = object
     PartitionType*: GUID
     PartitionId*: GUID
     Attributes*: DWORD64
     Name*: array[36, WCHAR]
+
   PPARTITION_INFORMATION_GPT* = ptr PARTITION_INFORMATION_GPT
   PARTITION_INFORMATION_MBR* {.pure.} = object
     PartitionType*: BYTE
     BootIndicator*: BOOLEAN
     RecognizedPartition*: BOOLEAN
     HiddenSectors*: DWORD
+
   PPARTITION_INFORMATION_MBR* = ptr PARTITION_INFORMATION_MBR
   SET_PARTITION_INFORMATION_MBR* = SET_PARTITION_INFORMATION
   SET_PARTITION_INFORMATION_GPT* = PARTITION_INFORMATION_GPT
   SET_PARTITION_INFORMATION_EX_UNION1* {.pure, union.} = object
     Mbr*: SET_PARTITION_INFORMATION_MBR
     Gpt*: SET_PARTITION_INFORMATION_GPT
+
   SET_PARTITION_INFORMATION_EX* {.pure.} = object
     PartitionStyle*: PARTITION_STYLE
     union1*: SET_PARTITION_INFORMATION_EX_UNION1
+
   PSET_PARTITION_INFORMATION_EX* = ptr SET_PARTITION_INFORMATION_EX
   CREATE_DISK_GPT* {.pure.} = object
     DiskId*: GUID
     MaxPartitionCount*: DWORD
+
   PCREATE_DISK_GPT* = ptr CREATE_DISK_GPT
   CREATE_DISK_MBR* {.pure.} = object
     Signature*: DWORD
+
   PCREATE_DISK_MBR* = ptr CREATE_DISK_MBR
   CREATE_DISK_UNION1* {.pure, union.} = object
     Mbr*: CREATE_DISK_MBR
     Gpt*: CREATE_DISK_GPT
+
   CREATE_DISK* {.pure.} = object
     PartitionStyle*: PARTITION_STYLE
     union1*: CREATE_DISK_UNION1
+
   PCREATE_DISK* = ptr CREATE_DISK
   GET_LENGTH_INFORMATION* {.pure.} = object
     Length*: LARGE_INTEGER
+
   PGET_LENGTH_INFORMATION* = ptr GET_LENGTH_INFORMATION
   PARTITION_INFORMATION_EX_UNION1* {.pure, union.} = object
     Mbr*: PARTITION_INFORMATION_MBR
     Gpt*: PARTITION_INFORMATION_GPT
+
   PARTITION_INFORMATION_EX* {.pure.} = object
     PartitionStyle*: PARTITION_STYLE
     StartingOffset*: LARGE_INTEGER
@@ -245,24 +285,29 @@
     PartitionNumber*: DWORD
     RewritePartition*: BOOLEAN
     union1*: PARTITION_INFORMATION_EX_UNION1
+
   PPARTITION_INFORMATION_EX* = ptr PARTITION_INFORMATION_EX
   DRIVE_LAYOUT_INFORMATION_GPT* {.pure.} = object
     DiskId*: GUID
     StartingUsableOffset*: LARGE_INTEGER
     UsableLength*: LARGE_INTEGER
     MaxPartitionCount*: DWORD
+
   PDRIVE_LAYOUT_INFORMATION_GPT* = ptr DRIVE_LAYOUT_INFORMATION_GPT
   DRIVE_LAYOUT_INFORMATION_MBR* {.pure.} = object
     Signature*: DWORD
+
   PDRIVE_LAYOUT_INFORMATION_MBR* = ptr DRIVE_LAYOUT_INFORMATION_MBR
   DRIVE_LAYOUT_INFORMATION_EX_UNION1* {.pure, union.} = object
     Mbr*: DRIVE_LAYOUT_INFORMATION_MBR
     Gpt*: DRIVE_LAYOUT_INFORMATION_GPT
+
   DRIVE_LAYOUT_INFORMATION_EX* {.pure.} = object
     PartitionStyle*: DWORD
     PartitionCount*: DWORD
     union1*: DRIVE_LAYOUT_INFORMATION_EX_UNION1
     PartitionEntry*: array[1, PARTITION_INFORMATION_EX]
+
   PDRIVE_LAYOUT_INFORMATION_EX* = ptr DRIVE_LAYOUT_INFORMATION_EX
   DISK_INT13_INFO* {.pure.} = object
     DriveSelect*: WORD
@@ -270,6 +315,7 @@
     SectorsPerTrack*: WORD
     MaxHeads*: WORD
     NumberDrives*: WORD
+
   PDISK_INT13_INFO* = ptr DISK_INT13_INFO
   DISK_EX_INT13_INFO* {.pure.} = object
     ExBufferSize*: WORD
@@ -280,49 +326,62 @@
     ExSectorsPerDrive*: DWORD64
     ExSectorSize*: WORD
     ExReserved*: WORD
+
   PDISK_EX_INT13_INFO* = ptr DISK_EX_INT13_INFO
   DISK_DETECTION_INFO_UNION1_STRUCT1* {.pure.} = object
     Int13*: DISK_INT13_INFO
     ExInt13*: DISK_EX_INT13_INFO
+
   DISK_DETECTION_INFO_UNION1* {.pure, union.} = object
     struct1*: DISK_DETECTION_INFO_UNION1_STRUCT1
+
   DISK_DETECTION_INFO* {.pure.} = object
     SizeOfDetectInfo*: DWORD
     DetectionType*: DETECTION_TYPE
     union1*: DISK_DETECTION_INFO_UNION1
+
   PDISK_DETECTION_INFO* = ptr DISK_DETECTION_INFO
   DISK_PARTITION_INFO_UNION1_Mbr* {.pure.} = object
     Signature*: DWORD
     CheckSum*: DWORD
+
   DISK_PARTITION_INFO_UNION1_Gpt* {.pure.} = object
     DiskId*: GUID
+
   DISK_PARTITION_INFO_UNION1* {.pure, union.} = object
     Mbr*: DISK_PARTITION_INFO_UNION1_Mbr
     Gpt*: DISK_PARTITION_INFO_UNION1_Gpt
+
   DISK_PARTITION_INFO* {.pure.} = object
     SizeOfPartitionInfo*: DWORD
     PartitionStyle*: PARTITION_STYLE
     union1*: DISK_PARTITION_INFO_UNION1
+
   PDISK_PARTITION_INFO* = ptr DISK_PARTITION_INFO
   DISK_GEOMETRY_EX* {.pure.} = object
     Geometry*: DISK_GEOMETRY
     DiskSize*: LARGE_INTEGER
     Data*: array[1, BYTE]
+
   PDISK_GEOMETRY_EX* = ptr DISK_GEOMETRY_EX
   DISK_CONTROLLER_NUMBER* {.pure.} = object
     ControllerNumber*: DWORD
     DiskNumber*: DWORD
+
   PDISK_CONTROLLER_NUMBER* = ptr DISK_CONTROLLER_NUMBER
   DISK_CACHE_INFORMATION_UNION1_ScalarPrefetch* {.pure.} = object
     Minimum*: WORD
     Maximum*: WORD
     MaximumBlocks*: WORD
+
   DISK_CACHE_INFORMATION_UNION1_BlockPrefetch* {.pure.} = object
     Minimum*: WORD
     Maximum*: WORD
+
   DISK_CACHE_INFORMATION_UNION1* {.pure, union.} = object
     ScalarPrefetch*: DISK_CACHE_INFORMATION_UNION1_ScalarPrefetch
     BlockPrefetch*: DISK_CACHE_INFORMATION_UNION1_BlockPrefetch
+
   DISK_CACHE_INFORMATION* {.pure.} = object
     ParametersSavable*: BOOLEAN
     ReadCacheEnabled*: BOOLEAN
@@ -332,14 +391,17 @@
     DisablePrefetchTransferLength*: WORD
     PrefetchScalar*: BOOLEAN
     union1*: DISK_CACHE_INFORMATION_UNION1
+
   PDISK_CACHE_INFORMATION* = ptr DISK_CACHE_INFORMATION
   DISK_GROW_PARTITION* {.pure.} = object
     PartitionNumber*: DWORD
     BytesToGrow*: LARGE_INTEGER
+
   PDISK_GROW_PARTITION* = ptr DISK_GROW_PARTITION
   HISTOGRAM_BUCKET* {.pure.} = object
     Reads*: DWORD
     Writes*: DWORD
+
   PHISTOGRAM_BUCKET* = ptr HISTOGRAM_BUCKET
   DISK_HISTOGRAM* {.pure.} = object
     DiskSize*: LARGE_INTEGER
@@ -353,6 +415,7 @@
     ReadCount*: DWORD
     WriteCount*: DWORD
     Histogram*: PHISTOGRAM_BUCKET
+
   PDISK_HISTOGRAM* = ptr DISK_HISTOGRAM
   DISK_PERFORMANCE* {.pure.} = object
     BytesRead*: LARGE_INTEGER
@@ -367,6 +430,7 @@
     QueryTime*: LARGE_INTEGER
     StorageDeviceNumber*: DWORD
     StorageManagerName*: array[8, WCHAR]
+
   PDISK_PERFORMANCE* = ptr DISK_PERFORMANCE
   DISK_RECORD* {.pure.} = object
     ByteOffset*: LARGE_INTEGER
@@ -376,28 +440,34 @@
     NumberOfBytes*: DWORD
     DeviceNumber*: BYTE
     ReadRequest*: BOOLEAN
+
   PDISK_RECORD* = ptr DISK_RECORD
   DISK_LOGGING* {.pure.} = object
     Function*: BYTE
     BufferAddress*: PVOID
     BufferSize*: DWORD
+
   PDISK_LOGGING* = ptr DISK_LOGGING
   BIN_RANGE* {.pure.} = object
     StartValue*: LARGE_INTEGER
     Length*: LARGE_INTEGER
+
   PBIN_RANGE* = ptr BIN_RANGE
   PERF_BIN* {.pure.} = object
     NumberOfBins*: DWORD
     TypeOfBin*: DWORD
     BinsRanges*: array[1, BIN_RANGE]
+
   PPERF_BIN* = ptr PERF_BIN
   BIN_COUNT* {.pure.} = object
     BinRange*: BIN_RANGE
     BinCount*: DWORD
+
   PBIN_COUNT* = ptr BIN_COUNT
   BIN_RESULTS* {.pure.} = object
     NumberOfBins*: DWORD
     BinCounts*: array[1, BIN_COUNT]
+
   PBIN_RESULTS* = ptr BIN_RESULTS
   GETVERSIONINPARAMS* {.pure.} = object
     bVersion*: BYTE
@@ -406,6 +476,7 @@
     bIDEDeviceMap*: BYTE
     fCapabilities*: DWORD
     dwReserved*: array[4, DWORD]
+
   PGETVERSIONINPARAMS* = ptr GETVERSIONINPARAMS
   LPGETVERSIONINPARAMS* = ptr GETVERSIONINPARAMS
   IDEREGS* {.pure.} = object
@@ -417,6 +488,7 @@
     bDriveHeadReg*: BYTE
     bCommandReg*: BYTE
     bReserved*: BYTE
+
   PIDEREGS* = ptr IDEREGS
   LPIDEREGS* = ptr IDEREGS
   SENDCMDINPARAMS* {.pure, packed.} = object
@@ -426,6 +498,7 @@
     bReserved*: array[3, BYTE]
     dwReserved*: array[4, DWORD]
     bBuffer*: array[1, BYTE]
+
   PSENDCMDINPARAMS* = ptr SENDCMDINPARAMS
   LPSENDCMDINPARAMS* = ptr SENDCMDINPARAMS
   DRIVERSTATUS* {.pure.} = object
@@ -433,21 +506,25 @@
     bIDEError*: BYTE
     bReserved*: array[2, BYTE]
     dwReserved*: array[2, DWORD]
+
   PDRIVERSTATUS* = ptr DRIVERSTATUS
   LPDRIVERSTATUS* = ptr DRIVERSTATUS
   SENDCMDOUTPARAMS* {.pure, packed.} = object
     cBufferSize*: DWORD
     DriverStatus*: DRIVERSTATUS
     bBuffer*: array[1, BYTE]
+
   PSENDCMDOUTPARAMS* = ptr SENDCMDOUTPARAMS
   LPSENDCMDOUTPARAMS* = ptr SENDCMDOUTPARAMS
   CHANGER_ELEMENT* {.pure.} = object
     ElementType*: ELEMENT_TYPE
     ElementAddress*: DWORD
+
   PCHANGER_ELEMENT* = ptr CHANGER_ELEMENT
   CHANGER_ELEMENT_LIST* {.pure.} = object
     Element*: CHANGER_ELEMENT
     NumberOfElements*: DWORD
+
   PCHANGER_ELEMENT_LIST* = ptr CHANGER_ELEMENT_LIST
   GET_CHANGER_PARAMETERS* {.pure.} = object
     Size*: DWORD
@@ -478,7 +555,9 @@
     PositionCapabilities*: BYTE
     Reserved1*: array[2, BYTE]
     Reserved2*: array[2, DWORD]
+
   PGET_CHANGER_PARAMETERS* = ptr GET_CHANGER_PARAMETERS
+
 const
   VENDOR_ID_LENGTH* = 8
   PRODUCT_ID_LENGTH* = 16
@@ -491,17 +570,20 @@
     Revision*: array[REVISION_LENGTH, BYTE]
     SerialNumber*: array[SERIAL_NUMBER_LENGTH, BYTE]
     DeviceType*: BYTE
+
   PCHANGER_PRODUCT_DATA* = ptr CHANGER_PRODUCT_DATA
   CHANGER_SET_ACCESS* {.pure.} = object
     Element*: CHANGER_ELEMENT
     Control*: DWORD
+
   PCHANGER_SET_ACCESS* = ptr CHANGER_SET_ACCESS
   CHANGER_READ_ELEMENT_STATUS* {.pure.} = object
     ElementList*: CHANGER_ELEMENT_LIST
     VolumeTagInfo*: BOOLEAN
+
   PCHANGER_READ_ELEMENT_STATUS* = ptr CHANGER_READ_ELEMENT_STATUS
-const
-  MAX_VOLUME_ID_SIZE* = 36
+
+const MAX_VOLUME_ID_SIZE* = 36
 type
   CHANGER_ELEMENT_STATUS* {.pure.} = object
     Element*: CHANGER_ELEMENT
@@ -513,6 +595,7 @@
     Reserved*: WORD
     PrimaryVolumeID*: array[MAX_VOLUME_ID_SIZE, BYTE]
     AlternateVolumeID*: array[MAX_VOLUME_ID_SIZE, BYTE]
+
   PCHANGER_ELEMENT_STATUS* = ptr CHANGER_ELEMENT_STATUS
   CHANGER_ELEMENT_STATUS_EX* {.pure.} = object
     Element*: CHANGER_ELEMENT
@@ -527,15 +610,18 @@
     VendorIdentification*: array[VENDOR_ID_LENGTH, BYTE]
     ProductIdentification*: array[PRODUCT_ID_LENGTH, BYTE]
     SerialNumber*: array[SERIAL_NUMBER_LENGTH, BYTE]
+
   PCHANGER_ELEMENT_STATUS_EX* = ptr CHANGER_ELEMENT_STATUS_EX
   CHANGER_INITIALIZE_ELEMENT_STATUS* {.pure.} = object
     ElementList*: CHANGER_ELEMENT_LIST
     BarCodeScan*: BOOLEAN
+
   PCHANGER_INITIALIZE_ELEMENT_STATUS* = ptr CHANGER_INITIALIZE_ELEMENT_STATUS
   CHANGER_SET_POSITION* {.pure.} = object
     Transport*: CHANGER_ELEMENT
     Destination*: CHANGER_ELEMENT
     Flip*: BOOLEAN
+
   PCHANGER_SET_POSITION* = ptr CHANGER_SET_POSITION
   CHANGER_EXCHANGE_MEDIUM* {.pure.} = object
     Transport*: CHANGER_ELEMENT
@@ -544,31 +630,37 @@
     Destination2*: CHANGER_ELEMENT
     Flip1*: BOOLEAN
     Flip2*: BOOLEAN
+
   PCHANGER_EXCHANGE_MEDIUM* = ptr CHANGER_EXCHANGE_MEDIUM
   CHANGER_MOVE_MEDIUM* {.pure.} = object
     Transport*: CHANGER_ELEMENT
     Source*: CHANGER_ELEMENT
     Destination*: CHANGER_ELEMENT
     Flip*: BOOLEAN
+
   PCHANGER_MOVE_MEDIUM* = ptr CHANGER_MOVE_MEDIUM
-const
-  MAX_VOLUME_TEMPLATE_SIZE* = 40
+
+const MAX_VOLUME_TEMPLATE_SIZE* = 40
 type
   CHANGER_SEND_VOLUME_TAG_INFORMATION* {.pure.} = object
     StartingElement*: CHANGER_ELEMENT
     ActionCode*: DWORD
     VolumeIDTemplate*: array[MAX_VOLUME_TEMPLATE_SIZE, BYTE]
+
   PCHANGER_SEND_VOLUME_TAG_INFORMATION* = ptr CHANGER_SEND_VOLUME_TAG_INFORMATION
   READ_ELEMENT_ADDRESS_INFO* {.pure.} = object
     NumberOfElements*: DWORD
     ElementStatus*: array[1, CHANGER_ELEMENT_STATUS]
+
   PREAD_ELEMENT_ADDRESS_INFO* = ptr READ_ELEMENT_ADDRESS_INFO
   PATHNAME_BUFFER* {.pure.} = object
     PathNameLength*: DWORD
     Name*: array[1, WCHAR]
+
   PPATHNAME_BUFFER* = ptr PATHNAME_BUFFER
   FSCTL_QUERY_FAT_BPB_BUFFER* {.pure.} = object
     First0x24BytesOfBootSector*: array[0x24, BYTE]
+
   PFSCTL_QUERY_FAT_BPB_BUFFER* = ptr FSCTL_QUERY_FAT_BPB_BUFFER
   NTFS_VOLUME_DATA_BUFFER* {.pure.} = object
     VolumeSerialNumber*: LARGE_INTEGER
@@ -585,63 +677,77 @@
     Mft2StartLcn*: LARGE_INTEGER
     MftZoneStart*: LARGE_INTEGER
     MftZoneEnd*: LARGE_INTEGER
+
   PNTFS_VOLUME_DATA_BUFFER* = ptr NTFS_VOLUME_DATA_BUFFER
   NTFS_EXTENDED_VOLUME_DATA* {.pure.} = object
     ByteCount*: DWORD
     MajorVersion*: WORD
     MinorVersion*: WORD
+
   PNTFS_EXTENDED_VOLUME_DATA* = ptr NTFS_EXTENDED_VOLUME_DATA
   STARTING_LCN_INPUT_BUFFER* {.pure.} = object
     StartingLcn*: LARGE_INTEGER
+
   PSTARTING_LCN_INPUT_BUFFER* = ptr STARTING_LCN_INPUT_BUFFER
   VOLUME_BITMAP_BUFFER* {.pure.} = object
     StartingLcn*: LARGE_INTEGER
     BitmapSize*: LARGE_INTEGER
     Buffer*: array[1, BYTE]
+
   PVOLUME_BITMAP_BUFFER* = ptr VOLUME_BITMAP_BUFFER
   STARTING_VCN_INPUT_BUFFER* {.pure.} = object
     StartingVcn*: LARGE_INTEGER
+
   PSTARTING_VCN_INPUT_BUFFER* = ptr STARTING_VCN_INPUT_BUFFER
   RETRIEVAL_POINTERS_BUFFER_Extents* {.pure.} = object
     NextVcn*: LARGE_INTEGER
     Lcn*: LARGE_INTEGER
+
   RETRIEVAL_POINTERS_BUFFER* {.pure.} = object
     ExtentCount*: DWORD
     StartingVcn*: LARGE_INTEGER
     Extents*: array[1, RETRIEVAL_POINTERS_BUFFER_Extents]
+
   PRETRIEVAL_POINTERS_BUFFER* = ptr RETRIEVAL_POINTERS_BUFFER
   NTFS_FILE_RECORD_INPUT_BUFFER* {.pure.} = object
     FileReferenceNumber*: LARGE_INTEGER
+
   PNTFS_FILE_RECORD_INPUT_BUFFER* = ptr NTFS_FILE_RECORD_INPUT_BUFFER
   NTFS_FILE_RECORD_OUTPUT_BUFFER* {.pure.} = object
     FileReferenceNumber*: LARGE_INTEGER
     FileRecordLength*: DWORD
     FileRecordBuffer*: array[1, BYTE]
+
   PNTFS_FILE_RECORD_OUTPUT_BUFFER* = ptr NTFS_FILE_RECORD_OUTPUT_BUFFER
   MOVE_FILE_DATA* {.pure.} = object
     FileHandle*: HANDLE
     StartingVcn*: LARGE_INTEGER
     StartingLcn*: LARGE_INTEGER
     ClusterCount*: DWORD
+
   PMOVE_FILE_DATA* = ptr MOVE_FILE_DATA
   FIND_BY_SID_DATA* {.pure.} = object
     Restart*: DWORD
     Sid*: SID
+
   PFIND_BY_SID_DATA* = ptr FIND_BY_SID_DATA
   FIND_BY_SID_OUTPUT* {.pure.} = object
     NextEntryOffset*: DWORD
     FileIndex*: DWORD
     FileNameLength*: DWORD
     FileName*: array[1, WCHAR]
+
   PFIND_BY_SID_OUTPUT* = ptr FIND_BY_SID_OUTPUT
   MFT_ENUM_DATA* {.pure.} = object
     StartFileReferenceNumber*: DWORDLONG
     LowUsn*: USN
     HighUsn*: USN
+
   PMFT_ENUM_DATA* = ptr MFT_ENUM_DATA
   CREATE_USN_JOURNAL_DATA* {.pure.} = object
     MaximumSize*: DWORDLONG
     AllocationDelta*: DWORDLONG
+
   PCREATE_USN_JOURNAL_DATA* = ptr CREATE_USN_JOURNAL_DATA
   READ_USN_JOURNAL_DATA* {.pure.} = object
     StartUsn*: USN
@@ -650,6 +756,7 @@
     Timeout*: DWORDLONG
     BytesToWaitFor*: DWORDLONG
     UsnJournalID*: DWORDLONG
+
   PREAD_USN_JOURNAL_DATA* = ptr READ_USN_JOURNAL_DATA
   USN_RECORD* {.pure.} = object
     RecordLength*: DWORD
@@ -666,6 +773,7 @@
     FileNameLength*: WORD
     FileNameOffset*: WORD
     FileName*: array[1, WCHAR]
+
   PUSN_RECORD* = ptr USN_RECORD
   USN_JOURNAL_DATA* {.pure.} = object
     UsnJournalID*: DWORDLONG
@@ -675,24 +783,29 @@
     MaxUsn*: USN
     MaximumSize*: DWORDLONG
     AllocationDelta*: DWORDLONG
+
   PUSN_JOURNAL_DATA* = ptr USN_JOURNAL_DATA
   DELETE_USN_JOURNAL_DATA* {.pure.} = object
     UsnJournalID*: DWORDLONG
     DeleteFlags*: DWORD
+
   PDELETE_USN_JOURNAL_DATA* = ptr DELETE_USN_JOURNAL_DATA
   MARK_HANDLE_INFO* {.pure.} = object
     UsnSourceInfo*: DWORD
     VolumeHandle*: HANDLE
     HandleInfo*: DWORD
+
   PMARK_HANDLE_INFO* = ptr MARK_HANDLE_INFO
   BULK_SECURITY_TEST_DATA* {.pure.} = object
     DesiredAccess*: ACCESS_MASK
     SecurityIds*: array[1, DWORD]
+
   PBULK_SECURITY_TEST_DATA* = ptr BULK_SECURITY_TEST_DATA
   FILE_PREFETCH* {.pure.} = object
     Type*: DWORD
     Count*: DWORD
     Prefetch*: array[1, DWORDLONG]
+
   PFILE_PREFETCH* = ptr FILE_PREFETCH
   FILESYSTEM_STATISTICS* {.pure.} = object
     FileSystemType*: WORD
@@ -710,6 +823,7 @@
     MetaDataWrites*: DWORD
     MetaDataWriteBytes*: DWORD
     MetaDataDiskWrites*: DWORD
+
   PFILESYSTEM_STATISTICS* = ptr FILESYSTEM_STATISTICS
   FAT_STATISTICS* {.pure.} = object
     CreateHits*: DWORD
@@ -721,6 +835,7 @@
     NonCachedWriteBytes*: DWORD
     NonCachedDiskReads*: DWORD
     NonCachedDiskWrites*: DWORD
+
   PFAT_STATISTICS* = ptr FAT_STATISTICS
   EXFAT_STATISTICS* {.pure.} = object
     CreateHits*: DWORD
@@ -732,26 +847,31 @@
     NonCachedWriteBytes*: DWORD
     NonCachedDiskReads*: DWORD
     NonCachedDiskWrites*: DWORD
+
   PEXFAT_STATISTICS* = ptr EXFAT_STATISTICS
   NTFS_STATISTICS_MftWritesUserLevel* {.pure.} = object
     Write*: WORD
     Create*: WORD
     SetInfo*: WORD
     Flush*: WORD
+
   NTFS_STATISTICS_Mft2WritesUserLevel* {.pure.} = object
     Write*: WORD
     Create*: WORD
     SetInfo*: WORD
     Flush*: WORD
+
   NTFS_STATISTICS_BitmapWritesUserLevel* {.pure.} = object
     Write*: WORD
     Create*: WORD
     SetInfo*: WORD
+
   NTFS_STATISTICS_MftBitmapWritesUserLevel* {.pure.} = object
     Write*: WORD
     Create*: WORD
     SetInfo*: WORD
     Flush*: WORD
+
   NTFS_STATISTICS_Allocate* {.pure.} = object
     Calls*: DWORD
     Clusters*: DWORD
@@ -763,6 +883,7 @@
     CacheClusters*: DWORD
     CacheMiss*: DWORD
     CacheMissClusters*: DWORD
+
   NTFS_STATISTICS* {.pure.} = object
     LogFileFullExceptions*: DWORD
     OtherExceptions*: DWORD
@@ -809,39 +930,49 @@
     LogFileWrites*: DWORD
     LogFileWriteBytes*: DWORD
     Allocate*: NTFS_STATISTICS_Allocate
+
   PNTFS_STATISTICS* = ptr NTFS_STATISTICS
   FILE_OBJECTID_BUFFER_UNION1_STRUCT1* {.pure.} = object
     BirthVolumeId*: array[16, BYTE]
     BirthObjectId*: array[16, BYTE]
     DomainId*: array[16, BYTE]
+
   FILE_OBJECTID_BUFFER_UNION1* {.pure, union.} = object
     struct1*: FILE_OBJECTID_BUFFER_UNION1_STRUCT1
     ExtendedInfo*: array[48, BYTE]
+
   FILE_OBJECTID_BUFFER* {.pure.} = object
     ObjectId*: array[16, BYTE]
     union1*: FILE_OBJECTID_BUFFER_UNION1
+
   PFILE_OBJECTID_BUFFER* = ptr FILE_OBJECTID_BUFFER
   FILE_SET_SPARSE_BUFFER* {.pure.} = object
     SetSparse*: BOOLEAN
+
   PFILE_SET_SPARSE_BUFFER* = ptr FILE_SET_SPARSE_BUFFER
   FILE_ZERO_DATA_INFORMATION* {.pure.} = object
     FileOffset*: LARGE_INTEGER
     BeyondFinalZero*: LARGE_INTEGER
+
   PFILE_ZERO_DATA_INFORMATION* = ptr FILE_ZERO_DATA_INFORMATION
   FILE_ALLOCATED_RANGE_BUFFER* {.pure.} = object
     FileOffset*: LARGE_INTEGER
     Length*: LARGE_INTEGER
+
   PFILE_ALLOCATED_RANGE_BUFFER* = ptr FILE_ALLOCATED_RANGE_BUFFER
   ENCRYPTION_BUFFER* {.pure.} = object
     EncryptionOperation*: DWORD
     Private*: array[1, BYTE]
+
   PENCRYPTION_BUFFER* = ptr ENCRYPTION_BUFFER
   DECRYPTION_STATUS_BUFFER* {.pure.} = object
     NoEncryptedStreams*: BOOLEAN
+
   PDECRYPTION_STATUS_BUFFER* = ptr DECRYPTION_STATUS_BUFFER
   REQUEST_RAW_ENCRYPTED_DATA* {.pure.} = object
     FileOffset*: LONGLONG
     Length*: DWORD
+
   PREQUEST_RAW_ENCRYPTED_DATA* = ptr REQUEST_RAW_ENCRYPTED_DATA
   ENCRYPTED_DATA_INFO* {.pure.} = object
     StartingFileOffset*: DWORDLONG
@@ -855,26 +986,31 @@
     EncryptionFormat*: BYTE
     NumberOfDataBlocks*: WORD
     DataBlockSize*: array[ANYSIZE_ARRAY, DWORD]
+
   PENCRYPTED_DATA_INFO* = ptr ENCRYPTED_DATA_INFO
   PLEX_READ_DATA_REQUEST* {.pure.} = object
     ByteOffset*: LARGE_INTEGER
     ByteLength*: DWORD
     PlexNumber*: DWORD
+
   PPLEX_READ_DATA_REQUEST* = ptr PLEX_READ_DATA_REQUEST
   SI_COPYFILE* {.pure.} = object
     SourceFileNameLength*: DWORD
     DestinationFileNameLength*: DWORD
     Flags*: DWORD
     FileNameBuffer*: array[1, WCHAR]
+
   PSI_COPYFILE* = ptr SI_COPYFILE
   STORAGE_DESCRIPTOR_HEADER* {.pure.} = object
     Version*: DWORD
     Size*: DWORD
+
   PSTORAGE_DESCRIPTOR_HEADER* = ptr STORAGE_DESCRIPTOR_HEADER
   STORAGE_PROPERTY_QUERY* {.pure.} = object
     PropertyId*: STORAGE_PROPERTY_ID
     QueryType*: STORAGE_QUERY_TYPE
     AdditionalParameters*: array[1, BYTE]
+
   PSTORAGE_PROPERTY_QUERY* = ptr STORAGE_PROPERTY_QUERY
   STORAGE_DEVICE_DESCRIPTOR* {.pure.} = object
     Version*: DWORD
@@ -890,6 +1026,7 @@
     BusType*: STORAGE_BUS_TYPE
     RawPropertiesLength*: DWORD
     RawDeviceProperties*: array[1, BYTE]
+
   PSTORAGE_DEVICE_DESCRIPTOR* = ptr STORAGE_DEVICE_DESCRIPTOR
   STORAGE_ADAPTER_DESCRIPTOR* {.pure.} = object
     Version*: DWORD
@@ -904,27 +1041,33 @@
     BusType*: BYTE
     BusMajorVersion*: WORD
     BusMinorVersion*: WORD
+
   PSTORAGE_ADAPTER_DESCRIPTOR* = ptr STORAGE_ADAPTER_DESCRIPTOR
   STORAGE_DEVICE_ID_DESCRIPTOR* {.pure.} = object
     Version*: DWORD
     Size*: DWORD
     NumberOfIdentifiers*: DWORD
     Identifiers*: array[1, BYTE]
+
   PSTORAGE_DEVICE_ID_DESCRIPTOR* = ptr STORAGE_DEVICE_ID_DESCRIPTOR
   VOLUME_GET_GPT_ATTRIBUTES_INFORMATION* {.pure.} = object
     GptAttributes*: ULONGLONG
+
   PVOLUME_GET_GPT_ATTRIBUTES_INFORMATION* = ptr VOLUME_GET_GPT_ATTRIBUTES_INFORMATION
   FILE_MAKE_COMPATIBLE_BUFFER* {.pure.} = object
     CloseDisc*: BOOLEAN
+
   PFILE_MAKE_COMPATIBLE_BUFFER* = ptr FILE_MAKE_COMPATIBLE_BUFFER
   FILE_SET_DEFECT_MGMT_BUFFER* {.pure.} = object
     Disable*: BOOLEAN
+
   PFILE_SET_DEFECT_MGMT_BUFFER* = ptr FILE_SET_DEFECT_MGMT_BUFFER
   FILE_QUERY_SPARING_BUFFER* {.pure.} = object
     SparingUnitBytes*: ULONG
     SoftwareSparing*: BOOLEAN
     TotalSpareBlocks*: ULONG
     FreeSpareBlocks*: ULONG
+
   PFILE_QUERY_SPARING_BUFFER* = ptr FILE_QUERY_SPARING_BUFFER
   FILE_QUERY_ON_DISK_VOL_INFO_BUFFER* {.pure.} = object
     DirectoryCount*: LARGE_INTEGER
@@ -938,11 +1081,13 @@
     AbstractInfo*: array[34, WCHAR]
     FormattingImplementationInfo*: array[34, WCHAR]
     LastModifyingImplementationInfo*: array[34, WCHAR]
+
   PFILE_QUERY_ON_DISK_VOL_INFO_BUFFER* = ptr FILE_QUERY_ON_DISK_VOL_INFO_BUFFER
   SHRINK_VOLUME_INFORMATION* {.pure.} = object
     ShrinkRequestType*: SHRINK_VOLUME_REQUEST_TYPES
     Flags*: DWORDLONG
     NewNumberOfSectors*: LONGLONG
+
   PSHRINK_VOLUME_INFORMATION* = ptr SHRINK_VOLUME_INFORMATION
   TXFS_MODIFY_RM* {.pure.} = object
     Flags*: ULONG
@@ -953,6 +1098,7 @@
     LogAutoShrinkPercentage*: ULONG
     Reserved*: ULONGLONG
     LoggingMode*: USHORT
+
   PTXFS_MODIFY_RM* = ptr TXFS_MODIFY_RM
   TXFS_QUERY_RM_INFORMATION* {.pure.} = object
     BytesRequired*: ULONG
@@ -981,12 +1127,14 @@
     OldestTransactionAge*: ULONGLONG
     RMName*: GUID
     TmLogPathOffset*: ULONG
+
   PTXFS_QUERY_RM_INFORMATION* = ptr TXFS_QUERY_RM_INFORMATION
   TXFS_ROLLFORWARD_REDO_INFORMATION* {.pure.} = object
     LastVirtualClock*: LARGE_INTEGER
     LastRedoLsn*: ULONGLONG
     HighestRecoveryLsn*: ULONGLONG
     Flags*: ULONG
+
   PTXFS_ROLLFORWARD_REDO_INFORMATION* = ptr TXFS_ROLLFORWARD_REDO_INFORMATION
   TXFS_START_RM_INFORMATION* {.pure.} = object
     Flags*: ULONG
@@ -1001,15 +1149,18 @@
     LogPathLength*: USHORT
     Reserved*: USHORT
     LogPath*: array[1, WCHAR]
+
   PTXFS_START_RM_INFORMATION* = ptr TXFS_START_RM_INFORMATION
   TXFS_GET_METADATA_INFO_OUT_TxfFileId* {.pure.} = object
     LowPart*: LONGLONG
     HighPart*: LONGLONG
+
   TXFS_GET_METADATA_INFO_OUT* {.pure.} = object
     TxfFileId*: TXFS_GET_METADATA_INFO_OUT_TxfFileId
     LockingTransaction*: GUID
     LastLsn*: ULONGLONG
     TransactionState*: ULONG
+
   PTXFS_GET_METADATA_INFO_OUT* = ptr TXFS_GET_METADATA_INFO_OUT
   TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY* {.pure.} = object
     Offset*: ULONGLONG
@@ -1019,12 +1170,15 @@
     Reserved2*: ULONG
     Reserved3*: LONGLONG
     FileName*: array[1, WCHAR]
-  PTXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY* = ptr TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY
+
+  PTXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY* =
+    ptr TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY
   TXFS_LIST_TRANSACTION_LOCKED_FILES* {.pure.} = object
     KtmTransaction*: GUID
     NumberOfFiles*: ULONGLONG
     BufferSizeRequired*: ULONGLONG
     Offset*: ULONGLONG
+
   PTXFS_LIST_TRANSACTION_LOCKED_FILES* = ptr TXFS_LIST_TRANSACTION_LOCKED_FILES
   TXFS_LIST_TRANSACTIONS_ENTRY* {.pure.} = object
     TransactionId*: GUID
@@ -1032,19 +1186,24 @@
     Reserved1*: ULONG
     Reserved2*: ULONG
     Reserved3*: LONGLONG
+
   PTXFS_LIST_TRANSACTIONS_ENTRY* = ptr TXFS_LIST_TRANSACTIONS_ENTRY
   TXFS_LIST_TRANSACTIONS* {.pure.} = object
     NumberOfTransactions*: ULONGLONG
     BufferSizeRequired*: ULONGLONG
+
   PTXFS_LIST_TRANSACTIONS* = ptr TXFS_LIST_TRANSACTIONS
   TXFS_READ_BACKUP_INFORMATION_OUT_UNION1* {.pure, union.} = object
     BufferLength*: ULONG
     Buffer*: UCHAR
+
   TXFS_READ_BACKUP_INFORMATION_OUT* {.pure.} = object
     union1*: TXFS_READ_BACKUP_INFORMATION_OUT_UNION1
+
   PTXFS_READ_BACKUP_INFORMATION_OUT* = ptr TXFS_READ_BACKUP_INFORMATION_OUT
   TXFS_WRITE_BACKUP_INFORMATION* {.pure.} = object
     Buffer*: UCHAR
+
   PTXFS_WRITE_BACKUP_INFORMATION* = ptr TXFS_WRITE_BACKUP_INFORMATION
   TXFS_GET_TRANSACTED_VERSION* {.pure.} = object
     ThisBaseVersion*: ULONG
@@ -1052,20 +1211,24 @@
     ThisMiniVersion*: USHORT
     FirstMiniVersion*: USHORT
     LatestMiniVersion*: USHORT
+
   PTXFS_GET_TRANSACTED_VERSION* = ptr TXFS_GET_TRANSACTED_VERSION
   TXFS_SAVEPOINT_INFORMATION* {.pure.} = object
     KtmTransaction*: HANDLE
     ActionCode*: ULONG
     SavepointId*: ULONG
+
   PTXFS_SAVEPOINT_INFORMATION* = ptr TXFS_SAVEPOINT_INFORMATION
   TXFS_CREATE_MINIVERSION_INFO* {.pure.} = object
     StructureVersion*: USHORT
     StructureLength*: USHORT
     BaseVersion*: ULONG
     MiniVersion*: USHORT
+
   PTXFS_CREATE_MINIVERSION_INFO* = ptr TXFS_CREATE_MINIVERSION_INFO
   TXFS_TRANSACTION_ACTIVE_INFO* {.pure.} = object
     TransactionsActiveAtSnapshot*: WINBOOL
+
   PTXFS_TRANSACTION_ACTIVE_INFO* = ptr TXFS_TRANSACTION_ACTIVE_INFO
   STORAGE_WRITE_CACHE_PROPERTY* {.pure.} = object
     Version*: DWORD
@@ -1077,6 +1240,7 @@
     FlushCacheSupported*: BOOLEAN
     UserDefinedPowerProtection*: BOOLEAN
     NVCacheEnabled*: BOOLEAN
+
   PSTORAGE_WRITE_CACHE_PROPERTY* = ptr STORAGE_WRITE_CACHE_PROPERTY
   STORAGE_MINIPORT_DESCRIPTOR* {.pure.} = object
     Version*: DWORD
@@ -1084,6 +1248,7 @@
     Portdriver*: STORAGE_PORT_CODE_SET
     LUNResetSupported*: BOOLEAN
     TargetResetSupported*: BOOLEAN
+
   PSTORAGE_MINIPORT_DESCRIPTOR* = ptr STORAGE_MINIPORT_DESCRIPTOR
   STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR* {.pure.} = object
     Version*: DWORD
@@ -1093,22 +1258,26 @@
     BytesPerLogicalSector*: DWORD
     BytesPerPhysicalSector*: DWORD
     BytesOffsetForSectorAlignment*: DWORD
+
   PSTORAGE_ACCESS_ALIGNMENT_DESCRIPTOR* = ptr STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR
   DEVICE_SEEK_PENALTY_DESCRIPTOR* {.pure.} = object
     Version*: DWORD
     Size*: DWORD
     IncursSeekPenalty*: BOOLEAN
+
   PDEVICE_SEEK_PENALTY_DESCRIPTOR* = ptr DEVICE_SEEK_PENALTY_DESCRIPTOR
   DEVICE_TRIM_DESCRIPTOR* {.pure.} = object
     Version*: DWORD
     Size*: DWORD
     TrimEnabled*: BOOLEAN
+
   PDEVICE_TRIM_DESCRIPTOR* = ptr DEVICE_TRIM_DESCRIPTOR
   REQUEST_OPLOCK_INPUT_BUFFER* {.pure.} = object
     StructureVersion*: WORD
     StructureLength*: WORD
     RequestedOplockLevel*: DWORD
     Flags*: DWORD
+
   PREQUEST_OPLOCK_INPUT_BUFFER* = ptr REQUEST_OPLOCK_INPUT_BUFFER
   REQUEST_OPLOCK_OUTPUT_BUFFER* {.pure.} = object
     StructureVersion*: WORD
@@ -1118,28 +1287,35 @@
     Flags*: DWORD
     AccessMode*: ACCESS_MASK
     ShareMode*: WORD
+
   PREQUEST_OPLOCK_OUTPUT_BUFFER* = ptr REQUEST_OPLOCK_OUTPUT_BUFFER
   BOOT_AREA_INFO_BootSectors* {.pure.} = object
     Offset*: LARGE_INTEGER
+
   BOOT_AREA_INFO* {.pure.} = object
     BootSectorCount*: ULONG
     BootSectors*: array[2, BOOT_AREA_INFO_BootSectors]
+
   PBOOT_AREA_INFO* = ptr BOOT_AREA_INFO
   RETRIEVAL_POINTER_BASE* {.pure.} = object
     FileAreaOffset*: LARGE_INTEGER
+
   PRETRIEVAL_POINTER_BASE* = ptr RETRIEVAL_POINTER_BASE
   FILE_SYSTEM_RECOGNITION_INFORMATION* {.pure.} = object
     FileSystem*: array[9, CHAR]
+
   PFILE_SYSTEM_RECOGNITION_INFORMATION* = ptr FILE_SYSTEM_RECOGNITION_INFORMATION
   LOOKUP_STREAM_FROM_CLUSTER_INPUT* {.pure.} = object
     Flags*: DWORD
     NumberOfClusters*: DWORD
     Cluster*: array[1, LARGE_INTEGER]
+
   PLOOKUP_STREAM_FROM_CLUSTER_INPUT* = ptr LOOKUP_STREAM_FROM_CLUSTER_INPUT
   LOOKUP_STREAM_FROM_CLUSTER_OUTPUT* {.pure.} = object
     Offset*: DWORD
     NumberOfMatches*: DWORD
     BufferSizeRequired*: DWORD
+
   PLOOKUP_STREAM_FROM_CLUSTER_OUTPUT* = ptr LOOKUP_STREAM_FROM_CLUSTER_OUTPUT
   LOOKUP_STREAM_FROM_CLUSTER_ENTRY* {.pure.} = object
     OffsetToNext*: DWORD
@@ -1147,16 +1323,20 @@
     Reserved*: LARGE_INTEGER
     Cluster*: LARGE_INTEGER
     FileName*: array[1, WCHAR]
+
   PLOOKUP_STREAM_FROM_CLUSTER_ENTRY* = ptr LOOKUP_STREAM_FROM_CLUSTER_ENTRY
   DISK_EXTENT* {.pure.} = object
     DiskNumber*: DWORD
     StartingOffset*: LARGE_INTEGER
     ExtentLength*: LARGE_INTEGER
+
   PDISK_EXTENT* = ptr DISK_EXTENT
   VOLUME_DISK_EXTENTS* {.pure.} = object
     NumberOfDiskExtents*: DWORD
     Extents*: array[1, DISK_EXTENT]
+
   PVOLUME_DISK_EXTENTS* = ptr VOLUME_DISK_EXTENTS
+
 const
   GUID_DEVINTERFACE_DISK* = DEFINE_GUID("53f56307-b6bf-11d0-94f2-00a0c91efb8b")
   GUID_DEVINTERFACE_CDROM* = DEFINE_GUID("53f56308-b6bf-11d0-94f2-00a0c91efb8b")
@@ -1169,7 +1349,8 @@
   GUID_DEVINTERFACE_CDCHANGER* = DEFINE_GUID("53f56312-b6bf-11d0-94f2-00a0c91efb8b")
   GUID_DEVINTERFACE_STORAGEPORT* = DEFINE_GUID("2accfe60-c130-11d2-b082-00a0c91efb8b")
   GUID_DEVINTERFACE_COMPORT* = DEFINE_GUID("86e0d1e0-8089-11d0-9ce4-08003e301f73")
-  GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR* = DEFINE_GUID("4d36e978-e325-11ce-bfc1-08002be10318")
+  GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR* =
+    DEFINE_GUID("4d36e978-e325-11ce-bfc1-08002be10318")
   diskClassGuid* = GUID_DEVINTERFACE_DISK
   cdRomClassGuid* = GUID_DEVINTERFACE_CDROM
   partitionClassGuid* = GUID_DEVINTERFACE_PARTITION
@@ -1252,33 +1433,63 @@
   FILE_READ_ACCESS* = 0x0001
   FILE_WRITE_ACCESS* = 0x0002
   IOCTL_STORAGE_BASE* = FILE_DEVICE_MASS_STORAGE
-template CTL_CODE*(t: untyped, f: untyped, m: untyped, a:untyped): untyped = (t shl 16) or (a shl 14) or (f shl 2) or m
+template CTL_CODE*(t: untyped, f: untyped, m: untyped, a: untyped): untyped =
+  (t shl 16) or (a shl 14) or (f shl 2) or m
+
 const
-  IOCTL_STORAGE_CHECK_VERIFY* = CTL_CODE(IOCTL_STORAGE_BASE,0x0200,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_STORAGE_CHECK_VERIFY2* = CTL_CODE(IOCTL_STORAGE_BASE,0x0200,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_STORAGE_MEDIA_REMOVAL* = CTL_CODE(IOCTL_STORAGE_BASE,0x0201,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_STORAGE_EJECT_MEDIA* = CTL_CODE(IOCTL_STORAGE_BASE,0x0202,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_STORAGE_LOAD_MEDIA* = CTL_CODE(IOCTL_STORAGE_BASE,0x0203,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_STORAGE_LOAD_MEDIA2* = CTL_CODE(IOCTL_STORAGE_BASE,0x0203,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_STORAGE_RESERVE* = CTL_CODE(IOCTL_STORAGE_BASE,0x0204,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_STORAGE_RELEASE* = CTL_CODE(IOCTL_STORAGE_BASE,0x0205,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_STORAGE_FIND_NEW_DEVICES* = CTL_CODE(IOCTL_STORAGE_BASE,0x0206,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_STORAGE_EJECTION_CONTROL* = CTL_CODE(IOCTL_STORAGE_BASE,0x0250,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_STORAGE_MCN_CONTROL* = CTL_CODE(IOCTL_STORAGE_BASE,0x0251,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_STORAGE_GET_MEDIA_TYPES* = CTL_CODE(IOCTL_STORAGE_BASE,0x0300,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_STORAGE_GET_MEDIA_TYPES_EX* = CTL_CODE(IOCTL_STORAGE_BASE,0x0301,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER* = CTL_CODE(IOCTL_STORAGE_BASE,0x0304,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_STORAGE_GET_HOTPLUG_INFO* = CTL_CODE(IOCTL_STORAGE_BASE,0x0305,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_STORAGE_SET_HOTPLUG_INFO* = CTL_CODE(IOCTL_STORAGE_BASE,0x0306,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_STORAGE_RESET_BUS* = CTL_CODE(IOCTL_STORAGE_BASE,0x0400,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_STORAGE_RESET_DEVICE* = CTL_CODE(IOCTL_STORAGE_BASE,0x0401,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_STORAGE_BREAK_RESERVATION* = CTL_CODE(IOCTL_STORAGE_BASE,0x0405,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_STORAGE_GET_DEVICE_NUMBER* = CTL_CODE(IOCTL_STORAGE_BASE,0x0420,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_STORAGE_PREDICT_FAILURE* = CTL_CODE(IOCTL_STORAGE_BASE,0x0440,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_STORAGE_READ_CAPACITY* = CTL_CODE(IOCTL_STORAGE_BASE,0x0450,METHOD_BUFFERED,FILE_READ_ACCESS)
-  OBSOLETE_IOCTL_STORAGE_RESET_BUS* = CTL_CODE(IOCTL_STORAGE_BASE,0x0400,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  OBSOLETE_IOCTL_STORAGE_RESET_DEVICE* = CTL_CODE(IOCTL_STORAGE_BASE,0x0401,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES* = CTL_CODE(IOCTL_STORAGE_BASE, 0x0501, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+  IOCTL_STORAGE_CHECK_VERIFY* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_STORAGE_CHECK_VERIFY2* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_STORAGE_MEDIA_REMOVAL* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_STORAGE_EJECT_MEDIA* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_STORAGE_LOAD_MEDIA* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_STORAGE_LOAD_MEDIA2* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_STORAGE_RESERVE* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_STORAGE_RELEASE* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_STORAGE_FIND_NEW_DEVICES* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_STORAGE_EJECTION_CONTROL* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_STORAGE_MCN_CONTROL* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_STORAGE_GET_MEDIA_TYPES* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_STORAGE_GET_MEDIA_TYPES_EX* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0304, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_STORAGE_GET_HOTPLUG_INFO* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0305, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_STORAGE_SET_HOTPLUG_INFO* = CTL_CODE(
+    IOCTL_STORAGE_BASE, 0x0306, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_STORAGE_RESET_BUS* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_STORAGE_RESET_DEVICE* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_STORAGE_BREAK_RESERVATION* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_STORAGE_GET_DEVICE_NUMBER* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_STORAGE_PREDICT_FAILURE* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_STORAGE_READ_CAPACITY* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0450, METHOD_BUFFERED, FILE_READ_ACCESS)
+  OBSOLETE_IOCTL_STORAGE_RESET_BUS* = CTL_CODE(
+    IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  OBSOLETE_IOCTL_STORAGE_RESET_DEVICE* = CTL_CODE(
+    IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0501, METHOD_BUFFERED, FILE_WRITE_ACCESS)
   DeviceDsmActionFlag_NonDestructive* = 0x80000000'i32
   DeviceDsmAction_None* = 0
   DeviceDsmAction_Trim* = 1
@@ -1381,55 +1592,121 @@
   busTypeMax* = 0x1
   busTypeMaxReserved* = 0x7F
   IOCTL_DISK_BASE* = FILE_DEVICE_DISK
-  IOCTL_DISK_GET_DRIVE_GEOMETRY* = CTL_CODE(IOCTL_DISK_BASE,0x0000,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_GET_PARTITION_INFO* = CTL_CODE(IOCTL_DISK_BASE,0x0001,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_DISK_SET_PARTITION_INFO* = CTL_CODE(IOCTL_DISK_BASE,0x0002,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_GET_DRIVE_LAYOUT* = CTL_CODE(IOCTL_DISK_BASE,0x0003,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_DISK_SET_DRIVE_LAYOUT* = CTL_CODE(IOCTL_DISK_BASE,0x0004,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_VERIFY* = CTL_CODE(IOCTL_DISK_BASE,0x0005,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_FORMAT_TRACKS* = CTL_CODE(IOCTL_DISK_BASE,0x0006,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_REASSIGN_BLOCKS* = CTL_CODE(IOCTL_DISK_BASE,0x0007,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_PERFORMANCE* = CTL_CODE(IOCTL_DISK_BASE,0x0008,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_IS_WRITABLE* = CTL_CODE(IOCTL_DISK_BASE,0x0009,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_LOGGING* = CTL_CODE(IOCTL_DISK_BASE,0x000a,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_FORMAT_TRACKS_EX* = CTL_CODE(IOCTL_DISK_BASE,0x000b,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_HISTOGRAM_STRUCTURE* = CTL_CODE(IOCTL_DISK_BASE,0x000c,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_HISTOGRAM_DATA* = CTL_CODE(IOCTL_DISK_BASE,0x000d,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_HISTOGRAM_RESET* = CTL_CODE(IOCTL_DISK_BASE,0x000e,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_REQUEST_STRUCTURE* = CTL_CODE(IOCTL_DISK_BASE,0x000f,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_REQUEST_DATA* = CTL_CODE(IOCTL_DISK_BASE,0x0010,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_PERFORMANCE_OFF* = CTL_CODE(IOCTL_DISK_BASE,0x0018,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_CONTROLLER_NUMBER* = CTL_CODE(IOCTL_DISK_BASE,0x0011,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  SMART_GET_VERSION* = CTL_CODE(IOCTL_DISK_BASE,0x0020,METHOD_BUFFERED,FILE_READ_ACCESS)
-  SMART_SEND_DRIVE_COMMAND* = CTL_CODE(IOCTL_DISK_BASE,0x0021,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  SMART_RCV_DRIVE_DATA* = CTL_CODE(IOCTL_DISK_BASE,0x0022,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_GET_PARTITION_INFO_EX* = CTL_CODE(IOCTL_DISK_BASE,0x0012,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_SET_PARTITION_INFO_EX* = CTL_CODE(IOCTL_DISK_BASE,0x0013,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_GET_DRIVE_LAYOUT_EX* = CTL_CODE(IOCTL_DISK_BASE,0x0014,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_SET_DRIVE_LAYOUT_EX* = CTL_CODE(IOCTL_DISK_BASE,0x0015,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_CREATE_DISK* = CTL_CODE(IOCTL_DISK_BASE,0x0016,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_GET_LENGTH_INFO* = CTL_CODE(IOCTL_DISK_BASE,0x0017,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_DISK_GET_DRIVE_GEOMETRY_EX* = CTL_CODE(IOCTL_DISK_BASE,0x0028,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_REASSIGN_BLOCKS_EX* = CTL_CODE(IOCTL_DISK_BASE,0x0029,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_UPDATE_DRIVE_SIZE* = CTL_CODE(IOCTL_DISK_BASE,0x0032,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_GROW_PARTITION* = CTL_CODE(IOCTL_DISK_BASE,0x0034,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_GET_CACHE_INFORMATION* = CTL_CODE(IOCTL_DISK_BASE,0x0035,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_DISK_SET_CACHE_INFORMATION* = CTL_CODE(IOCTL_DISK_BASE,0x0036,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  OBSOLETE_DISK_GET_WRITE_CACHE_STATE* = CTL_CODE(IOCTL_DISK_BASE,0x0037,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_DISK_DELETE_DRIVE_LAYOUT* = CTL_CODE(IOCTL_DISK_BASE,0x0040,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_UPDATE_PROPERTIES* = CTL_CODE(IOCTL_DISK_BASE,0x0050,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_RESET_SNAPSHOT_INFO* = CTL_CODE(IOCTL_DISK_BASE,0x0084,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_FORMAT_DRIVE* = CTL_CODE(IOCTL_DISK_BASE,0x00f3,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_DISK_SENSE_DEVICE* = CTL_CODE(IOCTL_DISK_BASE,0x00f8,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_DISK_CHECK_VERIFY* = CTL_CODE(IOCTL_DISK_BASE,0x0200,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_DISK_MEDIA_REMOVAL* = CTL_CODE(IOCTL_DISK_BASE,0x0201,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_DISK_EJECT_MEDIA* = CTL_CODE(IOCTL_DISK_BASE,0x0202,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_DISK_LOAD_MEDIA* = CTL_CODE(IOCTL_DISK_BASE,0x0203,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_DISK_RESERVE* = CTL_CODE(IOCTL_DISK_BASE,0x0204,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_DISK_RELEASE* = CTL_CODE(IOCTL_DISK_BASE,0x0205,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_DISK_FIND_NEW_DEVICES* = CTL_CODE(IOCTL_DISK_BASE,0x0206,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_DISK_GET_MEDIA_TYPES* = CTL_CODE(IOCTL_DISK_BASE,0x0300,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_STORAGE_QUERY_PROPERTY* = CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_GET_DRIVE_GEOMETRY* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_GET_PARTITION_INFO* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_DISK_SET_PARTITION_INFO* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_GET_DRIVE_LAYOUT* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_DISK_SET_DRIVE_LAYOUT* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_VERIFY* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0005, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_FORMAT_TRACKS* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_REASSIGN_BLOCKS* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_PERFORMANCE* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_IS_WRITABLE* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0009, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_LOGGING* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x000a, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_FORMAT_TRACKS_EX* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x000b, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_HISTOGRAM_STRUCTURE* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x000c, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_HISTOGRAM_DATA* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x000d, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_HISTOGRAM_RESET* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x000e, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_REQUEST_STRUCTURE* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x000f, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_REQUEST_DATA* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_PERFORMANCE_OFF* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0018, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_CONTROLLER_NUMBER* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0011, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  SMART_GET_VERSION* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0020, METHOD_BUFFERED, FILE_READ_ACCESS)
+  SMART_SEND_DRIVE_COMMAND* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  SMART_RCV_DRIVE_DATA* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0022, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_GET_PARTITION_INFO_EX* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0012, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_SET_PARTITION_INFO_EX* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_GET_DRIVE_LAYOUT_EX* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0014, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_SET_DRIVE_LAYOUT_EX* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0015, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_CREATE_DISK* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0016, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_GET_LENGTH_INFO* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0017, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_DISK_GET_DRIVE_GEOMETRY_EX* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0028, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_REASSIGN_BLOCKS_EX* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0029, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_UPDATE_DRIVE_SIZE* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0032, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_GROW_PARTITION* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0034, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_GET_CACHE_INFORMATION* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0035, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_DISK_SET_CACHE_INFORMATION* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0036, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  OBSOLETE_DISK_GET_WRITE_CACHE_STATE* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0037, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_DISK_DELETE_DRIVE_LAYOUT* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0040, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_UPDATE_PROPERTIES* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0050, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_RESET_SNAPSHOT_INFO* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x0084, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_FORMAT_DRIVE* = CTL_CODE(
+    IOCTL_DISK_BASE, 0x00f3, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_DISK_SENSE_DEVICE* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x00f8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_DISK_CHECK_VERIFY* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_DISK_MEDIA_REMOVAL* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_DISK_EJECT_MEDIA* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_DISK_LOAD_MEDIA* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_DISK_RESERVE* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_DISK_RELEASE* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_DISK_FIND_NEW_DEVICES* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_DISK_GET_MEDIA_TYPES* =
+    CTL_CODE(IOCTL_DISK_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_STORAGE_QUERY_PROPERTY* =
+    CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
   PARTITION_ENTRY_UNUSED* = 0x00
   PARTITION_FAT_12* = 0x01
   PARTITION_XENIX_1* = 0x02
@@ -1537,17 +1814,31 @@
   RETURN_SMART_STATUS* = 0xDA
   ENABLE_DISABLE_AUTO_OFFLINE* = 0xDB
   IOCTL_CHANGER_BASE* = FILE_DEVICE_CHANGER
-  IOCTL_CHANGER_GET_PARAMETERS* = CTL_CODE(IOCTL_CHANGER_BASE,0x0000,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_CHANGER_GET_STATUS* = CTL_CODE(IOCTL_CHANGER_BASE,0x0001,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_CHANGER_GET_PRODUCT_DATA* = CTL_CODE(IOCTL_CHANGER_BASE,0x0002,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_CHANGER_SET_ACCESS* = CTL_CODE(IOCTL_CHANGER_BASE,0x0004,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_CHANGER_GET_ELEMENT_STATUS* = CTL_CODE(IOCTL_CHANGER_BASE,0x0005,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS* = CTL_CODE(IOCTL_CHANGER_BASE,0x0006,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_CHANGER_SET_POSITION* = CTL_CODE(IOCTL_CHANGER_BASE,0x0007,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_CHANGER_EXCHANGE_MEDIUM* = CTL_CODE(IOCTL_CHANGER_BASE,0x0008,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_CHANGER_MOVE_MEDIUM* = CTL_CODE(IOCTL_CHANGER_BASE,0x0009,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_CHANGER_REINITIALIZE_TRANSPORT* = CTL_CODE(IOCTL_CHANGER_BASE,0x000A,METHOD_BUFFERED,FILE_READ_ACCESS)
-  IOCTL_CHANGER_QUERY_VOLUME_TAGS* = CTL_CODE(IOCTL_CHANGER_BASE,0x000B,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
+  IOCTL_CHANGER_GET_PARAMETERS* =
+    CTL_CODE(IOCTL_CHANGER_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_CHANGER_GET_STATUS* =
+    CTL_CODE(IOCTL_CHANGER_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_CHANGER_GET_PRODUCT_DATA* =
+    CTL_CODE(IOCTL_CHANGER_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_CHANGER_SET_ACCESS* = CTL_CODE(
+    IOCTL_CHANGER_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_CHANGER_GET_ELEMENT_STATUS* = CTL_CODE(
+    IOCTL_CHANGER_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS* =
+    CTL_CODE(IOCTL_CHANGER_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_CHANGER_SET_POSITION* =
+    CTL_CODE(IOCTL_CHANGER_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_CHANGER_EXCHANGE_MEDIUM* =
+    CTL_CODE(IOCTL_CHANGER_BASE, 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_CHANGER_MOVE_MEDIUM* =
+    CTL_CODE(IOCTL_CHANGER_BASE, 0x0009, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_CHANGER_REINITIALIZE_TRANSPORT* =
+    CTL_CODE(IOCTL_CHANGER_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS)
+  IOCTL_CHANGER_QUERY_VOLUME_TAGS* = CTL_CODE(
+    IOCTL_CHANGER_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
   allElements* = 0
   changerTransport* = 1
   changerSlot* = 2
@@ -1655,11 +1946,16 @@
   deviceProblemCartridgeEjectError* = 11
   deviceProblemGripperError* = 12
   deviceProblemDriveError* = 13
-  IOCTL_SERIAL_LSRMST_INSERT* = CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_SERENUM_EXPOSE_HARDWARE* = CTL_CODE(FILE_DEVICE_SERENUM,128,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_SERENUM_REMOVE_HARDWARE* = CTL_CODE(FILE_DEVICE_SERENUM,129,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_SERENUM_PORT_DESC* = CTL_CODE(FILE_DEVICE_SERENUM,130,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_SERENUM_GET_PORT_NAME* = CTL_CODE(FILE_DEVICE_SERENUM,131,METHOD_BUFFERED,FILE_ANY_ACCESS)
+  IOCTL_SERIAL_LSRMST_INSERT* =
+    CTL_CODE(FILE_DEVICE_SERIAL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_SERENUM_EXPOSE_HARDWARE* =
+    CTL_CODE(FILE_DEVICE_SERENUM, 128, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_SERENUM_REMOVE_HARDWARE* =
+    CTL_CODE(FILE_DEVICE_SERENUM, 129, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_SERENUM_PORT_DESC* =
+    CTL_CODE(FILE_DEVICE_SERENUM, 130, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_SERENUM_GET_PORT_NAME* =
+    CTL_CODE(FILE_DEVICE_SERENUM, 131, METHOD_BUFFERED, FILE_ANY_ACCESS)
   SERIAL_LSRMST_ESCAPE* = BYTE 0x00
   SERIAL_LSRMST_LSR_DATA* = BYTE 0x01
   SERIAL_LSRMST_LSR_NODATA* = BYTE 0x02
@@ -1677,67 +1973,132 @@
   SERIAL_IOC_MCR_OUT1* = DWORD 0x00000004
   SERIAL_IOC_MCR_OUT2* = DWORD 0x00000008
   SERIAL_IOC_MCR_LOOP* = DWORD 0x00000010
-  FSCTL_REQUEST_OPLOCK_LEVEL_1* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,0,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_REQUEST_OPLOCK_LEVEL_2* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,1,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_REQUEST_BATCH_OPLOCK* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,2,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_OPLOCK_BREAK_ACKNOWLEDGE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,3,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_OPBATCH_ACK_CLOSE_PENDING* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,4,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_OPLOCK_BREAK_NOTIFY* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,5,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_LOCK_VOLUME* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,6,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_UNLOCK_VOLUME* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,7,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_DISMOUNT_VOLUME* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,8,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_IS_VOLUME_MOUNTED* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,10,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_IS_PATHNAME_VALID* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,11,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_MARK_VOLUME_DIRTY* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,12,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_QUERY_RETRIEVAL_POINTERS* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,14,METHOD_NEITHER,FILE_ANY_ACCESS)
-  FSCTL_GET_COMPRESSION* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,15,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_SET_COMPRESSION* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,16,METHOD_BUFFERED,FILE_READ_DATA or FILE_WRITE_DATA)
-  FSCTL_MARK_AS_SYSTEM_HIVE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,19,METHOD_NEITHER,FILE_ANY_ACCESS)
-  FSCTL_OPLOCK_BREAK_ACK_NO_2* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,20,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_INVALIDATE_VOLUMES* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,21,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_QUERY_FAT_BPB* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,22,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_REQUEST_FILTER_OPLOCK* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,23,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_FILESYSTEM_GET_STATISTICS* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,24,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_GET_NTFS_VOLUME_DATA* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,25,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_GET_NTFS_FILE_RECORD* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,26,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_GET_VOLUME_BITMAP* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,27,METHOD_NEITHER,FILE_ANY_ACCESS)
-  FSCTL_GET_RETRIEVAL_POINTERS* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,28,METHOD_NEITHER,FILE_ANY_ACCESS)
-  FSCTL_MOVE_FILE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,29,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
-  FSCTL_IS_VOLUME_DIRTY* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,30,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_ALLOW_EXTENDED_DASD_IO* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,32,METHOD_NEITHER,FILE_ANY_ACCESS)
-  FSCTL_FIND_FILES_BY_SID* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,35,METHOD_NEITHER,FILE_ANY_ACCESS)
-  FSCTL_SET_OBJECT_ID* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,38,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
-  FSCTL_GET_OBJECT_ID* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,39,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_DELETE_OBJECT_ID* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,40,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
-  FSCTL_SET_REPARSE_POINT* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,41,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
-  FSCTL_GET_REPARSE_POINT* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,42,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_DELETE_REPARSE_POINT* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,43,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
-  FSCTL_ENUM_USN_DATA* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,44,METHOD_NEITHER,FILE_ANY_ACCESS)
-  FSCTL_SECURITY_ID_CHECK* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,45,METHOD_NEITHER,FILE_READ_DATA)
-  FSCTL_READ_USN_JOURNAL* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,46,METHOD_NEITHER,FILE_ANY_ACCESS)
-  FSCTL_SET_OBJECT_ID_EXTENDED* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,47,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
-  FSCTL_CREATE_OR_GET_OBJECT_ID* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,48,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_SET_SPARSE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,49,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
-  FSCTL_SET_ZERO_DATA* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,50,METHOD_BUFFERED,FILE_WRITE_DATA)
-  FSCTL_QUERY_ALLOCATED_RANGES* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,51,METHOD_NEITHER,FILE_READ_DATA)
-  FSCTL_SET_ENCRYPTION* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,53,METHOD_NEITHER,FILE_ANY_ACCESS)
-  FSCTL_ENCRYPTION_FSCTL_IO* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,54,METHOD_NEITHER,FILE_ANY_ACCESS)
-  FSCTL_WRITE_RAW_ENCRYPTED* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,55,METHOD_NEITHER,FILE_SPECIAL_ACCESS)
-  FSCTL_READ_RAW_ENCRYPTED* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,56,METHOD_NEITHER,FILE_SPECIAL_ACCESS)
-  FSCTL_CREATE_USN_JOURNAL* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,57,METHOD_NEITHER,FILE_ANY_ACCESS)
-  FSCTL_READ_FILE_USN_DATA* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,58,METHOD_NEITHER,FILE_ANY_ACCESS)
-  FSCTL_WRITE_USN_CLOSE_RECORD* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,59,METHOD_NEITHER,FILE_ANY_ACCESS)
-  FSCTL_EXTEND_VOLUME* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,60,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_QUERY_USN_JOURNAL* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,61,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_DELETE_USN_JOURNAL* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,62,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_MARK_HANDLE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,63,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_SIS_COPYFILE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,64,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_SIS_LINK_FILES* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,65,METHOD_BUFFERED,FILE_READ_DATA or FILE_WRITE_DATA)
-  FSCTL_HSM_MSG* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,66,METHOD_BUFFERED,FILE_READ_DATA or FILE_WRITE_DATA)
-  FSCTL_HSM_DATA* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,68,METHOD_NEITHER,FILE_READ_DATA or FILE_WRITE_DATA)
-  FSCTL_RECALL_FILE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,69,METHOD_NEITHER,FILE_ANY_ACCESS)
-  FSCTL_READ_FROM_PLEX* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,71,METHOD_OUT_DIRECT,FILE_READ_DATA)
-  FSCTL_FILE_PREFETCH* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,72,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
+  FSCTL_REQUEST_OPLOCK_LEVEL_1* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_REQUEST_OPLOCK_LEVEL_2* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_REQUEST_BATCH_OPLOCK* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_OPLOCK_BREAK_ACKNOWLEDGE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_OPBATCH_ACK_CLOSE_PENDING* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_OPLOCK_BREAK_NOTIFY* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_LOCK_VOLUME* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_UNLOCK_VOLUME* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_DISMOUNT_VOLUME* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_IS_VOLUME_MOUNTED* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_IS_PATHNAME_VALID* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_MARK_VOLUME_DIRTY* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_QUERY_RETRIEVAL_POINTERS* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 14, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_GET_COMPRESSION* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_SET_COMPRESSION* = CTL_CODE(
+    FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA or FILE_WRITE_DATA
+  )
+  FSCTL_MARK_AS_SYSTEM_HIVE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_OPLOCK_BREAK_ACK_NO_2* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_INVALIDATE_VOLUMES* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_QUERY_FAT_BPB* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_REQUEST_FILTER_OPLOCK* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_FILESYSTEM_GET_STATISTICS* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_GET_NTFS_VOLUME_DATA* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_GET_NTFS_FILE_RECORD* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_GET_VOLUME_BITMAP* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_GET_RETRIEVAL_POINTERS* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_MOVE_FILE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+  FSCTL_IS_VOLUME_DIRTY* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_ALLOW_EXTENDED_DASD_IO* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_FIND_FILES_BY_SID* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_SET_OBJECT_ID* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+  FSCTL_GET_OBJECT_ID* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_DELETE_OBJECT_ID* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+  FSCTL_SET_REPARSE_POINT* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+  FSCTL_GET_REPARSE_POINT* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_DELETE_REPARSE_POINT* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+  FSCTL_ENUM_USN_DATA* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_SECURITY_ID_CHECK* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45, METHOD_NEITHER, FILE_READ_DATA)
+  FSCTL_READ_USN_JOURNAL* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_SET_OBJECT_ID_EXTENDED* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+  FSCTL_CREATE_OR_GET_OBJECT_ID* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_SET_SPARSE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+  FSCTL_SET_ZERO_DATA* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA)
+  FSCTL_QUERY_ALLOCATED_RANGES* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51, METHOD_NEITHER, FILE_READ_DATA)
+  FSCTL_SET_ENCRYPTION* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_ENCRYPTION_FSCTL_IO* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_WRITE_RAW_ENCRYPTED* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55, METHOD_NEITHER, FILE_SPECIAL_ACCESS)
+  FSCTL_READ_RAW_ENCRYPTED* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56, METHOD_NEITHER, FILE_SPECIAL_ACCESS)
+  FSCTL_CREATE_USN_JOURNAL* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_READ_FILE_USN_DATA* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_WRITE_USN_CLOSE_RECORD* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_EXTEND_VOLUME* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_QUERY_USN_JOURNAL* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_DELETE_USN_JOURNAL* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_MARK_HANDLE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 63, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_SIS_COPYFILE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 64, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_SIS_LINK_FILES* = CTL_CODE(
+    FILE_DEVICE_FILE_SYSTEM, 65, METHOD_BUFFERED, FILE_READ_DATA or FILE_WRITE_DATA
+  )
+  FSCTL_HSM_MSG* = CTL_CODE(
+    FILE_DEVICE_FILE_SYSTEM, 66, METHOD_BUFFERED, FILE_READ_DATA or FILE_WRITE_DATA
+  )
+  FSCTL_HSM_DATA* = CTL_CODE(
+    FILE_DEVICE_FILE_SYSTEM, 68, METHOD_NEITHER, FILE_READ_DATA or FILE_WRITE_DATA
+  )
+  FSCTL_RECALL_FILE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 69, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_READ_FROM_PLEX* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 71, METHOD_OUT_DIRECT, FILE_READ_DATA)
+  FSCTL_FILE_PREFETCH* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 72, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
   USN_PAGE_SIZE* = 0x1000
   USN_REASON_DATA_OVERWRITE* = 0x00000001
   USN_REASON_DATA_EXTEND* = 0x00000002
@@ -1799,39 +2160,72 @@
   propertyExistsQuery* = 1
   propertyMaskQuery* = 2
   propertyQueryMaxDefined* = 3
-  FSCTL_MAKE_MEDIA_COMPATIBLE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 76, METHOD_BUFFERED, FILE_WRITE_DATA)
-  FSCTL_SET_DEFECT_MANAGEMENT* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 77, METHOD_BUFFERED, FILE_WRITE_DATA)
-  FSCTL_QUERY_SPARING_INFO* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 78, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_QUERY_ON_DISK_VOLUME_INFO* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 79, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_SET_VOLUME_COMPRESSION_STATE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,80, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
-  FSCTL_TXFS_MODIFY_RM* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,81, METHOD_BUFFERED, FILE_WRITE_DATA)
-  FSCTL_TXFS_QUERY_RM_INFORMATION* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,82, METHOD_BUFFERED, FILE_READ_DATA)
-  FSCTL_TXFS_ROLLFORWARD_REDO* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,84, METHOD_BUFFERED, FILE_WRITE_DATA)
-  FSCTL_TXFS_ROLLFORWARD_UNDO* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,85, METHOD_BUFFERED, FILE_WRITE_DATA)
-  FSCTL_TXFS_START_RM* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,86, METHOD_BUFFERED, FILE_WRITE_DATA)
-  FSCTL_TXFS_SHUTDOWN_RM* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 87, METHOD_BUFFERED, FILE_WRITE_DATA)
-  FSCTL_TXFS_READ_BACKUP_INFORMATION* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,88, METHOD_BUFFERED, FILE_READ_DATA)
-  FSCTL_TXFS_WRITE_BACKUP_INFORMATION* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,89, METHOD_BUFFERED, FILE_WRITE_DATA)
-  FSCTL_TXFS_CREATE_SECONDARY_RM* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,90,METHOD_BUFFERED, FILE_WRITE_DATA)
-  FSCTL_TXFS_GET_METADATA_INFO* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,91, METHOD_BUFFERED, FILE_READ_DATA)
-  FSCTL_TXFS_GET_TRANSACTED_VERSION* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,92, METHOD_BUFFERED, FILE_READ_DATA)
-  FSCTL_TXFS_SAVEPOINT_INFORMATION* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,94, METHOD_BUFFERED, FILE_WRITE_DATA)
-  FSCTL_TXFS_CREATE_MINIVERSION* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 95, METHOD_BUFFERED, FILE_WRITE_DATA)
-  FSCTL_TXFS_TRANSACTION_ACTIVE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,99, METHOD_BUFFERED, FILE_READ_DATA)
-  FSCTL_SET_ZERO_ON_DEALLOCATION* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,101, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
-  FSCTL_SET_REPAIR* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 102, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_GET_REPAIR* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 103, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_WAIT_FOR_REPAIR* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 104, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_INITIATE_REPAIR* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 106, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_CSC_INTERNAL* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 107, METHOD_NEITHER, FILE_ANY_ACCESS)
-  FSCTL_SHRINK_VOLUME* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 108, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
-  FSCTL_SET_SHORT_NAME_BEHAVIOR* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 109, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_DFSR_SET_GHOST_HANDLE_STATE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 110, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_TXFS_LIST_TRANSACTION_LOCKED_FILES* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_READ_DATA)
-  FSCTL_TXFS_LIST_TRANSACTIONS* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 121, METHOD_BUFFERED, FILE_READ_DATA)
-  FSCTL_QUERY_PAGEFILE_ENCRYPTION* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 122, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_RESET_VOLUME_ALLOCATION_HINTS* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 123, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_TXFS_READ_BACKUP_INFORMATION2* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 126, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_MAKE_MEDIA_COMPATIBLE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 76, METHOD_BUFFERED, FILE_WRITE_DATA)
+  FSCTL_SET_DEFECT_MANAGEMENT* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 77, METHOD_BUFFERED, FILE_WRITE_DATA)
+  FSCTL_QUERY_SPARING_INFO* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 78, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_QUERY_ON_DISK_VOLUME_INFO* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 79, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_SET_VOLUME_COMPRESSION_STATE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 80, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+  FSCTL_TXFS_MODIFY_RM* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 81, METHOD_BUFFERED, FILE_WRITE_DATA)
+  FSCTL_TXFS_QUERY_RM_INFORMATION* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 82, METHOD_BUFFERED, FILE_READ_DATA)
+  FSCTL_TXFS_ROLLFORWARD_REDO* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 84, METHOD_BUFFERED, FILE_WRITE_DATA)
+  FSCTL_TXFS_ROLLFORWARD_UNDO* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 85, METHOD_BUFFERED, FILE_WRITE_DATA)
+  FSCTL_TXFS_START_RM* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 86, METHOD_BUFFERED, FILE_WRITE_DATA)
+  FSCTL_TXFS_SHUTDOWN_RM* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 87, METHOD_BUFFERED, FILE_WRITE_DATA)
+  FSCTL_TXFS_READ_BACKUP_INFORMATION* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 88, METHOD_BUFFERED, FILE_READ_DATA)
+  FSCTL_TXFS_WRITE_BACKUP_INFORMATION* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 89, METHOD_BUFFERED, FILE_WRITE_DATA)
+  FSCTL_TXFS_CREATE_SECONDARY_RM* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 90, METHOD_BUFFERED, FILE_WRITE_DATA)
+  FSCTL_TXFS_GET_METADATA_INFO* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 91, METHOD_BUFFERED, FILE_READ_DATA)
+  FSCTL_TXFS_GET_TRANSACTED_VERSION* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 92, METHOD_BUFFERED, FILE_READ_DATA)
+  FSCTL_TXFS_SAVEPOINT_INFORMATION* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 94, METHOD_BUFFERED, FILE_WRITE_DATA)
+  FSCTL_TXFS_CREATE_MINIVERSION* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 95, METHOD_BUFFERED, FILE_WRITE_DATA)
+  FSCTL_TXFS_TRANSACTION_ACTIVE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 99, METHOD_BUFFERED, FILE_READ_DATA)
+  FSCTL_SET_ZERO_ON_DEALLOCATION* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 101, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+  FSCTL_SET_REPAIR* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 102, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_GET_REPAIR* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 103, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_WAIT_FOR_REPAIR* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 104, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_INITIATE_REPAIR* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 106, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_CSC_INTERNAL* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 107, METHOD_NEITHER, FILE_ANY_ACCESS)
+  FSCTL_SHRINK_VOLUME* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 108, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+  FSCTL_SET_SHORT_NAME_BEHAVIOR* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 109, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_DFSR_SET_GHOST_HANDLE_STATE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 110, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_TXFS_LIST_TRANSACTION_LOCKED_FILES* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_READ_DATA)
+  FSCTL_TXFS_LIST_TRANSACTIONS* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 121, METHOD_BUFFERED, FILE_READ_DATA)
+  FSCTL_QUERY_PAGEFILE_ENCRYPTION* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 122, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_RESET_VOLUME_ALLOCATION_HINTS* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 123, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_TXFS_READ_BACKUP_INFORMATION2* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 126, METHOD_BUFFERED, FILE_ANY_ACCESS)
   SET_REPAIR_ENABLED* = 0x00000001
   SET_REPAIR_VOLUME_BITMAP_SCAN* = 0x00000002
   SET_REPAIR_DELETE_CROSSLINK* = 0x00000004
@@ -1864,15 +2258,31 @@
   TXFS_TRANSACTION_STATE_ACTIVE* = 1
   TXFS_TRANSACTION_STATE_PREPARED* = 2
   TXFS_TRANSACTION_STATE_NOTACTIVE* = 3
-  TXFS_MODIFY_RM_VALID_FLAGS* = TXFS_RM_FLAG_LOGGING_MODE or TXFS_RM_FLAG_RENAME_RM or TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MAX or TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MIN or TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS or TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT or TXFS_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE or TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX or TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN or TXFS_RM_FLAG_SHRINK_LOG or TXFS_RM_FLAG_GROW_LOG or TXFS_RM_FLAG_ENFORCE_MINIMUM_SIZE or TXFS_RM_FLAG_PRESERVE_CHANGES or TXFS_RM_FLAG_RESET_RM_AT_NEXT_START or TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START or TXFS_RM_FLAG_PREFER_CONSISTENCY or TXFS_RM_FLAG_PREFER_AVAILABILITY
+  TXFS_MODIFY_RM_VALID_FLAGS* =
+    TXFS_RM_FLAG_LOGGING_MODE or TXFS_RM_FLAG_RENAME_RM or
+    TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MAX or TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MIN or
+    TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS or
+    TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT or TXFS_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE or
+    TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX or TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN or
+    TXFS_RM_FLAG_SHRINK_LOG or TXFS_RM_FLAG_GROW_LOG or TXFS_RM_FLAG_ENFORCE_MINIMUM_SIZE or
+    TXFS_RM_FLAG_PRESERVE_CHANGES or TXFS_RM_FLAG_RESET_RM_AT_NEXT_START or
+    TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START or TXFS_RM_FLAG_PREFER_CONSISTENCY or
+    TXFS_RM_FLAG_PREFER_AVAILABILITY
   TXFS_RM_STATE_NOT_STARTED* = 0
   TXFS_RM_STATE_STARTING* = 1
   TXFS_RM_STATE_ACTIVE* = 3
   TXFS_RM_STATE_SHUTTING_DOWN* = 4
-  TXFS_QUERY_RM_INFORMATION_VALID_FLAGS* = TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS or TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT or TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX or TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN or TXFS_RM_FLAG_RESET_RM_AT_NEXT_START or TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START or TXFS_RM_FLAG_PREFER_CONSISTENCY or TXFS_RM_FLAG_PREFER_AVAILABILITY
+  TXFS_QUERY_RM_INFORMATION_VALID_FLAGS* =
+    TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS or
+    TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT or TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX or
+    TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN or TXFS_RM_FLAG_RESET_RM_AT_NEXT_START or
+    TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START or TXFS_RM_FLAG_PREFER_CONSISTENCY or
+    TXFS_RM_FLAG_PREFER_AVAILABILITY
   TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_REDO_LSN* = 0x01
   TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_VIRTUAL_CLOCK* = 0x02
-  TXFS_ROLLFORWARD_REDO_VALID_FLAGS* = TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_REDO_LSN or TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_VIRTUAL_CLOCK
+  TXFS_ROLLFORWARD_REDO_VALID_FLAGS* =
+    TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_REDO_LSN or
+    TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_VIRTUAL_CLOCK
   TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MAX* = 0x00000001
   TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MIN* = 0x00000002
   TXFS_START_RM_FLAG_LOG_CONTAINER_SIZE* = 0x00000004
@@ -1886,7 +2296,16 @@
   TXFS_START_RM_FLAG_PRESERVE_CHANGES* = 0x00000800
   TXFS_START_RM_FLAG_PREFER_CONSISTENCY* = 0x00001000
   TXFS_START_RM_FLAG_PREFER_AVAILABILITY* = 0x00002000
-  TXFS_START_RM_VALID_FLAGS* = TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MAX or TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MIN or TXFS_START_RM_FLAG_LOG_CONTAINER_SIZE or TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS or TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT or TXFS_START_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE or TXFS_START_RM_FLAG_RECOVER_BEST_EFFORT or TXFS_START_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX or TXFS_START_RM_FLAG_LOGGING_MODE or TXFS_START_RM_FLAG_PRESERVE_CHANGES or TXFS_START_RM_FLAG_PREFER_CONSISTENCY or TXFS_START_RM_FLAG_PREFER_AVAILABILITY
+  TXFS_START_RM_VALID_FLAGS* =
+    TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MAX or
+    TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MIN or TXFS_START_RM_FLAG_LOG_CONTAINER_SIZE or
+    TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS or
+    TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT or
+    TXFS_START_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE or
+    TXFS_START_RM_FLAG_RECOVER_BEST_EFFORT or
+    TXFS_START_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX or TXFS_START_RM_FLAG_LOGGING_MODE or
+    TXFS_START_RM_FLAG_PRESERVE_CHANGES or TXFS_START_RM_FLAG_PREFER_CONSISTENCY or
+    TXFS_START_RM_FLAG_PREFER_AVAILABILITY
   TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY_FLAG_CREATED* = 0x00000001
   TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY_FLAG_DELETED* = 0x000000012
   TXFS_TRANSACTED_VERSION_NONTRANSACTED* = 0xFFFFFFFE'i32
@@ -1919,106 +2338,305 @@
   LOOKUP_STREAM_FROM_CLUSTER_ENTRY_ATTRIBUTE_DATA* = 0x01000000
   LOOKUP_STREAM_FROM_CLUSTER_ENTRY_ATTRIBUTE_INDEX* = 0x02000000
   LOOKUP_STREAM_FROM_CLUSTER_ENTRY_ATTRIBUTE_SYSTEM* = 0x03000000
-  FSCTL_QUERY_DEPENDENT_VOLUME* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,124, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_SD_GLOBAL_CHANGE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,125, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_LOOKUP_STREAM_FROM_CLUSTER* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,127, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_TXFS_WRITE_BACKUP_INFORMATION2* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,128, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_FILE_TYPE_NOTIFICATION* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,129, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_GET_BOOT_AREA_INFO* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,140, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_GET_RETRIEVAL_POINTER_BASE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,141, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_SET_PERSISTENT_VOLUME_STATE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 142, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_QUERY_PERSISTENT_VOLUME_STATE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 143, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_REQUEST_OPLOCK* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,144,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  FSCTL_CSV_TUNNEL_REQUEST* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 145, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_IS_CSV_FILE* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 146, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_QUERY_FILE_SYSTEM_RECOGNITION* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,147, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_CSV_GET_VOLUME_PATH_NAME* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM,148, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_CSV_GET_VOLUME_NAME_FOR_VOLUME_MOUNT_POINT* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 149, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_CSV_GET_VOLUME_PATH_NAMES_FOR_VOLUME_NAME* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 150, METHOD_BUFFERED, FILE_ANY_ACCESS)
-  FSCTL_IS_FILE_ON_CSV_VOLUME* = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 151, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_QUERY_DEPENDENT_VOLUME* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 124, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_SD_GLOBAL_CHANGE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 125, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_LOOKUP_STREAM_FROM_CLUSTER* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 127, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_TXFS_WRITE_BACKUP_INFORMATION2* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 128, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_FILE_TYPE_NOTIFICATION* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 129, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_GET_BOOT_AREA_INFO* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 140, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_GET_RETRIEVAL_POINTER_BASE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 141, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_SET_PERSISTENT_VOLUME_STATE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 142, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_QUERY_PERSISTENT_VOLUME_STATE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 143, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_REQUEST_OPLOCK* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 144, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_CSV_TUNNEL_REQUEST* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 145, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_IS_CSV_FILE* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 146, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_QUERY_FILE_SYSTEM_RECOGNITION* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 147, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_CSV_GET_VOLUME_PATH_NAME* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 148, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_CSV_GET_VOLUME_NAME_FOR_VOLUME_MOUNT_POINT* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 149, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_CSV_GET_VOLUME_PATH_NAMES_FOR_VOLUME_NAME* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 150, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  FSCTL_IS_FILE_ON_CSV_VOLUME* =
+    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 151, METHOD_BUFFERED, FILE_ANY_ACCESS)
   IOCTL_VOLUME_BASE* = (DWORD) 'V'
-  IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS* = CTL_CODE(IOCTL_VOLUME_BASE,0,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_VOLUME_SUPPORTS_ONLINE_OFFLINE* = CTL_CODE(IOCTL_VOLUME_BASE,1,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_VOLUME_ONLINE* = CTL_CODE(IOCTL_VOLUME_BASE,2,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_VOLUME_OFFLINE* = CTL_CODE(IOCTL_VOLUME_BASE,3,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS)
-  IOCTL_VOLUME_IS_OFFLINE* = CTL_CODE(IOCTL_VOLUME_BASE,4,METHOD_BUFFERED, FILE_ANY_ACCESS)
-  IOCTL_VOLUME_IS_IO_CAPABLE* = CTL_CODE(IOCTL_VOLUME_BASE,5,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_VOLUME_QUERY_FAILOVER_SET* = CTL_CODE(IOCTL_VOLUME_BASE,6,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_VOLUME_QUERY_VOLUME_NUMBER* = CTL_CODE(IOCTL_VOLUME_BASE,7,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_VOLUME_LOGICAL_TO_PHYSICAL* = CTL_CODE(IOCTL_VOLUME_BASE,8,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_VOLUME_PHYSICAL_TO_LOGICAL* = CTL_CODE(IOCTL_VOLUME_BASE,9,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_VOLUME_IS_CLUSTERED* = CTL_CODE(IOCTL_VOLUME_BASE,12,METHOD_BUFFERED,FILE_ANY_ACCESS)
-  IOCTL_VOLUME_GET_GPT_ATTRIBUTES* = CTL_CODE(IOCTL_VOLUME_BASE,14,METHOD_BUFFERED,FILE_ANY_ACCESS)
+  IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS* =
+    CTL_CODE(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_VOLUME_SUPPORTS_ONLINE_OFFLINE* =
+    CTL_CODE(IOCTL_VOLUME_BASE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_VOLUME_ONLINE* = CTL_CODE(
+    IOCTL_VOLUME_BASE, 2, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_VOLUME_OFFLINE* = CTL_CODE(
+    IOCTL_VOLUME_BASE, 3, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS
+  )
+  IOCTL_VOLUME_IS_OFFLINE* =
+    CTL_CODE(IOCTL_VOLUME_BASE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_VOLUME_IS_IO_CAPABLE* =
+    CTL_CODE(IOCTL_VOLUME_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_VOLUME_QUERY_FAILOVER_SET* =
+    CTL_CODE(IOCTL_VOLUME_BASE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_VOLUME_QUERY_VOLUME_NUMBER* =
+    CTL_CODE(IOCTL_VOLUME_BASE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_VOLUME_LOGICAL_TO_PHYSICAL* =
+    CTL_CODE(IOCTL_VOLUME_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_VOLUME_PHYSICAL_TO_LOGICAL* =
+    CTL_CODE(IOCTL_VOLUME_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_VOLUME_IS_CLUSTERED* =
+    CTL_CODE(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  IOCTL_VOLUME_GET_GPT_ATTRIBUTES* =
+    CTL_CODE(IOCTL_VOLUME_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
   HISTOGRAM_BUCKET_SIZE* = 0x00000008
   DISK_HISTOGRAM_SIZE* = 0x00000048
-type
-  FILE_SYSTEM_RECOGNITION_STRUCTURE* {.pure.} = object
-    Jmp*: array[3, UCHAR]
-    FsName*: array[8, UCHAR]
-    MustBeZero*: array[5, UCHAR]
-    Identifier*: ULONG
-    Length*: USHORT
-    Checksum*: USHORT
-proc `Mbr=`*(self: var SET_PARTITION_INFORMATION_EX, x: SET_PARTITION_INFORMATION_MBR) {.inline.} = self.union1.Mbr = x
-proc Mbr*(self: SET_PARTITION_INFORMATION_EX): SET_PARTITION_INFORMATION_MBR {.inline.} = self.union1.Mbr
-proc Mbr*(self: var SET_PARTITION_INFORMATION_EX): var SET_PARTITION_INFORMATION_MBR {.inline.} = self.union1.Mbr
-proc `Gpt=`*(self: var SET_PARTITION_INFORMATION_EX, x: SET_PARTITION_INFORMATION_GPT) {.inline.} = self.union1.Gpt = x
-proc Gpt*(self: SET_PARTITION_INFORMATION_EX): SET_PARTITION_INFORMATION_GPT {.inline.} = self.union1.Gpt
-proc Gpt*(self: var SET_PARTITION_INFORMATION_EX): var SET_PARTITION_INFORMATION_GPT {.inline.} = self.union1.Gpt
-proc `Mbr=`*(self: var CREATE_DISK, x: CREATE_DISK_MBR) {.inline.} = self.union1.Mbr = x
-proc Mbr*(self: CREATE_DISK): CREATE_DISK_MBR {.inline.} = self.union1.Mbr
-proc Mbr*(self: var CREATE_DISK): var CREATE_DISK_MBR {.inline.} = self.union1.Mbr
-proc `Gpt=`*(self: var CREATE_DISK, x: CREATE_DISK_GPT) {.inline.} = self.union1.Gpt = x
-proc Gpt*(self: CREATE_DISK): CREATE_DISK_GPT {.inline.} = self.union1.Gpt
-proc Gpt*(self: var CREATE_DISK): var CREATE_DISK_GPT {.inline.} = self.union1.Gpt
-proc `Mbr=`*(self: var PARTITION_INFORMATION_EX, x: PARTITION_INFORMATION_MBR) {.inline.} = self.union1.Mbr = x
-proc Mbr*(self: PARTITION_INFORMATION_EX): PARTITION_INFORMATION_MBR {.inline.} = self.union1.Mbr
-proc Mbr*(self: var PARTITION_INFORMATION_EX): var PARTITION_INFORMATION_MBR {.inline.} = self.union1.Mbr
-proc `Gpt=`*(self: var PARTITION_INFORMATION_EX, x: PARTITION_INFORMATION_GPT) {.inline.} = self.union1.Gpt = x
-proc Gpt*(self: PARTITION_INFORMATION_EX): PARTITION_INFORMATION_GPT {.inline.} = self.union1.Gpt
-proc Gpt*(self: var PARTITION_INFORMATION_EX): var PARTITION_INFORMATION_GPT {.inline.} = self.union1.Gpt
-proc `Mbr=`*(self: var DRIVE_LAYOUT_INFORMATION_EX, x: DRIVE_LAYOUT_INFORMATION_MBR) {.inline.} = self.union1.Mbr = x
-proc Mbr*(self: DRIVE_LAYOUT_INFORMATION_EX): DRIVE_LAYOUT_INFORMATION_MBR {.inline.} = self.union1.Mbr
-proc Mbr*(self: var DRIVE_LAYOUT_INFORMATION_EX): var DRIVE_LAYOUT_INFORMATION_MBR {.inline.} = self.union1.Mbr
-proc `Gpt=`*(self: var DRIVE_LAYOUT_INFORMATION_EX, x: DRIVE_LAYOUT_INFORMATION_GPT) {.inline.} = self.union1.Gpt = x
-proc Gpt*(self: DRIVE_LAYOUT_INFORMATION_EX): DRIVE_LAYOUT_INFORMATION_GPT {.inline.} = self.union1.Gpt
-proc Gpt*(self: var DRIVE_LAYOUT_INFORMATION_EX): var DRIVE_LAYOUT_INFORMATION_GPT {.inline.} = self.union1.Gpt
-proc `Int13=`*(self: var DISK_DETECTION_INFO, x: DISK_INT13_INFO) {.inline.} = self.union1.struct1.Int13 = x
-proc Int13*(self: DISK_DETECTION_INFO): DISK_INT13_INFO {.inline.} = self.union1.struct1.Int13
-proc Int13*(self: var DISK_DETECTION_INFO): var DISK_INT13_INFO {.inline.} = self.union1.struct1.Int13
-proc `ExInt13=`*(self: var DISK_DETECTION_INFO, x: DISK_EX_INT13_INFO) {.inline.} = self.union1.struct1.ExInt13 = x
-proc ExInt13*(self: DISK_DETECTION_INFO): DISK_EX_INT13_INFO {.inline.} = self.union1.struct1.ExInt13
-proc ExInt13*(self: var DISK_DETECTION_INFO): var DISK_EX_INT13_INFO {.inline.} = self.union1.struct1.ExInt13
-proc `Mbr=`*(self: var DISK_PARTITION_INFO, x: DISK_PARTITION_INFO_UNION1_Mbr) {.inline.} = self.union1.Mbr = x
-proc Mbr*(self: DISK_PARTITION_INFO): DISK_PARTITION_INFO_UNION1_Mbr {.inline.} = self.union1.Mbr
-proc Mbr*(self: var DISK_PARTITION_INFO): var DISK_PARTITION_INFO_UNION1_Mbr {.inline.} = self.union1.Mbr
-proc `Gpt=`*(self: var DISK_PARTITION_INFO, x: DISK_PARTITION_INFO_UNION1_Gpt) {.inline.} = self.union1.Gpt = x
-proc Gpt*(self: DISK_PARTITION_INFO): DISK_PARTITION_INFO_UNION1_Gpt {.inline.} = self.union1.Gpt
-proc Gpt*(self: var DISK_PARTITION_INFO): var DISK_PARTITION_INFO_UNION1_Gpt {.inline.} = self.union1.Gpt
-proc `ScalarPrefetch=`*(self: var DISK_CACHE_INFORMATION, x: DISK_CACHE_INFORMATION_UNION1_ScalarPrefetch) {.inline.} = self.union1.ScalarPrefetch = x
-proc ScalarPrefetch*(self: DISK_CACHE_INFORMATION): DISK_CACHE_INFORMATION_UNION1_ScalarPrefetch {.inline.} = self.union1.ScalarPrefetch
-proc ScalarPrefetch*(self: var DISK_CACHE_INFORMATION): var DISK_CACHE_INFORMATION_UNION1_ScalarPrefetch {.inline.} = self.union1.ScalarPrefetch
-proc `BlockPrefetch=`*(self: var DISK_CACHE_INFORMATION, x: DISK_CACHE_INFORMATION_UNION1_BlockPrefetch) {.inline.} = self.union1.BlockPrefetch = x
-proc BlockPrefetch*(self: DISK_CACHE_INFORMATION): DISK_CACHE_INFORMATION_UNION1_BlockPrefetch {.inline.} = self.union1.BlockPrefetch
-proc BlockPrefetch*(self: var DISK_CACHE_INFORMATION): var DISK_CACHE_INFORMATION_UNION1_BlockPrefetch {.inline.} = self.union1.BlockPrefetch
-proc `BirthVolumeId=`*(self: var FILE_OBJECTID_BUFFER, x: array[16, BYTE]) {.inline.} = self.union1.struct1.BirthVolumeId = x
-proc BirthVolumeId*(self: FILE_OBJECTID_BUFFER): array[16, BYTE] {.inline.} = self.union1.struct1.BirthVolumeId
-proc BirthVolumeId*(self: var FILE_OBJECTID_BUFFER): var array[16, BYTE] {.inline.} = self.union1.struct1.BirthVolumeId
-proc `BirthObjectId=`*(self: var FILE_OBJECTID_BUFFER, x: array[16, BYTE]) {.inline.} = self.union1.struct1.BirthObjectId = x
-proc BirthObjectId*(self: FILE_OBJECTID_BUFFER): array[16, BYTE] {.inline.} = self.union1.struct1.BirthObjectId
-proc BirthObjectId*(self: var FILE_OBJECTID_BUFFER): var array[16, BYTE] {.inline.} = self.union1.struct1.BirthObjectId
-proc `DomainId=`*(self: var FILE_OBJECTID_BUFFER, x: array[16, BYTE]) {.inline.} = self.union1.struct1.DomainId = x
-proc DomainId*(self: FILE_OBJECTID_BUFFER): array[16, BYTE] {.inline.} = self.union1.struct1.DomainId
-proc DomainId*(self: var FILE_OBJECTID_BUFFER): var array[16, BYTE] {.inline.} = self.union1.struct1.DomainId
-proc `ExtendedInfo=`*(self: var FILE_OBJECTID_BUFFER, x: array[48, BYTE]) {.inline.} = self.union1.ExtendedInfo = x
-proc ExtendedInfo*(self: FILE_OBJECTID_BUFFER): array[48, BYTE] {.inline.} = self.union1.ExtendedInfo
-proc ExtendedInfo*(self: var FILE_OBJECTID_BUFFER): var array[48, BYTE] {.inline.} = self.union1.ExtendedInfo
-proc `BufferLength=`*(self: var TXFS_READ_BACKUP_INFORMATION_OUT, x: ULONG) {.inline.} = self.union1.BufferLength = x
-proc BufferLength*(self: TXFS_READ_BACKUP_INFORMATION_OUT): ULONG {.inline.} = self.union1.BufferLength
-proc BufferLength*(self: var TXFS_READ_BACKUP_INFORMATION_OUT): var ULONG {.inline.} = self.union1.BufferLength
-proc `Buffer=`*(self: var TXFS_READ_BACKUP_INFORMATION_OUT, x: UCHAR) {.inline.} = self.union1.Buffer = x
-proc Buffer*(self: TXFS_READ_BACKUP_INFORMATION_OUT): UCHAR {.inline.} = self.union1.Buffer
-proc Buffer*(self: var TXFS_READ_BACKUP_INFORMATION_OUT): var UCHAR {.inline.} = self.union1.Buffer
+type FILE_SYSTEM_RECOGNITION_STRUCTURE* {.pure.} = object
+  Jmp*: array[3, UCHAR]
+  FsName*: array[8, UCHAR]
+  MustBeZero*: array[5, UCHAR]
+  Identifier*: ULONG
+  Length*: USHORT
+  Checksum*: USHORT
+
+proc `Mbr=`*(
+    self: var SET_PARTITION_INFORMATION_EX, x: SET_PARTITION_INFORMATION_MBR
+) {.inline.} =
+  self.union1.Mbr = x
+
+proc Mbr*(
+    self: SET_PARTITION_INFORMATION_EX
+): SET_PARTITION_INFORMATION_MBR {.inline.} =
+  self.union1.Mbr
+
+proc Mbr*(
+    self: var SET_PARTITION_INFORMATION_EX
+): var SET_PARTITION_INFORMATION_MBR {.inline.} =
+  self.union1.Mbr
+
+proc `Gpt=`*(
+    self: var SET_PARTITION_INFORMATION_EX, x: SET_PARTITION_INFORMATION_GPT
+) {.inline.} =
+  self.union1.Gpt = x
+
+proc Gpt*(
+    self: SET_PARTITION_INFORMATION_EX
+): SET_PARTITION_INFORMATION_GPT {.inline.} =
+  self.union1.Gpt
+
+proc Gpt*(
+    self: var SET_PARTITION_INFORMATION_EX
+): var SET_PARTITION_INFORMATION_GPT {.inline.} =
+  self.union1.Gpt
+
+proc `Mbr=`*(self: var CREATE_DISK, x: CREATE_DISK_MBR) {.inline.} =
+  self.union1.Mbr = x
+
+proc Mbr*(self: CREATE_DISK): CREATE_DISK_MBR {.inline.} =
+  self.union1.Mbr
+
+proc Mbr*(self: var CREATE_DISK): var CREATE_DISK_MBR {.inline.} =
+  self.union1.Mbr
+
+proc `Gpt=`*(self: var CREATE_DISK, x: CREATE_DISK_GPT) {.inline.} =
+  self.union1.Gpt = x
+
+proc Gpt*(self: CREATE_DISK): CREATE_DISK_GPT {.inline.} =
+  self.union1.Gpt
+
+proc Gpt*(self: var CREATE_DISK): var CREATE_DISK_GPT {.inline.} =
+  self.union1.Gpt
+
+proc `Mbr=`*(
+    self: var PARTITION_INFORMATION_EX, x: PARTITION_INFORMATION_MBR
+) {.inline.} =
+  self.union1.Mbr = x
+
+proc Mbr*(self: PARTITION_INFORMATION_EX): PARTITION_INFORMATION_MBR {.inline.} =
+  self.union1.Mbr
+
+proc Mbr*(
+    self: var PARTITION_INFORMATION_EX
+): var PARTITION_INFORMATION_MBR {.inline.} =
+  self.union1.Mbr
+
+proc `Gpt=`*(
+    self: var PARTITION_INFORMATION_EX, x: PARTITION_INFORMATION_GPT
+) {.inline.} =
+  self.union1.Gpt = x
+
+proc Gpt*(self: PARTITION_INFORMATION_EX): PARTITION_INFORMATION_GPT {.inline.} =
+  self.union1.Gpt
+
+proc Gpt*(
+    self: var PARTITION_INFORMATION_EX
+): var PARTITION_INFORMATION_GPT {.inline.} =
+  self.union1.Gpt
+
+proc `Mbr=`*(
+    self: var DRIVE_LAYOUT_INFORMATION_EX, x: DRIVE_LAYOUT_INFORMATION_MBR
+) {.inline.} =
+  self.union1.Mbr = x
+
+proc Mbr*(self: DRIVE_LAYOUT_INFORMATION_EX): DRIVE_LAYOUT_INFORMATION_MBR {.inline.} =
+  self.union1.Mbr
+
+proc Mbr*(
+    self: var DRIVE_LAYOUT_INFORMATION_EX
+): var DRIVE_LAYOUT_INFORMATION_MBR {.inline.} =
+  self.union1.Mbr
+
+proc `Gpt=`*(
+    self: var DRIVE_LAYOUT_INFORMATION_EX, x: DRIVE_LAYOUT_INFORMATION_GPT
+) {.inline.} =
+  self.union1.Gpt = x
+
+proc Gpt*(self: DRIVE_LAYOUT_INFORMATION_EX): DRIVE_LAYOUT_INFORMATION_GPT {.inline.} =
+  self.union1.Gpt
+
+proc Gpt*(
+    self: var DRIVE_LAYOUT_INFORMATION_EX
+): var DRIVE_LAYOUT_INFORMATION_GPT {.inline.} =
+  self.union1.Gpt
+
+proc `Int13=`*(self: var DISK_DETECTION_INFO, x: DISK_INT13_INFO) {.inline.} =
+  self.union1.struct1.Int13 = x
+
+proc Int13*(self: DISK_DETECTION_INFO): DISK_INT13_INFO {.inline.} =
+  self.union1.struct1.Int13
+
+proc Int13*(self: var DISK_DETECTION_INFO): var DISK_INT13_INFO {.inline.} =
+  self.union1.struct1.Int13
+
+proc `ExInt13=`*(self: var DISK_DETECTION_INFO, x: DISK_EX_INT13_INFO) {.inline.} =
+  self.union1.struct1.ExInt13 = x
+
+proc ExInt13*(self: DISK_DETECTION_INFO): DISK_EX_INT13_INFO {.inline.} =
+  self.union1.struct1.ExInt13
+
+proc ExInt13*(self: var DISK_DETECTION_INFO): var DISK_EX_INT13_INFO {.inline.} =
+  self.union1.struct1.ExInt13
+
+proc `Mbr=`*(
+    self: var DISK_PARTITION_INFO, x: DISK_PARTITION_INFO_UNION1_Mbr
+) {.inline.} =
+  self.union1.Mbr = x
+
+proc Mbr*(self: DISK_PARTITION_INFO): DISK_PARTITION_INFO_UNION1_Mbr {.inline.} =
+  self.union1.Mbr
+
+proc Mbr*(
+    self: var DISK_PARTITION_INFO
+): var DISK_PARTITION_INFO_UNION1_Mbr {.inline.} =
+  self.union1.Mbr
+
+proc `Gpt=`*(
+    self: var DISK_PARTITION_INFO, x: DISK_PARTITION_INFO_UNION1_Gpt
+) {.inline.} =
+  self.union1.Gpt = x
+
+proc Gpt*(self: DISK_PARTITION_INFO): DISK_PARTITION_INFO_UNION1_Gpt {.inline.} =
+  self.union1.Gpt
+
+proc Gpt*(
+    self: var DISK_PARTITION_INFO
+): var DISK_PARTITION_INFO_UNION1_Gpt {.inline.} =
+  self.union1.Gpt
+
+proc `ScalarPrefetch=`*(
+    self: var DISK_CACHE_INFORMATION, x: DISK_CACHE_INFORMATION_UNION1_ScalarPrefetch
+) {.inline.} =
+  self.union1.ScalarPrefetch = x
+
+proc ScalarPrefetch*(
+    self: DISK_CACHE_INFORMATION
+): DISK_CACHE_INFORMATION_UNION1_ScalarPrefetch {.inline.} =
+  self.union1.ScalarPrefetch
+
+proc ScalarPrefetch*(
+    self: var DISK_CACHE_INFORMATION
+): var DISK_CACHE_INFORMATION_UNION1_ScalarPrefetch {.inline.} =
+  self.union1.ScalarPrefetch
+
+proc `BlockPrefetch=`*(
+    self: var DISK_CACHE_INFORMATION, x: DISK_CACHE_INFORMATION_UNION1_BlockPrefetch
+) {.inline.} =
+  self.union1.BlockPrefetch = x
+
+proc BlockPrefetch*(
+    self: DISK_CACHE_INFORMATION
+): DISK_CACHE_INFORMATION_UNION1_BlockPrefetch {.inline.} =
+  self.union1.BlockPrefetch
+
+proc BlockPrefetch*(
+    self: var DISK_CACHE_INFORMATION
+): var DISK_CACHE_INFORMATION_UNION1_BlockPrefetch {.inline.} =
+  self.union1.BlockPrefetch
+
+proc `BirthVolumeId=`*(self: var FILE_OBJECTID_BUFFER, x: array[16, BYTE]) {.inline.} =
+  self.union1.struct1.BirthVolumeId = x
+
+proc BirthVolumeId*(self: FILE_OBJECTID_BUFFER): array[16, BYTE] {.inline.} =
+  self.union1.struct1.BirthVolumeId
+
+proc BirthVolumeId*(self: var FILE_OBJECTID_BUFFER): var array[16, BYTE] {.inline.} =
+  self.union1.struct1.BirthVolumeId
+
+proc `BirthObjectId=`*(self: var FILE_OBJECTID_BUFFER, x: array[16, BYTE]) {.inline.} =
+  self.union1.struct1.BirthObjectId = x
+
+proc BirthObjectId*(self: FILE_OBJECTID_BUFFER): array[16, BYTE] {.inline.} =
+  self.union1.struct1.BirthObjectId
+
+proc BirthObjectId*(self: var FILE_OBJECTID_BUFFER): var array[16, BYTE] {.inline.} =
+  self.union1.struct1.BirthObjectId
+
+proc `DomainId=`*(self: var FILE_OBJECTID_BUFFER, x: array[16, BYTE]) {.inline.} =
+  self.union1.struct1.DomainId = x
+
+proc DomainId*(self: FILE_OBJECTID_BUFFER): array[16, BYTE] {.inline.} =
+  self.union1.struct1.DomainId
+
+proc DomainId*(self: var FILE_OBJECTID_BUFFER): var array[16, BYTE] {.inline.} =
+  self.union1.struct1.DomainId
+
+proc `ExtendedInfo=`*(self: var FILE_OBJECTID_BUFFER, x: array[48, BYTE]) {.inline.} =
+  self.union1.ExtendedInfo = x
+
+proc ExtendedInfo*(self: FILE_OBJECTID_BUFFER): array[48, BYTE] {.inline.} =
+  self.union1.ExtendedInfo
+
+proc ExtendedInfo*(self: var FILE_OBJECTID_BUFFER): var array[48, BYTE] {.inline.} =
+  self.union1.ExtendedInfo
+
+proc `BufferLength=`*(self: var TXFS_READ_BACKUP_INFORMATION_OUT, x: ULONG) {.inline.} =
+  self.union1.BufferLength = x
+
+proc BufferLength*(self: TXFS_READ_BACKUP_INFORMATION_OUT): ULONG {.inline.} =
+  self.union1.BufferLength
+
+proc BufferLength*(self: var TXFS_READ_BACKUP_INFORMATION_OUT): var ULONG {.inline.} =
+  self.union1.BufferLength
+
+proc `Buffer=`*(self: var TXFS_READ_BACKUP_INFORMATION_OUT, x: UCHAR) {.inline.} =
+  self.union1.Buffer = x
+
+proc Buffer*(self: TXFS_READ_BACKUP_INFORMATION_OUT): UCHAR {.inline.} =
+  self.union1.Buffer
+
+proc Buffer*(self: var TXFS_READ_BACKUP_INFORMATION_OUT): var UCHAR {.inline.} =
+  self.union1.Buffer
+
 when winimCpu64:
   type
     MOVE_FILE_DATA32* {.pure.} = object
@@ -2026,9 +2644,11 @@
       StartingVcn*: LARGE_INTEGER
       StartingLcn*: LARGE_INTEGER
       ClusterCount*: DWORD
+
     PMOVE_FILE_DATA32* = ptr MOVE_FILE_DATA32
     MARK_HANDLE_INFO32* {.pure.} = object
       UsnSourceInfo*: DWORD
       VolumeHandle*: UINT32
       HandleInfo*: DWORD
+
     PMARK_HANDLE_INFO32* = ptr MARK_HANDLE_INFO32
--- a/semicongine/thirdparty/winim/winim/inc/winldap.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winldap.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -21,6 +21,7 @@
   SecPkgContext_IssuerListInfo* {.pure.} = object
     cbIssuerList*: DWORD
     pIssuerList*: PBYTE
+
   PSecPkgContext_IssuerListInfo* = ptr SecPkgContext_IssuerListInfo
   SecPkgContext_RemoteCredentialInfo* {.pure.} = object
     cbCertificateChain*: DWORD
@@ -28,6 +29,7 @@
     cCertificates*: DWORD
     fFlags*: DWORD
     dwBits*: DWORD
+
   PSecPkgContext_RemoteCredentialInfo* = ptr SecPkgContext_RemoteCredentialInfo
   SecPkgContext_RemoteCredenitalInfo* = SecPkgContext_RemoteCredentialInfo
   PSecPkgContext_RemoteCredenitalInfo* = ptr SecPkgContext_RemoteCredentialInfo
@@ -37,23 +39,28 @@
     cCertificates*: DWORD
     fFlags*: DWORD
     dwBits*: DWORD
+
   PSecPkgContext_LocalCredentialInfo* = ptr SecPkgContext_LocalCredentialInfo
   SecPkgContext_LocalCredenitalInfo* = SecPkgContext_LocalCredentialInfo
   PSecPkgContext_LocalCredenitalInfo* = ptr SecPkgContext_LocalCredentialInfo
   SecPkgCred_SupportedAlgs* {.pure.} = object
     cSupportedAlgs*: DWORD
     palgSupportedAlgs*: ptr ALG_ID
+
   PSecPkgCred_SupportedAlgs* = ptr SecPkgCred_SupportedAlgs
   SecPkgCred_CipherStrengths* {.pure.} = object
     dwMinimumCipherStrength*: DWORD
     dwMaximumCipherStrength*: DWORD
+
   PSecPkgCred_CipherStrengths* = ptr SecPkgCred_CipherStrengths
   SecPkgCred_SupportedProtocols* {.pure.} = object
     grbitProtocol*: DWORD
+
   PSecPkgCred_SupportedProtocols* = ptr SecPkgCred_SupportedProtocols
   SecPkgContext_IssuerListInfoEx* {.pure.} = object
     aIssuers*: PCERT_NAME_BLOB
     cIssuers*: DWORD
+
   PSecPkgContext_IssuerListInfoEx* = ptr SecPkgContext_IssuerListInfoEx
   SecPkgContext_ConnectionInfo* {.pure.} = object
     dwProtocol*: DWORD
@@ -63,24 +70,29 @@
     dwHashStrength*: DWORD
     aiExch*: ALG_ID
     dwExchStrength*: DWORD
+
   PSecPkgContext_ConnectionInfo* = ptr SecPkgContext_ConnectionInfo
   SecPkgContext_EapKeyBlock* {.pure.} = object
     rgbKeys*: array[128, BYTE]
     rgbIVs*: array[64, BYTE]
+
   PSecPkgContext_EapKeyBlock* = ptr SecPkgContext_EapKeyBlock
   SecPkgContext_MappedCredAttr* {.pure.} = object
     dwAttribute*: DWORD
     pvBuffer*: PVOID
+
   PSecPkgContext_MappedCredAttr* = ptr SecPkgContext_MappedCredAttr
   SecPkgContext_SessionInfo* {.pure.} = object
     dwFlags*: DWORD
     cbSessionId*: DWORD
     rgbSessionId*: array[32, BYTE]
+
   PSecPkgContext_SessionInfo* = ptr SecPkgContext_SessionInfo
   SecPkgContext_SessionAppData* {.pure.} = object
     dwFlags*: DWORD
     cbAppData*: DWORD
     pbAppData*: PBYTE
+
   PSecPkgContext_SessionAppData* = ptr SecPkgContext_SessionAppData
   HMAPPER* {.pure.} = object
   SCHANNEL_CRED* {.pure.} = object
@@ -98,12 +110,14 @@
     dwSessionLifespan*: DWORD
     dwFlags*: DWORD
     dwCredFormat*: DWORD
+
   PSCHANNEL_CRED* = ptr SCHANNEL_CRED
   SCHANNEL_CERT_HASH* {.pure.} = object
     dwLength*: DWORD
     dwFlags*: DWORD
     hProv*: HCRYPTPROV
     ShaHash*: array[20, BYTE]
+
   PSCHANNEL_CERT_HASH* = ptr SCHANNEL_CERT_HASH
   SSL_CREDENTIAL_CERTIFICATE* {.pure.} = object
     cbPrivateKey*: DWORD
@@ -111,6 +125,7 @@
     cbCertificate*: DWORD
     pCertificate*: PBYTE
     pszPassword*: PSTR
+
   PSSL_CREDENTIAL_CERTIFICATE* = ptr SSL_CREDENTIAL_CERTIFICATE
   SCH_CRED* {.pure.} = object
     dwVersion*: DWORD
@@ -119,30 +134,36 @@
     paPublic*: ptr PVOID
     cMappers*: DWORD
     aphMappers*: ptr ptr HMAPPER
+
   PSCH_CRED* = ptr SCH_CRED
   SCH_CRED_SECRET_CAPI* {.pure.} = object
     dwType*: DWORD
     hProv*: HCRYPTPROV
+
   PSCH_CRED_SECRET_CAPI* = ptr SCH_CRED_SECRET_CAPI
   SCH_CRED_SECRET_PRIVKEY* {.pure.} = object
     dwType*: DWORD
     pPrivateKey*: PBYTE
     cbPrivateKey*: DWORD
     pszPassword*: PSTR
+
   PSCH_CRED_SECRET_PRIVKEY* = ptr SCH_CRED_SECRET_PRIVKEY
   SCH_CRED_PUBLIC_CERTCHAIN* {.pure.} = object
     dwType*: DWORD
     cbCertChain*: DWORD
     pCertChain*: PBYTE
+
   PSCH_CRED_PUBLIC_CERTCHAIN* = ptr SCH_CRED_PUBLIC_CERTCHAIN
   SCH_CRED_PUBLIC_CAPI* {.pure.} = object
     dwType*: DWORD
     hProv*: HCRYPTPROV
+
   PSCH_CRED_PUBLIC_CAPI* = ptr SCH_CRED_PUBLIC_CAPI
   PctPublicKey* {.pure.} = object
     Type*: DWORD
     cbKey*: DWORD
     pKey*: array[1, UCHAR]
+
   X509Certificate* {.pure.} = object
     Version*: DWORD
     SerialNumber*: array[4, DWORD]
@@ -152,20 +173,24 @@
     pszIssuer*: PSTR
     pszSubject*: PSTR
     pPublicKey*: ptr PctPublicKey
+
   PX509Certificate* = ptr X509Certificate
   SecPkgContext_EapPrfInfo* {.pure.} = object
     dwVersion*: DWORD
     cbPrfData*: DWORD
+
   PSecPkgContext_EapPrfInfo* = ptr SecPkgContext_EapPrfInfo
   SecPkgContext_SupportedSignatures* {.pure.} = object
     cSignatureAndHashAlgorithms*: WORD
     pSignatureAndHashAlgorithms*: ptr WORD
+
   PSecPkgContext_SupportedSignatures* = ptr SecPkgContext_SupportedSignatures
   LDAP_ld_sb* {.pure.} = object
     sb_sd*: UINT_PTR
-    Reserved1*: array[(10*sizeof(ULONG))+1, UCHAR]
+    Reserved1*: array[(10 * sizeof(ULONG)) + 1, UCHAR]
     sb_naddr*: ULONG_PTR
-    Reserved2*: array[(6*sizeof(ULONG)), UCHAR]
+    Reserved2*: array[(6 * sizeof(ULONG)), UCHAR]
+
   LDAP* {.pure.} = object
     ld_sb*: LDAP_ld_sb
     ld_host*: PCHAR
@@ -178,19 +203,22 @@
     ld_matched*: PCHAR
     ld_error*: PCHAR
     ld_msgid*: ULONG
-    Reserved3*: array[(6*sizeof(ULONG))+1, UCHAR]
+    Reserved3*: array[(6 * sizeof(ULONG)) + 1, UCHAR]
     ld_cldaptries*: ULONG
     ld_cldaptimeout*: ULONG
     ld_refhoplimit*: ULONG
     ld_options*: ULONG
+
   PLDAP* = ptr LDAP
   LDAP_TIMEVAL* {.pure.} = object
     tv_sec*: LONG
     tv_usec*: LONG
+
   PLDAP_TIMEVAL* = ptr LDAP_TIMEVAL
   LDAP_BERVAL* {.pure.} = object
     bv_len*: ULONG
     bv_val*: PCHAR
+
   PLDAP_BERVAL* = ptr LDAP_BERVAL
   BERVAL* = LDAP_BERVAL
   PBERVAL* = ptr LDAP_BERVAL
@@ -209,47 +237,57 @@
     lm_chased*: BOOLEAN
     lm_eom*: BOOLEAN
     ConnectionReferenced*: BOOLEAN
+
   PLDAPMessage* = ptr LDAPMessage
   LDAPControlA* {.pure.} = object
     ldctl_oid*: PCHAR
     ldctl_value*: BERVAL
     ldctl_iscritical*: BOOLEAN
+
   PLDAPControlA* = ptr LDAPControlA
   LDAPControlW* {.pure.} = object
     ldctl_oid*: PWCHAR
     ldctl_value*: BERVAL
     ldctl_iscritical*: BOOLEAN
+
   PLDAPControlW* = ptr LDAPControlW
   LDAPModW_mod_vals* {.pure, union.} = object
     modv_strvals*: ptr PWCHAR
     modv_bvals*: ptr ptr BERVAL
+
   LDAPModW* {.pure.} = object
     mod_op*: ULONG
     mod_type*: PWCHAR
     mod_vals*: LDAPModW_mod_vals
+
   PLDAPModW* = ptr LDAPModW
   LDAPModA_mod_vals* {.pure, union.} = object
     modv_strvals*: ptr PCHAR
     modv_bvals*: ptr ptr BERVAL
+
   LDAPModA* {.pure.} = object
     mod_op*: ULONG
     mod_type*: PCHAR
     mod_vals*: LDAPModA_mod_vals
+
   PLDAPModA* = ptr LDAPModA
   LDAP_VERSION_INFO* {.pure.} = object
     lv_size*: ULONG
     lv_major*: ULONG
     lv_minor*: ULONG
+
   PLDAP_VERSION_INFO* = ptr LDAP_VERSION_INFO
   LDAPSortKeyW* {.pure.} = object
     sk_attrtype*: PWCHAR
     sk_matchruleoid*: PWCHAR
     sk_reverseorder*: BOOLEAN
+
   PLDAPSortKeyW* = ptr LDAPSortKeyW
   LDAPSortKeyA* {.pure.} = object
     sk_attrtype*: PCHAR
     sk_matchruleoid*: PCHAR
     sk_reverseorder*: BOOLEAN
+
   PLDAPSortKeyA* = ptr LDAPSortKeyA
   LDAPVLVInfo* {.pure.} = object
     ldvlv_version*: int32
@@ -260,19 +298,42 @@
     ldvlv_attrvalue*: PBERVAL
     ldvlv_context*: PBERVAL
     ldvlv_extradata*: pointer
+
   PLDAPVLVInfo* = ptr LDAPVLVInfo
-  QUERYFORCONNECTION* = proc (PrimaryConnection: PLDAP, ReferralFromConnection: PLDAP, NewDN: PWCHAR, HostName: PCHAR, PortNumber: ULONG, SecAuthIdentity: PVOID, CurrentUserToken: PVOID, ConnectionToUse: ptr PLDAP): ULONG {.stdcall.}
-  NOTIFYOFNEWCONNECTION* = proc (PrimaryConnection: PLDAP, ReferralFromConnection: PLDAP, NewDN: PWCHAR, HostName: PCHAR, NewConnection: PLDAP, PortNumber: ULONG, SecAuthIdentity: PVOID, CurrentUser: PVOID, ErrorCodeFromBind: ULONG): BOOLEAN {.stdcall.}
-  DEREFERENCECONNECTION* = proc (PrimaryConnection: PLDAP, ConnectionToDereference: PLDAP): ULONG {.stdcall.}
+  QUERYFORCONNECTION* = proc(
+    PrimaryConnection: PLDAP,
+    ReferralFromConnection: PLDAP,
+    NewDN: PWCHAR,
+    HostName: PCHAR,
+    PortNumber: ULONG,
+    SecAuthIdentity: PVOID,
+    CurrentUserToken: PVOID,
+    ConnectionToUse: ptr PLDAP,
+  ): ULONG {.stdcall.}
+  NOTIFYOFNEWCONNECTION* = proc(
+    PrimaryConnection: PLDAP,
+    ReferralFromConnection: PLDAP,
+    NewDN: PWCHAR,
+    HostName: PCHAR,
+    NewConnection: PLDAP,
+    PortNumber: ULONG,
+    SecAuthIdentity: PVOID,
+    CurrentUser: PVOID,
+    ErrorCodeFromBind: ULONG,
+  ): BOOLEAN {.stdcall.}
+  DEREFERENCECONNECTION* =
+    proc(PrimaryConnection: PLDAP, ConnectionToDereference: PLDAP): ULONG {.stdcall.}
   LDAP_REFERRAL_CALLBACK* {.pure.} = object
     SizeOfCallbacks*: ULONG
     QueryForConnection*: ptr QUERYFORCONNECTION
     NotifyRoutine*: ptr NOTIFYOFNEWCONNECTION
     DereferenceRoutine*: ptr DEREFERENCECONNECTION
+
   PLDAP_REFERRAL_CALLBACK* = ptr LDAP_REFERRAL_CALLBACK
-  DBGPRINT* = proc (Format: PCH): ULONG {.varargs, cdecl.}
+  DBGPRINT* = proc(Format: PCH): ULONG {.varargs, cdecl.}
   LDAPSearch* {.pure.} = object
   PLDAPSearch* = ptr LDAPSearch
+
 const
   LBER_ERROR* = 0xffffffff'i32
   LBER_DEFAULT* = 0xffffffff'i32
@@ -365,9 +426,9 @@
   TLS1_ALERT_NO_RENEGOTIATATION* = 100
   SSL_SESSION_ENABLE_RECONNECTS* = 1
   SSL_SESSION_DISABLE_RECONNECTS* = 2
-  CERT_SCHANNEL_IIS_PRIVATE_KEY_PROP_ID* = CERT_FIRST_USER_PROP_ID+0
-  CERT_SCHANNEL_IIS_PASSWORD_PROP_ID* = CERT_FIRST_USER_PROP_ID+1
-  CERT_SCHANNEL_SGC_CERTIFICATE_PROP_ID* = CERT_FIRST_USER_PROP_ID+2
+  CERT_SCHANNEL_IIS_PRIVATE_KEY_PROP_ID* = CERT_FIRST_USER_PROP_ID + 0
+  CERT_SCHANNEL_IIS_PASSWORD_PROP_ID* = CERT_FIRST_USER_PROP_ID + 1
+  CERT_SCHANNEL_SGC_CERTIFICATE_PROP_ID* = CERT_FIRST_USER_PROP_ID + 2
   SP_PROT_PCT1_SERVER* = 0x00000001
   SP_PROT_PCT1_CLIENT* = 0x00000002
   SP_PROT_PCT1* = SP_PROT_PCT1_SERVER or SP_PROT_PCT1_CLIENT
@@ -388,8 +449,12 @@
   SP_PROT_UNI* = SP_PROT_UNI_SERVER or SP_PROT_UNI_CLIENT
   SP_PROT_ALL* = 0xffffffff'i32
   SP_PROT_NONE* = 0
-  SP_PROT_CLIENTS* = SP_PROT_PCT1_CLIENT or SP_PROT_SSL2_CLIENT or SP_PROT_SSL3_CLIENT or SP_PROT_UNI_CLIENT or SP_PROT_TLS1_CLIENT
-  SP_PROT_SERVERS* = SP_PROT_PCT1_SERVER or SP_PROT_SSL2_SERVER or SP_PROT_SSL3_SERVER or SP_PROT_UNI_SERVER or SP_PROT_TLS1_SERVER
+  SP_PROT_CLIENTS* =
+    SP_PROT_PCT1_CLIENT or SP_PROT_SSL2_CLIENT or SP_PROT_SSL3_CLIENT or
+    SP_PROT_UNI_CLIENT or SP_PROT_TLS1_CLIENT
+  SP_PROT_SERVERS* =
+    SP_PROT_PCT1_SERVER or SP_PROT_SSL2_SERVER or SP_PROT_SSL3_SERVER or
+    SP_PROT_UNI_SERVER or SP_PROT_TLS1_SERVER
   SCHANNEL_SECRET_TYPE_CAPI* = 0x00000001
   SCHANNEL_SECRET_PRIVKEY* = 0x00000002
   SCH_CRED_X509_CERTCHAIN* = 0x00000001
@@ -619,25 +684,38 @@
   LDAP_OPT_REF_DEREF_CONN_PER_MSG* = 0x94
   LDAP_OPT_ON* = 0x00000001
   LDAP_OPT_OFF* = 0x00000000
-type
-  BerElement* {.pure.} = object
-    opaque*: PCHAR
-const
-  NULLBER* = cast[ptr BerElement](0)
+type BerElement* {.pure.} = object
+  opaque*: PCHAR
+
+const NULLBER* = cast[ptr BerElement](0)
 type
-  SSL_EMPTY_CACHE_FN_A* = proc (pszTargetName: LPSTR, dwFlags: DWORD): WINBOOL {.stdcall.}
-  SSL_EMPTY_CACHE_FN_W* = proc (pszTargetName: LPWSTR, dwFlags: DWORD): WINBOOL {.stdcall.}
-  SSL_CRACK_CERTIFICATE_FN* = proc (pbCertificate: PUCHAR, cbCertificate: DWORD, VerifySignature: WINBOOL, ppCertificate: ptr PX509Certificate): WINBOOL {.stdcall.}
-  SSL_FREE_CERTIFICATE_FN* = proc (pCertificate: PX509Certificate): VOID {.stdcall.}
-  QUERYCLIENTCERT* = proc (Connection: PLDAP, trusted_CAs: PSecPkgContext_IssuerListInfoEx, ppCertificate: ptr PCCERT_CONTEXT): BOOLEAN {.stdcall.}
-  VERIFYSERVERCERT* = proc (Connection: PLDAP, pServerCert: PCCERT_CONTEXT): BOOLEAN {.stdcall.}
+  SSL_EMPTY_CACHE_FN_A* =
+    proc(pszTargetName: LPSTR, dwFlags: DWORD): WINBOOL {.stdcall.}
+  SSL_EMPTY_CACHE_FN_W* =
+    proc(pszTargetName: LPWSTR, dwFlags: DWORD): WINBOOL {.stdcall.}
+  SSL_CRACK_CERTIFICATE_FN* = proc(
+    pbCertificate: PUCHAR,
+    cbCertificate: DWORD,
+    VerifySignature: WINBOOL,
+    ppCertificate: ptr PX509Certificate,
+  ): WINBOOL {.stdcall.}
+  SSL_FREE_CERTIFICATE_FN* = proc(pCertificate: PX509Certificate): VOID {.stdcall.}
+  QUERYCLIENTCERT* = proc(
+    Connection: PLDAP,
+    trusted_CAs: PSecPkgContext_IssuerListInfoEx,
+    ppCertificate: ptr PCCERT_CONTEXT,
+  ): BOOLEAN {.stdcall.}
+  VERIFYSERVERCERT* =
+    proc(Connection: PLDAP, pServerCert: PCCERT_CONTEXT): BOOLEAN {.stdcall.}
   SCHANNEL_ALERT_TOKEN* {.pure.} = object
     dwTokenType*: DWORD
     dwAlertType*: DWORD
     dwAlertNumber*: DWORD
+
   SCHANNEL_SESSION_TOKEN* {.pure.} = object
     dwTokenType*: DWORD
     dwFlags*: DWORD
+
   LDAPAPIInfoA* {.pure.} = object
     ldapai_info_version*: int32
     ldapai_api_version*: int32
@@ -645,6 +723,7 @@
     ldapai_extensions*: ptr ptr char
     ldapai_vendor_name*: ptr char
     ldapai_vendor_version*: int32
+
   LDAPAPIInfoW* {.pure.} = object
     ldapai_info_version*: int32
     ldapai_api_version*: int32
@@ -652,203 +731,1101 @@
     ldapai_extensions*: ptr PWCHAR
     ldapai_vendor_name*: PWCHAR
     ldapai_vendor_version*: int32
+
   LDAPAPIFeatureInfoA* {.pure.} = object
     ldapaif_info_version*: int32
     ldapaif_name*: ptr char
     ldapaif_version*: int32
+
   LDAPAPIFeatureInfoW* {.pure.} = object
     ldapaif_info_version*: int32
     ldapaif_name*: PWCHAR
     ldapaif_version*: int32
-proc ber_init*(pBerVal: ptr BERVAL): ptr BerElement {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ber_free*(pBerElement: ptr BerElement, fbuf: INT): VOID {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ber_bvfree*(pBerVal: ptr BERVAL): VOID {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ber_bvecfree*(pBerVal: ptr PBERVAL): VOID {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ber_bvdup*(pBerVal: ptr BERVAL): ptr BERVAL {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ber_alloc_t*(options: INT): ptr BerElement {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ber_skip_tag*(pBerElement: ptr BerElement, pLen: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ber_peek_tag*(pBerElement: ptr BerElement, pLen: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ber_first_element*(pBerElement: ptr BerElement, pLen: ptr ULONG, ppOpaque: ptr ptr CHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ber_next_element*(pBerElement: ptr BerElement, pLen: ptr ULONG, opaque: ptr CHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ber_flatten*(pBerElement: ptr BerElement, pBerVal: ptr PBERVAL): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ber_printf*(pBerElement: ptr BerElement, fmt: PSTR): INT {.winapi, cdecl, varargs, dynlib: "wldap32", importc.}
-proc ber_scanf*(pBerElement: ptr BerElement, fmt: PSTR): ULONG {.winapi, cdecl, varargs, dynlib: "wldap32", importc.}
-proc SslEmptyCacheA*(pszTargetName: LPSTR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "schannel", importc.}
-proc SslEmptyCacheW*(pszTargetName: LPWSTR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "schannel", importc.}
-proc SslGenerateRandomBits*(pRandomData: PUCHAR, cRandomData: LONG): VOID {.winapi, stdcall, dynlib: "schannel", importc.}
-proc SslCrackCertificate*(pbCertificate: PUCHAR, cbCertificate: DWORD, dwFlags: DWORD, ppCertificate: ptr PX509Certificate): WINBOOL {.winapi, stdcall, dynlib: "schannel", importc.}
-proc SslFreeCertificate*(pCertificate: PX509Certificate): VOID {.winapi, stdcall, dynlib: "schannel", importc.}
-proc SslGetMaximumKeySize*(Reserved: DWORD): DWORD {.winapi, stdcall, dynlib: "schannel", importc.}
-proc ldap_openW*(HostName: PWCHAR, PortNumber: ULONG): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_openA*(HostName: PCHAR, PortNumber: ULONG): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_initW*(HostName: PWCHAR, PortNumber: ULONG): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_initA*(HostName: PCHAR, PortNumber: ULONG): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_sslinitW*(HostName: PWCHAR, PortNumber: ULONG, secure: int32): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_sslinitA*(HostName: PCHAR, PortNumber: ULONG, secure: int32): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_connect*(ld: ptr LDAP, timeout: ptr LDAP_TIMEVAL): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc cldap_openW*(HostName: PWCHAR, PortNumber: ULONG): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc cldap_openA*(HostName: PCHAR, PortNumber: ULONG): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ber_init*(
+  pBerVal: ptr BERVAL
+): ptr BerElement {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ber_free*(
+  pBerElement: ptr BerElement, fbuf: INT
+): VOID {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ber_bvfree*(
+  pBerVal: ptr BERVAL
+): VOID {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ber_bvecfree*(
+  pBerVal: ptr PBERVAL
+): VOID {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ber_bvdup*(
+  pBerVal: ptr BERVAL
+): ptr BERVAL {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ber_alloc_t*(
+  options: INT
+): ptr BerElement {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ber_skip_tag*(
+  pBerElement: ptr BerElement, pLen: ptr ULONG
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ber_peek_tag*(
+  pBerElement: ptr BerElement, pLen: ptr ULONG
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ber_first_element*(
+  pBerElement: ptr BerElement, pLen: ptr ULONG, ppOpaque: ptr ptr CHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ber_next_element*(
+  pBerElement: ptr BerElement, pLen: ptr ULONG, opaque: ptr CHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ber_flatten*(
+  pBerElement: ptr BerElement, pBerVal: ptr PBERVAL
+): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ber_printf*(
+  pBerElement: ptr BerElement, fmt: PSTR
+): INT {.winapi, cdecl, varargs, dynlib: "wldap32", importc.}
+
+proc ber_scanf*(
+  pBerElement: ptr BerElement, fmt: PSTR
+): ULONG {.winapi, cdecl, varargs, dynlib: "wldap32", importc.}
+
+proc SslEmptyCacheA*(
+  pszTargetName: LPSTR, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "schannel", importc.}
+
+proc SslEmptyCacheW*(
+  pszTargetName: LPWSTR, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "schannel", importc.}
+
+proc SslGenerateRandomBits*(
+  pRandomData: PUCHAR, cRandomData: LONG
+): VOID {.winapi, stdcall, dynlib: "schannel", importc.}
+
+proc SslCrackCertificate*(
+  pbCertificate: PUCHAR,
+  cbCertificate: DWORD,
+  dwFlags: DWORD,
+  ppCertificate: ptr PX509Certificate,
+): WINBOOL {.winapi, stdcall, dynlib: "schannel", importc.}
+
+proc SslFreeCertificate*(
+  pCertificate: PX509Certificate
+): VOID {.winapi, stdcall, dynlib: "schannel", importc.}
+
+proc SslGetMaximumKeySize*(
+  Reserved: DWORD
+): DWORD {.winapi, stdcall, dynlib: "schannel", importc.}
+
+proc ldap_openW*(
+  HostName: PWCHAR, PortNumber: ULONG
+): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_openA*(
+  HostName: PCHAR, PortNumber: ULONG
+): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_initW*(
+  HostName: PWCHAR, PortNumber: ULONG
+): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_initA*(
+  HostName: PCHAR, PortNumber: ULONG
+): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_sslinitW*(
+  HostName: PWCHAR, PortNumber: ULONG, secure: int32
+): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_sslinitA*(
+  HostName: PCHAR, PortNumber: ULONG, secure: int32
+): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_connect*(
+  ld: ptr LDAP, timeout: ptr LDAP_TIMEVAL
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc cldap_openW*(
+  HostName: PWCHAR, PortNumber: ULONG
+): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc cldap_openA*(
+  HostName: PCHAR, PortNumber: ULONG
+): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+
 proc ldap_unbind*(ld: ptr LDAP): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
 proc ldap_unbind_s*(ld: ptr LDAP): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_get_optionW*(ld: ptr LDAP, option: int32, outvalue: pointer): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_set_optionW*(ld: ptr LDAP, option: int32, invalue: pointer): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_simple_bindW*(ld: ptr LDAP, dn: PWCHAR, passwd: PWCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_simple_bindA*(ld: ptr LDAP, dn: PCHAR, passwd: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_simple_bind_sW*(ld: ptr LDAP, dn: PWCHAR, passwd: PWCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_simple_bind_sA*(ld: ptr LDAP, dn: PCHAR, passwd: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_bindW*(ld: ptr LDAP, dn: PWCHAR, cred: PWCHAR, `method`: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_bindA*(ld: ptr LDAP, dn: PCHAR, cred: PCHAR, `method`: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_bind_sW*(ld: ptr LDAP, dn: PWCHAR, cred: PWCHAR, `method`: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_bind_sA*(ld: ptr LDAP, dn: PCHAR, cred: PCHAR, `method`: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_sasl_bindA*(ExternalHandle: ptr LDAP, DistName: PCHAR, AuthMechanism: PCHAR, cred: ptr BERVAL, ServerCtrls: ptr PLDAPControlA, ClientCtrls: ptr PLDAPControlA, MessageNumber: ptr int32): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_sasl_bindW*(ExternalHandle: ptr LDAP, DistName: PWCHAR, AuthMechanism: PWCHAR, cred: ptr BERVAL, ServerCtrls: ptr PLDAPControlW, ClientCtrls: ptr PLDAPControlW, MessageNumber: ptr int32): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_sasl_bind_sA*(ExternalHandle: ptr LDAP, DistName: PCHAR, AuthMechanism: PCHAR, cred: ptr BERVAL, ServerCtrls: ptr PLDAPControlA, ClientCtrls: ptr PLDAPControlA, ServerData: ptr PBERVAL): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_sasl_bind_sW*(ExternalHandle: ptr LDAP, DistName: PWCHAR, AuthMechanism: PWCHAR, cred: ptr BERVAL, ServerCtrls: ptr PLDAPControlW, ClientCtrls: ptr PLDAPControlW, ServerData: ptr PBERVAL): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_searchW*(ld: ptr LDAP, base: PWCHAR, scope: ULONG, filter: PWCHAR, attrs: ptr PWCHAR, attrsonly: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_searchA*(ld: ptr LDAP, base: PCHAR, scope: ULONG, filter: PCHAR, attrs: ptr PCHAR, attrsonly: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_search_sW*(ld: ptr LDAP, base: PWCHAR, scope: ULONG, filter: PWCHAR, attrs: ptr PWCHAR, attrsonly: ULONG, res: ptr ptr LDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_search_sA*(ld: ptr LDAP, base: PCHAR, scope: ULONG, filter: PCHAR, attrs: ptr PCHAR, attrsonly: ULONG, res: ptr ptr LDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_search_stW*(ld: ptr LDAP, base: PWCHAR, scope: ULONG, filter: PWCHAR, attrs: ptr PWCHAR, attrsonly: ULONG, timeout: ptr LDAP_TIMEVAL, res: ptr ptr LDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_search_stA*(ld: ptr LDAP, base: PCHAR, scope: ULONG, filter: PCHAR, attrs: ptr PCHAR, attrsonly: ULONG, timeout: ptr LDAP_TIMEVAL, res: ptr ptr LDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_search_extW*(ld: ptr LDAP, base: PWCHAR, scope: ULONG, filter: PWCHAR, attrs: ptr PWCHAR, attrsonly: ULONG, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, TimeLimit: ULONG, SizeLimit: ULONG, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_search_extA*(ld: ptr LDAP, base: PCHAR, scope: ULONG, filter: PCHAR, attrs: ptr PCHAR, attrsonly: ULONG, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, TimeLimit: ULONG, SizeLimit: ULONG, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_search_ext_sW*(ld: ptr LDAP, base: PWCHAR, scope: ULONG, filter: PWCHAR, attrs: ptr PWCHAR, attrsonly: ULONG, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, timeout: ptr LDAP_TIMEVAL, SizeLimit: ULONG, res: ptr ptr LDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_search_ext_sA*(ld: ptr LDAP, base: PCHAR, scope: ULONG, filter: PCHAR, attrs: ptr PCHAR, attrsonly: ULONG, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, timeout: ptr LDAP_TIMEVAL, SizeLimit: ULONG, res: ptr ptr LDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_check_filterW*(ld: ptr LDAP, SearchFilter: PWCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_check_filterA*(ld: ptr LDAP, SearchFilter: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modifyW*(ld: ptr LDAP, dn: PWCHAR, mods: ptr ptr LDAPModW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modifyA*(ld: ptr LDAP, dn: PCHAR, mods: ptr ptr LDAPModA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modify_sW*(ld: ptr LDAP, dn: PWCHAR, mods: ptr ptr LDAPModW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modify_sA*(ld: ptr LDAP, dn: PCHAR, mods: ptr ptr LDAPModA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modify_extW*(ld: ptr LDAP, dn: PWCHAR, mods: ptr ptr LDAPModW, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modify_extA*(ld: ptr LDAP, dn: PCHAR, mods: ptr ptr LDAPModA, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modify_ext_sW*(ld: ptr LDAP, dn: PWCHAR, mods: ptr ptr LDAPModW, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modify_ext_sA*(ld: ptr LDAP, dn: PCHAR, mods: ptr ptr LDAPModA, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modrdn2W*(ExternalHandle: ptr LDAP, DistinguishedName: PWCHAR, NewDistinguishedName: PWCHAR, DeleteOldRdn: INT): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modrdn2A*(ExternalHandle: ptr LDAP, DistinguishedName: PCHAR, NewDistinguishedName: PCHAR, DeleteOldRdn: INT): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modrdnW*(ExternalHandle: ptr LDAP, DistinguishedName: PWCHAR, NewDistinguishedName: PWCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modrdnA*(ExternalHandle: ptr LDAP, DistinguishedName: PCHAR, NewDistinguishedName: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modrdn2_sW*(ExternalHandle: ptr LDAP, DistinguishedName: PWCHAR, NewDistinguishedName: PWCHAR, DeleteOldRdn: INT): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modrdn2_sA*(ExternalHandle: ptr LDAP, DistinguishedName: PCHAR, NewDistinguishedName: PCHAR, DeleteOldRdn: INT): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modrdn_sW*(ExternalHandle: ptr LDAP, DistinguishedName: PWCHAR, NewDistinguishedName: PWCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_modrdn_sA*(ExternalHandle: ptr LDAP, DistinguishedName: PCHAR, NewDistinguishedName: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_rename_extW*(ld: ptr LDAP, dn: PWCHAR, NewRDN: PWCHAR, NewParent: PWCHAR, DeleteOldRdn: INT, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_rename_extA*(ld: ptr LDAP, dn: PCHAR, NewRDN: PCHAR, NewParent: PCHAR, DeleteOldRdn: INT, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_rename_ext_sW*(ld: ptr LDAP, dn: PWCHAR, NewRDN: PWCHAR, NewParent: PWCHAR, DeleteOldRdn: INT, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_rename_ext_sA*(ld: ptr LDAP, dn: PCHAR, NewRDN: PCHAR, NewParent: PCHAR, DeleteOldRdn: INT, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_addW*(ld: ptr LDAP, dn: PWCHAR, attrs: ptr ptr LDAPModW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_addA*(ld: ptr LDAP, dn: PCHAR, attrs: ptr ptr LDAPModA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_add_sW*(ld: ptr LDAP, dn: PWCHAR, attrs: ptr ptr LDAPModW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_add_sA*(ld: ptr LDAP, dn: PCHAR, attrs: ptr ptr LDAPModA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_add_extW*(ld: ptr LDAP, dn: PWCHAR, attrs: ptr ptr LDAPModW, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_add_extA*(ld: ptr LDAP, dn: PCHAR, attrs: ptr ptr LDAPModA, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_add_ext_sW*(ld: ptr LDAP, dn: PWCHAR, attrs: ptr ptr LDAPModW, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_add_ext_sA*(ld: ptr LDAP, dn: PCHAR, attrs: ptr ptr LDAPModA, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_compareW*(ld: ptr LDAP, dn: PWCHAR, attr: PWCHAR, value: PWCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_compareA*(ld: ptr LDAP, dn: PCHAR, attr: PCHAR, value: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_compare_sW*(ld: ptr LDAP, dn: PWCHAR, attr: PWCHAR, value: PWCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_compare_sA*(ld: ptr LDAP, dn: PCHAR, attr: PCHAR, value: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_compare_extW*(ld: ptr LDAP, dn: PWCHAR, Attr: PWCHAR, Value: PWCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_compare_extA*(ld: ptr LDAP, dn: PCHAR, Attr: PCHAR, Value: PCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_compare_ext_sW*(ld: ptr LDAP, dn: PWCHAR, Attr: PWCHAR, Value: PWCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_compare_ext_sA*(ld: ptr LDAP, dn: PCHAR, Attr: PCHAR, Value: PCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_deleteW*(ld: ptr LDAP, dn: PWCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_deleteA*(ld: ptr LDAP, dn: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_delete_sW*(ld: ptr LDAP, dn: PWCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_delete_sA*(ld: ptr LDAP, dn: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_delete_extW*(ld: ptr LDAP, dn: PWCHAR, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_delete_extA*(ld: ptr LDAP, dn: PCHAR, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_delete_ext_sW*(ld: ptr LDAP, dn: PWCHAR, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_delete_ext_sA*(ld: ptr LDAP, dn: PCHAR, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_abandon*(ld: ptr LDAP, msgid: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_result*(ld: ptr LDAP, msgid: ULONG, all: ULONG, timeout: ptr LDAP_TIMEVAL, res: ptr ptr LDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_msgfree*(res: ptr LDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_result2error*(ld: ptr LDAP, res: ptr LDAPMessage, freeit: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_parse_resultW*(Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, ReturnCode: ptr ULONG, MatchedDNs: ptr PWCHAR, ErrorMessage: ptr PWCHAR, Referrals: ptr ptr PWCHAR, ServerControls: ptr ptr PLDAPControlW, Freeit: BOOLEAN): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_parse_resultA*(Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, ReturnCode: ptr ULONG, MatchedDNs: ptr PCHAR, ErrorMessage: ptr PCHAR, Referrals: ptr ptr PCHAR, ServerControls: ptr ptr PLDAPControlA, Freeit: BOOLEAN): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_parse_extended_resultA*(Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, ResultOID: ptr PCHAR, ResultData: ptr ptr BERVAL, Freeit: BOOLEAN): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_parse_extended_resultW*(Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, ResultOID: ptr PWCHAR, ResultData: ptr ptr BERVAL, Freeit: BOOLEAN): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_controls_freeA*(Controls: ptr ptr LDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_control_freeA*(Controls: ptr LDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_controls_freeW*(Control: ptr ptr LDAPControlW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_control_freeW*(Control: ptr LDAPControlW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_free_controlsW*(Controls: ptr ptr LDAPControlW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_free_controlsA*(Controls: ptr ptr LDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+proc ldap_get_optionW*(
+  ld: ptr LDAP, option: int32, outvalue: pointer
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_set_optionW*(
+  ld: ptr LDAP, option: int32, invalue: pointer
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_simple_bindW*(
+  ld: ptr LDAP, dn: PWCHAR, passwd: PWCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_simple_bindA*(
+  ld: ptr LDAP, dn: PCHAR, passwd: PCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_simple_bind_sW*(
+  ld: ptr LDAP, dn: PWCHAR, passwd: PWCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_simple_bind_sA*(
+  ld: ptr LDAP, dn: PCHAR, passwd: PCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_bindW*(
+  ld: ptr LDAP, dn: PWCHAR, cred: PWCHAR, `method`: ULONG
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_bindA*(
+  ld: ptr LDAP, dn: PCHAR, cred: PCHAR, `method`: ULONG
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_bind_sW*(
+  ld: ptr LDAP, dn: PWCHAR, cred: PWCHAR, `method`: ULONG
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_bind_sA*(
+  ld: ptr LDAP, dn: PCHAR, cred: PCHAR, `method`: ULONG
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_sasl_bindA*(
+  ExternalHandle: ptr LDAP,
+  DistName: PCHAR,
+  AuthMechanism: PCHAR,
+  cred: ptr BERVAL,
+  ServerCtrls: ptr PLDAPControlA,
+  ClientCtrls: ptr PLDAPControlA,
+  MessageNumber: ptr int32,
+): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_sasl_bindW*(
+  ExternalHandle: ptr LDAP,
+  DistName: PWCHAR,
+  AuthMechanism: PWCHAR,
+  cred: ptr BERVAL,
+  ServerCtrls: ptr PLDAPControlW,
+  ClientCtrls: ptr PLDAPControlW,
+  MessageNumber: ptr int32,
+): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_sasl_bind_sA*(
+  ExternalHandle: ptr LDAP,
+  DistName: PCHAR,
+  AuthMechanism: PCHAR,
+  cred: ptr BERVAL,
+  ServerCtrls: ptr PLDAPControlA,
+  ClientCtrls: ptr PLDAPControlA,
+  ServerData: ptr PBERVAL,
+): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_sasl_bind_sW*(
+  ExternalHandle: ptr LDAP,
+  DistName: PWCHAR,
+  AuthMechanism: PWCHAR,
+  cred: ptr BERVAL,
+  ServerCtrls: ptr PLDAPControlW,
+  ClientCtrls: ptr PLDAPControlW,
+  ServerData: ptr PBERVAL,
+): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_searchW*(
+  ld: ptr LDAP,
+  base: PWCHAR,
+  scope: ULONG,
+  filter: PWCHAR,
+  attrs: ptr PWCHAR,
+  attrsonly: ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_searchA*(
+  ld: ptr LDAP,
+  base: PCHAR,
+  scope: ULONG,
+  filter: PCHAR,
+  attrs: ptr PCHAR,
+  attrsonly: ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_search_sW*(
+  ld: ptr LDAP,
+  base: PWCHAR,
+  scope: ULONG,
+  filter: PWCHAR,
+  attrs: ptr PWCHAR,
+  attrsonly: ULONG,
+  res: ptr ptr LDAPMessage,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_search_sA*(
+  ld: ptr LDAP,
+  base: PCHAR,
+  scope: ULONG,
+  filter: PCHAR,
+  attrs: ptr PCHAR,
+  attrsonly: ULONG,
+  res: ptr ptr LDAPMessage,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_search_stW*(
+  ld: ptr LDAP,
+  base: PWCHAR,
+  scope: ULONG,
+  filter: PWCHAR,
+  attrs: ptr PWCHAR,
+  attrsonly: ULONG,
+  timeout: ptr LDAP_TIMEVAL,
+  res: ptr ptr LDAPMessage,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_search_stA*(
+  ld: ptr LDAP,
+  base: PCHAR,
+  scope: ULONG,
+  filter: PCHAR,
+  attrs: ptr PCHAR,
+  attrsonly: ULONG,
+  timeout: ptr LDAP_TIMEVAL,
+  res: ptr ptr LDAPMessage,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_search_extW*(
+  ld: ptr LDAP,
+  base: PWCHAR,
+  scope: ULONG,
+  filter: PWCHAR,
+  attrs: ptr PWCHAR,
+  attrsonly: ULONG,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+  TimeLimit: ULONG,
+  SizeLimit: ULONG,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_search_extA*(
+  ld: ptr LDAP,
+  base: PCHAR,
+  scope: ULONG,
+  filter: PCHAR,
+  attrs: ptr PCHAR,
+  attrsonly: ULONG,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+  TimeLimit: ULONG,
+  SizeLimit: ULONG,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_search_ext_sW*(
+  ld: ptr LDAP,
+  base: PWCHAR,
+  scope: ULONG,
+  filter: PWCHAR,
+  attrs: ptr PWCHAR,
+  attrsonly: ULONG,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+  timeout: ptr LDAP_TIMEVAL,
+  SizeLimit: ULONG,
+  res: ptr ptr LDAPMessage,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_search_ext_sA*(
+  ld: ptr LDAP,
+  base: PCHAR,
+  scope: ULONG,
+  filter: PCHAR,
+  attrs: ptr PCHAR,
+  attrsonly: ULONG,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+  timeout: ptr LDAP_TIMEVAL,
+  SizeLimit: ULONG,
+  res: ptr ptr LDAPMessage,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_check_filterW*(
+  ld: ptr LDAP, SearchFilter: PWCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_check_filterA*(
+  ld: ptr LDAP, SearchFilter: PCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modifyW*(
+  ld: ptr LDAP, dn: PWCHAR, mods: ptr ptr LDAPModW
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modifyA*(
+  ld: ptr LDAP, dn: PCHAR, mods: ptr ptr LDAPModA
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modify_sW*(
+  ld: ptr LDAP, dn: PWCHAR, mods: ptr ptr LDAPModW
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modify_sA*(
+  ld: ptr LDAP, dn: PCHAR, mods: ptr ptr LDAPModA
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modify_extW*(
+  ld: ptr LDAP,
+  dn: PWCHAR,
+  mods: ptr ptr LDAPModW,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modify_extA*(
+  ld: ptr LDAP,
+  dn: PCHAR,
+  mods: ptr ptr LDAPModA,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modify_ext_sW*(
+  ld: ptr LDAP,
+  dn: PWCHAR,
+  mods: ptr ptr LDAPModW,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modify_ext_sA*(
+  ld: ptr LDAP,
+  dn: PCHAR,
+  mods: ptr ptr LDAPModA,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modrdn2W*(
+  ExternalHandle: ptr LDAP,
+  DistinguishedName: PWCHAR,
+  NewDistinguishedName: PWCHAR,
+  DeleteOldRdn: INT,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modrdn2A*(
+  ExternalHandle: ptr LDAP,
+  DistinguishedName: PCHAR,
+  NewDistinguishedName: PCHAR,
+  DeleteOldRdn: INT,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modrdnW*(
+  ExternalHandle: ptr LDAP, DistinguishedName: PWCHAR, NewDistinguishedName: PWCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modrdnA*(
+  ExternalHandle: ptr LDAP, DistinguishedName: PCHAR, NewDistinguishedName: PCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modrdn2_sW*(
+  ExternalHandle: ptr LDAP,
+  DistinguishedName: PWCHAR,
+  NewDistinguishedName: PWCHAR,
+  DeleteOldRdn: INT,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modrdn2_sA*(
+  ExternalHandle: ptr LDAP,
+  DistinguishedName: PCHAR,
+  NewDistinguishedName: PCHAR,
+  DeleteOldRdn: INT,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modrdn_sW*(
+  ExternalHandle: ptr LDAP, DistinguishedName: PWCHAR, NewDistinguishedName: PWCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_modrdn_sA*(
+  ExternalHandle: ptr LDAP, DistinguishedName: PCHAR, NewDistinguishedName: PCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_rename_extW*(
+  ld: ptr LDAP,
+  dn: PWCHAR,
+  NewRDN: PWCHAR,
+  NewParent: PWCHAR,
+  DeleteOldRdn: INT,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_rename_extA*(
+  ld: ptr LDAP,
+  dn: PCHAR,
+  NewRDN: PCHAR,
+  NewParent: PCHAR,
+  DeleteOldRdn: INT,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_rename_ext_sW*(
+  ld: ptr LDAP,
+  dn: PWCHAR,
+  NewRDN: PWCHAR,
+  NewParent: PWCHAR,
+  DeleteOldRdn: INT,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_rename_ext_sA*(
+  ld: ptr LDAP,
+  dn: PCHAR,
+  NewRDN: PCHAR,
+  NewParent: PCHAR,
+  DeleteOldRdn: INT,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_addW*(
+  ld: ptr LDAP, dn: PWCHAR, attrs: ptr ptr LDAPModW
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_addA*(
+  ld: ptr LDAP, dn: PCHAR, attrs: ptr ptr LDAPModA
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_add_sW*(
+  ld: ptr LDAP, dn: PWCHAR, attrs: ptr ptr LDAPModW
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_add_sA*(
+  ld: ptr LDAP, dn: PCHAR, attrs: ptr ptr LDAPModA
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_add_extW*(
+  ld: ptr LDAP,
+  dn: PWCHAR,
+  attrs: ptr ptr LDAPModW,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_add_extA*(
+  ld: ptr LDAP,
+  dn: PCHAR,
+  attrs: ptr ptr LDAPModA,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_add_ext_sW*(
+  ld: ptr LDAP,
+  dn: PWCHAR,
+  attrs: ptr ptr LDAPModW,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_add_ext_sA*(
+  ld: ptr LDAP,
+  dn: PCHAR,
+  attrs: ptr ptr LDAPModA,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_compareW*(
+  ld: ptr LDAP, dn: PWCHAR, attr: PWCHAR, value: PWCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_compareA*(
+  ld: ptr LDAP, dn: PCHAR, attr: PCHAR, value: PCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_compare_sW*(
+  ld: ptr LDAP, dn: PWCHAR, attr: PWCHAR, value: PWCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_compare_sA*(
+  ld: ptr LDAP, dn: PCHAR, attr: PCHAR, value: PCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_compare_extW*(
+  ld: ptr LDAP,
+  dn: PWCHAR,
+  Attr: PWCHAR,
+  Value: PWCHAR,
+  Data: ptr BERVAL,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_compare_extA*(
+  ld: ptr LDAP,
+  dn: PCHAR,
+  Attr: PCHAR,
+  Value: PCHAR,
+  Data: ptr BERVAL,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_compare_ext_sW*(
+  ld: ptr LDAP,
+  dn: PWCHAR,
+  Attr: PWCHAR,
+  Value: PWCHAR,
+  Data: ptr BERVAL,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_compare_ext_sA*(
+  ld: ptr LDAP,
+  dn: PCHAR,
+  Attr: PCHAR,
+  Value: PCHAR,
+  Data: ptr BERVAL,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_deleteW*(
+  ld: ptr LDAP, dn: PWCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_deleteA*(
+  ld: ptr LDAP, dn: PCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_delete_sW*(
+  ld: ptr LDAP, dn: PWCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_delete_sA*(
+  ld: ptr LDAP, dn: PCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_delete_extW*(
+  ld: ptr LDAP,
+  dn: PWCHAR,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_delete_extA*(
+  ld: ptr LDAP,
+  dn: PCHAR,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_delete_ext_sW*(
+  ld: ptr LDAP,
+  dn: PWCHAR,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_delete_ext_sA*(
+  ld: ptr LDAP,
+  dn: PCHAR,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_abandon*(
+  ld: ptr LDAP, msgid: ULONG
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_result*(
+  ld: ptr LDAP,
+  msgid: ULONG,
+  all: ULONG,
+  timeout: ptr LDAP_TIMEVAL,
+  res: ptr ptr LDAPMessage,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_msgfree*(
+  res: ptr LDAPMessage
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_result2error*(
+  ld: ptr LDAP, res: ptr LDAPMessage, freeit: ULONG
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_parse_resultW*(
+  Connection: ptr LDAP,
+  ResultMessage: ptr LDAPMessage,
+  ReturnCode: ptr ULONG,
+  MatchedDNs: ptr PWCHAR,
+  ErrorMessage: ptr PWCHAR,
+  Referrals: ptr ptr PWCHAR,
+  ServerControls: ptr ptr PLDAPControlW,
+  Freeit: BOOLEAN,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_parse_resultA*(
+  Connection: ptr LDAP,
+  ResultMessage: ptr LDAPMessage,
+  ReturnCode: ptr ULONG,
+  MatchedDNs: ptr PCHAR,
+  ErrorMessage: ptr PCHAR,
+  Referrals: ptr ptr PCHAR,
+  ServerControls: ptr ptr PLDAPControlA,
+  Freeit: BOOLEAN,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_parse_extended_resultA*(
+  Connection: ptr LDAP,
+  ResultMessage: ptr LDAPMessage,
+  ResultOID: ptr PCHAR,
+  ResultData: ptr ptr BERVAL,
+  Freeit: BOOLEAN,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_parse_extended_resultW*(
+  Connection: ptr LDAP,
+  ResultMessage: ptr LDAPMessage,
+  ResultOID: ptr PWCHAR,
+  ResultData: ptr ptr BERVAL,
+  Freeit: BOOLEAN,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_controls_freeA*(
+  Controls: ptr ptr LDAPControlA
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_control_freeA*(
+  Controls: ptr LDAPControlA
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_controls_freeW*(
+  Control: ptr ptr LDAPControlW
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_control_freeW*(
+  Control: ptr LDAPControlW
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_free_controlsW*(
+  Controls: ptr ptr LDAPControlW
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_free_controlsA*(
+  Controls: ptr ptr LDAPControlA
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
 proc ldap_err2stringW*(err: ULONG): PWCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
 proc ldap_err2stringA*(err: ULONG): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_perror*(ld: ptr LDAP, msg: PCHAR): void {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_first_entry*(ld: ptr LDAP, res: ptr LDAPMessage): ptr LDAPMessage {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_next_entry*(ld: ptr LDAP, entry: ptr LDAPMessage): ptr LDAPMessage {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_count_entries*(ld: ptr LDAP, res: ptr LDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_first_attributeW*(ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr ptr BerElement): PWCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_first_attributeA*(ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr ptr BerElement): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_next_attributeW*(ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr BerElement): PWCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_next_attributeA*(ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr BerElement): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_get_valuesW*(ld: ptr LDAP, entry: ptr LDAPMessage, attr: PWCHAR): ptr PWCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_get_valuesA*(ld: ptr LDAP, entry: ptr LDAPMessage, attr: PCHAR): ptr PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_get_values_lenW*(ExternalHandle: ptr LDAP, Message: ptr LDAPMessage, attr: PWCHAR): ptr ptr BERVAL {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_get_values_lenA*(ExternalHandle: ptr LDAP, Message: ptr LDAPMessage, attr: PCHAR): ptr ptr BERVAL {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_count_valuesW*(vals: ptr PWCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_count_valuesA*(vals: ptr PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_count_values_len*(vals: ptr ptr BERVAL): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_value_freeW*(vals: ptr PWCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_value_freeA*(vals: ptr PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_value_free_len*(vals: ptr ptr BERVAL): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_get_dnW*(ld: ptr LDAP, entry: ptr LDAPMessage): PWCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_get_dnA*(ld: ptr LDAP, entry: ptr LDAPMessage): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_explode_dnW*(dn: PWCHAR, notypes: ULONG): ptr PWCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_explode_dnA*(dn: PCHAR, notypes: ULONG): ptr PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+proc ldap_perror*(
+  ld: ptr LDAP, msg: PCHAR
+): void {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_first_entry*(
+  ld: ptr LDAP, res: ptr LDAPMessage
+): ptr LDAPMessage {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_next_entry*(
+  ld: ptr LDAP, entry: ptr LDAPMessage
+): ptr LDAPMessage {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_count_entries*(
+  ld: ptr LDAP, res: ptr LDAPMessage
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_first_attributeW*(
+  ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr ptr BerElement
+): PWCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_first_attributeA*(
+  ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr ptr BerElement
+): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_next_attributeW*(
+  ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr BerElement
+): PWCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_next_attributeA*(
+  ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr BerElement
+): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_get_valuesW*(
+  ld: ptr LDAP, entry: ptr LDAPMessage, attr: PWCHAR
+): ptr PWCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_get_valuesA*(
+  ld: ptr LDAP, entry: ptr LDAPMessage, attr: PCHAR
+): ptr PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_get_values_lenW*(
+  ExternalHandle: ptr LDAP, Message: ptr LDAPMessage, attr: PWCHAR
+): ptr ptr BERVAL {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_get_values_lenA*(
+  ExternalHandle: ptr LDAP, Message: ptr LDAPMessage, attr: PCHAR
+): ptr ptr BERVAL {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_count_valuesW*(
+  vals: ptr PWCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_count_valuesA*(
+  vals: ptr PCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_count_values_len*(
+  vals: ptr ptr BERVAL
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_value_freeW*(
+  vals: ptr PWCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_value_freeA*(
+  vals: ptr PCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_value_free_len*(
+  vals: ptr ptr BERVAL
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_get_dnW*(
+  ld: ptr LDAP, entry: ptr LDAPMessage
+): PWCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_get_dnA*(
+  ld: ptr LDAP, entry: ptr LDAPMessage
+): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_explode_dnW*(
+  dn: PWCHAR, notypes: ULONG
+): ptr PWCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_explode_dnA*(
+  dn: PCHAR, notypes: ULONG
+): ptr PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
 proc ldap_dn2ufnW*(dn: PWCHAR): PWCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
 proc ldap_dn2ufnA*(dn: PCHAR): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
 proc ldap_memfreeW*(Block: PWCHAR): VOID {.winapi, cdecl, dynlib: "wldap32", importc.}
 proc ldap_memfreeA*(Block: PCHAR): VOID {.winapi, cdecl, dynlib: "wldap32", importc.}
 proc ber_bvfree*(bv: ptr BERVAL): VOID {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_ufn2dnW*(ufn: PWCHAR, pDn: ptr PWCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_ufn2dnA*(ufn: PCHAR, pDn: ptr PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_startup*(version: PLDAP_VERSION_INFO, Instance: ptr HANDLE): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_cleanup*(hInstance: HANDLE): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_escape_filter_elementW*(sourceFilterElement: PCHAR, sourceLength: ULONG, destFilterElement: PWCHAR, destLength: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_escape_filter_elementA*(sourceFilterElement: PCHAR, sourceLength: ULONG, destFilterElement: PCHAR, destLength: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_set_dbg_flags*(NewFlags: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_set_dbg_routine*(DebugPrintRoutine: DBGPRINT): VOID {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc LdapUTF8ToUnicode*(lpSrcStr: LPCSTR, cchSrc: int32, lpDestStr: LPWSTR, cchDest: int32): int32 {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc LdapUnicodeToUTF8*(lpSrcStr: LPCWSTR, cchSrc: int32, lpDestStr: LPSTR, cchDest: int32): int32 {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_create_sort_controlA*(ExternalHandle: PLDAP, SortKeys: ptr PLDAPSortKeyA, IsCritical: UCHAR, Control: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_create_sort_controlW*(ExternalHandle: PLDAP, SortKeys: ptr PLDAPSortKeyW, IsCritical: UCHAR, Control: ptr PLDAPControlW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_parse_sort_controlA*(ExternalHandle: PLDAP, Control: ptr PLDAPControlA, Result: ptr ULONG, Attribute: ptr PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_parse_sort_controlW*(ExternalHandle: PLDAP, Control: ptr PLDAPControlW, Result: ptr ULONG, Attribute: ptr PWCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_encode_sort_controlW*(ExternalHandle: PLDAP, SortKeys: ptr PLDAPSortKeyW, Control: PLDAPControlW, Criticality: BOOLEAN): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_encode_sort_controlA*(ExternalHandle: PLDAP, SortKeys: ptr PLDAPSortKeyA, Control: PLDAPControlA, Criticality: BOOLEAN): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_create_page_controlW*(ExternalHandle: PLDAP, PageSize: ULONG, Cookie: ptr BERVAL, IsCritical: UCHAR, Control: ptr PLDAPControlW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_create_page_controlA*(ExternalHandle: PLDAP, PageSize: ULONG, Cookie: ptr BERVAL, IsCritical: UCHAR, Control: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_parse_page_controlW*(ExternalHandle: PLDAP, ServerControls: ptr PLDAPControlW, TotalCount: ptr ULONG, Cookie: ptr ptr BERVAL): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_parse_page_controlA*(ExternalHandle: PLDAP, ServerControls: ptr PLDAPControlA, TotalCount: ptr ULONG, Cookie: ptr ptr BERVAL): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_search_init_pageW*(ExternalHandle: PLDAP, DistinguishedName: PWCHAR, ScopeOfSearch: ULONG, SearchFilter: PWCHAR, AttributeList: ptr PWCHAR, AttributesOnly: ULONG, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, PageTimeLimit: ULONG, TotalSizeLimit: ULONG, SortKeys: ptr PLDAPSortKeyW): PLDAPSearch {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_search_init_pageA*(ExternalHandle: PLDAP, DistinguishedName: PCHAR, ScopeOfSearch: ULONG, SearchFilter: PCHAR, AttributeList: ptr PCHAR, AttributesOnly: ULONG, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, PageTimeLimit: ULONG, TotalSizeLimit: ULONG, SortKeys: ptr PLDAPSortKeyA): PLDAPSearch {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_get_next_page*(ExternalHandle: PLDAP, SearchHandle: PLDAPSearch, PageSize: ULONG, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_get_next_page_s*(ExternalHandle: PLDAP, SearchHandle: PLDAPSearch, timeout: ptr LDAP_TIMEVAL, PageSize: ULONG, TotalCount: ptr ULONG, Results: ptr ptr LDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_get_paged_count*(ExternalHandle: PLDAP, SearchBlock: PLDAPSearch, TotalCount: ptr ULONG, Results: PLDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_search_abandon_page*(ExternalHandle: PLDAP, SearchBlock: PLDAPSearch): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_create_vlv_controlW*(ExternalHandle: PLDAP, VlvInfo: PLDAPVLVInfo, IsCritical: UCHAR, Control: ptr PLDAPControlW): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_create_vlv_controlA*(ExternalHandle: PLDAP, VlvInfo: PLDAPVLVInfo, IsCritical: UCHAR, Control: ptr PLDAPControlA): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_parse_vlv_controlW*(ExternalHandle: PLDAP, Control: ptr PLDAPControlW, TargetPos: PULONG, ListCount: PULONG, Context: ptr PBERVAL, ErrCode: PINT): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_parse_vlv_controlA*(ExternalHandle: PLDAP, Control: ptr PLDAPControlA, TargetPos: PULONG, ListCount: PULONG, Context: ptr PBERVAL, ErrCode: PINT): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_start_tls_sW*(ExternalHandle: PLDAP, ServerReturnValue: PULONG, result: ptr ptr LDAPMessage, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_start_tls_sA*(ExternalHandle: PLDAP, ServerReturnValue: PULONG, result: ptr ptr LDAPMessage, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_stop_tls_s*(ExternalHandle: PLDAP): BOOLEAN {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_first_reference*(ld: ptr LDAP, res: ptr LDAPMessage): ptr LDAPMessage {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_next_reference*(ld: ptr LDAP, entry: ptr LDAPMessage): ptr LDAPMessage {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_count_references*(ld: ptr LDAP, res: ptr LDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_parse_referenceW*(Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, Referrals: ptr ptr PWCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_parse_referenceA*(Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, Referrals: ptr ptr PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_extended_operationW*(ld: ptr LDAP, Oid: PWCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_extended_operationA*(ld: ptr LDAP, Oid: PCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_extended_operation_sA*(ExternalHandle: ptr LDAP, Oid: PCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, ReturnedOid: ptr PCHAR, ReturnedData: ptr ptr BERVAL): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_extended_operation_sW*(ExternalHandle: ptr LDAP, Oid: PWCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, ReturnedOid: ptr PWCHAR, ReturnedData: ptr ptr BERVAL): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_close_extended_op*(ld: ptr LDAP, MessageNumber: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+proc ldap_ufn2dnW*(
+  ufn: PWCHAR, pDn: ptr PWCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_ufn2dnA*(
+  ufn: PCHAR, pDn: ptr PCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_startup*(
+  version: PLDAP_VERSION_INFO, Instance: ptr HANDLE
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_cleanup*(
+  hInstance: HANDLE
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_escape_filter_elementW*(
+  sourceFilterElement: PCHAR,
+  sourceLength: ULONG,
+  destFilterElement: PWCHAR,
+  destLength: ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_escape_filter_elementA*(
+  sourceFilterElement: PCHAR,
+  sourceLength: ULONG,
+  destFilterElement: PCHAR,
+  destLength: ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_set_dbg_flags*(
+  NewFlags: ULONG
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_set_dbg_routine*(
+  DebugPrintRoutine: DBGPRINT
+): VOID {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc LdapUTF8ToUnicode*(
+  lpSrcStr: LPCSTR, cchSrc: int32, lpDestStr: LPWSTR, cchDest: int32
+): int32 {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc LdapUnicodeToUTF8*(
+  lpSrcStr: LPCWSTR, cchSrc: int32, lpDestStr: LPSTR, cchDest: int32
+): int32 {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_create_sort_controlA*(
+  ExternalHandle: PLDAP,
+  SortKeys: ptr PLDAPSortKeyA,
+  IsCritical: UCHAR,
+  Control: ptr PLDAPControlA,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_create_sort_controlW*(
+  ExternalHandle: PLDAP,
+  SortKeys: ptr PLDAPSortKeyW,
+  IsCritical: UCHAR,
+  Control: ptr PLDAPControlW,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_parse_sort_controlA*(
+  ExternalHandle: PLDAP,
+  Control: ptr PLDAPControlA,
+  Result: ptr ULONG,
+  Attribute: ptr PCHAR,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_parse_sort_controlW*(
+  ExternalHandle: PLDAP,
+  Control: ptr PLDAPControlW,
+  Result: ptr ULONG,
+  Attribute: ptr PWCHAR,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_encode_sort_controlW*(
+  ExternalHandle: PLDAP,
+  SortKeys: ptr PLDAPSortKeyW,
+  Control: PLDAPControlW,
+  Criticality: BOOLEAN,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_encode_sort_controlA*(
+  ExternalHandle: PLDAP,
+  SortKeys: ptr PLDAPSortKeyA,
+  Control: PLDAPControlA,
+  Criticality: BOOLEAN,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_create_page_controlW*(
+  ExternalHandle: PLDAP,
+  PageSize: ULONG,
+  Cookie: ptr BERVAL,
+  IsCritical: UCHAR,
+  Control: ptr PLDAPControlW,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_create_page_controlA*(
+  ExternalHandle: PLDAP,
+  PageSize: ULONG,
+  Cookie: ptr BERVAL,
+  IsCritical: UCHAR,
+  Control: ptr PLDAPControlA,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_parse_page_controlW*(
+  ExternalHandle: PLDAP,
+  ServerControls: ptr PLDAPControlW,
+  TotalCount: ptr ULONG,
+  Cookie: ptr ptr BERVAL,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_parse_page_controlA*(
+  ExternalHandle: PLDAP,
+  ServerControls: ptr PLDAPControlA,
+  TotalCount: ptr ULONG,
+  Cookie: ptr ptr BERVAL,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_search_init_pageW*(
+  ExternalHandle: PLDAP,
+  DistinguishedName: PWCHAR,
+  ScopeOfSearch: ULONG,
+  SearchFilter: PWCHAR,
+  AttributeList: ptr PWCHAR,
+  AttributesOnly: ULONG,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+  PageTimeLimit: ULONG,
+  TotalSizeLimit: ULONG,
+  SortKeys: ptr PLDAPSortKeyW,
+): PLDAPSearch {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_search_init_pageA*(
+  ExternalHandle: PLDAP,
+  DistinguishedName: PCHAR,
+  ScopeOfSearch: ULONG,
+  SearchFilter: PCHAR,
+  AttributeList: ptr PCHAR,
+  AttributesOnly: ULONG,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+  PageTimeLimit: ULONG,
+  TotalSizeLimit: ULONG,
+  SortKeys: ptr PLDAPSortKeyA,
+): PLDAPSearch {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_get_next_page*(
+  ExternalHandle: PLDAP,
+  SearchHandle: PLDAPSearch,
+  PageSize: ULONG,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_get_next_page_s*(
+  ExternalHandle: PLDAP,
+  SearchHandle: PLDAPSearch,
+  timeout: ptr LDAP_TIMEVAL,
+  PageSize: ULONG,
+  TotalCount: ptr ULONG,
+  Results: ptr ptr LDAPMessage,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_get_paged_count*(
+  ExternalHandle: PLDAP,
+  SearchBlock: PLDAPSearch,
+  TotalCount: ptr ULONG,
+  Results: PLDAPMessage,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_search_abandon_page*(
+  ExternalHandle: PLDAP, SearchBlock: PLDAPSearch
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_create_vlv_controlW*(
+  ExternalHandle: PLDAP,
+  VlvInfo: PLDAPVLVInfo,
+  IsCritical: UCHAR,
+  Control: ptr PLDAPControlW,
+): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_create_vlv_controlA*(
+  ExternalHandle: PLDAP,
+  VlvInfo: PLDAPVLVInfo,
+  IsCritical: UCHAR,
+  Control: ptr PLDAPControlA,
+): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_parse_vlv_controlW*(
+  ExternalHandle: PLDAP,
+  Control: ptr PLDAPControlW,
+  TargetPos: PULONG,
+  ListCount: PULONG,
+  Context: ptr PBERVAL,
+  ErrCode: PINT,
+): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_parse_vlv_controlA*(
+  ExternalHandle: PLDAP,
+  Control: ptr PLDAPControlA,
+  TargetPos: PULONG,
+  ListCount: PULONG,
+  Context: ptr PBERVAL,
+  ErrCode: PINT,
+): INT {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_start_tls_sW*(
+  ExternalHandle: PLDAP,
+  ServerReturnValue: PULONG,
+  result: ptr ptr LDAPMessage,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_start_tls_sA*(
+  ExternalHandle: PLDAP,
+  ServerReturnValue: PULONG,
+  result: ptr ptr LDAPMessage,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_stop_tls_s*(
+  ExternalHandle: PLDAP
+): BOOLEAN {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_first_reference*(
+  ld: ptr LDAP, res: ptr LDAPMessage
+): ptr LDAPMessage {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_next_reference*(
+  ld: ptr LDAP, entry: ptr LDAPMessage
+): ptr LDAPMessage {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_count_references*(
+  ld: ptr LDAP, res: ptr LDAPMessage
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_parse_referenceW*(
+  Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, Referrals: ptr ptr PWCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_parse_referenceA*(
+  Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, Referrals: ptr ptr PCHAR
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_extended_operationW*(
+  ld: ptr LDAP,
+  Oid: PWCHAR,
+  Data: ptr BERVAL,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_extended_operationA*(
+  ld: ptr LDAP,
+  Oid: PCHAR,
+  Data: ptr BERVAL,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+  MessageNumber: ptr ULONG,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_extended_operation_sA*(
+  ExternalHandle: ptr LDAP,
+  Oid: PCHAR,
+  Data: ptr BERVAL,
+  ServerControls: ptr PLDAPControlA,
+  ClientControls: ptr PLDAPControlA,
+  ReturnedOid: ptr PCHAR,
+  ReturnedData: ptr ptr BERVAL,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_extended_operation_sW*(
+  ExternalHandle: ptr LDAP,
+  Oid: PWCHAR,
+  Data: ptr BERVAL,
+  ServerControls: ptr PLDAPControlW,
+  ClientControls: ptr PLDAPControlW,
+  ReturnedOid: ptr PWCHAR,
+  ReturnedData: ptr ptr BERVAL,
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_close_extended_op*(
+  ld: ptr LDAP, MessageNumber: ULONG
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
 proc LdapGetLastError*(): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc LdapMapErrorToWin32*(LdapError: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-proc ldap_conn_from_msg*(PrimaryConn: ptr LDAP, res: ptr LDAPMessage): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+proc LdapMapErrorToWin32*(
+  LdapError: ULONG
+): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+proc ldap_conn_from_msg*(
+  PrimaryConn: ptr LDAP, res: ptr LDAPMessage
+): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+
 when winimUnicode:
   type
     LDAPControl* = LDAPControlW
@@ -860,6 +1837,7 @@
     LDAPSortKey* = LDAPSortKeyW
     PLDAPSortKey* = PLDAPSortKeyW
     SSL_EMPTY_CACHE_FN* = SSL_EMPTY_CACHE_FN_W
+
   const
     LDAP_UNICODE* = 1
     UNISP_NAME* = UNISP_NAME_W
@@ -868,79 +1846,489 @@
     SSL3SP_NAME* = SSL3SP_NAME_W
     TLS1SP_NAME* = TLS1SP_NAME_W
     SCHANNEL_NAME* = SCHANNEL_NAME_W
-  proc ldap_open*(HostName: PWCHAR, PortNumber: ULONG): ptr LDAP {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_openW".}
-  proc ldap_init*(HostName: PWCHAR, PortNumber: ULONG): ptr LDAP {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_initW".}
-  proc ldap_sslinit*(HostName: PWCHAR, PortNumber: ULONG, secure: int32): ptr LDAP {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_sslinitW".}
-  proc cldap_open*(HostName: PWCHAR, PortNumber: ULONG): ptr LDAP {.winapi, stdcall, dynlib: "wldap32", importc: "cldap_openW".}
-  proc ldap_get_option*(ld: ptr LDAP, option: int32, outvalue: pointer): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_get_optionW".}
-  proc ldap_set_option*(ld: ptr LDAP, option: int32, invalue: pointer): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_set_optionW".}
-  proc ldap_simple_bind*(ld: ptr LDAP, dn: PWCHAR, passwd: PWCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_simple_bindW".}
-  proc ldap_simple_bind_s*(ld: ptr LDAP, dn: PWCHAR, passwd: PWCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_simple_bind_sW".}
-  proc ldap_bind*(ld: ptr LDAP, dn: PWCHAR, cred: PWCHAR, `method`: ULONG): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_bindW".}
-  proc ldap_bind_s*(ld: ptr LDAP, dn: PWCHAR, cred: PWCHAR, `method`: ULONG): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_bind_sW".}
-  proc ldap_sasl_bind*(ExternalHandle: ptr LDAP, DistName: PWCHAR, AuthMechanism: PWCHAR, cred: ptr BERVAL, ServerCtrls: ptr PLDAPControlW, ClientCtrls: ptr PLDAPControlW, MessageNumber: ptr int32): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_sasl_bindW".}
-  proc ldap_sasl_bind_s*(ExternalHandle: ptr LDAP, DistName: PWCHAR, AuthMechanism: PWCHAR, cred: ptr BERVAL, ServerCtrls: ptr PLDAPControlW, ClientCtrls: ptr PLDAPControlW, ServerData: ptr PBERVAL): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_sasl_bind_sW".}
-  proc ldap_search*(ld: ptr LDAP, base: PWCHAR, scope: ULONG, filter: PWCHAR, attrs: ptr PWCHAR, attrsonly: ULONG): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_searchW".}
-  proc ldap_search_s*(ld: ptr LDAP, base: PWCHAR, scope: ULONG, filter: PWCHAR, attrs: ptr PWCHAR, attrsonly: ULONG, res: ptr ptr LDAPMessage): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_search_sW".}
-  proc ldap_search_st*(ld: ptr LDAP, base: PWCHAR, scope: ULONG, filter: PWCHAR, attrs: ptr PWCHAR, attrsonly: ULONG, timeout: ptr LDAP_TIMEVAL, res: ptr ptr LDAPMessage): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_search_stW".}
-  proc ldap_search_ext*(ld: ptr LDAP, base: PWCHAR, scope: ULONG, filter: PWCHAR, attrs: ptr PWCHAR, attrsonly: ULONG, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, TimeLimit: ULONG, SizeLimit: ULONG, MessageNumber: ptr ULONG): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_search_extW".}
-  proc ldap_search_ext_s*(ld: ptr LDAP, base: PWCHAR, scope: ULONG, filter: PWCHAR, attrs: ptr PWCHAR, attrsonly: ULONG, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, timeout: ptr LDAP_TIMEVAL, SizeLimit: ULONG, res: ptr ptr LDAPMessage): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_search_ext_sW".}
-  proc ldap_check_filter*(ld: ptr LDAP, SearchFilter: PWCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_check_filterW".}
-  proc ldap_modify*(ld: ptr LDAP, dn: PWCHAR, mods: ptr ptr LDAPModW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modifyW".}
-  proc ldap_modify_s*(ld: ptr LDAP, dn: PWCHAR, mods: ptr ptr LDAPModW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modify_sW".}
-  proc ldap_modify_ext*(ld: ptr LDAP, dn: PWCHAR, mods: ptr ptr LDAPModW, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, MessageNumber: ptr ULONG): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modify_extW".}
-  proc ldap_modify_ext_s*(ld: ptr LDAP, dn: PWCHAR, mods: ptr ptr LDAPModW, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modify_ext_sW".}
-  proc ldap_modrdn2*(ExternalHandle: ptr LDAP, DistinguishedName: PWCHAR, NewDistinguishedName: PWCHAR, DeleteOldRdn: INT): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modrdn2W".}
-  proc ldap_modrdn*(ExternalHandle: ptr LDAP, DistinguishedName: PWCHAR, NewDistinguishedName: PWCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modrdnW".}
-  proc ldap_modrdn2_s*(ExternalHandle: ptr LDAP, DistinguishedName: PWCHAR, NewDistinguishedName: PWCHAR, DeleteOldRdn: INT): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modrdn2_sW".}
-  proc ldap_modrdn_s*(ExternalHandle: ptr LDAP, DistinguishedName: PWCHAR, NewDistinguishedName: PWCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modrdn_sW".}
-  proc ldap_rename*(ld: ptr LDAP, dn: PWCHAR, NewRDN: PWCHAR, NewParent: PWCHAR, DeleteOldRdn: INT, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, MessageNumber: ptr ULONG): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_rename_extW".}
-  proc ldap_rename_s*(ld: ptr LDAP, dn: PWCHAR, NewRDN: PWCHAR, NewParent: PWCHAR, DeleteOldRdn: INT, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_rename_ext_sW".}
-  proc ldap_rename_ext*(ld: ptr LDAP, dn: PWCHAR, NewRDN: PWCHAR, NewParent: PWCHAR, DeleteOldRdn: INT, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, MessageNumber: ptr ULONG): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_rename_extW".}
-  proc ldap_rename_ext_s*(ld: ptr LDAP, dn: PWCHAR, NewRDN: PWCHAR, NewParent: PWCHAR, DeleteOldRdn: INT, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_rename_ext_sW".}
-  proc ldap_add*(ld: ptr LDAP, dn: PWCHAR, attrs: ptr ptr LDAPModW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_addW".}
-  proc ldap_add_s*(ld: ptr LDAP, dn: PWCHAR, attrs: ptr ptr LDAPModW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_add_sW".}
-  proc ldap_add_ext*(ld: ptr LDAP, dn: PWCHAR, attrs: ptr ptr LDAPModW, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, MessageNumber: ptr ULONG): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_add_extW".}
-  proc ldap_add_ext_s*(ld: ptr LDAP, dn: PWCHAR, attrs: ptr ptr LDAPModW, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_add_ext_sW".}
-  proc ldap_compare*(ld: ptr LDAP, dn: PWCHAR, attr: PWCHAR, value: PWCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_compareW".}
-  proc ldap_compare_s*(ld: ptr LDAP, dn: PWCHAR, attr: PWCHAR, value: PWCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_compare_sW".}
-  proc ldap_compare_ext*(ld: ptr LDAP, dn: PWCHAR, Attr: PWCHAR, Value: PWCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, MessageNumber: ptr ULONG): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_compare_extW".}
-  proc ldap_compare_ext_s*(ld: ptr LDAP, dn: PWCHAR, Attr: PWCHAR, Value: PWCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_compare_ext_sW".}
-  proc ldap_delete*(ld: ptr LDAP, dn: PWCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_deleteW".}
-  proc ldap_delete_ext*(ld: ptr LDAP, dn: PWCHAR, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, MessageNumber: ptr ULONG): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_delete_extW".}
-  proc ldap_delete_s*(ld: ptr LDAP, dn: PWCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_delete_sW".}
-  proc ldap_delete_ext_s*(ld: ptr LDAP, dn: PWCHAR, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_delete_ext_sW".}
-  proc ldap_parse_result*(Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, ReturnCode: ptr ULONG, MatchedDNs: ptr PWCHAR, ErrorMessage: ptr PWCHAR, Referrals: ptr ptr PWCHAR, ServerControls: ptr ptr PLDAPControlW, Freeit: BOOLEAN): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_resultW".}
-  proc ldap_controls_free*(Control: ptr ptr LDAPControlW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_controls_freeW".}
-  proc ldap_control_free*(Control: ptr LDAPControlW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_control_freeW".}
-  proc ldap_free_controls*(Controls: ptr ptr LDAPControlW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_free_controlsW".}
-  proc ldap_parse_extended_result*(Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, ResultOID: ptr PWCHAR, ResultData: ptr ptr BERVAL, Freeit: BOOLEAN): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_extended_resultW".}
-  proc ldap_err2string*(err: ULONG): PWCHAR {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_err2stringW".}
-  proc ldap_first_attribute*(ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr ptr BerElement): PWCHAR {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_first_attributeW".}
-  proc ldap_next_attribute*(ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr BerElement): PWCHAR {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_next_attributeW".}
-  proc ldap_get_values*(ld: ptr LDAP, entry: ptr LDAPMessage, attr: PWCHAR): ptr PWCHAR {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_get_valuesW".}
-  proc ldap_get_values_len*(ExternalHandle: ptr LDAP, Message: ptr LDAPMessage, attr: PWCHAR): ptr ptr BERVAL {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_get_values_lenW".}
-  proc ldap_count_values*(vals: ptr PWCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_count_valuesW".}
-  proc ldap_value_free*(vals: ptr PWCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_value_freeW".}
-  proc ldap_get_dn*(ld: ptr LDAP, entry: ptr LDAPMessage): PWCHAR {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_get_dnW".}
-  proc ldap_explode_dn*(dn: PWCHAR, notypes: ULONG): ptr PWCHAR {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_explode_dnW".}
-  proc ldap_dn2ufn*(dn: PWCHAR): PWCHAR {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_dn2ufnW".}
-  proc ldap_memfree*(Block: PWCHAR): VOID {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_memfreeW".}
-  proc ldap_ufn2dn*(ufn: PWCHAR, pDn: ptr PWCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_ufn2dnW".}
-  proc ldap_escape_filter_element*(sourceFilterElement: PCHAR, sourceLength: ULONG, destFilterElement: PWCHAR, destLength: ULONG): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_escape_filter_elementW".}
-  proc ldap_create_sort_control*(ExternalHandle: PLDAP, SortKeys: ptr PLDAPSortKeyW, IsCritical: UCHAR, Control: ptr PLDAPControlW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_create_sort_controlW".}
-  proc ldap_parse_sort_control*(ExternalHandle: PLDAP, Control: ptr PLDAPControlW, Result: ptr ULONG, Attribute: ptr PWCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_sort_controlW".}
-  proc ldap_encode_sort_control*(ExternalHandle: PLDAP, SortKeys: ptr PLDAPSortKeyW, Control: PLDAPControlW, Criticality: BOOLEAN): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_encode_sort_controlW".}
-  proc ldap_create_page_control*(ExternalHandle: PLDAP, PageSize: ULONG, Cookie: ptr BERVAL, IsCritical: UCHAR, Control: ptr PLDAPControlW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_create_page_controlW".}
-  proc ldap_parse_page_control*(ExternalHandle: PLDAP, ServerControls: ptr PLDAPControlW, TotalCount: ptr ULONG, Cookie: ptr ptr BERVAL): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_page_controlW".}
-  proc ldap_search_init_page*(ExternalHandle: PLDAP, DistinguishedName: PWCHAR, ScopeOfSearch: ULONG, SearchFilter: PWCHAR, AttributeList: ptr PWCHAR, AttributesOnly: ULONG, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, PageTimeLimit: ULONG, TotalSizeLimit: ULONG, SortKeys: ptr PLDAPSortKeyW): PLDAPSearch {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_search_init_pageW".}
-  proc ldap_create_vlv_control*(ExternalHandle: PLDAP, VlvInfo: PLDAPVLVInfo, IsCritical: UCHAR, Control: ptr PLDAPControlW): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_create_vlv_controlW".}
-  proc ldap_parse_vlv_control*(ExternalHandle: PLDAP, Control: ptr PLDAPControlW, TargetPos: PULONG, ListCount: PULONG, Context: ptr PBERVAL, ErrCode: PINT): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_vlv_controlW".}
-  proc ldap_start_tls_s*(ExternalHandle: PLDAP, ServerReturnValue: PULONG, result: ptr ptr LDAPMessage, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_start_tls_sW".}
-  proc ldap_parse_reference*(Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, Referrals: ptr ptr PWCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_referenceW".}
-  proc ldap_extended_operation*(ld: ptr LDAP, Oid: PWCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, MessageNumber: ptr ULONG): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_extended_operationW".}
-  proc ldap_extended_operation_s*(ExternalHandle: ptr LDAP, Oid: PWCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlW, ClientControls: ptr PLDAPControlW, ReturnedOid: ptr PWCHAR, ReturnedData: ptr ptr BERVAL): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_extended_operation_sW".}
-  proc SslEmptyCache*(pszTargetName: LPWSTR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "schannel", importc: "SslEmptyCacheW".}
+  proc ldap_open*(
+    HostName: PWCHAR, PortNumber: ULONG
+  ): ptr LDAP {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_openW".}
+
+  proc ldap_init*(
+    HostName: PWCHAR, PortNumber: ULONG
+  ): ptr LDAP {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_initW".}
+
+  proc ldap_sslinit*(
+    HostName: PWCHAR, PortNumber: ULONG, secure: int32
+  ): ptr LDAP {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_sslinitW".}
+
+  proc cldap_open*(
+    HostName: PWCHAR, PortNumber: ULONG
+  ): ptr LDAP {.winapi, stdcall, dynlib: "wldap32", importc: "cldap_openW".}
+
+  proc ldap_get_option*(
+    ld: ptr LDAP, option: int32, outvalue: pointer
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_get_optionW".}
+
+  proc ldap_set_option*(
+    ld: ptr LDAP, option: int32, invalue: pointer
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_set_optionW".}
+
+  proc ldap_simple_bind*(
+    ld: ptr LDAP, dn: PWCHAR, passwd: PWCHAR
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_simple_bindW".}
+
+  proc ldap_simple_bind_s*(
+    ld: ptr LDAP, dn: PWCHAR, passwd: PWCHAR
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_simple_bind_sW".}
+
+  proc ldap_bind*(
+    ld: ptr LDAP, dn: PWCHAR, cred: PWCHAR, `method`: ULONG
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_bindW".}
+
+  proc ldap_bind_s*(
+    ld: ptr LDAP, dn: PWCHAR, cred: PWCHAR, `method`: ULONG
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_bind_sW".}
+
+  proc ldap_sasl_bind*(
+    ExternalHandle: ptr LDAP,
+    DistName: PWCHAR,
+    AuthMechanism: PWCHAR,
+    cred: ptr BERVAL,
+    ServerCtrls: ptr PLDAPControlW,
+    ClientCtrls: ptr PLDAPControlW,
+    MessageNumber: ptr int32,
+  ): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_sasl_bindW".}
+
+  proc ldap_sasl_bind_s*(
+    ExternalHandle: ptr LDAP,
+    DistName: PWCHAR,
+    AuthMechanism: PWCHAR,
+    cred: ptr BERVAL,
+    ServerCtrls: ptr PLDAPControlW,
+    ClientCtrls: ptr PLDAPControlW,
+    ServerData: ptr PBERVAL,
+  ): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_sasl_bind_sW".}
+
+  proc ldap_search*(
+    ld: ptr LDAP,
+    base: PWCHAR,
+    scope: ULONG,
+    filter: PWCHAR,
+    attrs: ptr PWCHAR,
+    attrsonly: ULONG,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_searchW".}
+
+  proc ldap_search_s*(
+    ld: ptr LDAP,
+    base: PWCHAR,
+    scope: ULONG,
+    filter: PWCHAR,
+    attrs: ptr PWCHAR,
+    attrsonly: ULONG,
+    res: ptr ptr LDAPMessage,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_search_sW".}
+
+  proc ldap_search_st*(
+    ld: ptr LDAP,
+    base: PWCHAR,
+    scope: ULONG,
+    filter: PWCHAR,
+    attrs: ptr PWCHAR,
+    attrsonly: ULONG,
+    timeout: ptr LDAP_TIMEVAL,
+    res: ptr ptr LDAPMessage,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_search_stW".}
+
+  proc ldap_search_ext*(
+    ld: ptr LDAP,
+    base: PWCHAR,
+    scope: ULONG,
+    filter: PWCHAR,
+    attrs: ptr PWCHAR,
+    attrsonly: ULONG,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+    TimeLimit: ULONG,
+    SizeLimit: ULONG,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_search_extW".}
+
+  proc ldap_search_ext_s*(
+    ld: ptr LDAP,
+    base: PWCHAR,
+    scope: ULONG,
+    filter: PWCHAR,
+    attrs: ptr PWCHAR,
+    attrsonly: ULONG,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+    timeout: ptr LDAP_TIMEVAL,
+    SizeLimit: ULONG,
+    res: ptr ptr LDAPMessage,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_search_ext_sW".}
+
+  proc ldap_check_filter*(
+    ld: ptr LDAP, SearchFilter: PWCHAR
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_check_filterW".}
+
+  proc ldap_modify*(
+    ld: ptr LDAP, dn: PWCHAR, mods: ptr ptr LDAPModW
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modifyW".}
+
+  proc ldap_modify_s*(
+    ld: ptr LDAP, dn: PWCHAR, mods: ptr ptr LDAPModW
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modify_sW".}
+
+  proc ldap_modify_ext*(
+    ld: ptr LDAP,
+    dn: PWCHAR,
+    mods: ptr ptr LDAPModW,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modify_extW".}
+
+  proc ldap_modify_ext_s*(
+    ld: ptr LDAP,
+    dn: PWCHAR,
+    mods: ptr ptr LDAPModW,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modify_ext_sW".}
+
+  proc ldap_modrdn2*(
+    ExternalHandle: ptr LDAP,
+    DistinguishedName: PWCHAR,
+    NewDistinguishedName: PWCHAR,
+    DeleteOldRdn: INT,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modrdn2W".}
+
+  proc ldap_modrdn*(
+    ExternalHandle: ptr LDAP, DistinguishedName: PWCHAR, NewDistinguishedName: PWCHAR
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modrdnW".}
+
+  proc ldap_modrdn2_s*(
+    ExternalHandle: ptr LDAP,
+    DistinguishedName: PWCHAR,
+    NewDistinguishedName: PWCHAR,
+    DeleteOldRdn: INT,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modrdn2_sW".}
+
+  proc ldap_modrdn_s*(
+    ExternalHandle: ptr LDAP, DistinguishedName: PWCHAR, NewDistinguishedName: PWCHAR
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_modrdn_sW".}
+
+  proc ldap_rename*(
+    ld: ptr LDAP,
+    dn: PWCHAR,
+    NewRDN: PWCHAR,
+    NewParent: PWCHAR,
+    DeleteOldRdn: INT,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_rename_extW".}
+
+  proc ldap_rename_s*(
+    ld: ptr LDAP,
+    dn: PWCHAR,
+    NewRDN: PWCHAR,
+    NewParent: PWCHAR,
+    DeleteOldRdn: INT,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_rename_ext_sW".}
+
+  proc ldap_rename_ext*(
+    ld: ptr LDAP,
+    dn: PWCHAR,
+    NewRDN: PWCHAR,
+    NewParent: PWCHAR,
+    DeleteOldRdn: INT,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_rename_extW".}
+
+  proc ldap_rename_ext_s*(
+    ld: ptr LDAP,
+    dn: PWCHAR,
+    NewRDN: PWCHAR,
+    NewParent: PWCHAR,
+    DeleteOldRdn: INT,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_rename_ext_sW".}
+
+  proc ldap_add*(
+    ld: ptr LDAP, dn: PWCHAR, attrs: ptr ptr LDAPModW
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_addW".}
+
+  proc ldap_add_s*(
+    ld: ptr LDAP, dn: PWCHAR, attrs: ptr ptr LDAPModW
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_add_sW".}
+
+  proc ldap_add_ext*(
+    ld: ptr LDAP,
+    dn: PWCHAR,
+    attrs: ptr ptr LDAPModW,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_add_extW".}
+
+  proc ldap_add_ext_s*(
+    ld: ptr LDAP,
+    dn: PWCHAR,
+    attrs: ptr ptr LDAPModW,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_add_ext_sW".}
+
+  proc ldap_compare*(
+    ld: ptr LDAP, dn: PWCHAR, attr: PWCHAR, value: PWCHAR
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_compareW".}
+
+  proc ldap_compare_s*(
+    ld: ptr LDAP, dn: PWCHAR, attr: PWCHAR, value: PWCHAR
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_compare_sW".}
+
+  proc ldap_compare_ext*(
+    ld: ptr LDAP,
+    dn: PWCHAR,
+    Attr: PWCHAR,
+    Value: PWCHAR,
+    Data: ptr BERVAL,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_compare_extW".}
+
+  proc ldap_compare_ext_s*(
+    ld: ptr LDAP,
+    dn: PWCHAR,
+    Attr: PWCHAR,
+    Value: PWCHAR,
+    Data: ptr BERVAL,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_compare_ext_sW".}
+
+  proc ldap_delete*(
+    ld: ptr LDAP, dn: PWCHAR
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_deleteW".}
+
+  proc ldap_delete_ext*(
+    ld: ptr LDAP,
+    dn: PWCHAR,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_delete_extW".}
+
+  proc ldap_delete_s*(
+    ld: ptr LDAP, dn: PWCHAR
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_delete_sW".}
+
+  proc ldap_delete_ext_s*(
+    ld: ptr LDAP,
+    dn: PWCHAR,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_delete_ext_sW".}
+
+  proc ldap_parse_result*(
+    Connection: ptr LDAP,
+    ResultMessage: ptr LDAPMessage,
+    ReturnCode: ptr ULONG,
+    MatchedDNs: ptr PWCHAR,
+    ErrorMessage: ptr PWCHAR,
+    Referrals: ptr ptr PWCHAR,
+    ServerControls: ptr ptr PLDAPControlW,
+    Freeit: BOOLEAN,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_resultW".}
+
+  proc ldap_controls_free*(
+    Control: ptr ptr LDAPControlW
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_controls_freeW".}
+
+  proc ldap_control_free*(
+    Control: ptr LDAPControlW
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_control_freeW".}
+
+  proc ldap_free_controls*(
+    Controls: ptr ptr LDAPControlW
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_free_controlsW".}
+
+  proc ldap_parse_extended_result*(
+    Connection: ptr LDAP,
+    ResultMessage: ptr LDAPMessage,
+    ResultOID: ptr PWCHAR,
+    ResultData: ptr ptr BERVAL,
+    Freeit: BOOLEAN,
+  ): ULONG {.
+    winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_extended_resultW"
+  .}
+
+  proc ldap_err2string*(
+    err: ULONG
+  ): PWCHAR {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_err2stringW".}
+
+  proc ldap_first_attribute*(
+    ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr ptr BerElement
+  ): PWCHAR {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_first_attributeW".}
+
+  proc ldap_next_attribute*(
+    ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr BerElement
+  ): PWCHAR {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_next_attributeW".}
+
+  proc ldap_get_values*(
+    ld: ptr LDAP, entry: ptr LDAPMessage, attr: PWCHAR
+  ): ptr PWCHAR {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_get_valuesW".}
+
+  proc ldap_get_values_len*(
+    ExternalHandle: ptr LDAP, Message: ptr LDAPMessage, attr: PWCHAR
+  ): ptr ptr BERVAL {.
+    winapi, stdcall, dynlib: "wldap32", importc: "ldap_get_values_lenW"
+  .}
+
+  proc ldap_count_values*(
+    vals: ptr PWCHAR
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_count_valuesW".}
+
+  proc ldap_value_free*(
+    vals: ptr PWCHAR
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_value_freeW".}
+
+  proc ldap_get_dn*(
+    ld: ptr LDAP, entry: ptr LDAPMessage
+  ): PWCHAR {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_get_dnW".}
+
+  proc ldap_explode_dn*(
+    dn: PWCHAR, notypes: ULONG
+  ): ptr PWCHAR {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_explode_dnW".}
+
+  proc ldap_dn2ufn*(
+    dn: PWCHAR
+  ): PWCHAR {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_dn2ufnW".}
+
+  proc ldap_memfree*(
+    Block: PWCHAR
+  ): VOID {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_memfreeW".}
+
+  proc ldap_ufn2dn*(
+    ufn: PWCHAR, pDn: ptr PWCHAR
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_ufn2dnW".}
+
+  proc ldap_escape_filter_element*(
+    sourceFilterElement: PCHAR,
+    sourceLength: ULONG,
+    destFilterElement: PWCHAR,
+    destLength: ULONG,
+  ): ULONG {.
+    winapi, stdcall, dynlib: "wldap32", importc: "ldap_escape_filter_elementW"
+  .}
+
+  proc ldap_create_sort_control*(
+    ExternalHandle: PLDAP,
+    SortKeys: ptr PLDAPSortKeyW,
+    IsCritical: UCHAR,
+    Control: ptr PLDAPControlW,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_create_sort_controlW".}
+
+  proc ldap_parse_sort_control*(
+    ExternalHandle: PLDAP,
+    Control: ptr PLDAPControlW,
+    Result: ptr ULONG,
+    Attribute: ptr PWCHAR,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_sort_controlW".}
+
+  proc ldap_encode_sort_control*(
+    ExternalHandle: PLDAP,
+    SortKeys: ptr PLDAPSortKeyW,
+    Control: PLDAPControlW,
+    Criticality: BOOLEAN,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_encode_sort_controlW".}
+
+  proc ldap_create_page_control*(
+    ExternalHandle: PLDAP,
+    PageSize: ULONG,
+    Cookie: ptr BERVAL,
+    IsCritical: UCHAR,
+    Control: ptr PLDAPControlW,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_create_page_controlW".}
+
+  proc ldap_parse_page_control*(
+    ExternalHandle: PLDAP,
+    ServerControls: ptr PLDAPControlW,
+    TotalCount: ptr ULONG,
+    Cookie: ptr ptr BERVAL,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_page_controlW".}
+
+  proc ldap_search_init_page*(
+    ExternalHandle: PLDAP,
+    DistinguishedName: PWCHAR,
+    ScopeOfSearch: ULONG,
+    SearchFilter: PWCHAR,
+    AttributeList: ptr PWCHAR,
+    AttributesOnly: ULONG,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+    PageTimeLimit: ULONG,
+    TotalSizeLimit: ULONG,
+    SortKeys: ptr PLDAPSortKeyW,
+  ): PLDAPSearch {.
+    winapi, stdcall, dynlib: "wldap32", importc: "ldap_search_init_pageW"
+  .}
+
+  proc ldap_create_vlv_control*(
+    ExternalHandle: PLDAP,
+    VlvInfo: PLDAPVLVInfo,
+    IsCritical: UCHAR,
+    Control: ptr PLDAPControlW,
+  ): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_create_vlv_controlW".}
+
+  proc ldap_parse_vlv_control*(
+    ExternalHandle: PLDAP,
+    Control: ptr PLDAPControlW,
+    TargetPos: PULONG,
+    ListCount: PULONG,
+    Context: ptr PBERVAL,
+    ErrCode: PINT,
+  ): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_vlv_controlW".}
+
+  proc ldap_start_tls_s*(
+    ExternalHandle: PLDAP,
+    ServerReturnValue: PULONG,
+    result: ptr ptr LDAPMessage,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_start_tls_sW".}
+
+  proc ldap_parse_reference*(
+    Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, Referrals: ptr ptr PWCHAR
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_referenceW".}
+
+  proc ldap_extended_operation*(
+    ld: ptr LDAP,
+    Oid: PWCHAR,
+    Data: ptr BERVAL,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_extended_operationW".}
+
+  proc ldap_extended_operation_s*(
+    ExternalHandle: ptr LDAP,
+    Oid: PWCHAR,
+    Data: ptr BERVAL,
+    ServerControls: ptr PLDAPControlW,
+    ClientControls: ptr PLDAPControlW,
+    ReturnedOid: ptr PWCHAR,
+    ReturnedData: ptr ptr BERVAL,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_extended_operation_sW".}
+
+  proc SslEmptyCache*(
+    pszTargetName: LPWSTR, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "schannel", importc: "SslEmptyCacheW".}
+
 when winimAnsi:
   type
     LDAPControl* = LDAPControlA
@@ -952,6 +2340,7 @@
     LDAPSortKey* = LDAPSortKeyA
     PLDAPSortKey* = PLDAPSortKeyA
     SSL_EMPTY_CACHE_FN* = SSL_EMPTY_CACHE_FN_A
+
   const
     LDAP_UNICODE* = 0
     UNISP_NAME* = UNISP_NAME_A
@@ -960,75 +2349,463 @@
     SSL3SP_NAME* = SSL3SP_NAME_A
     TLS1SP_NAME* = TLS1SP_NAME_A
     SCHANNEL_NAME* = SCHANNEL_NAME_A
-  proc ldap_open*(HostName: PCHAR, PortNumber: ULONG): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_init*(HostName: PCHAR, PortNumber: ULONG): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_sslinit*(HostName: PCHAR, PortNumber: ULONG, secure: int32): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc cldap_open*(HostName: PCHAR, PortNumber: ULONG): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_get_option*(ld: ptr LDAP, option: int32, outvalue: pointer): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_set_option*(ld: ptr LDAP, option: int32, invalue: pointer): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_simple_bind*(ld: ptr LDAP, dn: PCHAR, passwd: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_simple_bind_s*(ld: ptr LDAP, dn: PCHAR, passwd: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_bind*(ld: ptr LDAP, dn: PCHAR, cred: PCHAR, `method`: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_bind_s*(ld: ptr LDAP, dn: PCHAR, cred: PCHAR, `method`: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_sasl_bind*(ExternalHandle: ptr LDAP, DistName: PCHAR, AuthMechanism: PCHAR, cred: ptr BERVAL, ServerCtrls: ptr PLDAPControlA, ClientCtrls: ptr PLDAPControlA, MessageNumber: ptr int32): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_sasl_bindA".}
-  proc ldap_sasl_bind_s*(ExternalHandle: ptr LDAP, DistName: PCHAR, AuthMechanism: PCHAR, cred: ptr BERVAL, ServerCtrls: ptr PLDAPControlA, ClientCtrls: ptr PLDAPControlA, ServerData: ptr PBERVAL): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_sasl_bind_sA".}
-  proc ldap_search*(ld: ptr LDAP, base: PCHAR, scope: ULONG, filter: PCHAR, attrs: ptr PCHAR, attrsonly: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_search_s*(ld: ptr LDAP, base: PCHAR, scope: ULONG, filter: PCHAR, attrs: ptr PCHAR, attrsonly: ULONG, res: ptr ptr LDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_search_st*(ld: ptr LDAP, base: PCHAR, scope: ULONG, filter: PCHAR, attrs: ptr PCHAR, attrsonly: ULONG, timeout: ptr LDAP_TIMEVAL, res: ptr ptr LDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_search_ext*(ld: ptr LDAP, base: PCHAR, scope: ULONG, filter: PCHAR, attrs: ptr PCHAR, attrsonly: ULONG, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, TimeLimit: ULONG, SizeLimit: ULONG, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_search_ext_s*(ld: ptr LDAP, base: PCHAR, scope: ULONG, filter: PCHAR, attrs: ptr PCHAR, attrsonly: ULONG, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, timeout: ptr LDAP_TIMEVAL, SizeLimit: ULONG, res: ptr ptr LDAPMessage): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_check_filter*(ld: ptr LDAP, SearchFilter: PCHAR): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_check_filterA".}
-  proc ldap_modify*(ld: ptr LDAP, dn: PCHAR, mods: ptr ptr LDAPModA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_modify_s*(ld: ptr LDAP, dn: PCHAR, mods: ptr ptr LDAPModA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_modify_ext*(ld: ptr LDAP, dn: PCHAR, mods: ptr ptr LDAPModA, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_modify_ext_s*(ld: ptr LDAP, dn: PCHAR, mods: ptr ptr LDAPModA, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_modrdn2*(ExternalHandle: ptr LDAP, DistinguishedName: PCHAR, NewDistinguishedName: PCHAR, DeleteOldRdn: INT): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_modrdn*(ExternalHandle: ptr LDAP, DistinguishedName: PCHAR, NewDistinguishedName: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_modrdn2_s*(ExternalHandle: ptr LDAP, DistinguishedName: PCHAR, NewDistinguishedName: PCHAR, DeleteOldRdn: INT): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_modrdn_s*(ExternalHandle: ptr LDAP, DistinguishedName: PCHAR, NewDistinguishedName: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_rename*(ld: ptr LDAP, dn: PCHAR, NewRDN: PCHAR, NewParent: PCHAR, DeleteOldRdn: INT, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, MessageNumber: ptr ULONG): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_rename_extA".}
-  proc ldap_rename_s*(ld: ptr LDAP, dn: PCHAR, NewRDN: PCHAR, NewParent: PCHAR, DeleteOldRdn: INT, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_rename_ext_sA".}
-  proc ldap_rename_ext*(ld: ptr LDAP, dn: PCHAR, NewRDN: PCHAR, NewParent: PCHAR, DeleteOldRdn: INT, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_rename_ext_s*(ld: ptr LDAP, dn: PCHAR, NewRDN: PCHAR, NewParent: PCHAR, DeleteOldRdn: INT, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_add*(ld: ptr LDAP, dn: PCHAR, attrs: ptr ptr LDAPMod): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_add_s*(ld: ptr LDAP, dn: PCHAR, attrs: ptr ptr LDAPMod): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_add_ext*(ld: ptr LDAP, dn: PCHAR, attrs: ptr ptr LDAPModA, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_add_ext_s*(ld: ptr LDAP, dn: PCHAR, attrs: ptr ptr LDAPModA, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_compare*(ld: ptr LDAP, dn: PCHAR, attr: PCHAR, value: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_compare_s*(ld: ptr LDAP, dn: PCHAR, attr: PCHAR, value: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_compare_ext*(ld: ptr LDAP, dn: PCHAR, Attr: PCHAR, Value: PCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_compare_ext_s*(ld: ptr LDAP, dn: PCHAR, Attr: PCHAR, Value: PCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_delete*(ld: ptr LDAP, dn: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_delete_s*(ld: ptr LDAP, dn: PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_delete_ext*(ld: ptr LDAP, dn: PCHAR, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_delete_ext_s*(ld: ptr LDAP, dn: PCHAR, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_parse_extended_result*(Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, ResultOID: ptr PCHAR, ResultData: ptr ptr BERVAL, Freeit: BOOLEAN): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_extended_resultA".}
-  proc ldap_parse_result*(Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, ReturnCode: ptr ULONG, MatchedDNs: ptr PCHAR, ErrorMessage: ptr PCHAR, Referrals: ptr ptr PCHAR, ServerControls: ptr ptr PLDAPControlA, Freeit: BOOLEAN): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_controls_free*(Controls: ptr ptr LDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_control_free*(Control: ptr LDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_free_controls*(Controls: ptr ptr LDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+  proc ldap_open*(
+    HostName: PCHAR, PortNumber: ULONG
+  ): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_init*(
+    HostName: PCHAR, PortNumber: ULONG
+  ): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_sslinit*(
+    HostName: PCHAR, PortNumber: ULONG, secure: int32
+  ): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc cldap_open*(
+    HostName: PCHAR, PortNumber: ULONG
+  ): ptr LDAP {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_get_option*(
+    ld: ptr LDAP, option: int32, outvalue: pointer
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_set_option*(
+    ld: ptr LDAP, option: int32, invalue: pointer
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_simple_bind*(
+    ld: ptr LDAP, dn: PCHAR, passwd: PCHAR
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_simple_bind_s*(
+    ld: ptr LDAP, dn: PCHAR, passwd: PCHAR
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_bind*(
+    ld: ptr LDAP, dn: PCHAR, cred: PCHAR, `method`: ULONG
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_bind_s*(
+    ld: ptr LDAP, dn: PCHAR, cred: PCHAR, `method`: ULONG
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_sasl_bind*(
+    ExternalHandle: ptr LDAP,
+    DistName: PCHAR,
+    AuthMechanism: PCHAR,
+    cred: ptr BERVAL,
+    ServerCtrls: ptr PLDAPControlA,
+    ClientCtrls: ptr PLDAPControlA,
+    MessageNumber: ptr int32,
+  ): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_sasl_bindA".}
+
+  proc ldap_sasl_bind_s*(
+    ExternalHandle: ptr LDAP,
+    DistName: PCHAR,
+    AuthMechanism: PCHAR,
+    cred: ptr BERVAL,
+    ServerCtrls: ptr PLDAPControlA,
+    ClientCtrls: ptr PLDAPControlA,
+    ServerData: ptr PBERVAL,
+  ): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_sasl_bind_sA".}
+
+  proc ldap_search*(
+    ld: ptr LDAP,
+    base: PCHAR,
+    scope: ULONG,
+    filter: PCHAR,
+    attrs: ptr PCHAR,
+    attrsonly: ULONG,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_search_s*(
+    ld: ptr LDAP,
+    base: PCHAR,
+    scope: ULONG,
+    filter: PCHAR,
+    attrs: ptr PCHAR,
+    attrsonly: ULONG,
+    res: ptr ptr LDAPMessage,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_search_st*(
+    ld: ptr LDAP,
+    base: PCHAR,
+    scope: ULONG,
+    filter: PCHAR,
+    attrs: ptr PCHAR,
+    attrsonly: ULONG,
+    timeout: ptr LDAP_TIMEVAL,
+    res: ptr ptr LDAPMessage,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_search_ext*(
+    ld: ptr LDAP,
+    base: PCHAR,
+    scope: ULONG,
+    filter: PCHAR,
+    attrs: ptr PCHAR,
+    attrsonly: ULONG,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+    TimeLimit: ULONG,
+    SizeLimit: ULONG,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_search_ext_s*(
+    ld: ptr LDAP,
+    base: PCHAR,
+    scope: ULONG,
+    filter: PCHAR,
+    attrs: ptr PCHAR,
+    attrsonly: ULONG,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+    timeout: ptr LDAP_TIMEVAL,
+    SizeLimit: ULONG,
+    res: ptr ptr LDAPMessage,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_check_filter*(
+    ld: ptr LDAP, SearchFilter: PCHAR
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_check_filterA".}
+
+  proc ldap_modify*(
+    ld: ptr LDAP, dn: PCHAR, mods: ptr ptr LDAPModA
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_modify_s*(
+    ld: ptr LDAP, dn: PCHAR, mods: ptr ptr LDAPModA
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_modify_ext*(
+    ld: ptr LDAP,
+    dn: PCHAR,
+    mods: ptr ptr LDAPModA,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_modify_ext_s*(
+    ld: ptr LDAP,
+    dn: PCHAR,
+    mods: ptr ptr LDAPModA,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_modrdn2*(
+    ExternalHandle: ptr LDAP,
+    DistinguishedName: PCHAR,
+    NewDistinguishedName: PCHAR,
+    DeleteOldRdn: INT,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_modrdn*(
+    ExternalHandle: ptr LDAP, DistinguishedName: PCHAR, NewDistinguishedName: PCHAR
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_modrdn2_s*(
+    ExternalHandle: ptr LDAP,
+    DistinguishedName: PCHAR,
+    NewDistinguishedName: PCHAR,
+    DeleteOldRdn: INT,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_modrdn_s*(
+    ExternalHandle: ptr LDAP, DistinguishedName: PCHAR, NewDistinguishedName: PCHAR
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_rename*(
+    ld: ptr LDAP,
+    dn: PCHAR,
+    NewRDN: PCHAR,
+    NewParent: PCHAR,
+    DeleteOldRdn: INT,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_rename_extA".}
+
+  proc ldap_rename_s*(
+    ld: ptr LDAP,
+    dn: PCHAR,
+    NewRDN: PCHAR,
+    NewParent: PCHAR,
+    DeleteOldRdn: INT,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_rename_ext_sA".}
+
+  proc ldap_rename_ext*(
+    ld: ptr LDAP,
+    dn: PCHAR,
+    NewRDN: PCHAR,
+    NewParent: PCHAR,
+    DeleteOldRdn: INT,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_rename_ext_s*(
+    ld: ptr LDAP,
+    dn: PCHAR,
+    NewRDN: PCHAR,
+    NewParent: PCHAR,
+    DeleteOldRdn: INT,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_add*(
+    ld: ptr LDAP, dn: PCHAR, attrs: ptr ptr LDAPMod
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_add_s*(
+    ld: ptr LDAP, dn: PCHAR, attrs: ptr ptr LDAPMod
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_add_ext*(
+    ld: ptr LDAP,
+    dn: PCHAR,
+    attrs: ptr ptr LDAPModA,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_add_ext_s*(
+    ld: ptr LDAP,
+    dn: PCHAR,
+    attrs: ptr ptr LDAPModA,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_compare*(
+    ld: ptr LDAP, dn: PCHAR, attr: PCHAR, value: PCHAR
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_compare_s*(
+    ld: ptr LDAP, dn: PCHAR, attr: PCHAR, value: PCHAR
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_compare_ext*(
+    ld: ptr LDAP,
+    dn: PCHAR,
+    Attr: PCHAR,
+    Value: PCHAR,
+    Data: ptr BERVAL,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_compare_ext_s*(
+    ld: ptr LDAP,
+    dn: PCHAR,
+    Attr: PCHAR,
+    Value: PCHAR,
+    Data: ptr BERVAL,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_delete*(
+    ld: ptr LDAP, dn: PCHAR
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_delete_s*(
+    ld: ptr LDAP, dn: PCHAR
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_delete_ext*(
+    ld: ptr LDAP,
+    dn: PCHAR,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_delete_ext_s*(
+    ld: ptr LDAP,
+    dn: PCHAR,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_parse_extended_result*(
+    Connection: ptr LDAP,
+    ResultMessage: ptr LDAPMessage,
+    ResultOID: ptr PCHAR,
+    ResultData: ptr ptr BERVAL,
+    Freeit: BOOLEAN,
+  ): ULONG {.
+    winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_extended_resultA"
+  .}
+
+  proc ldap_parse_result*(
+    Connection: ptr LDAP,
+    ResultMessage: ptr LDAPMessage,
+    ReturnCode: ptr ULONG,
+    MatchedDNs: ptr PCHAR,
+    ErrorMessage: ptr PCHAR,
+    Referrals: ptr ptr PCHAR,
+    ServerControls: ptr ptr PLDAPControlA,
+    Freeit: BOOLEAN,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_controls_free*(
+    Controls: ptr ptr LDAPControlA
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_control_free*(
+    Control: ptr LDAPControlA
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_free_controls*(
+    Controls: ptr ptr LDAPControlA
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
   proc ldap_err2string*(err: ULONG): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_first_attribute*(ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr ptr BerElement): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_next_attribute*(ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr BerElement): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_get_values*(ld: ptr LDAP, entry: ptr LDAPMessage, attr: PCHAR): ptr PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_get_values_len*(ExternalHandle: ptr LDAP, Message: ptr LDAPMessage, attr: PCHAR): ptr ptr BERVAL {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_count_values*(vals: ptr PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_value_free*(vals: ptr PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_get_dn*(ld: ptr LDAP, entry: ptr LDAPMessage): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_explode_dn*(dn: PCHAR, notypes: ULONG): ptr PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+  proc ldap_first_attribute*(
+    ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr ptr BerElement
+  ): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_next_attribute*(
+    ld: ptr LDAP, entry: ptr LDAPMessage, `ptr`: ptr BerElement
+  ): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_get_values*(
+    ld: ptr LDAP, entry: ptr LDAPMessage, attr: PCHAR
+  ): ptr PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_get_values_len*(
+    ExternalHandle: ptr LDAP, Message: ptr LDAPMessage, attr: PCHAR
+  ): ptr ptr BERVAL {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_count_values*(
+    vals: ptr PCHAR
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_value_free*(
+    vals: ptr PCHAR
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_get_dn*(
+    ld: ptr LDAP, entry: ptr LDAPMessage
+  ): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_explode_dn*(
+    dn: PCHAR, notypes: ULONG
+  ): ptr PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
+
   proc ldap_dn2ufn*(dn: PCHAR): PCHAR {.winapi, cdecl, dynlib: "wldap32", importc.}
   proc ldap_memfree*(Block: PCHAR): VOID {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_ufn2dn*(ufn: PCHAR, pDn: ptr PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_escape_filter_element*(sourceFilterElement: PCHAR, sourceLength: ULONG, destFilterElement: PCHAR, destLength: ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_create_sort_control*(ExternalHandle: PLDAP, SortKeys: ptr PLDAPSortKeyA, IsCritical: UCHAR, Control: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_parse_sort_control*(ExternalHandle: PLDAP, Control: ptr PLDAPControlA, Result: ptr ULONG, Attribute: ptr PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_create_page_control*(ExternalHandle: PLDAP, PageSize: ULONG, Cookie: ptr BERVAL, IsCritical: UCHAR, Control: ptr PLDAPControlA): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_parse_page_control*(ExternalHandle: PLDAP, ServerControls: ptr PLDAPControlA, TotalCount: ptr ULONG, Cookie: ptr ptr BERVAL): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_search_init_page*(ExternalHandle: PLDAP, DistinguishedName: PCHAR, ScopeOfSearch: ULONG, SearchFilter: PCHAR, AttributeList: ptr PCHAR, AttributesOnly: ULONG, ServerControls: ptr PLDAPControl, ClientControls: ptr PLDAPControl, PageTimeLimit: ULONG, TotalSizeLimit: ULONG, SortKeys: ptr PLDAPSortKey): PLDAPSearch {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_create_vlv_control*(ExternalHandle: PLDAP, VlvInfo: PLDAPVLVInfo, IsCritical: UCHAR, Control: ptr PLDAPControlA): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_create_vlv_controlA".}
-  proc ldap_parse_vlv_control*(ExternalHandle: PLDAP, Control: ptr PLDAPControlA, TargetPos: PULONG, ListCount: PULONG, Context: ptr PBERVAL, ErrCode: PINT): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_vlv_controlA".}
-  proc ldap_start_tls_s*(ExternalHandle: PLDAP, ServerReturnValue: PULONG, result: ptr ptr LDAPMessage, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_start_tls_sA".}
-  proc ldap_parse_reference*(Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, Referrals: ptr ptr PCHAR): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_extended_operation*(ld: ptr LDAP, Oid: PCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, MessageNumber: ptr ULONG): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
-  proc ldap_extended_operation_s*(ExternalHandle: ptr LDAP, Oid: PCHAR, Data: ptr BERVAL, ServerControls: ptr PLDAPControlA, ClientControls: ptr PLDAPControlA, ReturnedOid: ptr PCHAR, ReturnedData: ptr ptr BERVAL): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_extended_operation_sA".}
-  proc SslEmptyCache*(pszTargetName: LPSTR, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "schannel", importc: "SslEmptyCacheA".}
+  proc ldap_ufn2dn*(
+    ufn: PCHAR, pDn: ptr PCHAR
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_escape_filter_element*(
+    sourceFilterElement: PCHAR,
+    sourceLength: ULONG,
+    destFilterElement: PCHAR,
+    destLength: ULONG,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_create_sort_control*(
+    ExternalHandle: PLDAP,
+    SortKeys: ptr PLDAPSortKeyA,
+    IsCritical: UCHAR,
+    Control: ptr PLDAPControlA,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_parse_sort_control*(
+    ExternalHandle: PLDAP,
+    Control: ptr PLDAPControlA,
+    Result: ptr ULONG,
+    Attribute: ptr PCHAR,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_create_page_control*(
+    ExternalHandle: PLDAP,
+    PageSize: ULONG,
+    Cookie: ptr BERVAL,
+    IsCritical: UCHAR,
+    Control: ptr PLDAPControlA,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_parse_page_control*(
+    ExternalHandle: PLDAP,
+    ServerControls: ptr PLDAPControlA,
+    TotalCount: ptr ULONG,
+    Cookie: ptr ptr BERVAL,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_search_init_page*(
+    ExternalHandle: PLDAP,
+    DistinguishedName: PCHAR,
+    ScopeOfSearch: ULONG,
+    SearchFilter: PCHAR,
+    AttributeList: ptr PCHAR,
+    AttributesOnly: ULONG,
+    ServerControls: ptr PLDAPControl,
+    ClientControls: ptr PLDAPControl,
+    PageTimeLimit: ULONG,
+    TotalSizeLimit: ULONG,
+    SortKeys: ptr PLDAPSortKey,
+  ): PLDAPSearch {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_create_vlv_control*(
+    ExternalHandle: PLDAP,
+    VlvInfo: PLDAPVLVInfo,
+    IsCritical: UCHAR,
+    Control: ptr PLDAPControlA,
+  ): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_create_vlv_controlA".}
+
+  proc ldap_parse_vlv_control*(
+    ExternalHandle: PLDAP,
+    Control: ptr PLDAPControlA,
+    TargetPos: PULONG,
+    ListCount: PULONG,
+    Context: ptr PBERVAL,
+    ErrCode: PINT,
+  ): INT {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_parse_vlv_controlA".}
+
+  proc ldap_start_tls_s*(
+    ExternalHandle: PLDAP,
+    ServerReturnValue: PULONG,
+    result: ptr ptr LDAPMessage,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_start_tls_sA".}
+
+  proc ldap_parse_reference*(
+    Connection: ptr LDAP, ResultMessage: ptr LDAPMessage, Referrals: ptr ptr PCHAR
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_extended_operation*(
+    ld: ptr LDAP,
+    Oid: PCHAR,
+    Data: ptr BERVAL,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+    MessageNumber: ptr ULONG,
+  ): ULONG {.winapi, cdecl, dynlib: "wldap32", importc.}
+
+  proc ldap_extended_operation_s*(
+    ExternalHandle: ptr LDAP,
+    Oid: PCHAR,
+    Data: ptr BERVAL,
+    ServerControls: ptr PLDAPControlA,
+    ClientControls: ptr PLDAPControlA,
+    ReturnedOid: ptr PCHAR,
+    ReturnedData: ptr ptr BERVAL,
+  ): ULONG {.winapi, stdcall, dynlib: "wldap32", importc: "ldap_extended_operation_sA".}
+
+  proc SslEmptyCache*(
+    pszTargetName: LPSTR, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "schannel", importc: "SslEmptyCacheA".}
--- a/semicongine/thirdparty/winim/winim/inc/winnetwk.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winnetwk.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -19,6 +19,7 @@
     lpRemoteName*: LPSTR
     lpComment*: LPSTR
     lpProvider*: LPSTR
+
   LPNETRESOURCEA* = ptr NETRESOURCEA
   NETRESOURCEW* {.pure.} = object
     dwScope*: DWORD
@@ -29,6 +30,7 @@
     lpRemoteName*: LPWSTR
     lpComment*: LPWSTR
     lpProvider*: LPWSTR
+
   LPNETRESOURCEW* = ptr NETRESOURCEW
   CONNECTDLGSTRUCTA* {.pure.} = object
     cbStructure*: DWORD
@@ -36,6 +38,7 @@
     lpConnRes*: LPNETRESOURCEA
     dwFlags*: DWORD
     dwDevNum*: DWORD
+
   LPCONNECTDLGSTRUCTA* = ptr CONNECTDLGSTRUCTA
   CONNECTDLGSTRUCTW* {.pure.} = object
     cbStructure*: DWORD
@@ -43,6 +46,7 @@
     lpConnRes*: LPNETRESOURCEW
     dwFlags*: DWORD
     dwDevNum*: DWORD
+
   LPCONNECTDLGSTRUCTW* = ptr CONNECTDLGSTRUCTW
   DISCDLGSTRUCTA* {.pure.} = object
     cbStructure*: DWORD
@@ -50,6 +54,7 @@
     lpLocalName*: LPSTR
     lpRemoteName*: LPSTR
     dwFlags*: DWORD
+
   LPDISCDLGSTRUCTA* = ptr DISCDLGSTRUCTA
   DISCDLGSTRUCTW* {.pure.} = object
     cbStructure*: DWORD
@@ -57,22 +62,27 @@
     lpLocalName*: LPWSTR
     lpRemoteName*: LPWSTR
     dwFlags*: DWORD
+
   LPDISCDLGSTRUCTW* = ptr DISCDLGSTRUCTW
   UNIVERSAL_NAME_INFOA* {.pure.} = object
     lpUniversalName*: LPSTR
+
   LPUNIVERSAL_NAME_INFOA* = ptr UNIVERSAL_NAME_INFOA
   UNIVERSAL_NAME_INFOW* {.pure.} = object
     lpUniversalName*: LPWSTR
+
   LPUNIVERSAL_NAME_INFOW* = ptr UNIVERSAL_NAME_INFOW
   REMOTE_NAME_INFOA* {.pure.} = object
     lpUniversalName*: LPSTR
     lpConnectionName*: LPSTR
     lpRemainingPath*: LPSTR
+
   LPREMOTE_NAME_INFOA* = ptr REMOTE_NAME_INFOA
   REMOTE_NAME_INFOW* {.pure.} = object
     lpUniversalName*: LPWSTR
     lpConnectionName*: LPWSTR
     lpRemainingPath*: LPWSTR
+
   LPREMOTE_NAME_INFOW* = ptr REMOTE_NAME_INFOW
   NETINFOSTRUCT* {.pure.} = object
     cbStructure*: DWORD
@@ -83,6 +93,7 @@
     wNetType*: WORD
     dwPrinters*: DWORD
     dwDrives*: DWORD
+
   LPNETINFOSTRUCT* = ptr NETINFOSTRUCT
   NETCONNECTINFOSTRUCT* {.pure.} = object
     cbStructure*: DWORD
@@ -90,7 +101,9 @@
     dwSpeed*: DWORD
     dwDelay*: DWORD
     dwOptDataSize*: DWORD
+
   LPNETCONNECTINFOSTRUCT* = ptr NETCONNECTINFOSTRUCT
+
 const
   WNNC_NET_MSNET* = 0x00010000
   WNNC_NET_SMB* = 0x00020000
@@ -176,7 +189,8 @@
   RESOURCEUSAGE_NOLOCALDEVICE* = 0x00000004
   RESOURCEUSAGE_SIBLING* = 0x00000008
   RESOURCEUSAGE_ATTACHED* = 0x00000010
-  RESOURCEUSAGE_ALL* = RESOURCEUSAGE_CONNECTABLE or RESOURCEUSAGE_CONTAINER or RESOURCEUSAGE_ATTACHED
+  RESOURCEUSAGE_ALL* =
+    RESOURCEUSAGE_CONNECTABLE or RESOURCEUSAGE_CONTAINER or RESOURCEUSAGE_ATTACHED
   RESOURCEUSAGE_RESERVED* = 0x80000000'i32
   RESOURCEDISPLAYTYPE_GENERIC* = 0x00000000
   RESOURCEDISPLAYTYPE_DOMAIN* = 0x00000001
@@ -273,54 +287,242 @@
   WNCON_SLOWLINK* = 0x00000004
   WNCON_DYNAMIC* = 0x00000008
 type
-  PFNGETPROFILEPATHA* = proc (pszUsername: LPCSTR, pszBuffer: LPSTR, cbBuffer: UINT): UINT {.stdcall.}
-  PFNGETPROFILEPATHW* = proc (pszUsername: LPCWSTR, pszBuffer: LPWSTR, cbBuffer: UINT): UINT {.stdcall.}
-  PFNRECONCILEPROFILEA* = proc (pszCentralFile: LPCSTR, pszLocalFile: LPCSTR, dwFlags: DWORD): UINT {.stdcall.}
-  PFNRECONCILEPROFILEW* = proc (pszCentralFile: LPCWSTR, pszLocalFile: LPCWSTR, dwFlags: DWORD): UINT {.stdcall.}
-  PFNPROCESSPOLICIESA* = proc (hwnd: HWND, pszPath: LPCSTR, pszUsername: LPCSTR, pszComputerName: LPCSTR, dwFlags: DWORD): WINBOOL {.stdcall.}
-  PFNPROCESSPOLICIESW* = proc (hwnd: HWND, pszPath: LPCWSTR, pszUsername: LPCWSTR, pszComputerName: LPCWSTR, dwFlags: DWORD): WINBOOL {.stdcall.}
-proc WNetAddConnectionA*(lpRemoteName: LPCSTR, lpPassword: LPCSTR, lpLocalName: LPCSTR): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetAddConnectionW*(lpRemoteName: LPCWSTR, lpPassword: LPCWSTR, lpLocalName: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetAddConnection2A*(lpNetResource: LPNETRESOURCEA, lpPassword: LPCSTR, lpUserName: LPCSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetAddConnection2W*(lpNetResource: LPNETRESOURCEW, lpPassword: LPCWSTR, lpUserName: LPCWSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetAddConnection3A*(hwndOwner: HWND, lpNetResource: LPNETRESOURCEA, lpPassword: LPCSTR, lpUserName: LPCSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetAddConnection3W*(hwndOwner: HWND, lpNetResource: LPNETRESOURCEW, lpPassword: LPCWSTR, lpUserName: LPCWSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetCancelConnectionA*(lpName: LPCSTR, fForce: WINBOOL): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetCancelConnectionW*(lpName: LPCWSTR, fForce: WINBOOL): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetCancelConnection2A*(lpName: LPCSTR, dwFlags: DWORD, fForce: WINBOOL): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetCancelConnection2W*(lpName: LPCWSTR, dwFlags: DWORD, fForce: WINBOOL): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetConnectionA*(lpLocalName: LPCSTR, lpRemoteName: LPSTR, lpnLength: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetConnectionW*(lpLocalName: LPCWSTR, lpRemoteName: LPWSTR, lpnLength: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetUseConnectionA*(hwndOwner: HWND, lpNetResource: LPNETRESOURCEA, lpPassword: LPCSTR, lpUserID: LPCSTR, dwFlags: DWORD, lpAccessName: LPSTR, lpBufferSize: LPDWORD, lpResult: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetUseConnectionW*(hwndOwner: HWND, lpNetResource: LPNETRESOURCEW, lpPassword: LPCWSTR, lpUserID: LPCWSTR, dwFlags: DWORD, lpAccessName: LPWSTR, lpBufferSize: LPDWORD, lpResult: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetConnectionDialog*(hwnd: HWND, dwType: DWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetDisconnectDialog*(hwnd: HWND, dwType: DWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetRestoreSingleConnectionW*(hwndParent: HWND, lpDevice: LPCWSTR, fUseUI: BOOL): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetConnectionDialog1A*(lpConnDlgStruct: LPCONNECTDLGSTRUCTA): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetConnectionDialog1W*(lpConnDlgStruct: LPCONNECTDLGSTRUCTW): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetDisconnectDialog1A*(lpConnDlgStruct: LPDISCDLGSTRUCTA): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetDisconnectDialog1W*(lpConnDlgStruct: LPDISCDLGSTRUCTW): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetOpenEnumA*(dwScope: DWORD, dwType: DWORD, dwUsage: DWORD, lpNetResource: LPNETRESOURCEA, lphEnum: LPHANDLE): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetOpenEnumW*(dwScope: DWORD, dwType: DWORD, dwUsage: DWORD, lpNetResource: LPNETRESOURCEW, lphEnum: LPHANDLE): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetEnumResourceA*(hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetEnumResourceW*(hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+  PFNGETPROFILEPATHA* =
+    proc(pszUsername: LPCSTR, pszBuffer: LPSTR, cbBuffer: UINT): UINT {.stdcall.}
+  PFNGETPROFILEPATHW* =
+    proc(pszUsername: LPCWSTR, pszBuffer: LPWSTR, cbBuffer: UINT): UINT {.stdcall.}
+  PFNRECONCILEPROFILEA* =
+    proc(pszCentralFile: LPCSTR, pszLocalFile: LPCSTR, dwFlags: DWORD): UINT {.stdcall.}
+  PFNRECONCILEPROFILEW* = proc(
+    pszCentralFile: LPCWSTR, pszLocalFile: LPCWSTR, dwFlags: DWORD
+  ): UINT {.stdcall.}
+  PFNPROCESSPOLICIESA* = proc(
+    hwnd: HWND,
+    pszPath: LPCSTR,
+    pszUsername: LPCSTR,
+    pszComputerName: LPCSTR,
+    dwFlags: DWORD,
+  ): WINBOOL {.stdcall.}
+  PFNPROCESSPOLICIESW* = proc(
+    hwnd: HWND,
+    pszPath: LPCWSTR,
+    pszUsername: LPCWSTR,
+    pszComputerName: LPCWSTR,
+    dwFlags: DWORD,
+  ): WINBOOL {.stdcall.}
+
+proc WNetAddConnectionA*(
+  lpRemoteName: LPCSTR, lpPassword: LPCSTR, lpLocalName: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetAddConnectionW*(
+  lpRemoteName: LPCWSTR, lpPassword: LPCWSTR, lpLocalName: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetAddConnection2A*(
+  lpNetResource: LPNETRESOURCEA, lpPassword: LPCSTR, lpUserName: LPCSTR, dwFlags: DWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetAddConnection2W*(
+  lpNetResource: LPNETRESOURCEW,
+  lpPassword: LPCWSTR,
+  lpUserName: LPCWSTR,
+  dwFlags: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetAddConnection3A*(
+  hwndOwner: HWND,
+  lpNetResource: LPNETRESOURCEA,
+  lpPassword: LPCSTR,
+  lpUserName: LPCSTR,
+  dwFlags: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetAddConnection3W*(
+  hwndOwner: HWND,
+  lpNetResource: LPNETRESOURCEW,
+  lpPassword: LPCWSTR,
+  lpUserName: LPCWSTR,
+  dwFlags: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetCancelConnectionA*(
+  lpName: LPCSTR, fForce: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetCancelConnectionW*(
+  lpName: LPCWSTR, fForce: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetCancelConnection2A*(
+  lpName: LPCSTR, dwFlags: DWORD, fForce: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetCancelConnection2W*(
+  lpName: LPCWSTR, dwFlags: DWORD, fForce: WINBOOL
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetConnectionA*(
+  lpLocalName: LPCSTR, lpRemoteName: LPSTR, lpnLength: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetConnectionW*(
+  lpLocalName: LPCWSTR, lpRemoteName: LPWSTR, lpnLength: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetUseConnectionA*(
+  hwndOwner: HWND,
+  lpNetResource: LPNETRESOURCEA,
+  lpPassword: LPCSTR,
+  lpUserID: LPCSTR,
+  dwFlags: DWORD,
+  lpAccessName: LPSTR,
+  lpBufferSize: LPDWORD,
+  lpResult: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetUseConnectionW*(
+  hwndOwner: HWND,
+  lpNetResource: LPNETRESOURCEW,
+  lpPassword: LPCWSTR,
+  lpUserID: LPCWSTR,
+  dwFlags: DWORD,
+  lpAccessName: LPWSTR,
+  lpBufferSize: LPDWORD,
+  lpResult: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetConnectionDialog*(
+  hwnd: HWND, dwType: DWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetDisconnectDialog*(
+  hwnd: HWND, dwType: DWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetRestoreSingleConnectionW*(
+  hwndParent: HWND, lpDevice: LPCWSTR, fUseUI: BOOL
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetConnectionDialog1A*(
+  lpConnDlgStruct: LPCONNECTDLGSTRUCTA
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetConnectionDialog1W*(
+  lpConnDlgStruct: LPCONNECTDLGSTRUCTW
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetDisconnectDialog1A*(
+  lpConnDlgStruct: LPDISCDLGSTRUCTA
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetDisconnectDialog1W*(
+  lpConnDlgStruct: LPDISCDLGSTRUCTW
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetOpenEnumA*(
+  dwScope: DWORD,
+  dwType: DWORD,
+  dwUsage: DWORD,
+  lpNetResource: LPNETRESOURCEA,
+  lphEnum: LPHANDLE,
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetOpenEnumW*(
+  dwScope: DWORD,
+  dwType: DWORD,
+  dwUsage: DWORD,
+  lpNetResource: LPNETRESOURCEW,
+  lphEnum: LPHANDLE,
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetEnumResourceA*(
+  hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetEnumResourceW*(
+  hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
 proc WNetCloseEnum*(hEnum: HANDLE): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetResourceParentA*(lpNetResource: LPNETRESOURCEA, lpBuffer: LPVOID, lpcbBuffer: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetResourceParentW*(lpNetResource: LPNETRESOURCEW, lpBuffer: LPVOID, lpcbBuffer: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetResourceInformationA*(lpNetResource: LPNETRESOURCEA, lpBuffer: LPVOID, lpcbBuffer: LPDWORD, lplpSystem: ptr LPSTR): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetResourceInformationW*(lpNetResource: LPNETRESOURCEW, lpBuffer: LPVOID, lpcbBuffer: LPDWORD, lplpSystem: ptr LPWSTR): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetUniversalNameA*(lpLocalPath: LPCSTR, dwInfoLevel: DWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetUniversalNameW*(lpLocalPath: LPCWSTR, dwInfoLevel: DWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetUserA*(lpName: LPCSTR, lpUserName: LPSTR, lpnLength: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetUserW*(lpName: LPCWSTR, lpUserName: LPWSTR, lpnLength: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetProviderNameA*(dwNetType: DWORD, lpProviderName: LPSTR, lpBufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetProviderNameW*(dwNetType: DWORD, lpProviderName: LPWSTR, lpBufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetNetworkInformationA*(lpProvider: LPCSTR, lpNetInfoStruct: LPNETINFOSTRUCT): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetNetworkInformationW*(lpProvider: LPCWSTR, lpNetInfoStruct: LPNETINFOSTRUCT): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetLastErrorA*(lpError: LPDWORD, lpErrorBuf: LPSTR, nErrorBufSize: DWORD, lpNameBuf: LPSTR, nNameBufSize: DWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc WNetGetLastErrorW*(lpError: LPDWORD, lpErrorBuf: LPWSTR, nErrorBufSize: DWORD, lpNameBuf: LPWSTR, nNameBufSize: DWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc MultinetGetConnectionPerformanceA*(lpNetResource: LPNETRESOURCEA, lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
-proc MultinetGetConnectionPerformanceW*(lpNetResource: LPNETRESOURCEW, lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+proc WNetGetResourceParentA*(
+  lpNetResource: LPNETRESOURCEA, lpBuffer: LPVOID, lpcbBuffer: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetResourceParentW*(
+  lpNetResource: LPNETRESOURCEW, lpBuffer: LPVOID, lpcbBuffer: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetResourceInformationA*(
+  lpNetResource: LPNETRESOURCEA,
+  lpBuffer: LPVOID,
+  lpcbBuffer: LPDWORD,
+  lplpSystem: ptr LPSTR,
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetResourceInformationW*(
+  lpNetResource: LPNETRESOURCEW,
+  lpBuffer: LPVOID,
+  lpcbBuffer: LPDWORD,
+  lplpSystem: ptr LPWSTR,
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetUniversalNameA*(
+  lpLocalPath: LPCSTR, dwInfoLevel: DWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetUniversalNameW*(
+  lpLocalPath: LPCWSTR, dwInfoLevel: DWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetUserA*(
+  lpName: LPCSTR, lpUserName: LPSTR, lpnLength: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetUserW*(
+  lpName: LPCWSTR, lpUserName: LPWSTR, lpnLength: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetProviderNameA*(
+  dwNetType: DWORD, lpProviderName: LPSTR, lpBufferSize: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetProviderNameW*(
+  dwNetType: DWORD, lpProviderName: LPWSTR, lpBufferSize: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetNetworkInformationA*(
+  lpProvider: LPCSTR, lpNetInfoStruct: LPNETINFOSTRUCT
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetNetworkInformationW*(
+  lpProvider: LPCWSTR, lpNetInfoStruct: LPNETINFOSTRUCT
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetLastErrorA*(
+  lpError: LPDWORD,
+  lpErrorBuf: LPSTR,
+  nErrorBufSize: DWORD,
+  lpNameBuf: LPSTR,
+  nNameBufSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc WNetGetLastErrorW*(
+  lpError: LPDWORD,
+  lpErrorBuf: LPWSTR,
+  nErrorBufSize: DWORD,
+  lpNameBuf: LPWSTR,
+  nNameBufSize: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc MultinetGetConnectionPerformanceA*(
+  lpNetResource: LPNETRESOURCEA, lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
+proc MultinetGetConnectionPerformanceW*(
+  lpNetResource: LPNETRESOURCEW, lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT
+): DWORD {.winapi, stdcall, dynlib: "mpr", importc.}
+
 when winimUnicode:
   type
     NETRESOURCE* = NETRESOURCEW
@@ -336,25 +538,110 @@
     PFNGETPROFILEPATH* = PFNGETPROFILEPATHW
     PFNRECONCILEPROFILE* = PFNRECONCILEPROFILEW
     PFNPROCESSPOLICIES* = PFNPROCESSPOLICIESW
-  proc WNetAddConnection*(lpRemoteName: LPCWSTR, lpPassword: LPCWSTR, lpLocalName: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetAddConnectionW".}
-  proc WNetAddConnection2*(lpNetResource: LPNETRESOURCEW, lpPassword: LPCWSTR, lpUserName: LPCWSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetAddConnection2W".}
-  proc WNetAddConnection3*(hwndOwner: HWND, lpNetResource: LPNETRESOURCEW, lpPassword: LPCWSTR, lpUserName: LPCWSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetAddConnection3W".}
-  proc WNetCancelConnection*(lpName: LPCWSTR, fForce: WINBOOL): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetCancelConnectionW".}
-  proc WNetCancelConnection2*(lpName: LPCWSTR, dwFlags: DWORD, fForce: WINBOOL): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetCancelConnection2W".}
-  proc WNetGetConnection*(lpLocalName: LPCWSTR, lpRemoteName: LPWSTR, lpnLength: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetConnectionW".}
-  proc WNetUseConnection*(hwndOwner: HWND, lpNetResource: LPNETRESOURCEW, lpPassword: LPCWSTR, lpUserID: LPCWSTR, dwFlags: DWORD, lpAccessName: LPWSTR, lpBufferSize: LPDWORD, lpResult: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetUseConnectionW".}
-  proc WNetConnectionDialog1*(lpConnDlgStruct: LPCONNECTDLGSTRUCTW): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1W".}
-  proc WNetDisconnectDialog1*(lpConnDlgStruct: LPDISCDLGSTRUCTW): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetDisconnectDialog1W".}
-  proc WNetOpenEnum*(dwScope: DWORD, dwType: DWORD, dwUsage: DWORD, lpNetResource: LPNETRESOURCEW, lphEnum: LPHANDLE): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetOpenEnumW".}
-  proc WNetEnumResource*(hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetEnumResourceW".}
-  proc WNetGetResourceParent*(lpNetResource: LPNETRESOURCEW, lpBuffer: LPVOID, lpcbBuffer: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetResourceParentW".}
-  proc WNetGetResourceInformation*(lpNetResource: LPNETRESOURCEW, lpBuffer: LPVOID, lpcbBuffer: LPDWORD, lplpSystem: ptr LPWSTR): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetResourceInformationW".}
-  proc WNetGetUniversalName*(lpLocalPath: LPCWSTR, dwInfoLevel: DWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameW".}
-  proc WNetGetUser*(lpName: LPCWSTR, lpUserName: LPWSTR, lpnLength: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetUserW".}
-  proc WNetGetProviderName*(dwNetType: DWORD, lpProviderName: LPWSTR, lpBufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetProviderNameW".}
-  proc WNetGetNetworkInformation*(lpProvider: LPCWSTR, lpNetInfoStruct: LPNETINFOSTRUCT): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationW".}
-  proc WNetGetLastError*(lpError: LPDWORD, lpErrorBuf: LPWSTR, nErrorBufSize: DWORD, lpNameBuf: LPWSTR, nNameBufSize: DWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetLastErrorW".}
-  proc MultinetGetConnectionPerformance*(lpNetResource: LPNETRESOURCEW, lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "MultinetGetConnectionPerformanceW".}
+
+  proc WNetAddConnection*(
+    lpRemoteName: LPCWSTR, lpPassword: LPCWSTR, lpLocalName: LPCWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetAddConnectionW".}
+
+  proc WNetAddConnection2*(
+    lpNetResource: LPNETRESOURCEW,
+    lpPassword: LPCWSTR,
+    lpUserName: LPCWSTR,
+    dwFlags: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetAddConnection2W".}
+
+  proc WNetAddConnection3*(
+    hwndOwner: HWND,
+    lpNetResource: LPNETRESOURCEW,
+    lpPassword: LPCWSTR,
+    lpUserName: LPCWSTR,
+    dwFlags: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetAddConnection3W".}
+
+  proc WNetCancelConnection*(
+    lpName: LPCWSTR, fForce: WINBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetCancelConnectionW".}
+
+  proc WNetCancelConnection2*(
+    lpName: LPCWSTR, dwFlags: DWORD, fForce: WINBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetCancelConnection2W".}
+
+  proc WNetGetConnection*(
+    lpLocalName: LPCWSTR, lpRemoteName: LPWSTR, lpnLength: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetConnectionW".}
+
+  proc WNetUseConnection*(
+    hwndOwner: HWND,
+    lpNetResource: LPNETRESOURCEW,
+    lpPassword: LPCWSTR,
+    lpUserID: LPCWSTR,
+    dwFlags: DWORD,
+    lpAccessName: LPWSTR,
+    lpBufferSize: LPDWORD,
+    lpResult: LPDWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetUseConnectionW".}
+
+  proc WNetConnectionDialog1*(
+    lpConnDlgStruct: LPCONNECTDLGSTRUCTW
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1W".}
+
+  proc WNetDisconnectDialog1*(
+    lpConnDlgStruct: LPDISCDLGSTRUCTW
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetDisconnectDialog1W".}
+
+  proc WNetOpenEnum*(
+    dwScope: DWORD,
+    dwType: DWORD,
+    dwUsage: DWORD,
+    lpNetResource: LPNETRESOURCEW,
+    lphEnum: LPHANDLE,
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetOpenEnumW".}
+
+  proc WNetEnumResource*(
+    hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetEnumResourceW".}
+
+  proc WNetGetResourceParent*(
+    lpNetResource: LPNETRESOURCEW, lpBuffer: LPVOID, lpcbBuffer: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetResourceParentW".}
+
+  proc WNetGetResourceInformation*(
+    lpNetResource: LPNETRESOURCEW,
+    lpBuffer: LPVOID,
+    lpcbBuffer: LPDWORD,
+    lplpSystem: ptr LPWSTR,
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetResourceInformationW".}
+
+  proc WNetGetUniversalName*(
+    lpLocalPath: LPCWSTR, dwInfoLevel: DWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameW".}
+
+  proc WNetGetUser*(
+    lpName: LPCWSTR, lpUserName: LPWSTR, lpnLength: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetUserW".}
+
+  proc WNetGetProviderName*(
+    dwNetType: DWORD, lpProviderName: LPWSTR, lpBufferSize: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetProviderNameW".}
+
+  proc WNetGetNetworkInformation*(
+    lpProvider: LPCWSTR, lpNetInfoStruct: LPNETINFOSTRUCT
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationW".}
+
+  proc WNetGetLastError*(
+    lpError: LPDWORD,
+    lpErrorBuf: LPWSTR,
+    nErrorBufSize: DWORD,
+    lpNameBuf: LPWSTR,
+    nNameBufSize: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetLastErrorW".}
+
+  proc MultinetGetConnectionPerformance*(
+    lpNetResource: LPNETRESOURCEW, lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT
+  ): DWORD {.
+    winapi, stdcall, dynlib: "mpr", importc: "MultinetGetConnectionPerformanceW"
+  .}
+
 when winimAnsi:
   type
     NETRESOURCE* = NETRESOURCEA
@@ -370,22 +657,106 @@
     PFNGETPROFILEPATH* = PFNGETPROFILEPATHA
     PFNRECONCILEPROFILE* = PFNRECONCILEPROFILEA
     PFNPROCESSPOLICIES* = PFNPROCESSPOLICIESA
-  proc WNetAddConnection*(lpRemoteName: LPCSTR, lpPassword: LPCSTR, lpLocalName: LPCSTR): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetAddConnectionA".}
-  proc WNetAddConnection2*(lpNetResource: LPNETRESOURCEA, lpPassword: LPCSTR, lpUserName: LPCSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetAddConnection2A".}
-  proc WNetAddConnection3*(hwndOwner: HWND, lpNetResource: LPNETRESOURCEA, lpPassword: LPCSTR, lpUserName: LPCSTR, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetAddConnection3A".}
-  proc WNetCancelConnection*(lpName: LPCSTR, fForce: WINBOOL): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetCancelConnectionA".}
-  proc WNetCancelConnection2*(lpName: LPCSTR, dwFlags: DWORD, fForce: WINBOOL): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetCancelConnection2A".}
-  proc WNetGetConnection*(lpLocalName: LPCSTR, lpRemoteName: LPSTR, lpnLength: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetConnectionA".}
-  proc WNetUseConnection*(hwndOwner: HWND, lpNetResource: LPNETRESOURCEA, lpPassword: LPCSTR, lpUserID: LPCSTR, dwFlags: DWORD, lpAccessName: LPSTR, lpBufferSize: LPDWORD, lpResult: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetUseConnectionA".}
-  proc WNetConnectionDialog1*(lpConnDlgStruct: LPCONNECTDLGSTRUCTA): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1A".}
-  proc WNetDisconnectDialog1*(lpConnDlgStruct: LPDISCDLGSTRUCTA): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetDisconnectDialog1A".}
-  proc WNetOpenEnum*(dwScope: DWORD, dwType: DWORD, dwUsage: DWORD, lpNetResource: LPNETRESOURCEA, lphEnum: LPHANDLE): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetOpenEnumA".}
-  proc WNetEnumResource*(hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetEnumResourceA".}
-  proc WNetGetResourceParent*(lpNetResource: LPNETRESOURCEA, lpBuffer: LPVOID, lpcbBuffer: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetResourceParentA".}
-  proc WNetGetResourceInformation*(lpNetResource: LPNETRESOURCEA, lpBuffer: LPVOID, lpcbBuffer: LPDWORD, lplpSystem: ptr LPSTR): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetResourceInformationA".}
-  proc WNetGetUniversalName*(lpLocalPath: LPCSTR, dwInfoLevel: DWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameA".}
-  proc WNetGetUser*(lpName: LPCSTR, lpUserName: LPSTR, lpnLength: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetUserA".}
-  proc WNetGetProviderName*(dwNetType: DWORD, lpProviderName: LPSTR, lpBufferSize: LPDWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetProviderNameA".}
-  proc WNetGetNetworkInformation*(lpProvider: LPCSTR, lpNetInfoStruct: LPNETINFOSTRUCT): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationA".}
-  proc WNetGetLastError*(lpError: LPDWORD, lpErrorBuf: LPSTR, nErrorBufSize: DWORD, lpNameBuf: LPSTR, nNameBufSize: DWORD): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetLastErrorA".}
-  proc MultinetGetConnectionPerformance*(lpNetResource: LPNETRESOURCEA, lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "MultinetGetConnectionPerformanceA".}
+
+  proc WNetAddConnection*(
+    lpRemoteName: LPCSTR, lpPassword: LPCSTR, lpLocalName: LPCSTR
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetAddConnectionA".}
+
+  proc WNetAddConnection2*(
+    lpNetResource: LPNETRESOURCEA,
+    lpPassword: LPCSTR,
+    lpUserName: LPCSTR,
+    dwFlags: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetAddConnection2A".}
+
+  proc WNetAddConnection3*(
+    hwndOwner: HWND,
+    lpNetResource: LPNETRESOURCEA,
+    lpPassword: LPCSTR,
+    lpUserName: LPCSTR,
+    dwFlags: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetAddConnection3A".}
+
+  proc WNetCancelConnection*(
+    lpName: LPCSTR, fForce: WINBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetCancelConnectionA".}
+
+  proc WNetCancelConnection2*(
+    lpName: LPCSTR, dwFlags: DWORD, fForce: WINBOOL
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetCancelConnection2A".}
+
+  proc WNetGetConnection*(
+    lpLocalName: LPCSTR, lpRemoteName: LPSTR, lpnLength: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetConnectionA".}
+
+  proc WNetUseConnection*(
+    hwndOwner: HWND,
+    lpNetResource: LPNETRESOURCEA,
+    lpPassword: LPCSTR,
+    lpUserID: LPCSTR,
+    dwFlags: DWORD,
+    lpAccessName: LPSTR,
+    lpBufferSize: LPDWORD,
+    lpResult: LPDWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetUseConnectionA".}
+
+  proc WNetConnectionDialog1*(
+    lpConnDlgStruct: LPCONNECTDLGSTRUCTA
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1A".}
+
+  proc WNetDisconnectDialog1*(
+    lpConnDlgStruct: LPDISCDLGSTRUCTA
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetDisconnectDialog1A".}
+
+  proc WNetOpenEnum*(
+    dwScope: DWORD,
+    dwType: DWORD,
+    dwUsage: DWORD,
+    lpNetResource: LPNETRESOURCEA,
+    lphEnum: LPHANDLE,
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetOpenEnumA".}
+
+  proc WNetEnumResource*(
+    hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetEnumResourceA".}
+
+  proc WNetGetResourceParent*(
+    lpNetResource: LPNETRESOURCEA, lpBuffer: LPVOID, lpcbBuffer: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetResourceParentA".}
+
+  proc WNetGetResourceInformation*(
+    lpNetResource: LPNETRESOURCEA,
+    lpBuffer: LPVOID,
+    lpcbBuffer: LPDWORD,
+    lplpSystem: ptr LPSTR,
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetResourceInformationA".}
+
+  proc WNetGetUniversalName*(
+    lpLocalPath: LPCSTR, dwInfoLevel: DWORD, lpBuffer: LPVOID, lpBufferSize: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameA".}
+
+  proc WNetGetUser*(
+    lpName: LPCSTR, lpUserName: LPSTR, lpnLength: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetUserA".}
+
+  proc WNetGetProviderName*(
+    dwNetType: DWORD, lpProviderName: LPSTR, lpBufferSize: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetProviderNameA".}
+
+  proc WNetGetNetworkInformation*(
+    lpProvider: LPCSTR, lpNetInfoStruct: LPNETINFOSTRUCT
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationA".}
+
+  proc WNetGetLastError*(
+    lpError: LPDWORD,
+    lpErrorBuf: LPSTR,
+    nErrorBufSize: DWORD,
+    lpNameBuf: LPSTR,
+    nNameBufSize: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "mpr", importc: "WNetGetLastErrorA".}
+
+  proc MultinetGetConnectionPerformance*(
+    lpNetResource: LPNETRESOURCEA, lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT
+  ): DWORD {.
+    winapi, stdcall, dynlib: "mpr", importc: "MultinetGetConnectionPerformanceA"
+  .}
--- a/semicongine/thirdparty/winim/winim/inc/winnls.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winnls.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -23,6 +23,7 @@
   GEOID* = LONG
   GEOTYPE* = DWORD
   GEOCLASS* = DWORD
+
 const
   MAX_DEFAULTCHAR* = 2
   MAX_LEADBYTES* = 12
@@ -31,6 +32,7 @@
     MaxCharSize*: UINT
     DefaultChar*: array[MAX_DEFAULTCHAR, BYTE]
     LeadByte*: array[MAX_LEADBYTES, BYTE]
+
   LPCPINFO* = ptr CPINFO
   CPINFOEXA* {.pure.} = object
     MaxCharSize*: UINT
@@ -39,6 +41,7 @@
     UnicodeDefaultChar*: WCHAR
     CodePage*: UINT
     CodePageName*: array[MAX_PATH, CHAR]
+
   LPCPINFOEXA* = ptr CPINFOEXA
   CPINFOEXW* {.pure.} = object
     MaxCharSize*: UINT
@@ -47,6 +50,7 @@
     UnicodeDefaultChar*: WCHAR
     CodePage*: UINT
     CodePageName*: array[MAX_PATH, WCHAR]
+
   LPCPINFOEXW* = ptr CPINFOEXW
   NUMBERFMTA* {.pure.} = object
     NumDigits*: UINT
@@ -55,6 +59,7 @@
     lpDecimalSep*: LPSTR
     lpThousandSep*: LPSTR
     NegativeOrder*: UINT
+
   LPNUMBERFMTA* = ptr NUMBERFMTA
   NUMBERFMTW* {.pure.} = object
     NumDigits*: UINT
@@ -63,6 +68,7 @@
     lpDecimalSep*: LPWSTR
     lpThousandSep*: LPWSTR
     NegativeOrder*: UINT
+
   LPNUMBERFMTW* = ptr NUMBERFMTW
   CURRENCYFMTA* {.pure.} = object
     NumDigits*: UINT
@@ -73,6 +79,7 @@
     NegativeOrder*: UINT
     PositiveOrder*: UINT
     lpCurrencySymbol*: LPSTR
+
   LPCURRENCYFMTA* = ptr CURRENCYFMTA
   CURRENCYFMTW* {.pure.} = object
     NumDigits*: UINT
@@ -83,6 +90,7 @@
     NegativeOrder*: UINT
     PositiveOrder*: UINT
     lpCurrencySymbol*: LPWSTR
+
   LPCURRENCYFMTW* = ptr CURRENCYFMTW
   NLSVERSIONINFO* {.pure.} = object
     dwNLSVersionInfoSize*: DWORD
@@ -90,6 +98,7 @@
     dwDefinedVersion*: DWORD
     dwEffectiveId*: DWORD
     guidCustomVersion*: GUID
+
   LPNLSVERSIONINFO* = ptr NLSVERSIONINFO
   NLSVERSIONINFOEX* {.pure.} = object
     dwNLSVersionInfoSize*: DWORD
@@ -97,6 +106,7 @@
     dwDefinedVersion*: DWORD
     dwEffectiveId*: DWORD
     guidCustomVersion*: GUID
+
   LPNLSVERSIONINFOEX* = ptr NLSVERSIONINFOEX
   FILEMUIINFO* {.pure.} = object
     dwSize*: DWORD
@@ -112,7 +122,9 @@
     dwTypeIDMUIOffset*: DWORD
     dwTypeNameMUIOffset*: DWORD
     abBuffer*: array[8, BYTE]
+
   PFILEMUIINFO* = ptr FILEMUIINFO
+
 const
   HIGH_SURROGATE_START* = 0xd800
   HIGH_SURROGATE_END* = 0xdbff
@@ -661,159 +673,783 @@
   LOCALE_NAME_INVARIANT* = ""
   LOCALE_NAME_SYSTEM_DEFAULT* = "!x-sys-default-locale"
 type
-  LANGUAGEGROUP_ENUMPROCA* = proc (P1: LGRPID, P2: LPSTR, P3: LPSTR, P4: DWORD, P5: LONG_PTR): WINBOOL {.stdcall.}
-  LANGGROUPLOCALE_ENUMPROCA* = proc (P1: LGRPID, P2: LCID, P3: LPSTR, P4: LONG_PTR): WINBOOL {.stdcall.}
-  UILANGUAGE_ENUMPROCA* = proc (P1: LPSTR, P2: LONG_PTR): WINBOOL {.stdcall.}
-  CODEPAGE_ENUMPROCA* = proc (P1: LPSTR): WINBOOL {.stdcall.}
-  DATEFMT_ENUMPROCA* = proc (P1: LPSTR): WINBOOL {.stdcall.}
-  DATEFMT_ENUMPROCEXA* = proc (P1: LPSTR, P2: CALID): WINBOOL {.stdcall.}
-  TIMEFMT_ENUMPROCA* = proc (P1: LPSTR): WINBOOL {.stdcall.}
-  CALINFO_ENUMPROCA* = proc (P1: LPSTR): WINBOOL {.stdcall.}
-  CALINFO_ENUMPROCEXA* = proc (P1: LPSTR, P2: CALID): WINBOOL {.stdcall.}
-  LOCALE_ENUMPROCA* = proc (P1: LPSTR): WINBOOL {.stdcall.}
-  LOCALE_ENUMPROCW* = proc (P1: LPWSTR): WINBOOL {.stdcall.}
-  LANGUAGEGROUP_ENUMPROCW* = proc (P1: LGRPID, P2: LPWSTR, P3: LPWSTR, P4: DWORD, P5: LONG_PTR): WINBOOL {.stdcall.}
-  LANGGROUPLOCALE_ENUMPROCW* = proc (P1: LGRPID, P2: LCID, P3: LPWSTR, P4: LONG_PTR): WINBOOL {.stdcall.}
-  UILANGUAGE_ENUMPROCW* = proc (P1: LPWSTR, P2: LONG_PTR): WINBOOL {.stdcall.}
-  CODEPAGE_ENUMPROCW* = proc (P1: LPWSTR): WINBOOL {.stdcall.}
-  DATEFMT_ENUMPROCW* = proc (P1: LPWSTR): WINBOOL {.stdcall.}
-  DATEFMT_ENUMPROCEXW* = proc (P1: LPWSTR, P2: CALID): WINBOOL {.stdcall.}
-  TIMEFMT_ENUMPROCW* = proc (P1: LPWSTR): WINBOOL {.stdcall.}
-  CALINFO_ENUMPROCW* = proc (P1: LPWSTR): WINBOOL {.stdcall.}
-  CALINFO_ENUMPROCEXW* = proc (P1: LPWSTR, P2: CALID): WINBOOL {.stdcall.}
-  GEO_ENUMPROC* = proc (P1: GEOID): WINBOOL {.stdcall.}
-  CALINFO_ENUMPROCEXEX* = proc (P1: LPWSTR, P2: CALID, P3: LPWSTR, P4: LPARAM): WINBOOL {.stdcall.}
-  DATEFMT_ENUMPROCEXEX* = proc (P1: LPWSTR, P2: CALID, P3: LPARAM): WINBOOL {.stdcall.}
-  TIMEFMT_ENUMPROCEX* = proc (P1: LPWSTR, P2: LPARAM): WINBOOL {.stdcall.}
-  LOCALE_ENUMPROCEX* = proc (P1: LPWSTR, P2: DWORD, P3: LPARAM): WINBOOL {.stdcall.}
-proc GetTimeFormatEx*(lpLocaleName: LPCWSTR, dwFlags: DWORD, lpTime: ptr SYSTEMTIME, lpFormat: LPCWSTR, lpTimeStr: LPWSTR, cchTime: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDateFormatEx*(lpLocaleName: LPCWSTR, dwFlags: DWORD, lpDate: ptr SYSTEMTIME, lpFormat: LPCWSTR, lpDateStr: LPWSTR, cchDate: int32, lpCalendar: LPCWSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDateFormatA*(Locale: LCID, dwFlags: DWORD, lpDate: ptr SYSTEMTIME, lpFormat: LPCSTR, lpDateStr: LPSTR, cchDate: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDateFormatW*(Locale: LCID, dwFlags: DWORD, lpDate: ptr SYSTEMTIME, lpFormat: LPCWSTR, lpDateStr: LPWSTR, cchDate: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetTimeFormatA*(Locale: LCID, dwFlags: DWORD, lpTime: ptr SYSTEMTIME, lpFormat: LPCSTR, lpTimeStr: LPSTR, cchTime: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetTimeFormatW*(Locale: LCID, dwFlags: DWORD, lpTime: ptr SYSTEMTIME, lpFormat: LPCWSTR, lpTimeStr: LPWSTR, cchTime: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CompareStringW*(Locale: LCID, dwCmpFlags: DWORD, lpString1: PCNZWCH, cchCount1: int32, lpString2: PCNZWCH, cchCount2: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FoldStringW*(dwMapFlags: DWORD, lpSrcStr: LPCWCH, cchSrc: int32, lpDestStr: LPWSTR, cchDest: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetStringTypeExW*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCWCH, cchSrc: int32, lpCharType: LPWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CompareStringEx*(lpLocaleName: LPCWSTR, dwCmpFlags: DWORD, lpString1: LPCWCH, cchCount1: int32, lpString2: LPCWCH, cchCount2: int32, lpVersionInformation: LPNLSVERSIONINFO, lpReserved: LPVOID, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CompareStringOrdinal*(lpString1: LPCWCH, cchCount1: int32, lpString2: LPCWCH, cchCount2: int32, bIgnoreCase: WINBOOL): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetStringTypeW*(dwInfoType: DWORD, lpSrcStr: LPCWCH, cchSrc: int32, lpCharType: LPWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MultiByteToWideChar*(CodePage: UINT, dwFlags: DWORD, lpMultiByteStr: LPCCH, cbMultiByte: int32, lpWideCharStr: LPWSTR, cchWideChar: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WideCharToMultiByte*(CodePage: UINT, dwFlags: DWORD, lpWideCharStr: LPCWCH, cchWideChar: int32, lpMultiByteStr: LPSTR, cbMultiByte: int32, lpDefaultChar: LPCCH, lpUsedDefaultChar: LPBOOL): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsValidCodePage*(CodePage: UINT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+  LANGUAGEGROUP_ENUMPROCA* =
+    proc(P1: LGRPID, P2: LPSTR, P3: LPSTR, P4: DWORD, P5: LONG_PTR): WINBOOL {.stdcall.}
+  LANGGROUPLOCALE_ENUMPROCA* =
+    proc(P1: LGRPID, P2: LCID, P3: LPSTR, P4: LONG_PTR): WINBOOL {.stdcall.}
+  UILANGUAGE_ENUMPROCA* = proc(P1: LPSTR, P2: LONG_PTR): WINBOOL {.stdcall.}
+  CODEPAGE_ENUMPROCA* = proc(P1: LPSTR): WINBOOL {.stdcall.}
+  DATEFMT_ENUMPROCA* = proc(P1: LPSTR): WINBOOL {.stdcall.}
+  DATEFMT_ENUMPROCEXA* = proc(P1: LPSTR, P2: CALID): WINBOOL {.stdcall.}
+  TIMEFMT_ENUMPROCA* = proc(P1: LPSTR): WINBOOL {.stdcall.}
+  CALINFO_ENUMPROCA* = proc(P1: LPSTR): WINBOOL {.stdcall.}
+  CALINFO_ENUMPROCEXA* = proc(P1: LPSTR, P2: CALID): WINBOOL {.stdcall.}
+  LOCALE_ENUMPROCA* = proc(P1: LPSTR): WINBOOL {.stdcall.}
+  LOCALE_ENUMPROCW* = proc(P1: LPWSTR): WINBOOL {.stdcall.}
+  LANGUAGEGROUP_ENUMPROCW* = proc(
+    P1: LGRPID, P2: LPWSTR, P3: LPWSTR, P4: DWORD, P5: LONG_PTR
+  ): WINBOOL {.stdcall.}
+  LANGGROUPLOCALE_ENUMPROCW* =
+    proc(P1: LGRPID, P2: LCID, P3: LPWSTR, P4: LONG_PTR): WINBOOL {.stdcall.}
+  UILANGUAGE_ENUMPROCW* = proc(P1: LPWSTR, P2: LONG_PTR): WINBOOL {.stdcall.}
+  CODEPAGE_ENUMPROCW* = proc(P1: LPWSTR): WINBOOL {.stdcall.}
+  DATEFMT_ENUMPROCW* = proc(P1: LPWSTR): WINBOOL {.stdcall.}
+  DATEFMT_ENUMPROCEXW* = proc(P1: LPWSTR, P2: CALID): WINBOOL {.stdcall.}
+  TIMEFMT_ENUMPROCW* = proc(P1: LPWSTR): WINBOOL {.stdcall.}
+  CALINFO_ENUMPROCW* = proc(P1: LPWSTR): WINBOOL {.stdcall.}
+  CALINFO_ENUMPROCEXW* = proc(P1: LPWSTR, P2: CALID): WINBOOL {.stdcall.}
+  GEO_ENUMPROC* = proc(P1: GEOID): WINBOOL {.stdcall.}
+  CALINFO_ENUMPROCEXEX* =
+    proc(P1: LPWSTR, P2: CALID, P3: LPWSTR, P4: LPARAM): WINBOOL {.stdcall.}
+  DATEFMT_ENUMPROCEXEX* = proc(P1: LPWSTR, P2: CALID, P3: LPARAM): WINBOOL {.stdcall.}
+  TIMEFMT_ENUMPROCEX* = proc(P1: LPWSTR, P2: LPARAM): WINBOOL {.stdcall.}
+  LOCALE_ENUMPROCEX* = proc(P1: LPWSTR, P2: DWORD, P3: LPARAM): WINBOOL {.stdcall.}
+
+proc GetTimeFormatEx*(
+  lpLocaleName: LPCWSTR,
+  dwFlags: DWORD,
+  lpTime: ptr SYSTEMTIME,
+  lpFormat: LPCWSTR,
+  lpTimeStr: LPWSTR,
+  cchTime: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDateFormatEx*(
+  lpLocaleName: LPCWSTR,
+  dwFlags: DWORD,
+  lpDate: ptr SYSTEMTIME,
+  lpFormat: LPCWSTR,
+  lpDateStr: LPWSTR,
+  cchDate: int32,
+  lpCalendar: LPCWSTR,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDateFormatA*(
+  Locale: LCID,
+  dwFlags: DWORD,
+  lpDate: ptr SYSTEMTIME,
+  lpFormat: LPCSTR,
+  lpDateStr: LPSTR,
+  cchDate: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDateFormatW*(
+  Locale: LCID,
+  dwFlags: DWORD,
+  lpDate: ptr SYSTEMTIME,
+  lpFormat: LPCWSTR,
+  lpDateStr: LPWSTR,
+  cchDate: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetTimeFormatA*(
+  Locale: LCID,
+  dwFlags: DWORD,
+  lpTime: ptr SYSTEMTIME,
+  lpFormat: LPCSTR,
+  lpTimeStr: LPSTR,
+  cchTime: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetTimeFormatW*(
+  Locale: LCID,
+  dwFlags: DWORD,
+  lpTime: ptr SYSTEMTIME,
+  lpFormat: LPCWSTR,
+  lpTimeStr: LPWSTR,
+  cchTime: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CompareStringW*(
+  Locale: LCID,
+  dwCmpFlags: DWORD,
+  lpString1: PCNZWCH,
+  cchCount1: int32,
+  lpString2: PCNZWCH,
+  cchCount2: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FoldStringW*(
+  dwMapFlags: DWORD, lpSrcStr: LPCWCH, cchSrc: int32, lpDestStr: LPWSTR, cchDest: int32
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetStringTypeExW*(
+  Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCWCH, cchSrc: int32, lpCharType: LPWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CompareStringEx*(
+  lpLocaleName: LPCWSTR,
+  dwCmpFlags: DWORD,
+  lpString1: LPCWCH,
+  cchCount1: int32,
+  lpString2: LPCWCH,
+  cchCount2: int32,
+  lpVersionInformation: LPNLSVERSIONINFO,
+  lpReserved: LPVOID,
+  lParam: LPARAM,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc CompareStringOrdinal*(
+  lpString1: LPCWCH,
+  cchCount1: int32,
+  lpString2: LPCWCH,
+  cchCount2: int32,
+  bIgnoreCase: WINBOOL,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetStringTypeW*(
+  dwInfoType: DWORD, lpSrcStr: LPCWCH, cchSrc: int32, lpCharType: LPWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc MultiByteToWideChar*(
+  CodePage: UINT,
+  dwFlags: DWORD,
+  lpMultiByteStr: LPCCH,
+  cbMultiByte: int32,
+  lpWideCharStr: LPWSTR,
+  cchWideChar: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WideCharToMultiByte*(
+  CodePage: UINT,
+  dwFlags: DWORD,
+  lpWideCharStr: LPCWCH,
+  cchWideChar: int32,
+  lpMultiByteStr: LPSTR,
+  cbMultiByte: int32,
+  lpDefaultChar: LPCCH,
+  lpUsedDefaultChar: LPBOOL,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsValidCodePage*(
+  CodePage: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetACP*(): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc GetOEMCP*(): UINT {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc CompareStringA*(Locale: LCID, dwCmpFlags: DWORD, lpString1: PCNZCH, cchCount1: int32, lpString2: PCNZCH, cchCount2: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LCMapStringW*(Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCWSTR, cchSrc: int32, lpDestStr: LPWSTR, cchDest: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LCMapStringA*(Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCSTR, cchSrc: int32, lpDestStr: LPSTR, cchDest: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetLocaleInfoW*(Locale: LCID, LCType: LCTYPE, lpLCData: LPWSTR, cchData: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetLocaleInfoA*(Locale: LCID, LCType: LCTYPE, lpLCData: LPSTR, cchData: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsDBCSLeadByte*(TestChar: BYTE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsDBCSLeadByteEx*(CodePage: UINT, TestChar: BYTE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumberFormatA*(Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR, lpFormat: ptr NUMBERFMTA, lpNumberStr: LPSTR, cchNumber: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumberFormatW*(Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR, lpFormat: ptr NUMBERFMTW, lpNumberStr: LPWSTR, cchNumber: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCurrencyFormatA*(Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR, lpFormat: ptr CURRENCYFMTA, lpCurrencyStr: LPSTR, cchCurrency: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCurrencyFormatW*(Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR, lpFormat: ptr CURRENCYFMTW, lpCurrencyStr: LPWSTR, cchCurrency: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumCalendarInfoA*(lpCalInfoEnumProc: CALINFO_ENUMPROCA, Locale: LCID, Calendar: CALID, CalType: CALTYPE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumCalendarInfoW*(lpCalInfoEnumProc: CALINFO_ENUMPROCW, Locale: LCID, Calendar: CALID, CalType: CALTYPE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumCalendarInfoExA*(lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXA, Locale: LCID, Calendar: CALID, CalType: CALTYPE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumCalendarInfoExW*(lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXW, Locale: LCID, Calendar: CALID, CalType: CALTYPE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumTimeFormatsA*(lpTimeFmtEnumProc: TIMEFMT_ENUMPROCA, Locale: LCID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumTimeFormatsW*(lpTimeFmtEnumProc: TIMEFMT_ENUMPROCW, Locale: LCID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumDateFormatsA*(lpDateFmtEnumProc: DATEFMT_ENUMPROCA, Locale: LCID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumDateFormatsW*(lpDateFmtEnumProc: DATEFMT_ENUMPROCW, Locale: LCID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumDateFormatsExA*(lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXA, Locale: LCID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumDateFormatsExW*(lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXW, Locale: LCID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsValidLanguageGroup*(LanguageGroup: LGRPID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNLSVersion*(Function: NLS_FUNCTION, Locale: LCID, lpVersionInformation: LPNLSVERSIONINFO): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsNLSDefinedString*(Function: NLS_FUNCTION, dwFlags: DWORD, lpVersionInformation: LPNLSVERSIONINFO, lpString: LPCWSTR, cchStr: INT): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsValidLocale*(Locale: LCID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetLocaleInfoA*(Locale: LCID, LCType: LCTYPE, lpLCData: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetLocaleInfoW*(Locale: LCID, LCType: LCTYPE, lpLCData: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCalendarInfoA*(Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPSTR, cchData: int32, lpValue: LPDWORD): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCalendarInfoW*(Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPWSTR, cchData: int32, lpValue: LPDWORD): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetCalendarInfoA*(Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetCalendarInfoW*(Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDurationFormat*(Locale: LCID, dwFlags: DWORD, lpDuration: ptr SYSTEMTIME, ullDuration: ULONGLONG, lpFormat: LPCWSTR, lpDurationStr: LPWSTR, cchDuration: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindNLSString*(Locale: LCID, dwFindNLSStringFlags: DWORD, lpStringSource: LPCWSTR, cchSource: int32, lpStringValue: LPCWSTR, cchValue: int32, pcchFound: LPINT): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetGeoInfoA*(Location: GEOID, GeoType: GEOTYPE, lpGeoData: LPSTR, cchData: int32, LangId: LANGID): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetGeoInfoW*(Location: GEOID, GeoType: GEOTYPE, lpGeoData: LPWSTR, cchData: int32, LangId: LANGID): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumSystemGeoID*(GeoClass: GEOCLASS, ParentGeoId: GEOID, lpGeoEnumProc: GEO_ENUMPROC): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetUserGeoID*(GeoClass: GEOCLASS): GEOID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCPInfo*(CodePage: UINT, lpCPInfo: LPCPINFO): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCPInfoExA*(CodePage: UINT, dwFlags: DWORD, lpCPInfoEx: LPCPINFOEXA): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCPInfoExW*(CodePage: UINT, dwFlags: DWORD, lpCPInfoEx: LPCPINFOEXW): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LCIDToLocaleName*(Locale: LCID, lpName: LPWSTR, cchName: int32, dwFlags: DWORD): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LocaleNameToLCID*(lpName: LPCWSTR, dwFlags: DWORD): LCID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetUserGeoID*(GeoId: GEOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ConvertDefaultLocale*(Locale: LCID): LCID {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc CompareStringA*(
+  Locale: LCID,
+  dwCmpFlags: DWORD,
+  lpString1: PCNZCH,
+  cchCount1: int32,
+  lpString2: PCNZCH,
+  cchCount2: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LCMapStringW*(
+  Locale: LCID,
+  dwMapFlags: DWORD,
+  lpSrcStr: LPCWSTR,
+  cchSrc: int32,
+  lpDestStr: LPWSTR,
+  cchDest: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LCMapStringA*(
+  Locale: LCID,
+  dwMapFlags: DWORD,
+  lpSrcStr: LPCSTR,
+  cchSrc: int32,
+  lpDestStr: LPSTR,
+  cchDest: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetLocaleInfoW*(
+  Locale: LCID, LCType: LCTYPE, lpLCData: LPWSTR, cchData: int32
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetLocaleInfoA*(
+  Locale: LCID, LCType: LCTYPE, lpLCData: LPSTR, cchData: int32
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsDBCSLeadByte*(
+  TestChar: BYTE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsDBCSLeadByteEx*(
+  CodePage: UINT, TestChar: BYTE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNumberFormatA*(
+  Locale: LCID,
+  dwFlags: DWORD,
+  lpValue: LPCSTR,
+  lpFormat: ptr NUMBERFMTA,
+  lpNumberStr: LPSTR,
+  cchNumber: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNumberFormatW*(
+  Locale: LCID,
+  dwFlags: DWORD,
+  lpValue: LPCWSTR,
+  lpFormat: ptr NUMBERFMTW,
+  lpNumberStr: LPWSTR,
+  cchNumber: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCurrencyFormatA*(
+  Locale: LCID,
+  dwFlags: DWORD,
+  lpValue: LPCSTR,
+  lpFormat: ptr CURRENCYFMTA,
+  lpCurrencyStr: LPSTR,
+  cchCurrency: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCurrencyFormatW*(
+  Locale: LCID,
+  dwFlags: DWORD,
+  lpValue: LPCWSTR,
+  lpFormat: ptr CURRENCYFMTW,
+  lpCurrencyStr: LPWSTR,
+  cchCurrency: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumCalendarInfoA*(
+  lpCalInfoEnumProc: CALINFO_ENUMPROCA, Locale: LCID, Calendar: CALID, CalType: CALTYPE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumCalendarInfoW*(
+  lpCalInfoEnumProc: CALINFO_ENUMPROCW, Locale: LCID, Calendar: CALID, CalType: CALTYPE
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumCalendarInfoExA*(
+  lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXA,
+  Locale: LCID,
+  Calendar: CALID,
+  CalType: CALTYPE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumCalendarInfoExW*(
+  lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXW,
+  Locale: LCID,
+  Calendar: CALID,
+  CalType: CALTYPE,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumTimeFormatsA*(
+  lpTimeFmtEnumProc: TIMEFMT_ENUMPROCA, Locale: LCID, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumTimeFormatsW*(
+  lpTimeFmtEnumProc: TIMEFMT_ENUMPROCW, Locale: LCID, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumDateFormatsA*(
+  lpDateFmtEnumProc: DATEFMT_ENUMPROCA, Locale: LCID, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumDateFormatsW*(
+  lpDateFmtEnumProc: DATEFMT_ENUMPROCW, Locale: LCID, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumDateFormatsExA*(
+  lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXA, Locale: LCID, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumDateFormatsExW*(
+  lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXW, Locale: LCID, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsValidLanguageGroup*(
+  LanguageGroup: LGRPID, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNLSVersion*(
+  Function: NLS_FUNCTION, Locale: LCID, lpVersionInformation: LPNLSVERSIONINFO
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsNLSDefinedString*(
+  Function: NLS_FUNCTION,
+  dwFlags: DWORD,
+  lpVersionInformation: LPNLSVERSIONINFO,
+  lpString: LPCWSTR,
+  cchStr: INT,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsValidLocale*(
+  Locale: LCID, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetLocaleInfoA*(
+  Locale: LCID, LCType: LCTYPE, lpLCData: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetLocaleInfoW*(
+  Locale: LCID, LCType: LCTYPE, lpLCData: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCalendarInfoA*(
+  Locale: LCID,
+  Calendar: CALID,
+  CalType: CALTYPE,
+  lpCalData: LPSTR,
+  cchData: int32,
+  lpValue: LPDWORD,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCalendarInfoW*(
+  Locale: LCID,
+  Calendar: CALID,
+  CalType: CALTYPE,
+  lpCalData: LPWSTR,
+  cchData: int32,
+  lpValue: LPDWORD,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetCalendarInfoA*(
+  Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetCalendarInfoW*(
+  Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDurationFormat*(
+  Locale: LCID,
+  dwFlags: DWORD,
+  lpDuration: ptr SYSTEMTIME,
+  ullDuration: ULONGLONG,
+  lpFormat: LPCWSTR,
+  lpDurationStr: LPWSTR,
+  cchDuration: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindNLSString*(
+  Locale: LCID,
+  dwFindNLSStringFlags: DWORD,
+  lpStringSource: LPCWSTR,
+  cchSource: int32,
+  lpStringValue: LPCWSTR,
+  cchValue: int32,
+  pcchFound: LPINT,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetGeoInfoA*(
+  Location: GEOID, GeoType: GEOTYPE, lpGeoData: LPSTR, cchData: int32, LangId: LANGID
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetGeoInfoW*(
+  Location: GEOID, GeoType: GEOTYPE, lpGeoData: LPWSTR, cchData: int32, LangId: LANGID
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumSystemGeoID*(
+  GeoClass: GEOCLASS, ParentGeoId: GEOID, lpGeoEnumProc: GEO_ENUMPROC
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetUserGeoID*(
+  GeoClass: GEOCLASS
+): GEOID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCPInfo*(
+  CodePage: UINT, lpCPInfo: LPCPINFO
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCPInfoExA*(
+  CodePage: UINT, dwFlags: DWORD, lpCPInfoEx: LPCPINFOEXA
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCPInfoExW*(
+  CodePage: UINT, dwFlags: DWORD, lpCPInfoEx: LPCPINFOEXW
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LCIDToLocaleName*(
+  Locale: LCID, lpName: LPWSTR, cchName: int32, dwFlags: DWORD
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LocaleNameToLCID*(
+  lpName: LPCWSTR, dwFlags: DWORD
+): LCID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetUserGeoID*(
+  GeoId: GEOID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ConvertDefaultLocale*(
+  Locale: LCID
+): LCID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetThreadLocale*(): LCID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadLocale*(Locale: LCID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemDefaultUILanguage*(): LANGID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetUserDefaultUILanguage*(): LANGID {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc SetThreadLocale*(
+  Locale: LCID
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemDefaultUILanguage*(): LANGID {.
+  winapi, stdcall, dynlib: "kernel32", importc
+.}
+
+proc GetUserDefaultUILanguage*(): LANGID {.
+  winapi, stdcall, dynlib: "kernel32", importc
+.}
+
 proc GetSystemDefaultLangID*(): LANGID {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc GetUserDefaultLangID*(): LANGID {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc GetSystemDefaultLCID*(): LCID {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc GetUserDefaultLCID*(): LCID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadUILanguage*(LangId: LANGID): LANGID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetStringTypeExA*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR, cchSrc: int32, lpCharType: LPWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetStringTypeA*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR, cchSrc: int32, lpCharType: LPWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FoldStringA*(dwMapFlags: DWORD, lpSrcStr: LPCSTR, cchSrc: int32, lpDestStr: LPSTR, cchDest: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumSystemLocalesA*(lpLocaleEnumProc: LOCALE_ENUMPROCA, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumSystemLocalesW*(lpLocaleEnumProc: LOCALE_ENUMPROCW, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumSystemLanguageGroupsA*(lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCA, dwFlags: DWORD, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumSystemLanguageGroupsW*(lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCW, dwFlags: DWORD, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumLanguageGroupLocalesA*(lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCA, LanguageGroup: LGRPID, dwFlags: DWORD, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumLanguageGroupLocalesW*(lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCW, LanguageGroup: LGRPID, dwFlags: DWORD, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumUILanguagesA*(lpUILanguageEnumProc: UILANGUAGE_ENUMPROCA, dwFlags: DWORD, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumUILanguagesW*(lpUILanguageEnumProc: UILANGUAGE_ENUMPROCW, dwFlags: DWORD, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc SetThreadUILanguage*(
+  LangId: LANGID
+): LANGID {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetStringTypeExA*(
+  Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR, cchSrc: int32, lpCharType: LPWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetStringTypeA*(
+  Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR, cchSrc: int32, lpCharType: LPWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FoldStringA*(
+  dwMapFlags: DWORD, lpSrcStr: LPCSTR, cchSrc: int32, lpDestStr: LPSTR, cchDest: int32
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumSystemLocalesA*(
+  lpLocaleEnumProc: LOCALE_ENUMPROCA, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumSystemLocalesW*(
+  lpLocaleEnumProc: LOCALE_ENUMPROCW, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumSystemLanguageGroupsA*(
+  lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCA, dwFlags: DWORD, lParam: LONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumSystemLanguageGroupsW*(
+  lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCW, dwFlags: DWORD, lParam: LONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumLanguageGroupLocalesA*(
+  lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCA,
+  LanguageGroup: LGRPID,
+  dwFlags: DWORD,
+  lParam: LONG_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumLanguageGroupLocalesW*(
+  lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCW,
+  LanguageGroup: LGRPID,
+  dwFlags: DWORD,
+  lParam: LONG_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumUILanguagesA*(
+  lpUILanguageEnumProc: UILANGUAGE_ENUMPROCA, dwFlags: DWORD, lParam: LONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumUILanguagesW*(
+  lpUILanguageEnumProc: UILANGUAGE_ENUMPROCW, dwFlags: DWORD, lParam: LONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc GetThreadUILanguage*(): LANGID {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetProcessPreferredUILanguages*(dwFlags: DWORD, pulNumLanguages: PULONG, pwszLanguagesBuffer: PZZWSTR, pcchLanguagesBuffer: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetProcessPreferredUILanguages*(dwFlags: DWORD, pwszLanguagesBuffer: PCZZWSTR, pulNumLanguages: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetUserPreferredUILanguages*(dwFlags: DWORD, pulNumLanguages: PULONG, pwszLanguagesBuffer: PZZWSTR, pcchLanguagesBuffer: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemPreferredUILanguages*(dwFlags: DWORD, pulNumLanguages: PULONG, pwszLanguagesBuffer: PZZWSTR, pcchLanguagesBuffer: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetThreadPreferredUILanguages*(dwFlags: DWORD, pulNumLanguages: PULONG, pwszLanguagesBuffer: PZZWSTR, pcchLanguagesBuffer: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc SetThreadPreferredUILanguages*(dwFlags: DWORD, pwszLanguagesBuffer: PCZZWSTR, pulNumLanguages: PULONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFileMUIInfo*(dwFlags: DWORD, pcwszFilePath: PCWSTR, pFileMUIInfo: PFILEMUIINFO, pcbFileMUIInfo: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetFileMUIPath*(dwFlags: DWORD, pcwszFilePath: PCWSTR, pwszLanguage: PWSTR, pcchLanguage: PULONG, pwszFileMUIPath: PWSTR, pcchFileMUIPath: PULONG, pululEnumerator: PULONGLONG): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetUILanguageInfo*(dwFlags: DWORD, pwmszLanguage: PCZZWSTR, pwszFallbackLanguages: PZZWSTR, pcchFallbackLanguages: PDWORD, pAttributes: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc NotifyUILanguageChange*(dwFlags: DWORD, pcwstrNewLanguage: PCWSTR, pcwstrPreviousLanguage: PCWSTR, dwReserved: DWORD, pdwStatusRtrn: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumSystemCodePagesA*(lpCodePageEnumProc: CODEPAGE_ENUMPROCA, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumSystemCodePagesW*(lpCodePageEnumProc: CODEPAGE_ENUMPROCW, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc NormalizeString*(NormForm: NORM_FORM, lpSrcString: LPCWSTR, cwSrcLength: int32, lpDstString: LPWSTR, cwDstLength: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsNormalizedString*(NormForm: NORM_FORM, lpString: LPCWSTR, cwLength: int32): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IdnToAscii*(dwFlags: DWORD, lpUnicodeCharStr: LPCWSTR, cchUnicodeChar: int32, lpASCIICharStr: LPWSTR, cchASCIIChar: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IdnToNameprepUnicode*(dwFlags: DWORD, lpUnicodeCharStr: LPCWSTR, cchUnicodeChar: int32, lpNameprepCharStr: LPWSTR, cchNameprepChar: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IdnToUnicode*(dwFlags: DWORD, lpASCIICharStr: LPCWSTR, cchASCIIChar: int32, lpUnicodeCharStr: LPWSTR, cchUnicodeChar: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc VerifyScripts*(dwFlags: DWORD, lpLocaleScripts: LPCWSTR, cchLocaleScripts: int32, lpTestScripts: LPCWSTR, cchTestScripts: int32): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetStringScripts*(dwFlags: DWORD, lpString: LPCWSTR, cchString: int32, lpScripts: LPWSTR, cchScripts: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetLocaleInfoEx*(lpLocaleName: LPCWSTR, LCType: LCTYPE, lpLCData: LPWSTR, cchData: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCalendarInfoEx*(lpLocaleName: LPCWSTR, Calendar: CALID, lpReserved: LPCWSTR, CalType: CALTYPE, lpCalData: LPWSTR, cchData: int32, lpValue: LPDWORD): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetDurationFormatEx*(lpLocaleName: LPCWSTR, dwFlags: DWORD, lpDuration: ptr SYSTEMTIME, ullDuration: ULONGLONG, lpFormat: LPCWSTR, lpDurationStr: LPWSTR, cchDuration: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNumberFormatEx*(lpLocaleName: LPCWSTR, dwFlags: DWORD, lpValue: LPCWSTR, lpFormat: ptr NUMBERFMTW, lpNumberStr: LPWSTR, cchNumber: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetCurrencyFormatEx*(lpLocaleName: LPCWSTR, dwFlags: DWORD, lpValue: LPCWSTR, lpFormat: ptr CURRENCYFMTW, lpCurrencyStr: LPWSTR, cchCurrency: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetUserDefaultLocaleName*(lpLocaleName: LPWSTR, cchLocaleName: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetSystemDefaultLocaleName*(lpLocaleName: LPWSTR, cchLocaleName: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc GetNLSVersionEx*(function: NLS_FUNCTION, lpLocaleName: LPCWSTR, lpVersionInformation: LPNLSVERSIONINFOEX): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc FindNLSStringEx*(lpLocaleName: LPCWSTR, dwFindNLSStringFlags: DWORD, lpStringSource: LPCWSTR, cchSource: int32, lpStringValue: LPCWSTR, cchValue: int32, pcchFound: LPINT, lpVersionInformation: LPNLSVERSIONINFO, lpReserved: LPVOID, sortHandle: LPARAM): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc LCMapStringEx*(lpLocaleName: LPCWSTR, dwMapFlags: DWORD, lpSrcStr: LPCWSTR, cchSrc: int32, lpDestStr: LPWSTR, cchDest: int32, lpVersionInformation: LPNLSVERSIONINFO, lpReserved: LPVOID, sortHandle: LPARAM): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsValidLocaleName*(lpLocaleName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumCalendarInfoExEx*(pCalInfoEnumProcExEx: CALINFO_ENUMPROCEXEX, lpLocaleName: LPCWSTR, Calendar: CALID, lpReserved: LPCWSTR, CalType: CALTYPE, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumDateFormatsExEx*(lpDateFmtEnumProcExEx: DATEFMT_ENUMPROCEXEX, lpLocaleName: LPCWSTR, dwFlags: DWORD, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumTimeFormatsEx*(lpTimeFmtEnumProcEx: TIMEFMT_ENUMPROCEX, lpLocaleName: LPCWSTR, dwFlags: DWORD, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc EnumSystemLocalesEx*(lpLocaleEnumProcEx: LOCALE_ENUMPROCEX, dwFlags: DWORD, lParam: LPARAM, lpReserved: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc ResolveLocaleName*(lpNameToResolve: LPCWSTR, lpLocaleName: LPWSTR, cchLocaleName: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc IsValidNLSVersion*(function: NLS_FUNCTION, lpLocaleName: LPCWSTR, lpVersionInformation: LPNLSVERSIONINFOEX): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
-template IS_HIGH_SURROGATE*(wch: untyped): bool = (wch >= HIGH_SURROGATE_START) and (wch <= HIGH_SURROGATE_END)
-template IS_LOW_SURROGATE*(wch: untyped): bool = (wch >= LOW_SURROGATE_START) and (wch <= LOW_SURROGATE_END)
-template IS_SURROGATE_PAIR*(hs: untyped, ls: untyped): bool = IS_HIGH_SURROGATE(hs) and IS_LOW_SURROGATE(ls)
-template FILEMUIINFO_GET_CULTURE*(pInfo: PFILEMUIINFO): LPWSTR = cast[LPWSTR](if pInfo.dwLanguageNameOffset > 0: cast[int](pInfo) + pInfo.dwLanguageNameOffset else: 0)
-template FILEMUIINFO_GET_MAIN_TYPEIDS*(pInfo: PFILEMUIINFO): PDWORD = cast[PDWORD](if pInfo.dwTypeIDMainOffset > 0: cast[int](pInfo) + pInfo.dwTypeIDMainOffset else: 0)
-template FILEMUIINFO_GET_MAIN_TYPEID*(pInfo: PFILEMUIINFO, iType: DWORD): DWORD = (if (iType < pInfo.dwTypeIDMainSize) and (pInfo.dwTypeIDMainOffset > 0): (cast[PDWORD](cast[int](pInfo) + pInfo.dwTypeIDMainOffset + iType * sizeof(DWORD)))[] else: 0)
-template FILEMUIINFO_GET_MAIN_TYPENAMES*(pInfo: PFILEMUIINFO): LPWSTR = cast[LPWSTR](if pInfo.dwTypeNameMainOffset > 0: cast[int](pInfo) + pInfo.dwTypeNameMainOffset else: 0)
-template FILEMUIINFO_GET_MUI_TYPEIDS*(pInfo: PFILEMUIINFO): PDWORD = cast[PDWORD](if pInfo.dwTypeIDMUIOffset > 0: cast[int](pInfo) + pInfo.dwTypeIDMUIOffset else: 0)
-template FILEMUIINFO_GET_MUI_TYPEID*(pInfo: PFILEMUIINFO, iType): DWORD = (if (iType < pInfo.dwTypeIDMUISize) and (pInfo.dwTypeIDMUIOffset > 0): (cast[PDWORD](cast[int](pInfo) + pInfo.dwTypeIDMUIOffset + iType * sizeof(DWORD)))[] else: 0)
-template FILEMUIINFO_GET_MUI_TYPENAMES*(pInfo: PFILEMUIINFO): LPWSTR = cast[LPWSTR](if pInfo.dwTypeNameMUIOffset > 0: cast[int](pInfo) + pInfo.dwTypeNameMUIOffset else: 0)
+proc GetProcessPreferredUILanguages*(
+  dwFlags: DWORD,
+  pulNumLanguages: PULONG,
+  pwszLanguagesBuffer: PZZWSTR,
+  pcchLanguagesBuffer: PULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetProcessPreferredUILanguages*(
+  dwFlags: DWORD, pwszLanguagesBuffer: PCZZWSTR, pulNumLanguages: PULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetUserPreferredUILanguages*(
+  dwFlags: DWORD,
+  pulNumLanguages: PULONG,
+  pwszLanguagesBuffer: PZZWSTR,
+  pcchLanguagesBuffer: PULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemPreferredUILanguages*(
+  dwFlags: DWORD,
+  pulNumLanguages: PULONG,
+  pwszLanguagesBuffer: PZZWSTR,
+  pcchLanguagesBuffer: PULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetThreadPreferredUILanguages*(
+  dwFlags: DWORD,
+  pulNumLanguages: PULONG,
+  pwszLanguagesBuffer: PZZWSTR,
+  pcchLanguagesBuffer: PULONG,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc SetThreadPreferredUILanguages*(
+  dwFlags: DWORD, pwszLanguagesBuffer: PCZZWSTR, pulNumLanguages: PULONG
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFileMUIInfo*(
+  dwFlags: DWORD,
+  pcwszFilePath: PCWSTR,
+  pFileMUIInfo: PFILEMUIINFO,
+  pcbFileMUIInfo: ptr DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetFileMUIPath*(
+  dwFlags: DWORD,
+  pcwszFilePath: PCWSTR,
+  pwszLanguage: PWSTR,
+  pcchLanguage: PULONG,
+  pwszFileMUIPath: PWSTR,
+  pcchFileMUIPath: PULONG,
+  pululEnumerator: PULONGLONG,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetUILanguageInfo*(
+  dwFlags: DWORD,
+  pwmszLanguage: PCZZWSTR,
+  pwszFallbackLanguages: PZZWSTR,
+  pcchFallbackLanguages: PDWORD,
+  pAttributes: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc NotifyUILanguageChange*(
+  dwFlags: DWORD,
+  pcwstrNewLanguage: PCWSTR,
+  pcwstrPreviousLanguage: PCWSTR,
+  dwReserved: DWORD,
+  pdwStatusRtrn: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumSystemCodePagesA*(
+  lpCodePageEnumProc: CODEPAGE_ENUMPROCA, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumSystemCodePagesW*(
+  lpCodePageEnumProc: CODEPAGE_ENUMPROCW, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc NormalizeString*(
+  NormForm: NORM_FORM,
+  lpSrcString: LPCWSTR,
+  cwSrcLength: int32,
+  lpDstString: LPWSTR,
+  cwDstLength: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsNormalizedString*(
+  NormForm: NORM_FORM, lpString: LPCWSTR, cwLength: int32
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IdnToAscii*(
+  dwFlags: DWORD,
+  lpUnicodeCharStr: LPCWSTR,
+  cchUnicodeChar: int32,
+  lpASCIICharStr: LPWSTR,
+  cchASCIIChar: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IdnToNameprepUnicode*(
+  dwFlags: DWORD,
+  lpUnicodeCharStr: LPCWSTR,
+  cchUnicodeChar: int32,
+  lpNameprepCharStr: LPWSTR,
+  cchNameprepChar: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IdnToUnicode*(
+  dwFlags: DWORD,
+  lpASCIICharStr: LPCWSTR,
+  cchASCIIChar: int32,
+  lpUnicodeCharStr: LPWSTR,
+  cchUnicodeChar: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc VerifyScripts*(
+  dwFlags: DWORD,
+  lpLocaleScripts: LPCWSTR,
+  cchLocaleScripts: int32,
+  lpTestScripts: LPCWSTR,
+  cchTestScripts: int32,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetStringScripts*(
+  dwFlags: DWORD,
+  lpString: LPCWSTR,
+  cchString: int32,
+  lpScripts: LPWSTR,
+  cchScripts: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetLocaleInfoEx*(
+  lpLocaleName: LPCWSTR, LCType: LCTYPE, lpLCData: LPWSTR, cchData: int32
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCalendarInfoEx*(
+  lpLocaleName: LPCWSTR,
+  Calendar: CALID,
+  lpReserved: LPCWSTR,
+  CalType: CALTYPE,
+  lpCalData: LPWSTR,
+  cchData: int32,
+  lpValue: LPDWORD,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetDurationFormatEx*(
+  lpLocaleName: LPCWSTR,
+  dwFlags: DWORD,
+  lpDuration: ptr SYSTEMTIME,
+  ullDuration: ULONGLONG,
+  lpFormat: LPCWSTR,
+  lpDurationStr: LPWSTR,
+  cchDuration: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNumberFormatEx*(
+  lpLocaleName: LPCWSTR,
+  dwFlags: DWORD,
+  lpValue: LPCWSTR,
+  lpFormat: ptr NUMBERFMTW,
+  lpNumberStr: LPWSTR,
+  cchNumber: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetCurrencyFormatEx*(
+  lpLocaleName: LPCWSTR,
+  dwFlags: DWORD,
+  lpValue: LPCWSTR,
+  lpFormat: ptr CURRENCYFMTW,
+  lpCurrencyStr: LPWSTR,
+  cchCurrency: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetUserDefaultLocaleName*(
+  lpLocaleName: LPWSTR, cchLocaleName: int32
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetSystemDefaultLocaleName*(
+  lpLocaleName: LPWSTR, cchLocaleName: int32
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc GetNLSVersionEx*(
+  function: NLS_FUNCTION,
+  lpLocaleName: LPCWSTR,
+  lpVersionInformation: LPNLSVERSIONINFOEX,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc FindNLSStringEx*(
+  lpLocaleName: LPCWSTR,
+  dwFindNLSStringFlags: DWORD,
+  lpStringSource: LPCWSTR,
+  cchSource: int32,
+  lpStringValue: LPCWSTR,
+  cchValue: int32,
+  pcchFound: LPINT,
+  lpVersionInformation: LPNLSVERSIONINFO,
+  lpReserved: LPVOID,
+  sortHandle: LPARAM,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc LCMapStringEx*(
+  lpLocaleName: LPCWSTR,
+  dwMapFlags: DWORD,
+  lpSrcStr: LPCWSTR,
+  cchSrc: int32,
+  lpDestStr: LPWSTR,
+  cchDest: int32,
+  lpVersionInformation: LPNLSVERSIONINFO,
+  lpReserved: LPVOID,
+  sortHandle: LPARAM,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsValidLocaleName*(
+  lpLocaleName: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumCalendarInfoExEx*(
+  pCalInfoEnumProcExEx: CALINFO_ENUMPROCEXEX,
+  lpLocaleName: LPCWSTR,
+  Calendar: CALID,
+  lpReserved: LPCWSTR,
+  CalType: CALTYPE,
+  lParam: LPARAM,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumDateFormatsExEx*(
+  lpDateFmtEnumProcExEx: DATEFMT_ENUMPROCEXEX,
+  lpLocaleName: LPCWSTR,
+  dwFlags: DWORD,
+  lParam: LPARAM,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumTimeFormatsEx*(
+  lpTimeFmtEnumProcEx: TIMEFMT_ENUMPROCEX,
+  lpLocaleName: LPCWSTR,
+  dwFlags: DWORD,
+  lParam: LPARAM,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc EnumSystemLocalesEx*(
+  lpLocaleEnumProcEx: LOCALE_ENUMPROCEX,
+  dwFlags: DWORD,
+  lParam: LPARAM,
+  lpReserved: LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc ResolveLocaleName*(
+  lpNameToResolve: LPCWSTR, lpLocaleName: LPWSTR, cchLocaleName: int32
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc IsValidNLSVersion*(
+  function: NLS_FUNCTION,
+  lpLocaleName: LPCWSTR,
+  lpVersionInformation: LPNLSVERSIONINFOEX,
+): DWORD {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+template IS_HIGH_SURROGATE*(wch: untyped): bool =
+  (wch >= HIGH_SURROGATE_START) and (wch <= HIGH_SURROGATE_END)
+
+template IS_LOW_SURROGATE*(wch: untyped): bool =
+  (wch >= LOW_SURROGATE_START) and (wch <= LOW_SURROGATE_END)
+
+template IS_SURROGATE_PAIR*(hs: untyped, ls: untyped): bool =
+  IS_HIGH_SURROGATE(hs) and IS_LOW_SURROGATE(ls)
+
+template FILEMUIINFO_GET_CULTURE*(pInfo: PFILEMUIINFO): LPWSTR =
+  cast[LPWSTR](if pInfo.dwLanguageNameOffset > 0:
+    cast[int](pInfo) + pInfo.dwLanguageNameOffset
+  else:
+    0)
+
+template FILEMUIINFO_GET_MAIN_TYPEIDS*(pInfo: PFILEMUIINFO): PDWORD =
+  cast[PDWORD](if pInfo.dwTypeIDMainOffset > 0:
+    cast[int](pInfo) + pInfo.dwTypeIDMainOffset
+  else:
+    0)
+
+template FILEMUIINFO_GET_MAIN_TYPEID*(pInfo: PFILEMUIINFO, iType: DWORD): DWORD =
+  (
+    if (iType < pInfo.dwTypeIDMainSize) and (pInfo.dwTypeIDMainOffset > 0): (
+      cast[PDWORD](cast[int](pInfo) + pInfo.dwTypeIDMainOffset + iType * sizeof(DWORD))
+    )[]
+    else: 0
+  )
+
+template FILEMUIINFO_GET_MAIN_TYPENAMES*(pInfo: PFILEMUIINFO): LPWSTR =
+  cast[LPWSTR](if pInfo.dwTypeNameMainOffset > 0:
+    cast[int](pInfo) + pInfo.dwTypeNameMainOffset
+  else:
+    0)
+
+template FILEMUIINFO_GET_MUI_TYPEIDS*(pInfo: PFILEMUIINFO): PDWORD =
+  cast[PDWORD](if pInfo.dwTypeIDMUIOffset > 0:
+    cast[int](pInfo) + pInfo.dwTypeIDMUIOffset
+  else:
+    0)
+
+template FILEMUIINFO_GET_MUI_TYPEID*(pInfo: PFILEMUIINFO, iType): DWORD =
+  (
+    if (iType < pInfo.dwTypeIDMUISize) and (pInfo.dwTypeIDMUIOffset > 0):
+    (cast[PDWORD](cast[int](pInfo) + pInfo.dwTypeIDMUIOffset + iType * sizeof(DWORD)))[]
+    else: 0
+  )
+
+template FILEMUIINFO_GET_MUI_TYPENAMES*(pInfo: PFILEMUIINFO): LPWSTR =
+  cast[LPWSTR](if pInfo.dwTypeNameMUIOffset > 0:
+    cast[int](pInfo) + pInfo.dwTypeNameMUIOffset
+  else:
+    0)
+
 when winimUnicode:
   type
     LANGUAGEGROUP_ENUMPROC* = LANGUAGEGROUP_ENUMPROCW
@@ -832,30 +1468,155 @@
     LPNUMBERFMT* = LPNUMBERFMTW
     CURRENCYFMT* = CURRENCYFMTW
     LPCURRENCYFMT* = LPCURRENCYFMTW
-  proc CompareString*(Locale: LCID, dwCmpFlags: DWORD, lpString1: PCNZWCH, cchCount1: int32, lpString2: PCNZWCH, cchCount2: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "CompareStringW".}
-  proc FoldString*(dwMapFlags: DWORD, lpSrcStr: LPCWCH, cchSrc: int32, lpDestStr: LPWSTR, cchDest: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "FoldStringW".}
-  proc GetStringTypeEx*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCWCH, cchSrc: int32, lpCharType: LPWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetStringTypeExW".}
-  proc LCMapString*(Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCWSTR, cchSrc: int32, lpDestStr: LPWSTR, cchDest: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "LCMapStringW".}
-  proc GetLocaleInfo*(Locale: LCID, LCType: LCTYPE, lpLCData: LPWSTR, cchData: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetLocaleInfoW".}
-  proc GetDateFormat*(Locale: LCID, dwFlags: DWORD, lpDate: ptr SYSTEMTIME, lpFormat: LPCWSTR, lpDateStr: LPWSTR, cchDate: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetDateFormatW".}
-  proc GetTimeFormat*(Locale: LCID, dwFlags: DWORD, lpTime: ptr SYSTEMTIME, lpFormat: LPCWSTR, lpTimeStr: LPWSTR, cchTime: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetTimeFormatW".}
-  proc SetLocaleInfo*(Locale: LCID, LCType: LCTYPE, lpLCData: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetLocaleInfoW".}
-  proc GetCalendarInfo*(Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPWSTR, cchData: int32, lpValue: LPDWORD): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetCalendarInfoW".}
-  proc SetCalendarInfo*(Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetCalendarInfoW".}
-  proc GetNumberFormat*(Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR, lpFormat: ptr NUMBERFMTW, lpNumberStr: LPWSTR, cchNumber: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetNumberFormatW".}
-  proc GetCurrencyFormat*(Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR, lpFormat: ptr CURRENCYFMTW, lpCurrencyStr: LPWSTR, cchCurrency: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetCurrencyFormatW".}
-  proc EnumCalendarInfo*(lpCalInfoEnumProc: CALINFO_ENUMPROCW, Locale: LCID, Calendar: CALID, CalType: CALTYPE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumCalendarInfoW".}
-  proc EnumCalendarInfoEx*(lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXW, Locale: LCID, Calendar: CALID, CalType: CALTYPE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumCalendarInfoExW".}
-  proc EnumTimeFormats*(lpTimeFmtEnumProc: TIMEFMT_ENUMPROCW, Locale: LCID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumTimeFormatsW".}
-  proc EnumDateFormats*(lpDateFmtEnumProc: DATEFMT_ENUMPROCW, Locale: LCID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumDateFormatsW".}
-  proc EnumDateFormatsEx*(lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXW, Locale: LCID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumDateFormatsExW".}
-  proc GetGeoInfo*(Location: GEOID, GeoType: GEOTYPE, lpGeoData: LPWSTR, cchData: int32, LangId: LANGID): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetGeoInfoW".}
-  proc GetCPInfoEx*(CodePage: UINT, dwFlags: DWORD, lpCPInfoEx: LPCPINFOEXW): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetCPInfoExW".}
-  proc EnumSystemLocales*(lpLocaleEnumProc: LOCALE_ENUMPROCW, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumSystemLocalesW".}
-  proc EnumSystemLanguageGroups*(lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCW, dwFlags: DWORD, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumSystemLanguageGroupsW".}
-  proc EnumLanguageGroupLocales*(lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCW, LanguageGroup: LGRPID, dwFlags: DWORD, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumLanguageGroupLocalesW".}
-  proc EnumUILanguages*(lpUILanguageEnumProc: UILANGUAGE_ENUMPROCW, dwFlags: DWORD, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumUILanguagesW".}
-  proc EnumSystemCodePages*(lpCodePageEnumProc: CODEPAGE_ENUMPROCW, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumSystemCodePagesW".}
+
+  proc CompareString*(
+    Locale: LCID,
+    dwCmpFlags: DWORD,
+    lpString1: PCNZWCH,
+    cchCount1: int32,
+    lpString2: PCNZWCH,
+    cchCount2: int32,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "CompareStringW".}
+
+  proc FoldString*(
+    dwMapFlags: DWORD,
+    lpSrcStr: LPCWCH,
+    cchSrc: int32,
+    lpDestStr: LPWSTR,
+    cchDest: int32,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "FoldStringW".}
+
+  proc GetStringTypeEx*(
+    Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCWCH, cchSrc: int32, lpCharType: LPWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetStringTypeExW".}
+
+  proc LCMapString*(
+    Locale: LCID,
+    dwMapFlags: DWORD,
+    lpSrcStr: LPCWSTR,
+    cchSrc: int32,
+    lpDestStr: LPWSTR,
+    cchDest: int32,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "LCMapStringW".}
+
+  proc GetLocaleInfo*(
+    Locale: LCID, LCType: LCTYPE, lpLCData: LPWSTR, cchData: int32
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetLocaleInfoW".}
+
+  proc GetDateFormat*(
+    Locale: LCID,
+    dwFlags: DWORD,
+    lpDate: ptr SYSTEMTIME,
+    lpFormat: LPCWSTR,
+    lpDateStr: LPWSTR,
+    cchDate: int32,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetDateFormatW".}
+
+  proc GetTimeFormat*(
+    Locale: LCID,
+    dwFlags: DWORD,
+    lpTime: ptr SYSTEMTIME,
+    lpFormat: LPCWSTR,
+    lpTimeStr: LPWSTR,
+    cchTime: int32,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetTimeFormatW".}
+
+  proc SetLocaleInfo*(
+    Locale: LCID, LCType: LCTYPE, lpLCData: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetLocaleInfoW".}
+
+  proc GetCalendarInfo*(
+    Locale: LCID,
+    Calendar: CALID,
+    CalType: CALTYPE,
+    lpCalData: LPWSTR,
+    cchData: int32,
+    lpValue: LPDWORD,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetCalendarInfoW".}
+
+  proc SetCalendarInfo*(
+    Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetCalendarInfoW".}
+
+  proc GetNumberFormat*(
+    Locale: LCID,
+    dwFlags: DWORD,
+    lpValue: LPCWSTR,
+    lpFormat: ptr NUMBERFMTW,
+    lpNumberStr: LPWSTR,
+    cchNumber: int32,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetNumberFormatW".}
+
+  proc GetCurrencyFormat*(
+    Locale: LCID,
+    dwFlags: DWORD,
+    lpValue: LPCWSTR,
+    lpFormat: ptr CURRENCYFMTW,
+    lpCurrencyStr: LPWSTR,
+    cchCurrency: int32,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetCurrencyFormatW".}
+
+  proc EnumCalendarInfo*(
+    lpCalInfoEnumProc: CALINFO_ENUMPROCW,
+    Locale: LCID,
+    Calendar: CALID,
+    CalType: CALTYPE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumCalendarInfoW".}
+
+  proc EnumCalendarInfoEx*(
+    lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXW,
+    Locale: LCID,
+    Calendar: CALID,
+    CalType: CALTYPE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumCalendarInfoExW".}
+
+  proc EnumTimeFormats*(
+    lpTimeFmtEnumProc: TIMEFMT_ENUMPROCW, Locale: LCID, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumTimeFormatsW".}
+
+  proc EnumDateFormats*(
+    lpDateFmtEnumProc: DATEFMT_ENUMPROCW, Locale: LCID, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumDateFormatsW".}
+
+  proc EnumDateFormatsEx*(
+    lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXW, Locale: LCID, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumDateFormatsExW".}
+
+  proc GetGeoInfo*(
+    Location: GEOID, GeoType: GEOTYPE, lpGeoData: LPWSTR, cchData: int32, LangId: LANGID
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetGeoInfoW".}
+
+  proc GetCPInfoEx*(
+    CodePage: UINT, dwFlags: DWORD, lpCPInfoEx: LPCPINFOEXW
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetCPInfoExW".}
+
+  proc EnumSystemLocales*(
+    lpLocaleEnumProc: LOCALE_ENUMPROCW, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumSystemLocalesW".}
+
+  proc EnumSystemLanguageGroups*(
+    lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCW, dwFlags: DWORD, lParam: LONG_PTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "EnumSystemLanguageGroupsW"
+  .}
+
+  proc EnumLanguageGroupLocales*(
+    lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCW,
+    LanguageGroup: LGRPID,
+    dwFlags: DWORD,
+    lParam: LONG_PTR,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "EnumLanguageGroupLocalesW"
+  .}
+
+  proc EnumUILanguages*(
+    lpUILanguageEnumProc: UILANGUAGE_ENUMPROCW, dwFlags: DWORD, lParam: LONG_PTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumUILanguagesW".}
+
+  proc EnumSystemCodePages*(
+    lpCodePageEnumProc: CODEPAGE_ENUMPROCW, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumSystemCodePagesW".}
+
 when winimAnsi:
   type
     LANGUAGEGROUP_ENUMPROC* = LANGUAGEGROUP_ENUMPROCA
@@ -874,27 +1635,147 @@
     LPNUMBERFMT* = LPNUMBERFMTA
     CURRENCYFMT* = CURRENCYFMTA
     LPCURRENCYFMT* = LPCURRENCYFMTA
-  proc CompareString*(Locale: LCID, dwCmpFlags: DWORD, lpString1: PCNZCH, cchCount1: int32, lpString2: PCNZCH, cchCount2: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "CompareStringA".}
-  proc LCMapString*(Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCSTR, cchSrc: int32, lpDestStr: LPSTR, cchDest: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "LCMapStringA".}
-  proc GetLocaleInfo*(Locale: LCID, LCType: LCTYPE, lpLCData: LPSTR, cchData: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetLocaleInfoA".}
-  proc FoldString*(dwMapFlags: DWORD, lpSrcStr: LPCSTR, cchSrc: int32, lpDestStr: LPSTR, cchDest: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "FoldStringA".}
-  proc GetStringTypeEx*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR, cchSrc: int32, lpCharType: LPWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetStringTypeExA".}
-  proc GetDateFormat*(Locale: LCID, dwFlags: DWORD, lpDate: ptr SYSTEMTIME, lpFormat: LPCSTR, lpDateStr: LPSTR, cchDate: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetDateFormatA".}
-  proc GetTimeFormat*(Locale: LCID, dwFlags: DWORD, lpTime: ptr SYSTEMTIME, lpFormat: LPCSTR, lpTimeStr: LPSTR, cchTime: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetTimeFormatA".}
-  proc SetLocaleInfo*(Locale: LCID, LCType: LCTYPE, lpLCData: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetLocaleInfoA".}
-  proc GetCalendarInfo*(Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPSTR, cchData: int32, lpValue: LPDWORD): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetCalendarInfoA".}
-  proc SetCalendarInfo*(Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetCalendarInfoA".}
-  proc GetNumberFormat*(Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR, lpFormat: ptr NUMBERFMTA, lpNumberStr: LPSTR, cchNumber: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetNumberFormatA".}
-  proc GetCurrencyFormat*(Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR, lpFormat: ptr CURRENCYFMTA, lpCurrencyStr: LPSTR, cchCurrency: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetCurrencyFormatA".}
-  proc EnumCalendarInfo*(lpCalInfoEnumProc: CALINFO_ENUMPROCA, Locale: LCID, Calendar: CALID, CalType: CALTYPE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumCalendarInfoA".}
-  proc EnumCalendarInfoEx*(lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXA, Locale: LCID, Calendar: CALID, CalType: CALTYPE): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumCalendarInfoExA".}
-  proc EnumTimeFormats*(lpTimeFmtEnumProc: TIMEFMT_ENUMPROCA, Locale: LCID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumTimeFormatsA".}
-  proc EnumDateFormats*(lpDateFmtEnumProc: DATEFMT_ENUMPROCA, Locale: LCID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumDateFormatsA".}
-  proc EnumDateFormatsEx*(lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXA, Locale: LCID, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumDateFormatsExA".}
-  proc GetGeoInfo*(Location: GEOID, GeoType: GEOTYPE, lpGeoData: LPSTR, cchData: int32, LangId: LANGID): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetGeoInfoA".}
-  proc GetCPInfoEx*(CodePage: UINT, dwFlags: DWORD, lpCPInfoEx: LPCPINFOEXA): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetCPInfoExA".}
-  proc EnumSystemLocales*(lpLocaleEnumProc: LOCALE_ENUMPROCA, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumSystemLocalesA".}
-  proc EnumSystemLanguageGroups*(lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCA, dwFlags: DWORD, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumSystemLanguageGroupsA".}
-  proc EnumLanguageGroupLocales*(lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCA, LanguageGroup: LGRPID, dwFlags: DWORD, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumLanguageGroupLocalesA".}
-  proc EnumUILanguages*(lpUILanguageEnumProc: UILANGUAGE_ENUMPROCA, dwFlags: DWORD, lParam: LONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumUILanguagesA".}
-  proc EnumSystemCodePages*(lpCodePageEnumProc: CODEPAGE_ENUMPROCA, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumSystemCodePagesA".}
+
+  proc CompareString*(
+    Locale: LCID,
+    dwCmpFlags: DWORD,
+    lpString1: PCNZCH,
+    cchCount1: int32,
+    lpString2: PCNZCH,
+    cchCount2: int32,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "CompareStringA".}
+
+  proc LCMapString*(
+    Locale: LCID,
+    dwMapFlags: DWORD,
+    lpSrcStr: LPCSTR,
+    cchSrc: int32,
+    lpDestStr: LPSTR,
+    cchDest: int32,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "LCMapStringA".}
+
+  proc GetLocaleInfo*(
+    Locale: LCID, LCType: LCTYPE, lpLCData: LPSTR, cchData: int32
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetLocaleInfoA".}
+
+  proc FoldString*(
+    dwMapFlags: DWORD, lpSrcStr: LPCSTR, cchSrc: int32, lpDestStr: LPSTR, cchDest: int32
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "FoldStringA".}
+
+  proc GetStringTypeEx*(
+    Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR, cchSrc: int32, lpCharType: LPWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetStringTypeExA".}
+
+  proc GetDateFormat*(
+    Locale: LCID,
+    dwFlags: DWORD,
+    lpDate: ptr SYSTEMTIME,
+    lpFormat: LPCSTR,
+    lpDateStr: LPSTR,
+    cchDate: int32,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetDateFormatA".}
+
+  proc GetTimeFormat*(
+    Locale: LCID,
+    dwFlags: DWORD,
+    lpTime: ptr SYSTEMTIME,
+    lpFormat: LPCSTR,
+    lpTimeStr: LPSTR,
+    cchTime: int32,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetTimeFormatA".}
+
+  proc SetLocaleInfo*(
+    Locale: LCID, LCType: LCTYPE, lpLCData: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetLocaleInfoA".}
+
+  proc GetCalendarInfo*(
+    Locale: LCID,
+    Calendar: CALID,
+    CalType: CALTYPE,
+    lpCalData: LPSTR,
+    cchData: int32,
+    lpValue: LPDWORD,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetCalendarInfoA".}
+
+  proc SetCalendarInfo*(
+    Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "SetCalendarInfoA".}
+
+  proc GetNumberFormat*(
+    Locale: LCID,
+    dwFlags: DWORD,
+    lpValue: LPCSTR,
+    lpFormat: ptr NUMBERFMTA,
+    lpNumberStr: LPSTR,
+    cchNumber: int32,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetNumberFormatA".}
+
+  proc GetCurrencyFormat*(
+    Locale: LCID,
+    dwFlags: DWORD,
+    lpValue: LPCSTR,
+    lpFormat: ptr CURRENCYFMTA,
+    lpCurrencyStr: LPSTR,
+    cchCurrency: int32,
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetCurrencyFormatA".}
+
+  proc EnumCalendarInfo*(
+    lpCalInfoEnumProc: CALINFO_ENUMPROCA,
+    Locale: LCID,
+    Calendar: CALID,
+    CalType: CALTYPE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumCalendarInfoA".}
+
+  proc EnumCalendarInfoEx*(
+    lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXA,
+    Locale: LCID,
+    Calendar: CALID,
+    CalType: CALTYPE,
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumCalendarInfoExA".}
+
+  proc EnumTimeFormats*(
+    lpTimeFmtEnumProc: TIMEFMT_ENUMPROCA, Locale: LCID, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumTimeFormatsA".}
+
+  proc EnumDateFormats*(
+    lpDateFmtEnumProc: DATEFMT_ENUMPROCA, Locale: LCID, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumDateFormatsA".}
+
+  proc EnumDateFormatsEx*(
+    lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXA, Locale: LCID, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumDateFormatsExA".}
+
+  proc GetGeoInfo*(
+    Location: GEOID, GeoType: GEOTYPE, lpGeoData: LPSTR, cchData: int32, LangId: LANGID
+  ): int32 {.winapi, stdcall, dynlib: "kernel32", importc: "GetGeoInfoA".}
+
+  proc GetCPInfoEx*(
+    CodePage: UINT, dwFlags: DWORD, lpCPInfoEx: LPCPINFOEXA
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "GetCPInfoExA".}
+
+  proc EnumSystemLocales*(
+    lpLocaleEnumProc: LOCALE_ENUMPROCA, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumSystemLocalesA".}
+
+  proc EnumSystemLanguageGroups*(
+    lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCA, dwFlags: DWORD, lParam: LONG_PTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "EnumSystemLanguageGroupsA"
+  .}
+
+  proc EnumLanguageGroupLocales*(
+    lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCA,
+    LanguageGroup: LGRPID,
+    dwFlags: DWORD,
+    lParam: LONG_PTR,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "kernel32", importc: "EnumLanguageGroupLocalesA"
+  .}
+
+  proc EnumUILanguages*(
+    lpUILanguageEnumProc: UILANGUAGE_ENUMPROCA, dwFlags: DWORD, lParam: LONG_PTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumUILanguagesA".}
+
+  proc EnumSystemCodePages*(
+    lpCodePageEnumProc: CODEPAGE_ENUMPROCA, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "kernel32", importc: "EnumSystemCodePagesA".}
--- a/semicongine/thirdparty/winim/winim/inc/winperf.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winperf.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -25,69 +25,70 @@
     PerfTime100nSec*: LARGE_INTEGER
     SystemNameLength*: DWORD
     SystemNameOffset*: DWORD
+
   PPERF_DATA_BLOCK* = ptr PERF_DATA_BLOCK
+
 when winimCpu64:
-  type
-    PERF_OBJECT_TYPE* {.pure.} = object
-      TotalByteLength*: DWORD
-      DefinitionLength*: DWORD
-      HeaderLength*: DWORD
-      ObjectNameTitleIndex*: DWORD
-      ObjectNameTitle*: DWORD
-      ObjectHelpTitleIndex*: DWORD
-      ObjectHelpTitle*: DWORD
-      DetailLevel*: DWORD
-      NumCounters*: DWORD
-      DefaultCounter*: LONG
-      NumInstances*: LONG
-      CodePage*: DWORD
-      PerfTime*: LARGE_INTEGER
-      PerfFreq*: LARGE_INTEGER
+  type PERF_OBJECT_TYPE* {.pure.} = object
+    TotalByteLength*: DWORD
+    DefinitionLength*: DWORD
+    HeaderLength*: DWORD
+    ObjectNameTitleIndex*: DWORD
+    ObjectNameTitle*: DWORD
+    ObjectHelpTitleIndex*: DWORD
+    ObjectHelpTitle*: DWORD
+    DetailLevel*: DWORD
+    NumCounters*: DWORD
+    DefaultCounter*: LONG
+    NumInstances*: LONG
+    CodePage*: DWORD
+    PerfTime*: LARGE_INTEGER
+    PerfFreq*: LARGE_INTEGER
+
 when winimCpu32:
-  type
-    PERF_OBJECT_TYPE* {.pure.} = object
-      TotalByteLength*: DWORD
-      DefinitionLength*: DWORD
-      HeaderLength*: DWORD
-      ObjectNameTitleIndex*: DWORD
-      ObjectNameTitle*: LPWSTR
-      ObjectHelpTitleIndex*: DWORD
-      ObjectHelpTitle*: LPWSTR
-      DetailLevel*: DWORD
-      NumCounters*: DWORD
-      DefaultCounter*: LONG
-      NumInstances*: LONG
-      CodePage*: DWORD
-      PerfTime*: LARGE_INTEGER
-      PerfFreq*: LARGE_INTEGER
-type
-  PPERF_OBJECT_TYPE* = ptr PERF_OBJECT_TYPE
+  type PERF_OBJECT_TYPE* {.pure.} = object
+    TotalByteLength*: DWORD
+    DefinitionLength*: DWORD
+    HeaderLength*: DWORD
+    ObjectNameTitleIndex*: DWORD
+    ObjectNameTitle*: LPWSTR
+    ObjectHelpTitleIndex*: DWORD
+    ObjectHelpTitle*: LPWSTR
+    DetailLevel*: DWORD
+    NumCounters*: DWORD
+    DefaultCounter*: LONG
+    NumInstances*: LONG
+    CodePage*: DWORD
+    PerfTime*: LARGE_INTEGER
+    PerfFreq*: LARGE_INTEGER
+
+type PPERF_OBJECT_TYPE* = ptr PERF_OBJECT_TYPE
 when winimCpu64:
-  type
-    PERF_COUNTER_DEFINITION* {.pure.} = object
-      ByteLength*: DWORD
-      CounterNameTitleIndex*: DWORD
-      CounterNameTitle*: DWORD
-      CounterHelpTitleIndex*: DWORD
-      CounterHelpTitle*: DWORD
-      DefaultScale*: LONG
-      DetailLevel*: DWORD
-      CounterType*: DWORD
-      CounterSize*: DWORD
-      CounterOffset*: DWORD
+  type PERF_COUNTER_DEFINITION* {.pure.} = object
+    ByteLength*: DWORD
+    CounterNameTitleIndex*: DWORD
+    CounterNameTitle*: DWORD
+    CounterHelpTitleIndex*: DWORD
+    CounterHelpTitle*: DWORD
+    DefaultScale*: LONG
+    DetailLevel*: DWORD
+    CounterType*: DWORD
+    CounterSize*: DWORD
+    CounterOffset*: DWORD
+
 when winimCpu32:
-  type
-    PERF_COUNTER_DEFINITION* {.pure.} = object
-      ByteLength*: DWORD
-      CounterNameTitleIndex*: DWORD
-      CounterNameTitle*: LPWSTR
-      CounterHelpTitleIndex*: DWORD
-      CounterHelpTitle*: LPWSTR
-      DefaultScale*: LONG
-      DetailLevel*: DWORD
-      CounterType*: DWORD
-      CounterSize*: DWORD
-      CounterOffset*: DWORD
+  type PERF_COUNTER_DEFINITION* {.pure.} = object
+    ByteLength*: DWORD
+    CounterNameTitleIndex*: DWORD
+    CounterNameTitle*: LPWSTR
+    CounterHelpTitleIndex*: DWORD
+    CounterHelpTitle*: LPWSTR
+    DefaultScale*: LONG
+    DetailLevel*: DWORD
+    CounterType*: DWORD
+    CounterSize*: DWORD
+    CounterOffset*: DWORD
+
 type
   PPERF_COUNTER_DEFINITION* = ptr PERF_COUNTER_DEFINITION
   PERF_INSTANCE_DEFINITION* {.pure.} = object
@@ -97,10 +98,13 @@
     UniqueID*: LONG
     NameOffset*: DWORD
     NameLength*: DWORD
+
   PPERF_INSTANCE_DEFINITION* = ptr PERF_INSTANCE_DEFINITION
   PERF_COUNTER_BLOCK* {.pure.} = object
     ByteLength*: DWORD
+
   PPERF_COUNTER_BLOCK* = ptr PERF_COUNTER_BLOCK
+
 const
   PERF_DATA_VERSION* = 1
   PERF_DATA_REVISION* = 1
@@ -138,45 +142,111 @@
   PERF_DISPLAY_PERCENT* = 0x20000000
   PERF_DISPLAY_SECONDS* = 0x30000000
   PERF_DISPLAY_NOSHOW* = 0x40000000
-  PERF_COUNTER_COUNTER* = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or PERF_DELTA_COUNTER or PERF_DISPLAY_PER_SEC
-  PERF_COUNTER_TIMER* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
-  PERF_COUNTER_QUEUELEN_TYPE* = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_QUEUELEN or PERF_TIMER_TICK or PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX
-  PERF_COUNTER_LARGE_QUEUELEN_TYPE* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_QUEUELEN or PERF_TIMER_TICK or PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX
-  PERF_COUNTER_100NS_QUEUELEN_TYPE* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_QUEUELEN or PERF_TIMER_100NS or PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX
-  PERF_COUNTER_OBJ_TIME_QUEUELEN_TYPE* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_QUEUELEN or PERF_OBJECT_TIMER or PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX
-  PERF_COUNTER_BULK_COUNT* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or PERF_DELTA_COUNTER or PERF_DISPLAY_PER_SEC
-  PERF_COUNTER_TEXT* = PERF_SIZE_VARIABLE_LEN or PERF_TYPE_TEXT or PERF_TEXT_UNICODE or PERF_DISPLAY_NO_SUFFIX
-  PERF_COUNTER_RAWCOUNT* = PERF_SIZE_DWORD or PERF_TYPE_NUMBER or PERF_NUMBER_DECIMAL or PERF_DISPLAY_NO_SUFFIX
-  PERF_COUNTER_LARGE_RAWCOUNT* = PERF_SIZE_LARGE or PERF_TYPE_NUMBER or PERF_NUMBER_DECIMAL or PERF_DISPLAY_NO_SUFFIX
-  PERF_COUNTER_RAWCOUNT_HEX* = PERF_SIZE_DWORD or PERF_TYPE_NUMBER or PERF_NUMBER_HEX or PERF_DISPLAY_NO_SUFFIX
-  PERF_COUNTER_LARGE_RAWCOUNT_HEX* = PERF_SIZE_LARGE or PERF_TYPE_NUMBER or PERF_NUMBER_HEX or PERF_DISPLAY_NO_SUFFIX
-  PERF_SAMPLE_FRACTION* = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DELTA_COUNTER or PERF_DELTA_BASE or PERF_DISPLAY_PERCENT
-  PERF_SAMPLE_COUNTER* = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX
+  PERF_COUNTER_COUNTER* =
+    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or
+    PERF_DELTA_COUNTER or PERF_DISPLAY_PER_SEC
+  PERF_COUNTER_TIMER* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or
+    PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
+  PERF_COUNTER_QUEUELEN_TYPE* =
+    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_QUEUELEN or PERF_TIMER_TICK or
+    PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX
+  PERF_COUNTER_LARGE_QUEUELEN_TYPE* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_QUEUELEN or PERF_TIMER_TICK or
+    PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX
+  PERF_COUNTER_100NS_QUEUELEN_TYPE* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_QUEUELEN or PERF_TIMER_100NS or
+    PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX
+  PERF_COUNTER_OBJ_TIME_QUEUELEN_TYPE* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_QUEUELEN or PERF_OBJECT_TIMER or
+    PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX
+  PERF_COUNTER_BULK_COUNT* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or
+    PERF_DELTA_COUNTER or PERF_DISPLAY_PER_SEC
+  PERF_COUNTER_TEXT* =
+    PERF_SIZE_VARIABLE_LEN or PERF_TYPE_TEXT or PERF_TEXT_UNICODE or
+    PERF_DISPLAY_NO_SUFFIX
+  PERF_COUNTER_RAWCOUNT* =
+    PERF_SIZE_DWORD or PERF_TYPE_NUMBER or PERF_NUMBER_DECIMAL or PERF_DISPLAY_NO_SUFFIX
+  PERF_COUNTER_LARGE_RAWCOUNT* =
+    PERF_SIZE_LARGE or PERF_TYPE_NUMBER or PERF_NUMBER_DECIMAL or PERF_DISPLAY_NO_SUFFIX
+  PERF_COUNTER_RAWCOUNT_HEX* =
+    PERF_SIZE_DWORD or PERF_TYPE_NUMBER or PERF_NUMBER_HEX or PERF_DISPLAY_NO_SUFFIX
+  PERF_COUNTER_LARGE_RAWCOUNT_HEX* =
+    PERF_SIZE_LARGE or PERF_TYPE_NUMBER or PERF_NUMBER_HEX or PERF_DISPLAY_NO_SUFFIX
+  PERF_SAMPLE_FRACTION* =
+    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DELTA_COUNTER or
+    PERF_DELTA_BASE or PERF_DISPLAY_PERCENT
+  PERF_SAMPLE_COUNTER* =
+    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or
+    PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX
   PERF_COUNTER_NODATA* = PERF_SIZE_ZERO or PERF_DISPLAY_NOSHOW
-  PERF_COUNTER_TIMER_INV* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or PERF_DELTA_COUNTER or PERF_INVERSE_COUNTER or PERF_DISPLAY_PERCENT
-  PERF_SAMPLE_BASE* = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW or 0x00000001
-  PERF_AVERAGE_TIMER* = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_SECONDS
-  PERF_AVERAGE_BASE* = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW or 0x00000002
-  PERF_AVERAGE_BULK* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_NOSHOW
-  PERF_OBJ_TIME_TIMER* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_OBJECT_TIMER or PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
-  PERF_100NSEC_TIMER* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_100NS or PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
-  PERF_100NSEC_TIMER_INV* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_100NS or PERF_DELTA_COUNTER or PERF_INVERSE_COUNTER or PERF_DISPLAY_PERCENT
-  PERF_COUNTER_MULTI_TIMER* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_DELTA_COUNTER or PERF_TIMER_TICK or PERF_MULTI_COUNTER or PERF_DISPLAY_PERCENT
-  PERF_COUNTER_MULTI_TIMER_INV* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_DELTA_COUNTER or PERF_MULTI_COUNTER or PERF_TIMER_TICK or PERF_INVERSE_COUNTER or PERF_DISPLAY_PERCENT
-  PERF_COUNTER_MULTI_BASE* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_MULTI_COUNTER or PERF_DISPLAY_NOSHOW
-  PERF_100NSEC_MULTI_TIMER* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_DELTA_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_100NS or PERF_MULTI_COUNTER or PERF_DISPLAY_PERCENT
-  PERF_100NSEC_MULTI_TIMER_INV* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_DELTA_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_100NS or PERF_MULTI_COUNTER or PERF_INVERSE_COUNTER or PERF_DISPLAY_PERCENT
-  PERF_RAW_FRACTION* = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_PERCENT
-  PERF_LARGE_RAW_FRACTION* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_PERCENT
-  PERF_RAW_BASE* = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW or 0x00000003
-  PERF_LARGE_RAW_BASE* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW
-  PERF_ELAPSED_TIME* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_ELAPSED or PERF_OBJECT_TIMER or PERF_DISPLAY_SECONDS
+  PERF_COUNTER_TIMER_INV* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or
+    PERF_DELTA_COUNTER or PERF_INVERSE_COUNTER or PERF_DISPLAY_PERCENT
+  PERF_SAMPLE_BASE* =
+    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW or
+    0x00000001
+  PERF_AVERAGE_TIMER* =
+    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_SECONDS
+  PERF_AVERAGE_BASE* =
+    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW or
+    0x00000002
+  PERF_AVERAGE_BULK* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_NOSHOW
+  PERF_OBJ_TIME_TIMER* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_OBJECT_TIMER or
+    PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
+  PERF_100NSEC_TIMER* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_100NS or
+    PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
+  PERF_100NSEC_TIMER_INV* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_100NS or
+    PERF_DELTA_COUNTER or PERF_INVERSE_COUNTER or PERF_DISPLAY_PERCENT
+  PERF_COUNTER_MULTI_TIMER* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_DELTA_COUNTER or
+    PERF_TIMER_TICK or PERF_MULTI_COUNTER or PERF_DISPLAY_PERCENT
+  PERF_COUNTER_MULTI_TIMER_INV* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_DELTA_COUNTER or
+    PERF_MULTI_COUNTER or PERF_TIMER_TICK or PERF_INVERSE_COUNTER or PERF_DISPLAY_PERCENT
+  PERF_COUNTER_MULTI_BASE* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_MULTI_COUNTER or
+    PERF_DISPLAY_NOSHOW
+  PERF_100NSEC_MULTI_TIMER* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_DELTA_COUNTER or PERF_COUNTER_RATE or
+    PERF_TIMER_100NS or PERF_MULTI_COUNTER or PERF_DISPLAY_PERCENT
+  PERF_100NSEC_MULTI_TIMER_INV* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_DELTA_COUNTER or PERF_COUNTER_RATE or
+    PERF_TIMER_100NS or PERF_MULTI_COUNTER or PERF_INVERSE_COUNTER or
+    PERF_DISPLAY_PERCENT
+  PERF_RAW_FRACTION* =
+    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_PERCENT
+  PERF_LARGE_RAW_FRACTION* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_PERCENT
+  PERF_RAW_BASE* =
+    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW or
+    0x00000003
+  PERF_LARGE_RAW_BASE* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW
+  PERF_ELAPSED_TIME* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_ELAPSED or PERF_OBJECT_TIMER or
+    PERF_DISPLAY_SECONDS
   PERF_COUNTER_HISTOGRAM_TYPE* = 0x80000000'i32
-  PERF_COUNTER_DELTA* = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_VALUE or PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX
-  PERF_COUNTER_LARGE_DELTA* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_VALUE or PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX
-  PERF_PRECISION_SYSTEM_TIMER* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_PRECISION or PERF_TIMER_TICK or PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
-  PERF_PRECISION_100NS_TIMER* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_PRECISION or PERF_TIMER_100NS or PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
-  PERF_PRECISION_OBJECT_TIMER* = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_PRECISION or PERF_OBJECT_TIMER or PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
+  PERF_COUNTER_DELTA* =
+    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_VALUE or PERF_DELTA_COUNTER or
+    PERF_DISPLAY_NO_SUFFIX
+  PERF_COUNTER_LARGE_DELTA* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_VALUE or PERF_DELTA_COUNTER or
+    PERF_DISPLAY_NO_SUFFIX
+  PERF_PRECISION_SYSTEM_TIMER* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_PRECISION or PERF_TIMER_TICK or
+    PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
+  PERF_PRECISION_100NS_TIMER* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_PRECISION or PERF_TIMER_100NS or
+    PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
+  PERF_PRECISION_OBJECT_TIMER* =
+    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_PRECISION or PERF_OBJECT_TIMER or
+    PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
   PERF_PRECISION_TIMESTAMP* = PERF_LARGE_RAW_BASE
   PERF_DETAIL_NOVICE* = 100
   PERF_DETAIL_ADVANCED* = 200
@@ -192,7 +262,9 @@
   WINPERF_LOG_DEBUG* = 2
   WINPERF_LOG_VERBOSE* = 3
 type
-  PM_OPEN_PROC* = proc (P1: LPWSTR): DWORD {.stdcall.}
-  PM_COLLECT_PROC* = proc (P1: LPWSTR, P2: ptr LPVOID, P3: LPDWORD, P4: LPDWORD): DWORD {.stdcall.}
-  PM_CLOSE_PROC* = proc (): DWORD {.stdcall.}
-  PM_QUERY_PROC* = proc (P1: LPDWORD, P2: ptr LPVOID, P3: LPDWORD, P4: LPDWORD): DWORD {.stdcall.}
+  PM_OPEN_PROC* = proc(P1: LPWSTR): DWORD {.stdcall.}
+  PM_COLLECT_PROC* =
+    proc(P1: LPWSTR, P2: ptr LPVOID, P3: LPDWORD, P4: LPDWORD): DWORD {.stdcall.}
+  PM_CLOSE_PROC* = proc(): DWORD {.stdcall.}
+  PM_QUERY_PROC* =
+    proc(P1: LPDWORD, P2: ptr LPVOID, P3: LPDWORD, P4: LPDWORD): DWORD {.stdcall.}
--- a/semicongine/thirdparty/winim/winim/inc/winreg.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winreg.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -16,32 +16,44 @@
     valuelen*: int32
     value_context*: LPVOID
     val_buff_ptr*: LPVOID
+
   PVALCONTEXT* = ptr val_context
   PVALUEA* {.pure.} = object
     pv_valuename*: LPSTR
     pv_valuelen*: int32
     pv_value_context*: LPVOID
     pv_type*: DWORD
+
   PPVALUEA* = ptr PVALUEA
   PVALUEW* {.pure.} = object
     pv_valuename*: LPWSTR
     pv_valuelen*: int32
     pv_value_context*: LPVOID
     pv_type*: DWORD
+
   PPVALUEW* = ptr PVALUEW
-  QUERYHANDLER* = proc (keycontext: LPVOID, val_list: PVALCONTEXT, num_vals: DWORD, outputbuffer: LPVOID, total_outlen: ptr DWORD, input_blen: DWORD): DWORD {.cdecl.}
+  QUERYHANDLER* = proc(
+    keycontext: LPVOID,
+    val_list: PVALCONTEXT,
+    num_vals: DWORD,
+    outputbuffer: LPVOID,
+    total_outlen: ptr DWORD,
+    input_blen: DWORD,
+  ): DWORD {.cdecl.}
   PQUERYHANDLER* = QUERYHANDLER
   VALENTA* {.pure.} = object
     ve_valuename*: LPSTR
     ve_valuelen*: DWORD
     ve_valueptr*: DWORD_PTR
     ve_type*: DWORD
+
   PVALENTA* = ptr VALENTA
   VALENTW* {.pure.} = object
     ve_valuename*: LPWSTR
     ve_valuelen*: DWORD
     ve_valueptr*: DWORD_PTR
     ve_type*: DWORD
+
   PVALENTW* = ptr VALENTW
   REG_PROVIDER* {.pure.} = object
     pi_R0_1val*: PQUERYHANDLER
@@ -50,7 +62,9 @@
     pi_R3_allvals*: PQUERYHANDLER
     pi_flags*: DWORD
     pi_key_context*: LPVOID
+
   PPROVIDER* = ptr REG_PROVIDER
+
 const
   RRF_RT_REG_NONE* = 0x00000001
   RRF_RT_REG_SZ* = 0x00000002
@@ -142,7 +156,7 @@
   REASON_UNKNOWN* = SHTDN_REASON_UNKNOWN
   REASON_LEGACY_API* = SHTDN_REASON_LEGACY_API
   REASON_PLANNED_FLAG* = SHTDN_REASON_FLAG_PLANNED
-  MAX_SHUTDOWN_TIMEOUT* = 10*365*24*60*60
+  MAX_SHUTDOWN_TIMEOUT* = 10 * 365 * 24 * 60 * 60
   SHUTDOWN_FORCE_OTHERS* = 0x00000001
   SHUTDOWN_FORCE_SELF* = 0x00000002
   SHUTDOWN_RESTART* = 0x00000004
@@ -162,179 +176,1097 @@
   HKEY_PERFORMANCE_TEXT* = HKEY 0x80000050'i32
   HKEY_USERS* = HKEY 0x80000003'i32
 proc RegCloseKey*(hKey: HKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegOverridePredefKey*(hKey: HKEY, hNewHKey: HKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegOpenUserClassesRoot*(hToken: HANDLE, dwOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegOpenCurrentUser*(samDesired: REGSAM, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+proc RegOverridePredefKey*(
+  hKey: HKEY, hNewHKey: HKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegOpenUserClassesRoot*(
+  hToken: HANDLE, dwOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegOpenCurrentUser*(
+  samDesired: REGSAM, phkResult: PHKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
 proc RegDisablePredefinedCache*(): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegConnectRegistryA*(lpMachineName: LPCSTR, hKey: HKEY, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegConnectRegistryW*(lpMachineName: LPCWSTR, hKey: HKEY, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegConnectRegistryExA*(lpMachineName: LPCSTR, hKey: HKEY, Flags: ULONG, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegConnectRegistryExW*(lpMachineName: LPCWSTR, hKey: HKEY, Flags: ULONG, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegCreateKeyA*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegCreateKeyW*(hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegCreateKeyExA*(hKey: HKEY, lpSubKey: LPCSTR, Reserved: DWORD, lpClass: LPSTR, dwOptions: DWORD, samDesired: REGSAM, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, phkResult: PHKEY, lpdwDisposition: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegCreateKeyExW*(hKey: HKEY, lpSubKey: LPCWSTR, Reserved: DWORD, lpClass: LPWSTR, dwOptions: DWORD, samDesired: REGSAM, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, phkResult: PHKEY, lpdwDisposition: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegDeleteKeyA*(hKey: HKEY, lpSubKey: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegDeleteKeyW*(hKey: HKEY, lpSubKey: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegDeleteKeyExA*(hKey: HKEY, lpSubKey: LPCSTR, samDesired: REGSAM, Reserved: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegDeleteKeyExW*(hKey: HKEY, lpSubKey: LPCWSTR, samDesired: REGSAM, Reserved: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegDisableReflectionKey*(hBase: HKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegEnableReflectionKey*(hBase: HKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegQueryReflectionKey*(hBase: HKEY, bIsReflectionDisabled: ptr WINBOOL): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegDeleteValueA*(hKey: HKEY, lpValueName: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegDeleteValueW*(hKey: HKEY, lpValueName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegEnumKeyA*(hKey: HKEY, dwIndex: DWORD, lpName: LPSTR, cchName: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegEnumKeyW*(hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR, cchName: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegEnumKeyExA*(hKey: HKEY, dwIndex: DWORD, lpName: LPSTR, lpcchName: LPDWORD, lpReserved: LPDWORD, lpClass: LPSTR, lpcchClass: LPDWORD, lpftLastWriteTime: PFILETIME): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegEnumKeyExW*(hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR, lpcchName: LPDWORD, lpReserved: LPDWORD, lpClass: LPWSTR, lpcchClass: LPDWORD, lpftLastWriteTime: PFILETIME): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegEnumValueA*(hKey: HKEY, dwIndex: DWORD, lpValueName: LPSTR, lpcchValueName: LPDWORD, lpReserved: LPDWORD, lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegEnumValueW*(hKey: HKEY, dwIndex: DWORD, lpValueName: LPWSTR, lpcchValueName: LPDWORD, lpReserved: LPDWORD, lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+proc RegConnectRegistryA*(
+  lpMachineName: LPCSTR, hKey: HKEY, phkResult: PHKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegConnectRegistryW*(
+  lpMachineName: LPCWSTR, hKey: HKEY, phkResult: PHKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegConnectRegistryExA*(
+  lpMachineName: LPCSTR, hKey: HKEY, Flags: ULONG, phkResult: PHKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegConnectRegistryExW*(
+  lpMachineName: LPCWSTR, hKey: HKEY, Flags: ULONG, phkResult: PHKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegCreateKeyA*(
+  hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegCreateKeyW*(
+  hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegCreateKeyExA*(
+  hKey: HKEY,
+  lpSubKey: LPCSTR,
+  Reserved: DWORD,
+  lpClass: LPSTR,
+  dwOptions: DWORD,
+  samDesired: REGSAM,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  phkResult: PHKEY,
+  lpdwDisposition: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegCreateKeyExW*(
+  hKey: HKEY,
+  lpSubKey: LPCWSTR,
+  Reserved: DWORD,
+  lpClass: LPWSTR,
+  dwOptions: DWORD,
+  samDesired: REGSAM,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  phkResult: PHKEY,
+  lpdwDisposition: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegDeleteKeyA*(
+  hKey: HKEY, lpSubKey: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegDeleteKeyW*(
+  hKey: HKEY, lpSubKey: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegDeleteKeyExA*(
+  hKey: HKEY, lpSubKey: LPCSTR, samDesired: REGSAM, Reserved: DWORD
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegDeleteKeyExW*(
+  hKey: HKEY, lpSubKey: LPCWSTR, samDesired: REGSAM, Reserved: DWORD
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegDisableReflectionKey*(
+  hBase: HKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegEnableReflectionKey*(
+  hBase: HKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegQueryReflectionKey*(
+  hBase: HKEY, bIsReflectionDisabled: ptr WINBOOL
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegDeleteValueA*(
+  hKey: HKEY, lpValueName: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegDeleteValueW*(
+  hKey: HKEY, lpValueName: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegEnumKeyA*(
+  hKey: HKEY, dwIndex: DWORD, lpName: LPSTR, cchName: DWORD
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegEnumKeyW*(
+  hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR, cchName: DWORD
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegEnumKeyExA*(
+  hKey: HKEY,
+  dwIndex: DWORD,
+  lpName: LPSTR,
+  lpcchName: LPDWORD,
+  lpReserved: LPDWORD,
+  lpClass: LPSTR,
+  lpcchClass: LPDWORD,
+  lpftLastWriteTime: PFILETIME,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegEnumKeyExW*(
+  hKey: HKEY,
+  dwIndex: DWORD,
+  lpName: LPWSTR,
+  lpcchName: LPDWORD,
+  lpReserved: LPDWORD,
+  lpClass: LPWSTR,
+  lpcchClass: LPDWORD,
+  lpftLastWriteTime: PFILETIME,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegEnumValueA*(
+  hKey: HKEY,
+  dwIndex: DWORD,
+  lpValueName: LPSTR,
+  lpcchValueName: LPDWORD,
+  lpReserved: LPDWORD,
+  lpType: LPDWORD,
+  lpData: LPBYTE,
+  lpcbData: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegEnumValueW*(
+  hKey: HKEY,
+  dwIndex: DWORD,
+  lpValueName: LPWSTR,
+  lpcchValueName: LPDWORD,
+  lpReserved: LPDWORD,
+  lpType: LPDWORD,
+  lpData: LPBYTE,
+  lpcbData: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
 proc RegFlushKey*(hKey: HKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegGetKeySecurity*(hKey: HKEY, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, lpcbSecurityDescriptor: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegLoadKeyA*(hKey: HKEY, lpSubKey: LPCSTR, lpFile: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegLoadKeyW*(hKey: HKEY, lpSubKey: LPCWSTR, lpFile: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegNotifyChangeKeyValue*(hKey: HKEY, bWatchSubtree: WINBOOL, dwNotifyFilter: DWORD, hEvent: HANDLE, fAsynchronous: WINBOOL): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegOpenKeyA*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegOpenKeyW*(hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegOpenKeyExA*(hKey: HKEY, lpSubKey: LPCSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegOpenKeyExW*(hKey: HKEY, lpSubKey: LPCWSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegQueryInfoKeyA*(hKey: HKEY, lpClass: LPSTR, lpcchClass: LPDWORD, lpReserved: LPDWORD, lpcSubKeys: LPDWORD, lpcbMaxSubKeyLen: LPDWORD, lpcbMaxClassLen: LPDWORD, lpcValues: LPDWORD, lpcbMaxValueNameLen: LPDWORD, lpcbMaxValueLen: LPDWORD, lpcbSecurityDescriptor: LPDWORD, lpftLastWriteTime: PFILETIME): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegQueryInfoKeyW*(hKey: HKEY, lpClass: LPWSTR, lpcchClass: LPDWORD, lpReserved: LPDWORD, lpcSubKeys: LPDWORD, lpcbMaxSubKeyLen: LPDWORD, lpcbMaxClassLen: LPDWORD, lpcValues: LPDWORD, lpcbMaxValueNameLen: LPDWORD, lpcbMaxValueLen: LPDWORD, lpcbSecurityDescriptor: LPDWORD, lpftLastWriteTime: PFILETIME): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegQueryValueA*(hKey: HKEY, lpSubKey: LPCSTR, lpData: LPSTR, lpcbData: PLONG): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegQueryValueW*(hKey: HKEY, lpSubKey: LPCWSTR, lpData: LPWSTR, lpcbData: PLONG): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegQueryMultipleValuesA*(hKey: HKEY, val_list: PVALENTA, num_vals: DWORD, lpValueBuf: LPSTR, ldwTotsize: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegQueryMultipleValuesW*(hKey: HKEY, val_list: PVALENTW, num_vals: DWORD, lpValueBuf: LPWSTR, ldwTotsize: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegQueryValueExA*(hKey: HKEY, lpValueName: LPCSTR, lpReserved: LPDWORD, lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegQueryValueExW*(hKey: HKEY, lpValueName: LPCWSTR, lpReserved: LPDWORD, lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegReplaceKeyA*(hKey: HKEY, lpSubKey: LPCSTR, lpNewFile: LPCSTR, lpOldFile: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegReplaceKeyW*(hKey: HKEY, lpSubKey: LPCWSTR, lpNewFile: LPCWSTR, lpOldFile: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegRestoreKeyA*(hKey: HKEY, lpFile: LPCSTR, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegRestoreKeyW*(hKey: HKEY, lpFile: LPCWSTR, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegSaveKeyA*(hKey: HKEY, lpFile: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegSaveKeyW*(hKey: HKEY, lpFile: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegSetKeySecurity*(hKey: HKEY, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegSetValueA*(hKey: HKEY, lpSubKey: LPCSTR, dwType: DWORD, lpData: LPCSTR, cbData: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegSetValueW*(hKey: HKEY, lpSubKey: LPCWSTR, dwType: DWORD, lpData: LPCWSTR, cbData: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegSetValueExA*(hKey: HKEY, lpValueName: LPCSTR, Reserved: DWORD, dwType: DWORD, lpData: ptr BYTE, cbData: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegSetValueExW*(hKey: HKEY, lpValueName: LPCWSTR, Reserved: DWORD, dwType: DWORD, lpData: ptr BYTE, cbData: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegUnLoadKeyA*(hKey: HKEY, lpSubKey: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegUnLoadKeyW*(hKey: HKEY, lpSubKey: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegGetValueA*(hkey: HKEY, lpSubKey: LPCSTR, lpValue: LPCSTR, dwFlags: DWORD, pdwType: LPDWORD, pvData: PVOID, pcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegGetValueW*(hkey: HKEY, lpSubKey: LPCWSTR, lpValue: LPCWSTR, dwFlags: DWORD, pdwType: LPDWORD, pvData: PVOID, pcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc InitiateSystemShutdownA*(lpMachineName: LPSTR, lpMessage: LPSTR, dwTimeout: DWORD, bForceAppsClosed: WINBOOL, bRebootAfterShutdown: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc InitiateSystemShutdownW*(lpMachineName: LPWSTR, lpMessage: LPWSTR, dwTimeout: DWORD, bForceAppsClosed: WINBOOL, bRebootAfterShutdown: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AbortSystemShutdownA*(lpMachineName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc AbortSystemShutdownW*(lpMachineName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc InitiateSystemShutdownExA*(lpMachineName: LPSTR, lpMessage: LPSTR, dwTimeout: DWORD, bForceAppsClosed: WINBOOL, bRebootAfterShutdown: WINBOOL, dwReason: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc InitiateSystemShutdownExW*(lpMachineName: LPWSTR, lpMessage: LPWSTR, dwTimeout: DWORD, bForceAppsClosed: WINBOOL, bRebootAfterShutdown: WINBOOL, dwReason: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegSaveKeyExA*(hKey: HKEY, lpFile: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, Flags: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegSaveKeyExW*(hKey: HKEY, lpFile: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, Flags: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegCopyTreeA*(hKeySrc: HKEY, lpSubKey: LPCSTR, hKeyDest: HKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegCopyTreeW*(hKeySrc: HKEY, lpSubKey: LPCWSTR, hKeyDest: HKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegCreateKeyTransactedA*(hKey: HKEY, lpSubKey: LPCSTR, Reserved: DWORD, lpClass: LPSTR, dwOptions: DWORD, samDesired: REGSAM, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, phkResult: PHKEY, lpdwDisposition: LPDWORD, hTransaction: HANDLE, pExtendedParemeter: PVOID): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegCreateKeyTransactedW*(hKey: HKEY, lpSubKey: LPCWSTR, Reserved: DWORD, lpClass: LPWSTR, dwOptions: DWORD, samDesired: REGSAM, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, phkResult: PHKEY, lpdwDisposition: LPDWORD, hTransaction: HANDLE, pExtendedParemeter: PVOID): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegDeleteKeyTransactedA*(hKey: HKEY, lpSubKey: LPCSTR, samDesired: REGSAM, Reserved: DWORD, hTransaction: HANDLE, pExtendedParameter: PVOID): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegDeleteKeyTransactedW*(hKey: HKEY, lpSubKey: LPCWSTR, samDesired: REGSAM, Reserved: DWORD, hTransaction: HANDLE, pExtendedParameter: PVOID): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegDeleteKeyValueA*(hKey: HKEY, lpSubKey: LPCSTR, lpValueName: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegDeleteKeyValueW*(hKey: HKEY, lpSubKey: LPCWSTR, lpValueName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegDeleteTreeA*(hKey: HKEY, lpSubKey: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegDeleteTreeW*(hKey: HKEY, lpSubKey: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegDisablePredefinedCacheEx*(): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegLoadAppKeyA*(lpFile: LPCSTR, phkResult: PHKEY, samDesired: REGSAM, dwOptions: DWORD, Reserved: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegLoadAppKeyW*(lpFile: LPCWSTR, phkResult: PHKEY, samDesired: REGSAM, dwOptions: DWORD, Reserved: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegLoadMUIStringA*(hKey: HKEY, pszValue: LPCSTR, pszOutBuf: LPSTR, cbOutBuf: DWORD, pcbData: LPDWORD, Flags: DWORD, pszDirectory: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegLoadMUIStringW*(hKey: HKEY, pszValue: LPCWSTR, pszOutBuf: LPWSTR, cbOutBuf: DWORD, pcbData: LPDWORD, Flags: DWORD, pszDirectory: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegOpenKeyTransactedA*(hKey: HKEY, lpSubKey: LPCSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY, hTransaction: HANDLE, pExtendedParameter: PVOID): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegOpenKeyTransactedW*(hKey: HKEY, lpSubKey: LPCWSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY, hTransaction: HANDLE, pExtendedParameter: PVOID): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegSetKeyValueA*(hKey: HKEY, lpSubKey: LPCSTR, lpValueName: LPCSTR, dwType: DWORD, lpData: LPCVOID, cbData: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegSetKeyValueW*(hKey: HKEY, lpSubKey: LPCSTR, lpValueName: LPCSTR, dwType: DWORD, lpData: LPCVOID, cbData: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc InitiateShutdownA*(lpMachineName: LPSTR, lpMessage: LPSTR, dwGracePeriod: DWORD, dwShutdownFlags: DWORD, dwReason: DWORD): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc InitiateShutdownW*(lpMachineName: LPWSTR, lpMessage: LPWSTR, dwGracePeriod: DWORD, dwShutdownFlags: DWORD, dwReason: DWORD): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+proc RegGetKeySecurity*(
+  hKey: HKEY,
+  SecurityInformation: SECURITY_INFORMATION,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  lpcbSecurityDescriptor: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegLoadKeyA*(
+  hKey: HKEY, lpSubKey: LPCSTR, lpFile: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegLoadKeyW*(
+  hKey: HKEY, lpSubKey: LPCWSTR, lpFile: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegNotifyChangeKeyValue*(
+  hKey: HKEY,
+  bWatchSubtree: WINBOOL,
+  dwNotifyFilter: DWORD,
+  hEvent: HANDLE,
+  fAsynchronous: WINBOOL,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegOpenKeyA*(
+  hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegOpenKeyW*(
+  hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegOpenKeyExA*(
+  hKey: HKEY, lpSubKey: LPCSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegOpenKeyExW*(
+  hKey: HKEY, lpSubKey: LPCWSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegQueryInfoKeyA*(
+  hKey: HKEY,
+  lpClass: LPSTR,
+  lpcchClass: LPDWORD,
+  lpReserved: LPDWORD,
+  lpcSubKeys: LPDWORD,
+  lpcbMaxSubKeyLen: LPDWORD,
+  lpcbMaxClassLen: LPDWORD,
+  lpcValues: LPDWORD,
+  lpcbMaxValueNameLen: LPDWORD,
+  lpcbMaxValueLen: LPDWORD,
+  lpcbSecurityDescriptor: LPDWORD,
+  lpftLastWriteTime: PFILETIME,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegQueryInfoKeyW*(
+  hKey: HKEY,
+  lpClass: LPWSTR,
+  lpcchClass: LPDWORD,
+  lpReserved: LPDWORD,
+  lpcSubKeys: LPDWORD,
+  lpcbMaxSubKeyLen: LPDWORD,
+  lpcbMaxClassLen: LPDWORD,
+  lpcValues: LPDWORD,
+  lpcbMaxValueNameLen: LPDWORD,
+  lpcbMaxValueLen: LPDWORD,
+  lpcbSecurityDescriptor: LPDWORD,
+  lpftLastWriteTime: PFILETIME,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegQueryValueA*(
+  hKey: HKEY, lpSubKey: LPCSTR, lpData: LPSTR, lpcbData: PLONG
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegQueryValueW*(
+  hKey: HKEY, lpSubKey: LPCWSTR, lpData: LPWSTR, lpcbData: PLONG
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegQueryMultipleValuesA*(
+  hKey: HKEY,
+  val_list: PVALENTA,
+  num_vals: DWORD,
+  lpValueBuf: LPSTR,
+  ldwTotsize: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegQueryMultipleValuesW*(
+  hKey: HKEY,
+  val_list: PVALENTW,
+  num_vals: DWORD,
+  lpValueBuf: LPWSTR,
+  ldwTotsize: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegQueryValueExA*(
+  hKey: HKEY,
+  lpValueName: LPCSTR,
+  lpReserved: LPDWORD,
+  lpType: LPDWORD,
+  lpData: LPBYTE,
+  lpcbData: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegQueryValueExW*(
+  hKey: HKEY,
+  lpValueName: LPCWSTR,
+  lpReserved: LPDWORD,
+  lpType: LPDWORD,
+  lpData: LPBYTE,
+  lpcbData: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegReplaceKeyA*(
+  hKey: HKEY, lpSubKey: LPCSTR, lpNewFile: LPCSTR, lpOldFile: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegReplaceKeyW*(
+  hKey: HKEY, lpSubKey: LPCWSTR, lpNewFile: LPCWSTR, lpOldFile: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegRestoreKeyA*(
+  hKey: HKEY, lpFile: LPCSTR, dwFlags: DWORD
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegRestoreKeyW*(
+  hKey: HKEY, lpFile: LPCWSTR, dwFlags: DWORD
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegSaveKeyA*(
+  hKey: HKEY, lpFile: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegSaveKeyW*(
+  hKey: HKEY, lpFile: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegSetKeySecurity*(
+  hKey: HKEY,
+  SecurityInformation: SECURITY_INFORMATION,
+  pSecurityDescriptor: PSECURITY_DESCRIPTOR,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegSetValueA*(
+  hKey: HKEY, lpSubKey: LPCSTR, dwType: DWORD, lpData: LPCSTR, cbData: DWORD
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegSetValueW*(
+  hKey: HKEY, lpSubKey: LPCWSTR, dwType: DWORD, lpData: LPCWSTR, cbData: DWORD
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegSetValueExA*(
+  hKey: HKEY,
+  lpValueName: LPCSTR,
+  Reserved: DWORD,
+  dwType: DWORD,
+  lpData: ptr BYTE,
+  cbData: DWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegSetValueExW*(
+  hKey: HKEY,
+  lpValueName: LPCWSTR,
+  Reserved: DWORD,
+  dwType: DWORD,
+  lpData: ptr BYTE,
+  cbData: DWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegUnLoadKeyA*(
+  hKey: HKEY, lpSubKey: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegUnLoadKeyW*(
+  hKey: HKEY, lpSubKey: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegGetValueA*(
+  hkey: HKEY,
+  lpSubKey: LPCSTR,
+  lpValue: LPCSTR,
+  dwFlags: DWORD,
+  pdwType: LPDWORD,
+  pvData: PVOID,
+  pcbData: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegGetValueW*(
+  hkey: HKEY,
+  lpSubKey: LPCWSTR,
+  lpValue: LPCWSTR,
+  dwFlags: DWORD,
+  pdwType: LPDWORD,
+  pvData: PVOID,
+  pcbData: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc InitiateSystemShutdownA*(
+  lpMachineName: LPSTR,
+  lpMessage: LPSTR,
+  dwTimeout: DWORD,
+  bForceAppsClosed: WINBOOL,
+  bRebootAfterShutdown: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc InitiateSystemShutdownW*(
+  lpMachineName: LPWSTR,
+  lpMessage: LPWSTR,
+  dwTimeout: DWORD,
+  bForceAppsClosed: WINBOOL,
+  bRebootAfterShutdown: WINBOOL,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AbortSystemShutdownA*(
+  lpMachineName: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc AbortSystemShutdownW*(
+  lpMachineName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc InitiateSystemShutdownExA*(
+  lpMachineName: LPSTR,
+  lpMessage: LPSTR,
+  dwTimeout: DWORD,
+  bForceAppsClosed: WINBOOL,
+  bRebootAfterShutdown: WINBOOL,
+  dwReason: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc InitiateSystemShutdownExW*(
+  lpMachineName: LPWSTR,
+  lpMessage: LPWSTR,
+  dwTimeout: DWORD,
+  bForceAppsClosed: WINBOOL,
+  bRebootAfterShutdown: WINBOOL,
+  dwReason: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegSaveKeyExA*(
+  hKey: HKEY, lpFile: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, Flags: DWORD
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegSaveKeyExW*(
+  hKey: HKEY, lpFile: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, Flags: DWORD
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegCopyTreeA*(
+  hKeySrc: HKEY, lpSubKey: LPCSTR, hKeyDest: HKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegCopyTreeW*(
+  hKeySrc: HKEY, lpSubKey: LPCWSTR, hKeyDest: HKEY
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegCreateKeyTransactedA*(
+  hKey: HKEY,
+  lpSubKey: LPCSTR,
+  Reserved: DWORD,
+  lpClass: LPSTR,
+  dwOptions: DWORD,
+  samDesired: REGSAM,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  phkResult: PHKEY,
+  lpdwDisposition: LPDWORD,
+  hTransaction: HANDLE,
+  pExtendedParemeter: PVOID,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegCreateKeyTransactedW*(
+  hKey: HKEY,
+  lpSubKey: LPCWSTR,
+  Reserved: DWORD,
+  lpClass: LPWSTR,
+  dwOptions: DWORD,
+  samDesired: REGSAM,
+  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+  phkResult: PHKEY,
+  lpdwDisposition: LPDWORD,
+  hTransaction: HANDLE,
+  pExtendedParemeter: PVOID,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegDeleteKeyTransactedA*(
+  hKey: HKEY,
+  lpSubKey: LPCSTR,
+  samDesired: REGSAM,
+  Reserved: DWORD,
+  hTransaction: HANDLE,
+  pExtendedParameter: PVOID,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegDeleteKeyTransactedW*(
+  hKey: HKEY,
+  lpSubKey: LPCWSTR,
+  samDesired: REGSAM,
+  Reserved: DWORD,
+  hTransaction: HANDLE,
+  pExtendedParameter: PVOID,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegDeleteKeyValueA*(
+  hKey: HKEY, lpSubKey: LPCSTR, lpValueName: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegDeleteKeyValueW*(
+  hKey: HKEY, lpSubKey: LPCWSTR, lpValueName: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegDeleteTreeA*(
+  hKey: HKEY, lpSubKey: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegDeleteTreeW*(
+  hKey: HKEY, lpSubKey: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegDisablePredefinedCacheEx*(): LONG {.
+  winapi, stdcall, dynlib: "advapi32", importc
+.}
+
+proc RegLoadAppKeyA*(
+  lpFile: LPCSTR,
+  phkResult: PHKEY,
+  samDesired: REGSAM,
+  dwOptions: DWORD,
+  Reserved: DWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegLoadAppKeyW*(
+  lpFile: LPCWSTR,
+  phkResult: PHKEY,
+  samDesired: REGSAM,
+  dwOptions: DWORD,
+  Reserved: DWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegLoadMUIStringA*(
+  hKey: HKEY,
+  pszValue: LPCSTR,
+  pszOutBuf: LPSTR,
+  cbOutBuf: DWORD,
+  pcbData: LPDWORD,
+  Flags: DWORD,
+  pszDirectory: LPCSTR,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegLoadMUIStringW*(
+  hKey: HKEY,
+  pszValue: LPCWSTR,
+  pszOutBuf: LPWSTR,
+  cbOutBuf: DWORD,
+  pcbData: LPDWORD,
+  Flags: DWORD,
+  pszDirectory: LPCWSTR,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegOpenKeyTransactedA*(
+  hKey: HKEY,
+  lpSubKey: LPCSTR,
+  ulOptions: DWORD,
+  samDesired: REGSAM,
+  phkResult: PHKEY,
+  hTransaction: HANDLE,
+  pExtendedParameter: PVOID,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegOpenKeyTransactedW*(
+  hKey: HKEY,
+  lpSubKey: LPCWSTR,
+  ulOptions: DWORD,
+  samDesired: REGSAM,
+  phkResult: PHKEY,
+  hTransaction: HANDLE,
+  pExtendedParameter: PVOID,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegSetKeyValueA*(
+  hKey: HKEY,
+  lpSubKey: LPCSTR,
+  lpValueName: LPCSTR,
+  dwType: DWORD,
+  lpData: LPCVOID,
+  cbData: DWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegSetKeyValueW*(
+  hKey: HKEY,
+  lpSubKey: LPCSTR,
+  lpValueName: LPCSTR,
+  dwType: DWORD,
+  lpData: LPCVOID,
+  cbData: DWORD,
+): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc InitiateShutdownA*(
+  lpMachineName: LPSTR,
+  lpMessage: LPSTR,
+  dwGracePeriod: DWORD,
+  dwShutdownFlags: DWORD,
+  dwReason: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc InitiateShutdownW*(
+  lpMachineName: LPWSTR,
+  lpMessage: LPWSTR,
+  dwGracePeriod: DWORD,
+  dwShutdownFlags: DWORD,
+  dwReason: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
 when winimUnicode:
   type
     PVALUE* = PVALUEW
     PPVALUE* = PPVALUEW
     VALENT* = VALENTW
     PVALENT* = PVALENTW
-  proc RegConnectRegistry*(lpMachineName: LPCWSTR, hKey: HKEY, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegConnectRegistryW".}
-  proc RegConnectRegistryEx*(lpMachineName: LPCWSTR, hKey: HKEY, Flags: ULONG, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegConnectRegistryExW".}
-  proc RegCreateKey*(hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCreateKeyW".}
-  proc RegCreateKeyEx*(hKey: HKEY, lpSubKey: LPCWSTR, Reserved: DWORD, lpClass: LPWSTR, dwOptions: DWORD, samDesired: REGSAM, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, phkResult: PHKEY, lpdwDisposition: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCreateKeyExW".}
-  proc RegDeleteKey*(hKey: HKEY, lpSubKey: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyW".}
-  proc RegDeleteKeyEx*(hKey: HKEY, lpSubKey: LPCWSTR, samDesired: REGSAM, Reserved: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyExW".}
-  proc RegDeleteValue*(hKey: HKEY, lpValueName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteValueW".}
-  proc RegEnumKey*(hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR, cchName: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegEnumKeyW".}
-  proc RegEnumKeyEx*(hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR, lpcchName: LPDWORD, lpReserved: LPDWORD, lpClass: LPWSTR, lpcchClass: LPDWORD, lpftLastWriteTime: PFILETIME): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegEnumKeyExW".}
-  proc RegEnumValue*(hKey: HKEY, dwIndex: DWORD, lpValueName: LPWSTR, lpcchValueName: LPDWORD, lpReserved: LPDWORD, lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegEnumValueW".}
-  proc RegLoadKey*(hKey: HKEY, lpSubKey: LPCWSTR, lpFile: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegLoadKeyW".}
-  proc RegOpenKey*(hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegOpenKeyW".}
-  proc RegOpenKeyEx*(hKey: HKEY, lpSubKey: LPCWSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegOpenKeyExW".}
-  proc RegQueryInfoKey*(hKey: HKEY, lpClass: LPWSTR, lpcchClass: LPDWORD, lpReserved: LPDWORD, lpcSubKeys: LPDWORD, lpcbMaxSubKeyLen: LPDWORD, lpcbMaxClassLen: LPDWORD, lpcValues: LPDWORD, lpcbMaxValueNameLen: LPDWORD, lpcbMaxValueLen: LPDWORD, lpcbSecurityDescriptor: LPDWORD, lpftLastWriteTime: PFILETIME): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryInfoKeyW".}
-  proc RegQueryValue*(hKey: HKEY, lpSubKey: LPCWSTR, lpData: LPWSTR, lpcbData: PLONG): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryValueW".}
-  proc RegQueryMultipleValues*(hKey: HKEY, val_list: PVALENTW, num_vals: DWORD, lpValueBuf: LPWSTR, ldwTotsize: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesW".}
-  proc RegQueryValueEx*(hKey: HKEY, lpValueName: LPCWSTR, lpReserved: LPDWORD, lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryValueExW".}
-  proc RegReplaceKey*(hKey: HKEY, lpSubKey: LPCWSTR, lpNewFile: LPCWSTR, lpOldFile: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegReplaceKeyW".}
-  proc RegRestoreKey*(hKey: HKEY, lpFile: LPCWSTR, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegRestoreKeyW".}
-  proc RegSaveKey*(hKey: HKEY, lpFile: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSaveKeyW".}
-  proc RegSetValue*(hKey: HKEY, lpSubKey: LPCWSTR, dwType: DWORD, lpData: LPCWSTR, cbData: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSetValueW".}
-  proc RegSetValueEx*(hKey: HKEY, lpValueName: LPCWSTR, Reserved: DWORD, dwType: DWORD, lpData: ptr BYTE, cbData: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSetValueExW".}
-  proc RegUnLoadKey*(hKey: HKEY, lpSubKey: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegUnLoadKeyW".}
-  proc RegGetValue*(hkey: HKEY, lpSubKey: LPCWSTR, lpValue: LPCWSTR, dwFlags: DWORD, pdwType: LPDWORD, pvData: PVOID, pcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegGetValueW".}
-  proc InitiateSystemShutdown*(lpMachineName: LPWSTR, lpMessage: LPWSTR, dwTimeout: DWORD, bForceAppsClosed: WINBOOL, bRebootAfterShutdown: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "InitiateSystemShutdownW".}
-  proc AbortSystemShutdown*(lpMachineName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "AbortSystemShutdownW".}
-  proc InitiateSystemShutdownEx*(lpMachineName: LPWSTR, lpMessage: LPWSTR, dwTimeout: DWORD, bForceAppsClosed: WINBOOL, bRebootAfterShutdown: WINBOOL, dwReason: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "InitiateSystemShutdownExW".}
-  proc RegSaveKeyEx*(hKey: HKEY, lpFile: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, Flags: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSaveKeyExW".}
-  proc RegCopyTree*(hKeySrc: HKEY, lpSubKey: LPCWSTR, hKeyDest: HKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCopyTreeW".}
-  proc RegCreateKeyTransacted*(hKey: HKEY, lpSubKey: LPCWSTR, Reserved: DWORD, lpClass: LPWSTR, dwOptions: DWORD, samDesired: REGSAM, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, phkResult: PHKEY, lpdwDisposition: LPDWORD, hTransaction: HANDLE, pExtendedParemeter: PVOID): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCreateKeyTransactedW".}
-  proc RegDeleteKeyTransacted*(hKey: HKEY, lpSubKey: LPCWSTR, samDesired: REGSAM, Reserved: DWORD, hTransaction: HANDLE, pExtendedParameter: PVOID): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyTransactedW".}
-  proc RegDeleteKeyValue*(hKey: HKEY, lpSubKey: LPCWSTR, lpValueName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyValueW".}
-  proc RegDeleteTree*(hKey: HKEY, lpSubKey: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteTreeW".}
-  proc RegLoadAppKey*(lpFile: LPCWSTR, phkResult: PHKEY, samDesired: REGSAM, dwOptions: DWORD, Reserved: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegLoadAppKeyW".}
-  proc RegLoadMUIString*(hKey: HKEY, pszValue: LPCWSTR, pszOutBuf: LPWSTR, cbOutBuf: DWORD, pcbData: LPDWORD, Flags: DWORD, pszDirectory: LPCWSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegLoadMUIStringW".}
-  proc RegOpenKeyTransacted*(hKey: HKEY, lpSubKey: LPCWSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY, hTransaction: HANDLE, pExtendedParameter: PVOID): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegOpenKeyTransactedW".}
-  proc RegSetKeyValue*(hKey: HKEY, lpSubKey: LPCSTR, lpValueName: LPCSTR, dwType: DWORD, lpData: LPCVOID, cbData: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSetKeyValueW".}
-  proc InitiateShutdown*(lpMachineName: LPWSTR, lpMessage: LPWSTR, dwGracePeriod: DWORD, dwShutdownFlags: DWORD, dwReason: DWORD): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "InitiateShutdownW".}
+
+  proc RegConnectRegistry*(
+    lpMachineName: LPCWSTR, hKey: HKEY, phkResult: PHKEY
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegConnectRegistryW".}
+
+  proc RegConnectRegistryEx*(
+    lpMachineName: LPCWSTR, hKey: HKEY, Flags: ULONG, phkResult: PHKEY
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegConnectRegistryExW".}
+
+  proc RegCreateKey*(
+    hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCreateKeyW".}
+
+  proc RegCreateKeyEx*(
+    hKey: HKEY,
+    lpSubKey: LPCWSTR,
+    Reserved: DWORD,
+    lpClass: LPWSTR,
+    dwOptions: DWORD,
+    samDesired: REGSAM,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+    phkResult: PHKEY,
+    lpdwDisposition: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCreateKeyExW".}
+
+  proc RegDeleteKey*(
+    hKey: HKEY, lpSubKey: LPCWSTR
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyW".}
+
+  proc RegDeleteKeyEx*(
+    hKey: HKEY, lpSubKey: LPCWSTR, samDesired: REGSAM, Reserved: DWORD
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyExW".}
+
+  proc RegDeleteValue*(
+    hKey: HKEY, lpValueName: LPCWSTR
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteValueW".}
+
+  proc RegEnumKey*(
+    hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR, cchName: DWORD
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegEnumKeyW".}
+
+  proc RegEnumKeyEx*(
+    hKey: HKEY,
+    dwIndex: DWORD,
+    lpName: LPWSTR,
+    lpcchName: LPDWORD,
+    lpReserved: LPDWORD,
+    lpClass: LPWSTR,
+    lpcchClass: LPDWORD,
+    lpftLastWriteTime: PFILETIME,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegEnumKeyExW".}
+
+  proc RegEnumValue*(
+    hKey: HKEY,
+    dwIndex: DWORD,
+    lpValueName: LPWSTR,
+    lpcchValueName: LPDWORD,
+    lpReserved: LPDWORD,
+    lpType: LPDWORD,
+    lpData: LPBYTE,
+    lpcbData: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegEnumValueW".}
+
+  proc RegLoadKey*(
+    hKey: HKEY, lpSubKey: LPCWSTR, lpFile: LPCWSTR
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegLoadKeyW".}
+
+  proc RegOpenKey*(
+    hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegOpenKeyW".}
+
+  proc RegOpenKeyEx*(
+    hKey: HKEY,
+    lpSubKey: LPCWSTR,
+    ulOptions: DWORD,
+    samDesired: REGSAM,
+    phkResult: PHKEY,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegOpenKeyExW".}
+
+  proc RegQueryInfoKey*(
+    hKey: HKEY,
+    lpClass: LPWSTR,
+    lpcchClass: LPDWORD,
+    lpReserved: LPDWORD,
+    lpcSubKeys: LPDWORD,
+    lpcbMaxSubKeyLen: LPDWORD,
+    lpcbMaxClassLen: LPDWORD,
+    lpcValues: LPDWORD,
+    lpcbMaxValueNameLen: LPDWORD,
+    lpcbMaxValueLen: LPDWORD,
+    lpcbSecurityDescriptor: LPDWORD,
+    lpftLastWriteTime: PFILETIME,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryInfoKeyW".}
+
+  proc RegQueryValue*(
+    hKey: HKEY, lpSubKey: LPCWSTR, lpData: LPWSTR, lpcbData: PLONG
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryValueW".}
+
+  proc RegQueryMultipleValues*(
+    hKey: HKEY,
+    val_list: PVALENTW,
+    num_vals: DWORD,
+    lpValueBuf: LPWSTR,
+    ldwTotsize: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesW".}
+
+  proc RegQueryValueEx*(
+    hKey: HKEY,
+    lpValueName: LPCWSTR,
+    lpReserved: LPDWORD,
+    lpType: LPDWORD,
+    lpData: LPBYTE,
+    lpcbData: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryValueExW".}
+
+  proc RegReplaceKey*(
+    hKey: HKEY, lpSubKey: LPCWSTR, lpNewFile: LPCWSTR, lpOldFile: LPCWSTR
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegReplaceKeyW".}
+
+  proc RegRestoreKey*(
+    hKey: HKEY, lpFile: LPCWSTR, dwFlags: DWORD
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegRestoreKeyW".}
+
+  proc RegSaveKey*(
+    hKey: HKEY, lpFile: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSaveKeyW".}
+
+  proc RegSetValue*(
+    hKey: HKEY, lpSubKey: LPCWSTR, dwType: DWORD, lpData: LPCWSTR, cbData: DWORD
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSetValueW".}
+
+  proc RegSetValueEx*(
+    hKey: HKEY,
+    lpValueName: LPCWSTR,
+    Reserved: DWORD,
+    dwType: DWORD,
+    lpData: ptr BYTE,
+    cbData: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSetValueExW".}
+
+  proc RegUnLoadKey*(
+    hKey: HKEY, lpSubKey: LPCWSTR
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegUnLoadKeyW".}
+
+  proc RegGetValue*(
+    hkey: HKEY,
+    lpSubKey: LPCWSTR,
+    lpValue: LPCWSTR,
+    dwFlags: DWORD,
+    pdwType: LPDWORD,
+    pvData: PVOID,
+    pcbData: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegGetValueW".}
+
+  proc InitiateSystemShutdown*(
+    lpMachineName: LPWSTR,
+    lpMessage: LPWSTR,
+    dwTimeout: DWORD,
+    bForceAppsClosed: WINBOOL,
+    bRebootAfterShutdown: WINBOOL,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "InitiateSystemShutdownW".}
+
+  proc AbortSystemShutdown*(
+    lpMachineName: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "AbortSystemShutdownW".}
+
+  proc InitiateSystemShutdownEx*(
+    lpMachineName: LPWSTR,
+    lpMessage: LPWSTR,
+    dwTimeout: DWORD,
+    bForceAppsClosed: WINBOOL,
+    bRebootAfterShutdown: WINBOOL,
+    dwReason: DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "InitiateSystemShutdownExW"
+  .}
+
+  proc RegSaveKeyEx*(
+    hKey: HKEY,
+    lpFile: LPCWSTR,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+    Flags: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSaveKeyExW".}
+
+  proc RegCopyTree*(
+    hKeySrc: HKEY, lpSubKey: LPCWSTR, hKeyDest: HKEY
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCopyTreeW".}
+
+  proc RegCreateKeyTransacted*(
+    hKey: HKEY,
+    lpSubKey: LPCWSTR,
+    Reserved: DWORD,
+    lpClass: LPWSTR,
+    dwOptions: DWORD,
+    samDesired: REGSAM,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+    phkResult: PHKEY,
+    lpdwDisposition: LPDWORD,
+    hTransaction: HANDLE,
+    pExtendedParemeter: PVOID,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCreateKeyTransactedW".}
+
+  proc RegDeleteKeyTransacted*(
+    hKey: HKEY,
+    lpSubKey: LPCWSTR,
+    samDesired: REGSAM,
+    Reserved: DWORD,
+    hTransaction: HANDLE,
+    pExtendedParameter: PVOID,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyTransactedW".}
+
+  proc RegDeleteKeyValue*(
+    hKey: HKEY, lpSubKey: LPCWSTR, lpValueName: LPCWSTR
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyValueW".}
+
+  proc RegDeleteTree*(
+    hKey: HKEY, lpSubKey: LPCWSTR
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteTreeW".}
+
+  proc RegLoadAppKey*(
+    lpFile: LPCWSTR,
+    phkResult: PHKEY,
+    samDesired: REGSAM,
+    dwOptions: DWORD,
+    Reserved: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegLoadAppKeyW".}
+
+  proc RegLoadMUIString*(
+    hKey: HKEY,
+    pszValue: LPCWSTR,
+    pszOutBuf: LPWSTR,
+    cbOutBuf: DWORD,
+    pcbData: LPDWORD,
+    Flags: DWORD,
+    pszDirectory: LPCWSTR,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegLoadMUIStringW".}
+
+  proc RegOpenKeyTransacted*(
+    hKey: HKEY,
+    lpSubKey: LPCWSTR,
+    ulOptions: DWORD,
+    samDesired: REGSAM,
+    phkResult: PHKEY,
+    hTransaction: HANDLE,
+    pExtendedParameter: PVOID,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegOpenKeyTransactedW".}
+
+  proc RegSetKeyValue*(
+    hKey: HKEY,
+    lpSubKey: LPCSTR,
+    lpValueName: LPCSTR,
+    dwType: DWORD,
+    lpData: LPCVOID,
+    cbData: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSetKeyValueW".}
+
+  proc InitiateShutdown*(
+    lpMachineName: LPWSTR,
+    lpMessage: LPWSTR,
+    dwGracePeriod: DWORD,
+    dwShutdownFlags: DWORD,
+    dwReason: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "InitiateShutdownW".}
+
 when winimAnsi:
   type
     PVALUE* = PVALUEA
     PPVALUE* = PPVALUEA
     VALENT* = VALENTA
     PVALENT* = PVALENTA
-  proc RegConnectRegistry*(lpMachineName: LPCSTR, hKey: HKEY, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegConnectRegistryA".}
-  proc RegConnectRegistryEx*(lpMachineName: LPCSTR, hKey: HKEY, Flags: ULONG, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegConnectRegistryExA".}
-  proc RegCreateKey*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCreateKeyA".}
-  proc RegCreateKeyEx*(hKey: HKEY, lpSubKey: LPCSTR, Reserved: DWORD, lpClass: LPSTR, dwOptions: DWORD, samDesired: REGSAM, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, phkResult: PHKEY, lpdwDisposition: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCreateKeyExA".}
-  proc RegDeleteKey*(hKey: HKEY, lpSubKey: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyA".}
-  proc RegDeleteKeyEx*(hKey: HKEY, lpSubKey: LPCSTR, samDesired: REGSAM, Reserved: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyExA".}
-  proc RegDeleteValue*(hKey: HKEY, lpValueName: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteValueA".}
-  proc RegEnumKey*(hKey: HKEY, dwIndex: DWORD, lpName: LPSTR, cchName: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegEnumKeyA".}
-  proc RegEnumKeyEx*(hKey: HKEY, dwIndex: DWORD, lpName: LPSTR, lpcchName: LPDWORD, lpReserved: LPDWORD, lpClass: LPSTR, lpcchClass: LPDWORD, lpftLastWriteTime: PFILETIME): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegEnumKeyExA".}
-  proc RegEnumValue*(hKey: HKEY, dwIndex: DWORD, lpValueName: LPSTR, lpcchValueName: LPDWORD, lpReserved: LPDWORD, lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegEnumValueA".}
-  proc RegLoadKey*(hKey: HKEY, lpSubKey: LPCSTR, lpFile: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegLoadKeyA".}
-  proc RegOpenKey*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegOpenKeyA".}
-  proc RegOpenKeyEx*(hKey: HKEY, lpSubKey: LPCSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegOpenKeyExA".}
-  proc RegQueryInfoKey*(hKey: HKEY, lpClass: LPSTR, lpcchClass: LPDWORD, lpReserved: LPDWORD, lpcSubKeys: LPDWORD, lpcbMaxSubKeyLen: LPDWORD, lpcbMaxClassLen: LPDWORD, lpcValues: LPDWORD, lpcbMaxValueNameLen: LPDWORD, lpcbMaxValueLen: LPDWORD, lpcbSecurityDescriptor: LPDWORD, lpftLastWriteTime: PFILETIME): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryInfoKeyA".}
-  proc RegQueryValue*(hKey: HKEY, lpSubKey: LPCSTR, lpData: LPSTR, lpcbData: PLONG): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryValueA".}
-  proc RegQueryMultipleValues*(hKey: HKEY, val_list: PVALENTA, num_vals: DWORD, lpValueBuf: LPSTR, ldwTotsize: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesA".}
-  proc RegQueryValueEx*(hKey: HKEY, lpValueName: LPCSTR, lpReserved: LPDWORD, lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryValueExA".}
-  proc RegReplaceKey*(hKey: HKEY, lpSubKey: LPCSTR, lpNewFile: LPCSTR, lpOldFile: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegReplaceKeyA".}
-  proc RegRestoreKey*(hKey: HKEY, lpFile: LPCSTR, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegRestoreKeyA".}
-  proc RegSaveKey*(hKey: HKEY, lpFile: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSaveKeyA".}
-  proc RegSetValue*(hKey: HKEY, lpSubKey: LPCSTR, dwType: DWORD, lpData: LPCSTR, cbData: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSetValueA".}
-  proc RegSetValueEx*(hKey: HKEY, lpValueName: LPCSTR, Reserved: DWORD, dwType: DWORD, lpData: ptr BYTE, cbData: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSetValueExA".}
-  proc RegUnLoadKey*(hKey: HKEY, lpSubKey: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegUnLoadKeyA".}
-  proc RegGetValue*(hkey: HKEY, lpSubKey: LPCSTR, lpValue: LPCSTR, dwFlags: DWORD, pdwType: LPDWORD, pvData: PVOID, pcbData: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegGetValueA".}
-  proc InitiateSystemShutdown*(lpMachineName: LPSTR, lpMessage: LPSTR, dwTimeout: DWORD, bForceAppsClosed: WINBOOL, bRebootAfterShutdown: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "InitiateSystemShutdownA".}
-  proc AbortSystemShutdown*(lpMachineName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "AbortSystemShutdownA".}
-  proc InitiateSystemShutdownEx*(lpMachineName: LPSTR, lpMessage: LPSTR, dwTimeout: DWORD, bForceAppsClosed: WINBOOL, bRebootAfterShutdown: WINBOOL, dwReason: DWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "InitiateSystemShutdownExA".}
-  proc RegSaveKeyEx*(hKey: HKEY, lpFile: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, Flags: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSaveKeyExA".}
-  proc RegCopyTree*(hKeySrc: HKEY, lpSubKey: LPCSTR, hKeyDest: HKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCopyTreeA".}
-  proc RegCreateKeyTransacted*(hKey: HKEY, lpSubKey: LPCSTR, Reserved: DWORD, lpClass: LPSTR, dwOptions: DWORD, samDesired: REGSAM, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, phkResult: PHKEY, lpdwDisposition: LPDWORD, hTransaction: HANDLE, pExtendedParemeter: PVOID): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCreateKeyTransactedA".}
-  proc RegDeleteKeyTransacted*(hKey: HKEY, lpSubKey: LPCSTR, samDesired: REGSAM, Reserved: DWORD, hTransaction: HANDLE, pExtendedParameter: PVOID): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyTransactedA".}
-  proc RegDeleteKeyValue*(hKey: HKEY, lpSubKey: LPCSTR, lpValueName: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyValueA".}
-  proc RegDeleteTree*(hKey: HKEY, lpSubKey: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteTreeA".}
-  proc RegLoadAppKey*(lpFile: LPCSTR, phkResult: PHKEY, samDesired: REGSAM, dwOptions: DWORD, Reserved: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegLoadAppKeyA".}
-  proc RegLoadMUIString*(hKey: HKEY, pszValue: LPCSTR, pszOutBuf: LPSTR, cbOutBuf: DWORD, pcbData: LPDWORD, Flags: DWORD, pszDirectory: LPCSTR): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegLoadMUIStringA".}
-  proc RegOpenKeyTransacted*(hKey: HKEY, lpSubKey: LPCSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY, hTransaction: HANDLE, pExtendedParameter: PVOID): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegOpenKeyTransactedA".}
-  proc RegSetKeyValue*(hKey: HKEY, lpSubKey: LPCSTR, lpValueName: LPCSTR, dwType: DWORD, lpData: LPCVOID, cbData: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSetKeyValueA".}
-  proc InitiateShutdown*(lpMachineName: LPSTR, lpMessage: LPSTR, dwGracePeriod: DWORD, dwShutdownFlags: DWORD, dwReason: DWORD): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "InitiateShutdownA".}
+
+  proc RegConnectRegistry*(
+    lpMachineName: LPCSTR, hKey: HKEY, phkResult: PHKEY
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegConnectRegistryA".}
+
+  proc RegConnectRegistryEx*(
+    lpMachineName: LPCSTR, hKey: HKEY, Flags: ULONG, phkResult: PHKEY
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegConnectRegistryExA".}
+
+  proc RegCreateKey*(
+    hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCreateKeyA".}
+
+  proc RegCreateKeyEx*(
+    hKey: HKEY,
+    lpSubKey: LPCSTR,
+    Reserved: DWORD,
+    lpClass: LPSTR,
+    dwOptions: DWORD,
+    samDesired: REGSAM,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+    phkResult: PHKEY,
+    lpdwDisposition: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCreateKeyExA".}
+
+  proc RegDeleteKey*(
+    hKey: HKEY, lpSubKey: LPCSTR
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyA".}
+
+  proc RegDeleteKeyEx*(
+    hKey: HKEY, lpSubKey: LPCSTR, samDesired: REGSAM, Reserved: DWORD
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyExA".}
+
+  proc RegDeleteValue*(
+    hKey: HKEY, lpValueName: LPCSTR
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteValueA".}
+
+  proc RegEnumKey*(
+    hKey: HKEY, dwIndex: DWORD, lpName: LPSTR, cchName: DWORD
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegEnumKeyA".}
+
+  proc RegEnumKeyEx*(
+    hKey: HKEY,
+    dwIndex: DWORD,
+    lpName: LPSTR,
+    lpcchName: LPDWORD,
+    lpReserved: LPDWORD,
+    lpClass: LPSTR,
+    lpcchClass: LPDWORD,
+    lpftLastWriteTime: PFILETIME,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegEnumKeyExA".}
+
+  proc RegEnumValue*(
+    hKey: HKEY,
+    dwIndex: DWORD,
+    lpValueName: LPSTR,
+    lpcchValueName: LPDWORD,
+    lpReserved: LPDWORD,
+    lpType: LPDWORD,
+    lpData: LPBYTE,
+    lpcbData: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegEnumValueA".}
+
+  proc RegLoadKey*(
+    hKey: HKEY, lpSubKey: LPCSTR, lpFile: LPCSTR
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegLoadKeyA".}
+
+  proc RegOpenKey*(
+    hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegOpenKeyA".}
+
+  proc RegOpenKeyEx*(
+    hKey: HKEY, lpSubKey: LPCSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegOpenKeyExA".}
+
+  proc RegQueryInfoKey*(
+    hKey: HKEY,
+    lpClass: LPSTR,
+    lpcchClass: LPDWORD,
+    lpReserved: LPDWORD,
+    lpcSubKeys: LPDWORD,
+    lpcbMaxSubKeyLen: LPDWORD,
+    lpcbMaxClassLen: LPDWORD,
+    lpcValues: LPDWORD,
+    lpcbMaxValueNameLen: LPDWORD,
+    lpcbMaxValueLen: LPDWORD,
+    lpcbSecurityDescriptor: LPDWORD,
+    lpftLastWriteTime: PFILETIME,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryInfoKeyA".}
+
+  proc RegQueryValue*(
+    hKey: HKEY, lpSubKey: LPCSTR, lpData: LPSTR, lpcbData: PLONG
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryValueA".}
+
+  proc RegQueryMultipleValues*(
+    hKey: HKEY,
+    val_list: PVALENTA,
+    num_vals: DWORD,
+    lpValueBuf: LPSTR,
+    ldwTotsize: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesA".}
+
+  proc RegQueryValueEx*(
+    hKey: HKEY,
+    lpValueName: LPCSTR,
+    lpReserved: LPDWORD,
+    lpType: LPDWORD,
+    lpData: LPBYTE,
+    lpcbData: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegQueryValueExA".}
+
+  proc RegReplaceKey*(
+    hKey: HKEY, lpSubKey: LPCSTR, lpNewFile: LPCSTR, lpOldFile: LPCSTR
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegReplaceKeyA".}
+
+  proc RegRestoreKey*(
+    hKey: HKEY, lpFile: LPCSTR, dwFlags: DWORD
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegRestoreKeyA".}
+
+  proc RegSaveKey*(
+    hKey: HKEY, lpFile: LPCSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSaveKeyA".}
+
+  proc RegSetValue*(
+    hKey: HKEY, lpSubKey: LPCSTR, dwType: DWORD, lpData: LPCSTR, cbData: DWORD
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSetValueA".}
+
+  proc RegSetValueEx*(
+    hKey: HKEY,
+    lpValueName: LPCSTR,
+    Reserved: DWORD,
+    dwType: DWORD,
+    lpData: ptr BYTE,
+    cbData: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSetValueExA".}
+
+  proc RegUnLoadKey*(
+    hKey: HKEY, lpSubKey: LPCSTR
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegUnLoadKeyA".}
+
+  proc RegGetValue*(
+    hkey: HKEY,
+    lpSubKey: LPCSTR,
+    lpValue: LPCSTR,
+    dwFlags: DWORD,
+    pdwType: LPDWORD,
+    pvData: PVOID,
+    pcbData: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegGetValueA".}
+
+  proc InitiateSystemShutdown*(
+    lpMachineName: LPSTR,
+    lpMessage: LPSTR,
+    dwTimeout: DWORD,
+    bForceAppsClosed: WINBOOL,
+    bRebootAfterShutdown: WINBOOL,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "InitiateSystemShutdownA".}
+
+  proc AbortSystemShutdown*(
+    lpMachineName: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "AbortSystemShutdownA".}
+
+  proc InitiateSystemShutdownEx*(
+    lpMachineName: LPSTR,
+    lpMessage: LPSTR,
+    dwTimeout: DWORD,
+    bForceAppsClosed: WINBOOL,
+    bRebootAfterShutdown: WINBOOL,
+    dwReason: DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "InitiateSystemShutdownExA"
+  .}
+
+  proc RegSaveKeyEx*(
+    hKey: HKEY,
+    lpFile: LPCSTR,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+    Flags: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSaveKeyExA".}
+
+  proc RegCopyTree*(
+    hKeySrc: HKEY, lpSubKey: LPCSTR, hKeyDest: HKEY
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCopyTreeA".}
+
+  proc RegCreateKeyTransacted*(
+    hKey: HKEY,
+    lpSubKey: LPCSTR,
+    Reserved: DWORD,
+    lpClass: LPSTR,
+    dwOptions: DWORD,
+    samDesired: REGSAM,
+    lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
+    phkResult: PHKEY,
+    lpdwDisposition: LPDWORD,
+    hTransaction: HANDLE,
+    pExtendedParemeter: PVOID,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCreateKeyTransactedA".}
+
+  proc RegDeleteKeyTransacted*(
+    hKey: HKEY,
+    lpSubKey: LPCSTR,
+    samDesired: REGSAM,
+    Reserved: DWORD,
+    hTransaction: HANDLE,
+    pExtendedParameter: PVOID,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyTransactedA".}
+
+  proc RegDeleteKeyValue*(
+    hKey: HKEY, lpSubKey: LPCSTR, lpValueName: LPCSTR
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteKeyValueA".}
+
+  proc RegDeleteTree*(
+    hKey: HKEY, lpSubKey: LPCSTR
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegDeleteTreeA".}
+
+  proc RegLoadAppKey*(
+    lpFile: LPCSTR,
+    phkResult: PHKEY,
+    samDesired: REGSAM,
+    dwOptions: DWORD,
+    Reserved: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegLoadAppKeyA".}
+
+  proc RegLoadMUIString*(
+    hKey: HKEY,
+    pszValue: LPCSTR,
+    pszOutBuf: LPSTR,
+    cbOutBuf: DWORD,
+    pcbData: LPDWORD,
+    Flags: DWORD,
+    pszDirectory: LPCSTR,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegLoadMUIStringA".}
+
+  proc RegOpenKeyTransacted*(
+    hKey: HKEY,
+    lpSubKey: LPCSTR,
+    ulOptions: DWORD,
+    samDesired: REGSAM,
+    phkResult: PHKEY,
+    hTransaction: HANDLE,
+    pExtendedParameter: PVOID,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegOpenKeyTransactedA".}
+
+  proc RegSetKeyValue*(
+    hKey: HKEY,
+    lpSubKey: LPCSTR,
+    lpValueName: LPCSTR,
+    dwType: DWORD,
+    lpData: LPCVOID,
+    cbData: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSetKeyValueA".}
+
+  proc InitiateShutdown*(
+    lpMachineName: LPSTR,
+    lpMessage: LPSTR,
+    dwGracePeriod: DWORD,
+    dwShutdownFlags: DWORD,
+    dwReason: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "InitiateShutdownA".}
--- a/semicongine/thirdparty/winim/winim/inc/winscard.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winscard.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -18,6 +18,7 @@
   SCARD_IO_REQUEST* {.pure.} = object
     dwProtocol*: DWORD
     cbPciLength*: DWORD
+
   PSCARD_IO_REQUEST* = ptr SCARD_IO_REQUEST
   LPSCARD_IO_REQUEST* = ptr SCARD_IO_REQUEST
   LPCSCARD_IO_REQUEST* = ptr SCARD_IO_REQUEST
@@ -27,19 +28,23 @@
     bP1*: BYTE
     bP2*: BYTE
     bP3*: BYTE
+
   LPSCARD_T0_COMMAND* = ptr SCARD_T0_COMMAND
   SCARD_T0_REQUEST_UNION1* {.pure, union.} = object
     CmdBytes*: SCARD_T0_COMMAND
     rgbHeader*: array[5, BYTE]
+
   SCARD_T0_REQUEST* {.pure.} = object
     ioRequest*: SCARD_IO_REQUEST
     bSw1*: BYTE
     bSw2*: BYTE
     union1*: SCARD_T0_REQUEST_UNION1
+
   PSCARD_T0_REQUEST* = ptr SCARD_T0_REQUEST
   LPSCARD_T0_REQUEST* = ptr SCARD_T0_REQUEST
   SCARD_T1_REQUEST* {.pure.} = object
     ioRequest*: SCARD_IO_REQUEST
+
   PSCARD_T1_REQUEST* = ptr SCARD_T1_REQUEST
   LPSCARD_T1_REQUEST* = ptr SCARD_T1_REQUEST
   PSCARDCONTEXT* = ptr SCARDCONTEXT
@@ -53,6 +58,7 @@
     dwEventState*: DWORD
     cbAtr*: DWORD
     rgbAtr*: array[36, BYTE]
+
   PSCARD_READERSTATEA* = ptr SCARD_READERSTATEA
   LPSCARD_READERSTATEA* = ptr SCARD_READERSTATEA
   SCARD_READERSTATEW* {.pure.} = object
@@ -62,17 +68,21 @@
     dwEventState*: DWORD
     cbAtr*: DWORD
     rgbAtr*: array[36, BYTE]
+
   PSCARD_READERSTATEW* = ptr SCARD_READERSTATEW
   LPSCARD_READERSTATEW* = ptr SCARD_READERSTATEW
   SCARD_ATRMASK* {.pure.} = object
     cbAtr*: DWORD
     rgbAtr*: array[36, BYTE]
     rgbMask*: array[36, BYTE]
+
   PSCARD_ATRMASK* = ptr SCARD_ATRMASK
   LPSCARD_ATRMASK* = ptr SCARD_ATRMASK
-  LPOCNCHKPROC* = proc (P1: SCARDCONTEXT, P2: SCARDHANDLE, P3: PVOID): WINBOOL {.stdcall.}
-  LPOCNCONNPROCA* = proc (P1: SCARDCONTEXT, P2: LPSTR, P3: LPSTR, P4: PVOID): SCARDHANDLE {.stdcall.}
-  LPOCNDSCPROC* = proc (P1: SCARDCONTEXT, P2: SCARDHANDLE, P3: PVOID): void {.stdcall.}
+  LPOCNCHKPROC* =
+    proc(P1: SCARDCONTEXT, P2: SCARDHANDLE, P3: PVOID): WINBOOL {.stdcall.}
+  LPOCNCONNPROCA* =
+    proc(P1: SCARDCONTEXT, P2: LPSTR, P3: LPSTR, P4: PVOID): SCARDHANDLE {.stdcall.}
+  LPOCNDSCPROC* = proc(P1: SCARDCONTEXT, P2: SCARDHANDLE, P3: PVOID): void {.stdcall.}
   OPENCARD_SEARCH_CRITERIAA* {.pure.} = object
     dwStructSize*: DWORD
     lpstrGroupNames*: LPSTR
@@ -87,9 +97,11 @@
     pvUserData*: LPVOID
     dwShareMode*: DWORD
     dwPreferredProtocols*: DWORD
+
   POPENCARD_SEARCH_CRITERIAA* = ptr OPENCARD_SEARCH_CRITERIAA
   LPOPENCARD_SEARCH_CRITERIAA* = ptr OPENCARD_SEARCH_CRITERIAA
-  LPOCNCONNPROCW* = proc (P1: SCARDCONTEXT, P2: LPWSTR, P3: LPWSTR, P4: PVOID): SCARDHANDLE {.stdcall.}
+  LPOCNCONNPROCW* =
+    proc(P1: SCARDCONTEXT, P2: LPWSTR, P3: LPWSTR, P4: PVOID): SCARDHANDLE {.stdcall.}
   OPENCARD_SEARCH_CRITERIAW* {.pure.} = object
     dwStructSize*: DWORD
     lpstrGroupNames*: LPWSTR
@@ -104,6 +116,7 @@
     pvUserData*: LPVOID
     dwShareMode*: DWORD
     dwPreferredProtocols*: DWORD
+
   POPENCARD_SEARCH_CRITERIAW* = ptr OPENCARD_SEARCH_CRITERIAW
   LPOPENCARD_SEARCH_CRITERIAW* = ptr OPENCARD_SEARCH_CRITERIAW
   OPENCARDNAME_EXA* {.pure.} = object
@@ -125,6 +138,7 @@
     nMaxCard*: DWORD
     dwActiveProtocol*: DWORD
     hCardHandle*: SCARDHANDLE
+
   POPENCARDNAME_EXA* = ptr OPENCARDNAME_EXA
   LPOPENCARDNAME_EXA* = ptr OPENCARDNAME_EXA
   OPENCARDNAME_EXW* {.pure.} = object
@@ -146,6 +160,7 @@
     nMaxCard*: DWORD
     dwActiveProtocol*: DWORD
     hCardHandle*: SCARDHANDLE
+
   POPENCARDNAME_EXW* = ptr OPENCARDNAME_EXW
   LPOPENCARDNAME_EXW* = ptr OPENCARDNAME_EXW
   OPENCARDNAMEA_EX* = OPENCARDNAME_EXA
@@ -178,6 +193,7 @@
     lpfnCheck*: LPOCNCHKPROC
     lpfnDisconnect*: LPOCNDSCPROC
     hCardHandle*: SCARDHANDLE
+
   POPENCARDNAMEA* = ptr OPENCARDNAMEA
   LPOPENCARDNAMEA* = ptr OPENCARDNAMEA
   OPENCARDNAMEW* {.pure.} = object
@@ -204,8 +220,10 @@
     lpfnCheck*: LPOCNCHKPROC
     lpfnDisconnect*: LPOCNDSCPROC
     hCardHandle*: SCARDHANDLE
+
   POPENCARDNAMEW* = ptr OPENCARDNAMEW
   LPOPENCARDNAMEW* = ptr OPENCARDNAMEW
+
 const
   SCARD_ATR_LENGTH* = 33
   SCARD_PROTOCOL_UNDEFINED* = 0x00000000
@@ -218,7 +236,9 @@
   SCARD_POWER_DOWN* = 0
   SCARD_COLD_RESET* = 1
   SCARD_WARM_RESET* = 2
-template SCARD_CTL_CODE*(code: untyped): untyped = CTL_CODE(FILE_DEVICE_SMARTCARD, code, METHOD_BUFFERED, FILE_ANY_ACCESS)
+template SCARD_CTL_CODE*(code: untyped): untyped =
+  CTL_CODE(FILE_DEVICE_SMARTCARD, code, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
 const
   IOCTL_SMARTCARD_POWER* = SCARD_CTL_CODE(1)
   IOCTL_SMARTCARD_GET_ATTRIBUTE* = SCARD_CTL_CODE(2)
@@ -246,54 +266,56 @@
   SCARD_CLASS_ICC_STATE* = 9
   SCARD_CLASS_PERF* = 0x7ffe
   SCARD_CLASS_SYSTEM* = 0x7fff
-template SCARD_ATTR_VALUE*(class: untyped, tag: untyped): untyped = (class shl 16) or tag
+template SCARD_ATTR_VALUE*(class: untyped, tag: untyped): untyped =
+  (class shl 16) or tag
+
 const
-  SCARD_ATTR_VENDOR_NAME* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO,0x0100)
-  SCARD_ATTR_VENDOR_IFD_TYPE* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO,0x0101)
-  SCARD_ATTR_VENDOR_IFD_VERSION* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO,0x0102)
-  SCARD_ATTR_VENDOR_IFD_SERIAL_NO* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO,0x0103)
-  SCARD_ATTR_CHANNEL_ID* = SCARD_ATTR_VALUE(SCARD_CLASS_COMMUNICATIONS,0x0110)
-  SCARD_ATTR_PROTOCOL_TYPES* = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0120)
-  SCARD_ATTR_DEFAULT_CLK* = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0121)
-  SCARD_ATTR_MAX_CLK* = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0122)
-  SCARD_ATTR_DEFAULT_DATA_RATE* = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0123)
-  SCARD_ATTR_MAX_DATA_RATE* = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0124)
-  SCARD_ATTR_MAX_IFSD* = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0125)
-  SCARD_ATTR_POWER_MGMT_SUPPORT* = SCARD_ATTR_VALUE(SCARD_CLASS_POWER_MGMT,0x0131)
-  SCARD_ATTR_USER_TO_CARD_AUTH_DEVICE* = SCARD_ATTR_VALUE(SCARD_CLASS_SECURITY,0x0140)
-  SCARD_ATTR_USER_AUTH_INPUT_DEVICE* = SCARD_ATTR_VALUE(SCARD_CLASS_SECURITY,0x0142)
-  SCARD_ATTR_CHARACTERISTICS* = SCARD_ATTR_VALUE(SCARD_CLASS_MECHANICAL,0x0150)
-  SCARD_ATTR_CURRENT_PROTOCOL_TYPE* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0201)
-  SCARD_ATTR_CURRENT_CLK* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0202)
-  SCARD_ATTR_CURRENT_F* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0203)
-  SCARD_ATTR_CURRENT_D* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0204)
-  SCARD_ATTR_CURRENT_N* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0205)
-  SCARD_ATTR_CURRENT_W* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0206)
-  SCARD_ATTR_CURRENT_IFSC* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0207)
-  SCARD_ATTR_CURRENT_IFSD* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0208)
-  SCARD_ATTR_CURRENT_BWT* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0209)
-  SCARD_ATTR_CURRENT_CWT* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x020a)
-  SCARD_ATTR_CURRENT_EBC_ENCODING* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x020b)
-  SCARD_ATTR_EXTENDED_BWT* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x020c)
-  SCARD_ATTR_ICC_PRESENCE* = SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0300)
-  SCARD_ATTR_ICC_INTERFACE_STATUS* = SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0301)
-  SCARD_ATTR_CURRENT_IO_STATE* = SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0302)
-  SCARD_ATTR_ATR_STRING* = SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0303)
-  SCARD_ATTR_ICC_TYPE_PER_ATR* = SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0304)
-  SCARD_ATTR_ESC_RESET* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED,0xA000)
-  SCARD_ATTR_ESC_CANCEL* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED,0xA003)
-  SCARD_ATTR_ESC_AUTHREQUEST* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED,0xA005)
-  SCARD_ATTR_MAXINPUT* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED,0xA007)
-  SCARD_ATTR_DEVICE_UNIT* = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0001)
-  SCARD_ATTR_DEVICE_IN_USE* = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0002)
-  SCARD_ATTR_DEVICE_FRIENDLY_NAME_A* = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0003)
-  SCARD_ATTR_DEVICE_SYSTEM_NAME_A* = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0004)
-  SCARD_ATTR_DEVICE_FRIENDLY_NAME_W* = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0005)
-  SCARD_ATTR_DEVICE_SYSTEM_NAME_W* = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0006)
-  SCARD_ATTR_SUPRESS_T1_IFS_REQUEST* = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0007)
-  SCARD_PERF_NUM_TRANSMISSIONS* = SCARD_ATTR_VALUE(SCARD_CLASS_PERF,0x0001)
-  SCARD_PERF_BYTES_TRANSMITTED* = SCARD_ATTR_VALUE(SCARD_CLASS_PERF,0x0002)
-  SCARD_PERF_TRANSMISSION_TIME* = SCARD_ATTR_VALUE(SCARD_CLASS_PERF,0x0003)
+  SCARD_ATTR_VENDOR_NAME* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0100)
+  SCARD_ATTR_VENDOR_IFD_TYPE* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0101)
+  SCARD_ATTR_VENDOR_IFD_VERSION* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0102)
+  SCARD_ATTR_VENDOR_IFD_SERIAL_NO* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0103)
+  SCARD_ATTR_CHANNEL_ID* = SCARD_ATTR_VALUE(SCARD_CLASS_COMMUNICATIONS, 0x0110)
+  SCARD_ATTR_PROTOCOL_TYPES* = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0120)
+  SCARD_ATTR_DEFAULT_CLK* = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0121)
+  SCARD_ATTR_MAX_CLK* = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0122)
+  SCARD_ATTR_DEFAULT_DATA_RATE* = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0123)
+  SCARD_ATTR_MAX_DATA_RATE* = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0124)
+  SCARD_ATTR_MAX_IFSD* = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0125)
+  SCARD_ATTR_POWER_MGMT_SUPPORT* = SCARD_ATTR_VALUE(SCARD_CLASS_POWER_MGMT, 0x0131)
+  SCARD_ATTR_USER_TO_CARD_AUTH_DEVICE* = SCARD_ATTR_VALUE(SCARD_CLASS_SECURITY, 0x0140)
+  SCARD_ATTR_USER_AUTH_INPUT_DEVICE* = SCARD_ATTR_VALUE(SCARD_CLASS_SECURITY, 0x0142)
+  SCARD_ATTR_CHARACTERISTICS* = SCARD_ATTR_VALUE(SCARD_CLASS_MECHANICAL, 0x0150)
+  SCARD_ATTR_CURRENT_PROTOCOL_TYPE* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0201)
+  SCARD_ATTR_CURRENT_CLK* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0202)
+  SCARD_ATTR_CURRENT_F* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0203)
+  SCARD_ATTR_CURRENT_D* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0204)
+  SCARD_ATTR_CURRENT_N* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0205)
+  SCARD_ATTR_CURRENT_W* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0206)
+  SCARD_ATTR_CURRENT_IFSC* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0207)
+  SCARD_ATTR_CURRENT_IFSD* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0208)
+  SCARD_ATTR_CURRENT_BWT* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0209)
+  SCARD_ATTR_CURRENT_CWT* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x020a)
+  SCARD_ATTR_CURRENT_EBC_ENCODING* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x020b)
+  SCARD_ATTR_EXTENDED_BWT* = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x020c)
+  SCARD_ATTR_ICC_PRESENCE* = SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0300)
+  SCARD_ATTR_ICC_INTERFACE_STATUS* = SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0301)
+  SCARD_ATTR_CURRENT_IO_STATE* = SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0302)
+  SCARD_ATTR_ATR_STRING* = SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0303)
+  SCARD_ATTR_ICC_TYPE_PER_ATR* = SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0304)
+  SCARD_ATTR_ESC_RESET* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA000)
+  SCARD_ATTR_ESC_CANCEL* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA003)
+  SCARD_ATTR_ESC_AUTHREQUEST* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA005)
+  SCARD_ATTR_MAXINPUT* = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA007)
+  SCARD_ATTR_DEVICE_UNIT* = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0001)
+  SCARD_ATTR_DEVICE_IN_USE* = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0002)
+  SCARD_ATTR_DEVICE_FRIENDLY_NAME_A* = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0003)
+  SCARD_ATTR_DEVICE_SYSTEM_NAME_A* = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0004)
+  SCARD_ATTR_DEVICE_FRIENDLY_NAME_W* = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0005)
+  SCARD_ATTR_DEVICE_SYSTEM_NAME_W* = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0006)
+  SCARD_ATTR_SUPRESS_T1_IFS_REQUEST* = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0007)
+  SCARD_PERF_NUM_TRANSMISSIONS* = SCARD_ATTR_VALUE(SCARD_CLASS_PERF, 0x0001)
+  SCARD_PERF_BYTES_TRANSMITTED* = SCARD_ATTR_VALUE(SCARD_CLASS_PERF, 0x0002)
+  SCARD_PERF_TRANSMISSION_TIME* = SCARD_ATTR_VALUE(SCARD_CLASS_PERF, 0x0003)
   SCARD_T0_HEADER_LENGTH* = 7
   SCARD_T0_CMD_LENGTH* = 5
   SCARD_T1_PROLOGUE_LENGTH* = 3
@@ -352,80 +374,407 @@
   SCERR_NOCARDNAME* = 0x4000
   SCERR_NOGUIDS* = 0x8000
   SCARD_AUTOALLOCATE* = DWORD(-1)
-proc SCardEstablishContext*(dwScope: DWORD, pvReserved1: LPCVOID, pvReserved2: LPCVOID, phContext: LPSCARDCONTEXT): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardReleaseContext*(hContext: SCARDCONTEXT): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardIsValidContext*(hContext: SCARDCONTEXT): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardListReaderGroupsA*(hContext: SCARDCONTEXT, mszGroups: LPSTR, pcchGroups: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardListReaderGroupsW*(hContext: SCARDCONTEXT, mszGroups: LPWSTR, pcchGroups: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardListReadersA*(hContext: SCARDCONTEXT, mszGroups: LPCSTR, mszReaders: LPSTR, pcchReaders: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardListReadersW*(hContext: SCARDCONTEXT, mszGroups: LPCWSTR, mszReaders: LPWSTR, pcchReaders: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardListCardsA*(hContext: SCARDCONTEXT, pbAtr: LPCBYTE, rgquidInterfaces: LPCGUID, cguidInterfaceCount: DWORD, mszCards: LPSTR, pcchCards: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardListCardsW*(hContext: SCARDCONTEXT, pbAtr: LPCBYTE, rgquidInterfaces: LPCGUID, cguidInterfaceCount: DWORD, mszCards: LPWSTR, pcchCards: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardListInterfacesA*(hContext: SCARDCONTEXT, szCard: LPCSTR, pguidInterfaces: LPGUID, pcguidInterfaces: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardListInterfacesW*(hContext: SCARDCONTEXT, szCard: LPCWSTR, pguidInterfaces: LPGUID, pcguidInterfaces: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardGetProviderIdA*(hContext: SCARDCONTEXT, szCard: LPCSTR, pguidProviderId: LPGUID): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardGetProviderIdW*(hContext: SCARDCONTEXT, szCard: LPCWSTR, pguidProviderId: LPGUID): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardGetCardTypeProviderNameA*(hContext: SCARDCONTEXT, szCardName: LPCSTR, dwProviderId: DWORD, szProvider: LPSTR, pcchProvider: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardGetCardTypeProviderNameW*(hContext: SCARDCONTEXT, szCardName: LPCWSTR, dwProviderId: DWORD, szProvider: LPWSTR, pcchProvider: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardIntroduceReaderGroupA*(hContext: SCARDCONTEXT, szGroupName: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardIntroduceReaderGroupW*(hContext: SCARDCONTEXT, szGroupName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardForgetReaderGroupA*(hContext: SCARDCONTEXT, szGroupName: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardForgetReaderGroupW*(hContext: SCARDCONTEXT, szGroupName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardIntroduceReaderA*(hContext: SCARDCONTEXT, szReaderName: LPCSTR, szDeviceName: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardIntroduceReaderW*(hContext: SCARDCONTEXT, szReaderName: LPCWSTR, szDeviceName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardForgetReaderA*(hContext: SCARDCONTEXT, szReaderName: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardForgetReaderW*(hContext: SCARDCONTEXT, szReaderName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardAddReaderToGroupA*(hContext: SCARDCONTEXT, szReaderName: LPCSTR, szGroupName: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardAddReaderToGroupW*(hContext: SCARDCONTEXT, szReaderName: LPCWSTR, szGroupName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardRemoveReaderFromGroupA*(hContext: SCARDCONTEXT, szReaderName: LPCSTR, szGroupName: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardRemoveReaderFromGroupW*(hContext: SCARDCONTEXT, szReaderName: LPCWSTR, szGroupName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardIntroduceCardTypeA*(hContext: SCARDCONTEXT, szCardName: LPCSTR, pguidPrimaryProvider: LPCGUID, rgguidInterfaces: LPCGUID, dwInterfaceCount: DWORD, pbAtr: LPCBYTE, pbAtrMask: LPCBYTE, cbAtrLen: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardIntroduceCardTypeW*(hContext: SCARDCONTEXT, szCardName: LPCWSTR, pguidPrimaryProvider: LPCGUID, rgguidInterfaces: LPCGUID, dwInterfaceCount: DWORD, pbAtr: LPCBYTE, pbAtrMask: LPCBYTE, cbAtrLen: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardSetCardTypeProviderNameA*(hContext: SCARDCONTEXT, szCardName: LPCSTR, dwProviderId: DWORD, szProvider: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardSetCardTypeProviderNameW*(hContext: SCARDCONTEXT, szCardName: LPCWSTR, dwProviderId: DWORD, szProvider: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardForgetCardTypeA*(hContext: SCARDCONTEXT, szCardName: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardForgetCardTypeW*(hContext: SCARDCONTEXT, szCardName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardFreeMemory*(hContext: SCARDCONTEXT, pvMem: LPCVOID): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+proc SCardEstablishContext*(
+  dwScope: DWORD, pvReserved1: LPCVOID, pvReserved2: LPCVOID, phContext: LPSCARDCONTEXT
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardReleaseContext*(
+  hContext: SCARDCONTEXT
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardIsValidContext*(
+  hContext: SCARDCONTEXT
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardListReaderGroupsA*(
+  hContext: SCARDCONTEXT, mszGroups: LPSTR, pcchGroups: LPDWORD
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardListReaderGroupsW*(
+  hContext: SCARDCONTEXT, mszGroups: LPWSTR, pcchGroups: LPDWORD
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardListReadersA*(
+  hContext: SCARDCONTEXT, mszGroups: LPCSTR, mszReaders: LPSTR, pcchReaders: LPDWORD
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardListReadersW*(
+  hContext: SCARDCONTEXT, mszGroups: LPCWSTR, mszReaders: LPWSTR, pcchReaders: LPDWORD
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardListCardsA*(
+  hContext: SCARDCONTEXT,
+  pbAtr: LPCBYTE,
+  rgquidInterfaces: LPCGUID,
+  cguidInterfaceCount: DWORD,
+  mszCards: LPSTR,
+  pcchCards: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardListCardsW*(
+  hContext: SCARDCONTEXT,
+  pbAtr: LPCBYTE,
+  rgquidInterfaces: LPCGUID,
+  cguidInterfaceCount: DWORD,
+  mszCards: LPWSTR,
+  pcchCards: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardListInterfacesA*(
+  hContext: SCARDCONTEXT,
+  szCard: LPCSTR,
+  pguidInterfaces: LPGUID,
+  pcguidInterfaces: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardListInterfacesW*(
+  hContext: SCARDCONTEXT,
+  szCard: LPCWSTR,
+  pguidInterfaces: LPGUID,
+  pcguidInterfaces: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardGetProviderIdA*(
+  hContext: SCARDCONTEXT, szCard: LPCSTR, pguidProviderId: LPGUID
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardGetProviderIdW*(
+  hContext: SCARDCONTEXT, szCard: LPCWSTR, pguidProviderId: LPGUID
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardGetCardTypeProviderNameA*(
+  hContext: SCARDCONTEXT,
+  szCardName: LPCSTR,
+  dwProviderId: DWORD,
+  szProvider: LPSTR,
+  pcchProvider: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardGetCardTypeProviderNameW*(
+  hContext: SCARDCONTEXT,
+  szCardName: LPCWSTR,
+  dwProviderId: DWORD,
+  szProvider: LPWSTR,
+  pcchProvider: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardIntroduceReaderGroupA*(
+  hContext: SCARDCONTEXT, szGroupName: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardIntroduceReaderGroupW*(
+  hContext: SCARDCONTEXT, szGroupName: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardForgetReaderGroupA*(
+  hContext: SCARDCONTEXT, szGroupName: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardForgetReaderGroupW*(
+  hContext: SCARDCONTEXT, szGroupName: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardIntroduceReaderA*(
+  hContext: SCARDCONTEXT, szReaderName: LPCSTR, szDeviceName: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardIntroduceReaderW*(
+  hContext: SCARDCONTEXT, szReaderName: LPCWSTR, szDeviceName: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardForgetReaderA*(
+  hContext: SCARDCONTEXT, szReaderName: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardForgetReaderW*(
+  hContext: SCARDCONTEXT, szReaderName: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardAddReaderToGroupA*(
+  hContext: SCARDCONTEXT, szReaderName: LPCSTR, szGroupName: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardAddReaderToGroupW*(
+  hContext: SCARDCONTEXT, szReaderName: LPCWSTR, szGroupName: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardRemoveReaderFromGroupA*(
+  hContext: SCARDCONTEXT, szReaderName: LPCSTR, szGroupName: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardRemoveReaderFromGroupW*(
+  hContext: SCARDCONTEXT, szReaderName: LPCWSTR, szGroupName: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardIntroduceCardTypeA*(
+  hContext: SCARDCONTEXT,
+  szCardName: LPCSTR,
+  pguidPrimaryProvider: LPCGUID,
+  rgguidInterfaces: LPCGUID,
+  dwInterfaceCount: DWORD,
+  pbAtr: LPCBYTE,
+  pbAtrMask: LPCBYTE,
+  cbAtrLen: DWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardIntroduceCardTypeW*(
+  hContext: SCARDCONTEXT,
+  szCardName: LPCWSTR,
+  pguidPrimaryProvider: LPCGUID,
+  rgguidInterfaces: LPCGUID,
+  dwInterfaceCount: DWORD,
+  pbAtr: LPCBYTE,
+  pbAtrMask: LPCBYTE,
+  cbAtrLen: DWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardSetCardTypeProviderNameA*(
+  hContext: SCARDCONTEXT, szCardName: LPCSTR, dwProviderId: DWORD, szProvider: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardSetCardTypeProviderNameW*(
+  hContext: SCARDCONTEXT, szCardName: LPCWSTR, dwProviderId: DWORD, szProvider: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardForgetCardTypeA*(
+  hContext: SCARDCONTEXT, szCardName: LPCSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardForgetCardTypeW*(
+  hContext: SCARDCONTEXT, szCardName: LPCWSTR
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardFreeMemory*(
+  hContext: SCARDCONTEXT, pvMem: LPCVOID
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
 proc SCardAccessStartedEvent*(): HANDLE {.winapi, stdcall, dynlib: "winscard", importc.}
 proc SCardReleaseStartedEvent*(): void {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardLocateCardsA*(hContext: SCARDCONTEXT, mszCards: LPCSTR, rgReaderStates: LPSCARD_READERSTATEA, cReaders: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardLocateCardsW*(hContext: SCARDCONTEXT, mszCards: LPCWSTR, rgReaderStates: LPSCARD_READERSTATEW, cReaders: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardLocateCardsByATRA*(hContext: SCARDCONTEXT, rgAtrMasks: LPSCARD_ATRMASK, cAtrs: DWORD, rgReaderStates: LPSCARD_READERSTATEA, cReaders: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardLocateCardsByATRW*(hContext: SCARDCONTEXT, rgAtrMasks: LPSCARD_ATRMASK, cAtrs: DWORD, rgReaderStates: LPSCARD_READERSTATEW, cReaders: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardGetStatusChangeA*(hContext: SCARDCONTEXT, dwTimeout: DWORD, rgReaderStates: LPSCARD_READERSTATEA, cReaders: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardGetStatusChangeW*(hContext: SCARDCONTEXT, dwTimeout: DWORD, rgReaderStates: LPSCARD_READERSTATEW, cReaders: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardCancel*(hContext: SCARDCONTEXT): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardConnectA*(hContext: SCARDCONTEXT, szReader: LPCSTR, dwShareMode: DWORD, dwPreferredProtocols: DWORD, phCard: LPSCARDHANDLE, pdwActiveProtocol: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardConnectW*(hContext: SCARDCONTEXT, szReader: LPCWSTR, dwShareMode: DWORD, dwPreferredProtocols: DWORD, phCard: LPSCARDHANDLE, pdwActiveProtocol: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardReconnect*(hCard: SCARDHANDLE, dwShareMode: DWORD, dwPreferredProtocols: DWORD, dwInitialization: DWORD, pdwActiveProtocol: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardDisconnect*(hCard: SCARDHANDLE, dwDisposition: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardBeginTransaction*(hCard: SCARDHANDLE): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardEndTransaction*(hCard: SCARDHANDLE, dwDisposition: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardState*(hCard: SCARDHANDLE, pdwState: LPDWORD, pdwProtocol: LPDWORD, pbAtr: LPBYTE, pcbAtrLen: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardStatusA*(hCard: SCARDHANDLE, szReaderName: LPSTR, pcchReaderLen: LPDWORD, pdwState: LPDWORD, pdwProtocol: LPDWORD, pbAtr: LPBYTE, pcbAtrLen: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardStatusW*(hCard: SCARDHANDLE, szReaderName: LPWSTR, pcchReaderLen: LPDWORD, pdwState: LPDWORD, pdwProtocol: LPDWORD, pbAtr: LPBYTE, pcbAtrLen: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardTransmit*(hCard: SCARDHANDLE, pioSendPci: LPCSCARD_IO_REQUEST, pbSendBuffer: LPCBYTE, cbSendLength: DWORD, pioRecvPci: LPSCARD_IO_REQUEST, pbRecvBuffer: LPBYTE, pcbRecvLength: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardControl*(hCard: SCARDHANDLE, dwControlCode: DWORD, lpInBuffer: LPCVOID, nInBufferSize: DWORD, lpOutBuffer: LPVOID, nOutBufferSize: DWORD, lpBytesReturned: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardGetAttrib*(hCard: SCARDHANDLE, dwAttrId: DWORD, pbAttr: LPBYTE, pcbAttrLen: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardGetReaderCapabilities*(hCard: SCARDHANDLE, dwAttrId: DWORD, pbAttr: LPBYTE, pcbAttrLen: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardGetAttrib".}
-proc SCardSetAttrib*(hCard: SCARDHANDLE, dwAttrId: DWORD, pbAttr: LPCBYTE, cbAttrLen: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardSetReaderCapabilities*(hCard: SCARDHANDLE, dwAttrId: DWORD, pbAttr: LPCBYTE, cbAttrLen: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardSetAttrib".}
-proc SCardUIDlgSelectCardA*(P1: LPOPENCARDNAMEA_EX): LONG {.winapi, stdcall, dynlib: "scarddlg", importc.}
-proc SCardUIDlgSelectCardW*(P1: LPOPENCARDNAMEW_EX): LONG {.winapi, stdcall, dynlib: "scarddlg", importc.}
-proc GetOpenCardNameA*(P1: LPOPENCARDNAMEA): LONG {.winapi, stdcall, dynlib: "scarddlg", importc.}
-proc GetOpenCardNameW*(P1: LPOPENCARDNAMEW): LONG {.winapi, stdcall, dynlib: "scarddlg", importc.}
+proc SCardLocateCardsA*(
+  hContext: SCARDCONTEXT,
+  mszCards: LPCSTR,
+  rgReaderStates: LPSCARD_READERSTATEA,
+  cReaders: DWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardLocateCardsW*(
+  hContext: SCARDCONTEXT,
+  mszCards: LPCWSTR,
+  rgReaderStates: LPSCARD_READERSTATEW,
+  cReaders: DWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardLocateCardsByATRA*(
+  hContext: SCARDCONTEXT,
+  rgAtrMasks: LPSCARD_ATRMASK,
+  cAtrs: DWORD,
+  rgReaderStates: LPSCARD_READERSTATEA,
+  cReaders: DWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardLocateCardsByATRW*(
+  hContext: SCARDCONTEXT,
+  rgAtrMasks: LPSCARD_ATRMASK,
+  cAtrs: DWORD,
+  rgReaderStates: LPSCARD_READERSTATEW,
+  cReaders: DWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardGetStatusChangeA*(
+  hContext: SCARDCONTEXT,
+  dwTimeout: DWORD,
+  rgReaderStates: LPSCARD_READERSTATEA,
+  cReaders: DWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardGetStatusChangeW*(
+  hContext: SCARDCONTEXT,
+  dwTimeout: DWORD,
+  rgReaderStates: LPSCARD_READERSTATEW,
+  cReaders: DWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardCancel*(
+  hContext: SCARDCONTEXT
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardConnectA*(
+  hContext: SCARDCONTEXT,
+  szReader: LPCSTR,
+  dwShareMode: DWORD,
+  dwPreferredProtocols: DWORD,
+  phCard: LPSCARDHANDLE,
+  pdwActiveProtocol: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardConnectW*(
+  hContext: SCARDCONTEXT,
+  szReader: LPCWSTR,
+  dwShareMode: DWORD,
+  dwPreferredProtocols: DWORD,
+  phCard: LPSCARDHANDLE,
+  pdwActiveProtocol: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardReconnect*(
+  hCard: SCARDHANDLE,
+  dwShareMode: DWORD,
+  dwPreferredProtocols: DWORD,
+  dwInitialization: DWORD,
+  pdwActiveProtocol: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardDisconnect*(
+  hCard: SCARDHANDLE, dwDisposition: DWORD
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardBeginTransaction*(
+  hCard: SCARDHANDLE
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardEndTransaction*(
+  hCard: SCARDHANDLE, dwDisposition: DWORD
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardState*(
+  hCard: SCARDHANDLE,
+  pdwState: LPDWORD,
+  pdwProtocol: LPDWORD,
+  pbAtr: LPBYTE,
+  pcbAtrLen: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardStatusA*(
+  hCard: SCARDHANDLE,
+  szReaderName: LPSTR,
+  pcchReaderLen: LPDWORD,
+  pdwState: LPDWORD,
+  pdwProtocol: LPDWORD,
+  pbAtr: LPBYTE,
+  pcbAtrLen: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardStatusW*(
+  hCard: SCARDHANDLE,
+  szReaderName: LPWSTR,
+  pcchReaderLen: LPDWORD,
+  pdwState: LPDWORD,
+  pdwProtocol: LPDWORD,
+  pbAtr: LPBYTE,
+  pcbAtrLen: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardTransmit*(
+  hCard: SCARDHANDLE,
+  pioSendPci: LPCSCARD_IO_REQUEST,
+  pbSendBuffer: LPCBYTE,
+  cbSendLength: DWORD,
+  pioRecvPci: LPSCARD_IO_REQUEST,
+  pbRecvBuffer: LPBYTE,
+  pcbRecvLength: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardControl*(
+  hCard: SCARDHANDLE,
+  dwControlCode: DWORD,
+  lpInBuffer: LPCVOID,
+  nInBufferSize: DWORD,
+  lpOutBuffer: LPVOID,
+  nOutBufferSize: DWORD,
+  lpBytesReturned: LPDWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardGetAttrib*(
+  hCard: SCARDHANDLE, dwAttrId: DWORD, pbAttr: LPBYTE, pcbAttrLen: LPDWORD
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardGetReaderCapabilities*(
+  hCard: SCARDHANDLE, dwAttrId: DWORD, pbAttr: LPBYTE, pcbAttrLen: LPDWORD
+): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardGetAttrib".}
+
+proc SCardSetAttrib*(
+  hCard: SCARDHANDLE, dwAttrId: DWORD, pbAttr: LPCBYTE, cbAttrLen: DWORD
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardSetReaderCapabilities*(
+  hCard: SCARDHANDLE, dwAttrId: DWORD, pbAttr: LPCBYTE, cbAttrLen: DWORD
+): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardSetAttrib".}
+
+proc SCardUIDlgSelectCardA*(
+  P1: LPOPENCARDNAMEA_EX
+): LONG {.winapi, stdcall, dynlib: "scarddlg", importc.}
+
+proc SCardUIDlgSelectCardW*(
+  P1: LPOPENCARDNAMEW_EX
+): LONG {.winapi, stdcall, dynlib: "scarddlg", importc.}
+
+proc GetOpenCardNameA*(
+  P1: LPOPENCARDNAMEA
+): LONG {.winapi, stdcall, dynlib: "scarddlg", importc.}
+
+proc GetOpenCardNameW*(
+  P1: LPOPENCARDNAMEW
+): LONG {.winapi, stdcall, dynlib: "scarddlg", importc.}
+
 proc SCardDlgExtendedError*(): LONG {.winapi, stdcall, dynlib: "scarddlg", importc.}
-proc SCardGetTransmitCount*(hCard: SCARDHANDLE, pcTransmitCount: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardReadCacheA*(hContext: SCARDCONTEXT, CardIdentifier: ptr UUID, FreshnessCounter: DWORD, LookupName: LPSTR, Data: PBYTE, DataLen: ptr DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardReadCacheW*(hContext: SCARDCONTEXT, CardIdentifier: ptr UUID, FreshnessCounter: DWORD, LookupName: LPWSTR, Data: PBYTE, DataLen: ptr DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardWriteCacheA*(hContext: SCARDCONTEXT, CardIdentifier: ptr UUID, FreshnessCounter: DWORD, LookupName: LPSTR, Data: PBYTE, DataLen: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc SCardWriteCacheW*(hContext: SCARDCONTEXT, CardIdentifier: ptr UUID, FreshnessCounter: DWORD, LookupName: LPWSTR, Data: PBYTE, DataLen: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
-proc `CmdBytes=`*(self: var SCARD_T0_REQUEST, x: SCARD_T0_COMMAND) {.inline.} = self.union1.CmdBytes = x
-proc CmdBytes*(self: SCARD_T0_REQUEST): SCARD_T0_COMMAND {.inline.} = self.union1.CmdBytes
-proc CmdBytes*(self: var SCARD_T0_REQUEST): var SCARD_T0_COMMAND {.inline.} = self.union1.CmdBytes
-proc `rgbHeader=`*(self: var SCARD_T0_REQUEST, x: array[5, BYTE]) {.inline.} = self.union1.rgbHeader = x
-proc rgbHeader*(self: SCARD_T0_REQUEST): array[5, BYTE] {.inline.} = self.union1.rgbHeader
-proc rgbHeader*(self: var SCARD_T0_REQUEST): var array[5, BYTE] {.inline.} = self.union1.rgbHeader
+proc SCardGetTransmitCount*(
+  hCard: SCARDHANDLE, pcTransmitCount: LPDWORD
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardReadCacheA*(
+  hContext: SCARDCONTEXT,
+  CardIdentifier: ptr UUID,
+  FreshnessCounter: DWORD,
+  LookupName: LPSTR,
+  Data: PBYTE,
+  DataLen: ptr DWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardReadCacheW*(
+  hContext: SCARDCONTEXT,
+  CardIdentifier: ptr UUID,
+  FreshnessCounter: DWORD,
+  LookupName: LPWSTR,
+  Data: PBYTE,
+  DataLen: ptr DWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardWriteCacheA*(
+  hContext: SCARDCONTEXT,
+  CardIdentifier: ptr UUID,
+  FreshnessCounter: DWORD,
+  LookupName: LPSTR,
+  Data: PBYTE,
+  DataLen: DWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc SCardWriteCacheW*(
+  hContext: SCARDCONTEXT,
+  CardIdentifier: ptr UUID,
+  FreshnessCounter: DWORD,
+  LookupName: LPWSTR,
+  Data: PBYTE,
+  DataLen: DWORD,
+): LONG {.winapi, stdcall, dynlib: "winscard", importc.}
+
+proc `CmdBytes=`*(self: var SCARD_T0_REQUEST, x: SCARD_T0_COMMAND) {.inline.} =
+  self.union1.CmdBytes = x
+
+proc CmdBytes*(self: SCARD_T0_REQUEST): SCARD_T0_COMMAND {.inline.} =
+  self.union1.CmdBytes
+
+proc CmdBytes*(self: var SCARD_T0_REQUEST): var SCARD_T0_COMMAND {.inline.} =
+  self.union1.CmdBytes
+
+proc `rgbHeader=`*(self: var SCARD_T0_REQUEST, x: array[5, BYTE]) {.inline.} =
+  self.union1.rgbHeader = x
+
+proc rgbHeader*(self: SCARD_T0_REQUEST): array[5, BYTE] {.inline.} =
+  self.union1.rgbHeader
+
+proc rgbHeader*(self: var SCARD_T0_REQUEST): var array[5, BYTE] {.inline.} =
+  self.union1.rgbHeader
+
 when winimUnicode:
   type
     SCARD_READERSTATE* = SCARD_READERSTATEW
@@ -441,34 +790,174 @@
     OPENCARDNAME* = OPENCARDNAMEW
     POPENCARDNAME* = POPENCARDNAMEW
     LPOPENCARDNAME* = LPOPENCARDNAMEW
+
   const
     SCARD_ATTR_DEVICE_FRIENDLY_NAME* = SCARD_ATTR_DEVICE_FRIENDLY_NAME_W
     SCARD_ATTR_DEVICE_SYSTEM_NAME* = SCARD_ATTR_DEVICE_SYSTEM_NAME_W
-  proc SCardListReaderGroups*(hContext: SCARDCONTEXT, mszGroups: LPWSTR, pcchGroups: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListReaderGroupsW".}
-  proc SCardListReaders*(hContext: SCARDCONTEXT, mszGroups: LPCWSTR, mszReaders: LPWSTR, pcchReaders: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListReadersW".}
-  proc SCardListCards*(hContext: SCARDCONTEXT, pbAtr: LPCBYTE, rgquidInterfaces: LPCGUID, cguidInterfaceCount: DWORD, mszCards: LPWSTR, pcchCards: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListCardsW".}
-  proc SCardListInterfaces*(hContext: SCARDCONTEXT, szCard: LPCWSTR, pguidInterfaces: LPGUID, pcguidInterfaces: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListInterfacesW".}
-  proc SCardGetProviderId*(hContext: SCARDCONTEXT, szCard: LPCWSTR, pguidProviderId: LPGUID): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardGetProviderIdW".}
-  proc SCardGetCardTypeProviderName*(hContext: SCARDCONTEXT, szCardName: LPCWSTR, dwProviderId: DWORD, szProvider: LPWSTR, pcchProvider: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardGetCardTypeProviderNameW".}
-  proc SCardIntroduceReaderGroup*(hContext: SCARDCONTEXT, szGroupName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardIntroduceReaderGroupW".}
-  proc SCardForgetReaderGroup*(hContext: SCARDCONTEXT, szGroupName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardForgetReaderGroupW".}
-  proc SCardIntroduceReader*(hContext: SCARDCONTEXT, szReaderName: LPCWSTR, szDeviceName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardIntroduceReaderW".}
-  proc SCardForgetReader*(hContext: SCARDCONTEXT, szReaderName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardForgetReaderW".}
-  proc SCardAddReaderToGroup*(hContext: SCARDCONTEXT, szReaderName: LPCWSTR, szGroupName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardAddReaderToGroupW".}
-  proc SCardRemoveReaderFromGroup*(hContext: SCARDCONTEXT, szReaderName: LPCWSTR, szGroupName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardRemoveReaderFromGroupW".}
-  proc SCardIntroduceCardType*(hContext: SCARDCONTEXT, szCardName: LPCWSTR, pguidPrimaryProvider: LPCGUID, rgguidInterfaces: LPCGUID, dwInterfaceCount: DWORD, pbAtr: LPCBYTE, pbAtrMask: LPCBYTE, cbAtrLen: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardIntroduceCardTypeW".}
-  proc SCardSetCardTypeProviderName*(hContext: SCARDCONTEXT, szCardName: LPCWSTR, dwProviderId: DWORD, szProvider: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardSetCardTypeProviderNameW".}
-  proc SCardForgetCardType*(hContext: SCARDCONTEXT, szCardName: LPCWSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardForgetCardTypeW".}
-  proc SCardListCardTypes*(hContext: SCARDCONTEXT, pbAtr: LPCBYTE, rgquidInterfaces: LPCGUID, cguidInterfaceCount: DWORD, mszCards: LPWSTR, pcchCards: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListCardsW".}
-  proc SCardLocateCards*(hContext: SCARDCONTEXT, mszCards: LPCWSTR, rgReaderStates: LPSCARD_READERSTATEW, cReaders: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardLocateCardsW".}
-  proc SCardLocateCardsByATR*(hContext: SCARDCONTEXT, rgAtrMasks: LPSCARD_ATRMASK, cAtrs: DWORD, rgReaderStates: LPSCARD_READERSTATEW, cReaders: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardLocateCardsByATRW".}
-  proc SCardGetStatusChange*(hContext: SCARDCONTEXT, dwTimeout: DWORD, rgReaderStates: LPSCARD_READERSTATEW, cReaders: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardGetStatusChangeW".}
-  proc SCardConnect*(hContext: SCARDCONTEXT, szReader: LPCWSTR, dwShareMode: DWORD, dwPreferredProtocols: DWORD, phCard: LPSCARDHANDLE, pdwActiveProtocol: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardConnectW".}
-  proc SCardStatus*(hCard: SCARDHANDLE, szReaderName: LPWSTR, pcchReaderLen: LPDWORD, pdwState: LPDWORD, pdwProtocol: LPDWORD, pbAtr: LPBYTE, pcbAtrLen: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardStatusW".}
-  proc SCardUIDlgSelectCard*(P1: LPOPENCARDNAMEW_EX): LONG {.winapi, stdcall, dynlib: "scarddlg", importc: "SCardUIDlgSelectCardW".}
-  proc GetOpenCardName*(P1: LPOPENCARDNAMEW): LONG {.winapi, stdcall, dynlib: "scarddlg", importc: "GetOpenCardNameW".}
-  proc SCardReadCache*(hContext: SCARDCONTEXT, CardIdentifier: ptr UUID, FreshnessCounter: DWORD, LookupName: LPWSTR, Data: PBYTE, DataLen: ptr DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardReadCacheW".}
-  proc SCardWriteCache*(hContext: SCARDCONTEXT, CardIdentifier: ptr UUID, FreshnessCounter: DWORD, LookupName: LPWSTR, Data: PBYTE, DataLen: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardWriteCacheW".}
+  proc SCardListReaderGroups*(
+    hContext: SCARDCONTEXT, mszGroups: LPWSTR, pcchGroups: LPDWORD
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListReaderGroupsW".}
+
+  proc SCardListReaders*(
+    hContext: SCARDCONTEXT, mszGroups: LPCWSTR, mszReaders: LPWSTR, pcchReaders: LPDWORD
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListReadersW".}
+
+  proc SCardListCards*(
+    hContext: SCARDCONTEXT,
+    pbAtr: LPCBYTE,
+    rgquidInterfaces: LPCGUID,
+    cguidInterfaceCount: DWORD,
+    mszCards: LPWSTR,
+    pcchCards: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListCardsW".}
+
+  proc SCardListInterfaces*(
+    hContext: SCARDCONTEXT,
+    szCard: LPCWSTR,
+    pguidInterfaces: LPGUID,
+    pcguidInterfaces: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListInterfacesW".}
+
+  proc SCardGetProviderId*(
+    hContext: SCARDCONTEXT, szCard: LPCWSTR, pguidProviderId: LPGUID
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardGetProviderIdW".}
+
+  proc SCardGetCardTypeProviderName*(
+    hContext: SCARDCONTEXT,
+    szCardName: LPCWSTR,
+    dwProviderId: DWORD,
+    szProvider: LPWSTR,
+    pcchProvider: LPDWORD,
+  ): LONG {.
+    winapi, stdcall, dynlib: "winscard", importc: "SCardGetCardTypeProviderNameW"
+  .}
+
+  proc SCardIntroduceReaderGroup*(
+    hContext: SCARDCONTEXT, szGroupName: LPCWSTR
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardIntroduceReaderGroupW".}
+
+  proc SCardForgetReaderGroup*(
+    hContext: SCARDCONTEXT, szGroupName: LPCWSTR
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardForgetReaderGroupW".}
+
+  proc SCardIntroduceReader*(
+    hContext: SCARDCONTEXT, szReaderName: LPCWSTR, szDeviceName: LPCWSTR
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardIntroduceReaderW".}
+
+  proc SCardForgetReader*(
+    hContext: SCARDCONTEXT, szReaderName: LPCWSTR
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardForgetReaderW".}
+
+  proc SCardAddReaderToGroup*(
+    hContext: SCARDCONTEXT, szReaderName: LPCWSTR, szGroupName: LPCWSTR
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardAddReaderToGroupW".}
+
+  proc SCardRemoveReaderFromGroup*(
+    hContext: SCARDCONTEXT, szReaderName: LPCWSTR, szGroupName: LPCWSTR
+  ): LONG {.
+    winapi, stdcall, dynlib: "winscard", importc: "SCardRemoveReaderFromGroupW"
+  .}
+
+  proc SCardIntroduceCardType*(
+    hContext: SCARDCONTEXT,
+    szCardName: LPCWSTR,
+    pguidPrimaryProvider: LPCGUID,
+    rgguidInterfaces: LPCGUID,
+    dwInterfaceCount: DWORD,
+    pbAtr: LPCBYTE,
+    pbAtrMask: LPCBYTE,
+    cbAtrLen: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardIntroduceCardTypeW".}
+
+  proc SCardSetCardTypeProviderName*(
+    hContext: SCARDCONTEXT,
+    szCardName: LPCWSTR,
+    dwProviderId: DWORD,
+    szProvider: LPCWSTR,
+  ): LONG {.
+    winapi, stdcall, dynlib: "winscard", importc: "SCardSetCardTypeProviderNameW"
+  .}
+
+  proc SCardForgetCardType*(
+    hContext: SCARDCONTEXT, szCardName: LPCWSTR
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardForgetCardTypeW".}
+
+  proc SCardListCardTypes*(
+    hContext: SCARDCONTEXT,
+    pbAtr: LPCBYTE,
+    rgquidInterfaces: LPCGUID,
+    cguidInterfaceCount: DWORD,
+    mszCards: LPWSTR,
+    pcchCards: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListCardsW".}
+
+  proc SCardLocateCards*(
+    hContext: SCARDCONTEXT,
+    mszCards: LPCWSTR,
+    rgReaderStates: LPSCARD_READERSTATEW,
+    cReaders: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardLocateCardsW".}
+
+  proc SCardLocateCardsByATR*(
+    hContext: SCARDCONTEXT,
+    rgAtrMasks: LPSCARD_ATRMASK,
+    cAtrs: DWORD,
+    rgReaderStates: LPSCARD_READERSTATEW,
+    cReaders: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardLocateCardsByATRW".}
+
+  proc SCardGetStatusChange*(
+    hContext: SCARDCONTEXT,
+    dwTimeout: DWORD,
+    rgReaderStates: LPSCARD_READERSTATEW,
+    cReaders: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardGetStatusChangeW".}
+
+  proc SCardConnect*(
+    hContext: SCARDCONTEXT,
+    szReader: LPCWSTR,
+    dwShareMode: DWORD,
+    dwPreferredProtocols: DWORD,
+    phCard: LPSCARDHANDLE,
+    pdwActiveProtocol: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardConnectW".}
+
+  proc SCardStatus*(
+    hCard: SCARDHANDLE,
+    szReaderName: LPWSTR,
+    pcchReaderLen: LPDWORD,
+    pdwState: LPDWORD,
+    pdwProtocol: LPDWORD,
+    pbAtr: LPBYTE,
+    pcbAtrLen: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardStatusW".}
+
+  proc SCardUIDlgSelectCard*(
+    P1: LPOPENCARDNAMEW_EX
+  ): LONG {.winapi, stdcall, dynlib: "scarddlg", importc: "SCardUIDlgSelectCardW".}
+
+  proc GetOpenCardName*(
+    P1: LPOPENCARDNAMEW
+  ): LONG {.winapi, stdcall, dynlib: "scarddlg", importc: "GetOpenCardNameW".}
+
+  proc SCardReadCache*(
+    hContext: SCARDCONTEXT,
+    CardIdentifier: ptr UUID,
+    FreshnessCounter: DWORD,
+    LookupName: LPWSTR,
+    Data: PBYTE,
+    DataLen: ptr DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardReadCacheW".}
+
+  proc SCardWriteCache*(
+    hContext: SCARDCONTEXT,
+    CardIdentifier: ptr UUID,
+    FreshnessCounter: DWORD,
+    LookupName: LPWSTR,
+    Data: PBYTE,
+    DataLen: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardWriteCacheW".}
+
 when winimAnsi:
   type
     SCARD_READERSTATE* = SCARD_READERSTATEA
@@ -484,31 +973,167 @@
     OPENCARDNAME* = OPENCARDNAMEA
     POPENCARDNAME* = POPENCARDNAMEA
     LPOPENCARDNAME* = LPOPENCARDNAMEA
+
   const
     SCARD_ATTR_DEVICE_FRIENDLY_NAME* = SCARD_ATTR_DEVICE_FRIENDLY_NAME_A
     SCARD_ATTR_DEVICE_SYSTEM_NAME* = SCARD_ATTR_DEVICE_SYSTEM_NAME_A
-  proc SCardListReaderGroups*(hContext: SCARDCONTEXT, mszGroups: LPSTR, pcchGroups: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListReaderGroupsA".}
-  proc SCardListReaders*(hContext: SCARDCONTEXT, mszGroups: LPCSTR, mszReaders: LPSTR, pcchReaders: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListReadersA".}
-  proc SCardListCards*(hContext: SCARDCONTEXT, pbAtr: LPCBYTE, rgquidInterfaces: LPCGUID, cguidInterfaceCount: DWORD, mszCards: LPSTR, pcchCards: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListCardsA".}
-  proc SCardListInterfaces*(hContext: SCARDCONTEXT, szCard: LPCSTR, pguidInterfaces: LPGUID, pcguidInterfaces: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListInterfacesA".}
-  proc SCardGetProviderId*(hContext: SCARDCONTEXT, szCard: LPCSTR, pguidProviderId: LPGUID): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardGetProviderIdA".}
-  proc SCardGetCardTypeProviderName*(hContext: SCARDCONTEXT, szCardName: LPCSTR, dwProviderId: DWORD, szProvider: LPSTR, pcchProvider: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardGetCardTypeProviderNameA".}
-  proc SCardIntroduceReaderGroup*(hContext: SCARDCONTEXT, szGroupName: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardIntroduceReaderGroupA".}
-  proc SCardForgetReaderGroup*(hContext: SCARDCONTEXT, szGroupName: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardForgetReaderGroupA".}
-  proc SCardIntroduceReader*(hContext: SCARDCONTEXT, szReaderName: LPCSTR, szDeviceName: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardIntroduceReaderA".}
-  proc SCardForgetReader*(hContext: SCARDCONTEXT, szReaderName: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardForgetReaderA".}
-  proc SCardAddReaderToGroup*(hContext: SCARDCONTEXT, szReaderName: LPCSTR, szGroupName: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardAddReaderToGroupA".}
-  proc SCardRemoveReaderFromGroup*(hContext: SCARDCONTEXT, szReaderName: LPCSTR, szGroupName: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardRemoveReaderFromGroupA".}
-  proc SCardIntroduceCardType*(hContext: SCARDCONTEXT, szCardName: LPCSTR, pguidPrimaryProvider: LPCGUID, rgguidInterfaces: LPCGUID, dwInterfaceCount: DWORD, pbAtr: LPCBYTE, pbAtrMask: LPCBYTE, cbAtrLen: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardIntroduceCardTypeA".}
-  proc SCardSetCardTypeProviderName*(hContext: SCARDCONTEXT, szCardName: LPCSTR, dwProviderId: DWORD, szProvider: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardSetCardTypeProviderNameA".}
-  proc SCardForgetCardType*(hContext: SCARDCONTEXT, szCardName: LPCSTR): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardForgetCardTypeA".}
-  proc SCardListCardTypes*(hContext: SCARDCONTEXT, pbAtr: LPCBYTE, rgquidInterfaces: LPCGUID, cguidInterfaceCount: DWORD, mszCards: LPSTR, pcchCards: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListCardsA".}
-  proc SCardLocateCards*(hContext: SCARDCONTEXT, mszCards: LPCSTR, rgReaderStates: LPSCARD_READERSTATEA, cReaders: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardLocateCardsA".}
-  proc SCardLocateCardsByATR*(hContext: SCARDCONTEXT, rgAtrMasks: LPSCARD_ATRMASK, cAtrs: DWORD, rgReaderStates: LPSCARD_READERSTATEA, cReaders: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardLocateCardsByATRA".}
-  proc SCardGetStatusChange*(hContext: SCARDCONTEXT, dwTimeout: DWORD, rgReaderStates: LPSCARD_READERSTATEA, cReaders: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardGetStatusChangeA".}
-  proc SCardConnect*(hContext: SCARDCONTEXT, szReader: LPCSTR, dwShareMode: DWORD, dwPreferredProtocols: DWORD, phCard: LPSCARDHANDLE, pdwActiveProtocol: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardConnectA".}
-  proc SCardStatus*(hCard: SCARDHANDLE, szReaderName: LPSTR, pcchReaderLen: LPDWORD, pdwState: LPDWORD, pdwProtocol: LPDWORD, pbAtr: LPBYTE, pcbAtrLen: LPDWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardStatusA".}
-  proc SCardUIDlgSelectCard*(P1: LPOPENCARDNAMEA_EX): LONG {.winapi, stdcall, dynlib: "scarddlg", importc: "SCardUIDlgSelectCardA".}
-  proc GetOpenCardName*(P1: LPOPENCARDNAMEA): LONG {.winapi, stdcall, dynlib: "scarddlg", importc: "GetOpenCardNameA".}
-  proc SCardReadCache*(hContext: SCARDCONTEXT, CardIdentifier: ptr UUID, FreshnessCounter: DWORD, LookupName: LPSTR, Data: PBYTE, DataLen: ptr DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardReadCacheA".}
-  proc SCardWriteCache*(hContext: SCARDCONTEXT, CardIdentifier: ptr UUID, FreshnessCounter: DWORD, LookupName: LPSTR, Data: PBYTE, DataLen: DWORD): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardWriteCacheA".}
+  proc SCardListReaderGroups*(
+    hContext: SCARDCONTEXT, mszGroups: LPSTR, pcchGroups: LPDWORD
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListReaderGroupsA".}
+
+  proc SCardListReaders*(
+    hContext: SCARDCONTEXT, mszGroups: LPCSTR, mszReaders: LPSTR, pcchReaders: LPDWORD
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListReadersA".}
+
+  proc SCardListCards*(
+    hContext: SCARDCONTEXT,
+    pbAtr: LPCBYTE,
+    rgquidInterfaces: LPCGUID,
+    cguidInterfaceCount: DWORD,
+    mszCards: LPSTR,
+    pcchCards: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListCardsA".}
+
+  proc SCardListInterfaces*(
+    hContext: SCARDCONTEXT,
+    szCard: LPCSTR,
+    pguidInterfaces: LPGUID,
+    pcguidInterfaces: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListInterfacesA".}
+
+  proc SCardGetProviderId*(
+    hContext: SCARDCONTEXT, szCard: LPCSTR, pguidProviderId: LPGUID
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardGetProviderIdA".}
+
+  proc SCardGetCardTypeProviderName*(
+    hContext: SCARDCONTEXT,
+    szCardName: LPCSTR,
+    dwProviderId: DWORD,
+    szProvider: LPSTR,
+    pcchProvider: LPDWORD,
+  ): LONG {.
+    winapi, stdcall, dynlib: "winscard", importc: "SCardGetCardTypeProviderNameA"
+  .}
+
+  proc SCardIntroduceReaderGroup*(
+    hContext: SCARDCONTEXT, szGroupName: LPCSTR
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardIntroduceReaderGroupA".}
+
+  proc SCardForgetReaderGroup*(
+    hContext: SCARDCONTEXT, szGroupName: LPCSTR
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardForgetReaderGroupA".}
+
+  proc SCardIntroduceReader*(
+    hContext: SCARDCONTEXT, szReaderName: LPCSTR, szDeviceName: LPCSTR
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardIntroduceReaderA".}
+
+  proc SCardForgetReader*(
+    hContext: SCARDCONTEXT, szReaderName: LPCSTR
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardForgetReaderA".}
+
+  proc SCardAddReaderToGroup*(
+    hContext: SCARDCONTEXT, szReaderName: LPCSTR, szGroupName: LPCSTR
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardAddReaderToGroupA".}
+
+  proc SCardRemoveReaderFromGroup*(
+    hContext: SCARDCONTEXT, szReaderName: LPCSTR, szGroupName: LPCSTR
+  ): LONG {.
+    winapi, stdcall, dynlib: "winscard", importc: "SCardRemoveReaderFromGroupA"
+  .}
+
+  proc SCardIntroduceCardType*(
+    hContext: SCARDCONTEXT,
+    szCardName: LPCSTR,
+    pguidPrimaryProvider: LPCGUID,
+    rgguidInterfaces: LPCGUID,
+    dwInterfaceCount: DWORD,
+    pbAtr: LPCBYTE,
+    pbAtrMask: LPCBYTE,
+    cbAtrLen: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardIntroduceCardTypeA".}
+
+  proc SCardSetCardTypeProviderName*(
+    hContext: SCARDCONTEXT, szCardName: LPCSTR, dwProviderId: DWORD, szProvider: LPCSTR
+  ): LONG {.
+    winapi, stdcall, dynlib: "winscard", importc: "SCardSetCardTypeProviderNameA"
+  .}
+
+  proc SCardForgetCardType*(
+    hContext: SCARDCONTEXT, szCardName: LPCSTR
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardForgetCardTypeA".}
+
+  proc SCardListCardTypes*(
+    hContext: SCARDCONTEXT,
+    pbAtr: LPCBYTE,
+    rgquidInterfaces: LPCGUID,
+    cguidInterfaceCount: DWORD,
+    mszCards: LPSTR,
+    pcchCards: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardListCardsA".}
+
+  proc SCardLocateCards*(
+    hContext: SCARDCONTEXT,
+    mszCards: LPCSTR,
+    rgReaderStates: LPSCARD_READERSTATEA,
+    cReaders: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardLocateCardsA".}
+
+  proc SCardLocateCardsByATR*(
+    hContext: SCARDCONTEXT,
+    rgAtrMasks: LPSCARD_ATRMASK,
+    cAtrs: DWORD,
+    rgReaderStates: LPSCARD_READERSTATEA,
+    cReaders: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardLocateCardsByATRA".}
+
+  proc SCardGetStatusChange*(
+    hContext: SCARDCONTEXT,
+    dwTimeout: DWORD,
+    rgReaderStates: LPSCARD_READERSTATEA,
+    cReaders: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardGetStatusChangeA".}
+
+  proc SCardConnect*(
+    hContext: SCARDCONTEXT,
+    szReader: LPCSTR,
+    dwShareMode: DWORD,
+    dwPreferredProtocols: DWORD,
+    phCard: LPSCARDHANDLE,
+    pdwActiveProtocol: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardConnectA".}
+
+  proc SCardStatus*(
+    hCard: SCARDHANDLE,
+    szReaderName: LPSTR,
+    pcchReaderLen: LPDWORD,
+    pdwState: LPDWORD,
+    pdwProtocol: LPDWORD,
+    pbAtr: LPBYTE,
+    pcbAtrLen: LPDWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardStatusA".}
+
+  proc SCardUIDlgSelectCard*(
+    P1: LPOPENCARDNAMEA_EX
+  ): LONG {.winapi, stdcall, dynlib: "scarddlg", importc: "SCardUIDlgSelectCardA".}
+
+  proc GetOpenCardName*(
+    P1: LPOPENCARDNAMEA
+  ): LONG {.winapi, stdcall, dynlib: "scarddlg", importc: "GetOpenCardNameA".}
+
+  proc SCardReadCache*(
+    hContext: SCARDCONTEXT,
+    CardIdentifier: ptr UUID,
+    FreshnessCounter: DWORD,
+    LookupName: LPSTR,
+    Data: PBYTE,
+    DataLen: ptr DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardReadCacheA".}
+
+  proc SCardWriteCache*(
+    hContext: SCARDCONTEXT,
+    CardIdentifier: ptr UUID,
+    FreshnessCounter: DWORD,
+    LookupName: LPSTR,
+    Data: PBYTE,
+    DataLen: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winscard", importc: "SCardWriteCacheA".}
--- a/semicongine/thirdparty/winim/winim/inc/winsock.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winsock.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -54,14 +54,16 @@
   WSAEVENT* = HANDLE
   IN_ADDR* {.pure.} = object
     S_addr*: int32
+
   PIN_ADDR* = ptr IN_ADDR
   LPIN_ADDR* = ptr IN_ADDR
-const
-  FD_SETSIZE* = 64
+
+const FD_SETSIZE* = 64
 type
   fd_set* {.pure.} = object
     fd_count*: int32
     fd_array*: array[FD_SETSIZE, SOCKET]
+
   PFD_SET* = ptr fd_set
   LPFD_SET* = ptr fd_set
   hostent* {.pure.} = object
@@ -70,23 +72,25 @@
     h_addrtype*: int16
     h_length*: int16
     h_addr_list*: ptr ptr char
+
   HOSTENT* = hostent
   PHOSTENT* = ptr hostent
   LPHOSTENT* = ptr hostent
+
 when winimCpu64:
-  type
-    servent* {.pure.} = object
-      s_name*: ptr char
-      s_aliases*: ptr ptr char
-      s_proto*: ptr char
-      s_port*: int16
+  type servent* {.pure.} = object
+    s_name*: ptr char
+    s_aliases*: ptr ptr char
+    s_proto*: ptr char
+    s_port*: int16
+
 when winimCpu32:
-  type
-    servent* {.pure.} = object
-      s_name*: ptr char
-      s_aliases*: ptr ptr char
-      s_port*: int16
-      s_proto*: ptr char
+  type servent* {.pure.} = object
+    s_name*: ptr char
+    s_aliases*: ptr ptr char
+    s_port*: int16
+    s_proto*: ptr char
+
 type
   SERVENT* = servent
   PSERVENT* = ptr servent
@@ -95,12 +99,14 @@
     p_name*: ptr char
     p_aliases*: ptr ptr char
     p_proto*: int16
+
   PROTOENT* = protoent
   PPROTOENT* = ptr protoent
   LPPROTOENT* = ptr protoent
   sockaddr* {.pure.} = object
     sa_family*: uint16
     sa_data*: array[14, char]
+
   SOCKADDR* = sockaddr
   PSOCKADDR* = ptr sockaddr
   LPSOCKADDR* = ptr sockaddr
@@ -109,54 +115,61 @@
     sin_port*: uint16
     sin_addr*: IN_ADDR
     sin_zero*: array[8, char]
+
   SOCKADDR_IN* = sockaddr_in
   PSOCKADDR_IN* = ptr sockaddr_in
   LPSOCKADDR_IN* = ptr sockaddr_in
   linger* {.pure.} = object
     l_onoff*: uint16
     l_linger*: uint16
+
   LINGER* = linger
   PLINGER* = ptr linger
   LPLINGER* = ptr linger
   timeval* {.pure.} = object
     tv_sec*: int32
     tv_usec*: int32
+
   TIMEVAL* = timeval
   PTIMEVAL* = ptr timeval
   LPTIMEVAL* = ptr timeval
+
 const
   WSADESCRIPTION_LEN* = 256
   WSASYS_STATUS_LEN* = 128
 when winimCpu64:
-  type
-    WSADATA* {.pure.} = object
-      wVersion*: WORD
-      wHighVersion*: WORD
-      iMaxSockets*: uint16
-      iMaxUdpDg*: uint16
-      lpVendorInfo*: ptr char
-      szDescription*: array[WSADESCRIPTION_LEN+1, char]
-      szSystemStatus*: array[WSASYS_STATUS_LEN+1, char]
+  type WSADATA* {.pure.} = object
+    wVersion*: WORD
+    wHighVersion*: WORD
+    iMaxSockets*: uint16
+    iMaxUdpDg*: uint16
+    lpVendorInfo*: ptr char
+    szDescription*: array[WSADESCRIPTION_LEN + 1, char]
+    szSystemStatus*: array[WSASYS_STATUS_LEN + 1, char]
+
 when winimCpu32:
-  type
-    WSADATA* {.pure.} = object
-      wVersion*: WORD
-      wHighVersion*: WORD
-      szDescription*: array[WSADESCRIPTION_LEN+1, char]
-      szSystemStatus*: array[WSASYS_STATUS_LEN+1, char]
-      iMaxSockets*: uint16
-      iMaxUdpDg*: uint16
-      lpVendorInfo*: ptr char
+  type WSADATA* {.pure.} = object
+    wVersion*: WORD
+    wHighVersion*: WORD
+    szDescription*: array[WSADESCRIPTION_LEN + 1, char]
+    szSystemStatus*: array[WSASYS_STATUS_LEN + 1, char]
+    iMaxSockets*: uint16
+    iMaxUdpDg*: uint16
+    lpVendorInfo*: ptr char
+
 type
   LPWSADATA* = ptr WSADATA
   SCOPE_ID_UNION1_STRUCT1* {.pure.} = object
-    Zone* {.bitsize:28.}: ULONG
-    Level* {.bitsize:4.}: ULONG
+    Zone* {.bitsize: 28.}: ULONG
+    Level* {.bitsize: 4.}: ULONG
+
   SCOPE_ID_UNION1* {.pure, union.} = object
     struct1*: SCOPE_ID_UNION1_STRUCT1
     Value*: ULONG
+
   SCOPE_ID* {.pure.} = object
     union1*: SCOPE_ID_UNION1
+
   PSCOPE_ID* = ptr SCOPE_ID
   LPWSAEVENT* = LPHANDLE
   WSAOVERLAPPED* = OVERLAPPED
@@ -164,6 +177,7 @@
   WSABUF* {.pure.} = object
     len*: int32
     buf*: ptr char
+
   LPWSABUF* = ptr WSABUF
   FLOWSPEC* {.pure.} = object
     TokenRate*: ULONG
@@ -174,41 +188,48 @@
     ServiceType*: SERVICETYPE
     MaxSduSize*: ULONG
     MinimumPolicedSize*: ULONG
+
   PFLOWSPEC* = ptr FLOWSPEC
   LPFLOWSPEC* = ptr FLOWSPEC
   QOS_OBJECT_HDR* {.pure.} = object
     ObjectType*: ULONG
     ObjectLength*: ULONG
+
   LPQOS_OBJECT_HDR* = ptr QOS_OBJECT_HDR
   QOS_SD_MODE* {.pure.} = object
     ObjectHdr*: QOS_OBJECT_HDR
     ShapeDiscardMode*: ULONG
+
   LPQOS_SD_MODE* = ptr QOS_SD_MODE
   QOS_SHAPING_RATE* {.pure.} = object
     ObjectHdr*: QOS_OBJECT_HDR
     ShapingRate*: ULONG
+
   LPQOS_SHAPING_RATE* = ptr QOS_SHAPING_RATE
   QOS* {.pure.} = object
     SendingFlowspec*: FLOWSPEC
     ReceivingFlowspec*: FLOWSPEC
     ProviderSpecific*: WSABUF
+
   LPQOS* = ptr QOS
-const
-  FD_MAX_EVENTS* = 10
+
+const FD_MAX_EVENTS* = 10
 type
   WSANETWORKEVENTS* {.pure.} = object
     lNetworkEvents*: int32
     iErrorCode*: array[FD_MAX_EVENTS, int32]
+
   LPWSANETWORKEVENTS* = ptr WSANETWORKEVENTS
-const
-  MAX_PROTOCOL_CHAIN* = 7
+
+const MAX_PROTOCOL_CHAIN* = 7
 type
   WSAPROTOCOLCHAIN* {.pure.} = object
     ChainLen*: int32
     ChainEntries*: array[MAX_PROTOCOL_CHAIN, DWORD]
+
   LPWSAPROTOCOLCHAIN* = ptr WSAPROTOCOLCHAIN
-const
-  WSAPROTOCOL_LEN* = 255
+
+const WSAPROTOCOL_LEN* = 255
 type
   WSAPROTOCOL_INFOA* {.pure.} = object
     dwServiceFlags1*: DWORD
@@ -230,7 +251,8 @@
     iSecurityScheme*: int32
     dwMessageSize*: DWORD
     dwProviderReserved*: DWORD
-    szProtocol*: array[WSAPROTOCOL_LEN+1, CHAR]
+    szProtocol*: array[WSAPROTOCOL_LEN + 1, CHAR]
+
   LPWSAPROTOCOL_INFOA* = ptr WSAPROTOCOL_INFOA
   WSAPROTOCOL_INFOW* {.pure.} = object
     dwServiceFlags1*: DWORD
@@ -252,32 +274,42 @@
     iSecurityScheme*: int32
     dwMessageSize*: DWORD
     dwProviderReserved*: DWORD
-    szProtocol*: array[WSAPROTOCOL_LEN+1, WCHAR]
+    szProtocol*: array[WSAPROTOCOL_LEN + 1, WCHAR]
+
   LPWSAPROTOCOL_INFOW* = ptr WSAPROTOCOL_INFOW
   WSACOMPLETION_Parameters_WindowMessage* {.pure.} = object
     hWnd*: HWND
     uMsg*: UINT
     context*: WPARAM
+
   WSACOMPLETION_Parameters_Event* {.pure.} = object
     lpOverlapped*: LPWSAOVERLAPPED
-  LPWSAOVERLAPPED_COMPLETION_ROUTINE* = proc (dwError: DWORD, cbTransferred: DWORD, lpOverlapped: LPWSAOVERLAPPED, dwFlags: DWORD): void {.stdcall.}
+
+  LPWSAOVERLAPPED_COMPLETION_ROUTINE* = proc(
+    dwError: DWORD, cbTransferred: DWORD, lpOverlapped: LPWSAOVERLAPPED, dwFlags: DWORD
+  ): void {.stdcall.}
   WSACOMPLETION_Parameters_Apc* {.pure.} = object
     lpOverlapped*: LPWSAOVERLAPPED
     lpfnCompletionProc*: LPWSAOVERLAPPED_COMPLETION_ROUTINE
+
   WSACOMPLETION_Parameters_Port* {.pure.} = object
     lpOverlapped*: LPWSAOVERLAPPED
     hPort*: HANDLE
     Key*: ULONG_PTR
+
   WSACOMPLETION_Parameters* {.pure, union.} = object
     WindowMessage*: WSACOMPLETION_Parameters_WindowMessage
     Event*: WSACOMPLETION_Parameters_Event
     Apc*: WSACOMPLETION_Parameters_Apc
     Port*: WSACOMPLETION_Parameters_Port
+
   WSACOMPLETION* {.pure.} = object
     Type*: WSACOMPLETIONTYPE
     Parameters*: WSACOMPLETION_Parameters
+
   PWSACOMPLETION* = ptr WSACOMPLETION
   LPWSACOMPLETION* = ptr WSACOMPLETION
+
 const
   SS_PAD1SIZE* = 0x00000006
   SS_PAD2SIZE* = 0x00000070
@@ -287,16 +319,19 @@
     ss_pad1*: array[SS_PAD1SIZE, char]
     ss_align*: int64
     ss_pad2*: array[SS_PAD2SIZE, char]
+
   SOCKADDR_STORAGE* = sockaddr_storage
   PSOCKADDR_STORAGE* = ptr sockaddr_storage
   LPSOCKADDR_STORAGE* = ptr sockaddr_storage
   BLOB* {.pure.} = object
     cbSize*: ULONG
     pBlobData*: ptr BYTE
+
   LPBLOB* = ptr BLOB
   SOCKET_ADDRESS* {.pure.} = object
     lpSockaddr*: LPSOCKADDR
     iSockaddrLength*: INT
+
   PSOCKET_ADDRESS* = ptr SOCKET_ADDRESS
   LPSOCKET_ADDRESS* = ptr SOCKET_ADDRESS
   CSADDR_INFO* {.pure.} = object
@@ -304,21 +339,25 @@
     RemoteAddr*: SOCKET_ADDRESS
     iSocketType*: INT
     iProtocol*: INT
+
   PCSADDR_INFO* = ptr CSADDR_INFO
   LPCSADDR_INFO* = ptr CSADDR_INFO
   SOCKET_ADDRESS_LIST* {.pure.} = object
     iAddressCount*: INT
     Address*: array[1, SOCKET_ADDRESS]
+
   PSOCKET_ADDRESS_LIST* = ptr SOCKET_ADDRESS_LIST
   LPSOCKET_ADDRESS_LIST* = ptr SOCKET_ADDRESS_LIST
   AFPROTOCOLS* {.pure.} = object
     iAddressFamily*: INT
     iProtocol*: INT
+
   PAFPROTOCOLS* = ptr AFPROTOCOLS
   LPAFPROTOCOLS* = ptr AFPROTOCOLS
   WSAVERSION* {.pure.} = object
     dwVersion*: DWORD
     ecHow*: WSAECOMPARATOR
+
   PWSAVERSION* = ptr WSAVERSION
   LPWSAVERSION* = ptr WSAVERSION
   WSAQUERYSETA* {.pure.} = object
@@ -337,6 +376,7 @@
     lpcsaBuffer*: LPCSADDR_INFO
     dwOutputFlags*: DWORD
     lpBlob*: LPBLOB
+
   PWSAQUERYSETA* = ptr WSAQUERYSETA
   LPWSAQUERYSETA* = ptr WSAQUERYSETA
   WSAQUERYSETW* {.pure.} = object
@@ -355,6 +395,7 @@
     lpcsaBuffer*: LPCSADDR_INFO
     dwOutputFlags*: DWORD
     lpBlob*: LPBLOB
+
   PWSAQUERYSETW* = ptr WSAQUERYSETW
   LPWSAQUERYSETW* = ptr WSAQUERYSETW
   WSANSCLASSINFOA* {.pure.} = object
@@ -363,6 +404,7 @@
     dwValueType*: DWORD
     dwValueSize*: DWORD
     lpValue*: LPVOID
+
   PWSANSCLASSINFOA* = ptr WSANSCLASSINFOA
   LPWSANSCLASSINFOA* = ptr WSANSCLASSINFOA
   WSANSCLASSINFOW* {.pure.} = object
@@ -371,6 +413,7 @@
     dwValueType*: DWORD
     dwValueSize*: DWORD
     lpValue*: LPVOID
+
   PWSANSCLASSINFOW* = ptr WSANSCLASSINFOW
   LPWSANSCLASSINFOW* = ptr WSANSCLASSINFOW
   WSASERVICECLASSINFOA* {.pure.} = object
@@ -378,6 +421,7 @@
     lpszServiceClassName*: LPSTR
     dwCount*: DWORD
     lpClassInfos*: LPWSANSCLASSINFOA
+
   PWSASERVICECLASSINFOA* = ptr WSASERVICECLASSINFOA
   LPWSASERVICECLASSINFOA* = ptr WSASERVICECLASSINFOA
   WSASERVICECLASSINFOW* {.pure.} = object
@@ -385,6 +429,7 @@
     lpszServiceClassName*: LPWSTR
     dwCount*: DWORD
     lpClassInfos*: LPWSANSCLASSINFOW
+
   PWSASERVICECLASSINFOW* = ptr WSASERVICECLASSINFOW
   LPWSASERVICECLASSINFOW* = ptr WSASERVICECLASSINFOW
   WSANAMESPACE_INFOA* {.pure.} = object
@@ -393,6 +438,7 @@
     fActive*: WINBOOL
     dwVersion*: DWORD
     lpszIdentifier*: LPSTR
+
   PWSANAMESPACE_INFOA* = ptr WSANAMESPACE_INFOA
   LPWSANAMESPACE_INFOA* = ptr WSANAMESPACE_INFOA
   WSANAMESPACE_INFOW* {.pure.} = object
@@ -401,6 +447,7 @@
     fActive*: WINBOOL
     dwVersion*: DWORD
     lpszIdentifier*: LPWSTR
+
   PWSANAMESPACE_INFOW* = ptr WSANAMESPACE_INFOW
   LPWSANAMESPACE_INFOW* = ptr WSANAMESPACE_INFOW
   WSAMSG* {.pure.} = object
@@ -410,6 +457,7 @@
     dwBufferCount*: DWORD
     Control*: WSABUF
     dwFlags*: DWORD
+
   PWSAMSG* = ptr WSAMSG
   LPWSAMSG* = ptr WSAMSG
   WSANAMESPACE_INFOEXA* {.pure.} = object
@@ -419,6 +467,7 @@
     dwVersion*: DWORD
     lpszIdentifier*: LPSTR
     ProviderSpecific*: BLOB
+
   PWSANAMESPACE_INFOEXA* = ptr WSANAMESPACE_INFOEXA
   LPWSANAMESPACE_INFOEXA* = ptr WSANAMESPACE_INFOEXA
   WSANAMESPACE_INFOEXW* {.pure.} = object
@@ -428,6 +477,7 @@
     dwVersion*: DWORD
     lpszIdentifier*: LPWSTR
     ProviderSpecific*: BLOB
+
   PWSANAMESPACE_INFOEXW* = ptr WSANAMESPACE_INFOEXW
   LPWSANAMESPACE_INFOEXW* = ptr WSANAMESPACE_INFOEXW
   WSAQUERYSET2A* {.pure.} = object
@@ -445,6 +495,7 @@
     lpcsaBuffer*: LPCSADDR_INFO
     dwOutputFlags*: DWORD
     lpBlob*: LPBLOB
+
   PWSAQUERYSET2A* = ptr WSAQUERYSET2A
   LPWSAQUERYSET2A* = ptr WSAQUERYSET2A
   WSAQUERYSET2W* {.pure.} = object
@@ -462,27 +513,32 @@
     lpcsaBuffer*: LPCSADDR_INFO
     dwOutputFlags*: DWORD
     lpBlob*: LPBLOB
+
   PWSAQUERYSET2W* = ptr WSAQUERYSET2W
   LPWSAQUERYSET2W* = ptr WSAQUERYSET2W
   WSAPOLLFD* {.pure.} = object
     fd*: SOCKET
     events*: int16
     revents*: int16
+
   PWSAPOLLFD* = ptr WSAPOLLFD
   LPWSAPOLLFD* = ptr WSAPOLLFD
   IN6_ADDR* {.pure.} = object
     Byte*: array[16, uint8]
+
   PIN6_ADDR* = ptr IN6_ADDR
   LPIN6_ADDR* = ptr IN6_ADDR
   sockaddr_in6_UNION1* {.pure, union.} = object
     sin6_scope_id*: int32
     sin6_scope_struct*: SCOPE_ID
+
   sockaddr_in6* {.pure.} = object
     sin6_family*: int16
     sin6_port*: uint16
     sin6_flowinfo*: int32
     sin6_addr*: IN6_ADDR
     union1*: sockaddr_in6_UNION1
+
   SOCKADDR_IN6* = sockaddr_in6
   PSOCKADDR_IN6* = ptr sockaddr_in6
   LPSOCKADDR_IN6* = ptr sockaddr_in6
@@ -491,24 +547,29 @@
     sin6_port*: uint16
     sin6_flowinfo*: int32
     sin6_addr*: IN6_ADDR
+
   sockaddr_gen* {.pure, union.} = object
     Address*: sockaddr
     AddressIn*: sockaddr_in
     AddressIn6*: sockaddr_in6_old
+
   TINTERFACE_INFO* {.pure.} = object
     iiFlags*: int32
     iiAddress*: sockaddr_gen
     iiBroadcastAddress*: sockaddr_gen
     iiNetmask*: sockaddr_gen
+
   LPTINTERFACE_INFO* = ptr TINTERFACE_INFO
   SOCKADDR_IN6_PAIR* {.pure.} = object
     SourceAddress*: PSOCKADDR_IN6
     DestinationAddress*: PSOCKADDR_IN6
+
   PSOCKADDR_IN6_PAIR* = ptr SOCKADDR_IN6_PAIR
   SOCKADDR_INET* {.pure, union.} = object
     Ipv4*: SOCKADDR_IN
     Ipv6*: SOCKADDR_IN6
     si_family*: ADDRESS_FAMILY
+
   PSOCKADDR_INET* = ptr SOCKADDR_INET
   GROUP_FILTER* {.pure.} = object
     gf_interface*: ULONG
@@ -516,21 +577,25 @@
     gf_fmode*: MULTICAST_MODE_TYPE
     gf_numsrc*: ULONG
     gf_slist*: array[1, SOCKADDR_STORAGE]
+
   PGROUP_FILTER* = ptr GROUP_FILTER
   GROUP_REQ* {.pure.} = object
     gr_interface*: ULONG
     gr_group*: SOCKADDR_STORAGE
+
   PGROUP_REQ* = ptr GROUP_REQ
   GROUP_SOURCE_REQ* {.pure.} = object
     gsr_interface*: ULONG
     gsr_group*: SOCKADDR_STORAGE
     gsr_source*: SOCKADDR_STORAGE
+
   PGROUP_SOURCE_REQ* = ptr GROUP_SOURCE_REQ
   INTERFACE_INFO_EX* {.pure.} = object
     iiFlags*: int32
     iiAddress*: SOCKET_ADDRESS
     iiBroadcastAddress*: SOCKET_ADDRESS
     iiNetmask*: SOCKET_ADDRESS
+
   LPINTERFACE_INFO_EX* = ptr INTERFACE_INFO_EX
   ADDRINFOA* {.pure.} = object
     ai_flags*: int32
@@ -541,6 +606,7 @@
     ai_canonname*: ptr char
     ai_addr*: ptr sockaddr
     ai_next*: ptr ADDRINFOA
+
   PADDRINFOA* = ptr ADDRINFOA
   ADDRINFOW* {.pure.} = object
     ai_flags*: int32
@@ -551,14 +617,25 @@
     ai_canonname*: PWSTR
     ai_addr*: ptr sockaddr
     ai_next*: ptr ADDRINFOW
+
   PADDRINFOW* = ptr ADDRINFOW
   ADDRINFO* = ADDRINFOA
   LPADDRINFO* = ptr ADDRINFOA
-  LPFN_GETADDRINFO* = proc (nodename: ptr char, servname: ptr char, hints: ptr ADDRINFOA, res: ptr ptr ADDRINFOA): int32 {.stdcall.}
+  LPFN_GETADDRINFO* = proc(
+    nodename: ptr char, servname: ptr char, hints: ptr ADDRINFOA, res: ptr ptr ADDRINFOA
+  ): int32 {.stdcall.}
   LPFN_GETADDRINFOA* = LPFN_GETADDRINFO
-  LPFN_FREEADDRINFO* = proc (ai: ptr ADDRINFOA): void {.stdcall.}
+  LPFN_FREEADDRINFO* = proc(ai: ptr ADDRINFOA): void {.stdcall.}
   LPFN_FREEADDRINFOA* = LPFN_FREEADDRINFO
-  LPFN_GETNAMEINFO* = proc (sa: ptr sockaddr, salen: socklen_t, host: ptr char, hostlen: DWORD, serv: ptr char, servlen: DWORD, flags: int32): int32 {.stdcall.}
+  LPFN_GETNAMEINFO* = proc(
+    sa: ptr sockaddr,
+    salen: socklen_t,
+    host: ptr char,
+    hostlen: DWORD,
+    serv: ptr char,
+    servlen: DWORD,
+    flags: int32,
+  ): int32 {.stdcall.}
   LPFN_GETNAMEINFOA* = LPFN_GETNAMEINFO
   ADDRINFOEXA* {.pure.} = object
     ai_flags*: int32
@@ -572,6 +649,7 @@
     ai_bloblen*: int
     ai_provider*: LPGUID
     ai_next*: ptr ADDRINFOEXA
+
   PADDRINFOEXA* = ptr ADDRINFOEXA
   ADDRINFOEXW* {.pure.} = object
     ai_flags*: int32
@@ -585,62 +663,76 @@
     ai_bloblen*: int
     ai_provider*: LPGUID
     ai_next*: ptr ADDRINFOEXW
+
   PADDRINFOEXW* = ptr ADDRINFOEXW
   TRANSMIT_FILE_BUFFERS* {.pure.} = object
     Head*: LPVOID
     HeadLength*: DWORD
     Tail*: LPVOID
     TailLength*: DWORD
+
   PTRANSMIT_FILE_BUFFERS* = ptr TRANSMIT_FILE_BUFFERS
   LPTRANSMIT_FILE_BUFFERS* = ptr TRANSMIT_FILE_BUFFERS
   TRANSMIT_PACKETS_ELEMENT_UNION1_STRUCT1* {.pure.} = object
     nFileOffset*: LARGE_INTEGER
     hFile*: HANDLE
+
   TRANSMIT_PACKETS_ELEMENT_UNION1* {.pure, union.} = object
     struct1*: TRANSMIT_PACKETS_ELEMENT_UNION1_STRUCT1
     pBuffer*: PVOID
+
   TRANSMIT_PACKETS_ELEMENT* {.pure.} = object
     dwElFlags*: ULONG
     cLength*: ULONG
     union1*: TRANSMIT_PACKETS_ELEMENT_UNION1
+
   PTRANSMIT_PACKETS_ELEMENT* = ptr TRANSMIT_PACKETS_ELEMENT
   LPTRANSMIT_PACKETS_ELEMENT* = ptr TRANSMIT_PACKETS_ELEMENT
   NLA_BLOB_header* {.pure.} = object
     `type`*: NLA_BLOB_DATA_TYPE
     dwSize*: DWORD
     nextOffset*: DWORD
+
   NLA_BLOB_data_interfaceData* {.pure.} = object
     dwType*: DWORD
     dwSpeed*: DWORD
     adapterName*: array[1, CHAR]
+
   NLA_BLOB_data_locationData* {.pure.} = object
     information*: array[1, CHAR]
+
   NLA_BLOB_data_connectivity* {.pure.} = object
     `type`*: NLA_CONNECTIVITY_TYPE
     internet*: NLA_INTERNET
+
   NLA_BLOB_data_ICS_remote* {.pure.} = object
     speed*: DWORD
     `type`*: DWORD
     state*: DWORD
     machineName*: array[256, WCHAR]
     sharedAdapterName*: array[256, WCHAR]
+
   NLA_BLOB_data_ICS* {.pure.} = object
     remote*: NLA_BLOB_data_ICS_remote
+
   NLA_BLOB_data* {.pure, union.} = object
     rawData*: array[1, CHAR]
     interfaceData*: NLA_BLOB_data_interfaceData
     locationData*: NLA_BLOB_data_locationData
     connectivity*: NLA_BLOB_data_connectivity
     ICS*: NLA_BLOB_data_ICS
+
   NLA_BLOB* {.pure.} = object
     header*: NLA_BLOB_header
     data*: NLA_BLOB_data
+
   PNLA_BLOB* = ptr NLA_BLOB
   LPNLA_BLOB* = ptr NLA_BLOB
   WSACMSGHDR* {.pure.} = object
     cmsg_len*: SIZE_T
     cmsg_level*: INT
     cmsg_type*: INT
+
   PWSACMSGHDR* = ptr WSACMSGHDR
   LPWSACMSGHDR* = ptr WSACMSGHDR
   WSAPOLLDATA* {.pure.} = object
@@ -648,6 +740,7 @@
     fds*: ULONG
     timeout*: INT
     fdArray*: UncheckedArray[WSAPOLLFD]
+
   LPWSAPOLLDATA* = ptr WSAPOLLDATA
   TWSASENDMSG* {.pure.} = object
     lpMsg*: LPWSAMSG
@@ -655,22 +748,21 @@
     lpNumberOfBytesSent*: LPDWORD
     lpOverlapped*: LPWSAOVERLAPPED
     lpCompletionRoutine*: LPWSAOVERLAPPED_COMPLETION_ROUTINE
+
   LPWSASENDMSG* = ptr TWSASENDMSG
   addrinfo* = ADDRINFOA
   addrinfoW* = ADDRINFOW
   addrinfoExA* = ADDRINFOEXA
   addrinfoExW* = ADDRINFOEXW
+
 when winimUnicode:
-  type
-    addrinfoEx* = addrinfoExW
+  type addrinfoEx* = addrinfoExW
 when winimAnsi:
-  type
-    addrinfoEx* = addrinfoExA
-type
-  ADDRINFOEX* = addrinfoEx
+  type addrinfoEx* = addrinfoExA
+type ADDRINFOEX* = addrinfoEx
 const
   INCL_WINSOCK_API_TYPEDEFS* = 0
-  WINSOCK_VERSION* = MAKEWORD(2,2)
+  WINSOCK_VERSION* = MAKEWORD(2, 2)
   SOCKET_ERROR* = -1
   scopeLevelInterface* = 1
   scopeLevelLink* = 2
@@ -879,7 +971,7 @@
   FD_ROUTING_INTERFACE_CHANGE* = 1 shl FD_ROUTING_INTERFACE_CHANGE_BIT
   FD_ADDRESS_LIST_CHANGE_BIT* = 9
   FD_ADDRESS_LIST_CHANGE* = 1 shl FD_ADDRESS_LIST_CHANGE_BIT
-  FD_ALL_EVENTS* = (1 shl FD_MAX_EVENTS)-1
+  FD_ALL_EVENTS* = (1 shl FD_MAX_EVENTS) - 1
   WSA_IO_PENDING* = ERROR_IO_PENDING
   WSA_IO_INCOMPLETE* = ERROR_IO_INCOMPLETE
   WSA_INVALID_HANDLE* = ERROR_INVALID_HANDLE
@@ -911,10 +1003,10 @@
   QOS_NOT_SPECIFIED* = 0xFFFFFFFF'i32
   POSITIVE_INFINITY_RATE* = 0xFFFFFFFE'i32
   QOS_GENERAL_ID_BASE* = 2000
-  QOS_OBJECT_END_OF_LIST* = 0x00000001+QOS_GENERAL_ID_BASE
-  QOS_OBJECT_SD_MODE* = 0x00000002+QOS_GENERAL_ID_BASE
-  QOS_OBJECT_SHAPING_RATE* = 0x00000003+QOS_GENERAL_ID_BASE
-  QOS_OBJECT_DESTADDR* = 0x00000004+QOS_GENERAL_ID_BASE
+  QOS_OBJECT_END_OF_LIST* = 0x00000001 + QOS_GENERAL_ID_BASE
+  QOS_OBJECT_SD_MODE* = 0x00000002 + QOS_GENERAL_ID_BASE
+  QOS_OBJECT_SHAPING_RATE* = 0x00000003 + QOS_GENERAL_ID_BASE
+  QOS_OBJECT_DESTADDR* = 0x00000004 + QOS_GENERAL_ID_BASE
   TC_NONCONF_BORROW* = 0
   TC_NONCONF_SHAPE* = 1
   TC_NONCONF_DISCARD* = 2
@@ -1260,187 +1352,590 @@
   SIO_BASE_HANDLE* = 0x48000022'i32
   INVALID_SOCKET* = SOCKET(-1)
   WSA_INVALID_EVENT* = WSAEVENT 0
-  IN6ADDR_ANY_INIT* = IN6_ADDR(Byte: [0'u8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
-  IN6ADDR_LOOPBACK_INIT* = IN6_ADDR(Byte: [0'u8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1])
-  WSAID_TRANSMITFILE* = DEFINE_GUID(0xb5367df0'i32, 0xcbac, 0x11cf, [0x95'u8, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92])
-  WSAID_ACCEPTEX* = DEFINE_GUID(0xb5367df1'i32, 0xcbac, 0x11cf, [0x95'u8, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92])
-  WSAID_GETACCEPTEXSOCKADDRS* = DEFINE_GUID(0xb5367df2'i32, 0xcbac, 0x11cf, [0x95'u8, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92])
-  WSAID_TRANSMITPACKETS* = DEFINE_GUID(0xd9689da0'i32, 0x1f90, 0x11d3, [0x99'u8, 0x71, 0x00, 0xc0, 0x4f, 0x68, 0xc8, 0x76])
-  WSAID_CONNECTEX* = DEFINE_GUID(0x25a207b9'i32, 0xddf3, 0x4660, [0x8e'u8, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e])
-  WSAID_DISCONNECTEX* = DEFINE_GUID(0x7fda2e11'i32, 0x8630, 0x436f, [0xa0'u8, 0x31, 0xf5, 0x36, 0xa6, 0xee, 0xc1, 0x57])
-  NLA_NAMESPACE_GUID* = DEFINE_GUID(0x6642243a'i32, 0x3ba8, 0x4aa6, [0xba'u8, 0xa5, 0x2e, 0xb, 0xd7, 0x1f, 0xdd, 0x83])
-  NLA_SERVICE_CLASS_GUID* = DEFINE_GUID(0x37e515'i32, 0xb5c9, 0x4a43, [0xba'u8, 0xda, 0x8b, 0x48, 0xa8, 0x7a, 0xd2, 0x39])
-  WSAID_WSARECVMSG* = DEFINE_GUID(0xf689d7c8'i32, 0x6f1f, 0x436b, [0x8a'u8, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22])
-  WSAID_WSAPOLL* = DEFINE_GUID(0x18C76F85'i32, 0xDC66, 0x4964, [0x97'u8, 0x2E, 0x23, 0xC2, 0x72, 0x38, 0x31, 0x2B])
-  WSAID_WSASENDMSG* = DEFINE_GUID(0xa441e712'i32, 0x754f, 0x43ca, [0x84'u8, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d])
+  IN6ADDR_ANY_INIT* =
+    IN6_ADDR(Byte: [0'u8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
+  IN6ADDR_LOOPBACK_INIT* =
+    IN6_ADDR(Byte: [0'u8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])
+  WSAID_TRANSMITFILE* = DEFINE_GUID(
+    0xb5367df0'i32, 0xcbac, 0x11cf, [0x95'u8, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92]
+  )
+  WSAID_ACCEPTEX* = DEFINE_GUID(
+    0xb5367df1'i32, 0xcbac, 0x11cf, [0x95'u8, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92]
+  )
+  WSAID_GETACCEPTEXSOCKADDRS* = DEFINE_GUID(
+    0xb5367df2'i32, 0xcbac, 0x11cf, [0x95'u8, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92]
+  )
+  WSAID_TRANSMITPACKETS* = DEFINE_GUID(
+    0xd9689da0'i32, 0x1f90, 0x11d3, [0x99'u8, 0x71, 0x00, 0xc0, 0x4f, 0x68, 0xc8, 0x76]
+  )
+  WSAID_CONNECTEX* = DEFINE_GUID(
+    0x25a207b9'i32, 0xddf3, 0x4660, [0x8e'u8, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e]
+  )
+  WSAID_DISCONNECTEX* = DEFINE_GUID(
+    0x7fda2e11'i32, 0x8630, 0x436f, [0xa0'u8, 0x31, 0xf5, 0x36, 0xa6, 0xee, 0xc1, 0x57]
+  )
+  NLA_NAMESPACE_GUID* = DEFINE_GUID(
+    0x6642243a'i32, 0x3ba8, 0x4aa6, [0xba'u8, 0xa5, 0x2e, 0xb, 0xd7, 0x1f, 0xdd, 0x83]
+  )
+  NLA_SERVICE_CLASS_GUID* = DEFINE_GUID(
+    0x37e515'i32, 0xb5c9, 0x4a43, [0xba'u8, 0xda, 0x8b, 0x48, 0xa8, 0x7a, 0xd2, 0x39]
+  )
+  WSAID_WSARECVMSG* = DEFINE_GUID(
+    0xf689d7c8'i32, 0x6f1f, 0x436b, [0x8a'u8, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22]
+  )
+  WSAID_WSAPOLL* = DEFINE_GUID(
+    0x18C76F85'i32, 0xDC66, 0x4964, [0x97'u8, 0x2E, 0x23, 0xC2, 0x72, 0x38, 0x31, 0x2B]
+  )
+  WSAID_WSASENDMSG* = DEFINE_GUID(
+    0xa441e712'i32, 0x754f, 0x43ca, [0x84'u8, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d]
+  )
 type
-  LPCONDITIONPROC* = proc (lpCallerId: LPWSABUF, lpCallerData: LPWSABUF, lpSQOS: LPQOS, lpGQOS: LPQOS, lpCalleeId: LPWSABUF, lpCalleeData: LPWSABUF, g: ptr GROUP, dwCallbackData: DWORD_PTR): int32 {.stdcall.}
-  LPFN_ACCEPT* = proc (s: SOCKET, `addr`: ptr sockaddr, addrlen: ptr int32): SOCKET {.stdcall.}
-  LPFN_BIND* = proc (s: SOCKET, name: ptr sockaddr, namelen: int32): int32 {.stdcall.}
-  LPFN_CLOSESOCKET* = proc (s: SOCKET): int32 {.stdcall.}
-  LPFN_CONNECT* = proc (s: SOCKET, name: ptr sockaddr, namelen: int32): int32 {.stdcall.}
-  LPFN_IOCTLSOCKET* = proc (s: SOCKET, cmd: int32, argp: ptr int32): int32 {.stdcall.}
-  LPFN_GETPEERNAME* = proc (s: SOCKET, name: ptr sockaddr, namelen: ptr int32): int32 {.stdcall.}
-  LPFN_GETSOCKNAME* = proc (s: SOCKET, name: ptr sockaddr, namelen: ptr int32): int32 {.stdcall.}
-  LPFN_GETSOCKOPT* = proc (s: SOCKET, level: int32, optname: int32, optval: ptr char, optlen: ptr int32): int32 {.stdcall.}
-  LPFN_HTONL* = proc (hostlong: int32): int32 {.stdcall.}
-  LPFN_HTONS* = proc (hostshort: uint16): uint16 {.stdcall.}
-  LPFN_INET_ADDR* = proc (cp: ptr char): int32 {.stdcall.}
-  LPFN_INET_NTOA* = proc (`in`: IN_ADDR): ptr char {.stdcall.}
-  LPFN_LISTEN* = proc (s: SOCKET, backlog: int32): int32 {.stdcall.}
-  LPFN_NTOHL* = proc (netlong: int32): int32 {.stdcall.}
-  LPFN_NTOHS* = proc (netshort: uint16): uint16 {.stdcall.}
-  LPFN_RECV* = proc (s: SOCKET, buf: ptr char, len: int32, flags: int32): int32 {.stdcall.}
-  LPFN_RECVFROM* = proc (s: SOCKET, buf: ptr char, len: int32, flags: int32, `from`: ptr sockaddr, fromlen: ptr int32): int32 {.stdcall.}
-  LPFN_SELECT* = proc (nfds: int32, readfds: ptr fd_set, writefds: ptr fd_set, exceptfds: ptr fd_set, timeout: PTIMEVAL): int32 {.stdcall.}
-  LPFN_SEND* = proc (s: SOCKET, buf: ptr char, len: int32, flags: int32): int32 {.stdcall.}
-  LPFN_SENDTO* = proc (s: SOCKET, buf: ptr char, len: int32, flags: int32, to: ptr sockaddr, tolen: int32): int32 {.stdcall.}
-  LPFN_SETSOCKOPT* = proc (s: SOCKET, level: int32, optname: int32, optval: ptr char, optlen: int32): int32 {.stdcall.}
-  LPFN_SHUTDOWN* = proc (s: SOCKET, how: int32): int32 {.stdcall.}
-  LPFN_SOCKET* = proc (af: int32, `type`: int32, protocol: int32): SOCKET {.stdcall.}
-  LPFN_GETHOSTBYADDR* = proc (`addr`: ptr char, len: int32, `type`: int32): ptr hostent {.stdcall.}
-  LPFN_GETHOSTBYNAME* = proc (name: ptr char): ptr hostent {.stdcall.}
-  LPFN_GETHOSTNAME* = proc (name: ptr char, namelen: int32): int32 {.stdcall.}
-  LPFN_GETSERVBYPORT* = proc (port: int32, proto: ptr char): ptr servent {.stdcall.}
-  LPFN_GETSERVBYNAME* = proc (name: ptr char, proto: ptr char): ptr servent {.stdcall.}
-  LPFN_GETPROTOBYNUMBER* = proc (number: int32): ptr protoent {.stdcall.}
-  LPFN_GETPROTOBYNAME* = proc (name: ptr char): ptr protoent {.stdcall.}
-  LPFN_WSASTARTUP* = proc (wVersionRequested: WORD, lpWSAData: LPWSADATA): int32 {.stdcall.}
-  LPFN_WSACLEANUP* = proc (): int32 {.stdcall.}
-  LPFN_WSASETLASTERROR* = proc (iError: int32): void {.stdcall.}
-  LPFN_WSAGETLASTERROR* = proc (): int32 {.stdcall.}
-  LPFN_WSAISBLOCKING* = proc (): WINBOOL {.stdcall.}
-  LPFN_WSAUNHOOKBLOCKINGHOOK* = proc (): int32 {.stdcall.}
-  LPFN_WSASETBLOCKINGHOOK* = proc (lpBlockFunc: FARPROC): FARPROC {.stdcall.}
-  LPFN_WSACANCELBLOCKINGCALL* = proc (): int32 {.stdcall.}
-  LPFN_WSAASYNCGETSERVBYNAME* = proc (hWnd: HWND, wMsg: int32, name: ptr char, proto: ptr char, buf: ptr char, buflen: int32): HANDLE {.stdcall.}
-  LPFN_WSAASYNCGETSERVBYPORT* = proc (hWnd: HWND, wMsg: int32, port: int32, proto: ptr char, buf: ptr char, buflen: int32): HANDLE {.stdcall.}
-  LPFN_WSAASYNCGETPROTOBYNAME* = proc (hWnd: HWND, wMsg: int32, name: ptr char, buf: ptr char, buflen: int32): HANDLE {.stdcall.}
-  LPFN_WSAASYNCGETPROTOBYNUMBER* = proc (hWnd: HWND, wMsg: int32, number: int32, buf: ptr char, buflen: int32): HANDLE {.stdcall.}
-  LPFN_WSAASYNCGETHOSTBYNAME* = proc (hWnd: HWND, wMsg: int32, name: ptr char, buf: ptr char, buflen: int32): HANDLE {.stdcall.}
-  LPFN_WSAASYNCGETHOSTBYADDR* = proc (hWnd: HWND, wMsg: int32, `addr`: ptr char, len: int32, `type`: int32, buf: ptr char, buflen: int32): HANDLE {.stdcall.}
-  LPFN_WSACANCELASYNCREQUEST* = proc (hAsyncTaskHandle: HANDLE): int32 {.stdcall.}
-  LPFN_WSAASYNCSELECT* = proc (s: SOCKET, hWnd: HWND, wMsg: int32, lEvent: int32): int32 {.stdcall.}
-  LPFN_WSAACCEPT* = proc (s: SOCKET, `addr`: ptr sockaddr, addrlen: LPINT, lpfnCondition: LPCONDITIONPROC, dwCallbackData: DWORD_PTR): SOCKET {.stdcall.}
-  LPFN_WSACLOSEEVENT* = proc (hEvent: WSAEVENT): WINBOOL {.stdcall.}
-  LPFN_WSACONNECT* = proc (s: SOCKET, name: ptr sockaddr, namelen: int32, lpCallerData: LPWSABUF, lpCalleeData: LPWSABUF, lpSQOS: LPQOS, lpGQOS: LPQOS): int32 {.stdcall.}
-  LPFN_WSACREATEEVENT* = proc (): WSAEVENT {.stdcall.}
-  LPFN_WSADUPLICATESOCKETA* = proc (s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOA): int32 {.stdcall.}
-  LPFN_WSADUPLICATESOCKETW* = proc (s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOW): int32 {.stdcall.}
-  LPFN_WSAENUMNETWORKEVENTS* = proc (s: SOCKET, hEventObject: WSAEVENT, lpNetworkEvents: LPWSANETWORKEVENTS): int32 {.stdcall.}
-  LPFN_WSAENUMPROTOCOLSA* = proc (lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOA, lpdwBufferLength: LPDWORD): int32 {.stdcall.}
-  LPFN_WSAENUMPROTOCOLSW* = proc (lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOW, lpdwBufferLength: LPDWORD): int32 {.stdcall.}
-  LPFN_WSAEVENTSELECT* = proc (s: SOCKET, hEventObject: WSAEVENT, lNetworkEvents: int32): int32 {.stdcall.}
-  LPFN_WSAGETOVERLAPPEDRESULT* = proc (s: SOCKET, lpOverlapped: LPWSAOVERLAPPED, lpcbTransfer: LPDWORD, fWait: WINBOOL, lpdwFlags: LPDWORD): WINBOOL {.stdcall.}
-  LPFN_WSAGETQOSBYNAME* = proc (s: SOCKET, lpQOSName: LPWSABUF, lpQOS: LPQOS): WINBOOL {.stdcall.}
-  LPFN_WSAHTONL* = proc (s: SOCKET, hostlong: int32, lpnetlong: ptr int32): int32 {.stdcall.}
-  LPFN_WSAHTONS* = proc (s: SOCKET, hostshort: uint16, lpnetshort: ptr uint16): int32 {.stdcall.}
-  LPFN_WSAIOCTL* = proc (s: SOCKET, dwIoControlCode: DWORD, lpvInBuffer: LPVOID, cbInBuffer: DWORD, lpvOutBuffer: LPVOID, cbOutBuffer: DWORD, lpcbBytesReturned: LPDWORD, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int32 {.stdcall.}
-  LPFN_WSAJOINLEAF* = proc (s: SOCKET, name: ptr sockaddr, namelen: int32, lpCallerData: LPWSABUF, lpCalleeData: LPWSABUF, lpSQOS: LPQOS, lpGQOS: LPQOS, dwFlags: DWORD): SOCKET {.stdcall.}
-  LPFN_WSANTOHL* = proc (s: SOCKET, netlong: int32, lphostlong: ptr int32): int32 {.stdcall.}
-  LPFN_WSANTOHS* = proc (s: SOCKET, netshort: uint16, lphostshort: ptr uint16): int32 {.stdcall.}
-  LPFN_WSARECV* = proc (s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesRecvd: LPDWORD, lpFlags: LPDWORD, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int32 {.stdcall.}
-  LPFN_WSARECVDISCONNECT* = proc (s: SOCKET, lpInboundDisconnectData: LPWSABUF): int32 {.stdcall.}
-  LPFN_WSARECVFROM* = proc (s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesRecvd: LPDWORD, lpFlags: LPDWORD, lpFrom: ptr sockaddr, lpFromlen: LPINT, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int32 {.stdcall.}
-  LPFN_WSARESETEVENT* = proc (hEvent: WSAEVENT): WINBOOL {.stdcall.}
-  LPFN_WSASEND* = proc (s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesSent: LPDWORD, dwFlags: DWORD, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int32 {.stdcall.}
-  LPFN_WSASENDDISCONNECT* = proc (s: SOCKET, lpOutboundDisconnectData: LPWSABUF): int32 {.stdcall.}
-  LPFN_WSASENDTO* = proc (s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesSent: LPDWORD, dwFlags: DWORD, lpTo: ptr sockaddr, iTolen: int32, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int32 {.stdcall.}
-  LPFN_WSASETEVENT* = proc (hEvent: WSAEVENT): WINBOOL {.stdcall.}
-  LPFN_WSASOCKETA* = proc (af: int32, `type`: int32, protocol: int32, lpProtocolInfo: LPWSAPROTOCOL_INFOA, g: GROUP, dwFlags: DWORD): SOCKET {.stdcall.}
-  LPFN_WSASOCKETW* = proc (af: int32, `type`: int32, protocol: int32, lpProtocolInfo: LPWSAPROTOCOL_INFOW, g: GROUP, dwFlags: DWORD): SOCKET {.stdcall.}
-  LPFN_WSAWAITFORMULTIPLEEVENTS* = proc (cEvents: DWORD, lphEvents: ptr WSAEVENT, fWaitAll: WINBOOL, dwTimeout: DWORD, fAlertable: WINBOOL): DWORD {.stdcall.}
-  LPFN_WSAADDRESSTOSTRINGA* = proc (lpsaAddress: LPSOCKADDR, dwAddressLength: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOA, lpszAddressString: LPSTR, lpdwAddressStringLength: LPDWORD): INT {.stdcall.}
-  LPFN_WSAADDRESSTOSTRINGW* = proc (lpsaAddress: LPSOCKADDR, dwAddressLength: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOW, lpszAddressString: LPWSTR, lpdwAddressStringLength: LPDWORD): INT {.stdcall.}
-  LPFN_WSASTRINGTOADDRESSA* = proc (AddressString: LPSTR, AddressFamily: INT, lpProtocolInfo: LPWSAPROTOCOL_INFOA, lpAddress: LPSOCKADDR, lpAddressLength: LPINT): INT {.stdcall.}
-  LPFN_WSASTRINGTOADDRESSW* = proc (AddressString: LPWSTR, AddressFamily: INT, lpProtocolInfo: LPWSAPROTOCOL_INFOW, lpAddress: LPSOCKADDR, lpAddressLength: LPINT): INT {.stdcall.}
-  LPFN_WSALOOKUPSERVICEBEGINA* = proc (lpqsRestrictions: LPWSAQUERYSETA, dwControlFlags: DWORD, lphLookup: LPHANDLE): INT {.stdcall.}
-  LPFN_WSALOOKUPSERVICEBEGINW* = proc (lpqsRestrictions: LPWSAQUERYSETW, dwControlFlags: DWORD, lphLookup: LPHANDLE): INT {.stdcall.}
-  LPFN_WSALOOKUPSERVICENEXTA* = proc (hLookup: HANDLE, dwControlFlags: DWORD, lpdwBufferLength: LPDWORD, lpqsResults: LPWSAQUERYSETA): INT {.stdcall.}
-  LPFN_WSALOOKUPSERVICENEXTW* = proc (hLookup: HANDLE, dwControlFlags: DWORD, lpdwBufferLength: LPDWORD, lpqsResults: LPWSAQUERYSETW): INT {.stdcall.}
-  LPFN_WSANSPIOCTL* = proc (hLookup: HANDLE, dwControlCode: DWORD, lpvInBuffer: LPVOID, cbInBuffer: DWORD, lpvOutBuffer: LPVOID, cbOutBuffer: DWORD, lpcbBytesReturned: LPDWORD, lpCompletion: LPWSACOMPLETION): INT {.stdcall.}
-  LPFN_WSALOOKUPSERVICEEND* = proc (hLookup: HANDLE): INT {.stdcall.}
-  LPFN_WSAINSTALLSERVICECLASSA* = proc (lpServiceClassInfo: LPWSASERVICECLASSINFOA): INT {.stdcall.}
-  LPFN_WSAINSTALLSERVICECLASSW* = proc (lpServiceClassInfo: LPWSASERVICECLASSINFOW): INT {.stdcall.}
-  LPFN_WSAREMOVESERVICECLASS* = proc (lpServiceClassId: LPGUID): INT {.stdcall.}
-  LPFN_WSAGETSERVICECLASSINFOA* = proc (lpProviderId: LPGUID, lpServiceClassId: LPGUID, lpdwBufSize: LPDWORD, lpServiceClassInfo: LPWSASERVICECLASSINFOA): INT {.stdcall.}
-  LPFN_WSAGETSERVICECLASSINFOW* = proc (lpProviderId: LPGUID, lpServiceClassId: LPGUID, lpdwBufSize: LPDWORD, lpServiceClassInfo: LPWSASERVICECLASSINFOW): INT {.stdcall.}
-  LPFN_WSAENUMNAMESPACEPROVIDERSA* = proc (lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOA): INT {.stdcall.}
-  LPFN_WSAENUMNAMESPACEPROVIDERSW* = proc (lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOW): INT {.stdcall.}
-  LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA* = proc (lpServiceClassId: LPGUID, lpszServiceClassName: LPSTR, lpdwBufferLength: LPDWORD): INT {.stdcall.}
-  LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW* = proc (lpServiceClassId: LPGUID, lpszServiceClassName: LPWSTR, lpdwBufferLength: LPDWORD): INT {.stdcall.}
-  LPFN_WSASETSERVICEA* = proc (lpqsRegInfo: LPWSAQUERYSETA, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD): INT {.stdcall.}
-  LPFN_WSASETSERVICEW* = proc (lpqsRegInfo: LPWSAQUERYSETW, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD): INT {.stdcall.}
-  LPFN_WSAPROVIDERCONFIGCHANGE* = proc (lpNotificationHandle: LPHANDLE, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): INT {.stdcall.}
-  LPFN_GETADDRINFOW* = proc (pNodeName: PCWSTR, pServiceName: PCWSTR, pHints: ptr ADDRINFOW, ppResult: ptr PADDRINFOW): int32 {.stdcall.}
-  LPFN_FREEADDRINFOW* = proc (pAddrInfo: PADDRINFOW): void {.stdcall.}
-  LPFN_GETNAMEINFOW* = proc (pSockaddr: ptr SOCKADDR, SockaddrLength: socklen_t, pNodeBuffer: PWCHAR, NodeBufferSize: DWORD, pServiceBuffer: PWCHAR, ServiceBufferSize: DWORD, Flags: INT): INT {.stdcall.}
-  LPFN_GETADDRINFOEXA* = proc (pName: PCSTR, pServiceName: PCSTR, dwNameSpace: DWORD, lpNspId: LPGUID, pHints: ptr ADDRINFOEXA, ppResult: ptr PADDRINFOEXA, timeout: PTIMEVAL, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE): int32 {.stdcall.}
-  LPFN_GETADDRINFOEXW* = proc (pName: PCWSTR, pServiceName: PCWSTR, dwNameSpace: DWORD, lpNspId: LPGUID, pHints: ptr ADDRINFOEXW, ppResult: ptr PADDRINFOEXW, timeout: PTIMEVAL, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE): int32 {.stdcall.}
-  LPFN_SETADDRINFOEXA* = proc (pName: PCSTR, pServiceName: PCSTR, pAddresses: ptr SOCKET_ADDRESS, dwAddressCount: DWORD, lpBlob: LPBLOB, dwFlags: DWORD, dwNameSpace: DWORD, lpNspId: LPGUID, timeout: PTIMEVAL, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE): int32 {.stdcall.}
-  LPFN_SETADDRINFOEXW* = proc (pName: PCWSTR, pServiceName: PCWSTR, pAddresses: ptr SOCKET_ADDRESS, dwAddressCount: DWORD, lpBlob: LPBLOB, dwFlags: DWORD, dwNameSpace: DWORD, lpNspId: LPGUID, timeout: PTIMEVAL, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE): int32 {.stdcall.}
-  LPFN_FREEADDRINFOEXA* = proc (pAddrInfo: PADDRINFOEXA): void {.stdcall.}
-  LPFN_FREEADDRINFOEXW* = proc (pAddrInfo: PADDRINFOEXW): void {.stdcall.}
-  LPFN_TRANSMITFILE* = proc (hSocket: SOCKET, hFile: HANDLE, nNumberOfBytesToWrite: DWORD, nNumberOfBytesPerSend: DWORD, lpOverlapped: LPOVERLAPPED, lpTransmitBuffers: LPTRANSMIT_FILE_BUFFERS, dwReserved: DWORD): WINBOOL {.stdcall.}
-  LPFN_ACCEPTEX* = proc (sListenSocket: SOCKET, sAcceptSocket: SOCKET, lpOutputBuffer: PVOID, dwReceiveDataLength: DWORD, dwLocalAddressLength: DWORD, dwRemoteAddressLength: DWORD, lpdwBytesReceived: LPDWORD, lpOverlapped: LPOVERLAPPED): WINBOOL {.stdcall.}
-  LPFN_GETACCEPTEXSOCKADDRS* = proc (lpOutputBuffer: PVOID, dwReceiveDataLength: DWORD, dwLocalAddressLength: DWORD, dwRemoteAddressLength: DWORD, LocalSockaddr: ptr ptr sockaddr, LocalSockaddrLength: LPINT, RemoteSockaddr: ptr ptr sockaddr, RemoteSockaddrLength: LPINT): VOID {.stdcall.}
-  LPFN_TRANSMITPACKETS* = proc (hSocket: SOCKET, lpPacketArray: LPTRANSMIT_PACKETS_ELEMENT, nElementCount: DWORD, nSendSize: DWORD, lpOverlapped: LPOVERLAPPED, dwFlags: DWORD): WINBOOL {.stdcall.}
-  LPFN_CONNECTEX* = proc (s: SOCKET, name: ptr sockaddr, namelen: int32, lpSendBuffer: PVOID, dwSendDataLength: DWORD, lpdwBytesSent: LPDWORD, lpOverlapped: LPOVERLAPPED): WINBOOL {.stdcall.}
-  LPFN_DISCONNECTEX* = proc (s: SOCKET, lpOverlapped: LPOVERLAPPED, dwFlags: DWORD, dwReserved: DWORD): WINBOOL {.stdcall.}
-  LPFN_WSARECVMSG* = proc (s: SOCKET, lpMsg: LPWSAMSG, lpdwNumberOfBytesRecvd: LPDWORD, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): INT {.stdcall.}
-  LPFN_WSAPOLL* = proc (fdarray: LPWSAPOLLFD, nfds: ULONG, timeout: INT): INT {.stdcall.}
-  LPFN_WSASENDMSG* = proc (s: SOCKET, lpMsg: LPWSAMSG, dwFlags: DWORD, lpNumberOfBytesSent: LPDWORD, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): INT {.stdcall.}
+  LPCONDITIONPROC* = proc(
+    lpCallerId: LPWSABUF,
+    lpCallerData: LPWSABUF,
+    lpSQOS: LPQOS,
+    lpGQOS: LPQOS,
+    lpCalleeId: LPWSABUF,
+    lpCalleeData: LPWSABUF,
+    g: ptr GROUP,
+    dwCallbackData: DWORD_PTR,
+  ): int32 {.stdcall.}
+  LPFN_ACCEPT* =
+    proc(s: SOCKET, `addr`: ptr sockaddr, addrlen: ptr int32): SOCKET {.stdcall.}
+  LPFN_BIND* = proc(s: SOCKET, name: ptr sockaddr, namelen: int32): int32 {.stdcall.}
+  LPFN_CLOSESOCKET* = proc(s: SOCKET): int32 {.stdcall.}
+  LPFN_CONNECT* = proc(s: SOCKET, name: ptr sockaddr, namelen: int32): int32 {.stdcall.}
+  LPFN_IOCTLSOCKET* = proc(s: SOCKET, cmd: int32, argp: ptr int32): int32 {.stdcall.}
+  LPFN_GETPEERNAME* =
+    proc(s: SOCKET, name: ptr sockaddr, namelen: ptr int32): int32 {.stdcall.}
+  LPFN_GETSOCKNAME* =
+    proc(s: SOCKET, name: ptr sockaddr, namelen: ptr int32): int32 {.stdcall.}
+  LPFN_GETSOCKOPT* = proc(
+    s: SOCKET, level: int32, optname: int32, optval: ptr char, optlen: ptr int32
+  ): int32 {.stdcall.}
+  LPFN_HTONL* = proc(hostlong: int32): int32 {.stdcall.}
+  LPFN_HTONS* = proc(hostshort: uint16): uint16 {.stdcall.}
+  LPFN_INET_ADDR* = proc(cp: ptr char): int32 {.stdcall.}
+  LPFN_INET_NTOA* = proc(`in`: IN_ADDR): ptr char {.stdcall.}
+  LPFN_LISTEN* = proc(s: SOCKET, backlog: int32): int32 {.stdcall.}
+  LPFN_NTOHL* = proc(netlong: int32): int32 {.stdcall.}
+  LPFN_NTOHS* = proc(netshort: uint16): uint16 {.stdcall.}
+  LPFN_RECV* =
+    proc(s: SOCKET, buf: ptr char, len: int32, flags: int32): int32 {.stdcall.}
+  LPFN_RECVFROM* = proc(
+    s: SOCKET,
+    buf: ptr char,
+    len: int32,
+    flags: int32,
+    `from`: ptr sockaddr,
+    fromlen: ptr int32,
+  ): int32 {.stdcall.}
+  LPFN_SELECT* = proc(
+    nfds: int32,
+    readfds: ptr fd_set,
+    writefds: ptr fd_set,
+    exceptfds: ptr fd_set,
+    timeout: PTIMEVAL,
+  ): int32 {.stdcall.}
+  LPFN_SEND* =
+    proc(s: SOCKET, buf: ptr char, len: int32, flags: int32): int32 {.stdcall.}
+  LPFN_SENDTO* = proc(
+    s: SOCKET, buf: ptr char, len: int32, flags: int32, to: ptr sockaddr, tolen: int32
+  ): int32 {.stdcall.}
+  LPFN_SETSOCKOPT* = proc(
+    s: SOCKET, level: int32, optname: int32, optval: ptr char, optlen: int32
+  ): int32 {.stdcall.}
+  LPFN_SHUTDOWN* = proc(s: SOCKET, how: int32): int32 {.stdcall.}
+  LPFN_SOCKET* = proc(af: int32, `type`: int32, protocol: int32): SOCKET {.stdcall.}
+  LPFN_GETHOSTBYADDR* =
+    proc(`addr`: ptr char, len: int32, `type`: int32): ptr hostent {.stdcall.}
+  LPFN_GETHOSTBYNAME* = proc(name: ptr char): ptr hostent {.stdcall.}
+  LPFN_GETHOSTNAME* = proc(name: ptr char, namelen: int32): int32 {.stdcall.}
+  LPFN_GETSERVBYPORT* = proc(port: int32, proto: ptr char): ptr servent {.stdcall.}
+  LPFN_GETSERVBYNAME* = proc(name: ptr char, proto: ptr char): ptr servent {.stdcall.}
+  LPFN_GETPROTOBYNUMBER* = proc(number: int32): ptr protoent {.stdcall.}
+  LPFN_GETPROTOBYNAME* = proc(name: ptr char): ptr protoent {.stdcall.}
+  LPFN_WSASTARTUP* =
+    proc(wVersionRequested: WORD, lpWSAData: LPWSADATA): int32 {.stdcall.}
+  LPFN_WSACLEANUP* = proc(): int32 {.stdcall.}
+  LPFN_WSASETLASTERROR* = proc(iError: int32): void {.stdcall.}
+  LPFN_WSAGETLASTERROR* = proc(): int32 {.stdcall.}
+  LPFN_WSAISBLOCKING* = proc(): WINBOOL {.stdcall.}
+  LPFN_WSAUNHOOKBLOCKINGHOOK* = proc(): int32 {.stdcall.}
+  LPFN_WSASETBLOCKINGHOOK* = proc(lpBlockFunc: FARPROC): FARPROC {.stdcall.}
+  LPFN_WSACANCELBLOCKINGCALL* = proc(): int32 {.stdcall.}
+  LPFN_WSAASYNCGETSERVBYNAME* = proc(
+    hWnd: HWND,
+    wMsg: int32,
+    name: ptr char,
+    proto: ptr char,
+    buf: ptr char,
+    buflen: int32,
+  ): HANDLE {.stdcall.}
+  LPFN_WSAASYNCGETSERVBYPORT* = proc(
+    hWnd: HWND, wMsg: int32, port: int32, proto: ptr char, buf: ptr char, buflen: int32
+  ): HANDLE {.stdcall.}
+  LPFN_WSAASYNCGETPROTOBYNAME* = proc(
+    hWnd: HWND, wMsg: int32, name: ptr char, buf: ptr char, buflen: int32
+  ): HANDLE {.stdcall.}
+  LPFN_WSAASYNCGETPROTOBYNUMBER* = proc(
+    hWnd: HWND, wMsg: int32, number: int32, buf: ptr char, buflen: int32
+  ): HANDLE {.stdcall.}
+  LPFN_WSAASYNCGETHOSTBYNAME* = proc(
+    hWnd: HWND, wMsg: int32, name: ptr char, buf: ptr char, buflen: int32
+  ): HANDLE {.stdcall.}
+  LPFN_WSAASYNCGETHOSTBYADDR* = proc(
+    hWnd: HWND,
+    wMsg: int32,
+    `addr`: ptr char,
+    len: int32,
+    `type`: int32,
+    buf: ptr char,
+    buflen: int32,
+  ): HANDLE {.stdcall.}
+  LPFN_WSACANCELASYNCREQUEST* = proc(hAsyncTaskHandle: HANDLE): int32 {.stdcall.}
+  LPFN_WSAASYNCSELECT* =
+    proc(s: SOCKET, hWnd: HWND, wMsg: int32, lEvent: int32): int32 {.stdcall.}
+  LPFN_WSAACCEPT* = proc(
+    s: SOCKET,
+    `addr`: ptr sockaddr,
+    addrlen: LPINT,
+    lpfnCondition: LPCONDITIONPROC,
+    dwCallbackData: DWORD_PTR,
+  ): SOCKET {.stdcall.}
+  LPFN_WSACLOSEEVENT* = proc(hEvent: WSAEVENT): WINBOOL {.stdcall.}
+  LPFN_WSACONNECT* = proc(
+    s: SOCKET,
+    name: ptr sockaddr,
+    namelen: int32,
+    lpCallerData: LPWSABUF,
+    lpCalleeData: LPWSABUF,
+    lpSQOS: LPQOS,
+    lpGQOS: LPQOS,
+  ): int32 {.stdcall.}
+  LPFN_WSACREATEEVENT* = proc(): WSAEVENT {.stdcall.}
+  LPFN_WSADUPLICATESOCKETA* = proc(
+    s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOA
+  ): int32 {.stdcall.}
+  LPFN_WSADUPLICATESOCKETW* = proc(
+    s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOW
+  ): int32 {.stdcall.}
+  LPFN_WSAENUMNETWORKEVENTS* = proc(
+    s: SOCKET, hEventObject: WSAEVENT, lpNetworkEvents: LPWSANETWORKEVENTS
+  ): int32 {.stdcall.}
+  LPFN_WSAENUMPROTOCOLSA* = proc(
+    lpiProtocols: LPINT,
+    lpProtocolBuffer: LPWSAPROTOCOL_INFOA,
+    lpdwBufferLength: LPDWORD,
+  ): int32 {.stdcall.}
+  LPFN_WSAENUMPROTOCOLSW* = proc(
+    lpiProtocols: LPINT,
+    lpProtocolBuffer: LPWSAPROTOCOL_INFOW,
+    lpdwBufferLength: LPDWORD,
+  ): int32 {.stdcall.}
+  LPFN_WSAEVENTSELECT* =
+    proc(s: SOCKET, hEventObject: WSAEVENT, lNetworkEvents: int32): int32 {.stdcall.}
+  LPFN_WSAGETOVERLAPPEDRESULT* = proc(
+    s: SOCKET,
+    lpOverlapped: LPWSAOVERLAPPED,
+    lpcbTransfer: LPDWORD,
+    fWait: WINBOOL,
+    lpdwFlags: LPDWORD,
+  ): WINBOOL {.stdcall.}
+  LPFN_WSAGETQOSBYNAME* =
+    proc(s: SOCKET, lpQOSName: LPWSABUF, lpQOS: LPQOS): WINBOOL {.stdcall.}
+  LPFN_WSAHTONL* =
+    proc(s: SOCKET, hostlong: int32, lpnetlong: ptr int32): int32 {.stdcall.}
+  LPFN_WSAHTONS* =
+    proc(s: SOCKET, hostshort: uint16, lpnetshort: ptr uint16): int32 {.stdcall.}
+  LPFN_WSAIOCTL* = proc(
+    s: SOCKET,
+    dwIoControlCode: DWORD,
+    lpvInBuffer: LPVOID,
+    cbInBuffer: DWORD,
+    lpvOutBuffer: LPVOID,
+    cbOutBuffer: DWORD,
+    lpcbBytesReturned: LPDWORD,
+    lpOverlapped: LPWSAOVERLAPPED,
+    lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+  ): int32 {.stdcall.}
+  LPFN_WSAJOINLEAF* = proc(
+    s: SOCKET,
+    name: ptr sockaddr,
+    namelen: int32,
+    lpCallerData: LPWSABUF,
+    lpCalleeData: LPWSABUF,
+    lpSQOS: LPQOS,
+    lpGQOS: LPQOS,
+    dwFlags: DWORD,
+  ): SOCKET {.stdcall.}
+  LPFN_WSANTOHL* =
+    proc(s: SOCKET, netlong: int32, lphostlong: ptr int32): int32 {.stdcall.}
+  LPFN_WSANTOHS* =
+    proc(s: SOCKET, netshort: uint16, lphostshort: ptr uint16): int32 {.stdcall.}
+  LPFN_WSARECV* = proc(
+    s: SOCKET,
+    lpBuffers: LPWSABUF,
+    dwBufferCount: DWORD,
+    lpNumberOfBytesRecvd: LPDWORD,
+    lpFlags: LPDWORD,
+    lpOverlapped: LPWSAOVERLAPPED,
+    lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+  ): int32 {.stdcall.}
+  LPFN_WSARECVDISCONNECT* =
+    proc(s: SOCKET, lpInboundDisconnectData: LPWSABUF): int32 {.stdcall.}
+  LPFN_WSARECVFROM* = proc(
+    s: SOCKET,
+    lpBuffers: LPWSABUF,
+    dwBufferCount: DWORD,
+    lpNumberOfBytesRecvd: LPDWORD,
+    lpFlags: LPDWORD,
+    lpFrom: ptr sockaddr,
+    lpFromlen: LPINT,
+    lpOverlapped: LPWSAOVERLAPPED,
+    lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+  ): int32 {.stdcall.}
+  LPFN_WSARESETEVENT* = proc(hEvent: WSAEVENT): WINBOOL {.stdcall.}
+  LPFN_WSASEND* = proc(
+    s: SOCKET,
+    lpBuffers: LPWSABUF,
+    dwBufferCount: DWORD,
+    lpNumberOfBytesSent: LPDWORD,
+    dwFlags: DWORD,
+    lpOverlapped: LPWSAOVERLAPPED,
+    lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+  ): int32 {.stdcall.}
+  LPFN_WSASENDDISCONNECT* =
+    proc(s: SOCKET, lpOutboundDisconnectData: LPWSABUF): int32 {.stdcall.}
+  LPFN_WSASENDTO* = proc(
+    s: SOCKET,
+    lpBuffers: LPWSABUF,
+    dwBufferCount: DWORD,
+    lpNumberOfBytesSent: LPDWORD,
+    dwFlags: DWORD,
+    lpTo: ptr sockaddr,
+    iTolen: int32,
+    lpOverlapped: LPWSAOVERLAPPED,
+    lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+  ): int32 {.stdcall.}
+  LPFN_WSASETEVENT* = proc(hEvent: WSAEVENT): WINBOOL {.stdcall.}
+  LPFN_WSASOCKETA* = proc(
+    af: int32,
+    `type`: int32,
+    protocol: int32,
+    lpProtocolInfo: LPWSAPROTOCOL_INFOA,
+    g: GROUP,
+    dwFlags: DWORD,
+  ): SOCKET {.stdcall.}
+  LPFN_WSASOCKETW* = proc(
+    af: int32,
+    `type`: int32,
+    protocol: int32,
+    lpProtocolInfo: LPWSAPROTOCOL_INFOW,
+    g: GROUP,
+    dwFlags: DWORD,
+  ): SOCKET {.stdcall.}
+  LPFN_WSAWAITFORMULTIPLEEVENTS* = proc(
+    cEvents: DWORD,
+    lphEvents: ptr WSAEVENT,
+    fWaitAll: WINBOOL,
+    dwTimeout: DWORD,
+    fAlertable: WINBOOL,
+  ): DWORD {.stdcall.}
+  LPFN_WSAADDRESSTOSTRINGA* = proc(
+    lpsaAddress: LPSOCKADDR,
+    dwAddressLength: DWORD,
+    lpProtocolInfo: LPWSAPROTOCOL_INFOA,
+    lpszAddressString: LPSTR,
+    lpdwAddressStringLength: LPDWORD,
+  ): INT {.stdcall.}
+  LPFN_WSAADDRESSTOSTRINGW* = proc(
+    lpsaAddress: LPSOCKADDR,
+    dwAddressLength: DWORD,
+    lpProtocolInfo: LPWSAPROTOCOL_INFOW,
+    lpszAddressString: LPWSTR,
+    lpdwAddressStringLength: LPDWORD,
+  ): INT {.stdcall.}
+  LPFN_WSASTRINGTOADDRESSA* = proc(
+    AddressString: LPSTR,
+    AddressFamily: INT,
+    lpProtocolInfo: LPWSAPROTOCOL_INFOA,
+    lpAddress: LPSOCKADDR,
+    lpAddressLength: LPINT,
+  ): INT {.stdcall.}
+  LPFN_WSASTRINGTOADDRESSW* = proc(
+    AddressString: LPWSTR,
+    AddressFamily: INT,
+    lpProtocolInfo: LPWSAPROTOCOL_INFOW,
+    lpAddress: LPSOCKADDR,
+    lpAddressLength: LPINT,
+  ): INT {.stdcall.}
+  LPFN_WSALOOKUPSERVICEBEGINA* = proc(
+    lpqsRestrictions: LPWSAQUERYSETA, dwControlFlags: DWORD, lphLookup: LPHANDLE
+  ): INT {.stdcall.}
+  LPFN_WSALOOKUPSERVICEBEGINW* = proc(
+    lpqsRestrictions: LPWSAQUERYSETW, dwControlFlags: DWORD, lphLookup: LPHANDLE
+  ): INT {.stdcall.}
+  LPFN_WSALOOKUPSERVICENEXTA* = proc(
+    hLookup: HANDLE,
+    dwControlFlags: DWORD,
+    lpdwBufferLength: LPDWORD,
+    lpqsResults: LPWSAQUERYSETA,
+  ): INT {.stdcall.}
+  LPFN_WSALOOKUPSERVICENEXTW* = proc(
+    hLookup: HANDLE,
+    dwControlFlags: DWORD,
+    lpdwBufferLength: LPDWORD,
+    lpqsResults: LPWSAQUERYSETW,
+  ): INT {.stdcall.}
+  LPFN_WSANSPIOCTL* = proc(
+    hLookup: HANDLE,
+    dwControlCode: DWORD,
+    lpvInBuffer: LPVOID,
+    cbInBuffer: DWORD,
+    lpvOutBuffer: LPVOID,
+    cbOutBuffer: DWORD,
+    lpcbBytesReturned: LPDWORD,
+    lpCompletion: LPWSACOMPLETION,
+  ): INT {.stdcall.}
+  LPFN_WSALOOKUPSERVICEEND* = proc(hLookup: HANDLE): INT {.stdcall.}
+  LPFN_WSAINSTALLSERVICECLASSA* =
+    proc(lpServiceClassInfo: LPWSASERVICECLASSINFOA): INT {.stdcall.}
+  LPFN_WSAINSTALLSERVICECLASSW* =
+    proc(lpServiceClassInfo: LPWSASERVICECLASSINFOW): INT {.stdcall.}
+  LPFN_WSAREMOVESERVICECLASS* = proc(lpServiceClassId: LPGUID): INT {.stdcall.}
+  LPFN_WSAGETSERVICECLASSINFOA* = proc(
+    lpProviderId: LPGUID,
+    lpServiceClassId: LPGUID,
+    lpdwBufSize: LPDWORD,
+    lpServiceClassInfo: LPWSASERVICECLASSINFOA,
+  ): INT {.stdcall.}
+  LPFN_WSAGETSERVICECLASSINFOW* = proc(
+    lpProviderId: LPGUID,
+    lpServiceClassId: LPGUID,
+    lpdwBufSize: LPDWORD,
+    lpServiceClassInfo: LPWSASERVICECLASSINFOW,
+  ): INT {.stdcall.}
+  LPFN_WSAENUMNAMESPACEPROVIDERSA* =
+    proc(lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOA): INT {.stdcall.}
+  LPFN_WSAENUMNAMESPACEPROVIDERSW* =
+    proc(lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOW): INT {.stdcall.}
+  LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA* = proc(
+    lpServiceClassId: LPGUID, lpszServiceClassName: LPSTR, lpdwBufferLength: LPDWORD
+  ): INT {.stdcall.}
+  LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW* = proc(
+    lpServiceClassId: LPGUID, lpszServiceClassName: LPWSTR, lpdwBufferLength: LPDWORD
+  ): INT {.stdcall.}
+  LPFN_WSASETSERVICEA* = proc(
+    lpqsRegInfo: LPWSAQUERYSETA, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD
+  ): INT {.stdcall.}
+  LPFN_WSASETSERVICEW* = proc(
+    lpqsRegInfo: LPWSAQUERYSETW, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD
+  ): INT {.stdcall.}
+  LPFN_WSAPROVIDERCONFIGCHANGE* = proc(
+    lpNotificationHandle: LPHANDLE,
+    lpOverlapped: LPWSAOVERLAPPED,
+    lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+  ): INT {.stdcall.}
+  LPFN_GETADDRINFOW* = proc(
+    pNodeName: PCWSTR,
+    pServiceName: PCWSTR,
+    pHints: ptr ADDRINFOW,
+    ppResult: ptr PADDRINFOW,
+  ): int32 {.stdcall.}
+  LPFN_FREEADDRINFOW* = proc(pAddrInfo: PADDRINFOW): void {.stdcall.}
+  LPFN_GETNAMEINFOW* = proc(
+    pSockaddr: ptr SOCKADDR,
+    SockaddrLength: socklen_t,
+    pNodeBuffer: PWCHAR,
+    NodeBufferSize: DWORD,
+    pServiceBuffer: PWCHAR,
+    ServiceBufferSize: DWORD,
+    Flags: INT,
+  ): INT {.stdcall.}
+  LPFN_GETADDRINFOEXA* = proc(
+    pName: PCSTR,
+    pServiceName: PCSTR,
+    dwNameSpace: DWORD,
+    lpNspId: LPGUID,
+    pHints: ptr ADDRINFOEXA,
+    ppResult: ptr PADDRINFOEXA,
+    timeout: PTIMEVAL,
+    lpOverlapped: LPOVERLAPPED,
+    lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
+    lpNameHandle: LPHANDLE,
+  ): int32 {.stdcall.}
+  LPFN_GETADDRINFOEXW* = proc(
+    pName: PCWSTR,
+    pServiceName: PCWSTR,
+    dwNameSpace: DWORD,
+    lpNspId: LPGUID,
+    pHints: ptr ADDRINFOEXW,
+    ppResult: ptr PADDRINFOEXW,
+    timeout: PTIMEVAL,
+    lpOverlapped: LPOVERLAPPED,
+    lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
+    lpNameHandle: LPHANDLE,
+  ): int32 {.stdcall.}
+  LPFN_SETADDRINFOEXA* = proc(
+    pName: PCSTR,
+    pServiceName: PCSTR,
+    pAddresses: ptr SOCKET_ADDRESS,
+    dwAddressCount: DWORD,
+    lpBlob: LPBLOB,
+    dwFlags: DWORD,
+    dwNameSpace: DWORD,
+    lpNspId: LPGUID,
+    timeout: PTIMEVAL,
+    lpOverlapped: LPOVERLAPPED,
+    lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
+    lpNameHandle: LPHANDLE,
+  ): int32 {.stdcall.}
+  LPFN_SETADDRINFOEXW* = proc(
+    pName: PCWSTR,
+    pServiceName: PCWSTR,
+    pAddresses: ptr SOCKET_ADDRESS,
+    dwAddressCount: DWORD,
+    lpBlob: LPBLOB,
+    dwFlags: DWORD,
+    dwNameSpace: DWORD,
+    lpNspId: LPGUID,
+    timeout: PTIMEVAL,
+    lpOverlapped: LPOVERLAPPED,
+    lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
+    lpNameHandle: LPHANDLE,
+  ): int32 {.stdcall.}
+  LPFN_FREEADDRINFOEXA* = proc(pAddrInfo: PADDRINFOEXA): void {.stdcall.}
+  LPFN_FREEADDRINFOEXW* = proc(pAddrInfo: PADDRINFOEXW): void {.stdcall.}
+  LPFN_TRANSMITFILE* = proc(
+    hSocket: SOCKET,
+    hFile: HANDLE,
+    nNumberOfBytesToWrite: DWORD,
+    nNumberOfBytesPerSend: DWORD,
+    lpOverlapped: LPOVERLAPPED,
+    lpTransmitBuffers: LPTRANSMIT_FILE_BUFFERS,
+    dwReserved: DWORD,
+  ): WINBOOL {.stdcall.}
+  LPFN_ACCEPTEX* = proc(
+    sListenSocket: SOCKET,
+    sAcceptSocket: SOCKET,
+    lpOutputBuffer: PVOID,
+    dwReceiveDataLength: DWORD,
+    dwLocalAddressLength: DWORD,
+    dwRemoteAddressLength: DWORD,
+    lpdwBytesReceived: LPDWORD,
+    lpOverlapped: LPOVERLAPPED,
+  ): WINBOOL {.stdcall.}
+  LPFN_GETACCEPTEXSOCKADDRS* = proc(
+    lpOutputBuffer: PVOID,
+    dwReceiveDataLength: DWORD,
+    dwLocalAddressLength: DWORD,
+    dwRemoteAddressLength: DWORD,
+    LocalSockaddr: ptr ptr sockaddr,
+    LocalSockaddrLength: LPINT,
+    RemoteSockaddr: ptr ptr sockaddr,
+    RemoteSockaddrLength: LPINT,
+  ): VOID {.stdcall.}
+  LPFN_TRANSMITPACKETS* = proc(
+    hSocket: SOCKET,
+    lpPacketArray: LPTRANSMIT_PACKETS_ELEMENT,
+    nElementCount: DWORD,
+    nSendSize: DWORD,
+    lpOverlapped: LPOVERLAPPED,
+    dwFlags: DWORD,
+  ): WINBOOL {.stdcall.}
+  LPFN_CONNECTEX* = proc(
+    s: SOCKET,
+    name: ptr sockaddr,
+    namelen: int32,
+    lpSendBuffer: PVOID,
+    dwSendDataLength: DWORD,
+    lpdwBytesSent: LPDWORD,
+    lpOverlapped: LPOVERLAPPED,
+  ): WINBOOL {.stdcall.}
+  LPFN_DISCONNECTEX* = proc(
+    s: SOCKET, lpOverlapped: LPOVERLAPPED, dwFlags: DWORD, dwReserved: DWORD
+  ): WINBOOL {.stdcall.}
+  LPFN_WSARECVMSG* = proc(
+    s: SOCKET,
+    lpMsg: LPWSAMSG,
+    lpdwNumberOfBytesRecvd: LPDWORD,
+    lpOverlapped: LPWSAOVERLAPPED,
+    lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+  ): INT {.stdcall.}
+  LPFN_WSAPOLL* = proc(fdarray: LPWSAPOLLFD, nfds: ULONG, timeout: INT): INT {.stdcall.}
+  LPFN_WSASENDMSG* = proc(
+    s: SOCKET,
+    lpMsg: LPWSAMSG,
+    dwFlags: DWORD,
+    lpNumberOfBytesSent: LPDWORD,
+    lpOverlapped: LPWSAOVERLAPPED,
+    lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+  ): INT {.stdcall.}
   netent* {.pure.} = object
     n_name*: ptr char
     n_aliases*: ptr ptr char
     n_addrtype*: int16
     n_net*: int32
+
   sockproto* {.pure.} = object
     sp_family*: uint16
     sp_protocol*: uint16
+
   IPV6_MREQ* {.pure.} = object
     ipv6mr_multiaddr*: IN6_ADDR
     ipv6mr_interface*: int32
+
   ip_mreq* {.pure.} = object
     imr_multiaddr*: IN_ADDR
     imr_interface*: IN_ADDR
+
   ip_mreq_source* {.pure.} = object
     imr_multiaddr*: IN_ADDR
     imr_sourceaddr*: IN_ADDR
     imr_interface*: IN_ADDR
+
   ip_msfilter* {.pure.} = object
     imsf_multiaddr*: IN_ADDR
     imsf_interface*: IN_ADDR
     imsf_fmode*: int32
     imsf_numsrc*: int32
     imsf_slist*: array[1, IN_ADDR]
+
   IN_PKTINFO* {.pure.} = object
     ipi_addr*: IN_ADDR
     ipi_ifindex*: UINT
+
   IN6_PKTINFO* {.pure.} = object
     ipi6_addr*: IN6_ADDR
     ipi6_ifindex*: UINT
+
   tcp_keepalive* {.pure.} = object
     onoff*: int32
     keepalivetime*: int32
     keepaliveinterval*: int32
+
   SOCKET_PEER_TARGET_NAME* {.pure.} = object
     SecurityProtocol*: SOCKET_SECURITY_PROTOCOL
     PeerAddress*: SOCKADDR_STORAGE
     PeerTargetNameStringLen*: ULONG
     AllStrings*: UncheckedArray[uint16]
+
   SOCKET_SECURITY_QUERY_INFO* {.pure.} = object
     SecurityProtocol*: SOCKET_SECURITY_PROTOCOL
     Flags*: ULONG
     PeerApplicationAccessTokenHandle*: UINT64
     PeerMachineAccessTokenHandle*: UINT64
+
   SOCKET_SECURITY_QUERY_TEMPLATE* {.pure.} = object
     SecurityProtocol*: SOCKET_SECURITY_PROTOCOL
     PeerAddress*: SOCKADDR_STORAGE
     PeerTokenAccessMask*: ULONG
+
   SOCKET_SECURITY_SETTINGS* {.pure.} = object
     SecurityProtocol*: SOCKET_SECURITY_PROTOCOL
     SecurityFlags*: ULONG
+
   SOCKET_SECURITY_SETTINGS_IPSEC* {.pure.} = object
     SecurityProtocol*: SOCKET_SECURITY_PROTOCOL
     SecurityFlags*: ULONG
@@ -1453,197 +1948,942 @@
     DomainNameStringLen*: ULONG
     PasswordStringLen*: ULONG
     AllStrings*: UncheckedArray[uint16]
-proc WSAFDIsSet*(P1: SOCKET, P2: ptr fd_set): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "__WSAFDIsSet".}
-proc accept*(s: SOCKET, `addr`: ptr sockaddr, addrlen: ptr int32): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc `bind`*(s: SOCKET, name: ptr sockaddr, namelen: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAFDIsSet*(
+  P1: SOCKET, P2: ptr fd_set
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "__WSAFDIsSet".}
+
+proc accept*(
+  s: SOCKET, `addr`: ptr sockaddr, addrlen: ptr int32
+): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc `bind`*(
+  s: SOCKET, name: ptr sockaddr, namelen: int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
 proc closesocket*(s: SOCKET): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc connect*(s: SOCKET, name: ptr sockaddr, namelen: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc ioctlsocket*(s: SOCKET, cmd: int32, argp: ptr int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc getpeername*(s: SOCKET, name: ptr sockaddr, namelen: ptr int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc getsockname*(s: SOCKET, name: ptr sockaddr, namelen: ptr int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc getsockopt*(s: SOCKET, level: int32, optname: int32, optval: ptr char, optlen: ptr int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+proc connect*(
+  s: SOCKET, name: ptr sockaddr, namelen: int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc ioctlsocket*(
+  s: SOCKET, cmd: int32, argp: ptr int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc getpeername*(
+  s: SOCKET, name: ptr sockaddr, namelen: ptr int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc getsockname*(
+  s: SOCKET, name: ptr sockaddr, namelen: ptr int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc getsockopt*(
+  s: SOCKET, level: int32, optname: int32, optval: ptr char, optlen: ptr int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
 proc htonl*(hostlong: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
 proc htons*(hostshort: uint16): uint16 {.winapi, stdcall, dynlib: "ws2_32", importc.}
 proc inet_addr*(cp: ptr char): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
 proc inet_ntoa*(`in`: IN_ADDR): ptr char {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc listen*(s: SOCKET, backlog: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+proc listen*(
+  s: SOCKET, backlog: int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
 proc ntohl*(netlong: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
 proc ntohs*(netshort: uint16): uint16 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc recv*(s: SOCKET, buf: ptr char, len: int32, flags: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc recvfrom*(s: SOCKET, buf: ptr char, len: int32, flags: int32, `from`: ptr sockaddr, fromlen: ptr int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc select*(nfds: int32, readfds: ptr fd_set, writefds: ptr fd_set, exceptfds: ptr fd_set, timeout: PTIMEVAL): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc send*(s: SOCKET, buf: ptr char, len: int32, flags: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc sendto*(s: SOCKET, buf: ptr char, len: int32, flags: int32, to: ptr sockaddr, tolen: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc setsockopt*(s: SOCKET, level: int32, optname: int32, optval: ptr char, optlen: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc shutdown*(s: SOCKET, how: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc socket*(af: int32, `type`: int32, protocol: int32): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc gethostbyaddr*(`addr`: ptr char, len: int32, `type`: int32): ptr hostent {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc gethostbyname*(name: ptr char): ptr hostent {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc gethostname*(name: ptr char, namelen: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc getservbyport*(port: int32, proto: ptr char): ptr servent {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc getservbyname*(name: ptr char, proto: ptr char): ptr servent {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc getprotobynumber*(number: int32): ptr protoent {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc getprotobyname*(name: ptr char): ptr protoent {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAStartup*(wVersionRequested: WORD, lpWSAData: LPWSADATA): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+proc recv*(
+  s: SOCKET, buf: ptr char, len: int32, flags: int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc recvfrom*(
+  s: SOCKET,
+  buf: ptr char,
+  len: int32,
+  flags: int32,
+  `from`: ptr sockaddr,
+  fromlen: ptr int32,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc select*(
+  nfds: int32,
+  readfds: ptr fd_set,
+  writefds: ptr fd_set,
+  exceptfds: ptr fd_set,
+  timeout: PTIMEVAL,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc send*(
+  s: SOCKET, buf: ptr char, len: int32, flags: int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc sendto*(
+  s: SOCKET, buf: ptr char, len: int32, flags: int32, to: ptr sockaddr, tolen: int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc setsockopt*(
+  s: SOCKET, level: int32, optname: int32, optval: ptr char, optlen: int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc shutdown*(
+  s: SOCKET, how: int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc socket*(
+  af: int32, `type`: int32, protocol: int32
+): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc gethostbyaddr*(
+  `addr`: ptr char, len: int32, `type`: int32
+): ptr hostent {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc gethostbyname*(
+  name: ptr char
+): ptr hostent {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc gethostname*(
+  name: ptr char, namelen: int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc getservbyport*(
+  port: int32, proto: ptr char
+): ptr servent {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc getservbyname*(
+  name: ptr char, proto: ptr char
+): ptr servent {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc getprotobynumber*(
+  number: int32
+): ptr protoent {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc getprotobyname*(
+  name: ptr char
+): ptr protoent {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAStartup*(
+  wVersionRequested: WORD, lpWSAData: LPWSADATA
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
 proc WSACleanup*(): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSASetLastError*(iError: int32): void {.winapi, stdcall, dynlib: "ws2_32", importc.}
+proc WSASetLastError*(
+  iError: int32
+): void {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
 proc WSAGetLastError*(): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
 proc WSAIsBlocking*(): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
 proc WSAUnhookBlockingHook*(): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSASetBlockingHook*(lpBlockFunc: FARPROC): FARPROC {.winapi, stdcall, dynlib: "ws2_32", importc.}
+proc WSASetBlockingHook*(
+  lpBlockFunc: FARPROC
+): FARPROC {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
 proc WSACancelBlockingCall*(): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAAsyncGetServByName*(hWnd: HWND, wMsg: int32, name: ptr char, proto: ptr char, buf: ptr char, buflen: int32): HANDLE {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAAsyncGetServByPort*(hWnd: HWND, wMsg: int32, port: int32, proto: ptr char, buf: ptr char, buflen: int32): HANDLE {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAAsyncGetProtoByName*(hWnd: HWND, wMsg: int32, name: ptr char, buf: ptr char, buflen: int32): HANDLE {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAAsyncGetProtoByNumber*(hWnd: HWND, wMsg: int32, number: int32, buf: ptr char, buflen: int32): HANDLE {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAAsyncGetHostByName*(hWnd: HWND, wMsg: int32, name: ptr char, buf: ptr char, buflen: int32): HANDLE {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAAsyncGetHostByAddr*(hWnd: HWND, wMsg: int32, `addr`: ptr char, len: int32, `type`: int32, buf: ptr char, buflen: int32): HANDLE {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSACancelAsyncRequest*(hAsyncTaskHandle: HANDLE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAAsyncSelect*(s: SOCKET, hWnd: HWND, wMsg: int32, lEvent: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAAccept*(s: SOCKET, `addr`: ptr sockaddr, addrlen: LPINT, lpfnCondition: LPCONDITIONPROC, dwCallbackData: DWORD_PTR): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSACloseEvent*(hEvent: WSAEVENT): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAConnect*(s: SOCKET, name: ptr sockaddr, namelen: int32, lpCallerData: LPWSABUF, lpCalleeData: LPWSABUF, lpSQOS: LPQOS, lpGQOS: LPQOS): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+proc WSAAsyncGetServByName*(
+  hWnd: HWND, wMsg: int32, name: ptr char, proto: ptr char, buf: ptr char, buflen: int32
+): HANDLE {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAAsyncGetServByPort*(
+  hWnd: HWND, wMsg: int32, port: int32, proto: ptr char, buf: ptr char, buflen: int32
+): HANDLE {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAAsyncGetProtoByName*(
+  hWnd: HWND, wMsg: int32, name: ptr char, buf: ptr char, buflen: int32
+): HANDLE {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAAsyncGetProtoByNumber*(
+  hWnd: HWND, wMsg: int32, number: int32, buf: ptr char, buflen: int32
+): HANDLE {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAAsyncGetHostByName*(
+  hWnd: HWND, wMsg: int32, name: ptr char, buf: ptr char, buflen: int32
+): HANDLE {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAAsyncGetHostByAddr*(
+  hWnd: HWND,
+  wMsg: int32,
+  `addr`: ptr char,
+  len: int32,
+  `type`: int32,
+  buf: ptr char,
+  buflen: int32,
+): HANDLE {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSACancelAsyncRequest*(
+  hAsyncTaskHandle: HANDLE
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAAsyncSelect*(
+  s: SOCKET, hWnd: HWND, wMsg: int32, lEvent: int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAAccept*(
+  s: SOCKET,
+  `addr`: ptr sockaddr,
+  addrlen: LPINT,
+  lpfnCondition: LPCONDITIONPROC,
+  dwCallbackData: DWORD_PTR,
+): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSACloseEvent*(
+  hEvent: WSAEVENT
+): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAConnect*(
+  s: SOCKET,
+  name: ptr sockaddr,
+  namelen: int32,
+  lpCallerData: LPWSABUF,
+  lpCalleeData: LPWSABUF,
+  lpSQOS: LPQOS,
+  lpGQOS: LPQOS,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
 proc WSACreateEvent*(): WSAEVENT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSADuplicateSocketA*(s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOA): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSADuplicateSocketW*(s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOW): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAEnumNetworkEvents*(s: SOCKET, hEventObject: WSAEVENT, lpNetworkEvents: LPWSANETWORKEVENTS): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAEnumProtocolsA*(lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOA, lpdwBufferLength: LPDWORD): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAEnumProtocolsW*(lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOW, lpdwBufferLength: LPDWORD): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAEventSelect*(s: SOCKET, hEventObject: WSAEVENT, lNetworkEvents: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAGetOverlappedResult*(s: SOCKET, lpOverlapped: LPWSAOVERLAPPED, lpcbTransfer: LPDWORD, fWait: WINBOOL, lpdwFlags: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAGetQOSByName*(s: SOCKET, lpQOSName: LPWSABUF, lpQOS: LPQOS): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAHtonl*(s: SOCKET, hostlong: int32, lpnetlong: ptr int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAHtons*(s: SOCKET, hostshort: uint16, lpnetshort: ptr uint16): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAIoctl*(s: SOCKET, dwIoControlCode: DWORD, lpvInBuffer: LPVOID, cbInBuffer: DWORD, lpvOutBuffer: LPVOID, cbOutBuffer: DWORD, lpcbBytesReturned: LPDWORD, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAJoinLeaf*(s: SOCKET, name: ptr sockaddr, namelen: int32, lpCallerData: LPWSABUF, lpCalleeData: LPWSABUF, lpSQOS: LPQOS, lpGQOS: LPQOS, dwFlags: DWORD): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSANtohl*(s: SOCKET, netlong: int32, lphostlong: ptr int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSANtohs*(s: SOCKET, netshort: uint16, lphostshort: ptr uint16): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSARecv*(s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesRecvd: LPDWORD, lpFlags: LPDWORD, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSARecvDisconnect*(s: SOCKET, lpInboundDisconnectData: LPWSABUF): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSARecvFrom*(s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesRecvd: LPDWORD, lpFlags: LPDWORD, lpFrom: ptr sockaddr, lpFromlen: LPINT, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAResetEvent*(hEvent: WSAEVENT): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSASend*(s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesSent: LPDWORD, dwFlags: DWORD, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSASendDisconnect*(s: SOCKET, lpOutboundDisconnectData: LPWSABUF): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSASendTo*(s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesSent: LPDWORD, dwFlags: DWORD, lpTo: ptr sockaddr, iTolen: int32, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSASetEvent*(hEvent: WSAEVENT): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSASocketA*(af: int32, `type`: int32, protocol: int32, lpProtocolInfo: LPWSAPROTOCOL_INFOA, g: GROUP, dwFlags: DWORD): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSASocketW*(af: int32, `type`: int32, protocol: int32, lpProtocolInfo: LPWSAPROTOCOL_INFOW, g: GROUP, dwFlags: DWORD): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAWaitForMultipleEvents*(cEvents: DWORD, lphEvents: ptr WSAEVENT, fWaitAll: WINBOOL, dwTimeout: DWORD, fAlertable: WINBOOL): DWORD {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAAddressToStringA*(lpsaAddress: LPSOCKADDR, dwAddressLength: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOA, lpszAddressString: LPSTR, lpdwAddressStringLength: LPDWORD): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAAddressToStringW*(lpsaAddress: LPSOCKADDR, dwAddressLength: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOW, lpszAddressString: LPWSTR, lpdwAddressStringLength: LPDWORD): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAStringToAddressA*(AddressString: LPSTR, AddressFamily: INT, lpProtocolInfo: LPWSAPROTOCOL_INFOA, lpAddress: LPSOCKADDR, lpAddressLength: LPINT): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAStringToAddressW*(AddressString: LPWSTR, AddressFamily: INT, lpProtocolInfo: LPWSAPROTOCOL_INFOW, lpAddress: LPSOCKADDR, lpAddressLength: LPINT): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSALookupServiceBeginA*(lpqsRestrictions: LPWSAQUERYSETA, dwControlFlags: DWORD, lphLookup: LPHANDLE): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSALookupServiceBeginW*(lpqsRestrictions: LPWSAQUERYSETW, dwControlFlags: DWORD, lphLookup: LPHANDLE): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSALookupServiceNextA*(hLookup: HANDLE, dwControlFlags: DWORD, lpdwBufferLength: LPDWORD, lpqsResults: LPWSAQUERYSETA): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSALookupServiceNextW*(hLookup: HANDLE, dwControlFlags: DWORD, lpdwBufferLength: LPDWORD, lpqsResults: LPWSAQUERYSETW): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSANSPIoctl*(hLookup: HANDLE, dwControlCode: DWORD, lpvInBuffer: LPVOID, cbInBuffer: DWORD, lpvOutBuffer: LPVOID, cbOutBuffer: DWORD, lpcbBytesReturned: LPDWORD, lpCompletion: LPWSACOMPLETION): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSALookupServiceEnd*(hLookup: HANDLE): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAInstallServiceClassA*(lpServiceClassInfo: LPWSASERVICECLASSINFOA): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAInstallServiceClassW*(lpServiceClassInfo: LPWSASERVICECLASSINFOW): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSARemoveServiceClass*(lpServiceClassId: LPGUID): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAGetServiceClassInfoA*(lpProviderId: LPGUID, lpServiceClassId: LPGUID, lpdwBufSize: LPDWORD, lpServiceClassInfo: LPWSASERVICECLASSINFOA): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAGetServiceClassInfoW*(lpProviderId: LPGUID, lpServiceClassId: LPGUID, lpdwBufSize: LPDWORD, lpServiceClassInfo: LPWSASERVICECLASSINFOW): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAEnumNameSpaceProvidersA*(lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOA): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAEnumNameSpaceProvidersW*(lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOW): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAGetServiceClassNameByClassIdA*(lpServiceClassId: LPGUID, lpszServiceClassName: LPSTR, lpdwBufferLength: LPDWORD): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAGetServiceClassNameByClassIdW*(lpServiceClassId: LPGUID, lpszServiceClassName: LPWSTR, lpdwBufferLength: LPDWORD): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSASetServiceA*(lpqsRegInfo: LPWSAQUERYSETA, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSASetServiceW*(lpqsRegInfo: LPWSAQUERYSETW, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAProviderConfigChange*(lpNotificationHandle: LPHANDLE, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAConnectByList*(s: SOCKET, SocketAddressList: PSOCKET_ADDRESS_LIST, LocalAddressLength: LPDWORD, LocalAddress: LPSOCKADDR, RemoteAddressLength: LPDWORD, RemoteAddress: LPSOCKADDR, timeout: PTIMEVAL, Reserved: LPWSAOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAConnectByNameA*(s: SOCKET, nodename: LPSTR, servicename: LPSTR, LocalAddressLength: LPDWORD, LocalAddress: LPSOCKADDR, RemoteAddressLength: LPDWORD, RemoteAddress: LPSOCKADDR, timeout: PTIMEVAL, Reserved: LPWSAOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAConnectByNameW*(s: SOCKET, nodename: LPWSTR, servicename: LPWSTR, LocalAddressLength: LPDWORD, LocalAddress: LPSOCKADDR, RemoteAddressLength: LPDWORD, RemoteAddress: LPSOCKADDR, timeout: PTIMEVAL, Reserved: LPWSAOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAEnumNameSpaceProvidersExA*(lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOEXA): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAEnumNameSpaceProvidersExW*(lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOEXW): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAPoll*(fdarray: ptr WSAPOLLFD, nfds: ULONG, timeout: INT): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSASendMsg*(s: SOCKET, lpMsg: LPWSAMSG, dwFlags: DWORD, lpNumberOfBytesSent: LPDWORD, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc getaddrinfo*(nodename: ptr char, servname: ptr char, hints: ptr ADDRINFOA, res: ptr ptr ADDRINFOA): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc GetAddrInfoW*(pNodeName: PCWSTR, pServiceName: PCWSTR, pHints: ptr ADDRINFOW, ppResult: ptr PADDRINFOW): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc GetAddrInfoA*(nodename: ptr char, servname: ptr char, hints: ptr ADDRINFOA, res: ptr ptr ADDRINFOA): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "getaddrinfo".}
-proc freeaddrinfo*(pAddrInfo: LPADDRINFO): void {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc FreeAddrInfoW*(pAddrInfo: PADDRINFOW): void {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc FreeAddrInfoA*(pAddrInfo: LPADDRINFO): void {.winapi, stdcall, dynlib: "ws2_32", importc: "freeaddrinfo".}
-proc getnameinfo*(sa: ptr sockaddr, salen: socklen_t, host: ptr char, hostlen: DWORD, serv: ptr char, servlen: DWORD, flags: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc GetNameInfoW*(pSockaddr: ptr SOCKADDR, SockaddrLength: socklen_t, pNodeBuffer: PWCHAR, NodeBufferSize: DWORD, pServiceBuffer: PWCHAR, ServiceBufferSize: DWORD, Flags: INT): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc GetNameInfoA*(sa: ptr sockaddr, salen: socklen_t, host: ptr char, hostlen: DWORD, serv: ptr char, servlen: DWORD, flags: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "getnameinfo".}
-proc RtlIpv6AddressToStringA*(Addr: ptr IN6_ADDR, S: LPSTR): LPSTR {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlIpv6AddressToStringW*(Addr: ptr IN6_ADDR, S: LPWSTR): LPWSTR {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlIpv6AddressToStringExA*(Address: ptr IN6_ADDR, ScopeId: ULONG, Port: USHORT, AddressString: LPSTR, AddressStringLength: PULONG): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlIpv6AddressToStringExW*(Address: ptr IN6_ADDR, ScopeId: ULONG, Port: USHORT, AddressString: LPWSTR, AddressStringLength: PULONG): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlIpv4AddressToStringA*(Addr: ptr IN_ADDR, S: LPSTR): LPSTR {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlIpv4AddressToStringW*(Addr: ptr IN_ADDR, S: LPWSTR): LPWSTR {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlIpv4AddressToStringExA*(Address: ptr IN_ADDR, Port: USHORT, AddressString: LPSTR, AddressStringLength: PULONG): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlIpv4AddressToStringExW*(Address: ptr IN_ADDR, Port: USHORT, AddressString: LPWSTR, AddressStringLength: PULONG): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlIpv4StringToAddressA*(S: PCSTR, Strict: BOOLEAN, Terminator: ptr LPSTR, Addr: ptr IN_ADDR): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlIpv4StringToAddressW*(S: PCWSTR, Strict: BOOLEAN, Terminator: ptr LPWSTR, Addr: ptr IN_ADDR): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlIpv4StringToAddressExA*(AddressString: PCSTR, Strict: BOOLEAN, Address: ptr IN_ADDR, Port: PUSHORT): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlIpv4StringToAddressExW*(AddressString: PCWSTR, Strict: BOOLEAN, Address: ptr IN_ADDR, Port: PUSHORT): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlIpv6StringToAddressExA*(AddressString: PCSTR, Address: ptr IN6_ADDR, ScopeId: PULONG, Port: PUSHORT): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc RtlIpv6StringToAddressExW*(AddressString: PCWSTR, Address: ptr IN6_ADDR, ScopeId: PULONG, Port: PUSHORT): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
-proc GetAddrInfoExA*(pName: PCSTR, pServiceName: PCSTR, dwNameSpace: DWORD, lpNspId: LPGUID, pHints: ptr ADDRINFOEXA, ppResult: ptr PADDRINFOEXA, timeout: PTIMEVAL, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc GetAddrInfoExW*(pName: PCWSTR, pServiceName: PCWSTR, dwNameSpace: DWORD, lpNspId: LPGUID, pHints: ptr ADDRINFOEXW, ppResult: ptr PADDRINFOEXW, timeout: PTIMEVAL, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc SetAddrInfoExA*(pName: PCSTR, pServiceName: PCSTR, pAddresses: ptr SOCKET_ADDRESS, dwAddressCount: DWORD, lpBlob: LPBLOB, dwFlags: DWORD, dwNameSpace: DWORD, lpNspId: LPGUID, timeout: PTIMEVAL, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc SetAddrInfoExW*(pName: PCWSTR, pServiceName: PCWSTR, pAddresses: ptr SOCKET_ADDRESS, dwAddressCount: DWORD, lpBlob: LPBLOB, dwFlags: DWORD, dwNameSpace: DWORD, lpNspId: LPGUID, timeout: PTIMEVAL, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc FreeAddrInfoExW*(pAddrInfo: PADDRINFOEXW): void {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSAImpersonateSocketPeer*(Socket: SOCKET, PeerAddress: ptr sockaddr, peerAddressLen: ULONG): int32 {.winapi, stdcall, dynlib: "fwpuclnt", importc.}
-proc WSAQuerySocketSecurity*(Socket: SOCKET, SecurityQueryTemplate: ptr SOCKET_SECURITY_QUERY_TEMPLATE, SecurityQueryTemplateLen: ULONG, SecurityQueryInfo: ptr SOCKET_SECURITY_QUERY_INFO, SecurityQueryInfoLen: ptr ULONG, Overlapped: LPWSAOVERLAPPED, CompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int32 {.winapi, stdcall, dynlib: "fwpuclnt", importc.}
+proc WSADuplicateSocketA*(
+  s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOA
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSADuplicateSocketW*(
+  s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOW
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAEnumNetworkEvents*(
+  s: SOCKET, hEventObject: WSAEVENT, lpNetworkEvents: LPWSANETWORKEVENTS
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAEnumProtocolsA*(
+  lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOA, lpdwBufferLength: LPDWORD
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAEnumProtocolsW*(
+  lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOW, lpdwBufferLength: LPDWORD
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAEventSelect*(
+  s: SOCKET, hEventObject: WSAEVENT, lNetworkEvents: int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAGetOverlappedResult*(
+  s: SOCKET,
+  lpOverlapped: LPWSAOVERLAPPED,
+  lpcbTransfer: LPDWORD,
+  fWait: WINBOOL,
+  lpdwFlags: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAGetQOSByName*(
+  s: SOCKET, lpQOSName: LPWSABUF, lpQOS: LPQOS
+): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAHtonl*(
+  s: SOCKET, hostlong: int32, lpnetlong: ptr int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAHtons*(
+  s: SOCKET, hostshort: uint16, lpnetshort: ptr uint16
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAIoctl*(
+  s: SOCKET,
+  dwIoControlCode: DWORD,
+  lpvInBuffer: LPVOID,
+  cbInBuffer: DWORD,
+  lpvOutBuffer: LPVOID,
+  cbOutBuffer: DWORD,
+  lpcbBytesReturned: LPDWORD,
+  lpOverlapped: LPWSAOVERLAPPED,
+  lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAJoinLeaf*(
+  s: SOCKET,
+  name: ptr sockaddr,
+  namelen: int32,
+  lpCallerData: LPWSABUF,
+  lpCalleeData: LPWSABUF,
+  lpSQOS: LPQOS,
+  lpGQOS: LPQOS,
+  dwFlags: DWORD,
+): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSANtohl*(
+  s: SOCKET, netlong: int32, lphostlong: ptr int32
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSANtohs*(
+  s: SOCKET, netshort: uint16, lphostshort: ptr uint16
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSARecv*(
+  s: SOCKET,
+  lpBuffers: LPWSABUF,
+  dwBufferCount: DWORD,
+  lpNumberOfBytesRecvd: LPDWORD,
+  lpFlags: LPDWORD,
+  lpOverlapped: LPWSAOVERLAPPED,
+  lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSARecvDisconnect*(
+  s: SOCKET, lpInboundDisconnectData: LPWSABUF
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSARecvFrom*(
+  s: SOCKET,
+  lpBuffers: LPWSABUF,
+  dwBufferCount: DWORD,
+  lpNumberOfBytesRecvd: LPDWORD,
+  lpFlags: LPDWORD,
+  lpFrom: ptr sockaddr,
+  lpFromlen: LPINT,
+  lpOverlapped: LPWSAOVERLAPPED,
+  lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAResetEvent*(
+  hEvent: WSAEVENT
+): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSASend*(
+  s: SOCKET,
+  lpBuffers: LPWSABUF,
+  dwBufferCount: DWORD,
+  lpNumberOfBytesSent: LPDWORD,
+  dwFlags: DWORD,
+  lpOverlapped: LPWSAOVERLAPPED,
+  lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSASendDisconnect*(
+  s: SOCKET, lpOutboundDisconnectData: LPWSABUF
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSASendTo*(
+  s: SOCKET,
+  lpBuffers: LPWSABUF,
+  dwBufferCount: DWORD,
+  lpNumberOfBytesSent: LPDWORD,
+  dwFlags: DWORD,
+  lpTo: ptr sockaddr,
+  iTolen: int32,
+  lpOverlapped: LPWSAOVERLAPPED,
+  lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSASetEvent*(
+  hEvent: WSAEVENT
+): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSASocketA*(
+  af: int32,
+  `type`: int32,
+  protocol: int32,
+  lpProtocolInfo: LPWSAPROTOCOL_INFOA,
+  g: GROUP,
+  dwFlags: DWORD,
+): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSASocketW*(
+  af: int32,
+  `type`: int32,
+  protocol: int32,
+  lpProtocolInfo: LPWSAPROTOCOL_INFOW,
+  g: GROUP,
+  dwFlags: DWORD,
+): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAWaitForMultipleEvents*(
+  cEvents: DWORD,
+  lphEvents: ptr WSAEVENT,
+  fWaitAll: WINBOOL,
+  dwTimeout: DWORD,
+  fAlertable: WINBOOL,
+): DWORD {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAAddressToStringA*(
+  lpsaAddress: LPSOCKADDR,
+  dwAddressLength: DWORD,
+  lpProtocolInfo: LPWSAPROTOCOL_INFOA,
+  lpszAddressString: LPSTR,
+  lpdwAddressStringLength: LPDWORD,
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAAddressToStringW*(
+  lpsaAddress: LPSOCKADDR,
+  dwAddressLength: DWORD,
+  lpProtocolInfo: LPWSAPROTOCOL_INFOW,
+  lpszAddressString: LPWSTR,
+  lpdwAddressStringLength: LPDWORD,
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAStringToAddressA*(
+  AddressString: LPSTR,
+  AddressFamily: INT,
+  lpProtocolInfo: LPWSAPROTOCOL_INFOA,
+  lpAddress: LPSOCKADDR,
+  lpAddressLength: LPINT,
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAStringToAddressW*(
+  AddressString: LPWSTR,
+  AddressFamily: INT,
+  lpProtocolInfo: LPWSAPROTOCOL_INFOW,
+  lpAddress: LPSOCKADDR,
+  lpAddressLength: LPINT,
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSALookupServiceBeginA*(
+  lpqsRestrictions: LPWSAQUERYSETA, dwControlFlags: DWORD, lphLookup: LPHANDLE
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSALookupServiceBeginW*(
+  lpqsRestrictions: LPWSAQUERYSETW, dwControlFlags: DWORD, lphLookup: LPHANDLE
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSALookupServiceNextA*(
+  hLookup: HANDLE,
+  dwControlFlags: DWORD,
+  lpdwBufferLength: LPDWORD,
+  lpqsResults: LPWSAQUERYSETA,
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSALookupServiceNextW*(
+  hLookup: HANDLE,
+  dwControlFlags: DWORD,
+  lpdwBufferLength: LPDWORD,
+  lpqsResults: LPWSAQUERYSETW,
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSANSPIoctl*(
+  hLookup: HANDLE,
+  dwControlCode: DWORD,
+  lpvInBuffer: LPVOID,
+  cbInBuffer: DWORD,
+  lpvOutBuffer: LPVOID,
+  cbOutBuffer: DWORD,
+  lpcbBytesReturned: LPDWORD,
+  lpCompletion: LPWSACOMPLETION,
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSALookupServiceEnd*(
+  hLookup: HANDLE
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAInstallServiceClassA*(
+  lpServiceClassInfo: LPWSASERVICECLASSINFOA
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAInstallServiceClassW*(
+  lpServiceClassInfo: LPWSASERVICECLASSINFOW
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSARemoveServiceClass*(
+  lpServiceClassId: LPGUID
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAGetServiceClassInfoA*(
+  lpProviderId: LPGUID,
+  lpServiceClassId: LPGUID,
+  lpdwBufSize: LPDWORD,
+  lpServiceClassInfo: LPWSASERVICECLASSINFOA,
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAGetServiceClassInfoW*(
+  lpProviderId: LPGUID,
+  lpServiceClassId: LPGUID,
+  lpdwBufSize: LPDWORD,
+  lpServiceClassInfo: LPWSASERVICECLASSINFOW,
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAEnumNameSpaceProvidersA*(
+  lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOA
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAEnumNameSpaceProvidersW*(
+  lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOW
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAGetServiceClassNameByClassIdA*(
+  lpServiceClassId: LPGUID, lpszServiceClassName: LPSTR, lpdwBufferLength: LPDWORD
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAGetServiceClassNameByClassIdW*(
+  lpServiceClassId: LPGUID, lpszServiceClassName: LPWSTR, lpdwBufferLength: LPDWORD
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSASetServiceA*(
+  lpqsRegInfo: LPWSAQUERYSETA, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSASetServiceW*(
+  lpqsRegInfo: LPWSAQUERYSETW, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAProviderConfigChange*(
+  lpNotificationHandle: LPHANDLE,
+  lpOverlapped: LPWSAOVERLAPPED,
+  lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAConnectByList*(
+  s: SOCKET,
+  SocketAddressList: PSOCKET_ADDRESS_LIST,
+  LocalAddressLength: LPDWORD,
+  LocalAddress: LPSOCKADDR,
+  RemoteAddressLength: LPDWORD,
+  RemoteAddress: LPSOCKADDR,
+  timeout: PTIMEVAL,
+  Reserved: LPWSAOVERLAPPED,
+): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAConnectByNameA*(
+  s: SOCKET,
+  nodename: LPSTR,
+  servicename: LPSTR,
+  LocalAddressLength: LPDWORD,
+  LocalAddress: LPSOCKADDR,
+  RemoteAddressLength: LPDWORD,
+  RemoteAddress: LPSOCKADDR,
+  timeout: PTIMEVAL,
+  Reserved: LPWSAOVERLAPPED,
+): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAConnectByNameW*(
+  s: SOCKET,
+  nodename: LPWSTR,
+  servicename: LPWSTR,
+  LocalAddressLength: LPDWORD,
+  LocalAddress: LPSOCKADDR,
+  RemoteAddressLength: LPDWORD,
+  RemoteAddress: LPSOCKADDR,
+  timeout: PTIMEVAL,
+  Reserved: LPWSAOVERLAPPED,
+): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAEnumNameSpaceProvidersExA*(
+  lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOEXA
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAEnumNameSpaceProvidersExW*(
+  lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOEXW
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAPoll*(
+  fdarray: ptr WSAPOLLFD, nfds: ULONG, timeout: INT
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSASendMsg*(
+  s: SOCKET,
+  lpMsg: LPWSAMSG,
+  dwFlags: DWORD,
+  lpNumberOfBytesSent: LPDWORD,
+  lpOverlapped: LPWSAOVERLAPPED,
+  lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc getaddrinfo*(
+  nodename: ptr char, servname: ptr char, hints: ptr ADDRINFOA, res: ptr ptr ADDRINFOA
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc GetAddrInfoW*(
+  pNodeName: PCWSTR,
+  pServiceName: PCWSTR,
+  pHints: ptr ADDRINFOW,
+  ppResult: ptr PADDRINFOW,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc GetAddrInfoA*(
+  nodename: ptr char, servname: ptr char, hints: ptr ADDRINFOA, res: ptr ptr ADDRINFOA
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "getaddrinfo".}
+
+proc freeaddrinfo*(
+  pAddrInfo: LPADDRINFO
+): void {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc FreeAddrInfoW*(
+  pAddrInfo: PADDRINFOW
+): void {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc FreeAddrInfoA*(
+  pAddrInfo: LPADDRINFO
+): void {.winapi, stdcall, dynlib: "ws2_32", importc: "freeaddrinfo".}
+
+proc getnameinfo*(
+  sa: ptr sockaddr,
+  salen: socklen_t,
+  host: ptr char,
+  hostlen: DWORD,
+  serv: ptr char,
+  servlen: DWORD,
+  flags: int32,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc GetNameInfoW*(
+  pSockaddr: ptr SOCKADDR,
+  SockaddrLength: socklen_t,
+  pNodeBuffer: PWCHAR,
+  NodeBufferSize: DWORD,
+  pServiceBuffer: PWCHAR,
+  ServiceBufferSize: DWORD,
+  Flags: INT,
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc GetNameInfoA*(
+  sa: ptr sockaddr,
+  salen: socklen_t,
+  host: ptr char,
+  hostlen: DWORD,
+  serv: ptr char,
+  servlen: DWORD,
+  flags: int32,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "getnameinfo".}
+
+proc RtlIpv6AddressToStringA*(
+  Addr: ptr IN6_ADDR, S: LPSTR
+): LPSTR {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlIpv6AddressToStringW*(
+  Addr: ptr IN6_ADDR, S: LPWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlIpv6AddressToStringExA*(
+  Address: ptr IN6_ADDR,
+  ScopeId: ULONG,
+  Port: USHORT,
+  AddressString: LPSTR,
+  AddressStringLength: PULONG,
+): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlIpv6AddressToStringExW*(
+  Address: ptr IN6_ADDR,
+  ScopeId: ULONG,
+  Port: USHORT,
+  AddressString: LPWSTR,
+  AddressStringLength: PULONG,
+): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlIpv4AddressToStringA*(
+  Addr: ptr IN_ADDR, S: LPSTR
+): LPSTR {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlIpv4AddressToStringW*(
+  Addr: ptr IN_ADDR, S: LPWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlIpv4AddressToStringExA*(
+  Address: ptr IN_ADDR, Port: USHORT, AddressString: LPSTR, AddressStringLength: PULONG
+): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlIpv4AddressToStringExW*(
+  Address: ptr IN_ADDR, Port: USHORT, AddressString: LPWSTR, AddressStringLength: PULONG
+): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlIpv4StringToAddressA*(
+  S: PCSTR, Strict: BOOLEAN, Terminator: ptr LPSTR, Addr: ptr IN_ADDR
+): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlIpv4StringToAddressW*(
+  S: PCWSTR, Strict: BOOLEAN, Terminator: ptr LPWSTR, Addr: ptr IN_ADDR
+): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlIpv4StringToAddressExA*(
+  AddressString: PCSTR, Strict: BOOLEAN, Address: ptr IN_ADDR, Port: PUSHORT
+): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlIpv4StringToAddressExW*(
+  AddressString: PCWSTR, Strict: BOOLEAN, Address: ptr IN_ADDR, Port: PUSHORT
+): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlIpv6StringToAddressExA*(
+  AddressString: PCSTR, Address: ptr IN6_ADDR, ScopeId: PULONG, Port: PUSHORT
+): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc RtlIpv6StringToAddressExW*(
+  AddressString: PCWSTR, Address: ptr IN6_ADDR, ScopeId: PULONG, Port: PUSHORT
+): LONG {.winapi, stdcall, dynlib: "ntdll", importc.}
+
+proc GetAddrInfoExA*(
+  pName: PCSTR,
+  pServiceName: PCSTR,
+  dwNameSpace: DWORD,
+  lpNspId: LPGUID,
+  pHints: ptr ADDRINFOEXA,
+  ppResult: ptr PADDRINFOEXA,
+  timeout: PTIMEVAL,
+  lpOverlapped: LPOVERLAPPED,
+  lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
+  lpNameHandle: LPHANDLE,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc GetAddrInfoExW*(
+  pName: PCWSTR,
+  pServiceName: PCWSTR,
+  dwNameSpace: DWORD,
+  lpNspId: LPGUID,
+  pHints: ptr ADDRINFOEXW,
+  ppResult: ptr PADDRINFOEXW,
+  timeout: PTIMEVAL,
+  lpOverlapped: LPOVERLAPPED,
+  lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
+  lpNameHandle: LPHANDLE,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc SetAddrInfoExA*(
+  pName: PCSTR,
+  pServiceName: PCSTR,
+  pAddresses: ptr SOCKET_ADDRESS,
+  dwAddressCount: DWORD,
+  lpBlob: LPBLOB,
+  dwFlags: DWORD,
+  dwNameSpace: DWORD,
+  lpNspId: LPGUID,
+  timeout: PTIMEVAL,
+  lpOverlapped: LPOVERLAPPED,
+  lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
+  lpNameHandle: LPHANDLE,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc SetAddrInfoExW*(
+  pName: PCWSTR,
+  pServiceName: PCWSTR,
+  pAddresses: ptr SOCKET_ADDRESS,
+  dwAddressCount: DWORD,
+  lpBlob: LPBLOB,
+  dwFlags: DWORD,
+  dwNameSpace: DWORD,
+  lpNspId: LPGUID,
+  timeout: PTIMEVAL,
+  lpOverlapped: LPOVERLAPPED,
+  lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
+  lpNameHandle: LPHANDLE,
+): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc FreeAddrInfoExW*(
+  pAddrInfo: PADDRINFOEXW
+): void {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSAImpersonateSocketPeer*(
+  Socket: SOCKET, PeerAddress: ptr sockaddr, peerAddressLen: ULONG
+): int32 {.winapi, stdcall, dynlib: "fwpuclnt", importc.}
+
+proc WSAQuerySocketSecurity*(
+  Socket: SOCKET,
+  SecurityQueryTemplate: ptr SOCKET_SECURITY_QUERY_TEMPLATE,
+  SecurityQueryTemplateLen: ULONG,
+  SecurityQueryInfo: ptr SOCKET_SECURITY_QUERY_INFO,
+  SecurityQueryInfoLen: ptr ULONG,
+  Overlapped: LPWSAOVERLAPPED,
+  CompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+): int32 {.winapi, stdcall, dynlib: "fwpuclnt", importc.}
+
 proc WSARevertImpersonation*(): int32 {.winapi, stdcall, dynlib: "fwpuclnt", importc.}
-proc WSASetSocketPeerTargetName*(Socket: SOCKET, PeerTargetName: ptr SOCKET_PEER_TARGET_NAME, PeerTargetNameLen: ULONG, Overlapped: LPWSAOVERLAPPED, CompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int32 {.winapi, stdcall, dynlib: "fwpuclnt", importc.}
-proc WSASetSocketSecurity*(Socket: SOCKET, SecuritySettings: ptr SOCKET_SECURITY_SETTINGS, SecuritySettingsLen: ULONG, Overlapped: LPWSAOVERLAPPED, CompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int32 {.winapi, stdcall, dynlib: "fwpuclnt", importc.}
-proc InetNtopW*(Family: INT, pAddr: PVOID, pStringBuf: LPWSTR, StringBufSIze: int): LPCWSTR {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc inet_ntop*(Family: INT, pAddr: PVOID, pStringBuf: LPSTR, StringBufSize: int): LPCSTR {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc InetPtonW*(Family: INT, pStringBuf: LPCWSTR, pAddr: PVOID): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc inet_pton*(Family: INT, pStringBuf: LPCSTR, pAddr: PVOID): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
-proc WSARecvEx*(s: SOCKET, buf: ptr char, len: int32, flags: ptr int32): int32 {.winapi, stdcall, dynlib: "mswsock", importc.}
-proc TransmitFile*(hSocket: SOCKET, hFile: HANDLE, nNumberOfBytesToWrite: DWORD, nNumberOfBytesPerSend: DWORD, lpOverlapped: LPOVERLAPPED, lpTransmitBuffers: LPTRANSMIT_FILE_BUFFERS, dwReserved: DWORD): WINBOOL {.winapi, stdcall, dynlib: "mswsock", importc.}
-proc AcceptEx*(sListenSocket: SOCKET, sAcceptSocket: SOCKET, lpOutputBuffer: PVOID, dwReceiveDataLength: DWORD, dwLocalAddressLength: DWORD, dwRemoteAddressLength: DWORD, lpdwBytesReceived: LPDWORD, lpOverlapped: LPOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "mswsock", importc.}
-proc GetAcceptExSockaddrs*(lpOutputBuffer: PVOID, dwReceiveDataLength: DWORD, dwLocalAddressLength: DWORD, dwRemoteAddressLength: DWORD, LocalSockaddr: ptr ptr sockaddr, LocalSockaddrLength: LPINT, RemoteSockaddr: ptr ptr sockaddr, RemoteSockaddrLength: LPINT): VOID {.winapi, stdcall, dynlib: "mswsock", importc.}
-proc InetNtopA*(Family: INT, pAddr: PVOID, pStringBuf: LPSTR, StringBufSize: int): LPCSTR {.winapi, stdcall, dynlib: "ws2_32", importc: "inet_ntop".}
-proc InetPtonA*(Family: INT, pStringBuf: LPCSTR, pAddr: PVOID): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "inet_pton".}
-template `<`*(x: TIMEVAL, y: TIMEVAL): bool = (x.tv_sec < y.tv_sec or (x.tv_sec == y.tv_sec and x.tv_usec < y.tv_usec))
-template `<=`*(x: TIMEVAL, y: TIMEVAL): bool = (x.tv_sec < y.tv_sec or (x.tv_sec == y.tv_sec and x.tv_usec <= y.tv_usec))
-template timerisset*(tvp: TIMEVAL): bool = tvp.tv_sec != 0 or tvp.tv_usec != 0
-template timerclear*(tvp: var TIMEVAL) = tvp.tv_sec = 0; tvp.tv_usec = 0
-template IN_CLASSA*(i: untyped): bool = (i and 0x80000000) == 0
-template IN_CLASSB*(i: untyped): bool = (i and 0xc0000000) == 0x80000000
-template IN_CLASSC*(i: untyped): bool = (i and 0xe0000000) == 0xc0000000
-template IN_CLASSD*(i: untyped): bool = (i and 0xf0000000) == 0xe0000000
-template IN_MULTICAST*(i: untyped): bool = IN_CLASSD(i)
-template WSAMAKEASYNCREPLY*(buflen: untyped, error: untyped): untyped = MAKELONG(buflen, error)
-template WSAMAKESELECTREPLY*(event: untyped, error: untyped): untyped = MAKELONG(event, error)
-template WSAGETASYNCBUFLEN*(lParam: untyped): untyped = LOWORD(lParam)
-template WSAGETASYNCERROR*(lParam: untyped): untyped = HIWORD(lParam)
-template WSAGETSELECTEVENT*(lParam: untyped): untyped = LOWORD(lParam)
-template WSAGETSELECTERROR*(lParam: untyped): untyped = HIWORD(lParam)
-proc FD_CLR*(fd: SOCKET, s: ptr fd_set): void {.importc: "FD_CLR", header: "<winsock2.h>".}
-proc FD_SET*(fd: SOCKET, s: ptr fd_set): void {.importc: "FD_SET", header: "<winsock2.h>".}
+proc WSASetSocketPeerTargetName*(
+  Socket: SOCKET,
+  PeerTargetName: ptr SOCKET_PEER_TARGET_NAME,
+  PeerTargetNameLen: ULONG,
+  Overlapped: LPWSAOVERLAPPED,
+  CompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+): int32 {.winapi, stdcall, dynlib: "fwpuclnt", importc.}
+
+proc WSASetSocketSecurity*(
+  Socket: SOCKET,
+  SecuritySettings: ptr SOCKET_SECURITY_SETTINGS,
+  SecuritySettingsLen: ULONG,
+  Overlapped: LPWSAOVERLAPPED,
+  CompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+): int32 {.winapi, stdcall, dynlib: "fwpuclnt", importc.}
+
+proc InetNtopW*(
+  Family: INT, pAddr: PVOID, pStringBuf: LPWSTR, StringBufSIze: int
+): LPCWSTR {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc inet_ntop*(
+  Family: INT, pAddr: PVOID, pStringBuf: LPSTR, StringBufSize: int
+): LPCSTR {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc InetPtonW*(
+  Family: INT, pStringBuf: LPCWSTR, pAddr: PVOID
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc inet_pton*(
+  Family: INT, pStringBuf: LPCSTR, pAddr: PVOID
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc.}
+
+proc WSARecvEx*(
+  s: SOCKET, buf: ptr char, len: int32, flags: ptr int32
+): int32 {.winapi, stdcall, dynlib: "mswsock", importc.}
+
+proc TransmitFile*(
+  hSocket: SOCKET,
+  hFile: HANDLE,
+  nNumberOfBytesToWrite: DWORD,
+  nNumberOfBytesPerSend: DWORD,
+  lpOverlapped: LPOVERLAPPED,
+  lpTransmitBuffers: LPTRANSMIT_FILE_BUFFERS,
+  dwReserved: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "mswsock", importc.}
+
+proc AcceptEx*(
+  sListenSocket: SOCKET,
+  sAcceptSocket: SOCKET,
+  lpOutputBuffer: PVOID,
+  dwReceiveDataLength: DWORD,
+  dwLocalAddressLength: DWORD,
+  dwRemoteAddressLength: DWORD,
+  lpdwBytesReceived: LPDWORD,
+  lpOverlapped: LPOVERLAPPED,
+): WINBOOL {.winapi, stdcall, dynlib: "mswsock", importc.}
+
+proc GetAcceptExSockaddrs*(
+  lpOutputBuffer: PVOID,
+  dwReceiveDataLength: DWORD,
+  dwLocalAddressLength: DWORD,
+  dwRemoteAddressLength: DWORD,
+  LocalSockaddr: ptr ptr sockaddr,
+  LocalSockaddrLength: LPINT,
+  RemoteSockaddr: ptr ptr sockaddr,
+  RemoteSockaddrLength: LPINT,
+): VOID {.winapi, stdcall, dynlib: "mswsock", importc.}
+
+proc InetNtopA*(
+  Family: INT, pAddr: PVOID, pStringBuf: LPSTR, StringBufSize: int
+): LPCSTR {.winapi, stdcall, dynlib: "ws2_32", importc: "inet_ntop".}
+
+proc InetPtonA*(
+  Family: INT, pStringBuf: LPCSTR, pAddr: PVOID
+): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "inet_pton".}
+
+template `<`*(x: TIMEVAL, y: TIMEVAL): bool =
+  (x.tv_sec < y.tv_sec or (x.tv_sec == y.tv_sec and x.tv_usec < y.tv_usec))
+
+template `<=`*(x: TIMEVAL, y: TIMEVAL): bool =
+  (x.tv_sec < y.tv_sec or (x.tv_sec == y.tv_sec and x.tv_usec <= y.tv_usec))
+
+template timerisset*(tvp: TIMEVAL): bool =
+  tvp.tv_sec != 0 or tvp.tv_usec != 0
+
+template timerclear*(tvp: var TIMEVAL) =
+  tvp.tv_sec = 0
+  tvp.tv_usec = 0
+
+template IN_CLASSA*(i: untyped): bool =
+  (i and 0x80000000) == 0
+
+template IN_CLASSB*(i: untyped): bool =
+  (i and 0xc0000000) == 0x80000000
+
+template IN_CLASSC*(i: untyped): bool =
+  (i and 0xe0000000) == 0xc0000000
+
+template IN_CLASSD*(i: untyped): bool =
+  (i and 0xf0000000) == 0xe0000000
+
+template IN_MULTICAST*(i: untyped): bool =
+  IN_CLASSD(i)
+
+template WSAMAKEASYNCREPLY*(buflen: untyped, error: untyped): untyped =
+  MAKELONG(buflen, error)
+
+template WSAMAKESELECTREPLY*(event: untyped, error: untyped): untyped =
+  MAKELONG(event, error)
+
+template WSAGETASYNCBUFLEN*(lParam: untyped): untyped =
+  LOWORD(lParam)
+
+template WSAGETASYNCERROR*(lParam: untyped): untyped =
+  HIWORD(lParam)
+
+template WSAGETSELECTEVENT*(lParam: untyped): untyped =
+  LOWORD(lParam)
+
+template WSAGETSELECTERROR*(lParam: untyped): untyped =
+  HIWORD(lParam)
+
+proc FD_CLR*(
+  fd: SOCKET, s: ptr fd_set
+): void {.importc: "FD_CLR", header: "<winsock2.h>".}
+
+proc FD_SET*(
+  fd: SOCKET, s: ptr fd_set
+): void {.importc: "FD_SET", header: "<winsock2.h>".}
+
 proc FD_ZERO*(s: ptr fd_set): void {.importc: "FD_ZERO", header: "<winsock2.h>".}
-proc FD_ISSET*(fd: SOCKET, s: ptr fd_set): bool {.winapi, inline.} = bool WSAFDIsSet(fd, s)
-proc IN6_ADDR_EQUAL*(a: ptr IN6_ADDR, b: ptr IN6_ADDR): bool {.winapi, inline.} = equalMem(a, b, sizeof(IN6_ADDR))
-proc FreeAddrInfoExA*(pAddrInfo: PADDRINFOEXA): void {.winapi, stdcall, dynlib: "ws2_32", importc: "FreeAddrInfoEx".}
-proc `Zone=`*(self: var SCOPE_ID, x: ULONG) {.inline.} = self.union1.struct1.Zone = x
-proc Zone*(self: SCOPE_ID): ULONG {.inline.} = self.union1.struct1.Zone
-proc `Level=`*(self: var SCOPE_ID, x: ULONG) {.inline.} = self.union1.struct1.Level = x
-proc Level*(self: SCOPE_ID): ULONG {.inline.} = self.union1.struct1.Level
-proc `Value=`*(self: var SCOPE_ID, x: ULONG) {.inline.} = self.union1.Value = x
-proc Value*(self: SCOPE_ID): ULONG {.inline.} = self.union1.Value
-proc Value*(self: var SCOPE_ID): var ULONG {.inline.} = self.union1.Value
-proc `sin6_scope_id=`*(self: var sockaddr_in6, x: int32) {.inline.} = self.union1.sin6_scope_id = x
-proc sin6_scope_id*(self: sockaddr_in6): int32 {.inline.} = self.union1.sin6_scope_id
-proc sin6_scope_id*(self: var sockaddr_in6): var int32 {.inline.} = self.union1.sin6_scope_id
-proc `sin6_scope_struct=`*(self: var sockaddr_in6, x: SCOPE_ID) {.inline.} = self.union1.sin6_scope_struct = x
-proc sin6_scope_struct*(self: sockaddr_in6): SCOPE_ID {.inline.} = self.union1.sin6_scope_struct
-proc sin6_scope_struct*(self: var sockaddr_in6): var SCOPE_ID {.inline.} = self.union1.sin6_scope_struct
-proc `nFileOffset=`*(self: var TRANSMIT_PACKETS_ELEMENT, x: LARGE_INTEGER) {.inline.} = self.union1.struct1.nFileOffset = x
-proc nFileOffset*(self: TRANSMIT_PACKETS_ELEMENT): LARGE_INTEGER {.inline.} = self.union1.struct1.nFileOffset
-proc nFileOffset*(self: var TRANSMIT_PACKETS_ELEMENT): var LARGE_INTEGER {.inline.} = self.union1.struct1.nFileOffset
-proc `hFile=`*(self: var TRANSMIT_PACKETS_ELEMENT, x: HANDLE) {.inline.} = self.union1.struct1.hFile = x
-proc hFile*(self: TRANSMIT_PACKETS_ELEMENT): HANDLE {.inline.} = self.union1.struct1.hFile
-proc hFile*(self: var TRANSMIT_PACKETS_ELEMENT): var HANDLE {.inline.} = self.union1.struct1.hFile
-proc `pBuffer=`*(self: var TRANSMIT_PACKETS_ELEMENT, x: PVOID) {.inline.} = self.union1.pBuffer = x
-proc pBuffer*(self: TRANSMIT_PACKETS_ELEMENT): PVOID {.inline.} = self.union1.pBuffer
-proc pBuffer*(self: var TRANSMIT_PACKETS_ELEMENT): var PVOID {.inline.} = self.union1.pBuffer
+proc FD_ISSET*(fd: SOCKET, s: ptr fd_set): bool {.winapi, inline.} =
+  bool WSAFDIsSet(fd, s)
+
+proc IN6_ADDR_EQUAL*(a: ptr IN6_ADDR, b: ptr IN6_ADDR): bool {.winapi, inline.} =
+  equalMem(a, b, sizeof(IN6_ADDR))
+
+proc FreeAddrInfoExA*(
+  pAddrInfo: PADDRINFOEXA
+): void {.winapi, stdcall, dynlib: "ws2_32", importc: "FreeAddrInfoEx".}
+
+proc `Zone=`*(self: var SCOPE_ID, x: ULONG) {.inline.} =
+  self.union1.struct1.Zone = x
+
+proc Zone*(self: SCOPE_ID): ULONG {.inline.} =
+  self.union1.struct1.Zone
+
+proc `Level=`*(self: var SCOPE_ID, x: ULONG) {.inline.} =
+  self.union1.struct1.Level = x
+
+proc Level*(self: SCOPE_ID): ULONG {.inline.} =
+  self.union1.struct1.Level
+
+proc `Value=`*(self: var SCOPE_ID, x: ULONG) {.inline.} =
+  self.union1.Value = x
+
+proc Value*(self: SCOPE_ID): ULONG {.inline.} =
+  self.union1.Value
+
+proc Value*(self: var SCOPE_ID): var ULONG {.inline.} =
+  self.union1.Value
+
+proc `sin6_scope_id=`*(self: var sockaddr_in6, x: int32) {.inline.} =
+  self.union1.sin6_scope_id = x
+
+proc sin6_scope_id*(self: sockaddr_in6): int32 {.inline.} =
+  self.union1.sin6_scope_id
+
+proc sin6_scope_id*(self: var sockaddr_in6): var int32 {.inline.} =
+  self.union1.sin6_scope_id
+
+proc `sin6_scope_struct=`*(self: var sockaddr_in6, x: SCOPE_ID) {.inline.} =
+  self.union1.sin6_scope_struct = x
+
+proc sin6_scope_struct*(self: sockaddr_in6): SCOPE_ID {.inline.} =
+  self.union1.sin6_scope_struct
+
+proc sin6_scope_struct*(self: var sockaddr_in6): var SCOPE_ID {.inline.} =
+  self.union1.sin6_scope_struct
+
+proc `nFileOffset=`*(self: var TRANSMIT_PACKETS_ELEMENT, x: LARGE_INTEGER) {.inline.} =
+  self.union1.struct1.nFileOffset = x
+
+proc nFileOffset*(self: TRANSMIT_PACKETS_ELEMENT): LARGE_INTEGER {.inline.} =
+  self.union1.struct1.nFileOffset
+
+proc nFileOffset*(self: var TRANSMIT_PACKETS_ELEMENT): var LARGE_INTEGER {.inline.} =
+  self.union1.struct1.nFileOffset
+
+proc `hFile=`*(self: var TRANSMIT_PACKETS_ELEMENT, x: HANDLE) {.inline.} =
+  self.union1.struct1.hFile = x
+
+proc hFile*(self: TRANSMIT_PACKETS_ELEMENT): HANDLE {.inline.} =
+  self.union1.struct1.hFile
+
+proc hFile*(self: var TRANSMIT_PACKETS_ELEMENT): var HANDLE {.inline.} =
+  self.union1.struct1.hFile
+
+proc `pBuffer=`*(self: var TRANSMIT_PACKETS_ELEMENT, x: PVOID) {.inline.} =
+  self.union1.pBuffer = x
+
+proc pBuffer*(self: TRANSMIT_PACKETS_ELEMENT): PVOID {.inline.} =
+  self.union1.pBuffer
+
+proc pBuffer*(self: var TRANSMIT_PACKETS_ELEMENT): var PVOID {.inline.} =
+  self.union1.pBuffer
+
 when winimUnicode:
   type
     WSAPROTOCOL_INFO* = WSAPROTOCOL_INFOW
@@ -1683,41 +2923,196 @@
     LPFN_GETADDRINFOEX* = LPFN_GETADDRINFOEXW
     LPFN_SETADDRINFOEX* = LPFN_SETADDRINFOEXW
     LPFN_FREEADDRINFOEX* = LPFN_FREEADDRINFOEXW
+
   const
     SO_PROTOCOL_INFO* = SO_PROTOCOL_INFOW
     SERVICE_TYPE_VALUE_SAPID* = SERVICE_TYPE_VALUE_SAPIDW
     SERVICE_TYPE_VALUE_TCPPORT* = SERVICE_TYPE_VALUE_TCPPORTW
     SERVICE_TYPE_VALUE_UDPPORT* = SERVICE_TYPE_VALUE_UDPPORTW
     SERVICE_TYPE_VALUE_OBJECTID* = SERVICE_TYPE_VALUE_OBJECTIDW
-  proc WSADuplicateSocket*(s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOW): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "WSADuplicateSocketW".}
-  proc WSAEnumProtocols*(lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOW, lpdwBufferLength: LPDWORD): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAEnumProtocolsW".}
-  proc WSAAddressToString*(lpsaAddress: LPSOCKADDR, dwAddressLength: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOW, lpszAddressString: LPWSTR, lpdwAddressStringLength: LPDWORD): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAAddressToStringW".}
-  proc WSASocket*(af: int32, `type`: int32, protocol: int32, lpProtocolInfo: LPWSAPROTOCOL_INFOW, g: GROUP, dwFlags: DWORD): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc: "WSASocketW".}
-  proc WSAStringToAddress*(AddressString: LPWSTR, AddressFamily: INT, lpProtocolInfo: LPWSAPROTOCOL_INFOW, lpAddress: LPSOCKADDR, lpAddressLength: LPINT): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAStringToAddressW".}
-  proc WSALookupServiceBegin*(lpqsRestrictions: LPWSAQUERYSETW, dwControlFlags: DWORD, lphLookup: LPHANDLE): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSALookupServiceBeginW".}
-  proc WSALookupServiceNext*(hLookup: HANDLE, dwControlFlags: DWORD, lpdwBufferLength: LPDWORD, lpqsResults: LPWSAQUERYSETW): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSALookupServiceNextW".}
-  proc WSAInstallServiceClass*(lpServiceClassInfo: LPWSASERVICECLASSINFOW): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAInstallServiceClassW".}
-  proc WSAGetServiceClassInfo*(lpProviderId: LPGUID, lpServiceClassId: LPGUID, lpdwBufSize: LPDWORD, lpServiceClassInfo: LPWSASERVICECLASSINFOW): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAGetServiceClassInfoW".}
-  proc WSAEnumNameSpaceProviders*(lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOW): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAEnumNameSpaceProvidersW".}
-  proc WSAGetServiceClassNameByClassId*(lpServiceClassId: LPGUID, lpszServiceClassName: LPWSTR, lpdwBufferLength: LPDWORD): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAGetServiceClassNameByClassIdW".}
-  proc WSASetService*(lpqsRegInfo: LPWSAQUERYSETW, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSASetServiceW".}
-  proc WSAConnectByName*(s: SOCKET, nodename: LPWSTR, servicename: LPWSTR, LocalAddressLength: LPDWORD, LocalAddress: LPSOCKADDR, RemoteAddressLength: LPDWORD, RemoteAddress: LPSOCKADDR, timeout: PTIMEVAL, Reserved: LPWSAOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAConnectByNameW".}
-  proc WSAEnumNameSpaceProvidersEx*(lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOEXW): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAEnumNameSpaceProvidersExW".}
-  proc GetAddrInfo*(pNodeName: PCWSTR, pServiceName: PCWSTR, pHints: ptr ADDRINFOW, ppResult: ptr PADDRINFOW): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "GetAddrInfoW".}
-  proc FreeAddrInfo*(pAddrInfo: PADDRINFOW): void {.winapi, stdcall, dynlib: "ws2_32", importc: "FreeAddrInfoW".}
-  proc GetNameInfo*(pSockaddr: ptr SOCKADDR, SockaddrLength: socklen_t, pNodeBuffer: PWCHAR, NodeBufferSize: DWORD, pServiceBuffer: PWCHAR, ServiceBufferSize: DWORD, Flags: INT): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "GetNameInfoW".}
-  proc RtlIpv6AddressToString*(Addr: ptr IN6_ADDR, S: LPWSTR): LPWSTR {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv6AddressToStringW".}
-  proc RtlIpv6AddressToStringEx*(Address: ptr IN6_ADDR, ScopeId: ULONG, Port: USHORT, AddressString: LPWSTR, AddressStringLength: PULONG): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv6AddressToStringExW".}
-  proc RtlIpv4AddressToString*(Addr: ptr IN_ADDR, S: LPWSTR): LPWSTR {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4AddressToStringW".}
-  proc RtlIpv4AddressToStringEx*(Address: ptr IN_ADDR, Port: USHORT, AddressString: LPWSTR, AddressStringLength: PULONG): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4AddressToStringExW".}
-  proc RtlIpv4StringToAddress*(S: PCWSTR, Strict: BOOLEAN, Terminator: ptr LPWSTR, Addr: ptr IN_ADDR): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4StringToAddressW".}
-  proc RtlIpv4StringToAddressEx*(AddressString: PCWSTR, Strict: BOOLEAN, Address: ptr IN_ADDR, Port: PUSHORT): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4StringToAddressExW".}
-  proc RtlIpv6StringToAddressEx*(AddressString: PCWSTR, Address: ptr IN6_ADDR, ScopeId: PULONG, Port: PUSHORT): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv6StringToAddressExW".}
-  proc GetAddrInfoEx*(pName: PCWSTR, pServiceName: PCWSTR, dwNameSpace: DWORD, lpNspId: LPGUID, pHints: ptr ADDRINFOEXW, ppResult: ptr PADDRINFOEXW, timeout: PTIMEVAL, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "GetAddrInfoExW".}
-  proc SetAddrInfoEx*(pName: PCWSTR, pServiceName: PCWSTR, pAddresses: ptr SOCKET_ADDRESS, dwAddressCount: DWORD, lpBlob: LPBLOB, dwFlags: DWORD, dwNameSpace: DWORD, lpNspId: LPGUID, timeout: PTIMEVAL, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "SetAddrInfoExW".}
-  proc FreeAddrInfoEx*(pAddrInfo: PADDRINFOEXW): void {.winapi, stdcall, dynlib: "ws2_32", importc: "FreeAddrInfoExW".}
-  proc InetNtop*(Family: INT, pAddr: PVOID, pStringBuf: LPWSTR, StringBufSIze: int): LPCWSTR {.winapi, stdcall, dynlib: "ws2_32", importc: "InetNtopW".}
-  proc InetPton*(Family: INT, pStringBuf: LPCWSTR, pAddr: PVOID): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "InetPtonW".}
+  proc WSADuplicateSocket*(
+    s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOW
+  ): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "WSADuplicateSocketW".}
+
+  proc WSAEnumProtocols*(
+    lpiProtocols: LPINT,
+    lpProtocolBuffer: LPWSAPROTOCOL_INFOW,
+    lpdwBufferLength: LPDWORD,
+  ): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAEnumProtocolsW".}
+
+  proc WSAAddressToString*(
+    lpsaAddress: LPSOCKADDR,
+    dwAddressLength: DWORD,
+    lpProtocolInfo: LPWSAPROTOCOL_INFOW,
+    lpszAddressString: LPWSTR,
+    lpdwAddressStringLength: LPDWORD,
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAAddressToStringW".}
+
+  proc WSASocket*(
+    af: int32,
+    `type`: int32,
+    protocol: int32,
+    lpProtocolInfo: LPWSAPROTOCOL_INFOW,
+    g: GROUP,
+    dwFlags: DWORD,
+  ): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc: "WSASocketW".}
+
+  proc WSAStringToAddress*(
+    AddressString: LPWSTR,
+    AddressFamily: INT,
+    lpProtocolInfo: LPWSAPROTOCOL_INFOW,
+    lpAddress: LPSOCKADDR,
+    lpAddressLength: LPINT,
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAStringToAddressW".}
+
+  proc WSALookupServiceBegin*(
+    lpqsRestrictions: LPWSAQUERYSETW, dwControlFlags: DWORD, lphLookup: LPHANDLE
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSALookupServiceBeginW".}
+
+  proc WSALookupServiceNext*(
+    hLookup: HANDLE,
+    dwControlFlags: DWORD,
+    lpdwBufferLength: LPDWORD,
+    lpqsResults: LPWSAQUERYSETW,
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSALookupServiceNextW".}
+
+  proc WSAInstallServiceClass*(
+    lpServiceClassInfo: LPWSASERVICECLASSINFOW
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAInstallServiceClassW".}
+
+  proc WSAGetServiceClassInfo*(
+    lpProviderId: LPGUID,
+    lpServiceClassId: LPGUID,
+    lpdwBufSize: LPDWORD,
+    lpServiceClassInfo: LPWSASERVICECLASSINFOW,
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAGetServiceClassInfoW".}
+
+  proc WSAEnumNameSpaceProviders*(
+    lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOW
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAEnumNameSpaceProvidersW".}
+
+  proc WSAGetServiceClassNameByClassId*(
+    lpServiceClassId: LPGUID, lpszServiceClassName: LPWSTR, lpdwBufferLength: LPDWORD
+  ): INT {.
+    winapi, stdcall, dynlib: "ws2_32", importc: "WSAGetServiceClassNameByClassIdW"
+  .}
+
+  proc WSASetService*(
+    lpqsRegInfo: LPWSAQUERYSETW, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSASetServiceW".}
+
+  proc WSAConnectByName*(
+    s: SOCKET,
+    nodename: LPWSTR,
+    servicename: LPWSTR,
+    LocalAddressLength: LPDWORD,
+    LocalAddress: LPSOCKADDR,
+    RemoteAddressLength: LPDWORD,
+    RemoteAddress: LPSOCKADDR,
+    timeout: PTIMEVAL,
+    Reserved: LPWSAOVERLAPPED,
+  ): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAConnectByNameW".}
+
+  proc WSAEnumNameSpaceProvidersEx*(
+    lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOEXW
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAEnumNameSpaceProvidersExW".}
+
+  proc GetAddrInfo*(
+    pNodeName: PCWSTR,
+    pServiceName: PCWSTR,
+    pHints: ptr ADDRINFOW,
+    ppResult: ptr PADDRINFOW,
+  ): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "GetAddrInfoW".}
+
+  proc FreeAddrInfo*(
+    pAddrInfo: PADDRINFOW
+  ): void {.winapi, stdcall, dynlib: "ws2_32", importc: "FreeAddrInfoW".}
+
+  proc GetNameInfo*(
+    pSockaddr: ptr SOCKADDR,
+    SockaddrLength: socklen_t,
+    pNodeBuffer: PWCHAR,
+    NodeBufferSize: DWORD,
+    pServiceBuffer: PWCHAR,
+    ServiceBufferSize: DWORD,
+    Flags: INT,
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "GetNameInfoW".}
+
+  proc RtlIpv6AddressToString*(
+    Addr: ptr IN6_ADDR, S: LPWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv6AddressToStringW".}
+
+  proc RtlIpv6AddressToStringEx*(
+    Address: ptr IN6_ADDR,
+    ScopeId: ULONG,
+    Port: USHORT,
+    AddressString: LPWSTR,
+    AddressStringLength: PULONG,
+  ): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv6AddressToStringExW".}
+
+  proc RtlIpv4AddressToString*(
+    Addr: ptr IN_ADDR, S: LPWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4AddressToStringW".}
+
+  proc RtlIpv4AddressToStringEx*(
+    Address: ptr IN_ADDR,
+    Port: USHORT,
+    AddressString: LPWSTR,
+    AddressStringLength: PULONG,
+  ): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4AddressToStringExW".}
+
+  proc RtlIpv4StringToAddress*(
+    S: PCWSTR, Strict: BOOLEAN, Terminator: ptr LPWSTR, Addr: ptr IN_ADDR
+  ): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4StringToAddressW".}
+
+  proc RtlIpv4StringToAddressEx*(
+    AddressString: PCWSTR, Strict: BOOLEAN, Address: ptr IN_ADDR, Port: PUSHORT
+  ): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4StringToAddressExW".}
+
+  proc RtlIpv6StringToAddressEx*(
+    AddressString: PCWSTR, Address: ptr IN6_ADDR, ScopeId: PULONG, Port: PUSHORT
+  ): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv6StringToAddressExW".}
+
+  proc GetAddrInfoEx*(
+    pName: PCWSTR,
+    pServiceName: PCWSTR,
+    dwNameSpace: DWORD,
+    lpNspId: LPGUID,
+    pHints: ptr ADDRINFOEXW,
+    ppResult: ptr PADDRINFOEXW,
+    timeout: PTIMEVAL,
+    lpOverlapped: LPOVERLAPPED,
+    lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
+    lpNameHandle: LPHANDLE,
+  ): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "GetAddrInfoExW".}
+
+  proc SetAddrInfoEx*(
+    pName: PCWSTR,
+    pServiceName: PCWSTR,
+    pAddresses: ptr SOCKET_ADDRESS,
+    dwAddressCount: DWORD,
+    lpBlob: LPBLOB,
+    dwFlags: DWORD,
+    dwNameSpace: DWORD,
+    lpNspId: LPGUID,
+    timeout: PTIMEVAL,
+    lpOverlapped: LPOVERLAPPED,
+    lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
+    lpNameHandle: LPHANDLE,
+  ): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "SetAddrInfoExW".}
+
+  proc FreeAddrInfoEx*(
+    pAddrInfo: PADDRINFOEXW
+  ): void {.winapi, stdcall, dynlib: "ws2_32", importc: "FreeAddrInfoExW".}
+
+  proc InetNtop*(
+    Family: INT, pAddr: PVOID, pStringBuf: LPWSTR, StringBufSIze: int
+  ): LPCWSTR {.winapi, stdcall, dynlib: "ws2_32", importc: "InetNtopW".}
+
+  proc InetPton*(
+    Family: INT, pStringBuf: LPCWSTR, pAddr: PVOID
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "InetPtonW".}
+
 when winimAnsi:
   type
     WSAPROTOCOL_INFO* = WSAPROTOCOL_INFOA
@@ -1757,38 +3152,189 @@
     LPFN_GETADDRINFOEX* = LPFN_GETADDRINFOEXA
     LPFN_SETADDRINFOEX* = LPFN_SETADDRINFOEXA
     LPFN_FREEADDRINFOEX* = LPFN_FREEADDRINFOEXA
+
   const
     SO_PROTOCOL_INFO* = SO_PROTOCOL_INFOA
     SERVICE_TYPE_VALUE_SAPID* = SERVICE_TYPE_VALUE_SAPIDA
     SERVICE_TYPE_VALUE_TCPPORT* = SERVICE_TYPE_VALUE_TCPPORTA
     SERVICE_TYPE_VALUE_UDPPORT* = SERVICE_TYPE_VALUE_UDPPORTA
     SERVICE_TYPE_VALUE_OBJECTID* = SERVICE_TYPE_VALUE_OBJECTIDA
-  proc WSADuplicateSocket*(s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOA): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "WSADuplicateSocketA".}
-  proc WSAEnumProtocols*(lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOA, lpdwBufferLength: LPDWORD): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAEnumProtocolsA".}
-  proc WSAAddressToString*(lpsaAddress: LPSOCKADDR, dwAddressLength: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOA, lpszAddressString: LPSTR, lpdwAddressStringLength: LPDWORD): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAAddressToStringA".}
-  proc WSASocket*(af: int32, `type`: int32, protocol: int32, lpProtocolInfo: LPWSAPROTOCOL_INFOA, g: GROUP, dwFlags: DWORD): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc: "WSASocketA".}
-  proc WSAStringToAddress*(AddressString: LPSTR, AddressFamily: INT, lpProtocolInfo: LPWSAPROTOCOL_INFOA, lpAddress: LPSOCKADDR, lpAddressLength: LPINT): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAStringToAddressA".}
-  proc WSALookupServiceBegin*(lpqsRestrictions: LPWSAQUERYSETA, dwControlFlags: DWORD, lphLookup: LPHANDLE): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSALookupServiceBeginA".}
-  proc WSALookupServiceNext*(hLookup: HANDLE, dwControlFlags: DWORD, lpdwBufferLength: LPDWORD, lpqsResults: LPWSAQUERYSETA): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSALookupServiceNextA".}
-  proc WSAInstallServiceClass*(lpServiceClassInfo: LPWSASERVICECLASSINFOA): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAInstallServiceClassA".}
-  proc WSAGetServiceClassInfo*(lpProviderId: LPGUID, lpServiceClassId: LPGUID, lpdwBufSize: LPDWORD, lpServiceClassInfo: LPWSASERVICECLASSINFOA): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAGetServiceClassInfoA".}
-  proc WSAEnumNameSpaceProviders*(lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOA): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAEnumNameSpaceProvidersA".}
-  proc WSAGetServiceClassNameByClassId*(lpServiceClassId: LPGUID, lpszServiceClassName: LPSTR, lpdwBufferLength: LPDWORD): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAGetServiceClassNameByClassIdA".}
-  proc WSASetService*(lpqsRegInfo: LPWSAQUERYSETA, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSASetServiceA".}
-  proc WSAConnectByName*(s: SOCKET, nodename: LPSTR, servicename: LPSTR, LocalAddressLength: LPDWORD, LocalAddress: LPSOCKADDR, RemoteAddressLength: LPDWORD, RemoteAddress: LPSOCKADDR, timeout: PTIMEVAL, Reserved: LPWSAOVERLAPPED): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAConnectByNameA".}
-  proc WSAEnumNameSpaceProvidersEx*(lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOEXA): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAEnumNameSpaceProvidersExA".}
-  proc GetAddrInfo*(nodename: ptr char, servname: ptr char, hints: ptr ADDRINFOA, res: ptr ptr ADDRINFOA): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "getaddrinfo".}
-  proc FreeAddrInfo*(pAddrInfo: LPADDRINFO): void {.winapi, stdcall, dynlib: "ws2_32", importc: "freeaddrinfo".}
-  proc GetNameInfo*(sa: ptr sockaddr, salen: socklen_t, host: ptr char, hostlen: DWORD, serv: ptr char, servlen: DWORD, flags: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "getnameinfo".}
-  proc RtlIpv6AddressToString*(Addr: ptr IN6_ADDR, S: LPSTR): LPSTR {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv6AddressToStringA".}
-  proc RtlIpv6AddressToStringEx*(Address: ptr IN6_ADDR, ScopeId: ULONG, Port: USHORT, AddressString: LPSTR, AddressStringLength: PULONG): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv6AddressToStringExA".}
-  proc RtlIpv4AddressToString*(Addr: ptr IN_ADDR, S: LPSTR): LPSTR {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4AddressToStringA".}
-  proc RtlIpv4AddressToStringEx*(Address: ptr IN_ADDR, Port: USHORT, AddressString: LPSTR, AddressStringLength: PULONG): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4AddressToStringExA".}
-  proc RtlIpv4StringToAddress*(S: PCSTR, Strict: BOOLEAN, Terminator: ptr LPSTR, Addr: ptr IN_ADDR): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4StringToAddressA".}
-  proc RtlIpv4StringToAddressEx*(AddressString: PCSTR, Strict: BOOLEAN, Address: ptr IN_ADDR, Port: PUSHORT): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4StringToAddressExA".}
-  proc RtlIpv6StringToAddressEx*(AddressString: PCSTR, Address: ptr IN6_ADDR, ScopeId: PULONG, Port: PUSHORT): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv6StringToAddressExA".}
-  proc GetAddrInfoEx*(pName: PCSTR, pServiceName: PCSTR, dwNameSpace: DWORD, lpNspId: LPGUID, pHints: ptr ADDRINFOEXA, ppResult: ptr PADDRINFOEXA, timeout: PTIMEVAL, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "GetAddrInfoExA".}
-  proc SetAddrInfoEx*(pName: PCSTR, pServiceName: PCSTR, pAddresses: ptr SOCKET_ADDRESS, dwAddressCount: DWORD, lpBlob: LPBLOB, dwFlags: DWORD, dwNameSpace: DWORD, lpNspId: LPGUID, timeout: PTIMEVAL, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "SetAddrInfoExA".}
-  proc InetNtop*(Family: INT, pAddr: PVOID, pStringBuf: LPSTR, StringBufSize: int): LPCSTR {.winapi, stdcall, dynlib: "ws2_32", importc: "inet_ntop".}
-  proc InetPton*(Family: INT, pStringBuf: LPCSTR, pAddr: PVOID): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "inet_pton".}
-  proc FreeAddrInfoEx*(pAddrInfo: PADDRINFOEXA): void {.winapi, stdcall, dynlib: "ws2_32", importc.}
+  proc WSADuplicateSocket*(
+    s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOA
+  ): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "WSADuplicateSocketA".}
+
+  proc WSAEnumProtocols*(
+    lpiProtocols: LPINT,
+    lpProtocolBuffer: LPWSAPROTOCOL_INFOA,
+    lpdwBufferLength: LPDWORD,
+  ): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAEnumProtocolsA".}
+
+  proc WSAAddressToString*(
+    lpsaAddress: LPSOCKADDR,
+    dwAddressLength: DWORD,
+    lpProtocolInfo: LPWSAPROTOCOL_INFOA,
+    lpszAddressString: LPSTR,
+    lpdwAddressStringLength: LPDWORD,
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAAddressToStringA".}
+
+  proc WSASocket*(
+    af: int32,
+    `type`: int32,
+    protocol: int32,
+    lpProtocolInfo: LPWSAPROTOCOL_INFOA,
+    g: GROUP,
+    dwFlags: DWORD,
+  ): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc: "WSASocketA".}
+
+  proc WSAStringToAddress*(
+    AddressString: LPSTR,
+    AddressFamily: INT,
+    lpProtocolInfo: LPWSAPROTOCOL_INFOA,
+    lpAddress: LPSOCKADDR,
+    lpAddressLength: LPINT,
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAStringToAddressA".}
+
+  proc WSALookupServiceBegin*(
+    lpqsRestrictions: LPWSAQUERYSETA, dwControlFlags: DWORD, lphLookup: LPHANDLE
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSALookupServiceBeginA".}
+
+  proc WSALookupServiceNext*(
+    hLookup: HANDLE,
+    dwControlFlags: DWORD,
+    lpdwBufferLength: LPDWORD,
+    lpqsResults: LPWSAQUERYSETA,
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSALookupServiceNextA".}
+
+  proc WSAInstallServiceClass*(
+    lpServiceClassInfo: LPWSASERVICECLASSINFOA
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAInstallServiceClassA".}
+
+  proc WSAGetServiceClassInfo*(
+    lpProviderId: LPGUID,
+    lpServiceClassId: LPGUID,
+    lpdwBufSize: LPDWORD,
+    lpServiceClassInfo: LPWSASERVICECLASSINFOA,
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAGetServiceClassInfoA".}
+
+  proc WSAEnumNameSpaceProviders*(
+    lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOA
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAEnumNameSpaceProvidersA".}
+
+  proc WSAGetServiceClassNameByClassId*(
+    lpServiceClassId: LPGUID, lpszServiceClassName: LPSTR, lpdwBufferLength: LPDWORD
+  ): INT {.
+    winapi, stdcall, dynlib: "ws2_32", importc: "WSAGetServiceClassNameByClassIdA"
+  .}
+
+  proc WSASetService*(
+    lpqsRegInfo: LPWSAQUERYSETA, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSASetServiceA".}
+
+  proc WSAConnectByName*(
+    s: SOCKET,
+    nodename: LPSTR,
+    servicename: LPSTR,
+    LocalAddressLength: LPDWORD,
+    LocalAddress: LPSOCKADDR,
+    RemoteAddressLength: LPDWORD,
+    RemoteAddress: LPSOCKADDR,
+    timeout: PTIMEVAL,
+    Reserved: LPWSAOVERLAPPED,
+  ): WINBOOL {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAConnectByNameA".}
+
+  proc WSAEnumNameSpaceProvidersEx*(
+    lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOEXA
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "WSAEnumNameSpaceProvidersExA".}
+
+  proc GetAddrInfo*(
+    nodename: ptr char, servname: ptr char, hints: ptr ADDRINFOA, res: ptr ptr ADDRINFOA
+  ): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "getaddrinfo".}
+
+  proc FreeAddrInfo*(
+    pAddrInfo: LPADDRINFO
+  ): void {.winapi, stdcall, dynlib: "ws2_32", importc: "freeaddrinfo".}
+
+  proc GetNameInfo*(
+    sa: ptr sockaddr,
+    salen: socklen_t,
+    host: ptr char,
+    hostlen: DWORD,
+    serv: ptr char,
+    servlen: DWORD,
+    flags: int32,
+  ): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "getnameinfo".}
+
+  proc RtlIpv6AddressToString*(
+    Addr: ptr IN6_ADDR, S: LPSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv6AddressToStringA".}
+
+  proc RtlIpv6AddressToStringEx*(
+    Address: ptr IN6_ADDR,
+    ScopeId: ULONG,
+    Port: USHORT,
+    AddressString: LPSTR,
+    AddressStringLength: PULONG,
+  ): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv6AddressToStringExA".}
+
+  proc RtlIpv4AddressToString*(
+    Addr: ptr IN_ADDR, S: LPSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4AddressToStringA".}
+
+  proc RtlIpv4AddressToStringEx*(
+    Address: ptr IN_ADDR,
+    Port: USHORT,
+    AddressString: LPSTR,
+    AddressStringLength: PULONG,
+  ): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4AddressToStringExA".}
+
+  proc RtlIpv4StringToAddress*(
+    S: PCSTR, Strict: BOOLEAN, Terminator: ptr LPSTR, Addr: ptr IN_ADDR
+  ): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4StringToAddressA".}
+
+  proc RtlIpv4StringToAddressEx*(
+    AddressString: PCSTR, Strict: BOOLEAN, Address: ptr IN_ADDR, Port: PUSHORT
+  ): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv4StringToAddressExA".}
+
+  proc RtlIpv6StringToAddressEx*(
+    AddressString: PCSTR, Address: ptr IN6_ADDR, ScopeId: PULONG, Port: PUSHORT
+  ): LONG {.winapi, stdcall, dynlib: "ntdll", importc: "RtlIpv6StringToAddressExA".}
+
+  proc GetAddrInfoEx*(
+    pName: PCSTR,
+    pServiceName: PCSTR,
+    dwNameSpace: DWORD,
+    lpNspId: LPGUID,
+    pHints: ptr ADDRINFOEXA,
+    ppResult: ptr PADDRINFOEXA,
+    timeout: PTIMEVAL,
+    lpOverlapped: LPOVERLAPPED,
+    lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
+    lpNameHandle: LPHANDLE,
+  ): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "GetAddrInfoExA".}
+
+  proc SetAddrInfoEx*(
+    pName: PCSTR,
+    pServiceName: PCSTR,
+    pAddresses: ptr SOCKET_ADDRESS,
+    dwAddressCount: DWORD,
+    lpBlob: LPBLOB,
+    dwFlags: DWORD,
+    dwNameSpace: DWORD,
+    lpNspId: LPGUID,
+    timeout: PTIMEVAL,
+    lpOverlapped: LPOVERLAPPED,
+    lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
+    lpNameHandle: LPHANDLE,
+  ): int32 {.winapi, stdcall, dynlib: "ws2_32", importc: "SetAddrInfoExA".}
+
+  proc InetNtop*(
+    Family: INT, pAddr: PVOID, pStringBuf: LPSTR, StringBufSize: int
+  ): LPCSTR {.winapi, stdcall, dynlib: "ws2_32", importc: "inet_ntop".}
+
+  proc InetPton*(
+    Family: INT, pStringBuf: LPCSTR, pAddr: PVOID
+  ): INT {.winapi, stdcall, dynlib: "ws2_32", importc: "inet_pton".}
+
+  proc FreeAddrInfoEx*(
+    pAddrInfo: PADDRINFOEXA
+  ): void {.winapi, stdcall, dynlib: "ws2_32", importc.}
--- a/semicongine/thirdparty/winim/winim/inc/winspool.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winspool.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -20,6 +20,7 @@
     pDescription*: LPSTR
     pName*: LPSTR
     pComment*: LPSTR
+
   PPRINTER_INFO_1A* = ptr PRINTER_INFO_1A
   LPPRINTER_INFO_1A* = ptr PRINTER_INFO_1A
   PRINTER_INFO_1W* {.pure.} = object
@@ -27,6 +28,7 @@
     pDescription*: LPWSTR
     pName*: LPWSTR
     pComment*: LPWSTR
+
   PPRINTER_INFO_1W* = ptr PRINTER_INFO_1W
   LPPRINTER_INFO_1W* = ptr PRINTER_INFO_1W
   PRINTER_INFO_2A* {.pure.} = object
@@ -51,6 +53,7 @@
     Status*: DWORD
     cJobs*: DWORD
     AveragePPM*: DWORD
+
   PPRINTER_INFO_2A* = ptr PRINTER_INFO_2A
   LPPRINTER_INFO_2A* = ptr PRINTER_INFO_2A
   PRINTER_INFO_2W* {.pure.} = object
@@ -75,22 +78,26 @@
     Status*: DWORD
     cJobs*: DWORD
     AveragePPM*: DWORD
+
   PPRINTER_INFO_2W* = ptr PRINTER_INFO_2W
   LPPRINTER_INFO_2W* = ptr PRINTER_INFO_2W
   PRINTER_INFO_3* {.pure.} = object
     pSecurityDescriptor*: PSECURITY_DESCRIPTOR
+
   PPRINTER_INFO_3* = ptr PRINTER_INFO_3
   LPPRINTER_INFO_3* = ptr PRINTER_INFO_3
   PRINTER_INFO_4A* {.pure.} = object
     pPrinterName*: LPSTR
     pServerName*: LPSTR
     Attributes*: DWORD
+
   PPRINTER_INFO_4A* = ptr PRINTER_INFO_4A
   LPPRINTER_INFO_4A* = ptr PRINTER_INFO_4A
   PRINTER_INFO_4W* {.pure.} = object
     pPrinterName*: LPWSTR
     pServerName*: LPWSTR
     Attributes*: DWORD
+
   PPRINTER_INFO_4W* = ptr PRINTER_INFO_4W
   LPPRINTER_INFO_4W* = ptr PRINTER_INFO_4W
   PRINTER_INFO_5A* {.pure.} = object
@@ -99,6 +106,7 @@
     Attributes*: DWORD
     DeviceNotSelectedTimeout*: DWORD
     TransmissionRetryTimeout*: DWORD
+
   PPRINTER_INFO_5A* = ptr PRINTER_INFO_5A
   LPPRINTER_INFO_5A* = ptr PRINTER_INFO_5A
   PRINTER_INFO_5W* {.pure.} = object
@@ -107,36 +115,44 @@
     Attributes*: DWORD
     DeviceNotSelectedTimeout*: DWORD
     TransmissionRetryTimeout*: DWORD
+
   PPRINTER_INFO_5W* = ptr PRINTER_INFO_5W
   LPPRINTER_INFO_5W* = ptr PRINTER_INFO_5W
   PRINTER_INFO_6* {.pure.} = object
     dwStatus*: DWORD
+
   PPRINTER_INFO_6* = ptr PRINTER_INFO_6
   LPPRINTER_INFO_6* = ptr PRINTER_INFO_6
   PRINTER_INFO_7A* {.pure.} = object
     pszObjectGUID*: LPSTR
     dwAction*: DWORD
+
   PPRINTER_INFO_7A* = ptr PRINTER_INFO_7A
   LPPRINTER_INFO_7A* = ptr PRINTER_INFO_7A
   PRINTER_INFO_7W* {.pure.} = object
     pszObjectGUID*: LPWSTR
     dwAction*: DWORD
+
   PPRINTER_INFO_7W* = ptr PRINTER_INFO_7W
   LPPRINTER_INFO_7W* = ptr PRINTER_INFO_7W
   PRINTER_INFO_8A* {.pure.} = object
     pDevMode*: LPDEVMODEA
+
   PPRINTER_INFO_8A* = ptr PRINTER_INFO_8A
   LPPRINTER_INFO_8A* = ptr PRINTER_INFO_8A
   PRINTER_INFO_8W* {.pure.} = object
     pDevMode*: LPDEVMODEW
+
   PPRINTER_INFO_8W* = ptr PRINTER_INFO_8W
   LPPRINTER_INFO_8W* = ptr PRINTER_INFO_8W
   PRINTER_INFO_9A* {.pure.} = object
     pDevMode*: LPDEVMODEA
+
   PPRINTER_INFO_9A* = ptr PRINTER_INFO_9A
   LPPRINTER_INFO_9A* = ptr PRINTER_INFO_9A
   PRINTER_INFO_9W* {.pure.} = object
     pDevMode*: LPDEVMODEW
+
   PPRINTER_INFO_9W* = ptr PRINTER_INFO_9W
   LPPRINTER_INFO_9W* = ptr PRINTER_INFO_9W
   JOB_INFO_1A* {.pure.} = object
@@ -153,6 +169,7 @@
     TotalPages*: DWORD
     PagesPrinted*: DWORD
     Submitted*: SYSTEMTIME
+
   PJOB_INFO_1A* = ptr JOB_INFO_1A
   LPJOB_INFO_1A* = ptr JOB_INFO_1A
   JOB_INFO_1W* {.pure.} = object
@@ -169,6 +186,7 @@
     TotalPages*: DWORD
     PagesPrinted*: DWORD
     Submitted*: SYSTEMTIME
+
   PJOB_INFO_1W* = ptr JOB_INFO_1W
   LPJOB_INFO_1W* = ptr JOB_INFO_1W
   JOB_INFO_2A* {.pure.} = object
@@ -195,6 +213,7 @@
     Submitted*: SYSTEMTIME
     Time*: DWORD
     PagesPrinted*: DWORD
+
   PJOB_INFO_2A* = ptr JOB_INFO_2A
   LPJOB_INFO_2A* = ptr JOB_INFO_2A
   JOB_INFO_2W* {.pure.} = object
@@ -221,30 +240,36 @@
     Submitted*: SYSTEMTIME
     Time*: DWORD
     PagesPrinted*: DWORD
+
   PJOB_INFO_2W* = ptr JOB_INFO_2W
   LPJOB_INFO_2W* = ptr JOB_INFO_2W
   JOB_INFO_3* {.pure.} = object
     JobId*: DWORD
     NextJobId*: DWORD
     Reserved*: DWORD
+
   PJOB_INFO_3* = ptr JOB_INFO_3
   LPJOB_INFO_3* = ptr JOB_INFO_3
   ADDJOB_INFO_1A* {.pure.} = object
     Path*: LPSTR
     JobId*: DWORD
+
   PADDJOB_INFO_1A* = ptr ADDJOB_INFO_1A
   LPADDJOB_INFO_1A* = ptr ADDJOB_INFO_1A
   ADDJOB_INFO_1W* {.pure.} = object
     Path*: LPWSTR
     JobId*: DWORD
+
   PADDJOB_INFO_1W* = ptr ADDJOB_INFO_1W
   LPADDJOB_INFO_1W* = ptr ADDJOB_INFO_1W
   DRIVER_INFO_1A* {.pure.} = object
     pName*: LPSTR
+
   PDRIVER_INFO_1A* = ptr DRIVER_INFO_1A
   LPDRIVER_INFO_1A* = ptr DRIVER_INFO_1A
   DRIVER_INFO_1W* {.pure.} = object
     pName*: LPWSTR
+
   PDRIVER_INFO_1W* = ptr DRIVER_INFO_1W
   LPDRIVER_INFO_1W* = ptr DRIVER_INFO_1W
   DRIVER_INFO_2A* {.pure.} = object
@@ -254,6 +279,7 @@
     pDriverPath*: LPSTR
     pDataFile*: LPSTR
     pConfigFile*: LPSTR
+
   PDRIVER_INFO_2A* = ptr DRIVER_INFO_2A
   LPDRIVER_INFO_2A* = ptr DRIVER_INFO_2A
   DRIVER_INFO_2W* {.pure.} = object
@@ -263,6 +289,7 @@
     pDriverPath*: LPWSTR
     pDataFile*: LPWSTR
     pConfigFile*: LPWSTR
+
   PDRIVER_INFO_2W* = ptr DRIVER_INFO_2W
   LPDRIVER_INFO_2W* = ptr DRIVER_INFO_2W
   DRIVER_INFO_3A* {.pure.} = object
@@ -276,6 +303,7 @@
     pDependentFiles*: LPSTR
     pMonitorName*: LPSTR
     pDefaultDataType*: LPSTR
+
   PDRIVER_INFO_3A* = ptr DRIVER_INFO_3A
   LPDRIVER_INFO_3A* = ptr DRIVER_INFO_3A
   DRIVER_INFO_3W* {.pure.} = object
@@ -289,6 +317,7 @@
     pDependentFiles*: LPWSTR
     pMonitorName*: LPWSTR
     pDefaultDataType*: LPWSTR
+
   PDRIVER_INFO_3W* = ptr DRIVER_INFO_3W
   LPDRIVER_INFO_3W* = ptr DRIVER_INFO_3W
   DRIVER_INFO_4A* {.pure.} = object
@@ -303,6 +332,7 @@
     pMonitorName*: LPSTR
     pDefaultDataType*: LPSTR
     pszzPreviousNames*: LPSTR
+
   PDRIVER_INFO_4A* = ptr DRIVER_INFO_4A
   LPDRIVER_INFO_4A* = ptr DRIVER_INFO_4A
   DRIVER_INFO_4W* {.pure.} = object
@@ -317,6 +347,7 @@
     pMonitorName*: LPWSTR
     pDefaultDataType*: LPWSTR
     pszzPreviousNames*: LPWSTR
+
   PDRIVER_INFO_4W* = ptr DRIVER_INFO_4W
   LPDRIVER_INFO_4W* = ptr DRIVER_INFO_4W
   DRIVER_INFO_5A* {.pure.} = object
@@ -329,6 +360,7 @@
     dwDriverAttributes*: DWORD
     dwConfigVersion*: DWORD
     dwDriverVersion*: DWORD
+
   PDRIVER_INFO_5A* = ptr DRIVER_INFO_5A
   LPDRIVER_INFO_5A* = ptr DRIVER_INFO_5A
   DRIVER_INFO_5W* {.pure.} = object
@@ -341,6 +373,7 @@
     dwDriverAttributes*: DWORD
     dwConfigVersion*: DWORD
     dwDriverVersion*: DWORD
+
   PDRIVER_INFO_5W* = ptr DRIVER_INFO_5W
   LPDRIVER_INFO_5W* = ptr DRIVER_INFO_5W
   DRIVER_INFO_6A* {.pure.} = object
@@ -361,6 +394,7 @@
     pszOEMUrl*: LPSTR
     pszHardwareID*: LPSTR
     pszProvider*: LPSTR
+
   PDRIVER_INFO_6A* = ptr DRIVER_INFO_6A
   LPDRIVER_INFO_6A* = ptr DRIVER_INFO_6A
   DRIVER_INFO_6W* {.pure.} = object
@@ -381,18 +415,21 @@
     pszOEMUrl*: LPWSTR
     pszHardwareID*: LPWSTR
     pszProvider*: LPWSTR
+
   PDRIVER_INFO_6W* = ptr DRIVER_INFO_6W
   LPDRIVER_INFO_6W* = ptr DRIVER_INFO_6W
   DOC_INFO_1A* {.pure.} = object
     pDocName*: LPSTR
     pOutputFile*: LPSTR
     pDatatype*: LPSTR
+
   PDOC_INFO_1A* = ptr DOC_INFO_1A
   LPDOC_INFO_1A* = ptr DOC_INFO_1A
   DOC_INFO_1W* {.pure.} = object
     pDocName*: LPWSTR
     pOutputFile*: LPWSTR
     pDatatype*: LPWSTR
+
   PDOC_INFO_1W* = ptr DOC_INFO_1W
   LPDOC_INFO_1W* = ptr DOC_INFO_1W
   FORM_INFO_1A* {.pure.} = object
@@ -400,6 +437,7 @@
     pName*: LPSTR
     Size*: SIZEL
     ImageableArea*: RECTL
+
   PFORM_INFO_1A* = ptr FORM_INFO_1A
   LPFORM_INFO_1A* = ptr FORM_INFO_1A
   FORM_INFO_1W* {.pure.} = object
@@ -407,6 +445,7 @@
     pName*: LPWSTR
     Size*: SIZEL
     ImageableArea*: RECTL
+
   PFORM_INFO_1W* = ptr FORM_INFO_1W
   LPFORM_INFO_1W* = ptr FORM_INFO_1W
   DOC_INFO_2A* {.pure.} = object
@@ -415,6 +454,7 @@
     pDatatype*: LPSTR
     dwMode*: DWORD
     JobId*: DWORD
+
   PDOC_INFO_2A* = ptr DOC_INFO_2A
   LPDOC_INFO_2A* = ptr DOC_INFO_2A
   DOC_INFO_2W* {.pure.} = object
@@ -423,6 +463,7 @@
     pDatatype*: LPWSTR
     dwMode*: DWORD
     JobId*: DWORD
+
   PDOC_INFO_2W* = ptr DOC_INFO_2W
   LPDOC_INFO_2W* = ptr DOC_INFO_2W
   DOC_INFO_3A* {.pure.} = object
@@ -430,6 +471,7 @@
     pOutputFile*: LPSTR
     pDatatype*: LPSTR
     dwFlags*: DWORD
+
   PDOC_INFO_3A* = ptr DOC_INFO_3A
   LPDOC_INFO_3A* = ptr DOC_INFO_3A
   DOC_INFO_3W* {.pure.} = object
@@ -437,14 +479,17 @@
     pOutputFile*: LPWSTR
     pDatatype*: LPWSTR
     dwFlags*: DWORD
+
   PDOC_INFO_3W* = ptr DOC_INFO_3W
   LPDOC_INFO_3W* = ptr DOC_INFO_3W
   PRINTPROCESSOR_INFO_1A* {.pure.} = object
     pName*: LPSTR
+
   PPRINTPROCESSOR_INFO_1A* = ptr PRINTPROCESSOR_INFO_1A
   LPPRINTPROCESSOR_INFO_1A* = ptr PRINTPROCESSOR_INFO_1A
   PRINTPROCESSOR_INFO_1W* {.pure.} = object
     pName*: LPWSTR
+
   PPRINTPROCESSOR_INFO_1W* = ptr PRINTPROCESSOR_INFO_1W
   LPPRINTPROCESSOR_INFO_1W* = ptr PRINTPROCESSOR_INFO_1W
   PRINTPROCESSOR_CAPS_1* {.pure.} = object
@@ -452,13 +497,16 @@
     dwNupOptions*: DWORD
     dwPageOrderFlags*: DWORD
     dwNumberOfCopies*: DWORD
+
   PPRINTPROCESSOR_CAPS_1* = ptr PRINTPROCESSOR_CAPS_1
   PORT_INFO_1A* {.pure.} = object
     pName*: LPSTR
+
   PPORT_INFO_1A* = ptr PORT_INFO_1A
   LPPORT_INFO_1A* = ptr PORT_INFO_1A
   PORT_INFO_1W* {.pure.} = object
     pName*: LPWSTR
+
   PPORT_INFO_1W* = ptr PORT_INFO_1W
   LPPORT_INFO_1W* = ptr PORT_INFO_1W
   PORT_INFO_2A* {.pure.} = object
@@ -467,6 +515,7 @@
     pDescription*: LPSTR
     fPortType*: DWORD
     Reserved*: DWORD
+
   PPORT_INFO_2A* = ptr PORT_INFO_2A
   LPPORT_INFO_2A* = ptr PORT_INFO_2A
   PORT_INFO_2W* {.pure.} = object
@@ -475,58 +524,69 @@
     pDescription*: LPWSTR
     fPortType*: DWORD
     Reserved*: DWORD
+
   PPORT_INFO_2W* = ptr PORT_INFO_2W
   LPPORT_INFO_2W* = ptr PORT_INFO_2W
   PORT_INFO_3A* {.pure.} = object
     dwStatus*: DWORD
     pszStatus*: LPSTR
     dwSeverity*: DWORD
+
   PPORT_INFO_3A* = ptr PORT_INFO_3A
   LPPORT_INFO_3A* = ptr PORT_INFO_3A
   PORT_INFO_3W* {.pure.} = object
     dwStatus*: DWORD
     pszStatus*: LPWSTR
     dwSeverity*: DWORD
+
   PPORT_INFO_3W* = ptr PORT_INFO_3W
   LPPORT_INFO_3W* = ptr PORT_INFO_3W
   MONITOR_INFO_1A* {.pure.} = object
     pName*: LPSTR
+
   PMONITOR_INFO_1A* = ptr MONITOR_INFO_1A
   LPMONITOR_INFO_1A* = ptr MONITOR_INFO_1A
   MONITOR_INFO_1W* {.pure.} = object
     pName*: LPWSTR
+
   PMONITOR_INFO_1W* = ptr MONITOR_INFO_1W
   LPMONITOR_INFO_1W* = ptr MONITOR_INFO_1W
   MONITOR_INFO_2A* {.pure.} = object
     pName*: LPSTR
     pEnvironment*: LPSTR
     pDLLName*: LPSTR
+
   PMONITOR_INFO_2A* = ptr MONITOR_INFO_2A
   LPMONITOR_INFO_2A* = ptr MONITOR_INFO_2A
   MONITOR_INFO_2W* {.pure.} = object
     pName*: LPWSTR
     pEnvironment*: LPWSTR
     pDLLName*: LPWSTR
+
   PMONITOR_INFO_2W* = ptr MONITOR_INFO_2W
   LPMONITOR_INFO_2W* = ptr MONITOR_INFO_2W
   DATATYPES_INFO_1A* {.pure.} = object
     pName*: LPSTR
+
   PDATATYPES_INFO_1A* = ptr DATATYPES_INFO_1A
   LPDATATYPES_INFO_1A* = ptr DATATYPES_INFO_1A
   DATATYPES_INFO_1W* {.pure.} = object
     pName*: LPWSTR
+
   PDATATYPES_INFO_1W* = ptr DATATYPES_INFO_1W
   LPDATATYPES_INFO_1W* = ptr DATATYPES_INFO_1W
   PRINTER_DEFAULTSA* {.pure.} = object
     pDatatype*: LPSTR
     pDevMode*: LPDEVMODEA
     DesiredAccess*: ACCESS_MASK
+
   PPRINTER_DEFAULTSA* = ptr PRINTER_DEFAULTSA
   LPPRINTER_DEFAULTSA* = ptr PRINTER_DEFAULTSA
   PRINTER_DEFAULTSW* {.pure.} = object
     pDatatype*: LPWSTR
     pDevMode*: LPDEVMODEW
     DesiredAccess*: ACCESS_MASK
+
   PPRINTER_DEFAULTSW* = ptr PRINTER_DEFAULTSW
   LPPRINTER_DEFAULTSW* = ptr PRINTER_DEFAULTSW
   PRINTER_ENUM_VALUESA* {.pure.} = object
@@ -535,6 +595,7 @@
     dwType*: DWORD
     pData*: LPBYTE
     cbData*: DWORD
+
   PPRINTER_ENUM_VALUESA* = ptr PRINTER_ENUM_VALUESA
   LPPRINTER_ENUM_VALUESA* = ptr PRINTER_ENUM_VALUESA
   PRINTER_ENUM_VALUESW* {.pure.} = object
@@ -543,6 +604,7 @@
     dwType*: DWORD
     pData*: LPBYTE
     cbData*: DWORD
+
   PPRINTER_ENUM_VALUESW* = ptr PRINTER_ENUM_VALUESW
   LPPRINTER_ENUM_VALUESW* = ptr PRINTER_ENUM_VALUESW
   PRINTER_NOTIFY_OPTIONS_TYPE* {.pure.} = object
@@ -552,6 +614,7 @@
     Reserved2*: DWORD
     Count*: DWORD
     pFields*: PWORD
+
   PPRINTER_NOTIFY_OPTIONS_TYPE* = ptr PRINTER_NOTIFY_OPTIONS_TYPE
   LPPRINTER_NOTIFY_OPTIONS_TYPE* = ptr PRINTER_NOTIFY_OPTIONS_TYPE
   PRINTER_NOTIFY_OPTIONS* {.pure.} = object
@@ -559,20 +622,24 @@
     Flags*: DWORD
     Count*: DWORD
     pTypes*: PPRINTER_NOTIFY_OPTIONS_TYPE
+
   PPRINTER_NOTIFY_OPTIONS* = ptr PRINTER_NOTIFY_OPTIONS
   LPPRINTER_NOTIFY_OPTIONS* = ptr PRINTER_NOTIFY_OPTIONS
   PRINTER_NOTIFY_INFO_DATA_NotifyData_Data* {.pure.} = object
     cbBuf*: DWORD
     pBuf*: LPVOID
+
   PRINTER_NOTIFY_INFO_DATA_NotifyData* {.pure, union.} = object
     adwData*: array[2, DWORD]
     Data*: PRINTER_NOTIFY_INFO_DATA_NotifyData_Data
+
   PRINTER_NOTIFY_INFO_DATA* {.pure.} = object
     Type*: WORD
     Field*: WORD
     Reserved*: DWORD
     Id*: DWORD
     NotifyData*: PRINTER_NOTIFY_INFO_DATA_NotifyData
+
   PPRINTER_NOTIFY_INFO_DATA* = ptr PRINTER_NOTIFY_INFO_DATA
   LPPRINTER_NOTIFY_INFO_DATA* = ptr PRINTER_NOTIFY_INFO_DATA
   PRINTER_NOTIFY_INFO* {.pure.} = object
@@ -580,11 +647,13 @@
     Flags*: DWORD
     Count*: DWORD
     aData*: array[1, PRINTER_NOTIFY_INFO_DATA]
+
   PPRINTER_NOTIFY_INFO* = ptr PRINTER_NOTIFY_INFO
   LPPRINTER_NOTIFY_INFO* = ptr PRINTER_NOTIFY_INFO
   BINARY_CONTAINER* {.pure.} = object
     cbBuf*: DWORD
     pData*: LPBYTE
+
   PBINARY_CONTAINER* = ptr BINARY_CONTAINER
   BIDI_DATA_u* {.pure, union.} = object
     bData*: WINBOOL
@@ -592,22 +661,26 @@
     sData*: LPWSTR
     fData*: FLOAT
     biData*: BINARY_CONTAINER
+
   BIDI_DATA* {.pure.} = object
     dwBidiType*: DWORD
     u*: BIDI_DATA_u
+
   PBIDI_DATA* = ptr BIDI_DATA
   LPBIDI_DATA* = ptr BIDI_DATA
   BIDI_REQUEST_DATA* {.pure.} = object
     dwReqNumber*: DWORD
     pSchema*: LPWSTR
     data*: BIDI_DATA
+
   PBIDI_REQUEST_DATA* = ptr BIDI_REQUEST_DATA
   LPBIDI_REQUEST_DATA* = ptr BIDI_REQUEST_DATA
   BIDI_REQUEST_CONTAINER* {.pure.} = object
     Version*: DWORD
     Flags*: DWORD
     Count*: DWORD
-    aData*: array[1 , BIDI_REQUEST_DATA]
+    aData*: array[1, BIDI_REQUEST_DATA]
+
   PBIDI_REQUEST_CONTAINER* = ptr BIDI_REQUEST_CONTAINER
   LPBIDI_REQUEST_CONTAINER* = ptr BIDI_REQUEST_CONTAINER
   BIDI_RESPONSE_DATA* {.pure.} = object
@@ -615,38 +688,45 @@
     dwReqNumber*: DWORD
     pSchema*: LPWSTR
     data*: BIDI_DATA
+
   PBIDI_RESPONSE_DATA* = ptr BIDI_RESPONSE_DATA
   LPBIDI_RESPONSE_DATA* = ptr BIDI_RESPONSE_DATA
   BIDI_RESPONSE_CONTAINER* {.pure.} = object
     Version*: DWORD
     Flags*: DWORD
     Count*: DWORD
-    aData*: array[1 , BIDI_RESPONSE_DATA]
+    aData*: array[1, BIDI_RESPONSE_DATA]
+
   PBIDI_RESPONSE_CONTAINER* = ptr BIDI_RESPONSE_CONTAINER
   LPBIDI_RESPONSE_CONTAINER* = ptr BIDI_RESPONSE_CONTAINER
   PROVIDOR_INFO_1A* {.pure.} = object
     pName*: LPSTR
     pEnvironment*: LPSTR
     pDLLName*: LPSTR
+
   PPROVIDOR_INFO_1A* = ptr PROVIDOR_INFO_1A
   LPPROVIDOR_INFO_1A* = ptr PROVIDOR_INFO_1A
   PROVIDOR_INFO_1W* {.pure.} = object
     pName*: LPWSTR
     pEnvironment*: LPWSTR
     pDLLName*: LPWSTR
+
   PPROVIDOR_INFO_1W* = ptr PROVIDOR_INFO_1W
   LPPROVIDOR_INFO_1W* = ptr PROVIDOR_INFO_1W
   PROVIDOR_INFO_2A* {.pure.} = object
     pOrder*: LPSTR
+
   PPROVIDOR_INFO_2A* = ptr PROVIDOR_INFO_2A
   LPPROVIDOR_INFO_2A* = ptr PROVIDOR_INFO_2A
   PROVIDOR_INFO_2W* {.pure.} = object
     pOrder*: LPWSTR
+
   PPROVIDOR_INFO_2W* = ptr PROVIDOR_INFO_2W
   LPPROVIDOR_INFO_2W* = ptr PROVIDOR_INFO_2W
   PRINTER_CONNECTION_INFO_1* {.pure.} = object
     dwFlags*: DWORD
     pszDriverName*: LPTSTR
+
   PPRINTER_CONNECTION_INFO_1* = ptr PRINTER_CONNECTION_INFO_1
   DRIVER_INFO_8W* {.pure.} = object
     cVersion*: DWORD
@@ -674,6 +754,7 @@
     pszzCoreDriverDependencies*: LPWSTR
     ftMinInboxDriverVerDate*: FILETIME
     dwlMinInboxDriverVerVersion*: DWORDLONG
+
   PDRIVER_INFO_8W* = ptr DRIVER_INFO_8W
   LPDRIVER_INFO_8W* = ptr DRIVER_INFO_8W
   DRIVER_INFO_8A* {.pure.} = object
@@ -702,6 +783,7 @@
     pszzCoreDriverDependencies*: LPSTR
     ftMinInboxDriverVerDate*: FILETIME
     dwlMinInboxDriverVerVersion*: DWORDLONG
+
   PDRIVER_INFO_8A* = ptr DRIVER_INFO_8A
   LPDRIVER_INFO_8A* = ptr DRIVER_INFO_8A
   FORM_INFO_2A* {.pure.} = object
@@ -715,6 +797,7 @@
     dwResourceId*: DWORD
     pDisplayName*: LPCSTR
     wLangId*: LANGID
+
   PFORM_INFO_2A* = ptr FORM_INFO_2A
   FORM_INFO_2W* {.pure.} = object
     Flags*: DWORD
@@ -727,6 +810,7 @@
     dwResourceId*: DWORD
     pDisplayName*: LPCWSTR
     wLangId*: LANGID
+
   PFORM_INFO_2W* = ptr FORM_INFO_2W
   PRINTPROCESSOR_CAPS_2* {.pure.} = object
     dwLevel*: DWORD
@@ -738,23 +822,28 @@
     dwBookletHandlingCaps*: DWORD
     dwDuplexHandlingCaps*: DWORD
     dwScalingCaps*: DWORD
+
   PPRINTPROCESSOR_CAPS_2* = ptr PRINTPROCESSOR_CAPS_2
   CORE_PRINTER_DRIVERA* {.pure.} = object
     CoreDriverGUID*: GUID
     ftDriverDate*: FILETIME
     dwlDriverVersion*: DWORDLONG
     szPackageID*: array[MAX_PATH, CHAR]
+
   PCORE_PRINTER_DRIVERA* = ptr CORE_PRINTER_DRIVERA
   CORE_PRINTER_DRIVERW* {.pure.} = object
     CoreDriverGUID*: GUID
     ftDriverDate*: FILETIME
     dwlDriverVersion*: DWORDLONG
     szPackageID*: array[MAX_PATH, WCHAR]
+
   PCORE_PRINTER_DRIVERW* = ptr CORE_PRINTER_DRIVERW
   PRINTER_OPTIONS* {.pure.} = object
     cbSize*: UINT
     dwFlags*: DWORD
+
   PPRINTER_OPTIONS* = ptr PRINTER_OPTIONS
+
 const
   DSPRINT_PUBLISH* = 0x00000001
   DSPRINT_UPDATE* = 0x00000002
@@ -962,11 +1051,11 @@
   ERROR_BIDI_STATUS_OK* = 0
   ERROR_BIDI_NOT_SUPPORTED* = ERROR_NOT_SUPPORTED
   ERROR_BIDI_ERROR_BASE* = 13000
-  ERROR_BIDI_STATUS_WARNING* = ERROR_BIDI_ERROR_BASE+1
-  ERROR_BIDI_SCHEMA_READ_ONLY* = ERROR_BIDI_ERROR_BASE+2
-  ERROR_BIDI_SERVER_OFFLINE* = ERROR_BIDI_ERROR_BASE+3
-  ERROR_BIDI_DEVICE_OFFLINE* = ERROR_BIDI_ERROR_BASE+4
-  ERROR_BIDI_SCHEMA_NOT_SUPPORTED* = ERROR_BIDI_ERROR_BASE+5
+  ERROR_BIDI_STATUS_WARNING* = ERROR_BIDI_ERROR_BASE + 1
+  ERROR_BIDI_SCHEMA_READ_ONLY* = ERROR_BIDI_ERROR_BASE + 2
+  ERROR_BIDI_SERVER_OFFLINE* = ERROR_BIDI_ERROR_BASE + 3
+  ERROR_BIDI_DEVICE_OFFLINE* = ERROR_BIDI_ERROR_BASE + 4
+  ERROR_BIDI_SCHEMA_NOT_SUPPORTED* = ERROR_BIDI_ERROR_BASE + 5
   PRINTER_CHANGE_ADD_PRINTER* = 0x00000001
   PRINTER_CHANGE_SET_PRINTER* = 0x00000002
   PRINTER_CHANGE_DELETE_PRINTER* = 0x00000004
@@ -1029,11 +1118,14 @@
   PRINTER_ACCESS_USE* = 0x00000008
   JOB_ACCESS_ADMINISTER* = 0x00000010
   JOB_ACCESS_READ* = 0x00000020
-  SERVER_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or SERVER_ACCESS_ADMINISTER or SERVER_ACCESS_ENUMERATE
+  SERVER_ALL_ACCESS* =
+    STANDARD_RIGHTS_REQUIRED or SERVER_ACCESS_ADMINISTER or SERVER_ACCESS_ENUMERATE
   SERVER_READ* = STANDARD_RIGHTS_READ or SERVER_ACCESS_ENUMERATE
-  SERVER_WRITE* = STANDARD_RIGHTS_WRITE or SERVER_ACCESS_ADMINISTER or SERVER_ACCESS_ENUMERATE
+  SERVER_WRITE* =
+    STANDARD_RIGHTS_WRITE or SERVER_ACCESS_ADMINISTER or SERVER_ACCESS_ENUMERATE
   SERVER_EXECUTE* = STANDARD_RIGHTS_EXECUTE or SERVER_ACCESS_ENUMERATE
-  PRINTER_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or PRINTER_ACCESS_ADMINISTER or PRINTER_ACCESS_USE
+  PRINTER_ALL_ACCESS* =
+    STANDARD_RIGHTS_REQUIRED or PRINTER_ACCESS_ADMINISTER or PRINTER_ACCESS_USE
   PRINTER_READ* = STANDARD_RIGHTS_READ or PRINTER_ACCESS_USE
   PRINTER_WRITE* = STANDARD_RIGHTS_WRITE or PRINTER_ACCESS_USE
   PRINTER_EXECUTE* = STANDARD_RIGHTS_EXECUTE or PRINTER_ACCESS_USE
@@ -1111,161 +1203,927 @@
   kFontAdded* = 7
   kImageAdded* = 8
   kXpsDocumentCommitted* = 9
-proc EnumPrintersA*(Flags: DWORD, Name: LPSTR, Level: DWORD, pPrinterEnum: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPrintersW*(Flags: DWORD, Name: LPWSTR, Level: DWORD, pPrinterEnum: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc OpenPrinterA*(pPrinterName: LPSTR, phPrinter: LPHANDLE, pDefault: LPPRINTER_DEFAULTSA): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc OpenPrinterW*(pPrinterName: LPWSTR, phPrinter: LPHANDLE, pDefault: LPPRINTER_DEFAULTSW): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc ResetPrinterA*(hPrinter: HANDLE, pDefault: LPPRINTER_DEFAULTSA): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc ResetPrinterW*(hPrinter: HANDLE, pDefault: LPPRINTER_DEFAULTSW): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc SetJobA*(hPrinter: HANDLE, JobId: DWORD, Level: DWORD, pJob: LPBYTE, Command: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc SetJobW*(hPrinter: HANDLE, JobId: DWORD, Level: DWORD, pJob: LPBYTE, Command: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetJobA*(hPrinter: HANDLE, JobId: DWORD, Level: DWORD, pJob: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetJobW*(hPrinter: HANDLE, JobId: DWORD, Level: DWORD, pJob: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumJobsA*(hPrinter: HANDLE, FirstJob: DWORD, NoJobs: DWORD, Level: DWORD, pJob: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumJobsW*(hPrinter: HANDLE, FirstJob: DWORD, NoJobs: DWORD, Level: DWORD, pJob: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPrinterA*(pName: LPSTR, Level: DWORD, pPrinter: LPBYTE): HANDLE {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPrinterW*(pName: LPWSTR, Level: DWORD, pPrinter: LPBYTE): HANDLE {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinter*(hPrinter: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc SetPrinterA*(hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, Command: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc SetPrinterW*(hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, Command: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrinterA*(hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrinterW*(hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPrinterDriverA*(pName: LPSTR, Level: DWORD, pDriverInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPrinterDriverW*(pName: LPWSTR, Level: DWORD, pDriverInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPrinterDriverExA*(pName: LPSTR, Level: DWORD, pDriverInfo: LPBYTE, dwFileCopyFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPrinterDriverExW*(pName: LPWSTR, Level: DWORD, pDriverInfo: LPBYTE, dwFileCopyFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPrinterDriversA*(pName: LPSTR, pEnvironment: LPSTR, Level: DWORD, pDriverInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPrinterDriversW*(pName: LPWSTR, pEnvironment: LPWSTR, Level: DWORD, pDriverInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrinterDriverA*(hPrinter: HANDLE, pEnvironment: LPSTR, Level: DWORD, pDriverInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrinterDriverW*(hPrinter: HANDLE, pEnvironment: LPWSTR, Level: DWORD, pDriverInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrinterDriverDirectoryA*(pName: LPSTR, pEnvironment: LPSTR, Level: DWORD, pDriverDirectory: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrinterDriverDirectoryW*(pName: LPWSTR, pEnvironment: LPWSTR, Level: DWORD, pDriverDirectory: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinterDriverA*(pName: LPSTR, pEnvironment: LPSTR, pDriverName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinterDriverW*(pName: LPWSTR, pEnvironment: LPWSTR, pDriverName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinterDriverExA*(pName: LPSTR, pEnvironment: LPSTR, pDriverName: LPSTR, dwDeleteFlag: DWORD, dwVersionFlag: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinterDriverExW*(pName: LPWSTR, pEnvironment: LPWSTR, pDriverName: LPWSTR, dwDeleteFlag: DWORD, dwVersionFlag: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPrintProcessorA*(pName: LPSTR, pEnvironment: LPSTR, pPathName: LPSTR, pPrintProcessorName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPrintProcessorW*(pName: LPWSTR, pEnvironment: LPWSTR, pPathName: LPWSTR, pPrintProcessorName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPrintProcessorsA*(pName: LPSTR, pEnvironment: LPSTR, Level: DWORD, pPrintProcessorInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPrintProcessorsW*(pName: LPWSTR, pEnvironment: LPWSTR, Level: DWORD, pPrintProcessorInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrintProcessorDirectoryA*(pName: LPSTR, pEnvironment: LPSTR, Level: DWORD, pPrintProcessorInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrintProcessorDirectoryW*(pName: LPWSTR, pEnvironment: LPWSTR, Level: DWORD, pPrintProcessorInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPrintProcessorDatatypesA*(pName: LPSTR, pPrintProcessorName: LPSTR, Level: DWORD, pDatatypes: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPrintProcessorDatatypesW*(pName: LPWSTR, pPrintProcessorName: LPWSTR, Level: DWORD, pDatatypes: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrintProcessorA*(pName: LPSTR, pEnvironment: LPSTR, pPrintProcessorName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrintProcessorW*(pName: LPWSTR, pEnvironment: LPWSTR, pPrintProcessorName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc StartDocPrinterA*(hPrinter: HANDLE, Level: DWORD, pDocInfo: LPBYTE): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc StartDocPrinterW*(hPrinter: HANDLE, Level: DWORD, pDocInfo: LPBYTE): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc StartPagePrinter*(hPrinter: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc WritePrinter*(hPrinter: HANDLE, pBuf: LPVOID, cbBuf: DWORD, pcWritten: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc FlushPrinter*(hPrinter: HANDLE, pBuf: LPVOID, cbBuf: DWORD, pcWritten: LPDWORD, cSleep: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EndPagePrinter*(hPrinter: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AbortPrinter*(hPrinter: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc ReadPrinter*(hPrinter: HANDLE, pBuf: LPVOID, cbBuf: DWORD, pNoBytesRead: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EndDocPrinter*(hPrinter: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddJobA*(hPrinter: HANDLE, Level: DWORD, pData: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddJobW*(hPrinter: HANDLE, Level: DWORD, pData: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc ScheduleJob*(hPrinter: HANDLE, JobId: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc PrinterProperties*(hWnd: HWND, hPrinter: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DocumentPropertiesA*(hWnd: HWND, hPrinter: HANDLE, pDeviceName: LPSTR, pDevModeOutput: PDEVMODEA, pDevModeInput: PDEVMODEA, fMode: DWORD): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DocumentPropertiesW*(hWnd: HWND, hPrinter: HANDLE, pDeviceName: LPWSTR, pDevModeOutput: PDEVMODEW, pDevModeInput: PDEVMODEW, fMode: DWORD): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AdvancedDocumentPropertiesA*(hWnd: HWND, hPrinter: HANDLE, pDeviceName: LPSTR, pDevModeOutput: PDEVMODEA, pDevModeInput: PDEVMODEA): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AdvancedDocumentPropertiesW*(hWnd: HWND, hPrinter: HANDLE, pDeviceName: LPWSTR, pDevModeOutput: PDEVMODEW, pDevModeInput: PDEVMODEW): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc ExtDeviceMode*(hWnd: HWND, hInst: HANDLE, pDevModeOutput: LPDEVMODEA, pDeviceName: LPSTR, pPort: LPSTR, pDevModeInput: LPDEVMODEA, pProfile: LPSTR, fMode: DWORD): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrinterDataA*(hPrinter: HANDLE, pValueName: LPSTR, pType: LPDWORD, pData: LPBYTE, nSize: DWORD, pcbNeeded: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrinterDataW*(hPrinter: HANDLE, pValueName: LPWSTR, pType: LPDWORD, pData: LPBYTE, nSize: DWORD, pcbNeeded: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrinterDataExA*(hPrinter: HANDLE, pKeyName: LPCSTR, pValueName: LPCSTR, pType: LPDWORD, pData: LPBYTE, nSize: DWORD, pcbNeeded: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrinterDataExW*(hPrinter: HANDLE, pKeyName: LPCWSTR, pValueName: LPCWSTR, pType: LPDWORD, pData: LPBYTE, nSize: DWORD, pcbNeeded: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPrinterDataA*(hPrinter: HANDLE, dwIndex: DWORD, pValueName: LPSTR, cbValueName: DWORD, pcbValueName: LPDWORD, pType: LPDWORD, pData: LPBYTE, cbData: DWORD, pcbData: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPrinterDataW*(hPrinter: HANDLE, dwIndex: DWORD, pValueName: LPWSTR, cbValueName: DWORD, pcbValueName: LPDWORD, pType: LPDWORD, pData: LPBYTE, cbData: DWORD, pcbData: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPrinterDataExA*(hPrinter: HANDLE, pKeyName: LPCSTR, pEnumValues: LPBYTE, cbEnumValues: DWORD, pcbEnumValues: LPDWORD, pnEnumValues: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPrinterDataExW*(hPrinter: HANDLE, pKeyName: LPCWSTR, pEnumValues: LPBYTE, cbEnumValues: DWORD, pcbEnumValues: LPDWORD, pnEnumValues: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPrinterKeyA*(hPrinter: HANDLE, pKeyName: LPCSTR, pSubkey: LPSTR, cbSubkey: DWORD, pcbSubkey: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPrinterKeyW*(hPrinter: HANDLE, pKeyName: LPCWSTR, pSubkey: LPWSTR, cbSubkey: DWORD, pcbSubkey: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc SetPrinterDataA*(hPrinter: HANDLE, pValueName: LPSTR, Type: DWORD, pData: LPBYTE, cbData: DWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc SetPrinterDataW*(hPrinter: HANDLE, pValueName: LPWSTR, Type: DWORD, pData: LPBYTE, cbData: DWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc SetPrinterDataExA*(hPrinter: HANDLE, pKeyName: LPCSTR, pValueName: LPCSTR, Type: DWORD, pData: LPBYTE, cbData: DWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc SetPrinterDataExW*(hPrinter: HANDLE, pKeyName: LPCWSTR, pValueName: LPCWSTR, Type: DWORD, pData: LPBYTE, cbData: DWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinterDataA*(hPrinter: HANDLE, pValueName: LPSTR): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinterDataW*(hPrinter: HANDLE, pValueName: LPWSTR): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinterDataExA*(hPrinter: HANDLE, pKeyName: LPCSTR, pValueName: LPCSTR): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinterDataExW*(hPrinter: HANDLE, pKeyName: LPCWSTR, pValueName: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinterKeyA*(hPrinter: HANDLE, pKeyName: LPCSTR): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinterKeyW*(hPrinter: HANDLE, pKeyName: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc WaitForPrinterChange*(hPrinter: HANDLE, Flags: DWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc FindFirstPrinterChangeNotification*(hPrinter: HANDLE, fdwFlags: DWORD, fdwOptions: DWORD, pPrinterNotifyOptions: LPVOID): HANDLE {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc FindNextPrinterChangeNotification*(hChange: HANDLE, pdwChange: PDWORD, pPrinterNotifyOptions: LPVOID, ppPrinterNotifyInfo: ptr LPVOID): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc FreePrinterNotifyInfo*(pPrinterNotifyInfo: PPRINTER_NOTIFY_INFO): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc FindClosePrinterChangeNotification*(hChange: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc PrinterMessageBoxA*(hPrinter: HANDLE, Error: DWORD, hWnd: HWND, pText: LPSTR, pCaption: LPSTR, dwType: DWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc PrinterMessageBoxW*(hPrinter: HANDLE, Error: DWORD, hWnd: HWND, pText: LPWSTR, pCaption: LPWSTR, dwType: DWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc ClosePrinter*(hPrinter: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddFormA*(hPrinter: HANDLE, Level: DWORD, pForm: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddFormW*(hPrinter: HANDLE, Level: DWORD, pForm: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeleteFormA*(hPrinter: HANDLE, pFormName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeleteFormW*(hPrinter: HANDLE, pFormName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetFormA*(hPrinter: HANDLE, pFormName: LPSTR, Level: DWORD, pForm: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetFormW*(hPrinter: HANDLE, pFormName: LPWSTR, Level: DWORD, pForm: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc SetFormA*(hPrinter: HANDLE, pFormName: LPSTR, Level: DWORD, pForm: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc SetFormW*(hPrinter: HANDLE, pFormName: LPWSTR, Level: DWORD, pForm: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumFormsA*(hPrinter: HANDLE, Level: DWORD, pForm: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumFormsW*(hPrinter: HANDLE, Level: DWORD, pForm: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumMonitorsA*(pName: LPSTR, Level: DWORD, pMonitor: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumMonitorsW*(pName: LPWSTR, Level: DWORD, pMonitor: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddMonitorA*(pName: LPSTR, Level: DWORD, pMonitorInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddMonitorW*(pName: LPWSTR, Level: DWORD, pMonitorInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeleteMonitorA*(pName: LPSTR, pEnvironment: LPSTR, pMonitorName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeleteMonitorW*(pName: LPWSTR, pEnvironment: LPWSTR, pMonitorName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPortsA*(pName: LPSTR, Level: DWORD, pPorts: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc EnumPortsW*(pName: LPWSTR, Level: DWORD, pPorts: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPortA*(pName: LPSTR, hWnd: HWND, pMonitorName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPortW*(pName: LPWSTR, hWnd: HWND, pMonitorName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc ConfigurePortA*(pName: LPSTR, hWnd: HWND, pPortName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc ConfigurePortW*(pName: LPWSTR, hWnd: HWND, pPortName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePortA*(pName: LPSTR, hWnd: HWND, pPortName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePortW*(pName: LPWSTR, hWnd: HWND, pPortName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc XcvDataW*(hXcv: HANDLE, pszDataName: PCWSTR, pInputData: PBYTE, cbInputData: DWORD, pOutputData: PBYTE, cbOutputData: DWORD, pcbOutputNeeded: PDWORD, pdwStatus: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc XcvData*(hXcv: HANDLE, pszDataName: PCWSTR, pInputData: PBYTE, cbInputData: DWORD, pOutputData: PBYTE, cbOutputData: DWORD, pcbOutputNeeded: PDWORD, pdwStatus: PDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "XcvDataW".}
-proc GetDefaultPrinterA*(pszBuffer: LPSTR, pcchBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetDefaultPrinterW*(pszBuffer: LPWSTR, pcchBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc SetDefaultPrinterA*(pszPrinter: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc SetDefaultPrinterW*(pszPrinter: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc SetPortA*(pName: LPSTR, pPortName: LPSTR, dwLevel: DWORD, pPortInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc SetPortW*(pName: LPWSTR, pPortName: LPWSTR, dwLevel: DWORD, pPortInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPrinterConnectionA*(pName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPrinterConnectionW*(pName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinterConnectionA*(pName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinterConnectionW*(pName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc ConnectToPrinterDlg*(hwnd: HWND, Flags: DWORD): HANDLE {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPrintProvidorA*(pName: LPSTR, level: DWORD, pProvidorInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPrintProvidorW*(pName: LPWSTR, level: DWORD, pProvidorInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrintProvidorA*(pName: LPSTR, pEnvironment: LPSTR, pPrintProvidorName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrintProvidorW*(pName: LPWSTR, pEnvironment: LPWSTR, pPrintProvidorName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc IsValidDevmodeA*(pDevmode: PDEVMODEA, DevmodeSize: int): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc IsValidDevmodeW*(pDevmode: PDEVMODEW, DevmodeSize: int): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPrinterConnection2W*(hWnd: HWND, pszName: LPCWSTR, dwLevel: DWORD, pConnectionInfo: PVOID): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc AddPrinterConnection2A*(hWnd: HWND, pszName: LPCSTR, dwLevel: DWORD, pConnectionInfo: PVOID): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinterDriverPackageA*(pszServer: LPCSTR, pszInfPath: LPCSTR, pszEnvironment: LPCSTR): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc DeletePrinterDriverPackageW*(pszServer: LPCWSTR, pszInfPath: LPCWSTR, pszEnvironment: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc ReportJobProcessingProgress*(printerHandle: HANDLE, jobId: ULONG, jobOperation: EPrintXPSJobOperation, jobProgress: EPrintXPSJobProgress): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetCorePrinterDriversA*(pszServer: LPCSTR, pszEnvironment: LPCSTR, pszzCoreDriverDependencies: LPCSTR, cCorePrinterDrivers: DWORD, pCorePrinterDrivers: PCORE_PRINTER_DRIVERA): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetCorePrinterDriversW*(pszServer: LPCWSTR, pszEnvironment: LPCWSTR, pszzCoreDriverDependencies: LPCWSTR, cCorePrinterDrivers: DWORD, pCorePrinterDrivers: PCORE_PRINTER_DRIVERW): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrinterDriver2A*(hWnd: HWND, hPrinter: HANDLE, pEnvironment: LPSTR, Level: DWORD, pDriverInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrinterDriver2W*(hWnd: HWND, hPrinter: HANDLE, pEnvironment: LPWSTR, Level: DWORD, pDriverInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrinterDriverPackagePathA*(pszServer: LPCSTR, pszEnvironment: LPCSTR, pszLanguage: LPCSTR, pszPackageID: LPCSTR, pszDriverPackageCab: LPSTR, cchDriverPackageCab: DWORD, pcchRequiredSize: LPDWORD): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc GetPrinterDriverPackagePathW*(pszServer: LPCWSTR, pszEnvironment: LPCWSTR, pszLanguage: LPCWSTR, pszPackageID: LPCWSTR, pszDriverPackageCab: LPWSTR, cchDriverPackageCab: DWORD, pcchRequiredSize: LPDWORD): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc CommitSpoolData*(hPrinter: HANDLE, hSpoolFile: HANDLE, cbCommit: DWORD): HANDLE {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc CloseSpoolFileHandle*(hPrinter: HANDLE, hSpoolFile: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+proc EnumPrintersA*(
+  Flags: DWORD,
+  Name: LPSTR,
+  Level: DWORD,
+  pPrinterEnum: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPrintersW*(
+  Flags: DWORD,
+  Name: LPWSTR,
+  Level: DWORD,
+  pPrinterEnum: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc OpenPrinterA*(
+  pPrinterName: LPSTR, phPrinter: LPHANDLE, pDefault: LPPRINTER_DEFAULTSA
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc OpenPrinterW*(
+  pPrinterName: LPWSTR, phPrinter: LPHANDLE, pDefault: LPPRINTER_DEFAULTSW
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc ResetPrinterA*(
+  hPrinter: HANDLE, pDefault: LPPRINTER_DEFAULTSA
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc ResetPrinterW*(
+  hPrinter: HANDLE, pDefault: LPPRINTER_DEFAULTSW
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc SetJobA*(
+  hPrinter: HANDLE, JobId: DWORD, Level: DWORD, pJob: LPBYTE, Command: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc SetJobW*(
+  hPrinter: HANDLE, JobId: DWORD, Level: DWORD, pJob: LPBYTE, Command: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetJobA*(
+  hPrinter: HANDLE,
+  JobId: DWORD,
+  Level: DWORD,
+  pJob: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetJobW*(
+  hPrinter: HANDLE,
+  JobId: DWORD,
+  Level: DWORD,
+  pJob: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumJobsA*(
+  hPrinter: HANDLE,
+  FirstJob: DWORD,
+  NoJobs: DWORD,
+  Level: DWORD,
+  pJob: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumJobsW*(
+  hPrinter: HANDLE,
+  FirstJob: DWORD,
+  NoJobs: DWORD,
+  Level: DWORD,
+  pJob: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPrinterA*(
+  pName: LPSTR, Level: DWORD, pPrinter: LPBYTE
+): HANDLE {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPrinterW*(
+  pName: LPWSTR, Level: DWORD, pPrinter: LPBYTE
+): HANDLE {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinter*(
+  hPrinter: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc SetPrinterA*(
+  hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, Command: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc SetPrinterW*(
+  hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, Command: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrinterA*(
+  hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrinterW*(
+  hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPrinterDriverA*(
+  pName: LPSTR, Level: DWORD, pDriverInfo: LPBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPrinterDriverW*(
+  pName: LPWSTR, Level: DWORD, pDriverInfo: LPBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPrinterDriverExA*(
+  pName: LPSTR, Level: DWORD, pDriverInfo: LPBYTE, dwFileCopyFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPrinterDriverExW*(
+  pName: LPWSTR, Level: DWORD, pDriverInfo: LPBYTE, dwFileCopyFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPrinterDriversA*(
+  pName: LPSTR,
+  pEnvironment: LPSTR,
+  Level: DWORD,
+  pDriverInfo: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPrinterDriversW*(
+  pName: LPWSTR,
+  pEnvironment: LPWSTR,
+  Level: DWORD,
+  pDriverInfo: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrinterDriverA*(
+  hPrinter: HANDLE,
+  pEnvironment: LPSTR,
+  Level: DWORD,
+  pDriverInfo: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrinterDriverW*(
+  hPrinter: HANDLE,
+  pEnvironment: LPWSTR,
+  Level: DWORD,
+  pDriverInfo: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrinterDriverDirectoryA*(
+  pName: LPSTR,
+  pEnvironment: LPSTR,
+  Level: DWORD,
+  pDriverDirectory: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrinterDriverDirectoryW*(
+  pName: LPWSTR,
+  pEnvironment: LPWSTR,
+  Level: DWORD,
+  pDriverDirectory: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinterDriverA*(
+  pName: LPSTR, pEnvironment: LPSTR, pDriverName: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinterDriverW*(
+  pName: LPWSTR, pEnvironment: LPWSTR, pDriverName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinterDriverExA*(
+  pName: LPSTR,
+  pEnvironment: LPSTR,
+  pDriverName: LPSTR,
+  dwDeleteFlag: DWORD,
+  dwVersionFlag: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinterDriverExW*(
+  pName: LPWSTR,
+  pEnvironment: LPWSTR,
+  pDriverName: LPWSTR,
+  dwDeleteFlag: DWORD,
+  dwVersionFlag: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPrintProcessorA*(
+  pName: LPSTR, pEnvironment: LPSTR, pPathName: LPSTR, pPrintProcessorName: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPrintProcessorW*(
+  pName: LPWSTR, pEnvironment: LPWSTR, pPathName: LPWSTR, pPrintProcessorName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPrintProcessorsA*(
+  pName: LPSTR,
+  pEnvironment: LPSTR,
+  Level: DWORD,
+  pPrintProcessorInfo: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPrintProcessorsW*(
+  pName: LPWSTR,
+  pEnvironment: LPWSTR,
+  Level: DWORD,
+  pPrintProcessorInfo: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrintProcessorDirectoryA*(
+  pName: LPSTR,
+  pEnvironment: LPSTR,
+  Level: DWORD,
+  pPrintProcessorInfo: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrintProcessorDirectoryW*(
+  pName: LPWSTR,
+  pEnvironment: LPWSTR,
+  Level: DWORD,
+  pPrintProcessorInfo: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPrintProcessorDatatypesA*(
+  pName: LPSTR,
+  pPrintProcessorName: LPSTR,
+  Level: DWORD,
+  pDatatypes: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPrintProcessorDatatypesW*(
+  pName: LPWSTR,
+  pPrintProcessorName: LPWSTR,
+  Level: DWORD,
+  pDatatypes: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrintProcessorA*(
+  pName: LPSTR, pEnvironment: LPSTR, pPrintProcessorName: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrintProcessorW*(
+  pName: LPWSTR, pEnvironment: LPWSTR, pPrintProcessorName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc StartDocPrinterA*(
+  hPrinter: HANDLE, Level: DWORD, pDocInfo: LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc StartDocPrinterW*(
+  hPrinter: HANDLE, Level: DWORD, pDocInfo: LPBYTE
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc StartPagePrinter*(
+  hPrinter: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc WritePrinter*(
+  hPrinter: HANDLE, pBuf: LPVOID, cbBuf: DWORD, pcWritten: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc FlushPrinter*(
+  hPrinter: HANDLE, pBuf: LPVOID, cbBuf: DWORD, pcWritten: LPDWORD, cSleep: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EndPagePrinter*(
+  hPrinter: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AbortPrinter*(
+  hPrinter: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc ReadPrinter*(
+  hPrinter: HANDLE, pBuf: LPVOID, cbBuf: DWORD, pNoBytesRead: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EndDocPrinter*(
+  hPrinter: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddJobA*(
+  hPrinter: HANDLE, Level: DWORD, pData: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddJobW*(
+  hPrinter: HANDLE, Level: DWORD, pData: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc ScheduleJob*(
+  hPrinter: HANDLE, JobId: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc PrinterProperties*(
+  hWnd: HWND, hPrinter: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DocumentPropertiesA*(
+  hWnd: HWND,
+  hPrinter: HANDLE,
+  pDeviceName: LPSTR,
+  pDevModeOutput: PDEVMODEA,
+  pDevModeInput: PDEVMODEA,
+  fMode: DWORD,
+): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DocumentPropertiesW*(
+  hWnd: HWND,
+  hPrinter: HANDLE,
+  pDeviceName: LPWSTR,
+  pDevModeOutput: PDEVMODEW,
+  pDevModeInput: PDEVMODEW,
+  fMode: DWORD,
+): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AdvancedDocumentPropertiesA*(
+  hWnd: HWND,
+  hPrinter: HANDLE,
+  pDeviceName: LPSTR,
+  pDevModeOutput: PDEVMODEA,
+  pDevModeInput: PDEVMODEA,
+): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AdvancedDocumentPropertiesW*(
+  hWnd: HWND,
+  hPrinter: HANDLE,
+  pDeviceName: LPWSTR,
+  pDevModeOutput: PDEVMODEW,
+  pDevModeInput: PDEVMODEW,
+): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc ExtDeviceMode*(
+  hWnd: HWND,
+  hInst: HANDLE,
+  pDevModeOutput: LPDEVMODEA,
+  pDeviceName: LPSTR,
+  pPort: LPSTR,
+  pDevModeInput: LPDEVMODEA,
+  pProfile: LPSTR,
+  fMode: DWORD,
+): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrinterDataA*(
+  hPrinter: HANDLE,
+  pValueName: LPSTR,
+  pType: LPDWORD,
+  pData: LPBYTE,
+  nSize: DWORD,
+  pcbNeeded: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrinterDataW*(
+  hPrinter: HANDLE,
+  pValueName: LPWSTR,
+  pType: LPDWORD,
+  pData: LPBYTE,
+  nSize: DWORD,
+  pcbNeeded: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrinterDataExA*(
+  hPrinter: HANDLE,
+  pKeyName: LPCSTR,
+  pValueName: LPCSTR,
+  pType: LPDWORD,
+  pData: LPBYTE,
+  nSize: DWORD,
+  pcbNeeded: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrinterDataExW*(
+  hPrinter: HANDLE,
+  pKeyName: LPCWSTR,
+  pValueName: LPCWSTR,
+  pType: LPDWORD,
+  pData: LPBYTE,
+  nSize: DWORD,
+  pcbNeeded: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPrinterDataA*(
+  hPrinter: HANDLE,
+  dwIndex: DWORD,
+  pValueName: LPSTR,
+  cbValueName: DWORD,
+  pcbValueName: LPDWORD,
+  pType: LPDWORD,
+  pData: LPBYTE,
+  cbData: DWORD,
+  pcbData: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPrinterDataW*(
+  hPrinter: HANDLE,
+  dwIndex: DWORD,
+  pValueName: LPWSTR,
+  cbValueName: DWORD,
+  pcbValueName: LPDWORD,
+  pType: LPDWORD,
+  pData: LPBYTE,
+  cbData: DWORD,
+  pcbData: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPrinterDataExA*(
+  hPrinter: HANDLE,
+  pKeyName: LPCSTR,
+  pEnumValues: LPBYTE,
+  cbEnumValues: DWORD,
+  pcbEnumValues: LPDWORD,
+  pnEnumValues: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPrinterDataExW*(
+  hPrinter: HANDLE,
+  pKeyName: LPCWSTR,
+  pEnumValues: LPBYTE,
+  cbEnumValues: DWORD,
+  pcbEnumValues: LPDWORD,
+  pnEnumValues: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPrinterKeyA*(
+  hPrinter: HANDLE,
+  pKeyName: LPCSTR,
+  pSubkey: LPSTR,
+  cbSubkey: DWORD,
+  pcbSubkey: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPrinterKeyW*(
+  hPrinter: HANDLE,
+  pKeyName: LPCWSTR,
+  pSubkey: LPWSTR,
+  cbSubkey: DWORD,
+  pcbSubkey: LPDWORD,
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc SetPrinterDataA*(
+  hPrinter: HANDLE, pValueName: LPSTR, Type: DWORD, pData: LPBYTE, cbData: DWORD
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc SetPrinterDataW*(
+  hPrinter: HANDLE, pValueName: LPWSTR, Type: DWORD, pData: LPBYTE, cbData: DWORD
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc SetPrinterDataExA*(
+  hPrinter: HANDLE,
+  pKeyName: LPCSTR,
+  pValueName: LPCSTR,
+  Type: DWORD,
+  pData: LPBYTE,
+  cbData: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc SetPrinterDataExW*(
+  hPrinter: HANDLE,
+  pKeyName: LPCWSTR,
+  pValueName: LPCWSTR,
+  Type: DWORD,
+  pData: LPBYTE,
+  cbData: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinterDataA*(
+  hPrinter: HANDLE, pValueName: LPSTR
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinterDataW*(
+  hPrinter: HANDLE, pValueName: LPWSTR
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinterDataExA*(
+  hPrinter: HANDLE, pKeyName: LPCSTR, pValueName: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinterDataExW*(
+  hPrinter: HANDLE, pKeyName: LPCWSTR, pValueName: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinterKeyA*(
+  hPrinter: HANDLE, pKeyName: LPCSTR
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinterKeyW*(
+  hPrinter: HANDLE, pKeyName: LPCWSTR
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc WaitForPrinterChange*(
+  hPrinter: HANDLE, Flags: DWORD
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc FindFirstPrinterChangeNotification*(
+  hPrinter: HANDLE, fdwFlags: DWORD, fdwOptions: DWORD, pPrinterNotifyOptions: LPVOID
+): HANDLE {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc FindNextPrinterChangeNotification*(
+  hChange: HANDLE,
+  pdwChange: PDWORD,
+  pPrinterNotifyOptions: LPVOID,
+  ppPrinterNotifyInfo: ptr LPVOID,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc FreePrinterNotifyInfo*(
+  pPrinterNotifyInfo: PPRINTER_NOTIFY_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc FindClosePrinterChangeNotification*(
+  hChange: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc PrinterMessageBoxA*(
+  hPrinter: HANDLE,
+  Error: DWORD,
+  hWnd: HWND,
+  pText: LPSTR,
+  pCaption: LPSTR,
+  dwType: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc PrinterMessageBoxW*(
+  hPrinter: HANDLE,
+  Error: DWORD,
+  hWnd: HWND,
+  pText: LPWSTR,
+  pCaption: LPWSTR,
+  dwType: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc ClosePrinter*(
+  hPrinter: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddFormA*(
+  hPrinter: HANDLE, Level: DWORD, pForm: LPBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddFormW*(
+  hPrinter: HANDLE, Level: DWORD, pForm: LPBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeleteFormA*(
+  hPrinter: HANDLE, pFormName: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeleteFormW*(
+  hPrinter: HANDLE, pFormName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetFormA*(
+  hPrinter: HANDLE,
+  pFormName: LPSTR,
+  Level: DWORD,
+  pForm: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetFormW*(
+  hPrinter: HANDLE,
+  pFormName: LPWSTR,
+  Level: DWORD,
+  pForm: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc SetFormA*(
+  hPrinter: HANDLE, pFormName: LPSTR, Level: DWORD, pForm: LPBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc SetFormW*(
+  hPrinter: HANDLE, pFormName: LPWSTR, Level: DWORD, pForm: LPBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumFormsA*(
+  hPrinter: HANDLE,
+  Level: DWORD,
+  pForm: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumFormsW*(
+  hPrinter: HANDLE,
+  Level: DWORD,
+  pForm: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumMonitorsA*(
+  pName: LPSTR,
+  Level: DWORD,
+  pMonitor: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumMonitorsW*(
+  pName: LPWSTR,
+  Level: DWORD,
+  pMonitor: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddMonitorA*(
+  pName: LPSTR, Level: DWORD, pMonitorInfo: LPBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddMonitorW*(
+  pName: LPWSTR, Level: DWORD, pMonitorInfo: LPBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeleteMonitorA*(
+  pName: LPSTR, pEnvironment: LPSTR, pMonitorName: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeleteMonitorW*(
+  pName: LPWSTR, pEnvironment: LPWSTR, pMonitorName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPortsA*(
+  pName: LPSTR,
+  Level: DWORD,
+  pPorts: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc EnumPortsW*(
+  pName: LPWSTR,
+  Level: DWORD,
+  pPorts: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+  pcReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPortA*(
+  pName: LPSTR, hWnd: HWND, pMonitorName: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPortW*(
+  pName: LPWSTR, hWnd: HWND, pMonitorName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc ConfigurePortA*(
+  pName: LPSTR, hWnd: HWND, pPortName: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc ConfigurePortW*(
+  pName: LPWSTR, hWnd: HWND, pPortName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePortA*(
+  pName: LPSTR, hWnd: HWND, pPortName: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePortW*(
+  pName: LPWSTR, hWnd: HWND, pPortName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc XcvDataW*(
+  hXcv: HANDLE,
+  pszDataName: PCWSTR,
+  pInputData: PBYTE,
+  cbInputData: DWORD,
+  pOutputData: PBYTE,
+  cbOutputData: DWORD,
+  pcbOutputNeeded: PDWORD,
+  pdwStatus: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc XcvData*(
+  hXcv: HANDLE,
+  pszDataName: PCWSTR,
+  pInputData: PBYTE,
+  cbInputData: DWORD,
+  pOutputData: PBYTE,
+  cbOutputData: DWORD,
+  pcbOutputNeeded: PDWORD,
+  pdwStatus: PDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "XcvDataW".}
+
+proc GetDefaultPrinterA*(
+  pszBuffer: LPSTR, pcchBuffer: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetDefaultPrinterW*(
+  pszBuffer: LPWSTR, pcchBuffer: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc SetDefaultPrinterA*(
+  pszPrinter: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc SetDefaultPrinterW*(
+  pszPrinter: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc SetPortA*(
+  pName: LPSTR, pPortName: LPSTR, dwLevel: DWORD, pPortInfo: LPBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc SetPortW*(
+  pName: LPWSTR, pPortName: LPWSTR, dwLevel: DWORD, pPortInfo: LPBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPrinterConnectionA*(
+  pName: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPrinterConnectionW*(
+  pName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinterConnectionA*(
+  pName: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinterConnectionW*(
+  pName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc ConnectToPrinterDlg*(
+  hwnd: HWND, Flags: DWORD
+): HANDLE {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPrintProvidorA*(
+  pName: LPSTR, level: DWORD, pProvidorInfo: LPBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPrintProvidorW*(
+  pName: LPWSTR, level: DWORD, pProvidorInfo: LPBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrintProvidorA*(
+  pName: LPSTR, pEnvironment: LPSTR, pPrintProvidorName: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrintProvidorW*(
+  pName: LPWSTR, pEnvironment: LPWSTR, pPrintProvidorName: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc IsValidDevmodeA*(
+  pDevmode: PDEVMODEA, DevmodeSize: int
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc IsValidDevmodeW*(
+  pDevmode: PDEVMODEW, DevmodeSize: int
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPrinterConnection2W*(
+  hWnd: HWND, pszName: LPCWSTR, dwLevel: DWORD, pConnectionInfo: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc AddPrinterConnection2A*(
+  hWnd: HWND, pszName: LPCSTR, dwLevel: DWORD, pConnectionInfo: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinterDriverPackageA*(
+  pszServer: LPCSTR, pszInfPath: LPCSTR, pszEnvironment: LPCSTR
+): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc DeletePrinterDriverPackageW*(
+  pszServer: LPCWSTR, pszInfPath: LPCWSTR, pszEnvironment: LPCWSTR
+): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc ReportJobProcessingProgress*(
+  printerHandle: HANDLE,
+  jobId: ULONG,
+  jobOperation: EPrintXPSJobOperation,
+  jobProgress: EPrintXPSJobProgress,
+): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetCorePrinterDriversA*(
+  pszServer: LPCSTR,
+  pszEnvironment: LPCSTR,
+  pszzCoreDriverDependencies: LPCSTR,
+  cCorePrinterDrivers: DWORD,
+  pCorePrinterDrivers: PCORE_PRINTER_DRIVERA,
+): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetCorePrinterDriversW*(
+  pszServer: LPCWSTR,
+  pszEnvironment: LPCWSTR,
+  pszzCoreDriverDependencies: LPCWSTR,
+  cCorePrinterDrivers: DWORD,
+  pCorePrinterDrivers: PCORE_PRINTER_DRIVERW,
+): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrinterDriver2A*(
+  hWnd: HWND,
+  hPrinter: HANDLE,
+  pEnvironment: LPSTR,
+  Level: DWORD,
+  pDriverInfo: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrinterDriver2W*(
+  hWnd: HWND,
+  hPrinter: HANDLE,
+  pEnvironment: LPWSTR,
+  Level: DWORD,
+  pDriverInfo: LPBYTE,
+  cbBuf: DWORD,
+  pcbNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrinterDriverPackagePathA*(
+  pszServer: LPCSTR,
+  pszEnvironment: LPCSTR,
+  pszLanguage: LPCSTR,
+  pszPackageID: LPCSTR,
+  pszDriverPackageCab: LPSTR,
+  cchDriverPackageCab: DWORD,
+  pcchRequiredSize: LPDWORD,
+): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc GetPrinterDriverPackagePathW*(
+  pszServer: LPCWSTR,
+  pszEnvironment: LPCWSTR,
+  pszLanguage: LPCWSTR,
+  pszPackageID: LPCWSTR,
+  pszDriverPackageCab: LPWSTR,
+  cchDriverPackageCab: DWORD,
+  pcchRequiredSize: LPDWORD,
+): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc CommitSpoolData*(
+  hPrinter: HANDLE, hSpoolFile: HANDLE, cbCommit: DWORD
+): HANDLE {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc CloseSpoolFileHandle*(
+  hPrinter: HANDLE, hSpoolFile: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
 when winimUnicode:
-  type
-    LPPRINTER_DEFAULTS* = LPPRINTER_DEFAULTSW
+  type LPPRINTER_DEFAULTS* = LPPRINTER_DEFAULTSW
 when winimAnsi:
-  type
-    LPPRINTER_DEFAULTS* = LPPRINTER_DEFAULTSA
-proc OpenPrinter2A*(pPrinterName: LPCSTR, phPrinter: LPHANDLE, pDefault: LPPRINTER_DEFAULTS, pOptions: PPRINTER_OPTIONS): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc OpenPrinter2W*(pPrinterName: LPCWSTR, phPrinter: LPHANDLE, pDefault: LPPRINTER_DEFAULTS, pOptions: PPRINTER_OPTIONS): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc UploadPrinterDriverPackageA*(pszServer: LPCSTR, pszInfPath: LPCSTR, pszEnvironment: LPCSTR, dwFlags: DWORD, hwnd: HWND, pszDestInfPath: LPSTR, pcchDestInfPath: PULONG): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
-proc UploadPrinterDriverPackageW*(pszServer: LPCWSTR, pszInfPath: LPCWSTR, pszEnvironment: LPCWSTR, dwFlags: DWORD, hwnd: HWND, pszDestInfPath: LPWSTR, pcchDestInfPath: PULONG): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+  type LPPRINTER_DEFAULTS* = LPPRINTER_DEFAULTSA
+proc OpenPrinter2A*(
+  pPrinterName: LPCSTR,
+  phPrinter: LPHANDLE,
+  pDefault: LPPRINTER_DEFAULTS,
+  pOptions: PPRINTER_OPTIONS,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc OpenPrinter2W*(
+  pPrinterName: LPCWSTR,
+  phPrinter: LPHANDLE,
+  pDefault: LPPRINTER_DEFAULTS,
+  pOptions: PPRINTER_OPTIONS,
+): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc UploadPrinterDriverPackageA*(
+  pszServer: LPCSTR,
+  pszInfPath: LPCSTR,
+  pszEnvironment: LPCSTR,
+  dwFlags: DWORD,
+  hwnd: HWND,
+  pszDestInfPath: LPSTR,
+  pcchDestInfPath: PULONG,
+): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
+proc UploadPrinterDriverPackageW*(
+  pszServer: LPCWSTR,
+  pszInfPath: LPCWSTR,
+  pszEnvironment: LPCWSTR,
+  dwFlags: DWORD,
+  hwnd: HWND,
+  pszDestInfPath: LPWSTR,
+  pcchDestInfPath: PULONG,
+): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc.}
+
 when winimUnicode:
   type
     PRINTER_INFO_1* = PRINTER_INFO_1W
@@ -1367,69 +2225,438 @@
     PFORM_INFO_2* = PFORM_INFO_2W
     CORE_PRINTER_DRIVER* = CORE_PRINTER_DRIVERW
     PCORE_PRINTER_DRIVER* = PCORE_PRINTER_DRIVERW
-  proc EnumPrinters*(Flags: DWORD, Name: LPWSTR, Level: DWORD, pPrinterEnum: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrintersW".}
-  proc OpenPrinter*(pPrinterName: LPWSTR, phPrinter: LPHANDLE, pDefault: LPPRINTER_DEFAULTSW): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "OpenPrinterW".}
-  proc ResetPrinter*(hPrinter: HANDLE, pDefault: LPPRINTER_DEFAULTSW): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "ResetPrinterW".}
-  proc SetJob*(hPrinter: HANDLE, JobId: DWORD, Level: DWORD, pJob: LPBYTE, Command: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetJobW".}
-  proc GetJob*(hPrinter: HANDLE, JobId: DWORD, Level: DWORD, pJob: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetJobW".}
-  proc EnumJobs*(hPrinter: HANDLE, FirstJob: DWORD, NoJobs: DWORD, Level: DWORD, pJob: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumJobsW".}
-  proc AddPrinter*(pName: LPWSTR, Level: DWORD, pPrinter: LPBYTE): HANDLE {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterW".}
-  proc SetPrinter*(hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, Command: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPrinterW".}
-  proc GetPrinter*(hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterW".}
-  proc AddPrinterDriver*(pName: LPWSTR, Level: DWORD, pDriverInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterDriverW".}
-  proc AddPrinterDriverEx*(pName: LPWSTR, Level: DWORD, pDriverInfo: LPBYTE, dwFileCopyFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterDriverExW".}
-  proc EnumPrinterDrivers*(pName: LPWSTR, pEnvironment: LPWSTR, Level: DWORD, pDriverInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterDriversW".}
-  proc GetPrinterDriver*(hPrinter: HANDLE, pEnvironment: LPWSTR, Level: DWORD, pDriverInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriverW".}
-  proc GetPrinterDriverDirectory*(pName: LPWSTR, pEnvironment: LPWSTR, Level: DWORD, pDriverDirectory: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriverDirectoryW".}
-  proc DeletePrinterDriver*(pName: LPWSTR, pEnvironment: LPWSTR, pDriverName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDriverW".}
-  proc DeletePrinterDriverEx*(pName: LPWSTR, pEnvironment: LPWSTR, pDriverName: LPWSTR, dwDeleteFlag: DWORD, dwVersionFlag: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDriverExW".}
-  proc AddPrintProcessor*(pName: LPWSTR, pEnvironment: LPWSTR, pPathName: LPWSTR, pPrintProcessorName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrintProcessorW".}
-  proc EnumPrintProcessors*(pName: LPWSTR, pEnvironment: LPWSTR, Level: DWORD, pPrintProcessorInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrintProcessorsW".}
-  proc GetPrintProcessorDirectory*(pName: LPWSTR, pEnvironment: LPWSTR, Level: DWORD, pPrintProcessorInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrintProcessorDirectoryW".}
-  proc EnumPrintProcessorDatatypes*(pName: LPWSTR, pPrintProcessorName: LPWSTR, Level: DWORD, pDatatypes: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrintProcessorDatatypesW".}
-  proc DeletePrintProcessor*(pName: LPWSTR, pEnvironment: LPWSTR, pPrintProcessorName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrintProcessorW".}
-  proc StartDocPrinter*(hPrinter: HANDLE, Level: DWORD, pDocInfo: LPBYTE): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "StartDocPrinterW".}
-  proc AddJob*(hPrinter: HANDLE, Level: DWORD, pData: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddJobW".}
-  proc DocumentProperties*(hWnd: HWND, hPrinter: HANDLE, pDeviceName: LPWSTR, pDevModeOutput: PDEVMODEW, pDevModeInput: PDEVMODEW, fMode: DWORD): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc: "DocumentPropertiesW".}
-  proc AdvancedDocumentProperties*(hWnd: HWND, hPrinter: HANDLE, pDeviceName: LPWSTR, pDevModeOutput: PDEVMODEW, pDevModeInput: PDEVMODEW): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc: "AdvancedDocumentPropertiesW".}
-  proc GetPrinterData*(hPrinter: HANDLE, pValueName: LPWSTR, pType: LPDWORD, pData: LPBYTE, nSize: DWORD, pcbNeeded: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDataW".}
-  proc GetPrinterDataEx*(hPrinter: HANDLE, pKeyName: LPCWSTR, pValueName: LPCWSTR, pType: LPDWORD, pData: LPBYTE, nSize: DWORD, pcbNeeded: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDataExW".}
-  proc EnumPrinterData*(hPrinter: HANDLE, dwIndex: DWORD, pValueName: LPWSTR, cbValueName: DWORD, pcbValueName: LPDWORD, pType: LPDWORD, pData: LPBYTE, cbData: DWORD, pcbData: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterDataW".}
-  proc EnumPrinterDataEx*(hPrinter: HANDLE, pKeyName: LPCWSTR, pEnumValues: LPBYTE, cbEnumValues: DWORD, pcbEnumValues: LPDWORD, pnEnumValues: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterDataExW".}
-  proc EnumPrinterKey*(hPrinter: HANDLE, pKeyName: LPCWSTR, pSubkey: LPWSTR, cbSubkey: DWORD, pcbSubkey: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterKeyW".}
-  proc SetPrinterData*(hPrinter: HANDLE, pValueName: LPWSTR, Type: DWORD, pData: LPBYTE, cbData: DWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPrinterDataW".}
-  proc SetPrinterDataEx*(hPrinter: HANDLE, pKeyName: LPCWSTR, pValueName: LPCWSTR, Type: DWORD, pData: LPBYTE, cbData: DWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPrinterDataExW".}
-  proc DeletePrinterData*(hPrinter: HANDLE, pValueName: LPWSTR): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDataW".}
-  proc DeletePrinterDataEx*(hPrinter: HANDLE, pKeyName: LPCWSTR, pValueName: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDataExW".}
-  proc DeletePrinterKey*(hPrinter: HANDLE, pKeyName: LPCWSTR): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterKeyW".}
-  proc PrinterMessageBox*(hPrinter: HANDLE, Error: DWORD, hWnd: HWND, pText: LPWSTR, pCaption: LPWSTR, dwType: DWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "PrinterMessageBoxW".}
-  proc AddForm*(hPrinter: HANDLE, Level: DWORD, pForm: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddFormW".}
-  proc DeleteForm*(hPrinter: HANDLE, pFormName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeleteFormW".}
-  proc GetForm*(hPrinter: HANDLE, pFormName: LPWSTR, Level: DWORD, pForm: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetFormW".}
-  proc SetForm*(hPrinter: HANDLE, pFormName: LPWSTR, Level: DWORD, pForm: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetFormW".}
-  proc EnumForms*(hPrinter: HANDLE, Level: DWORD, pForm: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumFormsW".}
-  proc EnumMonitors*(pName: LPWSTR, Level: DWORD, pMonitor: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumMonitorsW".}
-  proc AddMonitor*(pName: LPWSTR, Level: DWORD, pMonitorInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddMonitorW".}
-  proc DeleteMonitor*(pName: LPWSTR, pEnvironment: LPWSTR, pMonitorName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeleteMonitorW".}
-  proc EnumPorts*(pName: LPWSTR, Level: DWORD, pPorts: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPortsW".}
-  proc AddPort*(pName: LPWSTR, hWnd: HWND, pMonitorName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPortW".}
-  proc ConfigurePort*(pName: LPWSTR, hWnd: HWND, pPortName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "ConfigurePortW".}
-  proc DeletePort*(pName: LPWSTR, hWnd: HWND, pPortName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePortW".}
-  proc GetDefaultPrinter*(pszBuffer: LPWSTR, pcchBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetDefaultPrinterW".}
-  proc SetDefaultPrinter*(pszPrinter: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetDefaultPrinterW".}
-  proc SetPort*(pName: LPWSTR, pPortName: LPWSTR, dwLevel: DWORD, pPortInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPortW".}
-  proc AddPrinterConnection*(pName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterConnectionW".}
-  proc DeletePrinterConnection*(pName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterConnectionW".}
-  proc AddPrintProvidor*(pName: LPWSTR, level: DWORD, pProvidorInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrintProvidorW".}
-  proc DeletePrintProvidor*(pName: LPWSTR, pEnvironment: LPWSTR, pPrintProvidorName: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrintProvidorW".}
-  proc IsValidDevmode*(pDevmode: PDEVMODEW, DevmodeSize: int): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "IsValidDevmodeW".}
-  proc AddPrinterConnection2*(hWnd: HWND, pszName: LPCWSTR, dwLevel: DWORD, pConnectionInfo: PVOID): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterConnection2W".}
-  proc DeletePrinterDriverPackage*(pszServer: LPCWSTR, pszInfPath: LPCWSTR, pszEnvironment: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDriverPackageW".}
-  proc GetCorePrinterDrivers*(pszServer: LPCWSTR, pszEnvironment: LPCWSTR, pszzCoreDriverDependencies: LPCWSTR, cCorePrinterDrivers: DWORD, pCorePrinterDrivers: PCORE_PRINTER_DRIVERW): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetCorePrinterDriversW".}
-  proc GetPrinterDriver2*(hWnd: HWND, hPrinter: HANDLE, pEnvironment: LPWSTR, Level: DWORD, pDriverInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriver2W".}
-  proc GetPrinterDriverPackagePath*(pszServer: LPCWSTR, pszEnvironment: LPCWSTR, pszLanguage: LPCWSTR, pszPackageID: LPCWSTR, pszDriverPackageCab: LPWSTR, cchDriverPackageCab: DWORD, pcchRequiredSize: LPDWORD): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriverPackagePathW".}
-  proc OpenPrinter2*(pPrinterName: LPCWSTR, phPrinter: LPHANDLE, pDefault: LPPRINTER_DEFAULTS, pOptions: PPRINTER_OPTIONS): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "OpenPrinter2W".}
-  proc UploadPrinterDriverPackage*(pszServer: LPCWSTR, pszInfPath: LPCWSTR, pszEnvironment: LPCWSTR, dwFlags: DWORD, hwnd: HWND, pszDestInfPath: LPWSTR, pcchDestInfPath: PULONG): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc: "UploadPrinterDriverPackageW".}
+
+  proc EnumPrinters*(
+    Flags: DWORD,
+    Name: LPWSTR,
+    Level: DWORD,
+    pPrinterEnum: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrintersW".}
+
+  proc OpenPrinter*(
+    pPrinterName: LPWSTR, phPrinter: LPHANDLE, pDefault: LPPRINTER_DEFAULTSW
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "OpenPrinterW".}
+
+  proc ResetPrinter*(
+    hPrinter: HANDLE, pDefault: LPPRINTER_DEFAULTSW
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "ResetPrinterW".}
+
+  proc SetJob*(
+    hPrinter: HANDLE, JobId: DWORD, Level: DWORD, pJob: LPBYTE, Command: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetJobW".}
+
+  proc GetJob*(
+    hPrinter: HANDLE,
+    JobId: DWORD,
+    Level: DWORD,
+    pJob: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetJobW".}
+
+  proc EnumJobs*(
+    hPrinter: HANDLE,
+    FirstJob: DWORD,
+    NoJobs: DWORD,
+    Level: DWORD,
+    pJob: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumJobsW".}
+
+  proc AddPrinter*(
+    pName: LPWSTR, Level: DWORD, pPrinter: LPBYTE
+  ): HANDLE {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterW".}
+
+  proc SetPrinter*(
+    hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, Command: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPrinterW".}
+
+  proc GetPrinter*(
+    hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterW".}
+
+  proc AddPrinterDriver*(
+    pName: LPWSTR, Level: DWORD, pDriverInfo: LPBYTE
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterDriverW".}
+
+  proc AddPrinterDriverEx*(
+    pName: LPWSTR, Level: DWORD, pDriverInfo: LPBYTE, dwFileCopyFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterDriverExW".}
+
+  proc EnumPrinterDrivers*(
+    pName: LPWSTR,
+    pEnvironment: LPWSTR,
+    Level: DWORD,
+    pDriverInfo: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterDriversW".}
+
+  proc GetPrinterDriver*(
+    hPrinter: HANDLE,
+    pEnvironment: LPWSTR,
+    Level: DWORD,
+    pDriverInfo: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriverW".}
+
+  proc GetPrinterDriverDirectory*(
+    pName: LPWSTR,
+    pEnvironment: LPWSTR,
+    Level: DWORD,
+    pDriverDirectory: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriverDirectoryW"
+  .}
+
+  proc DeletePrinterDriver*(
+    pName: LPWSTR, pEnvironment: LPWSTR, pDriverName: LPWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDriverW"
+  .}
+
+  proc DeletePrinterDriverEx*(
+    pName: LPWSTR,
+    pEnvironment: LPWSTR,
+    pDriverName: LPWSTR,
+    dwDeleteFlag: DWORD,
+    dwVersionFlag: DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDriverExW"
+  .}
+
+  proc AddPrintProcessor*(
+    pName: LPWSTR, pEnvironment: LPWSTR, pPathName: LPWSTR, pPrintProcessorName: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrintProcessorW".}
+
+  proc EnumPrintProcessors*(
+    pName: LPWSTR,
+    pEnvironment: LPWSTR,
+    Level: DWORD,
+    pPrintProcessorInfo: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrintProcessorsW"
+  .}
+
+  proc GetPrintProcessorDirectory*(
+    pName: LPWSTR,
+    pEnvironment: LPWSTR,
+    Level: DWORD,
+    pPrintProcessorInfo: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrintProcessorDirectoryW"
+  .}
+
+  proc EnumPrintProcessorDatatypes*(
+    pName: LPWSTR,
+    pPrintProcessorName: LPWSTR,
+    Level: DWORD,
+    pDatatypes: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrintProcessorDatatypesW"
+  .}
+
+  proc DeletePrintProcessor*(
+    pName: LPWSTR, pEnvironment: LPWSTR, pPrintProcessorName: LPWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrintProcessorW"
+  .}
+
+  proc StartDocPrinter*(
+    hPrinter: HANDLE, Level: DWORD, pDocInfo: LPBYTE
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "StartDocPrinterW".}
+
+  proc AddJob*(
+    hPrinter: HANDLE, Level: DWORD, pData: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddJobW".}
+
+  proc DocumentProperties*(
+    hWnd: HWND,
+    hPrinter: HANDLE,
+    pDeviceName: LPWSTR,
+    pDevModeOutput: PDEVMODEW,
+    pDevModeInput: PDEVMODEW,
+    fMode: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc: "DocumentPropertiesW".}
+
+  proc AdvancedDocumentProperties*(
+    hWnd: HWND,
+    hPrinter: HANDLE,
+    pDeviceName: LPWSTR,
+    pDevModeOutput: PDEVMODEW,
+    pDevModeInput: PDEVMODEW,
+  ): LONG {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "AdvancedDocumentPropertiesW"
+  .}
+
+  proc GetPrinterData*(
+    hPrinter: HANDLE,
+    pValueName: LPWSTR,
+    pType: LPDWORD,
+    pData: LPBYTE,
+    nSize: DWORD,
+    pcbNeeded: LPDWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDataW".}
+
+  proc GetPrinterDataEx*(
+    hPrinter: HANDLE,
+    pKeyName: LPCWSTR,
+    pValueName: LPCWSTR,
+    pType: LPDWORD,
+    pData: LPBYTE,
+    nSize: DWORD,
+    pcbNeeded: LPDWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDataExW".}
+
+  proc EnumPrinterData*(
+    hPrinter: HANDLE,
+    dwIndex: DWORD,
+    pValueName: LPWSTR,
+    cbValueName: DWORD,
+    pcbValueName: LPDWORD,
+    pType: LPDWORD,
+    pData: LPBYTE,
+    cbData: DWORD,
+    pcbData: LPDWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterDataW".}
+
+  proc EnumPrinterDataEx*(
+    hPrinter: HANDLE,
+    pKeyName: LPCWSTR,
+    pEnumValues: LPBYTE,
+    cbEnumValues: DWORD,
+    pcbEnumValues: LPDWORD,
+    pnEnumValues: LPDWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterDataExW".}
+
+  proc EnumPrinterKey*(
+    hPrinter: HANDLE,
+    pKeyName: LPCWSTR,
+    pSubkey: LPWSTR,
+    cbSubkey: DWORD,
+    pcbSubkey: LPDWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterKeyW".}
+
+  proc SetPrinterData*(
+    hPrinter: HANDLE, pValueName: LPWSTR, Type: DWORD, pData: LPBYTE, cbData: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPrinterDataW".}
+
+  proc SetPrinterDataEx*(
+    hPrinter: HANDLE,
+    pKeyName: LPCWSTR,
+    pValueName: LPCWSTR,
+    Type: DWORD,
+    pData: LPBYTE,
+    cbData: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPrinterDataExW".}
+
+  proc DeletePrinterData*(
+    hPrinter: HANDLE, pValueName: LPWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDataW".}
+
+  proc DeletePrinterDataEx*(
+    hPrinter: HANDLE, pKeyName: LPCWSTR, pValueName: LPCWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDataExW".}
+
+  proc DeletePrinterKey*(
+    hPrinter: HANDLE, pKeyName: LPCWSTR
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterKeyW".}
+
+  proc PrinterMessageBox*(
+    hPrinter: HANDLE,
+    Error: DWORD,
+    hWnd: HWND,
+    pText: LPWSTR,
+    pCaption: LPWSTR,
+    dwType: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "PrinterMessageBoxW".}
+
+  proc AddForm*(
+    hPrinter: HANDLE, Level: DWORD, pForm: LPBYTE
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddFormW".}
+
+  proc DeleteForm*(
+    hPrinter: HANDLE, pFormName: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeleteFormW".}
+
+  proc GetForm*(
+    hPrinter: HANDLE,
+    pFormName: LPWSTR,
+    Level: DWORD,
+    pForm: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetFormW".}
+
+  proc SetForm*(
+    hPrinter: HANDLE, pFormName: LPWSTR, Level: DWORD, pForm: LPBYTE
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetFormW".}
+
+  proc EnumForms*(
+    hPrinter: HANDLE,
+    Level: DWORD,
+    pForm: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumFormsW".}
+
+  proc EnumMonitors*(
+    pName: LPWSTR,
+    Level: DWORD,
+    pMonitor: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumMonitorsW".}
+
+  proc AddMonitor*(
+    pName: LPWSTR, Level: DWORD, pMonitorInfo: LPBYTE
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddMonitorW".}
+
+  proc DeleteMonitor*(
+    pName: LPWSTR, pEnvironment: LPWSTR, pMonitorName: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeleteMonitorW".}
+
+  proc EnumPorts*(
+    pName: LPWSTR,
+    Level: DWORD,
+    pPorts: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPortsW".}
+
+  proc AddPort*(
+    pName: LPWSTR, hWnd: HWND, pMonitorName: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPortW".}
+
+  proc ConfigurePort*(
+    pName: LPWSTR, hWnd: HWND, pPortName: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "ConfigurePortW".}
+
+  proc DeletePort*(
+    pName: LPWSTR, hWnd: HWND, pPortName: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePortW".}
+
+  proc GetDefaultPrinter*(
+    pszBuffer: LPWSTR, pcchBuffer: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetDefaultPrinterW".}
+
+  proc SetDefaultPrinter*(
+    pszPrinter: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetDefaultPrinterW".}
+
+  proc SetPort*(
+    pName: LPWSTR, pPortName: LPWSTR, dwLevel: DWORD, pPortInfo: LPBYTE
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPortW".}
+
+  proc AddPrinterConnection*(
+    pName: LPWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterConnectionW"
+  .}
+
+  proc DeletePrinterConnection*(
+    pName: LPWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterConnectionW"
+  .}
+
+  proc AddPrintProvidor*(
+    pName: LPWSTR, level: DWORD, pProvidorInfo: LPBYTE
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrintProvidorW".}
+
+  proc DeletePrintProvidor*(
+    pName: LPWSTR, pEnvironment: LPWSTR, pPrintProvidorName: LPWSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrintProvidorW"
+  .}
+
+  proc IsValidDevmode*(
+    pDevmode: PDEVMODEW, DevmodeSize: int
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "IsValidDevmodeW".}
+
+  proc AddPrinterConnection2*(
+    hWnd: HWND, pszName: LPCWSTR, dwLevel: DWORD, pConnectionInfo: PVOID
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterConnection2W"
+  .}
+
+  proc DeletePrinterDriverPackage*(
+    pszServer: LPCWSTR, pszInfPath: LPCWSTR, pszEnvironment: LPCWSTR
+  ): HRESULT {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDriverPackageW"
+  .}
+
+  proc GetCorePrinterDrivers*(
+    pszServer: LPCWSTR,
+    pszEnvironment: LPCWSTR,
+    pszzCoreDriverDependencies: LPCWSTR,
+    cCorePrinterDrivers: DWORD,
+    pCorePrinterDrivers: PCORE_PRINTER_DRIVERW,
+  ): HRESULT {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "GetCorePrinterDriversW"
+  .}
+
+  proc GetPrinterDriver2*(
+    hWnd: HWND,
+    hPrinter: HANDLE,
+    pEnvironment: LPWSTR,
+    Level: DWORD,
+    pDriverInfo: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriver2W".}
+
+  proc GetPrinterDriverPackagePath*(
+    pszServer: LPCWSTR,
+    pszEnvironment: LPCWSTR,
+    pszLanguage: LPCWSTR,
+    pszPackageID: LPCWSTR,
+    pszDriverPackageCab: LPWSTR,
+    cchDriverPackageCab: DWORD,
+    pcchRequiredSize: LPDWORD,
+  ): HRESULT {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriverPackagePathW"
+  .}
+
+  proc OpenPrinter2*(
+    pPrinterName: LPCWSTR,
+    phPrinter: LPHANDLE,
+    pDefault: LPPRINTER_DEFAULTS,
+    pOptions: PPRINTER_OPTIONS,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "OpenPrinter2W".}
+
+  proc UploadPrinterDriverPackage*(
+    pszServer: LPCWSTR,
+    pszInfPath: LPCWSTR,
+    pszEnvironment: LPCWSTR,
+    dwFlags: DWORD,
+    hwnd: HWND,
+    pszDestInfPath: LPWSTR,
+    pcchDestInfPath: PULONG,
+  ): HRESULT {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "UploadPrinterDriverPackageW"
+  .}
+
 when winimAnsi:
   type
     PRINTER_INFO_1* = PRINTER_INFO_1A
@@ -1531,66 +2758,434 @@
     PFORM_INFO_2* = PFORM_INFO_2A
     CORE_PRINTER_DRIVER* = CORE_PRINTER_DRIVERA
     PCORE_PRINTER_DRIVER* = PCORE_PRINTER_DRIVERA
-  proc EnumPrinters*(Flags: DWORD, Name: LPSTR, Level: DWORD, pPrinterEnum: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrintersA".}
-  proc OpenPrinter*(pPrinterName: LPSTR, phPrinter: LPHANDLE, pDefault: LPPRINTER_DEFAULTSA): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "OpenPrinterA".}
-  proc ResetPrinter*(hPrinter: HANDLE, pDefault: LPPRINTER_DEFAULTSA): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "ResetPrinterA".}
-  proc SetJob*(hPrinter: HANDLE, JobId: DWORD, Level: DWORD, pJob: LPBYTE, Command: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetJobA".}
-  proc GetJob*(hPrinter: HANDLE, JobId: DWORD, Level: DWORD, pJob: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetJobA".}
-  proc EnumJobs*(hPrinter: HANDLE, FirstJob: DWORD, NoJobs: DWORD, Level: DWORD, pJob: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumJobsA".}
-  proc AddPrinter*(pName: LPSTR, Level: DWORD, pPrinter: LPBYTE): HANDLE {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterA".}
-  proc SetPrinter*(hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, Command: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPrinterA".}
-  proc GetPrinter*(hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterA".}
-  proc AddPrinterDriver*(pName: LPSTR, Level: DWORD, pDriverInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterDriverA".}
-  proc AddPrinterDriverEx*(pName: LPSTR, Level: DWORD, pDriverInfo: LPBYTE, dwFileCopyFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterDriverExA".}
-  proc EnumPrinterDrivers*(pName: LPSTR, pEnvironment: LPSTR, Level: DWORD, pDriverInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterDriversA".}
-  proc GetPrinterDriver*(hPrinter: HANDLE, pEnvironment: LPSTR, Level: DWORD, pDriverInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriverA".}
-  proc GetPrinterDriverDirectory*(pName: LPSTR, pEnvironment: LPSTR, Level: DWORD, pDriverDirectory: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriverDirectoryA".}
-  proc DeletePrinterDriver*(pName: LPSTR, pEnvironment: LPSTR, pDriverName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDriverA".}
-  proc DeletePrinterDriverEx*(pName: LPSTR, pEnvironment: LPSTR, pDriverName: LPSTR, dwDeleteFlag: DWORD, dwVersionFlag: DWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDriverExA".}
-  proc AddPrintProcessor*(pName: LPSTR, pEnvironment: LPSTR, pPathName: LPSTR, pPrintProcessorName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrintProcessorA".}
-  proc EnumPrintProcessors*(pName: LPSTR, pEnvironment: LPSTR, Level: DWORD, pPrintProcessorInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrintProcessorsA".}
-  proc GetPrintProcessorDirectory*(pName: LPSTR, pEnvironment: LPSTR, Level: DWORD, pPrintProcessorInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrintProcessorDirectoryA".}
-  proc EnumPrintProcessorDatatypes*(pName: LPSTR, pPrintProcessorName: LPSTR, Level: DWORD, pDatatypes: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrintProcessorDatatypesA".}
-  proc DeletePrintProcessor*(pName: LPSTR, pEnvironment: LPSTR, pPrintProcessorName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrintProcessorA".}
-  proc StartDocPrinter*(hPrinter: HANDLE, Level: DWORD, pDocInfo: LPBYTE): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "StartDocPrinterA".}
-  proc AddJob*(hPrinter: HANDLE, Level: DWORD, pData: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddJobA".}
-  proc DocumentProperties*(hWnd: HWND, hPrinter: HANDLE, pDeviceName: LPSTR, pDevModeOutput: PDEVMODEA, pDevModeInput: PDEVMODEA, fMode: DWORD): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc: "DocumentPropertiesA".}
-  proc AdvancedDocumentProperties*(hWnd: HWND, hPrinter: HANDLE, pDeviceName: LPSTR, pDevModeOutput: PDEVMODEA, pDevModeInput: PDEVMODEA): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc: "AdvancedDocumentPropertiesA".}
-  proc GetPrinterData*(hPrinter: HANDLE, pValueName: LPSTR, pType: LPDWORD, pData: LPBYTE, nSize: DWORD, pcbNeeded: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDataA".}
-  proc GetPrinterDataEx*(hPrinter: HANDLE, pKeyName: LPCSTR, pValueName: LPCSTR, pType: LPDWORD, pData: LPBYTE, nSize: DWORD, pcbNeeded: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDataExA".}
-  proc EnumPrinterData*(hPrinter: HANDLE, dwIndex: DWORD, pValueName: LPSTR, cbValueName: DWORD, pcbValueName: LPDWORD, pType: LPDWORD, pData: LPBYTE, cbData: DWORD, pcbData: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterDataA".}
-  proc EnumPrinterDataEx*(hPrinter: HANDLE, pKeyName: LPCSTR, pEnumValues: LPBYTE, cbEnumValues: DWORD, pcbEnumValues: LPDWORD, pnEnumValues: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterDataExA".}
-  proc EnumPrinterKey*(hPrinter: HANDLE, pKeyName: LPCSTR, pSubkey: LPSTR, cbSubkey: DWORD, pcbSubkey: LPDWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterKeyA".}
-  proc SetPrinterData*(hPrinter: HANDLE, pValueName: LPSTR, Type: DWORD, pData: LPBYTE, cbData: DWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPrinterDataA".}
-  proc SetPrinterDataEx*(hPrinter: HANDLE, pKeyName: LPCSTR, pValueName: LPCSTR, Type: DWORD, pData: LPBYTE, cbData: DWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPrinterDataExA".}
-  proc DeletePrinterData*(hPrinter: HANDLE, pValueName: LPSTR): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDataA".}
-  proc DeletePrinterDataEx*(hPrinter: HANDLE, pKeyName: LPCSTR, pValueName: LPCSTR): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDataExA".}
-  proc DeletePrinterKey*(hPrinter: HANDLE, pKeyName: LPCSTR): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterKeyA".}
-  proc PrinterMessageBox*(hPrinter: HANDLE, Error: DWORD, hWnd: HWND, pText: LPSTR, pCaption: LPSTR, dwType: DWORD): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "PrinterMessageBoxA".}
-  proc AddForm*(hPrinter: HANDLE, Level: DWORD, pForm: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddFormA".}
-  proc DeleteForm*(hPrinter: HANDLE, pFormName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeleteFormA".}
-  proc GetForm*(hPrinter: HANDLE, pFormName: LPSTR, Level: DWORD, pForm: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetFormA".}
-  proc SetForm*(hPrinter: HANDLE, pFormName: LPSTR, Level: DWORD, pForm: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetFormA".}
-  proc EnumForms*(hPrinter: HANDLE, Level: DWORD, pForm: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumFormsA".}
-  proc EnumMonitors*(pName: LPSTR, Level: DWORD, pMonitor: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumMonitorsA".}
-  proc AddMonitor*(pName: LPSTR, Level: DWORD, pMonitorInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddMonitorA".}
-  proc DeleteMonitor*(pName: LPSTR, pEnvironment: LPSTR, pMonitorName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeleteMonitorA".}
-  proc EnumPorts*(pName: LPSTR, Level: DWORD, pPorts: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPortsA".}
-  proc AddPort*(pName: LPSTR, hWnd: HWND, pMonitorName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPortA".}
-  proc ConfigurePort*(pName: LPSTR, hWnd: HWND, pPortName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "ConfigurePortA".}
-  proc DeletePort*(pName: LPSTR, hWnd: HWND, pPortName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePortA".}
-  proc GetDefaultPrinter*(pszBuffer: LPSTR, pcchBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetDefaultPrinterA".}
-  proc SetDefaultPrinter*(pszPrinter: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetDefaultPrinterA".}
-  proc SetPort*(pName: LPSTR, pPortName: LPSTR, dwLevel: DWORD, pPortInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPortA".}
-  proc AddPrinterConnection*(pName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterConnectionA".}
-  proc DeletePrinterConnection*(pName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterConnectionA".}
-  proc AddPrintProvidor*(pName: LPSTR, level: DWORD, pProvidorInfo: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrintProvidorA".}
-  proc DeletePrintProvidor*(pName: LPSTR, pEnvironment: LPSTR, pPrintProvidorName: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrintProvidorA".}
-  proc IsValidDevmode*(pDevmode: PDEVMODEA, DevmodeSize: int): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "IsValidDevmodeA".}
-  proc AddPrinterConnection2*(hWnd: HWND, pszName: LPCSTR, dwLevel: DWORD, pConnectionInfo: PVOID): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterConnection2A".}
-  proc DeletePrinterDriverPackage*(pszServer: LPCSTR, pszInfPath: LPCSTR, pszEnvironment: LPCSTR): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDriverPackageA".}
-  proc GetCorePrinterDrivers*(pszServer: LPCSTR, pszEnvironment: LPCSTR, pszzCoreDriverDependencies: LPCSTR, cCorePrinterDrivers: DWORD, pCorePrinterDrivers: PCORE_PRINTER_DRIVERA): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetCorePrinterDriversA".}
-  proc GetPrinterDriver2*(hWnd: HWND, hPrinter: HANDLE, pEnvironment: LPSTR, Level: DWORD, pDriverInfo: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriver2A".}
-  proc GetPrinterDriverPackagePath*(pszServer: LPCSTR, pszEnvironment: LPCSTR, pszLanguage: LPCSTR, pszPackageID: LPCSTR, pszDriverPackageCab: LPSTR, cchDriverPackageCab: DWORD, pcchRequiredSize: LPDWORD): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriverPackagePathA".}
-  proc OpenPrinter2*(pPrinterName: LPCSTR, phPrinter: LPHANDLE, pDefault: LPPRINTER_DEFAULTS, pOptions: PPRINTER_OPTIONS): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "OpenPrinter2A".}
-  proc UploadPrinterDriverPackage*(pszServer: LPCSTR, pszInfPath: LPCSTR, pszEnvironment: LPCSTR, dwFlags: DWORD, hwnd: HWND, pszDestInfPath: LPSTR, pcchDestInfPath: PULONG): HRESULT {.winapi, stdcall, dynlib: "winspool.drv", importc: "UploadPrinterDriverPackageA".}
+
+  proc EnumPrinters*(
+    Flags: DWORD,
+    Name: LPSTR,
+    Level: DWORD,
+    pPrinterEnum: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrintersA".}
+
+  proc OpenPrinter*(
+    pPrinterName: LPSTR, phPrinter: LPHANDLE, pDefault: LPPRINTER_DEFAULTSA
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "OpenPrinterA".}
+
+  proc ResetPrinter*(
+    hPrinter: HANDLE, pDefault: LPPRINTER_DEFAULTSA
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "ResetPrinterA".}
+
+  proc SetJob*(
+    hPrinter: HANDLE, JobId: DWORD, Level: DWORD, pJob: LPBYTE, Command: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetJobA".}
+
+  proc GetJob*(
+    hPrinter: HANDLE,
+    JobId: DWORD,
+    Level: DWORD,
+    pJob: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetJobA".}
+
+  proc EnumJobs*(
+    hPrinter: HANDLE,
+    FirstJob: DWORD,
+    NoJobs: DWORD,
+    Level: DWORD,
+    pJob: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumJobsA".}
+
+  proc AddPrinter*(
+    pName: LPSTR, Level: DWORD, pPrinter: LPBYTE
+  ): HANDLE {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterA".}
+
+  proc SetPrinter*(
+    hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, Command: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPrinterA".}
+
+  proc GetPrinter*(
+    hPrinter: HANDLE, Level: DWORD, pPrinter: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterA".}
+
+  proc AddPrinterDriver*(
+    pName: LPSTR, Level: DWORD, pDriverInfo: LPBYTE
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterDriverA".}
+
+  proc AddPrinterDriverEx*(
+    pName: LPSTR, Level: DWORD, pDriverInfo: LPBYTE, dwFileCopyFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterDriverExA".}
+
+  proc EnumPrinterDrivers*(
+    pName: LPSTR,
+    pEnvironment: LPSTR,
+    Level: DWORD,
+    pDriverInfo: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterDriversA".}
+
+  proc GetPrinterDriver*(
+    hPrinter: HANDLE,
+    pEnvironment: LPSTR,
+    Level: DWORD,
+    pDriverInfo: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriverA".}
+
+  proc GetPrinterDriverDirectory*(
+    pName: LPSTR,
+    pEnvironment: LPSTR,
+    Level: DWORD,
+    pDriverDirectory: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriverDirectoryA"
+  .}
+
+  proc DeletePrinterDriver*(
+    pName: LPSTR, pEnvironment: LPSTR, pDriverName: LPSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDriverA"
+  .}
+
+  proc DeletePrinterDriverEx*(
+    pName: LPSTR,
+    pEnvironment: LPSTR,
+    pDriverName: LPSTR,
+    dwDeleteFlag: DWORD,
+    dwVersionFlag: DWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDriverExA"
+  .}
+
+  proc AddPrintProcessor*(
+    pName: LPSTR, pEnvironment: LPSTR, pPathName: LPSTR, pPrintProcessorName: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrintProcessorA".}
+
+  proc EnumPrintProcessors*(
+    pName: LPSTR,
+    pEnvironment: LPSTR,
+    Level: DWORD,
+    pPrintProcessorInfo: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrintProcessorsA"
+  .}
+
+  proc GetPrintProcessorDirectory*(
+    pName: LPSTR,
+    pEnvironment: LPSTR,
+    Level: DWORD,
+    pPrintProcessorInfo: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrintProcessorDirectoryA"
+  .}
+
+  proc EnumPrintProcessorDatatypes*(
+    pName: LPSTR,
+    pPrintProcessorName: LPSTR,
+    Level: DWORD,
+    pDatatypes: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrintProcessorDatatypesA"
+  .}
+
+  proc DeletePrintProcessor*(
+    pName: LPSTR, pEnvironment: LPSTR, pPrintProcessorName: LPSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrintProcessorA"
+  .}
+
+  proc StartDocPrinter*(
+    hPrinter: HANDLE, Level: DWORD, pDocInfo: LPBYTE
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "StartDocPrinterA".}
+
+  proc AddJob*(
+    hPrinter: HANDLE, Level: DWORD, pData: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddJobA".}
+
+  proc DocumentProperties*(
+    hWnd: HWND,
+    hPrinter: HANDLE,
+    pDeviceName: LPSTR,
+    pDevModeOutput: PDEVMODEA,
+    pDevModeInput: PDEVMODEA,
+    fMode: DWORD,
+  ): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc: "DocumentPropertiesA".}
+
+  proc AdvancedDocumentProperties*(
+    hWnd: HWND,
+    hPrinter: HANDLE,
+    pDeviceName: LPSTR,
+    pDevModeOutput: PDEVMODEA,
+    pDevModeInput: PDEVMODEA,
+  ): LONG {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "AdvancedDocumentPropertiesA"
+  .}
+
+  proc GetPrinterData*(
+    hPrinter: HANDLE,
+    pValueName: LPSTR,
+    pType: LPDWORD,
+    pData: LPBYTE,
+    nSize: DWORD,
+    pcbNeeded: LPDWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDataA".}
+
+  proc GetPrinterDataEx*(
+    hPrinter: HANDLE,
+    pKeyName: LPCSTR,
+    pValueName: LPCSTR,
+    pType: LPDWORD,
+    pData: LPBYTE,
+    nSize: DWORD,
+    pcbNeeded: LPDWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDataExA".}
+
+  proc EnumPrinterData*(
+    hPrinter: HANDLE,
+    dwIndex: DWORD,
+    pValueName: LPSTR,
+    cbValueName: DWORD,
+    pcbValueName: LPDWORD,
+    pType: LPDWORD,
+    pData: LPBYTE,
+    cbData: DWORD,
+    pcbData: LPDWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterDataA".}
+
+  proc EnumPrinterDataEx*(
+    hPrinter: HANDLE,
+    pKeyName: LPCSTR,
+    pEnumValues: LPBYTE,
+    cbEnumValues: DWORD,
+    pcbEnumValues: LPDWORD,
+    pnEnumValues: LPDWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterDataExA".}
+
+  proc EnumPrinterKey*(
+    hPrinter: HANDLE,
+    pKeyName: LPCSTR,
+    pSubkey: LPSTR,
+    cbSubkey: DWORD,
+    pcbSubkey: LPDWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrinterKeyA".}
+
+  proc SetPrinterData*(
+    hPrinter: HANDLE, pValueName: LPSTR, Type: DWORD, pData: LPBYTE, cbData: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPrinterDataA".}
+
+  proc SetPrinterDataEx*(
+    hPrinter: HANDLE,
+    pKeyName: LPCSTR,
+    pValueName: LPCSTR,
+    Type: DWORD,
+    pData: LPBYTE,
+    cbData: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPrinterDataExA".}
+
+  proc DeletePrinterData*(
+    hPrinter: HANDLE, pValueName: LPSTR
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDataA".}
+
+  proc DeletePrinterDataEx*(
+    hPrinter: HANDLE, pKeyName: LPCSTR, pValueName: LPCSTR
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDataExA".}
+
+  proc DeletePrinterKey*(
+    hPrinter: HANDLE, pKeyName: LPCSTR
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterKeyA".}
+
+  proc PrinterMessageBox*(
+    hPrinter: HANDLE,
+    Error: DWORD,
+    hWnd: HWND,
+    pText: LPSTR,
+    pCaption: LPSTR,
+    dwType: DWORD,
+  ): DWORD {.winapi, stdcall, dynlib: "winspool.drv", importc: "PrinterMessageBoxA".}
+
+  proc AddForm*(
+    hPrinter: HANDLE, Level: DWORD, pForm: LPBYTE
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddFormA".}
+
+  proc DeleteForm*(
+    hPrinter: HANDLE, pFormName: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeleteFormA".}
+
+  proc GetForm*(
+    hPrinter: HANDLE,
+    pFormName: LPSTR,
+    Level: DWORD,
+    pForm: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetFormA".}
+
+  proc SetForm*(
+    hPrinter: HANDLE, pFormName: LPSTR, Level: DWORD, pForm: LPBYTE
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetFormA".}
+
+  proc EnumForms*(
+    hPrinter: HANDLE,
+    Level: DWORD,
+    pForm: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumFormsA".}
+
+  proc EnumMonitors*(
+    pName: LPSTR,
+    Level: DWORD,
+    pMonitor: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumMonitorsA".}
+
+  proc AddMonitor*(
+    pName: LPSTR, Level: DWORD, pMonitorInfo: LPBYTE
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddMonitorA".}
+
+  proc DeleteMonitor*(
+    pName: LPSTR, pEnvironment: LPSTR, pMonitorName: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeleteMonitorA".}
+
+  proc EnumPorts*(
+    pName: LPSTR,
+    Level: DWORD,
+    pPorts: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+    pcReturned: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPortsA".}
+
+  proc AddPort*(
+    pName: LPSTR, hWnd: HWND, pMonitorName: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPortA".}
+
+  proc ConfigurePort*(
+    pName: LPSTR, hWnd: HWND, pPortName: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "ConfigurePortA".}
+
+  proc DeletePort*(
+    pName: LPSTR, hWnd: HWND, pPortName: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePortA".}
+
+  proc GetDefaultPrinter*(
+    pszBuffer: LPSTR, pcchBuffer: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetDefaultPrinterA".}
+
+  proc SetDefaultPrinter*(
+    pszPrinter: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetDefaultPrinterA".}
+
+  proc SetPort*(
+    pName: LPSTR, pPortName: LPSTR, dwLevel: DWORD, pPortInfo: LPBYTE
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetPortA".}
+
+  proc AddPrinterConnection*(
+    pName: LPSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterConnectionA"
+  .}
+
+  proc DeletePrinterConnection*(
+    pName: LPSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterConnectionA"
+  .}
+
+  proc AddPrintProvidor*(
+    pName: LPSTR, level: DWORD, pProvidorInfo: LPBYTE
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrintProvidorA".}
+
+  proc DeletePrintProvidor*(
+    pName: LPSTR, pEnvironment: LPSTR, pPrintProvidorName: LPSTR
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrintProvidorA"
+  .}
+
+  proc IsValidDevmode*(
+    pDevmode: PDEVMODEA, DevmodeSize: int
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "IsValidDevmodeA".}
+
+  proc AddPrinterConnection2*(
+    hWnd: HWND, pszName: LPCSTR, dwLevel: DWORD, pConnectionInfo: PVOID
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "AddPrinterConnection2A"
+  .}
+
+  proc DeletePrinterDriverPackage*(
+    pszServer: LPCSTR, pszInfPath: LPCSTR, pszEnvironment: LPCSTR
+  ): HRESULT {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "DeletePrinterDriverPackageA"
+  .}
+
+  proc GetCorePrinterDrivers*(
+    pszServer: LPCSTR,
+    pszEnvironment: LPCSTR,
+    pszzCoreDriverDependencies: LPCSTR,
+    cCorePrinterDrivers: DWORD,
+    pCorePrinterDrivers: PCORE_PRINTER_DRIVERA,
+  ): HRESULT {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "GetCorePrinterDriversA"
+  .}
+
+  proc GetPrinterDriver2*(
+    hWnd: HWND,
+    hPrinter: HANDLE,
+    pEnvironment: LPSTR,
+    Level: DWORD,
+    pDriverInfo: LPBYTE,
+    cbBuf: DWORD,
+    pcbNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriver2A".}
+
+  proc GetPrinterDriverPackagePath*(
+    pszServer: LPCSTR,
+    pszEnvironment: LPCSTR,
+    pszLanguage: LPCSTR,
+    pszPackageID: LPCSTR,
+    pszDriverPackageCab: LPSTR,
+    cchDriverPackageCab: DWORD,
+    pcchRequiredSize: LPDWORD,
+  ): HRESULT {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "GetPrinterDriverPackagePathA"
+  .}
+
+  proc OpenPrinter2*(
+    pPrinterName: LPCSTR,
+    phPrinter: LPHANDLE,
+    pDefault: LPPRINTER_DEFAULTS,
+    pOptions: PPRINTER_OPTIONS,
+  ): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "OpenPrinter2A".}
+
+  proc UploadPrinterDriverPackage*(
+    pszServer: LPCSTR,
+    pszInfPath: LPCSTR,
+    pszEnvironment: LPCSTR,
+    dwFlags: DWORD,
+    hwnd: HWND,
+    pszDestInfPath: LPSTR,
+    pcchDestInfPath: PULONG,
+  ): HRESULT {.
+    winapi, stdcall, dynlib: "winspool.drv", importc: "UploadPrinterDriverPackageA"
+  .}
--- a/semicongine/thirdparty/winim/winim/inc/winsvc.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winsvc.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -15,13 +15,16 @@
   SERVICE_STATUS_HANDLE* = HANDLE
   SERVICE_DESCRIPTIONA* {.pure.} = object
     lpDescription*: LPSTR
+
   LPSERVICE_DESCRIPTIONA* = ptr SERVICE_DESCRIPTIONA
   SERVICE_DESCRIPTIONW* {.pure.} = object
     lpDescription*: LPWSTR
+
   LPSERVICE_DESCRIPTIONW* = ptr SERVICE_DESCRIPTIONW
   SC_ACTION* {.pure.} = object
     Type*: SC_ACTION_TYPE
     Delay*: DWORD
+
   LPSC_ACTION* = ptr SC_ACTION
   SERVICE_FAILURE_ACTIONSA* {.pure.} = object
     dwResetPeriod*: DWORD
@@ -29,6 +32,7 @@
     lpCommand*: LPSTR
     cActions*: DWORD
     lpsaActions*: ptr SC_ACTION
+
   LPSERVICE_FAILURE_ACTIONSA* = ptr SERVICE_FAILURE_ACTIONSA
   SERVICE_FAILURE_ACTIONSW* {.pure.} = object
     dwResetPeriod*: DWORD
@@ -36,6 +40,7 @@
     lpCommand*: LPWSTR
     cActions*: DWORD
     lpsaActions*: ptr SC_ACTION
+
   LPSERVICE_FAILURE_ACTIONSW* = ptr SERVICE_FAILURE_ACTIONSW
   LPSC_HANDLE* = ptr SC_HANDLE
   SERVICE_STATUS* {.pure.} = object
@@ -46,6 +51,7 @@
     dwServiceSpecificExitCode*: DWORD
     dwCheckPoint*: DWORD
     dwWaitHint*: DWORD
+
   LPSERVICE_STATUS* = ptr SERVICE_STATUS
   SERVICE_STATUS_PROCESS* {.pure.} = object
     dwServiceType*: DWORD
@@ -57,37 +63,44 @@
     dwWaitHint*: DWORD
     dwProcessId*: DWORD
     dwServiceFlags*: DWORD
+
   LPSERVICE_STATUS_PROCESS* = ptr SERVICE_STATUS_PROCESS
   ENUM_SERVICE_STATUSA* {.pure.} = object
     lpServiceName*: LPSTR
     lpDisplayName*: LPSTR
     ServiceStatus*: SERVICE_STATUS
+
   LPENUM_SERVICE_STATUSA* = ptr ENUM_SERVICE_STATUSA
   ENUM_SERVICE_STATUSW* {.pure.} = object
     lpServiceName*: LPWSTR
     lpDisplayName*: LPWSTR
     ServiceStatus*: SERVICE_STATUS
+
   LPENUM_SERVICE_STATUSW* = ptr ENUM_SERVICE_STATUSW
   ENUM_SERVICE_STATUS_PROCESSA* {.pure.} = object
     lpServiceName*: LPSTR
     lpDisplayName*: LPSTR
     ServiceStatusProcess*: SERVICE_STATUS_PROCESS
+
   LPENUM_SERVICE_STATUS_PROCESSA* = ptr ENUM_SERVICE_STATUS_PROCESSA
   ENUM_SERVICE_STATUS_PROCESSW* {.pure.} = object
     lpServiceName*: LPWSTR
     lpDisplayName*: LPWSTR
     ServiceStatusProcess*: SERVICE_STATUS_PROCESS
+
   LPENUM_SERVICE_STATUS_PROCESSW* = ptr ENUM_SERVICE_STATUS_PROCESSW
   SC_LOCK* = LPVOID
   TQUERY_SERVICE_LOCK_STATUSA* {.pure.} = object
     fIsLocked*: DWORD
     lpLockOwner*: LPSTR
     dwLockDuration*: DWORD
+
   LPQUERY_SERVICE_LOCK_STATUSA* = ptr TQUERY_SERVICE_LOCK_STATUSA
   TQUERY_SERVICE_LOCK_STATUSW* {.pure.} = object
     fIsLocked*: DWORD
     lpLockOwner*: LPWSTR
     dwLockDuration*: DWORD
+
   LPQUERY_SERVICE_LOCK_STATUSW* = ptr TQUERY_SERVICE_LOCK_STATUSW
   TQUERY_SERVICE_CONFIGA* {.pure.} = object
     dwServiceType*: DWORD
@@ -99,6 +112,7 @@
     lpDependencies*: LPSTR
     lpServiceStartName*: LPSTR
     lpDisplayName*: LPSTR
+
   LPQUERY_SERVICE_CONFIGA* = ptr TQUERY_SERVICE_CONFIGA
   TQUERY_SERVICE_CONFIGW* {.pure.} = object
     dwServiceType*: DWORD
@@ -110,28 +124,35 @@
     lpDependencies*: LPWSTR
     lpServiceStartName*: LPWSTR
     lpDisplayName*: LPWSTR
+
   LPQUERY_SERVICE_CONFIGW* = ptr TQUERY_SERVICE_CONFIGW
-  LPSERVICE_MAIN_FUNCTIONA* = proc (dwNumServicesArgs: DWORD, lpServiceArgVectors: ptr LPSTR): VOID {.stdcall.}
+  LPSERVICE_MAIN_FUNCTIONA* =
+    proc(dwNumServicesArgs: DWORD, lpServiceArgVectors: ptr LPSTR): VOID {.stdcall.}
   SERVICE_TABLE_ENTRYA* {.pure.} = object
     lpServiceName*: LPSTR
     lpServiceProc*: LPSERVICE_MAIN_FUNCTIONA
+
   LPSERVICE_TABLE_ENTRYA* = ptr SERVICE_TABLE_ENTRYA
-  LPSERVICE_MAIN_FUNCTIONW* = proc (dwNumServicesArgs: DWORD, lpServiceArgVectors: ptr LPWSTR): VOID {.stdcall.}
+  LPSERVICE_MAIN_FUNCTIONW* =
+    proc(dwNumServicesArgs: DWORD, lpServiceArgVectors: ptr LPWSTR): VOID {.stdcall.}
   SERVICE_TABLE_ENTRYW* {.pure.} = object
     lpServiceName*: LPWSTR
     lpServiceProc*: LPSERVICE_MAIN_FUNCTIONW
+
   LPSERVICE_TABLE_ENTRYW* = ptr SERVICE_TABLE_ENTRYW
   SERVICE_CONTROL_STATUS_REASON_PARAMSA* {.pure.} = object
     dwReason*: DWORD
     pszComment*: LPSTR
     ServiceStatus*: SERVICE_STATUS_PROCESS
+
   PSERVICE_CONTROL_STATUS_REASON_PARAMSA* = ptr SERVICE_CONTROL_STATUS_REASON_PARAMSA
   SERVICE_CONTROL_STATUS_REASON_PARAMSW* {.pure.} = object
     dwReason*: DWORD
     pszComment*: LPWSTR
     ServiceStatus*: SERVICE_STATUS_PROCESS
+
   PSERVICE_CONTROL_STATUS_REASON_PARAMSW* = ptr SERVICE_CONTROL_STATUS_REASON_PARAMSW
-  PFN_SC_NOTIFY_CALLBACK* = proc (pParameter: PVOID): VOID {.stdcall.}
+  PFN_SC_NOTIFY_CALLBACK* = proc(pParameter: PVOID): VOID {.stdcall.}
   SERVICE_NOTIFYA* {.pure.} = object
     dwVersion*: DWORD
     pfnNotifyCallback*: PFN_SC_NOTIFY_CALLBACK
@@ -140,6 +161,7 @@
     ServiceStatus*: SERVICE_STATUS_PROCESS
     dwNotificationTriggered*: DWORD
     pszServiceNames*: LPSTR
+
   PSERVICE_NOTIFYA* = ptr SERVICE_NOTIFYA
   SERVICE_NOTIFYW* {.pure.} = object
     dwVersion*: DWORD
@@ -149,25 +171,33 @@
     ServiceStatus*: SERVICE_STATUS_PROCESS
     dwNotificationTriggered*: DWORD
     pszServiceNames*: LPWSTR
+
   PSERVICE_NOTIFYW* = ptr SERVICE_NOTIFYW
   SERVICE_DELAYED_AUTO_START_INFO* {.pure.} = object
     fDelayedAutostart*: WINBOOL
+
   LPSERVICE_DELAYED_AUTO_START_INFO* = ptr SERVICE_DELAYED_AUTO_START_INFO
   SERVICE_FAILURE_ACTIONS_FLAG* {.pure.} = object
     fFailureActionsOnNonCrashFailures*: WINBOOL
+
   LPSERVICE_FAILURE_ACTIONS_FLAG* = ptr SERVICE_FAILURE_ACTIONS_FLAG
   SERVICE_PRESHUTDOWN_INFO* {.pure.} = object
     dwPreshutdownTimeout*: DWORD
+
   LPSERVICE_PRESHUTDOWN_INFO* = ptr SERVICE_PRESHUTDOWN_INFO
   SERVICE_REQUIRED_PRIVILEGES_INFOA* {.pure.} = object
     pmszRequiredPrivileges*: LPSTR
+
   LPSERVICE_REQUIRED_PRIVILEGES_INFOA* = ptr SERVICE_REQUIRED_PRIVILEGES_INFOA
   SERVICE_REQUIRED_PRIVILEGES_INFOW* {.pure.} = object
     pmszRequiredPrivileges*: LPWSTR
+
   LPSERVICE_REQUIRED_PRIVILEGES_INFOW* = ptr SERVICE_REQUIRED_PRIVILEGES_INFOW
   SERVICE_SID_INFO* {.pure.} = object
     dwServiceSidType*: DWORD
+
   LPSERVICE_SID_INFO* = ptr SERVICE_SID_INFO
+
 const
   SERVICES_ACTIVE_DATABASEW* = "ServicesActive"
   SERVICES_FAILED_DATABASEW* = "ServicesFailed"
@@ -212,7 +242,10 @@
   SC_MANAGER_LOCK* = 0x0008
   SC_MANAGER_QUERY_LOCK_STATUS* = 0x0010
   SC_MANAGER_MODIFY_BOOT_CONFIG* = 0x0020
-  SC_MANAGER_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or SC_MANAGER_CONNECT or SC_MANAGER_CREATE_SERVICE or SC_MANAGER_ENUMERATE_SERVICE or SC_MANAGER_LOCK or SC_MANAGER_QUERY_LOCK_STATUS or SC_MANAGER_MODIFY_BOOT_CONFIG
+  SC_MANAGER_ALL_ACCESS* =
+    STANDARD_RIGHTS_REQUIRED or SC_MANAGER_CONNECT or SC_MANAGER_CREATE_SERVICE or
+    SC_MANAGER_ENUMERATE_SERVICE or SC_MANAGER_LOCK or SC_MANAGER_QUERY_LOCK_STATUS or
+    SC_MANAGER_MODIFY_BOOT_CONFIG
   SERVICE_QUERY_CONFIG* = 0x0001
   SERVICE_CHANGE_CONFIG* = 0x0002
   SERVICE_QUERY_STATUS* = 0x0004
@@ -222,7 +255,10 @@
   SERVICE_PAUSE_CONTINUE* = 0x0040
   SERVICE_INTERROGATE* = 0x0080
   SERVICE_USER_DEFINED_CONTROL* = 0x0100
-  SERVICE_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or SERVICE_QUERY_CONFIG or SERVICE_CHANGE_CONFIG or SERVICE_QUERY_STATUS or SERVICE_ENUMERATE_DEPENDENTS or SERVICE_START or SERVICE_STOP or SERVICE_PAUSE_CONTINUE or SERVICE_INTERROGATE or SERVICE_USER_DEFINED_CONTROL
+  SERVICE_ALL_ACCESS* =
+    STANDARD_RIGHTS_REQUIRED or SERVICE_QUERY_CONFIG or SERVICE_CHANGE_CONFIG or
+    SERVICE_QUERY_STATUS or SERVICE_ENUMERATE_DEPENDENTS or SERVICE_START or SERVICE_STOP or
+    SERVICE_PAUSE_CONTINUE or SERVICE_INTERROGATE or SERVICE_USER_DEFINED_CONTROL
   SERVICE_RUNS_IN_SYSTEM_PROCESS* = 0x00000001
   SERVICE_CONFIG_DESCRIPTION* = 1
   SERVICE_CONFIG_FAILURE_ACTIONS* = 2
@@ -275,57 +311,335 @@
   SC_GROUP_IDENTIFIERA* = '+'
   SC_GROUP_IDENTIFIERW* = WCHAR '+'
 type
-  LPHANDLER_FUNCTION* = proc (dwControl: DWORD): VOID {.stdcall.}
-  LPHANDLER_FUNCTION_EX* = proc (dwControl: DWORD, dwEventType: DWORD, lpEventData: LPVOID, lpContext: LPVOID): DWORD {.stdcall.}
-proc ChangeServiceConfigA*(hService: SC_HANDLE, dwServiceType: DWORD, dwStartType: DWORD, dwErrorControl: DWORD, lpBinaryPathName: LPCSTR, lpLoadOrderGroup: LPCSTR, lpdwTagId: LPDWORD, lpDependencies: LPCSTR, lpServiceStartName: LPCSTR, lpPassword: LPCSTR, lpDisplayName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ChangeServiceConfigW*(hService: SC_HANDLE, dwServiceType: DWORD, dwStartType: DWORD, dwErrorControl: DWORD, lpBinaryPathName: LPCWSTR, lpLoadOrderGroup: LPCWSTR, lpdwTagId: LPDWORD, lpDependencies: LPCWSTR, lpServiceStartName: LPCWSTR, lpPassword: LPCWSTR, lpDisplayName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ChangeServiceConfig2A*(hService: SC_HANDLE, dwInfoLevel: DWORD, lpInfo: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ChangeServiceConfig2W*(hService: SC_HANDLE, dwInfoLevel: DWORD, lpInfo: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CloseServiceHandle*(hSCObject: SC_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ControlService*(hService: SC_HANDLE, dwControl: DWORD, lpServiceStatus: LPSERVICE_STATUS): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CreateServiceA*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR, lpDisplayName: LPCSTR, dwDesiredAccess: DWORD, dwServiceType: DWORD, dwStartType: DWORD, dwErrorControl: DWORD, lpBinaryPathName: LPCSTR, lpLoadOrderGroup: LPCSTR, lpdwTagId: LPDWORD, lpDependencies: LPCSTR, lpServiceStartName: LPCSTR, lpPassword: LPCSTR): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc CreateServiceW*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR, lpDisplayName: LPCWSTR, dwDesiredAccess: DWORD, dwServiceType: DWORD, dwStartType: DWORD, dwErrorControl: DWORD, lpBinaryPathName: LPCWSTR, lpLoadOrderGroup: LPCWSTR, lpdwTagId: LPDWORD, lpDependencies: LPCWSTR, lpServiceStartName: LPCWSTR, lpPassword: LPCWSTR): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc DeleteService*(hService: SC_HANDLE): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc EnumDependentServicesA*(hService: SC_HANDLE, dwServiceState: DWORD, lpServices: LPENUM_SERVICE_STATUSA, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc EnumDependentServicesW*(hService: SC_HANDLE, dwServiceState: DWORD, lpServices: LPENUM_SERVICE_STATUSW, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc EnumServicesStatusA*(hSCManager: SC_HANDLE, dwServiceType: DWORD, dwServiceState: DWORD, lpServices: LPENUM_SERVICE_STATUSA, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD, lpResumeHandle: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc EnumServicesStatusW*(hSCManager: SC_HANDLE, dwServiceType: DWORD, dwServiceState: DWORD, lpServices: LPENUM_SERVICE_STATUSW, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD, lpResumeHandle: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc EnumServicesStatusExA*(hSCManager: SC_HANDLE, InfoLevel: SC_ENUM_TYPE, dwServiceType: DWORD, dwServiceState: DWORD, lpServices: LPBYTE, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD, lpResumeHandle: LPDWORD, pszGroupName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc EnumServicesStatusExW*(hSCManager: SC_HANDLE, InfoLevel: SC_ENUM_TYPE, dwServiceType: DWORD, dwServiceState: DWORD, lpServices: LPBYTE, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD, lpResumeHandle: LPDWORD, pszGroupName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetServiceKeyNameA*(hSCManager: SC_HANDLE, lpDisplayName: LPCSTR, lpServiceName: LPSTR, lpcchBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetServiceKeyNameW*(hSCManager: SC_HANDLE, lpDisplayName: LPCWSTR, lpServiceName: LPWSTR, lpcchBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetServiceDisplayNameA*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR, lpDisplayName: LPSTR, lpcchBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc GetServiceDisplayNameW*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR, lpDisplayName: LPWSTR, lpcchBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc LockServiceDatabase*(hSCManager: SC_HANDLE): SC_LOCK {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc NotifyBootConfigStatus*(BootAcceptable: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc OpenSCManagerA*(lpMachineName: LPCSTR, lpDatabaseName: LPCSTR, dwDesiredAccess: DWORD): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc OpenSCManagerW*(lpMachineName: LPCWSTR, lpDatabaseName: LPCWSTR, dwDesiredAccess: DWORD): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc OpenServiceA*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR, dwDesiredAccess: DWORD): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc OpenServiceW*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR, dwDesiredAccess: DWORD): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc QueryServiceConfigA*(hService: SC_HANDLE, lpServiceConfig: LPQUERY_SERVICE_CONFIGA, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc QueryServiceConfigW*(hService: SC_HANDLE, lpServiceConfig: LPQUERY_SERVICE_CONFIGW, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc QueryServiceConfig2A*(hService: SC_HANDLE, dwInfoLevel: DWORD, lpBuffer: LPBYTE, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc QueryServiceConfig2W*(hService: SC_HANDLE, dwInfoLevel: DWORD, lpBuffer: LPBYTE, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc QueryServiceLockStatusA*(hSCManager: SC_HANDLE, lpLockStatus: LPQUERY_SERVICE_LOCK_STATUSA, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc QueryServiceLockStatusW*(hSCManager: SC_HANDLE, lpLockStatus: LPQUERY_SERVICE_LOCK_STATUSW, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc QueryServiceObjectSecurity*(hService: SC_HANDLE, dwSecurityInformation: SECURITY_INFORMATION, lpSecurityDescriptor: PSECURITY_DESCRIPTOR, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc QueryServiceStatus*(hService: SC_HANDLE, lpServiceStatus: LPSERVICE_STATUS): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc QueryServiceStatusEx*(hService: SC_HANDLE, InfoLevel: SC_STATUS_TYPE, lpBuffer: LPBYTE, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegisterServiceCtrlHandlerA*(lpServiceName: LPCSTR, lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegisterServiceCtrlHandlerW*(lpServiceName: LPCWSTR, lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegisterServiceCtrlHandlerExA*(lpServiceName: LPCSTR, lpHandlerProc: LPHANDLER_FUNCTION_EX, lpContext: LPVOID): SERVICE_STATUS_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc RegisterServiceCtrlHandlerExW*(lpServiceName: LPCWSTR, lpHandlerProc: LPHANDLER_FUNCTION_EX, lpContext: LPVOID): SERVICE_STATUS_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetServiceObjectSecurity*(hService: SC_HANDLE, dwSecurityInformation: SECURITY_INFORMATION, lpSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc SetServiceStatus*(hServiceStatus: SERVICE_STATUS_HANDLE, lpServiceStatus: LPSERVICE_STATUS): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc StartServiceCtrlDispatcherA*(lpServiceStartTable: ptr SERVICE_TABLE_ENTRYA): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc StartServiceCtrlDispatcherW*(lpServiceStartTable: ptr SERVICE_TABLE_ENTRYW): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc StartServiceA*(hService: SC_HANDLE, dwNumServiceArgs: DWORD, lpServiceArgVectors: ptr LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc StartServiceW*(hService: SC_HANDLE, dwNumServiceArgs: DWORD, lpServiceArgVectors: ptr LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc UnlockServiceDatabase*(ScLock: SC_LOCK): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ControlServiceExA*(hService: SC_HANDLE, dwControl: DWORD, dwInfoLevel: DWORD, pControlParams: PVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc ControlServiceExW*(hService: SC_HANDLE, dwControl: DWORD, dwInfoLevel: DWORD, pControlParams: PVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc NotifyServiceStatusChangeA*(hService: SC_HANDLE, dwNotifyMask: DWORD, pNotifyBuffer: PSERVICE_NOTIFYA): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
-proc NotifyServiceStatusChangeW*(hService: SC_HANDLE, dwNotifyMask: DWORD, pNotifyBuffer: PSERVICE_NOTIFYW): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+  LPHANDLER_FUNCTION* = proc(dwControl: DWORD): VOID {.stdcall.}
+  LPHANDLER_FUNCTION_EX* = proc(
+    dwControl: DWORD, dwEventType: DWORD, lpEventData: LPVOID, lpContext: LPVOID
+  ): DWORD {.stdcall.}
+
+proc ChangeServiceConfigA*(
+  hService: SC_HANDLE,
+  dwServiceType: DWORD,
+  dwStartType: DWORD,
+  dwErrorControl: DWORD,
+  lpBinaryPathName: LPCSTR,
+  lpLoadOrderGroup: LPCSTR,
+  lpdwTagId: LPDWORD,
+  lpDependencies: LPCSTR,
+  lpServiceStartName: LPCSTR,
+  lpPassword: LPCSTR,
+  lpDisplayName: LPCSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ChangeServiceConfigW*(
+  hService: SC_HANDLE,
+  dwServiceType: DWORD,
+  dwStartType: DWORD,
+  dwErrorControl: DWORD,
+  lpBinaryPathName: LPCWSTR,
+  lpLoadOrderGroup: LPCWSTR,
+  lpdwTagId: LPDWORD,
+  lpDependencies: LPCWSTR,
+  lpServiceStartName: LPCWSTR,
+  lpPassword: LPCWSTR,
+  lpDisplayName: LPCWSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ChangeServiceConfig2A*(
+  hService: SC_HANDLE, dwInfoLevel: DWORD, lpInfo: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ChangeServiceConfig2W*(
+  hService: SC_HANDLE, dwInfoLevel: DWORD, lpInfo: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CloseServiceHandle*(
+  hSCObject: SC_HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ControlService*(
+  hService: SC_HANDLE, dwControl: DWORD, lpServiceStatus: LPSERVICE_STATUS
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CreateServiceA*(
+  hSCManager: SC_HANDLE,
+  lpServiceName: LPCSTR,
+  lpDisplayName: LPCSTR,
+  dwDesiredAccess: DWORD,
+  dwServiceType: DWORD,
+  dwStartType: DWORD,
+  dwErrorControl: DWORD,
+  lpBinaryPathName: LPCSTR,
+  lpLoadOrderGroup: LPCSTR,
+  lpdwTagId: LPDWORD,
+  lpDependencies: LPCSTR,
+  lpServiceStartName: LPCSTR,
+  lpPassword: LPCSTR,
+): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc CreateServiceW*(
+  hSCManager: SC_HANDLE,
+  lpServiceName: LPCWSTR,
+  lpDisplayName: LPCWSTR,
+  dwDesiredAccess: DWORD,
+  dwServiceType: DWORD,
+  dwStartType: DWORD,
+  dwErrorControl: DWORD,
+  lpBinaryPathName: LPCWSTR,
+  lpLoadOrderGroup: LPCWSTR,
+  lpdwTagId: LPDWORD,
+  lpDependencies: LPCWSTR,
+  lpServiceStartName: LPCWSTR,
+  lpPassword: LPCWSTR,
+): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc DeleteService*(
+  hService: SC_HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc EnumDependentServicesA*(
+  hService: SC_HANDLE,
+  dwServiceState: DWORD,
+  lpServices: LPENUM_SERVICE_STATUSA,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+  lpServicesReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc EnumDependentServicesW*(
+  hService: SC_HANDLE,
+  dwServiceState: DWORD,
+  lpServices: LPENUM_SERVICE_STATUSW,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+  lpServicesReturned: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc EnumServicesStatusA*(
+  hSCManager: SC_HANDLE,
+  dwServiceType: DWORD,
+  dwServiceState: DWORD,
+  lpServices: LPENUM_SERVICE_STATUSA,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+  lpServicesReturned: LPDWORD,
+  lpResumeHandle: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc EnumServicesStatusW*(
+  hSCManager: SC_HANDLE,
+  dwServiceType: DWORD,
+  dwServiceState: DWORD,
+  lpServices: LPENUM_SERVICE_STATUSW,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+  lpServicesReturned: LPDWORD,
+  lpResumeHandle: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc EnumServicesStatusExA*(
+  hSCManager: SC_HANDLE,
+  InfoLevel: SC_ENUM_TYPE,
+  dwServiceType: DWORD,
+  dwServiceState: DWORD,
+  lpServices: LPBYTE,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+  lpServicesReturned: LPDWORD,
+  lpResumeHandle: LPDWORD,
+  pszGroupName: LPCSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc EnumServicesStatusExW*(
+  hSCManager: SC_HANDLE,
+  InfoLevel: SC_ENUM_TYPE,
+  dwServiceType: DWORD,
+  dwServiceState: DWORD,
+  lpServices: LPBYTE,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+  lpServicesReturned: LPDWORD,
+  lpResumeHandle: LPDWORD,
+  pszGroupName: LPCWSTR,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetServiceKeyNameA*(
+  hSCManager: SC_HANDLE,
+  lpDisplayName: LPCSTR,
+  lpServiceName: LPSTR,
+  lpcchBuffer: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetServiceKeyNameW*(
+  hSCManager: SC_HANDLE,
+  lpDisplayName: LPCWSTR,
+  lpServiceName: LPWSTR,
+  lpcchBuffer: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetServiceDisplayNameA*(
+  hSCManager: SC_HANDLE,
+  lpServiceName: LPCSTR,
+  lpDisplayName: LPSTR,
+  lpcchBuffer: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc GetServiceDisplayNameW*(
+  hSCManager: SC_HANDLE,
+  lpServiceName: LPCWSTR,
+  lpDisplayName: LPWSTR,
+  lpcchBuffer: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc LockServiceDatabase*(
+  hSCManager: SC_HANDLE
+): SC_LOCK {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc NotifyBootConfigStatus*(
+  BootAcceptable: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc OpenSCManagerA*(
+  lpMachineName: LPCSTR, lpDatabaseName: LPCSTR, dwDesiredAccess: DWORD
+): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc OpenSCManagerW*(
+  lpMachineName: LPCWSTR, lpDatabaseName: LPCWSTR, dwDesiredAccess: DWORD
+): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc OpenServiceA*(
+  hSCManager: SC_HANDLE, lpServiceName: LPCSTR, dwDesiredAccess: DWORD
+): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc OpenServiceW*(
+  hSCManager: SC_HANDLE, lpServiceName: LPCWSTR, dwDesiredAccess: DWORD
+): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc QueryServiceConfigA*(
+  hService: SC_HANDLE,
+  lpServiceConfig: LPQUERY_SERVICE_CONFIGA,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc QueryServiceConfigW*(
+  hService: SC_HANDLE,
+  lpServiceConfig: LPQUERY_SERVICE_CONFIGW,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc QueryServiceConfig2A*(
+  hService: SC_HANDLE,
+  dwInfoLevel: DWORD,
+  lpBuffer: LPBYTE,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc QueryServiceConfig2W*(
+  hService: SC_HANDLE,
+  dwInfoLevel: DWORD,
+  lpBuffer: LPBYTE,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc QueryServiceLockStatusA*(
+  hSCManager: SC_HANDLE,
+  lpLockStatus: LPQUERY_SERVICE_LOCK_STATUSA,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc QueryServiceLockStatusW*(
+  hSCManager: SC_HANDLE,
+  lpLockStatus: LPQUERY_SERVICE_LOCK_STATUSW,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc QueryServiceObjectSecurity*(
+  hService: SC_HANDLE,
+  dwSecurityInformation: SECURITY_INFORMATION,
+  lpSecurityDescriptor: PSECURITY_DESCRIPTOR,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc QueryServiceStatus*(
+  hService: SC_HANDLE, lpServiceStatus: LPSERVICE_STATUS
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc QueryServiceStatusEx*(
+  hService: SC_HANDLE,
+  InfoLevel: SC_STATUS_TYPE,
+  lpBuffer: LPBYTE,
+  cbBufSize: DWORD,
+  pcbBytesNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegisterServiceCtrlHandlerA*(
+  lpServiceName: LPCSTR, lpHandlerProc: LPHANDLER_FUNCTION
+): SERVICE_STATUS_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegisterServiceCtrlHandlerW*(
+  lpServiceName: LPCWSTR, lpHandlerProc: LPHANDLER_FUNCTION
+): SERVICE_STATUS_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegisterServiceCtrlHandlerExA*(
+  lpServiceName: LPCSTR, lpHandlerProc: LPHANDLER_FUNCTION_EX, lpContext: LPVOID
+): SERVICE_STATUS_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc RegisterServiceCtrlHandlerExW*(
+  lpServiceName: LPCWSTR, lpHandlerProc: LPHANDLER_FUNCTION_EX, lpContext: LPVOID
+): SERVICE_STATUS_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetServiceObjectSecurity*(
+  hService: SC_HANDLE,
+  dwSecurityInformation: SECURITY_INFORMATION,
+  lpSecurityDescriptor: PSECURITY_DESCRIPTOR,
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc SetServiceStatus*(
+  hServiceStatus: SERVICE_STATUS_HANDLE, lpServiceStatus: LPSERVICE_STATUS
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc StartServiceCtrlDispatcherA*(
+  lpServiceStartTable: ptr SERVICE_TABLE_ENTRYA
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc StartServiceCtrlDispatcherW*(
+  lpServiceStartTable: ptr SERVICE_TABLE_ENTRYW
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc StartServiceA*(
+  hService: SC_HANDLE, dwNumServiceArgs: DWORD, lpServiceArgVectors: ptr LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc StartServiceW*(
+  hService: SC_HANDLE, dwNumServiceArgs: DWORD, lpServiceArgVectors: ptr LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc UnlockServiceDatabase*(
+  ScLock: SC_LOCK
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ControlServiceExA*(
+  hService: SC_HANDLE, dwControl: DWORD, dwInfoLevel: DWORD, pControlParams: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc ControlServiceExW*(
+  hService: SC_HANDLE, dwControl: DWORD, dwInfoLevel: DWORD, pControlParams: PVOID
+): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc NotifyServiceStatusChangeA*(
+  hService: SC_HANDLE, dwNotifyMask: DWORD, pNotifyBuffer: PSERVICE_NOTIFYA
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
+proc NotifyServiceStatusChangeW*(
+  hService: SC_HANDLE, dwNotifyMask: DWORD, pNotifyBuffer: PSERVICE_NOTIFYW
+): DWORD {.winapi, stdcall, dynlib: "advapi32", importc.}
+
 when winimUnicode:
   type
     SERVICE_DESCRIPTION* = SERVICE_DESCRIPTIONW
@@ -348,29 +662,154 @@
     SERVICE_NOTIFY* = SERVICE_NOTIFYW
     PSERVICE_NOTIFY* = PSERVICE_NOTIFYW
     SERVICE_REQUIRED_PRIVILEGES_INFO* = SERVICE_REQUIRED_PRIVILEGES_INFOW
+
   const
     SERVICES_ACTIVE_DATABASE* = SERVICES_ACTIVE_DATABASEW
     SERVICES_FAILED_DATABASE* = SERVICES_FAILED_DATABASEW
     SC_GROUP_IDENTIFIER* = SC_GROUP_IDENTIFIERW
-  proc ChangeServiceConfig*(hService: SC_HANDLE, dwServiceType: DWORD, dwStartType: DWORD, dwErrorControl: DWORD, lpBinaryPathName: LPCWSTR, lpLoadOrderGroup: LPCWSTR, lpdwTagId: LPDWORD, lpDependencies: LPCWSTR, lpServiceStartName: LPCWSTR, lpPassword: LPCWSTR, lpDisplayName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ChangeServiceConfigW".}
-  proc ChangeServiceConfig2*(hService: SC_HANDLE, dwInfoLevel: DWORD, lpInfo: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ChangeServiceConfig2W".}
-  proc CreateService*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR, lpDisplayName: LPCWSTR, dwDesiredAccess: DWORD, dwServiceType: DWORD, dwStartType: DWORD, dwErrorControl: DWORD, lpBinaryPathName: LPCWSTR, lpLoadOrderGroup: LPCWSTR, lpdwTagId: LPDWORD, lpDependencies: LPCWSTR, lpServiceStartName: LPCWSTR, lpPassword: LPCWSTR): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "CreateServiceW".}
-  proc EnumDependentServices*(hService: SC_HANDLE, dwServiceState: DWORD, lpServices: LPENUM_SERVICE_STATUSW, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EnumDependentServicesW".}
-  proc EnumServicesStatus*(hSCManager: SC_HANDLE, dwServiceType: DWORD, dwServiceState: DWORD, lpServices: LPENUM_SERVICE_STATUSW, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD, lpResumeHandle: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EnumServicesStatusW".}
-  proc EnumServicesStatusEx*(hSCManager: SC_HANDLE, InfoLevel: SC_ENUM_TYPE, dwServiceType: DWORD, dwServiceState: DWORD, lpServices: LPBYTE, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD, lpResumeHandle: LPDWORD, pszGroupName: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EnumServicesStatusExW".}
-  proc GetServiceKeyName*(hSCManager: SC_HANDLE, lpDisplayName: LPCWSTR, lpServiceName: LPWSTR, lpcchBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetServiceKeyNameW".}
-  proc GetServiceDisplayName*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR, lpDisplayName: LPWSTR, lpcchBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetServiceDisplayNameW".}
-  proc OpenSCManager*(lpMachineName: LPCWSTR, lpDatabaseName: LPCWSTR, dwDesiredAccess: DWORD): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenSCManagerW".}
-  proc OpenService*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR, dwDesiredAccess: DWORD): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenServiceW".}
-  proc QueryServiceConfig*(hService: SC_HANDLE, lpServiceConfig: LPQUERY_SERVICE_CONFIGW, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "QueryServiceConfigW".}
-  proc QueryServiceConfig2*(hService: SC_HANDLE, dwInfoLevel: DWORD, lpBuffer: LPBYTE, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "QueryServiceConfig2W".}
-  proc QueryServiceLockStatus*(hSCManager: SC_HANDLE, lpLockStatus: LPQUERY_SERVICE_LOCK_STATUSW, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "QueryServiceLockStatusW".}
-  proc RegisterServiceCtrlHandler*(lpServiceName: LPCWSTR, lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerW".}
-  proc RegisterServiceCtrlHandlerEx*(lpServiceName: LPCWSTR, lpHandlerProc: LPHANDLER_FUNCTION_EX, lpContext: LPVOID): SERVICE_STATUS_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerExW".}
-  proc StartServiceCtrlDispatcher*(lpServiceStartTable: ptr SERVICE_TABLE_ENTRYW): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "StartServiceCtrlDispatcherW".}
-  proc StartService*(hService: SC_HANDLE, dwNumServiceArgs: DWORD, lpServiceArgVectors: ptr LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "StartServiceW".}
-  proc ControlServiceEx*(hService: SC_HANDLE, dwControl: DWORD, dwInfoLevel: DWORD, pControlParams: PVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ControlServiceExW".}
-  proc NotifyServiceStatusChange*(hService: SC_HANDLE, dwNotifyMask: DWORD, pNotifyBuffer: PSERVICE_NOTIFYW): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "NotifyServiceStatusChangeW".}
+  proc ChangeServiceConfig*(
+    hService: SC_HANDLE,
+    dwServiceType: DWORD,
+    dwStartType: DWORD,
+    dwErrorControl: DWORD,
+    lpBinaryPathName: LPCWSTR,
+    lpLoadOrderGroup: LPCWSTR,
+    lpdwTagId: LPDWORD,
+    lpDependencies: LPCWSTR,
+    lpServiceStartName: LPCWSTR,
+    lpPassword: LPCWSTR,
+    lpDisplayName: LPCWSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ChangeServiceConfigW".}
+
+  proc ChangeServiceConfig2*(
+    hService: SC_HANDLE, dwInfoLevel: DWORD, lpInfo: LPVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ChangeServiceConfig2W".}
+
+  proc CreateService*(
+    hSCManager: SC_HANDLE,
+    lpServiceName: LPCWSTR,
+    lpDisplayName: LPCWSTR,
+    dwDesiredAccess: DWORD,
+    dwServiceType: DWORD,
+    dwStartType: DWORD,
+    dwErrorControl: DWORD,
+    lpBinaryPathName: LPCWSTR,
+    lpLoadOrderGroup: LPCWSTR,
+    lpdwTagId: LPDWORD,
+    lpDependencies: LPCWSTR,
+    lpServiceStartName: LPCWSTR,
+    lpPassword: LPCWSTR,
+  ): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "CreateServiceW".}
+
+  proc EnumDependentServices*(
+    hService: SC_HANDLE,
+    dwServiceState: DWORD,
+    lpServices: LPENUM_SERVICE_STATUSW,
+    cbBufSize: DWORD,
+    pcbBytesNeeded: LPDWORD,
+    lpServicesReturned: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EnumDependentServicesW".}
+
+  proc EnumServicesStatus*(
+    hSCManager: SC_HANDLE,
+    dwServiceType: DWORD,
+    dwServiceState: DWORD,
+    lpServices: LPENUM_SERVICE_STATUSW,
+    cbBufSize: DWORD,
+    pcbBytesNeeded: LPDWORD,
+    lpServicesReturned: LPDWORD,
+    lpResumeHandle: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EnumServicesStatusW".}
+
+  proc EnumServicesStatusEx*(
+    hSCManager: SC_HANDLE,
+    InfoLevel: SC_ENUM_TYPE,
+    dwServiceType: DWORD,
+    dwServiceState: DWORD,
+    lpServices: LPBYTE,
+    cbBufSize: DWORD,
+    pcbBytesNeeded: LPDWORD,
+    lpServicesReturned: LPDWORD,
+    lpResumeHandle: LPDWORD,
+    pszGroupName: LPCWSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EnumServicesStatusExW".}
+
+  proc GetServiceKeyName*(
+    hSCManager: SC_HANDLE,
+    lpDisplayName: LPCWSTR,
+    lpServiceName: LPWSTR,
+    lpcchBuffer: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetServiceKeyNameW".}
+
+  proc GetServiceDisplayName*(
+    hSCManager: SC_HANDLE,
+    lpServiceName: LPCWSTR,
+    lpDisplayName: LPWSTR,
+    lpcchBuffer: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetServiceDisplayNameW".}
+
+  proc OpenSCManager*(
+    lpMachineName: LPCWSTR, lpDatabaseName: LPCWSTR, dwDesiredAccess: DWORD
+  ): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenSCManagerW".}
+
+  proc OpenService*(
+    hSCManager: SC_HANDLE, lpServiceName: LPCWSTR, dwDesiredAccess: DWORD
+  ): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenServiceW".}
+
+  proc QueryServiceConfig*(
+    hService: SC_HANDLE,
+    lpServiceConfig: LPQUERY_SERVICE_CONFIGW,
+    cbBufSize: DWORD,
+    pcbBytesNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "QueryServiceConfigW".}
+
+  proc QueryServiceConfig2*(
+    hService: SC_HANDLE,
+    dwInfoLevel: DWORD,
+    lpBuffer: LPBYTE,
+    cbBufSize: DWORD,
+    pcbBytesNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "QueryServiceConfig2W".}
+
+  proc QueryServiceLockStatus*(
+    hSCManager: SC_HANDLE,
+    lpLockStatus: LPQUERY_SERVICE_LOCK_STATUSW,
+    cbBufSize: DWORD,
+    pcbBytesNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "QueryServiceLockStatusW".}
+
+  proc RegisterServiceCtrlHandler*(
+    lpServiceName: LPCWSTR, lpHandlerProc: LPHANDLER_FUNCTION
+  ): SERVICE_STATUS_HANDLE {.
+    winapi, stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerW"
+  .}
+
+  proc RegisterServiceCtrlHandlerEx*(
+    lpServiceName: LPCWSTR, lpHandlerProc: LPHANDLER_FUNCTION_EX, lpContext: LPVOID
+  ): SERVICE_STATUS_HANDLE {.
+    winapi, stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerExW"
+  .}
+
+  proc StartServiceCtrlDispatcher*(
+    lpServiceStartTable: ptr SERVICE_TABLE_ENTRYW
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "StartServiceCtrlDispatcherW"
+  .}
+
+  proc StartService*(
+    hService: SC_HANDLE, dwNumServiceArgs: DWORD, lpServiceArgVectors: ptr LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "StartServiceW".}
+
+  proc ControlServiceEx*(
+    hService: SC_HANDLE, dwControl: DWORD, dwInfoLevel: DWORD, pControlParams: PVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ControlServiceExW".}
+
+  proc NotifyServiceStatusChange*(
+    hService: SC_HANDLE, dwNotifyMask: DWORD, pNotifyBuffer: PSERVICE_NOTIFYW
+  ): DWORD {.
+    winapi, stdcall, dynlib: "advapi32", importc: "NotifyServiceStatusChangeW"
+  .}
+
 when winimAnsi:
   type
     SERVICE_DESCRIPTION* = SERVICE_DESCRIPTIONA
@@ -393,26 +832,150 @@
     SERVICE_NOTIFY* = SERVICE_NOTIFYA
     PSERVICE_NOTIFY* = PSERVICE_NOTIFYA
     SERVICE_REQUIRED_PRIVILEGES_INFO* = SERVICE_REQUIRED_PRIVILEGES_INFOA
+
   const
     SERVICES_ACTIVE_DATABASE* = SERVICES_ACTIVE_DATABASEA
     SERVICES_FAILED_DATABASE* = SERVICES_FAILED_DATABASEA
     SC_GROUP_IDENTIFIER* = SC_GROUP_IDENTIFIERA
-  proc ChangeServiceConfig*(hService: SC_HANDLE, dwServiceType: DWORD, dwStartType: DWORD, dwErrorControl: DWORD, lpBinaryPathName: LPCSTR, lpLoadOrderGroup: LPCSTR, lpdwTagId: LPDWORD, lpDependencies: LPCSTR, lpServiceStartName: LPCSTR, lpPassword: LPCSTR, lpDisplayName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ChangeServiceConfigA".}
-  proc ChangeServiceConfig2*(hService: SC_HANDLE, dwInfoLevel: DWORD, lpInfo: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ChangeServiceConfig2A".}
-  proc CreateService*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR, lpDisplayName: LPCSTR, dwDesiredAccess: DWORD, dwServiceType: DWORD, dwStartType: DWORD, dwErrorControl: DWORD, lpBinaryPathName: LPCSTR, lpLoadOrderGroup: LPCSTR, lpdwTagId: LPDWORD, lpDependencies: LPCSTR, lpServiceStartName: LPCSTR, lpPassword: LPCSTR): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "CreateServiceA".}
-  proc EnumDependentServices*(hService: SC_HANDLE, dwServiceState: DWORD, lpServices: LPENUM_SERVICE_STATUSA, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EnumDependentServicesA".}
-  proc EnumServicesStatus*(hSCManager: SC_HANDLE, dwServiceType: DWORD, dwServiceState: DWORD, lpServices: LPENUM_SERVICE_STATUSA, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD, lpResumeHandle: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EnumServicesStatusA".}
-  proc EnumServicesStatusEx*(hSCManager: SC_HANDLE, InfoLevel: SC_ENUM_TYPE, dwServiceType: DWORD, dwServiceState: DWORD, lpServices: LPBYTE, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD, lpResumeHandle: LPDWORD, pszGroupName: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EnumServicesStatusExA".}
-  proc GetServiceKeyName*(hSCManager: SC_HANDLE, lpDisplayName: LPCSTR, lpServiceName: LPSTR, lpcchBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetServiceKeyNameA".}
-  proc GetServiceDisplayName*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR, lpDisplayName: LPSTR, lpcchBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetServiceDisplayNameA".}
-  proc OpenSCManager*(lpMachineName: LPCSTR, lpDatabaseName: LPCSTR, dwDesiredAccess: DWORD): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenSCManagerA".}
-  proc OpenService*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR, dwDesiredAccess: DWORD): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenServiceA".}
-  proc QueryServiceConfig*(hService: SC_HANDLE, lpServiceConfig: LPQUERY_SERVICE_CONFIGA, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "QueryServiceConfigA".}
-  proc QueryServiceConfig2*(hService: SC_HANDLE, dwInfoLevel: DWORD, lpBuffer: LPBYTE, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "QueryServiceConfig2A".}
-  proc QueryServiceLockStatus*(hSCManager: SC_HANDLE, lpLockStatus: LPQUERY_SERVICE_LOCK_STATUSA, cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "QueryServiceLockStatusA".}
-  proc RegisterServiceCtrlHandler*(lpServiceName: LPCSTR, lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerA".}
-  proc RegisterServiceCtrlHandlerEx*(lpServiceName: LPCSTR, lpHandlerProc: LPHANDLER_FUNCTION_EX, lpContext: LPVOID): SERVICE_STATUS_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerExA".}
-  proc StartServiceCtrlDispatcher*(lpServiceStartTable: ptr SERVICE_TABLE_ENTRYA): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "StartServiceCtrlDispatcherA".}
-  proc StartService*(hService: SC_HANDLE, dwNumServiceArgs: DWORD, lpServiceArgVectors: ptr LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "StartServiceA".}
-  proc ControlServiceEx*(hService: SC_HANDLE, dwControl: DWORD, dwInfoLevel: DWORD, pControlParams: PVOID): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ControlServiceExA".}
-  proc NotifyServiceStatusChange*(hService: SC_HANDLE, dwNotifyMask: DWORD, pNotifyBuffer: PSERVICE_NOTIFYA): DWORD {.winapi, stdcall, dynlib: "advapi32", importc: "NotifyServiceStatusChangeA".}
+  proc ChangeServiceConfig*(
+    hService: SC_HANDLE,
+    dwServiceType: DWORD,
+    dwStartType: DWORD,
+    dwErrorControl: DWORD,
+    lpBinaryPathName: LPCSTR,
+    lpLoadOrderGroup: LPCSTR,
+    lpdwTagId: LPDWORD,
+    lpDependencies: LPCSTR,
+    lpServiceStartName: LPCSTR,
+    lpPassword: LPCSTR,
+    lpDisplayName: LPCSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ChangeServiceConfigA".}
+
+  proc ChangeServiceConfig2*(
+    hService: SC_HANDLE, dwInfoLevel: DWORD, lpInfo: LPVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ChangeServiceConfig2A".}
+
+  proc CreateService*(
+    hSCManager: SC_HANDLE,
+    lpServiceName: LPCSTR,
+    lpDisplayName: LPCSTR,
+    dwDesiredAccess: DWORD,
+    dwServiceType: DWORD,
+    dwStartType: DWORD,
+    dwErrorControl: DWORD,
+    lpBinaryPathName: LPCSTR,
+    lpLoadOrderGroup: LPCSTR,
+    lpdwTagId: LPDWORD,
+    lpDependencies: LPCSTR,
+    lpServiceStartName: LPCSTR,
+    lpPassword: LPCSTR,
+  ): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "CreateServiceA".}
+
+  proc EnumDependentServices*(
+    hService: SC_HANDLE,
+    dwServiceState: DWORD,
+    lpServices: LPENUM_SERVICE_STATUSA,
+    cbBufSize: DWORD,
+    pcbBytesNeeded: LPDWORD,
+    lpServicesReturned: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EnumDependentServicesA".}
+
+  proc EnumServicesStatus*(
+    hSCManager: SC_HANDLE,
+    dwServiceType: DWORD,
+    dwServiceState: DWORD,
+    lpServices: LPENUM_SERVICE_STATUSA,
+    cbBufSize: DWORD,
+    pcbBytesNeeded: LPDWORD,
+    lpServicesReturned: LPDWORD,
+    lpResumeHandle: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EnumServicesStatusA".}
+
+  proc EnumServicesStatusEx*(
+    hSCManager: SC_HANDLE,
+    InfoLevel: SC_ENUM_TYPE,
+    dwServiceType: DWORD,
+    dwServiceState: DWORD,
+    lpServices: LPBYTE,
+    cbBufSize: DWORD,
+    pcbBytesNeeded: LPDWORD,
+    lpServicesReturned: LPDWORD,
+    lpResumeHandle: LPDWORD,
+    pszGroupName: LPCSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "EnumServicesStatusExA".}
+
+  proc GetServiceKeyName*(
+    hSCManager: SC_HANDLE,
+    lpDisplayName: LPCSTR,
+    lpServiceName: LPSTR,
+    lpcchBuffer: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetServiceKeyNameA".}
+
+  proc GetServiceDisplayName*(
+    hSCManager: SC_HANDLE,
+    lpServiceName: LPCSTR,
+    lpDisplayName: LPSTR,
+    lpcchBuffer: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "GetServiceDisplayNameA".}
+
+  proc OpenSCManager*(
+    lpMachineName: LPCSTR, lpDatabaseName: LPCSTR, dwDesiredAccess: DWORD
+  ): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenSCManagerA".}
+
+  proc OpenService*(
+    hSCManager: SC_HANDLE, lpServiceName: LPCSTR, dwDesiredAccess: DWORD
+  ): SC_HANDLE {.winapi, stdcall, dynlib: "advapi32", importc: "OpenServiceA".}
+
+  proc QueryServiceConfig*(
+    hService: SC_HANDLE,
+    lpServiceConfig: LPQUERY_SERVICE_CONFIGA,
+    cbBufSize: DWORD,
+    pcbBytesNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "QueryServiceConfigA".}
+
+  proc QueryServiceConfig2*(
+    hService: SC_HANDLE,
+    dwInfoLevel: DWORD,
+    lpBuffer: LPBYTE,
+    cbBufSize: DWORD,
+    pcbBytesNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "QueryServiceConfig2A".}
+
+  proc QueryServiceLockStatus*(
+    hSCManager: SC_HANDLE,
+    lpLockStatus: LPQUERY_SERVICE_LOCK_STATUSA,
+    cbBufSize: DWORD,
+    pcbBytesNeeded: LPDWORD,
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "QueryServiceLockStatusA".}
+
+  proc RegisterServiceCtrlHandler*(
+    lpServiceName: LPCSTR, lpHandlerProc: LPHANDLER_FUNCTION
+  ): SERVICE_STATUS_HANDLE {.
+    winapi, stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerA"
+  .}
+
+  proc RegisterServiceCtrlHandlerEx*(
+    lpServiceName: LPCSTR, lpHandlerProc: LPHANDLER_FUNCTION_EX, lpContext: LPVOID
+  ): SERVICE_STATUS_HANDLE {.
+    winapi, stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerExA"
+  .}
+
+  proc StartServiceCtrlDispatcher*(
+    lpServiceStartTable: ptr SERVICE_TABLE_ENTRYA
+  ): WINBOOL {.
+    winapi, stdcall, dynlib: "advapi32", importc: "StartServiceCtrlDispatcherA"
+  .}
+
+  proc StartService*(
+    hService: SC_HANDLE, dwNumServiceArgs: DWORD, lpServiceArgVectors: ptr LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "StartServiceA".}
+
+  proc ControlServiceEx*(
+    hService: SC_HANDLE, dwControl: DWORD, dwInfoLevel: DWORD, pControlParams: PVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "advapi32", importc: "ControlServiceExA".}
+
+  proc NotifyServiceStatusChange*(
+    hService: SC_HANDLE, dwNotifyMask: DWORD, pNotifyBuffer: PSERVICE_NOTIFYA
+  ): DWORD {.
+    winapi, stdcall, dynlib: "advapi32", importc: "NotifyServiceStatusChangeA"
+  .}
--- a/semicongine/thirdparty/winim/winim/inc/wintrust.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/wintrust.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -18,6 +18,7 @@
     pcwszFilePath*: LPCWSTR
     hFile*: HANDLE
     pgKnownSubject*: ptr GUID
+
   WINTRUST_CATALOG_INFO* {.pure.} = object
     cbStruct*: DWORD
     dwCatalogVersion*: DWORD
@@ -28,6 +29,7 @@
     pbCalculatedFileHash*: ptr BYTE
     cbCalculatedFileHash*: DWORD
     pcCatalogContext*: PCCTL_CONTEXT
+
   WINTRUST_BLOB_INFO* {.pure.} = object
     cbStruct*: DWORD
     gSubject*: GUID
@@ -36,12 +38,14 @@
     pbMemObject*: ptr BYTE
     cbMemSignedMsg*: DWORD
     pbMemSignedMsg*: ptr BYTE
+
   WINTRUST_SGNR_INFO* {.pure.} = object
     cbStruct*: DWORD
     pcwszDisplayName*: LPCWSTR
     psSignerInfo*: ptr CMSG_SIGNER_INFO
     chStores*: DWORD
     pahStores*: ptr HCERTSTORE
+
   WINTRUST_CERT_INFO* {.pure.} = object
     cbStruct*: DWORD
     pcwszDisplayName*: LPCWSTR
@@ -50,12 +54,14 @@
     pahStores*: ptr HCERTSTORE
     dwFlags*: DWORD
     psftVerifyAsOf*: ptr FILETIME
+
   WINTRUST_DATA_UNION1* {.pure, union.} = object
     pFile*: ptr WINTRUST_FILE_INFO
     pCatalog*: ptr WINTRUST_CATALOG_INFO
     pBlob*: ptr WINTRUST_BLOB_INFO
     pSgnr*: ptr WINTRUST_SGNR_INFO
     pCert*: ptr WINTRUST_CERT_INFO
+
   WINTRUST_DATA* {.pure.} = object
     cbStruct*: DWORD
     pPolicyCallbackData*: LPVOID
@@ -69,15 +75,18 @@
     pwszURLReference*: ptr WCHAR
     dwProvFlags*: DWORD
     dwUIContext*: DWORD
+
   PWINTRUST_DATA* = ptr WINTRUST_DATA
   PWINTRUST_FILE_INFO* = ptr WINTRUST_FILE_INFO
   PWINTRUST_CATALOG_INFO* = ptr WINTRUST_CATALOG_INFO
   PWINTRUST_BLOB_INFO* = ptr WINTRUST_BLOB_INFO
   PWINTRUST_SGNR_INFO* = ptr WINTRUST_SGNR_INFO
   PWINTRUST_CERT_INFO* = ptr WINTRUST_CERT_INFO
-  PFN_CPD_MEM_ALLOC* = proc (cbSize: DWORD): pointer {.stdcall.}
-  PFN_CPD_MEM_FREE* = proc (pvMem2Free: pointer): void {.stdcall.}
-  PFN_CPD_ADD_STORE* = proc (pProvData: ptr CRYPT_PROVIDER_DATA, hStore2Add: HCERTSTORE): WINBOOL {.stdcall.}
+  PFN_CPD_MEM_ALLOC* = proc(cbSize: DWORD): pointer {.stdcall.}
+  PFN_CPD_MEM_FREE* = proc(pvMem2Free: pointer): void {.stdcall.}
+  PFN_CPD_ADD_STORE* = proc(
+    pProvData: ptr CRYPT_PROVIDER_DATA, hStore2Add: HCERTSTORE
+  ): WINBOOL {.stdcall.}
   CRYPT_PROVIDER_CERT* {.pure.} = object
     cbStruct*: DWORD
     pCert*: PCCERT_CONTEXT
@@ -94,6 +103,7 @@
     dwCtlError*: DWORD
     fIsCyclic*: WINBOOL
     pChainElement*: PCERT_CHAIN_ELEMENT
+
   CRYPT_PROVIDER_SGNR* {.pure.} = object
     cbStruct*: DWORD
     sftVerifyAsOf*: FILETIME
@@ -105,21 +115,47 @@
     csCounterSigners*: DWORD
     pasCounterSigners*: ptr CRYPT_PROVIDER_SGNR
     pChainContext*: PCCERT_CHAIN_CONTEXT
-  PFN_CPD_ADD_SGNR* = proc (pProvData: ptr CRYPT_PROVIDER_DATA, fCounterSigner: WINBOOL, idxSigner: DWORD, pSgnr2Add: ptr CRYPT_PROVIDER_SGNR): WINBOOL {.stdcall.}
-  PFN_CPD_ADD_CERT* = proc (pProvData: ptr CRYPT_PROVIDER_DATA, idxSigner: DWORD, fCounterSigner: WINBOOL, idxCounterSigner: DWORD, pCert2Add: PCCERT_CONTEXT): WINBOOL {.stdcall.}
+
+  PFN_CPD_ADD_SGNR* = proc(
+    pProvData: ptr CRYPT_PROVIDER_DATA,
+    fCounterSigner: WINBOOL,
+    idxSigner: DWORD,
+    pSgnr2Add: ptr CRYPT_PROVIDER_SGNR,
+  ): WINBOOL {.stdcall.}
+  PFN_CPD_ADD_CERT* = proc(
+    pProvData: ptr CRYPT_PROVIDER_DATA,
+    idxSigner: DWORD,
+    fCounterSigner: WINBOOL,
+    idxCounterSigner: DWORD,
+    pCert2Add: PCCERT_CONTEXT,
+  ): WINBOOL {.stdcall.}
   CRYPT_PROVIDER_PRIVDATA* {.pure.} = object
     cbStruct*: DWORD
     gProviderID*: GUID
     cbProvData*: DWORD
     pvProvData*: pointer
-  PFN_CPD_ADD_PRIVDATA* = proc (pProvData: ptr CRYPT_PROVIDER_DATA, pPrivData2Add: ptr CRYPT_PROVIDER_PRIVDATA): WINBOOL {.stdcall.}
-  PFN_PROVIDER_INIT_CALL* = proc (pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.stdcall.}
-  PFN_PROVIDER_OBJTRUST_CALL* = proc (pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.stdcall.}
-  PFN_PROVIDER_SIGTRUST_CALL* = proc (pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.stdcall.}
-  PFN_PROVIDER_CERTTRUST_CALL* = proc (pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.stdcall.}
-  PFN_PROVIDER_FINALPOLICY_CALL* = proc (pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.stdcall.}
-  PFN_PROVIDER_CERTCHKPOLICY_CALL* = proc (pProvData: ptr CRYPT_PROVIDER_DATA, idxSigner: DWORD, fCounterSignerChain: WINBOOL, idxCounterSigner: DWORD): WINBOOL {.stdcall.}
-  PFN_PROVIDER_TESTFINALPOLICY_CALL* = proc (pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.stdcall.}
+
+  PFN_CPD_ADD_PRIVDATA* = proc(
+    pProvData: ptr CRYPT_PROVIDER_DATA, pPrivData2Add: ptr CRYPT_PROVIDER_PRIVDATA
+  ): WINBOOL {.stdcall.}
+  PFN_PROVIDER_INIT_CALL* =
+    proc(pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.stdcall.}
+  PFN_PROVIDER_OBJTRUST_CALL* =
+    proc(pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.stdcall.}
+  PFN_PROVIDER_SIGTRUST_CALL* =
+    proc(pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.stdcall.}
+  PFN_PROVIDER_CERTTRUST_CALL* =
+    proc(pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.stdcall.}
+  PFN_PROVIDER_FINALPOLICY_CALL* =
+    proc(pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.stdcall.}
+  PFN_PROVIDER_CERTCHKPOLICY_CALL* = proc(
+    pProvData: ptr CRYPT_PROVIDER_DATA,
+    idxSigner: DWORD,
+    fCounterSignerChain: WINBOOL,
+    idxCounterSigner: DWORD,
+  ): WINBOOL {.stdcall.}
+  PFN_PROVIDER_TESTFINALPOLICY_CALL* =
+    proc(pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.stdcall.}
   CRYPT_PROVUI_DATA* {.pure.} = object
     cbStruct*: DWORD
     dwFinalError*: DWORD
@@ -130,7 +166,10 @@
     pCopyActionText*: ptr WCHAR
     pCopyActionTextNoTS*: ptr WCHAR
     pCopyActionTextNotSigned*: ptr WCHAR
-  PFN_PROVUI_CALL* = proc (hWndSecurityDialog: HWND, pProvData: ptr CRYPT_PROVIDER_DATA): WINBOOL {.stdcall.}
+
+  PFN_PROVUI_CALL* = proc(
+    hWndSecurityDialog: HWND, pProvData: ptr CRYPT_PROVIDER_DATA
+  ): WINBOOL {.stdcall.}
   CRYPT_PROVUI_FUNCS* {.pure.} = object
     cbStruct*: DWORD
     psUIData*: ptr CRYPT_PROVUI_DATA
@@ -138,7 +177,9 @@
     pfnOnMoreInfoClickDefault*: PFN_PROVUI_CALL
     pfnOnAdvancedClick*: PFN_PROVUI_CALL
     pfnOnAdvancedClickDefault*: PFN_PROVUI_CALL
-  PFN_PROVIDER_CLEANUP_CALL* = proc (pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.stdcall.}
+
+  PFN_PROVIDER_CLEANUP_CALL* =
+    proc(pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.stdcall.}
   CRYPT_PROVIDER_FUNCTIONS* {.pure.} = object
     cbStruct*: DWORD
     pfnAlloc*: PFN_CPD_MEM_ALLOC
@@ -156,13 +197,16 @@
     pfnTestFinalPolicy*: PFN_PROVIDER_TESTFINALPOLICY_CALL
     psUIpfns*: ptr CRYPT_PROVUI_FUNCS
     pfnCleanupPolicy*: PFN_PROVIDER_CLEANUP_CALL
+
   SIP_INDIRECT_DATA* {.pure.} = object
     Data*: CRYPT_ATTRIBUTE_TYPE_VALUE
     DigestAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     Digest*: CRYPT_HASH_BLOB
+
   MS_ADDINFO_FLAT* {.pure.} = object
     cbStruct*: DWORD
     pIndirectData*: ptr SIP_INDIRECT_DATA
+
   CRYPTCATSTORE* {.pure.} = object
   CRYPTCATMEMBER* {.pure.} = object
     cbStruct*: DWORD
@@ -176,20 +220,24 @@
     hReserved*: HANDLE
     sEncodedIndirectData*: CRYPT_ATTR_BLOB
     sEncodedMemberInfo*: CRYPT_ATTR_BLOB
+
   MS_ADDINFO_CATALOGMEMBER* {.pure.} = object
     cbStruct*: DWORD
     pStore*: ptr CRYPTCATSTORE
     pMember*: ptr CRYPTCATMEMBER
+
   MS_ADDINFO_BLOB* {.pure.} = object
     cbStruct*: DWORD
     cbMemObject*: DWORD
     pbMemObject*: ptr BYTE
     cbMemSignedMsg*: DWORD
     pbMemSignedMsg*: ptr BYTE
+
   SIP_SUBJECTINFO_UNION1* {.pure, union.} = object
     psFlat*: ptr MS_ADDINFO_FLAT
     psCatMember*: ptr MS_ADDINFO_CATALOGMEMBER
     psBlob*: ptr MS_ADDINFO_BLOB
+
   SIP_SUBJECTINFO* {.pure.} = object
     cbSize*: DWORD
     pgSubjectType*: ptr GUID
@@ -209,11 +257,31 @@
     dwUnionChoice*: DWORD
     union1*: SIP_SUBJECTINFO_UNION1
     pClientData*: LPVOID
-  pCryptSIPGetSignedDataMsg* = proc (pSubjectInfo: ptr SIP_SUBJECTINFO, pdwEncodingType: ptr DWORD, dwIndex: DWORD, pcbSignedDataMsg: ptr DWORD, pbSignedDataMsg: ptr BYTE): WINBOOL {.stdcall.}
-  pCryptSIPPutSignedDataMsg* = proc (pSubjectInfo: ptr SIP_SUBJECTINFO, dwEncodingType: DWORD, pdwIndex: ptr DWORD, cbSignedDataMsg: DWORD, pbSignedDataMsg: ptr BYTE): WINBOOL {.stdcall.}
-  pCryptSIPCreateIndirectData* = proc (pSubjectInfo: ptr SIP_SUBJECTINFO, pcbIndirectData: ptr DWORD, pIndirectData: ptr SIP_INDIRECT_DATA): WINBOOL {.stdcall.}
-  pCryptSIPVerifyIndirectData* = proc (pSubjectInfo: ptr SIP_SUBJECTINFO, pIndirectData: ptr SIP_INDIRECT_DATA): WINBOOL {.stdcall.}
-  pCryptSIPRemoveSignedDataMsg* = proc (pSubjectInfo: ptr SIP_SUBJECTINFO, dwIndex: DWORD): WINBOOL {.stdcall.}
+
+  pCryptSIPGetSignedDataMsg* = proc(
+    pSubjectInfo: ptr SIP_SUBJECTINFO,
+    pdwEncodingType: ptr DWORD,
+    dwIndex: DWORD,
+    pcbSignedDataMsg: ptr DWORD,
+    pbSignedDataMsg: ptr BYTE,
+  ): WINBOOL {.stdcall.}
+  pCryptSIPPutSignedDataMsg* = proc(
+    pSubjectInfo: ptr SIP_SUBJECTINFO,
+    dwEncodingType: DWORD,
+    pdwIndex: ptr DWORD,
+    cbSignedDataMsg: DWORD,
+    pbSignedDataMsg: ptr BYTE,
+  ): WINBOOL {.stdcall.}
+  pCryptSIPCreateIndirectData* = proc(
+    pSubjectInfo: ptr SIP_SUBJECTINFO,
+    pcbIndirectData: ptr DWORD,
+    pIndirectData: ptr SIP_INDIRECT_DATA,
+  ): WINBOOL {.stdcall.}
+  pCryptSIPVerifyIndirectData* = proc(
+    pSubjectInfo: ptr SIP_SUBJECTINFO, pIndirectData: ptr SIP_INDIRECT_DATA
+  ): WINBOOL {.stdcall.}
+  pCryptSIPRemoveSignedDataMsg* =
+    proc(pSubjectInfo: ptr SIP_SUBJECTINFO, dwIndex: DWORD): WINBOOL {.stdcall.}
   SIP_DISPATCH_INFO* {.pure.} = object
     cbSize*: DWORD
     hSIP*: HANDLE
@@ -222,6 +290,7 @@
     pfCreate*: pCryptSIPCreateIndirectData
     pfVerify*: pCryptSIPVerifyIndirectData
     pfRemove*: pCryptSIPRemoveSignedDataMsg
+
   PROVDATA_SIP* {.pure.} = object
     cbStruct*: DWORD
     gSubject*: GUID
@@ -230,8 +299,10 @@
     psSipSubjectInfo*: ptr SIP_SUBJECTINFO
     psSipCATSubjectInfo*: ptr SIP_SUBJECTINFO
     psIndirectData*: ptr SIP_INDIRECT_DATA
+
   CRYPT_PROVIDER_DATA_UNION1* {.pure, union.} = object
     pPDSip*: ptr PROVDATA_SIP
+
   CRYPT_PROVIDER_DATA* {.pure.} = object
     cbStruct*: DWORD
     pWintrustData*: ptr WINTRUST_DATA
@@ -264,6 +335,7 @@
     pRequestUsage*: PCERT_USAGE_MATCH
     dwTrustPubSettings*: DWORD
     dwUIStateFlags*: DWORD
+
   PCRYPT_PROVIDER_DATA* = ptr CRYPT_PROVIDER_DATA
   PCRYPT_PROVIDER_FUNCTIONS* = ptr CRYPT_PROVIDER_FUNCTIONS
   PCRYPT_PROVUI_FUNCS* = ptr CRYPT_PROVUI_FUNCS
@@ -276,6 +348,7 @@
     cbStruct*: DWORD
     pwszDLLName*: ptr WCHAR
     pwszFunctionName*: ptr WCHAR
+
   PCRYPT_TRUST_REG_ENTRY* = ptr CRYPT_TRUST_REG_ENTRY
   CRYPT_REGISTER_ACTIONID* {.pure.} = object
     cbStruct*: DWORD
@@ -287,6 +360,7 @@
     sFinalPolicyProvider*: CRYPT_TRUST_REG_ENTRY
     sTestPolicyProvider*: CRYPT_TRUST_REG_ENTRY
     sCleanupProvider*: CRYPT_TRUST_REG_ENTRY
+
   PCRYPT_REGISTER_ACTIONID* = ptr CRYPT_REGISTER_ACTIONID
   CRYPT_PROVIDER_REGDEFUSAGE* {.pure.} = object
     cbStruct*: DWORD
@@ -294,20 +368,23 @@
     pwszDllName*: ptr WCHAR
     pwszLoadCallbackDataFunctionName*: ptr char
     pwszFreeCallbackDataFunctionName*: ptr char
+
   PCRYPT_PROVIDER_REGDEFUSAGE* = ptr CRYPT_PROVIDER_REGDEFUSAGE
   CRYPT_PROVIDER_DEFUSAGE* {.pure.} = object
     cbStruct*: DWORD
     gActionID*: GUID
     pDefPolicyCallbackData*: LPVOID
     pDefSIPClientData*: LPVOID
+
   PCRYPT_PROVIDER_DEFUSAGE* = ptr CRYPT_PROVIDER_DEFUSAGE
-const
-  SPC_UUID_LENGTH* = 16
+
+const SPC_UUID_LENGTH* = 16
 type
   SPC_UUID* = array[SPC_UUID_LENGTH, BYTE]
   SPC_SERIALIZED_OBJECT* {.pure.} = object
     ClassId*: SPC_UUID
     SerializedData*: CRYPT_DATA_BLOB
+
   PSPC_SERIALIZED_OBJECT* = ptr SPC_SERIALIZED_OBJECT
   SPC_SIGINFO* {.pure.} = object
     dwSipVersion*: DWORD
@@ -317,27 +394,33 @@
     dwReserved3*: DWORD
     dwReserved4*: DWORD
     dwReserved5*: DWORD
+
   PSPC_SIGINFO* = ptr SPC_SIGINFO
   SPC_LINK_UNION1* {.pure, union.} = object
     pwszUrl*: LPWSTR
     Moniker*: SPC_SERIALIZED_OBJECT
     pwszFile*: LPWSTR
+
   SPC_LINK* {.pure.} = object
     dwLinkChoice*: DWORD
     union1*: SPC_LINK_UNION1
+
   PSPC_LINK* = ptr SPC_LINK
   SPC_PE_IMAGE_DATA* {.pure.} = object
     Flags*: CRYPT_BIT_BLOB
     pFile*: PSPC_LINK
+
   PSPC_PE_IMAGE_DATA* = ptr SPC_PE_IMAGE_DATA
   SPC_INDIRECT_DATA_CONTENT* {.pure.} = object
     Data*: CRYPT_ATTRIBUTE_TYPE_VALUE
     DigestAlgorithm*: CRYPT_ALGORITHM_IDENTIFIER
     Digest*: CRYPT_HASH_BLOB
+
   PSPC_INDIRECT_DATA_CONTENT* = ptr SPC_INDIRECT_DATA_CONTENT
   SPC_FINANCIAL_CRITERIA* {.pure.} = object
     fFinancialInfoAvailable*: WINBOOL
     fMeetsCriteria*: WINBOOL
+
   PSPC_FINANCIAL_CRITERIA* = ptr SPC_FINANCIAL_CRITERIA
   SPC_IMAGE* {.pure.} = object
     pImageLink*: ptr SPC_LINK
@@ -345,59 +428,71 @@
     Metafile*: CRYPT_DATA_BLOB
     EnhancedMetafile*: CRYPT_DATA_BLOB
     GifFile*: CRYPT_DATA_BLOB
+
   PSPC_IMAGE* = ptr SPC_IMAGE
   SPC_SP_AGENCY_INFO* {.pure.} = object
     pPolicyInformation*: ptr SPC_LINK
     pwszPolicyDisplayText*: LPWSTR
     pLogoImage*: PSPC_IMAGE
     pLogoLink*: ptr SPC_LINK
+
   PSPC_SP_AGENCY_INFO* = ptr SPC_SP_AGENCY_INFO
   SPC_STATEMENT_TYPE* {.pure.} = object
     cKeyPurposeId*: DWORD
     rgpszKeyPurposeId*: ptr LPSTR
+
   PSPC_STATEMENT_TYPE* = ptr SPC_STATEMENT_TYPE
   SPC_SP_OPUS_INFO* {.pure.} = object
     pwszProgramName*: LPCWSTR
     pMoreInfo*: ptr SPC_LINK
     pPublisherInfo*: ptr SPC_LINK
+
   PSPC_SP_OPUS_INFO* = ptr SPC_SP_OPUS_INFO
   CAT_NAMEVALUE* {.pure.} = object
     pwszTag*: LPWSTR
     fdwFlags*: DWORD
     Value*: CRYPT_DATA_BLOB
+
   PCAT_NAMEVALUE* = ptr CAT_NAMEVALUE
   CAT_MEMBERINFO* {.pure.} = object
     pwszSubjGuid*: LPWSTR
     dwCertVersion*: DWORD
+
   PCAT_MEMBERINFO* = ptr CAT_MEMBERINFO
   WIN_CERTIFICATE* {.pure.} = object
     dwLength*: DWORD
     wRevision*: WORD
     wCertificateType*: WORD
     bCertificate*: array[ANYSIZE_ARRAY, BYTE]
+
   LPWIN_CERTIFICATE* = ptr WIN_CERTIFICATE
   WIN_TRUST_SUBJECT* = LPVOID
   WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT* {.pure.} = object
     hClientToken*: HANDLE
     SubjectType*: ptr GUID
     Subject*: WIN_TRUST_SUBJECT
+
   LPWIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT* = ptr WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT
   WIN_TRUST_ACTDATA_SUBJECT_ONLY* {.pure.} = object
     SubjectType*: ptr GUID
     Subject*: WIN_TRUST_SUBJECT
+
   LPWIN_TRUST_ACTDATA_SUBJECT_ONLY* = ptr WIN_TRUST_ACTDATA_SUBJECT_ONLY
   WIN_TRUST_SUBJECT_FILE* {.pure.} = object
     hFile*: HANDLE
     lpPath*: LPCWSTR
+
   LPWIN_TRUST_SUBJECT_FILE* = ptr WIN_TRUST_SUBJECT_FILE
   WIN_TRUST_SUBJECT_FILE_AND_DISPLAY* {.pure.} = object
     hFile*: HANDLE
     lpPath*: LPCWSTR
     lpDisplayName*: LPCWSTR
+
   LPWIN_TRUST_SUBJECT_FILE_AND_DISPLAY* = ptr WIN_TRUST_SUBJECT_FILE_AND_DISPLAY
   WIN_SPUB_TRUSTED_PUBLISHER_DATA* {.pure.} = object
     hClientToken*: HANDLE
     lpCertificate*: LPWIN_CERTIFICATE
+
   LPWIN_SPUB_TRUSTED_PUBLISHER_DATA* = ptr WIN_SPUB_TRUSTED_PUBLISHER_DATA
   CRYPT_DIGEST_DATA* = CRYPT_HASH_BLOB
   LPSIP_SUBJECTINFO* = ptr SIP_SUBJECTINFO
@@ -418,7 +513,9 @@
     pwszVerifyFuncName*: ptr WCHAR
     pwszRemoveFuncName*: ptr WCHAR
     pwszIsFunctionNameFmt2*: ptr WCHAR
+
   PSIP_ADD_NEWPROVIDER* = ptr SIP_ADD_NEWPROVIDER
+
 const
   WTD_UI_ALL* = 1
   WTD_UI_NONE* = 2
@@ -569,9 +666,12 @@
   WIN_TRUST_SUBJTYPE_JAVA_CLASSEX* = DEFINE_GUID("6f458113-c2f1-11cf-8a69-00aa006c3706")
   WIN_TRUST_SUBJTYPE_CABINETEX* = DEFINE_GUID("6f458114-c2f1-11cf-8a69-00aa006c3706")
   WIN_TRUST_SUBJTYPE_OLE_STORAGE* = DEFINE_GUID("c257e740-8da0-11cf-8736-00aa00a485eb")
-  WIN_SPUB_ACTION_TRUSTED_PUBLISHER* = DEFINE_GUID("66426730-8da1-11cf-8736-00aa00a485eb")
-  WIN_SPUB_ACTION_NT_ACTIVATE_IMAGE* = DEFINE_GUID("8bc96b00-8da1-11cf-8736-00aa00a485eb")
-  WIN_SPUB_ACTION_PUBLISHED_SOFTWARE* = DEFINE_GUID("64b9d180-8da2-11cf-8736-00aa00a485eb")
+  WIN_SPUB_ACTION_TRUSTED_PUBLISHER* =
+    DEFINE_GUID("66426730-8da1-11cf-8736-00aa00a485eb")
+  WIN_SPUB_ACTION_NT_ACTIVATE_IMAGE* =
+    DEFINE_GUID("8bc96b00-8da1-11cf-8736-00aa00a485eb")
+  WIN_SPUB_ACTION_PUBLISHED_SOFTWARE* =
+    DEFINE_GUID("64b9d180-8da2-11cf-8736-00aa00a485eb")
   MSSIP_FLAGS_PROHIBIT_RESIZE_ON_CREATE* = 0x00010000
   MSSIP_FLAGS_USE_CATALOG* = 0x00020000
   SPC_INC_PE_RESOURCES_FLAG* = 0x80
@@ -600,11 +700,17 @@
   CRYPTCAT_E_CDF_ATTR_TOOFEWVALUES* = 0x00020002
   CRYPTCAT_E_CDF_ATTR_TYPECOMBO* = 0x00020004
 type
-  PFN_ALLOCANDFILLDEFUSAGE* = proc (pszUsageOID: ptr char, psDefUsage: ptr CRYPT_PROVIDER_DEFUSAGE): WINBOOL {.stdcall.}
-  PFN_FREEDEFUSAGE* = proc (pszUsageOID: ptr char, psDefUsage: ptr CRYPT_PROVIDER_DEFUSAGE): WINBOOL {.stdcall.}
-  pfnIsFileSupported* = proc (hFile: HANDLE, pgSubject: ptr GUID): WINBOOL {.stdcall.}
-  pfnIsFileSupportedName* = proc (pwszFileName: ptr WCHAR, pgSubject: ptr GUID): WINBOOL {.stdcall.}
-  PFN_CDF_PARSE_ERROR_CALLBACK* = proc (P1: DWORD, P2: DWORD, P3: ptr WCHAR): void {.stdcall.}
+  PFN_ALLOCANDFILLDEFUSAGE* = proc(
+    pszUsageOID: ptr char, psDefUsage: ptr CRYPT_PROVIDER_DEFUSAGE
+  ): WINBOOL {.stdcall.}
+  PFN_FREEDEFUSAGE* = proc(
+    pszUsageOID: ptr char, psDefUsage: ptr CRYPT_PROVIDER_DEFUSAGE
+  ): WINBOOL {.stdcall.}
+  pfnIsFileSupported* = proc(hFile: HANDLE, pgSubject: ptr GUID): WINBOOL {.stdcall.}
+  pfnIsFileSupportedName* =
+    proc(pwszFileName: ptr WCHAR, pgSubject: ptr GUID): WINBOOL {.stdcall.}
+  PFN_CDF_PARSE_ERROR_CALLBACK* =
+    proc(P1: DWORD, P2: DWORD, P3: ptr WCHAR): void {.stdcall.}
   CRYPTCATATTRIBUTE* {.pure.} = object
     cbStruct*: DWORD
     pwszReferenceTag*: LPWSTR
@@ -612,9 +718,11 @@
     cbValue*: DWORD
     pbValue*: ptr BYTE
     dwReserved*: DWORD
+
   CATALOG_INFO* {.pure.} = object
     cbStruct*: DWORD
     wszCatalogFile*: array[MAX_PATH, WCHAR]
+
   CRYPTCATCDF* {.pure.} = object
     cbStruct*: DWORD
     hFile*: HANDLE
@@ -623,78 +731,289 @@
     fEOF*: WINBOOL
     pwszResultDir*: LPWSTR
     hCATStore*: HANDLE
-proc WinVerifyTrust*(hwnd: HWND, pgActionID: ptr GUID, pWVTData: LPVOID): LONG {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WinVerifyTrustEx*(hwnd: HWND, pgActionID: ptr GUID, pWinTrustData: ptr WINTRUST_DATA): HRESULT {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WintrustGetRegPolicyFlags*(pdwPolicyFlags: ptr DWORD): void {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WintrustSetRegPolicyFlags*(dwPolicyFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WintrustAddActionID*(pgActionID: ptr GUID, fdwFlags: DWORD, psProvInfo: ptr CRYPT_REGISTER_ACTIONID): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WintrustRemoveActionID*(pgActionID: ptr GUID): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WintrustLoadFunctionPointers*(pgActionID: ptr GUID, pPfns: ptr CRYPT_PROVIDER_FUNCTIONS): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WintrustAddDefaultForUsage*(pszUsageOID: ptr char, psDefUsage: ptr CRYPT_PROVIDER_REGDEFUSAGE): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WintrustGetDefaultForUsage*(dwAction: DWORD, pszUsageOID: ptr char, psUsage: ptr CRYPT_PROVIDER_DEFUSAGE): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WTHelperGetProvSignerFromChain*(pProvData: ptr CRYPT_PROVIDER_DATA, idxSigner: DWORD, fCounterSigner: WINBOOL, idxCounterSigner: DWORD): ptr CRYPT_PROVIDER_SGNR {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WTHelperGetProvCertFromChain*(pSgnr: ptr CRYPT_PROVIDER_SGNR, idxCert: DWORD): ptr CRYPT_PROVIDER_CERT {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WTHelperProvDataFromStateData*(hStateData: HANDLE): ptr CRYPT_PROVIDER_DATA {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WTHelperGetProvPrivateDataFromChain*(pProvData: ptr CRYPT_PROVIDER_DATA, pgProviderID: ptr GUID): ptr CRYPT_PROVIDER_PRIVDATA {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WTHelperCertIsSelfSigned*(dwEncoding: DWORD, pCert: ptr CERT_INFO): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WTHelperCertCheckValidSignature*(pProvData: ptr CRYPT_PROVIDER_DATA): HRESULT {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc WintrustSetDefaultIncludePEPageHashes*(fIncludePEPageHashes: WINBOOL): void {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc CryptSIPGetSignedDataMsg*(pSubjectInfo: ptr SIP_SUBJECTINFO, pdwEncodingType: ptr DWORD, dwIndex: DWORD, pcbSignedDataMsg: ptr DWORD, pbSignedDataMsg: ptr BYTE): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSIPPutSignedDataMsg*(pSubjectInfo: ptr SIP_SUBJECTINFO, dwEncodingType: DWORD, pdwIndex: ptr DWORD, cbSignedDataMsg: DWORD, pbSignedDataMsg: ptr BYTE): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSIPCreateIndirectData*(pSubjectInfo: ptr SIP_SUBJECTINFO, pcbIndirectData: ptr DWORD, pIndirectData: ptr SIP_INDIRECT_DATA): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSIPVerifyIndirectData*(pSubjectInfo: ptr SIP_SUBJECTINFO, pIndirectData: ptr SIP_INDIRECT_DATA): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSIPRemoveSignedDataMsg*(pSubjectInfo: ptr SIP_SUBJECTINFO, dwIndex: DWORD): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSIPLoad*(pgSubject: ptr GUID, dwFlags: DWORD, pSipDispatch: ptr SIP_DISPATCH_INFO): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSIPRetrieveSubjectGuid*(FileName: LPCWSTR, hFileIn: HANDLE, pgSubject: ptr GUID): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSIPRetrieveSubjectGuidForCatalogFile*(FileName: LPCWSTR, hFileIn: HANDLE, pgSubject: ptr GUID): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSIPAddProvider*(psNewProv: ptr SIP_ADD_NEWPROVIDER): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptSIPRemoveProvider*(pgProv: ptr GUID): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
-proc CryptCATAdminAcquireContext*(P1: ptr HCATADMIN, P2: ptr GUID, P3: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc CryptCATAdminAddCatalog*(P1: HCATADMIN, P2: PWSTR, P3: PWSTR, P4: DWORD): HCATINFO {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc CryptCATAdminCalcHashFromFileHandle*(P1: HANDLE, P2: ptr DWORD, P3: ptr BYTE, P4: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc CryptCATAdminEnumCatalogFromHash*(P1: HCATADMIN, P2: ptr BYTE, P3: DWORD, P4: DWORD, P5: ptr HCATINFO): HCATINFO {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc CryptCATAdminReleaseCatalogContext*(P1: HCATADMIN, P2: HCATINFO, P3: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc CryptCATAdminReleaseContext*(P1: HCATADMIN, P2: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc CryptCATAdminRemoveCatalog*(P1: HCATADMIN, P2: LPCWSTR, P3: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc CryptCATAdminResolveCatalogPath*(P1: HCATADMIN, P2: ptr WCHAR, P3: ptr CATALOG_INFO, P4: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc CryptCATCatalogInfoFromContext*(P1: HCATINFO, P2: ptr CATALOG_INFO, P3: DWORD): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc CryptCATCDFClose*(P1: ptr CRYPTCATCDF): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc CryptCATCDFEnumMembersByCDFTagEx*(P1: ptr CRYPTCATCDF, P2: LPWSTR, P3: PFN_CDF_PARSE_ERROR_CALLBACK, P4: ptr ptr CRYPTCATMEMBER, P5: WINBOOL, P6: LPVOID): LPWSTR {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc CryptCATClose*(P1: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc CryptCATOpen*(P1: LPWSTR, P2: DWORD, P3: HCRYPTPROV, P4: DWORD, P5: DWORD): HANDLE {.winapi, stdcall, dynlib: "wintrust", importc.}
-proc `pFile=`*(self: var WINTRUST_DATA, x: ptr WINTRUST_FILE_INFO) {.inline.} = self.union1.pFile = x
-proc pFile*(self: WINTRUST_DATA): ptr WINTRUST_FILE_INFO {.inline.} = self.union1.pFile
-proc pFile*(self: var WINTRUST_DATA): var ptr WINTRUST_FILE_INFO {.inline.} = self.union1.pFile
-proc `pCatalog=`*(self: var WINTRUST_DATA, x: ptr WINTRUST_CATALOG_INFO) {.inline.} = self.union1.pCatalog = x
-proc pCatalog*(self: WINTRUST_DATA): ptr WINTRUST_CATALOG_INFO {.inline.} = self.union1.pCatalog
-proc pCatalog*(self: var WINTRUST_DATA): var ptr WINTRUST_CATALOG_INFO {.inline.} = self.union1.pCatalog
-proc `pBlob=`*(self: var WINTRUST_DATA, x: ptr WINTRUST_BLOB_INFO) {.inline.} = self.union1.pBlob = x
-proc pBlob*(self: WINTRUST_DATA): ptr WINTRUST_BLOB_INFO {.inline.} = self.union1.pBlob
-proc pBlob*(self: var WINTRUST_DATA): var ptr WINTRUST_BLOB_INFO {.inline.} = self.union1.pBlob
-proc `pSgnr=`*(self: var WINTRUST_DATA, x: ptr WINTRUST_SGNR_INFO) {.inline.} = self.union1.pSgnr = x
-proc pSgnr*(self: WINTRUST_DATA): ptr WINTRUST_SGNR_INFO {.inline.} = self.union1.pSgnr
-proc pSgnr*(self: var WINTRUST_DATA): var ptr WINTRUST_SGNR_INFO {.inline.} = self.union1.pSgnr
-proc `pCert=`*(self: var WINTRUST_DATA, x: ptr WINTRUST_CERT_INFO) {.inline.} = self.union1.pCert = x
-proc pCert*(self: WINTRUST_DATA): ptr WINTRUST_CERT_INFO {.inline.} = self.union1.pCert
-proc pCert*(self: var WINTRUST_DATA): var ptr WINTRUST_CERT_INFO {.inline.} = self.union1.pCert
-proc `pPDSip=`*(self: var CRYPT_PROVIDER_DATA, x: ptr PROVDATA_SIP) {.inline.} = self.union1.pPDSip = x
-proc pPDSip*(self: CRYPT_PROVIDER_DATA): ptr PROVDATA_SIP {.inline.} = self.union1.pPDSip
-proc pPDSip*(self: var CRYPT_PROVIDER_DATA): var ptr PROVDATA_SIP {.inline.} = self.union1.pPDSip
-proc `pwszUrl=`*(self: var SPC_LINK, x: LPWSTR) {.inline.} = self.union1.pwszUrl = x
-proc pwszUrl*(self: SPC_LINK): LPWSTR {.inline.} = self.union1.pwszUrl
-proc pwszUrl*(self: var SPC_LINK): var LPWSTR {.inline.} = self.union1.pwszUrl
-proc `Moniker=`*(self: var SPC_LINK, x: SPC_SERIALIZED_OBJECT) {.inline.} = self.union1.Moniker = x
-proc Moniker*(self: SPC_LINK): SPC_SERIALIZED_OBJECT {.inline.} = self.union1.Moniker
-proc Moniker*(self: var SPC_LINK): var SPC_SERIALIZED_OBJECT {.inline.} = self.union1.Moniker
-proc `pwszFile=`*(self: var SPC_LINK, x: LPWSTR) {.inline.} = self.union1.pwszFile = x
-proc pwszFile*(self: SPC_LINK): LPWSTR {.inline.} = self.union1.pwszFile
-proc pwszFile*(self: var SPC_LINK): var LPWSTR {.inline.} = self.union1.pwszFile
-proc `psFlat=`*(self: var SIP_SUBJECTINFO, x: ptr MS_ADDINFO_FLAT) {.inline.} = self.union1.psFlat = x
-proc psFlat*(self: SIP_SUBJECTINFO): ptr MS_ADDINFO_FLAT {.inline.} = self.union1.psFlat
-proc psFlat*(self: var SIP_SUBJECTINFO): var ptr MS_ADDINFO_FLAT {.inline.} = self.union1.psFlat
-proc `psCatMember=`*(self: var SIP_SUBJECTINFO, x: ptr MS_ADDINFO_CATALOGMEMBER) {.inline.} = self.union1.psCatMember = x
-proc psCatMember*(self: SIP_SUBJECTINFO): ptr MS_ADDINFO_CATALOGMEMBER {.inline.} = self.union1.psCatMember
-proc psCatMember*(self: var SIP_SUBJECTINFO): var ptr MS_ADDINFO_CATALOGMEMBER {.inline.} = self.union1.psCatMember
-proc `psBlob=`*(self: var SIP_SUBJECTINFO, x: ptr MS_ADDINFO_BLOB) {.inline.} = self.union1.psBlob = x
-proc psBlob*(self: SIP_SUBJECTINFO): ptr MS_ADDINFO_BLOB {.inline.} = self.union1.psBlob
-proc psBlob*(self: var SIP_SUBJECTINFO): var ptr MS_ADDINFO_BLOB {.inline.} = self.union1.psBlob
+
+proc WinVerifyTrust*(
+  hwnd: HWND, pgActionID: ptr GUID, pWVTData: LPVOID
+): LONG {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WinVerifyTrustEx*(
+  hwnd: HWND, pgActionID: ptr GUID, pWinTrustData: ptr WINTRUST_DATA
+): HRESULT {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WintrustGetRegPolicyFlags*(
+  pdwPolicyFlags: ptr DWORD
+): void {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WintrustSetRegPolicyFlags*(
+  dwPolicyFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WintrustAddActionID*(
+  pgActionID: ptr GUID, fdwFlags: DWORD, psProvInfo: ptr CRYPT_REGISTER_ACTIONID
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WintrustRemoveActionID*(
+  pgActionID: ptr GUID
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WintrustLoadFunctionPointers*(
+  pgActionID: ptr GUID, pPfns: ptr CRYPT_PROVIDER_FUNCTIONS
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WintrustAddDefaultForUsage*(
+  pszUsageOID: ptr char, psDefUsage: ptr CRYPT_PROVIDER_REGDEFUSAGE
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WintrustGetDefaultForUsage*(
+  dwAction: DWORD, pszUsageOID: ptr char, psUsage: ptr CRYPT_PROVIDER_DEFUSAGE
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WTHelperGetProvSignerFromChain*(
+  pProvData: ptr CRYPT_PROVIDER_DATA,
+  idxSigner: DWORD,
+  fCounterSigner: WINBOOL,
+  idxCounterSigner: DWORD,
+): ptr CRYPT_PROVIDER_SGNR {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WTHelperGetProvCertFromChain*(
+  pSgnr: ptr CRYPT_PROVIDER_SGNR, idxCert: DWORD
+): ptr CRYPT_PROVIDER_CERT {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WTHelperProvDataFromStateData*(
+  hStateData: HANDLE
+): ptr CRYPT_PROVIDER_DATA {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WTHelperGetProvPrivateDataFromChain*(
+  pProvData: ptr CRYPT_PROVIDER_DATA, pgProviderID: ptr GUID
+): ptr CRYPT_PROVIDER_PRIVDATA {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WTHelperCertIsSelfSigned*(
+  dwEncoding: DWORD, pCert: ptr CERT_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WTHelperCertCheckValidSignature*(
+  pProvData: ptr CRYPT_PROVIDER_DATA
+): HRESULT {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc WintrustSetDefaultIncludePEPageHashes*(
+  fIncludePEPageHashes: WINBOOL
+): void {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc CryptSIPGetSignedDataMsg*(
+  pSubjectInfo: ptr SIP_SUBJECTINFO,
+  pdwEncodingType: ptr DWORD,
+  dwIndex: DWORD,
+  pcbSignedDataMsg: ptr DWORD,
+  pbSignedDataMsg: ptr BYTE,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSIPPutSignedDataMsg*(
+  pSubjectInfo: ptr SIP_SUBJECTINFO,
+  dwEncodingType: DWORD,
+  pdwIndex: ptr DWORD,
+  cbSignedDataMsg: DWORD,
+  pbSignedDataMsg: ptr BYTE,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSIPCreateIndirectData*(
+  pSubjectInfo: ptr SIP_SUBJECTINFO,
+  pcbIndirectData: ptr DWORD,
+  pIndirectData: ptr SIP_INDIRECT_DATA,
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSIPVerifyIndirectData*(
+  pSubjectInfo: ptr SIP_SUBJECTINFO, pIndirectData: ptr SIP_INDIRECT_DATA
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSIPRemoveSignedDataMsg*(
+  pSubjectInfo: ptr SIP_SUBJECTINFO, dwIndex: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSIPLoad*(
+  pgSubject: ptr GUID, dwFlags: DWORD, pSipDispatch: ptr SIP_DISPATCH_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSIPRetrieveSubjectGuid*(
+  FileName: LPCWSTR, hFileIn: HANDLE, pgSubject: ptr GUID
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSIPRetrieveSubjectGuidForCatalogFile*(
+  FileName: LPCWSTR, hFileIn: HANDLE, pgSubject: ptr GUID
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSIPAddProvider*(
+  psNewProv: ptr SIP_ADD_NEWPROVIDER
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptSIPRemoveProvider*(
+  pgProv: ptr GUID
+): WINBOOL {.winapi, stdcall, dynlib: "crypt32", importc.}
+
+proc CryptCATAdminAcquireContext*(
+  P1: ptr HCATADMIN, P2: ptr GUID, P3: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc CryptCATAdminAddCatalog*(
+  P1: HCATADMIN, P2: PWSTR, P3: PWSTR, P4: DWORD
+): HCATINFO {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc CryptCATAdminCalcHashFromFileHandle*(
+  P1: HANDLE, P2: ptr DWORD, P3: ptr BYTE, P4: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc CryptCATAdminEnumCatalogFromHash*(
+  P1: HCATADMIN, P2: ptr BYTE, P3: DWORD, P4: DWORD, P5: ptr HCATINFO
+): HCATINFO {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc CryptCATAdminReleaseCatalogContext*(
+  P1: HCATADMIN, P2: HCATINFO, P3: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc CryptCATAdminReleaseContext*(
+  P1: HCATADMIN, P2: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc CryptCATAdminRemoveCatalog*(
+  P1: HCATADMIN, P2: LPCWSTR, P3: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc CryptCATAdminResolveCatalogPath*(
+  P1: HCATADMIN, P2: ptr WCHAR, P3: ptr CATALOG_INFO, P4: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc CryptCATCatalogInfoFromContext*(
+  P1: HCATINFO, P2: ptr CATALOG_INFO, P3: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc CryptCATCDFClose*(
+  P1: ptr CRYPTCATCDF
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc CryptCATCDFEnumMembersByCDFTagEx*(
+  P1: ptr CRYPTCATCDF,
+  P2: LPWSTR,
+  P3: PFN_CDF_PARSE_ERROR_CALLBACK,
+  P4: ptr ptr CRYPTCATMEMBER,
+  P5: WINBOOL,
+  P6: LPVOID,
+): LPWSTR {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc CryptCATClose*(
+  P1: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc CryptCATOpen*(
+  P1: LPWSTR, P2: DWORD, P3: HCRYPTPROV, P4: DWORD, P5: DWORD
+): HANDLE {.winapi, stdcall, dynlib: "wintrust", importc.}
+
+proc `pFile=`*(self: var WINTRUST_DATA, x: ptr WINTRUST_FILE_INFO) {.inline.} =
+  self.union1.pFile = x
+
+proc pFile*(self: WINTRUST_DATA): ptr WINTRUST_FILE_INFO {.inline.} =
+  self.union1.pFile
+
+proc pFile*(self: var WINTRUST_DATA): var ptr WINTRUST_FILE_INFO {.inline.} =
+  self.union1.pFile
+
+proc `pCatalog=`*(self: var WINTRUST_DATA, x: ptr WINTRUST_CATALOG_INFO) {.inline.} =
+  self.union1.pCatalog = x
+
+proc pCatalog*(self: WINTRUST_DATA): ptr WINTRUST_CATALOG_INFO {.inline.} =
+  self.union1.pCatalog
+
+proc pCatalog*(self: var WINTRUST_DATA): var ptr WINTRUST_CATALOG_INFO {.inline.} =
+  self.union1.pCatalog
+
+proc `pBlob=`*(self: var WINTRUST_DATA, x: ptr WINTRUST_BLOB_INFO) {.inline.} =
+  self.union1.pBlob = x
+
+proc pBlob*(self: WINTRUST_DATA): ptr WINTRUST_BLOB_INFO {.inline.} =
+  self.union1.pBlob
+
+proc pBlob*(self: var WINTRUST_DATA): var ptr WINTRUST_BLOB_INFO {.inline.} =
+  self.union1.pBlob
+
+proc `pSgnr=`*(self: var WINTRUST_DATA, x: ptr WINTRUST_SGNR_INFO) {.inline.} =
+  self.union1.pSgnr = x
+
+proc pSgnr*(self: WINTRUST_DATA): ptr WINTRUST_SGNR_INFO {.inline.} =
+  self.union1.pSgnr
+
+proc pSgnr*(self: var WINTRUST_DATA): var ptr WINTRUST_SGNR_INFO {.inline.} =
+  self.union1.pSgnr
+
+proc `pCert=`*(self: var WINTRUST_DATA, x: ptr WINTRUST_CERT_INFO) {.inline.} =
+  self.union1.pCert = x
+
+proc pCert*(self: WINTRUST_DATA): ptr WINTRUST_CERT_INFO {.inline.} =
+  self.union1.pCert
+
+proc pCert*(self: var WINTRUST_DATA): var ptr WINTRUST_CERT_INFO {.inline.} =
+  self.union1.pCert
+
+proc `pPDSip=`*(self: var CRYPT_PROVIDER_DATA, x: ptr PROVDATA_SIP) {.inline.} =
+  self.union1.pPDSip = x
+
+proc pPDSip*(self: CRYPT_PROVIDER_DATA): ptr PROVDATA_SIP {.inline.} =
+  self.union1.pPDSip
+
+proc pPDSip*(self: var CRYPT_PROVIDER_DATA): var ptr PROVDATA_SIP {.inline.} =
+  self.union1.pPDSip
+
+proc `pwszUrl=`*(self: var SPC_LINK, x: LPWSTR) {.inline.} =
+  self.union1.pwszUrl = x
+
+proc pwszUrl*(self: SPC_LINK): LPWSTR {.inline.} =
+  self.union1.pwszUrl
+
+proc pwszUrl*(self: var SPC_LINK): var LPWSTR {.inline.} =
+  self.union1.pwszUrl
+
+proc `Moniker=`*(self: var SPC_LINK, x: SPC_SERIALIZED_OBJECT) {.inline.} =
+  self.union1.Moniker = x
+
+proc Moniker*(self: SPC_LINK): SPC_SERIALIZED_OBJECT {.inline.} =
+  self.union1.Moniker
+
+proc Moniker*(self: var SPC_LINK): var SPC_SERIALIZED_OBJECT {.inline.} =
+  self.union1.Moniker
+
+proc `pwszFile=`*(self: var SPC_LINK, x: LPWSTR) {.inline.} =
+  self.union1.pwszFile = x
+
+proc pwszFile*(self: SPC_LINK): LPWSTR {.inline.} =
+  self.union1.pwszFile
+
+proc pwszFile*(self: var SPC_LINK): var LPWSTR {.inline.} =
+  self.union1.pwszFile
+
+proc `psFlat=`*(self: var SIP_SUBJECTINFO, x: ptr MS_ADDINFO_FLAT) {.inline.} =
+  self.union1.psFlat = x
+
+proc psFlat*(self: SIP_SUBJECTINFO): ptr MS_ADDINFO_FLAT {.inline.} =
+  self.union1.psFlat
+
+proc psFlat*(self: var SIP_SUBJECTINFO): var ptr MS_ADDINFO_FLAT {.inline.} =
+  self.union1.psFlat
+
+proc `psCatMember=`*(
+    self: var SIP_SUBJECTINFO, x: ptr MS_ADDINFO_CATALOGMEMBER
+) {.inline.} =
+  self.union1.psCatMember = x
+
+proc psCatMember*(self: SIP_SUBJECTINFO): ptr MS_ADDINFO_CATALOGMEMBER {.inline.} =
+  self.union1.psCatMember
+
+proc psCatMember*(
+    self: var SIP_SUBJECTINFO
+): var ptr MS_ADDINFO_CATALOGMEMBER {.inline.} =
+  self.union1.psCatMember
+
+proc `psBlob=`*(self: var SIP_SUBJECTINFO, x: ptr MS_ADDINFO_BLOB) {.inline.} =
+  self.union1.psBlob = x
+
+proc psBlob*(self: SIP_SUBJECTINFO): ptr MS_ADDINFO_BLOB {.inline.} =
+  self.union1.psBlob
+
+proc psBlob*(self: var SIP_SUBJECTINFO): var ptr MS_ADDINFO_BLOB {.inline.} =
+  self.union1.psBlob
--- a/semicongine/thirdparty/winim/winim/inc/winuser.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winuser.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -30,9 +30,9 @@
   HELPPOLY* = DWORD
   HRAWINPUT* = HANDLE
   HGESTUREINFO* = HANDLE
-  NAMEENUMPROCA* = proc (P1: LPSTR, P2: LPARAM): WINBOOL {.stdcall.}
+  NAMEENUMPROCA* = proc(P1: LPSTR, P2: LPARAM): WINBOOL {.stdcall.}
   WINSTAENUMPROCA* = NAMEENUMPROCA
-  NAMEENUMPROCW* = proc (P1: LPWSTR, P2: LPARAM): WINBOOL {.stdcall.}
+  NAMEENUMPROCW* = proc(P1: LPWSTR, P2: LPARAM): WINBOOL {.stdcall.}
   WINSTAENUMPROCW* = NAMEENUMPROCW
   DESKTOPENUMPROCA* = NAMEENUMPROCA
   DESKTOPENUMPROCW* = NAMEENUMPROCW
@@ -49,9 +49,11 @@
     lpszName*: LPCSTR
     lpszClass*: LPCSTR
     dwExStyle*: DWORD
+
   CBT_CREATEWNDA* {.pure.} = object
     lpcs*: ptr CREATESTRUCTA
     hwndInsertAfter*: HWND
+
   LPCBT_CREATEWNDA* = ptr CBT_CREATEWNDA
   CREATESTRUCTW* {.pure.} = object
     lpCreateParams*: LPVOID
@@ -66,21 +68,26 @@
     lpszName*: LPCWSTR
     lpszClass*: LPCWSTR
     dwExStyle*: DWORD
+
   CBT_CREATEWNDW* {.pure.} = object
     lpcs*: ptr CREATESTRUCTW
     hwndInsertAfter*: HWND
+
   LPCBT_CREATEWNDW* = ptr CBT_CREATEWNDW
   CBTACTIVATESTRUCT* {.pure.} = object
     fMouse*: WINBOOL
     hWndActive*: HWND
+
   LPCBTACTIVATESTRUCT* = ptr CBTACTIVATESTRUCT
   WTSSESSION_NOTIFICATION* {.pure.} = object
     cbSize*: DWORD
     dwSessionId*: DWORD
+
   PWTSSESSION_NOTIFICATION* = ptr WTSSESSION_NOTIFICATION
   SHELLHOOKINFO* {.pure.} = object
     hwnd*: HWND
     rc*: RECT
+
   LPSHELLHOOKINFO* = ptr SHELLHOOKINFO
   EVENTMSG* {.pure.} = object
     message*: UINT
@@ -88,6 +95,7 @@
     paramH*: UINT
     time*: DWORD
     hwnd*: HWND
+
   PEVENTMSGMSG* = ptr EVENTMSG
   NPEVENTMSGMSG* = ptr EVENTMSG
   LPEVENTMSGMSG* = ptr EVENTMSG
@@ -99,6 +107,7 @@
     wParam*: WPARAM
     message*: UINT
     hwnd*: HWND
+
   PCWPSTRUCT* = ptr CWPSTRUCT
   NPCWPSTRUCT* = ptr CWPSTRUCT
   LPCWPSTRUCT* = ptr CWPSTRUCT
@@ -108,6 +117,7 @@
     wParam*: WPARAM
     message*: UINT
     hwnd*: HWND
+
   PCWPRETSTRUCT* = ptr CWPRETSTRUCT
   NPCWPRETSTRUCT* = ptr CWPRETSTRUCT
   LPCWPRETSTRUCT* = ptr CWPRETSTRUCT
@@ -117,6 +127,7 @@
     flags*: DWORD
     time*: DWORD
     dwExtraInfo*: ULONG_PTR
+
   LPKBDLLHOOKSTRUCT* = ptr KBDLLHOOKSTRUCT
   PKBDLLHOOKSTRUCT* = ptr KBDLLHOOKSTRUCT
   MSLLHOOKSTRUCT* {.pure.} = object
@@ -125,6 +136,7 @@
     flags*: DWORD
     time*: DWORD
     dwExtraInfo*: ULONG_PTR
+
   LPMSLLHOOKSTRUCT* = ptr MSLLHOOKSTRUCT
   PMSLLHOOKSTRUCT* = ptr MSLLHOOKSTRUCT
   DEBUGHOOKINFO* {.pure.} = object
@@ -133,6 +145,7 @@
     lParam*: LPARAM
     wParam*: WPARAM
     code*: int32
+
   PDEBUGHOOKINFO* = ptr DEBUGHOOKINFO
   NPDEBUGHOOKINFO* = ptr DEBUGHOOKINFO
   LPDEBUGHOOKINFO* = ptr DEBUGHOOKINFO
@@ -141,11 +154,13 @@
     hwnd*: HWND
     wHitTestCode*: UINT
     dwExtraInfo*: ULONG_PTR
+
   LPMOUSEHOOKSTRUCT* = ptr MOUSEHOOKSTRUCT
   PMOUSEHOOKSTRUCT* = ptr MOUSEHOOKSTRUCT
   MOUSEHOOKSTRUCTEX* {.pure.} = object
     unnamed*: MOUSEHOOKSTRUCT
     mouseData*: DWORD
+
   LPMOUSEHOOKSTRUCTEX* = ptr MOUSEHOOKSTRUCTEX
   PMOUSEHOOKSTRUCTEX* = ptr MOUSEHOOKSTRUCTEX
   HARDWAREHOOKSTRUCT* {.pure.} = object
@@ -153,6 +168,7 @@
     message*: UINT
     wParam*: WPARAM
     lParam*: LPARAM
+
   LPHARDWAREHOOKSTRUCT* = ptr HARDWAREHOOKSTRUCT
   PHARDWAREHOOKSTRUCT* = ptr HARDWAREHOOKSTRUCT
   MOUSEMOVEPOINT* {.pure.} = object
@@ -160,14 +176,16 @@
     y*: int32
     time*: DWORD
     dwExtraInfo*: ULONG_PTR
+
   PMOUSEMOVEPOINT* = ptr MOUSEMOVEPOINT
   LPMOUSEMOVEPOINT* = ptr MOUSEMOVEPOINT
   USEROBJECTFLAGS* {.pure.} = object
     fInherit*: WINBOOL
     fReserved*: WINBOOL
     dwFlags*: DWORD
+
   PUSEROBJECTFLAGS* = ptr USEROBJECTFLAGS
-  WNDPROC* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): LRESULT {.stdcall.}
+  WNDPROC* = proc(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): LRESULT {.stdcall.}
   WNDCLASSEXA* {.pure.} = object
     cbSize*: UINT
     style*: UINT
@@ -181,6 +199,7 @@
     lpszMenuName*: LPCSTR
     lpszClassName*: LPCSTR
     hIconSm*: HICON
+
   PWNDCLASSEXA* = ptr WNDCLASSEXA
   NPWNDCLASSEXA* = ptr WNDCLASSEXA
   LPWNDCLASSEXA* = ptr WNDCLASSEXA
@@ -197,6 +216,7 @@
     lpszMenuName*: LPCWSTR
     lpszClassName*: LPCWSTR
     hIconSm*: HICON
+
   PWNDCLASSEXW* = ptr WNDCLASSEXW
   NPWNDCLASSEXW* = ptr WNDCLASSEXW
   LPWNDCLASSEXW* = ptr WNDCLASSEXW
@@ -211,6 +231,7 @@
     hbrBackground*: HBRUSH
     lpszMenuName*: LPCSTR
     lpszClassName*: LPCSTR
+
   PWNDCLASSA* = ptr WNDCLASSA
   NPWNDCLASSA* = ptr WNDCLASSA
   LPWNDCLASSA* = ptr WNDCLASSA
@@ -225,6 +246,7 @@
     hbrBackground*: HBRUSH
     lpszMenuName*: LPCWSTR
     lpszClassName*: LPCWSTR
+
   PWNDCLASSW* = ptr WNDCLASSW
   NPWNDCLASSW* = ptr WNDCLASSW
   LPWNDCLASSW* = ptr WNDCLASSW
@@ -235,6 +257,7 @@
     lParam*: LPARAM
     time*: DWORD
     pt*: POINT
+
   PMSG* = ptr MSG
   NPMSG* = ptr MSG
   LPMSG* = ptr MSG
@@ -244,23 +267,27 @@
     ptMaxPosition*: POINT
     ptMinTrackSize*: POINT
     ptMaxTrackSize*: POINT
+
   PMINMAXINFO* = ptr MINMAXINFO
   LPMINMAXINFO* = ptr MINMAXINFO
   COPYDATASTRUCT* {.pure.} = object
     dwData*: ULONG_PTR
     cbData*: DWORD
     lpData*: PVOID
+
   PCOPYDATASTRUCT* = ptr COPYDATASTRUCT
   MDINEXTMENU* {.pure.} = object
     hmenuIn*: HMENU
     hmenuNext*: HMENU
     hwndNext*: HWND
+
   PMDINEXTMENU* = ptr MDINEXTMENU
   LPMDINEXTMENU* = ptr MDINEXTMENU
   POWERBROADCAST_SETTING* {.pure.} = object
     PowerSetting*: GUID
     DataLength*: DWORD
     Data*: array[1, UCHAR]
+
   PPOWERBROADCAST_SETTING* = ptr POWERBROADCAST_SETTING
   WINDOWPOS* {.pure.} = object
     hwnd*: HWND
@@ -270,22 +297,26 @@
     cx*: int32
     cy*: int32
     flags*: UINT
+
   LPWINDOWPOS* = ptr WINDOWPOS
   PWINDOWPOS* = ptr WINDOWPOS
   NCCALCSIZE_PARAMS* {.pure.} = object
     rgrc*: array[3, RECT]
     lppos*: PWINDOWPOS
+
   LPNCCALCSIZE_PARAMS* = ptr NCCALCSIZE_PARAMS
   TTRACKMOUSEEVENT* {.pure.} = object
     cbSize*: DWORD
     dwFlags*: DWORD
     hwndTrack*: HWND
     dwHoverTime*: DWORD
+
   LPTRACKMOUSEEVENT* = ptr TTRACKMOUSEEVENT
   ACCEL* {.pure.} = object
     fVirt*: BYTE
     key*: WORD
     cmd*: WORD
+
   LPACCEL* = ptr ACCEL
   PAINTSTRUCT* {.pure.} = object
     hdc*: HDC
@@ -294,6 +325,7 @@
     fRestore*: WINBOOL
     fIncUpdate*: WINBOOL
     rgbReserved*: array[32, BYTE]
+
   PPAINTSTRUCT* = ptr PAINTSTRUCT
   NPPAINTSTRUCT* = ptr PAINTSTRUCT
   LPPAINTSTRUCT* = ptr PAINTSTRUCT
@@ -306,16 +338,19 @@
     ptMinPosition*: POINT
     ptMaxPosition*: POINT
     rcNormalPosition*: RECT
+
   PWINDOWPLACEMENT* = ptr WINDOWPLACEMENT
   LPWINDOWPLACEMENT* = ptr WINDOWPLACEMENT
   NMHDR* {.pure.} = object
     hwndFrom*: HWND
     idFrom*: UINT_PTR
     code*: UINT
+
   LPNMHDR* = ptr NMHDR
   STYLESTRUCT* {.pure.} = object
     styleOld*: DWORD
     styleNew*: DWORD
+
   LPSTYLESTRUCT* = ptr STYLESTRUCT
   MEASUREITEMSTRUCT* {.pure.} = object
     CtlType*: UINT
@@ -324,6 +359,7 @@
     itemWidth*: UINT
     itemHeight*: UINT
     itemData*: ULONG_PTR
+
   PMEASUREITEMSTRUCT* = ptr MEASUREITEMSTRUCT
   LPMEASUREITEMSTRUCT* = ptr MEASUREITEMSTRUCT
   DRAWITEMSTRUCT* {.pure.} = object
@@ -336,6 +372,7 @@
     hDC*: HDC
     rcItem*: RECT
     itemData*: ULONG_PTR
+
   PDRAWITEMSTRUCT* = ptr DRAWITEMSTRUCT
   LPDRAWITEMSTRUCT* = ptr DRAWITEMSTRUCT
   DELETEITEMSTRUCT* {.pure.} = object
@@ -344,6 +381,7 @@
     itemID*: UINT
     hwndItem*: HWND
     itemData*: ULONG_PTR
+
   PDELETEITEMSTRUCT* = ptr DELETEITEMSTRUCT
   LPDELETEITEMSTRUCT* = ptr DELETEITEMSTRUCT
   COMPAREITEMSTRUCT* {.pure.} = object
@@ -355,6 +393,7 @@
     itemID2*: UINT
     itemData2*: ULONG_PTR
     dwLocaleId*: DWORD
+
   PCOMPAREITEMSTRUCT* = ptr COMPAREITEMSTRUCT
   LPCOMPAREITEMSTRUCT* = ptr COMPAREITEMSTRUCT
   BSMINFO* {.pure.} = object
@@ -362,6 +401,7 @@
     hdesk*: HDESK
     hwnd*: HWND
     luid*: LUID
+
   PBSMINFO* = ptr BSMINFO
   PHDEVNOTIFY* = ptr HDEVNOTIFY
   PHPOWERNOTIFY* = ptr HPOWERNOTIFY
@@ -376,6 +416,7 @@
     pblend*: ptr BLENDFUNCTION
     dwFlags*: DWORD
     prcDirty*: ptr RECT
+
   PUPDATELAYEREDWINDOWINFO* = ptr UPDATELAYEREDWINDOWINFO
   FLASHWINFO* {.pure.} = object
     cbSize*: UINT
@@ -383,6 +424,7 @@
     dwFlags*: DWORD
     uCount*: UINT
     dwTimeout*: DWORD
+
   PFLASHWINFO* = ptr FLASHWINFO
   DLGTEMPLATE* {.pure, packed.} = object
     style*: DWORD
@@ -392,6 +434,7 @@
     y*: int16
     cx*: int16
     cy*: int16
+
   LPDLGTEMPLATEA* = ptr DLGTEMPLATE
   LPDLGTEMPLATEW* = ptr DLGTEMPLATE
   LPCDLGTEMPLATEA* = ptr DLGTEMPLATE
@@ -404,6 +447,7 @@
     cx*: int16
     cy*: int16
     id*: WORD
+
   PDLGITEMTEMPLATEA* = ptr DLGITEMTEMPLATE
   PDLGITEMTEMPLATEW* = ptr DLGITEMTEMPLATE
   LPDLGITEMTEMPLATEA* = ptr DLGITEMTEMPLATE
@@ -415,6 +459,7 @@
     dwFlags*: DWORD
     time*: DWORD
     dwExtraInfo*: ULONG_PTR
+
   PMOUSEINPUT* = ptr MOUSEINPUT
   LPMOUSEINPUT* = ptr MOUSEINPUT
   KEYBDINPUT* {.pure.} = object
@@ -423,21 +468,25 @@
     dwFlags*: DWORD
     time*: DWORD
     dwExtraInfo*: ULONG_PTR
+
   PKEYBDINPUT* = ptr KEYBDINPUT
   LPKEYBDINPUT* = ptr KEYBDINPUT
   HARDWAREINPUT* {.pure.} = object
     uMsg*: DWORD
     wParamL*: WORD
     wParamH*: WORD
+
   PHARDWAREINPUT* = ptr HARDWAREINPUT
   LPHARDWAREINPUT* = ptr HARDWAREINPUT
   INPUT_UNION1* {.pure, union.} = object
     mi*: MOUSEINPUT
     ki*: KEYBDINPUT
     hi*: HARDWAREINPUT
+
   INPUT* {.pure.} = object
     `type`*: DWORD
     union1*: INPUT_UNION1
+
   PINPUT* = ptr INPUT
   LPINPUT* = ptr INPUT
   TOUCHINPUT* {.pure.} = object
@@ -451,6 +500,7 @@
     dwExtraInfo*: ULONG_PTR
     cxContact*: DWORD
     cyContact*: DWORD
+
   PTOUCHINPUT* = ptr TOUCHINPUT
   PCTOUCHINPUT* = ptr TOUCHINPUT
   POINTER_FLAGS* = UINT32
@@ -461,6 +511,7 @@
   TOUCH_HIT_TESTING_PROXIMITY_EVALUATION* {.pure.} = object
     score*: UINT16
     adjustedPoint*: POINT
+
   PTOUCH_HIT_TESTING_PROXIMITY_EVALUATION* = ptr TOUCH_HIT_TESTING_PROXIMITY_EVALUATION
   TOUCH_HIT_TESTING_INPUT* {.pure.} = object
     pointerId*: UINT32
@@ -468,10 +519,12 @@
     boundingBox*: RECT
     nonOccludedBoundingBox*: RECT
     orientation*: UINT32
+
   PTOUCH_HIT_TESTING_INPUT* = ptr TOUCH_HIT_TESTING_INPUT
   LASTINPUTINFO* {.pure.} = object
     cbSize*: UINT
     dwTime*: DWORD
+
   PLASTINPUTINFO* = ptr LASTINPUTINFO
   MENUINFO* {.pure.} = object
     cbSize*: DWORD
@@ -481,10 +534,12 @@
     hbrBack*: HBRUSH
     dwContextHelpID*: DWORD
     dwMenuData*: ULONG_PTR
+
   LPMENUINFO* = ptr MENUINFO
   TPMPARAMS* {.pure.} = object
     cbSize*: UINT
     rcExclude*: RECT
+
   LPTPMPARAMS* = ptr TPMPARAMS
   LPCMENUINFO* = ptr MENUINFO
   MENUGETOBJECTINFO* {.pure.} = object
@@ -493,6 +548,7 @@
     hmenu*: HMENU
     riid*: PVOID
     pvObj*: PVOID
+
   PMENUGETOBJECTINFO* = ptr MENUGETOBJECTINFO
   MENUITEMINFOA* {.pure.} = object
     cbSize*: UINT
@@ -507,6 +563,7 @@
     dwTypeData*: LPSTR
     cch*: UINT
     hbmpItem*: HBITMAP
+
   LPMENUITEMINFOA* = ptr MENUITEMINFOA
   MENUITEMINFOW* {.pure.} = object
     cbSize*: UINT
@@ -521,6 +578,7 @@
     dwTypeData*: LPWSTR
     cch*: UINT
     hbmpItem*: HBITMAP
+
   LPMENUITEMINFOW* = ptr MENUITEMINFOW
   LPCMENUITEMINFOA* = ptr MENUITEMINFOA
   LPCMENUITEMINFOW* = ptr MENUITEMINFOW
@@ -531,6 +589,7 @@
     dwData*: ULONG_PTR
     ptDrop*: POINT
     dwControlData*: DWORD
+
   PDROPSTRUCT* = ptr DROPSTRUCT
   LPDROPSTRUCT* = ptr DROPSTRUCT
   DRAWTEXTPARAMS* {.pure.} = object
@@ -539,6 +598,7 @@
     iLeftMargin*: int32
     iRightMargin*: int32
     uiLengthDrawn*: UINT
+
   LPDRAWTEXTPARAMS* = ptr DRAWTEXTPARAMS
   HELPINFO* {.pure.} = object
     cbSize*: UINT
@@ -547,8 +607,9 @@
     hItemHandle*: HANDLE
     dwContextId*: DWORD_PTR
     MousePos*: POINT
+
   LPHELPINFO* = ptr HELPINFO
-  MSGBOXCALLBACK* = proc (lpHelpInfo: LPHELPINFO): VOID {.stdcall.}
+  MSGBOXCALLBACK* = proc(lpHelpInfo: LPHELPINFO): VOID {.stdcall.}
   MSGBOXPARAMSA* {.pure.} = object
     cbSize*: UINT
     hwndOwner*: HWND
@@ -560,6 +621,7 @@
     dwContextHelpId*: DWORD_PTR
     lpfnMsgBoxCallback*: MSGBOXCALLBACK
     dwLanguageId*: DWORD
+
   PMSGBOXPARAMSA* = ptr MSGBOXPARAMSA
   LPMSGBOXPARAMSA* = ptr MSGBOXPARAMSA
   MSGBOXPARAMSW* {.pure.} = object
@@ -573,16 +635,19 @@
     dwContextHelpId*: DWORD_PTR
     lpfnMsgBoxCallback*: MSGBOXCALLBACK
     dwLanguageId*: DWORD
+
   PMSGBOXPARAMSW* = ptr MSGBOXPARAMSW
   LPMSGBOXPARAMSW* = ptr MSGBOXPARAMSW
   MENUITEMTEMPLATEHEADER* {.pure.} = object
     versionNumber*: WORD
     offset*: WORD
+
   PMENUITEMTEMPLATEHEADER* = ptr MENUITEMTEMPLATEHEADER
   MENUITEMTEMPLATE* {.pure.} = object
     mtOption*: WORD
     mtID*: WORD
     mtString*: array[1, WCHAR]
+
   PMENUITEMTEMPLATE* = ptr MENUITEMTEMPLATE
   ICONINFO* {.pure.} = object
     fIcon*: WINBOOL
@@ -590,6 +655,7 @@
     yHotspot*: DWORD
     hbmMask*: HBITMAP
     hbmColor*: HBITMAP
+
   PICONINFO* = ptr ICONINFO
   CURSORSHAPE* {.pure.} = object
     xHotSpot*: int32
@@ -599,6 +665,7 @@
     cbWidth*: int32
     Planes*: BYTE
     BitsPixel*: BYTE
+
   LPCURSORSHAPE* = ptr CURSORSHAPE
   ICONINFOEXA* {.pure.} = object
     cbSize*: DWORD
@@ -610,6 +677,7 @@
     wResID*: WORD
     szModName*: array[MAX_PATH, CHAR]
     szResName*: array[MAX_PATH, CHAR]
+
   PICONINFOEXA* = ptr ICONINFOEXA
   ICONINFOEXW* {.pure.} = object
     cbSize*: DWORD
@@ -621,6 +689,7 @@
     wResID*: WORD
     szModName*: array[MAX_PATH, WCHAR]
     szResName*: array[MAX_PATH, WCHAR]
+
   PICONINFOEXW* = ptr ICONINFOEXW
   SCROLLINFO* {.pure.} = object
     cbSize*: UINT
@@ -630,6 +699,7 @@
     nPage*: UINT
     nPos*: int32
     nTrackPos*: int32
+
   LPSCROLLINFO* = ptr SCROLLINFO
   LPCSCROLLINFO* = ptr SCROLLINFO
   MDICREATESTRUCTA* {.pure.} = object
@@ -642,6 +712,7 @@
     cy*: int32
     style*: DWORD
     lParam*: LPARAM
+
   LPMDICREATESTRUCTA* = ptr MDICREATESTRUCTA
   MDICREATESTRUCTW* {.pure.} = object
     szClass*: LPCWSTR
@@ -653,21 +724,25 @@
     cy*: int32
     style*: DWORD
     lParam*: LPARAM
+
   LPMDICREATESTRUCTW* = ptr MDICREATESTRUCTW
   CLIENTCREATESTRUCT* {.pure.} = object
     hWindowMenu*: HANDLE
     idFirstChild*: UINT
+
   LPCLIENTCREATESTRUCT* = ptr CLIENTCREATESTRUCT
   MULTIKEYHELPA* {.pure.} = object
     mkSize*: DWORD
     mkKeylist*: CHAR
     szKeyphrase*: array[1, CHAR]
+
   PMULTIKEYHELPA* = ptr MULTIKEYHELPA
   LPMULTIKEYHELPA* = ptr MULTIKEYHELPA
   MULTIKEYHELPW* {.pure.} = object
     mkSize*: DWORD
     mkKeylist*: WCHAR
     szKeyphrase*: array[1, WCHAR]
+
   PMULTIKEYHELPW* = ptr MULTIKEYHELPW
   LPMULTIKEYHELPW* = ptr MULTIKEYHELPW
   HELPWININFOA* {.pure.} = object
@@ -678,6 +753,7 @@
     dy*: int32
     wMax*: int32
     rgchMember*: array[2, CHAR]
+
   PHELPWININFOA* = ptr HELPWININFOA
   LPHELPWININFOA* = ptr HELPWININFOA
   HELPWININFOW* {.pure.} = object
@@ -688,6 +764,7 @@
     dy*: int32
     wMax*: int32
     rgchMember*: array[2, WCHAR]
+
   PHELPWININFOW* = ptr HELPWININFOW
   LPHELPWININFOW* = ptr HELPWININFOW
   TOUCHPREDICTIONPARAMETERS* {.pure.} = object
@@ -695,6 +772,7 @@
     dwLatency*: UINT
     dwSampleTime*: UINT
     bUseHWTimeStamp*: UINT
+
   PTOUCHPREDICTIONPARAMETERS* = ptr TOUCHPREDICTIONPARAMETERS
   NONCLIENTMETRICSA* {.pure.} = object
     cbSize*: UINT
@@ -713,6 +791,7 @@
     lfStatusFont*: LOGFONTA
     lfMessageFont*: LOGFONTA
     iPaddedBorderWidth*: int32
+
   PNONCLIENTMETRICSA* = ptr NONCLIENTMETRICSA
   LPNONCLIENTMETRICSA* = ptr NONCLIENTMETRICSA
   NONCLIENTMETRICSW* {.pure.} = object
@@ -732,6 +811,7 @@
     lfStatusFont*: LOGFONTW
     lfMessageFont*: LOGFONTW
     iPaddedBorderWidth*: int32
+
   PNONCLIENTMETRICSW* = ptr NONCLIENTMETRICSW
   LPNONCLIENTMETRICSW* = ptr NONCLIENTMETRICSW
   MINIMIZEDMETRICS* {.pure.} = object
@@ -740,6 +820,7 @@
     iHorzGap*: int32
     iVertGap*: int32
     iArrange*: int32
+
   PMINIMIZEDMETRICS* = ptr MINIMIZEDMETRICS
   LPMINIMIZEDMETRICS* = ptr MINIMIZEDMETRICS
   ICONMETRICSA* {.pure.} = object
@@ -748,6 +829,7 @@
     iVertSpacing*: int32
     iTitleWrap*: int32
     lfFont*: LOGFONTA
+
   PICONMETRICSA* = ptr ICONMETRICSA
   LPICONMETRICSA* = ptr ICONMETRICSA
   ICONMETRICSW* {.pure.} = object
@@ -756,11 +838,13 @@
     iVertSpacing*: int32
     iTitleWrap*: int32
     lfFont*: LOGFONTW
+
   PICONMETRICSW* = ptr ICONMETRICSW
   LPICONMETRICSW* = ptr ICONMETRICSW
   ANIMATIONINFO* {.pure.} = object
     cbSize*: UINT
     iMinAnimate*: int32
+
   LPANIMATIONINFO* = ptr ANIMATIONINFO
   SERIALKEYSA* {.pure.} = object
     cbSize*: UINT
@@ -770,6 +854,7 @@
     iBaudRate*: UINT
     iPortState*: UINT
     iActive*: UINT
+
   LPSERIALKEYSA* = ptr SERIALKEYSA
   SERIALKEYSW* {.pure.} = object
     cbSize*: UINT
@@ -779,16 +864,19 @@
     iBaudRate*: UINT
     iPortState*: UINT
     iActive*: UINT
+
   LPSERIALKEYSW* = ptr SERIALKEYSW
   HIGHCONTRASTA* {.pure.} = object
     cbSize*: UINT
     dwFlags*: DWORD
     lpszDefaultScheme*: LPSTR
+
   LPHIGHCONTRASTA* = ptr HIGHCONTRASTA
   HIGHCONTRASTW* {.pure.} = object
     cbSize*: UINT
     dwFlags*: DWORD
     lpszDefaultScheme*: LPWSTR
+
   LPHIGHCONTRASTW* = ptr HIGHCONTRASTW
   VIDEOPARAMETERS* {.pure.} = object
     Guid*: GUID
@@ -814,6 +902,7 @@
     dwCPKey*: ULONG
     bCP_APSTriggerBits*: ULONG
     bOEMCopyProtection*: array[256, UCHAR]
+
   PVIDEOPARAMETERS* = ptr VIDEOPARAMETERS
   LPVIDEOPARAMETERS* = ptr VIDEOPARAMETERS
   FILTERKEYS* {.pure.} = object
@@ -823,10 +912,12 @@
     iDelayMSec*: DWORD
     iRepeatMSec*: DWORD
     iBounceMSec*: DWORD
+
   LPFILTERKEYS* = ptr FILTERKEYS
   STICKYKEYS* {.pure.} = object
     cbSize*: UINT
     dwFlags*: DWORD
+
   LPSTICKYKEYS* = ptr STICKYKEYS
   MOUSEKEYS* {.pure.} = object
     cbSize*: UINT
@@ -836,11 +927,13 @@
     iCtrlSpeed*: DWORD
     dwReserved1*: DWORD
     dwReserved2*: DWORD
+
   LPMOUSEKEYS* = ptr MOUSEKEYS
   ACCESSTIMEOUT* {.pure.} = object
     cbSize*: UINT
     dwFlags*: DWORD
     iTimeOutMSec*: DWORD
+
   LPACCESSTIMEOUT* = ptr ACCESSTIMEOUT
   SOUNDSENTRYA* {.pure.} = object
     cbSize*: UINT
@@ -855,6 +948,7 @@
     iWindowsEffectMSec*: DWORD
     lpszWindowsEffectDLL*: LPSTR
     iWindowsEffectOrdinal*: DWORD
+
   LPSOUNDSENTRYA* = ptr SOUNDSENTRYA
   SOUNDSENTRYW* {.pure.} = object
     cbSize*: UINT
@@ -869,39 +963,47 @@
     iWindowsEffectMSec*: DWORD
     lpszWindowsEffectDLL*: LPWSTR
     iWindowsEffectOrdinal*: DWORD
+
   LPSOUNDSENTRYW* = ptr SOUNDSENTRYW
   TOGGLEKEYS* {.pure.} = object
     cbSize*: UINT
     dwFlags*: DWORD
+
   LPTOGGLEKEYS* = ptr TOGGLEKEYS
   MONITORINFO* {.pure.} = object
     cbSize*: DWORD
     rcMonitor*: RECT
     rcWork*: RECT
     dwFlags*: DWORD
+
   LPMONITORINFO* = ptr MONITORINFO
   AUDIODESCRIPTION* {.pure.} = object
     cbSize*: UINT
     Enabled*: WINBOOL
     Locale*: LCID
+
   LPAUDIODESCRIPTION* = ptr AUDIODESCRIPTION
   MONITORINFOEXA_STRUCT1* {.pure.} = object
     cbSize*: DWORD
     rcMonitor*: RECT
     rcWork*: RECT
     dwFlags*: DWORD
+
   MONITORINFOEXA* {.pure.} = object
     struct1*: MONITORINFOEXA_STRUCT1
     szDevice*: array[CCHDEVICENAME, CHAR]
+
   LPMONITORINFOEXA* = ptr MONITORINFOEXA
   MONITORINFOEXW_STRUCT1* {.pure.} = object
     cbSize*: DWORD
     rcMonitor*: RECT
     rcWork*: RECT
     dwFlags*: DWORD
+
   MONITORINFOEXW* {.pure.} = object
     struct1*: MONITORINFOEXW_STRUCT1
     szDevice*: array[CCHDEVICENAME, WCHAR]
+
   LPMONITORINFOEXW* = ptr MONITORINFOEXW
   GUITHREADINFO* {.pure.} = object
     cbSize*: DWORD
@@ -913,6 +1015,7 @@
     hwndMoveSize*: HWND
     hwndCaret*: HWND
     rcCaret*: RECT
+
   PGUITHREADINFO* = ptr GUITHREADINFO
   LPGUITHREADINFO* = ptr GUITHREADINFO
   CURSORINFO* {.pure.} = object
@@ -920,6 +1023,7 @@
     flags*: DWORD
     hCursor*: HCURSOR
     ptScreenPos*: POINT
+
   PCURSORINFO* = ptr CURSORINFO
   LPCURSORINFO* = ptr CURSORINFO
   WINDOWINFO* {.pure.} = object
@@ -933,15 +1037,17 @@
     cyWindowBorders*: UINT
     atomWindowType*: ATOM
     wCreatorVersion*: WORD
+
   PWINDOWINFO* = ptr WINDOWINFO
   LPWINDOWINFO* = ptr WINDOWINFO
-const
-  CCHILDREN_TITLEBAR* = 5
+
+const CCHILDREN_TITLEBAR* = 5
 type
   TITLEBARINFO* {.pure.} = object
     cbSize*: DWORD
     rcTitleBar*: RECT
     rgstate*: array[CCHILDREN_TITLEBAR + 1, DWORD]
+
   PTITLEBARINFO* = ptr TITLEBARINFO
   LPTITLEBARINFO* = ptr TITLEBARINFO
   TITLEBARINFOEX* {.pure.} = object
@@ -949,6 +1055,7 @@
     rcTitleBar*: RECT
     rgstate*: array[CCHILDREN_TITLEBAR + 1, DWORD]
     rgrect*: array[CCHILDREN_TITLEBAR + 1, RECT]
+
   PTITLEBARINFOEX* = ptr TITLEBARINFOEX
   LPTITLEBARINFOEX* = ptr TITLEBARINFOEX
   MENUBARINFO* {.pure.} = object
@@ -956,12 +1063,13 @@
     rcBar*: RECT
     hMenu*: HMENU
     hwndMenu*: HWND
-    fBarFocused* {.bitsize:1.}: WINBOOL
-    fFocused* {.bitsize:1.}: WINBOOL
+    fBarFocused* {.bitsize: 1.}: WINBOOL
+    fFocused* {.bitsize: 1.}: WINBOOL
+
   PMENUBARINFO* = ptr MENUBARINFO
   LPMENUBARINFO* = ptr MENUBARINFO
-const
-  CCHILDREN_SCROLLBAR* = 5
+
+const CCHILDREN_SCROLLBAR* = 5
 type
   SCROLLBARINFO* {.pure.} = object
     cbSize*: DWORD
@@ -971,6 +1079,7 @@
     xyThumbBottom*: int32
     reserved*: int32
     rgstate*: array[CCHILDREN_SCROLLBAR + 1, DWORD]
+
   PSCROLLBARINFO* = ptr SCROLLBARINFO
   LPSCROLLBARINFO* = ptr SCROLLBARINFO
   COMBOBOXINFO* {.pure.} = object
@@ -981,6 +1090,7 @@
     hwndCombo*: HWND
     hwndItem*: HWND
     hwndList*: HWND
+
   PCOMBOBOXINFO* = ptr COMBOBOXINFO
   LPCOMBOBOXINFO* = ptr COMBOBOXINFO
   ALTTABINFO* {.pure.} = object
@@ -993,6 +1103,7 @@
     cxItem*: int32
     cyItem*: int32
     ptStart*: POINT
+
   PALTTABINFO* = ptr ALTTABINFO
   LPALTTABINFO* = ptr ALTTABINFO
   RAWINPUTHEADER* {.pure.} = object
@@ -1000,14 +1111,17 @@
     dwSize*: DWORD
     hDevice*: HANDLE
     wParam*: WPARAM
+
   PRAWINPUTHEADER* = ptr RAWINPUTHEADER
   LPRAWINPUTHEADER* = ptr RAWINPUTHEADER
   RAWMOUSE_UNION1_STRUCT1* {.pure.} = object
     usButtonFlags*: USHORT
     usButtonData*: USHORT
+
   RAWMOUSE_UNION1* {.pure, union.} = object
     ulButtons*: ULONG
     struct1*: RAWMOUSE_UNION1_STRUCT1
+
   RAWMOUSE* {.pure.} = object
     usFlags*: USHORT
     union1*: RAWMOUSE_UNION1
@@ -1015,6 +1129,7 @@
     lLastX*: LONG
     lLastY*: LONG
     ulExtraInformation*: ULONG
+
   PRAWMOUSE* = ptr RAWMOUSE
   LPRAWMOUSE* = ptr RAWMOUSE
   RAWKEYBOARD* {.pure.} = object
@@ -1024,21 +1139,25 @@
     VKey*: USHORT
     Message*: UINT
     ExtraInformation*: ULONG
+
   PRAWKEYBOARD* = ptr RAWKEYBOARD
   LPRAWKEYBOARD* = ptr RAWKEYBOARD
   RAWHID* {.pure.} = object
     dwSizeHid*: DWORD
     dwCount*: DWORD
     bRawData*: array[1, BYTE]
+
   PRAWHID* = ptr RAWHID
   LPRAWHID* = ptr RAWHID
   RAWINPUT_data* {.pure, union.} = object
     mouse*: RAWMOUSE
     keyboard*: RAWKEYBOARD
     hid*: RAWHID
+
   RAWINPUT* {.pure.} = object
     header*: RAWINPUTHEADER
     data*: RAWINPUT_data
+
   PRAWINPUT* = ptr RAWINPUT
   LPRAWINPUT* = ptr RAWINPUT
   RID_DEVICE_INFO_MOUSE* {.pure.} = object
@@ -1046,6 +1165,7 @@
     dwNumberOfButtons*: DWORD
     dwSampleRate*: DWORD
     fHasHorizontalWheel*: WINBOOL
+
   PRID_DEVICE_INFO_MOUSE* = ptr RID_DEVICE_INFO_MOUSE
   RID_DEVICE_INFO_KEYBOARD* {.pure.} = object
     dwType*: DWORD
@@ -1054,6 +1174,7 @@
     dwNumberOfFunctionKeys*: DWORD
     dwNumberOfIndicators*: DWORD
     dwNumberOfKeysTotal*: DWORD
+
   PRID_DEVICE_INFO_KEYBOARD* = ptr RID_DEVICE_INFO_KEYBOARD
   RID_DEVICE_INFO_HID* {.pure.} = object
     dwVendorId*: DWORD
@@ -1061,15 +1182,18 @@
     dwVersionNumber*: DWORD
     usUsagePage*: USHORT
     usUsage*: USHORT
+
   PRID_DEVICE_INFO_HID* = ptr RID_DEVICE_INFO_HID
   RID_DEVICE_INFO_UNION1* {.pure, union.} = object
     mouse*: RID_DEVICE_INFO_MOUSE
     keyboard*: RID_DEVICE_INFO_KEYBOARD
     hid*: RID_DEVICE_INFO_HID
+
   RID_DEVICE_INFO* {.pure.} = object
     cbSize*: DWORD
     dwType*: DWORD
     union1*: RID_DEVICE_INFO_UNION1
+
   PRID_DEVICE_INFO* = ptr RID_DEVICE_INFO
   LPRID_DEVICE_INFO* = ptr RID_DEVICE_INFO
   RAWINPUTDEVICE* {.pure.} = object
@@ -1077,16 +1201,19 @@
     usUsage*: USHORT
     dwFlags*: DWORD
     hwndTarget*: HWND
+
   PRAWINPUTDEVICE* = ptr RAWINPUTDEVICE
   LPRAWINPUTDEVICE* = ptr RAWINPUTDEVICE
   PCRAWINPUTDEVICE* = ptr RAWINPUTDEVICE
   RAWINPUTDEVICELIST* {.pure.} = object
     hDevice*: HANDLE
     dwType*: DWORD
+
   PRAWINPUTDEVICELIST* = ptr RAWINPUTDEVICELIST
   CHANGEFILTERSTRUCT* {.pure.} = object
     cbSize*: DWORD
     ExtStatus*: DWORD
+
   PCHANGEFILTERSTRUCT* = ptr CHANGEFILTERSTRUCT
   GESTUREINFO* {.pure.} = object
     cbSize*: UINT
@@ -1098,6 +1225,7 @@
     dwSequenceID*: DWORD
     ullArguments*: ULONGLONG
     cbExtraArgs*: UINT
+
   PGESTUREINFO* = ptr GESTUREINFO
   PCGESTUREINFO* = ptr GESTUREINFO
   GESTURENOTIFYSTRUCT* {.pure.} = object
@@ -1106,13 +1234,18 @@
     hwndTarget*: HWND
     ptsLocation*: POINTS
     dwInstanceID*: DWORD
+
   PGESTURENOTIFYSTRUCT* = ptr GESTURENOTIFYSTRUCT
   GESTURECONFIG* {.pure.} = object
     dwID*: DWORD
     dwWant*: DWORD
     dwBlock*: DWORD
+
   PGESTURECONFIG* = ptr GESTURECONFIG
-template MAKEINTRESOURCE*(i: untyped): untyped = cast[LPTSTR](i and 0xffff)
+
+template MAKEINTRESOURCE*(i: untyped): untyped =
+  cast[LPTSTR](i and 0xffff)
+
 const
   RT_CURSOR* = MAKEINTRESOURCE(1)
   RT_BITMAP* = MAKEINTRESOURCE(2)
@@ -1531,7 +1664,10 @@
   WINSTA_EXITWINDOWS* = 0x0040
   WINSTA_ENUMERATE* = 0x0100
   WINSTA_READSCREEN* = 0x0200
-  WINSTA_ALL_ACCESS* = WINSTA_ENUMDESKTOPS or WINSTA_READATTRIBUTES or WINSTA_ACCESSCLIPBOARD or WINSTA_CREATEDESKTOP or WINSTA_WRITEATTRIBUTES or WINSTA_ACCESSGLOBALATOMS or WINSTA_EXITWINDOWS or WINSTA_ENUMERATE or WINSTA_READSCREEN
+  WINSTA_ALL_ACCESS* =
+    WINSTA_ENUMDESKTOPS or WINSTA_READATTRIBUTES or WINSTA_ACCESSCLIPBOARD or
+    WINSTA_CREATEDESKTOP or WINSTA_WRITEATTRIBUTES or WINSTA_ACCESSGLOBALATOMS or
+    WINSTA_EXITWINDOWS or WINSTA_ENUMERATE or WINSTA_READSCREEN
   CWF_CREATE_ONLY* = 0x00000001
   WSF_VISIBLE* = 0x0001
   UOI_FLAGS* = 1
@@ -1960,7 +2096,9 @@
   WS_TILED* = WS_OVERLAPPED
   WS_ICONIC* = WS_MINIMIZE
   WS_SIZEBOX* = WS_THICKFRAME
-  WS_OVERLAPPEDWINDOW* = WS_OVERLAPPED or WS_CAPTION or WS_SYSMENU or WS_THICKFRAME or WS_MINIMIZEBOX or WS_MAXIMIZEBOX
+  WS_OVERLAPPEDWINDOW* =
+    WS_OVERLAPPED or WS_CAPTION or WS_SYSMENU or WS_THICKFRAME or WS_MINIMIZEBOX or
+    WS_MAXIMIZEBOX
   WS_TILEDWINDOW* = WS_OVERLAPPEDWINDOW
   WS_POPUPWINDOW* = WS_POPUP or WS_BORDER or WS_SYSMENU
   WS_CHILDWINDOW* = WS_CHILD
@@ -2372,7 +2510,8 @@
   MWMO_INPUTAVAILABLE* = 0x0004
   QS_ALLPOSTMESSAGE* = 0x0100
   QS_ALLEVENTS* = QS_INPUT or QS_POSTMESSAGE or QS_TIMER or QS_PAINT or QS_HOTKEY
-  QS_ALLINPUT* = QS_INPUT or QS_POSTMESSAGE or QS_TIMER or QS_PAINT or QS_HOTKEY or QS_SENDMESSAGE
+  QS_ALLINPUT* =
+    QS_INPUT or QS_POSTMESSAGE or QS_TIMER or QS_PAINT or QS_HOTKEY or QS_SENDMESSAGE
   USER_TIMER_MAXIMUM* = 0x7FFFFFFF
   USER_TIMER_MINIMUM* = 0x0000000A
   TIMERV_DEFAULT_COALESCING* = 0
@@ -3087,11 +3226,10 @@
   DWL_DLGPROC* = 4
   DWL_USER* = 8
   DWLP_MSGRESULT* = 0
-  DWLP_DLGPROC* = DWLP_MSGRESULT+sizeof(LRESULT)
-type
-  DLGPROC* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): INT_PTR {.stdcall.}
+  DWLP_DLGPROC* = DWLP_MSGRESULT + sizeof(LRESULT)
+type DLGPROC* = proc(P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): INT_PTR {.stdcall.}
 const
-  DWLP_USER* = DWLP_DLGPROC+sizeof(DLGPROC)
+  DWLP_USER* = DWLP_DLGPROC + sizeof(DLGPROC)
   DDL_READWRITE* = 0x0000
   DDL_READONLY* = 0x0001
   DDL_HIDDEN* = 0x0002
@@ -3117,9 +3255,9 @@
   DS_CONTEXTHELP* = 0x2000
   DS_SHELLFONT* = DS_SETFONT or DS_FIXEDSYS
   DS_USEPIXELS* = 0x8000
-  DM_GETDEFID* = WM_USER+0
-  DM_SETDEFID* = WM_USER+1
-  DM_REPOSITION* = WM_USER+2
+  DM_GETDEFID* = WM_USER + 0
+  DM_SETDEFID* = WM_USER + 1
+  DM_REPOSITION* = WM_USER + 2
   DC_HASDEFID* = 0x534B
   DLGC_WANTARROWS* = 0x0001
   DLGC_WANTTAB* = 0x0002
@@ -4061,26 +4199,42 @@
   ORIENTATION_PREFERENCE_PORTRAIT* = 0x2
   ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED* = 0x4
   ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED* = 0x8
-  RT_GROUP_CURSOR* = MAKEINTRESOURCE(1+DIFFERENCE)
-  RT_GROUP_ICON* = MAKEINTRESOURCE(3+DIFFERENCE)
+  RT_GROUP_CURSOR* = MAKEINTRESOURCE(1 + DIFFERENCE)
+  RT_GROUP_ICON* = MAKEINTRESOURCE(3 + DIFFERENCE)
   SETWALLPAPER_DEFAULT* = cast[LPWSTR](-1)
   WHEEL_PAGESCROLL* = 0xffffffff'i32
 type
-  TIMERPROC* = proc (P1: HWND, P2: UINT, P3: UINT_PTR, P4: DWORD): VOID {.stdcall.}
-  GRAYSTRINGPROC* = proc (P1: HDC, P2: LPARAM, P3: int32): WINBOOL {.stdcall.}
-  WNDENUMPROC* = proc (P1: HWND, P2: LPARAM): WINBOOL {.stdcall.}
-  HOOKPROC* = proc (code: int32, wParam: WPARAM, lParam: LPARAM): LRESULT {.stdcall.}
-  SENDASYNCPROC* = proc (P1: HWND, P2: UINT, P3: ULONG_PTR, P4: LRESULT): VOID {.stdcall.}
-  PROPENUMPROCA* = proc (P1: HWND, P2: LPCSTR, P3: HANDLE): WINBOOL {.stdcall.}
-  PROPENUMPROCW* = proc (P1: HWND, P2: LPCWSTR, P3: HANDLE): WINBOOL {.stdcall.}
-  PROPENUMPROCEXA* = proc (P1: HWND, P2: LPSTR, P3: HANDLE, P4: ULONG_PTR): WINBOOL {.stdcall.}
-  PROPENUMPROCEXW* = proc (P1: HWND, P2: LPWSTR, P3: HANDLE, P4: ULONG_PTR): WINBOOL {.stdcall.}
-  EDITWORDBREAKPROCA* = proc (lpch: LPSTR, ichCurrent: int32, cch: int32, code: int32): int32 {.stdcall.}
-  EDITWORDBREAKPROCW* = proc (lpch: LPWSTR, ichCurrent: int32, cch: int32, code: int32): int32 {.stdcall.}
-  DRAWSTATEPROC* = proc (hdc: HDC, lData: LPARAM, wData: WPARAM, cx: int32, cy: int32): WINBOOL {.stdcall.}
-  PREGISTERCLASSNAMEW* = proc (P1: LPCWSTR): BOOLEAN {.stdcall.}
-  MONITORENUMPROC* = proc (P1: HMONITOR, P2: HDC, P3: LPRECT, P4: LPARAM): WINBOOL {.stdcall.}
-  WINEVENTPROC* = proc (hWinEventHook: HWINEVENTHOOK, event: DWORD, hwnd: HWND, idObject: LONG, idChild: LONG, idEventThread: DWORD, dwmsEventTime: DWORD): VOID {.stdcall.}
+  TIMERPROC* = proc(P1: HWND, P2: UINT, P3: UINT_PTR, P4: DWORD): VOID {.stdcall.}
+  GRAYSTRINGPROC* = proc(P1: HDC, P2: LPARAM, P3: int32): WINBOOL {.stdcall.}
+  WNDENUMPROC* = proc(P1: HWND, P2: LPARAM): WINBOOL {.stdcall.}
+  HOOKPROC* = proc(code: int32, wParam: WPARAM, lParam: LPARAM): LRESULT {.stdcall.}
+  SENDASYNCPROC* =
+    proc(P1: HWND, P2: UINT, P3: ULONG_PTR, P4: LRESULT): VOID {.stdcall.}
+  PROPENUMPROCA* = proc(P1: HWND, P2: LPCSTR, P3: HANDLE): WINBOOL {.stdcall.}
+  PROPENUMPROCW* = proc(P1: HWND, P2: LPCWSTR, P3: HANDLE): WINBOOL {.stdcall.}
+  PROPENUMPROCEXA* =
+    proc(P1: HWND, P2: LPSTR, P3: HANDLE, P4: ULONG_PTR): WINBOOL {.stdcall.}
+  PROPENUMPROCEXW* =
+    proc(P1: HWND, P2: LPWSTR, P3: HANDLE, P4: ULONG_PTR): WINBOOL {.stdcall.}
+  EDITWORDBREAKPROCA* =
+    proc(lpch: LPSTR, ichCurrent: int32, cch: int32, code: int32): int32 {.stdcall.}
+  EDITWORDBREAKPROCW* =
+    proc(lpch: LPWSTR, ichCurrent: int32, cch: int32, code: int32): int32 {.stdcall.}
+  DRAWSTATEPROC* = proc(
+    hdc: HDC, lData: LPARAM, wData: WPARAM, cx: int32, cy: int32
+  ): WINBOOL {.stdcall.}
+  PREGISTERCLASSNAMEW* = proc(P1: LPCWSTR): BOOLEAN {.stdcall.}
+  MONITORENUMPROC* =
+    proc(P1: HMONITOR, P2: HDC, P3: LPRECT, P4: LPARAM): WINBOOL {.stdcall.}
+  WINEVENTPROC* = proc(
+    hWinEventHook: HWINEVENTHOOK,
+    event: DWORD,
+    hwnd: HWND,
+    idObject: LONG,
+    idChild: LONG,
+    idEventThread: DWORD,
+    dwmsEventTime: DWORD,
+  ): VOID {.stdcall.}
   POINTER_INFO* {.pure.} = object
     pointerType*: POINTER_INPUT_TYPE
     pointerId*: UINT32
@@ -4098,6 +4252,7 @@
     dwKeyStates*: DWORD
     PerformanceCount*: UINT64
     ButtonChangeType*: POINTER_BUTTON_CHANGE_TYPE
+
   POINTER_TOUCH_INFO* {.pure.} = object
     pointerInfo*: POINTER_INFO
     touchFlags*: TOUCH_FLAGS
@@ -4106,6 +4261,7 @@
     rcContactRaw*: RECT
     orientation*: UINT32
     pressure*: UINT32
+
   POINTER_PEN_INFO* {.pure.} = object
     pointerInfo*: POINTER_INFO
     penFlags*: PEN_FLAGS
@@ -4114,6 +4270,7 @@
     rotation*: UINT32
     tiltX*: INT32
     tiltY*: INT32
+
   POINTER_DEVICE_INFO* {.pure.} = object
     displayOrientation*: DWORD
     device*: HANDLE
@@ -4122,6 +4279,7 @@
     startingCursorId*: ULONG
     maxActiveContacts*: USHORT
     productString*: array[POINTER_DEVICE_PRODUCT_STRING_MAX, WCHAR]
+
   POINTER_DEVICE_PROPERTY* {.pure.} = object
     logicalMin*: INT32
     logicalMax*: INT32
@@ -4131,12 +4289,15 @@
     unitExponent*: UINT32
     usagePageId*: USHORT
     usageId*: USHORT
+
   POINTER_DEVICE_CURSOR_INFO* {.pure.} = object
     cursorId*: UINT32
     cursor*: POINTER_DEVICE_CURSOR_TYPE
+
   INPUT_MESSAGE_SOURCE* {.pure.} = object
     deviceType*: INPUT_MESSAGE_DEVICE_TYPE
     originId*: INPUT_MESSAGE_ORIGIN_ID
+
   INPUT_TRANSFORM_UNION1_STRUCT1* {.pure.} = object
     m11*: float32
     m12*: float32
@@ -4154,249 +4315,1010 @@
     m42*: float32
     m43*: float32
     m44*: float32
+
   INPUT_TRANSFORM_UNION1* {.pure, union.} = object
     struct1*: INPUT_TRANSFORM_UNION1_STRUCT1
     m*: array[4, array[4, float32]]
+
   INPUT_TRANSFORM* {.pure.} = object
     union1*: INPUT_TRANSFORM_UNION1
+
   MENUTEMPLATEA* {.pure.} = object
   MENUTEMPLATEW* {.pure.} = object
-proc wvsprintfA*(P1: LPSTR, P2: LPCSTR, arglist: va_list): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc wvsprintfW*(P1: LPWSTR, P2: LPCWSTR, arglist: va_list): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc wsprintfA*(P1: LPSTR, P2: LPCSTR): int32 {.winapi, cdecl, varargs, dynlib: "user32", importc.}
-proc wsprintfW*(P1: LPWSTR, P2: LPCWSTR): int32 {.winapi, cdecl, varargs, dynlib: "user32", importc.}
-proc LoadKeyboardLayoutA*(pwszKLID: LPCSTR, Flags: UINT): HKL {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadKeyboardLayoutW*(pwszKLID: LPCWSTR, Flags: UINT): HKL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ActivateKeyboardLayout*(hkl: HKL, Flags: UINT): HKL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ToUnicodeEx*(wVirtKey: UINT, wScanCode: UINT, lpKeyState: ptr BYTE, pwszBuff: LPWSTR, cchBuff: int32, wFlags: UINT, dwhkl: HKL): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc UnloadKeyboardLayout*(hkl: HKL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetKeyboardLayoutNameA*(pwszKLID: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetKeyboardLayoutNameW*(pwszKLID: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetKeyboardLayoutList*(nBuff: int32, lpList: ptr HKL): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetKeyboardLayout*(idThread: DWORD): HKL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMouseMovePointsEx*(cbSize: UINT, lppt: LPMOUSEMOVEPOINT, lpptBuf: LPMOUSEMOVEPOINT, nBufPoints: int32, resolution: DWORD): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateDesktopA*(lpszDesktop: LPCSTR, lpszDevice: LPCSTR, pDevmode: LPDEVMODEA, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateDesktopW*(lpszDesktop: LPCWSTR, lpszDevice: LPCWSTR, pDevmode: LPDEVMODEW, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateDesktopExA*(lpszDesktop: LPCSTR, lpszDevice: LPCSTR, pDevmode: ptr DEVMODEA, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ulHeapSize: ULONG, pvoid: PVOID): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateDesktopExW*(lpszDesktop: LPCWSTR, lpszDevice: LPCWSTR, pDevmode: ptr DEVMODEW, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ulHeapSize: ULONG, pvoid: PVOID): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
-proc OpenDesktopA*(lpszDesktop: LPCSTR, dwFlags: DWORD, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
-proc OpenDesktopW*(lpszDesktop: LPCWSTR, dwFlags: DWORD, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
-proc OpenInputDesktop*(dwFlags: DWORD, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumDesktopsA*(hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROCA, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumDesktopsW*(hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROCW, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumDesktopWindows*(hDesktop: HDESK, lpfn: WNDENUMPROC, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SwitchDesktop*(hDesktop: HDESK): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetThreadDesktop*(hDesktop: HDESK): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CloseDesktop*(hDesktop: HDESK): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetThreadDesktop*(dwThreadId: DWORD): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateWindowStationA*(lpwinsta: LPCSTR, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES): HWINSTA {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateWindowStationW*(lpwinsta: LPCWSTR, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES): HWINSTA {.winapi, stdcall, dynlib: "user32", importc.}
-proc OpenWindowStationA*(lpszWinSta: LPCSTR, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK): HWINSTA {.winapi, stdcall, dynlib: "user32", importc.}
-proc OpenWindowStationW*(lpszWinSta: LPCWSTR, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK): HWINSTA {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumWindowStationsA*(lpEnumFunc: WINSTAENUMPROCA, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumWindowStationsW*(lpEnumFunc: WINSTAENUMPROCW, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CloseWindowStation*(hWinSta: HWINSTA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetProcessWindowStation*(hWinSta: HWINSTA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc wvsprintfA*(
+  P1: LPSTR, P2: LPCSTR, arglist: va_list
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc wvsprintfW*(
+  P1: LPWSTR, P2: LPCWSTR, arglist: va_list
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc wsprintfA*(
+  P1: LPSTR, P2: LPCSTR
+): int32 {.winapi, cdecl, varargs, dynlib: "user32", importc.}
+
+proc wsprintfW*(
+  P1: LPWSTR, P2: LPCWSTR
+): int32 {.winapi, cdecl, varargs, dynlib: "user32", importc.}
+
+proc LoadKeyboardLayoutA*(
+  pwszKLID: LPCSTR, Flags: UINT
+): HKL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadKeyboardLayoutW*(
+  pwszKLID: LPCWSTR, Flags: UINT
+): HKL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ActivateKeyboardLayout*(
+  hkl: HKL, Flags: UINT
+): HKL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ToUnicodeEx*(
+  wVirtKey: UINT,
+  wScanCode: UINT,
+  lpKeyState: ptr BYTE,
+  pwszBuff: LPWSTR,
+  cchBuff: int32,
+  wFlags: UINT,
+  dwhkl: HKL,
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UnloadKeyboardLayout*(
+  hkl: HKL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetKeyboardLayoutNameA*(
+  pwszKLID: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetKeyboardLayoutNameW*(
+  pwszKLID: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetKeyboardLayoutList*(
+  nBuff: int32, lpList: ptr HKL
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetKeyboardLayout*(
+  idThread: DWORD
+): HKL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMouseMovePointsEx*(
+  cbSize: UINT,
+  lppt: LPMOUSEMOVEPOINT,
+  lpptBuf: LPMOUSEMOVEPOINT,
+  nBufPoints: int32,
+  resolution: DWORD,
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateDesktopA*(
+  lpszDesktop: LPCSTR,
+  lpszDevice: LPCSTR,
+  pDevmode: LPDEVMODEA,
+  dwFlags: DWORD,
+  dwDesiredAccess: ACCESS_MASK,
+  lpsa: LPSECURITY_ATTRIBUTES,
+): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateDesktopW*(
+  lpszDesktop: LPCWSTR,
+  lpszDevice: LPCWSTR,
+  pDevmode: LPDEVMODEW,
+  dwFlags: DWORD,
+  dwDesiredAccess: ACCESS_MASK,
+  lpsa: LPSECURITY_ATTRIBUTES,
+): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateDesktopExA*(
+  lpszDesktop: LPCSTR,
+  lpszDevice: LPCSTR,
+  pDevmode: ptr DEVMODEA,
+  dwFlags: DWORD,
+  dwDesiredAccess: ACCESS_MASK,
+  lpsa: LPSECURITY_ATTRIBUTES,
+  ulHeapSize: ULONG,
+  pvoid: PVOID,
+): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateDesktopExW*(
+  lpszDesktop: LPCWSTR,
+  lpszDevice: LPCWSTR,
+  pDevmode: ptr DEVMODEW,
+  dwFlags: DWORD,
+  dwDesiredAccess: ACCESS_MASK,
+  lpsa: LPSECURITY_ATTRIBUTES,
+  ulHeapSize: ULONG,
+  pvoid: PVOID,
+): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc OpenDesktopA*(
+  lpszDesktop: LPCSTR, dwFlags: DWORD, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK
+): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc OpenDesktopW*(
+  lpszDesktop: LPCWSTR, dwFlags: DWORD, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK
+): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc OpenInputDesktop*(
+  dwFlags: DWORD, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK
+): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumDesktopsA*(
+  hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROCA, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumDesktopsW*(
+  hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROCW, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumDesktopWindows*(
+  hDesktop: HDESK, lpfn: WNDENUMPROC, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SwitchDesktop*(
+  hDesktop: HDESK
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetThreadDesktop*(
+  hDesktop: HDESK
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CloseDesktop*(
+  hDesktop: HDESK
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetThreadDesktop*(
+  dwThreadId: DWORD
+): HDESK {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateWindowStationA*(
+  lpwinsta: LPCSTR,
+  dwFlags: DWORD,
+  dwDesiredAccess: ACCESS_MASK,
+  lpsa: LPSECURITY_ATTRIBUTES,
+): HWINSTA {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateWindowStationW*(
+  lpwinsta: LPCWSTR,
+  dwFlags: DWORD,
+  dwDesiredAccess: ACCESS_MASK,
+  lpsa: LPSECURITY_ATTRIBUTES,
+): HWINSTA {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc OpenWindowStationA*(
+  lpszWinSta: LPCSTR, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK
+): HWINSTA {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc OpenWindowStationW*(
+  lpszWinSta: LPCWSTR, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK
+): HWINSTA {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumWindowStationsA*(
+  lpEnumFunc: WINSTAENUMPROCA, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumWindowStationsW*(
+  lpEnumFunc: WINSTAENUMPROCW, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CloseWindowStation*(
+  hWinSta: HWINSTA
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetProcessWindowStation*(
+  hWinSta: HWINSTA
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetProcessWindowStation*(): HWINSTA {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetUserObjectSecurity*(hObj: HANDLE, pSIRequested: PSECURITY_INFORMATION, pSID: PSECURITY_DESCRIPTOR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetUserObjectSecurity*(hObj: HANDLE, pSIRequested: PSECURITY_INFORMATION, pSID: PSECURITY_DESCRIPTOR, nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetUserObjectInformationA*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetUserObjectInformationW*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetUserObjectInformationA*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetUserObjectInformationW*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsHungAppWindow*(hwnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DisableProcessWindowsGhosting*(): VOID {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterWindowMessageA*(lpString: LPCSTR): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterWindowMessageW*(lpString: LPCWSTR): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc TrackMouseEvent*(lpEventTrack: LPTRACKMOUSEEVENT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DrawEdge*(hdc: HDC, qrc: LPRECT, edge: UINT, grfFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DrawFrameControl*(P1: HDC, P2: LPRECT, P3: UINT, P4: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DrawCaption*(hwnd: HWND, hdc: HDC, lprect: ptr RECT, flags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DrawAnimatedRects*(hwnd: HWND, idAni: int32, lprcFrom: ptr RECT, lprcTo: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMessageA*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMessageW*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc TranslateMessage*(lpMsg: ptr MSG): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DispatchMessageA*(lpMsg: ptr MSG): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc DispatchMessageW*(lpMsg: ptr MSG): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetMessageQueue*(cMessagesMax: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc PeekMessageA*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc PeekMessageW*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterHotKey*(hWnd: HWND, id: int32, fsModifiers: UINT, vk: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc UnregisterHotKey*(hWnd: HWND, id: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ExitWindowsEx*(uFlags: UINT, dwReason: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SwapMouseButton*(fSwap: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc SetUserObjectSecurity*(
+  hObj: HANDLE, pSIRequested: PSECURITY_INFORMATION, pSID: PSECURITY_DESCRIPTOR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetUserObjectSecurity*(
+  hObj: HANDLE,
+  pSIRequested: PSECURITY_INFORMATION,
+  pSID: PSECURITY_DESCRIPTOR,
+  nLength: DWORD,
+  lpnLengthNeeded: LPDWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetUserObjectInformationA*(
+  hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD, lpnLengthNeeded: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetUserObjectInformationW*(
+  hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD, lpnLengthNeeded: LPDWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetUserObjectInformationA*(
+  hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetUserObjectInformationW*(
+  hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc IsHungAppWindow*(
+  hwnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DisableProcessWindowsGhosting*(): VOID {.
+  winapi, stdcall, dynlib: "user32", importc
+.}
+
+proc RegisterWindowMessageA*(
+  lpString: LPCSTR
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterWindowMessageW*(
+  lpString: LPCWSTR
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc TrackMouseEvent*(
+  lpEventTrack: LPTRACKMOUSEEVENT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DrawEdge*(
+  hdc: HDC, qrc: LPRECT, edge: UINT, grfFlags: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DrawFrameControl*(
+  P1: HDC, P2: LPRECT, P3: UINT, P4: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DrawCaption*(
+  hwnd: HWND, hdc: HDC, lprect: ptr RECT, flags: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DrawAnimatedRects*(
+  hwnd: HWND, idAni: int32, lprcFrom: ptr RECT, lprcTo: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMessageA*(
+  lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMessageW*(
+  lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc TranslateMessage*(
+  lpMsg: ptr MSG
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DispatchMessageA*(
+  lpMsg: ptr MSG
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DispatchMessageW*(
+  lpMsg: ptr MSG
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetMessageQueue*(
+  cMessagesMax: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PeekMessageA*(
+  lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PeekMessageW*(
+  lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterHotKey*(
+  hWnd: HWND, id: int32, fsModifiers: UINT, vk: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UnregisterHotKey*(
+  hWnd: HWND, id: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ExitWindowsEx*(
+  uFlags: UINT, dwReason: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SwapMouseButton*(
+  fSwap: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetMessagePos*(): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
 proc GetMessageTime*(): LONG {.winapi, stdcall, dynlib: "user32", importc.}
 proc GetMessageExtraInfo*(): LPARAM {.winapi, stdcall, dynlib: "user32", importc.}
 proc GetUnpredictedMessagePos*(): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
 proc IsWow64Message*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetMessageExtraInfo*(lParam: LPARAM): LPARAM {.winapi, stdcall, dynlib: "user32", importc.}
-proc SendMessageA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc SendMessageW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc SendMessageTimeoutA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, fuFlags: UINT, uTimeout: UINT, lpdwResult: PDWORD_PTR): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc SendMessageTimeoutW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, fuFlags: UINT, uTimeout: UINT, lpdwResult: PDWORD_PTR): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc SendNotifyMessageA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SendNotifyMessageW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SendMessageCallbackA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, lpResultCallBack: SENDASYNCPROC, dwData: ULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SendMessageCallbackW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, lpResultCallBack: SENDASYNCPROC, dwData: ULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc BroadcastSystemMessageExA*(flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM, pbsmInfo: PBSMINFO): LONG32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc BroadcastSystemMessageExW*(flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM, pbsmInfo: PBSMINFO): LONG32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc BroadcastSystemMessageA*(flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LONG32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc BroadcastSystemMessageW*(flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LONG32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterPowerSettingNotification*(hRecipient: HANDLE, PowerSettingGuid: LPCGUID, Flags: DWORD): HPOWERNOTIFY {.winapi, stdcall, dynlib: "user32", importc.}
-proc UnregisterPowerSettingNotification*(Handle: HPOWERNOTIFY): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterSuspendResumeNotification*(hRecipient: HANDLE, Flags: DWORD): HPOWERNOTIFY {.winapi, stdcall, dynlib: "user32", importc.}
-proc UnregisterSuspendResumeNotification*(Handle: HPOWERNOTIFY): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc PostMessageA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc PostMessageW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc PostThreadMessageA*(idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc PostThreadMessageW*(idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc AttachThreadInput*(idAttach: DWORD, idAttachTo: DWORD, fAttach: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ReplyMessage*(lResult: LRESULT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc SetMessageExtraInfo*(
+  lParam: LPARAM
+): LPARAM {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SendMessageA*(
+  hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SendMessageW*(
+  hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SendMessageTimeoutA*(
+  hWnd: HWND,
+  Msg: UINT,
+  wParam: WPARAM,
+  lParam: LPARAM,
+  fuFlags: UINT,
+  uTimeout: UINT,
+  lpdwResult: PDWORD_PTR,
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SendMessageTimeoutW*(
+  hWnd: HWND,
+  Msg: UINT,
+  wParam: WPARAM,
+  lParam: LPARAM,
+  fuFlags: UINT,
+  uTimeout: UINT,
+  lpdwResult: PDWORD_PTR,
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SendNotifyMessageA*(
+  hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SendNotifyMessageW*(
+  hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SendMessageCallbackA*(
+  hWnd: HWND,
+  Msg: UINT,
+  wParam: WPARAM,
+  lParam: LPARAM,
+  lpResultCallBack: SENDASYNCPROC,
+  dwData: ULONG_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SendMessageCallbackW*(
+  hWnd: HWND,
+  Msg: UINT,
+  wParam: WPARAM,
+  lParam: LPARAM,
+  lpResultCallBack: SENDASYNCPROC,
+  dwData: ULONG_PTR,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc BroadcastSystemMessageExA*(
+  flags: DWORD,
+  lpInfo: LPDWORD,
+  Msg: UINT,
+  wParam: WPARAM,
+  lParam: LPARAM,
+  pbsmInfo: PBSMINFO,
+): LONG32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc BroadcastSystemMessageExW*(
+  flags: DWORD,
+  lpInfo: LPDWORD,
+  Msg: UINT,
+  wParam: WPARAM,
+  lParam: LPARAM,
+  pbsmInfo: PBSMINFO,
+): LONG32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc BroadcastSystemMessageA*(
+  flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): LONG32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc BroadcastSystemMessageW*(
+  flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): LONG32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterPowerSettingNotification*(
+  hRecipient: HANDLE, PowerSettingGuid: LPCGUID, Flags: DWORD
+): HPOWERNOTIFY {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UnregisterPowerSettingNotification*(
+  Handle: HPOWERNOTIFY
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterSuspendResumeNotification*(
+  hRecipient: HANDLE, Flags: DWORD
+): HPOWERNOTIFY {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UnregisterSuspendResumeNotification*(
+  Handle: HPOWERNOTIFY
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PostMessageA*(
+  hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PostMessageW*(
+  hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PostThreadMessageA*(
+  idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PostThreadMessageW*(
+  idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc AttachThreadInput*(
+  idAttach: DWORD, idAttachTo: DWORD, fAttach: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ReplyMessage*(
+  lResult: LRESULT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc WaitMessage*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc WaitForInputIdle*(hProcess: HANDLE, dwMilliseconds: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc DefWindowProcA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc DefWindowProcW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc PostQuitMessage*(nExitCode: int32): VOID {.winapi, stdcall, dynlib: "user32", importc.}
+proc WaitForInputIdle*(
+  hProcess: HANDLE, dwMilliseconds: DWORD
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DefWindowProcA*(
+  hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DefWindowProcW*(
+  hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PostQuitMessage*(
+  nExitCode: int32
+): VOID {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc InSendMessage*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc InSendMessageEx*(lpReserved: LPVOID): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+proc InSendMessageEx*(
+  lpReserved: LPVOID
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetDoubleClickTime*(): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetDoubleClickTime*(P1: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterClassA*(lpWndClass: ptr WNDCLASSA): ATOM {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterClassW*(lpWndClass: ptr WNDCLASSW): ATOM {.winapi, stdcall, dynlib: "user32", importc.}
-proc UnregisterClassA*(lpClassName: LPCSTR, hInstance: HINSTANCE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc UnregisterClassW*(lpClassName: LPCWSTR, hInstance: HINSTANCE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetClassInfoA*(hInstance: HINSTANCE, lpClassName: LPCSTR, lpWndClass: LPWNDCLASSA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetClassInfoW*(hInstance: HINSTANCE, lpClassName: LPCWSTR, lpWndClass: LPWNDCLASSW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterClassExA*(P1: ptr WNDCLASSEXA): ATOM {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterClassExW*(P1: ptr WNDCLASSEXW): ATOM {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetClassInfoExA*(hInstance: HINSTANCE, lpszClass: LPCSTR, lpwcx: LPWNDCLASSEXA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetClassInfoExW*(hInstance: HINSTANCE, lpszClass: LPCWSTR, lpwcx: LPWNDCLASSEXW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CallWindowProcA*(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc CallWindowProcW*(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterDeviceNotificationA*(hRecipient: HANDLE, NotificationFilter: LPVOID, Flags: DWORD): HDEVNOTIFY {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterDeviceNotificationW*(hRecipient: HANDLE, NotificationFilter: LPVOID, Flags: DWORD): HDEVNOTIFY {.winapi, stdcall, dynlib: "user32", importc.}
-proc UnregisterDeviceNotification*(Handle: HDEVNOTIFY): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateWindowExA*(dwExStyle: DWORD, lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD, X: int32, Y: int32, nWidth: int32, nHeight: int32, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateWindowExW*(dwExStyle: DWORD, lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD, X: int32, Y: int32, nWidth: int32, nHeight: int32, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+proc SetDoubleClickTime*(
+  P1: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterClassA*(
+  lpWndClass: ptr WNDCLASSA
+): ATOM {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterClassW*(
+  lpWndClass: ptr WNDCLASSW
+): ATOM {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UnregisterClassA*(
+  lpClassName: LPCSTR, hInstance: HINSTANCE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UnregisterClassW*(
+  lpClassName: LPCWSTR, hInstance: HINSTANCE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetClassInfoA*(
+  hInstance: HINSTANCE, lpClassName: LPCSTR, lpWndClass: LPWNDCLASSA
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetClassInfoW*(
+  hInstance: HINSTANCE, lpClassName: LPCWSTR, lpWndClass: LPWNDCLASSW
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterClassExA*(
+  P1: ptr WNDCLASSEXA
+): ATOM {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterClassExW*(
+  P1: ptr WNDCLASSEXW
+): ATOM {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetClassInfoExA*(
+  hInstance: HINSTANCE, lpszClass: LPCSTR, lpwcx: LPWNDCLASSEXA
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetClassInfoExW*(
+  hInstance: HINSTANCE, lpszClass: LPCWSTR, lpwcx: LPWNDCLASSEXW
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CallWindowProcA*(
+  lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CallWindowProcW*(
+  lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterDeviceNotificationA*(
+  hRecipient: HANDLE, NotificationFilter: LPVOID, Flags: DWORD
+): HDEVNOTIFY {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterDeviceNotificationW*(
+  hRecipient: HANDLE, NotificationFilter: LPVOID, Flags: DWORD
+): HDEVNOTIFY {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UnregisterDeviceNotification*(
+  Handle: HDEVNOTIFY
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateWindowExA*(
+  dwExStyle: DWORD,
+  lpClassName: LPCSTR,
+  lpWindowName: LPCSTR,
+  dwStyle: DWORD,
+  X: int32,
+  Y: int32,
+  nWidth: int32,
+  nHeight: int32,
+  hWndParent: HWND,
+  hMenu: HMENU,
+  hInstance: HINSTANCE,
+  lpParam: LPVOID,
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateWindowExW*(
+  dwExStyle: DWORD,
+  lpClassName: LPCWSTR,
+  lpWindowName: LPCWSTR,
+  dwStyle: DWORD,
+  X: int32,
+  Y: int32,
+  nWidth: int32,
+  nHeight: int32,
+  hWndParent: HWND,
+  hMenu: HMENU,
+  hInstance: HINSTANCE,
+  lpParam: LPVOID,
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc IsWindow*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
 proc IsMenu*(hMenu: HMENU): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsChild*(hWndParent: HWND, hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc IsChild*(
+  hWndParent: HWND, hWnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc DestroyWindow*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ShowWindow*(hWnd: HWND, nCmdShow: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc AnimateWindow*(hWnd: HWND, dwTime: DWORD, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc UpdateLayeredWindow*(hWnd: HWND, hdcDst: HDC, pptDst: ptr POINT, psize: ptr SIZE, hdcSrc: HDC, pptSrc: ptr POINT, crKey: COLORREF, pblend: ptr BLENDFUNCTION, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc UpdateLayeredWindowIndirect*(hWnd: HWND, pULWInfo: ptr UPDATELAYEREDWINDOWINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetLayeredWindowAttributes*(hwnd: HWND, pcrKey: ptr COLORREF, pbAlpha: ptr BYTE, pdwFlags: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc PrintWindow*(hwnd: HWND, hdcBlt: HDC, nFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetLayeredWindowAttributes*(hwnd: HWND, crKey: COLORREF, bAlpha: BYTE, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ShowWindowAsync*(hWnd: HWND, nCmdShow: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc FlashWindow*(hWnd: HWND, bInvert: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc FlashWindowEx*(pfwi: PFLASHWINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ShowOwnedPopups*(hWnd: HWND, fShow: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc ShowWindow*(
+  hWnd: HWND, nCmdShow: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc AnimateWindow*(
+  hWnd: HWND, dwTime: DWORD, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UpdateLayeredWindow*(
+  hWnd: HWND,
+  hdcDst: HDC,
+  pptDst: ptr POINT,
+  psize: ptr SIZE,
+  hdcSrc: HDC,
+  pptSrc: ptr POINT,
+  crKey: COLORREF,
+  pblend: ptr BLENDFUNCTION,
+  dwFlags: DWORD,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UpdateLayeredWindowIndirect*(
+  hWnd: HWND, pULWInfo: ptr UPDATELAYEREDWINDOWINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetLayeredWindowAttributes*(
+  hwnd: HWND, pcrKey: ptr COLORREF, pbAlpha: ptr BYTE, pdwFlags: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PrintWindow*(
+  hwnd: HWND, hdcBlt: HDC, nFlags: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetLayeredWindowAttributes*(
+  hwnd: HWND, crKey: COLORREF, bAlpha: BYTE, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ShowWindowAsync*(
+  hWnd: HWND, nCmdShow: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc FlashWindow*(
+  hWnd: HWND, bInvert: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc FlashWindowEx*(
+  pfwi: PFLASHWINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ShowOwnedPopups*(
+  hWnd: HWND, fShow: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc OpenIcon*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
 proc CloseWindow*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc MoveWindow*(hWnd: HWND, X: int32, Y: int32, nWidth: int32, nHeight: int32, bRepaint: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowPos*(hWnd: HWND, hWndInsertAfter: HWND, X: int32, Y: int32, cx: int32, cy: int32, uFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowPlacement*(hWnd: HWND, lpwndpl: ptr WINDOWPLACEMENT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowPlacement*(hWnd: HWND, lpwndpl: ptr WINDOWPLACEMENT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowDisplayAffinity*(hWnd: HWND, pdwAffinity: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowDisplayAffinity*(hWnd: HWND, dwAffinity: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc BeginDeferWindowPos*(nNumWindows: int32): HDWP {.winapi, stdcall, dynlib: "user32", importc.}
-proc DeferWindowPos*(hWinPosInfo: HDWP, hWnd: HWND, hWndInsertAfter: HWND, x: int32, y: int32, cx: int32, cy: int32, uFlags: UINT): HDWP {.winapi, stdcall, dynlib: "user32", importc.}
-proc EndDeferWindowPos*(hWinPosInfo: HDWP): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsWindowVisible*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc MoveWindow*(
+  hWnd: HWND, X: int32, Y: int32, nWidth: int32, nHeight: int32, bRepaint: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowPos*(
+  hWnd: HWND,
+  hWndInsertAfter: HWND,
+  X: int32,
+  Y: int32,
+  cx: int32,
+  cy: int32,
+  uFlags: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowPlacement*(
+  hWnd: HWND, lpwndpl: ptr WINDOWPLACEMENT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowPlacement*(
+  hWnd: HWND, lpwndpl: ptr WINDOWPLACEMENT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowDisplayAffinity*(
+  hWnd: HWND, pdwAffinity: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowDisplayAffinity*(
+  hWnd: HWND, dwAffinity: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc BeginDeferWindowPos*(
+  nNumWindows: int32
+): HDWP {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DeferWindowPos*(
+  hWinPosInfo: HDWP,
+  hWnd: HWND,
+  hWndInsertAfter: HWND,
+  x: int32,
+  y: int32,
+  cx: int32,
+  cy: int32,
+  uFlags: UINT,
+): HDWP {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EndDeferWindowPos*(
+  hWinPosInfo: HDWP
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc IsWindowVisible*(
+  hWnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc IsIconic*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
 proc AnyPopup*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc BringWindowToTop*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc BringWindowToTop*(
+  hWnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc IsZoomed*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateDialogParamA*(hInstance: HINSTANCE, lpTemplateName: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateDialogParamW*(hInstance: HINSTANCE, lpTemplateName: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateDialogIndirectParamA*(hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEA, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateDialogIndirectParamW*(hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEW, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc DialogBoxParamA*(hInstance: HINSTANCE, lpTemplateName: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): INT_PTR {.winapi, stdcall, dynlib: "user32", importc.}
-proc DialogBoxParamW*(hInstance: HINSTANCE, lpTemplateName: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): INT_PTR {.winapi, stdcall, dynlib: "user32", importc.}
-proc DialogBoxIndirectParamA*(hInstance: HINSTANCE, hDialogTemplate: LPCDLGTEMPLATEA, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): INT_PTR {.winapi, stdcall, dynlib: "user32", importc.}
-proc DialogBoxIndirectParamW*(hInstance: HINSTANCE, hDialogTemplate: LPCDLGTEMPLATEW, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): INT_PTR {.winapi, stdcall, dynlib: "user32", importc.}
-proc EndDialog*(hDlg: HWND, nResult: INT_PTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetDlgItem*(hDlg: HWND, nIDDlgItem: int32): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetDlgItemInt*(hDlg: HWND, nIDDlgItem: int32, uValue: UINT, bSigned: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetDlgItemInt*(hDlg: HWND, nIDDlgItem: int32, lpTranslated: ptr WINBOOL, bSigned: WINBOOL): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetDlgItemTextA*(hDlg: HWND, nIDDlgItem: int32, lpString: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetDlgItemTextW*(hDlg: HWND, nIDDlgItem: int32, lpString: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetDlgItemTextA*(hDlg: HWND, nIDDlgItem: int32, lpString: LPSTR, cchMax: int32): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetDlgItemTextW*(hDlg: HWND, nIDDlgItem: int32, lpString: LPWSTR, cchMax: int32): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc CheckDlgButton*(hDlg: HWND, nIDButton: int32, uCheck: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CheckRadioButton*(hDlg: HWND, nIDFirstButton: int32, nIDLastButton: int32, nIDCheckButton: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsDlgButtonChecked*(hDlg: HWND, nIDButton: int32): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc SendDlgItemMessageA*(hDlg: HWND, nIDDlgItem: int32, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc SendDlgItemMessageW*(hDlg: HWND, nIDDlgItem: int32, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetNextDlgGroupItem*(hDlg: HWND, hCtl: HWND, bPrevious: WINBOOL): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetNextDlgTabItem*(hDlg: HWND, hCtl: HWND, bPrevious: WINBOOL): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+proc CreateDialogParamA*(
+  hInstance: HINSTANCE,
+  lpTemplateName: LPCSTR,
+  hWndParent: HWND,
+  lpDialogFunc: DLGPROC,
+  dwInitParam: LPARAM,
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateDialogParamW*(
+  hInstance: HINSTANCE,
+  lpTemplateName: LPCWSTR,
+  hWndParent: HWND,
+  lpDialogFunc: DLGPROC,
+  dwInitParam: LPARAM,
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateDialogIndirectParamA*(
+  hInstance: HINSTANCE,
+  lpTemplate: LPCDLGTEMPLATEA,
+  hWndParent: HWND,
+  lpDialogFunc: DLGPROC,
+  dwInitParam: LPARAM,
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateDialogIndirectParamW*(
+  hInstance: HINSTANCE,
+  lpTemplate: LPCDLGTEMPLATEW,
+  hWndParent: HWND,
+  lpDialogFunc: DLGPROC,
+  dwInitParam: LPARAM,
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DialogBoxParamA*(
+  hInstance: HINSTANCE,
+  lpTemplateName: LPCSTR,
+  hWndParent: HWND,
+  lpDialogFunc: DLGPROC,
+  dwInitParam: LPARAM,
+): INT_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DialogBoxParamW*(
+  hInstance: HINSTANCE,
+  lpTemplateName: LPCWSTR,
+  hWndParent: HWND,
+  lpDialogFunc: DLGPROC,
+  dwInitParam: LPARAM,
+): INT_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DialogBoxIndirectParamA*(
+  hInstance: HINSTANCE,
+  hDialogTemplate: LPCDLGTEMPLATEA,
+  hWndParent: HWND,
+  lpDialogFunc: DLGPROC,
+  dwInitParam: LPARAM,
+): INT_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DialogBoxIndirectParamW*(
+  hInstance: HINSTANCE,
+  hDialogTemplate: LPCDLGTEMPLATEW,
+  hWndParent: HWND,
+  lpDialogFunc: DLGPROC,
+  dwInitParam: LPARAM,
+): INT_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EndDialog*(
+  hDlg: HWND, nResult: INT_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetDlgItem*(
+  hDlg: HWND, nIDDlgItem: int32
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetDlgItemInt*(
+  hDlg: HWND, nIDDlgItem: int32, uValue: UINT, bSigned: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetDlgItemInt*(
+  hDlg: HWND, nIDDlgItem: int32, lpTranslated: ptr WINBOOL, bSigned: WINBOOL
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetDlgItemTextA*(
+  hDlg: HWND, nIDDlgItem: int32, lpString: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetDlgItemTextW*(
+  hDlg: HWND, nIDDlgItem: int32, lpString: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetDlgItemTextA*(
+  hDlg: HWND, nIDDlgItem: int32, lpString: LPSTR, cchMax: int32
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetDlgItemTextW*(
+  hDlg: HWND, nIDDlgItem: int32, lpString: LPWSTR, cchMax: int32
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CheckDlgButton*(
+  hDlg: HWND, nIDButton: int32, uCheck: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CheckRadioButton*(
+  hDlg: HWND, nIDFirstButton: int32, nIDLastButton: int32, nIDCheckButton: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc IsDlgButtonChecked*(
+  hDlg: HWND, nIDButton: int32
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SendDlgItemMessageA*(
+  hDlg: HWND, nIDDlgItem: int32, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SendDlgItemMessageW*(
+  hDlg: HWND, nIDDlgItem: int32, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetNextDlgGroupItem*(
+  hDlg: HWND, hCtl: HWND, bPrevious: WINBOOL
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetNextDlgTabItem*(
+  hDlg: HWND, hCtl: HWND, bPrevious: WINBOOL
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetDlgCtrlID*(hWnd: HWND): int32 {.winapi, stdcall, dynlib: "user32", importc.}
 proc GetDialogBaseUnits*(): LONG32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc DefDlgProcA*(hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc DefDlgProcW*(hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc CallMsgFilterA*(lpMsg: LPMSG, nCode: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CallMsgFilterW*(lpMsg: LPMSG, nCode: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc OpenClipboard*(hWndNewOwner: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc DefDlgProcA*(
+  hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DefDlgProcW*(
+  hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CallMsgFilterA*(
+  lpMsg: LPMSG, nCode: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CallMsgFilterW*(
+  lpMsg: LPMSG, nCode: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc OpenClipboard*(
+  hWndNewOwner: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc CloseClipboard*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
 proc GetClipboardSequenceNumber*(): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
 proc GetClipboardOwner*(): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetClipboardViewer*(hWndNewViewer: HWND): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+proc SetClipboardViewer*(
+  hWndNewViewer: HWND
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetClipboardViewer*(): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc ChangeClipboardChain*(hWndRemove: HWND, hWndNewNext: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetClipboardData*(uFormat: UINT, hMem: HANDLE): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetClipboardData*(uFormat: UINT): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterClipboardFormatA*(lpszFormat: LPCSTR): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterClipboardFormatW*(lpszFormat: LPCWSTR): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+proc ChangeClipboardChain*(
+  hWndRemove: HWND, hWndNewNext: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetClipboardData*(
+  uFormat: UINT, hMem: HANDLE
+): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetClipboardData*(
+  uFormat: UINT
+): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterClipboardFormatA*(
+  lpszFormat: LPCSTR
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterClipboardFormatW*(
+  lpszFormat: LPCWSTR
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc CountClipboardFormats*(): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumClipboardFormats*(format: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetClipboardFormatNameA*(format: UINT, lpszFormatName: LPSTR, cchMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetClipboardFormatNameW*(format: UINT, lpszFormatName: LPWSTR, cchMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+proc EnumClipboardFormats*(
+  format: UINT
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetClipboardFormatNameA*(
+  format: UINT, lpszFormatName: LPSTR, cchMaxCount: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetClipboardFormatNameW*(
+  format: UINT, lpszFormatName: LPWSTR, cchMaxCount: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc EmptyClipboard*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsClipboardFormatAvailable*(format: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPriorityClipboardFormat*(paFormatPriorityList: ptr UINT, cFormats: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+proc IsClipboardFormatAvailable*(
+  format: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPriorityClipboardFormat*(
+  paFormatPriorityList: ptr UINT, cFormats: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetOpenClipboardWindow*(): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc AddClipboardFormatListener*(hwnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc RemoveClipboardFormatListener*(hwnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetUpdatedClipboardFormats*(lpuiFormats: PUINT, cFormats: UINT, pcFormatsOut: PUINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CharToOemA*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CharToOemW*(lpszSrc: LPCWSTR, lpszDst: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc OemToCharA*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc OemToCharW*(lpszSrc: LPCSTR, lpszDst: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CharToOemBuffA*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CharToOemBuffW*(lpszSrc: LPCWSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc OemToCharBuffA*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc OemToCharBuffW*(lpszSrc: LPCSTR, lpszDst: LPWSTR, cchDstLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc AddClipboardFormatListener*(
+  hwnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RemoveClipboardFormatListener*(
+  hwnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetUpdatedClipboardFormats*(
+  lpuiFormats: PUINT, cFormats: UINT, pcFormatsOut: PUINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CharToOemA*(
+  lpszSrc: LPCSTR, lpszDst: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CharToOemW*(
+  lpszSrc: LPCWSTR, lpszDst: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc OemToCharA*(
+  lpszSrc: LPCSTR, lpszDst: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc OemToCharW*(
+  lpszSrc: LPCSTR, lpszDst: LPWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CharToOemBuffA*(
+  lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CharToOemBuffW*(
+  lpszSrc: LPCWSTR, lpszDst: LPSTR, cchDstLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc OemToCharBuffA*(
+  lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc OemToCharBuffW*(
+  lpszSrc: LPCSTR, lpszDst: LPWSTR, cchDstLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc CharUpperA*(lpsz: LPSTR): LPSTR {.winapi, stdcall, dynlib: "user32", importc.}
 proc CharUpperW*(lpsz: LPWSTR): LPWSTR {.winapi, stdcall, dynlib: "user32", importc.}
-proc CharUpperBuffA*(lpsz: LPSTR, cchLength: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc CharUpperBuffW*(lpsz: LPWSTR, cchLength: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+proc CharUpperBuffA*(
+  lpsz: LPSTR, cchLength: DWORD
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CharUpperBuffW*(
+  lpsz: LPWSTR, cchLength: DWORD
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc CharLowerA*(lpsz: LPSTR): LPSTR {.winapi, stdcall, dynlib: "user32", importc.}
 proc CharLowerW*(lpsz: LPWSTR): LPWSTR {.winapi, stdcall, dynlib: "user32", importc.}
-proc CharLowerBuffA*(lpsz: LPSTR, cchLength: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc CharLowerBuffW*(lpsz: LPWSTR, cchLength: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+proc CharLowerBuffA*(
+  lpsz: LPSTR, cchLength: DWORD
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CharLowerBuffW*(
+  lpsz: LPWSTR, cchLength: DWORD
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc CharNextA*(lpsz: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "user32", importc.}
 proc CharNextW*(lpsz: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "user32", importc.}
-proc CharPrevA*(lpszStart: LPCSTR, lpszCurrent: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "user32", importc.}
-proc CharPrevW*(lpszStart: LPCWSTR, lpszCurrent: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "user32", importc.}
-proc CharNextExA*(CodePage: WORD, lpCurrentChar: LPCSTR, dwFlags: DWORD): LPSTR {.winapi, stdcall, dynlib: "user32", importc.}
-proc CharPrevExA*(CodePage: WORD, lpStart: LPCSTR, lpCurrentChar: LPCSTR, dwFlags: DWORD): LPSTR {.winapi, stdcall, dynlib: "user32", importc.}
-proc AnsiToOem*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CharToOemA".}
-proc OemToAnsi*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "OemToCharA".}
-proc AnsiToOemBuff*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CharToOemBuffA".}
-proc OemToAnsiBuff*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "OemToCharBuffA".}
-proc AnsiUpper*(lpsz: LPSTR): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharUpperA".}
-proc AnsiUpperBuff*(lpsz: LPSTR, cchLength: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc: "CharUpperBuffA".}
-proc AnsiLower*(lpsz: LPSTR): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharLowerA".}
-proc AnsiLowerBuff*(lpsz: LPSTR, cchLength: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc: "CharLowerBuffA".}
-proc AnsiNext*(lpsz: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharNextA".}
-proc AnsiPrev*(lpszStart: LPCSTR, lpszCurrent: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharPrevA".}
+proc CharPrevA*(
+  lpszStart: LPCSTR, lpszCurrent: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CharPrevW*(
+  lpszStart: LPCWSTR, lpszCurrent: LPCWSTR
+): LPWSTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CharNextExA*(
+  CodePage: WORD, lpCurrentChar: LPCSTR, dwFlags: DWORD
+): LPSTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CharPrevExA*(
+  CodePage: WORD, lpStart: LPCSTR, lpCurrentChar: LPCSTR, dwFlags: DWORD
+): LPSTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc AnsiToOem*(
+  lpszSrc: LPCSTR, lpszDst: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CharToOemA".}
+
+proc OemToAnsi*(
+  lpszSrc: LPCSTR, lpszDst: LPSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "OemToCharA".}
+
+proc AnsiToOemBuff*(
+  lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CharToOemBuffA".}
+
+proc OemToAnsiBuff*(
+  lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "OemToCharBuffA".}
+
+proc AnsiUpper*(
+  lpsz: LPSTR
+): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharUpperA".}
+
+proc AnsiUpperBuff*(
+  lpsz: LPSTR, cchLength: DWORD
+): DWORD {.winapi, stdcall, dynlib: "user32", importc: "CharUpperBuffA".}
+
+proc AnsiLower*(
+  lpsz: LPSTR
+): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharLowerA".}
+
+proc AnsiLowerBuff*(
+  lpsz: LPSTR, cchLength: DWORD
+): DWORD {.winapi, stdcall, dynlib: "user32", importc: "CharLowerBuffA".}
+
+proc AnsiNext*(
+  lpsz: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharNextA".}
+
+proc AnsiPrev*(
+  lpszStart: LPCSTR, lpszCurrent: LPCSTR
+): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharPrevA".}
+
 proc IsCharAlphaA*(ch: CHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
 proc IsCharAlphaW*(ch: WCHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsCharAlphaNumericA*(ch: CHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsCharAlphaNumericW*(ch: WCHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc IsCharAlphaNumericA*(
+  ch: CHAR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc IsCharAlphaNumericW*(
+  ch: WCHAR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc IsCharUpperA*(ch: CHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
 proc IsCharUpperW*(ch: WCHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
 proc IsCharLowerA*(ch: CHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
@@ -4406,618 +5328,2506 @@
 proc GetFocus*(): HWND {.winapi, stdcall, dynlib: "user32", importc.}
 proc GetKBCodePage*(): UINT {.winapi, stdcall, dynlib: "user32", importc.}
 proc GetKeyState*(nVirtKey: int32): SHORT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetAsyncKeyState*(vKey: int32): SHORT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetKeyboardState*(lpKeyState: PBYTE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetKeyboardState*(lpKeyState: LPBYTE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetKeyNameTextA*(lParam: LONG, lpString: LPSTR, cchSize: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetKeyNameTextW*(lParam: LONG, lpString: LPWSTR, cchSize: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetKeyboardType*(nTypeFlag: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc ToAscii*(uVirtKey: UINT, uScanCode: UINT, lpKeyState: ptr BYTE, lpChar: LPWORD, uFlags: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc ToAsciiEx*(uVirtKey: UINT, uScanCode: UINT, lpKeyState: ptr BYTE, lpChar: LPWORD, uFlags: UINT, dwhkl: HKL): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc ToUnicode*(wVirtKey: UINT, wScanCode: UINT, lpKeyState: ptr BYTE, pwszBuff: LPWSTR, cchBuff: int32, wFlags: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+proc GetAsyncKeyState*(
+  vKey: int32
+): SHORT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetKeyboardState*(
+  lpKeyState: PBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetKeyboardState*(
+  lpKeyState: LPBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetKeyNameTextA*(
+  lParam: LONG, lpString: LPSTR, cchSize: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetKeyNameTextW*(
+  lParam: LONG, lpString: LPWSTR, cchSize: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetKeyboardType*(
+  nTypeFlag: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ToAscii*(
+  uVirtKey: UINT, uScanCode: UINT, lpKeyState: ptr BYTE, lpChar: LPWORD, uFlags: UINT
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ToAsciiEx*(
+  uVirtKey: UINT,
+  uScanCode: UINT,
+  lpKeyState: ptr BYTE,
+  lpChar: LPWORD,
+  uFlags: UINT,
+  dwhkl: HKL,
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ToUnicode*(
+  wVirtKey: UINT,
+  wScanCode: UINT,
+  lpKeyState: ptr BYTE,
+  pwszBuff: LPWSTR,
+  cchBuff: int32,
+  wFlags: UINT,
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc OemKeyScan*(wOemChar: WORD): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
 proc VkKeyScanA*(ch: CHAR): SHORT {.winapi, stdcall, dynlib: "user32", importc.}
 proc VkKeyScanW*(ch: WCHAR): SHORT {.winapi, stdcall, dynlib: "user32", importc.}
-proc VkKeyScanExA*(ch: CHAR, dwhkl: HKL): SHORT {.winapi, stdcall, dynlib: "user32", importc.}
-proc VkKeyScanExW*(ch: WCHAR, dwhkl: HKL): SHORT {.winapi, stdcall, dynlib: "user32", importc.}
-proc keybd_event*(bVk: BYTE, bScan: BYTE, dwFlags: DWORD, dwExtraInfo: ULONG_PTR): VOID {.winapi, stdcall, dynlib: "user32", importc.}
-proc mouse_event*(dwFlags: DWORD, dx: DWORD, dy: DWORD, dwData: DWORD, dwExtraInfo: ULONG_PTR): VOID {.winapi, stdcall, dynlib: "user32", importc.}
-proc SendInput*(cInputs: UINT, pInputs: LPINPUT, cbSize: int32): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetTouchInputInfo*(hTouchInput: HTOUCHINPUT, cInputs: UINT, pInputs: PTOUCHINPUT, cbSize: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CloseTouchInputHandle*(hTouchInput: HTOUCHINPUT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterTouchWindow*(hwnd: HWND, ulFlags: ULONG): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc UnregisterTouchWindow*(hwnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsTouchWindow*(hwnd: HWND, pulFlags: PULONG): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc InitializeTouchInjection*(maxCount: UINT32, dwMode: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc InjectTouchInput*(count: UINT32, contacts: ptr POINTER_TOUCH_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerType*(pointerId: UINT32, pointerType: ptr POINTER_INPUT_TYPE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerCursorId*(pointerId: UINT32, cursorId: ptr UINT32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerInfo*(pointerId: UINT32, pointerInfo: ptr POINTER_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerInfoHistory*(pointerId: UINT32, entriesCount: ptr UINT32, pointerInfo: ptr POINTER_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerFrameInfo*(pointerId: UINT32, pointerCount: ptr UINT32, pointerInfo: ptr POINTER_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerFrameInfoHistory*(pointerId: UINT32, entriesCount: ptr UINT32, pointerCount: ptr UINT32, pointerInfo: ptr POINTER_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerTouchInfo*(pointerId: UINT32, touchInfo: ptr POINTER_TOUCH_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerTouchInfoHistory*(pointerId: UINT32, entriesCount: ptr UINT32, touchInfo: ptr POINTER_TOUCH_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerFrameTouchInfo*(pointerId: UINT32, pointerCount: ptr UINT32, touchInfo: ptr POINTER_TOUCH_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerFrameTouchInfoHistory*(pointerId: UINT32, entriesCount: ptr UINT32, pointerCount: ptr UINT32, touchInfo: ptr POINTER_TOUCH_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerPenInfo*(pointerId: UINT32, penInfo: ptr POINTER_PEN_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerPenInfoHistory*(pointerId: UINT32, entriesCount: ptr UINT32, penInfo: ptr POINTER_PEN_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerFramePenInfo*(pointerId: UINT32, pointerCount: ptr UINT32, penInfo: ptr POINTER_PEN_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerFramePenInfoHistory*(pointerId: UINT32, entriesCount: ptr UINT32, pointerCount: ptr UINT32, penInfo: ptr POINTER_PEN_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SkipPointerFrameMessages*(pointerId: UINT32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterPointerInputTarget*(hwnd: HWND, pointerType: POINTER_INPUT_TYPE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc UnregisterPointerInputTarget*(hwnd: HWND, pointerType: POINTER_INPUT_TYPE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnableMouseInPointer*(fEnable: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc VkKeyScanExA*(
+  ch: CHAR, dwhkl: HKL
+): SHORT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc VkKeyScanExW*(
+  ch: WCHAR, dwhkl: HKL
+): SHORT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc keybd_event*(
+  bVk: BYTE, bScan: BYTE, dwFlags: DWORD, dwExtraInfo: ULONG_PTR
+): VOID {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc mouse_event*(
+  dwFlags: DWORD, dx: DWORD, dy: DWORD, dwData: DWORD, dwExtraInfo: ULONG_PTR
+): VOID {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SendInput*(
+  cInputs: UINT, pInputs: LPINPUT, cbSize: int32
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetTouchInputInfo*(
+  hTouchInput: HTOUCHINPUT, cInputs: UINT, pInputs: PTOUCHINPUT, cbSize: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CloseTouchInputHandle*(
+  hTouchInput: HTOUCHINPUT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterTouchWindow*(
+  hwnd: HWND, ulFlags: ULONG
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UnregisterTouchWindow*(
+  hwnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc IsTouchWindow*(
+  hwnd: HWND, pulFlags: PULONG
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc InitializeTouchInjection*(
+  maxCount: UINT32, dwMode: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc InjectTouchInput*(
+  count: UINT32, contacts: ptr POINTER_TOUCH_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerType*(
+  pointerId: UINT32, pointerType: ptr POINTER_INPUT_TYPE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerCursorId*(
+  pointerId: UINT32, cursorId: ptr UINT32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerInfo*(
+  pointerId: UINT32, pointerInfo: ptr POINTER_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerInfoHistory*(
+  pointerId: UINT32, entriesCount: ptr UINT32, pointerInfo: ptr POINTER_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerFrameInfo*(
+  pointerId: UINT32, pointerCount: ptr UINT32, pointerInfo: ptr POINTER_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerFrameInfoHistory*(
+  pointerId: UINT32,
+  entriesCount: ptr UINT32,
+  pointerCount: ptr UINT32,
+  pointerInfo: ptr POINTER_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerTouchInfo*(
+  pointerId: UINT32, touchInfo: ptr POINTER_TOUCH_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerTouchInfoHistory*(
+  pointerId: UINT32, entriesCount: ptr UINT32, touchInfo: ptr POINTER_TOUCH_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerFrameTouchInfo*(
+  pointerId: UINT32, pointerCount: ptr UINT32, touchInfo: ptr POINTER_TOUCH_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerFrameTouchInfoHistory*(
+  pointerId: UINT32,
+  entriesCount: ptr UINT32,
+  pointerCount: ptr UINT32,
+  touchInfo: ptr POINTER_TOUCH_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerPenInfo*(
+  pointerId: UINT32, penInfo: ptr POINTER_PEN_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerPenInfoHistory*(
+  pointerId: UINT32, entriesCount: ptr UINT32, penInfo: ptr POINTER_PEN_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerFramePenInfo*(
+  pointerId: UINT32, pointerCount: ptr UINT32, penInfo: ptr POINTER_PEN_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerFramePenInfoHistory*(
+  pointerId: UINT32,
+  entriesCount: ptr UINT32,
+  pointerCount: ptr UINT32,
+  penInfo: ptr POINTER_PEN_INFO,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SkipPointerFrameMessages*(
+  pointerId: UINT32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterPointerInputTarget*(
+  hwnd: HWND, pointerType: POINTER_INPUT_TYPE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UnregisterPointerInputTarget*(
+  hwnd: HWND, pointerType: POINTER_INPUT_TYPE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnableMouseInPointer*(
+  fEnable: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc IsMouseInPointerEnabled*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterTouchHitTestingWindow*(hwnd: HWND, value: ULONG): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EvaluateProximityToRect*(controlBoundingBox: ptr RECT, pHitTestingInput: ptr TOUCH_HIT_TESTING_INPUT, pProximityEval: ptr TOUCH_HIT_TESTING_PROXIMITY_EVALUATION): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EvaluateProximityToPolygon*(numVertices: UINT32, controlPolygon: ptr POINT, pHitTestingInput: ptr TOUCH_HIT_TESTING_INPUT, pProximityEval: ptr TOUCH_HIT_TESTING_PROXIMITY_EVALUATION): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc PackTouchHitTestingProximityEvaluation*(pHitTestingInput: ptr TOUCH_HIT_TESTING_INPUT, pProximityEval: ptr TOUCH_HIT_TESTING_PROXIMITY_EVALUATION): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowFeedbackSetting*(hwnd: HWND, feedback: FEEDBACK_TYPE, dwFlags: DWORD, pSize: ptr UINT32, config: pointer): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowFeedbackSetting*(hwnd: HWND, feedback: FEEDBACK_TYPE, dwFlags: DWORD, size: UINT32, configuration: pointer): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetLastInputInfo*(plii: PLASTINPUTINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc MapVirtualKeyA*(uCode: UINT, uMapType: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc MapVirtualKeyW*(uCode: UINT, uMapType: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc MapVirtualKeyExA*(uCode: UINT, uMapType: UINT, dwhkl: HKL): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc MapVirtualKeyExW*(uCode: UINT, uMapType: UINT, dwhkl: HKL): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+proc RegisterTouchHitTestingWindow*(
+  hwnd: HWND, value: ULONG
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EvaluateProximityToRect*(
+  controlBoundingBox: ptr RECT,
+  pHitTestingInput: ptr TOUCH_HIT_TESTING_INPUT,
+  pProximityEval: ptr TOUCH_HIT_TESTING_PROXIMITY_EVALUATION,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EvaluateProximityToPolygon*(
+  numVertices: UINT32,
+  controlPolygon: ptr POINT,
+  pHitTestingInput: ptr TOUCH_HIT_TESTING_INPUT,
+  pProximityEval: ptr TOUCH_HIT_TESTING_PROXIMITY_EVALUATION,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PackTouchHitTestingProximityEvaluation*(
+  pHitTestingInput: ptr TOUCH_HIT_TESTING_INPUT,
+  pProximityEval: ptr TOUCH_HIT_TESTING_PROXIMITY_EVALUATION,
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowFeedbackSetting*(
+  hwnd: HWND,
+  feedback: FEEDBACK_TYPE,
+  dwFlags: DWORD,
+  pSize: ptr UINT32,
+  config: pointer,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowFeedbackSetting*(
+  hwnd: HWND,
+  feedback: FEEDBACK_TYPE,
+  dwFlags: DWORD,
+  size: UINT32,
+  configuration: pointer,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetLastInputInfo*(
+  plii: PLASTINPUTINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MapVirtualKeyA*(
+  uCode: UINT, uMapType: UINT
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MapVirtualKeyW*(
+  uCode: UINT, uMapType: UINT
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MapVirtualKeyExA*(
+  uCode: UINT, uMapType: UINT, dwhkl: HKL
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MapVirtualKeyExW*(
+  uCode: UINT, uMapType: UINT, dwhkl: HKL
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetInputState*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
 proc GetQueueStatus*(flags: UINT): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
 proc GetCapture*(): HWND {.winapi, stdcall, dynlib: "user32", importc.}
 proc SetCapture*(hWnd: HWND): HWND {.winapi, stdcall, dynlib: "user32", importc.}
 proc ReleaseCapture*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc MsgWaitForMultipleObjects*(nCount: DWORD, pHandles: ptr HANDLE, fWaitAll: WINBOOL, dwMilliseconds: DWORD, dwWakeMask: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc MsgWaitForMultipleObjectsEx*(nCount: DWORD, pHandles: ptr HANDLE, dwMilliseconds: DWORD, dwWakeMask: DWORD, dwFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetTimer*(hWnd: HWND, nIDEvent: UINT_PTR, uElapse: UINT, lpTimerFunc: TIMERPROC): UINT_PTR {.winapi, stdcall, dynlib: "user32", importc.}
-proc KillTimer*(hWnd: HWND, uIDEvent: UINT_PTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsWindowUnicode*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnableWindow*(hWnd: HWND, bEnable: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsWindowEnabled*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadAcceleratorsA*(hInstance: HINSTANCE, lpTableName: LPCSTR): HACCEL {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadAcceleratorsW*(hInstance: HINSTANCE, lpTableName: LPCWSTR): HACCEL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateAcceleratorTableA*(paccel: LPACCEL, cAccel: int32): HACCEL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateAcceleratorTableW*(paccel: LPACCEL, cAccel: int32): HACCEL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DestroyAcceleratorTable*(hAccel: HACCEL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CopyAcceleratorTableA*(hAccelSrc: HACCEL, lpAccelDst: LPACCEL, cAccelEntries: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc CopyAcceleratorTableW*(hAccelSrc: HACCEL, lpAccelDst: LPACCEL, cAccelEntries: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc TranslateAcceleratorA*(hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc TranslateAcceleratorW*(hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetCoalescableTimer*(hWnd: HWND, nIDEvent: UINT_PTR, uElapse: UINT, lpTimerFunc: TIMERPROC, uToleranceDelay: ULONG): UINT_PTR {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetSystemMetrics*(nIndex: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadMenuA*(hInstance: HINSTANCE, lpMenuName: LPCSTR): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadMenuW*(hInstance: HINSTANCE, lpMenuName: LPCWSTR): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadMenuIndirectA*(lpMenuTemplate: ptr MENUTEMPLATEA): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadMenuIndirectW*(lpMenuTemplate: ptr MENUTEMPLATEW): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
+proc MsgWaitForMultipleObjects*(
+  nCount: DWORD,
+  pHandles: ptr HANDLE,
+  fWaitAll: WINBOOL,
+  dwMilliseconds: DWORD,
+  dwWakeMask: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MsgWaitForMultipleObjectsEx*(
+  nCount: DWORD,
+  pHandles: ptr HANDLE,
+  dwMilliseconds: DWORD,
+  dwWakeMask: DWORD,
+  dwFlags: DWORD,
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetTimer*(
+  hWnd: HWND, nIDEvent: UINT_PTR, uElapse: UINT, lpTimerFunc: TIMERPROC
+): UINT_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc KillTimer*(
+  hWnd: HWND, uIDEvent: UINT_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc IsWindowUnicode*(
+  hWnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnableWindow*(
+  hWnd: HWND, bEnable: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc IsWindowEnabled*(
+  hWnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadAcceleratorsA*(
+  hInstance: HINSTANCE, lpTableName: LPCSTR
+): HACCEL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadAcceleratorsW*(
+  hInstance: HINSTANCE, lpTableName: LPCWSTR
+): HACCEL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateAcceleratorTableA*(
+  paccel: LPACCEL, cAccel: int32
+): HACCEL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateAcceleratorTableW*(
+  paccel: LPACCEL, cAccel: int32
+): HACCEL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DestroyAcceleratorTable*(
+  hAccel: HACCEL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CopyAcceleratorTableA*(
+  hAccelSrc: HACCEL, lpAccelDst: LPACCEL, cAccelEntries: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CopyAcceleratorTableW*(
+  hAccelSrc: HACCEL, lpAccelDst: LPACCEL, cAccelEntries: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc TranslateAcceleratorA*(
+  hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc TranslateAcceleratorW*(
+  hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetCoalescableTimer*(
+  hWnd: HWND,
+  nIDEvent: UINT_PTR,
+  uElapse: UINT,
+  lpTimerFunc: TIMERPROC,
+  uToleranceDelay: ULONG,
+): UINT_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetSystemMetrics*(
+  nIndex: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadMenuA*(
+  hInstance: HINSTANCE, lpMenuName: LPCSTR
+): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadMenuW*(
+  hInstance: HINSTANCE, lpMenuName: LPCWSTR
+): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadMenuIndirectA*(
+  lpMenuTemplate: ptr MENUTEMPLATEA
+): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadMenuIndirectW*(
+  lpMenuTemplate: ptr MENUTEMPLATEW
+): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetMenu*(hWnd: HWND): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetMenu*(hWnd: HWND, hMenu: HMENU): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ChangeMenuA*(hMenu: HMENU, cmd: UINT, lpszNewItem: LPCSTR, cmdInsert: UINT, flags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ChangeMenuW*(hMenu: HMENU, cmd: UINT, lpszNewItem: LPCWSTR, cmdInsert: UINT, flags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc HiliteMenuItem*(hWnd: HWND, hMenu: HMENU, uIDHiliteItem: UINT, uHilite: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMenuStringA*(hMenu: HMENU, uIDItem: UINT, lpString: LPSTR, cchMax: int32, flags: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMenuStringW*(hMenu: HMENU, uIDItem: UINT, lpString: LPWSTR, cchMax: int32, flags: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMenuState*(hMenu: HMENU, uId: UINT, uFlags: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+proc SetMenu*(
+  hWnd: HWND, hMenu: HMENU
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ChangeMenuA*(
+  hMenu: HMENU, cmd: UINT, lpszNewItem: LPCSTR, cmdInsert: UINT, flags: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ChangeMenuW*(
+  hMenu: HMENU, cmd: UINT, lpszNewItem: LPCWSTR, cmdInsert: UINT, flags: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc HiliteMenuItem*(
+  hWnd: HWND, hMenu: HMENU, uIDHiliteItem: UINT, uHilite: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMenuStringA*(
+  hMenu: HMENU, uIDItem: UINT, lpString: LPSTR, cchMax: int32, flags: UINT
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMenuStringW*(
+  hMenu: HMENU, uIDItem: UINT, lpString: LPWSTR, cchMax: int32, flags: UINT
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMenuState*(
+  hMenu: HMENU, uId: UINT, uFlags: UINT
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc DrawMenuBar*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetSystemMenu*(hWnd: HWND, bRevert: WINBOOL): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
+proc GetSystemMenu*(
+  hWnd: HWND, bRevert: WINBOOL
+): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc CreateMenu*(): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
 proc CreatePopupMenu*(): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
 proc DestroyMenu*(hMenu: HMENU): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CheckMenuItem*(hMenu: HMENU, uIDCheckItem: UINT, uCheck: UINT): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnableMenuItem*(hMenu: HMENU, uIDEnableItem: UINT, uEnable: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetSubMenu*(hMenu: HMENU, nPos: int32): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMenuItemID*(hMenu: HMENU, nPos: int32): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMenuItemCount*(hMenu: HMENU): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc InsertMenuA*(hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc InsertMenuW*(hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc AppendMenuA*(hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc AppendMenuW*(hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ModifyMenuA*(hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ModifyMenuW*(hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc RemoveMenu*(hMenu: HMENU, uPosition: UINT, uFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DeleteMenu*(hMenu: HMENU, uPosition: UINT, uFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetMenuItemBitmaps*(hMenu: HMENU, uPosition: UINT, uFlags: UINT, hBitmapUnchecked: HBITMAP, hBitmapChecked: HBITMAP): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc CheckMenuItem*(
+  hMenu: HMENU, uIDCheckItem: UINT, uCheck: UINT
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnableMenuItem*(
+  hMenu: HMENU, uIDEnableItem: UINT, uEnable: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetSubMenu*(
+  hMenu: HMENU, nPos: int32
+): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMenuItemID*(
+  hMenu: HMENU, nPos: int32
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMenuItemCount*(
+  hMenu: HMENU
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc InsertMenuA*(
+  hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc InsertMenuW*(
+  hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc AppendMenuA*(
+  hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc AppendMenuW*(
+  hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ModifyMenuA*(
+  hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ModifyMenuW*(
+  hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RemoveMenu*(
+  hMenu: HMENU, uPosition: UINT, uFlags: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DeleteMenu*(
+  hMenu: HMENU, uPosition: UINT, uFlags: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetMenuItemBitmaps*(
+  hMenu: HMENU,
+  uPosition: UINT,
+  uFlags: UINT,
+  hBitmapUnchecked: HBITMAP,
+  hBitmapChecked: HBITMAP,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetMenuCheckMarkDimensions*(): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc TrackPopupMenu*(hMenu: HMENU, uFlags: UINT, x: int32, y: int32, nReserved: int32, hWnd: HWND, prcRect: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc TrackPopupMenuEx*(P1: HMENU, P2: UINT, P3: int32, P4: int32, P5: HWND, P6: LPTPMPARAMS): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMenuInfo*(P1: HMENU, P2: LPMENUINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetMenuInfo*(P1: HMENU, P2: LPCMENUINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc TrackPopupMenu*(
+  hMenu: HMENU,
+  uFlags: UINT,
+  x: int32,
+  y: int32,
+  nReserved: int32,
+  hWnd: HWND,
+  prcRect: ptr RECT,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc TrackPopupMenuEx*(
+  P1: HMENU, P2: UINT, P3: int32, P4: int32, P5: HWND, P6: LPTPMPARAMS
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMenuInfo*(
+  P1: HMENU, P2: LPMENUINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetMenuInfo*(
+  P1: HMENU, P2: LPCMENUINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc EndMenu*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CalculatePopupWindowPosition*(anchorPoint: ptr POINT, windowSize: ptr SIZE, flags: UINT, excludeRect: ptr RECT, popupWindowPosition: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc InsertMenuItemA*(hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmi: LPCMENUITEMINFOA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc InsertMenuItemW*(hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmi: LPCMENUITEMINFOW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMenuItemInfoA*(hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmii: LPMENUITEMINFOA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMenuItemInfoW*(hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmii: LPMENUITEMINFOW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetMenuItemInfoA*(hmenu: HMENU, item: UINT, fByPositon: WINBOOL, lpmii: LPCMENUITEMINFOA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetMenuItemInfoW*(hmenu: HMENU, item: UINT, fByPositon: WINBOOL, lpmii: LPCMENUITEMINFOW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMenuDefaultItem*(hMenu: HMENU, fByPos: UINT, gmdiFlags: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetMenuDefaultItem*(hMenu: HMENU, uItem: UINT, fByPos: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMenuItemRect*(hWnd: HWND, hMenu: HMENU, uItem: UINT, lprcItem: LPRECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc MenuItemFromPoint*(hWnd: HWND, hMenu: HMENU, ptScreen: POINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc DragObject*(hwndParent: HWND, hwndFrom: HWND, fmt: UINT, data: ULONG_PTR, hcur: HCURSOR): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc DragDetect*(hwnd: HWND, pt: POINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DrawIcon*(hDC: HDC, X: int32, Y: int32, hIcon: HICON): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DrawTextA*(hdc: HDC, lpchText: LPCSTR, cchText: int32, lprc: LPRECT, format: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc DrawTextW*(hdc: HDC, lpchText: LPCWSTR, cchText: int32, lprc: LPRECT, format: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc DrawTextExA*(hdc: HDC, lpchText: LPSTR, cchText: int32, lprc: LPRECT, format: UINT, lpdtp: LPDRAWTEXTPARAMS): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc DrawTextExW*(hdc: HDC, lpchText: LPWSTR, cchText: int32, lprc: LPRECT, format: UINT, lpdtp: LPDRAWTEXTPARAMS): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GrayStringA*(hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC, lpData: LPARAM, nCount: int32, X: int32, Y: int32, nWidth: int32, nHeight: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GrayStringW*(hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC, lpData: LPARAM, nCount: int32, X: int32, Y: int32, nWidth: int32, nHeight: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DrawStateA*(hdc: HDC, hbrFore: HBRUSH, qfnCallBack: DRAWSTATEPROC, lData: LPARAM, wData: WPARAM, x: int32, y: int32, cx: int32, cy: int32, uFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DrawStateW*(hdc: HDC, hbrFore: HBRUSH, qfnCallBack: DRAWSTATEPROC, lData: LPARAM, wData: WPARAM, x: int32, y: int32, cx: int32, cy: int32, uFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc TabbedTextOutA*(hdc: HDC, x: int32, y: int32, lpString: LPCSTR, chCount: int32, nTabPositions: int32, lpnTabStopPositions: ptr INT, nTabOrigin: int32): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc TabbedTextOutW*(hdc: HDC, x: int32, y: int32, lpString: LPCWSTR, chCount: int32, nTabPositions: int32, lpnTabStopPositions: ptr INT, nTabOrigin: int32): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetTabbedTextExtentA*(hdc: HDC, lpString: LPCSTR, chCount: int32, nTabPositions: int32, lpnTabStopPositions: ptr INT): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetTabbedTextExtentW*(hdc: HDC, lpString: LPCWSTR, chCount: int32, nTabPositions: int32, lpnTabStopPositions: ptr INT): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+proc CalculatePopupWindowPosition*(
+  anchorPoint: ptr POINT,
+  windowSize: ptr SIZE,
+  flags: UINT,
+  excludeRect: ptr RECT,
+  popupWindowPosition: ptr RECT,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc InsertMenuItemA*(
+  hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmi: LPCMENUITEMINFOA
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc InsertMenuItemW*(
+  hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmi: LPCMENUITEMINFOW
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMenuItemInfoA*(
+  hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmii: LPMENUITEMINFOA
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMenuItemInfoW*(
+  hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmii: LPMENUITEMINFOW
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetMenuItemInfoA*(
+  hmenu: HMENU, item: UINT, fByPositon: WINBOOL, lpmii: LPCMENUITEMINFOA
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetMenuItemInfoW*(
+  hmenu: HMENU, item: UINT, fByPositon: WINBOOL, lpmii: LPCMENUITEMINFOW
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMenuDefaultItem*(
+  hMenu: HMENU, fByPos: UINT, gmdiFlags: UINT
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetMenuDefaultItem*(
+  hMenu: HMENU, uItem: UINT, fByPos: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMenuItemRect*(
+  hWnd: HWND, hMenu: HMENU, uItem: UINT, lprcItem: LPRECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MenuItemFromPoint*(
+  hWnd: HWND, hMenu: HMENU, ptScreen: POINT
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DragObject*(
+  hwndParent: HWND, hwndFrom: HWND, fmt: UINT, data: ULONG_PTR, hcur: HCURSOR
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DragDetect*(
+  hwnd: HWND, pt: POINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DrawIcon*(
+  hDC: HDC, X: int32, Y: int32, hIcon: HICON
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DrawTextA*(
+  hdc: HDC, lpchText: LPCSTR, cchText: int32, lprc: LPRECT, format: UINT
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DrawTextW*(
+  hdc: HDC, lpchText: LPCWSTR, cchText: int32, lprc: LPRECT, format: UINT
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DrawTextExA*(
+  hdc: HDC,
+  lpchText: LPSTR,
+  cchText: int32,
+  lprc: LPRECT,
+  format: UINT,
+  lpdtp: LPDRAWTEXTPARAMS,
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DrawTextExW*(
+  hdc: HDC,
+  lpchText: LPWSTR,
+  cchText: int32,
+  lprc: LPRECT,
+  format: UINT,
+  lpdtp: LPDRAWTEXTPARAMS,
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GrayStringA*(
+  hDC: HDC,
+  hBrush: HBRUSH,
+  lpOutputFunc: GRAYSTRINGPROC,
+  lpData: LPARAM,
+  nCount: int32,
+  X: int32,
+  Y: int32,
+  nWidth: int32,
+  nHeight: int32,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GrayStringW*(
+  hDC: HDC,
+  hBrush: HBRUSH,
+  lpOutputFunc: GRAYSTRINGPROC,
+  lpData: LPARAM,
+  nCount: int32,
+  X: int32,
+  Y: int32,
+  nWidth: int32,
+  nHeight: int32,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DrawStateA*(
+  hdc: HDC,
+  hbrFore: HBRUSH,
+  qfnCallBack: DRAWSTATEPROC,
+  lData: LPARAM,
+  wData: WPARAM,
+  x: int32,
+  y: int32,
+  cx: int32,
+  cy: int32,
+  uFlags: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DrawStateW*(
+  hdc: HDC,
+  hbrFore: HBRUSH,
+  qfnCallBack: DRAWSTATEPROC,
+  lData: LPARAM,
+  wData: WPARAM,
+  x: int32,
+  y: int32,
+  cx: int32,
+  cy: int32,
+  uFlags: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc TabbedTextOutA*(
+  hdc: HDC,
+  x: int32,
+  y: int32,
+  lpString: LPCSTR,
+  chCount: int32,
+  nTabPositions: int32,
+  lpnTabStopPositions: ptr INT,
+  nTabOrigin: int32,
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc TabbedTextOutW*(
+  hdc: HDC,
+  x: int32,
+  y: int32,
+  lpString: LPCWSTR,
+  chCount: int32,
+  nTabPositions: int32,
+  lpnTabStopPositions: ptr INT,
+  nTabOrigin: int32,
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetTabbedTextExtentA*(
+  hdc: HDC,
+  lpString: LPCSTR,
+  chCount: int32,
+  nTabPositions: int32,
+  lpnTabStopPositions: ptr INT,
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetTabbedTextExtentW*(
+  hdc: HDC,
+  lpString: LPCWSTR,
+  chCount: int32,
+  nTabPositions: int32,
+  lpnTabStopPositions: ptr INT,
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc UpdateWindow*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
 proc SetActiveWindow*(hWnd: HWND): HWND {.winapi, stdcall, dynlib: "user32", importc.}
 proc GetForegroundWindow*(): HWND {.winapi, stdcall, dynlib: "user32", importc.}
 proc PaintDesktop*(hdc: HDC): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SwitchToThisWindow*(hwnd: HWND, fUnknown: WINBOOL): VOID {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetForegroundWindow*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc AllowSetForegroundWindow*(dwProcessId: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc LockSetForegroundWindow*(uLockCode: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc SwitchToThisWindow*(
+  hwnd: HWND, fUnknown: WINBOOL
+): VOID {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetForegroundWindow*(
+  hWnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc AllowSetForegroundWindow*(
+  dwProcessId: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LockSetForegroundWindow*(
+  uLockCode: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc WindowFromDC*(hDC: HDC): HWND {.winapi, stdcall, dynlib: "user32", importc.}
 proc GetDC*(hWnd: HWND): HDC {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetDCEx*(hWnd: HWND, hrgnClip: HRGN, flags: DWORD): HDC {.winapi, stdcall, dynlib: "user32", importc.}
+proc GetDCEx*(
+  hWnd: HWND, hrgnClip: HRGN, flags: DWORD
+): HDC {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetWindowDC*(hWnd: HWND): HDC {.winapi, stdcall, dynlib: "user32", importc.}
-proc ReleaseDC*(hWnd: HWND, hDC: HDC): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc BeginPaint*(hWnd: HWND, lpPaint: LPPAINTSTRUCT): HDC {.winapi, stdcall, dynlib: "user32", importc.}
-proc EndPaint*(hWnd: HWND, lpPaint: ptr PAINTSTRUCT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetUpdateRect*(hWnd: HWND, lpRect: LPRECT, bErase: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetUpdateRgn*(hWnd: HWND, hRgn: HRGN, bErase: WINBOOL): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowRgn*(hWnd: HWND, hRgn: HRGN, bRedraw: WINBOOL): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowRgn*(hWnd: HWND, hRgn: HRGN): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowRgnBox*(hWnd: HWND, lprc: LPRECT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc ExcludeUpdateRgn*(hDC: HDC, hWnd: HWND): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc InvalidateRect*(hWnd: HWND, lpRect: ptr RECT, bErase: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ValidateRect*(hWnd: HWND, lpRect: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc InvalidateRgn*(hWnd: HWND, hRgn: HRGN, bErase: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ValidateRgn*(hWnd: HWND, hRgn: HRGN): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc RedrawWindow*(hWnd: HWND, lprcUpdate: ptr RECT, hrgnUpdate: HRGN, flags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc LockWindowUpdate*(hWndLock: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ScrollWindow*(hWnd: HWND, XAmount: int32, YAmount: int32, lpRect: ptr RECT, lpClipRect: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ScrollDC*(hDC: HDC, dx: int32, dy: int32, lprcScroll: ptr RECT, lprcClip: ptr RECT, hrgnUpdate: HRGN, lprcUpdate: LPRECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ScrollWindowEx*(hWnd: HWND, dx: int32, dy: int32, prcScroll: ptr RECT, prcClip: ptr RECT, hrgnUpdate: HRGN, prcUpdate: LPRECT, flags: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetScrollPos*(hWnd: HWND, nBar: int32, nPos: int32, bRedraw: WINBOOL): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetScrollPos*(hWnd: HWND, nBar: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetScrollRange*(hWnd: HWND, nBar: int32, nMinPos: int32, nMaxPos: int32, bRedraw: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetScrollRange*(hWnd: HWND, nBar: int32, lpMinPos: LPINT, lpMaxPos: LPINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ShowScrollBar*(hWnd: HWND, wBar: int32, bShow: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnableScrollBar*(hWnd: HWND, wSBflags: UINT, wArrows: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetPropA*(hWnd: HWND, lpString: LPCSTR, hData: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetPropW*(hWnd: HWND, lpString: LPCWSTR, hData: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPropA*(hWnd: HWND, lpString: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPropW*(hWnd: HWND, lpString: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
-proc RemovePropA*(hWnd: HWND, lpString: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
-proc RemovePropW*(hWnd: HWND, lpString: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumPropsExA*(hWnd: HWND, lpEnumFunc: PROPENUMPROCEXA, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumPropsExW*(hWnd: HWND, lpEnumFunc: PROPENUMPROCEXW, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumPropsA*(hWnd: HWND, lpEnumFunc: PROPENUMPROCA): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumPropsW*(hWnd: HWND, lpEnumFunc: PROPENUMPROCW): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowTextA*(hWnd: HWND, lpString: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowTextW*(hWnd: HWND, lpString: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowTextA*(hWnd: HWND, lpString: LPSTR, nMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowTextW*(hWnd: HWND, lpString: LPWSTR, nMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowTextLengthA*(hWnd: HWND): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowTextLengthW*(hWnd: HWND): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetClientRect*(hWnd: HWND, lpRect: LPRECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowRect*(hWnd: HWND, lpRect: LPRECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc AdjustWindowRect*(lpRect: LPRECT, dwStyle: DWORD, bMenu: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc AdjustWindowRectEx*(lpRect: LPRECT, dwStyle: DWORD, bMenu: WINBOOL, dwExStyle: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowContextHelpId*(P1: HWND, P2: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowContextHelpId*(P1: HWND): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetMenuContextHelpId*(P1: HMENU, P2: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMenuContextHelpId*(P1: HMENU): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc MessageBoxA*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc MessageBoxW*(hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc MessageBoxExA*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT, wLanguageId: WORD): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc MessageBoxExW*(hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT, wLanguageId: WORD): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc MessageBoxIndirectA*(lpmbp: ptr MSGBOXPARAMSA): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc MessageBoxIndirectW*(lpmbp: ptr MSGBOXPARAMSW): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+proc ReleaseDC*(
+  hWnd: HWND, hDC: HDC
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc BeginPaint*(
+  hWnd: HWND, lpPaint: LPPAINTSTRUCT
+): HDC {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EndPaint*(
+  hWnd: HWND, lpPaint: ptr PAINTSTRUCT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetUpdateRect*(
+  hWnd: HWND, lpRect: LPRECT, bErase: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetUpdateRgn*(
+  hWnd: HWND, hRgn: HRGN, bErase: WINBOOL
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowRgn*(
+  hWnd: HWND, hRgn: HRGN, bRedraw: WINBOOL
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowRgn*(
+  hWnd: HWND, hRgn: HRGN
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowRgnBox*(
+  hWnd: HWND, lprc: LPRECT
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ExcludeUpdateRgn*(
+  hDC: HDC, hWnd: HWND
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc InvalidateRect*(
+  hWnd: HWND, lpRect: ptr RECT, bErase: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ValidateRect*(
+  hWnd: HWND, lpRect: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc InvalidateRgn*(
+  hWnd: HWND, hRgn: HRGN, bErase: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ValidateRgn*(
+  hWnd: HWND, hRgn: HRGN
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RedrawWindow*(
+  hWnd: HWND, lprcUpdate: ptr RECT, hrgnUpdate: HRGN, flags: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LockWindowUpdate*(
+  hWndLock: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ScrollWindow*(
+  hWnd: HWND, XAmount: int32, YAmount: int32, lpRect: ptr RECT, lpClipRect: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ScrollDC*(
+  hDC: HDC,
+  dx: int32,
+  dy: int32,
+  lprcScroll: ptr RECT,
+  lprcClip: ptr RECT,
+  hrgnUpdate: HRGN,
+  lprcUpdate: LPRECT,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ScrollWindowEx*(
+  hWnd: HWND,
+  dx: int32,
+  dy: int32,
+  prcScroll: ptr RECT,
+  prcClip: ptr RECT,
+  hrgnUpdate: HRGN,
+  prcUpdate: LPRECT,
+  flags: UINT,
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetScrollPos*(
+  hWnd: HWND, nBar: int32, nPos: int32, bRedraw: WINBOOL
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetScrollPos*(
+  hWnd: HWND, nBar: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetScrollRange*(
+  hWnd: HWND, nBar: int32, nMinPos: int32, nMaxPos: int32, bRedraw: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetScrollRange*(
+  hWnd: HWND, nBar: int32, lpMinPos: LPINT, lpMaxPos: LPINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ShowScrollBar*(
+  hWnd: HWND, wBar: int32, bShow: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnableScrollBar*(
+  hWnd: HWND, wSBflags: UINT, wArrows: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetPropA*(
+  hWnd: HWND, lpString: LPCSTR, hData: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetPropW*(
+  hWnd: HWND, lpString: LPCWSTR, hData: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPropA*(
+  hWnd: HWND, lpString: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPropW*(
+  hWnd: HWND, lpString: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RemovePropA*(
+  hWnd: HWND, lpString: LPCSTR
+): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RemovePropW*(
+  hWnd: HWND, lpString: LPCWSTR
+): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumPropsExA*(
+  hWnd: HWND, lpEnumFunc: PROPENUMPROCEXA, lParam: LPARAM
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumPropsExW*(
+  hWnd: HWND, lpEnumFunc: PROPENUMPROCEXW, lParam: LPARAM
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumPropsA*(
+  hWnd: HWND, lpEnumFunc: PROPENUMPROCA
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumPropsW*(
+  hWnd: HWND, lpEnumFunc: PROPENUMPROCW
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowTextA*(
+  hWnd: HWND, lpString: LPCSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowTextW*(
+  hWnd: HWND, lpString: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowTextA*(
+  hWnd: HWND, lpString: LPSTR, nMaxCount: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowTextW*(
+  hWnd: HWND, lpString: LPWSTR, nMaxCount: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowTextLengthA*(
+  hWnd: HWND
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowTextLengthW*(
+  hWnd: HWND
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetClientRect*(
+  hWnd: HWND, lpRect: LPRECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowRect*(
+  hWnd: HWND, lpRect: LPRECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc AdjustWindowRect*(
+  lpRect: LPRECT, dwStyle: DWORD, bMenu: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc AdjustWindowRectEx*(
+  lpRect: LPRECT, dwStyle: DWORD, bMenu: WINBOOL, dwExStyle: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowContextHelpId*(
+  P1: HWND, P2: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowContextHelpId*(
+  P1: HWND
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetMenuContextHelpId*(
+  P1: HMENU, P2: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMenuContextHelpId*(
+  P1: HMENU
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MessageBoxA*(
+  hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MessageBoxW*(
+  hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MessageBoxExA*(
+  hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT, wLanguageId: WORD
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MessageBoxExW*(
+  hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT, wLanguageId: WORD
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MessageBoxIndirectA*(
+  lpmbp: ptr MSGBOXPARAMSA
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MessageBoxIndirectW*(
+  lpmbp: ptr MSGBOXPARAMSW
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc MessageBeep*(uType: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
 proc ShowCursor*(bShow: WINBOOL): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetCursorPos*(X: int32, Y: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetCursor*(hCursor: HCURSOR): HCURSOR {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetCursorPos*(lpPoint: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ClipCursor*(lpRect: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetClipCursor*(lpRect: LPRECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc SetCursorPos*(
+  X: int32, Y: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetCursor*(
+  hCursor: HCURSOR
+): HCURSOR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetCursorPos*(
+  lpPoint: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ClipCursor*(
+  lpRect: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetClipCursor*(
+  lpRect: LPRECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetCursor*(): HCURSOR {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateCaret*(hWnd: HWND, hBitmap: HBITMAP, nWidth: int32, nHeight: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc CreateCaret*(
+  hWnd: HWND, hBitmap: HBITMAP, nWidth: int32, nHeight: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetCaretBlinkTime*(): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetCaretBlinkTime*(uMSeconds: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc SetCaretBlinkTime*(
+  uMSeconds: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc DestroyCaret*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
 proc HideCaret*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
 proc ShowCaret*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetCaretPos*(X: int32, Y: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetCaretPos*(lpPoint: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ClientToScreen*(hWnd: HWND, lpPoint: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ScreenToClient*(hWnd: HWND, lpPoint: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc MapWindowPoints*(hWndFrom: HWND, hWndTo: HWND, lpPoints: LPPOINT, cPoints: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+proc SetCaretPos*(
+  X: int32, Y: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetCaretPos*(
+  lpPoint: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ClientToScreen*(
+  hWnd: HWND, lpPoint: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ScreenToClient*(
+  hWnd: HWND, lpPoint: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MapWindowPoints*(
+  hWndFrom: HWND, hWndTo: HWND, lpPoints: LPPOINT, cPoints: UINT
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc WindowFromPoint*(Point: POINT): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc ChildWindowFromPoint*(hWndParent: HWND, Point: POINT): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc ChildWindowFromPointEx*(hwnd: HWND, pt: POINT, flags: UINT): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetPhysicalCursorPos*(X: int32, Y: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPhysicalCursorPos*(lpPoint: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc LogicalToPhysicalPoint*(hWnd: HWND, lpPoint: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc PhysicalToLogicalPoint*(hWnd: HWND, lpPoint: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc WindowFromPhysicalPoint*(Point: POINT): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+proc ChildWindowFromPoint*(
+  hWndParent: HWND, Point: POINT
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ChildWindowFromPointEx*(
+  hwnd: HWND, pt: POINT, flags: UINT
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetPhysicalCursorPos*(
+  X: int32, Y: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPhysicalCursorPos*(
+  lpPoint: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LogicalToPhysicalPoint*(
+  hWnd: HWND, lpPoint: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PhysicalToLogicalPoint*(
+  hWnd: HWND, lpPoint: LPPOINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc WindowFromPhysicalPoint*(
+  Point: POINT
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetSysColor*(nIndex: int32): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetSysColorBrush*(nIndex: int32): HBRUSH {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetSysColors*(cElements: int32, lpaElements: ptr INT, lpaRgbValues: ptr COLORREF): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DrawFocusRect*(hDC: HDC, lprc: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc FillRect*(hDC: HDC, lprc: ptr RECT, hbr: HBRUSH): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc FrameRect*(hDC: HDC, lprc: ptr RECT, hbr: HBRUSH): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc InvertRect*(hDC: HDC, lprc: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetRect*(lprc: LPRECT, xLeft: int32, yTop: int32, xRight: int32, yBottom: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc GetSysColorBrush*(
+  nIndex: int32
+): HBRUSH {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetSysColors*(
+  cElements: int32, lpaElements: ptr INT, lpaRgbValues: ptr COLORREF
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DrawFocusRect*(
+  hDC: HDC, lprc: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc FillRect*(
+  hDC: HDC, lprc: ptr RECT, hbr: HBRUSH
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc FrameRect*(
+  hDC: HDC, lprc: ptr RECT, hbr: HBRUSH
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc InvertRect*(
+  hDC: HDC, lprc: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetRect*(
+  lprc: LPRECT, xLeft: int32, yTop: int32, xRight: int32, yBottom: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc SetRectEmpty*(lprc: LPRECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CopyRect*(lprcDst: LPRECT, lprcSrc: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc InflateRect*(lprc: LPRECT, dx: int32, dy: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IntersectRect*(lprcDst: LPRECT, lprcSrc1: ptr RECT, lprcSrc2: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc UnionRect*(lprcDst: LPRECT, lprcSrc1: ptr RECT, lprcSrc2: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SubtractRect*(lprcDst: LPRECT, lprcSrc1: ptr RECT, lprcSrc2: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc OffsetRect*(lprc: LPRECT, dx: int32, dy: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsRectEmpty*(lprc: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EqualRect*(lprc1: ptr RECT, lprc2: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc PtInRect*(lprc: ptr RECT, pt: POINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowWord*(hWnd: HWND, nIndex: int32): WORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowWord*(hWnd: HWND, nIndex: int32, wNewWord: WORD): WORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowLongA*(hWnd: HWND, nIndex: int32): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowLongW*(hWnd: HWND, nIndex: int32): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowLongA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowLongW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetClassWord*(hWnd: HWND, nIndex: int32): WORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetClassWord*(hWnd: HWND, nIndex: int32, wNewWord: WORD): WORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetClassLongA*(hWnd: HWND, nIndex: int32): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetClassLongW*(hWnd: HWND, nIndex: int32): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetClassLongA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetClassLongW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetProcessDefaultLayout*(pdwDefaultLayout: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetProcessDefaultLayout*(dwDefaultLayout: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc CopyRect*(
+  lprcDst: LPRECT, lprcSrc: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc InflateRect*(
+  lprc: LPRECT, dx: int32, dy: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc IntersectRect*(
+  lprcDst: LPRECT, lprcSrc1: ptr RECT, lprcSrc2: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UnionRect*(
+  lprcDst: LPRECT, lprcSrc1: ptr RECT, lprcSrc2: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SubtractRect*(
+  lprcDst: LPRECT, lprcSrc1: ptr RECT, lprcSrc2: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc OffsetRect*(
+  lprc: LPRECT, dx: int32, dy: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc IsRectEmpty*(
+  lprc: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EqualRect*(
+  lprc1: ptr RECT, lprc2: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PtInRect*(
+  lprc: ptr RECT, pt: POINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowWord*(
+  hWnd: HWND, nIndex: int32
+): WORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowWord*(
+  hWnd: HWND, nIndex: int32, wNewWord: WORD
+): WORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowLongA*(
+  hWnd: HWND, nIndex: int32
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowLongW*(
+  hWnd: HWND, nIndex: int32
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowLongA*(
+  hWnd: HWND, nIndex: int32, dwNewLong: LONG
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowLongW*(
+  hWnd: HWND, nIndex: int32, dwNewLong: LONG
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetClassWord*(
+  hWnd: HWND, nIndex: int32
+): WORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetClassWord*(
+  hWnd: HWND, nIndex: int32, wNewWord: WORD
+): WORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetClassLongA*(
+  hWnd: HWND, nIndex: int32
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetClassLongW*(
+  hWnd: HWND, nIndex: int32
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetClassLongA*(
+  hWnd: HWND, nIndex: int32, dwNewLong: LONG
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetClassLongW*(
+  hWnd: HWND, nIndex: int32, dwNewLong: LONG
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetProcessDefaultLayout*(
+  pdwDefaultLayout: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetProcessDefaultLayout*(
+  dwDefaultLayout: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetDesktopWindow*(): HWND {.winapi, stdcall, dynlib: "user32", importc.}
 proc GetParent*(hWnd: HWND): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetParent*(hWndChild: HWND, hWndNewParent: HWND): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumChildWindows*(hWndParent: HWND, lpEnumFunc: WNDENUMPROC, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc FindWindowA*(lpClassName: LPCSTR, lpWindowName: LPCSTR): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc FindWindowW*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc FindWindowExA*(hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCSTR, lpszWindow: LPCSTR): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc FindWindowExW*(hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCWSTR, lpszWindow: LPCWSTR): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+proc SetParent*(
+  hWndChild: HWND, hWndNewParent: HWND
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumChildWindows*(
+  hWndParent: HWND, lpEnumFunc: WNDENUMPROC, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc FindWindowA*(
+  lpClassName: LPCSTR, lpWindowName: LPCSTR
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc FindWindowW*(
+  lpClassName: LPCWSTR, lpWindowName: LPCWSTR
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc FindWindowExA*(
+  hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCSTR, lpszWindow: LPCSTR
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc FindWindowExW*(
+  hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCWSTR, lpszWindow: LPCWSTR
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetShellWindow*(): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterShellHookWindow*(hwnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DeregisterShellHookWindow*(hwnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumWindows*(lpEnumFunc: WNDENUMPROC, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumThreadWindows*(dwThreadId: DWORD, lpfn: WNDENUMPROC, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetClassNameA*(hWnd: HWND, lpClassName: LPSTR, nMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetClassNameW*(hWnd: HWND, lpClassName: LPWSTR, nMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+proc RegisterShellHookWindow*(
+  hwnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DeregisterShellHookWindow*(
+  hwnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumWindows*(
+  lpEnumFunc: WNDENUMPROC, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumThreadWindows*(
+  dwThreadId: DWORD, lpfn: WNDENUMPROC, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetClassNameA*(
+  hWnd: HWND, lpClassName: LPSTR, nMaxCount: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetClassNameW*(
+  hWnd: HWND, lpClassName: LPWSTR, nMaxCount: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetTopWindow*(hWnd: HWND): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowThreadProcessId*(hWnd: HWND, lpdwProcessId: LPDWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsGUIThread*(bConvert: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetLastActivePopup*(hWnd: HWND): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindow*(hWnd: HWND, uCmd: UINT): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowsHookA*(nFilterType: int32, pfnFilterProc: HOOKPROC): HHOOK {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowsHookW*(nFilterType: int32, pfnFilterProc: HOOKPROC): HHOOK {.winapi, stdcall, dynlib: "user32", importc.}
-proc UnhookWindowsHook*(nCode: int32, pfnFilterProc: HOOKPROC): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowsHookExA*(idHook: int32, lpfn: HOOKPROC, hmod: HINSTANCE, dwThreadId: DWORD): HHOOK {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWindowsHookExW*(idHook: int32, lpfn: HOOKPROC, hmod: HINSTANCE, dwThreadId: DWORD): HHOOK {.winapi, stdcall, dynlib: "user32", importc.}
-proc UnhookWindowsHookEx*(hhk: HHOOK): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CallNextHookEx*(hhk: HHOOK, nCode: int32, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc CheckMenuRadioItem*(hmenu: HMENU, first: UINT, last: UINT, check: UINT, flags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadBitmapA*(hInstance: HINSTANCE, lpBitmapName: LPCSTR): HBITMAP {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadBitmapW*(hInstance: HINSTANCE, lpBitmapName: LPCWSTR): HBITMAP {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadCursorA*(hInstance: HINSTANCE, lpCursorName: LPCSTR): HCURSOR {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadCursorW*(hInstance: HINSTANCE, lpCursorName: LPCWSTR): HCURSOR {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadCursorFromFileA*(lpFileName: LPCSTR): HCURSOR {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadCursorFromFileW*(lpFileName: LPCWSTR): HCURSOR {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateCursor*(hInst: HINSTANCE, xHotSpot: int32, yHotSpot: int32, nWidth: int32, nHeight: int32, pvANDPlane: pointer, pvXORPlane: pointer): HCURSOR {.winapi, stdcall, dynlib: "user32", importc.}
-proc DestroyCursor*(hCursor: HCURSOR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetSystemCursor*(hcur: HCURSOR, id: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadIconA*(hInstance: HINSTANCE, lpIconName: LPCSTR): HICON {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadIconW*(hInstance: HINSTANCE, lpIconName: LPCWSTR): HICON {.winapi, stdcall, dynlib: "user32", importc.}
-proc PrivateExtractIconsA*(szFileName: LPCSTR, nIconIndex: int32, cxIcon: int32, cyIcon: int32, phicon: ptr HICON, piconid: ptr UINT, nIcons: UINT, flags: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc PrivateExtractIconsW*(szFileName: LPCWSTR, nIconIndex: int32, cxIcon: int32, cyIcon: int32, phicon: ptr HICON, piconid: ptr UINT, nIcons: UINT, flags: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateIcon*(hInstance: HINSTANCE, nWidth: int32, nHeight: int32, cPlanes: BYTE, cBitsPixel: BYTE, lpbANDbits: ptr BYTE, lpbXORbits: ptr BYTE): HICON {.winapi, stdcall, dynlib: "user32", importc.}
+proc GetWindowThreadProcessId*(
+  hWnd: HWND, lpdwProcessId: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc IsGUIThread*(
+  bConvert: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetLastActivePopup*(
+  hWnd: HWND
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindow*(
+  hWnd: HWND, uCmd: UINT
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowsHookA*(
+  nFilterType: int32, pfnFilterProc: HOOKPROC
+): HHOOK {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowsHookW*(
+  nFilterType: int32, pfnFilterProc: HOOKPROC
+): HHOOK {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UnhookWindowsHook*(
+  nCode: int32, pfnFilterProc: HOOKPROC
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowsHookExA*(
+  idHook: int32, lpfn: HOOKPROC, hmod: HINSTANCE, dwThreadId: DWORD
+): HHOOK {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWindowsHookExW*(
+  idHook: int32, lpfn: HOOKPROC, hmod: HINSTANCE, dwThreadId: DWORD
+): HHOOK {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UnhookWindowsHookEx*(
+  hhk: HHOOK
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CallNextHookEx*(
+  hhk: HHOOK, nCode: int32, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CheckMenuRadioItem*(
+  hmenu: HMENU, first: UINT, last: UINT, check: UINT, flags: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadBitmapA*(
+  hInstance: HINSTANCE, lpBitmapName: LPCSTR
+): HBITMAP {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadBitmapW*(
+  hInstance: HINSTANCE, lpBitmapName: LPCWSTR
+): HBITMAP {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadCursorA*(
+  hInstance: HINSTANCE, lpCursorName: LPCSTR
+): HCURSOR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadCursorW*(
+  hInstance: HINSTANCE, lpCursorName: LPCWSTR
+): HCURSOR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadCursorFromFileA*(
+  lpFileName: LPCSTR
+): HCURSOR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadCursorFromFileW*(
+  lpFileName: LPCWSTR
+): HCURSOR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateCursor*(
+  hInst: HINSTANCE,
+  xHotSpot: int32,
+  yHotSpot: int32,
+  nWidth: int32,
+  nHeight: int32,
+  pvANDPlane: pointer,
+  pvXORPlane: pointer,
+): HCURSOR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DestroyCursor*(
+  hCursor: HCURSOR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetSystemCursor*(
+  hcur: HCURSOR, id: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadIconA*(
+  hInstance: HINSTANCE, lpIconName: LPCSTR
+): HICON {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadIconW*(
+  hInstance: HINSTANCE, lpIconName: LPCWSTR
+): HICON {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PrivateExtractIconsA*(
+  szFileName: LPCSTR,
+  nIconIndex: int32,
+  cxIcon: int32,
+  cyIcon: int32,
+  phicon: ptr HICON,
+  piconid: ptr UINT,
+  nIcons: UINT,
+  flags: UINT,
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PrivateExtractIconsW*(
+  szFileName: LPCWSTR,
+  nIconIndex: int32,
+  cxIcon: int32,
+  cyIcon: int32,
+  phicon: ptr HICON,
+  piconid: ptr UINT,
+  nIcons: UINT,
+  flags: UINT,
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateIcon*(
+  hInstance: HINSTANCE,
+  nWidth: int32,
+  nHeight: int32,
+  cPlanes: BYTE,
+  cBitsPixel: BYTE,
+  lpbANDbits: ptr BYTE,
+  lpbXORbits: ptr BYTE,
+): HICON {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc DestroyIcon*(hIcon: HICON): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc LookupIconIdFromDirectory*(presbits: PBYTE, fIcon: WINBOOL): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc LookupIconIdFromDirectoryEx*(presbits: PBYTE, fIcon: WINBOOL, cxDesired: int32, cyDesired: int32, Flags: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateIconFromResource*(presbits: PBYTE, dwResSize: DWORD, fIcon: WINBOOL, dwVer: DWORD): HICON {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateIconFromResourceEx*(presbits: PBYTE, dwResSize: DWORD, fIcon: WINBOOL, dwVer: DWORD, cxDesired: int32, cyDesired: int32, Flags: UINT): HICON {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadImageA*(hInst: HINSTANCE, name: LPCSTR, `type`: UINT, cx: int32, cy: int32, fuLoad: UINT): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
-proc LoadImageW*(hInst: HINSTANCE, name: LPCWSTR, `type`: UINT, cx: int32, cy: int32, fuLoad: UINT): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
-proc CopyImage*(h: HANDLE, `type`: UINT, cx: int32, cy: int32, flags: UINT): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
-proc DrawIconEx*(hdc: HDC, xLeft: int32, yTop: int32, hIcon: HICON, cxWidth: int32, cyWidth: int32, istepIfAniCur: UINT, hbrFlickerFreeDraw: HBRUSH, diFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateIconIndirect*(piconinfo: PICONINFO): HICON {.winapi, stdcall, dynlib: "user32", importc.}
+proc LookupIconIdFromDirectory*(
+  presbits: PBYTE, fIcon: WINBOOL
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LookupIconIdFromDirectoryEx*(
+  presbits: PBYTE, fIcon: WINBOOL, cxDesired: int32, cyDesired: int32, Flags: UINT
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateIconFromResource*(
+  presbits: PBYTE, dwResSize: DWORD, fIcon: WINBOOL, dwVer: DWORD
+): HICON {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateIconFromResourceEx*(
+  presbits: PBYTE,
+  dwResSize: DWORD,
+  fIcon: WINBOOL,
+  dwVer: DWORD,
+  cxDesired: int32,
+  cyDesired: int32,
+  Flags: UINT,
+): HICON {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadImageA*(
+  hInst: HINSTANCE, name: LPCSTR, `type`: UINT, cx: int32, cy: int32, fuLoad: UINT
+): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc LoadImageW*(
+  hInst: HINSTANCE, name: LPCWSTR, `type`: UINT, cx: int32, cy: int32, fuLoad: UINT
+): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CopyImage*(
+  h: HANDLE, `type`: UINT, cx: int32, cy: int32, flags: UINT
+): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DrawIconEx*(
+  hdc: HDC,
+  xLeft: int32,
+  yTop: int32,
+  hIcon: HICON,
+  cxWidth: int32,
+  cyWidth: int32,
+  istepIfAniCur: UINT,
+  hbrFlickerFreeDraw: HBRUSH,
+  diFlags: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateIconIndirect*(
+  piconinfo: PICONINFO
+): HICON {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc CopyIcon*(hIcon: HICON): HICON {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetIconInfo*(hIcon: HICON, piconinfo: PICONINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetIconInfoExA*(hicon: HICON, piconinfo: PICONINFOEXA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetIconInfoExW*(hicon: HICON, piconinfo: PICONINFOEXW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsDialogMessageA*(hDlg: HWND, lpMsg: LPMSG): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsDialogMessageW*(hDlg: HWND, lpMsg: LPMSG): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc MapDialogRect*(hDlg: HWND, lpRect: LPRECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DlgDirListA*(hDlg: HWND, lpPathSpec: LPSTR, nIDListBox: int32, nIDStaticPath: int32, uFileType: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc DlgDirListW*(hDlg: HWND, lpPathSpec: LPWSTR, nIDListBox: int32, nIDStaticPath: int32, uFileType: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc DlgDirSelectExA*(hwndDlg: HWND, lpString: LPSTR, chCount: int32, idListBox: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DlgDirSelectExW*(hwndDlg: HWND, lpString: LPWSTR, chCount: int32, idListBox: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DlgDirListComboBoxA*(hDlg: HWND, lpPathSpec: LPSTR, nIDComboBox: int32, nIDStaticPath: int32, uFiletype: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc DlgDirListComboBoxW*(hDlg: HWND, lpPathSpec: LPWSTR, nIDComboBox: int32, nIDStaticPath: int32, uFiletype: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc DlgDirSelectComboBoxExA*(hwndDlg: HWND, lpString: LPSTR, cchOut: int32, idComboBox: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DlgDirSelectComboBoxExW*(hwndDlg: HWND, lpString: LPWSTR, cchOut: int32, idComboBox: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetScrollInfo*(hwnd: HWND, nBar: int32, lpsi: LPCSCROLLINFO, redraw: WINBOOL): int32 {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetScrollInfo*(hwnd: HWND, nBar: int32, lpsi: LPSCROLLINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc DefFrameProcA*(hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc DefFrameProcW*(hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc DefMDIChildProcA*(hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc DefMDIChildProcW*(hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc TranslateMDISysAccel*(hWndClient: HWND, lpMsg: LPMSG): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ArrangeIconicWindows*(hWnd: HWND): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateMDIWindowA*(lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD, X: int32, Y: int32, nWidth: int32, nHeight: int32, hWndParent: HWND, hInstance: HINSTANCE, lParam: LPARAM): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc CreateMDIWindowW*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD, X: int32, Y: int32, nWidth: int32, nHeight: int32, hWndParent: HWND, hInstance: HINSTANCE, lParam: LPARAM): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc TileWindows*(hwndParent: HWND, wHow: UINT, lpRect: ptr RECT, cKids: UINT, lpKids: ptr HWND): WORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc CascadeWindows*(hwndParent: HWND, wHow: UINT, lpRect: ptr RECT, cKids: UINT, lpKids: ptr HWND): WORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc WinHelpA*(hWndMain: HWND, lpszHelp: LPCSTR, uCommand: UINT, dwData: ULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc WinHelpW*(hWndMain: HWND, lpszHelp: LPCWSTR, uCommand: UINT, dwData: ULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetGuiResources*(hProcess: HANDLE, uiFlags: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
-proc ChangeDisplaySettingsA*(lpDevMode: LPDEVMODEA, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc ChangeDisplaySettingsW*(lpDevMode: LPDEVMODEW, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc ChangeDisplaySettingsExA*(lpszDeviceName: LPCSTR, lpDevMode: LPDEVMODEA, hwnd: HWND, dwflags: DWORD, lParam: LPVOID): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc ChangeDisplaySettingsExW*(lpszDeviceName: LPCWSTR, lpDevMode: LPDEVMODEW, hwnd: HWND, dwflags: DWORD, lParam: LPVOID): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumDisplaySettingsA*(lpszDeviceName: LPCSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumDisplaySettingsW*(lpszDeviceName: LPCWSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumDisplaySettingsExA*(lpszDeviceName: LPCSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEA, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumDisplaySettingsExW*(lpszDeviceName: LPCWSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEW, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumDisplayDevicesA*(lpDevice: LPCSTR, iDevNum: DWORD, lpDisplayDevice: PDISPLAY_DEVICEA, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumDisplayDevicesW*(lpDevice: LPCWSTR, iDevNum: DWORD, lpDisplayDevice: PDISPLAY_DEVICEW, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetDisplayConfigBufferSizes*(flags: UINT32, numPathArrayElements: ptr UINT32, numModeInfoArrayElements: ptr UINT32): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetDisplayConfig*(numPathArrayElements: UINT32, pathArray: ptr DISPLAYCONFIG_PATH_INFO, numModeInfoArrayElements: UINT32, modeInfoArray: ptr DISPLAYCONFIG_MODE_INFO, flags: UINT32): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc QueryDisplayConfig*(flags: UINT32, numPathArrayElements: ptr UINT32, pathArray: ptr DISPLAYCONFIG_PATH_INFO, numModeInfoArrayElements: ptr UINT32, modeInfoArray: ptr DISPLAYCONFIG_MODE_INFO, currentTopologyId: ptr DISPLAYCONFIG_TOPOLOGY_ID): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc DisplayConfigGetDeviceInfo*(requestPacket: ptr DISPLAYCONFIG_DEVICE_INFO_HEADER): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc DisplayConfigSetDeviceInfo*(setPacket: ptr DISPLAYCONFIG_DEVICE_INFO_HEADER): LONG {.winapi, stdcall, dynlib: "user32", importc.}
-proc SystemParametersInfoA*(uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SystemParametersInfoW*(uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetDebugErrorLevel*(dwLevel: DWORD): VOID {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetLastErrorEx*(dwErrCode: DWORD, dwType: DWORD): VOID {.winapi, stdcall, dynlib: "user32", importc.}
-proc InternalGetWindowText*(hWnd: HWND, pString: LPWSTR, cchMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+proc GetIconInfo*(
+  hIcon: HICON, piconinfo: PICONINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetIconInfoExA*(
+  hicon: HICON, piconinfo: PICONINFOEXA
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetIconInfoExW*(
+  hicon: HICON, piconinfo: PICONINFOEXW
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc IsDialogMessageA*(
+  hDlg: HWND, lpMsg: LPMSG
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc IsDialogMessageW*(
+  hDlg: HWND, lpMsg: LPMSG
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MapDialogRect*(
+  hDlg: HWND, lpRect: LPRECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DlgDirListA*(
+  hDlg: HWND,
+  lpPathSpec: LPSTR,
+  nIDListBox: int32,
+  nIDStaticPath: int32,
+  uFileType: UINT,
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DlgDirListW*(
+  hDlg: HWND,
+  lpPathSpec: LPWSTR,
+  nIDListBox: int32,
+  nIDStaticPath: int32,
+  uFileType: UINT,
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DlgDirSelectExA*(
+  hwndDlg: HWND, lpString: LPSTR, chCount: int32, idListBox: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DlgDirSelectExW*(
+  hwndDlg: HWND, lpString: LPWSTR, chCount: int32, idListBox: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DlgDirListComboBoxA*(
+  hDlg: HWND,
+  lpPathSpec: LPSTR,
+  nIDComboBox: int32,
+  nIDStaticPath: int32,
+  uFiletype: UINT,
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DlgDirListComboBoxW*(
+  hDlg: HWND,
+  lpPathSpec: LPWSTR,
+  nIDComboBox: int32,
+  nIDStaticPath: int32,
+  uFiletype: UINT,
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DlgDirSelectComboBoxExA*(
+  hwndDlg: HWND, lpString: LPSTR, cchOut: int32, idComboBox: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DlgDirSelectComboBoxExW*(
+  hwndDlg: HWND, lpString: LPWSTR, cchOut: int32, idComboBox: int32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetScrollInfo*(
+  hwnd: HWND, nBar: int32, lpsi: LPCSCROLLINFO, redraw: WINBOOL
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetScrollInfo*(
+  hwnd: HWND, nBar: int32, lpsi: LPSCROLLINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DefFrameProcA*(
+  hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DefFrameProcW*(
+  hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DefMDIChildProcA*(
+  hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DefMDIChildProcW*(
+  hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc TranslateMDISysAccel*(
+  hWndClient: HWND, lpMsg: LPMSG
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ArrangeIconicWindows*(
+  hWnd: HWND
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateMDIWindowA*(
+  lpClassName: LPCSTR,
+  lpWindowName: LPCSTR,
+  dwStyle: DWORD,
+  X: int32,
+  Y: int32,
+  nWidth: int32,
+  nHeight: int32,
+  hWndParent: HWND,
+  hInstance: HINSTANCE,
+  lParam: LPARAM,
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CreateMDIWindowW*(
+  lpClassName: LPCWSTR,
+  lpWindowName: LPCWSTR,
+  dwStyle: DWORD,
+  X: int32,
+  Y: int32,
+  nWidth: int32,
+  nHeight: int32,
+  hWndParent: HWND,
+  hInstance: HINSTANCE,
+  lParam: LPARAM,
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc TileWindows*(
+  hwndParent: HWND, wHow: UINT, lpRect: ptr RECT, cKids: UINT, lpKids: ptr HWND
+): WORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CascadeWindows*(
+  hwndParent: HWND, wHow: UINT, lpRect: ptr RECT, cKids: UINT, lpKids: ptr HWND
+): WORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc WinHelpA*(
+  hWndMain: HWND, lpszHelp: LPCSTR, uCommand: UINT, dwData: ULONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc WinHelpW*(
+  hWndMain: HWND, lpszHelp: LPCWSTR, uCommand: UINT, dwData: ULONG_PTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetGuiResources*(
+  hProcess: HANDLE, uiFlags: DWORD
+): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ChangeDisplaySettingsA*(
+  lpDevMode: LPDEVMODEA, dwFlags: DWORD
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ChangeDisplaySettingsW*(
+  lpDevMode: LPDEVMODEW, dwFlags: DWORD
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ChangeDisplaySettingsExA*(
+  lpszDeviceName: LPCSTR,
+  lpDevMode: LPDEVMODEA,
+  hwnd: HWND,
+  dwflags: DWORD,
+  lParam: LPVOID,
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ChangeDisplaySettingsExW*(
+  lpszDeviceName: LPCWSTR,
+  lpDevMode: LPDEVMODEW,
+  hwnd: HWND,
+  dwflags: DWORD,
+  lParam: LPVOID,
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumDisplaySettingsA*(
+  lpszDeviceName: LPCSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEA
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumDisplaySettingsW*(
+  lpszDeviceName: LPCWSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEW
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumDisplaySettingsExA*(
+  lpszDeviceName: LPCSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEA, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumDisplaySettingsExW*(
+  lpszDeviceName: LPCWSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEW, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumDisplayDevicesA*(
+  lpDevice: LPCSTR, iDevNum: DWORD, lpDisplayDevice: PDISPLAY_DEVICEA, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumDisplayDevicesW*(
+  lpDevice: LPCWSTR, iDevNum: DWORD, lpDisplayDevice: PDISPLAY_DEVICEW, dwFlags: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetDisplayConfigBufferSizes*(
+  flags: UINT32, numPathArrayElements: ptr UINT32, numModeInfoArrayElements: ptr UINT32
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetDisplayConfig*(
+  numPathArrayElements: UINT32,
+  pathArray: ptr DISPLAYCONFIG_PATH_INFO,
+  numModeInfoArrayElements: UINT32,
+  modeInfoArray: ptr DISPLAYCONFIG_MODE_INFO,
+  flags: UINT32,
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc QueryDisplayConfig*(
+  flags: UINT32,
+  numPathArrayElements: ptr UINT32,
+  pathArray: ptr DISPLAYCONFIG_PATH_INFO,
+  numModeInfoArrayElements: ptr UINT32,
+  modeInfoArray: ptr DISPLAYCONFIG_MODE_INFO,
+  currentTopologyId: ptr DISPLAYCONFIG_TOPOLOGY_ID,
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DisplayConfigGetDeviceInfo*(
+  requestPacket: ptr DISPLAYCONFIG_DEVICE_INFO_HEADER
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DisplayConfigSetDeviceInfo*(
+  setPacket: ptr DISPLAYCONFIG_DEVICE_INFO_HEADER
+): LONG {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SystemParametersInfoA*(
+  uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SystemParametersInfoW*(
+  uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetDebugErrorLevel*(
+  dwLevel: DWORD
+): VOID {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetLastErrorEx*(
+  dwErrCode: DWORD, dwType: DWORD
+): VOID {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc InternalGetWindowText*(
+  hWnd: HWND, pString: LPWSTR, cchMaxCount: int32
+): int32 {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc CancelShutdown*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc MonitorFromPoint*(pt: POINT, dwFlags: DWORD): HMONITOR {.winapi, stdcall, dynlib: "user32", importc.}
-proc MonitorFromRect*(lprc: LPCRECT, dwFlags: DWORD): HMONITOR {.winapi, stdcall, dynlib: "user32", importc.}
-proc MonitorFromWindow*(hwnd: HWND, dwFlags: DWORD): HMONITOR {.winapi, stdcall, dynlib: "user32", importc.}
-proc EndTask*(hWnd: HWND, fShutDown: WINBOOL, fForce: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc MonitorFromPoint*(
+  pt: POINT, dwFlags: DWORD
+): HMONITOR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MonitorFromRect*(
+  lprc: LPCRECT, dwFlags: DWORD
+): HMONITOR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc MonitorFromWindow*(
+  hwnd: HWND, dwFlags: DWORD
+): HMONITOR {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EndTask*(
+  hWnd: HWND, fShutDown: WINBOOL, fForce: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc SoundSentry*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMonitorInfoA*(hMonitor: HMONITOR, lpmi: LPMONITORINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMonitorInfoW*(hMonitor: HMONITOR, lpmi: LPMONITORINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc EnumDisplayMonitors*(hdc: HDC, lprcClip: LPCRECT, lpfnEnum: MONITORENUMPROC, dwData: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc NotifyWinEvent*(event: DWORD, hwnd: HWND, idObject: LONG, idChild: LONG): VOID {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetWinEventHook*(eventMin: DWORD, eventMax: DWORD, hmodWinEventProc: HMODULE, pfnWinEventProc: WINEVENTPROC, idProcess: DWORD, idThread: DWORD, dwFlags: DWORD): HWINEVENTHOOK {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsWinEventHookInstalled*(event: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc UnhookWinEvent*(hWinEventHook: HWINEVENTHOOK): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetGUIThreadInfo*(idThread: DWORD, pgui: PGUITHREADINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc BlockInput*(fBlockIt: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowModuleFileNameA*(hwnd: HWND, pszFileName: LPSTR, cchFileNameMax: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowModuleFileNameW*(hwnd: HWND, pszFileName: LPWSTR, cchFileNameMax: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+proc GetMonitorInfoA*(
+  hMonitor: HMONITOR, lpmi: LPMONITORINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMonitorInfoW*(
+  hMonitor: HMONITOR, lpmi: LPMONITORINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc EnumDisplayMonitors*(
+  hdc: HDC, lprcClip: LPCRECT, lpfnEnum: MONITORENUMPROC, dwData: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc NotifyWinEvent*(
+  event: DWORD, hwnd: HWND, idObject: LONG, idChild: LONG
+): VOID {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetWinEventHook*(
+  eventMin: DWORD,
+  eventMax: DWORD,
+  hmodWinEventProc: HMODULE,
+  pfnWinEventProc: WINEVENTPROC,
+  idProcess: DWORD,
+  idThread: DWORD,
+  dwFlags: DWORD,
+): HWINEVENTHOOK {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc IsWinEventHookInstalled*(
+  event: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc UnhookWinEvent*(
+  hWinEventHook: HWINEVENTHOOK
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetGUIThreadInfo*(
+  idThread: DWORD, pgui: PGUITHREADINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc BlockInput*(
+  fBlockIt: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowModuleFileNameA*(
+  hwnd: HWND, pszFileName: LPSTR, cchFileNameMax: UINT
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowModuleFileNameW*(
+  hwnd: HWND, pszFileName: LPWSTR, cchFileNameMax: UINT
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc SetProcessDPIAware*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
 proc IsProcessDPIAware*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetCursorInfo*(pci: PCURSORINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetWindowInfo*(hwnd: HWND, pwi: PWINDOWINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetTitleBarInfo*(hwnd: HWND, pti: PTITLEBARINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetMenuBarInfo*(hwnd: HWND, idObject: LONG, idItem: LONG, pmbi: PMENUBARINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetScrollBarInfo*(hwnd: HWND, idObject: LONG, psbi: PSCROLLBARINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetComboBoxInfo*(hwndCombo: HWND, pcbi: PCOMBOBOXINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetAncestor*(hwnd: HWND, gaFlags: UINT): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc RealChildWindowFromPoint*(hwndParent: HWND, ptParentClientCoords: POINT): HWND {.winapi, stdcall, dynlib: "user32", importc.}
-proc RealGetWindowClassA*(hwnd: HWND, ptszClassName: LPSTR, cchClassNameMax: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc RealGetWindowClassW*(hwnd: HWND, ptszClassName: LPWSTR, cchClassNameMax: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetAltTabInfoA*(hwnd: HWND, iItem: int32, pati: PALTTABINFO, pszItemText: LPSTR, cchItemText: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetAltTabInfoW*(hwnd: HWND, iItem: int32, pati: PALTTABINFO, pszItemText: LPWSTR, cchItemText: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+proc GetCursorInfo*(
+  pci: PCURSORINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetWindowInfo*(
+  hwnd: HWND, pwi: PWINDOWINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetTitleBarInfo*(
+  hwnd: HWND, pti: PTITLEBARINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetMenuBarInfo*(
+  hwnd: HWND, idObject: LONG, idItem: LONG, pmbi: PMENUBARINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetScrollBarInfo*(
+  hwnd: HWND, idObject: LONG, psbi: PSCROLLBARINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetComboBoxInfo*(
+  hwndCombo: HWND, pcbi: PCOMBOBOXINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetAncestor*(
+  hwnd: HWND, gaFlags: UINT
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RealChildWindowFromPoint*(
+  hwndParent: HWND, ptParentClientCoords: POINT
+): HWND {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RealGetWindowClassA*(
+  hwnd: HWND, ptszClassName: LPSTR, cchClassNameMax: UINT
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RealGetWindowClassW*(
+  hwnd: HWND, ptszClassName: LPWSTR, cchClassNameMax: UINT
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetAltTabInfoA*(
+  hwnd: HWND, iItem: int32, pati: PALTTABINFO, pszItemText: LPSTR, cchItemText: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetAltTabInfoW*(
+  hwnd: HWND, iItem: int32, pati: PALTTABINFO, pszItemText: LPWSTR, cchItemText: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
 proc GetListBoxInfo*(hwnd: HWND): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
 proc LockWorkStation*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc UserHandleGrantAccess*(hUserHandle: HANDLE, hJob: HANDLE, bGrant: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetRawInputData*(hRawInput: HRAWINPUT, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT, cbSizeHeader: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetRawInputDeviceInfoA*(hDevice: HANDLE, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetRawInputDeviceInfoW*(hDevice: HANDLE, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetRawInputBuffer*(pData: PRAWINPUT, pcbSize: PUINT, cbSizeHeader: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterRawInputDevices*(pRawInputDevices: PCRAWINPUTDEVICE, uiNumDevices: UINT, cbSize: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetRegisteredRawInputDevices*(pRawInputDevices: PRAWINPUTDEVICE, puiNumDevices: PUINT, cbSize: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetRawInputDeviceList*(pRawInputDeviceList: PRAWINPUTDEVICELIST, puiNumDevices: PUINT, cbSize: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
-proc DefRawInputProc*(paRawInput: ptr PRAWINPUT, nInput: INT, cbSizeHeader: UINT): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerDevices*(deviceCount: ptr UINT32, pointerDevices: ptr POINTER_DEVICE_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerDevice*(device: HANDLE, pointerDevice: ptr POINTER_DEVICE_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerDeviceProperties*(device: HANDLE, propertyCount: ptr UINT32, pointerProperties: ptr POINTER_DEVICE_PROPERTY): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc RegisterPointerDeviceNotifications*(window: HWND, notifyRange: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerDeviceRects*(device: HANDLE, pointerDeviceRect: ptr RECT, displayRect: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerDeviceCursors*(device: HANDLE, cursorCount: ptr UINT32, deviceCursors: ptr POINTER_DEVICE_CURSOR_INFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetRawPointerDeviceData*(pointerId: UINT32, historyCount: UINT32, propertiesCount: UINT32, pProperties: ptr POINTER_DEVICE_PROPERTY, pValues: ptr LONG): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ChangeWindowMessageFilter*(message: UINT, dwFlag: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ChangeWindowMessageFilterEx*(hwnd: HWND, message: UINT, action: DWORD, pChangeFilterStruct: PCHANGEFILTERSTRUCT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetGestureInfo*(hGestureInfo: HGESTUREINFO, pGestureInfo: PGESTUREINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetGestureExtraArgs*(hGestureInfo: HGESTUREINFO, cbExtraArgs: UINT, pExtraArgs: PBYTE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc CloseGestureInfoHandle*(hGestureInfo: HGESTUREINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetGestureConfig*(hwnd: HWND, dwReserved: DWORD, cIDs: UINT, pGestureConfig: PGESTURECONFIG, cbSize: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetGestureConfig*(hwnd: HWND, dwReserved: DWORD, dwFlags: DWORD, pcIDs: PUINT, pGestureConfig: PGESTURECONFIG, cbSize: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ShutdownBlockReasonCreate*(hWnd: HWND, pwszReason: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ShutdownBlockReasonQuery*(hWnd: HWND, pwszBuff: LPWSTR, pcchBuff: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc ShutdownBlockReasonDestroy*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetCurrentInputMessageSource*(inputMessageSource: ptr INPUT_MESSAGE_SOURCE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetCIMSSM*(inputMessageSource: ptr INPUT_MESSAGE_SOURCE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetAutoRotationState*(pState: PAR_STATE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetDisplayAutoRotationPreferences*(pOrientation: ptr ORIENTATION_PREFERENCE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetDisplayAutoRotationPreferences*(orientation: ORIENTATION_PREFERENCE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc IsImmersiveProcess*(hProcess: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc SetProcessRestrictionExemption*(fEnableExemption: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc GetPointerInputTransform*(pointerId: UINT32, historyCount: UINT32, inputTransform: ptr UINT32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
-proc PostAppMessageA*(idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostThreadMessageA".}
-proc PostAppMessageW*(idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostThreadMessageW".}
-proc GetNextWindow*(hWnd: HWND, uCmd: UINT): HWND {.winapi, stdcall, dynlib: "user32", importc: "GetWindow".}
-proc CopyCursor*(hIcon: HICON): HICON {.winapi, stdcall, dynlib: "user32", importc: "CopyIcon".}
-template MAKEINTRESOURCEA*(i: untyped): untyped = cast[LPSTR](i and 0xffff)
-template MAKEINTRESOURCEW*(i: untyped): untyped = cast[LPWSTR](i and 0xffff)
-template IS_INTRESOURCE*(r: untyped): bool = cast[int](r) shr 16 == 0
-template GET_APPCOMMAND_LPARAM*(lParam: untyped): SHORT = cast[SHORT](HIWORD(lParam) and (not WORD FAPPCOMMAND_MASK))
-template GET_DEVICE_LPARAM*(lParam: untyped): WORD = HIWORD(lParam) and WORD FAPPCOMMAND_MASK
-template GET_MOUSEORKEY_LPARAM*(lParam: untyped): WORD = HIWORD(lParam) and WORD FAPPCOMMAND_MASK
-template GET_FLAGS_LPARAM*(lParam: untyped): WORD = LOWORD(lParam)
-template GET_KEYSTATE_LPARAM*(lParam: untyped): WORD = LOWORD(lParam)
-template POINTSTOPOINT*(pt: POINT, pts: POINTS) = pt.x = pts.x; pt.y = pts.y
-template POINTTOPOINTS*(pt: POINT): POINTS = POINTS(x: int16 pt.x, y: int16 pt.y)
-template MAKEWPARAM*(l: untyped, h: untyped): WPARAM = WPARAM MAKELONG(l, h)
-template MAKELPARAM*(l: untyped, h: untyped): LPARAM = LPARAM MAKELONG(l, h)
-template MAKELRESULT*(l: untyped, h: untyped): LRESULT = LRESULT MAKELONG(l, h)
-template GET_WHEEL_DELTA_WPARAM*(wParam: untyped): SHORT = cast[SHORT](HIWORD(wParam))
-template GET_KEYSTATE_WPARAM*(wParam: untyped): WORD = LOWORD(wParam)
-template GET_NCHITTEST_WPARAM*(wParam: untyped): SHORT = cast[SHORT](LOWORD(wParam))
-template GET_XBUTTON_WPARAM*(wParam: untyped): WORD = HIWORD(wParam)
-template TOUCH_COORD_TO_PIXEL*(L: untyped): LONG = LONG((int L) / 100)
-template GET_POINTERID_WPARAM*(wParam: untyped): WORD = LOWORD(wParam)
-template IS_POINTER_FLAG_SET_WPARAM*(wParam: untyped, flag: untyped): bool = (DWORD(HIWORD(wParam)) and DWORD flag) == DWORD flag
-template IS_POINTER_NEW_WPARAM*(wParam: untyped): bool = IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_NEW)
-template IS_POINTER_INRANGE_WPARAM*(wParam: untyped): bool = IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_INRANGE)
-template IS_POINTER_INCONTACT_WPARAM*(wParam: untyped): bool = IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_INCONTACT)
-template IS_POINTER_FIRSTBUTTON_WPARAM*(wParam: untyped): bool = IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FIRSTBUTTON)
-template IS_POINTER_SECONDBUTTON_WPARAM*(wParam: untyped): bool = IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_SECONDBUTTON)
-template IS_POINTER_THIRDBUTTON_WPARAM*(wParam: untyped): bool = IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_THIRDBUTTON)
-template IS_POINTER_FOURTHBUTTON_WPARAM*(wParam: untyped): bool = IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FOURTHBUTTON)
-template IS_POINTER_FIFTHBUTTON_WPARAM*(wParam: untyped): bool = IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FIFTHBUTTON)
-template IS_POINTER_PRIMARY_WPARAM*(wParam: untyped): bool = IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_PRIMARY)
-template HAS_POINTER_CONFIDENCE_WPARAM*(wParam: untyped): bool = IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_CONFIDENCE)
-template IS_POINTER_CANCELED_WPARAM*(wParam: untyped): bool = IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_CANCELED)
-template GET_RAWINPUT_CODE_WPARAM*(wParam: untyped): WPARAM = WPARAM(wParam and 0xff)
-template GET_SC_WPARAM*(wParam: untyped): LONG = LONG(wParam and 0xfff0)
-template RIDEV_EXMODE*(mode: untyped): DWORD = DWORD(mode and RIDEV_EXMODEMASK)
-template GET_DEVICE_CHANGE_WPARAM*(wParam: untyped): WPARAM = WPARAM(LOWORD(wParam))
-template GET_DEVICE_CHANGE_LPARAM*(lParam: untyped): LPARAM = LPARAM(LOWORD(lParam))
-template GID_ROTATE_ANGLE_TO_ARGUMENT*(arg: untyped): USHORT = USHORT((arg + 2.0 * 3.14159265) / (4.0 * 3.14159265) * 65535.0)
-template GID_ROTATE_ANGLE_FROM_ARGUMENT*(arg: untyped): DOUBLE = (((arg.DOUBLE / 65535.0) * 4.0 * 3.14159265) - 2.0 * 3.14159265)
-proc ExitWindows*(dwReserved: DWORD, uReserved: UINT): WINBOOL {.winapi, inline.} = ExitWindowsEx(EWX_LOGOFF, 0xFFFFFFFF'i32)
-proc EnumTaskWindows*(hTask: HANDLE, lpfn: WNDENUMPROC, lParam: LPARAM): WINBOOL {.winapi, inline.} = EnumThreadWindows(DWORD hTask, lpfn, lParam)
-proc GetWindowTask*(hWnd: HWND): DWORD {.winapi, inline.} = GetWindowThreadProcessId(hWnd, nil)
-proc DefHookProc*(nCode: int32, wParam: WPARAM, lParam: LPARAM, phhk: ptr HHOOK): LRESULT {.winapi, inline.} = CallNextHookEx(phhk[], nCode, wParam, lParam)
+proc UserHandleGrantAccess*(
+  hUserHandle: HANDLE, hJob: HANDLE, bGrant: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetRawInputData*(
+  hRawInput: HRAWINPUT,
+  uiCommand: UINT,
+  pData: LPVOID,
+  pcbSize: PUINT,
+  cbSizeHeader: UINT,
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetRawInputDeviceInfoA*(
+  hDevice: HANDLE, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetRawInputDeviceInfoW*(
+  hDevice: HANDLE, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetRawInputBuffer*(
+  pData: PRAWINPUT, pcbSize: PUINT, cbSizeHeader: UINT
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterRawInputDevices*(
+  pRawInputDevices: PCRAWINPUTDEVICE, uiNumDevices: UINT, cbSize: UINT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetRegisteredRawInputDevices*(
+  pRawInputDevices: PRAWINPUTDEVICE, puiNumDevices: PUINT, cbSize: UINT
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetRawInputDeviceList*(
+  pRawInputDeviceList: PRAWINPUTDEVICELIST, puiNumDevices: PUINT, cbSize: UINT
+): UINT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc DefRawInputProc*(
+  paRawInput: ptr PRAWINPUT, nInput: INT, cbSizeHeader: UINT
+): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerDevices*(
+  deviceCount: ptr UINT32, pointerDevices: ptr POINTER_DEVICE_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerDevice*(
+  device: HANDLE, pointerDevice: ptr POINTER_DEVICE_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerDeviceProperties*(
+  device: HANDLE,
+  propertyCount: ptr UINT32,
+  pointerProperties: ptr POINTER_DEVICE_PROPERTY,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc RegisterPointerDeviceNotifications*(
+  window: HWND, notifyRange: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerDeviceRects*(
+  device: HANDLE, pointerDeviceRect: ptr RECT, displayRect: ptr RECT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerDeviceCursors*(
+  device: HANDLE, cursorCount: ptr UINT32, deviceCursors: ptr POINTER_DEVICE_CURSOR_INFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetRawPointerDeviceData*(
+  pointerId: UINT32,
+  historyCount: UINT32,
+  propertiesCount: UINT32,
+  pProperties: ptr POINTER_DEVICE_PROPERTY,
+  pValues: ptr LONG,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ChangeWindowMessageFilter*(
+  message: UINT, dwFlag: DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ChangeWindowMessageFilterEx*(
+  hwnd: HWND, message: UINT, action: DWORD, pChangeFilterStruct: PCHANGEFILTERSTRUCT
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetGestureInfo*(
+  hGestureInfo: HGESTUREINFO, pGestureInfo: PGESTUREINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetGestureExtraArgs*(
+  hGestureInfo: HGESTUREINFO, cbExtraArgs: UINT, pExtraArgs: PBYTE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc CloseGestureInfoHandle*(
+  hGestureInfo: HGESTUREINFO
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetGestureConfig*(
+  hwnd: HWND,
+  dwReserved: DWORD,
+  cIDs: UINT,
+  pGestureConfig: PGESTURECONFIG,
+  cbSize: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetGestureConfig*(
+  hwnd: HWND,
+  dwReserved: DWORD,
+  dwFlags: DWORD,
+  pcIDs: PUINT,
+  pGestureConfig: PGESTURECONFIG,
+  cbSize: UINT,
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ShutdownBlockReasonCreate*(
+  hWnd: HWND, pwszReason: LPCWSTR
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ShutdownBlockReasonQuery*(
+  hWnd: HWND, pwszBuff: LPWSTR, pcchBuff: ptr DWORD
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc ShutdownBlockReasonDestroy*(
+  hWnd: HWND
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetCurrentInputMessageSource*(
+  inputMessageSource: ptr INPUT_MESSAGE_SOURCE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetCIMSSM*(
+  inputMessageSource: ptr INPUT_MESSAGE_SOURCE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetAutoRotationState*(
+  pState: PAR_STATE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetDisplayAutoRotationPreferences*(
+  pOrientation: ptr ORIENTATION_PREFERENCE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetDisplayAutoRotationPreferences*(
+  orientation: ORIENTATION_PREFERENCE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc IsImmersiveProcess*(
+  hProcess: HANDLE
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc SetProcessRestrictionExemption*(
+  fEnableExemption: WINBOOL
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc GetPointerInputTransform*(
+  pointerId: UINT32, historyCount: UINT32, inputTransform: ptr UINT32
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
+
+proc PostAppMessageA*(
+  idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostThreadMessageA".}
+
+proc PostAppMessageW*(
+  idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostThreadMessageW".}
+
+proc GetNextWindow*(
+  hWnd: HWND, uCmd: UINT
+): HWND {.winapi, stdcall, dynlib: "user32", importc: "GetWindow".}
+
+proc CopyCursor*(
+  hIcon: HICON
+): HICON {.winapi, stdcall, dynlib: "user32", importc: "CopyIcon".}
+
+template MAKEINTRESOURCEA*(i: untyped): untyped =
+  cast[LPSTR](i and 0xffff)
+
+template MAKEINTRESOURCEW*(i: untyped): untyped =
+  cast[LPWSTR](i and 0xffff)
+
+template IS_INTRESOURCE*(r: untyped): bool =
+  cast[int](r) shr 16 == 0
+
+template GET_APPCOMMAND_LPARAM*(lParam: untyped): SHORT =
+  cast[SHORT](HIWORD(lParam) and (not WORD FAPPCOMMAND_MASK))
+
+template GET_DEVICE_LPARAM*(lParam: untyped): WORD =
+  HIWORD(lParam) and WORD FAPPCOMMAND_MASK
+
+template GET_MOUSEORKEY_LPARAM*(lParam: untyped): WORD =
+  HIWORD(lParam) and WORD FAPPCOMMAND_MASK
+
+template GET_FLAGS_LPARAM*(lParam: untyped): WORD =
+  LOWORD(lParam)
+
+template GET_KEYSTATE_LPARAM*(lParam: untyped): WORD =
+  LOWORD(lParam)
+
+template POINTSTOPOINT*(pt: POINT, pts: POINTS) =
+  pt.x = pts.x
+  pt.y = pts.y
+
+template POINTTOPOINTS*(pt: POINT): POINTS =
+  POINTS(x: int16 pt.x, y: int16 pt.y)
+
+template MAKEWPARAM*(l: untyped, h: untyped): WPARAM =
+  WPARAM MAKELONG(l, h)
+
+template MAKELPARAM*(l: untyped, h: untyped): LPARAM =
+  LPARAM MAKELONG(l, h)
+
+template MAKELRESULT*(l: untyped, h: untyped): LRESULT =
+  LRESULT MAKELONG(l, h)
+
+template GET_WHEEL_DELTA_WPARAM*(wParam: untyped): SHORT =
+  cast[SHORT](HIWORD(wParam))
+
+template GET_KEYSTATE_WPARAM*(wParam: untyped): WORD =
+  LOWORD(wParam)
+
+template GET_NCHITTEST_WPARAM*(wParam: untyped): SHORT =
+  cast[SHORT](LOWORD(wParam))
+
+template GET_XBUTTON_WPARAM*(wParam: untyped): WORD =
+  HIWORD(wParam)
+
+template TOUCH_COORD_TO_PIXEL*(L: untyped): LONG =
+  LONG((int L) / 100)
+
+template GET_POINTERID_WPARAM*(wParam: untyped): WORD =
+  LOWORD(wParam)
+
+template IS_POINTER_FLAG_SET_WPARAM*(wParam: untyped, flag: untyped): bool =
+  (DWORD(HIWORD(wParam)) and DWORD flag) == DWORD flag
+
+template IS_POINTER_NEW_WPARAM*(wParam: untyped): bool =
+  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_NEW)
+
+template IS_POINTER_INRANGE_WPARAM*(wParam: untyped): bool =
+  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_INRANGE)
+
+template IS_POINTER_INCONTACT_WPARAM*(wParam: untyped): bool =
+  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_INCONTACT)
+
+template IS_POINTER_FIRSTBUTTON_WPARAM*(wParam: untyped): bool =
+  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FIRSTBUTTON)
+
+template IS_POINTER_SECONDBUTTON_WPARAM*(wParam: untyped): bool =
+  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_SECONDBUTTON)
+
+template IS_POINTER_THIRDBUTTON_WPARAM*(wParam: untyped): bool =
+  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_THIRDBUTTON)
+
+template IS_POINTER_FOURTHBUTTON_WPARAM*(wParam: untyped): bool =
+  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FOURTHBUTTON)
+
+template IS_POINTER_FIFTHBUTTON_WPARAM*(wParam: untyped): bool =
+  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FIFTHBUTTON)
+
+template IS_POINTER_PRIMARY_WPARAM*(wParam: untyped): bool =
+  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_PRIMARY)
+
+template HAS_POINTER_CONFIDENCE_WPARAM*(wParam: untyped): bool =
+  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_CONFIDENCE)
+
+template IS_POINTER_CANCELED_WPARAM*(wParam: untyped): bool =
+  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_CANCELED)
+
+template GET_RAWINPUT_CODE_WPARAM*(wParam: untyped): WPARAM =
+  WPARAM(wParam and 0xff)
+
+template GET_SC_WPARAM*(wParam: untyped): LONG =
+  LONG(wParam and 0xfff0)
+
+template RIDEV_EXMODE*(mode: untyped): DWORD =
+  DWORD(mode and RIDEV_EXMODEMASK)
+
+template GET_DEVICE_CHANGE_WPARAM*(wParam: untyped): WPARAM =
+  WPARAM(LOWORD(wParam))
+
+template GET_DEVICE_CHANGE_LPARAM*(lParam: untyped): LPARAM =
+  LPARAM(LOWORD(lParam))
+
+template GID_ROTATE_ANGLE_TO_ARGUMENT*(arg: untyped): USHORT =
+  USHORT((arg + 2.0 * 3.14159265) / (4.0 * 3.14159265) * 65535.0)
+
+template GID_ROTATE_ANGLE_FROM_ARGUMENT*(arg: untyped): DOUBLE =
+  (((arg.DOUBLE / 65535.0) * 4.0 * 3.14159265) - 2.0 * 3.14159265)
+
+proc ExitWindows*(dwReserved: DWORD, uReserved: UINT): WINBOOL {.winapi, inline.} =
+  ExitWindowsEx(EWX_LOGOFF, 0xFFFFFFFF'i32)
+
+proc EnumTaskWindows*(
+    hTask: HANDLE, lpfn: WNDENUMPROC, lParam: LPARAM
+): WINBOOL {.winapi, inline.} =
+  EnumThreadWindows(DWORD hTask, lpfn, lParam)
+
+proc GetWindowTask*(hWnd: HWND): DWORD {.winapi, inline.} =
+  GetWindowThreadProcessId(hWnd, nil)
+
+proc DefHookProc*(
+    nCode: int32, wParam: WPARAM, lParam: LPARAM, phhk: ptr HHOOK
+): LRESULT {.winapi, inline.} =
+  CallNextHookEx(phhk[], nCode, wParam, lParam)
+
 when winimAnsi:
-  proc CreateWindowEx*(dwExStyle: DWORD, lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD, X: int32, Y: int32, nWidth: int32, nHeight: int32, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateWindowExA".}
-proc CreateWindowA*(lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD, x: int32, y: int32, nWidth: int32, nHeight: int32, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID): HWND {.winapi, inline.} = CreateWindowExA(0, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
+  proc CreateWindowEx*(
+    dwExStyle: DWORD,
+    lpClassName: LPCSTR,
+    lpWindowName: LPCSTR,
+    dwStyle: DWORD,
+    X: int32,
+    Y: int32,
+    nWidth: int32,
+    nHeight: int32,
+    hWndParent: HWND,
+    hMenu: HMENU,
+    hInstance: HINSTANCE,
+    lpParam: LPVOID,
+  ): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateWindowExA".}
+
+proc CreateWindowA*(
+    lpClassName: LPCSTR,
+    lpWindowName: LPCSTR,
+    dwStyle: DWORD,
+    x: int32,
+    y: int32,
+    nWidth: int32,
+    nHeight: int32,
+    hWndParent: HWND,
+    hMenu: HMENU,
+    hInstance: HINSTANCE,
+    lpParam: LPVOID,
+): HWND {.winapi, inline.} =
+  CreateWindowExA(
+    0, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu,
+    hInstance, lpParam,
+  )
+
 when winimUnicode:
-  proc CreateWindowEx*(dwExStyle: DWORD, lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD, X: int32, Y: int32, nWidth: int32, nHeight: int32, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateWindowExW".}
-proc CreateWindowW*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD, x: int32, y: int32, nWidth: int32, nHeight: int32, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID): HWND {.winapi, inline.} = CreateWindowExW(0, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
-when winimAnsi:
-  proc CreateDialogParam*(hInstance: HINSTANCE, lpTemplateName: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateDialogParamA".}
-proc CreateDialogA*(hInstance: HINSTANCE, lpName: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC): HWND {.winapi, inline.} = CreateDialogParamA(hInstance, lpName, hWndParent, lpDialogFunc, 0)
-when winimUnicode:
-  proc CreateDialogParam*(hInstance: HINSTANCE, lpTemplateName: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateDialogParamW".}
-proc CreateDialogW*(hInstance: HINSTANCE, lpName: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC): HWND {.winapi, inline.} = CreateDialogParamW(hInstance, lpName, hWndParent, lpDialogFunc, 0)
+  proc CreateWindowEx*(
+    dwExStyle: DWORD,
+    lpClassName: LPCWSTR,
+    lpWindowName: LPCWSTR,
+    dwStyle: DWORD,
+    X: int32,
+    Y: int32,
+    nWidth: int32,
+    nHeight: int32,
+    hWndParent: HWND,
+    hMenu: HMENU,
+    hInstance: HINSTANCE,
+    lpParam: LPVOID,
+  ): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateWindowExW".}
+
+proc CreateWindowW*(
+    lpClassName: LPCWSTR,
+    lpWindowName: LPCWSTR,
+    dwStyle: DWORD,
+    x: int32,
+    y: int32,
+    nWidth: int32,
+    nHeight: int32,
+    hWndParent: HWND,
+    hMenu: HMENU,
+    hInstance: HINSTANCE,
+    lpParam: LPVOID,
+): HWND {.winapi, inline.} =
+  CreateWindowExW(
+    0, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu,
+    hInstance, lpParam,
+  )
+
 when winimAnsi:
-  proc CreateDialogIndirectParam*(hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEA, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateDialogIndirectParamA".}
-proc CreateDialogIndirectA*(hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEA, hWndParent: HWND, lpDialogFunc: DLGPROC): HWND {.winapi, inline.} = CreateDialogIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+  proc CreateDialogParam*(
+    hInstance: HINSTANCE,
+    lpTemplateName: LPCSTR,
+    hWndParent: HWND,
+    lpDialogFunc: DLGPROC,
+    dwInitParam: LPARAM,
+  ): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateDialogParamA".}
+
+proc CreateDialogA*(
+    hInstance: HINSTANCE, lpName: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC
+): HWND {.winapi, inline.} =
+  CreateDialogParamA(hInstance, lpName, hWndParent, lpDialogFunc, 0)
+
 when winimUnicode:
-  proc CreateDialogIndirectParam*(hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEW, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateDialogIndirectParamW".}
-proc CreateDialogIndirectW*(hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEW, hWndParent: HWND, lpDialogFunc: DLGPROC): HWND {.winapi, inline.} = CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
-when winimAnsi:
-  proc DialogBoxParam*(hInstance: HINSTANCE, lpTemplateName: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): INT_PTR {.winapi, stdcall, dynlib: "user32", importc: "DialogBoxParamA".}
-proc DialogBoxA*(hInstance: HINSTANCE, lpTemplate: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC): INT_PTR {.winapi, inline.} = DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
-when winimUnicode:
-  proc DialogBoxParam*(hInstance: HINSTANCE, lpTemplateName: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): INT_PTR {.winapi, stdcall, dynlib: "user32", importc: "DialogBoxParamW".}
-proc DialogBoxW*(hInstance: HINSTANCE, lpTemplate: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC): INT_PTR {.winapi, inline.} = DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+  proc CreateDialogParam*(
+    hInstance: HINSTANCE,
+    lpTemplateName: LPCWSTR,
+    hWndParent: HWND,
+    lpDialogFunc: DLGPROC,
+    dwInitParam: LPARAM,
+  ): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateDialogParamW".}
+
+proc CreateDialogW*(
+    hInstance: HINSTANCE, lpName: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC
+): HWND {.winapi, inline.} =
+  CreateDialogParamW(hInstance, lpName, hWndParent, lpDialogFunc, 0)
+
 when winimAnsi:
-  proc DialogBoxIndirectParam*(hInstance: HINSTANCE, hDialogTemplate: LPCDLGTEMPLATEA, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): INT_PTR {.winapi, stdcall, dynlib: "user32", importc: "DialogBoxIndirectParamA".}
-proc DialogBoxIndirectA*(hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEA, hWndParent: HWND, lpDialogFunc: DLGPROC): INT_PTR {.winapi, inline.} = DialogBoxIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+  proc CreateDialogIndirectParam*(
+    hInstance: HINSTANCE,
+    lpTemplate: LPCDLGTEMPLATEA,
+    hWndParent: HWND,
+    lpDialogFunc: DLGPROC,
+    dwInitParam: LPARAM,
+  ): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateDialogIndirectParamA".}
+
+proc CreateDialogIndirectA*(
+    hInstance: HINSTANCE,
+    lpTemplate: LPCDLGTEMPLATEA,
+    hWndParent: HWND,
+    lpDialogFunc: DLGPROC,
+): HWND {.winapi, inline.} =
+  CreateDialogIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+
+when winimUnicode:
+  proc CreateDialogIndirectParam*(
+    hInstance: HINSTANCE,
+    lpTemplate: LPCDLGTEMPLATEW,
+    hWndParent: HWND,
+    lpDialogFunc: DLGPROC,
+    dwInitParam: LPARAM,
+  ): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateDialogIndirectParamW".}
+
+proc CreateDialogIndirectW*(
+    hInstance: HINSTANCE,
+    lpTemplate: LPCDLGTEMPLATEW,
+    hWndParent: HWND,
+    lpDialogFunc: DLGPROC,
+): HWND {.winapi, inline.} =
+  CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+
+when winimAnsi:
+  proc DialogBoxParam*(
+    hInstance: HINSTANCE,
+    lpTemplateName: LPCSTR,
+    hWndParent: HWND,
+    lpDialogFunc: DLGPROC,
+    dwInitParam: LPARAM,
+  ): INT_PTR {.winapi, stdcall, dynlib: "user32", importc: "DialogBoxParamA".}
+
+proc DialogBoxA*(
+    hInstance: HINSTANCE, lpTemplate: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC
+): INT_PTR {.winapi, inline.} =
+  DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+
+when winimUnicode:
+  proc DialogBoxParam*(
+    hInstance: HINSTANCE,
+    lpTemplateName: LPCWSTR,
+    hWndParent: HWND,
+    lpDialogFunc: DLGPROC,
+    dwInitParam: LPARAM,
+  ): INT_PTR {.winapi, stdcall, dynlib: "user32", importc: "DialogBoxParamW".}
+
+proc DialogBoxW*(
+    hInstance: HINSTANCE, lpTemplate: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC
+): INT_PTR {.winapi, inline.} =
+  DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+
+when winimAnsi:
+  proc DialogBoxIndirectParam*(
+    hInstance: HINSTANCE,
+    hDialogTemplate: LPCDLGTEMPLATEA,
+    hWndParent: HWND,
+    lpDialogFunc: DLGPROC,
+    dwInitParam: LPARAM,
+  ): INT_PTR {.winapi, stdcall, dynlib: "user32", importc: "DialogBoxIndirectParamA".}
+
+proc DialogBoxIndirectA*(
+    hInstance: HINSTANCE,
+    lpTemplate: LPCDLGTEMPLATEA,
+    hWndParent: HWND,
+    lpDialogFunc: DLGPROC,
+): INT_PTR {.winapi, inline.} =
+  DialogBoxIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+
 when winimUnicode:
-  proc DialogBoxIndirectParam*(hInstance: HINSTANCE, hDialogTemplate: LPCDLGTEMPLATEW, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM): INT_PTR {.winapi, stdcall, dynlib: "user32", importc: "DialogBoxIndirectParamW".}
-proc DialogBoxIndirectW*(hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEW, hWndParent: HWND, lpDialogFunc: DLGPROC): INT_PTR {.winapi, inline.} = DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
-proc `mi=`*(self: var INPUT, x: MOUSEINPUT) {.inline.} = self.union1.mi = x
-proc mi*(self: INPUT): MOUSEINPUT {.inline.} = self.union1.mi
-proc mi*(self: var INPUT): var MOUSEINPUT {.inline.} = self.union1.mi
-proc `ki=`*(self: var INPUT, x: KEYBDINPUT) {.inline.} = self.union1.ki = x
-proc ki*(self: INPUT): KEYBDINPUT {.inline.} = self.union1.ki
-proc ki*(self: var INPUT): var KEYBDINPUT {.inline.} = self.union1.ki
-proc `hi=`*(self: var INPUT, x: HARDWAREINPUT) {.inline.} = self.union1.hi = x
-proc hi*(self: INPUT): HARDWAREINPUT {.inline.} = self.union1.hi
-proc hi*(self: var INPUT): var HARDWAREINPUT {.inline.} = self.union1.hi
-proc `cbSize=`*(self: var MONITORINFOEXA, x: DWORD) {.inline.} = self.struct1.cbSize = x
-proc cbSize*(self: MONITORINFOEXA): DWORD {.inline.} = self.struct1.cbSize
-proc cbSize*(self: var MONITORINFOEXA): var DWORD {.inline.} = self.struct1.cbSize
-proc `rcMonitor=`*(self: var MONITORINFOEXA, x: RECT) {.inline.} = self.struct1.rcMonitor = x
-proc rcMonitor*(self: MONITORINFOEXA): RECT {.inline.} = self.struct1.rcMonitor
-proc rcMonitor*(self: var MONITORINFOEXA): var RECT {.inline.} = self.struct1.rcMonitor
-proc `rcWork=`*(self: var MONITORINFOEXA, x: RECT) {.inline.} = self.struct1.rcWork = x
-proc rcWork*(self: MONITORINFOEXA): RECT {.inline.} = self.struct1.rcWork
-proc rcWork*(self: var MONITORINFOEXA): var RECT {.inline.} = self.struct1.rcWork
-proc `dwFlags=`*(self: var MONITORINFOEXA, x: DWORD) {.inline.} = self.struct1.dwFlags = x
-proc dwFlags*(self: MONITORINFOEXA): DWORD {.inline.} = self.struct1.dwFlags
-proc dwFlags*(self: var MONITORINFOEXA): var DWORD {.inline.} = self.struct1.dwFlags
-proc `cbSize=`*(self: var MONITORINFOEXW, x: DWORD) {.inline.} = self.struct1.cbSize = x
-proc cbSize*(self: MONITORINFOEXW): DWORD {.inline.} = self.struct1.cbSize
-proc cbSize*(self: var MONITORINFOEXW): var DWORD {.inline.} = self.struct1.cbSize
-proc `rcMonitor=`*(self: var MONITORINFOEXW, x: RECT) {.inline.} = self.struct1.rcMonitor = x
-proc rcMonitor*(self: MONITORINFOEXW): RECT {.inline.} = self.struct1.rcMonitor
-proc rcMonitor*(self: var MONITORINFOEXW): var RECT {.inline.} = self.struct1.rcMonitor
-proc `rcWork=`*(self: var MONITORINFOEXW, x: RECT) {.inline.} = self.struct1.rcWork = x
-proc rcWork*(self: MONITORINFOEXW): RECT {.inline.} = self.struct1.rcWork
-proc rcWork*(self: var MONITORINFOEXW): var RECT {.inline.} = self.struct1.rcWork
-proc `dwFlags=`*(self: var MONITORINFOEXW, x: DWORD) {.inline.} = self.struct1.dwFlags = x
-proc dwFlags*(self: MONITORINFOEXW): DWORD {.inline.} = self.struct1.dwFlags
-proc dwFlags*(self: var MONITORINFOEXW): var DWORD {.inline.} = self.struct1.dwFlags
-proc `ulButtons=`*(self: var RAWMOUSE, x: ULONG) {.inline.} = self.union1.ulButtons = x
-proc ulButtons*(self: RAWMOUSE): ULONG {.inline.} = self.union1.ulButtons
-proc ulButtons*(self: var RAWMOUSE): var ULONG {.inline.} = self.union1.ulButtons
-proc `usButtonFlags=`*(self: var RAWMOUSE, x: USHORT) {.inline.} = self.union1.struct1.usButtonFlags = x
-proc usButtonFlags*(self: RAWMOUSE): USHORT {.inline.} = self.union1.struct1.usButtonFlags
-proc usButtonFlags*(self: var RAWMOUSE): var USHORT {.inline.} = self.union1.struct1.usButtonFlags
-proc `usButtonData=`*(self: var RAWMOUSE, x: USHORT) {.inline.} = self.union1.struct1.usButtonData = x
-proc usButtonData*(self: RAWMOUSE): USHORT {.inline.} = self.union1.struct1.usButtonData
-proc usButtonData*(self: var RAWMOUSE): var USHORT {.inline.} = self.union1.struct1.usButtonData
-proc `mouse=`*(self: var RID_DEVICE_INFO, x: RID_DEVICE_INFO_MOUSE) {.inline.} = self.union1.mouse = x
-proc mouse*(self: RID_DEVICE_INFO): RID_DEVICE_INFO_MOUSE {.inline.} = self.union1.mouse
-proc mouse*(self: var RID_DEVICE_INFO): var RID_DEVICE_INFO_MOUSE {.inline.} = self.union1.mouse
-proc `keyboard=`*(self: var RID_DEVICE_INFO, x: RID_DEVICE_INFO_KEYBOARD) {.inline.} = self.union1.keyboard = x
-proc keyboard*(self: RID_DEVICE_INFO): RID_DEVICE_INFO_KEYBOARD {.inline.} = self.union1.keyboard
-proc keyboard*(self: var RID_DEVICE_INFO): var RID_DEVICE_INFO_KEYBOARD {.inline.} = self.union1.keyboard
-proc `hid=`*(self: var RID_DEVICE_INFO, x: RID_DEVICE_INFO_HID) {.inline.} = self.union1.hid = x
-proc hid*(self: RID_DEVICE_INFO): RID_DEVICE_INFO_HID {.inline.} = self.union1.hid
-proc hid*(self: var RID_DEVICE_INFO): var RID_DEVICE_INFO_HID {.inline.} = self.union1.hid
-proc `m11=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m11 = x
-proc m11*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m11
-proc m11*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m11
-proc `m12=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m12 = x
-proc m12*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m12
-proc m12*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m12
-proc `m13=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m13 = x
-proc m13*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m13
-proc m13*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m13
-proc `m14=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m14 = x
-proc m14*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m14
-proc m14*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m14
-proc `m21=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m21 = x
-proc m21*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m21
-proc m21*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m21
-proc `m22=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m22 = x
-proc m22*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m22
-proc m22*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m22
-proc `m23=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m23 = x
-proc m23*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m23
-proc m23*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m23
-proc `m24=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m24 = x
-proc m24*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m24
-proc m24*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m24
-proc `m31=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m31 = x
-proc m31*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m31
-proc m31*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m31
-proc `m32=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m32 = x
-proc m32*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m32
-proc m32*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m32
-proc `m33=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m33 = x
-proc m33*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m33
-proc m33*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m33
-proc `m34=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m34 = x
-proc m34*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m34
-proc m34*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m34
-proc `m41=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m41 = x
-proc m41*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m41
-proc m41*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m41
-proc `m42=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m42 = x
-proc m42*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m42
-proc m42*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m42
-proc `m43=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m43 = x
-proc m43*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m43
-proc m43*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m43
-proc `m44=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} = self.union1.struct1.m44 = x
-proc m44*(self: INPUT_TRANSFORM): float32 {.inline.} = self.union1.struct1.m44
-proc m44*(self: var INPUT_TRANSFORM): var float32 {.inline.} = self.union1.struct1.m44
-proc `m=`*(self: var INPUT_TRANSFORM, x: array[4, array[4, float32]]) {.inline.} = self.union1.m = x
-proc m*(self: INPUT_TRANSFORM): array[4, array[4, float32]] {.inline.} = self.union1.m
-proc m*(self: var INPUT_TRANSFORM): var array[4, array[4, float32]] {.inline.} = self.union1.m
+  proc DialogBoxIndirectParam*(
+    hInstance: HINSTANCE,
+    hDialogTemplate: LPCDLGTEMPLATEW,
+    hWndParent: HWND,
+    lpDialogFunc: DLGPROC,
+    dwInitParam: LPARAM,
+  ): INT_PTR {.winapi, stdcall, dynlib: "user32", importc: "DialogBoxIndirectParamW".}
+
+proc DialogBoxIndirectW*(
+    hInstance: HINSTANCE,
+    lpTemplate: LPCDLGTEMPLATEW,
+    hWndParent: HWND,
+    lpDialogFunc: DLGPROC,
+): INT_PTR {.winapi, inline.} =
+  DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+
+proc `mi=`*(self: var INPUT, x: MOUSEINPUT) {.inline.} =
+  self.union1.mi = x
+
+proc mi*(self: INPUT): MOUSEINPUT {.inline.} =
+  self.union1.mi
+
+proc mi*(self: var INPUT): var MOUSEINPUT {.inline.} =
+  self.union1.mi
+
+proc `ki=`*(self: var INPUT, x: KEYBDINPUT) {.inline.} =
+  self.union1.ki = x
+
+proc ki*(self: INPUT): KEYBDINPUT {.inline.} =
+  self.union1.ki
+
+proc ki*(self: var INPUT): var KEYBDINPUT {.inline.} =
+  self.union1.ki
+
+proc `hi=`*(self: var INPUT, x: HARDWAREINPUT) {.inline.} =
+  self.union1.hi = x
+
+proc hi*(self: INPUT): HARDWAREINPUT {.inline.} =
+  self.union1.hi
+
+proc hi*(self: var INPUT): var HARDWAREINPUT {.inline.} =
+  self.union1.hi
+
+proc `cbSize=`*(self: var MONITORINFOEXA, x: DWORD) {.inline.} =
+  self.struct1.cbSize = x
+
+proc cbSize*(self: MONITORINFOEXA): DWORD {.inline.} =
+  self.struct1.cbSize
+
+proc cbSize*(self: var MONITORINFOEXA): var DWORD {.inline.} =
+  self.struct1.cbSize
+
+proc `rcMonitor=`*(self: var MONITORINFOEXA, x: RECT) {.inline.} =
+  self.struct1.rcMonitor = x
+
+proc rcMonitor*(self: MONITORINFOEXA): RECT {.inline.} =
+  self.struct1.rcMonitor
+
+proc rcMonitor*(self: var MONITORINFOEXA): var RECT {.inline.} =
+  self.struct1.rcMonitor
+
+proc `rcWork=`*(self: var MONITORINFOEXA, x: RECT) {.inline.} =
+  self.struct1.rcWork = x
+
+proc rcWork*(self: MONITORINFOEXA): RECT {.inline.} =
+  self.struct1.rcWork
+
+proc rcWork*(self: var MONITORINFOEXA): var RECT {.inline.} =
+  self.struct1.rcWork
+
+proc `dwFlags=`*(self: var MONITORINFOEXA, x: DWORD) {.inline.} =
+  self.struct1.dwFlags = x
+
+proc dwFlags*(self: MONITORINFOEXA): DWORD {.inline.} =
+  self.struct1.dwFlags
+
+proc dwFlags*(self: var MONITORINFOEXA): var DWORD {.inline.} =
+  self.struct1.dwFlags
+
+proc `cbSize=`*(self: var MONITORINFOEXW, x: DWORD) {.inline.} =
+  self.struct1.cbSize = x
+
+proc cbSize*(self: MONITORINFOEXW): DWORD {.inline.} =
+  self.struct1.cbSize
+
+proc cbSize*(self: var MONITORINFOEXW): var DWORD {.inline.} =
+  self.struct1.cbSize
+
+proc `rcMonitor=`*(self: var MONITORINFOEXW, x: RECT) {.inline.} =
+  self.struct1.rcMonitor = x
+
+proc rcMonitor*(self: MONITORINFOEXW): RECT {.inline.} =
+  self.struct1.rcMonitor
+
+proc rcMonitor*(self: var MONITORINFOEXW): var RECT {.inline.} =
+  self.struct1.rcMonitor
+
+proc `rcWork=`*(self: var MONITORINFOEXW, x: RECT) {.inline.} =
+  self.struct1.rcWork = x
+
+proc rcWork*(self: MONITORINFOEXW): RECT {.inline.} =
+  self.struct1.rcWork
+
+proc rcWork*(self: var MONITORINFOEXW): var RECT {.inline.} =
+  self.struct1.rcWork
+
+proc `dwFlags=`*(self: var MONITORINFOEXW, x: DWORD) {.inline.} =
+  self.struct1.dwFlags = x
+
+proc dwFlags*(self: MONITORINFOEXW): DWORD {.inline.} =
+  self.struct1.dwFlags
+
+proc dwFlags*(self: var MONITORINFOEXW): var DWORD {.inline.} =
+  self.struct1.dwFlags
+
+proc `ulButtons=`*(self: var RAWMOUSE, x: ULONG) {.inline.} =
+  self.union1.ulButtons = x
+
+proc ulButtons*(self: RAWMOUSE): ULONG {.inline.} =
+  self.union1.ulButtons
+
+proc ulButtons*(self: var RAWMOUSE): var ULONG {.inline.} =
+  self.union1.ulButtons
+
+proc `usButtonFlags=`*(self: var RAWMOUSE, x: USHORT) {.inline.} =
+  self.union1.struct1.usButtonFlags = x
+
+proc usButtonFlags*(self: RAWMOUSE): USHORT {.inline.} =
+  self.union1.struct1.usButtonFlags
+
+proc usButtonFlags*(self: var RAWMOUSE): var USHORT {.inline.} =
+  self.union1.struct1.usButtonFlags
+
+proc `usButtonData=`*(self: var RAWMOUSE, x: USHORT) {.inline.} =
+  self.union1.struct1.usButtonData = x
+
+proc usButtonData*(self: RAWMOUSE): USHORT {.inline.} =
+  self.union1.struct1.usButtonData
+
+proc usButtonData*(self: var RAWMOUSE): var USHORT {.inline.} =
+  self.union1.struct1.usButtonData
+
+proc `mouse=`*(self: var RID_DEVICE_INFO, x: RID_DEVICE_INFO_MOUSE) {.inline.} =
+  self.union1.mouse = x
+
+proc mouse*(self: RID_DEVICE_INFO): RID_DEVICE_INFO_MOUSE {.inline.} =
+  self.union1.mouse
+
+proc mouse*(self: var RID_DEVICE_INFO): var RID_DEVICE_INFO_MOUSE {.inline.} =
+  self.union1.mouse
+
+proc `keyboard=`*(self: var RID_DEVICE_INFO, x: RID_DEVICE_INFO_KEYBOARD) {.inline.} =
+  self.union1.keyboard = x
+
+proc keyboard*(self: RID_DEVICE_INFO): RID_DEVICE_INFO_KEYBOARD {.inline.} =
+  self.union1.keyboard
+
+proc keyboard*(self: var RID_DEVICE_INFO): var RID_DEVICE_INFO_KEYBOARD {.inline.} =
+  self.union1.keyboard
+
+proc `hid=`*(self: var RID_DEVICE_INFO, x: RID_DEVICE_INFO_HID) {.inline.} =
+  self.union1.hid = x
+
+proc hid*(self: RID_DEVICE_INFO): RID_DEVICE_INFO_HID {.inline.} =
+  self.union1.hid
+
+proc hid*(self: var RID_DEVICE_INFO): var RID_DEVICE_INFO_HID {.inline.} =
+  self.union1.hid
+
+proc `m11=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m11 = x
+
+proc m11*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m11
+
+proc m11*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m11
+
+proc `m12=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m12 = x
+
+proc m12*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m12
+
+proc m12*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m12
+
+proc `m13=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m13 = x
+
+proc m13*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m13
+
+proc m13*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m13
+
+proc `m14=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m14 = x
+
+proc m14*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m14
+
+proc m14*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m14
+
+proc `m21=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m21 = x
+
+proc m21*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m21
+
+proc m21*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m21
+
+proc `m22=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m22 = x
+
+proc m22*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m22
+
+proc m22*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m22
+
+proc `m23=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m23 = x
+
+proc m23*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m23
+
+proc m23*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m23
+
+proc `m24=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m24 = x
+
+proc m24*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m24
+
+proc m24*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m24
+
+proc `m31=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m31 = x
+
+proc m31*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m31
+
+proc m31*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m31
+
+proc `m32=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m32 = x
+
+proc m32*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m32
+
+proc m32*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m32
+
+proc `m33=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m33 = x
+
+proc m33*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m33
+
+proc m33*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m33
+
+proc `m34=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m34 = x
+
+proc m34*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m34
+
+proc m34*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m34
+
+proc `m41=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m41 = x
+
+proc m41*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m41
+
+proc m41*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m41
+
+proc `m42=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m42 = x
+
+proc m42*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m42
+
+proc m42*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m42
+
+proc `m43=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m43 = x
+
+proc m43*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m43
+
+proc m43*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m43
+
+proc `m44=`*(self: var INPUT_TRANSFORM, x: float32) {.inline.} =
+  self.union1.struct1.m44 = x
+
+proc m44*(self: INPUT_TRANSFORM): float32 {.inline.} =
+  self.union1.struct1.m44
+
+proc m44*(self: var INPUT_TRANSFORM): var float32 {.inline.} =
+  self.union1.struct1.m44
+
+proc `m=`*(self: var INPUT_TRANSFORM, x: array[4, array[4, float32]]) {.inline.} =
+  self.union1.m = x
+
+proc m*(self: INPUT_TRANSFORM): array[4, array[4, float32]] {.inline.} =
+  self.union1.m
+
+proc m*(self: var INPUT_TRANSFORM): var array[4, array[4, float32]] {.inline.} =
+  self.union1.m
+
 when winimUnicode:
   type
     MENUTEMPLATE* = MENUTEMPLATEW
@@ -5073,138 +7883,660 @@
     LPSOUNDSENTRY* = LPSOUNDSENTRYW
     MONITORINFOEX* = MONITORINFOEXW
     LPMONITORINFOEX* = LPMONITORINFOEXW
-  proc wvsprintf*(P1: LPWSTR, P2: LPCWSTR, arglist: va_list): int32 {.winapi, stdcall, dynlib: "user32", importc: "wvsprintfW".}
-  proc wsprintf*(P1: LPWSTR, P2: LPCWSTR): int32 {.winapi, stdcall, dynlib: "user32", importc: "wsprintfW".}
-  proc LoadKeyboardLayout*(pwszKLID: LPCWSTR, Flags: UINT): HKL {.winapi, stdcall, dynlib: "user32", importc: "LoadKeyboardLayoutW".}
-  proc GetKeyboardLayoutName*(pwszKLID: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetKeyboardLayoutNameW".}
-  proc CreateDesktop*(lpszDesktop: LPCWSTR, lpszDevice: LPCWSTR, pDevmode: LPDEVMODEW, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES): HDESK {.winapi, stdcall, dynlib: "user32", importc: "CreateDesktopW".}
-  proc CreateDesktopEx*(lpszDesktop: LPCWSTR, lpszDevice: LPCWSTR, pDevmode: ptr DEVMODEW, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ulHeapSize: ULONG, pvoid: PVOID): HDESK {.winapi, stdcall, dynlib: "user32", importc: "CreateDesktopExW".}
-  proc OpenDesktop*(lpszDesktop: LPCWSTR, dwFlags: DWORD, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK): HDESK {.winapi, stdcall, dynlib: "user32", importc: "OpenDesktopW".}
-  proc EnumDesktops*(hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROCW, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDesktopsW".}
-  proc CreateWindowStation*(lpwinsta: LPCWSTR, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES): HWINSTA {.winapi, stdcall, dynlib: "user32", importc: "CreateWindowStationW".}
-  proc OpenWindowStation*(lpszWinSta: LPCWSTR, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK): HWINSTA {.winapi, stdcall, dynlib: "user32", importc: "OpenWindowStationW".}
-  proc EnumWindowStations*(lpEnumFunc: WINSTAENUMPROCW, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumWindowStationsW".}
-  proc GetUserObjectInformation*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetUserObjectInformationW".}
-  proc SetUserObjectInformation*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetUserObjectInformationW".}
-  proc RegisterWindowMessage*(lpString: LPCWSTR): UINT {.winapi, stdcall, dynlib: "user32", importc: "RegisterWindowMessageW".}
-  proc GetMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMessageW".}
-  proc DispatchMessage*(lpMsg: ptr MSG): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DispatchMessageW".}
-  proc PeekMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PeekMessageW".}
-  proc SendMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "SendMessageW".}
-  proc SendMessageTimeout*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, fuFlags: UINT, uTimeout: UINT, lpdwResult: PDWORD_PTR): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "SendMessageTimeoutW".}
-  proc SendNotifyMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SendNotifyMessageW".}
-  proc SendMessageCallback*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, lpResultCallBack: SENDASYNCPROC, dwData: ULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SendMessageCallbackW".}
-  proc BroadcastSystemMessageEx*(flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM, pbsmInfo: PBSMINFO): LONG32 {.winapi, stdcall, dynlib: "user32", importc: "BroadcastSystemMessageExW".}
-  proc BroadcastSystemMessage*(flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LONG32 {.winapi, stdcall, dynlib: "user32", importc: "BroadcastSystemMessageW".}
-  proc RegisterDeviceNotification*(hRecipient: HANDLE, NotificationFilter: LPVOID, Flags: DWORD): HDEVNOTIFY {.winapi, stdcall, dynlib: "user32", importc: "RegisterDeviceNotificationW".}
-  proc PostMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostMessageW".}
-  proc PostThreadMessage*(idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostThreadMessageW".}
-  proc DefWindowProc*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefWindowProcW".}
-  proc CallWindowProc*(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "CallWindowProcW".}
-  proc RegisterClass*(lpWndClass: ptr WNDCLASSW): ATOM {.winapi, stdcall, dynlib: "user32", importc: "RegisterClassW".}
-  proc UnregisterClass*(lpClassName: LPCWSTR, hInstance: HINSTANCE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "UnregisterClassW".}
-  proc GetClassInfo*(hInstance: HINSTANCE, lpClassName: LPCWSTR, lpWndClass: LPWNDCLASSW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetClassInfoW".}
-  proc RegisterClassEx*(P1: ptr WNDCLASSEXW): ATOM {.winapi, stdcall, dynlib: "user32", importc: "RegisterClassExW".}
-  proc GetClassInfoEx*(hInstance: HINSTANCE, lpszClass: LPCWSTR, lpwcx: LPWNDCLASSEXW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetClassInfoExW".}
-  proc SetDlgItemText*(hDlg: HWND, nIDDlgItem: int32, lpString: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetDlgItemTextW".}
-  proc GetDlgItemText*(hDlg: HWND, nIDDlgItem: int32, lpString: LPWSTR, cchMax: int32): UINT {.winapi, stdcall, dynlib: "user32", importc: "GetDlgItemTextW".}
-  proc SendDlgItemMessage*(hDlg: HWND, nIDDlgItem: int32, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "SendDlgItemMessageW".}
-  proc DefDlgProc*(hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefDlgProcW".}
-  proc CallMsgFilter*(lpMsg: LPMSG, nCode: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CallMsgFilterW".}
-  proc RegisterClipboardFormat*(lpszFormat: LPCWSTR): UINT {.winapi, stdcall, dynlib: "user32", importc: "RegisterClipboardFormatW".}
-  proc GetClipboardFormatName*(format: UINT, lpszFormatName: LPWSTR, cchMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetClipboardFormatNameW".}
-  proc CharToOem*(lpszSrc: LPCWSTR, lpszDst: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CharToOemW".}
-  proc OemToChar*(lpszSrc: LPCSTR, lpszDst: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "OemToCharW".}
-  proc CharToOemBuff*(lpszSrc: LPCWSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CharToOemBuffW".}
-  proc OemToCharBuff*(lpszSrc: LPCSTR, lpszDst: LPWSTR, cchDstLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "OemToCharBuffW".}
-  proc CharUpper*(lpsz: LPWSTR): LPWSTR {.winapi, stdcall, dynlib: "user32", importc: "CharUpperW".}
-  proc CharUpperBuff*(lpsz: LPWSTR, cchLength: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc: "CharUpperBuffW".}
-  proc CharLower*(lpsz: LPWSTR): LPWSTR {.winapi, stdcall, dynlib: "user32", importc: "CharLowerW".}
-  proc CharLowerBuff*(lpsz: LPWSTR, cchLength: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc: "CharLowerBuffW".}
-  proc CharNext*(lpsz: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "user32", importc: "CharNextW".}
-  proc CharPrev*(lpszStart: LPCWSTR, lpszCurrent: LPCWSTR): LPWSTR {.winapi, stdcall, dynlib: "user32", importc: "CharPrevW".}
-  proc IsCharAlpha*(ch: WCHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharAlphaW".}
-  proc IsCharAlphaNumeric*(ch: WCHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharAlphaNumericW".}
-  proc IsCharUpper*(ch: WCHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharUpperW".}
-  proc IsCharLower*(ch: WCHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharLowerW".}
-  proc GetKeyNameText*(lParam: LONG, lpString: LPWSTR, cchSize: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetKeyNameTextW".}
-  proc VkKeyScan*(ch: WCHAR): SHORT {.winapi, stdcall, dynlib: "user32", importc: "VkKeyScanW".}
-  proc VkKeyScanEx*(ch: WCHAR, dwhkl: HKL): SHORT {.winapi, stdcall, dynlib: "user32", importc: "VkKeyScanExW".}
-  proc MapVirtualKey*(uCode: UINT, uMapType: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc: "MapVirtualKeyW".}
-  proc MapVirtualKeyEx*(uCode: UINT, uMapType: UINT, dwhkl: HKL): UINT {.winapi, stdcall, dynlib: "user32", importc: "MapVirtualKeyExW".}
-  proc LoadAccelerators*(hInstance: HINSTANCE, lpTableName: LPCWSTR): HACCEL {.winapi, stdcall, dynlib: "user32", importc: "LoadAcceleratorsW".}
-  proc CreateAcceleratorTable*(paccel: LPACCEL, cAccel: int32): HACCEL {.winapi, stdcall, dynlib: "user32", importc: "CreateAcceleratorTableW".}
-  proc CopyAcceleratorTable*(hAccelSrc: HACCEL, lpAccelDst: LPACCEL, cAccelEntries: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "CopyAcceleratorTableW".}
-  proc TranslateAccelerator*(hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG): int32 {.winapi, stdcall, dynlib: "user32", importc: "TranslateAcceleratorW".}
-  proc LoadMenu*(hInstance: HINSTANCE, lpMenuName: LPCWSTR): HMENU {.winapi, stdcall, dynlib: "user32", importc: "LoadMenuW".}
-  proc LoadMenuIndirect*(lpMenuTemplate: ptr MENUTEMPLATEW): HMENU {.winapi, stdcall, dynlib: "user32", importc: "LoadMenuIndirectW".}
-  proc ChangeMenu*(hMenu: HMENU, cmd: UINT, lpszNewItem: LPCWSTR, cmdInsert: UINT, flags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "ChangeMenuW".}
-  proc GetMenuString*(hMenu: HMENU, uIDItem: UINT, lpString: LPWSTR, cchMax: int32, flags: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetMenuStringW".}
-  proc InsertMenu*(hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "InsertMenuW".}
-  proc AppendMenu*(hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "AppendMenuW".}
-  proc ModifyMenu*(hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "ModifyMenuW".}
-  proc InsertMenuItem*(hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmi: LPCMENUITEMINFOW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "InsertMenuItemW".}
-  proc GetMenuItemInfo*(hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmii: LPMENUITEMINFOW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMenuItemInfoW".}
-  proc SetMenuItemInfo*(hmenu: HMENU, item: UINT, fByPositon: WINBOOL, lpmii: LPCMENUITEMINFOW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetMenuItemInfoW".}
-  proc DrawText*(hdc: HDC, lpchText: LPCWSTR, cchText: int32, lprc: LPRECT, format: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc: "DrawTextW".}
-  proc DrawTextEx*(hdc: HDC, lpchText: LPWSTR, cchText: int32, lprc: LPRECT, format: UINT, lpdtp: LPDRAWTEXTPARAMS): int32 {.winapi, stdcall, dynlib: "user32", importc: "DrawTextExW".}
-  proc GrayString*(hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC, lpData: LPARAM, nCount: int32, X: int32, Y: int32, nWidth: int32, nHeight: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GrayStringW".}
-  proc DrawState*(hdc: HDC, hbrFore: HBRUSH, qfnCallBack: DRAWSTATEPROC, lData: LPARAM, wData: WPARAM, x: int32, y: int32, cx: int32, cy: int32, uFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "DrawStateW".}
-  proc TabbedTextOut*(hdc: HDC, x: int32, y: int32, lpString: LPCWSTR, chCount: int32, nTabPositions: int32, lpnTabStopPositions: ptr INT, nTabOrigin: int32): LONG {.winapi, stdcall, dynlib: "user32", importc: "TabbedTextOutW".}
-  proc GetTabbedTextExtent*(hdc: HDC, lpString: LPCWSTR, chCount: int32, nTabPositions: int32, lpnTabStopPositions: ptr INT): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetTabbedTextExtentW".}
-  proc SetProp*(hWnd: HWND, lpString: LPCWSTR, hData: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetPropW".}
-  proc GetProp*(hWnd: HWND, lpString: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "user32", importc: "GetPropW".}
-  proc RemoveProp*(hWnd: HWND, lpString: LPCWSTR): HANDLE {.winapi, stdcall, dynlib: "user32", importc: "RemovePropW".}
-  proc EnumPropsEx*(hWnd: HWND, lpEnumFunc: PROPENUMPROCEXW, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "user32", importc: "EnumPropsExW".}
-  proc EnumProps*(hWnd: HWND, lpEnumFunc: PROPENUMPROCW): int32 {.winapi, stdcall, dynlib: "user32", importc: "EnumPropsW".}
-  proc SetWindowText*(hWnd: HWND, lpString: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetWindowTextW".}
-  proc GetWindowText*(hWnd: HWND, lpString: LPWSTR, nMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetWindowTextW".}
-  proc GetWindowTextLength*(hWnd: HWND): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetWindowTextLengthW".}
-  proc MessageBox*(hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc: "MessageBoxW".}
-  proc MessageBoxEx*(hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT, wLanguageId: WORD): int32 {.winapi, stdcall, dynlib: "user32", importc: "MessageBoxExW".}
-  proc MessageBoxIndirect*(lpmbp: ptr MSGBOXPARAMSW): int32 {.winapi, stdcall, dynlib: "user32", importc: "MessageBoxIndirectW".}
-  proc GetWindowLong*(hWnd: HWND, nIndex: int32): LONG {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongW".}
-  proc SetWindowLong*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongW".}
-  proc GetClassLong*(hWnd: HWND, nIndex: int32): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongW".}
-  proc SetClassLong*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongW".}
-  proc FindWindow*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR): HWND {.winapi, stdcall, dynlib: "user32", importc: "FindWindowW".}
-  proc FindWindowEx*(hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCWSTR, lpszWindow: LPCWSTR): HWND {.winapi, stdcall, dynlib: "user32", importc: "FindWindowExW".}
-  proc GetClassName*(hWnd: HWND, lpClassName: LPWSTR, nMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetClassNameW".}
-  proc SetWindowsHook*(nFilterType: int32, pfnFilterProc: HOOKPROC): HHOOK {.winapi, stdcall, dynlib: "user32", importc: "SetWindowsHookW".}
-  proc SetWindowsHookEx*(idHook: int32, lpfn: HOOKPROC, hmod: HINSTANCE, dwThreadId: DWORD): HHOOK {.winapi, stdcall, dynlib: "user32", importc: "SetWindowsHookExW".}
-  proc LoadBitmap*(hInstance: HINSTANCE, lpBitmapName: LPCWSTR): HBITMAP {.winapi, stdcall, dynlib: "user32", importc: "LoadBitmapW".}
-  proc LoadCursor*(hInstance: HINSTANCE, lpCursorName: LPCWSTR): HCURSOR {.winapi, stdcall, dynlib: "user32", importc: "LoadCursorW".}
-  proc LoadCursorFromFile*(lpFileName: LPCWSTR): HCURSOR {.winapi, stdcall, dynlib: "user32", importc: "LoadCursorFromFileW".}
-  proc LoadIcon*(hInstance: HINSTANCE, lpIconName: LPCWSTR): HICON {.winapi, stdcall, dynlib: "user32", importc: "LoadIconW".}
-  proc PrivateExtractIcons*(szFileName: LPCWSTR, nIconIndex: int32, cxIcon: int32, cyIcon: int32, phicon: ptr HICON, piconid: ptr UINT, nIcons: UINT, flags: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc: "PrivateExtractIconsW".}
-  proc LoadImage*(hInst: HINSTANCE, name: LPCWSTR, `type`: UINT, cx: int32, cy: int32, fuLoad: UINT): HANDLE {.winapi, stdcall, dynlib: "user32", importc: "LoadImageW".}
-  proc GetIconInfoEx*(hicon: HICON, piconinfo: PICONINFOEXW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetIconInfoExW".}
-  proc IsDialogMessage*(hDlg: HWND, lpMsg: LPMSG): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsDialogMessageW".}
-  proc DlgDirList*(hDlg: HWND, lpPathSpec: LPWSTR, nIDListBox: int32, nIDStaticPath: int32, uFileType: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc: "DlgDirListW".}
-  proc DlgDirSelectEx*(hwndDlg: HWND, lpString: LPWSTR, chCount: int32, idListBox: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "DlgDirSelectExW".}
-  proc DlgDirListComboBox*(hDlg: HWND, lpPathSpec: LPWSTR, nIDComboBox: int32, nIDStaticPath: int32, uFiletype: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc: "DlgDirListComboBoxW".}
-  proc DlgDirSelectComboBoxEx*(hwndDlg: HWND, lpString: LPWSTR, cchOut: int32, idComboBox: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "DlgDirSelectComboBoxExW".}
-  proc DefFrameProc*(hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefFrameProcW".}
-  proc DefMDIChildProc*(hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefMDIChildProcW".}
-  proc CreateMDIWindow*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD, X: int32, Y: int32, nWidth: int32, nHeight: int32, hWndParent: HWND, hInstance: HINSTANCE, lParam: LPARAM): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateMDIWindowW".}
-  proc WinHelp*(hWndMain: HWND, lpszHelp: LPCWSTR, uCommand: UINT, dwData: ULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "WinHelpW".}
-  proc ChangeDisplaySettings*(lpDevMode: LPDEVMODEW, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsW".}
-  proc ChangeDisplaySettingsEx*(lpszDeviceName: LPCWSTR, lpDevMode: LPDEVMODEW, hwnd: HWND, dwflags: DWORD, lParam: LPVOID): LONG {.winapi, stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsExW".}
-  proc EnumDisplaySettings*(lpszDeviceName: LPCWSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDisplaySettingsW".}
-  proc EnumDisplaySettingsEx*(lpszDeviceName: LPCWSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEW, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDisplaySettingsExW".}
-  proc EnumDisplayDevices*(lpDevice: LPCWSTR, iDevNum: DWORD, lpDisplayDevice: PDISPLAY_DEVICEW, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDisplayDevicesW".}
-  proc SystemParametersInfo*(uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SystemParametersInfoW".}
-  proc GetMonitorInfo*(hMonitor: HMONITOR, lpmi: LPMONITORINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMonitorInfoW".}
-  proc GetWindowModuleFileName*(hwnd: HWND, pszFileName: LPWSTR, cchFileNameMax: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc: "GetWindowModuleFileNameW".}
-  proc RealGetWindowClass*(hwnd: HWND, ptszClassName: LPWSTR, cchClassNameMax: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc: "RealGetWindowClassW".}
-  proc GetAltTabInfo*(hwnd: HWND, iItem: int32, pati: PALTTABINFO, pszItemText: LPWSTR, cchItemText: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetAltTabInfoW".}
-  proc GetRawInputDeviceInfo*(hDevice: HANDLE, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT): UINT {.winapi, stdcall, dynlib: "user32", importc: "GetRawInputDeviceInfoW".}
-  proc PostAppMessage*(idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostThreadMessageW".}
-  proc CreateWindow*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD, x: int32, y: int32, nWidth: int32, nHeight: int32, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID): HWND {.winapi, inline.} = CreateWindowExW(0, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
-  proc CreateDialog*(hInstance: HINSTANCE, lpName: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC): HWND {.winapi, inline.} = CreateDialogParamW(hInstance, lpName, hWndParent, lpDialogFunc, 0)
-  proc CreateDialogIndirect*(hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEW, hWndParent: HWND, lpDialogFunc: DLGPROC): HWND {.winapi, inline.} = CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
-  proc DialogBox*(hInstance: HINSTANCE, lpTemplate: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC): INT_PTR {.winapi, inline.} = DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
-  proc DialogBoxIndirect*(hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEW, hWndParent: HWND, lpDialogFunc: DLGPROC): INT_PTR {.winapi, inline.} = DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+
+  proc wvsprintf*(
+    P1: LPWSTR, P2: LPCWSTR, arglist: va_list
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "wvsprintfW".}
+
+  proc wsprintf*(
+    P1: LPWSTR, P2: LPCWSTR
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "wsprintfW".}
+
+  proc LoadKeyboardLayout*(
+    pwszKLID: LPCWSTR, Flags: UINT
+  ): HKL {.winapi, stdcall, dynlib: "user32", importc: "LoadKeyboardLayoutW".}
+
+  proc GetKeyboardLayoutName*(
+    pwszKLID: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetKeyboardLayoutNameW".}
+
+  proc CreateDesktop*(
+    lpszDesktop: LPCWSTR,
+    lpszDevice: LPCWSTR,
+    pDevmode: LPDEVMODEW,
+    dwFlags: DWORD,
+    dwDesiredAccess: ACCESS_MASK,
+    lpsa: LPSECURITY_ATTRIBUTES,
+  ): HDESK {.winapi, stdcall, dynlib: "user32", importc: "CreateDesktopW".}
+
+  proc CreateDesktopEx*(
+    lpszDesktop: LPCWSTR,
+    lpszDevice: LPCWSTR,
+    pDevmode: ptr DEVMODEW,
+    dwFlags: DWORD,
+    dwDesiredAccess: ACCESS_MASK,
+    lpsa: LPSECURITY_ATTRIBUTES,
+    ulHeapSize: ULONG,
+    pvoid: PVOID,
+  ): HDESK {.winapi, stdcall, dynlib: "user32", importc: "CreateDesktopExW".}
+
+  proc OpenDesktop*(
+    lpszDesktop: LPCWSTR,
+    dwFlags: DWORD,
+    fInherit: WINBOOL,
+    dwDesiredAccess: ACCESS_MASK,
+  ): HDESK {.winapi, stdcall, dynlib: "user32", importc: "OpenDesktopW".}
+
+  proc EnumDesktops*(
+    hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROCW, lParam: LPARAM
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDesktopsW".}
+
+  proc CreateWindowStation*(
+    lpwinsta: LPCWSTR,
+    dwFlags: DWORD,
+    dwDesiredAccess: ACCESS_MASK,
+    lpsa: LPSECURITY_ATTRIBUTES,
+  ): HWINSTA {.winapi, stdcall, dynlib: "user32", importc: "CreateWindowStationW".}
+
+  proc OpenWindowStation*(
+    lpszWinSta: LPCWSTR, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK
+  ): HWINSTA {.winapi, stdcall, dynlib: "user32", importc: "OpenWindowStationW".}
+
+  proc EnumWindowStations*(
+    lpEnumFunc: WINSTAENUMPROCW, lParam: LPARAM
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumWindowStationsW".}
+
+  proc GetUserObjectInformation*(
+    hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD, lpnLengthNeeded: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetUserObjectInformationW".}
+
+  proc SetUserObjectInformation*(
+    hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetUserObjectInformationW".}
+
+  proc RegisterWindowMessage*(
+    lpString: LPCWSTR
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "RegisterWindowMessageW".}
+
+  proc GetMessage*(
+    lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMessageW".}
+
+  proc DispatchMessage*(
+    lpMsg: ptr MSG
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DispatchMessageW".}
+
+  proc PeekMessage*(
+    lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PeekMessageW".}
+
+  proc SendMessage*(
+    hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "SendMessageW".}
+
+  proc SendMessageTimeout*(
+    hWnd: HWND,
+    Msg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    fuFlags: UINT,
+    uTimeout: UINT,
+    lpdwResult: PDWORD_PTR,
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "SendMessageTimeoutW".}
+
+  proc SendNotifyMessage*(
+    hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SendNotifyMessageW".}
+
+  proc SendMessageCallback*(
+    hWnd: HWND,
+    Msg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    lpResultCallBack: SENDASYNCPROC,
+    dwData: ULONG_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SendMessageCallbackW".}
+
+  proc BroadcastSystemMessageEx*(
+    flags: DWORD,
+    lpInfo: LPDWORD,
+    Msg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    pbsmInfo: PBSMINFO,
+  ): LONG32 {.winapi, stdcall, dynlib: "user32", importc: "BroadcastSystemMessageExW".}
+
+  proc BroadcastSystemMessage*(
+    flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LONG32 {.winapi, stdcall, dynlib: "user32", importc: "BroadcastSystemMessageW".}
+
+  proc RegisterDeviceNotification*(
+    hRecipient: HANDLE, NotificationFilter: LPVOID, Flags: DWORD
+  ): HDEVNOTIFY {.
+    winapi, stdcall, dynlib: "user32", importc: "RegisterDeviceNotificationW"
+  .}
+
+  proc PostMessage*(
+    hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostMessageW".}
+
+  proc PostThreadMessage*(
+    idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostThreadMessageW".}
+
+  proc DefWindowProc*(
+    hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefWindowProcW".}
+
+  proc CallWindowProc*(
+    lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "CallWindowProcW".}
+
+  proc RegisterClass*(
+    lpWndClass: ptr WNDCLASSW
+  ): ATOM {.winapi, stdcall, dynlib: "user32", importc: "RegisterClassW".}
+
+  proc UnregisterClass*(
+    lpClassName: LPCWSTR, hInstance: HINSTANCE
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "UnregisterClassW".}
+
+  proc GetClassInfo*(
+    hInstance: HINSTANCE, lpClassName: LPCWSTR, lpWndClass: LPWNDCLASSW
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetClassInfoW".}
+
+  proc RegisterClassEx*(
+    P1: ptr WNDCLASSEXW
+  ): ATOM {.winapi, stdcall, dynlib: "user32", importc: "RegisterClassExW".}
+
+  proc GetClassInfoEx*(
+    hInstance: HINSTANCE, lpszClass: LPCWSTR, lpwcx: LPWNDCLASSEXW
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetClassInfoExW".}
+
+  proc SetDlgItemText*(
+    hDlg: HWND, nIDDlgItem: int32, lpString: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetDlgItemTextW".}
+
+  proc GetDlgItemText*(
+    hDlg: HWND, nIDDlgItem: int32, lpString: LPWSTR, cchMax: int32
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "GetDlgItemTextW".}
+
+  proc SendDlgItemMessage*(
+    hDlg: HWND, nIDDlgItem: int32, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "SendDlgItemMessageW".}
+
+  proc DefDlgProc*(
+    hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefDlgProcW".}
+
+  proc CallMsgFilter*(
+    lpMsg: LPMSG, nCode: int32
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CallMsgFilterW".}
+
+  proc RegisterClipboardFormat*(
+    lpszFormat: LPCWSTR
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "RegisterClipboardFormatW".}
+
+  proc GetClipboardFormatName*(
+    format: UINT, lpszFormatName: LPWSTR, cchMaxCount: int32
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetClipboardFormatNameW".}
+
+  proc CharToOem*(
+    lpszSrc: LPCWSTR, lpszDst: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CharToOemW".}
+
+  proc OemToChar*(
+    lpszSrc: LPCSTR, lpszDst: LPWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "OemToCharW".}
+
+  proc CharToOemBuff*(
+    lpszSrc: LPCWSTR, lpszDst: LPSTR, cchDstLength: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CharToOemBuffW".}
+
+  proc OemToCharBuff*(
+    lpszSrc: LPCSTR, lpszDst: LPWSTR, cchDstLength: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "OemToCharBuffW".}
+
+  proc CharUpper*(
+    lpsz: LPWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "user32", importc: "CharUpperW".}
+
+  proc CharUpperBuff*(
+    lpsz: LPWSTR, cchLength: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "CharUpperBuffW".}
+
+  proc CharLower*(
+    lpsz: LPWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "user32", importc: "CharLowerW".}
+
+  proc CharLowerBuff*(
+    lpsz: LPWSTR, cchLength: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "CharLowerBuffW".}
+
+  proc CharNext*(
+    lpsz: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "user32", importc: "CharNextW".}
+
+  proc CharPrev*(
+    lpszStart: LPCWSTR, lpszCurrent: LPCWSTR
+  ): LPWSTR {.winapi, stdcall, dynlib: "user32", importc: "CharPrevW".}
+
+  proc IsCharAlpha*(
+    ch: WCHAR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharAlphaW".}
+
+  proc IsCharAlphaNumeric*(
+    ch: WCHAR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharAlphaNumericW".}
+
+  proc IsCharUpper*(
+    ch: WCHAR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharUpperW".}
+
+  proc IsCharLower*(
+    ch: WCHAR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharLowerW".}
+
+  proc GetKeyNameText*(
+    lParam: LONG, lpString: LPWSTR, cchSize: int32
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetKeyNameTextW".}
+
+  proc VkKeyScan*(
+    ch: WCHAR
+  ): SHORT {.winapi, stdcall, dynlib: "user32", importc: "VkKeyScanW".}
+
+  proc VkKeyScanEx*(
+    ch: WCHAR, dwhkl: HKL
+  ): SHORT {.winapi, stdcall, dynlib: "user32", importc: "VkKeyScanExW".}
+
+  proc MapVirtualKey*(
+    uCode: UINT, uMapType: UINT
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "MapVirtualKeyW".}
+
+  proc MapVirtualKeyEx*(
+    uCode: UINT, uMapType: UINT, dwhkl: HKL
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "MapVirtualKeyExW".}
+
+  proc LoadAccelerators*(
+    hInstance: HINSTANCE, lpTableName: LPCWSTR
+  ): HACCEL {.winapi, stdcall, dynlib: "user32", importc: "LoadAcceleratorsW".}
+
+  proc CreateAcceleratorTable*(
+    paccel: LPACCEL, cAccel: int32
+  ): HACCEL {.winapi, stdcall, dynlib: "user32", importc: "CreateAcceleratorTableW".}
+
+  proc CopyAcceleratorTable*(
+    hAccelSrc: HACCEL, lpAccelDst: LPACCEL, cAccelEntries: int32
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "CopyAcceleratorTableW".}
+
+  proc TranslateAccelerator*(
+    hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "TranslateAcceleratorW".}
+
+  proc LoadMenu*(
+    hInstance: HINSTANCE, lpMenuName: LPCWSTR
+  ): HMENU {.winapi, stdcall, dynlib: "user32", importc: "LoadMenuW".}
+
+  proc LoadMenuIndirect*(
+    lpMenuTemplate: ptr MENUTEMPLATEW
+  ): HMENU {.winapi, stdcall, dynlib: "user32", importc: "LoadMenuIndirectW".}
+
+  proc ChangeMenu*(
+    hMenu: HMENU, cmd: UINT, lpszNewItem: LPCWSTR, cmdInsert: UINT, flags: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "ChangeMenuW".}
+
+  proc GetMenuString*(
+    hMenu: HMENU, uIDItem: UINT, lpString: LPWSTR, cchMax: int32, flags: UINT
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetMenuStringW".}
+
+  proc InsertMenu*(
+    hMenu: HMENU,
+    uPosition: UINT,
+    uFlags: UINT,
+    uIDNewItem: UINT_PTR,
+    lpNewItem: LPCWSTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "InsertMenuW".}
+
+  proc AppendMenu*(
+    hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "AppendMenuW".}
+
+  proc ModifyMenu*(
+    hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "ModifyMenuW".}
+
+  proc InsertMenuItem*(
+    hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmi: LPCMENUITEMINFOW
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "InsertMenuItemW".}
+
+  proc GetMenuItemInfo*(
+    hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmii: LPMENUITEMINFOW
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMenuItemInfoW".}
+
+  proc SetMenuItemInfo*(
+    hmenu: HMENU, item: UINT, fByPositon: WINBOOL, lpmii: LPCMENUITEMINFOW
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetMenuItemInfoW".}
+
+  proc DrawText*(
+    hdc: HDC, lpchText: LPCWSTR, cchText: int32, lprc: LPRECT, format: UINT
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "DrawTextW".}
+
+  proc DrawTextEx*(
+    hdc: HDC,
+    lpchText: LPWSTR,
+    cchText: int32,
+    lprc: LPRECT,
+    format: UINT,
+    lpdtp: LPDRAWTEXTPARAMS,
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "DrawTextExW".}
+
+  proc GrayString*(
+    hDC: HDC,
+    hBrush: HBRUSH,
+    lpOutputFunc: GRAYSTRINGPROC,
+    lpData: LPARAM,
+    nCount: int32,
+    X: int32,
+    Y: int32,
+    nWidth: int32,
+    nHeight: int32,
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GrayStringW".}
+
+  proc DrawState*(
+    hdc: HDC,
+    hbrFore: HBRUSH,
+    qfnCallBack: DRAWSTATEPROC,
+    lData: LPARAM,
+    wData: WPARAM,
+    x: int32,
+    y: int32,
+    cx: int32,
+    cy: int32,
+    uFlags: UINT,
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "DrawStateW".}
+
+  proc TabbedTextOut*(
+    hdc: HDC,
+    x: int32,
+    y: int32,
+    lpString: LPCWSTR,
+    chCount: int32,
+    nTabPositions: int32,
+    lpnTabStopPositions: ptr INT,
+    nTabOrigin: int32,
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "TabbedTextOutW".}
+
+  proc GetTabbedTextExtent*(
+    hdc: HDC,
+    lpString: LPCWSTR,
+    chCount: int32,
+    nTabPositions: int32,
+    lpnTabStopPositions: ptr INT,
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetTabbedTextExtentW".}
+
+  proc SetProp*(
+    hWnd: HWND, lpString: LPCWSTR, hData: HANDLE
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetPropW".}
+
+  proc GetProp*(
+    hWnd: HWND, lpString: LPCWSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "user32", importc: "GetPropW".}
+
+  proc RemoveProp*(
+    hWnd: HWND, lpString: LPCWSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "user32", importc: "RemovePropW".}
+
+  proc EnumPropsEx*(
+    hWnd: HWND, lpEnumFunc: PROPENUMPROCEXW, lParam: LPARAM
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "EnumPropsExW".}
+
+  proc EnumProps*(
+    hWnd: HWND, lpEnumFunc: PROPENUMPROCW
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "EnumPropsW".}
+
+  proc SetWindowText*(
+    hWnd: HWND, lpString: LPCWSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetWindowTextW".}
+
+  proc GetWindowText*(
+    hWnd: HWND, lpString: LPWSTR, nMaxCount: int32
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetWindowTextW".}
+
+  proc GetWindowTextLength*(
+    hWnd: HWND
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetWindowTextLengthW".}
+
+  proc MessageBox*(
+    hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "MessageBoxW".}
+
+  proc MessageBoxEx*(
+    hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT, wLanguageId: WORD
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "MessageBoxExW".}
+
+  proc MessageBoxIndirect*(
+    lpmbp: ptr MSGBOXPARAMSW
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "MessageBoxIndirectW".}
+
+  proc GetWindowLong*(
+    hWnd: HWND, nIndex: int32
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongW".}
+
+  proc SetWindowLong*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongW".}
+
+  proc GetClassLong*(
+    hWnd: HWND, nIndex: int32
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongW".}
+
+  proc SetClassLong*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongW".}
+
+  proc FindWindow*(
+    lpClassName: LPCWSTR, lpWindowName: LPCWSTR
+  ): HWND {.winapi, stdcall, dynlib: "user32", importc: "FindWindowW".}
+
+  proc FindWindowEx*(
+    hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCWSTR, lpszWindow: LPCWSTR
+  ): HWND {.winapi, stdcall, dynlib: "user32", importc: "FindWindowExW".}
+
+  proc GetClassName*(
+    hWnd: HWND, lpClassName: LPWSTR, nMaxCount: int32
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetClassNameW".}
+
+  proc SetWindowsHook*(
+    nFilterType: int32, pfnFilterProc: HOOKPROC
+  ): HHOOK {.winapi, stdcall, dynlib: "user32", importc: "SetWindowsHookW".}
+
+  proc SetWindowsHookEx*(
+    idHook: int32, lpfn: HOOKPROC, hmod: HINSTANCE, dwThreadId: DWORD
+  ): HHOOK {.winapi, stdcall, dynlib: "user32", importc: "SetWindowsHookExW".}
+
+  proc LoadBitmap*(
+    hInstance: HINSTANCE, lpBitmapName: LPCWSTR
+  ): HBITMAP {.winapi, stdcall, dynlib: "user32", importc: "LoadBitmapW".}
+
+  proc LoadCursor*(
+    hInstance: HINSTANCE, lpCursorName: LPCWSTR
+  ): HCURSOR {.winapi, stdcall, dynlib: "user32", importc: "LoadCursorW".}
+
+  proc LoadCursorFromFile*(
+    lpFileName: LPCWSTR
+  ): HCURSOR {.winapi, stdcall, dynlib: "user32", importc: "LoadCursorFromFileW".}
+
+  proc LoadIcon*(
+    hInstance: HINSTANCE, lpIconName: LPCWSTR
+  ): HICON {.winapi, stdcall, dynlib: "user32", importc: "LoadIconW".}
+
+  proc PrivateExtractIcons*(
+    szFileName: LPCWSTR,
+    nIconIndex: int32,
+    cxIcon: int32,
+    cyIcon: int32,
+    phicon: ptr HICON,
+    piconid: ptr UINT,
+    nIcons: UINT,
+    flags: UINT,
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "PrivateExtractIconsW".}
+
+  proc LoadImage*(
+    hInst: HINSTANCE, name: LPCWSTR, `type`: UINT, cx: int32, cy: int32, fuLoad: UINT
+  ): HANDLE {.winapi, stdcall, dynlib: "user32", importc: "LoadImageW".}
+
+  proc GetIconInfoEx*(
+    hicon: HICON, piconinfo: PICONINFOEXW
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetIconInfoExW".}
+
+  proc IsDialogMessage*(
+    hDlg: HWND, lpMsg: LPMSG
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsDialogMessageW".}
+
+  proc DlgDirList*(
+    hDlg: HWND,
+    lpPathSpec: LPWSTR,
+    nIDListBox: int32,
+    nIDStaticPath: int32,
+    uFileType: UINT,
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "DlgDirListW".}
+
+  proc DlgDirSelectEx*(
+    hwndDlg: HWND, lpString: LPWSTR, chCount: int32, idListBox: int32
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "DlgDirSelectExW".}
+
+  proc DlgDirListComboBox*(
+    hDlg: HWND,
+    lpPathSpec: LPWSTR,
+    nIDComboBox: int32,
+    nIDStaticPath: int32,
+    uFiletype: UINT,
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "DlgDirListComboBoxW".}
+
+  proc DlgDirSelectComboBoxEx*(
+    hwndDlg: HWND, lpString: LPWSTR, cchOut: int32, idComboBox: int32
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "DlgDirSelectComboBoxExW".}
+
+  proc DefFrameProc*(
+    hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefFrameProcW".}
+
+  proc DefMDIChildProc*(
+    hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefMDIChildProcW".}
+
+  proc CreateMDIWindow*(
+    lpClassName: LPCWSTR,
+    lpWindowName: LPCWSTR,
+    dwStyle: DWORD,
+    X: int32,
+    Y: int32,
+    nWidth: int32,
+    nHeight: int32,
+    hWndParent: HWND,
+    hInstance: HINSTANCE,
+    lParam: LPARAM,
+  ): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateMDIWindowW".}
+
+  proc WinHelp*(
+    hWndMain: HWND, lpszHelp: LPCWSTR, uCommand: UINT, dwData: ULONG_PTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "WinHelpW".}
+
+  proc ChangeDisplaySettings*(
+    lpDevMode: LPDEVMODEW, dwFlags: DWORD
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsW".}
+
+  proc ChangeDisplaySettingsEx*(
+    lpszDeviceName: LPCWSTR,
+    lpDevMode: LPDEVMODEW,
+    hwnd: HWND,
+    dwflags: DWORD,
+    lParam: LPVOID,
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsExW".}
+
+  proc EnumDisplaySettings*(
+    lpszDeviceName: LPCWSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEW
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDisplaySettingsW".}
+
+  proc EnumDisplaySettingsEx*(
+    lpszDeviceName: LPCWSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEW, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDisplaySettingsExW".}
+
+  proc EnumDisplayDevices*(
+    lpDevice: LPCWSTR, iDevNum: DWORD, lpDisplayDevice: PDISPLAY_DEVICEW, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDisplayDevicesW".}
+
+  proc SystemParametersInfo*(
+    uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SystemParametersInfoW".}
+
+  proc GetMonitorInfo*(
+    hMonitor: HMONITOR, lpmi: LPMONITORINFO
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMonitorInfoW".}
+
+  proc GetWindowModuleFileName*(
+    hwnd: HWND, pszFileName: LPWSTR, cchFileNameMax: UINT
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "GetWindowModuleFileNameW".}
+
+  proc RealGetWindowClass*(
+    hwnd: HWND, ptszClassName: LPWSTR, cchClassNameMax: UINT
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "RealGetWindowClassW".}
+
+  proc GetAltTabInfo*(
+    hwnd: HWND, iItem: int32, pati: PALTTABINFO, pszItemText: LPWSTR, cchItemText: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetAltTabInfoW".}
+
+  proc GetRawInputDeviceInfo*(
+    hDevice: HANDLE, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "GetRawInputDeviceInfoW".}
+
+  proc PostAppMessage*(
+    idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostThreadMessageW".}
+
+  proc CreateWindow*(
+      lpClassName: LPCWSTR,
+      lpWindowName: LPCWSTR,
+      dwStyle: DWORD,
+      x: int32,
+      y: int32,
+      nWidth: int32,
+      nHeight: int32,
+      hWndParent: HWND,
+      hMenu: HMENU,
+      hInstance: HINSTANCE,
+      lpParam: LPVOID,
+  ): HWND {.winapi, inline.} =
+    CreateWindowExW(
+      0, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu,
+      hInstance, lpParam,
+    )
+
+  proc CreateDialog*(
+      hInstance: HINSTANCE, lpName: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC
+  ): HWND {.winapi, inline.} =
+    CreateDialogParamW(hInstance, lpName, hWndParent, lpDialogFunc, 0)
+
+  proc CreateDialogIndirect*(
+      hInstance: HINSTANCE,
+      lpTemplate: LPCDLGTEMPLATEW,
+      hWndParent: HWND,
+      lpDialogFunc: DLGPROC,
+  ): HWND {.winapi, inline.} =
+    CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+
+  proc DialogBox*(
+      hInstance: HINSTANCE, lpTemplate: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC
+  ): INT_PTR {.winapi, inline.} =
+    DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+
+  proc DialogBoxIndirect*(
+      hInstance: HINSTANCE,
+      lpTemplate: LPCDLGTEMPLATEW,
+      hWndParent: HWND,
+      lpDialogFunc: DLGPROC,
+  ): INT_PTR {.winapi, inline.} =
+    DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+
 when winimAnsi:
   type
     MENUTEMPLATE* = MENUTEMPLATEA
@@ -5260,179 +8592,789 @@
     LPSOUNDSENTRY* = LPSOUNDSENTRYA
     MONITORINFOEX* = MONITORINFOEXA
     LPMONITORINFOEX* = LPMONITORINFOEXA
-  proc wvsprintf*(P1: LPSTR, P2: LPCSTR, arglist: va_list): int32 {.winapi, stdcall, dynlib: "user32", importc: "wvsprintfA".}
-  proc wsprintf*(P1: LPSTR, P2: LPCSTR): int32 {.winapi, stdcall, dynlib: "user32", importc: "wsprintfA".}
-  proc LoadKeyboardLayout*(pwszKLID: LPCSTR, Flags: UINT): HKL {.winapi, stdcall, dynlib: "user32", importc: "LoadKeyboardLayoutA".}
-  proc GetKeyboardLayoutName*(pwszKLID: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetKeyboardLayoutNameA".}
-  proc CreateDesktop*(lpszDesktop: LPCSTR, lpszDevice: LPCSTR, pDevmode: LPDEVMODEA, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES): HDESK {.winapi, stdcall, dynlib: "user32", importc: "CreateDesktopA".}
-  proc CreateDesktopEx*(lpszDesktop: LPCSTR, lpszDevice: LPCSTR, pDevmode: ptr DEVMODEA, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ulHeapSize: ULONG, pvoid: PVOID): HDESK {.winapi, stdcall, dynlib: "user32", importc: "CreateDesktopExA".}
-  proc OpenDesktop*(lpszDesktop: LPCSTR, dwFlags: DWORD, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK): HDESK {.winapi, stdcall, dynlib: "user32", importc: "OpenDesktopA".}
-  proc EnumDesktops*(hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROCA, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDesktopsA".}
-  proc CreateWindowStation*(lpwinsta: LPCSTR, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES): HWINSTA {.winapi, stdcall, dynlib: "user32", importc: "CreateWindowStationA".}
-  proc OpenWindowStation*(lpszWinSta: LPCSTR, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK): HWINSTA {.winapi, stdcall, dynlib: "user32", importc: "OpenWindowStationA".}
-  proc EnumWindowStations*(lpEnumFunc: WINSTAENUMPROCA, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumWindowStationsA".}
-  proc GetUserObjectInformation*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetUserObjectInformationA".}
-  proc SetUserObjectInformation*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetUserObjectInformationA".}
-  proc RegisterWindowMessage*(lpString: LPCSTR): UINT {.winapi, stdcall, dynlib: "user32", importc: "RegisterWindowMessageA".}
-  proc GetMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMessageA".}
-  proc DispatchMessage*(lpMsg: ptr MSG): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DispatchMessageA".}
-  proc PeekMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PeekMessageA".}
-  proc SendMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "SendMessageA".}
-  proc SendMessageTimeout*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, fuFlags: UINT, uTimeout: UINT, lpdwResult: PDWORD_PTR): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "SendMessageTimeoutA".}
-  proc SendNotifyMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SendNotifyMessageA".}
-  proc SendMessageCallback*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, lpResultCallBack: SENDASYNCPROC, dwData: ULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SendMessageCallbackA".}
-  proc BroadcastSystemMessageEx*(flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM, pbsmInfo: PBSMINFO): LONG32 {.winapi, stdcall, dynlib: "user32", importc: "BroadcastSystemMessageExA".}
-  proc BroadcastSystemMessage*(flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LONG32 {.winapi, stdcall, dynlib: "user32", importc: "BroadcastSystemMessageA".}
-  proc RegisterDeviceNotification*(hRecipient: HANDLE, NotificationFilter: LPVOID, Flags: DWORD): HDEVNOTIFY {.winapi, stdcall, dynlib: "user32", importc: "RegisterDeviceNotificationA".}
-  proc PostMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostMessageA".}
-  proc PostThreadMessage*(idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostThreadMessageA".}
-  proc DefWindowProc*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefWindowProcA".}
-  proc CallWindowProc*(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "CallWindowProcA".}
-  proc RegisterClass*(lpWndClass: ptr WNDCLASSA): ATOM {.winapi, stdcall, dynlib: "user32", importc: "RegisterClassA".}
-  proc UnregisterClass*(lpClassName: LPCSTR, hInstance: HINSTANCE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "UnregisterClassA".}
-  proc GetClassInfo*(hInstance: HINSTANCE, lpClassName: LPCSTR, lpWndClass: LPWNDCLASSA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetClassInfoA".}
-  proc RegisterClassEx*(P1: ptr WNDCLASSEXA): ATOM {.winapi, stdcall, dynlib: "user32", importc: "RegisterClassExA".}
-  proc GetClassInfoEx*(hInstance: HINSTANCE, lpszClass: LPCSTR, lpwcx: LPWNDCLASSEXA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetClassInfoExA".}
-  proc SetDlgItemText*(hDlg: HWND, nIDDlgItem: int32, lpString: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetDlgItemTextA".}
-  proc GetDlgItemText*(hDlg: HWND, nIDDlgItem: int32, lpString: LPSTR, cchMax: int32): UINT {.winapi, stdcall, dynlib: "user32", importc: "GetDlgItemTextA".}
-  proc SendDlgItemMessage*(hDlg: HWND, nIDDlgItem: int32, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "SendDlgItemMessageA".}
-  proc DefDlgProc*(hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefDlgProcA".}
-  proc CallMsgFilter*(lpMsg: LPMSG, nCode: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CallMsgFilterA".}
-  proc RegisterClipboardFormat*(lpszFormat: LPCSTR): UINT {.winapi, stdcall, dynlib: "user32", importc: "RegisterClipboardFormatA".}
-  proc GetClipboardFormatName*(format: UINT, lpszFormatName: LPSTR, cchMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetClipboardFormatNameA".}
-  proc CharToOem*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CharToOemA".}
-  proc OemToChar*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "OemToCharA".}
-  proc CharToOemBuff*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CharToOemBuffA".}
-  proc OemToCharBuff*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "OemToCharBuffA".}
-  proc CharUpper*(lpsz: LPSTR): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharUpperA".}
-  proc CharUpperBuff*(lpsz: LPSTR, cchLength: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc: "CharUpperBuffA".}
-  proc CharLower*(lpsz: LPSTR): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharLowerA".}
-  proc CharLowerBuff*(lpsz: LPSTR, cchLength: DWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc: "CharLowerBuffA".}
-  proc CharNext*(lpsz: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharNextA".}
-  proc CharPrev*(lpszStart: LPCSTR, lpszCurrent: LPCSTR): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharPrevA".}
-  proc IsCharAlpha*(ch: CHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharAlphaA".}
-  proc IsCharAlphaNumeric*(ch: CHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharAlphaNumericA".}
-  proc IsCharUpper*(ch: CHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharUpperA".}
-  proc IsCharLower*(ch: CHAR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharLowerA".}
-  proc GetKeyNameText*(lParam: LONG, lpString: LPSTR, cchSize: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetKeyNameTextA".}
-  proc VkKeyScan*(ch: CHAR): SHORT {.winapi, stdcall, dynlib: "user32", importc: "VkKeyScanA".}
-  proc VkKeyScanEx*(ch: CHAR, dwhkl: HKL): SHORT {.winapi, stdcall, dynlib: "user32", importc: "VkKeyScanExA".}
-  proc MapVirtualKey*(uCode: UINT, uMapType: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc: "MapVirtualKeyA".}
-  proc MapVirtualKeyEx*(uCode: UINT, uMapType: UINT, dwhkl: HKL): UINT {.winapi, stdcall, dynlib: "user32", importc: "MapVirtualKeyExA".}
-  proc LoadAccelerators*(hInstance: HINSTANCE, lpTableName: LPCSTR): HACCEL {.winapi, stdcall, dynlib: "user32", importc: "LoadAcceleratorsA".}
-  proc CreateAcceleratorTable*(paccel: LPACCEL, cAccel: int32): HACCEL {.winapi, stdcall, dynlib: "user32", importc: "CreateAcceleratorTableA".}
-  proc CopyAcceleratorTable*(hAccelSrc: HACCEL, lpAccelDst: LPACCEL, cAccelEntries: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "CopyAcceleratorTableA".}
-  proc TranslateAccelerator*(hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG): int32 {.winapi, stdcall, dynlib: "user32", importc: "TranslateAcceleratorA".}
-  proc LoadMenu*(hInstance: HINSTANCE, lpMenuName: LPCSTR): HMENU {.winapi, stdcall, dynlib: "user32", importc: "LoadMenuA".}
-  proc LoadMenuIndirect*(lpMenuTemplate: ptr MENUTEMPLATEA): HMENU {.winapi, stdcall, dynlib: "user32", importc: "LoadMenuIndirectA".}
-  proc ChangeMenu*(hMenu: HMENU, cmd: UINT, lpszNewItem: LPCSTR, cmdInsert: UINT, flags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "ChangeMenuA".}
-  proc GetMenuString*(hMenu: HMENU, uIDItem: UINT, lpString: LPSTR, cchMax: int32, flags: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetMenuStringA".}
-  proc InsertMenu*(hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "InsertMenuA".}
-  proc AppendMenu*(hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "AppendMenuA".}
-  proc ModifyMenu*(hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "ModifyMenuA".}
-  proc InsertMenuItem*(hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmi: LPCMENUITEMINFOA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "InsertMenuItemA".}
-  proc GetMenuItemInfo*(hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmii: LPMENUITEMINFOA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMenuItemInfoA".}
-  proc SetMenuItemInfo*(hmenu: HMENU, item: UINT, fByPositon: WINBOOL, lpmii: LPCMENUITEMINFOA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetMenuItemInfoA".}
-  proc DrawText*(hdc: HDC, lpchText: LPCSTR, cchText: int32, lprc: LPRECT, format: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc: "DrawTextA".}
-  proc DrawTextEx*(hdc: HDC, lpchText: LPSTR, cchText: int32, lprc: LPRECT, format: UINT, lpdtp: LPDRAWTEXTPARAMS): int32 {.winapi, stdcall, dynlib: "user32", importc: "DrawTextExA".}
-  proc GrayString*(hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC, lpData: LPARAM, nCount: int32, X: int32, Y: int32, nWidth: int32, nHeight: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GrayStringA".}
-  proc DrawState*(hdc: HDC, hbrFore: HBRUSH, qfnCallBack: DRAWSTATEPROC, lData: LPARAM, wData: WPARAM, x: int32, y: int32, cx: int32, cy: int32, uFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "DrawStateA".}
-  proc TabbedTextOut*(hdc: HDC, x: int32, y: int32, lpString: LPCSTR, chCount: int32, nTabPositions: int32, lpnTabStopPositions: ptr INT, nTabOrigin: int32): LONG {.winapi, stdcall, dynlib: "user32", importc: "TabbedTextOutA".}
-  proc GetTabbedTextExtent*(hdc: HDC, lpString: LPCSTR, chCount: int32, nTabPositions: int32, lpnTabStopPositions: ptr INT): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetTabbedTextExtentA".}
-  proc SetProp*(hWnd: HWND, lpString: LPCSTR, hData: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetPropA".}
-  proc GetProp*(hWnd: HWND, lpString: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "user32", importc: "GetPropA".}
-  proc RemoveProp*(hWnd: HWND, lpString: LPCSTR): HANDLE {.winapi, stdcall, dynlib: "user32", importc: "RemovePropA".}
-  proc EnumPropsEx*(hWnd: HWND, lpEnumFunc: PROPENUMPROCEXA, lParam: LPARAM): int32 {.winapi, stdcall, dynlib: "user32", importc: "EnumPropsExA".}
-  proc EnumProps*(hWnd: HWND, lpEnumFunc: PROPENUMPROCA): int32 {.winapi, stdcall, dynlib: "user32", importc: "EnumPropsA".}
-  proc SetWindowText*(hWnd: HWND, lpString: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetWindowTextA".}
-  proc GetWindowText*(hWnd: HWND, lpString: LPSTR, nMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetWindowTextA".}
-  proc GetWindowTextLength*(hWnd: HWND): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetWindowTextLengthA".}
-  proc MessageBox*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc: "MessageBoxA".}
-  proc MessageBoxEx*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT, wLanguageId: WORD): int32 {.winapi, stdcall, dynlib: "user32", importc: "MessageBoxExA".}
-  proc MessageBoxIndirect*(lpmbp: ptr MSGBOXPARAMSA): int32 {.winapi, stdcall, dynlib: "user32", importc: "MessageBoxIndirectA".}
-  proc GetWindowLong*(hWnd: HWND, nIndex: int32): LONG {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongA".}
-  proc SetWindowLong*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongA".}
-  proc GetClassLong*(hWnd: HWND, nIndex: int32): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongA".}
-  proc SetClassLong*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongA".}
-  proc FindWindow*(lpClassName: LPCSTR, lpWindowName: LPCSTR): HWND {.winapi, stdcall, dynlib: "user32", importc: "FindWindowA".}
-  proc FindWindowEx*(hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCSTR, lpszWindow: LPCSTR): HWND {.winapi, stdcall, dynlib: "user32", importc: "FindWindowExA".}
-  proc GetClassName*(hWnd: HWND, lpClassName: LPSTR, nMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetClassNameA".}
-  proc SetWindowsHook*(nFilterType: int32, pfnFilterProc: HOOKPROC): HHOOK {.winapi, stdcall, dynlib: "user32", importc: "SetWindowsHookA".}
-  proc SetWindowsHookEx*(idHook: int32, lpfn: HOOKPROC, hmod: HINSTANCE, dwThreadId: DWORD): HHOOK {.winapi, stdcall, dynlib: "user32", importc: "SetWindowsHookExA".}
-  proc LoadBitmap*(hInstance: HINSTANCE, lpBitmapName: LPCSTR): HBITMAP {.winapi, stdcall, dynlib: "user32", importc: "LoadBitmapA".}
-  proc LoadCursor*(hInstance: HINSTANCE, lpCursorName: LPCSTR): HCURSOR {.winapi, stdcall, dynlib: "user32", importc: "LoadCursorA".}
-  proc LoadCursorFromFile*(lpFileName: LPCSTR): HCURSOR {.winapi, stdcall, dynlib: "user32", importc: "LoadCursorFromFileA".}
-  proc LoadIcon*(hInstance: HINSTANCE, lpIconName: LPCSTR): HICON {.winapi, stdcall, dynlib: "user32", importc: "LoadIconA".}
-  proc PrivateExtractIcons*(szFileName: LPCSTR, nIconIndex: int32, cxIcon: int32, cyIcon: int32, phicon: ptr HICON, piconid: ptr UINT, nIcons: UINT, flags: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc: "PrivateExtractIconsA".}
-  proc LoadImage*(hInst: HINSTANCE, name: LPCSTR, `type`: UINT, cx: int32, cy: int32, fuLoad: UINT): HANDLE {.winapi, stdcall, dynlib: "user32", importc: "LoadImageA".}
-  proc GetIconInfoEx*(hicon: HICON, piconinfo: PICONINFOEXA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetIconInfoExA".}
-  proc IsDialogMessage*(hDlg: HWND, lpMsg: LPMSG): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsDialogMessageA".}
-  proc DlgDirList*(hDlg: HWND, lpPathSpec: LPSTR, nIDListBox: int32, nIDStaticPath: int32, uFileType: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc: "DlgDirListA".}
-  proc DlgDirSelectEx*(hwndDlg: HWND, lpString: LPSTR, chCount: int32, idListBox: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "DlgDirSelectExA".}
-  proc DlgDirListComboBox*(hDlg: HWND, lpPathSpec: LPSTR, nIDComboBox: int32, nIDStaticPath: int32, uFiletype: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc: "DlgDirListComboBoxA".}
-  proc DlgDirSelectComboBoxEx*(hwndDlg: HWND, lpString: LPSTR, cchOut: int32, idComboBox: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "DlgDirSelectComboBoxExA".}
-  proc DefFrameProc*(hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefFrameProcA".}
-  proc DefMDIChildProc*(hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefMDIChildProcA".}
-  proc CreateMDIWindow*(lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD, X: int32, Y: int32, nWidth: int32, nHeight: int32, hWndParent: HWND, hInstance: HINSTANCE, lParam: LPARAM): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateMDIWindowA".}
-  proc WinHelp*(hWndMain: HWND, lpszHelp: LPCSTR, uCommand: UINT, dwData: ULONG_PTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "WinHelpA".}
-  proc ChangeDisplaySettings*(lpDevMode: LPDEVMODEA, dwFlags: DWORD): LONG {.winapi, stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsA".}
-  proc ChangeDisplaySettingsEx*(lpszDeviceName: LPCSTR, lpDevMode: LPDEVMODEA, hwnd: HWND, dwflags: DWORD, lParam: LPVOID): LONG {.winapi, stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsExA".}
-  proc EnumDisplaySettings*(lpszDeviceName: LPCSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDisplaySettingsA".}
-  proc EnumDisplaySettingsEx*(lpszDeviceName: LPCSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEA, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDisplaySettingsExA".}
-  proc EnumDisplayDevices*(lpDevice: LPCSTR, iDevNum: DWORD, lpDisplayDevice: PDISPLAY_DEVICEA, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDisplayDevicesA".}
-  proc SystemParametersInfo*(uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SystemParametersInfoA".}
-  proc GetMonitorInfo*(hMonitor: HMONITOR, lpmi: LPMONITORINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMonitorInfoA".}
-  proc GetWindowModuleFileName*(hwnd: HWND, pszFileName: LPSTR, cchFileNameMax: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc: "GetWindowModuleFileNameA".}
-  proc RealGetWindowClass*(hwnd: HWND, ptszClassName: LPSTR, cchClassNameMax: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc: "RealGetWindowClassA".}
-  proc GetAltTabInfo*(hwnd: HWND, iItem: int32, pati: PALTTABINFO, pszItemText: LPSTR, cchItemText: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetAltTabInfoA".}
-  proc GetRawInputDeviceInfo*(hDevice: HANDLE, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT): UINT {.winapi, stdcall, dynlib: "user32", importc: "GetRawInputDeviceInfoA".}
-  proc PostAppMessage*(idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostThreadMessageA".}
-  proc CreateWindow*(lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD, x: int32, y: int32, nWidth: int32, nHeight: int32, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID): HWND {.winapi, inline.} = CreateWindowExA(0, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
-  proc CreateDialog*(hInstance: HINSTANCE, lpName: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC): HWND {.winapi, inline.} = CreateDialogParamA(hInstance, lpName, hWndParent, lpDialogFunc, 0)
-  proc CreateDialogIndirect*(hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEA, hWndParent: HWND, lpDialogFunc: DLGPROC): HWND {.winapi, inline.} = CreateDialogIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
-  proc DialogBox*(hInstance: HINSTANCE, lpTemplate: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC): INT_PTR {.winapi, inline.} = DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
-  proc DialogBoxIndirect*(hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEA, hWndParent: HWND, lpDialogFunc: DLGPROC): INT_PTR {.winapi, inline.} = DialogBoxIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+
+  proc wvsprintf*(
+    P1: LPSTR, P2: LPCSTR, arglist: va_list
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "wvsprintfA".}
+
+  proc wsprintf*(
+    P1: LPSTR, P2: LPCSTR
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "wsprintfA".}
+
+  proc LoadKeyboardLayout*(
+    pwszKLID: LPCSTR, Flags: UINT
+  ): HKL {.winapi, stdcall, dynlib: "user32", importc: "LoadKeyboardLayoutA".}
+
+  proc GetKeyboardLayoutName*(
+    pwszKLID: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetKeyboardLayoutNameA".}
+
+  proc CreateDesktop*(
+    lpszDesktop: LPCSTR,
+    lpszDevice: LPCSTR,
+    pDevmode: LPDEVMODEA,
+    dwFlags: DWORD,
+    dwDesiredAccess: ACCESS_MASK,
+    lpsa: LPSECURITY_ATTRIBUTES,
+  ): HDESK {.winapi, stdcall, dynlib: "user32", importc: "CreateDesktopA".}
+
+  proc CreateDesktopEx*(
+    lpszDesktop: LPCSTR,
+    lpszDevice: LPCSTR,
+    pDevmode: ptr DEVMODEA,
+    dwFlags: DWORD,
+    dwDesiredAccess: ACCESS_MASK,
+    lpsa: LPSECURITY_ATTRIBUTES,
+    ulHeapSize: ULONG,
+    pvoid: PVOID,
+  ): HDESK {.winapi, stdcall, dynlib: "user32", importc: "CreateDesktopExA".}
+
+  proc OpenDesktop*(
+    lpszDesktop: LPCSTR, dwFlags: DWORD, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK
+  ): HDESK {.winapi, stdcall, dynlib: "user32", importc: "OpenDesktopA".}
+
+  proc EnumDesktops*(
+    hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROCA, lParam: LPARAM
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDesktopsA".}
+
+  proc CreateWindowStation*(
+    lpwinsta: LPCSTR,
+    dwFlags: DWORD,
+    dwDesiredAccess: ACCESS_MASK,
+    lpsa: LPSECURITY_ATTRIBUTES,
+  ): HWINSTA {.winapi, stdcall, dynlib: "user32", importc: "CreateWindowStationA".}
+
+  proc OpenWindowStation*(
+    lpszWinSta: LPCSTR, fInherit: WINBOOL, dwDesiredAccess: ACCESS_MASK
+  ): HWINSTA {.winapi, stdcall, dynlib: "user32", importc: "OpenWindowStationA".}
+
+  proc EnumWindowStations*(
+    lpEnumFunc: WINSTAENUMPROCA, lParam: LPARAM
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumWindowStationsA".}
+
+  proc GetUserObjectInformation*(
+    hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD, lpnLengthNeeded: LPDWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetUserObjectInformationA".}
+
+  proc SetUserObjectInformation*(
+    hObj: HANDLE, nIndex: int32, pvInfo: PVOID, nLength: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetUserObjectInformationA".}
+
+  proc RegisterWindowMessage*(
+    lpString: LPCSTR
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "RegisterWindowMessageA".}
+
+  proc GetMessage*(
+    lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMessageA".}
+
+  proc DispatchMessage*(
+    lpMsg: ptr MSG
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DispatchMessageA".}
+
+  proc PeekMessage*(
+    lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PeekMessageA".}
+
+  proc SendMessage*(
+    hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "SendMessageA".}
+
+  proc SendMessageTimeout*(
+    hWnd: HWND,
+    Msg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    fuFlags: UINT,
+    uTimeout: UINT,
+    lpdwResult: PDWORD_PTR,
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "SendMessageTimeoutA".}
+
+  proc SendNotifyMessage*(
+    hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SendNotifyMessageA".}
+
+  proc SendMessageCallback*(
+    hWnd: HWND,
+    Msg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    lpResultCallBack: SENDASYNCPROC,
+    dwData: ULONG_PTR,
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SendMessageCallbackA".}
+
+  proc BroadcastSystemMessageEx*(
+    flags: DWORD,
+    lpInfo: LPDWORD,
+    Msg: UINT,
+    wParam: WPARAM,
+    lParam: LPARAM,
+    pbsmInfo: PBSMINFO,
+  ): LONG32 {.winapi, stdcall, dynlib: "user32", importc: "BroadcastSystemMessageExA".}
+
+  proc BroadcastSystemMessage*(
+    flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LONG32 {.winapi, stdcall, dynlib: "user32", importc: "BroadcastSystemMessageA".}
+
+  proc RegisterDeviceNotification*(
+    hRecipient: HANDLE, NotificationFilter: LPVOID, Flags: DWORD
+  ): HDEVNOTIFY {.
+    winapi, stdcall, dynlib: "user32", importc: "RegisterDeviceNotificationA"
+  .}
+
+  proc PostMessage*(
+    hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostMessageA".}
+
+  proc PostThreadMessage*(
+    idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostThreadMessageA".}
+
+  proc DefWindowProc*(
+    hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefWindowProcA".}
+
+  proc CallWindowProc*(
+    lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "CallWindowProcA".}
+
+  proc RegisterClass*(
+    lpWndClass: ptr WNDCLASSA
+  ): ATOM {.winapi, stdcall, dynlib: "user32", importc: "RegisterClassA".}
+
+  proc UnregisterClass*(
+    lpClassName: LPCSTR, hInstance: HINSTANCE
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "UnregisterClassA".}
+
+  proc GetClassInfo*(
+    hInstance: HINSTANCE, lpClassName: LPCSTR, lpWndClass: LPWNDCLASSA
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetClassInfoA".}
+
+  proc RegisterClassEx*(
+    P1: ptr WNDCLASSEXA
+  ): ATOM {.winapi, stdcall, dynlib: "user32", importc: "RegisterClassExA".}
+
+  proc GetClassInfoEx*(
+    hInstance: HINSTANCE, lpszClass: LPCSTR, lpwcx: LPWNDCLASSEXA
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetClassInfoExA".}
+
+  proc SetDlgItemText*(
+    hDlg: HWND, nIDDlgItem: int32, lpString: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetDlgItemTextA".}
+
+  proc GetDlgItemText*(
+    hDlg: HWND, nIDDlgItem: int32, lpString: LPSTR, cchMax: int32
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "GetDlgItemTextA".}
+
+  proc SendDlgItemMessage*(
+    hDlg: HWND, nIDDlgItem: int32, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "SendDlgItemMessageA".}
+
+  proc DefDlgProc*(
+    hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefDlgProcA".}
+
+  proc CallMsgFilter*(
+    lpMsg: LPMSG, nCode: int32
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CallMsgFilterA".}
+
+  proc RegisterClipboardFormat*(
+    lpszFormat: LPCSTR
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "RegisterClipboardFormatA".}
+
+  proc GetClipboardFormatName*(
+    format: UINT, lpszFormatName: LPSTR, cchMaxCount: int32
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetClipboardFormatNameA".}
+
+  proc CharToOem*(
+    lpszSrc: LPCSTR, lpszDst: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CharToOemA".}
+
+  proc OemToChar*(
+    lpszSrc: LPCSTR, lpszDst: LPSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "OemToCharA".}
+
+  proc CharToOemBuff*(
+    lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "CharToOemBuffA".}
+
+  proc OemToCharBuff*(
+    lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "OemToCharBuffA".}
+
+  proc CharUpper*(
+    lpsz: LPSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharUpperA".}
+
+  proc CharUpperBuff*(
+    lpsz: LPSTR, cchLength: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "CharUpperBuffA".}
+
+  proc CharLower*(
+    lpsz: LPSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharLowerA".}
+
+  proc CharLowerBuff*(
+    lpsz: LPSTR, cchLength: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "CharLowerBuffA".}
+
+  proc CharNext*(
+    lpsz: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharNextA".}
+
+  proc CharPrev*(
+    lpszStart: LPCSTR, lpszCurrent: LPCSTR
+  ): LPSTR {.winapi, stdcall, dynlib: "user32", importc: "CharPrevA".}
+
+  proc IsCharAlpha*(
+    ch: CHAR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharAlphaA".}
+
+  proc IsCharAlphaNumeric*(
+    ch: CHAR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharAlphaNumericA".}
+
+  proc IsCharUpper*(
+    ch: CHAR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharUpperA".}
+
+  proc IsCharLower*(
+    ch: CHAR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsCharLowerA".}
+
+  proc GetKeyNameText*(
+    lParam: LONG, lpString: LPSTR, cchSize: int32
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetKeyNameTextA".}
+
+  proc VkKeyScan*(
+    ch: CHAR
+  ): SHORT {.winapi, stdcall, dynlib: "user32", importc: "VkKeyScanA".}
+
+  proc VkKeyScanEx*(
+    ch: CHAR, dwhkl: HKL
+  ): SHORT {.winapi, stdcall, dynlib: "user32", importc: "VkKeyScanExA".}
+
+  proc MapVirtualKey*(
+    uCode: UINT, uMapType: UINT
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "MapVirtualKeyA".}
+
+  proc MapVirtualKeyEx*(
+    uCode: UINT, uMapType: UINT, dwhkl: HKL
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "MapVirtualKeyExA".}
+
+  proc LoadAccelerators*(
+    hInstance: HINSTANCE, lpTableName: LPCSTR
+  ): HACCEL {.winapi, stdcall, dynlib: "user32", importc: "LoadAcceleratorsA".}
+
+  proc CreateAcceleratorTable*(
+    paccel: LPACCEL, cAccel: int32
+  ): HACCEL {.winapi, stdcall, dynlib: "user32", importc: "CreateAcceleratorTableA".}
+
+  proc CopyAcceleratorTable*(
+    hAccelSrc: HACCEL, lpAccelDst: LPACCEL, cAccelEntries: int32
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "CopyAcceleratorTableA".}
+
+  proc TranslateAccelerator*(
+    hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "TranslateAcceleratorA".}
+
+  proc LoadMenu*(
+    hInstance: HINSTANCE, lpMenuName: LPCSTR
+  ): HMENU {.winapi, stdcall, dynlib: "user32", importc: "LoadMenuA".}
+
+  proc LoadMenuIndirect*(
+    lpMenuTemplate: ptr MENUTEMPLATEA
+  ): HMENU {.winapi, stdcall, dynlib: "user32", importc: "LoadMenuIndirectA".}
+
+  proc ChangeMenu*(
+    hMenu: HMENU, cmd: UINT, lpszNewItem: LPCSTR, cmdInsert: UINT, flags: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "ChangeMenuA".}
+
+  proc GetMenuString*(
+    hMenu: HMENU, uIDItem: UINT, lpString: LPSTR, cchMax: int32, flags: UINT
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetMenuStringA".}
+
+  proc InsertMenu*(
+    hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "InsertMenuA".}
+
+  proc AppendMenu*(
+    hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "AppendMenuA".}
+
+  proc ModifyMenu*(
+    hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "ModifyMenuA".}
+
+  proc InsertMenuItem*(
+    hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmi: LPCMENUITEMINFOA
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "InsertMenuItemA".}
+
+  proc GetMenuItemInfo*(
+    hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmii: LPMENUITEMINFOA
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMenuItemInfoA".}
+
+  proc SetMenuItemInfo*(
+    hmenu: HMENU, item: UINT, fByPositon: WINBOOL, lpmii: LPCMENUITEMINFOA
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetMenuItemInfoA".}
+
+  proc DrawText*(
+    hdc: HDC, lpchText: LPCSTR, cchText: int32, lprc: LPRECT, format: UINT
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "DrawTextA".}
+
+  proc DrawTextEx*(
+    hdc: HDC,
+    lpchText: LPSTR,
+    cchText: int32,
+    lprc: LPRECT,
+    format: UINT,
+    lpdtp: LPDRAWTEXTPARAMS,
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "DrawTextExA".}
+
+  proc GrayString*(
+    hDC: HDC,
+    hBrush: HBRUSH,
+    lpOutputFunc: GRAYSTRINGPROC,
+    lpData: LPARAM,
+    nCount: int32,
+    X: int32,
+    Y: int32,
+    nWidth: int32,
+    nHeight: int32,
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GrayStringA".}
+
+  proc DrawState*(
+    hdc: HDC,
+    hbrFore: HBRUSH,
+    qfnCallBack: DRAWSTATEPROC,
+    lData: LPARAM,
+    wData: WPARAM,
+    x: int32,
+    y: int32,
+    cx: int32,
+    cy: int32,
+    uFlags: UINT,
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "DrawStateA".}
+
+  proc TabbedTextOut*(
+    hdc: HDC,
+    x: int32,
+    y: int32,
+    lpString: LPCSTR,
+    chCount: int32,
+    nTabPositions: int32,
+    lpnTabStopPositions: ptr INT,
+    nTabOrigin: int32,
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "TabbedTextOutA".}
+
+  proc GetTabbedTextExtent*(
+    hdc: HDC,
+    lpString: LPCSTR,
+    chCount: int32,
+    nTabPositions: int32,
+    lpnTabStopPositions: ptr INT,
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetTabbedTextExtentA".}
+
+  proc SetProp*(
+    hWnd: HWND, lpString: LPCSTR, hData: HANDLE
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetPropA".}
+
+  proc GetProp*(
+    hWnd: HWND, lpString: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "user32", importc: "GetPropA".}
+
+  proc RemoveProp*(
+    hWnd: HWND, lpString: LPCSTR
+  ): HANDLE {.winapi, stdcall, dynlib: "user32", importc: "RemovePropA".}
+
+  proc EnumPropsEx*(
+    hWnd: HWND, lpEnumFunc: PROPENUMPROCEXA, lParam: LPARAM
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "EnumPropsExA".}
+
+  proc EnumProps*(
+    hWnd: HWND, lpEnumFunc: PROPENUMPROCA
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "EnumPropsA".}
+
+  proc SetWindowText*(
+    hWnd: HWND, lpString: LPCSTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetWindowTextA".}
+
+  proc GetWindowText*(
+    hWnd: HWND, lpString: LPSTR, nMaxCount: int32
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetWindowTextA".}
+
+  proc GetWindowTextLength*(
+    hWnd: HWND
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetWindowTextLengthA".}
+
+  proc MessageBox*(
+    hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "MessageBoxA".}
+
+  proc MessageBoxEx*(
+    hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT, wLanguageId: WORD
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "MessageBoxExA".}
+
+  proc MessageBoxIndirect*(
+    lpmbp: ptr MSGBOXPARAMSA
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "MessageBoxIndirectA".}
+
+  proc GetWindowLong*(
+    hWnd: HWND, nIndex: int32
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongA".}
+
+  proc SetWindowLong*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongA".}
+
+  proc GetClassLong*(
+    hWnd: HWND, nIndex: int32
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongA".}
+
+  proc SetClassLong*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongA".}
+
+  proc FindWindow*(
+    lpClassName: LPCSTR, lpWindowName: LPCSTR
+  ): HWND {.winapi, stdcall, dynlib: "user32", importc: "FindWindowA".}
+
+  proc FindWindowEx*(
+    hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCSTR, lpszWindow: LPCSTR
+  ): HWND {.winapi, stdcall, dynlib: "user32", importc: "FindWindowExA".}
+
+  proc GetClassName*(
+    hWnd: HWND, lpClassName: LPSTR, nMaxCount: int32
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetClassNameA".}
+
+  proc SetWindowsHook*(
+    nFilterType: int32, pfnFilterProc: HOOKPROC
+  ): HHOOK {.winapi, stdcall, dynlib: "user32", importc: "SetWindowsHookA".}
+
+  proc SetWindowsHookEx*(
+    idHook: int32, lpfn: HOOKPROC, hmod: HINSTANCE, dwThreadId: DWORD
+  ): HHOOK {.winapi, stdcall, dynlib: "user32", importc: "SetWindowsHookExA".}
+
+  proc LoadBitmap*(
+    hInstance: HINSTANCE, lpBitmapName: LPCSTR
+  ): HBITMAP {.winapi, stdcall, dynlib: "user32", importc: "LoadBitmapA".}
+
+  proc LoadCursor*(
+    hInstance: HINSTANCE, lpCursorName: LPCSTR
+  ): HCURSOR {.winapi, stdcall, dynlib: "user32", importc: "LoadCursorA".}
+
+  proc LoadCursorFromFile*(
+    lpFileName: LPCSTR
+  ): HCURSOR {.winapi, stdcall, dynlib: "user32", importc: "LoadCursorFromFileA".}
+
+  proc LoadIcon*(
+    hInstance: HINSTANCE, lpIconName: LPCSTR
+  ): HICON {.winapi, stdcall, dynlib: "user32", importc: "LoadIconA".}
+
+  proc PrivateExtractIcons*(
+    szFileName: LPCSTR,
+    nIconIndex: int32,
+    cxIcon: int32,
+    cyIcon: int32,
+    phicon: ptr HICON,
+    piconid: ptr UINT,
+    nIcons: UINT,
+    flags: UINT,
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "PrivateExtractIconsA".}
+
+  proc LoadImage*(
+    hInst: HINSTANCE, name: LPCSTR, `type`: UINT, cx: int32, cy: int32, fuLoad: UINT
+  ): HANDLE {.winapi, stdcall, dynlib: "user32", importc: "LoadImageA".}
+
+  proc GetIconInfoEx*(
+    hicon: HICON, piconinfo: PICONINFOEXA
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetIconInfoExA".}
+
+  proc IsDialogMessage*(
+    hDlg: HWND, lpMsg: LPMSG
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsDialogMessageA".}
+
+  proc DlgDirList*(
+    hDlg: HWND,
+    lpPathSpec: LPSTR,
+    nIDListBox: int32,
+    nIDStaticPath: int32,
+    uFileType: UINT,
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "DlgDirListA".}
+
+  proc DlgDirSelectEx*(
+    hwndDlg: HWND, lpString: LPSTR, chCount: int32, idListBox: int32
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "DlgDirSelectExA".}
+
+  proc DlgDirListComboBox*(
+    hDlg: HWND,
+    lpPathSpec: LPSTR,
+    nIDComboBox: int32,
+    nIDStaticPath: int32,
+    uFiletype: UINT,
+  ): int32 {.winapi, stdcall, dynlib: "user32", importc: "DlgDirListComboBoxA".}
+
+  proc DlgDirSelectComboBoxEx*(
+    hwndDlg: HWND, lpString: LPSTR, cchOut: int32, idComboBox: int32
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "DlgDirSelectComboBoxExA".}
+
+  proc DefFrameProc*(
+    hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefFrameProcA".}
+
+  proc DefMDIChildProc*(
+    hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefMDIChildProcA".}
+
+  proc CreateMDIWindow*(
+    lpClassName: LPCSTR,
+    lpWindowName: LPCSTR,
+    dwStyle: DWORD,
+    X: int32,
+    Y: int32,
+    nWidth: int32,
+    nHeight: int32,
+    hWndParent: HWND,
+    hInstance: HINSTANCE,
+    lParam: LPARAM,
+  ): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateMDIWindowA".}
+
+  proc WinHelp*(
+    hWndMain: HWND, lpszHelp: LPCSTR, uCommand: UINT, dwData: ULONG_PTR
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "WinHelpA".}
+
+  proc ChangeDisplaySettings*(
+    lpDevMode: LPDEVMODEA, dwFlags: DWORD
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsA".}
+
+  proc ChangeDisplaySettingsEx*(
+    lpszDeviceName: LPCSTR,
+    lpDevMode: LPDEVMODEA,
+    hwnd: HWND,
+    dwflags: DWORD,
+    lParam: LPVOID,
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsExA".}
+
+  proc EnumDisplaySettings*(
+    lpszDeviceName: LPCSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEA
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDisplaySettingsA".}
+
+  proc EnumDisplaySettingsEx*(
+    lpszDeviceName: LPCSTR, iModeNum: DWORD, lpDevMode: LPDEVMODEA, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDisplaySettingsExA".}
+
+  proc EnumDisplayDevices*(
+    lpDevice: LPCSTR, iDevNum: DWORD, lpDisplayDevice: PDISPLAY_DEVICEA, dwFlags: DWORD
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "EnumDisplayDevicesA".}
+
+  proc SystemParametersInfo*(
+    uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SystemParametersInfoA".}
+
+  proc GetMonitorInfo*(
+    hMonitor: HMONITOR, lpmi: LPMONITORINFO
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMonitorInfoA".}
+
+  proc GetWindowModuleFileName*(
+    hwnd: HWND, pszFileName: LPSTR, cchFileNameMax: UINT
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "GetWindowModuleFileNameA".}
+
+  proc RealGetWindowClass*(
+    hwnd: HWND, ptszClassName: LPSTR, cchClassNameMax: UINT
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "RealGetWindowClassA".}
+
+  proc GetAltTabInfo*(
+    hwnd: HWND, iItem: int32, pati: PALTTABINFO, pszItemText: LPSTR, cchItemText: UINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetAltTabInfoA".}
+
+  proc GetRawInputDeviceInfo*(
+    hDevice: HANDLE, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT
+  ): UINT {.winapi, stdcall, dynlib: "user32", importc: "GetRawInputDeviceInfoA".}
+
+  proc PostAppMessage*(
+    idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM
+  ): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostThreadMessageA".}
+
+  proc CreateWindow*(
+      lpClassName: LPCSTR,
+      lpWindowName: LPCSTR,
+      dwStyle: DWORD,
+      x: int32,
+      y: int32,
+      nWidth: int32,
+      nHeight: int32,
+      hWndParent: HWND,
+      hMenu: HMENU,
+      hInstance: HINSTANCE,
+      lpParam: LPVOID,
+  ): HWND {.winapi, inline.} =
+    CreateWindowExA(
+      0, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu,
+      hInstance, lpParam,
+    )
+
+  proc CreateDialog*(
+      hInstance: HINSTANCE, lpName: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC
+  ): HWND {.winapi, inline.} =
+    CreateDialogParamA(hInstance, lpName, hWndParent, lpDialogFunc, 0)
+
+  proc CreateDialogIndirect*(
+      hInstance: HINSTANCE,
+      lpTemplate: LPCDLGTEMPLATEA,
+      hWndParent: HWND,
+      lpDialogFunc: DLGPROC,
+  ): HWND {.winapi, inline.} =
+    CreateDialogIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+
+  proc DialogBox*(
+      hInstance: HINSTANCE, lpTemplate: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC
+  ): INT_PTR {.winapi, inline.} =
+    DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+
+  proc DialogBoxIndirect*(
+      hInstance: HINSTANCE,
+      lpTemplate: LPCDLGTEMPLATEA,
+      hWndParent: HWND,
+      lpDialogFunc: DLGPROC,
+  ): INT_PTR {.winapi, inline.} =
+    DialogBoxIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
+
 when winimCpu64:
   const
     CONSOLE_APPLICATION_16BIT* = 0x0000
     GUI_16BITTASK* = 0x00000000
-  proc GetWindowLongPtrA*(hWnd: HWND, nIndex: int32): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
-  proc GetWindowLongPtrW*(hWnd: HWND, nIndex: int32): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
-  proc SetWindowLongPtrA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
-  proc SetWindowLongPtrW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
-  proc GetClassLongPtrA*(hWnd: HWND, nIndex: int32): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
-  proc GetClassLongPtrW*(hWnd: HWND, nIndex: int32): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
-  proc SetClassLongPtrA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
-  proc SetClassLongPtrW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+  proc GetWindowLongPtrA*(
+    hWnd: HWND, nIndex: int32
+  ): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+  proc GetWindowLongPtrW*(
+    hWnd: HWND, nIndex: int32
+  ): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+  proc SetWindowLongPtrA*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR
+  ): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+  proc SetWindowLongPtrW*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR
+  ): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+  proc GetClassLongPtrA*(
+    hWnd: HWND, nIndex: int32
+  ): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+  proc GetClassLongPtrW*(
+    hWnd: HWND, nIndex: int32
+  ): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+  proc SetClassLongPtrA*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR
+  ): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+
+  proc SetClassLongPtrW*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR
+  ): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc.}
+
 when winimUnicode and winimCpu64:
-  proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongPtrW".}
-  proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongPtrW".}
-  proc GetClassLongPtr*(hWnd: HWND, nIndex: int32): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongPtrW".}
-  proc SetClassLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongPtrW".}
+  proc GetWindowLongPtr*(
+    hWnd: HWND, nIndex: int32
+  ): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongPtrW".}
+
+  proc SetWindowLongPtr*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR
+  ): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongPtrW".}
+
+  proc GetClassLongPtr*(
+    hWnd: HWND, nIndex: int32
+  ): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongPtrW".}
+
+  proc SetClassLongPtr*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR
+  ): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongPtrW".}
+
 when winimAnsi and winimCpu64:
-  proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongPtrA".}
-  proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongPtrA".}
-  proc GetClassLongPtr*(hWnd: HWND, nIndex: int32): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongPtrA".}
-  proc SetClassLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongPtrA".}
+  proc GetWindowLongPtr*(
+    hWnd: HWND, nIndex: int32
+  ): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongPtrA".}
+
+  proc SetWindowLongPtr*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR
+  ): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongPtrA".}
+
+  proc GetClassLongPtr*(
+    hWnd: HWND, nIndex: int32
+  ): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongPtrA".}
+
+  proc SetClassLongPtr*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR
+  ): ULONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongPtrA".}
+
 when winimCpu32:
   const
     CONSOLE_APPLICATION_16BIT* = 0x0001
     GUI_16BITTASK* = 0x00000020
-  proc GetWindowLongPtrA*(hWnd: HWND, nIndex: int32): LONG {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongA".}
-  proc GetWindowLongPtrW*(hWnd: HWND, nIndex: int32): LONG {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongW".}
-  proc SetWindowLongPtrA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongA".}
-  proc SetWindowLongPtrW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongW".}
-  proc GetClassLongPtrA*(hWnd: HWND, nIndex: int32): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongA".}
-  proc GetClassLongPtrW*(hWnd: HWND, nIndex: int32): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongW".}
-  proc SetClassLongPtrA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongA".}
-  proc SetClassLongPtrW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongW".}
+  proc GetWindowLongPtrA*(
+    hWnd: HWND, nIndex: int32
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongA".}
+
+  proc GetWindowLongPtrW*(
+    hWnd: HWND, nIndex: int32
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongW".}
+
+  proc SetWindowLongPtrA*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongA".}
+
+  proc SetWindowLongPtrW*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongW".}
+
+  proc GetClassLongPtrA*(
+    hWnd: HWND, nIndex: int32
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongA".}
+
+  proc GetClassLongPtrW*(
+    hWnd: HWND, nIndex: int32
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongW".}
+
+  proc SetClassLongPtrA*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongA".}
+
+  proc SetClassLongPtrW*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongW".}
+
 when winimUnicode and winimCpu32:
-  proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongW".}
-  proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongW".}
-  proc GetClassLongPtr*(hWnd: HWND, nIndex: int32): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongW".}
-  proc SetClassLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongW".}
+  proc GetWindowLongPtr*(
+    hWnd: HWND, nIndex: int32
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongW".}
+
+  proc SetWindowLongPtr*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongW".}
+
+  proc GetClassLongPtr*(
+    hWnd: HWND, nIndex: int32
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongW".}
+
+  proc SetClassLongPtr*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongW".}
+
 when winimAnsi and winimCpu32:
-  proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongA".}
-  proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongA".}
-  proc GetClassLongPtr*(hWnd: HWND, nIndex: int32): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongA".}
-  proc SetClassLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongA".}
+  proc GetWindowLongPtr*(
+    hWnd: HWND, nIndex: int32
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongA".}
+
+  proc SetWindowLongPtr*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG
+  ): LONG {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongA".}
+
+  proc GetClassLongPtr*(
+    hWnd: HWND, nIndex: int32
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "GetClassLongA".}
+
+  proc SetClassLongPtr*(
+    hWnd: HWND, nIndex: int32, dwNewLong: LONG
+  ): DWORD {.winapi, stdcall, dynlib: "user32", importc: "SetClassLongA".}
--- a/semicongine/thirdparty/winim/winim/inc/winver.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/inc/winver.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -87,44 +87,171 @@
   VIF_BUFFTOOSMALL* = 0x00040000
   VIF_CANNOTLOADLZ32* = 0x00080000
   VIF_CANNOTLOADCABINET* = 0x00100000
-type
-  VS_FIXEDFILEINFO* {.pure.} = object
-    dwSignature*: DWORD
-    dwStrucVersion*: DWORD
-    dwFileVersionMS*: DWORD
-    dwFileVersionLS*: DWORD
-    dwProductVersionMS*: DWORD
-    dwProductVersionLS*: DWORD
-    dwFileFlagsMask*: DWORD
-    dwFileFlags*: DWORD
-    dwFileOS*: DWORD
-    dwFileType*: DWORD
-    dwFileSubtype*: DWORD
-    dwFileDateMS*: DWORD
-    dwFileDateLS*: DWORD
-proc VerFindFileA*(uFlags: DWORD, szFileName: LPSTR, szWinDir: LPSTR, szAppDir: LPSTR, szCurDir: LPSTR, lpuCurDirLen: PUINT, szDestDir: LPSTR, lpuDestDirLen: PUINT): DWORD {.winapi, stdcall, dynlib: "version", importc.}
-proc VerFindFileW*(uFlags: DWORD, szFileName: LPWSTR, szWinDir: LPWSTR, szAppDir: LPWSTR, szCurDir: LPWSTR, lpuCurDirLen: PUINT, szDestDir: LPWSTR, lpuDestDirLen: PUINT): DWORD {.winapi, stdcall, dynlib: "version", importc.}
-proc VerInstallFileA*(uFlags: DWORD, szSrcFileName: LPSTR, szDestFileName: LPSTR, szSrcDir: LPSTR, szDestDir: LPSTR, szCurDir: LPSTR, szTmpFile: LPSTR, lpuTmpFileLen: PUINT): DWORD {.winapi, stdcall, dynlib: "version", importc.}
-proc VerInstallFileW*(uFlags: DWORD, szSrcFileName: LPWSTR, szDestFileName: LPWSTR, szSrcDir: LPWSTR, szDestDir: LPWSTR, szCurDir: LPWSTR, szTmpFile: LPWSTR, lpuTmpFileLen: PUINT): DWORD {.winapi, stdcall, dynlib: "version", importc.}
-proc GetFileVersionInfoSizeA*(lptstrFilename: LPCSTR, lpdwHandle: LPDWORD): DWORD {.winapi, stdcall, dynlib: "version", importc.}
-proc GetFileVersionInfoSizeW*(lptstrFilename: LPCWSTR, lpdwHandle: LPDWORD): DWORD {.winapi, stdcall, dynlib: "version", importc.}
-proc GetFileVersionInfoA*(lptstrFilename: LPCSTR, dwHandle: DWORD, dwLen: DWORD, lpData: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "version", importc.}
-proc GetFileVersionInfoW*(lptstrFilename: LPCWSTR, dwHandle: DWORD, dwLen: DWORD, lpData: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "version", importc.}
-proc VerLanguageNameA*(wLang: DWORD, szLang: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "version", importc.}
-proc VerLanguageNameW*(wLang: DWORD, szLang: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "version", importc.}
-proc VerQueryValueA*(pBlock: LPVOID, lpSubBlock: LPCSTR, lplpBuffer: ptr LPVOID, puLen: PUINT): WINBOOL {.winapi, stdcall, dynlib: "version", importc.}
-proc VerQueryValueW*(pBlock: LPVOID, lpSubBlock: LPCWSTR, lplpBuffer: ptr LPVOID, puLen: PUINT): WINBOOL {.winapi, stdcall, dynlib: "version", importc.}
+type VS_FIXEDFILEINFO* {.pure.} = object
+  dwSignature*: DWORD
+  dwStrucVersion*: DWORD
+  dwFileVersionMS*: DWORD
+  dwFileVersionLS*: DWORD
+  dwProductVersionMS*: DWORD
+  dwProductVersionLS*: DWORD
+  dwFileFlagsMask*: DWORD
+  dwFileFlags*: DWORD
+  dwFileOS*: DWORD
+  dwFileType*: DWORD
+  dwFileSubtype*: DWORD
+  dwFileDateMS*: DWORD
+  dwFileDateLS*: DWORD
+
+proc VerFindFileA*(
+  uFlags: DWORD,
+  szFileName: LPSTR,
+  szWinDir: LPSTR,
+  szAppDir: LPSTR,
+  szCurDir: LPSTR,
+  lpuCurDirLen: PUINT,
+  szDestDir: LPSTR,
+  lpuDestDirLen: PUINT,
+): DWORD {.winapi, stdcall, dynlib: "version", importc.}
+
+proc VerFindFileW*(
+  uFlags: DWORD,
+  szFileName: LPWSTR,
+  szWinDir: LPWSTR,
+  szAppDir: LPWSTR,
+  szCurDir: LPWSTR,
+  lpuCurDirLen: PUINT,
+  szDestDir: LPWSTR,
+  lpuDestDirLen: PUINT,
+): DWORD {.winapi, stdcall, dynlib: "version", importc.}
+
+proc VerInstallFileA*(
+  uFlags: DWORD,
+  szSrcFileName: LPSTR,
+  szDestFileName: LPSTR,
+  szSrcDir: LPSTR,
+  szDestDir: LPSTR,
+  szCurDir: LPSTR,
+  szTmpFile: LPSTR,
+  lpuTmpFileLen: PUINT,
+): DWORD {.winapi, stdcall, dynlib: "version", importc.}
+
+proc VerInstallFileW*(
+  uFlags: DWORD,
+  szSrcFileName: LPWSTR,
+  szDestFileName: LPWSTR,
+  szSrcDir: LPWSTR,
+  szDestDir: LPWSTR,
+  szCurDir: LPWSTR,
+  szTmpFile: LPWSTR,
+  lpuTmpFileLen: PUINT,
+): DWORD {.winapi, stdcall, dynlib: "version", importc.}
+
+proc GetFileVersionInfoSizeA*(
+  lptstrFilename: LPCSTR, lpdwHandle: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "version", importc.}
+
+proc GetFileVersionInfoSizeW*(
+  lptstrFilename: LPCWSTR, lpdwHandle: LPDWORD
+): DWORD {.winapi, stdcall, dynlib: "version", importc.}
+
+proc GetFileVersionInfoA*(
+  lptstrFilename: LPCSTR, dwHandle: DWORD, dwLen: DWORD, lpData: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "version", importc.}
+
+proc GetFileVersionInfoW*(
+  lptstrFilename: LPCWSTR, dwHandle: DWORD, dwLen: DWORD, lpData: LPVOID
+): WINBOOL {.winapi, stdcall, dynlib: "version", importc.}
+
+proc VerLanguageNameA*(
+  wLang: DWORD, szLang: LPSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "version", importc.}
+
+proc VerLanguageNameW*(
+  wLang: DWORD, szLang: LPWSTR, nSize: DWORD
+): DWORD {.winapi, stdcall, dynlib: "version", importc.}
+
+proc VerQueryValueA*(
+  pBlock: LPVOID, lpSubBlock: LPCSTR, lplpBuffer: ptr LPVOID, puLen: PUINT
+): WINBOOL {.winapi, stdcall, dynlib: "version", importc.}
+
+proc VerQueryValueW*(
+  pBlock: LPVOID, lpSubBlock: LPCWSTR, lplpBuffer: ptr LPVOID, puLen: PUINT
+): WINBOOL {.winapi, stdcall, dynlib: "version", importc.}
+
 when winimUnicode:
-  proc VerFindFile*(uFlags: DWORD, szFileName: LPWSTR, szWinDir: LPWSTR, szAppDir: LPWSTR, szCurDir: LPWSTR, lpuCurDirLen: PUINT, szDestDir: LPWSTR, lpuDestDirLen: PUINT): DWORD {.winapi, stdcall, dynlib: "version", importc: "VerFindFileW".}
-  proc VerInstallFile*(uFlags: DWORD, szSrcFileName: LPWSTR, szDestFileName: LPWSTR, szSrcDir: LPWSTR, szDestDir: LPWSTR, szCurDir: LPWSTR, szTmpFile: LPWSTR, lpuTmpFileLen: PUINT): DWORD {.winapi, stdcall, dynlib: "version", importc: "VerInstallFileW".}
-  proc GetFileVersionInfoSize*(lptstrFilename: LPCWSTR, lpdwHandle: LPDWORD): DWORD {.winapi, stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeW".}
-  proc GetFileVersionInfo*(lptstrFilename: LPCWSTR, dwHandle: DWORD, dwLen: DWORD, lpData: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "version", importc: "GetFileVersionInfoW".}
-  proc VerLanguageName*(wLang: DWORD, szLang: LPWSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "version", importc: "VerLanguageNameW".}
-  proc VerQueryValue*(pBlock: LPVOID, lpSubBlock: LPCWSTR, lplpBuffer: ptr LPVOID, puLen: PUINT): WINBOOL {.winapi, stdcall, dynlib: "version", importc: "VerQueryValueW".}
+  proc VerFindFile*(
+    uFlags: DWORD,
+    szFileName: LPWSTR,
+    szWinDir: LPWSTR,
+    szAppDir: LPWSTR,
+    szCurDir: LPWSTR,
+    lpuCurDirLen: PUINT,
+    szDestDir: LPWSTR,
+    lpuDestDirLen: PUINT,
+  ): DWORD {.winapi, stdcall, dynlib: "version", importc: "VerFindFileW".}
+
+  proc VerInstallFile*(
+    uFlags: DWORD,
+    szSrcFileName: LPWSTR,
+    szDestFileName: LPWSTR,
+    szSrcDir: LPWSTR,
+    szDestDir: LPWSTR,
+    szCurDir: LPWSTR,
+    szTmpFile: LPWSTR,
+    lpuTmpFileLen: PUINT,
+  ): DWORD {.winapi, stdcall, dynlib: "version", importc: "VerInstallFileW".}
+
+  proc GetFileVersionInfoSize*(
+    lptstrFilename: LPCWSTR, lpdwHandle: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeW".}
+
+  proc GetFileVersionInfo*(
+    lptstrFilename: LPCWSTR, dwHandle: DWORD, dwLen: DWORD, lpData: LPVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "version", importc: "GetFileVersionInfoW".}
+
+  proc VerLanguageName*(
+    wLang: DWORD, szLang: LPWSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "version", importc: "VerLanguageNameW".}
+
+  proc VerQueryValue*(
+    pBlock: LPVOID, lpSubBlock: LPCWSTR, lplpBuffer: ptr LPVOID, puLen: PUINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "version", importc: "VerQueryValueW".}
+
 when winimAnsi:
-  proc VerFindFile*(uFlags: DWORD, szFileName: LPSTR, szWinDir: LPSTR, szAppDir: LPSTR, szCurDir: LPSTR, lpuCurDirLen: PUINT, szDestDir: LPSTR, lpuDestDirLen: PUINT): DWORD {.winapi, stdcall, dynlib: "version", importc: "VerFindFileA".}
-  proc VerInstallFile*(uFlags: DWORD, szSrcFileName: LPSTR, szDestFileName: LPSTR, szSrcDir: LPSTR, szDestDir: LPSTR, szCurDir: LPSTR, szTmpFile: LPSTR, lpuTmpFileLen: PUINT): DWORD {.winapi, stdcall, dynlib: "version", importc: "VerInstallFileA".}
-  proc GetFileVersionInfoSize*(lptstrFilename: LPCSTR, lpdwHandle: LPDWORD): DWORD {.winapi, stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeA".}
-  proc GetFileVersionInfo*(lptstrFilename: LPCSTR, dwHandle: DWORD, dwLen: DWORD, lpData: LPVOID): WINBOOL {.winapi, stdcall, dynlib: "version", importc: "GetFileVersionInfoA".}
-  proc VerLanguageName*(wLang: DWORD, szLang: LPSTR, nSize: DWORD): DWORD {.winapi, stdcall, dynlib: "version", importc: "VerLanguageNameA".}
-  proc VerQueryValue*(pBlock: LPVOID, lpSubBlock: LPCSTR, lplpBuffer: ptr LPVOID, puLen: PUINT): WINBOOL {.winapi, stdcall, dynlib: "version", importc: "VerQueryValueA".}
+  proc VerFindFile*(
+    uFlags: DWORD,
+    szFileName: LPSTR,
+    szWinDir: LPSTR,
+    szAppDir: LPSTR,
+    szCurDir: LPSTR,
+    lpuCurDirLen: PUINT,
+    szDestDir: LPSTR,
+    lpuDestDirLen: PUINT,
+  ): DWORD {.winapi, stdcall, dynlib: "version", importc: "VerFindFileA".}
+
+  proc VerInstallFile*(
+    uFlags: DWORD,
+    szSrcFileName: LPSTR,
+    szDestFileName: LPSTR,
+    szSrcDir: LPSTR,
+    szDestDir: LPSTR,
+    szCurDir: LPSTR,
+    szTmpFile: LPSTR,
+    lpuTmpFileLen: PUINT,
+  ): DWORD {.winapi, stdcall, dynlib: "version", importc: "VerInstallFileA".}
+
+  proc GetFileVersionInfoSize*(
+    lptstrFilename: LPCSTR, lpdwHandle: LPDWORD
+  ): DWORD {.winapi, stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeA".}
+
+  proc GetFileVersionInfo*(
+    lptstrFilename: LPCSTR, dwHandle: DWORD, dwLen: DWORD, lpData: LPVOID
+  ): WINBOOL {.winapi, stdcall, dynlib: "version", importc: "GetFileVersionInfoA".}
+
+  proc VerLanguageName*(
+    wLang: DWORD, szLang: LPSTR, nSize: DWORD
+  ): DWORD {.winapi, stdcall, dynlib: "version", importc: "VerLanguageNameA".}
+
+  proc VerQueryValue*(
+    pBlock: LPVOID, lpSubBlock: LPCSTR, lplpBuffer: ptr LPVOID, puLen: PUINT
+  ): WINBOOL {.winapi, stdcall, dynlib: "version", importc: "VerQueryValueA".}
--- a/semicongine/thirdparty/winim/winim/shell.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/shell.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -7,8 +7,12 @@
 #
 #====================================================================
 
-import inc/[commctrl, commdlg, richedit, imm, shellapi, regstr, setupapi, vssym32,
-  uxtheme, dwmapi, msi]
+import
+  inc/[
+    commctrl, commdlg, richedit, imm, shellapi, regstr, setupapi, vssym32, uxtheme,
+    dwmapi, msi,
+  ]
 
-export commctrl, commdlg, richedit, imm, shellapi, regstr, setupapi, vssym32,
-  uxtheme, dwmapi, msi
+export
+  commctrl, commdlg, richedit, imm, shellapi, regstr, setupapi, vssym32, uxtheme,
+  dwmapi, msi
--- a/semicongine/thirdparty/winim/winim/utils.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/utils.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -47,10 +47,11 @@
     ##    pUk.QueryInterface(&IID_IDispatch, &pDisp)
 
 else:
-  template `&`*(x: object): ptr type(x) = unsafeaddr x
+  template `&`*(x: object): ptr type(x) =
     ## Use `&` to gets pointer for const object. For example:
     ##
     ## .. code-block:: Nim
     ##    # pUk is "ptr IUnknown" for some object
     ##    var pDisp: ptr IDispatch
     ##    pUk.QueryInterface(&IID_IDispatch, &pDisp)
+    unsafeaddr x
--- a/semicongine/thirdparty/winim/winim/winstr.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/winim/winim/winstr.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -159,8 +159,7 @@
 export strutils.toHex, winimbase
 
 when not declared(IndexDefect):
-  type
-    IndexDefect = object of IndexError
+  type IndexDefect = object of IndexError
 
 # generate from winimx (avoid importing objbase everytime)
 const
@@ -169,8 +168,26 @@
 
 proc lstrlenA(lpString: LPCSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
 proc lstrlenW(lpString: LPCWSTR): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc MultiByteToWideChar(CodePage: UINT, dwFlags: DWORD, lpMultiByteStr: LPCCH, cbMultiByte: int32, lpWideCharStr: LPWSTR, cchWideChar: int32): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
-proc WideCharToMultiByte(CodePage: UINT, dwFlags: DWORD, lpWideCharStr: LPCWCH, cchWideChar: int32, lpMultiByteStr: LPSTR, cbMultiByte: int32, lpDefaultChar: LPCCH, lpUsedDefaultChar: LPBOOL): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+proc MultiByteToWideChar(
+  CodePage: UINT,
+  dwFlags: DWORD,
+  lpMultiByteStr: LPCCH,
+  cbMultiByte: int32,
+  lpWideCharStr: LPWSTR,
+  cchWideChar: int32,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
+proc WideCharToMultiByte(
+  CodePage: UINT,
+  dwFlags: DWORD,
+  lpWideCharStr: LPCWCH,
+  cchWideChar: int32,
+  lpMultiByteStr: LPSTR,
+  cbMultiByte: int32,
+  lpDefaultChar: LPCCH,
+  lpUsedDefaultChar: LPBOOL,
+): int32 {.winapi, stdcall, dynlib: "kernel32", importc.}
+
 proc SysStringLen(P1: BSTR): UINT {.winapi, stdcall, dynlib: "oleaut32", importc.}
 
 # helper functions
@@ -192,13 +209,13 @@
   result = toHex($s)
 
 when defined(cpu64):
-  converter NaturalToInt32(x: Natural): int32 = int32 x
+  converter NaturalToInt32(x: Natural): int32 =
+    int32 x
 
 # new string types
 
 type
   # for wstring, always add extra null wchar to ensure null-terminated.
-
   wstring* = distinct string
     ## New string type to store wide character string (aka. unicode string).
 
@@ -209,14 +226,13 @@
     ## Use `mIndex` in substr, [] or []= for `mstring` means
     ## index by MBCS characters, not by bytes.
 
-  SomeChar* = byte | char | WCHAR
-    ## Type class matching all char types.
+  SomeChar* = byte | char | WCHAR ## Type class matching all char types.
+
+  SomeString* = string | mstring | wstring ## Type class matching all string types.
 
-  SomeString* = string | mstring | wstring
-    ## Type class matching all string types.
-
-  SomeBuffer*[I] = ptr SomeChar | array[I, SomeChar] | ptr array[I, SomeChar] |
-      ptr UncheckedArray[SomeChar] | openArray[SomeChar] | seq[SomeChar]
+  SomeBuffer*[I] =
+    ptr SomeChar | array[I, SomeChar] | ptr array[I, SomeChar] |
+    ptr UncheckedArray[SomeChar] | openArray[SomeChar] | seq[SomeChar]
     ## Type class matching all string buffer types.
 
   Stringable* = SomeChar | SomeString | SomeBuffer | cstring | BSTR
@@ -228,17 +244,21 @@
 template `^^`(s, i: untyped): untyped =
   (when i is BackwardsIndex: s.len - int(i) else: int(i))
 
-proc newWString*(L: Natural): wstring = wstring(newString((L + 1) * 2))
+proc newWString*(L: Natural): wstring =
   ## Returns a new `wstring` of length L, counting by wide characters.
+  wstring(newString((L + 1) * 2))
 
-proc newMString*(L: Natural): mstring = mstring(newString(L))
+proc newMString*(L: Natural): mstring =
   ## Returns a new `mstring` of length L, counting by bytes.
+  mstring(newString(L))
 
-proc len*(s: wstring): int {.inline.} = max(string(s).len div 2 - 1, 0)
+proc len*(s: wstring): int {.inline.} =
   ## Returns the length of `wstring`, counting by wide characters.
+  max(string(s).len div 2 - 1, 0)
 
-proc len*(s: mstring): int {.inline.} = string(s).len
+proc len*(s: mstring): int {.inline.} =
   ## Returns the length of `mstring`, counting by bytes.
+  string(s).len
 
 proc newWStringOfCap*(L: Natural): wstring =
   ## Returns a new `wstring` of length 0 but with capacity L, counting by wide characters.
@@ -274,24 +294,24 @@
   ## Get address of the first char of a `mstring`.
   result = &(string(s))
 
-proc `UTF8->wstring`(source: ptr char, L: Natural): wstring =
+proc `UTF8 -> wstring`(source: ptr char, L: Natural): wstring =
   if not source.isNil:
     var wLen = MultiByteToWideChar(CP_UTF8, 0, source, L, nil, 0)
     result = newWString(wLen)
     discard MultiByteToWideChar(CP_UTF8, 0, source, L, &result, wLen)
 
-proc `ANSI->wstring`(source: ptr char, L: Natural): wstring =
+proc `ANSI -> wstring`(source: ptr char, L: Natural): wstring =
   if not source.isNil:
     var wLen = MultiByteToWideChar(CP_ACP, 0, source, L, nil, 0)
     result = newWString(wLen)
     discard MultiByteToWideChar(CP_ACP, 0, source, L, &result, wLen)
 
-proc `UNICODE->wstring`(source: ptr WCHAR, L: Natural): wstring =
+proc `UNICODE -> wstring`(source: ptr WCHAR, L: Natural): wstring =
   if not source.isNil:
     result = newWString(L)
     copyMem(&result, source, L * 2)
 
-proc `UTF8->mstring`(source: ptr char, L: Natural): mstring =
+proc `UTF8 -> mstring`(source: ptr char, L: Natural): mstring =
   if not source.isNil:
     var wLen = MultiByteToWideChar(CP_UTF8, 0, source, L, nil, 0)
     var buffer = cast[ptr WCHAR](alloc(wLen * 2))
@@ -303,23 +323,23 @@
       discard WideCharToMultiByte(CP_ACP, 0, buffer, wLen, &result, mLen, nil, nil)
       dealloc(buffer)
 
-proc `ANSI->mstring`(source: ptr char, L: Natural): mstring =
+proc `ANSI -> mstring`(source: ptr char, L: Natural): mstring =
   if not source.isNil:
     result = newMString(L)
     copyMem(&result, source, L)
 
-proc `UNICODE->mstring`(source: ptr WCHAR, L: Natural): mstring =
+proc `UNICODE -> mstring`(source: ptr WCHAR, L: Natural): mstring =
   if not source.isNil:
     var mLen = WideCharToMultiByte(CP_ACP, 0, source, L, nil, 0, nil, nil)
     result = newMString(mLen)
     discard WideCharToMultiByte(CP_ACP, 0, source, L, &result, mLen, nil, nil)
 
-proc `UTF8->string`(source: ptr char, L: Natural): string =
+proc `UTF8 -> string`(source: ptr char, L: Natural): string =
   if not source.isNil:
     result = newString(L)
     copyMem(&result, source, L)
 
-proc `ANSI->string`(source: ptr char, L: Natural): string =
+proc `ANSI -> string`(source: ptr char, L: Natural): string =
   if not source.isNil:
     var wLen = MultiByteToWideChar(CP_ACP, 0, source, L, nil, 0)
     var buffer = cast[ptr WCHAR](alloc(wLen * 2))
@@ -331,7 +351,7 @@
       discard WideCharToMultiByte(CP_UTF8, 0, buffer, wLen, &result, mLen, nil, nil)
       dealloc(buffer)
 
-proc `UNICODE->string`(source: ptr WCHAR, L: Natural): string =
+proc `UNICODE -> string`(source: ptr WCHAR, L: Natural): string =
   if not source.isNil:
     var mLen = WideCharToMultiByte(CP_UTF8, 0, source, L, nil, 0, nil, nil)
     result = newString(mLen)
@@ -340,70 +360,67 @@
 template getptr[T](x: openArray[T]): untyped =
   when sizeof(T) == 1:
     cast[ptr char](unsafeaddr x[0])
-
   elif sizeof(T) == 2:
     cast[ptr WCHAR](unsafeaddr x[0])
 
 template getptr[T](x: ptr UncheckedArray[T]): untyped =
   when sizeof(T) == 1:
     cast[ptr char](unsafeaddr x[0])
-
   elif sizeof(T) == 2:
     cast[ptr WCHAR](unsafeaddr x[0])
 
-proc `UTF8->wstring`(source: openArray[byte|char]): wstring {.inline.} =
-  `UTF8->wstring`(source.getptr, source.len)
+proc `UTF8 -> wstring`(source: openArray[byte | char]): wstring {.inline.} =
+  `UTF8 -> wstring`(source.getptr, source.len)
 
-proc `ANSI->wstring`(source: openArray[byte|char]): wstring {.inline.} =
-  `ANSI->wstring`(source.getptr, source.len)
+proc `ANSI -> wstring`(source: openArray[byte | char]): wstring {.inline.} =
+  `ANSI -> wstring`(source.getptr, source.len)
 
-proc `UNICODE->wstring`(source: openArray[WCHAR]): wstring {.inline.} =
-  `UNICODE->wstring`(source.getptr, source.len)
+proc `UNICODE -> wstring`(source: openArray[WCHAR]): wstring {.inline.} =
+  `UNICODE -> wstring`(source.getptr, source.len)
 
-proc `UTF8->mstring`(source: openArray[byte|char]): mstring {.inline.} =
-  `UTF8->mstring`(source.getptr, source.len)
+proc `UTF8 -> mstring`(source: openArray[byte | char]): mstring {.inline.} =
+  `UTF8 -> mstring`(source.getptr, source.len)
 
-proc `ANSI->mstring`(source: openArray[byte|char]): mstring {.inline.} =
-  `ANSI->mstring`(source.getptr, source.len)
+proc `ANSI -> mstring`(source: openArray[byte | char]): mstring {.inline.} =
+  `ANSI -> mstring`(source.getptr, source.len)
 
-proc `UNICODE->mstring`(source: openArray[WCHAR]): mstring {.inline.} =
-  `UNICODE->mstring`(source.getptr, source.len)
+proc `UNICODE -> mstring`(source: openArray[WCHAR]): mstring {.inline.} =
+  `UNICODE -> mstring`(source.getptr, source.len)
 
-proc `UTF8->string`(source: openArray[byte|char]): string {.inline.} =
-  `UTF8->string`(source.getptr, source.len)
+proc `UTF8 -> string`(source: openArray[byte | char]): string {.inline.} =
+  `UTF8 -> string`(source.getptr, source.len)
 
-proc `ANSI->string`(source: openArray[byte|char]): string {.inline.} =
-  `ANSI->string`(source.getptr, source.len)
+proc `ANSI -> string`(source: openArray[byte | char]): string {.inline.} =
+  `ANSI -> string`(source.getptr, source.len)
 
-proc `UNICODE->string`(source: openArray[WCHAR]): string {.inline.} =
-  `UNICODE->string`(source.getptr, source.len)
+proc `UNICODE -> string`(source: openArray[WCHAR]): string {.inline.} =
+  `UNICODE -> string`(source.getptr, source.len)
 
 # wstring functions
 
-proc high*(s: wstring): int {.inline.} = s.len - 1
+proc high*(s: wstring): int {.inline.} =
   ## Returns the highest possible index of `wstring`.
+  s.len - 1
 
-proc low*(s: wstring): int {.inline.} = 0
+proc low*(s: wstring): int {.inline.} =
   ## Returns the lowest possible index of `wstring`.
+  0
 
 proc cmp*(x, y: wstring): int {.borrow.}
   ## Compare proc for `wstring` (in binary format only).
 
-proc `==`*(x, y: wstring): bool {.borrow.}
-  ## Checks for equality between two `wstring`.
+proc `==`*(x, y: wstring): bool {.borrow.} ## Checks for equality between two `wstring`.
 
 proc `<=`*(x, y: wstring): bool {.borrow.}
   ## Lexicographic ``<=`` operator for `wstring`.
 
-proc `<`*(x, y: wstring): bool {.borrow.}
-  ## Lexicographic ``<`` operator for `wstring`.
+proc `<`*(x, y: wstring): bool {.borrow.} ## Lexicographic ``<`` operator for `wstring`.
 
 proc substr*(s: wstring, first, last: int): wstring =
   ## Copies a slice of `s` into a new `wstring` and returns it.
   result = wstring(string(s).substr(first * 2, last * 2 + 3))
   if result.len != 0:
     result.raw(result.len) = 0
-
   else:
     result = newWString(0)
 
@@ -419,7 +436,7 @@
 
   result = s.raw(i)
 
-proc `[]=`*(s: var wstring, i: int, c: WCHAR|char) {.inline.} =
+proc `[]=`*(s: var wstring, i: int, c: WCHAR | char) {.inline.} =
   ## Index assignment operator for `wstring`.
   when compileOption("boundChecks"):
     if i >= s.len:
@@ -434,29 +451,33 @@
   when compileOption("boundChecks"):
     if a < 0 or a + L > s.len:
       raise newException(IndexDefect, "index out of bounds")
-  result = s.substr(a, a + L-1)
+  result = s.substr(a, a + L - 1)
 
 proc `[]=`*[T, U](s: var wstring, x: HSlice[T, U], b: wstring) =
   ## Slice assignment for `wstring`.
   let a = s ^^ x.a
   let L = (s ^^ x.b) - a + 1
   if L == b.len:
-    for i in 0 ..< L: s[i+a] = b[i]
+    for i in 0 ..< L:
+      s[i + a] = b[i]
   else:
     var slen = s.len
     var shift = b.len - L
     var newLen = slen + shift
     if shift > 0:
       setLen(s, newLen)
-      for i in countdown(newLen-1, a+shift+1): s[i] = s[i-shift]
+      for i in countdown(newLen - 1, a + shift + 1):
+        s[i] = s[i - shift]
     else:
-      for i in countup(a+b.len, s.len-1+shift): s[i] = s[i-shift]
+      for i in countup(a + b.len, s.len - 1 + shift):
+        s[i] = s[i - shift]
       setLen(s, newLen)
-    for i in 0 ..< b.len: s[i+a] = b[i]
+    for i in 0 ..< b.len:
+      s[i + a] = b[i]
 
     s.raw(s.len) = 0
 
-proc add*(s: var wstring, c: char|WCHAR) =
+proc add*(s: var wstring, c: char | WCHAR) =
   ## Appends `c` to `s` in place.
   s.raw(s.len) = WCHAR c
   string(s).add "\0\0"
@@ -466,7 +487,7 @@
   setLen(string(s), string(s).len - 2)
   string(s).add(string(u))
 
-proc `&`*(s: wstring, c: WCHAR|char): wstring {.inline.} =
+proc `&`*(s: wstring, c: WCHAR | char): wstring {.inline.} =
   ## Concatenates `s` with `c`.
   result = s
   result.add c
@@ -516,11 +537,10 @@
     for w in s:
       if w == 0:
         result.add "\\0"
+      else:
+        result.add `UNICODE -> string`(w.unsafeaddr, 1)
 
-      else:
-        result.add `UNICODE->string`(w.unsafeaddr, 1)
-
-  result.add  "\""
+  result.add "\""
 
 # mstring functions
 
@@ -531,20 +551,17 @@
 proc high*(s: mstring): int {.borrow.}
   ## Returns the highest possible index of `mstring`.
 
-proc low*(s: mstring): int {.borrow.}
-  ## Returns the lowest possible index of `mstring`.
+proc low*(s: mstring): int {.borrow.} ## Returns the lowest possible index of `mstring`.
 
 proc cmp*(x, y: mstring): int {.borrow.}
   ## Compare proc for `mstring` (in binary format only).
 
-proc `==`*(x, y: mstring): bool {.borrow.}
-  ## Checks for equality between two `mstring`.
+proc `==`*(x, y: mstring): bool {.borrow.} ## Checks for equality between two `mstring`.
 
 proc `<=`*(x, y: mstring): bool {.borrow.}
   ## Lexicographic ``<=`` operator for `mstring`.
 
-proc `<`*(x, y: mstring): bool {.borrow.}
-  ## Lexicographic ``<`` operator for `mstring`.
+proc `<`*(x, y: mstring): bool {.borrow.} ## Lexicographic ``<`` operator for `mstring`.
 
 proc substr*(s: mstring, first, last: int): mstring {.borrow.}
   ## Copies a slice of `s` into a new `mstring` and returns it, counting by bytes.
@@ -552,82 +569,76 @@
 proc substr*(s: mstring, first = 0): mstring {.borrow.}
   ## Copies a slice of `s` into a new `mstring` and returns it, counting by bytes.
 
-proc `[]`*(s: mstring, i: int): char {.inline.} = string(s)[i]
+proc `[]`*(s: mstring, i: int): char {.inline.} =
   ## Index operator for `mstring`, counting by bytes.
+  string(s)[i]
 
-proc `[]=`*(s: var mstring, i: int, x: char|byte) {.inline.} = string(s)[i] = cast[char](x)
+proc `[]=`*(s: var mstring, i: int, x: char | byte) {.inline.} =
   ## Index assignment operator for `mstring`, counting by bytes.
+  string(s)[i] = cast[char](x)
 
 proc substr*(s: mstring, first, last: mIndex): mstring =
   ## Copies a slice of `s` into a new `mstring` and returns it, counting by MBCS characters.
-  var ws = `ANSI->wstring`(&s, s.len)
+  var ws = `ANSI -> wstring`(&s, s.len)
   ws = ws.substr(int first, int last)
-  result = `UNICODE->mstring`(&ws, ws.len)
+  result = `UNICODE -> mstring`(&ws, ws.len)
 
 proc substr*(s: mstring, first: mIndex = 0.mIndex): mstring =
   ## Copies a slice of `s` into a new `mstring` and returns it, counting by MBCS characters.
-  var ws = `ANSI->wstring`(&s, s.len)
+  var ws = `ANSI -> wstring`(&s, s.len)
   ws = ws.substr(int first)
-  result = `UNICODE->mstring`(&ws, ws.len)
+  result = `UNICODE -> mstring`(&ws, ws.len)
 
 proc `[]`*(s: mstring, i: mIndex): mstring =
   ## Index operator for `mstring`, counting by MBCS characters.
-  let ws = `ANSI->wstring`(&s, s.len)
+  let ws = `ANSI -> wstring`(&s, s.len)
   var wchar = ws[int i]
-  result = `UNICODE->mstring`(addr wchar, 1)
+  result = `UNICODE -> mstring`(addr wchar, 1)
 
 proc `[]=`*(s: var mstring, i: mIndex, u: mstring) =
   ## Index assignment operator for `mstring`, counting by MBCS characters,
   ## and only first MBCS characters of `u` will be used.
-  var ws = `ANSI->wstring`(&s, s.len)
-  let wu = `ANSI->wstring`(&u, u.len)
+  var ws = `ANSI -> wstring`(&s, s.len)
+  let wu = `ANSI -> wstring`(&u, u.len)
 
   if wu.len == 0:
     ws[int i] = 0
-
   else:
     ws[int i] = wu[0]
 
-  s = `UNICODE->mstring`(&ws, ws.len)
+  s = `UNICODE -> mstring`(&ws, ws.len)
 
 proc `[]`*[T, U](s: mstring, x: HSlice[T, U]): mstring =
   ## Slice operation for `mstring`.
   when T is mIndex or U is mIndex:
-    var ws = `[]`(`ANSI->wstring`(&s, s.len), x)
-    result = `UNICODE->mstring`(&ws, ws.len)
-
+    var ws = `[]`(`ANSI -> wstring`(&s, s.len), x)
+    result = `UNICODE -> mstring`(&ws, ws.len)
   else:
     result = mstring(`[]`(string(s), x))
 
 proc `[]=`*[T, U](s: var mstring, x: HSlice[T, U], u: mstring) =
   ## Slice assignment for `mstrings`.
   when T is mIndex or U is mIndex:
-    var ws = `ANSI->wstring`(&s, s.len)
-    `[]=`(ws, x, `ANSI->wstring`(&u, u.len))
-    s = `UNICODE->mstring`(&ws, ws.len)
+    var ws = `ANSI -> wstring`(&s, s.len)
+    `[]=`(ws, x, `ANSI -> wstring`(&u, u.len))
+    s = `UNICODE -> mstring`(&ws, ws.len)
   else:
     `[]=`(string(s), x, string(u))
 
-proc add*(x: var mstring, y: char) {.borrow.}
-  ## Appends `y` to `x` in place.
+proc add*(x: var mstring, y: char) {.borrow.} ## Appends `y` to `x` in place.
 
-proc add*(x: var mstring, y: string) {.borrow.}
-  ## Appends `y` to `x` in place.
+proc add*(x: var mstring, y: string) {.borrow.} ## Appends `y` to `x` in place.
 
-proc add*(x: var mstring, y: mstring) {.borrow.}
-  ## Appends `y` to `x` in place.
+proc add*(x: var mstring, y: mstring) {.borrow.} ## Appends `y` to `x` in place.
 
-proc add*(x: var mstring, y: byte) {.inline.} = x.add(char(y))
-  ## Appends `y` to `x` in place.
-
-proc `&`*(x: mstring, y: char): mstring {.borrow.}
-  ## Concatenates `x` with `y`.
+proc add*(x: var mstring, y: byte) {.inline.} = ## Appends `y` to `x` in place.
+  x.add(char(y))
 
-proc `&`*(x, y: mstring): mstring {.borrow.}
-  ## Concatenates `x` with `y`.
+proc `&`*(x: mstring, y: char): mstring {.borrow.} ## Concatenates `x` with `y`.
 
-proc `&`*(x: char, y: mstring): mstring {.borrow.}
-  ## Concatenates `x` with `y`.
+proc `&`*(x, y: mstring): mstring {.borrow.} ## Concatenates `x` with `y`.
+
+proc `&`*(x: char, y: mstring): mstring {.borrow.} ## Concatenates `x` with `y`.
 
 proc toHex*(s: mstring): string {.inline.} =
   ## Converts `mstring` to its hexadecimal representation.
@@ -636,15 +647,15 @@
 
 iterator items*(s: mstring): mstring =
   ## Iterates over each MBCS character of `mstring`.
-  var ws = `ANSI->wstring`(&s, s.len)
+  var ws = `ANSI -> wstring`(&s, s.len)
   for wchar in ws.mitems:
-    yield `UNICODE->mstring`(addr wchar, 1)
+    yield `UNICODE -> mstring`(addr wchar, 1)
 
 iterator pairs*(s: mstring): tuple[key: mIndex, val: mstring] =
   ## Iterates over each MBCS character of `mstring`. Yields `(mIndex, mstring)` pairs.
-  var ws = `ANSI->wstring`(&s, s.len)
+  var ws = `ANSI -> wstring`(&s, s.len)
   for i, wchar in ws.mpairs:
-    yield (mIndex i, `UNICODE->mstring`(addr wchar, 1))
+    yield (mIndex i, `UNICODE -> mstring`(addr wchar, 1))
 
 proc repr*(s: mstring): string =
   ## Returns string representation of `mstring`.
@@ -653,9 +664,8 @@
     for m in s:
       if m[0] == '\0':
         result.add "\\0"
-
       else:
-        result.add `ANSI->string`(&m, m.len)
+        result.add `ANSI -> string`(&m, m.len)
 
   result &= "\""
 
@@ -673,157 +683,259 @@
 proc `$`*(s: Stringable): string {.inline.} =
   ## Convert any stringable type to `string`.
   ## This operator assume `string|cstring|ptr char|openArray[char]` is utf8 encoding.
-  when s is char|byte: system.`$`(s)
-  elif s is WCHAR: system.`$`(s)
-  elif s is string: s
-  elif s is mstring: `ANSI->string`(&s, s.len)
-  elif s is wstring: `UNICODE->string`(&s, s.len)
-  elif s is cstring|ptr char|ptr byte: system.`$`(cast[cstring](s))
-  elif s is ptr WCHAR: `UNICODE->string`(s, lstrlenW(s))
-  elif s is BSTR: `UNICODE->string`(s, int SysStringLen(s))
-  elif s is array|seq|openArray:
+  when s is char | byte:
+    system.`$`(s)
+  elif s is WCHAR:
+    system.`$`(s)
+  elif s is string:
+    s
+  elif s is mstring:
+    `ANSI -> string`(&s, s.len)
+  elif s is wstring:
+    `UNICODE -> string`(&s, s.len)
+  elif s is cstring | ptr char | ptr byte:
+    system.`$`(cast[cstring](s))
+  elif s is ptr WCHAR:
+    `UNICODE -> string`(s, lstrlenW(s))
+  elif s is BSTR:
+    `UNICODE -> string`(s, int SysStringLen(s))
+  elif s is array | seq | openArray:
     if isOpenArrayStringable:
-      when sizeof(s[0]) == 1: `UTF8->string`(s)
-      elif sizeof(s[0]) == 2: `UNICODE->string`(s)
-      else: {.fatal: "invalid type".}
+      when sizeof(s[0]) == 1:
+        `UTF8 -> string`(s)
+      elif sizeof(s[0]) == 2:
+        `UNICODE -> string`(s)
+      else:
+        {.fatal: "invalid type".}
     else:
       system.`$`(s)
   elif s is ptr array:
-    when sizeof(s[][0]) == 1: `UTF8->string`(s[])
-    elif sizeof(s[][0]) == 2: `UNICODE->string`(s[])
-    else: {.fatal: "invalid type".}
+    when sizeof(s[][0]) == 1:
+      `UTF8 -> string`(s[])
+    elif sizeof(s[][0]) == 2:
+      `UNICODE -> string`(s[])
+    else:
+      {.fatal: "invalid type".}
   elif s is ptr UncheckedArray:
-    when sizeof(s[0]) == 1: `UTF8->string`(s.getptr, lstrlenA(s.getptr))
-    elif sizeof(s[0]) == 2: `UNICODE->string`(s.getptr, lstrlenW(s.getptr))
-    else: {.fatal: "invalid type".}
-  else: {.fatal: "invalid type".}
+    when sizeof(s[0]) == 1:
+      `UTF8 -> string`(s.getptr, lstrlenA(s.getptr))
+    elif sizeof(s[0]) == 2:
+      `UNICODE -> string`(s.getptr, lstrlenW(s.getptr))
+    else:
+      {.fatal: "invalid type".}
+  else:
+    {.fatal: "invalid type".}
 
 proc `%$`*(s: Stringable): string {.inline.} =
   ## Convert any stringable type to `string`. Always treat `openArray[SomeChar]` as string.
   ## This operator assume `string|cstring|ptr char|openArray[char]` is utf8 encoding.
-  when s is char|byte: system.`$`(s)
-  elif s is WCHAR: `UNICODE->string`(unsafeaddr s, 1)
-  elif s is string: s
-  elif s is mstring: `ANSI->string`(&s, s.len)
-  elif s is wstring: `UNICODE->string`(&s, s.len)
-  elif s is cstring|ptr char|ptr byte: system.`$`(cast[cstring](s))
-  elif s is ptr WCHAR: `UNICODE->string`(s, lstrlenW(s))
-  elif s is BSTR: `UNICODE->string`(s, int SysStringLen(s))
-  elif s is array|seq|openArray:
-    when sizeof(s[0]) == 1: `UTF8->string`(s)
-    elif sizeof(s[0]) == 2: `UNICODE->string`(s)
-    else: {.fatal: "invalid type".}
+  when s is char | byte:
+    system.`$`(s)
+  elif s is WCHAR:
+    `UNICODE -> string`(unsafeaddr s, 1)
+  elif s is string:
+    s
+  elif s is mstring:
+    `ANSI -> string`(&s, s.len)
+  elif s is wstring:
+    `UNICODE -> string`(&s, s.len)
+  elif s is cstring | ptr char | ptr byte:
+    system.`$`(cast[cstring](s))
+  elif s is ptr WCHAR:
+    `UNICODE -> string`(s, lstrlenW(s))
+  elif s is BSTR:
+    `UNICODE -> string`(s, int SysStringLen(s))
+  elif s is array | seq | openArray:
+    when sizeof(s[0]) == 1:
+      `UTF8 -> string`(s)
+    elif sizeof(s[0]) == 2:
+      `UNICODE -> string`(s)
+    else:
+      {.fatal: "invalid type".}
   elif s is ptr array:
-    when sizeof(s[][0]) == 1: `UTF8->string`(s[])
-    elif sizeof(s[][0]) == 2: `UNICODE->string`(s[])
-    else: {.fatal: "invalid type".}
+    when sizeof(s[][0]) == 1:
+      `UTF8 -> string`(s[])
+    elif sizeof(s[][0]) == 2:
+      `UNICODE -> string`(s[])
+    else:
+      {.fatal: "invalid type".}
   elif s is ptr UncheckedArray:
-    when sizeof(s[0]) == 1: `UTF8->string`(s.getptr, lstrlenA(s.getptr))
-    elif sizeof(s[0]) == 2: `UNICODE->string`(s.getptr, lstrlenW(s.getptr))
-    else: {.fatal: "invalid type".}
-  else: {.fatal: "invalid type".}
+    when sizeof(s[0]) == 1:
+      `UTF8 -> string`(s.getptr, lstrlenA(s.getptr))
+    elif sizeof(s[0]) == 2:
+      `UNICODE -> string`(s.getptr, lstrlenW(s.getptr))
+    else:
+      {.fatal: "invalid type".}
+  else:
+    {.fatal: "invalid type".}
 
 proc `+$`*(s: Stringable): wstring {.inline.} =
   ## Convert any stringable type to `wstring`.
   ## This operator assume `string|cstring|ptr char|openArray[char]` is utf8 encoding.
-  when s is char|byte: `UTF8->wstring`(cast[ptr char](unsafeaddr s), 1)
-  elif s is WCHAR: `UNICODE->wstring`(unsafeaddr s, 1)
-  elif s is string: `UTF8->wstring`(&s, s.len)
-  elif s is mstring: `ANSI->wstring`(&s, s.len)
-  elif s is wstring: s
-  elif s is cstring|ptr char|ptr byte: `UTF8->wstring`(cast[ptr char](s), cast[cstring](s).len)
-  elif s is ptr WCHAR: `UNICODE->wstring`(s, lstrlenW(s))
-  elif s is BSTR: `UNICODE->wstring`(s, int SysStringLen(s))
-  elif s is array|seq|openArray:
-    when sizeof(s[0]) == 1: `UTF8->wstring`(s)
-    elif sizeof(s[0]) == 2: `UNICODE->wstring`(s)
-    else: {.fatal: "invalid type".}
+  when s is char | byte:
+    `UTF8 -> wstring`(cast[ptr char](unsafeaddr s), 1)
+  elif s is WCHAR:
+    `UNICODE -> wstring`(unsafeaddr s, 1)
+  elif s is string:
+    `UTF8 -> wstring`(&s, s.len)
+  elif s is mstring:
+    `ANSI -> wstring`(&s, s.len)
+  elif s is wstring:
+    s
+  elif s is cstring | ptr char | ptr byte:
+    `UTF8 -> wstring`(cast[ptr char](s), cast[cstring](s).len)
+  elif s is ptr WCHAR:
+    `UNICODE -> wstring`(s, lstrlenW(s))
+  elif s is BSTR:
+    `UNICODE -> wstring`(s, int SysStringLen(s))
+  elif s is array | seq | openArray:
+    when sizeof(s[0]) == 1:
+      `UTF8 -> wstring`(s)
+    elif sizeof(s[0]) == 2:
+      `UNICODE -> wstring`(s)
+    else:
+      {.fatal: "invalid type".}
   elif s is ptr array:
-    when sizeof(s[][0]) == 1: `UTF8->wstring`(s[])
-    elif sizeof(s[][0]) == 2: `UNICODE->wstring`(s[])
-    else: {.fatal: "invalid type".}
+    when sizeof(s[][0]) == 1:
+      `UTF8 -> wstring`(s[])
+    elif sizeof(s[][0]) == 2:
+      `UNICODE -> wstring`(s[])
+    else:
+      {.fatal: "invalid type".}
   elif s is ptr UncheckedArray:
-    when sizeof(s[0]) == 1: `UTF8->wstring`(s.getptr, lstrlenA(s.getptr))
-    elif sizeof(s[0]) == 2: `UNICODE->wstring`(s.getptr, lstrlenW(s.getptr))
-    else: {.fatal: "invalid type".}
-  else: {.fatal: "invalid type".}
+    when sizeof(s[0]) == 1:
+      `UTF8 -> wstring`(s.getptr, lstrlenA(s.getptr))
+    elif sizeof(s[0]) == 2:
+      `UNICODE -> wstring`(s.getptr, lstrlenW(s.getptr))
+    else:
+      {.fatal: "invalid type".}
+  else:
+    {.fatal: "invalid type".}
 
 proc `-$`*(s: Stringable): mstring {.inline.} =
   ## Convert any stringable type to `mstring`.
   ## This operator assume `string|cstring|ptr char|openArray[char]` is utf8 encoding.
-  when s is char|byte: `UTF8->mstring`(cast[ptr char](unsafeaddr s), 1)
-  elif s is WCHAR: `UNICODE->mstring`(unsafeaddr s, 1)
-  elif s is string: `UTF8->mstring`(&s, s.len)
-  elif s is mstring: s
-  elif s is wstring: `UNICODE->mstring`(&s, s.len)
-  elif s is cstring|ptr char|ptr byte: `UTF8->mstring`(cast[ptr char](s), cast[cstring](s).len)
-  elif s is ptr WCHAR: `UNICODE->mstring`(s, lstrlenW(s))
-  elif s is BSTR: `UNICODE->mstring`(s, int SysStringLen(s))
-  elif s is array|seq|openArray:
-    when sizeof(s[0]) == 1: `UTF8->mstring`(s)
-    elif sizeof(s[0]) == 2: `UNICODE->mstring`(s)
-    else: {.fatal: "invalid type".}
+  when s is char | byte:
+    `UTF8 -> mstring`(cast[ptr char](unsafeaddr s), 1)
+  elif s is WCHAR:
+    `UNICODE -> mstring`(unsafeaddr s, 1)
+  elif s is string:
+    `UTF8 -> mstring`(&s, s.len)
+  elif s is mstring:
+    s
+  elif s is wstring:
+    `UNICODE -> mstring`(&s, s.len)
+  elif s is cstring | ptr char | ptr byte:
+    `UTF8 -> mstring`(cast[ptr char](s), cast[cstring](s).len)
+  elif s is ptr WCHAR:
+    `UNICODE -> mstring`(s, lstrlenW(s))
+  elif s is BSTR:
+    `UNICODE -> mstring`(s, int SysStringLen(s))
+  elif s is array | seq | openArray:
+    when sizeof(s[0]) == 1:
+      `UTF8 -> mstring`(s)
+    elif sizeof(s[0]) == 2:
+      `UNICODE -> mstring`(s)
+    else:
+      {.fatal: "invalid type".}
   elif s is ptr array:
-    when sizeof(s[][0]) == 1: `UTF8->mstring`(s[])
-    elif sizeof(s[][0]) == 2: `UNICODE->mstring`(s[])
-    else: {.fatal: "invalid type".}
+    when sizeof(s[][0]) == 1:
+      `UTF8 -> mstring`(s[])
+    elif sizeof(s[][0]) == 2:
+      `UNICODE -> mstring`(s[])
+    else:
+      {.fatal: "invalid type".}
   elif s is ptr UncheckedArray:
-    when sizeof(s[0]) == 1: `UTF8->mstring`(s.getptr, lstrlenA(s.getptr))
-    elif sizeof(s[0]) == 2: `UNICODE->mstring`(s.getptr, lstrlenW(s.getptr))
-    else: {.fatal: "invalid type".}
-  else: {.fatal: "invalid type".}
+    when sizeof(s[0]) == 1:
+      `UTF8 -> mstring`(s.getptr, lstrlenA(s.getptr))
+    elif sizeof(s[0]) == 2:
+      `UNICODE -> mstring`(s.getptr, lstrlenW(s.getptr))
+    else:
+      {.fatal: "invalid type".}
+  else:
+    {.fatal: "invalid type".}
 
 proc `$$`*(s: Stringable): string {.inline.} =
   ## Convert any stringable type to `string`.
   ## This operator assume `string|cstring|ptr char|openArray[char]` is ansi encoding.
   # Only exception is `WCHAR(uint16)`: regard as number in `$`, but string in `$$`
-  when s is WCHAR: `UNICODE->string`(unsafeaddr s, 1)
-  elif s is string: `ANSI->string`(&s, s.len)
-  elif s is cstring|ptr char|ptr byte: `ANSI->string`(cast[ptr char](s), cast[cstring](s).len)
-  elif s is array|seq|openArray:
-    when sizeof(s[0]) == 1: `ANSI->string`(s)
-    elif sizeof(s[0]) == 2: `UNICODE->string`(s)
+  when s is WCHAR:
+    `UNICODE -> string`(unsafeaddr s, 1)
+  elif s is string:
+    `ANSI -> string`(&s, s.len)
+  elif s is cstring | ptr char | ptr byte:
+    `ANSI -> string`(cast[ptr char](s), cast[cstring](s).len)
+  elif s is array | seq | openArray:
+    when sizeof(s[0]) == 1:
+      `ANSI -> string`(s)
+    elif sizeof(s[0]) == 2:
+      `UNICODE -> string`(s)
   elif s is ptr array:
-    when sizeof(s[][0]) == 1: `ANSI->string`(s[])
-    else: `$`(s)
+    when sizeof(s[][0]) == 1:
+      `ANSI -> string`(s[])
+    else:
+      `$`(s)
   elif s is ptr UncheckedArray:
-    when sizeof(s[0]) == 1: `ANSI->string`(s.getptr, lstrlenA(s.getptr))
-    else: `$`(s)
-  else: `$`(s)
+    when sizeof(s[0]) == 1:
+      `ANSI -> string`(s.getptr, lstrlenA(s.getptr))
+    else:
+      `$`(s)
+  else:
+    `$`(s)
 
 proc `+$$`*(s: Stringable): wstring {.inline.} =
   ## Convert any stringable type to `wstring`.
   ## This operator assume `string|cstring|ptr char|openArray[char]` is ansi encoding.
-  when s is string: `ANSI->wstring`(&s, s.len)
-  elif s is cstring|ptr char|ptr byte: `ANSI->wstring`(cast[ptr char](s), cast[cstring](s).len)
-  elif s is array|seq|openArray:
-    when sizeof(s[0]) == 1: `ANSI->wstring`(s)
-    else: `+$`(s)
+  when s is string:
+    `ANSI -> wstring`(&s, s.len)
+  elif s is cstring | ptr char | ptr byte:
+    `ANSI -> wstring`(cast[ptr char](s), cast[cstring](s).len)
+  elif s is array | seq | openArray:
+    when sizeof(s[0]) == 1:
+      `ANSI -> wstring`(s)
+    else:
+      `+$`(s)
   elif s is ptr array:
-    when sizeof(s[][0]) == 1: `ANSI->wstring`(s[])
-    else: `+$`(s)
+    when sizeof(s[][0]) == 1:
+      `ANSI -> wstring`(s[])
+    else:
+      `+$`(s)
   elif s is ptr UncheckedArray:
-    when sizeof(s[0]) == 1: `ANSI->wstring`(s.getptr, lstrlenA(s.getptr))
-    else: `+$`(s)
-  else: `+$`(s)
+    when sizeof(s[0]) == 1:
+      `ANSI -> wstring`(s.getptr, lstrlenA(s.getptr))
+    else:
+      `+$`(s)
+  else:
+    `+$`(s)
 
 proc `-$$`*(s: Stringable): mstring {.inline.} =
   ## Convert any stringable type to `mstring`.
   ## This operator assume `string|cstring|ptr char|openArray[char]` is ansi encoding.
-  when s is string: `ANSI->mstring`(&s, s.len)
-  elif s is cstring|ptr char|ptr byte: `ANSI->mstring`(cast[ptr char](s), cast[cstring](s).len)
-  elif s is array|seq|openArray:
-    when sizeof(s[0]) == 1: `ANSI->mstring`(s)
-    else: `-$`(s)
+  when s is string:
+    `ANSI -> mstring`(&s, s.len)
+  elif s is cstring | ptr char | ptr byte:
+    `ANSI -> mstring`(cast[ptr char](s), cast[cstring](s).len)
+  elif s is array | seq | openArray:
+    when sizeof(s[0]) == 1:
+      `ANSI -> mstring`(s)
+    else:
+      `-$`(s)
   elif s is ptr array:
-    when sizeof(s[][0]) == 1: `ANSI->mstring`(s[])
-    else: `-$`(s)
+    when sizeof(s[][0]) == 1:
+      `ANSI -> mstring`(s[])
+    else:
+      `-$`(s)
   elif s is ptr UncheckedArray:
-    when sizeof(s[0]) == 1: `ANSI->mstring`(s.getptr, lstrlenA(s.getptr))
-    else: `-$`(s)
-  else: `-$`(s)
+    when sizeof(s[0]) == 1:
+      `ANSI -> mstring`(s.getptr, lstrlenA(s.getptr))
+    else:
+      `-$`(s)
+  else:
+    `-$`(s)
 
-proc fillBuffer[T: SomeChar](a: var openArray[T], s: SomeString, skip = 0, inclNull = false) =
+proc fillBuffer[T: SomeChar](
+    a: var openArray[T], s: SomeString, skip = 0, inclNull = false
+) =
   when sizeof(a[0]) != sizeof(s[0]):
     {.fatal: "type mismatch".}
 
@@ -834,7 +946,9 @@
     a[s.len - skip] = cast[T](0)
 
   # fill as much as possible before raise an exception
-  if (not inclNull and a.high < s.len - skip - 1) or (inclNull and a.high < s.len - skip):
+  if (not inclNull and a.high < s.len - skip - 1) or (
+    inclNull and a.high < s.len - skip
+  ):
     raise newException(IndexDefect, "string length too long")
 
 proc fillString[T: SomeChar](s: var SomeString, a: openArray[T], skip = 0) =
@@ -844,7 +958,7 @@
   for i in 0 .. min(a.high, s.len - skip - 1):
     s[i + skip] = cast[s[0].type](a[i])
 
-template `<<`*[A: SomeBuffer|SomeString, B: SomeBuffer|SomeString](a: A, b: B) =
+template `<<`*[A: SomeBuffer | SomeString, B: SomeBuffer | SomeString](a: A, b: B) =
   ## Fill operator for `SomeBuffer` and `SomeString`.
   ## Please make sure both side have the same character size.
   ## If destination don't have the length information (e.g. `pointer` or `UncheckedArray`),
@@ -852,59 +966,46 @@
   when A is SomeString and B is SomeString:
     # treat string a as buffer
     var v = cast[ptr UncheckedArray[a[0].type]](&a)
-    fillBuffer(v.toOpenArray(0, a.len - 1), b, inclNull=false)
-
+    fillBuffer(v.toOpenArray(0, a.len - 1), b, inclNull = false)
   elif A is not SomeString and B is SomeString:
     when A is array:
-      fillBuffer(a.toOpenArray(a.low, a.high), b, skip=a.low, inclNull=false)
-
+      fillBuffer(a.toOpenArray(a.low, a.high), b, skip = a.low, inclNull = false)
     elif A is ptr array:
-      fillBuffer(a[].toOpenArray(a[].low, a[].high), b, skip=a[].low, inclNull=false)
-
+      fillBuffer(
+        a[].toOpenArray(a[].low, a[].high), b, skip = a[].low, inclNull = false
+      )
     elif A is ptr char | ptr byte:
       var v = cast[ptr UncheckedArray[byte]](a)
-      fillBuffer(v.toOpenArray(0, int.high - 1), b, inclNull=false)
-
+      fillBuffer(v.toOpenArray(0, int.high - 1), b, inclNull = false)
     elif A is ptr WCHAR:
       var v = cast[ptr UncheckedArray[WCHAR]](a)
-      fillBuffer(v.toOpenArray(0, int.high - 1), b, inclNull=false)
-
+      fillBuffer(v.toOpenArray(0, int.high - 1), b, inclNull = false)
     elif A is ptr UncheckedArray:
       var v = a
-      fillBuffer(v.toOpenArray(0, int.high - 1), b, inclNull=false)
-
+      fillBuffer(v.toOpenArray(0, int.high - 1), b, inclNull = false)
     elif A is openArray | seq:
-      fillBuffer(a, b, inclNull=false)
-
+      fillBuffer(a, b, inclNull = false)
     else:
       {.fatal: "type mismatch".}
-
   elif A is SomeString and B is not SomeString:
     when B is array:
-      fillString(a, b.toOpenArray(b.low, b.high), skip=b.low)
-
+      fillString(a, b.toOpenArray(b.low, b.high), skip = b.low)
     elif B is ptr array:
-      fillString(a, b[].toOpenArray(b[].low, b[].high), skip=b[].low)
-
+      fillString(a, b[].toOpenArray(b[].low, b[].high), skip = b[].low)
     elif B is ptr char | ptr byte:
       fillString(a, cast[ptr UncheckedArray[byte]](b).toOpenArray(0, int.high - 1))
-
     elif B is ptr WCHAR:
       fillString(a, cast[ptr UncheckedArray[WCHAR]](b).toOpenArray(0, int.high - 1))
-
     elif B is ptr UncheckedArray:
       fillString(a, b.toOpenArray(0, int.high - 1))
-
     elif B is openArray | seq:
       fillString(a, b)
-
     else:
       {.fatal: "type mismatch".}
-
   else:
     {.fatal: "type mismatch".}
 
-template `<<<`*[A: SomeBuffer|SomeString](a: A, b: SomeString) =
+template `<<<`*[A: SomeBuffer | SomeString](a: A, b: SomeString) =
   ## Fill buffer by string, include a null.
   ## Please make sure both side have the same character size.
   ## If destination don't have the length information (e.g. `pointer` or `UncheckedArray`),
@@ -912,30 +1013,23 @@
   when A is SomeString:
     # treat string a as buffer
     var v = cast[ptr UncheckedArray[a[0].type]](&a)
-    fillBuffer(v.toOpenArray(0, a.len - 1), b, inclNull=true)
-
+    fillBuffer(v.toOpenArray(0, a.len - 1), b, inclNull = true)
   else:
     when A is array:
-      fillBuffer(a.toOpenArray(a.low, a.high), b, skip=a.low, inclNull=true)
-
+      fillBuffer(a.toOpenArray(a.low, a.high), b, skip = a.low, inclNull = true)
     elif A is ptr array:
-      fillBuffer(a[].toOpenArray(a[].low, a[].high), b, skip=a[].low, inclNull=true)
-
+      fillBuffer(a[].toOpenArray(a[].low, a[].high), b, skip = a[].low, inclNull = true)
     elif A is ptr char | ptr byte:
       var v = cast[ptr UncheckedArray[byte]](a)
-      fillBuffer(v.toOpenArray(0, int.high - 1), b, inclNull=true)
-
+      fillBuffer(v.toOpenArray(0, int.high - 1), b, inclNull = true)
     elif A is ptr WCHAR:
       var v = cast[ptr UncheckedArray[WCHAR]](a)
-      fillBuffer(v.toOpenArray(0, int.high - 1), b, inclNull=true)
-
+      fillBuffer(v.toOpenArray(0, int.high - 1), b, inclNull = true)
     elif A is ptr UncheckedArray:
       var v = a
-      fillBuffer(v.toOpenArray(0, int.high - 1), b, inclNull=true)
-
+      fillBuffer(v.toOpenArray(0, int.high - 1), b, inclNull = true)
     elif A is openArray | seq:
-      fillBuffer(a, b, inclNull=true)
-
+      fillBuffer(a, b, inclNull = true)
     else:
       {.fatal: "type mismatch".}
 
@@ -949,60 +1043,65 @@
 
 proc nullTerminate*(s: var SomeString) {.inline.} =
   ## Assume a string is null terminated and set the correct length.
-  when s is string|mstring:
+  when s is string | mstring:
     let L = lstrlenA(cast[LPCSTR](&s))
     if L < s.len:
       s.setLen(L)
-
   elif s is wstring:
     let L = lstrlenW(cast[LPWSTR](&s))
     if L < s.len:
       s.setLen(L)
-
-  else: {.fatal: "invalid type".}
+  else:
+    {.fatal: "invalid type".}
 
 proc nullTerminated*[T: SomeString](s: T): T {.inline.} =
   ## Assume a string is null terminated and return the length-corrected string.
   when s is string:
     result = newString(lstrlenA(cast[LPCSTR](&s)))
     result << &s
-
   elif s is mstring:
     result = newMString(lstrlenA(cast[LPCSTR](&s)))
     result << &s
-
   elif s is wstring:
     result = newWString(lstrlenW(cast[LPWSTR](&s)))
     result << &s
-
-  else: {.fatal: "invalid type".}
+  else:
+    {.fatal: "invalid type".}
 
 # generics has problems on converters, define one by one
 
-converter winstrConverterWStringToLPWSTR*(x: wstring): LPWSTR = cast[LPWSTR](&x)
+converter winstrConverterWStringToLPWSTR*(x: wstring): LPWSTR =
   ## Converts `wstring` to `LPWSTR` automatically.
+  cast[LPWSTR](&x)
 
-converter winstrConverterWStringToBSTR*(x: wstring): BSTR = cast[BSTR](&x)
+converter winstrConverterWStringToBSTR*(x: wstring): BSTR =
   ## Converts `wstring` to `BSTR` automatically.
+  cast[BSTR](&x)
 
-converter winstrConverterBSTRToLPWSTR*(x: BSTR): LPWSTR = cast[LPWSTR](x)
+converter winstrConverterBSTRToLPWSTR*(x: BSTR): LPWSTR =
   ## Converts `BSTR` to `LPWSTR` automatically.
+  cast[LPWSTR](x)
 
-converter winstrConverterStringToPtrChar*(x: string): ptr char = cast[ptr char](&x)
+converter winstrConverterStringToPtrChar*(x: string): ptr char =
   ## Converts `string` to `ptr char` automatically.
+  cast[ptr char](&x)
 
-converter winstrConverterCStringToPtrChar*(x: cstring): ptr char = cast[ptr char](x)
+converter winstrConverterCStringToPtrChar*(x: cstring): ptr char =
   ## Converts `cstring` to `ptr char` automatically.
+  cast[ptr char](x)
 
-converter winstrConverterMStringToPtrChar*(x: mstring): ptr char = cast[ptr char](&x)
+converter winstrConverterMStringToPtrChar*(x: mstring): ptr char =
   ## Converts `mstring` to `ptr char` automatically.
+  cast[ptr char](&x)
 
-converter winstrConverterMStringToLPSTR*(x: mstring): LPSTR = cast[LPSTR](&x)
+converter winstrConverterMStringToLPSTR*(x: mstring): LPSTR =
   ## Converts `mstring` to `LPSTR` automatically.
+  cast[LPSTR](&x)
 
 when defined(gcDestructors):
-  converter winstrConverterWideCStringToLPWSTR*(x: WideCStringObj): LPWSTR = cast[LPWSTR](x[0].unsafeaddr)
+  converter winstrConverterWideCStringToLPWSTR*(x: WideCStringObj): LPWSTR =
     ## Converts `WideCString` to `LPWSTR` automatically.
+    cast[LPWSTR](x[0].unsafeaddr)
 
   proc `+$`*(s: WideCStringObj): wstring {.inline.} =
     ## Converts `WideCString` to `wstring`.
@@ -1018,8 +1117,9 @@
       s >> result
 
 else:
-  converter winstrConverterWideCStringToLPWSTR*(x: WideCString): LPWSTR = cast[LPWSTR](x[0].unsafeaddr)
+  converter winstrConverterWideCStringToLPWSTR*(x: WideCString): LPWSTR =
     ## Converts `WideCString` to `LPWSTR` automatically.
+    cast[LPWSTR](x[0].unsafeaddr)
 
   proc `+$`*(s: WideCString): wstring {.inline.} =
     ## Converts `WideCString` to `wstring`.
@@ -1047,45 +1147,54 @@
     if not wstringQueueInit:
       wstringQueue = initDeque[wstring]()
       wstringQueueInit = true
-
     elif wstringQueue.len > 128:
-      wstringQueue.shrink(fromFirst=64)
+      wstringQueue.shrink(fromFirst = 64)
 
     wstringQueue.addLast str
     &wstringQueue[^1]
 
-  converter winstrConverterStringToLPWSTR*(x: string): LPWSTR = saddr(+$x)
+  converter winstrConverterStringToLPWSTR*(x: string): LPWSTR =
     ## Converts `string` to `LPWSTR` automatically.
+    saddr(+$x)
 
-  converter winstrConverterCStringToLPWSTR*(x: cstring): LPWSTR = saddr(+$x)
+  converter winstrConverterCStringToLPWSTR*(x: cstring): LPWSTR =
     ## Converts `cstring` to `LPWSTR` automatically.
+    saddr(+$x)
 
-  converter winstrConverterStringToBSTR*(x: string): BSTR = cast[BSTR](saddr(+$x))
+  converter winstrConverterStringToBSTR*(x: string): BSTR =
     ## Converts `string` to `BSTR` automatically.
+    cast[BSTR](saddr(+$x))
 
-  converter winstrConverterCStringToBSTR*(x: cstring): BSTR = cast[BSTR](saddr(+$x))
+  converter winstrConverterCStringToBSTR*(x: cstring): BSTR =
     ## Converts `cstring` to `BSTR` automatically.
+    cast[BSTR](saddr(+$x))
 
 else:
-  converter winstrConverterStringToLPWSTR*(x: string): LPWSTR = cast[LPWSTR](&(+$x))
+  converter winstrConverterStringToLPWSTR*(x: string): LPWSTR =
     ## Converts `string` to `LPWSTR` automatically.
+    cast[LPWSTR](&(+$x))
 
-  converter winstrConverterCStringToLPWSTR*(x: cstring): LPWSTR = cast[LPWSTR](&(+$x))
+  converter winstrConverterCStringToLPWSTR*(x: cstring): LPWSTR =
     ## Converts `cstring` to `LPWSTR` automatically.
+    cast[LPWSTR](&(+$x))
 
-  converter winstrConverterStringToBSTR*(x: string): BSTR = cast[BSTR](&(+$x))
+  converter winstrConverterStringToBSTR*(x: string): BSTR =
     ## Converts `string` to `BSTR` automatically.
+    cast[BSTR](&(+$x))
 
-  converter winstrConverterCStringToBSTR*(x: cstring): BSTR = cast[BSTR](&(+$x))
+  converter winstrConverterCStringToBSTR*(x: cstring): BSTR =
     ## Converts `cstring` to `BSTR` automatically.
+    cast[BSTR](&(+$x))
 
-proc newWString*(s: cstring|string|mstring): wstring {.inline,
-    deprecated: "use `+$` instead".} =
+proc newWString*(
+    s: cstring | string | mstring
+): wstring {.inline, deprecated: "use `+$` instead".} =
   ## Return a new `wstring`.
   result = +$s
 
-proc newMString*(s: string|cstring|wstring): mstring {.inline,
-  deprecated: "use `-$` instead".} =
+proc newMString*(
+    s: string | cstring | wstring
+): mstring {.inline, deprecated: "use `-$` instead".} =
   ## Return a new `mstring`.
   result = -$s
 
@@ -1105,41 +1214,49 @@
     UNI_SUR_LOW_END = 0xDFFF
     UNI_REPL = 0xFFFD
 
-  template ones(n: untyped): untyped = ((1 shl n)-1)
+  template ones(n: untyped): untyped =
+    ((1 shl n) - 1)
 
   template fastRuneAt(s: cstring, i, L: int, result: untyped, doInc = true) =
     if ord(s[i]) <= 127:
       result = ord(s[i])
-      when doInc: inc(i)
+      when doInc:
+        inc(i)
     elif ord(s[i]) shr 5 == 0b110:
       if i <= L - 2:
-        result = (ord(s[i]) and (ones(5))) shl 6 or (ord(s[i+1]) and ones(6))
-        when doInc: inc(i, 2)
+        result = (ord(s[i]) and (ones(5))) shl 6 or (ord(s[i + 1]) and ones(6))
+        when doInc:
+          inc(i, 2)
       else:
         result = UNI_REPL
-        when doInc: inc(i)
+        when doInc:
+          inc(i)
     elif ord(s[i]) shr 4 == 0b1110:
       if i <= L - 3:
-        result = (ord(s[i]) and ones(4)) shl 12 or
-                 (ord(s[i+1]) and ones(6)) shl 6 or
-                 (ord(s[i+2]) and ones(6))
-        when doInc: inc(i, 3)
+        result =
+          (ord(s[i]) and ones(4)) shl 12 or (ord(s[i + 1]) and ones(6)) shl 6 or
+          (ord(s[i + 2]) and ones(6))
+        when doInc:
+          inc(i, 3)
       else:
         result = UNI_REPL
-        when doInc: inc(i)
+        when doInc:
+          inc(i)
     elif ord(s[i]) shr 3 == 0b11110:
       if i <= L - 4:
-        result = (ord(s[i]) and ones(3)) shl 18 or
-                 (ord(s[i+1]) and ones(6)) shl 12 or
-                 (ord(s[i+2]) and ones(6)) shl 6 or
-                 (ord(s[i+3]) and ones(6))
-        when doInc: inc(i, 4)
+        result =
+          (ord(s[i]) and ones(3)) shl 18 or (ord(s[i + 1]) and ones(6)) shl 12 or
+          (ord(s[i + 2]) and ones(6)) shl 6 or (ord(s[i + 3]) and ones(6))
+        when doInc:
+          inc(i, 4)
       else:
         result = UNI_REPL
-        when doInc: inc(i)
+        when doInc:
+          inc(i)
     else:
       result = 0xFFFD
-      when doInc: inc(i)
+      when doInc:
+        inc(i)
 
   iterator runes(s: cstring, L: int): int =
     var
@@ -1177,8 +1294,9 @@
   const wstr = ctNewWString(x)
   wstr
 
-template L*(x: string): wstring = +$x
+template L*(x: string): wstring =
   ## Same as `+$` for dynamic string (string at run-time).
+  +$x
 
 template T*(x: string): untyped =
   ## Generate wstring or mstring depend on conditional symbol: `useWinAnsi`.
@@ -1197,11 +1315,12 @@
     newWString(x)
 
 when winimAnsi:
-  type
-    TString* = mstring ## `wstring` or `mstring` depend on conditional symbol: `useWinAnsi`.
+  type TString* = mstring
+    ## `wstring` or `mstring` depend on conditional symbol: `useWinAnsi`.
+
 else:
-  type
-    TString* = wstring ## `wstring` or `mstring` depend on conditional symbol: `useWinAnsi`.
+  type TString* = wstring
+    ## `wstring` or `mstring` depend on conditional symbol: `useWinAnsi`.
 
 when isMainModule:
   let str = "the quick brown fox jumps over the lazy dog"
--- a/semicongine/thirdparty/x11/keysym.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/keysym.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -13,8 +13,7 @@
 #* default keysyms *
 import x
 
-const
-  XK_VoidSymbol*: KeySym = 0x00FFFFFF # void symbol
+const XK_VoidSymbol*: KeySym = 0x00FFFFFF # void symbol
 
 when defined(XK_MISCELLANY) or true:
   const
@@ -23,74 +22,78 @@
     # * programming, but could have been arbitrary (at the cost of lookup
     # * tables in client code.
     # *
-    XK_BackSpace*: KeySym = 0x0000FF08  # back space, back char
+    XK_BackSpace*: KeySym = 0x0000FF08 # back space, back char
     XK_Tab*: KeySym = 0x0000FF09
-    XK_Linefeed*: KeySym = 0x0000FF0A   # Linefeed, LF
+    XK_Linefeed*: KeySym = 0x0000FF0A # Linefeed, LF
     XK_Clear*: KeySym = 0x0000FF0B
-    XK_Return*: KeySym = 0x0000FF0D     # Return, enter
-    XK_Pause*: KeySym = 0x0000FF13      # Pause, hold
+    XK_Return*: KeySym = 0x0000FF0D # Return, enter
+    XK_Pause*: KeySym = 0x0000FF13 # Pause, hold
     XK_Scroll_Lock*: KeySym = 0x0000FF14
     XK_Sys_Req*: KeySym = 0x0000FF15
     XK_Escape*: KeySym = 0x0000FF1B
-    XK_Delete*: KeySym = 0x0000FFFF     # Delete, rubout \
-                                # International & multi-key character composition
-    XK_Multi_key*: KeySym = 0x0000FF20  # Multi-key character compose
+    XK_Delete*: KeySym = 0x0000FFFF
+      # Delete, rubout \
+      # International & multi-key character composition
+    XK_Multi_key*: KeySym = 0x0000FF20 # Multi-key character compose
     XK_Codeinput*: KeySym = 0x0000FF37
     XK_SingleCandidate*: KeySym = 0x0000FF3C
     XK_MultipleCandidate*: KeySym = 0x0000FF3D
     XK_PreviousCandidate*: KeySym = 0x0000FF3E # Japanese keyboard support
-    XK_Kanji*: KeySym = 0x0000FF21      # Kanji, Kanji convert
-    XK_Muhenkan*: KeySym = 0x0000FF22   # Cancel Conversion
+    XK_Kanji*: KeySym = 0x0000FF21 # Kanji, Kanji convert
+    XK_Muhenkan*: KeySym = 0x0000FF22 # Cancel Conversion
     XK_Henkan_Mode*: KeySym = 0x0000FF23 # Start/Stop Conversion
-    XK_Henkan*: KeySym = 0x0000FF23     # Alias for Henkan_Mode
-    XK_Romaji*: KeySym = 0x0000FF24     # to Romaji
-    XK_Hiragana*: KeySym = 0x0000FF25   # to Hiragana
-    XK_Katakana*: KeySym = 0x0000FF26   # to Katakana
+    XK_Henkan*: KeySym = 0x0000FF23 # Alias for Henkan_Mode
+    XK_Romaji*: KeySym = 0x0000FF24 # to Romaji
+    XK_Hiragana*: KeySym = 0x0000FF25 # to Hiragana
+    XK_Katakana*: KeySym = 0x0000FF26 # to Katakana
     XK_Hiragana_Katakana*: KeySym = 0x0000FF27 # Hiragana/Katakana toggle
-    XK_Zenkaku*: KeySym = 0x0000FF28    # to Zenkaku
-    XK_Hankaku*: KeySym = 0x0000FF29    # to Hankaku
+    XK_Zenkaku*: KeySym = 0x0000FF28 # to Zenkaku
+    XK_Hankaku*: KeySym = 0x0000FF29 # to Hankaku
     XK_Zenkaku_Hankaku*: KeySym = 0x0000FF2A # Zenkaku/Hankaku toggle
-    XK_Touroku*: KeySym = 0x0000FF2B    # Add to Dictionary
-    XK_Massyo*: KeySym = 0x0000FF2C     # Delete from Dictionary
-    XK_Kana_Lock*: KeySym = 0x0000FF2D  # Kana Lock
+    XK_Touroku*: KeySym = 0x0000FF2B # Add to Dictionary
+    XK_Massyo*: KeySym = 0x0000FF2C # Delete from Dictionary
+    XK_Kana_Lock*: KeySym = 0x0000FF2D # Kana Lock
     XK_Kana_Shift*: KeySym = 0x0000FF2E # Kana Shift
     XK_Eisu_Shift*: KeySym = 0x0000FF2F # Alphanumeric Shift
     XK_Eisu_toggle*: KeySym = 0x0000FF30 # Alphanumeric toggle
     XK_Kanji_Bangou*: KeySym = 0x0000FF37 # Codeinput
-    XK_Zen_Koho*: KeySym = 0x0000FF3D   # Multiple/All Candidate(s)
-    XK_Mae_Koho*: KeySym = 0x0000FF3E   # Previous Candidate \
-                                # = $FF31 thru = $FF3F are under XK_KOREAN
-                                # Cursor control & motion
+    XK_Zen_Koho*: KeySym = 0x0000FF3D # Multiple/All Candidate(s)
+    XK_Mae_Koho*: KeySym = 0x0000FF3E
+      # Previous Candidate \
+      # = $FF31 thru = $FF3F are under XK_KOREAN
+      # Cursor control & motion
     XK_Home*: KeySym = 0x0000FF50
-    XK_Left*: KeySym = 0x0000FF51       # Move left, left arrow
-    XK_Up*: KeySym = 0x0000FF52         # Move up, up arrow
-    XK_Right*: KeySym = 0x0000FF53      # Move right, right arrow
-    XK_Down*: KeySym = 0x0000FF54       # Move down, down arrow
-    XK_Prior*: KeySym = 0x0000FF55      # Prior, previous
+    XK_Left*: KeySym = 0x0000FF51 # Move left, left arrow
+    XK_Up*: KeySym = 0x0000FF52 # Move up, up arrow
+    XK_Right*: KeySym = 0x0000FF53 # Move right, right arrow
+    XK_Down*: KeySym = 0x0000FF54 # Move down, down arrow
+    XK_Prior*: KeySym = 0x0000FF55 # Prior, previous
     XK_Page_Up*: KeySym = 0x0000FF55
-    XK_Next*: KeySym = 0x0000FF56       # Next
+    XK_Next*: KeySym = 0x0000FF56 # Next
     XK_Page_Down*: KeySym = 0x0000FF56
-    XK_End*: KeySym = 0x0000FF57        # EOL
-    XK_Begin*: KeySym = 0x0000FF58      # BOL \
-                                # Misc Functions
-    XK_Select*: KeySym = 0x0000FF60     # Select, mark
+    XK_End*: KeySym = 0x0000FF57 # EOL
+    XK_Begin*: KeySym = 0x0000FF58
+      # BOL \
+      # Misc Functions
+    XK_Select*: KeySym = 0x0000FF60 # Select, mark
     XK_Print*: KeySym = 0x0000FF61
-    XK_Execute*: KeySym = 0x0000FF62    # Execute, run, do
-    XK_Insert*: KeySym = 0x0000FF63     # Insert, insert here
-    XK_Undo*: KeySym = 0x0000FF65       # Undo, oops
-    XK_Redo*: KeySym = 0x0000FF66       # redo, again
+    XK_Execute*: KeySym = 0x0000FF62 # Execute, run, do
+    XK_Insert*: KeySym = 0x0000FF63 # Insert, insert here
+    XK_Undo*: KeySym = 0x0000FF65 # Undo, oops
+    XK_Redo*: KeySym = 0x0000FF66 # redo, again
     XK_Menu*: KeySym = 0x0000FF67
-    XK_Find*: KeySym = 0x0000FF68       # Find, search
-    XK_Cancel*: KeySym = 0x0000FF69     # Cancel, stop, abort, exit
-    XK_Help*: KeySym = 0x0000FF6A       # Help
+    XK_Find*: KeySym = 0x0000FF68 # Find, search
+    XK_Cancel*: KeySym = 0x0000FF69 # Cancel, stop, abort, exit
+    XK_Help*: KeySym = 0x0000FF6A # Help
     XK_Break*: KeySym = 0x0000FF6B
     XK_Mode_switch*: KeySym = 0x0000FF7E # Character set switch
     XK_script_switch*: KeySym = 0x0000FF7E # Alias for mode_switch
-    XK_Num_Lock*: KeySym = 0x0000FF7F   # Keypad Functions, keypad numbers cleverly chosen to map to ascii
-    XK_KP_Space*: KeySym = 0x0000FF80   # space
+    XK_Num_Lock*: KeySym = 0x0000FF7F
+      # Keypad Functions, keypad numbers cleverly chosen to map to ascii
+    XK_KP_Space*: KeySym = 0x0000FF80 # space
     XK_KP_Tab*: KeySym = 0x0000FF89
-    XK_KP_Enter*: KeySym = 0x0000FF8D   # enter
-    XK_KP_F1*: KeySym = 0x0000FF91      # PF1, KP_A, ...
+    XK_KP_Enter*: KeySym = 0x0000FF8D # enter
+    XK_KP_F1*: KeySym = 0x0000FF91 # PF1, KP_A, ...
     XK_KP_F2*: KeySym = 0x0000FF92
     XK_KP_F3*: KeySym = 0x0000FF93
     XK_KP_F4*: KeySym = 0x0000FF94
@@ -107,7 +110,7 @@
     XK_KP_Begin*: KeySym = 0x0000FF9D
     XK_KP_Insert*: KeySym = 0x0000FF9E
     XK_KP_Delete*: KeySym = 0x0000FF9F
-    XK_KP_Equal*: KeySym = 0x0000FFBD   # equals
+    XK_KP_Equal*: KeySym = 0x0000FFBD # equals
     XK_KP_Multiply*: KeySym = 0x0000FFAA
     XK_KP_Add*: KeySym = 0x0000FFAB
     XK_KP_Separator*: KeySym = 0x0000FFAC # separator, often comma
@@ -123,12 +126,13 @@
     XK_KP_6*: KeySym = 0x0000FFB6
     XK_KP_7*: KeySym = 0x0000FFB7
     XK_KP_8*: KeySym = 0x0000FFB8
-    XK_KP_9*: KeySym = 0x0000FFB9 #*\
-                          # * Auxilliary Functions; note the duplicate definitions for left and right
-                          # * function keys;  Sun keyboards and a few other manufactures have such
-                          # * function key groups on the left and/or right sides of the keyboard.
-                          # * We've not found a keyboard with more than 35 function keys total.
-                          # *
+    XK_KP_9*: KeySym = 0x0000FFB9
+      #*\
+      # * Auxilliary Functions; note the duplicate definitions for left and right
+      # * function keys;  Sun keyboards and a few other manufactures have such
+      # * function key groups on the left and/or right sides of the keyboard.
+      # * We've not found a keyboard with more than 35 function keys total.
+      # *
     XK_F1*: KeySym = 0x0000FFBE
     XK_F2*: KeySym = 0x0000FFBF
     XK_F3*: KeySym = 0x0000FFC0
@@ -188,21 +192,21 @@
     XK_F34*: KeySym = 0x0000FFDF
     XK_R14*: KeySym = 0x0000FFDF
     XK_F35*: KeySym = 0x0000FFE0
-    XK_R15*: KeySym = 0x0000FFE0        # Modifiers
-    XK_Shift_L*: KeySym = 0x0000FFE1    # Left shift
-    XK_Shift_R*: KeySym = 0x0000FFE2    # Right shift
-    XK_Control_L*: KeySym = 0x0000FFE3  # Left control
-    XK_Control_R*: KeySym = 0x0000FFE4  # Right control
-    XK_Caps_Lock*: KeySym = 0x0000FFE5  # Caps lock
+    XK_R15*: KeySym = 0x0000FFE0 # Modifiers
+    XK_Shift_L*: KeySym = 0x0000FFE1 # Left shift
+    XK_Shift_R*: KeySym = 0x0000FFE2 # Right shift
+    XK_Control_L*: KeySym = 0x0000FFE3 # Left control
+    XK_Control_R*: KeySym = 0x0000FFE4 # Right control
+    XK_Caps_Lock*: KeySym = 0x0000FFE5 # Caps lock
     XK_Shift_Lock*: KeySym = 0x0000FFE6 # Shift lock
-    XK_Meta_L*: KeySym = 0x0000FFE7     # Left meta
-    XK_Meta_R*: KeySym = 0x0000FFE8     # Right meta
-    XK_Alt_L*: KeySym = 0x0000FFE9      # Left alt
-    XK_Alt_R*: KeySym = 0x0000FFEA      # Right alt
-    XK_Super_L*: KeySym = 0x0000FFEB    # Left super
-    XK_Super_R*: KeySym = 0x0000FFEC    # Right super
-    XK_Hyper_L*: KeySym = 0x0000FFED    # Left hyper
-    XK_Hyper_R*: KeySym = 0x0000FFEE    # Right hyper
+    XK_Meta_L*: KeySym = 0x0000FFE7 # Left meta
+    XK_Meta_R*: KeySym = 0x0000FFE8 # Right meta
+    XK_Alt_L*: KeySym = 0x0000FFE9 # Left alt
+    XK_Alt_R*: KeySym = 0x0000FFEA # Right alt
+    XK_Super_L*: KeySym = 0x0000FFEB # Left super
+    XK_Super_R*: KeySym = 0x0000FFEC # Right super
+    XK_Hyper_L*: KeySym = 0x0000FFED # Left hyper
+    XK_Hyper_R*: KeySym = 0x0000FFEE # Right hyper
 # XK_MISCELLANY
 #*
 # * ISO 9995 Function and Modifier Keys
@@ -423,7 +427,7 @@
     XK_asciicircum*: KeySym = 0x0000005E
     XK_underscore*: KeySym = 0x0000005F
     XK_grave*: KeySym = 0x00000060
-    XK_quoteleft*: KeySym = 0x00000060  # deprecated
+    XK_quoteleft*: KeySym = 0x00000060 # deprecated
     XK_a*: KeySym = 0x00000061
     XK_b*: KeySym = 0x00000062
     XK_c*: KeySym = 0x00000063
@@ -656,7 +660,7 @@
 when defined(XK_LATIN4) or true:
   const
     XK_kra*: KeySym = 0x000003A2
-    XK_kappa*: KeySym = 0x000003A2      # deprecated
+    XK_kappa*: KeySym = 0x000003A2 # deprecated
     XKc_Rcedilla*: KeySym = 0x000003A3
     XKc_Itilde*: KeySym = 0x000003A5
     XKc_Lcedilla*: KeySym = 0x000003A6
@@ -761,7 +765,7 @@
     XK_kana_yu*: KeySym = 0x000004AD
     XK_kana_yo*: KeySym = 0x000004AE
     XK_kana_tsu*: KeySym = 0x000004AF
-    XK_kana_tu*: KeySym = 0x000004AF    # deprecated
+    XK_kana_tu*: KeySym = 0x000004AF # deprecated
     XK_prolongedsound*: KeySym = 0x000004B0
     XKc_kana_A*: KeySym = 0x000004B1
     XKc_kana_I*: KeySym = 0x000004B2
@@ -780,9 +784,9 @@
     XKc_kana_SO*: KeySym = 0x000004BF
     XKc_kana_TA*: KeySym = 0x000004C0
     XKc_kana_CHI*: KeySym = 0x000004C1
-    XKc_kana_TI*: KeySym = 0x000004C1   # deprecated
+    XKc_kana_TI*: KeySym = 0x000004C1 # deprecated
     XKc_kana_TSU*: KeySym = 0x000004C2
-    XKc_kana_TU*: KeySym = 0x000004C2   # deprecated
+    XKc_kana_TU*: KeySym = 0x000004C2 # deprecated
     XKc_kana_TE*: KeySym = 0x000004C3
     XKc_kana_TO*: KeySym = 0x000004C4
     XKc_kana_NA*: KeySym = 0x000004C5
@@ -793,7 +797,7 @@
     XKc_kana_HA*: KeySym = 0x000004CA
     XKc_kana_HI*: KeySym = 0x000004CB
     XKc_kana_FU*: KeySym = 0x000004CC
-    XKc_kana_HU*: KeySym = 0x000004CC   # deprecated
+    XKc_kana_HU*: KeySym = 0x000004CC # deprecated
     XKc_kana_HE*: KeySym = 0x000004CD
     XKc_kana_HO*: KeySym = 0x000004CE
     XKc_kana_MA*: KeySym = 0x000004CF
@@ -1498,7 +1502,7 @@
 
 when defined(XK_KOREAN) or true:
   const
-    XK_Hangul*: KeySym = 0x0000FF31     # Hangul start/stop(toggle)
+    XK_Hangul*: KeySym = 0x0000FF31 # Hangul start/stop(toggle)
     XK_Hangul_Start*: KeySym = 0x0000FF32 # Hangul start
     XK_Hangul_End*: KeySym = 0x0000FF33 # Hangul end, English start
     XK_Hangul_Hanja*: KeySym = 0x0000FF34 # Start Hangul->Hanja Conversion
@@ -1513,8 +1517,9 @@
     XK_Hangul_MultipleCandidate*: KeySym = 0x0000FF3D # Multiple candidate
     XK_Hangul_PreviousCandidate*: KeySym = 0x0000FF3E # Previous candidate
     XK_Hangul_Special*: KeySym = 0x0000FF3F # Special symbols
-    XK_Hangul_switch*: KeySym = 0x0000FF7E # Alias for mode_switch \
-                                   # Hangul Consonant Characters
+    XK_Hangul_switch*: KeySym = 0x0000FF7E
+      # Alias for mode_switch \
+      # Hangul Consonant Characters
     XK_Hangul_Kiyeog*: KeySym = 0x00000EA1
     XK_Hangul_SsangKiyeog*: KeySym = 0x00000EA2
     XK_Hangul_KiyeogSios*: KeySym = 0x00000EA3
@@ -1565,7 +1570,7 @@
     XK_Hangul_YU*: KeySym = 0x00000ED0
     XK_Hangul_EU*: KeySym = 0x00000ED1
     XK_Hangul_YI*: KeySym = 0x00000ED2
-    XK_Hangul_I*: KeySym = 0x00000ED3   # Hangul syllable-final (JongSeong) Characters
+    XK_Hangul_I*: KeySym = 0x00000ED3 # Hangul syllable-final (JongSeong) Characters
     XK_Hangul_J_Kiyeog*: KeySym = 0x00000ED4
     XK_Hangul_J_SsangKiyeog*: KeySym = 0x00000ED5
     XK_Hangul_J_KiyeogSios*: KeySym = 0x00000ED6
@@ -1601,7 +1606,8 @@
     XK_Hangul_SunkyeongeumPhieuf*: KeySym = 0x00000EF4
     XK_Hangul_YeorinHieuh*: KeySym = 0x00000EF5 # Ancient Hangul Vowel Characters
     XK_Hangul_AraeA*: KeySym = 0x00000EF6
-    XK_Hangul_AraeAE*: KeySym = 0x00000EF7 # Ancient Hangul syllable-final (JongSeong) Characters
+    XK_Hangul_AraeAE*: KeySym = 0x00000EF7
+      # Ancient Hangul syllable-final (JongSeong) Characters
     XK_Hangul_J_PanSios*: KeySym = 0x00000EF8
     XK_Hangul_J_KkogjiDalrinIeung*: KeySym = 0x00000EF9
     XK_Hangul_J_YeorinHieuh*: KeySym = 0x00000EFA # Korean currency symbol
@@ -1793,8 +1799,9 @@
     XK_ocaron*: KeySym = 0x000016BD
     XK_obarred*: KeySym = 0x000016BF
     XKc_SCHWA*: KeySym = 0x000016C6
-    XK_schwa*: KeySym = 0x000016F6 # those are not really Caucasus, but I put them here for now\ 
-                           # For Inupiak
+    XK_schwa*: KeySym = 0x000016F6
+      # those are not really Caucasus, but I put them here for now\ 
+      # For Inupiak
     XKc_Lbelowdot*: KeySym = 0x000016D1
     XKc_Lstrokebelowdot*: KeySym = 0x000016D2
     XK_lbelowdot*: KeySym = 0x000016E1
@@ -1897,10 +1904,10 @@
     XK_yhook*: KeySym = 0x00001EF7
     XKc_Ytilde*: KeySym = 0x00001EF8
     XK_ytilde*: KeySym = 0x00001EF9
-    XKc_Ohorn*: KeySym = 0x00001EFA     # U+01a0
-    XK_ohorn*: KeySym = 0x00001EFB      # U+01a1
-    XKc_Uhorn*: KeySym = 0x00001EFC     # U+01af
-    XK_uhorn*: KeySym = 0x00001EFD      # U+01b0
+    XKc_Ohorn*: KeySym = 0x00001EFA # U+01a0
+    XK_ohorn*: KeySym = 0x00001EFB # U+01a1
+    XKc_Uhorn*: KeySym = 0x00001EFC # U+01af
+    XK_uhorn*: KeySym = 0x00001EFD # U+01b0
     XK_combining_tilde*: KeySym = 0x00001E9F # U+0303
     XK_combining_grave*: KeySym = 0x00001EF2 # U+0300
     XK_combining_acute*: KeySym = 0x00001EF3 # U+0301
--- a/semicongine/thirdparty/x11/x.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/x.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,4 +1,3 @@
-
 #
 #  Automatically converted by H2Pas 0.99.15 from x.h
 #  The following command line parameters were used:
--- a/semicongine/thirdparty/x11/x11pragma.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/x11pragma.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,20 +1,17 @@
 # included from xlib bindings
 
-
 when defined(use_pkg_config) or defined(use_pkg_config_static):
-    {.pragma: libx11, cdecl, importc.}
-    {.pragma: libx11c, cdecl.}
-    when defined(use_pkg_config_static):
-        {.passl: gorge("pkg-config x11 --static --libs").}
-    else:
-        {.passl: gorge("pkg-config x11 --libs").}
+  {.pragma: libx11, cdecl, importc.}
+  {.pragma: libx11c, cdecl.}
+  when defined(use_pkg_config_static):
+    {.passl: gorge("pkg-config x11 --static --libs").}
+  else:
+    {.passl: gorge("pkg-config x11 --libs").}
 else:
-    when defined(macosx):
-        const
-          libX11* = "libX11.dylib"
-    else:
-        const
-          libX11* = "libX11.so(|.6)"
+  when defined(macosx):
+    const libX11* = "libX11.dylib"
+  else:
+    const libX11* = "libX11.so(|.6)"
 
-    {.pragma: libx11, cdecl, dynlib: libX11, importc.}
-    {.pragma: libx11c, cdecl, dynlib: libX11.}
+  {.pragma: libx11, cdecl, dynlib: libX11, importc.}
+  {.pragma: libx11c, cdecl, dynlib: libX11.}
--- a/semicongine/thirdparty/x11/xatom.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xatom.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -4,8 +4,7 @@
 # Do not change!  Changing this file implies a protocol change!
 #
 
-import
-  x
+import x
 
 const
   XA_PRIMARY* = Atom(1)
--- a/semicongine/thirdparty/x11/xcms.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xcms.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,5 +1,4 @@
-import
-  x, xlib
+import x, xlib
 
 #const
 #  libX11* = "X11"
@@ -42,94 +41,100 @@
   PXcmsFloat* = ptr XcmsFloat
   XcmsFloat* = float64
   PXcmsRGB* = ptr XcmsRGB
-  XcmsRGB*{.final.} = object
+  XcmsRGB* {.final.} = object
     red*: int16
     green*: int16
     blue*: int16
 
   PXcmsRGBi* = ptr XcmsRGBi
-  XcmsRGBi*{.final.} = object
+  XcmsRGBi* {.final.} = object
     red*: XcmsFloat
     green*: XcmsFloat
     blue*: XcmsFloat
 
   PXcmsCIEXYZ* = ptr XcmsCIEXYZ
-  XcmsCIEXYZ*{.final.} = object
+  XcmsCIEXYZ* {.final.} = object
     X*: XcmsFloat
     Y*: XcmsFloat
     Z*: XcmsFloat
 
   PXcmsCIEuvY* = ptr XcmsCIEuvY
-  XcmsCIEuvY*{.final.} = object
+  XcmsCIEuvY* {.final.} = object
     u_prime*: XcmsFloat
     v_prime*: XcmsFloat
     Y*: XcmsFloat
 
   PXcmsCIExyY* = ptr XcmsCIExyY
-  XcmsCIExyY*{.final.} = object
+  XcmsCIExyY* {.final.} = object
     x*: XcmsFloat
     y*: XcmsFloat
     theY*: XcmsFloat
 
   PXcmsCIELab* = ptr XcmsCIELab
-  XcmsCIELab*{.final.} = object
+  XcmsCIELab* {.final.} = object
     L_star*: XcmsFloat
     a_star*: XcmsFloat
     b_star*: XcmsFloat
 
   PXcmsCIELuv* = ptr XcmsCIELuv
-  XcmsCIELuv*{.final.} = object
+  XcmsCIELuv* {.final.} = object
     L_star*: XcmsFloat
     u_star*: XcmsFloat
     v_star*: XcmsFloat
 
   PXcmsTekHVC* = ptr XcmsTekHVC
-  XcmsTekHVC*{.final.} = object
+  XcmsTekHVC* {.final.} = object
     H*: XcmsFloat
     V*: XcmsFloat
     C*: XcmsFloat
 
   PXcmsPad* = ptr XcmsPad
-  XcmsPad*{.final.} = object
+  XcmsPad* {.final.} = object
     pad0*: XcmsFloat
     pad1*: XcmsFloat
     pad2*: XcmsFloat
     pad3*: XcmsFloat
 
   PXcmsColor* = ptr XcmsColor
-  XcmsColor*{.final.} = object # spec : record
-                               #            case longint of
-                               #               0 : ( RGB : XcmsRGB );
-                               #               1 : ( RGBi : XcmsRGBi );
-                               #               2 : ( CIEXYZ : XcmsCIEXYZ );
-                               #               3 : ( CIEuvY : XcmsCIEuvY );
-                               #               4 : ( CIExyY : XcmsCIExyY );
-                               #               5 : ( CIELab : XcmsCIELab );
-                               #               6 : ( CIELuv : XcmsCIELuv );
-                               #               7 : ( TekHVC : XcmsTekHVC );
-                               #               8 : ( Pad : XcmsPad );
-                               #            end;
+  XcmsColor* {.final.} = object
+    # spec : record
+    #            case longint of
+    #               0 : ( RGB : XcmsRGB );
+    #               1 : ( RGBi : XcmsRGBi );
+    #               2 : ( CIEXYZ : XcmsCIEXYZ );
+    #               3 : ( CIEuvY : XcmsCIEuvY );
+    #               4 : ( CIExyY : XcmsCIExyY );
+    #               5 : ( CIELab : XcmsCIELab );
+    #               6 : ( CIELuv : XcmsCIELuv );
+    #               7 : ( TekHVC : XcmsTekHVC );
+    #               8 : ( Pad : XcmsPad );
+    #            end;
     pad*: XcmsPad
     pixel*: int32
     format*: XcmsColorFormat
 
   PXcmsPerScrnInfo* = ptr XcmsPerScrnInfo
-  XcmsPerScrnInfo*{.final.} = object
+  XcmsPerScrnInfo* {.final.} = object
     screenWhitePt*: XcmsColor
     functionSet*: XPointer
     screenData*: XPointer
     state*: int8
-    pad*: array[0..2, char]
+    pad*: array[0 .. 2, char]
 
   PXcmsCCC* = ptr XcmsCCC
-  XcmsCompressionProc* = proc (para1: PXcmsCCC, para2: PXcmsColor,
-                                para3: int32, para4: int32, para5: PBool): Status{.
-      cdecl.}
-  XcmsWhiteAdjustProc* = proc (para1: PXcmsCCC, para2: PXcmsColor,
-                                para3: PXcmsColor, para4: XcmsColorFormat,
-                                para5: PXcmsColor, para6: int32, para7: PBool): Status{.
-      cdecl.}
-  XcmsCCC*{.final.} = object
+  XcmsCompressionProc* = proc(
+    para1: PXcmsCCC, para2: PXcmsColor, para3: int32, para4: int32, para5: PBool
+  ): Status {.cdecl.}
+  XcmsWhiteAdjustProc* = proc(
+    para1: PXcmsCCC,
+    para2: PXcmsColor,
+    para3: PXcmsColor,
+    para4: XcmsColorFormat,
+    para5: PXcmsColor,
+    para6: int32,
+    para7: PBool,
+  ): Status {.cdecl.}
+  XcmsCCC* {.final.} = object
     dpy*: PDisplay
     screenNumber*: int32
     visual*: PVisual
@@ -143,19 +148,19 @@
   PXcmsCCCRec* = ptr XcmsCCCRec
   XcmsCCCRec* = XcmsCCC
 
-  XcmsScreenInitProc* = proc (para1: PDisplay, para2: int32,
-                               para3: PXcmsPerScrnInfo): Status{.cdecl.}
-  XcmsScreenFreeProc* = proc (para1: XPointer){.cdecl.}
+  XcmsScreenInitProc* =
+    proc(para1: PDisplay, para2: int32, para3: PXcmsPerScrnInfo): Status {.cdecl.}
+  XcmsScreenFreeProc* = proc(para1: XPointer) {.cdecl.}
 
-  XcmsConversionProc* = proc (){.cdecl.}
+  XcmsConversionProc* = proc() {.cdecl.}
 
   PXcmsFuncListPtr* = ptr XcmsFuncListPtr
   XcmsFuncListPtr* = XcmsConversionProc
 
-  XcmsParseStringProc* = proc (para1: cstring, para2: PXcmsColor): int32{.cdecl.}
+  XcmsParseStringProc* = proc(para1: cstring, para2: PXcmsColor): int32 {.cdecl.}
 
   PXcmsColorSpace* = ptr XcmsColorSpace
-  XcmsColorSpace*{.final.} = object
+  XcmsColorSpace* {.final.} = object
     prefix*: cstring
     id*: XcmsColorFormat
     parseString*: XcmsParseStringProc
@@ -164,185 +169,313 @@
     inverse_flag*: int32
 
   PXcmsFunctionSet* = ptr XcmsFunctionSet
-  XcmsFunctionSet*{.final.} = object # error
-                                     # extern Status XcmsAddColorSpace (
-                                     # in declaration at line 323
+  XcmsFunctionSet* {.final.} = object
+    # error
+    # extern Status XcmsAddColorSpace (
+    # in declaration at line 323
     DDColorSpaces*: ptr PXcmsColorSpace
     screenInitProc*: XcmsScreenInitProc
     screenFreeProc*: XcmsScreenFreeProc
 
-proc XcmsAddFunctionSet*(para1: PXcmsFunctionSet): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsAllocColor*(para1: PDisplay, para2: Colormap, para3: PXcmsColor,
-                     para4: XcmsColorFormat): Status{.cdecl, dynlib: libX11,
-    importc.}
-proc XcmsAllocNamedColor*(para1: PDisplay, para2: Colormap, para3: cstring,
-                          para4: PXcmsColor, para5: PXcmsColor,
-                          para6: XcmsColorFormat): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsCCCOfColormap*(para1: PDisplay, para2: Colormap): XcmsCCC{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsCIELabClipab*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
-                       para4: int32, para5: PBool): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsCIELabClipL*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
-                      para4: int32, para5: PBool): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsCIELabClipLab*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
-                        para4: int32, para5: PBool): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsCIELabQueryMaxC*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
-                          para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
-    importc.}
-proc XcmsCIELabQueryMaxL*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
-                          para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
-    importc.}
-proc XcmsCIELabQueryMaxLC*(para1: XcmsCCC, para2: XcmsFloat, para3: PXcmsColor): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsCIELabQueryMinL*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
-                          para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
-    importc.}
-proc XcmsCIELabToCIEXYZ*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
-                         para4: int32): Status{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIELabWhiteShiftColors*(para1: XcmsCCC, para2: PXcmsColor,
-                                 para3: PXcmsColor, para4: XcmsColorFormat,
-                                 para5: PXcmsColor, para6: int32, para7: PBool): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsCIELuvClipL*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
-                      para4: int32, para5: PBool): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsCIELuvClipLuv*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
-                        para4: int32, para5: PBool): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsCIELuvClipuv*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
-                       para4: int32, para5: PBool): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsCIELuvQueryMaxC*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
-                          para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
-    importc.}
-proc XcmsCIELuvQueryMaxL*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
-                          para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
-    importc.}
-proc XcmsCIELuvQueryMaxLC*(para1: XcmsCCC, para2: XcmsFloat, para3: PXcmsColor): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsCIELuvQueryMinL*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
-                          para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
-    importc.}
-proc XcmsCIELuvToCIEuvY*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
-                         para4: int32): Status{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIELuvWhiteShiftColors*(para1: XcmsCCC, para2: PXcmsColor,
-                                 para3: PXcmsColor, para4: XcmsColorFormat,
-                                 para5: PXcmsColor, para6: int32, para7: PBool): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsCIEXYZToCIELab*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
-                         para4: int32): Status{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIEXYZToCIEuvY*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
-                         para4: int32): Status{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIEXYZToCIExyY*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
-                         para4: int32): Status{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIEXYZToRGBi*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
-                       para4: PBool): Status{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIEuvYToCIELuv*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
-                         para4: int32): Status{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIEuvYToCIEXYZ*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
-                         para4: int32): Status{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIEuvYToTekHVC*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
-                         para4: int32): Status{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIExyYToCIEXYZ*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
-                         para4: int32): Status{.cdecl, dynlib: libX11, importc.}
-proc XcmsClientWhitePointOfCCC*(para1: XcmsCCC): PXcmsColor{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsConvertColors*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
-                        para4: XcmsColorFormat, para5: PBool): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsCreateCCC*(para1: PDisplay, para2: int32, para3: PVisual,
-                    para4: PXcmsColor, para5: XcmsCompressionProc,
-                    para6: XPointer, para7: XcmsWhiteAdjustProc,
-                    para8: XPointer): XcmsCCC{.cdecl, dynlib: libX11, importc.}
-proc XcmsDefaultCCC*(para1: PDisplay, para2: int32): XcmsCCC{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsDisplayOfCCC*(para1: XcmsCCC): PDisplay{.cdecl, dynlib: libX11,
-    importc.}
-proc XcmsFormatOfPrefix*(para1: cstring): XcmsColorFormat{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsFreeCCC*(para1: XcmsCCC){.cdecl, dynlib: libX11, importc.}
-proc XcmsLookupColor*(para1: PDisplay, para2: Colormap, para3: cstring,
-                      para4: PXcmsColor, para5: PXcmsColor,
-                      para6: XcmsColorFormat): Status{.cdecl, dynlib: libX11,
-    importc.}
-proc XcmsPrefixOfFormat*(para1: XcmsColorFormat): cstring{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsQueryBlack*(para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsQueryBlue*(para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsQueryColor*(para1: PDisplay, para2: Colormap, para3: PXcmsColor,
-                     para4: XcmsColorFormat): Status{.cdecl, dynlib: libX11,
-    importc.}
-proc XcmsQueryColors*(para1: PDisplay, para2: Colormap, para3: PXcmsColor,
-                      para4: int32, para5: XcmsColorFormat): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsQueryGreen*(para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsQueryRed*(para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsQueryWhite*(para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsRGBiToCIEXYZ*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
-                       para4: PBool): Status{.cdecl, dynlib: libX11, importc.}
-proc XcmsRGBiToRGB*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
-                    para4: PBool): Status{.cdecl, dynlib: libX11, importc.}
-proc XcmsRGBToRGBi*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
-                    para4: PBool): Status{.cdecl, dynlib: libX11, importc.}
-proc XcmsScreenNumberOfCCC*(para1: XcmsCCC): int32{.cdecl, dynlib: libX11,
-    importc.}
-proc XcmsScreenWhitePointOfCCC*(para1: XcmsCCC): PXcmsColor{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsSetCCCOfColormap*(para1: PDisplay, para2: Colormap, para3: XcmsCCC): XcmsCCC{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsSetCompressionProc*(para1: XcmsCCC, para2: XcmsCompressionProc,
-                             para3: XPointer): XcmsCompressionProc{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsSetWhiteAdjustProc*(para1: XcmsCCC, para2: XcmsWhiteAdjustProc,
-                             para3: XPointer): XcmsWhiteAdjustProc{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsSetWhitePoint*(para1: XcmsCCC, para2: PXcmsColor): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsStoreColor*(para1: PDisplay, para2: Colormap, para3: PXcmsColor): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsStoreColors*(para1: PDisplay, para2: Colormap, para3: PXcmsColor,
-                      para4: int32, para5: PBool): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsTekHVCClipC*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
-                      para4: int32, para5: PBool): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsTekHVCClipV*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
-                      para4: int32, para5: PBool): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsTekHVCClipVC*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
-                       para4: int32, para5: PBool): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XcmsTekHVCQueryMaxC*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
-                          para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
-    importc.}
-proc XcmsTekHVCQueryMaxV*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
-                          para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
-    importc.}
-proc XcmsTekHVCQueryMaxVC*(para1: XcmsCCC, para2: XcmsFloat, para3: PXcmsColor): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsTekHVCQueryMaxVSamples*(para1: XcmsCCC, para2: XcmsFloat,
-                                 para3: PXcmsColor, para4: int32): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsTekHVCQueryMinV*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
-                          para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
-    importc.}
-proc XcmsTekHVCToCIEuvY*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
-                         para4: int32): Status{.cdecl, dynlib: libX11, importc.}
-proc XcmsTekHVCWhiteShiftColors*(para1: XcmsCCC, para2: PXcmsColor,
-                                 para3: PXcmsColor, para4: XcmsColorFormat,
-                                 para5: PXcmsColor, para6: int32, para7: PBool): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsVisualOfCCC*(para1: XcmsCCC): PVisual{.cdecl, dynlib: libX11, importc.}
+proc XcmsAddFunctionSet*(
+  para1: PXcmsFunctionSet
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsAllocColor*(
+  para1: PDisplay, para2: Colormap, para3: PXcmsColor, para4: XcmsColorFormat
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsAllocNamedColor*(
+  para1: PDisplay,
+  para2: Colormap,
+  para3: cstring,
+  para4: PXcmsColor,
+  para5: PXcmsColor,
+  para6: XcmsColorFormat,
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCCCOfColormap*(
+  para1: PDisplay, para2: Colormap
+): XcmsCCC {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELabClipab*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: int32, para4: int32, para5: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELabClipL*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: int32, para4: int32, para5: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELabClipLab*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: int32, para4: int32, para5: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELabQueryMaxC*(
+  para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat, para4: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELabQueryMaxL*(
+  para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat, para4: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELabQueryMaxLC*(
+  para1: XcmsCCC, para2: XcmsFloat, para3: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELabQueryMinL*(
+  para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat, para4: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELabToCIEXYZ*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor, para4: int32
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELabWhiteShiftColors*(
+  para1: XcmsCCC,
+  para2: PXcmsColor,
+  para3: PXcmsColor,
+  para4: XcmsColorFormat,
+  para5: PXcmsColor,
+  para6: int32,
+  para7: PBool,
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELuvClipL*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: int32, para4: int32, para5: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELuvClipLuv*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: int32, para4: int32, para5: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELuvClipuv*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: int32, para4: int32, para5: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELuvQueryMaxC*(
+  para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat, para4: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELuvQueryMaxL*(
+  para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat, para4: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELuvQueryMaxLC*(
+  para1: XcmsCCC, para2: XcmsFloat, para3: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELuvQueryMinL*(
+  para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat, para4: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELuvToCIEuvY*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor, para4: int32
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIELuvWhiteShiftColors*(
+  para1: XcmsCCC,
+  para2: PXcmsColor,
+  para3: PXcmsColor,
+  para4: XcmsColorFormat,
+  para5: PXcmsColor,
+  para6: int32,
+  para7: PBool,
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIEXYZToCIELab*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor, para4: int32
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIEXYZToCIEuvY*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor, para4: int32
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIEXYZToCIExyY*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor, para4: int32
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIEXYZToRGBi*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: int32, para4: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIEuvYToCIELuv*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor, para4: int32
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIEuvYToCIEXYZ*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor, para4: int32
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIEuvYToTekHVC*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor, para4: int32
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCIExyYToCIEXYZ*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor, para4: int32
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsClientWhitePointOfCCC*(
+  para1: XcmsCCC
+): PXcmsColor {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsConvertColors*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: int32, para4: XcmsColorFormat, para5: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsCreateCCC*(
+  para1: PDisplay,
+  para2: int32,
+  para3: PVisual,
+  para4: PXcmsColor,
+  para5: XcmsCompressionProc,
+  para6: XPointer,
+  para7: XcmsWhiteAdjustProc,
+  para8: XPointer,
+): XcmsCCC {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsDefaultCCC*(
+  para1: PDisplay, para2: int32
+): XcmsCCC {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsDisplayOfCCC*(para1: XcmsCCC): PDisplay {.cdecl, dynlib: libX11, importc.}
+proc XcmsFormatOfPrefix*(
+  para1: cstring
+): XcmsColorFormat {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsFreeCCC*(para1: XcmsCCC) {.cdecl, dynlib: libX11, importc.}
+proc XcmsLookupColor*(
+  para1: PDisplay,
+  para2: Colormap,
+  para3: cstring,
+  para4: PXcmsColor,
+  para5: PXcmsColor,
+  para6: XcmsColorFormat,
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsPrefixOfFormat*(
+  para1: XcmsColorFormat
+): cstring {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsQueryBlack*(
+  para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsQueryBlue*(
+  para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsQueryColor*(
+  para1: PDisplay, para2: Colormap, para3: PXcmsColor, para4: XcmsColorFormat
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsQueryColors*(
+  para1: PDisplay,
+  para2: Colormap,
+  para3: PXcmsColor,
+  para4: int32,
+  para5: XcmsColorFormat,
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsQueryGreen*(
+  para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsQueryRed*(
+  para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsQueryWhite*(
+  para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsRGBiToCIEXYZ*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: int32, para4: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsRGBiToRGB*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: int32, para4: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsRGBToRGBi*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: int32, para4: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsScreenNumberOfCCC*(para1: XcmsCCC): int32 {.cdecl, dynlib: libX11, importc.}
+proc XcmsScreenWhitePointOfCCC*(
+  para1: XcmsCCC
+): PXcmsColor {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsSetCCCOfColormap*(
+  para1: PDisplay, para2: Colormap, para3: XcmsCCC
+): XcmsCCC {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsSetCompressionProc*(
+  para1: XcmsCCC, para2: XcmsCompressionProc, para3: XPointer
+): XcmsCompressionProc {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsSetWhiteAdjustProc*(
+  para1: XcmsCCC, para2: XcmsWhiteAdjustProc, para3: XPointer
+): XcmsWhiteAdjustProc {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsSetWhitePoint*(
+  para1: XcmsCCC, para2: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsStoreColor*(
+  para1: PDisplay, para2: Colormap, para3: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsStoreColors*(
+  para1: PDisplay, para2: Colormap, para3: PXcmsColor, para4: int32, para5: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsTekHVCClipC*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: int32, para4: int32, para5: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsTekHVCClipV*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: int32, para4: int32, para5: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsTekHVCClipVC*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: int32, para4: int32, para5: PBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsTekHVCQueryMaxC*(
+  para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat, para4: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsTekHVCQueryMaxV*(
+  para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat, para4: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsTekHVCQueryMaxVC*(
+  para1: XcmsCCC, para2: XcmsFloat, para3: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsTekHVCQueryMaxVSamples*(
+  para1: XcmsCCC, para2: XcmsFloat, para3: PXcmsColor, para4: int32
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsTekHVCQueryMinV*(
+  para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat, para4: PXcmsColor
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsTekHVCToCIEuvY*(
+  para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor, para4: int32
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsTekHVCWhiteShiftColors*(
+  para1: XcmsCCC,
+  para2: PXcmsColor,
+  para3: PXcmsColor,
+  para4: XcmsColorFormat,
+  para5: PXcmsColor,
+  para6: int32,
+  para7: PBool,
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XcmsVisualOfCCC*(para1: XcmsCCC): PVisual {.cdecl, dynlib: libX11, importc.}
 # implementation
 
 proc XcmsUndefinedFormat(): XcmsColorFormat =
@@ -390,4 +523,3 @@
 
 proc FunctionSetOfCCC(ccc: XcmsCCC): Xpointer =
   result = ccc.pPerScrnInfo.functionSet
-
--- a/semicongine/thirdparty/x11/xf86dga.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xf86dga.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -3,11 +3,9 @@
 #
 # $XFree86: xc/include/extensions/xf86dga.h,v 3.20 1999/10/13 04:20:48 dawes Exp $
 
-import
-  x, xlib
+import x, xlib
 
-const
-  libXxf86dga* = "libXxf86dga.so"
+const libXxf86dga* = "libXxf86dga.so"
 
 #type
 #  cfloat* = float32
@@ -25,8 +23,7 @@
 #
 #************************************************************************
 
-type
-  PPcchar* = ptr ptr cstring
+type PPcchar* = ptr ptr cstring
 
 const
   X_XF86DGAQueryVersion* = 0
@@ -46,40 +43,73 @@
   XF86DGAHasColormap* = 0x00000100
   XF86DGADirectColormap* = 0x00000200
 
-proc XF86DGAQueryVersion*(dpy: PDisplay, majorVersion: Pcint,
-                          minorVersion: Pcint): XBool{.cdecl,
-    dynlib: libXxf86dga, importc.}
-proc XF86DGAQueryExtension*(dpy: PDisplay, event_base: Pcint, error_base: Pcint): XBool{.
-    cdecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAGetVideoLL*(dpy: PDisplay, screen: cint, base_addr: Pcint,
-                        width: Pcint, bank_size: Pcint, ram_size: Pcint): Status{.
-    cdecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAGetVideo*(dpy: PDisplay, screen: cint, base_addr: PPcchar,
-                      width: Pcint, bank_size: Pcint, ram_size: Pcint): Status{.
-    cdecl, dynlib: libXxf86dga, importc.}
-proc XF86DGADirectVideo*(dpy: PDisplay, screen: cint, enable: cint): Status{.
-    cdecl, dynlib: libXxf86dga, importc.}
-proc XF86DGADirectVideoLL*(dpy: PDisplay, screen: cint, enable: cint): Status{.
-    cdecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAGetViewPortSize*(dpy: PDisplay, screen: cint, width: Pcint,
-                             height: Pcint): Status{.cdecl,
-    dynlib: libXxf86dga, importc.}
-proc XF86DGASetViewPort*(dpy: PDisplay, screen: cint, x: cint, y: cint): Status{.
-    cdecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAGetVidPage*(dpy: PDisplay, screen: cint, vid_page: Pcint): Status{.
-    cdecl, dynlib: libXxf86dga, importc.}
-proc XF86DGASetVidPage*(dpy: PDisplay, screen: cint, vid_page: cint): Status{.
-    cdecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAInstallColormap*(dpy: PDisplay, screen: cint, Colormap: Colormap): Status{.
-    cdecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAForkApp*(screen: cint): cint{.cdecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAQueryDirectVideo*(dpy: PDisplay, screen: cint, flags: Pcint): Status{.
-    cdecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAViewPortChanged*(dpy: PDisplay, screen: cint, n: cint): XBool{.
-    cdecl, dynlib: libXxf86dga, importc.}
+proc XF86DGAQueryVersion*(
+  dpy: PDisplay, majorVersion: Pcint, minorVersion: Pcint
+): XBool {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XF86DGAQueryExtension*(
+  dpy: PDisplay, event_base: Pcint, error_base: Pcint
+): XBool {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XF86DGAGetVideoLL*(
+  dpy: PDisplay,
+  screen: cint,
+  base_addr: Pcint,
+  width: Pcint,
+  bank_size: Pcint,
+  ram_size: Pcint,
+): Status {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XF86DGAGetVideo*(
+  dpy: PDisplay,
+  screen: cint,
+  base_addr: PPcchar,
+  width: Pcint,
+  bank_size: Pcint,
+  ram_size: Pcint,
+): Status {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XF86DGADirectVideo*(
+  dpy: PDisplay, screen: cint, enable: cint
+): Status {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XF86DGADirectVideoLL*(
+  dpy: PDisplay, screen: cint, enable: cint
+): Status {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XF86DGAGetViewPortSize*(
+  dpy: PDisplay, screen: cint, width: Pcint, height: Pcint
+): Status {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XF86DGASetViewPort*(
+  dpy: PDisplay, screen: cint, x: cint, y: cint
+): Status {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XF86DGAGetVidPage*(
+  dpy: PDisplay, screen: cint, vid_page: Pcint
+): Status {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XF86DGASetVidPage*(
+  dpy: PDisplay, screen: cint, vid_page: cint
+): Status {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XF86DGAInstallColormap*(
+  dpy: PDisplay, screen: cint, Colormap: Colormap
+): Status {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XF86DGAForkApp*(screen: cint): cint {.cdecl, dynlib: libXxf86dga, importc.}
+proc XF86DGAQueryDirectVideo*(
+  dpy: PDisplay, screen: cint, flags: Pcint
+): Status {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XF86DGAViewPortChanged*(
+  dpy: PDisplay, screen: cint, n: cint
+): XBool {.cdecl, dynlib: libXxf86dga, importc.}
+
 const
-  X_XDGAQueryVersion* = 0 # 1 through 9 are in xf86dga1.pp
-                          # 10 and 11 are reserved to avoid conflicts with rogue DGA extensions
+  X_XDGAQueryVersion* = 0
+    # 1 through 9 are in xf86dga1.pp
+    # 10 and 11 are reserved to avoid conflicts with rogue DGA extensions
   X_XDGAQueryModes* = 12
   X_XDGASetMode* = 13
   X_XDGASetViewport* = 14
@@ -117,17 +147,17 @@
 
 type
   PXDGAMode* = ptr XDGAMode
-  XDGAMode*{.final.} = object
-    num*: cint           # A unique identifier for the mode (num > 0)
-    name*: cstring       # name of mode given in the XF86Config
+  XDGAMode* {.final.} = object
+    num*: cint # A unique identifier for the mode (num > 0)
+    name*: cstring # name of mode given in the XF86Config
     verticalRefresh*: cfloat
-    flags*: cint         # DGA_CONCURRENT_ACCESS, etc...
-    imageWidth*: cint    # linear accessible portion (pixels)
+    flags*: cint # DGA_CONCURRENT_ACCESS, etc...
+    imageWidth*: cint # linear accessible portion (pixels)
     imageHeight*: cint
-    pixmapWidth*: cint   # Xlib accessible portion (pixels)
-    pixmapHeight*: cint  # both fields ignored if no concurrent access
+    pixmapWidth*: cint # Xlib accessible portion (pixels)
+    pixmapHeight*: cint # both fields ignored if no concurrent access
     bytesPerScanline*: cint
-    byteOrder*: cint     # MSBFirst, LSBFirst
+    byteOrder*: cint # MSBFirst, LSBFirst
     depth*: cint
     bitsPerPixel*: cint
     redMask*: culong
@@ -138,20 +168,20 @@
     viewportHeight*: cint
     xViewportStep*: cint # viewport position granularity
     yViewportStep*: cint
-    maxViewportX*: cint  # max viewport origin
+    maxViewportX*: cint # max viewport origin
     maxViewportY*: cint
     viewportFlags*: cint # types of page flipping possible
     reserved1*: cint
     reserved2*: cint
 
   PXDGADevice* = ptr XDGADevice
-  XDGADevice*{.final.} = object
+  XDGADevice* {.final.} = object
     mode*: XDGAMode
     data*: Pcuchar
     pixmap*: Pixmap
 
   PXDGAButtonEvent* = ptr XDGAButtonEvent
-  XDGAButtonEvent*{.final.} = object
+  XDGAButtonEvent* {.final.} = object
     theType*: cint
     serial*: culong
     display*: PDisplay
@@ -161,7 +191,7 @@
     button*: cuint
 
   PXDGAKeyEvent* = ptr XDGAKeyEvent
-  XDGAKeyEvent*{.final.} = object
+  XDGAKeyEvent* {.final.} = object
     theType*: cint
     serial*: culong
     display*: PDisplay
@@ -171,7 +201,7 @@
     keycode*: cuint
 
   PXDGAMotionEvent* = ptr XDGAMotionEvent
-  XDGAMotionEvent*{.final.} = object
+  XDGAMotionEvent* {.final.} = object
     theType*: cint
     serial*: culong
     display*: PDisplay
@@ -182,53 +212,101 @@
     dy*: cint
 
   PXDGAEvent* = ptr XDGAEvent
-  XDGAEvent*{.final.} = object
-    pad*: array[0..23, clong] # sorry you have to cast if you want access
-                              # Case LongInt Of
-                              #      0 : (_type : cint);
-                              #      1 : (xbutton : XDGAButtonEvent);
-                              #      2 : (xkey : XDGAKeyEvent);
-                              #      3 : (xmotion : XDGAMotionEvent);
-                              #      4 : (pad : Array[0..23] Of clong);
+  XDGAEvent* {.final.} = object
+    pad*: array[0 .. 23, clong]
+      # sorry you have to cast if you want access
+      # Case LongInt Of
+      #      0 : (_type : cint);
+      #      1 : (xbutton : XDGAButtonEvent);
+      #      2 : (xkey : XDGAKeyEvent);
+      #      3 : (xmotion : XDGAMotionEvent);
+      #      4 : (pad : Array[0..23] Of clong);
+
+proc XDGAQueryExtension*(
+  dpy: PDisplay, eventBase: Pcint, erroBase: Pcint
+): XBool {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XDGAQueryVersion*(
+  dpy: PDisplay, majorVersion: Pcint, minorVersion: Pcint
+): XBool {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XDGAQueryModes*(
+  dpy: PDisplay, screen: cint, num: Pcint
+): PXDGAMode {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XDGASetMode*(
+  dpy: PDisplay, screen: cint, mode: cint
+): PXDGADevice {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XDGAOpenFramebuffer*(
+  dpy: PDisplay, screen: cint
+): XBool {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XDGACloseFramebuffer*(
+  dpy: PDisplay, screen: cint
+) {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XDGASetViewport*(
+  dpy: PDisplay, screen: cint, x: cint, y: cint, flags: cint
+) {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XDGAInstallColormap*(
+  dpy: PDisplay, screen: cint, cmap: Colormap
+) {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XDGACreateColormap*(
+  dpy: PDisplay, screen: cint, device: PXDGADevice, alloc: cint
+): Colormap {.cdecl, dynlib: libXxf86dga, importc.}
 
-proc XDGAQueryExtension*(dpy: PDisplay, eventBase: Pcint, erroBase: Pcint): XBool{.
-    cdecl, dynlib: libXxf86dga, importc.}
-proc XDGAQueryVersion*(dpy: PDisplay, majorVersion: Pcint, minorVersion: Pcint): XBool{.
-    cdecl, dynlib: libXxf86dga, importc.}
-proc XDGAQueryModes*(dpy: PDisplay, screen: cint, num: Pcint): PXDGAMode{.cdecl,
-    dynlib: libXxf86dga, importc.}
-proc XDGASetMode*(dpy: PDisplay, screen: cint, mode: cint): PXDGADevice{.cdecl,
-    dynlib: libXxf86dga, importc.}
-proc XDGAOpenFramebuffer*(dpy: PDisplay, screen: cint): XBool{.cdecl,
-    dynlib: libXxf86dga, importc.}
-proc XDGACloseFramebuffer*(dpy: PDisplay, screen: cint){.cdecl,
-    dynlib: libXxf86dga, importc.}
-proc XDGASetViewport*(dpy: PDisplay, screen: cint, x: cint, y: cint, flags: cint){.
-    cdecl, dynlib: libXxf86dga, importc.}
-proc XDGAInstallColormap*(dpy: PDisplay, screen: cint, cmap: Colormap){.cdecl,
-    dynlib: libXxf86dga, importc.}
-proc XDGACreateColormap*(dpy: PDisplay, screen: cint, device: PXDGADevice,
-                         alloc: cint): Colormap{.cdecl, dynlib: libXxf86dga,
-    importc.}
-proc XDGASelectInput*(dpy: PDisplay, screen: cint, event_mask: clong){.cdecl,
-    dynlib: libXxf86dga, importc.}
-proc XDGAFillRectangle*(dpy: PDisplay, screen: cint, x: cint, y: cint,
-                        width: cuint, height: cuint, color: culong){.cdecl,
-    dynlib: libXxf86dga, importc.}
-proc XDGACopyArea*(dpy: PDisplay, screen: cint, srcx: cint, srcy: cint,
-                   width: cuint, height: cuint, dstx: cint, dsty: cint){.cdecl,
-    dynlib: libXxf86dga, importc.}
-proc XDGACopyTransparentArea*(dpy: PDisplay, screen: cint, srcx: cint,
-                              srcy: cint, width: cuint, height: cuint,
-                              dstx: cint, dsty: cint, key: culong){.cdecl,
-    dynlib: libXxf86dga, importc.}
-proc XDGAGetViewportStatus*(dpy: PDisplay, screen: cint): cint{.cdecl,
-    dynlib: libXxf86dga, importc.}
-proc XDGASync*(dpy: PDisplay, screen: cint){.cdecl, dynlib: libXxf86dga, importc.}
-proc XDGASetClientVersion*(dpy: PDisplay): XBool{.cdecl, dynlib: libXxf86dga,
-    importc.}
-proc XDGAChangePixmapMode*(dpy: PDisplay, screen: cint, x: Pcint, y: Pcint,
-                           mode: cint){.cdecl, dynlib: libXxf86dga, importc.}
-proc XDGAKeyEventToXKeyEvent*(dk: PXDGAKeyEvent, xk: PXKeyEvent){.cdecl,
-    dynlib: libXxf86dga, importc.}
+proc XDGASelectInput*(
+  dpy: PDisplay, screen: cint, event_mask: clong
+) {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XDGAFillRectangle*(
+  dpy: PDisplay,
+  screen: cint,
+  x: cint,
+  y: cint,
+  width: cuint,
+  height: cuint,
+  color: culong,
+) {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XDGACopyArea*(
+  dpy: PDisplay,
+  screen: cint,
+  srcx: cint,
+  srcy: cint,
+  width: cuint,
+  height: cuint,
+  dstx: cint,
+  dsty: cint,
+) {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XDGACopyTransparentArea*(
+  dpy: PDisplay,
+  screen: cint,
+  srcx: cint,
+  srcy: cint,
+  width: cuint,
+  height: cuint,
+  dstx: cint,
+  dsty: cint,
+  key: culong,
+) {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XDGAGetViewportStatus*(
+  dpy: PDisplay, screen: cint
+): cint {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XDGASync*(dpy: PDisplay, screen: cint) {.cdecl, dynlib: libXxf86dga, importc.}
+proc XDGASetClientVersion*(dpy: PDisplay): XBool {.cdecl, dynlib: libXxf86dga, importc.}
+proc XDGAChangePixmapMode*(
+  dpy: PDisplay, screen: cint, x: Pcint, y: Pcint, mode: cint
+) {.cdecl, dynlib: libXxf86dga, importc.}
+
+proc XDGAKeyEventToXKeyEvent*(
+  dk: PXDGAKeyEvent, xk: PXKeyEvent
+) {.cdecl, dynlib: libXxf86dga, importc.}
+
 # implementation
--- a/semicongine/thirdparty/x11/xf86vmode.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xf86vmode.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -31,14 +31,11 @@
 # $Xorg: xf86vmode.h,v 1.3 2000/08/18 04:05:46 coskrey Exp $
 # THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION
 
-import
-  x, xlib
+import x, xlib
 
-const
-  libXxf86vm* = "libXxf86vm.so"
+const libXxf86vm* = "libXxf86vm.so"
 
-type
-  PINT32* = ptr int32
+type PINT32* = ptr int32
 
 const
   X_XF86VidModeQueryVersion* = 0
@@ -72,8 +69,7 @@
     XF86VidModeNonEvent* = 0
     XF86VidModeModeChange* = 1
 else:
-  const
-    XF86VidModeNumberEvents* = 0
+  const XF86VidModeNumberEvents* = 0
 const
   XF86VidModeBadClock* = 0
   XF86VidModeBadHTimings* = 1
@@ -88,7 +84,7 @@
 
 type
   PXF86VidModeModeLine* = ptr XF86VidModeModeLine
-  XF86VidModeModeLine*{.final.} = object
+  XF86VidModeModeLine* {.final.} = object
     hdisplay*: cushort
     hsyncstart*: cushort
     hsyncend*: cushort
@@ -105,7 +101,7 @@
   PPPXF86VidModeModeInfo* = ptr PPXF86VidModeModeInfo
   PPXF86VidModeModeInfo* = ptr PXF86VidModeModeInfo
   PXF86VidModeModeInfo* = ptr XF86VidModeModeInfo
-  XF86VidModeModeInfo*{.final.} = object
+  XF86VidModeModeInfo* {.final.} = object
     dotclock*: cuint
     hdisplay*: cushort
     hsyncstart*: cushort
@@ -121,12 +117,12 @@
     c_private*: PINT32
 
   PXF86VidModeSyncRange* = ptr XF86VidModeSyncRange
-  XF86VidModeSyncRange*{.final.} = object
+  XF86VidModeSyncRange* {.final.} = object
     hi*: cfloat
     lo*: cfloat
 
   PXF86VidModeMonitor* = ptr XF86VidModeMonitor
-  XF86VidModeMonitor*{.final.} = object
+  XF86VidModeMonitor* {.final.} = object
     vendor*: cstring
     model*: cstring
     EMPTY*: cfloat
@@ -136,88 +132,132 @@
     vsync*: PXF86VidModeSyncRange
 
   PXF86VidModeNotifyEvent* = ptr XF86VidModeNotifyEvent
-  XF86VidModeNotifyEvent*{.final.} = object
-    theType*: cint     # of event
-    serial*: culong    # # of last request processed by server
+  XF86VidModeNotifyEvent* {.final.} = object
+    theType*: cint # of event
+    serial*: culong # # of last request processed by server
     send_event*: XBool # true if this came from a SendEvent req
     display*: PDisplay # Display the event was read from
-    root*: Window      # root window of event screen
-    state*: cint       # What happened
-    kind*: cint        # What happened
-    forced*: XBool     # extents of new region
-    time*: Time        # event timestamp
+    root*: Window # root window of event screen
+    state*: cint # What happened
+    kind*: cint # What happened
+    forced*: XBool # extents of new region
+    time*: Time # event timestamp
 
   PXF86VidModeGamma* = ptr XF86VidModeGamma
-  XF86VidModeGamma*{.final.} = object
-    red*: cfloat   # Red Gamma value
+  XF86VidModeGamma* {.final.} = object
+    red*: cfloat # Red Gamma value
     green*: cfloat # Green Gamma value
-    blue*: cfloat  # Blue Gamma value
+    blue*: cfloat # Blue Gamma value
 
 when defined(MACROS):
   proc XF86VidModeSelectNextMode*(disp: PDisplay, scr: cint): XBool
   proc XF86VidModeSelectPrevMode*(disp: PDisplay, scr: cint): XBool
-proc XF86VidModeQueryVersion*(dpy: PDisplay, majorVersion: Pcint,
-                              minorVersion: Pcint): XBool{.cdecl,
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeQueryExtension*(dpy: PDisplay, event_base: Pcint,
-                                error_base: Pcint): XBool{.cdecl,
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeSetClientVersion*(dpy: PDisplay): XBool{.cdecl,
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetModeLine*(dpy: PDisplay, screen: cint, dotclock: Pcint,
-                             modeline: PXF86VidModeModeLine): XBool{.cdecl,
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetAllModeLines*(dpy: PDisplay, screen: cint, modecount: Pcint,
-                                 modelinesPtr: PPPXF86VidModeModeInfo): XBool{.
-    cdecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeAddModeLine*(dpy: PDisplay, screen: cint,
-                             new_modeline: PXF86VidModeModeInfo,
-                             after_modeline: PXF86VidModeModeInfo): XBool{.
-    cdecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeDeleteModeLine*(dpy: PDisplay, screen: cint,
-                                modeline: PXF86VidModeModeInfo): XBool{.cdecl,
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeModModeLine*(dpy: PDisplay, screen: cint,
-                             modeline: PXF86VidModeModeLine): XBool{.cdecl,
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeValidateModeLine*(dpy: PDisplay, screen: cint,
-                                  modeline: PXF86VidModeModeInfo): Status{.
-    cdecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeSwitchMode*(dpy: PDisplay, screen: cint, zoom: cint): XBool{.
-    cdecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeSwitchToMode*(dpy: PDisplay, screen: cint,
-                              modeline: PXF86VidModeModeInfo): XBool{.cdecl,
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeLockModeSwitch*(dpy: PDisplay, screen: cint, lock: cint): XBool{.
-    cdecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetMonitor*(dpy: PDisplay, screen: cint,
-                            monitor: PXF86VidModeMonitor): XBool{.cdecl,
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetViewPort*(dpy: PDisplay, screen: cint, x_return: Pcint,
-                             y_return: Pcint): XBool{.cdecl, dynlib: libXxf86vm,
-    importc.}
-proc XF86VidModeSetViewPort*(dpy: PDisplay, screen: cint, x: cint, y: cint): XBool{.
-    cdecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetDotClocks*(dpy: PDisplay, screen: cint, flags_return: Pcint,
-                              number_of_clocks_return: Pcint,
-                              max_dot_clock_return: Pcint, clocks_return: PPcint): XBool{.
-    cdecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetGamma*(dpy: PDisplay, screen: cint, Gamma: PXF86VidModeGamma): XBool{.
-    cdecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeSetGamma*(dpy: PDisplay, screen: cint, Gamma: PXF86VidModeGamma): XBool{.
-    cdecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeSetGammaRamp*(dpy: PDisplay, screen: cint, size: cint,
-                              red_array: Pcushort, green_array: Pcushort,
-                              blue_array: Pcushort): XBool{.cdecl,
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetGammaRamp*(dpy: PDisplay, screen: cint, size: cint,
-                              red_array: Pcushort, green_array: Pcushort,
-                              blue_array: Pcushort): XBool{.cdecl,
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetGammaRampSize*(dpy: PDisplay, screen: cint, size: Pcint): XBool{.
-    cdecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetPermissions*(dpy: PDisplay, screen: cint, permissions: Pcint): XBool{.
-    cdecl, dynlib: libXxf86vm, importc.}
+proc XF86VidModeQueryVersion*(
+  dpy: PDisplay, majorVersion: Pcint, minorVersion: Pcint
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeQueryExtension*(
+  dpy: PDisplay, event_base: Pcint, error_base: Pcint
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeSetClientVersion*(
+  dpy: PDisplay
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeGetModeLine*(
+  dpy: PDisplay, screen: cint, dotclock: Pcint, modeline: PXF86VidModeModeLine
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeGetAllModeLines*(
+  dpy: PDisplay, screen: cint, modecount: Pcint, modelinesPtr: PPPXF86VidModeModeInfo
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeAddModeLine*(
+  dpy: PDisplay,
+  screen: cint,
+  new_modeline: PXF86VidModeModeInfo,
+  after_modeline: PXF86VidModeModeInfo,
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeDeleteModeLine*(
+  dpy: PDisplay, screen: cint, modeline: PXF86VidModeModeInfo
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeModModeLine*(
+  dpy: PDisplay, screen: cint, modeline: PXF86VidModeModeLine
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeValidateModeLine*(
+  dpy: PDisplay, screen: cint, modeline: PXF86VidModeModeInfo
+): Status {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeSwitchMode*(
+  dpy: PDisplay, screen: cint, zoom: cint
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeSwitchToMode*(
+  dpy: PDisplay, screen: cint, modeline: PXF86VidModeModeInfo
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeLockModeSwitch*(
+  dpy: PDisplay, screen: cint, lock: cint
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeGetMonitor*(
+  dpy: PDisplay, screen: cint, monitor: PXF86VidModeMonitor
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeGetViewPort*(
+  dpy: PDisplay, screen: cint, x_return: Pcint, y_return: Pcint
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeSetViewPort*(
+  dpy: PDisplay, screen: cint, x: cint, y: cint
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeGetDotClocks*(
+  dpy: PDisplay,
+  screen: cint,
+  flags_return: Pcint,
+  number_of_clocks_return: Pcint,
+  max_dot_clock_return: Pcint,
+  clocks_return: PPcint,
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeGetGamma*(
+  dpy: PDisplay, screen: cint, Gamma: PXF86VidModeGamma
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeSetGamma*(
+  dpy: PDisplay, screen: cint, Gamma: PXF86VidModeGamma
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeSetGammaRamp*(
+  dpy: PDisplay,
+  screen: cint,
+  size: cint,
+  red_array: Pcushort,
+  green_array: Pcushort,
+  blue_array: Pcushort,
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeGetGammaRamp*(
+  dpy: PDisplay,
+  screen: cint,
+  size: cint,
+  red_array: Pcushort,
+  green_array: Pcushort,
+  blue_array: Pcushort,
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeGetGammaRampSize*(
+  dpy: PDisplay, screen: cint, size: Pcint
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
+proc XF86VidModeGetPermissions*(
+  dpy: PDisplay, screen: cint, permissions: Pcint
+): XBool {.cdecl, dynlib: libXxf86vm, importc.}
+
 # implementation
 
 #when defined(MACROS):
@@ -225,4 +265,4 @@
   XF86VidModeSwitchMode(disp, scr, 1)
 
 proc XF86VidModeSelectPrevMode(disp: PDisplay, scr: cint): XBool =
-  XF86VidModeSwitchMode(disp, scr, - 1)
+  XF86VidModeSwitchMode(disp, scr, -1)
--- a/semicongine/thirdparty/x11/xft.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xft.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,12 +1,7 @@
 # Converted from X11/Xft/Xft.h
-import
-  x,
-  xlib,
-  xrender,
-  xutil
+import x, xlib, xrender, xutil
 
-const
-  xftLib = "libXft.so"
+const xftLib = "libXft.so"
 
 # Defined in the FreeType library
 type
@@ -18,11 +13,16 @@
 # Defined in the fontconfig library
 type
   FcEndian* = enum
-    FcEndianBig, FcEndianLittle
+    FcEndianBig
+    FcEndianLittle
 
   FcResult* = enum
-    FcResultMatch, FcResultNoMatch, FcResultTypeMismatch,
-    FcResultNoId, FcResultOutOfMemory
+    FcResultMatch
+    FcResultNoMatch
+    FcResultTypeMismatch
+    FcResultNoId
+    FcResultOutOfMemory
+
   PFcResult* = ptr FcResult
 
   FcBool* = cint
@@ -37,6 +37,7 @@
     nfont*: cint
     sfont*: cint
     fonts*: ptr PFcPattern
+
   PFcFontSet* = ptr FcFontSet
 
   FcChar8* = cuchar
@@ -49,7 +50,7 @@
   PFcChar32* = ptr FcChar32
 
 type
-  XftFontInfo* = object 
+  XftFontInfo* = object
   PXftFontInfo* = ptr XftFontInfo
   XftFont* = object
     ascent*: cint
@@ -57,7 +58,8 @@
     height*: cint
     max_advance_width*: cint
     charset*: PFcCharSet
-    pattern*: PFcPattern    
+    pattern*: PFcPattern
+
   PXftFont* = ptr XftFont
 
   XftDraw* = object
@@ -66,12 +68,14 @@
   XftColor* = object
     pixel*: culong
     color*: XRenderColor
+
   PXftColor* = ptr XftColor
 
   XftCharSpec* = object
     ucs4*: FcChar32
     x*: cshort
     y*: cshort
+
   PXftCharSpec* = ptr XftCharSpec
 
   XftCharFontSpec* = object
@@ -79,12 +83,14 @@
     ucs4*: FcChar32
     x*: cshort
     y*: cshort
+
   PXftCharFontSpec* = ptr XftCharFontSpec
 
   XftGlyphSpec* = object
     glyph*: FT_UInt
     x*: cshort
     y*: cshort
+
   PXftGlyphSpec* = ptr XftGlyphSpec
 
   XftGlyphFontSpec* = object
@@ -92,15 +98,12 @@
     glyph*: FT_UInt
     x*: cshort
     y*: cshort
+
   PXftGlyphFontSpec = ptr XftGlyphFontSpec
 
 # xftcolor.c
 proc XftColorAllocName*(
-  display: PDisplay,
-  visual: PVisual,
-  cmap: Colormap,
-  name: cstring,
-  result: PXftColor
+  display: PDisplay, visual: PVisual, cmap: Colormap, name: cstring, result: PXftColor
 ): XBool {.cdecl, dynlib: xftLib, importc.}
 
 proc XftColorAllocValue*(
@@ -108,83 +111,55 @@
   visual: PVisual,
   cmap: Colormap,
   color: PXRenderColor,
-  result: PXftColor
+  result: PXftColor,
 ): XBool {.cdecl, dynlib: xftLib, importc.}
 
 proc XftColorFree*(
-  display: PDisplay,
-  visual: PVisual,
-  cmap: Colormap,
-  color: PXftColor
-) {.cdecl, dynlib: xftLib, importc.} 
+  display: PDisplay, visual: PVisual, cmap: Colormap, color: PXftColor
+) {.cdecl, dynlib: xftLib, importc.}
 
 # xftdpy.c
-proc XftDefaultHasRender*(
-  display: PDisplay
-): XBool {.cdecl, dynlib: xftLib, importc.}
+proc XftDefaultHasRender*(display: PDisplay): XBool {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDefaultSet*(
-  display: PDisplay,
-  defaults: PFcPattern
+  display: PDisplay, defaults: PFcPattern
 ): XBool {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDefaultSubstitute*(
-  display: PDisplay,
-  screen: cint,
-  pattern: PFcPattern
+  display: PDisplay, screen: cint, pattern: PFcPattern
 ) {.cdecl, dynlib: xftLib, importc.}
 
 # xftdraw.c
 proc XftDrawCreate*(
-  display: PDisplay,
-  drawable: Drawable,
-  visual: PVisual,
-  colormap: Colormap 
+  display: PDisplay, drawable: Drawable, visual: PVisual, colormap: Colormap
 ): PXftDraw {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawCreateBitmap*(
-  display: PDisplay,
-  bitmap: Pixmap
+  display: PDisplay, bitmap: Pixmap
 ): PXftDraw {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawCreateAlpha*(
-  display: PDisplay,
-  pixmap: Pixmap,
-  depth: cint
+  display: PDisplay, pixmap: Pixmap, depth: cint
 ): PXftDraw {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawChange*(
-  draw: PXftDraw,
-  drawable: Drawable
-) {.cdecl, dynlib: xftLib, importc.} 
-
-proc XftDrawDisplay*(
-  draw: PXftDraw
-): PDisplay {.cdecl, dynlib: xftLib, importc.}
-
-proc XftDrawDrawable*(
-  draw: PXftDraw
-): Drawable {.cdecl, dynlib: xftLib, importc.}
-
-proc XftDrawColormap*(
-  draw: PXftDraw
-): Colormap {.cdecl, dynlib: xftLib, importc.}
-
-proc XftDrawVisual*(
-  draw: PXftDraw
-): PVisual {.cdecl, dynlib: xftLib, importc.}
-
-proc XftDrawDestroy*(
-  draw: PXftDraw
+  draw: PXftDraw, drawable: Drawable
 ) {.cdecl, dynlib: xftLib, importc.}
 
-proc XftDrawPicture*(
-  draw: PXftDraw
-): Picture {.cdecl, dynlib: xftLib, importc.}
+proc XftDrawDisplay*(draw: PXftDraw): PDisplay {.cdecl, dynlib: xftLib, importc.}
+
+proc XftDrawDrawable*(draw: PXftDraw): Drawable {.cdecl, dynlib: xftLib, importc.}
+
+proc XftDrawColormap*(draw: PXftDraw): Colormap {.cdecl, dynlib: xftLib, importc.}
+
+proc XftDrawVisual*(draw: PXftDraw): PVisual {.cdecl, dynlib: xftLib, importc.}
+
+proc XftDrawDestroy*(draw: PXftDraw) {.cdecl, dynlib: xftLib, importc.}
+
+proc XftDrawPicture*(draw: PXftDraw): Picture {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawSrcPicture*(
-  draw: PXftDraw,
-  color: PXftColor
+  draw: PXftDraw, color: PXftColor
 ): Picture {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawGlyphs*(
@@ -194,8 +169,8 @@
   x: cint,
   y: cint,
   glyphs: PFt_UInt,
-  nglyphs: cint
-) {.cdecl, dynlib: xftLib, importc.} 
+  nglyphs: cint,
+) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawString8*(
   draw: PXftDraw,
@@ -204,7 +179,7 @@
   x: cint,
   y: cint,
   str: PFcChar8,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawString16*(
@@ -214,7 +189,7 @@
   x: cint,
   y: cint,
   str: PFcChar16,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawString32*(
@@ -224,7 +199,7 @@
   x: cint,
   y: cint,
   str: PFcChar32,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawStringUtf8*(
@@ -234,7 +209,7 @@
   x: cint,
   y: cint,
   str: PFcChar8,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawStringUtf16*(
@@ -244,64 +219,39 @@
   x: cint,
   y: cint,
   str: PFcChar8,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawCharSpec*(
-  draw: PXftDraw,
-  color: PXftColor,
-  pub: PXftFont,
-  chars: PXftCharSpec,
-  len: cint
+  draw: PXftDraw, color: PXftColor, pub: PXftFont, chars: PXftCharSpec, len: cint
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawCharFontSpec*(
-  draw: PXftDraw,
-  color: PXftColor,
-  chars: PXftCharFontSpec,
-  len: cint
+  draw: PXftDraw, color: PXftColor, chars: PXftCharFontSpec, len: cint
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawGlyphSpec*(
-  draw: PXftDraw,
-  color: PXftColor,
-  pub: PXftFont,
-  glyphs: PXftGlyphSpec,
-  len: cint
+  draw: PXftDraw, color: PXftColor, pub: PXftFont, glyphs: PXftGlyphSpec, len: cint
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawGlyphFontSpec*(
-  draw: PXftDraw,
-  color: PXftColor,
-  glyphs: PXftGlyphFontSpec,
-  len: cint
+  draw: PXftDraw, color: PXftColor, glyphs: PXftGlyphFontSpec, len: cint
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawRect*(
-  draw: PXftDraw,
-  color: PXftColor,
-  x: cint,
-  y: cint,
-  width: cuint,
-  height: cuint
+  draw: PXftDraw, color: PXftColor, x: cint, y: cint, width: cuint, height: cuint
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawSetClip*(
-  draw: PXftDraw,
-  r: Region
+  draw: PXftDraw, r: Region
 ): XBool {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawSetClipRectangles*(
-  draw: PXftDraw,
-  xOrigin: cint,
-  yOrigin: cint,
-  rects: PXRectangle,
-  n: cint
+  draw: PXftDraw, xOrigin: cint, yOrigin: cint, rects: PXRectangle, n: cint
 ): XBool {.cdecl, dynlib: xftLib, importc.}
 
 proc XftDrawSetSubwindowMode*(
-  draw: PXftDraw,
-  mode: cint
+  draw: PXftDraw, mode: cint
 ) {.cdecl, dynlib: xftLib, importc.}
 
 # xftextent.c
@@ -310,39 +260,23 @@
   pub: PXftFont,
   glyphs: PFT_UInt,
   nglyphs: cint,
-  extends: PXGlyphInfo
+  extends: PXGlyphInfo,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftTextExtents8*(
-  display: PDisplay,
-  pub: PXftFont,
-  str: PFcChar8,
-  len: cint,
-  extents: PXGlyphInfo
+  display: PDisplay, pub: PXftFont, str: PFcChar8, len: cint, extents: PXGlyphInfo
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftTextExtents16*(
-  display: PDisplay,
-  pub: PXftFont,
-  str: PFcChar16,
-  len: cint,
-  extents: PXGlyphInfo
+  display: PDisplay, pub: PXftFont, str: PFcChar16, len: cint, extents: PXGlyphInfo
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftTextExtents32*(
-  display: PDisplay,
-  pub: PXftFont,
-  str: PFcChar32,
-  len: cint,
-  extents: PXGlyphInfo
+  display: PDisplay, pub: PXftFont, str: PFcChar32, len: cint, extents: PXGlyphInfo
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftTextExtentsUtf8*(
-  display: PDisplay,
-  pub: PXftFont,
-  str: PFcChar8,
-  len: cint,
-  extents: PXGlyphInfo
+  display: PDisplay, pub: PXftFont, str: PFcChar8, len: cint, extents: PXGlyphInfo
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftTextExtentsUtf16*(
@@ -351,100 +285,69 @@
   str: PFcChar8,
   endian: FcEndian,
   len: cint,
-  extents: PXGlyphInfo
+  extents: PXGlyphInfo,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 # xftfont.c
 proc XftFontMatch*(
-  display: PDisplay,
-  screen: cint,
-  pattern: PFcPattern,
-  result: PFcResult
+  display: PDisplay, screen: cint, pattern: PFcPattern, result: PFcResult
 ): PFcPattern {.cdecl, dynlib: xftLib, importc.}
 
 # Expects display to be nil as an argument
 proc XftFontOpen*(
-  display: PDisplay,
-  screen: cint
+  display: PDisplay, screen: cint
 ): PXftFont {.cdecl, dynlib: xftLib, importc, varargs.}
 
 proc XftFontOpenName*(
-  display: PDisplay,
-  screen: cint,
-  name: cstring
+  display: PDisplay, screen: cint, name: cstring
 ): PXftFont {.cdecl, dynlib: xftLib, importc.}
 
 proc XftFontOpenXlfd*(
-  display: PDisplay,
-  screen: cint,
-  xlfd: cstring
+  display: PDisplay, screen: cint, xlfd: cstring
 ): PXftFont {.cdecl, dynlib: xftLib, importc.}
 
 # xftfreetype.c
-proc XftLockFace*(
-  pub: PXftFont
-): FT_Face {.cdecl, dynlib: xftLib, importc.}
+proc XftLockFace*(pub: PXftFont): FT_Face {.cdecl, dynlib: xftLib, importc.}
 
-proc XftUnlockFace*(
-  pub: PXftFont
-) {.cdecl, dynlib: xftLib, importc.}
+proc XftUnlockFace*(pub: PXftFont) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftFontInfoCreate*(
-  display: PDisplay,
-  pattern: PFcPattern
+  display: PDisplay, pattern: PFcPattern
 ): PXftFontInfo {.cdecl, dynlib: xftLib, importc.}
 
 proc XftFontInfoDestroy*(
-  display: PDisplay,
-  fi: PXftFontInfo
+  display: PDisplay, fi: PXftFontInfo
 ) {.cdecl, dynlib: xftLib, importc.}
 
-proc XftFontInfoHash*(
-  fi: PXftFontInfo
-): PFcChar32 {.cdecl, dynlib: xftLib, importc.}
+proc XftFontInfoHash*(fi: PXftFontInfo): PFcChar32 {.cdecl, dynlib: xftLib, importc.}
 
 proc XftFontInfoEqual*(
-  a: PXftFontInfo,
-  b: PXftFontInfo
+  a: PXftFontInfo, b: PXftFontInfo
 ): FcBool {.cdecl, dynlib: xftLib, importc.}
 
 proc XftFontOpenInfo*(
-  display: PDisplay,
-  pattern: PFcPattern,
-  fi: PXftFontInfo
+  display: PDisplay, pattern: PFcPattern, fi: PXftFontInfo
 ): PXftFont {.cdecl, dynlib: xftLib, importc.}
 
 proc XftFontOpenPattern*(
-  display: PDisplay,
-  pattern: PFcPattern
+  display: PDisplay, pattern: PFcPattern
 ): PXftFont {.cdecl, dynlib: xftLib, importc.}
 
 proc XftFontCopy*(
-  display: PDisplay,
-  pub: PXftFont
+  display: PDisplay, pub: PXftFont
 ): PXftFont {.cdecl, dynlib: xftLib, importc.}
 
-proc XftFontClose*(
-  display: PDisplay,
-  pub: PXftFont
-) {.cdecl, dynlib: xftLib, importc.}
+proc XftFontClose*(display: PDisplay, pub: PXftFont) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftInitFtLibrary*(): FcBool {.cdecl, dynlib: xftLib, importc.}
 
 # xftglyphs.c
 proc XftFontLoadGlyphs*(
-  display: PDisplay,
-  pub: PXftFont,
-  need_bitmaps: FcBool,
-  glyphs: PFT_UInt,
-  nglyph: cint
+  display: PDisplay, pub: PXftFont, need_bitmaps: FcBool, glyphs: PFT_UInt, nglyph: cint
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftFontUnloadGlyphs*(
-  display: PDisplay,
-  pub: PXftFont,
-  glyphs: PFT_UInt,
-  nglyph: cint
+  display: PDisplay, pub: PXftFont, glyphs: PFT_UInt, nglyph: cint
 ) {.cdecl, dynlib: xftLib, importc.}
 
 const XFT_NMISSING* = 256
@@ -455,42 +358,34 @@
   need_bitmaps: FcBool,
   glyph: FT_UInt,
   missing: PFT_UInt,
-  nmissing: cint
+  nmissing: cint,
 ): FcBool {.cdecl, dynlib: xftLib, importc.}
 
 proc XftCharExists*(
-  display: PDisplay,
-  pub: PXftFont,
-  ucs4: FcChar32
+  display: PDisplay, pub: PXftFont, ucs4: FcChar32
 ): FcBool {.cdecl, dynlib: xftLib, importc.}
 
 proc XftCharIndex*(
-  display: PDisplay,
-  pub: PXftFont,
-  ucs4: FcChar32
+  display: PDisplay, pub: PXftFont, ucs4: FcChar32
 ): FT_UInt {.cdecl, dynlib: xftLib, importc.}
 
 # xftinit.c
-proc XftInit*(
-  config: cstring
-): FcBool {.cdecl, dynlib: xftLib, importc.}
+proc XftInit*(config: cstring): FcBool {.cdecl, dynlib: xftLib, importc.}
 
 proc XftGetVersion*(): cint {.cdecl, dynlib: xftLib, importc.}
 
 # xftlist.c
 # Expects display to be nil as an argument
 proc XftListFonts*(
-  display: PDisplay,
-  screen: cint
+  display: PDisplay, screen: cint
 ): PFcFontSet {.cdecl, dynlib: xftLib, importc, varargs.}
 
 # xftname.c
-proc XftNameParse*(
-  name: cstring
-): PFcPattern {.cdecl, dynlib: xftLib, importc.}
+proc XftNameParse*(name: cstring): PFcPattern {.cdecl, dynlib: xftLib, importc.}
 
 # xftrender.c
-proc XftGlyphRender*(display: PDisplay,
+proc XftGlyphRender*(
+  display: PDisplay,
   op: cint,
   src: Picture,
   pub: PXftFont,
@@ -500,10 +395,11 @@
   x: cint,
   y: cint,
   glyphs: PFT_UInt,
-  nglyphs: cint
+  nglyphs: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
-proc XftGlyphSpecRender*(display: PDisplay,
+proc XftGlyphSpecRender*(
+  display: PDisplay,
   op: cint,
   src: Picture,
   pub: PXftFont,
@@ -511,10 +407,11 @@
   srcx: cint,
   srcy: cint,
   glyphs: PXftGlyphSpec,
-  nglyphs: cint
+  nglyphs: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
-proc XftCharSpecRender*(display: PDisplay,
+proc XftCharSpecRender*(
+  display: PDisplay,
   op: cint,
   src: Picture,
   pub: PXftFont,
@@ -522,30 +419,33 @@
   srcx: cint,
   srcy: cint,
   chars: PXftCharSpec,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
-proc XftGlyphFontSpecRender*(display: PDisplay,
+proc XftGlyphFontSpecRender*(
+  display: PDisplay,
   op: cint,
   src: Picture,
   dst: Picture,
   srcx: cint,
   srcy: cint,
   glyphs: PXftGlyphFontSpec,
-  nglyphs: cint
+  nglyphs: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
-proc XftCharFontSpecRender*(display: PDisplay,
+proc XftCharFontSpecRender*(
+  display: PDisplay,
   op: cint,
   src: Picture,
   dst: Picture,
   srcx: cint,
   srcy: cint,
   chars: PXftCharFontSpec,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
-proc XftTextRender8*(display: PDisplay,
+proc XftTextRender8*(
+  display: PDisplay,
   op: cint,
   src: Picture,
   pub: PXftFont,
@@ -555,7 +455,7 @@
   x: cint,
   y: cint,
   str: PFcChar8,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftTextRender16*(
@@ -569,7 +469,7 @@
   x: cint,
   y: cint,
   str: PFcChar16,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftTextRender16BE*(
@@ -583,7 +483,7 @@
   x: cint,
   y: cint,
   str: PFcChar8,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftTextRender16LE*(
@@ -597,7 +497,7 @@
   x: cint,
   y: cint,
   str: PFcChar8,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftTextRender32*(
@@ -611,7 +511,7 @@
   x: cint,
   y: cint,
   str: PFcChar32,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftTextRender32BE*(
@@ -625,7 +525,7 @@
   x: cint,
   y: cint,
   str: PFcChar8,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftTextRender32LE*(
@@ -639,7 +539,7 @@
   x: cint,
   y: cint,
   str: PFcChar8,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftTextRenderUtf8*(
@@ -653,7 +553,7 @@
   x: cint,
   y: cint,
   str: PFcChar8,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 proc XftTextRenderUtf16*(
@@ -668,13 +568,10 @@
   y: cint,
   str: PFcChar8,
   endian: FcEndian,
-  len: cint
+  len: cint,
 ) {.cdecl, dynlib: xftLib, importc.}
 
 # xftxlfd.c
 proc XftXlfdParse8*(
-  xlfd_orig: cstring,
-  ignore_scalable: XBool,
-  complete: XBool
+  xlfd_orig: cstring, ignore_scalable: XBool, complete: XBool
 ): PFcPattern {.cdecl, dynlib: xftLib, importc.}
-
--- a/semicongine/thirdparty/x11/xi.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xi.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -59,8 +59,7 @@
 #        2004/10/03 - Conversion from C header to Pascal unit.
 #
 
-const
-  libXi* = "libXi.so(|.6)"
+const libXi* = "libXi.so(|.6)"
 
 const
   sz_xGetExtensionVersionReq* = 8
@@ -121,8 +120,7 @@
   sz_xChangeDeviceControlReq* = 8
   sz_xChangeDeviceControlReply* = 32
 
-const
-  INAME* = "XInputExtension"
+const INAME* = "XInputExtension"
 
 const
   XI_KEYBOARD* = "KEYBOARD"
@@ -171,11 +169,9 @@
   XI_Add_XChangeDeviceControl_Major* = 1
   XI_Add_XChangeDeviceControl_Minor* = 3
 
-const
-  DEVICE_RESOLUTION* = 1
+const DEVICE_RESOLUTION* = 1
 
-const
-  NoSuchExtension* = 1
+const NoSuchExtension* = 1
 
 const
   COUNT* = 0
@@ -189,8 +185,7 @@
   XPOINTER* = 0
   XKEYBOARD* = 1
 
-const
-  UseXKeyboard* = 0x000000FF
+const UseXKeyboard* = 0x000000FF
 
 const
   IsXPointer* = 0
@@ -224,16 +219,14 @@
   DvKey* = int(1) shl 6
   DvAutoRepeatMode* = 1 shl 7
 
-const
-  DvString* = int(1) shl 0
+const DvString* = int(1) shl 0
 
-const
-  DvInteger* = int(1) shl 0
+const DvInteger* = int(1) shl 0
 
 const
   DeviceMode* = int(1) shl 0
   Relative* = 0
-  Absolute* = 1            # Merged from Metrolink tree for XINPUT stuff
+  Absolute* = 1 # Merged from Metrolink tree for XINPUT stuff
   TS_Raw* = 57
   TS_Scaled* = 58
   SendCoreEvents* = 59
@@ -282,17 +275,16 @@
   XI_BadEvent* = 1
   XI_BadMode* = 2
   XI_DeviceBusy* = 3
-  XI_BadClass* = 4 # Make XEventClass be a CARD32 for 64 bit servers.  Don't affect client
-                   #  definition of XEventClass since that would be a library interface change.
-                   #  See the top of X.h for more _XSERVER64 magic.
-                   #
+  XI_BadClass* = 4
+    # Make XEventClass be a CARD32 for 64 bit servers.  Don't affect client
+    #  definition of XEventClass since that would be a library interface change.
+    #  See the top of X.h for more _XSERVER64 magic.
+    #
 
 when defined(XSERVER64):
-  type
-    XEventClass* = CARD32
+  type XEventClass* = CARD32
 else:
-  type
-    XEventClass* = int32
+  type XEventClass* = int32
 #******************************************************************
 # *
 # * Extension version structure.
@@ -301,7 +293,7 @@
 
 type
   PXExtensionVersion* = ptr XExtensionVersion
-  XExtensionVersion*{.final.} = object
+  XExtensionVersion* {.final.} = object
     present*: int16
     major_version*: int16
     minor_version*: int16
--- a/semicongine/thirdparty/x11/xi2.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xi2.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -5,8 +5,7 @@
 from xi import libXi
 export libXi
 
-const
-  XInput_2_0* = 7
+const XInput_2_0* = 7
 
 ##  DO NOT ADD TO THIS LIST. These are libXi-specific defines.
 ##    See commit libXi-1.4.2-21-ge8531dd
@@ -31,8 +30,7 @@
 
 ##  Special property type used for XIGetProperty
 
-const
-  XIAnyPropertyType* = 0
+const XIAnyPropertyType* = 0
 
 ##  Enter/Leave and Focus In/Out modes
 
@@ -174,13 +172,11 @@
 ##  Device event flags (common)
 ##  Device event flags (key events only)
 
-const
-  XIKeyRepeat* = (1 shl 16)
+const XIKeyRepeat* = (1 shl 16)
 
 ##  Device event flags (pointer events only)
 
-const
-  XIPointerEmulated* = (1 shl 16)
+const XIPointerEmulated* = (1 shl 16)
 
 ##  Device event flags (touch events only)
 
@@ -204,12 +200,16 @@
 type XIMask = ptr UncheckedArray[uint8]
 
 template XISetMask*(mask: pointer, event: untyped): untyped =
-  ((cast[XIMask]((mask)))[(event) shr 3] = (cast[XIMask]((mask)))[
-      (event) shr 3] or (1 shl ((event) and 7)))
+  (
+    (cast[XIMask]((mask)))[(event) shr 3] =
+      (cast[XIMask]((mask)))[(event) shr 3] or (1 shl ((event) and 7))
+  )
 
 template XIClearMask*(mask: pointer, event: untyped): untyped =
-  ((cast[XIMask]((mask)))[(event) shr 3] = (cast[XIMask]((mask)))[
-      (event) shr 3] and not (1 shl ((event) and 7)))
+  (
+    (cast[XIMask]((mask)))[(event) shr 3] =
+      (cast[XIMask]((mask)))[(event) shr 3] and not (1 shl ((event) and 7))
+  )
 
 template XIMaskIsSet*(mask: pointer, event: untyped): untyped =
   ((cast[XIMask]((mask)))[(event) shr 3].int and (1 shl ((event) and 7)))
--- a/semicongine/thirdparty/x11/xinerama.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xinerama.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,24 +1,26 @@
 # Converted from X11/Xinerama.h
-import
-  xlib
+import xlib
 
-const
-  xineramaLib = "libXinerama.so"
+const xineramaLib = "libXinerama.so"
 
 type
   PXineramaScreenInfo* = ptr XineramaScreenInfo
-  XineramaScreenInfo*{.final.} = object
+  XineramaScreenInfo* {.final.} = object
     screen_number*: cint
     x_org*: int16
     y_org*: int16
     width*: int16
     height*: int16
 
-proc XineramaQueryExtension*(dpy: PDisplay, event_base: Pcint, error_base: Pcint): XBool{.
-    cdecl, dynlib: xineramaLib, importc.}
-proc XineramaQueryVersion*(dpy: PDisplay, major: Pcint, minor: Pcint): Status{.
-    cdecl, dynlib: xineramaLib, importc.}
-proc XineramaIsActive*(dpy: PDisplay): XBool{.cdecl, dynlib: xineramaLib, importc.}
-proc XineramaQueryScreens*(dpy: PDisplay, number: Pcint): PXineramaScreenInfo{.
-    cdecl, dynlib: xineramaLib, importc.}
+proc XineramaQueryExtension*(
+  dpy: PDisplay, event_base: Pcint, error_base: Pcint
+): XBool {.cdecl, dynlib: xineramaLib, importc.}
 
+proc XineramaQueryVersion*(
+  dpy: PDisplay, major: Pcint, minor: Pcint
+): Status {.cdecl, dynlib: xineramaLib, importc.}
+
+proc XineramaIsActive*(dpy: PDisplay): XBool {.cdecl, dynlib: xineramaLib, importc.}
+proc XineramaQueryScreens*(
+  dpy: PDisplay, number: Pcint
+): PXineramaScreenInfo {.cdecl, dynlib: xineramaLib, importc.}
--- a/semicongine/thirdparty/x11/xinput.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xinput.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -223,11 +223,12 @@
     window*: Window ##  "event" window reported relative to
     deviceid*: XID
     mode*: cint ##  NotifyNormal, NotifyGrab, NotifyUngrab
-    detail*: cint ##
-                    ##  NotifyAncestor, NotifyVirtual, NotifyInferior,
-                    ##  NotifyNonLinear,NotifyNonLinearVirtual, NotifyPointer,
-                    ##  NotifyPointerRoot, NotifyDetailNone
-                    ##
+    detail*: cint
+      ##
+      ##  NotifyAncestor, NotifyVirtual, NotifyInferior,
+      ##  NotifyNonLinear,NotifyNonLinearVirtual, NotifyPointer,
+      ##  NotifyPointerRoot, NotifyDetailNone
+      ##
     time*: Time
 
   PXDeviceFocusInEvent* = PXDeviceFocusChangeEvent
@@ -318,8 +319,9 @@
     window*: Window ##  unused
     deviceid*: XID
     time*: Time
-    request*: cint ##  one of MappingModifier, MappingKeyboard,
-                     ##  MappingPointer
+    request*: cint
+      ##  one of MappingModifier, MappingKeyboard,
+      ##  MappingPointer
     first_keycode*: cint ##  first keycode
     count*: cint ##  defines range of change w. first_keycode
 
@@ -360,14 +362,14 @@
   PXDevicePropertyNotifyEvent* = ptr XDevicePropertyNotifyEvent
   XDevicePropertyNotifyEvent* {.final.} = object
     `type`*: cint
-    serial*: culong    ##  # of last request processed by server
+    serial*: culong ##  # of last request processed by server
     send_event*: XBool ##  true if this came from a SendEvent request
     display*: PDisplay ##  Display the event was read from
-    window*: Window    ##  unused
+    window*: Window ##  unused
     time*: Time
-    deviceid*: XID     ##  id of the device that changed
-    atom*: Atom        ##  the property that changed
-    state*: cint       ##  PropertyNewValue or PropertyDeleted
+    deviceid*: XID ##  id of the device that changed
+    atom*: Atom ##  the property that changed
+    state*: cint ##  PropertyNewValue or PropertyDeleted
 
   PXFeedbackState* = ptr XFeedbackState
   XFeedbackState* {.final.} = object
@@ -659,41 +661,83 @@
     num_buttons*: cshort
     buttons*: array[32, char]
 
-
 {.push cdecl, importc, dynlib: libXi.}
 
 proc XChangeKeyboardDevice*(a1: PDisplay, a2: PXDevice): cint
 proc XChangePointerDevice*(a1: PDisplay, a2: PXDevice, a3, a4: cint): cint
-proc XGrabDevice*(a1: PDisplay, a2: PXDevice, a3: Window, a4: XBool, a5: cint,
-                 a6: ptr UncheckedArray[XEventClass], a7, a8: cint, a9: Time): cint
+proc XGrabDevice*(
+  a1: PDisplay,
+  a2: PXDevice,
+  a3: Window,
+  a4: XBool,
+  a5: cint,
+  a6: ptr UncheckedArray[XEventClass],
+  a7, a8: cint,
+  a9: Time,
+): cint
+
 proc XUngrabDevice*(a1: PDisplay, a2: PXDevice, a3: Time): cint
-proc XGrabDeviceKey*(a1: PDisplay, a2: PXDevice, a3, a4: cuint,
-                    a5: PXDevice, a6: Window, a7: XBool, a8: cuint,
-                    a9: ptr UncheckedArray[XEventClass], a10, a11: cint): cint
-proc XUngrabDeviceKey*(a1: PDisplay, a2: PXDevice, a3: cuint, a4: cuint,
-                      a5: PXDevice, a6: Window): cint
-proc XGrabDeviceButton*(a1: PDisplay, a2: PXDevice, a3: cuint, a4: cuint,
-                       a5: PXDevice, a6: Window, a7: XBool, a8: cuint,
-                       a9: ptr UncheckedArray[XEventClass], a10: cint, a11: cint): cint
-proc XUngrabDeviceButton*(a1: PDisplay, a2: PXDevice, a3: cuint, a4: cuint,
-                         a5: PXDevice, a6: Window): cint
+proc XGrabDeviceKey*(
+  a1: PDisplay,
+  a2: PXDevice,
+  a3, a4: cuint,
+  a5: PXDevice,
+  a6: Window,
+  a7: XBool,
+  a8: cuint,
+  a9: ptr UncheckedArray[XEventClass],
+  a10, a11: cint,
+): cint
+
+proc XUngrabDeviceKey*(
+  a1: PDisplay, a2: PXDevice, a3: cuint, a4: cuint, a5: PXDevice, a6: Window
+): cint
+
+proc XGrabDeviceButton*(
+  a1: PDisplay,
+  a2: PXDevice,
+  a3: cuint,
+  a4: cuint,
+  a5: PXDevice,
+  a6: Window,
+  a7: XBool,
+  a8: cuint,
+  a9: ptr UncheckedArray[XEventClass],
+  a10: cint,
+  a11: cint,
+): cint
+
+proc XUngrabDeviceButton*(
+  a1: PDisplay, a2: PXDevice, a3: cuint, a4: cuint, a5: PXDevice, a6: Window
+): cint
+
 proc XAllowDeviceEvents*(a1: PDisplay, a2: PXDevice, a3: cint, a4: Time): cint
-proc XGetDeviceFocus*(a1: PDisplay, a2: PXDevice, a3: PWindow, a4: ptr cint,
-                     a5: ptr Time): cint
+proc XGetDeviceFocus*(
+  a1: PDisplay, a2: PXDevice, a3: PWindow, a4: ptr cint, a5: ptr Time
+): cint
+
 proc XSetDeviceFocus*(a1: PDisplay, a2: PXDevice, a3: Window, a4: cint, a5: Time): cint
 proc XGetFeedbackControl*(a1: PDisplay, a2: PXDevice, a3: ptr cint): PXFeedbackState
 proc XFreeFeedbackList*(a1: PXFeedbackState)
-proc XChangeFeedbackControl*(a1: PDisplay, a2: PXDevice, a3: culong,
-                            a4: PXFeedbackControl): cint
+proc XChangeFeedbackControl*(
+  a1: PDisplay, a2: PXDevice, a3: culong, a4: PXFeedbackControl
+): cint
+
 proc XDeviceBell*(a1: PDisplay, a2: PXDevice, a3, a4: XID, a5: cint): cint
-proc XGetDeviceKeyMapping*(a1: PDisplay, a2: PXDevice,
+proc XGetDeviceKeyMapping*(
+  a1: PDisplay,
+  a2: PXDevice,
   a3: (when xNeedWidePrototypes: cuint else: KeyCode),
-  a4: cint, a5: ptr cint): PKeySym
-proc XChangeDeviceKeyMapping*(a1: PDisplay, a2: PXDevice, a3: cint, a4: cint,
-                             a5: PKeySym, a6: cint): cint
+  a4: cint,
+  a5: ptr cint,
+): PKeySym
+
+proc XChangeDeviceKeyMapping*(
+  a1: PDisplay, a2: PXDevice, a3: cint, a4: cint, a5: PKeySym, a6: cint
+): cint
+
 proc XGetDeviceModifierMapping*(a1: PDisplay, a2: PXDevice): PXModifierKeymap
-proc XSetDeviceModifierMapping*(a1: PDisplay, a2: PXDevice,
-                               a3: PXModifierKeymap): cint
+proc XSetDeviceModifierMapping*(a1: PDisplay, a2: PXDevice, a3: PXModifierKeymap): cint
 proc XSetDeviceButtonMapping*(a1: PDisplay, a2: PXDevice, a3: cstring, a4: cint): cint
 proc XGetDeviceButtonMapping*(a1: PDisplay, a2: PXDevice, a3: cstring, a4: cuint): cint
 proc XQueryDeviceState*(a1: PDisplay, a2: PXDevice): PXDeviceState
@@ -704,29 +748,77 @@
 proc XOpenDevice*(a1: PDisplay, a2: XID): PXDevice
 proc XCloseDevice*(a1: PDisplay, a2: PXDevice): cint
 proc XSetDeviceMode*(a1: PDisplay, a2: PXDevice, a3: cint): cint
-proc XSetDeviceValuators*(a1: PDisplay, a2: PXDevice, a3: ptr cint, a4: cint, a5: cint): cint
+proc XSetDeviceValuators*(
+  a1: PDisplay, a2: PXDevice, a3: ptr cint, a4: cint, a5: cint
+): cint
+
 proc XGetDeviceControl*(a1: PDisplay, a2: PXDevice, a3: cint): PXDeviceControl
-proc XChangeDeviceControl*(a1: PDisplay, a2: PXDevice, a3: cint,
-                          a4: PXDeviceControl): cint
-proc XSelectExtensionEvent*(a1: PDisplay, a2: Window, a3: ptr UncheckedArray[XEventClass], a4: cint): cint
-proc XGetSelectedExtensionEvents*(a1: PDisplay, a2: Window, a3: ptr cint,
-                                 a4: ptr ptr UncheckedArray[XEventClass], a5: ptr cint,
-                                 a6: ptr ptr UncheckedArray[XEventClass]): cint
-proc XChangeDeviceDontPropagateList*(a1: PDisplay, a2: Window, a3: cint,
-                                    a4: ptr UncheckedArray[XEventClass], a5: cint): cint
-proc XGetDeviceDontPropagateList*(a1: PDisplay, a2: Window, a3: ptr cint): ptr UncheckedArray[XEventClass]
-proc XSendExtensionEvent*(a1: PDisplay, a2: PXDevice, a3: Window, a4: XBool, a5: cint,
-                         a6: ptr UncheckedArray[XEventClass], a7: PXEvent): Status
-proc XGetDeviceMotionEvents*(a1: PDisplay, a2: PXDevice, a3, a4: Time,
-                            a5, a6, a7: ptr cint): PXDeviceTimeCoord
+proc XChangeDeviceControl*(
+  a1: PDisplay, a2: PXDevice, a3: cint, a4: PXDeviceControl
+): cint
+
+proc XSelectExtensionEvent*(
+  a1: PDisplay, a2: Window, a3: ptr UncheckedArray[XEventClass], a4: cint
+): cint
+
+proc XGetSelectedExtensionEvents*(
+  a1: PDisplay,
+  a2: Window,
+  a3: ptr cint,
+  a4: ptr ptr UncheckedArray[XEventClass],
+  a5: ptr cint,
+  a6: ptr ptr UncheckedArray[XEventClass],
+): cint
+
+proc XChangeDeviceDontPropagateList*(
+  a1: PDisplay, a2: Window, a3: cint, a4: ptr UncheckedArray[XEventClass], a5: cint
+): cint
+
+proc XGetDeviceDontPropagateList*(
+  a1: PDisplay, a2: Window, a3: ptr cint
+): ptr UncheckedArray[XEventClass]
+
+proc XSendExtensionEvent*(
+  a1: PDisplay,
+  a2: PXDevice,
+  a3: Window,
+  a4: XBool,
+  a5: cint,
+  a6: ptr UncheckedArray[XEventClass],
+  a7: PXEvent,
+): Status
+
+proc XGetDeviceMotionEvents*(
+  a1: PDisplay, a2: PXDevice, a3, a4: Time, a5, a6, a7: ptr cint
+): PXDeviceTimeCoord
+
 proc XFreeDeviceMotionEvents*(a1: PXDeviceTimeCoord)
 proc XFreeDeviceControl*(a1: PXDeviceControl)
 proc XListDeviceProperties*(a1: PDisplay, a2: PXDevice, a3: ptr cint): PAtom
-proc XChangeDeviceProperty*(a1: PDisplay, a2: PXDevice, a3: Atom, a4: Atom, a5: cint,
-                           a6: cint, a7: cstring, a8: cint)
+proc XChangeDeviceProperty*(
+  a1: PDisplay,
+  a2: PXDevice,
+  a3: Atom,
+  a4: Atom,
+  a5: cint,
+  a6: cint,
+  a7: cstring,
+  a8: cint,
+)
+
 proc XDeleteDeviceProperty*(a1: PDisplay, a2: PXDevice, a3: Atom)
-proc XGetDeviceProperty*(a1: PDisplay, a2: PXDevice, a3: Atom, a4, a5: clong,
-                        a6: XBool, a7: Atom, a8: PAtom, a9: ptr cint, a10: ptr culong,
-                        a11: ptr culong, a12: ptr cstring): Status
+proc XGetDeviceProperty*(
+  a1: PDisplay,
+  a2: PXDevice,
+  a3: Atom,
+  a4, a5: clong,
+  a6: XBool,
+  a7: Atom,
+  a8: PAtom,
+  a9: ptr cint,
+  a10: ptr culong,
+  a11: ptr culong,
+  a12: ptr cstring,
+): Status
 
 {.pop.}
--- a/semicongine/thirdparty/x11/xinput2.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xinput2.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -18,7 +18,7 @@
   XIRemoveMasterInfo* {.final.} = object
     `type`*: cint
     deviceid*: cint
-    return_mode*: cint         ##  AttachToMaster, Floating
+    return_mode*: cint ##  AttachToMaster, Floating
     return_pointer*: cint
     return_keyboard*: cint
 
@@ -35,7 +35,7 @@
 
   PXIAnyHierarchyChangeInfo* = ptr XIAnyHierarchyChangeInfo
   XIAnyHierarchyChangeInfo* {.final, union.} = object
-    `type`*: cint              ##  must be first element
+    `type`*: cint ##  must be first element
     add*: XIAddMasterInfo
     remove*: XIRemoveMasterInfo
     attach*: XIAttachSlaveInfo
@@ -100,7 +100,6 @@
     resolution*: cint
     mode*: cint
 
-
 ##  new in XI 2.1
 
 type
@@ -150,11 +149,11 @@
 type
   PXIEvent* = ptr XIEvent
   XIEvent* {.final.} = object
-    `type`*: cint              ##  GenericEvent
-    serial*: culong            ##  # of last request processed by server
-    send_event*: XBool          ##  true if this came from a SendEvent request
-    display*: PDisplay       ##  Display the event was read from
-    extension*: cint           ##  XI extension offset
+    `type`*: cint ##  GenericEvent
+    serial*: culong ##  # of last request processed by server
+    send_event*: XBool ##  true if this came from a SendEvent request
+    display*: PDisplay ##  Display the event was read from
+    extension*: cint ##  XI extension offset
     evtype*: cint
     time*: Time
 
@@ -174,12 +173,12 @@
 type
   PXIHierarchyEvent* = ptr XIHierarchyEvent
   XIHierarchyEvent* {.final.} = object
-    `type`*: cint              ##  GenericEvent
-    serial*: culong            ##  # of last request processed by server
-    send_event*: XBool          ##  true if this came from a SendEvent request
-    display*: PDisplay       ##  Display the event was read from
-    extension*: cint           ##  XI extension offset
-    evtype*: cint              ##  XI_HierarchyChanged
+    `type`*: cint ##  GenericEvent
+    serial*: culong ##  # of last request processed by server
+    send_event*: XBool ##  true if this came from a SendEvent request
+    display*: PDisplay ##  Display the event was read from
+    extension*: cint ##  XI extension offset
+    evtype*: cint ##  XI_HierarchyChanged
     time*: Time
     flags*: cint
     num_info*: cint
@@ -193,26 +192,26 @@
 type
   PXIDeviceChangedEvent* = ptr XIDeviceChangedEvent
   XIDeviceChangedEvent* {.final.} = object
-    `type`*: cint              ##  GenericEvent
-    serial*: culong            ##  # of last request processed by server
-    send_event*: XBool          ##  true if this came from a SendEvent request
-    display*: PDisplay       ##  Display the event was read from
-    extension*: cint           ##  XI extension offset
-    evtype*: cint              ##  XI_DeviceChanged
+    `type`*: cint ##  GenericEvent
+    serial*: culong ##  # of last request processed by server
+    send_event*: XBool ##  true if this came from a SendEvent request
+    display*: PDisplay ##  Display the event was read from
+    extension*: cint ##  XI extension offset
+    evtype*: cint ##  XI_DeviceChanged
     time*: Time
-    deviceid*: cint            ##  id of the device that changed
-    sourceid*: cint            ##  Source for the new classes.
-    reason*: cint              ##  Reason for the change
+    deviceid*: cint ##  id of the device that changed
+    sourceid*: cint ##  Source for the new classes.
+    reason*: cint ##  Reason for the change
     num_classes*: cint
     classes*: ptr ptr XIAnyClassInfo ##  same as in XIDeviceInfo
 
   PXIDeviceEvent* = ptr XIDeviceEvent
   XIDeviceEvent* {.final.} = object
-    `type`*: cint              ##  GenericEvent
-    serial*: culong            ##  # of last request processed by server
-    send_event*: XBool          ##  true if this came from a SendEvent request
-    display*: PDisplay       ##  Display the event was read from
-    extension*: cint           ##  XI extension offset
+    `type`*: cint ##  GenericEvent
+    serial*: culong ##  # of last request processed by server
+    send_event*: XBool ##  true if this came from a SendEvent request
+    display*: PDisplay ##  Display the event was read from
+    extension*: cint ##  XI extension offset
     evtype*: cint
     time*: Time
     deviceid*: cint
@@ -233,15 +232,16 @@
 
   PXIRawEvent* = ptr XIRawEvent
   XIRawEvent* {.final.} = object
-    `type`*: cint              ##  GenericEvent
-    serial*: culong            ##  # of last request processed by server
-    send_event*: XBool          ##  true if this came from a SendEvent request
-    display*: PDisplay       ##  Display the event was read from
-    extension*: cint           ##  XI extension offset
-    evtype*: cint              ##  XI_RawKeyPress, XI_RawKeyRelease, etc.
+    `type`*: cint ##  GenericEvent
+    serial*: culong ##  # of last request processed by server
+    send_event*: XBool ##  true if this came from a SendEvent request
+    display*: PDisplay ##  Display the event was read from
+    extension*: cint ##  XI extension offset
+    evtype*: cint ##  XI_RawKeyPress, XI_RawKeyRelease, etc.
     time*: Time
     deviceid*: cint
-    sourceid*: cint            ##  Bug: Always 0. https://bugs.freedesktop.org//show_bug.cgi?id=34240
+    sourceid*: cint
+      ##  Bug: Always 0. https://bugs.freedesktop.org//show_bug.cgi?id=34240
     detail*: cint
     flags*: cint
     valuators*: XIValuatorState
@@ -249,11 +249,11 @@
 
   PXIEnterEvent* = ptr XIEnterEvent
   XIEnterEvent* {.final.} = object
-    `type`*: cint              ##  GenericEvent
-    serial*: culong            ##  # of last request processed by server
-    send_event*: XBool          ##  true if this came from a SendEvent request
-    display*: PDisplay       ##  Display the event was read from
-    extension*: cint           ##  XI extension offset
+    `type`*: cint ##  GenericEvent
+    serial*: culong ##  # of last request processed by server
+    send_event*: XBool ##  true if this came from a SendEvent request
+    display*: PDisplay ##  Display the event was read from
+    extension*: cint ##  XI extension offset
     evtype*: cint
     time*: Time
     deviceid*: cint
@@ -283,24 +283,24 @@
 
   PXIPropertyEvent* = ptr XIPropertyEvent
   XIPropertyEvent* {.final.} = object
-    `type`*: cint              ##  GenericEvent
-    serial*: culong            ##  # of last request processed by server
-    send_event*: XBool          ##  true if this came from a SendEvent request
-    display*: PDisplay       ##  Display the event was read from
-    extension*: cint           ##  XI extension offset
-    evtype*: cint              ##  XI_PropertyEvent
+    `type`*: cint ##  GenericEvent
+    serial*: culong ##  # of last request processed by server
+    send_event*: XBool ##  true if this came from a SendEvent request
+    display*: PDisplay ##  Display the event was read from
+    extension*: cint ##  XI extension offset
+    evtype*: cint ##  XI_PropertyEvent
     time*: Time
-    deviceid*: cint            ##  id of the device that changed
+    deviceid*: cint ##  id of the device that changed
     property*: Atom
     what*: cint
 
   PXITouchOwnershipEvent* = ptr XITouchOwnershipEvent
   XITouchOwnershipEvent* {.final.} = object
-    `type`*: cint              ##  GenericEvent
-    serial*: culong            ##  # of last request processed by server
-    send_event*: XBool          ##  true if this came from a SendEvent request
-    display*: PDisplay       ##  Display the event was read from
-    extension*: cint           ##  XI extension offset
+    `type`*: cint ##  GenericEvent
+    serial*: culong ##  # of last request processed by server
+    send_event*: XBool ##  true if this came from a SendEvent request
+    display*: PDisplay ##  Display the event was read from
+    extension*: cint ##  XI extension offset
     evtype*: cint
     time*: Time
     deviceid*: cint
@@ -313,11 +313,11 @@
 
   PXIBarrierEvent* = ptr XIBarrierEvent
   XIBarrierEvent* {.final.} = object
-    `type`*: cint              ##  GenericEvent
-    serial*: culong            ##  # of last request processed by server
-    send_event*: XBool          ##  true if this came from a SendEvent request
-    display*: PDisplay       ##  Display the event was read from
-    extension*: cint           ##  XI extension offset
+    `type`*: cint ##  GenericEvent
+    serial*: culong ##  # of last request processed by server
+    send_event*: XBool ##  true if this came from a SendEvent request
+    display*: PDisplay ##  Display the event was read from
+    extension*: cint ##  XI extension offset
     evtype*: cint
     time*: Time
     deviceid*: cint
@@ -336,86 +336,234 @@
 ##
 ## XI2 Procs, uses same shared object as XI
 ##
- 
+
 {.push cdecl, importc, dynlib: libXi.}
 
-proc XIQueryPointer*(display: PDisplay; deviceid: cint; win: Window;
-                    root: PWindow; child: PWindow; root_x: ptr cdouble;
-                    root_y: ptr cdouble; win_x: ptr cdouble; win_y: ptr cdouble;
-                    buttons: PXIButtonState; mods: PXIModifierState;
-                    group: PXIGroupState): XBool
-proc XIWarpPointer*(display: PDisplay; deviceid: cint; src_win: Window;
-                   dst_win: Window; src_x: cdouble; src_y: cdouble; src_width: cuint;
-                   src_height: cuint; dst_x: cdouble; dst_y: cdouble): XBool
-proc XIDefineCursor*(display: PDisplay; deviceid: cint; win: Window; cursor: Cursor): Status
-proc XIUndefineCursor*(display: PDisplay; deviceid: cint; win: Window): Status
-proc XIChangeHierarchy*(display: PDisplay; changes: PXIAnyHierarchyChangeInfo;
-                       num_changes: cint): Status
-proc XISetClientPointer*(dpy: PDisplay; win: Window; deviceid: cint): Status
-proc XIGetClientPointer*(dpy: PDisplay; win: Window; deviceid: ptr cint): XBool
-proc XISelectEvents*(dpy: PDisplay; win: Window; masks: PXIEventMask;
-                    num_masks: cint): cint
-proc XIGetSelectedEvents*(dpy: PDisplay; win: Window; num_masks_return: ptr cint): PXIEventMask
-proc XIQueryVersion*(dpy: PDisplay; major_version_inout: ptr cint;
-                    minor_version_inout: ptr cint): Status
-proc XIQueryDevice*(dpy: PDisplay; deviceid: cint; ndevices_return: ptr cint): PXIDeviceInfo
-proc XISetFocus*(dpy: PDisplay; deviceid: cint; focus: Window; time: Time): Status
-proc XIGetFocus*(dpy: PDisplay; deviceid: cint; focus_return: PWindow): Status
-proc XIGrabDevice*(dpy: PDisplay; deviceid: cint; grab_window: Window; time: Time;
-                  cursor: Cursor; grab_mode: cint; paired_device_mode: cint;
-                  owner_events: XBool; mask: PXIEventMask): Status
-proc XIUngrabDevice*(dpy: PDisplay; deviceid: cint; time: Time): Status
-proc XIAllowEvents*(display: PDisplay; deviceid: cint; event_mode: cint; time: Time): Status
-proc XIAllowTouchEvents*(display: PDisplay; deviceid: cint; touchid: cuint;
-                        grab_window: Window; event_mode: cint): Status
-proc XIGrabButton*(display: PDisplay; deviceid: cint; button: cint;
-                  grab_window: Window; cursor: Cursor; grab_mode: cint;
-                  paired_device_mode: cint; owner_events: cint;
-                  mask: PXIEventMask; num_modifiers: cint;
-                  modifiers_inout: PXIGrabModifiers): cint
-proc XIGrabKeycode*(display: PDisplay; deviceid: cint; keycode: cint;
-                   grab_window: Window; grab_mode: cint; paired_device_mode: cint;
-                   owner_events: cint; mask: PXIEventMask; num_modifiers: cint;
-                   modifiers_inout: PXIGrabModifiers): cint
-proc XIGrabEnter*(display: PDisplay; deviceid: cint; grab_window: Window;
-                 cursor: Cursor; grab_mode: cint; paired_device_mode: cint;
-                 owner_events: cint; mask: PXIEventMask; num_modifiers: cint;
-                 modifiers_inout: PXIGrabModifiers): cint
-proc XIGrabFocusIn*(display: PDisplay; deviceid: cint; grab_window: Window;
-                   grab_mode: cint; paired_device_mode: cint; owner_events: cint;
-                   mask: PXIEventMask; num_modifiers: cint;
-                   modifiers_inout: PXIGrabModifiers): cint
-proc XIGrabTouchBegin*(display: PDisplay; deviceid: cint; grab_window: Window;
-                      owner_events: cint; mask: PXIEventMask; num_modifiers: cint;
-                      modifiers_inout: PXIGrabModifiers): cint
-proc XIUngrabButton*(display: PDisplay; deviceid: cint; button: cint;
-                    grab_window: Window; num_modifiers: cint;
-                    modifiers: PXIGrabModifiers): Status
-proc XIUngrabKeycode*(display: PDisplay; deviceid: cint; keycode: cint;
-                     grab_window: Window; num_modifiers: cint;
-                     modifiers: PXIGrabModifiers): Status
-proc XIUngrabEnter*(display: PDisplay; deviceid: cint; grab_window: Window;
-                   num_modifiers: cint; modifiers: PXIGrabModifiers): Status
-proc XIUngrabFocusIn*(display: PDisplay; deviceid: cint; grab_window: Window;
-                     num_modifiers: cint; modifiers: PXIGrabModifiers): Status
-proc XIUngrabTouchBegin*(display: PDisplay; deviceid: cint; grab_window: Window;
-                        num_modifiers: cint; modifiers: PXIGrabModifiers): Status
-proc XIListProperties*(display: PDisplay; deviceid: cint;
-                      num_props_return: ptr cint): PAtom
-proc XIChangeProperty*(display: PDisplay; deviceid: cint; property: Atom;
-                      `type`: Atom; format: cint; mode: cint; data: ptr cuchar;
-                      num_items: cint)
-proc XIDeleteProperty*(display: PDisplay; deviceid: cint; property: Atom)
-proc XIGetProperty*(display: PDisplay; deviceid: cint; property: Atom; offset: clong;
-                   length: clong; delete_property: XBool; `type`: Atom;
-                   type_return: PAtom; format_return: ptr cint;
-                   num_items_return: ptr culong; bytes_after_return: ptr culong;
-                   data: ptr ptr cuchar): Status
-proc XIBarrierReleasePointers*(display: PDisplay;
-                              barriers: PXIBarrierReleasePointerInfo;
-                              num_barriers: cint)
-proc XIBarrierReleasePointer*(display: PDisplay; deviceid: cint;
-                             barrier: PointerBarrier; eventid: BarrierEventID)
+proc XIQueryPointer*(
+  display: PDisplay,
+  deviceid: cint,
+  win: Window,
+  root: PWindow,
+  child: PWindow,
+  root_x: ptr cdouble,
+  root_y: ptr cdouble,
+  win_x: ptr cdouble,
+  win_y: ptr cdouble,
+  buttons: PXIButtonState,
+  mods: PXIModifierState,
+  group: PXIGroupState,
+): XBool
+
+proc XIWarpPointer*(
+  display: PDisplay,
+  deviceid: cint,
+  src_win: Window,
+  dst_win: Window,
+  src_x: cdouble,
+  src_y: cdouble,
+  src_width: cuint,
+  src_height: cuint,
+  dst_x: cdouble,
+  dst_y: cdouble,
+): XBool
+
+proc XIDefineCursor*(
+  display: PDisplay, deviceid: cint, win: Window, cursor: Cursor
+): Status
+
+proc XIUndefineCursor*(display: PDisplay, deviceid: cint, win: Window): Status
+proc XIChangeHierarchy*(
+  display: PDisplay, changes: PXIAnyHierarchyChangeInfo, num_changes: cint
+): Status
+
+proc XISetClientPointer*(dpy: PDisplay, win: Window, deviceid: cint): Status
+proc XIGetClientPointer*(dpy: PDisplay, win: Window, deviceid: ptr cint): XBool
+proc XISelectEvents*(
+  dpy: PDisplay, win: Window, masks: PXIEventMask, num_masks: cint
+): cint
+
+proc XIGetSelectedEvents*(
+  dpy: PDisplay, win: Window, num_masks_return: ptr cint
+): PXIEventMask
+
+proc XIQueryVersion*(
+  dpy: PDisplay, major_version_inout: ptr cint, minor_version_inout: ptr cint
+): Status
+
+proc XIQueryDevice*(
+  dpy: PDisplay, deviceid: cint, ndevices_return: ptr cint
+): PXIDeviceInfo
+
+proc XISetFocus*(dpy: PDisplay, deviceid: cint, focus: Window, time: Time): Status
+proc XIGetFocus*(dpy: PDisplay, deviceid: cint, focus_return: PWindow): Status
+proc XIGrabDevice*(
+  dpy: PDisplay,
+  deviceid: cint,
+  grab_window: Window,
+  time: Time,
+  cursor: Cursor,
+  grab_mode: cint,
+  paired_device_mode: cint,
+  owner_events: XBool,
+  mask: PXIEventMask,
+): Status
+
+proc XIUngrabDevice*(dpy: PDisplay, deviceid: cint, time: Time): Status
+proc XIAllowEvents*(
+  display: PDisplay, deviceid: cint, event_mode: cint, time: Time
+): Status
+
+proc XIAllowTouchEvents*(
+  display: PDisplay,
+  deviceid: cint,
+  touchid: cuint,
+  grab_window: Window,
+  event_mode: cint,
+): Status
+
+proc XIGrabButton*(
+  display: PDisplay,
+  deviceid: cint,
+  button: cint,
+  grab_window: Window,
+  cursor: Cursor,
+  grab_mode: cint,
+  paired_device_mode: cint,
+  owner_events: cint,
+  mask: PXIEventMask,
+  num_modifiers: cint,
+  modifiers_inout: PXIGrabModifiers,
+): cint
+
+proc XIGrabKeycode*(
+  display: PDisplay,
+  deviceid: cint,
+  keycode: cint,
+  grab_window: Window,
+  grab_mode: cint,
+  paired_device_mode: cint,
+  owner_events: cint,
+  mask: PXIEventMask,
+  num_modifiers: cint,
+  modifiers_inout: PXIGrabModifiers,
+): cint
+
+proc XIGrabEnter*(
+  display: PDisplay,
+  deviceid: cint,
+  grab_window: Window,
+  cursor: Cursor,
+  grab_mode: cint,
+  paired_device_mode: cint,
+  owner_events: cint,
+  mask: PXIEventMask,
+  num_modifiers: cint,
+  modifiers_inout: PXIGrabModifiers,
+): cint
+
+proc XIGrabFocusIn*(
+  display: PDisplay,
+  deviceid: cint,
+  grab_window: Window,
+  grab_mode: cint,
+  paired_device_mode: cint,
+  owner_events: cint,
+  mask: PXIEventMask,
+  num_modifiers: cint,
+  modifiers_inout: PXIGrabModifiers,
+): cint
+
+proc XIGrabTouchBegin*(
+  display: PDisplay,
+  deviceid: cint,
+  grab_window: Window,
+  owner_events: cint,
+  mask: PXIEventMask,
+  num_modifiers: cint,
+  modifiers_inout: PXIGrabModifiers,
+): cint
+
+proc XIUngrabButton*(
+  display: PDisplay,
+  deviceid: cint,
+  button: cint,
+  grab_window: Window,
+  num_modifiers: cint,
+  modifiers: PXIGrabModifiers,
+): Status
+
+proc XIUngrabKeycode*(
+  display: PDisplay,
+  deviceid: cint,
+  keycode: cint,
+  grab_window: Window,
+  num_modifiers: cint,
+  modifiers: PXIGrabModifiers,
+): Status
+
+proc XIUngrabEnter*(
+  display: PDisplay,
+  deviceid: cint,
+  grab_window: Window,
+  num_modifiers: cint,
+  modifiers: PXIGrabModifiers,
+): Status
+
+proc XIUngrabFocusIn*(
+  display: PDisplay,
+  deviceid: cint,
+  grab_window: Window,
+  num_modifiers: cint,
+  modifiers: PXIGrabModifiers,
+): Status
+
+proc XIUngrabTouchBegin*(
+  display: PDisplay,
+  deviceid: cint,
+  grab_window: Window,
+  num_modifiers: cint,
+  modifiers: PXIGrabModifiers,
+): Status
+
+proc XIListProperties*(
+  display: PDisplay, deviceid: cint, num_props_return: ptr cint
+): PAtom
+
+proc XIChangeProperty*(
+  display: PDisplay,
+  deviceid: cint,
+  property: Atom,
+  `type`: Atom,
+  format: cint,
+  mode: cint,
+  data: ptr cuchar,
+  num_items: cint,
+)
+
+proc XIDeleteProperty*(display: PDisplay, deviceid: cint, property: Atom)
+proc XIGetProperty*(
+  display: PDisplay,
+  deviceid: cint,
+  property: Atom,
+  offset: clong,
+  length: clong,
+  delete_property: XBool,
+  `type`: Atom,
+  type_return: PAtom,
+  format_return: ptr cint,
+  num_items_return: ptr culong,
+  bytes_after_return: ptr culong,
+  data: ptr ptr cuchar,
+): Status
+
+proc XIBarrierReleasePointers*(
+  display: PDisplay, barriers: PXIBarrierReleasePointerInfo, num_barriers: cint
+)
+
+proc XIBarrierReleasePointer*(
+  display: PDisplay, deviceid: cint, barrier: PointerBarrier, eventid: BarrierEventID
+)
+
 proc XIFreeDeviceInfo*(info: PXIDeviceInfo)
 
-{.pop.}
\ No newline at end of file
+{.pop.}
--- a/semicongine/thirdparty/x11/xkb.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xkb.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -68,8 +68,7 @@
 #        2004/09/15 - 16      - Convertion from the c header of XKB.h.
 #
 
-import
-  x, xlib
+import x, xlib
 
 include "x11pragma.nim"
 
@@ -79,11 +78,12 @@
   #
   #          Common data structures and access macros
   #
+
 type
-  PWord* = ptr array[0..64_000, int16]
+  PWord* = ptr array[0 .. 64_000, int16]
   PByte* = ptr byte
   PXkbStatePtr* = ptr XkbStateRec
-  XkbStateRec*{.final.} = object
+  XkbStateRec* {.final.} = object
     group*: int8
     locked_group*: int8
     base_group*: int16
@@ -99,8 +99,6 @@
     compat_lookup_mods*: int8
     ptr_buttons*: int16
 
-
-
 proc XkbModLocks*(s: PXkbStatePtr): int8
 proc XkbStateMods*(s: PXkbStatePtr): int16
 proc XkbGroupLock*(s: PXkbStatePtr): int8
@@ -109,25 +107,21 @@
 proc XkbGrabStateFromRec*(s: PXkbStatePtr): int
 type
   PXkbModsPtr* = ptr XkbModsRec
-  XkbModsRec*{.final.} = object
+  XkbModsRec* {.final.} = object
     mask*: int8 # effective mods
     real_mods*: int8
     vmods*: int16
 
-
-
 type
   PXkbKTMapEntryPtr* = ptr XkbKTMapEntryRec
-  XkbKTMapEntryRec*{.final.} = object
+  XkbKTMapEntryRec* {.final.} = object
     active*: bool
     level*: int8
     mods*: XkbModsRec
 
-
-
 type
   PXkbKeyTypePtr* = ptr XkbKeyTypeRec
-  XkbKeyTypeRec*{.final.} = object
+  XkbKeyTypeRec* {.final.} = object
     mods*: XkbModsRec
     num_levels*: int8
     map_count*: int8
@@ -136,8 +130,6 @@
     name*: Atom
     level_names*: Atom
 
-
-
 proc XkbNumGroups*(g: int16): int16
 proc XkbOutOfRangeGroupInfo*(g: int16): int16
 proc XkbOutOfRangeGroupAction*(g: int16): int16
@@ -147,17 +139,16 @@
   #
   #          Structures and access macros used primarily by the server
   #
+
 type
   PXkbBehavior* = ptr XkbBehavior
-  XkbBehavior*{.final.} = object
+  XkbBehavior* {.final.} = object
     theType*: int8
     data*: int8
 
-
-
 type
   PXkbModAction* = ptr XkbModAction
-  XkbModAction*{.final.} = object
+  XkbModAction* {.final.} = object
     theType*: int8
     flags*: int8
     mask*: int8
@@ -165,24 +156,20 @@
     vmods1*: int8
     vmods2*: int8
 
-
-
 proc XkbModActionVMods*(a: PXkbModAction): int16
 proc XkbSetModActionVMods*(a: PXkbModAction, v: int8)
 type
   PXkbGroupAction* = ptr XkbGroupAction
-  XkbGroupAction*{.final.} = object
+  XkbGroupAction* {.final.} = object
     theType*: int8
     flags*: int8
     group_XXX*: int8
 
-
-
 proc XkbSAGroup*(a: PXkbGroupAction): int8
 proc XkbSASetGroupProc*(a: PXkbGroupAction, g: int8)
 type
   PXkbISOAction* = ptr XkbISOAction
-  XkbISOAction*{.final.} = object
+  XkbISOAction* {.final.} = object
     theType*: int8
     flags*: int8
     mask*: int8
@@ -192,11 +179,9 @@
     vmods1*: int8
     vmods2*: int8
 
-
-
 type
   PXkbPtrAction* = ptr XkbPtrAction
-  XkbPtrAction*{.final.} = object
+  XkbPtrAction* {.final.} = object
     theType*: int8
     flags*: int8
     high_XXX*: int8
@@ -204,48 +189,40 @@
     high_YYY*: int8
     low_YYY*: int8
 
-
-
 proc XkbPtrActionX*(a: PXkbPtrAction): int16
 proc XkbPtrActionY*(a: PXkbPtrAction): int16
 proc XkbSetPtrActionX*(a: PXkbPtrAction, x: int8)
 proc XkbSetPtrActionY*(a: PXkbPtrAction, y: int8)
 type
   PXkbPtrBtnAction* = ptr XkbPtrBtnAction
-  XkbPtrBtnAction*{.final.} = object
+  XkbPtrBtnAction* {.final.} = object
     theType*: int8
     flags*: int8
     count*: int8
     button*: int8
 
-
-
 type
   PXkbPtrDfltAction* = ptr XkbPtrDfltAction
-  XkbPtrDfltAction*{.final.} = object
+  XkbPtrDfltAction* {.final.} = object
     theType*: int8
     flags*: int8
     affect*: int8
     valueXXX*: int8
 
-
-
 proc XkbSAPtrDfltValue*(a: PXkbPtrDfltAction): int8
 proc XkbSASetPtrDfltValue*(a: PXkbPtrDfltAction, c: pointer)
 type
   PXkbSwitchScreenAction* = ptr XkbSwitchScreenAction
-  XkbSwitchScreenAction*{.final.} = object
+  XkbSwitchScreenAction* {.final.} = object
     theType*: int8
     flags*: int8
     screenXXX*: int8
 
-
-
 proc XkbSAScreen*(a: PXkbSwitchScreenAction): int8
 proc XkbSASetScreen*(a: PXkbSwitchScreenAction, s: pointer)
 type
   PXkbCtrlsAction* = ptr XkbCtrlsAction
-  XkbCtrlsAction*{.final.} = object
+  XkbCtrlsAction* {.final.} = object
     theType*: int8
     flags*: int8
     ctrls3*: int8
@@ -253,22 +230,18 @@
     ctrls1*: int8
     ctrls0*: int8
 
-
-
 proc XkbActionSetCtrls*(a: PXkbCtrlsAction, c: int8)
 proc XkbActionCtrls*(a: PXkbCtrlsAction): int16
 type
   PXkbMessageAction* = ptr XkbMessageAction
-  XkbMessageAction*{.final.} = object
+  XkbMessageAction* {.final.} = object
     theType*: int8
     flags*: int8
-    message*: array[0..5, char]
-
-
+    message*: array[0 .. 5, char]
 
 type
   PXkbRedirectKeyAction* = ptr XkbRedirectKeyAction
-  XkbRedirectKeyAction*{.final.} = object
+  XkbRedirectKeyAction* {.final.} = object
     theType*: int8
     new_key*: int8
     mods_mask*: int8
@@ -278,28 +251,25 @@
     vmods0*: int8
     vmods1*: int8
 
-
-
 proc XkbSARedirectVMods*(a: PXkbRedirectKeyAction): int16
 proc XkbSARedirectSetVMods*(a: PXkbRedirectKeyAction, m: int8)
 proc XkbSARedirectVModsMask*(a: PXkbRedirectKeyAction): int16
 proc XkbSARedirectSetVModsMask*(a: PXkbRedirectKeyAction, m: int8)
 type
   PXkbDeviceBtnAction* = ptr XkbDeviceBtnAction
-  XkbDeviceBtnAction*{.final.} = object
+  XkbDeviceBtnAction* {.final.} = object
     theType*: int8
     flags*: int8
     count*: int8
     button*: int8
     device*: int8
 
-
-
 type
   PXkbDeviceValuatorAction* = ptr XkbDeviceValuatorAction
-  XkbDeviceValuatorAction*{.final.} = object #
-                                             #      Macros to classify key actions
-                                             #
+  XkbDeviceValuatorAction* {.final.} = object
+    #
+    #      Macros to classify key actions
+    #
     theType*: int8
     device*: int8
     v1_what*: int8
@@ -309,29 +279,25 @@
     v2_ndx*: int8
     v2_value*: int8
 
-
-
-const
-  XkbAnyActionDataSize* = 7
+const XkbAnyActionDataSize* = 7
 
 type
   PXkbAnyAction* = ptr XkbAnyAction
-  XkbAnyAction*{.final.} = object
+  XkbAnyAction* {.final.} = object
     theType*: int8
-    data*: array[0..XkbAnyActionDataSize - 1, int8]
-
-
+    data*: array[0 .. XkbAnyActionDataSize - 1, int8]
 
 proc XkbIsModAction*(a: PXkbAnyAction): bool
 proc XkbIsGroupAction*(a: PXkbAnyAction): bool
 proc XkbIsPtrAction*(a: PXkbAnyAction): bool
 type
   PXkbAction* = ptr XkbAction
-  XkbAction*{.final.} = object #
-                               #      XKB request codes, used in:
-                               #      -  xkbReqType field of all requests
-                               #      -  requestMinor field of some events
-                               #
+  XkbAction* {.final.} = object
+    #
+    #      XKB request codes, used in:
+    #      -  xkbReqType field of all requests
+    #      -  requestMinor field of some events
+    #
     any*: XkbAnyAction
     mods*: XkbModAction
     group*: XkbGroupAction
@@ -347,8 +313,6 @@
     devval*: XkbDeviceValuatorAction
     theType*: int8
 
-
-
 const
   X_kbUseExtension* = 0
   X_kbSelectEvents* = 1
@@ -375,20 +339,22 @@
   X_kbGetKbdByName* = 23
   X_kbGetDeviceInfo* = 24
   X_kbSetDeviceInfo* = 25
-  X_kbSetDebuggingFlags* = 101 #
-                               #      In the X sense, XKB reports only one event.
-                               #      The type field of all XKB events is XkbEventCode
-                               #
+  X_kbSetDebuggingFlags* = 101
+    #
+    #      In the X sense, XKB reports only one event.
+    #      The type field of all XKB events is XkbEventCode
+    #
 
 const
   XkbEventCode* = 0
-  XkbNumberEvents* = XkbEventCode + 1 #
-                                      #      XKB has a minor event code so it can use one X event code for
-                                      #      multiple purposes.
-                                      #       - reported in the xkbType field of all XKB events.
-                                      #       - XkbSelectEventDetails: Indicates the event for which event details
-                                      #         are being changed
-                                      #
+  XkbNumberEvents* = XkbEventCode + 1
+    #
+    #      XKB has a minor event code so it can use one X event code for
+    #      multiple purposes.
+    #       - reported in the xkbType field of all XKB events.
+    #       - XkbSelectEventDetails: Indicates the event for which event details
+    #         are being changed
+    #
 
 const
   XkbNewKeyboardNotify* = 0
@@ -402,10 +368,11 @@
   XkbBellNotify* = 8
   XkbActionMessage* = 9
   XkbAccessXNotify* = 10
-  XkbExtensionDeviceNotify* = 11 #
-                                 #      Event Mask:
-                                 #       - XkbSelectEvents:  Specifies event interest.
-                                 #
+  XkbExtensionDeviceNotify* = 11
+    #
+    #      Event Mask:
+    #       - XkbSelectEvents:  Specifies event interest.
+    #
 
 const
   XkbNewKeyboardNotifyMask* = int(1) shl 0
@@ -420,19 +387,21 @@
   XkbActionMessageMask* = int(1) shl 9
   XkbAccessXNotifyMask* = int(1) shl 10
   XkbExtensionDeviceNotifyMask* = int(1) shl 11
-  XkbAllEventsMask* = 0x00000FFF #
-                                 #      NewKeyboardNotify event details:
-                                 #
+  XkbAllEventsMask* = 0x00000FFF
+    #
+    #      NewKeyboardNotify event details:
+    #
 
 const
   XkbNKN_KeycodesMask* = int(1) shl 0
   XkbNKN_GeometryMask* = int(1) shl 1
   XkbNKN_DeviceIDMask* = int(1) shl 2
-  XkbAllNewKeyboardEventsMask* = 0x00000007 #
-                                            #      AccessXNotify event types:
-                                            #       - The 'what' field of AccessXNotify events reports the
-                                            #         reason that the event was generated.
-                                            #
+  XkbAllNewKeyboardEventsMask* = 0x00000007
+    #
+    #      AccessXNotify event types:
+    #       - The 'what' field of AccessXNotify events reports the
+    #         reason that the event was generated.
+    #
 
 const
   XkbAXN_SKPress* = 0
@@ -441,11 +410,12 @@
   XkbAXN_SKRelease* = 3
   XkbAXN_BKAccept* = 4
   XkbAXN_BKReject* = 5
-  XkbAXN_AXKWarning* = 6 #
-                         #      AccessXNotify details:
-                         #      - Used as an event detail mask to limit the conditions under which
-                         #        AccessXNotify events are reported
-                         #
+  XkbAXN_AXKWarning* = 6
+    #
+    #      AccessXNotify details:
+    #      - Used as an event detail mask to limit the conditions under which
+    #        AccessXNotify events are reported
+    #
 
 const
   XkbAXN_SKPressMask* = int(1) shl 0
@@ -455,13 +425,14 @@
   XkbAXN_BKAcceptMask* = int(1) shl 4
   XkbAXN_BKRejectMask* = int(1) shl 5
   XkbAXN_AXKWarningMask* = int(1) shl 6
-  XkbAllAccessXEventsMask* = 0x0000000F #
-                                        #      State detail mask:
-                                        #       - The 'changed' field of StateNotify events reports which of
-                                        #         the keyboard state components have changed.
-                                        #       - Used as an event detail mask to limit the conditions under
-                                        #         which StateNotify events are reported.
-                                        #
+  XkbAllAccessXEventsMask* = 0x0000000F
+    #
+    #      State detail mask:
+    #       - The 'changed' field of StateNotify events reports which of
+    #         the keyboard state components have changed.
+    #       - Used as an event detail mask to limit the conditions under
+    #         which StateNotify events are reported.
+    #
 
 const
   XkbModifierStateMask* = int(1) shl 0
@@ -478,34 +449,35 @@
   XkbLookupModsMask* = int(1) shl 11
   XkbCompatLookupModsMask* = int(1) shl 12
   XkbPointerButtonMask* = int(1) shl 13
-  XkbAllStateComponentsMask* = 0x00003FFF #
-                                          #      Controls detail masks:
-                                          #       The controls specified in XkbAllControlsMask:
-                                          #       - The 'changed' field of ControlsNotify events reports which of
-                                          #         the keyboard controls have changed.
-                                          #       - The 'changeControls' field of the SetControls request specifies
-                                          #         the controls for which values are to be changed.
-                                          #       - Used as an event detail mask to limit the conditions under
-                                          #         which ControlsNotify events are reported.
-                                          #
-                                          #       The controls specified in the XkbAllBooleanCtrlsMask:
-                                          #       - The 'enabledControls' field of ControlsNotify events reports the
-                                          #         current status of the boolean controls.
-                                          #       - The 'enabledControlsChanges' field of ControlsNotify events reports
-                                          #         any boolean controls that have been turned on or off.
-                                          #       - The 'affectEnabledControls' and 'enabledControls' fields of the
-                                          #         kbSetControls request change the set of enabled controls.
-                                          #       - The 'accessXTimeoutMask' and 'accessXTimeoutValues' fields of
-                                          #         an XkbControlsRec specify the controls to be changed if the keyboard
-                                          #         times out and the values to which they should be changed.
-                                          #       - The 'autoCtrls' and 'autoCtrlsValues' fields of the PerClientFlags
-                                          #         request specifies the specify the controls to be reset when the
-                                          #         client exits and the values to which they should be reset.
-                                          #       - The 'ctrls' field of an indicator map specifies the controls
-                                          #         that drive the indicator.
-                                          #       - Specifies the boolean controls affected by the SetControls and
-                                          #         LockControls key actions.
-                                          #
+  XkbAllStateComponentsMask* = 0x00003FFF
+    #
+    #      Controls detail masks:
+    #       The controls specified in XkbAllControlsMask:
+    #       - The 'changed' field of ControlsNotify events reports which of
+    #         the keyboard controls have changed.
+    #       - The 'changeControls' field of the SetControls request specifies
+    #         the controls for which values are to be changed.
+    #       - Used as an event detail mask to limit the conditions under
+    #         which ControlsNotify events are reported.
+    #
+    #       The controls specified in the XkbAllBooleanCtrlsMask:
+    #       - The 'enabledControls' field of ControlsNotify events reports the
+    #         current status of the boolean controls.
+    #       - The 'enabledControlsChanges' field of ControlsNotify events reports
+    #         any boolean controls that have been turned on or off.
+    #       - The 'affectEnabledControls' and 'enabledControls' fields of the
+    #         kbSetControls request change the set of enabled controls.
+    #       - The 'accessXTimeoutMask' and 'accessXTimeoutValues' fields of
+    #         an XkbControlsRec specify the controls to be changed if the keyboard
+    #         times out and the values to which they should be changed.
+    #       - The 'autoCtrls' and 'autoCtrlsValues' fields of the PerClientFlags
+    #         request specifies the specify the controls to be reset when the
+    #         client exits and the values to which they should be reset.
+    #       - The 'ctrls' field of an indicator map specifies the controls
+    #         that drive the indicator.
+    #       - Specifies the boolean controls affected by the SetControls and
+    #         LockControls key actions.
+    #
 
 const
   XkbRepeatKeysMask* = int(1) shl 0
@@ -528,29 +500,31 @@
   XkbControlsEnabledMask* = int(1) shl 31
   XkbAccessXOptionsMask* = XkbStickyKeysMask or XkbAccessXFeedbackMask
   XkbAllBooleanCtrlsMask* = 0x00001FFF
-  XkbAllControlsMask* = 0xF8001FFF #
-                                   #      Compatibility Map Compontents:
-                                   #       - Specifies the components to be allocated in XkbAllocCompatMap.
-                                   #
+  XkbAllControlsMask* = 0xF8001FFF
+    #
+    #      Compatibility Map Compontents:
+    #       - Specifies the components to be allocated in XkbAllocCompatMap.
+    #
 
 const
   XkbSymInterpMask* = 1 shl 0
   XkbGroupCompatMask* = 1 shl 1
-  XkbAllCompatMask* = 0x00000003 #
-                                 #      Assorted constants and limits.
-                                 #
+  XkbAllCompatMask* = 0x00000003
+    #
+    #      Assorted constants and limits.
+    #
 
-const
-  XkbAllIndicatorsMask* = 0xFFFFFFFF #
-                                     #      Map components masks:
-                                     #      Those in AllMapComponentsMask:
-                                     #       - Specifies the individual fields to be loaded or changed for the
-                                     #         GetMap and SetMap requests.
-                                     #      Those in ClientInfoMask:
-                                     #       - Specifies the components to be allocated by XkbAllocClientMap.
-                                     #      Those in ServerInfoMask:
-                                     #       - Specifies the components to be allocated by XkbAllocServerMap.
-                                     #
+const XkbAllIndicatorsMask* = 0xFFFFFFFF
+  #
+  #      Map components masks:
+  #      Those in AllMapComponentsMask:
+  #       - Specifies the individual fields to be loaded or changed for the
+  #         GetMap and SetMap requests.
+  #      Those in ClientInfoMask:
+  #       - Specifies the components to be allocated by XkbAllocClientMap.
+  #      Those in ServerInfoMask:
+  #       - Specifies the components to be allocated by XkbAllocServerMap.
+  #
 
 const
   XkbKeyTypesMask* = 1 shl 0
@@ -561,17 +535,18 @@
   XkbKeyBehaviorsMask* = 1 shl 5
   XkbVirtualModsMask* = 1 shl 6
   XkbVirtualModMapMask* = 1 shl 7
-  XkbAllClientInfoMask* = XkbKeyTypesMask or XkbKeySymsMask or
-      XkbModifierMapMask
-  XkbAllServerInfoMask* = XkbExplicitComponentsMask or XkbKeyActionsMask or
-      XkbKeyBehaviorsMask or XkbVirtualModsMask or XkbVirtualModMapMask
-  XkbAllMapComponentsMask* = XkbAllClientInfoMask or XkbAllServerInfoMask #
-                                                                          #      Names component mask:
-                                                                          #       - Specifies the names to be loaded or changed for the GetNames and
-                                                                          #         SetNames requests.
-                                                                          #       - Specifies the names that have changed in a NamesNotify event.
-                                                                          #       - Specifies the names components to be allocated by XkbAllocNames.
-                                                                          #
+  XkbAllClientInfoMask* = XkbKeyTypesMask or XkbKeySymsMask or XkbModifierMapMask
+  XkbAllServerInfoMask* =
+    XkbExplicitComponentsMask or XkbKeyActionsMask or XkbKeyBehaviorsMask or
+    XkbVirtualModsMask or XkbVirtualModMapMask
+  XkbAllMapComponentsMask* = XkbAllClientInfoMask or XkbAllServerInfoMask
+    #
+    #      Names component mask:
+    #       - Specifies the names to be loaded or changed for the GetNames and
+    #         SetNames requests.
+    #       - Specifies the names that have changed in a NamesNotify event.
+    #       - Specifies the names components to be allocated by XkbAllocNames.
+    #
 
 const
   XkbKeycodesNameMask* = 1 shl 0
@@ -589,11 +564,12 @@
   XkbGroupNamesMask* = 1 shl 12
   XkbRGNamesMask* = 1 shl 13
   XkbComponentNamesMask* = 0x0000003F
-  XkbAllNamesMask* = 0x00003FFF #
-                                #      Miscellaneous event details:
-                                #      - event detail masks for assorted events that don't reall
-                                #        have any details.
-                                #
+  XkbAllNamesMask* = 0x00003FFF
+    #
+    #      Miscellaneous event details:
+    #      - event detail masks for assorted events that don't reall
+    #        have any details.
+    #
 
 const
   XkbAllStateEventsMask* = XkbAllStateComponentsMask
@@ -603,29 +579,31 @@
   XkbAllNameEventsMask* = XkbAllNamesMask
   XkbAllCompatMapEventsMask* = XkbAllCompatMask
   XkbAllBellEventsMask* = int(1) shl 0
-  XkbAllActionMessagesMask* = int(1) shl 0 #
-                                           #      XKB reports one error:  BadKeyboard
-                                           #      A further reason for the error is encoded into to most significant
-                                           #      byte of the resourceID for the error:
-                                           #         XkbErr_BadDevice - the device in question was not found
-                                           #         XkbErr_BadClass  - the device was found but it doesn't belong to
-                                           #                            the appropriate class.
-                                           #         XkbErr_BadId     - the device was found and belongs to the right
-                                           #                            class, but not feedback with a matching id was
-                                           #                            found.
-                                           #      The low byte of the resourceID for this error contains the device
-                                           #      id, class specifier or feedback id that failed.
-                                           #
+  XkbAllActionMessagesMask* = int(1) shl 0
+    #
+    #      XKB reports one error:  BadKeyboard
+    #      A further reason for the error is encoded into to most significant
+    #      byte of the resourceID for the error:
+    #         XkbErr_BadDevice - the device in question was not found
+    #         XkbErr_BadClass  - the device was found but it doesn't belong to
+    #                            the appropriate class.
+    #         XkbErr_BadId     - the device was found and belongs to the right
+    #                            class, but not feedback with a matching id was
+    #                            found.
+    #      The low byte of the resourceID for this error contains the device
+    #      id, class specifier or feedback id that failed.
+    #
 
 const
   XkbKeyboard* = 0
   XkbNumberErrors* = 1
   XkbErr_BadDevice* = 0x000000FF
   XkbErr_BadClass* = 0x000000FE
-  XkbErr_BadId* = 0x000000FD #
-                             #      Keyboard Components Mask:
-                             #      - Specifies the components that follow a GetKeyboardByNameReply
-                             #
+  XkbErr_BadId* = 0x000000FD
+    #
+    #      Keyboard Components Mask:
+    #      - Specifies the components that follow a GetKeyboardByNameReply
+    #
 
 const
   XkbClientMapMask* = int(1) shl 0
@@ -635,15 +613,16 @@
   XkbNamesMask* = int(1) shl 4
   XkbGeometryMask* = int(1) shl 5
   XkbControlsMask* = int(1) shl 6
-  XkbAllComponentsMask* = 0x0000007F #
-                                     #      AccessX Options Mask
-                                     #       - The 'accessXOptions' field of an XkbControlsRec specifies the
-                                     #         AccessX options that are currently in effect.
-                                     #       - The 'accessXTimeoutOptionsMask' and 'accessXTimeoutOptionsValues'
-                                     #         fields of an XkbControlsRec specify the Access X options to be
-                                     #         changed if the keyboard times out and the values to which they
-                                     #         should be changed.
-                                     #
+  XkbAllComponentsMask* = 0x0000007F
+    #
+    #      AccessX Options Mask
+    #       - The 'accessXOptions' field of an XkbControlsRec specifies the
+    #         AccessX options that are currently in effect.
+    #       - The 'accessXTimeoutOptionsMask' and 'accessXTimeoutOptionsValues'
+    #         fields of an XkbControlsRec specify the Access X options to be
+    #         changed if the keyboard times out and the values to which they
+    #         should be changed.
+    #
 
 const
   XkbAX_SKPressFBMask* = int(1) shl 0
@@ -660,33 +639,34 @@
   XkbAX_DumbBellFBMask* = int(1) shl 11
   XkbAX_FBOptionsMask* = 0x00000F3F
   XkbAX_SKOptionsMask* = 0x000000C0
-  XkbAX_AllOptionsMask* = 0x00000FFF #
-                                     #      XkbUseCoreKbd is used to specify the core keyboard without having
-                                     #                        to look up its X input extension identifier.
-                                     #      XkbUseCorePtr is used to specify the core pointer without having
-                                     #                        to look up its X input extension identifier.
-                                     #      XkbDfltXIClass is used to specify "don't care" any place that the
-                                     #                        XKB protocol is looking for an X Input Extension
-                                     #                        device class.
-                                     #      XkbDfltXIId is used to specify "don't care" any place that the
-                                     #                        XKB protocol is looking for an X Input Extension
-                                     #                        feedback identifier.
-                                     #      XkbAllXIClasses is used to get information about all device indicators,
-                                     #                        whether they're part of the indicator feedback class
-                                     #                        or the keyboard feedback class.
-                                     #      XkbAllXIIds is used to get information about all device indicator
-                                     #                        feedbacks without having to list them.
-                                     #      XkbXINone is used to indicate that no class or id has been specified.
-                                     #      XkbLegalXILedClass(c)  True if 'c' specifies a legal class with LEDs
-                                     #      XkbLegalXIBellClass(c) True if 'c' specifies a legal class with bells
-                                     #      XkbExplicitXIDevice(d) True if 'd' explicitly specifies a device
-                                     #      XkbExplicitXIClass(c)  True if 'c' explicitly specifies a device class
-                                     #      XkbExplicitXIId(c)     True if 'i' explicitly specifies a device id
-                                     #      XkbSingleXIClass(c)    True if 'c' specifies exactly one device class,
-                                     #                             including the default.
-                                     #      XkbSingleXIId(i)       True if 'i' specifies exactly one device
-                                     #                              identifier, including the default.
-                                     #
+  XkbAX_AllOptionsMask* = 0x00000FFF
+    #
+    #      XkbUseCoreKbd is used to specify the core keyboard without having
+    #                        to look up its X input extension identifier.
+    #      XkbUseCorePtr is used to specify the core pointer without having
+    #                        to look up its X input extension identifier.
+    #      XkbDfltXIClass is used to specify "don't care" any place that the
+    #                        XKB protocol is looking for an X Input Extension
+    #                        device class.
+    #      XkbDfltXIId is used to specify "don't care" any place that the
+    #                        XKB protocol is looking for an X Input Extension
+    #                        feedback identifier.
+    #      XkbAllXIClasses is used to get information about all device indicators,
+    #                        whether they're part of the indicator feedback class
+    #                        or the keyboard feedback class.
+    #      XkbAllXIIds is used to get information about all device indicator
+    #                        feedbacks without having to list them.
+    #      XkbXINone is used to indicate that no class or id has been specified.
+    #      XkbLegalXILedClass(c)  True if 'c' specifies a legal class with LEDs
+    #      XkbLegalXIBellClass(c) True if 'c' specifies a legal class with bells
+    #      XkbExplicitXIDevice(d) True if 'd' explicitly specifies a device
+    #      XkbExplicitXIClass(c)  True if 'c' explicitly specifies a device class
+    #      XkbExplicitXIId(c)     True if 'i' explicitly specifies a device id
+    #      XkbSingleXIClass(c)    True if 'c' specifies exactly one device class,
+    #                             including the default.
+    #      XkbSingleXIId(i)       True if 'i' specifies exactly one device
+    #                              identifier, including the default.
+    #
 
 const
   XkbUseCoreKbd* = 0x00000100
@@ -714,11 +694,12 @@
   XkbAllVirtualModsMask* = 0x0000FFFF
   XkbNumKbdGroups* = 4
   XkbMaxKbdGroup* = XkbNumKbdGroups - 1
-  XkbMaxMouseKeysBtn* = 4 #
-                          #      Group Index and Mask:
-                          #       - Indices into the kt_index array of a key type.
-                          #       - Mask specifies types to be changed for XkbChangeTypesOfKey
-                          #
+  XkbMaxMouseKeysBtn* = 4
+    #
+    #      Group Index and Mask:
+    #       - Indices into the kt_index array of a key type.
+    #       - Mask specifies types to be changed for XkbChangeTypesOfKey
+    #
 
 const
   XkbGroup1Index* = 0
@@ -732,13 +713,14 @@
   XkbGroup3Mask* = 1 shl 2
   XkbGroup4Mask* = 1 shl 3
   XkbAnyGroupMask* = 1 shl 7
-  XkbAllGroupsMask* = 0x0000000F #
-                                 #      BuildCoreState: Given a keyboard group and a modifier state,
-                                 #                      construct the value to be reported an event.
-                                 #      GroupForCoreState:  Given the state reported in an event,
-                                 #                      determine the keyboard group.
-                                 #      IsLegalGroup:   Returns TRUE if 'g' is a valid group index.
-                                 #
+  XkbAllGroupsMask* = 0x0000000F
+    #
+    #      BuildCoreState: Given a keyboard group and a modifier state,
+    #                      construct the value to be reported an event.
+    #      GroupForCoreState:  Given the state reported in an event,
+    #                      determine the keyboard group.
+    #      IsLegalGroup:   Returns TRUE if 'g' is a valid group index.
+    #
 
 proc XkbBuildCoreState*(m, g: int): int
 proc XkbGroupForCoreState*(s: int): int
@@ -751,39 +733,41 @@
   #         specify the interpretation of out of range groups for the
   #         corresponding key.
   #
+
 const
   XkbWrapIntoRange* = 0x00000000
   XkbClampIntoRange* = 0x00000040
-  XkbRedirectIntoRange* = 0x00000080 #
-                                     #      Action flags:  Reported in the 'flags' field of most key actions.
-                                     #      Interpretation depends on the type of the action; not all actions
-                                     #      accept all flags.
-                                     #
-                                     #      Option                    Used for Actions
-                                     #      ------                    ----------------
-                                     #      ClearLocks                SetMods, LatchMods, SetGroup, LatchGroup
-                                     #      LatchToLock               SetMods, LatchMods, SetGroup, LatchGroup
-                                     #      LockNoLock                LockMods, ISOLock, LockPtrBtn, LockDeviceBtn
-                                     #      LockNoUnlock              LockMods, ISOLock, LockPtrBtn, LockDeviceBtn
-                                     #      UseModMapMods             SetMods, LatchMods, LockMods, ISOLock
-                                     #      GroupAbsolute             SetGroup, LatchGroup, LockGroup, ISOLock
-                                     #      UseDfltButton             PtrBtn, LockPtrBtn
-                                     #      NoAcceleration            MovePtr
-                                     #      MoveAbsoluteX             MovePtr
-                                     #      MoveAbsoluteY             MovePtr
-                                     #      ISODfltIsGroup            ISOLock
-                                     #      ISONoAffectMods           ISOLock
-                                     #      ISONoAffectGroup          ISOLock
-                                     #      ISONoAffectPtr            ISOLock
-                                     #      ISONoAffectCtrls          ISOLock
-                                     #      MessageOnPress            ActionMessage
-                                     #      MessageOnRelease          ActionMessage
-                                     #      MessageGenKeyEvent        ActionMessage
-                                     #      AffectDfltBtn             SetPtrDflt
-                                     #      DfltBtnAbsolute           SetPtrDflt
-                                     #      SwitchApplication SwitchScreen
-                                     #      SwitchAbsolute            SwitchScreen
-                                     #
+  XkbRedirectIntoRange* = 0x00000080
+    #
+    #      Action flags:  Reported in the 'flags' field of most key actions.
+    #      Interpretation depends on the type of the action; not all actions
+    #      accept all flags.
+    #
+    #      Option                    Used for Actions
+    #      ------                    ----------------
+    #      ClearLocks                SetMods, LatchMods, SetGroup, LatchGroup
+    #      LatchToLock               SetMods, LatchMods, SetGroup, LatchGroup
+    #      LockNoLock                LockMods, ISOLock, LockPtrBtn, LockDeviceBtn
+    #      LockNoUnlock              LockMods, ISOLock, LockPtrBtn, LockDeviceBtn
+    #      UseModMapMods             SetMods, LatchMods, LockMods, ISOLock
+    #      GroupAbsolute             SetGroup, LatchGroup, LockGroup, ISOLock
+    #      UseDfltButton             PtrBtn, LockPtrBtn
+    #      NoAcceleration            MovePtr
+    #      MoveAbsoluteX             MovePtr
+    #      MoveAbsoluteY             MovePtr
+    #      ISODfltIsGroup            ISOLock
+    #      ISONoAffectMods           ISOLock
+    #      ISONoAffectGroup          ISOLock
+    #      ISONoAffectPtr            ISOLock
+    #      ISONoAffectCtrls          ISOLock
+    #      MessageOnPress            ActionMessage
+    #      MessageOnRelease          ActionMessage
+    #      MessageGenKeyEvent        ActionMessage
+    #      AffectDfltBtn             SetPtrDflt
+    #      DfltBtnAbsolute           SetPtrDflt
+    #      SwitchApplication SwitchScreen
+    #      SwitchAbsolute            SwitchScreen
+    #
 
 const
   XkbSA_ClearLocks* = int(1) shl 0
@@ -808,12 +792,13 @@
   XkbSA_AffectDfltBtn* = 1
   XkbSA_DfltBtnAbsolute* = int(1) shl 2
   XkbSA_SwitchApplication* = int(1) shl 0
-  XkbSA_SwitchAbsolute* = int(1) shl 2 #
-                                       #      The following values apply to the SA_DeviceValuator
-                                       #      action only.  Valuator operations specify the action
-                                       #      to be taken.   Values specified in the action are
-                                       #      multiplied by 2^scale before they are applied.
-                                       #
+  XkbSA_SwitchAbsolute* = int(1) shl 2
+    #
+    #      The following values apply to the SA_DeviceValuator
+    #      action only.  Valuator operations specify the action
+    #      to be taken.   Values specified in the action are
+    #      multiplied by 2^scale before they are applied.
+    #
 
 const
   XkbSA_IgnoreVal* = 0x00000000
@@ -831,6 +816,7 @@
   #      Action types: specifies the type of a key action.  Reported in the
   #      type field of all key actions.
   #
+
 const
   XkbSA_NoAction* = 0x00000000
   XkbSA_SetMods* = 0x00000001
@@ -856,30 +842,31 @@
   XkbSA_LastAction* = XkbSA_DeviceValuator
   XkbSA_NumActions* = XkbSA_LastAction + 1
 
-const
-  XkbSA_XFree86Private* = 0x00000086
- #
- #      Specifies the key actions that clear latched groups or modifiers.
- #
+const XkbSA_XFree86Private* = 0x00000086
+  #
+  #      Specifies the key actions that clear latched groups or modifiers.
+  #
 
-const                                                        ##define        XkbSA_BreakLatch \
+const ##define        XkbSA_BreakLatch \
   #        ((1<<XkbSA_NoAction)|(1<<XkbSA_PtrBtn)|(1<<XkbSA_LockPtrBtn)|\
-       #        (1<<XkbSA_Terminate)|(1<<XkbSA_SwitchScreen)|(1<<XkbSA_SetControls)|\
-       #        (1<<XkbSA_LockControls)|(1<<XkbSA_ActionMessage)|\
-       #        (1<<XkbSA_RedirectKey)|(1<<XkbSA_DeviceBtn)|(1<<XkbSA_LockDeviceBtn))
-       #
-  XkbSA_BreakLatch* = (1 shl XkbSA_PtrBtn) or (1 shl XkbSA_LockPtrBtn) or
-      (1 shl XkbSA_Terminate) or (1 shl XkbSA_SwitchScreen) or
-      (1 shl XkbSA_SetControls) or (1 shl XkbSA_LockControls) or
-      (1 shl XkbSA_ActionMessage) or (1 shl XkbSA_RedirectKey) or
-      (1 shl XkbSA_DeviceBtn) or (1 shl XkbSA_LockDeviceBtn) #
-                                                             #      Key Behavior Qualifier:
-                                                             #         KB_Permanent indicates that the behavior describes an unalterable
-                                                             #         characteristic of the keyboard, not an XKB software-simulation of
-                                                             #         the listed behavior.
-                                                             #      Key Behavior Types:
-                                                             #         Specifies the behavior of the underlying key.
-                                                             #
+  #        (1<<XkbSA_Terminate)|(1<<XkbSA_SwitchScreen)|(1<<XkbSA_SetControls)|\
+  #        (1<<XkbSA_LockControls)|(1<<XkbSA_ActionMessage)|\
+  #        (1<<XkbSA_RedirectKey)|(1<<XkbSA_DeviceBtn)|(1<<XkbSA_LockDeviceBtn))
+  #
+  XkbSA_BreakLatch* =
+    (1 shl XkbSA_PtrBtn) or (1 shl XkbSA_LockPtrBtn) or (1 shl XkbSA_Terminate) or
+    (1 shl XkbSA_SwitchScreen) or (1 shl XkbSA_SetControls) or (
+      1 shl XkbSA_LockControls
+    ) or (1 shl XkbSA_ActionMessage) or (1 shl XkbSA_RedirectKey) or
+    (1 shl XkbSA_DeviceBtn) or (1 shl XkbSA_LockDeviceBtn)
+    #
+    #      Key Behavior Qualifier:
+    #         KB_Permanent indicates that the behavior describes an unalterable
+    #         characteristic of the keyboard, not an XKB software-simulation of
+    #         the listed behavior.
+    #      Key Behavior Types:
+    #         Specifies the behavior of the underlying key.
+    #
 
 const
   XkbKB_Permanent* = 0x00000080
@@ -889,9 +876,10 @@
   XkbKB_RadioGroup* = 0x00000002
   XkbKB_Overlay1* = 0x00000003
   XkbKB_Overlay2* = 0x00000004
-  XkbKB_RGAllowNone* = 0x00000080 #
-                                  #      Various macros which describe the range of legal keycodes.
-                                  #
+  XkbKB_RGAllowNone* = 0x00000080
+    #
+    #      Various macros which describe the range of legal keycodes.
+    #
 
 const
   XkbMinLegalKeyCode* = 8
@@ -902,7 +890,7 @@
 proc XkbIsLegalKeycode*(k: int): bool
 type
   PXkbControlsPtr* = ptr XkbControlsRec
-  XkbControlsRec*{.final.} = object
+  XkbControlsRec* {.final.} = object
     mk_dflt_btn*: int8
     num_groups*: int8
     groups_wrap*: int8
@@ -924,9 +912,7 @@
     axt_opts_values*: int16
     axt_ctrls_mask*: int16
     axt_ctrls_values*: int16
-    per_key_repeat*: array[0..XkbPerKeyBitArraySize - 1, int8]
-
-
+    per_key_repeat*: array[0 .. XkbPerKeyBitArraySize - 1, int8]
 
 proc XkbAX_AnyFeedback*(c: PXkbControlsPtr): int16
 proc XkbAX_NeedOption*(c: PXkbControlsPtr, w: int16): int16
@@ -934,6 +920,7 @@
   #
   #      Assorted constants and limits.
   #
+
 const
   XkbNumModifiers* = 8
   XkbNumVirtualMods* = 16
@@ -953,46 +940,41 @@
 
 type
   PXkbServerMapPtr* = ptr XkbServerMapRec
-  XkbServerMapRec*{.final.} = object
+  XkbServerMapRec* {.final.} = object
     num_acts*: int16
     size_acts*: int16
-    acts*: ptr array[0..0xfff, XkbAction]
+    acts*: ptr array[0 .. 0xfff, XkbAction]
     behaviors*: PXkbBehavior
     key_acts*: PWord
     explicit*: PByte
-    vmods*: array[0..XkbNumVirtualMods - 1, int8]
+    vmods*: array[0 .. XkbNumVirtualMods - 1, int8]
     vmodmap*: PWord
 
-
-
 proc XkbSMKeyActionsPtr*(m: PXkbServerMapPtr, k: int16): PXkbAction
   #
   #          Structures and access macros used primarily by clients
   #
+
 type
   PXkbSymMapPtr* = ptr XkbSymMapRec
-  XkbSymMapRec*{.final.} = object
-    kt_index*: array[0..XkbNumKbdGroups - 1, int8]
+  XkbSymMapRec* {.final.} = object
+    kt_index*: array[0 .. XkbNumKbdGroups - 1, int8]
     group_info*: int8
     width*: int8
     offset*: int8
 
-
-
 type
   PXkbClientMapPtr* = ptr XkbClientMapRec
-  XkbClientMapRec*{.final.} = object
+  XkbClientMapRec* {.final.} = object
     size_types*: int8
     num_types*: int8
-    types*: ptr array[0..0xffff, XkbKeyTypeRec]
+    types*: ptr array[0 .. 0xffff, XkbKeyTypeRec]
     size_syms*: int16
     num_syms*: int16
-    syms*: ptr array[0..0xffff, KeySym]
-    key_sym_map*: ptr array[0..0xffff, XkbSymMapRec]
+    syms*: ptr array[0 .. 0xffff, KeySym]
+    key_sym_map*: ptr array[0 .. 0xffff, XkbSymMapRec]
     modmap*: PByte
 
-
-
 proc XkbCMKeyGroupInfo*(m: PXkbClientMapPtr, k: int16): int8
 proc XkbCMKeyNumGroups*(m: PXkbClientMapPtr, k: int16): int8
 proc XkbCMKeyGroupWidth*(m: PXkbClientMapPtr, k: int16, g: int8): int8
@@ -1004,9 +986,10 @@
   #
   #          Compatibility structures and access macros
   #
+
 type
   PXkbSymInterpretPtr* = ptr XkbSymInterpretRec
-  XkbSymInterpretRec*{.final.} = object
+  XkbSymInterpretRec* {.final.} = object
     sym*: KeySym
     flags*: int8
     match*: int8
@@ -1014,21 +997,17 @@
     virtual_mod*: int8
     act*: XkbAnyAction
 
-
-
 type
   PXkbCompatMapPtr* = ptr XkbCompatMapRec
-  XkbCompatMapRec*{.final.} = object
+  XkbCompatMapRec* {.final.} = object
     sym_interpret*: PXkbSymInterpretPtr
-    groups*: array[0..XkbNumKbdGroups - 1, XkbModsRec]
+    groups*: array[0 .. XkbNumKbdGroups - 1, XkbModsRec]
     num_si*: int16
     size_si*: int16
 
-
-
 type
   PXkbIndicatorMapPtr* = ptr XkbIndicatorMapRec
-  XkbIndicatorMapRec*{.final.} = object
+  XkbIndicatorMapRec* {.final.} = object
     flags*: int8
     which_groups*: int8
     groups*: int8
@@ -1036,48 +1015,42 @@
     mods*: XkbModsRec
     ctrls*: int16
 
-
-
 proc XkbIM_IsAuto*(i: PXkbIndicatorMapPtr): bool
 proc XkbIM_InUse*(i: PXkbIndicatorMapPtr): bool
 type
   PXkbIndicatorPtr* = ptr XkbIndicatorRec
-  XkbIndicatorRec*{.final.} = object
+  XkbIndicatorRec* {.final.} = object
     phys_indicators*: int32
-    maps*: array[0..XkbNumIndicators - 1, XkbIndicatorMapRec]
-
-
+    maps*: array[0 .. XkbNumIndicators - 1, XkbIndicatorMapRec]
 
 type
   PXkbKeyNamePtr* = ptr XkbKeyNameRec
-  XkbKeyNameRec*{.final.} = object
-    name*: array[0..XkbKeyNameLength - 1, char]
-
-
+  XkbKeyNameRec* {.final.} = object
+    name*: array[0 .. XkbKeyNameLength - 1, char]
 
 type
   PXkbKeyAliasPtr* = ptr XkbKeyAliasRec
-  XkbKeyAliasRec*{.final.} = object #
-                                    #          Names for everything
-                                    #
-    float*: array[0..XkbKeyNameLength - 1, char]
-    alias*: array[0..XkbKeyNameLength - 1, char]
-
-
+  XkbKeyAliasRec* {.final.} = object
+    #
+    #          Names for everything
+    #
+    float*: array[0 .. XkbKeyNameLength - 1, char]
+    alias*: array[0 .. XkbKeyNameLength - 1, char]
 
 type
   PXkbNamesPtr* = ptr XkbNamesRec
-  XkbNamesRec*{.final.} = object #
-                                 #      Key Type index and mask for the four standard key types.
-                                 #
+  XkbNamesRec* {.final.} = object
+    #
+    #      Key Type index and mask for the four standard key types.
+    #
     keycodes*: Atom
     geometry*: Atom
     symbols*: Atom
     types*: Atom
     compat*: Atom
-    vmods*: array[0..XkbNumVirtualMods - 1, Atom]
-    indicators*: array[0..XkbNumIndicators - 1, Atom]
-    groups*: array[0..XkbNumKbdGroups - 1, Atom]
+    vmods*: array[0 .. XkbNumVirtualMods - 1, Atom]
+    indicators*: array[0 .. XkbNumIndicators - 1, Atom]
+    groups*: array[0 .. XkbNumKbdGroups - 1, Atom]
     keys*: PXkbKeyNamePtr
     key_aliases*: PXkbKeyAliasPtr
     radio_groups*: PAtom
@@ -1086,8 +1059,6 @@
     num_key_aliases*: int8
     num_rg*: int16
 
-
-
 const
   XkbOneLevelIndex* = 0
   XkbTwoLevelIndex* = 1
@@ -1107,15 +1078,17 @@
   #
   #      Extension name and version information
   #
+
 const
   XkbName* = "XKEYBOARD"
   XkbMajorVersion* = 1
-  XkbMinorVersion* = 0 #
-                       #      Explicit map components:
-                       #       - Used in the 'explicit' field of an XkbServerMap.  Specifies
-                       #         the keyboard components that should _not_ be updated automatically
-                       #         in response to core protocol keyboard mapping requests.
-                       #
+  XkbMinorVersion* = 0
+    #
+    #      Explicit map components:
+    #       - Used in the 'explicit' field of an XkbServerMap.  Specifies
+    #         the keyboard components that should _not_ be updated automatically
+    #         in response to core protocol keyboard mapping requests.
+    #
 
 const
   XkbExplicitKeyTypesMask* = 0x0000000F
@@ -1127,18 +1100,20 @@
   XkbExplicitAutoRepeatMask* = 1 shl 5
   XkbExplicitBehaviorMask* = 1 shl 6
   XkbExplicitVModMapMask* = 1 shl 7
-  XkbAllExplicitMask* = 0x000000FF #
-                                   #      Symbol interpretations flags:
-                                   #       - Used in the flags field of a symbol interpretation
-                                   #
+  XkbAllExplicitMask* = 0x000000FF
+    #
+    #      Symbol interpretations flags:
+    #       - Used in the flags field of a symbol interpretation
+    #
 
 const
   XkbSI_AutoRepeat* = 1 shl 0
-  XkbSI_LockingKey* = 1 shl 1 #
-                              #      Symbol interpretations match specification:
-                              #       - Used in the match field of a symbol interpretation to specify
-                              #         the conditions under which an interpretation is used.
-                              #
+  XkbSI_LockingKey* = 1 shl 1
+    #
+    #      Symbol interpretations match specification:
+    #       - Used in the match field of a symbol interpretation to specify
+    #         the conditions under which an interpretation is used.
+    #
 
 const
   XkbSI_LevelOneOnly* = 0x00000080
@@ -1147,22 +1122,24 @@
   XkbSI_AnyOfOrNone* = 1
   XkbSI_AnyOf* = 2
   XkbSI_AllOf* = 3
-  XkbSI_Exactly* = 4 #
-                     #      Indicator map flags:
-                     #       - Used in the flags field of an indicator map to indicate the
-                     #         conditions under which and indicator can be changed and the
-                     #         effects of changing the indicator.
-                     #
+  XkbSI_Exactly* = 4
+    #
+    #      Indicator map flags:
+    #       - Used in the flags field of an indicator map to indicate the
+    #         conditions under which and indicator can be changed and the
+    #         effects of changing the indicator.
+    #
 
 const
   XkbIM_NoExplicit* = int(1) shl 7
   XkbIM_NoAutomatic* = int(1) shl 6
-  XkbIM_LEDDrivesKB* = int(1) shl 5 #
-                                    #      Indicator map component specifications:
-                                    #       - Used by the 'which_groups' and 'which_mods' fields of an indicator
-                                    #         map to specify which keyboard components should be used to drive
-                                    #         the indicator.
-                                    #
+  XkbIM_LEDDrivesKB* = int(1) shl 5
+    #
+    #      Indicator map component specifications:
+    #       - Used by the 'which_groups' and 'which_mods' fields of an indicator
+    #         map to specify which keyboard components should be used to drive
+    #         the indicator.
+    #
 
 const
   XkbIM_UseBase* = int(1) shl 0
@@ -1171,13 +1148,14 @@
   XkbIM_UseEffective* = int(1) shl 3
   XkbIM_UseCompat* = int(1) shl 4
   XkbIM_UseNone* = 0
-  XkbIM_UseAnyGroup* = XkbIM_UseBase or XkbIM_UseLatched or XkbIM_UseLocked or
-      XkbIM_UseEffective
-  XkbIM_UseAnyMods* = XkbIM_UseAnyGroup or XkbIM_UseCompat #
-                                                           #      GetByName components:
-                                                           #       - Specifies desired or necessary components to GetKbdByName request.
-                                                           #       - Reports the components that were found in a GetKbdByNameReply
-                                                           #
+  XkbIM_UseAnyGroup* =
+    XkbIM_UseBase or XkbIM_UseLatched or XkbIM_UseLocked or XkbIM_UseEffective
+  XkbIM_UseAnyMods* = XkbIM_UseAnyGroup or XkbIM_UseCompat
+    #
+    #      GetByName components:
+    #       - Specifies desired or necessary components to GetKbdByName request.
+    #       - Reports the components that were found in a GetKbdByNameReply
+    #
 
 const
   XkbGBN_TypesMask* = int(1) shl 0
@@ -1189,9 +1167,10 @@
   XkbGBN_KeyNamesMask* = int(1) shl 5
   XkbGBN_GeometryMask* = int(1) shl 6
   XkbGBN_OtherNamesMask* = int(1) shl 7
-  XkbGBN_AllComponentsMask* = 0x000000FF #
-                                         #       ListComponents flags
-                                         #
+  XkbGBN_AllComponentsMask* = 0x000000FF
+    #
+    #       ListComponents flags
+    #
 
 const
   XkbLC_Hidden* = int(1) shl 0
@@ -1201,17 +1180,18 @@
   XkbLC_ModifierKeys* = int(1) shl 9
   XkbLC_KeypadKeys* = int(1) shl 10
   XkbLC_FunctionKeys* = int(1) shl 11
-  XkbLC_AlternateGroup* = int(1) shl 12 #
-                                        #      X Input Extension Interactions
-                                        #      - Specifies the possible interactions between XKB and the X input
-                                        #        extension
-                                        #      - Used to request (XkbGetDeviceInfo) or change (XKbSetDeviceInfo)
-                                        #        XKB information about an extension device.
-                                        #      - Reports the list of supported optional features in the reply to
-                                        #        XkbGetDeviceInfo or in an XkbExtensionDeviceNotify event.
-                                        #      XkbXI_UnsupportedFeature is reported in XkbExtensionDeviceNotify
-                                        #      events to indicate an attempt to use an unsupported feature.
-                                        #
+  XkbLC_AlternateGroup* = int(1) shl 12
+    #
+    #      X Input Extension Interactions
+    #      - Specifies the possible interactions between XKB and the X input
+    #        extension
+    #      - Used to request (XkbGetDeviceInfo) or change (XKbSetDeviceInfo)
+    #        XKB information about an extension device.
+    #      - Reports the list of supported optional features in the reply to
+    #        XkbGetDeviceInfo or in an XkbExtensionDeviceNotify event.
+    #      XkbXI_UnsupportedFeature is reported in XkbExtensionDeviceNotify
+    #      events to indicate an attempt to use an unsupported feature.
+    #
 
 const
   XkbXI_KeyboardsMask* = int(1) shl 0
@@ -1223,10 +1203,11 @@
   XkbXI_AllFeaturesMask* = 0x0000001F
   XkbXI_AllDeviceFeaturesMask* = 0x0000001E
   XkbXI_IndicatorsMask* = 0x0000001C
-  XkbAllExtensionDeviceEventsMask* = 0x0000801F #
-                                                #      Per-Client Flags:
-                                                #       - Specifies flags to be changed by the PerClientFlags request.
-                                                #
+  XkbAllExtensionDeviceEventsMask* = 0x0000801F
+    #
+    #      Per-Client Flags:
+    #       - Specifies flags to be changed by the PerClientFlags request.
+    #
 
 const
   XkbPCF_DetectableAutoRepeatMask* = int(1) shl 0
@@ -1234,76 +1215,64 @@
   XkbPCF_AutoResetControlsMask* = int(1) shl 2
   XkbPCF_LookupStateWhenGrabbed* = int(1) shl 3
   XkbPCF_SendEventUsesXKBState* = int(1) shl 4
-  XkbPCF_AllFlagsMask* = 0x0000001F #
-                                    #      Debugging flags and controls
-                                    #
+  XkbPCF_AllFlagsMask* = 0x0000001F
+    #
+    #      Debugging flags and controls
+    #
 
-const
-  XkbDF_DisableLocks* = 1 shl 0
+const XkbDF_DisableLocks* = 1 shl 0
 
 type
   PXkbPropertyPtr* = ptr XkbPropertyRec
-  XkbPropertyRec*{.final.} = object
+  XkbPropertyRec* {.final.} = object
     name*: cstring
     value*: cstring
 
-
-
 type
   PXkbColorPtr* = ptr XkbColorRec
-  XkbColorRec*{.final.} = object
+  XkbColorRec* {.final.} = object
     pixel*: int16
     spec*: cstring
 
-
-
 type
   PXkbPointPtr* = ptr XkbPointRec
-  XkbPointRec*{.final.} = object
+  XkbPointRec* {.final.} = object
     x*: int16
     y*: int16
 
-
-
 type
   PXkbBoundsPtr* = ptr XkbBoundsRec
-  XkbBoundsRec*{.final.} = object
+  XkbBoundsRec* {.final.} = object
     x1*: int16
     y1*: int16
     x2*: int16
     y2*: int16
 
-
-
 proc XkbBoundsWidth*(b: PXkbBoundsPtr): int16
 proc XkbBoundsHeight*(b: PXkbBoundsPtr): int16
 type
   PXkbOutlinePtr* = ptr XkbOutlineRec
-  XkbOutlineRec*{.final.} = object
+  XkbOutlineRec* {.final.} = object
     num_points*: int16
     sz_points*: int16
     corner_radius*: int16
     points*: PXkbPointPtr
 
-
-
 type
   PXkbShapePtr* = ptr XkbShapeRec
-  XkbShapeRec*{.final.} = object
+  XkbShapeRec* {.final.} = object
     name*: Atom
     num_outlines*: int16
     sz_outlines*: int16
-    outlines*: ptr array[0..0xffff, XkbOutlineRec]
-    approx*: ptr array[0..0xffff, XkbOutlineRec]
-    primary*: ptr array[0..0xffff, XkbOutlineRec]
+    outlines*: ptr array[0 .. 0xffff, XkbOutlineRec]
+    approx*: ptr array[0 .. 0xffff, XkbOutlineRec]
+    primary*: ptr array[0 .. 0xffff, XkbOutlineRec]
     bounds*: XkbBoundsRec
 
-
-
 proc XkbOutlineIndex*(s: PXkbShapePtr, o: PXkbOutlinePtr): int32
 type
   PXkbShapeDoodadPtr* = ptr XkbShapeDoodadRec
-  XkbShapeDoodadRec*{.final.} = object
+  XkbShapeDoodadRec* {.final.} = object
     name*: Atom
     theType*: int8
     priority*: int8
@@ -1313,11 +1282,9 @@
     color_ndx*: int16
     shape_ndx*: int16
 
-
-
 type
   PXkbTextDoodadPtr* = ptr XkbTextDoodadRec
-  XkbTextDoodadRec*{.final.} = object
+  XkbTextDoodadRec* {.final.} = object
     name*: Atom
     theType*: int8
     priority*: int8
@@ -1330,11 +1297,9 @@
     text*: cstring
     font*: cstring
 
-
-
 type
   PXkbIndicatorDoodadPtr* = ptr XkbIndicatorDoodadRec
-  XkbIndicatorDoodadRec*{.final.} = object
+  XkbIndicatorDoodadRec* {.final.} = object
     name*: Atom
     theType*: int8
     priority*: int8
@@ -1345,11 +1310,9 @@
     on_color_ndx*: int16
     off_color_ndx*: int16
 
-
-
 type
   PXkbLogoDoodadPtr* = ptr XkbLogoDoodadRec
-  XkbLogoDoodadRec*{.final.} = object
+  XkbLogoDoodadRec* {.final.} = object
     name*: Atom
     theType*: int8
     priority*: int8
@@ -1360,11 +1323,9 @@
     shape_ndx*: int16
     logo_name*: cstring
 
-
-
 type
   PXkbAnyDoodadPtr* = ptr XkbAnyDoodadRec
-  XkbAnyDoodadRec*{.final.} = object
+  XkbAnyDoodadRec* {.final.} = object
     name*: Atom
     theType*: int8
     priority*: int8
@@ -1372,19 +1333,15 @@
     left*: int16
     angle*: int16
 
-
-
 type
   PXkbDoodadPtr* = ptr XkbDoodadRec
-  XkbDoodadRec*{.final.} = object
+  XkbDoodadRec* {.final.} = object
     any*: XkbAnyDoodadRec
     shape*: XkbShapeDoodadRec
     text*: XkbTextDoodadRec
     indicator*: XkbIndicatorDoodadRec
     logo*: XkbLogoDoodadRec
 
-
-
 const
   XkbUnknownDoodad* = 0
   XkbOutlineDoodad* = 1
@@ -1395,17 +1352,15 @@
 
 type
   PXkbKeyPtr* = ptr XkbKeyRec
-  XkbKeyRec*{.final.} = object
+  XkbKeyRec* {.final.} = object
     name*: XkbKeyNameRec
     gap*: int16
     shape_ndx*: int8
     color_ndx*: int8
 
-
-
 type
   PXkbRowPtr* = ptr XkbRowRec
-  XkbRowRec*{.final.} = object
+  XkbRowRec* {.final.} = object
     top*: int16
     left*: int16
     num_keys*: int16
@@ -1414,13 +1369,12 @@
     Keys*: PXkbKeyPtr
     bounds*: XkbBoundsRec
 
-
-
 type
-  PXkbOverlayPtr* = ptr XkbOverlayRec #forward for XkbSectionRec use.
-                                       #Do not add more "type"
+  PXkbOverlayPtr* = ptr XkbOverlayRec
+    #forward for XkbSectionRec use.
+    #Do not add more "type"
   PXkbSectionPtr* = ptr XkbSectionRec
-  XkbSectionRec*{.final.} = object #Do not add more "type"
+  XkbSectionRec* {.final.} = object #Do not add more "type"
     name*: Atom
     priority*: int8
     top*: int16
@@ -1437,18 +1391,18 @@
     overlays*: PXkbOverlayPtr
 
   PXkbOverlayKeyPtr* = ptr XkbOverlayKeyRec
-  XkbOverlayKeyRec*{.final.} = object #Do not add more "type"
+  XkbOverlayKeyRec* {.final.} = object #Do not add more "type"
     over*: XkbKeyNameRec
     under*: XkbKeyNameRec
 
   PXkbOverlayRowPtr* = ptr XkbOverlayRowRec
-  XkbOverlayRowRec*{.final.} = object #Do not add more "type"
+  XkbOverlayRowRec* {.final.} = object #Do not add more "type"
     row_under*: int16
     num_keys*: int16
     sz_keys*: int16
     keys*: PXkbOverlayKeyPtr
 
-  XkbOverlayRec*{.final.} = object
+  XkbOverlayRec* {.final.} = object
     name*: Atom
     section_under*: PXkbSectionPtr
     num_rows*: int16
@@ -1456,11 +1410,10 @@
     rows*: PXkbOverlayRowPtr
     bounds*: PXkbBoundsPtr
 
-
 type
   PXkbGeometryRec* = ptr XkbGeometryRec
   PXkbGeometryPtr* = PXkbGeometryRec
-  XkbGeometryRec*{.final.} = object
+  XkbGeometryRec* {.final.} = object
     name*: Atom
     width_mm*: int16
     height_mm*: int16
@@ -1479,13 +1432,11 @@
     num_sections*: int16
     num_doodads*: int16
     num_key_aliases*: int16
-    properties*: ptr array[0..0xffff, XkbPropertyRec]
-    colors*: ptr array[0..0xffff, XkbColorRec]
-    shapes*: ptr array[0..0xffff, XkbShapeRec]
-    sections*: ptr array[0..0xffff, XkbSectionRec]
-    key_aliases*: ptr array[0..0xffff, XkbKeyAliasRec]
-
-
+    properties*: ptr array[0 .. 0xffff, XkbPropertyRec]
+    colors*: ptr array[0 .. 0xffff, XkbColorRec]
+    shapes*: ptr array[0 .. 0xffff, XkbShapeRec]
+    sections*: ptr array[0 .. 0xffff, XkbSectionRec]
+    key_aliases*: ptr array[0 .. 0xffff, XkbKeyAliasRec]
 
 const
   XkbGeomPropertiesMask* = 1 shl 0
@@ -1498,9 +1449,10 @@
 
 type
   PXkbGeometrySizesPtr* = ptr XkbGeometrySizesRec
-  XkbGeometrySizesRec*{.final.} = object #
-                                         #          Tie it all together into one big keyboard description
-                                         #
+  XkbGeometrySizesRec* {.final.} = object
+    #
+    #          Tie it all together into one big keyboard description
+    #
     which*: int16
     num_properties*: int16
     num_colors*: int16
@@ -1509,11 +1461,9 @@
     num_doodads*: int16
     num_key_aliases*: int16
 
-
-
 type
   PXkbDescPtr* = ptr XkbDescRec
-  XkbDescRec*{.final.} = object
+  XkbDescRec* {.final.} = object
     dpy*: PDisplay
     flags*: int16
     device_spec*: int16
@@ -1527,8 +1477,6 @@
     compat*: PXkbCompatMapPtr
     geom*: PXkbGeometryPtr
 
-
-
 proc XkbKeyKeyTypeIndex*(d: PXkbDescPtr, k: int16, g: int8): int8
 proc XkbKeyKeyType*(d: PXkbDescPtr, k: int16, g: int8): PXkbKeyTypePtr
 proc XkbKeyGroupWidth*(d: PXkbDescPtr, k: int16, g: int8): int8
@@ -1549,9 +1497,10 @@
   #          The following structures can be used to track changes
   #          to a keyboard device
   #
+
 type
   PXkbMapChangesPtr* = ptr XkbMapChangesRec
-  XkbMapChangesRec*{.final.} = object
+  XkbMapChangesRec* {.final.} = object
     changed*: int16
     min_key_code*: KeyCode
     max_key_code*: KeyCode
@@ -1572,28 +1521,22 @@
     pad*: int8
     vmods*: int16
 
-
-
 type
   PXkbControlsChangesPtr* = ptr XkbControlsChangesRec
-  XkbControlsChangesRec*{.final.} = object
+  XkbControlsChangesRec* {.final.} = object
     changed_ctrls*: int16
     enabled_ctrls_changes*: int16
     num_groups_changed*: bool
 
-
-
 type
   PXkbIndicatorChangesPtr* = ptr XkbIndicatorChangesRec
-  XkbIndicatorChangesRec*{.final.} = object
+  XkbIndicatorChangesRec* {.final.} = object
     state_changes*: int16
     map_changes*: int16
 
-
-
 type
   PXkbNameChangesPtr* = ptr XkbNameChangesRec
-  XkbNameChangesRec*{.final.} = object
+  XkbNameChangesRec* {.final.} = object
     changed*: int16
     first_type*: int8
     num_types*: int8
@@ -1607,24 +1550,21 @@
     changed_indicators*: int32
     changed_groups*: int8
 
-
-
 type
   PXkbCompatChangesPtr* = ptr XkbCompatChangesRec
-  XkbCompatChangesRec*{.final.} = object
+  XkbCompatChangesRec* {.final.} = object
     changed_groups*: int8
     first_si*: int16
     num_si*: int16
 
-
-
 type
   PXkbChangesPtr* = ptr XkbChangesRec
-  XkbChangesRec*{.final.} = object #
-                                   #          These data structures are used to construct a keymap from
-                                   #          a set of components or to list components in the server
-                                   #          database.
-                                   #
+  XkbChangesRec* {.final.} = object
+    #
+    #          These data structures are used to construct a keymap from
+    #          a set of components or to list components in the server
+    #          database.
+    #
     device_spec*: int16
     state_changes*: int16
     map*: XkbMapChangesRec
@@ -1633,11 +1573,9 @@
     names*: XkbNameChangesRec
     compat*: XkbCompatChangesRec
 
-
-
 type
   PXkbComponentNamesPtr* = ptr XkbComponentNamesRec
-  XkbComponentNamesRec*{.final.} = object
+  XkbComponentNamesRec* {.final.} = object
     keymap*: ptr int16
     keycodes*: ptr int16
     types*: ptr int16
@@ -1645,22 +1583,19 @@
     symbols*: ptr int16
     geometry*: ptr int16
 
-
-
 type
   PXkbComponentNamePtr* = ptr XkbComponentNameRec
-  XkbComponentNameRec*{.final.} = object
+  XkbComponentNameRec* {.final.} = object
     flags*: int16
     name*: cstring
 
-
-
 type
   PXkbComponentListPtr* = ptr XkbComponentListRec
-  XkbComponentListRec*{.final.} = object #
-                                         #          The following data structures describe and track changes to a
-                                         #          non-keyboard extension device
-                                         #
+  XkbComponentListRec* {.final.} = object
+    #
+    #          The following data structures describe and track changes to a
+    #          non-keyboard extension device
+    #
     num_keymaps*: int16
     num_keycodes*: int16
     num_types*: int16
@@ -1674,25 +1609,21 @@
     symbols*: PXkbComponentNamePtr
     geometry*: PXkbComponentNamePtr
 
-
-
 type
   PXkbDeviceLedInfoPtr* = ptr XkbDeviceLedInfoRec
-  XkbDeviceLedInfoRec*{.final.} = object
+  XkbDeviceLedInfoRec* {.final.} = object
     led_class*: int16
     led_id*: int16
     phys_indicators*: int16
     maps_present*: int16
     names_present*: int16
     state*: int16
-    names*: array[0..XkbNumIndicators - 1, Atom]
-    maps*: array[0..XkbNumIndicators - 1, XkbIndicatorMapRec]
-
-
+    names*: array[0 .. XkbNumIndicators - 1, Atom]
+    maps*: array[0 .. XkbNumIndicators - 1, XkbIndicatorMapRec]
 
 type
   PXkbDeviceInfoPtr* = ptr XkbDeviceInfoRec
-  XkbDeviceInfoRec*{.final.} = object
+  XkbDeviceInfoRec* {.final.} = object
     name*: cstring
     theType*: Atom
     device_spec*: int16
@@ -1707,254 +1638,433 @@
     dflt_led_fb*: int16
     leds*: PXkbDeviceLedInfoPtr
 
-
-
 proc XkbXI_DevHasBtnActs*(d: PXkbDeviceInfoPtr): bool
 proc XkbXI_LegalDevBtn*(d: PXkbDeviceInfoPtr, b: int16): bool
 proc XkbXI_DevHasLeds*(d: PXkbDeviceInfoPtr): bool
 type
   PXkbDeviceLedChangesPtr* = ptr XkbDeviceLedChangesRec
-  XkbDeviceLedChangesRec*{.final.} = object
+  XkbDeviceLedChangesRec* {.final.} = object
     led_class*: int16
     led_id*: int16
     defined*: int16 #names or maps changed
     next*: PXkbDeviceLedChangesPtr
 
-
 type
   PXkbDeviceChangesPtr* = ptr XkbDeviceChangesRec
-  XkbDeviceChangesRec*{.final.} = object
+  XkbDeviceChangesRec* {.final.} = object
     changed*: int16
     first_btn*: int16
     num_btns*: int16
     leds*: XkbDeviceLedChangesRec
 
-
-
 proc XkbShapeDoodadColor*(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr): PXkbColorPtr
 proc XkbShapeDoodadShape*(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr): PXkbShapePtr
-proc XkbSetShapeDoodadColor*(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr,
-                             c: PXkbColorPtr)
-proc XkbSetShapeDoodadShape*(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr,
-                             s: PXkbShapePtr)
+proc XkbSetShapeDoodadColor*(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr, c: PXkbColorPtr)
+proc XkbSetShapeDoodadShape*(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr, s: PXkbShapePtr)
 proc XkbTextDoodadColor*(g: PXkbGeometryPtr, d: PXkbTextDoodadPtr): PXkbColorPtr
-proc XkbSetTextDoodadColor*(g: PXkbGeometryPtr, d: PXkbTextDoodadPtr,
-                            c: PXkbColorPtr)
-proc XkbIndicatorDoodadShape*(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbShapeDoodadPtr
-proc XkbIndicatorDoodadOnColor*(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbColorPtr
-proc XkbIndicatorDoodadOffColor*(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbColorPtr
-proc XkbSetIndicatorDoodadOnColor*(g: PXkbGeometryPtr,
-                                   d: PXkbIndicatorDoodadPtr, c: PXkbColorPtr)
-proc XkbSetIndicatorDoodadOffColor*(g: PXkbGeometryPtr,
-                                    d: PXkbIndicatorDoodadPtr, c: PXkbColorPtr)
-proc XkbSetIndicatorDoodadShape*(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr,
-                                 s: PXkbShapeDoodadPtr)
+proc XkbSetTextDoodadColor*(g: PXkbGeometryPtr, d: PXkbTextDoodadPtr, c: PXkbColorPtr)
+proc XkbIndicatorDoodadShape*(
+  g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr
+): PXkbShapeDoodadPtr
+
+proc XkbIndicatorDoodadOnColor*(
+  g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr
+): PXkbColorPtr
+
+proc XkbIndicatorDoodadOffColor*(
+  g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr
+): PXkbColorPtr
+
+proc XkbSetIndicatorDoodadOnColor*(
+  g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr, c: PXkbColorPtr
+)
+
+proc XkbSetIndicatorDoodadOffColor*(
+  g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr, c: PXkbColorPtr
+)
+
+proc XkbSetIndicatorDoodadShape*(
+  g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr, s: PXkbShapeDoodadPtr
+)
+
 proc XkbLogoDoodadColor*(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr): PXkbColorPtr
 proc XkbLogoDoodadShape*(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr): PXkbShapeDoodadPtr
-proc XkbSetLogoDoodadColor*(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr,
-                            c: PXkbColorPtr)
-proc XkbSetLogoDoodadShape*(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr,
-                            s: PXkbShapeDoodadPtr)
+proc XkbSetLogoDoodadColor*(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr, c: PXkbColorPtr)
+proc XkbSetLogoDoodadShape*(
+  g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr, s: PXkbShapeDoodadPtr
+)
+
 proc XkbKeyShape*(g: PXkbGeometryPtr, k: PXkbKeyPtr): PXkbShapeDoodadPtr
 proc XkbKeyColor*(g: PXkbGeometryPtr, k: PXkbKeyPtr): PXkbColorPtr
 proc XkbSetKeyShape*(g: PXkbGeometryPtr, k: PXkbKeyPtr, s: PXkbShapeDoodadPtr)
 proc XkbSetKeyColor*(g: PXkbGeometryPtr, k: PXkbKeyPtr, c: PXkbColorPtr)
 proc XkbGeomColorIndex*(g: PXkbGeometryPtr, c: PXkbColorPtr): int32
-proc XkbAddGeomProperty*(geom: PXkbGeometryPtr, name: cstring, value: cstring): PXkbPropertyPtr{.
-    libx11c, importc: "XkbAddGeomProperty".}
-proc XkbAddGeomKeyAlias*(geom: PXkbGeometryPtr, alias: cstring, float: cstring): PXkbKeyAliasPtr{.
-    libx11c, importc: "XkbAddGeomKeyAlias".}
-proc XkbAddGeomColor*(geom: PXkbGeometryPtr, spec: cstring, pixel: int16): PXkbColorPtr{.
-    libx11c, importc: "XkbAddGeomColor".}
-proc XkbAddGeomOutline*(shape: PXkbShapePtr, sz_points: int16): PXkbOutlinePtr{.
-    libx11c, importc: "XkbAddGeomOutline".}
-proc XkbAddGeomShape*(geom: PXkbGeometryPtr, name: Atom, sz_outlines: int16): PXkbShapePtr{.
-    libx11c, importc: "XkbAddGeomShape".}
-proc XkbAddGeomKey*(row: PXkbRowPtr): PXkbKeyPtr{.libx11c,
-    importc: "XkbAddGeomKey".}
-proc XkbAddGeomRow*(section: PXkbSectionPtr, sz_keys: int16): PXkbRowPtr{.libx11c, importc: "XkbAddGeomRow".}
-proc XkbAddGeomSection*(geom: PXkbGeometryPtr, name: Atom, sz_rows: int16,
-                        sz_doodads: int16, sz_overlays: int16): PXkbSectionPtr{.
-    libx11c, importc: "XkbAddGeomSection".}
-proc XkbAddGeomOverlay*(section: PXkbSectionPtr, name: Atom, sz_rows: int16): PXkbOverlayPtr{.
-    libx11c, importc: "XkbAddGeomOverlay".}
-proc XkbAddGeomOverlayRow*(overlay: PXkbOverlayPtr, row_under: int16,
-                           sz_keys: int16): PXkbOverlayRowPtr{.libx11c, importc: "XkbAddGeomOverlayRow".}
-proc XkbAddGeomOverlayKey*(overlay: PXkbOverlayPtr, row: PXkbOverlayRowPtr,
-                           over: cstring, under: cstring): PXkbOverlayKeyPtr{.
-    libx11c, importc: "XkbAddGeomOverlayKey".}
-proc XkbAddGeomDoodad*(geom: PXkbGeometryPtr, section: PXkbSectionPtr,
-                       name: Atom): PXkbDoodadPtr{.libx11c,
-    importc: "XkbAddGeomDoodad".}
-proc XkbFreeGeomKeyAliases*(geom: PXkbGeometryPtr, first: int16, count: int16,
-                            freeAll: bool){.libx11c,
-    importc: "XkbFreeGeomKeyAliases".}
-proc XkbFreeGeomColors*(geom: PXkbGeometryPtr, first: int16, count: int16,
-                        freeAll: bool){.libx11c,
-                                        importc: "XkbFreeGeomColors".}
-proc XkbFreeGeomDoodads*(doodads: PXkbDoodadPtr, nDoodads: int16, freeAll: bool){.
-    libx11c, importc: "XkbFreeGeomDoodads".}
-proc XkbFreeGeomProperties*(geom: PXkbGeometryPtr, first: int16, count: int16,
-                            freeAll: bool){.libx11c,
-    importc: "XkbFreeGeomProperties".}
-proc XkbFreeGeomOverlayKeys*(row: PXkbOverlayRowPtr, first: int16, count: int16,
-                             freeAll: bool){.libx11c,
-    importc: "XkbFreeGeomOverlayKeys".}
-proc XkbFreeGeomOverlayRows*(overlay: PXkbOverlayPtr, first: int16,
-                             count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomOverlayRows".}
-proc XkbFreeGeomOverlays*(section: PXkbSectionPtr, first: int16, count: int16,
-                          freeAll: bool){.libx11c,
-    importc: "XkbFreeGeomOverlays".}
-proc XkbFreeGeomKeys*(row: PXkbRowPtr, first: int16, count: int16, freeAll: bool){.
-    libx11c, importc: "XkbFreeGeomKeys".}
-proc XkbFreeGeomRows*(section: PXkbSectionPtr, first: int16, count: int16,
-                      freeAll: bool){.libx11c,
-                                      importc: "XkbFreeGeomRows".}
-proc XkbFreeGeomSections*(geom: PXkbGeometryPtr, first: int16, count: int16,
-                          freeAll: bool){.libx11c,
-    importc: "XkbFreeGeomSections".}
-proc XkbFreeGeomPoints*(outline: PXkbOutlinePtr, first: int16, count: int16,
-                        freeAll: bool){.libx11c,
-                                        importc: "XkbFreeGeomPoints".}
-proc XkbFreeGeomOutlines*(shape: PXkbShapePtr, first: int16, count: int16,
-                          freeAll: bool){.libx11c,
-    importc: "XkbFreeGeomOutlines".}
-proc XkbFreeGeomShapes*(geom: PXkbGeometryPtr, first: int16, count: int16,
-                        freeAll: bool){.libx11c,
-                                        importc: "XkbFreeGeomShapes".}
-proc XkbFreeGeometry*(geom: PXkbGeometryPtr, which: int16, freeMap: bool){.
-    libx11c, importc: "XkbFreeGeometry".}
-proc XkbAllocGeomProps*(geom: PXkbGeometryPtr, nProps: int16): Status{.libx11c, importc: "XkbAllocGeomProps".}
-proc XkbAllocGeomKeyAliases*(geom: PXkbGeometryPtr, nAliases: int16): Status{.
-    libx11c, importc: "XkbAllocGeomKeyAliases".}
-proc XkbAllocGeomColors*(geom: PXkbGeometryPtr, nColors: int16): Status{.libx11c, importc: "XkbAllocGeomColors".}
-proc XkbAllocGeomShapes*(geom: PXkbGeometryPtr, nShapes: int16): Status{.libx11c, importc: "XkbAllocGeomShapes".}
-proc XkbAllocGeomSections*(geom: PXkbGeometryPtr, nSections: int16): Status{.
-    libx11c, importc: "XkbAllocGeomSections".}
-proc XkbAllocGeomOverlays*(section: PXkbSectionPtr, num_needed: int16): Status{.
-    libx11c, importc: "XkbAllocGeomOverlays".}
-proc XkbAllocGeomOverlayRows*(overlay: PXkbOverlayPtr, num_needed: int16): Status{.
-    libx11c, importc: "XkbAllocGeomOverlayRows".}
-proc XkbAllocGeomOverlayKeys*(row: PXkbOverlayRowPtr, num_needed: int16): Status{.
-    libx11c, importc: "XkbAllocGeomOverlayKeys".}
-proc XkbAllocGeomDoodads*(geom: PXkbGeometryPtr, nDoodads: int16): Status{.
-    libx11c, importc: "XkbAllocGeomDoodads".}
-proc XkbAllocGeomSectionDoodads*(section: PXkbSectionPtr, nDoodads: int16): Status{.
-    libx11c, importc: "XkbAllocGeomSectionDoodads".}
-proc XkbAllocGeomOutlines*(shape: PXkbShapePtr, nOL: int16): Status{.libx11c, importc: "XkbAllocGeomOutlines".}
-proc XkbAllocGeomRows*(section: PXkbSectionPtr, nRows: int16): Status{.libx11c, importc: "XkbAllocGeomRows".}
-proc XkbAllocGeomPoints*(ol: PXkbOutlinePtr, nPts: int16): Status{.libx11c, importc: "XkbAllocGeomPoints".}
-proc XkbAllocGeomKeys*(row: PXkbRowPtr, nKeys: int16): Status{.libx11c, importc: "XkbAllocGeomKeys".}
-proc XkbAllocGeometry*(xkb: PXkbDescPtr, sizes: PXkbGeometrySizesPtr): Status{.
-    libx11c, importc: "XkbAllocGeometry".}
-proc XkbSetGeometryProc*(dpy: PDisplay, deviceSpec: int16, geom: PXkbGeometryPtr): Status{.
-    libx11c, importc: "XkbSetGeometry".}
-proc XkbComputeShapeTop*(shape: PXkbShapePtr, bounds: PXkbBoundsPtr): bool{.
-    libx11c, importc: "XkbComputeShapeTop".}
-proc XkbComputeShapeBounds*(shape: PXkbShapePtr): bool{.libx11c,
-    importc: "XkbComputeShapeBounds".}
-proc XkbComputeRowBounds*(geom: PXkbGeometryPtr, section: PXkbSectionPtr,
-                          row: PXkbRowPtr): bool{.libx11c,
-    importc: "XkbComputeRowBounds".}
-proc XkbComputeSectionBounds*(geom: PXkbGeometryPtr, section: PXkbSectionPtr): bool{.
-    libx11c, importc: "XkbComputeSectionBounds".}
-proc XkbFindOverlayForKey*(geom: PXkbGeometryPtr, wanted: PXkbSectionPtr,
-                           under: cstring): cstring{.libx11c,
-    importc: "XkbFindOverlayForKey".}
-proc XkbGetGeometryProc*(dpy: PDisplay, xkb: PXkbDescPtr): Status{.libx11c, importc: "XkbGetGeometry".}
-proc XkbGetNamedGeometry*(dpy: PDisplay, xkb: PXkbDescPtr, name: Atom): Status{.
-    libx11c, importc: "XkbGetNamedGeometry".}
+proc XkbAddGeomProperty*(
+  geom: PXkbGeometryPtr, name: cstring, value: cstring
+): PXkbPropertyPtr {.libx11c, importc: "XkbAddGeomProperty".}
+
+proc XkbAddGeomKeyAlias*(
+  geom: PXkbGeometryPtr, alias: cstring, float: cstring
+): PXkbKeyAliasPtr {.libx11c, importc: "XkbAddGeomKeyAlias".}
+
+proc XkbAddGeomColor*(
+  geom: PXkbGeometryPtr, spec: cstring, pixel: int16
+): PXkbColorPtr {.libx11c, importc: "XkbAddGeomColor".}
+
+proc XkbAddGeomOutline*(
+  shape: PXkbShapePtr, sz_points: int16
+): PXkbOutlinePtr {.libx11c, importc: "XkbAddGeomOutline".}
+
+proc XkbAddGeomShape*(
+  geom: PXkbGeometryPtr, name: Atom, sz_outlines: int16
+): PXkbShapePtr {.libx11c, importc: "XkbAddGeomShape".}
+
+proc XkbAddGeomKey*(row: PXkbRowPtr): PXkbKeyPtr {.libx11c, importc: "XkbAddGeomKey".}
+proc XkbAddGeomRow*(
+  section: PXkbSectionPtr, sz_keys: int16
+): PXkbRowPtr {.libx11c, importc: "XkbAddGeomRow".}
+
+proc XkbAddGeomSection*(
+  geom: PXkbGeometryPtr,
+  name: Atom,
+  sz_rows: int16,
+  sz_doodads: int16,
+  sz_overlays: int16,
+): PXkbSectionPtr {.libx11c, importc: "XkbAddGeomSection".}
+
+proc XkbAddGeomOverlay*(
+  section: PXkbSectionPtr, name: Atom, sz_rows: int16
+): PXkbOverlayPtr {.libx11c, importc: "XkbAddGeomOverlay".}
+
+proc XkbAddGeomOverlayRow*(
+  overlay: PXkbOverlayPtr, row_under: int16, sz_keys: int16
+): PXkbOverlayRowPtr {.libx11c, importc: "XkbAddGeomOverlayRow".}
+
+proc XkbAddGeomOverlayKey*(
+  overlay: PXkbOverlayPtr, row: PXkbOverlayRowPtr, over: cstring, under: cstring
+): PXkbOverlayKeyPtr {.libx11c, importc: "XkbAddGeomOverlayKey".}
+
+proc XkbAddGeomDoodad*(
+  geom: PXkbGeometryPtr, section: PXkbSectionPtr, name: Atom
+): PXkbDoodadPtr {.libx11c, importc: "XkbAddGeomDoodad".}
+
+proc XkbFreeGeomKeyAliases*(
+  geom: PXkbGeometryPtr, first: int16, count: int16, freeAll: bool
+) {.libx11c, importc: "XkbFreeGeomKeyAliases".}
+
+proc XkbFreeGeomColors*(
+  geom: PXkbGeometryPtr, first: int16, count: int16, freeAll: bool
+) {.libx11c, importc: "XkbFreeGeomColors".}
+
+proc XkbFreeGeomDoodads*(
+  doodads: PXkbDoodadPtr, nDoodads: int16, freeAll: bool
+) {.libx11c, importc: "XkbFreeGeomDoodads".}
+
+proc XkbFreeGeomProperties*(
+  geom: PXkbGeometryPtr, first: int16, count: int16, freeAll: bool
+) {.libx11c, importc: "XkbFreeGeomProperties".}
+
+proc XkbFreeGeomOverlayKeys*(
+  row: PXkbOverlayRowPtr, first: int16, count: int16, freeAll: bool
+) {.libx11c, importc: "XkbFreeGeomOverlayKeys".}
+
+proc XkbFreeGeomOverlayRows*(
+  overlay: PXkbOverlayPtr, first: int16, count: int16, freeAll: bool
+) {.libx11c, importc: "XkbFreeGeomOverlayRows".}
+
+proc XkbFreeGeomOverlays*(
+  section: PXkbSectionPtr, first: int16, count: int16, freeAll: bool
+) {.libx11c, importc: "XkbFreeGeomOverlays".}
+
+proc XkbFreeGeomKeys*(
+  row: PXkbRowPtr, first: int16, count: int16, freeAll: bool
+) {.libx11c, importc: "XkbFreeGeomKeys".}
+
+proc XkbFreeGeomRows*(
+  section: PXkbSectionPtr, first: int16, count: int16, freeAll: bool
+) {.libx11c, importc: "XkbFreeGeomRows".}
+
+proc XkbFreeGeomSections*(
+  geom: PXkbGeometryPtr, first: int16, count: int16, freeAll: bool
+) {.libx11c, importc: "XkbFreeGeomSections".}
+
+proc XkbFreeGeomPoints*(
+  outline: PXkbOutlinePtr, first: int16, count: int16, freeAll: bool
+) {.libx11c, importc: "XkbFreeGeomPoints".}
+
+proc XkbFreeGeomOutlines*(
+  shape: PXkbShapePtr, first: int16, count: int16, freeAll: bool
+) {.libx11c, importc: "XkbFreeGeomOutlines".}
+
+proc XkbFreeGeomShapes*(
+  geom: PXkbGeometryPtr, first: int16, count: int16, freeAll: bool
+) {.libx11c, importc: "XkbFreeGeomShapes".}
+
+proc XkbFreeGeometry*(
+  geom: PXkbGeometryPtr, which: int16, freeMap: bool
+) {.libx11c, importc: "XkbFreeGeometry".}
+
+proc XkbAllocGeomProps*(
+  geom: PXkbGeometryPtr, nProps: int16
+): Status {.libx11c, importc: "XkbAllocGeomProps".}
+
+proc XkbAllocGeomKeyAliases*(
+  geom: PXkbGeometryPtr, nAliases: int16
+): Status {.libx11c, importc: "XkbAllocGeomKeyAliases".}
+
+proc XkbAllocGeomColors*(
+  geom: PXkbGeometryPtr, nColors: int16
+): Status {.libx11c, importc: "XkbAllocGeomColors".}
+
+proc XkbAllocGeomShapes*(
+  geom: PXkbGeometryPtr, nShapes: int16
+): Status {.libx11c, importc: "XkbAllocGeomShapes".}
+
+proc XkbAllocGeomSections*(
+  geom: PXkbGeometryPtr, nSections: int16
+): Status {.libx11c, importc: "XkbAllocGeomSections".}
+
+proc XkbAllocGeomOverlays*(
+  section: PXkbSectionPtr, num_needed: int16
+): Status {.libx11c, importc: "XkbAllocGeomOverlays".}
+
+proc XkbAllocGeomOverlayRows*(
+  overlay: PXkbOverlayPtr, num_needed: int16
+): Status {.libx11c, importc: "XkbAllocGeomOverlayRows".}
+
+proc XkbAllocGeomOverlayKeys*(
+  row: PXkbOverlayRowPtr, num_needed: int16
+): Status {.libx11c, importc: "XkbAllocGeomOverlayKeys".}
+
+proc XkbAllocGeomDoodads*(
+  geom: PXkbGeometryPtr, nDoodads: int16
+): Status {.libx11c, importc: "XkbAllocGeomDoodads".}
+
+proc XkbAllocGeomSectionDoodads*(
+  section: PXkbSectionPtr, nDoodads: int16
+): Status {.libx11c, importc: "XkbAllocGeomSectionDoodads".}
+
+proc XkbAllocGeomOutlines*(
+  shape: PXkbShapePtr, nOL: int16
+): Status {.libx11c, importc: "XkbAllocGeomOutlines".}
+
+proc XkbAllocGeomRows*(
+  section: PXkbSectionPtr, nRows: int16
+): Status {.libx11c, importc: "XkbAllocGeomRows".}
+
+proc XkbAllocGeomPoints*(
+  ol: PXkbOutlinePtr, nPts: int16
+): Status {.libx11c, importc: "XkbAllocGeomPoints".}
+
+proc XkbAllocGeomKeys*(
+  row: PXkbRowPtr, nKeys: int16
+): Status {.libx11c, importc: "XkbAllocGeomKeys".}
+
+proc XkbAllocGeometry*(
+  xkb: PXkbDescPtr, sizes: PXkbGeometrySizesPtr
+): Status {.libx11c, importc: "XkbAllocGeometry".}
+
+proc XkbSetGeometryProc*(
+  dpy: PDisplay, deviceSpec: int16, geom: PXkbGeometryPtr
+): Status {.libx11c, importc: "XkbSetGeometry".}
+
+proc XkbComputeShapeTop*(
+  shape: PXkbShapePtr, bounds: PXkbBoundsPtr
+): bool {.libx11c, importc: "XkbComputeShapeTop".}
+
+proc XkbComputeShapeBounds*(
+  shape: PXkbShapePtr
+): bool {.libx11c, importc: "XkbComputeShapeBounds".}
+
+proc XkbComputeRowBounds*(
+  geom: PXkbGeometryPtr, section: PXkbSectionPtr, row: PXkbRowPtr
+): bool {.libx11c, importc: "XkbComputeRowBounds".}
+
+proc XkbComputeSectionBounds*(
+  geom: PXkbGeometryPtr, section: PXkbSectionPtr
+): bool {.libx11c, importc: "XkbComputeSectionBounds".}
+
+proc XkbFindOverlayForKey*(
+  geom: PXkbGeometryPtr, wanted: PXkbSectionPtr, under: cstring
+): cstring {.libx11c, importc: "XkbFindOverlayForKey".}
+
+proc XkbGetGeometryProc*(
+  dpy: PDisplay, xkb: PXkbDescPtr
+): Status {.libx11c, importc: "XkbGetGeometry".}
+
+proc XkbGetNamedGeometry*(
+  dpy: PDisplay, xkb: PXkbDescPtr, name: Atom
+): Status {.libx11c, importc: "XkbGetNamedGeometry".}
+
 when defined(XKB_IN_SERVER):
-  proc SrvXkbAddGeomKeyAlias*(geom: PXkbGeometryPtr, alias: cstring,
-                              float: cstring): PXkbKeyAliasPtr{.libx11c, importc: "XkbAddGeomKeyAlias".}
-  proc SrvXkbAddGeomColor*(geom: PXkbGeometryPtr, spec: cstring, pixel: int16): PXkbColorPtr{.
-      libx11c, importc: "XkbAddGeomColor".}
-  proc SrvXkbAddGeomDoodad*(geom: PXkbGeometryPtr, section: PXkbSectionPtr,
-                            name: Atom): PXkbDoodadPtr{.libx11c,
-      importc: "XkbAddGeomDoodad".}
-  proc SrvXkbAddGeomKey*(geom: PXkbGeometryPtr, alias: cstring, float: cstring): PXkbKeyAliasPtr{.
-      libx11c, importc: "XkbAddGeomKeyAlias".}
-  proc SrvXkbAddGeomOutline*(shape: PXkbShapePtr, sz_points: int16): PXkbOutlinePtr{.
-      libx11c, importc: "XkbAddGeomOutline".}
-  proc SrvXkbAddGeomOverlay*(overlay: PXkbOverlayPtr, row: PXkbOverlayRowPtr,
-                             over: cstring, under: cstring): PXkbOverlayKeyPtr{.
-      libx11c, importc: "XkbAddGeomOverlayKey".}
-  proc SrvXkbAddGeomOverlayRow*(overlay: PXkbOverlayPtr, row_under: int16,
-                                sz_keys: int16): PXkbOverlayRowPtr{.libx11c, importc: "XkbAddGeomOverlayRow".}
-  proc SrvXkbAddGeomOverlayKey*(overlay: PXkbOverlayPtr, row: PXkbOverlayRowPtr,
-                                over: cstring, under: cstring): PXkbOverlayKeyPtr{.
-      libx11c, importc: "XkbAddGeomOverlayKey".}
-  proc SrvXkbAddGeomProperty*(geom: PXkbGeometryPtr, name: cstring,
-                              value: cstring): PXkbPropertyPtr{.libx11c, importc: "XkbAddGeomProperty".}
-  proc SrvXkbAddGeomRow*(section: PXkbSectionPtr, sz_keys: int16): PXkbRowPtr{.
-      libx11c, importc: "XkbAddGeomRow".}
-  proc SrvXkbAddGeomSection*(geom: PXkbGeometryPtr, name: Atom, sz_rows: int16,
-                             sz_doodads: int16, sz_overlays: int16): PXkbSectionPtr{.
-      libx11c, importc: "XkbAddGeomSection".}
-  proc SrvXkbAddGeomShape*(geom: PXkbGeometryPtr, name: Atom,
-                           sz_outlines: int16): PXkbShapePtr{.libx11c, importc: "XkbAddGeomShape".}
-  proc SrvXkbAllocGeomKeyAliases*(geom: PXkbGeometryPtr, nAliases: int16): Status{.
-      libx11c, importc: "XkbAllocGeomKeyAliases".}
-  proc SrvXkbAllocGeomColors*(geom: PXkbGeometryPtr, nColors: int16): Status{.
-      libx11c, importc: "XkbAllocGeomColors".}
-  proc SrvXkbAllocGeomDoodads*(geom: PXkbGeometryPtr, nDoodads: int16): Status{.
-      libx11c, importc: "XkbAllocGeomDoodads".}
-  proc SrvXkbAllocGeomKeys*(row: PXkbRowPtr, nKeys: int16): Status{.libx11c, importc: "XkbAllocGeomKeys".}
-  proc SrvXkbAllocGeomOutlines*(shape: PXkbShapePtr, nOL: int16): Status{.
-      libx11c, importc: "XkbAllocGeomOutlines".}
-  proc SrvXkbAllocGeomPoints*(ol: PXkbOutlinePtr, nPts: int16): Status{.libx11c, importc: "XkbAllocGeomPoints".}
-  proc SrvXkbAllocGeomProps*(geom: PXkbGeometryPtr, nProps: int16): Status{.
-      libx11c, importc: "XkbAllocGeomProps".}
-  proc SrvXkbAllocGeomRows*(section: PXkbSectionPtr, nRows: int16): Status{.
-      libx11c, importc: "XkbAllocGeomRows".}
-  proc SrvXkbAllocGeomSectionDoodads*(section: PXkbSectionPtr, nDoodads: int16): Status{.
-      libx11c, importc: "XkbAllocGeomSectionDoodads".}
-  proc SrvXkbAllocGeomSections*(geom: PXkbGeometryPtr, nSections: int16): Status{.
-      libx11c, importc: "XkbAllocGeomSections".}
-  proc SrvXkbAllocGeomOverlays*(section: PXkbSectionPtr, num_needed: int16): Status{.
-      libx11c, importc: "XkbAllocGeomOverlays".}
-  proc SrvXkbAllocGeomOverlayRows*(overlay: PXkbOverlayPtr, num_needed: int16): Status{.
-      libx11c, importc: "XkbAllocGeomOverlayRows".}
-  proc SrvXkbAllocGeomOverlayKeys*(row: PXkbOverlayRowPtr, num_needed: int16): Status{.
-      libx11c, importc: "XkbAllocGeomOverlayKeys".}
-  proc SrvXkbAllocGeomShapes*(geom: PXkbGeometryPtr, nShapes: int16): Status{.
-      libx11c, importc: "XkbAllocGeomShapes".}
-  proc SrvXkbAllocGeometry*(xkb: PXkbDescPtr, sizes: PXkbGeometrySizesPtr): Status{.
-      libx11c, importc: "XkbAllocGeometry".}
-  proc SrvXkbFreeGeomKeyAliases*(geom: PXkbGeometryPtr, first: int16,
-                                 count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomKeyAliases".}
-  proc SrvXkbFreeGeomColors*(geom: PXkbGeometryPtr, first: int16, count: int16,
-                             freeAll: bool){.libx11c,
-      importc: "XkbFreeGeomColors".}
-  proc SrvXkbFreeGeomDoodads*(doodads: PXkbDoodadPtr, nDoodads: int16,
-                              freeAll: bool){.libx11c,
-      importc: "XkbFreeGeomDoodads".}
-  proc SrvXkbFreeGeomProperties*(geom: PXkbGeometryPtr, first: int16,
-                                 count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomProperties".}
-  proc SrvXkbFreeGeomOverlayKeys*(row: PXkbOverlayRowPtr, first: int16,
-                                  count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomOverlayKeys".}
-  proc SrvXkbFreeGeomOverlayRows*(overlay: PXkbOverlayPtr, first: int16,
-                                  count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomOverlayRows".}
-  proc SrvXkbFreeGeomOverlays*(section: PXkbSectionPtr, first: int16,
-                               count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomOverlays".}
-  proc SrvXkbFreeGeomKeys*(row: PXkbRowPtr, first: int16, count: int16,
-                           freeAll: bool){.libx11c,
-      importc: "XkbFreeGeomKeys".}
-  proc SrvXkbFreeGeomRows*(section: PXkbSectionPtr, first: int16, count: int16,
-                           freeAll: bool){.libx11c,
-      importc: "XkbFreeGeomRows".}
-  proc SrvXkbFreeGeomSections*(geom: PXkbGeometryPtr, first: int16,
-                               count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomSections".}
-  proc SrvXkbFreeGeomPoints*(outline: PXkbOutlinePtr, first: int16,
-                             count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomPoints".}
-  proc SrvXkbFreeGeomOutlines*(shape: PXkbShapePtr, first: int16, count: int16,
-                               freeAll: bool){.libx11c,
-      importc: "XkbFreeGeomOutlines".}
-  proc SrvXkbFreeGeomShapes*(geom: PXkbGeometryPtr, first: int16, count: int16,
-                             freeAll: bool){.libx11c,
-      importc: "XkbFreeGeomShapes".}
-  proc SrvXkbFreeGeometry*(geom: PXkbGeometryPtr, which: int16, freeMap: bool){.
-      libx11c, importc: "XkbFreeGeometry".}
+  proc SrvXkbAddGeomKeyAlias*(
+    geom: PXkbGeometryPtr, alias: cstring, float: cstring
+  ): PXkbKeyAliasPtr {.libx11c, importc: "XkbAddGeomKeyAlias".}
+
+  proc SrvXkbAddGeomColor*(
+    geom: PXkbGeometryPtr, spec: cstring, pixel: int16
+  ): PXkbColorPtr {.libx11c, importc: "XkbAddGeomColor".}
+
+  proc SrvXkbAddGeomDoodad*(
+    geom: PXkbGeometryPtr, section: PXkbSectionPtr, name: Atom
+  ): PXkbDoodadPtr {.libx11c, importc: "XkbAddGeomDoodad".}
+
+  proc SrvXkbAddGeomKey*(
+    geom: PXkbGeometryPtr, alias: cstring, float: cstring
+  ): PXkbKeyAliasPtr {.libx11c, importc: "XkbAddGeomKeyAlias".}
+
+  proc SrvXkbAddGeomOutline*(
+    shape: PXkbShapePtr, sz_points: int16
+  ): PXkbOutlinePtr {.libx11c, importc: "XkbAddGeomOutline".}
+
+  proc SrvXkbAddGeomOverlay*(
+    overlay: PXkbOverlayPtr, row: PXkbOverlayRowPtr, over: cstring, under: cstring
+  ): PXkbOverlayKeyPtr {.libx11c, importc: "XkbAddGeomOverlayKey".}
+
+  proc SrvXkbAddGeomOverlayRow*(
+    overlay: PXkbOverlayPtr, row_under: int16, sz_keys: int16
+  ): PXkbOverlayRowPtr {.libx11c, importc: "XkbAddGeomOverlayRow".}
+
+  proc SrvXkbAddGeomOverlayKey*(
+    overlay: PXkbOverlayPtr, row: PXkbOverlayRowPtr, over: cstring, under: cstring
+  ): PXkbOverlayKeyPtr {.libx11c, importc: "XkbAddGeomOverlayKey".}
+
+  proc SrvXkbAddGeomProperty*(
+    geom: PXkbGeometryPtr, name: cstring, value: cstring
+  ): PXkbPropertyPtr {.libx11c, importc: "XkbAddGeomProperty".}
+
+  proc SrvXkbAddGeomRow*(
+    section: PXkbSectionPtr, sz_keys: int16
+  ): PXkbRowPtr {.libx11c, importc: "XkbAddGeomRow".}
+
+  proc SrvXkbAddGeomSection*(
+    geom: PXkbGeometryPtr,
+    name: Atom,
+    sz_rows: int16,
+    sz_doodads: int16,
+    sz_overlays: int16,
+  ): PXkbSectionPtr {.libx11c, importc: "XkbAddGeomSection".}
+
+  proc SrvXkbAddGeomShape*(
+    geom: PXkbGeometryPtr, name: Atom, sz_outlines: int16
+  ): PXkbShapePtr {.libx11c, importc: "XkbAddGeomShape".}
+
+  proc SrvXkbAllocGeomKeyAliases*(
+    geom: PXkbGeometryPtr, nAliases: int16
+  ): Status {.libx11c, importc: "XkbAllocGeomKeyAliases".}
+
+  proc SrvXkbAllocGeomColors*(
+    geom: PXkbGeometryPtr, nColors: int16
+  ): Status {.libx11c, importc: "XkbAllocGeomColors".}
+
+  proc SrvXkbAllocGeomDoodads*(
+    geom: PXkbGeometryPtr, nDoodads: int16
+  ): Status {.libx11c, importc: "XkbAllocGeomDoodads".}
+
+  proc SrvXkbAllocGeomKeys*(
+    row: PXkbRowPtr, nKeys: int16
+  ): Status {.libx11c, importc: "XkbAllocGeomKeys".}
+
+  proc SrvXkbAllocGeomOutlines*(
+    shape: PXkbShapePtr, nOL: int16
+  ): Status {.libx11c, importc: "XkbAllocGeomOutlines".}
+
+  proc SrvXkbAllocGeomPoints*(
+    ol: PXkbOutlinePtr, nPts: int16
+  ): Status {.libx11c, importc: "XkbAllocGeomPoints".}
+
+  proc SrvXkbAllocGeomProps*(
+    geom: PXkbGeometryPtr, nProps: int16
+  ): Status {.libx11c, importc: "XkbAllocGeomProps".}
+
+  proc SrvXkbAllocGeomRows*(
+    section: PXkbSectionPtr, nRows: int16
+  ): Status {.libx11c, importc: "XkbAllocGeomRows".}
+
+  proc SrvXkbAllocGeomSectionDoodads*(
+    section: PXkbSectionPtr, nDoodads: int16
+  ): Status {.libx11c, importc: "XkbAllocGeomSectionDoodads".}
+
+  proc SrvXkbAllocGeomSections*(
+    geom: PXkbGeometryPtr, nSections: int16
+  ): Status {.libx11c, importc: "XkbAllocGeomSections".}
+
+  proc SrvXkbAllocGeomOverlays*(
+    section: PXkbSectionPtr, num_needed: int16
+  ): Status {.libx11c, importc: "XkbAllocGeomOverlays".}
+
+  proc SrvXkbAllocGeomOverlayRows*(
+    overlay: PXkbOverlayPtr, num_needed: int16
+  ): Status {.libx11c, importc: "XkbAllocGeomOverlayRows".}
+
+  proc SrvXkbAllocGeomOverlayKeys*(
+    row: PXkbOverlayRowPtr, num_needed: int16
+  ): Status {.libx11c, importc: "XkbAllocGeomOverlayKeys".}
+
+  proc SrvXkbAllocGeomShapes*(
+    geom: PXkbGeometryPtr, nShapes: int16
+  ): Status {.libx11c, importc: "XkbAllocGeomShapes".}
+
+  proc SrvXkbAllocGeometry*(
+    xkb: PXkbDescPtr, sizes: PXkbGeometrySizesPtr
+  ): Status {.libx11c, importc: "XkbAllocGeometry".}
+
+  proc SrvXkbFreeGeomKeyAliases*(
+    geom: PXkbGeometryPtr, first: int16, count: int16, freeAll: bool
+  ) {.libx11c, importc: "XkbFreeGeomKeyAliases".}
+
+  proc SrvXkbFreeGeomColors*(
+    geom: PXkbGeometryPtr, first: int16, count: int16, freeAll: bool
+  ) {.libx11c, importc: "XkbFreeGeomColors".}
+
+  proc SrvXkbFreeGeomDoodads*(
+    doodads: PXkbDoodadPtr, nDoodads: int16, freeAll: bool
+  ) {.libx11c, importc: "XkbFreeGeomDoodads".}
+
+  proc SrvXkbFreeGeomProperties*(
+    geom: PXkbGeometryPtr, first: int16, count: int16, freeAll: bool
+  ) {.libx11c, importc: "XkbFreeGeomProperties".}
+
+  proc SrvXkbFreeGeomOverlayKeys*(
+    row: PXkbOverlayRowPtr, first: int16, count: int16, freeAll: bool
+  ) {.libx11c, importc: "XkbFreeGeomOverlayKeys".}
+
+  proc SrvXkbFreeGeomOverlayRows*(
+    overlay: PXkbOverlayPtr, first: int16, count: int16, freeAll: bool
+  ) {.libx11c, importc: "XkbFreeGeomOverlayRows".}
+
+  proc SrvXkbFreeGeomOverlays*(
+    section: PXkbSectionPtr, first: int16, count: int16, freeAll: bool
+  ) {.libx11c, importc: "XkbFreeGeomOverlays".}
+
+  proc SrvXkbFreeGeomKeys*(
+    row: PXkbRowPtr, first: int16, count: int16, freeAll: bool
+  ) {.libx11c, importc: "XkbFreeGeomKeys".}
+
+  proc SrvXkbFreeGeomRows*(
+    section: PXkbSectionPtr, first: int16, count: int16, freeAll: bool
+  ) {.libx11c, importc: "XkbFreeGeomRows".}
+
+  proc SrvXkbFreeGeomSections*(
+    geom: PXkbGeometryPtr, first: int16, count: int16, freeAll: bool
+  ) {.libx11c, importc: "XkbFreeGeomSections".}
+
+  proc SrvXkbFreeGeomPoints*(
+    outline: PXkbOutlinePtr, first: int16, count: int16, freeAll: bool
+  ) {.libx11c, importc: "XkbFreeGeomPoints".}
+
+  proc SrvXkbFreeGeomOutlines*(
+    shape: PXkbShapePtr, first: int16, count: int16, freeAll: bool
+  ) {.libx11c, importc: "XkbFreeGeomOutlines".}
+
+  proc SrvXkbFreeGeomShapes*(
+    geom: PXkbGeometryPtr, first: int16, count: int16, freeAll: bool
+  ) {.libx11c, importc: "XkbFreeGeomShapes".}
+
+  proc SrvXkbFreeGeometry*(
+    geom: PXkbGeometryPtr, which: int16, freeMap: bool
+  ) {.libx11c, importc: "XkbFreeGeometry".}
+
 # implementation
 
 import #************************************ xkb ************************************
@@ -1963,14 +2073,16 @@
 proc XkbLegalXILedClass(c: int): bool =
   ##define XkbLegalXILedClass(c) (((c)==KbdFeedbackClass)||((c)==LedFeedbackClass)||
   #                                ((c)==XkbDfltXIClass)||((c)==XkbAllXIClasses))
-  result = (c == KbdFeedbackClass) or (c == LedFeedbackClass) or
-      (c == XkbDfltXIClass) or (c == XkbAllXIClasses)
+  result =
+    (c == KbdFeedbackClass) or (c == LedFeedbackClass) or (c == XkbDfltXIClass) or
+    (c == XkbAllXIClasses)
 
 proc XkbLegalXIBellClass(c: int): bool =
   ##define XkbLegalXIBellClass(c) (((c)==KbdFeedbackClass)||((c)==BellFeedbackClass)||
   #                                 ((c)==XkbDfltXIClass)||((c)==XkbAllXIClasses))
-  result = (c == KbdFeedbackClass) or (c == BellFeedbackClass) or
-      (c == XkbDfltXIClass) or (c == XkbAllXIClasses)
+  result =
+    (c == KbdFeedbackClass) or (c == BellFeedbackClass) or (c == XkbDfltXIClass) or
+    (c == XkbAllXIClasses)
 
 proc XkbExplicitXIDevice(c: int): bool =
   ##define XkbExplicitXIDevice(c) (((c)&(~0xff))==0)
@@ -2022,8 +2134,7 @@
 
 proc XkbIsPtrAction(a: PXkbAnyAction): bool =
   ##define XkbIsPtrAction(a) (((a)->type>=XkbSA_MovePtr)&&((a)->type<=XkbSA_SetPtrDflt))
-  result = (a.theType >= XkbSA_MovePtr) and
-      (a.theType <= XkbSA_SetPtrDflt)
+  result = (a.theType >= XkbSA_MovePtr) and (a.theType <= XkbSA_SetPtrDflt)
 
 proc XkbIsLegalKeycode(k: int): bool =
   ##define        XkbIsLegalKeycode(k)    (((k)>=XkbMinLegalKeyCode)&&((k)<=XkbMaxLegalKeyCode))
@@ -2039,8 +2150,10 @@
 
 proc XkbcharToInt(v: int8): int16 =
   ##define XkbcharToInt(v) ((v)&0x80?(int)((v)|(~0xff)):(int)((v)&0x7f))
-  if ((v and 0x80'i8) != 0'i8): result = v or (not 0xFF'i16)
-  else: result = int16(v and 0x7F'i8)
+  if ((v and 0x80'i8) != 0'i8):
+    result = v or (not 0xFF'i16)
+  else:
+    result = int16(v and 0x7F'i8)
 
 proc XkbIntTo2chars(i: int16, h, L: var int8) =
   ##define XkbIntTo2chars(i,h,l) (((h)=((i>>8)&0xff)),((l)=((i)&0xff)))
@@ -2100,8 +2213,7 @@
 
 proc XkbSetGroupInfo(g, w, n: int16): int16 =
   ##define XkbSetGroupInfo(g,w,n) (((w)&0xc0)|(((n)&3)<<4)|((g)&0x0f))
-  result = (w and 0x000000C0'i16) or
-    ((n and 3'i16) shl 4'i16) or (g and 0x0000000F'i16)
+  result = (w and 0x000000C0'i16) or ((n and 3'i16) shl 4'i16) or (g and 0x0000000F'i16)
 
 proc XkbSetNumGroups(g, n: int16): int16 =
   ##define XkbSetNumGroups(g,n) (((g)&0xf0)|((n)&0x0f))
@@ -2167,8 +2279,7 @@
 proc XkbActionCtrls(a: PXkbCtrlsAction): int16 =
   ##define XkbActionCtrls(a) ((((unsigned int)(a)->ctrls3)<<24)|(((unsigned int)(a)->ctrls2)<<16)|
   #                            (((unsigned int)(a)->ctrls1)<<8)|((unsigned int)((a)->ctrls0)))
-  result = int16((a.ctrls3 shl 24) or (a.ctrls2 shl 16) or
-     (a.ctrls1 shl 8) or a.ctrls0)
+  result = int16((a.ctrls3 shl 24) or (a.ctrls2 shl 16) or (a.ctrls1 shl 8) or a.ctrls0)
 
 proc XkbSARedirectVMods(a: PXkbRedirectKeyAction): int16 =
   ##define XkbSARedirectVMods(a) ((((unsigned int)(a)->vmods1)<<8)|((unsigned int)(a)->vmods0))
@@ -2244,14 +2355,17 @@
 proc XkbIM_IsAuto(i: PXkbIndicatorMapPtr): bool =
   ##define XkbIM_IsAuto(i) ((((i)->flags&XkbIM_NoAutomatic)==0)&&(((i)->which_groups&&(i)->groups)||
   #                           ((i)->which_mods&&(i)->mods.mask)||  ((i)->ctrls)))
-  result = ((i.flags and XkbIM_NoAutomatic) == 0) and
-      (((i.which_groups > 0'i8) and (i.groups > 0'i8)) or
-      ((i.which_mods > 0'i8) and (i.mods.mask > 0'i8)) or (i.ctrls > 0'i8))
+  result =
+    ((i.flags and XkbIM_NoAutomatic) == 0) and (
+      ((i.which_groups > 0'i8) and (i.groups > 0'i8)) or
+      ((i.which_mods > 0'i8) and (i.mods.mask > 0'i8)) or (i.ctrls > 0'i8)
+    )
 
 proc XkbIM_InUse(i: PXkbIndicatorMapPtr): bool =
   ##define XkbIM_InUse(i) (((i)->flags)||((i)->which_groups)||((i)->which_mods)||((i)->ctrls))
-  result = (i.flags > 0'i8) or (i.which_groups > 0'i8) or (i.which_mods > 0'i8) or
-      (i.ctrls > 0'i8)
+  result =
+    (i.flags > 0'i8) or (i.which_groups > 0'i8) or (i.which_mods > 0'i8) or
+    (i.ctrls > 0'i8)
 
 proc XkbKeyKeyTypeIndex(d: PXkbDescPtr, k: int16, g: int8): int8 =
   ##define XkbKeyKeyTypeIndex(d,k,g)      (XkbCMKeyTypeIndex((d)->map,k,g))
@@ -2287,7 +2401,8 @@
 
 proc XkbKeySym(d: PXkbDescPtr, k: int16, n: int16): KeySym =
   ##define XkbKeySym(d,k,n) (XkbKeySymsPtr(d,k)[n])
-  result = cast[ptr array[0..0xffff, KeySym]](XkbKeySymsPtr(d, k))[n] # XXX: this seems strange!
+  result = cast[ptr array[0 .. 0xffff, KeySym]](XkbKeySymsPtr(d, k))[n]
+    # XXX: this seems strange!
 
 proc XkbKeySymEntry(d: PXkbDescPtr, k: int16, sl: int16, g: int8): KeySym =
   ##define XkbKeySymEntry(d,k,sl,g) (XkbKeySym(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl))))
@@ -2314,8 +2429,10 @@
 
 proc XkbKeyNumActions(d: PXkbDescPtr, k: int16): int16 =
   ##define XkbKeyNumActions(d,k) (XkbKeyHasActions(d,k)?XkbKeyNumSyms(d,k):1)
-  if (XkbKeyHasActions(d, k)): result = XkbKeyNumSyms(d, k)
-  else: result = 1'i16
+  if (XkbKeyHasActions(d, k)):
+    result = XkbKeyNumSyms(d, k)
+  else:
+    result = 1'i16
 
 proc XkbKeyActionsPtr(d: PXkbDescPtr, k: int16): PXkbAction =
   ##define XkbKeyActionsPtr(d,k) (XkbSMKeyActionsPtr((d)->server,k))
@@ -2351,7 +2468,8 @@
 
 proc XkbOutlineIndex(s: PXkbShapePtr, o: PXkbOutlinePtr): int32 =
   ##define XkbOutlineIndex(s,o) ((int)((o)-&(s)->outlines[0]))
-  result = int32((cast[int](o) - cast[int](addr(s.outlines[0]))) div sizeof(PXkbOutlinePtr))
+  result =
+    int32((cast[int](o) - cast[int](addr(s.outlines[0]))) div sizeof(PXkbOutlinePtr))
 
 proc XkbShapeDoodadColor(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr): PXkbColorPtr =
   ##define XkbShapeDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
@@ -2361,51 +2479,67 @@
   ##define XkbShapeDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
   result = addr(g.shapes[d.shape_ndx])
 
-proc XkbSetShapeDoodadColor(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr,
-                            c: PXkbColorPtr) =
+proc XkbSetShapeDoodadColor(
+    g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr, c: PXkbColorPtr
+) =
   ##define XkbSetShapeDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
-  d.color_ndx = int16((cast[int](c) - cast[int](addr(g.colors[0]))) div sizeof(XkbColorRec))
+  d.color_ndx =
+    int16((cast[int](c) - cast[int](addr(g.colors[0]))) div sizeof(XkbColorRec))
 
-proc XkbSetShapeDoodadShape(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr,
-                            s: PXkbShapePtr) =
+proc XkbSetShapeDoodadShape(
+    g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr, s: PXkbShapePtr
+) =
   ##define XkbSetShapeDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
-  d.shape_ndx = int16((cast[int](s) - cast[int](addr(g.shapes[0]))) div sizeof(XkbShapeRec))
+  d.shape_ndx =
+    int16((cast[int](s) - cast[int](addr(g.shapes[0]))) div sizeof(XkbShapeRec))
 
 proc XkbTextDoodadColor(g: PXkbGeometryPtr, d: PXkbTextDoodadPtr): PXkbColorPtr =
   ##define XkbTextDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
   result = addr(g.colors[d.color_ndx])
 
-proc XkbSetTextDoodadColor(g: PXkbGeometryPtr, d: PXkbTextDoodadPtr,
-                           c: PXkbColorPtr) =
+proc XkbSetTextDoodadColor(g: PXkbGeometryPtr, d: PXkbTextDoodadPtr, c: PXkbColorPtr) =
   ##define XkbSetTextDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
-  d.color_ndx = int16((cast[int](c) - cast[int](addr(g.colors[0]))) div sizeof(XkbColorRec))
+  d.color_ndx =
+    int16((cast[int](c) - cast[int](addr(g.colors[0]))) div sizeof(XkbColorRec))
 
-proc XkbIndicatorDoodadShape(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbShapeDoodadPtr =
+proc XkbIndicatorDoodadShape(
+    g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr
+): PXkbShapeDoodadPtr =
   ##define XkbIndicatorDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
   result = cast[PXkbShapeDoodadPtr](addr(g.shapes[d.shape_ndx]))
 
-proc XkbIndicatorDoodadOnColor(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbColorPtr =
+proc XkbIndicatorDoodadOnColor(
+    g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr
+): PXkbColorPtr =
   ##define XkbIndicatorDoodadOnColor(g,d) (&(g)->colors[(d)->on_color_ndx])
   result = addr(g.colors[d.on_color_ndx])
 
-proc XkbIndicatorDoodadOffColor(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbColorPtr =
+proc XkbIndicatorDoodadOffColor(
+    g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr
+): PXkbColorPtr =
   ##define XkbIndicatorDoodadOffColor(g,d) (&(g)->colors[(d)->off_color_ndx])
   result = addr(g.colors[d.off_color_ndx])
 
-proc XkbSetIndicatorDoodadOnColor(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr,
-                                  c: PXkbColorPtr) =
+proc XkbSetIndicatorDoodadOnColor(
+    g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr, c: PXkbColorPtr
+) =
   ##define XkbSetIndicatorDoodadOnColor(g,d,c) ((d)->on_color_ndx= (c)-&(g)->colors[0])
-  d.on_color_ndx = int16((cast[int](c) - cast[int](addr(g.colors[0]))) div sizeof(XkbColorRec))
+  d.on_color_ndx =
+    int16((cast[int](c) - cast[int](addr(g.colors[0]))) div sizeof(XkbColorRec))
 
-proc XkbSetIndicatorDoodadOffColor(g: PXkbGeometryPtr,
-                                   d: PXkbIndicatorDoodadPtr, c: PXkbColorPtr) =
+proc XkbSetIndicatorDoodadOffColor(
+    g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr, c: PXkbColorPtr
+) =
   ##define        XkbSetIndicatorDoodadOffColor(g,d,c) ((d)->off_color_ndx= (c)-&(g)->colors[0])
-  d.off_color_ndx = int16((cast[int](c) - cast[int](addr(g.colors[0]))) div sizeof(XkbColorRec))
+  d.off_color_ndx =
+    int16((cast[int](c) - cast[int](addr(g.colors[0]))) div sizeof(XkbColorRec))
 
-proc XkbSetIndicatorDoodadShape(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr,
-                                s: PXkbShapeDoodadPtr) =
+proc XkbSetIndicatorDoodadShape(
+    g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr, s: PXkbShapeDoodadPtr
+) =
   ##define XkbSetIndicatorDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
-  d.shape_ndx = int16((cast[int](s) - (cast[int](addr(g.shapes[0])))) div sizeof(XkbShapeRec))
+  d.shape_ndx =
+    int16((cast[int](s) - (cast[int](addr(g.shapes[0])))) div sizeof(XkbShapeRec))
 
 proc XkbLogoDoodadColor(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr): PXkbColorPtr =
   ##define XkbLogoDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
@@ -2415,15 +2549,17 @@
   ##define XkbLogoDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
   result = cast[PXkbShapeDoodadPtr](addr(g.shapes[d.shape_ndx]))
 
-proc XkbSetLogoDoodadColor(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr,
-                           c: PXkbColorPtr) =
+proc XkbSetLogoDoodadColor(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr, c: PXkbColorPtr) =
   ##define XkbSetLogoDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
-  d.color_ndx = int16((cast[int](c) - cast[int](addr(g.colors[0]))) div sizeof(XkbColorRec))
+  d.color_ndx =
+    int16((cast[int](c) - cast[int](addr(g.colors[0]))) div sizeof(XkbColorRec))
 
-proc XkbSetLogoDoodadShape(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr,
-                           s: PXkbShapeDoodadPtr) =
+proc XkbSetLogoDoodadShape(
+    g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr, s: PXkbShapeDoodadPtr
+) =
   ##define XkbSetLogoDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
-  d.shape_ndx = int16((cast[int](s) - cast[int](addr(g.shapes[0]))) div sizeof(XkbShapeRec))
+  d.shape_ndx =
+    int16((cast[int](s) - cast[int](addr(g.shapes[0]))) div sizeof(XkbShapeRec))
 
 proc XkbKeyShape(g: PXkbGeometryPtr, k: PXkbKeyPtr): PXkbShapeDoodadPtr =
   ##define XkbKeyShape(g,k) (&(g)->shapes[(k)->shape_ndx])
@@ -2435,12 +2571,15 @@
 
 proc XkbSetKeyShape(g: PXkbGeometryPtr, k: PXkbKeyPtr, s: PXkbShapeDoodadPtr) =
   ##define XkbSetKeyShape(g,k,s) ((k)->shape_ndx= (s)-&(g)->shapes[0])
-  k.shape_ndx = int8((cast[int](s) - cast[int](addr(g.shapes[0]))) div sizeof(XkbShapeRec))
+  k.shape_ndx =
+    int8((cast[int](s) - cast[int](addr(g.shapes[0]))) div sizeof(XkbShapeRec))
 
 proc XkbSetKeyColor(g: PXkbGeometryPtr, k: PXkbKeyPtr, c: PXkbColorPtr) =
   ##define XkbSetKeyColor(g,k,c) ((k)->color_ndx= (c)-&(g)->colors[0])
-  k.color_ndx = int8((cast[int](c) - cast[int](addr(g.colors[0]))) div sizeof(XkbColorRec))
+  k.color_ndx =
+    int8((cast[int](c) - cast[int](addr(g.colors[0]))) div sizeof(XkbColorRec))
 
 proc XkbGeomColorIndex(g: PXkbGeometryPtr, c: PXkbColorPtr): int32 =
   ##define XkbGeomColorIndex(g,c) ((int)((c)-&(g)->colors[0]))
-  result = int16((cast[int](c) - (cast[int](addr(g.colors[0])))) div sizeof(XkbColorRec))
+  result =
+    int16((cast[int](c) - (cast[int](addr(g.colors[0])))) div sizeof(XkbColorRec))
--- a/semicongine/thirdparty/x11/xkblib.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xkblib.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -49,59 +49,54 @@
 #
 #
 
-import
-  x, xlib, xkb
-
+import x, xlib, xkb
 
 include "x11pragma.nim"
 
-
 type
   PXkbAnyEvent* = ptr XkbAnyEvent
-  XkbAnyEvent*{.final.} = object
-    theType*: int16    # XkbAnyEvent
-    serial*: int32     # # of last req processed by server
-    send_event*: bool  # is this `from` a SendEvent request?
+  XkbAnyEvent* {.final.} = object
+    theType*: int16 # XkbAnyEvent
+    serial*: int32 # # of last req processed by server
+    send_event*: bool # is this `from` a SendEvent request?
     display*: PDisplay # Display the event was read `from`
-    time*: Time        # milliseconds;
-    xkb_type*: int16   # XKB event minor code
-    device*: int16     # device ID
-
+    time*: Time # milliseconds;
+    xkb_type*: int16 # XKB event minor code
+    device*: int16 # device ID
 
 type
   PXkbNewKeyboardNotifyEvent* = ptr XkbNewKeyboardNotifyEvent
-  XkbNewKeyboardNotifyEvent*{.final.} = object
-    theType*: int16          # XkbAnyEvent
-    serial*: int32           # of last req processed by server
-    send_event*: bool        # is this `from` a SendEvent request?
-    display*: PDisplay       # Display the event was read `from`
-    time*: Time              # milliseconds
-    xkb_type*: int16         # XkbNewKeyboardNotify
-    device*: int16           # device ID
-    old_device*: int16       # device ID of previous keyboard
-    min_key_code*: int16     # minimum key code
-    max_key_code*: int16     # maximum key code
+  XkbNewKeyboardNotifyEvent* {.final.} = object
+    theType*: int16 # XkbAnyEvent
+    serial*: int32 # of last req processed by server
+    send_event*: bool # is this `from` a SendEvent request?
+    display*: PDisplay # Display the event was read `from`
+    time*: Time # milliseconds
+    xkb_type*: int16 # XkbNewKeyboardNotify
+    device*: int16 # device ID
+    old_device*: int16 # device ID of previous keyboard
+    min_key_code*: int16 # minimum key code
+    max_key_code*: int16 # maximum key code
     old_min_key_code*: int16 # min key code of previous kbd
     old_max_key_code*: int16 # max key code of previous kbd
-    changed*: int16          # changed aspects of the keyboard
-    req_major*: int8         # major and minor opcode of req
-    req_minor*: int8         # that caused change, if applicable
-
+    changed*: int16 # changed aspects of the keyboard
+    req_major*: int8 # major and minor opcode of req
+    req_minor*: int8 # that caused change, if applicable
 
 type
   PXkbMapNotifyEvent* = ptr XkbMapNotifyEvent
-  XkbMapNotifyEvent*{.final.} = object
-    theType*: int16    # XkbAnyEvent
-    serial*: int32     # of last req processed by server
-    send_event*: bool  # is this `from` a SendEvent request
+  XkbMapNotifyEvent* {.final.} = object
+    theType*: int16 # XkbAnyEvent
+    serial*: int32 # of last req processed by server
+    send_event*: bool # is this `from` a SendEvent request
     display*: PDisplay # Display the event was read `from`
-    time*: Time        # milliseconds
-    xkb_type*: int16   # XkbMapNotify
-    device*: int16     # device ID
-    changed*: int16    # fields which have been changed
-    flags*: int16      # reserved
+    time*: Time # milliseconds
+    xkb_type*: int16 # XkbMapNotify
+    device*: int16 # device ID
+    changed*: int16 # fields which have been changed
+    flags*: int16 # reserved
     first_type*: int16 # first changed key type
-    num_types*: int16  # number of changed key types
+    num_types*: int16 # number of changed key types
     min_key_code*: KeyCode
     max_key_code*: KeyCode
     first_key_sym*: KeyCode
@@ -116,193 +111,184 @@
     num_key_explicit*: int16
     num_modmap_keys*: int16
     num_vmodmap_keys*: int16
-    vmods*: int16      # mask of changed virtual mods
-
+    vmods*: int16 # mask of changed virtual mods
 
 type
   PXkbStateNotifyEvent* = ptr XkbStateNotifyEvent
-  XkbStateNotifyEvent*{.final.} = object
-    theType*: int16           # XkbAnyEvent
-    serial*: int32            # # of last req processed by server
-    send_event*: bool         # is this `from` a SendEvent request?
-    display*: PDisplay        # Display the event was read `from`
-    time*: Time               # milliseconds
-    xkb_type*: int16          # XkbStateNotify
-    device*: int16            # device ID
-    changed*: int16           # mask of changed state components
-    group*: int16             # keyboard group
-    base_group*: int16        # base keyboard group
-    latched_group*: int16     # latched keyboard group
-    locked_group*: int16      # locked keyboard group
-    mods*: int16              # modifier state
-    base_mods*: int16         # base modifier state
-    latched_mods*: int16      # latched modifiers
-    locked_mods*: int16       # locked modifiers
-    compat_state*: int16      # compatibility state
-    grab_mods*: int8          # mods used for grabs
-    compat_grab_mods*: int8   # grab mods for non-XKB clients
-    lookup_mods*: int8        # mods sent to clients
+  XkbStateNotifyEvent* {.final.} = object
+    theType*: int16 # XkbAnyEvent
+    serial*: int32 # # of last req processed by server
+    send_event*: bool # is this `from` a SendEvent request?
+    display*: PDisplay # Display the event was read `from`
+    time*: Time # milliseconds
+    xkb_type*: int16 # XkbStateNotify
+    device*: int16 # device ID
+    changed*: int16 # mask of changed state components
+    group*: int16 # keyboard group
+    base_group*: int16 # base keyboard group
+    latched_group*: int16 # latched keyboard group
+    locked_group*: int16 # locked keyboard group
+    mods*: int16 # modifier state
+    base_mods*: int16 # base modifier state
+    latched_mods*: int16 # latched modifiers
+    locked_mods*: int16 # locked modifiers
+    compat_state*: int16 # compatibility state
+    grab_mods*: int8 # mods used for grabs
+    compat_grab_mods*: int8 # grab mods for non-XKB clients
+    lookup_mods*: int8 # mods sent to clients
     compat_lookup_mods*: int8 # mods sent to non-XKB clients
-    ptr_buttons*: int16       # pointer button state
-    keycode*: KeyCode         # keycode that caused the change
-    event_type*: int8         # KeyPress or KeyRelease
-    req_major*: int8          # Major opcode of request
-    req_minor*: int8          # Minor opcode of request
-
+    ptr_buttons*: int16 # pointer button state
+    keycode*: KeyCode # keycode that caused the change
+    event_type*: int8 # KeyPress or KeyRelease
+    req_major*: int8 # Major opcode of request
+    req_minor*: int8 # Minor opcode of request
 
 type
   PXkbControlsNotifyEvent* = ptr XkbControlsNotifyEvent
-  XkbControlsNotifyEvent*{.final.} = object
-    theType*: int16              # XkbAnyEvent
-    serial*: int32               # of last req processed by server
-    send_event*: bool            # is this `from` a SendEvent request?
-    display*: PDisplay           # Display the event was read `from`
-    time*: Time                  # milliseconds
-    xkb_type*: int16             # XkbControlsNotify
-    device*: int16               # device ID
-    changed_ctrls*: int16        # controls with changed sub-values
-    enabled_ctrls*: int16        # controls currently enabled
+  XkbControlsNotifyEvent* {.final.} = object
+    theType*: int16 # XkbAnyEvent
+    serial*: int32 # of last req processed by server
+    send_event*: bool # is this `from` a SendEvent request?
+    display*: PDisplay # Display the event was read `from`
+    time*: Time # milliseconds
+    xkb_type*: int16 # XkbControlsNotify
+    device*: int16 # device ID
+    changed_ctrls*: int16 # controls with changed sub-values
+    enabled_ctrls*: int16 # controls currently enabled
     enabled_ctrl_changes*: int16 # controls just {en,dis}abled
-    num_groups*: int16           # total groups on keyboard
-    keycode*: KeyCode            # key that caused change or 0
-    event_type*: int8            # type of event that caused change
-    req_major*: int8             # if keycode==0, major and minor
-    req_minor*: int8             # opcode of req that caused change
-
+    num_groups*: int16 # total groups on keyboard
+    keycode*: KeyCode # key that caused change or 0
+    event_type*: int8 # type of event that caused change
+    req_major*: int8 # if keycode==0, major and minor
+    req_minor*: int8 # opcode of req that caused change
 
 type
   PXkbIndicatorNotifyEvent* = ptr XkbIndicatorNotifyEvent
-  XkbIndicatorNotifyEvent*{.final.} = object
-    theType*: int16    # XkbAnyEvent
-    serial*: int32     # of last req processed by server
-    send_event*: bool  # is this `from` a SendEvent request?
+  XkbIndicatorNotifyEvent* {.final.} = object
+    theType*: int16 # XkbAnyEvent
+    serial*: int32 # of last req processed by server
+    send_event*: bool # is this `from` a SendEvent request?
     display*: PDisplay # Display the event was read `from`
-    time*: Time        # milliseconds
-    xkb_type*: int16   # XkbIndicatorNotify
-    device*: int16     # device
-    changed*: int16    # indicators with new state or map
-    state*: int16      # current state of all indicators
-
+    time*: Time # milliseconds
+    xkb_type*: int16 # XkbIndicatorNotify
+    device*: int16 # device
+    changed*: int16 # indicators with new state or map
+    state*: int16 # current state of all indicators
 
 type
   PXkbNamesNotifyEvent* = ptr XkbNamesNotifyEvent
-  XkbNamesNotifyEvent*{.final.} = object
-    theType*: int16            # XkbAnyEvent
-    serial*: int32             # of last req processed by server
-    send_event*: bool          # is this `from` a SendEvent request?
-    display*: PDisplay         # Display the event was read `from`
-    time*: Time                # milliseconds
-    xkb_type*: int16           # XkbNamesNotify
-    device*: int16             # device ID
-    changed*: int32            # names that have changed
-    first_type*: int16         # first key type with new name
-    num_types*: int16          # number of key types with new names
-    first_lvl*: int16          # first key type new new level names
-    num_lvls*: int16           # # of key types w/new level names
-    num_aliases*: int16        # total number of key aliases
-    num_radio_groups*: int16   # total number of radio groups
-    changed_vmods*: int16      # virtual modifiers with new names
-    changed_groups*: int16     # groups with new names
+  XkbNamesNotifyEvent* {.final.} = object
+    theType*: int16 # XkbAnyEvent
+    serial*: int32 # of last req processed by server
+    send_event*: bool # is this `from` a SendEvent request?
+    display*: PDisplay # Display the event was read `from`
+    time*: Time # milliseconds
+    xkb_type*: int16 # XkbNamesNotify
+    device*: int16 # device ID
+    changed*: int32 # names that have changed
+    first_type*: int16 # first key type with new name
+    num_types*: int16 # number of key types with new names
+    first_lvl*: int16 # first key type new new level names
+    num_lvls*: int16 # # of key types w/new level names
+    num_aliases*: int16 # total number of key aliases
+    num_radio_groups*: int16 # total number of radio groups
+    changed_vmods*: int16 # virtual modifiers with new names
+    changed_groups*: int16 # groups with new names
     changed_indicators*: int16 # indicators with new names
-    first_key*: int16          # first key with new name
-    num_keys*: int16           # number of keys with new names
-
+    first_key*: int16 # first key with new name
+    num_keys*: int16 # number of keys with new names
 
 type
   PXkbCompatMapNotifyEvent* = ptr XkbCompatMapNotifyEvent
-  XkbCompatMapNotifyEvent*{.final.} = object
-    theType*: int16        # XkbAnyEvent
-    serial*: int32         # of last req processed by server
-    send_event*: bool      # is this `from` a SendEvent request?
-    display*: PDisplay     # Display the event was read `from`
-    time*: Time            # milliseconds
-    xkb_type*: int16       # XkbCompatMapNotify
-    device*: int16         # device ID
+  XkbCompatMapNotifyEvent* {.final.} = object
+    theType*: int16 # XkbAnyEvent
+    serial*: int32 # of last req processed by server
+    send_event*: bool # is this `from` a SendEvent request?
+    display*: PDisplay # Display the event was read `from`
+    time*: Time # milliseconds
+    xkb_type*: int16 # XkbCompatMapNotify
+    device*: int16 # device ID
     changed_groups*: int16 # groups with new compat maps
-    first_si*: int16       # first new symbol interp
-    num_si*: int16         # number of new symbol interps
-    num_total_si*: int16   # total # of symbol interps
-
+    first_si*: int16 # first new symbol interp
+    num_si*: int16 # number of new symbol interps
+    num_total_si*: int16 # total # of symbol interps
 
 type
   PXkbBellNotifyEvent* = ptr XkbBellNotifyEvent
-  XkbBellNotifyEvent*{.final.} = object
-    theType*: int16    # XkbAnyEvent
-    serial*: int32     # of last req processed by server
-    send_event*: bool  # is this `from` a SendEvent request?
+  XkbBellNotifyEvent* {.final.} = object
+    theType*: int16 # XkbAnyEvent
+    serial*: int32 # of last req processed by server
+    send_event*: bool # is this `from` a SendEvent request?
     display*: PDisplay # Display the event was read `from`
-    time*: Time        # milliseconds
-    xkb_type*: int16   # XkbBellNotify
-    device*: int16     # device ID
-    percent*: int16    # requested volume as a % of maximum
-    pitch*: int16      # requested pitch in Hz
-    duration*: int16   # requested duration in useconds
+    time*: Time # milliseconds
+    xkb_type*: int16 # XkbBellNotify
+    device*: int16 # device ID
+    percent*: int16 # requested volume as a % of maximum
+    pitch*: int16 # requested pitch in Hz
+    duration*: int16 # requested duration in useconds
     bell_class*: int16 # (input extension) feedback class
-    bell_id*: int16    # (input extension) ID of feedback
-    name*: Atom        # "name" of requested bell
-    window*: Window    # window associated with event
-    event_only*: bool  # "event only" requested
-
+    bell_id*: int16 # (input extension) ID of feedback
+    name*: Atom # "name" of requested bell
+    window*: Window # window associated with event
+    event_only*: bool # "event only" requested
 
 type
   PXkbActionMessageEvent* = ptr XkbActionMessageEvent
-  XkbActionMessageEvent*{.final.} = object
-    theType*: int16                                  # XkbAnyEvent
-    serial*: int32                                   # of last req processed by server
-    send_event*: bool                                # is this `from` a SendEvent request?
-    display*: PDisplay                               # Display the event was read `from`
-    time*: Time                                      # milliseconds
-    xkb_type*: int16                                 # XkbActionMessage
-    device*: int16                                   # device ID
-    keycode*: KeyCode                                # key that generated the event
-    press*: bool                                     # true if act caused by key press
-    key_event_follows*: bool                         # true if key event also generated
-    group*: int16                                    # effective group
-    mods*: int16                                     # effective mods
-    message*: array[0..XkbActionMessageLength, char] # message -- leave space for NUL
-
+  XkbActionMessageEvent* {.final.} = object
+    theType*: int16 # XkbAnyEvent
+    serial*: int32 # of last req processed by server
+    send_event*: bool # is this `from` a SendEvent request?
+    display*: PDisplay # Display the event was read `from`
+    time*: Time # milliseconds
+    xkb_type*: int16 # XkbActionMessage
+    device*: int16 # device ID
+    keycode*: KeyCode # key that generated the event
+    press*: bool # true if act caused by key press
+    key_event_follows*: bool # true if key event also generated
+    group*: int16 # effective group
+    mods*: int16 # effective mods
+    message*: array[0 .. XkbActionMessageLength, char] # message -- leave space for NUL
 
 type
   PXkbAccessXNotifyEvent* = ptr XkbAccessXNotifyEvent
-  XkbAccessXNotifyEvent*{.final.} = object
-    theType*: int16        # XkbAnyEvent
-    serial*: int32         # of last req processed by server
-    send_event*: bool      # is this `from` a SendEvent request?
-    display*: PDisplay     # Display the event was read `from`
-    time*: Time            # milliseconds
-    xkb_type*: int16       # XkbAccessXNotify
-    device*: int16         # device ID
-    detail*: int16         # XkbAXN_*
-    keycode*: int16        # key of event
-    sk_delay*: int16       # current slow keys delay
+  XkbAccessXNotifyEvent* {.final.} = object
+    theType*: int16 # XkbAnyEvent
+    serial*: int32 # of last req processed by server
+    send_event*: bool # is this `from` a SendEvent request?
+    display*: PDisplay # Display the event was read `from`
+    time*: Time # milliseconds
+    xkb_type*: int16 # XkbAccessXNotify
+    device*: int16 # device ID
+    detail*: int16 # XkbAXN_*
+    keycode*: int16 # key of event
+    sk_delay*: int16 # current slow keys delay
     debounce_delay*: int16 # current debounce delay
 
-
 type
   PXkbExtensionDeviceNotifyEvent* = ptr XkbExtensionDeviceNotifyEvent
-  XkbExtensionDeviceNotifyEvent*{.final.} = object
-    theType*: int16      # XkbAnyEvent
-    serial*: int32       # of last req processed by server
-    send_event*: bool    # is this `from` a SendEvent request?
-    display*: PDisplay   # Display the event was read `from`
-    time*: Time          # milliseconds
-    xkb_type*: int16     # XkbExtensionDeviceNotify
-    device*: int16       # device ID
-    reason*: int16       # reason for the event
-    supported*: int16    # mask of supported features
-    unsupported*: int16  # mask of unsupported features
-                         # that some app tried to use
-    first_btn*: int16    # first button that changed
-    num_btns*: int16     # range of buttons changed
+  XkbExtensionDeviceNotifyEvent* {.final.} = object
+    theType*: int16 # XkbAnyEvent
+    serial*: int32 # of last req processed by server
+    send_event*: bool # is this `from` a SendEvent request?
+    display*: PDisplay # Display the event was read `from`
+    time*: Time # milliseconds
+    xkb_type*: int16 # XkbExtensionDeviceNotify
+    device*: int16 # device ID
+    reason*: int16 # reason for the event
+    supported*: int16 # mask of supported features
+    unsupported*: int16
+      # mask of unsupported features
+      # that some app tried to use
+    first_btn*: int16 # first button that changed
+    num_btns*: int16 # range of buttons changed
     leds_defined*: int16 # indicators with names or maps
-    led_state*: int16    # current state of the indicators
-    led_class*: int16    # feedback class for led changes
-    led_id*: int16       # feedback id for led changes
-
+    led_state*: int16 # current state of the indicators
+    led_class*: int16 # feedback class for led changes
+    led_id*: int16 # feedback id for led changes
 
 type
   PXkbEvent* = ptr XkbEvent
-  XkbEvent*{.final.} = object
+  XkbEvent* {.final.} = object
     theType*: int16
     any*: XkbAnyEvent
     new_kbd*: XkbNewKeyboardNotifyEvent
@@ -318,10 +304,9 @@
     device*: XkbExtensionDeviceNotifyEvent
     core*: XEvent
 
-
 type
   PXkbKbdDpyStatePtr* = ptr XkbKbdDpyStateRec
-  XkbKbdDpyStateRec*{.final.} = object # XkbOpenDisplay error codes
+  XkbKbdDpyStateRec* {.final.} = object # XkbOpenDisplay error codes
 
 const
   XkbOD_Success* = 0
@@ -342,294 +327,542 @@
   XkbLC_AllComposeControls* = 0xC0000000
   XkbLC_AllControls* = 0xC000001F
 
-proc XkbIgnoreExtension*(ignore: bool): bool{.libx11c,
-    importc: "XkbIgnoreExtension".}
-proc XkbOpenDisplay*(name: cstring, ev_rtrn, err_rtrn, major_rtrn, minor_rtrn,
-                                    reason: ptr int16): PDisplay{.libx11c, importc: "XkbOpenDisplay".}
-proc XkbQueryExtension*(dpy: PDisplay, opcodeReturn, eventBaseReturn,
-                                       errorBaseReturn, majorRtrn, minorRtrn: ptr int16): bool{.
-    libx11c, importc: "XkbQueryExtension".}
-proc XkbUseExtension*(dpy: PDisplay, major_rtrn, minor_rtrn: ptr int16): bool{.
-    libx11c, importc: "XkbUseExtension".}
-proc XkbLibraryVersion*(libMajorRtrn, libMinorRtrn: ptr int16): bool{.libx11c, importc: "XkbLibraryVersion".}
-proc XkbSetXlibControls*(dpy: PDisplay, affect, values: int16): int16{.libx11c, importc: "XkbSetXlibControls".}
-proc XkbGetXlibControls*(dpy: PDisplay): int16{.libx11c,
-    importc: "XkbGetXlibControls".}
-type
-  XkbInternAtomFunc* = proc (dpy: PDisplay, name: cstring, only_if_exists: bool): Atom{.
-      cdecl.}
+proc XkbIgnoreExtension*(ignore: bool): bool {.libx11c, importc: "XkbIgnoreExtension".}
+proc XkbOpenDisplay*(
+  name: cstring, ev_rtrn, err_rtrn, major_rtrn, minor_rtrn, reason: ptr int16
+): PDisplay {.libx11c, importc: "XkbOpenDisplay".}
+
+proc XkbQueryExtension*(
+  dpy: PDisplay,
+  opcodeReturn, eventBaseReturn, errorBaseReturn, majorRtrn, minorRtrn: ptr int16,
+): bool {.libx11c, importc: "XkbQueryExtension".}
+
+proc XkbUseExtension*(
+  dpy: PDisplay, major_rtrn, minor_rtrn: ptr int16
+): bool {.libx11c, importc: "XkbUseExtension".}
+
+proc XkbLibraryVersion*(
+  libMajorRtrn, libMinorRtrn: ptr int16
+): bool {.libx11c, importc: "XkbLibraryVersion".}
+
+proc XkbSetXlibControls*(
+  dpy: PDisplay, affect, values: int16
+): int16 {.libx11c, importc: "XkbSetXlibControls".}
+
+proc XkbGetXlibControls*(
+  dpy: PDisplay
+): int16 {.libx11c, importc: "XkbGetXlibControls".}
+
+type XkbInternAtomFunc* =
+  proc(dpy: PDisplay, name: cstring, only_if_exists: bool): Atom {.cdecl.}
+
+type XkbGetAtomNameFunc* = proc(dpy: PDisplay, atom: Atom): cstring {.cdecl.}
 
-type
-  XkbGetAtomNameFunc* = proc (dpy: PDisplay, atom: Atom): cstring{.cdecl.}
+proc XkbSetAtomFuncs*(
+  getAtom: XkbInternAtomFunc, getName: XkbGetAtomNameFunc
+) {.libx11c, importc: "XkbSetAtomFuncs".}
+
+proc XkbKeycodeToKeysym*(
+  dpy: PDisplay, kc: KeyCode, group, level: int16
+): KeySym {.libx11c, importc: "XkbKeycodeToKeysym".}
+
+proc XkbKeysymToModifiers*(
+  dpy: PDisplay, ks: KeySym
+): int16 {.libx11c, importc: "XkbKeysymToModifiers".}
+
+proc XkbLookupKeySym*(
+  dpy: PDisplay,
+  keycode: KeyCode,
+  modifiers, modifiers_return: int16,
+  keysym_return: PKeySym,
+): bool {.libx11c, importc: "XkbLookupKeySym".}
+
+proc XkbLookupKeyBinding*(
+  dpy: PDisplay,
+  sym_rtrn: KeySym,
+  mods: int16,
+  buffer: cstring,
+  nbytes: int16,
+  extra_rtrn: ptr int16,
+): int16 {.libx11c, importc: "XkbLookupKeyBinding".}
+
+proc XkbTranslateKeyCode*(
+  xkb: PXkbDescPtr,
+  keycode: KeyCode,
+  modifiers, modifiers_return: int16,
+  keysym_return: PKeySym,
+): bool {.libx11c, importc: "XkbTranslateKeyCode".}
 
-proc XkbSetAtomFuncs*(getAtom: XkbInternAtomFunc, getName: XkbGetAtomNameFunc){.
-    libx11c, importc: "XkbSetAtomFuncs".}
-proc XkbKeycodeToKeysym*(dpy: PDisplay, kc: KeyCode, group, level: int16): KeySym{.
-    libx11c, importc: "XkbKeycodeToKeysym".}
-proc XkbKeysymToModifiers*(dpy: PDisplay, ks: KeySym): int16{.libx11c, importc: "XkbKeysymToModifiers".}
-proc XkbLookupKeySym*(dpy: PDisplay, keycode: KeyCode,
-                      modifiers, modifiers_return: int16, keysym_return: PKeySym): bool{.
-    libx11c, importc: "XkbLookupKeySym".}
-proc XkbLookupKeyBinding*(dpy: PDisplay, sym_rtrn: KeySym, mods: int16,
-                          buffer: cstring, nbytes: int16, extra_rtrn: ptr int16): int16{.
-    libx11c, importc: "XkbLookupKeyBinding".}
-proc XkbTranslateKeyCode*(xkb: PXkbDescPtr, keycode: KeyCode,
-                          modifiers, modifiers_return: int16,
-                          keysym_return: PKeySym): bool{.libx11c,
-    importc: "XkbTranslateKeyCode".}
-proc XkbTranslateKeySym*(dpy: PDisplay, sym_return: KeySym, modifiers: int16,
-                         buffer: cstring, nbytes: int16, extra_rtrn: ptr int16): int16{.
-    libx11c, importc: "XkbTranslateKeySym".}
-proc XkbSetAutoRepeatRate*(dpy: PDisplay, deviceSpec, delay, interval: int16): bool{.
-    libx11c, importc: "XkbSetAutoRepeatRate".}
-proc XkbGetAutoRepeatRate*(dpy: PDisplay, deviceSpec: int16,
-                           delayRtrn, intervalRtrn: PWord): bool{.libx11c, importc: "XkbGetAutoRepeatRate".}
-proc XkbChangeEnabledControls*(dpy: PDisplay, deviceSpec, affect, values: int16): bool{.
-    libx11c, importc: "XkbChangeEnabledControls".}
-proc XkbDeviceBell*(dpy: PDisplay, win: Window,
-                    deviceSpec, bellClass, bellID, percent: int16, name: Atom): bool{.
-    libx11c, importc: "XkbDeviceBell".}
-proc XkbForceDeviceBell*(dpy: PDisplay,
-                         deviceSpec, bellClass, bellID, percent: int16): bool{.
-    libx11c, importc: "XkbForceDeviceBell".}
-proc XkbDeviceBellEvent*(dpy: PDisplay, win: Window,
-                         deviceSpec, bellClass, bellID, percent: int16,
-                         name: Atom): bool{.libx11c,
-    importc: "XkbDeviceBellEvent".}
-proc XkbBell*(dpy: PDisplay, win: Window, percent: int16, name: Atom): bool{.
-    libx11c, importc: "XkbBell".}
-proc XkbForceBell*(dpy: PDisplay, percent: int16): bool{.libx11c,
-    importc: "XkbForceBell".}
-proc XkbBellEvent*(dpy: PDisplay, win: Window, percent: int16, name: Atom): bool{.
-    libx11c, importc: "XkbBellEvent".}
-proc XkbSelectEvents*(dpy: PDisplay, deviceID, affect, values: int16): bool{.
-    libx11c, importc: "XkbSelectEvents".}
-proc XkbSelectEventDetails*(dpy: PDisplay, deviceID, eventType: int16,
-                            affect, details: int32): bool{.libx11c, importc: "XkbSelectEventDetails".}
-proc XkbNoteMapChanges*(old: PXkbMapChangesPtr, new: PXkbMapNotifyEvent,
-                        wanted: int16){.libx11c,
-                                        importc: "XkbNoteMapChanges".}
-proc XkbNoteNameChanges*(old: PXkbNameChangesPtr, new: PXkbNamesNotifyEvent,
-                         wanted: int16){.libx11c,
-    importc: "XkbNoteNameChanges".}
-proc XkbGetIndicatorState*(dpy: PDisplay, deviceSpec: int16, pStateRtrn: PWord): Status{.
-    libx11c, importc: "XkbGetIndicatorState".}
-proc XkbGetDeviceIndicatorState*(dpy: PDisplay,
-                                 deviceSpec, ledClass, ledID: int16,
-                                 pStateRtrn: PWord): Status{.libx11c, importc: "XkbGetDeviceIndicatorState".}
-proc XkbGetIndicatorMap*(dpy: PDisplay, which: int32, desc: PXkbDescPtr): Status{.
-    libx11c, importc: "XkbGetIndicatorMap".}
-proc XkbSetIndicatorMap*(dpy: PDisplay, which: int32, desc: PXkbDescPtr): bool{.
-    libx11c, importc: "XkbSetIndicatorMap".}
+proc XkbTranslateKeySym*(
+  dpy: PDisplay,
+  sym_return: KeySym,
+  modifiers: int16,
+  buffer: cstring,
+  nbytes: int16,
+  extra_rtrn: ptr int16,
+): int16 {.libx11c, importc: "XkbTranslateKeySym".}
+
+proc XkbSetAutoRepeatRate*(
+  dpy: PDisplay, deviceSpec, delay, interval: int16
+): bool {.libx11c, importc: "XkbSetAutoRepeatRate".}
+
+proc XkbGetAutoRepeatRate*(
+  dpy: PDisplay, deviceSpec: int16, delayRtrn, intervalRtrn: PWord
+): bool {.libx11c, importc: "XkbGetAutoRepeatRate".}
+
+proc XkbChangeEnabledControls*(
+  dpy: PDisplay, deviceSpec, affect, values: int16
+): bool {.libx11c, importc: "XkbChangeEnabledControls".}
+
+proc XkbDeviceBell*(
+  dpy: PDisplay, win: Window, deviceSpec, bellClass, bellID, percent: int16, name: Atom
+): bool {.libx11c, importc: "XkbDeviceBell".}
+
+proc XkbForceDeviceBell*(
+  dpy: PDisplay, deviceSpec, bellClass, bellID, percent: int16
+): bool {.libx11c, importc: "XkbForceDeviceBell".}
+
+proc XkbDeviceBellEvent*(
+  dpy: PDisplay, win: Window, deviceSpec, bellClass, bellID, percent: int16, name: Atom
+): bool {.libx11c, importc: "XkbDeviceBellEvent".}
+
+proc XkbBell*(
+  dpy: PDisplay, win: Window, percent: int16, name: Atom
+): bool {.libx11c, importc: "XkbBell".}
+
+proc XkbForceBell*(
+  dpy: PDisplay, percent: int16
+): bool {.libx11c, importc: "XkbForceBell".}
+
+proc XkbBellEvent*(
+  dpy: PDisplay, win: Window, percent: int16, name: Atom
+): bool {.libx11c, importc: "XkbBellEvent".}
+
+proc XkbSelectEvents*(
+  dpy: PDisplay, deviceID, affect, values: int16
+): bool {.libx11c, importc: "XkbSelectEvents".}
+
+proc XkbSelectEventDetails*(
+  dpy: PDisplay, deviceID, eventType: int16, affect, details: int32
+): bool {.libx11c, importc: "XkbSelectEventDetails".}
+
+proc XkbNoteMapChanges*(
+  old: PXkbMapChangesPtr, new: PXkbMapNotifyEvent, wanted: int16
+) {.libx11c, importc: "XkbNoteMapChanges".}
+
+proc XkbNoteNameChanges*(
+  old: PXkbNameChangesPtr, new: PXkbNamesNotifyEvent, wanted: int16
+) {.libx11c, importc: "XkbNoteNameChanges".}
+
+proc XkbGetIndicatorState*(
+  dpy: PDisplay, deviceSpec: int16, pStateRtrn: PWord
+): Status {.libx11c, importc: "XkbGetIndicatorState".}
+
+proc XkbGetDeviceIndicatorState*(
+  dpy: PDisplay, deviceSpec, ledClass, ledID: int16, pStateRtrn: PWord
+): Status {.libx11c, importc: "XkbGetDeviceIndicatorState".}
+
+proc XkbGetIndicatorMap*(
+  dpy: PDisplay, which: int32, desc: PXkbDescPtr
+): Status {.libx11c, importc: "XkbGetIndicatorMap".}
+
+proc XkbSetIndicatorMap*(
+  dpy: PDisplay, which: int32, desc: PXkbDescPtr
+): bool {.libx11c, importc: "XkbSetIndicatorMap".}
+
 proc XkbNoteIndicatorMapChanges*(o, n: PXkbIndicatorChangesPtr, w: int16)
 proc XkbNoteIndicatorStateChanges*(o, n: PXkbIndicatorChangesPtr, w: int16)
-proc XkbGetIndicatorMapChanges*(d: PDisplay, x: PXkbDescPtr,
-                                c: PXkbIndicatorChangesPtr): Status
-proc XkbChangeIndicatorMaps*(d: PDisplay, x: PXkbDescPtr,
-                             c: PXkbIndicatorChangesPtr): bool
-proc XkbGetNamedIndicator*(dpy: PDisplay, name: Atom, pNdxRtrn: ptr int16,
-                           pStateRtrn: ptr bool, pMapRtrn: PXkbIndicatorMapPtr,
-                           pRealRtrn: ptr bool): bool{.libx11c,
-    importc: "XkbGetNamedIndicator".}
-proc XkbGetNamedDeviceIndicator*(dpy: PDisplay,
-                                 deviceSpec, ledClass, ledID: int16,
-                                 name: Atom, pNdxRtrn: ptr int16,
-                                 pStateRtrn: ptr bool,
-                                 pMapRtrn: PXkbIndicatorMapPtr,
-                                 pRealRtrn: ptr bool): bool{.libx11c, importc: "XkbGetNamedDeviceIndicator".}
-proc XkbSetNamedIndicator*(dpy: PDisplay, name: Atom,
-                           changeState, state, createNewMap: bool,
-                           pMap: PXkbIndicatorMapPtr): bool{.libx11c, importc: "XkbSetNamedIndicator".}
-proc XkbSetNamedDeviceIndicator*(dpy: PDisplay,
-                                 deviceSpec, ledClass, ledID: int16,
-                                 name: Atom,
-                                 changeState, state, createNewMap: bool,
-                                 pMap: PXkbIndicatorMapPtr): bool{.libx11c, importc: "XkbSetNamedDeviceIndicator".}
-proc XkbLockModifiers*(dpy: PDisplay, deviceSpec, affect, values: int16): bool{.
-    libx11c, importc: "XkbLockModifiers".}
-proc XkbLatchModifiers*(dpy: PDisplay, deviceSpec, affect, values: int16): bool{.
-    libx11c, importc: "XkbLatchModifiers".}
-proc XkbLockGroup*(dpy: PDisplay, deviceSpec, group: int16): bool{.libx11c, importc: "XkbLockGroup".}
-proc XkbLatchGroup*(dpy: PDisplay, deviceSpec, group: int16): bool{.libx11c, importc: "XkbLatchGroup".}
-proc XkbSetServerInternalMods*(dpy: PDisplay, deviceSpec, affectReal,
-    realValues, affectVirtual, virtualValues: int16): bool{.libx11c, importc: "XkbSetServerInternalMods".}
-proc XkbSetIgnoreLockMods*(dpy: PDisplay, deviceSpec, affectReal, realValues,
-    affectVirtual, virtualValues: int16): bool{.libx11c,
-    importc: "XkbSetIgnoreLockMods".}
-proc XkbVirtualModsToReal*(dpy: PDisplay, virtual_mask: int16, mask_rtrn: PWord): bool{.
-    libx11c, importc: "XkbVirtualModsToReal".}
-proc XkbComputeEffectiveMap*(xkb: PXkbDescPtr, theType: PXkbKeyTypePtr,
-                             map_rtrn: PByte): bool{.libx11c,
-    importc: "XkbComputeEffectiveMap".}
-proc XkbInitCanonicalKeyTypes*(xkb: PXkbDescPtr, which: int16, keypadVMod: int16): Status{.
-    libx11c, importc: "XkbInitCanonicalKeyTypes".}
-proc XkbAllocKeyboard*(): PXkbDescPtr{.libx11c,
-                                       importc: "XkbAllocKeyboard".}
-proc XkbFreeKeyboard*(xkb: PXkbDescPtr, which: int16, freeDesc: bool){.libx11c, importc: "XkbFreeKeyboard".}
-proc XkbAllocClientMap*(xkb: PXkbDescPtr, which, nTypes: int16): Status{.libx11c, importc: "XkbAllocClientMap".}
-proc XkbAllocServerMap*(xkb: PXkbDescPtr, which, nActions: int16): Status{.
-    libx11c, importc: "XkbAllocServerMap".}
-proc XkbFreeClientMap*(xkb: PXkbDescPtr, what: int16, freeMap: bool){.libx11c, importc: "XkbFreeClientMap".}
-proc XkbFreeServerMap*(xkb: PXkbDescPtr, what: int16, freeMap: bool){.libx11c, importc: "XkbFreeServerMap".}
-proc XkbAddKeyType*(xkb: PXkbDescPtr, name: Atom, map_count: int16,
-                    want_preserve: bool, num_lvls: int16): PXkbKeyTypePtr{.
-    libx11c, importc: "XkbAddKeyType".}
-proc XkbAllocIndicatorMaps*(xkb: PXkbDescPtr): Status{.libx11c,
-    importc: "XkbAllocIndicatorMaps".}
-proc XkbFreeIndicatorMaps*(xkb: PXkbDescPtr){.libx11c,
-    importc: "XkbFreeIndicatorMaps".}
-proc XkbGetMap*(dpy: PDisplay, which, deviceSpec: int16): PXkbDescPtr{.libx11c, importc: "XkbGetMap".}
-proc XkbGetUpdatedMap*(dpy: PDisplay, which: int16, desc: PXkbDescPtr): Status{.
-    libx11c, importc: "XkbGetUpdatedMap".}
-proc XkbGetMapChanges*(dpy: PDisplay, xkb: PXkbDescPtr,
-                       changes: PXkbMapChangesPtr): Status{.libx11c, importc: "XkbGetMapChanges".}
-proc XkbRefreshKeyboardMapping*(event: PXkbMapNotifyEvent): Status{.libx11c, importc: "XkbRefreshKeyboardMapping".}
-proc XkbGetKeyTypes*(dpy: PDisplay, first, num: int16, xkb: PXkbDescPtr): Status{.
-    libx11c, importc: "XkbGetKeyTypes".}
-proc XkbGetKeySyms*(dpy: PDisplay, first, num: int16, xkb: PXkbDescPtr): Status{.
-    libx11c, importc: "XkbGetKeySyms".}
-proc XkbGetKeyActions*(dpy: PDisplay, first, num: int16, xkb: PXkbDescPtr): Status{.
-    libx11c, importc: "XkbGetKeyActions".}
-proc XkbGetKeyBehaviors*(dpy: PDisplay, firstKey, nKeys: int16,
-                         desc: PXkbDescPtr): Status{.libx11c,
-    importc: "XkbGetKeyBehaviors".}
-proc XkbGetVirtualMods*(dpy: PDisplay, which: int16, desc: PXkbDescPtr): Status{.
-    libx11c, importc: "XkbGetVirtualMods".}
-proc XkbGetKeyExplicitComponents*(dpy: PDisplay, firstKey, nKeys: int16,
-                                  desc: PXkbDescPtr): Status{.libx11c, importc: "XkbGetKeyExplicitComponents".}
-proc XkbGetKeyModifierMap*(dpy: PDisplay, firstKey, nKeys: int16,
-                           desc: PXkbDescPtr): Status{.libx11c,
-    importc: "XkbGetKeyModifierMap".}
-proc XkbAllocControls*(xkb: PXkbDescPtr, which: int16): Status{.libx11c, importc: "XkbAllocControls".}
-proc XkbFreeControls*(xkb: PXkbDescPtr, which: int16, freeMap: bool){.libx11c, importc: "XkbFreeControls".}
-proc XkbGetControls*(dpy: PDisplay, which: int32, desc: PXkbDescPtr): Status{.
-    libx11c, importc: "XkbGetControls".}
-proc XkbSetControls*(dpy: PDisplay, which: int32, desc: PXkbDescPtr): bool{.
-    libx11c, importc: "XkbSetControls".}
-proc XkbNoteControlsChanges*(old: PXkbControlsChangesPtr,
-                             new: PXkbControlsNotifyEvent, wanted: int16){.
-    libx11c, importc: "XkbNoteControlsChanges".}
-proc XkbGetControlsChanges*(d: PDisplay, x: PXkbDescPtr,
-                            c: PXkbControlsChangesPtr): Status
+proc XkbGetIndicatorMapChanges*(
+  d: PDisplay, x: PXkbDescPtr, c: PXkbIndicatorChangesPtr
+): Status
+
+proc XkbChangeIndicatorMaps*(
+  d: PDisplay, x: PXkbDescPtr, c: PXkbIndicatorChangesPtr
+): bool
+
+proc XkbGetNamedIndicator*(
+  dpy: PDisplay,
+  name: Atom,
+  pNdxRtrn: ptr int16,
+  pStateRtrn: ptr bool,
+  pMapRtrn: PXkbIndicatorMapPtr,
+  pRealRtrn: ptr bool,
+): bool {.libx11c, importc: "XkbGetNamedIndicator".}
+
+proc XkbGetNamedDeviceIndicator*(
+  dpy: PDisplay,
+  deviceSpec, ledClass, ledID: int16,
+  name: Atom,
+  pNdxRtrn: ptr int16,
+  pStateRtrn: ptr bool,
+  pMapRtrn: PXkbIndicatorMapPtr,
+  pRealRtrn: ptr bool,
+): bool {.libx11c, importc: "XkbGetNamedDeviceIndicator".}
+
+proc XkbSetNamedIndicator*(
+  dpy: PDisplay,
+  name: Atom,
+  changeState, state, createNewMap: bool,
+  pMap: PXkbIndicatorMapPtr,
+): bool {.libx11c, importc: "XkbSetNamedIndicator".}
+
+proc XkbSetNamedDeviceIndicator*(
+  dpy: PDisplay,
+  deviceSpec, ledClass, ledID: int16,
+  name: Atom,
+  changeState, state, createNewMap: bool,
+  pMap: PXkbIndicatorMapPtr,
+): bool {.libx11c, importc: "XkbSetNamedDeviceIndicator".}
+
+proc XkbLockModifiers*(
+  dpy: PDisplay, deviceSpec, affect, values: int16
+): bool {.libx11c, importc: "XkbLockModifiers".}
+
+proc XkbLatchModifiers*(
+  dpy: PDisplay, deviceSpec, affect, values: int16
+): bool {.libx11c, importc: "XkbLatchModifiers".}
+
+proc XkbLockGroup*(
+  dpy: PDisplay, deviceSpec, group: int16
+): bool {.libx11c, importc: "XkbLockGroup".}
+
+proc XkbLatchGroup*(
+  dpy: PDisplay, deviceSpec, group: int16
+): bool {.libx11c, importc: "XkbLatchGroup".}
+
+proc XkbSetServerInternalMods*(
+  dpy: PDisplay, deviceSpec, affectReal, realValues, affectVirtual, virtualValues: int16
+): bool {.libx11c, importc: "XkbSetServerInternalMods".}
+
+proc XkbSetIgnoreLockMods*(
+  dpy: PDisplay, deviceSpec, affectReal, realValues, affectVirtual, virtualValues: int16
+): bool {.libx11c, importc: "XkbSetIgnoreLockMods".}
+
+proc XkbVirtualModsToReal*(
+  dpy: PDisplay, virtual_mask: int16, mask_rtrn: PWord
+): bool {.libx11c, importc: "XkbVirtualModsToReal".}
+
+proc XkbComputeEffectiveMap*(
+  xkb: PXkbDescPtr, theType: PXkbKeyTypePtr, map_rtrn: PByte
+): bool {.libx11c, importc: "XkbComputeEffectiveMap".}
+
+proc XkbInitCanonicalKeyTypes*(
+  xkb: PXkbDescPtr, which: int16, keypadVMod: int16
+): Status {.libx11c, importc: "XkbInitCanonicalKeyTypes".}
+
+proc XkbAllocKeyboard*(): PXkbDescPtr {.libx11c, importc: "XkbAllocKeyboard".}
+proc XkbFreeKeyboard*(
+  xkb: PXkbDescPtr, which: int16, freeDesc: bool
+) {.libx11c, importc: "XkbFreeKeyboard".}
+
+proc XkbAllocClientMap*(
+  xkb: PXkbDescPtr, which, nTypes: int16
+): Status {.libx11c, importc: "XkbAllocClientMap".}
+
+proc XkbAllocServerMap*(
+  xkb: PXkbDescPtr, which, nActions: int16
+): Status {.libx11c, importc: "XkbAllocServerMap".}
+
+proc XkbFreeClientMap*(
+  xkb: PXkbDescPtr, what: int16, freeMap: bool
+) {.libx11c, importc: "XkbFreeClientMap".}
+
+proc XkbFreeServerMap*(
+  xkb: PXkbDescPtr, what: int16, freeMap: bool
+) {.libx11c, importc: "XkbFreeServerMap".}
+
+proc XkbAddKeyType*(
+  xkb: PXkbDescPtr, name: Atom, map_count: int16, want_preserve: bool, num_lvls: int16
+): PXkbKeyTypePtr {.libx11c, importc: "XkbAddKeyType".}
+
+proc XkbAllocIndicatorMaps*(
+  xkb: PXkbDescPtr
+): Status {.libx11c, importc: "XkbAllocIndicatorMaps".}
+
+proc XkbFreeIndicatorMaps*(
+  xkb: PXkbDescPtr
+) {.libx11c, importc: "XkbFreeIndicatorMaps".}
+
+proc XkbGetMap*(
+  dpy: PDisplay, which, deviceSpec: int16
+): PXkbDescPtr {.libx11c, importc: "XkbGetMap".}
+
+proc XkbGetUpdatedMap*(
+  dpy: PDisplay, which: int16, desc: PXkbDescPtr
+): Status {.libx11c, importc: "XkbGetUpdatedMap".}
+
+proc XkbGetMapChanges*(
+  dpy: PDisplay, xkb: PXkbDescPtr, changes: PXkbMapChangesPtr
+): Status {.libx11c, importc: "XkbGetMapChanges".}
+
+proc XkbRefreshKeyboardMapping*(
+  event: PXkbMapNotifyEvent
+): Status {.libx11c, importc: "XkbRefreshKeyboardMapping".}
+
+proc XkbGetKeyTypes*(
+  dpy: PDisplay, first, num: int16, xkb: PXkbDescPtr
+): Status {.libx11c, importc: "XkbGetKeyTypes".}
+
+proc XkbGetKeySyms*(
+  dpy: PDisplay, first, num: int16, xkb: PXkbDescPtr
+): Status {.libx11c, importc: "XkbGetKeySyms".}
+
+proc XkbGetKeyActions*(
+  dpy: PDisplay, first, num: int16, xkb: PXkbDescPtr
+): Status {.libx11c, importc: "XkbGetKeyActions".}
+
+proc XkbGetKeyBehaviors*(
+  dpy: PDisplay, firstKey, nKeys: int16, desc: PXkbDescPtr
+): Status {.libx11c, importc: "XkbGetKeyBehaviors".}
+
+proc XkbGetVirtualMods*(
+  dpy: PDisplay, which: int16, desc: PXkbDescPtr
+): Status {.libx11c, importc: "XkbGetVirtualMods".}
+
+proc XkbGetKeyExplicitComponents*(
+  dpy: PDisplay, firstKey, nKeys: int16, desc: PXkbDescPtr
+): Status {.libx11c, importc: "XkbGetKeyExplicitComponents".}
+
+proc XkbGetKeyModifierMap*(
+  dpy: PDisplay, firstKey, nKeys: int16, desc: PXkbDescPtr
+): Status {.libx11c, importc: "XkbGetKeyModifierMap".}
+
+proc XkbAllocControls*(
+  xkb: PXkbDescPtr, which: int16
+): Status {.libx11c, importc: "XkbAllocControls".}
+
+proc XkbFreeControls*(
+  xkb: PXkbDescPtr, which: int16, freeMap: bool
+) {.libx11c, importc: "XkbFreeControls".}
+
+proc XkbGetControls*(
+  dpy: PDisplay, which: int32, desc: PXkbDescPtr
+): Status {.libx11c, importc: "XkbGetControls".}
+
+proc XkbSetControls*(
+  dpy: PDisplay, which: int32, desc: PXkbDescPtr
+): bool {.libx11c, importc: "XkbSetControls".}
+
+proc XkbNoteControlsChanges*(
+  old: PXkbControlsChangesPtr, new: PXkbControlsNotifyEvent, wanted: int16
+) {.libx11c, importc: "XkbNoteControlsChanges".}
+
+proc XkbGetControlsChanges*(
+  d: PDisplay, x: PXkbDescPtr, c: PXkbControlsChangesPtr
+): Status
+
 proc XkbChangeControls*(d: PDisplay, x: PXkbDescPtr, c: PXkbControlsChangesPtr): bool
-proc XkbAllocCompatMap*(xkb: PXkbDescPtr, which, nInterpret: int16): Status{.
-    libx11c, importc: "XkbAllocCompatMap".}
-proc XkbFreeCompatMap*(xkib: PXkbDescPtr, which: int16, freeMap: bool){.libx11c, importc: "XkbFreeCompatMap".}
-proc XkbGetCompatMap*(dpy: PDisplay, which: int16, xkb: PXkbDescPtr): Status{.
-    libx11c, importc: "XkbGetCompatMap".}
-proc XkbSetCompatMap*(dpy: PDisplay, which: int16, xkb: PXkbDescPtr,
-                      updateActions: bool): bool{.libx11c,
-    importc: "XkbSetCompatMap".}
-proc XkbAddSymInterpret*(xkb: PXkbDescPtr, si: PXkbSymInterpretPtr,
-                         updateMap: bool, changes: PXkbChangesPtr): PXkbSymInterpretPtr{.
-    libx11c, importc: "XkbAddSymInterpret".}
-proc XkbAllocNames*(xkb: PXkbDescPtr, which: int16,
-                    nTotalRG, nTotalAliases: int16): Status{.libx11c, importc: "XkbAllocNames".}
-proc XkbGetNames*(dpy: PDisplay, which: int16, desc: PXkbDescPtr): Status{.
-    libx11c, importc: "XkbGetNames".}
-proc XkbSetNames*(dpy: PDisplay, which, firstType, nTypes: int16,
-                  desc: PXkbDescPtr): bool{.libx11c,
-    importc: "XkbSetNames".}
-proc XkbChangeNames*(dpy: PDisplay, xkb: PXkbDescPtr,
-                     changes: PXkbNameChangesPtr): bool{.libx11c,
-    importc: "XkbChangeNames".}
-proc XkbFreeNames*(xkb: PXkbDescPtr, which: int16, freeMap: bool){.libx11c, importc: "XkbFreeNames".}
-proc XkbGetState*(dpy: PDisplay, deviceSpec: int16, rtrnState: PXkbStatePtr): Status{.
-    libx11c, importc: "XkbGetState".}
-proc XkbSetMap*(dpy: PDisplay, which: int16, desc: PXkbDescPtr): bool{.libx11c, importc: "XkbSetMap".}
-proc XkbChangeMap*(dpy: PDisplay, desc: PXkbDescPtr, changes: PXkbMapChangesPtr): bool{.
-    libx11c, importc: "XkbChangeMap".}
-proc XkbSetDetectableAutoRepeat*(dpy: PDisplay, detectable: bool,
-                                 supported: ptr bool): bool{.libx11c, importc: "XkbSetDetectableAutoRepeat".}
-proc XkbGetDetectableAutoRepeat*(dpy: PDisplay, supported: ptr bool): bool{.
-    libx11c, importc: "XkbGetDetectableAutoRepeat".}
-proc XkbSetAutoResetControls*(dpy: PDisplay, changes: int16,
-                              auto_ctrls, auto_values: PWord): bool{.libx11c, importc: "XkbSetAutoResetControls".}
-proc XkbGetAutoResetControls*(dpy: PDisplay, auto_ctrls, auto_ctrl_values: PWord): bool{.
-    libx11c, importc: "XkbGetAutoResetControls".}
-proc XkbSetPerClientControls*(dpy: PDisplay, change: int16, values: PWord): bool{.
-    libx11c, importc: "XkbSetPerClientControls".}
-proc XkbGetPerClientControls*(dpy: PDisplay, ctrls: PWord): bool{.libx11c, importc: "XkbGetPerClientControls".}
-proc XkbCopyKeyType*(`from`, into: PXkbKeyTypePtr): Status{.libx11c, importc: "XkbCopyKeyType".}
-proc XkbCopyKeyTypes*(`from`, into: PXkbKeyTypePtr, num_types: int16): Status{.
-    libx11c, importc: "XkbCopyKeyTypes".}
-proc XkbResizeKeyType*(xkb: PXkbDescPtr, type_ndx, map_count: int16,
-                       want_preserve: bool, new_num_lvls: int16): Status{.
-    libx11c, importc: "XkbResizeKeyType".}
-proc XkbResizeKeySyms*(desc: PXkbDescPtr, forKey, symsNeeded: int16): PKeySym{.
-    libx11c, importc: "XkbResizeKeySyms".}
-proc XkbResizeKeyActions*(desc: PXkbDescPtr, forKey, actsNeeded: int16): PXkbAction{.
-    libx11c, importc: "XkbResizeKeyActions".}
-proc XkbChangeTypesOfKey*(xkb: PXkbDescPtr, key, num_groups: int16,
-                          groups: int16, newTypes: ptr int16,
-                          pChanges: PXkbMapChangesPtr): Status{.libx11c, importc: "XkbChangeTypesOfKey".}
+proc XkbAllocCompatMap*(
+  xkb: PXkbDescPtr, which, nInterpret: int16
+): Status {.libx11c, importc: "XkbAllocCompatMap".}
+
+proc XkbFreeCompatMap*(
+  xkib: PXkbDescPtr, which: int16, freeMap: bool
+) {.libx11c, importc: "XkbFreeCompatMap".}
+
+proc XkbGetCompatMap*(
+  dpy: PDisplay, which: int16, xkb: PXkbDescPtr
+): Status {.libx11c, importc: "XkbGetCompatMap".}
+
+proc XkbSetCompatMap*(
+  dpy: PDisplay, which: int16, xkb: PXkbDescPtr, updateActions: bool
+): bool {.libx11c, importc: "XkbSetCompatMap".}
+
+proc XkbAddSymInterpret*(
+  xkb: PXkbDescPtr, si: PXkbSymInterpretPtr, updateMap: bool, changes: PXkbChangesPtr
+): PXkbSymInterpretPtr {.libx11c, importc: "XkbAddSymInterpret".}
+
+proc XkbAllocNames*(
+  xkb: PXkbDescPtr, which: int16, nTotalRG, nTotalAliases: int16
+): Status {.libx11c, importc: "XkbAllocNames".}
+
+proc XkbGetNames*(
+  dpy: PDisplay, which: int16, desc: PXkbDescPtr
+): Status {.libx11c, importc: "XkbGetNames".}
+
+proc XkbSetNames*(
+  dpy: PDisplay, which, firstType, nTypes: int16, desc: PXkbDescPtr
+): bool {.libx11c, importc: "XkbSetNames".}
+
+proc XkbChangeNames*(
+  dpy: PDisplay, xkb: PXkbDescPtr, changes: PXkbNameChangesPtr
+): bool {.libx11c, importc: "XkbChangeNames".}
+
+proc XkbFreeNames*(
+  xkb: PXkbDescPtr, which: int16, freeMap: bool
+) {.libx11c, importc: "XkbFreeNames".}
+
+proc XkbGetState*(
+  dpy: PDisplay, deviceSpec: int16, rtrnState: PXkbStatePtr
+): Status {.libx11c, importc: "XkbGetState".}
+
+proc XkbSetMap*(
+  dpy: PDisplay, which: int16, desc: PXkbDescPtr
+): bool {.libx11c, importc: "XkbSetMap".}
+
+proc XkbChangeMap*(
+  dpy: PDisplay, desc: PXkbDescPtr, changes: PXkbMapChangesPtr
+): bool {.libx11c, importc: "XkbChangeMap".}
+
+proc XkbSetDetectableAutoRepeat*(
+  dpy: PDisplay, detectable: bool, supported: ptr bool
+): bool {.libx11c, importc: "XkbSetDetectableAutoRepeat".}
+
+proc XkbGetDetectableAutoRepeat*(
+  dpy: PDisplay, supported: ptr bool
+): bool {.libx11c, importc: "XkbGetDetectableAutoRepeat".}
+
+proc XkbSetAutoResetControls*(
+  dpy: PDisplay, changes: int16, auto_ctrls, auto_values: PWord
+): bool {.libx11c, importc: "XkbSetAutoResetControls".}
+
+proc XkbGetAutoResetControls*(
+  dpy: PDisplay, auto_ctrls, auto_ctrl_values: PWord
+): bool {.libx11c, importc: "XkbGetAutoResetControls".}
+
+proc XkbSetPerClientControls*(
+  dpy: PDisplay, change: int16, values: PWord
+): bool {.libx11c, importc: "XkbSetPerClientControls".}
+
+proc XkbGetPerClientControls*(
+  dpy: PDisplay, ctrls: PWord
+): bool {.libx11c, importc: "XkbGetPerClientControls".}
+
+proc XkbCopyKeyType*(
+  `from`, into: PXkbKeyTypePtr
+): Status {.libx11c, importc: "XkbCopyKeyType".}
+
+proc XkbCopyKeyTypes*(
+  `from`, into: PXkbKeyTypePtr, num_types: int16
+): Status {.libx11c, importc: "XkbCopyKeyTypes".}
+
+proc XkbResizeKeyType*(
+  xkb: PXkbDescPtr, type_ndx, map_count: int16, want_preserve: bool, new_num_lvls: int16
+): Status {.libx11c, importc: "XkbResizeKeyType".}
+
+proc XkbResizeKeySyms*(
+  desc: PXkbDescPtr, forKey, symsNeeded: int16
+): PKeySym {.libx11c, importc: "XkbResizeKeySyms".}
+
+proc XkbResizeKeyActions*(
+  desc: PXkbDescPtr, forKey, actsNeeded: int16
+): PXkbAction {.libx11c, importc: "XkbResizeKeyActions".}
+
+proc XkbChangeTypesOfKey*(
+  xkb: PXkbDescPtr,
+  key, num_groups: int16,
+  groups: int16,
+  newTypes: ptr int16,
+  pChanges: PXkbMapChangesPtr,
+): Status {.libx11c, importc: "XkbChangeTypesOfKey".}
 
-proc XkbListComponents*(dpy: PDisplay, deviceSpec: int16,
-                        ptrns: PXkbComponentNamesPtr, max_inout: ptr int16): PXkbComponentListPtr{.
-    libx11c, importc: "XkbListComponents".}
-proc XkbFreeComponentList*(list: PXkbComponentListPtr){.libx11c,
-    importc: "XkbFreeComponentList".}
-proc XkbGetKeyboard*(dpy: PDisplay, which, deviceSpec: int16): PXkbDescPtr{.
-    libx11c, importc: "XkbGetKeyboard".}
-proc XkbGetKeyboardByName*(dpy: PDisplay, deviceSpec: int16,
-                           names: PXkbComponentNamesPtr, want, need: int16,
-                           load: bool): PXkbDescPtr{.libx11c,
-    importc: "XkbGetKeyboardByName".}
+proc XkbListComponents*(
+  dpy: PDisplay, deviceSpec: int16, ptrns: PXkbComponentNamesPtr, max_inout: ptr int16
+): PXkbComponentListPtr {.libx11c, importc: "XkbListComponents".}
+
+proc XkbFreeComponentList*(
+  list: PXkbComponentListPtr
+) {.libx11c, importc: "XkbFreeComponentList".}
+
+proc XkbGetKeyboard*(
+  dpy: PDisplay, which, deviceSpec: int16
+): PXkbDescPtr {.libx11c, importc: "XkbGetKeyboard".}
+
+proc XkbGetKeyboardByName*(
+  dpy: PDisplay,
+  deviceSpec: int16,
+  names: PXkbComponentNamesPtr,
+  want, need: int16,
+  load: bool,
+): PXkbDescPtr {.libx11c, importc: "XkbGetKeyboardByName".}
 
-proc XkbKeyTypesForCoreSymbols*(xkb: PXkbDescPtr,
-                                map_width: int16, # keyboard device
-                                core_syms: PKeySym, # always mapWidth symbols
-                                protected: int16, # explicit key types
-                                types_inout: ptr int16, # always four type indices
-                                xkb_syms_rtrn: PKeySym): int16{.libx11c, importc: "XkbKeyTypesForCoreSymbols".}
-  # must have enough space
-proc XkbApplyCompatMapToKey*(xkb: PXkbDescPtr,
-                             key: KeyCode, # key to be updated
-                             changes: PXkbChangesPtr): bool{.libx11c, importc: "XkbApplyCompatMapToKey".}
-  # resulting changes to map
-proc XkbUpdateMapFromCore*(xkb: PXkbDescPtr,
-                           first_key: KeyCode, # first changed key
-                           num_keys,
-                           map_width: int16,
-                           core_keysyms: PKeySym, # symbols `from` core keymap
-                           changes: PXkbChangesPtr): bool{.libx11c, importc: "XkbUpdateMapFromCore".}
+proc XkbKeyTypesForCoreSymbols*(
+  xkb: PXkbDescPtr,
+  map_width: int16, # keyboard device
+  core_syms: PKeySym, # always mapWidth symbols
+  protected: int16, # explicit key types
+  types_inout: ptr int16, # always four type indices
+  xkb_syms_rtrn: PKeySym,
+): int16 {.libx11c, importc: "XkbKeyTypesForCoreSymbols".} # must have enough space
+
+proc XkbApplyCompatMapToKey*(
+  xkb: PXkbDescPtr,
+  key: KeyCode, # key to be updated
+  changes: PXkbChangesPtr,
+): bool {.libx11c, importc: "XkbApplyCompatMapToKey".} # resulting changes to map
+
+proc XkbUpdateMapFromCore*(
+  xkb: PXkbDescPtr,
+  first_key: KeyCode, # first changed key
+  num_keys, map_width: int16,
+  core_keysyms: PKeySym, # symbols `from` core keymap
+  changes: PXkbChangesPtr,
+): bool {.libx11c, importc: "XkbUpdateMapFromCore".}
+
+proc XkbAddDeviceLedInfo*(
+  devi: PXkbDeviceInfoPtr, ledClass, ledId: int16
+): PXkbDeviceLedInfoPtr {.libx11c, importc: "XkbAddDeviceLedInfo".}
+
+proc XkbResizeDeviceButtonActions*(
+  devi: PXkbDeviceInfoPtr, newTotal: int16
+): Status {.libx11c, importc: "XkbResizeDeviceButtonActions".}
 
-proc XkbAddDeviceLedInfo*(devi: PXkbDeviceInfoPtr, ledClass, ledId: int16): PXkbDeviceLedInfoPtr{.
-    libx11c, importc: "XkbAddDeviceLedInfo".}
-proc XkbResizeDeviceButtonActions*(devi: PXkbDeviceInfoPtr, newTotal: int16): Status{.
-    libx11c, importc: "XkbResizeDeviceButtonActions".}
-proc XkbAllocDeviceInfo*(deviceSpec, nButtons, szLeds: int16): PXkbDeviceInfoPtr{.
-    libx11c, importc: "XkbAllocDeviceInfo".}
-proc XkbFreeDeviceInfo*(devi: PXkbDeviceInfoPtr, which: int16, freeDevI: bool){.
-    libx11c, importc: "XkbFreeDeviceInfo".}
-proc XkbNoteDeviceChanges*(old: PXkbDeviceChangesPtr,
-                           new: PXkbExtensionDeviceNotifyEvent, wanted: int16){.
-    libx11c, importc: "XkbNoteDeviceChanges".}
-proc XkbGetDeviceInfo*(dpy: PDisplay, which, deviceSpec, ledClass, ledID: int16): PXkbDeviceInfoPtr{.
-    libx11c, importc: "XkbGetDeviceInfo".}
-proc XkbGetDeviceInfoChanges*(dpy: PDisplay, devi: PXkbDeviceInfoPtr,
-                              changes: PXkbDeviceChangesPtr): Status{.libx11c, importc: "XkbGetDeviceInfoChanges".}
-proc XkbGetDeviceButtonActions*(dpy: PDisplay, devi: PXkbDeviceInfoPtr,
-                                all: bool, first, nBtns: int16): Status{.libx11c, importc: "XkbGetDeviceButtonActions".}
-proc XkbGetDeviceLedInfo*(dpy: PDisplay, devi: PXkbDeviceInfoPtr,
-                          ledClass, ledId, which: int16): Status{.libx11c, importc: "XkbGetDeviceLedInfo".}
-proc XkbSetDeviceInfo*(dpy: PDisplay, which: int16, devi: PXkbDeviceInfoPtr): bool{.
-    libx11c, importc: "XkbSetDeviceInfo".}
-proc XkbChangeDeviceInfo*(dpy: PDisplay, desc: PXkbDeviceInfoPtr,
-                          changes: PXkbDeviceChangesPtr): bool{.libx11c, importc: "XkbChangeDeviceInfo".}
-proc XkbSetDeviceLedInfo*(dpy: PDisplay, devi: PXkbDeviceInfoPtr,
-                          ledClass, ledID, which: int16): bool{.libx11c, importc: "XkbSetDeviceLedInfo".}
-proc XkbSetDeviceButtonActions*(dpy: PDisplay, devi: PXkbDeviceInfoPtr,
-                                first, nBtns: int16): bool{.libx11c, importc: "XkbSetDeviceButtonActions".}
+proc XkbAllocDeviceInfo*(
+  deviceSpec, nButtons, szLeds: int16
+): PXkbDeviceInfoPtr {.libx11c, importc: "XkbAllocDeviceInfo".}
+
+proc XkbFreeDeviceInfo*(
+  devi: PXkbDeviceInfoPtr, which: int16, freeDevI: bool
+) {.libx11c, importc: "XkbFreeDeviceInfo".}
+
+proc XkbNoteDeviceChanges*(
+  old: PXkbDeviceChangesPtr, new: PXkbExtensionDeviceNotifyEvent, wanted: int16
+) {.libx11c, importc: "XkbNoteDeviceChanges".}
+
+proc XkbGetDeviceInfo*(
+  dpy: PDisplay, which, deviceSpec, ledClass, ledID: int16
+): PXkbDeviceInfoPtr {.libx11c, importc: "XkbGetDeviceInfo".}
+
+proc XkbGetDeviceInfoChanges*(
+  dpy: PDisplay, devi: PXkbDeviceInfoPtr, changes: PXkbDeviceChangesPtr
+): Status {.libx11c, importc: "XkbGetDeviceInfoChanges".}
+
+proc XkbGetDeviceButtonActions*(
+  dpy: PDisplay, devi: PXkbDeviceInfoPtr, all: bool, first, nBtns: int16
+): Status {.libx11c, importc: "XkbGetDeviceButtonActions".}
+
+proc XkbGetDeviceLedInfo*(
+  dpy: PDisplay, devi: PXkbDeviceInfoPtr, ledClass, ledId, which: int16
+): Status {.libx11c, importc: "XkbGetDeviceLedInfo".}
 
-proc XkbToControl*(c: int8): int8{.libx11c,
-                                   importc: "XkbToControl".}
+proc XkbSetDeviceInfo*(
+  dpy: PDisplay, which: int16, devi: PXkbDeviceInfoPtr
+): bool {.libx11c, importc: "XkbSetDeviceInfo".}
+
+proc XkbChangeDeviceInfo*(
+  dpy: PDisplay, desc: PXkbDeviceInfoPtr, changes: PXkbDeviceChangesPtr
+): bool {.libx11c, importc: "XkbChangeDeviceInfo".}
+
+proc XkbSetDeviceLedInfo*(
+  dpy: PDisplay, devi: PXkbDeviceInfoPtr, ledClass, ledID, which: int16
+): bool {.libx11c, importc: "XkbSetDeviceLedInfo".}
 
-proc XkbSetDebuggingFlags*(dpy: PDisplay, mask, flags: int16, msg: cstring,
-                           ctrls_mask, ctrls, rtrn_flags, rtrn_ctrls: int16): bool{.
-    libx11c, importc: "XkbSetDebuggingFlags".}
-proc XkbApplyVirtualModChanges*(xkb: PXkbDescPtr, changed: int16,
-                                changes: PXkbChangesPtr): bool{.libx11c, importc: "XkbApplyVirtualModChanges".}
+proc XkbSetDeviceButtonActions*(
+  dpy: PDisplay, devi: PXkbDeviceInfoPtr, first, nBtns: int16
+): bool {.libx11c, importc: "XkbSetDeviceButtonActions".}
+
+proc XkbToControl*(c: int8): int8 {.libx11c, importc: "XkbToControl".}
+
+proc XkbSetDebuggingFlags*(
+  dpy: PDisplay,
+  mask, flags: int16,
+  msg: cstring,
+  ctrls_mask, ctrls, rtrn_flags, rtrn_ctrls: int16,
+): bool {.libx11c, importc: "XkbSetDebuggingFlags".}
+
+proc XkbApplyVirtualModChanges*(
+  xkb: PXkbDescPtr, changed: int16, changes: PXkbChangesPtr
+): bool {.libx11c, importc: "XkbApplyVirtualModChanges".}
 
 # implementation
 
@@ -641,18 +874,21 @@
   ##define XkbNoteIndicatorStateChanges(o,n,w) ((o)->state_changes|=((n)->state_changes&(w)))
   o.state_changes = o.state_changes or (n.state_changes and (w))
 
-proc XkbGetIndicatorMapChanges(d: PDisplay, x: PXkbDescPtr,
-                               c: PXkbIndicatorChangesPtr): Status =
+proc XkbGetIndicatorMapChanges(
+    d: PDisplay, x: PXkbDescPtr, c: PXkbIndicatorChangesPtr
+): Status =
   ##define XkbGetIndicatorMapChanges(d,x,c) (XkbGetIndicatorMap((d),(c)->map_changes,x)
   result = XkbGetIndicatorMap(d, c.map_changes, x)
 
-proc XkbChangeIndicatorMaps(d: PDisplay, x: PXkbDescPtr,
-                            c: PXkbIndicatorChangesPtr): bool =
+proc XkbChangeIndicatorMaps(
+    d: PDisplay, x: PXkbDescPtr, c: PXkbIndicatorChangesPtr
+): bool =
   ##define XkbChangeIndicatorMaps(d,x,c) (XkbSetIndicatorMap((d),(c)->map_changes,x))
   result = XkbSetIndicatorMap(d, c.map_changes, x)
 
-proc XkbGetControlsChanges(d: PDisplay, x: PXkbDescPtr,
-                           c: PXkbControlsChangesPtr): Status =
+proc XkbGetControlsChanges(
+    d: PDisplay, x: PXkbDescPtr, c: PXkbControlsChangesPtr
+): Status =
   ##define XkbGetControlsChanges(d,x,c) XkbGetControls(d,(c)->changed_ctrls,x)
   result = XkbGetControls(d, c.changed_ctrls, x)
 
--- a/semicongine/thirdparty/x11/xlib.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xlib.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,6 +1,4 @@
-
-import
-  x
+import x
 
 include "x11pragma.nim"
 
@@ -16,6 +14,7 @@
   Pcuchar* = cstring
   Pcuint* = ptr cuint
   Pcushort* = ptr uint16
+
 #  Automatically converted by H2Pas 0.99.15 from xlib.h
 #  The following command line parameters were used:
 #    -p
@@ -25,8 +24,7 @@
 #    -c
 #    xlib.h
 
-const
-  XlibSpecificationRelease* = 6
+const XlibSpecificationRelease* = 6
 
 type
   PXPointer* = ptr XPointer
@@ -44,27 +42,27 @@
 type
   PPXExtData* = ptr PXExtData
   PXExtData* = ptr XExtData
-  XExtData*{.final.} = object
+  XExtData* {.final.} = object
     number*: cint
     next*: PXExtData
-    free_private*: proc (extension: PXExtData): cint{.cdecl.}
+    free_private*: proc(extension: PXExtData): cint {.cdecl.}
     private_data*: XPointer
 
   PXExtCodes* = ptr XExtCodes
-  XExtCodes*{.final.} = object
+  XExtCodes* {.final.} = object
     extension*: cint
     major_opcode*: cint
     first_event*: cint
     first_error*: cint
 
   PXPixmapFormatValues* = ptr XPixmapFormatValues
-  XPixmapFormatValues*{.final.} = object
+  XPixmapFormatValues* {.final.} = object
     depth*: cint
     bits_per_pixel*: cint
     scanline_pad*: cint
 
   PXGCValues* = ptr XGCValues
-  XGCValues*{.final.} = object
+  XGCValues* {.final.} = object
     function*: cint
     plane_mask*: culong
     foreground*: culong
@@ -90,11 +88,11 @@
     dashes*: cchar
 
   PXGC* = ptr XGC
-  XGC*{.final.} = object
+  XGC* {.final.} = object
   GC* = PXGC
   PGC* = ptr GC
   PVisual* = ptr Visual
-  Visual*{.final.} = object
+  Visual* {.final.} = object
     ext_data*: PXExtData
     visualid*: VisualID
     c_class*: cint
@@ -103,16 +101,16 @@
     map_entries*: cint
 
   PDepth* = ptr Depth
-  Depth*{.final.} = object
+  Depth* {.final.} = object
     depth*: cint
     nvisuals*: cint
     visuals*: PVisual
 
   PXDisplay* = ptr XDisplay
-  XDisplay*{.final.} = object
+  XDisplay* {.final.} = object
 
   PScreen* = ptr Screen
-  Screen*{.final.} = object
+  Screen* {.final.} = object
     ext_data*: PXExtData
     display*: PXDisplay
     root*: Window
@@ -132,14 +130,14 @@
     root_input_mask*: clong
 
   PScreenFormat* = ptr ScreenFormat
-  ScreenFormat*{.final.} = object
+  ScreenFormat* {.final.} = object
     ext_data*: PXExtData
     depth*: cint
     bits_per_pixel*: cint
     scanline_pad*: cint
 
   PXSetWindowAttributes* = ptr XSetWindowAttributes
-  XSetWindowAttributes*{.final.} = object
+  XSetWindowAttributes* {.final.} = object
     background_pixmap*: Pixmap
     background_pixel*: culong
     border_pixmap*: Pixmap
@@ -157,7 +155,7 @@
     cursor*: Cursor
 
   PXWindowAttributes* = ptr XWindowAttributes
-  XWindowAttributes*{.final.} = object
+  XWindowAttributes* {.final.} = object
     x*, y*: cint
     width*, height*: cint
     border_width*: cint
@@ -181,33 +179,42 @@
     screen*: PScreen
 
   PXHostAddress* = ptr XHostAddress
-  XHostAddress*{.final.} = object
+  XHostAddress* {.final.} = object
     family*: cint
     len*: cint
     address*: cstring
 
   PXServerInterpretedAddress* = ptr XServerInterpretedAddress
-  XServerInterpretedAddress*{.final.} = object
+  XServerInterpretedAddress* {.final.} = object
     typelength*: cint
     valuelength*: cint
     theType*: cstring
     value*: cstring
 
   PXImage* = ptr XImage
-  F*{.final.} = object
-    create_image*: proc (para1: PXDisplay, para2: PVisual, para3: cuint,
-                         para4: cint, para5: cint, para6: cstring, para7: cuint,
-                         para8: cuint, para9: cint, para10: cint): PXImage{.
-        cdecl.}
-    destroy_image*: proc (para1: PXImage): cint{.cdecl.}
-    get_pixel*: proc (para1: PXImage, para2: cint, para3: cint): culong{.cdecl.}
-    put_pixel*: proc (para1: PXImage, para2: cint, para3: cint, para4: culong): cint{.
-        cdecl.}
-    sub_image*: proc (para1: PXImage, para2: cint, para3: cint, para4: cuint,
-                      para5: cuint): PXImage{.cdecl.}
-    add_pixel*: proc (para1: PXImage, para2: clong): cint{.cdecl.}
+  F* {.final.} = object
+    create_image*: proc(
+      para1: PXDisplay,
+      para2: PVisual,
+      para3: cuint,
+      para4: cint,
+      para5: cint,
+      para6: cstring,
+      para7: cuint,
+      para8: cuint,
+      para9: cint,
+      para10: cint,
+    ): PXImage {.cdecl.}
+    destroy_image*: proc(para1: PXImage): cint {.cdecl.}
+    get_pixel*: proc(para1: PXImage, para2: cint, para3: cint): culong {.cdecl.}
+    put_pixel*:
+      proc(para1: PXImage, para2: cint, para3: cint, para4: culong): cint {.cdecl.}
+    sub_image*: proc(
+      para1: PXImage, para2: cint, para3: cint, para4: cuint, para5: cuint
+    ): PXImage {.cdecl.}
+    add_pixel*: proc(para1: PXImage, para2: clong): cint {.cdecl.}
 
-  XImage*{.final.} = object
+  XImage* {.final.} = object
     width*, height*: cint
     xoffset*: cint
     format*: cint
@@ -226,7 +233,7 @@
     f*: F
 
   PXWindowChanges* = ptr XWindowChanges
-  XWindowChanges*{.final.} = object
+  XWindowChanges* {.final.} = object
     x*, y*: cint
     width*, height*: cint
     border_width*: cint
@@ -234,33 +241,33 @@
     stack_mode*: cint
 
   PXColor* = ptr XColor
-  XColor*{.final.} = object
+  XColor* {.final.} = object
     pixel*: culong
     red*, green*, blue*: cushort
     flags*: cchar
     pad*: cchar
 
   PXSegment* = ptr XSegment
-  XSegment*{.final.} = object
+  XSegment* {.final.} = object
     x1*, y1*, x2*, y2*: cshort
 
   PXPoint* = ptr XPoint
-  XPoint*{.final.} = object
+  XPoint* {.final.} = object
     x*, y*: cshort
 
   PXRectangle* = ptr XRectangle
-  XRectangle*{.final.} = object
+  XRectangle* {.final.} = object
     x*, y*: cshort
     width*, height*: cushort
 
   PXArc* = ptr XArc
-  XArc*{.final.} = object
+  XArc* {.final.} = object
     x*, y*: cshort
     width*, height*: cushort
     angle1*, angle2*: cshort
 
   PXKeyboardControl* = ptr XKeyboardControl
-  XKeyboardControl*{.final.} = object
+  XKeyboardControl* {.final.} = object
     key_click_percent*: cint
     bell_percent*: cint
     bell_pitch*: cint
@@ -271,21 +278,21 @@
     auto_repeat_mode*: cint
 
   PXKeyboardState* = ptr XKeyboardState
-  XKeyboardState*{.final.} = object
+  XKeyboardState* {.final.} = object
     key_click_percent*: cint
     bell_percent*: cint
     bell_pitch*, bell_duration*: cuint
     led_mask*: culong
     global_auto_repeat*: cint
-    auto_repeats*: array[0..31, cchar]
+    auto_repeats*: array[0 .. 31, cchar]
 
   PXTimeCoord* = ptr XTimeCoord
-  XTimeCoord*{.final.} = object
+  XTimeCoord* {.final.} = object
     time*: Time
     x*, y*: cshort
 
   PXModifierKeymap* = ptr XModifierKeymap
-  XModifierKeymap*{.final.} = object
+  XModifierKeymap* {.final.} = object
     max_keypermod*: cint
     modifiermap*: PKeyCode
 
@@ -293,13 +300,13 @@
   Display* = XDisplay
 
   PXPrivate* = ptr Private
-  Private*{.final.} = object
+  Private* {.final.} = object
 
   PXrmHashBucketRec* = ptr XrmHashBucketRec
-  XrmHashBucketRec*{.final.} = object
+  XrmHashBucketRec* {.final.} = object
 
   PXPrivDisplay* = ptr XPrivDisplay
-  XPrivDisplay*{.final.} = object
+  XPrivDisplay* {.final.} = object
     ext_data*: PXExtData
     private1*: PXPrivate
     fd*: cint
@@ -311,7 +318,7 @@
     private4*: XID
     private5*: XID
     private6*: cint
-    resource_alloc*: proc (para1: PXDisplay): XID{.cdecl.}
+    resource_alloc*: proc(para1: PXDisplay): XID {.cdecl.}
     byte_order*: cint
     bitmap_unit*: cint
     bitmap_pad*: cint
@@ -330,7 +337,7 @@
     private14*: XPointer
     max_request_size*: cunsigned
     db*: PXrmHashBucketRec
-    private15*: proc (para1: PXDisplay): cint{.cdecl.}
+    private15*: proc(para1: PXDisplay): cint {.cdecl.}
     display_name*: cstring
     default_screen*: cint
     nscreens*: cint
@@ -345,7 +352,7 @@
     xdefaults*: cstring
 
   PXKeyEvent* = ptr XKeyEvent
-  XKeyEvent*{.final.} = object
+  XKeyEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -367,7 +374,7 @@
   XKeyReleasedEvent* = XKeyEvent
 
   PXButtonEvent* = ptr XButtonEvent
-  XButtonEvent*{.final.} = object
+  XButtonEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -389,7 +396,7 @@
   XButtonReleasedEvent* = XButtonEvent
 
   PXMotionEvent* = ptr XMotionEvent
-  XMotionEvent*{.final.} = object
+  XMotionEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -408,7 +415,7 @@
   XPointerMovedEvent* = XMotionEvent
 
   PXCrossingEvent* = ptr XCrossingEvent
-  XCrossingEvent*{.final.} = object
+  XCrossingEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -432,7 +439,7 @@
   XLeaveWindowEvent* = XCrossingEvent
 
   PXFocusChangeEvent* = ptr XFocusChangeEvent
-  XFocusChangeEvent*{.final.} = object
+  XFocusChangeEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -448,16 +455,16 @@
   XFocusOutEvent* = XFocusChangeEvent
 
   PXKeymapEvent* = ptr XKeymapEvent
-  XKeymapEvent*{.final.} = object
+  XKeymapEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
     display*: PDisplay
     window*: Window
-    key_vector*: array[0..31, cchar]
+    key_vector*: array[0 .. 31, cchar]
 
   PXExposeEvent* = ptr XExposeEvent
-  XExposeEvent*{.final.} = object
+  XExposeEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -468,7 +475,7 @@
     count*: cint
 
   PXGraphicsExposeEvent* = ptr XGraphicsExposeEvent
-  XGraphicsExposeEvent*{.final.} = object
+  XGraphicsExposeEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -481,7 +488,7 @@
     minor_code*: cint
 
   PXNoExposeEvent* = ptr XNoExposeEvent
-  XNoExposeEvent*{.final.} = object
+  XNoExposeEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -491,7 +498,7 @@
     minor_code*: cint
 
   PXVisibilityEvent* = ptr XVisibilityEvent
-  XVisibilityEvent*{.final.} = object
+  XVisibilityEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -500,7 +507,7 @@
     state*: cint
 
   PXCreateWindowEvent* = ptr XCreateWindowEvent
-  XCreateWindowEvent*{.final.} = object
+  XCreateWindowEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -513,7 +520,7 @@
     override_redirect*: XBool
 
   PXDestroyWindowEvent* = ptr XDestroyWindowEvent
-  XDestroyWindowEvent*{.final.} = object
+  XDestroyWindowEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -522,7 +529,7 @@
     window*: Window
 
   PXUnmapEvent* = ptr XUnmapEvent
-  XUnmapEvent*{.final.} = object
+  XUnmapEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -532,7 +539,7 @@
     from_configure*: XBool
 
   PXMapEvent* = ptr XMapEvent
-  XMapEvent*{.final.} = object
+  XMapEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -542,7 +549,7 @@
     override_redirect*: XBool
 
   PXMapRequestEvent* = ptr XMapRequestEvent
-  XMapRequestEvent*{.final.} = object
+  XMapRequestEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -551,7 +558,7 @@
     window*: Window
 
   PXReparentEvent* = ptr XReparentEvent
-  XReparentEvent*{.final.} = object
+  XReparentEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -563,7 +570,7 @@
     override_redirect*: XBool
 
   PXConfigureEvent* = ptr XConfigureEvent
-  XConfigureEvent*{.final.} = object
+  XConfigureEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -577,7 +584,7 @@
     override_redirect*: XBool
 
   PXGravityEvent* = ptr XGravityEvent
-  XGravityEvent*{.final.} = object
+  XGravityEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -587,7 +594,7 @@
     x*, y*: cint
 
   PXResizeRequestEvent* = ptr XResizeRequestEvent
-  XResizeRequestEvent*{.final.} = object
+  XResizeRequestEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -596,7 +603,7 @@
     width*, height*: cint
 
   PXConfigureRequestEvent* = ptr XConfigureRequestEvent
-  XConfigureRequestEvent*{.final.} = object
+  XConfigureRequestEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -611,7 +618,7 @@
     value_mask*: culong
 
   PXCirculateEvent* = ptr XCirculateEvent
-  XCirculateEvent*{.final.} = object
+  XCirculateEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -621,7 +628,7 @@
     place*: cint
 
   PXCirculateRequestEvent* = ptr XCirculateRequestEvent
-  XCirculateRequestEvent*{.final.} = object
+  XCirculateRequestEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -631,7 +638,7 @@
     place*: cint
 
   PXPropertyEvent* = ptr XPropertyEvent
-  XPropertyEvent*{.final.} = object
+  XPropertyEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -642,7 +649,7 @@
     state*: cint
 
   PXSelectionClearEvent* = ptr XSelectionClearEvent
-  XSelectionClearEvent*{.final.} = object
+  XSelectionClearEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -652,7 +659,7 @@
     time*: Time
 
   PXSelectionRequestEvent* = ptr XSelectionRequestEvent
-  XSelectionRequestEvent*{.final.} = object
+  XSelectionRequestEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -665,7 +672,7 @@
     time*: Time
 
   PXSelectionEvent* = ptr XSelectionEvent
-  XSelectionEvent*{.final.} = object
+  XSelectionEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -677,7 +684,7 @@
     time*: Time
 
   PXColormapEvent* = ptr XColormapEvent
-  XColormapEvent*{.final.} = object
+  XColormapEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -694,7 +701,7 @@
     s*: array[10, cshort]
     l*: array[5, clong]
 
-  XClientMessageEvent*{.final.} = object
+  XClientMessageEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -705,7 +712,7 @@
     data*: XClientMessageData
 
   PXMappingEvent* = ptr XMappingEvent
-  XMappingEvent*{.final.} = object
+  XMappingEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -716,7 +723,7 @@
     count*: cint
 
   PXErrorEvent* = ptr XErrorEvent
-  XErrorEvent*{.final.} = object
+  XErrorEvent* {.final.} = object
     theType*: cint
     display*: PDisplay
     resourceid*: XID
@@ -726,7 +733,7 @@
     minor_code*: char
 
   PXAnyEvent* = ptr XAnyEvent
-  XAnyEvent*{.final.} = object
+  XAnyEvent* {.final.} = object
     theType*: cint
     serial*: culong
     send_event*: XBool
@@ -734,27 +741,27 @@
     window*: Window
 
   PXGenericEvent* = ptr XGenericEvent
-  XGenericEvent*{.final.} = object
-    theType*: cint     ##  of event. Always GenericEvent
-    serial*: culong    ##  # of last request processed
+  XGenericEvent* {.final.} = object
+    theType*: cint ##  of event. Always GenericEvent
+    serial*: culong ##  # of last request processed
     send_event*: XBool ##  true if from SendEvent request
     display*: PDisplay ##  Display the event was read from
-    extension*: cint   ##  major opcode of extension that caused the event
-    evtype*: cint      ##  actual event type.
+    extension*: cint ##  major opcode of extension that caused the event
+    evtype*: cint ##  actual event type.
 
   PXGenericEventCookie* = ptr XGenericEventCookie
-  XGenericEventCookie*{.final.} = object
-    theType*: cint     ##  of event. Always GenericEvent
-    serial*: culong    ##  # of last request processed
+  XGenericEventCookie* {.final.} = object
+    theType*: cint ##  of event. Always GenericEvent
+    serial*: culong ##  # of last request processed
     send_event*: XBool ##  true if from SendEvent request
     display*: PDisplay ##  Display the event was read from
-    extension*: cint   ##  major opcode of extension that caused the event
-    evtype*: cint      ##  actual event type.
+    extension*: cint ##  major opcode of extension that caused the event
+    evtype*: cint ##  actual event type.
     cookie*: cuint
     data*: pointer
 
   PXEvent* = ptr XEvent
-  XEvent*{.final, union.} = object
+  XEvent* {.final, union.} = object
     theType*: cint
     xany*: XAnyEvent
     xkey*: XKeyEvent
@@ -789,12 +796,11 @@
     xkeymap*: XKeymapEvent
     xgeneric*: XGenericEvent
     xcookie*: XGenericEventCookie
-    pad: array[0..23, clong]
-
+    pad: array[0 .. 23, clong]
 
 type
   PXCharStruct* = ptr XCharStruct
-  XCharStruct*{.final.} = object
+  XCharStruct* {.final.} = object
     lbearing*: cshort
     rbearing*: cshort
     width*: cshort
@@ -803,14 +809,14 @@
     attributes*: cushort
 
   PXFontProp* = ptr XFontProp
-  XFontProp*{.final.} = object
+  XFontProp* {.final.} = object
     name*: Atom
     card32*: culong
 
   PPPXFontStruct* = ptr PPXFontStruct
   PPXFontStruct* = ptr PXFontStruct
   PXFontStruct* = ptr XFontStruct
-  XFontStruct*{.final.} = object
+  XFontStruct* {.final.} = object
     ext_data*: PXExtData
     fid*: Font
     direction*: cunsigned
@@ -829,57 +835,58 @@
     descent*: cint
 
   PXTextItem* = ptr XTextItem
-  XTextItem*{.final.} = object
+  XTextItem* {.final.} = object
     chars*: cstring
     nchars*: cint
     delta*: cint
     font*: Font
 
   PXChar2b* = ptr XChar2b
-  XChar2b*{.final.} = object
+  XChar2b* {.final.} = object
     byte1*: char
     byte2*: char
 
   PXTextItem16* = ptr XTextItem16
-  XTextItem16*{.final.} = object
+  XTextItem16* {.final.} = object
     chars*: PXChar2b
     nchars*: cint
     delta*: cint
     font*: Font
 
   PXEDataObject* = ptr XEDataObject
-  XEDataObject*{.final.} = object
-    display*: PDisplay # case longint of
-                       #          0 : ( display : PDisplay );
-                       #          1 : ( gc : GC );
-                       #          2 : ( visual : PVisual );
-                       #          3 : ( screen : PScreen );
-                       #          4 : ( pixmap_format : PScreenFormat );
-                       #          5 : ( font : PXFontStruct );
+  XEDataObject* {.final.} = object
+    display*: PDisplay
+      # case longint of
+      #          0 : ( display : PDisplay );
+      #          1 : ( gc : GC );
+      #          2 : ( visual : PVisual );
+      #          3 : ( screen : PScreen );
+      #          4 : ( pixmap_format : PScreenFormat );
+      #          5 : ( font : PXFontStruct );
 
   PXFontSetExtents* = ptr XFontSetExtents
-  XFontSetExtents*{.final.} = object
+  XFontSetExtents* {.final.} = object
     max_ink_extent*: XRectangle
     max_logical_extent*: XRectangle
 
   PXOM* = ptr XOM
-  XOM*{.final.} = object
+  XOM* {.final.} = object
 
   PXOC* = ptr XOC
-  XOC*{.final.} = object
+  XOC* {.final.} = object
 
   PXFontSet* = ptr XFontSet
   XFontSet* = PXOC
 
   PXmbTextItem* = ptr XmbTextItem
-  XmbTextItem*{.final.} = object
+  XmbTextItem* {.final.} = object
     chars*: cstring
     nchars*: cint
     delta*: cint
     font_set*: XFontSet
 
   PXwcTextItem* = ptr XwcTextItem
-  XwcTextItem*{.final.} = object
+  XwcTextItem* {.final.} = object
     chars*: PWideChar #wchar_t*
     nchars*: cint
     delta*: cint
@@ -899,42 +906,44 @@
 
 type
   PXOMCharSetList* = ptr XOMCharSetList
-  XOMCharSetList*{.final.} = object
+  XOMCharSetList* {.final.} = object
     charset_count*: cint
     charset_list*: PPChar
 
   PXOrientation* = ptr XOrientation
   XOrientation* = enum
-    XOMOrientation_LTR_TTB, XOMOrientation_RTL_TTB, XOMOrientation_TTB_LTR,
-    XOMOrientation_TTB_RTL, XOMOrientation_Context
+    XOMOrientation_LTR_TTB
+    XOMOrientation_RTL_TTB
+    XOMOrientation_TTB_LTR
+    XOMOrientation_TTB_RTL
+    XOMOrientation_Context
 
   PXOMOrientation* = ptr XOMOrientation
-  XOMOrientation*{.final.} = object
+  XOMOrientation* {.final.} = object
     num_orientation*: cint
     orientation*: PXOrientation
 
   PXOMFontInfo* = ptr XOMFontInfo
-  XOMFontInfo*{.final.} = object
+  XOMFontInfo* {.final.} = object
     num_font*: cint
     font_struct_list*: ptr PXFontStruct
     font_name_list*: PPChar
 
-  XIM*{.final.} = ptr object
+  XIM* {.final.} = ptr object
 
-  XIC*{.final.} = ptr object
+  XIC* {.final.} = ptr object
 
-  XIMProc* = proc (para1: XIM, para2: XPointer, para3: XPointer){.cdecl.}
+  XIMProc* = proc(para1: XIM, para2: XPointer, para3: XPointer) {.cdecl.}
 
-  XICProc* = proc (para1: XIC, para2: XPointer, para3: XPointer): XBool{.
-      cdecl.}
+  XICProc* = proc(para1: XIC, para2: XPointer, para3: XPointer): XBool {.cdecl.}
 
-  XIDProc* = proc (para1: PDisplay, para2: XPointer, para3: XPointer){.cdecl.}
+  XIDProc* = proc(para1: PDisplay, para2: XPointer, para3: XPointer) {.cdecl.}
 
   PXIMStyle* = ptr XIMStyle
   XIMStyle* = culong
 
   PXIMStyles* = ptr XIMStyles
-  XIMStyles*{.final.} = object
+  XIMStyles* {.final.} = object
     count_styles*: cushort
     supported_styles*: PXIMStyle
 
@@ -990,7 +999,7 @@
   XNHotKeyState* = "hotKeyState"
   XNPreeditState* = "preeditState"
   XNSeparatorofNestedList* = "separatorofNestedList"
-  XBufferOverflow* = - (1)
+  XBufferOverflow* = -(1)
   XLookupNone* = 1
   XLookupChars* = 2
   XLookupKeySymVal* = 3
@@ -1001,12 +1010,12 @@
   XVaNestedList* = pointer
 
   PXIMCallback* = ptr XIMCallback
-  XIMCallback*{.final.} = object
+  XIMCallback* {.final.} = object
     client_data*: XPointer
     callback*: XIMProc
 
   PXICCallback* = ptr XICCallback
-  XICCallback*{.final.} = object
+  XICCallback* {.final.} = object
     client_data*: XPointer
     callback*: XICProc
 
@@ -1026,7 +1035,7 @@
 
 type
   PXIMText* = ptr XIMText
-  XIMText*{.final.} = object
+  XIMText* {.final.} = object
     len*: cushort
     feedback*: PXIMFeedback
     encoding_is_wchar*: XBool
@@ -1042,7 +1051,7 @@
 
 type
   PXIMPreeditStateNotifyCallbackStruct* = ptr XIMPreeditStateNotifyCallbackStruct
-  XIMPreeditStateNotifyCallbackStruct*{.final.} = object
+  XIMPreeditStateNotifyCallbackStruct* {.final.} = object
     state*: XIMPreeditState
 
   PXIMResetState* = ptr XIMResetState
@@ -1066,7 +1075,7 @@
 
 type
   PXIMStringConversionText* = ptr XIMStringConversionText
-  XIMStringConversionText*{.final.} = object
+  XIMStringConversionText* {.final.} = object
     len*: cushort
     feedback*: PXIMStringConversionFeedback
     encoding_is_wchar*: XBool
@@ -1095,12 +1104,21 @@
 type
   PXIMCaretDirection* = ptr XIMCaretDirection
   XIMCaretDirection* = enum
-    XIMForwardChar, XIMBackwardChar, XIMForwardWord, XIMBackwardWord,
-    XIMCaretUp, XIMCaretDown, XIMNextLine, XIMPreviousLine, XIMLineStart,
-    XIMLineEnd, XIMAbsolutePosition, XIMDontChange
+    XIMForwardChar
+    XIMBackwardChar
+    XIMForwardWord
+    XIMBackwardWord
+    XIMCaretUp
+    XIMCaretDown
+    XIMNextLine
+    XIMPreviousLine
+    XIMLineStart
+    XIMLineEnd
+    XIMAbsolutePosition
+    XIMDontChange
 
   PXIMStringConversionCallbackStruct* = ptr XIMStringConversionCallbackStruct
-  XIMStringConversionCallbackStruct*{.final.} = object
+  XIMStringConversionCallbackStruct* {.final.} = object
     position*: XIMStringConversionPosition
     direction*: XIMCaretDirection
     operation*: XIMStringConversionOperation
@@ -1108,7 +1126,7 @@
     text*: PXIMStringConversionText
 
   PXIMPreeditDrawCallbackStruct* = ptr XIMPreeditDrawCallbackStruct
-  XIMPreeditDrawCallbackStruct*{.final.} = object
+  XIMPreeditDrawCallbackStruct* {.final.} = object
     caret*: cint
     chg_first*: cint
     chg_length*: cint
@@ -1116,31 +1134,34 @@
 
   PXIMCaretStyle* = ptr XIMCaretStyle
   XIMCaretStyle* = enum
-    XIMIsInvisible, XIMIsPrimary, XIMIsSecondary
+    XIMIsInvisible
+    XIMIsPrimary
+    XIMIsSecondary
 
   PXIMPreeditCaretCallbackStruct* = ptr XIMPreeditCaretCallbackStruct
-  XIMPreeditCaretCallbackStruct*{.final.} = object
+  XIMPreeditCaretCallbackStruct* {.final.} = object
     position*: cint
     direction*: XIMCaretDirection
     style*: XIMCaretStyle
 
   PXIMStatusDataType* = ptr XIMStatusDataType
   XIMStatusDataType* = enum
-    XIMTextType, XIMBitmapType
+    XIMTextType
+    XIMBitmapType
 
   PXIMStatusDrawCallbackStruct* = ptr XIMStatusDrawCallbackStruct
-  XIMStatusDrawCallbackStruct*{.final.} = object
+  XIMStatusDrawCallbackStruct* {.final.} = object
     theType*: XIMStatusDataType
     bitmap*: Pixmap
 
   PXIMHotKeyTrigger* = ptr XIMHotKeyTrigger
-  XIMHotKeyTrigger*{.final.} = object
+  XIMHotKeyTrigger* {.final.} = object
     keysym*: KeySym
     modifier*: cint
     modifier_mask*: cint
 
   PXIMHotKeyTriggers* = ptr XIMHotKeyTriggers
-  XIMHotKeyTriggers*{.final.} = object
+  XIMHotKeyTriggers* {.final.} = object
     num_hot_key*: cint
     key*: PXIMHotKeyTrigger
 
@@ -1153,705 +1174,1392 @@
 
 type
   PXIMValuesList* = ptr XIMValuesList
-  XIMValuesList*{.final.} = object
+  XIMValuesList* {.final.} = object
     count_values*: cushort
     supported_values*: PPChar
 
+type
+  funcdisp* = proc(display: PDisplay): cint {.cdecl.}
+  funcifevent* = proc(display: PDisplay, event: PXEvent, p: XPointer): XBool {.cdecl.}
+  chararr32* = array[0 .. 31, char]
 
-type
-  funcdisp* = proc (display: PDisplay): cint{.cdecl.}
-  funcifevent* = proc (display: PDisplay, event: PXEvent, p: XPointer): XBool{.
-      cdecl.}
-  chararr32* = array[0..31, char]
+const AllPlanes*: culong = not culong(0)
+
+proc XLoadQueryFont*(para1: PDisplay, para2: cstring): PXFontStruct {.libx11.}
+proc XQueryFont*(para1: PDisplay, para2: XID): PXFontStruct {.libx11.}
+proc XGetMotionEvents*(
+  para1: PDisplay, para2: Window, para3: Time, para4: Time, para5: Pcint
+): PXTimeCoord {.libx11.}
+
+proc XDeleteModifiermapEntry*(
+  para1: PXModifierKeymap, para2: KeyCode, para3: cint
+): PXModifierKeymap {.libx11.}
+
+proc XGetModifierMapping*(para1: PDisplay): PXModifierKeymap {.libx11.}
+proc XInsertModifiermapEntry*(
+  para1: PXModifierKeymap, para2: KeyCode, para3: cint
+): PXModifierKeymap {.libx11.}
+
+proc XNewModifiermap*(para1: cint): PXModifierKeymap {.libx11.}
+proc XCreateImage*(
+  para1: PDisplay,
+  para2: PVisual,
+  para3: cuint,
+  para4: cint,
+  para5: cint,
+  para6: cstring,
+  para7: cuint,
+  para8: cuint,
+  para9: cint,
+  para10: cint,
+): PXImage {.libx11.}
+
+proc XInitImage*(para1: PXImage): Status {.libx11.}
+proc XGetImage*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: cint,
+  para4: cint,
+  para5: cuint,
+  para6: cuint,
+  para7: culong,
+  para8: cint,
+): PXImage {.libx11.}
+
+proc XGetSubImage*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: cint,
+  para4: cint,
+  para5: cuint,
+  para6: cuint,
+  para7: culong,
+  para8: cint,
+  para9: PXImage,
+  para10: cint,
+  para11: cint,
+): PXImage {.libx11.}
+
+proc XOpenDisplay*(para1: cstring): PDisplay {.libx11.}
+proc XrmInitialize*() {.libx11.}
+proc XFetchBytes*(para1: PDisplay, para2: Pcint): cstring {.libx11.}
+proc XFetchBuffer*(para1: PDisplay, para2: Pcint, para3: cint): cstring {.libx11.}
+proc XGetAtomName*(para1: PDisplay, para2: Atom): cstring {.libx11.}
+proc XGetAtomNames*(
+  para1: PDisplay, para2: PAtom, para3: cint, para4: PPchar
+): Status {.libx11.}
+
+proc XGetDefault*(para1: PDisplay, para2: cstring, para3: cstring): cstring {.libx11.}
+proc XDisplayName*(para1: cstring): cstring {.libx11.}
+proc XKeysymToString*(para1: KeySym): cstring {.libx11.}
+proc XSynchronize*(para1: PDisplay, para2: XBool): funcdisp {.libx11.}
+proc XSetAfterFunction*(para1: PDisplay, para2: funcdisp): funcdisp {.libx11.}
+proc XInternAtom*(para1: PDisplay, para2: cstring, para3: XBool): Atom {.libx11.}
+proc XInternAtoms*(
+  para1: PDisplay, para2: PPchar, para3: cint, para4: XBool, para5: PAtom
+): Status {.libx11.}
+
+proc XCopyColormapAndFree*(para1: PDisplay, para2: Colormap): Colormap {.libx11.}
+proc XCreateColormap*(
+  para1: PDisplay, para2: Window, para3: PVisual, para4: cint
+): Colormap {.libx11.}
+
+proc XCreatePixmapCursor*(
+  para1: PDisplay,
+  para2: Pixmap,
+  para3: Pixmap,
+  para4: PXColor,
+  para5: PXColor,
+  para6: cuint,
+  para7: cuint,
+): Cursor {.libx11.}
+
+proc XCreateGlyphCursor*(
+  para1: PDisplay,
+  para2: Font,
+  para3: Font,
+  para4: cuint,
+  para5: cuint,
+  para6: PXColor,
+  para7: PXColor,
+): Cursor {.libx11.}
+
+proc XCreateFontCursor*(para1: PDisplay, para2: cuint): Cursor {.libx11.}
+proc XLoadFont*(para1: PDisplay, para2: cstring): Font {.libx11.}
+proc XCreateGC*(
+  para1: PDisplay, para2: Drawable, para3: culong, para4: PXGCValues
+): GC {.libx11.}
+
+proc XGContextFromGC*(para1: GC): GContext {.libx11.}
+proc XFlushGC*(para1: PDisplay, para2: GC) {.libx11.}
+proc XCreatePixmap*(
+  para1: PDisplay, para2: Drawable, para3: cuint, para4: cuint, para5: cuint
+): Pixmap {.libx11.}
+
+proc XCreateBitmapFromData*(
+  para1: PDisplay, para2: Drawable, para3: cstring, para4: cuint, para5: cuint
+): Pixmap {.libx11.}
+
+proc XCreatePixmapFromBitmapData*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: cstring,
+  para4: cuint,
+  para5: cuint,
+  para6: culong,
+  para7: culong,
+  para8: cuint,
+): Pixmap {.libx11.}
+
+proc XCreateSimpleWindow*(
+  para1: PDisplay,
+  para2: Window,
+  para3: cint,
+  para4: cint,
+  para5: cuint,
+  para6: cuint,
+  para7: cuint,
+  para8: culong,
+  para9: culong,
+): Window {.libx11.}
+
+proc XGetSelectionOwner*(para1: PDisplay, para2: Atom): Window {.libx11.}
+proc XCreateWindow*(
+  para1: PDisplay,
+  para2: Window,
+  para3: cint,
+  para4: cint,
+  para5: cuint,
+  para6: cuint,
+  para7: cuint,
+  para8: cint,
+  para9: cuint,
+  para10: PVisual,
+  para11: culong,
+  para12: PXSetWindowAttributes,
+): Window {.libx11.}
+
+proc XListInstalledColormaps*(
+  para1: PDisplay, para2: Window, para3: Pcint
+): PColormap {.libx11.}
+
+proc XListFonts*(
+  para1: PDisplay, para2: cstring, para3: cint, para4: Pcint
+): PPChar {.libx11.}
 
-const
-  AllPlanes*: culong = not culong(0)
+proc XListFontsWithInfo*(
+  para1: PDisplay, para2: cstring, para3: cint, para4: Pcint, para5: PPXFontStruct
+): PPChar {.libx11.}
+
+proc XGetFontPath*(para1: PDisplay, para2: Pcint): PPChar {.libx11.}
+proc XListExtensions*(para1: PDisplay, para2: Pcint): PPChar {.libx11.}
+proc XListProperties*(para1: PDisplay, para2: Window, para3: Pcint): PAtom {.libx11.}
+proc XListHosts*(para1: PDisplay, para2: Pcint, para3: PBool): PXHostAddress {.libx11.}
+proc XKeycodeToKeysym*(para1: PDisplay, para2: KeyCode, para3: cint): KeySym {.libx11.}
+proc XLookupKeysym*(para1: PXKeyEvent, para2: cint): KeySym {.libx11.}
+proc XGetKeyboardMapping*(
+  para1: PDisplay, para2: KeyCode, para3: cint, para4: Pcint
+): PKeySym {.libx11.}
+
+proc XStringToKeysym*(para1: cstring): KeySym {.libx11.}
+proc XMaxRequestSize*(para1: PDisplay): clong {.libx11.}
+proc XExtendedMaxRequestSize*(para1: PDisplay): clong {.libx11.}
+proc XResourceManagerString*(para1: PDisplay): cstring {.libx11.}
+proc XScreenResourceString*(para1: PScreen): cstring {.libx11.}
+proc XDisplayMotionBufferSize*(para1: PDisplay): culong {.libx11.}
+proc XVisualIDFromVisual*(para1: PVisual): VisualID {.libx11.}
+proc XInitThreads*(): Status {.libx11.}
+proc XLockDisplay*(para1: PDisplay) {.libx11.}
+proc XUnlockDisplay*(para1: PDisplay) {.libx11.}
+proc XInitExtension*(para1: PDisplay, para2: cstring): PXExtCodes {.libx11.}
+proc XAddExtension*(para1: PDisplay): PXExtCodes {.libx11.}
+proc XFindOnExtensionList*(para1: PPXExtData, para2: cint): PXExtData {.libx11.}
+proc XEHeadOfExtensionList*(para1: XEDataObject): PPXExtData {.libx11.}
+proc XRootWindow*(para1: PDisplay, para2: cint): Window {.libx11.}
+proc XDefaultRootWindow*(para1: PDisplay): Window {.libx11.}
+proc XRootWindowOfScreen*(para1: PScreen): Window {.libx11.}
+proc XDefaultVisual*(para1: PDisplay, para2: cint): PVisual {.libx11.}
+proc XDefaultVisualOfScreen*(para1: PScreen): PVisual {.libx11.}
+proc XDefaultGC*(para1: PDisplay, para2: cint): GC {.libx11.}
+proc XDefaultGCOfScreen*(para1: PScreen): GC {.libx11.}
+proc XBlackPixel*(para1: PDisplay, para2: cint): culong {.libx11.}
+proc XWhitePixel*(para1: PDisplay, para2: cint): culong {.libx11.}
+proc XAllPlanes*(): culong {.libx11.}
+proc XBlackPixelOfScreen*(para1: PScreen): culong {.libx11.}
+proc XWhitePixelOfScreen*(para1: PScreen): culong {.libx11.}
+proc XNextRequest*(para1: PDisplay): culong {.libx11.}
+proc XLastKnownRequestProcessed*(para1: PDisplay): culong {.libx11.}
+proc XServerVendor*(para1: PDisplay): cstring {.libx11.}
+proc XDisplayString*(para1: PDisplay): cstring {.libx11.}
+proc XDefaultColormap*(para1: PDisplay, para2: cint): Colormap {.libx11.}
+proc XDefaultColormapOfScreen*(para1: PScreen): Colormap {.libx11.}
+proc XDisplayOfScreen*(para1: PScreen): PDisplay {.libx11.}
+proc XScreenOfDisplay*(para1: PDisplay, para2: cint): PScreen {.libx11.}
+proc XDefaultScreenOfDisplay*(para1: PDisplay): PScreen {.libx11.}
+proc XEventMaskOfScreen*(para1: PScreen): clong {.libx11.}
+proc XScreenNumberOfScreen*(para1: PScreen): cint {.libx11.}
+
+type XErrorHandler* = proc(para1: PDisplay, para2: PXErrorEvent): cint {.cdecl.}
+
+proc XSetErrorHandler*(para1: XErrorHandler): XErrorHandler {.libx11.}
+type XIOErrorHandler* = proc(para1: PDisplay): cint {.cdecl.}
+
+proc XSetIOErrorHandler*(para1: XIOErrorHandler): XIOErrorHandler {.libx11.}
+proc XListPixmapFormats*(para1: PDisplay, para2: Pcint): PXPixmapFormatValues {.libx11.}
+proc XListDepths*(para1: PDisplay, para2: cint, para3: Pcint): Pcint {.libx11.}
+proc XReconfigureWMWindow*(
+  para1: PDisplay, para2: Window, para3: cint, para4: cuint, para5: PXWindowChanges
+): Status {.libx11.}
+
+proc XGetWMProtocols*(
+  para1: PDisplay, para2: Window, para3: PPAtom, para4: Pcint
+): Status {.libx11.}
+
+proc XSetWMProtocols*(
+  para1: PDisplay, para2: Window, para3: PAtom, para4: cint
+): Status {.libx11.}
+
+proc XIconifyWindow*(para1: PDisplay, para2: Window, para3: cint): Status {.libx11.}
+proc XWithdrawWindow*(para1: PDisplay, para2: Window, para3: cint): Status {.libx11.}
+proc XGetCommand*(
+  para1: PDisplay, para2: Window, para3: PPPchar, para4: Pcint
+): Status {.libx11.}
+
+proc XGetWMColormapWindows*(
+  para1: PDisplay, para2: Window, para3: PPWindow, para4: Pcint
+): Status {.libx11.}
+
+proc XSetWMColormapWindows*(
+  para1: PDisplay, para2: Window, para3: PWindow, para4: cint
+): Status {.libx11.}
+
+proc XFreeStringList*(para1: PPchar) {.libx11.}
+proc XSetTransientForHint*(
+  para1: PDisplay, para2: Window, para3: Window
+): cint {.libx11.}
+
+proc XActivateScreenSaver*(para1: PDisplay): cint {.libx11.}
+proc XAddHost*(para1: PDisplay, para2: PXHostAddress): cint {.libx11.}
+proc XAddHosts*(para1: PDisplay, para2: PXHostAddress, para3: cint): cint {.libx11.}
+proc XAddToExtensionList*(para1: PPXExtData, para2: PXExtData): cint {.libx11.}
+proc XAddToSaveSet*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XAllocColor*(para1: PDisplay, para2: Colormap, para3: PXColor): Status {.libx11.}
+proc XAllocColorCells*(
+  para1: PDisplay,
+  para2: Colormap,
+  para3: XBool,
+  para4: Pculong,
+  para5: cuint,
+  para6: Pculong,
+  para7: cuint,
+): Status {.libx11.}
+
+proc XAllocColorPlanes*(
+  para1: PDisplay,
+  para2: Colormap,
+  para3: XBool,
+  para4: Pculong,
+  para5: cint,
+  para6: cint,
+  para7: cint,
+  para8: cint,
+  para9: Pculong,
+  para10: Pculong,
+  para11: Pculong,
+): Status {.libx11.}
+
+proc XAllocNamedColor*(
+  para1: PDisplay, para2: Colormap, para3: cstring, para4: PXColor, para5: PXColor
+): Status {.libx11.}
+
+proc XAllowEvents*(para1: PDisplay, para2: cint, para3: Time): cint {.libx11.}
+proc XAutoRepeatOff*(para1: PDisplay): cint {.libx11.}
+proc XAutoRepeatOn*(para1: PDisplay): cint {.libx11.}
+proc XBell*(para1: PDisplay, para2: cint): cint {.libx11.}
+proc XBitmapBitOrder*(para1: PDisplay): cint {.libx11.}
+proc XBitmapPad*(para1: PDisplay): cint {.libx11.}
+proc XBitmapUnit*(para1: PDisplay): cint {.libx11.}
+proc XCellsOfScreen*(para1: PScreen): cint {.libx11.}
+proc XChangeActivePointerGrab*(
+  para1: PDisplay, para2: cuint, para3: Cursor, para4: Time
+): cint {.libx11.}
+
+proc XChangeGC*(
+  para1: PDisplay, para2: GC, para3: culong, para4: PXGCValues
+): cint {.libx11.}
+
+proc XChangeKeyboardControl*(
+  para1: PDisplay, para2: culong, para3: PXKeyboardControl
+): cint {.libx11.}
+
+proc XChangeKeyboardMapping*(
+  para1: PDisplay, para2: cint, para3: cint, para4: PKeySym, para5: cint
+): cint {.libx11.}
+
+proc XChangePointerControl*(
+  para1: PDisplay, para2: XBool, para3: XBool, para4: cint, para5: cint, para6: cint
+): cint {.libx11.}
+
+proc XChangeProperty*(
+  para1: PDisplay,
+  para2: Window,
+  para3: Atom,
+  para4: Atom,
+  para5: cint,
+  para6: cint,
+  para7: Pcuchar,
+  para8: cint,
+): cint {.libx11.}
+
+proc XChangeSaveSet*(para1: PDisplay, para2: Window, para3: cint): cint {.libx11.}
+proc XChangeWindowAttributes*(
+  para1: PDisplay, para2: Window, para3: culong, para4: PXSetWindowAttributes
+): cint {.libx11.}
 
-proc XLoadQueryFont*(para1: PDisplay, para2: cstring): PXFontStruct{.libx11.}
-proc XQueryFont*(para1: PDisplay, para2: XID): PXFontStruct{.libx11.}
-proc XGetMotionEvents*(para1: PDisplay, para2: Window, para3: Time,
-                       para4: Time, para5: Pcint): PXTimeCoord{.libx11.}
-proc XDeleteModifiermapEntry*(para1: PXModifierKeymap, para2: KeyCode,
-                              para3: cint): PXModifierKeymap{.libx11.}
-proc XGetModifierMapping*(para1: PDisplay): PXModifierKeymap{.libx11.}
-proc XInsertModifiermapEntry*(para1: PXModifierKeymap, para2: KeyCode,
-                              para3: cint): PXModifierKeymap{.libx11.}
-proc XNewModifiermap*(para1: cint): PXModifierKeymap{.libx11.}
-proc XCreateImage*(para1: PDisplay, para2: PVisual, para3: cuint, para4: cint,
-                   para5: cint, para6: cstring, para7: cuint, para8: cuint,
-                   para9: cint, para10: cint): PXImage{.libx11.}
-proc XInitImage*(para1: PXImage): Status{.libx11.}
-proc XGetImage*(para1: PDisplay, para2: Drawable, para3: cint, para4: cint,
-                para5: cuint, para6: cuint, para7: culong, para8: cint): PXImage{.
-    libx11.}
-proc XGetSubImage*(para1: PDisplay, para2: Drawable, para3: cint, para4: cint,
-                   para5: cuint, para6: cuint, para7: culong, para8: cint,
-                   para9: PXImage, para10: cint, para11: cint): PXImage{.libx11.}
-proc XOpenDisplay*(para1: cstring): PDisplay{.libx11.}
-proc XrmInitialize*(){.libx11.}
-proc XFetchBytes*(para1: PDisplay, para2: Pcint): cstring{.libx11.}
-proc XFetchBuffer*(para1: PDisplay, para2: Pcint, para3: cint): cstring{.libx11.}
-proc XGetAtomName*(para1: PDisplay, para2: Atom): cstring{.libx11.}
-proc XGetAtomNames*(para1: PDisplay, para2: PAtom, para3: cint, para4: PPchar): Status{.
-    libx11.}
-proc XGetDefault*(para1: PDisplay, para2: cstring, para3: cstring): cstring{.
-    libx11.}
-proc XDisplayName*(para1: cstring): cstring{.libx11.}
-proc XKeysymToString*(para1: KeySym): cstring{.libx11.}
-proc XSynchronize*(para1: PDisplay, para2: XBool): funcdisp{.libx11.}
-proc XSetAfterFunction*(para1: PDisplay, para2: funcdisp): funcdisp{.libx11.}
-proc XInternAtom*(para1: PDisplay, para2: cstring, para3: XBool): Atom{.libx11.}
-proc XInternAtoms*(para1: PDisplay, para2: PPchar, para3: cint, para4: XBool,
-                   para5: PAtom): Status{.libx11.}
-proc XCopyColormapAndFree*(para1: PDisplay, para2: Colormap): Colormap{.libx11.}
-proc XCreateColormap*(para1: PDisplay, para2: Window, para3: PVisual,
-                      para4: cint): Colormap{.libx11.}
-proc XCreatePixmapCursor*(para1: PDisplay, para2: Pixmap, para3: Pixmap,
-                          para4: PXColor, para5: PXColor, para6: cuint,
-                          para7: cuint): Cursor{.libx11.}
-proc XCreateGlyphCursor*(para1: PDisplay, para2: Font, para3: Font,
-                         para4: cuint, para5: cuint, para6: PXColor,
-                         para7: PXColor): Cursor{.libx11.}
-proc XCreateFontCursor*(para1: PDisplay, para2: cuint): Cursor{.libx11.}
-proc XLoadFont*(para1: PDisplay, para2: cstring): Font{.libx11.}
-proc XCreateGC*(para1: PDisplay, para2: Drawable, para3: culong,
-                para4: PXGCValues): GC{.libx11.}
-proc XGContextFromGC*(para1: GC): GContext{.libx11.}
-proc XFlushGC*(para1: PDisplay, para2: GC){.libx11.}
-proc XCreatePixmap*(para1: PDisplay, para2: Drawable, para3: cuint,
-                    para4: cuint, para5: cuint): Pixmap{.libx11.}
-proc XCreateBitmapFromData*(para1: PDisplay, para2: Drawable, para3: cstring,
-                            para4: cuint, para5: cuint): Pixmap{.libx11.}
-proc XCreatePixmapFromBitmapData*(para1: PDisplay, para2: Drawable,
-                                  para3: cstring, para4: cuint, para5: cuint,
-                                  para6: culong, para7: culong, para8: cuint): Pixmap{.
-    libx11.}
-proc XCreateSimpleWindow*(para1: PDisplay, para2: Window, para3: cint,
-                          para4: cint, para5: cuint, para6: cuint, para7: cuint,
-                          para8: culong, para9: culong): Window{.libx11.}
-proc XGetSelectionOwner*(para1: PDisplay, para2: Atom): Window{.libx11.}
-proc XCreateWindow*(para1: PDisplay, para2: Window, para3: cint, para4: cint,
-                    para5: cuint, para6: cuint, para7: cuint, para8: cint,
-                    para9: cuint, para10: PVisual, para11: culong,
-                    para12: PXSetWindowAttributes): Window{.libx11.}
-proc XListInstalledColormaps*(para1: PDisplay, para2: Window, para3: Pcint): PColormap{.
-    libx11.}
-proc XListFonts*(para1: PDisplay, para2: cstring, para3: cint, para4: Pcint): PPChar{.
-    libx11.}
-proc XListFontsWithInfo*(para1: PDisplay, para2: cstring, para3: cint,
-                         para4: Pcint, para5: PPXFontStruct): PPChar{.libx11.}
-proc XGetFontPath*(para1: PDisplay, para2: Pcint): PPChar{.libx11.}
-proc XListExtensions*(para1: PDisplay, para2: Pcint): PPChar{.libx11.}
-proc XListProperties*(para1: PDisplay, para2: Window, para3: Pcint): PAtom{.
-    libx11.}
-proc XListHosts*(para1: PDisplay, para2: Pcint, para3: PBool): PXHostAddress{.
-    libx11.}
-proc XKeycodeToKeysym*(para1: PDisplay, para2: KeyCode, para3: cint): KeySym{.
-    libx11.}
-proc XLookupKeysym*(para1: PXKeyEvent, para2: cint): KeySym{.libx11.}
-proc XGetKeyboardMapping*(para1: PDisplay, para2: KeyCode, para3: cint,
-                          para4: Pcint): PKeySym{.libx11.}
-proc XStringToKeysym*(para1: cstring): KeySym{.libx11.}
-proc XMaxRequestSize*(para1: PDisplay): clong{.libx11.}
-proc XExtendedMaxRequestSize*(para1: PDisplay): clong{.libx11.}
-proc XResourceManagerString*(para1: PDisplay): cstring{.libx11.}
-proc XScreenResourceString*(para1: PScreen): cstring{.libx11.}
-proc XDisplayMotionBufferSize*(para1: PDisplay): culong{.libx11.}
-proc XVisualIDFromVisual*(para1: PVisual): VisualID{.libx11.}
-proc XInitThreads*(): Status{.libx11.}
-proc XLockDisplay*(para1: PDisplay){.libx11.}
-proc XUnlockDisplay*(para1: PDisplay){.libx11.}
-proc XInitExtension*(para1: PDisplay, para2: cstring): PXExtCodes{.libx11.}
-proc XAddExtension*(para1: PDisplay): PXExtCodes{.libx11.}
-proc XFindOnExtensionList*(para1: PPXExtData, para2: cint): PXExtData{.libx11.}
-proc XEHeadOfExtensionList*(para1: XEDataObject): PPXExtData{.libx11.}
-proc XRootWindow*(para1: PDisplay, para2: cint): Window{.libx11.}
-proc XDefaultRootWindow*(para1: PDisplay): Window{.libx11.}
-proc XRootWindowOfScreen*(para1: PScreen): Window{.libx11.}
-proc XDefaultVisual*(para1: PDisplay, para2: cint): PVisual{.libx11.}
-proc XDefaultVisualOfScreen*(para1: PScreen): PVisual{.libx11.}
-proc XDefaultGC*(para1: PDisplay, para2: cint): GC{.libx11.}
-proc XDefaultGCOfScreen*(para1: PScreen): GC{.libx11.}
-proc XBlackPixel*(para1: PDisplay, para2: cint): culong{.libx11.}
-proc XWhitePixel*(para1: PDisplay, para2: cint): culong{.libx11.}
-proc XAllPlanes*(): culong{.libx11.}
-proc XBlackPixelOfScreen*(para1: PScreen): culong{.libx11.}
-proc XWhitePixelOfScreen*(para1: PScreen): culong{.libx11.}
-proc XNextRequest*(para1: PDisplay): culong{.libx11.}
-proc XLastKnownRequestProcessed*(para1: PDisplay): culong{.libx11.}
-proc XServerVendor*(para1: PDisplay): cstring{.libx11.}
-proc XDisplayString*(para1: PDisplay): cstring{.libx11.}
-proc XDefaultColormap*(para1: PDisplay, para2: cint): Colormap{.libx11.}
-proc XDefaultColormapOfScreen*(para1: PScreen): Colormap{.libx11.}
-proc XDisplayOfScreen*(para1: PScreen): PDisplay{.libx11.}
-proc XScreenOfDisplay*(para1: PDisplay, para2: cint): PScreen{.libx11.}
-proc XDefaultScreenOfDisplay*(para1: PDisplay): PScreen{.libx11.}
-proc XEventMaskOfScreen*(para1: PScreen): clong{.libx11.}
-proc XScreenNumberOfScreen*(para1: PScreen): cint{.libx11.}
+proc XCheckIfEvent*(
+  para1: PDisplay, para2: PXEvent, para3: funcifevent, para4: XPointer
+): XBool {.libx11.}
+
+proc XCheckMaskEvent*(para1: PDisplay, para2: clong, para3: PXEvent): XBool {.libx11.}
+proc XCheckTypedEvent*(para1: PDisplay, para2: cint, para3: PXEvent): XBool {.libx11.}
+proc XCheckTypedWindowEvent*(
+  para1: PDisplay, para2: Window, para3: cint, para4: PXEvent
+): XBool {.libx11.}
+
+proc XCheckWindowEvent*(
+  para1: PDisplay, para2: Window, para3: clong, para4: PXEvent
+): XBool {.libx11.}
+
+proc XCirculateSubwindows*(para1: PDisplay, para2: Window, para3: cint): cint {.libx11.}
+proc XCirculateSubwindowsDown*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XCirculateSubwindowsUp*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XClearArea*(
+  para1: PDisplay,
+  para2: Window,
+  para3: cint,
+  para4: cint,
+  para5: cuint,
+  para6: cuint,
+  para7: XBool,
+): cint {.libx11.}
+
+proc XClearWindow*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XCloseDisplay*(para1: PDisplay): cint {.libx11.}
+proc XConfigureWindow*(
+  para1: PDisplay, para2: Window, para3: cuint, para4: PXWindowChanges
+): cint {.libx11.}
+
+proc XConnectionNumber*(para1: PDisplay): cint {.libx11.}
+proc XConvertSelection*(
+  para1: PDisplay, para2: Atom, para3: Atom, para4: Atom, para5: Window, para6: Time
+): cint {.libx11.}
+
+proc XCopyArea*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: Drawable,
+  para4: GC,
+  para5: cint,
+  para6: cint,
+  para7: cuint,
+  para8: cuint,
+  para9: cint,
+  para10: cint,
+): cint {.libx11.}
+
+proc XCopyGC*(para1: PDisplay, para2: GC, para3: culong, para4: GC): cint {.libx11.}
+proc XCopyPlane*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: Drawable,
+  para4: GC,
+  para5: cint,
+  para6: cint,
+  para7: cuint,
+  para8: cuint,
+  para9: cint,
+  para10: cint,
+  para11: culong,
+): cint {.libx11.}
+
+proc XDefaultDepth*(para1: PDisplay, para2: cint): cint {.libx11.}
+proc XDefaultDepthOfScreen*(para1: PScreen): cint {.libx11.}
+proc XDefaultScreen*(para1: PDisplay): cint {.libx11.}
+proc XDefineCursor*(para1: PDisplay, para2: Window, para3: Cursor): cint {.libx11.}
+proc XDeleteProperty*(para1: PDisplay, para2: Window, para3: Atom): cint {.libx11.}
+proc XDestroyWindow*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XDestroySubwindows*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XDoesBackingStore*(para1: PScreen): cint {.libx11.}
+proc XDoesSaveUnders*(para1: PScreen): XBool {.libx11.}
+proc XDisableAccessControl*(para1: PDisplay): cint {.libx11.}
+proc XDisplayCells*(para1: PDisplay, para2: cint): cint {.libx11.}
+proc XDisplayHeight*(para1: PDisplay, para2: cint): cint {.libx11.}
+proc XDisplayHeightMM*(para1: PDisplay, para2: cint): cint {.libx11.}
+proc XDisplayKeycodes*(para1: PDisplay, para2: Pcint, para3: Pcint): cint {.libx11.}
+proc XDisplayPlanes*(para1: PDisplay, para2: cint): cint {.libx11.}
+proc XDisplayWidth*(para1: PDisplay, para2: cint): cint {.libx11.}
+proc XDisplayWidthMM*(para1: PDisplay, para2: cint): cint {.libx11.}
+proc XDrawArc*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: cint,
+  para5: cint,
+  para6: cuint,
+  para7: cuint,
+  para8: cint,
+  para9: cint,
+): cint {.libx11.}
+
+proc XDrawArcs*(
+  para1: PDisplay, para2: Drawable, para3: GC, para4: PXArc, para5: cint
+): cint {.libx11.}
+
+proc XDrawImageString*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: cint,
+  para5: cint,
+  para6: cstring,
+  para7: cint,
+): cint {.libx11.}
+
+proc XDrawImageString16*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: cint,
+  para5: cint,
+  para6: PXChar2b,
+  para7: cint,
+): cint {.libx11.}
+
+proc XDrawLine*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: cint,
+  para5: cint,
+  para6: cint,
+  para7: cint,
+): cint {.libx11.}
+
+proc XDrawLines*(
+  para1: PDisplay, para2: Drawable, para3: GC, para4: PXPoint, para5: cint, para6: cint
+): cint {.libx11.}
+
+proc XDrawPoint*(
+  para1: PDisplay, para2: Drawable, para3: GC, para4: cint, para5: cint
+): cint {.libx11.}
+
+proc XDrawPoints*(
+  para1: PDisplay, para2: Drawable, para3: GC, para4: PXPoint, para5: cint, para6: cint
+): cint {.libx11.}
+
+proc XDrawRectangle*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: cint,
+  para5: cint,
+  para6: cuint,
+  para7: cuint,
+): cint {.libx11.}
+
+proc XDrawRectangles*(
+  para1: PDisplay, para2: Drawable, para3: GC, para4: PXRectangle, para5: cint
+): cint {.libx11.}
+
+proc XDrawSegments*(
+  para1: PDisplay, para2: Drawable, para3: GC, para4: PXSegment, para5: cint
+): cint {.libx11.}
+
+proc XDrawString*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: cint,
+  para5: cint,
+  para6: cstring,
+  para7: cint,
+): cint {.libx11.}
 
-type
-  XErrorHandler* = proc (para1: PDisplay, para2: PXErrorEvent): cint{.cdecl.}
+proc XDrawString16*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: cint,
+  para5: cint,
+  para6: PXChar2b,
+  para7: cint,
+): cint {.libx11.}
+
+proc XDrawText*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: cint,
+  para5: cint,
+  para6: PXTextItem,
+  para7: cint,
+): cint {.libx11.}
+
+proc XDrawText16*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: cint,
+  para5: cint,
+  para6: PXTextItem16,
+  para7: cint,
+): cint {.libx11.}
+
+proc XEnableAccessControl*(para1: PDisplay): cint {.libx11.}
+proc XEventsQueued*(para1: PDisplay, para2: cint): cint {.libx11.}
+proc XFetchName*(para1: PDisplay, para2: Window, para3: PPchar): Status {.libx11.}
+proc XFillArc*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: cint,
+  para5: cint,
+  para6: cuint,
+  para7: cuint,
+  para8: cint,
+  para9: cint,
+): cint {.libx11.}
+
+proc XFillArcs*(
+  para1: PDisplay, para2: Drawable, para3: GC, para4: PXArc, para5: cint
+): cint {.libx11.}
+
+proc XFillPolygon*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: PXPoint,
+  para5: cint,
+  para6: cint,
+  para7: cint,
+): cint {.libx11.}
+
+proc XFillRectangle*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: cint,
+  para5: cint,
+  para6: cuint,
+  para7: cuint,
+): cint {.libx11.}
+
+proc XFillRectangles*(
+  para1: PDisplay, para2: Drawable, para3: GC, para4: PXRectangle, para5: cint
+): cint {.libx11.}
+
+proc XFlush*(para1: PDisplay): cint {.libx11.}
+proc XForceScreenSaver*(para1: PDisplay, para2: cint): cint {.libx11.}
+proc XFree*(para1: pointer): cint {.libx11.}
+proc XFreeColormap*(para1: PDisplay, para2: Colormap): cint {.libx11.}
+proc XFreeColors*(
+  para1: PDisplay, para2: Colormap, para3: Pculong, para4: cint, para5: culong
+): cint {.libx11.}
 
-proc XSetErrorHandler*(para1: XErrorHandler): XErrorHandler{.libx11.}
-type
-  XIOErrorHandler* = proc (para1: PDisplay): cint{.cdecl.}
+proc XFreeCursor*(para1: PDisplay, para2: Cursor): cint {.libx11.}
+proc XFreeExtensionList*(para1: PPchar): cint {.libx11.}
+proc XFreeFont*(para1: PDisplay, para2: PXFontStruct): cint {.libx11.}
+proc XFreeFontInfo*(para1: PPchar, para2: PXFontStruct, para3: cint): cint {.libx11.}
+proc XFreeFontNames*(para1: PPchar): cint {.libx11.}
+proc XFreeFontPath*(para1: PPchar): cint {.libx11.}
+proc XFreeGC*(para1: PDisplay, para2: GC): cint {.libx11.}
+proc XFreeModifiermap*(para1: PXModifierKeymap): cint {.libx11.}
+proc XFreePixmap*(para1: PDisplay, para2: Pixmap): cint {.libx11.}
+proc XGeometry*(
+  para1: PDisplay,
+  para2: cint,
+  para3: cstring,
+  para4: cstring,
+  para5: cuint,
+  para6: cuint,
+  para7: cuint,
+  para8: cint,
+  para9: cint,
+  para10: Pcint,
+  para11: Pcint,
+  para12: Pcint,
+  para13: Pcint,
+): cint {.libx11.}
+
+proc XGetErrorDatabaseText*(
+  para1: PDisplay,
+  para2: cstring,
+  para3: cstring,
+  para4: cstring,
+  para5: cstring,
+  para6: cint,
+): cint {.libx11.}
+
+proc XGetErrorText*(
+  para1: PDisplay, para2: cint, para3: cstring, para4: cint
+): cint {.libx11.}
+
+proc XGetFontProperty*(
+  para1: PXFontStruct, para2: Atom, para3: Pculong
+): XBool {.libx11.}
+
+proc XGetGCValues*(
+  para1: PDisplay, para2: GC, para3: culong, para4: PXGCValues
+): Status {.libx11.}
+
+proc XGetGeometry*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: PWindow,
+  para4: Pcint,
+  para5: Pcint,
+  para6: Pcuint,
+  para7: Pcuint,
+  para8: Pcuint,
+  para9: Pcuint,
+): Status {.libx11.}
+
+proc XGetIconName*(para1: PDisplay, para2: Window, para3: PPchar): Status {.libx11.}
+proc XGetInputFocus*(para1: PDisplay, para2: PWindow, para3: Pcint): cint {.libx11.}
+proc XGetKeyboardControl*(para1: PDisplay, para2: PXKeyboardState): cint {.libx11.}
+proc XGetPointerControl*(
+  para1: PDisplay, para2: Pcint, para3: Pcint, para4: Pcint
+): cint {.libx11.}
+
+proc XGetPointerMapping*(para1: PDisplay, para2: Pcuchar, para3: cint): cint {.libx11.}
+proc XGetScreenSaver*(
+  para1: PDisplay, para2: Pcint, para3: Pcint, para4: Pcint, para5: Pcint
+): cint {.libx11.}
+
+proc XGetTransientForHint*(
+  para1: PDisplay, para2: Window, para3: PWindow
+): Status {.libx11.}
+
+proc XGetWindowProperty*(
+  para1: PDisplay,
+  para2: Window,
+  para3: Atom,
+  para4: clong,
+  para5: clong,
+  para6: XBool,
+  para7: Atom,
+  para8: PAtom,
+  para9: Pcint,
+  para10: Pculong,
+  para11: Pculong,
+  para12: PPcuchar,
+): cint {.libx11.}
+
+proc XGetWindowAttributes*(
+  para1: PDisplay, para2: Window, para3: PXWindowAttributes
+): Status {.libx11.}
 
-proc XSetIOErrorHandler*(para1: XIOErrorHandler): XIOErrorHandler{.libx11.}
-proc XListPixmapFormats*(para1: PDisplay, para2: Pcint): PXPixmapFormatValues{.
-    libx11.}
-proc XListDepths*(para1: PDisplay, para2: cint, para3: Pcint): Pcint{.libx11.}
-proc XReconfigureWMWindow*(para1: PDisplay, para2: Window, para3: cint,
-                           para4: cuint, para5: PXWindowChanges): Status{.
-    libx11.}
-proc XGetWMProtocols*(para1: PDisplay, para2: Window, para3: PPAtom,
-                      para4: Pcint): Status{.libx11.}
-proc XSetWMProtocols*(para1: PDisplay, para2: Window, para3: PAtom, para4: cint): Status{.
-    libx11.}
-proc XIconifyWindow*(para1: PDisplay, para2: Window, para3: cint): Status{.
-    libx11.}
-proc XWithdrawWindow*(para1: PDisplay, para2: Window, para3: cint): Status{.
-    libx11.}
-proc XGetCommand*(para1: PDisplay, para2: Window, para3: PPPchar, para4: Pcint): Status{.
-    libx11.}
-proc XGetWMColormapWindows*(para1: PDisplay, para2: Window, para3: PPWindow,
-                            para4: Pcint): Status{.libx11.}
-proc XSetWMColormapWindows*(para1: PDisplay, para2: Window, para3: PWindow,
-                            para4: cint): Status{.libx11.}
-proc XFreeStringList*(para1: PPchar){.libx11.}
-proc XSetTransientForHint*(para1: PDisplay, para2: Window, para3: Window): cint{.
-    libx11.}
-proc XActivateScreenSaver*(para1: PDisplay): cint{.libx11.}
-proc XAddHost*(para1: PDisplay, para2: PXHostAddress): cint{.libx11.}
-proc XAddHosts*(para1: PDisplay, para2: PXHostAddress, para3: cint): cint{.
-    libx11.}
-proc XAddToExtensionList*(para1: PPXExtData, para2: PXExtData): cint{.libx11.}
-proc XAddToSaveSet*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XAllocColor*(para1: PDisplay, para2: Colormap, para3: PXColor): Status{.
-    libx11.}
-proc XAllocColorCells*(para1: PDisplay, para2: Colormap, para3: XBool,
-                       para4: Pculong, para5: cuint, para6: Pculong,
-                       para7: cuint): Status{.libx11.}
-proc XAllocColorPlanes*(para1: PDisplay, para2: Colormap, para3: XBool,
-                        para4: Pculong, para5: cint, para6: cint, para7: cint,
-                        para8: cint, para9: Pculong, para10: Pculong,
-                        para11: Pculong): Status{.libx11.}
-proc XAllocNamedColor*(para1: PDisplay, para2: Colormap, para3: cstring,
-                       para4: PXColor, para5: PXColor): Status{.libx11.}
-proc XAllowEvents*(para1: PDisplay, para2: cint, para3: Time): cint{.libx11.}
-proc XAutoRepeatOff*(para1: PDisplay): cint{.libx11.}
-proc XAutoRepeatOn*(para1: PDisplay): cint{.libx11.}
-proc XBell*(para1: PDisplay, para2: cint): cint{.libx11.}
-proc XBitmapBitOrder*(para1: PDisplay): cint{.libx11.}
-proc XBitmapPad*(para1: PDisplay): cint{.libx11.}
-proc XBitmapUnit*(para1: PDisplay): cint{.libx11.}
-proc XCellsOfScreen*(para1: PScreen): cint{.libx11.}
-proc XChangeActivePointerGrab*(para1: PDisplay, para2: cuint, para3: Cursor,
-                               para4: Time): cint{.libx11.}
-proc XChangeGC*(para1: PDisplay, para2: GC, para3: culong, para4: PXGCValues): cint{.
-    libx11.}
-proc XChangeKeyboardControl*(para1: PDisplay, para2: culong,
-                             para3: PXKeyboardControl): cint{.libx11.}
-proc XChangeKeyboardMapping*(para1: PDisplay, para2: cint, para3: cint,
-                             para4: PKeySym, para5: cint): cint{.libx11.}
-proc XChangePointerControl*(para1: PDisplay, para2: XBool, para3: XBool,
-                            para4: cint, para5: cint, para6: cint): cint{.libx11.}
-proc XChangeProperty*(para1: PDisplay, para2: Window, para3: Atom,
-                      para4: Atom, para5: cint, para6: cint, para7: Pcuchar,
-                      para8: cint): cint{.libx11.}
-proc XChangeSaveSet*(para1: PDisplay, para2: Window, para3: cint): cint{.libx11.}
-proc XChangeWindowAttributes*(para1: PDisplay, para2: Window, para3: culong,
-                              para4: PXSetWindowAttributes): cint{.libx11.}
-proc XCheckIfEvent*(para1: PDisplay, para2: PXEvent, para3: funcifevent,
-                    para4: XPointer): XBool{.libx11.}
-proc XCheckMaskEvent*(para1: PDisplay, para2: clong, para3: PXEvent): XBool{.
-    libx11.}
-proc XCheckTypedEvent*(para1: PDisplay, para2: cint, para3: PXEvent): XBool{.
-    libx11.}
-proc XCheckTypedWindowEvent*(para1: PDisplay, para2: Window, para3: cint,
-                             para4: PXEvent): XBool{.libx11.}
-proc XCheckWindowEvent*(para1: PDisplay, para2: Window, para3: clong,
-                        para4: PXEvent): XBool{.libx11.}
-proc XCirculateSubwindows*(para1: PDisplay, para2: Window, para3: cint): cint{.
-    libx11.}
-proc XCirculateSubwindowsDown*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XCirculateSubwindowsUp*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XClearArea*(para1: PDisplay, para2: Window, para3: cint, para4: cint,
-                 para5: cuint, para6: cuint, para7: XBool): cint{.libx11.}
-proc XClearWindow*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XCloseDisplay*(para1: PDisplay): cint{.libx11.}
-proc XConfigureWindow*(para1: PDisplay, para2: Window, para3: cuint,
-                       para4: PXWindowChanges): cint{.libx11.}
-proc XConnectionNumber*(para1: PDisplay): cint{.libx11.}
-proc XConvertSelection*(para1: PDisplay, para2: Atom, para3: Atom,
-                        para4: Atom, para5: Window, para6: Time): cint{.
-    libx11.}
-proc XCopyArea*(para1: PDisplay, para2: Drawable, para3: Drawable, para4: GC,
-                para5: cint, para6: cint, para7: cuint, para8: cuint,
-                para9: cint, para10: cint): cint{.libx11.}
-proc XCopyGC*(para1: PDisplay, para2: GC, para3: culong, para4: GC): cint{.
-    libx11.}
-proc XCopyPlane*(para1: PDisplay, para2: Drawable, para3: Drawable,
-                 para4: GC, para5: cint, para6: cint, para7: cuint,
-                 para8: cuint, para9: cint, para10: cint, para11: culong): cint{.
-    libx11.}
-proc XDefaultDepth*(para1: PDisplay, para2: cint): cint{.libx11.}
-proc XDefaultDepthOfScreen*(para1: PScreen): cint{.libx11.}
-proc XDefaultScreen*(para1: PDisplay): cint{.libx11.}
-proc XDefineCursor*(para1: PDisplay, para2: Window, para3: Cursor): cint{.
-    libx11.}
-proc XDeleteProperty*(para1: PDisplay, para2: Window, para3: Atom): cint{.
-    libx11.}
-proc XDestroyWindow*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XDestroySubwindows*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XDoesBackingStore*(para1: PScreen): cint{.libx11.}
-proc XDoesSaveUnders*(para1: PScreen): XBool{.libx11.}
-proc XDisableAccessControl*(para1: PDisplay): cint{.libx11.}
-proc XDisplayCells*(para1: PDisplay, para2: cint): cint{.libx11.}
-proc XDisplayHeight*(para1: PDisplay, para2: cint): cint{.libx11.}
-proc XDisplayHeightMM*(para1: PDisplay, para2: cint): cint{.libx11.}
-proc XDisplayKeycodes*(para1: PDisplay, para2: Pcint, para3: Pcint): cint{.
-    libx11.}
-proc XDisplayPlanes*(para1: PDisplay, para2: cint): cint{.libx11.}
-proc XDisplayWidth*(para1: PDisplay, para2: cint): cint{.libx11.}
-proc XDisplayWidthMM*(para1: PDisplay, para2: cint): cint{.libx11.}
-proc XDrawArc*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
-               para5: cint, para6: cuint, para7: cuint, para8: cint, para9: cint): cint{.
-    libx11.}
-proc XDrawArcs*(para1: PDisplay, para2: Drawable, para3: GC, para4: PXArc,
-                para5: cint): cint{.libx11.}
-proc XDrawImageString*(para1: PDisplay, para2: Drawable, para3: GC,
-                       para4: cint, para5: cint, para6: cstring, para7: cint): cint{.
-    libx11.}
-proc XDrawImageString16*(para1: PDisplay, para2: Drawable, para3: GC,
-                         para4: cint, para5: cint, para6: PXChar2b, para7: cint): cint{.
-    libx11.}
-proc XDrawLine*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
-                para5: cint, para6: cint, para7: cint): cint{.libx11.}
-proc XDrawLines*(para1: PDisplay, para2: Drawable, para3: GC, para4: PXPoint,
-                 para5: cint, para6: cint): cint{.libx11.}
-proc XDrawPoint*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
-                 para5: cint): cint{.libx11.}
-proc XDrawPoints*(para1: PDisplay, para2: Drawable, para3: GC, para4: PXPoint,
-                  para5: cint, para6: cint): cint{.libx11.}
-proc XDrawRectangle*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
-                     para5: cint, para6: cuint, para7: cuint): cint{.libx11.}
-proc XDrawRectangles*(para1: PDisplay, para2: Drawable, para3: GC,
-                      para4: PXRectangle, para5: cint): cint{.libx11.}
-proc XDrawSegments*(para1: PDisplay, para2: Drawable, para3: GC,
-                    para4: PXSegment, para5: cint): cint{.libx11.}
-proc XDrawString*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
-                  para5: cint, para6: cstring, para7: cint): cint{.libx11.}
-proc XDrawString16*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
-                    para5: cint, para6: PXChar2b, para7: cint): cint{.libx11.}
-proc XDrawText*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
-                para5: cint, para6: PXTextItem, para7: cint): cint{.libx11.}
-proc XDrawText16*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
-                  para5: cint, para6: PXTextItem16, para7: cint): cint{.libx11.}
-proc XEnableAccessControl*(para1: PDisplay): cint{.libx11.}
-proc XEventsQueued*(para1: PDisplay, para2: cint): cint{.libx11.}
-proc XFetchName*(para1: PDisplay, para2: Window, para3: PPchar): Status{.
-    libx11.}
-proc XFillArc*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
-               para5: cint, para6: cuint, para7: cuint, para8: cint, para9: cint): cint{.
-    libx11.}
-proc XFillArcs*(para1: PDisplay, para2: Drawable, para3: GC, para4: PXArc,
-                para5: cint): cint{.libx11.}
-proc XFillPolygon*(para1: PDisplay, para2: Drawable, para3: GC,
-                   para4: PXPoint, para5: cint, para6: cint, para7: cint): cint{.
-    libx11.}
-proc XFillRectangle*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
-                     para5: cint, para6: cuint, para7: cuint): cint{.libx11.}
-proc XFillRectangles*(para1: PDisplay, para2: Drawable, para3: GC,
-                      para4: PXRectangle, para5: cint): cint{.libx11.}
-proc XFlush*(para1: PDisplay): cint{.libx11.}
-proc XForceScreenSaver*(para1: PDisplay, para2: cint): cint{.libx11.}
-proc XFree*(para1: pointer): cint{.libx11.}
-proc XFreeColormap*(para1: PDisplay, para2: Colormap): cint{.libx11.}
-proc XFreeColors*(para1: PDisplay, para2: Colormap, para3: Pculong,
-                  para4: cint, para5: culong): cint{.libx11.}
-proc XFreeCursor*(para1: PDisplay, para2: Cursor): cint{.libx11.}
-proc XFreeExtensionList*(para1: PPchar): cint{.libx11.}
-proc XFreeFont*(para1: PDisplay, para2: PXFontStruct): cint{.libx11.}
-proc XFreeFontInfo*(para1: PPchar, para2: PXFontStruct, para3: cint): cint{.
-    libx11.}
-proc XFreeFontNames*(para1: PPchar): cint{.libx11.}
-proc XFreeFontPath*(para1: PPchar): cint{.libx11.}
-proc XFreeGC*(para1: PDisplay, para2: GC): cint{.libx11.}
-proc XFreeModifiermap*(para1: PXModifierKeymap): cint{.libx11.}
-proc XFreePixmap*(para1: PDisplay, para2: Pixmap): cint{.libx11.}
-proc XGeometry*(para1: PDisplay, para2: cint, para3: cstring, para4: cstring,
-                para5: cuint, para6: cuint, para7: cuint, para8: cint,
-                para9: cint, para10: Pcint, para11: Pcint, para12: Pcint,
-                para13: Pcint): cint{.libx11.}
-proc XGetErrorDatabaseText*(para1: PDisplay, para2: cstring, para3: cstring,
-                            para4: cstring, para5: cstring, para6: cint): cint{.
-    libx11.}
-proc XGetErrorText*(para1: PDisplay, para2: cint, para3: cstring, para4: cint): cint{.
-    libx11.}
-proc XGetFontProperty*(para1: PXFontStruct, para2: Atom, para3: Pculong): XBool{.
-    libx11.}
-proc XGetGCValues*(para1: PDisplay, para2: GC, para3: culong, para4: PXGCValues): Status{.
-    libx11.}
-proc XGetGeometry*(para1: PDisplay, para2: Drawable, para3: PWindow,
-                   para4: Pcint, para5: Pcint, para6: Pcuint, para7: Pcuint,
-                   para8: Pcuint, para9: Pcuint): Status{.libx11.}
-proc XGetIconName*(para1: PDisplay, para2: Window, para3: PPchar): Status{.
-    libx11.}
-proc XGetInputFocus*(para1: PDisplay, para2: PWindow, para3: Pcint): cint{.
-    libx11.}
-proc XGetKeyboardControl*(para1: PDisplay, para2: PXKeyboardState): cint{.libx11.}
-proc XGetPointerControl*(para1: PDisplay, para2: Pcint, para3: Pcint,
-                         para4: Pcint): cint{.libx11.}
-proc XGetPointerMapping*(para1: PDisplay, para2: Pcuchar, para3: cint): cint{.
-    libx11.}
-proc XGetScreenSaver*(para1: PDisplay, para2: Pcint, para3: Pcint, para4: Pcint,
-                      para5: Pcint): cint{.libx11.}
-proc XGetTransientForHint*(para1: PDisplay, para2: Window, para3: PWindow): Status{.
-    libx11.}
-proc XGetWindowProperty*(para1: PDisplay, para2: Window, para3: Atom,
-                         para4: clong, para5: clong, para6: XBool, para7: Atom,
-                         para8: PAtom, para9: Pcint, para10: Pculong,
-                         para11: Pculong, para12: PPcuchar): cint{.libx11.}
-proc XGetWindowAttributes*(para1: PDisplay, para2: Window,
-                           para3: PXWindowAttributes): Status{.libx11.}
-proc XGrabButton*(para1: PDisplay, para2: cuint, para3: cuint, para4: Window,
-                  para5: XBool, para6: cuint, para7: cint, para8: cint,
-                  para9: Window, para10: Cursor): cint{.libx11.}
-proc XGrabKey*(para1: PDisplay, para2: cint, para3: cuint, para4: Window,
-               para5: XBool, para6: cint, para7: cint): cint{.libx11.}
-proc XGrabKeyboard*(para1: PDisplay, para2: Window, para3: XBool, para4: cint,
-                    para5: cint, para6: Time): cint{.libx11.}
-proc XGrabPointer*(para1: PDisplay, para2: Window, para3: XBool, para4: cuint,
-                   para5: cint, para6: cint, para7: Window, para8: Cursor,
-                   para9: Time): cint{.libx11.}
-proc XGrabServer*(para1: PDisplay): cint{.libx11.}
-proc XHeightMMOfScreen*(para1: PScreen): cint{.libx11.}
-proc XHeightOfScreen*(para1: PScreen): cint{.libx11.}
-proc XIfEvent*(para1: PDisplay, para2: PXEvent, para3: funcifevent,
-               para4: XPointer): cint{.libx11.}
-proc XImageByteOrder*(para1: PDisplay): cint{.libx11.}
-proc XInstallColormap*(para1: PDisplay, para2: Colormap): cint{.libx11.}
-proc XKeysymToKeycode*(para1: PDisplay, para2: KeySym): KeyCode{.libx11.}
-proc XKillClient*(para1: PDisplay, para2: XID): cint{.libx11.}
-proc XLookupColor*(para1: PDisplay, para2: Colormap, para3: cstring,
-                   para4: PXColor, para5: PXColor): Status{.libx11.}
-proc XLowerWindow*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XMapRaised*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XMapSubwindows*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XMapWindow*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XMaskEvent*(para1: PDisplay, para2: clong, para3: PXEvent): cint{.libx11.}
-proc XMaxCmapsOfScreen*(para1: PScreen): cint{.libx11.}
-proc XMinCmapsOfScreen*(para1: PScreen): cint{.libx11.}
-proc XMoveResizeWindow*(para1: PDisplay, para2: Window, para3: cint,
-                        para4: cint, para5: cuint, para6: cuint): cint{.libx11.}
-proc XMoveWindow*(para1: PDisplay, para2: Window, para3: cint, para4: cint): cint{.
-    libx11.}
-proc XNextEvent*(para1: PDisplay, para2: PXEvent): cint{.libx11.}
-proc XNoOp*(para1: PDisplay): cint{.libx11.}
-proc XParseColor*(para1: PDisplay, para2: Colormap, para3: cstring,
-                  para4: PXColor): Status{.libx11.}
-proc XParseGeometry*(para1: cstring, para2: Pcint, para3: Pcint, para4: Pcuint,
-                     para5: Pcuint): cint{.libx11.}
-proc XPeekEvent*(para1: PDisplay, para2: PXEvent): cint{.libx11.}
-proc XPeekIfEvent*(para1: PDisplay, para2: PXEvent, para3: funcifevent,
-                   para4: XPointer): cint{.libx11.}
-proc XPending*(para1: PDisplay): cint{.libx11.}
-proc XPlanesOfScreen*(para1: PScreen): cint{.libx11.}
-proc XProtocolRevision*(para1: PDisplay): cint{.libx11.}
-proc XProtocolVersion*(para1: PDisplay): cint{.libx11.}
-proc XPutBackEvent*(para1: PDisplay, para2: PXEvent): cint{.libx11.}
-proc XPutImage*(para1: PDisplay, para2: Drawable, para3: GC, para4: PXImage,
-                para5: cint, para6: cint, para7: cint, para8: cint,
-                para9: cuint, para10: cuint): cint{.libx11.}
-proc XQLength*(para1: PDisplay): cint{.libx11.}
-proc XQueryBestCursor*(para1: PDisplay, para2: Drawable, para3: cuint,
-                       para4: cuint, para5: Pcuint, para6: Pcuint): Status{.
-    libx11.}
-proc XQueryBestSize*(para1: PDisplay, para2: cint, para3: Drawable,
-                     para4: cuint, para5: cuint, para6: Pcuint, para7: Pcuint): Status{.
-    libx11.}
-proc XQueryBestStipple*(para1: PDisplay, para2: Drawable, para3: cuint,
-                        para4: cuint, para5: Pcuint, para6: Pcuint): Status{.
-    libx11.}
-proc XQueryBestTile*(para1: PDisplay, para2: Drawable, para3: cuint,
-                     para4: cuint, para5: Pcuint, para6: Pcuint): Status{.
-    libx11.}
-proc XQueryColor*(para1: PDisplay, para2: Colormap, para3: PXColor): cint{.
-    libx11.}
-proc XQueryColors*(para1: PDisplay, para2: Colormap, para3: PXColor,
-                   para4: cint): cint{.libx11.}
-proc XQueryExtension*(para1: PDisplay, para2: cstring, para3: Pcint,
-                      para4: Pcint, para5: Pcint): XBool{.libx11.}
-  #?
-proc XQueryKeymap*(para1: PDisplay, para2: chararr32): cint{.libx11.}
-proc XQueryPointer*(para1: PDisplay, para2: Window, para3: PWindow,
-                    para4: PWindow, para5: Pcint, para6: Pcint, para7: Pcint,
-                    para8: Pcint, para9: Pcuint): XBool{.libx11.}
-proc XQueryTextExtents*(para1: PDisplay, para2: XID, para3: cstring,
-                        para4: cint, para5: Pcint, para6: Pcint, para7: Pcint,
-                        para8: PXCharStruct): cint{.libx11.}
-proc XQueryTextExtents16*(para1: PDisplay, para2: XID, para3: PXChar2b,
-                          para4: cint, para5: Pcint, para6: Pcint, para7: Pcint,
-                          para8: PXCharStruct): cint{.libx11.}
-proc XQueryTree*(para1: PDisplay, para2: Window, para3: PWindow,
-                 para4: PWindow, para5: PPWindow, para6: Pcuint): Status{.
-    libx11.}
-proc XRaiseWindow*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XReadBitmapFile*(para1: PDisplay, para2: Drawable, para3: cstring,
-                      para4: Pcuint, para5: Pcuint, para6: PPixmap,
-                      para7: Pcint, para8: Pcint): cint{.libx11.}
-proc XReadBitmapFileData*(para1: cstring, para2: Pcuint, para3: Pcuint,
-                          para4: PPcuchar, para5: Pcint, para6: Pcint): cint{.
-    libx11.}
-proc XRebindKeysym*(para1: PDisplay, para2: KeySym, para3: PKeySym,
-                    para4: cint, para5: Pcuchar, para6: cint): cint{.libx11.}
-proc XRecolorCursor*(para1: PDisplay, para2: Cursor, para3: PXColor,
-                     para4: PXColor): cint{.libx11.}
-proc XRefreshKeyboardMapping*(para1: PXMappingEvent): cint{.libx11.}
-proc XRemoveFromSaveSet*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XRemoveHost*(para1: PDisplay, para2: PXHostAddress): cint{.libx11.}
-proc XRemoveHosts*(para1: PDisplay, para2: PXHostAddress, para3: cint): cint{.
-    libx11.}
-proc XReparentWindow*(para1: PDisplay, para2: Window, para3: Window,
-                      para4: cint, para5: cint): cint{.libx11.}
-proc XResetScreenSaver*(para1: PDisplay): cint{.libx11.}
-proc XResizeWindow*(para1: PDisplay, para2: Window, para3: cuint, para4: cuint): cint{.
-    libx11.}
-proc XRestackWindows*(para1: PDisplay, para2: PWindow, para3: cint): cint{.
-    libx11.}
-proc XRotateBuffers*(para1: PDisplay, para2: cint): cint{.libx11.}
-proc XRotateWindowProperties*(para1: PDisplay, para2: Window, para3: PAtom,
-                              para4: cint, para5: cint): cint{.libx11.}
-proc XScreenCount*(para1: PDisplay): cint{.libx11.}
-proc XSelectInput*(para1: PDisplay, para2: Window, para3: clong): cint{.libx11.}
-proc XSendEvent*(para1: PDisplay, para2: Window, para3: XBool, para4: clong,
-                 para5: PXEvent): Status{.libx11.}
-proc XSetAccessControl*(para1: PDisplay, para2: cint): cint{.libx11.}
-proc XSetArcMode*(para1: PDisplay, para2: GC, para3: cint): cint{.libx11.}
-proc XSetBackground*(para1: PDisplay, para2: GC, para3: culong): cint{.libx11.}
-proc XSetClipMask*(para1: PDisplay, para2: GC, para3: Pixmap): cint{.libx11.}
-proc XSetClipOrigin*(para1: PDisplay, para2: GC, para3: cint, para4: cint): cint{.
-    libx11.}
-proc XSetClipRectangles*(para1: PDisplay, para2: GC, para3: cint, para4: cint,
-                         para5: PXRectangle, para6: cint, para7: cint): cint{.
-    libx11.}
-proc XSetCloseDownMode*(para1: PDisplay, para2: cint): cint{.libx11.}
-proc XSetCommand*(para1: PDisplay, para2: Window, para3: PPchar, para4: cint): cint{.
-    libx11.}
-proc XSetDashes*(para1: PDisplay, para2: GC, para3: cint, para4: cstring,
-                 para5: cint): cint{.libx11.}
-proc XSetFillRule*(para1: PDisplay, para2: GC, para3: cint): cint{.libx11.}
-proc XSetFillStyle*(para1: PDisplay, para2: GC, para3: cint): cint{.libx11.}
-proc XSetFont*(para1: PDisplay, para2: GC, para3: Font): cint{.libx11.}
-proc XSetFontPath*(para1: PDisplay, para2: PPchar, para3: cint): cint{.libx11.}
-proc XSetForeground*(para1: PDisplay, para2: GC, para3: culong): cint{.libx11.}
-proc XSetFunction*(para1: PDisplay, para2: GC, para3: cint): cint{.libx11.}
-proc XSetGraphicsExposures*(para1: PDisplay, para2: GC, para3: XBool): cint{.
-    libx11.}
-proc XSetIconName*(para1: PDisplay, para2: Window, para3: cstring): cint{.
-    libx11.}
-proc XSetInputFocus*(para1: PDisplay, para2: Window, para3: cint, para4: Time): cint{.
-    libx11.}
-proc XSetLineAttributes*(para1: PDisplay, para2: GC, para3: cuint, para4: cint,
-                         para5: cint, para6: cint): cint{.libx11.}
-proc XSetModifierMapping*(para1: PDisplay, para2: PXModifierKeymap): cint{.
-    libx11.}
-proc XSetPlaneMask*(para1: PDisplay, para2: GC, para3: culong): cint{.libx11.}
-proc XSetPointerMapping*(para1: PDisplay, para2: Pcuchar, para3: cint): cint{.
-    libx11.}
-proc XSetScreenSaver*(para1: PDisplay, para2: cint, para3: cint, para4: cint,
-                      para5: cint): cint{.libx11.}
-proc XSetSelectionOwner*(para1: PDisplay, para2: Atom, para3: Window,
-                         para4: Time): cint{.libx11.}
-proc XSetState*(para1: PDisplay, para2: GC, para3: culong, para4: culong,
-                para5: cint, para6: culong): cint{.libx11.}
-proc XSetStipple*(para1: PDisplay, para2: GC, para3: Pixmap): cint{.libx11.}
-proc XSetSubwindowMode*(para1: PDisplay, para2: GC, para3: cint): cint{.libx11.}
-proc XSetTSOrigin*(para1: PDisplay, para2: GC, para3: cint, para4: cint): cint{.
-    libx11.}
-proc XSetTile*(para1: PDisplay, para2: GC, para3: Pixmap): cint{.libx11.}
-proc XSetWindowBackground*(para1: PDisplay, para2: Window, para3: culong): cint{.
-    libx11.}
-proc XSetWindowBackgroundPixmap*(para1: PDisplay, para2: Window, para3: Pixmap): cint{.
-    libx11.}
-proc XSetWindowBorder*(para1: PDisplay, para2: Window, para3: culong): cint{.
-    libx11.}
-proc XSetWindowBorderPixmap*(para1: PDisplay, para2: Window, para3: Pixmap): cint{.
-    libx11.}
-proc XSetWindowBorderWidth*(para1: PDisplay, para2: Window, para3: cuint): cint{.
-    libx11.}
-proc XSetWindowColormap*(para1: PDisplay, para2: Window, para3: Colormap): cint{.
-    libx11.}
-proc XStoreBuffer*(para1: PDisplay, para2: cstring, para3: cint, para4: cint): cint{.
-    libx11.}
-proc XStoreBytes*(para1: PDisplay, para2: cstring, para3: cint): cint{.libx11.}
-proc XStoreColor*(para1: PDisplay, para2: Colormap, para3: PXColor): cint{.
-    libx11.}
-proc XStoreColors*(para1: PDisplay, para2: Colormap, para3: PXColor,
-                   para4: cint): cint{.libx11.}
-proc XStoreName*(para1: PDisplay, para2: Window, para3: cstring): cint{.libx11.}
-proc XStoreNamedColor*(para1: PDisplay, para2: Colormap, para3: cstring,
-                       para4: culong, para5: cint): cint{.libx11.}
-proc XSync*(para1: PDisplay, para2: XBool): cint{.libx11.}
-proc XTextExtents*(para1: PXFontStruct, para2: cstring, para3: cint,
-                   para4: Pcint, para5: Pcint, para6: Pcint, para7: PXCharStruct): cint{.
-    libx11.}
-proc XTextExtents16*(para1: PXFontStruct, para2: PXChar2b, para3: cint,
-                     para4: Pcint, para5: Pcint, para6: Pcint,
-                     para7: PXCharStruct): cint{.libx11.}
-proc XTextWidth*(para1: PXFontStruct, para2: cstring, para3: cint): cint{.libx11.}
-proc XTextWidth16*(para1: PXFontStruct, para2: PXChar2b, para3: cint): cint{.
-    libx11.}
-proc XTranslateCoordinates*(para1: PDisplay, para2: Window, para3: Window,
-                            para4: cint, para5: cint, para6: Pcint,
-                            para7: Pcint, para8: PWindow): XBool{.libx11.}
-proc XUndefineCursor*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XUngrabButton*(para1: PDisplay, para2: cuint, para3: cuint, para4: Window): cint{.
-    libx11.}
-proc XUngrabKey*(para1: PDisplay, para2: cint, para3: cuint, para4: Window): cint{.
-    libx11.}
-proc XUngrabKeyboard*(para1: PDisplay, para2: Time): cint{.libx11.}
-proc XUngrabPointer*(para1: PDisplay, para2: Time): cint{.libx11.}
-proc XUngrabServer*(para1: PDisplay): cint{.libx11.}
-proc XUninstallColormap*(para1: PDisplay, para2: Colormap): cint{.libx11.}
-proc XUnloadFont*(para1: PDisplay, para2: Font): cint{.libx11.}
-proc XUnmapSubwindows*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XUnmapWindow*(para1: PDisplay, para2: Window): cint{.libx11.}
-proc XVendorRelease*(para1: PDisplay): cint{.libx11.}
-proc XWarpPointer*(para1: PDisplay, para2: Window, para3: Window, para4: cint,
-                   para5: cint, para6: cuint, para7: cuint, para8: cint,
-                   para9: cint): cint{.libx11.}
-proc XWidthMMOfScreen*(para1: PScreen): cint{.libx11.}
-proc XWidthOfScreen*(para1: PScreen): cint{.libx11.}
-proc XWindowEvent*(para1: PDisplay, para2: Window, para3: clong, para4: PXEvent): cint{.
-    libx11.}
-proc XWriteBitmapFile*(para1: PDisplay, para2: cstring, para3: Pixmap,
-                       para4: cuint, para5: cuint, para6: cint, para7: cint): cint{.
-    libx11.}
-proc XSupportsLocale*(): XBool{.libx11.}
-proc XSetLocaleModifiers*(para1: cstring): cstring{.libx11.}
-proc XOpenOM*(para1: PDisplay, para2: PXrmHashBucketRec, para3: cstring,
-              para4: cstring): XOM{.libx11.}
-proc XCloseOM*(para1: XOM): Status{.libx11.}
-proc XSetOMValues*(para1: XOM): cstring{.varargs, libx11.}
-proc XGetOMValues*(para1: XOM): cstring{.varargs, libx11.}
-proc XDisplayOfOM*(para1: XOM): PDisplay{.libx11.}
-proc XLocaleOfOM*(para1: XOM): cstring{.libx11.}
-proc XCreateOC*(para1: XOM): XOC{.varargs, libx11.}
-proc XDestroyOC*(para1: XOC){.libx11.}
-proc XOMOfOC*(para1: XOC): XOM{.libx11.}
-proc XSetOCValues*(para1: XOC): cstring{.varargs, libx11.}
-proc XGetOCValues*(para1: XOC): cstring{.varargs, libx11.}
-proc XCreateFontSet*(para1: PDisplay, para2: cstring, para3: PPPchar,
-                     para4: Pcint, para5: PPchar): XFontSet{.libx11.}
-proc XFreeFontSet*(para1: PDisplay, para2: XFontSet){.libx11.}
-proc XFontsOfFontSet*(para1: XFontSet, para2: PPPXFontStruct, para3: PPPchar): cint{.
-    libx11.}
-proc XBaseFontNameListOfFontSet*(para1: XFontSet): cstring{.libx11.}
-proc XLocaleOfFontSet*(para1: XFontSet): cstring{.libx11.}
-proc XContextDependentDrawing*(para1: XFontSet): XBool{.libx11.}
-proc XDirectionalDependentDrawing*(para1: XFontSet): XBool{.libx11.}
-proc XContextualDrawing*(para1: XFontSet): XBool{.libx11.}
-proc XExtentsOfFontSet*(para1: XFontSet): PXFontSetExtents{.libx11.}
-proc XmbTextEscapement*(para1: XFontSet, para2: cstring, para3: cint): cint{.
-    libx11.}
-proc XwcTextEscapement*(para1: XFontSet, para2: PWideChar, para3: cint): cint{.
-    libx11.}
-proc Xutf8TextEscapement*(para1: XFontSet, para2: cstring, para3: cint): cint{.
-    libx11.}
-proc XmbTextExtents*(para1: XFontSet, para2: cstring, para3: cint,
-                     para4: PXRectangle, para5: PXRectangle): cint{.libx11.}
-proc XwcTextExtents*(para1: XFontSet, para2: PWideChar, para3: cint,
-                     para4: PXRectangle, para5: PXRectangle): cint{.libx11.}
-proc Xutf8TextExtents*(para1: XFontSet, para2: cstring, para3: cint,
-                       para4: PXRectangle, para5: PXRectangle): cint{.libx11.}
-proc XmbTextPerCharExtents*(para1: XFontSet, para2: cstring, para3: cint,
-                            para4: PXRectangle, para5: PXRectangle, para6: cint,
-                            para7: Pcint, para8: PXRectangle, para9: PXRectangle): Status{.
-    libx11.}
-proc XwcTextPerCharExtents*(para1: XFontSet, para2: PWideChar, para3: cint,
-                            para4: PXRectangle, para5: PXRectangle, para6: cint,
-                            para7: Pcint, para8: PXRectangle, para9: PXRectangle): Status{.
-    libx11.}
-proc Xutf8TextPerCharExtents*(para1: XFontSet, para2: cstring, para3: cint,
-                              para4: PXRectangle, para5: PXRectangle,
-                              para6: cint, para7: Pcint, para8: PXRectangle,
-                              para9: PXRectangle): Status{.libx11.}
-proc XmbDrawText*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
-                  para5: cint, para6: PXmbTextItem, para7: cint){.libx11.}
-proc XwcDrawText*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
-                  para5: cint, para6: PXwcTextItem, para7: cint){.libx11.}
-proc Xutf8DrawText*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
-                    para5: cint, para6: PXmbTextItem, para7: cint){.libx11.}
-proc XmbDrawString*(para1: PDisplay, para2: Drawable, para3: XFontSet,
-                    para4: GC, para5: cint, para6: cint, para7: cstring,
-                    para8: cint){.libx11.}
-proc XwcDrawString*(para1: PDisplay, para2: Drawable, para3: XFontSet,
-                    para4: GC, para5: cint, para6: cint, para7: PWideChar,
-                    para8: cint){.libx11.}
-proc Xutf8DrawString*(para1: PDisplay, para2: Drawable, para3: XFontSet,
-                      para4: GC, para5: cint, para6: cint, para7: cstring,
-                      para8: cint){.libx11.}
-proc XmbDrawImageString*(para1: PDisplay, para2: Drawable, para3: XFontSet,
-                         para4: GC, para5: cint, para6: cint, para7: cstring,
-                         para8: cint){.libx11.}
-proc XwcDrawImageString*(para1: PDisplay, para2: Drawable, para3: XFontSet,
-                         para4: GC, para5: cint, para6: cint, para7: PWideChar,
-                         para8: cint){.libx11.}
-proc Xutf8DrawImageString*(para1: PDisplay, para2: Drawable, para3: XFontSet,
-                           para4: GC, para5: cint, para6: cint, para7: cstring,
-                           para8: cint){.libx11.}
-proc XOpenIM*(para1: PDisplay, para2: PXrmHashBucketRec, para3: cstring,
-              para4: cstring): XIM{.libx11.}
-proc XCloseIM*(para1: XIM): Status{.libx11.}
-proc XGetIMValues*(para1: XIM): cstring{.varargs, libx11.}
-proc XSetIMValues*(para1: XIM): cstring{.varargs, libx11.}
-proc XDisplayOfIM*(para1: XIM): PDisplay{.libx11.}
-proc XLocaleOfIM*(para1: XIM): cstring{.libx11.}
-proc XCreateIC*(para1: XIM): XIC{.varargs, libx11.}
-proc XDestroyIC*(para1: XIC){.libx11.}
-proc XSetICFocus*(para1: XIC){.libx11.}
-proc XUnsetICFocus*(para1: XIC){.libx11.}
-proc XwcResetIC*(para1: XIC): PWideChar{.libx11.}
-proc XmbResetIC*(para1: XIC): cstring{.libx11.}
-proc Xutf8ResetIC*(para1: XIC): cstring{.libx11.}
-proc XSetICValues*(para1: XIC): cstring{.varargs, libx11.}
-proc XGetICValues*(para1: XIC): cstring{.varargs, libx11.}
-proc XIMOfIC*(para1: XIC): XIM{.libx11.}
-proc XFilterEvent*(para1: PXEvent, para2: Window): XBool{.libx11.}
-proc XmbLookupString*(para1: XIC, para2: PXKeyPressedEvent, para3: cstring,
-                      para4: cint, para5: PKeySym, para6: PStatus): cint{.libx11.}
-proc XwcLookupString*(para1: XIC, para2: PXKeyPressedEvent, para3: PWideChar,
-                      para4: cint, para5: PKeySym, para6: PStatus): cint{.libx11.}
-proc Xutf8LookupString*(para1: XIC, para2: PXKeyPressedEvent, para3: cstring,
-                        para4: cint, para5: PKeySym, para6: PStatus): cint{.
-    libx11.}
-proc XVaCreateNestedList*(unused: cint): XVaNestedList{.varargs, libx11.}
-proc XRegisterIMInstantiateCallback*(para1: PDisplay, para2: PXrmHashBucketRec,
-                                     para3: cstring, para4: cstring,
-                                     para5: XIDProc, para6: XPointer): XBool{.
-    libx11.}
-proc XUnregisterIMInstantiateCallback*(para1: PDisplay,
-                                       para2: PXrmHashBucketRec, para3: cstring,
-                                       para4: cstring, para5: XIDProc,
-                                       para6: XPointer): XBool{.libx11.}
-type
-  XConnectionWatchProc* = proc (para1: PDisplay, para2: XPointer, para3: cint,
-                                 para4: XBool, para5: PXPointer){.cdecl.}
+proc XGrabButton*(
+  para1: PDisplay,
+  para2: cuint,
+  para3: cuint,
+  para4: Window,
+  para5: XBool,
+  para6: cuint,
+  para7: cint,
+  para8: cint,
+  para9: Window,
+  para10: Cursor,
+): cint {.libx11.}
+
+proc XGrabKey*(
+  para1: PDisplay,
+  para2: cint,
+  para3: cuint,
+  para4: Window,
+  para5: XBool,
+  para6: cint,
+  para7: cint,
+): cint {.libx11.}
+
+proc XGrabKeyboard*(
+  para1: PDisplay, para2: Window, para3: XBool, para4: cint, para5: cint, para6: Time
+): cint {.libx11.}
+
+proc XGrabPointer*(
+  para1: PDisplay,
+  para2: Window,
+  para3: XBool,
+  para4: cuint,
+  para5: cint,
+  para6: cint,
+  para7: Window,
+  para8: Cursor,
+  para9: Time,
+): cint {.libx11.}
+
+proc XGrabServer*(para1: PDisplay): cint {.libx11.}
+proc XHeightMMOfScreen*(para1: PScreen): cint {.libx11.}
+proc XHeightOfScreen*(para1: PScreen): cint {.libx11.}
+proc XIfEvent*(
+  para1: PDisplay, para2: PXEvent, para3: funcifevent, para4: XPointer
+): cint {.libx11.}
+
+proc XImageByteOrder*(para1: PDisplay): cint {.libx11.}
+proc XInstallColormap*(para1: PDisplay, para2: Colormap): cint {.libx11.}
+proc XKeysymToKeycode*(para1: PDisplay, para2: KeySym): KeyCode {.libx11.}
+proc XKillClient*(para1: PDisplay, para2: XID): cint {.libx11.}
+proc XLookupColor*(
+  para1: PDisplay, para2: Colormap, para3: cstring, para4: PXColor, para5: PXColor
+): Status {.libx11.}
+
+proc XLowerWindow*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XMapRaised*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XMapSubwindows*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XMapWindow*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XMaskEvent*(para1: PDisplay, para2: clong, para3: PXEvent): cint {.libx11.}
+proc XMaxCmapsOfScreen*(para1: PScreen): cint {.libx11.}
+proc XMinCmapsOfScreen*(para1: PScreen): cint {.libx11.}
+proc XMoveResizeWindow*(
+  para1: PDisplay, para2: Window, para3: cint, para4: cint, para5: cuint, para6: cuint
+): cint {.libx11.}
+
+proc XMoveWindow*(
+  para1: PDisplay, para2: Window, para3: cint, para4: cint
+): cint {.libx11.}
+
+proc XNextEvent*(para1: PDisplay, para2: PXEvent): cint {.libx11.}
+proc XNoOp*(para1: PDisplay): cint {.libx11.}
+proc XParseColor*(
+  para1: PDisplay, para2: Colormap, para3: cstring, para4: PXColor
+): Status {.libx11.}
+
+proc XParseGeometry*(
+  para1: cstring, para2: Pcint, para3: Pcint, para4: Pcuint, para5: Pcuint
+): cint {.libx11.}
+
+proc XPeekEvent*(para1: PDisplay, para2: PXEvent): cint {.libx11.}
+proc XPeekIfEvent*(
+  para1: PDisplay, para2: PXEvent, para3: funcifevent, para4: XPointer
+): cint {.libx11.}
+
+proc XPending*(para1: PDisplay): cint {.libx11.}
+proc XPlanesOfScreen*(para1: PScreen): cint {.libx11.}
+proc XProtocolRevision*(para1: PDisplay): cint {.libx11.}
+proc XProtocolVersion*(para1: PDisplay): cint {.libx11.}
+proc XPutBackEvent*(para1: PDisplay, para2: PXEvent): cint {.libx11.}
+proc XPutImage*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: PXImage,
+  para5: cint,
+  para6: cint,
+  para7: cint,
+  para8: cint,
+  para9: cuint,
+  para10: cuint,
+): cint {.libx11.}
+
+proc XQLength*(para1: PDisplay): cint {.libx11.}
+proc XQueryBestCursor*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: cuint,
+  para4: cuint,
+  para5: Pcuint,
+  para6: Pcuint,
+): Status {.libx11.}
+
+proc XQueryBestSize*(
+  para1: PDisplay,
+  para2: cint,
+  para3: Drawable,
+  para4: cuint,
+  para5: cuint,
+  para6: Pcuint,
+  para7: Pcuint,
+): Status {.libx11.}
+
+proc XQueryBestStipple*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: cuint,
+  para4: cuint,
+  para5: Pcuint,
+  para6: Pcuint,
+): Status {.libx11.}
+
+proc XQueryBestTile*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: cuint,
+  para4: cuint,
+  para5: Pcuint,
+  para6: Pcuint,
+): Status {.libx11.}
+
+proc XQueryColor*(para1: PDisplay, para2: Colormap, para3: PXColor): cint {.libx11.}
+proc XQueryColors*(
+  para1: PDisplay, para2: Colormap, para3: PXColor, para4: cint
+): cint {.libx11.}
+
+proc XQueryExtension*(
+  para1: PDisplay, para2: cstring, para3: Pcint, para4: Pcint, para5: Pcint
+): XBool {.libx11.} #?
+
+proc XQueryKeymap*(para1: PDisplay, para2: chararr32): cint {.libx11.}
+proc XQueryPointer*(
+  para1: PDisplay,
+  para2: Window,
+  para3: PWindow,
+  para4: PWindow,
+  para5: Pcint,
+  para6: Pcint,
+  para7: Pcint,
+  para8: Pcint,
+  para9: Pcuint,
+): XBool {.libx11.}
+
+proc XQueryTextExtents*(
+  para1: PDisplay,
+  para2: XID,
+  para3: cstring,
+  para4: cint,
+  para5: Pcint,
+  para6: Pcint,
+  para7: Pcint,
+  para8: PXCharStruct,
+): cint {.libx11.}
+
+proc XQueryTextExtents16*(
+  para1: PDisplay,
+  para2: XID,
+  para3: PXChar2b,
+  para4: cint,
+  para5: Pcint,
+  para6: Pcint,
+  para7: Pcint,
+  para8: PXCharStruct,
+): cint {.libx11.}
+
+proc XQueryTree*(
+  para1: PDisplay,
+  para2: Window,
+  para3: PWindow,
+  para4: PWindow,
+  para5: PPWindow,
+  para6: Pcuint,
+): Status {.libx11.}
+
+proc XRaiseWindow*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XReadBitmapFile*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: cstring,
+  para4: Pcuint,
+  para5: Pcuint,
+  para6: PPixmap,
+  para7: Pcint,
+  para8: Pcint,
+): cint {.libx11.}
+
+proc XReadBitmapFileData*(
+  para1: cstring,
+  para2: Pcuint,
+  para3: Pcuint,
+  para4: PPcuchar,
+  para5: Pcint,
+  para6: Pcint,
+): cint {.libx11.}
+
+proc XRebindKeysym*(
+  para1: PDisplay,
+  para2: KeySym,
+  para3: PKeySym,
+  para4: cint,
+  para5: Pcuchar,
+  para6: cint,
+): cint {.libx11.}
+
+proc XRecolorCursor*(
+  para1: PDisplay, para2: Cursor, para3: PXColor, para4: PXColor
+): cint {.libx11.}
+
+proc XRefreshKeyboardMapping*(para1: PXMappingEvent): cint {.libx11.}
+proc XRemoveFromSaveSet*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XRemoveHost*(para1: PDisplay, para2: PXHostAddress): cint {.libx11.}
+proc XRemoveHosts*(para1: PDisplay, para2: PXHostAddress, para3: cint): cint {.libx11.}
+proc XReparentWindow*(
+  para1: PDisplay, para2: Window, para3: Window, para4: cint, para5: cint
+): cint {.libx11.}
+
+proc XResetScreenSaver*(para1: PDisplay): cint {.libx11.}
+proc XResizeWindow*(
+  para1: PDisplay, para2: Window, para3: cuint, para4: cuint
+): cint {.libx11.}
+
+proc XRestackWindows*(para1: PDisplay, para2: PWindow, para3: cint): cint {.libx11.}
+proc XRotateBuffers*(para1: PDisplay, para2: cint): cint {.libx11.}
+proc XRotateWindowProperties*(
+  para1: PDisplay, para2: Window, para3: PAtom, para4: cint, para5: cint
+): cint {.libx11.}
+
+proc XScreenCount*(para1: PDisplay): cint {.libx11.}
+proc XSelectInput*(para1: PDisplay, para2: Window, para3: clong): cint {.libx11.}
+proc XSendEvent*(
+  para1: PDisplay, para2: Window, para3: XBool, para4: clong, para5: PXEvent
+): Status {.libx11.}
+
+proc XSetAccessControl*(para1: PDisplay, para2: cint): cint {.libx11.}
+proc XSetArcMode*(para1: PDisplay, para2: GC, para3: cint): cint {.libx11.}
+proc XSetBackground*(para1: PDisplay, para2: GC, para3: culong): cint {.libx11.}
+proc XSetClipMask*(para1: PDisplay, para2: GC, para3: Pixmap): cint {.libx11.}
+proc XSetClipOrigin*(
+  para1: PDisplay, para2: GC, para3: cint, para4: cint
+): cint {.libx11.}
+
+proc XSetClipRectangles*(
+  para1: PDisplay,
+  para2: GC,
+  para3: cint,
+  para4: cint,
+  para5: PXRectangle,
+  para6: cint,
+  para7: cint,
+): cint {.libx11.}
+
+proc XSetCloseDownMode*(para1: PDisplay, para2: cint): cint {.libx11.}
+proc XSetCommand*(
+  para1: PDisplay, para2: Window, para3: PPchar, para4: cint
+): cint {.libx11.}
+
+proc XSetDashes*(
+  para1: PDisplay, para2: GC, para3: cint, para4: cstring, para5: cint
+): cint {.libx11.}
+
+proc XSetFillRule*(para1: PDisplay, para2: GC, para3: cint): cint {.libx11.}
+proc XSetFillStyle*(para1: PDisplay, para2: GC, para3: cint): cint {.libx11.}
+proc XSetFont*(para1: PDisplay, para2: GC, para3: Font): cint {.libx11.}
+proc XSetFontPath*(para1: PDisplay, para2: PPchar, para3: cint): cint {.libx11.}
+proc XSetForeground*(para1: PDisplay, para2: GC, para3: culong): cint {.libx11.}
+proc XSetFunction*(para1: PDisplay, para2: GC, para3: cint): cint {.libx11.}
+proc XSetGraphicsExposures*(para1: PDisplay, para2: GC, para3: XBool): cint {.libx11.}
+proc XSetIconName*(para1: PDisplay, para2: Window, para3: cstring): cint {.libx11.}
+proc XSetInputFocus*(
+  para1: PDisplay, para2: Window, para3: cint, para4: Time
+): cint {.libx11.}
+
+proc XSetLineAttributes*(
+  para1: PDisplay, para2: GC, para3: cuint, para4: cint, para5: cint, para6: cint
+): cint {.libx11.}
+
+proc XSetModifierMapping*(para1: PDisplay, para2: PXModifierKeymap): cint {.libx11.}
+proc XSetPlaneMask*(para1: PDisplay, para2: GC, para3: culong): cint {.libx11.}
+proc XSetPointerMapping*(para1: PDisplay, para2: Pcuchar, para3: cint): cint {.libx11.}
+proc XSetScreenSaver*(
+  para1: PDisplay, para2: cint, para3: cint, para4: cint, para5: cint
+): cint {.libx11.}
+
+proc XSetSelectionOwner*(
+  para1: PDisplay, para2: Atom, para3: Window, para4: Time
+): cint {.libx11.}
+
+proc XSetState*(
+  para1: PDisplay, para2: GC, para3: culong, para4: culong, para5: cint, para6: culong
+): cint {.libx11.}
+
+proc XSetStipple*(para1: PDisplay, para2: GC, para3: Pixmap): cint {.libx11.}
+proc XSetSubwindowMode*(para1: PDisplay, para2: GC, para3: cint): cint {.libx11.}
+proc XSetTSOrigin*(
+  para1: PDisplay, para2: GC, para3: cint, para4: cint
+): cint {.libx11.}
+
+proc XSetTile*(para1: PDisplay, para2: GC, para3: Pixmap): cint {.libx11.}
+proc XSetWindowBackground*(
+  para1: PDisplay, para2: Window, para3: culong
+): cint {.libx11.}
+
+proc XSetWindowBackgroundPixmap*(
+  para1: PDisplay, para2: Window, para3: Pixmap
+): cint {.libx11.}
+
+proc XSetWindowBorder*(para1: PDisplay, para2: Window, para3: culong): cint {.libx11.}
+proc XSetWindowBorderPixmap*(
+  para1: PDisplay, para2: Window, para3: Pixmap
+): cint {.libx11.}
+
+proc XSetWindowBorderWidth*(
+  para1: PDisplay, para2: Window, para3: cuint
+): cint {.libx11.}
+
+proc XSetWindowColormap*(
+  para1: PDisplay, para2: Window, para3: Colormap
+): cint {.libx11.}
+
+proc XStoreBuffer*(
+  para1: PDisplay, para2: cstring, para3: cint, para4: cint
+): cint {.libx11.}
+
+proc XStoreBytes*(para1: PDisplay, para2: cstring, para3: cint): cint {.libx11.}
+proc XStoreColor*(para1: PDisplay, para2: Colormap, para3: PXColor): cint {.libx11.}
+proc XStoreColors*(
+  para1: PDisplay, para2: Colormap, para3: PXColor, para4: cint
+): cint {.libx11.}
 
-proc XInternalConnectionNumbers*(para1: PDisplay, para2: PPcint, para3: Pcint): Status{.
-    libx11.}
-proc XProcessInternalConnection*(para1: PDisplay, para2: cint){.libx11.}
-proc XAddConnectionWatch*(para1: PDisplay, para2: XConnectionWatchProc,
-                          para3: XPointer): Status{.libx11.}
-proc XRemoveConnectionWatch*(para1: PDisplay, para2: XConnectionWatchProc,
-                             para3: XPointer){.libx11.}
-proc XSetAuthorization*(para1: cstring, para2: cint, para3: cstring, para4: cint){.
-    libx11.}
+proc XStoreName*(para1: PDisplay, para2: Window, para3: cstring): cint {.libx11.}
+proc XStoreNamedColor*(
+  para1: PDisplay, para2: Colormap, para3: cstring, para4: culong, para5: cint
+): cint {.libx11.}
+
+proc XSync*(para1: PDisplay, para2: XBool): cint {.libx11.}
+proc XTextExtents*(
+  para1: PXFontStruct,
+  para2: cstring,
+  para3: cint,
+  para4: Pcint,
+  para5: Pcint,
+  para6: Pcint,
+  para7: PXCharStruct,
+): cint {.libx11.}
+
+proc XTextExtents16*(
+  para1: PXFontStruct,
+  para2: PXChar2b,
+  para3: cint,
+  para4: Pcint,
+  para5: Pcint,
+  para6: Pcint,
+  para7: PXCharStruct,
+): cint {.libx11.}
+
+proc XTextWidth*(para1: PXFontStruct, para2: cstring, para3: cint): cint {.libx11.}
+proc XTextWidth16*(para1: PXFontStruct, para2: PXChar2b, para3: cint): cint {.libx11.}
+proc XTranslateCoordinates*(
+  para1: PDisplay,
+  para2: Window,
+  para3: Window,
+  para4: cint,
+  para5: cint,
+  para6: Pcint,
+  para7: Pcint,
+  para8: PWindow,
+): XBool {.libx11.}
+
+proc XUndefineCursor*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XUngrabButton*(
+  para1: PDisplay, para2: cuint, para3: cuint, para4: Window
+): cint {.libx11.}
+
+proc XUngrabKey*(
+  para1: PDisplay, para2: cint, para3: cuint, para4: Window
+): cint {.libx11.}
+
+proc XUngrabKeyboard*(para1: PDisplay, para2: Time): cint {.libx11.}
+proc XUngrabPointer*(para1: PDisplay, para2: Time): cint {.libx11.}
+proc XUngrabServer*(para1: PDisplay): cint {.libx11.}
+proc XUninstallColormap*(para1: PDisplay, para2: Colormap): cint {.libx11.}
+proc XUnloadFont*(para1: PDisplay, para2: Font): cint {.libx11.}
+proc XUnmapSubwindows*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XUnmapWindow*(para1: PDisplay, para2: Window): cint {.libx11.}
+proc XVendorRelease*(para1: PDisplay): cint {.libx11.}
+proc XWarpPointer*(
+  para1: PDisplay,
+  para2: Window,
+  para3: Window,
+  para4: cint,
+  para5: cint,
+  para6: cuint,
+  para7: cuint,
+  para8: cint,
+  para9: cint,
+): cint {.libx11.}
+
+proc XWidthMMOfScreen*(para1: PScreen): cint {.libx11.}
+proc XWidthOfScreen*(para1: PScreen): cint {.libx11.}
+proc XWindowEvent*(
+  para1: PDisplay, para2: Window, para3: clong, para4: PXEvent
+): cint {.libx11.}
+
+proc XWriteBitmapFile*(
+  para1: PDisplay,
+  para2: cstring,
+  para3: Pixmap,
+  para4: cuint,
+  para5: cuint,
+  para6: cint,
+  para7: cint,
+): cint {.libx11.}
+
+proc XSupportsLocale*(): XBool {.libx11.}
+proc XSetLocaleModifiers*(para1: cstring): cstring {.libx11.}
+proc XOpenOM*(
+  para1: PDisplay, para2: PXrmHashBucketRec, para3: cstring, para4: cstring
+): XOM {.libx11.}
+
+proc XCloseOM*(para1: XOM): Status {.libx11.}
+proc XSetOMValues*(para1: XOM): cstring {.varargs, libx11.}
+proc XGetOMValues*(para1: XOM): cstring {.varargs, libx11.}
+proc XDisplayOfOM*(para1: XOM): PDisplay {.libx11.}
+proc XLocaleOfOM*(para1: XOM): cstring {.libx11.}
+proc XCreateOC*(para1: XOM): XOC {.varargs, libx11.}
+proc XDestroyOC*(para1: XOC) {.libx11.}
+proc XOMOfOC*(para1: XOC): XOM {.libx11.}
+proc XSetOCValues*(para1: XOC): cstring {.varargs, libx11.}
+proc XGetOCValues*(para1: XOC): cstring {.varargs, libx11.}
+proc XCreateFontSet*(
+  para1: PDisplay, para2: cstring, para3: PPPchar, para4: Pcint, para5: PPchar
+): XFontSet {.libx11.}
+
+proc XFreeFontSet*(para1: PDisplay, para2: XFontSet) {.libx11.}
+proc XFontsOfFontSet*(
+  para1: XFontSet, para2: PPPXFontStruct, para3: PPPchar
+): cint {.libx11.}
+
+proc XBaseFontNameListOfFontSet*(para1: XFontSet): cstring {.libx11.}
+proc XLocaleOfFontSet*(para1: XFontSet): cstring {.libx11.}
+proc XContextDependentDrawing*(para1: XFontSet): XBool {.libx11.}
+proc XDirectionalDependentDrawing*(para1: XFontSet): XBool {.libx11.}
+proc XContextualDrawing*(para1: XFontSet): XBool {.libx11.}
+proc XExtentsOfFontSet*(para1: XFontSet): PXFontSetExtents {.libx11.}
+proc XmbTextEscapement*(para1: XFontSet, para2: cstring, para3: cint): cint {.libx11.}
+proc XwcTextEscapement*(para1: XFontSet, para2: PWideChar, para3: cint): cint {.libx11.}
+proc Xutf8TextEscapement*(para1: XFontSet, para2: cstring, para3: cint): cint {.libx11.}
+proc XmbTextExtents*(
+  para1: XFontSet, para2: cstring, para3: cint, para4: PXRectangle, para5: PXRectangle
+): cint {.libx11.}
+
+proc XwcTextExtents*(
+  para1: XFontSet, para2: PWideChar, para3: cint, para4: PXRectangle, para5: PXRectangle
+): cint {.libx11.}
+
+proc Xutf8TextExtents*(
+  para1: XFontSet, para2: cstring, para3: cint, para4: PXRectangle, para5: PXRectangle
+): cint {.libx11.}
+
+proc XmbTextPerCharExtents*(
+  para1: XFontSet,
+  para2: cstring,
+  para3: cint,
+  para4: PXRectangle,
+  para5: PXRectangle,
+  para6: cint,
+  para7: Pcint,
+  para8: PXRectangle,
+  para9: PXRectangle,
+): Status {.libx11.}
+
+proc XwcTextPerCharExtents*(
+  para1: XFontSet,
+  para2: PWideChar,
+  para3: cint,
+  para4: PXRectangle,
+  para5: PXRectangle,
+  para6: cint,
+  para7: Pcint,
+  para8: PXRectangle,
+  para9: PXRectangle,
+): Status {.libx11.}
+
+proc Xutf8TextPerCharExtents*(
+  para1: XFontSet,
+  para2: cstring,
+  para3: cint,
+  para4: PXRectangle,
+  para5: PXRectangle,
+  para6: cint,
+  para7: Pcint,
+  para8: PXRectangle,
+  para9: PXRectangle,
+): Status {.libx11.}
+
+proc XmbDrawText*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: cint,
+  para5: cint,
+  para6: PXmbTextItem,
+  para7: cint,
+) {.libx11.}
+
+proc XwcDrawText*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: cint,
+  para5: cint,
+  para6: PXwcTextItem,
+  para7: cint,
+) {.libx11.}
+
+proc Xutf8DrawText*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: cint,
+  para5: cint,
+  para6: PXmbTextItem,
+  para7: cint,
+) {.libx11.}
+
+proc XmbDrawString*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: XFontSet,
+  para4: GC,
+  para5: cint,
+  para6: cint,
+  para7: cstring,
+  para8: cint,
+) {.libx11.}
+
+proc XwcDrawString*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: XFontSet,
+  para4: GC,
+  para5: cint,
+  para6: cint,
+  para7: PWideChar,
+  para8: cint,
+) {.libx11.}
+
+proc Xutf8DrawString*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: XFontSet,
+  para4: GC,
+  para5: cint,
+  para6: cint,
+  para7: cstring,
+  para8: cint,
+) {.libx11.}
+
+proc XmbDrawImageString*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: XFontSet,
+  para4: GC,
+  para5: cint,
+  para6: cint,
+  para7: cstring,
+  para8: cint,
+) {.libx11.}
+
+proc XwcDrawImageString*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: XFontSet,
+  para4: GC,
+  para5: cint,
+  para6: cint,
+  para7: PWideChar,
+  para8: cint,
+) {.libx11.}
+
+proc Xutf8DrawImageString*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: XFontSet,
+  para4: GC,
+  para5: cint,
+  para6: cint,
+  para7: cstring,
+  para8: cint,
+) {.libx11.}
+
+proc XOpenIM*(
+  para1: PDisplay, para2: PXrmHashBucketRec, para3: cstring, para4: cstring
+): XIM {.libx11.}
+
+proc XCloseIM*(para1: XIM): Status {.libx11.}
+proc XGetIMValues*(para1: XIM): cstring {.varargs, libx11.}
+proc XSetIMValues*(para1: XIM): cstring {.varargs, libx11.}
+proc XDisplayOfIM*(para1: XIM): PDisplay {.libx11.}
+proc XLocaleOfIM*(para1: XIM): cstring {.libx11.}
+proc XCreateIC*(para1: XIM): XIC {.varargs, libx11.}
+proc XDestroyIC*(para1: XIC) {.libx11.}
+proc XSetICFocus*(para1: XIC) {.libx11.}
+proc XUnsetICFocus*(para1: XIC) {.libx11.}
+proc XwcResetIC*(para1: XIC): PWideChar {.libx11.}
+proc XmbResetIC*(para1: XIC): cstring {.libx11.}
+proc Xutf8ResetIC*(para1: XIC): cstring {.libx11.}
+proc XSetICValues*(para1: XIC): cstring {.varargs, libx11.}
+proc XGetICValues*(para1: XIC): cstring {.varargs, libx11.}
+proc XIMOfIC*(para1: XIC): XIM {.libx11.}
+proc XFilterEvent*(para1: PXEvent, para2: Window): XBool {.libx11.}
+proc XmbLookupString*(
+  para1: XIC,
+  para2: PXKeyPressedEvent,
+  para3: cstring,
+  para4: cint,
+  para5: PKeySym,
+  para6: PStatus,
+): cint {.libx11.}
+
+proc XwcLookupString*(
+  para1: XIC,
+  para2: PXKeyPressedEvent,
+  para3: PWideChar,
+  para4: cint,
+  para5: PKeySym,
+  para6: PStatus,
+): cint {.libx11.}
+
+proc Xutf8LookupString*(
+  para1: XIC,
+  para2: PXKeyPressedEvent,
+  para3: cstring,
+  para4: cint,
+  para5: PKeySym,
+  para6: PStatus,
+): cint {.libx11.}
+
+proc XVaCreateNestedList*(unused: cint): XVaNestedList {.varargs, libx11.}
+proc XRegisterIMInstantiateCallback*(
+  para1: PDisplay,
+  para2: PXrmHashBucketRec,
+  para3: cstring,
+  para4: cstring,
+  para5: XIDProc,
+  para6: XPointer,
+): XBool {.libx11.}
+
+proc XUnregisterIMInstantiateCallback*(
+  para1: PDisplay,
+  para2: PXrmHashBucketRec,
+  para3: cstring,
+  para4: cstring,
+  para5: XIDProc,
+  para6: XPointer,
+): XBool {.libx11.}
+
+type XConnectionWatchProc* = proc(
+  para1: PDisplay, para2: XPointer, para3: cint, para4: XBool, para5: PXPointer
+) {.cdecl.}
+
+proc XInternalConnectionNumbers*(
+  para1: PDisplay, para2: PPcint, para3: Pcint
+): Status {.libx11.}
+
+proc XProcessInternalConnection*(para1: PDisplay, para2: cint) {.libx11.}
+proc XAddConnectionWatch*(
+  para1: PDisplay, para2: XConnectionWatchProc, para3: XPointer
+): Status {.libx11.}
+
+proc XRemoveConnectionWatch*(
+  para1: PDisplay, para2: XConnectionWatchProc, para3: XPointer
+) {.libx11.}
+
+proc XSetAuthorization*(
+  para1: cstring, para2: cint, para3: cstring, para4: cint
+) {.libx11.}
   #
   #  _Xmbtowc?
   #  _Xwctomb?
   #
+
 proc XGetEventData*(para1: PDisplay, para2: PXGenericEventCookie): XBool {.libX11.}
 proc XFreeEventData*(para1: PDisplay, para2: PXGenericEventCookie) {.libX11.}
 #when defined(MACROS):
@@ -1909,7 +2617,8 @@
 # implementation
 
 #when defined(MACROS):
-template privDisp: untyped = cast[PXPrivDisplay](dpy)
+template privDisp(): untyped =
+  cast[PXPrivDisplay](dpy)
 
 proc ConnectionNumber(dpy: PDisplay): cint =
   privDisp.fd
@@ -1999,8 +2708,9 @@
   privDisp.last_request_read
 
 # from fowltek/pointer_arithm, required for ScreenOfDisplay()
-proc offset[A] (some: ptr A; b: int): ptr A =
+proc offset[A](some: ptr A, b: int): ptr A =
   cast[ptr A](cast[int](some) + (b * sizeof(A)))
+
 proc ScreenOfDisplay(dpy: PDisplay, scr: cint): PScreen =
   #addr(((privDisp.screens)[scr]))
   privDisp.screens.offset(scr.int)
--- a/semicongine/thirdparty/x11/xrandr.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xrandr.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -24,11 +24,9 @@
 #  Author:  Jim Gettys, HP Labs, HP.
 #
 
-import
-  x, xlib
+import x, xlib
 
-const
-  libXrandr* = "libXrandr.so(.2|)"
+const libXrandr* = "libXrandr.so(.2|)"
 
 # * $XFree86: xc/include/extensions/randr.h,v 1.4 2001/11/24 07:24:58 keithp Exp $
 # *
@@ -86,19 +84,20 @@
   RANDR_MINOR* = 1
   RRNumberErrors* = 0
   RRNumberEvents* = 1
-  constX_RRQueryVersion* = 0          # we skip 1 to make old clients fail pretty immediately
+  constX_RRQueryVersion* = 0 # we skip 1 to make old clients fail pretty immediately
   X_RROldGetScreenInfo* = 1
-  X_RR1_0SetScreenConfig* = 2         # V1.0 apps share the same set screen config request id
+  X_RR1_0SetScreenConfig* = 2 # V1.0 apps share the same set screen config request id
   constX_RRSetScreenConfig* = 2
   X_RROldScreenChangeSelectInput* = 3 # 3 used to be ScreenChangeSelectInput; deprecated
   constX_RRSelectInput* = 4
-  constX_RRGetScreenInfo* = 5         # used in XRRSelectInput
+  constX_RRGetScreenInfo* = 5 # used in XRRSelectInput
   RRScreenChangeNotifyMask* = 1 shl 0
-  RRScreenChangeNotify* = 0           # used in the rotation field; rotation and reflection in 0.1 proto.
+  RRScreenChangeNotify* = 0
+    # used in the rotation field; rotation and reflection in 0.1 proto.
   RR_Rotate_0* = 1
   RR_Rotate_90* = 2
   RR_Rotate_180* = 4
-  RR_Rotate_270* = 8                  # new in 1.0 protocol, to allow reflection of screen
+  RR_Rotate_270* = 8 # new in 1.0 protocol, to allow reflection of screen
   RR_Reflect_X* = 16
   RR_Reflect_Y* = 32
   RRSetConfigSuccess* = 0
@@ -111,21 +110,23 @@
 
 type
   PXRRScreenSize* = ptr XRRScreenSize
-  XRRScreenSize*{.final.} = object #
-                                   #   Events.
-                                   #
+  XRRScreenSize* {.final.} = object
+    #
+    #   Events.
+    #
     width*, height*: cint
     mwidth*, mheight*: cint
 
-  XRRScreenChangeNotifyEvent*{.final.} = object # internal representation is private to the library
-    typ*: cint                                  # event base
-    serial*: culong                             # # of last request processed by server
-    send_event*: XBool                          # true if this came from a SendEvent request
-    display*: PDisplay                          # Display the event was read from
-    window*: Window                             # window which selected for this event
-    root*: Window                               # Root window for changed screen
-    timestamp*: Time                            # when the screen change occurred
-    config_timestamp*: Time                     # when the last configuration change
+  XRRScreenChangeNotifyEvent* {.final.} = object
+    # internal representation is private to the library
+    typ*: cint # event base
+    serial*: culong # # of last request processed by server
+    send_event*: XBool # true if this came from a SendEvent request
+    display*: PDisplay # Display the event was read from
+    window*: Window # window which selected for this event
+    root*: Window # Root window for changed screen
+    timestamp*: Time # when the screen change occurred
+    config_timestamp*: Time # when the last configuration change
     size_index*: SizeID
     subpixel_order*: SubpixelOrder
     rotation*: Rotation
@@ -181,22 +182,37 @@
     values: ptr UncheckedArray[clong]
 
   RandrFormat* = enum
-    randrFormat16bit = 16, randrFormat32bit = 32
+    randrFormat16bit = 16
+    randrFormat32bit = 32
+
+proc XRRQueryExtension*(
+  dpy: PDisplay, event_basep, error_basep: Pcint
+): XBool {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRQueryVersion*(
+  dpy: PDisplay, major_versionp: Pcint, minor_versionp: Pcint
+): Status {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRQueryOutputProperty*(
+  dpy: PDisplay, output: RROutput, property: Atom
+): PXRRPropertyInfo {.cdecl, dynlib: libXrandr, importc.}
 
-proc XRRQueryExtension*(dpy: PDisplay, event_basep, error_basep: Pcint): XBool{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRQueryVersion*(dpy: PDisplay, major_versionp: Pcint,
-                      minor_versionp: Pcint): Status{.cdecl, dynlib: libXrandr,
-    importc.}
-proc XRRQueryOutputProperty*(dpy: PDisplay, output: RROutput, property: Atom):
-    PXRRPropertyInfo {.cdecl, dynlib: libXrandr, importc.}
-proc XRRChangeOutputProperty*(dpy: PDisplay, output: RROutput,
-    property, kind: Atom, format, mode: cint, data: ptr cuchar, nelements: cint) {.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRGetScreenInfo*(dpy: PDisplay, draw: Drawable): PXRRScreenConfiguration{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRFreeScreenConfigInfo*(config: PXRRScreenConfiguration){.cdecl,
-    dynlib: libXrandr, importc.}
+proc XRRChangeOutputProperty*(
+  dpy: PDisplay,
+  output: RROutput,
+  property, kind: Atom,
+  format, mode: cint,
+  data: ptr cuchar,
+  nelements: cint,
+) {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRGetScreenInfo*(
+  dpy: PDisplay, draw: Drawable
+): PXRRScreenConfiguration {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRFreeScreenConfigInfo*(
+  config: PXRRScreenConfiguration
+) {.cdecl, dynlib: libXrandr, importc.}
   #
   #  Note that screen configuration changes are only permitted if the client can
   #  prove it has up to date configuration information.  We are trying to
@@ -204,32 +220,53 @@
   #  we want to ensure the client knows what it is talking about when requesting
   #  changes.
   #
-proc XRRSetScreenConfig*(dpy: PDisplay, config: PXRRScreenConfiguration,
-                         draw: Drawable, size_index: cint, rotation: Rotation,
-                         timestamp: Time): Status{.cdecl, dynlib: libXrandr,
-    importc.}
-  # added in v1.1, sorry for the lame name
-proc XRRSetScreenConfigAndRate*(dpy: PDisplay, config: PXRRScreenConfiguration,
-                                draw: Drawable, size_index: cint,
-                                rotation: Rotation, rate: cshort,
-                                timestamp: Time): Status{.cdecl,
-    dynlib: libXrandr, importc.}
-proc XRRConfigRotations*(config: PXRRScreenConfiguration,
-                         current_rotation: PRotation): Rotation{.cdecl,
-    dynlib: libXrandr, importc.}
-proc XRRConfigTimes*(config: PXRRScreenConfiguration, config_timestamp: PTime): Time{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRConfigSizes*(config: PXRRScreenConfiguration, nsizes: Pcint): PXRRScreenSize{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRConfigRates*(config: PXRRScreenConfiguration, sizeID: cint,
-                     nrates: Pcint): ptr int16{.cdecl, dynlib: libXrandr, importc.}
-proc XRRConfigCurrentConfiguration*(config: PXRRScreenConfiguration,
-                                    rotation: PRotation): SizeID{.cdecl,
-    dynlib: libXrandr, importc.}
-proc XRRConfigCurrentRate*(config: PXRRScreenConfiguration): cshort{.cdecl,
-    dynlib: libXrandr, importc.}
-proc XRRRootToScreen*(dpy: PDisplay, root: Window): cint{.cdecl,
-    dynlib: libXrandr, importc.}
+
+proc XRRSetScreenConfig*(
+  dpy: PDisplay,
+  config: PXRRScreenConfiguration,
+  draw: Drawable,
+  size_index: cint,
+  rotation: Rotation,
+  timestamp: Time,
+): Status {.cdecl, dynlib: libXrandr, importc.} # added in v1.1, sorry for the lame name
+
+proc XRRSetScreenConfigAndRate*(
+  dpy: PDisplay,
+  config: PXRRScreenConfiguration,
+  draw: Drawable,
+  size_index: cint,
+  rotation: Rotation,
+  rate: cshort,
+  timestamp: Time,
+): Status {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRConfigRotations*(
+  config: PXRRScreenConfiguration, current_rotation: PRotation
+): Rotation {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRConfigTimes*(
+  config: PXRRScreenConfiguration, config_timestamp: PTime
+): Time {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRConfigSizes*(
+  config: PXRRScreenConfiguration, nsizes: Pcint
+): PXRRScreenSize {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRConfigRates*(
+  config: PXRRScreenConfiguration, sizeID: cint, nrates: Pcint
+): ptr int16 {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRConfigCurrentConfiguration*(
+  config: PXRRScreenConfiguration, rotation: PRotation
+): SizeID {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRConfigCurrentRate*(
+  config: PXRRScreenConfiguration
+): cshort {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRRootToScreen*(
+  dpy: PDisplay, root: Window
+): cint {.cdecl, dynlib: libXrandr, importc.}
   #
   #  returns the screen configuration for the specified screen; does a lazy
   #  evalution to delay getting the information, and caches the result.
@@ -237,37 +274,56 @@
   #  to avoid unneeded round trips to the X server.  These are new
   #  in protocol version 0.1.
   #
-proc XRRScreenConfig*(dpy: PDisplay, screen: cint): PXRRScreenConfiguration{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRConfig*(screen: PScreen): PXRRScreenConfiguration{.cdecl,
-    dynlib: libXrandr, importc.}
-proc XRRSelectInput*(dpy: PDisplay, window: Window, mask: cint){.cdecl,
-    dynlib: libXrandr, importc.}
+
+proc XRRScreenConfig*(
+  dpy: PDisplay, screen: cint
+): PXRRScreenConfiguration {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRConfig*(
+  screen: PScreen
+): PXRRScreenConfiguration {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRSelectInput*(
+  dpy: PDisplay, window: Window, mask: cint
+) {.cdecl, dynlib: libXrandr, importc.}
   #
   #  the following are always safe to call, even if RandR is not implemented
   #  on a screen
   #
-proc XRRRotations*(dpy: PDisplay, screen: cint, current_rotation: PRotation): Rotation{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRSizes*(dpy: PDisplay, screen: cint, nsizes: Pcint): PXRRScreenSize{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRRates*(dpy: PDisplay, screen: cint, sizeID: cint, nrates: Pcint): ptr int16{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRTimes*(dpy: PDisplay, screen: cint, config_timestamp: PTime): Time{.
-    cdecl, dynlib: libXrandr, importc.}
+
+proc XRRRotations*(
+  dpy: PDisplay, screen: cint, current_rotation: PRotation
+): Rotation {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRSizes*(
+  dpy: PDisplay, screen: cint, nsizes: Pcint
+): PXRRScreenSize {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRRates*(
+  dpy: PDisplay, screen: cint, sizeID: cint, nrates: Pcint
+): ptr int16 {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRTimes*(
+  dpy: PDisplay, screen: cint, config_timestamp: PTime
+): Time {.cdecl, dynlib: libXrandr, importc.}
   #
   #  intended to take RRScreenChangeNotify,  or
   #  ConfigureNotify (on the root window)
   #  returns 1 if it is an event type it understands, 0 if not
   #
-proc XRRUpdateConfiguration*(event: PXEvent): cint{.cdecl, dynlib: libXrandr,
-    importc.}
+
+proc XRRUpdateConfiguration*(event: PXEvent): cint {.cdecl, dynlib: libXrandr, importc.}
 # implementation
-proc XRRGetScreenResourcesCurrent*(dpy: PDisplay, win: Window):
-    PXRRScreenResources {.cdecl, dynlib: libXrandr, importc.}
-proc XRRFreeScreenResources*(res: PXRRScreenResources) {.cdecl,
-    dynlib: libXrandr, importc.}
-proc XRRGetOutputInfo*(dpy: PDisplay, res: PXRRScreenResources, ret: RROutput):
-    PXRROutputInfo {.cdecl, dynlib: libXrandr, importc.}
-proc XRRFreeOutputInfo*(info: PXRROutputInfo) {.cdecl, dynlib: libXrandr,
-    importc.}
+proc XRRGetScreenResourcesCurrent*(
+  dpy: PDisplay, win: Window
+): PXRRScreenResources {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRFreeScreenResources*(
+  res: PXRRScreenResources
+) {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRGetOutputInfo*(
+  dpy: PDisplay, res: PXRRScreenResources, ret: RROutput
+): PXRROutputInfo {.cdecl, dynlib: libXrandr, importc.}
+
+proc XRRFreeOutputInfo*(info: PXRROutputInfo) {.cdecl, dynlib: libXrandr, importc.}
--- a/semicongine/thirdparty/x11/xresource.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xresource.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,6 +1,4 @@
-
-import
-  x, xlib
+import x, xlib
 
 #const
 #  libX11* = "libX11.so"
@@ -16,7 +14,7 @@
 #    xresource.h
 #
 
-proc Xpermalloc*(para1: int32): cstring{.cdecl, dynlib: libX11, importc.}
+proc Xpermalloc*(para1: int32): cstring {.cdecl, dynlib: libX11, importc.}
 
 type
   PXrmQuark* = ptr XrmQuark
@@ -32,29 +30,29 @@
   XrmString* = ptr char
 
 proc NULLSTRING*(): XrmString
-proc XrmStringToQuark*(para1: cstring): XrmQuark{.cdecl, dynlib: libX11,
-    importc.}
-proc XrmPermStringToQuark*(para1: cstring): XrmQuark{.cdecl, dynlib: libX11,
-    importc.}
-proc XrmQuarkToString*(para1: XrmQuark): XrmString{.cdecl, dynlib: libX11,
-    importc.}
-proc XrmUniqueQuark*(): XrmQuark{.cdecl, dynlib: libX11, importc.}
+proc XrmStringToQuark*(para1: cstring): XrmQuark {.cdecl, dynlib: libX11, importc.}
+proc XrmPermStringToQuark*(para1: cstring): XrmQuark {.cdecl, dynlib: libX11, importc.}
+proc XrmQuarkToString*(para1: XrmQuark): XrmString {.cdecl, dynlib: libX11, importc.}
+proc XrmUniqueQuark*(): XrmQuark {.cdecl, dynlib: libX11, importc.}
 #when defined(MACROS):
 proc XrmStringsEqual*(a1, a2: cstring): bool
 
 type
   PXrmBinding* = ptr XrmBinding
   XrmBinding* = enum
-    XrmBindTightly, XrmBindLoosely
+    XrmBindTightly
+    XrmBindLoosely
 
   XrmBindingList* = PXrmBinding
   PXrmBindingList* = ptr XrmBindingList
 
-proc XrmStringToQuarkList*(para1: cstring, para2: XrmQuarkList){.cdecl,
-    dynlib: libX11, importc.}
-proc XrmStringToBindingQuarkList*(para1: cstring, para2: XrmBindingList,
-                                  para3: XrmQuarkList){.cdecl, dynlib: libX11,
-    importc.}
+proc XrmStringToQuarkList*(
+  para1: cstring, para2: XrmQuarkList
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XrmStringToBindingQuarkList*(
+  para1: cstring, para2: XrmBindingList, para3: XrmQuarkList
+) {.cdecl, dynlib: libX11, importc.}
 
 type
   PXrmName* = ptr XrmName
@@ -90,7 +88,7 @@
 
 type
   PXrmValue* = ptr XrmValue
-  XrmValue*{.final.} = object
+  XrmValue* {.final.} = object
     size*: int32
     address*: XPointer
 
@@ -98,7 +96,7 @@
   XrmValuePtr* = PXrmValue
 
   PXrmHashBucketRec* = ptr XrmHashBucketRec
-  XrmHashBucketRec*{.final.} = object
+  XrmHashBucketRec* {.final.} = object
 
   PXrmHashBucket* = ptr XrmHashBucket
   XrmHashBucket* = PXrmHashBucketRec
@@ -109,66 +107,105 @@
   PXrmDatabase* = ptr XrmDatabase
   XrmDatabase* = PXrmHashBucketRec
 
-proc XrmDestroyDatabase*(para1: XrmDatabase){.cdecl, dynlib: libX11, importc.}
-proc XrmQPutResource*(para1: PXrmDatabase, para2: XrmBindingList,
-                      para3: XrmQuarkList, para4: XrmRepresentation,
-                      para5: PXrmValue){.cdecl, dynlib: libX11, importc.}
-proc XrmPutResource*(para1: PXrmDatabase, para2: cstring, para3: cstring,
-                     para4: PXrmValue){.cdecl, dynlib: libX11, importc.}
-proc XrmQPutStringResource*(para1: PXrmDatabase, para2: XrmBindingList,
-                            para3: XrmQuarkList, para4: cstring){.cdecl,
-    dynlib: libX11, importc.}
-proc XrmPutStringResource*(para1: PXrmDatabase, para2: cstring, para3: cstring){.
-    cdecl, dynlib: libX11, importc.}
-proc XrmPutLineResource*(para1: PXrmDatabase, para2: cstring){.cdecl,
-    dynlib: libX11, importc.}
-proc XrmQGetResource*(para1: XrmDatabase, para2: XrmNameList,
-                      para3: XrmClassList, para4: PXrmRepresentation,
-                      para5: PXrmValue): XBool{.cdecl, dynlib: libX11, importc.}
-proc XrmGetResource*(para1: XrmDatabase, para2: cstring, para3: cstring,
-                     para4: PPchar, para5: PXrmValue): XBool{.cdecl,
-    dynlib: libX11, importc.}
+proc XrmDestroyDatabase*(para1: XrmDatabase) {.cdecl, dynlib: libX11, importc.}
+proc XrmQPutResource*(
+  para1: PXrmDatabase,
+  para2: XrmBindingList,
+  para3: XrmQuarkList,
+  para4: XrmRepresentation,
+  para5: PXrmValue,
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XrmPutResource*(
+  para1: PXrmDatabase, para2: cstring, para3: cstring, para4: PXrmValue
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XrmQPutStringResource*(
+  para1: PXrmDatabase, para2: XrmBindingList, para3: XrmQuarkList, para4: cstring
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XrmPutStringResource*(
+  para1: PXrmDatabase, para2: cstring, para3: cstring
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XrmPutLineResource*(
+  para1: PXrmDatabase, para2: cstring
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XrmQGetResource*(
+  para1: XrmDatabase,
+  para2: XrmNameList,
+  para3: XrmClassList,
+  para4: PXrmRepresentation,
+  para5: PXrmValue,
+): XBool {.cdecl, dynlib: libX11, importc.}
+
+proc XrmGetResource*(
+  para1: XrmDatabase, para2: cstring, para3: cstring, para4: PPchar, para5: PXrmValue
+): XBool {.cdecl, dynlib: libX11, importc.}
   # There is no definition of XrmSearchList
   #function XrmQGetSearchList(para1:XrmDatabase; para2:XrmNameList; para3:XrmClassList; para4:XrmSearchList; para5:longint):XBool;cdecl;external libX11;
   #function XrmQGetSearchResource(para1:XrmSearchList; para2:XrmName; para3:XrmClass; para4:PXrmRepresentation; para5:PXrmValue):XBool;cdecl;external libX11;
-proc XrmSetDatabase*(para1: PDisplay, para2: XrmDatabase){.cdecl,
-    dynlib: libX11, importc.}
-proc XrmGetDatabase*(para1: PDisplay): XrmDatabase{.cdecl, dynlib: libX11,
-    importc.}
-proc XrmGetFileDatabase*(para1: cstring): XrmDatabase{.cdecl, dynlib: libX11,
-    importc.}
-proc XrmCombineFileDatabase*(para1: cstring, para2: PXrmDatabase, para3: XBool): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XrmGetStringDatabase*(para1: cstring): XrmDatabase{.cdecl, dynlib: libX11,
-    importc.}
-proc XrmPutFileDatabase*(para1: XrmDatabase, para2: cstring){.cdecl,
-    dynlib: libX11, importc.}
-proc XrmMergeDatabases*(para1: XrmDatabase, para2: PXrmDatabase){.cdecl,
-    dynlib: libX11, importc.}
-proc XrmCombineDatabase*(para1: XrmDatabase, para2: PXrmDatabase, para3: XBool){.
-    cdecl, dynlib: libX11, importc.}
+
+proc XrmSetDatabase*(
+  para1: PDisplay, para2: XrmDatabase
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XrmGetDatabase*(para1: PDisplay): XrmDatabase {.cdecl, dynlib: libX11, importc.}
+proc XrmGetFileDatabase*(para1: cstring): XrmDatabase {.cdecl, dynlib: libX11, importc.}
+proc XrmCombineFileDatabase*(
+  para1: cstring, para2: PXrmDatabase, para3: XBool
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XrmGetStringDatabase*(
+  para1: cstring
+): XrmDatabase {.cdecl, dynlib: libX11, importc.}
+
+proc XrmPutFileDatabase*(
+  para1: XrmDatabase, para2: cstring
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XrmMergeDatabases*(
+  para1: XrmDatabase, para2: PXrmDatabase
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XrmCombineDatabase*(
+  para1: XrmDatabase, para2: PXrmDatabase, para3: XBool
+) {.cdecl, dynlib: libX11, importc.}
+
 const
   XrmEnumAllLevels* = 0
   XrmEnumOneLevel* = 1
 
-type
-  funcbool* = proc (): XBool {.cdecl.}
+type funcbool* = proc(): XBool {.cdecl.}
 
-proc XrmEnumerateDatabase*(para1: XrmDatabase, para2: XrmNameList,
-                           para3: XrmClassList, para4: int32, para5: funcbool,
-                           para6: XPointer): XBool{.cdecl, dynlib: libX11,
-    importc.}
-proc XrmLocaleOfDatabase*(para1: XrmDatabase): cstring{.cdecl, dynlib: libX11,
-    importc.}
+proc XrmEnumerateDatabase*(
+  para1: XrmDatabase,
+  para2: XrmNameList,
+  para3: XrmClassList,
+  para4: int32,
+  para5: funcbool,
+  para6: XPointer,
+): XBool {.cdecl, dynlib: libX11, importc.}
+
+proc XrmLocaleOfDatabase*(
+  para1: XrmDatabase
+): cstring {.cdecl, dynlib: libX11, importc.}
 
 type
   PXrmOptionKind* = ptr XrmOptionKind
   XrmOptionKind* = enum
-    XrmoptionNoArg, XrmoptionIsArg, XrmoptionStickyArg, XrmoptionSepArg,
-    XrmoptionResArg, XrmoptionSkipArg, XrmoptionSkipLine, XrmoptionSkipNArgs
+    XrmoptionNoArg
+    XrmoptionIsArg
+    XrmoptionStickyArg
+    XrmoptionSepArg
+    XrmoptionResArg
+    XrmoptionSkipArg
+    XrmoptionSkipLine
+    XrmoptionSkipNArgs
 
   PXrmOptionDescRec* = ptr XrmOptionDescRec
-  XrmOptionDescRec*{.final.} = object
+  XrmOptionDescRec* {.final.} = object
     option*: cstring
     specifier*: cstring
     argKind*: XrmOptionKind
@@ -177,9 +214,15 @@
   XrmOptionDescList* = PXrmOptionDescRec
   PXrmOptionDescList* = ptr XrmOptionDescList
 
-proc XrmParseCommand*(para1: PXrmDatabase, para2: XrmOptionDescList,
-                      para3: int32, para4: cstring, para5: ptr int32,
-                      para6: PPchar){.cdecl, dynlib: libX11, importc.}
+proc XrmParseCommand*(
+  para1: PXrmDatabase,
+  para2: XrmOptionDescList,
+  para3: int32,
+  para4: cstring,
+  para5: ptr int32,
+  para6: PPchar,
+) {.cdecl, dynlib: libX11, importc.}
+
 # implementation
 
 proc NULLQUARK(): XrmQuark =
--- a/semicongine/thirdparty/x11/xshm.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xshm.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,8 +1,6 @@
-import
- x, xlib
+import x, xlib
 
-const
- libXext* = "libXext.so(.6|)"
+const libXext* = "libXext.so(.6|)"
 
 #
 #  Automatically converted by H2Pas 0.99.15 from xshm.h
@@ -16,61 +14,97 @@
 #
 
 const
- constX_ShmQueryVersion* = 0
- constX_ShmAttach* = 1
- constX_ShmDetach* = 2
- constX_ShmPutImage* = 3
- constX_ShmGetImage* = 4
- constX_ShmCreatePixmap* = 5
- ShmCompletion* = 0
- ShmNumberEvents* = ShmCompletion + 1
- BadShmSeg* = 0
- ShmNumberErrors* = BadShmSeg + 1
+  constX_ShmQueryVersion* = 0
+  constX_ShmAttach* = 1
+  constX_ShmDetach* = 2
+  constX_ShmPutImage* = 3
+  constX_ShmGetImage* = 4
+  constX_ShmCreatePixmap* = 5
+  ShmCompletion* = 0
+  ShmNumberEvents* = ShmCompletion + 1
+  BadShmSeg* = 0
+  ShmNumberErrors* = BadShmSeg + 1
 
 type
- PShmSeg* = ptr ShmSeg
- ShmSeg* = culong
+  PShmSeg* = ptr ShmSeg
+  ShmSeg* = culong
+
+  PXShmCompletionEvent* = ptr XShmCompletionEvent
+  XShmCompletionEvent* {.final.} = object
+    theType*: cint
+    serial*: culong
+    send_event*: XBool
+    display*: PDisplay
+    drawable*: Drawable
+    major_code*: cint
+    minor_code*: cint
+    shmseg*: ShmSeg
+    offset*: culong
 
- PXShmCompletionEvent* = ptr XShmCompletionEvent
- XShmCompletionEvent*{.final.} = object
-  theType*: cint
-  serial*: culong
-  send_event*: XBool
-  display*: PDisplay
-  drawable*: Drawable
-  major_code*: cint
-  minor_code*: cint
-  shmseg*: ShmSeg
-  offset*: culong
+  PXShmSegmentInfo* = ptr XShmSegmentInfo
+  XShmSegmentInfo* {.final.} = object
+    shmseg*: ShmSeg
+    shmid*: cint
+    shmaddr*: cstring
+    readOnly*: XBool
 
- PXShmSegmentInfo* = ptr XShmSegmentInfo
- XShmSegmentInfo*{.final.} = object
-  shmseg*: ShmSeg
-  shmid*: cint
-  shmaddr*: cstring
-  readOnly*: XBool
+proc XShmQueryExtension*(para1: PDisplay): XBool {.cdecl, dynlib: libXext, importc.}
+proc XShmGetEventBase*(para1: PDisplay): cint {.cdecl, dynlib: libXext, importc.}
+proc XShmQueryVersion*(
+  para1: PDisplay, para2: Pcint, para3: Pcint, para4: PBool
+): XBool {.cdecl, dynlib: libXext, importc.}
+
+proc XShmPixmapFormat*(para1: PDisplay): cint {.cdecl, dynlib: libXext, importc.}
+proc XShmAttach*(
+  para1: PDisplay, para2: PXShmSegmentInfo
+): Status {.cdecl, dynlib: libXext, importc.}
+
+proc XShmDetach*(
+  para1: PDisplay, para2: PXShmSegmentInfo
+): Status {.cdecl, dynlib: libXext, importc.}
 
-proc XShmQueryExtension*(para1: PDisplay): XBool{.cdecl, dynlib: libXext, importc.}
-proc XShmGetEventBase*(para1: PDisplay): cint{.cdecl, dynlib: libXext, importc.}
-proc XShmQueryVersion*(para1: PDisplay, para2: Pcint, para3: Pcint, para4: PBool): XBool{.
-    cdecl, dynlib: libXext, importc.}
-proc XShmPixmapFormat*(para1: PDisplay): cint{.cdecl, dynlib: libXext, importc.}
-proc XShmAttach*(para1: PDisplay, para2: PXShmSegmentInfo): Status{.cdecl,
-    dynlib: libXext, importc.}
-proc XShmDetach*(para1: PDisplay, para2: PXShmSegmentInfo): Status{.cdecl,
-    dynlib: libXext, importc.}
-proc XShmPutImage*(para1: PDisplay, para2: Drawable, para3: GC,
-                   para4: PXImage, para5: cint, para6: cint, para7: cint,
-                   para8: cint, para9: cuint, para10: cuint, para11: XBool): Status{.
-    cdecl, dynlib: libXext, importc.}
-proc XShmGetImage*(para1: PDisplay, para2: Drawable, para3: PXImage,
-                   para4: cint, para5: cint, para6: culong): Status{.cdecl,
-    dynlib: libXext, importc.}
-proc XShmCreateImage*(para1: PDisplay, para2: PVisual, para3: cuint,
-                      para4: cint, para5: cstring, para6: PXShmSegmentInfo,
-                      para7: cuint, para8: cuint): PXImage{.cdecl,
-    dynlib: libXext, importc.}
-proc XShmCreatePixmap*(para1: PDisplay, para2: Drawable, para3: cstring,
-                       para4: PXShmSegmentInfo, para5: cuint, para6: cuint,
-                       para7: cuint): Pixmap{.cdecl, dynlib: libXext, importc.}
+proc XShmPutImage*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: GC,
+  para4: PXImage,
+  para5: cint,
+  para6: cint,
+  para7: cint,
+  para8: cint,
+  para9: cuint,
+  para10: cuint,
+  para11: XBool,
+): Status {.cdecl, dynlib: libXext, importc.}
+
+proc XShmGetImage*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: PXImage,
+  para4: cint,
+  para5: cint,
+  para6: culong,
+): Status {.cdecl, dynlib: libXext, importc.}
+
+proc XShmCreateImage*(
+  para1: PDisplay,
+  para2: PVisual,
+  para3: cuint,
+  para4: cint,
+  para5: cstring,
+  para6: PXShmSegmentInfo,
+  para7: cuint,
+  para8: cuint,
+): PXImage {.cdecl, dynlib: libXext, importc.}
+
+proc XShmCreatePixmap*(
+  para1: PDisplay,
+  para2: Drawable,
+  para3: cstring,
+  para4: PXShmSegmentInfo,
+  para5: cuint,
+  para6: cuint,
+  para7: cuint,
+): Pixmap {.cdecl, dynlib: libXext, importc.}
+
 # implementation
--- a/semicongine/thirdparty/x11/xtst.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xtst.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -53,15 +53,15 @@
 
   PXRecordRange* = ptr XRecordRange
   XRecordRange* {.final.} = object
-    core_requests*: XRecordRange8    ##  core X requests
-    core_replies*: XRecordRange8     ##  core X replies
-    ext_requests*: XRecordExtRange   ##  extension requests
-    ext_replies*: XRecordExtRange    ##  extension replies
+    core_requests*: XRecordRange8 ##  core X requests
+    core_replies*: XRecordRange8 ##  core X replies
+    ext_requests*: XRecordExtRange ##  extension requests
+    ext_replies*: XRecordExtRange ##  extension replies
     delivered_events*: XRecordRange8 ##  delivered core and ext events
-    device_events*: XRecordRange8    ##  all core and ext device events
-    errors*: XRecordRange8           ##  core X and ext errors
-    client_started*: XBool           ##  connection setup reply
-    client_died*: XBool              ##  notice of client disconnect
+    device_events*: XRecordRange8 ##  all core and ext device events
+    errors*: XRecordRange8 ##  core X and ext errors
+    client_started*: XBool ##  connection setup reply
+    client_died*: XBool ##  notice of client disconnect
 
   PXRecordClientInfo* = ptr XRecordClientInfo
   XRecordClientInfo* {.final.} = object
@@ -86,37 +86,49 @@
     data*: cstring
     data_len*: culong ##  in 4-byte units
 
-  XRecordInterceptProc* = proc (a1: XPointer, a2: PXRecordInterceptData)
+  XRecordInterceptProc* = proc(a1: XPointer, a2: PXRecordInterceptData)
 
 {.push cdecl, importc, dynlib: libXtst.}
 
 proc XRecordIdBaseMask*(dpy: PDisplay): XID
 proc XRecordQueryVersion*(a1: PDisplay, a2, a3: ptr cint): Status
-proc XRecordCreateContext*(a1: PDisplay,
-                          a2: cint, a3: PXRecordClientSpec,
-                          a4: cint, a5: ptr UncheckedArray[XRecordRange],
-                          a6: cint): XRecordContext
-proc XRecordAllocRange*: PXRecordRange
-proc XRecordRegisterClients*(a1: PDisplay,
-                            a2: XRecordContext,
-                            a3: cint, a4: PXRecordClientSpec,
-                            a5: cint, a6: ptr UncheckedArray[XRecordRange],
-                            a7: cint): Status
-proc XRecordUnregisterClients*(a1: PDisplay,
-                              a2: XRecordContext,
-                              a3: PXRecordClientSpec,
-                              a4: cint): Status
-proc XRecordGetContext*(a1: PDisplay,
-                       a2: XRecordContext,
-                       a3: ptr UncheckedArray[XRecordState]): Status
+proc XRecordCreateContext*(
+  a1: PDisplay,
+  a2: cint,
+  a3: PXRecordClientSpec,
+  a4: cint,
+  a5: ptr UncheckedArray[XRecordRange],
+  a6: cint,
+): XRecordContext
+
+proc XRecordAllocRange*(): PXRecordRange
+proc XRecordRegisterClients*(
+  a1: PDisplay,
+  a2: XRecordContext,
+  a3: cint,
+  a4: PXRecordClientSpec,
+  a5: cint,
+  a6: ptr UncheckedArray[XRecordRange],
+  a7: cint,
+): Status
+
+proc XRecordUnregisterClients*(
+  a1: PDisplay, a2: XRecordContext, a3: PXRecordClientSpec, a4: cint
+): Status
+
+proc XRecordGetContext*(
+  a1: PDisplay, a2: XRecordContext, a3: ptr UncheckedArray[XRecordState]
+): Status
+
 proc XRecordFreeState*(a1: PXRecordState)
-proc XRecordEnableContext*(a1: PDisplay,
-                          a2: XRecordContext,
-                          a3: XRecordInterceptProc,
-                          a4: XPointer): Status
-proc XRecordEnableContextAsync*(a1: PDisplay, a2: XRecordContext,
-                               a3: XRecordInterceptProc,
-                               a4: XPointer): Status
+proc XRecordEnableContext*(
+  a1: PDisplay, a2: XRecordContext, a3: XRecordInterceptProc, a4: XPointer
+): Status
+
+proc XRecordEnableContextAsync*(
+  a1: PDisplay, a2: XRecordContext, a3: XRecordInterceptProc, a4: XPointer
+): Status
+
 proc XRecordProcessReplies*(a1: PDisplay)
 proc XRecordFreeData*(a1: PXRecordInterceptData)
 proc XRecordDisableContext*(a1: PDisplay, a2: XRecordContext): Status
@@ -128,14 +140,22 @@
 proc XTestFakeButtonEvent*(a1: PDisplay, a2: cuint, a3: XBool, a4: culong): cint
 proc XTestFakeMotionEvent*(a1: PDisplay, a2, a3, a4: cint, a5: culong): cint
 proc XTestFakeRelativeMotionEvent*(a1: PDisplay, a2, a3: cint, a4: culong): cint
-proc XTestFakeDeviceKeyEvent*(a1: PDisplay, a2: PXDevice, a3: cuint, a4: XBool,
-                             a5: ptr cint, a6: cint, a7: culong): cint
-proc XTestFakeDeviceButtonEvent*(a1: PDisplay, a2: PXDevice, a3: cuint, a4: XBool,
-                                a5: ptr cint, a6: cint, a7: culong): cint
-proc XTestFakeProximityEvent*(a1: PDisplay, a2: PXDevice, a3: XBool, a4: ptr cint,
-                             a5: cint, a6: culong): cint
-proc XTestFakeDeviceMotionEvent*(a1: PDisplay, a2: PXDevice, a3: XBool, a4: cint,
-                                a5: ptr cint, a6: cint, a7: culong): cint
+proc XTestFakeDeviceKeyEvent*(
+  a1: PDisplay, a2: PXDevice, a3: cuint, a4: XBool, a5: ptr cint, a6: cint, a7: culong
+): cint
+
+proc XTestFakeDeviceButtonEvent*(
+  a1: PDisplay, a2: PXDevice, a3: cuint, a4: XBool, a5: ptr cint, a6: cint, a7: culong
+): cint
+
+proc XTestFakeProximityEvent*(
+  a1: PDisplay, a2: PXDevice, a3: XBool, a4: ptr cint, a5: cint, a6: culong
+): cint
+
+proc XTestFakeDeviceMotionEvent*(
+  a1: PDisplay, a2: PXDevice, a3: XBool, a4: cint, a5: ptr cint, a6: cint, a7: culong
+): cint
+
 proc XTestGrabControl*(a1: PDisplay, a2: XBool): cint
 proc XTestSetGContextOfGC*(a1: GC, a2: GContext)
 proc XTestSetVisualIDOfVisual*(a1: PVisual, a2: VisualID)
--- a/semicongine/thirdparty/x11/xutil.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xutil.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,6 +1,4 @@
-
-import
-  x, xlib, keysym
+import x, xlib, keysym
 
 #const
 #  libX11* = "libX11.so"
@@ -27,12 +25,12 @@
   YNegative* = 0x00000020
 
 type
-  CPoint*{.final.} = object
+  CPoint* {.final.} = object
     x*: cint
     y*: cint
 
   PXSizeHints* = ptr XSizeHints
-  XSizeHints*{.final.} = object
+  XSizeHints* {.final.} = object
     flags*: clong
     x*, y*: cint
     width*, height*: cint
@@ -54,12 +52,11 @@
   PAspect* = 1 shl 7
   PBaseSize* = 1 shl 8
   PWinGravity* = 1 shl 9
-  PAllHints* = PPosition or PSize or PMinSize or PMaxSize or PResizeInc or
-      PAspect
+  PAllHints* = PPosition or PSize or PMinSize or PMaxSize or PResizeInc or PAspect
 
 type
   PXWMHints* = ptr XWMHints
-  XWMHints*{.final.} = object
+  XWMHints* {.final.} = object
     flags*: clong
     input*: XBool
     initial_state*: cint
@@ -69,7 +66,6 @@
     icon_mask*: Pixmap
     window_group*: XID
 
-
 const
   InputHint* = 1 shl 0
   StateHint* = 1 shl 1
@@ -78,8 +74,9 @@
   IconPositionHint* = 1 shl 4
   IconMaskHint* = 1 shl 5
   WindowGroupHint* = 1 shl 6
-  AllHints* = InputHint or StateHint or IconPixmapHint or IconWindowHint or
-      IconPositionHint or IconMaskHint or WindowGroupHint
+  AllHints* =
+    InputHint or StateHint or IconPixmapHint or IconWindowHint or IconPositionHint or
+    IconMaskHint or WindowGroupHint
   XUrgencyHint* = 1 shl 8
   WithdrawnState* = 0
   NormalState* = 1
@@ -90,47 +87,47 @@
 
 type
   PXTextProperty* = ptr XTextProperty
-  XTextProperty*{.final.} = object
+  XTextProperty* {.final.} = object
     value*: Pcuchar
     encoding*: Atom
     format*: cint
     nitems*: culong
 
-
 const
-  XNoMemory* = - 1
-  XLocaleNotSupported* = - 2
-  XConverterNotFound* = - 3
+  XNoMemory* = -1
+  XLocaleNotSupported* = -2
+  XConverterNotFound* = -3
 
 type
   PXICCEncodingStyle* = ptr XICCEncodingStyle
   XICCEncodingStyle* = enum
-    XStringStyle, XCompoundTextStyle, XTextStyle, XStdICCTextStyle,
+    XStringStyle
+    XCompoundTextStyle
+    XTextStyle
+    XStdICCTextStyle
     XUTF8StringStyle
 
   PPXIconSize* = ptr PXIconSize
   PXIconSize* = ptr XIconSize
-  XIconSize*{.final.} = object
+  XIconSize* {.final.} = object
     min_width*, min_height*: cint
     max_width*, max_height*: cint
     width_inc*, height_inc*: cint
 
   PXClassHint* = ptr XClassHint
-  XClassHint*{.final.} = object
+  XClassHint* {.final.} = object
     res_name*: cstring
     res_class*: cstring
 
-
 type
   PXComposeStatus* = ptr XComposeStatus
-  XComposeStatus*{.final.} = object
+  XComposeStatus* {.final.} = object
     compose_ptr*: XPointer
     chars_matched*: cint
 
-
 type
   PXRegion* = ptr XRegion
-  XRegion*{.final.} = object
+  XRegion* {.final.} = object
 
   PRegion* = ptr Region
   Region* = PXRegion
@@ -142,7 +139,7 @@
 
 type
   PXVisualInfo* = ptr XVisualInfo
-  XVisualInfo*{.final.} = object
+  XVisualInfo* {.final.} = object
     visual*: PVisual
     visualid*: VisualID
     screen*: cint
@@ -154,7 +151,6 @@
     colormap_size*: cint
     bits_per_rgb*: cint
 
-
 const
   VisualNoMask* = 0x00000000
   VisualIDMask* = 0x00000001
@@ -171,7 +167,7 @@
 type
   PPXStandardColormap* = ptr PXStandardColormap
   PXStandardColormap* = ptr XStandardColormap
-  XStandardColormap*{.final.} = object
+  XStandardColormap* {.final.} = object
     colormap*: Colormap
     red_max*: culong
     red_mult*: culong
@@ -183,7 +179,6 @@
     visualid*: VisualID
     killid*: XID
 
-
 const
   BitmapSuccess* = 0
   BitmapOpenFailed* = 1
@@ -198,165 +193,313 @@
   PXContext* = ptr XContext
   XContext* = cint
 
-proc XAllocClassHint*(): PXClassHint{.cdecl, dynlib: libX11, importc.}
-proc XAllocIconSize*(): PXIconSize{.cdecl, dynlib: libX11, importc.}
-proc XAllocSizeHints*(): PXSizeHints{.cdecl, dynlib: libX11, importc.}
-proc XAllocStandardColormap*(): PXStandardColormap{.cdecl, dynlib: libX11,
-    importc.}
-proc XAllocWMHints*(): PXWMHints{.cdecl, dynlib: libX11, importc.}
-proc XClipBox*(para1: Region, para2: PXRectangle): cint{.cdecl, dynlib: libX11,
-    importc.}
-proc XCreateRegion*(): Region{.cdecl, dynlib: libX11, importc.}
-proc XDefaultString*(): cstring{.cdecl, dynlib: libX11, importc.}
-proc XDeleteContext*(para1: PDisplay, para2: XID, para3: XContext): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XDestroyRegion*(para1: Region): cint{.cdecl, dynlib: libX11, importc.}
-proc XEmptyRegion*(para1: Region): cint{.cdecl, dynlib: libX11, importc.}
-proc XEqualRegion*(para1: Region, para2: Region): cint{.cdecl, dynlib: libX11,
-    importc.}
-proc XFindContext*(para1: PDisplay, para2: XID, para3: XContext,
-                   para4: PXPointer): cint{.cdecl, dynlib: libX11, importc.}
-proc XGetClassHint*(para1: PDisplay, para2: Window, para3: PXClassHint): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetIconSizes*(para1: PDisplay, para2: Window, para3: PPXIconSize,
-                    para4: Pcint): Status{.cdecl, dynlib: libX11, importc.}
-proc XGetNormalHints*(para1: PDisplay, para2: Window, para3: PXSizeHints): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetRGBColormaps*(para1: PDisplay, para2: Window,
-                       para3: PPXStandardColormap, para4: Pcint, para5: Atom): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetSizeHints*(para1: PDisplay, para2: Window, para3: PXSizeHints,
-                    para4: Atom): Status{.cdecl, dynlib: libX11, importc.}
-proc XGetStandardColormap*(para1: PDisplay, para2: Window,
-                           para3: PXStandardColormap, para4: Atom): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetTextProperty*(para1: PDisplay, para2: Window, para3: PXTextProperty,
-                       para4: Atom): Status{.cdecl, dynlib: libX11, importc.}
-proc XGetVisualInfo*(para1: PDisplay, para2: clong, para3: PXVisualInfo,
-                     para4: Pcint): PXVisualInfo{.cdecl, dynlib: libX11, importc.}
-proc XGetWMClientMachine*(para1: PDisplay, para2: Window, para3: PXTextProperty): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetWMHints*(para1: PDisplay, para2: Window): PXWMHints{.cdecl,
-    dynlib: libX11, importc.}
-proc XGetWMIconName*(para1: PDisplay, para2: Window, para3: PXTextProperty): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetWMName*(para1: PDisplay, para2: Window, para3: PXTextProperty): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetWMNormalHints*(para1: PDisplay, para2: Window, para3: PXSizeHints,
-                        para4: ptr int): Status{.cdecl, dynlib: libX11, importc.}
-proc XGetWMSizeHints*(para1: PDisplay, para2: Window, para3: PXSizeHints,
-                      para4: ptr int, para5: Atom): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XGetZoomHints*(para1: PDisplay, para2: Window, para3: PXSizeHints): Status{.
-    cdecl, dynlib: libX11, importc.}
-proc XIntersectRegion*(para1: Region, para2: Region, para3: Region): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XConvertCase*(para1: KeySym, para2: PKeySym, para3: PKeySym){.cdecl,
-    dynlib: libX11, importc.}
-proc XLookupString*(para1: PXKeyEvent, para2: cstring, para3: cint,
-                    para4: PKeySym, para5: PXComposeStatus): cint{.cdecl,
-    dynlib: libX11, importc.}
-proc XMatchVisualInfo*(para1: PDisplay, para2: cint, para3: cint, para4: cint,
-                       para5: PXVisualInfo): Status{.cdecl, dynlib: libX11,
-    importc.}
-proc XOffsetRegion*(para1: Region, para2: cint, para3: cint): cint{.cdecl,
-    dynlib: libX11, importc.}
-proc XPointInRegion*(para1: Region, para2: cint, para3: cint): XBool{.cdecl,
-    dynlib: libX11, importc.}
-proc XPolygonRegion*(para1: PXPoint, para2: cint, para3: cint): Region{.cdecl,
-    dynlib: libX11, importc.}
-proc XRectInRegion*(para1: Region, para2: cint, para3: cint, para4: cuint,
-                    para5: cuint): cint{.cdecl, dynlib: libX11, importc.}
-proc XSaveContext*(para1: PDisplay, para2: XID, para3: XContext,
-                   para4: cstring): cint{.cdecl, dynlib: libX11, importc.}
-proc XSetClassHint*(para1: PDisplay, para2: Window, para3: PXClassHint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetIconSizes*(para1: PDisplay, para2: Window, para3: PXIconSize,
-                    para4: cint): cint{.cdecl, dynlib: libX11, importc.}
-proc XSetNormalHints*(para1: PDisplay, para2: Window, para3: PXSizeHints): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetRGBColormaps*(para1: PDisplay, para2: Window,
-                       para3: PXStandardColormap, para4: cint, para5: Atom){.
-    cdecl, dynlib: libX11, importc.}
-proc XSetSizeHints*(para1: PDisplay, para2: Window, para3: PXSizeHints,
-                    para4: Atom): cint{.cdecl, dynlib: libX11, importc.}
-proc XSetStandardProperties*(para1: PDisplay, para2: Window, para3: cstring,
-                             para4: cstring, para5: Pixmap, para6: PPchar,
-                             para7: cint, para8: PXSizeHints): cint{.cdecl,
-    dynlib: libX11, importc.}
-proc XSetTextProperty*(para1: PDisplay, para2: Window, para3: PXTextProperty,
-                       para4: Atom){.cdecl, dynlib: libX11, importc.}
-proc XSetWMClientMachine*(para1: PDisplay, para2: Window, para3: PXTextProperty){.
-    cdecl, dynlib: libX11, importc.}
-proc XSetWMHints*(para1: PDisplay, para2: Window, para3: PXWMHints): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetWMIconName*(para1: PDisplay, para2: Window, para3: PXTextProperty){.
-    cdecl, dynlib: libX11, importc.}
-proc XSetWMName*(para1: PDisplay, para2: Window, para3: PXTextProperty){.cdecl,
-    dynlib: libX11, importc.}
-proc XSetWMNormalHints*(para1: PDisplay, para2: Window, para3: PXSizeHints){.
-    cdecl, dynlib: libX11, importc.}
-proc XSetWMProperties*(para1: PDisplay, para2: Window, para3: PXTextProperty,
-                       para4: PXTextProperty, para5: PPchar, para6: cint,
-                       para7: PXSizeHints, para8: PXWMHints, para9: PXClassHint){.
-    cdecl, dynlib: libX11, importc.}
-proc XmbSetWMProperties*(para1: PDisplay, para2: Window, para3: cstring,
-                         para4: cstring, para5: PPchar, para6: cint,
-                         para7: PXSizeHints, para8: PXWMHints,
-                         para9: PXClassHint){.cdecl, dynlib: libX11, importc.}
-proc Xutf8SetWMProperties*(para1: PDisplay, para2: Window, para3: cstring,
-                           para4: cstring, para5: PPchar, para6: cint,
-                           para7: PXSizeHints, para8: PXWMHints,
-                           para9: PXClassHint){.cdecl, dynlib: libX11, importc.}
-proc XSetWMSizeHints*(para1: PDisplay, para2: Window, para3: PXSizeHints,
-                      para4: Atom){.cdecl, dynlib: libX11, importc.}
-proc XSetRegion*(para1: PDisplay, para2: GC, para3: Region): cint{.cdecl,
-    dynlib: libX11, importc.}
-proc XSetStandardColormap*(para1: PDisplay, para2: Window,
-                           para3: PXStandardColormap, para4: Atom){.cdecl,
-    dynlib: libX11, importc.}
-proc XSetZoomHints*(para1: PDisplay, para2: Window, para3: PXSizeHints): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XShrinkRegion*(para1: Region, para2: cint, para3: cint): cint{.cdecl,
-    dynlib: libX11, importc.}
-proc XStringListToTextProperty*(para1: PPchar, para2: cint,
-                                para3: PXTextProperty): Status{.cdecl,
-    dynlib: libX11, importc.}
-proc XSubtractRegion*(para1: Region, para2: Region, para3: Region): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XmbTextListToTextProperty*(para1: PDisplay, para2: PPchar, para3: cint,
-                                para4: XICCEncodingStyle, para5: PXTextProperty): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XwcTextListToTextProperty*(para1: PDisplay, para2: ptr ptr int16, para3: cint,
-                                para4: XICCEncodingStyle, para5: PXTextProperty): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc Xutf8TextListToTextProperty*(para1: PDisplay, para2: PPchar, para3: cint,
-                                  para4: XICCEncodingStyle,
-                                  para5: PXTextProperty): cint{.cdecl,
-    dynlib: libX11, importc.}
-proc XwcFreeStringList*(para1: ptr ptr int16){.cdecl, dynlib: libX11, importc.}
-proc XTextPropertyToStringList*(para1: PXTextProperty, para2: PPPchar,
-                                para3: Pcint): Status{.cdecl, dynlib: libX11,
-    importc.}
-proc XmbTextPropertyToTextList*(para1: PDisplay, para2: PXTextProperty,
-                                para3: PPPchar, para4: Pcint): cint{.cdecl,
-    dynlib: libX11, importc.}
-proc XwcTextPropertyToTextList*(para1: PDisplay, para2: PXTextProperty,
-                                para3: ptr ptr ptr int16, para4: Pcint): cint{.cdecl,
-    dynlib: libX11, importc.}
-proc Xutf8TextPropertyToTextList*(para1: PDisplay, para2: PXTextProperty,
-                                  para3: PPPchar, para4: Pcint): cint{.cdecl,
-    dynlib: libX11, importc.}
-proc XUnionRectWithRegion*(para1: PXRectangle, para2: Region, para3: Region): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XUnionRegion*(para1: Region, para2: Region, para3: Region): cint{.cdecl,
-    dynlib: libX11, importc.}
-proc XWMGeometry*(para1: PDisplay, para2: cint, para3: cstring, para4: cstring,
-                  para5: cuint, para6: PXSizeHints, para7: Pcint, para8: Pcint,
-                  para9: Pcint, para10: Pcint, para11: Pcint): cint{.cdecl,
-    dynlib: libX11, importc.}
-proc XXorRegion*(para1: Region, para2: Region, para3: Region): cint{.cdecl,
-    dynlib: libX11, importc.}
+proc XAllocClassHint*(): PXClassHint {.cdecl, dynlib: libX11, importc.}
+proc XAllocIconSize*(): PXIconSize {.cdecl, dynlib: libX11, importc.}
+proc XAllocSizeHints*(): PXSizeHints {.cdecl, dynlib: libX11, importc.}
+proc XAllocStandardColormap*(): PXStandardColormap {.cdecl, dynlib: libX11, importc.}
+proc XAllocWMHints*(): PXWMHints {.cdecl, dynlib: libX11, importc.}
+proc XClipBox*(
+  para1: Region, para2: PXRectangle
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XCreateRegion*(): Region {.cdecl, dynlib: libX11, importc.}
+proc XDefaultString*(): cstring {.cdecl, dynlib: libX11, importc.}
+proc XDeleteContext*(
+  para1: PDisplay, para2: XID, para3: XContext
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XDestroyRegion*(para1: Region): cint {.cdecl, dynlib: libX11, importc.}
+proc XEmptyRegion*(para1: Region): cint {.cdecl, dynlib: libX11, importc.}
+proc XEqualRegion*(
+  para1: Region, para2: Region
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XFindContext*(
+  para1: PDisplay, para2: XID, para3: XContext, para4: PXPointer
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XGetClassHint*(
+  para1: PDisplay, para2: Window, para3: PXClassHint
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XGetIconSizes*(
+  para1: PDisplay, para2: Window, para3: PPXIconSize, para4: Pcint
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XGetNormalHints*(
+  para1: PDisplay, para2: Window, para3: PXSizeHints
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XGetRGBColormaps*(
+  para1: PDisplay, para2: Window, para3: PPXStandardColormap, para4: Pcint, para5: Atom
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XGetSizeHints*(
+  para1: PDisplay, para2: Window, para3: PXSizeHints, para4: Atom
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XGetStandardColormap*(
+  para1: PDisplay, para2: Window, para3: PXStandardColormap, para4: Atom
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XGetTextProperty*(
+  para1: PDisplay, para2: Window, para3: PXTextProperty, para4: Atom
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XGetVisualInfo*(
+  para1: PDisplay, para2: clong, para3: PXVisualInfo, para4: Pcint
+): PXVisualInfo {.cdecl, dynlib: libX11, importc.}
+
+proc XGetWMClientMachine*(
+  para1: PDisplay, para2: Window, para3: PXTextProperty
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XGetWMHints*(
+  para1: PDisplay, para2: Window
+): PXWMHints {.cdecl, dynlib: libX11, importc.}
+
+proc XGetWMIconName*(
+  para1: PDisplay, para2: Window, para3: PXTextProperty
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XGetWMName*(
+  para1: PDisplay, para2: Window, para3: PXTextProperty
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XGetWMNormalHints*(
+  para1: PDisplay, para2: Window, para3: PXSizeHints, para4: ptr int
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XGetWMSizeHints*(
+  para1: PDisplay, para2: Window, para3: PXSizeHints, para4: ptr int, para5: Atom
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XGetZoomHints*(
+  para1: PDisplay, para2: Window, para3: PXSizeHints
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XIntersectRegion*(
+  para1: Region, para2: Region, para3: Region
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XConvertCase*(
+  para1: KeySym, para2: PKeySym, para3: PKeySym
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XLookupString*(
+  para1: PXKeyEvent, para2: cstring, para3: cint, para4: PKeySym, para5: PXComposeStatus
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XMatchVisualInfo*(
+  para1: PDisplay, para2: cint, para3: cint, para4: cint, para5: PXVisualInfo
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XOffsetRegion*(
+  para1: Region, para2: cint, para3: cint
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XPointInRegion*(
+  para1: Region, para2: cint, para3: cint
+): XBool {.cdecl, dynlib: libX11, importc.}
+
+proc XPolygonRegion*(
+  para1: PXPoint, para2: cint, para3: cint
+): Region {.cdecl, dynlib: libX11, importc.}
+
+proc XRectInRegion*(
+  para1: Region, para2: cint, para3: cint, para4: cuint, para5: cuint
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XSaveContext*(
+  para1: PDisplay, para2: XID, para3: XContext, para4: cstring
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XSetClassHint*(
+  para1: PDisplay, para2: Window, para3: PXClassHint
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XSetIconSizes*(
+  para1: PDisplay, para2: Window, para3: PXIconSize, para4: cint
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XSetNormalHints*(
+  para1: PDisplay, para2: Window, para3: PXSizeHints
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XSetRGBColormaps*(
+  para1: PDisplay, para2: Window, para3: PXStandardColormap, para4: cint, para5: Atom
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XSetSizeHints*(
+  para1: PDisplay, para2: Window, para3: PXSizeHints, para4: Atom
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XSetStandardProperties*(
+  para1: PDisplay,
+  para2: Window,
+  para3: cstring,
+  para4: cstring,
+  para5: Pixmap,
+  para6: PPchar,
+  para7: cint,
+  para8: PXSizeHints,
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XSetTextProperty*(
+  para1: PDisplay, para2: Window, para3: PXTextProperty, para4: Atom
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XSetWMClientMachine*(
+  para1: PDisplay, para2: Window, para3: PXTextProperty
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XSetWMHints*(
+  para1: PDisplay, para2: Window, para3: PXWMHints
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XSetWMIconName*(
+  para1: PDisplay, para2: Window, para3: PXTextProperty
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XSetWMName*(
+  para1: PDisplay, para2: Window, para3: PXTextProperty
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XSetWMNormalHints*(
+  para1: PDisplay, para2: Window, para3: PXSizeHints
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XSetWMProperties*(
+  para1: PDisplay,
+  para2: Window,
+  para3: PXTextProperty,
+  para4: PXTextProperty,
+  para5: PPchar,
+  para6: cint,
+  para7: PXSizeHints,
+  para8: PXWMHints,
+  para9: PXClassHint,
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XmbSetWMProperties*(
+  para1: PDisplay,
+  para2: Window,
+  para3: cstring,
+  para4: cstring,
+  para5: PPchar,
+  para6: cint,
+  para7: PXSizeHints,
+  para8: PXWMHints,
+  para9: PXClassHint,
+) {.cdecl, dynlib: libX11, importc.}
+
+proc Xutf8SetWMProperties*(
+  para1: PDisplay,
+  para2: Window,
+  para3: cstring,
+  para4: cstring,
+  para5: PPchar,
+  para6: cint,
+  para7: PXSizeHints,
+  para8: PXWMHints,
+  para9: PXClassHint,
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XSetWMSizeHints*(
+  para1: PDisplay, para2: Window, para3: PXSizeHints, para4: Atom
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XSetRegion*(
+  para1: PDisplay, para2: GC, para3: Region
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XSetStandardColormap*(
+  para1: PDisplay, para2: Window, para3: PXStandardColormap, para4: Atom
+) {.cdecl, dynlib: libX11, importc.}
+
+proc XSetZoomHints*(
+  para1: PDisplay, para2: Window, para3: PXSizeHints
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XShrinkRegion*(
+  para1: Region, para2: cint, para3: cint
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XStringListToTextProperty*(
+  para1: PPchar, para2: cint, para3: PXTextProperty
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XSubtractRegion*(
+  para1: Region, para2: Region, para3: Region
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XmbTextListToTextProperty*(
+  para1: PDisplay,
+  para2: PPchar,
+  para3: cint,
+  para4: XICCEncodingStyle,
+  para5: PXTextProperty,
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XwcTextListToTextProperty*(
+  para1: PDisplay,
+  para2: ptr ptr int16,
+  para3: cint,
+  para4: XICCEncodingStyle,
+  para5: PXTextProperty,
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc Xutf8TextListToTextProperty*(
+  para1: PDisplay,
+  para2: PPchar,
+  para3: cint,
+  para4: XICCEncodingStyle,
+  para5: PXTextProperty,
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XwcFreeStringList*(para1: ptr ptr int16) {.cdecl, dynlib: libX11, importc.}
+proc XTextPropertyToStringList*(
+  para1: PXTextProperty, para2: PPPchar, para3: Pcint
+): Status {.cdecl, dynlib: libX11, importc.}
+
+proc XmbTextPropertyToTextList*(
+  para1: PDisplay, para2: PXTextProperty, para3: PPPchar, para4: Pcint
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XwcTextPropertyToTextList*(
+  para1: PDisplay, para2: PXTextProperty, para3: ptr ptr ptr int16, para4: Pcint
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc Xutf8TextPropertyToTextList*(
+  para1: PDisplay, para2: PXTextProperty, para3: PPPchar, para4: Pcint
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XUnionRectWithRegion*(
+  para1: PXRectangle, para2: Region, para3: Region
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XUnionRegion*(
+  para1: Region, para2: Region, para3: Region
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XWMGeometry*(
+  para1: PDisplay,
+  para2: cint,
+  para3: cstring,
+  para4: cstring,
+  para5: cuint,
+  para6: PXSizeHints,
+  para7: Pcint,
+  para8: Pcint,
+  para9: Pcint,
+  para10: Pcint,
+  para11: Pcint,
+): cint {.cdecl, dynlib: libX11, importc.}
+
+proc XXorRegion*(
+  para1: Region, para2: Region, para3: Region
+): cint {.cdecl, dynlib: libX11, importc.}
+
 #when defined(MACROS):
 proc XDestroyImage*(ximage: PXImage): cint
 proc XGetPixel*(ximage: PXImage, x, y: cint): culong
@@ -372,6 +515,7 @@
 proc IsModifierKey*(keysym: KeySym): bool
   #function XUniqueContext : XContext;
   #function XStringToContext(_string : Pchar) : XContext;
+
 # implementation
 
 #when defined(MACROS):
@@ -409,5 +553,5 @@
   (keysym >= XK_Select) and (keysym <= XK_Break)
 
 proc IsModifierKey(keysym: KeySym): bool =
-  ((keysym >= XK_Shift_L) and (keysym <= XK_Hyper_R)) or
-      (keysym == XK_Mode_switch) or (keysym == XK_Num_Lock)
+  ((keysym >= XK_Shift_L) and (keysym <= XK_Hyper_R)) or (keysym == XK_Mode_switch) or
+    (keysym == XK_Num_Lock)
--- a/semicongine/thirdparty/x11/xv.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xv.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -23,8 +23,7 @@
 #******************************************************************
 # $XFree86: xc/include/extensions/Xv.h,v 1.3 1999/05/23 06:33:22 dawes Exp $
 
-import
-  x
+import x
 
 const
   XvName* = "libXVideo.so"
@@ -53,10 +52,10 @@
   XvPacked* = 0
   XvPlanar* = 1
   XvTopToBottom* = 0
-  XvBottomToTop* = 1        # Events
+  XvBottomToTop* = 1 # Events
   XvVideoNotify* = 0
   XvPortNotify* = 1
-  XvNumEvents* = 2          # Video Notify Reasons
+  XvNumEvents* = 2 # Video Notify Reasons
   XvStarted* = 0
   XvStopped* = 1
   XvBusy* = 2
@@ -70,11 +69,11 @@
   XvPreemptedMask* = 1 shl XvPreempted
   XvHardErrorMask* = 1 shl XvHardError
   XvAnyReasonMask* = (1 shl XvNumReasons) - 1
-  XvNoReasonMask* = 0       # Errors
+  XvNoReasonMask* = 0 # Errors
   XvBadPort* = 0
   XvBadEncoding* = 1
   XvBadControl* = 2
-  XvNumErrors* = 3          # Status
+  XvNumErrors* = 3 # Status
   XvBadExtension* = 1
   XvAlreadyGrabbed* = 2
   XvInvalidTime* = 3
--- a/semicongine/thirdparty/x11/xvlib.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/x11/xvlib.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -50,20 +50,18 @@
 #**
 #*
 
-import
-  x, xlib, xshm, xv
+import x, xlib, xshm, xv
 
-const
-  libXv* = "libXv.so"
+const libXv* = "libXv.so"
 
 type
   PXvRational* = ptr XvRational
-  XvRational*{.final.} = object
+  XvRational* {.final.} = object
     numerator*: cint
     denominator*: cint
 
   PXvAttribute* = ptr XvAttribute
-  XvAttribute*{.final.} = object
+  XvAttribute* {.final.} = object
     flags*: cint # XvGettable, XvSettable
     min_value*: cint
     max_value*: cint
@@ -71,7 +69,7 @@
 
   PPXvEncodingInfo* = ptr PXvEncodingInfo
   PXvEncodingInfo* = ptr XvEncodingInfo
-  XvEncodingInfo*{.final.} = object
+  XvEncodingInfo* {.final.} = object
     encoding_id*: XvEncodingID
     name*: cstring
     width*: culong
@@ -80,13 +78,13 @@
     num_encodings*: culong
 
   PXvFormat* = ptr XvFormat
-  XvFormat*{.final.} = object
+  XvFormat* {.final.} = object
     depth*: cchar
     visual_id*: culong
 
   PPXvAdaptorInfo* = ptr PXvAdaptorInfo
   PXvAdaptorInfo* = ptr XvAdaptorInfo
-  XvAdaptorInfo*{.final.} = object
+  XvAdaptorInfo* {.final.} = object
     base_id*: XvPortID
     num_ports*: culong
     thetype*: cchar
@@ -96,56 +94,57 @@
     num_adaptors*: culong
 
   PXvVideoNotifyEvent* = ptr XvVideoNotifyEvent
-  XvVideoNotifyEvent*{.final.} = object
+  XvVideoNotifyEvent* {.final.} = object
     theType*: cint
-    serial*: culong     # # of last request processed by server
-    send_event*: XBool  # true if this came from a SendEvent request
-    display*: PDisplay  # Display the event was read from
+    serial*: culong # # of last request processed by server
+    send_event*: XBool # true if this came from a SendEvent request
+    display*: PDisplay # Display the event was read from
     drawable*: Drawable # drawable
-    reason*: culong     # what generated this event
-    port_id*: XvPortID  # what port
-    time*: Time         # milliseconds
+    reason*: culong # what generated this event
+    port_id*: XvPortID # what port
+    time*: Time # milliseconds
 
   PXvPortNotifyEvent* = ptr XvPortNotifyEvent
-  XvPortNotifyEvent*{.final.} = object
+  XvPortNotifyEvent* {.final.} = object
     theType*: cint
-    serial*: culong    # # of last request processed by server
+    serial*: culong # # of last request processed by server
     send_event*: XBool # true if this came from a SendEvent request
     display*: PDisplay # Display the event was read from
     port_id*: XvPortID # what port
-    time*: Time        # milliseconds
-    attribute*: Atom   # atom that identifies attribute
-    value*: clong      # value of attribute
+    time*: Time # milliseconds
+    attribute*: Atom # atom that identifies attribute
+    value*: clong # value of attribute
 
   PXvEvent* = ptr XvEvent
-  XvEvent*{.final.} = object
-    pad*: array[0..23, clong] # case longint of
-                              #      0 : (
-                              #            theType : cint;
-                              #	  );
-                              #      1 : (
-                              #            xvvideo : XvVideoNotifyEvent;
-                              #          );
-                              #      2 : (
-                              #            xvport : XvPortNotifyEvent;
-                              #          );
-                              #      3 : (
-                              #
-                              #          );
+  XvEvent* {.final.} = object
+    pad*: array[0 .. 23, clong]
+      # case longint of
+      #      0 : (
+      #            theType : cint;
+      #	  );
+      #      1 : (
+      #            xvvideo : XvVideoNotifyEvent;
+      #          );
+      #      2 : (
+      #            xvport : XvPortNotifyEvent;
+      #          );
+      #      3 : (
+      #
+      #          );
 
   PXvImageFormatValues* = ptr XvImageFormatValues
-  XvImageFormatValues*{.final.} = object
-    id*: cint                            # Unique descriptor for the format
-    theType*: cint                       # XvRGB, XvYUV
-    byte_order*: cint                    # LSBFirst, MSBFirst
-    guid*: array[0..15, cchar]           # Globally Unique IDentifier
+  XvImageFormatValues* {.final.} = object
+    id*: cint # Unique descriptor for the format
+    theType*: cint # XvRGB, XvYUV
+    byte_order*: cint # LSBFirst, MSBFirst
+    guid*: array[0 .. 15, cchar] # Globally Unique IDentifier
     bits_per_pixel*: cint
-    format*: cint                        # XvPacked, XvPlanar
-    num_planes*: cint                    # for RGB formats only
+    format*: cint # XvPacked, XvPlanar
+    num_planes*: cint # for RGB formats only
     depth*: cint
     red_mask*: cuint
     green_mask*: cuint
-    blue_mask*: cuint                    # for YUV formats only
+    blue_mask*: cuint # for YUV formats only
     y_sample_bits*: cuint
     u_sample_bits*: cuint
     v_sample_bits*: cuint
@@ -155,79 +154,159 @@
     vert_y_period*: cuint
     vert_u_period*: cuint
     vert_v_period*: cuint
-    component_order*: array[0..31, char] # eg. UYVY
-    scanline_order*: cint                # XvTopToBottom, XvBottomToTop
+    component_order*: array[0 .. 31, char] # eg. UYVY
+    scanline_order*: cint # XvTopToBottom, XvBottomToTop
 
   PXvImage* = ptr XvImage
-  XvImage*{.final.} = object
+  XvImage* {.final.} = object
     id*: cint
     width*, height*: cint
     data_size*: cint # bytes
     num_planes*: cint
-    pitches*: cint   # bytes
-    offsets*: cint   # bytes
+    pitches*: cint # bytes
+    offsets*: cint # bytes
     data*: pointer
     obdata*: XPointer
 
-proc XvQueryExtension*(display: PDisplay, p_version, p_revision, p_requestBase,
-    p_eventBase, p_errorBase: cuint): cint{.cdecl, dynlib: libXv, importc.}
-proc XvQueryAdaptors*(display: PDisplay, window: Window, p_nAdaptors: cuint,
-                      p_pAdaptors: PPXvAdaptorInfo): cint{.cdecl, dynlib: libXv,
-    importc.}
-proc XvQueryEncodings*(display: PDisplay, port: XvPortID, p_nEncoding: cuint,
-                       p_pEncoding: PPXvEncodingInfo): cint{.cdecl,
-    dynlib: libXv, importc.}
-proc XvPutVideo*(display: PDisplay, port: XvPortID, d: Drawable, gc: GC,
-                 vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvPutStill*(display: PDisplay, port: XvPortID, d: Drawable, gc: GC,
-                 vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvGetVideo*(display: PDisplay, port: XvPortID, d: Drawable, gc: GC,
-                 vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvGetStill*(display: PDisplay, port: XvPortID, d: Drawable, gc: GC,
-                 vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvStopVideo*(display: PDisplay, port: XvPortID, drawable: Drawable): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvGrabPort*(display: PDisplay, port: XvPortID, time: Time): cint{.cdecl,
-    dynlib: libXv, importc.}
-proc XvUngrabPort*(display: PDisplay, port: XvPortID, time: Time): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvSelectVideoNotify*(display: PDisplay, drawable: Drawable, onoff: XBool): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvSelectPortNotify*(display: PDisplay, port: XvPortID, onoff: XBool): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvSetPortAttribute*(display: PDisplay, port: XvPortID, attribute: Atom,
-                         value: cint): cint{.cdecl, dynlib: libXv, importc.}
-proc XvGetPortAttribute*(display: PDisplay, port: XvPortID, attribute: Atom,
-                         p_value: cint): cint{.cdecl, dynlib: libXv, importc.}
-proc XvQueryBestSize*(display: PDisplay, port: XvPortID, motion: XBool,
-                      vid_w, vid_h, drw_w, drw_h: cuint,
-                      p_actual_width, p_actual_height: cuint): cint{.cdecl,
-    dynlib: libXv, importc.}
-proc XvQueryPortAttributes*(display: PDisplay, port: XvPortID, number: cint): PXvAttribute{.
-    cdecl, dynlib: libXv, importc.}
-proc XvFreeAdaptorInfo*(adaptors: PXvAdaptorInfo){.cdecl, dynlib: libXv, importc.}
-proc XvFreeEncodingInfo*(encodings: PXvEncodingInfo){.cdecl, dynlib: libXv,
-    importc.}
-proc XvListImageFormats*(display: PDisplay, port_id: XvPortID,
-                         count_return: cint): PXvImageFormatValues{.cdecl,
-    dynlib: libXv, importc.}
-proc XvCreateImage*(display: PDisplay, port: XvPortID, id: cint, data: pointer,
-                    width, height: cint): PXvImage{.cdecl, dynlib: libXv,
-    importc.}
-proc XvPutImage*(display: PDisplay, id: XvPortID, d: Drawable, gc: GC,
-                 image: PXvImage, src_x, src_y: cint, src_w, src_h: cuint,
-                 dest_x, dest_y: cint, dest_w, dest_h: cuint): cint{.cdecl,
-    dynlib: libXv, importc.}
-proc XvShmPutImage*(display: PDisplay, id: XvPortID, d: Drawable, gc: GC,
-                    image: PXvImage, src_x, src_y: cint, src_w, src_h: cuint,
-                    dest_x, dest_y: cint, dest_w, dest_h: cuint,
-                    send_event: XBool): cint{.cdecl, dynlib: libXv, importc.}
-proc XvShmCreateImage*(display: PDisplay, port: XvPortID, id: cint,
-                       data: pointer, width, height: cint,
-                       shminfo: PXShmSegmentInfo): PXvImage{.cdecl,
-    dynlib: libXv, importc.}
+proc XvQueryExtension*(
+  display: PDisplay,
+  p_version, p_revision, p_requestBase, p_eventBase, p_errorBase: cuint,
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvQueryAdaptors*(
+  display: PDisplay, window: Window, p_nAdaptors: cuint, p_pAdaptors: PPXvAdaptorInfo
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvQueryEncodings*(
+  display: PDisplay, port: XvPortID, p_nEncoding: cuint, p_pEncoding: PPXvEncodingInfo
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvPutVideo*(
+  display: PDisplay,
+  port: XvPortID,
+  d: Drawable,
+  gc: GC,
+  vx, vy: cint,
+  vw, vh: cuint,
+  dx, dy: cint,
+  dw, dh: cuint,
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvPutStill*(
+  display: PDisplay,
+  port: XvPortID,
+  d: Drawable,
+  gc: GC,
+  vx, vy: cint,
+  vw, vh: cuint,
+  dx, dy: cint,
+  dw, dh: cuint,
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvGetVideo*(
+  display: PDisplay,
+  port: XvPortID,
+  d: Drawable,
+  gc: GC,
+  vx, vy: cint,
+  vw, vh: cuint,
+  dx, dy: cint,
+  dw, dh: cuint,
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvGetStill*(
+  display: PDisplay,
+  port: XvPortID,
+  d: Drawable,
+  gc: GC,
+  vx, vy: cint,
+  vw, vh: cuint,
+  dx, dy: cint,
+  dw, dh: cuint,
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvStopVideo*(
+  display: PDisplay, port: XvPortID, drawable: Drawable
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvGrabPort*(
+  display: PDisplay, port: XvPortID, time: Time
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvUngrabPort*(
+  display: PDisplay, port: XvPortID, time: Time
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvSelectVideoNotify*(
+  display: PDisplay, drawable: Drawable, onoff: XBool
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvSelectPortNotify*(
+  display: PDisplay, port: XvPortID, onoff: XBool
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvSetPortAttribute*(
+  display: PDisplay, port: XvPortID, attribute: Atom, value: cint
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvGetPortAttribute*(
+  display: PDisplay, port: XvPortID, attribute: Atom, p_value: cint
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvQueryBestSize*(
+  display: PDisplay,
+  port: XvPortID,
+  motion: XBool,
+  vid_w, vid_h, drw_w, drw_h: cuint,
+  p_actual_width, p_actual_height: cuint,
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvQueryPortAttributes*(
+  display: PDisplay, port: XvPortID, number: cint
+): PXvAttribute {.cdecl, dynlib: libXv, importc.}
+
+proc XvFreeAdaptorInfo*(adaptors: PXvAdaptorInfo) {.cdecl, dynlib: libXv, importc.}
+proc XvFreeEncodingInfo*(encodings: PXvEncodingInfo) {.cdecl, dynlib: libXv, importc.}
+proc XvListImageFormats*(
+  display: PDisplay, port_id: XvPortID, count_return: cint
+): PXvImageFormatValues {.cdecl, dynlib: libXv, importc.}
+
+proc XvCreateImage*(
+  display: PDisplay, port: XvPortID, id: cint, data: pointer, width, height: cint
+): PXvImage {.cdecl, dynlib: libXv, importc.}
+
+proc XvPutImage*(
+  display: PDisplay,
+  id: XvPortID,
+  d: Drawable,
+  gc: GC,
+  image: PXvImage,
+  src_x, src_y: cint,
+  src_w, src_h: cuint,
+  dest_x, dest_y: cint,
+  dest_w, dest_h: cuint,
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvShmPutImage*(
+  display: PDisplay,
+  id: XvPortID,
+  d: Drawable,
+  gc: GC,
+  image: PXvImage,
+  src_x, src_y: cint,
+  src_w, src_h: cuint,
+  dest_x, dest_y: cint,
+  dest_w, dest_h: cuint,
+  send_event: XBool,
+): cint {.cdecl, dynlib: libXv, importc.}
+
+proc XvShmCreateImage*(
+  display: PDisplay,
+  port: XvPortID,
+  id: cint,
+  data: pointer,
+  width, height: cint,
+  shminfo: PXShmSegmentInfo,
+): PXvImage {.cdecl, dynlib: libXv, importc.}
+
 # implementation
--- a/semicongine/thirdparty/zippy/zippy.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/zippy/zippy.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,5 +1,11 @@
-import zippy/adler32, zippy/common, zippy/crc, zippy/deflate,
-    zippy/gzip, zippy/inflate, zippy/internal
+import
+  zippy/adler32,
+  zippy/common,
+  zippy/crc,
+  zippy/deflate,
+  zippy/gzip,
+  zippy/inflate,
+  zippy/internal
 
 when (NimMajor, NimMinor, NimPatch) >= (1, 6, 0):
   import std/sysrand
@@ -9,15 +15,12 @@
 export common
 
 proc compress*(
-  src: pointer,
-  len: int,
-  level = DefaultCompression,
-  dataFormat = dfGzip
+    src: pointer, len: int, level = DefaultCompression, dataFormat = dfGzip
 ): string {.raises: [ZippyError].} =
   ## Compresses src and returns the compressed data.
   let src = cast[ptr UncheckedArray[uint8]](src)
 
-  case dataFormat:
+  case dataFormat
   of dfGzip:
     result.setLen(10)
     result[0] = 31.char
@@ -56,7 +59,6 @@
     result.add(((isize shr 8) and 255).char)
     result.add(((isize shr 16) and 255).char)
     result.add(((isize shr 24) and 255).char)
-
   of dfZlib:
     const
       cm = 8.uint8
@@ -76,57 +78,44 @@
     result.add(((checksum shr 16) and 255).char)
     result.add(((checksum shr 8) and 255).char)
     result.add(((checksum shr 0) and 255).char)
-
   of dfDeflate:
     deflate(result, src, len, level)
-
   else:
     raise newException(ZippyError, "Invalid data format " & $dfDetect)
 
 proc compress*(
-  src: string,
-  level = DefaultCompression,
-  dataFormat = dfGzip
+    src: string, level = DefaultCompression, dataFormat = dfGzip
 ): string {.raises: [ZippyError].} =
   compress(src.cstring, src.len, level, dataFormat)
 
 proc compress*(
-  src: seq[uint8],
-  level = DefaultCompression,
-  dataFormat = dfGzip
+    src: seq[uint8], level = DefaultCompression, dataFormat = dfGzip
 ): seq[uint8] {.raises: [ZippyError].} =
   cast[seq[uint8]](compress(cast[string](src).cstring, src.len, level, dataFormat))
 
 proc uncompress*(
-  src: pointer,
-  len: int,
-  dataFormat = dfDetect
+    src: pointer, len: int, dataFormat = dfDetect
 ): string {.raises: [ZippyError].} =
   ## Uncompresses src and returns the uncompressed data.
   let src = cast[ptr UncheckedArray[uint8]](src)
 
-  case dataFormat:
+  case dataFormat
   of dfDetect:
     if (
-      len > 18 and
-      src[0].uint8 == 31 and src[1].uint8 == 139 and src[2].uint8 == 8 and
+      len > 18 and src[0].uint8 == 31 and src[1].uint8 == 139 and src[2].uint8 == 8 and
       (src[3].uint8 and 0b11100000) == 0
     ):
       return uncompress(src, len, dfGzip)
 
     if (
-      len > 6 and
-      (src[0].uint8 and 0b00001111) == 8 and
-      (src[0].uint8 shr 4) <= 7 and
+      len > 6 and (src[0].uint8 and 0b00001111) == 8 and (src[0].uint8 shr 4) <= 7 and
       ((src[0].uint16 * 256) + src[1].uint8) mod 31 == 0
     ):
       return uncompress(src, len, dfZlib)
 
     raise newException(ZippyError, "Unable to detect compressed data format")
-
   of dfGzip:
     uncompressGzip(result, src, len)
-
   of dfZlib:
     if len < 6:
       failUncompress()
@@ -152,26 +141,19 @@
     inflate(result, src, len, 2)
 
     let checksum = (
-      src[len - 4].uint32 shl 24 or
-      src[len - 3].uint32 shl 16 or
-      src[len - 2].uint32 shl 8 or
-      src[len - 1].uint32
+      src[len - 4].uint32 shl 24 or src[len - 3].uint32 shl 16 or
+      src[len - 2].uint32 shl 8 or src[len - 1].uint32
     )
 
     if checksum != adler32(result):
       raise newException(ZippyError, "Checksum verification failed")
-
   of dfDeflate:
     inflate(result, src, len, 0)
 
-proc uncompress*(
-  src: string,
-  dataFormat = dfDetect
-): string {.raises: [ZippyError].} =
+proc uncompress*(src: string, dataFormat = dfDetect): string {.raises: [ZippyError].} =
   uncompress(src.cstring, src.len, dataFormat)
 
 proc uncompress*(
-  src: seq[uint8],
-  dataFormat = dfDetect
+    src: seq[uint8], dataFormat = dfDetect
 ): seq[uint8] {.raises: [ZippyError].} =
   cast[seq[uint8]](uncompress(cast[string](src).cstring, src.len, dataFormat))
--- a/semicongine/thirdparty/zippy/zippy/adler32_simd.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/zippy/zippy/adler32_simd.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -25,13 +25,19 @@
   func mm_loadu_si128(p: pointer): M128i {.importc: "_mm_loadu_si128".}
   func mm_setzero_si128(): M128i {.importc: "_mm_setzero_si128".}
   func mm_set_epi32(a, b, c, d: int32 | uint32): M128i {.importc: "_mm_set_epi32".}
-  func mm_setr_epi8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p: int8 | uint8): M128i {.importc: "_mm_setr_epi8".}
+  func mm_setr_epi8(
+    a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p: int8 | uint8
+  ): M128i {.importc: "_mm_setr_epi8".}
   func mm_set1_epi16(a: int16 | uint16): M128i {.importc: "_mm_set1_epi16".}
   func mm_add_epi32(a, b: M128i): M128i {.importc: "_mm_add_epi32".}
   func mm_sad_epu8(a, b: M128i): M128i {.importc: "_mm_sad_epu8".}
   func mm_madd_epi16(a, b: M128i): M128i {.importc: "_mm_madd_epi16".}
-  func mm_slli_epi32(a: M128i, imm8: int32 | uint32): M128i {.importc: "_mm_slli_epi32".}
-  func mm_shuffle_epi32(a: M128i, imm8: int32 | uint32): M128i {.importc: "_mm_shuffle_epi32".}
+  func mm_slli_epi32(
+    a: M128i, imm8: int32 | uint32
+  ): M128i {.importc: "_mm_slli_epi32".}
+  func mm_shuffle_epi32(
+    a: M128i, imm8: int32 | uint32
+  ): M128i {.importc: "_mm_shuffle_epi32".}
   func mm_cvtsi128_si32(a: M128i): int32 {.importc: "_mm_cvtsi128_si32".}
 
   {.pop.}
@@ -64,7 +70,8 @@
     remaining -= (blocks * blockSize)
 
     let
-      tap1 = mm_setr_epi8(32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17)
+      tap1 =
+        mm_setr_epi8(32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17)
       tap2 = mm_setr_epi8(16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
       zero = mm_setzero_si128()
       ones = mm_set1_epi16(1)
--- a/semicongine/thirdparty/zippy/zippy/bitstreams.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/zippy/zippy/bitstreams.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -48,9 +48,7 @@
   b.bitsBuffered += 8 * bytesAdded
 
 proc readBits*(
-  b: var BitStreamReader,
-  bits: int,
-  fillBitBuffer: static[bool] = true
+    b: var BitStreamReader, bits: int, fillBitBuffer: static[bool] = true
 ): uint16 {.inline.} =
   assert bits >= 0 and bits <= 16
 
@@ -85,12 +83,7 @@
   b.pos += (bits + b.bitPos) shr 3
   b.bitPos = (bits + b.bitPos) and 7
 
-proc addBits*(
-  b: var BitStreamWriter,
-  dst: var string,
-  value: uint32,
-  bitLen: int
-) =
+proc addBits*(b: var BitStreamWriter, dst: var string, value: uint32, bitLen: int) =
   assert bitLen >= 0 and bitLen <= 32
 
   if b.pos + 8 > dst.len:
@@ -104,10 +97,10 @@
   b.incPos(bitLen)
 
 proc addBytes*(
-  b: var BitStreamWriter,
-  dst: var string,
-  src: ptr UncheckedArray[uint8],
-  srcPos, len: int
+    b: var BitStreamWriter,
+    dst: var string,
+    src: ptr UncheckedArray[uint8],
+    srcPos, len: int,
 ) =
   if b.bitPos != 0:
     raise newException(ZippyError, "Must be at a byte boundary")
--- a/semicongine/thirdparty/zippy/zippy/common.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/zippy/zippy/common.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -2,7 +2,10 @@
   ZippyError* = object of CatchableError ## Raised if an operation fails.
 
   CompressedDataFormat* = enum ## Supported compressed data formats
-    dfDetect, dfZlib, dfGzip, dfDeflate
+    dfDetect
+    dfZlib
+    dfGzip
+    dfDeflate
 
 const
   NoCompression* = 0
--- a/semicongine/thirdparty/zippy/zippy/crc.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/zippy/zippy/crc.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -37,14 +37,10 @@
       one = read32(src, i) xor result
       two = read32(src, i + 4)
     result =
-      crcTables[7][one and 255] xor
-      crcTables[6][(one shr 8) and 255] xor
-      crcTables[5][(one shr 16) and 255] xor
-      crcTables[4][one shr 24] xor
-      crcTables[3][two and 255] xor
-      crcTables[2][(two shr 8) and 255] xor
-      crcTables[1][(two shr 16) and 255] xor
-      crcTables[0][two shr 24]
+      crcTables[7][one and 255] xor crcTables[6][(one shr 8) and 255] xor
+      crcTables[5][(one shr 16) and 255] xor crcTables[4][one shr 24] xor
+      crcTables[3][two and 255] xor crcTables[2][(two shr 8) and 255] xor
+      crcTables[1][(two shr 16) and 255] xor crcTables[0][two shr 24]
     i += 8
 
   for j in i ..< len:
--- a/semicongine/thirdparty/zippy/zippy/crc32_simd.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/zippy/zippy/crc32_simd.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -17,7 +17,9 @@
   func mm_loadu_si128(p: pointer): M128i {.importc: "_mm_loadu_si128".}
   func mm_loadl_epi64(p: pointer): M128i {.importc: "_mm_loadl_epi64".}
   func mm_setr_epi32(a, b, c, d: int32 | uint32): M128i {.importc: "_mm_setr_epi32".}
-  func mm_srli_si128(a: M128i, imm8: int32 | uint32): M128i {.importc: "_mm_srli_si128".}
+  func mm_srli_si128(
+    a: M128i, imm8: int32 | uint32
+  ): M128i {.importc: "_mm_srli_si128".}
   func mm_xor_si128(a, b: M128i): M128i {.importc: "_mm_xor_si128".}
   func mm_and_si128(a, b: M128i): M128i {.importc: "_mm_and_si128".}
   func mm_cvtsi32_si128(a: int32 | uint32): M128i {.importc: "_mm_cvtsi32_si128".}
@@ -26,13 +28,17 @@
 
   {.push header: "smmintrin.h".}
 
-  func mm_extract_epi32(a: M128i, imm8: int32 | uint32): int32 {.importc: "_mm_extract_epi32".}
+  func mm_extract_epi32(
+    a: M128i, imm8: int32 | uint32
+  ): int32 {.importc: "_mm_extract_epi32".}
 
   {.pop.}
 
   {.push header: "wmmintrin.h".}
 
-  func mm_clmulepi64_si128(a, b: M128i, imm8: int32 | uint32): M128i {.importc: "_mm_clmulepi64_si128".}
+  func mm_clmulepi64_si128(
+    a, b: M128i, imm8: int32 | uint32
+  ): M128i {.importc: "_mm_clmulepi64_si128".}
 
   {.pop.}
 
@@ -145,7 +151,9 @@
 
 elif defined(arm64):
   func crc32b(crc: uint32, v: uint8): uint32 {.importc: "__builtin_arm_crc32b", nodecl.}
-  func crc32d(crc: uint32, v: uint64): uint32 {.importc: "__builtin_arm_crc32d", nodecl.}
+  func crc32d(
+    crc: uint32, v: uint64
+  ): uint32 {.importc: "__builtin_arm_crc32d", nodecl.}
 
   proc crc32_armv8a_crypto*(src: pointer, len: int): uint32 =
     let src = cast[ptr UncheckedArray[uint8]](src)
--- a/semicongine/thirdparty/zippy/zippy/deflate.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/zippy/zippy/deflate.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -11,8 +11,7 @@
   a.freq < b.freq
 
 proc huffmanCodes(
-  frequencies: openArray[uint32],
-  minCodes, codeLengthLimit: int
+    frequencies: openArray[uint32], minCodes, codeLengthLimit: int
 ): (seq[uint16], seq[uint8]) =
   # https://en.wikipedia.org/wiki/Huffman_coding#Length-limited_Huffman_coding
   # https://en.wikipedia.org/wiki/Canonical_Huffman_code
@@ -55,11 +54,7 @@
         heap.push(node)
 
       while heap.len >= 2:
-        let node = Node(
-          symbol: -1,
-          left: heap.pop(),
-          right: heap.pop()
-        )
+        let node = Node(symbol: -1, left: heap.pop(), right: heap.pop())
         node.freq = node.left.freq + node.right.freq
         heap.push(node)
 
@@ -151,11 +146,11 @@
   (codes, codeLens)
 
 proc encodeAllLiterals(
-  encoding: var seq[uint16],
-  ep: var int,
-  metadata: var BlockMetadata,
-  src: ptr UncheckedArray[uint8],
-  start, len: int
+    encoding: var seq[uint16],
+    ep: var int,
+    metadata: var BlockMetadata,
+    src: ptr UncheckedArray[uint8],
+    start, len: int,
 ) =
   for i in 0 ..< len:
     inc metadata.litLenFreq[src[start + i]]
@@ -177,24 +172,20 @@
   metadata.numLiterals = len
 
 proc addNoCompressionBlock(
-  b: var BitStreamWriter,
-  dst: var string,
-  src: ptr UncheckedArray[uint8],
-  blockStart, blockLen: int,
-  finalBlock: bool
+    b: var BitStreamWriter,
+    dst: var string,
+    src: ptr UncheckedArray[uint8],
+    blockStart, blockLen: int,
+    finalBlock: bool,
 ) =
-  let uncompressedBlockCount = max(
-    (blockLen + maxUncompressedBlockSize - 1) div maxUncompressedBlockSize,
-    1
-  )
+  let uncompressedBlockCount =
+    max((blockLen + maxUncompressedBlockSize - 1) div maxUncompressedBlockSize, 1)
   for blockNum in 0 ..< uncompressedBlockCount:
     let
       uncompressedFinalBlock = blockNum == (uncompressedBlockCount - 1)
       uncompressedBlockStart = blockStart + blockNum * maxUncompressedBlockSize
-      uncompressedBlockLen = min(
-        blockStart + blockLen - uncompressedBlockStart,
-        maxUncompressedBlockSize
-      )
+      uncompressedBlockLen =
+        min(blockStart + blockLen - uncompressedBlockStart, maxUncompressedBlockSize)
 
     b.addBits(dst, if finalBlock and uncompressedFinalBlock: 1 else: 0, 1)
     b.addBits(dst, 0, 2)
@@ -212,10 +203,8 @@
   b.pos = dst.len
 
   if level == 0:
-    let blockCount = max(
-      (len + maxUncompressedBlockSize - 1) div maxUncompressedBlockSize,
-      1
-    )
+    let blockCount =
+      max((len + maxUncompressedBlockSize - 1) div maxUncompressedBlockSize, 1)
     for blockNum in 0 ..< blockCount:
       let
         finalBlock = blockNum == (blockCount - 1)
@@ -240,25 +229,11 @@
 
     var metadata: BlockMetadata
 
-    case level:
+    case level
     of -2:
-      encodeAllLiterals(
-        encoding,
-        encodingLen,
-        metadata,
-        src,
-        blockStart,
-        blockLen
-      )
+      encodeAllLiterals(encoding, encodingLen, metadata, src, blockStart, blockLen)
     of 1:
-      encodeSnappy(
-        encoding,
-        encodingLen,
-        metadata,
-        src,
-        blockStart,
-        blockLen
-      )
+      encodeSnappy(encoding, encodingLen, metadata, src, blockStart, blockLen)
     else:
       # -1 or [2, 9]
       encodeLz77(
@@ -268,7 +243,7 @@
         metadata,
         src,
         blockStart,
-        blockLen
+        blockLen,
       )
 
     # If encoding returned almost all literals then write uncompressed.
@@ -311,7 +286,7 @@
         while i < numCodes:
           var repeatCount: int
           while i + repeatCount + 1 < numCodes and
-            codeLengths[i + repeatCount + 1] == codeLengths[i]:
+              codeLengths[i + repeatCount + 1] == codeLengths[i]:
             inc repeatCount
 
           if codeLengths[i] == 0 and repeatCount >= 2:
@@ -431,7 +406,6 @@
 
           if bitLen > 0:
             b.addBits(dst, buf.uint32, bitLen)
-
         else:
           let literalsLength = encoding[encPos].int
           inc encPos
--- a/semicongine/thirdparty/zippy/zippy/gzip.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/zippy/zippy/gzip.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,10 +1,7 @@
 import common, crc, inflate, internal
 
 proc uncompressGzip*(
-  dst: var string,
-  src: ptr UncheckedArray[uint8],
-  len: int,
-  trustSize = false
+    dst: var string, src: ptr UncheckedArray[uint8], len: int, trustSize = false
 ) =
   # Assumes the gzip src data only contains one file.
   if len < 18:
--- a/semicongine/thirdparty/zippy/zippy/inflate.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/zippy/zippy/inflate.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -4,6 +4,7 @@
   func bitreverse16(v: uint16): uint16 {.importc: "__builtin_bitreverse16", nodecl.}
   proc reverseBits(v: uint16): uint16 {.inline.} =
     bitreverse16(v)
+
 else:
   import std/bitops
 
@@ -52,8 +53,7 @@
 
   for i, len in codeLengths:
     if len > 0.uint8:
-      let symbolId =
-        nextCode[len] - result.firstCode[len] + result.firstSymbol[len]
+      let symbolId = nextCode[len] - result.firstCode[len] + result.firstSymbol[len]
       # result.lengths[symbolId] = len
       result.values[symbolId] = i.uint16
       if len <= fastBits:
@@ -82,8 +82,7 @@
     return uint16.high
 
   let symbolId =
-    (k shr (16.uint16 - codeLength)) -
-    h.firstCode[codeLength] +
+    (k shr (16.uint16 - codeLength)) - h.firstCode[codeLength] +
     h.firstSymbol[codeLength]
 
   result = h.values[symbolId]
@@ -102,10 +101,7 @@
     result = b.decodeSymbolSlow(h)
 
 proc inflateBlock(
-  dst: var string,
-  b: var BitStreamReader,
-  op: var int,
-  fixedCodes: bool
+    dst: var string, b: var BitStreamReader, op: var int, fixedCodes: bool
 ) =
   var literalsHuffman, distancesHuffman: Huffman
   if fixedCodes:
@@ -204,8 +200,8 @@
         failUncompress()
 
       let copyLength = (
-        baseLengths[lengthIdx] +
-        b.readBits(baseLengthsExtraBits[lengthIdx].int, false) # Up to 5
+        baseLengths[lengthIdx] + b.readBits(baseLengthsExtraBits[lengthIdx].int, false)
+          # Up to 5
       ).int
 
       let distanceIdx = decodeSymbol(b, distancesHuffman) # Up to 15
@@ -249,11 +245,7 @@
           remaining -= 8
       op += copyLength
 
-proc inflateNoCompression(
-  dst: var string,
-  b: var BitStreamReader,
-  op: var int
-) =
+proc inflateNoCompression(dst: var string, b: var BitStreamReader, op: var int) =
   b.skipRemainingBitsInCurrentByte()
   let
     len = b.readBits(16).int
@@ -278,7 +270,7 @@
     if bfinal != 0.uint16:
       finalBlock = true
 
-    case btype:
+    case btype
     of 0: # No compression
       inflateNoCompression(dst, b, op)
     of 1: # Compressed with fixed Huffman codes
--- a/semicongine/thirdparty/zippy/zippy/internal.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/zippy/zippy/internal.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -24,91 +24,152 @@
   maxLiteralLength* = uint16.high.int shr 1
 
   baseLengths* = [
-    3.uint16, 4, 5, 6, 7, 8, 9, 10, # 257 - 264
-    11, 13, 15, 17, # 265 - 268
-    19, 23, 27, 31, # 269 - 273
-    35, 43, 51, 59, # 274 - 276
-    67, 83, 99, 115, # 278 - 280
-    131, 163, 195, 227, # 281 - 284
-    258 # 285
+    3.uint16,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10, # 257 - 264
+    11,
+    13,
+    15,
+    17, # 265 - 268
+    19,
+    23,
+    27,
+    31, # 269 - 273
+    35,
+    43,
+    51,
+    59, # 274 - 276
+    67,
+    83,
+    99,
+    115, # 278 - 280
+    131,
+    163,
+    195,
+    227, # 281 - 284
+    258, # 285
   ]
 
   baseLengthsExtraBits* = [
-    0.uint8, 0, 0, 0, 0, 0, 0, 0, # 257 - 264
-    1, 1, 1, 1, # 265 - 268
-    2, 2, 2, 2, # 269 - 273
-    3, 3, 3, 3, # 274 - 276
-    4, 4, 4, 4, # 278 - 280
-    5, 5, 5, 5, # 281 - 284
-    0 # 285
+    0.uint8,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0, # 257 - 264
+    1,
+    1,
+    1,
+    1, # 265 - 268
+    2,
+    2,
+    2,
+    2, # 269 - 273
+    3,
+    3,
+    3,
+    3, # 274 - 276
+    4,
+    4,
+    4,
+    4, # 278 - 280
+    5,
+    5,
+    5,
+    5, # 281 - 284
+    0, # 285
   ]
 
   baseLengthIndices* = [
-    0.uint8, 1, 2, 3, 4, 5, 6, 7, 8, 8,
-    9, 9, 10, 10, 11, 11, 12, 12, 12, 12,
-    13, 13, 13, 13, 14, 14, 14, 14, 15, 15,
-    15, 15, 16, 16, 16, 16, 16, 16, 16, 16,
-    17, 17, 17, 17, 17, 17, 17, 17, 18, 18,
-    18, 18, 18, 18, 18, 18, 19, 19, 19, 19,
-    19, 19, 19, 19, 20, 20, 20, 20, 20, 20,
-    20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 22, 22, 22, 22,
-    22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
-    22, 22, 23, 23, 23, 23, 23, 23, 23, 23,
-    23, 23, 23, 23, 23, 23, 23, 23, 24, 24,
-    24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-    24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-    24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-    25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
-    25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
-    25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
-    25, 25, 26, 26, 26, 26, 26, 26, 26, 26,
-    26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
-    26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
-    26, 26, 26, 26, 27, 27, 27, 27, 27, 27,
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
-    27, 27, 27, 27, 27, 28
+    0.uint8, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13,
+    13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17,
+    17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21,
+    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+    22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+    23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+    25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+    25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+    26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27,
+    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+    27, 27, 28,
   ]
 
   baseDistances* = [
-    1.uint16, 2, 3, 4, # 0-3
-    5, 7, # 4-5
-    9, 13, # 6-7
-    17, 25, # 8-9
-    33, 49, # 10-11
-    65, 97, # 12-13
-    129, 193, # 14-15
-    257, 385, # 16-17
-    513, 769, # 18-19
-    1025, 1537, # 20-21
-    2049, 3073, # 22-23
-    4097, 6145, # 24-25
-    8193, 12289, # 26-27
-    16385, 24577 # 28-29
+    1.uint16,
+    2,
+    3,
+    4, # 0-3
+    5,
+    7, # 4-5
+    9,
+    13, # 6-7
+    17,
+    25, # 8-9
+    33,
+    49, # 10-11
+    65,
+    97, # 12-13
+    129,
+    193, # 14-15
+    257,
+    385, # 16-17
+    513,
+    769, # 18-19
+    1025,
+    1537, # 20-21
+    2049,
+    3073, # 22-23
+    4097,
+    6145, # 24-25
+    8193,
+    12289, # 26-27
+    16385,
+    24577, # 28-29
   ]
 
   baseDistanceExtraBits* = [
-    0.uint8, 0, 0, 0, # 0-3
-    1, 1, # 4-5
-    2, 2, # 6-7
-    3, 3, # 8-9
-    4, 4, # 10-11
-    5, 5, # 12-13
-    6, 6, # 14-15
-    7, 7, # 16-17
-    8, 8, # 18-19
-    9, 9, # 20-21
-    10, 10, # 22-23
-    11, 11, # 24-25
-    12, 12, # 26-27
-    13, 13 # 28-29
+    0.uint8,
+    0,
+    0,
+    0, # 0-3
+    1,
+    1, # 4-5
+    2,
+    2, # 6-7
+    3,
+    3, # 8-9
+    4,
+    4, # 10-11
+    5,
+    5, # 12-13
+    6,
+    6, # 14-15
+    7,
+    7, # 16-17
+    8,
+    8, # 18-19
+    9,
+    9, # 20-21
+    10,
+    10, # 22-23
+    11,
+    11, # 24-25
+    12,
+    12, # 26-27
+    13,
+    13, # 28-29
   ]
 
-  clclOrder* = [
-    16.uint8, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15
-  ]
+  clclOrder* = [16.uint8, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]
 
   S_IFDIR* = 0o0040000
   TUREAD* = 0o00400 # read by owner */
@@ -185,7 +246,7 @@
     CompressionConfig(good: 8, lazy: 16, nice: 128, chain: 128), # Default
     CompressionConfig(good: 8, lazy: 32, nice: 256, chain: 256),
     CompressionConfig(good: 32, lazy: 128, nice: 258, chain: 1024),
-    CompressionConfig(good: 32, lazy: 258, nice: 258, chain: 4096) # Max compression
+    CompressionConfig(good: 32, lazy: 258, nice: 258, chain: 4096), # Max compression
   ]
 
 template failUncompress*() =
@@ -223,22 +284,18 @@
 
 proc distanceCodeIndex*(value: uint16): uint16 =
   const distanceCodes = [
-    0.uint8, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
-    8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-    12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
+    0.uint8, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9,
+    9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+    12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
   ]
 
   if value < distanceCodes.len:
@@ -249,8 +306,7 @@
     distanceCodes[value shr 14] + 28
 
 proc determineMatchLength*(
-  src: ptr UncheckedArray[uint8],
-  s1, s2, limit: int
+    src: ptr UncheckedArray[uint8], s1, s2, limit: int
 ): int {.inline.} =
   var
     s1 = s1
@@ -281,15 +337,24 @@
     result.incl fpGroupRead
     result.incl fpOthersRead
   else:
-    if (permissions and TUREAD) != 0: result.incl(fpUserRead)
-    if (permissions and TUWRITE) != 0: result.incl(fpUserWrite)
-    if (permissions and TUEXEC) != 0: result.incl(fpUserExec)
-    if (permissions and TGREAD) != 0: result.incl(fpGroupRead)
-    if (permissions and TGWRITE) != 0: result.incl(fpGroupWrite)
-    if (permissions and TGEXEC) != 0: result.incl(fpGroupExec)
-    if (permissions and TOREAD) != 0: result.incl(fpOthersRead)
-    if (permissions and TOWRITE) != 0: result.incl(fpOthersWrite)
-    if (permissions and TOEXEC) != 0: result.incl(fpOthersExec)
+    if (permissions and TUREAD) != 0:
+      result.incl(fpUserRead)
+    if (permissions and TUWRITE) != 0:
+      result.incl(fpUserWrite)
+    if (permissions and TUEXEC) != 0:
+      result.incl(fpUserExec)
+    if (permissions and TGREAD) != 0:
+      result.incl(fpGroupRead)
+    if (permissions and TGWRITE) != 0:
+      result.incl(fpGroupWrite)
+    if (permissions and TGEXEC) != 0:
+      result.incl(fpGroupExec)
+    if (permissions and TOREAD) != 0:
+      result.incl(fpOthersRead)
+    if (permissions and TOWRITE) != 0:
+      result.incl(fpOthersWrite)
+    if (permissions and TOEXEC) != 0:
+      result.incl(fpOthersExec)
 
 proc verifyPathIsSafeToExtract*(path: string) =
   if path.isAbsolute():
@@ -324,8 +389,10 @@
   # Runtime check if SSE 4.1 and PCLMULQDQ are available
   proc cpuid*(eaxi, ecxi: int32): tuple[eax, ebx, ecx, edx: int32] =
     when defined(vcc):
-      proc cpuid(cpuInfo: ptr int32, functionId, subFunctionId: int32)
-        {.cdecl, importc: "__cpuidex", header: "intrin.h".}
+      proc cpuid(
+        cpuInfo: ptr int32, functionId, subFunctionId: int32
+      ) {.cdecl, importc: "__cpuidex", header: "intrin.h".}
+
       cpuid(result.eax.addr, eaxi, ecxi)
     else:
       var (eaxr, ebxr, ecxr, edxr) = (0'i32, 0'i32, 0'i32, 0'i32)
--- a/semicongine/thirdparty/zippy/zippy/lz77.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/zippy/zippy/lz77.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -8,14 +8,13 @@
   {.push checks: off.}
 
 proc encodeLz77*(
-  encoding: var seq[uint16],
-  ep: var int,
-  config: CompressionConfig,
-  metadata: var BlockMetadata,
-  src: ptr UncheckedArray[uint8],
-  blockStart, blockLen: int
+    encoding: var seq[uint16],
+    ep: var int,
+    config: CompressionConfig,
+    metadata: var BlockMetadata,
+    src: ptr UncheckedArray[uint8],
+    blockStart, blockLen: int,
 ) =
-
   template addLiteral(start, length: int) =
     for i in 0 ..< length:
       inc metadata.litLenFreq[src[start + i]]
@@ -60,7 +59,7 @@
     literalLen: int
     hash: uint32
     windowPos: uint16
-    head = newSeq[uint16](hashSize)       # hash -> pos
+    head = newSeq[uint16](hashSize) # hash -> pos
     chain = newSeq[uint16](maxWindowSize) # pos a -> pos b
 
   template hash4(start: int): uint32 =
--- a/semicongine/thirdparty/zippy/zippy/snappy.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/zippy/zippy/snappy.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -10,12 +10,12 @@
   {.push checks: off.}
 
 proc encodeFragment(
-  encoding: var seq[uint16],
-  metadata: var BlockMetadata,
-  src: ptr UncheckedArray[uint8],
-  ep: var int,
-  start, bytesToRead: int,
-  compressTable: var array[maxCompressTableSize, uint16]
+    encoding: var seq[uint16],
+    metadata: var BlockMetadata,
+    src: ptr UncheckedArray[uint8],
+    ep: var int,
+    start, bytesToRead: int,
+    compressTable: var array[maxCompressTableSize, uint16],
 ) =
   let ipEnd = start + bytesToRead
   var
@@ -136,11 +136,11 @@
   emitRemainder()
 
 proc encodeSnappy*(
-  encoding: var seq[uint16],
-  ep: var int,
-  metadata: var BlockMetadata,
-  src: ptr UncheckedArray[uint8],
-  blockStart, blockLen: int
+    encoding: var seq[uint16],
+    ep: var int,
+    metadata: var BlockMetadata,
+    src: ptr UncheckedArray[uint8],
+    blockStart, blockLen: int,
 ) =
   metadata.litLenFreq[256] = 1 # Alway 1 end-of-block symbol
 
@@ -151,15 +151,7 @@
     let
       fragmentSize = blockStart + blockLen - pos
       bytesToRead = min(fragmentSize, maxWindowSize)
-    encodeFragment(
-      encoding,
-      metadata,
-      src,
-      ep,
-      pos,
-      bytesToRead,
-      compressTable
-    )
+    encodeFragment(encoding, metadata, src, ep, pos, bytesToRead, compressTable)
     pos += bytesToRead
 
 when defined(release):
--- a/semicongine/thirdparty/zippy/zippy/ziparchives.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/zippy/zippy/ziparchives.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,5 +1,16 @@
-import common, crc, internal, std/memfiles, std/os, std/strutils, std/tables,
-    std/times, std/unicode, ziparchives_v1, ../zippy, std/sequtils
+import
+  common,
+  crc,
+  internal,
+  std/memfiles,
+  std/os,
+  std/strutils,
+  std/tables,
+  std/times,
+  std/unicode,
+  ziparchives_v1,
+  ../zippy,
+  std/sequtils
 
 export common, ziparchives_v1
 
@@ -14,7 +25,8 @@
 
 type
   ZipArchiveRecordKind = enum
-    FileRecord, DirectoryRecord
+    FileRecord
+    DirectoryRecord
 
   ZipArchiveRecord = object
     kind: ZipArchiveRecordKind
@@ -37,9 +49,8 @@
       yield record.path
 
 proc extractFile*(
-  reader: ZipArchiveReader, path: string
+    reader: ZipArchiveReader, path: string
 ): string {.raises: [ZippyError].} =
-
   template failNoFileRecord() =
     raise newException(ZippyError, "No file record found for " & path)
 
@@ -76,7 +87,7 @@
   if pos + record.compressedSize > reader.memFile.size:
     failArchiveEOF()
 
-  case record.kind:
+  case record.kind
   of FileRecord:
     if compressionMethod == 0: # No compression
       if record.compressedSize > 0:
@@ -105,41 +116,154 @@
     years = ((date shr 9) and 0b0000000001111111).int
   if seconds <= 59 and minutes <= 59 and hours <= 23:
     result = initDateTime(
-      days.MonthdayRange,
-      months.Month,
-      years + 1980,
-      hours.HourRange,
-      minutes.MinuteRange,
-      seconds.SecondRange,
-      local()
-    ).toTime()
+        days.MonthdayRange,
+        months.Month,
+        years + 1980,
+        hours.HourRange,
+        minutes.MinuteRange,
+        seconds.SecondRange,
+        local(),
+      )
+      .toTime()
 
 proc utf8ify(fileName: string): string =
   const cp437AfterAscii = [
     # 0x80 - 0x8f
-    0x00c7.uint32, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
-    0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
+    0x00c7.uint32,
+    0x00fc,
+    0x00e9,
+    0x00e2,
+    0x00e4,
+    0x00e0,
+    0x00e5,
+    0x00e7,
+    0x00ea,
+    0x00eb,
+    0x00e8,
+    0x00ef,
+    0x00ee,
+    0x00ec,
+    0x00c4,
+    0x00c5,
     # 0x90 - 0x9f
-    0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
-    0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192,
+    0x00c9,
+    0x00e6,
+    0x00c6,
+    0x00f4,
+    0x00f6,
+    0x00f2,
+    0x00fb,
+    0x00f9,
+    0x00ff,
+    0x00d6,
+    0x00dc,
+    0x00a2,
+    0x00a3,
+    0x00a5,
+    0x20a7,
+    0x0192,
     # 0xa0 - 0xaf
-    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
-    0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+    0x00e1,
+    0x00ed,
+    0x00f3,
+    0x00fa,
+    0x00f1,
+    0x00d1,
+    0x00aa,
+    0x00ba,
+    0x00bf,
+    0x2310,
+    0x00ac,
+    0x00bd,
+    0x00bc,
+    0x00a1,
+    0x00ab,
+    0x00bb,
     # 0xb0 - 0xbf
-    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
-    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2591,
+    0x2592,
+    0x2593,
+    0x2502,
+    0x2524,
+    0x2561,
+    0x2562,
+    0x2556,
+    0x2555,
+    0x2563,
+    0x2551,
+    0x2557,
+    0x255d,
+    0x255c,
+    0x255b,
+    0x2510,
     # 0xc0 - 0xcf
-    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
-    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2514,
+    0x2534,
+    0x252c,
+    0x251c,
+    0x2500,
+    0x253c,
+    0x255e,
+    0x255f,
+    0x255a,
+    0x2554,
+    0x2569,
+    0x2566,
+    0x2560,
+    0x2550,
+    0x256c,
+    0x2567,
     # 0xd0 - 0xdf
-    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
-    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x2568,
+    0x2564,
+    0x2565,
+    0x2559,
+    0x2558,
+    0x2552,
+    0x2553,
+    0x256b,
+    0x256a,
+    0x2518,
+    0x250c,
+    0x2588,
+    0x2584,
+    0x258c,
+    0x2590,
+    0x2580,
     # 0xd0 - 0xdf
-    0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
-    0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+    0x03b1,
+    0x00df,
+    0x0393,
+    0x03c0,
+    0x03a3,
+    0x03c3,
+    0x00b5,
+    0x03c4,
+    0x03a6,
+    0x0398,
+    0x03a9,
+    0x03b4,
+    0x221e,
+    0x03c6,
+    0x03b5,
+    0x2229,
     # 0xf0 - 0xff
-    0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
-    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+    0x2261,
+    0x00b1,
+    0x2265,
+    0x2264,
+    0x2320,
+    0x2321,
+    0x00f7,
+    0x2248,
+    0x00b0,
+    0x2219,
+    0x00b7,
+    0x221a,
+    0x207f,
+    0x00b2,
+    0x25a0,
+    0x00a0,
   ]
 
   if validateUtf8(fileName) == -1:
@@ -167,8 +291,7 @@
       dec result
 
 proc findStartOfCentralDirectory(
-  reader: ZipArchiveReader,
-  start, numRecordEntries: int
+    reader: ZipArchiveReader, start, numRecordEntries: int
 ): int =
   let src = cast[ptr UncheckedArray[uint8]](reader.memFile.mem)
 
@@ -184,7 +307,7 @@
     dec result
 
 proc openZipArchive*(
-  zipPath: string
+    zipPath: string
 ): ZipArchiveReader {.raises: [IOError, OSError, ZippyError].} =
   result = ZipArchiveReader()
   result.memFile = memfiles.open(zipPath)
@@ -224,9 +347,9 @@
         raise newException(ZippyError, "Invalid central directory file header")
 
       # let
-        # endOfCentralDirectorySize = read64(src, pos + 4).int
-        # versionMadeBy = read16(src, pos + 12)
-        # minVersionToExtract = read16(src, pos + 14)
+      # endOfCentralDirectorySize = read64(src, pos + 4).int
+      # versionMadeBy = read16(src, pos + 12)
+      # minVersionToExtract = read16(src, pos + 14)
       diskNumber = read32(src, pos + 16).int
       startDisk = read32(src, pos + 20).int
       numRecordsOnDisk = read64(src, pos + 24).int
@@ -383,7 +506,7 @@
         compressedSize: compressedSize,
         uncompressedSize: uncompressedSize,
         uncompressedCrc32: uncompressedCrc32,
-        filePermissions: parseFilePermissions(externalFileAttr.int shr 16)
+        filePermissions: parseFilePermissions(externalFileAttr.int shr 16),
       )
   except IOError as e:
     result.close()
@@ -395,9 +518,7 @@
     result.close()
     raise e
 
-proc extractAll*(
-  zipPath, dest: string
-) {.raises: [IOError, OSError, ZippyError].} =
+proc extractAll*(zipPath, dest: string) {.raises: [IOError, OSError, ZippyError].} =
   ## Extracts the files stored in archive to the destination directory.
   ## The path to the destination directory must exist.
   ## The destination directory itself must not exist (it is not overwitten).
@@ -421,7 +542,7 @@
   try:
     # Create the directories and write the extracted files
     for _, record in reader.records:
-      case record.kind:
+      case record.kind
       of DirectoryRecord:
         createDir(dest / record.path)
       of FileRecord:
@@ -455,9 +576,8 @@
 when (NimMajor, NimMinor, NimPatch) >= (1, 6, 0):
   # For some reason `sink Table | OrderedTable` does not work, so work around:
   template createZipArchiveImpl(
-    entries: var Table[string, string] | var OrderedTable[string, string]
+      entries: var Table[string, string] | var OrderedTable[string, string]
   ) =
-
     proc add16(dst: var string, v: int16 | uint16) =
       dst.setLen(dst.len + 2)
       var tmp = v
@@ -527,13 +647,18 @@
           compressed = compress(contents, BestSpeed, dfDeflate)
           compressionMethod = 8
 
-      records.add((fileName, ArchiveEntry(
-        fileHeaderOffset: result.len,
-        uncompressedLen: uncompressedLen,
-        compressedLen: compressed.len,
-        compressionMethod: compressionMethod,
-        uncompressedCrc32: uncompressedCrc32
-      )))
+      records.add(
+        (
+          fileName,
+          ArchiveEntry(
+            fileHeaderOffset: result.len,
+            uncompressedLen: uncompressedLen,
+            compressedLen: compressed.len,
+            compressionMethod: compressionMethod,
+            uncompressedCrc32: uncompressedCrc32,
+          ),
+        )
+      )
 
       result.add32(fileHeaderSignature)
       result.add16(45) # Min version to extract
@@ -558,9 +683,7 @@
       if compressed != "":
         result.setLen(result.len + compressed.len)
         copyMem(
-          result[result.len - compressed.len].addr,
-          compressed.cstring,
-          compressed.len
+          result[result.len - compressed.len].addr, compressed.cstring, compressed.len
         )
 
     let centralDirectoryStart = result.len
@@ -583,7 +706,8 @@
       result.add16(0) # Disk number where file starts
       result.add16(0) # Internal file attributes
       result.add32(0) # External file attributes
-      result.add32(uint32.high) # Relative offset of local file header (or 0xffffffff for ZIP64)
+      result.add32(uint32.high)
+        # Relative offset of local file header (or 0xffffffff for ZIP64)
 
       result.add(records[i][0])
 
@@ -614,18 +738,22 @@
     result.add32(endOfCentralDirectorySignature)
     result.add16(0) # Number of this disk
     result.add16(0) # Disk where central directory starts
-    result.add16(uint16.high) # Number of central directory records on this disk (or 0xffff for ZIP64)
-    result.add16(uint16.high) # Total number of central directory records (or 0xffff for ZIP64)
-    result.add32(uint32.high) # Size of central directory (bytes) (or 0xffffffff for ZIP64)
-    result.add32(uint32.high) # Offset of start of central directory, relative to start of archive (or 0xffffffff for ZIP64)
+    result.add16(uint16.high)
+      # Number of central directory records on this disk (or 0xffff for ZIP64)
+    result.add16(uint16.high)
+      # Total number of central directory records (or 0xffff for ZIP64)
+    result.add32(uint32.high)
+      # Size of central directory (bytes) (or 0xffffffff for ZIP64)
+    result.add32(uint32.high)
+      # Offset of start of central directory, relative to start of archive (or 0xffffffff for ZIP64)
     result.add16(0)
 
   proc createZipArchive*(
-    entries: sink Table[string, string]
+      entries: sink Table[string, string]
   ): string {.raises: [ZippyError].} =
     createZipArchiveImpl(entries)
 
   proc createZipArchive*(
-    entries: sink OrderedTable[string, string]
+      entries: sink OrderedTable[string, string]
   ): string {.raises: [ZippyError].} =
     createZipArchiveImpl(entries)
--- a/semicongine/thirdparty/zippy/zippy/ziparchives_v1.nim	Thu Aug 22 18:31:59 2024 +0700
+++ b/semicongine/thirdparty/zippy/zippy/ziparchives_v1.nim	Thu Aug 22 18:32:21 2024 +0700
@@ -1,5 +1,13 @@
-import common, crc, internal, std/os, std/streams, std/strutils, std/tables,
-    std/times, ../zippy
+import
+  common,
+  crc,
+  internal,
+  std/os,
+  std/streams,
+  std/strutils,
+  std/tables,
+  std/times,
+  ../zippy
 
 export common
 
@@ -10,7 +18,8 @@
 
 type
   EntryKind* = enum
-    ekFile, ekDirectory
+    ekFile
+    ekDirectory
 
   ArchiveEntry* = object
     kind*: EntryKind
@@ -27,7 +36,7 @@
       ArchiveEntry(kind: ekDirectory)
 
   for kind, path in walkDir(base / relative, relative = true):
-    case kind:
+    case kind
     of pcFile:
       archive.contents[(relative / path).toUnixPath()] = ArchiveEntry(
         kind: ekFile,
@@ -41,25 +50,24 @@
       discard
 
 proc addDir*(
-  archive: ZipArchive, dir: string
+    archive: ZipArchive, dir: string
 ) {.raises: [IOError, OSError, ZippyError].} =
   ## Recursively adds all of the files and directories inside dir to archive.
   if splitFile(dir).ext.len > 0:
     raise newException(
-      ZippyError,
-      "Error adding dir " & dir & " to archive, appears to be a file?"
+      ZippyError, "Error adding dir " & dir & " to archive, appears to be a file?"
     )
 
   let (head, tail) = splitPath(dir)
   archive.addDir(head, tail)
 
 proc addFile*(
-  archive: ZipArchive, path: string
+    archive: ZipArchive, path: string
 ) {.raises: [IOError, OSError, ZippyError].} =
   ## Adds a single file to the archive.
 
   let fileInfo = getFileInfo(path)
-  case fileInfo.kind:
+  case fileInfo.kind
   of {pcFile, pcLinkToFile}:
     archive.contents[path.extractFilename] = ArchiveEntry(
       kind: ekFile,
@@ -70,7 +78,7 @@
   else:
     raise newException(
       ZippyError,
-      "Error adding file " & path & " to archive, appears to be a directory?"
+      "Error adding file " & path & " to archive, appears to be a directory?",
     )
 
 proc clear*(archive: ZipArchive) {.raises: [].} =
@@ -92,15 +100,24 @@
     result.incl fpGroupWrite
     result.incl fpOthersRead
   else:
-    if (permissions and 0o00400) != 0: result.incl fpUserRead
-    if (permissions and 0o00200) != 0: result.incl fpUserWrite
-    if (permissions and 0o00100) != 0: result.incl fpUserExec
-    if (permissions and 0o00040) != 0: result.incl fpGroupRead
-    if (permissions and 0o00020) != 0: result.incl fpGroupWrite
-    if (permissions and 0o00010) != 0: result.incl fpGroupExec
-    if (permissions and 0o00004) != 0: result.incl fpOthersRead
-    if (permissions and 0o00002) != 0: result.incl fpOthersWrite
-    if (permissions and 0o00001) != 0: result.incl fpOthersExec
+    if (permissions and 0o00400) != 0:
+      result.incl fpUserRead
+    if (permissions and 0o00200) != 0:
+      result.incl fpUserWrite
+    if (permissions and 0o00100) != 0:
+      result.incl fpUserExec
+    if (permissions and 0o00040) != 0:
+      result.incl fpGroupRead
+    if (permissions and 0o00020) != 0:
+      result.incl fpGroupWrite
+    if (permissions and 0o00010) != 0:
+      result.incl fpGroupExec
+    if (permissions and 0o00004) != 0:
+      result.incl fpOthersRead
+    if (permissions and 0o00002) != 0:
+      result.incl fpOthersWrite
+    if (permissions and 0o00001) != 0:
+      result.incl fpOthersExec
 
 proc openStreamImpl*(archive: ZipArchive, stream: Stream) =
   let data = stream.readAll() # TODO: actually treat as a stream
@@ -116,7 +133,7 @@
       failEOF()
 
     let signature = read32(data, pos)
-    case signature:
+    case signature
     of 0x04034b50: # Local file header
       if pos + 30 > data.len:
         failEOF()
@@ -136,16 +153,11 @@
       pos += 30 # Move to end of fixed-size entries
 
       if (generalPurposeFlag and 0b100) != 0:
-        raise newException(
-          ZippyError,
-          "Unsupported zip archive, data descriptor bit set"
-        )
+        raise
+          newException(ZippyError, "Unsupported zip archive, data descriptor bit set")
 
       if (generalPurposeFlag and 0b1000) != 0:
-        raise newException(
-          ZippyError,
-          "Unsupported zip archive, uses deflate64"
-        )
+        raise newException(ZippyError, "Unsupported zip archive, uses deflate64")
 
       # echo minVersionToExtract
       # echo generalPurposeFlag
@@ -169,19 +181,19 @@
       var lastModified: times.Time
       if seconds <= 59 and minutes <= 59 and hours <= 23:
         lastModified = initDateTime(
-          days.MonthdayRange,
-          months.Month,
-          years + 1980,
-          hours.HourRange,
-          minutes.MinuteRange,
-          seconds.SecondRange,
-          local()
-        ).toTime()
+            days.MonthdayRange,
+            months.Month,
+            years + 1980,
+            hours.HourRange,
+            minutes.MinuteRange,
+            seconds.SecondRange,
+            local(),
+          )
+          .toTime()
 
       if compressionMethod notin [0.uint16, 8]:
         raise newException(
-          ZippyError,
-          "Unsupported zip archive compression method " & $compressionMethod
+          ZippyError, "Unsupported zip archive compression method " & $compressionMethod
         )
 
       if pos + fileNameLength + extraFieldLength > data.len:
@@ -207,23 +219,17 @@
 
       if crc32(uncompressed) != uncompressedCrc32:
         raise newException(
-          ZippyError,
-          "Verifying archive entry " & fileName & " CRC-32 failed"
+          ZippyError, "Verifying archive entry " & fileName & " CRC-32 failed"
         )
       if uncompressed.len != uncompressedSize:
         raise newException(
-          ZippyError,
-          "Unexpected error verifying " & fileName & " uncompressed size"
+          ZippyError, "Unexpected error verifying " & fileName & " uncompressed size"
         )
 
       archive.contents[fileName.toUnixPath()] =
-        ArchiveEntry(
-          contents: uncompressed,
-          lastModified: lastModified,
-        )
+        ArchiveEntry(contents: uncompressed, lastModified: lastModified)
 
       pos += compressedSize
-
     of 0x02014b50: # Central directory header
       if pos + 46 > data.len:
         failEOF()
@@ -291,7 +297,6 @@
         archive.contents[fileName].permissions = externalFileAttr.extractPermissions()
       except KeyError:
         failOpen()
-
     of 0x06054b50: # End of central directory record
       if pos + 22 > data.len:
         failEOF()
@@ -324,20 +329,20 @@
       # echo comment
 
       break
-
     else:
       failOpen()
 
 when (NimMajor, NimMinor, NimPatch) >= (1, 4, 0):
   proc open*(
-    archive: ZipArchive, stream: Stream
+      archive: ZipArchive, stream: Stream
   ) {.raises: [IOError, OSError, ZippyError].} =
     ## Opens the zip archive from a stream and reads its contents into
     ## archive.contents (clears any existing archive.contents entries).
     openStreamImpl(archive, stream)
+
 else:
   proc open*(
-    archive: ZipArchive, stream: Stream
+      archive: ZipArchive, stream: Stream
   ) {.raises: [Defect, IOError, OSError, ZippyError].} =
     ## Opens the zip archive from a stream and reads its contents into
     ## archive.contents (clears any existing archive.contents entries).
@@ -369,7 +374,7 @@
   (lastModifiedTime, lastModifiedDate)
 
 proc writeZipArchive*(
-  archive: ZipArchive, path: string
+    archive: ZipArchive, path: string
 ) {.raises: [IOError, ZippyError].} =
   ## Writes archive.contents to a zip file at path.
 
@@ -459,7 +464,7 @@
     data.add([0.uint8, 0]) # Internal file attrib
 
     # External file attrib
-    case entry.kind:
+    case entry.kind
     of ekDirectory:
       data.add([0x10.uint8, 0, 0, 0])
     of ekFile:
@@ -486,44 +491,39 @@
     writeFile(path, cast[string](data))
 
 proc extractAll*(
-  archive: ZipArchive, dest: string
+    archive: ZipArchive, dest: string
 ) {.raises: [IOError, OSError, ZippyError].} =
   ## Extracts the files stored in archive to the destination directory.
   ## The path to the destination directory must exist.
   ## The destination directory itself must not exist (it is not overwitten).
   if dirExists(dest):
-    raise newException(
-      ZippyError, "Destination " & dest & " already exists"
-    )
+    raise newException(ZippyError, "Destination " & dest & " already exists")
 
   let (head, tail) = splitPath(dest)
   if tail != "" and not dirExists(head):
-    raise newException(
-      ZippyError, "Path to destination " & dest & " does not exist"
-    )
+    raise newException(ZippyError, "Path to destination " & dest & " does not exist")
 
   # Ensure we only raise exceptions we handle below
   proc writeContents(
-    archive: ZipArchive, dest: string
+      archive: ZipArchive, dest: string
   ) {.raises: [IOError, OSError, ZippyError].} =
     for path, entry in archive.contents:
       if path.isAbsolute():
         raise newException(
-          ZippyError,
-          "Extracting absolute paths is not supported (" & path & ")"
+          ZippyError, "Extracting absolute paths is not supported (" & path & ")"
         )
       if path.startsWith("../") or path.startsWith(r"..\"):
         raise newException(
           ZippyError,
-          "Extracting paths starting with `..` is not supported (" & path & ")"
+          "Extracting paths starting with `..` is not supported (" & path & ")",
         )
       if "/../" in path or r"\..\" in path:
         raise newException(
           ZippyError,
-          "Extracting paths containing `/../` is not supported (" & path & ")"
+          "Extracting paths containing `/../` is not supported (" & path & ")",
         )
 
-      case entry.kind:
+      case entry.kind
       of ekDirectory:
         createDir(dest / path)
       of ekFile:
@@ -546,7 +546,7 @@
     raise e
 
 proc createZipArchive*(
-  source, dest: string
+    source, dest: string
 ) {.raises: [IOError, OSError, ZippyError].} =
   ## Creates an archive containing all of the files and directories inside
   ## source and writes the zip file to dest.